diff --git a/mozilla/lib/Makefile b/mozilla/lib/Makefile deleted file mode 100644 index c4b0f8c38f5..00000000000 --- a/mozilla/lib/Makefile +++ /dev/null @@ -1,80 +0,0 @@ -#! gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - -# - -DEPTH = .. - -include $(DEPTH)/config/config.mk - -DIRS = layout libcgi libi18n libmisc - -ifndef NO_UNIX_LDAP -DIRS += ldap -endif - -ifdef MOZ_MAIL_NEWS -DIRS += libmsg -else -ifdef MOZ_MAIL_COMPOSE -DIRS += mailto -endif -endif - -ifdef MOZ_NEO -DIRS += libneo -endif - -DIRS += libparse xlate xp - -DIRS += libmime - -ifdef MOZ_MAIL_NEWS -DIRS += libaddr -endif - -DIRS += htmldlgs - -ifndef NO_LAYERS -DIRS += liblayer -endif - -DIRS += libmocha libstyle - -ifdef DOM -DIRS += libdom -endif - -ifeq ($(OS_ARCH),OS2) -DIRS += libcnv -endif - -DIRS += libpics - -DIRS += mariner - -DIRS += libpwcac - -include $(DEPTH)/config/rules.mk - - -# This is a kludge so that running "make netscape-us" in this directory -# will rebuild the subdirectories, and then relink ../../cmd/xfe/netscape-us -# -junk=export libs install -netscape-us netscape-export nav-us nav-export netscape-us.pure netscape-export.pure: $(junk) - cd $(DEPTH)/cmd/xfe; $(MAKE) $@ diff --git a/mozilla/lib/Makefile.in b/mozilla/lib/Makefile.in deleted file mode 100644 index 950964df76c..00000000000 --- a/mozilla/lib/Makefile.in +++ /dev/null @@ -1,85 +0,0 @@ -#! gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - -# - -DEPTH = .. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -include $(topsrcdir)/config/config.mk - -DIRS = layout libcgi libi18n libmisc - -ifndef NO_UNIX_LDAP -DIRS += ldap -endif - -ifdef MOZ_MAIL_NEWS -DIRS += libmsg -else -ifdef MOZ_MAIL_COMPOSE -DIRS += mailto -endif -endif - -ifdef MOZ_NEO -DIRS += libneo -endif - -DIRS += libparse xlate xp - -DIRS += libmime - -ifdef MOZ_MAIL_NEWS -DIRS += libaddr -endif - -DIRS += htmldlgs - -ifndef NO_LAYERS -DIRS += liblayer -endif - -DIRS += libmocha libstyle - -ifdef DOM -DIRS += libdom -endif - -ifeq ($(OS_ARCH),OS2) -DIRS += libcnv -endif - -DIRS += libpics - -DIRS += mariner - -DIRS += libpwcac - -include $(topsrcdir)/config/rules.mk - - -# This is a kludge so that running "make netscape-us" in this directory -# will rebuild the subdirectories, and then relink ../../cmd/xfe/netscape-us -# -junk=export libs install -netscape-us netscape-export nav-us nav-export netscape-us.pure netscape-export.pure: $(junk) - cd $(DEPTH)/cmd/xfe; $(MAKE) $@ diff --git a/mozilla/lib/layout/macbuild/LayoutLib.mcp b/mozilla/lib/layout/macbuild/LayoutLib.mcp deleted file mode 100644 index 4f7421d216d..00000000000 Binary files a/mozilla/lib/layout/macbuild/LayoutLib.mcp and /dev/null differ diff --git a/mozilla/lib/libi18n/Makefile b/mozilla/lib/libi18n/Makefile deleted file mode 100644 index 24fbc99e180..00000000000 --- a/mozilla/lib/libi18n/Makefile +++ /dev/null @@ -1,74 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - - - -DEPTH = ../.. - -MODULE = i18n -LIBRARY_NAME = i18n - -DIRS = unicode - -CSRCS = autokr.c \ - autocvt.c \ - b52cns.c \ - cns2b5.c \ - cvchcode.c \ - detectu2.c \ - euc2jis.c \ - euc2sjis.c \ - euckr2is.c \ - is2euckr.c \ - intl_csi.c \ - jis2oth.c \ - net_junk.c \ - nscstr.c \ - metatag.c \ - sjis2euc.c \ - sjis2jis.c \ - ugen.c \ - ugendata.c \ - ucs2.c \ - umap.c \ - unicvt.c \ - uscan.c \ - fontencd.c \ - csnamefn.c \ - csnametb.c \ - sbconvtb.c \ - acptlang.c \ - csstrlen.c \ - sblower.c \ - dblower.c \ - kinsokud.c \ - kinsokuf.c \ - katakana.c \ - vietnam.c \ - country.c \ - $(NULL) - -REQUIRES = i18n dbm nspr img util layer pref js - -CSRCS += doc_ccc.c fe_ccc.c intlcomp.c mime2fun.c - -include $(DEPTH)/config/rules.mk - -DEFINES += -DHAS_FE - -$(LIBRARY): $(OBJS) - diff --git a/mozilla/lib/libi18n/Makefile.in b/mozilla/lib/libi18n/Makefile.in deleted file mode 100644 index c70c3fd754d..00000000000 --- a/mozilla/lib/libi18n/Makefile.in +++ /dev/null @@ -1,79 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - - - -DEPTH = ../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = i18n -LIBRARY_NAME = i18n - -DIRS = unicode - -CSRCS = autokr.c \ - autocvt.c \ - b52cns.c \ - cns2b5.c \ - cvchcode.c \ - detectu2.c \ - euc2jis.c \ - euc2sjis.c \ - euckr2is.c \ - is2euckr.c \ - intl_csi.c \ - jis2oth.c \ - net_junk.c \ - nscstr.c \ - metatag.c \ - sjis2euc.c \ - sjis2jis.c \ - ugen.c \ - ugendata.c \ - ucs2.c \ - umap.c \ - unicvt.c \ - uscan.c \ - fontencd.c \ - csnamefn.c \ - csnametb.c \ - sbconvtb.c \ - acptlang.c \ - csstrlen.c \ - sblower.c \ - dblower.c \ - kinsokud.c \ - kinsokuf.c \ - katakana.c \ - vietnam.c \ - country.c \ - $(NULL) - -REQUIRES = i18n dbm img util layer pref js - -CSRCS += doc_ccc.c fe_ccc.c intlcomp.c mime2fun.c - -include $(topsrcdir)/config/rules.mk - -DEFINES += -DHAS_FE - -$(LIBRARY): $(OBJS) - diff --git a/mozilla/lib/libi18n/acptlang.c b/mozilla/lib/libi18n/acptlang.c deleted file mode 100644 index a65adf17979..00000000000 --- a/mozilla/lib/libi18n/acptlang.c +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* acptlang.c */ -/* File implement Accept-Language and Accept-Charset */ - -#include "intlpriv.h" -#include "prefapi.h" - -static char *accept_language = NULL; -static const char *pref_accept_language = "intl.accept_languages"; - -static char *accept_charset = NULL; -static const char *pref_accept_charset = "intl.accept_charsets"; - - -PRIVATE void FilterOutHumanReadableText(char* str) -{ - if(NULL == str) - return; -/* - Currently, we only do this on Window build because - 1. I only know window have this problem - 2. Macintosh should be ok since we do not store this in this - format on the Mac - 3. I don't know about UNIX for now. - - We probably need to build this for all the platform since - the preference will be for xp so a window pref could be - used on Mac and UNIX - -*/ -#if ((defined XP_WIN) || (defined XP_UNIX) || (defined XP_OS2)) - if(strchr(str, '[') != NULL) /* Searching [ to determinate wheather */ - /* This is "Window-Style" AcceptLang Pref */ - { - int state= 0; - char *in, *out; - /* - State Machine: - - State 0 State 1 State 2 - Hit [ Goto State 1 Copy in (Err!) Emit [,] Goto State 1 - Hit ] Ignore in Goto State 2 ignore In - Else Ignore in Copy in ignore In - - Sample data: - in: AAA BBB [abb-a], CC DD [ee-ff] - state: 0000000001111112222222221111112 - action: abb-a ,ee-ff \0 - Out: abb-a,ee-ff - - - */ - for(state=0, in=out=str; *in!=0; in++) - { - switch(state) - { - case 1: /* Between [ and ] */ - if(*in == ']') /* hit ] */ - state = 2; /* Change state to 2 */ - else - *out++ = *in; /* Copy text between [ and ] */ - break; - case 2: /* Before hit not-first [ */ - if(*in == '[') /* hit the not-first [ */ - { - state = 1; /* Change state to 1 */ - *out++ = ','; /* Need to copy , */ - } - break; - case 0: /* Before hit first [ */ - default: - if(*in == '[') /* hit first [ */ - state = 1; /* Change state to 1 */ - break; - } - - } - *out = '\0'; /* NULL terminate output */ - } -#endif -} - -/* callback routine invoked by prefapi when the pref value changes */ -/* According to the comment in mime2fun.c - Win16 build fails if PR_CALLBACK is declared as static - So I change it to MODULE_PRIVATE -*/ - -MODULE_PRIVATE int PR_CALLBACK intl_SetAcceptLanguage(const char * newpref, void * data) -{ - if (accept_language) { - XP_FREE(accept_language); - accept_language = NULL; - } - - PREF_CopyCharPref(pref_accept_language, &accept_language); - FilterOutHumanReadableText(accept_language); - return PREF_NOERROR; -} - -/* INTL_GetAcceptLanguage() */ -/* return the AcceptLanguage from XP Preference */ -/* this should be a C style NULL terminated string */ -PUBLIC char* INTL_GetAcceptLanguage() -{ - if (accept_language == NULL) - { - PREF_CopyCharPref(pref_accept_language, &accept_language); - - if (accept_language) - PREF_RegisterCallback(pref_accept_language, intl_SetAcceptLanguage, NULL); - } - FilterOutHumanReadableText(accept_language); - - return accept_language; -} - -/* callback routine invoked by prefapi when the pref value changes */ -/* According to the comment in mime2fun.c - Win16 build fails if PR_CALLBACK is declared as static - So I change it to MODULE_PRIVATE -*/ -MODULE_PRIVATE int PR_CALLBACK intl_SetAcceptCharset(const char * newpref, void * data) -{ - if (accept_charset) { - XP_FREE(accept_charset); - accept_charset = NULL; - } - - PREF_CopyCharPref(pref_accept_charset, &accept_charset); - FilterOutHumanReadableText(accept_charset); - return PREF_NOERROR; -} - -/* INTL_GetAcceptCharset() */ -/* return the AcceptCharset from XP Preference */ -/* this should be a C style NULL terminated string */ -PUBLIC char* INTL_GetAcceptCharset() -{ - if (accept_charset == NULL) - { - PREF_CopyCharPref(pref_accept_charset, &accept_charset); - - if (accept_charset) - PREF_RegisterCallback(pref_accept_charset, intl_SetAcceptCharset, NULL); - } - - return accept_charset; -} - diff --git a/mozilla/lib/libi18n/autocvt.c b/mozilla/lib/libi18n/autocvt.c deleted file mode 100644 index 81537fd2ba3..00000000000 --- a/mozilla/lib/libi18n/autocvt.c +++ /dev/null @@ -1,336 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* autodetect.c */ - -/* - * CODESET 1st Byte 2nd Byte 3rd Byte - * JIS 0x21-0x7E 0x21-0x7E n/a - * SJIS 0xA1-0xDF n/a n/a - * 0x81-0x9F 0x40-0xFC n/a - * 0xE0-0xEF 0x40-0xFC n/a - * EUCJP 0x8E (SS2) 0xA1-0xDF n/a - * 0xA1-0xFE 0xA1-0xFE n/a - * 0x8F (SS3) 0xA1-0xFE 0xA1-0xFE - * Invalid 7F,80,A0,FF - */ - -#include "intlpriv.h" - -#define ALLOW_NBSP 1 - -/* - * JIS X 0201-Roman ESC ( J - * Half-width Katakana ESC ( I - * JIS X 0208-1978 ESC $ @ - * JIS X 0208-1983 ESC $ B - * JIS X 0212-1990 ESC $ ( D - */ -#define IsJISEscSeq(cp, len) \ - ((cp[0] == ESC) && ((len) > 2) && ( \ - ((cp[1] == '$') && (cp[2] == 'B')) || \ - ((cp[1] == '$') && (cp[2] == '@')) || \ - ((cp[1] == '(') && (cp[2] == 'J')) || \ - ((cp[1] == '(') && (cp[2] == 'I')) || \ - (((len) > 3) && (cp[1] == '$') && (cp[2] == '(') && (cp[3] == 'D')) ) ) - -#define IsRoman(c) ((c) < 0x80) -#define IsSJIS2ndByte(c) (((c) > 0x3F) && ((c) < 0xFD)) -#define IsLoSJIS2ndByte(c) (((c) > 0x3F) && ((c) < 0xA1)) -#define IsHiSJIS2ndByte(c) (((c) > 0xA0) && ((c) < 0xFD)) -#define IsEUCJPKana(b1) (((b1) > 0xA0) && ((b1) < 0xE0)) -#define IsEUCJPKanji(b1or2) (((b1or2) > 0xA0) && ((b1or2) < 0xFF)) - -#define YES 1 -#define NO 0 -#define MAYBE -1 - -PRIVATE int -isSJIS(const unsigned char *cp, int32 len) -{ - while (len) { - if (IsRoman(*cp)) { - cp++, len--; - } else if (*cp == 0x80) { /* illegal SJIS 1st byte */ - return NO; - } else if ((*cp < 0xA0)) { /* byte 1 of 2byte SJIS 1st range */ - if (len > 1) { - if (IsSJIS2ndByte(cp[1])) { - if ((*cp != 0x8E && *cp != 0x8F) || (*(cp+1) <= 0xA0)) - return YES; - cp += 2, len -= 2; /* valid 2 byte SJIS */ - } else { - return NO; /* invalid SJIS 2nd byte */ - } - } else - break; /* buffer ended w/1of2 byte SJIS */ - } else if (*cp == 0xA0) { /* illegal EUCJP byte */ -#if ALLOW_NBSP - cp++, len--; /* allow nbsp */ -#endif - } else if (*cp < 0xE0) { /* SJIS half-width kana */ - cp++, len--; - } else if (*cp < 0xF0) { /* byte 1 of 2byte SJIS 2nd range */ - if (len > 1) { - if (IsSJIS2ndByte(cp[1])) { - cp += 2, len -= 2; /* valid 2 byte SJIS */ - } else { - return NO; /* invalid SJIS */ - } - } else - break; /* buffer ended w/1of2 byte SJIS */ - } else { - return NO; /* invalid SJIS 1st byte */ - } - } - return MAYBE; /* No illegal SJIS values found */ -} - -PRIVATE int -isEUCJP(const unsigned char *cp, int32 len) -{ - while (len) { - if (IsRoman(*cp)) { /* Roman */ - cp++, len--; - } else if (*cp == SS2) { /* EUCJP JIS201 half-width kana */ - if (len > 1) { - if (IsEUCJPKana(cp[1])) - cp += 2, len -= 2; /* valid half-width kana */ - else - return NO; /* invalid 2of3 byte EUC */ - } else - break; /* buffer ended w/1of2 byte EUC */ - } else if (*cp == SS3) { /* EUCJP JIS212 */ - if (len > 1) { - if (IsEUCJPKanji(cp[1])) { - if (len > 2) { - if (IsEUCJPKanji(cp[2])) - cp += 2, len -= 2; /* valid 3 byte EUCJP */ - else - return NO; /* invalid 3of3 byte EUCJP */ - } else - break; /* buffer ended w/2of3 byte EUCJP */ - } else - return NO; /* invalid 2of3 byte EUCJP */ - } else - break; /* buffer ended w/1of3 byte EUCJP */ - } else if (*cp == 0xA0) { /* illegal EUCJP byte */ -#if ALLOW_NBSP - cp++, len--; /* allow nbsp */ -#else - return NO; -#endif - } else if (*cp < 0xF0) { /* EUCJP JIS208 (overlaps SJIS) */ - if (len > 1) { - if (IsEUCJPKanji(cp[1])) - cp += 2, len -= 2; /* valid 2 byte EUCJP */ - else - return NO; /* invalid 2of2 byte EUCJP */ - } else - break; /* buffer ended w/1of2 byte EUCJP */ - } else if (*cp < 0xFF) { /* EUCJP JIS208 only: */ - if (len > 1) { - if (IsEUCJPKanji(cp[1])) - return YES; /* valid 2 byte EUCJP, invalid SJIS */ - else - return NO; /* invalid 2of2 byte EUCJP */ - } else - break; /* buffer ended w/1of2 byte EUCJP */ - } else { - return NO; /* invalid EUCJP 1st byte: 0xFF */ - } - } - return MAYBE; -} - -MODULE_PRIVATE int16 -intl_detect_JCSID (uint16 defaultCSID, const unsigned char *buf, int32 len) -{ - register const unsigned char *cp = buf; - int sjisFlag; - int eucjpFlag; - - /* JIS is 7bit. Scan to end of 7bit data or legitimate JIS ESC sequence. */ - while (len && (IsRoman(*cp) || (*cp == 0xA0))) { /* allow nbsp */ - if (IsJISEscSeq(cp, len)) - return CS_JIS; - cp++, len--; - } - - /* If len > 0, must be either SJIS or EUC because there's 8bit data */ - while (len) { - if (*cp == 0x80) { - return CS_DEFAULT;/* illegal byte1 (SJIS & EUCJP) */ - } - if (*cp < 0x8E) - return CS_SJIS; /* Illegal EUCJP 1st byte */ - if (*cp == 0xA0) { -#if ALLOW_NBSP - cp++; len--; - continue; /* allow nbsp */ -#else - return CS_DEFAULT;/* illegal byte1 (SJIS & EUCJP) */ -#endif - } - if ( (*cp > 0xEF) && (*cp < 0xFF) ) /* illegal SJIS 1st byte */ - return CS_EUCJP; - if (*cp == 0xFF) { - return CS_DEFAULT;/* illegal byte1 (SJIS & EUCJP) */ - } - - /* At this point. 1st byte is 0x8E, 0x8F, or 0xA1-0xEF. */ - /* If 1st Byte is 0xE0-0xEF inclusive, then it's 2byte SJIS or EUC */ - if ((*cp > 0xDF) && (*cp < 0xF0)) { - if (len > 1) { - if (cp[1] < 0x41) { /* illegal byte2 (SJIS & EUCJP) */ - return CS_DEFAULT; - } - if (cp[1] < 0xA1) - return CS_SJIS; /* Illegal EUCJP 2nd byte */ - if (cp[1] > 0xFC) - return CS_EUCJP; /* illegal SJIS 2nd byte */ - cp += 2, len -= 2; /* Skip 2 byte character */ - - /* Gobble up single byte characters and continue outer loop */ - while (len && IsRoman(*cp)) { - cp++, len--; - } - continue; - } else { - len = 0; - break; /* No more chars in buffer */ - } - } - /* 1st Byte is 0xA1-DF inclusive: - * 1byte SJIS kana or 1of2 byte SJIS or EUC - */ - break; /* break and handle ambiguous cases */ - } - - if (len) { - eucjpFlag = isEUCJP(cp, len); - if (YES == eucjpFlag) - return CS_EUCJP; - - sjisFlag = isSJIS(cp, len); - if (YES == sjisFlag) - return CS_SJIS; - - /* Neither one is YES, look at NO : MAYBE Pair */ - if ((NO == eucjpFlag) && (MAYBE == sjisFlag)) - return CS_SJIS; - if ((MAYBE == eucjpFlag) && (NO == sjisFlag)) - return CS_EUCJP; - } - - /* Some servers relied upon the previous Nav3.0 default for ambiguous SJIS/EUC encoding. */ -#define USE_ACKBAR_LOGIC 1 - - /* Now, both are NO or both are MAYBE, look at default */ - if (len) { /* Must be ambiguous -- EUC or SJIS */ -#if USE_ACKBAR_LOGIC - -#ifdef XP_MAC - defaultCSID = CS_SJIS_AUTO; /* simulate Akbar old charset hints */ -#else - defaultCSID = CS_JIS; -#endif - if (defaultCSID == CS_SJIS) { - eucjpFlag = isEUCJP(cp, len); - if (eucjpFlag == YES) - return CS_EUCJP; - else - return CS_SJIS; - } else if (defaultCSID == CS_EUCJP) { - sjisFlag = isSJIS(cp, len); - if (sjisFlag == YES) - return CS_SJIS; - else - return CS_EUCJP; - } else { /* default is JIS */ - sjisFlag = isSJIS(cp, len); - if (sjisFlag == YES) - return CS_SJIS; - eucjpFlag = isEUCJP(cp, len); - if (eucjpFlag == YES) - return CS_EUCJP; - if (sjisFlag == NO) { - if (eucjpFlag != NO) /* SJIS-NO, EUCJP-MAYBE */ - return CS_EUCJP; - } else { - if (eucjpFlag == NO) /* SJIS-MAYBE, EUCJP-NO */ - return CS_SJIS; - else { /* both MAYBE */ - return CS_EUCJP; /* have to pick one... */ - } - } - } -#else - if (CS_SJIS == defaultCSID) { - if (MAYBE == sjisFlag) - return CS_SJIS; - } else if (CS_EUCJP == defaultCSID) { - if (MAYBE == eucjpFlag) - return CS_EUCJP; - } else { /* default is JIS */ - if ((MAYBE == eucjpFlag) && (MAYBE == sjisFlag)) /* pick one- EUC */ - return CS_EUCJP; - } -#endif - } - return CS_ASCII; /* Could be any of the 3... */ -} - - /* Auto Detect Japanese Char Code Conversion */ -MODULE_PRIVATE unsigned char * -autoJCCC (CCCDataObject obj, const unsigned char *s, int32 l) -{ - int16 doc_csid = 0; - uint16 detected_doc_csid; - - /* try to determine doc Japanese CSID. */ - doc_csid = intl_detect_JCSID((uint16)(INTL_GetCCCDefaultCSID(obj)&~CS_AUTO), - (const unsigned char *) s,l); - if (doc_csid == CS_ASCII) { /* return s unconverted and */ - INTL_SetCCCLen(obj, l); - return (unsigned char *)s; /* autodetect next block of stream data */ - } - if (doc_csid == CS_DEFAULT) { /* found unexpected chars */ - doc_csid = INTL_GetCCCDefaultCSID(obj) & ~CS_AUTO; - detected_doc_csid = CS_DEFAULT; - } else { - detected_doc_csid = doc_csid | CS_AUTO; - } - /* Setup converter function for success streams data blocks */ - (void) INTL_GetCharCodeConverter(doc_csid, INTL_GetCCCToCSID(obj), obj); - INTL_CallCCCReportAutoDetect(obj, detected_doc_csid); - - /* If no conversion needed, change put_block module for successive - * data blocks. For current data block, return unmodified buffer. - */ - if (INTL_GetCCCCvtfunc(obj) == NULL) { - INTL_SetCCCLen(obj, l); - return((unsigned char *) s); - } - /* For initial block, must call converter directly. Success calls - * to the converter will be called directly from net_CharCodeConv() - */ - return (unsigned char *)(INTL_GetCCCCvtfunc(obj)) (obj, (const unsigned char *)s, l); -} - - - diff --git a/mozilla/lib/libi18n/autokr.c b/mozilla/lib/libi18n/autokr.c deleted file mode 100644 index c30cb2e012f..00000000000 --- a/mozilla/lib/libi18n/autokr.c +++ /dev/null @@ -1,80 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* autokr.c */ - -#include "intlpriv.h" -#include "xp.h" -#include "libi18n.h" - -MODULE_PRIVATE int16 intl_detect_KCSID( uint16 defaultCSID, const unsigned char *buf, int32 len ) -{ - register const unsigned char *cp = buf; - /* CS_2022_KR is 7bit. Scan to end of 7bit data or legitimate KOREAN ESC sequence. */ - while( len && !( *cp & 0x80 ) ){ - /* CS_2022_KR ESC $ ) C */ - if(( cp[0] == ESC && len > 3 && ( cp[1] == '$' && cp[2] == ')' && cp[3] == 'C' ) ) || - (SI == *cp) || (SO == *cp) ) - return CS_2022_KR; - cp++, len--; - } - - if( len > 0 ) return CS_KSC_8BIT; /* it is not Roman */ - - return CS_ASCII; /* Could be any of the 3... */ -} - - - -/* Auto Detect Korean Char Code Conversion : jliu */ -MODULE_PRIVATE unsigned char * -autoKCCC (CCCDataObject obj, const unsigned char *s, int32 l) -{ - int16 doc_csid = 0; - - /* Use 1st stream data block to guess doc Korean CSID. */ - doc_csid = intl_detect_KCSID (INTL_GetCCCDefaultCSID(obj),(const unsigned char *) s, l); - - if( doc_csid == CS_ASCII ){ /* return s unconverted and */ - INTL_SetCCCLen(obj, l); - return (unsigned char *)s; /* autodetect next block of stream data */ - } - - /* Setup converter function for success streams data blocks */ - - (void)INTL_GetCharCodeConverter( doc_csid, INTL_GetCCCToCSID(obj), obj ); - INTL_CallCCCReportAutoDetect(obj, doc_csid); - - - /* If no conversion needed, change put_block module for successive - * data blocks. For current data block, return unmodified buffer. - */ - if (INTL_GetCCCCvtfunc(obj) == NULL) { - INTL_SetCCCLen(obj, l); - return((unsigned char *) s); - } - /* For initial block, must call converter directly. Success calls - * to the converter will be called directly from net_CharCodeConv() - */ - return (unsigned char *)(INTL_GetCCCCvtfunc(obj)) (obj, (const unsigned char*)s, l); -} - - - - - - diff --git a/mozilla/lib/libi18n/b52cns.c b/mozilla/lib/libi18n/b52cns.c deleted file mode 100644 index a33c4e54599..00000000000 --- a/mozilla/lib/libi18n/b52cns.c +++ /dev/null @@ -1,905 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* b52cns.c */ -#include "intlpriv.h" -extern int MK_OUT_OF_MEMORY; - -/* ------------------------------------------------------------------------------------------ - Function should be used internal to libi18n but need to referred - out side this file - * ------------------------------------------------------------------------------------------ */ -MODULE_PRIVATE unsigned char* mz_euctwtob5( CCCDataObject obj, const unsigned char *in, int32 insize); -MODULE_PRIVATE unsigned char* mz_b5toeuctw( CCCDataObject obj, const unsigned char *in, int32 insize); - -/* ------------------------------------------------------------------------------------------ * - Small function to isolate conversion code from CCCDataObject - * ------------------------------------------------------------------------------------------ */ -PRIVATE void intl_fc_restore_conv_state(CCCDataObject obj, uint32* pst1, uint32* pst2); -PRIVATE void intl_fc_save_conv_state(CCCDataObject obj, uint32 st1, uint32 st2); -PRIVATE unsigned char* intl_fc_report_out_of_memory(CCCDataObject obj); -PRIVATE unsigned char* intl_fc_return_buf_and_len( CCCDataObject obj, unsigned char* out, int32 outlen); -PRIVATE uint32 intl_same_outsize(uint32 insize); -PRIVATE uint32 intl_x2_outsize(uint32 insize); - -PRIVATE XP_Bool intl_convcnstobig5(uint16 cns, uint8 cnsplane, uint16* big5); -PRIVATE XP_Bool intl_convbig5tocns(uint16 big5, uint16* cns, uint8* cnsplane); -/* ------------------------------------------------------------------------------------------ - BIG5 to CNS conversion table stuff - * ------------------------------------------------------------------------------------------ */ -typedef struct { - uint16 cnsfromseq; - uint16 cnstoseq; - uint16 big5fromseq; -} cnstobig5; -/* ------------------------------------------------------------------------------------------ */ -typedef struct { - uint16 big5fromseq; - uint16 big5toseq; - uint16 cnsfromseq; - uint8 cnsplane; -} big5tocns; -/* ------------------------------------------------------------------------------------------ */ -#define BIG5HIBASE 0x00A1 -#define BIG5GAPBASE 0x007F -#define BIG5LOWBASE 0x0040 -#define BIG5LOWERROW ( BIG5GAPBASE - BIG5LOWBASE ) -#define BIG5GAP ( BIG5HIBASE - BIG5GAPBASE ) -#define BIG5HIGHERROW ( 0x00FF - BIG5HIBASE ) -#define BIG5ROW ( BIG5LOWERROW + BIG5HIGHERROW ) - -#define CNSROWBASE 0x0021 -#define CNSROW ( 0x007F - CNSROWBASE ) - -#ifdef HIBYTE -#undef HIBYTE -#endif - -#define HIBYTE(w) (((w) & 0xff00) >> 8) -#define LOWBYTE(w) ((w) & 0x00ff) -#define CNSTOSEQ(c) ((CNSROW * (HIBYTE(c) - CNSROWBASE)) + (LOWBYTE(c) - CNSROWBASE)) -#define SEQTOCNS(s) (((((s) / CNSROW) + CNSROWBASE) << 8 ) | (((s) % CNSROW) + CNSROWBASE)) -#define BIG5TOSEQ(b) ((HIBYTE(b) - 0x00A1) * BIG5ROW + ( LOWBYTE(b) - 0x40 ) - ( (b & 0x0080) ? BIG5GAP : 0 )) -#define SEQTOBIG5(s) (((((s) / BIG5ROW) + BIG5HIBASE) << 8 ) | ( ((s) % BIG5ROW ) + BIG5LOWBASE + ((( (s) % BIG5ROW ) >= BIG5LOWERROW ) ? BIG5GAP : 0))) - -#define CNSTOB5_CELL_BEGIN_END(c1, c2, b) { CNSTOSEQ(c1), CNSTOSEQ(c2), BIG5TOSEQ(b) } , -#define B5TOCNS_CELL_BEGIN_END(b1, b2, p, c) { BIG5TOSEQ(b1), BIG5TOSEQ(b2), CNSTOSEQ(c), (p) } , - -#define CNSTOB5_CELL_BEGIN(c, b) { CNSTOSEQ(c), CNSTOSEQ(c), BIG5TOSEQ(b) } , -#define B5TOCNS_CELL_BEGIN(b, p, c) { BIG5TOSEQ(b), BIG5TOSEQ(b), CNSTOSEQ(c), (p) } , - -/* ------------------------------------------------------------------------------------------ */ -PRIVATE cnstobig5 cns1_map[] = { -/* A.1. Big5 (ETen, IBM, and Microsoft version) symbol set correspondence*/ -/* to CNS 11643 Plane 1:*/ -CNSTOB5_CELL_BEGIN_END(0x2121, 0x2256, 0xA140) /* 0xA140-0xA1F5 <-> 0x2121-0x2256 */ -CNSTOB5_CELL_BEGIN (0x2257 , 0xA1F7) /* 0xA1F7 <-> 0x2257 */ -CNSTOB5_CELL_BEGIN (0x2258 , 0xA1F6) /* 0xA1F6 <-> 0x2258 */ -CNSTOB5_CELL_BEGIN_END(0x2259, 0x234E, 0xA1F8) /* 0xA1F8-0xA2AE <-> 0x2259-0x234E */ -CNSTOB5_CELL_BEGIN_END(0x2421, 0x2570, 0xA2AF) /* 0xA2AF-0xA3BF <-> 0x2421-0x2570 */ -/* A.4. Big5 (ETen and IBM Version) specific numeric symbols*/ -/* correspondence to CNS 11643 Plane 1: (Microsoft version defined*/ -/* this area as UDC - User Defined Character)*/ -CNSTOB5_CELL_BEGIN_END(0x2621, 0x263E, 0xC6A1) /* 0xC6A1-0xC6BE <-> 0x2621-0x263E */ -/* A.5. Big5 (ETen and IBM Version) specific KangXi radicals*/ -/* correspondence to CNS 11643 Plane 1: (Microsoft version defined as*/ -/* UDC - User Definable Character)*/ -CNSTOB5_CELL_BEGIN (0x2723 , 0xC6BF) /* 0xC6BF <-> 0x2723 */ -CNSTOB5_CELL_BEGIN (0x2724 , 0xC6C0) /* 0xC6C0 <-> 0x2724 */ -CNSTOB5_CELL_BEGIN (0x2726 , 0xC6C1) /* 0xC6C1 <-> 0x2726 */ -CNSTOB5_CELL_BEGIN (0x2728 , 0xC6C2) /* 0xC6C2 <-> 0x2728 */ -CNSTOB5_CELL_BEGIN (0x272D , 0xC6C3) /* 0xC6C3 <-> 0x272D */ -CNSTOB5_CELL_BEGIN (0x272E , 0xC6C4) /* 0xC6C4 <-> 0x272E */ -CNSTOB5_CELL_BEGIN (0x272F , 0xC6C5) /* 0xC6C5 <-> 0x272F */ -CNSTOB5_CELL_BEGIN (0x2734 , 0xC6C6) /* 0xC6C6 <-> 0x2734 */ -CNSTOB5_CELL_BEGIN (0x2737 , 0xC6C7) /* 0xC6C7 <-> 0x2737 */ -CNSTOB5_CELL_BEGIN (0x273A , 0xC6C8) /* 0xC6C8 <-> 0x273A */ -CNSTOB5_CELL_BEGIN (0x273C , 0xC6C9) /* 0xC6C9 <-> 0x273C */ -CNSTOB5_CELL_BEGIN (0x2742 , 0xC6CA) /* 0xC6CA <-> 0x2742 */ -CNSTOB5_CELL_BEGIN (0x2747 , 0xC6CB) /* 0xC6CB <-> 0x2747 */ -CNSTOB5_CELL_BEGIN (0x274E , 0xC6CC) /* 0xC6CC <-> 0x274E */ -CNSTOB5_CELL_BEGIN (0x2753 , 0xC6CD) /* 0xC6CD <-> 0x2753 */ -CNSTOB5_CELL_BEGIN (0x2754 , 0xC6CE) /* 0xC6CE <-> 0x2754 */ -CNSTOB5_CELL_BEGIN (0x2755 , 0xC6CF) /* 0xC6CF <-> 0x2755 */ -CNSTOB5_CELL_BEGIN (0x2759 , 0xC6D0) /* 0xC6D0 <-> 0x2759 */ -CNSTOB5_CELL_BEGIN (0x275A , 0xC6D1) /* 0xC6D1 <-> 0x275A */ -CNSTOB5_CELL_BEGIN (0x2761 , 0xC6D2) /* 0xC6D2 <-> 0x2761 */ -CNSTOB5_CELL_BEGIN (0x2766 , 0xC6D3) /* 0xC6D3 <-> 0x2766 */ -CNSTOB5_CELL_BEGIN (0x2829 , 0xC6D4) /* 0xC6D4 <-> 0x2829 */ -CNSTOB5_CELL_BEGIN (0x282A , 0xC6D5) /* 0xC6D5 <-> 0x282A */ -CNSTOB5_CELL_BEGIN (0x2863 , 0xC6D6) /* 0xC6D6 <-> 0x2863 */ -CNSTOB5_CELL_BEGIN (0x286C , 0xC6D7) /* 0xC6D7 <-> 0x286C */ -/* A.2. Big5 (ETen, IBM, and Microsoft version) correspondence*/ -/* to CNS 11643 Plane 1:*/ -CNSTOB5_CELL_BEGIN_END(0x4221, 0x4241, 0xA3C0) /* 0xA3C0-0xA3E0 <-> 0x4221-0x4241 */ -CNSTOB5_CELL_BEGIN_END(0x4421, 0x5322, 0xA440) /* 0xA440-0xACFD <-> 0x4421-0x5322 */ -CNSTOB5_CELL_BEGIN_END(0x5323, 0x5752, 0xAD40) /* 0xAD40-0xAFCF <-> 0x5323-0x5752 */ -CNSTOB5_CELL_BEGIN (0x5753 , 0xACFE) /* 0xACFE <-> 0x5753 */ -CNSTOB5_CELL_BEGIN_END(0x5754, 0x6B4F, 0xAFD0) /* 0xAFD0-0xBBC7 <-> 0x5754-0x6B4F */ -CNSTOB5_CELL_BEGIN (0x6B50 , 0xBE52) /* 0xBE52 <-> 0x6B50 */ -CNSTOB5_CELL_BEGIN_END(0x6B51, 0x6F5B, 0xBBC8) /* 0xBBC8-0xBE51 <-> 0x6B51-0x6F5B */ -CNSTOB5_CELL_BEGIN_END(0x6F5C, 0x7534, 0xBE53) /* 0xBE53-0xC1AA <-> 0x6F5C-0x7534 */ -CNSTOB5_CELL_BEGIN (0x7535 , 0xC2CB) /* 0xC2CB <-> 0x7535 */ -CNSTOB5_CELL_BEGIN_END(0x7536, 0x7736, 0xC1AB) /* 0xC1AB-0xC2CA <-> 0x7536-0x7736 */ -CNSTOB5_CELL_BEGIN_END(0x7737, 0x782C, 0xC2CC) /* 0xC2CC-0xC360 <-> 0x7737-0x782C */ -CNSTOB5_CELL_BEGIN (0x782D , 0xC456) /* 0xC456 <-> 0x782D */ -CNSTOB5_CELL_BEGIN_END(0x782E, 0x7863, 0xC361) /* 0xC361-0xC3B8 <-> 0x782E-0x7863 */ -CNSTOB5_CELL_BEGIN (0x7864 , 0xC3BA) /* 0xC3BA <-> 0x7864 */ -CNSTOB5_CELL_BEGIN (0x7865 , 0xC3B9) /* 0xC3B9 <-> 0x7865 */ -CNSTOB5_CELL_BEGIN_END(0x7866, 0x7961, 0xC3BB) /* 0xC3BB-0xC455 <-> 0x7866-0x7961 */ -CNSTOB5_CELL_BEGIN_END(0x7962, 0x7D4B, 0xC457) /* 0xC457-0xC67E <-> 0x7962-0x7D4B */ -}; -/* -------------------------------------------------------------------- */ -PRIVATE cnstobig5 cns2_map[] = { -/* A.3. Big5 (ETen, IBM, and Microsoft version) Level 2 correspondence to*/ -/* CNS 11643-1992 Plane 2:*/ -CNSTOB5_CELL_BEGIN_END(0x2121, 0x212A, 0xC940) /* 0xC940-0xC949 <-> 0x2121-0x212A */ -CNSTOB5_CELL_BEGIN_END(0x212B, 0x214B, 0xC94B) /* 0xC94B-0xC96B <-> 0x212B-0x214B */ -CNSTOB5_CELL_BEGIN (0x214C , 0xC9BE) /* 0xC9BE <-> 0x214C */ -CNSTOB5_CELL_BEGIN_END(0x214D, 0x217C, 0xC96C) /* 0xC96C-0xC9BD <-> 0x214D-0x217C */ -CNSTOB5_CELL_BEGIN_END(0x217D, 0x224C, 0xC9BF) /* 0xC9BF-0xC9EC <-> 0x217D-0x224C */ -CNSTOB5_CELL_BEGIN (0x224D , 0xCAF7) /* 0xCAF7 <-> 0x224D */ -CNSTOB5_CELL_BEGIN_END(0x224E, 0x2438, 0xC9ED) /* 0xC9ED-0xCAF6 <-> 0x224E-0x2438 */ -CNSTOB5_CELL_BEGIN_END(0x2439, 0x387D, 0xCAF8) /* 0xCAF8-0xD779 <-> 0x2439-0x387D */ -CNSTOB5_CELL_BEGIN_END(0x387E, 0x3F69, 0xD77B) /* 0xD77B-0xDBA6 <-> 0x387E-0x3F69 */ -CNSTOB5_CELL_BEGIN (0x3F6A , 0xD77A) /* 0xD77A <-> 0x3F6A */ -CNSTOB5_CELL_BEGIN_END(0x3F6B, 0x4423, 0xDBA7) /* 0xDBA7-0xDDFB <-> 0x3F6B-0x4423 */ -CNSTOB5_CELL_BEGIN_END(0x4424, 0x554A, 0xDDFD) /* 0xDDFD-0xE8A2 <-> 0x4424-0x554A */ -CNSTOB5_CELL_BEGIN (0x554B , 0xEBF1) /* 0xEBF1 <-> 0x554B */ -CNSTOB5_CELL_BEGIN_END(0x554C, 0x5721, 0xE8A3) /* 0xE8A3-0xE975 <-> 0x554C-0x5721 */ -CNSTOB5_CELL_BEGIN (0x5722 , 0xECDE) /* 0xECDE <-> 0x5722 */ -CNSTOB5_CELL_BEGIN_END(0x5723, 0x5A27, 0xE976) /* 0xE976-0xEB5A <-> 0x5723-0x5A27 */ -CNSTOB5_CELL_BEGIN (0x5A28 , 0xF0CB) /* 0xF0CB <-> 0x5A28 */ -CNSTOB5_CELL_BEGIN_END(0x5A29, 0x5B3E, 0xEB5B) /* 0xEB5B-0xEBF0 <-> 0x5A29-0x5B3E */ -CNSTOB5_CELL_BEGIN_END(0x5B3F, 0x5C69, 0xEBF2) /* 0xEBF2-0xECDD <-> 0x5B3F-0x5C69 */ -CNSTOB5_CELL_BEGIN_END(0x5C6A, 0x5D73, 0xECDF) /* 0xECDF-0xEDA9 <-> 0x5C6A-0x5D73 */ -CNSTOB5_CELL_BEGIN (0x5D74 , 0xF056) /* 0xF056 <-> 0x5D74 */ -CNSTOB5_CELL_BEGIN_END(0x5D75, 0x6038, 0xEDAA) /* 0xEDAA-0xEEEA <-> 0x5D75-0x6038 */ -CNSTOB5_CELL_BEGIN_END(0x6039, 0x6242, 0xEEEC) /* 0xEEEC-0xF055 <-> 0x6039-0x6242 */ -CNSTOB5_CELL_BEGIN_END(0x6243, 0x6336, 0xF057) /* 0xF057-0xF0CA <-> 0x6243-0x6336 */ -CNSTOB5_CELL_BEGIN_END(0x6337, 0x642E, 0xF0CC) /* 0xF0CC-0xF162 <-> 0x6337-0x642E */ -CNSTOB5_CELL_BEGIN (0x642F , 0xEEEB) /* 0xEEEB <-> 0x642F */ -CNSTOB5_CELL_BEGIN_END(0x6430, 0x6437, 0xF163) /* 0xF163-0xF16A <-> 0x6430-0x6437 */ -CNSTOB5_CELL_BEGIN_END(0x6438, 0x6572, 0xF16C) /* 0xF16C-0xF267 <-> 0x6438-0x6572 */ -CNSTOB5_CELL_BEGIN_END(0x6573, 0x664C, 0xF269) /* 0xF269-0xF2C2 <-> 0x6573-0x664C */ -CNSTOB5_CELL_BEGIN (0x664D , 0xF4B5) /* 0xF4B5 <-> 0x664D */ -CNSTOB5_CELL_BEGIN_END(0x664E, 0x6760, 0xF2C3) /* 0xF2C3-0xF374 <-> 0x664E-0x6760 */ -CNSTOB5_CELL_BEGIN (0x6761 , 0xF16B) /* 0xF16B <-> 0x6761 */ -CNSTOB5_CELL_BEGIN_END(0x6762, 0x6933, 0xF375) /* 0xF375-0xF465 <-> 0x6762-0x6933 */ -CNSTOB5_CELL_BEGIN (0x6934 , 0xF268) /* 0xF268 <-> 0x6934 */ -CNSTOB5_CELL_BEGIN_END(0x6935, 0x6961, 0xF466) /* 0xF466-0xF4B4 <-> 0x6935-0x6961 */ -CNSTOB5_CELL_BEGIN_END(0x6962, 0x6A4A, 0xF4B6) /* 0xF4B6-0xF4FC <-> 0x6962-0x6A4A */ -CNSTOB5_CELL_BEGIN (0x6A4B , 0xF663) /* 0xF663 <-> 0x6A4B */ -CNSTOB5_CELL_BEGIN_END(0x6A4C, 0x6C51, 0xF4FD) /* 0xF4FD-0xF662 <-> 0x6A4C-0x6C51 */ -CNSTOB5_CELL_BEGIN_END(0x6C52, 0x7165, 0xF664) /* 0xF664-0xF976 <-> 0x6C52-0x7165 */ -CNSTOB5_CELL_BEGIN (0x7166 , 0xF9C4) /* 0xF9C4 <-> 0x7166 */ -CNSTOB5_CELL_BEGIN_END(0x7167, 0x7233, 0xF977) /* 0xF977-0xF9C3 <-> 0x7167-0x7233 */ -CNSTOB5_CELL_BEGIN (0x7234 , 0xF9C5) /* 0xF9C5 <-> 0x7234 */ -CNSTOB5_CELL_BEGIN_END(0x7235, 0x723F, 0xF9C7) /* 0xF9C7-0xF9D1 <-> 0x7235-0x723F */ -CNSTOB5_CELL_BEGIN (0x7240 , 0xF9C6) /* 0xF9C6 <-> 0x7240 */ -CNSTOB5_CELL_BEGIN_END(0x7241, 0x7244, 0xF9D2) /* 0xF9D2-0xF9D5 <-> 0x7241-0x7244 */ -}; -/* -------------------------------------------------------------------- */ -PRIVATE cnstobig5 cns3_map[] = { -/* A.6. Big5 (ETen and Microsoft version) specific Ideographs*/ -/* correspondence to CNS 11643 Plane 3: (IBM version defined as UDC)*/ -CNSTOB5_CELL_BEGIN (0x2C5D , 0xF9DA) /* 0xF9DA <-> 0x2C5D */ -CNSTOB5_CELL_BEGIN (0x3D7E , 0xF9DB) /* 0xF9DB <-> 0x3D7E */ -CNSTOB5_CELL_BEGIN (0x4337 , 0xF9D6) /* 0xF9D6 <-> 0x4337 */ -CNSTOB5_CELL_BEGIN (0x444E , 0xF9D8) /* 0xF9D8 <-> 0x444E */ -CNSTOB5_CELL_BEGIN (0x4B5C , 0xF9DC) /* 0xF9DC <-> 0x4B5C */ -CNSTOB5_CELL_BEGIN (0x4F50 , 0xF9D7) /* 0xF9D7 <-> 0x4F50 */ -CNSTOB5_CELL_BEGIN (0x504A , 0xF9D9) /* 0xF9D9 <-> 0x504A */ -}; -/* -------------------------------------------------------------------- */ -PRIVATE cnstobig5 cns4_map[] = { -/* A.7. Big5 (ETen version only) specific symbols correspondence to CNS*/ -/* 11643 Plane 4:*/ -CNSTOB5_CELL_BEGIN (0x2123 , 0xC879) /* 0xC879 <-> 0x2123 */ -CNSTOB5_CELL_BEGIN (0x2124 , 0xC87B) /* 0xC87B <-> 0x2124 */ -CNSTOB5_CELL_BEGIN (0x212A , 0xC87D) /* 0xC87D <-> 0x212A */ -CNSTOB5_CELL_BEGIN (0x2152 , 0xC8A2) /* 0xC8A2 <-> 0x2152 */ -}; -/* -------------------------------------------------------------------- */ -PRIVATE cnstobig5 *cns_map[4] = { - cns1_map, - cns2_map, - cns3_map, - cns4_map -}; -/* -------------------------------------------------------------------- */ -PRIVATE uint32 cns_map_size[4] = { - sizeof(cns1_map)/sizeof(cnstobig5), - sizeof(cns2_map)/sizeof(cnstobig5), - sizeof(cns3_map)/sizeof(cnstobig5), - sizeof(cns4_map)/sizeof(cnstobig5) -}; -/* -------------------------------------------------------------------- */ -PRIVATE big5tocns big5_map[] = { -#define CNSPLANE 1 -/* A.1. Big5 (ETen, IBM, and Microsoft version) symbol set correspondence*/ -/* to CNS 11643 Plane 1:*/ -B5TOCNS_CELL_BEGIN_END( 0xA140, 0xA1F5, CNSPLANE , 0x2121) /* 0xA140-0xA1F5 <-> 0x2121-0x2256 */ -B5TOCNS_CELL_BEGIN ( 0xA1F6, CNSPLANE , 0x2258) /* 0xA1F6 <-> 0x2258 */ -B5TOCNS_CELL_BEGIN ( 0xA1F7, CNSPLANE , 0x2257) /* 0xA1F7 <-> 0x2257 */ -B5TOCNS_CELL_BEGIN_END( 0xA1F8, 0xA2AE, CNSPLANE , 0x2259) /* 0xA1F8-0xA2AE <-> 0x2259-0x234E */ -B5TOCNS_CELL_BEGIN_END( 0xA2AF, 0xA3BF, CNSPLANE , 0x2421) /* 0xA2AF-0xA3BF <-> 0x2421-0x2570 */ -B5TOCNS_CELL_BEGIN_END( 0xA3C0, 0xA3E0, CNSPLANE , 0x4221) /* 0xA3C0-0xA3E0 <-> 0x4221-0x4241 */ -/* A.2. Big5 (ETen, IBM, and Microsoft version) correspondence*/ -/* to CNS 11643 Plane 1:*/ -B5TOCNS_CELL_BEGIN_END( 0xA440, 0xACFD, CNSPLANE , 0x4421) /* 0xA440-0xACFD <-> 0x4421-0x5322 */ -B5TOCNS_CELL_BEGIN ( 0xACFE, CNSPLANE , 0x5753) /* 0xACFE <-> 0x5753 */ -B5TOCNS_CELL_BEGIN_END( 0xAD40, 0xAFCF, CNSPLANE , 0x5323) /* 0xAD40-0xAFCF <-> 0x5323-0x5752 */ -B5TOCNS_CELL_BEGIN_END( 0xAFD0, 0xBBC7, CNSPLANE , 0x5754) /* 0xAFD0-0xBBC7 <-> 0x5754-0x6B4F */ -B5TOCNS_CELL_BEGIN_END( 0xBBC8, 0xBE51, CNSPLANE , 0x6B51) /* 0xBBC8-0xBE51 <-> 0x6B51-0x6F5B */ -B5TOCNS_CELL_BEGIN ( 0xBE52, CNSPLANE , 0x6B50) /* 0xBE52 <-> 0x6B50 */ -B5TOCNS_CELL_BEGIN_END( 0xBE53, 0xC1AA, CNSPLANE , 0x6F5C) /* 0xBE53-0xC1AA <-> 0x6F5C-0x7534 */ -B5TOCNS_CELL_BEGIN_END( 0xC1AB, 0xC2CA, CNSPLANE , 0x7536) /* 0xC1AB-0xC2CA <-> 0x7536-0x7736 */ -B5TOCNS_CELL_BEGIN ( 0xC2CB, CNSPLANE , 0x7535) /* 0xC2CB <-> 0x7535 */ -B5TOCNS_CELL_BEGIN_END( 0xC2CC, 0xC360, CNSPLANE , 0x7737) /* 0xC2CC-0xC360 <-> 0x7737-0x782C */ -B5TOCNS_CELL_BEGIN_END( 0xC361, 0xC3B8, CNSPLANE , 0x782E) /* 0xC361-0xC3B8 <-> 0x782E-0x7863 */ -B5TOCNS_CELL_BEGIN ( 0xC3B9, CNSPLANE , 0x7865) /* 0xC3B9 <-> 0x7865 */ -B5TOCNS_CELL_BEGIN ( 0xC3BA, CNSPLANE , 0x7864) /* 0xC3BA <-> 0x7864 */ -B5TOCNS_CELL_BEGIN_END( 0xC3BB, 0xC455, CNSPLANE , 0x7866) /* 0xC3BB-0xC455 <-> 0x7866-0x7961 */ -B5TOCNS_CELL_BEGIN ( 0xC456, CNSPLANE , 0x782D) /* 0xC456 <-> 0x782D */ -B5TOCNS_CELL_BEGIN_END( 0xC457, 0xC67E, CNSPLANE , 0x7962) /* 0xC457-0xC67E <-> 0x7962-0x7D4B */ -/* A.4. Big5 (ETen and IBM Version) specific numeric symbols*/ -/* correspondence to CNS 11643 Plane 1: (Microsoft version defined*/ -/* this area as UDC - User Defined Character)*/ -B5TOCNS_CELL_BEGIN_END( 0xC6A1, 0xC6BE, CNSPLANE , 0x2621) /* 0xC6A1-0xC6BE <-> 0x2621-0x263E */ -/* A.5. Big5 (ETen and IBM Version) specific KangXi radicals*/ -/* correspondence to CNS 11643 Plane 1: (Microsoft version defined as*/ -/* UDC - User Definable Character)*/ -B5TOCNS_CELL_BEGIN ( 0xC6BF, CNSPLANE , 0x2723) /* 0xC6BF <-> 0x2723 */ -B5TOCNS_CELL_BEGIN ( 0xC6C0, CNSPLANE , 0x2724) /* 0xC6C0 <-> 0x2724 */ -B5TOCNS_CELL_BEGIN ( 0xC6C1, CNSPLANE , 0x2726) /* 0xC6C1 <-> 0x2726 */ -B5TOCNS_CELL_BEGIN ( 0xC6C2, CNSPLANE , 0x2728) /* 0xC6C2 <-> 0x2728 */ -B5TOCNS_CELL_BEGIN ( 0xC6C3, CNSPLANE , 0x272D) /* 0xC6C3 <-> 0x272D */ -B5TOCNS_CELL_BEGIN ( 0xC6C4, CNSPLANE , 0x272E) /* 0xC6C4 <-> 0x272E */ -B5TOCNS_CELL_BEGIN ( 0xC6C5, CNSPLANE , 0x272F) /* 0xC6C5 <-> 0x272F */ -B5TOCNS_CELL_BEGIN ( 0xC6C6, CNSPLANE , 0x2734) /* 0xC6C6 <-> 0x2734 */ -B5TOCNS_CELL_BEGIN ( 0xC6C7, CNSPLANE , 0x2737) /* 0xC6C7 <-> 0x2737 */ -B5TOCNS_CELL_BEGIN ( 0xC6C8, CNSPLANE , 0x273A) /* 0xC6C8 <-> 0x273A */ -B5TOCNS_CELL_BEGIN ( 0xC6C9, CNSPLANE , 0x273C) /* 0xC6C9 <-> 0x273C */ -B5TOCNS_CELL_BEGIN ( 0xC6CA, CNSPLANE , 0x2742) /* 0xC6CA <-> 0x2742 */ -B5TOCNS_CELL_BEGIN ( 0xC6CB, CNSPLANE , 0x2747) /* 0xC6CB <-> 0x2747 */ -B5TOCNS_CELL_BEGIN ( 0xC6CC, CNSPLANE , 0x274E) /* 0xC6CC <-> 0x274E */ -B5TOCNS_CELL_BEGIN ( 0xC6CD, CNSPLANE , 0x2753) /* 0xC6CD <-> 0x2753 */ -B5TOCNS_CELL_BEGIN ( 0xC6CE, CNSPLANE , 0x2754) /* 0xC6CE <-> 0x2754 */ -B5TOCNS_CELL_BEGIN ( 0xC6CF, CNSPLANE , 0x2755) /* 0xC6CF <-> 0x2755 */ -B5TOCNS_CELL_BEGIN ( 0xC6D0, CNSPLANE , 0x2759) /* 0xC6D0 <-> 0x2759 */ -B5TOCNS_CELL_BEGIN ( 0xC6D1, CNSPLANE , 0x275A) /* 0xC6D1 <-> 0x275A */ -B5TOCNS_CELL_BEGIN ( 0xC6D2, CNSPLANE , 0x2761) /* 0xC6D2 <-> 0x2761 */ -B5TOCNS_CELL_BEGIN ( 0xC6D3, CNSPLANE , 0x2766) /* 0xC6D3 <-> 0x2766 */ -B5TOCNS_CELL_BEGIN ( 0xC6D4, CNSPLANE , 0x2829) /* 0xC6D4 <-> 0x2829 */ -B5TOCNS_CELL_BEGIN ( 0xC6D5, CNSPLANE , 0x282A) /* 0xC6D5 <-> 0x282A */ -B5TOCNS_CELL_BEGIN ( 0xC6D6, CNSPLANE , 0x2863) /* 0xC6D6 <-> 0x2863 */ -B5TOCNS_CELL_BEGIN ( 0xC6D7, CNSPLANE , 0x286C) /* 0xC6D7 <-> 0x286C */ -#undef CNSPLANE - -#define CNSPLANE 4 -/* A.7. Big5 (ETen version only) specific symbols correspondence to CNS*/ -/* 11643 Plane 4:*/ -B5TOCNS_CELL_BEGIN ( 0xC879, CNSPLANE , 0x2123) /* 0xC879 <-> 0x2123 */ -B5TOCNS_CELL_BEGIN ( 0xC87B, CNSPLANE , 0x2124) /* 0xC87B <-> 0x2124 */ -B5TOCNS_CELL_BEGIN ( 0xC87D, CNSPLANE , 0x212A) /* 0xC87D <-> 0x212A */ -B5TOCNS_CELL_BEGIN ( 0xC8A2, CNSPLANE , 0x2152) /* 0xC8A2 <-> 0x2152 */ -#undef CNSPLANE - -#define CNSPLANE 2 -/* A.3. Big5 (ETen, IBM, and Microsoft version) Level 2 correspondence to*/ -/* CNS 11643-1992 Plane 2:*/ -B5TOCNS_CELL_BEGIN_END( 0xC940, 0xC949, CNSPLANE , 0x2121) /* 0xC940-0xC949 <-> 0x2121-0x212A */ -#undef CNSPLANE -#define CNSPLANE 1 -B5TOCNS_CELL_BEGIN ( 0xC94A, CNSPLANE , 0x4442) /* 0xC94A <-> 0x4442 # duplicate of Level 1's 0xA461 */ -#undef CNSPLANE -#define CNSPLANE 2 -B5TOCNS_CELL_BEGIN_END( 0xC94B, 0xC96B, CNSPLANE , 0x212B) /* 0xC94B-0xC96B <-> 0x212B-0x214B */ -B5TOCNS_CELL_BEGIN_END( 0xC96C, 0xC9BD, CNSPLANE , 0x214D) /* 0xC96C-0xC9BD <-> 0x214D-0x217C */ -B5TOCNS_CELL_BEGIN ( 0xC9BE, CNSPLANE , 0x214C) /* 0xC9BE <-> 0x214C */ -B5TOCNS_CELL_BEGIN_END( 0xC9BF, 0xC9EC, CNSPLANE , 0x217D) /* 0xC9BF-0xC9EC <-> 0x217D-0x224C */ -B5TOCNS_CELL_BEGIN_END( 0xC9ED, 0xCAF6, CNSPLANE , 0x224E) /* 0xC9ED-0xCAF6 <-> 0x224E-0x2438 */ -B5TOCNS_CELL_BEGIN ( 0xCAF7, CNSPLANE , 0x224D) /* 0xCAF7 <-> 0x224D */ -B5TOCNS_CELL_BEGIN_END( 0xCAF8, 0xD779, CNSPLANE , 0x2439) /* 0xCAF8-0xD779 <-> 0x2439-0x387D */ -B5TOCNS_CELL_BEGIN ( 0xD77A, CNSPLANE , 0x3F6A) /* 0xD77A <-> 0x3F6A */ -B5TOCNS_CELL_BEGIN_END( 0xD77B, 0xDBA6, CNSPLANE , 0x387E) /* 0xD77B-0xDBA6 <-> 0x387E-0x3F69 */ -B5TOCNS_CELL_BEGIN_END( 0xDBA7, 0xDDFB, CNSPLANE , 0x3F6B) /* 0xDBA7-0xDDFB <-> 0x3F6B-0x4423 */ -B5TOCNS_CELL_BEGIN ( 0xDDFC, CNSPLANE , 0x4176) /* 0xDDFC <-> 0x4176 # duplicate of 0xDCD1 */ -B5TOCNS_CELL_BEGIN_END( 0xDDFD, 0xE8A2, CNSPLANE , 0x4424) /* 0xDDFD-0xE8A2 <-> 0x4424-0x554A */ -B5TOCNS_CELL_BEGIN_END( 0xE8A3, 0xE975, CNSPLANE , 0x554C) /* 0xE8A3-0xE975 <-> 0x554C-0x5721 */ -B5TOCNS_CELL_BEGIN_END( 0xE976, 0xEB5A, CNSPLANE , 0x5723) /* 0xE976-0xEB5A <-> 0x5723-0x5A27 */ -B5TOCNS_CELL_BEGIN_END( 0xEB5B, 0xEBF0, CNSPLANE , 0x5A29) /* 0xEB5B-0xEBF0 <-> 0x5A29-0x5B3E */ -B5TOCNS_CELL_BEGIN ( 0xEBF1, CNSPLANE , 0x554B) /* 0xEBF1 <-> 0x554B */ -B5TOCNS_CELL_BEGIN_END( 0xEBF2, 0xECDD, CNSPLANE , 0x5B3F) /* 0xEBF2-0xECDD <-> 0x5B3F-0x5C69 */ -B5TOCNS_CELL_BEGIN ( 0xECDE, CNSPLANE , 0x5722) /* 0xECDE <-> 0x5722 */ -B5TOCNS_CELL_BEGIN_END( 0xECDF, 0xEDA9, CNSPLANE , 0x5C6A) /* 0xECDF-0xEDA9 <-> 0x5C6A-0x5D73 */ -B5TOCNS_CELL_BEGIN_END( 0xEDAA, 0xEEEA, CNSPLANE , 0x5D75) /* 0xEDAA-0xEEEA <-> 0x5D75-0x6038 */ -B5TOCNS_CELL_BEGIN ( 0xEEEB, CNSPLANE , 0x642F) /* 0xEEEB <-> 0x642F */ -B5TOCNS_CELL_BEGIN_END( 0xEEEC, 0xF055, CNSPLANE , 0x6039) /* 0xEEEC-0xF055 <-> 0x6039-0x6242 */ -B5TOCNS_CELL_BEGIN ( 0xF056, CNSPLANE , 0x5D74) /* 0xF056 <-> 0x5D74 */ -B5TOCNS_CELL_BEGIN_END( 0xF057, 0xF0CA, CNSPLANE , 0x6243) /* 0xF057-0xF0CA <-> 0x6243-0x6336 */ -B5TOCNS_CELL_BEGIN ( 0xF0CB, CNSPLANE , 0x5A28) /* 0xF0CB <-> 0x5A28 */ -B5TOCNS_CELL_BEGIN_END( 0xF0CC, 0xF162, CNSPLANE , 0x6337) /* 0xF0CC-0xF162 <-> 0x6337-0x642E */ -B5TOCNS_CELL_BEGIN_END( 0xF163, 0xF16A, CNSPLANE , 0x6430) /* 0xF163-0xF16A <-> 0x6430-0x6437 */ -B5TOCNS_CELL_BEGIN ( 0xF16B, CNSPLANE , 0x6761) /* 0xF16B <-> 0x6761 */ -B5TOCNS_CELL_BEGIN_END( 0xF16C, 0xF267, CNSPLANE , 0x6438) /* 0xF16C-0xF267 <-> 0x6438-0x6572 */ -B5TOCNS_CELL_BEGIN ( 0xF268, CNSPLANE , 0x6934) /* 0xF268 <-> 0x6934 */ -B5TOCNS_CELL_BEGIN_END( 0xF269, 0xF2C2, CNSPLANE , 0x6573) /* 0xF269-0xF2C2 <-> 0x6573-0x664C */ -B5TOCNS_CELL_BEGIN_END( 0xF2C3, 0xF374, CNSPLANE , 0x664E) /* 0xF2C3-0xF374 <-> 0x664E-0x6760 */ -B5TOCNS_CELL_BEGIN_END( 0xF375, 0xF465, CNSPLANE , 0x6762) /* 0xF375-0xF465 <-> 0x6762-0x6933 */ -B5TOCNS_CELL_BEGIN_END( 0xF466, 0xF4B4, CNSPLANE , 0x6935) /* 0xF466-0xF4B4 <-> 0x6935-0x6961 */ -B5TOCNS_CELL_BEGIN ( 0xF4B5, CNSPLANE , 0x664D) /* 0xF4B5 <-> 0x664D */ -B5TOCNS_CELL_BEGIN_END( 0xF4B6, 0xF4FC, CNSPLANE , 0x6962) /* 0xF4B6-0xF4FC <-> 0x6962-0x6A4A */ -B5TOCNS_CELL_BEGIN_END( 0xF4FD, 0xF662, CNSPLANE , 0x6A4C) /* 0xF4FD-0xF662 <-> 0x6A4C-0x6C51 */ -B5TOCNS_CELL_BEGIN ( 0xF663, CNSPLANE , 0x6A4B) /* 0xF663 <-> 0x6A4B */ -B5TOCNS_CELL_BEGIN_END( 0xF664, 0xF976, CNSPLANE , 0x6C52) /* 0xF664-0xF976 <-> 0x6C52-0x7165 */ -B5TOCNS_CELL_BEGIN_END( 0xF977, 0xF9C3, CNSPLANE , 0x7167) /* 0xF977-0xF9C3 <-> 0x7167-0x7233 */ -B5TOCNS_CELL_BEGIN ( 0xF9C4, CNSPLANE , 0x7166) /* 0xF9C4 <-> 0x7166 */ -B5TOCNS_CELL_BEGIN ( 0xF9C5, CNSPLANE , 0x7234) /* 0xF9C5 <-> 0x7234 */ -B5TOCNS_CELL_BEGIN ( 0xF9C6, CNSPLANE , 0x7240) /* 0xF9C6 <-> 0x7240 */ -B5TOCNS_CELL_BEGIN_END( 0xF9C7, 0xF9D1, CNSPLANE , 0x7235) /* 0xF9C7-0xF9D1 <-> 0x7235-0x723F */ -B5TOCNS_CELL_BEGIN_END( 0xF9D2, 0xF9D5, CNSPLANE , 0x7241) /* 0xF9D2-0xF9D5 <-> 0x7241-0x7244 */ -#undef CNSPLANE - -#define CNSPLANE 3 -/* A.6. Big5 (ETen and Microsoft version) specific Ideographs*/ -/* correspondence to CNS 11643 Plane 3: (IBM version defined as UDC)*/ -B5TOCNS_CELL_BEGIN ( 0xF9D6, CNSPLANE , 0x4337) /* 0xF9D6 <-> 0x4337 */ -B5TOCNS_CELL_BEGIN ( 0xF9D7, CNSPLANE , 0x4F50) /* 0xF9D7 <-> 0x4F50 */ -B5TOCNS_CELL_BEGIN ( 0xF9D8, CNSPLANE , 0x444E) /* 0xF9D8 <-> 0x444E */ -B5TOCNS_CELL_BEGIN ( 0xF9D9, CNSPLANE , 0x504A) /* 0xF9D9 <-> 0x504A */ -B5TOCNS_CELL_BEGIN ( 0xF9DA, CNSPLANE , 0x2C5D) /* 0xF9DA <-> 0x2C5D */ -B5TOCNS_CELL_BEGIN ( 0xF9DB, CNSPLANE , 0x3D7E) /* 0xF9DB <-> 0x3D7E */ -B5TOCNS_CELL_BEGIN ( 0xF9DC, CNSPLANE , 0x4B5C) /* 0xF9DC <-> 0x4B5C */ -#undef CNSPLANE -}; - - - - -/* ------------------------------------------------------------------------------------------ - CVTable - * ------------------------------------------------------------------------------------------ */ - -typedef unsigned char* (*Fn_return_buf_and_len) ( CCCDataObject obj, unsigned char* out, int32 outlen); -typedef unsigned char* (*Fn_report_out_of_memory) ( CCCDataObject obj); -typedef void (*Fn_restore_conv_state) ( CCCDataObject obj, uint32* pst1, uint32* pst2); -typedef void (*Fn_save_conv_state) ( CCCDataObject obj, uint32 st1, uint32 st2); - -typedef void* (*Fn_state_create) (); -typedef void (*Fn_state_destroy) (void* state); -typedef void (*Fn_state_init) (void* state, uint32 st1, uint32 st2); -typedef void (*Fn_state_get_value) (void* state, uint32 *pst1, uint32 *pst2); - -typedef uint32 (*Fn_outsize) (uint32 insize); -typedef XP_Bool (*Fn_scan) (void *state, unsigned char in); -typedef uint32 (*Fn_generate) (void *state, unsigned char* out); - -typedef struct { - Fn_report_out_of_memory report_out_of_memory; - Fn_return_buf_and_len return_buf_and_len; - Fn_restore_conv_state restore_conv_state; - Fn_save_conv_state save_conv_state; - - Fn_state_create state_create; - Fn_state_destroy state_destroy; - Fn_state_init state_init; - Fn_state_get_value state_get_value; - - Fn_outsize outsize; - Fn_scan scan; - Fn_generate generate; -} CVTable; -/* ------------------------------------------------------------------------------------------ */ -PRIVATE unsigned char* intl_fc_conv_generic( CCCDataObject obj, const unsigned char *in, int32 insize, CVTable *vtbl); - -PRIVATE void* intl_b5cns_state_create (); -PRIVATE void intl_b5cns_state_destroy (void* state); -PRIVATE void intl_b5cns_state_init (void* state, uint32 st1, uint32 st2); -PRIVATE void intl_b5cns_state_get_value (void* state, uint32 *pst1, uint32 *pst2); - -PRIVATE XP_Bool intl_big5_scan (void *state, unsigned char in); -PRIVATE uint32 intl_big5_euctw_generate (void *state, unsigned char* out); - -PRIVATE XP_Bool intl_euctw_scan (void *state, unsigned char in); -PRIVATE uint32 intl_euctw_big5_generate (void *state, unsigned char* out); - -/* ------------------------------------------------------------------------------------------ */ -PRIVATE CVTable intl_euctw_b5_vtbl = -{ - &intl_fc_report_out_of_memory, - &intl_fc_return_buf_and_len, - &intl_fc_restore_conv_state, - &intl_fc_save_conv_state, - - &intl_b5cns_state_create, - &intl_b5cns_state_destroy, - &intl_b5cns_state_init, - &intl_b5cns_state_get_value, - - &intl_same_outsize, - &intl_euctw_scan, - &intl_euctw_big5_generate, -}; -/* ------------------------------------------------------------------------------------------ */ -PRIVATE CVTable intl_b5_euctw_vtbl = -{ - &intl_fc_report_out_of_memory, - &intl_fc_return_buf_and_len, - &intl_fc_restore_conv_state, - &intl_fc_save_conv_state, - - &intl_b5cns_state_create, - &intl_b5cns_state_destroy, - &intl_b5cns_state_init, - &intl_b5cns_state_get_value, - - &intl_x2_outsize, - &intl_big5_scan, - &intl_big5_euctw_generate, -}; -/* ------------------------------------------------------------------------------------------ */ -typedef enum { - kError = -1, - kDone = 0, - k1MoreBytes, - k2MoreBytes, - k3MoreBytes -} parseStatus; -/* ------------------------------------------------------------------------------------------ */ -typedef struct { - parseStatus status; - uint8 num_byte; - unsigned char bytes[4]; -} B5CNSstate; -/* ------------------------------------------------------------------------------------------ */ -PRIVATE void* intl_b5cns_state_create() -{ - return XP_ALLOC(sizeof(B5CNSstate)); -} -/* ------------------------------------------------------------------------------------------ */ -PRIVATE void intl_b5cns_state_destroy(void* state) -{ - XP_FREE(state); -} -/* ------------------------------------------------------------------------------------------ */ -PRIVATE void intl_b5cns_state_init(void* state, uint32 st1, uint32 st2) -{ - B5CNSstate* obj = (B5CNSstate*)state; - obj->status = (parseStatus)((st1 >> 8) & 0x00FF); - obj->num_byte = (uint8)(st1) & 0x00FF; - obj->bytes[0] = (unsigned char)(st2 ) & 0x00FF; - obj->bytes[1] = (unsigned char)(st2 >> 8) & 0x00FF; - obj->bytes[2] = (unsigned char)(st2 >> 16) & 0x00FF; - obj->bytes[3] = (unsigned char)(st2 >> 24) & 0x00FF; -} -/* ------------------------------------------------------------------------------------------ */ -PRIVATE void intl_b5cns_state_get_value(void* state, uint32 *pst1, uint32 *pst2) -{ - B5CNSstate* obj = (B5CNSstate*)state; - *pst1 = (obj->status << 8) | obj->num_byte; - *pst2 = obj->bytes[0] | (obj->bytes[1] << 8) | (obj->bytes[2] << 16) | (obj->bytes[3] << 24) ; -} -/* ------------------------------------------------------------------------------------------ */ -PRIVATE XP_Bool intl_big5_scan(void *state, unsigned char in) -{ - B5CNSstate* obj = (B5CNSstate*)state; - obj->bytes[obj->num_byte++] = in; - - XP_ASSERT( ( kDone == obj->status ) || ( k1MoreBytes == obj->status )); - switch( obj->status ) - { - case kDone: - if((0x00FE >= in) && ( in >= 0x00A1)) - { - obj->status = k1MoreBytes; - return FALSE; - } else { - XP_ASSERT( ( in <= 0x7F ) || (0xA0 == in)); /* legal single byte range + hacky 0xa0 */ - obj->status = kDone; - return TRUE; - } - - case k1MoreBytes: - XP_ASSERT( ((0x0040 <= in) && ( in <= 0x007E)) || - ((0x00A1 <= in) && ( in <= 0x00FE))); /* legal 2nd byte */ - obj->status = kDone; - return TRUE; - - default: - XP_ASSERT(0); - obj->num_byte = 0; /* reset */ - obj->status = kDone; /* reset */ - return FALSE; - } -} -/* ------------------------------------------------------------------------------------------ */ -PRIVATE uint32 intl_big5_euctw_generate(void *state, unsigned char* out) -{ - B5CNSstate* obj = (B5CNSstate*)state; - uint8 n = obj->num_byte; - obj->num_byte = 0; - XP_ASSERT( ( 1 == n) || ( 2 == n )); - switch(n) - { - case 1: - *out = obj->bytes[0]; - break; - - case 2: - if(((0x007E >= obj->bytes[1]) && ( obj->bytes[1] >= 0x0040)) || - ((0x00FE >= obj->bytes[1]) && ( obj->bytes[1] >= 0x00A1)) - ) - { - uint16 cns; - uint8 plane; - uint16 big5 = (obj->bytes[0] << 8) | (obj->bytes[1]); - if(intl_convbig5tocns(big5, &cns, &plane)) - { - XP_ASSERT(plane > 0); - XP_ASSERT(plane <= 16); - if(plane > 1) - { - *out++ = (unsigned char)0x8E; - *out++ = (unsigned char)(((unsigned char)0xA0) + plane); - n = 4; - } else { - n = 2; - } - *out++ = (unsigned char)((cns >> 8) & 0xFF) | 0x80; - *out = (unsigned char)(cns & 0x00FF) | 0x80; - return n; - } - } - XP_ASSERT(0); - *out++ = '?'; /* error handling */ - *out = '?'; /* error handling */ - return 2; - - default: - XP_ASSERT(0); - n = 0; - break; - } - return n; -} -/* ------------------------------------------------------------------------------------------ */ -PRIVATE XP_Bool intl_euctw_scan(void *state, unsigned char in) -{ - B5CNSstate* obj = (B5CNSstate*)state; - obj->bytes[obj->num_byte++] = in; - XP_ASSERT( ( k1MoreBytes == obj->status ) || - ( k2MoreBytes == obj->status ) || - ( k3MoreBytes == obj->status ) || - ( kDone == obj->status )); - switch( obj->status ) - { - case kDone: - if((0x00FE >= in) && ( in >= 0x00A1)) - { - obj->status = k1MoreBytes; - return FALSE; - } else { - if(0x008E == in) - { - obj->status = k3MoreBytes; - return FALSE; - } else { - XP_ASSERT( ( in <= 0x7F ) || (0xA0 == in)); /* legal single byte range + hacky 0xa0 */ - obj->status = kDone; - return TRUE; - } - } - - case k3MoreBytes: - XP_ASSERT( (0x00B0 >= in) && ( in >= 0x00A1)); /* legal plane byte */ - /* no break; here */ - case k1MoreBytes: - case k2MoreBytes: - XP_ASSERT( (0x00FE >= in) && ( in >= 0x00A1)); /* legal 2-3 bytes*/ - obj->status--; - if(kDone == obj->status) - return TRUE; - else - return FALSE; - - default: - XP_ASSERT(0); - obj->num_byte = 0; /* reset */ - obj->status = kDone; /* reset */ - return FALSE; - } -} -/* ------------------------------------------------------------------------------------------ */ -PRIVATE uint32 intl_euctw_big5_generate(void *state, unsigned char* out) -{ - B5CNSstate* obj = (B5CNSstate*)state; - uint8 n = obj->num_byte; - unsigned char hb, lb; - obj->num_byte = 0; - XP_ASSERT( ( 1 == n) || ( 2 == n ) || ( 4 == n )); - switch(n) - { - case 1: - *out = obj->bytes[0]; - break; - - case 2: - hb = obj->bytes[0]; - lb = obj->bytes[1]; - if((0x00FE >= lb) && ( lb >= 0x00A1)) - { - uint16 big5; - uint16 cns = ((hb & 0x7F) << 8) | (lb & 0x7F); - if(intl_convcnstobig5(cns, 1, &big5)) - { - *out++ = (unsigned char)((big5 >> 8) & 0xFF); - *out = (unsigned char)(big5 & 0x00FF); - return 2; - } - else - { - /* do not assert if it failed into some range we know there are no conversion */ - XP_ASSERT(( 0x7D == (hb & 0x7f) ) || - ( 0x7E == (hb & 0x7f) ) || - ( (0x27 <= (hb & 0x7f)) && ((hb & 0x7f) <= 0x43)) - ); - } - } - else - { - XP_ASSERT(0); - } - *out++ = '?'; /* error handling */ - *out = '?'; /* error handling */ - n = 2; - break; - - case 4: - hb = obj->bytes[2]; - lb = obj->bytes[3]; - if(((0x00FE >= hb) && ( hb >= 0x00A1)) && - ((0x00FE >= lb) && ( lb >= 0x00A1)) && - ((0x00B0 >= obj->bytes[1]) && ( obj->bytes[1] >= 0x00A1)) - ) - { - uint16 big5; - uint8 plane = obj->bytes[1] - 0xA0; - uint16 cns = ((hb & 0x7F) << 8) | (lb & 0x7F); - if(intl_convcnstobig5(cns, plane, &big5)) - { - *out++ = (unsigned char)((big5 >> 8) & 0xFF); - *out = (unsigned char)(big5 & 0x00FF); - return 2; - } - else - { - /* do not assert if it failed into some range we know there are no conversion */ - XP_ASSERT(( 0x72 <= (hb & 0x7f) ) && ( 2 == plane)); - } - } - else - { - XP_ASSERT(0); - } - *out++ = '?'; /* error handling */ - *out = '?'; /* error handling */ - n = 2; - break; - - default: - XP_ASSERT(0); - n = 0; - break; - } - return n; -} -/* ------------------------------------------------------------------------------------------ */ -PRIVATE XP_Bool intl_convbig5tocns(uint16 big5, uint16* cns, uint8* cnsplane) -{ - uint16 big5seq = BIG5TOSEQ(big5); - uint32 l,m,r; - - /* do binary search to the table */ - l=0; - r= ((sizeof(big5_map) / sizeof(big5tocns))-1); - m= (l+r)/2; ; - - while(1) - { - if( (big5_map[m].big5fromseq <= big5seq ) && (big5seq <= big5_map[m].big5toseq ) ) - { - uint16 cnsseq = big5_map[m].cnsfromseq + big5seq - big5_map[m].big5fromseq; - *cns = SEQTOCNS(cnsseq); - *cnsplane = big5_map[m].cnsplane; - return TRUE; - } - - if( (l > m) || ( m > r)) - return FALSE; - - if( big5seq <= big5_map[m].big5fromseq ) - { - r = m - 1; - } else { - l = m + 1; - } - m = (l+r) >> 1; - } - return FALSE; -} -/* ------------------------------------------------------------------------------------------ */ -PRIVATE XP_Bool intl_convcnstobig5(uint16 cns, uint8 cnsplane, uint16* big5) -{ - uint16 cnsseq = CNSTOSEQ(cns); - cnstobig5 *map; - uint32 l,m,r; - - if((cnsplane > 4) || (cnsplane <= 0 )) - return FALSE; - - map = cns_map[cnsplane - 1]; - - /* do binary search to the table */ - l=0; - r= cns_map_size[cnsplane -1] - 1; - m= (l+r)/2; ; - - while(1) - { - if( (map[m].cnsfromseq <= cnsseq ) && (cnsseq <= map[m].cnstoseq ) ) - { - uint16 big5seq = map[m].big5fromseq + cnsseq - map[m].cnsfromseq; - *big5 = SEQTOBIG5(big5seq); - return TRUE; - } - - if( (l > m) || ( m > r)) - return FALSE; - - if( cnsseq <= map[m].cnsfromseq ) - { - r = m - 1; - } else { - l = m + 1; - } - m = (l+r) >> 1; - } - - return FALSE; -} -/* ------------------------------------------------------------------------------------------ */ -PRIVATE uint32 intl_same_outsize(uint32 insize) -{ - return insize + 1; -} -/* ------------------------------------------------------------------------------------------ */ -PRIVATE uint32 intl_x2_outsize(uint32 insize) -{ - return 2 * insize + 1; -} - -/* -------------------------------------------------------------------- */ -PRIVATE void intl_fc_restore_conv_state( CCCDataObject obj, uint32 *st1, uint32 *st2) -{ - - *st1 = INTL_GetCCCJismode(obj); - *st2 = INTL_GetCCCCvtflag(obj); -} -/* -------------------------------------------------------------------- */ -PRIVATE void intl_fc_save_conv_state( CCCDataObject obj, uint32 st1, uint32 st2) -{ - INTL_SetCCCJismode(obj, st1); - INTL_SetCCCCvtflag(obj, st2); -} -/* -------------------------------------------------------------------- */ -PRIVATE unsigned char* intl_fc_report_out_of_memory(CCCDataObject obj) -{ - INTL_SetCCCRetval( obj, MK_OUT_OF_MEMORY ); - return NULL; -} -/* -------------------------------------------------------------------- */ -PRIVATE unsigned char* intl_fc_return_buf_and_len( CCCDataObject obj, unsigned char *out, int32 outlen) -{ - XP_ASSERT(out); - XP_ASSERT(outlen >= 0); - - INTL_SetCCCLen(obj, outlen); - - return out; -} -/* -------------------------------------------------------------------- */ -PRIVATE unsigned char* -intl_fc_conv_generic( CCCDataObject obj, const unsigned char *in, int32 insize, CVTable* vtbl) -{ - - char unsigned *outbuf; - char unsigned *out; - int32 i; - int32 outlen = 0; - int32 outalloclen = 0; - void *state; - - XP_ASSERT(insize >= 0); - XP_ASSERT(in); - - /* copy the state information from CCCDataObject into state */ - { /* - We need to do all this because currently CCCDataObject - static init itself in the table and there are no destroy routine - Once we remove those bad OO code we could just use - state as the object instead of copy date between - CCCDataObject and sate - */ - uint32 st1, st2; - vtbl->restore_conv_state(obj, &st1, &st2); - state = vtbl->state_create(); - XP_ASSERT(NULL != state); - vtbl->state_init(state, st1, st2); - } - - /* Try to allocate memory */ - outalloclen = vtbl->outsize(insize); - XP_ASSERT(outalloclen >= 0); - - outbuf = (unsigned char*) XP_ALLOC( outalloclen ); - - /* in case we cannot allocate memory */ - XP_ASSERT( NULL != outbuf ); - if((unsigned char*) NULL == outbuf ) - return vtbl->report_out_of_memory(obj); - - for(out=outbuf, i = 0 ; i < insize ; i++, in++) - { - int32 genlen; - if( vtbl->scan(state, *in )) - { - genlen = vtbl->generate(state, out); - - XP_ASSERT( genlen >= 0 ); - - out += genlen; - outlen += genlen; - - /* vtbl->outsize should ensure us that this is always true */ - XP_ASSERT(outlen <= outalloclen); - } - } - *out = '\0'; /* null terminate */ - - { - uint32 st1, st2; - vtbl->state_get_value(state, &st1, &st2); - vtbl->save_conv_state(obj, st1, st2); - vtbl->state_destroy(state); - } - - return vtbl->return_buf_and_len(obj, outbuf, out - outbuf); -} -/* -------------------------------------------------------------------- */ -MODULE_PRIVATE unsigned char* -mz_euctwtob5( CCCDataObject obj, const unsigned char *in, int32 insize) -{ - return intl_fc_conv_generic(obj, in, insize, &intl_euctw_b5_vtbl); -} -/* -------------------------------------------------------------------- */ -MODULE_PRIVATE unsigned char* -mz_b5toeuctw( CCCDataObject obj, const unsigned char *in, int32 insize) -{ - return intl_fc_conv_generic(obj, in, insize, &intl_b5_euctw_vtbl); -} diff --git a/mozilla/lib/libi18n/cns2b5.c b/mozilla/lib/libi18n/cns2b5.c deleted file mode 100644 index fb91a5464be..00000000000 --- a/mozilla/lib/libi18n/cns2b5.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* cns2b5.c */ - - -#ifdef FEATURE_BIG5CNS -#include "cns2b5.i00" -#else -#ifdef OSF1 -static int dumbcc = 0; /* The 3.2 compiler aborts when there's "nothing to compile", and 4.0 warns. This fixes both problems. */ -#endif -#endif diff --git a/mozilla/lib/libi18n/country.c b/mozilla/lib/libi18n/country.c deleted file mode 100644 index 7eada8e7303..00000000000 --- a/mozilla/lib/libi18n/country.c +++ /dev/null @@ -1,385 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ - -#include "intlpriv.h" - - -/* Mapping table between platform code and ISO code. - */ -typedef struct -{ - char iso_code[6]; - unsigned short win_langid; - unsigned short mac_lang; - unsigned short mac_region; -} ISO_Lang_Country_To_Platform; - -static ISO_Lang_Country_To_Platform iso_mapping_table[] = { - {"af-ZA", 0x0436, 32767, 32767}, - {"ar-AE", 0x3801, 32767, 32767}, - {"ar-BH", 0x3c01, 32767, 32767}, - {"ar-DZ", 0x1401, 32767, 32767}, - {"ar-EG", 0x0c01, 32767, 32767}, - {"ar-IQ", 0x0801, 32767, 32767}, - {"ar-JO", 0x2c01, 32767, 32767}, - {"ar-KW", 0x3401, 32767, 32767}, - {"ar-LB", 0x3001, 32767, 32767}, - {"ar-LY", 0x1001, 32767, 32767}, - {"ar-MA", 0x1801, 32767, 32767}, - {"ar-OM", 0x2001, 32767, 32767}, - {"ar-QA", 0x4001, 32767, 32767}, - {"ar-SA", 0x0401, 32767, 32767}, - {"ar-SY", 0x2801, 32767, 32767}, - {"ar-TN", 0x1c01, 32767, 32767}, - {"ar-YE", 0x2401, 32767, 32767}, - {"az-AZ", 0x042c, 32767, 32767}, - {"az-AZ", 0x082c, 32767, 32767}, - {"be-BY", 0x0423, 32767, 32767}, - {"bg-BG", 0x0402, 32767, 32767}, - {"ca-ES", 0x0403, 32767, 32767}, - {"cs-CZ", 0x0405, 32767, 32767}, - {"da-DK", 0x0406, 32767, 32767}, - {"de-AT", 0x0c07, 32767, 32767}, - {"de-CH", 0x0807, 32767, 32767}, - {"de-DE", 0x0407, 32767, 32767}, - {"de-LI", 0x1407, 32767, 32767}, - {"de-LU", 0x1007, 32767, 32767}, - {"el-GR", 0x0408, 32767, 32767}, - {"en-AU", 0x0c09, 32767, 32767}, - {"en-BZ", 0x2809, 32767, 32767}, - {"en-CA", 0x1009, 32767, 32767}, - {"en-CB", 0x2409, 32767, 32767}, - {"en-GB", 0x0809, 32767, 32767}, - {"en-IE", 0x1809, 32767, 32767}, - {"en-JM", 0x2009, 32767, 32767}, - {"en-NZ", 0x1409, 32767, 32767}, - {"en-PH", 0x3409, 32767, 32767}, - {"en-TT", 0x2c09, 32767, 32767}, - {"en-US", 0x0409, 0, 0}, - {"en-ZA", 0x1c09, 32767, 32767}, - {"en-ZW", 0x3009, 32767, 32767}, - {"es-AR", 0x2c0a, 32767, 32767}, - {"es-BO", 0x400a, 32767, 32767}, - {"es-CL", 0x340a, 32767, 32767}, - {"es-CO", 0x240a, 32767, 32767}, - {"es-CR", 0x140a, 32767, 32767}, - {"es-DO", 0x1c0a, 32767, 32767}, - {"es-EC", 0x300a, 32767, 32767}, - {"es-ES", 0x040a, 32767, 32767}, - {"es-ES", 0x0c0a, 32767, 32767}, - {"es-GT", 0x100a, 32767, 32767}, - {"es-HN", 0x480a, 32767, 32767}, - {"es-MX", 0x080a, 32767, 32767}, - {"es-NI", 0x4c0a, 32767, 32767}, - {"es-PA", 0x180a, 32767, 32767}, - {"es-PE", 0x280a, 32767, 32767}, - {"es-PR", 0x500a, 32767, 32767}, - {"es-PY", 0x3c0a, 32767, 32767}, - {"es-SV", 0x440a, 32767, 32767}, - {"es-UY", 0x380a, 32767, 32767}, - {"es-VE", 0x200a, 32767, 32767}, - {"et-EE", 0x0425, 32767, 32767}, - {"eu-ES", 0x042d, 32767, 32767}, - {"fa-IR", 0x0429, 32767, 32767}, - {"fi-FI", 0x040b, 32767, 32767}, - {"fo-FO", 0x0438, 32767, 32767}, - {"fr-BE", 0x080c, 32767, 32767}, - {"fr-CA", 0x0c0c, 32767, 32767}, - {"fr-CH", 0x100c, 32767, 32767}, - {"fr-FR", 0x040c, 32767, 32767}, - {"fr-LU", 0x140c, 32767, 32767}, - {"fr-MC", 0x180c, 32767, 32767}, - {"hr-HR", 0x041a, 32767, 32767}, - {"hu-HU", 0x040e, 32767, 32767}, - {"id-ID", 0x0421, 32767, 32767}, - {"is-IS", 0x040f, 32767, 32767}, - {"it-CH", 0x0810, 32767, 32767}, - {"it-IT", 0x0410, 32767, 32767}, - {"iw-IL", 0x040d, 32767, 32767}, - {"ja-JP", 0x0411, 32767, 32767}, - {"kk-KZ", 0x043f, 32767, 32767}, - {"ko-KR", 0x0412, 32767, 32767}, - {"lt-LT", 0x0427, 32767, 32767}, - {"lt-LT", 0x0827, 32767, 32767}, - {"lv-LV", 0x0426, 32767, 32767}, - {"mk-MK", 0x042f, 32767, 32767}, - {"ms-BN", 0x083e, 32767, 32767}, - {"ms-MY", 0x043e, 32767, 32767}, - {"nl-BE", 0x0813, 32767, 32767}, - {"nl-NL", 0x0413, 32767, 32767}, - {"no-NO", 0x0414, 32767, 32767}, - {"no-NO", 0x0814, 32767, 32767}, - {"pl-PL", 0x0415, 32767, 32767}, - {"pt-BR", 0x0416, 32767, 32767}, - {"pt-PT", 0x0816, 32767, 32767}, - {"ro-RO", 0x0418, 32767, 32767}, - {"ru-RU", 0x0419, 32767, 32767}, - {"sk-SK", 0x041b, 32767, 32767}, - {"sl-SI", 0x0424, 32767, 32767}, - {"sq-AL", 0x041c, 32767, 32767}, - {"sr-SP", 0x081a, 32767, 32767}, - {"sr-SP", 0x0c1a, 32767, 32767}, - {"sv-FI", 0x081d, 32767, 32767}, - {"sv-SE", 0x041d, 32767, 32767}, - {"sw-KE", 0x0441, 32767, 32767}, - {"th-TH", 0x041e, 32767, 32767}, - {"tr-TR", 0x041f, 32767, 32767}, - {"tt-TA", 0x0444, 32767, 32767}, - {"uk-UA", 0x0422, 32767, 32767}, - {"ur-PK", 0x0420, 32767, 32767}, - {"uz-UZ", 0x0443, 32767, 32767}, - {"uz-UZ", 0x0843, 32767, 32767}, - {"vi-VN", 0x042a, 32767, 32767}, - {"zh-CN", 0x0804, 32767, 32767}, - {"zh-HK", 0x0c04, 32767, 32767}, - {"zh-MO", 0x1404, 32767, 32767}, - {"zh-SG", 0x1004, 32767, 32767}, - {"zh-TW", 0x0404, 32767, 32767}, - {"", 0, 0, 0} -}; - - - -static XP_Bool MatchPlatformId(ISO_Lang_Country_To_Platform *entry, XP_Bool bLanguage, - unsigned short platformIdNum, char *platformIdStr) -{ -#if defined(XP_WIN) - return platformIdNum == entry->win_langid; -#elif defined(XP_MAC) - return bLanguage ? (platformIdNum == entry->mac_lang) : (platformIdNum == entry->mac_region); -#elif defined(XP_UNIX) - /* implement XFE code here */ -#endif - XP_ASSERT(0); /* platform not supported */ - return FALSE; -} - -static XP_Bool MatchISOCode(ISO_Lang_Country_To_Platform *entry, char *ISOCode) -{ - return (XP_STRCMP(entry->iso_code, ISOCode) == 0); -} - -PUBLIC const char *INTL_PlatformIdToISOCode(unsigned short platformIdNum, char *platformIdStr, XP_Bool bLanguage) -{ - ISO_Lang_Country_To_Platform *tmpPtr = iso_mapping_table; - - - while (tmpPtr->iso_code[0]) - { - if (MatchPlatformId(tmpPtr, bLanguage, platformIdNum, platformIdStr)) - break; - tmpPtr++; - } -#ifdef DEBUG -#ifdef XP_WIN - /* Not found in the table, this is usually ok as EnumSystemLocales() passes unavailable langid - * even called with LCID_INSTALLED. - * For debugging, we verify by calling GetLocaleInfo(). If that API works then it means the table is missing the entry. - */ - if(!tmpPtr->iso_code[0]) - { - char locale_string[128]; - - XP_ASSERT( GetLocaleInfo(platformIdNum, LOCALE_SENGLANGUAGE, - locale_string, sizeof(locale_string)) == 0 ); - } -#else - XP_ASSERT(tmpPtr->iso_code[0]); -#endif -#endif /* DEBUG */ - - return tmpPtr->iso_code; - } - -PUBLIC char *INTL_GetLanguageCountry(INTL_LanguageCountry_Selector selector) -{ -/* return constants until FE implemented */ -#if defined(XP_WIN) - return FE_GetLanguageCountry(selector); -#else - switch (selector) - { - case INTL_LanguageSel: - case INTL_LanguageCollateSel: - case INTL_LanguageMonetarySel: - case INTL_LanguageNumericSel: - case INTL_LanguageTimeSel: - return XP_STRDUP("en"); - case INTL_CountrySel: - case INTL_CountryCollateSel: - case INTL_CountryMonetarySel: - case INTL_CountryNumericSel: - case INTL_CountryTimeSel: - return XP_STRDUP("US"); - case INTL_ALL_LocalesSel: - return XP_STRDUP("en-US,en-GB,fr-FR"); - default: - return XP_STRDUP(""); - } -#endif -} - -/* FE implementations, for now put them here for potability. */ -#if defined(XP_WIN) -/* Definitions of states to check if API supports ISO code. */ -typedef enum -{ - kAPI_ISONAME_NotInitialzied, - kAPI_ISONAME_Supported, - kAPI_ISONAME_NotSupported -} STATE_API_Support_ISONAME; - -static STATE_API_Support_ISONAME bAPI_Support_ISONAME = kAPI_ISONAME_NotInitialzied; -static BOOL API_Support_ISONAME() -{ - char locale_string[128]; - - return GetLocaleInfo(GetUserDefaultLCID(), LOCALE_SISO639LANGNAME, - locale_string, sizeof(locale_string)) != 0; -} - -/* Variables and callbacks for construct a string of all installed locales. */ -static char *locale_buf = NULL; -static int locale_num =0; -BOOL CALLBACK EnumLocalesProc0(LPTSTR lpLocaleString) -{ - char locale_string[128]; - char *endptr; - LCID lcid = (LCID) strtol(lpLocaleString, &endptr, 16); /* the argument is in hex string */ - - if (GetLocaleInfo(lcid, LOCALE_SENGLANGUAGE, locale_string, sizeof(locale_string))) - locale_num++; - - return TRUE; -} -BOOL CALLBACK EnumLocalesProc(LPTSTR lpLocaleString) -{ - char locale_string[128]; - char *endptr; - LCID lcid = (LCID) strtol(lpLocaleString, &endptr, 16); /* the argument is in hex string */ - - if (bAPI_Support_ISONAME == kAPI_ISONAME_Supported) - { - if (GetLocaleInfo(lcid, LOCALE_SISO639LANGNAME, locale_string, sizeof(locale_string))) - { - XP_STRCAT(locale_buf, locale_string); - XP_STRCAT(locale_buf, "-"); - if (GetLocaleInfo(lcid, LOCALE_SISO3166CTRYNAME, locale_string, sizeof(locale_string))) - { - XP_STRCAT(locale_buf, locale_string); - XP_STRCAT(locale_buf, ","); - } - } - } - else - { - const char *iso_code = INTL_PlatformIdToISOCode((unsigned short) LANGIDFROMLCID(lcid), NULL, TRUE); - if (iso_code && iso_code[0]) - { - XP_STRCAT(locale_buf, iso_code); - XP_STRCAT(locale_buf, ","); - } - } - - return TRUE; -} - -static const char *GetAllLocales(void) -{ - int len; - - /* It it possible to re-use the buffer if NT4 or earlier since locales cannot be added - * while the Navigator is running. - */ - XP_FREEIF(locale_buf); - locale_num = 0; - - /* get length and allocate a buffer */ - (void) EnumSystemLocales(EnumLocalesProc0, LCID_INSTALLED); - locale_buf = (char *) XP_ALLOC(locale_num * 6 + 1); - if (locale_buf == NULL) - return ""; - locale_buf[0] = '\0'; - /* copy locale info to the buffer */ - (void) EnumSystemLocales(EnumLocalesProc, LCID_INSTALLED); - /* trim the last comma */ - len = XP_STRLEN(locale_buf); - if (len >= 1) - locale_buf[len-1] = '\0'; - - return (const char *) locale_buf; -} - -char *FE_GetLanguageCountry(INTL_LanguageCountry_Selector selector) -{ - char *name = NULL; - char locale_string[128]; - LCID lcid = GetUserDefaultLCID(); - - /* check if the API supports the ISO code output */ - if (bAPI_Support_ISONAME == kAPI_ISONAME_NotInitialzied) - bAPI_Support_ISONAME = API_Support_ISONAME() ? kAPI_ISONAME_Supported : kAPI_ISONAME_NotSupported; - - switch (selector) - { - case INTL_LanguageSel: - case INTL_LanguageCollateSel: - case INTL_LanguageMonetarySel: - case INTL_LanguageNumericSel: - case INTL_LanguageTimeSel: - if (bAPI_Support_ISONAME == kAPI_ISONAME_Supported) - { - if (GetLocaleInfo(lcid, LOCALE_SISO639LANGNAME, locale_string, sizeof(locale_string)) > 0) - name = XP_STRDUP(locale_string); - } - else - { - name = (char *) INTL_PlatformIdToISOCode((unsigned short) LANGIDFROMLCID(lcid), NULL, TRUE); - XP_ASSERT(name && XP_STRLEN(name)==5); - name = XP_STRDUP(XP_STRNCPY_SAFE(locale_string, name, 3)); /* copy language */ - } - break; - case INTL_CountrySel: - case INTL_CountryCollateSel: - case INTL_CountryMonetarySel: - case INTL_CountryNumericSel: - case INTL_CountryTimeSel: - if (bAPI_Support_ISONAME == kAPI_ISONAME_Supported) - { - if (GetLocaleInfo(lcid, LOCALE_SISO3166CTRYNAME, locale_string, sizeof(locale_string)) > 0) - name = XP_STRDUP(locale_string); - } - else - { - name = (char *) INTL_PlatformIdToISOCode((unsigned short) LANGIDFROMLCID(lcid), NULL, FALSE); - XP_ASSERT(name && XP_STRLEN(name)==5); - name = XP_STRDUP(XP_STRNCPY_SAFE(locale_string, &name[3], 3)); /* copy country */ - } - break; - case INTL_ALL_LocalesSel: - name = XP_STRDUP(GetAllLocales()); - break; - default: - name = XP_STRDUP(""); - break; - } - - - return name; -} -#endif /* XP_WIN */ diff --git a/mozilla/lib/libi18n/csnamefn.c b/mozilla/lib/libi18n/csnamefn.c deleted file mode 100644 index ef9a9f7bbc8..00000000000 --- a/mozilla/lib/libi18n/csnamefn.c +++ /dev/null @@ -1,213 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* csnamefn.c */ - -#include "intlpriv.h" - -extern csname2id_t csname2id_tbl[]; - -/* for XP_GetString() */ -#include "xpgetstr.h" -extern int XP_DOCINFO_1; -extern int XP_DOCINFO_2; -extern int XP_DOCINFO_3; -extern int XP_DOCINFO_4; - -/*#include "allxpstr.h"*/ - -PUBLIC int16 -INTL_CharSetNameToID(char *charset) -{ - csname2id_t *csn2idp; - int16 csid; - - /* Parse the URL charset string for the charset ID. - * If no MIME Content-Type charset pararm., default. - * HTML specifies ASCII, but let user override cuz - * of prior conventions (i.e. Japan). - */ - csn2idp = csname2id_tbl; - csid = csn2idp->cs_id; /* 1st entry is default codeset ID */ - - if (charset != NULL) { /* Linear search for charset string */ - while (*(csn2idp->cs_name) != '\0') { - if (strcasecomp(charset, (char *)csn2idp->cs_name) == 0) { - return(csn2idp->cs_id); - } - csn2idp++; - } - } - return(csn2idp->cs_id); /* last entry is CS_UNKNOWN */ -} -PUBLIC unsigned char *INTL_CsidToCharsetNamePt(int16 csid) -{ - csname2id_t *csn2idp; - - csid &= ~CS_AUTO; - csn2idp = &csname2id_tbl[1]; /* First one is reserved, skip it. */ - csid &= 0xff; - - /* Linear search for charset string */ - while (*(csn2idp->cs_name) != '\0') { - if ((csn2idp->cs_id & 0xff) == csid) - return csn2idp->cs_name; - csn2idp++; - } - return (unsigned char *)""; -} - -PUBLIC unsigned char *INTL_CsidToJavaCharsetNamePt(int16 csid) -{ - csname2id_t *csn2idp; - - csn2idp = &csname2id_tbl[1]; /* First one is reserved, skip it. */ - csid &= 0xff; - - /* Linear search for charset string */ - while (*(csn2idp->cs_name) != '\0') { - if ((csn2idp->cs_id & 0xff) == csid) - return csn2idp->java_name; - csn2idp++; - } - return (unsigned char *)""; -} - - -PUBLIC void -INTL_CharSetIDToName(int16 csid, char *charset) -{ - if (charset) { - strcpy(charset,(char *)INTL_CsidToCharsetNamePt(csid)); - } -} - -PUBLIC const char* -INTL_CharsetCorrection(const char* charsetname) -{ - int16 csid = INTL_CharSetNameToID(charsetname); - if((CS_GB2312_11 == csid) || (CS_GB2312 == csid)) - return (char*) INTL_CsidToCharsetNamePt(CS_GB_8BIT); - if((CS_KSC5601 == csid) || (CS_KSC5601_11 == csid)) - return (char*) INTL_CsidToCharsetNamePt(CS_KSC_8BIT); - if(CS_X_BIG5 == csid) - return (char*) INTL_CsidToCharsetNamePt(CS_BIG5); - return NULL; -} -PUBLIC void -INTL_CharSetIDToJavaName(int16 csid, char *charset) -{ - if (charset) { - strcpy(charset,(char *)INTL_CsidToJavaCharsetNamePt(csid)); - } -} - -PUBLIC const char* PR_CALLBACK -INTL_CharSetIDToJavaCharSetName(int16 csid) { - return (char *)INTL_CsidToJavaCharsetNamePt(csid); -} - -PUBLIC char * -INTL_CharSetDocInfo(iDocumentContext context) -{ - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(context); - register int16 doc_csid = INTL_GetCSIDocCSID(c); - register csname2id_t *csn2idp; - char *s = NULL; - int detected = 0; - - if (doc_csid == CS_DEFAULT) { - doc_csid = INTL_DefaultDocCharSetID(context) & ~CS_AUTO; /* Get CSID from prefs */ - } else if (doc_csid & CS_AUTO) { - doc_csid &= ~CS_AUTO; /* mask off bit for name lookup */ - detected = 1; - } else { - StrAllocCopy(s, INTL_GetCSIMimeCharset(c)); /* string from MIME header */ - - if (doc_csid == CS_UNKNOWN) - StrAllocCat(s, XP_GetString(XP_DOCINFO_1)); - return(s); - } - /* Look up name for default & autodetected CSIDs */ -#if defined(XP_WIN) || defined(XP_OS2) - csn2idp = &csname2id_tbl[1] ; /* skip first default one */ - for (; *(csn2idp->cs_name) != '\0'; csn2idp++) -#else - for (csn2idp = csname2id_tbl; *(csn2idp->cs_name) != '\0'; csn2idp++) -#endif - { - if (doc_csid == csn2idp->cs_id) { - StrAllocCopy(s, (char *)csn2idp->cs_name); - if (detected) - StrAllocCat(s, XP_GetString(XP_DOCINFO_2)); - else - StrAllocCat(s, XP_GetString(XP_DOCINFO_3)); - return(s); - } - } - StrAllocCopy(s, INTL_GetCSIMimeCharset(c)); /* string from MIME header */ - StrAllocCat(s, XP_GetString(XP_DOCINFO_4)); - return (s); -} - - - - -#if defined(XP_WIN) || defined(XP_OS2) - - -/* - This routine will change the default URL charset to - newCharset, BTW newCharset is passed from UI. -*/ -void -FE_ChangeURLCharset(const char *charset) -{ - csname2id_t *csn2idp; - char *cp; - - if (charset == NULL) - return; - - csn2idp = csname2id_tbl; - - cp = (char *)charset; - if (cp) - while (*cp != '\0') { - *cp = tolower(*cp); - cp++; - } - - while (*(csn2idp->cs_name) != '\0') { - if (strcasecomp(charset, (char *)csn2idp->cs_name) == 0) { - INTL_ChangeDefaultCharSetID(csn2idp->cs_id); - return; - } - csn2idp++; - } -} - -void -INTL_ChangeDefaultCharSetID(int16 csid) -{ - csname2id_tbl[0].cs_id = csid; -} - -#endif /* XP_WIN */ - - - diff --git a/mozilla/lib/libi18n/csnametb.c b/mozilla/lib/libi18n/csnametb.c deleted file mode 100644 index 7e02f424ebf..00000000000 --- a/mozilla/lib/libi18n/csnametb.c +++ /dev/null @@ -1,349 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* csnametb.c */ - -#include "intlpriv.h" - -/* Charset names and aliases from RFC 1700. Also encloded equivelend Java encoding names. Names are case - * insenstive. Currently searches table linearly, so keep commonly used names at the beginning. - */ -MODULE_PRIVATE csname2id_t csname2id_tbl[] = { - /* default if not specified */ - {"x-default", "", CS_DEFAULT}, /* or unknown charset */ - - {"us-ascii", "8859_1", CS_ASCII}, - {"iso-8859-1", "8859_1", CS_LATIN1}, - {"iso-2022-jp", "JIS", CS_JIS}, - {"iso-2022-jp-2", "JIS", CS_JIS}, /* treat same as iso-2022-jp*/ - {"Shift_JIS", "SJIS", CS_SJIS}, - {"euc-jp", "EUC", CS_EUCJP}, - {"jis_x0208-1983", "JIS0208", CS_JISX0208}, - {"x-jisx0208-11", "JIS0208", CS_JISX0208_11}, - {"jis_x0201", "JIS0208", CS_JISX0201}, - {"jis_x0212-1990", "JIS0208", CS_JISX0212}, - {"x-mac-roman", "MacRoman", CS_MAC_ROMAN}, - {"iso-8859-2", "8859_2", CS_LATIN2}, - {"iso-8859-3", "8859_3", CS_8859_3}, - {"iso-8859-4", "8859_4", CS_8859_4}, - {"iso-8859-5", "8859_5", CS_8859_5}, - {"iso-8859-6", "8859_6", CS_8859_6}, - {"iso-8859-7", "8859_7", CS_8859_7}, - {"iso-8859-8", "8859_8", CS_8859_8}, - {"iso-8859-9", "8859_9", CS_8859_9}, - {"x-mac-ce", "MacCentralEurope", CS_MAC_CE}, - {"EUC-KR", "KSC5601", CS_KSC_8BIT}, /* change to UPPER case per Jungshik Shin request to work around Korean SendMail Decode bug */ - {"ks_c_5601-1987", "KSC5601", CS_KSC5601}, - {"x-ksc5601-11", "KSC5601", CS_KSC5601_11}, - {"gb2312", "GB2312", CS_GB_8BIT}, - {"gb_2312-80", "GB2312", CS_GB2312}, - {"x-gb2312-11", "GB2312", CS_GB2312_11}, - {"x-euc-tw", "", CS_CNS_8BIT}, - {"x-cns11643-1", "CNS11643", CS_CNS11643_1}, - {"x-cns11643-2", "CNS11643", CS_CNS11643_2}, - {"x-cns11643-1110", "CNS11643", CS_CNS11643_1110}, - {"iso-2022-kr", "KR2022", CS_2022_KR}, - {"big5", "Big5", CS_BIG5}, - {"x-x-big5", "Big5", CS_X_BIG5}, - {"tis-620", "TIS620", CS_TIS620}, - {"adobe-symbol-encoding", "Symbol", CS_SYMBOL}, - {"x-dingbats", "DingBats", CS_DINGBATS}, - {"x-dectech", "DECTECH", CS_DECTECH}, - {"koi8-r", "KOI8", CS_KOI8_R}, - {"x-mac-cyrillic", "MacCyrillic", CS_MAC_CYRILLIC}, - {"x-mac-greek", "MacGreek", CS_MAC_GREEK}, - {"x-mac-turkish", "MacTurkish", CS_MAC_TURKISH}, - {"windows-1250", "Cp1250", CS_CP_1250}, - {"windows-1251", "Cp1251", CS_CP_1251}, /* cyrillic */ - {"windows-1253", "Cp1253", CS_CP_1253}, /* greek */ - {"windows-1258", "Cp1258", CS_CP_1258}, - {"UTF-8", "UTF8", CS_UTF8}, - {"UTF-7", "UTF7", CS_UTF7}, - {"ISO-10646-UCS-2", "UCS2", CS_UCS2}, - {"ISO-10646-UCS-4", "UCS4", CS_UCS4}, - {"x-imap4-modified-utf7", "", CS_IMAP4_UTF7}, - {"armscii-8", "", CS_ARMSCII8}, - {"HZ-GB-2312", "", CS_HZ}, - {"ISO-2022-CN", "", CS_ISO_2022_CN}, - {"x-gb13000", "", CS_GB13000}, - {"x-big5-plus", "", CS_BIG5_PLUS}, - {"x-UHC", "", CS_UHC }, /* cp 949 */ - {"x-cns11643-3", "", CS_CNS11643_3}, - {"x-cns11643-4", "", CS_CNS11643_4}, - {"x-cns11643-5", "", CS_CNS11643_5}, - {"x-cns11643-6", "", CS_CNS11643_6}, - {"x-cns11643-7", "", CS_CNS11643_7}, - {"x-cns11643-8", "", CS_CNS11643_8}, - {"x-cns11643-9", "", CS_CNS11643_9}, - {"x-cns11643-10", "", CS_CNS11643_10}, - {"x-cns11643-11", "", CS_CNS11643_11}, - {"x-cns11643-12", "", CS_CNS11643_12}, - {"x-cns11643-13", "", CS_CNS11643_13}, - {"x-cns11643-14", "", CS_CNS11643_14}, - {"x-cns11643-15", "", CS_CNS11643_15}, - {"x-cns11643-16", "", CS_CNS11643_16}, - {"VISCII", "", CS_VIET_VISCII}, - {"VIQR", "", CS_VIET_VIQR}, - {"koi8-u", "", CS_KOI8_U}, - {"iso-ir-111", "", CS_ISO_IR_111}, - {"iso_8859-6-e", "", CS_8859_6_E}, - {"iso_8859-6-i", "", CS_8859_6_I}, - {"iso_8859-8-e", "", CS_8859_8_E}, - {"iso_8859-8-i", "", CS_8859_8_I}, - {"x-johab", "", CS_JOHAB}, /* CP 1361 */ - {"x-johabfont", "", CS_JOHABFONT}, /* hangterm johab font */ - {"x-viet-vps", "", CS_VIET_VPS}, - {"x-viet-tcvn", "", CS_VIET_TCVN}, - {"x-viet-vni", "", CS_VIET_VNI}, - {"T.61-8bit", "", CS_T61}, - - /* Additional OS/2 codepages. These are IANA primary names */ - {"ibm850", "Cp850", CS_CP_850}, /* PC Latin 1 */ - {"ibm852", "Cp852", CS_CP_852}, /* PC Latin 2 */ - {"ibm855", "Cp855", CS_CP_855}, /* PC Cyrillic */ - {"ibm857", "Cp857", CS_CP_857}, /* PC Turkish */ - {"ibm862", "Cp862", CS_CP_862}, /* PC Hebrew */ - {"ibm864", "Cp864", CS_CP_864}, /* PC Arabic */ - {"ibm866", "Cp866", CS_CP_866}, /* PC Russian */ - {"ibm874", "Cp874", CS_CP_874}, /* PC Thai */ - {"windows-1257", "Cp1257", CS_CP_1257}, /* Windows Baltic */ - - /* OS/2 IANA alias entries */ - {"cp850", "", CS_CP_850}, /* PC Latin 1 */ - {"cp852", "", CS_CP_852}, /* PC Latin 2 */ - {"cp857", "", CS_CP_857}, /* PC Turkish */ - {"cp862", "", CS_CP_862}, /* PC Hebrew */ - {"cp864", "", CS_CP_864}, /* PC Arabic */ - {"cp874", "", CS_CP_874}, /* PC Thai */ - - /* aliases for us-ascii: */ - {"ansi_x3.4-1968", "", CS_ASCII}, - {"iso-ir-6", "", CS_ASCII}, - {"ansi_x3.4-1986", "", CS_ASCII}, - {"iso_646.irv:1991", "", CS_ASCII}, - {"ascii", "", CS_ASCII}, - {"iso646-us", "", CS_ASCII}, - {"us", "", CS_ASCII}, - {"ibm367", "", CS_ASCII}, - {"cp367", "", CS_ASCII}, - {"csASCII", "", CS_ASCII}, - - /* aliases for iso_8859-1: */ - {"latin1", "", CS_LATIN1}, - {"iso_8859-1", "", CS_LATIN1}, - {"iso_8859-1:1987", "", CS_LATIN1}, - {"iso-ir-100", "", CS_LATIN1}, - {"l1", "", CS_LATIN1}, - {"ibm819", "", CS_LATIN1}, - {"cp819", "", CS_LATIN1}, - {"ISO-8859-1-Windows-3.0-Latin-1", "", CS_LATIN1}, - {"ISO-8859-1-Windows-3.1-Latin-1", "", CS_LATIN1}, - {"windows-1252", "Cp1252", CS_LATIN1}, - - /* aliases for ISO_8859-2: */ - {"latin2", "", CS_LATIN2}, - {"iso_8859-2", "", CS_LATIN2}, - {"iso_8859-2:1987", "", CS_LATIN2}, - {"iso-ir-101", "", CS_LATIN2}, - {"l2", "", CS_LATIN2}, - {"ISO-8859-2-Windows-Latin-2", "", CS_LATIN2}, - - /* aliases for KS_C_5601-1987: */ - {"ks_c_5601-1987", "", CS_KSC5601}, - {"iso-ir-149", "", CS_KSC5601}, - {"ks_c_5601-1989", "", CS_KSC5601}, - {"ksc_5601", "", CS_KSC5601}, - {"ks_c_5601", "", CS_KSC5601}, - {"korean", "", CS_KSC5601}, - {"csKSC56011987", "", CS_KSC5601}, - - /* aliases for iso-2022-kr: */ - {"csISO2022KR", "", CS_2022_KR}, - - /* aliases for euc-kr: */ - {"csEUCKR", "", CS_KSC_8BIT}, - - /* aliases for iso-2022-jp: */ - {"csISO2022JP", "", CS_JIS}, - - /* aliases for iso-2022-jp-2: */ - {"csISO2022JP2", "", CS_JIS}, - - /* aliases for GB_2312-80: */ - {"iso-ir-58", "", CS_GB2312}, - {"chinese", "", CS_GB2312}, - {"csISO58GB231280", "", CS_GB2312}, - - /* aliases for gb2312: */ - {"csGB2312", "", CS_GB_8BIT}, - {"CN-GB", "", CS_GB_8BIT}, /* Simplified Chinese */ - {"CN-GB-ISOIR165", "", CS_GB_8BIT}, /* Simplified Chinese */ - - /* aliases for big5: */ - {"csBig5", "", CS_BIG5}, - {"CN-Big5", "", CS_BIG5}, /* Traditional Chinese */ - - /* aliases for iso-8859-7: */ - {"iso-ir-126", "", CS_8859_7}, - {"iso_8859-7", "", CS_8859_7}, - {"iso_8859-7:1987", "", CS_8859_7}, - {"elot_928", "", CS_8859_7}, - {"ecma-118", "", CS_8859_7}, - {"greek", "", CS_8859_7}, - {"greek8", "", CS_8859_7}, - {"csISOLatinGreek", "", CS_8859_7}, - - /* aliases for iso-8859-5: */ - {"iso-ir-144", "", CS_8859_5}, - {"iso_8859-5", "", CS_8859_5}, - {"iso_8859-5:1988", "", CS_8859_5}, - {"cyrillic", "", CS_8859_5}, - {"csISOLatinCyrillic", "", CS_8859_5}, - - /* aliases for jis_x0212-1990: */ - {"x0212", "", CS_JISX0212}, - {"iso-ir-159", "", CS_JISX0212}, - {"csISO159JISX02121990", "", CS_JISX0212}, - - /* aliases for jis_x0201: */ - {"x0201", "", CS_JISX0201}, - {"csHalfWidthKatakana", "", CS_JISX0201}, - - /* aliases for koi8-r: */ - {"csKOI8R", "", CS_KOI8_R}, - - /* aliases for koi8-u: */ - {"koi8-ru", "", CS_KOI8_U}, - - /* aliases for Shift_JIS: */ - {"x-sjis", "", CS_SJIS}, - {"ms_Kanji", "", CS_SJIS}, - {"csShiftJIS", "", CS_SJIS}, - {"Windows-31J", "", CS_SJIS}, - - /* aliases for x-euc-jp: */ - {"Extended_UNIX_Code_Packed_Format_for_Japanese", "", CS_EUCJP}, - {"csEUCPkdFmtJapanese", "", CS_EUCJP}, - {"x-euc-jp", "", CS_EUCJP}, - - /* aliases for adobe-symbol-encoding: */ - {"csHPPSMath", "", CS_SYMBOL}, - - /* aliases for iso-8859-5-windows-latin-5: */ - {"csWindows31Latin5", "", CS_CP_1251}, - {"iso-8859-5-windows-latin-5", "", CS_CP_1251}, - {"x-cp1251", "", CS_CP_1251}, - - /* aliases for windows-1250: */ - {"x-cp1250", "", CS_CP_1250}, - - /* aliases for windows-1253: */ - {"x-cp1253", "", CS_CP_1253}, - - /* aliases for windows-1254: */ - {"windows-1254", "", CS_8859_9}, /* turkish */ - - /* aliases for UNICODE-1-1: */ - {"csUnicode", "", CS_UCS2}, - {"csUnicode11", "", CS_UCS2}, - {"ISO-10646-UCS-BASIC", "", CS_UCS2}, - {"csUnicodeASCII", "", CS_UCS2}, - {"ISO-10646-Unicode-Latin1", "", CS_UCS2}, - {"csUnicodeLatin1", "", CS_UCS2}, - {"ISO-10646", "", CS_UCS2}, - {"ISO-10646-J-1", "", CS_UCS2}, - - /* aliases for UNICODE-1-1-UTF-7: */ - {"x-UNICODE-2-0-UTF-7", "", CS_UTF7}, /* This is not in INAN */ - {"UNICODE-1-1-UTF-7", "", CS_UTF7}, - {"UNICODE-2-0-UTF-7", "", CS_UTF7}, /* Appeared in UTF-7 RFC Draft */ - {"csUnicode11UTF7", "", CS_UTF7}, - - /* aliases for UNICODE-1-1-UTF-8: */ - {"UNICODE-1-1-UTF-8", "", CS_UTF8}, - - {"x-user-defined", "", CS_USER_DEFINED_ENCODING}, - {"x-user-defined", "", CS_USRDEF2}, - - {"RESERVED", "", CS_DEFAULT}, /* or unknown charset */ - - /* aliases for VISCII: */ - {"csVISCII", "", CS_VIET_VISCII}, - - /* aliases for VIQR: */ - {"csVIQR", "", CS_VIET_VIQR}, - - /* aliases for ISO-8859-4: */ - {"ISO_8859-4:1988", "", CS_8859_4}, - {"iso-ir-110", "", CS_8859_4}, - {"ISO_8859-4", "", CS_8859_4}, - {"latin4", "", CS_8859_4}, - {"l4", "", CS_8859_4}, - {"csISOLatin4", "", CS_8859_4}, - - /* aliases for ISO-8859-9: */ - {"ISO_8859-9:1989", "", CS_8859_9}, - {"iso-ir-148", "", CS_8859_9}, - {"ISO_8859-9", "", CS_8859_9}, - {"latin5", "", CS_8859_9}, - {"l5", "", CS_8859_9}, - {"csISOLatin5", "", CS_8859_9}, - - /* aliases for ISO-8859-6: */ - {"ISO_8859-6:1987", "", CS_8859_6}, - {"iso-ir-127", "", CS_8859_6}, - {"ISO_8859-6", "", CS_8859_6}, - {"ECMA-114", "", CS_8859_6}, - {"ASMO-708", "", CS_8859_6}, - {"arabic", "", CS_8859_6}, - {"csISOLatinArabic", "", CS_8859_6}, - - /* aliases for ISO_8859-6-i: */ - {"csISO88596I", "", CS_8859_6_I}, - - /* aliases for ISO_8859-6-e: */ - {"csISO88596E", "", CS_8859_6_E}, - - /* aliases for ISO-8859-8: */ - {"iso-ir-138", "", CS_8859_8}, - {"ISO_8859-8", "", CS_8859_8}, - {"hebrew", "", CS_8859_8}, - {"csISOLatinHebrew", "", CS_8859_8}, - - /* aliases for ISO_8859-8-i: */ - {"csISO88598I", "", CS_8859_8_I}, - - /* aliases for ISO_8859-8-e: */ - {"csISO88598E", "", CS_8859_8_E}, - - /* aliases for ISO-IR-111: */ - {"ECMA-cyrillic", "", CS_ISO_IR_111}, - {"csISO111ECMACyrillic", "", CS_ISO_IR_111}, - - /* aliases for TIS-620: */ - {"x-tis-620", "", CS_TIS620}, - - /* aliases for T.61-8bit: */ - {"T.61", "", CS_T61}, - {"iso-ir-103", "", CS_T61}, - {"csISO103T618bit", "", CS_T61}, - - {"", "", CS_UNKNOWN}, -}; - - - diff --git a/mozilla/lib/libi18n/csstrlen.c b/mozilla/lib/libi18n/csstrlen.c deleted file mode 100644 index 51839284ed1..00000000000 --- a/mozilla/lib/libi18n/csstrlen.c +++ /dev/null @@ -1,512 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* csstrlen.c */ -/* - Routines that tell you information about one csid -*/ -#include "intlpriv.h" - -/* csinfoindex and csinfo_tbl work together for performance inprovement. - Whenever you add an entry inside csinfo_tbl, you also need to change - csinfoindex -*/ -#define MAX_FIRSTBYTE_RANGE 3 -typedef struct { - struct { - unsigned char bytes; /* number of bytes for range */ - unsigned char columns; /* number of columns for range */ - unsigned char range[2]; /* Multibyte first byte range */ - } enc[MAX_FIRSTBYTE_RANGE]; -} csinfo_t; - -PRIVATE csinfo_t csinfo_tbl[] = -{ -/* b = bytes; c = columns */ -/* b c range 1 b c range 2 b c range 3 */ - /* 0 */ {{{2,2,{0x81,0x9f}}, {2,2,{0xe0,0xfc}}, {0,0,{0x00,0x00}}}}, /* For SJIS */ - /* 1 */ {{{2,2,{0xa1,0xfe}}, {2,1,{0x8e,0x8e}}, {3,2,{0x8f,0x8f}}}}, /* For EUC_JP */ - /* 2 */ {{{2,2,{0xa1,0xfe}}, {0,0,{0x00,0x00}}, {0,0,{0x00,0x00}}}}, /* For BIG5 GB KSC */ - /* 3 */ {{{2,2,{0xa1,0xfe}}, {4,2,{0x8e,0x8e}}, {0,0,{0x00,0x00}}}}, /* For CNS_8BIT */ - /* 4 */ {{{2,2,{0x21,0x7e}}, {0,0,{0x00,0x00}}, {0,0,{0x00,0x00}}}}, /* For 2 Byte GL */ - /* 5 */ {{{2,2,{0xC0,0xDF}}, {3,2,{0xE0,0xEF}}, {0,0,{0x00,0x00}}}}, /* For UTF8 */ - /* 6 */ {{{2,1,{0xC0,0xCF}}, {0,0,{0x00,0x00}}, {0,0,{0x00,0x00}}}}, /* For UTF8 */ - /* 0 */ {{{0,0,{0x00,0x00}}, {0,0,{0x00,0x00}}, {0,0,{0x00,0x00}}}} -}; -/* Array to index from the lower 8 bits of csid into the index of csinfo_tbl */ -PRIVATE int csinfoindex[256] = -{/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - -1, -1, -1, -1, 0, 1, -1, 2, 2, 3, -1, -1, 2, -1, -1, -1, /* 0x00 */ - -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, 4, 4, -1, 4, 4, -1, /* 0x10 */ - -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x20 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x30 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x40 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x50 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x60 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x70 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x80 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x90 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xa0 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xb0 */ - 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc0 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xd0 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xe0 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xf0 */ -}; -#define INTL_GETTBLINDEX(csid) (csinfoindex[ (csid) & 0x00FF ]) - -PRIVATE csinfo_t* intl_GetInfoTbl(int16 csid) -{ - int idx = INTL_GETTBLINDEX(csid); - if(idx < 0) - return NULL; - else - return &csinfo_tbl[idx]; -} - -/*********************************************************** - INTL_MidTruncateString truncate a string removing the - middle - Input: int16 csid Char Set ID - char *input un-truncated string - - Output: char *output pointer to truncated string buffer - -***********************************************************/ - -PUBLIC void -INTL_MidTruncateString (int16 csid, const char *input, char *output, int max_length) -{ - char *begin_part, *p; - int L = strlen (input); - char *tmp = 0; - int begin_len, mid, rem; - - /* - * If it fits then no need to truncate - */ - if (L <= max_length) - { - strcpy (output, input); - return; - } - - if (input == output) /* if copying in place use tmp buf */ - { - tmp = output; - output = (char *) calloc (1, max_length + 1); - } - - /* - * find the 1st half - */ - mid = (max_length - 3) / 2; /* approx 1st half */ - /* find 1st half to whole char */ - for (begin_part=p=(char*)input; - *p && p<=((char*)input+mid); p=INTL_NextChar(csid, p)) - begin_part = p; /* remember last good point before mid */ - /* exact mid point */ - begin_len = begin_part - input; - - /* - * Copy 1st half - */ - strncpy (output, input, begin_len); - strncpy (output + begin_len, "...", 3); - - /* - * find the remainder - */ - rem = L - mid; /* approx remainder */ - /* find remainder to whole char */ - for (p=begin_part; *p && p<((char*)input+rem); p=INTL_NextChar(csid, p)) - continue; - /* exact remainder */ - rem = p - input; - strncpy (output + begin_len + 3, p, L - rem + 1); - - if (tmp) - { - strncpy (tmp, output, max_length + 1); - free (output); - } -} -/*********************************************************** - Input: int (int16) charsetid Char Set ID - char *pstr Buffer which always point to Multibyte char first byte - or normal single byte char - Output: return next char position -***********************************************************/ -PUBLIC char * INTL_NextChar(int charsetid, char *pstr) -{ - csinfo_t *pInfo ; - unsigned char ch ; - int i; - - if ((INTL_CharSetType(charsetid) == SINGLEBYTE) || (*pstr == 0)) /* If no csid, assume it's not multibyte */ - return pstr + 1; - - ch = *pstr ; - if((pInfo = intl_GetInfoTbl((int16)charsetid)) != NULL) - { - for (i=0; ienc[i].bytes > 0; i++) - { - if ((ch >= pInfo->enc[i].range[0]) && (ch <= pInfo->enc[i].range[1])) - { - int j = 0; - for (j=0; pstr[j] && j < pInfo->enc[i].bytes; j++) - ; - if (j < pInfo->enc[i].bytes) - return pstr+1; - else - return pstr+j; - } - } - return pstr + 1; - } - return pstr + 1; -} - -/******************************************************** - Input: DocumentContext context Window Context - unsigned char ch Buffer which always point to Multibyte char - first byte or normal single byte char - Output: 1, if ch is under ShiftJIS type MultiByte first byte range - 2, if ch is under EUC type MultiByte first byte range - 0, if it's not MultiByte firstbyte -*********************************************************/ - -PUBLIC -int PR_CALLBACK -INTL_IsLeadByte(int charsetid, unsigned char ch) -{ - csinfo_t *pInfo ; - int i; - - if ((INTL_CharSetType(charsetid) == SINGLEBYTE) || (ch == 0)) /* If no csid, assume it's not multibyte */ - return 0; - - if((pInfo = intl_GetInfoTbl((int16)charsetid)) != NULL) - { - for (i=0; ienc[i].bytes > 0; i++) - if ((ch >= pInfo->enc[i].range[0]) && - (ch <= pInfo->enc[i].range[1])) - return pInfo->enc[i].bytes-1; - return 0 ; - } - return 0; -} - -PUBLIC int -INTL_CharLen(int charsetid, unsigned char *pstr) -{ - int i,l; - if ((!pstr) || (!*pstr)) return 0; - l = 1 + INTL_IsLeadByte(charsetid, *pstr); - for(i=1, pstr++ ; (ienc[i].bytes; i++) - { - if ((b >= pInfo->enc[i].range[0]) && - (b <= pInfo->enc[i].range[1])) - { - return pInfo->enc[i].columns; - } - } - } - - return 1; -} - -/******************************************************** - Input: int (int16) charsetid Char Set ID - char *pstr Buffer which always point to Multibyte char - first byte or normal single byte char - int pos byte position - Output: 0, if pos is not on kanji char - 1, if pos is on kanji 1st byte - 2, if pos is on kanji 2nd byte - 3, if pos is on kanji 3rd byte - Note: Current this one only works for ShiftJis type multibyte not for JIS or EUC -*********************************************************/ -PUBLIC int -INTL_NthByteOfChar(int charsetid, char *pstr, int pos) -{ - int i; - int prev; - - pos--; - - if - ( - (INTL_CharSetType(charsetid) == SINGLEBYTE) || - (!pstr) || - (!*pstr) || - (pos < 0) - ) - { - return 0; - } - - i = 0; - prev = 0; - while (pstr[i] && (i <= pos)) - { - prev = i; - i += INTL_CharLen(charsetid, (unsigned char *) &pstr[i]); - } - if (i <= pos) - { - return 0; - } - if (INTL_CharLen(charsetid, (unsigned char *) &pstr[prev]) < 2) - { - return 0; - } - - return pos - prev + 1; -} - -PUBLIC int -INTL_IsHalfWidth(uint16 win_csid, unsigned char *pstr) -{ - int c; - - c = *pstr; - - switch (win_csid) - { - case CS_SJIS: - if ((0xa1 <= c) && (c <= 0xdf)) - { - return 1; - } - break; - case CS_EUCJP: - if (c == 0x8e) - { - return 1; - } - break; - default: - break; - } - - return 0; -} - - -/* - INTL_NextCharIdxInText - Input: csid - window csid - text - point to a text buffer - pos - origional index position - output: index of the position of next character - Called by lo_next_character in layfind.c -*/ -PUBLIC int INTL_NextCharIdxInText(int16 csid, unsigned char *text, int pos) -{ - return pos + INTL_CharLen(csid ,text+pos); -} -/* - INTL_PrevCharIdxInText - Input: csid - window csid - text - point to a text buffer - pos - origional index position - output: index of the position of previous character - Called by lo_next_character in layfind.c -*/ -PUBLIC int INTL_PrevCharIdxInText(int16 csid, unsigned char *text, int pos) -{ - int rev, ff , thislen; - if((INTL_CharSetType(csid) == SINGLEBYTE) ) { - return pos - 1; - } - else - { - /* First, backward to character in ASCII range */ - for(rev=pos - 1; rev > 0 ; rev--) - { - if(((text[rev] & 0x80 ) == 0) && - ((rev + INTL_CharLen(csid ,text+rev)) < pos)) - break; - } - - /* Then forward till we cross the position. */ - for(ff = rev ; ff < pos ; ff += thislen) - { - thislen = INTL_CharLen(csid ,text+ff); - if((ff + thislen) >= pos) - break; - } - return ff; - } -} - -/* - INTL_NextCharIdx - Input: csid - window csid - text - point to a text buffer - pos - 0 based position - output: 0 based next char position - Note: this one works for any position no matter it's legal or not -*/ - -PUBLIC int INTL_NextCharIdx(int16 csid, unsigned char *str, int pos) -{ - int n; - unsigned char *p; - - if((INTL_CharSetType(csid) == SINGLEBYTE) || (pos < 0)) - return pos + 1; - - n = INTL_NthByteOfChar(csid, (char *) str, pos+1); - if (n == 0) - return pos + 1; - - p = str + pos - n + 1; - return pos + INTL_CharLen(csid, p) - n + 1; -} -/* - INTL_PrevCharIdx - Input: csid - window csid - text - point to a text buffer - pos - 0 based position - output: 0 based prev char position - Note: this one works for any position no matter it's legal or not -*/ -PUBLIC int INTL_PrevCharIdx(int16 csid, unsigned char *str, int pos) -{ - int n; - if((INTL_CharSetType(csid) == SINGLEBYTE) || (pos <= 0)) - return pos - 1; -#ifdef DEBUG - n = INTL_NthByteOfChar(csid, (char *) str, pos+1); - if (n > 1) - { - XP_TRACE(("Wrong position passed to INTL_PrevCharIdx")); - pos -= (n - 1); - } -#endif - - pos --; - if ((n = INTL_NthByteOfChar(csid, (char *) str, pos+1)) > 1) - return pos - n + 1; - else - return pos; -} - - - -PUBLIC -int32 INTL_TextByteCountToCharLen(int16 csid, unsigned char* text, uint32 byteCount) -{ - /* quickly return if it is zero */ - if(byteCount == 0 ) - return 0; - if(INTL_CharSetType(csid) == SINGLEBYTE) - { - /* for single byte csid, byteCount equal to charLen */ - return byteCount; - } - else - { - csinfo_t *pInfo ; - if((pInfo = intl_GetInfoTbl(csid)) != NULL) - { - uint32 curByte, curChar; - int thislen; - for(curByte=curChar=0; curByte < byteCount ;curChar++,curByte += thislen) - { - int i; - unsigned char ch = text[curByte]; - /* preset thislen to 1 and looking for the entry for this char */ - for (i=0, thislen = 1; ienc[i].bytes > 0; i++) - { - if ((ch >= pInfo->enc[i].range[0]) && (ch <= pInfo->enc[i].range[1])) - thislen = pInfo->enc[i].bytes; - } - } - return curChar; - } - } - /* it should not come to here */ - XP_ASSERT(byteCount); - return byteCount; -} - - - -PUBLIC -int32 INTL_TextCharLenToByteCount(int16 csid, unsigned char* text, uint32 charLen) -{ - /* quickly return if it is zero */ - if(charLen == 0 ) - return 0; - if(INTL_CharSetType(csid) == SINGLEBYTE) - { - /* for single byte csid, byteCount equal to charLen */ - return charLen; - } - else - { - csinfo_t *pInfo ; - if((pInfo = intl_GetInfoTbl(csid)) != NULL) - { - uint32 curByte, curChar; - int thislen; - for(curByte=curChar=0; curChar < charLen ;curChar++,curByte += thislen) - { - int i; - unsigned char ch = text[curByte]; - /* preset thislen to 1 and looking for the entry for this char */ - for (i=0, thislen = 1; ienc[i].bytes > 0; i++) - { - if ((ch >= pInfo->enc[i].range[0]) && (ch <= pInfo->enc[i].range[1])) - thislen = pInfo->enc[i].bytes; - } - } - return curByte; - } - } - /* it should not come to here */ - XP_ASSERT(charLen); - return charLen; -} - - - - diff --git a/mozilla/lib/libi18n/cvchcode.c b/mozilla/lib/libi18n/cvchcode.c deleted file mode 100644 index a0588880423..00000000000 --- a/mozilla/lib/libi18n/cvchcode.c +++ /dev/null @@ -1,362 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* cvchcode.c */ - -#include "intlpriv.h" -#include "xp.h" -#include "libi18n.h" - - -extern cscvt_t cscvt_tbl[]; - -struct RealCCCDataObject { - struct INTL_CCCFuncs *funcs_pointer; - CCCRADFunc report_autodetect; - void *autodetect_closure; - CCCFunc cvtfunc; - int32 jismode; - int32 cvtflag; /* cvt func dependent flag */ - unsigned char uncvtbuf[UNCVTBUF_SIZE]; - uint16 default_doc_csid; - int16 from_csid; - int16 to_csid; - int retval; /* error value for return */ - int32 len; /* byte len of converted buf */ -}; - - -/* - * report_autodetect - */ -PRIVATE void -CallCCCReportAutoDetect(CCCDataObject obj, uint16 detected_doc_csid) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - if (c->report_autodetect) - (c->report_autodetect)(c->autodetect_closure, obj, detected_doc_csid); -} - -PRIVATE void -SetCCCReportAutoDetect(CCCDataObject obj, - CCCRADFunc report_autodetect, - void *autodetect_closure) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - c->report_autodetect = report_autodetect; - c->autodetect_closure = autodetect_closure; -} - -/* - * cvtfunc - */ -PRIVATE CCCFunc -GetCCCCvtfunc(CCCDataObject obj) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - return c->cvtfunc; -} - -PRIVATE void -SetCCCCvtfunc(CCCDataObject obj, CCCFunc cvtfunc) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - c->cvtfunc = cvtfunc; -} - - -/* - * jismode - */ -PRIVATE int32 -GetCCCJismode(CCCDataObject obj) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - return c->jismode; -} - -PRIVATE void -SetCCCJismode(CCCDataObject obj, int32 jismode) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - c->jismode = jismode; -} - -/* - * cvtflag - */ - -PRIVATE int32 -GetCCCCvtflag(CCCDataObject obj) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - return c->cvtflag; -} - -PRIVATE void -SetCCCCvtflag(CCCDataObject obj, int32 cvtflag) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - c->cvtflag = cvtflag; -} - -/* - * uncvtbuf - */ -PRIVATE unsigned char* -GetCCCUncvtbuf(CCCDataObject obj) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - return c->uncvtbuf; -} - -/* - * len - */ -PRIVATE int32 -GetCCCLen(CCCDataObject obj) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - return c->len; -} - -PRIVATE void -SetCCCLen(CCCDataObject obj, int32 len) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - c->len = len; -} - -/* - * retval - */ -PRIVATE int -GetCCCRetval(CCCDataObject obj) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - return c->retval; -} - -PRIVATE void -SetCCCRetval(CCCDataObject obj, int retval) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - c->retval = retval; -} - -/* - * default_doc_csid - */ -PRIVATE void -SetCCCDefaultCSID(CCCDataObject obj, uint16 default_doc_csid) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - c->default_doc_csid = default_doc_csid; -} - -PRIVATE uint16 -GetCCCDefaultCSID(CCCDataObject obj) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - return c->default_doc_csid; -} - -/* - * from_csid - */ -PRIVATE uint16 -GetCCCFromCSID(CCCDataObject obj) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - return c->from_csid; -} - -PRIVATE void -SetCCCFromCSID(CCCDataObject obj, uint16 from_csid) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - c->from_csid = from_csid; -} - -/* - * to_csid - */ -PRIVATE uint16 -GetCCCToCSID(CCCDataObject obj) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - return c->to_csid; -} - -PRIVATE void -SetCCCToCSID(CCCDataObject obj, uint16 to_csid) -{ - struct RealCCCDataObject *c = (struct RealCCCDataObject *)obj; - - c->to_csid = to_csid; -} - - -PUBLIC unsigned char * -INTL_CallCharCodeConverter(CCCDataObject obj, const unsigned char *buf, - int32 bufsz) -{ - return (INTL_GetCCCCvtfunc(obj))(obj, buf, bufsz); -} - - - /* INTL_GetCharCodeConverter: - * RETURN: 1 if converter found, else 0 - * Also, sets: - * obj->cvtfunc: function handle for chararcter - * code set streams converter - * obj->cvtflag: (Optional) flag to converter - * function - * obj->from_csid: Code set converting from - * obj->to_csid: Code set converting to - * If the arg to_csid==0, then use the the conversion for the - * first conversion entry that matches the from_csid. - */ -PUBLIC int -INTL_GetCharCodeConverter( register int16 from_csid, - register int16 to_csid, - CCCDataObject obj) -{ - register cscvt_t *cscvtp; - - if (from_csid == CS_DEFAULT) - INTL_SetCCCFromCSID(obj, INTL_GetCCCDefaultCSID(obj)); - else - INTL_SetCCCFromCSID(obj, from_csid); - - if(to_csid == 0) /* unknown TO codeset */ - to_csid = INTL_DocToWinCharSetID(from_csid); - INTL_SetCCCToCSID(obj, to_csid); - - /* Look-up conversion method given FROM and TO char. code sets */ - cscvtp = cscvt_tbl; - - while (cscvtp->from_csid) { - if ((cscvtp->from_csid == from_csid) && (cscvtp->to_csid == to_csid)) - break; - cscvtp++; - } - INTL_SetCCCCvtflag(obj, cscvtp->cvtflag); - INTL_SetCCCCvtfunc(obj, cscvtp->cvtmethod); - - return (INTL_GetCCCCvtfunc(obj)) ? 1 : 0; -} - -/* WARNING: THIS TABLE AND THE STRUCT MUST BE IN SYNC WITH EACH OTHER */ -PRIVATE struct INTL_CCCFuncs ccc_funcs = { - /* set_report_autodetect */ SetCCCReportAutoDetect, - /* call_report_autodetect */ CallCCCReportAutoDetect, - /* set_cvtfunc */ SetCCCCvtfunc, - /* get_cvtfunc */ GetCCCCvtfunc, - /* set_jismode */ SetCCCJismode, - /* get_jismode */ GetCCCJismode, - /* set_cvtflag */ SetCCCCvtflag, - /* get_cvtflag */ GetCCCCvtflag, - /* get_uncvtbuf */ GetCCCUncvtbuf, - /* set_default_doc_csid */ SetCCCDefaultCSID, - /* get_default_doc_csid */ GetCCCDefaultCSID, - /* set_from_csid */ SetCCCFromCSID, - /* get_from_csid */ GetCCCFromCSID, - /* set_to_csid */ SetCCCToCSID, - /* get_to_csid */ GetCCCToCSID, - /* set_retval */ SetCCCRetval, - /* get_retval */ GetCCCRetval, - /* set_len */ SetCCCLen, - /* get_len */ GetCCCLen -}; - - -PUBLIC CCCDataObject -INTL_CreateCharCodeConverter() -{ - struct RealCCCDataObject *obj; - obj = XP_NEW_ZAP(struct RealCCCDataObject); - obj->funcs_pointer = &ccc_funcs; - obj->default_doc_csid = INTL_DefaultDocCharSetID(0); - return (CCCDataObject) obj; -} - -PUBLIC void -INTL_DestroyCharCodeConverter(CCCDataObject obj) -{ - XP_FREE(obj); -} - -PRIVATE unsigned char *intl_conv (int16 fromcsid, int16 tocsid, unsigned char *pSrc, uint32 block_size); -PRIVATE -unsigned char *intl_conv(int16 fromcsid, int16 tocsid, unsigned char *pSrc, uint32 block_size) -{ - CCCDataObject obj; - unsigned char *pDest = NULL; - if (NULL != (obj = INTL_CreateCharCodeConverter())) - { - if(0 != INTL_GetCharCodeConverter(fromcsid, tocsid, obj)) - { - CCCFunc cvtfunc; - if (NULL != (cvtfunc = INTL_GetCCCCvtfunc(obj))) - { - if(pSrc == (pDest = (unsigned char *)cvtfunc(obj, pSrc, block_size)) ) - { - /* if it use the same buffer to do conversion, we return NULL */ - pDest = NULL; - } - } - } - INTL_DestroyCharCodeConverter(obj); - } - return pDest ; -} - -PUBLIC unsigned char * -INTL_ConvertLineWithoutAutoDetect (int16 fromcsid, int16 tocsid, unsigned char *pSrc, uint32 block_size) -{ -#ifdef XP_OS2 - if (fromcsid != tocsid) - { - return intl_conv(fromcsid, tocsid, pSrc, block_size); - else - { - return XP_STRDUP(pSrc); - } -#else - return intl_conv(fromcsid, tocsid, pSrc, block_size); -#endif /* XP_OS2 */ -} - - diff --git a/mozilla/lib/libi18n/datefmt.c b/mozilla/lib/libi18n/datefmt.c deleted file mode 100644 index 58af20e466a..00000000000 --- a/mozilla/lib/libi18n/datefmt.c +++ /dev/null @@ -1,117 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ - - -/* datetime.c */ - - - - -#include "libi18n.h" -#include "xp.h" - -/** - * Locale sensitive Date formmating function - * - * Using a given selector, this returns a charset ID. - * Designed to retrieve a non-context dependent charset ID (e.g file system). - * - * @param localeID Specification for the Locale conventions to use. - * @param formatSelector Specification for the type of format to select - * @param time time - * @param utf8Buffer result buffer (in utf8) - * @param bufferLength length of result buffer - * @return PRSuccess when succesful, PRFailure otherwise - */ -PUBLIC PRStatus INTL_FormatTime(INTLLocaleID localeID, - INTL_DateFormatSelector dateFormatSelector, - INTL_TimeFormatSelector timeFormatSelector, - time_t time, - unsigned char* utf8Buffer, - PRUint32 bufferLength) -{ - struct tm* tm_time; - - tm_time = localtime(&time); - - return INTL_FormatTMTime(localeID,dateFormatSelector,timeFormatSelector,tm_time,utf8Buffer,bufferLength); - -} - -PUBLIC PRStatus INTL_FormatTMTime(INTLLocaleID localeID, - INTL_DateFormatSelector dateFormatSelector, - INTL_TimeFormatSelector timeFormatSelector, - const struct tm* time, - unsigned char* utf8Buffer, - PRUint32 bufferLength) -{ - LCID windowsLCID = GetThreadLocale(); - DWORD windowsDateFlags, windowsTimeFlags; - SYSTEMTIME sysTime; - int resultLength; - - /* convert to windows SYSTIME structure */ - sysTime.wYear = (time->tm_year)+1900; /* offset from 1900 */ - sysTime.wMonth = time->tm_mon; - sysTime.wDayOfWeek = time->tm_wday; - sysTime.wDay = time->tm_mday; - sysTime.wHour = time->tm_hour; - sysTime.wMinute = time->tm_min; - sysTime.wSecond = time->tm_sec; - sysTime.wMilliseconds = 0; - - - if (dateFormatSelector!=INTL_DateFormatNone) - { - switch(dateFormatSelector) - { - - case INTL_DateFormatLong: windowsDateFlags = DATE_LONGDATE; - break; - case INTL_DateFormatShort: windowsDateFlags = DATE_SHORTDATE; - break; - default: - return PR_FAILURE; - } - - resultLength = GetDateFormat(windowsLCID,windowsDateFlags,&sysTime,NULL,utf8Buffer,bufferLength); - } - - if (timeFormatSelector!=INTL_TimeFormatNone) - { - switch(timeFormatSelector) - { - case INTL_TimeFormatSeconds: windowsTimeFlags = 0; /* no flags */ - break; - case INTL_TimeFormatNoSeconds: windowsTimeFlags = TIME_NOSECONDS; - break; - case INTL_TimeFormatForce24Hour: windowsTimeFlags = TIME_FORCE24HOURFORMAT; - break; - default: - return PR_FAILURE; - } - - if (dateFormatSelector!=INTL_DateFormatNone) - { - utf8Buffer[resultLength-1]=0x20; /* space character */ - } - GetTimeFormat(windowsLCID,windowsTimeFlags,&sysTime,NULL,utf8Buffer+resultLength,bufferLength-resultLength); - } - - return PR_SUCCESS; -} \ No newline at end of file diff --git a/mozilla/lib/libi18n/dblower.c b/mozilla/lib/libi18n/dblower.c deleted file mode 100644 index 8e1c309b8bc..00000000000 --- a/mozilla/lib/libi18n/dblower.c +++ /dev/null @@ -1,343 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* dblower.c */ -/* - This function contain the doublebyte to lower table which need to implement function in - intlcomp.c. - None of the function in this file should be made public - The interface function is INTL_GetDoubleByteToLowerMap() and it should only be called - inside libi18n -*/ -#include "intlpriv.h" -#include "pintlcmp.h" - -PRIVATE DoubleByteToLowerMap lower_lookup_none[]= -{ - { 0x00, 0x00, 0x00, 0x00, 0x00 } /* Terminator */ -}; - -#ifndef XP_UNIX -PRIVATE DoubleByteToLowerMap lower_lookup_sjis[]= -{ - /* Full-width Latin */ - { 0x82, 0x60, 0x7a, 0x82, 0x81 }, - - /* Map Full-width Hiragana to Full-width Katakana */ - { 0x82, 0x9f, 0x9f, 0x83, 0x41 }, /* A */ - { 0x82, 0xa0, 0xa0, 0x83, 0x41 }, - - { 0x82, 0xa1, 0xa1, 0x83, 0x43 }, /* I */ - { 0x82, 0xa2, 0xa2, 0x83, 0x43 }, - - { 0x82, 0xa3, 0xa3, 0x83, 0x45 }, /* U */ - { 0x82, 0xa4, 0xa4, 0x83, 0x45 }, - - { 0x82, 0xa5, 0xa5, 0x83, 0x47 }, /* E */ - { 0x82, 0xa6, 0xa6, 0x83, 0x47 }, - - { 0x82, 0xa7, 0xa7, 0x83, 0x49 }, /* O */ - { 0x82, 0xa8, 0xa8, 0x83, 0x49 }, - - { 0x82, 0xa9, 0xc0, 0x83, 0x4a }, /* KA - DI */ - - { 0x82, 0xc1, 0xc1, 0x83, 0x63 }, /* TU */ - { 0x82, 0xc2, 0xc2, 0x83, 0x63 }, - - { 0x82, 0xc3, 0xdd, 0x83, 0x64 }, /* DU - MI */ - { 0x82, 0xde, 0xe0, 0x83, 0x80 }, /* MU - MO */ - - { 0x82, 0xe1, 0xe1, 0x83, 0x84 }, /* YA */ - { 0x82, 0xe2, 0xe2, 0x83, 0x84 }, - - { 0x82, 0xe3, 0xe3, 0x83, 0x86 }, /* YU */ - { 0x82, 0xe4, 0xe4, 0x83, 0x86 }, - - { 0x82, 0xe5, 0xe5, 0x83, 0x88 }, /* YO */ - { 0x82, 0xe6, 0xe6, 0x83, 0x88 }, - - { 0x82, 0xe7, 0xeb, 0x83, 0x89 }, /* RA - RO */ - - { 0x82, 0xec, 0xec, 0x83, 0x8f }, /* WA */ - { 0x82, 0xed, 0xed, 0x83, 0x8f }, - - { 0x82, 0xee, 0xf1, 0x83, 0x90 }, /* WI - N */ - - /* Map SMALL Full-width Katakana to Full-width Katakana */ - { 0x83, 0x40, 0x40, 0x83, 0x41 }, /* A */ - { 0x83, 0x42, 0x42, 0x83, 0x43 }, /* I */ - { 0x83, 0x43, 0x44, 0x83, 0x45 }, /* U */ - { 0x83, 0x46, 0x46, 0x83, 0x47 }, /* E */ - { 0x83, 0x48, 0x47, 0x83, 0x49 }, /* O */ - { 0x83, 0x62, 0x62, 0x83, 0x63 }, /* TU */ - { 0x83, 0x83, 0x83, 0x83, 0x84 }, /* YA */ - { 0x83, 0x85, 0x85, 0x83, 0x86 }, /* YU */ - { 0x83, 0x87, 0x87, 0x83, 0x88 }, /* YO */ - { 0x83, 0x8e, 0x8e, 0x83, 0x8f }, /* WA */ - - /* Full-width Greek */ - { 0x83, 0x9f, 0xb6, 0x83, 0xbf }, - - /* Full-width Cyrillic*/ - { 0x84, 0x40, 0x4e, 0x84, 0x70 }, /* Part 1 */ - { 0x84, 0x4f, 0x61, 0x84, 0x80 }, /* Part 2 */ - - { 0x00, 0x00, 0x00, 0x00, 0x00 } /* Terminator */ -}; -#endif -/* Don't #ifdef XP_UNIX for lower_lookup_eucjp. It is also used by GB2312 */ -PRIVATE DoubleByteToLowerMap lower_lookup_eucjp[]= -{ - /* Half-width Katakana */ - { SS2, 0xa6, 0xa6, 0xa5, 0xf2 }, /* WO */ - - { SS2, 0xa7, 0xa7, 0xa5, 0xa2 }, /* A */ - { SS2, 0xa8, 0xa8, 0xa5, 0xa4 }, /* I */ - { SS2, 0xa9, 0xa9, 0xa5, 0xa6 }, /* U */ - { SS2, 0xaa, 0xaa, 0xa5, 0xa8 }, /* E */ - { SS2, 0xab, 0xab, 0xa5, 0xaa }, /* O */ - - { SS2, 0xac, 0xac, 0xa5, 0xe4 }, /* YA */ - { SS2, 0xad, 0xad, 0xa5, 0xe6 }, /* YU */ - { SS2, 0xae, 0xae, 0xa5, 0xe8 }, /* YO */ - { SS2, 0xaf, 0xaf, 0xa5, 0xc4 }, /* TU */ - - { SS2, 0xb1, 0xb1, 0xa5, 0xa2 }, /* A */ - { SS2, 0xb2, 0xb2, 0xa5, 0xa4 }, /* I */ - { SS2, 0xb3, 0xb3, 0xa5, 0xa6 }, /* U */ - { SS2, 0xb4, 0xb4, 0xa5, 0xa8 }, /* E */ - { SS2, 0xb5, 0xb5, 0xa5, 0xaa }, /* O */ - - { SS2, 0xb6, 0xb6, 0xa5, 0xab }, /* KA */ - { SS2, 0xb7, 0xb7, 0xa5, 0xad }, /* KI */ - { SS2, 0xb8, 0xb8, 0xa5, 0xaf }, /* KU */ - { SS2, 0xb9, 0xb9, 0xa5, 0xb1 }, /* KE */ - { SS2, 0xba, 0xba, 0xa5, 0xb3 }, /* KO */ - - { SS2, 0xbb, 0xbb, 0xa5, 0xb5 }, /* SA */ - { SS2, 0xbc, 0xbc, 0xa5, 0xb7 }, /* SI */ - { SS2, 0xbd, 0xbd, 0xa5, 0xb9 }, /* SU */ - { SS2, 0xbe, 0xbe, 0xa5, 0xbb }, /* SE */ - { SS2, 0xbf, 0xbf, 0xa5, 0xbd }, /* SO */ - - { SS2, 0xc0, 0xc0, 0xa5, 0xbf }, /* TA */ - { SS2, 0xc1, 0xc1, 0xa5, 0xc1 }, /* TI */ - { SS2, 0xc2, 0xc2, 0xa5, 0xc4 }, /* TU */ - { SS2, 0xc3, 0xc3, 0xa5, 0xc6 }, /* TE */ - { SS2, 0xc4, 0xc4, 0xa5, 0xc8 }, /* TO */ - - { SS2, 0xc5, 0xc9, 0xa5, 0xca }, /* NA - NO */ - - { SS2, 0xca, 0xca, 0xa5, 0xcf }, /* HA */ - { SS2, 0xcb, 0xcb, 0xa5, 0xd2 }, /* HI */ - { SS2, 0xcc, 0xcc, 0xa5, 0xd5 }, /* HU */ - { SS2, 0xcd, 0xcd, 0xa5, 0xd8 }, /* HE */ - { SS2, 0xce, 0xce, 0xa5, 0xdb }, /* HO */ - - { SS2, 0xcf, 0xd3, 0xa5, 0xde }, /* MA - MO */ - - { SS2, 0xd4, 0xd4, 0xa5, 0xe4 }, /* YA */ - { SS2, 0xd5, 0xd5, 0xa5, 0xe6 }, /* YU */ - { SS2, 0xd6, 0xd6, 0xa5, 0xe8 }, /* YO */ - - { SS2, 0xd7, 0xdb, 0xa5, 0xe9 }, /* RA - RO */ - - { SS2, 0xdc, 0xdc, 0xa5, 0xef }, /* WA */ - - { SS2, 0xdd, 0xdd, 0xa5, 0xf3 }, /* N */ - - /* Full-width Latin */ - { 0xa3, 0xc1, 0xda, 0xa3, 0xe1 }, - - /* Map Full-width Hiragana to Full-width Katakana */ - { 0xa4, 0xa1, 0xa1, 0xa5, 0xa2 }, /* A */ - { 0xa4, 0xa2, 0xa2, 0xa5, 0xa2 }, - - { 0xa4, 0xa3, 0xa3, 0xa5, 0xa4 }, /* I */ - { 0xa4, 0xa4, 0xa4, 0xa5, 0xa4 }, - - { 0xa4, 0xa5, 0xa5, 0xa5, 0xa6 }, /* U */ - { 0xa4, 0xa6, 0xa6, 0xa5, 0xa6 }, - - { 0xa4, 0xa7, 0xa7, 0xa5, 0xa8 }, /* E */ - { 0xa4, 0xa8, 0xa8, 0xa5, 0xa8 }, - - { 0xa4, 0xa9, 0xa9, 0xa5, 0xaa }, /* O */ - { 0xa4, 0xaa, 0xaa, 0xa5, 0xaa }, - - { 0xa4, 0xab, 0xc2, 0xa5, 0xab}, /* KA - DI */ - - { 0xa4, 0xc3, 0xc3, 0xa5, 0xc4 }, /* TU */ - { 0xa4, 0xc4, 0xc4, 0xa5, 0xc4 }, - - { 0xa4, 0xc5, 0xe2, 0xa5, 0xc5 }, /* DU - MO */ - - { 0xa4, 0xe3, 0xe3, 0xa5, 0xe4 }, /* YA */ - { 0xa4, 0xe4, 0xe4, 0xa5, 0xe4 }, - - { 0xa4, 0xe5, 0xe5, 0xa5, 0xe6 }, /* YU */ - { 0xa4, 0xe6, 0xe6, 0xa5, 0xe6 }, - - { 0xa4, 0xe7, 0xe7, 0xa5, 0xe8 }, /* YO */ - { 0xa4, 0xe8, 0xe8, 0xa5, 0xe8 }, - - { 0xa4, 0xe9, 0xed, 0xa5, 0xe9}, /* RA - RO */ - - { 0xa4, 0xee, 0xee, 0xa5, 0xef }, /* WA */ - { 0xa4, 0xef, 0xef, 0xa5, 0xef }, - - { 0xa4, 0xf0, 0xf3, 0xa5, 0xf0 }, /* WI - N */ - - /* Map SMALL Full-width Katakana to Full-width Katakana */ - { 0xa5, 0xa1, 0xa1, 0xa5, 0xa2 }, /* A */ - { 0xa5, 0xa3, 0xa3, 0xa5, 0xa4 }, /* I */ - { 0xa5, 0xa5, 0xa5, 0xa5, 0xa6 }, /* U */ - { 0xa5, 0xa7, 0xa7, 0xa5, 0xa8 }, /* E */ - { 0xa5, 0xa9, 0xa9, 0xa5, 0xaa }, /* O */ - { 0xa5, 0xc3, 0xc3, 0xa5, 0xc4 }, /* TU */ - { 0xa5, 0xe3, 0xe3, 0xa5, 0xe4 }, /* YA */ - { 0xa5, 0xe5, 0xe5, 0xa5, 0xe6 }, /* YU */ - { 0xa5, 0xe7, 0xe7, 0xa5, 0xe8 }, /* YO */ - { 0xa5, 0xee, 0xee, 0xa5, 0xef }, /* WA */ - - /* Full-width Greek */ - { 0xa6, 0xa1, 0xb8, 0xa6, 0xc1 }, - /* Full-width Cyrillic*/ - { 0xa7, 0xa1, 0xc1, 0xa7, 0xd1 }, - - { 0x00, 0x00, 0x00, 0x00, 0x00 } /* Terminator */ -}; -PRIVATE DoubleByteToLowerMap lower_lookup_big5[]= -{ - /* Full-width Latin */ - { 0xa2, 0xcf, 0xe4, 0xa2, 0xe9 }, /* Part 1 A-V */ - { 0xa2, 0xe5, 0xe8, 0xa3, 0x40 }, /* Part 2 W-Z */ - - /* Full-width Greek */ - { 0xa3, 0x44, 0x5b, 0xa3, 0x5c }, - - { 0x00, 0x00, 0x00, 0x00, 0x00 } /* Terminator */ -}; -PRIVATE DoubleByteToLowerMap lower_lookup_cns11643_1[]= -{ - /* Roman Number */ - { 0xa4, 0xab, 0xb4, 0xa6, 0xb5 }, - - /* Full-width Latin */ - { 0xa4, 0xc1, 0xda, 0xa4, 0xdb }, - - /* Full-width Greek */ - { 0xa4, 0xf5, 0xfe, 0xa5, 0xaf }, /* Part 1 Alpha - kappa */ - { 0xa5, 0xa1, 0xae, 0xa5, 0xb9 }, /* Part 2 Lamda - Omega */ - - { 0x00, 0x00, 0x00, 0x00, 0x00 } /* Terminator */ -}; -PRIVATE DoubleByteToLowerMap lower_lookup_ksc5601[]= -{ - /* Full-width Latin */ - { 0xa3, 0xc1, 0xda, 0xa3, 0xe1 }, - - /* Full-width Roman Number */ - { 0xa5, 0xb0, 0xb9, 0xa5, 0xa1 }, - - /* Full-width Greek */ - { 0xa5, 0xc1, 0xd8, 0xa5, 0xe1 }, - - /* Map Full-width Hiragana to Full-width Katakana */ - { 0xaa, 0xa1, 0xa1, 0xab, 0xa2 }, /* A */ - { 0xaa, 0xa2, 0xa2, 0xab, 0xa2 }, - - { 0xaa, 0xa3, 0xa3, 0xab, 0xa4 }, /* I */ - { 0xaa, 0xa4, 0xa4, 0xab, 0xa4 }, - - { 0xaa, 0xa5, 0xa5, 0xab, 0xa6 }, /* U */ - { 0xaa, 0xa6, 0xa6, 0xab, 0xa6 }, - - { 0xaa, 0xa7, 0xa7, 0xab, 0xa8 }, /* E */ - { 0xaa, 0xa8, 0xa8, 0xab, 0xa8 }, - - { 0xaa, 0xa9, 0xa9, 0xab, 0xaa }, /* O */ - { 0xaa, 0xaa, 0xaa, 0xab, 0xaa }, - - { 0xaa, 0xab, 0xc2, 0xab, 0xab}, /* KA - DI */ - - { 0xaa, 0xc3, 0xc3, 0xab, 0xc4 }, /* TU */ - { 0xaa, 0xc4, 0xc4, 0xab, 0xc4 }, - - { 0xaa, 0xc5, 0xe2, 0xab, 0xc5 }, /* DU - MO */ - - { 0xaa, 0xe3, 0xe3, 0xab, 0xe4 }, /* YA */ - { 0xaa, 0xe4, 0xe4, 0xab, 0xe4 }, - - { 0xaa, 0xe5, 0xe5, 0xab, 0xe6 }, /* YU */ - { 0xaa, 0xe6, 0xe6, 0xab, 0xe6 }, - - { 0xaa, 0xe7, 0xe7, 0xab, 0xe8 }, /* YO */ - { 0xaa, 0xe8, 0xe8, 0xab, 0xe8 }, - - { 0xaa, 0xe9, 0xed, 0xab, 0xe9}, /* RA - RO */ - - { 0xaa, 0xee, 0xee, 0xab, 0xef }, /* WA */ - { 0xaa, 0xef, 0xef, 0xab, 0xef }, - - { 0xaa, 0xf0, 0xf3, 0xab, 0xf0 }, /* WI - N */ - - /* Map SMALL Full-width Katakana to Full-width Katakana */ - { 0xab, 0xa1, 0xa1, 0xab, 0xa2 }, /* A */ - { 0xab, 0xa3, 0xa3, 0xab, 0xa4 }, /* I */ - { 0xab, 0xa5, 0xa5, 0xab, 0xa6 }, /* U */ - { 0xab, 0xa7, 0xa7, 0xab, 0xa8 }, /* E */ - { 0xab, 0xa9, 0xa9, 0xab, 0xaa }, /* O */ - { 0xab, 0xc3, 0xc3, 0xab, 0xc4 }, /* TU */ - { 0xab, 0xe3, 0xe3, 0xab, 0xe4 }, /* YA */ - { 0xab, 0xe5, 0xe5, 0xab, 0xe6 }, /* YU */ - { 0xab, 0xe7, 0xe7, 0xab, 0xe8 }, /* YO */ - { 0xab, 0xee, 0xee, 0xab, 0xef }, /* WA */ - - /* Full-width Cyrillic*/ - { 0xac, 0xa1, 0xc1, 0xac, 0xd1 }, - - { 0x00, 0x00, 0x00, 0x00, 0x00 } /* Terminator */ -}; - -MODULE_PRIVATE DoubleByteToLowerMap *INTL_GetDoubleByteToLowerMap(int16 csid) -{ - switch(csid) - { -#ifndef XP_UNIX - case CS_SJIS: - return lower_lookup_sjis; -#else - case CS_EUCJP: - return lower_lookup_eucjp; -#endif - case CS_BIG5: - return lower_lookup_big5; - case CS_CNS_8BIT: - return lower_lookup_cns11643_1; - case CS_GB_8BIT: - return lower_lookup_eucjp; /* The to_lower mapping for GB 2312 and JIS0208 are exactly the same */ - /* We just use the same table here. */ - case CS_KSC_8BIT: - return lower_lookup_ksc5601; - default: - return lower_lookup_none; - } -} - - - diff --git a/mozilla/lib/libi18n/detectu2.c b/mozilla/lib/libi18n/detectu2.c deleted file mode 100644 index c4438bdfd0f..00000000000 --- a/mozilla/lib/libi18n/detectu2.c +++ /dev/null @@ -1,49 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* detectu2.c */ - -#include "intlpriv.h" -#include "xp.h" -#include "libi18n.h" - - -/* - This function returns csid if it finds that the data is UCS-2 or - UCS-2 needs swap. - */ -#define UCS2_GIVEUP_COUNT 512 /* Test at most 512 byte */ -#define UCS2_00_TRIGGER 8 /* Need at least 4 0x00 to make our sample meanful */ -#define UCS2_DETECT_DIFF 4 - -MODULE_PRIVATE int DetectUCS2(CCCDataObject obj, unsigned char *pSrc, int len) -{ - /* need to fix DetectUCS2 to look for UTF8 */ - if(len < 2) return(CS_DEFAULT); - - if(((pSrc[0]<<8) | pSrc[1]) == BYTE_ORDER_MARK) - return(CS_UCS2); - - if(((pSrc[0]<<8) | pSrc[1]) == NEEDS_SWAP_MARK) - return(CS_UCS2_SWAP); - return(CS_DEFAULT); -} - - - - - diff --git a/mozilla/lib/libi18n/doc_ccc.c b/mozilla/lib/libi18n/doc_ccc.c deleted file mode 100644 index f6876bd8063..00000000000 --- a/mozilla/lib/libi18n/doc_ccc.c +++ /dev/null @@ -1,411 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* cvchcode.c */ - -#include "intlpriv.h" -#include "xp.h" -#include "intl_csi.h" -#include "libi18n.h" -#include "katakana.h" - -int16 PeekMetaCharsetTag (char *, uint32); - -/* - * DocumentContext access to creating a - * Character Code Converter - * - * This should be split into two layers: - * 1) a non-DocumentContext access to creating a Character Code Converter - * 2) a DocumentContext interface to above - */ -PUBLIC CCCDataObject -INTL_CreateDocumentCCC(INTL_CharSetInfo c, uint16 default_doc_csid) -{ - CCCDataObject obj; - - /* - * create the CCC object - */ - obj = INTL_CreateCharCodeConverter();; - if (obj == NULL) - return(NULL); - INTL_SetCCCDefaultCSID(obj, default_doc_csid); - - /* - * if we know the doc_csid then get the converter - */ - if (DOC_CSID_KNOWN(INTL_GetCSIDocCSID(c))) - { - (void) INTL_GetCharCodeConverter(INTL_GetCSIDocCSID(c), 0, obj); - XP_ASSERT(INTL_GetCSIWinCSID(c) == INTL_GetCCCToCSID(obj)); - } - else { - /* we know what the default converter is but do not install - * it yet. Wait until the first block and see if we determine - * what the charset is from that block. - */ - } - - return obj; -} - -PUBLIC void INTL_CCCReportMetaCharsetTag(MWContext *context, char *charset_tag) -{ - - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(context); - - INTL_CSIReportMetaCharsetTag(c, charset_tag, context->type); -} - -#ifdef MOZ_MAIL_NEWS - -#if 0 -/* - INTL_ConvWinToMailCharCode - Converts 8bit encoding to 7bit mail encoding. It decides which 7bit and 8bit encoding - to use based on current default language. - input: - char *pSrc; // Source display buffer - output: - char *pDest; // Destination buffer - // pDest == NULL means either conversion fail - // or does OneToOne conversion -*/ -PUBLIC -unsigned char *INTL_ConvWinToMailCharCode(iDocumentContext context, unsigned char *pSrc, uint32 block_size) -{ - CCCDataObject obj; - unsigned char *pDest; - int16 wincsid; - CCCFunc cvtfunc; - - obj = INTL_CreateCharCodeConverter(); - if (obj == NULL) - return NULL; - - wincsid = INTL_DefaultWinCharSetID(context); - /* Converts 8bit Window codeset to 7bit Mail Codeset. */ - (void) INTL_GetCharCodeConverter(wincsid, INTL_DefaultMailCharSetID(wincsid), obj); - - cvtfunc = INTL_GetCCCCvtfunc(obj); - if (cvtfunc) - pDest = (unsigned char *)cvtfunc(obj, pSrc, block_size); - else - pDest = NULL ; - - XP_FREE(obj); - - if (pDest == pSrc) /* converted to input buffer */ - { /* no additional memory been allocated */ - return NULL; - } - return pDest ; -} - - -#endif /* if 0 */ - - -PRIVATE void -mail_report_autodetect(void *closure, CCCDataObject obj, uint16 doc_csid) -{ - iDocumentContext doc_context = (iDocumentContext)closure; - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(doc_context); - - INTL_SetCSIDocCSID(c, doc_csid); - INTL_SetCSIWinCSID(c, INTL_GetCCCToCSID(obj)); -} - -#endif /* MOZ_MAIL_NEWS */ - -#ifndef XP_WIN -#ifndef XP_MAC -/* - * FE_DefaultDocCharSetID - get the UI charset encoding setting - * - * gets the currently selected charset encoding for this document - * (not the global default, not the detected document encoding) - * - */ -uint16 -FE_DefaultDocCharSetID(iDocumentContext context) -{ - uint16 csid; - - /* need to implement a FE_DefaultDocCharSetID() which only returns - the FE default, ignoring the doc_csid in the the context. - The Current INTL_DefaultDocCharSetID - tries to be smart and return the doc_csid if it is known, - which causes a problem in HERE !! - */ -#ifdef REAL_FIX_AFTER_B3 - /* ftang, bstell: Need to change to this code in early 4.0 B4 cycle */ - csid = FE_DefaultDocCharSetID(context); /* Need to implement FE_DefaultDocCharSetID before active this */ - - if((CS_JIS == csid) || (CS_EUCJP == csid) || (CS_SJIS == csid) || - (CS_KSC_8BIT == csid) || (CS_2022_KR == csid)) - { - csid |= CS_AUTO; - } -#else /* 4.0 B3 temp fix */ - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(context); - - csid = INTL_GetCSIDocCSID(c); - if (csid == 0) { - csid = INTL_DefaultDocCharSetID(context); - } -#ifdef MOZ_MAIL_NEWS - else - { - csid = INTL_DefaultMailCharSetID(csid); - /* Turn on the auto converter in case people do receive SJIS mail */ - if((CS_JIS == csid) || (CS_EUCJP == csid) || (CS_SJIS == csid) || - (CS_KSC_8BIT == csid) || (CS_2022_KR == csid)) - { - csid |= CS_AUTO; - } - } -#endif /* MOZ_MAIL_NEWS */ -#endif - return csid; -} -#endif /*XP_MAC*/ -#endif - -#ifdef MOZ_MAIL_NEWS - -/* - INTL_ConvMailToWinCharCode - Converts mail encoding to display charset which is used by current window. - It decides which Display charset to use based on current default language. - input: - iDocumentContext context; the context (window ID) - char *pSrc; // Source buffer - uint32 block_size; the length of the source buffer - output: - char *pDest; // Destination buffer - // pDest == NULL means either conversion fail - // or does OneToOne conversion -*/ -PUBLIC -unsigned char *INTL_ConvMailToWinCharCode(iDocumentContext context, - unsigned char *pSrc, uint32 block_size) -{ - CCCDataObject obj; - unsigned char *pDest; - Stream stream; - CCCFunc cvtfunc; - int16 csid; - - obj = INTL_CreateCharCodeConverter(); - if (obj == NULL) - return 0; - - (void) memset(&stream, 0, sizeof(stream)); - stream.window_id = context; - - csid = FE_DefaultDocCharSetID(context); - - /* Converts 7bit news codeset to 8bit windows Codeset. */ - (void) INTL_GetCharCodeConverter(csid, 0, obj); - - - INTL_SetCCCReportAutoDetect(obj, mail_report_autodetect, context ); - - cvtfunc = INTL_GetCCCCvtfunc(obj); - if (cvtfunc) - pDest = (unsigned char *)cvtfunc(obj, pSrc, block_size); - else - pDest = NULL ; - - XP_FREE(obj); - if (pSrc == pDest) - return NULL ; - return pDest ; -} -#endif /* MOZ_MAIL_NEWS */ - - -#if defined(MOZ_MAIL_COMPOSE) || defined(MOZ_MAIL_NEWS) -/* - This is the ugly hack for Korean News and Mail - Our libmsg code assume mail and news use the same code. - Unfortunately, Korean use different encoding in news and mail - We have to tell the DocToMailCoverter convert to different encoding - according to the reciver. - - Problem 1: - It is easy to decide which encoding we should send if the receipt is - only Newsgroup or only email. But what should we do if the receipt - include both newsgroup and personal address ? - - Currently we always send News encoding if the recipt include - Newsgroup. - - Problem 2: - There are no way I can pass such information to the code between - msgsendp.cpp and msgsend.cpp. So I create such a hack here. - -*/ -static XP_Bool intl_message_to_newsgroup = FALSE; -PUBLIC -void -INTL_MessageSendToNews(XP_Bool toNews) -{ - intl_message_to_newsgroup = toNews; -} - - - -PUBLIC -CCCDataObject -INTL_CreateDocToMailConverter(iDocumentContext context, XP_Bool isHTML, unsigned char *buffer, uint32 buffer_size) -{ - CCCDataObject selfObj; - int16 p_doc_csid = CS_DEFAULT; -#if defined(MOZ_MAIL_NEWS) - int16 mail_news_csid; -#endif - CCCFunc cvtfunc; - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(context); - - /* Ok!! let's create the object here - We need the conversion obj to keep the state information */ - selfObj = INTL_CreateCharCodeConverter(); - if(selfObj == NULL) - return NULL; - - /* First, let's determine the from_csid and to_csid */ - /* It is a TEXT_HTML !!! Let's use our PeekMetaCharsetTag to get a csid */ - if(isHTML) - p_doc_csid = PeekMetaCharsetTag((char*) buffer, buffer_size); - - if(p_doc_csid == CS_DEFAULT) - { - /* got default, try to get the doc_csid from context */ - if((context == 0 ) || (INTL_GetCSIDocCSID(c) == CS_DEFAULT)) - p_doc_csid = INTL_DefaultDocCharSetID(context); - else - p_doc_csid = INTL_GetCSIDocCSID(c); -#ifdef XP_MAC - /* To Make Macintosh happe when there is a HTML Mail composer send - out plain text file. It put the MacRoman text into the temp file and then let this - function load it. Because I change the mac version of INTL_DefaultDocCharSetID() so now - it listen to the front window to tell me which doc csid it is. It is Latin1 in the - case email. But the data is really MacRoman. So we add this hack here. Which only change - the doccsid if it is not HTML - */ - - if(! isHTML) - { - switch(p_doc_csid) - { - case CS_LATIN1: - p_doc_csid = CS_MAC_ROMAN; - break; - case CS_LATIN2: - p_doc_csid = CS_MAC_CE; - break; - case CS_8859_5: - case CS_KOI8_R: - p_doc_csid = CS_MAC_CYRILLIC; - break; - case CS_8859_7: - p_doc_csid = CS_MAC_GREEK; - break; - case CS_8859_9: - p_doc_csid = CS_MAC_TURKISH; - break; - default: - break; - } - } -#endif - - /* The doc_csid from the context (or default) has CS_AUTO bit. */ - /* So let's try to call the auto detection function */ - /* ftang add this: The CS_AUTO is still buggy, */ - if( - (CS_JIS == p_doc_csid) || (CS_SJIS == p_doc_csid) || (CS_EUCJP == p_doc_csid) || - (CS_KSC_8BIT == p_doc_csid) || (CS_2022_KR == p_doc_csid) || - (CS_JIS_AUTO == p_doc_csid) || (CS_SJIS_AUTO == p_doc_csid) || (CS_EUCJP_AUTO == p_doc_csid) || - (CS_KSC_8BIT_AUTO == p_doc_csid) /* || (CS_2022_KR_AUTO == p_doc_csid) */ - ) - { - uint16 default_csid = INTL_DefaultDocCharSetID(context); - - switch(p_doc_csid & ~CS_AUTO) - { - case CS_JIS: - case CS_SJIS: - case CS_EUCJP: - p_doc_csid = intl_detect_JCSID((uint16)(default_csid&~CS_AUTO), buffer, buffer_size); - break; - case CS_KSC_8BIT: - case CS_2022_KR: - p_doc_csid = intl_detect_KCSID((uint16)(default_csid&~CS_AUTO), buffer, buffer_size); - break; - /* Probably need to take care UCS2 / UTF8 and UTF7 here */ - case CS_BIG5: - case CS_CNS_8BIT: - case CS_UTF8: - case CS_UTF7: - case CS_UCS2: - case CS_UCS2_SWAP: - default: - XP_ASSERT(FALSE); - } - } - } -#if defined(MOZ_MAIL_NEWS) - mail_news_csid = (intl_message_to_newsgroup ? INTL_DefaultNewsCharSetID(p_doc_csid) : - INTL_DefaultMailCharSetID(p_doc_csid)); -#endif - /* Now, we get the converter */ - (void) INTL_GetCharCodeConverter(p_doc_csid, -#ifdef MOZ_MAIL_NEWS - (intl_message_to_newsgroup ? - INTL_DefaultNewsCharSetID(p_doc_csid) : - INTL_DefaultMailCharSetID(p_doc_csid)), -#else /* must be MOZ_MAIL_COMPOSE */ - INTL_DefaultMailCharSetID(p_doc_csid), -#endif /* MOZ_MAIL_NEWS */ - selfObj); -#if defined(MOZ_MAIL_NEWS) - /* If we sending JIS then listen the pref setting and decide if we convert - * hankaku (1byte) to zenkaku (2byte) kana. The flag to be checked in - * euc2jis and sjis2jis. - */ - if (CS_JIS == mail_news_csid && INTL_GetSendHankakuKana()) - { - INTL_SetCCCCvtflag_SendHankakuKana(selfObj, TRUE); - } -#endif - - /* If the cvtfunc == NULL, we don't need to do conversion */ - cvtfunc = INTL_GetCCCCvtfunc(selfObj); - if(! (cvtfunc) ) - { - XP_FREE(selfObj); - return NULL; - } - else - return selfObj; -} - -#endif /* MOZ_MAIL_COMPOSE */ diff --git a/mozilla/lib/libi18n/euc2jis.c b/mozilla/lib/libi18n/euc2jis.c deleted file mode 100644 index 1b644c71b51..00000000000 --- a/mozilla/lib/libi18n/euc2jis.c +++ /dev/null @@ -1,244 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* euc2jis.c */ - -#include "intlpriv.h" -#if defined(MOZ_MAIL_NEWS) -#include "katakana.h" -#endif - - -extern int MK_OUT_OF_MEMORY; - - -/* net_euc2jis(obj, eucbuf, eucbufsz) - * Args: - * eucbuf: Ptr to a buf of EUC chars - * eucbufsz: Size in bytes of eucbuf - * obj->eucmode: Ptr to encoding mode, use as arg for next call to - * mz_euc2jis() for rest of current EUC data. First call should - * initialize mode to ASCII (0). - * uncvtbuf: If entire buffer was converted, uncvtbuf[0] will be nul, - * else this points to EUC chars that were NOT converted - * and mz_euc2jis() with additional EUC chars appended. - * Return: - * Returns NULL on failure, otherwise it returns a pointer to a buffer of - * converted characters. Caller must XP_FREE() this memory. - * - * Description: - * - * Allocate destination buffer. - * - * Ouput JIS ESC sequences based upon which EUC code set. - * - * No conversion is needed for ASCII/JIS Roman characters. - * - * Clear 8th bit of 1-byte Half-width Katakana. Half-width Katakana - * is not widely used and its ESC sequence may not be recognized - * by some software. It's use on the internet is discouraged... - * - * Clear 8th bits of 2-byte JIS X 212-1990 chars. JIS-212 - * is not widely used and its ESC sequence may not be recognized - * by some software. These chars do not have corresponding chars - * in JIS-208 or SJIS. - * - * Clear 8th bits of 2-byte JIS X 208-1993 chars. These are the commonly - * used chars (along with JIS-Roman). - * - * Bytes which do not fall in the EUC valid character codes are treated - * like JIS-Roman. - * - * If either EUC buffer does not contain a complete EUC char or dest buffer - * is full, then return unconverted EUC to caller. Caller should - * append more data and recall mz_euc2jis. - */ - - -MODULE_PRIVATE unsigned char * -mz_euc2jis( CCCDataObject obj, - const unsigned char *eucbuf, /* EUC buffer for conversion */ - int32 eucbufsz) /* EUC buffer size in bytes */ -{ - unsigned char *tobuf = NULL; - int32 tobufsz; - register unsigned char *tobufp, *eucp; /* current byte in bufs */ - register unsigned char *tobufep, *eucep; /* end of buffers */ - int32 uncvtlen; - unsigned char *uncvtbuf = INTL_GetCCCUncvtbuf(obj); -#if defined(MOZ_MAIL_NEWS) - unsigned char kanabuf[4]; /* for half-width kana */ - uint32 byteused; /* for half-width kana */ -#endif - - /* Allocate a dest buffer: */ - /* JIS is longer than EUC because of ESC seq. In the worst case - * ( ... ), the converted JIS will - * be 2-2/3 times the size of the original EUC + 1 for nul byte. - * Worst case: single half-width kana: - * ESC ( I KANA ESC ( J - */ - uncvtlen = strlen((const char *)uncvtbuf); - /* 3 times length of EUC */ - tobufsz = eucbufsz + uncvtlen + ((eucbufsz + uncvtlen)<<2) + 8; - if ((tobuf = (unsigned char *)XP_ALLOC(tobufsz)) == (unsigned char *)NULL) { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - /* Initialize pointers, etc. */ - eucp = (unsigned char *)eucbuf; - eucep = eucp + eucbufsz - 1; - -#define uncvtp tobufp /* use tobufp as temp */ - /* If prev. unconverted chars, append unconverted - * chars w/new chars and try to process. - */ - if (uncvtbuf[0] != '\0') { - uncvtp = (unsigned char *)uncvtbuf + uncvtlen; - while (uncvtp < ((unsigned char *)uncvtbuf + UNCVTBUF_SIZE) && - eucp <= eucep) - *uncvtp++ = *eucp++; - *uncvtp = '\0'; /* nul terminate */ - eucp = (unsigned char *)uncvtbuf; /* process unconverted first */ - eucep = uncvtp - 1; - } -#undef uncvtp - - tobufp = tobuf; - tobufep = tobufp + tobufsz - 2; /* save space for terminating null */ - -WHILELOOP: - /* While EUC data && space in dest. buf. */ - while ((tobufp <= tobufep) && (eucp <= eucep)) { - if (*eucp < SS2) { /* ASCII/JIS-Roman or invalid EUC */ - if (INTL_GetCCCJismode(obj) != JIS_Roman) { - InsASCII_ESC(tobufp, obj); - } - *tobufp++ = *eucp++; - } else if (*eucp == SS2) { /* Half-width Katakana */ - if (eucp+1 > eucep) /* No 2nd byte in EUC buffer? */ - break; -#if defined(MOZ_MAIL_NEWS) - if (!INTL_GetCCCCvtflag_SendHankakuKana(obj)) { - if (INTL_GetCCCJismode(obj) != JIS_208_83) { - Ins208_83_ESC(tobufp, obj); - } - INTL_SjisHalf2FullKana(eucp, (uint32)eucep - (uint32)eucp + 1, kanabuf, &byteused); - *tobufp++ = kanabuf[0] & 0x7F; - *tobufp++ = kanabuf[1] & 0x7F; - eucp += byteused; - } else { - if (INTL_GetCCCJismode(obj) != JIS_HalfKana) { - InsHalfKana_ESC(tobufp, obj); - } - eucp++; /* skip SS2 */ - *tobufp++ = *eucp & 0x7F; - eucp++; - } -#else - if (INTL_GetCCCJismode(obj) != JIS_HalfKana) { - InsHalfKana_ESC(tobufp, obj); - } - eucp++; /* skip SS2 */ - *tobufp++ = *eucp & 0x7F; - eucp++; -#endif - - } else if (*eucp == SS3) { /* JIS X 0212-1990 */ - if (eucp+2 > eucep) /* No 2nd & 3rd bytes in EUC buffer? */ - break; - if (*(eucp+1) <= 0xA0 || *(eucp+2) <= 0xA0) { /* Invalid EUC212 */ - if (INTL_GetCCCJismode(obj) != JIS_Roman) { - InsASCII_ESC(tobufp, obj); - } - *tobufp++ = *eucp++; /* process 1 byte as Roman */ - } else { - if (INTL_GetCCCJismode(obj) != JIS_212_90) { - Ins212_90_ESC(tobufp, obj); - } - eucp++; /* skip SS3 */ - *tobufp++ = *eucp & 0x7F; - eucp++; - *tobufp++ = *eucp & 0x7F; - eucp++; - } - } else if (*eucp < 0xA0) { /* Invalid EUC: treat as Roman */ - if (INTL_GetCCCJismode(obj) != JIS_Roman) { - InsASCII_ESC(tobufp, obj); - } - *tobufp++ = *eucp++; - } else { /* JIS X 0208-1990 */ - if (eucp+1 > eucep) /* No 2nd byte in EUC buffer? */ - break; - if (*(eucp+1) < 0xA0) { /* 1st byte OK, check if 2nd is valid */ - if (INTL_GetCCCJismode(obj) != JIS_Roman) { - InsASCII_ESC(tobufp, obj); - } - *tobufp++ = *eucp++; /* process 1 byte as Roman */ - } else { - if (INTL_GetCCCJismode(obj) != JIS_208_83) { - Ins208_83_ESC(tobufp, obj); - } - *tobufp++ = *eucp & 0x7F; - eucp++; - *tobufp++ = *eucp & 0x7F; - eucp++; - } - } - } - - if (uncvtbuf[0] != '\0') { - /* Just processed unconverted chars: - * eucp pts to 1st unprocessed char in - * eucbuf. Some may have been processed - * while processing unconverted chars, - * so set up ptrs not to process them - * twice. - */ - /* If nothing was converted, this can - * only happen if there was not - * enough EUC data. Stop and get - * more data. - */ - if (eucp == (unsigned char *)uncvtbuf) { /* Nothing converted */ - *tobufp = '\0'; - return(NULL); - } - eucp = (unsigned char *)eucbuf + - (eucp - (unsigned char *)uncvtbuf - uncvtlen); - eucep = (unsigned char *)eucbuf + eucbufsz - 1; /* save space for nul */ - uncvtbuf[0] = '\0'; /* No more uncoverted chars. */ - goto WHILELOOP; /* Process new data */ - } - - if (INTL_GetCCCJismode(obj) != JIS_Roman) { - INTL_SetCCCJismode(obj, JIS_Roman); - InsASCII_ESC(tobufp, obj); - } - - *tobufp = '\0'; /* null terminate dest. data */ - INTL_SetCCCLen(obj, tobufp - tobuf); /* length not counting null */ - - if (eucp <= eucep) { /* uncoverted EUC? */ - tobufp = (unsigned char *)uncvtbuf;/* reuse the tobufp as a TEMP */ - while (eucp <= eucep) - *tobufp++ = *eucp++; - *tobufp = '\0'; /* null terminate */ - } - return(tobuf); -} - diff --git a/mozilla/lib/libi18n/euc2sjis.c b/mozilla/lib/libi18n/euc2sjis.c deleted file mode 100644 index d2a27e1143b..00000000000 --- a/mozilla/lib/libi18n/euc2sjis.c +++ /dev/null @@ -1,193 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* euc2sjis.c */ - -#include "intlpriv.h" - - -extern int MK_OUT_OF_MEMORY; - - -/* net_euc2sjis(obj, eucbuf, eucbufsz) - * Args: - * eucbuf: Ptr to a buf of EUC chars - * eucbufsz: Size in bytes of eucbuf - * uncvtbuf: If entire buffer was converted, uncvtbuf[0] will be nul, - * else this points to EUC chars that were NOT converted - * and mz_euc2sjis() with additional EUC chars appended. - * Return: - * Returns NULL on failure, otherwise it returns a pointer to a buffer of - * converted characters. Caller must XP_FREE() this memory. - * - * Description: - * - * Allocate destination buffer. - * - * All bytes < SS2 (0x8E) are either ASCII/Roman or invalid. Treat them - * as ASCII/Roman and just copy them unchanged. - * - * If SS2, then the next byte should be a Half-width Katakana, just copy - * it unchanged after disposing of the SS2 byte. - * - * If SS3, then the next 2 bytes should be JIS x212. If the bytes - * are not in the valide range for JIS x212, then copy the SS3 and - * continue. Leave the 2 byte to be processed from the beginning. - * - * If the next byte < 0xA0, this is not valid EUC, so treat it as - * ASCII/Roman and just copy it unchanged. - * - * If the next 2 bytes are both >= 0xA0, then this is a valid 2-byte - * x208, so convert them to SJIS. Otherwise, copy the 1st byte and - * continue. - */ - - -MODULE_PRIVATE unsigned char * -mz_euc2sjis( CCCDataObject obj, - const unsigned char *eucbuf, /* EUC buffer for conversion */ - int32 eucbufsz) /* EUC buffer size in bytes */ -{ - char unsigned *tobuf = NULL; - int32 tobufsz; - register unsigned char *tobufp, *eucp; /* current byte in bufs */ - register unsigned char *tobufep, *eucep; /* end of buffers */ - int32 uncvtlen; - unsigned char *uncvtbuf = INTL_GetCCCUncvtbuf(obj); - - /* Allocate a dest buffer: */ - /* Usually EUC will be the same length as SJIS. SJIS will be shorter - * if Half-width Kana are used, but in the worst case, the converted - * SJIS will be the same size as the orignal EUC + 1 for nul byte. - */ - uncvtlen = strlen((char *)uncvtbuf); - tobufsz = eucbufsz + uncvtlen + 1; - if ((tobuf = (unsigned char *)XP_ALLOC(tobufsz)) == (unsigned char *)NULL) { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - /* Initialize pointers, etc. */ - eucp = (unsigned char *)eucbuf; - eucep = eucp + eucbufsz - 1; - -#define uncvtp tobufp /* use tobufp as temp */ - /* If prev. unconverted chars, append unconverted - * chars w/new chars and try to process. - */ - if (uncvtbuf[0] != '\0') { - uncvtp = uncvtbuf + uncvtlen; - while (uncvtp < (uncvtbuf + UNCVTBUF_SIZE) && - eucp <= eucep) - *uncvtp++ = *eucp++; - *uncvtp = '\0'; /* nul terminate */ - eucp = uncvtbuf; /* process unconverted first */ - eucep = uncvtp - 1; - } -#undef uncvtp - - tobufp = tobuf; - tobufep = tobufp + tobufsz - 2; /* save space for terminating null */ - -WHILELOOP: - /* While EUC data && space in dest. buf. */ - while ((tobufp <= tobufep) && (eucp <= eucep)) { - if (*eucp < SS2) { /* ASCII/JIS-Roman/invalid EUC */ - *tobufp++ = *eucp++; - } else if (*eucp == SS2) { /* Half-width katakana */ - if (eucp+1 > eucep) /* No 2nd byte in EUC buffer? */ - break; - eucp++; /* Dispose of SS2 */ - *tobufp++ = *eucp++; - - } else if (*eucp == SS3) { /* JIS X 0212-1990 */ - if (eucp+2 > eucep) /* No 2nd & 3rd bytes in EUC buffer? */ - break; - if (*eucp < 0xA0 || *(eucp+1) < 0xA0) { /* Invalid EUC212 */ - *tobufp++ = *eucp++; /* process SS3 only */ - } else { - *tobufp++ = *eucp++; /* SS3 */ - *tobufp++ = *eucp++; /* 1st 212 byte unconverted */ - *tobufp++ = *eucp++; /* 2nd 212 byte unconverted */ - } - } else if (*eucp < 0xA0) { /* Invalid EUC: treat as Roman */ - *tobufp++ = *eucp++; - } else { /* JIS X 0208 */ - if (eucp+1 > eucep) /* No 2nd byte in EUC buffer? */ - break; - if (*(eucp+1) < 0xA0) { /* 1st byte OK, check if 2nd is valid */ - *tobufp++ = *eucp++; /* process 1 byte as Roman */ - - } else { /* Convert EUC-208 to SJIS: Same as */ - /* jis2other.c's JIS208-to-SJIS algorithm */ - /* except JIS 8th bit is set. */ - unsigned char b; - b = ((*eucp) & 0x7F); /* Convert 1st EUC byte to JIS */ - if (b < 0x5F) /* Convert it to SJIS byte */ - *tobufp++ = ((b + 1) >> 1) + 0x70; - else - *tobufp++ = ((b + 1) >> 1) + 0xB0; - /* Convert 2nd SJIS byte */ - if ((*eucp++) & 1) { /* if 1st JIS byte is odd */ - b = ((*eucp) & 0x7F); /* convert 2nd EUC byte to JIS */ - if (b > 0x5F) - *tobufp = b + 0x20; - else - *tobufp = b + 0x1F; - } else { - *tobufp = (*eucp & 0x7F) + 0x7E; - } - tobufp++; - eucp++; - } - } - } - - if (uncvtbuf[0] != '\0') { - /* Just processed unconverted chars: - * eucp pts to 1st unprocessed char in - * eucbuf. Some may have been processed - * while processing unconverted chars, - * so set up ptrs not to process them - * twice. - */ - /* If nothing was converted, this can - * only happen if there was not - * enough EUC data. Stop and get - * more data. - */ - if (eucp == uncvtbuf) { /* Nothing converted */ - *tobufp = '\0'; - return(NULL); - } - eucp = (unsigned char *)eucbuf + (eucp - uncvtbuf - uncvtlen); - eucep = (unsigned char *)eucbuf + eucbufsz - 1; /* save space for nul */ - uncvtbuf[0] = '\0'; /* No more uncoverted chars. */ - goto WHILELOOP; /* Process new data */ - } - - *tobufp = '\0'; /* null terminate dest. data */ - INTL_SetCCCLen(obj, tobufp - tobuf); /* length not counting null */ - - if (eucp <= eucep) { /* uncoverted EUC? */ - tobufp = uncvtbuf; /* reuse the tobufp as a TEMP */ - while (eucp <= eucep) - *tobufp++ = *eucp++; - *tobufp = '\0'; /* null terminate */ - } - return(tobuf); -} - diff --git a/mozilla/lib/libi18n/euckr2is.c b/mozilla/lib/libi18n/euckr2is.c deleted file mode 100644 index 4e0b046572b..00000000000 --- a/mozilla/lib/libi18n/euckr2is.c +++ /dev/null @@ -1,117 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* euc-kt to iso2022-kr */ - -#include "intlpriv.h" - - -extern int MK_OUT_OF_MEMORY; - - -/* net_euckr2iso(obj, eucbuf, eucbufsz) - * Args: - * eucbuf: Ptr to a buf of EUC chars - * eucbufsz: Size in bytes of eucbuf - * uncvtbuf: If entire buffer was converted, uncvtbuf[0] will be nul, - * else this points to EUC chars that were NOT converted - * and mz_euckr2iso() with additional EUC chars appended. - * Return: - * Returns NULL on failure, otherwise it returns a pointer to a buffer of - * converted characters. Caller must XP_FREE() this memory. - * - * Description: - * - * - */ - -/* - rewrite by Frank Tang - - About Unconverted Buffer: - Since ISO-2022-KR will never be used as internal code. We do not need to make - sure the output stream do not have partial characters. Therefore, we could - ignore the unconverted buffer and never use it. We always treat the - stream in a byte oriented way. - -*/ - -MODULE_PRIVATE unsigned char * -mz_euckr2iso( CCCDataObject obj, - const unsigned char *eucbuf, /* EUC buffer for conversion */ - int32 eucbufsz) /* EUC buffer size in bytes */ -{ - char unsigned *tobuf = NULL; - int32 tobufsz; - register unsigned char *tobufp, *eucp; /* current byte in bufs */ - register unsigned char *tobufep, *eucep; /* end of buffers */ - - /* Allocate a dest buffer: - - 4 bytes: ESC $ ) C - 2 bytes: CR LF - * 2: SI + one byte - 1 bytes: SI - 1 bytes: NULL - - */ - - tobufsz = 4 + 2 + eucbufsz * 2 + 1 + 1; - - - if ((tobuf = (unsigned char *)XP_ALLOC(tobufsz)) == (unsigned char *)NULL) { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - - tobufp = tobuf; - tobufep = tobufp + tobufsz - 3; /* save space for terminating null */ - eucp = (unsigned char *)eucbuf; - eucep = (unsigned char *)eucbuf + eucbufsz - 1; /* save space for nul */ - - if (!IsIns5601_87_ESC(obj)) - { - Ins5601_87_ESC(tobufp, obj); - *tobufp++ = (unsigned char)CR; - *tobufp++ = (unsigned char)NL; - } - - - while ((tobufp <= tobufep) && (eucp <= eucep)) - { - - if (*eucp & 0x80) { - if (IsIns5601_87_SI(obj)) - Ins5601_87_SO(tobufp, obj); - *tobufp++ = *eucp++ & 0x7f; - } - else { - if(IsIns5601_87_SO(obj)) - Ins5601_87_SI(tobufp, obj); - *tobufp++ = *eucp++; - } - } - - if(IsIns5601_87_SO(obj)) - Ins5601_87_SI(tobufp, obj); - - *tobufp = '\0'; /* null terminate dest. data */ - INTL_SetCCCLen(obj, tobufp - tobuf); /* length not counting null */ - - return(tobuf); -} - diff --git a/mozilla/lib/libi18n/fe_ccc.c b/mozilla/lib/libi18n/fe_ccc.c deleted file mode 100644 index ce937ec9623..00000000000 --- a/mozilla/lib/libi18n/fe_ccc.c +++ /dev/null @@ -1,1430 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* fe_ccc.c */ -/* Test harness code to be replaced by FE specific code */ - -#ifdef XP_OS2 -#define INCL_DOS -#endif -#include "intlpriv.h" - -#include -#include "xp.h" -#include "intl_csi.h" - -#ifdef XP_MAC -#include "resgui.h" -#endif - -/* for XP_GetString() */ -#include "xpgetstr.h" -extern int MK_OUT_OF_MEMORY; - - -/* -IMPORTANT NOTE: - - mz_euc2euc - mz_b52b5 - mz_cns2cns - mz_ksc2ksc - mz_sjis2sjis - mz_utf82utf8 - - is now replaced by mz_mbNullConv - we eventually should replacing mz_hz2gb after we extract the hz -> gb conversion -*/ -MODULE_PRIVATE unsigned char* mz_euctwtob5( CCCDataObject obj, const unsigned char *in, int32 insize); -MODULE_PRIVATE unsigned char* mz_b5toeuctw( CCCDataObject obj, const unsigned char *in, int32 insize); - -PRIVATE unsigned char * -mz_hz2gb(CCCDataObject obj, const unsigned char *kscbuf, int32 kscbufsz); - -PRIVATE unsigned char * -mz_mbNullConv(CCCDataObject obj, const unsigned char *buf, int32 bufsz); - -/* intl_CharLenFunc is designed to used with mz_mbNullConv */ -typedef int16 (*intl_CharLenFunc) ( unsigned char ch); -PRIVATE int16 intl_CharLen_SJIS( unsigned char ch); -PRIVATE int16 intl_CharLen_EUC_JP( unsigned char ch); -PRIVATE int16 intl_CharLen_CGK( unsigned char ch); -PRIVATE int16 intl_CharLen_CNS_8BIT( unsigned char ch); -PRIVATE int16 intl_CharLen_UTF8( unsigned char ch); -PRIVATE int16 intl_CharLen_SingleByte(unsigned char ch); -PRIVATE int16 intl_CharLen_T61(unsigned char ch); - -#define INTL_CHARLEN_SJIS 0 -#define INTL_CHARLEN_EUC_JP 1 -#define INTL_CHARLEN_CGK 2 -#define INTL_CHARLEN_CNS_8BIT 3 -#define INTL_CHARLEN_UTF8 4 -#define INTL_CHARLEN_SINGLEBYTE 5 -#define INTL_CHARLEN_T61 6 -/* a conversion flag for JIS, set if converting hankaku (1byte) kana to zenkaku (2byte) */ -#define INTL_SEND_HANKAKU_KANA 128 - -PRIVATE intl_CharLenFunc intl_char_len_func[]= -{ - intl_CharLen_SJIS, - intl_CharLen_EUC_JP, - intl_CharLen_CGK, - intl_CharLen_CNS_8BIT, - intl_CharLen_UTF8, - intl_CharLen_SingleByte, - intl_CharLen_T61, -}; - -#ifdef XP_UNIX -PRIVATE XP_Bool haveBig5 = FALSE; -PRIVATE XP_Bool have88595 = FALSE; -PRIVATE XP_Bool have1251 = FALSE; -PRIVATE XP_Bool haveKOI8R = FALSE; -PRIVATE XP_Bool haveKOI8U = FALSE; -#endif - -PRIVATE int16 *availableFontCharSets = NULL; - - -/* Table that maps the FROM char, codeset to all other relevant info: - * - TO character codeset - * - Fonts (fixe & proportional) for TO character codeset - * - Type of conversion (func for Win/Mac, value for X) - * - Argument for conversion routine. Routine-defined. - * - * Not all of these may be available. Depends upon available fonts, - * scripts, codepages, etc. Need to query system to build valid table. - * - * What info do I need to make the font change API on the 3 platforms? - * Is just a 32bit font ID sufficient? - * - * Some X Windows can render Japanese in either EUC or SJIS, how do we - * choose? - */ -/* The ***first*** match of a "FROM" encoding (1st col.) will be - * used as the URL->native encoding. Be careful of the - * ordering. - * Additional entries for the same "FROM" encoding, specifies - * how to convert going out (e.g., sending mail, news or forms). - */ - -/* - What is the flag mean ? - - For Mac the flag in One2OneCCC is the resouce number of a 256 byte mapping table - For all platform the flag in mz_mbNullConv is a pointer to a intl_CharLenFunc routine - -*/ -#ifdef XP_MAC -MODULE_PRIVATE cscvt_t cscvt_tbl[] = { - /* SINGLE BYTE */ - /* LATIN1 */ - {CS_LATIN1, CS_MAC_ROMAN, 0, (CCCFunc)One2OneCCC, xlat_LATIN1_TO_MAC_ROMAN}, - {CS_ASCII, CS_MAC_ROMAN, 0, (CCCFunc)One2OneCCC, xlat_LATIN1_TO_MAC_ROMAN}, - {CS_MAC_ROMAN, CS_MAC_ROMAN, 0, (CCCFunc)0, 0}, - {CS_MAC_ROMAN, CS_LATIN1, 0, (CCCFunc)One2OneCCC, xlat_MAC_ROMAN_TO_LATIN1}, - {CS_MAC_ROMAN, CS_ASCII, 0, (CCCFunc)One2OneCCC, xlat_MAC_ROMAN_TO_LATIN1}, - - /* LATIN2 */ - {CS_LATIN2, CS_MAC_CE, 0, (CCCFunc)One2OneCCC, xlat_LATIN2_TO_MAC_CE}, - {CS_MAC_CE, CS_MAC_CE, 0, (CCCFunc)0, 0}, - {CS_MAC_CE, CS_LATIN2, 0, (CCCFunc)One2OneCCC, xlat_MAC_CE_TO_LATIN2}, - {CS_MAC_CE, CS_ASCII, 0, (CCCFunc)One2OneCCC, xlat_MAC_CE_TO_LATIN2}, - - {CS_CP_1250, CS_MAC_CE, 0, (CCCFunc)One2OneCCC, xlat_CP_1250_TO_MAC_CE}, - {CS_MAC_CE, CS_CP_1250, 0, (CCCFunc)One2OneCCC, xlat_MAC_CE_TO_CP_1250}, - - /* CYRILLIC */ - {CS_8859_5, CS_MAC_CYRILLIC,0, (CCCFunc)One2OneCCC, xlat_8859_5_TO_MAC_CYRILLIC}, - {CS_MAC_CYRILLIC,CS_MAC_CYRILLIC, 0, (CCCFunc)0, 0}, - {CS_MAC_CYRILLIC,CS_8859_5, 0, (CCCFunc)One2OneCCC, xlat_MAC_CYRILLIC_TO_8859_5}, - {CS_MAC_CYRILLIC,CS_ASCII, 0, (CCCFunc)One2OneCCC, xlat_MAC_CYRILLIC_TO_8859_5}, - - {CS_CP_1251, CS_MAC_CYRILLIC,0, (CCCFunc)One2OneCCC, xlat_CP_1251_TO_MAC_CYRILLIC}, - {CS_MAC_CYRILLIC,CS_CP_1251, 0, (CCCFunc)One2OneCCC, xlat_MAC_CYRILLIC_TO_CP_1251}, - - {CS_KOI8_R, CS_MAC_CYRILLIC,0, (CCCFunc)One2OneCCC, xlat_KOI8_R_TO_MAC_CYRILLIC}, - {CS_MAC_CYRILLIC,CS_KOI8_R, 0, (CCCFunc)One2OneCCC, xlat_MAC_CYRILLIC_TO_KOI8_R}, - - /* GREEK */ - {CS_8859_7, CS_MAC_GREEK, 0, (CCCFunc)One2OneCCC, xlat_8859_7_TO_MAC_GREEK}, - {CS_MAC_GREEK, CS_MAC_GREEK, 0, (CCCFunc)0, 0}, - {CS_MAC_GREEK, CS_8859_7, 0, (CCCFunc)One2OneCCC, xlat_MAC_GREEK_TO_8859_7}, - {CS_MAC_GREEK, CS_ASCII, 0, (CCCFunc)One2OneCCC, xlat_MAC_GREEK_TO_8859_7}, - - {CS_CP_1253, CS_MAC_GREEK, 0, (CCCFunc)One2OneCCC, xlat_CP_1253_TO_MAC_GREEK}, - {CS_MAC_GREEK, CS_CP_1253, 0, (CCCFunc)One2OneCCC, xlat_MAC_GREEK_TO_CP_1253}, - - /* TURKISH */ - {CS_8859_9, CS_MAC_TURKISH, 0, (CCCFunc)One2OneCCC, xlat_8859_9_TO_MAC_TURKISH}, - {CS_MAC_TURKISH,CS_MAC_TURKISH, 0, (CCCFunc)0, 0}, - {CS_MAC_TURKISH,CS_8859_9, 0, (CCCFunc)One2OneCCC, xlat_MAC_TURKISH_TO_8859_9}, - {CS_MAC_TURKISH,CS_ASCII, 0, (CCCFunc)One2OneCCC, xlat_MAC_TURKISH_TO_8859_9}, - - /* THAI */ - {CS_TIS620, CS_TIS620, 0, (CCCFunc)0, 0}, - - /* MULTIBYTE */ - /* JAPANESE */ - {CS_SJIS, CS_SJIS, 1, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_SJIS }, - {CS_SJIS, CS_JIS, 1, (CCCFunc)mz_sjis2jis, 0}, - {CS_JIS, CS_SJIS, 1, (CCCFunc)jis2other, 0}, - {CS_EUCJP, CS_SJIS, 1, (CCCFunc)mz_euc2sjis, 0}, - {CS_JIS, CS_EUCJP, 1, (CCCFunc)jis2other, 1}, - {CS_EUCJP, CS_JIS, 1, (CCCFunc)mz_euc2jis, 0}, - {CS_SJIS, CS_EUCJP, 1, (CCCFunc)mz_sjis2euc, 0}, - /* auto-detect Japanese conversions */ - {CS_SJIS_AUTO, CS_SJIS, 1, (CCCFunc)autoJCCC, 0}, - {CS_JIS_AUTO, CS_SJIS, 1, (CCCFunc)autoJCCC, 0}, - {CS_EUCJP_AUTO, CS_SJIS, 1, (CCCFunc)autoJCCC, 0}, - - /* KOREAN */ - {CS_KSC_8BIT, CS_KSC_8BIT, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK }, - {CS_2022_KR, CS_KSC_8BIT, 0, (CCCFunc)mz_iso2euckr, 0}, - {CS_KSC_8BIT, CS_2022_KR, 0, (CCCFunc)mz_euckr2iso, 0}, - /* auto-detect Korean conversions */ - {CS_KSC_8BIT_AUTO, CS_KSC_8BIT,1, (CCCFunc)autoKCCC, 0}, - {(CS_2022_KR|CS_AUTO) , CS_KSC_8BIT,1, (CCCFunc)autoKCCC, 0}, - {CS_KSC5601, CS_KSC_8BIT, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_KSC_8BIT, CS_KSC5601, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - - /* SIMPLIFIED CHINESE */ - {CS_GB_8BIT, CS_GB_8BIT, 0, (CCCFunc)mz_hz2gb, 0}, - {CS_GB2312, CS_GB_8BIT, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_GB_8BIT, CS_GB2312, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - - {CS_HZ, CS_GB_8BIT, 0, (CCCFunc)mz_hz2gb, 0}, - /* we need gb2hz routine to complete hz support */ - - /* TRADITIONAL CHINESE */ - {CS_BIG5, CS_BIG5, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK }, - {CS_BIG5, CS_CNS_8BIT, 0, (CCCFunc)mz_b5toeuctw, 0}, - {CS_CNS_8BIT, CS_BIG5, 0, (CCCFunc)mz_euctwtob5, 0}, - {CS_X_BIG5, CS_BIG5, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_BIG5, CS_X_BIG5, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - - /* UNICODE */ - {CS_UTF8, CS_UTF8, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_UTF8 }, - - {CS_T61, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_T61}, - {CS_UTF8, CS_T61, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - - {CS_UTF8, CS_UCS2, 0, (CCCFunc)mz_utf82ucs, 0}, - {CS_UTF8, CS_UTF7, 0, (CCCFunc)mz_utf82utf7, 0}, - {CS_UTF8, CS_UCS2_SWAP, 0, (CCCFunc)mz_utf82ucsswap, 0}, - {CS_UTF8, CS_IMAP4_UTF7, 0, (CCCFunc)mz_utf82imap4utf7, 0}, - {CS_UCS2, CS_UTF8, 0, (CCCFunc)mz_ucs2utf8, 0}, - {CS_UCS2, CS_UTF7, 0, (CCCFunc)mz_ucs2utf7, 0}, - {CS_UCS2_SWAP, CS_UTF8, 0, (CCCFunc)mz_ucs2utf8, 0}, - {CS_UCS2_SWAP, CS_UTF7, 0, (CCCFunc)mz_ucs2utf7, 0}, - {CS_UTF7, CS_UTF8, 0, (CCCFunc)mz_utf72utf8, 0}, - {CS_IMAP4_UTF7, CS_UTF8, 0, (CCCFunc)mz_imap4utf72utf8, 0}, - - {CS_MAC_ROMAN, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_LATIN1, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_MAC_CE, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_MAC_CYRILLIC, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_KOI8_R, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_MAC_GREEK, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_MAC_TURKISH, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_SJIS, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SJIS}, - {CS_KSC_8BIT, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_CGK}, - {CS_BIG5, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_CGK}, - {CS_GB_8BIT, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_CGK}, - {CS_TIS620, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - - {CS_UTF8, CS_MAC_ROMAN, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_LATIN1, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_MAC_CE, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_MAC_CYRILLIC,0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_KOI8_R, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_MAC_GREEK, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_MAC_TURKISH, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_SJIS, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_KSC_8BIT, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_BIG5, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_GB_8BIT, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_TIS620, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - - - {CS_USER_DEFINED_ENCODING, CS_USER_DEFINED_ENCODING, 0, (CCCFunc)0, 0}, - {0, 0, 1, (CCCFunc)0, 0} -}; - -#endif /* XP_MAC */ - -#if defined(XP_WIN) || defined(XP_OS2) -MODULE_PRIVATE cscvt_t cscvt_tbl[] = { - /* SINGLE BYTE */ - /* LATIN1 */ - {CS_LATIN1, CS_LATIN1, 0, (CCCFunc)0, 0}, - {CS_LATIN1, CS_ASCII, 0, (CCCFunc)0, 0}, - {CS_ASCII, CS_LATIN1, 0, (CCCFunc)0, 0}, - {CS_ASCII, CS_ASCII, 0, (CCCFunc)0, 0}, - - /* LATIN2 */ - {CS_CP_1250, CS_CP_1250, 0, (CCCFunc)0, 0}, - {CS_CP_1250, CS_LATIN2, 0, (CCCFunc)One2OneCCC, 0}, - {CS_LATIN2, CS_CP_1250, 0, (CCCFunc)One2OneCCC, 0}, - {CS_LATIN2, CS_LATIN2, 0, (CCCFunc)0, 0}, - {CS_LATIN2, CS_ASCII, 0, (CCCFunc)0, 0}, - - /* CYRILLIC */ - {CS_CP_1251, CS_CP_1251, 0, (CCCFunc)0, 0}, - {CS_8859_5, CS_CP_1251, 0, (CCCFunc)One2OneCCC, 0}, - {CS_CP_1251, CS_8859_5, 0, (CCCFunc)One2OneCCC, 0}, - {CS_CP_1251, CS_CP_1251, 0, (CCCFunc)0, 0}, - - {CS_KOI8_R, CS_CP_1251, 0, (CCCFunc)One2OneCCC, 0}, - {CS_CP_1251, CS_KOI8_R, 0, (CCCFunc)One2OneCCC, 0}, - - /* ARMENIAN */ - {CS_ARMSCII8, CS_ARMSCII8, 0, (CCCFunc)0, 0}, - - /* THAI */ - {CS_TIS620, CS_TIS620, 0, (CCCFunc)0, 0}, - - /* GREEK */ - {CS_CP_1253, CS_CP_1253, 0, (CCCFunc)0, 0}, - {CS_CP_1253, CS_8859_7, 0, (CCCFunc)One2OneCCC, 0}, - {CS_8859_7, CS_CP_1253, 0, (CCCFunc)One2OneCCC, 0}, - {CS_8859_7, CS_8859_7, 0, (CCCFunc)0, 0}, - - /* TURKISH */ -#ifdef XP_OS2 - {CS_CP_1254, CS_CP_1254, 0, (CCCFunc)0, 0}, - {CS_CP_1254, CS_8859_9, 0, (CCCFunc)One2OneCCC, 0}, - {CS_8859_9, CS_CP_1254, 0, (CCCFunc)One2OneCCC, 0}, -#endif - {CS_8859_9, CS_8859_9, 0, (CCCFunc)0, 0}, - - /* MULTIBYTE */ - /* JAPANESE */ - {CS_SJIS, CS_SJIS, 1, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_SJIS}, - {CS_SJIS, CS_JIS, 1, (CCCFunc)mz_sjis2jis, 0}, - {CS_JIS, CS_SJIS, 1, (CCCFunc)jis2other, 0}, - {CS_EUCJP, CS_SJIS, 1, (CCCFunc)mz_euc2sjis, 0}, - {CS_JIS, CS_EUCJP, 1, (CCCFunc)jis2other, 1}, - {CS_EUCJP, CS_JIS, 1, (CCCFunc)mz_euc2jis, 0}, - {CS_SJIS, CS_EUCJP, 1, (CCCFunc)mz_sjis2euc, 0}, - /* auto-detect Japanese conversions */ - {CS_SJIS_AUTO, CS_SJIS, 1, (CCCFunc)autoJCCC, 0}, - {CS_JIS_AUTO, CS_SJIS, 1, (CCCFunc)autoJCCC, 0}, - {CS_EUCJP_AUTO, CS_SJIS, 1, (CCCFunc)autoJCCC, 0}, - - /* KOREAN */ - {CS_KSC_8BIT, CS_KSC_8BIT, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_2022_KR, CS_KSC_8BIT, 0, (CCCFunc)mz_iso2euckr, 0}, - {CS_KSC_8BIT, CS_2022_KR, 0, (CCCFunc)mz_euckr2iso, 0}, - /* auto-detect Korean conversions */ - {CS_KSC_8BIT_AUTO, CS_KSC_8BIT,1, (CCCFunc)autoKCCC, 0}, - {(CS_2022_KR|CS_AUTO) , CS_KSC_8BIT,1, (CCCFunc)autoKCCC, 0}, - {CS_KSC5601, CS_KSC_8BIT, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_KSC_8BIT, CS_KSC5601, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - - /* SIMPLIFIED CHINESE */ - {CS_GB_8BIT, CS_GB_8BIT, 0, (CCCFunc)mz_hz2gb, 0}, - {CS_GB2312, CS_GB_8BIT, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_GB_8BIT, CS_GB2312, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - - {CS_HZ, CS_GB_8BIT, 0, (CCCFunc)mz_hz2gb, 0}, - /* we need gb2hz routine to complete hz support */ - - /* TRADITIONAL CHINESE */ - {CS_BIG5, CS_BIG5, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - - {CS_BIG5, CS_CNS_8BIT, 0, (CCCFunc)mz_b5toeuctw, 0}, - {CS_CNS_8BIT, CS_BIG5, 0, (CCCFunc)mz_euctwtob5, 0}, - - {CS_X_BIG5, CS_BIG5, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_BIG5, CS_X_BIG5, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - - - /* UNICODE */ - {CS_UTF8, CS_UTF8, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_UTF8}, - /*************** Vietnamese ****************/ - {CS_VIET_VIQR, CS_VIET_VIQR, 0, (CCCFunc)0, 0}, - {CS_VIET_VISCII, CS_VIET_VISCII, 0, (CCCFunc)0, 0}, - {CS_VIET_VPS, CS_VIET_VPS, 0, (CCCFunc)0, 0}, - {CS_VIET_TCVN, CS_VIET_TCVN, 0, (CCCFunc)0, 0}, - {CS_VIET_VNI, CS_VIET_VNI, 0, (CCCFunc)0, 0}, - {CS_CP_1258, CS_CP_1258, 0, (CCCFunc)0, 0}, - - {CS_VIET_VIQR, CS_VIET_VISCII, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VIQR, CS_VIET_VPS, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VIQR, CS_VIET_TCVN, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VIQR, CS_VIET_VNI, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VIQR, CS_CP_1258, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - - {CS_VIET_VISCII, CS_VIET_VIQR, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VISCII, CS_VIET_VPS, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VISCII, CS_VIET_TCVN, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VISCII, CS_VIET_VNI, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VISCII, CS_CP_1258, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - - {CS_VIET_VPS, CS_VIET_VIQR, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VPS, CS_VIET_VISCII, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VPS, CS_VIET_TCVN, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VPS, CS_VIET_VNI, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VPS, CS_CP_1258, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - - {CS_VIET_TCVN, CS_VIET_VIQR, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_TCVN, CS_VIET_VISCII, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_TCVN, CS_VIET_VPS, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_TCVN, CS_VIET_VNI, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_TCVN, CS_CP_1258, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - - {CS_VIET_VNI, CS_VIET_VIQR, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VNI, CS_VIET_VISCII, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VNI, CS_VIET_VPS, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VNI, CS_VIET_TCVN, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VNI, CS_CP_1258, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - - {CS_CP_1258, CS_VIET_VIQR, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_1258, CS_VIET_VISCII, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_1258, CS_VIET_VPS, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_1258, CS_VIET_TCVN, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_1258, CS_VIET_VNI, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - - {CS_VIET_VIQR, CS_UTF8, 0, (CCCFunc)viet_any_2_any, INTL_CHARLEN_SINGLEBYTE}, - {CS_VIET_VISCII, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_UTF8, CS_VIET_VISCII, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - - - {CS_T61, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_T61}, - {CS_UTF8, CS_T61, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - - {CS_UTF8, CS_UCS2, 0, (CCCFunc)mz_utf82ucs, 0}, - {CS_UTF8, CS_UTF7, 0, (CCCFunc)mz_utf82utf7, 0}, - {CS_UTF8, CS_UCS2_SWAP, 0, (CCCFunc)mz_utf82ucsswap, 0}, - {CS_UCS2, CS_UTF8, 0, (CCCFunc)mz_ucs2utf8, 0}, - {CS_UCS2, CS_UTF7, 0, (CCCFunc)mz_ucs2utf7, 0}, - {CS_UTF8, CS_IMAP4_UTF7, 0, (CCCFunc)mz_utf82imap4utf7, 0}, - {CS_UCS2_SWAP, CS_UTF8, 0, (CCCFunc)mz_ucs2utf8, 0}, - {CS_UCS2_SWAP, CS_UTF7, 0, (CCCFunc)mz_ucs2utf7, 0}, - {CS_UTF7, CS_UTF8, 0, (CCCFunc)mz_utf72utf8, 0}, - {CS_IMAP4_UTF7, CS_UTF8, 0, (CCCFunc)mz_imap4utf72utf8, 0}, - - {CS_LATIN1, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_1250, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_1251, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_1253, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_8859_9, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_SJIS, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SJIS}, - {CS_KSC_8BIT, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_CGK}, - {CS_BIG5, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_CGK}, - {CS_GB_8BIT, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_CGK}, - {CS_TIS620, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - - {CS_UTF8, CS_LATIN1, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_CP_1250, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_CP_1251, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_CP_1253, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_8859_9, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_SJIS, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_KSC_8BIT, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_BIG5, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_GB_8BIT, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_TIS620, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - -#ifdef XP_OS2 - /* - * Define additional codepage conversions for OS/2. All of these use the unicode - * based conversion tables. - */ - /* Thai */ - {CS_CP_874, CS_CP_874, 0, (CCCFunc)0, 0}, - {CS_CP_874, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_UTF8, CS_CP_874, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - - /* Baltic */ - {CS_CP_1257, CS_CP_1257, 0, (CCCFunc)0, 0}, - {CS_CP_1257, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_UTF8, CS_CP_1257, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - - /* Hebrew */ - {CS_CP_862, CS_CP_862, 0, (CCCFunc)0, 0}, - {CS_CP_862, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_UTF8, CS_CP_862, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - - /* Arabic */ - {CS_CP_864, CS_CP_864, 0, (CCCFunc)0, 0}, - {CS_CP_864, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_UTF8, CS_CP_864, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - - /* PC codepages - Default convert to windows codepages */ - {CS_CP_850, CS_LATIN1, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_852, CS_LATIN2, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_855, CS_CP_1251, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_857, CS_CP_1254, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_866, CS_CP_1251, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - - {CS_CP_850, CS_CP_850, 0, (CCCFunc)0, 0}, - {CS_CP_852, CS_CP_852, 0, (CCCFunc)0, 0}, - {CS_CP_855, CS_CP_855, 0, (CCCFunc)0, 0}, - {CS_CP_857, CS_CP_857, 0, (CCCFunc)0, 0}, - {CS_CP_866, CS_CP_866, 0, (CCCFunc)0, 0}, - - {CS_LATIN1, CS_CP_850, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_LATIN2, CS_CP_852, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_1251, CS_CP_855, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_1254, CS_CP_857, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_1251, CS_CP_866, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - - {CS_CP_850, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_852, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_855, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_857, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_CP_866, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_KOI8_R, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - - {CS_UTF8, CS_CP_850, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_CP_852, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_CP_855, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_CP_857, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_CP_866, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_KOI8_R, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - - {CS_MAC_ROMAN, CS_LATIN1, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_LATIN1, CS_MAC_ROMAN, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, -#endif /* XP_OS2 */ - - - {CS_USER_DEFINED_ENCODING, CS_USER_DEFINED_ENCODING, 0, (CCCFunc)0, 0}, - {0, 0, 1, (CCCFunc)0, 0} -}; - -#endif /* XP_WIN || XP_OS2 */ -#ifdef XP_UNIX -MODULE_PRIVATE cscvt_t cscvt_tbl[] = { - /* SINGLE BYTE */ - /* LATIN1 */ - {CS_LATIN1, CS_LATIN1, 0, (CCCFunc)One2OneCCC, 0}, - {CS_LATIN1, CS_ASCII, 0, NULL, 0}, - {CS_ASCII, CS_LATIN1, 0, NULL, 0}, - - /* LATIN2 */ - {CS_LATIN2, CS_LATIN2, 0, NULL, 0}, - {CS_LATIN2, CS_ASCII, 0, NULL, 0}, - {CS_LATIN2, CS_CP_1250, 0, (CCCFunc)One2OneCCC, 0}, - {CS_CP_1250, CS_LATIN2, 0, (CCCFunc)One2OneCCC, 0}, - - /* CYRILLIC */ - {CS_KOI8_R, CS_KOI8_R, 0, NULL, 0}, - {CS_8859_5, CS_8859_5, 0, NULL, 0}, - {CS_CP_1251, CS_CP_1251, 0, NULL, 0}, - - {CS_8859_5, CS_KOI8_R, 0, (CCCFunc)One2OneCCC, 0}, - {CS_KOI8_R, CS_8859_5, 0, (CCCFunc)One2OneCCC, 0}, - - {CS_CP_1251, CS_8859_5, 0, (CCCFunc)One2OneCCC, 0}, - {CS_8859_5, CS_CP_1251, 0, (CCCFunc)One2OneCCC, 0}, - {CS_CP_1251, CS_KOI8_R, 0, (CCCFunc)One2OneCCC, 0}, - {CS_KOI8_R, CS_CP_1251, 0, (CCCFunc)One2OneCCC, 0}, - - /* UKRAINIAN */ - {CS_KOI8_U, CS_KOI8_U, 0, (CCCFunc)0, 0}, - {CS_KOI8_U, CS_KOI8_R, 0, (CCCFunc)One2OneCCC, 0}, - {CS_KOI8_R, CS_KOI8_U, 0, (CCCFunc)One2OneCCC, 0}, - {CS_KOI8_U, CS_8859_5, 0, (CCCFunc)One2OneCCC, 0}, - {CS_8859_5, CS_KOI8_U, 0, (CCCFunc)One2OneCCC, 0}, - {CS_KOI8_U, CS_MAC_CYRILLIC, 0, (CCCFunc)One2OneCCC, 0}, - {CS_MAC_CYRILLIC, CS_KOI8_U, 0, (CCCFunc)One2OneCCC, 0}, - {CS_KOI8_U, CS_CP_1251, 0, (CCCFunc)One2OneCCC, 0}, - {CS_CP_1251, CS_KOI8_U, 0, (CCCFunc)One2OneCCC, 0}, - - - /* ARMENIAN */ - {CS_ARMSCII8, CS_ARMSCII8, 0, (CCCFunc)0, 0}, - - /* THAI */ - {CS_TIS620, CS_TIS620, 0, (CCCFunc)0, 0}, - - /* GREEK */ - {CS_8859_7, CS_8859_7, 0, NULL, 0}, - {CS_8859_7, CS_CP_1253, 0, (CCCFunc)One2OneCCC, 0}, - {CS_CP_1253, CS_8859_7, 0, (CCCFunc)One2OneCCC, 0}, - - /* TURKISH */ - {CS_8859_9, CS_8859_9, 0, NULL, 0}, - - /* MULTIBYTE */ - /* JAPANESE */ - {CS_EUCJP, CS_EUCJP, 1, mz_mbNullConv, INTL_CHARLEN_EUC_JP}, - {CS_JIS, CS_EUCJP, 1, jis2other, 1}, - {CS_SJIS, CS_EUCJP, 1, mz_sjis2euc, 0}, - {CS_EUCJP, CS_SJIS, 1, mz_euc2sjis, 0}, - {CS_JIS, CS_SJIS, 1, jis2other, 0}, - {CS_SJIS, CS_SJIS, 1, mz_mbNullConv, INTL_CHARLEN_SJIS}, - {CS_EUCJP, CS_JIS, 1, mz_euc2jis, 0}, - {CS_SJIS, CS_JIS, 1, mz_sjis2jis, 0}, - /* auto-detect Japanese conversions */ - {CS_JIS_AUTO, CS_EUCJP, 1, autoJCCC, 1}, - {CS_SJIS_AUTO, CS_EUCJP, 1, autoJCCC, 0}, - {CS_EUCJP_AUTO, CS_EUCJP, 1, autoJCCC, 0}, - {CS_EUCJP_AUTO, CS_SJIS, 1, autoJCCC, 0}, - {CS_JIS_AUTO, CS_SJIS, 1, autoJCCC, 0}, - {CS_SJIS_AUTO, CS_SJIS, 1, autoJCCC, 0}, - - /* KOREAN */ - {CS_KSC_8BIT, CS_KSC_8BIT, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_2022_KR, CS_KSC_8BIT, 0, (CCCFunc)mz_iso2euckr, 0}, - {CS_KSC_8BIT, CS_2022_KR, 0, (CCCFunc)mz_euckr2iso, 0}, - /* auto-detect Korean conversions */ - {CS_KSC_8BIT_AUTO, CS_KSC_8BIT,1, (CCCFunc)autoKCCC, 0}, - {(CS_2022_KR|CS_AUTO) , CS_KSC_8BIT,1, (CCCFunc)autoKCCC, 0}, - {CS_KSC5601, CS_KSC_8BIT, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_KSC_8BIT, CS_KSC5601, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - - /* SIMPLIFIED CHINESE */ - {CS_GB_8BIT, CS_GB_8BIT, 0, (CCCFunc)mz_hz2gb, 0}, - {CS_GB2312, CS_GB_8BIT, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_GB_8BIT, CS_GB2312, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - - {CS_HZ, CS_GB_8BIT, 0, (CCCFunc)mz_hz2gb, 0}, - /* we need gb2hz routine to complete hz support */ - - /* TRADITIONAL CHINESE */ - {CS_CNS_8BIT, CS_CNS_8BIT, 0, mz_mbNullConv, INTL_CHARLEN_CNS_8BIT}, - - {CS_BIG5, CS_CNS_8BIT, 0, mz_b5toeuctw, 0}, - {CS_CNS_8BIT, CS_BIG5, 0, mz_euctwtob5, 0}, - {CS_X_BIG5, CS_CNS_8BIT, 0, mz_b5toeuctw, 0}, - {CS_CNS_8BIT, CS_X_BIG5, 0, mz_euctwtob5, 0}, - - {CS_BIG5, CS_BIG5, 0, mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_X_BIG5, CS_BIG5, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - {CS_BIG5, CS_X_BIG5, 0, (CCCFunc)mz_mbNullConv, INTL_CHARLEN_CGK}, - - {CS_USRDEF2, CS_USRDEF2, 0, NULL, 0}, - - /* UNICODE */ - {CS_UTF8, CS_UTF8, 0, mz_mbNullConv, INTL_CHARLEN_UTF8}, - - {CS_T61, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_T61}, - {CS_UTF8, CS_T61, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - - {CS_UTF8, CS_UCS2, 0, (CCCFunc)mz_utf82ucs, 0}, - {CS_UTF8, CS_UTF7, 0, (CCCFunc)mz_utf82utf7, 0}, - {CS_UTF8, CS_UCS2_SWAP, 0, (CCCFunc)mz_utf82ucsswap, 0}, - {CS_UTF8, CS_IMAP4_UTF7, 0, (CCCFunc)mz_utf82imap4utf7, 0}, - {CS_UCS2, CS_UTF8, 0, (CCCFunc)mz_ucs2utf8, 0}, - {CS_UCS2, CS_UTF7, 0, (CCCFunc)mz_ucs2utf7, 0}, - {CS_UCS2_SWAP, CS_UTF8, 0, (CCCFunc)mz_ucs2utf8, 0}, - {CS_UCS2_SWAP, CS_UTF7, 0, (CCCFunc)mz_ucs2utf7, 0}, - {CS_UTF7, CS_UTF8, 0, (CCCFunc)mz_utf72utf8, 0}, - - {CS_LATIN1, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_LATIN2, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_8859_5, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_KOI8_R, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_KOI8_U, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_8859_7, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_8859_9, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - {CS_SJIS, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SJIS}, - {CS_EUCJP, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_EUC_JP}, - {CS_KSC_8BIT, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_CGK}, - {CS_BIG5, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_CGK}, - {CS_CNS_8BIT, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_CNS_8BIT}, - {CS_GB_8BIT, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_CGK}, - {CS_TIS620, CS_UTF8, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_SINGLEBYTE}, - - {CS_UTF8, CS_LATIN1, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_LATIN2, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_8859_5, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_KOI8_R, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_KOI8_U, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_8859_7, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_8859_9, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_SJIS, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_EUCJP, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_KSC_8BIT, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_BIG5, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_CNS_8BIT, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_GB_8BIT, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - {CS_UTF8, CS_TIS620, 0, (CCCFunc)mz_AnyToAnyThroughUCS2, INTL_CHARLEN_UTF8}, - - {CS_IMAP4_UTF7, CS_UTF8, 0, (CCCFunc)mz_imap4utf72utf8, 0}, - {0, 0, 0, NULL, 0} - -}; - -#endif /* XP_UNIX */ - - -/* - * this routine is needed to make sure parser and layout see whole - * characters, not partial characters - */ - -typedef enum { - kHZSingle, - kHZSingleTild, - kHZSingleTildLFCR, - kHZDouble, - kHZDoubleGet1, - kHZDoubleTild, - kGBDoubleGet1 /* hacky state which allow GB pass through */ -} HZ_STATE; - -PRIVATE unsigned char * -mz_hz2gb(CCCDataObject obj, const unsigned char *inbuf, int32 inbufsize) -{ - HZ_STATE state; - unsigned char *outbuf; - unsigned char *out; - const unsigned char *in; - int32 i; - - state = (HZ_STATE)INTL_GetCCCCvtflag(obj); - - out = outbuf = XP_ALLOC(inbufsize + 1 + 1); /* 1 for unconverted, 4 for fake escape 1 for NULL */ - XP_ASSERT(NULL != out); - - if((kHZDoubleGet1 == state) ||(kGBDoubleGet1 == state)) - { - /* If we have anything in the unconverted buffer, let's output it - please notice the usage of uncoverted buffer in this routine is different from other, - it is really "converted, but not output yet" buffer - */ - unsigned char* u = INTL_GetCCCUncvtbuf(obj); - XP_ASSERT(NULL != u); - *out++ = *u; - } - - for(in = inbuf, i = 0; i < inbufsize; i++, in++) - { - switch(state) - { - case kHZSingle: - if(0x80 & *in) { - state = kGBDoubleGet1; /* change state */ - *out++ = *in; /* get 1 double byte, output it */ - } - else if('~' == *in) { - state = kHZSingleTild; /* change state */ - } else { - *out++ = *in; /* normal single byte, output it, do not change state */ - } - break; - - case kHZSingleTild: - switch(*in) - { - case '{': - state = kHZDouble; /* change state */ - break; - case '~': - *out++ = '~'; /* a ~~ , generate a ~ */ - state = kHZSingle; /* change state back to normal */ - break; - case LF: /* continue in ASCII mode */ - case CR: /* continue in ASCII mode */ - state = kHZSingleTildLFCR; - break; - default: - *out++ = '~'; - i--; in--; /* unread it */ - state = kHZSingle; - break; - } - break; - - case kHZSingleTildLFCR: - switch(*in) - { - case LF: /* continue in ASCII mode */ - case CR: /* continue in ASCII mode */ - /* eat all following CR or LF */ - break; - - default: - i--; in--; /* unread it */ - state = kHZSingle; - break; - } - break; - - case kHZDouble: - if('~' == *in) { - state = kHZDoubleTild; /* change state, generate nothing */ - } else { - *out++ = 0x80 | *in; /* get one byte in double byte, output it */ - state = kHZDoubleGet1; /* change state */ - } - break; - - case kHZDoubleGet1: - *out++ = 0x80 | *in; /* get the 2nd byte in double byte character, output it with hi-bit on */ - state = kHZDouble; /* change state */ - break; - - case kHZDoubleTild: - if('}' == *in) { - state = kHZSingle; /* change state, output nothing */ - } else { - *out++ = 0x80 | '~'; /* not the escape sequence, output the ~ with hi-bit on */ - *out++ = 0x80 | *in; /* now output it with hi-bit on*/ - state = kHZDouble; /* change state */ - } - break; - - case kGBDoubleGet1: - *out++ = *in; /* get the 2nd byte in double byte character, output it */ - state = kHZSingle; /* change state */ - break; - - - default: - XP_ASSERT(0); - state = kHZSingle; /* change state so the program won't stop */ - break; - } - } - - - if((kHZDoubleGet1 == state) ||(kGBDoubleGet1 == state)) - { - /* We need to make sure we always return in the boundary of a character, - So we back off one byte, store it in the unconverted buf - */ - unsigned char* u = INTL_GetCCCUncvtbuf(obj); - XP_ASSERT(NULL != u); - - out--; /* back up */ - *u = *out; /* store it into unconvert buffer */ - *(u+1) = '\0'; /* null terminate the unconvertered buffer */ - } - INTL_SetCCCCvtflag(obj, ((int32)state)); - - - *out = '\0'; - INTL_SetCCCLen(obj, out - outbuf); - - return outbuf; -} - - - -/* mz_mbNullConv - * this routine is needed to make sure parser and layout see whole - * characters, not partial characters - */ -/* This routine is designed to replace the following routine: - mz_euc2euc - mz_b52b5 - mz_cns2cns - mz_ksc2ksc - mz_sjis2sjis - mz_utf82utf8 - mz_gb2gb - */ -PRIVATE unsigned char * -mz_mbNullConv(CCCDataObject obj, const unsigned char *buf, int32 bufsz) -{ - int32 left_over; - int32 len; - unsigned char *p; - unsigned char *ret; - int32 total; - intl_CharLenFunc CharLenFunc = intl_char_len_func[INTL_GetCCCCvtflag(obj)]; - int charlen = 0; - - /* Get the unconverted buffer */ - unsigned char *uncvtbuf = INTL_GetCCCUncvtbuf(obj); - int32 uncvtsz = strlen((char *)uncvtbuf); - - /* return in the input is nonsense */ - if ((!obj) || (! buf) || (bufsz < 0)) - return NULL; - - /* Allocate Output Buffer */ - total = uncvtsz + bufsz; - ret = (unsigned char *) XP_ALLOC(total + 1); - if (!ret) - { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return NULL; - } - - /* Copy unconverted buffer into the output bufer */ - memcpy(ret, uncvtbuf, uncvtsz); - /* Copy the current input buffer into the output buffer */ - memcpy(ret+uncvtsz, buf, bufsz); - - /* Walk through the buffer and figure out the left_over length */ - for (p=ret, len=total, left_over=0; len > 0; p += charlen, len -= charlen) - { - if((charlen = CharLenFunc(*p)) > 1) - { /* count left_over only if it is multibyte char */ - if(charlen > len) /* count left_over only if the len is less than charlen */ - left_over = len; - }; - } - - /* Copy the left over into the uncvtbuf */ - if(left_over) - memcpy(uncvtbuf, p - charlen, left_over); - /* Null terminated the uncvtbuf */ - uncvtbuf[left_over] = '\0'; - - /* Null terminate the return buffer and set the length */ - INTL_SetCCCLen(obj, total - left_over); - ret[total - left_over] = 0; - - return ret; -} - -/* - buf -> mz_mbNullConv -> frombuf -> INTL_TextToUnicode -> ucs2buf - -> INTL_UnicodeToStr -> tobuf -*/ -MODULE_PRIVATE unsigned char* mz_AnyToAnyThroughUCS2(CCCDataObject obj, const unsigned char *buf, int32 bufsz) -{ - /* buffers */ - unsigned char* fromBuf = NULL; - INTL_Unicode* ucs2Buf = NULL; - unsigned char* toBuf = NULL; - /* buffers' length */ - uint32 ucs2BufLen = 0; - uint32 fromBufLen = 0; - uint32 toBufLen = 0; - /* from & to csid */ - uint16 fromCsid = INTL_GetCCCFromCSID(obj); - uint16 toCsid = INTL_GetCCCToCSID(obj); - - /* get the fromBuf */ - if( !( fromBuf = mz_mbNullConv( obj, buf, bufsz) ) ) - return NULL; - - /* map fromBuf -> ucs2Buf */ - fromBufLen = INTL_GetCCCLen(obj); - ucs2BufLen = INTL_TextToUnicodeLen( fromCsid, fromBuf, fromBufLen ); - - if( !( ucs2Buf = XP_ALLOC( (ucs2BufLen + 1 ) * 2)) ){ - return NULL; - } - - /* be care, the return value is HOW MANY UNICODE IN THIS UCS2BUF, not how many bytes */ - ucs2BufLen = INTL_TextToUnicode( fromCsid, fromBuf, fromBufLen, ucs2Buf, ucs2BufLen ); - - /* map ucs2Buf -> toBuf */ - toBufLen = INTL_UnicodeToStrLen( toCsid, ucs2Buf, ucs2BufLen ); /* we get BYTES here :) */ - - if( !( toBuf = XP_ALLOC( toBufLen + 1 ) ) ) - return NULL; - - INTL_UnicodeToStr( toCsid, ucs2Buf, ucs2BufLen, toBuf, toBufLen ); - - - /* clean up after myself */ - free( fromBuf ); - free( ucs2Buf ); - - INTL_SetCCCLen(obj, XP_STRLEN((char*)toBuf)); - - return toBuf; -} - - -PRIVATE int16 intl_CharLen_SJIS( unsigned char ch) -{ - return ( (((ch >= 0x81) && (ch <= 0x9f)) || ((ch >= 0xe0) && (ch <= 0xfc))) ? 2 : 1); -} -PRIVATE int16 intl_CharLen_EUC_JP( unsigned char ch) -{ - return ( (((ch >= 0xa1) && (ch <= 0xfe)) || (ch == 0x8e)) ? 2 : ((ch ==0x8f) ? 3 : 1)); -} -PRIVATE int16 intl_CharLen_CGK( unsigned char ch) -{ - return ( ((ch >= 0xa1) && (ch <= 0xfe)) ? 2 : 1); -} -PRIVATE int16 intl_CharLen_CNS_8BIT( unsigned char ch) -{ - return ( ((ch >= 0xa1) && (ch <= 0xfe)) ? 2 : ((ch == 0x8e) ? 4 : 1)); -} -PRIVATE int16 intl_CharLen_UTF8( unsigned char ch) -{ - return ( ((ch >= 0xc0) && (ch <= 0xdf)) ? 2 : (((ch >= 0xe0) && (ch <= 0xef)) ? 3 : 1)); -} -PRIVATE int16 intl_CharLen_SingleByte( unsigned char ch) -{ - return 1; -} -PRIVATE int16 intl_CharLen_T61( unsigned char ch) -{ - return ( ((ch >= 0xC0) && (ch <= 0xCF)) ? 2 : 1); -} - - -/* - INTL_DefaultWinCharSetID, - Based on DefaultDocCSID, it determines which Win CSID to use for Display -*/ -PUBLIC int16 INTL_DefaultWinCharSetID(iDocumentContext context) -{ - - if (context) { - INTL_CharSetInfo csi = LO_GetDocumentCharacterSetInfo(context); - if (INTL_GetCSIWinCSID(csi)) - return INTL_GetCSIWinCSID(csi); - } - - return INTL_DocToWinCharSetID(INTL_DefaultDocCharSetID(context)); -} - -/* - INTL_DocToWinCharSetID, - Based on DefaultDocCSID, it determines which Win CSID to use for Display -*/ -/* - - To Do: (ftang) - - We should seperate the DocToWinCharSetID logic from the cscvt_t table - for Cyrillic users. - -*/ -PUBLIC int16 INTL_DocToWinCharSetID(int16 csid) -{ - cscvt_t *cscvtp; - int16 from_csid = 0, to_csid = 0; - - /**************************************************************/ - /*** This section should work for everybody, but for now we ***/ - /*** make it work for vietnamese only (our area). Basically ***/ - /*** instead of returning the first csid found in the rules,***/ - /*** we check the default view encoding first, and return ***/ - /*** that default view csid if a rule is found, otherwise ***/ - /*** it will return the first rule as the usual way ***/ - int16 def_doccsid; - def_doccsid = INTL_DefaultDocCharSetID(0); - if (! ((def_doccsid == CS_VIET_VISCII) || - (def_doccsid == CS_VIET_VPS) || - (def_doccsid == CS_VIET_TCVN) || - (def_doccsid == CS_VIET_VNI) || - (def_doccsid == CS_CP_1258) || - (def_doccsid == CS_VIET_VIQR) - )) { - def_doccsid = 0; - } - - from_csid = csid & ~CS_AUTO; /* remove auto bit */ - - /* Look-up conversion method given FROM and TO char. code sets */ - cscvtp = cscvt_tbl; - while (cscvtp->from_csid) - { - if (cscvtp->from_csid == from_csid) - { -/* - * disgusting hack... - */ -#ifdef XP_UNIX - if (((cscvtp->to_csid == CS_CNS_8BIT) && (TRUE == haveBig5)) || - ((cscvtp->to_csid == CS_8859_5) && (FALSE == have88595)) || - ((cscvtp->to_csid == CS_KOI8_R) && (FALSE == haveKOI8R)) || - ((cscvtp->to_csid == CS_KOI8_U) && (FALSE == haveKOI8U)) || - ((cscvtp->to_csid == CS_CP_1251) && (FALSE == have1251)) ) - { - cscvtp++; - continue; - } -#endif - to_csid = cscvtp->to_csid; - if (def_doccsid) { - /*************************************************/ - /*** This happens for vietnamese only (for now)***/ - cscvtp++; - while (cscvtp->from_csid) { - if ((cscvtp->from_csid == from_csid) && - (cscvtp->to_csid == def_doccsid)) { - to_csid = cscvtp->to_csid; - break; - } - cscvtp++; - } - /*********************************************/ - } - break ; - } - cscvtp++; - } - return to_csid == 0 ? CS_FE_ASCII: to_csid ; -} - - -XP_Bool -INTL_CanAutoSelect(int16 csid) -{ - register cscvt_t *cscvtp; - - cscvtp = cscvt_tbl; - while (cscvtp->from_csid) { - if (cscvtp->from_csid == csid) { - return (cscvtp->autoselect); - } - cscvtp++; - } - return FALSE; -} - - -PUBLIC int16 -INTL_DefaultTextAttributeCharSetID(iDocumentContext context) -{ - if (context) - { - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(context); - if (INTL_GetCSIWinCSID(c)) - return INTL_GetCSIWinCSID(c); - } - - return INTL_DefaultWinCharSetID(context); -} - -#ifdef XP_UNIX -int16 *intl_RearrangeUnicodeFontCSIDList(uint16 len, int16* inlist) -{ - int i; - int outidx, mbidx,miscidx; - int16 *outlist = XP_ALLOC(sizeof(int16) * len); - int16 *mblist = XP_ALLOC(sizeof(int16) * len); - int16 *misclist = XP_ALLOC(sizeof(int16) * len); - XP_ASSERT(NULL != outlist); - XP_ASSERT(NULL != mblist); - XP_ASSERT(NULL != misclist); - /* pick up single byte charset first, multibyte charset second, and - finally, symbol and dingbat - */ - outidx = mbidx = miscidx = 0; - for(i=0;icsidlist[idx++] = INTL_DefaultMailCharSetID(csid); /* add mailcsid first */ - p->csidlist[idx++] = INTL_DefaultNewsCharSetID(csid); /* If the news csid is different add it */ - if(p->csidlist[0] == p->csidlist[1]) - idx--; - /* Add all the csid that we know how to convert to (Without CS_AUTO bit on */ - while (cscvtp->from_csid) - { - if ( (cscvtp->from_csid & ~CS_AUTO) == (csid & ~CS_AUTO)) - { - int16 foundcsid = cscvtp->to_csid & ~CS_AUTO; - XP_Bool notInTheList = TRUE; - int i; - for(i = 0; i < idx ;i++) - { - if(foundcsid == p->csidlist[i]) - notInTheList = FALSE; - } - if(notInTheList) - { - p->csidlist[idx++] = foundcsid; - XP_ASSERT(NUMOFCSIDINITERATOR == idx); - if(NUMOFCSIDINITERATOR == idx) - break; - } - } - cscvtp++; - } - p->csidlist[idx] = 0; /* terminate the list by 0 */ -} - -PUBLIC void INTL_CSIDIteratorCreate( INTL_CSIDIterator* iterator, int16 csid, int flag) -{ - INTL_CSIDIteratorPriv* priv = - (INTL_CSIDIteratorPriv*) XP_ALLOC(sizeof(INTL_CSIDIteratorPriv)); - *iterator = (INTL_CSIDIterator) priv; - if(priv) - { - priv->cur = 0; - switch(flag) - { - case csiditerate_TryIMAP4Search: - intl_FillTryIMAP4SearchIterator (priv, (int16)(csid & ~CS_AUTO)); - break; - default: - XP_ASSERT(FALSE); - break; - } - } - return; -} - -#endif /* MOZ_MAIL_NEWS */ - -PUBLIC void INTL_CSIDIteratorDestroy(INTL_CSIDIterator* iterator) -{ - INTL_CSIDIteratorPriv* priv = (INTL_CSIDIteratorPriv*) *iterator; - *iterator = NULL; - XP_FREE(priv); -} - -PUBLIC XP_Bool INTL_CSIDIteratorNext( INTL_CSIDIterator* iterator, int16* pCsid) -{ - INTL_CSIDIteratorPriv* priv = (INTL_CSIDIteratorPriv*) *iterator; - int16 csid = priv->csidlist[(priv->cur)++]; - if(0 == csid) - { - return FALSE; - } - else - { - *pCsid = csid; - return TRUE; - } -} - - -#ifdef XP_OS2 -/* - * Map Netscape charset to OS/2 codepage - */ - -/* - * This is tricker then you think. For a given charset, first entry should - * be windows codepage, second entry should be OS/2 codepage. - */ - -static uint16 CS2CodePage[] = { - CS_LATIN1 , 1004, /* 2 */ - CS_ASCII , 1252, /* 1 */ - CS_UTF8 , 1208, /* 290 */ - CS_SJIS , 943, /* 260 */ - CS_8859_3 , 913, /* 14 */ - CS_8859_4 , 914, /* 15 */ - CS_8859_5 , 915, /* 16 ISO Cyrillic */ - CS_8859_6 , 1089, /* 17 ISO Arabic */ - CS_8859_7 , 813, /* 18 ISO Greek */ - CS_8859_8 , 916, /* 19 ISO Hebrew */ - CS_8859_9 , 920, /* 20 */ - CS_BIG5 , 950, /* 263 */ - CS_GB2312 , 1386, /* 287 */ - CS_CP_1250 , 1250, /* 44 CS_CP_1250 is window Centrl Europe */ - CS_CP_1251 , 1251, /* 41 CS_CP_1251 is window Cyrillic */ - CS_LATIN2 , 912, /* 10 */ - CS_CP_1253 , 1253, /* 43 CS_CP_1253 is window Greek */ - CS_CP_1254 , 1254, /* 45 CS_CP_1254 is window Turkish */ - CS_CP_1257 , 1257, /* 61 Windows Baltic */ - CS_CP_1258 , 1258, /* 62 Windows Vietnamese */ - CS_CP_850 , 850, /* 53 PC Latin 1 */ - CS_CP_852 , 852, /* 54 PC Latin 2 */ - CS_CP_855 , 855, /* 55 PC Cyrillic */ - CS_CP_857 , 857, /* 56 PC Turkish */ - CS_CP_862 , 862, /* 57 PC Hebrew */ - CS_CP_864 , 864, /* 58 PC Arabic */ - CS_CP_866 , 866, /* 59 PC Russian */ - CS_CP_874 , 874, /* 60 PC Thai */ - CS_EUCJP , 930, /* 261 */ - CS_GB_8BIT , 1386, /* 264 */ - CS_KOI8_R , 878, /* 39 */ - CS_KSC5601 , 949, /* 284 */ - CS_MAC_CE , 1282, /* 11 */ - CS_MAC_CYRILLIC, 1283, /* 40 */ - CS_MAC_GREEK , 1280, /* 42 */ - CS_MAC_ROMAN , 1275, /* 6 */ - CS_MAC_TURKISH, 1281, /* 46 */ - CS_UCS2 , 1200, /* 810 */ - CS_USRDEF2 , 1252, /* 38 */ - 0, 0, -}; - -/* - * MapCpToCsNum: Search table and return netscape codeset name - */ -uint16 INTL_MapCpToCsNum(uint16 cpid) { - uint16 * up; - - up = CS2CodePage; - while (*up) { - if (up[1] == cpid) { - return up[0]; - } - up += 2; - } - return 0; -} - - -/* - * MapCsToCpNum: Search table and return codepage - */ -uint16 INTL_MapCsToCpNum(uint16 csid) { - uint16 * up; - - up = CS2CodePage; - while (*up) { - if (up[0] == csid) { - return up[1]; - } - up += 2; - } - return 0; -} - - -/* - * Map from process codepage to default charset - */ -int16 INTL_MenuFontCSID(void) { - ULONG codepage, xxx; - - DosQueryCp(4, &codepage, &xxx); - return INTL_MapCpToCsNum(codepage); -} - - -/* - * This returns the ID for the - */ -int INTL_MenuFontID() { - return 0; -} - -#endif /* XP_OS2 */ - - -#if defined(MOZ_MAIL_NEWS) -/* - * Access a conversion flag for hankaku->zenkaku kana conversion for mail. - */ -XP_Bool INTL_GetCCCCvtflag_SendHankakuKana(CCCDataObject obj) -{ - return ((CS_JIS == (INTL_GetCCCToCSID(obj) & ~CS_AUTO)) && - (INTL_SEND_HANKAKU_KANA & INTL_GetCCCCvtflag(obj))); -} - -void INTL_SetCCCCvtflag_SendHankakuKana(CCCDataObject obj, XP_Bool flag) -{ - int32 cvtflag; - if (CS_JIS == (INTL_GetCCCToCSID(obj) & ~CS_AUTO)) - { - cvtflag = INTL_GetCCCCvtflag(obj); - cvtflag = flag ? (INTL_SEND_HANKAKU_KANA | cvtflag) : (~INTL_SEND_HANKAKU_KANA & cvtflag); - INTL_SetCCCCvtflag(obj, cvtflag); - } -} -#endif /* MOZ_MAIL_NEWS */ - - -static int16 xp_res_csid = CS_DEFAULT; -INTLCharSetID INTL_GetCharSetID(INTL_CharSetID_Selector selector) -{ - if( INTL_XPResourcesCsidSel == selector) - { - if(CS_DEFAULT == xp_res_csid) - { - xp_res_csid = INTL_CharSetNameToID( - INTL_ResourceCharSet()); - } - return xp_res_csid; - } - return FE_GetCharSetID(selector); -} diff --git a/mozilla/lib/libi18n/fontencd.c b/mozilla/lib/libi18n/fontencd.c deleted file mode 100644 index ceb138a3b4f..00000000000 --- a/mozilla/lib/libi18n/fontencd.c +++ /dev/null @@ -1,22 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* fontencd.c */ - -#include "intlpriv.h" - - diff --git a/mozilla/lib/libi18n/intl_csi.c b/mozilla/lib/libi18n/intl_csi.c deleted file mode 100644 index 1f9c5d91774..00000000000 --- a/mozilla/lib/libi18n/intl_csi.c +++ /dev/null @@ -1,399 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* intl_csi.c International Character Set Information - * - * This file contains the INTL_CSI accessor functions - * - * This allows the i18n character set data to be - * changed without (hopefully) changing all the - * code that accesses it. - * - * UNFORTUNATELY, as of this date Oct. 28, 1996 - * there is not document context so we are still - * using the old MWContext. - * When this is fix all that is needed should - * be change the USE_REAL_DOCUMENT_CONTEXT flag - * and recompile (and test of course). - */ - -#include "intlpriv.h" -#include "xp.h" -#include "libi18n.h" -#include "intl_csi.h" - -struct OpaqueINTL_CharSetInfo { - uint16 doc_csid; - uint16 http_doc_csid; - uint16 meta_doc_csid; - uint16 override_doc_csid; - uint16 win_csid; - unsigned char *mime_charset; - int relayout; -}; - -typedef enum -{ - OVERRIDE_CSID_TYPE, - HTTP_CSID_TYPE, - META_CSID_TYPE, - DOC_CSID_TYPE -} CsidType; - -PRIVATE uint16 get_charset_tag(char *charset_tag); - -/* - * - * Setup the character set info - * - */ -void -INTL_CSIInitialize(INTL_CharSetInfo c, XP_Bool is_metacharset_reload, - char *http_charset, int doc_type, uint16 default_doc_csid) -{ - uint16 http_doc_csid = get_charset_tag(http_charset); - uint16 win_csid; - - XP_ASSERT(NULL != c); - /* - * Initiliaze the Character-Set-Info (CSI) - * (unless if we are doing a meta_charset_reload) - */ - if (!is_metacharset_reload) - INTL_CSIReset(c); - - /* - * Setup the CSI with the information we currently know - */ - - /* first check if this is a metacharset reload */ - if (is_metacharset_reload) - { - INTL_SetCSIRelayoutFlag(c, METACHARSET_RELAYOUTDONE); - } - /* Check for a doc csid override */ - else if (DOC_CSID_KNOWN(INTL_GetCSIOverrideDocCSID(c))) - { - INTL_SetCSIDocCSID(c, INTL_GetCSIOverrideDocCSID(c)); - } - /* if we have a HTTP charset tag then use it */ - else if (DOC_CSID_KNOWN(http_doc_csid)) - { - INTL_SetCSIHTTPDocCSID(c, http_doc_csid); - } - else /* normal case */ - { - uint16 init_doc_csid = default_doc_csid; - /* - * mail/news sometimes has the wrong meta charset - * so for mail/news we always ignore the meta charset tag - * which causes us to use the encoding the user set in the - * encoding menu - */ - if (!(MAIL_NEWS_TYPE(doc_type))) - init_doc_csid = CS_DEFAULT; - -#ifdef XP_UNIX - /* - * The PostScript and Text FEs inherit the doc_csid from - * the parent context in order to pick up the per-window - * default. Apparently, this already works for some - * reason on Windows. Don't know about Mac. -- erik - */ - if ((doc_type != MWContextPostScript) && - (doc_type != MWContextText)) -#endif /* XP_UNIX */ - INTL_SetCSIDocCSID(c, init_doc_csid /*CS_DEFAULT*/ ); - } - - /* - * alot of code (parsing/layout/FE) wants to know - * the encoding so we must set something - */ - if (DOC_CSID_KNOWN(INTL_GetCSIDocCSID(c))) - win_csid = INTL_DocToWinCharSetID(INTL_GetCSIDocCSID(c)); - else - win_csid = INTL_DocToWinCharSetID(default_doc_csid); - INTL_SetCSIWinCSID(c, win_csid); /* true until we know otherwise */ -} - -PRIVATE void -set_csid(INTL_CharSetInfo c, uint16 csid, CsidType type) -{ - XP_ASSERT(NULL != c); - - if (OVERRIDE_CSID_TYPE == type) - { - c->override_doc_csid = csid; - c->doc_csid = csid; - } - else if (HTTP_CSID_TYPE == type) - { - c->http_doc_csid = csid; - if (CS_DEFAULT == c->override_doc_csid) - c->doc_csid = csid; - } - else if (META_CSID_TYPE == type) - { - c->meta_doc_csid = csid; - if ( (CS_DEFAULT == c->override_doc_csid) - && (CS_DEFAULT == c->http_doc_csid)) - c->doc_csid = csid; - } - else if (DOC_CSID_TYPE == type) - { - if ( (CS_DEFAULT == c->override_doc_csid) - && (CS_DEFAULT == c->http_doc_csid) - && (CS_DEFAULT == c->meta_doc_csid)) - c->doc_csid = csid; - } - else - { - XP_ASSERT(0); - } -} - -void -INTL_CSIReportMetaCharsetTag(INTL_CharSetInfo c, char *charset_tag, int type) -{ - int16 doc_csid; - - XP_ASSERT(charset_tag); - doc_csid = INTL_CharSetNameToID(charset_tag); - - /* ignore invalid tags */ - if (doc_csid == CS_UNKNOWN) - return; - - /* mail and news ignores meta charset tags since some are wrong */ - if (MAIL_NEWS_TYPE(type)) - return; - - /* only honor the first (meta or http) charset tag */ - if (INTL_GetCSIRelayoutFlag(c) == METACHARSET_NONE) - { - uint16 old_doc_csid = INTL_GetCSIDocCSID(c); - - INTL_SetCSIMetaDocCSID(c, doc_csid); - /* ignore subsequent meta charset tags */ - INTL_SetCSIRelayoutFlag(c, METACHARSET_HASCHARSET); - - /* - * if we already set up the converter wrong we have to reload - */ - if (DOC_CSID_KNOWN(old_doc_csid) - && ((old_doc_csid & ~CS_AUTO) != doc_csid)) - INTL_SetCSIRelayoutFlag(c, METACHARSET_REQUESTRELAYOUT); - /* - * if we told the FE the wrong win_csid we have to reload - * (we had to tell the FE something so it could do layout - * while we were looking for the metacharset tag) - */ - else if (INTL_DocToWinCharSetID(doc_csid) != INTL_GetCSIWinCSID(c)) - INTL_SetCSIRelayoutFlag(c, METACHARSET_REQUESTRELAYOUT); - } -} - -PRIVATE uint16 get_charset_tag(char *charset_tag) -{ - uint16 csid; - - /* validate the http_charset */ - if ((NULL == charset_tag) || ('\0' == *charset_tag)) - return CS_UNKNOWN; - - csid = INTL_CharSetNameToID(charset_tag); - - if (CS_DEFAULT == csid) - csid = CS_UNKNOWN; - - return csid; -} - - -INTL_CharSetInfo -LO_GetDocumentCharacterSetInfo(MWContext *context) -{ - XP_ASSERT(context); - XP_ASSERT(INTL_TAG == context->INTL_tag); - XP_ASSERT(NULL != context->INTL_CSIInfo); - return(context->INTL_CSIInfo); -} - - -INTL_CharSetInfo -INTL_CSICreate(void) -{ - INTL_CharSetInfo c; - -#if (defined(DEBUG_bstell) || defined(DEBUG_nhotta) || defined(DEBUG_ftang)) -#define BSTELLS_FREE_TRICK_OFFSET 64 - /* I use (abuse) the malloc system to find improper frees */ - { - char *p; - p = (char *)XP_CALLOC(1, - BSTELLS_FREE_TRICK_OFFSET+sizeof(struct OpaqueINTL_CharSetInfo)); - c = (INTL_CharSetInfo)(p + BSTELLS_FREE_TRICK_OFFSET); - } -#else - c = (INTL_CharSetInfo)XP_CALLOC(1, sizeof(struct OpaqueINTL_CharSetInfo)); -#endif - return c; -} - -void -INTL_CSIDestroy(INTL_CharSetInfo c) -{ - XP_ASSERT(c); -#if (defined(DEBUG_bstell) || defined(DEBUG_nhotta) || defined(DEBUG_ftang)) - { - char *p = (char *)c; - XP_FREE(p - BSTELLS_FREE_TRICK_OFFSET); - } -#else - XP_FREE(c); -#endif -} - -void -INTL_CSIReset(INTL_CharSetInfo c) -{ - INTL_SetCSIOverrideDocCSID (c, CS_DEFAULT); - INTL_SetCSIHTTPDocCSID (c, CS_DEFAULT); - INTL_SetCSIMetaDocCSID (c, CS_DEFAULT); - INTL_SetCSIDocCSID (c, CS_DEFAULT); - INTL_SetCSIWinCSID (c, CS_DEFAULT); - INTL_SetCSIMimeCharset(c, NULL); - INTL_SetCSIRelayoutFlag(c, METACHARSET_NONE); -} - -/* ----------- CSI CSID ----------- */ -/* Override is strongest. Must set doc_csid */ -void -INTL_SetCSIOverrideDocCSID (INTL_CharSetInfo c, int16 doc_csid) -{ - set_csid(c, doc_csid, OVERRIDE_CSID_TYPE); -} - -/* Next strongest. Set doc_csid if no override */ -void -INTL_SetCSIHTTPDocCSID (INTL_CharSetInfo c, int16 doc_csid) -{ - set_csid(c, doc_csid, HTTP_CSID_TYPE); -} - -/* Next strongest. Set doc_csid if no override */ -void -INTL_SetCSIMetaDocCSID (INTL_CharSetInfo c, int16 doc_csid) -{ - set_csid(c, doc_csid, META_CSID_TYPE); -} - -/* Meta charset is weakest. Only set doc_csid if no http or override */ -void -INTL_SetCSIDocCSID (INTL_CharSetInfo c, int16 doc_csid) -{ - set_csid(c, doc_csid, DOC_CSID_TYPE); -} - -int16 -INTL_GetCSIDocCSID(INTL_CharSetInfo c) -{ - XP_ASSERT(c); - return c->doc_csid; -} - -int16 -INTL_GetCSIMetaDocCSID(INTL_CharSetInfo c) -{ - XP_ASSERT(c); - return c->meta_doc_csid; -} - -int16 -INTL_GetCSIOverrideDocCSID(INTL_CharSetInfo c) -{ - XP_ASSERT(c); - return c->override_doc_csid; -} - -/* ----------- Window CSID ----------- */ - -void -INTL_SetCSIWinCSID(INTL_CharSetInfo c, int16 win_csid) -{ - XP_ASSERT(c); - c->win_csid = win_csid; -} - -int16 -INTL_GetCSIWinCSID(INTL_CharSetInfo c) -{ - XP_ASSERT(c); - return c->win_csid; -} - -/* ----------- Mime CSID ----------- */ -char * -INTL_GetCSIMimeCharset (INTL_CharSetInfo c) -{ - XP_ASSERT(c); - return (char *)c->mime_charset; -} - -void -INTL_SetCSIMimeCharset(INTL_CharSetInfo c, char *mime_charset) -{ - unsigned char *p; - XP_ASSERT(c); - - if (c->mime_charset) - { - XP_FREE(c->mime_charset); - c->mime_charset = NULL; - } - - if (NULL == mime_charset) - return; - - c->mime_charset = (unsigned char *)XP_STRDUP(mime_charset); - if (NULL == c->mime_charset) - return; - - /* Legitimate charset names must be in ASCII and case insensitive */ - /* convert to lower case */ - for (p=c->mime_charset; *p; p++) - *p = tolower(*p); - return; -} - -/* ----------- Relayout Flag ----------- */ -int16 -INTL_GetCSIRelayoutFlag(INTL_CharSetInfo c) -{ - XP_ASSERT(c); - return c->relayout; -} - -void -INTL_SetCSIRelayoutFlag(INTL_CharSetInfo c, int16 relayout) -{ - XP_ASSERT(c); - c->relayout = relayout; -} - - diff --git a/mozilla/lib/libi18n/intlcomp.c b/mozilla/lib/libi18n/intlcomp.c deleted file mode 100644 index cd1e7bb6fc1..00000000000 --- a/mozilla/lib/libi18n/intlcomp.c +++ /dev/null @@ -1,634 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* intlcomp.c */ -/* - This file implement - INTL_MatchOneChar - INTL_MatchOneCaseChar - INTL_Strstr - INTL_Strcasestr -*/ -#include "intlpriv.h" -#include "pintlcmp.h" -#if defined(XP_MAC) -#include -#endif - -#define CHECK_CSID_AND_ASSERT(csid) \ -{ \ - XP_ASSERT(CS_UNKNOWN != (csid)); /* Please don't pass in CS_UNKNOWN here, you need to know the csid */ \ - XP_ASSERT(CS_DEFAULT != (csid)); /* Please don't pass in CS_DEFAULT here, you need to know the csid */ \ - XP_ASSERT(CS_ASCII != (csid)); /* Please don't pass in CS_ASCII here, you need to know the csid */ \ -} -/* Private Function Prototype */ -extern unsigned char lower_lookup_ascii[]; -#define INTL_SingleByteToLower(lower, ch) ((ch & 0x80) ? (lower[(ch & 0x7f)]) : (lower_lookup_ascii[ch])) -MODULE_PRIVATE void INTL_DoubleByteToLower(DoubleByteToLowerMap *, unsigned char* , unsigned char* ); - - -PRIVATE void intl_strip_CRLF(unsigned char* str) -{ - unsigned char* in; - unsigned char* out; - for(in = out = str; 0 != *in; in++) - { - if((CR != *in) && (LF != *in)) - *out++ = *in; - } - *out = 0; -} -/* - Function intl_caseless_normalize - This function have side effect to modify the string it got. - It will normalize the string in a caseless matter -*/ -PRIVATE void intl_caseless_normalize(int16 csid, unsigned char* str) -{ - unsigned char *sb_tolowermap = INTL_GetSingleByteToLowerMap(csid); - unsigned char *p; - - CHECK_CSID_AND_ASSERT(csid); - XP_ASSERT(NULL != str); - - intl_strip_CRLF(str); - - if(SINGLEBYTE == INTL_CharSetType(csid)) { - /* for singlebyte csid */ - for(p = str; *p != 0 ; p++) - *p = INTL_SingleByteToLower(sb_tolowermap, *p); - return; - } - else - { - /* for multibyte csid */ - DoubleByteToLowerMap *db_tolowermap = INTL_GetDoubleByteToLowerMap(csid); - unsigned char *p; - int l; - for(p = str; *p != 0; p += l) - { - l = INTL_CharLen(csid ,p); /* *** FIX ME: IMPROVE PERFORMANCE */ - switch(l) - { - case 1: - *p = INTL_SingleByteToLower(sb_tolowermap, *p); - break; - case 2: - if(0 == *(p+1)) - { - /* Check weather we hit partial characters. This happen when we use wrong csid */ - /* However, we should not pass array bondary even we use wrong csid */ - XP_ASSERT(FALSE); - return; /* get partial characters, return */ - } - INTL_DoubleByteToLower(db_tolowermap, p, p); - break; - default: - { - unsigned char *ck; - /* Check weather we hit partial characters. This happen when we use wrong csid */ - /* However, we should not pass array bondary even we use wrong csid */ - for(ck = p+l-1; ck != p ;ck--) - { - if(0 == *ck) - { - XP_ASSERT(FALSE); - return; /* get partial characters, return */ - } - } - /* We current do not handle 3 byte normalization. We need to work on this for UTF8 */ - } - break; - } - - } - } -} - - - -PRIVATE void INTL_DoubleByteToLower(DoubleByteToLowerMap *db_tolowermap, unsigned char* lowertext, unsigned char* text) -{ - DoubleByteToLowerMap *p; - for(p = db_tolowermap; !((p->src_b1 == 0) && (p->src_b2_start == 0)); p++) - { - if( (p->src_b1 == text[0]) && - (p->src_b2_start <= text[1] ) && - (p->src_b2_end >= text[1]) ) - { - lowertext[0] = p->dest_b1; - lowertext[1] = text[1] - p->src_b2_start + p->dest_b2_start; - return; - } - else - { /* The map have to be sorted order to implement a fast search */ - if(p->src_b1 > text[0]) - break; - else { - if((p->src_b1 == text[0]) && (p->src_b2_start > text[1])) - break; - } - } - } - lowertext[0] = text[0]; - lowertext[1] = text[1]; - return; -} - -PUBLIC XP_Bool INTL_MatchOneChar(int16 csid, unsigned char *text1,unsigned char *text2,int *charlen) -{ - if((INTL_CharSetType(csid) == SINGLEBYTE) ) { - unsigned char *sb_tolowermap; - *charlen = 1; - sb_tolowermap = INTL_GetSingleByteToLowerMap(csid); - return( INTL_SingleByteToLower(sb_tolowermap,text1[0]) == INTL_SingleByteToLower(sb_tolowermap, text2[0])); - } - else - { - int l1, l2; - l1 = INTL_CharLen(csid ,text1); /* *** FIX ME: IMPROVE PERFORMANCE */ - l2 = INTL_CharLen(csid ,text2); /* *** FIX ME: IMPROVE PERFORMANCE */ - if(l1 != l2) - return FALSE; - if(l1 == 1) - { - unsigned char *sb_tolowermap; - *charlen = 1; - sb_tolowermap = INTL_GetSingleByteToLowerMap(csid); - return( INTL_SingleByteToLower(sb_tolowermap,text1[0]) == INTL_SingleByteToLower(sb_tolowermap, text2[0])); - } - else - { - if(l1 == 2) - { - DoubleByteToLowerMap *db_tolowermap; - unsigned char lowertext1[2], lowertext2[2]; - *charlen = 2; - db_tolowermap = INTL_GetDoubleByteToLowerMap(csid); - INTL_DoubleByteToLower(db_tolowermap, lowertext1, text1); - INTL_DoubleByteToLower(db_tolowermap, lowertext2, text2); - return( ( lowertext1[0] == lowertext2[0] ) && - ( lowertext1[1] == lowertext2[1] ) ); - } - else - { - /* for character which is neither one byte nor two byte, we cannot ignore case for them */ - int i; - *charlen = l1; - for(i=0;i tmp_len) - { - tmp_len = rt; - if (out_string = (unsigned char *) XP_REALLOC((void *) out_string, tmp_len)) - rt = strxfrm(out_string, in_string, tmp_len); - } - - /* Return the output of strxfrm if success. */ - if (rt != (size_t)-1 && *out_string) - out_string = out_string; - else - XP_FREEIF(out_string); - } - - return out_string; -} -#endif /* XP_WIN32 */ -#if defined(XP_MAC) -static char *FEINTL_CreateCollationKeyUsingOS(const char *in_string, int16 wincsid) -{ - char *out_string = NULL; - char *temp_string; - int in_string_len = XP_STRLEN(in_string); - int i; - - /* Currently only supports Latin1. */ - if (wincsid != CS_ASCII && wincsid != CS_LATIN1 && wincsid != CS_DEFAULT) - return NULL; - - /* INTL_ConvertLineWithoutAutoDetect may alter input string. */ - temp_string = XP_STRDUP(in_string); - if (temp_string != NULL) - { - /* Convert to MacRoman. */ - out_string = (char *) INTL_ConvertLineWithoutAutoDetect (wincsid, CS_MAC_ROMAN, (unsigned char *) temp_string, in_string_len); - /* Set the converted string if conversion was applied and the input string was not altered. */ - if (out_string != NULL && out_string != temp_string) - { - XP_FREE(temp_string); - temp_string = out_string; - } - out_string = (char *) XP_ALLOC(in_string_len * 2 + 1); - if (out_string != NULL) - { - /* Copy original string. */ - for (i = 0; i < in_string_len; i++) - out_string[i*2+1] = temp_string[i]; - UppercaseStripDiacritics(temp_string, in_string_len, FontToScript(1)); - /* Copy uppercased string. */ - for (i = 0; i < in_string_len; i++) - out_string[i*2] = temp_string[i]; - /* Terminate the string. */ - out_string[in_string_len * 2] = '\0'; - } - XP_FREE(temp_string); - } - - return out_string; -} -#endif /* XP_MAC */ -#if defined(XP_UNIX) -static char *FEINTL_CreateCollationKeyUsingOS(const char *in_string, int16 wincsid) -{ - return NULL; -} -#endif /* XP_UNIX */ - -static char *INTL_CreateCollationKeyUsingOS(const char *in_string, int16 wincsid) -{ - char *out_string; - unsigned char *tmp; - - /* Create a collatable string */ - if (INTL_CharSetType(wincsid) == SINGLEBYTE) - { - /* Front End call to create a collation key. */ - out_string = FEINTL_CreateCollationKeyUsingOS(in_string, wincsid); - if (out_string) - return out_string; - - /* Otherwise just lowercase the string. */ - out_string = XP_STRDUP(in_string); - tmp = (unsigned char *) out_string; - while (*tmp) - { - *tmp = (unsigned char) XP_TO_LOWER((int)*tmp); - tmp++; - } - } - else if (wincsid & MULTIBYTE) - { - out_string = XP_STRDUP(in_string); - tmp = (unsigned char *) out_string; - while (*tmp) - { - /* Lower case for Ascii */ - if (*tmp < 128) - { - *tmp = (unsigned char) XP_TO_LOWER((int)*tmp); - tmp++; - } - else - { - int bytes = INTL_CharLen(wincsid, tmp); - /* ShiftJIS specific, shift hankaku kana in front of zenkaku. */ - if (wincsid == CS_SJIS) - { - if (*tmp >= 0xA0 && *tmp < 0xE0) - { - *tmp -= (0xA0 - 0x81); - } - else if (*tmp >= 0x81 && *tmp < 0xA0) - { - *tmp += (0xA0 - 0x81); - } - } - tmp += bytes; - } - } - } - - return out_string; -} - -#if defined(LIBNLS_COLLATE) -static Collation *collation = NULL; -static char *INTL_CreateCollationKeyUsingLibNLS(const char *in_string, int16 wincsid) -{ - return NULL; -} -#endif /* LIBNLS_COLLATE */ - -/* - * Create a collation key using default system locale. - */ -PUBLIC char *INTL_CreateCollationKeyByDefaultLocale(const char *in_string, int16 wincsid, int32 collation_flag) -{ - char *out_string; - - /* For future enhancement */ - collation_flag = 0; - - /* CS_DEFAULT is not accepted by i18n unicode converter. - * In future, this should be taken care by the caller. - */ - if (CS_DEFAULT == wincsid) - wincsid = CS_LATIN1; - - /* Create a collation key. */ -#if defined(LIBNLS_COLLATE) - out_string = INTL_CreateCollationKeyUsingLibNLS(in_string); -#else - out_string = INTL_CreateCollationKeyUsingOS(in_string, wincsid); -#endif - - return out_string; -} - -/* - * Compare two collation keys. - */ -PUBLIC int INTL_Compare_CollationKey(const char *key1, const char *key2) -{ - return XP_MEMCMP((const void *) key1, (const void *) key2, XP_STRLEN(key1)); -} - -/* - * Decode, convert and create a message header. Then create and return a collatable string. - */ -PUBLIC char *INTL_DecodeMimePartIIAndCreateCollationKey(const char *header, int16 wincsid, int32 collation_flag) -{ - char *temp_string; - char *decoded_string; - char *out_string; - - /* For future enhancement */ - collation_flag = 0; - - /* Allocate the temp string because INTL_DecodeMimePartIIStr may alter input string. */ - temp_string = XP_STRDUP(header); - if (temp_string == NULL) - return NULL; - - /* Decode and Convert */ - decoded_string = INTL_DecodeMimePartIIStr(temp_string, wincsid, FALSE); - - /* Free the temp string. */ - if (decoded_string != temp_string) - XP_FREE(temp_string); - /* No decode or conversion done, allocate for out string. */ - if (decoded_string == NULL) - decoded_string = XP_STRDUP(header); - if (decoded_string == NULL) - return NULL; - - /* Create a collation key. */ - out_string = INTL_CreateCollationKeyByDefaultLocale(decoded_string, wincsid, collation_flag); - - /* Return decoded string in case no collation key created. */ - if (out_string != NULL) - XP_FREE(decoded_string); - else - out_string = decoded_string; - - - return out_string; -} - -#endif /* MOZ_MAIL_NEWS */ - - - diff --git a/mozilla/lib/libi18n/intlpriv.h b/mozilla/lib/libi18n/intlpriv.h deleted file mode 100644 index 2e9a7464d92..00000000000 --- a/mozilla/lib/libi18n/intlpriv.h +++ /dev/null @@ -1,349 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* intlpriv.h */ - -#ifndef _INTLPRIV_H_ -#define _INTLPRIV_H_ - -#include "xp.h" -#include "intl_csi.h" -#include "libi18n.h" - - -#define UNCVTBUF_SIZE 8 /* At least: longest ESC Seq + Char Bytes - 1 */ -#define DOC_CSID_KNOWN(x) (((x) != CS_DEFAULT) && ((x) != CS_UNKNOWN)) - -/* Some constants for UCS-2 detection */ -#define BYTE_ORDER_MARK 0xFEFF -#define NEEDS_SWAP_MARK 0xFFFE - -/* - * UTF8 defines and macros - */ -#define ONE_OCTET_BASE 0x00 /* 0xxxxxxx */ -#define ONE_OCTET_MASK 0x7F /* x1111111 */ -#define CONTINUING_OCTET_BASE 0x80 /* 10xxxxxx */ -#define CONTINUING_OCTET_MASK 0x3F /* 00111111 */ -#define TWO_OCTET_BASE 0xC0 /* 110xxxxx */ -#define TWO_OCTET_MASK 0x1F /* 00011111 */ -#define THREE_OCTET_BASE 0xE0 /* 1110xxxx */ -#define THREE_OCTET_MASK 0x0F /* 00001111 */ -#define FOUR_OCTET_BASE 0xF0 /* 11110xxx */ -#define FOUR_OCTET_MASK 0x07 /* 00000111 */ -#define FIVE_OCTET_BASE 0xF8 /* 111110xx */ -#define FIVE_OCTET_MASK 0x03 /* 00000011 */ -#define SIX_OCTET_BASE 0xFC /* 1111110x */ -#define SIX_OCTET_MASK 0x01 /* 00000001 */ - -#define IS_UTF8_1ST_OF_1(x) (( (x)&~ONE_OCTET_MASK ) == ONE_OCTET_BASE) -#define IS_UTF8_1ST_OF_2(x) (( (x)&~TWO_OCTET_MASK ) == TWO_OCTET_BASE) -#define IS_UTF8_1ST_OF_3(x) (( (x)&~THREE_OCTET_MASK) == THREE_OCTET_BASE) -#define IS_UTF8_1ST_OF_4(x) (( (x)&~FOUR_OCTET_MASK ) == FOUR_OCTET_BASE) -#define IS_UTF8_1ST_OF_5(x) (( (x)&~FIVE_OCTET_MASK ) == FIVE_OCTET_BASE) -#define IS_UTF8_1ST_OF_6(x) (( (x)&~SIX_OCTET_MASK ) == SIX_OCTET_BASE) -#define IS_UTF8_2ND_THRU_6TH(x) \ - (( (x)&~CONTINUING_OCTET_MASK ) == CONTINUING_OCTET_BASE) -#define IS_UTF8_1ST_OF_UCS2(x) \ - IS_UTF8_1ST_OF_1(x) \ - || IS_UTF8_1ST_OF_2(x) \ - || IS_UTF8_1ST_OF_3(x) - - - -/* Some constants for UCS-2 detection */ -#define BYTE_ORDER_MARK 0xFEFF -#define NEEDS_SWAP_MARK 0xFFFE - -/* exported functions from unicvt.c */ - -MODULE_PRIVATE UNICVTAPI unsigned char *mz_ucs2utf8(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE UNICVTAPI unsigned char *mz_ucs2utf7(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE UNICVTAPI unsigned char *mz_utf82ucs(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE UNICVTAPI unsigned char *mz_utf82ucsswap(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE UNICVTAPI unsigned char *mz_utf72utf8(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE UNICVTAPI unsigned char *mz_utf82utf7(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE UNICVTAPI unsigned char *mz_imap4utf72utf8(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE UNICVTAPI unsigned char *mz_utf82imap4utf7(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE UNICVTAPI int16 utf8_to_ucs2_char(const unsigned char *utf8p, int16 buflen, uint16 *ucs2p); -MODULE_PRIVATE UNICVTAPI int32 utf8_to_ucs2_buffer(const unsigned char *utf8p, int16 utf8len, int *parsed_cnt, int *invalid_cnt, uint16 *ucs2p, int32 ucs2len); - - - /* values for ASCII chars */ -#define ESC 0x1B /* ESC character */ -#define NL 0x0A /* newline */ -#undef CR -#define CR 0x0D /* carriage return */ -#define DOLLAR 0x24 /* carriage return */ - - /* values for EUC shift chars */ -#define SS2 0x8E /* Single Shift 2 */ -#define SS3 0x8F /* Single Shift 3 */ - - /* JIS encoding mode flags */ -#define JIS_Roman 0 -#define JIS_208_83 1 -#define JIS_HalfKana 2 -#define JIS_212_90 3 - -/* I am using low nibble for the ESC flag and the next high nibble for Shift */ -#define KSC_5601_87 0x04 - -/* Default state is SHIFT_OUT when we begin. - * So SHIFT_IN should have value 0x0- */ -#define SHIFT_IN 0x00 -#define SHIFT_OUT 0x10 - -/* The actual values to be output for SHIFTING */ -#define SO 0x0e -#define SI 0x0f - -/* Some masks for computation */ -#define ESC_MASK 0x0F -#define SHIFT_MASK 0xF0 - - -/* - * Shift JIS Encoding - * 1st Byte Range 2nd Byte Range - * ASCII/JIS-Roman 0x21-0x7F n/a - * 2-Byte Char(low range) 0x81-0x9F 0x40-0x7E, 0x80-0xFC - * Half-width space(non-std) 0xA0 n/a - * Half-width katakana 0xA1-0xDF n/a - * 2-Byte Char(high range) 0xE0-0xEF 0x40-0x7E, 0x80-0xFC - * User Defined(non-std) 0xF0-0xFC 0x40-0x7E, 0x80-0xFC - * - * JIS Encoding - * 1st Byte Range 2nd Byte Range - * ASCII/JIS-Roman 0x21-0x7E n/a - * Half-width katakana(non-std) 0x21-0x5F n/a - * 2-Byte Char 0x21-7E 0x21-7E - * - * Japanese EUC Encoding - * 1st Byte Range 2nd Byte Range 3rd Byte Range - * ASCII/JIS-Roman 0x21-0x7E n/a n/a - * JIS X 0208-1990 0xA0-0xFF 0xA0-0xFF n/a - * Half-width katakana SS2 0xA0-0xFF n/a - * JIS X 0212-1990 SS3 0xA0-0xFF 0xA0-0xFF - * - * - * List of ISO2022-INT Escape Sequences: - * - * SUPPORTED: - * ASCII ESC ( B G0 - * JIS X 0201-Roman ESC ( J G0 - * Half-width Katakana ESC ( I - * JIS X 0208-1978 ESC $ @ G0 - * JIS X 0208-1983 ESC $ B G0 - * JIS X 0212-1990 ESC $ ( D G0 (to EUC only) - * ISO8859-1 ESC - A G1 - * - * UNSUPPORTED: - * GB 2312-80 ESC $ A G0 - * KS C 5601-1987 ESC $ ) C G1 - * CNS 11643-1986-1 ESC $ ( G G0 - * CNS 11643-1986-2 ESC $ ( H G0 - * ISO8859-7(Greek) ESC - F G1 - * - * Added right parens: ))))) to balance editors' showmatch... - */ - - - /* JIS-Roman mode enabled by 3 char ESC sequence: ( J */ -#define InsRoman_ESC(cp, obj) { \ - INTL_SetCCCJismode(obj, JIS_Roman); \ - *cp++ = ESC; \ - *cp++ = '('; \ - *cp++ = 'J'; \ -} - /* ASCII mode enabled by 3 char ESC sequence: ( B */ -#define InsASCII_ESC(cp, obj) { \ - INTL_SetCCCJismode(obj, JIS_Roman); \ - *cp++ = ESC; \ - *cp++ = '('; \ - *cp++ = 'B'; \ -} - /* JIS x208-1983 mode enabled by 3 char ESC sequence: $ B */ -#define Ins208_83_ESC(cp, obj) { \ - INTL_SetCCCJismode(obj, JIS_208_83); \ - *cp++ = ESC; \ - *cp++ = '$'; \ - *cp++ = 'B'; \ -} - /* JIS Half-width katakana mode enabled by 3 char ESC seq.: ESC ( I */ -#define InsHalfKana_ESC(cp, obj) { \ - INTL_SetCCCJismode(obj, JIS_HalfKana); \ - *cp++ = ESC; \ - *cp++ = '('; \ - *cp++ = 'I'; \ -} - /* JIS x212-1990 mode enabled by 4 char ESC sequence: $ ( D */ -#define Ins212_90_ESC(cp, obj) { \ - INTL_SetCCCJismode(obj, JIS_212_90); \ - *cp++ = ESC; \ - *cp++ = '$'; \ - *cp++ = '('; \ - *cp++ = 'D'; \ -} - - /* KSC 5601-1987 mode enabled by 4 char ESC sequence: $ ) D */ -#define Ins5601_87_ESC(cp, obj) { \ - INTL_SetCCCJismode(obj, (INTL_GetCCCJismode(obj) & ~ESC_MASK) | KSC_5601_87); \ - *cp++ = ESC; \ - *cp++ = '$'; \ - *cp++ = ')'; \ - *cp++ = 'C'; \ -} -#define Ins5601_87_SI(cp, obj) { \ - INTL_SetCCCJismode(obj, ((INTL_GetCCCJismode(obj) & ~SHIFT_MASK) | SHIFT_IN)); \ - *cp++ = SI; \ -} -#define Ins5601_87_SO(cp, obj) { \ - INTL_SetCCCJismode(obj, ((INTL_GetCCCJismode(obj) & ~SHIFT_MASK) | SHIFT_OUT)); \ - *cp++ = SO; \ -} -#define IsIns5601_87_ESC(obj) ((INTL_GetCCCJismode(obj) & ESC_MASK) == KSC_5601_87) -#define IsIns5601_87_SI(obj) ((INTL_GetCCCJismode(obj) & SHIFT_MASK) == SHIFT_IN) -#define IsIns5601_87_SO(obj) ((INTL_GetCCCJismode(obj) & SHIFT_MASK) == SHIFT_OUT) - - /* Added right parens: )))))) to balance editors' showmatch... */ - - /* Maximum Length of Escape Sequence and Character Bytes per Encoding */ -#define MAX_SJIS 2 -#define MAX_EUC 3 -#define MAX_JIS 6 - - - -#define MAX_CSNAME 64 -typedef struct _csname2id_t { - unsigned char cs_name[MAX_CSNAME]; - unsigned char java_name[MAX_CSNAME]; - int16 cs_id; - unsigned char fill[3]; -} csname2id_t; - -typedef struct { - int16 from_csid; /* "from" codeset ID */ - int16 to_csid; /* "to" codeset ID */ - int16 autoselect; /* autoselectable */ - CCCFunc cvtmethod; /* char. codeset conv method */ - int32 cvtflag; /* conv func dependent flag */ -} cscvt_t; - - -#ifdef XP_UNIX -typedef struct { - int16 win_csid; - char *locale; - char *fontlist; -} cslocale_t; -#endif /* XP_UNIX */ - -XP_BEGIN_PROTOS - -MODULE_PRIVATE int net_1to1CCC(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE int net_sjis2jis(CCCDataObject,const unsigned char *s,int32 l); -MODULE_PRIVATE int net_sjis2euc(CCCDataObject,const unsigned char *s,int32 l); -MODULE_PRIVATE int net_euc2jis(CCCDataObject,const unsigned char *s, int32 l); -MODULE_PRIVATE int net_euc2sjis(CCCDataObject,const unsigned char *s,int32 l); -MODULE_PRIVATE int net_jis2other(CCCDataObject, const unsigned char *s, int32 l); - -MODULE_PRIVATE unsigned char *mz_euc2jis(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE unsigned char *mz_sjis2euc(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE unsigned char *mz_sjis2jis(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE unsigned char *One2OneCCC(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE unsigned char *mz_euc2sjis(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE unsigned char *mz_euckr2iso(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE unsigned char *mz_iso2euckr(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE unsigned char *mz_b52cns(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE unsigned char *mz_cns2b5(CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE unsigned char *jis2other(CCCDataObject, const unsigned char *s, int32 l); - - -MODULE_PRIVATE unsigned char *autoJCCC (CCCDataObject, const unsigned char *s, int32 l); -MODULE_PRIVATE unsigned char *autoKCCC (CCCDataObject, const unsigned char *s, int32 l); - -MODULE_PRIVATE int16 intl_detect_JCSID (uint16, const unsigned char *, int32); -MODULE_PRIVATE int16 intl_detect_KCSID (uint16, const unsigned char *, int32); - -MODULE_PRIVATE unsigned char *viet_any_2_any(CCCDataObject, const unsigned char *s, int32 l); - -MODULE_PRIVATE unsigned char * -mz_AnyToAnyThroughUCS2(CCCDataObject obj,const unsigned char *buf, int32 bufsz); - -void FE_fontchange(iDocumentContext window_id, int16 csid); -void FE_ChangeURLCharset(const char *newCharset); -char ** FE_GetSingleByteTable(int16 from_csid, int16 to_csid, int32 resourceid); -char * FE_LockTable(char **cvthdl); -void FE_FreeSingleByteTable(char **cvthdl); - -/* void CCCReportAutoDetect(CCCDataObject obj, uint16 detected_doc_csid); */ - -unsigned char *ConvHeader(unsigned char *subject); - -#ifdef XP_UNIX -int16 FE_WinCSID(iDocumentContext ); -#else /* XP_UNIX */ -#define FE_WinCSID(window_id) 0 -#endif /* XP_UNIX */ - -int16 *intl_GetFontCharSets(void); - - -/** - * Access a conversion flag for hankaku->zenkaku kana conversion for mail. - * - * The conversion flag for JIS, set if converting hankaku (1byte) kana to zenkaku (2byte). - * The flag is needed in order to control the conversion. Kana conversion should be applied - * only when sending a mail and converters do not know if they are called for mail sending. - * - * @param obj Character code converter. - * @return TRUE if convert to zenkaku (2byte). - * @see INTL_SetCCCCvtflag_SendHankakuKana - */ -MODULE_PRIVATE XP_Bool INTL_GetCCCCvtflag_SendHankakuKana(CCCDataObject obj); -/** - * Access a conversion flag for hankaku->zenkaku kana conversion for mail. - * - * The conversion flag for JIS, set if converting hankaku (1byte) kana to zenkaku (2byte). - * The flag is needed in order to control the conversion. Kana conversion should be applied - * only when sending a mail and converters do not know if they are called for mail sending. - * - * @param obj Character code converter. - * @see INTL_GetCCCCvtflag_SendHankakuKana - */ -MODULE_PRIVATE void INTL_SetCCCCvtflag_SendHankakuKana(CCCDataObject obj, XP_Bool flag); - -/** - * Front end implementation for INTL_GetCharSetID. - * - * @param selector Specification for a charset ID to get. - * @return Charset ID for the input selector. Returns CS_DEFUALT in case of error (e.g. selector invalid). - * @see INTL_GetCharSetID. - */ -INTLCharSetID FE_GetCharSetID(INTL_CharSetID_Selector selector); - -XP_END_PROTOS - - - -#define MAXCSIDINTBL 128 - - - -#endif /* _INTLPRIV_H_ */ diff --git a/mozilla/lib/libi18n/is2euckr.c b/mozilla/lib/libi18n/is2euckr.c deleted file mode 100644 index c05f24bbd5a..00000000000 --- a/mozilla/lib/libi18n/is2euckr.c +++ /dev/null @@ -1,187 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* is2euckr.c */ - -#include "intlpriv.h" - - -extern int MK_OUT_OF_MEMORY; - - -/* net_iso2euckr(obj, isobuf, isobufsz, uncvtbuf) - * Args: - * isobuf: Ptr to a buf of iso-2022-kr chars - * isobufsz: Size in bytes of isobuf - * jismode: Ptr to encoding mode, use as arg for next call to - * mz_iso2euckr() for rest of current 2022-kr data. First call should - * initialize mode to ASCII (0). - * uncvtbuf: If entire buffer was converted, uncvtbuf[0] will be nul, - * else this points to iso-2022-kr chars that were NOT converted - * and mz_iso2euckr() with additional iso-2022-kr chars appended. - * Return: - * Returns NULL on failure, otherwise it returns a pointer to a buffer of - * converted EUC-KR characters. Caller must XP_FREE() this memory. - * - * Description: - * - * Allocate destination buffer (for EUC-KR). - * - * Set mode state based upon ESC sequence and SO/SI. - * - * If mode is KSC 5601, set 8th bits of next 2 bytes. - * - * If any other mode, then assume ASCII and strip the 8th bit. - * - * If either 2022-kr buffer does not contain complete char or EUC-KR buffer - * is full, then return unconverted 2022-kr to caller. Caller should - * append more data and recall mz_iso2euckr. - */ - - -MODULE_PRIVATE unsigned char * -mz_iso2euckr( CCCDataObject obj, - const unsigned char *isobuf, /* 2022-kr buffer for conversion */ - int32 isobufsz) /* 2022-kr buffer size in bytes */ -{ - unsigned char *tobuf = NULL; - int32 tobufsz; - unsigned char *tobufp, *isop; /* current byte in bufs */ - unsigned char *tobufep, *isoep; /* end of buffers */ - int32 uncvtlen; - unsigned char *uncvtbuf = INTL_GetCCCUncvtbuf(obj); - -#define euckrbufsz tobufsz -#define euckrbuf tobuf -#define euckrp tobufp -#define euckrep tobufep - /* Allocate a dest buffer: */ - /* 2022-kr is usually longer than EUC-KR because of ESC seq. - * - * In the worst case (all ASCII), converted EUC-KR will be the same - * length as the original 2022-kr + 1 for nul byte - */ - uncvtlen = strlen((char *)uncvtbuf); - tobufsz = isobufsz + uncvtlen + 1; - - if (!tobufsz) { - return NULL; - } - - if ((tobuf = (unsigned char *)XP_ALLOC(tobufsz)) == (unsigned char *)NULL) { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - /* Initialize pointers, etc. */ - isop = (unsigned char *)isobuf; - isoep = isop + isobufsz - 1; - -#define uncvtp tobufp /* use tobufp as temp */ - /* If prev. unconverted chars, append unconverted - * chars w/new chars and try to process. - */ - if (uncvtbuf[0] != '\0') { - uncvtp = uncvtbuf + uncvtlen; - while (uncvtp < (uncvtbuf + UNCVTBUF_SIZE) && - isop <= isoep) - *uncvtp++ = *isop++; - *uncvtp = '\0'; /* nul terminate */ - isop = uncvtbuf; /* process unconverted first */ - isoep = uncvtp - 1; - } -#undef uncvtp - - tobufp = tobuf; - tobufep = tobufp + tobufsz - 2; /* save space for terminating null */ - -WHILELOOP: - INTL_SetCCCJismode(obj, KSC_5601_87); /* jliu doesn't want to change Tony's code too much*/ - /* While 2022-kr data && space in EUC-KR buf. */ - while ((tobufp <= tobufep) && (isop <= isoep)) { - - if( isop[0] == ESC && isoep - isop > 3 && ( isop[1] == '$' && isop[2] == ')' - && isop[3] == 'C' ) ){ - /* eat that ESC seq. */ - isop += 4; - } else if (*isop == SO) { - /* obj->jismode |= SHIFT_OUT; */ - INTL_SetCCCJismode(obj, INTL_GetCCCJismode(obj) | SHIFT_OUT); - isop++; - } else if (*isop == SI) { - INTL_SetCCCJismode(obj, INTL_GetCCCJismode(obj) & (~SHIFT_OUT)); - isop++; - } else if (INTL_GetCCCJismode(obj) == (KSC_5601_87 | SHIFT_OUT)) { - if(*isop == 0x20) /* jliu */ - { - *euckrp++ = *isop++ ; - } - else - { - if ((isop+1) > isoep) /* Incomplete 2Byte char in JIS buf? */ - break; - - *euckrp++ = *isop++ | 0x80; - *euckrp++ = *isop++ | 0x80; - } - } else if ((0xA1 <= *isop) && (*isop <= 0xFE)) { - /* Somehow we hit EUC_KR data, let it through */ - if ((isop+1) > isoep) /* Incomplete 2Byte char in JIS buf? */ - break; - *euckrp++ = *isop++ ; - *euckrp++ = *isop++ ; - } else { - /* Unknown type: no conversion */ - *euckrp++ = *isop++ & 0x7f; - } - } - - if (uncvtbuf[0] != '\0') { - /* Just processed unconverted chars: - * isop pts to 1st unprocessed char in - * isobuf. Some may have been processed - * while processing unconverted chars, - * so set up ptrs not to process them - * twice. - */ - /* If nothing was converted, this can - * only happen if there was not - * enough 2022-kr data. Stop and get - * more data. - */ - if (isop == uncvtbuf) { /* Nothing converted */ - *tobufp = '\0'; - return(NULL); - } - isoep = (unsigned char *)isobuf + isobufsz - 1 ; - isop = (unsigned char *)isobuf + (isop - uncvtbuf - uncvtlen); - uncvtbuf[0] = '\0'; /* No more uncoverted chars. */ - goto WHILELOOP; /* Process new data */ - } - - *tobufp = '\0'; /* null terminate dest. data */ - INTL_SetCCCLen(obj, tobufp - tobuf); /* length not counting null */ - - if (isop <= isoep) { /* unconverted 2022-kr? */ - tobufp = uncvtbuf; /* reuse the tobufp as a TEMP */ - while (isop <= isoep) - *tobufp++ = *isop++; - *tobufp = '\0'; /* null terminate */ - } - return(tobuf); -} - - diff --git a/mozilla/lib/libi18n/jis2oth.c b/mozilla/lib/libi18n/jis2oth.c deleted file mode 100644 index bc199a196fa..00000000000 --- a/mozilla/lib/libi18n/jis2oth.c +++ /dev/null @@ -1,293 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* jis2oth.c */ -/* other: SJIS or EUC */ - -#include "intlpriv.h" - - -extern int MK_OUT_OF_MEMORY; - - -/* net_jis2other(obj, jisbuf, jisbufsz, uncvtbuf) - * Args: - * jisbuf: Ptr to a buf of JIS chars - * jisbufsz: Size in bytes of jisbuf - * jismode: Ptr to encoding mode, use as arg for next call to - * jis2other() for rest of current SJIS data. First call should - * initialize mode to ASCII (0). - * uncvtbuf: If entire buffer was converted, uncvtbuf[0] will be nul, - * else this points to SJIS chars that were NOT converted - * and jis2other() with additional SJIS chars appended. - * obj->cvtflag: Specifies converting to either EUC or SJIS. - * Return: - * Returns NULL on failure, otherwise it returns a pointer to a buffer of - * converted JIS characters. Caller must XP_FREE() this memory. - * - * Description: - * - * Allocate destination buffer (for SJIS or EUC). - * - * Set JIS mode state based upon ESC sequences. Also if NL or CR, - * mode is reset to JIS-Roman. - * - * If JIS mode is JIS x208 and converting to EUC, set 8th bits of next 2 bytes. - * - * If JIS mode is JIS x208-1983 and converting to SJIS, use the - * JIS to SJIS algorithm. - * - * If JIS mode is JIS x212 and converting to EUC, output SS3 and set 8th - * bits of next 2 bytes. (This mode only set when converting to EUC.) - * - * If JIS Half-width Katakana and converting to EUC, output SS2 followed - * by the 2 bytes w/8th bits set. - * - * If JIS Half-width Katakana and converting to SJIS, output the 2 bytes - * w/8th bits set. - * - * If any other JIS mode, then assume Latin1 and just copy the next byte. - * - * If either SJIS buffer does not contain complete JIS char or JIS buffer - * is full, then return unconverted SJIS to caller. Caller should - * append more data and recall jis2other. - */ - - -MODULE_PRIVATE unsigned char * -jis2other( CCCDataObject obj, - const unsigned char *jisbuf, /* JIS buffer for conversion*/ - int32 jisbufsz) /* JIS buffer size in bytes */ -{ - unsigned char *tobuf = NULL; - int32 tobufsz; - unsigned char *tobufp, *jisp; /* current byte in bufs */ - unsigned char *tobufep, *jisep; /* end of buffers */ - int32 uncvtlen; - unsigned char *uncvtbuf = INTL_GetCCCUncvtbuf(obj); - -#define sjisbuf tobuf -#define sjisbufsz tobufsz -#define sjisp tobufp -#define sjisep tobufep - -#define eucbufsz tobufsz -#define eucbuf tobuf -#define eucp tobufp -#define eucep tobufep - /* Allocate a dest buffer: */ - /* JIS is usually longer than SJIS or EUC because of ESC seq. - * - * In the worst case (all Roman), converted SJIS will be the same - * length as the original JIS + 1 for nul byte - * - * In the worst case ( ( I ... ), - * converted EUC will be 2X - 2 the size of the original JIS + 1 for nul - * byte. - */ - uncvtlen = strlen((char *)uncvtbuf); - if (!INTL_GetCCCCvtflag(obj)) - tobufsz = jisbufsz + uncvtlen + 1; - else - tobufsz = (jisbufsz + uncvtlen) << 1; - - if (!tobufsz) { - return NULL; - } - - if ((tobuf = (unsigned char *)XP_ALLOC(tobufsz)) == (unsigned char *)NULL) { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - /* Initialize pointers, etc. */ - jisp = (unsigned char *)jisbuf; - jisep = jisp + jisbufsz - 1; - -#define uncvtp tobufp /* use tobufp as temp */ - /* If prev. unconverted chars, append unconverted - * chars w/new chars and try to process. - */ - if (uncvtbuf[0] != '\0') { - uncvtp = uncvtbuf + uncvtlen; - while (uncvtp < (uncvtbuf + UNCVTBUF_SIZE) && - jisp <= jisep) - *uncvtp++ = *jisp++; - *uncvtp = '\0'; /* nul terminate */ - jisp = uncvtbuf; /* process unconverted first */ - jisep = uncvtp - 1; - } -#undef uncvtp - - tobufp = tobuf; - tobufep = tobufp + tobufsz - 2; /* save space for terminating null */ - -WHILELOOP: - /* While JIS data && space in SJIS buf. */ - while ((tobufp <= tobufep) && (jisp <= jisep)) { - if (*jisp == ESC) { - if ((jisep - jisp) < 2) /* Incomplete ESC seq in JIS buf? */ - break; - switch (jisp[1]) { - case '(': - switch (jisp[2]) { - case 'J': /* JIS X 0201-Roman */ - case 'B': /* ASCII */ - INTL_SetCCCJismode(obj, JIS_Roman); - jisp += 3; /* remove ESC seq. */ - break; - case 'I': /* Half-width katakana */ - INTL_SetCCCJismode(obj, JIS_HalfKana); - jisp += 3; /* remove ESC seq. */ - break; - default: /* pass thru invalid ESC seq. */ - *tobufp++ = *jisp++; - *tobufp++ = *jisp++; - } - break; - case DOLLAR: - switch (jisp[2]) { - case 'B': /* JIS X 0208-1983 */ - case '@': /* JIS X 0208-1978 (old-JIS) */ - INTL_SetCCCJismode(obj, JIS_208_83); - jisp += 3; /* remove rest of ESC seq. */ - break; - case '(': - if ((jisep - jisp) < 3) /* Full ESC seq in buf? */ - goto abortwhile; - switch (jisp[3]) { - case 'D': /* JIS X 0212-1990 */ - if (!INTL_GetCCCCvtflag(obj)) /* No JIS212 in SJIS */ - INTL_SetCCCJismode(obj, JIS_208_83); - else - INTL_SetCCCJismode(obj, JIS_212_90); - jisp += 4; /* remove rest of ESC seq. */ - break; - default: /* pass thru invalid ESC seq. */ - *tobufp++ = *jisp++; - *tobufp++ = *jisp++; - break; - } - break; - default: /* pass thru invalid ESC seq. */ - *tobufp++ = *jisp++; - *tobufp++ = *jisp++; - } - break; - case '-': - switch (jisp[2]) { - case 'A': /* ISO8859-1 */ - INTL_SetCCCJismode(obj, JIS_Roman); - jisp += 3; /* remove rest of ESC seq. */ - break; - default: /* pass thru invalid ESC seq. */ - *tobufp++ = *jisp++; - *tobufp++ = *jisp++; - } - break; - default: /* pass thru invalid ESC seq. */ - *tobufp++ = *jisp++; - } - } else if (*jisp == NL || *jisp == CR) { - INTL_SetCCCJismode(obj, JIS_Roman); - *tobufp++ = *jisp++; - } else if (INTL_GetCCCJismode(obj) == JIS_208_83) { - if ((jisp+1) > jisep) /* Incomplete 2Byte char in JIS buf? */ - break; - - if (INTL_GetCCCCvtflag(obj)) { /* Convert JIS 208 to EUC */ - *eucp++ = *jisp | 0x80; - jisp++; - *eucp++ = *jisp | 0x80; - jisp++; - - } else { /* Convert JIS-208 to SJIS: Same as */ - /* euc2sjis.c's EUC208-to-SJIS algorithm */ - /* except JIS 8th bit is clear. */ - if (*jisp < 0x5F) /* Convert 1st SJIS byte */ - *sjisp++ = ((*jisp + 1) >> 1) + 0x70; - else - *sjisp++ = ((*jisp + 1) >> 1) + 0xB0; - /* Convert 2nd SJIS byte */ - - if ((*jisp++) & 1) { /* if 1st JIS byte is odd */ - if (*jisp > 0x5F) - *sjisp = *jisp + 0x20; - else - *sjisp = *jisp + 0x1F; - } else { - *sjisp = *jisp + 0x7E; - } - sjisp++; - jisp++; - } - } else if (INTL_GetCCCJismode(obj) == JIS_212_90) { - /* only "to EUC" supports 212 */ - if ((jisp+1) > jisep) /* Incomplete 2Byte char in JIS buf? */ - break; - *eucp++ = SS3; - *eucp++ = *jisp | 0x80; - jisp++; - *eucp++ = *jisp | 0x80; - jisp++; - } else if (INTL_GetCCCJismode(obj) == JIS_HalfKana) { - if (INTL_GetCCCCvtflag(obj)) { - *eucp++ = SS2; - } - *tobufp++ = *jisp | 0x80; /* Set 8th bit for EUC & SJIS */ - jisp++; - } else { - /* Unknown type: no conversion */ - *tobufp++ = *jisp++; - } - } -abortwhile: - - if (uncvtbuf[0] != '\0') { - /* Just processed unconverted chars: - * jisp pts to 1st unprocessed char in - * jisbuf. Some may have been processed - * while processing unconverted chars, - * so set up ptrs not to process them - * twice. - */ - /* If nothing was converted, this can - * only happen if there was not - * enough JIS data. Stop and get - * more data. - */ - if (jisp == uncvtbuf) { /* Nothing converted */ - *tobufp = '\0'; - return(NULL); - } - jisep = (unsigned char *)jisbuf + jisbufsz - 1 ; - jisp = (unsigned char *)jisbuf + (jisp - uncvtbuf - uncvtlen); - uncvtbuf[0] = '\0'; /* No more uncoverted chars. */ - goto WHILELOOP; /* Process new data */ - } - - *tobufp = '\0'; /* null terminate dest. data */ - INTL_SetCCCLen(obj, tobufp - tobuf); /* length not counting null */ - - if (jisp <= jisep) { /* uncoverted JIS? */ - tobufp = uncvtbuf; /* reuse the tobufp as a TEMP */ - while (jisp <= jisep) - *tobufp++ = *jisp++; - *tobufp = '\0'; /* null terminate */ - } - return(tobuf); -} - diff --git a/mozilla/lib/libi18n/katakana.c b/mozilla/lib/libi18n/katakana.c deleted file mode 100644 index 500b74edb62..00000000000 --- a/mozilla/lib/libi18n/katakana.c +++ /dev/null @@ -1,156 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ - -/* - * katakana.c - * - * Half- to Full-width Katakana Conversion for SJIS and EUC. - * based on the book of Ken Lunde - * (Understanding Japanese Information Processing, Published by O'Reilly; 09/1993; ISBN: 1565920430). -*/ - - -#if defined(MOZ_MAIL_NEWS) - -#include "intlpriv.h" -#include "prefapi.h" -#include "katakana.h" - -#define ISMARU(A) (A >= 202 && A <= 206) -#define ISNIGORI(A) ((A >= 182 && A <= 196) || (A >= 202 && A <= 206) || (A == 179)) -#define HANKATA(c) (c >= 161 && c <= 223) /* 0xa1 - 0xdf */ - -/* pref related prototype and variables */ -PUBLIC int PR_CALLBACK intl_SetSendHankakuKana(const char * newpref, void * data); - -static XP_Bool pref_callback_installed = FALSE; -static XP_Bool send_hankaku_kana = FALSE; -static const char *pref_send_hankaku_kana = "mailnews.send_hankaku_kana"; - - -static void han2zen(XP_Bool insjis, unsigned char *inbuf, uint32 inlen, - unsigned char *outbuf, XP_Bool *composite) -{ - unsigned char c1 = *inbuf++; - unsigned char c2; - unsigned char tmp = c1; - unsigned char junk; - XP_Bool maru = FALSE; - XP_Bool nigori = FALSE; - unsigned char mtable[][2] = { - {129,66},{129,117},{129,118},{129,65},{129,69},{131,146},{131,64}, - {131,66},{131,68},{131,70},{131,72},{131,131},{131,133},{131,135}, - {131,98},{129,91},{131,65},{131,67},{131,69},{131,71},{131,73}, - {131,74},{131,76},{131,78},{131,80},{131,82},{131,84},{131,86}, - {131,88},{131,90},{131,92},{131,94},{131,96},{131,99},{131,101}, - {131,103},{131,105},{131,106},{131,107},{131,108},{131,109}, - {131,110},{131,113},{131,116},{131,119},{131,122},{131,125}, - {131,126},{131,128},{131,129},{131,130},{131,132},{131,134}, - {131,136},{131,137},{131,138},{131,139},{131,140},{131,141}, - {131,143},{131,147},{131,74},{129,75} - }; - - if (inlen > 1) - { - if (insjis) - { - c2 = *inbuf; - if (c2 == 222 && ISNIGORI(c1)) - nigori = TRUE; - if (c2 == 223 && ISMARU(c1)) - maru = TRUE; - } - else /* EUC */ - { - junk = *inbuf++; - c2 = *inbuf; - if (junk == SS2) /* If the variable junk is SS2, we have another half- - width katakana. */ - { - if (c2 == 222 && ISNIGORI(c1)) - nigori = TRUE; - if (c2 == 223 && ISMARU(c1)) - maru = TRUE; - } - } - } - if (HANKATA(tmp)) /* Check to see if tmp is in half-width katakana range. */ - { - c1 = mtable[tmp - 161][0]; /* Calculate first byte using mapping table */ - c2 = mtable[tmp - 161][1]; /* Calculate second byte using mapping table */ - } - if (nigori) - { - if ((c2 >= 74 && c2 <= 103) || (c2 >= 110 && c2 <= 122)) - c2++; - else if (c1 == 131 && c2 == 69) - c2 = 148; - } - else if (maru && c2 >= 110 && c2 <= 122) - c2 += 2; - - *outbuf++ = c1; - *outbuf = c2; - *composite = maru || nigori; -} - -/* - * Half to full Katakana conversion for SJIS. Caller need to allocate outbuf (x2 of inbuf). - */ -MODULE_PRIVATE void INTL_SjisHalf2FullKana(unsigned char *inbuf, uint32 inlen, unsigned char *outbuf, uint32 *byteused) -{ - XP_Bool composite; - - han2zen(TRUE, inbuf, inlen, outbuf, &composite); - *byteused = composite ? 2 : 1; -} - -/* - * Half to full Katakana conversion for EUC. Caller need to allocate outbuf (x3 of inbuf). - */ -MODULE_PRIVATE void INTL_EucHalf2FullKana(unsigned char *inbuf, uint32 inlen, unsigned char *outbuf, uint32 *byteused) -{ - XP_Bool composite; - - han2zen(FALSE, inbuf, inlen, outbuf, &composite); - *byteused = composite ? 3 : 1; /* 2 chars plus SS2 or 1 char */ -} - -/* callback routine invoked by prefapi when the pref value changes */ -PUBLIC int PR_CALLBACK intl_SetSendHankakuKana(const char * newpref, void * data) -{ - return PREF_GetBoolPref(pref_send_hankaku_kana, &send_hankaku_kana); -} - -MODULE_PRIVATE XP_Bool INTL_GetSendHankakuKana() -{ - if (!pref_callback_installed) - { - PREF_GetBoolPref(pref_send_hankaku_kana, &send_hankaku_kana); - PREF_RegisterCallback(pref_send_hankaku_kana, intl_SetSendHankakuKana, NULL); - pref_callback_installed = TRUE; - } - - return send_hankaku_kana; -} - -#else -#ifdef OSF1 -static int dumbcc = 0; /* The 3.2 compiler aborts when there's "nothing to compile", and 4.0 warns. This fixes both problems. */ -#endif -#endif /* MOZ_MAIL_NEWS */ diff --git a/mozilla/lib/libi18n/katakana.h b/mozilla/lib/libi18n/katakana.h deleted file mode 100644 index 446dfb21fb3..00000000000 --- a/mozilla/lib/libi18n/katakana.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ - -/* katakana.h */ - -#ifndef KATAKANA_H -#define KATAKANA_H - -MODULE_PRIVATE void INTL_SjisHalf2FullKana(unsigned char *inbuf, uint32 inlen, unsigned char *outbuf, uint32 *byteused); -MODULE_PRIVATE void INTL_EucHalf2FullKana(unsigned char *inbuf, uint32 inlen, unsigned char *outbuf, uint32 *byteused); -MODULE_PRIVATE XP_Bool INTL_GetSendHankakuKana(void); - -#endif /* KATAKANA_H */ diff --git a/mozilla/lib/libi18n/kinsokud.c b/mozilla/lib/libi18n/kinsokud.c deleted file mode 100644 index 85eab5d3a59..00000000000 --- a/mozilla/lib/libi18n/kinsokud.c +++ /dev/null @@ -1,217 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* kinsokud.c */ - -/* - Japanese Kinsoku table: - Characters are not allowed in the beginning of line -*/ - -#include "intlpriv.h" - -MODULE_PRIVATE const char *ProhibitBegin_SJIS[] = -{ -"\x21", "\x25", "\x29", "\x2C", "\x2E", "\x3A", "\x3B", "\x3F", "\x5D", "\x7D", -"\xA1", "\xA3", "\xA4", "\xA5", "\xDE", "\xDF", "\x81\x41", "\x81\x42", "\x81\x43", "\x81\x44", -"\x81\x45", "\x81\x46", "\x81\x47", "\x81\x48", "\x81\x49", "\x81\x4A", "\x81\x4B", "\x81\x52", "\x81\x53", "\x81\x54", -"\x81\x55", "\x81\x58", "\x81\x66", "\x81\x68", "\x81\x6A", "\x81\x6C", "\x81\x6E", "\x81\x70", "\x81\x72", "\x81\x74", -"\x81\x76", "\x81\x78", "\x81\x7A", "\x81\x8B", "\x81\x8C", "\x81\x8D", "\x81\x8E", "\x81\x91", "\x81\x93", "\x81\xF1", -"\0" -}; -MODULE_PRIVATE const char *ProhibitBegin_EUCJP[] = -{ -"\x21", "\x25", "\x29", "\x2C", "\x2E", "\x3A", "\x3B", "\x3F", "\x5D", "\x7D", -"\x8E\xA1", "\x8E\xA3", "\x8E\xA4", "\x8E\xA5", "\x8E\xDE", "\x8E\xDF", "\xA1\xA2", "\xA1\xA3", "\xA1\xA4", "\xA1\xA5", -"\xA1\xA6", "\xA1\xA7", "\xA1\xA8", "\xA1\xA9", "\xA1\xAA", "\xA1\xAB", "\xA1\xAC", "\xA1\xB3", "\xA1\xB4", "\xA1\xB5", -"\xA1\xB6", "\xA1\xB9", "\xA1\xC7", "\xA1\xC9", "\xA1\xCB", "\xA1\xCD", "\xA1\xCF", "\xA1\xD1", "\xA1\xD3", "\xA1\xD5", -"\xA1\xD7", "\xA1\xD9", "\xA1\xDB", "\xA1\xEB", "\xA1\xEC", "\xA1\xED", "\xA1\xEE", "\xA1\xF1", "\xA1\xF3", "\xA2\xF3", -"\0" -}; - -/* - * BIG5 table - */ -MODULE_PRIVATE const char *ProhibitBegin_BIG5[] = -{ -"\x21", "\x29", "\x2C", "\x2E", "\x3A", "\x3B", "\x3F", "\x5D", "\x7D", "\xA1\x41", -"\xA1\x43", "\xA1\x44", "\xA1\x45", "\xA1\x46", "\xA1\x47", "\xA1\x48", "\xA1\x49", "\xA1\x4A", "\xA1\x4B", "\xA1\x4C", -"\xA1\x4D", "\xA1\x4E", "\xA1\x50", "\xA1\x51", "\xA1\x52", "\xA1\x53", "\xA1\x54", "\xA1\x55", "\xA1\x56", "\xA1\x57", -"\xA1\x58", "\xA1\x59", "\xA1\x5A", "\xA1\x5B", "\xA1\x5C", "\xA1\x5E", "\xA1\x60", "\xA1\x62", "\xA1\x64", "\xA1\x66", -"\xA1\x68", "\xA1\x6A", "\xA1\x6C", "\xA1\x6E", "\xA1\x70", "\xA1\x72", "\xA1\x74", "\xA1\x76", "\xA1\x78", "\xA1\x7A", -"\xA1\x7C", "\xA1\x7E", "\xA1\xA2", "\xA1\xA4", "\xA1\xA6", "\xA1\xA8", "\xA1\xAA", "\xA1\xAC", "\0" -}; -/* - Convert the table from BIG5 into CNS_8BIT -*/ -MODULE_PRIVATE const char *ProhibitBegin_CNS[] = -{ -"\x21", "\x29", "\x2C", "\x2E", "\x3A", "\x3B", "\x3F", "\x5D", "\x7D", "\xA1\xA2", -"\xA1\xA4", "\xA1\xA5", "\xA1\xA6", "\xA1\xA7", "\xA1\xA8", "\xA1\xA9", "\xA1\xAA", "\xA1\x4B", "\xA1\x4B", "\xA1\xAC", -"\xA1\xAC", "\xA1\xAD", "\xA1\xB1", "\xA1\xB2", "\xA1\xB3", "\xA1\xB4", "\xA1\xB5", "\xA1\xB6", "\xA1\xB7", "\xA1\xB8", -"\xA1\xB9", "\xA1\xBA", "\xA1\xBB", "\xA1\xBC", "\xA1\xBD", "\xA1\xBF", "\xA1\xC1", "\xA1\xC2", "\xA1\x64", "\xA1\x66", -"\xA1\xC9", "\xA1\xCB", "\xA1\xCD", "\xA1\xCF", "\xA1\xD1", "\xA1\xD3", "\xA1\xD5", "\xA1\xD7", "\xA1\xDA", "\xA1\xDB", -"\xA1\xDD", "\xA1\xDF", "\xA1\xE1", "\xA1\xE3", "\xA1\xE5", "\xA1\xE7", "\xA1\xE9", "\xA1\xEB", "\0" -}; - -MODULE_PRIVATE const char *ProhibitBegin_GB[] = -{ -"\x21", "\x29", "\x2C", "\x2E", "\x3A", "\x3B", "\x3F", "\x5D", "\x7D", "\xA1\xA2", -"\xA1\xA3", "\xA1\xA4", "\xA1\xA5", "\xA1\xA6", "\xA1\xA7", "\xA1\xA8", "\xA1\xA9", "\xA1\xAA", "\xA1\xAB", "\xA1\xAC", -"\xA1\xAD", "\xA1\xAF", "\xA1\xB1", "\xA1\xB3", "\xA1\xB5", "\xA1\xB7", "\xA1\xB9", "\xA1\xBB", "\xA1\xBD", "\xA1\xBF", -"\xA1\xC3", "\xA3\xA1", "\xA3\xA2", "\xA3\xA7", "\xA3\xA9", "\xA3\xAC", "\xA3\xAE", "\xA3\xBA", "\xA3\xBB", "\xA3\xBF", -"\xA3\xDD", "\xA3\xE0", "\xA3\xFC", "\xA3\xFD", "\0" -}; - -MODULE_PRIVATE const char *ProhibitBegin_KSC[] = -{ -"\x21", "\x25", "\x29", "\x2C", "\x2E", "\x3A", "\x3B", "\x3F", "\x5D", "\x7D", -"\xA1\xA2", "\xA1\xAF", "\xA1\xB1", "\xA1\xB3", "\xA1\xB5", "\xA1\xB7", "\xA1\xB9", "\xA1\xBB", "\xA1\xBD", "\xA1\xC6", -"\xA1\xC7", "\xA1\xC8", "\xA1\xC9", "\xA1\xCB", "\xA3\xA1", "\xA3\xA5", "\xA3\xA9", "\xA3\xAC", "\xA3\xAE", "\xA3\xBA", -"\xA3\xBB", "\xA3\xBF", "\xA3\xDC", "\xA3\xDD", "\xA3\xFD", "\0" -}; - - -/* ProhibitBegin_UTF8: Made by ftang. */ -MODULE_PRIVATE const char *ProhibitBegin_UTF8[] = -{ -/* U+ 21 */ "\x21", -/* U+ 25 */ "\x25", -/* U+ 29 */ "\x29", -/* U+ 2C */ "\x2C", -/* U+ 2E */ "\x2E", -/* U+ 3A */ "\x3A", -/* U+ 3B */ "\x3B", -/* U+ 5D */ "\x5D", -/* U+ 7D */ "\x7D", -/* U+ 3F */ "\x3F", -/* U+ A2 */ "\xC2\xA2", -/* U+ BB */ "\xC2\xBB", -/* U+2019 */ "\xE2\x80\x99", -/* U+201D */ "\xE2\x80\x9D", -/* U+2024 */ "\xE2\x80\xA4", -/* U+2025 */ "\xE2\x80\xA5", -/* U+2026 */ "\xE2\x80\xA6", -/* U+2030 */ "\xE2\x80\xB0", -/* U+3001 */ "\xE3\x80\x81", -/* U+3002 */ "\xE3\x80\x82", -/* U+3005 */ "\xE3\x80\x85", -/* U+3009 */ "\xE3\x80\x89", -/* U+300B */ "\xE3\x80\x8B", -/* U+300D */ "\xE3\x80\x8D", -/* U+300F */ "\xE3\x80\x8F", -/* U+3011 */ "\xE3\x80\x91", -/* U+3015 */ "\xE3\x80\x95", -/* U+3017 */ "\xE3\x80\x97", -/* U+3019 */ "\xE3\x80\x99", -/* U+301B */ "\xE3\x80\x9B", -/* U+3099 */ "\xE3\x82\x99", -/* U+309A */ "\xE3\x82\x9A", -/* U+309B */ "\xE3\x82\x9B", -/* U+309C */ "\xE3\x82\x9C", -/* U+309D */ "\xE3\x82\x9D", -/* U+309E */ "\xE3\x82\x9E", -/* U+30FB */ "\xE3\x83\xBB", -/* U+30FC */ "\xE3\x83\xBC", -/* U+30FD */ "\xE3\x83\xBD", -/* U+30FE */ "\xE3\x83\xBE", -/* U+FF61 */ "\xEF\xBD\xA1", -/* U+FF63 */ "\xEF\xBD\xA3", -/* U+FF64 */ "\xEF\xBD\xA4", -/* U+FF65 */ "\xEF\xBD\xA5", -/* U+FF9E */ "\xEF\xBE\x9E", -/* U+FF9F */ "\xEF\xBE\x9F", -"\0" -}; - - -/* - Japanese Kinsoku table: - Characters are not allowed in the end of line -*/ - -MODULE_PRIVATE const char *ProhibitEnd_SJIS[] = -{ -"\x24", "\x28", "\x5B", "\x5C", "\x7B", "\xA2", "\x81\x65", "\x81\x67", "\x81\x69", "\x81\x6B", -"\x81\x6D", "\x81\x6F", "\x81\x71", "\x81\x73", "\x81\x75", "\x81\x77", "\x81\x79", "\x81\x8F", "\x81\x90", "\x81\x92", -"\0" -}; -MODULE_PRIVATE const char *ProhibitEnd_EUCJP[] = -{ -"\x24", "\x28", "\x5B", "\x5C", "\x7B", "\x8E\xA2", "\xA1\xC6", "\xA1\xC8", "\xA1\xCA", "\xA1\xCC", -"\xA1\xCE", "\xA1\xD0", "\xA1\xD2", "\xA1\xD4", "\xA1\xD6", "\xA1\xD8", "\xA1\xDA", "\xA1\xEF", "\xA1\xF0", "\xA1\xF2", -"\0" -}; - -/* - * BIG5 table - */ -MODULE_PRIVATE const char *ProhibitEnd_BIG5[] = -{ -"\x28", "\x5B", "\x7B", "\xA1\x5D", "\xA1\x5F", "\xA1\x61", "\xA1\x63", "\xA1\x65", "\xA1\x67", "\xA1\x69", -"\xA1\x6D","\xA1\x6F","\xA1\x71","\xA1\x73", "\xA1\x75", "\xA1\x77", "\xA1\x79", "\xA1\x7B", "\xA1\x7D", -"\xA1\xA1","\xA1\xA3","\xA1\xA5","\xA1\xA7", "\xA1\xA9", "\xA1\xAB", "\0" -}; -/* - Convert the table from BIG5 into CNS -*/ -MODULE_PRIVATE const char *ProhibitEnd_CNS[] = -{ -"\x28", "\x5B", "\x7B", "\xA1\xBE", "\xA1\xC0", "\xA1\xC2", "\xA1\xC4", "\xA1\xC6", "\xA1\xC8", "\xA1\xCA", -"\xA1\xCE","\xA1\xD0","\xA1\xD2","\xA1\xD4", "\xA1\xD6", "\xA1\xD8", "\xA1\xDA", "\xA1\xDC", "\xA1\xDE", -"\xA1\xE0","\xA1\xE2","\xA1\xE4","\xA1\xE6", "\xA1\xE8", "\xA1\xEA", "\0" -}; - -MODULE_PRIVATE const char *ProhibitEnd_GB[] = -{ -"\x28", "\x5B", "\x7B", "\xA1\xAE", "\xA1\xB0", "\xA1\xB2", "\xA1\xB4", "\xA1\xB6", "\xA1\xB8", "\xA1\xBA", -"\xA1\xBC","\xA1\xBE","\xA3\xA8","\xA3\xAE", "\xA3\xDB", "\xA3\xFB", "\0" -}; - -MODULE_PRIVATE const char *ProhibitEnd_KSC[] = -{ -"\x28", "\x5B", "\x5C", "\x7B", "\xA1\xAE", "\xA1\xB0", "\xA1\xB2", "\xA1\xB4", "\xA1\xB6", "\xA1\xB8", -"\xA1\xBA","\xA1\xBC","\xA3\xA4","\xA3\xA8","\xA3\xDB", "\xA3\xDC", "\xA3\xFB", "\0" -}; - -/* ProhibitEnd_UTF8: Made by ftang. */ -MODULE_PRIVATE const char *ProhibitEnd_UTF8[] = -{ -/* U+ 24 */ "\x24", -/* U+ 28 */ "\x28", -/* U+ 5B */ "\x5B", -/* U+ 7B */ "\x7B", -/* U+ A2 */ "\xC2\xA2", -/* U+ A3 */ "\xC2\xA3", -/* U+ A5 */ "\xC2\xA5", -/* U+ AB */ "\xC2\xAB", -/* U+2018 */ "\xE2\x80\x98", -/* U+201C */ "\xE2\x80\x9C", -/* U+3008 */ "\xE3\x80\x88", -/* U+300A */ "\xE3\x80\x8A", -/* U+300C */ "\xE3\x80\x8C", -/* U+300E */ "\xE3\x80\x8E", -/* U+3010 */ "\xE3\x80\x90", -/* U+3014 */ "\xE3\x80\x94", -/* U+3016 */ "\xE3\x80\x96", -/* U+3018 */ "\xE3\x80\x98", -/* U+301A */ "\xE3\x80\x9A", -/* U+FF62 */ "\xEF\xBD\xA2", -"\0" -}; - - diff --git a/mozilla/lib/libi18n/kinsokuf.c b/mozilla/lib/libi18n/kinsokuf.c deleted file mode 100644 index 6d482ef36e0..00000000000 --- a/mozilla/lib/libi18n/kinsokuf.c +++ /dev/null @@ -1,514 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* kinsukof.c */ - -#include "intlpriv.h" - -/* The table is defined in kinsukod.c */ -extern const char *ProhibitBegin_SJIS[]; -extern const char *ProhibitBegin_EUCJP[]; -extern const char *ProhibitBegin_BIG5[]; -extern const char *ProhibitBegin_GB[]; -extern const char *ProhibitBegin_KSC[]; -extern const char *ProhibitBegin_UTF8[]; -extern const char *ProhibitBegin_CNS[]; - -extern const char *ProhibitEnd_SJIS[]; -extern const char *ProhibitEnd_EUCJP[]; -extern const char *ProhibitEnd_BIG5[]; -extern const char *ProhibitEnd_GB[]; -extern const char *ProhibitEnd_KSC[]; -extern const char *ProhibitEnd_UTF8[]; -extern const char *ProhibitEnd_CNS[]; - -PUBLIC const char *INTL_NonBreakingSpace(uint16 win_csid) -{ - -#ifdef XP_MAC - return "\07"; /* 0x07 */ -#else - return "\240"; /* 0xA0 */ -#endif - -} -/* - INTL_CharClass is used for multibyte to divide character to different type -*/ -#define IN_BETWEEN(a,b,c) (((a) <= (b)) && ((b) <= (c))) -PUBLIC int -INTL_CharClass(int charset, unsigned char *pstr) -{ - int c1, c2, c3; - - c1 = *pstr; - - switch (charset) - { - case CS_SJIS: - /* - SEVEN_BIT_CHAR: [0x00-0x7F] - HALFWIDTH_PRONOUNCE_CHAR: [0xA0-0xE0] - FULLWIDTH_ASCII_CHAR: [0x82] [0x60-0x9A] - [0x83] [0x9f-0xB6] ( Really no ASCII but Greek and Cyrillic ) - [0x83] [0xBF-0x8F] - [0x84] [0x40-0x60] - [0x84] [0x70-0x8F] - FULLWIDTH_PRONOUNCE_CHAR: [0x82] [0x9F-0xF1] - [0x83] [0x40-0x96] - [0x81] [0x5B-0x5D] - KANJI_CHAR: [0x88-0xFC] [xxxxxxxxx] (Except above) - - Note: We count Cyrillic and Greek as FULLWIDTH_ASCII_CHAR - - */ - if (c1 < 0x80) - return SEVEN_BIT_CHAR; - - if (IN_BETWEEN(0xA0, c1, 0xE0)) - return HALFWIDTH_PRONOUNCE_CHAR; - - c2 = *(pstr + 1); - - switch(c1) - { - case 0x81: - if(IN_BETWEEN(0x5B, c2, 0x5D)) - return FULLWIDTH_PRONOUNCE_CHAR; - break; - - case 0x82: - if(IN_BETWEEN(0x60, c2, 0x9A)) - return FULLWIDTH_ASCII_CHAR; - - if(IN_BETWEEN(0x9F, c2, 0xF1)) - return FULLWIDTH_PRONOUNCE_CHAR; - break; - - case 0x83: - if(IN_BETWEEN(0x9F, c2, 0xB6) || IN_BETWEEN(0xBF, c2, 0xD0)) - return FULLWIDTH_ASCII_CHAR; - - if(IN_BETWEEN(0x40, c2, 0x96)) - return FULLWIDTH_PRONOUNCE_CHAR; - break; - - case 0x84: - if(IN_BETWEEN(0x40, c2, 0x8F) || IN_BETWEEN(0xBF, c2, 0xD0)) - return FULLWIDTH_ASCII_CHAR; - break; - } - - - if (IN_BETWEEN(0x88, c1, 0xFC)) - return KANJI_CHAR; - - return UNCLASSIFIED_CHAR; - - case CS_EUCJP: /* TO BE TEST ON UNIX */ - /* - SEVEN_BIT_CHAR: [0x00-0x7F] - HALFWIDTH_PRONOUNCE_CHAR: [0x8E] - FULLWIDTH_ASCII_CHAR: [0xA3] [0xC1-0xDA] - [0xE1-0xFA] - [0xA6] [0xA1-0xB8] - [0xC1-0xD8] - [0xA7] [0xA1-0xC1] - [0xD1-0xF1] - [0x8F] [0xA6-0xAF] - FULLWIDTH_PRONOUNCE_CHAR: [0xA4] [xxxxxxx] - [0xA5] [xxxxxxx] - [0x81] [0x5B-0x5D] - KANJI_CHAR: [0xB0-0xFF] [xxxx] - [0x8F] [>0xB0] - - Note: We count Cyrillic and Greek as FULLWIDTH_ASCII_CHAR - - */ - if (c1 < 0x80) - return SEVEN_BIT_CHAR; - - c2 = *(pstr + 1); - - switch(c1) - { - case 0x8E: - return HALFWIDTH_PRONOUNCE_CHAR; - - case 0x8F: - if(IN_BETWEEN(0xA6, c2, 0xAF)) - return FULLWIDTH_ASCII_CHAR; - break; - - case 0xA3: - if(IN_BETWEEN(0xC1, c2, 0xDA) || IN_BETWEEN(0xE1, c2, 0xFA)) - return FULLWIDTH_ASCII_CHAR; - break; - - case 0xA4: case 0xA5: - return FULLWIDTH_PRONOUNCE_CHAR; - - case 0xA6: - if(IN_BETWEEN(0xA1, c2, 0xB8) || IN_BETWEEN(0xC1, c2, 0xD8)) - return FULLWIDTH_ASCII_CHAR; - break; - - case 0xA7: - if(IN_BETWEEN(0xA1, c2, 0xC1) || IN_BETWEEN(0xD1, c2, 0xF1)) - return FULLWIDTH_ASCII_CHAR; - break; - } - - - if( - (c1 >= 0xB0) || - ((c1 == 0x8F) && (c2 > 0xB0)) - ) - { - return KANJI_CHAR; - } - - return UNCLASSIFIED_CHAR; - - case CS_KSC_8BIT: - /* - SEVEN_BIT_CHAR: [0x00-0x80] - HALFWIDTH_PRONOUNCE_CHAR: None - FULLWIDTH_ASCII_CHAR: [0xA3] [0xC1-0xDA] - [0xE1-0xFA] - [0xA5] [0xC1-0xD8] - [0xE1-0xF8] - [0xAC] [0xA1-0xC2] - [0xD1-0xF2] - FULLWIDTH_PRONOUNCE_CHAR: [0xA4] [0xA1-0xFE] - [0xB0-0xC8] [xxxxxxxxx] - KANJI_CHAR: [0xCA-0xFD] [xxxxxxxxx] - - Note: We didn't handle Hiragana and Katakana here - We count Cyrillic and Greek as FULLWIDTH_ASCII_CHAR - - */ - if (c1 < 0x80) - return SEVEN_BIT_CHAR; - - c2 = *(pstr + 1); - if ( - ((c1== 0xA3) && (IN_BETWEEN(0xC1, c2, 0xDA) || IN_BETWEEN(0xE1, c2, 0xFA))) || - ((c1== 0xA5) && (IN_BETWEEN(0xC1, c2, 0xD8) || IN_BETWEEN(0xE1, c2, 0xF8))) || - ((c1== 0xAC) && (IN_BETWEEN(0xA1, c2, 0xC2) || IN_BETWEEN(0xD1, c2, 0xF2))) - ) - { - return FULLWIDTH_ASCII_CHAR; - } - - if ( - ((c1== 0xA4) && (IN_BETWEEN(0xA1, c2, 0xFE))) || - (IN_BETWEEN(0xB0, c1, 0xC8)) - ) - { - return FULLWIDTH_PRONOUNCE_CHAR; - } - - if (IN_BETWEEN(0xCA, c1, 0xFD)) - return KANJI_CHAR; - - return UNCLASSIFIED_CHAR; - - case CS_GB_8BIT: - /* - SEVEN_BIT_CHAR: [0x00-0x7F] - HALFWIDTH_PRONOUNCE_CHAR: - FULLWIDTH_ASCII_CHAR: [0xA3] [0xC1-0xDA] - [0xE1-0xFA] - [0xA6] [0xA1-0xB8] Greek - [0xC1-0xD8] - [0xA7] [0xA1-0xC1] Cyrillic - [0xD1-0xF1] - [0xA8] [0xA1-0xBA] European - FULLWIDTH_PRONOUNCE_CHAR: [0xA4,0xA5,0xA8] [xxxx] - KANJI_CHAR: - */ - if (c1 < 0x80) - return SEVEN_BIT_CHAR; - - c2 = *(pstr + 1); - if ( - ((c1== 0xA3) && (IN_BETWEEN(0xC1, c2, 0xDA) || IN_BETWEEN(0xE1, c2, 0xFA))) || - ((c1== 0xA6) && (IN_BETWEEN(0xA1, c2, 0xB8) || IN_BETWEEN(0xC1, c2, 0xD8))) || - ((c1== 0xA7) && (IN_BETWEEN(0xA1, c2, 0xC1) || IN_BETWEEN(0xD1, c2, 0xF1))) || - ((c1== 0xA8) && (IN_BETWEEN(0xA1, c2, 0xBA)) ) - ) - { - return FULLWIDTH_ASCII_CHAR; - } - - if ((c1 == 0xA4) || (c1 == 0xA5) || (c1 == 0xA8)) - return FULLWIDTH_PRONOUNCE_CHAR; - - if (IN_BETWEEN(0xB0, c1, 0xF7)) - return KANJI_CHAR; - - return UNCLASSIFIED_CHAR; - - case CS_BIG5: - /* - SEVEN_BIT_CHAR: [0x00-0x7F] - HALFWIDTH_PRONOUNCE_CHAR: - FULLWIDTH_ASCII_CHAR: [0xA2] [0xCF-0xFF] - [0xA3] [0x40-0x73] - FULLWIDTH_PRONOUNCE_CHAR: [0xA3] [0x74-0x7E] - [0xA1-0xBF] - KANJI_CHAR: [0xA4-0xFF] [xxxxxxxxx] - */ - if (c1 < 0x80) - return SEVEN_BIT_CHAR; - - c2 = *(pstr + 1); - - switch(c1) - { - case 0xA2: - if (IN_BETWEEN(0xCF, c2, 0xFF)) - return FULLWIDTH_ASCII_CHAR; - break; - - case 0xA3: - if (IN_BETWEEN(0x74, c2, 0x7E) || IN_BETWEEN(0xA1, c2, 0xBF)) - return FULLWIDTH_PRONOUNCE_CHAR; - - if (IN_BETWEEN(0x40, c2, 0x73)) - return FULLWIDTH_ASCII_CHAR; - - break; - } - - if (c1 >= 0xA4) - return KANJI_CHAR; - - return UNCLASSIFIED_CHAR; - - case CS_CNS_8BIT: /* TO BE TEST ON UNIX */ - /* - SEVEN_BIT_CHAR: [0x00-0x7F] - HALFWIDTH_PRONOUNCE_CHAR: - FULLWIDTH_ASCII_CHAR: [0xA4] [0xC1-0xFE] - [0xA5] [0xA1-0xC6] - FULLWIDTH_PRONOUNCE_CHAR: [0xA5] [0xC7-0xF0] - KANJI_CHAR: [0xC4-0xFF] [xxxxxxxxx] - [0x8E] - */ - if (c1 < 0x80) - return SEVEN_BIT_CHAR; - - c2 = *(pstr + 1); - - switch(c1) - { - case 0xA4: - if(IN_BETWEEN(0xC1, c2, 0xFE)) - return FULLWIDTH_ASCII_CHAR; - break; - - case 0xA5: - if(IN_BETWEEN(0xC7, c2, 0xF0)) - return FULLWIDTH_PRONOUNCE_CHAR; - - if(IN_BETWEEN(0xA1, c2, 0xC6)) - return FULLWIDTH_ASCII_CHAR; - break; - } - - if (IN_BETWEEN(0xC4, c1, 0x8E)) - return KANJI_CHAR; - - return UNCLASSIFIED_CHAR; - - case CS_UTF8: - /* - SEVEN_BIT_CHAR: - - FULLWIDTH_ASCII_CHAR: - U+0000 - U+10FF - [C0-E0] [xxxx] Done - [E1] [80-83] [xxxx] Done - U+1E00 - U+1FFF - [E1] [B8-BF] Done - U+FF21 - U+FF3A - [EF] [BC] [A1-BA] Done - U+FF41 - U+FF5A - [EF] [BD] [81-9A] Done - - FULLWIDTH_PRONOUNCE_CHAR: - U+1100 - U+11FF - [E1] [84-87] Done - U+3040 - U+318F - [E3] [81-85] [xx] Done - [E3] [86] [80-8F] Done - U+FF66 - U+FFDC - [EF] [BD] [AC-] - [EF] [BE] - [EF] [BF] [-9C] - U+AC00 - U+D7FF - [EA] [B0-] Done - [EB-EC] [xxx] Done - [ED] [-9F] Done - - KANJI_CHAR: - U+4E00 - U+9FFF - [E4] [B8-] Done - [E5-E9] [xx] Done - */ - if (c1 < 0x80) - return SEVEN_BIT_CHAR; - - if (IN_BETWEEN(0xC0, c1, 0xE0)) - { - return FULLWIDTH_ASCII_CHAR; - } - - c2 = *(pstr + 1); - - switch(c1) - { - case 0xE1: - if (IN_BETWEEN(0x80, c2, 0x83) || IN_BETWEEN(0xB8, c2, 0xBF)) - return FULLWIDTH_ASCII_CHAR; - if (IN_BETWEEN(0x84, c2, 0x87)) - return FULLWIDTH_PRONOUNCE_CHAR; - - break; - - case 0xE3: - if (IN_BETWEEN(0x81, c2, 0x85)) - return FULLWIDTH_PRONOUNCE_CHAR; - - if (c2 == 0x86) - { - c3 = *(pstr + 2); - if (IN_BETWEEN(0x80, c3, 0x8F)) - return FULLWIDTH_PRONOUNCE_CHAR; - } - - break; - - case 0xE4: - if (c2 >= 0xB8) - return KANJI_CHAR; - break; - - case 0xE5: case 0xE6: case 0xE7: case 0xE8: case 0xE9: - return KANJI_CHAR; - break; - - case 0xEA: - if (c2 >= 0xB0) - return FULLWIDTH_PRONOUNCE_CHAR; - break; - - case 0xEB: case 0xEC: - return FULLWIDTH_PRONOUNCE_CHAR; - break; - - case 0xED: - if (c2 <= 0x9F) - return FULLWIDTH_PRONOUNCE_CHAR; - break; - - case 0xEF: - c3 = *(pstr + 2); - switch(c2) - { - case 0xBC: - if (IN_BETWEEN(0xA1, c3, 0xBA)) - return FULLWIDTH_ASCII_CHAR; - break; - - case 0xBD: - if (IN_BETWEEN(0x81, c3, 0x9A)) - return FULLWIDTH_ASCII_CHAR; - if (c3 >= 0xAC) - return FULLWIDTH_PRONOUNCE_CHAR; - break; - - case 0xBE: - return FULLWIDTH_PRONOUNCE_CHAR; - break; - - case 0xBF: - if (c3 <= 0x9C) - return FULLWIDTH_PRONOUNCE_CHAR; - break; - } - break; - } - - return UNCLASSIFIED_CHAR; - default: - break; - } - - return UNCLASSIFIED_CHAR; -} - -#define IF_A_IN_ARRAY_B_THEN_RETURN_C(a,b,c) \ - { \ - int j; \ - for (j = 0; (b)[j][0]; j++) \ - if (XP_STRNCMP((char *)a, (b)[j], XP_STRLEN((b)[j])) == 0) \ - return (c); \ - } - -#define IF_PROHIBIT_CLASS_THEN_RETURN(a,ba,ea) \ - { \ - IF_A_IN_ARRAY_B_THEN_RETURN_C(a,ba,PROHIBIT_BEGIN_OF_LINE); \ - IF_A_IN_ARRAY_B_THEN_RETURN_C(a,ea,PROHIBIT_END_OF_LINE); \ - } - -PUBLIC int INTL_KinsokuClass(int16 win_csid, unsigned char *pstr) -{ - switch (win_csid) - { - case CS_SJIS: - IF_PROHIBIT_CLASS_THEN_RETURN(pstr,ProhibitBegin_SJIS,ProhibitEnd_SJIS); - break; - case CS_EUCJP: - IF_PROHIBIT_CLASS_THEN_RETURN(pstr,ProhibitBegin_EUCJP,ProhibitEnd_EUCJP); - break; - case CS_GB_8BIT: - IF_PROHIBIT_CLASS_THEN_RETURN(pstr,ProhibitBegin_GB,ProhibitEnd_GB); - break; - case CS_BIG5: - IF_PROHIBIT_CLASS_THEN_RETURN(pstr,ProhibitBegin_BIG5,ProhibitEnd_BIG5); - break; - case CS_CNS_8BIT: - IF_PROHIBIT_CLASS_THEN_RETURN(pstr,ProhibitBegin_CNS,ProhibitEnd_CNS); - break; - case CS_KSC_8BIT: - IF_PROHIBIT_CLASS_THEN_RETURN(pstr,ProhibitBegin_KSC,ProhibitEnd_KSC); - break; - case CS_UTF8: - IF_PROHIBIT_CLASS_THEN_RETURN(pstr,ProhibitBegin_UTF8,ProhibitEnd_UTF8); - if( *pstr <= 0xE2) /* UCS2 < 0x2000 */ - return PROHIBIT_WORD_BREAK; - break; - } - - return PROHIBIT_NOWHERE; -} - - - diff --git a/mozilla/lib/libi18n/makefile.win b/mozilla/lib/libi18n/makefile.win deleted file mode 100644 index adff4fba199..00000000000 --- a/mozilla/lib/libi18n/makefile.win +++ /dev/null @@ -1,109 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - - - -IGNORE_MANIFEST=1 -#//------------------------------------------------------------------------ -#// -#// Makefile to build the libi18n tree -#// -#//------------------------------------------------------------------------ - -#//------------------------------------------------------------------------ -#// -#// Specify the depth of the current directory relative to the -#// root of NS -#// -#//------------------------------------------------------------------------ -DEPTH=..\.. - -#//-------------------------------------------------------------- -#// For the present, we are not building the DLL on Win16 -#//-------------------------------------------------------------- - -!if "$(MOZ_BITS)" == "32" -MAKE_OBJ_TYPE=DLL - - -#//------------------------------------------------------------------------ -#// -#// Define any Public Make Variables here: (ie. PDFFILE, MAPFILE, ...) -#// -#//------------------------------------------------------------------------ -DLLNAME=unicvt$(MOZ_BITS) -!endif - -#//-------------------------------------------------------------- -#// For the present, we are not building the DLL on Win16 -#//-------------------------------------------------------------- -#!if "$(MOZ_BITS)" == "16" -#DEFFILE=$(DLLNAME).def -#!endif - - -!if "$(MOZ_BITS)" == "32" -OBJS= \ - .\$(OBJDIR)\unicvt.obj \ - $(NULL) - -#//------------------------------------------------------------------------ -#// -#// Define any Public Targets here (ie. PROGRAM, LIBRARY, DLL, ...) -#// (these must be defined before the common makefiles are included) -#// -#//------------------------------------------------------------------------ -DLL=.\$(OBJDIR)\$(DLLNAME).dll - -LINCS=$(LINCS) -I_gen -I$(PUBLIC)\dbm -I$(DEPTH)\include -I$(XPDIST)\applet - -!if defined(MOZ_DEBUG) && defined(GLOWCODE) -LLIBS=$(LLIBS) $(GLOWDIR)\glowcode.lib -!endif - -#// End of MOZ_BITS == 32 -!endif - - -#//------------------------------------------------------------------------ -#// -#// Specify any "command" targets. (ie. DIRS, INSTALL_FILES, ...) -#// (these must come before the common makefiles are included) -#// -#// DIRS - There are subdirectories to process -#// -#//------------------------------------------------------------------------ -DIRS=unicode - - -#//------------------------------------------------------------------------ -#// -#// Include the common makefile rules -#// -#//------------------------------------------------------------------------ -include <$(DEPTH)/config/rules.mak> - -#// More Win32 only stuff... - -!if "$(MOZ_BITS)" == "32" - -install:: $(DLL) $(LIBRARY) - $(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin - $(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).lib $(DIST)\lib - - -!endif diff --git a/mozilla/lib/libi18n/metatag.c b/mozilla/lib/libi18n/metatag.c deleted file mode 100644 index c5ecea798ea..00000000000 --- a/mozilla/lib/libi18n/metatag.c +++ /dev/null @@ -1,147 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* metatag.c */ - -#include "intlpriv.h" -#include "xp.h" -#include "libi18n.h" - - -/* - This function return csid if it finds Meta charset info - - Currently there are two way to specify Meta charset - 1. - 2. - - Right now, it scans for charset - -*/ - - -MODULE_PRIVATE int PeekMetaCharsetTag(char *pSrc, int len) -{ - char *p; - char charset[MAX_CSNAME+1]; - int i, k; - int n; - char ch; - - - for (i = 0; i < len; i++, pSrc++) - { - if (*pSrc != '<') - continue; - - pSrc ++ ; - i ++ ; - if ((i+13) > len) /* at least need more than 13 bytes */ - break; - switch (*pSrc) { - case 'm': - case 'M': - if (strncasecomp(pSrc, "meta", 4) == 0) - { - pSrc = pSrc + 4; - i += 4; - - n = len - i; /* set n here to make sure it won't go - out of block boundary */ - for (p = pSrc; n > 0; p ++, n--) - { - if (*p == '>' || *p == '<') - break ; - - if (n < 9) - { - n = 0; - break; - } - - if ((n > 9) && (*p == 'c' || *p == 'C') && strncasecomp(p, "charset", 7) == 0) - { - p += 7; - n -= 7; - while ((n > 0) && (*p == ' ' || *p == '\t')) /* skip spaces */ - { - p ++ ; - n --; - } - if (n <= 0 || *p != '=') - break; - p ++; - n --; - while ((n > 0) && (*p == ' ' || *p == '\t')) /* skip spaces */ - { - n --; - p ++ ; - } - - if (n <= 0) - break; - /* now we go to find real charset name and convert it to csid */ - if (*p == '\"' || *p == '\'') - { - p ++ ; - n -- ; - for (k = 0; n > 0 && k < MAX_CSNAME && *p != '\'' && *p != '\"'; p++, k++, n--) - charset[k] = *p ; - charset[k] = '\0'; - } - else - { - for (k = 0; n > 0 && k < MAX_CSNAME && *p != '\'' && *p != '\"' && *p != '>'; p++, k++, n--) - charset[k] = *p ; - charset[k] = '\0'; - } - - if (*charset && (n >= 0)) /* ftang : change from if (*charset && (n > 0)) */ - { - int16 doc_csid = INTL_CharSetNameToID(charset); - - if (doc_csid == CS_UNKNOWN) - { - doc_csid = CS_DEFAULT; - } - return doc_csid; - } - - } - } - if (n == 0) /* no more data left */ - return 0; - } - break; - case 'b': - case 'B': /* quit if we see tag */ - if (strncasecomp(pSrc, "body", 4) == 0) - return 0; - break; - case 'p': - case 'P': /* quit if we see

tag */ - ch = *(pSrc + 1); - if (ch == '>' || ch == ' ' || ch == '\t') - return 0; - break; - } - } - - return 0; -} - - diff --git a/mozilla/lib/libi18n/mime2fun.c b/mozilla/lib/libi18n/mime2fun.c deleted file mode 100644 index e8ea5d2e164..00000000000 --- a/mozilla/lib/libi18n/mime2fun.c +++ /dev/null @@ -1,1469 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* mime2fun.c */ -/* Function related to MIME-2 support */ - -#include "intlpriv.h" -#include "prefapi.h" - -/* - "The character set names may be up to 40 characters taken from the - printable characters of US-ASCII. However, no distinction is made - between use of upper and lower case letters." [RFC 1700] -*/ -typedef struct { - int16 csid_key; - int16 csid_target; -} cs_csid_map_t; - - - /* Maps a window encoding to the MIME encoding used for posting - * news and internet email. String is for the MIME charset string. - - Currently, this table is only used for HEADER ENCODING!!!! - It is not used for HEADER decoding!!!! - It is not used for Body Decoding or Encoding!!!! - NOTE: We need to change this from win_csid base to doc_csid base - - */ - -PRIVATE cs_csid_map_t cs_mime_csidmap_tbl[] = { - {CS_ASCII, CS_ASCII }, - - {CS_LATIN1, CS_LATIN1 }, - - {CS_JIS, CS_JIS }, - {CS_SJIS, CS_JIS }, - {CS_EUCJP, CS_JIS, }, - - {CS_KSC_8BIT, CS_KSC_8BIT }, - - {CS_GB_8BIT, CS_GB_8BIT }, - - {CS_BIG5, CS_BIG5 }, - {CS_CNS_8BIT, CS_BIG5 }, - - {CS_MAC_ROMAN, CS_LATIN1 }, - - {CS_LATIN2, CS_LATIN2 }, - {CS_MAC_CE, CS_LATIN2 }, - {CS_CP_1250, CS_LATIN2 }, - - {CS_8859_5, CS_KOI8_R }, - {CS_KOI8_R, CS_KOI8_R }, - {CS_MAC_CYRILLIC, CS_KOI8_R }, - {CS_CP_1251, CS_KOI8_R }, - - {CS_KOI8_U, CS_KOI8_U }, - - {CS_8859_7, CS_8859_7 }, - {CS_CP_1253, CS_8859_7 }, - {CS_MAC_GREEK, CS_8859_7 }, - - {CS_8859_9, CS_8859_9 }, - {CS_MAC_TURKISH,CS_8859_9 }, - - {CS_UTF8, CS_UTF8 }, - {CS_UTF7, CS_UTF7 }, - {CS_UCS2, CS_UTF7 }, - {CS_UCS2_SWAP, CS_UTF7 }, - {0, 0, } -}; - -#define MAXLINELEN 72 -#define IS_MAIL_SEPARATOR(p) ((*(p) == ',' || *(p) == ' ' || *(p) == '\"' || *(p) == ':' || \ - *(p) == '(' || *(p) == ')' || *(p) == '\\' || (unsigned char)*p < 0x20)) - -/* - Prototype for Private Function -*/ -PRIVATE void intlmime_init_csidmap(); -PRIVATE XP_Bool intlmime_only_ascii_str(const char *s); -PRIVATE char * intlmime_encode_mail_address(int wincsid, const char *src, CCCDataObject obj, - int maxLineLen); -PRIVATE char * intlmime_encode_next8bitword(int wincsid, char *src); -PRIVATE int16 intlmime_get_outgoing_mime_csid(int16); -PRIVATE int16 intlmime_map_csid(cs_csid_map_t *csmimep, int16 csid_key); - -/* we should consider replace this base64 decodeing and encoding function with a better one */ -PRIVATE int intlmime_decode_base64 (const char *in, char *out); -PRIVATE char * intlmime_decode_qp(char *in); -PRIVATE int intlmime_encode_base64 (const char *in, char *out); -PRIVATE char * intlmime_decode_base64_buf(char *subject); -PRIVATE char * intlmime_encode_base64_buf(char *subject, size_t size); -PRIVATE char * intlmime_encode_qp_buf(char *subject); - - -PRIVATE XP_Bool intlmime_is_hz(const char *header); -PRIVATE XP_Bool intlmime_is_mime_part2_header(const char *header); -PRIVATE XP_Bool intlmime_is_iso_2022_xxx(const char *, int16 ); -PRIVATE char * intl_decode_mime_part2_str(const char *, int , XP_Bool ); -PRIVATE char * intl_DecodeMimePartIIStr(const char *, int16 , XP_Bool ); -PRIVATE char * intl_EncodeMimePartIIStr(char *subject, int16 wincsid, XP_Bool bUseMime, int maxLineLen); - - -#if 0 -/* Prototype of callback routine invoked by prefapi when the pref value changes - * Win16 build fails if this is declared as static. - */ -MODULE_PRIVATE -int PR_CALLBACK intlmime_get_mail_strictly_mime(const char * newpref, void * data); -#endif - -/* We probably should change these into private instead of PUBLIC */ -PUBLIC char *DecodeBase64Buffer(char *subject); -PUBLIC char *EncodeBase64Buffer(char *subject, size_t size); - - -/* 4.0: Made Encode & Decode public for use by libpref; added size param. - */ -PUBLIC char *EncodeBase64Buffer(char *subject, size_t size) -{ - /* This function should be obsolete */ - /* We should not make this public in libi18n */ - /* We should use the new Base64 Encoder wrote by jwz in libmime */ - return intlmime_encode_base64_buf(subject, size); -} - -PUBLIC char *DecodeBase64Buffer(char *subject) -{ - /* This function should be obsolete */ - /* We should not make this public in libi18n */ - /* We should use the new Base64 Decoder wrote by jwz in libmime */ - return intlmime_decode_base64_buf(subject); -} - -#if defined(MOZ_MAIL_COMPOSE) || defined(MOZ_MAIL_NEWS) - -/* - Implementation -*/ -/* - INTL_DefaultMailCharSetID, -*/ -PUBLIC int16 INTL_DefaultMailCharSetID(int16 csid) -{ - int16 retcsid; - csid &= ~CS_AUTO; - - intlmime_init_csidmap(); - retcsid = intlmime_map_csid(cs_mime_csidmap_tbl, csid); - - return retcsid; -} - -PUBLIC int16 INTL_DefaultNewsCharSetID(int16 csid) -{ - - if (csid == 0) - csid = INTL_DefaultDocCharSetID(0); - csid &= ~CS_AUTO; - if (csid == CS_KSC_8BIT) - return CS_KSC_8BIT; - intlmime_init_csidmap(); - return intlmime_map_csid(cs_mime_csidmap_tbl, csid); -} - -PUBLIC -char *INTL_DecodeMimePartIIStr(const char *header, int16 wincsid, XP_Bool dontConvert) -{ - return intl_DecodeMimePartIIStr(header, wincsid, dontConvert); -} -PUBLIC -char *INTL_EncodeMimePartIIStr(char *subject, int16 wincsid, XP_Bool bUseMime) -{ - return intl_EncodeMimePartIIStr(subject, wincsid, bUseMime, MAXLINELEN); -} -#endif /* MOZ_MAIL_COMPOSE || MOZ_MAIL_NEWS */ - -#ifdef MOZ_MAIL_NEWS -/* This is a routine used to re-encode subject lines for use in the summary file. - The reason why we specify a different length here is because we are not encoding - the string for use in a mail message, but rather want to stuff as much content - into the subject string as possible. */ -PUBLIC -char *INTL_EncodeMimePartIIStr_VarLen(char *subject, int16 wincsid, XP_Bool bUseMime, int encodedWordSize) -{ - return intl_EncodeMimePartIIStr(subject, wincsid, bUseMime, encodedWordSize); -} -#endif /* MOZ_MAIL_NEWS */ - - -#if defined(MOZ_MAIL_COMPOSE) || defined(MOZ_MAIL_NEWS) -/* some utility function used by this file */ -PRIVATE XP_Bool intlmime_only_ascii_str(const char *s) -{ - for(; *s; s++) - if(*s & 0x80) - return FALSE; - return TRUE; -} - -PRIVATE void intlmime_update_csidmap(int16 csid_key, int16 csid_target) -{ - cs_csid_map_t * mapp; - - for(mapp = cs_mime_csidmap_tbl ; - mapp->csid_key != 0 ; - mapp++) - { - if (mapp->csid_key == csid_key) - mapp->csid_target = csid_target; - } -} - -PRIVATE void -intlmime_init_csidmap() -{ - static XP_Bool initialized = FALSE; - - if(initialized) - return; - - /* Speical Hack for Cyrllic */ - /* We need to know wheater we should send KOI8-R or ISO-8859-5 */ - - { - static const char* pref_mailcharset_cyrillic = "intl.mailcharset.cyrillic"; - static const char* pref_mailcharset_korean = "intl.mailcharset.korean"; - char *mailcharset_pref = NULL; - int16 mailcsid_pref = CS_UNKNOWN; - - if( PREF_NOERROR == PREF_CopyCharPref(pref_mailcharset_cyrillic, - &mailcharset_pref)) - { - mailcsid_pref = INTL_CharSetNameToID(mailcharset_pref); - XP_FREE(mailcharset_pref); - - if(CS_UNKNOWN != mailcsid_pref) - { - intlmime_update_csidmap(CS_KOI8_R, mailcsid_pref); - intlmime_update_csidmap(CS_8859_5, mailcsid_pref); - intlmime_update_csidmap(CS_MAC_CYRILLIC, mailcsid_pref); - intlmime_update_csidmap(CS_CP_1251, mailcsid_pref); - } - } - if( PREF_NOERROR == PREF_CopyCharPref(pref_mailcharset_korean, - &mailcharset_pref)) - { - mailcsid_pref = INTL_CharSetNameToID(mailcharset_pref); - XP_FREE(mailcharset_pref); - - if(CS_UNKNOWN != mailcsid_pref) - { - intlmime_update_csidmap(CS_KSC_8BIT, mailcsid_pref); - } - } - } - - initialized = TRUE; -} - -PRIVATE int16 -intlmime_map_csid(cs_csid_map_t *mapp, int16 csid_key) -{ - for( ; mapp->csid_key != 0 ; mapp++) - { - if (csid_key == mapp->csid_key) - return(mapp->csid_target); - } - return(csid_key); /* causes no conversion */ -} - -PRIVATE int16 -intlmime_get_outgoing_mime_csid(int16 win_csid) -{ - win_csid &= ~CS_AUTO; - intlmime_init_csidmap(); - return intlmime_map_csid(cs_mime_csidmap_tbl, win_csid); -} - -PRIVATE char *intlmime_decode_qp(char *in) -{ - int i = 0, length; - char token[3]; - char *out, *dest = 0; - - out = dest = (char *)XP_ALLOC(strlen(in)+1); - if (dest == NULL) - return NULL; - memset(out, 0, strlen(in)+1); - length = strlen(in); - while (length > 0 || i != 0) - { - while (i < 3 && length > 0) - { - token [i++] = *in; - in++; - length--; - } - - if (i < 3) - { - /* Didn't get enough for a complete token. - If it might be a token, unread it. - Otherwise, just dump it. - */ - strncpy (out, token, i); - break; - } - i = 0; - - if (token [0] == '=') - { - unsigned char c = 0; - if (token[1] >= '0' && token[1] <= '9') - c = token[1] - '0'; - else if (token[1] >= 'A' && token[1] <= 'F') - c = token[1] - ('A' - 10); - else if (token[1] >= 'a' && token[1] <= 'f') - c = token[1] - ('a' - 10); - else if (token[1] == CR || token[1] == LF) - { - /* =\n means ignore the newline. */ - if (token[1] == CR && token[2] == LF) - ; /* swallow all three chars */ - else - { - in--; /* put the third char back */ - length++; - } - continue; - } - else - { - /* = followed by something other than hex or newline - - pass it through unaltered, I guess. (But, if - this bogus token happened to occur over a buffer - boundary, we can't do this, since we don't have - space for it. Oh well. Forget it.) */ - if (in > out) *out++ = token[0]; - if (in > out) *out++ = token[1]; - if (in > out) *out++ = token[2]; - continue; - } - - /* Second hex digit */ - c = (c << 4); - if (token[2] >= '0' && token[2] <= '9') - c += token[2] - '0'; - else if (token[2] >= 'A' && token[2] <= 'F') - c += token[2] - ('A' - 10); - else if (token[2] >= 'a' && token[2] <= 'f') - c += token[2] - ('a' - 10); - else - { - /* We got =xy where "x" was hex and "y" was not, so - treat that as a literal "=", x, and y. (But, if - this bogus token happened to occur over a buffer - boundary, we can't do this, since we don't have - space for it. Oh well. Forget it.) */ - if (in > out) *out++ = token[0]; - if (in > out) *out++ = token[1]; - if (in > out) *out++ = token[2]; - continue; - } - - *out++ = (char) c; - } - else - { - *out++ = token [0]; - - token[0] = token[1]; - token[1] = token[2]; - i = 2; - } - } - /* take care of special underscore case */ - for (out = dest; *out; out++) - if (*out == '_') *out = ' '; - return dest; -} - -#endif /* MOZ_MAIL_COMPOSE || MOZ_MAIL_NEWS */ - -PRIVATE int intlmime_decode_base64 (const char *in, char *out) -{ - /* reads 4, writes 3. */ - int j; - unsigned long num = 0; - - for (j = 0; j < 4; j++) - { - unsigned char c; - if (in[j] >= 'A' && in[j] <= 'Z') c = in[j] - 'A'; - else if (in[j] >= 'a' && in[j] <= 'z') c = in[j] - ('a' - 26); - else if (in[j] >= '0' && in[j] <= '9') c = in[j] - ('0' - 52); - else if (in[j] == '+') c = 62; - else if (in[j] == '/') c = 63; - else if (in[j] == '=') c = 0; - else - { - /* abort (); */ - strcpy(out, in); /* I hate abort */ - return 0; - } - num = (num << 6) | c; - } - - *out++ = (unsigned char) (num >> 16); - *out++ = (unsigned char) ((num >> 8) & 0xFF); - *out++ = (unsigned char) (num & 0xFF); - return 1; -} - -PRIVATE char *intlmime_decode_base64_buf(char *subject) -{ - char *output = 0; - char *pSrc, *pDest ; - int i ; - - StrAllocCopy(output, subject); /* Assume converted text are always less than source text */ - - pSrc = subject; - pDest = output ; - for (i = strlen(subject); i > 3; i -= 4) - { - if (intlmime_decode_base64(pSrc, pDest) == 0) - { - pSrc += 4; - pDest += 4; - } - else - { - pSrc += 4; - pDest += 3; - } - } - - *pDest = '\0'; - return output; -} - -#if defined(MOZ_MAIL_COMPOSE) || defined(MOZ_MAIL_NEWS) - -PRIVATE char *intlmime_convert_but_no_decode(const char *header, int16 mailcsid, int16 wincsid) -{ - char* tmpbuf = NULL, *convbuf = NULL; - CCCDataObject obj; - CCCFunc cvtfunc; - /* Copy buf to tmpbuf, this guarantee the convresion won't overwrite the origional buffer and */ - /* It will always return something it any conversion occcur */ - StrAllocCopy(tmpbuf, header); - - if(tmpbuf == NULL) - return NULL; - - obj = INTL_CreateCharCodeConverter(); - if (obj == NULL) - return NULL; - INTL_GetCharCodeConverter(mailcsid, wincsid, obj); - convbuf = NULL; - cvtfunc = INTL_GetCCCCvtfunc(obj); - if (cvtfunc) - convbuf = (char*)cvtfunc(obj, (unsigned char*)tmpbuf, (int32)XP_STRLEN((char*)tmpbuf)); - XP_FREE(obj); - - /* if the conversion which use the origional buffer - them we return the tmpbuf */ - if(convbuf == NULL) - return tmpbuf; - - /* if the conversion return a different buffer, we free the - origional one and return the one return from conversion */ - if(convbuf != tmpbuf) - XP_FREE(tmpbuf); - return convbuf; -} -/* - intlmime_is_hz: it is CS_HZ -*/ -PRIVATE XP_Bool intlmime_is_hz(const char *header) -{ - return (XP_STRSTR(header, "~{") ? TRUE : FALSE); -} -/* - intlmime_is_iso_2022_xxx: it is statefule encoding with esc -*/ -PRIVATE XP_Bool intlmime_is_iso_2022_xxx(const char *header, int16 mailcsid) -{ - return (((mailcsid & STATEFUL) && (XP_STRCHR(header, '\033'))) ? TRUE : FALSE); -} -/* - intlmime_is_mime_part2_header: -*/ -PRIVATE XP_Bool intlmime_is_mime_part2_header(const char *header) -{ - return (( - XP_STRSTR(header, "=?") && - ( - XP_STRSTR(header, "?q?") || - XP_STRSTR(header, "?Q?") || - XP_STRSTR(header, "?b?") || - XP_STRSTR(header, "?B?") - ) - ) ? TRUE : FALSE ); -} - -extern char *strip_continuations(char *original); -extern unsigned char *XP_WordWrapWithPrefix(int charset, unsigned char *str, - int maxColumn, int checkQuoting, - const char *prefix, int addCRLF); - -PRIVATE -char *intl_decode_mime_part2_str(const char *header, int wincsid, XP_Bool dontConvert) -{ - char *work_buf = NULL; - char *output_p = NULL; - char *retbuff = NULL; - char *p, *q, *decoded_text; - char *begin; /* tracking pointer for where we are in the work buffer */ - int16 csid = 0; - int ret = 0; - - - StrAllocCopy(work_buf, header); /* temporary buffer */ - StrAllocCopy(retbuff, header); - - if (work_buf == NULL || retbuff == NULL) - return NULL; - - output_p = retbuff; - begin = work_buf; - - while (*begin != '\0') - { - char * output_text; - - /* GetCharset(); */ - p = strstr(begin, "=?"); - if (p == NULL) - break; /* exit the loop because the rest are not encoded */ - *p = '\0'; - /* skip strings don't need conversion */ - strncpy(output_p, begin, p - begin); - output_p += p - begin; - - p += 2; - begin = p; - - q = strchr(p, '?'); /* Get charset info */ - if (q == NULL) - break; /* exit the loop because there are no charset info */ - *q++ = '\0'; - csid = INTL_CharSetNameToID(p); - if (csid == CS_UNKNOWN) - { - /* - * @@@ may want to use context's default doc_csid in the future - */ - break; /* exit the loop because we don't know the charset */ - } - - if (*(q+1) == '?' && - (*q == 'Q' || *q == 'q' || *q == 'B' || *q == 'b')) - { - p = strstr(q+2, "?="); - if(p != NULL) - *p = '\0'; - if(*q == 'Q' || *q == 'q') - decoded_text = intlmime_decode_qp(q+2); - else - decoded_text = intlmime_decode_base64_buf(q+2); - } - else - break; /* exit the loop because we don't know the encoding method */ - - begin = (p != NULL) ? p + 2 : (q + strlen(q)); - - if (decoded_text == NULL) - break; /* exit the loop because we have problem to decode */ - - ret = 1; - if ((! dontConvert) && (csid != wincsid)) - output_text = (char *)intlmime_convert_but_no_decode(decoded_text, csid, (int16)wincsid); - else - output_text = (char *)decoded_text; - - XP_ASSERT(output_text != NULL); - XP_STRCPY(output_p, (char *)output_text); - output_p += strlen(output_text); - - if (output_text != decoded_text) - XP_FREE(output_text); - XP_FREE(decoded_text); - } - XP_STRCPY(output_p, (char *)begin); /* put the tail back */ - - if (work_buf) - XP_FREE(work_buf); - - if (ret) - { - return retbuff; - } - else - { - XP_FREE(retbuff); - return NULL; /* null means no conversion */ - } -} - -/* PRIVATE */ -/* char* intl_strip_crlftab(char* str) */ -/* { */ -/* char* out, *in; */ -/* if(str) { */ -/* for(out = in = str; *in != NULL; in++) */ -/* if((*in != CR) && (*in != LF) && (*in != TAB)) */ -/* *out++ = *in; */ -/* *out = NULL; */ -/* } */ -/* return str; */ -/* } */ - - -/* - IntlDecodeMimePartIIStr - This functions converts mail charset to Window charset for subject - Syntax: =?MimeCharset?[B|Q]?text?= - MimeCharset = ISO-2022-JP - ISO-8859-1 - ISO-8859-? - .... - ?B? : Base64 Encoding (used for multibyte encoding) - ?Q? : Quote Printable Encoding (used for single byte encoding) - - eg. for Japanese mail, it looks like - =?ISO-2022-JP?B? ........ ?= -*/ -/* IMPORTANT NOTE: */ -/* Return NULL in this interface only mean ther are no conversion */ -/* It does not mean the conversion is store in the origional buffer */ -/* and the length is not change. This is differ from other conversion routine */ - - -PRIVATE -char *intl_DecodeMimePartIIStr(const char *header, int16 wincsid, XP_Bool dontConvert) -{ - int16 mailcsid = INTL_DefaultMailCharSetID(wincsid); - XP_Bool no8bitdata = TRUE; - - if (header == 0 || *header == '\0') - return NULL; - if (wincsid == 0) /* Use global if undefined */ - wincsid = INTL_DefaultWinCharSetID(0); - - no8bitdata = intlmime_only_ascii_str(header); - - /* Start Special Case Handling */ - if(! dontConvert) - { - /* Need to do conversion in here if necessary */ - if(! no8bitdata) - { - /* Special Case 1: 8 Bit */ - /* then we assume it is not mime part 2 encoding, we convert from the internet encoding to wincsid */ - if(wincsid == CS_UTF8) - return strip_continuations(intlmime_convert_but_no_decode(header, CS_UTF8, (int16)wincsid)); - else - return strip_continuations(intlmime_convert_but_no_decode(header, mailcsid, (int16)wincsid)); - } - else - { - /* 7bit- It could be MIME Part 2 Header */ - if ((wincsid == CS_GB_8BIT) && (intlmime_is_hz(header)) ) - { - /* Special Case 2: HZ */ - /* for subject list pane, if it's GB, we only do HZ conversion */ - return strip_continuations(intlmime_convert_but_no_decode(header, CS_GB_8BIT, CS_GB_8BIT)); - } - else if((wincsid == CS_UTF8) && - (! intlmime_is_mime_part2_header(header))) - { - /* Special Case 3: UTF8, no mime2 */ - return strip_continuations(intlmime_convert_but_no_decode(header, CS_UTF8, CS_UTF8)); - } - else if(intlmime_is_iso_2022_xxx(header, mailcsid) && - (! intlmime_is_mime_part2_header(header))) - { - return strip_continuations(intlmime_convert_but_no_decode(header, mailcsid, wincsid)); - } - } - } - /* Handle only Mime Part 2 after this point */ - return strip_continuations(intl_decode_mime_part2_str(header, wincsid, dontConvert)); -} -#endif /* MOZ_MAIL_COMPOSE || MOZ_MAIL_NEWS */ - - - -PRIVATE char basis_64[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -PRIVATE int intlmime_encode_base64 (const char *in, char *out) -{ - unsigned char c1, c2, c3; - c1 = in[0]; - c2 = in[1]; - c3 = in[2]; - - *out++ = basis_64[c1>>2]; - *out++ = basis_64[((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)]; - - *out++ = basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)]; - *out++ = basis_64[c3 & 0x3F]; - return 1; -} - -PRIVATE char *intlmime_encode_base64_buf(char *subject, size_t size) -{ - char *output = 0; - char *pSrc, *pDest ; - int i ; - - output = (char *)XP_ALLOC(size * 4 / 3 + 4); - if (output == NULL) - return NULL; - - pSrc = subject; - pDest = output ; - for (i = size; i >= 3; i -= 3) - { - if (intlmime_encode_base64(pSrc, pDest) == 0) /* error */ - { - pSrc += 3; - pDest += 3; - } - else - { - pSrc += 3; - pDest += 4; - } - } - /* in case (i % 3 ) == 1 or 2 */ - if(i > 0) - { - char in[3]; - int j; - in[0] = in[1] = in[2] ='\0'; - for(j=0;j= 'a') && (*p <= 'z')) || - ((*p >= 'A') && (*p <= 'Z')) || - ((*p >= '0') && (*p <= '9'))) - ) - *pDest = *p; - else - { - *pDest++ = '='; - n = (*p & 0xF0) >> 4; /* high byte */ - if (n < 10) - *pDest = '0' + n; - else - *pDest = 'A' + n - 10; - pDest ++ ; - - n = *p & 0x0F; /* low byte */ - if (n < 10) - *pDest = '0' + n; - else - *pDest = 'A' + n - 10; - } - - p ++; - pDest ++; - } - - *pDest = '\0'; - return output; -} - -PRIVATE char *intlmime_encode_next8bitword(int wincsid, char *src) -{ - char *p; - XP_Bool non_ascii = FALSE; - if (src == NULL) - return NULL; - p = src; - while (*p == ' ') - p ++ ; - while ( *p ) - { - if ((unsigned char) *p > 0x7F) - non_ascii = TRUE; - if ( IS_MAIL_SEPARATOR(p) ) - { - break; - } - p = INTL_NextChar(wincsid, p); - } - - if (non_ascii) - return p; - else - return NULL; -} - -/* -lock then length of input buffer, so the return value is less than iThreshold bytes -*/ -PRIVATE int ResetLen( int iThreshold, const char* buffer, int16 wincsid ) -{ - const char *begin, *end, *tmp; - - tmp = begin = end = buffer; - XP_ASSERT( iThreshold > 1 ); - XP_ASSERT( buffer != NULL ); - while( ( end - begin ) <= iThreshold ){ - tmp = end; - if (!(*end)) - break; - end = INTL_NextChar( wincsid, (char*)end ); - } - - XP_ASSERT( tmp > begin ); - return tmp - begin; -} - -PRIVATE char * intlmime_encode_mail_address(int wincsid, const char *src, CCCDataObject obj, - int maxLineLen) -{ - char *begin, *end; - char *retbuf = NULL, *srcbuf = NULL; - char sep = '\0'; - char *sep_p = NULL; - char *name; - int retbufsize; - int line_len = 0; - int srclen; - int default_iThreshold; - int iThreshold; /* how many bytes we can convert from the src */ - int iEffectLen; /* the maximum length we can convert from the src */ - XP_Bool bChop = FALSE; - XP_Bool is_being_used_in_email_summary_file = (maxLineLen > 120); - CCCFunc cvtfunc = NULL; - - if (obj) - cvtfunc = INTL_GetCCCCvtfunc(obj); - - if (src == NULL || *src == '\0') - return NULL; - /* make a copy, so don't need touch original buffer */ - StrAllocCopy(srcbuf, src); - if (srcbuf == NULL) - return NULL; - begin = srcbuf; - - name = (char *)INTL_CsidToCharsetNamePt(intlmime_get_outgoing_mime_csid ((int16)wincsid)); - default_iThreshold = iEffectLen = ( maxLineLen - XP_STRLEN( name ) - 7 ) * 3 / 4; - iThreshold = default_iThreshold; - - - /* allocate enough buffer for conversion, this way it can avoid - do another memory allocation which is expensive - */ - - retbufsize = XP_STRLEN(srcbuf) * 3 + MAX_CSNAME + 8; - retbuf = XP_ALLOC(retbufsize); - if (retbuf == NULL) /* Give up if not enough memory */ - { - XP_FREE(srcbuf); - return NULL; - } - - *retbuf = '\0'; - - srclen = XP_STRLEN(srcbuf); - while (begin < (srcbuf + srclen)) - { /* get block of data between commas */ - char *p, *q; - char *buf1, *buf2; - int len, newsize, convlen, retbuflen; - XP_Bool non_ascii; - - retbuflen = XP_STRLEN(retbuf); - end = NULL; - if (is_being_used_in_email_summary_file) { - } else { - /* scan for separator, conversion happens on 8bit - word between separators - */ - if (IS_MAIL_SEPARATOR(begin)) - { /* skip white spaces and separator */ - q = begin; - while ( IS_MAIL_SEPARATOR(q) ) - q ++ ; - sep = *(q - 1); - sep_p = (q - 1); - *(q - 1) = '\0'; - end = q - 1; - } - else - { - sep = '\0'; - /* scan for next separator */ - non_ascii = FALSE; - for (q = begin; *q;) - { - if ((unsigned char) *q > 0x7F) - non_ascii = TRUE; - if ( IS_MAIL_SEPARATOR(q) ) - { - if ((*q == ' ') && (non_ascii == TRUE)) - { - while ((p = intlmime_encode_next8bitword(wincsid, q)) != NULL) - { - if (p == NULL) - break; - q = p; - if (*p != ' ') - break; - } - } - sep = *q; - sep_p = q; - *q = '\0'; - end = q; - break; - } - q = INTL_NextChar(wincsid, q); - } - } - } - - /* get the to_be_converted_buffer's len */ - len = XP_STRLEN(begin); - - if ( !intlmime_only_ascii_str(begin) ) - { - if (obj && cvtfunc) - { - /* - the 30 lenght is calculated as follows (I think) - total: 30 = 7 + 11 + 8 + 4 - -------------------------------------- - Mime Part II tags: 7 = "=?...?B?...?=" - Charset name: 11 = "iso-2022-jp" - JIS excape seq. 8 = "$B" + "(B" * 4/3 - space for one char 4 = 2 * 4/3 rounded up to nearest 4 - Brian Stell 10/97 - */ - if( ( maxLineLen - line_len < 30 ) || bChop ){ - /* chop first, then continue */ - buf1 = retbuf + retbuflen; - *buf1++ = CR; *buf1++ = LF; *buf1++ = '\t'; - line_len = 0; - retbuflen += 3; - *buf1 = '\0'; - bChop = FALSE; - iThreshold = default_iThreshold; - } - /* iEffectLen - the max byte-string length of JIS ( converted form S-JIS ) - name - such as "iso-2022-jp", the encoding name, MUST be shorter than 23 bytes - 7 - is the "=?:?:?=" */ - iEffectLen = ( maxLineLen - line_len - XP_STRLEN( name ) - 7 ) * 3 / 4; - while( TRUE ){ - int iBufLen; /* converted buffer's length, not BASE64 */ - if( len > iThreshold ) - len = ResetLen( iThreshold, begin, (int16)wincsid ); - - if ( iThreshold <= 1 ) - { - /* Certain trashed mailboxes were causing an - ** infinite loop at this point, so we need a way of - ** getting out of trouble. - ** - ** BEFORE: iThreshold was becoming 1, then 0, and - ** we were looping indefinitely. - ** AFTER: Now, first there will be - ** an assert in the previous call to ResetLen, - ** then we'll do that again on the repeat pass, - ** then we'll exit more or less gracefully. - ** - bug #83204, an oldie but goodie. - ** - jrm 98/03/25 - */ - return NULL; - } - buf1 = (char *) cvtfunc(obj, (unsigned char *)begin, len); - iBufLen = XP_STRLEN( buf1 ); - XP_ASSERT( iBufLen > 0 ); - - /* recal iThreshold each time based on last experience */ - iThreshold = len * iEffectLen / iBufLen; - if( iBufLen > iEffectLen ){ - /* the converted buffer is too large, we have to - 1. free the buffer; - 2. redo again based on the new iThreshold - */ - bChop = TRUE; /* append CRLFTAB */ - if (buf1 && (buf1 != begin)){ - XP_FREE(buf1); - buf1 = NULL; - } - } else { - end = begin + len - 1; - break; - } - } - if (bChop && (NULL!=sep_p)) { - *sep_p = sep; /* we are length limited so we do not need this */ - sep = '\0'; /* artifical terminator. So, restore the original character */ - sep_p = NULL; - } - - if (!buf1) - { - XP_FREE(srcbuf); - XP_FREE(retbuf); - return NULL; - } - } - else - { - buf1 = XP_ALLOC(len + 1); - if (!buf1) - { - XP_FREE(srcbuf); - XP_FREE(retbuf); - return NULL; - } - XP_MEMCPY(buf1, begin, len); - *(buf1 + len) = '\0'; - } - - if (wincsid & MULTIBYTE) - { - /* converts to Base64 Encoding */ - buf2 = (char *)intlmime_encode_base64_buf(buf1, strlen(buf1)); - } - else - { - /* Converts to Quote Printable Encoding */ - buf2 = (char *)intlmime_encode_qp_buf(buf1); - } - - - if (buf1 && (buf1 != begin)) - XP_FREE(buf1); - - if (buf2 == NULL) /* QUIT if memory allocation failed */ - { - XP_FREE(srcbuf); - XP_FREE(retbuf); - return NULL; - } - - /* realloc memory for retbuff if necessary, - 7: =?...?B?..?=, 3: CR LF TAB */ - convlen = XP_STRLEN(buf2) + XP_STRLEN(name) + 7; - newsize = convlen + retbuflen + 3 + 2; /* 2:SEP '\0', 3:CRLFTAB */ - - if (newsize > retbufsize) - { - char *tempbuf; - tempbuf = XP_REALLOC(retbuf, newsize); - if (tempbuf == NULL) /* QUIT, if not enough memory left */ - { - XP_FREE(buf2); - XP_FREE(srcbuf); - XP_FREE(retbuf); - return NULL; - } - retbuf = tempbuf; - retbufsize = newsize; - } - /* buf1 points to end of current retbuf */ - buf1 = retbuf + retbuflen; - - if ((line_len > 10) && - ((line_len + convlen) > maxLineLen)) - { - *buf1++ = CR; - *buf1++ = LF; - *buf1++ = '\t'; - line_len = 0; - iThreshold = default_iThreshold; - } - *buf1 = '\0'; - - /* Add encoding tag for base62 and QP */ - XP_STRCAT(buf1, "=?"); - XP_STRCAT(buf1, name ); - if(wincsid & MULTIBYTE) - XP_STRCAT(buf1, "?B?"); - else - XP_STRCAT(buf1, "?Q?"); - XP_STRCAT(buf1, buf2); - XP_STRCAT(buf1, "?="); - - line_len += convlen + 1; /* 1: SEP */ - - XP_FREE(buf2); /* free base64 buffer */ - } - else /* if no 8bit data in the block */ - { - newsize = retbuflen + len + 2 + 3; /* 2: ',''\0', 3: CRLFTAB */ - if (newsize > retbufsize) - { - char *tempbuf; - tempbuf = XP_REALLOC(retbuf, newsize); - if (tempbuf == NULL) - { - XP_FREE(srcbuf); - XP_FREE(retbuf); - return NULL; - } - retbuf = tempbuf; - retbufsize = newsize; - } - buf1 = retbuf + retbuflen; - - if ((line_len > 10) && - ((line_len + len) > maxLineLen)) - { - *buf1++ = CR; - *buf1++ = LF; - *buf1++ = '\t'; - line_len = 0; - iThreshold = default_iThreshold; - } - /* copy buffer from begin to buf1 stripping CRLFTAB */ - for (p = begin; *p; p++) - { - if (*p == CR || *p == LF || *p == TAB) - len --; - else - *buf1++ = *p; - } - *buf1 = '\0'; - line_len += len + 1; /* 1: SEP */ - } - - buf1 = buf1 + XP_STRLEN(buf1); - if (sep == CR || sep == LF || sep == TAB) /* strip CR,LF,TAB */ - *buf1 = '\0'; - else - { - *buf1 = sep; - *(buf1+1) = '\0'; - } - - if (end == NULL) - break; - begin = end + 1; - } - if (srcbuf) - XP_FREE(srcbuf); - return retbuf; -} - -/* - Latin1, latin2: - Source --> Quote Printable --> Encoding Info - Japanese: - EUC,JIS,SJIS --> JIS --> Base64 --> Encoding Info - Others: - No conversion - flag: 0: 8bit on - 1: mime_use_quoted_printable_p - return: NULL if no conversion occured - -*/ - -PRIVATE -char *intl_EncodeMimePartIIStr(char *subject, int16 wincsid, XP_Bool bUseMime, int maxLineLen) -{ - int iSrcLen; - unsigned char *buf = NULL; /* Initial to NULL */ - int16 mail_csid; - CCCDataObject obj = NULL; - char *name; - CCCFunc cvtfunc = NULL; - - if (subject == NULL || *subject == '\0') - return NULL; - - iSrcLen = XP_STRLEN(subject); - if (wincsid == 0) - wincsid = INTL_DefaultWinCharSetID(0) ; - - mail_csid = intlmime_get_outgoing_mime_csid ((int16)wincsid); - name = (char *)INTL_CsidToCharsetNamePt(mail_csid); - - /* check to see if subject are all ascii or not */ - if(intlmime_only_ascii_str(subject)) - return (char *) XP_WordWrapWithPrefix(mail_csid, (unsigned char *) - subject, maxLineLen, 0, " ", 1); - - if (mail_csid != wincsid) - { - obj = INTL_CreateCharCodeConverter(); - if (obj == NULL) - return 0; - /* setup converter from wincsid --> mail_csid */ - INTL_GetCharCodeConverter((int16)wincsid, mail_csid, obj) ; - cvtfunc = INTL_GetCCCCvtfunc(obj); - } - /* Erik said in the case of STATEFUL mail encoding, we should FORCE it to use */ - /* MIME Part2 to get ride of ESC in To: and CC: field, which may introduce more trouble */ - if((bUseMime) || (mail_csid & STATEFUL))/* call intlmime_encode_mail_address */ - { - buf = (unsigned char *)intlmime_encode_mail_address(wincsid, subject, obj, maxLineLen); - if(buf == (unsigned char*)subject) /* no encoding, set return value to NULL */ - buf = NULL; - } - else - { /* 8bit, just do conversion if necessary */ - /* In this case, since the conversion routine may reuse the origional buffer */ - /* We better allocate one first- We don't want to reuse the origional buffer */ - - if ((mail_csid != wincsid) && (cvtfunc)) - { - char* newbuf = NULL; - /* Copy buf to newbuf */ - StrAllocCopy(newbuf, subject); - if(newbuf != NULL) - { - buf = (unsigned char *)cvtfunc(obj, (unsigned char*)newbuf, iSrcLen); - if(buf != (unsigned char*)newbuf) - XP_FREE(newbuf); - /* time for wrapping long line */ - if (buf) - { - newbuf = (char*) buf; - buf = XP_WordWrapWithPrefix(mail_csid, (unsigned char *) - newbuf, maxLineLen, 0, " ", 1); - - if (buf != (unsigned char*) newbuf) - XP_FREE(newbuf); - } - } - } - } - if (obj) - XP_FREE(obj); - return (char*)buf; - - /* IMPORTANT NOTE: */ - /* Return NULL in this interface only mean ther are no conversion */ - /* It does not mean the conversion is store in the origional buffer */ - /* and the length is not change. This is differ from other conversion routine */ -} -#endif /* MOZ_MAIL_COMPOSE || MOZ_MAIL_NEWS */ - -#ifdef MOZ_MAIL_NEWS -#if 0 -PUBLIC XP_Bool INTL_FindMimePartIIStr(int16 csid, XP_Bool searchcasesensitive, const char *mimepart2str,const char *s2) -{ - XP_Bool onlyAscii; - char *ret = NULL; - char *s1 = (char*)mimepart2str; - char *conv; - if((s2 == NULL) || (*s2 == '\0')) /* if search for NULL string, return TRUE */ - return TRUE; - if((s1 == NULL) || (*s1 == '\0')) /* if string is NULL, return FALSE */ - return FALSE; - - conv= IntlDecodeMimePartIIStr(mimepart2str, csid, FALSE); - if(conv) - s1 = conv; - onlyAscii = intlmime_only_ascii_str(s1) && intlmime_only_ascii_str(s2); - if(onlyAscii) /* for performance reason, let's call the ANSI C routine for ascii only case */ - { - if(searchcasesensitive) - ret= strstr( s1, s2); - else - ret= strcasestr(s1, s2); - } - else - { - if(searchcasesensitive) - ret= INTL_Strstr(csid, s1, s2); - else - ret= INTL_Strcasestr(csid, s1, s2); - } - if(conv != mimepart2str) - XP_FREE(conv); - return (ret != NULL); /* return TRUE if it find something */ -} -#endif -/* - NNTP XPAT I18N Support - INTL_FormatNNTPXPATInNonRFC1522Format and INTL_FormatNNTPXPATInRFC1522Format - return the a new string to the caller - that could be send to NNTP server for Mail Header Search (use XPAT) - The caller must free the return string. -*/ - -/* This function use the same buffer it pass in, it strip the leading and trialling ISO-2022 ESC */ -PRIVATE void intl_strip_leading_and_trial_iso_2022_esc (char* iso_2022_str); -PRIVATE char *intl_xpat_escape ( char *str); - -#define ISO_2022_I_CODE(c) ((0x20 <= (c)) && ((c) <= 0x2F)) -#define ISO_2022_F_CODE(c) ((0x30 <= (c)) && ((c) <= 0x7E)) - -PRIVATE void intl_strip_leading_and_trial_iso_2022_esc(char* iso_2022_str) -{ - char* inp = iso_2022_str; - char* outp = iso_2022_str; - char* lastescp = NULL; - - /* strip leading Escape */ - if(ESC == *inp) - { - for(inp++ ;((*inp) && (ISO_2022_I_CODE(*inp))); /* void */) - inp++; /* Skip I Code */ - if(ISO_2022_F_CODE(*inp)) /* Skip F Code */ - inp++; - } - - for( ; (0 != *inp); inp++, outp++) /* copy data including esc */ - { - *outp = *inp; - if(ESC == *outp) /* remember the last position of esc */ - lastescp = outp; - } - *outp = '\0'; /* NULL terminate */ - - /* strip trialling Escape if necessary */ - if(lastescp) - { - char* esc_p; - for(esc_p = lastescp + 1; ((*esc_p) && (ISO_2022_I_CODE(*esc_p))); /* void */ ) - esc_p++; /* Skip I Code */ - - if(ISO_2022_F_CODE(*esc_p)) /* Skip F Code */ - esc_p++; - - if('\0' == *esc_p) /* if it point to our NULL terminate, it is the trialling esp, we take it out */ - { /* otherwise, it is the esc in the middle, ignore it */ - *lastescp = '\0'; - } - } -} -#define BETWEEN_A_Z(c) (('A' <= (c)) && ((c) <= 'Z')) -#define BETWEEN_a_z(c) (('a' <= (c)) && ((c) <= 'z')) -#define BETWEEN_0_9(c) (('0' <= (c)) && ((c) <= '9')) -/* - Escape Everything except 0-9 A-Z a-z - "Common NNTP Extensions" and wildmat(3) does not state clearly what NEED TO BE Escape. - I look like the * ? [ \ need to be escape , - But by trial and error I also find out ^ and $ need to be escape. - That's why I just do this ESCAPE MORE THAN WE NEEDED untill we figure out what relly NEED TO BE Escaped -*/ -#define XPAT_NEED_ESCAPE(c) (! (BETWEEN_A_Z(c) || BETWEEN_a_z(c) || BETWEEN_0_9(c))) -PRIVATE char *intl_xpat_escape( char *str) -{ - char *result = NULL; - /* max escaped length is one extra characters for every character in the str. */ - char *scratchBuf = (char*) XP_ALLOC (2*XP_STRLEN(str) + 1); - if(scratchBuf) - { - char *scratchPtr = scratchBuf; - char ch; - while ('\0' != (ch = *str++)) - { - if (XPAT_NEED_ESCAPE(ch)) - *scratchPtr++ = '\\'; - *scratchPtr++ = ch; - } - *scratchPtr = '\0'; - result = XP_STRDUP (scratchBuf); /* realloc down to smaller size */ - XP_FREE (scratchBuf); - } - return result; -} - - -/* - INTL_FormatNNTPXPATInNonRFC1522Format - 1. Convert the data from wincsid to newscsid - 2. Strip Out leading Esc Sequence and trialing Esc Sequence - 3. Always return memory unless memory is not enough. Never have side effect on the pass-in buffer -*/ - -PUBLIC unsigned char* INTL_FormatNNTPXPATInNonRFC1522Format(int16 wincsid, unsigned char* searchString) -{ - char* temp = NULL; - char* conv = NULL; - char* xpat_escape = NULL; - StrAllocCopy(temp, (char*) searchString); - XP_ASSERT(temp); /* Should only come here if Memory Not Enough */ - if(NULL == temp) - return NULL; - - /* Convert text from wincsid to newscsid */ - if(NULL != (conv = (char*)INTL_ConvertLineWithoutAutoDetect(wincsid, INTL_DefaultNewsCharSetID(wincsid), (unsigned char*)temp, XP_STRLEN((char*)temp)))) - XP_FREE(temp); /* If the conversion do use the same buffer, free the origional one */ - else - conv = temp; - intl_strip_leading_and_trial_iso_2022_esc(conv); - - /* Do XPAT escape */ - xpat_escape = intl_xpat_escape(conv); - if(NULL != conv) - XP_FREE(conv); - return (unsigned char*) xpat_escape; -} - -#if 0 - -PUBLIC unsigned char* INTL_FormatNNTPXPATInRFC1522Format(int16 wincsid, unsigned char* searchString) -{ - /* Temp Implementation untill we really support it : Just make a duplication. */ - char* result = NULL; - StrAllocCopy(result, (char*) searchString); - XP_ASSERT(result); /* Should only come here if Memory Not Enough */ - return (unsigned char*) result; -} - -#endif - -#endif /* MOZ_MAIL_NEWS */ diff --git a/mozilla/lib/libi18n/net_junk.c b/mozilla/lib/libi18n/net_junk.c deleted file mode 100644 index c75013ef622..00000000000 --- a/mozilla/lib/libi18n/net_junk.c +++ /dev/null @@ -1,343 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* net_junk.c */ - -/*#include "intlpriv.h"*/ -#include "xp.h" -#include "intl_csi.h" -#include "libi18n.h" -#include "net_junk.h" -#include "libmocha.h" - - -MODULE_PRIVATE int16 PeekMetaCharsetTag (char *, uint32); -MODULE_PRIVATE int16 DetectUCS2 (CCCDataObject, unsigned char *, int32); - -typedef struct { - Stream *current_stream; - Stream *next_stream; - CCCDataObject obj; -} NetStreamData; - -extern unsigned char *One2OneCCC(CCCDataObject,unsigned char *,int32); -PRIVATE int net_AutoCharCodeConv (NET_StreamClass *stream, const char *s, int32 l); -PRIVATE int net_1to1CCC (NET_StreamClass *stream, const unsigned char *s, int32 l); - -PRIVATE void net_CvtCharCodeComplete (NET_StreamClass *stream) -{ - NetStreamData *nsd=stream->data_object; - unsigned char *uncvtbuf; - - uncvtbuf = INTL_GetCCCUncvtbuf(nsd->obj); - - /* pass downstream any uncoverted characters */ - if (uncvtbuf[0] != '\0') - (*nsd->next_stream->put_block)(nsd->next_stream, - (const char *)uncvtbuf, strlen((char *)uncvtbuf)); - - (*nsd->next_stream->complete)(nsd->next_stream); - - XP_FREE(nsd->next_stream); - XP_FREE(nsd->obj); - XP_FREE(nsd); - return; -} - -PRIVATE void net_CvtCharCodeAbort (NET_StreamClass *stream, int status) -{ - NetStreamData *nsd=stream->data_object; - (*nsd->next_stream->abort)(nsd->next_stream, status); - - XP_FREE(nsd->next_stream); - XP_FREE(nsd->obj); - XP_FREE(nsd); - - return; -} - -PRIVATE int -net_CharCodeConv( NET_StreamClass *stream, - const unsigned char *buf, /* buffer for conversion */ - int32 bufsz) /* buffer size in bytes */ -{ - NetStreamData *nsd=stream->data_object; - unsigned char *tobuf; - int rv; - CCCFunc cvtfunc; - - cvtfunc = INTL_GetCCCCvtfunc(nsd->obj); - - tobuf = (unsigned char *)cvtfunc(nsd->obj, buf, bufsz); - - if (tobuf) { - rv = (*nsd->next_stream->put_block) (nsd->next_stream, - (const char *)tobuf, INTL_GetCCCLen(nsd->obj)); - if (tobuf != buf) - XP_FREE(tobuf); - return(rv); - } else { - return(INTL_GetCCCRetval(nsd->obj)); - } -} - - /* Null Char Code Conversion module -- pass unconverted data downstream */ -/* PRIVATE */ int -net_NoCharCodeConv (NET_StreamClass *stream, const char *s, int32 l) -{ - NetStreamData*nsd=stream->data_object; - return((*nsd->next_stream->put_block)(nsd->next_stream,s,l)); -} - -PRIVATE int -net_AutoCharCodeConv (NET_StreamClass *stream, const char *s, int32 l) -{ - NetStreamData*nsd=stream->data_object; - int16 doc_csid; - unsigned char *tobuf = NULL; - int rv; - CCCFunc cvtfunc; - - cvtfunc = INTL_GetCCCCvtfunc(nsd->obj); - -/* for debugging -- erik */ -#if 0 - { - static FILE *f = NULL; - - if (!f) - { - f = fopen("/tmp/zzz", "w"); - } - - if (f && s && (l > 0)) - { - (void) fwrite(s, 1, l, f); - } - } -#endif /* 0 */ - - if (cvtfunc != NULL) - tobuf = (unsigned char *)cvtfunc(nsd->obj, (unsigned char *)s, l); - else - { - /* Look at the first block and see if we determine - * what the charset is from that block. - */ - - /* Somehow NET_PlainTextConverter() put a "

" in the - first block. Try to bypass that block - We need this so we can detect UCS2 for the NT UCS2 plantext - */ - if((l == 11) && (strncmp(s, "<plaintext>", 11)==0)) - { - return((*nsd->next_stream->put_block)(nsd->next_stream,s,l)); - } - /* check for unicode (ucs2) */ - doc_csid = DetectUCS2(nsd->obj, (unsigned char *)s, l); - if(doc_csid == CS_DEFAULT) - { - doc_csid = PeekMetaCharsetTag((char *)s, l) ; - if (doc_csid == CS_ASCII) /* the header said ascii. */ - { - nsd->current_stream->put_block = (MKStreamWriteFunc) net_NoCharCodeConv; - return((*nsd->next_stream->put_block)(nsd->next_stream,s,l)); - } - } - - /* We looked at the first block but did not determine - * what the charset is. Install the default converter - * now. It could be a standard or an auto-detecting converter. - */ - if (doc_csid != CS_DEFAULT) - { - (void) INTL_GetCharCodeConverter(doc_csid, 0, nsd->obj); - INTL_CallCCCReportAutoDetect(nsd->obj, doc_csid); - } - else - (void) INTL_GetCharCodeConverter(INTL_GetCCCDefaultCSID(nsd->obj),0,nsd->obj); - cvtfunc = INTL_GetCCCCvtfunc(nsd->obj); - - /* If no conversion needed, change put_block module for successive - * data blocks. For current data block, return unmodified buffer. - */ - if (cvtfunc == NULL) - { - return((*nsd->next_stream->put_block)(nsd->next_stream,s,l)); - } - - /* For initial block, must call converter directly. Success calls - * to the converter will be called directly from net_CharCodeConv() - */ - } - - if (tobuf == NULL) - tobuf = (unsigned char *)cvtfunc(nsd->obj, (unsigned char *)s, l); - - if (tobuf) { - rv = (*nsd->next_stream->put_block) (nsd->next_stream, - (const char *)tobuf, INTL_GetCCCLen(nsd->obj)); - if (tobuf != (unsigned char*)s) - XP_FREE(tobuf); - return(rv); - } else { - return(INTL_GetCCCRetval(nsd->obj)); - } -} - - /* One-byte-to-one-byte Char Code Conversion module. - * Table driven. Table provided by FE. - */ -PRIVATE int -net_1to1CCC (NET_StreamClass *stream, const unsigned char *s, int32 l) -{ - NetStreamData *nsd=stream->data_object; - (void) One2OneCCC (nsd->obj, (unsigned char *)s, l); - return((*nsd->next_stream->put_block)(nsd->next_stream, - (const char *)s, INTL_GetCCCLen(nsd->obj))); -} - - -/* - * We are always ready for writing, but the next stream might not - * be so, since we aren't willing to buffer, tell netlib the - * next stream's buffer size - */ -PRIVATE unsigned int net_CvtCharCodeWriteReady (NET_StreamClass *stream) -{ - NetStreamData *nsd=stream->data_object; - return ((*nsd->next_stream->is_write_ready)(nsd->next_stream)); -} - -PRIVATE void -net_report_autodetect(void *closure, CCCDataObject obj, uint16 doc_csid) -{ - NetStreamData *nsd = (NetStreamData *)closure; - iDocumentContext doc_context = nsd->current_stream->window_id; - CCCFunc cvtfunc = INTL_GetCCCCvtfunc(obj); - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(doc_context); - - INTL_SetCSIDocCSID(c, doc_csid); - /* I hope it is okay, to set the win_csid */ - INTL_SetCSIWinCSID(c, INTL_GetCCCToCSID(obj)); - if (cvtfunc == NULL) - nsd->current_stream->put_block = (MKStreamWriteFunc) net_NoCharCodeConv; -} - -PUBLIC Stream * -INTL_ConvCharCode (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *mwcontext) -{ - NetStreamData *nsd; - CCCDataObject obj; - Stream *stream; - iDocumentContext doc_context = (iDocumentContext)mwcontext; - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(doc_context); - XP_Bool is_metacharset_reload; - uint16 default_doc_csid = INTL_DefaultDocCharSetID(mwcontext); -/* - Should this be ? - uint16 default_doc_csid = FE_DefaultDocCharSetID(mwcontext); -*/ - - - TRACEMSG(("Setting up display stream. Have URL: %s\n", URL_s->address)); - - stream = XP_NEW_ZAP(Stream); - if(stream == NULL) - return(NULL); - - stream->name = "CharCodeConverter"; - stream->complete = (MKStreamCompleteFunc) net_CvtCharCodeComplete; - stream->abort = (MKStreamAbortFunc) net_CvtCharCodeAbort; - - stream->is_write_ready = (MKStreamWriteReadyFunc) net_CvtCharCodeWriteReady; - stream->window_id = doc_context; - - /* initialize the doc_csid (etc.) unless if this is a reload caused by meta charset */ - if ((NET_RESIZE_RELOAD == URL_s->resize_reload) - && (METACHARSET_FORCERELAYOUT == INTL_GetCSIRelayoutFlag(c))) - is_metacharset_reload = TRUE; - else - is_metacharset_reload = FALSE; - - INTL_CSIInitialize(c, is_metacharset_reload, URL_s->charset, - mwcontext->type, default_doc_csid); - - obj = INTL_CreateDocumentCCC(c, default_doc_csid); - if (obj == NULL) { - XP_FREE(stream); - return(NULL); - } - - nsd = XP_NEW_ZAP(NetStreamData); - if(nsd == NULL) { - XP_FREE(stream); - XP_FREE(obj); - return(NULL); - } - nsd->current_stream = stream; - nsd->obj = obj; - stream->data_object = nsd; /* document info object */ - INTL_SetCCCReportAutoDetect(obj, net_report_autodetect, nsd); - - - if (INTL_GetCSIDocCSID(c) == CS_DEFAULT || INTL_GetCSIDocCSID(c) == CS_UNKNOWN) - { - /* we know the default converter but do not install it yet. - * Instead wait until the first block and see if we can determine - * what the actual charset is from http/meta tags or from the - * first block. By delaying we can avoid a reload if - * we get a different charset from http/meta tag or the first block. - */ - stream->put_block = (MKStreamWriteFunc) net_AutoCharCodeConv; - } - else - { - if (INTL_GetCCCCvtfunc(obj) == NULL) - stream->put_block = (MKStreamWriteFunc) net_NoCharCodeConv; - else if (INTL_GetCCCCvtfunc(obj) == (CCCFunc)One2OneCCC) - stream->put_block = (MKStreamWriteFunc) net_1to1CCC; - else - stream->put_block = (MKStreamWriteFunc) net_CharCodeConv; - } - - TRACEMSG(("Returning stream from NET_CvtCharCodeConverter\n")); - - /* remap content type to be to INTERNAL_PARSER - */ - StrAllocCopy(URL_s->content_type, INTERNAL_PARSER); - -#ifdef JSDEBUGGER - nsd->next_stream = LM_StreamBuilder(format_out, NULL, URL_s, mwcontext); -#else - nsd->next_stream = NET_StreamBuilder(format_out, URL_s, doc_context); -#endif /* JSDEBUGGER */ - - if(!nsd->next_stream) - { - XP_FREE(obj); - XP_FREE(stream); - XP_FREE(nsd); - return(NULL); - } - - return stream; -} - diff --git a/mozilla/lib/libi18n/net_junk.h b/mozilla/lib/libi18n/net_junk.h deleted file mode 100644 index 4bac81067aa..00000000000 --- a/mozilla/lib/libi18n/net_junk.h +++ /dev/null @@ -1,32 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* net_junk.h */ - -#ifndef NET_JUNK_H -#define NET_JUNK_H - -#define Stream NET_StreamClass -#define URL URL_Struct - -typedef struct _NET_JUNK_STREAM_DATA { - Stream *stream; - CCCDataObject obj; -} NET_JUNK_STREAM_DATA; - - -#endif /* NET_JUNK_H */ diff --git a/mozilla/lib/libi18n/nscstr.c b/mozilla/lib/libi18n/nscstr.c deleted file mode 100644 index 29c928e29a4..00000000000 --- a/mozilla/lib/libi18n/nscstr.c +++ /dev/null @@ -1,171 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ - -#include "intlpriv.h" -#include "libi18n.h" - -/* Private Function */ -PRIVATE void -INTL_CompoundStrAddSeg_p( - INTL_CompoundStr* This, - INTL_Encoding_ID inencoding, - unsigned char* intext); -PRIVATE INTL_CompoundStr* INTL_CompoundStrNewSeg_p(INTL_Encoding_ID inencoding, unsigned char* intext); - - -/* - Not Support Function - Too Complex to Implement!!! Believe it or not. - INTL_CompoundStrComp : We currently dont implement this funciton. If we decide to implement it. We should use the following algorithm - (1) Compare each segment. If all match, return 0. - (2) Convert both string to Unicode and them compare. If it equal in Unicode, return 0 - (3) If they are not the same in Unicode, we have to pick one sorting sequence to decide wheather it should return 1 or -1. - The problem is which sorting order should we follow ? We need to decide : - (a) the sorting order in one script, - (b) the sorting order between scripts -*/ - -/* Implementation */ -PUBLIC INTL_CompoundStr* INTL_CompoundStrFromStr(INTL_Encoding_ID inencoding, unsigned char* intext) -{ - return INTL_CompoundStrNewSeg_p(inencoding, intext); -} - -#define TMPLEN 256 -PUBLIC INTL_CompoundStr* -INTL_CompoundStrFromUnicode(INTL_Unicode* inunicode, uint32 inunicodelen) -{ - INTL_Encoding_ID encoding; - unsigned char TMP[TMPLEN]; - INTL_UnicodeToStrIterator iterator; - if((iterator = INTL_UnicodeToStrIteratorCreate(inunicode, - inunicodelen, - &encoding, - &TMP[0], TMPLEN))!=NULL) - { - INTL_CompoundStr *This; - This = INTL_CompoundStrNewSeg_p(encoding, &TMP[0]); - if(This != NULL) - { - while(INTL_UnicodeToStrIterate(iterator, &encoding, &TMP[0], TMPLEN)) - INTL_CompoundStrAddSeg_p(This, encoding, &TMP[0]); - } - INTL_UnicodeToStrIteratorDestroy(iterator); - return This; - } - return NULL; -} - -PUBLIC INTL_CompoundStrIterator -INTL_CompoundStrFirstStr(INTL_CompoundStr* This, INTL_Encoding_ID *outencoding, unsigned char** outtext) -{ - if(This == NULL) - return NULL; - else - { - *outencoding = This->encoding; - *outtext = This->text; - return ((INTL_CompoundStrIterator)This); - } -} -PUBLIC INTL_CompoundStrIterator -INTL_CompoundStrNextStr(INTL_CompoundStrIterator iterator, INTL_Encoding_ID *outencoding, unsigned char** outtext) -{ - INTL_CompoundStr* This = (INTL_CompoundStr*)iterator; - return INTL_CompoundStrFirstStr( - This->next, - outencoding, outtext); -} - -PUBLIC void -INTL_CompoundStrDestroy(INTL_CompoundStr* This) -{ - INTL_CompoundStr* Next; - for(; (This != NULL); This=Next) - { - if(This->next) - Next=This->next; - else - Next=NULL; - XP_FREE(This->text); - XP_FREE(This); - } -} - -PUBLIC INTL_CompoundStr* -INTL_CompoundStrClone(INTL_CompoundStr* s2) -{ - if(s2 != NULL) - { - INTL_CompoundStr* This; - This=INTL_CompoundStrNewSeg_p(s2->encoding, s2->text); - This->next=INTL_CompoundStrClone(s2->next); - return This; - } - return NULL; -} - - -PRIVATE -void -INTL_CompoundStrCat_p(INTL_CompoundStr* s1, INTL_CompoundStr* s2) -{ - if(s1->next != NULL) - INTL_CompoundStrCat_p(s1->next, s2); - else - s1->next = INTL_CompoundStrClone(s2); -} -PUBLIC void -INTL_CompoundStrCat(INTL_CompoundStr* s1, INTL_CompoundStr* s2) -{ - if((s2 != NULL) && (s2->text[0])) - INTL_CompoundStrCat_p(s1, s2); -} - -PRIVATE -INTL_CompoundStr* -INTL_CompoundStrNewSeg_p(INTL_Encoding_ID inencoding, unsigned char* intext) -{ - INTL_CompoundStr *This; - - This = XP_ALLOC(sizeof(INTL_CompoundStr)); - if(This != NULL) - { - char *p_text=0; - StrAllocCopy(p_text, (char*)intext); - This->text = (unsigned char*)p_text; - - This->next = NULL; - This->encoding = inencoding; - } - return This; -} - -PRIVATE -void -INTL_CompoundStrAddSeg_p( - INTL_CompoundStr* This, - INTL_Encoding_ID inencoding, - unsigned char* intext) -{ - if(*intext) - { - for(;This->next;This=This->next) - ; - This->next = INTL_CompoundStrNewSeg_p(inencoding,intext); - } -} diff --git a/mozilla/lib/libi18n/pintlcmp.h b/mozilla/lib/libi18n/pintlcmp.h deleted file mode 100644 index 3377ebd818d..00000000000 --- a/mozilla/lib/libi18n/pintlcmp.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#ifndef _PINTLCMP_H_ -#define _PINTLCMP_H_ -#include "intlpriv.h" - -typedef struct { - unsigned char src_b1; - unsigned char src_b2_start; - unsigned char src_b2_end; - unsigned char dest_b1; - unsigned char dest_b2_start; -} DoubleByteToLowerMap; - -/* Prototype for private function */ -MODULE_PRIVATE DoubleByteToLowerMap *INTL_GetDoubleByteToLowerMap(int16 csid); -MODULE_PRIVATE unsigned char *INTL_GetSingleByteToLowerMap(int16 csid); - -#endif /* _PINTLCMP_H_ */ - - diff --git a/mozilla/lib/libi18n/sbconvtb.c b/mozilla/lib/libi18n/sbconvtb.c deleted file mode 100644 index 931686db882..00000000000 --- a/mozilla/lib/libi18n/sbconvtb.c +++ /dev/null @@ -1,442 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* sbconvtb.c */ -/* - Function that handle single byte Conversion table -*/ -#include "intlpriv.h" - -/* ------------------------------------------------* - XP_MAC - * ------------------------------------------------*/ -#ifdef XP_MAC - -PUBLIC char ** -INTL_GetSingleByteTable(int16 from_csid, int16 to_csid, int32 resourceid) -{ - return FE_GetSingleByteTable(from_csid, to_csid,resourceid); -} -PUBLIC char *INTL_LockTable(char **cvthdl) -{ - return *cvthdl; -} -PUBLIC void INTL_FreeSingleByteTable(char **cvthdl) -{ - FE_FreeSingleByteTable(cvthdl); -} -#endif - -/* ------------------------------------------------* - XP_WIN - * ------------------------------------------------*/ -#if defined(XP_WIN) || defined(XP_OS2) - - - -PUBLIC char ** -INTL_GetSingleByteTable(int16 from_csid, int16 to_csid, int32 resourceid) -{ - return FE_GetSingleByteTable(from_csid, to_csid,resourceid); -} -PUBLIC char *INTL_LockTable(char **cvthdl) -{ - return FE_LockTable(cvthdl); -} -PUBLIC void INTL_FreeSingleByteTable(char **cvthdl) -{ - FE_FreeSingleByteTable(cvthdl); -} -#endif - -/* ------------------------------------------------* - XP_UNIX - * ------------------------------------------------*/ -#ifdef XP_UNIX -/* TRANSLATION RESOURCES */ -/* Tables for Win CP1252 -> ISO 8859-1 */ -PRIVATE unsigned char cp1252_to_iso8859_1[] = { -/*8x*/ '?', '?', ',', 'f', '?', '?', '?', '?', '^', '?', 'S', '<', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '*', '-', '-', '~', '?', 's', '>', '?', '?', '?', 'Y', -/*Ax*/ 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, -/*Bx*/ 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, -/*Cx*/ 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, -/*Dx*/ 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, -/*Ex*/ 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, -/*Fx*/ 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF -}; - -PRIVATE char *cp1252_to_iso8859_1_p = (char*)cp1252_to_iso8859_1; - -/* Translation 8859-5.txt -> koi8r.txt */ -/* There are total 61 character unmap !! */ -PRIVATE unsigned char iso8859_5_to_koi8r[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Ax*/ 0x9A,0xB3, '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Bx*/ 0xE1,0xE2,0xF7,0xE7,0xE4,0xE5,0xF6,0xFA,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0, -/*Cx*/ 0xF2,0xF3,0xF4,0xF5,0xE6,0xE8,0xE3,0xFE,0xFB,0xFD,0xFF,0xF9,0xF8,0xFC,0xE0,0xF1, -/*Dx*/ 0xC1,0xC2,0xD7,0xC7,0xC4,0xC5,0xD6,0xDA,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0, -/*Ex*/ 0xD2,0xD3,0xD4,0xD5,0xC6,0xC8,0xC3,0xDE,0xDB,0xDD,0xDF,0xD9,0xD8,0xDC,0xC0,0xD1, -/*Fx*/ '?',0xA3, '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -}; -PRIVATE char *iso8859_5_to_koi8r_p = (char*)iso8859_5_to_koi8r; - -/* Translation koi8r.txt -> 8859-5.txt */ -/* There are total 61 character unmap !! */ -PRIVATE unsigned char koi8r_to_iso8859_5[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',0xA0, '?', '?', '?', '?', '?', -/*Ax*/ '?', '?', '?',0xF1, '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Bx*/ '?', '?', '?',0xA1, '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Cx*/ 0xEE,0xD0,0xD1,0xE6,0xD4,0xD5,0xE4,0xD3,0xE5,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE, -/*Dx*/ 0xDF,0xEF,0xE0,0xE1,0xE2,0xE3,0xD6,0xD2,0xEC,0xEB,0xD7,0xE8,0xED,0xE9,0xE7,0xEA, -/*Ex*/ 0xCE,0xB0,0xB1,0xC6,0xB4,0xB5,0xC4,0xB3,0xC5,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE, -/*Fx*/ 0xBF,0xCF,0xC0,0xC1,0xC2,0xC3,0xB6,0xB2,0xCC,0xCB,0xB7,0xC8,0xCD,0xC9,0xC7,0xCA, -}; -PRIVATE char *koi8r_to_iso8859_5_p = (char*)koi8r_to_iso8859_5; - -/* Translation cp1250 -> 8859-2 - * There are 32 characters unmapped: - * 80 - 89, 8B, 90 - 99, 9B, A6, A9, AB, AC, AE, B1, B5, B6, B7, BB - */ -PRIVATE unsigned char cp1250_to_iso8859_2[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',0xA9, '?',0xA6,0xAB,0xAE,0xAC, -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',0xB9, '?',0xB6,0xBB,0xBE,0xBC, -/*Ax*/ 0xA0,0xB7,0xA2,0xA3,0xA4,0xA1, '?',0xA7,0xA8, '?',0xAA, '?', '?',0xAD, '?',0xAF, -/*Bx*/ 0xB0, '?',0xB2,0xB3,0xB4, '?', '?', '?',0xB8,0xB1,0xBA, '?',0xA5,0xBD,0xB5,0xBF, -/*Cx*/ 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, -/*Dx*/ 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, -/*Ex*/ 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, -/*Fx*/ 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, -}; -PRIVATE char *cp1250_to_iso8859_2_p = (char*)cp1250_to_iso8859_2; - -/* Translation 8859-5.txt -> koi8u.txt - * There are total 55 character unmap !! - */ -PRIVATE unsigned char iso8859_5_to_koi8u[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Ax*/ 0x9A,0xB3, '?', '?',0xB4, '?',0xB6,0xB7, '?', '?', '?', '?', '?', '?', '?', '?', -/*Bx*/ 0xE1,0xE2,0xF7,0xE7,0xE4,0xE5,0xF6,0xFA,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0, -/*Cx*/ 0xF2,0xF3,0xF4,0xF5,0xE6,0xE8,0xE3,0xFE,0xFB,0xFD,0xFF,0xF9,0xF8,0xFC,0xE0,0xF1, -/*Dx*/ 0xC1,0xC2,0xD7,0xC7,0xC4,0xC5,0xD6,0xDA,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0, -/*Ex*/ 0xD2,0xD3,0xD4,0xD5,0xC6,0xC8,0xC3,0xDE,0xDB,0xDD,0xDF,0xD9,0xD8,0xDC,0xC0,0xD1, -/*Fx*/ '?',0xA3, '?', '?',0xA4, '?',0xA6,0xA7, '?', '?', '?', '?', '?', '?', '?', '?', -}; -PRIVATE char *iso8859_5_to_koi8u_p = (char*)iso8859_5_to_koi8u; - -/* Translation koi8u.txt -> 8859-5.txt - * There are total 55 character unmap !! - */ -PRIVATE unsigned char koi8u_to_iso8859_5[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',0xA0, '?', '?', '?', '?', '?', -/*Ax*/ '?', '?', '?',0xF1,0xF4, '?',0xF6,0xF7, '?', '?', '?', '?', '?', '?', '?', '?', -/*Bx*/ '?', '?', '?',0xA1,0xA4, '?',0xA6,0xA7, '?', '?', '?', '?', '?', '?', '?', '?', -/*Cx*/ 0xEE,0xD0,0xD1,0xE6,0xD4,0xD5,0xE4,0xD3,0xE5,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE, -/*Dx*/ 0xDF,0xEF,0xE0,0xE1,0xE2,0xE3,0xD6,0xD2,0xEC,0xEB,0xD7,0xE8,0xED,0xE9,0xE7,0xEA, -/*Ex*/ 0xCE,0xB0,0xB1,0xC6,0xB4,0xB5,0xC4,0xB3,0xC5,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE, -/*Fx*/ 0xBF,0xCF,0xC0,0xC1,0xC2,0xC3,0xB6,0xB2,0xCC,0xCB,0xB7,0xC8,0xCD,0xC9,0xC7,0xCA, -}; -PRIVATE char *koi8u_to_iso8859_5_p = (char*)koi8u_to_iso8859_5; - -/* Translation cp1251.txt -> koi8u.txt */ -/* There are total 40 character unmap !! */ -PRIVATE unsigned char cp1251_to_koi8u[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Ax*/ 0x9A, '?', '?', '?', '?',0xBD, '?', '?',0xB3,0xBf,0xB4, '?', '?', '?', '?',0xB7, -/*Bx*/ 0x9C, '?',0xB6,0xA6,0xAD, '?', '?',0x9E,0xA3, '?',0xA4, '?', '?', '?', '?',0xA7, -/*Cx*/ 0xE1,0xE2,0xF7,0xE7,0xE4,0xE5,0xF6,0xFA,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0, -/*Dx*/ 0xF2,0xF3,0xF4,0xF5,0xE6,0xE8,0xE3,0xFE,0xFB,0xFD,0xFF,0xF9,0xF8,0xFC,0xE0,0xF1, -/*Ex*/ 0xC1,0xC2,0xD7,0xC7,0xC4,0xC5,0xD6,0xDA,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0, -/*Fx*/ 0xD2,0xD3,0xD4,0xD5,0xC6,0xC8,0xC3,0xDE,0xDB,0xDD,0xDF,0xD9,0xD8,0xDC,0xC0,0xD1, -}; -PRIVATE char *cp1251_to_koi8u_p = (char*)cp1251_to_koi8u; - -/* Translation koi8u.txt -> cp1251.txt */ -/* There are total 40 character unmap !! */ -PRIVATE unsigned char koi8u_to_cp1251[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',0xA0, '?',0xB0, '?',0xB7, '?', -/*Ax*/ '?', '?', '?',0xB8,0xBA, '?',0xB3,0xBF, '?', '?', '?', '?', '?',0xB4, '?', '?', -/*Bx*/ '?', '?', '?',0xA8,0xAA, '?',0xB2,0xAF, '?', '?', '?', '?', '?',0xA5, '?',0xA9, -/*Cx*/ 0xFE,0xE0,0xE1,0xF6,0xE4,0xE5,0xF4,0xE3,0xF5,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE, -/*Dx*/ 0xEF,0xFF,0xF0,0xF1,0xF2,0xF3,0xE6,0xE2,0xFC,0xFB,0xE7,0xF8,0xFD,0xF9,0xF7,0xFA, -/*Ex*/ 0xDE,0xC0,0xC1,0xD6,0xC4,0xC5,0xD4,0xC3,0xD5,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE, -/*Fx*/ 0xCF,0xDF,0xD0,0xD1,0xD2,0xD3,0xC6,0xC2,0xDC,0xDB,0xC7,0xD8,0xDD,0xD9,0xD7,0xDA, -}; -PRIVATE char *koi8u_to_cp1251_p = (char*)koi8u_to_cp1251; - -/* Translation koi8u.txt -> koi8r.txt and koi8r.txt -> koi8u.txt */ -PRIVATE unsigned char koi8u_to_from_koi8r[] = { -/*8x*/ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, -/*9x*/ 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, -/*Ax*/ 0xA0,0xA1,0xA2,0xA3, '?',0xA5, '?', '?',0xA8,0xA9,0xAA,0xAB,0xAC, '?',0xAE,0xAF, -/*Bx*/ 0xB0,0xB1,0xB2,0xB3, '?',0xB5, '?', '?',0xB8,0xB9,0xBA,0xBB,0xBC, '?',0xBE,0xBF, -/*Cx*/ 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, -/*Dx*/ 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, -/*Ex*/ 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, -/*Fx*/ 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, -}; -PRIVATE char *koi8u_to_from_koi8r_p = (char*)koi8u_to_from_koi8r; - -/* Translation koi8u.txt -> maccyr.txt */ -/* There are total 46 character unmap !! */ -PRIVATE unsigned char koi8u_to_maccyr[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?',0xC3,0xC5,0xB2,0xB3,0xCA, '?',0xA1, '?', '?',0xD6, -/*Ax*/ '?', '?', '?',0xDE,0xB9, '?',0xB4,0xBB, '?', '?', '?', '?', '?',0xB6, '?', '?', -/*Bx*/ '?', '?', '?',0xDD,0xB8, '?',0xA7,0xBA, '?', '?', '?', '?', '?',0xA2, '?',0xA9, -/*Cx*/ 0xFE,0xE0,0xE1,0xF6,0xE4,0xE5,0xF4,0xE3,0xF5,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE, -/*Dx*/ 0xEF,0xDF,0xF0,0xF1,0xF2,0xF3,0xE6,0xE2,0xFC,0xFB,0xE7,0xF8,0xFD,0xF9,0xF7,0xFA, -/*Ex*/ 0x9E,0x80,0x81,0x96,0x84,0x85,0x94,0x83,0x95,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E, -/*Fx*/ 0x8F,0x9F,0x90,0x91,0x92,0x93,0x86,0x82,0x9C,0x9B,0x87,0x98,0x9D,0x99,0x97,0x9A, -}; -PRIVATE char *koi8u_to_maccyr_p = (char*)koi8u_to_maccyr; - -/* Translation maccyr.txt -> koi8u.txt */ -/* There are total 46 character unmap !! */ -PRIVATE unsigned char maccyr_to_koi8u[] = { -/*8x*/ 0xE1,0xE2,0xF7,0xE7,0xE4,0xE5,0xF6,0xFA,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0, -/*9x*/ 0xF2,0xF3,0xF4,0xF5,0xE6,0xE8,0xE3,0xFE,0xFB,0xFD,0xFF,0xF9,0xF8,0xFC,0xE0,0xF1, -/*Ax*/ '?',0x9C,0xBD, '?', '?', '?', '?',0xB6, '?',0xBF, '?', '?', '?', '?', '?', '?', -/*Bx*/ '?', '?',0x98,0x99,0xA6, '?',0xAD, '?',0xB4,0xA4,0xB7,0xA7, '?', '?', '?', '?', -/*Cx*/ '?', '?', '?',0x96, '?',0x97, '?', '?', '?', '?',0x9A, '?', '?', '?', '?', '?', -/*Dx*/ '?', '?', '?', '?', '?', '?', '?',0x9F, '?', '?', '?', '?', '?', '?',0xB3,0xA3, -/*Ex*/ 0xD1,0xC1,0xC2,0xD7,0xC7,0xC4,0xC5,0xD6,0xDA,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, -/*Fx*/ 0xD0,0xD2,0xD3,0xD4,0xD5,0xC6,0xC8,0xC3,0xDE,0xDB,0xDD,0xDF,0xD9,0xD8,0xDC,0xC0, -}; -PRIVATE char *maccyr_to_koi8u_p = (char*)maccyr_to_koi8u; - -/* Translation 8859-2 -> cp1250 - * There are 32 characters unmapped: 80 - 8F, 90 - 9F - */ -PRIVATE unsigned char iso8859_2_to_cp1250[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Ax*/ 0xA0,0xA5,0xA2,0xA3,0xA4,0xBC,0x8C,0xA7,0xA8,0x8A,0xAA,0x8D,0x8F,0xAD,0x8E,0xAF, -/*Bx*/ 0xB0,0xB9,0xB2,0xB3,0xB4,0xBE,0x9C,0xA1,0xB8,0x9A,0xBA,0x9D,0x9F,0xBD,0x9E,0xBF, -/*Cx*/ 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, -/*Dx*/ 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, -/*Ex*/ 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, -/*Fx*/ 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, -}; -PRIVATE char *iso8859_2_to_cp1250_p = (char*)iso8859_2_to_cp1250; - -/* Translation cp1251 -> 8859-5 - * There are 32 characters unmapped: - * 82, 84 - 89, 8B, 91 - 99, 9B, A4 - A6, A9, AB, AC, AE, B0, B1, B4 - B7, BB, - */ -PRIVATE unsigned char cp1251_to_iso8859_5[] = { -/*8x*/ 0xA2,0xA3, '?',0xF3, '?', '?', '?', '?', '?', '?',0xA9, '?',0xAA,0xAC,0xAB,0xAF, -/*9x*/ 0xF2, '?', '?', '?', '?', '?', '?', '?', '?', '?',0xF9, '?',0xFA,0xFC,0xFB,0xFF, -/*Ax*/ 0xA0,0xAE,0xFE,0xA8, '?', '?', '?',0xFD,0xA1, '?',0xA4, '?', '?',0xAD, '?',0xA7, -/*Bx*/ '?', '?',0xA6,0xF6, '?', '?', '?', '?',0xF1,0xF0,0xF4, '?',0xF8,0xA5,0xF5,0xF7, -/*Cx*/ 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, -/*Dx*/ 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, -/*Ex*/ 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, -/*Fx*/ 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, -}; -PRIVATE char *cp1251_to_iso8859_5_p = (char*)cp1251_to_iso8859_5; - -/* Translation 8859-5 -> cp1251 - * There are 32 characters unmapped: - * 80 - 8F, 90 - 9F - */ -PRIVATE unsigned char iso8859_5_to_cp1251[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Ax*/ 0xA0,0xA8,0x80,0x81,0xAA,0xBD,0xB2,0xAF,0xA3,0x8A,0x8C,0x8E,0x8D,0xAD,0xA1,0x8F, -/*Bx*/ 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, -/*Cx*/ 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, -/*Dx*/ 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, -/*Ex*/ 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, -/*Fx*/ 0xB9,0xB8,0x90,0x83,0xBA,0xBE,0xB3,0xBF,0xBC,0x9A,0x9C,0x9E,0x9D,0xA7,0xA2,0x9F, -}; -PRIVATE char *iso8859_5_to_cp1251_p = (char*)iso8859_5_to_cp1251; - -/* Translation cp1253 -> 8859-7 - * There are 40 characters unmapped: - * 80 - 8F, 90 - 9F, A4 - A5, AA, AE, B5 - B6, D2, FF - */ -PRIVATE unsigned char cp1253_to_iso8859_7[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Ax*/ 0xA0,0xB5,0xB6,0xA3, '?', '?',0xA6,0xA7,0xA8,0xA9, '?',0xAB,0xAC,0xAD, '?',0xAF, -/*Bx*/ 0xB0,0xB1,0xB2,0xB3,0xB4, '?', '?',0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, -/*Cx*/ 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, -/*Dx*/ 0xD0,0xD1, '?',0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, -/*Ex*/ 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, -/*Fx*/ 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE, '?', -}; -PRIVATE char *cp1253_to_iso8859_7_p = (char*)cp1253_to_iso8859_7; - -/* Translation 8859-7 -> cp1253 - * There are 40 characters unmapped: - * 80 - 8F, 90 - 9F, A1 - A2, A4 - A5, AA, AE, D2, FF - */ -PRIVATE unsigned char iso8859_7_to_cp1253[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Ax*/ 0xA0, '?', '?',0xA3, '?', '?',0xA6,0xA7,0xA8,0xA9, '?',0xAB,0xAC,0xAD, '?',0xAF, -/*Bx*/ 0xB0,0xB1,0xB2,0xB3,0xB4,0xA1,0xA2,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, -/*Cx*/ 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, -/*Dx*/ 0xD0,0xD1, '?',0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, -/*Ex*/ 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, -/*Fx*/ 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE, '?', -}; -PRIVATE char *iso8859_7_to_cp1253_p = (char*)iso8859_7_to_cp1253; - -/* Translation cp1251.txt -> koi8r.txt */ -PRIVATE unsigned char cp1251_to_koi8r[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Ax*/ '?', '?', '?', '?', '?', '?', '?', '?',0xB3, '?', '?', '?', '?', '?', '?', '?', -/*Bx*/ '?', '?', '?', '?', '?', '?', '?', '?',0xA3, '?', '?', '?', '?', '?', '?', '?', -/*Cx*/ 0xE1,0xE2,0xF7,0xE7,0xE4,0xE5,0xF6,0xFA,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0, -/*Dx*/ 0xF2,0xF3,0xF4,0xF5,0xE6,0xE8,0xE3,0xFE,0xFB,0xFD,0xFF,0xF9,0xF8,0xFC,0xE0,0xF1, -/*Ex*/ 0xC1,0xC2,0xD7,0xC7,0xC4,0xC5,0xD6,0xDA,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0, -/*Fx*/ 0xD2,0xD3,0xD4,0xD5,0xC6,0xC8,0xC3,0xDE,0xDB,0xDD,0xDF,0xD9,0xD8,0xDC,0xC0,0xD1, -}; -PRIVATE char *cp1251_to_koi8r_p = (char*)cp1251_to_koi8r; - -/* Translation koi8r.txt -> cp1251.txt */ -PRIVATE unsigned char koi8r_to_cp1251[] = { -/*8x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*9x*/ '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Ax*/ '?', '?', '?',0xB8, '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Bx*/ '?', '?', '?',0xA8, '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', -/*Cx*/ 0xFE,0xE0,0xE1,0xF6,0xE4,0xE5,0xF4,0xE3,0xF5,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE, -/*Dx*/ 0xEF,0xFF,0xF0,0xF1,0xF2,0xF3,0xE6,0xE2,0xFC,0xFB,0xE7,0xF8,0xFD,0xF9,0xF7,0xFA, -/*Ex*/ 0xDE,0xC0,0xC1,0xD6,0xC4,0xC5,0xD4,0xC3,0xD5,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE, -/*Fx*/ 0xCF,0xDF,0xD0,0xD1,0xD2,0xD3,0xC6,0xC2,0xDC,0xDB,0xC7,0xD8,0xDD,0xD9,0xD7,0xDA, -}; -PRIVATE char *koi8r_to_cp1251_p = (char*)koi8r_to_cp1251; - -PUBLIC char ** -INTL_GetSingleByteTable(int16 from_csid, int16 to_csid, int32 resourceid) -{ - /* LATIN1 */ - if ((from_csid == CS_LATIN1) && (to_csid == CS_LATIN1)) { - return &cp1252_to_iso8859_1_p; - } - - /* LATIN2 */ - else if ((from_csid == CS_LATIN2) && (to_csid == CS_CP_1250)) { - return &iso8859_2_to_cp1250_p; - } - else if ((from_csid == CS_CP_1250) && (to_csid == CS_LATIN2)) { - return &cp1250_to_iso8859_2_p; - } - - /* CYRILLIC */ - else if ((from_csid == CS_8859_5) && (to_csid == CS_KOI8_R)) { - return &iso8859_5_to_koi8r_p; - } - else if ((from_csid == CS_KOI8_R) && (to_csid == CS_8859_5)) { - return &koi8r_to_iso8859_5_p; - } - else if ((from_csid == CS_8859_5) && (to_csid == CS_CP_1251)) { - return &iso8859_5_to_cp1251_p; - } - else if ((from_csid == CS_CP_1251) && (to_csid == CS_8859_5)) { - return &cp1251_to_iso8859_5_p; - } - else if ((from_csid == CS_CP_1251) && (to_csid == CS_KOI8_R)) { - return &cp1251_to_koi8r_p; - } - else if ((from_csid == CS_KOI8_R) && (to_csid == CS_CP_1251)) { - return &koi8r_to_cp1251_p; - } - - /* UKRAINIAN */ - else if ((from_csid == CS_KOI8_R) && (to_csid == CS_KOI8_U)) { - return &koi8u_to_from_koi8r_p; - } - else if ((from_csid == CS_KOI8_U) && (to_csid == CS_KOI8_R)) { - return &koi8u_to_from_koi8r_p; - } - else if ((from_csid == CS_8859_5) && (to_csid == CS_KOI8_U)) { - return &iso8859_5_to_koi8u_p; - } - else if ((from_csid == CS_KOI8_U) && (to_csid == CS_8859_5)) { - return &koi8u_to_iso8859_5_p; - } - else if ((from_csid == CS_KOI8_U) && (to_csid == CS_CP_1251)) { - return &koi8u_to_cp1251_p; - } - else if ((from_csid == CS_CP_1251) && (to_csid == CS_KOI8_U)) { - return &cp1251_to_koi8u_p; - } - else if ((from_csid == CS_MAC_CYRILLIC) && (to_csid == CS_KOI8_U)) { - return &maccyr_to_koi8u_p; - } - else if ((from_csid == CS_KOI8_U) && (to_csid == CS_MAC_CYRILLIC)) { - return &koi8u_to_maccyr_p; - } - - /* GREEK */ - else if ((from_csid == CS_8859_7) && (to_csid == CS_CP_1253)) { - return &iso8859_7_to_cp1253_p; - } - else if ((from_csid == CS_CP_1253) && (to_csid == CS_8859_7)) { - return &cp1253_to_iso8859_7_p; - } - - /* others To Be Implement */ - else - return(NULL); -} -PUBLIC char *INTL_LockTable(char **cvthdl) -{ - /* no need to lock as the tables are static */ - return *cvthdl; -} -PUBLIC void INTL_FreeSingleByteTable(char **cvthdl) { - /* no need to free as the tables are static */ -} - -#endif - - -unsigned char * -One2OneCCC (CCCDataObject obj, const unsigned char *s, int32 l) -{ - char **cvthdl; - register unsigned char *cp; - char *pTable; - - cvthdl = (char **)INTL_GetSingleByteTable(INTL_GetCCCFromCSID(obj), INTL_GetCCCToCSID(obj), INTL_GetCCCCvtflag(obj)); - - if (cvthdl != NULL) - { - pTable = INTL_LockTable(cvthdl); - for (cp = (unsigned char *)s; cp < (unsigned char *)s + l; cp++) - { - if(*cp & 0x80) - *cp = pTable[(*cp & 0x7F)]; - } - } - INTL_SetCCCLen(obj, l); - INTL_FreeSingleByteTable(cvthdl); - - return((unsigned char *)s); -} - diff --git a/mozilla/lib/libi18n/sblower.c b/mozilla/lib/libi18n/sblower.c deleted file mode 100644 index d7de4a07307..00000000000 --- a/mozilla/lib/libi18n/sblower.c +++ /dev/null @@ -1,760 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* sblower.c */ -/* - This function contain the singlebyte to lower table which need to implement function in - intlcomp.c. - None of the function in this file should be made public - The interface function is INTL_GetSingleByteToLowerMap() and it should only be called - inside libi18n -*/ -#include "intlpriv.h" -#include "pintlcmp.h" - -/* - lower_lookup_ascii map - 0x41-0x5a to 0x61-0x7a -*/ -MODULE_PRIVATE unsigned char lower_lookup_ascii[128]={ - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, - 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, - 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, - 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, -}; -#ifndef XP_MAC -/* - lower_lookup_latin1 map - (2) 0xc0-0xd6 to 0xe0-0xf6 - (3) 0xd8-0xde to 0xf8-0xfe -*/ -PRIVATE unsigned char lower_lookup_latin1[128]={ - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xd7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -/* - lower_lookup_latin2 map - (2) 0xa1 to 0xb1 - (3) 0xa3 to 0xb3 - (4) 0xa5-0xa6 to 0xb5-0xb6 - (5) 0xa9-0xac to 0xb9-0xbc - (6) 0xae-0xaf to 0xbe-0xbf - (7) 0xc0-0xd6 to 0xe0-0xf6 - (8) 0xd8-0xde to 0xf8-0xfe -*/ -PRIVATE unsigned char lower_lookup_latin2[128]={ - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xb1, 0xa2, 0xb3, 0xa4, 0xb5, 0xb6, 0xa7, 0xa8, 0xb9, 0xba, 0xbb, 0xbc, 0xad, 0xbe, 0xbf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xd7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -/* - lower_lookup_macicelandic map - 0x80 to 0x8a - 0x81-0x83 to 0x8c-0x8e - 0x84 to 0x96 - 0x85 to 0x9a - 0x86 to 0x9f - 0xa0 to 0xe0 - 0xae-0xaf to 0xbe-0xbf - 0xcb to 0x88 - 0xcc to 0x8b - 0xcd to 0x9b - 0xce to 0xcf - 0xd9 to 0xd8 - 0xdc to 0xdd - 0xde to 0xdf - 0xe5 to 0x89 - 0xe6 to 0x90 - 0xe7 to 0x87 - 0xe8 to 0x91 - 0xe9 to 0x8f - 0xea to 0x92 - 0xeb to 0x94 - 0xec to 0x95 - 0xed to 0x93 - 0xee to 0x97 - 0xef to 0x99 - 0xf1 to 0x98 - 0xf2 to 0x9c - 0xf3 to 0x9e - 0xf4 to 0x9d -*/ -#else /* ifndef XP_MAC */ -PRIVATE unsigned char lower_lookup_macicelandic[128]={ - 0x8a, 0x8c, 0x8d, 0x8e, 0x96, 0x9a, 0x9f, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xe0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xbe, 0xbf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0x88, 0x8b, 0x9b, 0xcf, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd8, 0xda, 0xdb, 0xdd, 0xdd, 0xdf, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x89, 0x90, 0x87, 0x91, 0x8f, 0x92, 0x94, 0x95, 0x93, 0x97, 0x99, - 0xf0, 0x98, 0x9c, 0x9e, 0x9d, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -/* - lower_lookup_macce map - 0x80 to 0x8a - 0x81 to 0x82 - 0x83 to 0x8e - 0x84 to 0x88 - 0x85 to 0x9a - 0x86 to 0x9f - 0x89 to 0x8b - 0x8c to 0x8d - 0x8f to 0x90 - 0x91 to 0x93 - 0x94 to 0x95 - 0x96 to 0x98 - 0x9d to 0x9e - 0xa2 to 0xab - 0xaf to 0xb0 - 0xb1 to 0xb4 - 0xb5 to 0xfa - 0xb9 to 0xba - 0xbb to 0xbc - 0xbd to 0xbe - 0xbf to 0xc0 - 0xc1 to 0xc4 - 0xc5 to 0xcb - 0xcc to 0xce - 0xcd to 0x9b - 0xcf to 0xd8 - 0xd9 to 0xda - 0xdb to 0xde - 0xdf to 0xe0 - 0xe1 to 0xe4 - 0xe5 to 0xe6 - 0xe7 to 0x87 - 0xe8 to 0xe9 - 0xea to 0x92 - 0xeb to 0xec - 0xed to 0xf0 - 0xee to 0x97 - 0xef to 0x99 - 0xf1 to 0xf3 - 0xf2 to 0x9c - 0xf4 to 0xf5 - 0xf6 to 0xf7 - 0xf8 to 0xf9 - 0xfb to 0xfd - 0xfc to 0xb8 - 0xfe to 0xae -*/ -PRIVATE unsigned char lower_lookup_macce[128]={ - 0x8a, 0x82, 0x82, 0x8e, 0x88, 0x9a, 0x9f, 0x87, 0x88, 0x8b, 0x8a, 0x8b, 0x8d, 0x8d, 0x8e, 0x90, - 0x90, 0x93, 0x92, 0x93, 0x95, 0x95, 0x98, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xab, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xae, 0xae, 0xb0, - 0xb0, 0xb4, 0xb2, 0xb3, 0xb4, 0xfa, 0xb6, 0xb7, 0xb8, 0xba, 0xba, 0xbc, 0xbc, 0xbe, 0xbe, 0xc0, - 0xc0, 0xc4, 0xc2, 0xc3, 0xc4, 0xcb, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xce, 0x9b, 0xce, 0xd8, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xda, 0xda, 0xde, 0xdc, 0xdd, 0xde, 0xe0, - 0xe0, 0xe4, 0xe2, 0xe3, 0xe4, 0xe6, 0xe6, 0x87, 0xe9, 0xe9, 0x92, 0xec, 0xec, 0xf0, 0x97, 0x99, - 0xf0, 0xf3, 0x9c, 0xf3, 0xf5, 0xf5, 0xf7, 0xf7, 0xf9, 0xf9, 0xfa, 0xfd, 0xb8, 0xfd, 0xae, 0xff -}; -#endif /* ifndef XP_MAC */ - -#ifndef XP_UNIX -/* - lower_lookup_jis0201 map - 0xa7-0xab to 0xb1-0xb5 - 0xac-0xae to 0xd4-0xd6 - 0xaf to 0xc2 -*/ -PRIVATE unsigned char lower_lookup_jis0201[128]={ - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xd4, 0xd5, 0xd6, 0xc2, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -#endif - -#ifdef XP_MAC -/* - lower_lookup_mac_cyrillic - 0x80-0x9e to 0xe0-0xfe A - YU - 0x9F to 0xDF YA - 0xA7 to 0xb4 BYELORUSSIAN-UKRAINIAN I - 0xAb to 0xAC DJE - 0xae to 0xaf gje - 0xb7 to 0xc0 je - 0xb8 to 0xb9 ie - 0xba to 0xbb yi - 0xbc to 0xbc lje - 0xbd to 0xbd nje - 0xc1 to 0xcf dze - 0xcb to 0xcc tshe - 0xcd to 0xce kje - 0xd8 to 0xd9 short u - 0xda to 0xdb dzhe - 0xdd to 0xde dzhe -*/ -PRIVATE unsigned char lower_lookup_mac_cyrillic[128]={ - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xb4, 0xa8, 0xa9, 0xaa, 0xac, 0xac, 0xad, 0xaf, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xc0, 0xb9, 0xb9, 0xbb, 0xbb, 0xbd, 0xbd, 0xbf, 0xbf, - 0xc0, 0xcf, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcc, 0xcc, 0xce, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd9, 0xd9, 0xdb, 0xdb, 0xdc, 0xde, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -#endif -#ifdef XP_UNIX -/* - lower_lookup_8859_5 map - 0xa1-0xac to 0xf1-0xfc - 0xae-0xaf to 0xfe-0xff - 0xb0-0xcf to 0xd0-0xef -*/ -PRIVATE unsigned char lower_lookup_8859_5[128]={ - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xad, 0xfe, 0xff, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -#endif -#if defined(XP_WIN) || defined(XP_OS2) || defined(XP_UNIX) -/* - lower_lookup_cp1251 map - 0x80 0x90 - 0x81 0x83 - 0x8a 0x9a - 0x8c-0x8f 0x9c-0x9f - 0xa1 0xa2 - 0xa3 0xbc - 0xa5 0xb4 - 0xa8 0xb8 - 0xaa 0xba - 0xaf 0xbf - 0xb2 0xb3 - 0xbd 0xbe -*/ -PRIVATE unsigned char lower_lookup_cp1251[128]={ - 0x90, 0x83, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x9a, 0x8b, 0x9c, 0x9d, 0x9e, 0x9f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa2, 0xa2, 0xbc, 0xa4, 0xb4, 0xa6, 0xa7, 0xb8, 0xa9, 0xba, 0xab, 0xac, 0xad, 0xae, 0xbf, - 0xb0, 0xb1, 0xb3, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbe, 0xbe, 0xbf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -#endif -#ifdef XP_MAC -/* - lower_lookup_mac_greek map - 0x80 to 0x8a - 0x8e to 0x8e - 0x85 to 0x9a - 0x86 to 0x9f - 0xa1 to 0xe7 - 0xa2 to 0xe4 - 0xa3 to 0xf5 - 0xa4 to 0xec - 0xa5 to 0xea - 0xa6 to 0xf0 - 0xaa to 0xf3 - 0xab to 0xfb - 0xb0 to 0xe1 - 0xb5 to 0xe2 - 0xb6 to 0xe5 - 0xb7 to 0xfa - 0xb8 to 0xe8 - 0xb9 to 0xe9 - 0xba to 0xeb - 0xbb to 0xed - 0xbc to 0xe6 - 0xbd to 0xfc - 0xbe to 0xe3 - 0xbf to 0xf6 - 0xc1 to 0xee - 0xc3 to 0xef - 0xc4 to 0xf2 - 0xc6 to 0xf4 - 0xcb to 0xf9 - 0xcc to 0xf8 - 0xcd to 0xc0 - 0xce to 0xdb - - 0xd7-0xd9 to 0xdc-0xde - 0xda to 0xe0 - 0xdf to 0xf1 - - -*/ -PRIVATE unsigned char lower_lookup_mac_greek[128]={ - 0x8a, 0x81, 0x82, 0x8e, 0x84, 0x9a, 0x9f, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xe7, 0xe4, 0xf5, 0xec, 0xea, 0xf0, 0xa7, 0xa8, 0xa9, 0xf3, 0xfb, 0xac, 0xad, 0xae, 0xaf, - 0xe1, 0xb1, 0xb2, 0xb3, 0xb4, 0xe2, 0xe5, 0xfa, 0xe8, 0xe9, 0xeb, 0xed, 0xe6, 0xfc, 0xe3, 0xf6, - 0xc0, 0xee, 0xc2, 0xef, 0xf2, 0xc5, 0xf4, 0xc7, 0xc8, 0xc9, 0xca, 0xf9, 0xf8, 0xc0, 0xdb, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xdc, 0xdd, 0xde, 0xe0, 0xdb, 0xdc, 0xdd, 0xde, 0xf1, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -#endif -#ifdef XP_UNIX -/* - lower_lookup_8859_7 map - 0xb6 to 0xdc - 0xb8-0xba to 0xdd-0xdf - 0xbc to 0xfc - 0xbe-0xbf to 0xfd-0xfe - 0xc1-0xdb to 0xe1-0xfb -*/ -PRIVATE unsigned char lower_lookup_8859_7[128]={ - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xdc, 0xb7, 0xdd, 0xde, 0xdf, 0xbb, 0xfc, 0xbd, 0xfd, 0xfe, - 0xc0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -#endif -#if defined(XP_WIN) || defined(XP_OS2) -/* - ( The differences in these two table. I am not saying the difference between these two codeset) - is 0xb6 and 0xa2 - lower_lookup_cp1253 map - 0xa2 to 0xdc - 0xb8-0xba to 0xdd-0xdf - 0xbc to 0xfc - 0xbe-0xbf to 0xfd-0xfe - 0xc1-0xdb to 0xe1-0xfb - -*/ -PRIVATE unsigned char lower_lookup_cp1253[128]={ - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xdc, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xdd, 0xde, 0xdf, 0xbb, 0xfc, 0xbd, 0xfd, 0xfe, - 0xc0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -#endif - -#if defined(XP_WIN) || defined(XP_OS2) -/* - lower_lookup_cp1252 map - (2) 0xc0-0xd6 to 0xe0-0xf6 - (3) 0xd8-0xde to 0xf8-0xfe - (4) 0x8a to 0x9a s with caron - (5) 0x8c to 0x9c oe ligature - (6) 0x8e to 0x9e z with caron - (7) 0x9f to 0xff y with diaeresis -*/ -PRIVATE unsigned char lower_lookup_cp1252[128]={ - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x9a, 0x8b, 0x9c, 0x8d, 0x9e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0xff, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xd7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -/* - lower_lookup_cp1250 map - -*/ -PRIVATE unsigned char lower_lookup_cp1250[128]={ - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x9a, 0x8b, 0x9c, 0x9d, 0x9e, 0x9f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xb3, 0xa4, 0xb9, 0xa6, 0xa7, 0xa8, 0xa9, 0xba, 0xab, 0xac, 0xad, 0xae, 0xbf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbe, 0xbd, 0xbe, 0xbf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xd7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -#endif -#ifndef XP_MAC -/* - lower_lookup_8859_9 map - - PROBLEM!!!!! Need more information !!!! - Currently I map 0xdd to 0xfd for tolower - 0xDD is LATIN CAPITAL LETTER I WITH DOT ABOVE - 0xFD is LATIN SMALL LETTER DOTLESS I - - Should I do that ? - -*/ -PRIVATE unsigned char lower_lookup_8859_9[128]={ - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x9a, 0x8b, 0x9c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0xff, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xd7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -#else -/* - lower_lookup_mac_turkish map - PROBLEM!!!!! Need more information !!!! - Currently I map 0xdc to 0xdd for tolower - 0xDC is LATIN CAPITAL LETTER I WITH DOT ABOVE - 0xDD is LATIN SMALL LETTER DOTLESS I - - Should I do that ? -*/ -PRIVATE unsigned char lower_lookup_mac_turkish[128]={ - 0x8a, 0x8c, 0x8d, 0x8e, 0x96, 0x9a, 0x9f, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xbe, 0xbf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0x88, 0xcb, 0x9b, 0xcf, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd8, 0xdb, 0xdb, 0xdd, 0xdd, 0xdf, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x89, 0x90, 0x87, 0x91, 0x8f, 0x92, 0x94, 0x95, 0x93, 0x97, 0x99, - 0xf0, 0x98, 0x9c, 0x9e, 0x9d, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -#endif -/* - lower_lookup_koi8_r map -*/ -PRIVATE unsigned char lower_lookup_koi8_r[128]={ - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb1, 0xa3, 0xa4, 0xb5, 0xa6, 0xa7, 0xb8, 0xb9, 0xba, 0xbb, 0xbd, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf -}; -/* - * lower_lookup_koi8_u map - */ -PRIVATE unsigned char lower_lookup_koi8_u[128]={ - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xa3, 0xa4, 0xb5, 0xa6, 0xa7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xad, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf -}; - -#ifdef XP_OS2 -/* - * Lowercase for ibm850 - */ -PRIVATE unsigned char lower_cp850[128] = { - 0x87, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x84, 0x86, - 0x82, 0x91, 0x91, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x94, 0x81, 0x9b, 0x9c, 0x9b, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa4, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xa0, 0x83, 0x85, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc6, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd0, 0x88, 0x89, 0x8a, 0xd5, 0xa1, 0x8c, 0x8b, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x8d, 0xdf, - 0xa2, 0xe1, 0x93, 0x95, 0xe4, 0xe4, 0xe6, 0xe7, 0xe7, 0xa3, 0x96, 0x97, 0xec, 0xec, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, -}; - -/* - * Lowercase for ibm852 - */ -PRIVATE unsigned char lower_cp852[128] = { - 0x87, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8b, 0x8b, 0x8c, 0xab, 0x84, 0x86, - 0x82, 0x92, 0x92, 0x93, 0x94, 0x96, 0x96, 0x98, 0x98, 0x94, 0x81, 0x9c, 0x9c, 0x88, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa5, 0xa5, 0xa7, 0xa7, 0xa9, 0xa9, 0x7f, 0xab, 0x9f, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xa0, 0x83, 0xd8, 0xad, 0xb9, 0xba, 0xbb, 0xbc, 0xbe, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc7, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd0, 0xd4, 0x89, 0xd4, 0xe5, 0xa1, 0x8c, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xee, 0x85, 0xdf, - 0xa2, 0xe1, 0x93, 0xe4, 0xe4, 0xe5, 0xe7, 0xe7, 0xea, 0xa3, 0xea, 0xfb, 0xec, 0xec, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfd, 0xfd, 0xfe, 0xff, -}; - -/* - * Lowercase for ibm855 - */ -PRIVATE unsigned char lower_cp855[128] = { - 0x80, 0x80, 0x82, 0x82, 0x84, 0x84, 0x86, 0x86, 0x88, 0x88, 0x8a, 0x8a, 0x8c, 0x8c, 0x8e, 0x8e, - 0x90, 0x90, 0x92, 0x92, 0x94, 0x94, 0x96, 0x96, 0x98, 0x98, 0x9a, 0x9a, 0x9c, 0x9c, 0x9e, 0x9e, - 0xa0, 0xa0, 0xa2, 0xa2, 0xa4, 0xa4, 0xa6, 0xa6, 0xa8, 0xa8, 0xaa, 0xaa, 0xac, 0xac, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb5, 0xb7, 0xb7, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbd, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc6, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd0, 0xd2, 0xd2, 0xd4, 0xd4, 0xd6, 0xd6, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xd8, 0xde, 0xdf, - 0xde, 0xe1, 0xe1, 0xe3, 0xe3, 0xe5, 0xe5, 0xe7, 0xe7, 0xe9, 0xe9, 0xeb, 0xeb, 0xed, 0xed, 0xef, - 0xf0, 0xf1, 0xf1, 0xf3, 0xf3, 0xf5, 0xf5, 0xf7, 0xf7, 0xf9, 0xf9, 0xfb, 0xfb, 0xfd, 0xfe, 0xff, }; - -/* - * Lowercase for ibm857 - */ -PRIVATE unsigned char lower_cp857[128] = { - 0x87, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x84, 0x86, - 0x82, 0x91, 0x91, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x94, 0x81, 0x9b, 0x9c, 0x9b, 0x9f, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa4, 0xa7, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xa0, 0x83, 0x85, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc6, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0x88, 0x89, 0x8a, 0x7f, 0xa1, 0x8c, 0x8b, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xec, 0xdf, - 0xa2, 0xe1, 0x93, 0x95, 0xe4, 0xe4, 0xe6, 0x7f, 0xe8, 0xa3, 0x96, 0x97, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0x7f, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, }; - -/* - * Lowercase for ibm862 - */ -PRIVATE unsigned char lower_cp862[128] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa4, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0x7f, 0xe3, 0xe5, 0xe5, 0xe6, 0xe7, 0xed, 0x7f, 0x7f, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, -}; - - -/* - * Lowercase for ibm864 - */ -PRIVATE unsigned char lower_cp864[128] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x7f, 0x7f, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x7f, 0x7f, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x7f, }; - - -/* - * Lowercase for ibm866 - */ -PRIVATE unsigned char lower_cp866[128] = { - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf1, 0xf1, 0xf3, 0xf3, 0xf5, 0xf5, 0xf7, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, }; - -/* - * Lowercase for windows-1257 - */ -PRIVATE unsigned char lower_cp1257[128] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0x1a, 0xa2, 0xa3, 0xa4, 0x1a, 0xa6, 0xa7, 0xb8, 0xa9, 0xba, 0xab, 0xac, 0xad, 0xae, 0xbf, - 0xb0, 0xb1, 0xb2, 0xb3, 0x1a, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xd7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x1a, }; - - -/* - * Lowercase for macroman - */ -PRIVATE unsigned char lower_macroman[128] = { - 0x8a, 0x8c, 0x8d, 0x8e, 0x96, 0x9a, 0x9f, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xe0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xbe, 0xbf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0x88, 0x8b, 0x9b, 0xcf, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd8, 0xda, 0xdb, 0xdd, 0xdd, 0xdf, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x89, 0x90, 0x87, 0x91, 0x8f, 0x92, 0x94, 0x95, 0x93, 0x97, 0x99, - 0xf0, 0x98, 0x9c, 0x9e, 0x9d, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; -#endif - -/* - ToLower translation for Armenian (ArmSCII-8): - - 0x80..0xB1 - unchanged - 0xB2..0xFE - set the lower bit -*/ - -PRIVATE unsigned char lower_armscii8[128] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb3, 0xb3, 0xb5, 0xb5, 0xb7, 0xb7, 0xb9, 0xb9, 0xbb, 0xbb, 0xbd, 0xbd, 0xbf, 0xbf, - 0xc0, 0xc1, 0xc3, 0xc3, 0xc5, 0xc5, 0xc7, 0xc7, 0xc9, 0xc9, 0xcb, 0xcb, 0xcd, 0xcd, 0xcf, 0xcf, - 0xd0, 0xd1, 0xd3, 0xd3, 0xd5, 0xd5, 0xd7, 0xd7, 0xd9, 0xd9, 0xdb, 0xdb, 0xdd, 0xdd, 0xdf, 0xdf, - 0xe0, 0xe1, 0xe3, 0xe3, 0xe5, 0xe5, 0xe7, 0xe7, 0xe9, 0xe9, 0xeb, 0xeb, 0xed, 0xed, 0xef, 0xef, - 0xf0, 0xf1, 0xf3, 0xf3, 0xf5, 0xf5, 0xf7, 0xf7, 0xf9, 0xf9, 0xfb, 0xfb, 0xfd, 0xfd, 0xff, 0x7f }; - -PRIVATE unsigned char lower_viet_viscii[128] = { - 0xd5, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb5, 0xfe, 0xbe, 0xb6, 0xb7, 0xb8, 0xf6, 0xf7, 0xef, 0xfc, 0xfb, 0xf8, 0xcf, - 0xf5, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xde, 0xbd, 0xb5, 0xb6, 0xb7, 0xb8, 0xf1, 0xd1, 0xd7, 0xd8, 0xbd, 0xbe, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xc6, 0xc7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xcf, - 0xf0, 0xd1, 0xf2, 0xf3, 0xf4, 0xd5, 0xd6, 0xd7, 0xd8, 0xf9, 0xfa, 0xdb, 0xdc, 0xfd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xe6 }; - -PRIVATE unsigned char lower_viet_vps[128] = { - 0xe0, 0xe4, 0xe3, 0xc3, 0xc0, 0xc4, 0x86, 0x87, 0xe6, 0x89, 0x8a, 0x8b, 0x8c, 0xa1, 0xa2, 0xa3, - 0x89, 0x91, 0x92, 0x8a, 0x8b, 0xcd, 0xd3, 0xd2, 0xb0, 0x87, 0x9a, 0x9b, 0x9c, 0xa7, 0xa9, 0xaa, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xab, 0xa7, 0xf9, 0xa9, 0xaa, 0xab, 0xdb, 0xd9, 0xae, 0xd8, - 0xb0, 0xba, 0xff, 0xcf, 0xed, 0xec, 0xb6, 0xcc, 0xef, 0xf3, 0xba, 0xbb, 0xf2, 0xd5, 0xf5, 0xbf, - 0xc0, 0xe1, 0xe2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xe9, 0xea, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xde, 0xfb, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xe8, 0xd8, 0xd9, 0xfa, 0xdb, 0xdc, 0x9a, 0xc8, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xa4, 0xc7, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x9b, 0xeb, 0xff }; - -PRIVATE unsigned char lower_viet_tcvn[128] = { - 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xc6, 0xcb, 0xcc, 0xce, 0xcf, 0xd0, 0xd1, 0xd6, 0xd7, 0xd8, 0xdc, - 0xdd, 0xde, 0xdf, 0xe1, 0xe2, 0xe3, 0xe4, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf1, 0xf2, - 0xa0, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xbb, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xbc, 0xbb, 0xbc, 0xbd, 0xbe, 0xbd, - 0xbe, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xd3, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd4, 0xd5, 0xe5, 0xdc, 0xdd, 0xde, 0xdf, - 0xe6, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xe7, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xe8 }; - -MODULE_PRIVATE unsigned char *INTL_GetSingleByteToLowerMap(int16 csid) -{ - switch(csid) - { -#ifdef XP_MAC - case CS_MAC_ROMAN: - return lower_lookup_macicelandic; - case CS_MAC_CE: - return lower_lookup_macce; - case CS_MAC_CYRILLIC: - return lower_lookup_mac_cyrillic; - case CS_MAC_GREEK: - return lower_lookup_mac_greek; - case CS_MAC_TURKISH: - return lower_lookup_mac_turkish; - case CS_SJIS: - return lower_lookup_jis0201; -#endif -#if defined(XP_WIN) || defined(XP_OS2) - case CS_LATIN1: - return lower_lookup_cp1252; /* on window, change to cp1252 form latin1 */ - case CS_CP_1250: - return lower_lookup_cp1250; - case CS_CP_1251: - return lower_lookup_cp1251; - case CS_CP_1253: - return lower_lookup_cp1253; -#ifdef XP_OS2 - case CS_CP_1254: -#endif - case CS_8859_9: - return lower_lookup_8859_9; - case CS_SJIS: - return lower_lookup_jis0201; -#ifdef XP_OS2 - case CS_CP_850: - return lower_cp850; - case CS_CP_852: - return lower_cp852; - case CS_CP_855: - return lower_cp855; - case CS_CP_857: - return lower_cp857; - case CS_CP_862: - return lower_cp862; - case CS_CP_864: - return lower_cp864; - case CS_CP_866: - return lower_cp866; - case CS_CP_1257: - return lower_cp1257; - case CS_MAC_ROMAN: - return lower_macroman; -#endif -#endif -#ifdef XP_UNIX - case CS_LATIN1: - return lower_lookup_latin1; - case CS_LATIN2: - return lower_lookup_latin2; - case CS_8859_5: - return lower_lookup_8859_5; - case CS_8859_7: - return lower_lookup_8859_7; - case CS_8859_9: - return lower_lookup_8859_9; - case CS_CP_1251: - return lower_lookup_cp1251; -#endif - case CS_KOI8_R: - return lower_lookup_koi8_r; - case CS_KOI8_U: - return lower_lookup_koi8_u; - case CS_ARMSCII8: - return lower_armscii8; - - case CS_VIET_VISCII: - return lower_viet_viscii; - case CS_VIET_VPS: - return lower_viet_vps; - case CS_VIET_TCVN: - return lower_viet_tcvn; - - /* currently, return the ascii table. We should supply table for this csid later */ - - case CS_8859_3: - case CS_8859_4: - case CS_8859_6: - case CS_8859_8: - case CS_SYMBOL: - case CS_DINGBATS: - case CS_TIS620: - case CS_JISX0201: - - /* use the ascii table */ - case CS_DEFAULT: - case CS_ASCII: - case CS_BIG5: - case CS_CNS_8BIT: - case CS_GB_8BIT: - case CS_KSC_8BIT: - default: - return lower_lookup_ascii; - } -} - - - - diff --git a/mozilla/lib/libi18n/sjis2euc.c b/mozilla/lib/libi18n/sjis2euc.c deleted file mode 100644 index 8f0db7a87de..00000000000 --- a/mozilla/lib/libi18n/sjis2euc.c +++ /dev/null @@ -1,174 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* sjis2euc.c */ - -#include "intlpriv.h" - - -extern int MK_OUT_OF_MEMORY; - - - /* SJIS to EUC Algorithm. */ -#define TwoByteSJIS2EUC(sjisp, eucp, offset) { \ - *eucp = ((*sjisp++ - offset) << 1) | 0x80; /* 1st EUC byte */ \ - if (*sjisp < 0x9F) { /* check 2nd SJIS byte */ \ - *eucp++ -= 1; /* adjust 1st EUC byte */ \ - if (*sjisp > 0x7F) \ - *eucp++ = (*sjisp++ - 0x20) | 0x80; \ - else \ - *eucp++ = (*sjisp++ - 0x1F) | 0x80; \ - } else { \ - eucp++; \ - *eucp++ = (*sjisp++ - 0x7E) | 0x80; \ - } \ -} - -/* net_sjis2euc(sjisbuf, sjisbufsz) - * Args: - * sjisbuf: Ptr to a buf of SJIS chars - * sjisbufsz: Size in bytes of sjisbuf - * uncvtbuf: If entire buffer was converted, uncvtbuf[0] will be nul, - * else this points to SJIS chars that were NOT converted - * and mz_sjis2euc() with additional SJIS chars appended. - * Return: - * Returns NULL on failure, otherwise it returns a pointer to a buffer of - * converted SJIS characters. Caller must XP_FREE() this memory. - * - * Description: - * Allocate destination EUC buffer. - * - * If byte in ASCII range, just copy it to EUC buffer. - * If Half-width SJIS katakana (1 byte), convert to Half-width EUC katakana. - * If 2-byte SJIS, convert to 2-byte EUC. - * Otherwise assume user-defined SJIS, just copy 2 bytes. - * - * If either SJIS buffer does not contain complete SJIS char or EUC buffer - * is full, then return unconverted SJIS to caller. Caller should - * append more data and recall mz_sjis2euc. - */ - - -MODULE_PRIVATE unsigned char * -mz_sjis2euc( CCCDataObject obj, - const unsigned char *sjisbuf, /* SJIS buf for conversion */ - int32 sjisbufsz) /* SJIS buf size in bytes */ -{ - unsigned char *tobuf = NULL; - int32 tobufsz; - register unsigned char *sjisp, *tobufp; /* current byte in bufs */ - register unsigned char *sjisep, *tobufep; /* end of buffers */ - int32 uncvtlen; - unsigned char *uncvtbuf = INTL_GetCCCUncvtbuf(obj); - - /* Allocate a EUC buffer: */ - /* In the worst case ( all Half-width Kanas ), the converted */ - /* EUC will be 2X the size of the SJIS + 1 for nul byte */ - uncvtlen = strlen((char *)uncvtbuf); - tobufsz = ((sjisbufsz + uncvtlen) << 1) + 1; - if ((tobuf = (unsigned char *)XP_ALLOC(tobufsz)) == (unsigned char *)NULL) { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - /* Initialize pointers, etc. */ - sjisp = (unsigned char *)sjisbuf; - sjisep = sjisp + sjisbufsz - 1; - -#define uncvtp tobufp /* use tobufp as temp */ - /* If prev. unconverted chars, append unconverted - * chars w/new chars and try to process. - */ - if (uncvtbuf[0] != '\0') { - uncvtp = uncvtbuf + uncvtlen; - while (uncvtp < (uncvtbuf + UNCVTBUF_SIZE) && - sjisp <= sjisep) - *uncvtp++ = *sjisp++; - *uncvtp = '\0'; /* nul terminate */ - sjisp = uncvtbuf; /* process unconverted first */ - sjisep = uncvtp - 1; - } -#undef uncvtp - - tobufp = tobuf; - tobufep = tobufp + tobufsz - 1; /* save space for terminating null */ - -WHILELOOP: - /* While SJIS data && space in EUC buf. */ - while ((sjisp <= sjisep) && (tobufp <= tobufep)) { - if (*sjisp < 0x80) { - /* ASCII/JIS-Roman */ - *tobufp++ = *sjisp++; - - } else if (*sjisp < 0xA0) { - /* 1st byte of 2-byte low SJIS. */ - if (sjisp+1 > sjisep) /* No 2nd byte in SJIS buffer? */ - break; - - TwoByteSJIS2EUC(sjisp, tobufp, 0x70); - - } else if (*sjisp==0xA0) { - /* SJIS half-width space. */ - /* Just treat like Roman?? */ - *tobufp++ = *sjisp++; - - } else if (*sjisp < 0xE0) { - /* SJIS half-width katakana */ - *tobufp++ = SS2; - *tobufp++ = *sjisp | 0x80; /* Set 8th bit for EUC & SJIS */ - sjisp++; - - } else if (*sjisp < 0xF0) { - /* 1st byte of 2-byte high SJIS */ - if (sjisp+1 > sjisep) /* No 2nd byte in SJIS buffer? */ - break; - - TwoByteSJIS2EUC(sjisp, tobufp, 0xB0); - } else { - /* User Defined SJIS: copy bytes */ - if (sjisp+1 > sjisep) /* No 2nd byte in SJIS buf? */ - break; - - *tobufp++ = *sjisp++; /* Just copy 2 bytes. */ - *tobufp++ = *sjisp++; - } - } - - if (uncvtbuf[0] != '\0') { - /* jisp pts to 1st unprocessed char in - * jisbuf. Some may have been processed - * while processing unconverted chars, - * so set up ptrs not to process them - * twice. - */ - sjisp = (unsigned char *)sjisbuf + (sjisp - uncvtbuf - uncvtlen); - sjisep = (unsigned char *)sjisbuf + sjisbufsz - 1; - uncvtbuf[0] = '\0'; /* No more uncoverted chars. */ - goto WHILELOOP; /* Process new data */ - } - - *tobufp = '\0'; /* null terminate EUC data */ - INTL_SetCCCLen(obj, tobufp - tobuf); /* length not counting null */ - - if (sjisp <= sjisep) { /* uncoverted SJIS? */ - tobufp = uncvtbuf; /* reuse the tobufp as a TEMP */ - while (sjisp <= sjisep) - *tobufp++ = *sjisp++; - *tobufp = '\0'; /* null terminate */ - } - return(tobuf); -} - diff --git a/mozilla/lib/libi18n/sjis2jis.c b/mozilla/lib/libi18n/sjis2jis.c deleted file mode 100644 index 2e061d41e83..00000000000 --- a/mozilla/lib/libi18n/sjis2jis.c +++ /dev/null @@ -1,237 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* sjis2jis.c */ - -#include "intlpriv.h" -#if defined(MOZ_MAIL_NEWS) -#include "katakana.h" -#endif - -extern int MK_OUT_OF_MEMORY; - - - /* SJIS to JIS Algorithm. */ -#define TwoByteSJIS2JIS(sjisp, jisp, offset) { \ - *jisp = (*sjisp++ - offset) << 1; /* assign 1st byte */ \ - if (*sjisp < 0x9F) { /* check 2nd SJIS byte */ \ - *jisp++ -= 1; /* adjust 1st JIS byte */ \ - if (*sjisp > 0x7F) \ - *jisp++ = *sjisp++ - 0x20; \ - else \ - *jisp++ = *sjisp++ - 0x1F; \ - } else { \ - jisp++; \ - *jisp++ = *sjisp++ - 0x7E; \ - } \ -} - -/* net_sjis2jis(obj, sjisbuf, sjisbufsz) - * Args: - * sjisbuf: Ptr to a buf of SJIS chars - * sjisbufsz: Size in bytes of sjisbuf - * jismode: Ptr to encoding mode, use as arg for next call to - * mz_sjis2jis() for rest of current SJIS data. First call should - * initialize mode to ASCII (0). - * uncvtbuf: If entire buffer was converted, uncvtbuf[0] will be null, - * else this points to SJIS chars that were NOT converted - * and mz_sjis2jis() with additional SJIS chars appended. - * Return: - * Returns NULL on failure, otherwise it returns a pointer to a buffer of - * converted SJIS characters. Caller must XP_FREE() this memory. - * - * Description: - * Allocate destination JIS buffer. - * - * If the SJIS to JIS conversion changes JIS encoding, output proper ESC - * sequence. - * - * If byte in ASCII range, just copy it to JIS buffer. - * If Half-width SJIS katakana (1 byte), convert to Half-width JIS katakana. - * --- Now Half-width SJIS katakana is converted to 2-byte JIS katakana. --- - * If 2-byte SJIS, convert to 2-byte JIS. - * Otherwise assume user-defined SJIS, just copy 2 bytes. - * - * If either SJIS buffer does not contain complete SJIS char or JIS buffer - * is full, then return unconverted SJIS to caller. Caller should - * append more data and recall mz_sjis2jis. - */ - -MODULE_PRIVATE unsigned char * -mz_sjis2jis( CCCDataObject obj, - const unsigned char *sjisbuf, /* SJIS buf for conversion */ - int32 sjisbufsz) /* SJIS buf size in bytes */ -{ - unsigned char *tobuf = NULL; - int32 tobufsz; - register unsigned char *sjisp, *tobufp; /* current byte in bufs */ - register unsigned char *sjisep, *toep; /* end of buffers */ - int32 uncvtlen; - unsigned char *uncvtbuf = INTL_GetCCCUncvtbuf(obj); -#if defined(MOZ_MAIL_NEWS) - unsigned char kanabuf[2]; /* for half-width kana */ - uint32 byteused; /* for half-width kana */ -#endif - - /* Allocate a JIS buffer: */ - /* JIS is longer than SJIS because of ESC seq. In the worst case - * ( alternating Half-width Kana and Roman chars ), converted - * JIS will be 4X the size of the original SJIS + 1 for nul byte. - * Worst case: single half-width kana: - * ESC ( I KANA ESC ( J - */ - uncvtlen = strlen((char *)uncvtbuf); - tobufsz = ((sjisbufsz + uncvtlen) << 2) + 8; - if ((tobuf = (unsigned char *)XP_ALLOC(tobufsz)) == (unsigned char *)NULL) { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - /* Initialize pointers, etc. */ - sjisp = (unsigned char *)sjisbuf; - sjisep = sjisp + sjisbufsz - 1; - -#define uncvtp tobufp /* use tobufp as temp */ - /* If prev. unconverted chars, append unconverted - * chars w/new chars and try to process. - */ - if (uncvtbuf[0] != '\0') { - uncvtp = uncvtbuf + uncvtlen; - while (uncvtp < (uncvtbuf + UNCVTBUF_SIZE) && - sjisp <= sjisep) - *uncvtp++ = *sjisp++; - *uncvtp = '\0'; /* nul terminate */ - sjisp = uncvtbuf; /* process unconverted first */ - sjisep = uncvtp - 1; - } -#undef uncvtp - - tobufp = tobuf; - toep = tobufp + tobufsz - 2; /* save space for terminating null */ - -WHILELOOP: - /* While SJIS data && space in JIS buf. */ - while ((sjisp <= sjisep) && (tobufp <= toep)) { - if (*sjisp < 0x80) { - /* ASCII/JIS-Roman */ - if (INTL_GetCCCJismode(obj) != JIS_Roman) { - InsASCII_ESC(tobufp, obj); - } - *tobufp++ = *sjisp++; - - } else if (*sjisp < 0xA0) { - /* 1st byte of 2-byte low SJIS. */ - if (sjisp+1 > sjisep) /* No 2nd byte in SJIS buffer? */ - break; - - if (INTL_GetCCCJismode(obj) != JIS_208_83) { - Ins208_83_ESC(tobufp, obj); - } - - TwoByteSJIS2JIS(sjisp, tobufp, 0x70); - - } else if (*sjisp==0xA0) { - /* SJIS half-width space. */ - /* Just treat like Roman?? */ - if (INTL_GetCCCJismode(obj) != JIS_Roman) { - InsASCII_ESC(tobufp, obj); - } - *tobufp++ = *sjisp++; - - } else if (*sjisp < 0xE0) { - /* SJIS half-width katakana */ -#if defined(MOZ_MAIL_NEWS) - if (!INTL_GetCCCCvtflag_SendHankakuKana(obj)) { - if (INTL_GetCCCJismode(obj) != JIS_208_83) { - Ins208_83_ESC(tobufp, obj); - } - INTL_SjisHalf2FullKana(sjisp, (uint32)sjisep - (uint32)sjisp + 1, kanabuf, &byteused); - /* SJIS Katakana is 0x8340-0x8396 */ - *tobufp++ = ((kanabuf[0] - 0x70) << 1) - 1; /* assign 1st byte */ - if (kanabuf[1] > 0x7F) - *tobufp++ = kanabuf[1] - 0x20; - else - *tobufp++ = kanabuf[1] - 0x1F; - sjisp += byteused; - } else { - if (INTL_GetCCCJismode(obj) != JIS_HalfKana) { - InsHalfKana_ESC(tobufp, obj); - } - *tobufp++ = *sjisp & 0x7F; - sjisp++; - } -#else - if (INTL_GetCCCJismode(obj) != JIS_HalfKana) { - InsHalfKana_ESC(tobufp, obj); - } - *tobufp++ = *sjisp & 0x7F; - sjisp++; -#endif - } else if (*sjisp < 0xF0) { - /* 1st byte of 2-byte high SJIS */ - if (sjisp+1 > sjisep) /* No 2nd byte in SJIS buffer? */ - break; - - if (INTL_GetCCCJismode(obj) != JIS_208_83) { - Ins208_83_ESC(tobufp, obj); - } - - TwoByteSJIS2JIS(sjisp, tobufp, 0xB0); - } else { - /* User Defined SJIS: copy bytes */ - if (sjisp+1 > sjisep) /* No 2nd byte in SJIS buf? */ - break; - - if (INTL_GetCCCJismode(obj) != JIS_208_83) { - Ins208_83_ESC(tobufp, obj); - } - - *tobufp++ = *sjisp++; /* Just copy 2 bytes. */ - *tobufp++ = *sjisp++; - } - } - - if (uncvtbuf[0] != '\0') { - /* tobufp pts to 1st unprocessed char in - * tobuf. Some may have been processed - * while processing unconverted chars, - * so set up ptrs not to process them - * twice. - */ - sjisp = (unsigned char *)sjisbuf + (sjisp - uncvtbuf - uncvtlen); - /* save space for term. null */ - sjisep = (unsigned char *)sjisbuf + sjisbufsz - 1; - uncvtbuf[0] = '\0'; /* No more uncoverted chars. */ - goto WHILELOOP; /* Process new data */ - } - - if (INTL_GetCCCJismode(obj) != JIS_Roman) { - INTL_SetCCCJismode(obj, JIS_Roman); - InsASCII_ESC(tobufp, obj); - } - - *tobufp = '\0'; /* null terminate JIS data */ - INTL_SetCCCLen(obj, tobufp - tobuf); /* length not counting null */ - - if (sjisp <= sjisep) { /* uncoverted SJIS? */ - tobufp = uncvtbuf; /* reuse the tobufp as a TEMP */ - while (sjisp <= sjisep) - *tobufp++ = *sjisp++; - *tobufp = '\0'; /* null terminate */ - } - return(tobuf); -} - diff --git a/mozilla/lib/libi18n/ucs2.c b/mozilla/lib/libi18n/ucs2.c deleted file mode 100644 index 7f3c8264b9a..00000000000 --- a/mozilla/lib/libi18n/ucs2.c +++ /dev/null @@ -1,2018 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*---------------------------------------------------------------------------- - - Function UCS2ToValueAndInfo - -----------------------------------------------------------------------------*/ -#include "intlpriv.h" - -#include "ugen.h" -#include "umap.h" -#include "csid.h" -#include "xp_mem.h" -#include "xpassert.h" -#include "unicpriv.h" -#include "libi18n.h" -#if defined(XP_WIN) || defined(XP_OS2) -#include "prlink.h" -#endif - - - -/* - The following table is moved from npc.c npctocsid[] I rename it and try to get ride of npc.c -*/ -PRIVATE int16 csidtable[MAXCSIDINTBL] = -{ -/* 0x00 - 0x0F*/ -CS_DEFAULT, -CS_ASCII, -CS_LATIN1, -CS_JIS, - -CS_SJIS, -CS_EUCJP, -CS_MAC_ROMAN, -CS_BIG5, - -CS_GB_8BIT, -CS_CNS_8BIT, -CS_LATIN2, -CS_MAC_CE, - -CS_KSC_8BIT, -CS_2022_KR, -CS_8859_3, -CS_8859_4, - -/* 0x10 - 0x1F*/ -CS_8859_5, -CS_8859_6, -CS_8859_7, -CS_8859_8, - -CS_8859_9, -CS_SYMBOL, -CS_DINGBATS, -CS_DECTECH, - -CS_CNS11643_1, -CS_CNS11643_2, -CS_JISX0208, -CS_JISX0201, - -CS_KSC5601, -CS_TIS620, -CS_JISX0212, -CS_GB2312, - -/* 0x20 - 0x2F*/ -CS_UNKNOWN, /* CS_UCS2 */ -CS_UNKNOWN, /* CS_UCS4 */ -CS_UNKNOWN, /* CS_UTF8 */ -CS_UNKNOWN, /* CS_UTF7 */ - -CS_UNKNOWN, /* CS_NPC */ -CS_X_BIG5, -CS_UNKNOWN, /* USRDEF2 */ -CS_KOI8_R, - -CS_MAC_CYRILLIC, -CS_CP_1251, -CS_MAC_GREEK, -CS_CP_1253, - -CS_CP_1250, -CS_CP_1254, -CS_MAC_TURKISH, -CS_UNKNOWN, /* CS_GB2312_11 */ - -/* 0x30 - 0x3F*/ -CS_UNKNOWN, /* CS_JISX0208_11 */ -CS_UNKNOWN, /* CS_KSC5601_11 */ -CS_UNKNOWN, /* CS_CNS11643_1110 */ -CS_UNKNOWN, /* CS_UCS2_SWAP */ - -CS_UNKNOWN, /* CS_IMAP4_UTF7 */ -CS_CP_850, -CS_CP_852, -CS_CP_855, - -CS_CP_857, -CS_CP_862, -CS_CP_864, -CS_CP_866, - -CS_CP_874, -CS_CP_1257, -CS_CP_1258, -CS_ARMSCII8, - -/* 0x40 - 0x4F*/ -CS_HZ, -CS_ISO_2022_CN, -CS_GB13000, -CS_BIG5_PLUS, - -CS_UHC, -CS_CNS11643_3, -CS_CNS11643_4, -CS_CNS11643_5, - -CS_CNS11643_6, -CS_CNS11643_7, -CS_CNS11643_8, -CS_CNS11643_9, - -CS_CNS11643_10, -CS_CNS11643_11, -CS_CNS11643_12, -CS_CNS11643_13, - -/* 0x50 - 0x5F*/ -CS_CNS11643_14, -CS_CNS11643_15, -CS_CNS11643_16, -CS_VIET_VISCII, - -CS_VIET_VIQR, -CS_KOI8_U, -CS_ISO_IR_111, -CS_8859_6_I, - -CS_8859_6_E, -CS_8859_8_I, -CS_8859_8_E, -CS_JOHAB, - -CS_JOHABFONT, -CS_VIET_VPS, -CS_VIET_TCVN, -CS_VIET_VNI, - -/* 0x60 - 0x6F*/ -CS_T61, -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, - -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, - -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, - -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, - -/* 0x70 - 0x7F*/ -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, - -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, - -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, - -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, - -}; - -#define intl_GetValidCSID(fb) (csidtable[(fb) & (MAXCSIDINTBL - 1)]) - -/* - Our global table are deivded into 256 row - each row have 256 entries - each entry have one value and one info - Info field contains csid index -*/ - -typedef struct { - uint16 value[256]; - unsigned char info[256]; -} uRowTable; - -PRIVATE uRowTable *uRowTablePtArray[256]; - -PRIVATE uTable* LoadToUCS2Table(uint16 csid); -PRIVATE void UnloadToUCS2Table(uint16 csid, uTable *utblPtr); -PRIVATE uTable* LoadFromUCS2Table(uint16 csid); -PRIVATE void UnloadFromUCS2Table(uint16 csid, uTable *utblPtr); -PRIVATE void CheckAndAddEntry(uint16 ucs2, uint16 med , uint16 csid); -PRIVATE XP_Bool UCS2ToValueAndInfo(uint16 ucs2, uint16* med, unsigned char* info); -PRIVATE void InitUCS2Table(void); - -/* - UCS2 Table- is build into the navigator -*/ -PRIVATE uint16 Ucs2Tbl[] = { - 0x0001, 0x0004, 0x0005, 0x0008, 0x0000, 0x0000, 0xFFFF, 0x0000 -}; -PRIVATE uint16 asciiTbl[] = { - 0x0001, 0x0004, 0x0005, 0x0008, 0x0000, 0x0000, 0x007F, 0x0000 -}; - -#ifdef XP_UNIX - -/* Currently, we only support the Latin 1 and Japanese Table. */ -/* We will add more table here after the first run */ -/*--------------------------------------------------------------------------*/ -/* Latin stuff */ -PRIVATE uint16 iso88591FromTbl[] = { -#include "8859-1.uf" -}; -PRIVATE uint16 iso88591ToTbl[] = { -#include "8859-1.ut" -}; -/*--------------------------------------------------------------------------*/ -PRIVATE uint16 iso88595FromTbl[] = { -#include "8859-5.uf" -}; -PRIVATE uint16 iso88595ToTbl[] = { -#include "8859-5.ut" -}; -/*--------------------------------------------------------------------------*/ -PRIVATE uint16 iso88597FromTbl[] = { -#include "8859-7.uf" -}; -PRIVATE uint16 iso88597ToTbl[] = { -#include "8859-7.ut" -}; -/*--------------------------------------------------------------------------*/ -PRIVATE uint16 iso88599FromTbl[] = { -#include "8859-9.uf" -}; -PRIVATE uint16 iso88599ToTbl[] = { -#include "8859-9.ut" -}; -/*--------------------------------------------------------------------------*/ -PRIVATE uint16 koi8uFromTbl[] = { -#include "koi8u.uf" -}; -PRIVATE uint16 koi8uToTbl[] = { -#include "koi8u.ut" -}; -/*--------------------------------------------------------------------------*/ -PRIVATE uint16 koi8rFromTbl[] = { -#include "koi8r.uf" -}; -PRIVATE uint16 koi8rToTbl[] = { -#include "koi8r.ut" -}; -PRIVATE uint16 cp1251FromTbl[] = { -#include "cp1251.uf" -}; -PRIVATE uint16 cp1251ToTbl[] = { -#include "cp1251.ut" -}; -/*--------------------------------------------------------------------------*/ -/* ArmSCII */ -PRIVATE uint16 armsciiFromTbl[] = { -#include "armscii.uf" -}; -PRIVATE uint16 armsciiToTbl[] = { -#include "armscii.ut" -}; -/*--------------------------------------------------------------------------*/ -/* Japanese stuff */ -PRIVATE uint16 JIS0208FromTbl[] = { -#include "jis0208.uf" -}; -PRIVATE uint16 JIS0208ToTbl[] = { -#include "jis0208.ut" -}; -PRIVATE uint16 JIS0201FromTbl[] = { -#include "jis0201.uf" -}; -PRIVATE uint16 JIS0201ToTbl[] = { -#include "jis0201.ut" -}; -PRIVATE uint16 JIS0212FromTbl[] = { -#include "jis0212.uf" -}; -PRIVATE uint16 JIS0212ToTbl[] = { -#include "jis0212.ut" -}; -PRIVATE uint16 SJISFromTbl[] = { -#include "sjis.uf" -}; -PRIVATE uint16 SJISToTbl[] = { -#include "sjis.ut" -}; - -/*--------------------------------------------------------------------------*/ -/* Latin2 Stuff */ -PRIVATE uint16 iso88592FromTbl[] = { -#include "8859-2.uf" -}; -PRIVATE uint16 iso88592ToTbl[] = { -#include "8859-2.ut" -}; -/*--------------------------------------------------------------------------*/ -/* Traditional Chinese Stuff */ -PRIVATE uint16 CNS11643_1FromTbl[] = { -#include "cns_1.uf" -}; -PRIVATE uint16 CNS11643_1ToTbl[] = { -#include "cns_1.ut" -}; -PRIVATE uint16 CNS11643_2FromTbl[] = { -#include "cns_2.uf" -}; -PRIVATE uint16 CNS11643_2ToTbl[] = { -#include "cns_2.ut" -}; -PRIVATE uint16 Big5FromTbl[] = { -#include "big5.uf" -}; -PRIVATE uint16 Big5ToTbl[] = { -#include "big5.ut" -}; -/*--------------------------------------------------------------------------*/ -/* Simplified Chinese Stuff */ -PRIVATE uint16 GB2312FromTbl[] = { -#include "gb2312.uf" -}; -PRIVATE uint16 GB2312ToTbl[] = { -#include "gb2312.ut" -}; -/*--------------------------------------------------------------------------*/ -/* Korean Stuff */ -/* - For UNIX the Korean UNICODE 2.0 table is u20kscgl.u[tf] - They are GL base table that contains minimun set of Korean table that - the UNIX actually can handle. -*/ -PRIVATE uint16 KSC5601FromTbl[] = { -#include "u20kscgl.uf" -}; -PRIVATE uint16 KSC5601ToTbl[] = { -#include "u20kscgl.ut" -}; - - -/*--------------------------------------------------------------------------*/ -/* Symbol Stuff */ -PRIVATE uint16 SymbolFromTbl[] = { -#include "macsymbo.uf" -}; -PRIVATE uint16 SymbolToTbl[] = { -#include "macsymbo.ut" -}; - -/*--------------------------------------------------------------------------*/ -/* Dingbats Stuff */ -PRIVATE uint16 DingbatsFromTbl[] = { -#include "macdingb.uf" -}; -PRIVATE uint16 DingbatsToTbl[] = { -#include "macdingb.ut" -}; -/*--------------------------------------------------------------------------*/ -/* T61 Stuff */ -PRIVATE uint16 T61FromTbl[] = { -#include "t61.uf" -}; -PRIVATE uint16 T61ToTbl[] = { -#include "t61.ut" -}; -/*--------------------------------------------------------------------------*/ -/* Thai */ -PRIVATE uint16 TIS620FromTbl[] = { -#include "cp874.uf" /* use cp874 untill we have real TIS 620 table */ -}; -PRIVATE uint16 TIS620ToTbl[] = { -#include "cp874.ut" /* use cp874 untill we have real TIS 620 table */ -}; -/*--------------------------------------------------------------------------*/ -PRIVATE uTable* LoadToUCS2Table(uint16 csid) -{ - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - switch(csid) { - case CS_ASCII: - return (uTable*) asciiTbl; - - /* Latin stuff */ - case CS_LATIN1: - return (uTable*) iso88591ToTbl; - - case CS_8859_5: - return (uTable*) iso88595ToTbl; - - case CS_8859_7: - return (uTable*) iso88597ToTbl; - - case CS_8859_9: - return (uTable*) iso88599ToTbl; - - case CS_KOI8_R: - return (uTable*) koi8rToTbl; - - case CS_KOI8_U: - return (uTable*) koi8uToTbl; - - case CS_CP_1251: - return (uTable*) cp1251ToTbl; - - /* ArmSCII */ - case CS_ARMSCII8: - return (uTable*) armsciiToTbl; - - /* Japanese */ - case CS_JISX0208: - return (uTable*) JIS0208ToTbl; - - case CS_JISX0201: - return (uTable*) JIS0201ToTbl; - - case CS_JISX0212: - return (uTable*) JIS0212ToTbl; - case CS_SJIS: - return (uTable*) SJISToTbl; - - /* Latin2 Stuff */ - case CS_LATIN2: - return (uTable*) iso88592ToTbl; - /* Traditional Chinese Stuff */ - case CS_CNS11643_1: - return (uTable*) CNS11643_1ToTbl; - case CS_CNS11643_2: - return (uTable*) CNS11643_2ToTbl; - case CS_BIG5: - case CS_X_BIG5: - return (uTable*) Big5ToTbl; - - - /* Simplified Chinese Stuff */ - case CS_GB2312: - case CS_GB_8BIT: - return (uTable*) GB2312ToTbl; - - /* Korean Stuff */ - case CS_KSC5601: - case CS_KSC_8BIT: - return (uTable*) KSC5601ToTbl; - - /* Symbol Stuff */ - case CS_SYMBOL: - return (uTable*) SymbolToTbl; - - /* Dingbats Stuff */ - case CS_DINGBATS: - return (uTable*) DingbatsToTbl; - - /* UTF8 */ - case CS_UTF8: - case CS_UCS2: - return (uTable*) Ucs2Tbl; - - case CS_TIS620: - return (uTable*) TIS620ToTbl; - case CS_T61: - return (uTable*) T61ToTbl; - /* Other Stuff */ - default: - XP_ASSERT(TRUE); - return NULL; - } -} -PRIVATE uTable* LoadFromUCS2Table(uint16 csid) -{ - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - switch(csid) { - case CS_ASCII: - return (uTable*) asciiTbl; - - /* Latin stuff */ - case CS_LATIN1: - return (uTable*) iso88591FromTbl; - - case CS_8859_5: - return (uTable*) iso88595FromTbl; - - case CS_8859_7: - return (uTable*) iso88597FromTbl; - - case CS_8859_9: - return (uTable*) iso88599FromTbl; - - case CS_KOI8_R: - return (uTable*) koi8rFromTbl; - - case CS_KOI8_U: - return (uTable*) koi8uFromTbl; - - case CS_CP_1251: - return (uTable*) cp1251FromTbl; - - /* ArmSCII */ - case CS_ARMSCII8: - return (uTable*) armsciiFromTbl; - - /* Japanese */ - case CS_JISX0208: - return (uTable*) JIS0208FromTbl; - - case CS_JISX0201: - return (uTable*) JIS0201FromTbl; - - case CS_JISX0212: - return (uTable*) JIS0212FromTbl; - - case CS_SJIS: - return (uTable*) SJISFromTbl; - - /* Latin2 Stuff */ - case CS_LATIN2: - return (uTable*) iso88592FromTbl; - /* Traditional Chinese Stuff */ - case CS_CNS11643_1: - return (uTable*) CNS11643_1FromTbl; - case CS_CNS11643_2: - return (uTable*) CNS11643_2FromTbl; - case CS_X_BIG5: - case CS_BIG5: - return (uTable*) Big5FromTbl; - - - /* Simplified Chinese Stuff */ - case CS_GB2312: - case CS_GB_8BIT: - return (uTable*) GB2312FromTbl; - - /* Korean Stuff */ - case CS_KSC5601: - case CS_KSC_8BIT: - return (uTable*) KSC5601FromTbl; - - /* Symbol Stuff */ - case CS_SYMBOL: - return (uTable*) SymbolFromTbl; - - /* Dingbats Stuff */ - case CS_DINGBATS: - return (uTable*) DingbatsFromTbl; - - /* UTF8 */ - case CS_UTF8: - case CS_UCS2: - return (uTable*) Ucs2Tbl; - - case CS_TIS620: - return (uTable*) TIS620FromTbl; - - case CS_T61: - return (uTable*) T61FromTbl; - /* Other Stuff */ - default: - XP_ASSERT(TRUE); - return NULL; - } -} - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE void UnloadToUCS2Table(uint16 csid, uTable *utblPtr) -{ - /* If we link those table in our code. We don't need to do anything to - unload them */ -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE void UnloadFromUCS2Table(uint16 csid, uTable *utblPtr) -{ - /* If we link those table in our code. We don't need to do anything to - unload them */ -} - -#endif /* XP_UNIX */ - -#ifdef XP_MAC -PRIVATE XP_Bool isIcelandicRoman() -{ - static int region = -1; - if(region == -1) - { - region = GetScriptManagerVariable(smRegionCode); - } - return (verIceland == region); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE uTable* LoadUCS2Table(uint16 csid,int from) -{ - /* We need to add reference count here */ - Handle tableHandle; - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - switch(csid) - { - case CS_ASCII: - return (uTable*) asciiTbl; - break; - case CS_UCS2: - case CS_UTF8: - return (uTable*) Ucs2Tbl; - break; - case CS_MAC_ROMAN: - /* Handle MacRoman Variant here */ - if(isIcelandicRoman()) - csid = CS_MAC_ROMAN | 0x1000; /* if this is Icelandic variant */ - break; - default: - break; - } - tableHandle = GetResource((from ? 'UFRM' : 'UTO '), csid); - if(tableHandle == NULL || ResError()!=noErr) - return NULL; - if(*tableHandle == NULL) - LoadResource(tableHandle); - HNoPurge(tableHandle); - HLock(tableHandle); - return((uTable*) *tableHandle); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE void UnloadUCS2Table(uint16 csid, uTable *utblPtr, int from) -{ - /* We need to add reference count here */ - Handle tableHandle; - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - switch(csid) - { - case CS_ASCII: - case CS_UCS2: - case CS_UTF8: - return; - case CS_MAC_ROMAN: - /* Handle MacRoman Variant here */ - if(isIcelandicRoman()) - csid = CS_MAC_ROMAN | 0x1000; /* if this is Icelandic variant */ - break; - default: - break; - } - tableHandle = GetResource((from ? 'UFRM' : 'UTO '), csid); - if(tableHandle == NULL || ResError()!=noErr) - return; - HUnlock((Handle) tableHandle); - HPurge(tableHandle); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE uTable* LoadToUCS2Table(uint16 csid) -{ - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - return LoadUCS2Table(csid, FALSE); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE void UnloadToUCS2Table(uint16 csid, uTable *utblPtr) -{ - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - UnloadUCS2Table(csid, utblPtr, FALSE); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE uTable* LoadFromUCS2Table(uint16 csid) -{ - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - return LoadUCS2Table(csid, TRUE); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE void UnloadFromUCS2Table(uint16 csid, uTable *utblPtr) -{ - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - UnloadUCS2Table(csid, utblPtr, TRUE); -} -#endif /* XP_MAC */ - -#if defined(XP_WIN) - -#ifdef XP_WIN32 -#define UNICODEDLL "UNI3200.DLL" -#define LIBRARYLOADOK(l) (l != NULL) -#define UNICODE_LOADUCS2TABLE_SYM "UNICODE_LOADUCS2TABLE" -#define UNICODE_UNLOADUCS2TABLE_SYM "UNICODE_UNLOADUCS2TABLE" -#else -#define UNICODEDLL "UNI1600.DLL" -#define LIBRARYLOADOK(l) (l >= 32) -#define UNICODE_LOADUCS2TABLE_SYM "_UNICODE_LOADUCS2TABLE" -#define UNICODE_UNLOADUCS2TABLE_SYM "_UNICODE_UNLOADUCS2TABLE" -#endif /* !XP_WIN32 */ - -PRLibrary* uniLib = NULL; - -PRIVATE uTable* LoadUCS2Table(uint16 csid, int from) -{ - uTable* ret = NULL; - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - switch(csid) - { - case CS_ASCII: - ret = (uTable*) asciiTbl; - break; - case CS_UCS2: - case CS_UTF8: - ret = (uTable*) Ucs2Tbl; - break; - default: - if(uniLib == NULL ) - uniLib = PR_LoadLibrary(UNICODEDLL); - if(uniLib) - { - typedef uTable* (*f) (uint16 i1, int i2); - static f p = NULL; - - if (p == NULL) { - p = (f)PR_FindSymbol(uniLib, UNICODE_LOADUCS2TABLE_SYM); - } - XP_ASSERT(p); - if(p) - ret = (*p)(csid, from); - } - break; - } - return ret; -} -PRIVATE void UnloadUCS2Table(uint16 csid, uTable* utblPtr, int from) -{ - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - switch(csid) - { - case CS_ASCII: - case CS_UCS2: - case CS_UTF8: - break; - default: - if(uniLib == NULL ) - uniLib = PR_LoadLibrary(UNICODEDLL); - if(uniLib) - { - typedef void (*f) (uint16 i1, uTable* i2, int i3); - static f p = NULL; - - if (p == NULL) { - p = (f)PR_FindSymbol(uniLib, UNICODE_UNLOADUCS2TABLE_SYM); - } - XP_ASSERT(p); - if(p) - (*p)(csid, utblPtr, from); - } - break; - } -} -PRIVATE uTable* LoadToUCS2Table(uint16 csid) -{ - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - return(LoadUCS2Table(csid,0)); -} -PRIVATE void UnloadToUCS2Table(uint16 csid, uTable *utblPtr) -{ - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - UnloadUCS2Table(csid, utblPtr, 0); -} -PRIVATE uTable* LoadFromUCS2Table(uint16 csid) -{ - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - return(LoadUCS2Table(csid,1)); -} -PRIVATE void UnloadFromUCS2Table(uint16 csid, uTable *utblPtr) -{ - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - UnloadUCS2Table(csid, utblPtr, 1); -} -#endif /* XP_WIN */ - - -#ifdef XP_OS2 -/* - * The basic design for OS/2 is to place all of the tables inline. - * Since we reference most of the from tables during init to form - * the row tables, we might as well just put them here. - */ - -/* - * Latin 1 - */ -PRIVATE uint16 cp1252FromTbl[] = { -#include "cp1252.uf" -}; -PRIVATE uint16 cp1252ToTbl[] = { -#include "cp1252.ut" -}; -/* - * Latin 2 - */ -PRIVATE uint16 iso8859_2FromTbl[] = { -#include "8859-2.uf" -}; -PRIVATE uint16 iso8859_2ToTbl[] = { -#include "8859-2.ut" -}; -/* - * Japan - */ -PRIVATE uint16 japanFromTbl[] = { -#include "sjis.uf" -}; -PRIVATE uint16 japanToTbl[] = { -#include "sjis.ut" -}; -/* - * China (may need update for GBK) - */ -PRIVATE uint16 chinaFromTbl[] = { -#include "gb2312.uf" -}; -PRIVATE uint16 chinaToTbl[] = { -#include "gb2312.ut" -}; -/* - * Taiwan - */ -PRIVATE uint16 taiwanFromTbl[] = { -#include "big5.uf" -}; -PRIVATE uint16 taiwanToTbl[] = { -#include "big5.ut" -}; - -/* - * ISO Codepages - */ -PRIVATE uint16 iso8859_3FromTbl[] = { -#include "8859-3.uf" -}; -PRIVATE uint16 iso8859_3ToTbl[] = { -#include "8859-3.ut" -}; -PRIVATE uint16 iso8859_4FromTbl[] = { -#include "8859-4.uf" -}; -PRIVATE uint16 iso8859_4ToTbl[] = { -#include "8859-4.ut" -}; -PRIVATE uint16 iso8859_5FromTbl[] = { -#include "8859-5.uf" -}; -PRIVATE uint16 iso8859_5ToTbl[] = { -#include "8859-5.ut" -}; -PRIVATE uint16 iso8859_6FromTbl[] = { -#include "8859-6.uf" -}; -PRIVATE uint16 iso8859_6ToTbl[] = { -#include "8859-6.ut" -}; -PRIVATE uint16 iso8859_7FromTbl[] = { -#include "8859-7.uf" -}; -PRIVATE uint16 iso8859_7ToTbl[] = { -#include "8859-7.ut" -}; -PRIVATE uint16 iso8859_8FromTbl[] = { -#include "8859-8.uf" -}; -PRIVATE uint16 iso8859_8ToTbl[] = { -#include "8859-8.ut" -}; -PRIVATE uint16 iso8859_9FromTbl[] = { -#include "8859-9.uf" -}; -PRIVATE uint16 iso8859_9ToTbl[] = { -#include "8859-9.ut" -}; - -/* - * Windows Codepages - */ -PRIVATE uint16 cp1250FromTbl[] = { -#include "cp1250.uf" -}; -PRIVATE uint16 cp1250ToTbl[] = { -#include "cp1250.ut" -}; -PRIVATE uint16 cp1251FromTbl[] = { -#include "cp1251.uf" -}; -PRIVATE uint16 cp1251ToTbl[] = { -#include "cp1251.ut" -}; -PRIVATE uint16 cp1253FromTbl[] = { -#include "cp1253.uf" -}; -PRIVATE uint16 cp1253ToTbl[] = { -#include "cp1253.ut" -}; -PRIVATE uint16 cp1254FromTbl[] = { -#include "cp1254.uf" -}; -PRIVATE uint16 cp1254ToTbl[] = { -#include "cp1254.ut" -}; -PRIVATE uint16 cp1257FromTbl[] = { -#include "cp1257.uf" -}; -PRIVATE uint16 cp1257ToTbl[] = { -#include "cp1257.ut" -}; - -/* - * Russian - */ -PRIVATE uint16 koi8rFromTbl[] = { -#include "koi8r.uf" -}; -PRIVATE uint16 koi8rToTbl[] = { -#include "koi8r.ut" -}; - -/* - * OS/2 Codepages - */ -PRIVATE uint16 cp850FromTbl[] = { -#include "cp850.uf" -}; -PRIVATE uint16 cp850ToTbl[] = { -#include "cp850.ut" -}; -PRIVATE uint16 cp852FromTbl[] = { -#include "cp852.uf" -}; -PRIVATE uint16 cp852ToTbl[] = { -#include "cp852.ut" -}; -PRIVATE uint16 cp855FromTbl[] = { -#include "cp855.uf" -}; -PRIVATE uint16 cp855ToTbl[] = { -#include "cp855.ut" -}; -PRIVATE uint16 cp857FromTbl[] = { -#include "cp857.uf" -}; -PRIVATE uint16 cp857ToTbl[] = { -#include "cp857.ut" -}; -PRIVATE uint16 cp862FromTbl[] = { -#include "cp862.uf" -}; -PRIVATE uint16 cp862ToTbl[] = { -#include "cp862.ut" -}; -PRIVATE uint16 cp864FromTbl[] = { -#include "cp864.uf" -}; -PRIVATE uint16 cp864ToTbl[] = { -#include "cp864.ut" -}; -PRIVATE uint16 cp866FromTbl[] = { -#include "cp866.uf" -}; -PRIVATE uint16 cp866ToTbl[] = { -#include "cp866.ut" -}; -PRIVATE uint16 cp874FromTbl[] = { -#include "cp874.uf" -}; -PRIVATE uint16 cp874ToTbl[] = { -#include "cp874.ut" -}; - -/* - * Korea - */ -PRIVATE uint16 koreaFromTbl[] = { -#include "ksc5601.uf" -}; -PRIVATE uint16 koreaToTbl[] = { -#include "ksc5601.ut" -}; - - -/* - * Symbol - */ -PRIVATE uint16 symbolFromTbl[] = { -#include "macsymbo.uf" -}; -PRIVATE uint16 symbolToTbl[] = { -#include "macsymbo.ut" -}; - -/* - * Mac roman - */ -PRIVATE uint16 macromanFromTbl[] = { -#include "macroman.uf" -}; -PRIVATE uint16 macromanToTbl[] = { -#include "macroman.ut" -}; - -/* - * Dingbats Stuff - */ -PRIVATE uint16 dingbatFromTbl[] = { -#include "macdingb.uf" -}; -PRIVATE uint16 dingbatToTbl[] = { -#include "macdingb.ut" -}; - -/* - * Return the address of the To table given the codeset - */ -PRIVATE uTable* LoadToUCS2Table(uint16 csid) { - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - switch(csid) { - case CS_ASCII: - case CS_LATIN1: return (uTable*) cp1252ToTbl; - case CS_UTF8: - case CS_UTF7: - case CS_UCS2: return (uTable*) Ucs2Tbl; - case CS_LATIN2: return (uTable*) iso8859_2ToTbl; - case CS_SJIS: return (uTable*) japanToTbl; - case CS_BIG5: return (uTable*) taiwanToTbl; - case CS_GB_8BIT: return (uTable*) chinaToTbl; - case CS_8859_3: return (uTable*) iso8859_3ToTbl; - case CS_8859_4: return (uTable*) iso8859_4ToTbl; - case CS_8859_5: return (uTable*) iso8859_5ToTbl; - case CS_8859_6: return (uTable*) iso8859_6ToTbl; - case CS_8859_7: return (uTable*) iso8859_7ToTbl; - case CS_8859_8: return (uTable*) iso8859_8ToTbl; - case CS_8859_9: return (uTable*) iso8859_9ToTbl; - case CS_CP_1250: return (uTable*) cp1250ToTbl; - case CS_CP_1251: return (uTable*) cp1251ToTbl; - case CS_CP_1253: return (uTable*) cp1253ToTbl; - case CS_CP_1254: return (uTable*) cp1254ToTbl; - case CS_CP_1257: return (uTable*) cp1257ToTbl; - case CS_CP_850: return (uTable*) cp850ToTbl; - case CS_CP_852: return (uTable*) cp852ToTbl; - case CS_CP_855: return (uTable*) cp855ToTbl; - case CS_CP_857: return (uTable*) cp857ToTbl; - case CS_CP_862: return (uTable*) cp862ToTbl; - case CS_CP_864: return (uTable*) cp864ToTbl; - case CS_CP_866: return (uTable*) cp866ToTbl; - case CS_CP_874: return (uTable*) cp874ToTbl; - case CS_KOI8_R: return (uTable*) koi8rToTbl; - case CS_KSC_8BIT: return (uTable*) koreaToTbl; - case CS_MAC_ROMAN: return (uTable*) macromanToTbl; - case CS_SYMBOL: return (uTable*) symbolToTbl; - case CS_DINGBATS: return (uTable*) dingbatToTbl; - } - return (uTable*) cp1252ToTbl; /* This should not happen */ -} - -/* - * Return the address of the From table given the codeset - */ -PRIVATE uTable* LoadFromUCS2Table(uint16 csid) { - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - switch(csid) { - case CS_ASCII: - case CS_LATIN1: return (uTable*) cp1252FromTbl; - case CS_UTF8: - case CS_UTF7: - case CS_UCS2: return (uTable*) Ucs2Tbl; - case CS_LATIN2: return (uTable*) iso8859_2FromTbl; - case CS_SJIS: return (uTable*) japanFromTbl; - case CS_BIG5: return (uTable*) taiwanFromTbl; - case CS_GB_8BIT: return (uTable*) chinaFromTbl; - case CS_8859_3: return (uTable*) iso8859_3FromTbl; - case CS_8859_4: return (uTable*) iso8859_4FromTbl; - case CS_8859_5: return (uTable*) iso8859_5FromTbl; - case CS_8859_6: return (uTable*) iso8859_6FromTbl; - case CS_8859_7: return (uTable*) iso8859_7FromTbl; - case CS_8859_8: return (uTable*) iso8859_8FromTbl; - case CS_8859_9: return (uTable*) iso8859_9FromTbl; - case CS_CP_1250: return (uTable*) cp1250FromTbl; - case CS_CP_1251: return (uTable*) cp1251FromTbl; - case CS_CP_1253: return (uTable*) cp1253FromTbl; - case CS_CP_1254: return (uTable*) cp1254FromTbl; - case CS_CP_1257: return (uTable*) cp1257FromTbl; - case CS_CP_850: return (uTable*) cp850FromTbl; - case CS_CP_852: return (uTable*) cp852FromTbl; - case CS_CP_855: return (uTable*) cp855FromTbl; - case CS_CP_857: return (uTable*) cp857FromTbl; - case CS_CP_862: return (uTable*) cp862FromTbl; - case CS_CP_864: return (uTable*) cp864FromTbl; - case CS_CP_866: return (uTable*) cp866FromTbl; - case CS_CP_874: return (uTable*) cp874FromTbl; - case CS_KOI8_R: return (uTable*) koi8rFromTbl; - case CS_KSC_8BIT: return (uTable*) koreaFromTbl; - case CS_MAC_ROMAN: return (uTable*) macromanFromTbl; - case CS_SYMBOL: return (uTable*) symbolFromTbl; - case CS_DINGBATS: return (uTable*) dingbatFromTbl; - } - return (uTable*) cp1252FromTbl; /* This should not happen */ -} - - -/* - * Null functions since the tables are inline - */ -PRIVATE void UnloadToUCS2Table(uint16 csid, uTable *utblPtr) {} -PRIVATE void UnloadFromUCS2Table(uint16 csid, uTable *utblPtr) {} - -#endif /* XP_OS2 */ - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE uRowTable* AddAndInitOneRow(uint16 hb) -{ - /* Allocate uRowTablePtArray[hb] and initialize it */ - uint16 i; - uRowTable *row = XP_ALLOC(sizeof(uRowTable)); - if(row == NULL) - { - XP_ASSERT(row != 0); - return NULL; - } - else - { - for(i = 0; i < 256 ;i++) - { - row->value[i] = NOMAPPING; - row->info[i] = 0; - } - uRowTablePtArray[hb] = row; - } - return row; -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE void AddAndInitAllRows(void) -{ - uint16 i; - for(i=0;i<256;i++) - (void) AddAndInitOneRow(i); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE XP_Bool RowUsed(uint16 rownum) -{ - uint16 c; - uRowTable *row = uRowTablePtArray[ rownum] ; - - for(c=0;c<256;c++) - { - if(row->value[c] != NOMAPPING) - return TRUE; - } - return FALSE; -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE void FreeRow(uint16 row) -{ - XP_FREE(uRowTablePtArray[row]); - uRowTablePtArray[row] = NULL; -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE void FreeUnusedRows(void) -{ - uint16 i; - for(i=0;i<256;i++) - { - if(! RowUsed(i)) - FreeRow(i); - } -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE void CheckAndAddEntry(uint16 ucs2, uint16 med, uint16 csid) -{ - uint16 lb = ucs2 & 0x00FF; - uRowTable *row = uRowTablePtArray[ucs2 >> 8]; - if(row->value[lb] == NOMAPPING) - { - row->value[lb]= med; - row->info[lb]= (csid & 0xFF); - } -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE -XP_Bool -UCS2ToValueAndInfo(uint16 ucs2, uint16* med, unsigned char* info) -{ - uRowTable *uRowTablePtr = uRowTablePtArray[(ucs2 >> 8)]; - if( uRowTablePtr == NULL) - return FALSE; - *med = uRowTablePtr->value[(ucs2 & 0x00ff)]; - if(*med == NOMAPPING) - { - return FALSE; - } - else - { - *info = uRowTablePtr->info[(ucs2 & 0x00ff)]; - return TRUE; - } -} - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ - -PRIVATE void InitUCS2Table(void) -{ - int16 i; - for(i=0;i<256; i++) - uRowTablePtArray[i] = NULL; -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PUBLIC XP_Bool -UCS2_To_Other( - uint16 ucs2, - unsigned char *out, - uint32 outbuflen, - uint32* outlen, - int16 *outcsid -) -{ - uint16 med; - unsigned char info; - uShiftTable* shiftTable; -#ifdef XP_MAC - if(ucs2 == 0x000a) - ucs2 = 0x000d; -#endif - if(UCS2ToValueAndInfo(ucs2, &med, &info)) - { - *outcsid = intl_GetValidCSID(info); - XP_ASSERT(*outcsid != CS_UNKNOWN); - shiftTable = InfoToShiftTable(info); - XP_ASSERT(shiftTable); - return uGenerate(shiftTable, (int32*)0, med, out,outbuflen, outlen); - } - return FALSE; -} - - -PRIVATE int16* unicodeCSIDList = NULL; -PRIVATE unsigned char** unicodeCharsetNameList = NULL; -PRIVATE uint16 numOfUnicodeList = 0; - -PUBLIC int16* INTL_GetUnicodeCSIDList(int16 * outnum) -{ - *outnum = numOfUnicodeList; - return unicodeCSIDList; -} -PUBLIC unsigned char **INTL_GetUnicodeCharsetList(int16 * outnum) -{ - *outnum = numOfUnicodeList; - return unicodeCharsetNameList; -} - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PUBLIC void INTL_SetUnicodeCSIDList(uint16 numOfItems, int16* csidlist) -{ - int i; - uTable* utbl; - - /* This function should be called once only */ - XP_ASSERT(unicodeCSIDList == NULL); - XP_ASSERT(unicodeCharsetNameList == NULL); - - unicodeCSIDList = XP_ALLOC(sizeof(int16) * numOfItems); - /* needs to handle no memory */ - XP_ASSERT(unicodeCSIDList != NULL); - - unicodeCharsetNameList = XP_ALLOC(sizeof(unsigned char*) * numOfItems); - /* needs to handle no memory*/ - XP_ASSERT(unicodeCharsetNameList != NULL); - - numOfUnicodeList = numOfItems; - InitUCS2Table(); - - AddAndInitAllRows(); - /* Add the first table */ - for(i = 0 ; i < numOfItems; i++) - { - unicodeCSIDList[i] = csidlist[i]; - unicodeCharsetNameList[i]= INTL_CsidToCharsetNamePt(csidlist[i]); - if( (csidlist[i] != CS_UTF8 ) && - ((utbl = LoadFromUCS2Table(csidlist[i])) != NULL)) - { - uMapIterate(utbl,CheckAndAddEntry, csidlist[i]); - UnloadFromUCS2Table(csidlist[i],utbl); - - } - } - FreeUnusedRows(); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -typedef struct UnicodeConverterPriv UnicodeConverterPriv; - -typedef UnicodeConverterPriv* INTL_UnicodeToStrIteratorPriv; -struct UnicodeConverterPriv -{ - INTL_Unicode *ustr; - uint32 ustrlen; -}; - - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -/* Pricate Function Declartion */ -PRIVATE -XP_Bool -UnicodeToStrWithFallback_p( - uint16 ucs2, - unsigned char *out, - uint32 outbuflen, - uint32* outlen, - uint16 *outcsid -); -PRIVATE -XP_Bool -UnicodeToStrFirst_p( - uint16 ucs2, - unsigned char *out, - uint32 outbuflen, - uint32* outlen, - uint16 *outcsid -); -PRIVATE -XP_Bool -UnicodeToStrNext_p( - uint16 ucs2, - unsigned char *out, - uint32 outbuflen, - uint32* outlen, - uint16 lastcsid -); - - - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -/* the return of FLASE of this funciton only mean one thing - the outbuf - is not enough for this conversion */ -PRIVATE -XP_Bool -UnicodeToStrWithFallback_p( - uint16 ucs2, - unsigned char *out, - uint32 outbuflen, - uint32* outlen, - uint16 *outcsid) -{ - if(! UCS2_To_Other(ucs2, out, outbuflen, outlen, (int16*)outcsid)) - { - if(outbuflen > 2) - { -#ifdef XP_MAC - *outcsid = CS_MAC_ROMAN; -#else - *outcsid = CS_LATIN1; -#endif - out[0]= '?'; - *outlen =1; - return TRUE; - } - else - return FALSE; - } - return TRUE; -} - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE -XP_Bool -UnicodeToStrFirst_p( - uint16 ucs2, - unsigned char *out, - uint32 outbuflen, - uint32* outlen, - uint16 *outcsid) -{ - return UnicodeToStrWithFallback_p(ucs2,out,outbuflen,outlen,outcsid); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE -XP_Bool -UnicodeToStrNext_p( - uint16 ucs2, - unsigned char *out, - uint32 outbuflen, - uint32* outlen, - uint16 lastcsid) -{ - uint16 thiscsid; - XP_Bool retval = - UnicodeToStrWithFallback_p(ucs2,out,outbuflen,outlen,&thiscsid); - return (retval && (thiscsid == lastcsid)); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ - -PUBLIC INTL_UnicodeToStrIterator -INTL_UnicodeToStrIteratorCreate( - INTL_Unicode* ustr, - uint32 ustrlen, - INTL_Encoding_ID *encoding, - unsigned char* dest, - uint32 destbuflen -) -{ - UnicodeConverterPriv* priv=0; - priv=XP_ALLOC(sizeof(UnicodeConverterPriv)); - if(priv) - { - priv->ustrlen = ustrlen; - priv->ustr = ustr; - (void)INTL_UnicodeToStrIterate((INTL_UnicodeToStrIterator)priv, - encoding, dest, destbuflen); - } - else - { - *encoding = 0; - dest[0] = '\0'; - } - return (INTL_UnicodeToStrIterator)priv; -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ - -PUBLIC int INTL_UnicodeToStrIterate( - INTL_UnicodeToStrIterator iterator, - INTL_Encoding_ID *encoding, - unsigned char* dest, - uint32 destbuflen -) -{ - unsigned char* orig = dest; - UnicodeConverterPriv* priv = (UnicodeConverterPriv*)iterator; - if(destbuflen < 2) /* we want to make sure there at least two byte in the buffer */ - return 0; /* first one for the first char, second one for the NULL */ - destbuflen -= 1; /* resever one byte for NULL terminator */ - if((priv == NULL) || ((priv->ustrlen) == 0)) - { - *encoding = 0; - dest[0]='\0'; - return 0; - } - else - { - uint32 len = 0; - if(UnicodeToStrFirst_p(*(priv->ustr), - dest,destbuflen,&len,encoding)) - { - do{ - dest += len; - destbuflen -= len; - priv->ustr += 1; - priv->ustrlen -= 1 ; - } while( (destbuflen > 0) && - ((priv->ustrlen > 0)) && - UnicodeToStrNext_p(*(priv->ustr), dest, destbuflen, - &len, *encoding)); - } - dest[0] = '\0'; - return (orig != dest); - } -} - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PUBLIC void -INTL_UnicodeToStrIteratorDestroy( - INTL_UnicodeToStrIterator iterator -) -{ - UnicodeConverterPriv* priv = (UnicodeConverterPriv*)iterator; - if(priv) - XP_FREE(priv); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PUBLIC uint32 INTL_UnicodeLen(INTL_Unicode *ustr) -{ - uint32 i; - for(i=0;*ustr++;i++) - ; - return i; -} - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PUBLIC uint32 INTL_UnicodeToStrLen( - INTL_Encoding_ID encoding, - INTL_Unicode* ustr, - uint32 ustrlen -) -{ - /* for now, put a dump algorithm to caculate the length */ - return ustrlen * ((encoding & MULTIBYTE) ? 4 : 1) + 1; -} - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE -int -LoadUCS2TableSet(uint16 csid, uTableSet* tableset,int from) -{ - UnicodeTableSet* set; - int i; - XP_ASSERT( (CS_UNKNOWN != csid) && (CS_DEFAULT != csid)); - for(i=0;i<MAXINTERCSID;i++) - { - tableset->range[i].intercsid=CS_DEFAULT; - tableset->tables[i]=NULL; - tableset->shift[i] = NULL; - tableset->range[i].min = 0xff; - tableset->range[i].max = 0x00; - } - set = GetUnicodeTableSet(csid); - /* If the conversion is a combination of several csid conversion, We try */ - /* to load all of them now. */ - /* Otherwise, we simply load the one for the csid */ - if(set == NULL) - { - tableset->range[0].intercsid=csid; - if(from) - tableset->tables[0]=LoadFromUCS2Table(csid); - else - tableset->tables[0]=LoadToUCS2Table(csid); - tableset->shift[0] = GetShiftTableFromCsid(csid); - tableset->range[0].min = 0x00; - tableset->range[0].max = 0xff; - return 1; - } - else - { - for(i=0;((i<MAXINTERCSID) && (set->range[i].intercsid != CS_DEFAULT));i++) - { - tableset->range[i].intercsid=set->range[i].intercsid; - tableset->range[i].min = set->range[i].min; - tableset->range[i].max = set->range[i].max; - if(from) - tableset->tables[i]=LoadFromUCS2Table(set->range[i].intercsid); - else - tableset->tables[i]=LoadToUCS2Table(set->range[i].intercsid); - tableset->shift[i] = GetShiftTableFromCsid(set->range[i].intercsid); - XP_ASSERT(tableset->shift[i]); - XP_ASSERT(tableset->tables[i]); - } - return i; - } -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PRIVATE -void -UnloadUCS2TableSet(uTableSet *tableset,int from) -{ - int i; - if(tableset == NULL) - return; - for(i=0;i<MAXINTERCSID;i++) - { - if((tableset->range[i].intercsid != CS_DEFAULT) && (tableset->tables[i] != NULL)) - { - if(from) - UnloadFromUCS2Table(tableset->range[i].intercsid, tableset->tables[i]); - else - UnloadToUCS2Table(tableset->range[i].intercsid, tableset->tables[i]); - } - tableset->range[i].intercsid=CS_DEFAULT; - tableset->tables[i]=NULL; - tableset->shift[i] = NULL; - } -} - - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -/* - * utf8_to_local_encoding - UTF8 to Locally Encoded segment - * - * Convert a utf8 string to a Locally Encoded string. - * Convert as characters until the encoding changes or - * input/output space runs out. - * - * The segment is NOT NULL TERMINATED - * - * inputs: utf8 string & length - * buffer (pre-allocated) to hold Locally Encoded string - * pointer to return encoding csid - * pointer to return strlen of Encoded string - * - * output: values written to Locally Encoded string buffer - * encoding csid set: - * >0 if successful - * -1 if not unicode - * -2 if no local encoding - * length of utf8 string converted returned - * strlen of Locally Encoded string - * - */ -PUBLIC int -utf8_to_local_encoding(const unsigned char *utf8p, const int utf8len, - unsigned char *LE_string, int LE_string_len, - int *LE_written_len, int16 *LE_string_csid) -{ - int parsed_len = 0; - int written_len = 0; - int16 i, utf8_char_len; - uint16 ucs2_char; - int16 seg_encoding; - int16 out_char_encoding; - uint32 out_char_len; - unsigned char tmpbuf[10]; - XP_Bool result; - - /* - * get segment encoding (encoding of first character) - */ - utf8_char_len = utf8_to_ucs2_char(utf8p, (int16)utf8len, &ucs2_char); - if (utf8_char_len == -1) { - /* its not unicode/utf8 but try to convert */ - /* it anyway so the user can see something */ - seg_encoding = -1; - } - else if (utf8_char_len == -2) /* not enough input characters */ - return 0; - else { - result = UCS2_To_Other(ucs2_char, tmpbuf, 10, - &out_char_len, &seg_encoding); - if (result == FALSE) /* failed to convert */ - seg_encoding = -2; /* no local encoding */ - } - - /* - * loop converting the string - */ - while (1) { - /* - * convert utf8 to UCS2 - */ - utf8_char_len = utf8_to_ucs2_char(utf8p+parsed_len, (int16)(utf8len-parsed_len), - &ucs2_char); - if (utf8_char_len == -1) { /* not utf8 */ - utf8_char_len = 1; - out_char_encoding = -1; - tmpbuf[0] = *(utf8p+parsed_len); - out_char_len = 1; - } - else if (utf8_char_len == -2) /* no input/output space */ - break; - else { - /* - * convert UCS2 to local encoding - */ - result = UCS2_To_Other(ucs2_char, tmpbuf, (uint16)10, - &out_char_len, &out_char_encoding); - if (result == FALSE) { /* failed to convert */ - out_char_encoding = -2; /* no local encoding */ - tmpbuf[0] = '?'; /* place holder */ - out_char_len = 1; - } - } - - /* stop if not the same encoding */ - if (out_char_encoding != seg_encoding) - break; - - /* stop if out of space for output characters */ - if ((written_len+out_char_len) >= LE_string_len-1) - break; - - /* - * add this character to the segment - */ - for (i=0; i<out_char_len; i++) { - LE_string[written_len+i] = tmpbuf[i]; - } - written_len += out_char_len; - parsed_len += utf8_char_len; - } - - /* return encoding */ - *LE_string_csid = seg_encoding; - LE_string[written_len] = '\0'; - *LE_written_len = written_len; - /* return # of utf8 bytes parsed */ - return parsed_len; -} - - - - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PUBLIC void INTL_UnicodeToStr( - INTL_Encoding_ID encoding, - INTL_Unicode* ustr, - uint32 ustrlen, - unsigned char* dest, - uint32 destbuflen -) -{ -#define INVALID_ENCODING_ID -999 - - uint16 u; - uint16 med; - uint32 cur; - static uint16 num; - static uTableSet tableset; - static INTL_Encoding_ID lastEncoding = (INTL_Encoding_ID)INVALID_ENCODING_ID; - XP_ASSERT( (CS_UNKNOWN != encoding) && (CS_DEFAULT != encoding)); - - if (encoding != lastEncoding) - { - /* Unload all the table we need */ - if (lastEncoding != (INTL_Encoding_ID ) INVALID_ENCODING_ID) - UnloadUCS2TableSet(&tableset,TRUE); - - /* load all the table we need */ - num = LoadUCS2TableSet(encoding, &tableset,TRUE); - - lastEncoding = encoding; - } - - /* For every character */ - for(cur=0; cur < ustrlen ;cur++) - { - int i; - u = (*ustr++); -#ifdef XP_MAC - if(u == 0x000a) - u = 0x000d; -#endif - /* Loop to every table it need to convert */ - for(i=0;i<num;i++) - { - if((tableset.tables[i] != NULL) && - (uMapCode(tableset.tables[i],u, &med))) - break; - } - if(i!=num) - { - uint32 outlen; - XP_Bool ret; - /* MAP one, gen it */ - ret = uGenerate(tableset.shift[i], - (int32*)0, - med, - dest, - destbuflen, - &outlen); - - XP_ASSERT(ret); - - dest+=outlen; - destbuflen += outlen; - } - else - { - /* Ok! right before we fall back. We take care C0 area here */ - if(u <= 0x0020) - { - /* cannot map one, gen the fallback */ - *dest++ = (unsigned char)u; - destbuflen--; - } - else - { - XP_ASSERT(destbuflen > 1); - - /* cannot map one, gen the fallback */ - *dest++ = '?'; - destbuflen--; - } - } - } - XP_ASSERT(destbuflen > 0); - *dest = '\0'; /* NULL terminate it */ -} -/* - intl_check_unicode_question - Used by INTL_UnicodeToEncodingStr -*/ -PRIVATE uint32 intl_check_unicode_question( - INTL_Unicode* ustr, - uint32 ustrlen -) -{ - INTL_Unicode* p; - uint32 count = 0; - for(p=ustr; ustrlen > 0 ;ustrlen--, p++) - if(*p == 0x003F) - count++; - return count; -} -/* - intl_check_unknown_unicode - Used by INTL_UnicodeToEncodingStr -*/ -PRIVATE uint32 intl_check_unknown_unicode(unsigned char* buf) -{ - unsigned char* p; - uint32 count = 0; - for(p=buf; *p != '\0'; p++) - if(*p == '?') - count++; - return count; -} -/* - INTL_UnicodeToEncodingStr - This is an Trail and Error function which may wast a lot of performance in "THE WORST CASE" - However, it do it's best in the best case and average case. - IMPORTANT ASSUMPTION: The unknown Unicode is fallback to '?' -*/ -PUBLIC INTL_Encoding_ID INTL_UnicodeToEncodingStr( - INTL_Unicode* ustr, - uint32 ustrlen, - unsigned char* dest, - uint32 destbuflen -) -{ - INTL_Encoding_ID latin1_encoding, encoding, min_error_encoding, last_convert_encoding; - uint32 min, question; - int16 *encodingList; - int16 itemCount; - int16 idx; - -#ifdef XP_MAC - encoding = latin1_encoding = CS_MAC_ROMAN; -#else - encoding = latin1_encoding = CS_LATIN1; -#endif - /* Ok, let's try them with Latin 1 first. I believe this is for most of the case */ - INTL_UnicodeToStr(encoding,ustr,ustrlen,dest,destbuflen); - /* Try to find the '?' in the converted string */ - min = intl_check_unknown_unicode(dest); - if(min == 0) /* No '?' in the converted string, it could be convert to Latin 1 */ - return encoding; - /* The origional Unicode may contaion some '?' in unicode. Let's count it */ - question = intl_check_unicode_question(ustr,ustrlen ); - /* The number of '?' in the converted string match the number in unicode */ - if(min == question) - return encoding; - - last_convert_encoding = min_error_encoding = encoding; - - encodingList = INTL_GetUnicodeCSIDList(&itemCount); - for(idx = 0; idx < itemCount ; idx++) - { - encoding = encodingList[idx]; - /* Let's ignore the following three csid - the latin1 (we already try it - Symbol an Dingbat - */ - if((encoding != latin1_encoding) && - (encoding != CS_SYMBOL) && - (encoding != CS_DINGBATS)) - { - uint32 unknowInThis; - last_convert_encoding = encoding; - INTL_UnicodeToStr(encoding,ustr,ustrlen,dest,destbuflen); - unknowInThis = intl_check_unknown_unicode(dest); - /* The number of '?' in the converted string match the number in unicode */ - if(unknowInThis == question) /* what a perfect candidcate */ - return encoding; - /* The number of '?' is less then the previous smallest */ - if(unknowInThis < min) - { /* let's remember the encoding and the number of '?' */ - min = unknowInThis; - min_error_encoding = encoding; - } - } - } - /* The min_error_encoding is not the last one we try to convert to. - We need to convert it again */ - if(min_error_encoding != last_convert_encoding) - INTL_UnicodeToStr(min_error_encoding,ustr,ustrlen,dest,destbuflen); - return min_error_encoding; -} - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PUBLIC uint32 INTL_StrToUnicodeLen( - INTL_Encoding_ID encoding, - unsigned char* src -) -{ - XP_ASSERT( (CS_UNKNOWN != encoding) && (CS_DEFAULT != encoding)); - /* for now, put a dump algorithm to caculate the length */ - return INTL_TextToUnicodeLen(encoding, src, XP_STRLEN((char*)src)); -} -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -PUBLIC uint32 INTL_StrToUnicode( - INTL_Encoding_ID encoding, - unsigned char* src, - INTL_Unicode* ustr, - uint32 ubuflen -) -{ - uint32 len = XP_STRLEN((char*)src); - XP_ASSERT( (CS_UNKNOWN != encoding) && (CS_DEFAULT != encoding)); - return INTL_TextToUnicode(encoding,src,len,ustr,ubuflen); -} -PUBLIC uint32 INTL_TextToUnicodeLen( - INTL_Encoding_ID encoding, - unsigned char* src, - uint32 srclen -) -{ - XP_ASSERT( (CS_UNKNOWN != encoding) && (CS_DEFAULT != encoding)); - /* for now, put a dump algorithm to caculate the length */ - return srclen + 1; -} -PUBLIC uint32 INTL_TextToUnicode( - INTL_Encoding_ID encoding, - unsigned char* src, - uint32 srclen, - INTL_Unicode* ustr, - uint32 ubuflen -) -{ - /* - * Use the Netscape conversion tables - */ - uint32 validlen,scanlen; - uint16 num, med; - uTableSet tableset; - XP_ASSERT( (CS_UNKNOWN != encoding) && (CS_DEFAULT != encoding)); - num = LoadUCS2TableSet(encoding, &tableset,FALSE); - for(validlen=0; ((srclen > 0) && (ubuflen > 1)); - srclen -= scanlen, src += scanlen, ustr++, ubuflen--,validlen++) - { - uint16 i; - scanlen = 0; - if(*src < 0x20) - { - *ustr = (INTL_Unicode)(*src); - scanlen = 1; - continue; - } - for(i=0;i<num;i++) - { - if((tableset.tables[i] != NULL) && - (tableset.range[i].min <= src[0]) && - (src[0] <= tableset.range[i].max) && - (uScan(tableset.shift[i],(int32*) 0,src,&med,srclen,&scanlen))) - { - uMapCode(tableset.tables[i],med, ustr); - if(*ustr != NOMAPPING) - break; - } - } - if(i==num) - { -#ifdef STRICTUNICODETEST - XP_ASSERT(i!=num); -#endif - if(scanlen == 0) - scanlen = 1; - *ustr= NOMAPPING; - } - } - *ustr = (INTL_Unicode) 0; - /* Unload all the table we need */ - UnloadUCS2TableSet(&tableset,FALSE); - return validlen; -} diff --git a/mozilla/lib/libi18n/ugen.c b/mozilla/lib/libi18n/ugen.c deleted file mode 100644 index e6dc9013264..00000000000 --- a/mozilla/lib/libi18n/ugen.c +++ /dev/null @@ -1,382 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#include "intlpriv.h" -#include "ugen.h" -#include "xp.h" -/*================================================================================= - -=================================================================================*/ -typedef XP_Bool (*uSubGeneratorFunc) (uint16 in, unsigned char* out); -/*================================================================================= - -=================================================================================*/ - -typedef XP_Bool (*uGeneratorFunc) ( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -); - -MODULE_PRIVATE XP_Bool uGenerate( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -); - -#define uSubGennerator(sub,in,out) (* m_subgenerator[sub])((in),(out)) - -PRIVATE XP_Bool uCheckAndGenAlways1Byte( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -); -PRIVATE XP_Bool uCheckAndGenAlways2Byte( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -); -PRIVATE XP_Bool uCheckAndGenAlways2ByteShiftGR( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -); -PRIVATE XP_Bool uCheckAndGenByTable( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -); -PRIVATE XP_Bool uCheckAndGen2ByteGRPrefix8F( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -); -PRIVATE XP_Bool uCheckAndGen2ByteGRPrefix8EA2( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -); - - -PRIVATE XP_Bool uGenAlways2Byte( - uint16 in, - unsigned char* out -); -PRIVATE XP_Bool uGenAlways2ByteShiftGR( - uint16 in, - unsigned char* out -); -PRIVATE XP_Bool uGenAlways1Byte( - uint16 in, - unsigned char* out -); -PRIVATE XP_Bool uGenAlways1BytePrefix8E( - uint16 in, - unsigned char* out -); -PRIVATE XP_Bool uGenAlways2ByteUTF8( - uint16 in, - unsigned char* out -); -PRIVATE XP_Bool uGenAlways3ByteUTF8( - uint16 in, - unsigned char* out -); -/*================================================================================= - -=================================================================================*/ -PRIVATE uGeneratorFunc m_generator[uNumOfCharsetType] = -{ - uCheckAndGenAlways1Byte, - uCheckAndGenAlways2Byte, - uCheckAndGenByTable, - uCheckAndGenAlways2ByteShiftGR, - uCheckAndGen2ByteGRPrefix8F, - uCheckAndGen2ByteGRPrefix8EA2, -}; - -/*================================================================================= - -=================================================================================*/ - -PRIVATE uSubGeneratorFunc m_subgenerator[uNumOfCharType] = -{ - uGenAlways1Byte, - uGenAlways2Byte, - uGenAlways2ByteShiftGR, - uGenAlways1BytePrefix8E, - uGenAlways2ByteUTF8, - uGenAlways3ByteUTF8 - -}; -/*================================================================================= - -=================================================================================*/ -MODULE_PRIVATE XP_Bool uGenerate( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -) -{ - return (* m_generator[shift->classID]) (shift,state,in,out,outbuflen,outlen); -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uGenAlways1Byte( - uint16 in, - unsigned char* out -) -{ - out[0] = (unsigned char)in; - return TRUE; -} - -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uGenAlways2Byte( - uint16 in, - unsigned char* out -) -{ - out[0] = (unsigned char)((in >> 8) & 0xff); - out[1] = (unsigned char)(in & 0xff); - return TRUE; -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uGenAlways2ByteShiftGR( - uint16 in, - unsigned char* out -) -{ - out[0] = (unsigned char)(((in >> 8) & 0xff) | 0x80); - out[1] = (unsigned char)((in & 0xff) | 0x80); - return TRUE; -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uGenAlways1BytePrefix8E( - uint16 in, - unsigned char* out -) -{ - out[0] = 0x8E; - out[1] = (unsigned char)(in & 0xff); - return TRUE; -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uGenAlways2ByteUTF8( - uint16 in, - unsigned char* out -) -{ - out[0] = (unsigned char)(0xC0 | (( in >> 6 ) & 0x1F)); - out[1] = (unsigned char)(0x80 | (( in ) & 0x3F)); - return TRUE; -} - -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uGenAlways3ByteUTF8( - uint16 in, - unsigned char* out -) -{ - out[0] = (unsigned char)(0xE0 | (( in >> 12 ) & 0x0F)); - out[1] = (unsigned char)(0x80 | (( in >> 6 ) & 0x3F)); - out[2] = (unsigned char)(0x80 | (( in ) & 0x3F)); - return TRUE; -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndGenAlways1Byte( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -) -{ - /* Don't check inlen. The caller should ensure it is larger than 0 */ - *outlen = 1; - out[0] = in & 0xff; - return TRUE; -} - -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndGenAlways2Byte( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -) -{ - if(outbuflen < 2) - return FALSE; - else - { - *outlen = 2; - out[0] = ((in >> 8 ) & 0xff); - out[1] = in & 0xff; - return TRUE; - } -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndGenAlways2ByteShiftGR( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -) -{ - if(outbuflen < 2) - return FALSE; - else - { - *outlen = 2; - out[0] = ((in >> 8 ) & 0xff) | 0x80; - out[1] = (in & 0xff) | 0x80; - return TRUE; - } -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndGenByTable( - uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -) -{ - int16 i; - uShiftCell* cell = &(shift->shiftcell[0]); - int16 itemnum = shift->numOfItem; - unsigned char inH, inL; - inH = (in >> 8) & 0xff; - inL = (in & 0xff ); - for(i=0;i<itemnum;i++) - { - if( ( inL >= cell[i].shiftout.MinLB) && - ( inL <= cell[i].shiftout.MaxLB) && - ( inH >= cell[i].shiftout.MinHB) && - ( inH <= cell[i].shiftout.MaxHB) ) - { - if(outbuflen < cell[i].reserveLen) - return FALSE; - else - { - *outlen = cell[i].reserveLen; - return (uSubGennerator(cell[i].classID,in,out)); - } - } - } - return FALSE; -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndGen2ByteGRPrefix8F( uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -) -{ - if(outbuflen < 3) - return FALSE; - else - { - *outlen = 3; - out[0] = 0x8F; - out[1] = ((in >> 8 ) & 0xff) | 0x80; - out[2] = (in & 0xff) | 0x80; - return TRUE; - } -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndGen2ByteGRPrefix8EA2( uShiftTable *shift, - int32* state, - uint16 in, - unsigned char* out, - uint32 outbuflen, - uint32* outlen -) -{ - if(outbuflen < 4) - return FALSE; - else - { - *outlen = 4; - out[0] = 0x8E; - out[1] = 0xA2; - out[2] = ((in >> 8 ) & 0xff) | 0x80; - out[3] = (in & 0xff) | 0x80; - return TRUE; - } -} - - diff --git a/mozilla/lib/libi18n/ugen.h b/mozilla/lib/libi18n/ugen.h deleted file mode 100644 index 9fe2c75cd86..00000000000 --- a/mozilla/lib/libi18n/ugen.h +++ /dev/null @@ -1,103 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ - -#ifndef __UGEN__ -#define __UGEN__ - -#include "xp_core.h" - - -/* ================================================= - uShiftTable -================================================= */ -/*================================================================================= - -=================================================================================*/ - -enum { - u1ByteCharset = 0, - u2BytesCharset, - uMultibytesCharset, - u2BytesGRCharset, - u2BytesGRPrefix8FCharset, - u2BytesGRPrefix8EA2Charset, - uNumOfCharsetType -}; -/*================================================================================= - -=================================================================================*/ - -enum { - u1ByteChar = 0, - u2BytesChar, - u2BytesGRChar, - u1BytePrefix8EChar, /* Used by JIS0201 GR in EUC_JP */ - u2BytesUTF8, /* Used by UTF8 */ - u3BytesUTF8, /* Used by UTF8 */ - uNumOfCharType -}; -/*================================================================================= - -=================================================================================*/ -typedef struct { - unsigned char MinHB; - unsigned char MinLB; - unsigned char MaxHB; - unsigned char MaxLB; -} uShiftOut; -/*================================================================================= - -=================================================================================*/ -typedef struct { - unsigned char Min; - unsigned char Max; -} uShiftIn; -/*================================================================================= - -=================================================================================*/ -typedef struct { - unsigned char classID; - unsigned char reserveLen; - uShiftIn shiftin; - uShiftOut shiftout; -} uShiftCell; -/*================================================================================= - -=================================================================================*/ -typedef struct { - int16 numOfItem; - int16 classID; - uShiftCell shiftcell[1]; -} uShiftTable; -/*================================================================================= - -=================================================================================*/ - -#define MAXINTERCSID 4 -typedef struct StrRangeMap StrRangeMap; -struct StrRangeMap { - uint16 intercsid; - unsigned char min; - unsigned char max; -}; -typedef struct UnicodeTableSet UnicodeTableSet; -struct UnicodeTableSet { - uint16 maincsid; - StrRangeMap range[MAXINTERCSID]; -}; -#endif diff --git a/mozilla/lib/libi18n/ugendata.c b/mozilla/lib/libi18n/ugendata.c deleted file mode 100644 index e365b1398cf..00000000000 --- a/mozilla/lib/libi18n/ugendata.c +++ /dev/null @@ -1,629 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#include "intlpriv.h" -#include "ugen.h" -#include "unicpriv.h" -#include "prtypes.h" /* For IS_LITTLE_ENDIAN */ - -#ifdef XP_WIN -/* We try to move to UNICODE 2.0 BASE - The FULL_KOREAN_TABLE is only defined in Window platform when we use - UNICODE 2.0 table . - We do not defined FULL_KOREAN_TABLE if we use UNICODE 1.1 BASE - We do not defined FULL_KOREAN_TABLE for Mac and UNIX since the 2.0 Korean - Table for Mac and UNIX is only the part that these platform can handle - (So it is still a GL table ) -*/ - - -#define FULL_KOREAN_TABLE 1 - -#endif - -/* - GenTableData.c - -*/ -/*========================================================================================= - Generator Table -=========================================================================================*/ -#define PACK(h,l) (int16)(( (h) << 8) | (l)) - -#if defined(IS_LITTLE_ENDIAN) -#define ShiftCell(sub,len,min,max,minh,minl,maxh,maxl) \ - PACK(len,sub), PACK(max,min), PACK(minl,minh), PACK(maxl,maxh) -#else -#define ShiftCell(sub,len,min,max,minh,minl,maxh,maxl) \ - PACK(sub,len), PACK(min, max), PACK(minh,minl), PACK(maxh,maxl) -#endif -/*----------------------------------------------------------------------------------- - ShiftTable for single byte encoding ------------------------------------------------------------------------------------*/ -PRIVATE int16 sbShiftT[] = { - 0, u1ByteCharset, - ShiftCell(0,0,0,0,0,0,0,0) -}; -/*----------------------------------------------------------------------------------- - ShiftTable for two byte encoding ------------------------------------------------------------------------------------*/ -PRIVATE int16 tbShiftT[] = { - 0, u2BytesCharset, - ShiftCell(0,0,0,0,0,0,0,0) -}; -/*----------------------------------------------------------------------------------- - ShiftTable for two byte encoding ------------------------------------------------------------------------------------*/ -PRIVATE int16 tbGRShiftT[] = { - 0, u2BytesGRCharset, - ShiftCell(0,0,0,0,0,0,0,0) -}; -/*----------------------------------------------------------------------------------- - ShiftTable for KSC encoding ------------------------------------------------------------------------------------*/ -#ifdef FULL_KOREAN_TABLE -#define tbKSCShiftT tbShiftT -#else -#define tbKSCShiftT tbGRShiftT -#endif -/*----------------------------------------------------------------------------------- - ShiftTable for shift jis encoding ------------------------------------------------------------------------------------*/ -PRIVATE int16 sjisShiftT[] = { - 4, uMultibytesCharset, - ShiftCell(u1ByteChar, 1, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F), - ShiftCell(u1ByteChar, 1, 0xA1, 0xDF, 0x00, 0xA1, 0x00, 0xDF), - ShiftCell(u2BytesChar, 2, 0x81, 0x9F, 0x81, 0x40, 0x9F, 0xFC), - ShiftCell(u2BytesChar, 2, 0xE0, 0xFC, 0xE0, 0x40, 0xFC, 0xFC) -}; -/*----------------------------------------------------------------------------------- - ShiftTable for t61 encoding ------------------------------------------------------------------------------------*/ -PRIVATE int16 t61ShiftT[] = { - 3, uMultibytesCharset, - ShiftCell(u1ByteChar, 1, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF), - ShiftCell(u1ByteChar, 1, 0xD0, 0xFF, 0x00, 0xD0, 0x00, 0xFF), - ShiftCell(u2BytesChar, 2, 0xC0, 0xCF, 0xC0, 0x41, 0xCF, 0x7A) -}; -/*----------------------------------------------------------------------------------- - ShiftTable for JIS0212 in EUCJP encoding ------------------------------------------------------------------------------------*/ -PRIVATE int16 x0212ShiftT[] = { - 0, u2BytesGRPrefix8FCharset, - ShiftCell(0,0,0,0,0,0,0,0) -}; -/*----------------------------------------------------------------------------------- - ShiftTable for CNS11643-2 in EUC_TW encoding ------------------------------------------------------------------------------------*/ -PRIVATE int16 cns2ShiftT[] = { - 0, u2BytesGRPrefix8EA2Charset, - ShiftCell(0,0,0,0,0,0,0,0) -}; -/*----------------------------------------------------------------------------------- - ShiftTable for big5 encoding ------------------------------------------------------------------------------------*/ -PRIVATE int16 big5ShiftT[] = { - 2, uMultibytesCharset, - ShiftCell(u1ByteChar, 1, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F), - ShiftCell(u2BytesChar, 2, 0xA1, 0xFE, 0xA1, 0x40, 0xFE, 0xFE) -}; -/*----------------------------------------------------------------------------------- - ShiftTable for jis0201 for euc_jp encoding ------------------------------------------------------------------------------------*/ -PRIVATE int16 x0201ShiftT[] = { - 2, uMultibytesCharset, - ShiftCell(u1ByteChar, 1, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F), - ShiftCell(u1BytePrefix8EChar, 2, 0x8E, 0x8E, 0x00, 0xA1, 0x00, 0xDF) -}; -/*----------------------------------------------------------------------------------- - ShiftTable for utf8 ------------------------------------------------------------------------------------*/ -PRIVATE int16 utf8ShiftT[] = { - 3, uMultibytesCharset, - ShiftCell(u1ByteChar, 1, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F), - ShiftCell(u2BytesUTF8, 2, 0xC0, 0xDF, 0x00, 0x00, 0x07, 0xFF), - ShiftCell(u3BytesUTF8, 3, 0xE0, 0xEF, 0x08, 0x00, 0xFF, 0xFF) -}; -/*----------------------------------------------------------------------------------- - Array of ShiftTable Pointer ------------------------------------------------------------------------------------*/ -/* This table is used for npc and unicode to unknow encoding conversion */ -/* for those font csid, it do not shift GR/GL */ -PRIVATE int16* npcShiftTable[MAXCSIDINTBL] = -{ -/* 0x00-0x07 */ -sbShiftT, -sbShiftT, -sbShiftT, -0, -sjisShiftT, -0, -sbShiftT, -big5ShiftT, - -/* 0x08-0x0F */ -tbGRShiftT, -0, -sbShiftT, -sbShiftT, -tbKSCShiftT, -0, -sbShiftT, -sbShiftT, - -/* 0x10-0x17 */ -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, - -/* 0x18-0x1F */ -tbShiftT, -tbShiftT, -tbShiftT, -sbShiftT, -tbShiftT, -sbShiftT, -tbShiftT, -tbShiftT, - -/* 0x20-0x27 */ -0, -0, -0, -0, -0, -big5ShiftT, -0, -sbShiftT, - -/* 0x28-0x2F */ -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -tbShiftT, - -/* 0x30-0x37 */ -tbShiftT, -tbShiftT, -tbShiftT, -0, -0, -sbShiftT, -sbShiftT, -sbShiftT, - -/* 0x38-0x3F */ -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, - -/* 0x40-0x47 */ -0, -0, -tbShiftT, -tbShiftT, -tbShiftT, -tbShiftT, -tbShiftT, -tbShiftT, - -/* 0x48-0x4F */ -tbShiftT, -tbShiftT, -tbShiftT, -tbShiftT, -tbShiftT, -tbShiftT, -tbShiftT, -tbShiftT, - -/* 0x50-0x57 */ -tbShiftT, -tbShiftT, -tbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, - -/* 0x58-0x5F */ -sbShiftT, -sbShiftT, -sbShiftT, -tbShiftT, -tbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, - -/* 0x60-0x67 */ -t61ShiftT, -0, -0, -0, -0, -0, -0, -0, - -/* 0x68-0x6F */ -0, -0, -0, -0, -0, -0, -0, -0, - -/* 0x70-0x77 */ -0, -0, -0, -0, -0, -0, -0, -0, - -/* 0x78-0x7F */ -0, -0, -0, -0, -0, -0, -sbShiftT, -0, -}; - -/* This table is used for unicode to single encoding conversion */ -/* for those font csid, it always shift GR/GL */ -PRIVATE int16* strShiftTable[MAXCSIDINTBL] = -{ -/* 0x00-0x07 */ -sbShiftT, -sbShiftT, -sbShiftT, -0, -sjisShiftT, -0, -sbShiftT, -big5ShiftT, - -/* 0x08-0x0F */ -tbGRShiftT, -0, -sbShiftT, -sbShiftT, -tbKSCShiftT, -0, -sbShiftT, -sbShiftT, - -/* 0x10-0x17 */ -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, - -/* 0x18-0x1F */ -tbGRShiftT, -cns2ShiftT, -tbGRShiftT, -x0201ShiftT, -tbGRShiftT, -sbShiftT, -x0212ShiftT, -tbGRShiftT, - -/* 0x20-0x27 */ -0, -0, -utf8ShiftT, -0, -0, -big5ShiftT, -0, -sbShiftT, - -/* 0x28-0x2F */ -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -0, - -/* 0x30-0x37 */ -0, -0, -0, -0, -0, -sbShiftT, -sbShiftT, -sbShiftT, - -/* 0x38-0x3F */ -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, - -/* 0x40-0x47 */ -0, -0, -0, -0, -0, -0, -0, -0, - -/* 0x48-0x4F */ -0, -0, -0, -0, -0, -0, -0, -0, - -/* 0x50-0x57 */ -0, -0, -0, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, -sbShiftT, - -/* 0x58-0x5F */ -sbShiftT, -sbShiftT, -sbShiftT, -0, -0, -sbShiftT, -sbShiftT, -sbShiftT, - -/* 0x60-0x67 */ -t61ShiftT, -0, -0, -0, -0, -0, -0, -0, - -/* 0x68-0x6F */ -0, -0, -0, -0, -0, -0, -0, -0, - -/* 0x70-0x77 */ -0, -0, -0, -0, -0, -0, -0, -0, - -/* 0x78-0x7F */ -0, -0, -0, -0, -0, -0, -sbShiftT, -0, -}; - -PRIVATE UnicodeTableSet unicodetableset[] = -{ -#ifdef XP_MAC - { CS_BIG5, { - {CS_BIG5,0x81,0xFC}, - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }}, - { CS_GB_8BIT, { - {CS_GB_8BIT,0xA1,0xFE}, - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }}, - /* We do not change the Mac Korean even we use 2.0 base table */ - /* This is because the Mac table is not the full table */ - /* It is still a GL table */ - { CS_KSC_8BIT, { - {CS_KSC_8BIT,0xA1,0xFE}, - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }}, - { CS_USER_DEFINED_ENCODING, { - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT, 0xFF,0x00}, - {CS_DEFAULT, 0xFF,0x00}, - {CS_DEFAULT, 0xFF,0x00} - }}, - { CS_DEFAULT, { - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }} -#endif -#if defined(XP_WIN) || defined(XP_OS2) - { CS_BIG5, { - {CS_BIG5,0x81,0xFC}, - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }}, - { CS_GB_8BIT, { - {CS_GB_8BIT,0xA1,0xFE}, - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }}, -#ifdef FULL_KOREAN_TABLE - { CS_KSC_8BIT, { - {CS_KSC_8BIT,0x81,0xFE}, /* CAREFUL: it is 0x81 not 0xA1 here */ - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }}, -#else - { CS_KSC_8BIT, { - {CS_KSC_8BIT,0xA1,0xFE}, - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }}, -#endif - { CS_USER_DEFINED_ENCODING, { - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT, 0xFF,0x00}, - {CS_DEFAULT, 0xFF,0x00}, - {CS_DEFAULT, 0xFF,0x00} - }}, - { CS_DEFAULT, { - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }} -#endif -#ifdef XP_UNIX - { CS_EUCJP, { - {CS_JISX0208,0xA1,0xFE}, - {CS_JISX0201,0x20,0x7E}, - {CS_JISX0201,0x8E,0x8E}, - {CS_JISX0212,0x8F,0x8F} - }}, - { CS_BIG5, { - {CS_X_BIG5,0x81,0xFC}, - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }}, - { CS_CNS_8BIT, { - {CS_CNS11643_1,0xA1,0xFE}, - {CS_CNS11643_2,0x8E,0x8E}, - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT,0xFF,0x00} - }}, - { CS_GB_8BIT, { - {CS_GB2312,0xA1,0xFE}, - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }}, - /* We do not change the UNIX Korean even we use 2.0 base table */ - /* This is because the UNIX table is not the full table */ - /* It is still a GL table */ - { CS_KSC_8BIT, { - {CS_KSC5601,0xA1,0xFE}, - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }}, - { CS_USER_DEFINED_ENCODING, { - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT, 0xFF,0x00}, - {CS_DEFAULT, 0xFF,0x00}, - {CS_DEFAULT, 0xFF,0x00} - }}, - { CS_USRDEF2, { - {CS_ASCII,0x00,0x7E}, - {CS_DEFAULT, 0xFF,0x00}, - {CS_DEFAULT, 0xFF,0x00}, - {CS_DEFAULT, 0xFF,0x00} - }}, - { CS_DEFAULT, { - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00}, - {CS_DEFAULT,0xFF,0x00} - }} -#endif - -}; - -MODULE_PRIVATE UnicodeTableSet* GetUnicodeTableSet(uint16 csid) -{ - int i; - for(i=0;unicodetableset[i].maincsid != CS_DEFAULT;i++) - { - if(unicodetableset[i].maincsid == csid) - return &(unicodetableset[i]); - } - return NULL; -} - -/*----------------------------------------------------------------------------------- - Public Function ------------------------------------------------------------------------------------*/ -MODULE_PRIVATE uShiftTable* GetShiftTableFromCsid(uint16 csid) -{ - return (uShiftTable*)(strShiftTable[csid & (MAXCSIDINTBL - 1)]); -} -MODULE_PRIVATE uShiftTable* InfoToShiftTable(unsigned char info) -{ - return (uShiftTable*)(npcShiftTable[info & (MAXCSIDINTBL - 1)]); -} diff --git a/mozilla/lib/libi18n/umap.c b/mozilla/lib/libi18n/umap.c deleted file mode 100644 index 2d204d60430..00000000000 --- a/mozilla/lib/libi18n/umap.c +++ /dev/null @@ -1,237 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#include "intlpriv.h" -#include "unicpriv.h" - -typedef uint16 (* MapFormatFunc)(uint16 in,uTable *uT,uMapCell *cell); -typedef XP_Bool (* HitFormateFunc)(uint16 in,uMapCell *cell); -typedef void (* IterateFormatFunc)(uTable *uT, uMapCell *cell,uMapIterateFunc callback, uint16 context); - -PRIVATE XP_Bool uHitFormate0(uint16 in,uMapCell *cell); -PRIVATE XP_Bool uHitFormate1(uint16 in,uMapCell *cell); -PRIVATE XP_Bool uHitFormate2(uint16 in,uMapCell *cell); -PRIVATE uint16 uMapFormate0(uint16 in,uTable *uT,uMapCell *cell); -PRIVATE uint16 uMapFormate1(uint16 in,uTable *uT,uMapCell *cell); -PRIVATE uint16 uMapFormate2(uint16 in,uTable *uT,uMapCell *cell); -PRIVATE void uIterateFormate0(uTable *uT, uMapCell *cell,uMapIterateFunc callback, uint16 context); -PRIVATE void uIterateFormate1(uTable *uT, uMapCell *cell,uMapIterateFunc callback, uint16 context); -PRIVATE void uIterateFormate2(uTable *uT, uMapCell *cell,uMapIterateFunc callback, uint16 context); -PRIVATE uMapCell *uGetMapCell(uTable *uT, int16 item); -PRIVATE char uGetFormat(uTable *uT, int16 item); - - -/*================================================================================= - -=================================================================================*/ -PRIVATE MapFormatFunc m_map[uNumFormatTag] = -{ - uMapFormate0, - uMapFormate1, - uMapFormate2, -}; -/*================================================================================= - -=================================================================================*/ -PRIVATE IterateFormatFunc m_iterate[uNumFormatTag] = -{ - uIterateFormate0, - uIterateFormate1, - uIterateFormate2, -}; -/*================================================================================= - -=================================================================================*/ -PRIVATE HitFormateFunc m_hit[uNumFormatTag] = -{ - uHitFormate0, - uHitFormate1, - uHitFormate2, -}; - -/* - Need more work -*/ -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uHit(unsigned char format, uint16 in,uMapCell *cell) -{ - return (* m_hit[format])((in),(cell)); -} -/*================================================================================= - -=================================================================================*/ -PRIVATE void uCellIterate(unsigned char format, uTable *uT, uMapCell *cell,uMapIterateFunc callback, uint16 context) -{ - (* m_iterate[format])((uT),(cell),(callback),(context)); -} -/* - Switch to Macro later for performance - -#define uHit(format,in,cell) (* m_hit[format])((in),(cell)) -*/ -/*================================================================================= - -=================================================================================*/ -PRIVATE uint16 uMap(unsigned char format, uint16 in,uTable *uT,uMapCell *cell) -{ - return (* m_map[format])((in),(uT),(cell)); -} -/* - Switch to Macro later for performance - -#define uMap(format,in,cell) (* m_map[format])((in),(cell)) -*/ - -/*================================================================================= - -=================================================================================*/ -/* - Switch to Macro later for performance -*/ -PRIVATE uMapCell *uGetMapCell(uTable *uT, int16 item) -{ - return ((uMapCell *)(((uint16 *)uT) + uT->offsetToMapCellArray) + item) ; -} -/*================================================================================= - -=================================================================================*/ -/* - Switch to Macro later for performance -*/ -PRIVATE char uGetFormat(uTable *uT, int16 item) -{ - return (((((uint16 *)uT) + uT->offsetToFormatArray)[ item >> 2 ] - >> (( item % 4 ) << 2)) & 0x0f); -} -/*================================================================================= - -=================================================================================*/ -MODULE_PRIVATE XP_Bool uMapCode(uTable *uT, uint16 in, uint16* out) -{ - XP_Bool done = FALSE; - uint16 itemOfList = uT->itemOfList; - uint16 i; - *out = NOMAPPING; - for(i=0;i<itemOfList;i++) - { - uMapCell* uCell; - char format = uGetFormat(uT,i); - uCell = uGetMapCell(uT,i); - if(uHit(format, in, uCell)) - { - *out = uMap(format, in, uT,uCell); - done = TRUE; - break; - } - } - return ( done && (*out != NOMAPPING)); -} -/*================================================================================= - -=================================================================================*/ -MODULE_PRIVATE void uMapIterate(uTable *uT, uMapIterateFunc callback, uint16 context) -{ - uint16 itemOfList = uT->itemOfList; - uint16 i; - for(i=0;i<itemOfList;i++) - { - uMapCell* uCell; - char format = uGetFormat(uT,i); - uCell = uGetMapCell(uT,i); - uCellIterate(format, uT ,uCell,callback, context); - } -} - -/* - member function -*/ -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uHitFormate0(uint16 in,uMapCell *cell) -{ - return ( (in >= cell->fmt.format0.srcBegin) && - (in <= cell->fmt.format0.srcEnd) ) ; -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uHitFormate1(uint16 in,uMapCell *cell) -{ - return uHitFormate0(in,cell); -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uHitFormate2(uint16 in,uMapCell *cell) -{ - return (in == cell->fmt.format2.srcBegin); -} -/*================================================================================= - -=================================================================================*/ -PRIVATE uint16 uMapFormate0(uint16 in,uTable *uT,uMapCell *cell) -{ - return ((in - cell->fmt.format0.srcBegin) + cell->fmt.format0.destBegin); -} -/*================================================================================= - -=================================================================================*/ -PRIVATE uint16 uMapFormate1(uint16 in,uTable *uT,uMapCell *cell) -{ - return (*(((uint16 *)uT) + uT->offsetToMappingTable - + cell->fmt.format1.mappingOffset + in - cell->fmt.format1.srcBegin)); -} -/*================================================================================= - -=================================================================================*/ -PRIVATE uint16 uMapFormate2(uint16 in,uTable *uT,uMapCell *cell) -{ - return (cell->fmt.format2.destBegin); -} - -/*================================================================================= - -=================================================================================*/ -PRIVATE void uIterateFormate0(uTable *uT, uMapCell *cell,uMapIterateFunc callback, uint16 context) -{ - uint16 ucs2; - uint16 med; - for(ucs2 = cell->fmt.format0.srcBegin, med = cell->fmt.format0.destBegin; - ucs2 <= cell->fmt.format0.srcEnd ; ucs2++,med++) - (*callback)(ucs2, med, context); -} -/*================================================================================= - -=================================================================================*/ -PRIVATE void uIterateFormate1(uTable *uT, uMapCell *cell,uMapIterateFunc callback, uint16 context) -{ - uint16 ucs2; - uint16 *medpt; - medpt = (((uint16 *)uT) + uT->offsetToMappingTable + cell->fmt.format1.mappingOffset); - for(ucs2 = cell->fmt.format1.srcBegin; ucs2 <= cell->fmt.format1.srcEnd ; ucs2++, medpt++) - (*callback)(ucs2, *medpt, context); -} -/*================================================================================= - -=================================================================================*/ -PRIVATE void uIterateFormate2(uTable *uT, uMapCell *cell,uMapIterateFunc callback, uint16 context) -{ - (*callback)(cell->fmt.format2.srcBegin, cell->fmt.format2.destBegin, context); -} diff --git a/mozilla/lib/libi18n/umap.h b/mozilla/lib/libi18n/umap.h deleted file mode 100644 index 43a3440b526..00000000000 --- a/mozilla/lib/libi18n/umap.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#ifndef __UMAP__ -#define __UMAP__ - -#define NOMAPPING 0xfffd - -/* ================================================= - MapCellArray -================================================= */ - -enum { - uFormat0Tag = 0, - uFormat1Tag, - uFormat2Tag, - uNumFormatTag -}; - -typedef struct { - uint16 srcBegin; /* 2 byte */ - uint16 srcEnd; /* 2 byte */ - uint16 destBegin; /* 2 byte */ -} uFormat0; - -typedef struct { - uint16 srcBegin; /* 2 byte */ - uint16 srcEnd; /* 2 byte */ - uint16 mappingOffset; /* 2 byte */ -} uFormat1; - -typedef struct { - uint16 srcBegin; /* 2 byte */ - uint16 srcEnd; /* 2 byte -waste */ - uint16 destBegin; /* 2 byte */ -} uFormat2; - -typedef struct { - union { - uFormat0 format0; - uFormat1 format1; - uFormat2 format2; - } fmt; -} uMapCell; - -/* ================================================= - uTable -================================================= */ -typedef struct { - uint16 itemOfList; - uint16 offsetToFormatArray; - uint16 offsetToMapCellArray; - uint16 offsetToMappingTable; - uint16 data[1]; -} uTable; - -#endif diff --git a/mozilla/lib/libi18n/unicode/Makefile b/mozilla/lib/libi18n/unicode/Makefile deleted file mode 100644 index cacbf6c2b2b..00000000000 --- a/mozilla/lib/libi18n/unicode/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - - - -DEPTH = ../../.. - -DIRS = ufrmtbl utotbl - -REQUIRES = dbm - -include $(DEPTH)/config/rules.mk diff --git a/mozilla/lib/libi18n/unicode/Makefile.in b/mozilla/lib/libi18n/unicode/Makefile.in deleted file mode 100644 index 4926074a235..00000000000 --- a/mozilla/lib/libi18n/unicode/Makefile.in +++ /dev/null @@ -1,31 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - - - -DEPTH = ../../.. -topsrcdir = @top_srcdir@ -VPATH = @srcdir@ -srcdir = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -DIRS = ufrmtbl utotbl - -REQUIRES = dbm - -include $(topsrcdir)/config/rules.mk diff --git a/mozilla/lib/libi18n/unicode/fromftp/othertbls/gb13000.txt b/mozilla/lib/libi18n/unicode/fromftp/othertbls/gb13000.txt deleted file mode 100644 index d210e0134f7..00000000000 --- a/mozilla/lib/libi18n/unicode/fromftp/othertbls/gb13000.txt +++ /dev/null @@ -1,21905 +0,0 @@ -# -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. -# -# This file is submit by Chen Xiangyang <chenxy@sun.ihep.ac.cn> -# The origional file is posted in http://csun01.ihep.ac.cn/mozilla/patch/gb13000.txt -0x8140 0x4E02 -0x8141 0x4E04 -0x8142 0x4E05 -0x8143 0x4E06 -0x8144 0x4E0F -0x8145 0x4E12 -0x8146 0x4E17 -0x8147 0x4E1F -0x8148 0x4E20 -0x8149 0x4E21 -0x814A 0x4E23 -0x814B 0x4E26 -0x814C 0x4E29 -0x814D 0x4E2E -0x814E 0x4E2F -0x814F 0x4E31 -0x8150 0x4E33 -0x8151 0x4E35 -0x8152 0x4E37 -0x8153 0x4E3C -0x8154 0x4E40 -0x8155 0x4E41 -0x8156 0x4E42 -0x8157 0x4E44 -0x8158 0x4E46 -0x8159 0x4E4A -0x815A 0x4E51 -0x815B 0x4E55 -0x815C 0x4E57 -0x815D 0x4E5A -0x815E 0x4E5B -0x815F 0x4E62 -0x8160 0x4E63 -0x8161 0x4E64 -0x8162 0x4E65 -0x8163 0x4E67 -0x8164 0x4E68 -0x8165 0x4E6A -0x8166 0x4E6B -0x8167 0x4E6C -0x8168 0x4E6D -0x8169 0x4E6E -0x816A 0x4E6F -0x816B 0x4E72 -0x816C 0x4E74 -0x816D 0x4E75 -0x816E 0x4E76 -0x816F 0x4E77 -0x8170 0x4E78 -0x8171 0x4E79 -0x8172 0x4E7A -0x8173 0x4E7B -0x8174 0x4E7C -0x8175 0x4E7D -0x8176 0x4E7F -0x8177 0x4E80 -0x8178 0x4E81 -0x8179 0x4E82 -0x817A 0x4E83 -0x817B 0x4E84 -0x817C 0x4E85 -0x817D 0x4E87 -0x817E 0x4E8A -0x8180 0x4E90 -0x8181 0x4E96 -0x8182 0x4E97 -0x8183 0x4E99 -0x8184 0x4E9C -0x8185 0x4E9D -0x8186 0x4E9E -0x8187 0x4EA3 -0x8188 0x4EAA -0x8189 0x4EAF -0x818A 0x4EB0 -0x818B 0x4EB1 -0x818C 0x4EB4 -0x818D 0x4EB6 -0x818E 0x4EB7 -0x818F 0x4EB8 -0x8190 0x4EB9 -0x8191 0x4EBC -0x8192 0x4EBD -0x8193 0x4EBE -0x8194 0x4EC8 -0x8195 0x4ECC -0x8196 0x4ECF -0x8197 0x4ED0 -0x8198 0x4ED2 -0x8199 0x4EDA -0x819A 0x4EDB -0x819B 0x4EDC -0x819C 0x4EE0 -0x819D 0x4EE2 -0x819E 0x4EE6 -0x819F 0x4EE7 -0x81A0 0x4EE9 -0x81A1 0x4EED -0x81A2 0x4EEE -0x81A3 0x4EEF -0x81A4 0x4EF1 -0x81A5 0x4EF4 -0x81A6 0x4EF8 -0x81A7 0x4EF9 -0x81A8 0x4EFA -0x81A9 0x4EFC -0x81AA 0x4EFE -0x81AB 0x4F00 -0x81AC 0x4F02 -0x81AD 0x4F03 -0x81AE 0x4F04 -0x81AF 0x4F05 -0x81B0 0x4F06 -0x81B1 0x4F07 -0x81B2 0x4F08 -0x81B3 0x4F0B -0x81B4 0x4F0C -0x81B5 0x4F12 -0x81B6 0x4F13 -0x81B7 0x4F14 -0x81B8 0x4F15 -0x81B9 0x4F16 -0x81BA 0x4F1C -0x81BB 0x4F1D -0x81BC 0x4F21 -0x81BD 0x4F23 -0x81BE 0x4F28 -0x81BF 0x4F29 -0x81C0 0x4F2C -0x81C1 0x4F2D -0x81C2 0x4F2E -0x81C3 0x4F31 -0x81C4 0x4F33 -0x81C5 0x4F35 -0x81C6 0x4F37 -0x81C7 0x4F39 -0x81C8 0x4F3B -0x81C9 0x4F3E -0x81CA 0x4F3F -0x81CB 0x4F40 -0x81CC 0x4F41 -0x81CD 0x4F42 -0x81CE 0x4F44 -0x81CF 0x4F45 -0x81D0 0x4F47 -0x81D1 0x4F48 -0x81D2 0x4F49 -0x81D3 0x4F4A -0x81D4 0x4F4B -0x81D5 0x4F4C -0x81D6 0x4F52 -0x81D7 0x4F54 -0x81D8 0x4F56 -0x81D9 0x4F61 -0x81DA 0x4F62 -0x81DB 0x4F66 -0x81DC 0x4F68 -0x81DD 0x4F6A -0x81DE 0x4F6B -0x81DF 0x4F6D -0x81E0 0x4F6E -0x81E1 0x4F71 -0x81E2 0x4F72 -0x81E3 0x4F75 -0x81E4 0x4F77 -0x81E5 0x4F78 -0x81E6 0x4F79 -0x81E7 0x4F7A -0x81E8 0x4F7D -0x81E9 0x4F80 -0x81EA 0x4F81 -0x81EB 0x4F82 -0x81EC 0x4F85 -0x81ED 0x4F86 -0x81EE 0x4F87 -0x81EF 0x4F8A -0x81F0 0x4F8C -0x81F1 0x4F8E -0x81F2 0x4F90 -0x81F3 0x4F92 -0x81F4 0x4F93 -0x81F5 0x4F95 -0x81F6 0x4F96 -0x81F7 0x4F98 -0x81F8 0x4F99 -0x81F9 0x4F9A -0x81FA 0x4F9C -0x81FB 0x4F9E -0x81FC 0x4F9F -0x81FD 0x4FA1 -0x81FE 0x4FA2 -0x8240 0x4FA4 -0x8241 0x4FAB -0x8242 0x4FAD -0x8243 0x4FB0 -0x8244 0x4FB1 -0x8245 0x4FB2 -0x8246 0x4FB3 -0x8247 0x4FB4 -0x8248 0x4FB6 -0x8249 0x4FB7 -0x824A 0x4FB8 -0x824B 0x4FB9 -0x824C 0x4FBA -0x824D 0x4FBB -0x824E 0x4FBC -0x824F 0x4FBD -0x8250 0x4FBE -0x8251 0x4FC0 -0x8252 0x4FC1 -0x8253 0x4FC2 -0x8254 0x4FC6 -0x8255 0x4FC7 -0x8256 0x4FC8 -0x8257 0x4FC9 -0x8258 0x4FCB -0x8259 0x4FCC -0x825A 0x4FCD -0x825B 0x4FD2 -0x825C 0x4FD3 -0x825D 0x4FD4 -0x825E 0x4FD5 -0x825F 0x4FD6 -0x8260 0x4FD9 -0x8261 0x4FDB -0x8262 0x4FE0 -0x8263 0x4FE2 -0x8264 0x4FE4 -0x8265 0x4FE5 -0x8266 0x4FE7 -0x8267 0x4FEB -0x8268 0x4FEC -0x8269 0x4FF0 -0x826A 0x4FF2 -0x826B 0x4FF4 -0x826C 0x4FF5 -0x826D 0x4FF6 -0x826E 0x4FF7 -0x826F 0x4FF9 -0x8270 0x4FFB -0x8271 0x4FFC -0x8272 0x4FFD -0x8273 0x4FFF -0x8274 0x5000 -0x8275 0x5001 -0x8276 0x5002 -0x8277 0x5003 -0x8278 0x5004 -0x8279 0x5005 -0x827A 0x5006 -0x827B 0x5007 -0x827C 0x5008 -0x827D 0x5009 -0x827E 0x500A -0x8280 0x500B -0x8281 0x500E -0x8282 0x5010 -0x8283 0x5011 -0x8284 0x5013 -0x8285 0x5015 -0x8286 0x5016 -0x8287 0x5017 -0x8288 0x501B -0x8289 0x501D -0x828A 0x501E -0x828B 0x5020 -0x828C 0x5022 -0x828D 0x5023 -0x828E 0x5024 -0x828F 0x5027 -0x8290 0x502B -0x8291 0x502F -0x8292 0x5030 -0x8293 0x5031 -0x8294 0x5032 -0x8295 0x5033 -0x8296 0x5034 -0x8297 0x5035 -0x8298 0x5036 -0x8299 0x5037 -0x829A 0x5038 -0x829B 0x5039 -0x829C 0x503B -0x829D 0x503D -0x829E 0x503F -0x829F 0x5040 -0x82A0 0x5041 -0x82A1 0x5042 -0x82A2 0x5044 -0x82A3 0x5045 -0x82A4 0x5046 -0x82A5 0x5049 -0x82A6 0x504A -0x82A7 0x504B -0x82A8 0x504D -0x82A9 0x5050 -0x82AA 0x5051 -0x82AB 0x5052 -0x82AC 0x5053 -0x82AD 0x5054 -0x82AE 0x5056 -0x82AF 0x5057 -0x82B0 0x5058 -0x82B1 0x5059 -0x82B2 0x505B -0x82B3 0x505D -0x82B4 0x505E -0x82B5 0x505F -0x82B6 0x5060 -0x82B7 0x5061 -0x82B8 0x5062 -0x82B9 0x5063 -0x82BA 0x5064 -0x82BB 0x5066 -0x82BC 0x5067 -0x82BD 0x5068 -0x82BE 0x5069 -0x82BF 0x506A -0x82C0 0x506B -0x82C1 0x506D -0x82C2 0x506E -0x82C3 0x506F -0x82C4 0x5070 -0x82C5 0x5071 -0x82C6 0x5072 -0x82C7 0x5073 -0x82C8 0x5074 -0x82C9 0x5075 -0x82CA 0x5078 -0x82CB 0x5079 -0x82CC 0x507A -0x82CD 0x507C -0x82CE 0x507D -0x82CF 0x5081 -0x82D0 0x5082 -0x82D1 0x5083 -0x82D2 0x5084 -0x82D3 0x5086 -0x82D4 0x5087 -0x82D5 0x5089 -0x82D6 0x508A -0x82D7 0x508B -0x82D8 0x508C -0x82D9 0x508E -0x82DA 0x508F -0x82DB 0x5090 -0x82DC 0x5091 -0x82DD 0x5092 -0x82DE 0x5093 -0x82DF 0x5094 -0x82E0 0x5095 -0x82E1 0x5096 -0x82E2 0x5097 -0x82E3 0x5098 -0x82E4 0x5099 -0x82E5 0x509A -0x82E6 0x509B -0x82E7 0x509C -0x82E8 0x509D -0x82E9 0x509E -0x82EA 0x509F -0x82EB 0x50A0 -0x82EC 0x50A1 -0x82ED 0x50A2 -0x82EE 0x50A4 -0x82EF 0x50A6 -0x82F0 0x50AA -0x82F1 0x50AB -0x82F2 0x50AD -0x82F3 0x50AE -0x82F4 0x50AF -0x82F5 0x50B0 -0x82F6 0x50B1 -0x82F7 0x50B3 -0x82F8 0x50B4 -0x82F9 0x50B5 -0x82FA 0x50B6 -0x82FB 0x50B7 -0x82FC 0x50B8 -0x82FD 0x50B9 -0x82FE 0x50BC -0x8340 0x50BD -0x8341 0x50BE -0x8342 0x50BF -0x8343 0x50C0 -0x8344 0x50C1 -0x8345 0x50C2 -0x8346 0x50C3 -0x8347 0x50C4 -0x8348 0x50C5 -0x8349 0x50C6 -0x834A 0x50C7 -0x834B 0x50C8 -0x834C 0x50C9 -0x834D 0x50CA -0x834E 0x50CB -0x834F 0x50CC -0x8350 0x50CD -0x8351 0x50CE -0x8352 0x50D0 -0x8353 0x50D1 -0x8354 0x50D2 -0x8355 0x50D3 -0x8356 0x50D4 -0x8357 0x50D5 -0x8358 0x50D7 -0x8359 0x50D8 -0x835A 0x50D9 -0x835B 0x50DB -0x835C 0x50DC -0x835D 0x50DD -0x835E 0x50DE -0x835F 0x50DF -0x8360 0x50E0 -0x8361 0x50E1 -0x8362 0x50E2 -0x8363 0x50E3 -0x8364 0x50E4 -0x8365 0x50E5 -0x8366 0x50E8 -0x8367 0x50E9 -0x8368 0x50EA -0x8369 0x50EB -0x836A 0x50EF -0x836B 0x50F0 -0x836C 0x50F1 -0x836D 0x50F2 -0x836E 0x50F4 -0x836F 0x50F6 -0x8370 0x50F7 -0x8371 0x50F8 -0x8372 0x50F9 -0x8373 0x50FA -0x8374 0x50FC -0x8375 0x50FD -0x8376 0x50FE -0x8377 0x50FF -0x8378 0x5100 -0x8379 0x5101 -0x837A 0x5102 -0x837B 0x5103 -0x837C 0x5104 -0x837D 0x5105 -0x837E 0x5108 -0x8380 0x5109 -0x8381 0x510A -0x8382 0x510C -0x8383 0x510D -0x8384 0x510E -0x8385 0x510F -0x8386 0x5110 -0x8387 0x5111 -0x8388 0x5113 -0x8389 0x5114 -0x838A 0x5115 -0x838B 0x5116 -0x838C 0x5117 -0x838D 0x5118 -0x838E 0x5119 -0x838F 0x511A -0x8390 0x511B -0x8391 0x511C -0x8392 0x511D -0x8393 0x511E -0x8394 0x511F -0x8395 0x5120 -0x8396 0x5122 -0x8397 0x5123 -0x8398 0x5124 -0x8399 0x5125 -0x839A 0x5126 -0x839B 0x5127 -0x839C 0x5128 -0x839D 0x5129 -0x839E 0x512A -0x839F 0x512B -0x83A0 0x512C -0x83A1 0x512D -0x83A2 0x512E -0x83A3 0x512F -0x83A4 0x5130 -0x83A5 0x5131 -0x83A6 0x5132 -0x83A7 0x5133 -0x83A8 0x5134 -0x83A9 0x5135 -0x83AA 0x5136 -0x83AB 0x5137 -0x83AC 0x5138 -0x83AD 0x5139 -0x83AE 0x513A -0x83AF 0x513B -0x83B0 0x513C -0x83B1 0x513D -0x83B2 0x513E -0x83B3 0x5142 -0x83B4 0x5147 -0x83B5 0x514A -0x83B6 0x514C -0x83B7 0x514E -0x83B8 0x514F -0x83B9 0x5150 -0x83BA 0x5152 -0x83BB 0x5153 -0x83BC 0x5157 -0x83BD 0x5158 -0x83BE 0x5159 -0x83BF 0x515B -0x83C0 0x515D -0x83C1 0x515E -0x83C2 0x515F -0x83C3 0x5160 -0x83C4 0x5161 -0x83C5 0x5163 -0x83C6 0x5164 -0x83C7 0x5166 -0x83C8 0x5167 -0x83C9 0x5169 -0x83CA 0x516A -0x83CB 0x516F -0x83CC 0x5172 -0x83CD 0x517A -0x83CE 0x517E -0x83CF 0x517F -0x83D0 0x5183 -0x83D1 0x5184 -0x83D2 0x5186 -0x83D3 0x5187 -0x83D4 0x518A -0x83D5 0x518B -0x83D6 0x518E -0x83D7 0x518F -0x83D8 0x5190 -0x83D9 0x5191 -0x83DA 0x5193 -0x83DB 0x5194 -0x83DC 0x5198 -0x83DD 0x519A -0x83DE 0x519D -0x83DF 0x519E -0x83E0 0x519F -0x83E1 0x51A1 -0x83E2 0x51A3 -0x83E3 0x51A6 -0x83E4 0x51A7 -0x83E5 0x51A8 -0x83E6 0x51A9 -0x83E7 0x51AA -0x83E8 0x51AD -0x83E9 0x51AE -0x83EA 0x51B4 -0x83EB 0x51B8 -0x83EC 0x51B9 -0x83ED 0x51BA -0x83EE 0x51BE -0x83EF 0x51BF -0x83F0 0x51C1 -0x83F1 0x51C2 -0x83F2 0x51C3 -0x83F3 0x51C5 -0x83F4 0x51C8 -0x83F5 0x51CA -0x83F6 0x51CD -0x83F7 0x51CE -0x83F8 0x51D0 -0x83F9 0x51D2 -0x83FA 0x51D3 -0x83FB 0x51D4 -0x83FC 0x51D5 -0x83FD 0x51D6 -0x83FE 0x51D7 -0x8440 0x51D8 -0x8441 0x51D9 -0x8442 0x51DA -0x8443 0x51DC -0x8444 0x51DE -0x8445 0x51DF -0x8446 0x51E2 -0x8447 0x51E3 -0x8448 0x51E5 -0x8449 0x51E6 -0x844A 0x51E7 -0x844B 0x51E8 -0x844C 0x51E9 -0x844D 0x51EA -0x844E 0x51EC -0x844F 0x51EE -0x8450 0x51F1 -0x8451 0x51F2 -0x8452 0x51F4 -0x8453 0x51F7 -0x8454 0x51FE -0x8455 0x5204 -0x8456 0x5205 -0x8457 0x5209 -0x8458 0x520B -0x8459 0x520C -0x845A 0x520F -0x845B 0x5210 -0x845C 0x5213 -0x845D 0x5214 -0x845E 0x5215 -0x845F 0x521C -0x8460 0x521E -0x8461 0x521F -0x8462 0x5221 -0x8463 0x5222 -0x8464 0x5223 -0x8465 0x5225 -0x8466 0x5226 -0x8467 0x5227 -0x8468 0x522A -0x8469 0x522C -0x846A 0x522F -0x846B 0x5231 -0x846C 0x5232 -0x846D 0x5234 -0x846E 0x5235 -0x846F 0x523C -0x8470 0x523E -0x8471 0x5244 -0x8472 0x5245 -0x8473 0x5246 -0x8474 0x5247 -0x8475 0x5248 -0x8476 0x5249 -0x8477 0x524B -0x8478 0x524E -0x8479 0x524F -0x847A 0x5252 -0x847B 0x5253 -0x847C 0x5255 -0x847D 0x5257 -0x847E 0x5258 -0x8480 0x5259 -0x8481 0x525A -0x8482 0x525B -0x8483 0x525D -0x8484 0x525F -0x8485 0x5260 -0x8486 0x5262 -0x8487 0x5263 -0x8488 0x5264 -0x8489 0x5266 -0x848A 0x5268 -0x848B 0x526B -0x848C 0x526C -0x848D 0x526D -0x848E 0x526E -0x848F 0x5270 -0x8490 0x5271 -0x8491 0x5273 -0x8492 0x5274 -0x8493 0x5275 -0x8494 0x5276 -0x8495 0x5277 -0x8496 0x5278 -0x8497 0x5279 -0x8498 0x527A -0x8499 0x527B -0x849A 0x527C -0x849B 0x527E -0x849C 0x5280 -0x849D 0x5283 -0x849E 0x5284 -0x849F 0x5285 -0x84A0 0x5286 -0x84A1 0x5287 -0x84A2 0x5289 -0x84A3 0x528A -0x84A4 0x528B -0x84A5 0x528C -0x84A6 0x528D -0x84A7 0x528E -0x84A8 0x528F -0x84A9 0x5291 -0x84AA 0x5292 -0x84AB 0x5294 -0x84AC 0x5295 -0x84AD 0x5296 -0x84AE 0x5297 -0x84AF 0x5298 -0x84B0 0x5299 -0x84B1 0x529A -0x84B2 0x529C -0x84B3 0x52A4 -0x84B4 0x52A5 -0x84B5 0x52A6 -0x84B6 0x52A7 -0x84B7 0x52AE -0x84B8 0x52AF -0x84B9 0x52B0 -0x84BA 0x52B4 -0x84BB 0x52B5 -0x84BC 0x52B6 -0x84BD 0x52B7 -0x84BE 0x52B8 -0x84BF 0x52B9 -0x84C0 0x52BA -0x84C1 0x52BB -0x84C2 0x52BC -0x84C3 0x52BD -0x84C4 0x52C0 -0x84C5 0x52C1 -0x84C6 0x52C2 -0x84C7 0x52C4 -0x84C8 0x52C5 -0x84C9 0x52C6 -0x84CA 0x52C8 -0x84CB 0x52CA -0x84CC 0x52CC -0x84CD 0x52CD -0x84CE 0x52CE -0x84CF 0x52CF -0x84D0 0x52D1 -0x84D1 0x52D3 -0x84D2 0x52D4 -0x84D3 0x52D5 -0x84D4 0x52D7 -0x84D5 0x52D9 -0x84D6 0x52DA -0x84D7 0x52DB -0x84D8 0x52DC -0x84D9 0x52DD -0x84DA 0x52DE -0x84DB 0x52E0 -0x84DC 0x52E1 -0x84DD 0x52E2 -0x84DE 0x52E3 -0x84DF 0x52E5 -0x84E0 0x52E6 -0x84E1 0x52E7 -0x84E2 0x52E8 -0x84E3 0x52E9 -0x84E4 0x52EA -0x84E5 0x52EB -0x84E6 0x52EC -0x84E7 0x52ED -0x84E8 0x52EE -0x84E9 0x52EF -0x84EA 0x52F1 -0x84EB 0x52F2 -0x84EC 0x52F3 -0x84ED 0x52F4 -0x84EE 0x52F5 -0x84EF 0x52F6 -0x84F0 0x52F7 -0x84F1 0x52F8 -0x84F2 0x52FB -0x84F3 0x52FC -0x84F4 0x52FD -0x84F5 0x5301 -0x84F6 0x5302 -0x84F7 0x5303 -0x84F8 0x5304 -0x84F9 0x5307 -0x84FA 0x5309 -0x84FB 0x530A -0x84FC 0x530B -0x84FD 0x530C -0x84FE 0x530E -0x8540 0x5311 -0x8541 0x5312 -0x8542 0x5313 -0x8543 0x5314 -0x8544 0x5318 -0x8545 0x531B -0x8546 0x531C -0x8547 0x531E -0x8548 0x531F -0x8549 0x5322 -0x854A 0x5324 -0x854B 0x5325 -0x854C 0x5327 -0x854D 0x5328 -0x854E 0x5329 -0x854F 0x532B -0x8550 0x532C -0x8551 0x532D -0x8552 0x532F -0x8553 0x5330 -0x8554 0x5331 -0x8555 0x5332 -0x8556 0x5333 -0x8557 0x5334 -0x8558 0x5335 -0x8559 0x5336 -0x855A 0x5337 -0x855B 0x5338 -0x855C 0x533C -0x855D 0x533D -0x855E 0x5340 -0x855F 0x5342 -0x8560 0x5344 -0x8561 0x5346 -0x8562 0x534B -0x8563 0x534C -0x8564 0x534D -0x8565 0x5350 -0x8566 0x5354 -0x8567 0x5358 -0x8568 0x5359 -0x8569 0x535B -0x856A 0x535D -0x856B 0x5365 -0x856C 0x5368 -0x856D 0x536A -0x856E 0x536C -0x856F 0x536D -0x8570 0x5372 -0x8571 0x5376 -0x8572 0x5379 -0x8573 0x537B -0x8574 0x537C -0x8575 0x537D -0x8576 0x537E -0x8577 0x5380 -0x8578 0x5381 -0x8579 0x5383 -0x857A 0x5387 -0x857B 0x5388 -0x857C 0x538A -0x857D 0x538E -0x857E 0x538F -0x8580 0x5390 -0x8581 0x5391 -0x8582 0x5392 -0x8583 0x5393 -0x8584 0x5394 -0x8585 0x5396 -0x8586 0x5397 -0x8587 0x5399 -0x8588 0x539B -0x8589 0x539C -0x858A 0x539E -0x858B 0x53A0 -0x858C 0x53A1 -0x858D 0x53A4 -0x858E 0x53A7 -0x858F 0x53AA -0x8590 0x53AB -0x8591 0x53AC -0x8592 0x53AD -0x8593 0x53AF -0x8594 0x53B0 -0x8595 0x53B1 -0x8596 0x53B2 -0x8597 0x53B3 -0x8598 0x53B4 -0x8599 0x53B5 -0x859A 0x53B7 -0x859B 0x53B8 -0x859C 0x53B9 -0x859D 0x53BA -0x859E 0x53BC -0x859F 0x53BD -0x85A0 0x53BE -0x85A1 0x53C0 -0x85A2 0x53C3 -0x85A3 0x53C4 -0x85A4 0x53C5 -0x85A5 0x53C6 -0x85A6 0x53C7 -0x85A7 0x53CE -0x85A8 0x53CF -0x85A9 0x53D0 -0x85AA 0x53D2 -0x85AB 0x53D3 -0x85AC 0x53D5 -0x85AD 0x53DA -0x85AE 0x53DC -0x85AF 0x53DD -0x85B0 0x53DE -0x85B1 0x53E1 -0x85B2 0x53E2 -0x85B3 0x53E7 -0x85B4 0x53F4 -0x85B5 0x53FA -0x85B6 0x53FE -0x85B7 0x53FF -0x85B8 0x5400 -0x85B9 0x5402 -0x85BA 0x5405 -0x85BB 0x5407 -0x85BC 0x540B -0x85BD 0x5414 -0x85BE 0x5418 -0x85BF 0x5419 -0x85C0 0x541A -0x85C1 0x541C -0x85C2 0x5422 -0x85C3 0x5424 -0x85C4 0x5425 -0x85C5 0x542A -0x85C6 0x5430 -0x85C7 0x5433 -0x85C8 0x5436 -0x85C9 0x5437 -0x85CA 0x543A -0x85CB 0x543D -0x85CC 0x543F -0x85CD 0x5441 -0x85CE 0x5442 -0x85CF 0x5444 -0x85D0 0x5445 -0x85D1 0x5447 -0x85D2 0x5449 -0x85D3 0x544C -0x85D4 0x544D -0x85D5 0x544E -0x85D6 0x544F -0x85D7 0x5451 -0x85D8 0x545A -0x85D9 0x545D -0x85DA 0x545E -0x85DB 0x545F -0x85DC 0x5460 -0x85DD 0x5461 -0x85DE 0x5463 -0x85DF 0x5465 -0x85E0 0x5467 -0x85E1 0x5469 -0x85E2 0x546A -0x85E3 0x546B -0x85E4 0x546C -0x85E5 0x546D -0x85E6 0x546E -0x85E7 0x546F -0x85E8 0x5470 -0x85E9 0x5474 -0x85EA 0x5479 -0x85EB 0x547A -0x85EC 0x547E -0x85ED 0x547F -0x85EE 0x5481 -0x85EF 0x5483 -0x85F0 0x5485 -0x85F1 0x5487 -0x85F2 0x5488 -0x85F3 0x5489 -0x85F4 0x548A -0x85F5 0x548D -0x85F6 0x5491 -0x85F7 0x5493 -0x85F8 0x5497 -0x85F9 0x5498 -0x85FA 0x549C -0x85FB 0x549E -0x85FC 0x549F -0x85FD 0x54A0 -0x85FE 0x54A1 -0x8640 0x54A2 -0x8641 0x54A5 -0x8642 0x54AE -0x8643 0x54B0 -0x8644 0x54B2 -0x8645 0x54B5 -0x8646 0x54B6 -0x8647 0x54B7 -0x8648 0x54B9 -0x8649 0x54BA -0x864A 0x54BC -0x864B 0x54BE -0x864C 0x54C3 -0x864D 0x54C5 -0x864E 0x54CA -0x864F 0x54CB -0x8650 0x54D6 -0x8651 0x54D8 -0x8652 0x54DB -0x8653 0x54E0 -0x8654 0x54E1 -0x8655 0x54E2 -0x8656 0x54E3 -0x8657 0x54E4 -0x8658 0x54EB -0x8659 0x54EC -0x865A 0x54EF -0x865B 0x54F0 -0x865C 0x54F1 -0x865D 0x54F4 -0x865E 0x54F5 -0x865F 0x54F6 -0x8660 0x54F7 -0x8661 0x54F8 -0x8662 0x54F9 -0x8663 0x54FB -0x8664 0x54FE -0x8665 0x5500 -0x8666 0x5502 -0x8667 0x5503 -0x8668 0x5504 -0x8669 0x5505 -0x866A 0x5508 -0x866B 0x550A -0x866C 0x550B -0x866D 0x550C -0x866E 0x550D -0x866F 0x550E -0x8670 0x5512 -0x8671 0x5513 -0x8672 0x5515 -0x8673 0x5516 -0x8674 0x5517 -0x8675 0x5518 -0x8676 0x5519 -0x8677 0x551A -0x8678 0x551C -0x8679 0x551D -0x867A 0x551E -0x867B 0x551F -0x867C 0x5521 -0x867D 0x5525 -0x867E 0x5526 -0x8680 0x5528 -0x8681 0x5529 -0x8682 0x552B -0x8683 0x552D -0x8684 0x5532 -0x8685 0x5534 -0x8686 0x5535 -0x8687 0x5536 -0x8688 0x5538 -0x8689 0x5539 -0x868A 0x553A -0x868B 0x553B -0x868C 0x553D -0x868D 0x5540 -0x868E 0x5542 -0x868F 0x5545 -0x8690 0x5547 -0x8691 0x5548 -0x8692 0x554B -0x8693 0x554C -0x8694 0x554D -0x8695 0x554E -0x8696 0x554F -0x8697 0x5551 -0x8698 0x5552 -0x8699 0x5553 -0x869A 0x5554 -0x869B 0x5557 -0x869C 0x5558 -0x869D 0x5559 -0x869E 0x555A -0x869F 0x555B -0x86A0 0x555D -0x86A1 0x555E -0x86A2 0x555F -0x86A3 0x5560 -0x86A4 0x5562 -0x86A5 0x5563 -0x86A6 0x5568 -0x86A7 0x5569 -0x86A8 0x556B -0x86A9 0x556F -0x86AA 0x5570 -0x86AB 0x5571 -0x86AC 0x5572 -0x86AD 0x5573 -0x86AE 0x5574 -0x86AF 0x5579 -0x86B0 0x557A -0x86B1 0x557D -0x86B2 0x557F -0x86B3 0x5585 -0x86B4 0x5586 -0x86B5 0x558C -0x86B6 0x558D -0x86B7 0x558E -0x86B8 0x5590 -0x86B9 0x5592 -0x86BA 0x5593 -0x86BB 0x5595 -0x86BC 0x5596 -0x86BD 0x5597 -0x86BE 0x559A -0x86BF 0x559B -0x86C0 0x559E -0x86C1 0x55A0 -0x86C2 0x55A1 -0x86C3 0x55A2 -0x86C4 0x55A3 -0x86C5 0x55A4 -0x86C6 0x55A5 -0x86C7 0x55A6 -0x86C8 0x55A8 -0x86C9 0x55A9 -0x86CA 0x55AA -0x86CB 0x55AB -0x86CC 0x55AC -0x86CD 0x55AD -0x86CE 0x55AE -0x86CF 0x55AF -0x86D0 0x55B0 -0x86D1 0x55B2 -0x86D2 0x55B4 -0x86D3 0x55B6 -0x86D4 0x55B8 -0x86D5 0x55BA -0x86D6 0x55BC -0x86D7 0x55BF -0x86D8 0x55C0 -0x86D9 0x55C1 -0x86DA 0x55C2 -0x86DB 0x55C3 -0x86DC 0x55C6 -0x86DD 0x55C7 -0x86DE 0x55C8 -0x86DF 0x55CA -0x86E0 0x55CB -0x86E1 0x55CE -0x86E2 0x55CF -0x86E3 0x55D0 -0x86E4 0x55D5 -0x86E5 0x55D7 -0x86E6 0x55D8 -0x86E7 0x55D9 -0x86E8 0x55DA -0x86E9 0x55DB -0x86EA 0x55DE -0x86EB 0x55E0 -0x86EC 0x55E2 -0x86ED 0x55E7 -0x86EE 0x55E9 -0x86EF 0x55ED -0x86F0 0x55EE -0x86F1 0x55F0 -0x86F2 0x55F1 -0x86F3 0x55F4 -0x86F4 0x55F6 -0x86F5 0x55F8 -0x86F6 0x55F9 -0x86F7 0x55FA -0x86F8 0x55FB -0x86F9 0x55FC -0x86FA 0x55FF -0x86FB 0x5602 -0x86FC 0x5603 -0x86FD 0x5604 -0x86FE 0x5605 -0x8740 0x5606 -0x8741 0x5607 -0x8742 0x560A -0x8743 0x560B -0x8744 0x560D -0x8745 0x5610 -0x8746 0x5611 -0x8747 0x5612 -0x8748 0x5613 -0x8749 0x5614 -0x874A 0x5615 -0x874B 0x5616 -0x874C 0x5617 -0x874D 0x5619 -0x874E 0x561A -0x874F 0x561C -0x8750 0x561D -0x8751 0x5620 -0x8752 0x5621 -0x8753 0x5622 -0x8754 0x5625 -0x8755 0x5626 -0x8756 0x5628 -0x8757 0x5629 -0x8758 0x562A -0x8759 0x562B -0x875A 0x562E -0x875B 0x562F -0x875C 0x5630 -0x875D 0x5633 -0x875E 0x5635 -0x875F 0x5637 -0x8760 0x5638 -0x8761 0x563A -0x8762 0x563C -0x8763 0x563D -0x8764 0x563E -0x8765 0x5640 -0x8766 0x5641 -0x8767 0x5642 -0x8768 0x5643 -0x8769 0x5644 -0x876A 0x5645 -0x876B 0x5646 -0x876C 0x5647 -0x876D 0x5648 -0x876E 0x5649 -0x876F 0x564A -0x8770 0x564B -0x8771 0x564F -0x8772 0x5650 -0x8773 0x5651 -0x8774 0x5652 -0x8775 0x5653 -0x8776 0x5655 -0x8777 0x5656 -0x8778 0x565A -0x8779 0x565B -0x877A 0x565D -0x877B 0x565E -0x877C 0x565F -0x877D 0x5660 -0x877E 0x5661 -0x8780 0x5663 -0x8781 0x5665 -0x8782 0x5666 -0x8783 0x5667 -0x8784 0x566D -0x8785 0x566E -0x8786 0x566F -0x8787 0x5670 -0x8788 0x5672 -0x8789 0x5673 -0x878A 0x5674 -0x878B 0x5675 -0x878C 0x5677 -0x878D 0x5678 -0x878E 0x5679 -0x878F 0x567A -0x8790 0x567D -0x8791 0x567E -0x8792 0x567F -0x8793 0x5680 -0x8794 0x5681 -0x8795 0x5682 -0x8796 0x5683 -0x8797 0x5684 -0x8798 0x5687 -0x8799 0x5688 -0x879A 0x5689 -0x879B 0x568A -0x879C 0x568B -0x879D 0x568C -0x879E 0x568D -0x879F 0x5690 -0x87A0 0x5691 -0x87A1 0x5692 -0x87A2 0x5694 -0x87A3 0x5695 -0x87A4 0x5696 -0x87A5 0x5697 -0x87A6 0x5698 -0x87A7 0x5699 -0x87A8 0x569A -0x87A9 0x569B -0x87AA 0x569C -0x87AB 0x569D -0x87AC 0x569E -0x87AD 0x569F -0x87AE 0x56A0 -0x87AF 0x56A1 -0x87B0 0x56A2 -0x87B1 0x56A4 -0x87B2 0x56A5 -0x87B3 0x56A6 -0x87B4 0x56A7 -0x87B5 0x56A8 -0x87B6 0x56A9 -0x87B7 0x56AA -0x87B8 0x56AB -0x87B9 0x56AC -0x87BA 0x56AD -0x87BB 0x56AE -0x87BC 0x56B0 -0x87BD 0x56B1 -0x87BE 0x56B2 -0x87BF 0x56B3 -0x87C0 0x56B4 -0x87C1 0x56B5 -0x87C2 0x56B6 -0x87C3 0x56B8 -0x87C4 0x56B9 -0x87C5 0x56BA -0x87C6 0x56BB -0x87C7 0x56BD -0x87C8 0x56BE -0x87C9 0x56BF -0x87CA 0x56C0 -0x87CB 0x56C1 -0x87CC 0x56C2 -0x87CD 0x56C3 -0x87CE 0x56C4 -0x87CF 0x56C5 -0x87D0 0x56C6 -0x87D1 0x56C7 -0x87D2 0x56C8 -0x87D3 0x56C9 -0x87D4 0x56CB -0x87D5 0x56CC -0x87D6 0x56CD -0x87D7 0x56CE -0x87D8 0x56CF -0x87D9 0x56D0 -0x87DA 0x56D1 -0x87DB 0x56D2 -0x87DC 0x56D3 -0x87DD 0x56D5 -0x87DE 0x56D6 -0x87DF 0x56D8 -0x87E0 0x56D9 -0x87E1 0x56DC -0x87E2 0x56E3 -0x87E3 0x56E5 -0x87E4 0x56E6 -0x87E5 0x56E7 -0x87E6 0x56E8 -0x87E7 0x56E9 -0x87E8 0x56EA -0x87E9 0x56EC -0x87EA 0x56EE -0x87EB 0x56EF -0x87EC 0x56F2 -0x87ED 0x56F3 -0x87EE 0x56F6 -0x87EF 0x56F7 -0x87F0 0x56F8 -0x87F1 0x56FB -0x87F2 0x56FC -0x87F3 0x5700 -0x87F4 0x5701 -0x87F5 0x5702 -0x87F6 0x5705 -0x87F7 0x5707 -0x87F8 0x570B -0x87F9 0x570C -0x87FA 0x570D -0x87FB 0x570E -0x87FC 0x570F -0x87FD 0x5710 -0x87FE 0x5711 -0x8840 0x5712 -0x8841 0x5713 -0x8842 0x5714 -0x8843 0x5715 -0x8844 0x5716 -0x8845 0x5717 -0x8846 0x5718 -0x8847 0x5719 -0x8848 0x571A -0x8849 0x571B -0x884A 0x571D -0x884B 0x571E -0x884C 0x5720 -0x884D 0x5721 -0x884E 0x5722 -0x884F 0x5724 -0x8850 0x5725 -0x8851 0x5726 -0x8852 0x5727 -0x8853 0x572B -0x8854 0x5731 -0x8855 0x5732 -0x8856 0x5734 -0x8857 0x5735 -0x8858 0x5736 -0x8859 0x5737 -0x885A 0x5738 -0x885B 0x573C -0x885C 0x573D -0x885D 0x573F -0x885E 0x5741 -0x885F 0x5743 -0x8860 0x5744 -0x8861 0x5745 -0x8862 0x5746 -0x8863 0x5748 -0x8864 0x5749 -0x8865 0x574B -0x8866 0x5752 -0x8867 0x5753 -0x8868 0x5754 -0x8869 0x5755 -0x886A 0x5756 -0x886B 0x5758 -0x886C 0x5759 -0x886D 0x5762 -0x886E 0x5763 -0x886F 0x5765 -0x8870 0x5767 -0x8871 0x576C -0x8872 0x576E -0x8873 0x5770 -0x8874 0x5771 -0x8875 0x5772 -0x8876 0x5774 -0x8877 0x5775 -0x8878 0x5778 -0x8879 0x5779 -0x887A 0x577A -0x887B 0x577D -0x887C 0x577E -0x887D 0x577F -0x887E 0x5780 -0x8880 0x5781 -0x8881 0x5787 -0x8882 0x5788 -0x8883 0x5789 -0x8884 0x578A -0x8885 0x578D -0x8886 0x578E -0x8887 0x578F -0x8888 0x5790 -0x8889 0x5791 -0x888A 0x5794 -0x888B 0x5795 -0x888C 0x5796 -0x888D 0x5797 -0x888E 0x5798 -0x888F 0x5799 -0x8890 0x579A -0x8891 0x579C -0x8892 0x579D -0x8893 0x579E -0x8894 0x579F -0x8895 0x57A5 -0x8896 0x57A8 -0x8897 0x57AA -0x8898 0x57AC -0x8899 0x57AF -0x889A 0x57B0 -0x889B 0x57B1 -0x889C 0x57B3 -0x889D 0x57B5 -0x889E 0x57B6 -0x889F 0x57B7 -0x88A0 0x57B9 -0x88A1 0x57BA -0x88A2 0x57BB -0x88A3 0x57BC -0x88A4 0x57BD -0x88A5 0x57BE -0x88A6 0x57BF -0x88A7 0x57C0 -0x88A8 0x57C1 -0x88A9 0x57C4 -0x88AA 0x57C5 -0x88AB 0x57C6 -0x88AC 0x57C7 -0x88AD 0x57C8 -0x88AE 0x57C9 -0x88AF 0x57CA -0x88B0 0x57CC -0x88B1 0x57CD -0x88B2 0x57D0 -0x88B3 0x57D1 -0x88B4 0x57D3 -0x88B5 0x57D6 -0x88B6 0x57D7 -0x88B7 0x57DB -0x88B8 0x57DC -0x88B9 0x57DE -0x88BA 0x57E1 -0x88BB 0x57E2 -0x88BC 0x57E3 -0x88BD 0x57E5 -0x88BE 0x57E6 -0x88BF 0x57E7 -0x88C0 0x57E8 -0x88C1 0x57E9 -0x88C2 0x57EA -0x88C3 0x57EB -0x88C4 0x57EC -0x88C5 0x57EE -0x88C6 0x57F0 -0x88C7 0x57F1 -0x88C8 0x57F2 -0x88C9 0x57F3 -0x88CA 0x57F5 -0x88CB 0x57F6 -0x88CC 0x57F7 -0x88CD 0x57FB -0x88CE 0x57FC -0x88CF 0x57FE -0x88D0 0x57FF -0x88D1 0x5801 -0x88D2 0x5803 -0x88D3 0x5804 -0x88D4 0x5805 -0x88D5 0x5808 -0x88D6 0x5809 -0x88D7 0x580A -0x88D8 0x580C -0x88D9 0x580E -0x88DA 0x580F -0x88DB 0x5810 -0x88DC 0x5812 -0x88DD 0x5813 -0x88DE 0x5814 -0x88DF 0x5816 -0x88E0 0x5817 -0x88E1 0x5818 -0x88E2 0x581A -0x88E3 0x581B -0x88E4 0x581C -0x88E5 0x581D -0x88E6 0x581F -0x88E7 0x5822 -0x88E8 0x5823 -0x88E9 0x5825 -0x88EA 0x5826 -0x88EB 0x5827 -0x88EC 0x5828 -0x88ED 0x5829 -0x88EE 0x582B -0x88EF 0x582C -0x88F0 0x582D -0x88F1 0x582E -0x88F2 0x582F -0x88F3 0x5831 -0x88F4 0x5832 -0x88F5 0x5833 -0x88F6 0x5834 -0x88F7 0x5836 -0x88F8 0x5837 -0x88F9 0x5838 -0x88FA 0x5839 -0x88FB 0x583A -0x88FC 0x583B -0x88FD 0x583C -0x88FE 0x583D -0x8940 0x583E -0x8941 0x583F -0x8942 0x5840 -0x8943 0x5841 -0x8944 0x5842 -0x8945 0x5843 -0x8946 0x5845 -0x8947 0x5846 -0x8948 0x5847 -0x8949 0x5848 -0x894A 0x5849 -0x894B 0x584A -0x894C 0x584B -0x894D 0x584E -0x894E 0x584F -0x894F 0x5850 -0x8950 0x5852 -0x8951 0x5853 -0x8952 0x5855 -0x8953 0x5856 -0x8954 0x5857 -0x8955 0x5859 -0x8956 0x585A -0x8957 0x585B -0x8958 0x585C -0x8959 0x585D -0x895A 0x585F -0x895B 0x5860 -0x895C 0x5861 -0x895D 0x5862 -0x895E 0x5863 -0x895F 0x5864 -0x8960 0x5866 -0x8961 0x5867 -0x8962 0x5868 -0x8963 0x5869 -0x8964 0x586A -0x8965 0x586D -0x8966 0x586E -0x8967 0x586F -0x8968 0x5870 -0x8969 0x5871 -0x896A 0x5872 -0x896B 0x5873 -0x896C 0x5874 -0x896D 0x5875 -0x896E 0x5876 -0x896F 0x5877 -0x8970 0x5878 -0x8971 0x5879 -0x8972 0x587A -0x8973 0x587B -0x8974 0x587C -0x8975 0x587D -0x8976 0x587F -0x8977 0x5882 -0x8978 0x5884 -0x8979 0x5886 -0x897A 0x5887 -0x897B 0x5888 -0x897C 0x588A -0x897D 0x588B -0x897E 0x588C -0x8980 0x588D -0x8981 0x588E -0x8982 0x588F -0x8983 0x5890 -0x8984 0x5891 -0x8985 0x5894 -0x8986 0x5895 -0x8987 0x5896 -0x8988 0x5897 -0x8989 0x5898 -0x898A 0x589B -0x898B 0x589C -0x898C 0x589D -0x898D 0x58A0 -0x898E 0x58A1 -0x898F 0x58A2 -0x8990 0x58A3 -0x8991 0x58A4 -0x8992 0x58A5 -0x8993 0x58A6 -0x8994 0x58A7 -0x8995 0x58AA -0x8996 0x58AB -0x8997 0x58AC -0x8998 0x58AD -0x8999 0x58AE -0x899A 0x58AF -0x899B 0x58B0 -0x899C 0x58B1 -0x899D 0x58B2 -0x899E 0x58B3 -0x899F 0x58B4 -0x89A0 0x58B5 -0x89A1 0x58B6 -0x89A2 0x58B7 -0x89A3 0x58B8 -0x89A4 0x58B9 -0x89A5 0x58BA -0x89A6 0x58BB -0x89A7 0x58BD -0x89A8 0x58BE -0x89A9 0x58BF -0x89AA 0x58C0 -0x89AB 0x58C2 -0x89AC 0x58C3 -0x89AD 0x58C4 -0x89AE 0x58C6 -0x89AF 0x58C7 -0x89B0 0x58C8 -0x89B1 0x58C9 -0x89B2 0x58CA -0x89B3 0x58CB -0x89B4 0x58CC -0x89B5 0x58CD -0x89B6 0x58CE -0x89B7 0x58CF -0x89B8 0x58D0 -0x89B9 0x58D2 -0x89BA 0x58D3 -0x89BB 0x58D4 -0x89BC 0x58D6 -0x89BD 0x58D7 -0x89BE 0x58D8 -0x89BF 0x58D9 -0x89C0 0x58DA -0x89C1 0x58DB -0x89C2 0x58DC -0x89C3 0x58DD -0x89C4 0x58DE -0x89C5 0x58DF -0x89C6 0x58E0 -0x89C7 0x58E1 -0x89C8 0x58E2 -0x89C9 0x58E3 -0x89CA 0x58E5 -0x89CB 0x58E6 -0x89CC 0x58E7 -0x89CD 0x58E8 -0x89CE 0x58E9 -0x89CF 0x58EA -0x89D0 0x58ED -0x89D1 0x58EF -0x89D2 0x58F1 -0x89D3 0x58F2 -0x89D4 0x58F4 -0x89D5 0x58F5 -0x89D6 0x58F7 -0x89D7 0x58F8 -0x89D8 0x58FA -0x89D9 0x58FB -0x89DA 0x58FC -0x89DB 0x58FD -0x89DC 0x58FE -0x89DD 0x58FF -0x89DE 0x5900 -0x89DF 0x5901 -0x89E0 0x5903 -0x89E1 0x5905 -0x89E2 0x5906 -0x89E3 0x5908 -0x89E4 0x5909 -0x89E5 0x590A -0x89E6 0x590B -0x89E7 0x590C -0x89E8 0x590E -0x89E9 0x5910 -0x89EA 0x5911 -0x89EB 0x5912 -0x89EC 0x5913 -0x89ED 0x5917 -0x89EE 0x5918 -0x89EF 0x591B -0x89F0 0x591D -0x89F1 0x591E -0x89F2 0x5920 -0x89F3 0x5921 -0x89F4 0x5922 -0x89F5 0x5923 -0x89F6 0x5926 -0x89F7 0x5928 -0x89F8 0x592C -0x89F9 0x5930 -0x89FA 0x5932 -0x89FB 0x5933 -0x89FC 0x5935 -0x89FD 0x5936 -0x89FE 0x593B -0x8A40 0x593D -0x8A41 0x593E -0x8A42 0x593F -0x8A43 0x5940 -0x8A44 0x5943 -0x8A45 0x5945 -0x8A46 0x5946 -0x8A47 0x594A -0x8A48 0x594C -0x8A49 0x594D -0x8A4A 0x5950 -0x8A4B 0x5952 -0x8A4C 0x5953 -0x8A4D 0x5959 -0x8A4E 0x595B -0x8A4F 0x595C -0x8A50 0x595D -0x8A51 0x595E -0x8A52 0x595F -0x8A53 0x5961 -0x8A54 0x5963 -0x8A55 0x5964 -0x8A56 0x5966 -0x8A57 0x5967 -0x8A58 0x5968 -0x8A59 0x5969 -0x8A5A 0x596A -0x8A5B 0x596B -0x8A5C 0x596C -0x8A5D 0x596D -0x8A5E 0x596E -0x8A5F 0x596F -0x8A60 0x5970 -0x8A61 0x5971 -0x8A62 0x5972 -0x8A63 0x5975 -0x8A64 0x5977 -0x8A65 0x597A -0x8A66 0x597B -0x8A67 0x597C -0x8A68 0x597E -0x8A69 0x597F -0x8A6A 0x5980 -0x8A6B 0x5985 -0x8A6C 0x5989 -0x8A6D 0x598B -0x8A6E 0x598C -0x8A6F 0x598E -0x8A70 0x598F -0x8A71 0x5990 -0x8A72 0x5991 -0x8A73 0x5994 -0x8A74 0x5995 -0x8A75 0x5998 -0x8A76 0x599A -0x8A77 0x599B -0x8A78 0x599C -0x8A79 0x599D -0x8A7A 0x599F -0x8A7B 0x59A0 -0x8A7C 0x59A1 -0x8A7D 0x59A2 -0x8A7E 0x59A6 -0x8A80 0x59A7 -0x8A81 0x59AC -0x8A82 0x59AD -0x8A83 0x59B0 -0x8A84 0x59B1 -0x8A85 0x59B3 -0x8A86 0x59B4 -0x8A87 0x59B5 -0x8A88 0x59B6 -0x8A89 0x59B7 -0x8A8A 0x59B8 -0x8A8B 0x59BA -0x8A8C 0x59BC -0x8A8D 0x59BD -0x8A8E 0x59BF -0x8A8F 0x59C0 -0x8A90 0x59C1 -0x8A91 0x59C2 -0x8A92 0x59C3 -0x8A93 0x59C4 -0x8A94 0x59C5 -0x8A95 0x59C7 -0x8A96 0x59C8 -0x8A97 0x59C9 -0x8A98 0x59CC -0x8A99 0x59CD -0x8A9A 0x59CE -0x8A9B 0x59CF -0x8A9C 0x59D5 -0x8A9D 0x59D6 -0x8A9E 0x59D9 -0x8A9F 0x59DB -0x8AA0 0x59DE -0x8AA1 0x59DF -0x8AA2 0x59E0 -0x8AA3 0x59E1 -0x8AA4 0x59E2 -0x8AA5 0x59E4 -0x8AA6 0x59E6 -0x8AA7 0x59E7 -0x8AA8 0x59E9 -0x8AA9 0x59EA -0x8AAA 0x59EB -0x8AAB 0x59ED -0x8AAC 0x59EE -0x8AAD 0x59EF -0x8AAE 0x59F0 -0x8AAF 0x59F1 -0x8AB0 0x59F2 -0x8AB1 0x59F3 -0x8AB2 0x59F4 -0x8AB3 0x59F5 -0x8AB4 0x59F6 -0x8AB5 0x59F7 -0x8AB6 0x59F8 -0x8AB7 0x59FA -0x8AB8 0x59FC -0x8AB9 0x59FD -0x8ABA 0x59FE -0x8ABB 0x5A00 -0x8ABC 0x5A02 -0x8ABD 0x5A0A -0x8ABE 0x5A0B -0x8ABF 0x5A0D -0x8AC0 0x5A0E -0x8AC1 0x5A0F -0x8AC2 0x5A10 -0x8AC3 0x5A12 -0x8AC4 0x5A14 -0x8AC5 0x5A15 -0x8AC6 0x5A16 -0x8AC7 0x5A17 -0x8AC8 0x5A19 -0x8AC9 0x5A1A -0x8ACA 0x5A1B -0x8ACB 0x5A1D -0x8ACC 0x5A1E -0x8ACD 0x5A21 -0x8ACE 0x5A22 -0x8ACF 0x5A24 -0x8AD0 0x5A26 -0x8AD1 0x5A27 -0x8AD2 0x5A28 -0x8AD3 0x5A2A -0x8AD4 0x5A2B -0x8AD5 0x5A2C -0x8AD6 0x5A2D -0x8AD7 0x5A2E -0x8AD8 0x5A2F -0x8AD9 0x5A30 -0x8ADA 0x5A33 -0x8ADB 0x5A35 -0x8ADC 0x5A37 -0x8ADD 0x5A38 -0x8ADE 0x5A39 -0x8ADF 0x5A3A -0x8AE0 0x5A3B -0x8AE1 0x5A3D -0x8AE2 0x5A3E -0x8AE3 0x5A3F -0x8AE4 0x5A41 -0x8AE5 0x5A42 -0x8AE6 0x5A43 -0x8AE7 0x5A44 -0x8AE8 0x5A45 -0x8AE9 0x5A47 -0x8AEA 0x5A48 -0x8AEB 0x5A4B -0x8AEC 0x5A4C -0x8AED 0x5A4D -0x8AEE 0x5A4E -0x8AEF 0x5A4F -0x8AF0 0x5A50 -0x8AF1 0x5A51 -0x8AF2 0x5A52 -0x8AF3 0x5A53 -0x8AF4 0x5A54 -0x8AF5 0x5A56 -0x8AF6 0x5A57 -0x8AF7 0x5A58 -0x8AF8 0x5A59 -0x8AF9 0x5A5B -0x8AFA 0x5A5C -0x8AFB 0x5A5D -0x8AFC 0x5A5E -0x8AFD 0x5A5F -0x8AFE 0x5A60 -0x8B40 0x5A61 -0x8B41 0x5A63 -0x8B42 0x5A64 -0x8B43 0x5A65 -0x8B44 0x5A66 -0x8B45 0x5A68 -0x8B46 0x5A69 -0x8B47 0x5A6B -0x8B48 0x5A6C -0x8B49 0x5A6D -0x8B4A 0x5A6E -0x8B4B 0x5A6F -0x8B4C 0x5A70 -0x8B4D 0x5A71 -0x8B4E 0x5A72 -0x8B4F 0x5A73 -0x8B50 0x5A78 -0x8B51 0x5A79 -0x8B52 0x5A7B -0x8B53 0x5A7C -0x8B54 0x5A7D -0x8B55 0x5A7E -0x8B56 0x5A80 -0x8B57 0x5A81 -0x8B58 0x5A82 -0x8B59 0x5A83 -0x8B5A 0x5A84 -0x8B5B 0x5A85 -0x8B5C 0x5A86 -0x8B5D 0x5A87 -0x8B5E 0x5A88 -0x8B5F 0x5A89 -0x8B60 0x5A8A -0x8B61 0x5A8B -0x8B62 0x5A8C -0x8B63 0x5A8D -0x8B64 0x5A8E -0x8B65 0x5A8F -0x8B66 0x5A90 -0x8B67 0x5A91 -0x8B68 0x5A93 -0x8B69 0x5A94 -0x8B6A 0x5A95 -0x8B6B 0x5A96 -0x8B6C 0x5A97 -0x8B6D 0x5A98 -0x8B6E 0x5A99 -0x8B6F 0x5A9C -0x8B70 0x5A9D -0x8B71 0x5A9E -0x8B72 0x5A9F -0x8B73 0x5AA0 -0x8B74 0x5AA1 -0x8B75 0x5AA2 -0x8B76 0x5AA3 -0x8B77 0x5AA4 -0x8B78 0x5AA5 -0x8B79 0x5AA6 -0x8B7A 0x5AA7 -0x8B7B 0x5AA8 -0x8B7C 0x5AA9 -0x8B7D 0x5AAB -0x8B7E 0x5AAC -0x8B80 0x5AAD -0x8B81 0x5AAE -0x8B82 0x5AAF -0x8B83 0x5AB0 -0x8B84 0x5AB1 -0x8B85 0x5AB4 -0x8B86 0x5AB6 -0x8B87 0x5AB7 -0x8B88 0x5AB9 -0x8B89 0x5ABA -0x8B8A 0x5ABB -0x8B8B 0x5ABC -0x8B8C 0x5ABD -0x8B8D 0x5ABF -0x8B8E 0x5AC0 -0x8B8F 0x5AC3 -0x8B90 0x5AC4 -0x8B91 0x5AC5 -0x8B92 0x5AC6 -0x8B93 0x5AC7 -0x8B94 0x5AC8 -0x8B95 0x5ACA -0x8B96 0x5ACB -0x8B97 0x5ACD -0x8B98 0x5ACE -0x8B99 0x5ACF -0x8B9A 0x5AD0 -0x8B9B 0x5AD1 -0x8B9C 0x5AD3 -0x8B9D 0x5AD5 -0x8B9E 0x5AD7 -0x8B9F 0x5AD9 -0x8BA0 0x5ADA -0x8BA1 0x5ADB -0x8BA2 0x5ADD -0x8BA3 0x5ADE -0x8BA4 0x5ADF -0x8BA5 0x5AE2 -0x8BA6 0x5AE4 -0x8BA7 0x5AE5 -0x8BA8 0x5AE7 -0x8BA9 0x5AE8 -0x8BAA 0x5AEA -0x8BAB 0x5AEC -0x8BAC 0x5AED -0x8BAD 0x5AEE -0x8BAE 0x5AEF -0x8BAF 0x5AF0 -0x8BB0 0x5AF2 -0x8BB1 0x5AF3 -0x8BB2 0x5AF4 -0x8BB3 0x5AF5 -0x8BB4 0x5AF6 -0x8BB5 0x5AF7 -0x8BB6 0x5AF8 -0x8BB7 0x5AF9 -0x8BB8 0x5AFA -0x8BB9 0x5AFB -0x8BBA 0x5AFC -0x8BBB 0x5AFD -0x8BBC 0x5AFE -0x8BBD 0x5AFF -0x8BBE 0x5B00 -0x8BBF 0x5B01 -0x8BC0 0x5B02 -0x8BC1 0x5B03 -0x8BC2 0x5B04 -0x8BC3 0x5B05 -0x8BC4 0x5B06 -0x8BC5 0x5B07 -0x8BC6 0x5B08 -0x8BC7 0x5B0A -0x8BC8 0x5B0B -0x8BC9 0x5B0C -0x8BCA 0x5B0D -0x8BCB 0x5B0E -0x8BCC 0x5B0F -0x8BCD 0x5B10 -0x8BCE 0x5B11 -0x8BCF 0x5B12 -0x8BD0 0x5B13 -0x8BD1 0x5B14 -0x8BD2 0x5B15 -0x8BD3 0x5B18 -0x8BD4 0x5B19 -0x8BD5 0x5B1A -0x8BD6 0x5B1B -0x8BD7 0x5B1C -0x8BD8 0x5B1D -0x8BD9 0x5B1E -0x8BDA 0x5B1F -0x8BDB 0x5B20 -0x8BDC 0x5B21 -0x8BDD 0x5B22 -0x8BDE 0x5B23 -0x8BDF 0x5B24 -0x8BE0 0x5B25 -0x8BE1 0x5B26 -0x8BE2 0x5B27 -0x8BE3 0x5B28 -0x8BE4 0x5B29 -0x8BE5 0x5B2A -0x8BE6 0x5B2B -0x8BE7 0x5B2C -0x8BE8 0x5B2D -0x8BE9 0x5B2E -0x8BEA 0x5B2F -0x8BEB 0x5B30 -0x8BEC 0x5B31 -0x8BED 0x5B33 -0x8BEE 0x5B35 -0x8BEF 0x5B36 -0x8BF0 0x5B38 -0x8BF1 0x5B39 -0x8BF2 0x5B3A -0x8BF3 0x5B3B -0x8BF4 0x5B3C -0x8BF5 0x5B3D -0x8BF6 0x5B3E -0x8BF7 0x5B3F -0x8BF8 0x5B41 -0x8BF9 0x5B42 -0x8BFA 0x5B43 -0x8BFB 0x5B44 -0x8BFC 0x5B45 -0x8BFD 0x5B46 -0x8BFE 0x5B47 -0x8C40 0x5B48 -0x8C41 0x5B49 -0x8C42 0x5B4A -0x8C43 0x5B4B -0x8C44 0x5B4C -0x8C45 0x5B4D -0x8C46 0x5B4E -0x8C47 0x5B4F -0x8C48 0x5B52 -0x8C49 0x5B56 -0x8C4A 0x5B5E -0x8C4B 0x5B60 -0x8C4C 0x5B61 -0x8C4D 0x5B67 -0x8C4E 0x5B68 -0x8C4F 0x5B6B -0x8C50 0x5B6D -0x8C51 0x5B6E -0x8C52 0x5B6F -0x8C53 0x5B72 -0x8C54 0x5B74 -0x8C55 0x5B76 -0x8C56 0x5B77 -0x8C57 0x5B78 -0x8C58 0x5B79 -0x8C59 0x5B7B -0x8C5A 0x5B7C -0x8C5B 0x5B7E -0x8C5C 0x5B7F -0x8C5D 0x5B82 -0x8C5E 0x5B86 -0x8C5F 0x5B8A -0x8C60 0x5B8D -0x8C61 0x5B8E -0x8C62 0x5B90 -0x8C63 0x5B91 -0x8C64 0x5B92 -0x8C65 0x5B94 -0x8C66 0x5B96 -0x8C67 0x5B9F -0x8C68 0x5BA7 -0x8C69 0x5BA8 -0x8C6A 0x5BA9 -0x8C6B 0x5BAC -0x8C6C 0x5BAD -0x8C6D 0x5BAE -0x8C6E 0x5BAF -0x8C6F 0x5BB1 -0x8C70 0x5BB2 -0x8C71 0x5BB7 -0x8C72 0x5BBA -0x8C73 0x5BBB -0x8C74 0x5BBC -0x8C75 0x5BC0 -0x8C76 0x5BC1 -0x8C77 0x5BC3 -0x8C78 0x5BC8 -0x8C79 0x5BC9 -0x8C7A 0x5BCA -0x8C7B 0x5BCB -0x8C7C 0x5BCD -0x8C7D 0x5BCE -0x8C7E 0x5BCF -0x8C80 0x5BD1 -0x8C81 0x5BD4 -0x8C82 0x5BD5 -0x8C83 0x5BD6 -0x8C84 0x5BD7 -0x8C85 0x5BD8 -0x8C86 0x5BD9 -0x8C87 0x5BDA -0x8C88 0x5BDB -0x8C89 0x5BDC -0x8C8A 0x5BE0 -0x8C8B 0x5BE2 -0x8C8C 0x5BE3 -0x8C8D 0x5BE6 -0x8C8E 0x5BE7 -0x8C8F 0x5BE9 -0x8C90 0x5BEA -0x8C91 0x5BEB -0x8C92 0x5BEC -0x8C93 0x5BED -0x8C94 0x5BEF -0x8C95 0x5BF1 -0x8C96 0x5BF2 -0x8C97 0x5BF3 -0x8C98 0x5BF4 -0x8C99 0x5BF5 -0x8C9A 0x5BF6 -0x8C9B 0x5BF7 -0x8C9C 0x5BFD -0x8C9D 0x5BFE -0x8C9E 0x5C00 -0x8C9F 0x5C02 -0x8CA0 0x5C03 -0x8CA1 0x5C05 -0x8CA2 0x5C07 -0x8CA3 0x5C08 -0x8CA4 0x5C0B -0x8CA5 0x5C0C -0x8CA6 0x5C0D -0x8CA7 0x5C0E -0x8CA8 0x5C10 -0x8CA9 0x5C12 -0x8CAA 0x5C13 -0x8CAB 0x5C17 -0x8CAC 0x5C19 -0x8CAD 0x5C1B -0x8CAE 0x5C1E -0x8CAF 0x5C1F -0x8CB0 0x5C20 -0x8CB1 0x5C21 -0x8CB2 0x5C23 -0x8CB3 0x5C26 -0x8CB4 0x5C28 -0x8CB5 0x5C29 -0x8CB6 0x5C2A -0x8CB7 0x5C2B -0x8CB8 0x5C2D -0x8CB9 0x5C2E -0x8CBA 0x5C2F -0x8CBB 0x5C30 -0x8CBC 0x5C32 -0x8CBD 0x5C33 -0x8CBE 0x5C35 -0x8CBF 0x5C36 -0x8CC0 0x5C37 -0x8CC1 0x5C43 -0x8CC2 0x5C44 -0x8CC3 0x5C46 -0x8CC4 0x5C47 -0x8CC5 0x5C4C -0x8CC6 0x5C4D -0x8CC7 0x5C52 -0x8CC8 0x5C53 -0x8CC9 0x5C54 -0x8CCA 0x5C56 -0x8CCB 0x5C57 -0x8CCC 0x5C58 -0x8CCD 0x5C5A -0x8CCE 0x5C5B -0x8CCF 0x5C5C -0x8CD0 0x5C5D -0x8CD1 0x5C5F -0x8CD2 0x5C62 -0x8CD3 0x5C64 -0x8CD4 0x5C67 -0x8CD5 0x5C68 -0x8CD6 0x5C69 -0x8CD7 0x5C6A -0x8CD8 0x5C6B -0x8CD9 0x5C6C -0x8CDA 0x5C6D -0x8CDB 0x5C70 -0x8CDC 0x5C72 -0x8CDD 0x5C73 -0x8CDE 0x5C74 -0x8CDF 0x5C75 -0x8CE0 0x5C76 -0x8CE1 0x5C77 -0x8CE2 0x5C78 -0x8CE3 0x5C7B -0x8CE4 0x5C7C -0x8CE5 0x5C7D -0x8CE6 0x5C7E -0x8CE7 0x5C80 -0x8CE8 0x5C83 -0x8CE9 0x5C84 -0x8CEA 0x5C85 -0x8CEB 0x5C86 -0x8CEC 0x5C87 -0x8CED 0x5C89 -0x8CEE 0x5C8A -0x8CEF 0x5C8B -0x8CF0 0x5C8E -0x8CF1 0x5C8F -0x8CF2 0x5C92 -0x8CF3 0x5C93 -0x8CF4 0x5C95 -0x8CF5 0x5C9D -0x8CF6 0x5C9E -0x8CF7 0x5C9F -0x8CF8 0x5CA0 -0x8CF9 0x5CA1 -0x8CFA 0x5CA4 -0x8CFB 0x5CA5 -0x8CFC 0x5CA6 -0x8CFD 0x5CA7 -0x8CFE 0x5CA8 -0x8D40 0x5CAA -0x8D41 0x5CAE -0x8D42 0x5CAF -0x8D43 0x5CB0 -0x8D44 0x5CB2 -0x8D45 0x5CB4 -0x8D46 0x5CB6 -0x8D47 0x5CB9 -0x8D48 0x5CBA -0x8D49 0x5CBB -0x8D4A 0x5CBC -0x8D4B 0x5CBE -0x8D4C 0x5CC0 -0x8D4D 0x5CC2 -0x8D4E 0x5CC3 -0x8D4F 0x5CC5 -0x8D50 0x5CC6 -0x8D51 0x5CC7 -0x8D52 0x5CC8 -0x8D53 0x5CC9 -0x8D54 0x5CCA -0x8D55 0x5CCC -0x8D56 0x5CCD -0x8D57 0x5CCE -0x8D58 0x5CCF -0x8D59 0x5CD0 -0x8D5A 0x5CD1 -0x8D5B 0x5CD3 -0x8D5C 0x5CD4 -0x8D5D 0x5CD5 -0x8D5E 0x5CD6 -0x8D5F 0x5CD7 -0x8D60 0x5CD8 -0x8D61 0x5CDA -0x8D62 0x5CDB -0x8D63 0x5CDC -0x8D64 0x5CDD -0x8D65 0x5CDE -0x8D66 0x5CDF -0x8D67 0x5CE0 -0x8D68 0x5CE2 -0x8D69 0x5CE3 -0x8D6A 0x5CE7 -0x8D6B 0x5CE9 -0x8D6C 0x5CEB -0x8D6D 0x5CEC -0x8D6E 0x5CEE -0x8D6F 0x5CEF -0x8D70 0x5CF1 -0x8D71 0x5CF2 -0x8D72 0x5CF3 -0x8D73 0x5CF4 -0x8D74 0x5CF5 -0x8D75 0x5CF6 -0x8D76 0x5CF7 -0x8D77 0x5CF8 -0x8D78 0x5CF9 -0x8D79 0x5CFA -0x8D7A 0x5CFC -0x8D7B 0x5CFD -0x8D7C 0x5CFE -0x8D7D 0x5CFF -0x8D7E 0x5D00 -0x8D80 0x5D01 -0x8D81 0x5D04 -0x8D82 0x5D05 -0x8D83 0x5D08 -0x8D84 0x5D09 -0x8D85 0x5D0A -0x8D86 0x5D0B -0x8D87 0x5D0C -0x8D88 0x5D0D -0x8D89 0x5D0F -0x8D8A 0x5D10 -0x8D8B 0x5D11 -0x8D8C 0x5D12 -0x8D8D 0x5D13 -0x8D8E 0x5D15 -0x8D8F 0x5D17 -0x8D90 0x5D18 -0x8D91 0x5D19 -0x8D92 0x5D1A -0x8D93 0x5D1C -0x8D94 0x5D1D -0x8D95 0x5D1F -0x8D96 0x5D20 -0x8D97 0x5D21 -0x8D98 0x5D22 -0x8D99 0x5D23 -0x8D9A 0x5D25 -0x8D9B 0x5D28 -0x8D9C 0x5D2A -0x8D9D 0x5D2B -0x8D9E 0x5D2C -0x8D9F 0x5D2F -0x8DA0 0x5D30 -0x8DA1 0x5D31 -0x8DA2 0x5D32 -0x8DA3 0x5D33 -0x8DA4 0x5D35 -0x8DA5 0x5D36 -0x8DA6 0x5D37 -0x8DA7 0x5D38 -0x8DA8 0x5D39 -0x8DA9 0x5D3A -0x8DAA 0x5D3B -0x8DAB 0x5D3C -0x8DAC 0x5D3F -0x8DAD 0x5D40 -0x8DAE 0x5D41 -0x8DAF 0x5D42 -0x8DB0 0x5D43 -0x8DB1 0x5D44 -0x8DB2 0x5D45 -0x8DB3 0x5D46 -0x8DB4 0x5D48 -0x8DB5 0x5D49 -0x8DB6 0x5D4D -0x8DB7 0x5D4E -0x8DB8 0x5D4F -0x8DB9 0x5D50 -0x8DBA 0x5D51 -0x8DBB 0x5D52 -0x8DBC 0x5D53 -0x8DBD 0x5D54 -0x8DBE 0x5D55 -0x8DBF 0x5D56 -0x8DC0 0x5D57 -0x8DC1 0x5D59 -0x8DC2 0x5D5A -0x8DC3 0x5D5C -0x8DC4 0x5D5E -0x8DC5 0x5D5F -0x8DC6 0x5D60 -0x8DC7 0x5D61 -0x8DC8 0x5D62 -0x8DC9 0x5D63 -0x8DCA 0x5D64 -0x8DCB 0x5D65 -0x8DCC 0x5D66 -0x8DCD 0x5D67 -0x8DCE 0x5D68 -0x8DCF 0x5D6A -0x8DD0 0x5D6D -0x8DD1 0x5D6E -0x8DD2 0x5D70 -0x8DD3 0x5D71 -0x8DD4 0x5D72 -0x8DD5 0x5D73 -0x8DD6 0x5D75 -0x8DD7 0x5D76 -0x8DD8 0x5D77 -0x8DD9 0x5D78 -0x8DDA 0x5D79 -0x8DDB 0x5D7A -0x8DDC 0x5D7B -0x8DDD 0x5D7C -0x8DDE 0x5D7D -0x8DDF 0x5D7E -0x8DE0 0x5D7F -0x8DE1 0x5D80 -0x8DE2 0x5D81 -0x8DE3 0x5D83 -0x8DE4 0x5D84 -0x8DE5 0x5D85 -0x8DE6 0x5D86 -0x8DE7 0x5D87 -0x8DE8 0x5D88 -0x8DE9 0x5D89 -0x8DEA 0x5D8A -0x8DEB 0x5D8B -0x8DEC 0x5D8C -0x8DED 0x5D8D -0x8DEE 0x5D8E -0x8DEF 0x5D8F -0x8DF0 0x5D90 -0x8DF1 0x5D91 -0x8DF2 0x5D92 -0x8DF3 0x5D93 -0x8DF4 0x5D94 -0x8DF5 0x5D95 -0x8DF6 0x5D96 -0x8DF7 0x5D97 -0x8DF8 0x5D98 -0x8DF9 0x5D9A -0x8DFA 0x5D9B -0x8DFB 0x5D9C -0x8DFC 0x5D9E -0x8DFD 0x5D9F -0x8DFE 0x5DA0 -0x8E40 0x5DA1 -0x8E41 0x5DA2 -0x8E42 0x5DA3 -0x8E43 0x5DA4 -0x8E44 0x5DA5 -0x8E45 0x5DA6 -0x8E46 0x5DA7 -0x8E47 0x5DA8 -0x8E48 0x5DA9 -0x8E49 0x5DAA -0x8E4A 0x5DAB -0x8E4B 0x5DAC -0x8E4C 0x5DAD -0x8E4D 0x5DAE -0x8E4E 0x5DAF -0x8E4F 0x5DB0 -0x8E50 0x5DB1 -0x8E51 0x5DB2 -0x8E52 0x5DB3 -0x8E53 0x5DB4 -0x8E54 0x5DB5 -0x8E55 0x5DB6 -0x8E56 0x5DB8 -0x8E57 0x5DB9 -0x8E58 0x5DBA -0x8E59 0x5DBB -0x8E5A 0x5DBC -0x8E5B 0x5DBD -0x8E5C 0x5DBE -0x8E5D 0x5DBF -0x8E5E 0x5DC0 -0x8E5F 0x5DC1 -0x8E60 0x5DC2 -0x8E61 0x5DC3 -0x8E62 0x5DC4 -0x8E63 0x5DC6 -0x8E64 0x5DC7 -0x8E65 0x5DC8 -0x8E66 0x5DC9 -0x8E67 0x5DCA -0x8E68 0x5DCB -0x8E69 0x5DCC -0x8E6A 0x5DCE -0x8E6B 0x5DCF -0x8E6C 0x5DD0 -0x8E6D 0x5DD1 -0x8E6E 0x5DD2 -0x8E6F 0x5DD3 -0x8E70 0x5DD4 -0x8E71 0x5DD5 -0x8E72 0x5DD6 -0x8E73 0x5DD7 -0x8E74 0x5DD8 -0x8E75 0x5DD9 -0x8E76 0x5DDA -0x8E77 0x5DDC -0x8E78 0x5DDF -0x8E79 0x5DE0 -0x8E7A 0x5DE3 -0x8E7B 0x5DE4 -0x8E7C 0x5DEA -0x8E7D 0x5DEC -0x8E7E 0x5DED -0x8E80 0x5DF0 -0x8E81 0x5DF5 -0x8E82 0x5DF6 -0x8E83 0x5DF8 -0x8E84 0x5DF9 -0x8E85 0x5DFA -0x8E86 0x5DFB -0x8E87 0x5DFC -0x8E88 0x5DFF -0x8E89 0x5E00 -0x8E8A 0x5E04 -0x8E8B 0x5E07 -0x8E8C 0x5E09 -0x8E8D 0x5E0A -0x8E8E 0x5E0B -0x8E8F 0x5E0D -0x8E90 0x5E0E -0x8E91 0x5E12 -0x8E92 0x5E13 -0x8E93 0x5E17 -0x8E94 0x5E1E -0x8E95 0x5E1F -0x8E96 0x5E20 -0x8E97 0x5E21 -0x8E98 0x5E22 -0x8E99 0x5E23 -0x8E9A 0x5E24 -0x8E9B 0x5E25 -0x8E9C 0x5E28 -0x8E9D 0x5E29 -0x8E9E 0x5E2A -0x8E9F 0x5E2B -0x8EA0 0x5E2C -0x8EA1 0x5E2F -0x8EA2 0x5E30 -0x8EA3 0x5E32 -0x8EA4 0x5E33 -0x8EA5 0x5E34 -0x8EA6 0x5E35 -0x8EA7 0x5E36 -0x8EA8 0x5E39 -0x8EA9 0x5E3A -0x8EAA 0x5E3E -0x8EAB 0x5E3F -0x8EAC 0x5E40 -0x8EAD 0x5E41 -0x8EAE 0x5E43 -0x8EAF 0x5E46 -0x8EB0 0x5E47 -0x8EB1 0x5E48 -0x8EB2 0x5E49 -0x8EB3 0x5E4A -0x8EB4 0x5E4B -0x8EB5 0x5E4D -0x8EB6 0x5E4E -0x8EB7 0x5E4F -0x8EB8 0x5E50 -0x8EB9 0x5E51 -0x8EBA 0x5E52 -0x8EBB 0x5E53 -0x8EBC 0x5E56 -0x8EBD 0x5E57 -0x8EBE 0x5E58 -0x8EBF 0x5E59 -0x8EC0 0x5E5A -0x8EC1 0x5E5C -0x8EC2 0x5E5D -0x8EC3 0x5E5F -0x8EC4 0x5E60 -0x8EC5 0x5E63 -0x8EC6 0x5E64 -0x8EC7 0x5E65 -0x8EC8 0x5E66 -0x8EC9 0x5E67 -0x8ECA 0x5E68 -0x8ECB 0x5E69 -0x8ECC 0x5E6A -0x8ECD 0x5E6B -0x8ECE 0x5E6C -0x8ECF 0x5E6D -0x8ED0 0x5E6E -0x8ED1 0x5E6F -0x8ED2 0x5E70 -0x8ED3 0x5E71 -0x8ED4 0x5E75 -0x8ED5 0x5E77 -0x8ED6 0x5E79 -0x8ED7 0x5E7E -0x8ED8 0x5E81 -0x8ED9 0x5E82 -0x8EDA 0x5E83 -0x8EDB 0x5E85 -0x8EDC 0x5E88 -0x8EDD 0x5E89 -0x8EDE 0x5E8C -0x8EDF 0x5E8D -0x8EE0 0x5E8E -0x8EE1 0x5E92 -0x8EE2 0x5E98 -0x8EE3 0x5E9B -0x8EE4 0x5E9D -0x8EE5 0x5EA1 -0x8EE6 0x5EA2 -0x8EE7 0x5EA3 -0x8EE8 0x5EA4 -0x8EE9 0x5EA8 -0x8EEA 0x5EA9 -0x8EEB 0x5EAA -0x8EEC 0x5EAB -0x8EED 0x5EAC -0x8EEE 0x5EAE -0x8EEF 0x5EAF -0x8EF0 0x5EB0 -0x8EF1 0x5EB1 -0x8EF2 0x5EB2 -0x8EF3 0x5EB4 -0x8EF4 0x5EBA -0x8EF5 0x5EBB -0x8EF6 0x5EBC -0x8EF7 0x5EBD -0x8EF8 0x5EBF -0x8EF9 0x5EC0 -0x8EFA 0x5EC1 -0x8EFB 0x5EC2 -0x8EFC 0x5EC3 -0x8EFD 0x5EC4 -0x8EFE 0x5EC5 -0x8F40 0x5EC6 -0x8F41 0x5EC7 -0x8F42 0x5EC8 -0x8F43 0x5ECB -0x8F44 0x5ECC -0x8F45 0x5ECD -0x8F46 0x5ECE -0x8F47 0x5ECF -0x8F48 0x5ED0 -0x8F49 0x5ED4 -0x8F4A 0x5ED5 -0x8F4B 0x5ED7 -0x8F4C 0x5ED8 -0x8F4D 0x5ED9 -0x8F4E 0x5EDA -0x8F4F 0x5EDC -0x8F50 0x5EDD -0x8F51 0x5EDE -0x8F52 0x5EDF -0x8F53 0x5EE0 -0x8F54 0x5EE1 -0x8F55 0x5EE2 -0x8F56 0x5EE3 -0x8F57 0x5EE4 -0x8F58 0x5EE5 -0x8F59 0x5EE6 -0x8F5A 0x5EE7 -0x8F5B 0x5EE9 -0x8F5C 0x5EEB -0x8F5D 0x5EEC -0x8F5E 0x5EED -0x8F5F 0x5EEE -0x8F60 0x5EEF -0x8F61 0x5EF0 -0x8F62 0x5EF1 -0x8F63 0x5EF2 -0x8F64 0x5EF3 -0x8F65 0x5EF5 -0x8F66 0x5EF8 -0x8F67 0x5EF9 -0x8F68 0x5EFB -0x8F69 0x5EFC -0x8F6A 0x5EFD -0x8F6B 0x5F05 -0x8F6C 0x5F06 -0x8F6D 0x5F07 -0x8F6E 0x5F09 -0x8F6F 0x5F0C -0x8F70 0x5F0D -0x8F71 0x5F0E -0x8F72 0x5F10 -0x8F73 0x5F12 -0x8F74 0x5F14 -0x8F75 0x5F16 -0x8F76 0x5F19 -0x8F77 0x5F1A -0x8F78 0x5F1C -0x8F79 0x5F1D -0x8F7A 0x5F1E -0x8F7B 0x5F21 -0x8F7C 0x5F22 -0x8F7D 0x5F23 -0x8F7E 0x5F24 -0x8F80 0x5F28 -0x8F81 0x5F2B -0x8F82 0x5F2C -0x8F83 0x5F2E -0x8F84 0x5F30 -0x8F85 0x5F32 -0x8F86 0x5F33 -0x8F87 0x5F34 -0x8F88 0x5F35 -0x8F89 0x5F36 -0x8F8A 0x5F37 -0x8F8B 0x5F38 -0x8F8C 0x5F3B -0x8F8D 0x5F3D -0x8F8E 0x5F3E -0x8F8F 0x5F3F -0x8F90 0x5F41 -0x8F91 0x5F42 -0x8F92 0x5F43 -0x8F93 0x5F44 -0x8F94 0x5F45 -0x8F95 0x5F46 -0x8F96 0x5F47 -0x8F97 0x5F48 -0x8F98 0x5F49 -0x8F99 0x5F4A -0x8F9A 0x5F4B -0x8F9B 0x5F4C -0x8F9C 0x5F4D -0x8F9D 0x5F4E -0x8F9E 0x5F4F -0x8F9F 0x5F51 -0x8FA0 0x5F54 -0x8FA1 0x5F59 -0x8FA2 0x5F5A -0x8FA3 0x5F5B -0x8FA4 0x5F5C -0x8FA5 0x5F5E -0x8FA6 0x5F5F -0x8FA7 0x5F60 -0x8FA8 0x5F63 -0x8FA9 0x5F65 -0x8FAA 0x5F67 -0x8FAB 0x5F68 -0x8FAC 0x5F6B -0x8FAD 0x5F6E -0x8FAE 0x5F6F -0x8FAF 0x5F72 -0x8FB0 0x5F74 -0x8FB1 0x5F75 -0x8FB2 0x5F76 -0x8FB3 0x5F78 -0x8FB4 0x5F7A -0x8FB5 0x5F7D -0x8FB6 0x5F7E -0x8FB7 0x5F7F -0x8FB8 0x5F83 -0x8FB9 0x5F86 -0x8FBA 0x5F8D -0x8FBB 0x5F8E -0x8FBC 0x5F8F -0x8FBD 0x5F91 -0x8FBE 0x5F93 -0x8FBF 0x5F94 -0x8FC0 0x5F96 -0x8FC1 0x5F9A -0x8FC2 0x5F9B -0x8FC3 0x5F9D -0x8FC4 0x5F9E -0x8FC5 0x5F9F -0x8FC6 0x5FA0 -0x8FC7 0x5FA2 -0x8FC8 0x5FA3 -0x8FC9 0x5FA4 -0x8FCA 0x5FA5 -0x8FCB 0x5FA6 -0x8FCC 0x5FA7 -0x8FCD 0x5FA9 -0x8FCE 0x5FAB -0x8FCF 0x5FAC -0x8FD0 0x5FAF -0x8FD1 0x5FB0 -0x8FD2 0x5FB1 -0x8FD3 0x5FB2 -0x8FD4 0x5FB3 -0x8FD5 0x5FB4 -0x8FD6 0x5FB6 -0x8FD7 0x5FB8 -0x8FD8 0x5FB9 -0x8FD9 0x5FBA -0x8FDA 0x5FBB -0x8FDB 0x5FBE -0x8FDC 0x5FBF -0x8FDD 0x5FC0 -0x8FDE 0x5FC1 -0x8FDF 0x5FC2 -0x8FE0 0x5FC7 -0x8FE1 0x5FC8 -0x8FE2 0x5FCA -0x8FE3 0x5FCB -0x8FE4 0x5FCE -0x8FE5 0x5FD3 -0x8FE6 0x5FD4 -0x8FE7 0x5FD5 -0x8FE8 0x5FDA -0x8FE9 0x5FDB -0x8FEA 0x5FDC -0x8FEB 0x5FDE -0x8FEC 0x5FDF -0x8FED 0x5FE2 -0x8FEE 0x5FE3 -0x8FEF 0x5FE5 -0x8FF0 0x5FE6 -0x8FF1 0x5FE8 -0x8FF2 0x5FE9 -0x8FF3 0x5FEC -0x8FF4 0x5FEF -0x8FF5 0x5FF0 -0x8FF6 0x5FF2 -0x8FF7 0x5FF3 -0x8FF8 0x5FF4 -0x8FF9 0x5FF6 -0x8FFA 0x5FF7 -0x8FFB 0x5FF9 -0x8FFC 0x5FFA -0x8FFD 0x5FFC -0x8FFE 0x6007 -0x9040 0x6008 -0x9041 0x6009 -0x9042 0x600B -0x9043 0x600C -0x9044 0x6010 -0x9045 0x6011 -0x9046 0x6013 -0x9047 0x6017 -0x9048 0x6018 -0x9049 0x601A -0x904A 0x601E -0x904B 0x601F -0x904C 0x6022 -0x904D 0x6023 -0x904E 0x6024 -0x904F 0x602C -0x9050 0x602D -0x9051 0x602E -0x9052 0x6030 -0x9053 0x6031 -0x9054 0x6032 -0x9055 0x6033 -0x9056 0x6034 -0x9057 0x6036 -0x9058 0x6037 -0x9059 0x6038 -0x905A 0x6039 -0x905B 0x603A -0x905C 0x603D -0x905D 0x603E -0x905E 0x6040 -0x905F 0x6044 -0x9060 0x6045 -0x9061 0x6046 -0x9062 0x6047 -0x9063 0x6048 -0x9064 0x6049 -0x9065 0x604A -0x9066 0x604C -0x9067 0x604E -0x9068 0x604F -0x9069 0x6051 -0x906A 0x6053 -0x906B 0x6054 -0x906C 0x6056 -0x906D 0x6057 -0x906E 0x6058 -0x906F 0x605B -0x9070 0x605C -0x9071 0x605E -0x9072 0x605F -0x9073 0x6060 -0x9074 0x6061 -0x9075 0x6065 -0x9076 0x6066 -0x9077 0x606E -0x9078 0x6071 -0x9079 0x6072 -0x907A 0x6074 -0x907B 0x6075 -0x907C 0x6077 -0x907D 0x607E -0x907E 0x6080 -0x9080 0x6081 -0x9081 0x6082 -0x9082 0x6085 -0x9083 0x6086 -0x9084 0x6087 -0x9085 0x6088 -0x9086 0x608A -0x9087 0x608B -0x9088 0x608E -0x9089 0x608F -0x908A 0x6090 -0x908B 0x6091 -0x908C 0x6093 -0x908D 0x6095 -0x908E 0x6097 -0x908F 0x6098 -0x9090 0x6099 -0x9091 0x609C -0x9092 0x609E -0x9093 0x60A1 -0x9094 0x60A2 -0x9095 0x60A4 -0x9096 0x60A5 -0x9097 0x60A7 -0x9098 0x60A9 -0x9099 0x60AA -0x909A 0x60AE -0x909B 0x60B0 -0x909C 0x60B3 -0x909D 0x60B5 -0x909E 0x60B6 -0x909F 0x60B7 -0x90A0 0x60B9 -0x90A1 0x60BA -0x90A2 0x60BD -0x90A3 0x60BE -0x90A4 0x60BF -0x90A5 0x60C0 -0x90A6 0x60C1 -0x90A7 0x60C2 -0x90A8 0x60C3 -0x90A9 0x60C4 -0x90AA 0x60C7 -0x90AB 0x60C8 -0x90AC 0x60C9 -0x90AD 0x60CC -0x90AE 0x60CD -0x90AF 0x60CE -0x90B0 0x60CF -0x90B1 0x60D0 -0x90B2 0x60D2 -0x90B3 0x60D3 -0x90B4 0x60D4 -0x90B5 0x60D6 -0x90B6 0x60D7 -0x90B7 0x60D9 -0x90B8 0x60DB -0x90B9 0x60DE -0x90BA 0x60E1 -0x90BB 0x60E2 -0x90BC 0x60E3 -0x90BD 0x60E4 -0x90BE 0x60E5 -0x90BF 0x60EA -0x90C0 0x60F1 -0x90C1 0x60F2 -0x90C2 0x60F5 -0x90C3 0x60F7 -0x90C4 0x60F8 -0x90C5 0x60FB -0x90C6 0x60FC -0x90C7 0x60FD -0x90C8 0x60FE -0x90C9 0x60FF -0x90CA 0x6102 -0x90CB 0x6103 -0x90CC 0x6104 -0x90CD 0x6105 -0x90CE 0x6107 -0x90CF 0x610A -0x90D0 0x610B -0x90D1 0x610C -0x90D2 0x6110 -0x90D3 0x6111 -0x90D4 0x6112 -0x90D5 0x6113 -0x90D6 0x6114 -0x90D7 0x6116 -0x90D8 0x6117 -0x90D9 0x6118 -0x90DA 0x6119 -0x90DB 0x611B -0x90DC 0x611C -0x90DD 0x611D -0x90DE 0x611E -0x90DF 0x6121 -0x90E0 0x6122 -0x90E1 0x6125 -0x90E2 0x6128 -0x90E3 0x6129 -0x90E4 0x612A -0x90E5 0x612C -0x90E6 0x612D -0x90E7 0x612E -0x90E8 0x612F -0x90E9 0x6130 -0x90EA 0x6131 -0x90EB 0x6132 -0x90EC 0x6133 -0x90ED 0x6134 -0x90EE 0x6135 -0x90EF 0x6136 -0x90F0 0x6137 -0x90F1 0x6138 -0x90F2 0x6139 -0x90F3 0x613A -0x90F4 0x613B -0x90F5 0x613C -0x90F6 0x613D -0x90F7 0x613E -0x90F8 0x6140 -0x90F9 0x6141 -0x90FA 0x6142 -0x90FB 0x6143 -0x90FC 0x6144 -0x90FD 0x6145 -0x90FE 0x6146 -0x9140 0x6147 -0x9141 0x6149 -0x9142 0x614B -0x9143 0x614D -0x9144 0x614F -0x9145 0x6150 -0x9146 0x6152 -0x9147 0x6153 -0x9148 0x6154 -0x9149 0x6156 -0x914A 0x6157 -0x914B 0x6158 -0x914C 0x6159 -0x914D 0x615A -0x914E 0x615B -0x914F 0x615C -0x9150 0x615E -0x9151 0x615F -0x9152 0x6160 -0x9153 0x6161 -0x9154 0x6163 -0x9155 0x6164 -0x9156 0x6165 -0x9157 0x6166 -0x9158 0x6169 -0x9159 0x616A -0x915A 0x616B -0x915B 0x616C -0x915C 0x616D -0x915D 0x616E -0x915E 0x616F -0x915F 0x6171 -0x9160 0x6172 -0x9161 0x6173 -0x9162 0x6174 -0x9163 0x6176 -0x9164 0x6178 -0x9165 0x6179 -0x9166 0x617A -0x9167 0x617B -0x9168 0x617C -0x9169 0x617D -0x916A 0x617E -0x916B 0x617F -0x916C 0x6180 -0x916D 0x6181 -0x916E 0x6182 -0x916F 0x6183 -0x9170 0x6184 -0x9171 0x6185 -0x9172 0x6186 -0x9173 0x6187 -0x9174 0x6188 -0x9175 0x6189 -0x9176 0x618A -0x9177 0x618C -0x9178 0x618D -0x9179 0x618F -0x917A 0x6190 -0x917B 0x6191 -0x917C 0x6192 -0x917D 0x6193 -0x917E 0x6195 -0x9180 0x6196 -0x9181 0x6197 -0x9182 0x6198 -0x9183 0x6199 -0x9184 0x619A -0x9185 0x619B -0x9186 0x619C -0x9187 0x619E -0x9188 0x619F -0x9189 0x61A0 -0x918A 0x61A1 -0x918B 0x61A2 -0x918C 0x61A3 -0x918D 0x61A4 -0x918E 0x61A5 -0x918F 0x61A6 -0x9190 0x61AA -0x9191 0x61AB -0x9192 0x61AD -0x9193 0x61AE -0x9194 0x61AF -0x9195 0x61B0 -0x9196 0x61B1 -0x9197 0x61B2 -0x9198 0x61B3 -0x9199 0x61B4 -0x919A 0x61B5 -0x919B 0x61B6 -0x919C 0x61B8 -0x919D 0x61B9 -0x919E 0x61BA -0x919F 0x61BB -0x91A0 0x61BC -0x91A1 0x61BD -0x91A2 0x61BF -0x91A3 0x61C0 -0x91A4 0x61C1 -0x91A5 0x61C3 -0x91A6 0x61C4 -0x91A7 0x61C5 -0x91A8 0x61C6 -0x91A9 0x61C7 -0x91AA 0x61C9 -0x91AB 0x61CC -0x91AC 0x61CD -0x91AD 0x61CE -0x91AE 0x61CF -0x91AF 0x61D0 -0x91B0 0x61D3 -0x91B1 0x61D5 -0x91B2 0x61D6 -0x91B3 0x61D7 -0x91B4 0x61D8 -0x91B5 0x61D9 -0x91B6 0x61DA -0x91B7 0x61DB -0x91B8 0x61DC -0x91B9 0x61DD -0x91BA 0x61DE -0x91BB 0x61DF -0x91BC 0x61E0 -0x91BD 0x61E1 -0x91BE 0x61E2 -0x91BF 0x61E3 -0x91C0 0x61E4 -0x91C1 0x61E5 -0x91C2 0x61E7 -0x91C3 0x61E8 -0x91C4 0x61E9 -0x91C5 0x61EA -0x91C6 0x61EB -0x91C7 0x61EC -0x91C8 0x61ED -0x91C9 0x61EE -0x91CA 0x61EF -0x91CB 0x61F0 -0x91CC 0x61F1 -0x91CD 0x61F2 -0x91CE 0x61F3 -0x91CF 0x61F4 -0x91D0 0x61F6 -0x91D1 0x61F7 -0x91D2 0x61F8 -0x91D3 0x61F9 -0x91D4 0x61FA -0x91D5 0x61FB -0x91D6 0x61FC -0x91D7 0x61FD -0x91D8 0x61FE -0x91D9 0x6200 -0x91DA 0x6201 -0x91DB 0x6202 -0x91DC 0x6203 -0x91DD 0x6204 -0x91DE 0x6205 -0x91DF 0x6207 -0x91E0 0x6209 -0x91E1 0x6213 -0x91E2 0x6214 -0x91E3 0x6219 -0x91E4 0x621C -0x91E5 0x621D -0x91E6 0x621E -0x91E7 0x6220 -0x91E8 0x6223 -0x91E9 0x6226 -0x91EA 0x6227 -0x91EB 0x6228 -0x91EC 0x6229 -0x91ED 0x622B -0x91EE 0x622D -0x91EF 0x622F -0x91F0 0x6230 -0x91F1 0x6231 -0x91F2 0x6232 -0x91F3 0x6235 -0x91F4 0x6236 -0x91F5 0x6238 -0x91F6 0x6239 -0x91F7 0x623A -0x91F8 0x623B -0x91F9 0x623C -0x91FA 0x6242 -0x91FB 0x6244 -0x91FC 0x6245 -0x91FD 0x6246 -0x91FE 0x624A -0x9240 0x624F -0x9241 0x6250 -0x9242 0x6255 -0x9243 0x6256 -0x9244 0x6257 -0x9245 0x6259 -0x9246 0x625A -0x9247 0x625C -0x9248 0x625D -0x9249 0x625E -0x924A 0x625F -0x924B 0x6260 -0x924C 0x6261 -0x924D 0x6262 -0x924E 0x6264 -0x924F 0x6265 -0x9250 0x6268 -0x9251 0x6271 -0x9252 0x6272 -0x9253 0x6274 -0x9254 0x6275 -0x9255 0x6277 -0x9256 0x6278 -0x9257 0x627A -0x9258 0x627B -0x9259 0x627D -0x925A 0x6281 -0x925B 0x6282 -0x925C 0x6283 -0x925D 0x6285 -0x925E 0x6286 -0x925F 0x6287 -0x9260 0x6288 -0x9261 0x628B -0x9262 0x628C -0x9263 0x628D -0x9264 0x628E -0x9265 0x628F -0x9266 0x6290 -0x9267 0x6294 -0x9268 0x6299 -0x9269 0x629C -0x926A 0x629D -0x926B 0x629E -0x926C 0x62A3 -0x926D 0x62A6 -0x926E 0x62A7 -0x926F 0x62A9 -0x9270 0x62AA -0x9271 0x62AD -0x9272 0x62AE -0x9273 0x62AF -0x9274 0x62B0 -0x9275 0x62B2 -0x9276 0x62B3 -0x9277 0x62B4 -0x9278 0x62B6 -0x9279 0x62B7 -0x927A 0x62B8 -0x927B 0x62BA -0x927C 0x62BE -0x927D 0x62C0 -0x927E 0x62C1 -0x9280 0x62C3 -0x9281 0x62CB -0x9282 0x62CF -0x9283 0x62D1 -0x9284 0x62D5 -0x9285 0x62DD -0x9286 0x62DE -0x9287 0x62E0 -0x9288 0x62E1 -0x9289 0x62E4 -0x928A 0x62EA -0x928B 0x62EB -0x928C 0x62F0 -0x928D 0x62F2 -0x928E 0x62F5 -0x928F 0x62F8 -0x9290 0x62F9 -0x9291 0x62FA -0x9292 0x62FB -0x9293 0x6300 -0x9294 0x6303 -0x9295 0x6304 -0x9296 0x6305 -0x9297 0x6306 -0x9298 0x630A -0x9299 0x630B -0x929A 0x630C -0x929B 0x630D -0x929C 0x630F -0x929D 0x6310 -0x929E 0x6312 -0x929F 0x6313 -0x92A0 0x6314 -0x92A1 0x6315 -0x92A2 0x6317 -0x92A3 0x6318 -0x92A4 0x6319 -0x92A5 0x631C -0x92A6 0x6326 -0x92A7 0x6327 -0x92A8 0x6329 -0x92A9 0x632C -0x92AA 0x632D -0x92AB 0x632E -0x92AC 0x6330 -0x92AD 0x6331 -0x92AE 0x6333 -0x92AF 0x6334 -0x92B0 0x6335 -0x92B1 0x6336 -0x92B2 0x6337 -0x92B3 0x6338 -0x92B4 0x633B -0x92B5 0x633C -0x92B6 0x633E -0x92B7 0x633F -0x92B8 0x6340 -0x92B9 0x6341 -0x92BA 0x6344 -0x92BB 0x6347 -0x92BC 0x6348 -0x92BD 0x634A -0x92BE 0x6351 -0x92BF 0x6352 -0x92C0 0x6353 -0x92C1 0x6354 -0x92C2 0x6356 -0x92C3 0x6357 -0x92C4 0x6358 -0x92C5 0x6359 -0x92C6 0x635A -0x92C7 0x635B -0x92C8 0x635C -0x92C9 0x635D -0x92CA 0x6360 -0x92CB 0x6364 -0x92CC 0x6365 -0x92CD 0x6366 -0x92CE 0x6368 -0x92CF 0x636A -0x92D0 0x636B -0x92D1 0x636C -0x92D2 0x636F -0x92D3 0x6370 -0x92D4 0x6372 -0x92D5 0x6373 -0x92D6 0x6374 -0x92D7 0x6375 -0x92D8 0x6378 -0x92D9 0x6379 -0x92DA 0x637C -0x92DB 0x637D -0x92DC 0x637E -0x92DD 0x637F -0x92DE 0x6381 -0x92DF 0x6383 -0x92E0 0x6384 -0x92E1 0x6385 -0x92E2 0x6386 -0x92E3 0x638B -0x92E4 0x638D -0x92E5 0x6391 -0x92E6 0x6393 -0x92E7 0x6394 -0x92E8 0x6395 -0x92E9 0x6397 -0x92EA 0x6399 -0x92EB 0x639A -0x92EC 0x639B -0x92ED 0x639C -0x92EE 0x639D -0x92EF 0x639E -0x92F0 0x639F -0x92F1 0x63A1 -0x92F2 0x63A4 -0x92F3 0x63A6 -0x92F4 0x63AB -0x92F5 0x63AF -0x92F6 0x63B1 -0x92F7 0x63B2 -0x92F8 0x63B5 -0x92F9 0x63B6 -0x92FA 0x63B9 -0x92FB 0x63BB -0x92FC 0x63BD -0x92FD 0x63BF -0x92FE 0x63C0 -0x9340 0x63C1 -0x9341 0x63C2 -0x9342 0x63C3 -0x9343 0x63C5 -0x9344 0x63C7 -0x9345 0x63C8 -0x9346 0x63CA -0x9347 0x63CB -0x9348 0x63CC -0x9349 0x63D1 -0x934A 0x63D3 -0x934B 0x63D4 -0x934C 0x63D5 -0x934D 0x63D7 -0x934E 0x63D8 -0x934F 0x63D9 -0x9350 0x63DA -0x9351 0x63DB -0x9352 0x63DC -0x9353 0x63DD -0x9354 0x63DF -0x9355 0x63E2 -0x9356 0x63E4 -0x9357 0x63E5 -0x9358 0x63E6 -0x9359 0x63E7 -0x935A 0x63E8 -0x935B 0x63EB -0x935C 0x63EC -0x935D 0x63EE -0x935E 0x63EF -0x935F 0x63F0 -0x9360 0x63F1 -0x9361 0x63F3 -0x9362 0x63F5 -0x9363 0x63F7 -0x9364 0x63F9 -0x9365 0x63FA -0x9366 0x63FB -0x9367 0x63FC -0x9368 0x63FE -0x9369 0x6403 -0x936A 0x6404 -0x936B 0x6406 -0x936C 0x6407 -0x936D 0x6408 -0x936E 0x6409 -0x936F 0x640A -0x9370 0x640D -0x9371 0x640E -0x9372 0x6411 -0x9373 0x6412 -0x9374 0x6415 -0x9375 0x6416 -0x9376 0x6417 -0x9377 0x6418 -0x9378 0x6419 -0x9379 0x641A -0x937A 0x641D -0x937B 0x641F -0x937C 0x6422 -0x937D 0x6423 -0x937E 0x6424 -0x9380 0x6425 -0x9381 0x6427 -0x9382 0x6428 -0x9383 0x6429 -0x9384 0x642B -0x9385 0x642E -0x9386 0x642F -0x9387 0x6430 -0x9388 0x6431 -0x9389 0x6432 -0x938A 0x6433 -0x938B 0x6435 -0x938C 0x6436 -0x938D 0x6437 -0x938E 0x6438 -0x938F 0x6439 -0x9390 0x643B -0x9391 0x643C -0x9392 0x643E -0x9393 0x6440 -0x9394 0x6442 -0x9395 0x6443 -0x9396 0x6449 -0x9397 0x644B -0x9398 0x644C -0x9399 0x644D -0x939A 0x644E -0x939B 0x644F -0x939C 0x6450 -0x939D 0x6451 -0x939E 0x6453 -0x939F 0x6455 -0x93A0 0x6456 -0x93A1 0x6457 -0x93A2 0x6459 -0x93A3 0x645A -0x93A4 0x645B -0x93A5 0x645C -0x93A6 0x645D -0x93A7 0x645F -0x93A8 0x6460 -0x93A9 0x6461 -0x93AA 0x6462 -0x93AB 0x6463 -0x93AC 0x6464 -0x93AD 0x6465 -0x93AE 0x6466 -0x93AF 0x6468 -0x93B0 0x646A -0x93B1 0x646B -0x93B2 0x646C -0x93B3 0x646E -0x93B4 0x646F -0x93B5 0x6470 -0x93B6 0x6471 -0x93B7 0x6472 -0x93B8 0x6473 -0x93B9 0x6474 -0x93BA 0x6475 -0x93BB 0x6476 -0x93BC 0x6477 -0x93BD 0x647B -0x93BE 0x647C -0x93BF 0x647D -0x93C0 0x647E -0x93C1 0x647F -0x93C2 0x6480 -0x93C3 0x6481 -0x93C4 0x6483 -0x93C5 0x6486 -0x93C6 0x6488 -0x93C7 0x6489 -0x93C8 0x648A -0x93C9 0x648B -0x93CA 0x648C -0x93CB 0x648D -0x93CC 0x648E -0x93CD 0x648F -0x93CE 0x6490 -0x93CF 0x6493 -0x93D0 0x6494 -0x93D1 0x6497 -0x93D2 0x6498 -0x93D3 0x649A -0x93D4 0x649B -0x93D5 0x649C -0x93D6 0x649D -0x93D7 0x649F -0x93D8 0x64A0 -0x93D9 0x64A1 -0x93DA 0x64A2 -0x93DB 0x64A3 -0x93DC 0x64A5 -0x93DD 0x64A6 -0x93DE 0x64A7 -0x93DF 0x64A8 -0x93E0 0x64AA -0x93E1 0x64AB -0x93E2 0x64AF -0x93E3 0x64B1 -0x93E4 0x64B2 -0x93E5 0x64B3 -0x93E6 0x64B4 -0x93E7 0x64B6 -0x93E8 0x64B9 -0x93E9 0x64BB -0x93EA 0x64BD -0x93EB 0x64BE -0x93EC 0x64BF -0x93ED 0x64C1 -0x93EE 0x64C3 -0x93EF 0x64C4 -0x93F0 0x64C6 -0x93F1 0x64C7 -0x93F2 0x64C8 -0x93F3 0x64C9 -0x93F4 0x64CA -0x93F5 0x64CB -0x93F6 0x64CC -0x93F7 0x64CF -0x93F8 0x64D1 -0x93F9 0x64D3 -0x93FA 0x64D4 -0x93FB 0x64D5 -0x93FC 0x64D6 -0x93FD 0x64D9 -0x93FE 0x64DA -0x9440 0x64DB -0x9441 0x64DC -0x9442 0x64DD -0x9443 0x64DF -0x9444 0x64E0 -0x9445 0x64E1 -0x9446 0x64E3 -0x9447 0x64E5 -0x9448 0x64E7 -0x9449 0x64E8 -0x944A 0x64E9 -0x944B 0x64EA -0x944C 0x64EB -0x944D 0x64EC -0x944E 0x64ED -0x944F 0x64EE -0x9450 0x64EF -0x9451 0x64F0 -0x9452 0x64F1 -0x9453 0x64F2 -0x9454 0x64F3 -0x9455 0x64F4 -0x9456 0x64F5 -0x9457 0x64F6 -0x9458 0x64F7 -0x9459 0x64F8 -0x945A 0x64F9 -0x945B 0x64FA -0x945C 0x64FB -0x945D 0x64FC -0x945E 0x64FD -0x945F 0x64FE -0x9460 0x64FF -0x9461 0x6501 -0x9462 0x6502 -0x9463 0x6503 -0x9464 0x6504 -0x9465 0x6505 -0x9466 0x6506 -0x9467 0x6507 -0x9468 0x6508 -0x9469 0x650A -0x946A 0x650B -0x946B 0x650C -0x946C 0x650D -0x946D 0x650E -0x946E 0x650F -0x946F 0x6510 -0x9470 0x6511 -0x9471 0x6513 -0x9472 0x6514 -0x9473 0x6515 -0x9474 0x6516 -0x9475 0x6517 -0x9476 0x6519 -0x9477 0x651A -0x9478 0x651B -0x9479 0x651C -0x947A 0x651D -0x947B 0x651E -0x947C 0x651F -0x947D 0x6520 -0x947E 0x6521 -0x9480 0x6522 -0x9481 0x6523 -0x9482 0x6524 -0x9483 0x6526 -0x9484 0x6527 -0x9485 0x6528 -0x9486 0x6529 -0x9487 0x652A -0x9488 0x652C -0x9489 0x652D -0x948A 0x6530 -0x948B 0x6531 -0x948C 0x6532 -0x948D 0x6533 -0x948E 0x6537 -0x948F 0x653A -0x9490 0x653C -0x9491 0x653D -0x9492 0x6540 -0x9493 0x6541 -0x9494 0x6542 -0x9495 0x6543 -0x9496 0x6544 -0x9497 0x6546 -0x9498 0x6547 -0x9499 0x654A -0x949A 0x654B -0x949B 0x654D -0x949C 0x654E -0x949D 0x6550 -0x949E 0x6552 -0x949F 0x6553 -0x94A0 0x6554 -0x94A1 0x6557 -0x94A2 0x6558 -0x94A3 0x655A -0x94A4 0x655C -0x94A5 0x655F -0x94A6 0x6560 -0x94A7 0x6561 -0x94A8 0x6564 -0x94A9 0x6565 -0x94AA 0x6567 -0x94AB 0x6568 -0x94AC 0x6569 -0x94AD 0x656A -0x94AE 0x656D -0x94AF 0x656E -0x94B0 0x656F -0x94B1 0x6571 -0x94B2 0x6573 -0x94B3 0x6575 -0x94B4 0x6576 -0x94B5 0x6578 -0x94B6 0x6579 -0x94B7 0x657A -0x94B8 0x657B -0x94B9 0x657C -0x94BA 0x657D -0x94BB 0x657E -0x94BC 0x657F -0x94BD 0x6580 -0x94BE 0x6581 -0x94BF 0x6582 -0x94C0 0x6583 -0x94C1 0x6584 -0x94C2 0x6585 -0x94C3 0x6586 -0x94C4 0x6588 -0x94C5 0x6589 -0x94C6 0x658A -0x94C7 0x658D -0x94C8 0x658E -0x94C9 0x658F -0x94CA 0x6592 -0x94CB 0x6594 -0x94CC 0x6595 -0x94CD 0x6596 -0x94CE 0x6598 -0x94CF 0x659A -0x94D0 0x659D -0x94D1 0x659E -0x94D2 0x65A0 -0x94D3 0x65A2 -0x94D4 0x65A3 -0x94D5 0x65A6 -0x94D6 0x65A8 -0x94D7 0x65AA -0x94D8 0x65AC -0x94D9 0x65AE -0x94DA 0x65B1 -0x94DB 0x65B2 -0x94DC 0x65B3 -0x94DD 0x65B4 -0x94DE 0x65B5 -0x94DF 0x65B6 -0x94E0 0x65B7 -0x94E1 0x65B8 -0x94E2 0x65BA -0x94E3 0x65BB -0x94E4 0x65BE -0x94E5 0x65BF -0x94E6 0x65C0 -0x94E7 0x65C2 -0x94E8 0x65C7 -0x94E9 0x65C8 -0x94EA 0x65C9 -0x94EB 0x65CA -0x94EC 0x65CD -0x94ED 0x65D0 -0x94EE 0x65D1 -0x94EF 0x65D3 -0x94F0 0x65D4 -0x94F1 0x65D5 -0x94F2 0x65D8 -0x94F3 0x65D9 -0x94F4 0x65DA -0x94F5 0x65DB -0x94F6 0x65DC -0x94F7 0x65DD -0x94F8 0x65DE -0x94F9 0x65DF -0x94FA 0x65E1 -0x94FB 0x65E3 -0x94FC 0x65E4 -0x94FD 0x65EA -0x94FE 0x65EB -0x9540 0x65F2 -0x9541 0x65F3 -0x9542 0x65F4 -0x9543 0x65F5 -0x9544 0x65F8 -0x9545 0x65F9 -0x9546 0x65FB -0x9547 0x65FC -0x9548 0x65FD -0x9549 0x65FE -0x954A 0x65FF -0x954B 0x6601 -0x954C 0x6604 -0x954D 0x6605 -0x954E 0x6607 -0x954F 0x6608 -0x9550 0x6609 -0x9551 0x660B -0x9552 0x660D -0x9553 0x6610 -0x9554 0x6611 -0x9555 0x6612 -0x9556 0x6616 -0x9557 0x6617 -0x9558 0x6618 -0x9559 0x661A -0x955A 0x661B -0x955B 0x661C -0x955C 0x661E -0x955D 0x6621 -0x955E 0x6622 -0x955F 0x6623 -0x9560 0x6624 -0x9561 0x6626 -0x9562 0x6629 -0x9563 0x662A -0x9564 0x662B -0x9565 0x662C -0x9566 0x662E -0x9567 0x6630 -0x9568 0x6632 -0x9569 0x6633 -0x956A 0x6637 -0x956B 0x6638 -0x956C 0x6639 -0x956D 0x663A -0x956E 0x663B -0x956F 0x663D -0x9570 0x663F -0x9571 0x6640 -0x9572 0x6642 -0x9573 0x6644 -0x9574 0x6645 -0x9575 0x6646 -0x9576 0x6647 -0x9577 0x6648 -0x9578 0x6649 -0x9579 0x664A -0x957A 0x664D -0x957B 0x664E -0x957C 0x6650 -0x957D 0x6651 -0x957E 0x6658 -0x9580 0x6659 -0x9581 0x665B -0x9582 0x665C -0x9583 0x665D -0x9584 0x665E -0x9585 0x6660 -0x9586 0x6662 -0x9587 0x6663 -0x9588 0x6665 -0x9589 0x6667 -0x958A 0x6669 -0x958B 0x666A -0x958C 0x666B -0x958D 0x666C -0x958E 0x666D -0x958F 0x6671 -0x9590 0x6672 -0x9591 0x6673 -0x9592 0x6675 -0x9593 0x6678 -0x9594 0x6679 -0x9595 0x667B -0x9596 0x667C -0x9597 0x667D -0x9598 0x667F -0x9599 0x6680 -0x959A 0x6681 -0x959B 0x6683 -0x959C 0x6685 -0x959D 0x6686 -0x959E 0x6688 -0x959F 0x6689 -0x95A0 0x668A -0x95A1 0x668B -0x95A2 0x668D -0x95A3 0x668E -0x95A4 0x668F -0x95A5 0x6690 -0x95A6 0x6692 -0x95A7 0x6693 -0x95A8 0x6694 -0x95A9 0x6695 -0x95AA 0x6698 -0x95AB 0x6699 -0x95AC 0x669A -0x95AD 0x669B -0x95AE 0x669C -0x95AF 0x669E -0x95B0 0x669F -0x95B1 0x66A0 -0x95B2 0x66A1 -0x95B3 0x66A2 -0x95B4 0x66A3 -0x95B5 0x66A4 -0x95B6 0x66A5 -0x95B7 0x66A6 -0x95B8 0x66A9 -0x95B9 0x66AA -0x95BA 0x66AB -0x95BB 0x66AC -0x95BC 0x66AD -0x95BD 0x66AF -0x95BE 0x66B0 -0x95BF 0x66B1 -0x95C0 0x66B2 -0x95C1 0x66B3 -0x95C2 0x66B5 -0x95C3 0x66B6 -0x95C4 0x66B7 -0x95C5 0x66B8 -0x95C6 0x66BA -0x95C7 0x66BB -0x95C8 0x66BC -0x95C9 0x66BD -0x95CA 0x66BF -0x95CB 0x66C0 -0x95CC 0x66C1 -0x95CD 0x66C2 -0x95CE 0x66C3 -0x95CF 0x66C4 -0x95D0 0x66C5 -0x95D1 0x66C6 -0x95D2 0x66C7 -0x95D3 0x66C8 -0x95D4 0x66C9 -0x95D5 0x66CA -0x95D6 0x66CB -0x95D7 0x66CC -0x95D8 0x66CD -0x95D9 0x66CE -0x95DA 0x66CF -0x95DB 0x66D0 -0x95DC 0x66D1 -0x95DD 0x66D2 -0x95DE 0x66D3 -0x95DF 0x66D4 -0x95E0 0x66D5 -0x95E1 0x66D6 -0x95E2 0x66D7 -0x95E3 0x66D8 -0x95E4 0x66DA -0x95E5 0x66DE -0x95E6 0x66DF -0x95E7 0x66E0 -0x95E8 0x66E1 -0x95E9 0x66E2 -0x95EA 0x66E3 -0x95EB 0x66E4 -0x95EC 0x66E5 -0x95ED 0x66E7 -0x95EE 0x66E8 -0x95EF 0x66EA -0x95F0 0x66EB -0x95F1 0x66EC -0x95F2 0x66ED -0x95F3 0x66EE -0x95F4 0x66EF -0x95F5 0x66F1 -0x95F6 0x66F5 -0x95F7 0x66F6 -0x95F8 0x66F8 -0x95F9 0x66FA -0x95FA 0x66FB -0x95FB 0x66FD -0x95FC 0x6701 -0x95FD 0x6702 -0x95FE 0x6703 -0x9640 0x6704 -0x9641 0x6705 -0x9642 0x6706 -0x9643 0x6707 -0x9644 0x670C -0x9645 0x670E -0x9646 0x670F -0x9647 0x6711 -0x9648 0x6712 -0x9649 0x6713 -0x964A 0x6716 -0x964B 0x6718 -0x964C 0x6719 -0x964D 0x671A -0x964E 0x671C -0x964F 0x671E -0x9650 0x6720 -0x9651 0x6721 -0x9652 0x6722 -0x9653 0x6723 -0x9654 0x6724 -0x9655 0x6725 -0x9656 0x6727 -0x9657 0x6729 -0x9658 0x672E -0x9659 0x6730 -0x965A 0x6732 -0x965B 0x6733 -0x965C 0x6736 -0x965D 0x6737 -0x965E 0x6738 -0x965F 0x6739 -0x9660 0x673B -0x9661 0x673C -0x9662 0x673E -0x9663 0x673F -0x9664 0x6741 -0x9665 0x6744 -0x9666 0x6745 -0x9667 0x6747 -0x9668 0x674A -0x9669 0x674B -0x966A 0x674D -0x966B 0x6752 -0x966C 0x6754 -0x966D 0x6755 -0x966E 0x6757 -0x966F 0x6758 -0x9670 0x6759 -0x9671 0x675A -0x9672 0x675B -0x9673 0x675D -0x9674 0x6762 -0x9675 0x6763 -0x9676 0x6764 -0x9677 0x6766 -0x9678 0x6767 -0x9679 0x676B -0x967A 0x676C -0x967B 0x676E -0x967C 0x6771 -0x967D 0x6774 -0x967E 0x6776 -0x9680 0x6778 -0x9681 0x6779 -0x9682 0x677A -0x9683 0x677B -0x9684 0x677D -0x9685 0x6780 -0x9686 0x6782 -0x9687 0x6783 -0x9688 0x6785 -0x9689 0x6786 -0x968A 0x6788 -0x968B 0x678A -0x968C 0x678C -0x968D 0x678D -0x968E 0x678E -0x968F 0x678F -0x9690 0x6791 -0x9691 0x6792 -0x9692 0x6793 -0x9693 0x6794 -0x9694 0x6796 -0x9695 0x6799 -0x9696 0x679B -0x9697 0x679F -0x9698 0x67A0 -0x9699 0x67A1 -0x969A 0x67A4 -0x969B 0x67A6 -0x969C 0x67A9 -0x969D 0x67AC -0x969E 0x67AE -0x969F 0x67B1 -0x96A0 0x67B2 -0x96A1 0x67B4 -0x96A2 0x67B9 -0x96A3 0x67BA -0x96A4 0x67BB -0x96A5 0x67BC -0x96A6 0x67BD -0x96A7 0x67BE -0x96A8 0x67BF -0x96A9 0x67C0 -0x96AA 0x67C2 -0x96AB 0x67C5 -0x96AC 0x67C6 -0x96AD 0x67C7 -0x96AE 0x67C8 -0x96AF 0x67C9 -0x96B0 0x67CA -0x96B1 0x67CB -0x96B2 0x67CC -0x96B3 0x67CD -0x96B4 0x67CE -0x96B5 0x67D5 -0x96B6 0x67D6 -0x96B7 0x67D7 -0x96B8 0x67DB -0x96B9 0x67DF -0x96BA 0x67E1 -0x96BB 0x67E3 -0x96BC 0x67E4 -0x96BD 0x67E6 -0x96BE 0x67E7 -0x96BF 0x67E8 -0x96C0 0x67EA -0x96C1 0x67EB -0x96C2 0x67ED -0x96C3 0x67EE -0x96C4 0x67F2 -0x96C5 0x67F5 -0x96C6 0x67F6 -0x96C7 0x67F7 -0x96C8 0x67F8 -0x96C9 0x67F9 -0x96CA 0x67FA -0x96CB 0x67FB -0x96CC 0x67FC -0x96CD 0x67FE -0x96CE 0x6801 -0x96CF 0x6802 -0x96D0 0x6803 -0x96D1 0x6804 -0x96D2 0x6806 -0x96D3 0x680D -0x96D4 0x6810 -0x96D5 0x6812 -0x96D6 0x6814 -0x96D7 0x6815 -0x96D8 0x6818 -0x96D9 0x6819 -0x96DA 0x681A -0x96DB 0x681B -0x96DC 0x681C -0x96DD 0x681E -0x96DE 0x681F -0x96DF 0x6820 -0x96E0 0x6822 -0x96E1 0x6823 -0x96E2 0x6824 -0x96E3 0x6825 -0x96E4 0x6826 -0x96E5 0x6827 -0x96E6 0x6828 -0x96E7 0x682B -0x96E8 0x682C -0x96E9 0x682D -0x96EA 0x682E -0x96EB 0x682F -0x96EC 0x6830 -0x96ED 0x6831 -0x96EE 0x6834 -0x96EF 0x6835 -0x96F0 0x6836 -0x96F1 0x683A -0x96F2 0x683B -0x96F3 0x683F -0x96F4 0x6847 -0x96F5 0x684B -0x96F6 0x684D -0x96F7 0x684F -0x96F8 0x6852 -0x96F9 0x6856 -0x96FA 0x6857 -0x96FB 0x6858 -0x96FC 0x6859 -0x96FD 0x685A -0x96FE 0x685B -0x9740 0x685C -0x9741 0x685D -0x9742 0x685E -0x9743 0x685F -0x9744 0x686A -0x9745 0x686C -0x9746 0x686D -0x9747 0x686E -0x9748 0x686F -0x9749 0x6870 -0x974A 0x6871 -0x974B 0x6872 -0x974C 0x6873 -0x974D 0x6875 -0x974E 0x6878 -0x974F 0x6879 -0x9750 0x687A -0x9751 0x687B -0x9752 0x687C -0x9753 0x687D -0x9754 0x687E -0x9755 0x687F -0x9756 0x6880 -0x9757 0x6882 -0x9758 0x6884 -0x9759 0x6887 -0x975A 0x6888 -0x975B 0x6889 -0x975C 0x688A -0x975D 0x688B -0x975E 0x688C -0x975F 0x688D -0x9760 0x688E -0x9761 0x6890 -0x9762 0x6891 -0x9763 0x6892 -0x9764 0x6894 -0x9765 0x6895 -0x9766 0x6896 -0x9767 0x6898 -0x9768 0x6899 -0x9769 0x689A -0x976A 0x689B -0x976B 0x689C -0x976C 0x689D -0x976D 0x689E -0x976E 0x689F -0x976F 0x68A0 -0x9770 0x68A1 -0x9771 0x68A3 -0x9772 0x68A4 -0x9773 0x68A5 -0x9774 0x68A9 -0x9775 0x68AA -0x9776 0x68AB -0x9777 0x68AC -0x9778 0x68AE -0x9779 0x68B1 -0x977A 0x68B2 -0x977B 0x68B4 -0x977C 0x68B6 -0x977D 0x68B7 -0x977E 0x68B8 -0x9780 0x68B9 -0x9781 0x68BA -0x9782 0x68BB -0x9783 0x68BC -0x9784 0x68BD -0x9785 0x68BE -0x9786 0x68BF -0x9787 0x68C1 -0x9788 0x68C3 -0x9789 0x68C4 -0x978A 0x68C5 -0x978B 0x68C6 -0x978C 0x68C7 -0x978D 0x68C8 -0x978E 0x68CA -0x978F 0x68CC -0x9790 0x68CE -0x9791 0x68CF -0x9792 0x68D0 -0x9793 0x68D1 -0x9794 0x68D3 -0x9795 0x68D4 -0x9796 0x68D6 -0x9797 0x68D7 -0x9798 0x68D9 -0x9799 0x68DB -0x979A 0x68DC -0x979B 0x68DD -0x979C 0x68DE -0x979D 0x68DF -0x979E 0x68E1 -0x979F 0x68E2 -0x97A0 0x68E4 -0x97A1 0x68E5 -0x97A2 0x68E6 -0x97A3 0x68E7 -0x97A4 0x68E8 -0x97A5 0x68E9 -0x97A6 0x68EA -0x97A7 0x68EB -0x97A8 0x68EC -0x97A9 0x68ED -0x97AA 0x68EF -0x97AB 0x68F2 -0x97AC 0x68F3 -0x97AD 0x68F4 -0x97AE 0x68F6 -0x97AF 0x68F7 -0x97B0 0x68F8 -0x97B1 0x68FB -0x97B2 0x68FD -0x97B3 0x68FE -0x97B4 0x68FF -0x97B5 0x6900 -0x97B6 0x6902 -0x97B7 0x6903 -0x97B8 0x6904 -0x97B9 0x6906 -0x97BA 0x6907 -0x97BB 0x6908 -0x97BC 0x6909 -0x97BD 0x690A -0x97BE 0x690C -0x97BF 0x690F -0x97C0 0x6911 -0x97C1 0x6913 -0x97C2 0x6914 -0x97C3 0x6915 -0x97C4 0x6916 -0x97C5 0x6917 -0x97C6 0x6918 -0x97C7 0x6919 -0x97C8 0x691A -0x97C9 0x691B -0x97CA 0x691C -0x97CB 0x691D -0x97CC 0x691E -0x97CD 0x6921 -0x97CE 0x6922 -0x97CF 0x6923 -0x97D0 0x6925 -0x97D1 0x6926 -0x97D2 0x6927 -0x97D3 0x6928 -0x97D4 0x6929 -0x97D5 0x692A -0x97D6 0x692B -0x97D7 0x692C -0x97D8 0x692E -0x97D9 0x692F -0x97DA 0x6931 -0x97DB 0x6932 -0x97DC 0x6933 -0x97DD 0x6935 -0x97DE 0x6936 -0x97DF 0x6937 -0x97E0 0x6938 -0x97E1 0x693A -0x97E2 0x693B -0x97E3 0x693C -0x97E4 0x693E -0x97E5 0x6940 -0x97E6 0x6941 -0x97E7 0x6943 -0x97E8 0x6944 -0x97E9 0x6945 -0x97EA 0x6946 -0x97EB 0x6947 -0x97EC 0x6948 -0x97ED 0x6949 -0x97EE 0x694A -0x97EF 0x694B -0x97F0 0x694C -0x97F1 0x694D -0x97F2 0x694E -0x97F3 0x694F -0x97F4 0x6950 -0x97F5 0x6951 -0x97F6 0x6952 -0x97F7 0x6953 -0x97F8 0x6955 -0x97F9 0x6956 -0x97FA 0x6958 -0x97FB 0x6959 -0x97FC 0x695B -0x97FD 0x695C -0x97FE 0x695F -0x9840 0x6961 -0x9841 0x6962 -0x9842 0x6964 -0x9843 0x6965 -0x9844 0x6967 -0x9845 0x6968 -0x9846 0x6969 -0x9847 0x696A -0x9848 0x696C -0x9849 0x696D -0x984A 0x696F -0x984B 0x6970 -0x984C 0x6972 -0x984D 0x6973 -0x984E 0x6974 -0x984F 0x6975 -0x9850 0x6976 -0x9851 0x697A -0x9852 0x697B -0x9853 0x697D -0x9854 0x697E -0x9855 0x697F -0x9856 0x6981 -0x9857 0x6983 -0x9858 0x6985 -0x9859 0x698A -0x985A 0x698B -0x985B 0x698C -0x985C 0x698E -0x985D 0x698F -0x985E 0x6990 -0x985F 0x6991 -0x9860 0x6992 -0x9861 0x6993 -0x9862 0x6996 -0x9863 0x6997 -0x9864 0x6999 -0x9865 0x699A -0x9866 0x699D -0x9867 0x699E -0x9868 0x699F -0x9869 0x69A0 -0x986A 0x69A1 -0x986B 0x69A2 -0x986C 0x69A3 -0x986D 0x69A4 -0x986E 0x69A5 -0x986F 0x69A6 -0x9870 0x69A9 -0x9871 0x69AA -0x9872 0x69AC -0x9873 0x69AE -0x9874 0x69AF -0x9875 0x69B0 -0x9876 0x69B2 -0x9877 0x69B3 -0x9878 0x69B5 -0x9879 0x69B6 -0x987A 0x69B8 -0x987B 0x69B9 -0x987C 0x69BA -0x987D 0x69BC -0x987E 0x69BD -0x9880 0x69BE -0x9881 0x69BF -0x9882 0x69C0 -0x9883 0x69C2 -0x9884 0x69C3 -0x9885 0x69C4 -0x9886 0x69C5 -0x9887 0x69C6 -0x9888 0x69C7 -0x9889 0x69C8 -0x988A 0x69C9 -0x988B 0x69CB -0x988C 0x69CD -0x988D 0x69CF -0x988E 0x69D1 -0x988F 0x69D2 -0x9890 0x69D3 -0x9891 0x69D5 -0x9892 0x69D6 -0x9893 0x69D7 -0x9894 0x69D8 -0x9895 0x69D9 -0x9896 0x69DA -0x9897 0x69DC -0x9898 0x69DD -0x9899 0x69DE -0x989A 0x69E1 -0x989B 0x69E2 -0x989C 0x69E3 -0x989D 0x69E4 -0x989E 0x69E5 -0x989F 0x69E6 -0x98A0 0x69E7 -0x98A1 0x69E8 -0x98A2 0x69E9 -0x98A3 0x69EA -0x98A4 0x69EB -0x98A5 0x69EC -0x98A6 0x69EE -0x98A7 0x69EF -0x98A8 0x69F0 -0x98A9 0x69F1 -0x98AA 0x69F3 -0x98AB 0x69F4 -0x98AC 0x69F5 -0x98AD 0x69F6 -0x98AE 0x69F7 -0x98AF 0x69F8 -0x98B0 0x69F9 -0x98B1 0x69FA -0x98B2 0x69FB -0x98B3 0x69FC -0x98B4 0x69FE -0x98B5 0x6A00 -0x98B6 0x6A01 -0x98B7 0x6A02 -0x98B8 0x6A03 -0x98B9 0x6A04 -0x98BA 0x6A05 -0x98BB 0x6A06 -0x98BC 0x6A07 -0x98BD 0x6A08 -0x98BE 0x6A09 -0x98BF 0x6A0B -0x98C0 0x6A0C -0x98C1 0x6A0D -0x98C2 0x6A0E -0x98C3 0x6A0F -0x98C4 0x6A10 -0x98C5 0x6A11 -0x98C6 0x6A12 -0x98C7 0x6A13 -0x98C8 0x6A14 -0x98C9 0x6A15 -0x98CA 0x6A16 -0x98CB 0x6A19 -0x98CC 0x6A1A -0x98CD 0x6A1B -0x98CE 0x6A1C -0x98CF 0x6A1D -0x98D0 0x6A1E -0x98D1 0x6A20 -0x98D2 0x6A22 -0x98D3 0x6A23 -0x98D4 0x6A24 -0x98D5 0x6A25 -0x98D6 0x6A26 -0x98D7 0x6A27 -0x98D8 0x6A29 -0x98D9 0x6A2B -0x98DA 0x6A2C -0x98DB 0x6A2D -0x98DC 0x6A2E -0x98DD 0x6A30 -0x98DE 0x6A32 -0x98DF 0x6A33 -0x98E0 0x6A34 -0x98E1 0x6A36 -0x98E2 0x6A37 -0x98E3 0x6A38 -0x98E4 0x6A39 -0x98E5 0x6A3A -0x98E6 0x6A3B -0x98E7 0x6A3C -0x98E8 0x6A3F -0x98E9 0x6A40 -0x98EA 0x6A41 -0x98EB 0x6A42 -0x98EC 0x6A43 -0x98ED 0x6A45 -0x98EE 0x6A46 -0x98EF 0x6A48 -0x98F0 0x6A49 -0x98F1 0x6A4A -0x98F2 0x6A4B -0x98F3 0x6A4C -0x98F4 0x6A4D -0x98F5 0x6A4E -0x98F6 0x6A4F -0x98F7 0x6A51 -0x98F8 0x6A52 -0x98F9 0x6A53 -0x98FA 0x6A54 -0x98FB 0x6A55 -0x98FC 0x6A56 -0x98FD 0x6A57 -0x98FE 0x6A5A -0x9940 0x6A5C -0x9941 0x6A5D -0x9942 0x6A5E -0x9943 0x6A5F -0x9944 0x6A60 -0x9945 0x6A62 -0x9946 0x6A63 -0x9947 0x6A64 -0x9948 0x6A66 -0x9949 0x6A67 -0x994A 0x6A68 -0x994B 0x6A69 -0x994C 0x6A6A -0x994D 0x6A6B -0x994E 0x6A6C -0x994F 0x6A6D -0x9950 0x6A6E -0x9951 0x6A6F -0x9952 0x6A70 -0x9953 0x6A72 -0x9954 0x6A73 -0x9955 0x6A74 -0x9956 0x6A75 -0x9957 0x6A76 -0x9958 0x6A77 -0x9959 0x6A78 -0x995A 0x6A7A -0x995B 0x6A7B -0x995C 0x6A7D -0x995D 0x6A7E -0x995E 0x6A7F -0x995F 0x6A81 -0x9960 0x6A82 -0x9961 0x6A83 -0x9962 0x6A85 -0x9963 0x6A86 -0x9964 0x6A87 -0x9965 0x6A88 -0x9966 0x6A89 -0x9967 0x6A8A -0x9968 0x6A8B -0x9969 0x6A8C -0x996A 0x6A8D -0x996B 0x6A8F -0x996C 0x6A92 -0x996D 0x6A93 -0x996E 0x6A94 -0x996F 0x6A95 -0x9970 0x6A96 -0x9971 0x6A98 -0x9972 0x6A99 -0x9973 0x6A9A -0x9974 0x6A9B -0x9975 0x6A9C -0x9976 0x6A9D -0x9977 0x6A9E -0x9978 0x6A9F -0x9979 0x6AA1 -0x997A 0x6AA2 -0x997B 0x6AA3 -0x997C 0x6AA4 -0x997D 0x6AA5 -0x997E 0x6AA6 -0x9980 0x6AA7 -0x9981 0x6AA8 -0x9982 0x6AAA -0x9983 0x6AAD -0x9984 0x6AAE -0x9985 0x6AAF -0x9986 0x6AB0 -0x9987 0x6AB1 -0x9988 0x6AB2 -0x9989 0x6AB3 -0x998A 0x6AB4 -0x998B 0x6AB5 -0x998C 0x6AB6 -0x998D 0x6AB7 -0x998E 0x6AB8 -0x998F 0x6AB9 -0x9990 0x6ABA -0x9991 0x6ABB -0x9992 0x6ABC -0x9993 0x6ABD -0x9994 0x6ABE -0x9995 0x6ABF -0x9996 0x6AC0 -0x9997 0x6AC1 -0x9998 0x6AC2 -0x9999 0x6AC3 -0x999A 0x6AC4 -0x999B 0x6AC5 -0x999C 0x6AC6 -0x999D 0x6AC7 -0x999E 0x6AC8 -0x999F 0x6AC9 -0x99A0 0x6ACA -0x99A1 0x6ACB -0x99A2 0x6ACC -0x99A3 0x6ACD -0x99A4 0x6ACE -0x99A5 0x6ACF -0x99A6 0x6AD0 -0x99A7 0x6AD1 -0x99A8 0x6AD2 -0x99A9 0x6AD3 -0x99AA 0x6AD4 -0x99AB 0x6AD5 -0x99AC 0x6AD6 -0x99AD 0x6AD7 -0x99AE 0x6AD8 -0x99AF 0x6AD9 -0x99B0 0x6ADA -0x99B1 0x6ADB -0x99B2 0x6ADC -0x99B3 0x6ADD -0x99B4 0x6ADE -0x99B5 0x6ADF -0x99B6 0x6AE0 -0x99B7 0x6AE1 -0x99B8 0x6AE2 -0x99B9 0x6AE3 -0x99BA 0x6AE4 -0x99BB 0x6AE5 -0x99BC 0x6AE6 -0x99BD 0x6AE7 -0x99BE 0x6AE8 -0x99BF 0x6AE9 -0x99C0 0x6AEA -0x99C1 0x6AEB -0x99C2 0x6AEC -0x99C3 0x6AED -0x99C4 0x6AEE -0x99C5 0x6AEF -0x99C6 0x6AF0 -0x99C7 0x6AF1 -0x99C8 0x6AF2 -0x99C9 0x6AF3 -0x99CA 0x6AF4 -0x99CB 0x6AF5 -0x99CC 0x6AF6 -0x99CD 0x6AF7 -0x99CE 0x6AF8 -0x99CF 0x6AF9 -0x99D0 0x6AFA -0x99D1 0x6AFB -0x99D2 0x6AFC -0x99D3 0x6AFD -0x99D4 0x6AFE -0x99D5 0x6AFF -0x99D6 0x6B00 -0x99D7 0x6B01 -0x99D8 0x6B02 -0x99D9 0x6B03 -0x99DA 0x6B04 -0x99DB 0x6B05 -0x99DC 0x6B06 -0x99DD 0x6B07 -0x99DE 0x6B08 -0x99DF 0x6B09 -0x99E0 0x6B0A -0x99E1 0x6B0B -0x99E2 0x6B0C -0x99E3 0x6B0D -0x99E4 0x6B0E -0x99E5 0x6B0F -0x99E6 0x6B10 -0x99E7 0x6B11 -0x99E8 0x6B12 -0x99E9 0x6B13 -0x99EA 0x6B14 -0x99EB 0x6B15 -0x99EC 0x6B16 -0x99ED 0x6B17 -0x99EE 0x6B18 -0x99EF 0x6B19 -0x99F0 0x6B1A -0x99F1 0x6B1B -0x99F2 0x6B1C -0x99F3 0x6B1D -0x99F4 0x6B1E -0x99F5 0x6B1F -0x99F6 0x6B25 -0x99F7 0x6B26 -0x99F8 0x6B28 -0x99F9 0x6B29 -0x99FA 0x6B2A -0x99FB 0x6B2B -0x99FC 0x6B2C -0x99FD 0x6B2D -0x99FE 0x6B2E -0x9A40 0x6B2F -0x9A41 0x6B30 -0x9A42 0x6B31 -0x9A43 0x6B33 -0x9A44 0x6B34 -0x9A45 0x6B35 -0x9A46 0x6B36 -0x9A47 0x6B38 -0x9A48 0x6B3B -0x9A49 0x6B3C -0x9A4A 0x6B3D -0x9A4B 0x6B3F -0x9A4C 0x6B40 -0x9A4D 0x6B41 -0x9A4E 0x6B42 -0x9A4F 0x6B44 -0x9A50 0x6B45 -0x9A51 0x6B48 -0x9A52 0x6B4A -0x9A53 0x6B4B -0x9A54 0x6B4D -0x9A55 0x6B4E -0x9A56 0x6B4F -0x9A57 0x6B50 -0x9A58 0x6B51 -0x9A59 0x6B52 -0x9A5A 0x6B53 -0x9A5B 0x6B54 -0x9A5C 0x6B55 -0x9A5D 0x6B56 -0x9A5E 0x6B57 -0x9A5F 0x6B58 -0x9A60 0x6B5A -0x9A61 0x6B5B -0x9A62 0x6B5C -0x9A63 0x6B5D -0x9A64 0x6B5E -0x9A65 0x6B5F -0x9A66 0x6B60 -0x9A67 0x6B61 -0x9A68 0x6B68 -0x9A69 0x6B69 -0x9A6A 0x6B6B -0x9A6B 0x6B6C -0x9A6C 0x6B6D -0x9A6D 0x6B6E -0x9A6E 0x6B6F -0x9A6F 0x6B70 -0x9A70 0x6B71 -0x9A71 0x6B72 -0x9A72 0x6B73 -0x9A73 0x6B74 -0x9A74 0x6B75 -0x9A75 0x6B76 -0x9A76 0x6B77 -0x9A77 0x6B78 -0x9A78 0x6B7A -0x9A79 0x6B7D -0x9A7A 0x6B7E -0x9A7B 0x6B7F -0x9A7C 0x6B80 -0x9A7D 0x6B85 -0x9A7E 0x6B88 -0x9A80 0x6B8C -0x9A81 0x6B8E -0x9A82 0x6B8F -0x9A83 0x6B90 -0x9A84 0x6B91 -0x9A85 0x6B94 -0x9A86 0x6B95 -0x9A87 0x6B97 -0x9A88 0x6B98 -0x9A89 0x6B99 -0x9A8A 0x6B9C -0x9A8B 0x6B9D -0x9A8C 0x6B9E -0x9A8D 0x6B9F -0x9A8E 0x6BA0 -0x9A8F 0x6BA2 -0x9A90 0x6BA3 -0x9A91 0x6BA4 -0x9A92 0x6BA5 -0x9A93 0x6BA6 -0x9A94 0x6BA7 -0x9A95 0x6BA8 -0x9A96 0x6BA9 -0x9A97 0x6BAB -0x9A98 0x6BAC -0x9A99 0x6BAD -0x9A9A 0x6BAE -0x9A9B 0x6BAF -0x9A9C 0x6BB0 -0x9A9D 0x6BB1 -0x9A9E 0x6BB2 -0x9A9F 0x6BB6 -0x9AA0 0x6BB8 -0x9AA1 0x6BB9 -0x9AA2 0x6BBA -0x9AA3 0x6BBB -0x9AA4 0x6BBC -0x9AA5 0x6BBD -0x9AA6 0x6BBE -0x9AA7 0x6BC0 -0x9AA8 0x6BC3 -0x9AA9 0x6BC4 -0x9AAA 0x6BC6 -0x9AAB 0x6BC7 -0x9AAC 0x6BC8 -0x9AAD 0x6BC9 -0x9AAE 0x6BCA -0x9AAF 0x6BCC -0x9AB0 0x6BCE -0x9AB1 0x6BD0 -0x9AB2 0x6BD1 -0x9AB3 0x6BD8 -0x9AB4 0x6BDA -0x9AB5 0x6BDC -0x9AB6 0x6BDD -0x9AB7 0x6BDE -0x9AB8 0x6BDF -0x9AB9 0x6BE0 -0x9ABA 0x6BE2 -0x9ABB 0x6BE3 -0x9ABC 0x6BE4 -0x9ABD 0x6BE5 -0x9ABE 0x6BE6 -0x9ABF 0x6BE7 -0x9AC0 0x6BE8 -0x9AC1 0x6BE9 -0x9AC2 0x6BEC -0x9AC3 0x6BED -0x9AC4 0x6BEE -0x9AC5 0x6BF0 -0x9AC6 0x6BF1 -0x9AC7 0x6BF2 -0x9AC8 0x6BF4 -0x9AC9 0x6BF6 -0x9ACA 0x6BF7 -0x9ACB 0x6BF8 -0x9ACC 0x6BFA -0x9ACD 0x6BFB -0x9ACE 0x6BFC -0x9ACF 0x6BFE -0x9AD0 0x6BFF -0x9AD1 0x6C00 -0x9AD2 0x6C01 -0x9AD3 0x6C02 -0x9AD4 0x6C03 -0x9AD5 0x6C04 -0x9AD6 0x6C08 -0x9AD7 0x6C09 -0x9AD8 0x6C0A -0x9AD9 0x6C0B -0x9ADA 0x6C0C -0x9ADB 0x6C0E -0x9ADC 0x6C12 -0x9ADD 0x6C17 -0x9ADE 0x6C1C -0x9ADF 0x6C1D -0x9AE0 0x6C1E -0x9AE1 0x6C20 -0x9AE2 0x6C23 -0x9AE3 0x6C25 -0x9AE4 0x6C2B -0x9AE5 0x6C2C -0x9AE6 0x6C2D -0x9AE7 0x6C31 -0x9AE8 0x6C33 -0x9AE9 0x6C36 -0x9AEA 0x6C37 -0x9AEB 0x6C39 -0x9AEC 0x6C3A -0x9AED 0x6C3B -0x9AEE 0x6C3C -0x9AEF 0x6C3E -0x9AF0 0x6C3F -0x9AF1 0x6C43 -0x9AF2 0x6C44 -0x9AF3 0x6C45 -0x9AF4 0x6C48 -0x9AF5 0x6C4B -0x9AF6 0x6C4C -0x9AF7 0x6C4D -0x9AF8 0x6C4E -0x9AF9 0x6C4F -0x9AFA 0x6C51 -0x9AFB 0x6C52 -0x9AFC 0x6C53 -0x9AFD 0x6C56 -0x9AFE 0x6C58 -0x9B40 0x6C59 -0x9B41 0x6C5A -0x9B42 0x6C62 -0x9B43 0x6C63 -0x9B44 0x6C65 -0x9B45 0x6C66 -0x9B46 0x6C67 -0x9B47 0x6C6B -0x9B48 0x6C6C -0x9B49 0x6C6D -0x9B4A 0x6C6E -0x9B4B 0x6C6F -0x9B4C 0x6C71 -0x9B4D 0x6C73 -0x9B4E 0x6C75 -0x9B4F 0x6C77 -0x9B50 0x6C78 -0x9B51 0x6C7A -0x9B52 0x6C7B -0x9B53 0x6C7C -0x9B54 0x6C7F -0x9B55 0x6C80 -0x9B56 0x6C84 -0x9B57 0x6C87 -0x9B58 0x6C8A -0x9B59 0x6C8B -0x9B5A 0x6C8D -0x9B5B 0x6C8E -0x9B5C 0x6C91 -0x9B5D 0x6C92 -0x9B5E 0x6C95 -0x9B5F 0x6C96 -0x9B60 0x6C97 -0x9B61 0x6C98 -0x9B62 0x6C9A -0x9B63 0x6C9C -0x9B64 0x6C9D -0x9B65 0x6C9E -0x9B66 0x6CA0 -0x9B67 0x6CA2 -0x9B68 0x6CA8 -0x9B69 0x6CAC -0x9B6A 0x6CAF -0x9B6B 0x6CB0 -0x9B6C 0x6CB4 -0x9B6D 0x6CB5 -0x9B6E 0x6CB6 -0x9B6F 0x6CB7 -0x9B70 0x6CBA -0x9B71 0x6CC0 -0x9B72 0x6CC1 -0x9B73 0x6CC2 -0x9B74 0x6CC3 -0x9B75 0x6CC6 -0x9B76 0x6CC7 -0x9B77 0x6CC8 -0x9B78 0x6CCB -0x9B79 0x6CCD -0x9B7A 0x6CCE -0x9B7B 0x6CCF -0x9B7C 0x6CD1 -0x9B7D 0x6CD2 -0x9B7E 0x6CD8 -0x9B80 0x6CD9 -0x9B81 0x6CDA -0x9B82 0x6CDC -0x9B83 0x6CDD -0x9B84 0x6CDF -0x9B85 0x6CE4 -0x9B86 0x6CE6 -0x9B87 0x6CE7 -0x9B88 0x6CE9 -0x9B89 0x6CEC -0x9B8A 0x6CED -0x9B8B 0x6CF2 -0x9B8C 0x6CF4 -0x9B8D 0x6CF9 -0x9B8E 0x6CFF -0x9B8F 0x6D00 -0x9B90 0x6D02 -0x9B91 0x6D03 -0x9B92 0x6D05 -0x9B93 0x6D06 -0x9B94 0x6D08 -0x9B95 0x6D09 -0x9B96 0x6D0A -0x9B97 0x6D0D -0x9B98 0x6D0F -0x9B99 0x6D10 -0x9B9A 0x6D11 -0x9B9B 0x6D13 -0x9B9C 0x6D14 -0x9B9D 0x6D15 -0x9B9E 0x6D16 -0x9B9F 0x6D18 -0x9BA0 0x6D1C -0x9BA1 0x6D1D -0x9BA2 0x6D1F -0x9BA3 0x6D20 -0x9BA4 0x6D21 -0x9BA5 0x6D22 -0x9BA6 0x6D23 -0x9BA7 0x6D24 -0x9BA8 0x6D26 -0x9BA9 0x6D28 -0x9BAA 0x6D29 -0x9BAB 0x6D2C -0x9BAC 0x6D2D -0x9BAD 0x6D2F -0x9BAE 0x6D30 -0x9BAF 0x6D34 -0x9BB0 0x6D36 -0x9BB1 0x6D37 -0x9BB2 0x6D38 -0x9BB3 0x6D3A -0x9BB4 0x6D3F -0x9BB5 0x6D40 -0x9BB6 0x6D42 -0x9BB7 0x6D44 -0x9BB8 0x6D49 -0x9BB9 0x6D4C -0x9BBA 0x6D50 -0x9BBB 0x6D55 -0x9BBC 0x6D56 -0x9BBD 0x6D57 -0x9BBE 0x6D58 -0x9BBF 0x6D5B -0x9BC0 0x6D5D -0x9BC1 0x6D5F -0x9BC2 0x6D61 -0x9BC3 0x6D62 -0x9BC4 0x6D64 -0x9BC5 0x6D65 -0x9BC6 0x6D67 -0x9BC7 0x6D68 -0x9BC8 0x6D6B -0x9BC9 0x6D6C -0x9BCA 0x6D6D -0x9BCB 0x6D70 -0x9BCC 0x6D71 -0x9BCD 0x6D72 -0x9BCE 0x6D73 -0x9BCF 0x6D75 -0x9BD0 0x6D76 -0x9BD1 0x6D79 -0x9BD2 0x6D7A -0x9BD3 0x6D7B -0x9BD4 0x6D7D -0x9BD5 0x6D7E -0x9BD6 0x6D7F -0x9BD7 0x6D80 -0x9BD8 0x6D81 -0x9BD9 0x6D83 -0x9BDA 0x6D84 -0x9BDB 0x6D86 -0x9BDC 0x6D87 -0x9BDD 0x6D8A -0x9BDE 0x6D8B -0x9BDF 0x6D8D -0x9BE0 0x6D8F -0x9BE1 0x6D90 -0x9BE2 0x6D92 -0x9BE3 0x6D96 -0x9BE4 0x6D97 -0x9BE5 0x6D98 -0x9BE6 0x6D99 -0x9BE7 0x6D9A -0x9BE8 0x6D9C -0x9BE9 0x6DA2 -0x9BEA 0x6DA5 -0x9BEB 0x6DAC -0x9BEC 0x6DAD -0x9BED 0x6DB0 -0x9BEE 0x6DB1 -0x9BEF 0x6DB3 -0x9BF0 0x6DB4 -0x9BF1 0x6DB6 -0x9BF2 0x6DB7 -0x9BF3 0x6DB9 -0x9BF4 0x6DBA -0x9BF5 0x6DBB -0x9BF6 0x6DBC -0x9BF7 0x6DBD -0x9BF8 0x6DBE -0x9BF9 0x6DC1 -0x9BFA 0x6DC2 -0x9BFB 0x6DC3 -0x9BFC 0x6DC8 -0x9BFD 0x6DC9 -0x9BFE 0x6DCA -0x9C40 0x6DCD -0x9C41 0x6DCE -0x9C42 0x6DCF -0x9C43 0x6DD0 -0x9C44 0x6DD2 -0x9C45 0x6DD3 -0x9C46 0x6DD4 -0x9C47 0x6DD5 -0x9C48 0x6DD7 -0x9C49 0x6DDA -0x9C4A 0x6DDB -0x9C4B 0x6DDC -0x9C4C 0x6DDF -0x9C4D 0x6DE2 -0x9C4E 0x6DE3 -0x9C4F 0x6DE5 -0x9C50 0x6DE7 -0x9C51 0x6DE8 -0x9C52 0x6DE9 -0x9C53 0x6DEA -0x9C54 0x6DED -0x9C55 0x6DEF -0x9C56 0x6DF0 -0x9C57 0x6DF2 -0x9C58 0x6DF4 -0x9C59 0x6DF5 -0x9C5A 0x6DF6 -0x9C5B 0x6DF8 -0x9C5C 0x6DFA -0x9C5D 0x6DFD -0x9C5E 0x6DFE -0x9C5F 0x6DFF -0x9C60 0x6E00 -0x9C61 0x6E01 -0x9C62 0x6E02 -0x9C63 0x6E03 -0x9C64 0x6E04 -0x9C65 0x6E06 -0x9C66 0x6E07 -0x9C67 0x6E08 -0x9C68 0x6E09 -0x9C69 0x6E0B -0x9C6A 0x6E0F -0x9C6B 0x6E12 -0x9C6C 0x6E13 -0x9C6D 0x6E15 -0x9C6E 0x6E18 -0x9C6F 0x6E19 -0x9C70 0x6E1B -0x9C71 0x6E1C -0x9C72 0x6E1E -0x9C73 0x6E1F -0x9C74 0x6E22 -0x9C75 0x6E26 -0x9C76 0x6E27 -0x9C77 0x6E28 -0x9C78 0x6E2A -0x9C79 0x6E2C -0x9C7A 0x6E2E -0x9C7B 0x6E30 -0x9C7C 0x6E31 -0x9C7D 0x6E33 -0x9C7E 0x6E35 -0x9C80 0x6E36 -0x9C81 0x6E37 -0x9C82 0x6E39 -0x9C83 0x6E3B -0x9C84 0x6E3C -0x9C85 0x6E3D -0x9C86 0x6E3E -0x9C87 0x6E3F -0x9C88 0x6E40 -0x9C89 0x6E41 -0x9C8A 0x6E42 -0x9C8B 0x6E45 -0x9C8C 0x6E46 -0x9C8D 0x6E47 -0x9C8E 0x6E48 -0x9C8F 0x6E49 -0x9C90 0x6E4A -0x9C91 0x6E4B -0x9C92 0x6E4C -0x9C93 0x6E4F -0x9C94 0x6E50 -0x9C95 0x6E51 -0x9C96 0x6E52 -0x9C97 0x6E55 -0x9C98 0x6E57 -0x9C99 0x6E59 -0x9C9A 0x6E5A -0x9C9B 0x6E5C -0x9C9C 0x6E5D -0x9C9D 0x6E5E -0x9C9E 0x6E60 -0x9C9F 0x6E61 -0x9CA0 0x6E62 -0x9CA1 0x6E63 -0x9CA2 0x6E64 -0x9CA3 0x6E65 -0x9CA4 0x6E66 -0x9CA5 0x6E67 -0x9CA6 0x6E68 -0x9CA7 0x6E69 -0x9CA8 0x6E6A -0x9CA9 0x6E6C -0x9CAA 0x6E6D -0x9CAB 0x6E6F -0x9CAC 0x6E70 -0x9CAD 0x6E71 -0x9CAE 0x6E72 -0x9CAF 0x6E73 -0x9CB0 0x6E74 -0x9CB1 0x6E75 -0x9CB2 0x6E76 -0x9CB3 0x6E77 -0x9CB4 0x6E78 -0x9CB5 0x6E79 -0x9CB6 0x6E7A -0x9CB7 0x6E7B -0x9CB8 0x6E7C -0x9CB9 0x6E7D -0x9CBA 0x6E80 -0x9CBB 0x6E81 -0x9CBC 0x6E82 -0x9CBD 0x6E84 -0x9CBE 0x6E87 -0x9CBF 0x6E88 -0x9CC0 0x6E8A -0x9CC1 0x6E8B -0x9CC2 0x6E8C -0x9CC3 0x6E8D -0x9CC4 0x6E8E -0x9CC5 0x6E91 -0x9CC6 0x6E92 -0x9CC7 0x6E93 -0x9CC8 0x6E94 -0x9CC9 0x6E95 -0x9CCA 0x6E96 -0x9CCB 0x6E97 -0x9CCC 0x6E99 -0x9CCD 0x6E9A -0x9CCE 0x6E9B -0x9CCF 0x6E9D -0x9CD0 0x6E9E -0x9CD1 0x6EA0 -0x9CD2 0x6EA1 -0x9CD3 0x6EA3 -0x9CD4 0x6EA4 -0x9CD5 0x6EA6 -0x9CD6 0x6EA8 -0x9CD7 0x6EA9 -0x9CD8 0x6EAB -0x9CD9 0x6EAC -0x9CDA 0x6EAD -0x9CDB 0x6EAE -0x9CDC 0x6EB0 -0x9CDD 0x6EB3 -0x9CDE 0x6EB5 -0x9CDF 0x6EB8 -0x9CE0 0x6EB9 -0x9CE1 0x6EBC -0x9CE2 0x6EBE -0x9CE3 0x6EBF -0x9CE4 0x6EC0 -0x9CE5 0x6EC3 -0x9CE6 0x6EC4 -0x9CE7 0x6EC5 -0x9CE8 0x6EC6 -0x9CE9 0x6EC8 -0x9CEA 0x6EC9 -0x9CEB 0x6ECA -0x9CEC 0x6ECC -0x9CED 0x6ECD -0x9CEE 0x6ECE -0x9CEF 0x6ED0 -0x9CF0 0x6ED2 -0x9CF1 0x6ED6 -0x9CF2 0x6ED8 -0x9CF3 0x6ED9 -0x9CF4 0x6EDB -0x9CF5 0x6EDC -0x9CF6 0x6EDD -0x9CF7 0x6EE3 -0x9CF8 0x6EE7 -0x9CF9 0x6EEA -0x9CFA 0x6EEB -0x9CFB 0x6EEC -0x9CFC 0x6EED -0x9CFD 0x6EEE -0x9CFE 0x6EEF -0x9D40 0x6EF0 -0x9D41 0x6EF1 -0x9D42 0x6EF2 -0x9D43 0x6EF3 -0x9D44 0x6EF5 -0x9D45 0x6EF6 -0x9D46 0x6EF7 -0x9D47 0x6EF8 -0x9D48 0x6EFA -0x9D49 0x6EFB -0x9D4A 0x6EFC -0x9D4B 0x6EFD -0x9D4C 0x6EFE -0x9D4D 0x6EFF -0x9D4E 0x6F00 -0x9D4F 0x6F01 -0x9D50 0x6F03 -0x9D51 0x6F04 -0x9D52 0x6F05 -0x9D53 0x6F07 -0x9D54 0x6F08 -0x9D55 0x6F0A -0x9D56 0x6F0B -0x9D57 0x6F0C -0x9D58 0x6F0D -0x9D59 0x6F0E -0x9D5A 0x6F10 -0x9D5B 0x6F11 -0x9D5C 0x6F12 -0x9D5D 0x6F16 -0x9D5E 0x6F17 -0x9D5F 0x6F18 -0x9D60 0x6F19 -0x9D61 0x6F1A -0x9D62 0x6F1B -0x9D63 0x6F1C -0x9D64 0x6F1D -0x9D65 0x6F1E -0x9D66 0x6F1F -0x9D67 0x6F21 -0x9D68 0x6F22 -0x9D69 0x6F23 -0x9D6A 0x6F25 -0x9D6B 0x6F26 -0x9D6C 0x6F27 -0x9D6D 0x6F28 -0x9D6E 0x6F2C -0x9D6F 0x6F2E -0x9D70 0x6F30 -0x9D71 0x6F32 -0x9D72 0x6F34 -0x9D73 0x6F35 -0x9D74 0x6F37 -0x9D75 0x6F38 -0x9D76 0x6F39 -0x9D77 0x6F3A -0x9D78 0x6F3B -0x9D79 0x6F3C -0x9D7A 0x6F3D -0x9D7B 0x6F3F -0x9D7C 0x6F40 -0x9D7D 0x6F41 -0x9D7E 0x6F42 -0x9D80 0x6F43 -0x9D81 0x6F44 -0x9D82 0x6F45 -0x9D83 0x6F48 -0x9D84 0x6F49 -0x9D85 0x6F4A -0x9D86 0x6F4C -0x9D87 0x6F4E -0x9D88 0x6F4F -0x9D89 0x6F50 -0x9D8A 0x6F51 -0x9D8B 0x6F52 -0x9D8C 0x6F53 -0x9D8D 0x6F54 -0x9D8E 0x6F55 -0x9D8F 0x6F56 -0x9D90 0x6F57 -0x9D91 0x6F59 -0x9D92 0x6F5A -0x9D93 0x6F5B -0x9D94 0x6F5D -0x9D95 0x6F5F -0x9D96 0x6F60 -0x9D97 0x6F61 -0x9D98 0x6F63 -0x9D99 0x6F64 -0x9D9A 0x6F65 -0x9D9B 0x6F67 -0x9D9C 0x6F68 -0x9D9D 0x6F69 -0x9D9E 0x6F6A -0x9D9F 0x6F6B -0x9DA0 0x6F6C -0x9DA1 0x6F6F -0x9DA2 0x6F70 -0x9DA3 0x6F71 -0x9DA4 0x6F73 -0x9DA5 0x6F75 -0x9DA6 0x6F76 -0x9DA7 0x6F77 -0x9DA8 0x6F79 -0x9DA9 0x6F7B -0x9DAA 0x6F7D -0x9DAB 0x6F7E -0x9DAC 0x6F7F -0x9DAD 0x6F80 -0x9DAE 0x6F81 -0x9DAF 0x6F82 -0x9DB0 0x6F83 -0x9DB1 0x6F85 -0x9DB2 0x6F86 -0x9DB3 0x6F87 -0x9DB4 0x6F8A -0x9DB5 0x6F8B -0x9DB6 0x6F8F -0x9DB7 0x6F90 -0x9DB8 0x6F91 -0x9DB9 0x6F92 -0x9DBA 0x6F93 -0x9DBB 0x6F94 -0x9DBC 0x6F95 -0x9DBD 0x6F96 -0x9DBE 0x6F97 -0x9DBF 0x6F98 -0x9DC0 0x6F99 -0x9DC1 0x6F9A -0x9DC2 0x6F9B -0x9DC3 0x6F9D -0x9DC4 0x6F9E -0x9DC5 0x6F9F -0x9DC6 0x6FA0 -0x9DC7 0x6FA2 -0x9DC8 0x6FA3 -0x9DC9 0x6FA4 -0x9DCA 0x6FA5 -0x9DCB 0x6FA6 -0x9DCC 0x6FA8 -0x9DCD 0x6FA9 -0x9DCE 0x6FAA -0x9DCF 0x6FAB -0x9DD0 0x6FAC -0x9DD1 0x6FAD -0x9DD2 0x6FAE -0x9DD3 0x6FAF -0x9DD4 0x6FB0 -0x9DD5 0x6FB1 -0x9DD6 0x6FB2 -0x9DD7 0x6FB4 -0x9DD8 0x6FB5 -0x9DD9 0x6FB7 -0x9DDA 0x6FB8 -0x9DDB 0x6FBA -0x9DDC 0x6FBB -0x9DDD 0x6FBC -0x9DDE 0x6FBD -0x9DDF 0x6FBE -0x9DE0 0x6FBF -0x9DE1 0x6FC1 -0x9DE2 0x6FC3 -0x9DE3 0x6FC4 -0x9DE4 0x6FC5 -0x9DE5 0x6FC6 -0x9DE6 0x6FC7 -0x9DE7 0x6FC8 -0x9DE8 0x6FCA -0x9DE9 0x6FCB -0x9DEA 0x6FCC -0x9DEB 0x6FCD -0x9DEC 0x6FCE -0x9DED 0x6FCF -0x9DEE 0x6FD0 -0x9DEF 0x6FD3 -0x9DF0 0x6FD4 -0x9DF1 0x6FD5 -0x9DF2 0x6FD6 -0x9DF3 0x6FD7 -0x9DF4 0x6FD8 -0x9DF5 0x6FD9 -0x9DF6 0x6FDA -0x9DF7 0x6FDB -0x9DF8 0x6FDC -0x9DF9 0x6FDD -0x9DFA 0x6FDF -0x9DFB 0x6FE2 -0x9DFC 0x6FE3 -0x9DFD 0x6FE4 -0x9DFE 0x6FE5 -0x9E40 0x6FE6 -0x9E41 0x6FE7 -0x9E42 0x6FE8 -0x9E43 0x6FE9 -0x9E44 0x6FEA -0x9E45 0x6FEB -0x9E46 0x6FEC -0x9E47 0x6FED -0x9E48 0x6FF0 -0x9E49 0x6FF1 -0x9E4A 0x6FF2 -0x9E4B 0x6FF3 -0x9E4C 0x6FF4 -0x9E4D 0x6FF5 -0x9E4E 0x6FF6 -0x9E4F 0x6FF7 -0x9E50 0x6FF8 -0x9E51 0x6FF9 -0x9E52 0x6FFA -0x9E53 0x6FFB -0x9E54 0x6FFC -0x9E55 0x6FFD -0x9E56 0x6FFE -0x9E57 0x6FFF -0x9E58 0x7000 -0x9E59 0x7001 -0x9E5A 0x7002 -0x9E5B 0x7003 -0x9E5C 0x7004 -0x9E5D 0x7005 -0x9E5E 0x7006 -0x9E5F 0x7007 -0x9E60 0x7008 -0x9E61 0x7009 -0x9E62 0x700A -0x9E63 0x700B -0x9E64 0x700C -0x9E65 0x700D -0x9E66 0x700E -0x9E67 0x700F -0x9E68 0x7010 -0x9E69 0x7012 -0x9E6A 0x7013 -0x9E6B 0x7014 -0x9E6C 0x7015 -0x9E6D 0x7016 -0x9E6E 0x7017 -0x9E6F 0x7018 -0x9E70 0x7019 -0x9E71 0x701C -0x9E72 0x701D -0x9E73 0x701E -0x9E74 0x701F -0x9E75 0x7020 -0x9E76 0x7021 -0x9E77 0x7022 -0x9E78 0x7024 -0x9E79 0x7025 -0x9E7A 0x7026 -0x9E7B 0x7027 -0x9E7C 0x7028 -0x9E7D 0x7029 -0x9E7E 0x702A -0x9E80 0x702B -0x9E81 0x702C -0x9E82 0x702D -0x9E83 0x702E -0x9E84 0x702F -0x9E85 0x7030 -0x9E86 0x7031 -0x9E87 0x7032 -0x9E88 0x7033 -0x9E89 0x7034 -0x9E8A 0x7036 -0x9E8B 0x7037 -0x9E8C 0x7038 -0x9E8D 0x703A -0x9E8E 0x703B -0x9E8F 0x703C -0x9E90 0x703D -0x9E91 0x703E -0x9E92 0x703F -0x9E93 0x7040 -0x9E94 0x7041 -0x9E95 0x7042 -0x9E96 0x7043 -0x9E97 0x7044 -0x9E98 0x7045 -0x9E99 0x7046 -0x9E9A 0x7047 -0x9E9B 0x7048 -0x9E9C 0x7049 -0x9E9D 0x704A -0x9E9E 0x704B -0x9E9F 0x704D -0x9EA0 0x704E -0x9EA1 0x7050 -0x9EA2 0x7051 -0x9EA3 0x7052 -0x9EA4 0x7053 -0x9EA5 0x7054 -0x9EA6 0x7055 -0x9EA7 0x7056 -0x9EA8 0x7057 -0x9EA9 0x7058 -0x9EAA 0x7059 -0x9EAB 0x705A -0x9EAC 0x705B -0x9EAD 0x705C -0x9EAE 0x705D -0x9EAF 0x705F -0x9EB0 0x7060 -0x9EB1 0x7061 -0x9EB2 0x7062 -0x9EB3 0x7063 -0x9EB4 0x7064 -0x9EB5 0x7065 -0x9EB6 0x7066 -0x9EB7 0x7067 -0x9EB8 0x7068 -0x9EB9 0x7069 -0x9EBA 0x706A -0x9EBB 0x706E -0x9EBC 0x7071 -0x9EBD 0x7072 -0x9EBE 0x7073 -0x9EBF 0x7074 -0x9EC0 0x7077 -0x9EC1 0x7079 -0x9EC2 0x707A -0x9EC3 0x707B -0x9EC4 0x707D -0x9EC5 0x7081 -0x9EC6 0x7082 -0x9EC7 0x7083 -0x9EC8 0x7084 -0x9EC9 0x7086 -0x9ECA 0x7087 -0x9ECB 0x7088 -0x9ECC 0x708B -0x9ECD 0x708C -0x9ECE 0x708D -0x9ECF 0x708F -0x9ED0 0x7090 -0x9ED1 0x7091 -0x9ED2 0x7093 -0x9ED3 0x7097 -0x9ED4 0x7098 -0x9ED5 0x709A -0x9ED6 0x709B -0x9ED7 0x709E -0x9ED8 0x709F -0x9ED9 0x70A0 -0x9EDA 0x70A1 -0x9EDB 0x70A2 -0x9EDC 0x70A3 -0x9EDD 0x70A4 -0x9EDE 0x70A5 -0x9EDF 0x70A6 -0x9EE0 0x70A7 -0x9EE1 0x70A8 -0x9EE2 0x70A9 -0x9EE3 0x70AA -0x9EE4 0x70B0 -0x9EE5 0x70B2 -0x9EE6 0x70B4 -0x9EE7 0x70B5 -0x9EE8 0x70B6 -0x9EE9 0x70BA -0x9EEA 0x70BE -0x9EEB 0x70BF -0x9EEC 0x70C4 -0x9EED 0x70C5 -0x9EEE 0x70C6 -0x9EEF 0x70C7 -0x9EF0 0x70C9 -0x9EF1 0x70CB -0x9EF2 0x70CC -0x9EF3 0x70CD -0x9EF4 0x70CE -0x9EF5 0x70CF -0x9EF6 0x70D0 -0x9EF7 0x70D1 -0x9EF8 0x70D2 -0x9EF9 0x70D3 -0x9EFA 0x70D4 -0x9EFB 0x70D5 -0x9EFC 0x70D6 -0x9EFD 0x70D7 -0x9EFE 0x70DA -0x9F40 0x70DC -0x9F41 0x70DD -0x9F42 0x70DE -0x9F43 0x70E0 -0x9F44 0x70E1 -0x9F45 0x70E2 -0x9F46 0x70E3 -0x9F47 0x70E5 -0x9F48 0x70EA -0x9F49 0x70EE -0x9F4A 0x70F0 -0x9F4B 0x70F1 -0x9F4C 0x70F2 -0x9F4D 0x70F3 -0x9F4E 0x70F4 -0x9F4F 0x70F5 -0x9F50 0x70F6 -0x9F51 0x70F8 -0x9F52 0x70FA -0x9F53 0x70FB -0x9F54 0x70FC -0x9F55 0x70FE -0x9F56 0x70FF -0x9F57 0x7100 -0x9F58 0x7101 -0x9F59 0x7102 -0x9F5A 0x7103 -0x9F5B 0x7104 -0x9F5C 0x7105 -0x9F5D 0x7106 -0x9F5E 0x7107 -0x9F5F 0x7108 -0x9F60 0x710B -0x9F61 0x710C -0x9F62 0x710D -0x9F63 0x710E -0x9F64 0x710F -0x9F65 0x7111 -0x9F66 0x7112 -0x9F67 0x7114 -0x9F68 0x7117 -0x9F69 0x711B -0x9F6A 0x711C -0x9F6B 0x711D -0x9F6C 0x711E -0x9F6D 0x711F -0x9F6E 0x7120 -0x9F6F 0x7121 -0x9F70 0x7122 -0x9F71 0x7123 -0x9F72 0x7124 -0x9F73 0x7125 -0x9F74 0x7127 -0x9F75 0x7128 -0x9F76 0x7129 -0x9F77 0x712A -0x9F78 0x712B -0x9F79 0x712C -0x9F7A 0x712D -0x9F7B 0x712E -0x9F7C 0x7132 -0x9F7D 0x7133 -0x9F7E 0x7134 -0x9F80 0x7135 -0x9F81 0x7137 -0x9F82 0x7138 -0x9F83 0x7139 -0x9F84 0x713A -0x9F85 0x713B -0x9F86 0x713C -0x9F87 0x713D -0x9F88 0x713E -0x9F89 0x713F -0x9F8A 0x7140 -0x9F8B 0x7141 -0x9F8C 0x7142 -0x9F8D 0x7143 -0x9F8E 0x7144 -0x9F8F 0x7146 -0x9F90 0x7147 -0x9F91 0x7148 -0x9F92 0x7149 -0x9F93 0x714B -0x9F94 0x714D -0x9F95 0x714F -0x9F96 0x7150 -0x9F97 0x7151 -0x9F98 0x7152 -0x9F99 0x7153 -0x9F9A 0x7154 -0x9F9B 0x7155 -0x9F9C 0x7156 -0x9F9D 0x7157 -0x9F9E 0x7158 -0x9F9F 0x7159 -0x9FA0 0x715A -0x9FA1 0x715B -0x9FA2 0x715D -0x9FA3 0x715F -0x9FA4 0x7160 -0x9FA5 0x7161 -0x9FA6 0x7162 -0x9FA7 0x7163 -0x9FA8 0x7165 -0x9FA9 0x7169 -0x9FAA 0x716A -0x9FAB 0x716B -0x9FAC 0x716C -0x9FAD 0x716D -0x9FAE 0x716F -0x9FAF 0x7170 -0x9FB0 0x7171 -0x9FB1 0x7174 -0x9FB2 0x7175 -0x9FB3 0x7176 -0x9FB4 0x7177 -0x9FB5 0x7179 -0x9FB6 0x717B -0x9FB7 0x717C -0x9FB8 0x717E -0x9FB9 0x717F -0x9FBA 0x7180 -0x9FBB 0x7181 -0x9FBC 0x7182 -0x9FBD 0x7183 -0x9FBE 0x7185 -0x9FBF 0x7186 -0x9FC0 0x7187 -0x9FC1 0x7188 -0x9FC2 0x7189 -0x9FC3 0x718B -0x9FC4 0x718C -0x9FC5 0x718D -0x9FC6 0x718E -0x9FC7 0x7190 -0x9FC8 0x7191 -0x9FC9 0x7192 -0x9FCA 0x7193 -0x9FCB 0x7195 -0x9FCC 0x7196 -0x9FCD 0x7197 -0x9FCE 0x719A -0x9FCF 0x719B -0x9FD0 0x719C -0x9FD1 0x719D -0x9FD2 0x719E -0x9FD3 0x71A1 -0x9FD4 0x71A2 -0x9FD5 0x71A3 -0x9FD6 0x71A4 -0x9FD7 0x71A5 -0x9FD8 0x71A6 -0x9FD9 0x71A7 -0x9FDA 0x71A9 -0x9FDB 0x71AA -0x9FDC 0x71AB -0x9FDD 0x71AD -0x9FDE 0x71AE -0x9FDF 0x71AF -0x9FE0 0x71B0 -0x9FE1 0x71B1 -0x9FE2 0x71B2 -0x9FE3 0x71B4 -0x9FE4 0x71B6 -0x9FE5 0x71B7 -0x9FE6 0x71B8 -0x9FE7 0x71BA -0x9FE8 0x71BB -0x9FE9 0x71BC -0x9FEA 0x71BD -0x9FEB 0x71BE -0x9FEC 0x71BF -0x9FED 0x71C0 -0x9FEE 0x71C1 -0x9FEF 0x71C2 -0x9FF0 0x71C4 -0x9FF1 0x71C5 -0x9FF2 0x71C6 -0x9FF3 0x71C7 -0x9FF4 0x71C8 -0x9FF5 0x71C9 -0x9FF6 0x71CA -0x9FF7 0x71CB -0x9FF8 0x71CC -0x9FF9 0x71CD -0x9FFA 0x71CF -0x9FFB 0x71D0 -0x9FFC 0x71D1 -0x9FFD 0x71D2 -0x9FFE 0x71D3 -0xA040 0x71D6 -0xA041 0x71D7 -0xA042 0x71D8 -0xA043 0x71D9 -0xA044 0x71DA -0xA045 0x71DB -0xA046 0x71DC -0xA047 0x71DD -0xA048 0x71DE -0xA049 0x71DF -0xA04A 0x71E1 -0xA04B 0x71E2 -0xA04C 0x71E3 -0xA04D 0x71E4 -0xA04E 0x71E6 -0xA04F 0x71E8 -0xA050 0x71E9 -0xA051 0x71EA -0xA052 0x71EB -0xA053 0x71EC -0xA054 0x71ED -0xA055 0x71EF -0xA056 0x71F0 -0xA057 0x71F1 -0xA058 0x71F2 -0xA059 0x71F3 -0xA05A 0x71F4 -0xA05B 0x71F5 -0xA05C 0x71F6 -0xA05D 0x71F7 -0xA05E 0x71F8 -0xA05F 0x71FA -0xA060 0x71FB -0xA061 0x71FC -0xA062 0x71FD -0xA063 0x71FE -0xA064 0x71FF -0xA065 0x7200 -0xA066 0x7201 -0xA067 0x7202 -0xA068 0x7203 -0xA069 0x7204 -0xA06A 0x7205 -0xA06B 0x7207 -0xA06C 0x7208 -0xA06D 0x7209 -0xA06E 0x720A -0xA06F 0x720B -0xA070 0x720C -0xA071 0x720D -0xA072 0x720E -0xA073 0x720F -0xA074 0x7210 -0xA075 0x7211 -0xA076 0x7212 -0xA077 0x7213 -0xA078 0x7214 -0xA079 0x7215 -0xA07A 0x7216 -0xA07B 0x7217 -0xA07C 0x7218 -0xA07D 0x7219 -0xA07E 0x721A -0xA080 0x721B -0xA081 0x721C -0xA082 0x721E -0xA083 0x721F -0xA084 0x7220 -0xA085 0x7221 -0xA086 0x7222 -0xA087 0x7223 -0xA088 0x7224 -0xA089 0x7225 -0xA08A 0x7226 -0xA08B 0x7227 -0xA08C 0x7229 -0xA08D 0x722B -0xA08E 0x722D -0xA08F 0x722E -0xA090 0x722F -0xA091 0x7232 -0xA092 0x7233 -0xA093 0x7234 -0xA094 0x723A -0xA095 0x723C -0xA096 0x723E -0xA097 0x7240 -0xA098 0x7241 -0xA099 0x7242 -0xA09A 0x7243 -0xA09B 0x7244 -0xA09C 0x7245 -0xA09D 0x7246 -0xA09E 0x7249 -0xA09F 0x724A -0xA0A0 0x724B -0xA0A1 0x724E -0xA0A2 0x724F -0xA0A3 0x7250 -0xA0A4 0x7251 -0xA0A5 0x7253 -0xA0A6 0x7254 -0xA0A7 0x7255 -0xA0A8 0x7257 -0xA0A9 0x7258 -0xA0AA 0x725A -0xA0AB 0x725C -0xA0AC 0x725E -0xA0AD 0x7260 -0xA0AE 0x7263 -0xA0AF 0x7264 -0xA0B0 0x7265 -0xA0B1 0x7268 -0xA0B2 0x726A -0xA0B3 0x726B -0xA0B4 0x726C -0xA0B5 0x726D -0xA0B6 0x7270 -0xA0B7 0x7271 -0xA0B8 0x7273 -0xA0B9 0x7274 -0xA0BA 0x7276 -0xA0BB 0x7277 -0xA0BC 0x7278 -0xA0BD 0x727B -0xA0BE 0x727C -0xA0BF 0x727D -0xA0C0 0x7282 -0xA0C1 0x7283 -0xA0C2 0x7285 -0xA0C3 0x7286 -0xA0C4 0x7287 -0xA0C5 0x7288 -0xA0C6 0x7289 -0xA0C7 0x728C -0xA0C8 0x728E -0xA0C9 0x7290 -0xA0CA 0x7291 -0xA0CB 0x7293 -0xA0CC 0x7294 -0xA0CD 0x7295 -0xA0CE 0x7296 -0xA0CF 0x7297 -0xA0D0 0x7298 -0xA0D1 0x7299 -0xA0D2 0x729A -0xA0D3 0x729B -0xA0D4 0x729C -0xA0D5 0x729D -0xA0D6 0x729E -0xA0D7 0x72A0 -0xA0D8 0x72A1 -0xA0D9 0x72A2 -0xA0DA 0x72A3 -0xA0DB 0x72A4 -0xA0DC 0x72A5 -0xA0DD 0x72A6 -0xA0DE 0x72A7 -0xA0DF 0x72A8 -0xA0E0 0x72A9 -0xA0E1 0x72AA -0xA0E2 0x72AB -0xA0E3 0x72AE -0xA0E4 0x72B1 -0xA0E5 0x72B2 -0xA0E6 0x72B3 -0xA0E7 0x72B5 -0xA0E8 0x72BA -0xA0E9 0x72BB -0xA0EA 0x72BC -0xA0EB 0x72BD -0xA0EC 0x72BE -0xA0ED 0x72BF -0xA0EE 0x72C0 -0xA0EF 0x72C5 -0xA0F0 0x72C6 -0xA0F1 0x72C7 -0xA0F2 0x72C9 -0xA0F3 0x72CA -0xA0F4 0x72CB -0xA0F5 0x72CC -0xA0F6 0x72CF -0xA0F7 0x72D1 -0xA0F8 0x72D3 -0xA0F9 0x72D4 -0xA0FA 0x72D5 -0xA0FB 0x72D6 -0xA0FC 0x72D8 -0xA0FD 0x72DA -0xA0FE 0x72DB -0xA1A1 0x3000 -0xA1A2 0x3001 -0xA1A3 0x3002 -0xA1A4 0x00B7 -0xA1A5 0x02C9 -0xA1A6 0x02C7 -0xA1A7 0x00A8 -0xA1A8 0x3003 -0xA1A9 0x3005 -0xA1AA 0x2015 -0xA1AB 0xFF5E -0xA1AC 0x2016 -0xA1AD 0x2026 -0xA1AE 0x2018 -0xA1AF 0x2019 -0xA1B0 0x201C -0xA1B1 0x201D -0xA1B2 0x3014 -0xA1B3 0x3015 -0xA1B4 0x3008 -0xA1B5 0x3009 -0xA1B6 0x300A -0xA1B7 0x300B -0xA1B8 0x300C -0xA1B9 0x300D -0xA1BA 0x300E -0xA1BB 0x300F -0xA1BC 0x3016 -0xA1BD 0x3017 -0xA1BE 0x3010 -0xA1BF 0x3011 -0xA1C0 0x00B1 -0xA1C1 0x00D7 -0xA1C2 0x00F7 -0xA1C3 0x2236 -0xA1C4 0x2227 -0xA1C5 0x2228 -0xA1C6 0x2211 -0xA1C7 0x220F -0xA1C8 0x222A -0xA1C9 0x2229 -0xA1CA 0x2208 -0xA1CB 0x2237 -0xA1CC 0x221A -0xA1CD 0x22A5 -0xA1CE 0x2225 -0xA1CF 0x2220 -0xA1D0 0x2312 -0xA1D1 0x2299 -0xA1D2 0x222B -0xA1D3 0x222E -0xA1D4 0x2261 -0xA1D5 0x224C -0xA1D6 0x2248 -0xA1D7 0x223D -0xA1D8 0x221D -0xA1D9 0x2260 -0xA1DA 0x226E -0xA1DB 0x226F -0xA1DC 0x2264 -0xA1DD 0x2265 -0xA1DE 0x221E -0xA1DF 0x2235 -0xA1E0 0x2234 -0xA1E1 0x2642 -0xA1E2 0x2640 -0xA1E3 0x00B0 -0xA1E4 0x2032 -0xA1E5 0x2033 -0xA1E6 0x2103 -0xA1E7 0xFF04 -0xA1E8 0x00A4 -0xA1E9 0xFFE0 -0xA1EA 0xFFE1 -0xA1EB 0x2030 -0xA1EC 0x00A7 -0xA1ED 0x2116 -0xA1EE 0x2606 -0xA1EF 0x2605 -0xA1F0 0x25CB -0xA1F1 0x25CF -0xA1F2 0x25CE -0xA1F3 0x25C7 -0xA1F4 0x25C6 -0xA1F5 0x25A1 -0xA1F6 0x25A0 -0xA1F7 0x25B3 -0xA1F8 0x25B2 -0xA1F9 0x203B -0xA1FA 0x2192 -0xA1FB 0x2190 -0xA1FC 0x2191 -0xA1FD 0x2193 -0xA1FE 0x3013 -0xA2A1 0x2170 -0xA2A2 0x2171 -0xA2A3 0x2172 -0xA2A4 0x2173 -0xA2A5 0x2174 -0xA2A6 0x2175 -0xA2A7 0x2176 -0xA2A8 0x2177 -0xA2A9 0x2178 -0xA2AA 0x2179 -0xA2B1 0x2488 -0xA2B2 0x2489 -0xA2B3 0x248A -0xA2B4 0x248B -0xA2B5 0x248C -0xA2B6 0x248D -0xA2B7 0x248E -0xA2B8 0x248F -0xA2B9 0x2490 -0xA2BA 0x2491 -0xA2BB 0x2492 -0xA2BC 0x2493 -0xA2BD 0x2494 -0xA2BE 0x2495 -0xA2BF 0x2496 -0xA2C0 0x2497 -0xA2C1 0x2498 -0xA2C2 0x2499 -0xA2C3 0x249A -0xA2C4 0x249B -0xA2C5 0x2474 -0xA2C6 0x2475 -0xA2C7 0x2476 -0xA2C8 0x2477 -0xA2C9 0x2478 -0xA2CA 0x2479 -0xA2CB 0x247A -0xA2CC 0x247B -0xA2CD 0x247C -0xA2CE 0x247D -0xA2CF 0x247E -0xA2D0 0x247F -0xA2D1 0x2480 -0xA2D2 0x2481 -0xA2D3 0x2482 -0xA2D4 0x2483 -0xA2D5 0x2484 -0xA2D6 0x2485 -0xA2D7 0x2486 -0xA2D8 0x2487 -0xA2D9 0x2460 -0xA2DA 0x2461 -0xA2DB 0x2462 -0xA2DC 0x2463 -0xA2DD 0x2464 -0xA2DE 0x2465 -0xA2DF 0x2466 -0xA2E0 0x2467 -0xA2E1 0x2468 -0xA2E2 0x2469 -0xA2E5 0x3220 -0xA2E6 0x3221 -0xA2E7 0x3222 -0xA2E8 0x3223 -0xA2E9 0x3224 -0xA2EA 0x3225 -0xA2EB 0x3226 -0xA2EC 0x3227 -0xA2ED 0x3228 -0xA2EE 0x3229 -0xA2F1 0x2160 -0xA2F2 0x2161 -0xA2F3 0x2162 -0xA2F4 0x2163 -0xA2F5 0x2164 -0xA2F6 0x2165 -0xA2F7 0x2166 -0xA2F8 0x2167 -0xA2F9 0x2168 -0xA2FA 0x2169 -0xA2FB 0x216A -0xA2FC 0x216B -0xA3A1 0xFF01 -0xA3A2 0xFF02 -0xA3A3 0xFF03 -0xA3A4 0xFFE5 -0xA3A5 0xFF05 -0xA3A6 0xFF06 -0xA3A7 0xFF07 -0xA3A8 0xFF08 -0xA3A9 0xFF09 -0xA3AA 0xFF0A -0xA3AB 0xFF0B -0xA3AC 0xFF0C -0xA3AD 0xFF0D -0xA3AE 0xFF0E -0xA3AF 0xFF0F -0xA3B0 0xFF10 -0xA3B1 0xFF11 -0xA3B2 0xFF12 -0xA3B3 0xFF13 -0xA3B4 0xFF14 -0xA3B5 0xFF15 -0xA3B6 0xFF16 -0xA3B7 0xFF17 -0xA3B8 0xFF18 -0xA3B9 0xFF19 -0xA3BA 0xFF1A -0xA3BB 0xFF1B -0xA3BC 0xFF1C -0xA3BD 0xFF1D -0xA3BE 0xFF1E -0xA3BF 0xFF1F -0xA3C0 0xFF20 -0xA3C1 0xFF21 -0xA3C2 0xFF22 -0xA3C3 0xFF23 -0xA3C4 0xFF24 -0xA3C5 0xFF25 -0xA3C6 0xFF26 -0xA3C7 0xFF27 -0xA3C8 0xFF28 -0xA3C9 0xFF29 -0xA3CA 0xFF2A -0xA3CB 0xFF2B -0xA3CC 0xFF2C -0xA3CD 0xFF2D -0xA3CE 0xFF2E -0xA3CF 0xFF2F -0xA3D0 0xFF30 -0xA3D1 0xFF31 -0xA3D2 0xFF32 -0xA3D3 0xFF33 -0xA3D4 0xFF34 -0xA3D5 0xFF35 -0xA3D6 0xFF36 -0xA3D7 0xFF37 -0xA3D8 0xFF38 -0xA3D9 0xFF39 -0xA3DA 0xFF3A -0xA3DB 0xFF3B -0xA3DC 0xFF3C -0xA3DD 0xFF3D -0xA3DE 0xFF3E -0xA3DF 0xFF3F -0xA3E0 0xFF40 -0xA3E1 0xFF41 -0xA3E2 0xFF42 -0xA3E3 0xFF43 -0xA3E4 0xFF44 -0xA3E5 0xFF45 -0xA3E6 0xFF46 -0xA3E7 0xFF47 -0xA3E8 0xFF48 -0xA3E9 0xFF49 -0xA3EA 0xFF4A -0xA3EB 0xFF4B -0xA3EC 0xFF4C -0xA3ED 0xFF4D -0xA3EE 0xFF4E -0xA3EF 0xFF4F -0xA3F0 0xFF50 -0xA3F1 0xFF51 -0xA3F2 0xFF52 -0xA3F3 0xFF53 -0xA3F4 0xFF54 -0xA3F5 0xFF55 -0xA3F6 0xFF56 -0xA3F7 0xFF57 -0xA3F8 0xFF58 -0xA3F9 0xFF59 -0xA3FA 0xFF5A -0xA3FB 0xFF5B -0xA3FC 0xFF5C -0xA3FD 0xFF5D -0xA3FE 0xFFE3 -0xA4A1 0x3041 -0xA4A2 0x3042 -0xA4A3 0x3043 -0xA4A4 0x3044 -0xA4A5 0x3045 -0xA4A6 0x3046 -0xA4A7 0x3047 -0xA4A8 0x3048 -0xA4A9 0x3049 -0xA4AA 0x304A -0xA4AB 0x304B -0xA4AC 0x304C -0xA4AD 0x304D -0xA4AE 0x304E -0xA4AF 0x304F -0xA4B0 0x3050 -0xA4B1 0x3051 -0xA4B2 0x3052 -0xA4B3 0x3053 -0xA4B4 0x3054 -0xA4B5 0x3055 -0xA4B6 0x3056 -0xA4B7 0x3057 -0xA4B8 0x3058 -0xA4B9 0x3059 -0xA4BA 0x305A -0xA4BB 0x305B -0xA4BC 0x305C -0xA4BD 0x305D -0xA4BE 0x305E -0xA4BF 0x305F -0xA4C0 0x3060 -0xA4C1 0x3061 -0xA4C2 0x3062 -0xA4C3 0x3063 -0xA4C4 0x3064 -0xA4C5 0x3065 -0xA4C6 0x3066 -0xA4C7 0x3067 -0xA4C8 0x3068 -0xA4C9 0x3069 -0xA4CA 0x306A -0xA4CB 0x306B -0xA4CC 0x306C -0xA4CD 0x306D -0xA4CE 0x306E -0xA4CF 0x306F -0xA4D0 0x3070 -0xA4D1 0x3071 -0xA4D2 0x3072 -0xA4D3 0x3073 -0xA4D4 0x3074 -0xA4D5 0x3075 -0xA4D6 0x3076 -0xA4D7 0x3077 -0xA4D8 0x3078 -0xA4D9 0x3079 -0xA4DA 0x307A -0xA4DB 0x307B -0xA4DC 0x307C -0xA4DD 0x307D -0xA4DE 0x307E -0xA4DF 0x307F -0xA4E0 0x3080 -0xA4E1 0x3081 -0xA4E2 0x3082 -0xA4E3 0x3083 -0xA4E4 0x3084 -0xA4E5 0x3085 -0xA4E6 0x3086 -0xA4E7 0x3087 -0xA4E8 0x3088 -0xA4E9 0x3089 -0xA4EA 0x308A -0xA4EB 0x308B -0xA4EC 0x308C -0xA4ED 0x308D -0xA4EE 0x308E -0xA4EF 0x308F -0xA4F0 0x3090 -0xA4F1 0x3091 -0xA4F2 0x3092 -0xA4F3 0x3093 -0xA5A1 0x30A1 -0xA5A2 0x30A2 -0xA5A3 0x30A3 -0xA5A4 0x30A4 -0xA5A5 0x30A5 -0xA5A6 0x30A6 -0xA5A7 0x30A7 -0xA5A8 0x30A8 -0xA5A9 0x30A9 -0xA5AA 0x30AA -0xA5AB 0x30AB -0xA5AC 0x30AC -0xA5AD 0x30AD -0xA5AE 0x30AE -0xA5AF 0x30AF -0xA5B0 0x30B0 -0xA5B1 0x30B1 -0xA5B2 0x30B2 -0xA5B3 0x30B3 -0xA5B4 0x30B4 -0xA5B5 0x30B5 -0xA5B6 0x30B6 -0xA5B7 0x30B7 -0xA5B8 0x30B8 -0xA5B9 0x30B9 -0xA5BA 0x30BA -0xA5BB 0x30BB -0xA5BC 0x30BC -0xA5BD 0x30BD -0xA5BE 0x30BE -0xA5BF 0x30BF -0xA5C0 0x30C0 -0xA5C1 0x30C1 -0xA5C2 0x30C2 -0xA5C3 0x30C3 -0xA5C4 0x30C4 -0xA5C5 0x30C5 -0xA5C6 0x30C6 -0xA5C7 0x30C7 -0xA5C8 0x30C8 -0xA5C9 0x30C9 -0xA5CA 0x30CA -0xA5CB 0x30CB -0xA5CC 0x30CC -0xA5CD 0x30CD -0xA5CE 0x30CE -0xA5CF 0x30CF -0xA5D0 0x30D0 -0xA5D1 0x30D1 -0xA5D2 0x30D2 -0xA5D3 0x30D3 -0xA5D4 0x30D4 -0xA5D5 0x30D5 -0xA5D6 0x30D6 -0xA5D7 0x30D7 -0xA5D8 0x30D8 -0xA5D9 0x30D9 -0xA5DA 0x30DA -0xA5DB 0x30DB -0xA5DC 0x30DC -0xA5DD 0x30DD -0xA5DE 0x30DE -0xA5DF 0x30DF -0xA5E0 0x30E0 -0xA5E1 0x30E1 -0xA5E2 0x30E2 -0xA5E3 0x30E3 -0xA5E4 0x30E4 -0xA5E5 0x30E5 -0xA5E6 0x30E6 -0xA5E7 0x30E7 -0xA5E8 0x30E8 -0xA5E9 0x30E9 -0xA5EA 0x30EA -0xA5EB 0x30EB -0xA5EC 0x30EC -0xA5ED 0x30ED -0xA5EE 0x30EE -0xA5EF 0x30EF -0xA5F0 0x30F0 -0xA5F1 0x30F1 -0xA5F2 0x30F2 -0xA5F3 0x30F3 -0xA5F4 0x30F4 -0xA5F5 0x30F5 -0xA5F6 0x30F6 -0xA6A1 0x0391 -0xA6A2 0x0392 -0xA6A3 0x0393 -0xA6A4 0x0394 -0xA6A5 0x0395 -0xA6A6 0x0396 -0xA6A7 0x0397 -0xA6A8 0x0398 -0xA6A9 0x0399 -0xA6AA 0x039A -0xA6AB 0x039B -0xA6AC 0x039C -0xA6AD 0x039D -0xA6AE 0x039E -0xA6AF 0x039F -0xA6B0 0x03A0 -0xA6B1 0x03A1 -0xA6B2 0x03A3 -0xA6B3 0x03A4 -0xA6B4 0x03A5 -0xA6B5 0x03A6 -0xA6B6 0x03A7 -0xA6B7 0x03A8 -0xA6B8 0x03A9 -0xA6C1 0x03B1 -0xA6C2 0x03B2 -0xA6C3 0x03B3 -0xA6C4 0x03B4 -0xA6C5 0x03B5 -0xA6C6 0x03B6 -0xA6C7 0x03B7 -0xA6C8 0x03B8 -0xA6C9 0x03B9 -0xA6CA 0x03BA -0xA6CB 0x03BB -0xA6CC 0x03BC -0xA6CD 0x03BD -0xA6CE 0x03BE -0xA6CF 0x03BF -0xA6D0 0x03C0 -0xA6D1 0x03C1 -0xA6D2 0x03C3 -0xA6D3 0x03C4 -0xA6D4 0x03C5 -0xA6D5 0x03C6 -0xA6D6 0x03C7 -0xA6D7 0x03C8 -0xA6D8 0x03C9 -0xA6E0 0xFE35 -0xA6E1 0xFE36 -0xA6E2 0xFE39 -0xA6E3 0xFE3A -0xA6E4 0xFE3F -0xA6E5 0xFE40 -0xA6E6 0xFE3D -0xA6E7 0xFE3E -0xA6E8 0xFE41 -0xA6E9 0xFE42 -0xA6EA 0xFE43 -0xA6EB 0xFE44 -0xA6EE 0xFE3B -0xA6EF 0xFE3C -0xA6F0 0xFE37 -0xA6F1 0xFE38 -0xA6F2 0xFE31 -0xA6F4 0xFE33 -0xA6F5 0xFE34 -0xA7A1 0x0410 -0xA7A2 0x0411 -0xA7A3 0x0412 -0xA7A4 0x0413 -0xA7A5 0x0414 -0xA7A6 0x0415 -0xA7A7 0x0401 -0xA7A8 0x0416 -0xA7A9 0x0417 -0xA7AA 0x0418 -0xA7AB 0x0419 -0xA7AC 0x041A -0xA7AD 0x041B -0xA7AE 0x041C -0xA7AF 0x041D -0xA7B0 0x041E -0xA7B1 0x041F -0xA7B2 0x0420 -0xA7B3 0x0421 -0xA7B4 0x0422 -0xA7B5 0x0423 -0xA7B6 0x0424 -0xA7B7 0x0425 -0xA7B8 0x0426 -0xA7B9 0x0427 -0xA7BA 0x0428 -0xA7BB 0x0429 -0xA7BC 0x042A -0xA7BD 0x042B -0xA7BE 0x042C -0xA7BF 0x042D -0xA7C0 0x042E -0xA7C1 0x042F -0xA7D1 0x0430 -0xA7D2 0x0431 -0xA7D3 0x0432 -0xA7D4 0x0433 -0xA7D5 0x0434 -0xA7D6 0x0435 -0xA7D7 0x0451 -0xA7D8 0x0436 -0xA7D9 0x0437 -0xA7DA 0x0438 -0xA7DB 0x0439 -0xA7DC 0x043A -0xA7DD 0x043B -0xA7DE 0x043C -0xA7DF 0x043D -0xA7E0 0x043E -0xA7E1 0x043F -0xA7E2 0x0440 -0xA7E3 0x0441 -0xA7E4 0x0442 -0xA7E5 0x0443 -0xA7E6 0x0444 -0xA7E7 0x0445 -0xA7E8 0x0446 -0xA7E9 0x0447 -0xA7EA 0x0448 -0xA7EB 0x0449 -0xA7EC 0x044A -0xA7ED 0x044B -0xA7EE 0x044C -0xA7EF 0x044D -0xA7F0 0x044E -0xA7F1 0x044F -0xA840 0x02CA -0xA841 0x02CB -0xA842 0x02D9 -0xA843 0x2013 -0xA844 0x2014 -0xA845 0x2025 -0xA846 0x2035 -0xA847 0x2105 -0xA848 0x2109 -0xA849 0x2196 -0xA84A 0x2197 -0xA84B 0x2198 -0xA84C 0x2199 -0xA84D 0x2215 -0xA84E 0x221F -0xA84F 0x2223 -0xA850 0x2252 -0xA851 0x2266 -0xA852 0x2267 -0xA853 0x22BF -0xA854 0x2550 -0xA855 0x2551 -0xA856 0x2552 -0xA857 0x2553 -0xA858 0x2554 -0xA859 0x2555 -0xA85A 0x2556 -0xA85B 0x2557 -0xA85C 0x2558 -0xA85D 0x2559 -0xA85E 0x255A -0xA85F 0x255B -0xA860 0x255C -0xA861 0x255D -0xA862 0x255E -0xA863 0x255F -0xA864 0x2560 -0xA865 0x2561 -0xA866 0x2562 -0xA867 0x2563 -0xA868 0x2564 -0xA869 0x2565 -0xA86A 0x2566 -0xA86B 0x2567 -0xA86C 0x2568 -0xA86D 0x2569 -0xA86E 0x256A -0xA86F 0x256B -0xA870 0x256C -0xA871 0x256D -0xA872 0x256E -0xA873 0x256F -0xA874 0x2570 -0xA875 0x2571 -0xA876 0x2572 -0xA877 0x2573 -0xA878 0x2581 -0xA879 0x2582 -0xA87A 0x2583 -0xA87B 0x2584 -0xA87C 0x2585 -0xA87D 0x2586 -0xA87E 0x2587 -0xA880 0x2588 -0xA881 0x2589 -0xA882 0x258A -0xA883 0x258B -0xA884 0x258C -0xA885 0x258D -0xA886 0x258E -0xA887 0x258F -0xA888 0x2593 -0xA889 0x2594 -0xA88A 0x2595 -0xA88B 0x25BC -0xA88C 0x25BD -0xA88D 0x25E2 -0xA88E 0x25E3 -0xA88F 0x25E4 -0xA890 0x25E5 -0xA891 0x2609 -0xA892 0x2295 -0xA893 0x3012 -0xA894 0x301D -0xA895 0x301E -0xA8A1 0x0101 -0xA8A2 0x00E1 -0xA8A3 0x01CE -0xA8A4 0x00E0 -0xA8A5 0x0113 -0xA8A6 0x00E9 -0xA8A7 0x011B -0xA8A8 0x00E8 -0xA8A9 0x012B -0xA8AA 0x00ED -0xA8AB 0x01D0 -0xA8AC 0x00EC -0xA8AD 0x014D -0xA8AE 0x00F3 -0xA8AF 0x01D2 -0xA8B0 0x00F2 -0xA8B1 0x016B -0xA8B2 0x00FA -0xA8B3 0x01D4 -0xA8B4 0x00F9 -0xA8B5 0x01D6 -0xA8B6 0x01D8 -0xA8B7 0x01DA -0xA8B8 0x01DC -0xA8B9 0x00FC -0xA8BA 0x00EA -0xA8BB 0x0251 -0xA8BC 0xE7C7 -0xA8BD 0x0144 -0xA8BE 0x0148 -0xA8BF 0xE7C8 -0xA8C0 0x0261 -0xA8C5 0x3105 -0xA8C6 0x3106 -0xA8C7 0x3107 -0xA8C8 0x3108 -0xA8C9 0x3109 -0xA8CA 0x310A -0xA8CB 0x310B -0xA8CC 0x310C -0xA8CD 0x310D -0xA8CE 0x310E -0xA8CF 0x310F -0xA8D0 0x3110 -0xA8D1 0x3111 -0xA8D2 0x3112 -0xA8D3 0x3113 -0xA8D4 0x3114 -0xA8D5 0x3115 -0xA8D6 0x3116 -0xA8D7 0x3117 -0xA8D8 0x3118 -0xA8D9 0x3119 -0xA8DA 0x311A -0xA8DB 0x311B -0xA8DC 0x311C -0xA8DD 0x311D -0xA8DE 0x311E -0xA8DF 0x311F -0xA8E0 0x3120 -0xA8E1 0x3121 -0xA8E2 0x3122 -0xA8E3 0x3123 -0xA8E4 0x3124 -0xA8E5 0x3125 -0xA8E6 0x3126 -0xA8E7 0x3127 -0xA8E8 0x3128 -0xA8E9 0x3129 -0xA940 0x3021 -0xA941 0x3022 -0xA942 0x3023 -0xA943 0x3024 -0xA944 0x3025 -0xA945 0x3026 -0xA946 0x3027 -0xA947 0x3028 -0xA948 0x3029 -0xA949 0x32A3 -0xA94A 0x338E -0xA94B 0x338F -0xA94C 0x339C -0xA94D 0x339D -0xA94E 0x339E -0xA94F 0x33A1 -0xA950 0x33C4 -0xA951 0x33CE -0xA952 0x33D1 -0xA953 0x33D2 -0xA954 0x33D5 -0xA955 0xFE30 -0xA956 0xFFE2 -0xA957 0xFFE4 -0xA959 0x2121 -0xA95A 0x3231 -0xA95C 0x2010 -0xA960 0x30FC -0xA961 0x309B -0xA962 0x309C -0xA963 0x30FD -0xA964 0x30FE -0xA965 0x3006 -0xA966 0x309D -0xA967 0x309E -0xA968 0xFE49 -0xA969 0xFE4A -0xA96A 0xFE4B -0xA96B 0xFE4C -0xA96C 0xFE4D -0xA96D 0xFE4E -0xA96E 0xFE4F -0xA96F 0xFE50 -0xA970 0xFE51 -0xA971 0xFE52 -0xA972 0xFE54 -0xA973 0xFE55 -0xA974 0xFE56 -0xA975 0xFE57 -0xA976 0xFE59 -0xA977 0xFE5A -0xA978 0xFE5B -0xA979 0xFE5C -0xA97A 0xFE5D -0xA97B 0xFE5E -0xA97C 0xFE5F -0xA97D 0xFE60 -0xA97E 0xFE61 -0xA980 0xFE62 -0xA981 0xFE63 -0xA982 0xFE64 -0xA983 0xFE65 -0xA984 0xFE66 -0xA985 0xFE68 -0xA986 0xFE69 -0xA987 0xFE6A -0xA988 0xFE6B -0xA989 0xE7E7 -0xA98A 0xE7E8 -0xA98B 0xE7E9 -0xA98C 0xE7EA -0xA98D 0xE7EB -0xA98E 0xE7EC -0xA98F 0xE7ED -0xA990 0xE7EE -0xA991 0xE7EF -0xA992 0xE7F0 -0xA993 0xE7F1 -0xA994 0xE7F2 -0xA995 0xE7F3 -0xA996 0x3007 -0xA9A4 0x2500 -0xA9A5 0x2501 -0xA9A6 0x2502 -0xA9A7 0x2503 -0xA9A8 0x2504 -0xA9A9 0x2505 -0xA9AA 0x2506 -0xA9AB 0x2507 -0xA9AC 0x2508 -0xA9AD 0x2509 -0xA9AE 0x250A -0xA9AF 0x250B -0xA9B0 0x250C -0xA9B1 0x250D -0xA9B2 0x250E -0xA9B3 0x250F -0xA9B4 0x2510 -0xA9B5 0x2511 -0xA9B6 0x2512 -0xA9B7 0x2513 -0xA9B8 0x2514 -0xA9B9 0x2515 -0xA9BA 0x2516 -0xA9BB 0x2517 -0xA9BC 0x2518 -0xA9BD 0x2519 -0xA9BE 0x251A -0xA9BF 0x251B -0xA9C0 0x251C -0xA9C1 0x251D -0xA9C2 0x251E -0xA9C3 0x251F -0xA9C4 0x2520 -0xA9C5 0x2521 -0xA9C6 0x2522 -0xA9C7 0x2523 -0xA9C8 0x2524 -0xA9C9 0x2525 -0xA9CA 0x2526 -0xA9CB 0x2527 -0xA9CC 0x2528 -0xA9CD 0x2529 -0xA9CE 0x252A -0xA9CF 0x252B -0xA9D0 0x252C -0xA9D1 0x252D -0xA9D2 0x252E -0xA9D3 0x252F -0xA9D4 0x2530 -0xA9D5 0x2531 -0xA9D6 0x2532 -0xA9D7 0x2533 -0xA9D8 0x2534 -0xA9D9 0x2535 -0xA9DA 0x2536 -0xA9DB 0x2537 -0xA9DC 0x2538 -0xA9DD 0x2539 -0xA9DE 0x253A -0xA9DF 0x253B -0xA9E0 0x253C -0xA9E1 0x253D -0xA9E2 0x253E -0xA9E3 0x253F -0xA9E4 0x2540 -0xA9E5 0x2541 -0xA9E6 0x2542 -0xA9E7 0x2543 -0xA9E8 0x2544 -0xA9E9 0x2545 -0xA9EA 0x2546 -0xA9EB 0x2547 -0xA9EC 0x2548 -0xA9ED 0x2549 -0xA9EE 0x254A -0xA9EF 0x254B -0xAA40 0x72DC -0xAA41 0x72DD -0xAA42 0x72DF -0xAA43 0x72E2 -0xAA44 0x72E3 -0xAA45 0x72E4 -0xAA46 0x72E5 -0xAA47 0x72E6 -0xAA48 0x72E7 -0xAA49 0x72EA -0xAA4A 0x72EB -0xAA4B 0x72F5 -0xAA4C 0x72F6 -0xAA4D 0x72F9 -0xAA4E 0x72FD -0xAA4F 0x72FE -0xAA50 0x72FF -0xAA51 0x7300 -0xAA52 0x7302 -0xAA53 0x7304 -0xAA54 0x7305 -0xAA55 0x7306 -0xAA56 0x7307 -0xAA57 0x7308 -0xAA58 0x7309 -0xAA59 0x730B -0xAA5A 0x730C -0xAA5B 0x730D -0xAA5C 0x730F -0xAA5D 0x7310 -0xAA5E 0x7311 -0xAA5F 0x7312 -0xAA60 0x7314 -0xAA61 0x7318 -0xAA62 0x7319 -0xAA63 0x731A -0xAA64 0x731F -0xAA65 0x7320 -0xAA66 0x7323 -0xAA67 0x7324 -0xAA68 0x7326 -0xAA69 0x7327 -0xAA6A 0x7328 -0xAA6B 0x732D -0xAA6C 0x732F -0xAA6D 0x7330 -0xAA6E 0x7332 -0xAA6F 0x7333 -0xAA70 0x7335 -0xAA71 0x7336 -0xAA72 0x733A -0xAA73 0x733B -0xAA74 0x733C -0xAA75 0x733D -0xAA76 0x7340 -0xAA77 0x7341 -0xAA78 0x7342 -0xAA79 0x7343 -0xAA7A 0x7344 -0xAA7B 0x7345 -0xAA7C 0x7346 -0xAA7D 0x7347 -0xAA7E 0x7348 -0xAA80 0x7349 -0xAA81 0x734A -0xAA82 0x734B -0xAA83 0x734C -0xAA84 0x734E -0xAA85 0x734F -0xAA86 0x7351 -0xAA87 0x7353 -0xAA88 0x7354 -0xAA89 0x7355 -0xAA8A 0x7356 -0xAA8B 0x7358 -0xAA8C 0x7359 -0xAA8D 0x735A -0xAA8E 0x735B -0xAA8F 0x735C -0xAA90 0x735D -0xAA91 0x735E -0xAA92 0x735F -0xAA93 0x7361 -0xAA94 0x7362 -0xAA95 0x7363 -0xAA96 0x7364 -0xAA97 0x7365 -0xAA98 0x7366 -0xAA99 0x7367 -0xAA9A 0x7368 -0xAA9B 0x7369 -0xAA9C 0x736A -0xAA9D 0x736B -0xAA9E 0x736E -0xAA9F 0x7370 -0xAAA0 0x7371 -0xAB40 0x7372 -0xAB41 0x7373 -0xAB42 0x7374 -0xAB43 0x7375 -0xAB44 0x7376 -0xAB45 0x7377 -0xAB46 0x7378 -0xAB47 0x7379 -0xAB48 0x737A -0xAB49 0x737B -0xAB4A 0x737C -0xAB4B 0x737D -0xAB4C 0x737F -0xAB4D 0x7380 -0xAB4E 0x7381 -0xAB4F 0x7382 -0xAB50 0x7383 -0xAB51 0x7385 -0xAB52 0x7386 -0xAB53 0x7388 -0xAB54 0x738A -0xAB55 0x738C -0xAB56 0x738D -0xAB57 0x738F -0xAB58 0x7390 -0xAB59 0x7392 -0xAB5A 0x7393 -0xAB5B 0x7394 -0xAB5C 0x7395 -0xAB5D 0x7397 -0xAB5E 0x7398 -0xAB5F 0x7399 -0xAB60 0x739A -0xAB61 0x739C -0xAB62 0x739D -0xAB63 0x739E -0xAB64 0x73A0 -0xAB65 0x73A1 -0xAB66 0x73A3 -0xAB67 0x73A4 -0xAB68 0x73A5 -0xAB69 0x73A6 -0xAB6A 0x73A7 -0xAB6B 0x73A8 -0xAB6C 0x73AA -0xAB6D 0x73AC -0xAB6E 0x73AD -0xAB6F 0x73B1 -0xAB70 0x73B4 -0xAB71 0x73B5 -0xAB72 0x73B6 -0xAB73 0x73B8 -0xAB74 0x73B9 -0xAB75 0x73BC -0xAB76 0x73BD -0xAB77 0x73BE -0xAB78 0x73BF -0xAB79 0x73C1 -0xAB7A 0x73C3 -0xAB7B 0x73C4 -0xAB7C 0x73C5 -0xAB7D 0x73C6 -0xAB7E 0x73C7 -0xAB80 0x73CB -0xAB81 0x73CC -0xAB82 0x73CE -0xAB83 0x73D2 -0xAB84 0x73D3 -0xAB85 0x73D4 -0xAB86 0x73D5 -0xAB87 0x73D6 -0xAB88 0x73D7 -0xAB89 0x73D8 -0xAB8A 0x73DA -0xAB8B 0x73DB -0xAB8C 0x73DC -0xAB8D 0x73DD -0xAB8E 0x73DF -0xAB8F 0x73E1 -0xAB90 0x73E2 -0xAB91 0x73E3 -0xAB92 0x73E4 -0xAB93 0x73E6 -0xAB94 0x73E8 -0xAB95 0x73EA -0xAB96 0x73EB -0xAB97 0x73EC -0xAB98 0x73EE -0xAB99 0x73EF -0xAB9A 0x73F0 -0xAB9B 0x73F1 -0xAB9C 0x73F3 -0xAB9D 0x73F4 -0xAB9E 0x73F5 -0xAB9F 0x73F6 -0xABA0 0x73F7 -0xAC40 0x73F8 -0xAC41 0x73F9 -0xAC42 0x73FA -0xAC43 0x73FB -0xAC44 0x73FC -0xAC45 0x73FD -0xAC46 0x73FE -0xAC47 0x73FF -0xAC48 0x7400 -0xAC49 0x7401 -0xAC4A 0x7402 -0xAC4B 0x7404 -0xAC4C 0x7407 -0xAC4D 0x7408 -0xAC4E 0x740B -0xAC4F 0x740C -0xAC50 0x740D -0xAC51 0x740E -0xAC52 0x7411 -0xAC53 0x7412 -0xAC54 0x7413 -0xAC55 0x7414 -0xAC56 0x7415 -0xAC57 0x7416 -0xAC58 0x7417 -0xAC59 0x7418 -0xAC5A 0x7419 -0xAC5B 0x741C -0xAC5C 0x741D -0xAC5D 0x741E -0xAC5E 0x741F -0xAC5F 0x7420 -0xAC60 0x7421 -0xAC61 0x7423 -0xAC62 0x7424 -0xAC63 0x7427 -0xAC64 0x7429 -0xAC65 0x742B -0xAC66 0x742D -0xAC67 0x742F -0xAC68 0x7431 -0xAC69 0x7432 -0xAC6A 0x7437 -0xAC6B 0x7438 -0xAC6C 0x7439 -0xAC6D 0x743A -0xAC6E 0x743B -0xAC6F 0x743D -0xAC70 0x743E -0xAC71 0x743F -0xAC72 0x7440 -0xAC73 0x7442 -0xAC74 0x7443 -0xAC75 0x7444 -0xAC76 0x7445 -0xAC77 0x7446 -0xAC78 0x7447 -0xAC79 0x7448 -0xAC7A 0x7449 -0xAC7B 0x744A -0xAC7C 0x744B -0xAC7D 0x744C -0xAC7E 0x744D -0xAC80 0x744E -0xAC81 0x744F -0xAC82 0x7450 -0xAC83 0x7451 -0xAC84 0x7452 -0xAC85 0x7453 -0xAC86 0x7454 -0xAC87 0x7456 -0xAC88 0x7458 -0xAC89 0x745D -0xAC8A 0x7460 -0xAC8B 0x7461 -0xAC8C 0x7462 -0xAC8D 0x7463 -0xAC8E 0x7464 -0xAC8F 0x7465 -0xAC90 0x7466 -0xAC91 0x7467 -0xAC92 0x7468 -0xAC93 0x7469 -0xAC94 0x746A -0xAC95 0x746B -0xAC96 0x746C -0xAC97 0x746E -0xAC98 0x746F -0xAC99 0x7471 -0xAC9A 0x7472 -0xAC9B 0x7473 -0xAC9C 0x7474 -0xAC9D 0x7475 -0xAC9E 0x7478 -0xAC9F 0x7479 -0xACA0 0x747A -0xAD40 0x747B -0xAD41 0x747C -0xAD42 0x747D -0xAD43 0x747F -0xAD44 0x7482 -0xAD45 0x7484 -0xAD46 0x7485 -0xAD47 0x7486 -0xAD48 0x7488 -0xAD49 0x7489 -0xAD4A 0x748A -0xAD4B 0x748C -0xAD4C 0x748D -0xAD4D 0x748F -0xAD4E 0x7491 -0xAD4F 0x7492 -0xAD50 0x7493 -0xAD51 0x7494 -0xAD52 0x7495 -0xAD53 0x7496 -0xAD54 0x7497 -0xAD55 0x7498 -0xAD56 0x7499 -0xAD57 0x749A -0xAD58 0x749B -0xAD59 0x749D -0xAD5A 0x749F -0xAD5B 0x74A0 -0xAD5C 0x74A1 -0xAD5D 0x74A2 -0xAD5E 0x74A3 -0xAD5F 0x74A4 -0xAD60 0x74A5 -0xAD61 0x74A6 -0xAD62 0x74AA -0xAD63 0x74AB -0xAD64 0x74AC -0xAD65 0x74AD -0xAD66 0x74AE -0xAD67 0x74AF -0xAD68 0x74B0 -0xAD69 0x74B1 -0xAD6A 0x74B2 -0xAD6B 0x74B3 -0xAD6C 0x74B4 -0xAD6D 0x74B5 -0xAD6E 0x74B6 -0xAD6F 0x74B7 -0xAD70 0x74B8 -0xAD71 0x74B9 -0xAD72 0x74BB -0xAD73 0x74BC -0xAD74 0x74BD -0xAD75 0x74BE -0xAD76 0x74BF -0xAD77 0x74C0 -0xAD78 0x74C1 -0xAD79 0x74C2 -0xAD7A 0x74C3 -0xAD7B 0x74C4 -0xAD7C 0x74C5 -0xAD7D 0x74C6 -0xAD7E 0x74C7 -0xAD80 0x74C8 -0xAD81 0x74C9 -0xAD82 0x74CA -0xAD83 0x74CB -0xAD84 0x74CC -0xAD85 0x74CD -0xAD86 0x74CE -0xAD87 0x74CF -0xAD88 0x74D0 -0xAD89 0x74D1 -0xAD8A 0x74D3 -0xAD8B 0x74D4 -0xAD8C 0x74D5 -0xAD8D 0x74D6 -0xAD8E 0x74D7 -0xAD8F 0x74D8 -0xAD90 0x74D9 -0xAD91 0x74DA -0xAD92 0x74DB -0xAD93 0x74DD -0xAD94 0x74DF -0xAD95 0x74E1 -0xAD96 0x74E5 -0xAD97 0x74E7 -0xAD98 0x74E8 -0xAD99 0x74E9 -0xAD9A 0x74EA -0xAD9B 0x74EB -0xAD9C 0x74EC -0xAD9D 0x74ED -0xAD9E 0x74F0 -0xAD9F 0x74F1 -0xADA0 0x74F2 -0xAE40 0x74F3 -0xAE41 0x74F5 -0xAE42 0x74F8 -0xAE43 0x74F9 -0xAE44 0x74FA -0xAE45 0x74FB -0xAE46 0x74FC -0xAE47 0x74FD -0xAE48 0x74FE -0xAE49 0x7500 -0xAE4A 0x7501 -0xAE4B 0x7502 -0xAE4C 0x7503 -0xAE4D 0x7505 -0xAE4E 0x7506 -0xAE4F 0x7507 -0xAE50 0x7508 -0xAE51 0x7509 -0xAE52 0x750A -0xAE53 0x750B -0xAE54 0x750C -0xAE55 0x750E -0xAE56 0x7510 -0xAE57 0x7512 -0xAE58 0x7514 -0xAE59 0x7515 -0xAE5A 0x7516 -0xAE5B 0x7517 -0xAE5C 0x751B -0xAE5D 0x751D -0xAE5E 0x751E -0xAE5F 0x7520 -0xAE60 0x7521 -0xAE61 0x7522 -0xAE62 0x7523 -0xAE63 0x7524 -0xAE64 0x7526 -0xAE65 0x7527 -0xAE66 0x752A -0xAE67 0x752E -0xAE68 0x7534 -0xAE69 0x7536 -0xAE6A 0x7539 -0xAE6B 0x753C -0xAE6C 0x753D -0xAE6D 0x753F -0xAE6E 0x7541 -0xAE6F 0x7542 -0xAE70 0x7543 -0xAE71 0x7544 -0xAE72 0x7546 -0xAE73 0x7547 -0xAE74 0x7549 -0xAE75 0x754A -0xAE76 0x754D -0xAE77 0x7550 -0xAE78 0x7551 -0xAE79 0x7552 -0xAE7A 0x7553 -0xAE7B 0x7555 -0xAE7C 0x7556 -0xAE7D 0x7557 -0xAE7E 0x7558 -0xAE80 0x755D -0xAE81 0x755E -0xAE82 0x755F -0xAE83 0x7560 -0xAE84 0x7561 -0xAE85 0x7562 -0xAE86 0x7563 -0xAE87 0x7564 -0xAE88 0x7567 -0xAE89 0x7568 -0xAE8A 0x7569 -0xAE8B 0x756B -0xAE8C 0x756C -0xAE8D 0x756D -0xAE8E 0x756E -0xAE8F 0x756F -0xAE90 0x7570 -0xAE91 0x7571 -0xAE92 0x7573 -0xAE93 0x7575 -0xAE94 0x7576 -0xAE95 0x7577 -0xAE96 0x757A -0xAE97 0x757B -0xAE98 0x757C -0xAE99 0x757D -0xAE9A 0x757E -0xAE9B 0x7580 -0xAE9C 0x7581 -0xAE9D 0x7582 -0xAE9E 0x7584 -0xAE9F 0x7585 -0xAEA0 0x7587 -0xAF40 0x7588 -0xAF41 0x7589 -0xAF42 0x758A -0xAF43 0x758C -0xAF44 0x758D -0xAF45 0x758E -0xAF46 0x7590 -0xAF47 0x7593 -0xAF48 0x7595 -0xAF49 0x7598 -0xAF4A 0x759B -0xAF4B 0x759C -0xAF4C 0x759E -0xAF4D 0x75A2 -0xAF4E 0x75A6 -0xAF4F 0x75A7 -0xAF50 0x75A8 -0xAF51 0x75A9 -0xAF52 0x75AA -0xAF53 0x75AD -0xAF54 0x75B6 -0xAF55 0x75B7 -0xAF56 0x75BA -0xAF57 0x75BB -0xAF58 0x75BF -0xAF59 0x75C0 -0xAF5A 0x75C1 -0xAF5B 0x75C6 -0xAF5C 0x75CB -0xAF5D 0x75CC -0xAF5E 0x75CE -0xAF5F 0x75CF -0xAF60 0x75D0 -0xAF61 0x75D1 -0xAF62 0x75D3 -0xAF63 0x75D7 -0xAF64 0x75D9 -0xAF65 0x75DA -0xAF66 0x75DC -0xAF67 0x75DD -0xAF68 0x75DF -0xAF69 0x75E0 -0xAF6A 0x75E1 -0xAF6B 0x75E5 -0xAF6C 0x75E9 -0xAF6D 0x75EC -0xAF6E 0x75ED -0xAF6F 0x75EE -0xAF70 0x75EF -0xAF71 0x75F2 -0xAF72 0x75F3 -0xAF73 0x75F5 -0xAF74 0x75F6 -0xAF75 0x75F7 -0xAF76 0x75F8 -0xAF77 0x75FA -0xAF78 0x75FB -0xAF79 0x75FD -0xAF7A 0x75FE -0xAF7B 0x7602 -0xAF7C 0x7604 -0xAF7D 0x7606 -0xAF7E 0x7607 -0xAF80 0x7608 -0xAF81 0x7609 -0xAF82 0x760B -0xAF83 0x760D -0xAF84 0x760E -0xAF85 0x760F -0xAF86 0x7611 -0xAF87 0x7612 -0xAF88 0x7613 -0xAF89 0x7614 -0xAF8A 0x7616 -0xAF8B 0x761A -0xAF8C 0x761C -0xAF8D 0x761D -0xAF8E 0x761E -0xAF8F 0x7621 -0xAF90 0x7623 -0xAF91 0x7627 -0xAF92 0x7628 -0xAF93 0x762C -0xAF94 0x762E -0xAF95 0x762F -0xAF96 0x7631 -0xAF97 0x7632 -0xAF98 0x7636 -0xAF99 0x7637 -0xAF9A 0x7639 -0xAF9B 0x763A -0xAF9C 0x763B -0xAF9D 0x763D -0xAF9E 0x7641 -0xAF9F 0x7642 -0xAFA0 0x7644 -0xB040 0x7645 -0xB041 0x7646 -0xB042 0x7647 -0xB043 0x7648 -0xB044 0x7649 -0xB045 0x764A -0xB046 0x764B -0xB047 0x764E -0xB048 0x764F -0xB049 0x7650 -0xB04A 0x7651 -0xB04B 0x7652 -0xB04C 0x7653 -0xB04D 0x7655 -0xB04E 0x7657 -0xB04F 0x7658 -0xB050 0x7659 -0xB051 0x765A -0xB052 0x765B -0xB053 0x765D -0xB054 0x765F -0xB055 0x7660 -0xB056 0x7661 -0xB057 0x7662 -0xB058 0x7664 -0xB059 0x7665 -0xB05A 0x7666 -0xB05B 0x7667 -0xB05C 0x7668 -0xB05D 0x7669 -0xB05E 0x766A -0xB05F 0x766C -0xB060 0x766D -0xB061 0x766E -0xB062 0x7670 -0xB063 0x7671 -0xB064 0x7672 -0xB065 0x7673 -0xB066 0x7674 -0xB067 0x7675 -0xB068 0x7676 -0xB069 0x7677 -0xB06A 0x7679 -0xB06B 0x767A -0xB06C 0x767C -0xB06D 0x767F -0xB06E 0x7680 -0xB06F 0x7681 -0xB070 0x7683 -0xB071 0x7685 -0xB072 0x7689 -0xB073 0x768A -0xB074 0x768C -0xB075 0x768D -0xB076 0x768F -0xB077 0x7690 -0xB078 0x7692 -0xB079 0x7694 -0xB07A 0x7695 -0xB07B 0x7697 -0xB07C 0x7698 -0xB07D 0x769A -0xB07E 0x769B -0xB080 0x769C -0xB081 0x769D -0xB082 0x769E -0xB083 0x769F -0xB084 0x76A0 -0xB085 0x76A1 -0xB086 0x76A2 -0xB087 0x76A3 -0xB088 0x76A5 -0xB089 0x76A6 -0xB08A 0x76A7 -0xB08B 0x76A8 -0xB08C 0x76A9 -0xB08D 0x76AA -0xB08E 0x76AB -0xB08F 0x76AC -0xB090 0x76AD -0xB091 0x76AF -0xB092 0x76B0 -0xB093 0x76B3 -0xB094 0x76B5 -0xB095 0x76B6 -0xB096 0x76B7 -0xB097 0x76B8 -0xB098 0x76B9 -0xB099 0x76BA -0xB09A 0x76BB -0xB09B 0x76BC -0xB09C 0x76BD -0xB09D 0x76BE -0xB09E 0x76C0 -0xB09F 0x76C1 -0xB0A0 0x76C3 -0xB0A1 0x554A -0xB0A2 0x963F -0xB0A3 0x57C3 -0xB0A4 0x6328 -0xB0A5 0x54CE -0xB0A6 0x5509 -0xB0A7 0x54C0 -0xB0A8 0x7691 -0xB0A9 0x764C -0xB0AA 0x853C -0xB0AB 0x77EE -0xB0AC 0x827E -0xB0AD 0x788D -0xB0AE 0x7231 -0xB0AF 0x9698 -0xB0B0 0x978D -0xB0B1 0x6C28 -0xB0B2 0x5B89 -0xB0B3 0x4FFA -0xB0B4 0x6309 -0xB0B5 0x6697 -0xB0B6 0x5CB8 -0xB0B7 0x80FA -0xB0B8 0x6848 -0xB0B9 0x80AE -0xB0BA 0x6602 -0xB0BB 0x76CE -0xB0BC 0x51F9 -0xB0BD 0x6556 -0xB0BE 0x71AC -0xB0BF 0x7FF1 -0xB0C0 0x8884 -0xB0C1 0x50B2 -0xB0C2 0x5965 -0xB0C3 0x61CA -0xB0C4 0x6FB3 -0xB0C5 0x82AD -0xB0C6 0x634C -0xB0C7 0x6252 -0xB0C8 0x53ED -0xB0C9 0x5427 -0xB0CA 0x7B06 -0xB0CB 0x516B -0xB0CC 0x75A4 -0xB0CD 0x5DF4 -0xB0CE 0x62D4 -0xB0CF 0x8DCB -0xB0D0 0x9776 -0xB0D1 0x628A -0xB0D2 0x8019 -0xB0D3 0x575D -0xB0D4 0x9738 -0xB0D5 0x7F62 -0xB0D6 0x7238 -0xB0D7 0x767D -0xB0D8 0x67CF -0xB0D9 0x767E -0xB0DA 0x6446 -0xB0DB 0x4F70 -0xB0DC 0x8D25 -0xB0DD 0x62DC -0xB0DE 0x7A17 -0xB0DF 0x6591 -0xB0E0 0x73ED -0xB0E1 0x642C -0xB0E2 0x6273 -0xB0E3 0x822C -0xB0E4 0x9881 -0xB0E5 0x677F -0xB0E6 0x7248 -0xB0E7 0x626E -0xB0E8 0x62CC -0xB0E9 0x4F34 -0xB0EA 0x74E3 -0xB0EB 0x534A -0xB0EC 0x529E -0xB0ED 0x7ECA -0xB0EE 0x90A6 -0xB0EF 0x5E2E -0xB0F0 0x6886 -0xB0F1 0x699C -0xB0F2 0x8180 -0xB0F3 0x7ED1 -0xB0F4 0x68D2 -0xB0F5 0x78C5 -0xB0F6 0x868C -0xB0F7 0x9551 -0xB0F8 0x508D -0xB0F9 0x8C24 -0xB0FA 0x82DE -0xB0FB 0x80DE -0xB0FC 0x5305 -0xB0FD 0x8912 -0xB0FE 0x5265 -0xB140 0x76C4 -0xB141 0x76C7 -0xB142 0x76C9 -0xB143 0x76CB -0xB144 0x76CC -0xB145 0x76D3 -0xB146 0x76D5 -0xB147 0x76D9 -0xB148 0x76DA -0xB149 0x76DC -0xB14A 0x76DD -0xB14B 0x76DE -0xB14C 0x76E0 -0xB14D 0x76E1 -0xB14E 0x76E2 -0xB14F 0x76E3 -0xB150 0x76E4 -0xB151 0x76E6 -0xB152 0x76E7 -0xB153 0x76E8 -0xB154 0x76E9 -0xB155 0x76EA -0xB156 0x76EB -0xB157 0x76EC -0xB158 0x76ED -0xB159 0x76F0 -0xB15A 0x76F3 -0xB15B 0x76F5 -0xB15C 0x76F6 -0xB15D 0x76F7 -0xB15E 0x76FA -0xB15F 0x76FB -0xB160 0x76FD -0xB161 0x76FF -0xB162 0x7700 -0xB163 0x7702 -0xB164 0x7703 -0xB165 0x7705 -0xB166 0x7706 -0xB167 0x770A -0xB168 0x770C -0xB169 0x770E -0xB16A 0x770F -0xB16B 0x7710 -0xB16C 0x7711 -0xB16D 0x7712 -0xB16E 0x7713 -0xB16F 0x7714 -0xB170 0x7715 -0xB171 0x7716 -0xB172 0x7717 -0xB173 0x7718 -0xB174 0x771B -0xB175 0x771C -0xB176 0x771D -0xB177 0x771E -0xB178 0x7721 -0xB179 0x7723 -0xB17A 0x7724 -0xB17B 0x7725 -0xB17C 0x7727 -0xB17D 0x772A -0xB17E 0x772B -0xB180 0x772C -0xB181 0x772E -0xB182 0x7730 -0xB183 0x7731 -0xB184 0x7732 -0xB185 0x7733 -0xB186 0x7734 -0xB187 0x7739 -0xB188 0x773B -0xB189 0x773D -0xB18A 0x773E -0xB18B 0x773F -0xB18C 0x7742 -0xB18D 0x7744 -0xB18E 0x7745 -0xB18F 0x7746 -0xB190 0x7748 -0xB191 0x7749 -0xB192 0x774A -0xB193 0x774B -0xB194 0x774C -0xB195 0x774D -0xB196 0x774E -0xB197 0x774F -0xB198 0x7752 -0xB199 0x7753 -0xB19A 0x7754 -0xB19B 0x7755 -0xB19C 0x7756 -0xB19D 0x7757 -0xB19E 0x7758 -0xB19F 0x7759 -0xB1A0 0x775C -0xB1A1 0x8584 -0xB1A2 0x96F9 -0xB1A3 0x4FDD -0xB1A4 0x5821 -0xB1A5 0x9971 -0xB1A6 0x5B9D -0xB1A7 0x62B1 -0xB1A8 0x62A5 -0xB1A9 0x66B4 -0xB1AA 0x8C79 -0xB1AB 0x9C8D -0xB1AC 0x7206 -0xB1AD 0x676F -0xB1AE 0x7891 -0xB1AF 0x60B2 -0xB1B0 0x5351 -0xB1B1 0x5317 -0xB1B2 0x8F88 -0xB1B3 0x80CC -0xB1B4 0x8D1D -0xB1B5 0x94A1 -0xB1B6 0x500D -0xB1B7 0x72C8 -0xB1B8 0x5907 -0xB1B9 0x60EB -0xB1BA 0x7119 -0xB1BB 0x88AB -0xB1BC 0x5954 -0xB1BD 0x82EF -0xB1BE 0x672C -0xB1BF 0x7B28 -0xB1C0 0x5D29 -0xB1C1 0x7EF7 -0xB1C2 0x752D -0xB1C3 0x6CF5 -0xB1C4 0x8E66 -0xB1C5 0x8FF8 -0xB1C6 0x903C -0xB1C7 0x9F3B -0xB1C8 0x6BD4 -0xB1C9 0x9119 -0xB1CA 0x7B14 -0xB1CB 0x5F7C -0xB1CC 0x78A7 -0xB1CD 0x84D6 -0xB1CE 0x853D -0xB1CF 0x6BD5 -0xB1D0 0x6BD9 -0xB1D1 0x6BD6 -0xB1D2 0x5E01 -0xB1D3 0x5E87 -0xB1D4 0x75F9 -0xB1D5 0x95ED -0xB1D6 0x655D -0xB1D7 0x5F0A -0xB1D8 0x5FC5 -0xB1D9 0x8F9F -0xB1DA 0x58C1 -0xB1DB 0x81C2 -0xB1DC 0x907F -0xB1DD 0x965B -0xB1DE 0x97AD -0xB1DF 0x8FB9 -0xB1E0 0x7F16 -0xB1E1 0x8D2C -0xB1E2 0x6241 -0xB1E3 0x4FBF -0xB1E4 0x53D8 -0xB1E5 0x535E -0xB1E6 0x8FA8 -0xB1E7 0x8FA9 -0xB1E8 0x8FAB -0xB1E9 0x904D -0xB1EA 0x6807 -0xB1EB 0x5F6A -0xB1EC 0x8198 -0xB1ED 0x8868 -0xB1EE 0x9CD6 -0xB1EF 0x618B -0xB1F0 0x522B -0xB1F1 0x762A -0xB1F2 0x5F6C -0xB1F3 0x658C -0xB1F4 0x6FD2 -0xB1F5 0x6EE8 -0xB1F6 0x5BBE -0xB1F7 0x6448 -0xB1F8 0x5175 -0xB1F9 0x51B0 -0xB1FA 0x67C4 -0xB1FB 0x4E19 -0xB1FC 0x79C9 -0xB1FD 0x997C -0xB1FE 0x70B3 -0xB240 0x775D -0xB241 0x775E -0xB242 0x775F -0xB243 0x7760 -0xB244 0x7764 -0xB245 0x7767 -0xB246 0x7769 -0xB247 0x776A -0xB248 0x776D -0xB249 0x776E -0xB24A 0x776F -0xB24B 0x7770 -0xB24C 0x7771 -0xB24D 0x7772 -0xB24E 0x7773 -0xB24F 0x7774 -0xB250 0x7775 -0xB251 0x7776 -0xB252 0x7777 -0xB253 0x7778 -0xB254 0x777A -0xB255 0x777B -0xB256 0x777C -0xB257 0x7781 -0xB258 0x7782 -0xB259 0x7783 -0xB25A 0x7786 -0xB25B 0x7787 -0xB25C 0x7788 -0xB25D 0x7789 -0xB25E 0x778A -0xB25F 0x778B -0xB260 0x778F -0xB261 0x7790 -0xB262 0x7793 -0xB263 0x7794 -0xB264 0x7795 -0xB265 0x7796 -0xB266 0x7797 -0xB267 0x7798 -0xB268 0x7799 -0xB269 0x779A -0xB26A 0x779B -0xB26B 0x779C -0xB26C 0x779D -0xB26D 0x779E -0xB26E 0x77A1 -0xB26F 0x77A3 -0xB270 0x77A4 -0xB271 0x77A6 -0xB272 0x77A8 -0xB273 0x77AB -0xB274 0x77AD -0xB275 0x77AE -0xB276 0x77AF -0xB277 0x77B1 -0xB278 0x77B2 -0xB279 0x77B4 -0xB27A 0x77B6 -0xB27B 0x77B7 -0xB27C 0x77B8 -0xB27D 0x77B9 -0xB27E 0x77BA -0xB280 0x77BC -0xB281 0x77BE -0xB282 0x77C0 -0xB283 0x77C1 -0xB284 0x77C2 -0xB285 0x77C3 -0xB286 0x77C4 -0xB287 0x77C5 -0xB288 0x77C6 -0xB289 0x77C7 -0xB28A 0x77C8 -0xB28B 0x77C9 -0xB28C 0x77CA -0xB28D 0x77CB -0xB28E 0x77CC -0xB28F 0x77CE -0xB290 0x77CF -0xB291 0x77D0 -0xB292 0x77D1 -0xB293 0x77D2 -0xB294 0x77D3 -0xB295 0x77D4 -0xB296 0x77D5 -0xB297 0x77D6 -0xB298 0x77D8 -0xB299 0x77D9 -0xB29A 0x77DA -0xB29B 0x77DD -0xB29C 0x77DE -0xB29D 0x77DF -0xB29E 0x77E0 -0xB29F 0x77E1 -0xB2A0 0x77E4 -0xB2A1 0x75C5 -0xB2A2 0x5E76 -0xB2A3 0x73BB -0xB2A4 0x83E0 -0xB2A5 0x64AD -0xB2A6 0x62E8 -0xB2A7 0x94B5 -0xB2A8 0x6CE2 -0xB2A9 0x535A -0xB2AA 0x52C3 -0xB2AB 0x640F -0xB2AC 0x94C2 -0xB2AD 0x7B94 -0xB2AE 0x4F2F -0xB2AF 0x5E1B -0xB2B0 0x8236 -0xB2B1 0x8116 -0xB2B2 0x818A -0xB2B3 0x6E24 -0xB2B4 0x6CCA -0xB2B5 0x9A73 -0xB2B6 0x6355 -0xB2B7 0x535C -0xB2B8 0x54FA -0xB2B9 0x8865 -0xB2BA 0x57E0 -0xB2BB 0x4E0D -0xB2BC 0x5E03 -0xB2BD 0x6B65 -0xB2BE 0x7C3F -0xB2BF 0x90E8 -0xB2C0 0x6016 -0xB2C1 0x64E6 -0xB2C2 0x731C -0xB2C3 0x88C1 -0xB2C4 0x6750 -0xB2C5 0x624D -0xB2C6 0x8D22 -0xB2C7 0x776C -0xB2C8 0x8E29 -0xB2C9 0x91C7 -0xB2CA 0x5F69 -0xB2CB 0x83DC -0xB2CC 0x8521 -0xB2CD 0x9910 -0xB2CE 0x53C2 -0xB2CF 0x8695 -0xB2D0 0x6B8B -0xB2D1 0x60ED -0xB2D2 0x60E8 -0xB2D3 0x707F -0xB2D4 0x82CD -0xB2D5 0x8231 -0xB2D6 0x4ED3 -0xB2D7 0x6CA7 -0xB2D8 0x85CF -0xB2D9 0x64CD -0xB2DA 0x7CD9 -0xB2DB 0x69FD -0xB2DC 0x66F9 -0xB2DD 0x8349 -0xB2DE 0x5395 -0xB2DF 0x7B56 -0xB2E0 0x4FA7 -0xB2E1 0x518C -0xB2E2 0x6D4B -0xB2E3 0x5C42 -0xB2E4 0x8E6D -0xB2E5 0x63D2 -0xB2E6 0x53C9 -0xB2E7 0x832C -0xB2E8 0x8336 -0xB2E9 0x67E5 -0xB2EA 0x78B4 -0xB2EB 0x643D -0xB2EC 0x5BDF -0xB2ED 0x5C94 -0xB2EE 0x5DEE -0xB2EF 0x8BE7 -0xB2F0 0x62C6 -0xB2F1 0x67F4 -0xB2F2 0x8C7A -0xB2F3 0x6400 -0xB2F4 0x63BA -0xB2F5 0x8749 -0xB2F6 0x998B -0xB2F7 0x8C17 -0xB2F8 0x7F20 -0xB2F9 0x94F2 -0xB2FA 0x4EA7 -0xB2FB 0x9610 -0xB2FC 0x98A4 -0xB2FD 0x660C -0xB2FE 0x7316 -0xB340 0x77E6 -0xB341 0x77E8 -0xB342 0x77EA -0xB343 0x77EF -0xB344 0x77F0 -0xB345 0x77F1 -0xB346 0x77F2 -0xB347 0x77F4 -0xB348 0x77F5 -0xB349 0x77F7 -0xB34A 0x77F9 -0xB34B 0x77FA -0xB34C 0x77FB -0xB34D 0x77FC -0xB34E 0x7803 -0xB34F 0x7804 -0xB350 0x7805 -0xB351 0x7806 -0xB352 0x7807 -0xB353 0x7808 -0xB354 0x780A -0xB355 0x780B -0xB356 0x780E -0xB357 0x780F -0xB358 0x7810 -0xB359 0x7813 -0xB35A 0x7815 -0xB35B 0x7819 -0xB35C 0x781B -0xB35D 0x781E -0xB35E 0x7820 -0xB35F 0x7821 -0xB360 0x7822 -0xB361 0x7824 -0xB362 0x7828 -0xB363 0x782A -0xB364 0x782B -0xB365 0x782E -0xB366 0x782F -0xB367 0x7831 -0xB368 0x7832 -0xB369 0x7833 -0xB36A 0x7835 -0xB36B 0x7836 -0xB36C 0x783D -0xB36D 0x783F -0xB36E 0x7841 -0xB36F 0x7842 -0xB370 0x7843 -0xB371 0x7844 -0xB372 0x7846 -0xB373 0x7848 -0xB374 0x7849 -0xB375 0x784A -0xB376 0x784B -0xB377 0x784D -0xB378 0x784F -0xB379 0x7851 -0xB37A 0x7853 -0xB37B 0x7854 -0xB37C 0x7858 -0xB37D 0x7859 -0xB37E 0x785A -0xB380 0x785B -0xB381 0x785C -0xB382 0x785E -0xB383 0x785F -0xB384 0x7860 -0xB385 0x7861 -0xB386 0x7862 -0xB387 0x7863 -0xB388 0x7864 -0xB389 0x7865 -0xB38A 0x7866 -0xB38B 0x7867 -0xB38C 0x7868 -0xB38D 0x7869 -0xB38E 0x786F -0xB38F 0x7870 -0xB390 0x7871 -0xB391 0x7872 -0xB392 0x7873 -0xB393 0x7874 -0xB394 0x7875 -0xB395 0x7876 -0xB396 0x7878 -0xB397 0x7879 -0xB398 0x787A -0xB399 0x787B -0xB39A 0x787D -0xB39B 0x787E -0xB39C 0x787F -0xB39D 0x7880 -0xB39E 0x7881 -0xB39F 0x7882 -0xB3A0 0x7883 -0xB3A1 0x573A -0xB3A2 0x5C1D -0xB3A3 0x5E38 -0xB3A4 0x957F -0xB3A5 0x507F -0xB3A6 0x80A0 -0xB3A7 0x5382 -0xB3A8 0x655E -0xB3A9 0x7545 -0xB3AA 0x5531 -0xB3AB 0x5021 -0xB3AC 0x8D85 -0xB3AD 0x6284 -0xB3AE 0x949E -0xB3AF 0x671D -0xB3B0 0x5632 -0xB3B1 0x6F6E -0xB3B2 0x5DE2 -0xB3B3 0x5435 -0xB3B4 0x7092 -0xB3B5 0x8F66 -0xB3B6 0x626F -0xB3B7 0x64A4 -0xB3B8 0x63A3 -0xB3B9 0x5F7B -0xB3BA 0x6F88 -0xB3BB 0x90F4 -0xB3BC 0x81E3 -0xB3BD 0x8FB0 -0xB3BE 0x5C18 -0xB3BF 0x6668 -0xB3C0 0x5FF1 -0xB3C1 0x6C89 -0xB3C2 0x9648 -0xB3C3 0x8D81 -0xB3C4 0x886C -0xB3C5 0x6491 -0xB3C6 0x79F0 -0xB3C7 0x57CE -0xB3C8 0x6A59 -0xB3C9 0x6210 -0xB3CA 0x5448 -0xB3CB 0x4E58 -0xB3CC 0x7A0B -0xB3CD 0x60E9 -0xB3CE 0x6F84 -0xB3CF 0x8BDA -0xB3D0 0x627F -0xB3D1 0x901E -0xB3D2 0x9A8B -0xB3D3 0x79E4 -0xB3D4 0x5403 -0xB3D5 0x75F4 -0xB3D6 0x6301 -0xB3D7 0x5319 -0xB3D8 0x6C60 -0xB3D9 0x8FDF -0xB3DA 0x5F1B -0xB3DB 0x9A70 -0xB3DC 0x803B -0xB3DD 0x9F7F -0xB3DE 0x4F88 -0xB3DF 0x5C3A -0xB3E0 0x8D64 -0xB3E1 0x7FC5 -0xB3E2 0x65A5 -0xB3E3 0x70BD -0xB3E4 0x5145 -0xB3E5 0x51B2 -0xB3E6 0x866B -0xB3E7 0x5D07 -0xB3E8 0x5BA0 -0xB3E9 0x62BD -0xB3EA 0x916C -0xB3EB 0x7574 -0xB3EC 0x8E0C -0xB3ED 0x7A20 -0xB3EE 0x6101 -0xB3EF 0x7B79 -0xB3F0 0x4EC7 -0xB3F1 0x7EF8 -0xB3F2 0x7785 -0xB3F3 0x4E11 -0xB3F4 0x81ED -0xB3F5 0x521D -0xB3F6 0x51FA -0xB3F7 0x6A71 -0xB3F8 0x53A8 -0xB3F9 0x8E87 -0xB3FA 0x9504 -0xB3FB 0x96CF -0xB3FC 0x6EC1 -0xB3FD 0x9664 -0xB3FE 0x695A -0xB440 0x7884 -0xB441 0x7885 -0xB442 0x7886 -0xB443 0x7888 -0xB444 0x788A -0xB445 0x788B -0xB446 0x788F -0xB447 0x7890 -0xB448 0x7892 -0xB449 0x7894 -0xB44A 0x7895 -0xB44B 0x7896 -0xB44C 0x7899 -0xB44D 0x789D -0xB44E 0x789E -0xB44F 0x78A0 -0xB450 0x78A2 -0xB451 0x78A4 -0xB452 0x78A6 -0xB453 0x78A8 -0xB454 0x78A9 -0xB455 0x78AA -0xB456 0x78AB -0xB457 0x78AC -0xB458 0x78AD -0xB459 0x78AE -0xB45A 0x78AF -0xB45B 0x78B5 -0xB45C 0x78B6 -0xB45D 0x78B7 -0xB45E 0x78B8 -0xB45F 0x78BA -0xB460 0x78BB -0xB461 0x78BC -0xB462 0x78BD -0xB463 0x78BF -0xB464 0x78C0 -0xB465 0x78C2 -0xB466 0x78C3 -0xB467 0x78C4 -0xB468 0x78C6 -0xB469 0x78C7 -0xB46A 0x78C8 -0xB46B 0x78CC -0xB46C 0x78CD -0xB46D 0x78CE -0xB46E 0x78CF -0xB46F 0x78D1 -0xB470 0x78D2 -0xB471 0x78D3 -0xB472 0x78D6 -0xB473 0x78D7 -0xB474 0x78D8 -0xB475 0x78DA -0xB476 0x78DB -0xB477 0x78DC -0xB478 0x78DD -0xB479 0x78DE -0xB47A 0x78DF -0xB47B 0x78E0 -0xB47C 0x78E1 -0xB47D 0x78E2 -0xB47E 0x78E3 -0xB480 0x78E4 -0xB481 0x78E5 -0xB482 0x78E6 -0xB483 0x78E7 -0xB484 0x78E9 -0xB485 0x78EA -0xB486 0x78EB -0xB487 0x78ED -0xB488 0x78EE -0xB489 0x78EF -0xB48A 0x78F0 -0xB48B 0x78F1 -0xB48C 0x78F3 -0xB48D 0x78F5 -0xB48E 0x78F6 -0xB48F 0x78F8 -0xB490 0x78F9 -0xB491 0x78FB -0xB492 0x78FC -0xB493 0x78FD -0xB494 0x78FE -0xB495 0x78FF -0xB496 0x7900 -0xB497 0x7902 -0xB498 0x7903 -0xB499 0x7904 -0xB49A 0x7906 -0xB49B 0x7907 -0xB49C 0x7908 -0xB49D 0x7909 -0xB49E 0x790A -0xB49F 0x790B -0xB4A0 0x790C -0xB4A1 0x7840 -0xB4A2 0x50A8 -0xB4A3 0x77D7 -0xB4A4 0x6410 -0xB4A5 0x89E6 -0xB4A6 0x5904 -0xB4A7 0x63E3 -0xB4A8 0x5DDD -0xB4A9 0x7A7F -0xB4AA 0x693D -0xB4AB 0x4F20 -0xB4AC 0x8239 -0xB4AD 0x5598 -0xB4AE 0x4E32 -0xB4AF 0x75AE -0xB4B0 0x7A97 -0xB4B1 0x5E62 -0xB4B2 0x5E8A -0xB4B3 0x95EF -0xB4B4 0x521B -0xB4B5 0x5439 -0xB4B6 0x708A -0xB4B7 0x6376 -0xB4B8 0x9524 -0xB4B9 0x5782 -0xB4BA 0x6625 -0xB4BB 0x693F -0xB4BC 0x9187 -0xB4BD 0x5507 -0xB4BE 0x6DF3 -0xB4BF 0x7EAF -0xB4C0 0x8822 -0xB4C1 0x6233 -0xB4C2 0x7EF0 -0xB4C3 0x75B5 -0xB4C4 0x8328 -0xB4C5 0x78C1 -0xB4C6 0x96CC -0xB4C7 0x8F9E -0xB4C8 0x6148 -0xB4C9 0x74F7 -0xB4CA 0x8BCD -0xB4CB 0x6B64 -0xB4CC 0x523A -0xB4CD 0x8D50 -0xB4CE 0x6B21 -0xB4CF 0x806A -0xB4D0 0x8471 -0xB4D1 0x56F1 -0xB4D2 0x5306 -0xB4D3 0x4ECE -0xB4D4 0x4E1B -0xB4D5 0x51D1 -0xB4D6 0x7C97 -0xB4D7 0x918B -0xB4D8 0x7C07 -0xB4D9 0x4FC3 -0xB4DA 0x8E7F -0xB4DB 0x7BE1 -0xB4DC 0x7A9C -0xB4DD 0x6467 -0xB4DE 0x5D14 -0xB4DF 0x50AC -0xB4E0 0x8106 -0xB4E1 0x7601 -0xB4E2 0x7CB9 -0xB4E3 0x6DEC -0xB4E4 0x7FE0 -0xB4E5 0x6751 -0xB4E6 0x5B58 -0xB4E7 0x5BF8 -0xB4E8 0x78CB -0xB4E9 0x64AE -0xB4EA 0x6413 -0xB4EB 0x63AA -0xB4EC 0x632B -0xB4ED 0x9519 -0xB4EE 0x642D -0xB4EF 0x8FBE -0xB4F0 0x7B54 -0xB4F1 0x7629 -0xB4F2 0x6253 -0xB4F3 0x5927 -0xB4F4 0x5446 -0xB4F5 0x6B79 -0xB4F6 0x50A3 -0xB4F7 0x6234 -0xB4F8 0x5E26 -0xB4F9 0x6B86 -0xB4FA 0x4EE3 -0xB4FB 0x8D37 -0xB4FC 0x888B -0xB4FD 0x5F85 -0xB4FE 0x902E -0xB540 0x790D -0xB541 0x790E -0xB542 0x790F -0xB543 0x7910 -0xB544 0x7911 -0xB545 0x7912 -0xB546 0x7914 -0xB547 0x7915 -0xB548 0x7916 -0xB549 0x7917 -0xB54A 0x7918 -0xB54B 0x7919 -0xB54C 0x791A -0xB54D 0x791B -0xB54E 0x791C -0xB54F 0x791D -0xB550 0x791F -0xB551 0x7920 -0xB552 0x7921 -0xB553 0x7922 -0xB554 0x7923 -0xB555 0x7925 -0xB556 0x7926 -0xB557 0x7927 -0xB558 0x7928 -0xB559 0x7929 -0xB55A 0x792A -0xB55B 0x792B -0xB55C 0x792C -0xB55D 0x792D -0xB55E 0x792E -0xB55F 0x792F -0xB560 0x7930 -0xB561 0x7931 -0xB562 0x7932 -0xB563 0x7933 -0xB564 0x7935 -0xB565 0x7936 -0xB566 0x7937 -0xB567 0x7938 -0xB568 0x7939 -0xB569 0x793D -0xB56A 0x793F -0xB56B 0x7942 -0xB56C 0x7943 -0xB56D 0x7944 -0xB56E 0x7945 -0xB56F 0x7947 -0xB570 0x794A -0xB571 0x794B -0xB572 0x794C -0xB573 0x794D -0xB574 0x794E -0xB575 0x794F -0xB576 0x7950 -0xB577 0x7951 -0xB578 0x7952 -0xB579 0x7954 -0xB57A 0x7955 -0xB57B 0x7958 -0xB57C 0x7959 -0xB57D 0x7961 -0xB57E 0x7963 -0xB580 0x7964 -0xB581 0x7966 -0xB582 0x7969 -0xB583 0x796A -0xB584 0x796B -0xB585 0x796C -0xB586 0x796E -0xB587 0x7970 -0xB588 0x7971 -0xB589 0x7972 -0xB58A 0x7973 -0xB58B 0x7974 -0xB58C 0x7975 -0xB58D 0x7976 -0xB58E 0x7979 -0xB58F 0x797B -0xB590 0x797C -0xB591 0x797D -0xB592 0x797E -0xB593 0x797F -0xB594 0x7982 -0xB595 0x7983 -0xB596 0x7986 -0xB597 0x7987 -0xB598 0x7988 -0xB599 0x7989 -0xB59A 0x798B -0xB59B 0x798C -0xB59C 0x798D -0xB59D 0x798E -0xB59E 0x7990 -0xB59F 0x7991 -0xB5A0 0x7992 -0xB5A1 0x6020 -0xB5A2 0x803D -0xB5A3 0x62C5 -0xB5A4 0x4E39 -0xB5A5 0x5355 -0xB5A6 0x90F8 -0xB5A7 0x63B8 -0xB5A8 0x80C6 -0xB5A9 0x65E6 -0xB5AA 0x6C2E -0xB5AB 0x4F46 -0xB5AC 0x60EE -0xB5AD 0x6DE1 -0xB5AE 0x8BDE -0xB5AF 0x5F39 -0xB5B0 0x86CB -0xB5B1 0x5F53 -0xB5B2 0x6321 -0xB5B3 0x515A -0xB5B4 0x8361 -0xB5B5 0x6863 -0xB5B6 0x5200 -0xB5B7 0x6363 -0xB5B8 0x8E48 -0xB5B9 0x5012 -0xB5BA 0x5C9B -0xB5BB 0x7977 -0xB5BC 0x5BFC -0xB5BD 0x5230 -0xB5BE 0x7A3B -0xB5BF 0x60BC -0xB5C0 0x9053 -0xB5C1 0x76D7 -0xB5C2 0x5FB7 -0xB5C3 0x5F97 -0xB5C4 0x7684 -0xB5C5 0x8E6C -0xB5C6 0x706F -0xB5C7 0x767B -0xB5C8 0x7B49 -0xB5C9 0x77AA -0xB5CA 0x51F3 -0xB5CB 0x9093 -0xB5CC 0x5824 -0xB5CD 0x4F4E -0xB5CE 0x6EF4 -0xB5CF 0x8FEA -0xB5D0 0x654C -0xB5D1 0x7B1B -0xB5D2 0x72C4 -0xB5D3 0x6DA4 -0xB5D4 0x7FDF -0xB5D5 0x5AE1 -0xB5D6 0x62B5 -0xB5D7 0x5E95 -0xB5D8 0x5730 -0xB5D9 0x8482 -0xB5DA 0x7B2C -0xB5DB 0x5E1D -0xB5DC 0x5F1F -0xB5DD 0x9012 -0xB5DE 0x7F14 -0xB5DF 0x98A0 -0xB5E0 0x6382 -0xB5E1 0x6EC7 -0xB5E2 0x7898 -0xB5E3 0x70B9 -0xB5E4 0x5178 -0xB5E5 0x975B -0xB5E6 0x57AB -0xB5E7 0x7535 -0xB5E8 0x4F43 -0xB5E9 0x7538 -0xB5EA 0x5E97 -0xB5EB 0x60E6 -0xB5EC 0x5960 -0xB5ED 0x6DC0 -0xB5EE 0x6BBF -0xB5EF 0x7889 -0xB5F0 0x53FC -0xB5F1 0x96D5 -0xB5F2 0x51CB -0xB5F3 0x5201 -0xB5F4 0x6389 -0xB5F5 0x540A -0xB5F6 0x9493 -0xB5F7 0x8C03 -0xB5F8 0x8DCC -0xB5F9 0x7239 -0xB5FA 0x789F -0xB5FB 0x8776 -0xB5FC 0x8FED -0xB5FD 0x8C0D -0xB5FE 0x53E0 -0xB640 0x7993 -0xB641 0x7994 -0xB642 0x7995 -0xB643 0x7996 -0xB644 0x7997 -0xB645 0x7998 -0xB646 0x7999 -0xB647 0x799B -0xB648 0x799C -0xB649 0x799D -0xB64A 0x799E -0xB64B 0x799F -0xB64C 0x79A0 -0xB64D 0x79A1 -0xB64E 0x79A2 -0xB64F 0x79A3 -0xB650 0x79A4 -0xB651 0x79A5 -0xB652 0x79A6 -0xB653 0x79A8 -0xB654 0x79A9 -0xB655 0x79AA -0xB656 0x79AB -0xB657 0x79AC -0xB658 0x79AD -0xB659 0x79AE -0xB65A 0x79AF -0xB65B 0x79B0 -0xB65C 0x79B1 -0xB65D 0x79B2 -0xB65E 0x79B4 -0xB65F 0x79B5 -0xB660 0x79B6 -0xB661 0x79B7 -0xB662 0x79B8 -0xB663 0x79BC -0xB664 0x79BF -0xB665 0x79C2 -0xB666 0x79C4 -0xB667 0x79C5 -0xB668 0x79C7 -0xB669 0x79C8 -0xB66A 0x79CA -0xB66B 0x79CC -0xB66C 0x79CE -0xB66D 0x79CF -0xB66E 0x79D0 -0xB66F 0x79D3 -0xB670 0x79D4 -0xB671 0x79D6 -0xB672 0x79D7 -0xB673 0x79D9 -0xB674 0x79DA -0xB675 0x79DB -0xB676 0x79DC -0xB677 0x79DD -0xB678 0x79DE -0xB679 0x79E0 -0xB67A 0x79E1 -0xB67B 0x79E2 -0xB67C 0x79E5 -0xB67D 0x79E8 -0xB67E 0x79EA -0xB680 0x79EC -0xB681 0x79EE -0xB682 0x79F1 -0xB683 0x79F2 -0xB684 0x79F3 -0xB685 0x79F4 -0xB686 0x79F5 -0xB687 0x79F6 -0xB688 0x79F7 -0xB689 0x79F9 -0xB68A 0x79FA -0xB68B 0x79FC -0xB68C 0x79FE -0xB68D 0x79FF -0xB68E 0x7A01 -0xB68F 0x7A04 -0xB690 0x7A05 -0xB691 0x7A07 -0xB692 0x7A08 -0xB693 0x7A09 -0xB694 0x7A0A -0xB695 0x7A0C -0xB696 0x7A0F -0xB697 0x7A10 -0xB698 0x7A11 -0xB699 0x7A12 -0xB69A 0x7A13 -0xB69B 0x7A15 -0xB69C 0x7A16 -0xB69D 0x7A18 -0xB69E 0x7A19 -0xB69F 0x7A1B -0xB6A0 0x7A1C -0xB6A1 0x4E01 -0xB6A2 0x76EF -0xB6A3 0x53EE -0xB6A4 0x9489 -0xB6A5 0x9876 -0xB6A6 0x9F0E -0xB6A7 0x952D -0xB6A8 0x5B9A -0xB6A9 0x8BA2 -0xB6AA 0x4E22 -0xB6AB 0x4E1C -0xB6AC 0x51AC -0xB6AD 0x8463 -0xB6AE 0x61C2 -0xB6AF 0x52A8 -0xB6B0 0x680B -0xB6B1 0x4F97 -0xB6B2 0x606B -0xB6B3 0x51BB -0xB6B4 0x6D1E -0xB6B5 0x515C -0xB6B6 0x6296 -0xB6B7 0x6597 -0xB6B8 0x9661 -0xB6B9 0x8C46 -0xB6BA 0x9017 -0xB6BB 0x75D8 -0xB6BC 0x90FD -0xB6BD 0x7763 -0xB6BE 0x6BD2 -0xB6BF 0x728A -0xB6C0 0x72EC -0xB6C1 0x8BFB -0xB6C2 0x5835 -0xB6C3 0x7779 -0xB6C4 0x8D4C -0xB6C5 0x675C -0xB6C6 0x9540 -0xB6C7 0x809A -0xB6C8 0x5EA6 -0xB6C9 0x6E21 -0xB6CA 0x5992 -0xB6CB 0x7AEF -0xB6CC 0x77ED -0xB6CD 0x953B -0xB6CE 0x6BB5 -0xB6CF 0x65AD -0xB6D0 0x7F0E -0xB6D1 0x5806 -0xB6D2 0x5151 -0xB6D3 0x961F -0xB6D4 0x5BF9 -0xB6D5 0x58A9 -0xB6D6 0x5428 -0xB6D7 0x8E72 -0xB6D8 0x6566 -0xB6D9 0x987F -0xB6DA 0x56E4 -0xB6DB 0x949D -0xB6DC 0x76FE -0xB6DD 0x9041 -0xB6DE 0x6387 -0xB6DF 0x54C6 -0xB6E0 0x591A -0xB6E1 0x593A -0xB6E2 0x579B -0xB6E3 0x8EB2 -0xB6E4 0x6735 -0xB6E5 0x8DFA -0xB6E6 0x8235 -0xB6E7 0x5241 -0xB6E8 0x60F0 -0xB6E9 0x5815 -0xB6EA 0x86FE -0xB6EB 0x5CE8 -0xB6EC 0x9E45 -0xB6ED 0x4FC4 -0xB6EE 0x989D -0xB6EF 0x8BB9 -0xB6F0 0x5A25 -0xB6F1 0x6076 -0xB6F2 0x5384 -0xB6F3 0x627C -0xB6F4 0x904F -0xB6F5 0x9102 -0xB6F6 0x997F -0xB6F7 0x6069 -0xB6F8 0x800C -0xB6F9 0x513F -0xB6FA 0x8033 -0xB6FB 0x5C14 -0xB6FC 0x9975 -0xB6FD 0x6D31 -0xB6FE 0x4E8C -0xB740 0x7A1D -0xB741 0x7A1F -0xB742 0x7A21 -0xB743 0x7A22 -0xB744 0x7A24 -0xB745 0x7A25 -0xB746 0x7A26 -0xB747 0x7A27 -0xB748 0x7A28 -0xB749 0x7A29 -0xB74A 0x7A2A -0xB74B 0x7A2B -0xB74C 0x7A2C -0xB74D 0x7A2D -0xB74E 0x7A2E -0xB74F 0x7A2F -0xB750 0x7A30 -0xB751 0x7A31 -0xB752 0x7A32 -0xB753 0x7A34 -0xB754 0x7A35 -0xB755 0x7A36 -0xB756 0x7A38 -0xB757 0x7A3A -0xB758 0x7A3E -0xB759 0x7A40 -0xB75A 0x7A41 -0xB75B 0x7A42 -0xB75C 0x7A43 -0xB75D 0x7A44 -0xB75E 0x7A45 -0xB75F 0x7A47 -0xB760 0x7A48 -0xB761 0x7A49 -0xB762 0x7A4A -0xB763 0x7A4B -0xB764 0x7A4C -0xB765 0x7A4D -0xB766 0x7A4E -0xB767 0x7A4F -0xB768 0x7A50 -0xB769 0x7A52 -0xB76A 0x7A53 -0xB76B 0x7A54 -0xB76C 0x7A55 -0xB76D 0x7A56 -0xB76E 0x7A58 -0xB76F 0x7A59 -0xB770 0x7A5A -0xB771 0x7A5B -0xB772 0x7A5C -0xB773 0x7A5D -0xB774 0x7A5E -0xB775 0x7A5F -0xB776 0x7A60 -0xB777 0x7A61 -0xB778 0x7A62 -0xB779 0x7A63 -0xB77A 0x7A64 -0xB77B 0x7A65 -0xB77C 0x7A66 -0xB77D 0x7A67 -0xB77E 0x7A68 -0xB780 0x7A69 -0xB781 0x7A6A -0xB782 0x7A6B -0xB783 0x7A6C -0xB784 0x7A6D -0xB785 0x7A6E -0xB786 0x7A6F -0xB787 0x7A71 -0xB788 0x7A72 -0xB789 0x7A73 -0xB78A 0x7A75 -0xB78B 0x7A7B -0xB78C 0x7A7C -0xB78D 0x7A7D -0xB78E 0x7A7E -0xB78F 0x7A82 -0xB790 0x7A85 -0xB791 0x7A87 -0xB792 0x7A89 -0xB793 0x7A8A -0xB794 0x7A8B -0xB795 0x7A8C -0xB796 0x7A8E -0xB797 0x7A8F -0xB798 0x7A90 -0xB799 0x7A93 -0xB79A 0x7A94 -0xB79B 0x7A99 -0xB79C 0x7A9A -0xB79D 0x7A9B -0xB79E 0x7A9E -0xB79F 0x7AA1 -0xB7A0 0x7AA2 -0xB7A1 0x8D30 -0xB7A2 0x53D1 -0xB7A3 0x7F5A -0xB7A4 0x7B4F -0xB7A5 0x4F10 -0xB7A6 0x4E4F -0xB7A7 0x9600 -0xB7A8 0x6CD5 -0xB7A9 0x73D0 -0xB7AA 0x85E9 -0xB7AB 0x5E06 -0xB7AC 0x756A -0xB7AD 0x7FFB -0xB7AE 0x6A0A -0xB7AF 0x77FE -0xB7B0 0x9492 -0xB7B1 0x7E41 -0xB7B2 0x51E1 -0xB7B3 0x70E6 -0xB7B4 0x53CD -0xB7B5 0x8FD4 -0xB7B6 0x8303 -0xB7B7 0x8D29 -0xB7B8 0x72AF -0xB7B9 0x996D -0xB7BA 0x6CDB -0xB7BB 0x574A -0xB7BC 0x82B3 -0xB7BD 0x65B9 -0xB7BE 0x80AA -0xB7BF 0x623F -0xB7C0 0x9632 -0xB7C1 0x59A8 -0xB7C2 0x4EFF -0xB7C3 0x8BBF -0xB7C4 0x7EBA -0xB7C5 0x653E -0xB7C6 0x83F2 -0xB7C7 0x975E -0xB7C8 0x5561 -0xB7C9 0x98DE -0xB7CA 0x80A5 -0xB7CB 0x532A -0xB7CC 0x8BFD -0xB7CD 0x5420 -0xB7CE 0x80BA -0xB7CF 0x5E9F -0xB7D0 0x6CB8 -0xB7D1 0x8D39 -0xB7D2 0x82AC -0xB7D3 0x915A -0xB7D4 0x5429 -0xB7D5 0x6C1B -0xB7D6 0x5206 -0xB7D7 0x7EB7 -0xB7D8 0x575F -0xB7D9 0x711A -0xB7DA 0x6C7E -0xB7DB 0x7C89 -0xB7DC 0x594B -0xB7DD 0x4EFD -0xB7DE 0x5FFF -0xB7DF 0x6124 -0xB7E0 0x7CAA -0xB7E1 0x4E30 -0xB7E2 0x5C01 -0xB7E3 0x67AB -0xB7E4 0x8702 -0xB7E5 0x5CF0 -0xB7E6 0x950B -0xB7E7 0x98CE -0xB7E8 0x75AF -0xB7E9 0x70FD -0xB7EA 0x9022 -0xB7EB 0x51AF -0xB7EC 0x7F1D -0xB7ED 0x8BBD -0xB7EE 0x5949 -0xB7EF 0x51E4 -0xB7F0 0x4F5B -0xB7F1 0x5426 -0xB7F2 0x592B -0xB7F3 0x6577 -0xB7F4 0x80A4 -0xB7F5 0x5B75 -0xB7F6 0x6276 -0xB7F7 0x62C2 -0xB7F8 0x8F90 -0xB7F9 0x5E45 -0xB7FA 0x6C1F -0xB7FB 0x7B26 -0xB7FC 0x4F0F -0xB7FD 0x4FD8 -0xB7FE 0x670D -0xB840 0x7AA3 -0xB841 0x7AA4 -0xB842 0x7AA7 -0xB843 0x7AA9 -0xB844 0x7AAA -0xB845 0x7AAB -0xB846 0x7AAE -0xB847 0x7AAF -0xB848 0x7AB0 -0xB849 0x7AB1 -0xB84A 0x7AB2 -0xB84B 0x7AB4 -0xB84C 0x7AB5 -0xB84D 0x7AB6 -0xB84E 0x7AB7 -0xB84F 0x7AB8 -0xB850 0x7AB9 -0xB851 0x7ABA -0xB852 0x7ABB -0xB853 0x7ABC -0xB854 0x7ABD -0xB855 0x7ABE -0xB856 0x7AC0 -0xB857 0x7AC1 -0xB858 0x7AC2 -0xB859 0x7AC3 -0xB85A 0x7AC4 -0xB85B 0x7AC5 -0xB85C 0x7AC6 -0xB85D 0x7AC7 -0xB85E 0x7AC8 -0xB85F 0x7AC9 -0xB860 0x7ACA -0xB861 0x7ACC -0xB862 0x7ACD -0xB863 0x7ACE -0xB864 0x7ACF -0xB865 0x7AD0 -0xB866 0x7AD1 -0xB867 0x7AD2 -0xB868 0x7AD3 -0xB869 0x7AD4 -0xB86A 0x7AD5 -0xB86B 0x7AD7 -0xB86C 0x7AD8 -0xB86D 0x7ADA -0xB86E 0x7ADB -0xB86F 0x7ADC -0xB870 0x7ADD -0xB871 0x7AE1 -0xB872 0x7AE2 -0xB873 0x7AE4 -0xB874 0x7AE7 -0xB875 0x7AE8 -0xB876 0x7AE9 -0xB877 0x7AEA -0xB878 0x7AEB -0xB879 0x7AEC -0xB87A 0x7AEE -0xB87B 0x7AF0 -0xB87C 0x7AF1 -0xB87D 0x7AF2 -0xB87E 0x7AF3 -0xB880 0x7AF4 -0xB881 0x7AF5 -0xB882 0x7AF6 -0xB883 0x7AF7 -0xB884 0x7AF8 -0xB885 0x7AFB -0xB886 0x7AFC -0xB887 0x7AFE -0xB888 0x7B00 -0xB889 0x7B01 -0xB88A 0x7B02 -0xB88B 0x7B05 -0xB88C 0x7B07 -0xB88D 0x7B09 -0xB88E 0x7B0C -0xB88F 0x7B0D -0xB890 0x7B0E -0xB891 0x7B10 -0xB892 0x7B12 -0xB893 0x7B13 -0xB894 0x7B16 -0xB895 0x7B17 -0xB896 0x7B18 -0xB897 0x7B1A -0xB898 0x7B1C -0xB899 0x7B1D -0xB89A 0x7B1F -0xB89B 0x7B21 -0xB89C 0x7B22 -0xB89D 0x7B23 -0xB89E 0x7B27 -0xB89F 0x7B29 -0xB8A0 0x7B2D -0xB8A1 0x6D6E -0xB8A2 0x6DAA -0xB8A3 0x798F -0xB8A4 0x88B1 -0xB8A5 0x5F17 -0xB8A6 0x752B -0xB8A7 0x629A -0xB8A8 0x8F85 -0xB8A9 0x4FEF -0xB8AA 0x91DC -0xB8AB 0x65A7 -0xB8AC 0x812F -0xB8AD 0x8151 -0xB8AE 0x5E9C -0xB8AF 0x8150 -0xB8B0 0x8D74 -0xB8B1 0x526F -0xB8B2 0x8986 -0xB8B3 0x8D4B -0xB8B4 0x590D -0xB8B5 0x5085 -0xB8B6 0x4ED8 -0xB8B7 0x961C -0xB8B8 0x7236 -0xB8B9 0x8179 -0xB8BA 0x8D1F -0xB8BB 0x5BCC -0xB8BC 0x8BA3 -0xB8BD 0x9644 -0xB8BE 0x5987 -0xB8BF 0x7F1A -0xB8C0 0x5490 -0xB8C1 0x5676 -0xB8C2 0x560E -0xB8C3 0x8BE5 -0xB8C4 0x6539 -0xB8C5 0x6982 -0xB8C6 0x9499 -0xB8C7 0x76D6 -0xB8C8 0x6E89 -0xB8C9 0x5E72 -0xB8CA 0x7518 -0xB8CB 0x6746 -0xB8CC 0x67D1 -0xB8CD 0x7AFF -0xB8CE 0x809D -0xB8CF 0x8D76 -0xB8D0 0x611F -0xB8D1 0x79C6 -0xB8D2 0x6562 -0xB8D3 0x8D63 -0xB8D4 0x5188 -0xB8D5 0x521A -0xB8D6 0x94A2 -0xB8D7 0x7F38 -0xB8D8 0x809B -0xB8D9 0x7EB2 -0xB8DA 0x5C97 -0xB8DB 0x6E2F -0xB8DC 0x6760 -0xB8DD 0x7BD9 -0xB8DE 0x768B -0xB8DF 0x9AD8 -0xB8E0 0x818F -0xB8E1 0x7F94 -0xB8E2 0x7CD5 -0xB8E3 0x641E -0xB8E4 0x9550 -0xB8E5 0x7A3F -0xB8E6 0x544A -0xB8E7 0x54E5 -0xB8E8 0x6B4C -0xB8E9 0x6401 -0xB8EA 0x6208 -0xB8EB 0x9E3D -0xB8EC 0x80F3 -0xB8ED 0x7599 -0xB8EE 0x5272 -0xB8EF 0x9769 -0xB8F0 0x845B -0xB8F1 0x683C -0xB8F2 0x86E4 -0xB8F3 0x9601 -0xB8F4 0x9694 -0xB8F5 0x94EC -0xB8F6 0x4E2A -0xB8F7 0x5404 -0xB8F8 0x7ED9 -0xB8F9 0x6839 -0xB8FA 0x8DDF -0xB8FB 0x8015 -0xB8FC 0x66F4 -0xB8FD 0x5E9A -0xB8FE 0x7FB9 -0xB940 0x7B2F -0xB941 0x7B30 -0xB942 0x7B32 -0xB943 0x7B34 -0xB944 0x7B35 -0xB945 0x7B36 -0xB946 0x7B37 -0xB947 0x7B39 -0xB948 0x7B3B -0xB949 0x7B3D -0xB94A 0x7B3F -0xB94B 0x7B40 -0xB94C 0x7B41 -0xB94D 0x7B42 -0xB94E 0x7B43 -0xB94F 0x7B44 -0xB950 0x7B46 -0xB951 0x7B48 -0xB952 0x7B4A -0xB953 0x7B4D -0xB954 0x7B4E -0xB955 0x7B53 -0xB956 0x7B55 -0xB957 0x7B57 -0xB958 0x7B59 -0xB959 0x7B5C -0xB95A 0x7B5E -0xB95B 0x7B5F -0xB95C 0x7B61 -0xB95D 0x7B63 -0xB95E 0x7B64 -0xB95F 0x7B65 -0xB960 0x7B66 -0xB961 0x7B67 -0xB962 0x7B68 -0xB963 0x7B69 -0xB964 0x7B6A -0xB965 0x7B6B -0xB966 0x7B6C -0xB967 0x7B6D -0xB968 0x7B6F -0xB969 0x7B70 -0xB96A 0x7B73 -0xB96B 0x7B74 -0xB96C 0x7B76 -0xB96D 0x7B78 -0xB96E 0x7B7A -0xB96F 0x7B7C -0xB970 0x7B7D -0xB971 0x7B7F -0xB972 0x7B81 -0xB973 0x7B82 -0xB974 0x7B83 -0xB975 0x7B84 -0xB976 0x7B86 -0xB977 0x7B87 -0xB978 0x7B88 -0xB979 0x7B89 -0xB97A 0x7B8A -0xB97B 0x7B8B -0xB97C 0x7B8C -0xB97D 0x7B8E -0xB97E 0x7B8F -0xB980 0x7B91 -0xB981 0x7B92 -0xB982 0x7B93 -0xB983 0x7B96 -0xB984 0x7B98 -0xB985 0x7B99 -0xB986 0x7B9A -0xB987 0x7B9B -0xB988 0x7B9E -0xB989 0x7B9F -0xB98A 0x7BA0 -0xB98B 0x7BA3 -0xB98C 0x7BA4 -0xB98D 0x7BA5 -0xB98E 0x7BAE -0xB98F 0x7BAF -0xB990 0x7BB0 -0xB991 0x7BB2 -0xB992 0x7BB3 -0xB993 0x7BB5 -0xB994 0x7BB6 -0xB995 0x7BB7 -0xB996 0x7BB9 -0xB997 0x7BBA -0xB998 0x7BBB -0xB999 0x7BBC -0xB99A 0x7BBD -0xB99B 0x7BBE -0xB99C 0x7BBF -0xB99D 0x7BC0 -0xB99E 0x7BC2 -0xB99F 0x7BC3 -0xB9A0 0x7BC4 -0xB9A1 0x57C2 -0xB9A2 0x803F -0xB9A3 0x6897 -0xB9A4 0x5DE5 -0xB9A5 0x653B -0xB9A6 0x529F -0xB9A7 0x606D -0xB9A8 0x9F9A -0xB9A9 0x4F9B -0xB9AA 0x8EAC -0xB9AB 0x516C -0xB9AC 0x5BAB -0xB9AD 0x5F13 -0xB9AE 0x5DE9 -0xB9AF 0x6C5E -0xB9B0 0x62F1 -0xB9B1 0x8D21 -0xB9B2 0x5171 -0xB9B3 0x94A9 -0xB9B4 0x52FE -0xB9B5 0x6C9F -0xB9B6 0x82DF -0xB9B7 0x72D7 -0xB9B8 0x57A2 -0xB9B9 0x6784 -0xB9BA 0x8D2D -0xB9BB 0x591F -0xB9BC 0x8F9C -0xB9BD 0x83C7 -0xB9BE 0x5495 -0xB9BF 0x7B8D -0xB9C0 0x4F30 -0xB9C1 0x6CBD -0xB9C2 0x5B64 -0xB9C3 0x59D1 -0xB9C4 0x9F13 -0xB9C5 0x53E4 -0xB9C6 0x86CA -0xB9C7 0x9AA8 -0xB9C8 0x8C37 -0xB9C9 0x80A1 -0xB9CA 0x6545 -0xB9CB 0x987E -0xB9CC 0x56FA -0xB9CD 0x96C7 -0xB9CE 0x522E -0xB9CF 0x74DC -0xB9D0 0x5250 -0xB9D1 0x5BE1 -0xB9D2 0x6302 -0xB9D3 0x8902 -0xB9D4 0x4E56 -0xB9D5 0x62D0 -0xB9D6 0x602A -0xB9D7 0x68FA -0xB9D8 0x5173 -0xB9D9 0x5B98 -0xB9DA 0x51A0 -0xB9DB 0x89C2 -0xB9DC 0x7BA1 -0xB9DD 0x9986 -0xB9DE 0x7F50 -0xB9DF 0x60EF -0xB9E0 0x704C -0xB9E1 0x8D2F -0xB9E2 0x5149 -0xB9E3 0x5E7F -0xB9E4 0x901B -0xB9E5 0x7470 -0xB9E6 0x89C4 -0xB9E7 0x572D -0xB9E8 0x7845 -0xB9E9 0x5F52 -0xB9EA 0x9F9F -0xB9EB 0x95FA -0xB9EC 0x8F68 -0xB9ED 0x9B3C -0xB9EE 0x8BE1 -0xB9EF 0x7678 -0xB9F0 0x6842 -0xB9F1 0x67DC -0xB9F2 0x8DEA -0xB9F3 0x8D35 -0xB9F4 0x523D -0xB9F5 0x8F8A -0xB9F6 0x6EDA -0xB9F7 0x68CD -0xB9F8 0x9505 -0xB9F9 0x90ED -0xB9FA 0x56FD -0xB9FB 0x679C -0xB9FC 0x88F9 -0xB9FD 0x8FC7 -0xB9FE 0x54C8 -0xBA40 0x7BC5 -0xBA41 0x7BC8 -0xBA42 0x7BC9 -0xBA43 0x7BCA -0xBA44 0x7BCB -0xBA45 0x7BCD -0xBA46 0x7BCE -0xBA47 0x7BCF -0xBA48 0x7BD0 -0xBA49 0x7BD2 -0xBA4A 0x7BD4 -0xBA4B 0x7BD5 -0xBA4C 0x7BD6 -0xBA4D 0x7BD7 -0xBA4E 0x7BD8 -0xBA4F 0x7BDB -0xBA50 0x7BDC -0xBA51 0x7BDE -0xBA52 0x7BDF -0xBA53 0x7BE0 -0xBA54 0x7BE2 -0xBA55 0x7BE3 -0xBA56 0x7BE4 -0xBA57 0x7BE7 -0xBA58 0x7BE8 -0xBA59 0x7BE9 -0xBA5A 0x7BEB -0xBA5B 0x7BEC -0xBA5C 0x7BED -0xBA5D 0x7BEF -0xBA5E 0x7BF0 -0xBA5F 0x7BF2 -0xBA60 0x7BF3 -0xBA61 0x7BF4 -0xBA62 0x7BF5 -0xBA63 0x7BF6 -0xBA64 0x7BF8 -0xBA65 0x7BF9 -0xBA66 0x7BFA -0xBA67 0x7BFB -0xBA68 0x7BFD -0xBA69 0x7BFF -0xBA6A 0x7C00 -0xBA6B 0x7C01 -0xBA6C 0x7C02 -0xBA6D 0x7C03 -0xBA6E 0x7C04 -0xBA6F 0x7C05 -0xBA70 0x7C06 -0xBA71 0x7C08 -0xBA72 0x7C09 -0xBA73 0x7C0A -0xBA74 0x7C0D -0xBA75 0x7C0E -0xBA76 0x7C10 -0xBA77 0x7C11 -0xBA78 0x7C12 -0xBA79 0x7C13 -0xBA7A 0x7C14 -0xBA7B 0x7C15 -0xBA7C 0x7C17 -0xBA7D 0x7C18 -0xBA7E 0x7C19 -0xBA80 0x7C1A -0xBA81 0x7C1B -0xBA82 0x7C1C -0xBA83 0x7C1D -0xBA84 0x7C1E -0xBA85 0x7C20 -0xBA86 0x7C21 -0xBA87 0x7C22 -0xBA88 0x7C23 -0xBA89 0x7C24 -0xBA8A 0x7C25 -0xBA8B 0x7C28 -0xBA8C 0x7C29 -0xBA8D 0x7C2B -0xBA8E 0x7C2C -0xBA8F 0x7C2D -0xBA90 0x7C2E -0xBA91 0x7C2F -0xBA92 0x7C30 -0xBA93 0x7C31 -0xBA94 0x7C32 -0xBA95 0x7C33 -0xBA96 0x7C34 -0xBA97 0x7C35 -0xBA98 0x7C36 -0xBA99 0x7C37 -0xBA9A 0x7C39 -0xBA9B 0x7C3A -0xBA9C 0x7C3B -0xBA9D 0x7C3C -0xBA9E 0x7C3D -0xBA9F 0x7C3E -0xBAA0 0x7C42 -0xBAA1 0x9AB8 -0xBAA2 0x5B69 -0xBAA3 0x6D77 -0xBAA4 0x6C26 -0xBAA5 0x4EA5 -0xBAA6 0x5BB3 -0xBAA7 0x9A87 -0xBAA8 0x9163 -0xBAA9 0x61A8 -0xBAAA 0x90AF -0xBAAB 0x97E9 -0xBAAC 0x542B -0xBAAD 0x6DB5 -0xBAAE 0x5BD2 -0xBAAF 0x51FD -0xBAB0 0x558A -0xBAB1 0x7F55 -0xBAB2 0x7FF0 -0xBAB3 0x64BC -0xBAB4 0x634D -0xBAB5 0x65F1 -0xBAB6 0x61BE -0xBAB7 0x608D -0xBAB8 0x710A -0xBAB9 0x6C57 -0xBABA 0x6C49 -0xBABB 0x592F -0xBABC 0x676D -0xBABD 0x822A -0xBABE 0x58D5 -0xBABF 0x568E -0xBAC0 0x8C6A -0xBAC1 0x6BEB -0xBAC2 0x90DD -0xBAC3 0x597D -0xBAC4 0x8017 -0xBAC5 0x53F7 -0xBAC6 0x6D69 -0xBAC7 0x5475 -0xBAC8 0x559D -0xBAC9 0x8377 -0xBACA 0x83CF -0xBACB 0x6838 -0xBACC 0x79BE -0xBACD 0x548C -0xBACE 0x4F55 -0xBACF 0x5408 -0xBAD0 0x76D2 -0xBAD1 0x8C89 -0xBAD2 0x9602 -0xBAD3 0x6CB3 -0xBAD4 0x6DB8 -0xBAD5 0x8D6B -0xBAD6 0x8910 -0xBAD7 0x9E64 -0xBAD8 0x8D3A -0xBAD9 0x563F -0xBADA 0x9ED1 -0xBADB 0x75D5 -0xBADC 0x5F88 -0xBADD 0x72E0 -0xBADE 0x6068 -0xBADF 0x54FC -0xBAE0 0x4EA8 -0xBAE1 0x6A2A -0xBAE2 0x8861 -0xBAE3 0x6052 -0xBAE4 0x8F70 -0xBAE5 0x54C4 -0xBAE6 0x70D8 -0xBAE7 0x8679 -0xBAE8 0x9E3F -0xBAE9 0x6D2A -0xBAEA 0x5B8F -0xBAEB 0x5F18 -0xBAEC 0x7EA2 -0xBAED 0x5589 -0xBAEE 0x4FAF -0xBAEF 0x7334 -0xBAF0 0x543C -0xBAF1 0x539A -0xBAF2 0x5019 -0xBAF3 0x540E -0xBAF4 0x547C -0xBAF5 0x4E4E -0xBAF6 0x5FFD -0xBAF7 0x745A -0xBAF8 0x58F6 -0xBAF9 0x846B -0xBAFA 0x80E1 -0xBAFB 0x8774 -0xBAFC 0x72D0 -0xBAFD 0x7CCA -0xBAFE 0x6E56 -0xBB40 0x7C43 -0xBB41 0x7C44 -0xBB42 0x7C45 -0xBB43 0x7C46 -0xBB44 0x7C47 -0xBB45 0x7C48 -0xBB46 0x7C49 -0xBB47 0x7C4A -0xBB48 0x7C4B -0xBB49 0x7C4C -0xBB4A 0x7C4E -0xBB4B 0x7C4F -0xBB4C 0x7C50 -0xBB4D 0x7C51 -0xBB4E 0x7C52 -0xBB4F 0x7C53 -0xBB50 0x7C54 -0xBB51 0x7C55 -0xBB52 0x7C56 -0xBB53 0x7C57 -0xBB54 0x7C58 -0xBB55 0x7C59 -0xBB56 0x7C5A -0xBB57 0x7C5B -0xBB58 0x7C5C -0xBB59 0x7C5D -0xBB5A 0x7C5E -0xBB5B 0x7C5F -0xBB5C 0x7C60 -0xBB5D 0x7C61 -0xBB5E 0x7C62 -0xBB5F 0x7C63 -0xBB60 0x7C64 -0xBB61 0x7C65 -0xBB62 0x7C66 -0xBB63 0x7C67 -0xBB64 0x7C68 -0xBB65 0x7C69 -0xBB66 0x7C6A -0xBB67 0x7C6B -0xBB68 0x7C6C -0xBB69 0x7C6D -0xBB6A 0x7C6E -0xBB6B 0x7C6F -0xBB6C 0x7C70 -0xBB6D 0x7C71 -0xBB6E 0x7C72 -0xBB6F 0x7C75 -0xBB70 0x7C76 -0xBB71 0x7C77 -0xBB72 0x7C78 -0xBB73 0x7C79 -0xBB74 0x7C7A -0xBB75 0x7C7E -0xBB76 0x7C7F -0xBB77 0x7C80 -0xBB78 0x7C81 -0xBB79 0x7C82 -0xBB7A 0x7C83 -0xBB7B 0x7C84 -0xBB7C 0x7C85 -0xBB7D 0x7C86 -0xBB7E 0x7C87 -0xBB80 0x7C88 -0xBB81 0x7C8A -0xBB82 0x7C8B -0xBB83 0x7C8C -0xBB84 0x7C8D -0xBB85 0x7C8E -0xBB86 0x7C8F -0xBB87 0x7C90 -0xBB88 0x7C93 -0xBB89 0x7C94 -0xBB8A 0x7C96 -0xBB8B 0x7C99 -0xBB8C 0x7C9A -0xBB8D 0x7C9B -0xBB8E 0x7CA0 -0xBB8F 0x7CA1 -0xBB90 0x7CA3 -0xBB91 0x7CA6 -0xBB92 0x7CA7 -0xBB93 0x7CA8 -0xBB94 0x7CA9 -0xBB95 0x7CAB -0xBB96 0x7CAC -0xBB97 0x7CAD -0xBB98 0x7CAF -0xBB99 0x7CB0 -0xBB9A 0x7CB4 -0xBB9B 0x7CB5 -0xBB9C 0x7CB6 -0xBB9D 0x7CB7 -0xBB9E 0x7CB8 -0xBB9F 0x7CBA -0xBBA0 0x7CBB -0xBBA1 0x5F27 -0xBBA2 0x864E -0xBBA3 0x552C -0xBBA4 0x62A4 -0xBBA5 0x4E92 -0xBBA6 0x6CAA -0xBBA7 0x6237 -0xBBA8 0x82B1 -0xBBA9 0x54D7 -0xBBAA 0x534E -0xBBAB 0x733E -0xBBAC 0x6ED1 -0xBBAD 0x753B -0xBBAE 0x5212 -0xBBAF 0x5316 -0xBBB0 0x8BDD -0xBBB1 0x69D0 -0xBBB2 0x5F8A -0xBBB3 0x6000 -0xBBB4 0x6DEE -0xBBB5 0x574F -0xBBB6 0x6B22 -0xBBB7 0x73AF -0xBBB8 0x6853 -0xBBB9 0x8FD8 -0xBBBA 0x7F13 -0xBBBB 0x6362 -0xBBBC 0x60A3 -0xBBBD 0x5524 -0xBBBE 0x75EA -0xBBBF 0x8C62 -0xBBC0 0x7115 -0xBBC1 0x6DA3 -0xBBC2 0x5BA6 -0xBBC3 0x5E7B -0xBBC4 0x8352 -0xBBC5 0x614C -0xBBC6 0x9EC4 -0xBBC7 0x78FA -0xBBC8 0x8757 -0xBBC9 0x7C27 -0xBBCA 0x7687 -0xBBCB 0x51F0 -0xBBCC 0x60F6 -0xBBCD 0x714C -0xBBCE 0x6643 -0xBBCF 0x5E4C -0xBBD0 0x604D -0xBBD1 0x8C0E -0xBBD2 0x7070 -0xBBD3 0x6325 -0xBBD4 0x8F89 -0xBBD5 0x5FBD -0xBBD6 0x6062 -0xBBD7 0x86D4 -0xBBD8 0x56DE -0xBBD9 0x6BC1 -0xBBDA 0x6094 -0xBBDB 0x6167 -0xBBDC 0x5349 -0xBBDD 0x60E0 -0xBBDE 0x6666 -0xBBDF 0x8D3F -0xBBE0 0x79FD -0xBBE1 0x4F1A -0xBBE2 0x70E9 -0xBBE3 0x6C47 -0xBBE4 0x8BB3 -0xBBE5 0x8BF2 -0xBBE6 0x7ED8 -0xBBE7 0x8364 -0xBBE8 0x660F -0xBBE9 0x5A5A -0xBBEA 0x9B42 -0xBBEB 0x6D51 -0xBBEC 0x6DF7 -0xBBED 0x8C41 -0xBBEE 0x6D3B -0xBBEF 0x4F19 -0xBBF0 0x706B -0xBBF1 0x83B7 -0xBBF2 0x6216 -0xBBF3 0x60D1 -0xBBF4 0x970D -0xBBF5 0x8D27 -0xBBF6 0x7978 -0xBBF7 0x51FB -0xBBF8 0x573E -0xBBF9 0x57FA -0xBBFA 0x673A -0xBBFB 0x7578 -0xBBFC 0x7A3D -0xBBFD 0x79EF -0xBBFE 0x7B95 -0xBC40 0x7CBF -0xBC41 0x7CC0 -0xBC42 0x7CC2 -0xBC43 0x7CC3 -0xBC44 0x7CC4 -0xBC45 0x7CC6 -0xBC46 0x7CC9 -0xBC47 0x7CCB -0xBC48 0x7CCE -0xBC49 0x7CCF -0xBC4A 0x7CD0 -0xBC4B 0x7CD1 -0xBC4C 0x7CD2 -0xBC4D 0x7CD3 -0xBC4E 0x7CD4 -0xBC4F 0x7CD8 -0xBC50 0x7CDA -0xBC51 0x7CDB -0xBC52 0x7CDD -0xBC53 0x7CDE -0xBC54 0x7CE1 -0xBC55 0x7CE2 -0xBC56 0x7CE3 -0xBC57 0x7CE4 -0xBC58 0x7CE5 -0xBC59 0x7CE6 -0xBC5A 0x7CE7 -0xBC5B 0x7CE9 -0xBC5C 0x7CEA -0xBC5D 0x7CEB -0xBC5E 0x7CEC -0xBC5F 0x7CED -0xBC60 0x7CEE -0xBC61 0x7CF0 -0xBC62 0x7CF1 -0xBC63 0x7CF2 -0xBC64 0x7CF3 -0xBC65 0x7CF4 -0xBC66 0x7CF5 -0xBC67 0x7CF6 -0xBC68 0x7CF7 -0xBC69 0x7CF9 -0xBC6A 0x7CFA -0xBC6B 0x7CFC -0xBC6C 0x7CFD -0xBC6D 0x7CFE -0xBC6E 0x7CFF -0xBC6F 0x7D00 -0xBC70 0x7D01 -0xBC71 0x7D02 -0xBC72 0x7D03 -0xBC73 0x7D04 -0xBC74 0x7D05 -0xBC75 0x7D06 -0xBC76 0x7D07 -0xBC77 0x7D08 -0xBC78 0x7D09 -0xBC79 0x7D0B -0xBC7A 0x7D0C -0xBC7B 0x7D0D -0xBC7C 0x7D0E -0xBC7D 0x7D0F -0xBC7E 0x7D10 -0xBC80 0x7D11 -0xBC81 0x7D12 -0xBC82 0x7D13 -0xBC83 0x7D14 -0xBC84 0x7D15 -0xBC85 0x7D16 -0xBC86 0x7D17 -0xBC87 0x7D18 -0xBC88 0x7D19 -0xBC89 0x7D1A -0xBC8A 0x7D1B -0xBC8B 0x7D1C -0xBC8C 0x7D1D -0xBC8D 0x7D1E -0xBC8E 0x7D1F -0xBC8F 0x7D21 -0xBC90 0x7D23 -0xBC91 0x7D24 -0xBC92 0x7D25 -0xBC93 0x7D26 -0xBC94 0x7D28 -0xBC95 0x7D29 -0xBC96 0x7D2A -0xBC97 0x7D2C -0xBC98 0x7D2D -0xBC99 0x7D2E -0xBC9A 0x7D30 -0xBC9B 0x7D31 -0xBC9C 0x7D32 -0xBC9D 0x7D33 -0xBC9E 0x7D34 -0xBC9F 0x7D35 -0xBCA0 0x7D36 -0xBCA1 0x808C -0xBCA2 0x9965 -0xBCA3 0x8FF9 -0xBCA4 0x6FC0 -0xBCA5 0x8BA5 -0xBCA6 0x9E21 -0xBCA7 0x59EC -0xBCA8 0x7EE9 -0xBCA9 0x7F09 -0xBCAA 0x5409 -0xBCAB 0x6781 -0xBCAC 0x68D8 -0xBCAD 0x8F91 -0xBCAE 0x7C4D -0xBCAF 0x96C6 -0xBCB0 0x53CA -0xBCB1 0x6025 -0xBCB2 0x75BE -0xBCB3 0x6C72 -0xBCB4 0x5373 -0xBCB5 0x5AC9 -0xBCB6 0x7EA7 -0xBCB7 0x6324 -0xBCB8 0x51E0 -0xBCB9 0x810A -0xBCBA 0x5DF1 -0xBCBB 0x84DF -0xBCBC 0x6280 -0xBCBD 0x5180 -0xBCBE 0x5B63 -0xBCBF 0x4F0E -0xBCC0 0x796D -0xBCC1 0x5242 -0xBCC2 0x60B8 -0xBCC3 0x6D4E -0xBCC4 0x5BC4 -0xBCC5 0x5BC2 -0xBCC6 0x8BA1 -0xBCC7 0x8BB0 -0xBCC8 0x65E2 -0xBCC9 0x5FCC -0xBCCA 0x9645 -0xBCCB 0x5993 -0xBCCC 0x7EE7 -0xBCCD 0x7EAA -0xBCCE 0x5609 -0xBCCF 0x67B7 -0xBCD0 0x5939 -0xBCD1 0x4F73 -0xBCD2 0x5BB6 -0xBCD3 0x52A0 -0xBCD4 0x835A -0xBCD5 0x988A -0xBCD6 0x8D3E -0xBCD7 0x7532 -0xBCD8 0x94BE -0xBCD9 0x5047 -0xBCDA 0x7A3C -0xBCDB 0x4EF7 -0xBCDC 0x67B6 -0xBCDD 0x9A7E -0xBCDE 0x5AC1 -0xBCDF 0x6B7C -0xBCE0 0x76D1 -0xBCE1 0x575A -0xBCE2 0x5C16 -0xBCE3 0x7B3A -0xBCE4 0x95F4 -0xBCE5 0x714E -0xBCE6 0x517C -0xBCE7 0x80A9 -0xBCE8 0x8270 -0xBCE9 0x5978 -0xBCEA 0x7F04 -0xBCEB 0x8327 -0xBCEC 0x68C0 -0xBCED 0x67EC -0xBCEE 0x78B1 -0xBCEF 0x7877 -0xBCF0 0x62E3 -0xBCF1 0x6361 -0xBCF2 0x7B80 -0xBCF3 0x4FED -0xBCF4 0x526A -0xBCF5 0x51CF -0xBCF6 0x8350 -0xBCF7 0x69DB -0xBCF8 0x9274 -0xBCF9 0x8DF5 -0xBCFA 0x8D31 -0xBCFB 0x89C1 -0xBCFC 0x952E -0xBCFD 0x7BAD -0xBCFE 0x4EF6 -0xBD40 0x7D37 -0xBD41 0x7D38 -0xBD42 0x7D39 -0xBD43 0x7D3A -0xBD44 0x7D3B -0xBD45 0x7D3C -0xBD46 0x7D3D -0xBD47 0x7D3E -0xBD48 0x7D3F -0xBD49 0x7D40 -0xBD4A 0x7D41 -0xBD4B 0x7D42 -0xBD4C 0x7D43 -0xBD4D 0x7D44 -0xBD4E 0x7D45 -0xBD4F 0x7D46 -0xBD50 0x7D47 -0xBD51 0x7D48 -0xBD52 0x7D49 -0xBD53 0x7D4A -0xBD54 0x7D4B -0xBD55 0x7D4C -0xBD56 0x7D4D -0xBD57 0x7D4E -0xBD58 0x7D4F -0xBD59 0x7D50 -0xBD5A 0x7D51 -0xBD5B 0x7D52 -0xBD5C 0x7D53 -0xBD5D 0x7D54 -0xBD5E 0x7D55 -0xBD5F 0x7D56 -0xBD60 0x7D57 -0xBD61 0x7D58 -0xBD62 0x7D59 -0xBD63 0x7D5A -0xBD64 0x7D5B -0xBD65 0x7D5C -0xBD66 0x7D5D -0xBD67 0x7D5E -0xBD68 0x7D5F -0xBD69 0x7D60 -0xBD6A 0x7D61 -0xBD6B 0x7D62 -0xBD6C 0x7D63 -0xBD6D 0x7D64 -0xBD6E 0x7D65 -0xBD6F 0x7D66 -0xBD70 0x7D67 -0xBD71 0x7D68 -0xBD72 0x7D69 -0xBD73 0x7D6A -0xBD74 0x7D6B -0xBD75 0x7D6C -0xBD76 0x7D6D -0xBD77 0x7D6F -0xBD78 0x7D70 -0xBD79 0x7D71 -0xBD7A 0x7D72 -0xBD7B 0x7D73 -0xBD7C 0x7D74 -0xBD7D 0x7D75 -0xBD7E 0x7D76 -0xBD80 0x7D78 -0xBD81 0x7D79 -0xBD82 0x7D7A -0xBD83 0x7D7B -0xBD84 0x7D7C -0xBD85 0x7D7D -0xBD86 0x7D7E -0xBD87 0x7D7F -0xBD88 0x7D80 -0xBD89 0x7D81 -0xBD8A 0x7D82 -0xBD8B 0x7D83 -0xBD8C 0x7D84 -0xBD8D 0x7D85 -0xBD8E 0x7D86 -0xBD8F 0x7D87 -0xBD90 0x7D88 -0xBD91 0x7D89 -0xBD92 0x7D8A -0xBD93 0x7D8B -0xBD94 0x7D8C -0xBD95 0x7D8D -0xBD96 0x7D8E -0xBD97 0x7D8F -0xBD98 0x7D90 -0xBD99 0x7D91 -0xBD9A 0x7D92 -0xBD9B 0x7D93 -0xBD9C 0x7D94 -0xBD9D 0x7D95 -0xBD9E 0x7D96 -0xBD9F 0x7D97 -0xBDA0 0x7D98 -0xBDA1 0x5065 -0xBDA2 0x8230 -0xBDA3 0x5251 -0xBDA4 0x996F -0xBDA5 0x6E10 -0xBDA6 0x6E85 -0xBDA7 0x6DA7 -0xBDA8 0x5EFA -0xBDA9 0x50F5 -0xBDAA 0x59DC -0xBDAB 0x5C06 -0xBDAC 0x6D46 -0xBDAD 0x6C5F -0xBDAE 0x7586 -0xBDAF 0x848B -0xBDB0 0x6868 -0xBDB1 0x5956 -0xBDB2 0x8BB2 -0xBDB3 0x5320 -0xBDB4 0x9171 -0xBDB5 0x964D -0xBDB6 0x8549 -0xBDB7 0x6912 -0xBDB8 0x7901 -0xBDB9 0x7126 -0xBDBA 0x80F6 -0xBDBB 0x4EA4 -0xBDBC 0x90CA -0xBDBD 0x6D47 -0xBDBE 0x9A84 -0xBDBF 0x5A07 -0xBDC0 0x56BC -0xBDC1 0x6405 -0xBDC2 0x94F0 -0xBDC3 0x77EB -0xBDC4 0x4FA5 -0xBDC5 0x811A -0xBDC6 0x72E1 -0xBDC7 0x89D2 -0xBDC8 0x997A -0xBDC9 0x7F34 -0xBDCA 0x7EDE -0xBDCB 0x527F -0xBDCC 0x6559 -0xBDCD 0x9175 -0xBDCE 0x8F7F -0xBDCF 0x8F83 -0xBDD0 0x53EB -0xBDD1 0x7A96 -0xBDD2 0x63ED -0xBDD3 0x63A5 -0xBDD4 0x7686 -0xBDD5 0x79F8 -0xBDD6 0x8857 -0xBDD7 0x9636 -0xBDD8 0x622A -0xBDD9 0x52AB -0xBDDA 0x8282 -0xBDDB 0x6854 -0xBDDC 0x6770 -0xBDDD 0x6377 -0xBDDE 0x776B -0xBDDF 0x7AED -0xBDE0 0x6D01 -0xBDE1 0x7ED3 -0xBDE2 0x89E3 -0xBDE3 0x59D0 -0xBDE4 0x6212 -0xBDE5 0x85C9 -0xBDE6 0x82A5 -0xBDE7 0x754C -0xBDE8 0x501F -0xBDE9 0x4ECB -0xBDEA 0x75A5 -0xBDEB 0x8BEB -0xBDEC 0x5C4A -0xBDED 0x5DFE -0xBDEE 0x7B4B -0xBDEF 0x65A4 -0xBDF0 0x91D1 -0xBDF1 0x4ECA -0xBDF2 0x6D25 -0xBDF3 0x895F -0xBDF4 0x7D27 -0xBDF5 0x9526 -0xBDF6 0x4EC5 -0xBDF7 0x8C28 -0xBDF8 0x8FDB -0xBDF9 0x9773 -0xBDFA 0x664B -0xBDFB 0x7981 -0xBDFC 0x8FD1 -0xBDFD 0x70EC -0xBDFE 0x6D78 -0xBE40 0x7D99 -0xBE41 0x7D9A -0xBE42 0x7D9B -0xBE43 0x7D9C -0xBE44 0x7D9D -0xBE45 0x7D9E -0xBE46 0x7D9F -0xBE47 0x7DA0 -0xBE48 0x7DA1 -0xBE49 0x7DA2 -0xBE4A 0x7DA3 -0xBE4B 0x7DA4 -0xBE4C 0x7DA5 -0xBE4D 0x7DA7 -0xBE4E 0x7DA8 -0xBE4F 0x7DA9 -0xBE50 0x7DAA -0xBE51 0x7DAB -0xBE52 0x7DAC -0xBE53 0x7DAD -0xBE54 0x7DAF -0xBE55 0x7DB0 -0xBE56 0x7DB1 -0xBE57 0x7DB2 -0xBE58 0x7DB3 -0xBE59 0x7DB4 -0xBE5A 0x7DB5 -0xBE5B 0x7DB6 -0xBE5C 0x7DB7 -0xBE5D 0x7DB8 -0xBE5E 0x7DB9 -0xBE5F 0x7DBA -0xBE60 0x7DBB -0xBE61 0x7DBC -0xBE62 0x7DBD -0xBE63 0x7DBE -0xBE64 0x7DBF -0xBE65 0x7DC0 -0xBE66 0x7DC1 -0xBE67 0x7DC2 -0xBE68 0x7DC3 -0xBE69 0x7DC4 -0xBE6A 0x7DC5 -0xBE6B 0x7DC6 -0xBE6C 0x7DC7 -0xBE6D 0x7DC8 -0xBE6E 0x7DC9 -0xBE6F 0x7DCA -0xBE70 0x7DCB -0xBE71 0x7DCC -0xBE72 0x7DCD -0xBE73 0x7DCE -0xBE74 0x7DCF -0xBE75 0x7DD0 -0xBE76 0x7DD1 -0xBE77 0x7DD2 -0xBE78 0x7DD3 -0xBE79 0x7DD4 -0xBE7A 0x7DD5 -0xBE7B 0x7DD6 -0xBE7C 0x7DD7 -0xBE7D 0x7DD8 -0xBE7E 0x7DD9 -0xBE80 0x7DDA -0xBE81 0x7DDB -0xBE82 0x7DDC -0xBE83 0x7DDD -0xBE84 0x7DDE -0xBE85 0x7DDF -0xBE86 0x7DE0 -0xBE87 0x7DE1 -0xBE88 0x7DE2 -0xBE89 0x7DE3 -0xBE8A 0x7DE4 -0xBE8B 0x7DE5 -0xBE8C 0x7DE6 -0xBE8D 0x7DE7 -0xBE8E 0x7DE8 -0xBE8F 0x7DE9 -0xBE90 0x7DEA -0xBE91 0x7DEB -0xBE92 0x7DEC -0xBE93 0x7DED -0xBE94 0x7DEE -0xBE95 0x7DEF -0xBE96 0x7DF0 -0xBE97 0x7DF1 -0xBE98 0x7DF2 -0xBE99 0x7DF3 -0xBE9A 0x7DF4 -0xBE9B 0x7DF5 -0xBE9C 0x7DF6 -0xBE9D 0x7DF7 -0xBE9E 0x7DF8 -0xBE9F 0x7DF9 -0xBEA0 0x7DFA -0xBEA1 0x5C3D -0xBEA2 0x52B2 -0xBEA3 0x8346 -0xBEA4 0x5162 -0xBEA5 0x830E -0xBEA6 0x775B -0xBEA7 0x6676 -0xBEA8 0x9CB8 -0xBEA9 0x4EAC -0xBEAA 0x60CA -0xBEAB 0x7CBE -0xBEAC 0x7CB3 -0xBEAD 0x7ECF -0xBEAE 0x4E95 -0xBEAF 0x8B66 -0xBEB0 0x666F -0xBEB1 0x9888 -0xBEB2 0x9759 -0xBEB3 0x5883 -0xBEB4 0x656C -0xBEB5 0x955C -0xBEB6 0x5F84 -0xBEB7 0x75C9 -0xBEB8 0x9756 -0xBEB9 0x7ADF -0xBEBA 0x7ADE -0xBEBB 0x51C0 -0xBEBC 0x70AF -0xBEBD 0x7A98 -0xBEBE 0x63EA -0xBEBF 0x7A76 -0xBEC0 0x7EA0 -0xBEC1 0x7396 -0xBEC2 0x97ED -0xBEC3 0x4E45 -0xBEC4 0x7078 -0xBEC5 0x4E5D -0xBEC6 0x9152 -0xBEC7 0x53A9 -0xBEC8 0x6551 -0xBEC9 0x65E7 -0xBECA 0x81FC -0xBECB 0x8205 -0xBECC 0x548E -0xBECD 0x5C31 -0xBECE 0x759A -0xBECF 0x97A0 -0xBED0 0x62D8 -0xBED1 0x72D9 -0xBED2 0x75BD -0xBED3 0x5C45 -0xBED4 0x9A79 -0xBED5 0x83CA -0xBED6 0x5C40 -0xBED7 0x5480 -0xBED8 0x77E9 -0xBED9 0x4E3E -0xBEDA 0x6CAE -0xBEDB 0x805A -0xBEDC 0x62D2 -0xBEDD 0x636E -0xBEDE 0x5DE8 -0xBEDF 0x5177 -0xBEE0 0x8DDD -0xBEE1 0x8E1E -0xBEE2 0x952F -0xBEE3 0x4FF1 -0xBEE4 0x53E5 -0xBEE5 0x60E7 -0xBEE6 0x70AC -0xBEE7 0x5267 -0xBEE8 0x6350 -0xBEE9 0x9E43 -0xBEEA 0x5A1F -0xBEEB 0x5026 -0xBEEC 0x7737 -0xBEED 0x5377 -0xBEEE 0x7EE2 -0xBEEF 0x6485 -0xBEF0 0x652B -0xBEF1 0x6289 -0xBEF2 0x6398 -0xBEF3 0x5014 -0xBEF4 0x7235 -0xBEF5 0x89C9 -0xBEF6 0x51B3 -0xBEF7 0x8BC0 -0xBEF8 0x7EDD -0xBEF9 0x5747 -0xBEFA 0x83CC -0xBEFB 0x94A7 -0xBEFC 0x519B -0xBEFD 0x541B -0xBEFE 0x5CFB -0xBF40 0x7DFB -0xBF41 0x7DFC -0xBF42 0x7DFD -0xBF43 0x7DFE -0xBF44 0x7DFF -0xBF45 0x7E00 -0xBF46 0x7E01 -0xBF47 0x7E02 -0xBF48 0x7E03 -0xBF49 0x7E04 -0xBF4A 0x7E05 -0xBF4B 0x7E06 -0xBF4C 0x7E07 -0xBF4D 0x7E08 -0xBF4E 0x7E09 -0xBF4F 0x7E0A -0xBF50 0x7E0B -0xBF51 0x7E0C -0xBF52 0x7E0D -0xBF53 0x7E0E -0xBF54 0x7E0F -0xBF55 0x7E10 -0xBF56 0x7E11 -0xBF57 0x7E12 -0xBF58 0x7E13 -0xBF59 0x7E14 -0xBF5A 0x7E15 -0xBF5B 0x7E16 -0xBF5C 0x7E17 -0xBF5D 0x7E18 -0xBF5E 0x7E19 -0xBF5F 0x7E1A -0xBF60 0x7E1B -0xBF61 0x7E1C -0xBF62 0x7E1D -0xBF63 0x7E1E -0xBF64 0x7E1F -0xBF65 0x7E20 -0xBF66 0x7E21 -0xBF67 0x7E22 -0xBF68 0x7E23 -0xBF69 0x7E24 -0xBF6A 0x7E25 -0xBF6B 0x7E26 -0xBF6C 0x7E27 -0xBF6D 0x7E28 -0xBF6E 0x7E29 -0xBF6F 0x7E2A -0xBF70 0x7E2B -0xBF71 0x7E2C -0xBF72 0x7E2D -0xBF73 0x7E2E -0xBF74 0x7E2F -0xBF75 0x7E30 -0xBF76 0x7E31 -0xBF77 0x7E32 -0xBF78 0x7E33 -0xBF79 0x7E34 -0xBF7A 0x7E35 -0xBF7B 0x7E36 -0xBF7C 0x7E37 -0xBF7D 0x7E38 -0xBF7E 0x7E39 -0xBF80 0x7E3A -0xBF81 0x7E3C -0xBF82 0x7E3D -0xBF83 0x7E3E -0xBF84 0x7E3F -0xBF85 0x7E40 -0xBF86 0x7E42 -0xBF87 0x7E43 -0xBF88 0x7E44 -0xBF89 0x7E45 -0xBF8A 0x7E46 -0xBF8B 0x7E48 -0xBF8C 0x7E49 -0xBF8D 0x7E4A -0xBF8E 0x7E4B -0xBF8F 0x7E4C -0xBF90 0x7E4D -0xBF91 0x7E4E -0xBF92 0x7E4F -0xBF93 0x7E50 -0xBF94 0x7E51 -0xBF95 0x7E52 -0xBF96 0x7E53 -0xBF97 0x7E54 -0xBF98 0x7E55 -0xBF99 0x7E56 -0xBF9A 0x7E57 -0xBF9B 0x7E58 -0xBF9C 0x7E59 -0xBF9D 0x7E5A -0xBF9E 0x7E5B -0xBF9F 0x7E5C -0xBFA0 0x7E5D -0xBFA1 0x4FCA -0xBFA2 0x7AE3 -0xBFA3 0x6D5A -0xBFA4 0x90E1 -0xBFA5 0x9A8F -0xBFA6 0x5580 -0xBFA7 0x5496 -0xBFA8 0x5361 -0xBFA9 0x54AF -0xBFAA 0x5F00 -0xBFAB 0x63E9 -0xBFAC 0x6977 -0xBFAD 0x51EF -0xBFAE 0x6168 -0xBFAF 0x520A -0xBFB0 0x582A -0xBFB1 0x52D8 -0xBFB2 0x574E -0xBFB3 0x780D -0xBFB4 0x770B -0xBFB5 0x5EB7 -0xBFB6 0x6177 -0xBFB7 0x7CE0 -0xBFB8 0x625B -0xBFB9 0x6297 -0xBFBA 0x4EA2 -0xBFBB 0x7095 -0xBFBC 0x8003 -0xBFBD 0x62F7 -0xBFBE 0x70E4 -0xBFBF 0x9760 -0xBFC0 0x5777 -0xBFC1 0x82DB -0xBFC2 0x67EF -0xBFC3 0x68F5 -0xBFC4 0x78D5 -0xBFC5 0x9897 -0xBFC6 0x79D1 -0xBFC7 0x58F3 -0xBFC8 0x54B3 -0xBFC9 0x53EF -0xBFCA 0x6E34 -0xBFCB 0x514B -0xBFCC 0x523B -0xBFCD 0x5BA2 -0xBFCE 0x8BFE -0xBFCF 0x80AF -0xBFD0 0x5543 -0xBFD1 0x57A6 -0xBFD2 0x6073 -0xBFD3 0x5751 -0xBFD4 0x542D -0xBFD5 0x7A7A -0xBFD6 0x6050 -0xBFD7 0x5B54 -0xBFD8 0x63A7 -0xBFD9 0x62A0 -0xBFDA 0x53E3 -0xBFDB 0x6263 -0xBFDC 0x5BC7 -0xBFDD 0x67AF -0xBFDE 0x54ED -0xBFDF 0x7A9F -0xBFE0 0x82E6 -0xBFE1 0x9177 -0xBFE2 0x5E93 -0xBFE3 0x88E4 -0xBFE4 0x5938 -0xBFE5 0x57AE -0xBFE6 0x630E -0xBFE7 0x8DE8 -0xBFE8 0x80EF -0xBFE9 0x5757 -0xBFEA 0x7B77 -0xBFEB 0x4FA9 -0xBFEC 0x5FEB -0xBFED 0x5BBD -0xBFEE 0x6B3E -0xBFEF 0x5321 -0xBFF0 0x7B50 -0xBFF1 0x72C2 -0xBFF2 0x6846 -0xBFF3 0x77FF -0xBFF4 0x7736 -0xBFF5 0x65F7 -0xBFF6 0x51B5 -0xBFF7 0x4E8F -0xBFF8 0x76D4 -0xBFF9 0x5CBF -0xBFFA 0x7AA5 -0xBFFB 0x8475 -0xBFFC 0x594E -0xBFFD 0x9B41 -0xBFFE 0x5080 -0xC040 0x7E5E -0xC041 0x7E5F -0xC042 0x7E60 -0xC043 0x7E61 -0xC044 0x7E62 -0xC045 0x7E63 -0xC046 0x7E64 -0xC047 0x7E65 -0xC048 0x7E66 -0xC049 0x7E67 -0xC04A 0x7E68 -0xC04B 0x7E69 -0xC04C 0x7E6A -0xC04D 0x7E6B -0xC04E 0x7E6C -0xC04F 0x7E6D -0xC050 0x7E6E -0xC051 0x7E6F -0xC052 0x7E70 -0xC053 0x7E71 -0xC054 0x7E72 -0xC055 0x7E73 -0xC056 0x7E74 -0xC057 0x7E75 -0xC058 0x7E76 -0xC059 0x7E77 -0xC05A 0x7E78 -0xC05B 0x7E79 -0xC05C 0x7E7A -0xC05D 0x7E7B -0xC05E 0x7E7C -0xC05F 0x7E7D -0xC060 0x7E7E -0xC061 0x7E7F -0xC062 0x7E80 -0xC063 0x7E81 -0xC064 0x7E83 -0xC065 0x7E84 -0xC066 0x7E85 -0xC067 0x7E86 -0xC068 0x7E87 -0xC069 0x7E88 -0xC06A 0x7E89 -0xC06B 0x7E8A -0xC06C 0x7E8B -0xC06D 0x7E8C -0xC06E 0x7E8D -0xC06F 0x7E8E -0xC070 0x7E8F -0xC071 0x7E90 -0xC072 0x7E91 -0xC073 0x7E92 -0xC074 0x7E93 -0xC075 0x7E94 -0xC076 0x7E95 -0xC077 0x7E96 -0xC078 0x7E97 -0xC079 0x7E98 -0xC07A 0x7E99 -0xC07B 0x7E9A -0xC07C 0x7E9C -0xC07D 0x7E9D -0xC07E 0x7E9E -0xC080 0x7EAE -0xC081 0x7EB4 -0xC082 0x7EBB -0xC083 0x7EBC -0xC084 0x7ED6 -0xC085 0x7EE4 -0xC086 0x7EEC -0xC087 0x7EF9 -0xC088 0x7F0A -0xC089 0x7F10 -0xC08A 0x7F1E -0xC08B 0x7F37 -0xC08C 0x7F39 -0xC08D 0x7F3B -0xC08E 0x7F3C -0xC08F 0x7F3D -0xC090 0x7F3E -0xC091 0x7F3F -0xC092 0x7F40 -0xC093 0x7F41 -0xC094 0x7F43 -0xC095 0x7F46 -0xC096 0x7F47 -0xC097 0x7F48 -0xC098 0x7F49 -0xC099 0x7F4A -0xC09A 0x7F4B -0xC09B 0x7F4C -0xC09C 0x7F4D -0xC09D 0x7F4E -0xC09E 0x7F4F -0xC09F 0x7F52 -0xC0A0 0x7F53 -0xC0A1 0x9988 -0xC0A2 0x6127 -0xC0A3 0x6E83 -0xC0A4 0x5764 -0xC0A5 0x6606 -0xC0A6 0x6346 -0xC0A7 0x56F0 -0xC0A8 0x62EC -0xC0A9 0x6269 -0xC0AA 0x5ED3 -0xC0AB 0x9614 -0xC0AC 0x5783 -0xC0AD 0x62C9 -0xC0AE 0x5587 -0xC0AF 0x8721 -0xC0B0 0x814A -0xC0B1 0x8FA3 -0xC0B2 0x5566 -0xC0B3 0x83B1 -0xC0B4 0x6765 -0xC0B5 0x8D56 -0xC0B6 0x84DD -0xC0B7 0x5A6A -0xC0B8 0x680F -0xC0B9 0x62E6 -0xC0BA 0x7BEE -0xC0BB 0x9611 -0xC0BC 0x5170 -0xC0BD 0x6F9C -0xC0BE 0x8C30 -0xC0BF 0x63FD -0xC0C0 0x89C8 -0xC0C1 0x61D2 -0xC0C2 0x7F06 -0xC0C3 0x70C2 -0xC0C4 0x6EE5 -0xC0C5 0x7405 -0xC0C6 0x6994 -0xC0C7 0x72FC -0xC0C8 0x5ECA -0xC0C9 0x90CE -0xC0CA 0x6717 -0xC0CB 0x6D6A -0xC0CC 0x635E -0xC0CD 0x52B3 -0xC0CE 0x7262 -0xC0CF 0x8001 -0xC0D0 0x4F6C -0xC0D1 0x59E5 -0xC0D2 0x916A -0xC0D3 0x70D9 -0xC0D4 0x6D9D -0xC0D5 0x52D2 -0xC0D6 0x4E50 -0xC0D7 0x96F7 -0xC0D8 0x956D -0xC0D9 0x857E -0xC0DA 0x78CA -0xC0DB 0x7D2F -0xC0DC 0x5121 -0xC0DD 0x5792 -0xC0DE 0x64C2 -0xC0DF 0x808B -0xC0E0 0x7C7B -0xC0E1 0x6CEA -0xC0E2 0x68F1 -0xC0E3 0x695E -0xC0E4 0x51B7 -0xC0E5 0x5398 -0xC0E6 0x68A8 -0xC0E7 0x7281 -0xC0E8 0x9ECE -0xC0E9 0x7BF1 -0xC0EA 0x72F8 -0xC0EB 0x79BB -0xC0EC 0x6F13 -0xC0ED 0x7406 -0xC0EE 0x674E -0xC0EF 0x91CC -0xC0F0 0x9CA4 -0xC0F1 0x793C -0xC0F2 0x8389 -0xC0F3 0x8354 -0xC0F4 0x540F -0xC0F5 0x6817 -0xC0F6 0x4E3D -0xC0F7 0x5389 -0xC0F8 0x52B1 -0xC0F9 0x783E -0xC0FA 0x5386 -0xC0FB 0x5229 -0xC0FC 0x5088 -0xC0FD 0x4F8B -0xC0FE 0x4FD0 -0xC140 0x7F56 -0xC141 0x7F59 -0xC142 0x7F5B -0xC143 0x7F5C -0xC144 0x7F5D -0xC145 0x7F5E -0xC146 0x7F60 -0xC147 0x7F63 -0xC148 0x7F64 -0xC149 0x7F65 -0xC14A 0x7F66 -0xC14B 0x7F67 -0xC14C 0x7F6B -0xC14D 0x7F6C -0xC14E 0x7F6D -0xC14F 0x7F6F -0xC150 0x7F70 -0xC151 0x7F73 -0xC152 0x7F75 -0xC153 0x7F76 -0xC154 0x7F77 -0xC155 0x7F78 -0xC156 0x7F7A -0xC157 0x7F7B -0xC158 0x7F7C -0xC159 0x7F7D -0xC15A 0x7F7F -0xC15B 0x7F80 -0xC15C 0x7F82 -0xC15D 0x7F83 -0xC15E 0x7F84 -0xC15F 0x7F85 -0xC160 0x7F86 -0xC161 0x7F87 -0xC162 0x7F88 -0xC163 0x7F89 -0xC164 0x7F8B -0xC165 0x7F8D -0xC166 0x7F8F -0xC167 0x7F90 -0xC168 0x7F91 -0xC169 0x7F92 -0xC16A 0x7F93 -0xC16B 0x7F95 -0xC16C 0x7F96 -0xC16D 0x7F97 -0xC16E 0x7F98 -0xC16F 0x7F99 -0xC170 0x7F9B -0xC171 0x7F9C -0xC172 0x7FA0 -0xC173 0x7FA2 -0xC174 0x7FA3 -0xC175 0x7FA5 -0xC176 0x7FA6 -0xC177 0x7FA8 -0xC178 0x7FA9 -0xC179 0x7FAA -0xC17A 0x7FAB -0xC17B 0x7FAC -0xC17C 0x7FAD -0xC17D 0x7FAE -0xC17E 0x7FB1 -0xC180 0x7FB3 -0xC181 0x7FB4 -0xC182 0x7FB5 -0xC183 0x7FB6 -0xC184 0x7FB7 -0xC185 0x7FBA -0xC186 0x7FBB -0xC187 0x7FBE -0xC188 0x7FC0 -0xC189 0x7FC2 -0xC18A 0x7FC3 -0xC18B 0x7FC4 -0xC18C 0x7FC6 -0xC18D 0x7FC7 -0xC18E 0x7FC8 -0xC18F 0x7FC9 -0xC190 0x7FCB -0xC191 0x7FCD -0xC192 0x7FCF -0xC193 0x7FD0 -0xC194 0x7FD1 -0xC195 0x7FD2 -0xC196 0x7FD3 -0xC197 0x7FD6 -0xC198 0x7FD7 -0xC199 0x7FD9 -0xC19A 0x7FDA -0xC19B 0x7FDB -0xC19C 0x7FDC -0xC19D 0x7FDD -0xC19E 0x7FDE -0xC19F 0x7FE2 -0xC1A0 0x7FE3 -0xC1A1 0x75E2 -0xC1A2 0x7ACB -0xC1A3 0x7C92 -0xC1A4 0x6CA5 -0xC1A5 0x96B6 -0xC1A6 0x529B -0xC1A7 0x7483 -0xC1A8 0x54E9 -0xC1A9 0x4FE9 -0xC1AA 0x8054 -0xC1AB 0x83B2 -0xC1AC 0x8FDE -0xC1AD 0x9570 -0xC1AE 0x5EC9 -0xC1AF 0x601C -0xC1B0 0x6D9F -0xC1B1 0x5E18 -0xC1B2 0x655B -0xC1B3 0x8138 -0xC1B4 0x94FE -0xC1B5 0x604B -0xC1B6 0x70BC -0xC1B7 0x7EC3 -0xC1B8 0x7CAE -0xC1B9 0x51C9 -0xC1BA 0x6881 -0xC1BB 0x7CB1 -0xC1BC 0x826F -0xC1BD 0x4E24 -0xC1BE 0x8F86 -0xC1BF 0x91CF -0xC1C0 0x667E -0xC1C1 0x4EAE -0xC1C2 0x8C05 -0xC1C3 0x64A9 -0xC1C4 0x804A -0xC1C5 0x50DA -0xC1C6 0x7597 -0xC1C7 0x71CE -0xC1C8 0x5BE5 -0xC1C9 0x8FBD -0xC1CA 0x6F66 -0xC1CB 0x4E86 -0xC1CC 0x6482 -0xC1CD 0x9563 -0xC1CE 0x5ED6 -0xC1CF 0x6599 -0xC1D0 0x5217 -0xC1D1 0x88C2 -0xC1D2 0x70C8 -0xC1D3 0x52A3 -0xC1D4 0x730E -0xC1D5 0x7433 -0xC1D6 0x6797 -0xC1D7 0x78F7 -0xC1D8 0x9716 -0xC1D9 0x4E34 -0xC1DA 0x90BB -0xC1DB 0x9CDE -0xC1DC 0x6DCB -0xC1DD 0x51DB -0xC1DE 0x8D41 -0xC1DF 0x541D -0xC1E0 0x62CE -0xC1E1 0x73B2 -0xC1E2 0x83F1 -0xC1E3 0x96F6 -0xC1E4 0x9F84 -0xC1E5 0x94C3 -0xC1E6 0x4F36 -0xC1E7 0x7F9A -0xC1E8 0x51CC -0xC1E9 0x7075 -0xC1EA 0x9675 -0xC1EB 0x5CAD -0xC1EC 0x9886 -0xC1ED 0x53E6 -0xC1EE 0x4EE4 -0xC1EF 0x6E9C -0xC1F0 0x7409 -0xC1F1 0x69B4 -0xC1F2 0x786B -0xC1F3 0x998F -0xC1F4 0x7559 -0xC1F5 0x5218 -0xC1F6 0x7624 -0xC1F7 0x6D41 -0xC1F8 0x67F3 -0xC1F9 0x516D -0xC1FA 0x9F99 -0xC1FB 0x804B -0xC1FC 0x5499 -0xC1FD 0x7B3C -0xC1FE 0x7ABF -0xC240 0x7FE4 -0xC241 0x7FE7 -0xC242 0x7FE8 -0xC243 0x7FEA -0xC244 0x7FEB -0xC245 0x7FEC -0xC246 0x7FED -0xC247 0x7FEF -0xC248 0x7FF2 -0xC249 0x7FF4 -0xC24A 0x7FF5 -0xC24B 0x7FF6 -0xC24C 0x7FF7 -0xC24D 0x7FF8 -0xC24E 0x7FF9 -0xC24F 0x7FFA -0xC250 0x7FFD -0xC251 0x7FFE -0xC252 0x7FFF -0xC253 0x8002 -0xC254 0x8007 -0xC255 0x8008 -0xC256 0x8009 -0xC257 0x800A -0xC258 0x800E -0xC259 0x800F -0xC25A 0x8011 -0xC25B 0x8013 -0xC25C 0x801A -0xC25D 0x801B -0xC25E 0x801D -0xC25F 0x801E -0xC260 0x801F -0xC261 0x8021 -0xC262 0x8023 -0xC263 0x8024 -0xC264 0x802B -0xC265 0x802C -0xC266 0x802D -0xC267 0x802E -0xC268 0x802F -0xC269 0x8030 -0xC26A 0x8032 -0xC26B 0x8034 -0xC26C 0x8039 -0xC26D 0x803A -0xC26E 0x803C -0xC26F 0x803E -0xC270 0x8040 -0xC271 0x8041 -0xC272 0x8044 -0xC273 0x8045 -0xC274 0x8047 -0xC275 0x8048 -0xC276 0x8049 -0xC277 0x804E -0xC278 0x804F -0xC279 0x8050 -0xC27A 0x8051 -0xC27B 0x8053 -0xC27C 0x8055 -0xC27D 0x8056 -0xC27E 0x8057 -0xC280 0x8059 -0xC281 0x805B -0xC282 0x805C -0xC283 0x805D -0xC284 0x805E -0xC285 0x805F -0xC286 0x8060 -0xC287 0x8061 -0xC288 0x8062 -0xC289 0x8063 -0xC28A 0x8064 -0xC28B 0x8065 -0xC28C 0x8066 -0xC28D 0x8067 -0xC28E 0x8068 -0xC28F 0x806B -0xC290 0x806C -0xC291 0x806D -0xC292 0x806E -0xC293 0x806F -0xC294 0x8070 -0xC295 0x8072 -0xC296 0x8073 -0xC297 0x8074 -0xC298 0x8075 -0xC299 0x8076 -0xC29A 0x8077 -0xC29B 0x8078 -0xC29C 0x8079 -0xC29D 0x807A -0xC29E 0x807B -0xC29F 0x807C -0xC2A0 0x807D -0xC2A1 0x9686 -0xC2A2 0x5784 -0xC2A3 0x62E2 -0xC2A4 0x9647 -0xC2A5 0x697C -0xC2A6 0x5A04 -0xC2A7 0x6402 -0xC2A8 0x7BD3 -0xC2A9 0x6F0F -0xC2AA 0x964B -0xC2AB 0x82A6 -0xC2AC 0x5362 -0xC2AD 0x9885 -0xC2AE 0x5E90 -0xC2AF 0x7089 -0xC2B0 0x63B3 -0xC2B1 0x5364 -0xC2B2 0x864F -0xC2B3 0x9C81 -0xC2B4 0x9E93 -0xC2B5 0x788C -0xC2B6 0x9732 -0xC2B7 0x8DEF -0xC2B8 0x8D42 -0xC2B9 0x9E7F -0xC2BA 0x6F5E -0xC2BB 0x7984 -0xC2BC 0x5F55 -0xC2BD 0x9646 -0xC2BE 0x622E -0xC2BF 0x9A74 -0xC2C0 0x5415 -0xC2C1 0x94DD -0xC2C2 0x4FA3 -0xC2C3 0x65C5 -0xC2C4 0x5C65 -0xC2C5 0x5C61 -0xC2C6 0x7F15 -0xC2C7 0x8651 -0xC2C8 0x6C2F -0xC2C9 0x5F8B -0xC2CA 0x7387 -0xC2CB 0x6EE4 -0xC2CC 0x7EFF -0xC2CD 0x5CE6 -0xC2CE 0x631B -0xC2CF 0x5B6A -0xC2D0 0x6EE6 -0xC2D1 0x5375 -0xC2D2 0x4E71 -0xC2D3 0x63A0 -0xC2D4 0x7565 -0xC2D5 0x62A1 -0xC2D6 0x8F6E -0xC2D7 0x4F26 -0xC2D8 0x4ED1 -0xC2D9 0x6CA6 -0xC2DA 0x7EB6 -0xC2DB 0x8BBA -0xC2DC 0x841D -0xC2DD 0x87BA -0xC2DE 0x7F57 -0xC2DF 0x903B -0xC2E0 0x9523 -0xC2E1 0x7BA9 -0xC2E2 0x9AA1 -0xC2E3 0x88F8 -0xC2E4 0x843D -0xC2E5 0x6D1B -0xC2E6 0x9A86 -0xC2E7 0x7EDC -0xC2E8 0x5988 -0xC2E9 0x9EBB -0xC2EA 0x739B -0xC2EB 0x7801 -0xC2EC 0x8682 -0xC2ED 0x9A6C -0xC2EE 0x9A82 -0xC2EF 0x561B -0xC2F0 0x5417 -0xC2F1 0x57CB -0xC2F2 0x4E70 -0xC2F3 0x9EA6 -0xC2F4 0x5356 -0xC2F5 0x8FC8 -0xC2F6 0x8109 -0xC2F7 0x7792 -0xC2F8 0x9992 -0xC2F9 0x86EE -0xC2FA 0x6EE1 -0xC2FB 0x8513 -0xC2FC 0x66FC -0xC2FD 0x6162 -0xC2FE 0x6F2B -0xC340 0x807E -0xC341 0x8081 -0xC342 0x8082 -0xC343 0x8085 -0xC344 0x8088 -0xC345 0x808A -0xC346 0x808D -0xC347 0x808E -0xC348 0x808F -0xC349 0x8090 -0xC34A 0x8091 -0xC34B 0x8092 -0xC34C 0x8094 -0xC34D 0x8095 -0xC34E 0x8097 -0xC34F 0x8099 -0xC350 0x809E -0xC351 0x80A3 -0xC352 0x80A6 -0xC353 0x80A7 -0xC354 0x80A8 -0xC355 0x80AC -0xC356 0x80B0 -0xC357 0x80B3 -0xC358 0x80B5 -0xC359 0x80B6 -0xC35A 0x80B8 -0xC35B 0x80B9 -0xC35C 0x80BB -0xC35D 0x80C5 -0xC35E 0x80C7 -0xC35F 0x80C8 -0xC360 0x80C9 -0xC361 0x80CA -0xC362 0x80CB -0xC363 0x80CF -0xC364 0x80D0 -0xC365 0x80D1 -0xC366 0x80D2 -0xC367 0x80D3 -0xC368 0x80D4 -0xC369 0x80D5 -0xC36A 0x80D8 -0xC36B 0x80DF -0xC36C 0x80E0 -0xC36D 0x80E2 -0xC36E 0x80E3 -0xC36F 0x80E6 -0xC370 0x80EE -0xC371 0x80F5 -0xC372 0x80F7 -0xC373 0x80F9 -0xC374 0x80FB -0xC375 0x80FE -0xC376 0x80FF -0xC377 0x8100 -0xC378 0x8101 -0xC379 0x8103 -0xC37A 0x8104 -0xC37B 0x8105 -0xC37C 0x8107 -0xC37D 0x8108 -0xC37E 0x810B -0xC380 0x810C -0xC381 0x8115 -0xC382 0x8117 -0xC383 0x8119 -0xC384 0x811B -0xC385 0x811C -0xC386 0x811D -0xC387 0x811F -0xC388 0x8120 -0xC389 0x8121 -0xC38A 0x8122 -0xC38B 0x8123 -0xC38C 0x8124 -0xC38D 0x8125 -0xC38E 0x8126 -0xC38F 0x8127 -0xC390 0x8128 -0xC391 0x8129 -0xC392 0x812A -0xC393 0x812B -0xC394 0x812D -0xC395 0x812E -0xC396 0x8130 -0xC397 0x8133 -0xC398 0x8134 -0xC399 0x8135 -0xC39A 0x8137 -0xC39B 0x8139 -0xC39C 0x813A -0xC39D 0x813B -0xC39E 0x813C -0xC39F 0x813D -0xC3A0 0x813F -0xC3A1 0x8C29 -0xC3A2 0x8292 -0xC3A3 0x832B -0xC3A4 0x76F2 -0xC3A5 0x6C13 -0xC3A6 0x5FD9 -0xC3A7 0x83BD -0xC3A8 0x732B -0xC3A9 0x8305 -0xC3AA 0x951A -0xC3AB 0x6BDB -0xC3AC 0x77DB -0xC3AD 0x94C6 -0xC3AE 0x536F -0xC3AF 0x8302 -0xC3B0 0x5192 -0xC3B1 0x5E3D -0xC3B2 0x8C8C -0xC3B3 0x8D38 -0xC3B4 0x4E48 -0xC3B5 0x73AB -0xC3B6 0x679A -0xC3B7 0x6885 -0xC3B8 0x9176 -0xC3B9 0x9709 -0xC3BA 0x7164 -0xC3BB 0x6CA1 -0xC3BC 0x7709 -0xC3BD 0x5A92 -0xC3BE 0x9541 -0xC3BF 0x6BCF -0xC3C0 0x7F8E -0xC3C1 0x6627 -0xC3C2 0x5BD0 -0xC3C3 0x59B9 -0xC3C4 0x5A9A -0xC3C5 0x95E8 -0xC3C6 0x95F7 -0xC3C7 0x4EEC -0xC3C8 0x840C -0xC3C9 0x8499 -0xC3CA 0x6AAC -0xC3CB 0x76DF -0xC3CC 0x9530 -0xC3CD 0x731B -0xC3CE 0x68A6 -0xC3CF 0x5B5F -0xC3D0 0x772F -0xC3D1 0x919A -0xC3D2 0x9761 -0xC3D3 0x7CDC -0xC3D4 0x8FF7 -0xC3D5 0x8C1C -0xC3D6 0x5F25 -0xC3D7 0x7C73 -0xC3D8 0x79D8 -0xC3D9 0x89C5 -0xC3DA 0x6CCC -0xC3DB 0x871C -0xC3DC 0x5BC6 -0xC3DD 0x5E42 -0xC3DE 0x68C9 -0xC3DF 0x7720 -0xC3E0 0x7EF5 -0xC3E1 0x5195 -0xC3E2 0x514D -0xC3E3 0x52C9 -0xC3E4 0x5A29 -0xC3E5 0x7F05 -0xC3E6 0x9762 -0xC3E7 0x82D7 -0xC3E8 0x63CF -0xC3E9 0x7784 -0xC3EA 0x85D0 -0xC3EB 0x79D2 -0xC3EC 0x6E3A -0xC3ED 0x5E99 -0xC3EE 0x5999 -0xC3EF 0x8511 -0xC3F0 0x706D -0xC3F1 0x6C11 -0xC3F2 0x62BF -0xC3F3 0x76BF -0xC3F4 0x654F -0xC3F5 0x60AF -0xC3F6 0x95FD -0xC3F7 0x660E -0xC3F8 0x879F -0xC3F9 0x9E23 -0xC3FA 0x94ED -0xC3FB 0x540D -0xC3FC 0x547D -0xC3FD 0x8C2C -0xC3FE 0x6478 -0xC440 0x8140 -0xC441 0x8141 -0xC442 0x8142 -0xC443 0x8143 -0xC444 0x8144 -0xC445 0x8145 -0xC446 0x8147 -0xC447 0x8149 -0xC448 0x814D -0xC449 0x814E -0xC44A 0x814F -0xC44B 0x8152 -0xC44C 0x8156 -0xC44D 0x8157 -0xC44E 0x8158 -0xC44F 0x815B -0xC450 0x815C -0xC451 0x815D -0xC452 0x815E -0xC453 0x815F -0xC454 0x8161 -0xC455 0x8162 -0xC456 0x8163 -0xC457 0x8164 -0xC458 0x8166 -0xC459 0x8168 -0xC45A 0x816A -0xC45B 0x816B -0xC45C 0x816C -0xC45D 0x816F -0xC45E 0x8172 -0xC45F 0x8173 -0xC460 0x8175 -0xC461 0x8176 -0xC462 0x8177 -0xC463 0x8178 -0xC464 0x8181 -0xC465 0x8183 -0xC466 0x8184 -0xC467 0x8185 -0xC468 0x8186 -0xC469 0x8187 -0xC46A 0x8189 -0xC46B 0x818B -0xC46C 0x818C -0xC46D 0x818D -0xC46E 0x818E -0xC46F 0x8190 -0xC470 0x8192 -0xC471 0x8193 -0xC472 0x8194 -0xC473 0x8195 -0xC474 0x8196 -0xC475 0x8197 -0xC476 0x8199 -0xC477 0x819A -0xC478 0x819E -0xC479 0x819F -0xC47A 0x81A0 -0xC47B 0x81A1 -0xC47C 0x81A2 -0xC47D 0x81A4 -0xC47E 0x81A5 -0xC480 0x81A7 -0xC481 0x81A9 -0xC482 0x81AB -0xC483 0x81AC -0xC484 0x81AD -0xC485 0x81AE -0xC486 0x81AF -0xC487 0x81B0 -0xC488 0x81B1 -0xC489 0x81B2 -0xC48A 0x81B4 -0xC48B 0x81B5 -0xC48C 0x81B6 -0xC48D 0x81B7 -0xC48E 0x81B8 -0xC48F 0x81B9 -0xC490 0x81BC -0xC491 0x81BD -0xC492 0x81BE -0xC493 0x81BF -0xC494 0x81C4 -0xC495 0x81C5 -0xC496 0x81C7 -0xC497 0x81C8 -0xC498 0x81C9 -0xC499 0x81CB -0xC49A 0x81CD -0xC49B 0x81CE -0xC49C 0x81CF -0xC49D 0x81D0 -0xC49E 0x81D1 -0xC49F 0x81D2 -0xC4A0 0x81D3 -0xC4A1 0x6479 -0xC4A2 0x8611 -0xC4A3 0x6A21 -0xC4A4 0x819C -0xC4A5 0x78E8 -0xC4A6 0x6469 -0xC4A7 0x9B54 -0xC4A8 0x62B9 -0xC4A9 0x672B -0xC4AA 0x83AB -0xC4AB 0x58A8 -0xC4AC 0x9ED8 -0xC4AD 0x6CAB -0xC4AE 0x6F20 -0xC4AF 0x5BDE -0xC4B0 0x964C -0xC4B1 0x8C0B -0xC4B2 0x725F -0xC4B3 0x67D0 -0xC4B4 0x62C7 -0xC4B5 0x7261 -0xC4B6 0x4EA9 -0xC4B7 0x59C6 -0xC4B8 0x6BCD -0xC4B9 0x5893 -0xC4BA 0x66AE -0xC4BB 0x5E55 -0xC4BC 0x52DF -0xC4BD 0x6155 -0xC4BE 0x6728 -0xC4BF 0x76EE -0xC4C0 0x7766 -0xC4C1 0x7267 -0xC4C2 0x7A46 -0xC4C3 0x62FF -0xC4C4 0x54EA -0xC4C5 0x5450 -0xC4C6 0x94A0 -0xC4C7 0x90A3 -0xC4C8 0x5A1C -0xC4C9 0x7EB3 -0xC4CA 0x6C16 -0xC4CB 0x4E43 -0xC4CC 0x5976 -0xC4CD 0x8010 -0xC4CE 0x5948 -0xC4CF 0x5357 -0xC4D0 0x7537 -0xC4D1 0x96BE -0xC4D2 0x56CA -0xC4D3 0x6320 -0xC4D4 0x8111 -0xC4D5 0x607C -0xC4D6 0x95F9 -0xC4D7 0x6DD6 -0xC4D8 0x5462 -0xC4D9 0x9981 -0xC4DA 0x5185 -0xC4DB 0x5AE9 -0xC4DC 0x80FD -0xC4DD 0x59AE -0xC4DE 0x9713 -0xC4DF 0x502A -0xC4E0 0x6CE5 -0xC4E1 0x5C3C -0xC4E2 0x62DF -0xC4E3 0x4F60 -0xC4E4 0x533F -0xC4E5 0x817B -0xC4E6 0x9006 -0xC4E7 0x6EBA -0xC4E8 0x852B -0xC4E9 0x62C8 -0xC4EA 0x5E74 -0xC4EB 0x78BE -0xC4EC 0x64B5 -0xC4ED 0x637B -0xC4EE 0x5FF5 -0xC4EF 0x5A18 -0xC4F0 0x917F -0xC4F1 0x9E1F -0xC4F2 0x5C3F -0xC4F3 0x634F -0xC4F4 0x8042 -0xC4F5 0x5B7D -0xC4F6 0x556E -0xC4F7 0x954A -0xC4F8 0x954D -0xC4F9 0x6D85 -0xC4FA 0x60A8 -0xC4FB 0x67E0 -0xC4FC 0x72DE -0xC4FD 0x51DD -0xC4FE 0x5B81 -0xC540 0x81D4 -0xC541 0x81D5 -0xC542 0x81D6 -0xC543 0x81D7 -0xC544 0x81D8 -0xC545 0x81D9 -0xC546 0x81DA -0xC547 0x81DB -0xC548 0x81DC -0xC549 0x81DD -0xC54A 0x81DE -0xC54B 0x81DF -0xC54C 0x81E0 -0xC54D 0x81E1 -0xC54E 0x81E2 -0xC54F 0x81E4 -0xC550 0x81E5 -0xC551 0x81E6 -0xC552 0x81E8 -0xC553 0x81E9 -0xC554 0x81EB -0xC555 0x81EE -0xC556 0x81EF -0xC557 0x81F0 -0xC558 0x81F1 -0xC559 0x81F2 -0xC55A 0x81F5 -0xC55B 0x81F6 -0xC55C 0x81F7 -0xC55D 0x81F8 -0xC55E 0x81F9 -0xC55F 0x81FA -0xC560 0x81FD -0xC561 0x81FF -0xC562 0x8203 -0xC563 0x8207 -0xC564 0x8208 -0xC565 0x8209 -0xC566 0x820A -0xC567 0x820B -0xC568 0x820E -0xC569 0x820F -0xC56A 0x8211 -0xC56B 0x8213 -0xC56C 0x8215 -0xC56D 0x8216 -0xC56E 0x8217 -0xC56F 0x8218 -0xC570 0x8219 -0xC571 0x821A -0xC572 0x821D -0xC573 0x8220 -0xC574 0x8224 -0xC575 0x8225 -0xC576 0x8226 -0xC577 0x8227 -0xC578 0x8229 -0xC579 0x822E -0xC57A 0x8232 -0xC57B 0x823A -0xC57C 0x823C -0xC57D 0x823D -0xC57E 0x823F -0xC580 0x8240 -0xC581 0x8241 -0xC582 0x8242 -0xC583 0x8243 -0xC584 0x8245 -0xC585 0x8246 -0xC586 0x8248 -0xC587 0x824A -0xC588 0x824C -0xC589 0x824D -0xC58A 0x824E -0xC58B 0x8250 -0xC58C 0x8251 -0xC58D 0x8252 -0xC58E 0x8253 -0xC58F 0x8254 -0xC590 0x8255 -0xC591 0x8256 -0xC592 0x8257 -0xC593 0x8259 -0xC594 0x825B -0xC595 0x825C -0xC596 0x825D -0xC597 0x825E -0xC598 0x8260 -0xC599 0x8261 -0xC59A 0x8262 -0xC59B 0x8263 -0xC59C 0x8264 -0xC59D 0x8265 -0xC59E 0x8266 -0xC59F 0x8267 -0xC5A0 0x8269 -0xC5A1 0x62E7 -0xC5A2 0x6CDE -0xC5A3 0x725B -0xC5A4 0x626D -0xC5A5 0x94AE -0xC5A6 0x7EBD -0xC5A7 0x8113 -0xC5A8 0x6D53 -0xC5A9 0x519C -0xC5AA 0x5F04 -0xC5AB 0x5974 -0xC5AC 0x52AA -0xC5AD 0x6012 -0xC5AE 0x5973 -0xC5AF 0x6696 -0xC5B0 0x8650 -0xC5B1 0x759F -0xC5B2 0x632A -0xC5B3 0x61E6 -0xC5B4 0x7CEF -0xC5B5 0x8BFA -0xC5B6 0x54E6 -0xC5B7 0x6B27 -0xC5B8 0x9E25 -0xC5B9 0x6BB4 -0xC5BA 0x85D5 -0xC5BB 0x5455 -0xC5BC 0x5076 -0xC5BD 0x6CA4 -0xC5BE 0x556A -0xC5BF 0x8DB4 -0xC5C0 0x722C -0xC5C1 0x5E15 -0xC5C2 0x6015 -0xC5C3 0x7436 -0xC5C4 0x62CD -0xC5C5 0x6392 -0xC5C6 0x724C -0xC5C7 0x5F98 -0xC5C8 0x6E43 -0xC5C9 0x6D3E -0xC5CA 0x6500 -0xC5CB 0x6F58 -0xC5CC 0x76D8 -0xC5CD 0x78D0 -0xC5CE 0x76FC -0xC5CF 0x7554 -0xC5D0 0x5224 -0xC5D1 0x53DB -0xC5D2 0x4E53 -0xC5D3 0x5E9E -0xC5D4 0x65C1 -0xC5D5 0x802A -0xC5D6 0x80D6 -0xC5D7 0x629B -0xC5D8 0x5486 -0xC5D9 0x5228 -0xC5DA 0x70AE -0xC5DB 0x888D -0xC5DC 0x8DD1 -0xC5DD 0x6CE1 -0xC5DE 0x5478 -0xC5DF 0x80DA -0xC5E0 0x57F9 -0xC5E1 0x88F4 -0xC5E2 0x8D54 -0xC5E3 0x966A -0xC5E4 0x914D -0xC5E5 0x4F69 -0xC5E6 0x6C9B -0xC5E7 0x55B7 -0xC5E8 0x76C6 -0xC5E9 0x7830 -0xC5EA 0x62A8 -0xC5EB 0x70F9 -0xC5EC 0x6F8E -0xC5ED 0x5F6D -0xC5EE 0x84EC -0xC5EF 0x68DA -0xC5F0 0x787C -0xC5F1 0x7BF7 -0xC5F2 0x81A8 -0xC5F3 0x670B -0xC5F4 0x9E4F -0xC5F5 0x6367 -0xC5F6 0x78B0 -0xC5F7 0x576F -0xC5F8 0x7812 -0xC5F9 0x9739 -0xC5FA 0x6279 -0xC5FB 0x62AB -0xC5FC 0x5288 -0xC5FD 0x7435 -0xC5FE 0x6BD7 -0xC640 0x826A -0xC641 0x826B -0xC642 0x826C -0xC643 0x826D -0xC644 0x8271 -0xC645 0x8275 -0xC646 0x8276 -0xC647 0x8277 -0xC648 0x8278 -0xC649 0x827B -0xC64A 0x827C -0xC64B 0x8280 -0xC64C 0x8281 -0xC64D 0x8283 -0xC64E 0x8285 -0xC64F 0x8286 -0xC650 0x8287 -0xC651 0x8289 -0xC652 0x828C -0xC653 0x8290 -0xC654 0x8293 -0xC655 0x8294 -0xC656 0x8295 -0xC657 0x8296 -0xC658 0x829A -0xC659 0x829B -0xC65A 0x829E -0xC65B 0x82A0 -0xC65C 0x82A2 -0xC65D 0x82A3 -0xC65E 0x82A7 -0xC65F 0x82B2 -0xC660 0x82B5 -0xC661 0x82B6 -0xC662 0x82BA -0xC663 0x82BB -0xC664 0x82BC -0xC665 0x82BF -0xC666 0x82C0 -0xC667 0x82C2 -0xC668 0x82C3 -0xC669 0x82C5 -0xC66A 0x82C6 -0xC66B 0x82C9 -0xC66C 0x82D0 -0xC66D 0x82D6 -0xC66E 0x82D9 -0xC66F 0x82DA -0xC670 0x82DD -0xC671 0x82E2 -0xC672 0x82E7 -0xC673 0x82E8 -0xC674 0x82E9 -0xC675 0x82EA -0xC676 0x82EC -0xC677 0x82ED -0xC678 0x82EE -0xC679 0x82F0 -0xC67A 0x82F2 -0xC67B 0x82F3 -0xC67C 0x82F5 -0xC67D 0x82F6 -0xC67E 0x82F8 -0xC680 0x82FA -0xC681 0x82FC -0xC682 0x82FD -0xC683 0x82FE -0xC684 0x82FF -0xC685 0x8300 -0xC686 0x830A -0xC687 0x830B -0xC688 0x830D -0xC689 0x8310 -0xC68A 0x8312 -0xC68B 0x8313 -0xC68C 0x8316 -0xC68D 0x8318 -0xC68E 0x8319 -0xC68F 0x831D -0xC690 0x831E -0xC691 0x831F -0xC692 0x8320 -0xC693 0x8321 -0xC694 0x8322 -0xC695 0x8323 -0xC696 0x8324 -0xC697 0x8325 -0xC698 0x8326 -0xC699 0x8329 -0xC69A 0x832A -0xC69B 0x832E -0xC69C 0x8330 -0xC69D 0x8332 -0xC69E 0x8337 -0xC69F 0x833B -0xC6A0 0x833D -0xC6A1 0x5564 -0xC6A2 0x813E -0xC6A3 0x75B2 -0xC6A4 0x76AE -0xC6A5 0x5339 -0xC6A6 0x75DE -0xC6A7 0x50FB -0xC6A8 0x5C41 -0xC6A9 0x8B6C -0xC6AA 0x7BC7 -0xC6AB 0x504F -0xC6AC 0x7247 -0xC6AD 0x9A97 -0xC6AE 0x98D8 -0xC6AF 0x6F02 -0xC6B0 0x74E2 -0xC6B1 0x7968 -0xC6B2 0x6487 -0xC6B3 0x77A5 -0xC6B4 0x62FC -0xC6B5 0x9891 -0xC6B6 0x8D2B -0xC6B7 0x54C1 -0xC6B8 0x8058 -0xC6B9 0x4E52 -0xC6BA 0x576A -0xC6BB 0x82F9 -0xC6BC 0x840D -0xC6BD 0x5E73 -0xC6BE 0x51ED -0xC6BF 0x74F6 -0xC6C0 0x8BC4 -0xC6C1 0x5C4F -0xC6C2 0x5761 -0xC6C3 0x6CFC -0xC6C4 0x9887 -0xC6C5 0x5A46 -0xC6C6 0x7834 -0xC6C7 0x9B44 -0xC6C8 0x8FEB -0xC6C9 0x7C95 -0xC6CA 0x5256 -0xC6CB 0x6251 -0xC6CC 0x94FA -0xC6CD 0x4EC6 -0xC6CE 0x8386 -0xC6CF 0x8461 -0xC6D0 0x83E9 -0xC6D1 0x84B2 -0xC6D2 0x57D4 -0xC6D3 0x6734 -0xC6D4 0x5703 -0xC6D5 0x666E -0xC6D6 0x6D66 -0xC6D7 0x8C31 -0xC6D8 0x66DD -0xC6D9 0x7011 -0xC6DA 0x671F -0xC6DB 0x6B3A -0xC6DC 0x6816 -0xC6DD 0x621A -0xC6DE 0x59BB -0xC6DF 0x4E03 -0xC6E0 0x51C4 -0xC6E1 0x6F06 -0xC6E2 0x67D2 -0xC6E3 0x6C8F -0xC6E4 0x5176 -0xC6E5 0x68CB -0xC6E6 0x5947 -0xC6E7 0x6B67 -0xC6E8 0x7566 -0xC6E9 0x5D0E -0xC6EA 0x8110 -0xC6EB 0x9F50 -0xC6EC 0x65D7 -0xC6ED 0x7948 -0xC6EE 0x7941 -0xC6EF 0x9A91 -0xC6F0 0x8D77 -0xC6F1 0x5C82 -0xC6F2 0x4E5E -0xC6F3 0x4F01 -0xC6F4 0x542F -0xC6F5 0x5951 -0xC6F6 0x780C -0xC6F7 0x5668 -0xC6F8 0x6C14 -0xC6F9 0x8FC4 -0xC6FA 0x5F03 -0xC6FB 0x6C7D -0xC6FC 0x6CE3 -0xC6FD 0x8BAB -0xC6FE 0x6390 -0xC740 0x833E -0xC741 0x833F -0xC742 0x8341 -0xC743 0x8342 -0xC744 0x8344 -0xC745 0x8345 -0xC746 0x8348 -0xC747 0x834A -0xC748 0x834B -0xC749 0x834C -0xC74A 0x834D -0xC74B 0x834E -0xC74C 0x8353 -0xC74D 0x8355 -0xC74E 0x8356 -0xC74F 0x8357 -0xC750 0x8358 -0xC751 0x8359 -0xC752 0x835D -0xC753 0x8362 -0xC754 0x8370 -0xC755 0x8371 -0xC756 0x8372 -0xC757 0x8373 -0xC758 0x8374 -0xC759 0x8375 -0xC75A 0x8376 -0xC75B 0x8379 -0xC75C 0x837A -0xC75D 0x837E -0xC75E 0x837F -0xC75F 0x8380 -0xC760 0x8381 -0xC761 0x8382 -0xC762 0x8383 -0xC763 0x8384 -0xC764 0x8387 -0xC765 0x8388 -0xC766 0x838A -0xC767 0x838B -0xC768 0x838C -0xC769 0x838D -0xC76A 0x838F -0xC76B 0x8390 -0xC76C 0x8391 -0xC76D 0x8394 -0xC76E 0x8395 -0xC76F 0x8396 -0xC770 0x8397 -0xC771 0x8399 -0xC772 0x839A -0xC773 0x839D -0xC774 0x839F -0xC775 0x83A1 -0xC776 0x83A2 -0xC777 0x83A3 -0xC778 0x83A4 -0xC779 0x83A5 -0xC77A 0x83A6 -0xC77B 0x83A7 -0xC77C 0x83AC -0xC77D 0x83AD -0xC77E 0x83AE -0xC780 0x83AF -0xC781 0x83B5 -0xC782 0x83BB -0xC783 0x83BE -0xC784 0x83BF -0xC785 0x83C2 -0xC786 0x83C3 -0xC787 0x83C4 -0xC788 0x83C6 -0xC789 0x83C8 -0xC78A 0x83C9 -0xC78B 0x83CB -0xC78C 0x83CD -0xC78D 0x83CE -0xC78E 0x83D0 -0xC78F 0x83D1 -0xC790 0x83D2 -0xC791 0x83D3 -0xC792 0x83D5 -0xC793 0x83D7 -0xC794 0x83D9 -0xC795 0x83DA -0xC796 0x83DB -0xC797 0x83DE -0xC798 0x83E2 -0xC799 0x83E3 -0xC79A 0x83E4 -0xC79B 0x83E6 -0xC79C 0x83E7 -0xC79D 0x83E8 -0xC79E 0x83EB -0xC79F 0x83EC -0xC7A0 0x83ED -0xC7A1 0x6070 -0xC7A2 0x6D3D -0xC7A3 0x7275 -0xC7A4 0x6266 -0xC7A5 0x948E -0xC7A6 0x94C5 -0xC7A7 0x5343 -0xC7A8 0x8FC1 -0xC7A9 0x7B7E -0xC7AA 0x4EDF -0xC7AB 0x8C26 -0xC7AC 0x4E7E -0xC7AD 0x9ED4 -0xC7AE 0x94B1 -0xC7AF 0x94B3 -0xC7B0 0x524D -0xC7B1 0x6F5C -0xC7B2 0x9063 -0xC7B3 0x6D45 -0xC7B4 0x8C34 -0xC7B5 0x5811 -0xC7B6 0x5D4C -0xC7B7 0x6B20 -0xC7B8 0x6B49 -0xC7B9 0x67AA -0xC7BA 0x545B -0xC7BB 0x8154 -0xC7BC 0x7F8C -0xC7BD 0x5899 -0xC7BE 0x8537 -0xC7BF 0x5F3A -0xC7C0 0x62A2 -0xC7C1 0x6A47 -0xC7C2 0x9539 -0xC7C3 0x6572 -0xC7C4 0x6084 -0xC7C5 0x6865 -0xC7C6 0x77A7 -0xC7C7 0x4E54 -0xC7C8 0x4FA8 -0xC7C9 0x5DE7 -0xC7CA 0x9798 -0xC7CB 0x64AC -0xC7CC 0x7FD8 -0xC7CD 0x5CED -0xC7CE 0x4FCF -0xC7CF 0x7A8D -0xC7D0 0x5207 -0xC7D1 0x8304 -0xC7D2 0x4E14 -0xC7D3 0x602F -0xC7D4 0x7A83 -0xC7D5 0x94A6 -0xC7D6 0x4FB5 -0xC7D7 0x4EB2 -0xC7D8 0x79E6 -0xC7D9 0x7434 -0xC7DA 0x52E4 -0xC7DB 0x82B9 -0xC7DC 0x64D2 -0xC7DD 0x79BD -0xC7DE 0x5BDD -0xC7DF 0x6C81 -0xC7E0 0x9752 -0xC7E1 0x8F7B -0xC7E2 0x6C22 -0xC7E3 0x503E -0xC7E4 0x537F -0xC7E5 0x6E05 -0xC7E6 0x64CE -0xC7E7 0x6674 -0xC7E8 0x6C30 -0xC7E9 0x60C5 -0xC7EA 0x9877 -0xC7EB 0x8BF7 -0xC7EC 0x5E86 -0xC7ED 0x743C -0xC7EE 0x7A77 -0xC7EF 0x79CB -0xC7F0 0x4E18 -0xC7F1 0x90B1 -0xC7F2 0x7403 -0xC7F3 0x6C42 -0xC7F4 0x56DA -0xC7F5 0x914B -0xC7F6 0x6CC5 -0xC7F7 0x8D8B -0xC7F8 0x533A -0xC7F9 0x86C6 -0xC7FA 0x66F2 -0xC7FB 0x8EAF -0xC7FC 0x5C48 -0xC7FD 0x9A71 -0xC7FE 0x6E20 -0xC840 0x83EE -0xC841 0x83EF -0xC842 0x83F3 -0xC843 0x83F4 -0xC844 0x83F5 -0xC845 0x83F6 -0xC846 0x83F7 -0xC847 0x83FA -0xC848 0x83FB -0xC849 0x83FC -0xC84A 0x83FE -0xC84B 0x83FF -0xC84C 0x8400 -0xC84D 0x8402 -0xC84E 0x8405 -0xC84F 0x8407 -0xC850 0x8408 -0xC851 0x8409 -0xC852 0x840A -0xC853 0x8410 -0xC854 0x8412 -0xC855 0x8413 -0xC856 0x8414 -0xC857 0x8415 -0xC858 0x8416 -0xC859 0x8417 -0xC85A 0x8419 -0xC85B 0x841A -0xC85C 0x841B -0xC85D 0x841E -0xC85E 0x841F -0xC85F 0x8420 -0xC860 0x8421 -0xC861 0x8422 -0xC862 0x8423 -0xC863 0x8429 -0xC864 0x842A -0xC865 0x842B -0xC866 0x842C -0xC867 0x842D -0xC868 0x842E -0xC869 0x842F -0xC86A 0x8430 -0xC86B 0x8432 -0xC86C 0x8433 -0xC86D 0x8434 -0xC86E 0x8435 -0xC86F 0x8436 -0xC870 0x8437 -0xC871 0x8439 -0xC872 0x843A -0xC873 0x843B -0xC874 0x843E -0xC875 0x843F -0xC876 0x8440 -0xC877 0x8441 -0xC878 0x8442 -0xC879 0x8443 -0xC87A 0x8444 -0xC87B 0x8445 -0xC87C 0x8447 -0xC87D 0x8448 -0xC87E 0x8449 -0xC880 0x844A -0xC881 0x844B -0xC882 0x844C -0xC883 0x844D -0xC884 0x844E -0xC885 0x844F -0xC886 0x8450 -0xC887 0x8452 -0xC888 0x8453 -0xC889 0x8454 -0xC88A 0x8455 -0xC88B 0x8456 -0xC88C 0x8458 -0xC88D 0x845D -0xC88E 0x845E -0xC88F 0x845F -0xC890 0x8460 -0xC891 0x8462 -0xC892 0x8464 -0xC893 0x8465 -0xC894 0x8466 -0xC895 0x8467 -0xC896 0x8468 -0xC897 0x846A -0xC898 0x846E -0xC899 0x846F -0xC89A 0x8470 -0xC89B 0x8472 -0xC89C 0x8474 -0xC89D 0x8477 -0xC89E 0x8479 -0xC89F 0x847B -0xC8A0 0x847C -0xC8A1 0x53D6 -0xC8A2 0x5A36 -0xC8A3 0x9F8B -0xC8A4 0x8DA3 -0xC8A5 0x53BB -0xC8A6 0x5708 -0xC8A7 0x98A7 -0xC8A8 0x6743 -0xC8A9 0x919B -0xC8AA 0x6CC9 -0xC8AB 0x5168 -0xC8AC 0x75CA -0xC8AD 0x62F3 -0xC8AE 0x72AC -0xC8AF 0x5238 -0xC8B0 0x529D -0xC8B1 0x7F3A -0xC8B2 0x7094 -0xC8B3 0x7638 -0xC8B4 0x5374 -0xC8B5 0x9E4A -0xC8B6 0x69B7 -0xC8B7 0x786E -0xC8B8 0x96C0 -0xC8B9 0x88D9 -0xC8BA 0x7FA4 -0xC8BB 0x7136 -0xC8BC 0x71C3 -0xC8BD 0x5189 -0xC8BE 0x67D3 -0xC8BF 0x74E4 -0xC8C0 0x58E4 -0xC8C1 0x6518 -0xC8C2 0x56B7 -0xC8C3 0x8BA9 -0xC8C4 0x9976 -0xC8C5 0x6270 -0xC8C6 0x7ED5 -0xC8C7 0x60F9 -0xC8C8 0x70ED -0xC8C9 0x58EC -0xC8CA 0x4EC1 -0xC8CB 0x4EBA -0xC8CC 0x5FCD -0xC8CD 0x97E7 -0xC8CE 0x4EFB -0xC8CF 0x8BA4 -0xC8D0 0x5203 -0xC8D1 0x598A -0xC8D2 0x7EAB -0xC8D3 0x6254 -0xC8D4 0x4ECD -0xC8D5 0x65E5 -0xC8D6 0x620E -0xC8D7 0x8338 -0xC8D8 0x84C9 -0xC8D9 0x8363 -0xC8DA 0x878D -0xC8DB 0x7194 -0xC8DC 0x6EB6 -0xC8DD 0x5BB9 -0xC8DE 0x7ED2 -0xC8DF 0x5197 -0xC8E0 0x63C9 -0xC8E1 0x67D4 -0xC8E2 0x8089 -0xC8E3 0x8339 -0xC8E4 0x8815 -0xC8E5 0x5112 -0xC8E6 0x5B7A -0xC8E7 0x5982 -0xC8E8 0x8FB1 -0xC8E9 0x4E73 -0xC8EA 0x6C5D -0xC8EB 0x5165 -0xC8EC 0x8925 -0xC8ED 0x8F6F -0xC8EE 0x962E -0xC8EF 0x854A -0xC8F0 0x745E -0xC8F1 0x9510 -0xC8F2 0x95F0 -0xC8F3 0x6DA6 -0xC8F4 0x82E5 -0xC8F5 0x5F31 -0xC8F6 0x6492 -0xC8F7 0x6D12 -0xC8F8 0x8428 -0xC8F9 0x816E -0xC8FA 0x9CC3 -0xC8FB 0x585E -0xC8FC 0x8D5B -0xC8FD 0x4E09 -0xC8FE 0x53C1 -0xC940 0x847D -0xC941 0x847E -0xC942 0x847F -0xC943 0x8480 -0xC944 0x8481 -0xC945 0x8483 -0xC946 0x8484 -0xC947 0x8485 -0xC948 0x8486 -0xC949 0x848A -0xC94A 0x848D -0xC94B 0x848F -0xC94C 0x8490 -0xC94D 0x8491 -0xC94E 0x8492 -0xC94F 0x8493 -0xC950 0x8494 -0xC951 0x8495 -0xC952 0x8496 -0xC953 0x8498 -0xC954 0x849A -0xC955 0x849B -0xC956 0x849D -0xC957 0x849E -0xC958 0x849F -0xC959 0x84A0 -0xC95A 0x84A2 -0xC95B 0x84A3 -0xC95C 0x84A4 -0xC95D 0x84A5 -0xC95E 0x84A6 -0xC95F 0x84A7 -0xC960 0x84A8 -0xC961 0x84A9 -0xC962 0x84AA -0xC963 0x84AB -0xC964 0x84AC -0xC965 0x84AD -0xC966 0x84AE -0xC967 0x84B0 -0xC968 0x84B1 -0xC969 0x84B3 -0xC96A 0x84B5 -0xC96B 0x84B6 -0xC96C 0x84B7 -0xC96D 0x84BB -0xC96E 0x84BC -0xC96F 0x84BE -0xC970 0x84C0 -0xC971 0x84C2 -0xC972 0x84C3 -0xC973 0x84C5 -0xC974 0x84C6 -0xC975 0x84C7 -0xC976 0x84C8 -0xC977 0x84CB -0xC978 0x84CC -0xC979 0x84CE -0xC97A 0x84CF -0xC97B 0x84D2 -0xC97C 0x84D4 -0xC97D 0x84D5 -0xC97E 0x84D7 -0xC980 0x84D8 -0xC981 0x84D9 -0xC982 0x84DA -0xC983 0x84DB -0xC984 0x84DC -0xC985 0x84DE -0xC986 0x84E1 -0xC987 0x84E2 -0xC988 0x84E4 -0xC989 0x84E7 -0xC98A 0x84E8 -0xC98B 0x84E9 -0xC98C 0x84EA -0xC98D 0x84EB -0xC98E 0x84ED -0xC98F 0x84EE -0xC990 0x84EF -0xC991 0x84F1 -0xC992 0x84F2 -0xC993 0x84F3 -0xC994 0x84F4 -0xC995 0x84F5 -0xC996 0x84F6 -0xC997 0x84F7 -0xC998 0x84F8 -0xC999 0x84F9 -0xC99A 0x84FA -0xC99B 0x84FB -0xC99C 0x84FD -0xC99D 0x84FE -0xC99E 0x8500 -0xC99F 0x8501 -0xC9A0 0x8502 -0xC9A1 0x4F1E -0xC9A2 0x6563 -0xC9A3 0x6851 -0xC9A4 0x55D3 -0xC9A5 0x4E27 -0xC9A6 0x6414 -0xC9A7 0x9A9A -0xC9A8 0x626B -0xC9A9 0x5AC2 -0xC9AA 0x745F -0xC9AB 0x8272 -0xC9AC 0x6DA9 -0xC9AD 0x68EE -0xC9AE 0x50E7 -0xC9AF 0x838E -0xC9B0 0x7802 -0xC9B1 0x6740 -0xC9B2 0x5239 -0xC9B3 0x6C99 -0xC9B4 0x7EB1 -0xC9B5 0x50BB -0xC9B6 0x5565 -0xC9B7 0x715E -0xC9B8 0x7B5B -0xC9B9 0x6652 -0xC9BA 0x73CA -0xC9BB 0x82EB -0xC9BC 0x6749 -0xC9BD 0x5C71 -0xC9BE 0x5220 -0xC9BF 0x717D -0xC9C0 0x886B -0xC9C1 0x95EA -0xC9C2 0x9655 -0xC9C3 0x64C5 -0xC9C4 0x8D61 -0xC9C5 0x81B3 -0xC9C6 0x5584 -0xC9C7 0x6C55 -0xC9C8 0x6247 -0xC9C9 0x7F2E -0xC9CA 0x5892 -0xC9CB 0x4F24 -0xC9CC 0x5546 -0xC9CD 0x8D4F -0xC9CE 0x664C -0xC9CF 0x4E0A -0xC9D0 0x5C1A -0xC9D1 0x88F3 -0xC9D2 0x68A2 -0xC9D3 0x634E -0xC9D4 0x7A0D -0xC9D5 0x70E7 -0xC9D6 0x828D -0xC9D7 0x52FA -0xC9D8 0x97F6 -0xC9D9 0x5C11 -0xC9DA 0x54E8 -0xC9DB 0x90B5 -0xC9DC 0x7ECD -0xC9DD 0x5962 -0xC9DE 0x8D4A -0xC9DF 0x86C7 -0xC9E0 0x820C -0xC9E1 0x820D -0xC9E2 0x8D66 -0xC9E3 0x6444 -0xC9E4 0x5C04 -0xC9E5 0x6151 -0xC9E6 0x6D89 -0xC9E7 0x793E -0xC9E8 0x8BBE -0xC9E9 0x7837 -0xC9EA 0x7533 -0xC9EB 0x547B -0xC9EC 0x4F38 -0xC9ED 0x8EAB -0xC9EE 0x6DF1 -0xC9EF 0x5A20 -0xC9F0 0x7EC5 -0xC9F1 0x795E -0xC9F2 0x6C88 -0xC9F3 0x5BA1 -0xC9F4 0x5A76 -0xC9F5 0x751A -0xC9F6 0x80BE -0xC9F7 0x614E -0xC9F8 0x6E17 -0xC9F9 0x58F0 -0xC9FA 0x751F -0xC9FB 0x7525 -0xC9FC 0x7272 -0xC9FD 0x5347 -0xC9FE 0x7EF3 -0xCA40 0x8503 -0xCA41 0x8504 -0xCA42 0x8505 -0xCA43 0x8506 -0xCA44 0x8507 -0xCA45 0x8508 -0xCA46 0x8509 -0xCA47 0x850A -0xCA48 0x850B -0xCA49 0x850D -0xCA4A 0x850E -0xCA4B 0x850F -0xCA4C 0x8510 -0xCA4D 0x8512 -0xCA4E 0x8514 -0xCA4F 0x8515 -0xCA50 0x8516 -0xCA51 0x8518 -0xCA52 0x8519 -0xCA53 0x851B -0xCA54 0x851C -0xCA55 0x851D -0xCA56 0x851E -0xCA57 0x8520 -0xCA58 0x8522 -0xCA59 0x8523 -0xCA5A 0x8524 -0xCA5B 0x8525 -0xCA5C 0x8526 -0xCA5D 0x8527 -0xCA5E 0x8528 -0xCA5F 0x8529 -0xCA60 0x852A -0xCA61 0x852D -0xCA62 0x852E -0xCA63 0x852F -0xCA64 0x8530 -0xCA65 0x8531 -0xCA66 0x8532 -0xCA67 0x8533 -0xCA68 0x8534 -0xCA69 0x8535 -0xCA6A 0x8536 -0xCA6B 0x853E -0xCA6C 0x853F -0xCA6D 0x8540 -0xCA6E 0x8541 -0xCA6F 0x8542 -0xCA70 0x8544 -0xCA71 0x8545 -0xCA72 0x8546 -0xCA73 0x8547 -0xCA74 0x854B -0xCA75 0x854C -0xCA76 0x854D -0xCA77 0x854E -0xCA78 0x854F -0xCA79 0x8550 -0xCA7A 0x8551 -0xCA7B 0x8552 -0xCA7C 0x8553 -0xCA7D 0x8554 -0xCA7E 0x8555 -0xCA80 0x8557 -0xCA81 0x8558 -0xCA82 0x855A -0xCA83 0x855B -0xCA84 0x855C -0xCA85 0x855D -0xCA86 0x855F -0xCA87 0x8560 -0xCA88 0x8561 -0xCA89 0x8562 -0xCA8A 0x8563 -0xCA8B 0x8565 -0xCA8C 0x8566 -0xCA8D 0x8567 -0xCA8E 0x8569 -0xCA8F 0x856A -0xCA90 0x856B -0xCA91 0x856C -0xCA92 0x856D -0xCA93 0x856E -0xCA94 0x856F -0xCA95 0x8570 -0xCA96 0x8571 -0xCA97 0x8573 -0xCA98 0x8575 -0xCA99 0x8576 -0xCA9A 0x8577 -0xCA9B 0x8578 -0xCA9C 0x857C -0xCA9D 0x857D -0xCA9E 0x857F -0xCA9F 0x8580 -0xCAA0 0x8581 -0xCAA1 0x7701 -0xCAA2 0x76DB -0xCAA3 0x5269 -0xCAA4 0x80DC -0xCAA5 0x5723 -0xCAA6 0x5E08 -0xCAA7 0x5931 -0xCAA8 0x72EE -0xCAA9 0x65BD -0xCAAA 0x6E7F -0xCAAB 0x8BD7 -0xCAAC 0x5C38 -0xCAAD 0x8671 -0xCAAE 0x5341 -0xCAAF 0x77F3 -0xCAB0 0x62FE -0xCAB1 0x65F6 -0xCAB2 0x4EC0 -0xCAB3 0x98DF -0xCAB4 0x8680 -0xCAB5 0x5B9E -0xCAB6 0x8BC6 -0xCAB7 0x53F2 -0xCAB8 0x77E2 -0xCAB9 0x4F7F -0xCABA 0x5C4E -0xCABB 0x9A76 -0xCABC 0x59CB -0xCABD 0x5F0F -0xCABE 0x793A -0xCABF 0x58EB -0xCAC0 0x4E16 -0xCAC1 0x67FF -0xCAC2 0x4E8B -0xCAC3 0x62ED -0xCAC4 0x8A93 -0xCAC5 0x901D -0xCAC6 0x52BF -0xCAC7 0x662F -0xCAC8 0x55DC -0xCAC9 0x566C -0xCACA 0x9002 -0xCACB 0x4ED5 -0xCACC 0x4F8D -0xCACD 0x91CA -0xCACE 0x9970 -0xCACF 0x6C0F -0xCAD0 0x5E02 -0xCAD1 0x6043 -0xCAD2 0x5BA4 -0xCAD3 0x89C6 -0xCAD4 0x8BD5 -0xCAD5 0x6536 -0xCAD6 0x624B -0xCAD7 0x9996 -0xCAD8 0x5B88 -0xCAD9 0x5BFF -0xCADA 0x6388 -0xCADB 0x552E -0xCADC 0x53D7 -0xCADD 0x7626 -0xCADE 0x517D -0xCADF 0x852C -0xCAE0 0x67A2 -0xCAE1 0x68B3 -0xCAE2 0x6B8A -0xCAE3 0x6292 -0xCAE4 0x8F93 -0xCAE5 0x53D4 -0xCAE6 0x8212 -0xCAE7 0x6DD1 -0xCAE8 0x758F -0xCAE9 0x4E66 -0xCAEA 0x8D4E -0xCAEB 0x5B70 -0xCAEC 0x719F -0xCAED 0x85AF -0xCAEE 0x6691 -0xCAEF 0x66D9 -0xCAF0 0x7F72 -0xCAF1 0x8700 -0xCAF2 0x9ECD -0xCAF3 0x9F20 -0xCAF4 0x5C5E -0xCAF5 0x672F -0xCAF6 0x8FF0 -0xCAF7 0x6811 -0xCAF8 0x675F -0xCAF9 0x620D -0xCAFA 0x7AD6 -0xCAFB 0x5885 -0xCAFC 0x5EB6 -0xCAFD 0x6570 -0xCAFE 0x6F31 -0xCB40 0x8582 -0xCB41 0x8583 -0xCB42 0x8586 -0xCB43 0x8588 -0xCB44 0x8589 -0xCB45 0x858A -0xCB46 0x858B -0xCB47 0x858C -0xCB48 0x858D -0xCB49 0x858E -0xCB4A 0x8590 -0xCB4B 0x8591 -0xCB4C 0x8592 -0xCB4D 0x8593 -0xCB4E 0x8594 -0xCB4F 0x8595 -0xCB50 0x8596 -0xCB51 0x8597 -0xCB52 0x8598 -0xCB53 0x8599 -0xCB54 0x859A -0xCB55 0x859D -0xCB56 0x859E -0xCB57 0x859F -0xCB58 0x85A0 -0xCB59 0x85A1 -0xCB5A 0x85A2 -0xCB5B 0x85A3 -0xCB5C 0x85A5 -0xCB5D 0x85A6 -0xCB5E 0x85A7 -0xCB5F 0x85A9 -0xCB60 0x85AB -0xCB61 0x85AC -0xCB62 0x85AD -0xCB63 0x85B1 -0xCB64 0x85B2 -0xCB65 0x85B3 -0xCB66 0x85B4 -0xCB67 0x85B5 -0xCB68 0x85B6 -0xCB69 0x85B8 -0xCB6A 0x85BA -0xCB6B 0x85BB -0xCB6C 0x85BC -0xCB6D 0x85BD -0xCB6E 0x85BE -0xCB6F 0x85BF -0xCB70 0x85C0 -0xCB71 0x85C2 -0xCB72 0x85C3 -0xCB73 0x85C4 -0xCB74 0x85C5 -0xCB75 0x85C6 -0xCB76 0x85C7 -0xCB77 0x85C8 -0xCB78 0x85CA -0xCB79 0x85CB -0xCB7A 0x85CC -0xCB7B 0x85CD -0xCB7C 0x85CE -0xCB7D 0x85D1 -0xCB7E 0x85D2 -0xCB80 0x85D4 -0xCB81 0x85D6 -0xCB82 0x85D7 -0xCB83 0x85D8 -0xCB84 0x85D9 -0xCB85 0x85DA -0xCB86 0x85DB -0xCB87 0x85DD -0xCB88 0x85DE -0xCB89 0x85DF -0xCB8A 0x85E0 -0xCB8B 0x85E1 -0xCB8C 0x85E2 -0xCB8D 0x85E3 -0xCB8E 0x85E5 -0xCB8F 0x85E6 -0xCB90 0x85E7 -0xCB91 0x85E8 -0xCB92 0x85EA -0xCB93 0x85EB -0xCB94 0x85EC -0xCB95 0x85ED -0xCB96 0x85EE -0xCB97 0x85EF -0xCB98 0x85F0 -0xCB99 0x85F1 -0xCB9A 0x85F2 -0xCB9B 0x85F3 -0xCB9C 0x85F4 -0xCB9D 0x85F5 -0xCB9E 0x85F6 -0xCB9F 0x85F7 -0xCBA0 0x85F8 -0xCBA1 0x6055 -0xCBA2 0x5237 -0xCBA3 0x800D -0xCBA4 0x6454 -0xCBA5 0x8870 -0xCBA6 0x7529 -0xCBA7 0x5E05 -0xCBA8 0x6813 -0xCBA9 0x62F4 -0xCBAA 0x971C -0xCBAB 0x53CC -0xCBAC 0x723D -0xCBAD 0x8C01 -0xCBAE 0x6C34 -0xCBAF 0x7761 -0xCBB0 0x7A0E -0xCBB1 0x542E -0xCBB2 0x77AC -0xCBB3 0x987A -0xCBB4 0x821C -0xCBB5 0x8BF4 -0xCBB6 0x7855 -0xCBB7 0x6714 -0xCBB8 0x70C1 -0xCBB9 0x65AF -0xCBBA 0x6495 -0xCBBB 0x5636 -0xCBBC 0x601D -0xCBBD 0x79C1 -0xCBBE 0x53F8 -0xCBBF 0x4E1D -0xCBC0 0x6B7B -0xCBC1 0x8086 -0xCBC2 0x5BFA -0xCBC3 0x55E3 -0xCBC4 0x56DB -0xCBC5 0x4F3A -0xCBC6 0x4F3C -0xCBC7 0x9972 -0xCBC8 0x5DF3 -0xCBC9 0x677E -0xCBCA 0x8038 -0xCBCB 0x6002 -0xCBCC 0x9882 -0xCBCD 0x9001 -0xCBCE 0x5B8B -0xCBCF 0x8BBC -0xCBD0 0x8BF5 -0xCBD1 0x641C -0xCBD2 0x8258 -0xCBD3 0x64DE -0xCBD4 0x55FD -0xCBD5 0x82CF -0xCBD6 0x9165 -0xCBD7 0x4FD7 -0xCBD8 0x7D20 -0xCBD9 0x901F -0xCBDA 0x7C9F -0xCBDB 0x50F3 -0xCBDC 0x5851 -0xCBDD 0x6EAF -0xCBDE 0x5BBF -0xCBDF 0x8BC9 -0xCBE0 0x8083 -0xCBE1 0x9178 -0xCBE2 0x849C -0xCBE3 0x7B97 -0xCBE4 0x867D -0xCBE5 0x968B -0xCBE6 0x968F -0xCBE7 0x7EE5 -0xCBE8 0x9AD3 -0xCBE9 0x788E -0xCBEA 0x5C81 -0xCBEB 0x7A57 -0xCBEC 0x9042 -0xCBED 0x96A7 -0xCBEE 0x795F -0xCBEF 0x5B59 -0xCBF0 0x635F -0xCBF1 0x7B0B -0xCBF2 0x84D1 -0xCBF3 0x68AD -0xCBF4 0x5506 -0xCBF5 0x7F29 -0xCBF6 0x7410 -0xCBF7 0x7D22 -0xCBF8 0x9501 -0xCBF9 0x6240 -0xCBFA 0x584C -0xCBFB 0x4ED6 -0xCBFC 0x5B83 -0xCBFD 0x5979 -0xCBFE 0x5854 -0xCC40 0x85F9 -0xCC41 0x85FA -0xCC42 0x85FC -0xCC43 0x85FD -0xCC44 0x85FE -0xCC45 0x8600 -0xCC46 0x8601 -0xCC47 0x8602 -0xCC48 0x8603 -0xCC49 0x8604 -0xCC4A 0x8606 -0xCC4B 0x8607 -0xCC4C 0x8608 -0xCC4D 0x8609 -0xCC4E 0x860A -0xCC4F 0x860B -0xCC50 0x860C -0xCC51 0x860D -0xCC52 0x860E -0xCC53 0x860F -0xCC54 0x8610 -0xCC55 0x8612 -0xCC56 0x8613 -0xCC57 0x8614 -0xCC58 0x8615 -0xCC59 0x8617 -0xCC5A 0x8618 -0xCC5B 0x8619 -0xCC5C 0x861A -0xCC5D 0x861B -0xCC5E 0x861C -0xCC5F 0x861D -0xCC60 0x861E -0xCC61 0x861F -0xCC62 0x8620 -0xCC63 0x8621 -0xCC64 0x8622 -0xCC65 0x8623 -0xCC66 0x8624 -0xCC67 0x8625 -0xCC68 0x8626 -0xCC69 0x8628 -0xCC6A 0x862A -0xCC6B 0x862B -0xCC6C 0x862C -0xCC6D 0x862D -0xCC6E 0x862E -0xCC6F 0x862F -0xCC70 0x8630 -0xCC71 0x8631 -0xCC72 0x8632 -0xCC73 0x8633 -0xCC74 0x8634 -0xCC75 0x8635 -0xCC76 0x8636 -0xCC77 0x8637 -0xCC78 0x8639 -0xCC79 0x863A -0xCC7A 0x863B -0xCC7B 0x863D -0xCC7C 0x863E -0xCC7D 0x863F -0xCC7E 0x8640 -0xCC80 0x8641 -0xCC81 0x8642 -0xCC82 0x8643 -0xCC83 0x8644 -0xCC84 0x8645 -0xCC85 0x8646 -0xCC86 0x8647 -0xCC87 0x8648 -0xCC88 0x8649 -0xCC89 0x864A -0xCC8A 0x864B -0xCC8B 0x864C -0xCC8C 0x8652 -0xCC8D 0x8653 -0xCC8E 0x8655 -0xCC8F 0x8656 -0xCC90 0x8657 -0xCC91 0x8658 -0xCC92 0x8659 -0xCC93 0x865B -0xCC94 0x865C -0xCC95 0x865D -0xCC96 0x865F -0xCC97 0x8660 -0xCC98 0x8661 -0xCC99 0x8663 -0xCC9A 0x8664 -0xCC9B 0x8665 -0xCC9C 0x8666 -0xCC9D 0x8667 -0xCC9E 0x8668 -0xCC9F 0x8669 -0xCCA0 0x866A -0xCCA1 0x736D -0xCCA2 0x631E -0xCCA3 0x8E4B -0xCCA4 0x8E0F -0xCCA5 0x80CE -0xCCA6 0x82D4 -0xCCA7 0x62AC -0xCCA8 0x53F0 -0xCCA9 0x6CF0 -0xCCAA 0x915E -0xCCAB 0x592A -0xCCAC 0x6001 -0xCCAD 0x6C70 -0xCCAE 0x574D -0xCCAF 0x644A -0xCCB0 0x8D2A -0xCCB1 0x762B -0xCCB2 0x6EE9 -0xCCB3 0x575B -0xCCB4 0x6A80 -0xCCB5 0x75F0 -0xCCB6 0x6F6D -0xCCB7 0x8C2D -0xCCB8 0x8C08 -0xCCB9 0x5766 -0xCCBA 0x6BEF -0xCCBB 0x8892 -0xCCBC 0x78B3 -0xCCBD 0x63A2 -0xCCBE 0x53F9 -0xCCBF 0x70AD -0xCCC0 0x6C64 -0xCCC1 0x5858 -0xCCC2 0x642A -0xCCC3 0x5802 -0xCCC4 0x68E0 -0xCCC5 0x819B -0xCCC6 0x5510 -0xCCC7 0x7CD6 -0xCCC8 0x5018 -0xCCC9 0x8EBA -0xCCCA 0x6DCC -0xCCCB 0x8D9F -0xCCCC 0x70EB -0xCCCD 0x638F -0xCCCE 0x6D9B -0xCCCF 0x6ED4 -0xCCD0 0x7EE6 -0xCCD1 0x8404 -0xCCD2 0x6843 -0xCCD3 0x9003 -0xCCD4 0x6DD8 -0xCCD5 0x9676 -0xCCD6 0x8BA8 -0xCCD7 0x5957 -0xCCD8 0x7279 -0xCCD9 0x85E4 -0xCCDA 0x817E -0xCCDB 0x75BC -0xCCDC 0x8A8A -0xCCDD 0x68AF -0xCCDE 0x5254 -0xCCDF 0x8E22 -0xCCE0 0x9511 -0xCCE1 0x63D0 -0xCCE2 0x9898 -0xCCE3 0x8E44 -0xCCE4 0x557C -0xCCE5 0x4F53 -0xCCE6 0x66FF -0xCCE7 0x568F -0xCCE8 0x60D5 -0xCCE9 0x6D95 -0xCCEA 0x5243 -0xCCEB 0x5C49 -0xCCEC 0x5929 -0xCCED 0x6DFB -0xCCEE 0x586B -0xCCEF 0x7530 -0xCCF0 0x751C -0xCCF1 0x606C -0xCCF2 0x8214 -0xCCF3 0x8146 -0xCCF4 0x6311 -0xCCF5 0x6761 -0xCCF6 0x8FE2 -0xCCF7 0x773A -0xCCF8 0x8DF3 -0xCCF9 0x8D34 -0xCCFA 0x94C1 -0xCCFB 0x5E16 -0xCCFC 0x5385 -0xCCFD 0x542C -0xCCFE 0x70C3 -0xCD40 0x866D -0xCD41 0x866F -0xCD42 0x8670 -0xCD43 0x8672 -0xCD44 0x8673 -0xCD45 0x8674 -0xCD46 0x8675 -0xCD47 0x8676 -0xCD48 0x8677 -0xCD49 0x8678 -0xCD4A 0x8683 -0xCD4B 0x8684 -0xCD4C 0x8685 -0xCD4D 0x8686 -0xCD4E 0x8687 -0xCD4F 0x8688 -0xCD50 0x8689 -0xCD51 0x868E -0xCD52 0x868F -0xCD53 0x8690 -0xCD54 0x8691 -0xCD55 0x8692 -0xCD56 0x8694 -0xCD57 0x8696 -0xCD58 0x8697 -0xCD59 0x8698 -0xCD5A 0x8699 -0xCD5B 0x869A -0xCD5C 0x869B -0xCD5D 0x869E -0xCD5E 0x869F -0xCD5F 0x86A0 -0xCD60 0x86A1 -0xCD61 0x86A2 -0xCD62 0x86A5 -0xCD63 0x86A6 -0xCD64 0x86AB -0xCD65 0x86AD -0xCD66 0x86AE -0xCD67 0x86B2 -0xCD68 0x86B3 -0xCD69 0x86B7 -0xCD6A 0x86B8 -0xCD6B 0x86B9 -0xCD6C 0x86BB -0xCD6D 0x86BC -0xCD6E 0x86BD -0xCD6F 0x86BE -0xCD70 0x86BF -0xCD71 0x86C1 -0xCD72 0x86C2 -0xCD73 0x86C3 -0xCD74 0x86C5 -0xCD75 0x86C8 -0xCD76 0x86CC -0xCD77 0x86CD -0xCD78 0x86D2 -0xCD79 0x86D3 -0xCD7A 0x86D5 -0xCD7B 0x86D6 -0xCD7C 0x86D7 -0xCD7D 0x86DA -0xCD7E 0x86DC -0xCD80 0x86DD -0xCD81 0x86E0 -0xCD82 0x86E1 -0xCD83 0x86E2 -0xCD84 0x86E3 -0xCD85 0x86E5 -0xCD86 0x86E6 -0xCD87 0x86E7 -0xCD88 0x86E8 -0xCD89 0x86EA -0xCD8A 0x86EB -0xCD8B 0x86EC -0xCD8C 0x86EF -0xCD8D 0x86F5 -0xCD8E 0x86F6 -0xCD8F 0x86F7 -0xCD90 0x86FA -0xCD91 0x86FB -0xCD92 0x86FC -0xCD93 0x86FD -0xCD94 0x86FF -0xCD95 0x8701 -0xCD96 0x8704 -0xCD97 0x8705 -0xCD98 0x8706 -0xCD99 0x870B -0xCD9A 0x870C -0xCD9B 0x870E -0xCD9C 0x870F -0xCD9D 0x8710 -0xCD9E 0x8711 -0xCD9F 0x8714 -0xCDA0 0x8716 -0xCDA1 0x6C40 -0xCDA2 0x5EF7 -0xCDA3 0x505C -0xCDA4 0x4EAD -0xCDA5 0x5EAD -0xCDA6 0x633A -0xCDA7 0x8247 -0xCDA8 0x901A -0xCDA9 0x6850 -0xCDAA 0x916E -0xCDAB 0x77B3 -0xCDAC 0x540C -0xCDAD 0x94DC -0xCDAE 0x5F64 -0xCDAF 0x7AE5 -0xCDB0 0x6876 -0xCDB1 0x6345 -0xCDB2 0x7B52 -0xCDB3 0x7EDF -0xCDB4 0x75DB -0xCDB5 0x5077 -0xCDB6 0x6295 -0xCDB7 0x5934 -0xCDB8 0x900F -0xCDB9 0x51F8 -0xCDBA 0x79C3 -0xCDBB 0x7A81 -0xCDBC 0x56FE -0xCDBD 0x5F92 -0xCDBE 0x9014 -0xCDBF 0x6D82 -0xCDC0 0x5C60 -0xCDC1 0x571F -0xCDC2 0x5410 -0xCDC3 0x5154 -0xCDC4 0x6E4D -0xCDC5 0x56E2 -0xCDC6 0x63A8 -0xCDC7 0x9893 -0xCDC8 0x817F -0xCDC9 0x8715 -0xCDCA 0x892A -0xCDCB 0x9000 -0xCDCC 0x541E -0xCDCD 0x5C6F -0xCDCE 0x81C0 -0xCDCF 0x62D6 -0xCDD0 0x6258 -0xCDD1 0x8131 -0xCDD2 0x9E35 -0xCDD3 0x9640 -0xCDD4 0x9A6E -0xCDD5 0x9A7C -0xCDD6 0x692D -0xCDD7 0x59A5 -0xCDD8 0x62D3 -0xCDD9 0x553E -0xCDDA 0x6316 -0xCDDB 0x54C7 -0xCDDC 0x86D9 -0xCDDD 0x6D3C -0xCDDE 0x5A03 -0xCDDF 0x74E6 -0xCDE0 0x889C -0xCDE1 0x6B6A -0xCDE2 0x5916 -0xCDE3 0x8C4C -0xCDE4 0x5F2F -0xCDE5 0x6E7E -0xCDE6 0x73A9 -0xCDE7 0x987D -0xCDE8 0x4E38 -0xCDE9 0x70F7 -0xCDEA 0x5B8C -0xCDEB 0x7897 -0xCDEC 0x633D -0xCDED 0x665A -0xCDEE 0x7696 -0xCDEF 0x60CB -0xCDF0 0x5B9B -0xCDF1 0x5A49 -0xCDF2 0x4E07 -0xCDF3 0x8155 -0xCDF4 0x6C6A -0xCDF5 0x738B -0xCDF6 0x4EA1 -0xCDF7 0x6789 -0xCDF8 0x7F51 -0xCDF9 0x5F80 -0xCDFA 0x65FA -0xCDFB 0x671B -0xCDFC 0x5FD8 -0xCDFD 0x5984 -0xCDFE 0x5A01 -0xCE40 0x8719 -0xCE41 0x871B -0xCE42 0x871D -0xCE43 0x871F -0xCE44 0x8720 -0xCE45 0x8724 -0xCE46 0x8726 -0xCE47 0x8727 -0xCE48 0x8728 -0xCE49 0x872A -0xCE4A 0x872B -0xCE4B 0x872C -0xCE4C 0x872D -0xCE4D 0x872F -0xCE4E 0x8730 -0xCE4F 0x8732 -0xCE50 0x8733 -0xCE51 0x8735 -0xCE52 0x8736 -0xCE53 0x8738 -0xCE54 0x8739 -0xCE55 0x873A -0xCE56 0x873C -0xCE57 0x873D -0xCE58 0x8740 -0xCE59 0x8741 -0xCE5A 0x8742 -0xCE5B 0x8743 -0xCE5C 0x8744 -0xCE5D 0x8745 -0xCE5E 0x8746 -0xCE5F 0x874A -0xCE60 0x874B -0xCE61 0x874D -0xCE62 0x874F -0xCE63 0x8750 -0xCE64 0x8751 -0xCE65 0x8752 -0xCE66 0x8754 -0xCE67 0x8755 -0xCE68 0x8756 -0xCE69 0x8758 -0xCE6A 0x875A -0xCE6B 0x875B -0xCE6C 0x875C -0xCE6D 0x875D -0xCE6E 0x875E -0xCE6F 0x875F -0xCE70 0x8761 -0xCE71 0x8762 -0xCE72 0x8766 -0xCE73 0x8767 -0xCE74 0x8768 -0xCE75 0x8769 -0xCE76 0x876A -0xCE77 0x876B -0xCE78 0x876C -0xCE79 0x876D -0xCE7A 0x876F -0xCE7B 0x8771 -0xCE7C 0x8772 -0xCE7D 0x8773 -0xCE7E 0x8775 -0xCE80 0x8777 -0xCE81 0x8778 -0xCE82 0x8779 -0xCE83 0x877A -0xCE84 0x877F -0xCE85 0x8780 -0xCE86 0x8781 -0xCE87 0x8784 -0xCE88 0x8786 -0xCE89 0x8787 -0xCE8A 0x8789 -0xCE8B 0x878A -0xCE8C 0x878C -0xCE8D 0x878E -0xCE8E 0x878F -0xCE8F 0x8790 -0xCE90 0x8791 -0xCE91 0x8792 -0xCE92 0x8794 -0xCE93 0x8795 -0xCE94 0x8796 -0xCE95 0x8798 -0xCE96 0x8799 -0xCE97 0x879A -0xCE98 0x879B -0xCE99 0x879C -0xCE9A 0x879D -0xCE9B 0x879E -0xCE9C 0x87A0 -0xCE9D 0x87A1 -0xCE9E 0x87A2 -0xCE9F 0x87A3 -0xCEA0 0x87A4 -0xCEA1 0x5DCD -0xCEA2 0x5FAE -0xCEA3 0x5371 -0xCEA4 0x97E6 -0xCEA5 0x8FDD -0xCEA6 0x6845 -0xCEA7 0x56F4 -0xCEA8 0x552F -0xCEA9 0x60DF -0xCEAA 0x4E3A -0xCEAB 0x6F4D -0xCEAC 0x7EF4 -0xCEAD 0x82C7 -0xCEAE 0x840E -0xCEAF 0x59D4 -0xCEB0 0x4F1F -0xCEB1 0x4F2A -0xCEB2 0x5C3E -0xCEB3 0x7EAC -0xCEB4 0x672A -0xCEB5 0x851A -0xCEB6 0x5473 -0xCEB7 0x754F -0xCEB8 0x80C3 -0xCEB9 0x5582 -0xCEBA 0x9B4F -0xCEBB 0x4F4D -0xCEBC 0x6E2D -0xCEBD 0x8C13 -0xCEBE 0x5C09 -0xCEBF 0x6170 -0xCEC0 0x536B -0xCEC1 0x761F -0xCEC2 0x6E29 -0xCEC3 0x868A -0xCEC4 0x6587 -0xCEC5 0x95FB -0xCEC6 0x7EB9 -0xCEC7 0x543B -0xCEC8 0x7A33 -0xCEC9 0x7D0A -0xCECA 0x95EE -0xCECB 0x55E1 -0xCECC 0x7FC1 -0xCECD 0x74EE -0xCECE 0x631D -0xCECF 0x8717 -0xCED0 0x6DA1 -0xCED1 0x7A9D -0xCED2 0x6211 -0xCED3 0x65A1 -0xCED4 0x5367 -0xCED5 0x63E1 -0xCED6 0x6C83 -0xCED7 0x5DEB -0xCED8 0x545C -0xCED9 0x94A8 -0xCEDA 0x4E4C -0xCEDB 0x6C61 -0xCEDC 0x8BEC -0xCEDD 0x5C4B -0xCEDE 0x65E0 -0xCEDF 0x829C -0xCEE0 0x68A7 -0xCEE1 0x543E -0xCEE2 0x5434 -0xCEE3 0x6BCB -0xCEE4 0x6B66 -0xCEE5 0x4E94 -0xCEE6 0x6342 -0xCEE7 0x5348 -0xCEE8 0x821E -0xCEE9 0x4F0D -0xCEEA 0x4FAE -0xCEEB 0x575E -0xCEEC 0x620A -0xCEED 0x96FE -0xCEEE 0x6664 -0xCEEF 0x7269 -0xCEF0 0x52FF -0xCEF1 0x52A1 -0xCEF2 0x609F -0xCEF3 0x8BEF -0xCEF4 0x6614 -0xCEF5 0x7199 -0xCEF6 0x6790 -0xCEF7 0x897F -0xCEF8 0x7852 -0xCEF9 0x77FD -0xCEFA 0x6670 -0xCEFB 0x563B -0xCEFC 0x5438 -0xCEFD 0x9521 -0xCEFE 0x727A -0xCF40 0x87A5 -0xCF41 0x87A6 -0xCF42 0x87A7 -0xCF43 0x87A9 -0xCF44 0x87AA -0xCF45 0x87AE -0xCF46 0x87B0 -0xCF47 0x87B1 -0xCF48 0x87B2 -0xCF49 0x87B4 -0xCF4A 0x87B6 -0xCF4B 0x87B7 -0xCF4C 0x87B8 -0xCF4D 0x87B9 -0xCF4E 0x87BB -0xCF4F 0x87BC -0xCF50 0x87BE -0xCF51 0x87BF -0xCF52 0x87C1 -0xCF53 0x87C2 -0xCF54 0x87C3 -0xCF55 0x87C4 -0xCF56 0x87C5 -0xCF57 0x87C7 -0xCF58 0x87C8 -0xCF59 0x87C9 -0xCF5A 0x87CC -0xCF5B 0x87CD -0xCF5C 0x87CE -0xCF5D 0x87CF -0xCF5E 0x87D0 -0xCF5F 0x87D4 -0xCF60 0x87D5 -0xCF61 0x87D6 -0xCF62 0x87D7 -0xCF63 0x87D8 -0xCF64 0x87D9 -0xCF65 0x87DA -0xCF66 0x87DC -0xCF67 0x87DD -0xCF68 0x87DE -0xCF69 0x87DF -0xCF6A 0x87E1 -0xCF6B 0x87E2 -0xCF6C 0x87E3 -0xCF6D 0x87E4 -0xCF6E 0x87E6 -0xCF6F 0x87E7 -0xCF70 0x87E8 -0xCF71 0x87E9 -0xCF72 0x87EB -0xCF73 0x87EC -0xCF74 0x87ED -0xCF75 0x87EF -0xCF76 0x87F0 -0xCF77 0x87F1 -0xCF78 0x87F2 -0xCF79 0x87F3 -0xCF7A 0x87F4 -0xCF7B 0x87F5 -0xCF7C 0x87F6 -0xCF7D 0x87F7 -0xCF7E 0x87F8 -0xCF80 0x87FA -0xCF81 0x87FB -0xCF82 0x87FC -0xCF83 0x87FD -0xCF84 0x87FF -0xCF85 0x8800 -0xCF86 0x8801 -0xCF87 0x8802 -0xCF88 0x8804 -0xCF89 0x8805 -0xCF8A 0x8806 -0xCF8B 0x8807 -0xCF8C 0x8808 -0xCF8D 0x8809 -0xCF8E 0x880B -0xCF8F 0x880C -0xCF90 0x880D -0xCF91 0x880E -0xCF92 0x880F -0xCF93 0x8810 -0xCF94 0x8811 -0xCF95 0x8812 -0xCF96 0x8814 -0xCF97 0x8817 -0xCF98 0x8818 -0xCF99 0x8819 -0xCF9A 0x881A -0xCF9B 0x881C -0xCF9C 0x881D -0xCF9D 0x881E -0xCF9E 0x881F -0xCF9F 0x8820 -0xCFA0 0x8823 -0xCFA1 0x7A00 -0xCFA2 0x606F -0xCFA3 0x5E0C -0xCFA4 0x6089 -0xCFA5 0x819D -0xCFA6 0x5915 -0xCFA7 0x60DC -0xCFA8 0x7184 -0xCFA9 0x70EF -0xCFAA 0x6EAA -0xCFAB 0x6C50 -0xCFAC 0x7280 -0xCFAD 0x6A84 -0xCFAE 0x88AD -0xCFAF 0x5E2D -0xCFB0 0x4E60 -0xCFB1 0x5AB3 -0xCFB2 0x559C -0xCFB3 0x94E3 -0xCFB4 0x6D17 -0xCFB5 0x7CFB -0xCFB6 0x9699 -0xCFB7 0x620F -0xCFB8 0x7EC6 -0xCFB9 0x778E -0xCFBA 0x867E -0xCFBB 0x5323 -0xCFBC 0x971E -0xCFBD 0x8F96 -0xCFBE 0x6687 -0xCFBF 0x5CE1 -0xCFC0 0x4FA0 -0xCFC1 0x72ED -0xCFC2 0x4E0B -0xCFC3 0x53A6 -0xCFC4 0x590F -0xCFC5 0x5413 -0xCFC6 0x6380 -0xCFC7 0x9528 -0xCFC8 0x5148 -0xCFC9 0x4ED9 -0xCFCA 0x9C9C -0xCFCB 0x7EA4 -0xCFCC 0x54B8 -0xCFCD 0x8D24 -0xCFCE 0x8854 -0xCFCF 0x8237 -0xCFD0 0x95F2 -0xCFD1 0x6D8E -0xCFD2 0x5F26 -0xCFD3 0x5ACC -0xCFD4 0x663E -0xCFD5 0x9669 -0xCFD6 0x73B0 -0xCFD7 0x732E -0xCFD8 0x53BF -0xCFD9 0x817A -0xCFDA 0x9985 -0xCFDB 0x7FA1 -0xCFDC 0x5BAA -0xCFDD 0x9677 -0xCFDE 0x9650 -0xCFDF 0x7EBF -0xCFE0 0x76F8 -0xCFE1 0x53A2 -0xCFE2 0x9576 -0xCFE3 0x9999 -0xCFE4 0x7BB1 -0xCFE5 0x8944 -0xCFE6 0x6E58 -0xCFE7 0x4E61 -0xCFE8 0x7FD4 -0xCFE9 0x7965 -0xCFEA 0x8BE6 -0xCFEB 0x60F3 -0xCFEC 0x54CD -0xCFED 0x4EAB -0xCFEE 0x9879 -0xCFEF 0x5DF7 -0xCFF0 0x6A61 -0xCFF1 0x50CF -0xCFF2 0x5411 -0xCFF3 0x8C61 -0xCFF4 0x8427 -0xCFF5 0x785D -0xCFF6 0x9704 -0xCFF7 0x524A -0xCFF8 0x54EE -0xCFF9 0x56A3 -0xCFFA 0x9500 -0xCFFB 0x6D88 -0xCFFC 0x5BB5 -0xCFFD 0x6DC6 -0xCFFE 0x6653 -0xD040 0x8824 -0xD041 0x8825 -0xD042 0x8826 -0xD043 0x8827 -0xD044 0x8828 -0xD045 0x8829 -0xD046 0x882A -0xD047 0x882B -0xD048 0x882C -0xD049 0x882D -0xD04A 0x882E -0xD04B 0x882F -0xD04C 0x8830 -0xD04D 0x8831 -0xD04E 0x8833 -0xD04F 0x8834 -0xD050 0x8835 -0xD051 0x8836 -0xD052 0x8837 -0xD053 0x8838 -0xD054 0x883A -0xD055 0x883B -0xD056 0x883D -0xD057 0x883E -0xD058 0x883F -0xD059 0x8841 -0xD05A 0x8842 -0xD05B 0x8843 -0xD05C 0x8846 -0xD05D 0x8847 -0xD05E 0x8848 -0xD05F 0x8849 -0xD060 0x884A -0xD061 0x884B -0xD062 0x884E -0xD063 0x884F -0xD064 0x8850 -0xD065 0x8851 -0xD066 0x8852 -0xD067 0x8853 -0xD068 0x8855 -0xD069 0x8856 -0xD06A 0x8858 -0xD06B 0x885A -0xD06C 0x885B -0xD06D 0x885C -0xD06E 0x885D -0xD06F 0x885E -0xD070 0x885F -0xD071 0x8860 -0xD072 0x8866 -0xD073 0x8867 -0xD074 0x886A -0xD075 0x886D -0xD076 0x886F -0xD077 0x8871 -0xD078 0x8873 -0xD079 0x8874 -0xD07A 0x8875 -0xD07B 0x8876 -0xD07C 0x8878 -0xD07D 0x8879 -0xD07E 0x887A -0xD080 0x887B -0xD081 0x887C -0xD082 0x8880 -0xD083 0x8883 -0xD084 0x8886 -0xD085 0x8887 -0xD086 0x8889 -0xD087 0x888A -0xD088 0x888C -0xD089 0x888E -0xD08A 0x888F -0xD08B 0x8890 -0xD08C 0x8891 -0xD08D 0x8893 -0xD08E 0x8894 -0xD08F 0x8895 -0xD090 0x8897 -0xD091 0x8898 -0xD092 0x8899 -0xD093 0x889A -0xD094 0x889B -0xD095 0x889D -0xD096 0x889E -0xD097 0x889F -0xD098 0x88A0 -0xD099 0x88A1 -0xD09A 0x88A3 -0xD09B 0x88A5 -0xD09C 0x88A6 -0xD09D 0x88A7 -0xD09E 0x88A8 -0xD09F 0x88A9 -0xD0A0 0x88AA -0xD0A1 0x5C0F -0xD0A2 0x5B5D -0xD0A3 0x6821 -0xD0A4 0x8096 -0xD0A5 0x5578 -0xD0A6 0x7B11 -0xD0A7 0x6548 -0xD0A8 0x6954 -0xD0A9 0x4E9B -0xD0AA 0x6B47 -0xD0AB 0x874E -0xD0AC 0x978B -0xD0AD 0x534F -0xD0AE 0x631F -0xD0AF 0x643A -0xD0B0 0x90AA -0xD0B1 0x659C -0xD0B2 0x80C1 -0xD0B3 0x8C10 -0xD0B4 0x5199 -0xD0B5 0x68B0 -0xD0B6 0x5378 -0xD0B7 0x87F9 -0xD0B8 0x61C8 -0xD0B9 0x6CC4 -0xD0BA 0x6CFB -0xD0BB 0x8C22 -0xD0BC 0x5C51 -0xD0BD 0x85AA -0xD0BE 0x82AF -0xD0BF 0x950C -0xD0C0 0x6B23 -0xD0C1 0x8F9B -0xD0C2 0x65B0 -0xD0C3 0x5FFB -0xD0C4 0x5FC3 -0xD0C5 0x4FE1 -0xD0C6 0x8845 -0xD0C7 0x661F -0xD0C8 0x8165 -0xD0C9 0x7329 -0xD0CA 0x60FA -0xD0CB 0x5174 -0xD0CC 0x5211 -0xD0CD 0x578B -0xD0CE 0x5F62 -0xD0CF 0x90A2 -0xD0D0 0x884C -0xD0D1 0x9192 -0xD0D2 0x5E78 -0xD0D3 0x674F -0xD0D4 0x6027 -0xD0D5 0x59D3 -0xD0D6 0x5144 -0xD0D7 0x51F6 -0xD0D8 0x80F8 -0xD0D9 0x5308 -0xD0DA 0x6C79 -0xD0DB 0x96C4 -0xD0DC 0x718A -0xD0DD 0x4F11 -0xD0DE 0x4FEE -0xD0DF 0x7F9E -0xD0E0 0x673D -0xD0E1 0x55C5 -0xD0E2 0x9508 -0xD0E3 0x79C0 -0xD0E4 0x8896 -0xD0E5 0x7EE3 -0xD0E6 0x589F -0xD0E7 0x620C -0xD0E8 0x9700 -0xD0E9 0x865A -0xD0EA 0x5618 -0xD0EB 0x987B -0xD0EC 0x5F90 -0xD0ED 0x8BB8 -0xD0EE 0x84C4 -0xD0EF 0x9157 -0xD0F0 0x53D9 -0xD0F1 0x65ED -0xD0F2 0x5E8F -0xD0F3 0x755C -0xD0F4 0x6064 -0xD0F5 0x7D6E -0xD0F6 0x5A7F -0xD0F7 0x7EEA -0xD0F8 0x7EED -0xD0F9 0x8F69 -0xD0FA 0x55A7 -0xD0FB 0x5BA3 -0xD0FC 0x60AC -0xD0FD 0x65CB -0xD0FE 0x7384 -0xD140 0x88AC -0xD141 0x88AE -0xD142 0x88AF -0xD143 0x88B0 -0xD144 0x88B2 -0xD145 0x88B3 -0xD146 0x88B4 -0xD147 0x88B5 -0xD148 0x88B6 -0xD149 0x88B8 -0xD14A 0x88B9 -0xD14B 0x88BA -0xD14C 0x88BB -0xD14D 0x88BD -0xD14E 0x88BE -0xD14F 0x88BF -0xD150 0x88C0 -0xD151 0x88C3 -0xD152 0x88C4 -0xD153 0x88C7 -0xD154 0x88C8 -0xD155 0x88CA -0xD156 0x88CB -0xD157 0x88CC -0xD158 0x88CD -0xD159 0x88CF -0xD15A 0x88D0 -0xD15B 0x88D1 -0xD15C 0x88D3 -0xD15D 0x88D6 -0xD15E 0x88D7 -0xD15F 0x88DA -0xD160 0x88DB -0xD161 0x88DC -0xD162 0x88DD -0xD163 0x88DE -0xD164 0x88E0 -0xD165 0x88E1 -0xD166 0x88E6 -0xD167 0x88E7 -0xD168 0x88E9 -0xD169 0x88EA -0xD16A 0x88EB -0xD16B 0x88EC -0xD16C 0x88ED -0xD16D 0x88EE -0xD16E 0x88EF -0xD16F 0x88F2 -0xD170 0x88F5 -0xD171 0x88F6 -0xD172 0x88F7 -0xD173 0x88FA -0xD174 0x88FB -0xD175 0x88FD -0xD176 0x88FF -0xD177 0x8900 -0xD178 0x8901 -0xD179 0x8903 -0xD17A 0x8904 -0xD17B 0x8905 -0xD17C 0x8906 -0xD17D 0x8907 -0xD17E 0x8908 -0xD180 0x8909 -0xD181 0x890B -0xD182 0x890C -0xD183 0x890D -0xD184 0x890E -0xD185 0x890F -0xD186 0x8911 -0xD187 0x8914 -0xD188 0x8915 -0xD189 0x8916 -0xD18A 0x8917 -0xD18B 0x8918 -0xD18C 0x891C -0xD18D 0x891D -0xD18E 0x891E -0xD18F 0x891F -0xD190 0x8920 -0xD191 0x8922 -0xD192 0x8923 -0xD193 0x8924 -0xD194 0x8926 -0xD195 0x8927 -0xD196 0x8928 -0xD197 0x8929 -0xD198 0x892C -0xD199 0x892D -0xD19A 0x892E -0xD19B 0x892F -0xD19C 0x8931 -0xD19D 0x8932 -0xD19E 0x8933 -0xD19F 0x8935 -0xD1A0 0x8937 -0xD1A1 0x9009 -0xD1A2 0x7663 -0xD1A3 0x7729 -0xD1A4 0x7EDA -0xD1A5 0x9774 -0xD1A6 0x859B -0xD1A7 0x5B66 -0xD1A8 0x7A74 -0xD1A9 0x96EA -0xD1AA 0x8840 -0xD1AB 0x52CB -0xD1AC 0x718F -0xD1AD 0x5FAA -0xD1AE 0x65EC -0xD1AF 0x8BE2 -0xD1B0 0x5BFB -0xD1B1 0x9A6F -0xD1B2 0x5DE1 -0xD1B3 0x6B89 -0xD1B4 0x6C5B -0xD1B5 0x8BAD -0xD1B6 0x8BAF -0xD1B7 0x900A -0xD1B8 0x8FC5 -0xD1B9 0x538B -0xD1BA 0x62BC -0xD1BB 0x9E26 -0xD1BC 0x9E2D -0xD1BD 0x5440 -0xD1BE 0x4E2B -0xD1BF 0x82BD -0xD1C0 0x7259 -0xD1C1 0x869C -0xD1C2 0x5D16 -0xD1C3 0x8859 -0xD1C4 0x6DAF -0xD1C5 0x96C5 -0xD1C6 0x54D1 -0xD1C7 0x4E9A -0xD1C8 0x8BB6 -0xD1C9 0x7109 -0xD1CA 0x54BD -0xD1CB 0x9609 -0xD1CC 0x70DF -0xD1CD 0x6DF9 -0xD1CE 0x76D0 -0xD1CF 0x4E25 -0xD1D0 0x7814 -0xD1D1 0x8712 -0xD1D2 0x5CA9 -0xD1D3 0x5EF6 -0xD1D4 0x8A00 -0xD1D5 0x989C -0xD1D6 0x960E -0xD1D7 0x708E -0xD1D8 0x6CBF -0xD1D9 0x5944 -0xD1DA 0x63A9 -0xD1DB 0x773C -0xD1DC 0x884D -0xD1DD 0x6F14 -0xD1DE 0x8273 -0xD1DF 0x5830 -0xD1E0 0x71D5 -0xD1E1 0x538C -0xD1E2 0x781A -0xD1E3 0x96C1 -0xD1E4 0x5501 -0xD1E5 0x5F66 -0xD1E6 0x7130 -0xD1E7 0x5BB4 -0xD1E8 0x8C1A -0xD1E9 0x9A8C -0xD1EA 0x6B83 -0xD1EB 0x592E -0xD1EC 0x9E2F -0xD1ED 0x79E7 -0xD1EE 0x6768 -0xD1EF 0x626C -0xD1F0 0x4F6F -0xD1F1 0x75A1 -0xD1F2 0x7F8A -0xD1F3 0x6D0B -0xD1F4 0x9633 -0xD1F5 0x6C27 -0xD1F6 0x4EF0 -0xD1F7 0x75D2 -0xD1F8 0x517B -0xD1F9 0x6837 -0xD1FA 0x6F3E -0xD1FB 0x9080 -0xD1FC 0x8170 -0xD1FD 0x5996 -0xD1FE 0x7476 -0xD240 0x8938 -0xD241 0x8939 -0xD242 0x893A -0xD243 0x893B -0xD244 0x893C -0xD245 0x893D -0xD246 0x893E -0xD247 0x893F -0xD248 0x8940 -0xD249 0x8942 -0xD24A 0x8943 -0xD24B 0x8945 -0xD24C 0x8946 -0xD24D 0x8947 -0xD24E 0x8948 -0xD24F 0x8949 -0xD250 0x894A -0xD251 0x894B -0xD252 0x894C -0xD253 0x894D -0xD254 0x894E -0xD255 0x894F -0xD256 0x8950 -0xD257 0x8951 -0xD258 0x8952 -0xD259 0x8953 -0xD25A 0x8954 -0xD25B 0x8955 -0xD25C 0x8956 -0xD25D 0x8957 -0xD25E 0x8958 -0xD25F 0x8959 -0xD260 0x895A -0xD261 0x895B -0xD262 0x895C -0xD263 0x895D -0xD264 0x8960 -0xD265 0x8961 -0xD266 0x8962 -0xD267 0x8963 -0xD268 0x8964 -0xD269 0x8965 -0xD26A 0x8967 -0xD26B 0x8968 -0xD26C 0x8969 -0xD26D 0x896A -0xD26E 0x896B -0xD26F 0x896C -0xD270 0x896D -0xD271 0x896E -0xD272 0x896F -0xD273 0x8970 -0xD274 0x8971 -0xD275 0x8972 -0xD276 0x8973 -0xD277 0x8974 -0xD278 0x8975 -0xD279 0x8976 -0xD27A 0x8977 -0xD27B 0x8978 -0xD27C 0x8979 -0xD27D 0x897A -0xD27E 0x897C -0xD280 0x897D -0xD281 0x897E -0xD282 0x8980 -0xD283 0x8982 -0xD284 0x8984 -0xD285 0x8985 -0xD286 0x8987 -0xD287 0x8988 -0xD288 0x8989 -0xD289 0x898A -0xD28A 0x898B -0xD28B 0x898C -0xD28C 0x898D -0xD28D 0x898E -0xD28E 0x898F -0xD28F 0x8990 -0xD290 0x8991 -0xD291 0x8992 -0xD292 0x8993 -0xD293 0x8994 -0xD294 0x8995 -0xD295 0x8996 -0xD296 0x8997 -0xD297 0x8998 -0xD298 0x8999 -0xD299 0x899A -0xD29A 0x899B -0xD29B 0x899C -0xD29C 0x899D -0xD29D 0x899E -0xD29E 0x899F -0xD29F 0x89A0 -0xD2A0 0x89A1 -0xD2A1 0x6447 -0xD2A2 0x5C27 -0xD2A3 0x9065 -0xD2A4 0x7A91 -0xD2A5 0x8C23 -0xD2A6 0x59DA -0xD2A7 0x54AC -0xD2A8 0x8200 -0xD2A9 0x836F -0xD2AA 0x8981 -0xD2AB 0x8000 -0xD2AC 0x6930 -0xD2AD 0x564E -0xD2AE 0x8036 -0xD2AF 0x7237 -0xD2B0 0x91CE -0xD2B1 0x51B6 -0xD2B2 0x4E5F -0xD2B3 0x9875 -0xD2B4 0x6396 -0xD2B5 0x4E1A -0xD2B6 0x53F6 -0xD2B7 0x66F3 -0xD2B8 0x814B -0xD2B9 0x591C -0xD2BA 0x6DB2 -0xD2BB 0x4E00 -0xD2BC 0x58F9 -0xD2BD 0x533B -0xD2BE 0x63D6 -0xD2BF 0x94F1 -0xD2C0 0x4F9D -0xD2C1 0x4F0A -0xD2C2 0x8863 -0xD2C3 0x9890 -0xD2C4 0x5937 -0xD2C5 0x9057 -0xD2C6 0x79FB -0xD2C7 0x4EEA -0xD2C8 0x80F0 -0xD2C9 0x7591 -0xD2CA 0x6C82 -0xD2CB 0x5B9C -0xD2CC 0x59E8 -0xD2CD 0x5F5D -0xD2CE 0x6905 -0xD2CF 0x8681 -0xD2D0 0x501A -0xD2D1 0x5DF2 -0xD2D2 0x4E59 -0xD2D3 0x77E3 -0xD2D4 0x4EE5 -0xD2D5 0x827A -0xD2D6 0x6291 -0xD2D7 0x6613 -0xD2D8 0x9091 -0xD2D9 0x5C79 -0xD2DA 0x4EBF -0xD2DB 0x5F79 -0xD2DC 0x81C6 -0xD2DD 0x9038 -0xD2DE 0x8084 -0xD2DF 0x75AB -0xD2E0 0x4EA6 -0xD2E1 0x88D4 -0xD2E2 0x610F -0xD2E3 0x6BC5 -0xD2E4 0x5FC6 -0xD2E5 0x4E49 -0xD2E6 0x76CA -0xD2E7 0x6EA2 -0xD2E8 0x8BE3 -0xD2E9 0x8BAE -0xD2EA 0x8C0A -0xD2EB 0x8BD1 -0xD2EC 0x5F02 -0xD2ED 0x7FFC -0xD2EE 0x7FCC -0xD2EF 0x7ECE -0xD2F0 0x8335 -0xD2F1 0x836B -0xD2F2 0x56E0 -0xD2F3 0x6BB7 -0xD2F4 0x97F3 -0xD2F5 0x9634 -0xD2F6 0x59FB -0xD2F7 0x541F -0xD2F8 0x94F6 -0xD2F9 0x6DEB -0xD2FA 0x5BC5 -0xD2FB 0x996E -0xD2FC 0x5C39 -0xD2FD 0x5F15 -0xD2FE 0x9690 -0xD340 0x89A2 -0xD341 0x89A3 -0xD342 0x89A4 -0xD343 0x89A5 -0xD344 0x89A6 -0xD345 0x89A7 -0xD346 0x89A8 -0xD347 0x89A9 -0xD348 0x89AA -0xD349 0x89AB -0xD34A 0x89AC -0xD34B 0x89AD -0xD34C 0x89AE -0xD34D 0x89AF -0xD34E 0x89B0 -0xD34F 0x89B1 -0xD350 0x89B2 -0xD351 0x89B3 -0xD352 0x89B4 -0xD353 0x89B5 -0xD354 0x89B6 -0xD355 0x89B7 -0xD356 0x89B8 -0xD357 0x89B9 -0xD358 0x89BA -0xD359 0x89BB -0xD35A 0x89BC -0xD35B 0x89BD -0xD35C 0x89BE -0xD35D 0x89BF -0xD35E 0x89C0 -0xD35F 0x89C3 -0xD360 0x89CD -0xD361 0x89D3 -0xD362 0x89D4 -0xD363 0x89D5 -0xD364 0x89D7 -0xD365 0x89D8 -0xD366 0x89D9 -0xD367 0x89DB -0xD368 0x89DD -0xD369 0x89DF -0xD36A 0x89E0 -0xD36B 0x89E1 -0xD36C 0x89E2 -0xD36D 0x89E4 -0xD36E 0x89E7 -0xD36F 0x89E8 -0xD370 0x89E9 -0xD371 0x89EA -0xD372 0x89EC -0xD373 0x89ED -0xD374 0x89EE -0xD375 0x89F0 -0xD376 0x89F1 -0xD377 0x89F2 -0xD378 0x89F4 -0xD379 0x89F5 -0xD37A 0x89F6 -0xD37B 0x89F7 -0xD37C 0x89F8 -0xD37D 0x89F9 -0xD37E 0x89FA -0xD380 0x89FB -0xD381 0x89FC -0xD382 0x89FD -0xD383 0x89FE -0xD384 0x89FF -0xD385 0x8A01 -0xD386 0x8A02 -0xD387 0x8A03 -0xD388 0x8A04 -0xD389 0x8A05 -0xD38A 0x8A06 -0xD38B 0x8A08 -0xD38C 0x8A09 -0xD38D 0x8A0A -0xD38E 0x8A0B -0xD38F 0x8A0C -0xD390 0x8A0D -0xD391 0x8A0E -0xD392 0x8A0F -0xD393 0x8A10 -0xD394 0x8A11 -0xD395 0x8A12 -0xD396 0x8A13 -0xD397 0x8A14 -0xD398 0x8A15 -0xD399 0x8A16 -0xD39A 0x8A17 -0xD39B 0x8A18 -0xD39C 0x8A19 -0xD39D 0x8A1A -0xD39E 0x8A1B -0xD39F 0x8A1C -0xD3A0 0x8A1D -0xD3A1 0x5370 -0xD3A2 0x82F1 -0xD3A3 0x6A31 -0xD3A4 0x5A74 -0xD3A5 0x9E70 -0xD3A6 0x5E94 -0xD3A7 0x7F28 -0xD3A8 0x83B9 -0xD3A9 0x8424 -0xD3AA 0x8425 -0xD3AB 0x8367 -0xD3AC 0x8747 -0xD3AD 0x8FCE -0xD3AE 0x8D62 -0xD3AF 0x76C8 -0xD3B0 0x5F71 -0xD3B1 0x9896 -0xD3B2 0x786C -0xD3B3 0x6620 -0xD3B4 0x54DF -0xD3B5 0x62E5 -0xD3B6 0x4F63 -0xD3B7 0x81C3 -0xD3B8 0x75C8 -0xD3B9 0x5EB8 -0xD3BA 0x96CD -0xD3BB 0x8E0A -0xD3BC 0x86F9 -0xD3BD 0x548F -0xD3BE 0x6CF3 -0xD3BF 0x6D8C -0xD3C0 0x6C38 -0xD3C1 0x607F -0xD3C2 0x52C7 -0xD3C3 0x7528 -0xD3C4 0x5E7D -0xD3C5 0x4F18 -0xD3C6 0x60A0 -0xD3C7 0x5FE7 -0xD3C8 0x5C24 -0xD3C9 0x7531 -0xD3CA 0x90AE -0xD3CB 0x94C0 -0xD3CC 0x72B9 -0xD3CD 0x6CB9 -0xD3CE 0x6E38 -0xD3CF 0x9149 -0xD3D0 0x6709 -0xD3D1 0x53CB -0xD3D2 0x53F3 -0xD3D3 0x4F51 -0xD3D4 0x91C9 -0xD3D5 0x8BF1 -0xD3D6 0x53C8 -0xD3D7 0x5E7C -0xD3D8 0x8FC2 -0xD3D9 0x6DE4 -0xD3DA 0x4E8E -0xD3DB 0x76C2 -0xD3DC 0x6986 -0xD3DD 0x865E -0xD3DE 0x611A -0xD3DF 0x8206 -0xD3E0 0x4F59 -0xD3E1 0x4FDE -0xD3E2 0x903E -0xD3E3 0x9C7C -0xD3E4 0x6109 -0xD3E5 0x6E1D -0xD3E6 0x6E14 -0xD3E7 0x9685 -0xD3E8 0x4E88 -0xD3E9 0x5A31 -0xD3EA 0x96E8 -0xD3EB 0x4E0E -0xD3EC 0x5C7F -0xD3ED 0x79B9 -0xD3EE 0x5B87 -0xD3EF 0x8BED -0xD3F0 0x7FBD -0xD3F1 0x7389 -0xD3F2 0x57DF -0xD3F3 0x828B -0xD3F4 0x90C1 -0xD3F5 0x5401 -0xD3F6 0x9047 -0xD3F7 0x55BB -0xD3F8 0x5CEA -0xD3F9 0x5FA1 -0xD3FA 0x6108 -0xD3FB 0x6B32 -0xD3FC 0x72F1 -0xD3FD 0x80B2 -0xD3FE 0x8A89 -0xD440 0x8A1E -0xD441 0x8A1F -0xD442 0x8A20 -0xD443 0x8A21 -0xD444 0x8A22 -0xD445 0x8A23 -0xD446 0x8A24 -0xD447 0x8A25 -0xD448 0x8A26 -0xD449 0x8A27 -0xD44A 0x8A28 -0xD44B 0x8A29 -0xD44C 0x8A2A -0xD44D 0x8A2B -0xD44E 0x8A2C -0xD44F 0x8A2D -0xD450 0x8A2E -0xD451 0x8A2F -0xD452 0x8A30 -0xD453 0x8A31 -0xD454 0x8A32 -0xD455 0x8A33 -0xD456 0x8A34 -0xD457 0x8A35 -0xD458 0x8A36 -0xD459 0x8A37 -0xD45A 0x8A38 -0xD45B 0x8A39 -0xD45C 0x8A3A -0xD45D 0x8A3B -0xD45E 0x8A3C -0xD45F 0x8A3D -0xD460 0x8A3F -0xD461 0x8A40 -0xD462 0x8A41 -0xD463 0x8A42 -0xD464 0x8A43 -0xD465 0x8A44 -0xD466 0x8A45 -0xD467 0x8A46 -0xD468 0x8A47 -0xD469 0x8A49 -0xD46A 0x8A4A -0xD46B 0x8A4B -0xD46C 0x8A4C -0xD46D 0x8A4D -0xD46E 0x8A4E -0xD46F 0x8A4F -0xD470 0x8A50 -0xD471 0x8A51 -0xD472 0x8A52 -0xD473 0x8A53 -0xD474 0x8A54 -0xD475 0x8A55 -0xD476 0x8A56 -0xD477 0x8A57 -0xD478 0x8A58 -0xD479 0x8A59 -0xD47A 0x8A5A -0xD47B 0x8A5B -0xD47C 0x8A5C -0xD47D 0x8A5D -0xD47E 0x8A5E -0xD480 0x8A5F -0xD481 0x8A60 -0xD482 0x8A61 -0xD483 0x8A62 -0xD484 0x8A63 -0xD485 0x8A64 -0xD486 0x8A65 -0xD487 0x8A66 -0xD488 0x8A67 -0xD489 0x8A68 -0xD48A 0x8A69 -0xD48B 0x8A6A -0xD48C 0x8A6B -0xD48D 0x8A6C -0xD48E 0x8A6D -0xD48F 0x8A6E -0xD490 0x8A6F -0xD491 0x8A70 -0xD492 0x8A71 -0xD493 0x8A72 -0xD494 0x8A73 -0xD495 0x8A74 -0xD496 0x8A75 -0xD497 0x8A76 -0xD498 0x8A77 -0xD499 0x8A78 -0xD49A 0x8A7A -0xD49B 0x8A7B -0xD49C 0x8A7C -0xD49D 0x8A7D -0xD49E 0x8A7E -0xD49F 0x8A7F -0xD4A0 0x8A80 -0xD4A1 0x6D74 -0xD4A2 0x5BD3 -0xD4A3 0x88D5 -0xD4A4 0x9884 -0xD4A5 0x8C6B -0xD4A6 0x9A6D -0xD4A7 0x9E33 -0xD4A8 0x6E0A -0xD4A9 0x51A4 -0xD4AA 0x5143 -0xD4AB 0x57A3 -0xD4AC 0x8881 -0xD4AD 0x539F -0xD4AE 0x63F4 -0xD4AF 0x8F95 -0xD4B0 0x56ED -0xD4B1 0x5458 -0xD4B2 0x5706 -0xD4B3 0x733F -0xD4B4 0x6E90 -0xD4B5 0x7F18 -0xD4B6 0x8FDC -0xD4B7 0x82D1 -0xD4B8 0x613F -0xD4B9 0x6028 -0xD4BA 0x9662 -0xD4BB 0x66F0 -0xD4BC 0x7EA6 -0xD4BD 0x8D8A -0xD4BE 0x8DC3 -0xD4BF 0x94A5 -0xD4C0 0x5CB3 -0xD4C1 0x7CA4 -0xD4C2 0x6708 -0xD4C3 0x60A6 -0xD4C4 0x9605 -0xD4C5 0x8018 -0xD4C6 0x4E91 -0xD4C7 0x90E7 -0xD4C8 0x5300 -0xD4C9 0x9668 -0xD4CA 0x5141 -0xD4CB 0x8FD0 -0xD4CC 0x8574 -0xD4CD 0x915D -0xD4CE 0x6655 -0xD4CF 0x97F5 -0xD4D0 0x5B55 -0xD4D1 0x531D -0xD4D2 0x7838 -0xD4D3 0x6742 -0xD4D4 0x683D -0xD4D5 0x54C9 -0xD4D6 0x707E -0xD4D7 0x5BB0 -0xD4D8 0x8F7D -0xD4D9 0x518D -0xD4DA 0x5728 -0xD4DB 0x54B1 -0xD4DC 0x6512 -0xD4DD 0x6682 -0xD4DE 0x8D5E -0xD4DF 0x8D43 -0xD4E0 0x810F -0xD4E1 0x846C -0xD4E2 0x906D -0xD4E3 0x7CDF -0xD4E4 0x51FF -0xD4E5 0x85FB -0xD4E6 0x67A3 -0xD4E7 0x65E9 -0xD4E8 0x6FA1 -0xD4E9 0x86A4 -0xD4EA 0x8E81 -0xD4EB 0x566A -0xD4EC 0x9020 -0xD4ED 0x7682 -0xD4EE 0x7076 -0xD4EF 0x71E5 -0xD4F0 0x8D23 -0xD4F1 0x62E9 -0xD4F2 0x5219 -0xD4F3 0x6CFD -0xD4F4 0x8D3C -0xD4F5 0x600E -0xD4F6 0x589E -0xD4F7 0x618E -0xD4F8 0x66FE -0xD4F9 0x8D60 -0xD4FA 0x624E -0xD4FB 0x55B3 -0xD4FC 0x6E23 -0xD4FD 0x672D -0xD4FE 0x8F67 -0xD540 0x8A81 -0xD541 0x8A82 -0xD542 0x8A83 -0xD543 0x8A84 -0xD544 0x8A85 -0xD545 0x8A86 -0xD546 0x8A87 -0xD547 0x8A88 -0xD548 0x8A8B -0xD549 0x8A8C -0xD54A 0x8A8D -0xD54B 0x8A8E -0xD54C 0x8A8F -0xD54D 0x8A90 -0xD54E 0x8A91 -0xD54F 0x8A92 -0xD550 0x8A94 -0xD551 0x8A95 -0xD552 0x8A96 -0xD553 0x8A97 -0xD554 0x8A98 -0xD555 0x8A99 -0xD556 0x8A9A -0xD557 0x8A9B -0xD558 0x8A9C -0xD559 0x8A9D -0xD55A 0x8A9E -0xD55B 0x8A9F -0xD55C 0x8AA0 -0xD55D 0x8AA1 -0xD55E 0x8AA2 -0xD55F 0x8AA3 -0xD560 0x8AA4 -0xD561 0x8AA5 -0xD562 0x8AA6 -0xD563 0x8AA7 -0xD564 0x8AA8 -0xD565 0x8AA9 -0xD566 0x8AAA -0xD567 0x8AAB -0xD568 0x8AAC -0xD569 0x8AAD -0xD56A 0x8AAE -0xD56B 0x8AAF -0xD56C 0x8AB0 -0xD56D 0x8AB1 -0xD56E 0x8AB2 -0xD56F 0x8AB3 -0xD570 0x8AB4 -0xD571 0x8AB5 -0xD572 0x8AB6 -0xD573 0x8AB7 -0xD574 0x8AB8 -0xD575 0x8AB9 -0xD576 0x8ABA -0xD577 0x8ABB -0xD578 0x8ABC -0xD579 0x8ABD -0xD57A 0x8ABE -0xD57B 0x8ABF -0xD57C 0x8AC0 -0xD57D 0x8AC1 -0xD57E 0x8AC2 -0xD580 0x8AC3 -0xD581 0x8AC4 -0xD582 0x8AC5 -0xD583 0x8AC6 -0xD584 0x8AC7 -0xD585 0x8AC8 -0xD586 0x8AC9 -0xD587 0x8ACA -0xD588 0x8ACB -0xD589 0x8ACC -0xD58A 0x8ACD -0xD58B 0x8ACE -0xD58C 0x8ACF -0xD58D 0x8AD0 -0xD58E 0x8AD1 -0xD58F 0x8AD2 -0xD590 0x8AD3 -0xD591 0x8AD4 -0xD592 0x8AD5 -0xD593 0x8AD6 -0xD594 0x8AD7 -0xD595 0x8AD8 -0xD596 0x8AD9 -0xD597 0x8ADA -0xD598 0x8ADB -0xD599 0x8ADC -0xD59A 0x8ADD -0xD59B 0x8ADE -0xD59C 0x8ADF -0xD59D 0x8AE0 -0xD59E 0x8AE1 -0xD59F 0x8AE2 -0xD5A0 0x8AE3 -0xD5A1 0x94E1 -0xD5A2 0x95F8 -0xD5A3 0x7728 -0xD5A4 0x6805 -0xD5A5 0x69A8 -0xD5A6 0x548B -0xD5A7 0x4E4D -0xD5A8 0x70B8 -0xD5A9 0x8BC8 -0xD5AA 0x6458 -0xD5AB 0x658B -0xD5AC 0x5B85 -0xD5AD 0x7A84 -0xD5AE 0x503A -0xD5AF 0x5BE8 -0xD5B0 0x77BB -0xD5B1 0x6BE1 -0xD5B2 0x8A79 -0xD5B3 0x7C98 -0xD5B4 0x6CBE -0xD5B5 0x76CF -0xD5B6 0x65A9 -0xD5B7 0x8F97 -0xD5B8 0x5D2D -0xD5B9 0x5C55 -0xD5BA 0x8638 -0xD5BB 0x6808 -0xD5BC 0x5360 -0xD5BD 0x6218 -0xD5BE 0x7AD9 -0xD5BF 0x6E5B -0xD5C0 0x7EFD -0xD5C1 0x6A1F -0xD5C2 0x7AE0 -0xD5C3 0x5F70 -0xD5C4 0x6F33 -0xD5C5 0x5F20 -0xD5C6 0x638C -0xD5C7 0x6DA8 -0xD5C8 0x6756 -0xD5C9 0x4E08 -0xD5CA 0x5E10 -0xD5CB 0x8D26 -0xD5CC 0x4ED7 -0xD5CD 0x80C0 -0xD5CE 0x7634 -0xD5CF 0x969C -0xD5D0 0x62DB -0xD5D1 0x662D -0xD5D2 0x627E -0xD5D3 0x6CBC -0xD5D4 0x8D75 -0xD5D5 0x7167 -0xD5D6 0x7F69 -0xD5D7 0x5146 -0xD5D8 0x8087 -0xD5D9 0x53EC -0xD5DA 0x906E -0xD5DB 0x6298 -0xD5DC 0x54F2 -0xD5DD 0x86F0 -0xD5DE 0x8F99 -0xD5DF 0x8005 -0xD5E0 0x9517 -0xD5E1 0x8517 -0xD5E2 0x8FD9 -0xD5E3 0x6D59 -0xD5E4 0x73CD -0xD5E5 0x659F -0xD5E6 0x771F -0xD5E7 0x7504 -0xD5E8 0x7827 -0xD5E9 0x81FB -0xD5EA 0x8D1E -0xD5EB 0x9488 -0xD5EC 0x4FA6 -0xD5ED 0x6795 -0xD5EE 0x75B9 -0xD5EF 0x8BCA -0xD5F0 0x9707 -0xD5F1 0x632F -0xD5F2 0x9547 -0xD5F3 0x9635 -0xD5F4 0x84B8 -0xD5F5 0x6323 -0xD5F6 0x7741 -0xD5F7 0x5F81 -0xD5F8 0x72F0 -0xD5F9 0x4E89 -0xD5FA 0x6014 -0xD5FB 0x6574 -0xD5FC 0x62EF -0xD5FD 0x6B63 -0xD5FE 0x653F -0xD640 0x8AE4 -0xD641 0x8AE5 -0xD642 0x8AE6 -0xD643 0x8AE7 -0xD644 0x8AE8 -0xD645 0x8AE9 -0xD646 0x8AEA -0xD647 0x8AEB -0xD648 0x8AEC -0xD649 0x8AED -0xD64A 0x8AEE -0xD64B 0x8AEF -0xD64C 0x8AF0 -0xD64D 0x8AF1 -0xD64E 0x8AF2 -0xD64F 0x8AF3 -0xD650 0x8AF4 -0xD651 0x8AF5 -0xD652 0x8AF6 -0xD653 0x8AF7 -0xD654 0x8AF8 -0xD655 0x8AF9 -0xD656 0x8AFA -0xD657 0x8AFB -0xD658 0x8AFC -0xD659 0x8AFD -0xD65A 0x8AFE -0xD65B 0x8AFF -0xD65C 0x8B00 -0xD65D 0x8B01 -0xD65E 0x8B02 -0xD65F 0x8B03 -0xD660 0x8B04 -0xD661 0x8B05 -0xD662 0x8B06 -0xD663 0x8B08 -0xD664 0x8B09 -0xD665 0x8B0A -0xD666 0x8B0B -0xD667 0x8B0C -0xD668 0x8B0D -0xD669 0x8B0E -0xD66A 0x8B0F -0xD66B 0x8B10 -0xD66C 0x8B11 -0xD66D 0x8B12 -0xD66E 0x8B13 -0xD66F 0x8B14 -0xD670 0x8B15 -0xD671 0x8B16 -0xD672 0x8B17 -0xD673 0x8B18 -0xD674 0x8B19 -0xD675 0x8B1A -0xD676 0x8B1B -0xD677 0x8B1C -0xD678 0x8B1D -0xD679 0x8B1E -0xD67A 0x8B1F -0xD67B 0x8B20 -0xD67C 0x8B21 -0xD67D 0x8B22 -0xD67E 0x8B23 -0xD680 0x8B24 -0xD681 0x8B25 -0xD682 0x8B27 -0xD683 0x8B28 -0xD684 0x8B29 -0xD685 0x8B2A -0xD686 0x8B2B -0xD687 0x8B2C -0xD688 0x8B2D -0xD689 0x8B2E -0xD68A 0x8B2F -0xD68B 0x8B30 -0xD68C 0x8B31 -0xD68D 0x8B32 -0xD68E 0x8B33 -0xD68F 0x8B34 -0xD690 0x8B35 -0xD691 0x8B36 -0xD692 0x8B37 -0xD693 0x8B38 -0xD694 0x8B39 -0xD695 0x8B3A -0xD696 0x8B3B -0xD697 0x8B3C -0xD698 0x8B3D -0xD699 0x8B3E -0xD69A 0x8B3F -0xD69B 0x8B40 -0xD69C 0x8B41 -0xD69D 0x8B42 -0xD69E 0x8B43 -0xD69F 0x8B44 -0xD6A0 0x8B45 -0xD6A1 0x5E27 -0xD6A2 0x75C7 -0xD6A3 0x90D1 -0xD6A4 0x8BC1 -0xD6A5 0x829D -0xD6A6 0x679D -0xD6A7 0x652F -0xD6A8 0x5431 -0xD6A9 0x8718 -0xD6AA 0x77E5 -0xD6AB 0x80A2 -0xD6AC 0x8102 -0xD6AD 0x6C41 -0xD6AE 0x4E4B -0xD6AF 0x7EC7 -0xD6B0 0x804C -0xD6B1 0x76F4 -0xD6B2 0x690D -0xD6B3 0x6B96 -0xD6B4 0x6267 -0xD6B5 0x503C -0xD6B6 0x4F84 -0xD6B7 0x5740 -0xD6B8 0x6307 -0xD6B9 0x6B62 -0xD6BA 0x8DBE -0xD6BB 0x53EA -0xD6BC 0x65E8 -0xD6BD 0x7EB8 -0xD6BE 0x5FD7 -0xD6BF 0x631A -0xD6C0 0x63B7 -0xD6C1 0x81F3 -0xD6C2 0x81F4 -0xD6C3 0x7F6E -0xD6C4 0x5E1C -0xD6C5 0x5CD9 -0xD6C6 0x5236 -0xD6C7 0x667A -0xD6C8 0x79E9 -0xD6C9 0x7A1A -0xD6CA 0x8D28 -0xD6CB 0x7099 -0xD6CC 0x75D4 -0xD6CD 0x6EDE -0xD6CE 0x6CBB -0xD6CF 0x7A92 -0xD6D0 0x4E2D -0xD6D1 0x76C5 -0xD6D2 0x5FE0 -0xD6D3 0x949F -0xD6D4 0x8877 -0xD6D5 0x7EC8 -0xD6D6 0x79CD -0xD6D7 0x80BF -0xD6D8 0x91CD -0xD6D9 0x4EF2 -0xD6DA 0x4F17 -0xD6DB 0x821F -0xD6DC 0x5468 -0xD6DD 0x5DDE -0xD6DE 0x6D32 -0xD6DF 0x8BCC -0xD6E0 0x7CA5 -0xD6E1 0x8F74 -0xD6E2 0x8098 -0xD6E3 0x5E1A -0xD6E4 0x5492 -0xD6E5 0x76B1 -0xD6E6 0x5B99 -0xD6E7 0x663C -0xD6E8 0x9AA4 -0xD6E9 0x73E0 -0xD6EA 0x682A -0xD6EB 0x86DB -0xD6EC 0x6731 -0xD6ED 0x732A -0xD6EE 0x8BF8 -0xD6EF 0x8BDB -0xD6F0 0x9010 -0xD6F1 0x7AF9 -0xD6F2 0x70DB -0xD6F3 0x716E -0xD6F4 0x62C4 -0xD6F5 0x77A9 -0xD6F6 0x5631 -0xD6F7 0x4E3B -0xD6F8 0x8457 -0xD6F9 0x67F1 -0xD6FA 0x52A9 -0xD6FB 0x86C0 -0xD6FC 0x8D2E -0xD6FD 0x94F8 -0xD6FE 0x7B51 -0xD740 0x8B46 -0xD741 0x8B47 -0xD742 0x8B48 -0xD743 0x8B49 -0xD744 0x8B4A -0xD745 0x8B4B -0xD746 0x8B4C -0xD747 0x8B4D -0xD748 0x8B4E -0xD749 0x8B4F -0xD74A 0x8B50 -0xD74B 0x8B51 -0xD74C 0x8B52 -0xD74D 0x8B53 -0xD74E 0x8B54 -0xD74F 0x8B55 -0xD750 0x8B56 -0xD751 0x8B57 -0xD752 0x8B58 -0xD753 0x8B59 -0xD754 0x8B5A -0xD755 0x8B5B -0xD756 0x8B5C -0xD757 0x8B5D -0xD758 0x8B5E -0xD759 0x8B5F -0xD75A 0x8B60 -0xD75B 0x8B61 -0xD75C 0x8B62 -0xD75D 0x8B63 -0xD75E 0x8B64 -0xD75F 0x8B65 -0xD760 0x8B67 -0xD761 0x8B68 -0xD762 0x8B69 -0xD763 0x8B6A -0xD764 0x8B6B -0xD765 0x8B6D -0xD766 0x8B6E -0xD767 0x8B6F -0xD768 0x8B70 -0xD769 0x8B71 -0xD76A 0x8B72 -0xD76B 0x8B73 -0xD76C 0x8B74 -0xD76D 0x8B75 -0xD76E 0x8B76 -0xD76F 0x8B77 -0xD770 0x8B78 -0xD771 0x8B79 -0xD772 0x8B7A -0xD773 0x8B7B -0xD774 0x8B7C -0xD775 0x8B7D -0xD776 0x8B7E -0xD777 0x8B7F -0xD778 0x8B80 -0xD779 0x8B81 -0xD77A 0x8B82 -0xD77B 0x8B83 -0xD77C 0x8B84 -0xD77D 0x8B85 -0xD77E 0x8B86 -0xD780 0x8B87 -0xD781 0x8B88 -0xD782 0x8B89 -0xD783 0x8B8A -0xD784 0x8B8B -0xD785 0x8B8C -0xD786 0x8B8D -0xD787 0x8B8E -0xD788 0x8B8F -0xD789 0x8B90 -0xD78A 0x8B91 -0xD78B 0x8B92 -0xD78C 0x8B93 -0xD78D 0x8B94 -0xD78E 0x8B95 -0xD78F 0x8B96 -0xD790 0x8B97 -0xD791 0x8B98 -0xD792 0x8B99 -0xD793 0x8B9A -0xD794 0x8B9B -0xD795 0x8B9C -0xD796 0x8B9D -0xD797 0x8B9E -0xD798 0x8B9F -0xD799 0x8BAC -0xD79A 0x8BB1 -0xD79B 0x8BBB -0xD79C 0x8BC7 -0xD79D 0x8BD0 -0xD79E 0x8BEA -0xD79F 0x8C09 -0xD7A0 0x8C1E -0xD7A1 0x4F4F -0xD7A2 0x6CE8 -0xD7A3 0x795D -0xD7A4 0x9A7B -0xD7A5 0x6293 -0xD7A6 0x722A -0xD7A7 0x62FD -0xD7A8 0x4E13 -0xD7A9 0x7816 -0xD7AA 0x8F6C -0xD7AB 0x64B0 -0xD7AC 0x8D5A -0xD7AD 0x7BC6 -0xD7AE 0x6869 -0xD7AF 0x5E84 -0xD7B0 0x88C5 -0xD7B1 0x5986 -0xD7B2 0x649E -0xD7B3 0x58EE -0xD7B4 0x72B6 -0xD7B5 0x690E -0xD7B6 0x9525 -0xD7B7 0x8FFD -0xD7B8 0x8D58 -0xD7B9 0x5760 -0xD7BA 0x7F00 -0xD7BB 0x8C06 -0xD7BC 0x51C6 -0xD7BD 0x6349 -0xD7BE 0x62D9 -0xD7BF 0x5353 -0xD7C0 0x684C -0xD7C1 0x7422 -0xD7C2 0x8301 -0xD7C3 0x914C -0xD7C4 0x5544 -0xD7C5 0x7740 -0xD7C6 0x707C -0xD7C7 0x6D4A -0xD7C8 0x5179 -0xD7C9 0x54A8 -0xD7CA 0x8D44 -0xD7CB 0x59FF -0xD7CC 0x6ECB -0xD7CD 0x6DC4 -0xD7CE 0x5B5C -0xD7CF 0x7D2B -0xD7D0 0x4ED4 -0xD7D1 0x7C7D -0xD7D2 0x6ED3 -0xD7D3 0x5B50 -0xD7D4 0x81EA -0xD7D5 0x6E0D -0xD7D6 0x5B57 -0xD7D7 0x9B03 -0xD7D8 0x68D5 -0xD7D9 0x8E2A -0xD7DA 0x5B97 -0xD7DB 0x7EFC -0xD7DC 0x603B -0xD7DD 0x7EB5 -0xD7DE 0x90B9 -0xD7DF 0x8D70 -0xD7E0 0x594F -0xD7E1 0x63CD -0xD7E2 0x79DF -0xD7E3 0x8DB3 -0xD7E4 0x5352 -0xD7E5 0x65CF -0xD7E6 0x7956 -0xD7E7 0x8BC5 -0xD7E8 0x963B -0xD7E9 0x7EC4 -0xD7EA 0x94BB -0xD7EB 0x7E82 -0xD7EC 0x5634 -0xD7ED 0x9189 -0xD7EE 0x6700 -0xD7EF 0x7F6A -0xD7F0 0x5C0A -0xD7F1 0x9075 -0xD7F2 0x6628 -0xD7F3 0x5DE6 -0xD7F4 0x4F50 -0xD7F5 0x67DE -0xD7F6 0x505A -0xD7F7 0x4F5C -0xD7F8 0x5750 -0xD7F9 0x5EA7 -0xD840 0x8C38 -0xD841 0x8C39 -0xD842 0x8C3A -0xD843 0x8C3B -0xD844 0x8C3C -0xD845 0x8C3D -0xD846 0x8C3E -0xD847 0x8C3F -0xD848 0x8C40 -0xD849 0x8C42 -0xD84A 0x8C43 -0xD84B 0x8C44 -0xD84C 0x8C45 -0xD84D 0x8C48 -0xD84E 0x8C4A -0xD84F 0x8C4B -0xD850 0x8C4D -0xD851 0x8C4E -0xD852 0x8C4F -0xD853 0x8C50 -0xD854 0x8C51 -0xD855 0x8C52 -0xD856 0x8C53 -0xD857 0x8C54 -0xD858 0x8C56 -0xD859 0x8C57 -0xD85A 0x8C58 -0xD85B 0x8C59 -0xD85C 0x8C5B -0xD85D 0x8C5C -0xD85E 0x8C5D -0xD85F 0x8C5E -0xD860 0x8C5F -0xD861 0x8C60 -0xD862 0x8C63 -0xD863 0x8C64 -0xD864 0x8C65 -0xD865 0x8C66 -0xD866 0x8C67 -0xD867 0x8C68 -0xD868 0x8C69 -0xD869 0x8C6C -0xD86A 0x8C6D -0xD86B 0x8C6E -0xD86C 0x8C6F -0xD86D 0x8C70 -0xD86E 0x8C71 -0xD86F 0x8C72 -0xD870 0x8C74 -0xD871 0x8C75 -0xD872 0x8C76 -0xD873 0x8C77 -0xD874 0x8C7B -0xD875 0x8C7C -0xD876 0x8C7D -0xD877 0x8C7E -0xD878 0x8C7F -0xD879 0x8C80 -0xD87A 0x8C81 -0xD87B 0x8C83 -0xD87C 0x8C84 -0xD87D 0x8C86 -0xD87E 0x8C87 -0xD880 0x8C88 -0xD881 0x8C8B -0xD882 0x8C8D -0xD883 0x8C8E -0xD884 0x8C8F -0xD885 0x8C90 -0xD886 0x8C91 -0xD887 0x8C92 -0xD888 0x8C93 -0xD889 0x8C95 -0xD88A 0x8C96 -0xD88B 0x8C97 -0xD88C 0x8C99 -0xD88D 0x8C9A -0xD88E 0x8C9B -0xD88F 0x8C9C -0xD890 0x8C9D -0xD891 0x8C9E -0xD892 0x8C9F -0xD893 0x8CA0 -0xD894 0x8CA1 -0xD895 0x8CA2 -0xD896 0x8CA3 -0xD897 0x8CA4 -0xD898 0x8CA5 -0xD899 0x8CA6 -0xD89A 0x8CA7 -0xD89B 0x8CA8 -0xD89C 0x8CA9 -0xD89D 0x8CAA -0xD89E 0x8CAB -0xD89F 0x8CAC -0xD8A0 0x8CAD -0xD8A1 0x4E8D -0xD8A2 0x4E0C -0xD8A3 0x5140 -0xD8A4 0x4E10 -0xD8A5 0x5EFF -0xD8A6 0x5345 -0xD8A7 0x4E15 -0xD8A8 0x4E98 -0xD8A9 0x4E1E -0xD8AA 0x9B32 -0xD8AB 0x5B6C -0xD8AC 0x5669 -0xD8AD 0x4E28 -0xD8AE 0x79BA -0xD8AF 0x4E3F -0xD8B0 0x5315 -0xD8B1 0x4E47 -0xD8B2 0x592D -0xD8B3 0x723B -0xD8B4 0x536E -0xD8B5 0x6C10 -0xD8B6 0x56DF -0xD8B7 0x80E4 -0xD8B8 0x9997 -0xD8B9 0x6BD3 -0xD8BA 0x777E -0xD8BB 0x9F17 -0xD8BC 0x4E36 -0xD8BD 0x4E9F -0xD8BE 0x9F10 -0xD8BF 0x4E5C -0xD8C0 0x4E69 -0xD8C1 0x4E93 -0xD8C2 0x8288 -0xD8C3 0x5B5B -0xD8C4 0x556C -0xD8C5 0x560F -0xD8C6 0x4EC4 -0xD8C7 0x538D -0xD8C8 0x539D -0xD8C9 0x53A3 -0xD8CA 0x53A5 -0xD8CB 0x53AE -0xD8CC 0x9765 -0xD8CD 0x8D5D -0xD8CE 0x531A -0xD8CF 0x53F5 -0xD8D0 0x5326 -0xD8D1 0x532E -0xD8D2 0x533E -0xD8D3 0x8D5C -0xD8D4 0x5366 -0xD8D5 0x5363 -0xD8D6 0x5202 -0xD8D7 0x5208 -0xD8D8 0x520E -0xD8D9 0x522D -0xD8DA 0x5233 -0xD8DB 0x523F -0xD8DC 0x5240 -0xD8DD 0x524C -0xD8DE 0x525E -0xD8DF 0x5261 -0xD8E0 0x525C -0xD8E1 0x84AF -0xD8E2 0x527D -0xD8E3 0x5282 -0xD8E4 0x5281 -0xD8E5 0x5290 -0xD8E6 0x5293 -0xD8E7 0x5182 -0xD8E8 0x7F54 -0xD8E9 0x4EBB -0xD8EA 0x4EC3 -0xD8EB 0x4EC9 -0xD8EC 0x4EC2 -0xD8ED 0x4EE8 -0xD8EE 0x4EE1 -0xD8EF 0x4EEB -0xD8F0 0x4EDE -0xD8F1 0x4F1B -0xD8F2 0x4EF3 -0xD8F3 0x4F22 -0xD8F4 0x4F64 -0xD8F5 0x4EF5 -0xD8F6 0x4F25 -0xD8F7 0x4F27 -0xD8F8 0x4F09 -0xD8F9 0x4F2B -0xD8FA 0x4F5E -0xD8FB 0x4F67 -0xD8FC 0x6538 -0xD8FD 0x4F5A -0xD8FE 0x4F5D -0xD940 0x8CAE -0xD941 0x8CAF -0xD942 0x8CB0 -0xD943 0x8CB1 -0xD944 0x8CB2 -0xD945 0x8CB3 -0xD946 0x8CB4 -0xD947 0x8CB5 -0xD948 0x8CB6 -0xD949 0x8CB7 -0xD94A 0x8CB8 -0xD94B 0x8CB9 -0xD94C 0x8CBA -0xD94D 0x8CBB -0xD94E 0x8CBC -0xD94F 0x8CBD -0xD950 0x8CBE -0xD951 0x8CBF -0xD952 0x8CC0 -0xD953 0x8CC1 -0xD954 0x8CC2 -0xD955 0x8CC3 -0xD956 0x8CC4 -0xD957 0x8CC5 -0xD958 0x8CC6 -0xD959 0x8CC7 -0xD95A 0x8CC8 -0xD95B 0x8CC9 -0xD95C 0x8CCA -0xD95D 0x8CCB -0xD95E 0x8CCC -0xD95F 0x8CCD -0xD960 0x8CCE -0xD961 0x8CCF -0xD962 0x8CD0 -0xD963 0x8CD1 -0xD964 0x8CD2 -0xD965 0x8CD3 -0xD966 0x8CD4 -0xD967 0x8CD5 -0xD968 0x8CD6 -0xD969 0x8CD7 -0xD96A 0x8CD8 -0xD96B 0x8CD9 -0xD96C 0x8CDA -0xD96D 0x8CDB -0xD96E 0x8CDC -0xD96F 0x8CDD -0xD970 0x8CDE -0xD971 0x8CDF -0xD972 0x8CE0 -0xD973 0x8CE1 -0xD974 0x8CE2 -0xD975 0x8CE3 -0xD976 0x8CE4 -0xD977 0x8CE5 -0xD978 0x8CE6 -0xD979 0x8CE7 -0xD97A 0x8CE8 -0xD97B 0x8CE9 -0xD97C 0x8CEA -0xD97D 0x8CEB -0xD97E 0x8CEC -0xD980 0x8CED -0xD981 0x8CEE -0xD982 0x8CEF -0xD983 0x8CF0 -0xD984 0x8CF1 -0xD985 0x8CF2 -0xD986 0x8CF3 -0xD987 0x8CF4 -0xD988 0x8CF5 -0xD989 0x8CF6 -0xD98A 0x8CF7 -0xD98B 0x8CF8 -0xD98C 0x8CF9 -0xD98D 0x8CFA -0xD98E 0x8CFB -0xD98F 0x8CFC -0xD990 0x8CFD -0xD991 0x8CFE -0xD992 0x8CFF -0xD993 0x8D00 -0xD994 0x8D01 -0xD995 0x8D02 -0xD996 0x8D03 -0xD997 0x8D04 -0xD998 0x8D05 -0xD999 0x8D06 -0xD99A 0x8D07 -0xD99B 0x8D08 -0xD99C 0x8D09 -0xD99D 0x8D0A -0xD99E 0x8D0B -0xD99F 0x8D0C -0xD9A0 0x8D0D -0xD9A1 0x4F5F -0xD9A2 0x4F57 -0xD9A3 0x4F32 -0xD9A4 0x4F3D -0xD9A5 0x4F76 -0xD9A6 0x4F74 -0xD9A7 0x4F91 -0xD9A8 0x4F89 -0xD9A9 0x4F83 -0xD9AA 0x4F8F -0xD9AB 0x4F7E -0xD9AC 0x4F7B -0xD9AD 0x4FAA -0xD9AE 0x4F7C -0xD9AF 0x4FAC -0xD9B0 0x4F94 -0xD9B1 0x4FE6 -0xD9B2 0x4FE8 -0xD9B3 0x4FEA -0xD9B4 0x4FC5 -0xD9B5 0x4FDA -0xD9B6 0x4FE3 -0xD9B7 0x4FDC -0xD9B8 0x4FD1 -0xD9B9 0x4FDF -0xD9BA 0x4FF8 -0xD9BB 0x5029 -0xD9BC 0x504C -0xD9BD 0x4FF3 -0xD9BE 0x502C -0xD9BF 0x500F -0xD9C0 0x502E -0xD9C1 0x502D -0xD9C2 0x4FFE -0xD9C3 0x501C -0xD9C4 0x500C -0xD9C5 0x5025 -0xD9C6 0x5028 -0xD9C7 0x507E -0xD9C8 0x5043 -0xD9C9 0x5055 -0xD9CA 0x5048 -0xD9CB 0x504E -0xD9CC 0x506C -0xD9CD 0x507B -0xD9CE 0x50A5 -0xD9CF 0x50A7 -0xD9D0 0x50A9 -0xD9D1 0x50BA -0xD9D2 0x50D6 -0xD9D3 0x5106 -0xD9D4 0x50ED -0xD9D5 0x50EC -0xD9D6 0x50E6 -0xD9D7 0x50EE -0xD9D8 0x5107 -0xD9D9 0x510B -0xD9DA 0x4EDD -0xD9DB 0x6C3D -0xD9DC 0x4F58 -0xD9DD 0x4F65 -0xD9DE 0x4FCE -0xD9DF 0x9FA0 -0xD9E0 0x6C46 -0xD9E1 0x7C74 -0xD9E2 0x516E -0xD9E3 0x5DFD -0xD9E4 0x9EC9 -0xD9E5 0x9998 -0xD9E6 0x5181 -0xD9E7 0x5914 -0xD9E8 0x52F9 -0xD9E9 0x530D -0xD9EA 0x8A07 -0xD9EB 0x5310 -0xD9EC 0x51EB -0xD9ED 0x5919 -0xD9EE 0x5155 -0xD9EF 0x4EA0 -0xD9F0 0x5156 -0xD9F1 0x4EB3 -0xD9F2 0x886E -0xD9F3 0x88A4 -0xD9F4 0x4EB5 -0xD9F5 0x8114 -0xD9F6 0x88D2 -0xD9F7 0x7980 -0xD9F8 0x5B34 -0xD9F9 0x8803 -0xD9FA 0x7FB8 -0xD9FB 0x51AB -0xD9FC 0x51B1 -0xD9FD 0x51BD -0xD9FE 0x51BC -0xDA40 0x8D0E -0xDA41 0x8D0F -0xDA42 0x8D10 -0xDA43 0x8D11 -0xDA44 0x8D12 -0xDA45 0x8D13 -0xDA46 0x8D14 -0xDA47 0x8D15 -0xDA48 0x8D16 -0xDA49 0x8D17 -0xDA4A 0x8D18 -0xDA4B 0x8D19 -0xDA4C 0x8D1A -0xDA4D 0x8D1B -0xDA4E 0x8D1C -0xDA4F 0x8D20 -0xDA50 0x8D51 -0xDA51 0x8D52 -0xDA52 0x8D57 -0xDA53 0x8D5F -0xDA54 0x8D65 -0xDA55 0x8D68 -0xDA56 0x8D69 -0xDA57 0x8D6A -0xDA58 0x8D6C -0xDA59 0x8D6E -0xDA5A 0x8D6F -0xDA5B 0x8D71 -0xDA5C 0x8D72 -0xDA5D 0x8D78 -0xDA5E 0x8D79 -0xDA5F 0x8D7A -0xDA60 0x8D7B -0xDA61 0x8D7C -0xDA62 0x8D7D -0xDA63 0x8D7E -0xDA64 0x8D7F -0xDA65 0x8D80 -0xDA66 0x8D82 -0xDA67 0x8D83 -0xDA68 0x8D86 -0xDA69 0x8D87 -0xDA6A 0x8D88 -0xDA6B 0x8D89 -0xDA6C 0x8D8C -0xDA6D 0x8D8D -0xDA6E 0x8D8E -0xDA6F 0x8D8F -0xDA70 0x8D90 -0xDA71 0x8D92 -0xDA72 0x8D93 -0xDA73 0x8D95 -0xDA74 0x8D96 -0xDA75 0x8D97 -0xDA76 0x8D98 -0xDA77 0x8D99 -0xDA78 0x8D9A -0xDA79 0x8D9B -0xDA7A 0x8D9C -0xDA7B 0x8D9D -0xDA7C 0x8D9E -0xDA7D 0x8DA0 -0xDA7E 0x8DA1 -0xDA80 0x8DA2 -0xDA81 0x8DA4 -0xDA82 0x8DA5 -0xDA83 0x8DA6 -0xDA84 0x8DA7 -0xDA85 0x8DA8 -0xDA86 0x8DA9 -0xDA87 0x8DAA -0xDA88 0x8DAB -0xDA89 0x8DAC -0xDA8A 0x8DAD -0xDA8B 0x8DAE -0xDA8C 0x8DAF -0xDA8D 0x8DB0 -0xDA8E 0x8DB2 -0xDA8F 0x8DB6 -0xDA90 0x8DB7 -0xDA91 0x8DB9 -0xDA92 0x8DBB -0xDA93 0x8DBD -0xDA94 0x8DC0 -0xDA95 0x8DC1 -0xDA96 0x8DC2 -0xDA97 0x8DC5 -0xDA98 0x8DC7 -0xDA99 0x8DC8 -0xDA9A 0x8DC9 -0xDA9B 0x8DCA -0xDA9C 0x8DCD -0xDA9D 0x8DD0 -0xDA9E 0x8DD2 -0xDA9F 0x8DD3 -0xDAA0 0x8DD4 -0xDAA1 0x51C7 -0xDAA2 0x5196 -0xDAA3 0x51A2 -0xDAA4 0x51A5 -0xDAA5 0x8BA0 -0xDAA6 0x8BA6 -0xDAA7 0x8BA7 -0xDAA8 0x8BAA -0xDAA9 0x8BB4 -0xDAAA 0x8BB5 -0xDAAB 0x8BB7 -0xDAAC 0x8BC2 -0xDAAD 0x8BC3 -0xDAAE 0x8BCB -0xDAAF 0x8BCF -0xDAB0 0x8BCE -0xDAB1 0x8BD2 -0xDAB2 0x8BD3 -0xDAB3 0x8BD4 -0xDAB4 0x8BD6 -0xDAB5 0x8BD8 -0xDAB6 0x8BD9 -0xDAB7 0x8BDC -0xDAB8 0x8BDF -0xDAB9 0x8BE0 -0xDABA 0x8BE4 -0xDABB 0x8BE8 -0xDABC 0x8BE9 -0xDABD 0x8BEE -0xDABE 0x8BF0 -0xDABF 0x8BF3 -0xDAC0 0x8BF6 -0xDAC1 0x8BF9 -0xDAC2 0x8BFC -0xDAC3 0x8BFF -0xDAC4 0x8C00 -0xDAC5 0x8C02 -0xDAC6 0x8C04 -0xDAC7 0x8C07 -0xDAC8 0x8C0C -0xDAC9 0x8C0F -0xDACA 0x8C11 -0xDACB 0x8C12 -0xDACC 0x8C14 -0xDACD 0x8C15 -0xDACE 0x8C16 -0xDACF 0x8C19 -0xDAD0 0x8C1B -0xDAD1 0x8C18 -0xDAD2 0x8C1D -0xDAD3 0x8C1F -0xDAD4 0x8C20 -0xDAD5 0x8C21 -0xDAD6 0x8C25 -0xDAD7 0x8C27 -0xDAD8 0x8C2A -0xDAD9 0x8C2B -0xDADA 0x8C2E -0xDADB 0x8C2F -0xDADC 0x8C32 -0xDADD 0x8C33 -0xDADE 0x8C35 -0xDADF 0x8C36 -0xDAE0 0x5369 -0xDAE1 0x537A -0xDAE2 0x961D -0xDAE3 0x9622 -0xDAE4 0x9621 -0xDAE5 0x9631 -0xDAE6 0x962A -0xDAE7 0x963D -0xDAE8 0x963C -0xDAE9 0x9642 -0xDAEA 0x9649 -0xDAEB 0x9654 -0xDAEC 0x965F -0xDAED 0x9667 -0xDAEE 0x966C -0xDAEF 0x9672 -0xDAF0 0x9674 -0xDAF1 0x9688 -0xDAF2 0x968D -0xDAF3 0x9697 -0xDAF4 0x96B0 -0xDAF5 0x9097 -0xDAF6 0x909B -0xDAF7 0x909D -0xDAF8 0x9099 -0xDAF9 0x90AC -0xDAFA 0x90A1 -0xDAFB 0x90B4 -0xDAFC 0x90B3 -0xDAFD 0x90B6 -0xDAFE 0x90BA -0xDB40 0x8DD5 -0xDB41 0x8DD8 -0xDB42 0x8DD9 -0xDB43 0x8DDC -0xDB44 0x8DE0 -0xDB45 0x8DE1 -0xDB46 0x8DE2 -0xDB47 0x8DE5 -0xDB48 0x8DE6 -0xDB49 0x8DE7 -0xDB4A 0x8DE9 -0xDB4B 0x8DED -0xDB4C 0x8DEE -0xDB4D 0x8DF0 -0xDB4E 0x8DF1 -0xDB4F 0x8DF2 -0xDB50 0x8DF4 -0xDB51 0x8DF6 -0xDB52 0x8DFC -0xDB53 0x8DFE -0xDB54 0x8DFF -0xDB55 0x8E00 -0xDB56 0x8E01 -0xDB57 0x8E02 -0xDB58 0x8E03 -0xDB59 0x8E04 -0xDB5A 0x8E06 -0xDB5B 0x8E07 -0xDB5C 0x8E08 -0xDB5D 0x8E0B -0xDB5E 0x8E0D -0xDB5F 0x8E0E -0xDB60 0x8E10 -0xDB61 0x8E11 -0xDB62 0x8E12 -0xDB63 0x8E13 -0xDB64 0x8E15 -0xDB65 0x8E16 -0xDB66 0x8E17 -0xDB67 0x8E18 -0xDB68 0x8E19 -0xDB69 0x8E1A -0xDB6A 0x8E1B -0xDB6B 0x8E1C -0xDB6C 0x8E20 -0xDB6D 0x8E21 -0xDB6E 0x8E24 -0xDB6F 0x8E25 -0xDB70 0x8E26 -0xDB71 0x8E27 -0xDB72 0x8E28 -0xDB73 0x8E2B -0xDB74 0x8E2D -0xDB75 0x8E30 -0xDB76 0x8E32 -0xDB77 0x8E33 -0xDB78 0x8E34 -0xDB79 0x8E36 -0xDB7A 0x8E37 -0xDB7B 0x8E38 -0xDB7C 0x8E3B -0xDB7D 0x8E3C -0xDB7E 0x8E3E -0xDB80 0x8E3F -0xDB81 0x8E43 -0xDB82 0x8E45 -0xDB83 0x8E46 -0xDB84 0x8E4C -0xDB85 0x8E4D -0xDB86 0x8E4E -0xDB87 0x8E4F -0xDB88 0x8E50 -0xDB89 0x8E53 -0xDB8A 0x8E54 -0xDB8B 0x8E55 -0xDB8C 0x8E56 -0xDB8D 0x8E57 -0xDB8E 0x8E58 -0xDB8F 0x8E5A -0xDB90 0x8E5B -0xDB91 0x8E5C -0xDB92 0x8E5D -0xDB93 0x8E5E -0xDB94 0x8E5F -0xDB95 0x8E60 -0xDB96 0x8E61 -0xDB97 0x8E62 -0xDB98 0x8E63 -0xDB99 0x8E64 -0xDB9A 0x8E65 -0xDB9B 0x8E67 -0xDB9C 0x8E68 -0xDB9D 0x8E6A -0xDB9E 0x8E6B -0xDB9F 0x8E6E -0xDBA0 0x8E71 -0xDBA1 0x90B8 -0xDBA2 0x90B0 -0xDBA3 0x90CF -0xDBA4 0x90C5 -0xDBA5 0x90BE -0xDBA6 0x90D0 -0xDBA7 0x90C4 -0xDBA8 0x90C7 -0xDBA9 0x90D3 -0xDBAA 0x90E6 -0xDBAB 0x90E2 -0xDBAC 0x90DC -0xDBAD 0x90D7 -0xDBAE 0x90DB -0xDBAF 0x90EB -0xDBB0 0x90EF -0xDBB1 0x90FE -0xDBB2 0x9104 -0xDBB3 0x9122 -0xDBB4 0x911E -0xDBB5 0x9123 -0xDBB6 0x9131 -0xDBB7 0x912F -0xDBB8 0x9139 -0xDBB9 0x9143 -0xDBBA 0x9146 -0xDBBB 0x520D -0xDBBC 0x5942 -0xDBBD 0x52A2 -0xDBBE 0x52AC -0xDBBF 0x52AD -0xDBC0 0x52BE -0xDBC1 0x54FF -0xDBC2 0x52D0 -0xDBC3 0x52D6 -0xDBC4 0x52F0 -0xDBC5 0x53DF -0xDBC6 0x71EE -0xDBC7 0x77CD -0xDBC8 0x5EF4 -0xDBC9 0x51F5 -0xDBCA 0x51FC -0xDBCB 0x9B2F -0xDBCC 0x53B6 -0xDBCD 0x5F01 -0xDBCE 0x755A -0xDBCF 0x5DEF -0xDBD0 0x574C -0xDBD1 0x57A9 -0xDBD2 0x57A1 -0xDBD3 0x587E -0xDBD4 0x58BC -0xDBD5 0x58C5 -0xDBD6 0x58D1 -0xDBD7 0x5729 -0xDBD8 0x572C -0xDBD9 0x572A -0xDBDA 0x5733 -0xDBDB 0x5739 -0xDBDC 0x572E -0xDBDD 0x572F -0xDBDE 0x575C -0xDBDF 0x573B -0xDBE0 0x5742 -0xDBE1 0x5769 -0xDBE2 0x5785 -0xDBE3 0x576B -0xDBE4 0x5786 -0xDBE5 0x577C -0xDBE6 0x577B -0xDBE7 0x5768 -0xDBE8 0x576D -0xDBE9 0x5776 -0xDBEA 0x5773 -0xDBEB 0x57AD -0xDBEC 0x57A4 -0xDBED 0x578C -0xDBEE 0x57B2 -0xDBEF 0x57CF -0xDBF0 0x57A7 -0xDBF1 0x57B4 -0xDBF2 0x5793 -0xDBF3 0x57A0 -0xDBF4 0x57D5 -0xDBF5 0x57D8 -0xDBF6 0x57DA -0xDBF7 0x57D9 -0xDBF8 0x57D2 -0xDBF9 0x57B8 -0xDBFA 0x57F4 -0xDBFB 0x57EF -0xDBFC 0x57F8 -0xDBFD 0x57E4 -0xDBFE 0x57DD -0xDC40 0x8E73 -0xDC41 0x8E75 -0xDC42 0x8E77 -0xDC43 0x8E78 -0xDC44 0x8E79 -0xDC45 0x8E7A -0xDC46 0x8E7B -0xDC47 0x8E7D -0xDC48 0x8E7E -0xDC49 0x8E80 -0xDC4A 0x8E82 -0xDC4B 0x8E83 -0xDC4C 0x8E84 -0xDC4D 0x8E86 -0xDC4E 0x8E88 -0xDC4F 0x8E89 -0xDC50 0x8E8A -0xDC51 0x8E8B -0xDC52 0x8E8C -0xDC53 0x8E8D -0xDC54 0x8E8E -0xDC55 0x8E91 -0xDC56 0x8E92 -0xDC57 0x8E93 -0xDC58 0x8E95 -0xDC59 0x8E96 -0xDC5A 0x8E97 -0xDC5B 0x8E98 -0xDC5C 0x8E99 -0xDC5D 0x8E9A -0xDC5E 0x8E9B -0xDC5F 0x8E9D -0xDC60 0x8E9F -0xDC61 0x8EA0 -0xDC62 0x8EA1 -0xDC63 0x8EA2 -0xDC64 0x8EA3 -0xDC65 0x8EA4 -0xDC66 0x8EA5 -0xDC67 0x8EA6 -0xDC68 0x8EA7 -0xDC69 0x8EA8 -0xDC6A 0x8EA9 -0xDC6B 0x8EAA -0xDC6C 0x8EAD -0xDC6D 0x8EAE -0xDC6E 0x8EB0 -0xDC6F 0x8EB1 -0xDC70 0x8EB3 -0xDC71 0x8EB4 -0xDC72 0x8EB5 -0xDC73 0x8EB6 -0xDC74 0x8EB7 -0xDC75 0x8EB8 -0xDC76 0x8EB9 -0xDC77 0x8EBB -0xDC78 0x8EBC -0xDC79 0x8EBD -0xDC7A 0x8EBE -0xDC7B 0x8EBF -0xDC7C 0x8EC0 -0xDC7D 0x8EC1 -0xDC7E 0x8EC2 -0xDC80 0x8EC3 -0xDC81 0x8EC4 -0xDC82 0x8EC5 -0xDC83 0x8EC6 -0xDC84 0x8EC7 -0xDC85 0x8EC8 -0xDC86 0x8EC9 -0xDC87 0x8ECA -0xDC88 0x8ECB -0xDC89 0x8ECC -0xDC8A 0x8ECD -0xDC8B 0x8ECF -0xDC8C 0x8ED0 -0xDC8D 0x8ED1 -0xDC8E 0x8ED2 -0xDC8F 0x8ED3 -0xDC90 0x8ED4 -0xDC91 0x8ED5 -0xDC92 0x8ED6 -0xDC93 0x8ED7 -0xDC94 0x8ED8 -0xDC95 0x8ED9 -0xDC96 0x8EDA -0xDC97 0x8EDB -0xDC98 0x8EDC -0xDC99 0x8EDD -0xDC9A 0x8EDE -0xDC9B 0x8EDF -0xDC9C 0x8EE0 -0xDC9D 0x8EE1 -0xDC9E 0x8EE2 -0xDC9F 0x8EE3 -0xDCA0 0x8EE4 -0xDCA1 0x580B -0xDCA2 0x580D -0xDCA3 0x57FD -0xDCA4 0x57ED -0xDCA5 0x5800 -0xDCA6 0x581E -0xDCA7 0x5819 -0xDCA8 0x5844 -0xDCA9 0x5820 -0xDCAA 0x5865 -0xDCAB 0x586C -0xDCAC 0x5881 -0xDCAD 0x5889 -0xDCAE 0x589A -0xDCAF 0x5880 -0xDCB0 0x99A8 -0xDCB1 0x9F19 -0xDCB2 0x61FF -0xDCB3 0x8279 -0xDCB4 0x827D -0xDCB5 0x827F -0xDCB6 0x828F -0xDCB7 0x828A -0xDCB8 0x82A8 -0xDCB9 0x8284 -0xDCBA 0x828E -0xDCBB 0x8291 -0xDCBC 0x8297 -0xDCBD 0x8299 -0xDCBE 0x82AB -0xDCBF 0x82B8 -0xDCC0 0x82BE -0xDCC1 0x82B0 -0xDCC2 0x82C8 -0xDCC3 0x82CA -0xDCC4 0x82E3 -0xDCC5 0x8298 -0xDCC6 0x82B7 -0xDCC7 0x82AE -0xDCC8 0x82CB -0xDCC9 0x82CC -0xDCCA 0x82C1 -0xDCCB 0x82A9 -0xDCCC 0x82B4 -0xDCCD 0x82A1 -0xDCCE 0x82AA -0xDCCF 0x829F -0xDCD0 0x82C4 -0xDCD1 0x82CE -0xDCD2 0x82A4 -0xDCD3 0x82E1 -0xDCD4 0x8309 -0xDCD5 0x82F7 -0xDCD6 0x82E4 -0xDCD7 0x830F -0xDCD8 0x8307 -0xDCD9 0x82DC -0xDCDA 0x82F4 -0xDCDB 0x82D2 -0xDCDC 0x82D8 -0xDCDD 0x830C -0xDCDE 0x82FB -0xDCDF 0x82D3 -0xDCE0 0x8311 -0xDCE1 0x831A -0xDCE2 0x8306 -0xDCE3 0x8314 -0xDCE4 0x8315 -0xDCE5 0x82E0 -0xDCE6 0x82D5 -0xDCE7 0x831C -0xDCE8 0x8351 -0xDCE9 0x835B -0xDCEA 0x835C -0xDCEB 0x8308 -0xDCEC 0x8392 -0xDCED 0x833C -0xDCEE 0x8334 -0xDCEF 0x8331 -0xDCF0 0x839B -0xDCF1 0x835E -0xDCF2 0x832F -0xDCF3 0x834F -0xDCF4 0x8347 -0xDCF5 0x8343 -0xDCF6 0x835F -0xDCF7 0x8340 -0xDCF8 0x8317 -0xDCF9 0x8360 -0xDCFA 0x832D -0xDCFB 0x833A -0xDCFC 0x8333 -0xDCFD 0x8366 -0xDCFE 0x8365 -0xDD40 0x8EE5 -0xDD41 0x8EE6 -0xDD42 0x8EE7 -0xDD43 0x8EE8 -0xDD44 0x8EE9 -0xDD45 0x8EEA -0xDD46 0x8EEB -0xDD47 0x8EEC -0xDD48 0x8EED -0xDD49 0x8EEE -0xDD4A 0x8EEF -0xDD4B 0x8EF0 -0xDD4C 0x8EF1 -0xDD4D 0x8EF2 -0xDD4E 0x8EF3 -0xDD4F 0x8EF4 -0xDD50 0x8EF5 -0xDD51 0x8EF6 -0xDD52 0x8EF7 -0xDD53 0x8EF8 -0xDD54 0x8EF9 -0xDD55 0x8EFA -0xDD56 0x8EFB -0xDD57 0x8EFC -0xDD58 0x8EFD -0xDD59 0x8EFE -0xDD5A 0x8EFF -0xDD5B 0x8F00 -0xDD5C 0x8F01 -0xDD5D 0x8F02 -0xDD5E 0x8F03 -0xDD5F 0x8F04 -0xDD60 0x8F05 -0xDD61 0x8F06 -0xDD62 0x8F07 -0xDD63 0x8F08 -0xDD64 0x8F09 -0xDD65 0x8F0A -0xDD66 0x8F0B -0xDD67 0x8F0C -0xDD68 0x8F0D -0xDD69 0x8F0E -0xDD6A 0x8F0F -0xDD6B 0x8F10 -0xDD6C 0x8F11 -0xDD6D 0x8F12 -0xDD6E 0x8F13 -0xDD6F 0x8F14 -0xDD70 0x8F15 -0xDD71 0x8F16 -0xDD72 0x8F17 -0xDD73 0x8F18 -0xDD74 0x8F19 -0xDD75 0x8F1A -0xDD76 0x8F1B -0xDD77 0x8F1C -0xDD78 0x8F1D -0xDD79 0x8F1E -0xDD7A 0x8F1F -0xDD7B 0x8F20 -0xDD7C 0x8F21 -0xDD7D 0x8F22 -0xDD7E 0x8F23 -0xDD80 0x8F24 -0xDD81 0x8F25 -0xDD82 0x8F26 -0xDD83 0x8F27 -0xDD84 0x8F28 -0xDD85 0x8F29 -0xDD86 0x8F2A -0xDD87 0x8F2B -0xDD88 0x8F2C -0xDD89 0x8F2D -0xDD8A 0x8F2E -0xDD8B 0x8F2F -0xDD8C 0x8F30 -0xDD8D 0x8F31 -0xDD8E 0x8F32 -0xDD8F 0x8F33 -0xDD90 0x8F34 -0xDD91 0x8F35 -0xDD92 0x8F36 -0xDD93 0x8F37 -0xDD94 0x8F38 -0xDD95 0x8F39 -0xDD96 0x8F3A -0xDD97 0x8F3B -0xDD98 0x8F3C -0xDD99 0x8F3D -0xDD9A 0x8F3E -0xDD9B 0x8F3F -0xDD9C 0x8F40 -0xDD9D 0x8F41 -0xDD9E 0x8F42 -0xDD9F 0x8F43 -0xDDA0 0x8F44 -0xDDA1 0x8368 -0xDDA2 0x831B -0xDDA3 0x8369 -0xDDA4 0x836C -0xDDA5 0x836A -0xDDA6 0x836D -0xDDA7 0x836E -0xDDA8 0x83B0 -0xDDA9 0x8378 -0xDDAA 0x83B3 -0xDDAB 0x83B4 -0xDDAC 0x83A0 -0xDDAD 0x83AA -0xDDAE 0x8393 -0xDDAF 0x839C -0xDDB0 0x8385 -0xDDB1 0x837C -0xDDB2 0x83B6 -0xDDB3 0x83A9 -0xDDB4 0x837D -0xDDB5 0x83B8 -0xDDB6 0x837B -0xDDB7 0x8398 -0xDDB8 0x839E -0xDDB9 0x83A8 -0xDDBA 0x83BA -0xDDBB 0x83BC -0xDDBC 0x83C1 -0xDDBD 0x8401 -0xDDBE 0x83E5 -0xDDBF 0x83D8 -0xDDC0 0x5807 -0xDDC1 0x8418 -0xDDC2 0x840B -0xDDC3 0x83DD -0xDDC4 0x83FD -0xDDC5 0x83D6 -0xDDC6 0x841C -0xDDC7 0x8438 -0xDDC8 0x8411 -0xDDC9 0x8406 -0xDDCA 0x83D4 -0xDDCB 0x83DF -0xDDCC 0x840F -0xDDCD 0x8403 -0xDDCE 0x83F8 -0xDDCF 0x83F9 -0xDDD0 0x83EA -0xDDD1 0x83C5 -0xDDD2 0x83C0 -0xDDD3 0x8426 -0xDDD4 0x83F0 -0xDDD5 0x83E1 -0xDDD6 0x845C -0xDDD7 0x8451 -0xDDD8 0x845A -0xDDD9 0x8459 -0xDDDA 0x8473 -0xDDDB 0x8487 -0xDDDC 0x8488 -0xDDDD 0x847A -0xDDDE 0x8489 -0xDDDF 0x8478 -0xDDE0 0x843C -0xDDE1 0x8446 -0xDDE2 0x8469 -0xDDE3 0x8476 -0xDDE4 0x848C -0xDDE5 0x848E -0xDDE6 0x8431 -0xDDE7 0x846D -0xDDE8 0x84C1 -0xDDE9 0x84CD -0xDDEA 0x84D0 -0xDDEB 0x84E6 -0xDDEC 0x84BD -0xDDED 0x84D3 -0xDDEE 0x84CA -0xDDEF 0x84BF -0xDDF0 0x84BA -0xDDF1 0x84E0 -0xDDF2 0x84A1 -0xDDF3 0x84B9 -0xDDF4 0x84B4 -0xDDF5 0x8497 -0xDDF6 0x84E5 -0xDDF7 0x84E3 -0xDDF8 0x850C -0xDDF9 0x750D -0xDDFA 0x8538 -0xDDFB 0x84F0 -0xDDFC 0x8539 -0xDDFD 0x851F -0xDDFE 0x853A -0xDE40 0x8F45 -0xDE41 0x8F46 -0xDE42 0x8F47 -0xDE43 0x8F48 -0xDE44 0x8F49 -0xDE45 0x8F4A -0xDE46 0x8F4B -0xDE47 0x8F4C -0xDE48 0x8F4D -0xDE49 0x8F4E -0xDE4A 0x8F4F -0xDE4B 0x8F50 -0xDE4C 0x8F51 -0xDE4D 0x8F52 -0xDE4E 0x8F53 -0xDE4F 0x8F54 -0xDE50 0x8F55 -0xDE51 0x8F56 -0xDE52 0x8F57 -0xDE53 0x8F58 -0xDE54 0x8F59 -0xDE55 0x8F5A -0xDE56 0x8F5B -0xDE57 0x8F5C -0xDE58 0x8F5D -0xDE59 0x8F5E -0xDE5A 0x8F5F -0xDE5B 0x8F60 -0xDE5C 0x8F61 -0xDE5D 0x8F62 -0xDE5E 0x8F63 -0xDE5F 0x8F64 -0xDE60 0x8F65 -0xDE61 0x8F6A -0xDE62 0x8F80 -0xDE63 0x8F8C -0xDE64 0x8F92 -0xDE65 0x8F9D -0xDE66 0x8FA0 -0xDE67 0x8FA1 -0xDE68 0x8FA2 -0xDE69 0x8FA4 -0xDE6A 0x8FA5 -0xDE6B 0x8FA6 -0xDE6C 0x8FA7 -0xDE6D 0x8FAA -0xDE6E 0x8FAC -0xDE6F 0x8FAD -0xDE70 0x8FAE -0xDE71 0x8FAF -0xDE72 0x8FB2 -0xDE73 0x8FB3 -0xDE74 0x8FB4 -0xDE75 0x8FB5 -0xDE76 0x8FB7 -0xDE77 0x8FB8 -0xDE78 0x8FBA -0xDE79 0x8FBB -0xDE7A 0x8FBC -0xDE7B 0x8FBF -0xDE7C 0x8FC0 -0xDE7D 0x8FC3 -0xDE7E 0x8FC6 -0xDE80 0x8FC9 -0xDE81 0x8FCA -0xDE82 0x8FCB -0xDE83 0x8FCC -0xDE84 0x8FCD -0xDE85 0x8FCF -0xDE86 0x8FD2 -0xDE87 0x8FD6 -0xDE88 0x8FD7 -0xDE89 0x8FDA -0xDE8A 0x8FE0 -0xDE8B 0x8FE1 -0xDE8C 0x8FE3 -0xDE8D 0x8FE7 -0xDE8E 0x8FEC -0xDE8F 0x8FEF -0xDE90 0x8FF1 -0xDE91 0x8FF2 -0xDE92 0x8FF4 -0xDE93 0x8FF5 -0xDE94 0x8FF6 -0xDE95 0x8FFA -0xDE96 0x8FFB -0xDE97 0x8FFC -0xDE98 0x8FFE -0xDE99 0x8FFF -0xDE9A 0x9007 -0xDE9B 0x9008 -0xDE9C 0x900C -0xDE9D 0x900E -0xDE9E 0x9013 -0xDE9F 0x9015 -0xDEA0 0x9018 -0xDEA1 0x8556 -0xDEA2 0x853B -0xDEA3 0x84FF -0xDEA4 0x84FC -0xDEA5 0x8559 -0xDEA6 0x8548 -0xDEA7 0x8568 -0xDEA8 0x8564 -0xDEA9 0x855E -0xDEAA 0x857A -0xDEAB 0x77A2 -0xDEAC 0x8543 -0xDEAD 0x8572 -0xDEAE 0x857B -0xDEAF 0x85A4 -0xDEB0 0x85A8 -0xDEB1 0x8587 -0xDEB2 0x858F -0xDEB3 0x8579 -0xDEB4 0x85AE -0xDEB5 0x859C -0xDEB6 0x8585 -0xDEB7 0x85B9 -0xDEB8 0x85B7 -0xDEB9 0x85B0 -0xDEBA 0x85D3 -0xDEBB 0x85C1 -0xDEBC 0x85DC -0xDEBD 0x85FF -0xDEBE 0x8627 -0xDEBF 0x8605 -0xDEC0 0x8629 -0xDEC1 0x8616 -0xDEC2 0x863C -0xDEC3 0x5EFE -0xDEC4 0x5F08 -0xDEC5 0x593C -0xDEC6 0x5941 -0xDEC7 0x8037 -0xDEC8 0x5955 -0xDEC9 0x595A -0xDECA 0x5958 -0xDECB 0x530F -0xDECC 0x5C22 -0xDECD 0x5C25 -0xDECE 0x5C2C -0xDECF 0x5C34 -0xDED0 0x624C -0xDED1 0x626A -0xDED2 0x629F -0xDED3 0x62BB -0xDED4 0x62CA -0xDED5 0x62DA -0xDED6 0x62D7 -0xDED7 0x62EE -0xDED8 0x6322 -0xDED9 0x62F6 -0xDEDA 0x6339 -0xDEDB 0x634B -0xDEDC 0x6343 -0xDEDD 0x63AD -0xDEDE 0x63F6 -0xDEDF 0x6371 -0xDEE0 0x637A -0xDEE1 0x638E -0xDEE2 0x63B4 -0xDEE3 0x636D -0xDEE4 0x63AC -0xDEE5 0x638A -0xDEE6 0x6369 -0xDEE7 0x63AE -0xDEE8 0x63BC -0xDEE9 0x63F2 -0xDEEA 0x63F8 -0xDEEB 0x63E0 -0xDEEC 0x63FF -0xDEED 0x63C4 -0xDEEE 0x63DE -0xDEEF 0x63CE -0xDEF0 0x6452 -0xDEF1 0x63C6 -0xDEF2 0x63BE -0xDEF3 0x6445 -0xDEF4 0x6441 -0xDEF5 0x640B -0xDEF6 0x641B -0xDEF7 0x6420 -0xDEF8 0x640C -0xDEF9 0x6426 -0xDEFA 0x6421 -0xDEFB 0x645E -0xDEFC 0x6484 -0xDEFD 0x646D -0xDEFE 0x6496 -0xDF40 0x9019 -0xDF41 0x901C -0xDF42 0x9023 -0xDF43 0x9024 -0xDF44 0x9025 -0xDF45 0x9027 -0xDF46 0x9028 -0xDF47 0x9029 -0xDF48 0x902A -0xDF49 0x902B -0xDF4A 0x902C -0xDF4B 0x9030 -0xDF4C 0x9031 -0xDF4D 0x9032 -0xDF4E 0x9033 -0xDF4F 0x9034 -0xDF50 0x9037 -0xDF51 0x9039 -0xDF52 0x903A -0xDF53 0x903D -0xDF54 0x903F -0xDF55 0x9040 -0xDF56 0x9043 -0xDF57 0x9045 -0xDF58 0x9046 -0xDF59 0x9048 -0xDF5A 0x9049 -0xDF5B 0x904A -0xDF5C 0x904B -0xDF5D 0x904C -0xDF5E 0x904E -0xDF5F 0x9054 -0xDF60 0x9055 -0xDF61 0x9056 -0xDF62 0x9059 -0xDF63 0x905A -0xDF64 0x905C -0xDF65 0x905D -0xDF66 0x905E -0xDF67 0x905F -0xDF68 0x9060 -0xDF69 0x9061 -0xDF6A 0x9064 -0xDF6B 0x9066 -0xDF6C 0x9067 -0xDF6D 0x9069 -0xDF6E 0x906A -0xDF6F 0x906B -0xDF70 0x906C -0xDF71 0x906F -0xDF72 0x9070 -0xDF73 0x9071 -0xDF74 0x9072 -0xDF75 0x9073 -0xDF76 0x9076 -0xDF77 0x9077 -0xDF78 0x9078 -0xDF79 0x9079 -0xDF7A 0x907A -0xDF7B 0x907B -0xDF7C 0x907C -0xDF7D 0x907E -0xDF7E 0x9081 -0xDF80 0x9084 -0xDF81 0x9085 -0xDF82 0x9086 -0xDF83 0x9087 -0xDF84 0x9089 -0xDF85 0x908A -0xDF86 0x908C -0xDF87 0x908D -0xDF88 0x908E -0xDF89 0x908F -0xDF8A 0x9090 -0xDF8B 0x9092 -0xDF8C 0x9094 -0xDF8D 0x9096 -0xDF8E 0x9098 -0xDF8F 0x909A -0xDF90 0x909C -0xDF91 0x909E -0xDF92 0x909F -0xDF93 0x90A0 -0xDF94 0x90A4 -0xDF95 0x90A5 -0xDF96 0x90A7 -0xDF97 0x90A8 -0xDF98 0x90A9 -0xDF99 0x90AB -0xDF9A 0x90AD -0xDF9B 0x90B2 -0xDF9C 0x90B7 -0xDF9D 0x90BC -0xDF9E 0x90BD -0xDF9F 0x90BF -0xDFA0 0x90C0 -0xDFA1 0x647A -0xDFA2 0x64B7 -0xDFA3 0x64B8 -0xDFA4 0x6499 -0xDFA5 0x64BA -0xDFA6 0x64C0 -0xDFA7 0x64D0 -0xDFA8 0x64D7 -0xDFA9 0x64E4 -0xDFAA 0x64E2 -0xDFAB 0x6509 -0xDFAC 0x6525 -0xDFAD 0x652E -0xDFAE 0x5F0B -0xDFAF 0x5FD2 -0xDFB0 0x7519 -0xDFB1 0x5F11 -0xDFB2 0x535F -0xDFB3 0x53F1 -0xDFB4 0x53FD -0xDFB5 0x53E9 -0xDFB6 0x53E8 -0xDFB7 0x53FB -0xDFB8 0x5412 -0xDFB9 0x5416 -0xDFBA 0x5406 -0xDFBB 0x544B -0xDFBC 0x5452 -0xDFBD 0x5453 -0xDFBE 0x5454 -0xDFBF 0x5456 -0xDFC0 0x5443 -0xDFC1 0x5421 -0xDFC2 0x5457 -0xDFC3 0x5459 -0xDFC4 0x5423 -0xDFC5 0x5432 -0xDFC6 0x5482 -0xDFC7 0x5494 -0xDFC8 0x5477 -0xDFC9 0x5471 -0xDFCA 0x5464 -0xDFCB 0x549A -0xDFCC 0x549B -0xDFCD 0x5484 -0xDFCE 0x5476 -0xDFCF 0x5466 -0xDFD0 0x549D -0xDFD1 0x54D0 -0xDFD2 0x54AD -0xDFD3 0x54C2 -0xDFD4 0x54B4 -0xDFD5 0x54D2 -0xDFD6 0x54A7 -0xDFD7 0x54A6 -0xDFD8 0x54D3 -0xDFD9 0x54D4 -0xDFDA 0x5472 -0xDFDB 0x54A3 -0xDFDC 0x54D5 -0xDFDD 0x54BB -0xDFDE 0x54BF -0xDFDF 0x54CC -0xDFE0 0x54D9 -0xDFE1 0x54DA -0xDFE2 0x54DC -0xDFE3 0x54A9 -0xDFE4 0x54AA -0xDFE5 0x54A4 -0xDFE6 0x54DD -0xDFE7 0x54CF -0xDFE8 0x54DE -0xDFE9 0x551B -0xDFEA 0x54E7 -0xDFEB 0x5520 -0xDFEC 0x54FD -0xDFED 0x5514 -0xDFEE 0x54F3 -0xDFEF 0x5522 -0xDFF0 0x5523 -0xDFF1 0x550F -0xDFF2 0x5511 -0xDFF3 0x5527 -0xDFF4 0x552A -0xDFF5 0x5567 -0xDFF6 0x558F -0xDFF7 0x55B5 -0xDFF8 0x5549 -0xDFF9 0x556D -0xDFFA 0x5541 -0xDFFB 0x5555 -0xDFFC 0x553F -0xDFFD 0x5550 -0xDFFE 0x553C -0xE040 0x90C2 -0xE041 0x90C3 -0xE042 0x90C6 -0xE043 0x90C8 -0xE044 0x90C9 -0xE045 0x90CB -0xE046 0x90CC -0xE047 0x90CD -0xE048 0x90D2 -0xE049 0x90D4 -0xE04A 0x90D5 -0xE04B 0x90D6 -0xE04C 0x90D8 -0xE04D 0x90D9 -0xE04E 0x90DA -0xE04F 0x90DE -0xE050 0x90DF -0xE051 0x90E0 -0xE052 0x90E3 -0xE053 0x90E4 -0xE054 0x90E5 -0xE055 0x90E9 -0xE056 0x90EA -0xE057 0x90EC -0xE058 0x90EE -0xE059 0x90F0 -0xE05A 0x90F1 -0xE05B 0x90F2 -0xE05C 0x90F3 -0xE05D 0x90F5 -0xE05E 0x90F6 -0xE05F 0x90F7 -0xE060 0x90F9 -0xE061 0x90FA -0xE062 0x90FB -0xE063 0x90FC -0xE064 0x90FF -0xE065 0x9100 -0xE066 0x9101 -0xE067 0x9103 -0xE068 0x9105 -0xE069 0x9106 -0xE06A 0x9107 -0xE06B 0x9108 -0xE06C 0x9109 -0xE06D 0x910A -0xE06E 0x910B -0xE06F 0x910C -0xE070 0x910D -0xE071 0x910E -0xE072 0x910F -0xE073 0x9110 -0xE074 0x9111 -0xE075 0x9112 -0xE076 0x9113 -0xE077 0x9114 -0xE078 0x9115 -0xE079 0x9116 -0xE07A 0x9117 -0xE07B 0x9118 -0xE07C 0x911A -0xE07D 0x911B -0xE07E 0x911C -0xE080 0x911D -0xE081 0x911F -0xE082 0x9120 -0xE083 0x9121 -0xE084 0x9124 -0xE085 0x9125 -0xE086 0x9126 -0xE087 0x9127 -0xE088 0x9128 -0xE089 0x9129 -0xE08A 0x912A -0xE08B 0x912B -0xE08C 0x912C -0xE08D 0x912D -0xE08E 0x912E -0xE08F 0x9130 -0xE090 0x9132 -0xE091 0x9133 -0xE092 0x9134 -0xE093 0x9135 -0xE094 0x9136 -0xE095 0x9137 -0xE096 0x9138 -0xE097 0x913A -0xE098 0x913B -0xE099 0x913C -0xE09A 0x913D -0xE09B 0x913E -0xE09C 0x913F -0xE09D 0x9140 -0xE09E 0x9141 -0xE09F 0x9142 -0xE0A0 0x9144 -0xE0A1 0x5537 -0xE0A2 0x5556 -0xE0A3 0x5575 -0xE0A4 0x5576 -0xE0A5 0x5577 -0xE0A6 0x5533 -0xE0A7 0x5530 -0xE0A8 0x555C -0xE0A9 0x558B -0xE0AA 0x55D2 -0xE0AB 0x5583 -0xE0AC 0x55B1 -0xE0AD 0x55B9 -0xE0AE 0x5588 -0xE0AF 0x5581 -0xE0B0 0x559F -0xE0B1 0x557E -0xE0B2 0x55D6 -0xE0B3 0x5591 -0xE0B4 0x557B -0xE0B5 0x55DF -0xE0B6 0x55BD -0xE0B7 0x55BE -0xE0B8 0x5594 -0xE0B9 0x5599 -0xE0BA 0x55EA -0xE0BB 0x55F7 -0xE0BC 0x55C9 -0xE0BD 0x561F -0xE0BE 0x55D1 -0xE0BF 0x55EB -0xE0C0 0x55EC -0xE0C1 0x55D4 -0xE0C2 0x55E6 -0xE0C3 0x55DD -0xE0C4 0x55C4 -0xE0C5 0x55EF -0xE0C6 0x55E5 -0xE0C7 0x55F2 -0xE0C8 0x55F3 -0xE0C9 0x55CC -0xE0CA 0x55CD -0xE0CB 0x55E8 -0xE0CC 0x55F5 -0xE0CD 0x55E4 -0xE0CE 0x8F94 -0xE0CF 0x561E -0xE0D0 0x5608 -0xE0D1 0x560C -0xE0D2 0x5601 -0xE0D3 0x5624 -0xE0D4 0x5623 -0xE0D5 0x55FE -0xE0D6 0x5600 -0xE0D7 0x5627 -0xE0D8 0x562D -0xE0D9 0x5658 -0xE0DA 0x5639 -0xE0DB 0x5657 -0xE0DC 0x562C -0xE0DD 0x564D -0xE0DE 0x5662 -0xE0DF 0x5659 -0xE0E0 0x565C -0xE0E1 0x564C -0xE0E2 0x5654 -0xE0E3 0x5686 -0xE0E4 0x5664 -0xE0E5 0x5671 -0xE0E6 0x566B -0xE0E7 0x567B -0xE0E8 0x567C -0xE0E9 0x5685 -0xE0EA 0x5693 -0xE0EB 0x56AF -0xE0EC 0x56D4 -0xE0ED 0x56D7 -0xE0EE 0x56DD -0xE0EF 0x56E1 -0xE0F0 0x56F5 -0xE0F1 0x56EB -0xE0F2 0x56F9 -0xE0F3 0x56FF -0xE0F4 0x5704 -0xE0F5 0x570A -0xE0F6 0x5709 -0xE0F7 0x571C -0xE0F8 0x5E0F -0xE0F9 0x5E19 -0xE0FA 0x5E14 -0xE0FB 0x5E11 -0xE0FC 0x5E31 -0xE0FD 0x5E3B -0xE0FE 0x5E3C -0xE140 0x9145 -0xE141 0x9147 -0xE142 0x9148 -0xE143 0x9151 -0xE144 0x9153 -0xE145 0x9154 -0xE146 0x9155 -0xE147 0x9156 -0xE148 0x9158 -0xE149 0x9159 -0xE14A 0x915B -0xE14B 0x915C -0xE14C 0x915F -0xE14D 0x9160 -0xE14E 0x9166 -0xE14F 0x9167 -0xE150 0x9168 -0xE151 0x916B -0xE152 0x916D -0xE153 0x9173 -0xE154 0x917A -0xE155 0x917B -0xE156 0x917C -0xE157 0x9180 -0xE158 0x9181 -0xE159 0x9182 -0xE15A 0x9183 -0xE15B 0x9184 -0xE15C 0x9186 -0xE15D 0x9188 -0xE15E 0x918A -0xE15F 0x918E -0xE160 0x918F -0xE161 0x9193 -0xE162 0x9194 -0xE163 0x9195 -0xE164 0x9196 -0xE165 0x9197 -0xE166 0x9198 -0xE167 0x9199 -0xE168 0x919C -0xE169 0x919D -0xE16A 0x919E -0xE16B 0x919F -0xE16C 0x91A0 -0xE16D 0x91A1 -0xE16E 0x91A4 -0xE16F 0x91A5 -0xE170 0x91A6 -0xE171 0x91A7 -0xE172 0x91A8 -0xE173 0x91A9 -0xE174 0x91AB -0xE175 0x91AC -0xE176 0x91B0 -0xE177 0x91B1 -0xE178 0x91B2 -0xE179 0x91B3 -0xE17A 0x91B6 -0xE17B 0x91B7 -0xE17C 0x91B8 -0xE17D 0x91B9 -0xE17E 0x91BB -0xE180 0x91BC -0xE181 0x91BD -0xE182 0x91BE -0xE183 0x91BF -0xE184 0x91C0 -0xE185 0x91C1 -0xE186 0x91C2 -0xE187 0x91C3 -0xE188 0x91C4 -0xE189 0x91C5 -0xE18A 0x91C6 -0xE18B 0x91C8 -0xE18C 0x91CB -0xE18D 0x91D0 -0xE18E 0x91D2 -0xE18F 0x91D3 -0xE190 0x91D4 -0xE191 0x91D5 -0xE192 0x91D6 -0xE193 0x91D7 -0xE194 0x91D8 -0xE195 0x91D9 -0xE196 0x91DA -0xE197 0x91DB -0xE198 0x91DD -0xE199 0x91DE -0xE19A 0x91DF -0xE19B 0x91E0 -0xE19C 0x91E1 -0xE19D 0x91E2 -0xE19E 0x91E3 -0xE19F 0x91E4 -0xE1A0 0x91E5 -0xE1A1 0x5E37 -0xE1A2 0x5E44 -0xE1A3 0x5E54 -0xE1A4 0x5E5B -0xE1A5 0x5E5E -0xE1A6 0x5E61 -0xE1A7 0x5C8C -0xE1A8 0x5C7A -0xE1A9 0x5C8D -0xE1AA 0x5C90 -0xE1AB 0x5C96 -0xE1AC 0x5C88 -0xE1AD 0x5C98 -0xE1AE 0x5C99 -0xE1AF 0x5C91 -0xE1B0 0x5C9A -0xE1B1 0x5C9C -0xE1B2 0x5CB5 -0xE1B3 0x5CA2 -0xE1B4 0x5CBD -0xE1B5 0x5CAC -0xE1B6 0x5CAB -0xE1B7 0x5CB1 -0xE1B8 0x5CA3 -0xE1B9 0x5CC1 -0xE1BA 0x5CB7 -0xE1BB 0x5CC4 -0xE1BC 0x5CD2 -0xE1BD 0x5CE4 -0xE1BE 0x5CCB -0xE1BF 0x5CE5 -0xE1C0 0x5D02 -0xE1C1 0x5D03 -0xE1C2 0x5D27 -0xE1C3 0x5D26 -0xE1C4 0x5D2E -0xE1C5 0x5D24 -0xE1C6 0x5D1E -0xE1C7 0x5D06 -0xE1C8 0x5D1B -0xE1C9 0x5D58 -0xE1CA 0x5D3E -0xE1CB 0x5D34 -0xE1CC 0x5D3D -0xE1CD 0x5D6C -0xE1CE 0x5D5B -0xE1CF 0x5D6F -0xE1D0 0x5D5D -0xE1D1 0x5D6B -0xE1D2 0x5D4B -0xE1D3 0x5D4A -0xE1D4 0x5D69 -0xE1D5 0x5D74 -0xE1D6 0x5D82 -0xE1D7 0x5D99 -0xE1D8 0x5D9D -0xE1D9 0x8C73 -0xE1DA 0x5DB7 -0xE1DB 0x5DC5 -0xE1DC 0x5F73 -0xE1DD 0x5F77 -0xE1DE 0x5F82 -0xE1DF 0x5F87 -0xE1E0 0x5F89 -0xE1E1 0x5F8C -0xE1E2 0x5F95 -0xE1E3 0x5F99 -0xE1E4 0x5F9C -0xE1E5 0x5FA8 -0xE1E6 0x5FAD -0xE1E7 0x5FB5 -0xE1E8 0x5FBC -0xE1E9 0x8862 -0xE1EA 0x5F61 -0xE1EB 0x72AD -0xE1EC 0x72B0 -0xE1ED 0x72B4 -0xE1EE 0x72B7 -0xE1EF 0x72B8 -0xE1F0 0x72C3 -0xE1F1 0x72C1 -0xE1F2 0x72CE -0xE1F3 0x72CD -0xE1F4 0x72D2 -0xE1F5 0x72E8 -0xE1F6 0x72EF -0xE1F7 0x72E9 -0xE1F8 0x72F2 -0xE1F9 0x72F4 -0xE1FA 0x72F7 -0xE1FB 0x7301 -0xE1FC 0x72F3 -0xE1FD 0x7303 -0xE1FE 0x72FA -0xE240 0x91E6 -0xE241 0x91E7 -0xE242 0x91E8 -0xE243 0x91E9 -0xE244 0x91EA -0xE245 0x91EB -0xE246 0x91EC -0xE247 0x91ED -0xE248 0x91EE -0xE249 0x91EF -0xE24A 0x91F0 -0xE24B 0x91F1 -0xE24C 0x91F2 -0xE24D 0x91F3 -0xE24E 0x91F4 -0xE24F 0x91F5 -0xE250 0x91F6 -0xE251 0x91F7 -0xE252 0x91F8 -0xE253 0x91F9 -0xE254 0x91FA -0xE255 0x91FB -0xE256 0x91FC -0xE257 0x91FD -0xE258 0x91FE -0xE259 0x91FF -0xE25A 0x9200 -0xE25B 0x9201 -0xE25C 0x9202 -0xE25D 0x9203 -0xE25E 0x9204 -0xE25F 0x9205 -0xE260 0x9206 -0xE261 0x9207 -0xE262 0x9208 -0xE263 0x9209 -0xE264 0x920A -0xE265 0x920B -0xE266 0x920C -0xE267 0x920D -0xE268 0x920E -0xE269 0x920F -0xE26A 0x9210 -0xE26B 0x9211 -0xE26C 0x9212 -0xE26D 0x9213 -0xE26E 0x9214 -0xE26F 0x9215 -0xE270 0x9216 -0xE271 0x9217 -0xE272 0x9218 -0xE273 0x9219 -0xE274 0x921A -0xE275 0x921B -0xE276 0x921C -0xE277 0x921D -0xE278 0x921E -0xE279 0x921F -0xE27A 0x9220 -0xE27B 0x9221 -0xE27C 0x9222 -0xE27D 0x9223 -0xE27E 0x9224 -0xE280 0x9225 -0xE281 0x9226 -0xE282 0x9227 -0xE283 0x9228 -0xE284 0x9229 -0xE285 0x922A -0xE286 0x922B -0xE287 0x922C -0xE288 0x922D -0xE289 0x922E -0xE28A 0x922F -0xE28B 0x9230 -0xE28C 0x9231 -0xE28D 0x9232 -0xE28E 0x9233 -0xE28F 0x9234 -0xE290 0x9235 -0xE291 0x9236 -0xE292 0x9237 -0xE293 0x9238 -0xE294 0x9239 -0xE295 0x923A -0xE296 0x923B -0xE297 0x923C -0xE298 0x923D -0xE299 0x923E -0xE29A 0x923F -0xE29B 0x9240 -0xE29C 0x9241 -0xE29D 0x9242 -0xE29E 0x9243 -0xE29F 0x9244 -0xE2A0 0x9245 -0xE2A1 0x72FB -0xE2A2 0x7317 -0xE2A3 0x7313 -0xE2A4 0x7321 -0xE2A5 0x730A -0xE2A6 0x731E -0xE2A7 0x731D -0xE2A8 0x7315 -0xE2A9 0x7322 -0xE2AA 0x7339 -0xE2AB 0x7325 -0xE2AC 0x732C -0xE2AD 0x7338 -0xE2AE 0x7331 -0xE2AF 0x7350 -0xE2B0 0x734D -0xE2B1 0x7357 -0xE2B2 0x7360 -0xE2B3 0x736C -0xE2B4 0x736F -0xE2B5 0x737E -0xE2B6 0x821B -0xE2B7 0x5925 -0xE2B8 0x98E7 -0xE2B9 0x5924 -0xE2BA 0x5902 -0xE2BB 0x9963 -0xE2BC 0x9967 -0xE2BD 0x9968 -0xE2BE 0x9969 -0xE2BF 0x996A -0xE2C0 0x996B -0xE2C1 0x996C -0xE2C2 0x9974 -0xE2C3 0x9977 -0xE2C4 0x997D -0xE2C5 0x9980 -0xE2C6 0x9984 -0xE2C7 0x9987 -0xE2C8 0x998A -0xE2C9 0x998D -0xE2CA 0x9990 -0xE2CB 0x9991 -0xE2CC 0x9993 -0xE2CD 0x9994 -0xE2CE 0x9995 -0xE2CF 0x5E80 -0xE2D0 0x5E91 -0xE2D1 0x5E8B -0xE2D2 0x5E96 -0xE2D3 0x5EA5 -0xE2D4 0x5EA0 -0xE2D5 0x5EB9 -0xE2D6 0x5EB5 -0xE2D7 0x5EBE -0xE2D8 0x5EB3 -0xE2D9 0x8D53 -0xE2DA 0x5ED2 -0xE2DB 0x5ED1 -0xE2DC 0x5EDB -0xE2DD 0x5EE8 -0xE2DE 0x5EEA -0xE2DF 0x81BA -0xE2E0 0x5FC4 -0xE2E1 0x5FC9 -0xE2E2 0x5FD6 -0xE2E3 0x5FCF -0xE2E4 0x6003 -0xE2E5 0x5FEE -0xE2E6 0x6004 -0xE2E7 0x5FE1 -0xE2E8 0x5FE4 -0xE2E9 0x5FFE -0xE2EA 0x6005 -0xE2EB 0x6006 -0xE2EC 0x5FEA -0xE2ED 0x5FED -0xE2EE 0x5FF8 -0xE2EF 0x6019 -0xE2F0 0x6035 -0xE2F1 0x6026 -0xE2F2 0x601B -0xE2F3 0x600F -0xE2F4 0x600D -0xE2F5 0x6029 -0xE2F6 0x602B -0xE2F7 0x600A -0xE2F8 0x603F -0xE2F9 0x6021 -0xE2FA 0x6078 -0xE2FB 0x6079 -0xE2FC 0x607B -0xE2FD 0x607A -0xE2FE 0x6042 -0xE340 0x9246 -0xE341 0x9247 -0xE342 0x9248 -0xE343 0x9249 -0xE344 0x924A -0xE345 0x924B -0xE346 0x924C -0xE347 0x924D -0xE348 0x924E -0xE349 0x924F -0xE34A 0x9250 -0xE34B 0x9251 -0xE34C 0x9252 -0xE34D 0x9253 -0xE34E 0x9254 -0xE34F 0x9255 -0xE350 0x9256 -0xE351 0x9257 -0xE352 0x9258 -0xE353 0x9259 -0xE354 0x925A -0xE355 0x925B -0xE356 0x925C -0xE357 0x925D -0xE358 0x925E -0xE359 0x925F -0xE35A 0x9260 -0xE35B 0x9261 -0xE35C 0x9262 -0xE35D 0x9263 -0xE35E 0x9264 -0xE35F 0x9265 -0xE360 0x9266 -0xE361 0x9267 -0xE362 0x9268 -0xE363 0x9269 -0xE364 0x926A -0xE365 0x926B -0xE366 0x926C -0xE367 0x926D -0xE368 0x926E -0xE369 0x926F -0xE36A 0x9270 -0xE36B 0x9271 -0xE36C 0x9272 -0xE36D 0x9273 -0xE36E 0x9275 -0xE36F 0x9276 -0xE370 0x9277 -0xE371 0x9278 -0xE372 0x9279 -0xE373 0x927A -0xE374 0x927B -0xE375 0x927C -0xE376 0x927D -0xE377 0x927E -0xE378 0x927F -0xE379 0x9280 -0xE37A 0x9281 -0xE37B 0x9282 -0xE37C 0x9283 -0xE37D 0x9284 -0xE37E 0x9285 -0xE380 0x9286 -0xE381 0x9287 -0xE382 0x9288 -0xE383 0x9289 -0xE384 0x928A -0xE385 0x928B -0xE386 0x928C -0xE387 0x928D -0xE388 0x928F -0xE389 0x9290 -0xE38A 0x9291 -0xE38B 0x9292 -0xE38C 0x9293 -0xE38D 0x9294 -0xE38E 0x9295 -0xE38F 0x9296 -0xE390 0x9297 -0xE391 0x9298 -0xE392 0x9299 -0xE393 0x929A -0xE394 0x929B -0xE395 0x929C -0xE396 0x929D -0xE397 0x929E -0xE398 0x929F -0xE399 0x92A0 -0xE39A 0x92A1 -0xE39B 0x92A2 -0xE39C 0x92A3 -0xE39D 0x92A4 -0xE39E 0x92A5 -0xE39F 0x92A6 -0xE3A0 0x92A7 -0xE3A1 0x606A -0xE3A2 0x607D -0xE3A3 0x6096 -0xE3A4 0x609A -0xE3A5 0x60AD -0xE3A6 0x609D -0xE3A7 0x6083 -0xE3A8 0x6092 -0xE3A9 0x608C -0xE3AA 0x609B -0xE3AB 0x60EC -0xE3AC 0x60BB -0xE3AD 0x60B1 -0xE3AE 0x60DD -0xE3AF 0x60D8 -0xE3B0 0x60C6 -0xE3B1 0x60DA -0xE3B2 0x60B4 -0xE3B3 0x6120 -0xE3B4 0x6126 -0xE3B5 0x6115 -0xE3B6 0x6123 -0xE3B7 0x60F4 -0xE3B8 0x6100 -0xE3B9 0x610E -0xE3BA 0x612B -0xE3BB 0x614A -0xE3BC 0x6175 -0xE3BD 0x61AC -0xE3BE 0x6194 -0xE3BF 0x61A7 -0xE3C0 0x61B7 -0xE3C1 0x61D4 -0xE3C2 0x61F5 -0xE3C3 0x5FDD -0xE3C4 0x96B3 -0xE3C5 0x95E9 -0xE3C6 0x95EB -0xE3C7 0x95F1 -0xE3C8 0x95F3 -0xE3C9 0x95F5 -0xE3CA 0x95F6 -0xE3CB 0x95FC -0xE3CC 0x95FE -0xE3CD 0x9603 -0xE3CE 0x9604 -0xE3CF 0x9606 -0xE3D0 0x9608 -0xE3D1 0x960A -0xE3D2 0x960B -0xE3D3 0x960C -0xE3D4 0x960D -0xE3D5 0x960F -0xE3D6 0x9612 -0xE3D7 0x9615 -0xE3D8 0x9616 -0xE3D9 0x9617 -0xE3DA 0x9619 -0xE3DB 0x961A -0xE3DC 0x4E2C -0xE3DD 0x723F -0xE3DE 0x6215 -0xE3DF 0x6C35 -0xE3E0 0x6C54 -0xE3E1 0x6C5C -0xE3E2 0x6C4A -0xE3E3 0x6CA3 -0xE3E4 0x6C85 -0xE3E5 0x6C90 -0xE3E6 0x6C94 -0xE3E7 0x6C8C -0xE3E8 0x6C68 -0xE3E9 0x6C69 -0xE3EA 0x6C74 -0xE3EB 0x6C76 -0xE3EC 0x6C86 -0xE3ED 0x6CA9 -0xE3EE 0x6CD0 -0xE3EF 0x6CD4 -0xE3F0 0x6CAD -0xE3F1 0x6CF7 -0xE3F2 0x6CF8 -0xE3F3 0x6CF1 -0xE3F4 0x6CD7 -0xE3F5 0x6CB2 -0xE3F6 0x6CE0 -0xE3F7 0x6CD6 -0xE3F8 0x6CFA -0xE3F9 0x6CEB -0xE3FA 0x6CEE -0xE3FB 0x6CB1 -0xE3FC 0x6CD3 -0xE3FD 0x6CEF -0xE3FE 0x6CFE -0xE440 0x92A8 -0xE441 0x92A9 -0xE442 0x92AA -0xE443 0x92AB -0xE444 0x92AC -0xE445 0x92AD -0xE446 0x92AF -0xE447 0x92B0 -0xE448 0x92B1 -0xE449 0x92B2 -0xE44A 0x92B3 -0xE44B 0x92B4 -0xE44C 0x92B5 -0xE44D 0x92B6 -0xE44E 0x92B7 -0xE44F 0x92B8 -0xE450 0x92B9 -0xE451 0x92BA -0xE452 0x92BB -0xE453 0x92BC -0xE454 0x92BD -0xE455 0x92BE -0xE456 0x92BF -0xE457 0x92C0 -0xE458 0x92C1 -0xE459 0x92C2 -0xE45A 0x92C3 -0xE45B 0x92C4 -0xE45C 0x92C5 -0xE45D 0x92C6 -0xE45E 0x92C7 -0xE45F 0x92C9 -0xE460 0x92CA -0xE461 0x92CB -0xE462 0x92CC -0xE463 0x92CD -0xE464 0x92CE -0xE465 0x92CF -0xE466 0x92D0 -0xE467 0x92D1 -0xE468 0x92D2 -0xE469 0x92D3 -0xE46A 0x92D4 -0xE46B 0x92D5 -0xE46C 0x92D6 -0xE46D 0x92D7 -0xE46E 0x92D8 -0xE46F 0x92D9 -0xE470 0x92DA -0xE471 0x92DB -0xE472 0x92DC -0xE473 0x92DD -0xE474 0x92DE -0xE475 0x92DF -0xE476 0x92E0 -0xE477 0x92E1 -0xE478 0x92E2 -0xE479 0x92E3 -0xE47A 0x92E4 -0xE47B 0x92E5 -0xE47C 0x92E6 -0xE47D 0x92E7 -0xE47E 0x92E8 -0xE480 0x92E9 -0xE481 0x92EA -0xE482 0x92EB -0xE483 0x92EC -0xE484 0x92ED -0xE485 0x92EE -0xE486 0x92EF -0xE487 0x92F0 -0xE488 0x92F1 -0xE489 0x92F2 -0xE48A 0x92F3 -0xE48B 0x92F4 -0xE48C 0x92F5 -0xE48D 0x92F6 -0xE48E 0x92F7 -0xE48F 0x92F8 -0xE490 0x92F9 -0xE491 0x92FA -0xE492 0x92FB -0xE493 0x92FC -0xE494 0x92FD -0xE495 0x92FE -0xE496 0x92FF -0xE497 0x9300 -0xE498 0x9301 -0xE499 0x9302 -0xE49A 0x9303 -0xE49B 0x9304 -0xE49C 0x9305 -0xE49D 0x9306 -0xE49E 0x9307 -0xE49F 0x9308 -0xE4A0 0x9309 -0xE4A1 0x6D39 -0xE4A2 0x6D27 -0xE4A3 0x6D0C -0xE4A4 0x6D43 -0xE4A5 0x6D48 -0xE4A6 0x6D07 -0xE4A7 0x6D04 -0xE4A8 0x6D19 -0xE4A9 0x6D0E -0xE4AA 0x6D2B -0xE4AB 0x6D4D -0xE4AC 0x6D2E -0xE4AD 0x6D35 -0xE4AE 0x6D1A -0xE4AF 0x6D4F -0xE4B0 0x6D52 -0xE4B1 0x6D54 -0xE4B2 0x6D33 -0xE4B3 0x6D91 -0xE4B4 0x6D6F -0xE4B5 0x6D9E -0xE4B6 0x6DA0 -0xE4B7 0x6D5E -0xE4B8 0x6D93 -0xE4B9 0x6D94 -0xE4BA 0x6D5C -0xE4BB 0x6D60 -0xE4BC 0x6D7C -0xE4BD 0x6D63 -0xE4BE 0x6E1A -0xE4BF 0x6DC7 -0xE4C0 0x6DC5 -0xE4C1 0x6DDE -0xE4C2 0x6E0E -0xE4C3 0x6DBF -0xE4C4 0x6DE0 -0xE4C5 0x6E11 -0xE4C6 0x6DE6 -0xE4C7 0x6DDD -0xE4C8 0x6DD9 -0xE4C9 0x6E16 -0xE4CA 0x6DAB -0xE4CB 0x6E0C -0xE4CC 0x6DAE -0xE4CD 0x6E2B -0xE4CE 0x6E6E -0xE4CF 0x6E4E -0xE4D0 0x6E6B -0xE4D1 0x6EB2 -0xE4D2 0x6E5F -0xE4D3 0x6E86 -0xE4D4 0x6E53 -0xE4D5 0x6E54 -0xE4D6 0x6E32 -0xE4D7 0x6E25 -0xE4D8 0x6E44 -0xE4D9 0x6EDF -0xE4DA 0x6EB1 -0xE4DB 0x6E98 -0xE4DC 0x6EE0 -0xE4DD 0x6F2D -0xE4DE 0x6EE2 -0xE4DF 0x6EA5 -0xE4E0 0x6EA7 -0xE4E1 0x6EBD -0xE4E2 0x6EBB -0xE4E3 0x6EB7 -0xE4E4 0x6ED7 -0xE4E5 0x6EB4 -0xE4E6 0x6ECF -0xE4E7 0x6E8F -0xE4E8 0x6EC2 -0xE4E9 0x6E9F -0xE4EA 0x6F62 -0xE4EB 0x6F46 -0xE4EC 0x6F47 -0xE4ED 0x6F24 -0xE4EE 0x6F15 -0xE4EF 0x6EF9 -0xE4F0 0x6F2F -0xE4F1 0x6F36 -0xE4F2 0x6F4B -0xE4F3 0x6F74 -0xE4F4 0x6F2A -0xE4F5 0x6F09 -0xE4F6 0x6F29 -0xE4F7 0x6F89 -0xE4F8 0x6F8D -0xE4F9 0x6F8C -0xE4FA 0x6F78 -0xE4FB 0x6F72 -0xE4FC 0x6F7C -0xE4FD 0x6F7A -0xE4FE 0x6FD1 -0xE540 0x930A -0xE541 0x930B -0xE542 0x930C -0xE543 0x930D -0xE544 0x930E -0xE545 0x930F -0xE546 0x9310 -0xE547 0x9311 -0xE548 0x9312 -0xE549 0x9313 -0xE54A 0x9314 -0xE54B 0x9315 -0xE54C 0x9316 -0xE54D 0x9317 -0xE54E 0x9318 -0xE54F 0x9319 -0xE550 0x931A -0xE551 0x931B -0xE552 0x931C -0xE553 0x931D -0xE554 0x931E -0xE555 0x931F -0xE556 0x9320 -0xE557 0x9321 -0xE558 0x9322 -0xE559 0x9323 -0xE55A 0x9324 -0xE55B 0x9325 -0xE55C 0x9326 -0xE55D 0x9327 -0xE55E 0x9328 -0xE55F 0x9329 -0xE560 0x932A -0xE561 0x932B -0xE562 0x932C -0xE563 0x932D -0xE564 0x932E -0xE565 0x932F -0xE566 0x9330 -0xE567 0x9331 -0xE568 0x9332 -0xE569 0x9333 -0xE56A 0x9334 -0xE56B 0x9335 -0xE56C 0x9336 -0xE56D 0x9337 -0xE56E 0x9338 -0xE56F 0x9339 -0xE570 0x933A -0xE571 0x933B -0xE572 0x933C -0xE573 0x933D -0xE574 0x933F -0xE575 0x9340 -0xE576 0x9341 -0xE577 0x9342 -0xE578 0x9343 -0xE579 0x9344 -0xE57A 0x9345 -0xE57B 0x9346 -0xE57C 0x9347 -0xE57D 0x9348 -0xE57E 0x9349 -0xE580 0x934A -0xE581 0x934B -0xE582 0x934C -0xE583 0x934D -0xE584 0x934E -0xE585 0x934F -0xE586 0x9350 -0xE587 0x9351 -0xE588 0x9352 -0xE589 0x9353 -0xE58A 0x9354 -0xE58B 0x9355 -0xE58C 0x9356 -0xE58D 0x9357 -0xE58E 0x9358 -0xE58F 0x9359 -0xE590 0x935A -0xE591 0x935B -0xE592 0x935C -0xE593 0x935D -0xE594 0x935E -0xE595 0x935F -0xE596 0x9360 -0xE597 0x9361 -0xE598 0x9362 -0xE599 0x9363 -0xE59A 0x9364 -0xE59B 0x9365 -0xE59C 0x9366 -0xE59D 0x9367 -0xE59E 0x9368 -0xE59F 0x9369 -0xE5A0 0x936B -0xE5A1 0x6FC9 -0xE5A2 0x6FA7 -0xE5A3 0x6FB9 -0xE5A4 0x6FB6 -0xE5A5 0x6FC2 -0xE5A6 0x6FE1 -0xE5A7 0x6FEE -0xE5A8 0x6FDE -0xE5A9 0x6FE0 -0xE5AA 0x6FEF -0xE5AB 0x701A -0xE5AC 0x7023 -0xE5AD 0x701B -0xE5AE 0x7039 -0xE5AF 0x7035 -0xE5B0 0x704F -0xE5B1 0x705E -0xE5B2 0x5B80 -0xE5B3 0x5B84 -0xE5B4 0x5B95 -0xE5B5 0x5B93 -0xE5B6 0x5BA5 -0xE5B7 0x5BB8 -0xE5B8 0x752F -0xE5B9 0x9A9E -0xE5BA 0x6434 -0xE5BB 0x5BE4 -0xE5BC 0x5BEE -0xE5BD 0x8930 -0xE5BE 0x5BF0 -0xE5BF 0x8E47 -0xE5C0 0x8B07 -0xE5C1 0x8FB6 -0xE5C2 0x8FD3 -0xE5C3 0x8FD5 -0xE5C4 0x8FE5 -0xE5C5 0x8FEE -0xE5C6 0x8FE4 -0xE5C7 0x8FE9 -0xE5C8 0x8FE6 -0xE5C9 0x8FF3 -0xE5CA 0x8FE8 -0xE5CB 0x9005 -0xE5CC 0x9004 -0xE5CD 0x900B -0xE5CE 0x9026 -0xE5CF 0x9011 -0xE5D0 0x900D -0xE5D1 0x9016 -0xE5D2 0x9021 -0xE5D3 0x9035 -0xE5D4 0x9036 -0xE5D5 0x902D -0xE5D6 0x902F -0xE5D7 0x9044 -0xE5D8 0x9051 -0xE5D9 0x9052 -0xE5DA 0x9050 -0xE5DB 0x9068 -0xE5DC 0x9058 -0xE5DD 0x9062 -0xE5DE 0x905B -0xE5DF 0x66B9 -0xE5E0 0x9074 -0xE5E1 0x907D -0xE5E2 0x9082 -0xE5E3 0x9088 -0xE5E4 0x9083 -0xE5E5 0x908B -0xE5E6 0x5F50 -0xE5E7 0x5F57 -0xE5E8 0x5F56 -0xE5E9 0x5F58 -0xE5EA 0x5C3B -0xE5EB 0x54AB -0xE5EC 0x5C50 -0xE5ED 0x5C59 -0xE5EE 0x5B71 -0xE5EF 0x5C63 -0xE5F0 0x5C66 -0xE5F1 0x7FBC -0xE5F2 0x5F2A -0xE5F3 0x5F29 -0xE5F4 0x5F2D -0xE5F5 0x8274 -0xE5F6 0x5F3C -0xE5F7 0x9B3B -0xE5F8 0x5C6E -0xE5F9 0x5981 -0xE5FA 0x5983 -0xE5FB 0x598D -0xE5FC 0x59A9 -0xE5FD 0x59AA -0xE5FE 0x59A3 -0xE640 0x936C -0xE641 0x936D -0xE642 0x936E -0xE643 0x936F -0xE644 0x9370 -0xE645 0x9371 -0xE646 0x9372 -0xE647 0x9373 -0xE648 0x9374 -0xE649 0x9375 -0xE64A 0x9376 -0xE64B 0x9377 -0xE64C 0x9378 -0xE64D 0x9379 -0xE64E 0x937A -0xE64F 0x937B -0xE650 0x937C -0xE651 0x937D -0xE652 0x937E -0xE653 0x937F -0xE654 0x9380 -0xE655 0x9381 -0xE656 0x9382 -0xE657 0x9383 -0xE658 0x9384 -0xE659 0x9385 -0xE65A 0x9386 -0xE65B 0x9387 -0xE65C 0x9388 -0xE65D 0x9389 -0xE65E 0x938A -0xE65F 0x938B -0xE660 0x938C -0xE661 0x938D -0xE662 0x938E -0xE663 0x9390 -0xE664 0x9391 -0xE665 0x9392 -0xE666 0x9393 -0xE667 0x9394 -0xE668 0x9395 -0xE669 0x9396 -0xE66A 0x9397 -0xE66B 0x9398 -0xE66C 0x9399 -0xE66D 0x939A -0xE66E 0x939B -0xE66F 0x939C -0xE670 0x939D -0xE671 0x939E -0xE672 0x939F -0xE673 0x93A0 -0xE674 0x93A1 -0xE675 0x93A2 -0xE676 0x93A3 -0xE677 0x93A4 -0xE678 0x93A5 -0xE679 0x93A6 -0xE67A 0x93A7 -0xE67B 0x93A8 -0xE67C 0x93A9 -0xE67D 0x93AA -0xE67E 0x93AB -0xE680 0x93AC -0xE681 0x93AD -0xE682 0x93AE -0xE683 0x93AF -0xE684 0x93B0 -0xE685 0x93B1 -0xE686 0x93B2 -0xE687 0x93B3 -0xE688 0x93B4 -0xE689 0x93B5 -0xE68A 0x93B6 -0xE68B 0x93B7 -0xE68C 0x93B8 -0xE68D 0x93B9 -0xE68E 0x93BA -0xE68F 0x93BB -0xE690 0x93BC -0xE691 0x93BD -0xE692 0x93BE -0xE693 0x93BF -0xE694 0x93C0 -0xE695 0x93C1 -0xE696 0x93C2 -0xE697 0x93C3 -0xE698 0x93C4 -0xE699 0x93C5 -0xE69A 0x93C6 -0xE69B 0x93C7 -0xE69C 0x93C8 -0xE69D 0x93C9 -0xE69E 0x93CB -0xE69F 0x93CC -0xE6A0 0x93CD -0xE6A1 0x5997 -0xE6A2 0x59CA -0xE6A3 0x59AB -0xE6A4 0x599E -0xE6A5 0x59A4 -0xE6A6 0x59D2 -0xE6A7 0x59B2 -0xE6A8 0x59AF -0xE6A9 0x59D7 -0xE6AA 0x59BE -0xE6AB 0x5A05 -0xE6AC 0x5A06 -0xE6AD 0x59DD -0xE6AE 0x5A08 -0xE6AF 0x59E3 -0xE6B0 0x59D8 -0xE6B1 0x59F9 -0xE6B2 0x5A0C -0xE6B3 0x5A09 -0xE6B4 0x5A32 -0xE6B5 0x5A34 -0xE6B6 0x5A11 -0xE6B7 0x5A23 -0xE6B8 0x5A13 -0xE6B9 0x5A40 -0xE6BA 0x5A67 -0xE6BB 0x5A4A -0xE6BC 0x5A55 -0xE6BD 0x5A3C -0xE6BE 0x5A62 -0xE6BF 0x5A75 -0xE6C0 0x80EC -0xE6C1 0x5AAA -0xE6C2 0x5A9B -0xE6C3 0x5A77 -0xE6C4 0x5A7A -0xE6C5 0x5ABE -0xE6C6 0x5AEB -0xE6C7 0x5AB2 -0xE6C8 0x5AD2 -0xE6C9 0x5AD4 -0xE6CA 0x5AB8 -0xE6CB 0x5AE0 -0xE6CC 0x5AE3 -0xE6CD 0x5AF1 -0xE6CE 0x5AD6 -0xE6CF 0x5AE6 -0xE6D0 0x5AD8 -0xE6D1 0x5ADC -0xE6D2 0x5B09 -0xE6D3 0x5B17 -0xE6D4 0x5B16 -0xE6D5 0x5B32 -0xE6D6 0x5B37 -0xE6D7 0x5B40 -0xE6D8 0x5C15 -0xE6D9 0x5C1C -0xE6DA 0x5B5A -0xE6DB 0x5B65 -0xE6DC 0x5B73 -0xE6DD 0x5B51 -0xE6DE 0x5B53 -0xE6DF 0x5B62 -0xE6E0 0x9A75 -0xE6E1 0x9A77 -0xE6E2 0x9A78 -0xE6E3 0x9A7A -0xE6E4 0x9A7F -0xE6E5 0x9A7D -0xE6E6 0x9A80 -0xE6E7 0x9A81 -0xE6E8 0x9A85 -0xE6E9 0x9A88 -0xE6EA 0x9A8A -0xE6EB 0x9A90 -0xE6EC 0x9A92 -0xE6ED 0x9A93 -0xE6EE 0x9A96 -0xE6EF 0x9A98 -0xE6F0 0x9A9B -0xE6F1 0x9A9C -0xE6F2 0x9A9D -0xE6F3 0x9A9F -0xE6F4 0x9AA0 -0xE6F5 0x9AA2 -0xE6F6 0x9AA3 -0xE6F7 0x9AA5 -0xE6F8 0x9AA7 -0xE6F9 0x7E9F -0xE6FA 0x7EA1 -0xE6FB 0x7EA3 -0xE6FC 0x7EA5 -0xE6FD 0x7EA8 -0xE6FE 0x7EA9 -0xE740 0x93CE -0xE741 0x93CF -0xE742 0x93D0 -0xE743 0x93D1 -0xE744 0x93D2 -0xE745 0x93D3 -0xE746 0x93D4 -0xE747 0x93D5 -0xE748 0x93D7 -0xE749 0x93D8 -0xE74A 0x93D9 -0xE74B 0x93DA -0xE74C 0x93DB -0xE74D 0x93DC -0xE74E 0x93DD -0xE74F 0x93DE -0xE750 0x93DF -0xE751 0x93E0 -0xE752 0x93E1 -0xE753 0x93E2 -0xE754 0x93E3 -0xE755 0x93E4 -0xE756 0x93E5 -0xE757 0x93E6 -0xE758 0x93E7 -0xE759 0x93E8 -0xE75A 0x93E9 -0xE75B 0x93EA -0xE75C 0x93EB -0xE75D 0x93EC -0xE75E 0x93ED -0xE75F 0x93EE -0xE760 0x93EF -0xE761 0x93F0 -0xE762 0x93F1 -0xE763 0x93F2 -0xE764 0x93F3 -0xE765 0x93F4 -0xE766 0x93F5 -0xE767 0x93F6 -0xE768 0x93F7 -0xE769 0x93F8 -0xE76A 0x93F9 -0xE76B 0x93FA -0xE76C 0x93FB -0xE76D 0x93FC -0xE76E 0x93FD -0xE76F 0x93FE -0xE770 0x93FF -0xE771 0x9400 -0xE772 0x9401 -0xE773 0x9402 -0xE774 0x9403 -0xE775 0x9404 -0xE776 0x9405 -0xE777 0x9406 -0xE778 0x9407 -0xE779 0x9408 -0xE77A 0x9409 -0xE77B 0x940A -0xE77C 0x940B -0xE77D 0x940C -0xE77E 0x940D -0xE780 0x940E -0xE781 0x940F -0xE782 0x9410 -0xE783 0x9411 -0xE784 0x9412 -0xE785 0x9413 -0xE786 0x9414 -0xE787 0x9415 -0xE788 0x9416 -0xE789 0x9417 -0xE78A 0x9418 -0xE78B 0x9419 -0xE78C 0x941A -0xE78D 0x941B -0xE78E 0x941C -0xE78F 0x941D -0xE790 0x941E -0xE791 0x941F -0xE792 0x9420 -0xE793 0x9421 -0xE794 0x9422 -0xE795 0x9423 -0xE796 0x9424 -0xE797 0x9425 -0xE798 0x9426 -0xE799 0x9427 -0xE79A 0x9428 -0xE79B 0x9429 -0xE79C 0x942A -0xE79D 0x942B -0xE79E 0x942C -0xE79F 0x942D -0xE7A0 0x942E -0xE7A1 0x7EAD -0xE7A2 0x7EB0 -0xE7A3 0x7EBE -0xE7A4 0x7EC0 -0xE7A5 0x7EC1 -0xE7A6 0x7EC2 -0xE7A7 0x7EC9 -0xE7A8 0x7ECB -0xE7A9 0x7ECC -0xE7AA 0x7ED0 -0xE7AB 0x7ED4 -0xE7AC 0x7ED7 -0xE7AD 0x7EDB -0xE7AE 0x7EE0 -0xE7AF 0x7EE1 -0xE7B0 0x7EE8 -0xE7B1 0x7EEB -0xE7B2 0x7EEE -0xE7B3 0x7EEF -0xE7B4 0x7EF1 -0xE7B5 0x7EF2 -0xE7B6 0x7F0D -0xE7B7 0x7EF6 -0xE7B8 0x7EFA -0xE7B9 0x7EFB -0xE7BA 0x7EFE -0xE7BB 0x7F01 -0xE7BC 0x7F02 -0xE7BD 0x7F03 -0xE7BE 0x7F07 -0xE7BF 0x7F08 -0xE7C0 0x7F0B -0xE7C1 0x7F0C -0xE7C2 0x7F0F -0xE7C3 0x7F11 -0xE7C4 0x7F12 -0xE7C5 0x7F17 -0xE7C6 0x7F19 -0xE7C7 0x7F1C -0xE7C8 0x7F1B -0xE7C9 0x7F1F -0xE7CA 0x7F21 -0xE7CB 0x7F22 -0xE7CC 0x7F23 -0xE7CD 0x7F24 -0xE7CE 0x7F25 -0xE7CF 0x7F26 -0xE7D0 0x7F27 -0xE7D1 0x7F2A -0xE7D2 0x7F2B -0xE7D3 0x7F2C -0xE7D4 0x7F2D -0xE7D5 0x7F2F -0xE7D6 0x7F30 -0xE7D7 0x7F31 -0xE7D8 0x7F32 -0xE7D9 0x7F33 -0xE7DA 0x7F35 -0xE7DB 0x5E7A -0xE7DC 0x757F -0xE7DD 0x5DDB -0xE7DE 0x753E -0xE7DF 0x9095 -0xE7E0 0x738E -0xE7E1 0x7391 -0xE7E2 0x73AE -0xE7E3 0x73A2 -0xE7E4 0x739F -0xE7E5 0x73CF -0xE7E6 0x73C2 -0xE7E7 0x73D1 -0xE7E8 0x73B7 -0xE7E9 0x73B3 -0xE7EA 0x73C0 -0xE7EB 0x73C9 -0xE7EC 0x73C8 -0xE7ED 0x73E5 -0xE7EE 0x73D9 -0xE7EF 0x987C -0xE7F0 0x740A -0xE7F1 0x73E9 -0xE7F2 0x73E7 -0xE7F3 0x73DE -0xE7F4 0x73BA -0xE7F5 0x73F2 -0xE7F6 0x740F -0xE7F7 0x742A -0xE7F8 0x745B -0xE7F9 0x7426 -0xE7FA 0x7425 -0xE7FB 0x7428 -0xE7FC 0x7430 -0xE7FD 0x742E -0xE7FE 0x742C -0xE840 0x942F -0xE841 0x9430 -0xE842 0x9431 -0xE843 0x9432 -0xE844 0x9433 -0xE845 0x9434 -0xE846 0x9435 -0xE847 0x9436 -0xE848 0x9437 -0xE849 0x9438 -0xE84A 0x9439 -0xE84B 0x943A -0xE84C 0x943B -0xE84D 0x943C -0xE84E 0x943D -0xE84F 0x943F -0xE850 0x9440 -0xE851 0x9441 -0xE852 0x9442 -0xE853 0x9443 -0xE854 0x9444 -0xE855 0x9445 -0xE856 0x9446 -0xE857 0x9447 -0xE858 0x9448 -0xE859 0x9449 -0xE85A 0x944A -0xE85B 0x944B -0xE85C 0x944C -0xE85D 0x944D -0xE85E 0x944E -0xE85F 0x944F -0xE860 0x9450 -0xE861 0x9451 -0xE862 0x9452 -0xE863 0x9453 -0xE864 0x9454 -0xE865 0x9455 -0xE866 0x9456 -0xE867 0x9457 -0xE868 0x9458 -0xE869 0x9459 -0xE86A 0x945A -0xE86B 0x945B -0xE86C 0x945C -0xE86D 0x945D -0xE86E 0x945E -0xE86F 0x945F -0xE870 0x9460 -0xE871 0x9461 -0xE872 0x9462 -0xE873 0x9463 -0xE874 0x9464 -0xE875 0x9465 -0xE876 0x9466 -0xE877 0x9467 -0xE878 0x9468 -0xE879 0x9469 -0xE87A 0x946A -0xE87B 0x946C -0xE87C 0x946D -0xE87D 0x946E -0xE87E 0x946F -0xE880 0x9470 -0xE881 0x9471 -0xE882 0x9472 -0xE883 0x9473 -0xE884 0x9474 -0xE885 0x9475 -0xE886 0x9476 -0xE887 0x9477 -0xE888 0x9478 -0xE889 0x9479 -0xE88A 0x947A -0xE88B 0x947B -0xE88C 0x947C -0xE88D 0x947D -0xE88E 0x947E -0xE88F 0x947F -0xE890 0x9480 -0xE891 0x9481 -0xE892 0x9482 -0xE893 0x9483 -0xE894 0x9484 -0xE895 0x9491 -0xE896 0x9496 -0xE897 0x9498 -0xE898 0x94C7 -0xE899 0x94CF -0xE89A 0x94D3 -0xE89B 0x94D4 -0xE89C 0x94DA -0xE89D 0x94E6 -0xE89E 0x94FB -0xE89F 0x951C -0xE8A0 0x9520 -0xE8A1 0x741B -0xE8A2 0x741A -0xE8A3 0x7441 -0xE8A4 0x745C -0xE8A5 0x7457 -0xE8A6 0x7455 -0xE8A7 0x7459 -0xE8A8 0x7477 -0xE8A9 0x746D -0xE8AA 0x747E -0xE8AB 0x749C -0xE8AC 0x748E -0xE8AD 0x7480 -0xE8AE 0x7481 -0xE8AF 0x7487 -0xE8B0 0x748B -0xE8B1 0x749E -0xE8B2 0x74A8 -0xE8B3 0x74A9 -0xE8B4 0x7490 -0xE8B5 0x74A7 -0xE8B6 0x74D2 -0xE8B7 0x74BA -0xE8B8 0x97EA -0xE8B9 0x97EB -0xE8BA 0x97EC -0xE8BB 0x674C -0xE8BC 0x6753 -0xE8BD 0x675E -0xE8BE 0x6748 -0xE8BF 0x6769 -0xE8C0 0x67A5 -0xE8C1 0x6787 -0xE8C2 0x676A -0xE8C3 0x6773 -0xE8C4 0x6798 -0xE8C5 0x67A7 -0xE8C6 0x6775 -0xE8C7 0x67A8 -0xE8C8 0x679E -0xE8C9 0x67AD -0xE8CA 0x678B -0xE8CB 0x6777 -0xE8CC 0x677C -0xE8CD 0x67F0 -0xE8CE 0x6809 -0xE8CF 0x67D8 -0xE8D0 0x680A -0xE8D1 0x67E9 -0xE8D2 0x67B0 -0xE8D3 0x680C -0xE8D4 0x67D9 -0xE8D5 0x67B5 -0xE8D6 0x67DA -0xE8D7 0x67B3 -0xE8D8 0x67DD -0xE8D9 0x6800 -0xE8DA 0x67C3 -0xE8DB 0x67B8 -0xE8DC 0x67E2 -0xE8DD 0x680E -0xE8DE 0x67C1 -0xE8DF 0x67FD -0xE8E0 0x6832 -0xE8E1 0x6833 -0xE8E2 0x6860 -0xE8E3 0x6861 -0xE8E4 0x684E -0xE8E5 0x6862 -0xE8E6 0x6844 -0xE8E7 0x6864 -0xE8E8 0x6883 -0xE8E9 0x681D -0xE8EA 0x6855 -0xE8EB 0x6866 -0xE8EC 0x6841 -0xE8ED 0x6867 -0xE8EE 0x6840 -0xE8EF 0x683E -0xE8F0 0x684A -0xE8F1 0x6849 -0xE8F2 0x6829 -0xE8F3 0x68B5 -0xE8F4 0x688F -0xE8F5 0x6874 -0xE8F6 0x6877 -0xE8F7 0x6893 -0xE8F8 0x686B -0xE8F9 0x68C2 -0xE8FA 0x696E -0xE8FB 0x68FC -0xE8FC 0x691F -0xE8FD 0x6920 -0xE8FE 0x68F9 -0xE940 0x9527 -0xE941 0x9533 -0xE942 0x953D -0xE943 0x9543 -0xE944 0x9548 -0xE945 0x954B -0xE946 0x9555 -0xE947 0x955A -0xE948 0x9560 -0xE949 0x956E -0xE94A 0x9574 -0xE94B 0x9575 -0xE94C 0x9577 -0xE94D 0x9578 -0xE94E 0x9579 -0xE94F 0x957A -0xE950 0x957B -0xE951 0x957C -0xE952 0x957D -0xE953 0x957E -0xE954 0x9580 -0xE955 0x9581 -0xE956 0x9582 -0xE957 0x9583 -0xE958 0x9584 -0xE959 0x9585 -0xE95A 0x9586 -0xE95B 0x9587 -0xE95C 0x9588 -0xE95D 0x9589 -0xE95E 0x958A -0xE95F 0x958B -0xE960 0x958C -0xE961 0x958D -0xE962 0x958E -0xE963 0x958F -0xE964 0x9590 -0xE965 0x9591 -0xE966 0x9592 -0xE967 0x9593 -0xE968 0x9594 -0xE969 0x9595 -0xE96A 0x9596 -0xE96B 0x9597 -0xE96C 0x9598 -0xE96D 0x9599 -0xE96E 0x959A -0xE96F 0x959B -0xE970 0x959C -0xE971 0x959D -0xE972 0x959E -0xE973 0x959F -0xE974 0x95A0 -0xE975 0x95A1 -0xE976 0x95A2 -0xE977 0x95A3 -0xE978 0x95A4 -0xE979 0x95A5 -0xE97A 0x95A6 -0xE97B 0x95A7 -0xE97C 0x95A8 -0xE97D 0x95A9 -0xE97E 0x95AA -0xE980 0x95AB -0xE981 0x95AC -0xE982 0x95AD -0xE983 0x95AE -0xE984 0x95AF -0xE985 0x95B0 -0xE986 0x95B1 -0xE987 0x95B2 -0xE988 0x95B3 -0xE989 0x95B4 -0xE98A 0x95B5 -0xE98B 0x95B6 -0xE98C 0x95B7 -0xE98D 0x95B8 -0xE98E 0x95B9 -0xE98F 0x95BA -0xE990 0x95BB -0xE991 0x95BC -0xE992 0x95BD -0xE993 0x95BE -0xE994 0x95BF -0xE995 0x95C0 -0xE996 0x95C1 -0xE997 0x95C2 -0xE998 0x95C3 -0xE999 0x95C4 -0xE99A 0x95C5 -0xE99B 0x95C6 -0xE99C 0x95C7 -0xE99D 0x95C8 -0xE99E 0x95C9 -0xE99F 0x95CA -0xE9A0 0x95CB -0xE9A1 0x6924 -0xE9A2 0x68F0 -0xE9A3 0x690B -0xE9A4 0x6901 -0xE9A5 0x6957 -0xE9A6 0x68E3 -0xE9A7 0x6910 -0xE9A8 0x6971 -0xE9A9 0x6939 -0xE9AA 0x6960 -0xE9AB 0x6942 -0xE9AC 0x695D -0xE9AD 0x6984 -0xE9AE 0x696B -0xE9AF 0x6980 -0xE9B0 0x6998 -0xE9B1 0x6978 -0xE9B2 0x6934 -0xE9B3 0x69CC -0xE9B4 0x6987 -0xE9B5 0x6988 -0xE9B6 0x69CE -0xE9B7 0x6989 -0xE9B8 0x6966 -0xE9B9 0x6963 -0xE9BA 0x6979 -0xE9BB 0x699B -0xE9BC 0x69A7 -0xE9BD 0x69BB -0xE9BE 0x69AB -0xE9BF 0x69AD -0xE9C0 0x69D4 -0xE9C1 0x69B1 -0xE9C2 0x69C1 -0xE9C3 0x69CA -0xE9C4 0x69DF -0xE9C5 0x6995 -0xE9C6 0x69E0 -0xE9C7 0x698D -0xE9C8 0x69FF -0xE9C9 0x6A2F -0xE9CA 0x69ED -0xE9CB 0x6A17 -0xE9CC 0x6A18 -0xE9CD 0x6A65 -0xE9CE 0x69F2 -0xE9CF 0x6A44 -0xE9D0 0x6A3E -0xE9D1 0x6AA0 -0xE9D2 0x6A50 -0xE9D3 0x6A5B -0xE9D4 0x6A35 -0xE9D5 0x6A8E -0xE9D6 0x6A79 -0xE9D7 0x6A3D -0xE9D8 0x6A28 -0xE9D9 0x6A58 -0xE9DA 0x6A7C -0xE9DB 0x6A91 -0xE9DC 0x6A90 -0xE9DD 0x6AA9 -0xE9DE 0x6A97 -0xE9DF 0x6AAB -0xE9E0 0x7337 -0xE9E1 0x7352 -0xE9E2 0x6B81 -0xE9E3 0x6B82 -0xE9E4 0x6B87 -0xE9E5 0x6B84 -0xE9E6 0x6B92 -0xE9E7 0x6B93 -0xE9E8 0x6B8D -0xE9E9 0x6B9A -0xE9EA 0x6B9B -0xE9EB 0x6BA1 -0xE9EC 0x6BAA -0xE9ED 0x8F6B -0xE9EE 0x8F6D -0xE9EF 0x8F71 -0xE9F0 0x8F72 -0xE9F1 0x8F73 -0xE9F2 0x8F75 -0xE9F3 0x8F76 -0xE9F4 0x8F78 -0xE9F5 0x8F77 -0xE9F6 0x8F79 -0xE9F7 0x8F7A -0xE9F8 0x8F7C -0xE9F9 0x8F7E -0xE9FA 0x8F81 -0xE9FB 0x8F82 -0xE9FC 0x8F84 -0xE9FD 0x8F87 -0xE9FE 0x8F8B -0xEA40 0x95CC -0xEA41 0x95CD -0xEA42 0x95CE -0xEA43 0x95CF -0xEA44 0x95D0 -0xEA45 0x95D1 -0xEA46 0x95D2 -0xEA47 0x95D3 -0xEA48 0x95D4 -0xEA49 0x95D5 -0xEA4A 0x95D6 -0xEA4B 0x95D7 -0xEA4C 0x95D8 -0xEA4D 0x95D9 -0xEA4E 0x95DA -0xEA4F 0x95DB -0xEA50 0x95DC -0xEA51 0x95DD -0xEA52 0x95DE -0xEA53 0x95DF -0xEA54 0x95E0 -0xEA55 0x95E1 -0xEA56 0x95E2 -0xEA57 0x95E3 -0xEA58 0x95E4 -0xEA59 0x95E5 -0xEA5A 0x95E6 -0xEA5B 0x95E7 -0xEA5C 0x95EC -0xEA5D 0x95FF -0xEA5E 0x9607 -0xEA5F 0x9613 -0xEA60 0x9618 -0xEA61 0x961B -0xEA62 0x961E -0xEA63 0x9620 -0xEA64 0x9623 -0xEA65 0x9624 -0xEA66 0x9625 -0xEA67 0x9626 -0xEA68 0x9627 -0xEA69 0x9628 -0xEA6A 0x9629 -0xEA6B 0x962B -0xEA6C 0x962C -0xEA6D 0x962D -0xEA6E 0x962F -0xEA6F 0x9630 -0xEA70 0x9637 -0xEA71 0x9638 -0xEA72 0x9639 -0xEA73 0x963A -0xEA74 0x963E -0xEA75 0x9641 -0xEA76 0x9643 -0xEA77 0x964A -0xEA78 0x964E -0xEA79 0x964F -0xEA7A 0x9651 -0xEA7B 0x9652 -0xEA7C 0x9653 -0xEA7D 0x9656 -0xEA7E 0x9657 -0xEA80 0x9658 -0xEA81 0x9659 -0xEA82 0x965A -0xEA83 0x965C -0xEA84 0x965D -0xEA85 0x965E -0xEA86 0x9660 -0xEA87 0x9663 -0xEA88 0x9665 -0xEA89 0x9666 -0xEA8A 0x966B -0xEA8B 0x966D -0xEA8C 0x966E -0xEA8D 0x966F -0xEA8E 0x9670 -0xEA8F 0x9671 -0xEA90 0x9673 -0xEA91 0x9678 -0xEA92 0x9679 -0xEA93 0x967A -0xEA94 0x967B -0xEA95 0x967C -0xEA96 0x967D -0xEA97 0x967E -0xEA98 0x967F -0xEA99 0x9680 -0xEA9A 0x9681 -0xEA9B 0x9682 -0xEA9C 0x9683 -0xEA9D 0x9684 -0xEA9E 0x9687 -0xEA9F 0x9689 -0xEAA0 0x968A -0xEAA1 0x8F8D -0xEAA2 0x8F8E -0xEAA3 0x8F8F -0xEAA4 0x8F98 -0xEAA5 0x8F9A -0xEAA6 0x8ECE -0xEAA7 0x620B -0xEAA8 0x6217 -0xEAA9 0x621B -0xEAAA 0x621F -0xEAAB 0x6222 -0xEAAC 0x6221 -0xEAAD 0x6225 -0xEAAE 0x6224 -0xEAAF 0x622C -0xEAB0 0x81E7 -0xEAB1 0x74EF -0xEAB2 0x74F4 -0xEAB3 0x74FF -0xEAB4 0x750F -0xEAB5 0x7511 -0xEAB6 0x7513 -0xEAB7 0x6534 -0xEAB8 0x65EE -0xEAB9 0x65EF -0xEABA 0x65F0 -0xEABB 0x660A -0xEABC 0x6619 -0xEABD 0x6772 -0xEABE 0x6603 -0xEABF 0x6615 -0xEAC0 0x6600 -0xEAC1 0x7085 -0xEAC2 0x66F7 -0xEAC3 0x661D -0xEAC4 0x6634 -0xEAC5 0x6631 -0xEAC6 0x6636 -0xEAC7 0x6635 -0xEAC8 0x8006 -0xEAC9 0x665F -0xEACA 0x6654 -0xEACB 0x6641 -0xEACC 0x664F -0xEACD 0x6656 -0xEACE 0x6661 -0xEACF 0x6657 -0xEAD0 0x6677 -0xEAD1 0x6684 -0xEAD2 0x668C -0xEAD3 0x66A7 -0xEAD4 0x669D -0xEAD5 0x66BE -0xEAD6 0x66DB -0xEAD7 0x66DC -0xEAD8 0x66E6 -0xEAD9 0x66E9 -0xEADA 0x8D32 -0xEADB 0x8D33 -0xEADC 0x8D36 -0xEADD 0x8D3B -0xEADE 0x8D3D -0xEADF 0x8D40 -0xEAE0 0x8D45 -0xEAE1 0x8D46 -0xEAE2 0x8D48 -0xEAE3 0x8D49 -0xEAE4 0x8D47 -0xEAE5 0x8D4D -0xEAE6 0x8D55 -0xEAE7 0x8D59 -0xEAE8 0x89C7 -0xEAE9 0x89CA -0xEAEA 0x89CB -0xEAEB 0x89CC -0xEAEC 0x89CE -0xEAED 0x89CF -0xEAEE 0x89D0 -0xEAEF 0x89D1 -0xEAF0 0x726E -0xEAF1 0x729F -0xEAF2 0x725D -0xEAF3 0x7266 -0xEAF4 0x726F -0xEAF5 0x727E -0xEAF6 0x727F -0xEAF7 0x7284 -0xEAF8 0x728B -0xEAF9 0x728D -0xEAFA 0x728F -0xEAFB 0x7292 -0xEAFC 0x6308 -0xEAFD 0x6332 -0xEAFE 0x63B0 -0xEB40 0x968C -0xEB41 0x968E -0xEB42 0x9691 -0xEB43 0x9692 -0xEB44 0x9693 -0xEB45 0x9695 -0xEB46 0x9696 -0xEB47 0x969A -0xEB48 0x969B -0xEB49 0x969D -0xEB4A 0x969E -0xEB4B 0x969F -0xEB4C 0x96A0 -0xEB4D 0x96A1 -0xEB4E 0x96A2 -0xEB4F 0x96A3 -0xEB50 0x96A4 -0xEB51 0x96A5 -0xEB52 0x96A6 -0xEB53 0x96A8 -0xEB54 0x96A9 -0xEB55 0x96AA -0xEB56 0x96AB -0xEB57 0x96AC -0xEB58 0x96AD -0xEB59 0x96AE -0xEB5A 0x96AF -0xEB5B 0x96B1 -0xEB5C 0x96B2 -0xEB5D 0x96B4 -0xEB5E 0x96B5 -0xEB5F 0x96B7 -0xEB60 0x96B8 -0xEB61 0x96BA -0xEB62 0x96BB -0xEB63 0x96BF -0xEB64 0x96C2 -0xEB65 0x96C3 -0xEB66 0x96C8 -0xEB67 0x96CA -0xEB68 0x96CB -0xEB69 0x96D0 -0xEB6A 0x96D1 -0xEB6B 0x96D3 -0xEB6C 0x96D4 -0xEB6D 0x96D6 -0xEB6E 0x96D7 -0xEB6F 0x96D8 -0xEB70 0x96D9 -0xEB71 0x96DA -0xEB72 0x96DB -0xEB73 0x96DC -0xEB74 0x96DD -0xEB75 0x96DE -0xEB76 0x96DF -0xEB77 0x96E1 -0xEB78 0x96E2 -0xEB79 0x96E3 -0xEB7A 0x96E4 -0xEB7B 0x96E5 -0xEB7C 0x96E6 -0xEB7D 0x96E7 -0xEB7E 0x96EB -0xEB80 0x96EC -0xEB81 0x96ED -0xEB82 0x96EE -0xEB83 0x96F0 -0xEB84 0x96F1 -0xEB85 0x96F2 -0xEB86 0x96F4 -0xEB87 0x96F5 -0xEB88 0x96F8 -0xEB89 0x96FA -0xEB8A 0x96FB -0xEB8B 0x96FC -0xEB8C 0x96FD -0xEB8D 0x96FF -0xEB8E 0x9702 -0xEB8F 0x9703 -0xEB90 0x9705 -0xEB91 0x970A -0xEB92 0x970B -0xEB93 0x970C -0xEB94 0x9710 -0xEB95 0x9711 -0xEB96 0x9712 -0xEB97 0x9714 -0xEB98 0x9715 -0xEB99 0x9717 -0xEB9A 0x9718 -0xEB9B 0x9719 -0xEB9C 0x971A -0xEB9D 0x971B -0xEB9E 0x971D -0xEB9F 0x971F -0xEBA0 0x9720 -0xEBA1 0x643F -0xEBA2 0x64D8 -0xEBA3 0x8004 -0xEBA4 0x6BEA -0xEBA5 0x6BF3 -0xEBA6 0x6BFD -0xEBA7 0x6BF5 -0xEBA8 0x6BF9 -0xEBA9 0x6C05 -0xEBAA 0x6C07 -0xEBAB 0x6C06 -0xEBAC 0x6C0D -0xEBAD 0x6C15 -0xEBAE 0x6C18 -0xEBAF 0x6C19 -0xEBB0 0x6C1A -0xEBB1 0x6C21 -0xEBB2 0x6C29 -0xEBB3 0x6C24 -0xEBB4 0x6C2A -0xEBB5 0x6C32 -0xEBB6 0x6535 -0xEBB7 0x6555 -0xEBB8 0x656B -0xEBB9 0x724D -0xEBBA 0x7252 -0xEBBB 0x7256 -0xEBBC 0x7230 -0xEBBD 0x8662 -0xEBBE 0x5216 -0xEBBF 0x809F -0xEBC0 0x809C -0xEBC1 0x8093 -0xEBC2 0x80BC -0xEBC3 0x670A -0xEBC4 0x80BD -0xEBC5 0x80B1 -0xEBC6 0x80AB -0xEBC7 0x80AD -0xEBC8 0x80B4 -0xEBC9 0x80B7 -0xEBCA 0x80E7 -0xEBCB 0x80E8 -0xEBCC 0x80E9 -0xEBCD 0x80EA -0xEBCE 0x80DB -0xEBCF 0x80C2 -0xEBD0 0x80C4 -0xEBD1 0x80D9 -0xEBD2 0x80CD -0xEBD3 0x80D7 -0xEBD4 0x6710 -0xEBD5 0x80DD -0xEBD6 0x80EB -0xEBD7 0x80F1 -0xEBD8 0x80F4 -0xEBD9 0x80ED -0xEBDA 0x810D -0xEBDB 0x810E -0xEBDC 0x80F2 -0xEBDD 0x80FC -0xEBDE 0x6715 -0xEBDF 0x8112 -0xEBE0 0x8C5A -0xEBE1 0x8136 -0xEBE2 0x811E -0xEBE3 0x812C -0xEBE4 0x8118 -0xEBE5 0x8132 -0xEBE6 0x8148 -0xEBE7 0x814C -0xEBE8 0x8153 -0xEBE9 0x8174 -0xEBEA 0x8159 -0xEBEB 0x815A -0xEBEC 0x8171 -0xEBED 0x8160 -0xEBEE 0x8169 -0xEBEF 0x817C -0xEBF0 0x817D -0xEBF1 0x816D -0xEBF2 0x8167 -0xEBF3 0x584D -0xEBF4 0x5AB5 -0xEBF5 0x8188 -0xEBF6 0x8182 -0xEBF7 0x8191 -0xEBF8 0x6ED5 -0xEBF9 0x81A3 -0xEBFA 0x81AA -0xEBFB 0x81CC -0xEBFC 0x6726 -0xEBFD 0x81CA -0xEBFE 0x81BB -0xEC40 0x9721 -0xEC41 0x9722 -0xEC42 0x9723 -0xEC43 0x9724 -0xEC44 0x9725 -0xEC45 0x9726 -0xEC46 0x9727 -0xEC47 0x9728 -0xEC48 0x9729 -0xEC49 0x972B -0xEC4A 0x972C -0xEC4B 0x972E -0xEC4C 0x972F -0xEC4D 0x9731 -0xEC4E 0x9733 -0xEC4F 0x9734 -0xEC50 0x9735 -0xEC51 0x9736 -0xEC52 0x9737 -0xEC53 0x973A -0xEC54 0x973B -0xEC55 0x973C -0xEC56 0x973D -0xEC57 0x973F -0xEC58 0x9740 -0xEC59 0x9741 -0xEC5A 0x9742 -0xEC5B 0x9743 -0xEC5C 0x9744 -0xEC5D 0x9745 -0xEC5E 0x9746 -0xEC5F 0x9747 -0xEC60 0x9748 -0xEC61 0x9749 -0xEC62 0x974A -0xEC63 0x974B -0xEC64 0x974C -0xEC65 0x974D -0xEC66 0x974E -0xEC67 0x974F -0xEC68 0x9750 -0xEC69 0x9751 -0xEC6A 0x9754 -0xEC6B 0x9755 -0xEC6C 0x9757 -0xEC6D 0x9758 -0xEC6E 0x975A -0xEC6F 0x975C -0xEC70 0x975D -0xEC71 0x975F -0xEC72 0x9763 -0xEC73 0x9764 -0xEC74 0x9766 -0xEC75 0x9767 -0xEC76 0x9768 -0xEC77 0x976A -0xEC78 0x976B -0xEC79 0x976C -0xEC7A 0x976D -0xEC7B 0x976E -0xEC7C 0x976F -0xEC7D 0x9770 -0xEC7E 0x9771 -0xEC80 0x9772 -0xEC81 0x9775 -0xEC82 0x9777 -0xEC83 0x9778 -0xEC84 0x9779 -0xEC85 0x977A -0xEC86 0x977B -0xEC87 0x977D -0xEC88 0x977E -0xEC89 0x977F -0xEC8A 0x9780 -0xEC8B 0x9781 -0xEC8C 0x9782 -0xEC8D 0x9783 -0xEC8E 0x9784 -0xEC8F 0x9786 -0xEC90 0x9787 -0xEC91 0x9788 -0xEC92 0x9789 -0xEC93 0x978A -0xEC94 0x978C -0xEC95 0x978E -0xEC96 0x978F -0xEC97 0x9790 -0xEC98 0x9793 -0xEC99 0x9795 -0xEC9A 0x9796 -0xEC9B 0x9797 -0xEC9C 0x9799 -0xEC9D 0x979A -0xEC9E 0x979B -0xEC9F 0x979C -0xECA0 0x979D -0xECA1 0x81C1 -0xECA2 0x81A6 -0xECA3 0x6B24 -0xECA4 0x6B37 -0xECA5 0x6B39 -0xECA6 0x6B43 -0xECA7 0x6B46 -0xECA8 0x6B59 -0xECA9 0x98D1 -0xECAA 0x98D2 -0xECAB 0x98D3 -0xECAC 0x98D5 -0xECAD 0x98D9 -0xECAE 0x98DA -0xECAF 0x6BB3 -0xECB0 0x5F40 -0xECB1 0x6BC2 -0xECB2 0x89F3 -0xECB3 0x6590 -0xECB4 0x9F51 -0xECB5 0x6593 -0xECB6 0x65BC -0xECB7 0x65C6 -0xECB8 0x65C4 -0xECB9 0x65C3 -0xECBA 0x65CC -0xECBB 0x65CE -0xECBC 0x65D2 -0xECBD 0x65D6 -0xECBE 0x7080 -0xECBF 0x709C -0xECC0 0x7096 -0xECC1 0x709D -0xECC2 0x70BB -0xECC3 0x70C0 -0xECC4 0x70B7 -0xECC5 0x70AB -0xECC6 0x70B1 -0xECC7 0x70E8 -0xECC8 0x70CA -0xECC9 0x7110 -0xECCA 0x7113 -0xECCB 0x7116 -0xECCC 0x712F -0xECCD 0x7131 -0xECCE 0x7173 -0xECCF 0x715C -0xECD0 0x7168 -0xECD1 0x7145 -0xECD2 0x7172 -0xECD3 0x714A -0xECD4 0x7178 -0xECD5 0x717A -0xECD6 0x7198 -0xECD7 0x71B3 -0xECD8 0x71B5 -0xECD9 0x71A8 -0xECDA 0x71A0 -0xECDB 0x71E0 -0xECDC 0x71D4 -0xECDD 0x71E7 -0xECDE 0x71F9 -0xECDF 0x721D -0xECE0 0x7228 -0xECE1 0x706C -0xECE2 0x7118 -0xECE3 0x7166 -0xECE4 0x71B9 -0xECE5 0x623E -0xECE6 0x623D -0xECE7 0x6243 -0xECE8 0x6248 -0xECE9 0x6249 -0xECEA 0x793B -0xECEB 0x7940 -0xECEC 0x7946 -0xECED 0x7949 -0xECEE 0x795B -0xECEF 0x795C -0xECF0 0x7953 -0xECF1 0x795A -0xECF2 0x7962 -0xECF3 0x7957 -0xECF4 0x7960 -0xECF5 0x796F -0xECF6 0x7967 -0xECF7 0x797A -0xECF8 0x7985 -0xECF9 0x798A -0xECFA 0x799A -0xECFB 0x79A7 -0xECFC 0x79B3 -0xECFD 0x5FD1 -0xECFE 0x5FD0 -0xED40 0x979E -0xED41 0x979F -0xED42 0x97A1 -0xED43 0x97A2 -0xED44 0x97A4 -0xED45 0x97A5 -0xED46 0x97A6 -0xED47 0x97A7 -0xED48 0x97A8 -0xED49 0x97A9 -0xED4A 0x97AA -0xED4B 0x97AC -0xED4C 0x97AE -0xED4D 0x97B0 -0xED4E 0x97B1 -0xED4F 0x97B3 -0xED50 0x97B5 -0xED51 0x97B6 -0xED52 0x97B7 -0xED53 0x97B8 -0xED54 0x97B9 -0xED55 0x97BA -0xED56 0x97BB -0xED57 0x97BC -0xED58 0x97BD -0xED59 0x97BE -0xED5A 0x97BF -0xED5B 0x97C0 -0xED5C 0x97C1 -0xED5D 0x97C2 -0xED5E 0x97C3 -0xED5F 0x97C4 -0xED60 0x97C5 -0xED61 0x97C6 -0xED62 0x97C7 -0xED63 0x97C8 -0xED64 0x97C9 -0xED65 0x97CA -0xED66 0x97CB -0xED67 0x97CC -0xED68 0x97CD -0xED69 0x97CE -0xED6A 0x97CF -0xED6B 0x97D0 -0xED6C 0x97D1 -0xED6D 0x97D2 -0xED6E 0x97D3 -0xED6F 0x97D4 -0xED70 0x97D5 -0xED71 0x97D6 -0xED72 0x97D7 -0xED73 0x97D8 -0xED74 0x97D9 -0xED75 0x97DA -0xED76 0x97DB -0xED77 0x97DC -0xED78 0x97DD -0xED79 0x97DE -0xED7A 0x97DF -0xED7B 0x97E0 -0xED7C 0x97E1 -0xED7D 0x97E2 -0xED7E 0x97E3 -0xED80 0x97E4 -0xED81 0x97E5 -0xED82 0x97E8 -0xED83 0x97EE -0xED84 0x97EF -0xED85 0x97F0 -0xED86 0x97F1 -0xED87 0x97F2 -0xED88 0x97F4 -0xED89 0x97F7 -0xED8A 0x97F8 -0xED8B 0x97F9 -0xED8C 0x97FA -0xED8D 0x97FB -0xED8E 0x97FC -0xED8F 0x97FD -0xED90 0x97FE -0xED91 0x97FF -0xED92 0x9800 -0xED93 0x9801 -0xED94 0x9802 -0xED95 0x9803 -0xED96 0x9804 -0xED97 0x9805 -0xED98 0x9806 -0xED99 0x9807 -0xED9A 0x9808 -0xED9B 0x9809 -0xED9C 0x980A -0xED9D 0x980B -0xED9E 0x980C -0xED9F 0x980D -0xEDA0 0x980E -0xEDA1 0x603C -0xEDA2 0x605D -0xEDA3 0x605A -0xEDA4 0x6067 -0xEDA5 0x6041 -0xEDA6 0x6059 -0xEDA7 0x6063 -0xEDA8 0x60AB -0xEDA9 0x6106 -0xEDAA 0x610D -0xEDAB 0x615D -0xEDAC 0x61A9 -0xEDAD 0x619D -0xEDAE 0x61CB -0xEDAF 0x61D1 -0xEDB0 0x6206 -0xEDB1 0x8080 -0xEDB2 0x807F -0xEDB3 0x6C93 -0xEDB4 0x6CF6 -0xEDB5 0x6DFC -0xEDB6 0x77F6 -0xEDB7 0x77F8 -0xEDB8 0x7800 -0xEDB9 0x7809 -0xEDBA 0x7817 -0xEDBB 0x7818 -0xEDBC 0x7811 -0xEDBD 0x65AB -0xEDBE 0x782D -0xEDBF 0x781C -0xEDC0 0x781D -0xEDC1 0x7839 -0xEDC2 0x783A -0xEDC3 0x783B -0xEDC4 0x781F -0xEDC5 0x783C -0xEDC6 0x7825 -0xEDC7 0x782C -0xEDC8 0x7823 -0xEDC9 0x7829 -0xEDCA 0x784E -0xEDCB 0x786D -0xEDCC 0x7856 -0xEDCD 0x7857 -0xEDCE 0x7826 -0xEDCF 0x7850 -0xEDD0 0x7847 -0xEDD1 0x784C -0xEDD2 0x786A -0xEDD3 0x789B -0xEDD4 0x7893 -0xEDD5 0x789A -0xEDD6 0x7887 -0xEDD7 0x789C -0xEDD8 0x78A1 -0xEDD9 0x78A3 -0xEDDA 0x78B2 -0xEDDB 0x78B9 -0xEDDC 0x78A5 -0xEDDD 0x78D4 -0xEDDE 0x78D9 -0xEDDF 0x78C9 -0xEDE0 0x78EC -0xEDE1 0x78F2 -0xEDE2 0x7905 -0xEDE3 0x78F4 -0xEDE4 0x7913 -0xEDE5 0x7924 -0xEDE6 0x791E -0xEDE7 0x7934 -0xEDE8 0x9F9B -0xEDE9 0x9EF9 -0xEDEA 0x9EFB -0xEDEB 0x9EFC -0xEDEC 0x76F1 -0xEDED 0x7704 -0xEDEE 0x770D -0xEDEF 0x76F9 -0xEDF0 0x7707 -0xEDF1 0x7708 -0xEDF2 0x771A -0xEDF3 0x7722 -0xEDF4 0x7719 -0xEDF5 0x772D -0xEDF6 0x7726 -0xEDF7 0x7735 -0xEDF8 0x7738 -0xEDF9 0x7750 -0xEDFA 0x7751 -0xEDFB 0x7747 -0xEDFC 0x7743 -0xEDFD 0x775A -0xEDFE 0x7768 -0xEE40 0x980F -0xEE41 0x9810 -0xEE42 0x9811 -0xEE43 0x9812 -0xEE44 0x9813 -0xEE45 0x9814 -0xEE46 0x9815 -0xEE47 0x9816 -0xEE48 0x9817 -0xEE49 0x9818 -0xEE4A 0x9819 -0xEE4B 0x981A -0xEE4C 0x981B -0xEE4D 0x981C -0xEE4E 0x981D -0xEE4F 0x981E -0xEE50 0x981F -0xEE51 0x9820 -0xEE52 0x9821 -0xEE53 0x9822 -0xEE54 0x9823 -0xEE55 0x9824 -0xEE56 0x9825 -0xEE57 0x9826 -0xEE58 0x9827 -0xEE59 0x9828 -0xEE5A 0x9829 -0xEE5B 0x982A -0xEE5C 0x982B -0xEE5D 0x982C -0xEE5E 0x982D -0xEE5F 0x982E -0xEE60 0x982F -0xEE61 0x9830 -0xEE62 0x9831 -0xEE63 0x9832 -0xEE64 0x9833 -0xEE65 0x9834 -0xEE66 0x9835 -0xEE67 0x9836 -0xEE68 0x9837 -0xEE69 0x9838 -0xEE6A 0x9839 -0xEE6B 0x983A -0xEE6C 0x983B -0xEE6D 0x983C -0xEE6E 0x983D -0xEE6F 0x983E -0xEE70 0x983F -0xEE71 0x9840 -0xEE72 0x9841 -0xEE73 0x9842 -0xEE74 0x9843 -0xEE75 0x9844 -0xEE76 0x9845 -0xEE77 0x9846 -0xEE78 0x9847 -0xEE79 0x9848 -0xEE7A 0x9849 -0xEE7B 0x984A -0xEE7C 0x984B -0xEE7D 0x984C -0xEE7E 0x984D -0xEE80 0x984E -0xEE81 0x984F -0xEE82 0x9850 -0xEE83 0x9851 -0xEE84 0x9852 -0xEE85 0x9853 -0xEE86 0x9854 -0xEE87 0x9855 -0xEE88 0x9856 -0xEE89 0x9857 -0xEE8A 0x9858 -0xEE8B 0x9859 -0xEE8C 0x985A -0xEE8D 0x985B -0xEE8E 0x985C -0xEE8F 0x985D -0xEE90 0x985E -0xEE91 0x985F -0xEE92 0x9860 -0xEE93 0x9861 -0xEE94 0x9862 -0xEE95 0x9863 -0xEE96 0x9864 -0xEE97 0x9865 -0xEE98 0x9866 -0xEE99 0x9867 -0xEE9A 0x9868 -0xEE9B 0x9869 -0xEE9C 0x986A -0xEE9D 0x986B -0xEE9E 0x986C -0xEE9F 0x986D -0xEEA0 0x986E -0xEEA1 0x7762 -0xEEA2 0x7765 -0xEEA3 0x777F -0xEEA4 0x778D -0xEEA5 0x777D -0xEEA6 0x7780 -0xEEA7 0x778C -0xEEA8 0x7791 -0xEEA9 0x779F -0xEEAA 0x77A0 -0xEEAB 0x77B0 -0xEEAC 0x77B5 -0xEEAD 0x77BD -0xEEAE 0x753A -0xEEAF 0x7540 -0xEEB0 0x754E -0xEEB1 0x754B -0xEEB2 0x7548 -0xEEB3 0x755B -0xEEB4 0x7572 -0xEEB5 0x7579 -0xEEB6 0x7583 -0xEEB7 0x7F58 -0xEEB8 0x7F61 -0xEEB9 0x7F5F -0xEEBA 0x8A48 -0xEEBB 0x7F68 -0xEEBC 0x7F74 -0xEEBD 0x7F71 -0xEEBE 0x7F79 -0xEEBF 0x7F81 -0xEEC0 0x7F7E -0xEEC1 0x76CD -0xEEC2 0x76E5 -0xEEC3 0x8832 -0xEEC4 0x9485 -0xEEC5 0x9486 -0xEEC6 0x9487 -0xEEC7 0x948B -0xEEC8 0x948A -0xEEC9 0x948C -0xEECA 0x948D -0xEECB 0x948F -0xEECC 0x9490 -0xEECD 0x9494 -0xEECE 0x9497 -0xEECF 0x9495 -0xEED0 0x949A -0xEED1 0x949B -0xEED2 0x949C -0xEED3 0x94A3 -0xEED4 0x94A4 -0xEED5 0x94AB -0xEED6 0x94AA -0xEED7 0x94AD -0xEED8 0x94AC -0xEED9 0x94AF -0xEEDA 0x94B0 -0xEEDB 0x94B2 -0xEEDC 0x94B4 -0xEEDD 0x94B6 -0xEEDE 0x94B7 -0xEEDF 0x94B8 -0xEEE0 0x94B9 -0xEEE1 0x94BA -0xEEE2 0x94BC -0xEEE3 0x94BD -0xEEE4 0x94BF -0xEEE5 0x94C4 -0xEEE6 0x94C8 -0xEEE7 0x94C9 -0xEEE8 0x94CA -0xEEE9 0x94CB -0xEEEA 0x94CC -0xEEEB 0x94CD -0xEEEC 0x94CE -0xEEED 0x94D0 -0xEEEE 0x94D1 -0xEEEF 0x94D2 -0xEEF0 0x94D5 -0xEEF1 0x94D6 -0xEEF2 0x94D7 -0xEEF3 0x94D9 -0xEEF4 0x94D8 -0xEEF5 0x94DB -0xEEF6 0x94DE -0xEEF7 0x94DF -0xEEF8 0x94E0 -0xEEF9 0x94E2 -0xEEFA 0x94E4 -0xEEFB 0x94E5 -0xEEFC 0x94E7 -0xEEFD 0x94E8 -0xEEFE 0x94EA -0xEF40 0x986F -0xEF41 0x9870 -0xEF42 0x9871 -0xEF43 0x9872 -0xEF44 0x9873 -0xEF45 0x9874 -0xEF46 0x988B -0xEF47 0x988E -0xEF48 0x9892 -0xEF49 0x9895 -0xEF4A 0x9899 -0xEF4B 0x98A3 -0xEF4C 0x98A8 -0xEF4D 0x98A9 -0xEF4E 0x98AA -0xEF4F 0x98AB -0xEF50 0x98AC -0xEF51 0x98AD -0xEF52 0x98AE -0xEF53 0x98AF -0xEF54 0x98B0 -0xEF55 0x98B1 -0xEF56 0x98B2 -0xEF57 0x98B3 -0xEF58 0x98B4 -0xEF59 0x98B5 -0xEF5A 0x98B6 -0xEF5B 0x98B7 -0xEF5C 0x98B8 -0xEF5D 0x98B9 -0xEF5E 0x98BA -0xEF5F 0x98BB -0xEF60 0x98BC -0xEF61 0x98BD -0xEF62 0x98BE -0xEF63 0x98BF -0xEF64 0x98C0 -0xEF65 0x98C1 -0xEF66 0x98C2 -0xEF67 0x98C3 -0xEF68 0x98C4 -0xEF69 0x98C5 -0xEF6A 0x98C6 -0xEF6B 0x98C7 -0xEF6C 0x98C8 -0xEF6D 0x98C9 -0xEF6E 0x98CA -0xEF6F 0x98CB -0xEF70 0x98CC -0xEF71 0x98CD -0xEF72 0x98CF -0xEF73 0x98D0 -0xEF74 0x98D4 -0xEF75 0x98D6 -0xEF76 0x98D7 -0xEF77 0x98DB -0xEF78 0x98DC -0xEF79 0x98DD -0xEF7A 0x98E0 -0xEF7B 0x98E1 -0xEF7C 0x98E2 -0xEF7D 0x98E3 -0xEF7E 0x98E4 -0xEF80 0x98E5 -0xEF81 0x98E6 -0xEF82 0x98E9 -0xEF83 0x98EA -0xEF84 0x98EB -0xEF85 0x98EC -0xEF86 0x98ED -0xEF87 0x98EE -0xEF88 0x98EF -0xEF89 0x98F0 -0xEF8A 0x98F1 -0xEF8B 0x98F2 -0xEF8C 0x98F3 -0xEF8D 0x98F4 -0xEF8E 0x98F5 -0xEF8F 0x98F6 -0xEF90 0x98F7 -0xEF91 0x98F8 -0xEF92 0x98F9 -0xEF93 0x98FA -0xEF94 0x98FB -0xEF95 0x98FC -0xEF96 0x98FD -0xEF97 0x98FE -0xEF98 0x98FF -0xEF99 0x9900 -0xEF9A 0x9901 -0xEF9B 0x9902 -0xEF9C 0x9903 -0xEF9D 0x9904 -0xEF9E 0x9905 -0xEF9F 0x9906 -0xEFA0 0x9907 -0xEFA1 0x94E9 -0xEFA2 0x94EB -0xEFA3 0x94EE -0xEFA4 0x94EF -0xEFA5 0x94F3 -0xEFA6 0x94F4 -0xEFA7 0x94F5 -0xEFA8 0x94F7 -0xEFA9 0x94F9 -0xEFAA 0x94FC -0xEFAB 0x94FD -0xEFAC 0x94FF -0xEFAD 0x9503 -0xEFAE 0x9502 -0xEFAF 0x9506 -0xEFB0 0x9507 -0xEFB1 0x9509 -0xEFB2 0x950A -0xEFB3 0x950D -0xEFB4 0x950E -0xEFB5 0x950F -0xEFB6 0x9512 -0xEFB7 0x9513 -0xEFB8 0x9514 -0xEFB9 0x9515 -0xEFBA 0x9516 -0xEFBB 0x9518 -0xEFBC 0x951B -0xEFBD 0x951D -0xEFBE 0x951E -0xEFBF 0x951F -0xEFC0 0x9522 -0xEFC1 0x952A -0xEFC2 0x952B -0xEFC3 0x9529 -0xEFC4 0x952C -0xEFC5 0x9531 -0xEFC6 0x9532 -0xEFC7 0x9534 -0xEFC8 0x9536 -0xEFC9 0x9537 -0xEFCA 0x9538 -0xEFCB 0x953C -0xEFCC 0x953E -0xEFCD 0x953F -0xEFCE 0x9542 -0xEFCF 0x9535 -0xEFD0 0x9544 -0xEFD1 0x9545 -0xEFD2 0x9546 -0xEFD3 0x9549 -0xEFD4 0x954C -0xEFD5 0x954E -0xEFD6 0x954F -0xEFD7 0x9552 -0xEFD8 0x9553 -0xEFD9 0x9554 -0xEFDA 0x9556 -0xEFDB 0x9557 -0xEFDC 0x9558 -0xEFDD 0x9559 -0xEFDE 0x955B -0xEFDF 0x955E -0xEFE0 0x955F -0xEFE1 0x955D -0xEFE2 0x9561 -0xEFE3 0x9562 -0xEFE4 0x9564 -0xEFE5 0x9565 -0xEFE6 0x9566 -0xEFE7 0x9567 -0xEFE8 0x9568 -0xEFE9 0x9569 -0xEFEA 0x956A -0xEFEB 0x956B -0xEFEC 0x956C -0xEFED 0x956F -0xEFEE 0x9571 -0xEFEF 0x9572 -0xEFF0 0x9573 -0xEFF1 0x953A -0xEFF2 0x77E7 -0xEFF3 0x77EC -0xEFF4 0x96C9 -0xEFF5 0x79D5 -0xEFF6 0x79ED -0xEFF7 0x79E3 -0xEFF8 0x79EB -0xEFF9 0x7A06 -0xEFFA 0x5D47 -0xEFFB 0x7A03 -0xEFFC 0x7A02 -0xEFFD 0x7A1E -0xEFFE 0x7A14 -0xF040 0x9908 -0xF041 0x9909 -0xF042 0x990A -0xF043 0x990B -0xF044 0x990C -0xF045 0x990E -0xF046 0x990F -0xF047 0x9911 -0xF048 0x9912 -0xF049 0x9913 -0xF04A 0x9914 -0xF04B 0x9915 -0xF04C 0x9916 -0xF04D 0x9917 -0xF04E 0x9918 -0xF04F 0x9919 -0xF050 0x991A -0xF051 0x991B -0xF052 0x991C -0xF053 0x991D -0xF054 0x991E -0xF055 0x991F -0xF056 0x9920 -0xF057 0x9921 -0xF058 0x9922 -0xF059 0x9923 -0xF05A 0x9924 -0xF05B 0x9925 -0xF05C 0x9926 -0xF05D 0x9927 -0xF05E 0x9928 -0xF05F 0x9929 -0xF060 0x992A -0xF061 0x992B -0xF062 0x992C -0xF063 0x992D -0xF064 0x992F -0xF065 0x9930 -0xF066 0x9931 -0xF067 0x9932 -0xF068 0x9933 -0xF069 0x9934 -0xF06A 0x9935 -0xF06B 0x9936 -0xF06C 0x9937 -0xF06D 0x9938 -0xF06E 0x9939 -0xF06F 0x993A -0xF070 0x993B -0xF071 0x993C -0xF072 0x993D -0xF073 0x993E -0xF074 0x993F -0xF075 0x9940 -0xF076 0x9941 -0xF077 0x9942 -0xF078 0x9943 -0xF079 0x9944 -0xF07A 0x9945 -0xF07B 0x9946 -0xF07C 0x9947 -0xF07D 0x9948 -0xF07E 0x9949 -0xF080 0x994A -0xF081 0x994B -0xF082 0x994C -0xF083 0x994D -0xF084 0x994E -0xF085 0x994F -0xF086 0x9950 -0xF087 0x9951 -0xF088 0x9952 -0xF089 0x9953 -0xF08A 0x9956 -0xF08B 0x9957 -0xF08C 0x9958 -0xF08D 0x9959 -0xF08E 0x995A -0xF08F 0x995B -0xF090 0x995C -0xF091 0x995D -0xF092 0x995E -0xF093 0x995F -0xF094 0x9960 -0xF095 0x9961 -0xF096 0x9962 -0xF097 0x9964 -0xF098 0x9966 -0xF099 0x9973 -0xF09A 0x9978 -0xF09B 0x9979 -0xF09C 0x997B -0xF09D 0x997E -0xF09E 0x9982 -0xF09F 0x9983 -0xF0A0 0x9989 -0xF0A1 0x7A39 -0xF0A2 0x7A37 -0xF0A3 0x7A51 -0xF0A4 0x9ECF -0xF0A5 0x99A5 -0xF0A6 0x7A70 -0xF0A7 0x7688 -0xF0A8 0x768E -0xF0A9 0x7693 -0xF0AA 0x7699 -0xF0AB 0x76A4 -0xF0AC 0x74DE -0xF0AD 0x74E0 -0xF0AE 0x752C -0xF0AF 0x9E20 -0xF0B0 0x9E22 -0xF0B1 0x9E28 -0xF0B2 0x9E29 -0xF0B3 0x9E2A -0xF0B4 0x9E2B -0xF0B5 0x9E2C -0xF0B6 0x9E32 -0xF0B7 0x9E31 -0xF0B8 0x9E36 -0xF0B9 0x9E38 -0xF0BA 0x9E37 -0xF0BB 0x9E39 -0xF0BC 0x9E3A -0xF0BD 0x9E3E -0xF0BE 0x9E41 -0xF0BF 0x9E42 -0xF0C0 0x9E44 -0xF0C1 0x9E46 -0xF0C2 0x9E47 -0xF0C3 0x9E48 -0xF0C4 0x9E49 -0xF0C5 0x9E4B -0xF0C6 0x9E4C -0xF0C7 0x9E4E -0xF0C8 0x9E51 -0xF0C9 0x9E55 -0xF0CA 0x9E57 -0xF0CB 0x9E5A -0xF0CC 0x9E5B -0xF0CD 0x9E5C -0xF0CE 0x9E5E -0xF0CF 0x9E63 -0xF0D0 0x9E66 -0xF0D1 0x9E67 -0xF0D2 0x9E68 -0xF0D3 0x9E69 -0xF0D4 0x9E6A -0xF0D5 0x9E6B -0xF0D6 0x9E6C -0xF0D7 0x9E71 -0xF0D8 0x9E6D -0xF0D9 0x9E73 -0xF0DA 0x7592 -0xF0DB 0x7594 -0xF0DC 0x7596 -0xF0DD 0x75A0 -0xF0DE 0x759D -0xF0DF 0x75AC -0xF0E0 0x75A3 -0xF0E1 0x75B3 -0xF0E2 0x75B4 -0xF0E3 0x75B8 -0xF0E4 0x75C4 -0xF0E5 0x75B1 -0xF0E6 0x75B0 -0xF0E7 0x75C3 -0xF0E8 0x75C2 -0xF0E9 0x75D6 -0xF0EA 0x75CD -0xF0EB 0x75E3 -0xF0EC 0x75E8 -0xF0ED 0x75E6 -0xF0EE 0x75E4 -0xF0EF 0x75EB -0xF0F0 0x75E7 -0xF0F1 0x7603 -0xF0F2 0x75F1 -0xF0F3 0x75FC -0xF0F4 0x75FF -0xF0F5 0x7610 -0xF0F6 0x7600 -0xF0F7 0x7605 -0xF0F8 0x760C -0xF0F9 0x7617 -0xF0FA 0x760A -0xF0FB 0x7625 -0xF0FC 0x7618 -0xF0FD 0x7615 -0xF0FE 0x7619 -0xF140 0x998C -0xF141 0x998E -0xF142 0x999A -0xF143 0x999B -0xF144 0x999C -0xF145 0x999D -0xF146 0x999E -0xF147 0x999F -0xF148 0x99A0 -0xF149 0x99A1 -0xF14A 0x99A2 -0xF14B 0x99A3 -0xF14C 0x99A4 -0xF14D 0x99A6 -0xF14E 0x99A7 -0xF14F 0x99A9 -0xF150 0x99AA -0xF151 0x99AB -0xF152 0x99AC -0xF153 0x99AD -0xF154 0x99AE -0xF155 0x99AF -0xF156 0x99B0 -0xF157 0x99B1 -0xF158 0x99B2 -0xF159 0x99B3 -0xF15A 0x99B4 -0xF15B 0x99B5 -0xF15C 0x99B6 -0xF15D 0x99B7 -0xF15E 0x99B8 -0xF15F 0x99B9 -0xF160 0x99BA -0xF161 0x99BB -0xF162 0x99BC -0xF163 0x99BD -0xF164 0x99BE -0xF165 0x99BF -0xF166 0x99C0 -0xF167 0x99C1 -0xF168 0x99C2 -0xF169 0x99C3 -0xF16A 0x99C4 -0xF16B 0x99C5 -0xF16C 0x99C6 -0xF16D 0x99C7 -0xF16E 0x99C8 -0xF16F 0x99C9 -0xF170 0x99CA -0xF171 0x99CB -0xF172 0x99CC -0xF173 0x99CD -0xF174 0x99CE -0xF175 0x99CF -0xF176 0x99D0 -0xF177 0x99D1 -0xF178 0x99D2 -0xF179 0x99D3 -0xF17A 0x99D4 -0xF17B 0x99D5 -0xF17C 0x99D6 -0xF17D 0x99D7 -0xF17E 0x99D8 -0xF180 0x99D9 -0xF181 0x99DA -0xF182 0x99DB -0xF183 0x99DC -0xF184 0x99DD -0xF185 0x99DE -0xF186 0x99DF -0xF187 0x99E0 -0xF188 0x99E1 -0xF189 0x99E2 -0xF18A 0x99E3 -0xF18B 0x99E4 -0xF18C 0x99E5 -0xF18D 0x99E6 -0xF18E 0x99E7 -0xF18F 0x99E8 -0xF190 0x99E9 -0xF191 0x99EA -0xF192 0x99EB -0xF193 0x99EC -0xF194 0x99ED -0xF195 0x99EE -0xF196 0x99EF -0xF197 0x99F0 -0xF198 0x99F1 -0xF199 0x99F2 -0xF19A 0x99F3 -0xF19B 0x99F4 -0xF19C 0x99F5 -0xF19D 0x99F6 -0xF19E 0x99F7 -0xF19F 0x99F8 -0xF1A0 0x99F9 -0xF1A1 0x761B -0xF1A2 0x763C -0xF1A3 0x7622 -0xF1A4 0x7620 -0xF1A5 0x7640 -0xF1A6 0x762D -0xF1A7 0x7630 -0xF1A8 0x763F -0xF1A9 0x7635 -0xF1AA 0x7643 -0xF1AB 0x763E -0xF1AC 0x7633 -0xF1AD 0x764D -0xF1AE 0x765E -0xF1AF 0x7654 -0xF1B0 0x765C -0xF1B1 0x7656 -0xF1B2 0x766B -0xF1B3 0x766F -0xF1B4 0x7FCA -0xF1B5 0x7AE6 -0xF1B6 0x7A78 -0xF1B7 0x7A79 -0xF1B8 0x7A80 -0xF1B9 0x7A86 -0xF1BA 0x7A88 -0xF1BB 0x7A95 -0xF1BC 0x7AA6 -0xF1BD 0x7AA0 -0xF1BE 0x7AAC -0xF1BF 0x7AA8 -0xF1C0 0x7AAD -0xF1C1 0x7AB3 -0xF1C2 0x8864 -0xF1C3 0x8869 -0xF1C4 0x8872 -0xF1C5 0x887D -0xF1C6 0x887F -0xF1C7 0x8882 -0xF1C8 0x88A2 -0xF1C9 0x88C6 -0xF1CA 0x88B7 -0xF1CB 0x88BC -0xF1CC 0x88C9 -0xF1CD 0x88E2 -0xF1CE 0x88CE -0xF1CF 0x88E3 -0xF1D0 0x88E5 -0xF1D1 0x88F1 -0xF1D2 0x891A -0xF1D3 0x88FC -0xF1D4 0x88E8 -0xF1D5 0x88FE -0xF1D6 0x88F0 -0xF1D7 0x8921 -0xF1D8 0x8919 -0xF1D9 0x8913 -0xF1DA 0x891B -0xF1DB 0x890A -0xF1DC 0x8934 -0xF1DD 0x892B -0xF1DE 0x8936 -0xF1DF 0x8941 -0xF1E0 0x8966 -0xF1E1 0x897B -0xF1E2 0x758B -0xF1E3 0x80E5 -0xF1E4 0x76B2 -0xF1E5 0x76B4 -0xF1E6 0x77DC -0xF1E7 0x8012 -0xF1E8 0x8014 -0xF1E9 0x8016 -0xF1EA 0x801C -0xF1EB 0x8020 -0xF1EC 0x8022 -0xF1ED 0x8025 -0xF1EE 0x8026 -0xF1EF 0x8027 -0xF1F0 0x8029 -0xF1F1 0x8028 -0xF1F2 0x8031 -0xF1F3 0x800B -0xF1F4 0x8035 -0xF1F5 0x8043 -0xF1F6 0x8046 -0xF1F7 0x804D -0xF1F8 0x8052 -0xF1F9 0x8069 -0xF1FA 0x8071 -0xF1FB 0x8983 -0xF1FC 0x9878 -0xF1FD 0x9880 -0xF1FE 0x9883 -0xF240 0x99FA -0xF241 0x99FB -0xF242 0x99FC -0xF243 0x99FD -0xF244 0x99FE -0xF245 0x99FF -0xF246 0x9A00 -0xF247 0x9A01 -0xF248 0x9A02 -0xF249 0x9A03 -0xF24A 0x9A04 -0xF24B 0x9A05 -0xF24C 0x9A06 -0xF24D 0x9A07 -0xF24E 0x9A08 -0xF24F 0x9A09 -0xF250 0x9A0A -0xF251 0x9A0B -0xF252 0x9A0C -0xF253 0x9A0D -0xF254 0x9A0E -0xF255 0x9A0F -0xF256 0x9A10 -0xF257 0x9A11 -0xF258 0x9A12 -0xF259 0x9A13 -0xF25A 0x9A14 -0xF25B 0x9A15 -0xF25C 0x9A16 -0xF25D 0x9A17 -0xF25E 0x9A18 -0xF25F 0x9A19 -0xF260 0x9A1A -0xF261 0x9A1B -0xF262 0x9A1C -0xF263 0x9A1D -0xF264 0x9A1E -0xF265 0x9A1F -0xF266 0x9A20 -0xF267 0x9A21 -0xF268 0x9A22 -0xF269 0x9A23 -0xF26A 0x9A24 -0xF26B 0x9A25 -0xF26C 0x9A26 -0xF26D 0x9A27 -0xF26E 0x9A28 -0xF26F 0x9A29 -0xF270 0x9A2A -0xF271 0x9A2B -0xF272 0x9A2C -0xF273 0x9A2D -0xF274 0x9A2E -0xF275 0x9A2F -0xF276 0x9A30 -0xF277 0x9A31 -0xF278 0x9A32 -0xF279 0x9A33 -0xF27A 0x9A34 -0xF27B 0x9A35 -0xF27C 0x9A36 -0xF27D 0x9A37 -0xF27E 0x9A38 -0xF280 0x9A39 -0xF281 0x9A3A -0xF282 0x9A3B -0xF283 0x9A3C -0xF284 0x9A3D -0xF285 0x9A3E -0xF286 0x9A3F -0xF287 0x9A40 -0xF288 0x9A41 -0xF289 0x9A42 -0xF28A 0x9A43 -0xF28B 0x9A44 -0xF28C 0x9A45 -0xF28D 0x9A46 -0xF28E 0x9A47 -0xF28F 0x9A48 -0xF290 0x9A49 -0xF291 0x9A4A -0xF292 0x9A4B -0xF293 0x9A4C -0xF294 0x9A4D -0xF295 0x9A4E -0xF296 0x9A4F -0xF297 0x9A50 -0xF298 0x9A51 -0xF299 0x9A52 -0xF29A 0x9A53 -0xF29B 0x9A54 -0xF29C 0x9A55 -0xF29D 0x9A56 -0xF29E 0x9A57 -0xF29F 0x9A58 -0xF2A0 0x9A59 -0xF2A1 0x9889 -0xF2A2 0x988C -0xF2A3 0x988D -0xF2A4 0x988F -0xF2A5 0x9894 -0xF2A6 0x989A -0xF2A7 0x989B -0xF2A8 0x989E -0xF2A9 0x989F -0xF2AA 0x98A1 -0xF2AB 0x98A2 -0xF2AC 0x98A5 -0xF2AD 0x98A6 -0xF2AE 0x864D -0xF2AF 0x8654 -0xF2B0 0x866C -0xF2B1 0x866E -0xF2B2 0x867F -0xF2B3 0x867A -0xF2B4 0x867C -0xF2B5 0x867B -0xF2B6 0x86A8 -0xF2B7 0x868D -0xF2B8 0x868B -0xF2B9 0x86AC -0xF2BA 0x869D -0xF2BB 0x86A7 -0xF2BC 0x86A3 -0xF2BD 0x86AA -0xF2BE 0x8693 -0xF2BF 0x86A9 -0xF2C0 0x86B6 -0xF2C1 0x86C4 -0xF2C2 0x86B5 -0xF2C3 0x86CE -0xF2C4 0x86B0 -0xF2C5 0x86BA -0xF2C6 0x86B1 -0xF2C7 0x86AF -0xF2C8 0x86C9 -0xF2C9 0x86CF -0xF2CA 0x86B4 -0xF2CB 0x86E9 -0xF2CC 0x86F1 -0xF2CD 0x86F2 -0xF2CE 0x86ED -0xF2CF 0x86F3 -0xF2D0 0x86D0 -0xF2D1 0x8713 -0xF2D2 0x86DE -0xF2D3 0x86F4 -0xF2D4 0x86DF -0xF2D5 0x86D8 -0xF2D6 0x86D1 -0xF2D7 0x8703 -0xF2D8 0x8707 -0xF2D9 0x86F8 -0xF2DA 0x8708 -0xF2DB 0x870A -0xF2DC 0x870D -0xF2DD 0x8709 -0xF2DE 0x8723 -0xF2DF 0x873B -0xF2E0 0x871E -0xF2E1 0x8725 -0xF2E2 0x872E -0xF2E3 0x871A -0xF2E4 0x873E -0xF2E5 0x8748 -0xF2E6 0x8734 -0xF2E7 0x8731 -0xF2E8 0x8729 -0xF2E9 0x8737 -0xF2EA 0x873F -0xF2EB 0x8782 -0xF2EC 0x8722 -0xF2ED 0x877D -0xF2EE 0x877E -0xF2EF 0x877B -0xF2F0 0x8760 -0xF2F1 0x8770 -0xF2F2 0x874C -0xF2F3 0x876E -0xF2F4 0x878B -0xF2F5 0x8753 -0xF2F6 0x8763 -0xF2F7 0x877C -0xF2F8 0x8764 -0xF2F9 0x8759 -0xF2FA 0x8765 -0xF2FB 0x8793 -0xF2FC 0x87AF -0xF2FD 0x87A8 -0xF2FE 0x87D2 -0xF340 0x9A5A -0xF341 0x9A5B -0xF342 0x9A5C -0xF343 0x9A5D -0xF344 0x9A5E -0xF345 0x9A5F -0xF346 0x9A60 -0xF347 0x9A61 -0xF348 0x9A62 -0xF349 0x9A63 -0xF34A 0x9A64 -0xF34B 0x9A65 -0xF34C 0x9A66 -0xF34D 0x9A67 -0xF34E 0x9A68 -0xF34F 0x9A69 -0xF350 0x9A6A -0xF351 0x9A6B -0xF352 0x9A72 -0xF353 0x9A83 -0xF354 0x9A89 -0xF355 0x9A8D -0xF356 0x9A8E -0xF357 0x9A94 -0xF358 0x9A95 -0xF359 0x9A99 -0xF35A 0x9AA6 -0xF35B 0x9AA9 -0xF35C 0x9AAA -0xF35D 0x9AAB -0xF35E 0x9AAC -0xF35F 0x9AAD -0xF360 0x9AAE -0xF361 0x9AAF -0xF362 0x9AB2 -0xF363 0x9AB3 -0xF364 0x9AB4 -0xF365 0x9AB5 -0xF366 0x9AB9 -0xF367 0x9ABB -0xF368 0x9ABD -0xF369 0x9ABE -0xF36A 0x9ABF -0xF36B 0x9AC3 -0xF36C 0x9AC4 -0xF36D 0x9AC6 -0xF36E 0x9AC7 -0xF36F 0x9AC8 -0xF370 0x9AC9 -0xF371 0x9ACA -0xF372 0x9ACD -0xF373 0x9ACE -0xF374 0x9ACF -0xF375 0x9AD0 -0xF376 0x9AD2 -0xF377 0x9AD4 -0xF378 0x9AD5 -0xF379 0x9AD6 -0xF37A 0x9AD7 -0xF37B 0x9AD9 -0xF37C 0x9ADA -0xF37D 0x9ADB -0xF37E 0x9ADC -0xF380 0x9ADD -0xF381 0x9ADE -0xF382 0x9AE0 -0xF383 0x9AE2 -0xF384 0x9AE3 -0xF385 0x9AE4 -0xF386 0x9AE5 -0xF387 0x9AE7 -0xF388 0x9AE8 -0xF389 0x9AE9 -0xF38A 0x9AEA -0xF38B 0x9AEC -0xF38C 0x9AEE -0xF38D 0x9AF0 -0xF38E 0x9AF1 -0xF38F 0x9AF2 -0xF390 0x9AF3 -0xF391 0x9AF4 -0xF392 0x9AF5 -0xF393 0x9AF6 -0xF394 0x9AF7 -0xF395 0x9AF8 -0xF396 0x9AFA -0xF397 0x9AFC -0xF398 0x9AFD -0xF399 0x9AFE -0xF39A 0x9AFF -0xF39B 0x9B00 -0xF39C 0x9B01 -0xF39D 0x9B02 -0xF39E 0x9B04 -0xF39F 0x9B05 -0xF3A0 0x9B06 -0xF3A1 0x87C6 -0xF3A2 0x8788 -0xF3A3 0x8785 -0xF3A4 0x87AD -0xF3A5 0x8797 -0xF3A6 0x8783 -0xF3A7 0x87AB -0xF3A8 0x87E5 -0xF3A9 0x87AC -0xF3AA 0x87B5 -0xF3AB 0x87B3 -0xF3AC 0x87CB -0xF3AD 0x87D3 -0xF3AE 0x87BD -0xF3AF 0x87D1 -0xF3B0 0x87C0 -0xF3B1 0x87CA -0xF3B2 0x87DB -0xF3B3 0x87EA -0xF3B4 0x87E0 -0xF3B5 0x87EE -0xF3B6 0x8816 -0xF3B7 0x8813 -0xF3B8 0x87FE -0xF3B9 0x880A -0xF3BA 0x881B -0xF3BB 0x8821 -0xF3BC 0x8839 -0xF3BD 0x883C -0xF3BE 0x7F36 -0xF3BF 0x7F42 -0xF3C0 0x7F44 -0xF3C1 0x7F45 -0xF3C2 0x8210 -0xF3C3 0x7AFA -0xF3C4 0x7AFD -0xF3C5 0x7B08 -0xF3C6 0x7B03 -0xF3C7 0x7B04 -0xF3C8 0x7B15 -0xF3C9 0x7B0A -0xF3CA 0x7B2B -0xF3CB 0x7B0F -0xF3CC 0x7B47 -0xF3CD 0x7B38 -0xF3CE 0x7B2A -0xF3CF 0x7B19 -0xF3D0 0x7B2E -0xF3D1 0x7B31 -0xF3D2 0x7B20 -0xF3D3 0x7B25 -0xF3D4 0x7B24 -0xF3D5 0x7B33 -0xF3D6 0x7B3E -0xF3D7 0x7B1E -0xF3D8 0x7B58 -0xF3D9 0x7B5A -0xF3DA 0x7B45 -0xF3DB 0x7B75 -0xF3DC 0x7B4C -0xF3DD 0x7B5D -0xF3DE 0x7B60 -0xF3DF 0x7B6E -0xF3E0 0x7B7B -0xF3E1 0x7B62 -0xF3E2 0x7B72 -0xF3E3 0x7B71 -0xF3E4 0x7B90 -0xF3E5 0x7BA6 -0xF3E6 0x7BA7 -0xF3E7 0x7BB8 -0xF3E8 0x7BAC -0xF3E9 0x7B9D -0xF3EA 0x7BA8 -0xF3EB 0x7B85 -0xF3EC 0x7BAA -0xF3ED 0x7B9C -0xF3EE 0x7BA2 -0xF3EF 0x7BAB -0xF3F0 0x7BB4 -0xF3F1 0x7BD1 -0xF3F2 0x7BC1 -0xF3F3 0x7BCC -0xF3F4 0x7BDD -0xF3F5 0x7BDA -0xF3F6 0x7BE5 -0xF3F7 0x7BE6 -0xF3F8 0x7BEA -0xF3F9 0x7C0C -0xF3FA 0x7BFE -0xF3FB 0x7BFC -0xF3FC 0x7C0F -0xF3FD 0x7C16 -0xF3FE 0x7C0B -0xF440 0x9B07 -0xF441 0x9B09 -0xF442 0x9B0A -0xF443 0x9B0B -0xF444 0x9B0C -0xF445 0x9B0D -0xF446 0x9B0E -0xF447 0x9B10 -0xF448 0x9B11 -0xF449 0x9B12 -0xF44A 0x9B14 -0xF44B 0x9B15 -0xF44C 0x9B16 -0xF44D 0x9B17 -0xF44E 0x9B18 -0xF44F 0x9B19 -0xF450 0x9B1A -0xF451 0x9B1B -0xF452 0x9B1C -0xF453 0x9B1D -0xF454 0x9B1E -0xF455 0x9B20 -0xF456 0x9B21 -0xF457 0x9B22 -0xF458 0x9B24 -0xF459 0x9B25 -0xF45A 0x9B26 -0xF45B 0x9B27 -0xF45C 0x9B28 -0xF45D 0x9B29 -0xF45E 0x9B2A -0xF45F 0x9B2B -0xF460 0x9B2C -0xF461 0x9B2D -0xF462 0x9B2E -0xF463 0x9B30 -0xF464 0x9B31 -0xF465 0x9B33 -0xF466 0x9B34 -0xF467 0x9B35 -0xF468 0x9B36 -0xF469 0x9B37 -0xF46A 0x9B38 -0xF46B 0x9B39 -0xF46C 0x9B3A -0xF46D 0x9B3D -0xF46E 0x9B3E -0xF46F 0x9B3F -0xF470 0x9B40 -0xF471 0x9B46 -0xF472 0x9B4A -0xF473 0x9B4B -0xF474 0x9B4C -0xF475 0x9B4E -0xF476 0x9B50 -0xF477 0x9B52 -0xF478 0x9B53 -0xF479 0x9B55 -0xF47A 0x9B56 -0xF47B 0x9B57 -0xF47C 0x9B58 -0xF47D 0x9B59 -0xF47E 0x9B5A -0xF480 0x9B5B -0xF481 0x9B5C -0xF482 0x9B5D -0xF483 0x9B5E -0xF484 0x9B5F -0xF485 0x9B60 -0xF486 0x9B61 -0xF487 0x9B62 -0xF488 0x9B63 -0xF489 0x9B64 -0xF48A 0x9B65 -0xF48B 0x9B66 -0xF48C 0x9B67 -0xF48D 0x9B68 -0xF48E 0x9B69 -0xF48F 0x9B6A -0xF490 0x9B6B -0xF491 0x9B6C -0xF492 0x9B6D -0xF493 0x9B6E -0xF494 0x9B6F -0xF495 0x9B70 -0xF496 0x9B71 -0xF497 0x9B72 -0xF498 0x9B73 -0xF499 0x9B74 -0xF49A 0x9B75 -0xF49B 0x9B76 -0xF49C 0x9B77 -0xF49D 0x9B78 -0xF49E 0x9B79 -0xF49F 0x9B7A -0xF4A0 0x9B7B -0xF4A1 0x7C1F -0xF4A2 0x7C2A -0xF4A3 0x7C26 -0xF4A4 0x7C38 -0xF4A5 0x7C41 -0xF4A6 0x7C40 -0xF4A7 0x81FE -0xF4A8 0x8201 -0xF4A9 0x8202 -0xF4AA 0x8204 -0xF4AB 0x81EC -0xF4AC 0x8844 -0xF4AD 0x8221 -0xF4AE 0x8222 -0xF4AF 0x8223 -0xF4B0 0x822D -0xF4B1 0x822F -0xF4B2 0x8228 -0xF4B3 0x822B -0xF4B4 0x8238 -0xF4B5 0x823B -0xF4B6 0x8233 -0xF4B7 0x8234 -0xF4B8 0x823E -0xF4B9 0x8244 -0xF4BA 0x8249 -0xF4BB 0x824B -0xF4BC 0x824F -0xF4BD 0x825A -0xF4BE 0x825F -0xF4BF 0x8268 -0xF4C0 0x887E -0xF4C1 0x8885 -0xF4C2 0x8888 -0xF4C3 0x88D8 -0xF4C4 0x88DF -0xF4C5 0x895E -0xF4C6 0x7F9D -0xF4C7 0x7F9F -0xF4C8 0x7FA7 -0xF4C9 0x7FAF -0xF4CA 0x7FB0 -0xF4CB 0x7FB2 -0xF4CC 0x7C7C -0xF4CD 0x6549 -0xF4CE 0x7C91 -0xF4CF 0x7C9D -0xF4D0 0x7C9C -0xF4D1 0x7C9E -0xF4D2 0x7CA2 -0xF4D3 0x7CB2 -0xF4D4 0x7CBC -0xF4D5 0x7CBD -0xF4D6 0x7CC1 -0xF4D7 0x7CC7 -0xF4D8 0x7CCC -0xF4D9 0x7CCD -0xF4DA 0x7CC8 -0xF4DB 0x7CC5 -0xF4DC 0x7CD7 -0xF4DD 0x7CE8 -0xF4DE 0x826E -0xF4DF 0x66A8 -0xF4E0 0x7FBF -0xF4E1 0x7FCE -0xF4E2 0x7FD5 -0xF4E3 0x7FE5 -0xF4E4 0x7FE1 -0xF4E5 0x7FE6 -0xF4E6 0x7FE9 -0xF4E7 0x7FEE -0xF4E8 0x7FF3 -0xF4E9 0x7CF8 -0xF4EA 0x7D77 -0xF4EB 0x7DA6 -0xF4EC 0x7DAE -0xF4ED 0x7E47 -0xF4EE 0x7E9B -0xF4EF 0x9EB8 -0xF4F0 0x9EB4 -0xF4F1 0x8D73 -0xF4F2 0x8D84 -0xF4F3 0x8D94 -0xF4F4 0x8D91 -0xF4F5 0x8DB1 -0xF4F6 0x8D67 -0xF4F7 0x8D6D -0xF4F8 0x8C47 -0xF4F9 0x8C49 -0xF4FA 0x914A -0xF4FB 0x9150 -0xF4FC 0x914E -0xF4FD 0x914F -0xF4FE 0x9164 -0xF540 0x9B7C -0xF541 0x9B7D -0xF542 0x9B7E -0xF543 0x9B7F -0xF544 0x9B80 -0xF545 0x9B81 -0xF546 0x9B82 -0xF547 0x9B83 -0xF548 0x9B84 -0xF549 0x9B85 -0xF54A 0x9B86 -0xF54B 0x9B87 -0xF54C 0x9B88 -0xF54D 0x9B89 -0xF54E 0x9B8A -0xF54F 0x9B8B -0xF550 0x9B8C -0xF551 0x9B8D -0xF552 0x9B8E -0xF553 0x9B8F -0xF554 0x9B90 -0xF555 0x9B91 -0xF556 0x9B92 -0xF557 0x9B93 -0xF558 0x9B94 -0xF559 0x9B95 -0xF55A 0x9B96 -0xF55B 0x9B97 -0xF55C 0x9B98 -0xF55D 0x9B99 -0xF55E 0x9B9A -0xF55F 0x9B9B -0xF560 0x9B9C -0xF561 0x9B9D -0xF562 0x9B9E -0xF563 0x9B9F -0xF564 0x9BA0 -0xF565 0x9BA1 -0xF566 0x9BA2 -0xF567 0x9BA3 -0xF568 0x9BA4 -0xF569 0x9BA5 -0xF56A 0x9BA6 -0xF56B 0x9BA7 -0xF56C 0x9BA8 -0xF56D 0x9BA9 -0xF56E 0x9BAA -0xF56F 0x9BAB -0xF570 0x9BAC -0xF571 0x9BAD -0xF572 0x9BAE -0xF573 0x9BAF -0xF574 0x9BB0 -0xF575 0x9BB1 -0xF576 0x9BB2 -0xF577 0x9BB3 -0xF578 0x9BB4 -0xF579 0x9BB5 -0xF57A 0x9BB6 -0xF57B 0x9BB7 -0xF57C 0x9BB8 -0xF57D 0x9BB9 -0xF57E 0x9BBA -0xF580 0x9BBB -0xF581 0x9BBC -0xF582 0x9BBD -0xF583 0x9BBE -0xF584 0x9BBF -0xF585 0x9BC0 -0xF586 0x9BC1 -0xF587 0x9BC2 -0xF588 0x9BC3 -0xF589 0x9BC4 -0xF58A 0x9BC5 -0xF58B 0x9BC6 -0xF58C 0x9BC7 -0xF58D 0x9BC8 -0xF58E 0x9BC9 -0xF58F 0x9BCA -0xF590 0x9BCB -0xF591 0x9BCC -0xF592 0x9BCD -0xF593 0x9BCE -0xF594 0x9BCF -0xF595 0x9BD0 -0xF596 0x9BD1 -0xF597 0x9BD2 -0xF598 0x9BD3 -0xF599 0x9BD4 -0xF59A 0x9BD5 -0xF59B 0x9BD6 -0xF59C 0x9BD7 -0xF59D 0x9BD8 -0xF59E 0x9BD9 -0xF59F 0x9BDA -0xF5A0 0x9BDB -0xF5A1 0x9162 -0xF5A2 0x9161 -0xF5A3 0x9170 -0xF5A4 0x9169 -0xF5A5 0x916F -0xF5A6 0x917D -0xF5A7 0x917E -0xF5A8 0x9172 -0xF5A9 0x9174 -0xF5AA 0x9179 -0xF5AB 0x918C -0xF5AC 0x9185 -0xF5AD 0x9190 -0xF5AE 0x918D -0xF5AF 0x9191 -0xF5B0 0x91A2 -0xF5B1 0x91A3 -0xF5B2 0x91AA -0xF5B3 0x91AD -0xF5B4 0x91AE -0xF5B5 0x91AF -0xF5B6 0x91B5 -0xF5B7 0x91B4 -0xF5B8 0x91BA -0xF5B9 0x8C55 -0xF5BA 0x9E7E -0xF5BB 0x8DB8 -0xF5BC 0x8DEB -0xF5BD 0x8E05 -0xF5BE 0x8E59 -0xF5BF 0x8E69 -0xF5C0 0x8DB5 -0xF5C1 0x8DBF -0xF5C2 0x8DBC -0xF5C3 0x8DBA -0xF5C4 0x8DC4 -0xF5C5 0x8DD6 -0xF5C6 0x8DD7 -0xF5C7 0x8DDA -0xF5C8 0x8DDE -0xF5C9 0x8DCE -0xF5CA 0x8DCF -0xF5CB 0x8DDB -0xF5CC 0x8DC6 -0xF5CD 0x8DEC -0xF5CE 0x8DF7 -0xF5CF 0x8DF8 -0xF5D0 0x8DE3 -0xF5D1 0x8DF9 -0xF5D2 0x8DFB -0xF5D3 0x8DE4 -0xF5D4 0x8E09 -0xF5D5 0x8DFD -0xF5D6 0x8E14 -0xF5D7 0x8E1D -0xF5D8 0x8E1F -0xF5D9 0x8E2C -0xF5DA 0x8E2E -0xF5DB 0x8E23 -0xF5DC 0x8E2F -0xF5DD 0x8E3A -0xF5DE 0x8E40 -0xF5DF 0x8E39 -0xF5E0 0x8E35 -0xF5E1 0x8E3D -0xF5E2 0x8E31 -0xF5E3 0x8E49 -0xF5E4 0x8E41 -0xF5E5 0x8E42 -0xF5E6 0x8E51 -0xF5E7 0x8E52 -0xF5E8 0x8E4A -0xF5E9 0x8E70 -0xF5EA 0x8E76 -0xF5EB 0x8E7C -0xF5EC 0x8E6F -0xF5ED 0x8E74 -0xF5EE 0x8E85 -0xF5EF 0x8E8F -0xF5F0 0x8E94 -0xF5F1 0x8E90 -0xF5F2 0x8E9C -0xF5F3 0x8E9E -0xF5F4 0x8C78 -0xF5F5 0x8C82 -0xF5F6 0x8C8A -0xF5F7 0x8C85 -0xF5F8 0x8C98 -0xF5F9 0x8C94 -0xF5FA 0x659B -0xF5FB 0x89D6 -0xF5FC 0x89DE -0xF5FD 0x89DA -0xF5FE 0x89DC -0xF640 0x9BDC -0xF641 0x9BDD -0xF642 0x9BDE -0xF643 0x9BDF -0xF644 0x9BE0 -0xF645 0x9BE1 -0xF646 0x9BE2 -0xF647 0x9BE3 -0xF648 0x9BE4 -0xF649 0x9BE5 -0xF64A 0x9BE6 -0xF64B 0x9BE7 -0xF64C 0x9BE8 -0xF64D 0x9BE9 -0xF64E 0x9BEA -0xF64F 0x9BEB -0xF650 0x9BEC -0xF651 0x9BED -0xF652 0x9BEE -0xF653 0x9BEF -0xF654 0x9BF0 -0xF655 0x9BF1 -0xF656 0x9BF2 -0xF657 0x9BF3 -0xF658 0x9BF4 -0xF659 0x9BF5 -0xF65A 0x9BF6 -0xF65B 0x9BF7 -0xF65C 0x9BF8 -0xF65D 0x9BF9 -0xF65E 0x9BFA -0xF65F 0x9BFB -0xF660 0x9BFC -0xF661 0x9BFD -0xF662 0x9BFE -0xF663 0x9BFF -0xF664 0x9C00 -0xF665 0x9C01 -0xF666 0x9C02 -0xF667 0x9C03 -0xF668 0x9C04 -0xF669 0x9C05 -0xF66A 0x9C06 -0xF66B 0x9C07 -0xF66C 0x9C08 -0xF66D 0x9C09 -0xF66E 0x9C0A -0xF66F 0x9C0B -0xF670 0x9C0C -0xF671 0x9C0D -0xF672 0x9C0E -0xF673 0x9C0F -0xF674 0x9C10 -0xF675 0x9C11 -0xF676 0x9C12 -0xF677 0x9C13 -0xF678 0x9C14 -0xF679 0x9C15 -0xF67A 0x9C16 -0xF67B 0x9C17 -0xF67C 0x9C18 -0xF67D 0x9C19 -0xF67E 0x9C1A -0xF680 0x9C1B -0xF681 0x9C1C -0xF682 0x9C1D -0xF683 0x9C1E -0xF684 0x9C1F -0xF685 0x9C20 -0xF686 0x9C21 -0xF687 0x9C22 -0xF688 0x9C23 -0xF689 0x9C24 -0xF68A 0x9C25 -0xF68B 0x9C26 -0xF68C 0x9C27 -0xF68D 0x9C28 -0xF68E 0x9C29 -0xF68F 0x9C2A -0xF690 0x9C2B -0xF691 0x9C2C -0xF692 0x9C2D -0xF693 0x9C2E -0xF694 0x9C2F -0xF695 0x9C30 -0xF696 0x9C31 -0xF697 0x9C32 -0xF698 0x9C33 -0xF699 0x9C34 -0xF69A 0x9C35 -0xF69B 0x9C36 -0xF69C 0x9C37 -0xF69D 0x9C38 -0xF69E 0x9C39 -0xF69F 0x9C3A -0xF6A0 0x9C3B -0xF6A1 0x89E5 -0xF6A2 0x89EB -0xF6A3 0x89EF -0xF6A4 0x8A3E -0xF6A5 0x8B26 -0xF6A6 0x9753 -0xF6A7 0x96E9 -0xF6A8 0x96F3 -0xF6A9 0x96EF -0xF6AA 0x9706 -0xF6AB 0x9701 -0xF6AC 0x9708 -0xF6AD 0x970F -0xF6AE 0x970E -0xF6AF 0x972A -0xF6B0 0x972D -0xF6B1 0x9730 -0xF6B2 0x973E -0xF6B3 0x9F80 -0xF6B4 0x9F83 -0xF6B5 0x9F85 -0xF6B6 0x9F86 -0xF6B7 0x9F87 -0xF6B8 0x9F88 -0xF6B9 0x9F89 -0xF6BA 0x9F8A -0xF6BB 0x9F8C -0xF6BC 0x9EFE -0xF6BD 0x9F0B -0xF6BE 0x9F0D -0xF6BF 0x96B9 -0xF6C0 0x96BC -0xF6C1 0x96BD -0xF6C2 0x96CE -0xF6C3 0x96D2 -0xF6C4 0x77BF -0xF6C5 0x96E0 -0xF6C6 0x928E -0xF6C7 0x92AE -0xF6C8 0x92C8 -0xF6C9 0x933E -0xF6CA 0x936A -0xF6CB 0x93CA -0xF6CC 0x938F -0xF6CD 0x943E -0xF6CE 0x946B -0xF6CF 0x9C7F -0xF6D0 0x9C82 -0xF6D1 0x9C85 -0xF6D2 0x9C86 -0xF6D3 0x9C87 -0xF6D4 0x9C88 -0xF6D5 0x7A23 -0xF6D6 0x9C8B -0xF6D7 0x9C8E -0xF6D8 0x9C90 -0xF6D9 0x9C91 -0xF6DA 0x9C92 -0xF6DB 0x9C94 -0xF6DC 0x9C95 -0xF6DD 0x9C9A -0xF6DE 0x9C9B -0xF6DF 0x9C9E -0xF6E0 0x9C9F -0xF6E1 0x9CA0 -0xF6E2 0x9CA1 -0xF6E3 0x9CA2 -0xF6E4 0x9CA3 -0xF6E5 0x9CA5 -0xF6E6 0x9CA6 -0xF6E7 0x9CA7 -0xF6E8 0x9CA8 -0xF6E9 0x9CA9 -0xF6EA 0x9CAB -0xF6EB 0x9CAD -0xF6EC 0x9CAE -0xF6ED 0x9CB0 -0xF6EE 0x9CB1 -0xF6EF 0x9CB2 -0xF6F0 0x9CB3 -0xF6F1 0x9CB4 -0xF6F2 0x9CB5 -0xF6F3 0x9CB6 -0xF6F4 0x9CB7 -0xF6F5 0x9CBA -0xF6F6 0x9CBB -0xF6F7 0x9CBC -0xF6F8 0x9CBD -0xF6F9 0x9CC4 -0xF6FA 0x9CC5 -0xF6FB 0x9CC6 -0xF6FC 0x9CC7 -0xF6FD 0x9CCA -0xF6FE 0x9CCB -0xF740 0x9C3C -0xF741 0x9C3D -0xF742 0x9C3E -0xF743 0x9C3F -0xF744 0x9C40 -0xF745 0x9C41 -0xF746 0x9C42 -0xF747 0x9C43 -0xF748 0x9C44 -0xF749 0x9C45 -0xF74A 0x9C46 -0xF74B 0x9C47 -0xF74C 0x9C48 -0xF74D 0x9C49 -0xF74E 0x9C4A -0xF74F 0x9C4B -0xF750 0x9C4C -0xF751 0x9C4D -0xF752 0x9C4E -0xF753 0x9C4F -0xF754 0x9C50 -0xF755 0x9C51 -0xF756 0x9C52 -0xF757 0x9C53 -0xF758 0x9C54 -0xF759 0x9C55 -0xF75A 0x9C56 -0xF75B 0x9C57 -0xF75C 0x9C58 -0xF75D 0x9C59 -0xF75E 0x9C5A -0xF75F 0x9C5B -0xF760 0x9C5C -0xF761 0x9C5D -0xF762 0x9C5E -0xF763 0x9C5F -0xF764 0x9C60 -0xF765 0x9C61 -0xF766 0x9C62 -0xF767 0x9C63 -0xF768 0x9C64 -0xF769 0x9C65 -0xF76A 0x9C66 -0xF76B 0x9C67 -0xF76C 0x9C68 -0xF76D 0x9C69 -0xF76E 0x9C6A -0xF76F 0x9C6B -0xF770 0x9C6C -0xF771 0x9C6D -0xF772 0x9C6E -0xF773 0x9C6F -0xF774 0x9C70 -0xF775 0x9C71 -0xF776 0x9C72 -0xF777 0x9C73 -0xF778 0x9C74 -0xF779 0x9C75 -0xF77A 0x9C76 -0xF77B 0x9C77 -0xF77C 0x9C78 -0xF77D 0x9C79 -0xF77E 0x9C7A -0xF780 0x9C7B -0xF781 0x9C7D -0xF782 0x9C7E -0xF783 0x9C80 -0xF784 0x9C83 -0xF785 0x9C84 -0xF786 0x9C89 -0xF787 0x9C8A -0xF788 0x9C8C -0xF789 0x9C8F -0xF78A 0x9C93 -0xF78B 0x9C96 -0xF78C 0x9C97 -0xF78D 0x9C98 -0xF78E 0x9C99 -0xF78F 0x9C9D -0xF790 0x9CAA -0xF791 0x9CAC -0xF792 0x9CAF -0xF793 0x9CB9 -0xF794 0x9CBE -0xF795 0x9CBF -0xF796 0x9CC0 -0xF797 0x9CC1 -0xF798 0x9CC2 -0xF799 0x9CC8 -0xF79A 0x9CC9 -0xF79B 0x9CD1 -0xF79C 0x9CD2 -0xF79D 0x9CDA -0xF79E 0x9CDB -0xF79F 0x9CE0 -0xF7A0 0x9CE1 -0xF7A1 0x9CCC -0xF7A2 0x9CCD -0xF7A3 0x9CCE -0xF7A4 0x9CCF -0xF7A5 0x9CD0 -0xF7A6 0x9CD3 -0xF7A7 0x9CD4 -0xF7A8 0x9CD5 -0xF7A9 0x9CD7 -0xF7AA 0x9CD8 -0xF7AB 0x9CD9 -0xF7AC 0x9CDC -0xF7AD 0x9CDD -0xF7AE 0x9CDF -0xF7AF 0x9CE2 -0xF7B0 0x977C -0xF7B1 0x9785 -0xF7B2 0x9791 -0xF7B3 0x9792 -0xF7B4 0x9794 -0xF7B5 0x97AF -0xF7B6 0x97AB -0xF7B7 0x97A3 -0xF7B8 0x97B2 -0xF7B9 0x97B4 -0xF7BA 0x9AB1 -0xF7BB 0x9AB0 -0xF7BC 0x9AB7 -0xF7BD 0x9E58 -0xF7BE 0x9AB6 -0xF7BF 0x9ABA -0xF7C0 0x9ABC -0xF7C1 0x9AC1 -0xF7C2 0x9AC0 -0xF7C3 0x9AC5 -0xF7C4 0x9AC2 -0xF7C5 0x9ACB -0xF7C6 0x9ACC -0xF7C7 0x9AD1 -0xF7C8 0x9B45 -0xF7C9 0x9B43 -0xF7CA 0x9B47 -0xF7CB 0x9B49 -0xF7CC 0x9B48 -0xF7CD 0x9B4D -0xF7CE 0x9B51 -0xF7CF 0x98E8 -0xF7D0 0x990D -0xF7D1 0x992E -0xF7D2 0x9955 -0xF7D3 0x9954 -0xF7D4 0x9ADF -0xF7D5 0x9AE1 -0xF7D6 0x9AE6 -0xF7D7 0x9AEF -0xF7D8 0x9AEB -0xF7D9 0x9AFB -0xF7DA 0x9AED -0xF7DB 0x9AF9 -0xF7DC 0x9B08 -0xF7DD 0x9B0F -0xF7DE 0x9B13 -0xF7DF 0x9B1F -0xF7E0 0x9B23 -0xF7E1 0x9EBD -0xF7E2 0x9EBE -0xF7E3 0x7E3B -0xF7E4 0x9E82 -0xF7E5 0x9E87 -0xF7E6 0x9E88 -0xF7E7 0x9E8B -0xF7E8 0x9E92 -0xF7E9 0x93D6 -0xF7EA 0x9E9D -0xF7EB 0x9E9F -0xF7EC 0x9EDB -0xF7ED 0x9EDC -0xF7EE 0x9EDD -0xF7EF 0x9EE0 -0xF7F0 0x9EDF -0xF7F1 0x9EE2 -0xF7F2 0x9EE9 -0xF7F3 0x9EE7 -0xF7F4 0x9EE5 -0xF7F5 0x9EEA -0xF7F6 0x9EEF -0xF7F7 0x9F22 -0xF7F8 0x9F2C -0xF7F9 0x9F2F -0xF7FA 0x9F39 -0xF7FB 0x9F37 -0xF7FC 0x9F3D -0xF7FD 0x9F3E -0xF7FE 0x9F44 -0xF840 0x9CE3 -0xF841 0x9CE4 -0xF842 0x9CE5 -0xF843 0x9CE6 -0xF844 0x9CE7 -0xF845 0x9CE8 -0xF846 0x9CE9 -0xF847 0x9CEA -0xF848 0x9CEB -0xF849 0x9CEC -0xF84A 0x9CED -0xF84B 0x9CEE -0xF84C 0x9CEF -0xF84D 0x9CF0 -0xF84E 0x9CF1 -0xF84F 0x9CF2 -0xF850 0x9CF3 -0xF851 0x9CF4 -0xF852 0x9CF5 -0xF853 0x9CF6 -0xF854 0x9CF7 -0xF855 0x9CF8 -0xF856 0x9CF9 -0xF857 0x9CFA -0xF858 0x9CFB -0xF859 0x9CFC -0xF85A 0x9CFD -0xF85B 0x9CFE -0xF85C 0x9CFF -0xF85D 0x9D00 -0xF85E 0x9D01 -0xF85F 0x9D02 -0xF860 0x9D03 -0xF861 0x9D04 -0xF862 0x9D05 -0xF863 0x9D06 -0xF864 0x9D07 -0xF865 0x9D08 -0xF866 0x9D09 -0xF867 0x9D0A -0xF868 0x9D0B -0xF869 0x9D0C -0xF86A 0x9D0D -0xF86B 0x9D0E -0xF86C 0x9D0F -0xF86D 0x9D10 -0xF86E 0x9D11 -0xF86F 0x9D12 -0xF870 0x9D13 -0xF871 0x9D14 -0xF872 0x9D15 -0xF873 0x9D16 -0xF874 0x9D17 -0xF875 0x9D18 -0xF876 0x9D19 -0xF877 0x9D1A -0xF878 0x9D1B -0xF879 0x9D1C -0xF87A 0x9D1D -0xF87B 0x9D1E -0xF87C 0x9D1F -0xF87D 0x9D20 -0xF87E 0x9D21 -0xF880 0x9D22 -0xF881 0x9D23 -0xF882 0x9D24 -0xF883 0x9D25 -0xF884 0x9D26 -0xF885 0x9D27 -0xF886 0x9D28 -0xF887 0x9D29 -0xF888 0x9D2A -0xF889 0x9D2B -0xF88A 0x9D2C -0xF88B 0x9D2D -0xF88C 0x9D2E -0xF88D 0x9D2F -0xF88E 0x9D30 -0xF88F 0x9D31 -0xF890 0x9D32 -0xF891 0x9D33 -0xF892 0x9D34 -0xF893 0x9D35 -0xF894 0x9D36 -0xF895 0x9D37 -0xF896 0x9D38 -0xF897 0x9D39 -0xF898 0x9D3A -0xF899 0x9D3B -0xF89A 0x9D3C -0xF89B 0x9D3D -0xF89C 0x9D3E -0xF89D 0x9D3F -0xF89E 0x9D40 -0xF89F 0x9D41 -0xF8A0 0x9D42 -0xF940 0x9D43 -0xF941 0x9D44 -0xF942 0x9D45 -0xF943 0x9D46 -0xF944 0x9D47 -0xF945 0x9D48 -0xF946 0x9D49 -0xF947 0x9D4A -0xF948 0x9D4B -0xF949 0x9D4C -0xF94A 0x9D4D -0xF94B 0x9D4E -0xF94C 0x9D4F -0xF94D 0x9D50 -0xF94E 0x9D51 -0xF94F 0x9D52 -0xF950 0x9D53 -0xF951 0x9D54 -0xF952 0x9D55 -0xF953 0x9D56 -0xF954 0x9D57 -0xF955 0x9D58 -0xF956 0x9D59 -0xF957 0x9D5A -0xF958 0x9D5B -0xF959 0x9D5C -0xF95A 0x9D5D -0xF95B 0x9D5E -0xF95C 0x9D5F -0xF95D 0x9D60 -0xF95E 0x9D61 -0xF95F 0x9D62 -0xF960 0x9D63 -0xF961 0x9D64 -0xF962 0x9D65 -0xF963 0x9D66 -0xF964 0x9D67 -0xF965 0x9D68 -0xF966 0x9D69 -0xF967 0x9D6A -0xF968 0x9D6B -0xF969 0x9D6C -0xF96A 0x9D6D -0xF96B 0x9D6E -0xF96C 0x9D6F -0xF96D 0x9D70 -0xF96E 0x9D71 -0xF96F 0x9D72 -0xF970 0x9D73 -0xF971 0x9D74 -0xF972 0x9D75 -0xF973 0x9D76 -0xF974 0x9D77 -0xF975 0x9D78 -0xF976 0x9D79 -0xF977 0x9D7A -0xF978 0x9D7B -0xF979 0x9D7C -0xF97A 0x9D7D -0xF97B 0x9D7E -0xF97C 0x9D7F -0xF97D 0x9D80 -0xF97E 0x9D81 -0xF980 0x9D82 -0xF981 0x9D83 -0xF982 0x9D84 -0xF983 0x9D85 -0xF984 0x9D86 -0xF985 0x9D87 -0xF986 0x9D88 -0xF987 0x9D89 -0xF988 0x9D8A -0xF989 0x9D8B -0xF98A 0x9D8C -0xF98B 0x9D8D -0xF98C 0x9D8E -0xF98D 0x9D8F -0xF98E 0x9D90 -0xF98F 0x9D91 -0xF990 0x9D92 -0xF991 0x9D93 -0xF992 0x9D94 -0xF993 0x9D95 -0xF994 0x9D96 -0xF995 0x9D97 -0xF996 0x9D98 -0xF997 0x9D99 -0xF998 0x9D9A -0xF999 0x9D9B -0xF99A 0x9D9C -0xF99B 0x9D9D -0xF99C 0x9D9E -0xF99D 0x9D9F -0xF99E 0x9DA0 -0xF99F 0x9DA1 -0xF9A0 0x9DA2 -0xFA40 0x9DA3 -0xFA41 0x9DA4 -0xFA42 0x9DA5 -0xFA43 0x9DA6 -0xFA44 0x9DA7 -0xFA45 0x9DA8 -0xFA46 0x9DA9 -0xFA47 0x9DAA -0xFA48 0x9DAB -0xFA49 0x9DAC -0xFA4A 0x9DAD -0xFA4B 0x9DAE -0xFA4C 0x9DAF -0xFA4D 0x9DB0 -0xFA4E 0x9DB1 -0xFA4F 0x9DB2 -0xFA50 0x9DB3 -0xFA51 0x9DB4 -0xFA52 0x9DB5 -0xFA53 0x9DB6 -0xFA54 0x9DB7 -0xFA55 0x9DB8 -0xFA56 0x9DB9 -0xFA57 0x9DBA -0xFA58 0x9DBB -0xFA59 0x9DBC -0xFA5A 0x9DBD -0xFA5B 0x9DBE -0xFA5C 0x9DBF -0xFA5D 0x9DC0 -0xFA5E 0x9DC1 -0xFA5F 0x9DC2 -0xFA60 0x9DC3 -0xFA61 0x9DC4 -0xFA62 0x9DC5 -0xFA63 0x9DC6 -0xFA64 0x9DC7 -0xFA65 0x9DC8 -0xFA66 0x9DC9 -0xFA67 0x9DCA -0xFA68 0x9DCB -0xFA69 0x9DCC -0xFA6A 0x9DCD -0xFA6B 0x9DCE -0xFA6C 0x9DCF -0xFA6D 0x9DD0 -0xFA6E 0x9DD1 -0xFA6F 0x9DD2 -0xFA70 0x9DD3 -0xFA71 0x9DD4 -0xFA72 0x9DD5 -0xFA73 0x9DD6 -0xFA74 0x9DD7 -0xFA75 0x9DD8 -0xFA76 0x9DD9 -0xFA77 0x9DDA -0xFA78 0x9DDB -0xFA79 0x9DDC -0xFA7A 0x9DDD -0xFA7B 0x9DDE -0xFA7C 0x9DDF -0xFA7D 0x9DE0 -0xFA7E 0x9DE1 -0xFA80 0x9DE2 -0xFA81 0x9DE3 -0xFA82 0x9DE4 -0xFA83 0x9DE5 -0xFA84 0x9DE6 -0xFA85 0x9DE7 -0xFA86 0x9DE8 -0xFA87 0x9DE9 -0xFA88 0x9DEA -0xFA89 0x9DEB -0xFA8A 0x9DEC -0xFA8B 0x9DED -0xFA8C 0x9DEE -0xFA8D 0x9DEF -0xFA8E 0x9DF0 -0xFA8F 0x9DF1 -0xFA90 0x9DF2 -0xFA91 0x9DF3 -0xFA92 0x9DF4 -0xFA93 0x9DF5 -0xFA94 0x9DF6 -0xFA95 0x9DF7 -0xFA96 0x9DF8 -0xFA97 0x9DF9 -0xFA98 0x9DFA -0xFA99 0x9DFB -0xFA9A 0x9DFC -0xFA9B 0x9DFD -0xFA9C 0x9DFE -0xFA9D 0x9DFF -0xFA9E 0x9E00 -0xFA9F 0x9E01 -0xFAA0 0x9E02 -0xFB40 0x9E03 -0xFB41 0x9E04 -0xFB42 0x9E05 -0xFB43 0x9E06 -0xFB44 0x9E07 -0xFB45 0x9E08 -0xFB46 0x9E09 -0xFB47 0x9E0A -0xFB48 0x9E0B -0xFB49 0x9E0C -0xFB4A 0x9E0D -0xFB4B 0x9E0E -0xFB4C 0x9E0F -0xFB4D 0x9E10 -0xFB4E 0x9E11 -0xFB4F 0x9E12 -0xFB50 0x9E13 -0xFB51 0x9E14 -0xFB52 0x9E15 -0xFB53 0x9E16 -0xFB54 0x9E17 -0xFB55 0x9E18 -0xFB56 0x9E19 -0xFB57 0x9E1A -0xFB58 0x9E1B -0xFB59 0x9E1C -0xFB5A 0x9E1D -0xFB5B 0x9E1E -0xFB5C 0x9E24 -0xFB5D 0x9E27 -0xFB5E 0x9E2E -0xFB5F 0x9E30 -0xFB60 0x9E34 -0xFB61 0x9E3B -0xFB62 0x9E3C -0xFB63 0x9E40 -0xFB64 0x9E4D -0xFB65 0x9E50 -0xFB66 0x9E52 -0xFB67 0x9E53 -0xFB68 0x9E54 -0xFB69 0x9E56 -0xFB6A 0x9E59 -0xFB6B 0x9E5D -0xFB6C 0x9E5F -0xFB6D 0x9E60 -0xFB6E 0x9E61 -0xFB6F 0x9E62 -0xFB70 0x9E65 -0xFB71 0x9E6E -0xFB72 0x9E6F -0xFB73 0x9E72 -0xFB74 0x9E74 -0xFB75 0x9E75 -0xFB76 0x9E76 -0xFB77 0x9E77 -0xFB78 0x9E78 -0xFB79 0x9E79 -0xFB7A 0x9E7A -0xFB7B 0x9E7B -0xFB7C 0x9E7C -0xFB7D 0x9E7D -0xFB7E 0x9E80 -0xFB80 0x9E81 -0xFB81 0x9E83 -0xFB82 0x9E84 -0xFB83 0x9E85 -0xFB84 0x9E86 -0xFB85 0x9E89 -0xFB86 0x9E8A -0xFB87 0x9E8C -0xFB88 0x9E8D -0xFB89 0x9E8E -0xFB8A 0x9E8F -0xFB8B 0x9E90 -0xFB8C 0x9E91 -0xFB8D 0x9E94 -0xFB8E 0x9E95 -0xFB8F 0x9E96 -0xFB90 0x9E97 -0xFB91 0x9E98 -0xFB92 0x9E99 -0xFB93 0x9E9A -0xFB94 0x9E9B -0xFB95 0x9E9C -0xFB96 0x9E9E -0xFB97 0x9EA0 -0xFB98 0x9EA1 -0xFB99 0x9EA2 -0xFB9A 0x9EA3 -0xFB9B 0x9EA4 -0xFB9C 0x9EA5 -0xFB9D 0x9EA7 -0xFB9E 0x9EA8 -0xFB9F 0x9EA9 -0xFBA0 0x9EAA -0xFC40 0x9EAB -0xFC41 0x9EAC -0xFC42 0x9EAD -0xFC43 0x9EAE -0xFC44 0x9EAF -0xFC45 0x9EB0 -0xFC46 0x9EB1 -0xFC47 0x9EB2 -0xFC48 0x9EB3 -0xFC49 0x9EB5 -0xFC4A 0x9EB6 -0xFC4B 0x9EB7 -0xFC4C 0x9EB9 -0xFC4D 0x9EBA -0xFC4E 0x9EBC -0xFC4F 0x9EBF -0xFC50 0x9EC0 -0xFC51 0x9EC1 -0xFC52 0x9EC2 -0xFC53 0x9EC3 -0xFC54 0x9EC5 -0xFC55 0x9EC6 -0xFC56 0x9EC7 -0xFC57 0x9EC8 -0xFC58 0x9ECA -0xFC59 0x9ECB -0xFC5A 0x9ECC -0xFC5B 0x9ED0 -0xFC5C 0x9ED2 -0xFC5D 0x9ED3 -0xFC5E 0x9ED5 -0xFC5F 0x9ED6 -0xFC60 0x9ED7 -0xFC61 0x9ED9 -0xFC62 0x9EDA -0xFC63 0x9EDE -0xFC64 0x9EE1 -0xFC65 0x9EE3 -0xFC66 0x9EE4 -0xFC67 0x9EE6 -0xFC68 0x9EE8 -0xFC69 0x9EEB -0xFC6A 0x9EEC -0xFC6B 0x9EED -0xFC6C 0x9EEE -0xFC6D 0x9EF0 -0xFC6E 0x9EF1 -0xFC6F 0x9EF2 -0xFC70 0x9EF3 -0xFC71 0x9EF4 -0xFC72 0x9EF5 -0xFC73 0x9EF6 -0xFC74 0x9EF7 -0xFC75 0x9EF8 -0xFC76 0x9EFA -0xFC77 0x9EFD -0xFC78 0x9EFF -0xFC79 0x9F00 -0xFC7A 0x9F01 -0xFC7B 0x9F02 -0xFC7C 0x9F03 -0xFC7D 0x9F04 -0xFC7E 0x9F05 -0xFC80 0x9F06 -0xFC81 0x9F07 -0xFC82 0x9F08 -0xFC83 0x9F09 -0xFC84 0x9F0A -0xFC85 0x9F0C -0xFC86 0x9F0F -0xFC87 0x9F11 -0xFC88 0x9F12 -0xFC89 0x9F14 -0xFC8A 0x9F15 -0xFC8B 0x9F16 -0xFC8C 0x9F18 -0xFC8D 0x9F1A -0xFC8E 0x9F1B -0xFC8F 0x9F1C -0xFC90 0x9F1D -0xFC91 0x9F1E -0xFC92 0x9F1F -0xFC93 0x9F21 -0xFC94 0x9F23 -0xFC95 0x9F24 -0xFC96 0x9F25 -0xFC97 0x9F26 -0xFC98 0x9F27 -0xFC99 0x9F28 -0xFC9A 0x9F29 -0xFC9B 0x9F2A -0xFC9C 0x9F2B -0xFC9D 0x9F2D -0xFC9E 0x9F2E -0xFC9F 0x9F30 -0xFCA0 0x9F31 -0xFD40 0x9F32 -0xFD41 0x9F33 -0xFD42 0x9F34 -0xFD43 0x9F35 -0xFD44 0x9F36 -0xFD45 0x9F38 -0xFD46 0x9F3A -0xFD47 0x9F3C -0xFD48 0x9F3F -0xFD49 0x9F40 -0xFD4A 0x9F41 -0xFD4B 0x9F42 -0xFD4C 0x9F43 -0xFD4D 0x9F45 -0xFD4E 0x9F46 -0xFD4F 0x9F47 -0xFD50 0x9F48 -0xFD51 0x9F49 -0xFD52 0x9F4A -0xFD53 0x9F4B -0xFD54 0x9F4C -0xFD55 0x9F4D -0xFD56 0x9F4E -0xFD57 0x9F4F -0xFD58 0x9F52 -0xFD59 0x9F53 -0xFD5A 0x9F54 -0xFD5B 0x9F55 -0xFD5C 0x9F56 -0xFD5D 0x9F57 -0xFD5E 0x9F58 -0xFD5F 0x9F59 -0xFD60 0x9F5A -0xFD61 0x9F5B -0xFD62 0x9F5C -0xFD63 0x9F5D -0xFD64 0x9F5E -0xFD65 0x9F5F -0xFD66 0x9F60 -0xFD67 0x9F61 -0xFD68 0x9F62 -0xFD69 0x9F63 -0xFD6A 0x9F64 -0xFD6B 0x9F65 -0xFD6C 0x9F66 -0xFD6D 0x9F67 -0xFD6E 0x9F68 -0xFD6F 0x9F69 -0xFD70 0x9F6A -0xFD71 0x9F6B -0xFD72 0x9F6C -0xFD73 0x9F6D -0xFD74 0x9F6E -0xFD75 0x9F6F -0xFD76 0x9F70 -0xFD77 0x9F71 -0xFD78 0x9F72 -0xFD79 0x9F73 -0xFD7A 0x9F74 -0xFD7B 0x9F75 -0xFD7C 0x9F76 -0xFD7D 0x9F77 -0xFD7E 0x9F78 -0xFD80 0x9F79 -0xFD81 0x9F7A -0xFD82 0x9F7B -0xFD83 0x9F7C -0xFD84 0x9F7D -0xFD85 0x9F7E -0xFD86 0x9F81 -0xFD87 0x9F82 -0xFD88 0x9F8D -0xFD89 0x9F8E -0xFD8A 0x9F8F -0xFD8B 0x9F90 -0xFD8C 0x9F91 -0xFD8D 0x9F92 -0xFD8E 0x9F93 -0xFD8F 0x9F94 -0xFD90 0x9F95 -0xFD91 0x9F96 -0xFD92 0x9F97 -0xFD93 0x9F98 -0xFD94 0x9F9C -0xFD95 0x9F9D -0xFD96 0x9F9E -0xFD97 0x9FA1 -0xFD98 0x9FA2 -0xFD99 0x9FA3 -0xFD9A 0x9FA4 -0xFD9B 0x9FA5 -0xFD9C 0xF92C -0xFD9D 0xF979 -0xFD9E 0xF995 -0xFD9F 0xF9E7 -0xFDA0 0xF9F1 -0xFE40 0xFA0C -0xFE41 0xFA0D -0xFE42 0xFA0E -0xFE43 0xFA0F -0xFE44 0xFA11 -0xFE45 0xFA13 -0xFE46 0xFA14 -0xFE47 0xFA18 -0xFE48 0xFA1F -0xFE49 0xFA20 -0xFE4A 0xFA21 -0xFE4B 0xFA23 -0xFE4C 0xFA24 -0xFE4D 0xFA27 -0xFE4E 0xFA28 -0xFE4F 0xFA29 -0xFE50 0xE815 -0xFE51 0xE816 -0xFE52 0xE817 -0xFE53 0xE818 -0xFE54 0xE819 -0xFE55 0xE81A -0xFE56 0xE81B -0xFE57 0xE81C -0xFE58 0xE81D -0xFE59 0xE81E -0xFE5A 0xE81F -0xFE5B 0xE820 -0xFE5C 0xE821 -0xFE5D 0xE822 -0xFE5E 0xE823 -0xFE5F 0xE824 -0xFE60 0xE825 -0xFE61 0xE826 -0xFE62 0xE827 -0xFE63 0xE828 -0xFE64 0xE829 -0xFE65 0xE82A -0xFE66 0xE82B -0xFE67 0xE82C -0xFE68 0xE82D -0xFE69 0xE82E -0xFE6A 0xE82F -0xFE6B 0xE830 -0xFE6C 0xE831 -0xFE6D 0xE832 -0xFE6E 0xE833 -0xFE6F 0xE834 -0xFE70 0xE835 -0xFE71 0xE836 -0xFE72 0xE837 -0xFE73 0xE838 -0xFE74 0xE839 -0xFE75 0xE83A -0xFE76 0xE83B -0xFE77 0xE83C -0xFE78 0xE83D -0xFE79 0xE83E -0xFE7A 0xE83F -0xFE7B 0xE840 -0xFE7C 0xE841 -0xFE7D 0xE842 -0xFE7E 0xE843 -0xFE80 0xE844 -0xFE81 0xE845 -0xFE82 0xE846 -0xFE83 0xE847 -0xFE84 0xE848 -0xFE85 0xE849 -0xFE86 0xE84A -0xFE87 0xE84B -0xFE88 0xE84C -0xFE89 0xE84D -0xFE8A 0xE84E -0xFE8B 0xE84F -0xFE8C 0xE850 -0xFE8D 0xE851 -0xFE8E 0xE852 -0xFE8F 0xE853 -0xFE90 0xE854 -0xFE91 0xE855 -0xFE92 0xE856 -0xFE93 0xE857 -0xFE94 0xE858 -0xFE95 0xE859 -0xFE96 0xE85A -0xFE97 0xE85B -0xFE98 0xE85C -0xFE99 0xE85D -0xFE9A 0xE85E -0xFE9B 0xE85F -0xFE9C 0xE860 -0xFE9D 0xE861 -0xFE9E 0xE862 -0xFE9F 0xE863 -0xFEA0 0xE864 diff --git a/mozilla/lib/libi18n/unicode/fromftp/othertbls/koi8r.txt b/mozilla/lib/libi18n/unicode/fromftp/othertbls/koi8r.txt deleted file mode 100644 index 6c468df5641..00000000000 --- a/mozilla/lib/libi18n/unicode/fromftp/othertbls/koi8r.txt +++ /dev/null @@ -1,245 +0,0 @@ -# -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. -# -# HAND MADE BY FRANK TANG <ftang@netscape.com> -# BY REFERENCE RFC 1489 -# KOI8-R CHARSET -# -# -0x20 0x0020 # SPACE -0x21 0x0021 # EXCLAMATION MARK -0x22 0x0022 # QUOTATION MARK -0x23 0x0023 # NUMBER SIGN -0x24 0x0024 # DOLLAR SIGN -0x25 0x0025 # PERCENT SIGN -0x26 0x0026 # AMPERSAND -0x27 0x0027 # APOSTROPHE -0x28 0x0028 # LEFT PARENTHESIS -0x29 0x0029 # RIGHT PARENTHESIS -0x2A 0x002A # ASTERISK -0x2B 0x002B # PLUS SIGN -0x2C 0x002C # COMMA -0x2D 0x002D # HYPHEN-MINUS -0x2E 0x002E # FULL STOP -0x2F 0x002F # SOLIDUS -0x30 0x0030 # DIGIT ZERO -0x31 0x0031 # DIGIT ONE -0x32 0x0032 # DIGIT TWO -0x33 0x0033 # DIGIT THREE -0x34 0x0034 # DIGIT FOUR -0x35 0x0035 # DIGIT FIVE -0x36 0x0036 # DIGIT SIX -0x37 0x0037 # DIGIT SEVEN -0x38 0x0038 # DIGIT EIGHT -0x39 0x0039 # DIGIT NINE -0x3A 0x003A # COLON -0x3B 0x003B # SEMICOLON -0x3C 0x003C # LESS-THAN SIGN -0x3D 0x003D # EQUALS SIGN -0x3E 0x003E # GREATER-THAN SIGN -0x3F 0x003F # QUESTION MARK -0x40 0x0040 # COMMERCIAL AT -0x41 0x0041 # LATIN CAPITAL LETTER A -0x42 0x0042 # LATIN CAPITAL LETTER B -0x43 0x0043 # LATIN CAPITAL LETTER C -0x44 0x0044 # LATIN CAPITAL LETTER D -0x45 0x0045 # LATIN CAPITAL LETTER E -0x46 0x0046 # LATIN CAPITAL LETTER F -0x47 0x0047 # LATIN CAPITAL LETTER G -0x48 0x0048 # LATIN CAPITAL LETTER H -0x49 0x0049 # LATIN CAPITAL LETTER I -0x4A 0x004A # LATIN CAPITAL LETTER J -0x4B 0x004B # LATIN CAPITAL LETTER K -0x4C 0x004C # LATIN CAPITAL LETTER L -0x4D 0x004D # LATIN CAPITAL LETTER M -0x4E 0x004E # LATIN CAPITAL LETTER N -0x4F 0x004F # LATIN CAPITAL LETTER O -0x50 0x0050 # LATIN CAPITAL LETTER P -0x51 0x0051 # LATIN CAPITAL LETTER Q -0x52 0x0052 # LATIN CAPITAL LETTER R -0x53 0x0053 # LATIN CAPITAL LETTER S -0x54 0x0054 # LATIN CAPITAL LETTER T -0x55 0x0055 # LATIN CAPITAL LETTER U -0x56 0x0056 # LATIN CAPITAL LETTER V -0x57 0x0057 # LATIN CAPITAL LETTER W -0x58 0x0058 # LATIN CAPITAL LETTER X -0x59 0x0059 # LATIN CAPITAL LETTER Y -0x5A 0x005A # LATIN CAPITAL LETTER Z -0x5B 0x005B # LEFT SQUARE BRACKET -0x5C 0x005C # REVERSE SOLIDUS -0x5D 0x005D # RIGHT SQUARE BRACKET -0x5E 0x005E # CIRCUMFLEX ACCENT -0x5F 0x005F # LOW LINE -0x60 0x0060 # GRAVE ACCENT -0x61 0x0061 # LATIN SMALL LETTER A -0x62 0x0062 # LATIN SMALL LETTER B -0x63 0x0063 # LATIN SMALL LETTER C -0x64 0x0064 # LATIN SMALL LETTER D -0x65 0x0065 # LATIN SMALL LETTER E -0x66 0x0066 # LATIN SMALL LETTER F -0x67 0x0067 # LATIN SMALL LETTER G -0x68 0x0068 # LATIN SMALL LETTER H -0x69 0x0069 # LATIN SMALL LETTER I -0x6A 0x006A # LATIN SMALL LETTER J -0x6B 0x006B # LATIN SMALL LETTER K -0x6C 0x006C # LATIN SMALL LETTER L -0x6D 0x006D # LATIN SMALL LETTER M -0x6E 0x006E # LATIN SMALL LETTER N -0x6F 0x006F # LATIN SMALL LETTER O -0x70 0x0070 # LATIN SMALL LETTER P -0x71 0x0071 # LATIN SMALL LETTER Q -0x72 0x0072 # LATIN SMALL LETTER R -0x73 0x0073 # LATIN SMALL LETTER S -0x74 0x0074 # LATIN SMALL LETTER T -0x75 0x0075 # LATIN SMALL LETTER U -0x76 0x0076 # LATIN SMALL LETTER V -0x77 0x0077 # LATIN SMALL LETTER W -0x78 0x0078 # LATIN SMALL LETTER X -0x79 0x0079 # LATIN SMALL LETTER Y -0x7A 0x007A # LATIN SMALL LETTER Z -0x7B 0x007B # LEFT CURLY BRACKET -0x7C 0x007C # VERTICAL LINE -0x7D 0x007D # RIGHT CURLY BRACKET -0x7E 0x007E # TILDE -0x80 0x2500 # FORMS LIGHT HORIZONTAL -0x81 0x2502 # FORMS LIGHT VERTICAL -0x82 0x250c # FORMS LIGHT DOWN AND RIGHT -0x83 0x2510 # FORMS LIGHT DOWN AND LEFT -0x84 0x2514 # FORMS LIGHT UP AND RIGHT -0x85 0x2518 # FORMS LIGHT UP AND LEFT -0x86 0x251c # FORMS LIGHT VERTICAL AND RIGHT -0x87 0x2524 # FORMS LIGHT VERTICAL AND LEFT -0x88 0x252c # FORMS LIGHT DOWN AND HORIZONTAL -0x89 0x2534 # FORMS LIGHT UP AND HORIZONTAL -0x8A 0x253c # FORMS LIGHT VERTICAL AND HORIZONTAL -0x8B 0x2580 # UPPER HALF BLOCK -0x8C 0x2584 # LOWER HALF BLOCK -0x8D 0x2588 # FULL BLOCK -0x8E 0x258c # LEFT HALF BLOCK -0x8F 0x2590 # RIGHT HALF BLOCK -0x90 0x2591 # LIGHT SHADE -0x91 0x2592 # MEDIUM SHADE -0x92 0x2593 # DARK SHADE -0x93 0x2320 # TOP HALF INTEGRAL -0x94 0x25A0 # BLACK SMALL SQUARE -0x95 0x2219 # BULLET OPERATOR -0x96 0x221A # SQUARE ROOT -0x97 0x2248 # ALMOST EQUAL TO -0x98 0x2264 # LESS THAN OR EQUAL TO -0x99 0x2265 # GREATER THAN OR EQUAL TO -0x9A 0x00A0 # NON-BREAKING SPACE -0x9B 0x2321 # BOTTOM HALF INTEGRAL -0x9C 0x00B0 # DEGREE SIGN -0x9D 0X00B2 # SUPERSCRIPT DIGIT TWO -0x9E 0X00B7 # MIDDLE DOT -0x9F 0X00F7 # DIVISION SIGN -0xA0 0x2550 # FORMS DOUBLE HORIZONTAL -0xA1 0x2551 # FORMS DOUBLE VERTICAL -0xA2 0x2552 # FORMS DOWN SINGLE AND RIGHT DOUBLE -0xA3 0x0451 # CYRILLIC SMALL LETTER IO -0xA4 0x2553 # FORMS DOWN DOUBLE AND RIGHT SINGLE -0xA5 0x2554 # FORMS DOUBLE DOWN AND RIGHT -0xA6 0x2555 # FORMS DOWN SINGLE AND LEFT DOUBLE -0xA7 0x2556 # FORMS DOWN DOUBLE AND LEFT SINGLE -0xA8 0x2557 # FORMS DOUBLE DOWN AND LEFT -0xA9 0x2558 # FORMS UP SINGLE AND RIGHT DOUBLE -0xAA 0x2559 # FORMS UP DOUBLE AND RIGHT SINGLE -0xAB 0x255A # FORMS DOUBLE UP AND RIGHT -0xAC 0x255B # FORMS UP SINGLE AND LEFT DOUBLE -0xAD 0x255C # FORMS UP DOUBLE AND LEFT SINGLE -0xAE 0x255D # FORMS DOUBLE UP AND LEFT -0xAF 0x255E # FORMS VERTICAL SINGLE AND RIGHT DOUBLE -0xB0 0x255F # FORMS VERTICAL DOUBLE AND RIGHT SINGLE -0xB1 0x2560 # FORMS DOUBLE VERTICAL AND RIGHT -0xB2 0x2561 # FORMS VERTICAL SINGLE AND LEFT DOUBLE -0xB3 0X0401 # CYRILLIC CAPITAL LETTER IO -0xB4 0x2562 # FORMS VERTICAL DOUBLE AND LEFT SINGLE -0xB5 0x2563 # FORMS DOUBLE VERTICAL AND LEFT -0xB6 0x2564 # FORMS DOWN SINGLE AND HORIZONTAL DOUBLE -0xB7 0x2565 # FORMS DOWN DOUBLE AND HORIZONTAL SINGLE -0xB8 0x2566 # FORMS DOUBLE DOWN AND HORIZONTAL -0xB9 0x2567 # FORMS UP SINGLE AND HORIZONTAL DOUBLE -0xBA 0x2568 # FORMS UP DOUBLE AND HORIZONTAL SINGLE -0xBB 0x2569 # FORMS DOUBLE UP AND HORIZONTAL -0xBC 0x256A # FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE -0xBD 0x256B # FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE -0xBE 0x256C # FORMS DOUBLE VERTICAL AND HORIZONTAL -0xBF 0x00A9 # COPYRIGHT SIGN -0xC0 0x044E # CYRILLIC SMALL LETTER IU -0xC1 0x0430 # CYRILLIC SMALL LETTER A -0xC2 0x0431 # CYRILLIC SMALL LETTER BE -0xC3 0x0446 # CYRILLIC SMALL LETTER TSE -0xC4 0x0434 # CYRILLIC SMALL LETTER DE -0xC5 0x0435 # CYRILLIC SMALL LETTER IE -0xC6 0x0444 # CYRILLIC SMALL LETTER EF -0xC7 0x0433 # CYRILLIC SMALL LETTER GE -0xC8 0x0445 # CYRILLIC SMALL LETTER KHA -0xC9 0x0438 # CYRILLIC SMALL LETTER II -0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT II -0xCB 0x043A # CYRILLIC SMALL LETTER KA -0xCC 0x043B # CYRILLIC SMALL LETTER EL -0xCD 0x043C # CYRILLIC SMALL LETTER EM -0xCE 0x043D # CYRILLIC SMALL LETTER EN -0xCF 0x043E # CYRILLIC SMALL LETTER O -0xD0 0x043F # CYRILLIC SMALL LETTER PE -0xD1 0x044F # CYRILLIC SMALL LETTER IA -0xD2 0x0440 # CYRILLIC SMALL LETTER ER -0xD3 0x0441 # CYRILLIC SMALL LETTER ES -0xD4 0x0442 # CYRILLIC SMALL LETTER TE -0xD5 0x0443 # CYRILLIC SMALL LETTER U -0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE -0xD7 0x0432 # CYRILLIC SMALL LETTER VE -0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN -0xD9 0x044B # CYRILLIC SMALL LETTER YERI -0xDA 0x0437 # CYRILLIC SMALL LETTER ZE -0xDB 0x0448 # CYRILLIC SMALL LETTER SHA -0xDC 0x044D # CYRILLIC SMALL LETTER REVERSED E -0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA -0xDE 0x0447 # CYRILLIC SMALL LETTER CHE -0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN -0xE0 0x042E # CYRILLIC CAPITAL LETTER IU -0xE1 0x0410 # CYRILLIC CAPITAL LETTER A -0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE -0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE -0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE -0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE -0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF -0xE7 0x0413 # CYRILLIC CAPITAL LETTER GE -0xE8 0x0425 # CYRILLIC CAPITAL LETTER KHA -0xE9 0x0418 # CYRILLIC CAPITAL LETTER II -0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT II -0xEB 0x041A # CYRILLIC CAPITAL LETTER KA -0xEC 0x041B # CYRILLIC CAPITAL LETTER EL -0xED 0x041C # CYRILLIC CAPITAL LETTER EM -0xEE 0x041D # CYRILLIC CAPITAL LETTER EN -0xEF 0x041E # CYRILLIC CAPITAL LETTER O -0xF0 0x041F # CYRILLIC CAPITAL LETTER PE -0xF1 0x042F # CYRILLIC CAPITAL LETTER IA -0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER -0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES -0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE -0xF5 0x0423 # CYRILLIC CAPITAL LETTER U -0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE -0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE -0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN -0xF9 0x042B # CYRILLIC CAPITAL LETTER YERI -0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE -0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA -0xFC 0x042D # CYRILLIC CAPITAL LETTER REVERSED E -0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA -0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE -0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN diff --git a/mozilla/lib/libi18n/unicode/fromftp/othertbls/koi8u.txt b/mozilla/lib/libi18n/unicode/fromftp/othertbls/koi8u.txt deleted file mode 100644 index 9ba13bba5a5..00000000000 --- a/mozilla/lib/libi18n/unicode/fromftp/othertbls/koi8u.txt +++ /dev/null @@ -1,244 +0,0 @@ -# -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. -# HAND MADE BY FRANK TANG <ftang@netscape.com> -# BY REFERENCE RFC 2319 -# KOI8-U CHARSET -# -# -0x20 0x0020 # SPACE -0x21 0x0021 # EXCLAMATION MARK -0x22 0x0022 # QUOTATION MARK -0x23 0x0023 # NUMBER SIGN -0x24 0x0024 # DOLLAR SIGN -0x25 0x0025 # PERCENT SIGN -0x26 0x0026 # AMPERSAND -0x27 0x0027 # APOSTROPHE -0x28 0x0028 # LEFT PARENTHESIS -0x29 0x0029 # RIGHT PARENTHESIS -0x2A 0x002A # ASTERISK -0x2B 0x002B # PLUS SIGN -0x2C 0x002C # COMMA -0x2D 0x002D # HYPHEN-MINUS -0x2E 0x002E # FULL STOP -0x2F 0x002F # SOLIDUS -0x30 0x0030 # DIGIT ZERO -0x31 0x0031 # DIGIT ONE -0x32 0x0032 # DIGIT TWO -0x33 0x0033 # DIGIT THREE -0x34 0x0034 # DIGIT FOUR -0x35 0x0035 # DIGIT FIVE -0x36 0x0036 # DIGIT SIX -0x37 0x0037 # DIGIT SEVEN -0x38 0x0038 # DIGIT EIGHT -0x39 0x0039 # DIGIT NINE -0x3A 0x003A # COLON -0x3B 0x003B # SEMICOLON -0x3C 0x003C # LESS-THAN SIGN -0x3D 0x003D # EQUALS SIGN -0x3E 0x003E # GREATER-THAN SIGN -0x3F 0x003F # QUESTION MARK -0x40 0x0040 # COMMERCIAL AT -0x41 0x0041 # LATIN CAPITAL LETTER A -0x42 0x0042 # LATIN CAPITAL LETTER B -0x43 0x0043 # LATIN CAPITAL LETTER C -0x44 0x0044 # LATIN CAPITAL LETTER D -0x45 0x0045 # LATIN CAPITAL LETTER E -0x46 0x0046 # LATIN CAPITAL LETTER F -0x47 0x0047 # LATIN CAPITAL LETTER G -0x48 0x0048 # LATIN CAPITAL LETTER H -0x49 0x0049 # LATIN CAPITAL LETTER I -0x4A 0x004A # LATIN CAPITAL LETTER J -0x4B 0x004B # LATIN CAPITAL LETTER K -0x4C 0x004C # LATIN CAPITAL LETTER L -0x4D 0x004D # LATIN CAPITAL LETTER M -0x4E 0x004E # LATIN CAPITAL LETTER N -0x4F 0x004F # LATIN CAPITAL LETTER O -0x50 0x0050 # LATIN CAPITAL LETTER P -0x51 0x0051 # LATIN CAPITAL LETTER Q -0x52 0x0052 # LATIN CAPITAL LETTER R -0x53 0x0053 # LATIN CAPITAL LETTER S -0x54 0x0054 # LATIN CAPITAL LETTER T -0x55 0x0055 # LATIN CAPITAL LETTER U -0x56 0x0056 # LATIN CAPITAL LETTER V -0x57 0x0057 # LATIN CAPITAL LETTER W -0x58 0x0058 # LATIN CAPITAL LETTER X -0x59 0x0059 # LATIN CAPITAL LETTER Y -0x5A 0x005A # LATIN CAPITAL LETTER Z -0x5B 0x005B # LEFT SQUARE BRACKET -0x5C 0x005C # REVERSE SOLIDUS -0x5D 0x005D # RIGHT SQUARE BRACKET -0x5E 0x005E # CIRCUMFLEX ACCENT -0x5F 0x005F # LOW LINE -0x60 0x0060 # GRAVE ACCENT -0x61 0x0061 # LATIN SMALL LETTER A -0x62 0x0062 # LATIN SMALL LETTER B -0x63 0x0063 # LATIN SMALL LETTER C -0x64 0x0064 # LATIN SMALL LETTER D -0x65 0x0065 # LATIN SMALL LETTER E -0x66 0x0066 # LATIN SMALL LETTER F -0x67 0x0067 # LATIN SMALL LETTER G -0x68 0x0068 # LATIN SMALL LETTER H -0x69 0x0069 # LATIN SMALL LETTER I -0x6A 0x006A # LATIN SMALL LETTER J -0x6B 0x006B # LATIN SMALL LETTER K -0x6C 0x006C # LATIN SMALL LETTER L -0x6D 0x006D # LATIN SMALL LETTER M -0x6E 0x006E # LATIN SMALL LETTER N -0x6F 0x006F # LATIN SMALL LETTER O -0x70 0x0070 # LATIN SMALL LETTER P -0x71 0x0071 # LATIN SMALL LETTER Q -0x72 0x0072 # LATIN SMALL LETTER R -0x73 0x0073 # LATIN SMALL LETTER S -0x74 0x0074 # LATIN SMALL LETTER T -0x75 0x0075 # LATIN SMALL LETTER U -0x76 0x0076 # LATIN SMALL LETTER V -0x77 0x0077 # LATIN SMALL LETTER W -0x78 0x0078 # LATIN SMALL LETTER X -0x79 0x0079 # LATIN SMALL LETTER Y -0x7A 0x007A # LATIN SMALL LETTER Z -0x7B 0x007B # LEFT CURLY BRACKET -0x7C 0x007C # VERTICAL LINE -0x7D 0x007D # RIGHT CURLY BRACKET -0x7E 0x007E # TILDE -0x80 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL -0x81 0x2502 # BOX DRAWINGS LIGHT VERTICAL -0x82 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT -0x83 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT -0x84 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT -0x85 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT -0x86 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT -0x87 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT -0x88 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL -0x89 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL -0x8A 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL -0x8B 0x2580 # UPPER HALF BLOCK -0x8C 0x2584 # LOWER HALF BLOCK -0x8D 0x2588 # FULL BLOCK -0x8E 0x258C # LEFT HALF BLOCK -0x8F 0x2590 # RIGHT HALF BLOCK -0x90 0x2591 # LIGHT SHADE -0x91 0x2592 # MEDIUM SHADE -0x92 0x2593 # DARK SHADE -0x93 0x2320 # TOP HALF INTEGRAL -0x94 0x25A0 # BLACK SQUARE -0x95 0x2219 # BULLET OPERATOR -0x96 0x221A # SQUARE ROOT -0x97 0x2248 # ALMOST EQUAL TO -0x98 0x2264 # LESS THAN OR EQUAL TO -0x99 0x2265 # GREATER THAN OR EQUAL TO -0x9A 0x00A0 # NO-BREAK SPACE -0x9B 0x2321 # BOTTOM HALF INTEGRAL -0x9C 0x00B0 # DEGREE SIGN -0x9D 0x00B2 # SUPERSCRIPT TWO -0x9E 0x00B7 # MIDDLE DOT -0x9F 0x00F7 # DIVISION SIGN -0xA0 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL -0xA1 0x2551 # BOX DRAWINGS DOUBLE VERTICAL -0xA2 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE -0xA3 0x0451 # CYRILLIC SMALL LETTER IO -0xA4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE -0xA5 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT -0xA6 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -0xA7 0x0457 # CYRILLIC SMALL LETTER YI (UKRAINIAN) -0xA8 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT -0xA9 0x2558 # BOX DRAWINGS0xP SINGLE AND RIGHT DOUBLE -0xAA 0x2559 # BOX DRAWINGS0xP DOUBLE AND RIGHT SINGLE -0xAB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT -0xAC 0x255B # BOX DRAWINGS0xP SINGLE AND LEFT DOUBLE -0xAD 0x0491 # CYRILLIC SMALL LETTER GHE WITH UPTURN -0xAE 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT -0xAF 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE -0xB0 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE -0xB1 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT -0xB2 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE -0xB3 0x0401 # CYRILLIC CAPITAL LETTER IO -0xB4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE -0xB5 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT -0xB6 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -0xB7 0x0407 # CYRILLIC CAPITAL LETTER YI (UKRAINIAN) -0xB8 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL -0xB9 0x2567 # BOX DRAWINGS0xP SINGLE AND HORIZONTAL DOUBLE -0xBA 0x2568 # BOX DRAWINGS0xP DOUBLE AND HORIZONTAL SINGLE -0xBB 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL -0xBC 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE -0xBD 0x0490 # CYRILLIC CAPITAL LETTER GHE WITH UPTURN -0xBE 0x256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL -0xBF 0x00A9 # COPYRIGHT SIGN -0xC0 0x044E # CYRILLIC SMALL LETTER YU -0xC1 0x0430 # CYRILLIC SMALL LETTER A -0xC2 0x0431 # CYRILLIC SMALL LETTER BE -0xC3 0x0446 # CYRILLIC SMALL LETTER TSE -0xC4 0x0434 # CYRILLIC SMALL LETTER DE -0xC5 0x0435 # CYRILLIC SMALL LETTER IE -0xC6 0x0444 # CYRILLIC SMALL LETTER EF -0xC7 0x0433 # CYRILLIC SMALL LETTER GHE -0xC8 0x0445 # CYRILLIC SMALL LETTER KHA -0xC9 0x0438 # CYRILLIC SMALL LETTER I -0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT I -0xCB 0x043A # CYRILLIC SMALL LETTER KA -0xCC 0x043B # CYRILLIC SMALL LETTER EL -0xCD 0x043C # CYRILLIC SMALL LETTER EM -0xCE 0x043D # CYRILLIC SMALL LETTER EN -0xCF 0x043E # CYRILLIC SMALL LETTER O -0xD0 0x043F # CYRILLIC SMALL LETTER PE -0xD1 0x044F # CYRILLIC SMALL LETTER YA -0xD2 0x0440 # CYRILLIC SMALL LETTER ER -0xD3 0x0441 # CYRILLIC SMALL LETTER ES -0xD4 0x0442 # CYRILLIC SMALL LETTER TE -0xD5 0x0443 # CYRILLIC SMALL LETTER U -0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE -0xD7 0x0432 # CYRILLIC SMALL LETTER VE -0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN -0xD9 0x044B # CYRILLIC SMALL LETTER YERU -0xDA 0x0437 # CYRILLIC SMALL LETTER ZE -0xDB 0x0448 # CYRILLIC SMALL LETTER SHA -0xDC 0x044D # CYRILLIC SMALL LETTER E -0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA -0xDE 0x0447 # CYRILLIC SMALL LETTER CHE -0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN -0xE0 0x042E # CYRILLIC CAPITAL LETTER YU -0xE1 0x0410 # CYRILLIC CAPITAL LETTER A -0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE -0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE -0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE -0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE -0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF -0xE7 0x0413 # CYRILLIC CAPITAL LETTER GHE -0xE8 0x0425 # CYRILLIC CAPITAL LETTER KHA -0xE9 0x0418 # CYRILLIC CAPITAL LETTER I -0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT I -0xEB 0x041A # CYRILLIC CAPITAL LETTER KA -0xEC 0x041B # CYRILLIC CAPITAL LETTER EL -0xED 0x041C # CYRILLIC CAPITAL LETTER EM -0xEE 0x041D # CYRILLIC CAPITAL LETTER EN -0xEF 0x041E # CYRILLIC CAPITAL LETTER O -0xF0 0x041F # CYRILLIC CAPITAL LETTER PE -0xF1 0x042F # CYRILLIC CAPITAL LETTER YA -0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER -0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES -0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE -0xF5 0x0423 # CYRILLIC CAPITAL LETTER U -0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE -0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE -0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN -0xF9 0x042B # CYRILLIC CAPITAL LETTER YERU -0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE -0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA -0xFC 0x042D # CYRILLIC CAPITAL LETTER E -0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA -0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE -0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN diff --git a/mozilla/lib/libi18n/unicode/fromftp/othertbls/t61.txt b/mozilla/lib/libi18n/unicode/fromftp/othertbls/t61.txt deleted file mode 100644 index 0c6c3993227..00000000000 --- a/mozilla/lib/libi18n/unicode/fromftp/othertbls/t61.txt +++ /dev/null @@ -1,390 +0,0 @@ -# -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. -# -# HAND MADE BY FRANK TANG <ftang@netscape.com> -# BY REFERENCE RFC 1489 -# KOI8-R CHARSET -# -# -0x00 0x0000 #NULL -0x01 0x0001 #START OF HEADING -0x02 0x0002 #START OF TEXT -0x03 0x0003 #END OF TEXT -0x04 0x0004 #END OF TRANSMISSION -0x05 0x0005 #ENQUIRY -0x06 0x0006 #ACKNOWLEDGE -0x07 0x0007 #BELL -0x08 0x0008 #BACKSPACE -0x09 0x0009 #HORIZONTAL TABULATION -0x0A 0x000A #LINE FEED -0x0B 0x000B #VERTICAL TABULATION -0x0C 0x000C #FORM FEED -0x0D 0x000D #CARRIAGE RETURN -0x0E 0x000E #SHIFT OUT -0x0F 0x000F #SHIFT IN -0x10 0x0010 #DATA LINK ESCAPE -0x11 0x0011 #DEVICE CONTROL ONE -0x12 0x0012 #DEVICE CONTROL TWO -0x13 0x0013 #DEVICE CONTROL THREE -0x14 0x0014 #DEVICE CONTROL FOUR -0x15 0x0015 #NEGATIVE ACKNOWLEDGE -0x16 0x0016 #SYNCHRONOUS IDLE -0x17 0x0017 #END OF TRANSMISSION BLOCK -0x18 0x0018 #CANCEL -0x19 0x0019 #END OF MEDIUM -0x1A 0x001A #SUBSTITUTE -0x1B 0x001B #ESCAPE -0x1C 0x001C #FILE SEPARATOR -0x1D 0x001D #GROUP SEPARATOR -0x1E 0x001E #RECORD SEPARATOR -0x1F 0x001F #UNIT SEPARATOR -0x20 0x0020 #SPACE -0x21 0x0021 #EXCLAMATION MARK -0x22 0x0022 #QUOTATION MARK -0x23 0x0023 #NUMBER SIGN -0x24 0x0024 #DOLLAR SIGN -0x25 0x0025 #PERCENT SIGN -0x26 0x0026 #AMPERSAND -0x27 0x0027 #APOSTROPHE -0x28 0x0028 #LEFT PARENTHESIS -0x29 0x0029 #RIGHT PARENTHESIS -0x2A 0x002A #ASTERISK -0x2B 0x002B #PLUS SIGN -0x2C 0x002C #COMMA -0x2D 0x002D #HYPHEN-MINUS -0x2E 0x002E #FULL STOP -0x2F 0x002F #SOLIDUS -0x30 0x0030 #DIGIT ZERO -0x31 0x0031 #DIGIT ONE -0x32 0x0032 #DIGIT TWO -0x33 0x0033 #DIGIT THREE -0x34 0x0034 #DIGIT FOUR -0x35 0x0035 #DIGIT FIVE -0x36 0x0036 #DIGIT SIX -0x37 0x0037 #DIGIT SEVEN -0x38 0x0038 #DIGIT EIGHT -0x39 0x0039 #DIGIT NINE -0x3A 0x003A #COLON -0x3B 0x003B #SEMICOLON -0x3C 0x003C #LESS-THAN SIGN -0x3D 0x003D #EQUALS SIGN -0x3E 0x003E #GREATER-THAN SIGN -0x3F 0x003F #QUESTION MARK -0x40 0x0040 #COMMERCIAL AT -0x41 0x0041 #LATIN CAPITAL LETTER A -0x42 0x0042 #LATIN CAPITAL LETTER B -0x43 0x0043 #LATIN CAPITAL LETTER C -0x44 0x0044 #LATIN CAPITAL LETTER D -0x45 0x0045 #LATIN CAPITAL LETTER E -0x46 0x0046 #LATIN CAPITAL LETTER F -0x47 0x0047 #LATIN CAPITAL LETTER G -0x48 0x0048 #LATIN CAPITAL LETTER H -0x49 0x0049 #LATIN CAPITAL LETTER I -0x4A 0x004A #LATIN CAPITAL LETTER J -0x4B 0x004B #LATIN CAPITAL LETTER K -0x4C 0x004C #LATIN CAPITAL LETTER L -0x4D 0x004D #LATIN CAPITAL LETTER M -0x4E 0x004E #LATIN CAPITAL LETTER N -0x4F 0x004F #LATIN CAPITAL LETTER O -0x50 0x0050 #LATIN CAPITAL LETTER P -0x51 0x0051 #LATIN CAPITAL LETTER Q -0x52 0x0052 #LATIN CAPITAL LETTER R -0x53 0x0053 #LATIN CAPITAL LETTER S -0x54 0x0054 #LATIN CAPITAL LETTER T -0x55 0x0055 #LATIN CAPITAL LETTER U -0x56 0x0056 #LATIN CAPITAL LETTER V -0x57 0x0057 #LATIN CAPITAL LETTER W -0x58 0x0058 #LATIN CAPITAL LETTER X -0x59 0x0059 #LATIN CAPITAL LETTER Y -0x5A 0x005A #LATIN CAPITAL LETTER Z -0x5B 0x005B #LEFT SQUARE BRACKET -0x5C 0x005C #REVERSE SOLIDUS -0x5D 0x005D #RIGHT SQUARE BRACKET -0x5E 0x005E #CIRCUMFLEX ACCENT -0x5F 0x005F #LOW LINE -0x60 0x0060 #GRAVE ACCENT -0x61 0x0061 #LATIN SMALL LETTER A -0x62 0x0062 #LATIN SMALL LETTER B -0x63 0x0063 #LATIN SMALL LETTER C -0x64 0x0064 #LATIN SMALL LETTER D -0x65 0x0065 #LATIN SMALL LETTER E -0x66 0x0066 #LATIN SMALL LETTER F -0x67 0x0067 #LATIN SMALL LETTER G -0x68 0x0068 #LATIN SMALL LETTER H -0x69 0x0069 #LATIN SMALL LETTER I -0x6A 0x006A #LATIN SMALL LETTER J -0x6B 0x006B #LATIN SMALL LETTER K -0x6C 0x006C #LATIN SMALL LETTER L -0x6D 0x006D #LATIN SMALL LETTER M -0x6E 0x006E #LATIN SMALL LETTER N -0x6F 0x006F #LATIN SMALL LETTER O -0x70 0x0070 #LATIN SMALL LETTER P -0x71 0x0071 #LATIN SMALL LETTER Q -0x72 0x0072 #LATIN SMALL LETTER R -0x73 0x0073 #LATIN SMALL LETTER S -0x74 0x0074 #LATIN SMALL LETTER T -0x75 0x0075 #LATIN SMALL LETTER U -0x76 0x0076 #LATIN SMALL LETTER V -0x77 0x0077 #LATIN SMALL LETTER W -0x78 0x0078 #LATIN SMALL LETTER X -0x79 0x0079 #LATIN SMALL LETTER Y -0x7A 0x007A #LATIN SMALL LETTER Z -0x7B 0x007B #LEFT CURLY BRACKET -0x7C 0x007C #VERTICAL LINE -0x7D 0x007D #RIGHT CURLY BRACKET -0x7E 0x007E #TILDE -0x7F 0x007F #DELETE -0xA0 0x00A0 -0xA1 0x00A1 -0xA2 0x00A2 -0xA3 0x00A3 -0xA4 0x0024 -0xA5 0x00A5 -0xA7 0x00A7 -0xA9 0x2018 -0xAA 0x201C -0xAB 0x00AB -0xAC 0x2190 -0xAD 0x2191 -0xAE 0x2192 -0xAF 0x2193 -0xB0 0x00B0 -0xB1 0x00B1 -0xB2 0x00B2 -0xB3 0x00B3 -0xB4 0x00D7 -0xB5 0x00B5 -0xB6 0x00B6 -0xB7 0x00B7 -0xB8 0x00F7 -0xB9 0x2019 -0xBA 0x201D -0xBB 0x00BB -0xBC 0x00BC -0xBD 0x00BD -0xBE 0x00BE -0xBF 0x00BF -0xD0 0x2015 -0xD1 0x00B9 -0xD2 0x00AE -0xD3 0x00A9 -0xD4 0x2122 -0xD5 0x266A -0xD6 0x00AC -0xD7 0x00A6 -0xDC 0x215B -0xDD 0x215C -0xDE 0x215D -0xDF 0x215E -0xE0 0x2126 -0xE1 0x00C6 -0xE2 0x0110 -0xE3 0x00AA -0xE4 0x0126 -0xE6 0x0132 -0xE7 0x013F -0xE8 0x0141 -0xE9 0x00D8 -0xEA 0x0152 -0xEB 0x00BA -0xEC 0x00DE -0xED 0x0166 -0xEE 0x014A -0xEF 0x0149 -0xF0 0x0138 -0xF1 0x00E6 -0xF2 0x0111 -0xF3 0x00F0 -0xF4 0x0127 -0xF5 0x0131 -0xF6 0x0133 -0xF7 0x0140 -0xF8 0x0142 -0xF9 0x00F8 -0xFA 0x0153 -0xFB 0x00DF -0xFC 0x00FE -0xFD 0x0167 -0xFE 0x014B -0xFF 0x00AD -0xC120 0x0060 -0xC141 0x00C0 -0xC145 0x00C8 -0xC149 0x00CC -0xC14F 0x00D2 -0xC155 0x00D9 -0xC161 0x00E0 -0xC165 0x00E8 -0xC169 0x00EC -0xC16F 0x00F2 -0xC175 0x00F9 -0xC220 0x00B4 -0xC241 0x00C1 -0xC243 0x0106 -0xC245 0x00C9 -0xC249 0x00CD -0xC24C 0x0139 -0xC24E 0x0143 -0xC24F 0x00D3 -0xC252 0x0154 -0xC253 0x015A -0xC255 0x00DA -0xC259 0x00DD -0xC25A 0x017B -0xC261 0x00E1 -0xC263 0x0107 -0xC265 0x00E9 -0xC267 0x01F5 -0xC269 0x00ED -0xC26C 0x013A -0xC26E 0x0144 -0xC26F 0x00F3 -0xC272 0x0155 -0xC273 0x015B -0xC275 0x00FA -0xC279 0x00FD -0xC27A 0x017A -0xC320 0x005E -0xC341 0x00C2 -0xC343 0x0108 -0xC345 0x00CA -0xC347 0x011C -0xC348 0x0124 -0xC349 0x00CE -0xC34A 0x0134 -0xC34F 0x00D4 -0xC353 0x015C -0xC355 0x00DB -0xC357 0x0174 -0xC359 0x0176 -0xC361 0x00E2 -0xC363 0x0109 -0xC365 0x00EA -0xC367 0x011D -0xC368 0x0125 -0xC369 0x00EE -0xC36A 0x0135 -0xC36F 0x00F4 -0xC373 0x015D -0xC375 0x00FB -0xC377 0x0175 -0xC379 0x0177 -0xC420 0x007E -0xC441 0x00C3 -0xC449 0x0128 -0xC44E 0x00D1 -0xC44F 0x00D5 -0xC455 0x0168 -0xC461 0x00E3 -0xC469 0x0129 -0xC46E 0x00F1 -0xC46F 0x00F5 -0xC475 0x0169 -0xC520 0x00AF -0xC541 0x0100 -0xC545 0x0112 -0xC549 0x012A -0xC54F 0x014C -0xC555 0x016A -0xC561 0x0101 -0xC565 0x0113 -0xC569 0x012B -0xC56F 0x014D -0xC575 0x016B -0xC620 0x02D8 -0xC641 0x0102 -0xC647 0x011E -0xC655 0x016C -0xC661 0x0103 -0xC667 0x011F -0xC675 0x016D -0xC720 0x02D9 -0xC743 0x010A -0xC745 0x0116 -0xC747 0x0120 -0xC749 0x0130 -0xC75A 0x017B -0xC763 0x010B -0xC765 0x0117 -0xC767 0x0121 -0xC77A 0x017C -0xC820 0x00A8 -0xC841 0x00C4 -0xC845 0x00CB -0xC849 0x00CF -0xC84F 0x00D6 -0xC855 0x00DC -0xC859 0x0178 -0xC861 0x00E4 -0xC865 0x00EB -0xC869 0x00EF -0xC86F 0x00F6 -0xC875 0x00FC -0xC879 0x00FF -0xCA20 0x02DA -0xCA41 0x00C5 -0xCA55 0x016E -0xCA61 0x00E5 -0xCA75 0x016F -0xCB20 0x00B8 -0xCB43 0x00C7 -0xCB47 0x0122 -0xCB4B 0x0136 -0xCB4C 0x013B -0xCB52 0x0156 -0xCB53 0x015E -0xCB54 0x0162 -0xCB63 0x00E7 -0xCB6B 0x0137 -0xCB6C 0x013C -0xCB6E 0x0146 -0xCB72 0x0157 -0xCB73 0x015F -0xCB74 0x0163 -0xCD20 0x02DD -0xCD4F 0x0150 -0xCD55 0x0170 -0xCD6F 0x0151 -0xCD75 0x0171 -0xCE20 0x02DB -0xCE41 0x0104 -0xCE45 0x0118 -0xCE49 0x012E -0xCE55 0x0172 -0xCE61 0x0105 -0xCE65 0x0119 -0xCE69 0x012F -0xCE75 0x0173 -0xCF20 0x02C7 -0xCF43 0x010C -0xCF44 0x010E -0xCF45 0x011A -0xCF4C 0x013D -0xCF4E 0x0147 -0xCF52 0x0158 -0xCF53 0x0160 -0xCF54 0x0164 -0xCF5A 0x017D -0xCF63 0x010D -0xCF64 0x010F -0xCF65 0x011B -0xCF6C 0x013E -0xCF6E 0x0148 -0xCF72 0x0159 -0xCF73 0x0161 -0xCF74 0x0165 -0xCF7A 0x017E diff --git a/mozilla/lib/libi18n/unicode/fromftp/othertbls/tcvn5712.txt b/mozilla/lib/libi18n/unicode/fromftp/othertbls/tcvn5712.txt deleted file mode 100644 index e0cdad2841a..00000000000 --- a/mozilla/lib/libi18n/unicode/fromftp/othertbls/tcvn5712.txt +++ /dev/null @@ -1,277 +0,0 @@ -# -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. -# -# Conversion Table for TCVN 5712:1993 (VN-1) to ISO 10646/Unicode -# Origional HTML format in -# http://www.geocities.com/SiliconValley/Lab/7929/5712map.html -# -0x00 0x0000 # NULL -0x01 0x00da # LATIN CAPITAL LETTER U WITH ACUTE -0x02 0x1ee4 # LATIN CAPITAL LETTER U WITH DOT BELOW -0x03 0x0003 # END OF TEXT -0x04 0x1eea # LATIN CAPITAL LETTER U WITH HORN AND GRAVE -0x05 0x1eec # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE -0x06 0x1eee # LATIN CAPITAL LETTER U WITH HORN AND TILDE -0x07 0x0007 # BELL -0x08 0x0008 # BACKSPACE -0x09 0x0009 # HORIZONTAL TABULATION -0x0a 0x000a # LINE FEED -0x0b 0x000b # VERTICAL TABULATION -0x0c 0x000c # FORM FEED -0x0d 0x000d # CARRIAGE RETURN -0x0e 0x000e # SHIFT OUT -0x0f 0x000f # SHIFT IN -0x10 0x0010 # DATA LINK ESCAPE -0x11 0x1ee8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE -0x12 0x1ef0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW -0x13 0x1ef2 # LATIN CAPITAL LETTER Y WITH GRAVE -0x14 0x1ef6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE -0x15 0x1ef8 # LATIN CAPITAL LETTER Y WITH TILDE -0x16 0x00dd # LATIN CAPITAL LETTER Y WITH ACUTE -0x17 0x1ef4 # LATIN CAPITAL LETTER Y WITH DOT BELOW -0x18 0x0018 # CANCEL -0x19 0x0019 # END OF MEDIUM -0x1a 0x001a # SUBSTITUTE -0x1b 0x001b # ESCAPE -0x1c 0x001c # FILE SEPARATOR -0x1d 0x001d # GROUP SEPARATOR -0x1e 0x001e # RECORD SEPARATOR -0x1f 0x001f # UNIT SEPARATOR -0x20 0x0020 # SPACE -0x21 0x0021 # EXCLAMATION MARK -0x22 0x0022 # QUOTATION MARK -0x23 0x0023 # NUMBER SIGN -0x24 0x0024 # DOLLAR SIGN -0x25 0x0025 # PERCENT SIGN -0x26 0x0026 # AMPERSAND -0x27 0x0027 # APOSTROPHE -0x28 0x0028 # LEFT PARENTHESIS -0x29 0x0029 # RIGHT PARENTHESIS -0x2a 0x002a # ASTERISK -0x2b 0x002b # PLUS SIGN -0x2c 0x002c # COMMA -0x2d 0x002d # HYPHEN-MINUS -0x2e 0x002e # FULL STOP -0x2f 0x002f # SOLIDUS -0x30 0x0030 # DIGIT ZERO -0x31 0x0031 # DIGIT ONE -0x32 0x0032 # DIGIT TWO -0x33 0x0033 # DIGIT THREE -0x34 0x0034 # DIGIT FOUR -0x35 0x0035 # DIGIT FIVE -0x36 0x0036 # DIGIT SIX -0x37 0x0037 # DIGIT SEVEN -0x38 0x0038 # DIGIT EIGHT -0x39 0x0039 # DIGIT NINE -0x3a 0x003a # COLON -0x3b 0x003b # SEMICOLON -0x3c 0x003c # LESS-THAN SIGN -0x3d 0x003d # EQUALS SIGN -0x3e 0x003e # GREATER-THAN SIGN -0x3f 0x003f # QUESTION MARK -0x40 0x0040 # COMMERCIAL AT -0x41 0x0041 # LATIN CAPITAL LETTER A -0x42 0x0042 # LATIN CAPITAL LETTER B -0x43 0x0043 # LATIN CAPITAL LETTER C -0x44 0x0044 # LATIN CAPITAL LETTER D -0x45 0x0045 # LATIN CAPITAL LETTER E -0x46 0x0046 # LATIN CAPITAL LETTER F -0x47 0x0047 # LATIN CAPITAL LETTER G -0x48 0x0048 # LATIN CAPITAL LETTER H -0x49 0x0049 # LATIN CAPITAL LETTER I -0x4a 0x004a # LATIN CAPITAL LETTER J -0x4b 0x004b # LATIN CAPITAL LETTER K -0x4c 0x004c # LATIN CAPITAL LETTER L -0x4d 0x004d # LATIN CAPITAL LETTER M -0x4e 0x004e # LATIN CAPITAL LETTER N -0x4f 0x004f # LATIN CAPITAL LETTER O -0x50 0x0050 # LATIN CAPITAL LETTER P -0x51 0x0051 # LATIN CAPITAL LETTER Q -0x52 0x0052 # LATIN CAPITAL LETTER R -0x53 0x0053 # LATIN CAPITAL LETTER S -0x54 0x0054 # LATIN CAPITAL LETTER T -0x55 0x0055 # LATIN CAPITAL LETTER U -0x56 0x0056 # LATIN CAPITAL LETTER V -0x57 0x0057 # LATIN CAPITAL LETTER W -0x58 0x0058 # LATIN CAPITAL LETTER X -0x59 0x0059 # LATIN CAPITAL LETTER Y -0x5a 0x005a # LATIN CAPITAL LETTER Z -0x5b 0x005b # LEFT SQUARE BRACKET -0x5c 0x005c # REVERSE SOLIDUS -0x5d 0x005d # RIGHT SQUARE BRACKET -0x5e 0x005e # CIRCUMFLEX ACCENT -0x5f 0x005f # LOW LINE -0x60 0x0060 # GRAVE ACCENT -0x61 0x0061 # LATIN SMALL LETTER A -0x62 0x0062 # LATIN SMALL LETTER B -0x63 0x0063 # LATIN SMALL LETTER C -0x64 0x0064 # LATIN SMALL LETTER D -0x65 0x0065 # LATIN SMALL LETTER E -0x66 0x0066 # LATIN SMALL LETTER F -0x67 0x0067 # LATIN SMALL LETTER G -0x68 0x0068 # LATIN SMALL LETTER H -0x69 0x0069 # LATIN SMALL LETTER I -0x6a 0x006a # LATIN SMALL LETTER J -0x6b 0x006b # LATIN SMALL LETTER K -0x6c 0x006c # LATIN SMALL LETTER L -0x6d 0x006d # LATIN SMALL LETTER M -0x6e 0x006e # LATIN SMALL LETTER N -0x6f 0x006f # LATIN SMALL LETTER O -0x70 0x0070 # LATIN SMALL LETTER P -0x71 0x0071 # LATIN SMALL LETTER Q -0x72 0x0072 # LATIN SMALL LETTER R -0x73 0x0073 # LATIN SMALL LETTER S -0x74 0x0074 # LATIN SMALL LETTER T -0x75 0x0075 # LATIN SMALL LETTER U -0x76 0x0076 # LATIN SMALL LETTER V -0x77 0x0077 # LATIN SMALL LETTER W -0x78 0x0078 # LATIN SMALL LETTER X -0x79 0x0079 # LATIN SMALL LETTER Y -0x7a 0x007a # LATIN SMALL LETTER Z -0x7b 0x007b # LEFT CURLY BRACKET -0x7c 0x007c # VERTICAL LINE -0x7d 0x007d # RIGHT CURLY BRACKET -0x7e 0x007e # TILDE -0x7f 0x007f # DELETE -0x80 0x00c0 # LATIN CAPITAL LETTER A WITH GRAVE -0x81 0x1ea2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE -0x82 0x00c3 # LATIN CAPITAL LETTER A WITH TILDE -0x83 0x00c1 # LATIN CAPITAL LETTER A WITH ACUTE -0x84 0x1ea0 # LATIN CAPITAL LETTER A WITH DOT BELOW -0x85 0x1eb6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW -0x86 0x1eac # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW -0x87 0x00c8 # LATIN CAPITAL LETTER E WITH GRAVE -0x88 0x1eba # LATIN CAPITAL LETTER E WITH HOOK ABOVE -0x89 0x1ebc # LATIN CAPITAL LETTER E WITH TILDE -0x8a 0x00c9 # LATIN CAPITAL LETTER E WITH ACUTE -0x8b 0x1eb8 # LATIN CAPITAL LETTER E WITH DOT BELOW -0x8c 0x1ec6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -0x8d 0x00cc # LATIN CAPITAL LETTER I WITH GRAVE -0x8e 0x1ec8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE -0x8f 0x0128 # LATIN CAPITAL LETTER I WITH TILDE -0x90 0x00cd # LATIN CAPITAL LETTER I WITH ACUTE -0x91 0x1eca # LATIN CAPITAL LETTER I WITH DOT BELOW -0x92 0x00d2 # LATIN CAPITAL LETTER O WITH GRAVE -0x93 0x1ece # LATIN CAPITAL LETTER O WITH HOOK ABOVE -0x94 0x00d5 # LATIN CAPITAL LETTER O WITH TILDE -0x95 0x00d3 # LATIN CAPITAL LETTER O WITH ACUTE -0x96 0x1ecc # LATIN CAPITAL LETTER O WITH DOT BELOW -0x97 0x1ed8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -0x98 0x1edc # LATIN CAPITAL LETTER O WITH HORN AND GRAVE -0x99 0x1ede # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE -0x9a 0x1ee0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE -0x9b 0x1eda # LATIN CAPITAL LETTER O WITH HORN AND ACUTE -0x9c 0x1ee2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW -0x9d 0x00d9 # LATIN CAPITAL LETTER U WITH GRAVE -0x9e 0x1ee6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE -0x9f 0x0168 # LATIN CAPITAL LETTER U WITH TILDE -0xa0 0x00a0 # NO-BREAK SPACE -0xa1 0x0102 # LATIN CAPITAL LETTER A WITH BREVE -0xa2 0x00c2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -0xa3 0x00ca # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -0xa4 0x00d4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -0xa5 0x01a0 # LATIN CAPITAL LETTER O WITH HORN -0xa6 0x01af # LATIN CAPITAL LETTER U WITH HORN -0xa7 0x0110 # LATIN CAPITAL LETTER D WITH STROKE -0xa8 0x0103 # LATIN SMALL LETTER A WITH BREVE -0xa9 0x00e2 # LATIN SMALL LETTER A WITH CIRCUMFLEX -0xaa 0x00ea # LATIN SMALL LETTER E WITH CIRCUMFLEX -0xab 0x00f4 # LATIN SMALL LETTER O WITH CIRCUMFLEX -0xac 0x01a1 # LATIN SMALL LETTER O WITH HORN -0xad 0x01b0 # LATIN SMALL LETTER U WITH HORN -0xae 0x0111 # LATIN SMALL LETTER D WITH STROKE -0xaf 0x1eb0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE -0xb0 0x0300 # COMBINING GRAVE ACCENT -0xb1 0x0309 # COMBINING HOOK ABOVE -0xb2 0x0303 # COMBINING TILDE -0xb3 0x0301 # COMBINING ACUTE ACCENT -0xb4 0x0323 # COMBINING DOT BELOW -0xb5 0x00e0 # LATIN SMALL LETTER A WITH GRAVE -0xb6 0x1ea3 # LATIN SMALL LETTER A WITH HOOK ABOVE -0xb7 0x00e3 # LATIN SMALL LETTER A WITH TILDE -0xb8 0x00e1 # LATIN SMALL LETTER A WITH ACUTE -0xb9 0x1ea1 # LATIN SMALL LETTER A WITH DOT BELOW -0xba 0x1eb2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE -0xbb 0x1eb1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE -0xbc 0x1eb3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE -0xbd 0x1eb5 # LATIN SMALL LETTER A WITH BREVE AND TILDE -0xbe 0x1eaf # LATIN SMALL LETTER A WITH BREVE AND ACUTE -0xbf 0x1eb4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE -0xc0 0x1eae # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE -0xc1 0x1ea6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE -0xc2 0x1ea8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -0xc3 0x1eaa # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE -0xc4 0x1ea4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE -0xc5 0x1ec0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -0xc6 0x1eb7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW -0xc7 0x1ea7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE -0xc8 0x1ea9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -0xc9 0x1eab # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE -0xca 0x1ea5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE -0xcb 0x1ead # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW -0xcc 0x00e8 # LATIN SMALL LETTER E WITH GRAVE -0xcd 0x1ec2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -0xce 0x1ebb # LATIN SMALL LETTER E WITH HOOK ABOVE -0xcf 0x1ebd # LATIN SMALL LETTER E WITH TILDE -0xd0 0x00e9 # LATIN SMALL LETTER E WITH ACUTE -0xd1 0x1eb9 # LATIN SMALL LETTER E WITH DOT BELOW -0xd2 0x1ec1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -0xd3 0x1ec3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -0xd4 0x1ec5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -0xd5 0x1ebf # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -0xd6 0x1ec7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -0xd7 0x00ec # LATIN SMALL LETTER I WITH GRAVE -0xd8 0x1ec9 # LATIN SMALL LETTER I WITH HOOK ABOVE -0xd9 0x1ec4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -0xda 0x1ebe # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -0xdb 0x1ed2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -0xdc 0x0129 # LATIN SMALL LETTER I WITH TILDE -0xdd 0x00ed # LATIN SMALL LETTER I WITH ACUTE -0xde 0x1ecb # LATIN SMALL LETTER I WITH DOT BELOW -0xdf 0x00f2 # LATIN SMALL LETTER O WITH GRAVE -0xe0 0x1ed4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -0xe1 0x1ecf # LATIN SMALL LETTER O WITH HOOK ABOVE -0xe2 0x00f5 # LATIN SMALL LETTER O WITH TILDE -0xe3 0x00f3 # LATIN SMALL LETTER O WITH ACUTE -0xe4 0x1ecd # LATIN SMALL LETTER O WITH DOT BELOW -0xe5 0x1ed3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -0xe6 0x1ed5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -0xe7 0x1ed7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -0xe8 0x1ed1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -0xe9 0x1ed9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -0xea 0x1edd # LATIN SMALL LETTER O WITH HORN AND GRAVE -0xeb 0x1edf # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE -0xec 0x1ee1 # LATIN SMALL LETTER O WITH HORN AND TILDE -0xed 0x1edb # LATIN SMALL LETTER O WITH HORN AND ACUTE -0xee 0x1ee3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW -0xef 0x00f9 # LATIN SMALL LETTER U WITH GRAVE -0xf0 0x1ed6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -0xf1 0x1ee7 # LATIN SMALL LETTER U WITH HOOK ABOVE -0xf2 0x0169 # LATIN SMALL LETTER U WITH TILDE -0xf3 0x00fa # LATIN SMALL LETTER U WITH ACUTE -0xf4 0x1ee5 # LATIN SMALL LETTER U WITH DOT BELOW -0xf5 0x1eeb # LATIN SMALL LETTER U WITH HORN AND GRAVE -0xf6 0x1eed # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE -0xf7 0x1eef # LATIN SMALL LETTER U WITH HORN AND TILDE -0xf8 0x1ee9 # LATIN SMALL LETTER U WITH HORN AND ACUTE -0xf9 0x1ef1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW -0xfa 0x1ef3 # LATIN SMALL LETTER Y WITH GRAVE -0xfb 0x1ef7 # LATIN SMALL LETTER Y WITH HOOK ABOVE -0xfc 0x1ef9 # LATIN SMALL LETTER Y WITH TILDE -0xfd 0x00fd # LATIN SMALL LETTER Y WITH ACUTE -0xfe 0x1ef5 # LATIN SMALL LETTER Y WITH DOT BELOW -0xff 0x1ed0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE diff --git a/mozilla/lib/libi18n/unicode/fromftp/othertbls/viscii.txt b/mozilla/lib/libi18n/unicode/fromftp/othertbls/viscii.txt deleted file mode 100644 index 987b53709e0..00000000000 --- a/mozilla/lib/libi18n/unicode/fromftp/othertbls/viscii.txt +++ /dev/null @@ -1,278 +0,0 @@ -# -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. -# -# VISCII to Unicode conversion table -# Submit by Thu Nguyen <tnn@neomagic.com> -# Reference : http://www.vietstd.org/document/unicode.html -# -0x00 0x0000 -0x01 0x0001 -0x02 0x1EB2 -0x03 0x0003 -0x04 0x0004 -0x05 0x1EB4 -0x06 0x1EAA -0x07 0x0007 -0x08 0x0008 -0x09 0x0009 -0x0A 0x000A -0x0B 0x000B -0x0C 0x000C -0x0D 0x000D -0x0E 0x000E -0x0F 0x000F -0x10 0x0010 -0x11 0x0011 -0x12 0x0012 -0x13 0x0013 -0x14 0x1EF6 -0x15 0x0015 -0x16 0x0016 -0x17 0x0017 -0x18 0x0018 -0x19 0x1EF8 -0x1A 0x001A -0x1B 0x001B -0x1C 0x001C -0x1D 0x001D -0x1E 0x1EF4 -0x1F 0x001F -0x20 0x0020 -0x21 0x0021 -0x22 0x0022 -0x23 0x0023 -0x24 0x0024 -0x25 0x0025 -0x26 0x0026 -0x27 0x0027 -0x28 0x0028 -0x29 0x0029 -0x2A 0x002A -0x2B 0x002B -0x2C 0x002C -0x2D 0x002D -0x2E 0x002E -0x2F 0x002F -0x30 0x0030 -0x31 0x0031 -0x32 0x0032 -0x33 0x0033 -0x34 0x0034 -0x35 0x0035 -0x36 0x0036 -0x37 0x0037 -0x38 0x0038 -0x39 0x0039 -0x3A 0x003A -0x3B 0x003B -0x3C 0x003C -0x3D 0x003D -0x3E 0x003E -0x3F 0x003F -0x40 0x0040 -0x41 0x0041 -0x42 0x0042 -0x43 0x0043 -0x44 0x0044 -0x45 0x0045 -0x46 0x0046 -0x47 0x0047 -0x48 0x0048 -0x49 0x0049 -0x4A 0x004A -0x4B 0x004B -0x4C 0x004C -0x4D 0x004D -0x4E 0x004E -0x4F 0x004F -0x50 0x0050 -0x51 0x0051 -0x52 0x0052 -0x53 0x0053 -0x54 0x0054 -0x55 0x0055 -0x56 0x0056 -0x57 0x0057 -0x58 0x0058 -0x59 0x0059 -0x5A 0x005A -0x5B 0x005B -0x5C 0x005C -0x5D 0x005D -0x5E 0x005E -0x5F 0x005F -0x60 0x0060 -0x61 0x0061 -0x62 0x0062 -0x63 0x0063 -0x64 0x0064 -0x65 0x0065 -0x66 0x0066 -0x67 0x0067 -0x68 0x0068 -0x69 0x0069 -0x6A 0x006A -0x6B 0x006B -0x6C 0x006C -0x6D 0x006D -0x6E 0x006E -0x6F 0x006F -0x70 0x0070 -0x71 0x0071 -0x72 0x0072 -0x73 0x0073 -0x74 0x0074 -0x75 0x0075 -0x76 0x0076 -0x77 0x0077 -0x78 0x0078 -0x79 0x0079 -0x7A 0x007A -0x7B 0x007B -0x7C 0x007C -0x7D 0x007D -0x7E 0x007E -0x7F 0x007F -0x80 0x1EA0 -0x81 0x1EAE -0x82 0x1EB0 -0x83 0x1EB6 -0x84 0x1EA4 -0x85 0x1EA6 -0x86 0x1EA8 -0x87 0x1EAC -0x88 0x1EBC -0x89 0x1EB8 -0x8A 0x1EBE -0x8B 0x1EC0 -0x8C 0x1EC2 -0x8D 0x1EC4 -0x8E 0x1EC6 -0x8F 0x1ED0 -0x90 0x1ED2 -0x91 0x1ED4 -0x92 0x1ED6 -0x93 0x1ED8 -0x94 0x1EE2 -0x95 0x1EDA -0x96 0x1EDC -0x97 0x1EDE -0x98 0x1ECA -0x99 0x1ECE -0x9A 0x1ECC -0x9B 0x1EC8 -0x9C 0x1EE6 -0x9D 0x0168 -0x9E 0x1EE4 -0x9F 0x1EF2 -0xA0 0x00D5 -0xA1 0x1EAF -0xA2 0x1EB1 -0xA3 0x1EB7 -0xA4 0x1EA5 -0xA5 0x1EA7 -0xA6 0x1EA9 -0xA7 0x1EAD -0xA8 0x1EBD -0xA9 0x1EB9 -0xAA 0x1EBF -0xAB 0x1EC1 -0xAC 0x1EC3 -0xAD 0x1EC5 -0xAE 0x1EC7 -0xAF 0x1ED1 -0xB0 0x1ED3 -0xB1 0x1ED5 -0xB2 0x1ED7 -0xB3 0x1EE0 -0xB4 0x01A0 -0xB5 0x1ED9 -0xB6 0x1EDD -0xB7 0x1EDF -0xB8 0x1ECB -0xB9 0x1EF0 -0xBA 0x1EE8 -0xBB 0x1EEA -0xBC 0x1EEC -0xBD 0x01A1 -0xBE 0x1EDB -0xBF 0x01AF -0xC0 0x00C0 -0xC1 0x00C1 -0xC2 0x00C2 -0xC3 0x00C3 -0xC4 0x1EA2 -0xC5 0x0102 -0xC6 0x1EB3 -0xC7 0x1EB5 -0xC8 0x00C8 -0xC9 0x00C9 -0xCA 0x00CA -0xCB 0x1EBA -0xCC 0x00CC -0xCD 0x00CD -0xCE 0x0128 -0xCF 0x1EF3 -0xD0 0x0110 -0xD1 0x1EE9 -0xD2 0x00D2 -0xD3 0x00D3 -0xD4 0x00D4 -0xD5 0x1EA1 -0xD6 0x1EF7 -0xD7 0x1EEB -0xD8 0x1EED -0xD9 0x00D9 -0xDA 0x00DA -0xDB 0x1EF9 -0xDC 0x1EF5 -0xDD 0x00DD -0xDE 0x1EE1 -0xDF 0x01B0 -0xE0 0x00E0 -0xE1 0x00E1 -0xE2 0x00E2 -0xE3 0x00E3 -0xE4 0x1EA3 -0xE5 0x0103 -0xE6 0x1EEF -0xE7 0x1EAB -0xE8 0x00E8 -0xE9 0x00E9 -0xEA 0x00EA -0xEB 0x1EBB -0xEC 0x00EC -0xED 0x00ED -0xEE 0x0129 -0xEF 0x1EC9 -0xF0 0x0111 -0xF1 0x1EF1 -0xF2 0x00F2 -0xF3 0x00F3 -0xF4 0x00F4 -0xF5 0x00F5 -0xF6 0x1ECF -0xF7 0x1ECD -0xF8 0x1EE5 -0xF9 0x00F9 -0xFA 0x00FA -0xFB 0x0169 -0xFC 0x1EE7 -0xFD 0x00FD -0xFE 0x1EE3 -0xFF 0x1EEE - diff --git a/mozilla/lib/libi18n/unicode/fromftp/othertbls/vps.txt b/mozilla/lib/libi18n/unicode/fromftp/othertbls/vps.txt deleted file mode 100644 index 165c532d731..00000000000 --- a/mozilla/lib/libi18n/unicode/fromftp/othertbls/vps.txt +++ /dev/null @@ -1,275 +0,0 @@ -# -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. -# -# Submitted by Van Le <levan@hotmail.com> Aug 9, 1998 -# -0x00 0x0000 -0x01 0x0001 -0x02 0x1ea0 -0x03 0x1eac -0x04 0x1eb6 -0x05 0x1eb8 -0x06 0x1ec6 -0x07 0x0007 -0x08 0x0008 -0x09 0x0009 -0x0a 0x000a -0x0b 0x000b -0x0c 0x000c -0x0d 0x000d -0x0e 0x000e -0x0f 0x000f -0x10 0x1eca -0x11 0x1ecc -0x12 0x1ed8 -0x13 0x1ee2 -0x14 0x1ee4 -0x15 0x1ef0 -0x16 0x0016 -0x17 0x0017 -0x18 0x0018 -0x19 0x1ef4 -0x1a 0x001a -0x1b 0x001b -0x1c 0x1eaa -0x1d 0x1eee -0x1e 0x001e -0x1f 0x001f -0x20 0x0020 -0x21 0x0021 -0x22 0x0022 -0x23 0x0023 -0x24 0x0024 -0x25 0x0025 -0x26 0x0026 -0x27 0x0027 -0x28 0x0028 -0x29 0x0029 -0x2a 0x002a -0x2b 0x002b -0x2c 0x002c -0x2d 0x002d -0x2e 0x002e -0x2f 0x002f -0x30 0x0030 -0x31 0x0031 -0x32 0x0032 -0x33 0x0033 -0x34 0x0034 -0x35 0x0035 -0x36 0x0036 -0x37 0x0037 -0x38 0x0038 -0x39 0x0039 -0x3a 0x003a -0x3b 0x003b -0x3c 0x003c -0x3d 0x003d -0x3e 0x003e -0x3f 0x003f -0x40 0x0040 -0x41 0x0041 -0x42 0x0042 -0x43 0x0043 -0x44 0x0044 -0x45 0x0045 -0x46 0x0046 -0x47 0x0047 -0x48 0x0048 -0x49 0x0049 -0x4a 0x004a -0x4b 0x004b -0x4c 0x004c -0x4d 0x004d -0x4e 0x004e -0x4f 0x004f -0x50 0x0050 -0x51 0x0051 -0x52 0x0052 -0x53 0x0053 -0x54 0x0054 -0x55 0x0055 -0x56 0x0056 -0x57 0x0057 -0x58 0x0058 -0x59 0x0059 -0x5a 0x005a -0x5b 0x005b -0x5c 0x005c -0x5d 0x005d -0x5e 0x005e -0x5f 0x005f -0x60 0x0060 -0x61 0x0061 -0x62 0x0062 -0x63 0x0063 -0x64 0x0064 -0x65 0x0065 -0x66 0x0066 -0x67 0x0067 -0x68 0x0068 -0x69 0x0069 -0x6a 0x006a -0x6b 0x006b -0x6c 0x006c -0x6d 0x006d -0x6e 0x006e -0x6f 0x006f -0x70 0x0070 -0x71 0x0071 -0x72 0x0072 -0x73 0x0073 -0x74 0x0074 -0x75 0x0075 -0x76 0x0076 -0x77 0x0077 -0x78 0x0078 -0x79 0x0079 -0x7a 0x007a -0x7b 0x007b -0x7c 0x007c -0x7d 0x007d -0x7e 0x007e -0x7f 0x007f -0x80 0x00c0 -0x81 0x1ea2 -0x82 0x00c3 -0x83 0x1ea4 -0x84 0x1ea6 -0x85 0x1ea8 -0x86 0x1ecd -0x87 0x1ed7 -0x88 0x0102 -0x89 0x1ebf -0x8a 0x1ec1 -0x8b 0x1ec3 -0x8c 0x1ec7 -0x8d 0x1eae -0x8e 0x1eb0 -0x8f 0x1eb2 -0x90 0x1ebe -0x91 0x2018 -0x92 0x2019 -0x93 0x1ec0 -0x94 0x1ec2 -0x95 0x1ec4 -0x96 0x1ed0 -0x97 0x1ed2 -0x98 0x1ed4 -0x99 0x1ed6 -0x9a 0x00fd -0x9b 0x1ef7 -0x9c 0x1ef5 -0x9d 0x1eda -0x9e 0x1edc -0x9f 0x1ede -0xa0 0x00a0 -0xa1 0x1eaf -0xa2 0x1eb1 -0xa3 0x1eb3 -0xa4 0x1eb5 -0xa5 0x1eb7 -0xa6 0x1ee0 -0xa7 0x1edb -0xa8 0x00d9 -0xa9 0x1edd -0xaa 0x1edf -0xab 0x1ee1 -0xac 0x0168 -0xad 0x1ee8 -0xae 0x1ee3 -0xaf 0x1eea -0xb0 0x1ed5 -0xb1 0x1eec -0xb2 0x1ef2 -0xb3 0x1ef8 -0xb4 0x00cd -0xb5 0x00cc -0xb6 0x1ed9 -0xb7 0x1ec8 -0xb8 0x0128 -0xb9 0x00d3 -0xba 0x1eed -0xbb 0x1eef -0xbc 0x00d2 -0xbd 0x1ece -0xbe 0x00d5 -0xbf 0x1ef1 -0xc0 0x1ea7 -0xc1 0x00c1 -0xc2 0x00c2 -0xc3 0x1ea5 -0xc4 0x1ea9 -0xc5 0x1eab -0xc6 0x1ead -0xc7 0x0111 -0xc8 0x1ebb -0xc9 0x00c9 -0xca 0x00ca -0xcb 0x1eb9 -0xcc 0x1ec9 -0xcd 0x1ec5 -0xce 0x1ecb -0xcf 0x1ef9 -0xd0 0x01af -0xd1 0x1ee6 -0xd2 0x1ed3 -0xd3 0x1ed1 -0xd4 0x00d4 -0xd5 0x1ecf -0xd6 0x01a1 -0xd7 0x00c8 -0xd8 0x1eeb -0xd9 0x1ee9 -0xda 0x00da -0xdb 0x0169 -0xdc 0x01b0 -0xdd 0x00dd -0xde 0x1eba -0xdf 0x00df -0xe0 0x00e0 -0xe1 0x00e1 -0xe2 0x00e2 -0xe3 0x00e3 -0xe4 0x1ea3 -0xe5 0x1ea1 -0xe6 0x0103 -0xe7 0x00e7 -0xe8 0x00e8 -0xe9 0x00e9 -0xea 0x00ea -0xeb 0x1ebd -0xec 0x00ec -0xed 0x00ed -0xee 0x00ee -0xef 0x0129 -0xf0 0x1eb4 -0xf1 0x0110 -0xf2 0x00f2 -0xf3 0x00f3 -0xf4 0x00f4 -0xf5 0x00f5 -0xf6 0x00f6 -0xf7 0x01a0 -0xf8 0x1ee5 -0xf9 0x00f9 -0xfa 0x00fa -0xfb 0x1ee7 -0xfc 0x00fc -0xfd 0x1ef6 -0xfe 0x1ebc -0xff 0x1ef3 diff --git a/mozilla/lib/libi18n/unicode/makefile.win b/mozilla/lib/libi18n/unicode/makefile.win deleted file mode 100755 index 651c9c93bdf..00000000000 --- a/mozilla/lib/libi18n/unicode/makefile.win +++ /dev/null @@ -1,96 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - - - -IGNORE_MANIFEST=1 -#//------------------------------------------------------------------------ -#// -#// Makefile to build the unicode converter library -#// -#//------------------------------------------------------------------------ - -#//------------------------------------------------------------------------ -#// -#// Specify the depth of the current directory relative to the -#// root of NS -#// -#//------------------------------------------------------------------------ -DEPTH= ..\..\.. - -MAKE_OBJ_TYPE=DLL - -#//------------------------------------------------------------------------ -#// -#// Define any Public Make Variables here: (ie. PDFFILE, MAPFILE, ...) -#// -#//------------------------------------------------------------------------ -DLLNAME=uni$(MOZ_BITS)00 -PDBFILE=$(DLLNAME).pdb -MAPFILE=$(DLLNAME).map -RESFILE=unitable.res - -!if "$(MOZ_BITS)" == "16" -DEFFILE=$(DLLNAME).def -!endif -#//------------------------------------------------------------------------ -#// -#// Define the files necessary to build the target (ie. OBJS) -#// -#//------------------------------------------------------------------------ -OBJS= \ - .\$(OBJDIR)\unitbl.obj \ - $(NULL) - -DLL=.\$(OBJDIR)\$(DLLNAME).dll -LIBRARY=.\$(OBJDIR)\$(DLLNAME).lib - -#//------------------------------------------------------------------------ -#// -#// Define any local options for the make tools -#// (ie. LCFLAGS, LLFLAGS, LLIBS, LINCS) -#// -#//------------------------------------------------------------------------ -!if "$(MOZ_BITS)"=="32" && defined(MOZ_DEBUG) && defined(GLOWCODE) -LLIBS=$(LLIBS) $(GLOWDIR)\glowcode.lib -!endif -LINCS=$(LINCS) -I_gen -I$(DEPTH)/include -I$(PUBLIC)\dbm -I$(PUBLIC)\img -LCFLAGS = $(LCFLAGS) /Fr$*.sbr -GARBAGE = $(GARBAGE) *.sbr -!ifdef ALL_UNICODE_TABLE -!if "$(MOZ_BITS)" == "32" -RCFLAGS=$(RCFLAGS) /DALL_UNICODE_TABLE /DXP_WIN32 -!else -RCFLAGS=$(RCFLAGS) /DALL_UNICODE_TABLE -!endif -!else -!if "$(MOZ_BITS)" == "32" -RCFLAGS=$(RCFLAGS) /DXP_WIN32 -!endif -!endif - -#//------------------------------------------------------------------------ -#// -#// Include the common makefile rules -#// -#//------------------------------------------------------------------------ -include <$(DEPTH)/config/rules.mak> - -install:: $(DLL) $(LIBRARY) - $(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin - $(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).lib $(DIST)\lib - diff --git a/mozilla/lib/libi18n/unicode/tbltool/Makefile b/mozilla/lib/libi18n/unicode/tbltool/Makefile deleted file mode 100644 index eb6c4588afd..00000000000 --- a/mozilla/lib/libi18n/unicode/tbltool/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - - - -INCLUDES = -I../.. -BIN_SUFFIX = .exe -ifneq ($(subst /,_,$(shell uname -s)),OS2) -.c.o: - cc -c $(CFLAGS) $(INCLUDES) $*.c -else -.c.o: - icc -c -Fo$*.o $(CFLAGS) $(INCLUDES) $*.c - -endif - -all: fromu$(BIN_SUFFIX) tou$(BIN_SUFFIX) fromu0208$(BIN_SUFFIX) \ - tou0208$(BIN_SUFFIX) xlatgen$(BIN_SUFFIX) xlatgenmac$(BIN_SUFFIX) - -xlatgenmac$(BIN_SUFFIX): xlatgenmac.o xlatgenutil.o - ILINK -NOFREE -PMTYPE:VIO $?; - -xlatgen$(BIN_SUFFIX): xlatgen.o - ILINK -NOFREE -PMTYPE:VIO $?; - -fromu$(BIN_SUFFIX): fromu.o utblutil.o - ILINK -NOFREE -PMTYPE:VIO $?; - -tou$(BIN_SUFFIX): tou.o utblutil.o - ILINK -NOFREE -PMTYPE:VIO $?; - -fromu0208$(BIN_SUFFIX): fromu0208.o utblutil.o - ILINK -NOFREE -PMTYPE:VIO $?; - -tou0208$(BIN_SUFFIX): tou0208.o utblutil.o - ILINK -NOFREE -PMTYPE:VIO $?; - -utblutil.o$(BIN_SUFFIX): ../../umap.h - ILINK -NOFREE -PMTYPE:VIO $?; - diff --git a/mozilla/lib/libi18n/unicode/tbltool/Makefile.in b/mozilla/lib/libi18n/unicode/tbltool/Makefile.in deleted file mode 100644 index eb6c4588afd..00000000000 --- a/mozilla/lib/libi18n/unicode/tbltool/Makefile.in +++ /dev/null @@ -1,54 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - - - -INCLUDES = -I../.. -BIN_SUFFIX = .exe -ifneq ($(subst /,_,$(shell uname -s)),OS2) -.c.o: - cc -c $(CFLAGS) $(INCLUDES) $*.c -else -.c.o: - icc -c -Fo$*.o $(CFLAGS) $(INCLUDES) $*.c - -endif - -all: fromu$(BIN_SUFFIX) tou$(BIN_SUFFIX) fromu0208$(BIN_SUFFIX) \ - tou0208$(BIN_SUFFIX) xlatgen$(BIN_SUFFIX) xlatgenmac$(BIN_SUFFIX) - -xlatgenmac$(BIN_SUFFIX): xlatgenmac.o xlatgenutil.o - ILINK -NOFREE -PMTYPE:VIO $?; - -xlatgen$(BIN_SUFFIX): xlatgen.o - ILINK -NOFREE -PMTYPE:VIO $?; - -fromu$(BIN_SUFFIX): fromu.o utblutil.o - ILINK -NOFREE -PMTYPE:VIO $?; - -tou$(BIN_SUFFIX): tou.o utblutil.o - ILINK -NOFREE -PMTYPE:VIO $?; - -fromu0208$(BIN_SUFFIX): fromu0208.o utblutil.o - ILINK -NOFREE -PMTYPE:VIO $?; - -tou0208$(BIN_SUFFIX): tou0208.o utblutil.o - ILINK -NOFREE -PMTYPE:VIO $?; - -utblutil.o$(BIN_SUFFIX): ../../umap.h - ILINK -NOFREE -PMTYPE:VIO $?; - diff --git a/mozilla/lib/libi18n/unicode/tbltool/fromu.c b/mozilla/lib/libi18n/unicode/tbltool/fromu.c deleted file mode 100644 index 1ed1be2b212..00000000000 --- a/mozilla/lib/libi18n/unicode/tbltool/fromu.c +++ /dev/null @@ -1,32 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#include <stdio.h> -extern void SetMapValue(short u,short c); -void getinput() -{ - char buf[256]; - short c,u,idx; - for(;gets(buf)!=NULL;) - { - if(buf[0]=='0' && buf[1] == 'x') - { - sscanf(buf,"%hx %hx",&c,&u); - SetMapValue(u, c); - } - } -} diff --git a/mozilla/lib/libi18n/unicode/tbltool/fromu0208.c b/mozilla/lib/libi18n/unicode/tbltool/fromu0208.c deleted file mode 100644 index 2b6aa9d5cc5..00000000000 --- a/mozilla/lib/libi18n/unicode/tbltool/fromu0208.c +++ /dev/null @@ -1,32 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#include <stdio.h> -extern void SetMapValue(short u,short c); -void getinput() -{ - char buf[256]; - short c,d,u,idx; - for(;gets(buf)!=NULL;) - { - if(buf[0]=='0' && buf[1] == 'x') - { - sscanf(buf,"%hx %hx %hx",&d,&c,&u); - SetMapValue(u, c); - } - } -} diff --git a/mozilla/lib/libi18n/unicode/tbltool/tou.c b/mozilla/lib/libi18n/unicode/tbltool/tou.c deleted file mode 100644 index 8dd10ec9924..00000000000 --- a/mozilla/lib/libi18n/unicode/tbltool/tou.c +++ /dev/null @@ -1,32 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#include <stdio.h> -extern void SetMapValue(short u,short c); -void getinput() -{ - char buf[256]; - short c,u,idx; - for(;gets(buf)!=NULL;) - { - if(buf[0]=='0' && buf[1] == 'x') - { - sscanf(buf,"%hx %hx",&c,&u); - SetMapValue(c, u); - } - } -} diff --git a/mozilla/lib/libi18n/unicode/tbltool/tou0208.c b/mozilla/lib/libi18n/unicode/tbltool/tou0208.c deleted file mode 100644 index 2db11b668fd..00000000000 --- a/mozilla/lib/libi18n/unicode/tbltool/tou0208.c +++ /dev/null @@ -1,32 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#include <stdio.h> -extern void SetMapValue(short u,short c); -void getinput() -{ - char buf[256]; - short c,u,d,idx; - for(;gets(buf)!=NULL;) - { - if(buf[0]=='0' && buf[1] == 'x') - { - sscanf(buf,"%hx %hx %hx",&d,&c,&u); - SetMapValue(c, u); - } - } -} diff --git a/mozilla/lib/libi18n/unicode/tbltool/utblutil.c b/mozilla/lib/libi18n/unicode/tbltool/utblutil.c deleted file mode 100644 index ce9d38725b9..00000000000 --- a/mozilla/lib/libi18n/unicode/tbltool/utblutil.c +++ /dev/null @@ -1,360 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#include <stdio.h> -typedef short int16; -typedef unsigned short uint16; -#include "umap.h" -uint16 umap[256][256]; -extern void getinput(); - -#define MAXCELLNUM 1000 - -static int numOfItem = 0; -uMapCell cell[MAXCELLNUM]; -uint16 format[MAXCELLNUM / 4]; -uint16 mapping[256*256]; -static int mappinglen = 0; -static int formatcount[4] = {0,0,0,0}; - -#define SetFormat(n,f) { format[(n >> 2)] |= ((f) << ((n & 0x0003) << 2)); formatcount[f]++; } -#define GetFormat(n) ( format[(n >> 2)] >> ((n & 0x0003) << 2)) &0x00FF) -#define MAPVALUE(i) (umap[(i >> 8) & 0xFF][(i) & 0xFF]) - -int FORMAT1CNST = 10 ; -int FORMAT0CNST = 5 ; -void initmaps() -{ - int i,j; - for(i=0;i<256;i++) - for(j=0;j<256;j++) - { - umap[i][j]= NOMAPPING; - } - for(i=0;i<MAXCELLNUM / 4;i++) - format[i]=0; -} -void SetMapValue(short u,short c) -{ - MAPVALUE(u) = c & 0x0000FFFF; -} -void AddFormat2(uint16 srcBegin) -{ - uint16 destBegin = MAPVALUE(srcBegin); - printf("Begin of Item %04X\n",numOfItem); - printf(" Format 2\n"); - printf(" srcBegin = %04X\n", srcBegin); - printf(" destBegin = %04X\n", destBegin ); - SetFormat(numOfItem,2); - cell[numOfItem].fmt.format2.srcBegin = srcBegin; - cell[numOfItem].fmt.format2.srcEnd = 0; - cell[numOfItem].fmt.format2.destBegin = destBegin; - printf("End of Item %04X \n\n",numOfItem); - numOfItem++; - /* Unmark the umap */ - MAPVALUE(srcBegin) = NOMAPPING; -} -void AddFormat1(uint16 srcBegin, uint16 srcEnd) -{ - uint16 i; - printf("Begin of Item %04X\n",numOfItem); - printf(" Format 1\n"); - printf(" srcBegin = %04X\n", srcBegin); - printf(" srcEnd = %04X\n", srcEnd ); - printf(" mappingOffset = %04X\n", mappinglen); - printf(" Mapping = " ); - SetFormat(numOfItem,1); - cell[numOfItem].fmt.format1.srcBegin = srcBegin; - cell[numOfItem].fmt.format1.srcEnd = srcEnd; - cell[numOfItem].fmt.format1.mappingOffset = mappinglen; - for(i=srcBegin ; i <= srcEnd ; i++,mappinglen++) - { - if( ((i-srcBegin) % 8) == 0) - printf("\n "); - mapping[mappinglen]= MAPVALUE(i); - printf("%04X ",(mapping[mappinglen] )); - /* Unmark the umap */ - MAPVALUE(i) = NOMAPPING; - } - printf("\n"); - printf("End of Item %04X \n\n",numOfItem); - numOfItem++; -} -void AddFormat0(uint16 srcBegin, uint16 srcEnd) -{ - uint16 i; - uint16 destBegin = MAPVALUE(srcBegin); - printf("Begin of Item %04X\n",numOfItem); - printf(" Format 0\n"); - printf(" srcBegin = %04X\n", srcBegin); - printf(" srcEnd = %04X\n", srcEnd ); - printf(" destBegin = %04X\n", destBegin ); - SetFormat(numOfItem,0); - cell[numOfItem].fmt.format0.srcBegin = srcBegin; - cell[numOfItem].fmt.format0.srcEnd = srcEnd; - cell[numOfItem].fmt.format0.destBegin = destBegin; - for(i=srcBegin ; i <= srcEnd ; i++) - { - /* Unmark the umap */ - MAPVALUE(i) = NOMAPPING; - } - printf("End of Item %04X \n\n",numOfItem); - numOfItem++; -} -void gentable() -{ - /* OK! For now, we just use format 1 for each row */ - /* We need to chage this to use other format to save the space */ - uint16 i,j,k; - uint16 begin,end; - uint16 ss,gs,gp,state,gc; - uint16 diff, lastdiff; - - printf("/*========================================================\n"); - printf(" This is a Generated file. Please don't edit it.\n"); - printf("\n"); - printf(" The tool which used to generate this file is called fromu.\n"); - printf(" If you have any problem of this file. Please contact \n"); - printf(" Netscape Client International Team or \n"); - printf(" ftang@netscape <Frank Tang> \n"); - printf("\n"); - printf(" Table in Debug form \n"); - - for(begin = 0; MAPVALUE(begin) ==NOMAPPING; begin++) - ; - for(end = 0xFFFF; MAPVALUE(end) ==NOMAPPING; end--) - ; - if(end != begin) - { - lastdiff = MAPVALUE(begin) - begin; - for(gp=begin+1,state = 0 ; gp<=end; gp++) - { - int input ; - diff = MAPVALUE(gp) - gp; - input = (diff == lastdiff); - switch(state) - { - case 0: - if(input) - { - state = 1; - ss = gp -1; - gc = 2; - } - break; - case 1: - if(input) - { - if(gc++ >= FORMAT0CNST) - { - state = 2; - } - } - else - { - state = 0; - } - break; - case 2: - if(input) - { - } - else - { - AddFormat0(ss,gp-1); - state = 0; - } - break; - } - - lastdiff = diff; - } - } - if(state == 2) - AddFormat0(ss,end); - - for(;(MAPVALUE(begin) ==NOMAPPING) && (begin <= end); begin++) - ; - if(begin <= end) - { - for(;(MAPVALUE(end)==NOMAPPING) && (end >= begin); end--) - ; - for(ss=gp=begin,state = 0 ; gp<=end; gp++) - { - int input = (MAPVALUE(gp) == NOMAPPING); - switch(state) - { - case 0: - if(input) - { - gc = 1; - gs = gp; - state = 1; - } - break; - case 1: - if(input) - { - if(gc++ >= FORMAT1CNST) - state = 2; - } - else - state = 0; - break; - case 2: - if(input) - { - } - else - { - if(gs == (ss+1)) - AddFormat2(ss); - else - AddFormat1(ss ,gs-1); - state = 0; - ss = gp; - } - break; - } - } - if(end == ss) - AddFormat2(ss ); - else - AddFormat1(ss ,end ); - } - printf("========================================================*/\n"); -} -void writetable() -{ - uint16 i; - uint16 off1,off2,off3; - uint16 cur = 0; - uint16 formatitem = (((numOfItem)>>2) + 1); - off1 = 4; - off2 = off1 + formatitem ; - off3 = off2 + numOfItem * sizeof(uMapCell) / sizeof(uint16); - /* write itemOfList */ - printf("/* Offset=0x%04X ItemOfList */\n 0x%04X,\n", cur++, numOfItem); - - /* write offsetToFormatArray */ - printf("/*-------------------------------------------------------*/\n"); - printf("/* Offset=0x%04X offsetToFormatArray */\n 0x%04X,\n", cur++,off1); - - /* write offsetToMapCellArray */ - printf("/*-------------------------------------------------------*/\n"); - printf("/* Offset=0x%04X offsetToMapCellArray */ \n 0x%04X,\n", cur++,off2); - - /* write offsetToMappingTable */ - printf("/*-------------------------------------------------------*/\n"); - printf("/* Offset=0x%04X offsetToMappingTable */ \n 0x%04X,\n", cur++,off3); - - /* write FormatArray */ - printf("/*-------------------------------------------------------*/\n"); - printf("/* Offset=0x%04X Start of Format Array */ \n",cur); - printf("/* Total of Format 0 : 0x%04X */\n" - , formatcount[0]); - printf("/* Total of Format 1 : 0x%04X */\n" - , formatcount[1]); - printf("/* Total of Format 2 : 0x%04X */\n" - , formatcount[2]); - printf("/* Total of Format 3 : 0x%04X */\n" - , formatcount[3]); - for(i=0;i<formatitem;i++,cur++) - { - if((i%8) == 0) - printf("\n"); - printf("0x%04X, ",format[i]); - } - printf("\n"); - - /* write MapCellArray */ - printf("/*-------------------------------------------------------*/\n"); - printf("/* Offset=0x%04X Start of MapCell Array */ \n",cur); - for(i=0;i<numOfItem;i++,cur+=3) - { - printf("/* %04X */ 0x%04X, 0x%04X, 0x%04X, \n", - i, - cell[i].fmt.format0.srcBegin, - cell[i].fmt.format0.srcEnd, - cell[i].fmt.format0.destBegin - ); - } - - /* write MappingTable */ - printf("/*-------------------------------------------------------*/\n"); - printf("/* Offset=0x%04X Start of MappingTable */ \n",cur); - for(i=0;i<mappinglen;i++,cur++) - { - if((i%8) == 0) - printf("\n/* %04X */ ",i); - printf("0x%04X, ",mapping[i] ); - } - printf("\n"); - printf("/* End of table Total Length = 0x%04X * 2 */\n",cur); -} - -parsearg(int argc, char* argv[]) -{ - int i; - for(i=0;i<argc;i++) - { - if((strncmp("-0", argv[i],2) == 0) && ((i+1) < argc)) - { - int cnst0; - if(sscanf(argv[i+1], "%d", &cnst0) == 1) - { - if(cnst0 > 0) - { - FORMAT0CNST = cnst0; - } - } - else - { - fprintf(stderr, "argc error !!!!\n"); - exit(-1); - } - i++; - } - if((strncmp("-1", argv[i],2) == 0) && ((i+1) < argc)) - { - int cnst1; - if(sscanf(argv[i+1], "%d", &cnst1) == 1) - { - if(cnst1 > 0) - { - FORMAT1CNST = cnst1; - } - } - else - { - fprintf(stderr, "argc error !!!!\n"); - exit(-1); - } - i++; - } - } - fprintf(stderr, "format 0 cnst = %d\n", FORMAT0CNST); - fprintf(stderr, "format 1 cnst = %d\n", FORMAT1CNST); -} -main(int argc, char* argv[]) -{ - parsearg(argc, argv); - initmaps(); - getinput(); - gentable(); - writetable(); -} diff --git a/mozilla/lib/libi18n/unicode/tbltool/xlatgen.c b/mozilla/lib/libi18n/unicode/tbltool/xlatgen.c deleted file mode 100644 index 9900d6caedf..00000000000 --- a/mozilla/lib/libi18n/unicode/tbltool/xlatgen.c +++ /dev/null @@ -1,190 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* - single filename1 filename2 -*/ -#include <stdio.h> -#include <stdlib.h> -/* -#define DEBUG 1 -*/ -#ifdef DEBUG -#define Trace(a) {fprintf(stderr,"Trace: %s\n",a); fflush(stderr); } -#else -#define Trace(a) -#endif - -static char *name1; -static char *name2; - -static unsigned short array1[256],array2[256]; - -void TraceNum(int a) -{ - char buf[20]; - sprintf(buf, "[%X]",a); - Trace(buf); -} -void usage() -{ - fprintf(stderr,"Usage: xlatgen filename1 filename2 csid1 csid2\n"); - exit(-1); -} -void InitArray(unsigned short array[]) -{ - int i; - for(i=0;i<32;i++) - array[i]= i; - for(i=32;i<256;i++) - array[i]= 0xFFFD; - array[0x7F]= 0x7F; - array[0xFF]= 0xFF; -} -void TraceArray(char* name,unsigned short array[]) -{ - int i,j; - char buf[128]; - Trace(name); - for(i=0;i<256;i+=16) - { - sprintf(buf,"0x%2X: ",i); - for(j=0;j<16;j++) - { - sprintf(buf,"%s %4X",buf, array[i+j]); - } - Trace(buf); - } -} -void Quit(char* str) -{ - Trace(str); - exit(-1); -} -void ReadArray(char* name,unsigned short array[]) -{ - int i; - char buf[80]; - FILE *fd; - fd = fopen(name, "r"); - - if(fd == NULL) - Quit("Cannot open file\n"); - Trace("File open ok"); - while(fgets(buf,80,fd)) - { - if(buf[0] != '#') - { - int from; - int to; - sscanf(buf,"%x %x", &from, &to); - array[(from & 0x00FF)] = (to & 0x0000FFFF); - } - } - fclose(fd); -} -void ReportUnmap( unsigned short array1[], unsigned short array2[]) -{ - int i,j,found; - int k; - k=0; - for(i=0;i<256;i++) - { - for(found=0,j=0;j<256;j++) - { - if(array1[i] == array2[j]) - { - found = 1; - break; - } - } - if(found == 0) - { - printf("/* %2X is unmap !!! */\n", i); - k++; - } - } - if(k!=0) - { - printf("/* There are total %d character unmap !! */\n",k); - } -} -void GenMap(char* name1, char* name2, char* csid1, char* csid2, - unsigned short array1[], unsigned short array2[]) -{ - int i,j,found; - - printf("%s_TO_%s RCDATA\nBEGIN\n",csid1, csid2); - printf("/* Translation %s -> %s */\n",name1, name2); - ReportUnmap(array1,array2); - for(i=0;i<256;i+=2) - { - if((i%16) == 0) - printf("/*%Xx*/ ",i/16); - printf("0x"); - - for(found=0,j=0;j<256;j++) - { - if(array1[i+1] == array2[j]) - { - printf("%02X",j); - found = 1; - break; - } - } - if(found == 0) - printf("%2X",i+1); - - for(found=0,j=0;j<256;j++) - { - if(array1[i] == array2[j]) - { - printf("%02X",j); - found = 1; - break; - } - } - if(found == 0) - printf("%2X",i); - - printf(", "); - if((i%16) == 14) - printf("\n"); - } - printf("END /* End of %s_To_%s */\n\n", csid1, csid2); -} -main(int argc, char* argv[]) -{ - - if(argc!=5) - usage(); - - InitArray(array1); - InitArray(array2); - - Trace(argv[1]); - ReadArray(argv[1],array1); - TraceArray(argv[1],array1); - - Trace(argv[2]); - ReadArray(argv[2],array2); - TraceArray(argv[2],array2); - - GenMap(argv[1], argv[2], argv[3], argv[4],array1,array2 ); - printf("\n\n\n\n\n"); - GenMap(argv[2], argv[1], argv[4], argv[3], array2,array1 ); -} diff --git a/mozilla/lib/libi18n/unicode/tbltool/xlatgenmac.c b/mozilla/lib/libi18n/unicode/tbltool/xlatgenmac.c deleted file mode 100644 index 98b67e56fce..00000000000 --- a/mozilla/lib/libi18n/unicode/tbltool/xlatgenmac.c +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* - single filename1 filename2 -*/ -#include <stdio.h> -#include <stdlib.h> - -void GenMap(char* name1, char* name2, - unsigned short array1[], unsigned short array2[]) -{ - int i,j,found; - - printf("/* Translation %s -> %s */\n",name1, name2); - ReportUnmap(array1,array2); - printf("/* x0x1 x2x3 x4x5 x6x7 x8x9 xAxB xCxD xExF */\n"); - for(i=0;i<256;i++) - { - if((i%16) == 0) - printf("/*%Xx*/ $\"",i/16); - for(found=0,j=0;j<256;j++) - { - if(array1[i] == array2[j]) - { - printf("%02X",j); - found = 1; - break; - } - } - if(found == 0) - { - printf("%2X",i); - } - if((i%16) == 15) - printf("\"\n"); - else if(i%2) - printf(" "); - } -} diff --git a/mozilla/lib/libi18n/unicode/tbltool/xlatgenutil.c b/mozilla/lib/libi18n/unicode/tbltool/xlatgenutil.c deleted file mode 100644 index d4d42b13334..00000000000 --- a/mozilla/lib/libi18n/unicode/tbltool/xlatgenutil.c +++ /dev/null @@ -1,147 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* - single filename1 filename2 -*/ -#include <stdio.h> -#include <stdlib.h> -/* -#define DEBUG 1 -*/ -#ifdef DEBUG -#define Trace(a) {fprintf(stderr,"Trace: %s\n",a); fflush(stderr); } -#else -#define Trace(a) -#endif - -static char *name1; -static char *name2; - -static unsigned short array1[256],array2[256]; - -void TraceNum(int a) -{ - char buf[20]; - sprintf(buf, "[%X]",a); - Trace(buf); -} -void usage() -{ - fprintf(stderr,"Usage: single filename1 filename2\n"); - exit(-1); -} -void InitArray(unsigned short array[]) -{ - int i; - for(i=0;i<32;i++) - array[i]= i; - for(i=32;i<256;i++) - array[i]= 0xFFFD; - array[0x7F]= 0x7F; - array[0xFF]= 0xFF; -} -void TraceArray(char* name,unsigned short array[]) -{ - int i,j; - char buf[128]; - Trace(name); - for(i=0;i<256;i+=16) - { - sprintf(buf,"0x%2X: ",i); - for(j=0;j<16;j++) - { - sprintf(buf,"%s %4X",buf, array[i+j]); - } - Trace(buf); - } -} -void Quit(char* str) -{ - Trace(str); - exit(-1); -} -void ReadArray(char* name,unsigned short array[]) -{ - int i; - char buf[80]; - FILE *fd; - fd = fopen(name, "r"); - - if(fd == NULL) - Quit("Cannot open file\n"); - Trace("File open ok"); - while(fgets(buf,80,fd)) - { - if(buf[0] != '#') - { - int from; - int to; - sscanf(buf,"%x %x", &from, &to); - array[(from & 0x00FF)] = (to & 0x0000FFFF); - } - } - fclose(fd); -} -void ReportUnmap( unsigned short array1[], unsigned short array2[]) -{ - int i,j,found; - int k; - k=0; - for(i=0;i<256;i++) - { - for(found=0,j=0;j<256;j++) - { - if(array1[i] == array2[j]) - { - found = 1; - break; - } - } - if(found == 0) - { - printf("/* %2X is unmap !!! */\n", i); - k++; - } - } - if(k!=0) - { - printf("/* There are total %d character unmap !! */\n",k); - } -} -extern void GenMap(char* name1, char* name2, - unsigned short array1[], unsigned short array2[]); -main(int argc, char* argv[]) -{ - - if(argc!=3) - usage(); - - InitArray(array1); - InitArray(array2); - - Trace(argv[1]); - ReadArray(argv[1],array1); - TraceArray(argv[1],array1); - - Trace(argv[2]); - ReadArray(argv[2],array2); - TraceArray(argv[2],array2); - - GenMap(argv[1], argv[2], array1,array2); - GenMap(argv[2], argv[1], array2,array1); -} diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-1.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/8859-1.uf deleted file mode 100644 index 8f1adc0895d..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-1.uf +++ /dev/null @@ -1,68 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007E - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A0 - srcEnd = 00FF - destBegin = 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0000 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007E, 0x0000, -/* 0001 */ 0x00A0, 0x00FF, 0x00A0, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* End of table Total Length = 0x000B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-2.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/8859-2.uf deleted file mode 100644 index b5b4baba679..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-2.uf +++ /dev/null @@ -1,145 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 011B - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD FFFD 00A4 FFFD FFFD 00A7 - 00A8 FFFD FFFD FFFD FFFD 00AD FFFD FFFD - 00B0 FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - 00B8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00C1 00C2 FFFD 00C4 FFFD FFFD 00C7 - FFFD 00C9 FFFD 00CB FFFD 00CD 00CE FFFD - FFFD FFFD FFFD 00D3 00D4 FFFD 00D6 00D7 - FFFD FFFD 00DA FFFD 00DC 00DD FFFD 00DF - FFFD 00E1 00E2 FFFD 00E4 FFFD FFFD 00E7 - FFFD 00E9 FFFD 00EB FFFD 00ED 00EE FFFD - FFFD FFFD FFFD 00F3 00F4 FFFD 00F6 00F7 - FFFD FFFD 00FA FFFD 00FC 00FD FFFD FFFD - FFFD FFFD 00C3 00E3 00A1 00B1 00C6 00E6 - FFFD FFFD FFFD FFFD 00C8 00E8 00CF 00EF - 00D0 00F0 FFFD FFFD FFFD FFFD FFFD FFFD - 00CA 00EA 00CC 00EC -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0139 - srcEnd = 017E - mappingOffset = 007C - Mapping = - 00C5 00E5 FFFD FFFD 00A5 00B5 FFFD FFFD - 00A3 00B3 00D1 00F1 FFFD FFFD 00D2 00F2 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 00D5 - 00F5 FFFD FFFD 00C0 00E0 FFFD FFFD 00D8 - 00F8 00A6 00B6 FFFD FFFD 00AA 00BA 00A9 - 00B9 00DE 00FE 00AB 00BB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00D9 00F9 00DB - 00FB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00AC 00BC 00AF 00BF 00AE 00BE -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 02C7 - destBegin = 00B7 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 00C2 - Mapping = - 00A2 00FF FFFD 00B2 FFFD 00BD -End of Item 0004 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0003 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x2110, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A0, 0x011B, 0x0000, -/* 0002 */ 0x0139, 0x017E, 0x007C, -/* 0003 */ 0x02C7, 0x0000, 0x00B7, -/* 0004 */ 0x02D8, 0x02DD, 0x00C2, -/*-------------------------------------------------------*/ -/* Offset=0x0015 Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A4, 0xFFFD, 0xFFFD, 0x00A7, -/* 0008 */ 0x00A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00B0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0x00B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0xFFFD, 0x00C1, 0x00C2, 0xFFFD, 0x00C4, 0xFFFD, 0xFFFD, 0x00C7, -/* 0028 */ 0xFFFD, 0x00C9, 0xFFFD, 0x00CB, 0xFFFD, 0x00CD, 0x00CE, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00D3, 0x00D4, 0xFFFD, 0x00D6, 0x00D7, -/* 0038 */ 0xFFFD, 0xFFFD, 0x00DA, 0xFFFD, 0x00DC, 0x00DD, 0xFFFD, 0x00DF, -/* 0040 */ 0xFFFD, 0x00E1, 0x00E2, 0xFFFD, 0x00E4, 0xFFFD, 0xFFFD, 0x00E7, -/* 0048 */ 0xFFFD, 0x00E9, 0xFFFD, 0x00EB, 0xFFFD, 0x00ED, 0x00EE, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00F3, 0x00F4, 0xFFFD, 0x00F6, 0x00F7, -/* 0058 */ 0xFFFD, 0xFFFD, 0x00FA, 0xFFFD, 0x00FC, 0x00FD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0x00C3, 0x00E3, 0x00A1, 0x00B1, 0x00C6, 0x00E6, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C8, 0x00E8, 0x00CF, 0x00EF, -/* 0070 */ 0x00D0, 0x00F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0x00CA, 0x00EA, 0x00CC, 0x00EC, 0x00C5, 0x00E5, 0xFFFD, 0xFFFD, -/* 0080 */ 0x00A5, 0x00B5, 0xFFFD, 0xFFFD, 0x00A3, 0x00B3, 0x00D1, 0x00F1, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00D2, 0x00F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00D5, 0x00F5, 0xFFFD, 0xFFFD, 0x00C0, -/* 0098 */ 0x00E0, 0xFFFD, 0xFFFD, 0x00D8, 0x00F8, 0x00A6, 0x00B6, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00AA, 0x00BA, 0x00A9, 0x00B9, 0x00DE, 0x00FE, 0x00AB, -/* 00A8 */ 0x00BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0x00D9, 0x00F9, 0x00DB, 0x00FB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AC, 0x00BC, 0x00AF, 0x00BF, -/* 00C0 */ 0x00AE, 0x00BE, 0x00A2, 0x00FF, 0xFFFD, 0x00B2, 0xFFFD, 0x00BD, -/* End of table Total Length = 0x00DD * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-3.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/8859-3.uf deleted file mode 100644 index c3dd83511e4..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-3.uf +++ /dev/null @@ -1,190 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00C7 - srcEnd = 00CF - destBegin = 00C7 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00E7 - srcEnd = 00EF - destBegin = 00E7 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00C4 - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD 00A3 00A4 FFFD FFFD 00A7 - 00A8 FFFD FFFD FFFD FFFD 00AD FFFD FFFD - 00B0 FFFD 00B2 00B3 00B4 00B5 FFFD 00B7 - 00B8 FFFD FFFD FFFD FFFD 00BD FFFD FFFD - 00C0 00C1 00C2 FFFD 00C4 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00D1 - srcEnd = 00E4 - mappingOffset = 0025 - Mapping = - 00D1 00D2 00D3 00D4 FFFD 00D6 00D7 FFFD - 00D9 00DA 00DB 00DC FFFD FFFD 00DF 00E0 - 00E1 00E2 FFFD 00E4 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00F1 - srcEnd = 00FC - mappingOffset = 0039 - Mapping = - 00F1 00F2 00F3 00F4 FFFD 00F6 00F7 FFFD - 00F9 00FA 00FB 00FC -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 0108 - srcEnd = 010B - mappingOffset = 0045 - Mapping = - 00C6 00E6 00C5 00E5 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 011C - srcEnd = 0135 - mappingOffset = 0049 - Mapping = - 00D8 00F8 00AB 00BB 00D5 00F5 FFFD FFFD - 00A6 00B6 00A1 00B1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00A9 00B9 FFFD FFFD - 00AC 00BC -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 015C - srcEnd = 015F - mappingOffset = 0063 - Mapping = - 00DE 00FE 00AA 00BA -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 016C - srcEnd = 016D - mappingOffset = 0067 - Mapping = - 00DD 00FD -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 017B - srcEnd = 017C - mappingOffset = 0069 - Mapping = - 00AF 00BF -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 02D8 - srcEnd = 02D9 - mappingOffset = 006B - Mapping = - 00A2 00FF -End of Item 000B - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000C, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x002C, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0009 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x1111, 0x1111, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00C7, 0x00CF, 0x00C7, -/* 0002 */ 0x00E7, 0x00EF, 0x00E7, -/* 0003 */ 0x00A0, 0x00C4, 0x0000, -/* 0004 */ 0x00D1, 0x00E4, 0x0025, -/* 0005 */ 0x00F1, 0x00FC, 0x0039, -/* 0006 */ 0x0108, 0x010B, 0x0045, -/* 0007 */ 0x011C, 0x0135, 0x0049, -/* 0008 */ 0x015C, 0x015F, 0x0063, -/* 0009 */ 0x016C, 0x016D, 0x0067, -/* 000A */ 0x017B, 0x017C, 0x0069, -/* 000B */ 0x02D8, 0x02D9, 0x006B, -/*-------------------------------------------------------*/ -/* Offset=0x002C Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0x00A3, 0x00A4, 0xFFFD, 0xFFFD, 0x00A7, -/* 0008 */ 0x00A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00B0, 0xFFFD, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0xFFFD, 0x00B7, -/* 0018 */ 0x00B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BD, 0xFFFD, 0xFFFD, -/* 0020 */ 0x00C0, 0x00C1, 0x00C2, 0xFFFD, 0x00C4, 0x00D1, 0x00D2, 0x00D3, -/* 0028 */ 0x00D4, 0xFFFD, 0x00D6, 0x00D7, 0xFFFD, 0x00D9, 0x00DA, 0x00DB, -/* 0030 */ 0x00DC, 0xFFFD, 0xFFFD, 0x00DF, 0x00E0, 0x00E1, 0x00E2, 0xFFFD, -/* 0038 */ 0x00E4, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0xFFFD, 0x00F6, 0x00F7, -/* 0040 */ 0xFFFD, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00C6, 0x00E6, 0x00C5, -/* 0048 */ 0x00E5, 0x00D8, 0x00F8, 0x00AB, 0x00BB, 0x00D5, 0x00F5, 0xFFFD, -/* 0050 */ 0xFFFD, 0x00A6, 0x00B6, 0x00A1, 0x00B1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A9, 0x00B9, 0xFFFD, -/* 0060 */ 0xFFFD, 0x00AC, 0x00BC, 0x00DE, 0x00FE, 0x00AA, 0x00BA, 0x00DD, -/* 0068 */ 0x00FD, 0x00AF, 0x00BF, 0x00A2, 0x00FF, -/* End of table Total Length = 0x0099 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-4.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/8859-4.uf deleted file mode 100644 index 76c4b790d00..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-4.uf +++ /dev/null @@ -1,165 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00C1 - srcEnd = 00C6 - destBegin = 00C1 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00E1 - srcEnd = 00E6 - destBegin = 00E1 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00B8 - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD FFFD 00A4 FFFD FFFD 00A7 - 00A8 FFFD FFFD FFFD FFFD 00AD FFFD 00AF - 00B0 FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - 00B8 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00C9 - srcEnd = 017E - mappingOffset = 0019 - Mapping = - 00C9 FFFD 00CB FFFD 00CD 00CE FFFD FFFD - FFFD FFFD FFFD 00D4 00D5 00D6 00D7 00D8 - FFFD 00DA 00DB 00DC FFFD FFFD 00DF FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00E9 FFFD 00EB FFFD 00ED 00EE FFFD FFFD - FFFD FFFD FFFD 00F4 00F5 00F6 00F7 00F8 - FFFD 00FA 00FB 00FC FFFD FFFD FFFD 00C0 - 00E0 FFFD FFFD 00A1 00B1 FFFD FFFD FFFD - FFFD FFFD FFFD 00C8 00E8 FFFD FFFD 00D0 - 00F0 00AA 00BA FFFD FFFD 00CC 00EC 00CA - 00EA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00AB 00BB FFFD FFFD FFFD FFFD 00A5 - 00B5 00CF 00EF FFFD FFFD 00C7 00E7 FFFD - FFFD FFFD FFFD FFFD FFFD 00D3 00F3 00A2 - FFFD FFFD 00A6 00B6 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00D1 00F1 FFFD FFFD - FFFD 00BD 00BF 00D2 00F2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00A3 00B3 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 00A9 - 00B9 FFFD FFFD FFFD FFFD 00AC 00BC 00DD - 00FD 00DE 00FE FFFD FFFD FFFD FFFD FFFD - FFFD 00D9 00F9 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00AE 00BE -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 02C7 - destBegin = 00B7 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 02D9 - srcEnd = 02DB - mappingOffset = 00CF - Mapping = - 00FF FFFD 00B2 -End of Item 0006 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0003 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x0121, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00C1, 0x00C6, 0x00C1, -/* 0002 */ 0x00E1, 0x00E6, 0x00E1, -/* 0003 */ 0x00A0, 0x00B8, 0x0000, -/* 0004 */ 0x00C9, 0x017E, 0x0019, -/* 0005 */ 0x02C7, 0x0000, 0x00B7, -/* 0006 */ 0x02D9, 0x02DB, 0x00CF, -/*-------------------------------------------------------*/ -/* Offset=0x001B Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A4, 0xFFFD, 0xFFFD, 0x00A7, -/* 0008 */ 0x00A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AD, 0xFFFD, 0x00AF, -/* 0010 */ 0x00B0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0x00B8, 0x00C9, 0xFFFD, 0x00CB, 0xFFFD, 0x00CD, 0x00CE, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D4, 0x00D5, 0x00D6, 0x00D7, -/* 0028 */ 0x00D8, 0xFFFD, 0x00DA, 0x00DB, 0x00DC, 0xFFFD, 0xFFFD, 0x00DF, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0x00E9, 0xFFFD, 0x00EB, 0xFFFD, 0x00ED, 0x00EE, 0xFFFD, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00F4, 0x00F5, 0x00F6, 0x00F7, -/* 0048 */ 0x00F8, 0xFFFD, 0x00FA, 0x00FB, 0x00FC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0x00C0, 0x00E0, 0xFFFD, 0xFFFD, 0x00A1, 0x00B1, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C8, 0x00E8, 0xFFFD, 0xFFFD, -/* 0060 */ 0x00D0, 0x00F0, 0x00AA, 0x00BA, 0xFFFD, 0xFFFD, 0x00CC, 0x00EC, -/* 0068 */ 0x00CA, 0x00EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xFFFD, 0x00AB, 0x00BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0x00A5, 0x00B5, 0x00CF, 0x00EF, 0xFFFD, 0xFFFD, 0x00C7, 0x00E7, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D3, 0x00F3, -/* 0088 */ 0x00A2, 0xFFFD, 0xFFFD, 0x00A6, 0x00B6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D1, 0x00F1, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0x00BD, 0x00BF, 0x00D2, 0x00F2, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A3, 0x00B3, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0x00A9, 0x00B9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AC, 0x00BC, -/* 00B8 */ 0x00DD, 0x00FD, 0x00DE, 0x00FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0x00D9, 0x00F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AE, 0x00BE, 0x00FF, -/* 00D0 */ 0xFFFD, 0x00B2, -/* End of table Total Length = 0x00ED * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-5.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/8859-5.uf deleted file mode 100644 index 06237b7fd9d..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-5.uf +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0401 - srcEnd = 040C - destBegin = 00A1 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 040E - srcEnd = 044F - destBegin = 00AE -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 0451 - srcEnd = 045C - destBegin = 00F1 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00A0 - srcEnd = 00AD - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD FFFD FFFD FFFD FFFD 00FD - FFFD FFFD FFFD FFFD FFFD 00AD -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 045E - srcEnd = 045F - mappingOffset = 000E - Mapping = - 00FE 00FF -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 2116 - destBegin = 00F0 -End of Item 0006 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0211, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0401, 0x040C, 0x00A1, -/* 0002 */ 0x040E, 0x044F, 0x00AE, -/* 0003 */ 0x0451, 0x045C, 0x00F1, -/* 0004 */ 0x00A0, 0x00AD, 0x0000, -/* 0005 */ 0x045E, 0x045F, 0x000E, -/* 0006 */ 0x2116, 0x0000, 0x00F0, -/*-------------------------------------------------------*/ -/* Offset=0x001B Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00FD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AD, 0x00FE, 0x00FF, -/* End of table Total Length = 0x002B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-6.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/8859-6.uf deleted file mode 100644 index cd9be010980..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-6.uf +++ /dev/null @@ -1,123 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 002F - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 003A - srcEnd = 007E - destBegin = 003A -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0621 - srcEnd = 063A - destBegin = 00C1 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 0640 - srcEnd = 0652 - destBegin = 00E0 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0660 - srcEnd = 0669 - destBegin = 0030 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00A0 - srcEnd = 00AD - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD FFFD 00A4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00AD -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 060C - destBegin = 00AC -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 061B - srcEnd = 061F - mappingOffset = 000E - Mapping = - 00BB FFFD FFFD FFFD 00BF -End of Item 0007 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0005 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1210, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x002F, 0x0020, -/* 0001 */ 0x003A, 0x007E, 0x003A, -/* 0002 */ 0x0621, 0x063A, 0x00C1, -/* 0003 */ 0x0640, 0x0652, 0x00E0, -/* 0004 */ 0x0660, 0x0669, 0x0030, -/* 0005 */ 0x00A0, 0x00AD, 0x0000, -/* 0006 */ 0x060C, 0x0000, 0x00AC, -/* 0007 */ 0x061B, 0x061F, 0x000E, -/*-------------------------------------------------------*/ -/* Offset=0x001F Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AD, 0x00BB, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0x00BF, -/* End of table Total Length = 0x0032 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-7.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/8859-7.uf deleted file mode 100644 index d75042e6e84..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-7.uf +++ /dev/null @@ -1,123 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 038E - srcEnd = 03A1 - destBegin = 00BE -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03A3 - srcEnd = 03CE - destBegin = 00D3 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00BD - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD 00A3 FFFD FFFD 00A6 00A7 - 00A8 00A9 FFFD 00AB 00AC 00AD FFFD FFFD - 00B0 00B1 00B2 00B3 FFFD FFFD FFFD 00B7 - FFFD FFFD FFFD 00BB FFFD 00BD -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 02BC - srcEnd = 02BD - mappingOffset = 001E - Mapping = - 00A2 00A1 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 0384 - srcEnd = 038C - mappingOffset = 0020 - Mapping = - 00B4 00B5 00B6 FFFD 00B8 00B9 00BA FFFD - 00BC -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 2015 - destBegin = 00AF -End of Item 0006 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0003 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x0211, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x038E, 0x03A1, 0x00BE, -/* 0002 */ 0x03A3, 0x03CE, 0x00D3, -/* 0003 */ 0x00A0, 0x00BD, 0x0000, -/* 0004 */ 0x02BC, 0x02BD, 0x001E, -/* 0005 */ 0x0384, 0x038C, 0x0020, -/* 0006 */ 0x2015, 0x0000, 0x00AF, -/*-------------------------------------------------------*/ -/* Offset=0x001B Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0x00A3, 0xFFFD, 0xFFFD, 0x00A6, 0x00A7, -/* 0008 */ 0x00A8, 0x00A9, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B7, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00BB, 0xFFFD, 0x00BD, 0x00A2, 0x00A1, -/* 0020 */ 0x00B4, 0x00B5, 0x00B6, 0xFFFD, 0x00B8, 0x00B9, 0x00BA, 0xFFFD, -/* 0028 */ 0x00BC, -/* End of table Total Length = 0x0044 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-8.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/8859-8.uf deleted file mode 100644 index 49261198f69..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-8.uf +++ /dev/null @@ -1,136 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A2 - srcEnd = 00A9 - destBegin = 00A2 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00B0 - srcEnd = 00B9 - destBegin = 00B0 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 05D0 - srcEnd = 05EA - destBegin = 00E0 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00A0 - srcEnd = 00AE - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 00AB 00AC 00AD 00AE -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00BB - srcEnd = 00BE - mappingOffset = 000F - Mapping = - 00BB 00BC 00BD 00BE -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 00D7 - destBegin = 00AA -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 00F7 - destBegin = 00BA -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 2017 - destBegin = 00DF -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 203E - destBegin = 00AF -End of Item 0009 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0025, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0004 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x2211, 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A2, 0x00A9, 0x00A2, -/* 0002 */ 0x00B0, 0x00B9, 0x00B0, -/* 0003 */ 0x05D0, 0x05EA, 0x00E0, -/* 0004 */ 0x00A0, 0x00AE, 0x0000, -/* 0005 */ 0x00BB, 0x00BE, 0x000F, -/* 0006 */ 0x00D7, 0x0000, 0x00AA, -/* 0007 */ 0x00F7, 0x0000, 0x00BA, -/* 0008 */ 0x2017, 0x0000, 0x00DF, -/* 0009 */ 0x203E, 0x0000, 0x00AF, -/*-------------------------------------------------------*/ -/* Offset=0x0025 Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00BB, -/* 0010 */ 0x00BC, 0x00BD, 0x00BE, -/* End of table Total Length = 0x0038 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-9.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/8859-9.uf deleted file mode 100644 index 47bab2ddaeb..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/8859-9.uf +++ /dev/null @@ -1,130 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A0 - srcEnd = 00CF - destBegin = 00A0 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00D1 - srcEnd = 00DC - destBegin = 00D1 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00DF - srcEnd = 00EF - destBegin = 00DF -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00F1 - srcEnd = 00FC - destBegin = 00F1 -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 00FF - destBegin = 00FF -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 011E - srcEnd = 011F - mappingOffset = 0000 - Mapping = - 00D0 00F0 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 0130 - srcEnd = 0131 - mappingOffset = 0002 - Mapping = - 00DD 00FD -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 015E - srcEnd = 015F - mappingOffset = 0004 - Mapping = - 00DE 00FE -End of Item 0008 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0005 */ -/* Total of Format 1 : 0x0003 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1120, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A0, 0x00CF, 0x00A0, -/* 0002 */ 0x00D1, 0x00DC, 0x00D1, -/* 0003 */ 0x00DF, 0x00EF, 0x00DF, -/* 0004 */ 0x00F1, 0x00FC, 0x00F1, -/* 0005 */ 0x00FF, 0x0000, 0x00FF, -/* 0006 */ 0x011E, 0x011F, 0x0000, -/* 0007 */ 0x0130, 0x0131, 0x0002, -/* 0008 */ 0x015E, 0x015F, 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0022 Start of MappingTable */ - -/* 0000 */ 0x00D0, 0x00F0, 0x00DD, 0x00FD, 0x00DE, 0x00FE, -/* End of table Total Length = 0x0028 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/Makefile b/mozilla/lib/libi18n/unicode/ufrmtbl/Makefile deleted file mode 100644 index bdecd183bcd..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - - - -DEPTH = ../../../.. - -MODULE = i18n - -EXPORTS = $(wildcard *.uf) - -include $(DEPTH)/config/rules.mk - diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/Makefile.in b/mozilla/lib/libi18n/unicode/ufrmtbl/Makefile.in deleted file mode 100644 index 9cd2701034e..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/Makefile.in +++ /dev/null @@ -1,32 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - - - -DEPTH = ../../../.. -topsrcdir = @top_srcdir@ -VPATH = @srcdir@ -srcdir = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = i18n - -EXPORTS = $(wildcard $(srcdir)/*.uf) - -include $(topsrcdir)/config/rules.mk - diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/armscii.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/armscii.uf deleted file mode 100644 index c584f2866cb..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/armscii.uf +++ /dev/null @@ -1,209 +0,0 @@ - -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - * - */ - -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 0027 - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 002F - srcEnd = 007F - destBegin = 002F -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0028 - srcEnd = 002E - mappingOffset = 0000 - Mapping = - 00A5 00A4 002A 002B 002C 002D 00A9 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00AB - mappingOffset = 0007 - Mapping = - 00A0 FFFD FFFD FFFD FFFD FFFD FFFD 00A2 - FFFD FFFD FFFD 00A7 -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 00BB - destBegin = 00A6 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 0152 - srcEnd = 0153 - mappingOffset = 0013 - Mapping = - 008C 009C -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 0160 - srcEnd = 0161 - mappingOffset = 0015 - Mapping = - 008A 009A -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 0178 - destBegin = 009F -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 0192 - destBegin = 0083 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 02C6 - destBegin = 0088 -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 02DC - destBegin = 0098 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 0531 - srcEnd = 0589 - mappingOffset = 0017 - Mapping = - 00B2 00B4 00B6 00B8 00BA 00BC 00BE 00C0 - 00C2 00C4 00C6 00C8 00CA 00CC 00CE 00D0 - 00D2 00D4 00D6 00D8 00DA 00DC 00DE 00E0 - 00E2 00E4 00E6 00E8 00EA 00EC 00EE 00F0 - 00F2 00F4 00F6 00F8 00FA 00FC FFFD FFFD - FFFD 00FE 00B0 00AF 00AA 00B1 FFFD FFFD - 00B3 00B5 00B7 00B9 00BB 00BD 00BF 00C1 - 00C3 00C5 00C7 00C9 00CB 00CD 00CF 00D1 - 00D3 00D5 00D7 00D9 00DB 00DD 00DF 00E1 - 00E3 00E5 00E7 00E9 00EB 00ED 00EF 00F1 - 00F3 00F5 00F7 00F9 00FB 00FD 00AB FFFD - 00A3 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2010 - srcEnd = 203A - mappingOffset = 0070 - Mapping = - 00AD 00AC FFFD 0096 00A8 FFFD FFFD FFFD - 0091 0092 0082 FFFD 0093 0094 0084 FFFD - 0086 0087 0095 FFFD FFFD FFFD 00AE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 0089 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 008B 009B -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 2122 - destBegin = 0099 -End of Item 000D - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000E, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0032, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0006 */ -/* Total of Format 2 : 0x0006 */ -/* Total of Format 3 : 0x0000 */ - -0x1100, 0x2112, 0x1222, 0x0021, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x0027, 0x0000, -/* 0001 */ 0x002F, 0x007F, 0x002F, -/* 0002 */ 0x0028, 0x002E, 0x0000, -/* 0003 */ 0x00A0, 0x00AB, 0x0007, -/* 0004 */ 0x00BB, 0x0000, 0x00A6, -/* 0005 */ 0x0152, 0x0153, 0x0013, -/* 0006 */ 0x0160, 0x0161, 0x0015, -/* 0007 */ 0x0178, 0x0000, 0x009F, -/* 0008 */ 0x0192, 0x0000, 0x0083, -/* 0009 */ 0x02C6, 0x0000, 0x0088, -/* 000A */ 0x02DC, 0x0000, 0x0098, -/* 000B */ 0x0531, 0x0589, 0x0017, -/* 000C */ 0x2010, 0x203A, 0x0070, -/* 000D */ 0x2122, 0x0000, 0x0099, -/*-------------------------------------------------------*/ -/* Offset=0x0032 Start of MappingTable */ - -/* 0000 */ 0x00A5, 0x00A4, 0x002A, 0x002B, 0x002C, 0x002D, 0x00A9, 0x00A0, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A2, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0x00A7, 0x008C, 0x009C, 0x008A, 0x009A, 0x00B2, -/* 0018 */ 0x00B4, 0x00B6, 0x00B8, 0x00BA, 0x00BC, 0x00BE, 0x00C0, 0x00C2, -/* 0020 */ 0x00C4, 0x00C6, 0x00C8, 0x00CA, 0x00CC, 0x00CE, 0x00D0, 0x00D2, -/* 0028 */ 0x00D4, 0x00D6, 0x00D8, 0x00DA, 0x00DC, 0x00DE, 0x00E0, 0x00E2, -/* 0030 */ 0x00E4, 0x00E6, 0x00E8, 0x00EA, 0x00EC, 0x00EE, 0x00F0, 0x00F2, -/* 0038 */ 0x00F4, 0x00F6, 0x00F8, 0x00FA, 0x00FC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0x00FE, 0x00B0, 0x00AF, 0x00AA, 0x00B1, 0xFFFD, 0xFFFD, 0x00B3, -/* 0048 */ 0x00B5, 0x00B7, 0x00B9, 0x00BB, 0x00BD, 0x00BF, 0x00C1, 0x00C3, -/* 0050 */ 0x00C5, 0x00C7, 0x00C9, 0x00CB, 0x00CD, 0x00CF, 0x00D1, 0x00D3, -/* 0058 */ 0x00D5, 0x00D7, 0x00D9, 0x00DB, 0x00DD, 0x00DF, 0x00E1, 0x00E3, -/* 0060 */ 0x00E5, 0x00E7, 0x00E9, 0x00EB, 0x00ED, 0x00EF, 0x00F1, 0x00F3, -/* 0068 */ 0x00F5, 0x00F7, 0x00F9, 0x00FB, 0x00FD, 0x00AB, 0xFFFD, 0x00A3, -/* 0070 */ 0x00AD, 0x00AC, 0xFFFD, 0x0096, 0x00A8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0x0091, 0x0092, 0x0082, 0xFFFD, 0x0093, 0x0094, 0x0084, 0xFFFD, -/* 0080 */ 0x0086, 0x0087, 0x0095, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AE, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0x0089, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0x008B, 0x009B, -/* End of table Total Length = 0x00CD * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/big5.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/big5.uf deleted file mode 100644 index 61720f354c4..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/big5.uf +++ /dev/null @@ -1,5905 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = A344 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = A355 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = A35C -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = A36D -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0416 - srcEnd = 041C - destBegin = C7B4 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0423 - srcEnd = 0435 - destBegin = C7BB -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0436 - srcEnd = 044F - destBegin = C7CF -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 2160 - srcEnd = 2169 - destBegin = A2B9 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2460 - srcEnd = 2469 - destBegin = C7E9 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2474 - srcEnd = 247D - destBegin = C7F3 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2581 - srcEnd = 2588 - destBegin = A262 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 3021 - srcEnd = 3029 - destBegin = A2C3 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = C6A5 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 30A1 - srcEnd = 30A7 - destBegin = C6F8 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 30A8 - srcEnd = 30E6 - destBegin = C740 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 30E7 - srcEnd = 30F6 - destBegin = C7A1 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 3105 - srcEnd = 310F - destBegin = A374 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 3110 - srcEnd = 3129 - destBegin = A3A1 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = FF10 - srcEnd = FF19 - destBegin = A2AF -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = FF21 - srcEnd = FF3A - destBegin = A2CF -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = FF41 - srcEnd = FF56 - destBegin = A2E9 -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 00A2 - srcEnd = 00B7 - mappingOffset = 0000 - Mapping = - A246 A247 FFFD A244 FFFD A1B1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD A258 A1D3 - FFFD FFFD FFFD FFFD FFFD A150 -End of Item 0015 - -Begin of Item 0016 - Format 2 - srcBegin = 00D7 - destBegin = A1D1 -End of Item 0016 - -Begin of Item 0017 - Format 2 - srcBegin = 00F7 - destBegin = A1D2 -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 02C7 - srcEnd = 02CB - mappingOffset = 0016 - Mapping = - A3BE FFFD A3BC A3BD A3BF -End of Item 0018 - -Begin of Item 0019 - Format 2 - srcBegin = 02D9 - destBegin = A3BB -End of Item 0019 - -Begin of Item 001A - Format 2 - srcBegin = 0401 - destBegin = C7B3 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 0414 - srcEnd = 0415 - mappingOffset = 001B - Mapping = - C7B1 C7B2 -End of Item 001B - -Begin of Item 001C - Format 2 - srcBegin = 0451 - destBegin = C7CE -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 2013 - srcEnd = 2026 - mappingOffset = 001D - Mapping = - A156 A158 FFFD FFFD FFFD A1A5 A1A6 FFFD - FFFD A1A7 A1A8 FFFD FFFD FFFD FFFD A145 - FFFD FFFD A14C A14B -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 2032 - srcEnd = 203E - mappingOffset = 0031 - Mapping = - A1AC FFFD FFFD A1AB FFFD FFFD FFFD FFFD - FFFD A1B0 FFFD FFFD A1C2 -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 2103 - srcEnd = 2109 - mappingOffset = 003E - Mapping = - A24A FFFD A1C1 FFFD FFFD FFFD A24B -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 2190 - srcEnd = 2199 - mappingOffset = 0045 - Mapping = - A1F6 A1F4 A1F7 A1F5 FFFD FFFD A1F8 A1F9 - A1FB A1FA -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 221A - srcEnd = 223C - mappingOffset = 004F - Mapping = - A1D4 FFFD FFFD FFFD A1DB A1E8 A1E7 FFFD - FFFD A1FD FFFD A1FC FFFD FFFD FFFD A1E4 - A1E5 A1EC FFFD FFFD A1ED FFFD FFFD FFFD - FFFD FFFD A1EF A1EE FFFD FFFD FFFD FFFD - FFFD FFFD A1E3 -End of Item 0021 - -Begin of Item 0022 - Format 2 - srcBegin = 2252 - destBegin = A1DC -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 2260 - srcEnd = 2267 - mappingOffset = 0072 - Mapping = - A1DA A1DD FFFD FFFD FFFD FFFD A1D8 A1D9 -End of Item 0023 - -Begin of Item 0024 - Format 2 - srcBegin = 22A5 - destBegin = A1E6 -End of Item 0024 - -Begin of Item 0025 - Format 2 - srcBegin = 22BF - destBegin = A1E9 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 007A - Mapping = - A277 FFFD A278 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A27A FFFD FFFD FFFD - A27B FFFD FFFD FFFD A27C FFFD FFFD FFFD - A27D FFFD FFFD FFFD A275 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A274 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A273 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A272 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A271 -End of Item 0026 - -Begin of Item 0027 - Format 2 - srcBegin = 2550 - destBegin = A2A4 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 255E - srcEnd = 2573 - mappingOffset = 00B7 - Mapping = - A2A5 FFFD FFFD A2A7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A2A6 FFFD FFFD A27E - A2A1 A2A3 A2A2 A2AC A2AD A2AE -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 2589 - srcEnd = 25A1 - mappingOffset = 00CD - Mapping = - A270 A26F A26E A26D A26C A26B A26A FFFD - FFFD FFFD FFFD A276 A279 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD A1BD - A1BC -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 25B2 - srcEnd = 25CF - mappingOffset = 00E6 - Mapping = - A1B6 A1B5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD A1BF A1BE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A1BB A1BA FFFD FFFD - FFFD A1B3 FFFD FFFD A1B7 A1B4 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 25E2 - srcEnd = 25E5 - mappingOffset = 0104 - Mapping = - A2A8 A2A9 A2AB A2AA -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 2605 - srcEnd = 2609 - mappingOffset = 0108 - Mapping = - A1B9 A1B8 FFFD FFFD A1F3 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 010D - Mapping = - A1F0 A1F2 A1F1 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 3000 - srcEnd = 301E - mappingOffset = 0110 - Mapping = - A140 A142 A143 A1B2 FFFD C6A4 FFFD FFFD - A171 A172 A16D A16E A175 A176 A179 A17A - A169 A16A A245 FFFD A165 A166 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD A1A9 A1AA -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 309D - srcEnd = 309E - mappingOffset = 012F - Mapping = - C6A2 C6A3 -End of Item 002F - -Begin of Item 0030 - Format 2 - srcBegin = 30FE - destBegin = C6A1 -End of Item 0030 - -Begin of Item 0031 - Format 2 - srcBegin = 32A3 - destBegin = A1C0 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 338E - srcEnd = 338F - mappingOffset = 0131 - Mapping = - A255 A256 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 339C - srcEnd = 33A1 - mappingOffset = 0133 - Mapping = - A250 A251 A252 FFFD FFFD A254 -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 33C4 - srcEnd = 33D5 - mappingOffset = 0139 - Mapping = - A257 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD A253 FFFD FFFD A1EB A1EA FFFD - FFFD A24F -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 4E00 - srcEnd = 4F9E - mappingOffset = 014B - Mapping = - A440 A442 FFFD A443 FFFD FFFD FFFD C945 - A456 A454 A457 A455 C946 A4A3 C94F C94D - A4A2 A4A1 FFFD FFFD A542 A541 A540 FFFD - A543 A4FE FFFD FFFD FFFD FFFD A5E0 A5E1 - FFFD FFFD FFFD FFFD FFFD FFFD A8C3 FFFD - FFFD FFFD FFFD A458 FFFD A4A4 C950 FFFD - A4A5 C963 A6EA CBB1 FFFD FFFD FFFD FFFD - A459 A4A6 FFFD A544 C964 FFFD FFFD FFFD - FFFD FFFD C940 A444 FFFD A45B FFFD C947 - A45C FFFD FFFD A4A7 FFFD A545 A547 A546 - FFFD FFFD A5E2 A5E3 FFFD FFFD A8C4 FFFD - ADBC A441 FFFD FFFD C941 A445 A45E A45D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD A5E4 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD A8C5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B0AE D44B - FFFD FFFD B6C3 DCB1 DCB2 FFFD A446 FFFD - A4A9 FFFD FFFD A8C6 A447 C948 A45F FFFD - FFFD A4AA A4AC C951 A4AD A4AB FFFD FFFD - FFFD A5E5 FFFD A8C7 FFFD FFFD A8C8 AB45 - FFFD A460 A4AE FFFD A5E6 A5E8 A5E7 FFFD - A6EB FFFD FFFD A8C9 A8CA AB46 AB47 FFFD - FFFD FFFD FFFD ADBD FFFD FFFD DCB3 FFFD - FFFD F6D6 A448 FFFD FFFD FFFD FFFD FFFD - A4B0 A4AF C952 A4B1 A4B7 FFFD A4B2 A4B3 - C954 C953 A4B5 A4B6 FFFD A4B4 FFFD FFFD - FFFD FFFD FFFD FFFD A54A A54B A54C A54D - A549 A550 C96A FFFD C966 C969 A551 A561 - FFFD C968 FFFD A54E A54F A548 FFFD FFFD - C965 C967 FFFD FFFD FFFD FFFD FFFD FFFD - A5F5 C9B0 A5F2 A5F6 C9BA C9AE A5F3 C9B2 - FFFD FFFD FFFD A5F4 FFFD A5F7 FFFD A5E9 - C9B1 A5F8 C9B5 FFFD C9B9 C9B6 FFFD FFFD - C9B3 A5EA A5EC A5F9 FFFD A5EE C9AB A5F1 - A5EF A5F0 C9BB C9B8 C9AF A5ED FFFD FFFD - C9AC A5EB FFFD FFFD FFFD C9B4 FFFD FFFD - FFFD FFFD C9B7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C9AD CA66 FFFD A742 - A6F4 FFFD FFFD CA67 A6F1 FFFD A744 FFFD - A6F9 FFFD A6F8 CA5B A6FC A6F7 CA60 CA68 - FFFD CA64 FFFD A6FA FFFD FFFD A6FD A6EE - A747 CA5D FFFD FFFD CBBD A6EC A743 A6ED - A6F5 A6F6 CA62 CA5E A6FB A6F3 CA5A A6EF - CA65 A745 A748 A6F2 A740 A746 A6F0 CA63 - A741 CA69 CA5C A6FE CA5F FFFD FFFD CA61 - FFFD A8D8 CBBF CBCB A8D0 FFFD CBCC A8CB - A8D5 FFFD FFFD A8CE CBB9 A8D6 CBB8 CBBC - CBC3 CBC1 A8DE A8D9 CBB3 CBB5 A8DB A8CF - CBB6 CBC2 CBC9 A8D4 CBBB CBB4 A8D3 CBB7 - A8D7 CBBA FFFD A8D2 FFFD A8CD FFFD A8DC - CBC4 A8DD CBC8 FFFD CBC6 CBCA A8DA CBBE - CBB2 FFFD CBC0 A8D1 CBC5 A8CC CBC7 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 4FAE - srcEnd = 51E1 - mappingOffset = 02EA - Mapping = - AB56 AB4A FFFD FFFD CDE0 CDE8 FFFD AB49 - AB51 AB5D FFFD CDEE CDEC CDE7 FFFD FFFD - FFFD AB4B CDED CDE3 AB59 AB50 AB58 CDDE - FFFD CDEA FFFD CDE1 AB54 CDE2 FFFD CDDD - AB5B AB4E AB57 AB4D FFFD CDDF CDE4 FFFD - CDEB AB55 AB52 CDE6 AB5A CDE9 CDE5 AB4F - AB5C AB53 AB4C AB48 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD CDEF FFFD - ADD7 ADC1 FFFD ADD1 FFFD ADD6 D0D0 D0CF - D0D4 D0D5 ADC4 FFFD ADCD FFFD FFFD FFFD - ADDA FFFD ADCE FFFD FFFD FFFD FFFD D0C9 - ADC7 D0CA FFFD ADDC FFFD ADD3 ADBE ADBF - D0DD B0BF FFFD ADCC ADCB D0CB ADCF D45B - ADC6 D0D6 ADD5 ADD4 ADCA D0CE D0D7 FFFD - D0C8 ADC9 D0D8 ADD2 D0CC ADC0 FFFD ADC3 - ADC2 D0D9 ADD0 ADC5 ADD9 ADDB D0D3 ADD8 - FFFD D0DB D0CD D0DC FFFD D0D1 FFFD D0DA - FFFD D0D2 FFFD FFFD FFFD FFFD ADC8 FFFD - FFFD FFFD D463 D457 FFFD B0B3 FFFD D45C - D462 B0B2 D455 B0B6 D459 D452 B0B4 D456 - B0B9 B0BE FFFD D467 FFFD D451 FFFD B0BA - FFFD D466 FFFD FFFD B0B5 D458 B0B1 D453 - D44F D45D D450 D44E D45A D460 D461 B0B7 - FFFD FFFD D85B D45E D44D D45F FFFD B0C1 - D464 B0C0 D44C FFFD D454 D465 B0BC B0BB - B0B8 B0BD FFFD FFFD B0AF FFFD FFFD B0B0 - FFFD FFFD B3C8 FFFD D85E D857 FFFD B3C5 - FFFD D85F FFFD FFFD FFFD D855 D858 B3C4 - D859 FFFD FFFD B3C7 D85D FFFD D853 D852 - B3C9 FFFD B3CA B3C6 B3CB D851 D85C D85A - D854 FFFD FFFD FFFD B3C3 D856 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B6CA B6C4 - DCB7 B6CD DCBD DCC0 B6C6 B6C7 DCBA B6C5 - DCC3 B6CB DCC4 FFFD DCBF B6CC FFFD DCB4 - B6C9 DCB5 FFFD DCBE DCBC FFFD DCB8 B6C8 - DCB6 B6CE DCBB DCC2 DCB9 DCC1 FFFD FFFD - B9B6 B9B3 FFFD B9B4 FFFD E0F9 E0F1 B9B2 - B9AF E0F2 FFFD FFFD B9B1 E0F5 FFFD E0F7 - FFFD FFFD E0FE FFFD FFFD E0FD E0F8 B9AE - E0F0 B9AC E0F3 B9B7 E0F6 FFFD E0FA B9B0 - B9AD E0FC E0FB B9B5 FFFD E0F4 FFFD BBF8 - E4EC FFFD E4E9 BBF9 FFFD BBF7 FFFD E4F0 - E4ED E4E6 BBF6 FFFD BBFA E4E7 BBF5 BBFD - E4EA E4EB BBFB BBFC E4F1 E4EE E4EF FFFD - FFFD FFFD BEAA E8F8 BEA7 E8F5 BEA9 BEAB - FFFD E8F6 BEA8 FFFD E8F7 FFFD E8F4 FFFD - FFFD C076 ECBD C077 ECBB FFFD ECBC ECBA - ECB9 FFFD FFFD ECBE C075 FFFD FFFD EFB8 - EFB9 FFFD E4E8 EFB7 C078 C35F F1EB F1EC - FFFD C4D7 C4D8 F5C1 F5C0 C56C C56B F7D0 - FFFD A449 A461 A4B9 FFFD A4B8 A553 A552 - A5FC A5FB A5FD A5FA FFFD A74A A749 A74B - FFFD FFFD FFFD FFFD A8E0 FFFD A8DF A8E1 - FFFD AB5E FFFD A259 D0DE A25A B0C2 A25C - A25B D860 FFFD A25D B9B8 A25E FFFD A44A - FFFD A4BA A5FE A8E2 FFFD A44B A4BD A4BB - A4BC FFFD FFFD A640 FFFD FFFD FFFD A74C - A8E4 A8E3 A8E5 FFFD FFFD FFFD ADDD FFFD - FFFD FFFD BEAC FFFD FFFD FFFD FFFD FFFD - FFFD C94E FFFD A554 A555 FFFD FFFD A641 - FFFD CA6A FFFD AB60 AB5F D0E0 D0DF B0C3 - FFFD A4BE C955 FFFD FFFD FFFD FFFD FFFD - CBCD FFFD AB61 FFFD ADE0 FFFD ADDE ADDF - FFFD FFFD FFFD FFFD BEAD FFFD A556 FFFD - FFFD FFFD A642 C9BC FFFD FFFD FFFD FFFD - A74D A74E FFFD CA6B FFFD FFFD CBCE A8E6 - CBCF FFFD FFFD FFFD FFFD FFFD D0E2 D0E3 - ADE3 FFFD D0E4 FFFD D0E1 ADE4 ADE2 ADE1 - D0E5 FFFD D468 FFFD FFFD FFFD D861 FFFD - FFFD DCC5 E140 FFFD FFFD FFFD BBFE BEAE - E8F9 FFFD A44C A45A -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 51F0 - srcEnd = 52AE - mappingOffset = 051E - Mapping = - B0C4 B3CD FFFD B9B9 FFFD C942 A4BF FFFD - A559 A557 A558 FFFD FFFD A8E7 FFFD FFFD - A44D A44E FFFD A462 FFFD FFFD A4C0 A4C1 - A4C2 C9BE A55A FFFD C96B FFFD A646 FFFD - C9BF A644 A645 C9BD FFFD FFFD A647 A643 - FFFD FFFD FFFD FFFD CA6C AAEC CA6D FFFD - FFFD CA6E FFFD FFFD A750 A74F FFFD FFFD - A753 A751 A752 FFFD FFFD FFFD A8ED FFFD - A8EC CBD4 CBD1 CBD2 FFFD CBD0 A8EE A8EA - A8E9 FFFD A8EB A8E8 FFFD FFFD FFFD FFFD - FFFD A8EF FFFD AB63 CDF0 FFFD CBD3 AB68 - FFFD CDF1 AB64 AB67 AB66 AB65 AB62 FFFD - FFFD FFFD D0E8 FFFD ADE7 D0EB ADE5 FFFD - FFFD FFFD D0E7 ADE8 ADE6 ADE9 D0E9 D0EA - FFFD D0E6 D0EC FFFD FFFD FFFD FFFD FFFD - FFFD B3D1 B0C5 D469 D46B D46A D46C B0C6 - FFFD FFFD B3CE FFFD B3CF B3D0 FFFD B6D0 - DCC7 FFFD DCC6 DCC8 DCC9 B6D1 FFFD B6CF - E141 E142 B9BB B9BA E35A FFFD FFFD BC40 - BC41 BC42 BC44 E4F2 E4F3 BC43 FFFD FFFD - FFFD BEAF FFFD BEB0 FFFD FFFD F1ED F5C3 - F5C2 F7D1 FFFD A44F FFFD FFFD FFFD A55C - A55B FFFD FFFD A648 FFFD FFFD C9C0 FFFD - FFFD A755 A756 A754 A757 CA6F CA70 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 52BB - srcEnd = 5454 - mappingOffset = 05DD - Mapping = - A8F1 CBD5 FFFD A8F0 FFFD CDF2 AB6C CDF3 - AB6B FFFD FFFD FFFD AB69 FFFD AB6A FFFD - FFFD FFFD D0ED FFFD FFFD FFFD FFFD B0C7 - D46E FFFD B0CA D46D B1E5 B0C9 B0C8 FFFD - B3D4 FFFD B3D3 B3D2 B6D2 FFFD FFFD B6D5 - B6D6 B6D4 FFFD B6D3 FFFD FFFD E143 FFFD - E144 FFFD FFFD FFFD E4F5 BC45 E4F4 FFFD - BEB1 ECBF C079 FFFD F1EE C455 FFFD A463 - A4C3 C956 FFFD A4C4 A4C5 FFFD FFFD FFFD - FFFD FFFD A55D A55E FFFD A649 CA71 CBD6 - CBD7 FFFD AB6D D0EE B0CC B0CB D863 D862 - FFFD FFFD A450 A4C6 A55F FFFD B0CD C943 - FFFD C96C A560 FFFD C9C2 A64B A64A C9C1 - A758 FFFD FFFD FFFD FFFD FFFD FFFD ADEA - FFFD FFFD D46F FFFD B6D7 E145 B9BC FFFD - FFFD E8FA FFFD FFFD F3FD FFFD A4C7 FFFD - FFFD CBD8 CDF4 B0D0 B0CE B0CF A451 FFFD - A464 A2CD A4CA FFFD A4C9 A4C8 A563 A562 - FFFD C96D C9C3 FFFD FFFD FFFD A8F5 A8F2 - A8F4 A8F3 FFFD FFFD AB6E FFFD FFFD B3D5 - FFFD A452 FFFD A4CB FFFD A565 A564 FFFD - CA72 FFFD FFFD A8F6 FFFD FFFD FFFD FFFD - FFFD C957 FFFD A567 A566 A64C A64D CA73 - A759 FFFD A75A FFFD A8F7 A8F8 A8F9 FFFD - AB6F CDF5 FFFD FFFD ADEB FFFD FFFD C944 - FFFD A4CC FFFD FFFD FFFD FFFD FFFD C9C4 - FFFD FFFD FFFD CA74 CA75 FFFD FFFD CBD9 - FFFD CBDA FFFD CDF7 CDF6 CDF9 CDF8 AB70 - FFFD D470 ADED D0EF ADEC FFFD FFFD FFFD - FFFD D864 B3D6 FFFD D865 FFFD FFFD FFFD - FFFD E146 B9BD FFFD FFFD FFFD FFFD BC46 - FFFD F1EF FFFD FFFD FFFD FFFD C958 FFFD - A568 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B0D1 FFFD FFFD FFFD FFFD A453 A465 A4CE - A4CD FFFD A4CF FFFD FFFD FFFD FFFD FFFD - FFFD A8FB FFFD A8FA A8FC FFFD FFFD FFFD - AB71 FFFD FFFD FFFD ADEE FFFD E8FB C24F - A466 A56A A579 A574 FFFD A56F A56E A575 - A573 A56C A57A A56D A569 A578 A577 A576 - A56B FFFD A572 FFFD FFFD A571 FFFD FFFD - A57B A570 FFFD FFFD FFFD FFFD A653 FFFD - A659 A655 FFFD A65B C9C5 A658 A64E A651 - A654 A650 A657 A65A A64F A652 A656 A65C - FFFD FFFD FFFD FFFD FFFD CA7E CA7B FFFD - A767 CA7C A75B A75D A775 A770 FFFD FFFD - FFFD CAA5 CA7D A75F A761 CAA4 A768 CA78 - A774 A776 A75C A76D FFFD CA76 A773 FFFD - A764 FFFD A76E A76F CA77 A76C A76A FFFD - A76B A771 CAA1 A75E FFFD A772 CAA3 A766 - A763 FFFD CA7A A762 CAA6 A765 FFFD A769 - FFFD FFFD FFFD A760 CAA2 FFFD FFFD FFFD - FFFD CA79 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 5460 - srcEnd = 551A - mappingOffset = 0777 - Mapping = - CBEB CBEA A94F CBED CBEF CBE4 CBE7 CBEE - A950 FFFD FFFD CBE1 CBE5 FFFD FFFD CBE9 - CE49 A94B CE4D A8FD CBE6 A8FE A94C A945 - A941 FFFD CBE2 A944 A949 A952 CBE3 CBDC - A943 CBDD CBDF FFFD A946 FFFD A948 CBDB - CBE0 FFFD FFFD A951 A94D CBE8 A953 FFFD - A94A CBDE A947 FFFD FFFD A942 A940 FFFD - CBEC FFFD A94E FFFD FFFD FFFD FFFD FFFD - CE48 CDFB CE4B FFFD FFFD CDFD AB78 ABA8 - AB74 ABA7 AB7D ABA4 AB72 CDFC CE43 ABA3 - CE4F ABA5 FFFD AB79 FFFD FFFD CE45 CE42 - AB77 FFFD CDFA ABA6 CE4A AB7C CE4C ABA9 - AB73 AB7E AB7B CE40 ABA1 CE46 CE47 AB7A - ABA2 AB76 FFFD FFFD FFFD FFFD AB75 CDFE - FFFD FFFD FFFD FFFD FFFD FFFD CE44 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD CE4E FFFD - D144 ADFB D0F1 FFFD D0F6 ADF4 AE40 D0F4 - ADEF ADF9 ADFE D0FB FFFD ADFA ADFD FFFD - FFFD D0FE ADF5 D0F5 FFFD FFFD FFFD D142 - D143 FFFD ADF7 D141 ADF3 AE43 FFFD D0F8 - FFFD ADF1 FFFD D146 D0F9 D0FD ADF6 AE42 - D0FA ADFC D140 D147 D4A1 FFFD D145 AE44 - ADF0 D0FC D0F3 FFFD ADF8 FFFD FFFD D0F2 - FFFD FFFD D0F7 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 5526 - srcEnd = 5752 - mappingOffset = 0832 - Mapping = - D0F0 AE41 FFFD FFFD D477 FFFD B0E4 D4A7 - B0E2 B0DF D47C B0DB D4A2 B0E6 D476 D47B - D47A ADF2 B0E1 D4A5 FFFD D4A8 D473 FFFD - B3E8 FFFD D4A9 B0E7 FFFD B0D9 B0D6 D47E - B0D3 FFFD D4A6 FFFD B0DA D4AA FFFD D474 - D4A4 B0DD D475 D478 D47D FFFD FFFD B0DE - B0DC B0E8 FFFD FFFD FFFD FFFD B0E3 FFFD - B0D7 B1D2 FFFD B0D8 D479 B0E5 B0E0 D4A3 - B0D5 FFFD FFFD FFFD B0D4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D471 - D472 D86A FFFD FFFD FFFD B3D7 B3DA D875 - B3EE D878 B3D8 D871 B3DE B3E4 B5BD FFFD - FFFD B3E2 D86E B3EF B3DB B3E3 D876 DCD7 - D87B D86F FFFD D866 D873 D86D B3E1 D879 - FFFD FFFD B3DD B3F1 B3EA FFFD B3DF B3DC - FFFD B3E7 FFFD D87A D86C D872 D874 D868 - D877 B3D9 D867 FFFD B3E0 B3F0 B3EC D869 - B3E6 FFFD FFFD B3ED B3E9 B3E5 FFFD D870 - FFFD FFFD FFFD FFFD FFFD B3EB FFFD FFFD - FFFD DCD5 DCD1 FFFD DCE0 DCCA DCD3 B6E5 - B6E6 B6DE DCDC B6E8 DCCF DCCE DCCC DCDE - B6DC DCD8 DCCD B6DF DCD6 B6DA DCD2 DCD9 - DCDB FFFD FFFD DCDF B6E3 DCCB B6DD DCD0 - FFFD B6D8 FFFD B6E4 DCDA B6E0 B6E1 B6E7 - B6DB A25F B6D9 DCD4 FFFD FFFD FFFD FFFD - FFFD B6E2 FFFD FFFD DCDD FFFD FFFD FFFD - B9CD B9C8 FFFD E155 E151 FFFD E14B B9C2 - B9BE E154 B9BF E14E E150 FFFD E153 FFFD - B9C4 FFFD B9CB B9C5 FFFD FFFD E149 B9C6 - B9C7 E14C B9CC FFFD E14A E14F B9C3 E148 - B9C9 B9C1 FFFD FFFD FFFD B9C0 E14D E152 - FFFD B9CA FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E147 FFFD BC4D E547 FFFD E544 FFFD - BC47 BC53 BC54 FFFD BC4A E542 BC4C E4F9 - BC52 FFFD E546 BC49 E548 BC48 FFFD E543 - E545 BC4B E541 E4FA E4F7 FFFD FFFD D86B - E4FD FFFD E4F6 E4FC E4FB FFFD E4F8 FFFD - BC4F FFFD FFFD FFFD FFFD BC4E FFFD FFFD - FFFD BC50 E4FE BEB2 E540 FFFD FFFD FFFD - E945 FFFD E8FD FFFD BEBE E942 BEB6 BEBA - E941 FFFD BEB9 BEB5 BEB8 BEB3 BEBD E943 - E8FE BEBC E8FC BEBB E944 E940 BC51 FFFD - BEBF E946 BEB7 BEB4 FFFD FFFD FFFD FFFD - ECC6 ECC8 C07B ECC9 ECC7 ECC5 ECC4 C07D - ECC3 C07E FFFD FFFD FFFD FFFD ECC1 ECC2 - C07A C0A1 C07C FFFD FFFD ECC0 FFFD C250 - FFFD EFBC EFBA EFBF EFBD FFFD EFBB EFBE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C360 - F1F2 F1F3 C456 FFFD F1F4 F1F0 F1F5 F1F1 - C251 FFFD FFFD FFFD F3FE F441 C459 F440 - C458 C457 FFFD FFFD FFFD FFFD C45A F5C5 - F5C6 FFFD C4DA C4D9 C4DB F5C4 FFFD F6D8 - F6D7 FFFD C56D C56F C56E F6D9 C5C8 F8A6 - FFFD FFFD FFFD C5F1 FFFD F8A5 F8EE FFFD - FFFD C949 FFFD FFFD A57D A57C FFFD A65F - A65E C9C7 A65D C9C6 FFFD FFFD A779 CAA9 - FFFD CAA8 FFFD FFFD A777 A77A FFFD FFFD - CAA7 FFFD A778 FFFD FFFD FFFD FFFD FFFD - FFFD CBF0 FFFD CBF1 A954 FFFD FFFD FFFD - FFFD ABAA FFFD D148 D149 AE45 AE46 FFFD - FFFD D4AC B0E9 B0EB D4AB B0EA D87C B3F2 - FFFD FFFD FFFD FFFD B6E9 B6EA DCE1 FFFD - B9CF FFFD B9CE FFFD E549 E948 E947 FFFD - F96B A467 C959 FFFD C96E C96F FFFD FFFD - FFFD FFFD A662 A666 C9C9 FFFD A664 A663 - C9C8 A665 A661 FFFD FFFD A660 C9CA FFFD - FFFD FFFD FFFD FFFD FFFD A7A6 FFFD FFFD - A7A3 FFFD A77D CAAA FFFD FFFD FFFD CAAB - FFFD A7A1 FFFD CAAD A77B CAAE CAAC A77E - A7A2 A7A5 A7A4 A77C CAAF -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 5761 - srcEnd = 5CB8 - mappingOffset = 0A5F - Mapping = - A959 CBFE FFFD A95B FFFD A95A FFFD CC40 - A958 A957 CBF5 FFFD CBF4 FFFD CBF2 CBF7 - CBF6 CBF3 CBFC CBFD CBFA CBF8 A956 FFFD - FFFD FFFD CBFB A95C CC41 FFFD FFFD CBF9 - FFFD ABAB A955 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD ABAC CE54 FFFD FFFD CE5A FFFD - FFFD FFFD ABB2 CE58 CE5E FFFD CE55 CE59 - CE5B CE5D CE57 FFFD CE56 CE51 CE52 ABAD - FFFD ABAF ABAE CE53 CE5C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD ABB1 FFFD FFFD - FFFD FFFD FFFD FFFD CE50 D153 FFFD D152 - D157 D14E FFFD D151 D150 FFFD D154 FFFD - D158 AE47 AE4A FFFD FFFD D14F D155 FFFD - FFFD FFFD AE49 D14A FFFD ABB0 D4BA D156 - FFFD D14D FFFD AE48 D14C FFFD FFFD FFFD - FFFD FFFD FFFD D4B1 FFFD FFFD B0EC B0F0 - D4C1 D4AF D4BD B0F1 D4BF FFFD D4C5 FFFD - D4C9 FFFD FFFD D4C0 D4B4 D4BC FFFD D4CA - D4C8 D4BE D4B9 D4B2 D8A6 D4B0 B0F5 D4B7 - B0F6 B0F2 D4AD D4C3 D4B5 FFFD FFFD D4B3 - D4C6 B0F3 FFFD D4CC B0ED B0EF D4BB D4B6 - AE4B B0EE D4B8 D4C7 D4CB D4C2 FFFD D4C4 - FFFD FFFD FFFD D4AE FFFD FFFD FFFD FFFD - D8A1 FFFD D8AA D8A9 B3FA D8A2 FFFD B3FB - B3F9 FFFD D8A4 B3F6 D8A8 FFFD D8A3 D8A5 - D87D B3F4 FFFD D8B2 D8B1 D8AE B3F3 B3F7 - B3F8 D14B D8AB B3F5 B0F4 D8AD D87E D8B0 - D8AF FFFD D8B3 FFFD DCEF FFFD D8AC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D8A7 - DCE7 B6F4 B6F7 B6F2 DCE6 DCEA DCE5 FFFD - B6EC B6F6 DCE2 B6F0 DCE9 FFFD B6EE B6ED - DCEC B6EF DCEE FFFD DCEB B6EB FFFD FFFD - FFFD B6F5 DCF0 DCE4 DCED FFFD FFFD DCE3 - FFFD FFFD B6F1 FFFD B6F3 FFFD DCE8 FFFD - DCF1 FFFD FFFD E15D B9D0 E163 FFFD FFFD - B9D5 E15F E166 E157 B9D7 B9D1 E15C BC55 - E15B E164 B9D2 FFFD B9D6 E15A E160 E165 - E156 B9D4 E15E FFFD FFFD E162 E168 E158 - E161 FFFD B9D3 E167 FFFD FFFD FFFD E159 - FFFD FFFD FFFD BC59 E54B BC57 BC56 E54D - E552 FFFD E54E FFFD E551 BC5C FFFD BEA5 - BC5B FFFD E54A E550 FFFD BC5A E54F FFFD - E54C FFFD BC58 FFFD FFFD FFFD FFFD FFFD - FFFD E94D FFFD E94F E94A BEC1 E94C FFFD - BEC0 E94E FFFD FFFD BEC3 E950 BEC2 E949 - E94B FFFD FFFD FFFD FFFD C0A5 ECCC FFFD - C0A4 ECCD C0A3 ECCB C0A2 ECCA FFFD C253 - C252 F1F6 F1F8 FFFD F1F7 C361 C362 FFFD - FFFD C363 F442 C45B FFFD FFFD F7D3 F7D2 - C5F2 FFFD A468 A4D0 FFFD FFFD A7A7 FFFD - FFFD FFFD FFFD CE5F FFFD FFFD FFFD FFFD - B3FC B3FD FFFD DCF2 B9D8 E169 E553 FFFD - FFFD FFFD C95A FFFD FFFD CAB0 FFFD FFFD - FFFD FFFD FFFD CC42 CE60 D159 AE4C FFFD - FFFD F1F9 FFFD C4DC A469 A57E C970 FFFD - A667 A668 FFFD A95D FFFD FFFD FFFD B0F7 - FFFD B9DA FFFD B9DB B9D9 FFFD A46A FFFD - A4D1 A4D3 A4D2 C95B A4D4 A5A1 C971 FFFD - A5A2 FFFD FFFD FFFD FFFD FFFD A669 A66A - FFFD FFFD FFFD C9CB FFFD A7A8 FFFD CAB1 - FFFD FFFD FFFD A961 CC43 FFFD A95F A960 - A95E D15A FFFD FFFD FFFD ABB6 ABB5 ABB7 - ABB4 FFFD CE61 A962 ABB3 FFFD AE4D AE4E - FFFD AE4F FFFD D4CD FFFD FFFD FFFD B3FE - D8B4 B0F8 FFFD FFFD FFFD FFFD B6F8 FFFD - B9DD B9DC E16A FFFD BC5D BEC4 FFFD EFC0 - F6DA F7D4 A46B A5A3 FFFD A5A4 C9D1 A66C - A66F FFFD C9CF C9CD A66E C9D0 C9D2 C9CC - A671 A670 A66D A66B C9CE FFFD FFFD FFFD - FFFD A7B3 FFFD FFFD A7B0 CAB6 CAB9 CAB8 - FFFD A7AA A7B2 FFFD FFFD A7AF CAB5 CAB3 - A7AE FFFD FFFD FFFD A7A9 A7AC FFFD CAB4 - CABB CAB7 A7AD A7B1 A7B4 CAB2 CABA A7AB - FFFD FFFD FFFD FFFD FFFD A967 A96F FFFD - CC4F CC48 A970 CC53 CC44 CC4B FFFD FFFD - A966 CC45 A964 CC4C CC50 A963 FFFD CC51 - CC4A FFFD CC4D FFFD A972 A969 CC54 CC52 - FFFD A96E A96C CC49 A96B CC47 CC46 A96A - A968 A971 A96D A965 FFFD CC4E FFFD ABB9 - FFFD ABC0 CE6F ABB8 CE67 CE63 FFFD CE73 - CE62 FFFD ABBB CE6C ABBE ABC1 FFFD ABBC - CE70 ABBF FFFD AE56 CE76 CE64 FFFD FFFD - CE66 CE6D CE71 CE75 CE72 CE6B CE6E FFFD - FFFD CE68 ABC3 CE6A CE69 CE74 ABBA CE65 - ABC2 FFFD ABBD FFFD FFFD FFFD FFFD FFFD - AE5C D162 FFFD AE5B FFFD FFFD D160 FFFD - AE50 FFFD AE55 FFFD D15F D15C D161 AE51 - D15B FFFD AE54 AE52 FFFD D163 AE53 AE57 - FFFD FFFD AE58 FFFD AE5A FFFD FFFD FFFD - AE59 FFFD FFFD FFFD D15D D15E FFFD FFFD - FFFD FFFD D164 FFFD D4D4 B0F9 D8C2 D4D3 - D4E6 FFFD FFFD B140 FFFD D4E4 FFFD B0FE - B0FA D4ED D4DD D4E0 FFFD B143 D4EA D4E2 - B0FB B144 FFFD D4E7 D4E5 FFFD FFFD D4D6 - D4EB D4DF D4DA FFFD D4D0 D4EC D4DC D4CF - FFFD B142 D4E1 D4EE D4DE D4D2 D4D7 D4CE - FFFD B141 FFFD D4DB D4D8 B0FC D4D1 FFFD - D4E9 B0FD FFFD D4D9 D4D5 FFFD FFFD D4E8 - FFFD FFFD FFFD FFFD FFFD FFFD B440 D8BB - FFFD D8B8 D8C9 D8BD D8CA FFFD B442 FFFD - FFFD FFFD D8C6 D8C3 FFFD FFFD FFFD FFFD - FFFD D8C4 D8C7 D8CB FFFD D4E3 D8CD DD47 - FFFD B443 D8CE D8B6 D8C0 FFFD D8C5 FFFD - FFFD B441 B444 D8CC D8CF D8BA D8B7 FFFD - FFFD D8B9 FFFD FFFD D8BE D8BC B445 FFFD - D8C8 FFFD FFFD D8BF FFFD D8C1 D8B5 DCFA - DCF8 B742 B740 DD43 DCF9 DD44 DD40 DCF7 - DD46 DCF6 DCFD B6FE B6FD B6FC DCFB DD41 - B6F9 B741 FFFD DCF4 FFFD DCFE DCF3 DCFC - B6FA DD42 DCF5 B6FB DD45 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E16E B9E2 B9E1 B9E3 - E17A E170 E176 E16B E179 E178 E17C E175 - B9DE E174 B9E4 FFFD E16D B9DF FFFD E17B - B9E0 E16F E172 E177 E171 E16C FFFD FFFD - FFFD FFFD E173 E555 BC61 E558 E557 E55A - E55C FFFD BC5F FFFD E556 FFFD E554 FFFD - E55D E55B E559 FFFD E55F FFFD E55E BC63 - BC5E FFFD BC60 BC62 FFFD FFFD E560 E957 - FFFD FFFD E956 E955 FFFD E958 E951 FFFD - E952 E95A E953 FFFD BEC5 E95C FFFD E95B - E954 FFFD ECD1 C0A8 ECCF ECD4 ECD3 E959 - FFFD C0A7 FFFD ECD2 ECCE ECD6 ECD5 C0A6 - FFFD ECD0 FFFD BEC6 FFFD FFFD FFFD C254 - FFFD FFFD FFFD EFC1 F1FA F1FB F1FC C45C - FFFD FFFD C45D FFFD F443 FFFD F5C8 F5C7 - FFFD FFFD F6DB F6DC F7D5 F8A7 FFFD A46C - A46D FFFD A46E A4D5 A5A5 C9D3 A672 A673 - FFFD A7B7 A7B8 A7B6 A7B5 FFFD A973 FFFD - FFFD CC55 A975 A974 CC56 FFFD FFFD FFFD - ABC4 FFFD AE5D D165 FFFD D4F0 FFFD B145 - B447 D4EF B446 FFFD B9E5 FFFD E17D BEC7 - FFFD C0A9 ECD7 FFFD C45E FFFD C570 FFFD - C972 FFFD A5A6 C973 A676 FFFD A674 A675 - A677 FFFD A7BA A7B9 FFFD CABC A7BB FFFD - FFFD CABD CC57 FFFD CC58 FFFD A976 A978 - A97A A977 A97B A979 FFFD FFFD FFFD FFFD - FFFD ABC8 ABC5 ABC7 ABC9 ABC6 D166 CE77 - FFFD FFFD FFFD D168 D167 AE63 FFFD AE5F - FFFD FFFD AE60 AE62 AE64 AE61 FFFD AE66 - AE65 FFFD FFFD FFFD FFFD FFFD B14A D4F2 - D4F1 B149 FFFD B148 B147 B14B B146 FFFD - FFFD D8D5 D8D2 B449 D8D1 D8D6 FFFD B44B - D8D4 B448 B44A D8D3 FFFD DD48 FFFD DD49 - DD4A FFFD FFFD FFFD FFFD B9E6 B9EE E17E - B9E8 B9EC E1A1 B9ED B9E9 B9EA B9E7 B9EB - BC66 D8D0 BC67 BC65 FFFD BC64 E95D BEC8 - ECD8 ECD9 FFFD FFFD C364 C45F FFFD A46F - FFFD A678 FFFD FFFD FFFD FFFD FFFD FFFD - ABCA FFFD D169 AE67 FFFD FFFD B14E B14D - B14C B44C B44D D8D7 B9EF BEC9 A470 C95C - A4D6 C974 FFFD FFFD C9D4 A679 FFFD FFFD - FFFD A97C FFFD FFFD FFFD FFFD DD4B FFFD - FFFD A471 FFFD A4D7 C9D5 FFFD FFFD CABE - FFFD CABF FFFD A7BC FFFD FFFD FFFD D8D8 - B44E FFFD DD4C FFFD FFFD FFFD C0AA A472 - A4A8 A4D8 C975 A5A7 FFFD A7C0 A7BF A7BD - A7BE FFFD FFFD CC59 A97E A9A1 CC5A A97D - FFFD FFFD ABCE CE78 ABCD ABCB ABCC AE6A - AE68 FFFD FFFD D16B AE69 D16A FFFD AE5E - D4F3 FFFD FFFD B150 B151 FFFD FFFD B14F - FFFD B9F0 E1A2 BC68 BC69 FFFD E561 C0AB - EFC2 EFC3 FFFD C4DD F8A8 C94B A4D9 FFFD - A473 FFFD C977 C976 FFFD FFFD FFFD FFFD - A67A C9D7 C9D8 C9D6 FFFD C9D9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CAC7 FFFD CAC2 - CAC4 CAC6 CAC3 A7C4 CAC0 FFFD CAC1 A7C1 - A7C2 CAC5 CAC8 A7C3 CAC9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CC68 FFFD CC62 CC5D - A9A3 CC65 CC63 CC5C CC69 CC6C CC67 CC60 - A9A5 CC66 A9A6 CC61 CC64 CC5B CC5F CC6B - A9A7 FFFD A9A8 FFFD CC5E CC6A A9A2 A9A4 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 5CC6 - srcEnd = 6072 - mappingOffset = 0FB7 - Mapping = - CEAB CEA4 CEAA CEA3 CEA5 CE7D CE7B FFFD - CEAC CEA9 CE79 FFFD ABD0 CEA7 CEA8 FFFD - CEA6 CE7C CE7A ABCF CEA2 CE7E FFFD FFFD - CEA1 CEAD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD AE6F FFFD AE6E FFFD D16C AE6B - D16E FFFD AE70 D16F FFFD FFFD AE73 FFFD - AE71 D170 CEAE D172 FFFD AE6D FFFD AE6C - FFFD D16D D171 AE72 FFFD FFFD FFFD FFFD - B153 B152 FFFD FFFD FFFD D4F5 D4F9 D4FB - B154 D4FE FFFD B158 D541 FFFD B15A FFFD - B156 B15E FFFD B15B D4F7 B155 FFFD D4F6 - D4F4 D543 D4F8 FFFD B157 D542 B15C D4FD - D4FC B15D D4FA B159 FFFD FFFD FFFD FFFD - D544 FFFD D540 D8E7 D8EE D8E3 B451 D8DF - D8EF D8D9 D8EC D8EA D8E4 FFFD D8ED D8E6 - FFFD D8DE D8F0 D8DC D8E9 D8DA FFFD D8F1 - FFFD B452 FFFD D8EB DD4F D8DD B44F FFFD - D8E1 FFFD B450 D8E0 D8E5 FFFD FFFD D8E2 - FFFD FFFD FFFD D8E8 FFFD FFFD FFFD FFFD - DD53 FFFD FFFD FFFD DD56 DD4E FFFD DD50 - FFFD DD55 DD54 B743 FFFD D8DB DD52 FFFD - FFFD B744 FFFD DD4D DD51 FFFD FFFD FFFD - FFFD E1A9 FFFD E1B0 E1A7 FFFD E1AE E1A5 - E1AD E1B1 E1A4 E1A8 E1A3 FFFD B9F1 FFFD - E1A6 B9F2 E1AC E1AB E1AA FFFD FFFD E1AF - FFFD FFFD FFFD FFFD E565 E567 BC6B E568 - FFFD E563 FFFD E562 E56C FFFD E56A BC6A - E56D E564 E569 E56B E566 FFFD FFFD FFFD - FFFD E961 E966 E960 E965 FFFD E95E E968 - E964 E969 E963 E95F E967 FFFD E96A E962 - FFFD ECDA C0AF FFFD C0AD FFFD C0AC C0AE - FFFD FFFD EFC4 FFFD F172 F1FD FFFD FFFD - F444 F445 FFFD C460 FFFD F5C9 FFFD C4DE - FFFD F5CA FFFD F6DE C572 FFFD C571 F6DD - C5C9 FFFD F7D6 FFFD FFFD FFFD FFFD A474 - A67B C9DA CACA A8B5 B15F FFFD FFFD A475 - A5AA A5A9 A5A8 FFFD FFFD A7C5 FFFD FFFD - AE74 FFFD DD57 A476 A477 A478 A4DA FFFD - FFFD ABD1 FFFD CEAF FFFD FFFD FFFD B453 - A479 C95D FFFD FFFD A5AB A5AC C978 FFFD - A67C FFFD FFFD FFFD CACB FFFD A7C6 FFFD - CACC FFFD FFFD A9AE FFFD FFFD CC6E A9AC - A9AB CC6D A9A9 CC6F A9AA A9AD FFFD ABD2 - FFFD ABD4 CEB3 CEB0 CEB1 CEB2 CEB4 ABD3 - FFFD FFFD D174 D173 FFFD AE76 FFFD AE75 - FFFD FFFD FFFD FFFD FFFD B162 D546 FFFD - B161 B163 B160 FFFD FFFD FFFD FFFD B455 - D545 FFFD B456 D8F3 FFFD B457 D8F2 B454 - FFFD FFFD FFFD FFFD DD5A DD5C B745 DD5B - DD59 DD58 FFFD FFFD FFFD E1B4 B9F7 B9F5 - FFFD B9F6 E1B2 E1B3 FFFD B9F3 E571 E56F - FFFD BC6D E570 BC6E BC6C B9F4 FFFD FFFD - E96D E96B E96C E56E ECDC C0B0 ECDB EFC5 - EFC6 E96E F1FE FFFD A47A A5AD A67E C9DB - A67D FFFD A9AF B746 FFFD A4DB A5AE ABD5 - B458 FFFD C979 FFFD C97A FFFD C9DC FFFD - FFFD A7C8 CAD0 CACE A7C9 CACD CACF CAD1 - FFFD A7C7 FFFD FFFD FFFD FFFD FFFD A9B3 - A9B4 A9B1 FFFD FFFD A9B0 CEB8 A9B2 FFFD - FFFD FFFD ABD6 FFFD CEB7 CEB9 CEB6 CEBA - ABD7 AE79 D175 FFFD D177 AE77 D178 AE78 - D176 FFFD CEB5 D547 D54A D54B D548 B167 - B166 B164 B165 D549 FFFD FFFD FFFD FFFD - B168 FFFD FFFD B45A B45B FFFD B45C DD5D - DD5F DD61 B748 B747 B459 DD60 DD5E FFFD - E1B8 FFFD FFFD E1B6 E1BC B9F8 E1BD E1BA - B9F9 E1B7 E1B5 E1BB BC70 E573 E1B9 BC72 - E574 BC71 BC74 E575 BC6F BC73 FFFD E973 - E971 E970 E972 E96F FFFD FFFD C366 FFFD - F446 F447 FFFD F5CB F6DF C655 FFFD FFFD - A9B5 A7CA FFFD FFFD ABD8 FFFD FFFD FFFD - A47B A4DC FFFD A5AF C9DD FFFD A7CB CAD2 - FFFD CEBB ABD9 FFFD B9FA A47C FFFD FFFD - FFFD A6A1 FFFD FFFD B749 A47D A4DD A4DE - FFFD A5B1 A5B0 FFFD C9DE A6A2 FFFD CAD3 - FFFD A7CC FFFD FFFD CC71 CC72 CC73 FFFD - A9B6 A9B7 CC70 A9B8 FFFD FFFD FFFD ABDA - CEBC FFFD D17A AE7A FFFD D179 FFFD B169 - D54C B16A D54D FFFD FFFD FFFD B45D FFFD - FFFD FFFD DD62 FFFD FFFD E1BF E1BE FFFD - B9FB FFFD BC75 E576 BECA E974 C0B1 FFFD - C573 F7D8 FFFD FFFD FFFD FFFD CC74 FFFD - CEBD B16B D8F4 B74A FFFD FFFD FFFD C255 - FFFD FFFD FFFD FFFD A7CE FFFD A7CD ABDB - FFFD D17B FFFD B16D B343 B16E B16C B45E - FFFD E1C0 B9FC BC76 FFFD C94C C9DF FFFD - CAD5 A7CF CAD4 A7D0 FFFD FFFD A9BC CC77 - CC76 A9BB A9B9 A9BA CC75 FFFD FFFD ABDD - CEBE ABE0 ABDC ABE2 ABDE ABDF ABE1 FFFD - FFFD FFFD AE7D AE7C AE7B FFFD FFFD FFFD - D54F B16F B172 B170 FFFD D54E B175 FFFD - B171 D550 B174 B173 FFFD FFFD FFFD D8F6 - D8F5 FFFD B461 B45F B460 D8F7 B74B DD64 - B74C DD63 FFFD FFFD E577 FFFD FFFD BC78 - E1C1 BC77 FFFD B9FD FFFD ECDE E975 C0B2 - ECDD F240 F448 F449 FFFD A4DF FFFD A5B2 - FFFD FFFD FFFD C97B FFFD FFFD A7D2 A7D4 - FFFD C9E2 CAD8 CAD7 CAD6 FFFD C9E1 C9E0 - A6A4 A7D3 A7D1 A6A3 FFFD FFFD FFFD A9BD - CC78 FFFD A9BE CADD FFFD CADF CADE CC79 - FFFD FFFD CADA FFFD A7D8 A7D6 FFFD CAD9 - CADB CAE1 FFFD A7D5 FFFD CADC CAE5 A9C0 - FFFD CAE2 A7D7 FFFD CAE0 CAE3 FFFD A9BF - FFFD A9C1 CAE4 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD CCAF CCA2 CC7E CCAE CCA9 - ABE7 A9C2 CCAA CCAD ABE3 CCAC A9C3 A9C8 - A9C6 CCA3 FFFD CC7C CCA5 A9CD CCB0 ABE4 - CCA6 FFFD ABE5 A9C9 CCA8 FFFD CECD ABE6 - CC7B A9CA ABE8 A9CB A9C7 A9CC CCA7 CC7A - CCAB A9C4 FFFD FFFD CC7D CCA4 CCA1 A9C5 - FFFD CEBF FFFD CEC0 FFFD FFFD FFFD FFFD - FFFD FFFD CECA D1A1 CECB ABEE CECE CEC4 - ABED CEC6 FFFD CEC7 FFFD FFFD CEC9 ABE9 - FFFD FFFD AEA3 FFFD FFFD CEC5 CEC1 AEA4 - FFFD FFFD CECF AE7E D17D CEC8 FFFD D17C - CEC3 CECC FFFD FFFD ABEC AEA1 ABF2 AEA2 - CED0 D17E ABEB AEA6 ABF1 ABF0 ABEF AEA5 - CED1 AEA7 ABEA FFFD CEC2 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 607F - srcEnd = 6298 - mappingOffset = 1364 - Mapping = - B176 D1A4 D1A6 FFFD D1A8 AEA8 AEAE D553 - D1AC D1A3 B178 D551 FFFD AEAD AEAB D1AE - FFFD D552 FFFD D1A5 FFFD AEAC D1A9 AEAF - D1AB FFFD FFFD AEAA D1AA D1AD D1A7 FFFD - AEA9 B179 FFFD D1A2 B177 FFFD FFFD FFFD - FFFD B17A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D555 D55E B464 FFFD B17C B1A3 B465 - D560 B1AA D8F9 D556 B1A2 B1A5 B17E D554 - D562 D565 D949 FFFD D563 D8FD B1A1 B1A8 - B1AC D55D D8F8 D561 B17B D8FA D564 D8FC - D559 FFFD B462 FFFD D557 D558 B1A7 FFFD - FFFD B1A6 D55B B1AB D55F B1A4 D55C FFFD - B1A9 B466 B463 D8FB FFFD D55A FFFD B17D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B46B B46F D940 B751 B46D D944 B471 - DD65 D946 B753 B469 B46C D947 FFFD D948 - D94E B473 B754 FFFD D94A D94F D943 B75E - FFFD B755 B472 D941 D950 FFFD B75D B470 - B74E D94D FFFD B474 D945 D8FE B46A D942 - FFFD D94B FFFD B74D B752 B467 D94C FFFD - B750 FFFD FFFD FFFD B468 FFFD FFFD FFFD - B75C E1C3 DD70 FFFD DD68 E1C2 FFFD DD6C - DD6E FFFD FFFD DD6B FFFD B75B FFFD DD6A - B75F FFFD FFFD FFFD E1D2 FFFD FFFD B75A - BA40 DD71 E1C4 FFFD FFFD B758 DD69 DD6D - B9FE B74F DD66 DD67 BA41 B757 B759 B756 - DD6F FFFD FFFD E1C8 E1C9 E1CE BC7D E1D5 - FFFD BA47 FFFD BA46 E1D0 FFFD BC7C E1C5 - BA45 FFFD E1D4 BA43 BA44 FFFD E1D1 E5AA - BC7A B46E FFFD E1D3 BCA3 E1CB FFFD BC7B - FFFD BCA2 E1C6 E1CA E1C7 E1CD BA48 BC79 - BA42 FFFD E57A E1CF FFFD BCA1 FFFD BCA4 - FFFD E1CC FFFD BC7E E579 FFFD FFFD FFFD - FFFD FFFD E57E BECE E578 E9A3 E5A9 BCA8 - FFFD BCA6 BECC E5A6 E5A2 BCAC FFFD E978 - FFFD FFFD FFFD BCAA E5A1 FFFD E976 FFFD - E5A5 FFFD E5A8 E57D FFFD BCAB FFFD FFFD - BCA5 E977 BECD E5A7 BCA7 BCA9 E5A4 BCAD - E5A3 E57C E57B BECB E5AB E97A ECE0 BED0 - FFFD E9A2 FFFD E97E FFFD ECE1 FFFD BED1 - E9A1 FFFD E97C C0B4 ECDF FFFD E979 E97B - C0B5 BED3 C0B3 BED2 C0B7 E97D BECF FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EFCF - FFFD EFC7 FFFD FFFD FFFD FFFD FFFD ECE7 - EFC8 ECE3 FFFD FFFD C256 ECE5 ECE4 C0B6 - ECE2 ECE6 EFD0 EFCC EFCE FFFD EFC9 EFCA - FFFD EFCD EFCB C367 FFFD FFFD C36A C369 - C368 C461 F44A C462 F241 C4DF F5CC C4E0 - C574 C5CA F7D9 FFFD F7DA F7DB FFFD FFFD - F9BA A4E0 C97C A5B3 FFFD A6A6 A6A7 A6A5 - FFFD A6A8 A7DA A7D9 FFFD CCB1 A9CF A9CE - FFFD FFFD D1AF B1AD B1AE FFFD FFFD FFFD - B475 DD72 B760 B761 DD74 DD76 DD75 FFFD - E1D7 FFFD E1D6 BA49 E1D8 FFFD E5AC BCAE - FFFD BED4 FFFD C0B8 C257 C0B9 FFFD A4E1 - FFFD FFFD FFFD CAE6 FFFD FFFD CCB2 A9D1 - A9D0 A9D2 ABF3 CED2 CED3 FFFD FFFD D1B0 - AEB0 B1AF B476 D951 A4E2 FFFD A47E A4E3 - FFFD C97D A5B7 A5B6 A5B4 A5B5 FFFD FFFD - FFFD A6AB C9E9 C9EB A6AA C9E3 FFFD C9E4 - FFFD C9EA C9E6 C9E8 A6A9 C9E5 C9EC C9E7 - FFFD FFFD FFFD FFFD FFFD FFFD A7E1 A7EA - A7E8 CAF0 CAED CAF5 A7E6 CAF6 FFFD A7DF - CAF3 FFFD A7E5 CAEF CAEE A7E3 CAF4 A7E4 - A9D3 A7DE CAF1 FFFD CAE7 A7DB FFFD A7EE - CAEC CAF2 A7E0 A7E2 FFFD CAE8 FFFD CAE9 - CAEA FFFD A7ED A7E7 A7EC CAEB A7EB A7DD - A7DC A7E9 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 62A8 - srcEnd = 62DC - mappingOffset = 157E - Mapping = - A9E1 CCBE CCB7 A9DC A9EF CCB3 CCBA CCBC - CCBF A9EA FFFD CCBB CCB4 A9E8 CCB8 FFFD - CCC0 A9D9 FFFD CCBD A9E3 A9E2 CCB6 A9D7 - FFFD FFFD A9D8 FFFD A9D6 FFFD A9EE A9E6 - A9E0 A9D4 CCB9 A9DF A9D5 A9E7 A9F0 CED4 - A9E4 CCB5 A9DA A9DD A9DE FFFD A9EC A9ED - A9EB A9E5 A9E9 A9DB ABF4 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 62EB - srcEnd = 6316 - mappingOffset = 15B3 - Mapping = - CEDA AC41 ABF8 ABFA AC40 CEE6 ABFD D1B1 - AEB1 AC43 CED7 CEDF ABFE CEDE CEDB CEE3 - CEE5 ABF7 ABFB AC42 AEB3 CEE0 ABF9 AC45 - CED9 FFFD FFFD FFFD ABFC AEB2 ABF6 FFFD - CED6 CEDD CED5 CED8 CEDC D1B2 AC44 FFFD - CEE1 CEE2 CEE4 ABF5 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 6328 - srcEnd = 63B1 - mappingOffset = 15DF - Mapping = - AEC1 D1BE AEBF AEC0 D1B4 D1C4 FFFD AEB6 - FFFD FFFD D566 D1C6 D1C0 FFFD D1B7 FFFD - D1C9 D1BA AEBC D57D D1BD AEBE AEB5 FFFD - D1CB D1BF AEB8 D1B8 D1B5 D1B6 AEB9 D1C5 - D1CC AEBB D1BC D1BB AEC3 AEC2 AEB4 AEBA - AEBD D1C8 FFFD FFFD D1C2 AEB7 D1B3 D1CA - D1C1 D1C3 D1C7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D567 FFFD B1B7 - B1CB B1CA FFFD B1BF FFFD D579 D575 D572 - D5A6 B1BA B1B2 FFFD FFFD D577 B4A8 B1B6 - D5A1 FFFD B1CC B1C9 D57B D56A FFFD FFFD - B1C8 D5A3 D569 B1BD B1C1 D5A2 FFFD D573 - B1C2 B1BC D568 FFFD B478 D5A5 D571 B1C7 - D574 D5A4 B1C6 FFFD D952 FFFD B1B3 D56F - B1B8 B1C3 FFFD B1BE D578 D56E D56C D57E - B1B0 B1C4 B1B4 B477 D57C B1B5 FFFD B1B1 - B1C0 B1BB B1B9 D570 B1C5 D56D D57A D576 - D954 D953 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 63BD - srcEnd = 63F9 - mappingOffset = 1669 - Mapping = - D56B D964 FFFD B47A FFFD D96A D959 D967 - DD77 B47D D96B D96E B47C D95C D96D D96C - B47E D955 B479 B4A3 FFFD B4A1 D969 FFFD - D95F B4A5 D970 D968 D971 B4AD B4AB D966 - D965 FFFD D963 D95D B4A4 FFFD B4A2 D1B9 - D956 FFFD DDB7 D957 B47B B4AA DD79 FFFD - B4A6 B4A7 D958 D96F DD78 D960 D95B B4A9 - D961 D95E FFFD FFFD B4AE -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 6406 - srcEnd = 679F - mappingOffset = 16A6 - Mapping = - B770 FFFD FFFD DD7C DDB1 DDB6 DDAA B76C - DDBB B769 DD7A FFFD DD7B B762 B76B DDA4 - B76E B76F DDA5 FFFD DDB2 DDB8 B76A FFFD - B764 DDA3 DD7D DDBA DDA8 DDA9 DD7E DDB4 - DDAB DDB5 DDAD FFFD B765 E1D9 B768 B766 - DDB9 DDB0 DDAC FFFD FFFD DDA1 BA53 DDAF - B76D DDA7 FFFD DDA6 FFFD FFFD FFFD B767 - B763 E1EE DDB3 DDAE FFFD DDA2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E1E9 FFFD E1DA - E1E5 FFFD E1EC BA51 B4AC E1EA BA4C FFFD - FFFD FFFD BA4B E1F1 FFFD E1DB E1E8 E1DC - E1E7 BA4F E1EB D962 FFFD FFFD FFFD E1F2 - E1E3 BA52 E5BA BCAF FFFD E1F0 E1EF BA54 - E5AD BCB0 E5AE FFFD E1DF E1E0 E1DD E1E2 - E1DE E1F3 BA4E BCB1 BA50 BA55 FFFD E1E1 - FFFD E1ED FFFD FFFD E1E6 FFFD FFFD E5B1 - FFFD BA4A BCB4 E9AA E5B6 E5B5 E5B7 FFFD - FFFD E5B4 BCB5 FFFD BCBB BCB8 FFFD BCB9 - E5AF E5B2 E5BC BCC1 BCBF FFFD E5B3 D95A - BCB2 E5B9 E5B0 FFFD BCC2 E5B8 BA4D BCB7 - E1E4 FFFD FFFD BCBA FFFD BCBE BCC0 BCBD - BCBC FFFD BCB6 E5BB BCB3 BCC3 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BED8 BED9 E9A9 - BEE2 BEDF FFFD BED6 BEDD E9AB BEDB BED5 - FFFD BEDC FFFD E9A8 C0BB BED7 FFFD BEDE - C0BA E9A7 E9A6 FFFD BEE0 FFFD BEE1 FFFD - E9A5 E9A4 C0BC E9AE BEDA E9AC FFFD FFFD - FFFD FFFD C0BD FFFD C0C2 ECEA ECEC FFFD - C0BF FFFD ECED ECE9 FFFD ECEB C0C0 C0C3 - FFFD ECE8 C0BE C0C1 C259 E9AD C258 FFFD - FFFD C25E EFD4 FFFD C25C C25D EFD7 EFD3 - C25A EFD1 C36B EFD5 FFFD EFD6 EFD2 FFFD - C25B F242 FFFD F245 FFFD FFFD F246 F244 - F247 C36C F243 FFFD FFFD F44E C464 F44D - F44C F44B C463 C465 FFFD F5CD C4E2 C4E1 - FFFD FFFD F6E1 F6E0 F6E3 C5CB C575 F7DD - F6E2 FFFD FFFD F7DC C5CD C5CC C5F3 F8A9 - F8EF A4E4 FFFD FFFD D972 E9AF FFFD FFFD - A6AC CAF7 A7F1 A7EF FFFD A7F0 FFFD CCC1 - A9F1 AC46 FFFD CEE7 FFFD CEE8 FFFD AC47 - D1CE FFFD AEC4 AEC5 D1CD FFFD FFFD FFFD - FFFD B1D3 FFFD B1CF FFFD D5A7 B1D6 B1D5 - B1CE B1D1 B1D4 B1D0 FFFD FFFD D976 B1CD - B4AF FFFD FFFD FFFD B4B1 B4B2 D975 D978 - B4B0 D973 D977 FFFD D974 FFFD B771 FFFD - FFFD DDBC FFFD FFFD BA56 E1F4 BEE3 BCC4 - E5BD BCC5 BCC6 E5BF E5BE E5C0 E9B1 FFFD - FFFD E9B0 ECEF ECEE C0C4 C0C5 F248 FFFD - FFFD A4E5 FFFD FFFD FFFD FFFD D979 FFFD - FFFD FFFD B4B4 B4B3 DDBD FFFD EFD8 C4E3 - F7DE A4E6 FFFD AEC6 FFFD B1D8 B1D7 D97A - D97B B772 E1F5 BA57 E9B2 FFFD A4E7 A5B8 - FFFD A9F2 CCC2 FFFD CEE9 AC48 B1D9 FFFD - D97C B4B5 B773 FFFD E5C1 E5C2 FFFD FFFD - ECF0 C25F F8F0 A4E8 FFFD CCC3 A9F3 AC49 - FFFD CEEA FFFD AEC7 D1D2 D1D0 D1D1 AEC8 - D1CF FFFD FFFD FFFD FFFD B1DB B1DC D5A8 - B1DD B1DA D97D FFFD D97E DDBE FFFD FFFD - BA59 BA58 FFFD FFFD ECF1 EFD9 FFFD F24A - F249 F44F FFFD C95E AC4A FFFD FFFD A4E9 - A5B9 FFFD A6AE A6AD FFFD FFFD A6AF A6B0 - C9EE C9ED CAF8 A7F2 CAFB CAFA CAF9 CAFC - FFFD FFFD FFFD FFFD A9F4 CCC9 CCC5 CCCE - FFFD FFFD A9FB FFFD A9F9 CCCA CCC6 CCCD - A9F8 AA40 CCC8 CCC4 A9FE CCCB A9F7 CCCC - A9FA A9FC CCD0 CCCF CCC7 A9F6 A9F5 A9FD - FFFD FFFD FFFD FFFD FFFD FFFD CEEF CEF5 - FFFD AC50 AC4D CEEC CEF1 FFFD AC53 AC4B - CEF0 AC4E AC51 FFFD FFFD CEF3 FFFD AC4C - CEF8 AC4F FFFD AC52 CEED CEF2 CEF6 CEEE - CEEB FFFD FFFD CEF7 CEF4 FFFD FFFD FFFD - FFFD FFFD FFFD AED0 AEC9 AECC FFFD AECF - FFFD D1D5 FFFD AECA D1D3 FFFD AECE FFFD - FFFD AECB FFFD D1D6 AECD FFFD FFFD FFFD - FFFD FFFD FFFD D5AC B1DF D5AB D5AD B1DE - B1E3 D1D4 FFFD D5AA D5AE FFFD B1E0 D5A9 - B1E2 FFFD B1E1 FFFD D9A7 FFFD D9A2 FFFD - B4B6 B4BA B4B7 D9A5 D9A8 FFFD B4B8 FFFD - B4B9 B4BE DDC7 D9A6 B4BC D9A3 D9A1 FFFD - B4BD FFFD D9A4 FFFD FFFD FFFD B779 FFFD - DDBF B776 B777 B775 DDC4 DDC3 DDC0 B77B - FFFD FFFD DDC2 B4BB FFFD FFFD DDC6 DDC1 - B778 B774 B77A DDC5 FFFD FFFD FFFD BA5C - FFFD E1F8 E1F7 E1F6 BA5A FFFD FFFD FFFD - FFFD FFFD BA5B E5C5 E5C8 BCC8 FFFD FFFD - BCC7 E5C9 E5C4 BCCA E5C6 FFFD BCC9 E5C3 - FFFD E5C7 BEE9 BEE6 E9BB E9BA FFFD E9B9 - E9B4 FFFD E9B5 FFFD FFFD FFFD BEE7 FFFD - BEE4 BEE8 E9B3 BEE5 E9B6 E9B7 E9BC FFFD - FFFD E9B8 FFFD FFFD ECF2 FFFD FFFD FFFD - C0C7 FFFD EFDC C0C6 EFDA EFDB C260 C36E - F24B FFFD C36D FFFD FFFD F451 F452 FFFD - C466 FFFD F450 C4E4 FFFD F7DF C5CE F8AA - F8AB FFFD A4EA FFFD A6B1 A6B2 A7F3 FFFD - CCD1 AC54 AED1 B1E4 FFFD FFFD B0D2 FFFD - B4BF B4C0 B3CC D9A9 FFFD B77C E1FA E1F9 - FFFD FFFD A4EB A6B3 CCD2 AA42 FFFD AA41 - FFFD CEF9 CEFA FFFD D1D7 D1D8 AED2 AED3 - FFFD AED4 D5AF FFFD FFFD B1E6 FFFD B4C2 - FFFD B4C1 DDC8 DF7A E1FB E9BD FFFD FFFD - C261 C467 A4EC FFFD A5BC A5BD A5BB A5BE - A5BA FFFD FFFD A6B6 FFFD C9F6 A6B5 A6B7 - FFFD FFFD C9F1 C9F0 C9F3 C9F2 C9F5 A6B4 - C9EF C9F4 FFFD FFFD FFFD FFFD FFFD CAFD - A7FD CAFE CB43 A7FC FFFD CB47 CB42 CB45 - A7F5 A7F6 A7F7 A7F8 FFFD A840 FFFD CB41 - A7FA A841 FFFD CB40 CB46 FFFD A7F9 CB44 - A7FB A7F4 A7FE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD AA57 FFFD CCD4 AA43 - FFFD AA4D AA4E AA46 AA58 AA48 CCDC AA53 - CCD7 AA49 CCE6 CCE7 CCDF CCD8 AA56 CCE4 - AA51 AA4F FFFD CCE5 FFFD CCE3 CCDB CCD3 - CCDA AA4A FFFD AA50 FFFD AA44 CCDE CCDD - CCD5 FFFD AA52 CCE1 CCD6 AA55 CCE8 AA45 - FFFD AA4C CCD9 CCE2 AA54 FFFD AA47 AA4B - FFFD CCE0 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 67AE - srcEnd = 67FF - mappingOffset = 1A40 - Mapping = - CF5B AC5C AC69 FFFD CF56 CF4C AC62 CF4A - AC5B CF45 AC65 CF52 CEFE CF41 FFFD FFFD - FFFD FFFD CF44 CEFB CF51 CF61 AC60 CF46 - CF58 FFFD CEFD CF5F CF60 CF63 CF5A CF4B - CF53 AC66 AC59 AC61 AC6D AC56 AC58 FFFD - FFFD FFFD CF43 AC6A AC63 CF5D CF40 AC6C - AC67 CF49 FFFD FFFD AC6B CF50 CF48 AC64 - CF5C CF54 FFFD AC5E CF62 CF47 AC5A CF59 - CF4F AC5F CF55 AC57 CEFC AC68 AEE3 AC5D - CF4E CF4D CF42 FFFD CF5E FFFD CF57 FFFD - FFFD AC55 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 6812 - srcEnd = 6854 - mappingOffset = 1A92 - Mapping = - D1EC AEEA D1ED FFFD D1E1 AEDF AEEB FFFD - D1DA FFFD D1E3 D1EB FFFD D1D9 D1F4 AED5 - FFFD FFFD FFFD D1F3 D1EE FFFD D1EF AEDD - AEE8 D1E5 FFFD D1E6 D1F0 D1E7 FFFD D1E2 - D1DC D1DD D1EA D1E4 FFFD FFFD AED6 AEDA - D1F2 D1DE AEE6 AEE2 FFFD FFFD AEE5 AEEC - AEDB AEE7 D1E9 AEE9 AED8 FFFD AED7 D1DB - FFFD D1DF AEE0 D1F1 D1E8 D1E0 AEE4 AEE1 - FFFD AED9 AEDC -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 686B - srcEnd = 68B5 - mappingOffset = 1AD5 - Mapping = - D5C4 FFFD D5B4 D5B5 D5B9 FFFD D5C8 D5C5 - FFFD D5BE D5BD B1ED D5C1 D5D0 D5B0 FFFD - D5D1 D5C3 D5D5 D5C9 B1EC D5C7 B1E7 B1FC - B1F2 FFFD B1F6 B1F5 D5B1 FFFD D5CE D5D4 - D5CC D5D3 FFFD FFFD D5C0 D5B2 D5D2 D5C2 - B1EA B1F7 FFFD D5CB B1F0 FFFD FFFD FFFD - D5CA D5B3 B1F8 FFFD B1FA D5CD B1FB B1E9 - D5BA D5CF FFFD FFFD B1EF B1F9 D5BC D5C6 - D5B7 D5BB B1F4 D5B6 B1E8 B1F1 B1EE D5BF - AEDE D9C0 B1EB -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 68C4 - srcEnd = 6917 - mappingOffset = 1B20 - Mapping = - B1F3 FFFD D9C3 D9D9 D9CE B4D6 FFFD B4D1 - D9BD B4D2 D9CD FFFD D9C6 D9D3 B4CE D9AB - D9D5 B4C4 D9B3 B4C7 B4C6 FFFD B4D7 FFFD - D9AD D9CF D9D0 B4C9 B4C5 D9BB FFFD B4D0 - D9B6 FFFD D9D1 B4CC D9C9 D9D6 D9B0 D9B5 - D9AF FFFD B4CB D9C2 DDDE D9B1 B4CF D9BA - D9D2 B4CA D9B7 D9B4 D9C5 B4CD B4C3 B4D9 - D9C8 D9C7 FFFD FFFD FFFD FFFD FFFD FFFD - D9AC B4C8 D9D4 D9BC D9BE FFFD D9CB D9CA - D9AA B4D3 B4D5 D9B2 D9B9 D9C1 B4D4 D9B8 - D9C4 D9D7 FFFD D9CC -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 6925 - srcEnd = 6C9D - mappingOffset = 1B74 - Mapping = - D9D8 FFFD FFFD FFFD FFFD D9AE FFFD FFFD - FFFD FFFD DDF2 B7A6 FFFD DDF0 DDDB DDE0 - DDD9 FFFD DDEC DDCB DDD2 FFFD DDEA DDF4 - DDDC FFFD DDCF DDE2 DDE7 DDD3 FFFD DDE4 - DDD0 FFFD FFFD DDD7 DDD8 B7A8 DDEB DDE9 - FFFD DDCC DDEE FFFD DDEF DDF1 B7AC B7A4 - FFFD D5B8 DDD4 DDE6 DDD5 B7A1 B7B1 DDED - B7AF B7AB DDCA B7A3 FFFD DDCD B7B0 FFFD - DDDD DDC9 FFFD B7A9 DDE1 DDD1 B7AA DDDA - B77E B4D8 DDE3 D9BF DDCE FFFD FFFD DDE8 - B7A5 DDE5 B7A2 DDDF B7AD DDD6 DDF3 FFFD - FFFD FFFD FFFD FFFD FFFD B7A7 DEC6 FFFD - FFFD B7AE FFFD FFFD FFFD FFFD FFFD FFFD - E24A E248 FFFD E25E E246 FFFD E258 B77D - BA5F E242 E25D FFFD E247 E255 BA64 BA5D - FFFD E25B FFFD E240 E25A FFFD BA6F E251 - E261 BA6D E249 BA5E E24B E259 BA67 E244 - BA6B BA61 E24D E243 E1FC FFFD E257 BA68 - E260 E1FD BA65 FFFD E253 FFFD BA66 E245 - E250 E24C E24E FFFD BA60 E25F BA6E E24F - FFFD E262 FFFD FFFD E1FE E254 BA63 BA6C - BA6A E241 E256 BA69 FFFD FFFD BA62 E252 - FFFD FFFD FFFD FFFD E25C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E5D5 FFFD E5D1 - E5CD E5E1 E5DE BCCD FFFD FFFD E5E5 E5D4 - BCD8 E5DB FFFD FFFD E5D0 E5DA BCD5 E5EE - FFFD E5EB E5DD E5CE FFFD FFFD E5E2 E5E4 - BCD1 E5D8 E5D3 E5CA BCCE BCD6 FFFD E5E7 - BCD7 E5CB E5ED E5E0 E5E6 BCD4 FFFD FFFD - E5E3 FFFD E5EA FFFD BCD9 FFFD BCD3 E5DC - E5CF E5EF E5CC E5E8 BCD0 FFFD E5D6 FFFD - E5D7 BCCF BCCC E5D2 BCD2 FFFD BCCB FFFD - E5E9 E5EC E5D9 E9CA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E9C2 FFFD E9BE - BEF6 FFFD FFFD BEEB BEF0 BEEC E9CC E9D7 - BEEA E9C4 E9CD E5DF E9CE FFFD FFFD BEF1 - FFFD E9DD BEF5 BEF8 E9C0 FFFD BEF4 FFFD - E9DB E9DC E9D2 E9D1 E9C9 FFFD FFFD E9D3 - E9DA E9D9 FFFD BEEF BEED E9CB E9C8 FFFD - E9C5 E9D8 BEF7 E9D6 BEF3 BEF2 FFFD E9D0 - FFFD E9BF E9C1 E9C3 E9D5 E9CF BEEE FFFD - E9C6 FFFD E9D4 FFFD FFFD FFFD FFFD FFFD - FFFD E9C7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C0CF ED45 C0C8 ECF5 FFFD ED41 C0CA - ED48 FFFD ECFC FFFD ECF7 FFFD FFFD ED49 - ECF3 ECFE FFFD C0D1 ED44 ED4A ECFD C0C9 - ED40 ECF4 C0D0 FFFD FFFD ED47 ECF9 C0CC - FFFD ECFB ECF8 C0D2 ECFA C0CB C0CE ED43 - ECF6 ED46 FFFD ED42 FFFD FFFD FFFD C263 - EFE7 C268 C269 FFFD FFFD FFFD C262 EFE6 - FFFD EFE3 EFE4 C266 EFDE EFE2 C265 FFFD - EFDF FFFD FFFD FFFD FFFD C267 C264 FFFD - EFDD EFE1 EFE5 FFFD FFFD FFFD F251 F24E - F257 FFFD F256 F254 F24F FFFD C372 FFFD - FFFD FFFD FFFD FFFD F250 C371 C0CD F253 - C370 F258 F252 F24D EFE0 FFFD FFFD FFFD - C36F FFFD F24C F456 FFFD F455 F255 C468 - FFFD F459 F45A F454 F458 FFFD F453 FFFD - FFFD FFFD FFFD F5D1 F457 C4E7 C4E5 F5CF - FFFD FFFD FFFD F5D2 FFFD F5CE F5D0 C4E6 - FFFD FFFD FFFD F6E5 F6E6 C576 F6E4 FFFD - FFFD FFFD F7E2 C5CF F7E0 F7E1 F8AC FFFD - FFFD C656 F8F3 F8F1 F8F2 F8F4 FFFD FFFD - FFFD F9BB FFFD A4ED A6B8 FFFD AA59 FFFD - CCE9 FFFD FFFD CF64 FFFD FFFD FFFD D1F5 - D1F7 FFFD D1F6 FFFD D1F8 B1FD D5D7 D1F9 - FFFD D5D6 D5D8 D5D9 D9DA B4DB D9DB D9DD - B4DC B4DA D9DC FFFD DDFA DDF8 DDF7 FFFD - DDF6 DDF5 B7B2 DDF9 BA70 E263 E265 BA71 - E264 BCDB FFFD BCDA E5F0 FFFD FFFD E9DF - E9DE E9E0 FFFD FFFD BEF9 FFFD ED4B C0D3 - FFFD EFE8 C26A F259 C577 A4EE A5BF A6B9 - A842 AA5A AA5B FFFD FFFD AC6E FFFD FFFD - D1FA FFFD FFFD FFFD FFFD B7B3 FFFD FFFD - FFFD E6D1 BEFA C26B A4EF FFFD A6BA FFFD - FFFD CCEB AA5C CCEA FFFD CF65 AC6F CF66 - FFFD AC70 FFFD D1FC AEEE AEED FFFD D5DE - D5DC D5DD D5DB FFFD D5DA FFFD FFFD D9DE - D9E1 B4DE D9DF B4DD D9E0 FFFD DDFB FFFD - FFFD E266 E267 E268 FFFD E5F3 E5F2 BCDC - E5F1 E5F4 E9E1 FFFD FFFD E9E2 E9E3 FFFD - ED4C C0D4 C26C F25A FFFD C4E8 C95F FFFD - AC71 CF67 AEEF FFFD FFFD B1FE FFFD B4DF - D9E2 FFFD B7B5 B7B4 FFFD FFFD E269 E26A - BCDD BCDE E9E5 E9E4 EFE9 F7E3 A4F0 C960 - A5C0 FFFD A843 CB48 FFFD AC72 B7B6 A4F1 - FFFD CF68 AC73 CF69 FFFD C0D5 A4F2 FFFD - FFFD CCEC FFFD CF6A FFFD D242 D241 D1FE - FFFD D1FD D243 D240 FFFD FFFD B240 B241 - FFFD FFFD B4E0 D9E3 FFFD D9E4 D9E5 FFFD - FFFD FFFD DE41 DE42 DE40 FFFD DDFD DDFE - B7B7 E26B E5F7 E5F6 E5F5 E5F8 E9E7 E9E6 - BEFB E9E8 FFFD C0D6 ED4D FFFD EFEA F25B - F6E7 FFFD A4F3 A5C2 A5C1 FFFD AA5D C961 - C97E A6BB FFFD C9F7 CB49 CB4A AA5E FFFD - CCED FFFD AC74 CF6B CF6C FFFD AEF0 AEF4 - D244 AEF3 AEF1 AEF2 FFFD D5DF B242 B4E3 - FFFD B4E1 B4E2 D9E6 FFFD FFFD BA72 A4F4 - FFFD C9A1 FFFD A5C3 FFFD FFFD C9A4 FFFD - FFFD A5C6 C9A3 A5C5 A5C4 A844 C9A2 FFFD - FFFD C9F8 FFFD FFFD FFFD C9FC C9FE CA40 - A6C5 A6C6 C9FB A6C1 FFFD C9F9 FFFD C9FD - A6C2 FFFD A6BD FFFD A6BE FFFD A6C4 C9FA - A6BC A845 A6BF A6C0 A6C3 FFFD FFFD FFFD - CB5B CB59 CB4C A851 CB53 A84C CB4D FFFD - CB55 FFFD CB52 A84F CB51 A856 CB5A A858 - FFFD A85A FFFD CB4B FFFD A84D CB5C FFFD - A854 A857 FFFD CD45 A847 A85E A855 CB4E - A84A A859 CB56 A848 A849 CD43 CB4F A850 - A85B CB5D CB50 A84E FFFD A853 CCEE A85C - CB57 A852 FFFD A85D A846 CB54 A84B CB58 - CD44 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 6CAB - srcEnd = 6D42 - mappingOffset = 1EED - Mapping = - AA6A AA7A CCF5 AA71 FFFD CD4B AA62 FFFD - AA65 CD42 FFFD CCF3 CCF7 AA6D AA6F CCFA - AA76 AA68 AA66 AA67 AA75 CD47 AA70 CCF9 - CCFB AA6E AA73 CCFC CD4A FFFD AC75 AA79 - FFFD AA63 CD49 FFFD CD4D CCF8 CD4F CD40 - AA6C CCF4 AA6B AA7D AA72 FFFD CCF2 CF75 - AA78 AA7C CD41 CD46 FFFD AA7E AA77 AA69 - AA5F FFFD AA64 FFFD CCF6 AA60 CD4E FFFD - CCF0 CCEF CCFD CCF1 AA7B AEF5 AA74 CCFE - AA61 FFFD ACA6 FFFD FFFD FFFD CD4C FFFD - FFFD FFFD FFFD FFFD FFFD CF7C CFA1 FFFD - CFA4 CF77 FFFD FFFD CFA7 CFAA CFAC CF74 - AC76 AC7B D249 ACAD CFA5 CFAD CF7B CF73 - FFFD FFFD FFFD D264 AC7E CFA2 CF78 CF7A - ACA5 FFFD CF7D AC7D CF70 CFA8 FFFD CFAB - FFFD FFFD AC7A FFFD ACA8 CF6D ACAA AC78 - ACAE CFA9 CF6F ACAB D25E CD48 AC7C AC77 - CF76 CF6E ACAC ACA4 CFA3 ACA9 ACA7 CF79 - ACA1 CF71 ACA2 ACA3 CF72 CFA6 AC79 CF7E -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 6D58 - srcEnd = 6D98 - mappingOffset = 1F85 - Mapping = - D24C AEFD AF43 FFFD FFFD FFFD D255 D25B - D257 D24A D24D D246 D247 AF4A AEFA D256 - D25F AF45 AEF6 FFFD AF40 D24E AF42 D24F - D259 FFFD FFFD FFFD AF44 D268 D248 AEFC - AEFB AF48 D245 D266 D25A D267 D261 D253 - D262 FFFD D25C D265 D263 AF49 D254 AEF9 - AEF8 AF41 AF47 D260 AF46 D251 B243 FFFD - D269 D250 D24B AEFE AF4B AEF7 FFFD D258 - D25D -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 6DAA - srcEnd = 6E05 - mappingOffset = 1FC6 - Mapping = - B265 D5E1 D5E5 FFFD B252 B250 FFFD FFFD - B247 D5E3 D5E2 B25B FFFD D5E8 B255 FFFD - D5FA D647 B244 D5F7 D5F0 B267 D5E0 FFFD - D5FC FFFD B264 B258 B263 B24E D5EC D5FE - D5F6 B24F B249 D645 FFFD D5FD D640 B251 - B259 D642 D5EA D5FB D5EF D644 B25E B246 - B25C D5F4 D5F2 D5F3 B253 D5EE D5ED B248 - D5E7 D646 B24A D5F1 B268 FFFD B262 D5E6 - B25F B25D B266 D5F8 B261 D252 D5F9 B260 - D641 B245 D5F5 B257 D5E9 B256 FFFD B254 - B24C B24B D9E7 D643 FFFD FFFD D5EB FFFD - FFFD D9FC FFFD B24D -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 6E19 - srcEnd = 6E79 - mappingOffset = 2022 - Mapping = - B541 B25A B4EE D9F6 B4FC FFFD D9EA B4EB - B4E7 DA49 B4ED B4F1 B4EC B4F5 DA4D DA44 - FFFD FFFD D9F1 B4FA B4F4 D9FD B4E4 DA4A - DA43 B4E8 D9F7 B4F7 DA55 DA56 FFFD B4E5 - DA48 B4F9 D9FB D9ED D9EE B4FD D9F2 D9F9 - D9F3 FFFD B4FB B544 D9EF D9E8 D9E9 FFFD - D9EB B4EA D9F8 FFFD B4F8 B542 FFFD FFFD - D9FA DA53 DA4B B4E6 DA51 B4F2 FFFD B4F0 - FFFD DA57 B4EF DA41 D9F4 D9FE B547 DA45 - DA42 D9F0 B543 DA4F DA4C DA54 B4E9 DA40 - B546 FFFD DA47 FFFD FFFD B4F3 B4F6 FFFD - DA46 B545 D9F5 D5E4 FFFD FFFD DA50 DA4E - DA52 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 6E88 - srcEnd = 6EDC - mappingOffset = 2083 - Mapping = - D9EC B540 FFFD FFFD FFFD DE61 DE60 DE46 - B7BD FFFD DE5F DE49 DE4A FFFD B7C7 DE68 - B7C2 DE5E FFFD DE43 B7C8 B7BE DE52 DE48 - DE4B DE63 B7B8 DE6A DE62 B7C1 DE57 B7CC - FFFD FFFD B7CB B7C5 FFFD FFFD DE69 B7B9 - DE55 DE4C DE59 DE65 B7CD FFFD B7BB DE54 - FFFD DE4D B7C4 FFFD B7C3 DE50 DE5A DE64 - DE47 DE51 B7BC DE5B B7C9 B7C0 DE4E B7BF - DE45 DE53 DE67 B4FE BAB0 DE56 E26C DE58 - DE66 B7C6 DE4F B7BA B7CA BCF0 DE44 FFFD - DE5D FFFD FFFD FFFD DE5C -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 6EEB - srcEnd = 7E9C - mappingOffset = 20D8 - Mapping = - E2AA BAAD E27D E2A4 BAA2 FFFD E26E BAAF - FFFD BA77 E26D E2B0 BAB1 E271 E2A3 FFFD - E273 E2B3 E2AF BA75 BAA1 E653 BAAE BA7D - E26F FFFD E2AE BAA3 E2AB E2B8 E275 E27E - FFFD FFFD E2B6 E2AC BA7C FFFD FFFD E27C - BA76 BA74 BAA8 FFFD FFFD E27A E277 E278 - FFFD E2B2 FFFD E2B7 E2B5 BA7A E2B9 BA7E - BAA7 FFFD E270 E5FA E279 FFFD BA78 BAAC - BAA9 BA7B E2A5 E274 BAAA E2A7 BAA4 BAA6 - BA73 FFFD E2A9 E2A1 E272 BAA5 E2B1 E2B4 - E27B E2A8 FFFD BA79 BCDF E2A6 E5F9 FFFD - E2AD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E276 E644 E64E BCE2 E64D - E659 BCE4 E64B FFFD E64F BCEF FFFD E646 - BCE7 FFFD E652 E9F0 BCF3 BCF2 E654 E643 - E65E BCED FFFD BCE3 E657 FFFD E65B E660 - E655 E649 BCE6 BCE9 BCF1 BCEC FFFD E64C - E2A2 FFFD FFFD E648 E65F BCE8 FFFD BCEB - E661 BCE0 E656 E5FB E65C C0DF FFFD E64A - FFFD BCE1 E645 BCE5 E5FC BAAB E641 FFFD - E65A E642 E640 BCEA FFFD E658 FFFD E5FE - E651 E650 E65D E647 BCEE FFFD FFFD FFFD - FFFD FFFD FFFD E9F3 FFFD BF49 BEFE EA40 - E9EB BF41 E9F7 BF48 BF43 E9F5 ED4F E9FB - EA42 E9FA E9E9 E9F8 EA44 EA46 BEFD EA45 - BF44 BF4A FFFD BF47 FFFD E9FE BF46 E9F9 - FFFD E9ED E9F2 FFFD E9FD BF45 BF42 BEFC - BF40 E9F1 FFFD E5FD E9EC E9EF EA41 E9F4 - E9EA ED4E EA43 E9EE E9FC FFFD FFFD FFFD - FFFD ED51 C0E3 FFFD FFFD C0D7 FFFD FFFD - C0DB ED53 ED59 ED57 C0D9 C0DA C0E1 ED5A - ED52 C0DC FFFD ED56 ED55 ED5B C0E2 FFFD - C0DD C0E0 ED54 C0E4 C0DE C0E5 C0D8 ED58 - FFFD ED50 FFFD FFFD EFF7 FFFD FFFD C271 - EFF4 EFF6 FFFD C26F EFF2 EFF3 EFEE FFFD - FFFD E9F6 EFEF C270 EFEB FFFD C26D EFF8 - C26E EFEC EFED EFF1 C273 FFFD C272 FFFD - FFFD EFF0 C378 F25F F265 C379 F25C C376 - C373 F267 C377 FFFD C374 F25E F261 F262 - F263 F266 FFFD EFF5 F25D C375 F264 F268 - F260 FFFD FFFD FFFD F45D C46A F460 C46B - F468 F45F F45C FFFD F45E F462 F465 F464 - F467 F45B FFFD C469 F463 F466 F469 F461 - F5D3 F5D4 F5D8 F5D9 FFFD F5D6 F5D7 F5D5 - FFFD C4E9 FFFD FFFD FFFD FFFD C578 F6EB - FFFD FFFD F6E8 F6E9 F6EA C579 FFFD F7E5 - F7E4 FFFD F8AF C5F4 F8AD F8B0 F8AE F8F5 - C657 C665 F9A3 F96C FFFD F9A2 F9D0 F9D1 - A4F5 FFFD FFFD FFFD FFFD A6C7 CA41 FFFD - FFFD CB5E FFFD A85F FFFD A862 FFFD CB5F - FFFD A860 A861 FFFD FFFD FFFD FFFD CD58 - CD5A CD55 CD52 CD54 FFFD FFFD FFFD AAA4 - FFFD FFFD FFFD AAA2 FFFD FFFD CD56 AAA3 - CD53 CD50 AAA1 CD57 FFFD CD51 AAA5 CD59 - FFFD FFFD FFFD FFFD CFAF FFFD CFB3 FFFD - FFFD ACB7 FFFD FFFD FFFD FFFD CFB6 FFFD - ACAF ACB2 ACB4 ACB6 ACB3 CFB2 CFB1 FFFD - ACB1 CFB4 CFB5 FFFD CFAE ACB5 FFFD ACB0 - FFFD FFFD FFFD CFB0 FFFD FFFD FFFD FFFD - FFFD FFFD D277 D278 D279 AF50 FFFD AF4C - D26E FFFD D276 D27B AF51 FFFD D26C D272 - D26B D275 FFFD FFFD D271 AF4D AF4F D27A - FFFD D26A D26D D273 FFFD D274 D27C D270 - FFFD AF4E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B26D D64E FFFD FFFD - D650 D64C FFFD D658 D64A D657 B269 D648 - DA5B D652 B26C FFFD D653 D656 FFFD D65A - FFFD D64F FFFD D654 FFFD FFFD B26A B26B - D659 D64D D649 D65B FFFD D651 FFFD FFFD - D655 FFFD FFFD FFFD D64B FFFD B548 B549 - DA65 B54F FFFD DA59 DA62 DA58 B54C DA60 - DA5E FFFD DA5F B54A FFFD DA63 FFFD FFFD - FFFD FFFD FFFD DA5C DA5A B54B DA5D DA61 - FFFD FFFD FFFD B54D FFFD FFFD FFFD DA64 - FFFD FFFD FFFD FFFD FFFD FFFD DE70 DE77 - DE79 DEA1 FFFD B7DA DE6B FFFD B7D2 FFFD - DE7A B7D7 DEA2 B7CE FFFD DE7D FFFD DE6D - DE7E DE6C FFFD B7DC FFFD DE78 B7CF DEA3 - FFFD B7D4 DE71 B7D9 DE7C DE6F DE76 DE72 - DE6E B7D1 B7D8 B7D6 B7D3 B7DB B7D0 DE75 - FFFD B7D5 FFFD B54E FFFD DE7B FFFD DE73 - FFFD FFFD FFFD FFFD FFFD DE74 FFFD FFFD - E2C1 FFFD BAB4 FFFD FFFD E2BD E2C3 E2BF - FFFD BAB6 E2BE E2C2 E2BA FFFD E2BC BAB5 - FFFD FFFD FFFD FFFD E2C0 E2BB FFFD BAB7 - FFFD BAB2 FFFD FFFD E2C4 FFFD BAB3 E667 - E664 E670 E66A E66C BCF4 E666 E66E FFFD - FFFD E66D E66B FFFD E671 BCF7 E668 E66F - FFFD BCF5 FFFD FFFD E663 E665 BCF6 E662 - E672 FFFD E669 FFFD FFFD EA4A BF51 FFFD - FFFD EA55 EA53 BF4B EA49 EA4C EA4D EA48 - BF55 BF56 EA47 EA56 EA51 BF4F BF4C EA50 - EA4E FFFD FFFD BF52 EA52 BF4D FFFD BF4E - FFFD EA4F BF50 EA4B FFFD EA54 BF53 EA57 - EA58 BF54 FFFD FFFD C0E7 C0EE ED5C ED62 - FFFD ED60 C0EA C0E9 C0E6 ED5E FFFD FFFD - FFFD C0EC C0EB C0E8 FFFD ED61 ED5D ED5F - FFFD C0ED FFFD FFFD FFFD C277 EFFB FFFD - C274 C275 EFFD C276 EFFA FFFD EFF9 F26C - EFFC FFFD F26D C37A F26B FFFD FFFD F26A - FFFD F269 C37B FFFD FFFD C46C FFFD FFFD - F46A F46B FFFD FFFD FFFD FFFD F5DC F5DB - C4EA FFFD F5DA F6EC F6ED FFFD FFFD F7E6 - F8B1 FFFD FFFD F8F6 F9BC C679 F9C6 A4F6 - FFFD AAA6 AAA7 FFFD FFFD ACB8 FFFD FFFD - FFFD FFFD C0EF A4F7 FFFD AAA8 AF52 B7DD - A4F8 FFFD B26E BAB8 C962 FFFD CFB7 D27D - FFFD E2C5 FFFD C0F0 A4F9 AAA9 CFB8 CFB9 - DA66 B550 FFFD FFFD DEA4 FFFD FFFD B7DE - E2C6 FFFD FFFD BCF8 FFFD C37C A4FA DA67 - A4FB FFFD A6C9 CA42 A6C8 A865 A864 A863 - CB60 FFFD FFFD FFFD AAAA FFFD AAAB CD5B - FFFD CFBA FFFD CFBD ACBA CFBB FFFD ACB9 - CFBC ACBB FFFD D2A2 D2A1 D27E AF53 FFFD - D65D D65E B26F D65C D65F B552 B270 FFFD - FFFD B551 DA6B DA6A FFFD DA68 DA69 FFFD - DA6C DEA6 DEA5 DEA9 FFFD DEA8 DEA7 BAB9 - E2C9 FFFD E2C8 BABA E2C7 E673 FFFD E674 - BCF9 FFFD EA59 EA5A FFFD FFFD F272 C37D - F271 F270 F26E F26F C4EB F46C F6EE F8F7 - FFFD A4FC FFFD C9A5 A5C7 C9A6 FFFD FFFD - FFFD CA43 CA44 FFFD FFFD FFFD FFFD CB66 - FFFD FFFD CB62 FFFD CB61 AAAC CB65 A867 - CB63 A866 CB67 CB64 FFFD FFFD CD5F CFBE - CD5D CD64 FFFD AAAD FFFD AAB0 CD65 CD61 - FFFD CD62 FFFD CD5C AAAF CD5E AAAE CD63 - FFFD CD60 FFFD FFFD CFC2 ACBD ACBE FFFD - CFC5 CFBF FFFD CFC4 FFFD CFC0 ACBC CFC3 - CFC1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D2A8 D2A5 FFFD D2A7 AF58 AF57 AF55 D2A4 - D2A9 AF54 AF56 D2A6 D667 D2A3 D2AA FFFD - FFFD FFFD FFFD FFFD D662 D666 FFFD D665 - DA6E DA79 FFFD FFFD D668 FFFD D663 DA6D - B274 FFFD FFFD B273 D661 D664 B275 FFFD - B272 B271 D660 D669 FFFD FFFD FFFD DA70 - DA77 FFFD B554 DA76 DA73 FFFD B556 FFFD - FFFD FFFD DA75 FFFD FFFD DA6F DA71 DA74 - DA72 B555 DA78 B553 B7DF FFFD FFFD DEAD - DEAC DEAA FFFD B7E2 B7E1 DEAE FFFD DEAB - E2CA BABB B7E0 FFFD FFFD FFFD DEB0 DEAF - FFFD E2CD E2CB BCFA FFFD BABC E2CC E676 - FFFD FFFD FFFD FFFD BCFB E675 E67E E67D - E67B FFFD E67A E677 E678 E679 E67C E6A1 - FFFD FFFD EA5F EA5C EA5D BF57 EA5B EA61 - EA60 EA5E FFFD ED64 ED65 C0F1 FFFD C0F2 - ED63 FFFD C279 EFFE C278 C37E FFFD C3A1 - C46D F46E F46D F5DD F6EF C57A F7E8 F7E7 - F7E9 A5C8 CFC6 AF59 B276 D66A A5C9 C9A7 - A4FD FFFD FFFD CA45 FFFD FFFD FFFD CB6C - CB6A CB6B CB68 A868 CB69 FFFD FFFD FFFD - FFFD FFFD CD6D FFFD AAB3 CD6B CD67 CD6A - FFFD CD66 AAB5 CD69 FFFD AAB2 AAB1 FFFD - AAB4 CD6C CD68 FFFD FFFD FFFD FFFD ACC2 - ACC5 CFCE CFCD CFCC ACBF CFD5 CFCB FFFD - ACC1 D2AF FFFD CFD2 CFD0 ACC4 FFFD CFC8 - CFD3 FFFD CFCA CFD4 CFD1 CFC9 FFFD ACC0 - CFD6 CFC7 ACC3 FFFD FFFD FFFD FFFD D2B4 - D2AB D2B6 FFFD D2AE D2B9 D2BA D2AC D2B8 - D2B5 D2B3 D2B7 AF5F FFFD AF5D FFFD FFFD - D2B1 FFFD D2AD FFFD D2B0 D2BB D2B2 AF5E - CFCF FFFD AF5A AF5C FFFD FFFD FFFD FFFD - FFFD D678 D66D D66B FFFD D66C FFFD D673 - FFFD D674 D670 B27B D675 D672 D66F FFFD - B279 D66E B277 B27A D671 D679 AF5B B278 - D677 D676 B27C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD DA7E FFFD FFFD FFFD DAA1 - B560 FFFD DAA7 FFFD FFFD DAA9 DAA2 B55A - DAA6 DAA5 B55B B561 FFFD B562 DAA8 B558 - DA7D DA7B DAA3 DA7A B55F DA7C DAA4 DAAA - B559 B55E B55C B55D FFFD FFFD FFFD B557 - FFFD FFFD FFFD FFFD B7E9 DEB7 B7E8 DEBB - FFFD DEB1 FFFD DEBC FFFD FFFD FFFD DEB2 - DEB3 FFFD DEBD DEBA DEB8 DEB9 DEB5 DEB4 - FFFD DEBE B7E5 FFFD DEB6 FFFD B7EA B7E4 - B7EB B7EC FFFD B7E7 B7E6 FFFD FFFD E2CE - BABE BABD FFFD FFFD E2D3 FFFD BCFC BABF - FFFD FFFD BAC1 E2D4 B7E3 BAC0 E2D0 E2D2 - E2CF FFFD E2D1 FFFD FFFD FFFD E6AB FFFD - FFFD E6AA E6A7 BD40 EA62 BD41 E6A6 FFFD - BCFE FFFD E6A8 E6A5 E6A2 E6A9 E6A3 E6A4 - BCFD FFFD FFFD FFFD FFFD ED69 FFFD EA66 - FFFD EA65 EA67 FFFD ED66 BF5A FFFD EA63 - FFFD BF58 FFFD BF5C BF5B EA64 EA68 FFFD - BF59 FFFD ED6D C0F5 C27A C0F6 C0F3 ED6A - ED68 FFFD ED6B FFFD ED6E C0F4 ED6C ED67 - FFFD FFFD F042 F045 F275 F040 FFFD F46F - F046 FFFD C3A2 F044 C27B F041 F043 F047 - F276 FFFD F274 FFFD FFFD FFFD FFFD C3A3 - F273 FFFD FFFD FFFD C46E FFFD FFFD FFFD - FFFD C4ED F6F1 C4EC F6F3 F6F0 F6F2 C5D0 - F8B2 A5CA CD6E D2BC D2BD B27D DEBF BF5D - C3A4 C57B F8B3 A5CB FFFD CD6F A260 FFFD - FFFD CFD7 FFFD CFD8 FFFD FFFD FFFD FFFD - FFFD D2BE D2BF B27E B2A1 FFFD FFFD FFFD - DAAB FFFD DEC2 DEC1 DEC0 E2D5 FFFD E2D6 - E2D7 BAC2 FFFD FFFD E6AD E6AC FFFD FFFD - EA69 BF5E BF5F FFFD ED72 ED6F ED70 ED71 - F049 F048 C27C F277 F5DE A5CC FFFD ACC6 - FFFD B2A2 DEC3 FFFD A5CD FFFD D2C0 B2A3 - FFFD FFFD B563 B564 FFFD A5CE A5CF CA46 - A86A A869 ACC7 CFD9 DAAC A5D0 A5D1 A5D2 - A5D3 FFFD FFFD FFFD A86B A86C CB6E CB6D - FFFD FFFD AAB6 CD72 CD70 CD71 FFFD FFFD - FFFD FFFD FFFD FFFD CFDA CFDB FFFD FFFD - ACCB ACC9 FFFD ACCA ACC8 FFFD FFFD FFFD - FFFD AF60 FFFD FFFD FFFD FFFD AF64 AF63 - D2C1 AF62 AF61 FFFD D2C2 FFFD FFFD B2A6 - D67B D67A B2A4 B2A5 FFFD FFFD FFFD B566 - B565 DAAE FFFD FFFD DAAD B2A7 FFFD FFFD - FFFD FFFD FFFD B7ED DEC5 B7EE DEC4 FFFD - FFFD FFFD E2D8 E6AE BD42 EA6A FFFD FFFD - FFFD ED73 FFFD C3A6 C3A5 FFFD FFFD C57C - A5D4 CD73 FFFD FFFD B2A8 E2D9 BAC3 FFFD - FFFD CB6F CB70 FFFD FFFD CD74 AAB8 AAB9 - FFFD FFFD AAB7 FFFD FFFD FFFD FFFD ACCF - ACD0 ACCD ACCE FFFD CFDC FFFD FFFD CFDD - ACCC FFFD FFFD FFFD FFFD D2C3 FFFD AF68 - AF69 FFFD B2AB D2C9 FFFD AF6E AF6C D2CA - D2C5 AF6B AF6A AF65 D2C8 D2C7 D2C4 AF6D - FFFD D2C6 AF66 FFFD AF67 FFFD FFFD B2AC - D6A1 D6A2 B2AD D67C D67E D6A4 D6A3 D67D - FFFD B2A9 B2AA FFFD DAB6 B56B B56A DAB0 - B568 FFFD DAB3 B56C DAB4 B56D DAB1 B567 - B569 DAB5 FFFD DAB2 DAAF FFFD FFFD FFFD - FFFD FFFD DED2 FFFD DEC7 B7F0 B7F3 B7F2 - B7F7 B7F6 DED3 DED1 DECA DECE DECD B7F4 - DED0 DECC DED4 DECB B7F5 B7EF B7F1 FFFD - DEC9 FFFD FFFD FFFD FFFD E2DB BAC7 E2DF - BAC6 E2DC BAC5 FFFD DEC8 DECF E2DE FFFD - BAC8 E2E0 E2DD E2DA FFFD FFFD E6B1 E6B5 - E6B7 E6B3 E6B2 E6B0 BD45 BD43 BD48 BD49 - E6B4 BD46 E6AF BD47 BAC4 E6B6 BD44 FFFD - FFFD FFFD EA6C FFFD EA6B EA73 EA6D EA72 - EA6F BF60 EA71 FFFD FFFD BF61 FFFD BF62 - FFFD EA70 EA6E FFFD FFFD FFFD FFFD C0F8 - ED74 FFFD FFFD C0F7 ED77 ED75 ED76 FFFD - FFFD C0F9 FFFD FFFD FFFD F04D FFFD C2A1 - F04E FFFD FFFD C27D F04F C27E F04C F050 - FFFD F04A FFFD FFFD C3A7 F278 C3A8 C46F - FFFD F04B C470 FFFD FFFD FFFD C4EE F5DF - FFFD C57E F6F4 C57D FFFD F7EA C5F5 C5F6 - FFFD FFFD F9CC FFFD FFFD ACD1 CFDE FFFD - B56E B56F A5D5 A6CA CA47 FFFD CB71 A86D - FFFD AABA FFFD ACD2 ACD3 ACD4 D6A6 D2CB - AF6F FFFD FFFD B2AE D6A5 FFFD FFFD DAB8 - B571 FFFD DAB7 B570 FFFD FFFD DED5 BD4A - E6BB E6B8 E6B9 E6BA FFFD FFFD FFFD FFFD - FFFD ED78 FFFD F051 FFFD FFFD FFFD F471 - F470 FFFD F6F5 A5D6 CD75 AF70 FFFD FFFD - FFFD B572 DED6 FFFD FFFD E2E1 FFFD BD4B - EA74 FFFD F052 F472 A5D7 FFFD FFFD AABB - ACD7 CFDF ACD8 ACD6 FFFD ACD5 D2CC AF71 - FFFD FFFD AF72 AF73 FFFD FFFD FFFD B2B0 - D6A7 B2AF FFFD FFFD FFFD FFFD FFFD DAB9 - B2B1 B573 DED7 B7F8 B7F9 FFFD BAC9 FFFD - BACA BD4C BF64 EA75 BF63 FFFD ED79 C0FA - FFFD F053 F473 A5D8 A86E CD78 CD77 AABC - CD76 AABD CD79 FFFD CFE5 ACDB ACDA CFE7 - CFE6 ACDF FFFD ACDE FFFD FFFD ACD9 FFFD - CFE1 CFE2 CFE3 FFFD ACE0 CFE0 ACDC CFE4 - ACDD FFFD FFFD FFFD FFFD D2CF D2D3 D2D1 - D2D0 FFFD D2D4 FFFD FFFD FFFD D2D5 D2D6 - D2CE FFFD D2CD FFFD AF75 AF76 FFFD D2D7 - D2D2 FFFD D6B0 FFFD D2D8 AF77 AF74 FFFD - FFFD FFFD D6AA FFFD D6A9 FFFD D6AB D6AC - D6AE D6AD D6B2 B2B5 B2B2 B2B6 D6A8 B2B7 - D6B1 B2B4 D6AF B2B3 FFFD FFFD FFFD FFFD - FFFD DABC DABE DABA DABB FFFD FFFD DABF - DAC1 DAC2 DABD DAC0 B574 FFFD FFFD DEDB - FFFD DEE0 DED8 DEDC FFFD FFFD DEE1 DEDD - B7FA B843 FFFD B7FD DED9 DEDA BACE B846 - B7FE FFFD B844 B7FC DEDF B845 DEDE B841 - B7FB B842 DEE2 E2E6 E2E8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B840 FFFD - FFFD E2E3 BACC E2E9 BACD E2E7 E2E2 E2E5 - E2EA BACB E2E4 FFFD BD4E E6BF E6BE FFFD - BD51 BD4F E6BC BD4D E6BD FFFD BD50 FFFD - FFFD FFFD EA7D FFFD EAA1 FFFD EA7E EA76 - EA7A EA79 EA77 BF66 BF67 BF65 EA78 EA7B - EA7C FFFD BF68 FFFD C140 EDA3 FFFD C0FC - ED7B C0FE C141 FFFD FFFD C0FD EDA2 ED7C - C0FB EDA1 ED7A ED7E ED7D FFFD FFFD F055 - C2A4 C2A5 C2A2 FFFD C2A3 FFFD FFFD F054 - FFFD F27B FFFD FFFD C3A9 FFFD F279 F27A - FFFD F474 F477 F475 F476 F5E0 FFFD FFFD - C4EF F7EB F8B4 FFFD C5F7 F8F8 F8F9 C666 - A5D9 ACE1 FFFD DAC3 FFFD DEE3 FFFD A5DA - A86F FFFD AABE FFFD CFE8 CFE9 AF78 FFFD - FFFD DAC4 B575 B847 C142 EDA4 F27C F478 - A5DB FFFD FFFD FFFD CDA1 CD7A CD7C CD7E - CD7D CD7B AABF FFFD FFFD FFFD FFFD ACE2 - CFF2 FFFD CFED CFEA FFFD FFFD CFF1 FFFD - FFFD ACE4 ACE5 CFF0 CFEF CFEE CFEB CFEC - CFF3 ACE3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD AF7C FFFD AFA4 AFA3 D2E1 D2DB - D2D9 FFFD AFA1 D6B9 AF7A D2DE D2E2 D2E4 - D2E0 D2DA AFA2 D2DF D2DD AF79 D2E5 AFA5 - D2E3 AF7D D2DC FFFD AF7E AF7B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B2B9 FFFD D6BA FFFD FFFD D6B3 D6B5 D6B7 - FFFD D6B8 D6B6 B2BA FFFD D6BB FFFD D6B4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DAC8 B576 DAD0 FFFD DAC5 FFFD DAD1 - FFFD DAC6 DAC7 FFFD FFFD DACF DACE DACB - B2B8 B577 DAC9 DACC B578 DACD DACA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DEEE FFFD - DEF2 B84E FFFD E2F0 B851 DEF0 FFFD FFFD - DEED DEE8 DEEA DEEB DEE4 FFFD B84D FFFD - FFFD B84C FFFD B848 DEE7 FFFD B84F FFFD - B850 DEE6 DEE9 DEF1 B84A B84B DEEF DEE5 - FFFD FFFD FFFD E2F2 BAD0 E2F4 DEEC E2F6 - BAD4 E2F7 E2F3 FFFD BAD1 E2EF BAD3 E2EC - E2F1 E2F5 E2EE FFFD FFFD B849 FFFD E2EB - BAD2 E2ED FFFD FFFD FFFD FFFD FFFD BD54 - E6C1 BD58 FFFD BD56 FFFD FFFD BACF FFFD - E6C8 E6C9 BD53 FFFD FFFD E6C7 E6CA BD55 - BD52 E6C3 E6C0 E6C5 E6C2 BD59 E6C4 FFFD - FFFD E6C6 BD57 FFFD FFFD FFFD FFFD BF6A - EAA8 FFFD EAA2 EAA6 EAAC EAAD EAA9 EAAA - EAA7 FFFD EAA4 FFFD BF6C BF69 EAA3 EAA5 - FFFD BF6B EAAB FFFD C146 FFFD FFFD EDAA - EDA5 C145 FFFD FFFD C143 FFFD EDAC C144 - EDA8 EDA9 EDA6 EDAD F056 FFFD C147 EDA7 - FFFD EDAE EDAB FFFD FFFD FFFD F05A FFFD - FFFD F057 FFFD C2A6 FFFD F05B F05D F05C - F058 F059 FFFD FFFD F2A3 FFFD C3AA FFFD - F27E F2A2 F27D F2A4 FFFD FFFD F2A1 FFFD - F47A F47D F479 C471 F47B F47C F47E C472 - C474 C473 F5E1 FFFD F5E3 FFFD F5E2 FFFD - FFFD FFFD F6F6 FFFD FFFD F8B5 F8FA A5DC - FFFD FFFD CB72 AAC0 CDA3 AAC1 AAC2 CDA2 - FFFD CFF8 CFF7 ACE6 ACE9 ACE8 ACE7 CFF4 - CFF6 CFF5 FFFD FFFD D2E8 AFA7 D2EC D2EB - D2EA D2E6 AFA6 AFAA AFAD FFFD FFFD AFAE - D2E7 D2E9 AFAC AFAB AFA9 AFA8 D6C2 FFFD - D6C0 D6BC B2BB FFFD D6BD B2BC D6BE D6BF - D6C1 FFFD B2BD FFFD FFFD DAD5 FFFD DAD4 - DAD3 DAD2 FFFD FFFD FFFD FFFD DEF6 B852 - FFFD DEF3 DEF5 FFFD B853 FFFD B854 DEF4 - FFFD FFFD FFFD FFFD FFFD E341 FFFD E2F9 - E2FA FFFD BAD7 BAD5 BAD6 E343 FFFD E342 - E2FE E2FD E2FC E2FB E340 E2F8 FFFD E6CB - E6D0 E6CE FFFD FFFD FFFD E6CD E6CC E6CF - FFFD EAAE FFFD BF6D C148 EDB0 FFFD C149 - EDAF F05F F05E C2A7 FFFD F2A5 C3AB F4A1 - C5A1 F6F7 FFFD F8B7 F8B6 C9A8 ACEA ACEB - D6C3 FFFD B856 A5DD A872 A871 A870 FFFD - FFFD FFFD CDA4 FFFD FFFD AAC4 AAC3 FFFD - ACEE FFFD CFFA CFFD CFFB FFFD ACEC ACED - FFFD FFFD CFF9 CFFC FFFD AFB5 FFFD FFFD - FFFD D2F3 D2F5 D2F4 AFB2 D2EF FFFD FFFD - AFB0 AFAF FFFD AFB3 AFB1 FFFD AFB4 D2F2 - D2ED D2EE D2F1 D2F0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D6C6 D6C7 D6C5 FFFD D6C4 - B2BE FFFD FFFD FFFD FFFD B57D FFFD DAD6 - DAD8 DADA B57C FFFD FFFD B57A FFFD DAD7 - B57B DAD9 B579 FFFD FFFD DF41 DEF7 DEFA - DEFE B85A DEFC FFFD DEFB DEF8 DEF9 B858 - DF40 B857 FFFD B85C B85B B859 FFFD DEFD - FFFD FFFD FFFD E349 FFFD E348 FFFD FFFD - E344 FFFD FFFD BAD8 E347 E346 BAD9 FFFD - FFFD FFFD FFFD FFFD BD5E FFFD E6D2 FFFD - BD5F BD5B BD5D FFFD BD5A BD5C FFFD FFFD - FFFD EAAF FFFD BF70 EAB1 EAB0 FFFD E345 - BF72 BF71 BF6E BF6F FFFD FFFD FFFD FFFD - FFFD EDB5 FFFD EDB3 C14A EDB4 FFFD EDB6 - EDB2 EDB1 FFFD FFFD F060 C2AA C2A8 C2A9 - FFFD FFFD FFFD FFFD F2A6 F2A7 C3AD FFFD - C3AC F4A3 F4A4 F4A2 FFFD F6F8 F6F9 FFFD - FFFD A5DE CA48 A873 FFFD CDA5 AAC6 AAC5 - CDA6 FFFD FFFD D040 ACEF CFFE ACF0 FFFD - FFFD AFB6 D2F8 D2F6 D2FC AFB7 D2F7 D2FB - D2F9 D2FA FFFD FFFD D6C8 D6CA FFFD B2BF - FFFD D6C9 B2C0 B5A2 B5A1 B57E DADB FFFD - FFFD FFFD FFFD DF44 B85D B85E FFFD DF43 - DF42 FFFD FFFD FFFD FFFD E34A BADB BADA - E34B E34C FFFD BD61 BD60 FFFD EAB5 E6D3 - E6D5 E6D4 EAB4 EAB2 EAB6 EAB3 FFFD BF73 - FFFD FFFD FFFD EDB7 C14B EDB8 EDB9 FFFD - FFFD C2AB C2AC FFFD C475 FFFD FFFD C5D1 - A5DF FFFD FFFD FFFD FFFD FFFD D041 FFFD - FFFD FFFD FFFD FFFD FFFD D2FD AFB8 FFFD - FFFD FFFD FFFD FFFD B3BA B3B9 FFFD FFFD - B5A4 DADD B5A3 DADC FFFD FFFD FFFD FFFD - DF45 FFFD BADC E34D BADD FFFD FFFD FFFD - FFFD FFFD FFFD C476 F4A5 FFFD A6CB AAC7 - CDA7 FFFD ACF2 FFFD ACF1 D042 D043 FFFD - FFFD D340 D342 AFB9 FFFD D344 D347 D345 - FFFD FFFD FFFD D346 D343 D2FE AFBA D348 - D341 FFFD FFFD FFFD FFFD D6D3 B2C6 D6DC - B2C3 FFFD D6D5 B2C7 FFFD B2C1 FFFD D6D0 - D6DD D6D1 D6CE B2C5 FFFD B2C2 FFFD D6D4 - D6D7 B2C4 D6D8 B2C8 D6D9 D6CF D6D6 D6DA - D6D2 D6CD D6CB FFFD FFFD D6DB FFFD FFFD - DADF FFFD FFFD FFFD FFFD DAE4 FFFD FFFD - FFFD DAE0 DAE6 B5A7 D6CC DAE1 B5A5 DADE - B5AC DAE2 B5AB DAE3 B5AD B5A8 B5AE B5A9 - FFFD B5AA FFFD B5A6 FFFD DAE5 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B861 DF50 FFFD - DF53 DF47 DF4C DF46 B863 FFFD DF4A FFFD - FFFD FFFD DF48 B862 FFFD DF4F DF4E DF4B - DF4D DF49 BAE1 DF52 B85F DF51 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E35D - FFFD BAE8 E358 FFFD BAE7 E34E FFFD E350 - BAE0 E355 E354 E357 BAE5 E352 E351 FFFD - FFFD BAE4 BADF E353 BAE2 E359 E35B FFFD - E356 E34F BAE3 FFFD FFFD BD69 BADE FFFD - FFFD E35C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E6D9 BD62 FFFD E6DB FFFD BD63 FFFD - FFFD BD65 E6DE FFFD E6D6 BAE6 E6DC FFFD - FFFD FFFD FFFD E6D8 FFFD B860 BD68 FFFD - FFFD BD64 FFFD BD66 BD67 FFFD BF76 E6DD - E6D7 BD6A FFFD E6DA FFFD FFFD FFFD FFFD - FFFD EAC0 EABB FFFD FFFD EAC5 BF74 EABD - BF78 EAC3 EABA EAB7 EAC6 C151 BF79 EAC2 - EAB8 BF77 EABC BF7B EAB9 EABE BF7A EAC1 - EAC4 FFFD FFFD FFFD FFFD EDCB EDCC EDBC - EDC3 EDC1 FFFD FFFD C14F EDC8 EABF FFFD - EDBF FFFD EDC9 C14E EDBE EDBD EDC7 EDC4 - EDC6 FFFD EDBA EDCA C14C FFFD EDC5 EDCE - EDC2 C150 C14D EDC0 EDBB EDCD BF75 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F063 FFFD - FFFD F061 F067 C2B0 F065 F064 C2B2 F06A - C2B1 FFFD F06B F068 C2AE F069 F062 C2AF - C2AD F2AB F066 FFFD FFFD F06C FFFD FFFD - F2A8 FFFD FFFD FFFD C3B2 C3B0 F2AA FFFD - F2AC F2A9 C3B1 C3AE C3AF C3B3 FFFD FFFD - C478 FFFD F4AA FFFD F4A9 F4A7 F4A6 F4A8 - FFFD C477 C479 FFFD FFFD C4F0 FFFD FFFD - F5E5 F5E4 FFFD FFFD F6FA FFFD F6FC F6FE - F6FD F6FB FFFD FFFD C5A3 C5A2 FFFD FFFD - C5D3 C5D2 C5D4 F7ED F7EC FFFD F8FB F8B8 - F8FC C658 FFFD C659 F96D FFFD FFFD C67E - A6CC FFFD CDA8 FFFD FFFD D045 D046 D044 - FFFD FFFD ACF3 FFFD D047 D048 D049 FFFD - FFFD D349 D34F FFFD FFFD D34D AFBB D34B - FFFD D34C D34E FFFD FFFD FFFD D34A B2C9 - FFFD D6DE B2CB D6E0 B2CA D6DF FFFD FFFD - FFFD FFFD FFFD DAE8 B5AF FFFD DAEA DAE7 - D6E1 FFFD B5B0 FFFD FFFD DAE9 FFFD FFFD - FFFD FFFD FFFD FFFD DF56 FFFD B864 DF54 - B865 DF55 B866 FFFD FFFD FFFD BAE9 E361 - E35E E360 BAEA BAEB E35F FFFD FFFD FFFD - FFFD FFFD E6DF FFFD FFFD E6E0 FFFD BD6B - E6E2 E6E1 FFFD A261 FFFD EACA EACB EAC7 - FFFD EAC8 BF7C BF7D EAC9 FFFD C157 FFFD - FFFD C153 C158 C154 C156 C152 FFFD C155 - FFFD FFFD FFFD FFFD C2B3 EDCF FFFD F2AE - FFFD F2AD FFFD F4AB C47A C47B F741 F5E6 - FFFD F740 FFFD F8FD F9A4 A6CD FFFD FFFD - A874 FFFD CDA9 AAC8 FFFD ACF6 D04C ACF4 - D04A ACF9 ACF5 ACFA ACF8 D04B ACF7 AFBF - AFBE D35A AFC7 D353 D359 AFC3 D352 D358 - D356 AFC2 AFC4 D355 AFBD D354 AFC8 AFC5 - AFC9 AFC6 D351 D350 D357 AFC0 AFBC AFC1 - FFFD FFFD FFFD FFFD FFFD D6F0 D6E9 FFFD - B5B5 D6E8 FFFD B2CF B2D6 B2D3 B2D9 B2D8 - B2D4 FFFD D6E2 D6E5 FFFD D6E4 B2D0 D6E6 - D6EF B2D1 D6E3 D6EC D6ED B2D2 D6EA B2D7 - B2CD B2D5 D6E7 B2CC D6EB FFFD FFFD D6EE - FFFD FFFD FFFD DAFB DAF2 B5B2 DAF9 DAF6 - DAEE DAF7 B5B4 DAEF FFFD DAEB FFFD FFFD - B86C DAF4 FFFD B5B1 DAFA FFFD B5B8 B5BA - DAED FFFD FFFD B5B9 DAF0 B5B3 DAF8 DAF1 - DAF5 FFFD DAF3 B5B6 DAEC B5BB B2CE B5B7 - B5BC FFFD FFFD FFFD FFFD FFFD B868 DF5D - DF5F DF61 DF65 FFFD DF5B DF59 B86A FFFD - DF60 DF64 DF5C DF58 FFFD DF57 FFFD FFFD - FFFD DF62 DF5A DF5E B86B FFFD B869 DF66 - B867 DF63 FFFD E372 FFFD FFFD FFFD FFFD - FFFD BAEE E36A BD78 E374 BAF1 E378 BAF7 - E365 FFFD FFFD E375 E362 FFFD E377 E366 - FFFD BAFE BAFB E376 E370 BAED BAF5 BAF4 - FFFD BAF3 BAF9 FFFD E363 BAFA E371 BAF6 - BAEC E373 BAEF BAF0 BAF8 E368 E367 E364 - FFFD E36C E369 E36D BAFD FFFD E379 BAF2 - E36E E36F FFFD E36B FFFD FFFD FFFD BAFC - FFFD FFFD FFFD FFFD E6E7 BD70 BD79 BD75 - E6E4 FFFD BD72 BD76 E6F0 BD6C E6E8 FFFD - BD74 FFFD FFFD E6EB E6E6 BD73 BD77 E6E5 - FFFD BD71 FFFD E6EF BD6E E6EE E6ED BD7A - E572 BD6D FFFD E6EC E6E3 FFFD BD7B E6EA - BD6F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E6E9 FFFD FFFD FFFD FFFD BFA2 BFA7 BF7E - EAD8 EACF EADB EAD3 EAD9 BFA8 BFA1 EACC - EAD2 EADC EAD5 EADA EACE FFFD FFFD EAD6 - BFA3 EAD4 BFA6 BFA5 EAD0 EAD1 EACD EAD7 - BFA4 EADE EADD FFFD FFFD FFFD EDDA EDD6 - C15F FFFD EDD0 C159 C169 EDDC C161 C15D - EDD3 C164 C167 EDDE C15C EDD5 C165 EDE0 - EDDD EDD1 C160 C15A C168 EDD8 C163 EDD2 - C15E EDDF C162 C15B EDD9 C166 EDD7 FFFD - FFFD EDDB FFFD FFFD FFFD F06E F074 C2B9 - F077 C2B4 C2B5 F06F F076 F071 C2BA C2B7 - FFFD F06D FFFD C2B6 F073 F075 C2B8 F072 - F070 FFFD FFFD FFFD FFFD F2B8 C3B7 C3B8 - C3B4 FFFD C3B5 FFFD F2B4 F2B2 FFFD F2B6 - C3BA F2B7 F2B0 F2AF F2B3 F2B1 C3B6 F2B5 - F4AC C47E C47D F4AD FFFD F4AF F4AE C4A1 - FFFD FFFD FFFD F5EB F5E8 F5E9 FFFD F5E7 - F5EA C4F2 F5EC FFFD C4F1 FFFD F742 FFFD - C5D5 C5D7 F7EE C5D6 F8B9 F940 F942 F8FE - F941 C66C -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 7F36 - srcEnd = 82C3 - mappingOffset = 308A - Mapping = - A6CE FFFD ACFB D26F AFCA FFFD FFFD B2DA - DAFC DAFD FFFD FFFD FFFD EADF C16A EDE1 - FFFD FFFD C2BB FFFD F2BA F2B9 C4A2 F5ED - FFFD F743 C5F8 CA49 FFFD FFFD AAC9 A875 - FFFD FFFD D04D FFFD FFFD D360 D35B D35F - D35D AFCB D35E D35C FFFD D6F1 FFFD DAFE - DB40 DF69 DF6A B86E B86F DF68 DF6B DF67 - B86D FFFD BB40 FFFD B870 E37A FFFD BD7C - E6F1 BD7D FFFD BFA9 EAE2 EAE0 EAE1 EDE4 - EDE3 EDE2 FFFD FFFD FFFD F2BB FFFD C3B9 - F2BC F744 C5F9 F8BA A6CF AACB AACA D04F - ACFC FFFD FFFD D04E D362 FFFD AFCC D6F2 - D361 FFFD FFFD FFFD B2DC D6F5 D6F3 D6F4 - B2DB FFFD DB42 DB43 DB41 FFFD B873 DF6D - DF6C DF6E B872 B871 FFFD FFFD E6F2 E6F4 - FFFD BD7E E6F3 EAE3 BFAA F079 FFFD F078 - C3BB F2BD C3BD C3BC F4B0 F5EE C4F3 A6D0 - D050 ACFD D365 AFCE D364 D363 FFFD AFCD - FFFD D6FB FFFD D6FD D6F6 D6F7 B2DD D6F8 - B2DE D6FC D6F9 D6FA B2DF FFFD B5BE B5BF - FFFD DB44 FFFD FFFD FFFD DF6F DF70 FFFD - E37E BB43 BB41 BB42 E37B E37C FFFD E37D - E6F9 FFFD E6FA BDA1 E6F7 E6F6 E6F8 E6F5 - BFAD EAE4 BFAB BFAC EDE6 C16B EDE5 EFA8 - FFFD F07A F07B C2BC FFFD C2BD C16C F2BE - F2BF F4B1 C4A3 A6D1 FFFD A6D2 ACFE AACC - AFCF D051 FFFD FFFD FFFD B5C0 A6D3 AD41 - D052 D053 AD40 AD42 A6D4 FFFD D054 AFD1 - D366 AFD3 AFD0 AFD2 FFFD D741 B2E0 FFFD - D740 D6FE FFFD DF71 FFFD FFFD E3A1 FFFD - BDA2 FFFD BFAE EAE6 EAE5 FFFD EDE7 FFFD - FFFD FFFD F5EF FFFD FFFD A6D5 CB73 CDAA - AD43 D055 FFFD D368 FFFD FFFD FFFD AFD4 - D367 AFD5 FFFD FFFD FFFD D743 FFFD FFFD - B2E2 D742 D744 FFFD B2E1 FFFD FFFD FFFD - FFFD DB46 DB47 DB45 B5C1 FFFD FFFD FFFD - B874 FFFD B875 FFFD BB45 FFFD E3A3 E3A2 - BB44 FFFD FFFD FFFD FFFD FFFD E6FB FFFD - FFFD E6FC FFFD FFFD FFFD FFFD EAE7 FFFD - FFFD C170 C16F C16D C16E C171 FFFD F07C - C2BF C2BE F2C0 F4B2 FFFD FFFD FFFD C5A5 - C5A4 A6D6 FFFD FFFD D1FB FFFD B877 B5C2 - B876 BB46 FFFD A6D7 C9A9 A6D8 A6D9 FFFD - FFFD CDAB CB76 FFFD CB77 A877 FFFD CB74 - A876 FFFD A879 CB75 A87B A87A CB78 A878 - FFFD FFFD FFFD AAD1 AACF CDAD FFFD AACE - FFFD FFFD FFFD AAD3 AAD5 AAD2 FFFD CDB0 - CDAC AAD6 FFFD AAD0 A87C FFFD AAD4 CDAF - FFFD FFFD CDAE FFFD AACD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D05B AD47 AD48 D05D - FFFD D057 D05A D063 D061 FFFD AD49 D067 - AD4C D064 D05C D059 FFFD FFFD DB49 D062 - AD44 D065 D056 D05F AD46 AD4B D060 AD4F - AD4D FFFD D058 AD4A FFFD D05E AD4E AD45 - D066 FFFD FFFD FFFD FFFD FFFD FFFD AFDA - FFFD AFE3 AFD8 AFD6 D36A AFDE AFDB D36C - FFFD FFFD AFDD D36B D369 D36E AFE2 AFE0 - DB48 FFFD D36F D36D AFD7 FFFD FFFD AFD9 - AFDC FFFD AFDF FFFD AFE1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D74E - B2E4 FFFD D745 D747 FFFD D748 FFFD D750 - D74C D74A FFFD D74D D751 B2E5 B2E9 D746 - FFFD D74F FFFD B2E7 FFFD B2E6 D74B D749 - FFFD B2E3 B2E8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B5C8 DB51 FFFD FFFD DB4F - B5CA FFFD FFFD FFFD FFFD DB4A DFA1 FFFD - B5C9 DB4E FFFD FFFD DB4B B5C5 B5CB DB50 - B5C7 DB4D BB47 B5C6 DB4C B5CC B5C4 B5C3 - FFFD FFFD FFFD FFFD FFFD DF77 DF75 FFFD - DF7B FFFD DF73 DFA2 DF78 FFFD DF72 B87B - B8A3 DF7D FFFD DF76 FFFD B87E FFFD FFFD - B87C DF7E B879 B878 DF79 B87D B5CD FFFD - DF7C DF74 B87A B8A1 B8A2 FFFD FFFD FFFD - FFFD BB4C BB48 FFFD BB4D E3A6 FFFD FFFD - E3A5 E3A7 BB4A E3A4 BB4B E3AA E3A9 E3A8 - FFFD BB49 FFFD FFFD FFFD FFFD FFFD E741 - FFFD E744 BDA8 E743 BDA7 BDA3 BDA4 BDA5 - E740 E6FE BDA6 FFFD E742 E6FD FFFD FFFD - EAE9 EAF3 BFB1 BFB0 FFFD EAED EAEF FFFD - EAEA FFFD EAEE EAE8 EAF1 BFAF EAF0 EAEC - FFFD EAF2 FFFD EAEB C174 EDE8 EDEE C178 - C17A C177 C176 FFFD C175 C173 EDE9 EDEC - C172 EDED FFFD C179 EDEB FFFD EDEA C2C0 - FFFD C2C1 F0A1 F07D F07E FFFD FFFD F2C2 - FFFD F2C1 C3BE F4B4 C4A4 F4B3 FFFD F5F0 - F745 C5A6 F943 F944 C5D8 A6DA FFFD AAD7 - DB52 BB4E C17B EDEF A6DB FFFD AFE5 AFE4 - DB53 FFFD FFFD FFFD EAF4 A6DC AD50 FFFD - FFFD DB54 DB55 DB56 BB4F BFB2 A6DD FFFD - AAD8 D068 AFE6 D370 B2EA FFFD DB57 B8A4 - FFFD BB50 BFB3 C17C C2C2 F4B5 A6DE AAD9 - FFFD FFFD AFE7 D752 B5CE FFFD BB51 E3AB - E745 FFFD FFFD FFFD FFFD A6DF B5CF DFA3 - BB52 A6E0 CDB1 D069 AD51 FFFD FFFD D372 - FFFD FFFD AFEA FFFD AFE8 AFE9 AFEB FFFD - FFFD D371 FFFD FFFD D757 D754 D756 B2EB - B2ED B2EC D753 B2EE D755 FFFD DB58 DB59 - FFFD DB5A DFA6 FFFD DFA7 FFFD DFA5 DFA8 - FFFD B8A5 FFFD DFA4 FFFD BB53 FFFD FFFD - E74A E746 E749 E74B E748 E747 FFFD EAF5 - EAF6 EAF7 BFB4 BFB5 EDF1 EDF0 EDF2 FFFD - F0A3 F0A2 FFFD F2C4 FFFD F2C5 F2C3 FFFD - C4A5 FFFD F4B6 F4B7 FFFD F746 F7EF F8BB - A6E1 A87D FFFD C17D A6E2 FFFD D758 DB5B - FFFD C641 CA4A FFFD FFFD FFFD CA4B CA4D - A6E3 CA4E CA4C FFFD FFFD CBA2 CBA3 CB7B - FFFD FFFD FFFD FFFD CBA1 A8A1 FFFD A8A2 - CB7C CB7A CB79 CB7D A87E CB7E D06A FFFD - FFFD FFFD CDB6 AADC CDB5 CDB7 FFFD AADB - CDBC AADF CDB2 CDC0 CDC6 AAE6 CDC3 AAE3 - FFFD CDB9 CDBF CDC1 FFFD CDB4 AAE2 AADD - CDBA AAE4 AAE7 AAE1 FFFD AADA CDBE CDB8 - CDC5 AAE9 AAE5 AAE0 CDBD AFEC CDBB AADE - AAE8 FFFD CDB3 FFFD CDC2 CDC4 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 82D1 - srcEnd = 8356 - mappingOffset = 3418 - Mapping = - AD62 AD5C AD64 AD61 D071 D074 AD5D FFFD - D06B FFFD AD56 AD60 FFFD AD63 AD65 D0A2 - D077 FFFD AD55 D0A1 AD59 AD57 AD52 D06F - FFFD D07E D073 D076 D0A5 FFFD AD66 D07D - AD5E D078 D0A4 D075 D079 D07C FFFD FFFD - D06D D0A3 D07B FFFD FFFD D06C FFFD D070 - AD5F AD5A AD53 AD58 AD54 AD67 D06E D3A5 - AD5B FFFD FFFD D07A CE41 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D3A8 AFFA FFFD - D376 FFFD D3A3 D37D FFFD D3B2 FFFD D3AA - FFFD D37E FFFD D3A9 D378 D37C D3B5 AFFD - D3AD D3A4 AFED D3B3 D374 FFFD D3AC FFFD - AFFC AFF7 D373 AFF5 AFF4 AFF9 D3AB AFF1 - AFF8 D072 DB5C D3A6 FFFD FFFD D37A AFFB - D37B D3A1 AFFE D375 D3AF FFFD D3AE D3B6 - AFF3 AFF0 D3B4 D3B0 D3A7 D3A2 AFF6 AFF2 - D377 AFEE D3B1 AFEF FFFD D379 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 8373 - srcEnd = 83B0 - mappingOffset = 349E - Mapping = - D75E D760 D765 D779 B2FC B2F2 FFFD D75D - B2FD B2FE D768 D76F D775 FFFD D762 FFFD - D769 FFFD FFFD B340 D777 D772 B2FA B2F8 - D76E D76A D75C B2EF D761 D759 FFFD B2F7 - B2F9 D766 D763 B2F4 D773 B2F1 D764 D77A - D76C FFFD D76B B2F0 FFFD B2FB FFFD B2F3 - D75A D75F D770 D776 B341 D75B D767 D76D - B2F6 FFFD FFFD D778 D771 D774 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 83BD - srcEnd = 84DB - mappingOffset = 34DC - Mapping = - B2F5 FFFD DB6C DB60 B5D7 DB7D DBA7 DBAA - B5D5 DB68 DBA3 DB69 DB77 B5E2 DB73 B5DF - FFFD DB74 DB5D FFFD DBA4 FFFD FFFD B5E8 - DBA1 DB75 DBAC DB70 DFC8 FFFD DBAF B5E6 - DB6E DB7A B5E9 B5D4 DB72 DBAD DB6B DB64 - DB6F FFFD DB63 DB61 B5D0 DBA5 DB6A DBA8 - FFFD DBA9 B5D8 B5DD B5D9 B5E1 DB7E B5DA - DB76 DB66 FFFD B5D2 DB5E DBA2 DBAB DB65 - B5E0 DBB0 DB71 FFFD DB6D FFFD B5D1 B5E5 - FFFD DB7C B5E7 FFFD DB78 B5DC B5D6 B5DE - B5D3 B5E4 DB79 DB67 DB7B DB62 DBA6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DBAE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DB5F FFFD - FFFD FFFD FFFD FFFD DFC7 FFFD DFDD B855 - DFCC FFFD DFCA DFB5 B8A9 DFC5 DFD9 DFC1 - B8B1 DFD8 DFBF B5E3 DFCF DFC0 DFD6 B8B0 - B8A8 FFFD DFAA DFB2 FFFD DFCB DFC3 DFDC - DFC6 B8B6 DFD7 FFFD B8AD FFFD DFC9 DFD1 - DFB6 DFD0 FFFD DFE1 DFB1 DFD2 FFFD DFDF - FFFD DFAB B5DB FFFD DFB9 DFB8 B8AF FFFD - DFBC DFBE DFCD DFDE B8B2 FFFD B8B3 FFFD - DFB0 B8AB DFB4 DFDA B8B4 FFFD B8AC B8AE - B8B5 DFE0 DFD3 DFCE FFFD FFFD DFBB DFBA - B8AA DFAC B8A7 DFC4 DFAD DFC2 FFFD FFFD - DFB7 DFDB FFFD FFFD FFFD B8A6 FFFD FFFD - FFFD DFB3 FFFD FFFD FFFD FFFD FFFD FFFD - DFAF DFD5 DFAE BB60 E3D3 FFFD FFFD E3C2 - FFFD FFFD E3AC E3CA BB58 E3BB E3C5 BB5B - E3BE BB59 E3AF E3CD E3AE E3C1 FFFD E3AD - FFFD FFFD E3BF E3C8 E3C6 E3BA E3B5 E3B3 - FFFD E3B4 E3C7 E3D2 E3BC BB5A FFFD E3B7 - FFFD E3CB FFFD BB5D E3B6 E3B0 E3C0 BB61 - FFFD FFFD BB55 BB5E E3B8 E3B2 FFFD BB57 - DFD4 BB56 E3C3 FFFD BB54 BB63 BB5C E3C4 - E3B9 E3B1 E3CC E3BD BB62 E3D0 BB5F E3CF - FFFD E3C9 E3CE FFFD FFFD FFFD E3D1 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 84E7 - srcEnd = 89C0 - mappingOffset = 35FB - Mapping = - E773 E774 E767 E766 E762 BDB4 FFFD BDAC - E776 E775 DFA9 E75F E763 E75D FFFD E770 - E761 FFFD E777 E75A E758 E764 E76E E769 - BDB6 E74F FFFD E76D FFFD FFFD FFFD BDB7 - DFBD E75B E752 E755 E77B E75C E753 E751 - E74E FFFD BDB0 E765 BDAF BDB3 E760 E768 - BDA9 E778 E77C BDAB FFFD E757 E76B E76F - E754 E779 BDB2 FFFD BDB1 E74C BDB5 E772 - E756 E76A E750 E75E E759 BDAD BDAE E76C - E77D E77A E771 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E74D FFFD BDAA EB49 - FFFD EB40 EB43 FFFD BFBB EB45 EAF9 EB41 - EB47 BFB8 BFBC BFB6 FFFD FFFD EAFB EB4C - FFFD FFFD EB46 FFFD EAFC EB55 EB4F EAF8 - EE46 EAFE BFB7 FFFD EB4A FFFD EB54 BFBF - FFFD EB51 EAFD EB44 EB48 EB42 EB56 EB53 - EB50 BFB9 BFBA BFBE EAFA EB57 BFBD EB4D - FFFD FFFD EB4B FFFD FFFD FFFD EB4E EE53 - EE40 EE45 EE52 EE44 EDFB EE41 FFFD C1A2 - FFFD EDF4 EE4D EE4F EDF3 C1A1 EE51 EE49 - C1A8 EE50 EE42 C1AA EDF9 EB52 EE4A EE47 - EDF5 EE55 C1A4 FFFD FFFD C1A5 EDF7 EE48 - FFFD EE54 EE4B EDFD C1A7 C1A3 EE4C EDFE - EE56 EDF8 EE43 EE4E EDFA EDFC FFFD C2CB - EDF6 C1A9 C2C4 C17E FFFD FFFD FFFD FFFD - C1A6 C2C8 F0B3 FFFD F0A9 F0A4 F0AA F0B4 - F0B8 F0B7 C2CA C2C9 FFFD FFFD F0AB F0B9 - F0AE F0A6 FFFD F0A8 F0A7 F0AD F0B2 F0A5 - F0AC F0B1 C2C7 FFFD F0AF FFFD C2C5 F0B0 - C2C3 C2C6 F2D5 F0B5 FFFD FFFD C3C2 FFFD - F2CD F2D1 F2C9 F2CC FFFD F2D4 C3C0 F2D9 - F2D2 FFFD F2CA F2DA F2D3 C3C3 C3C4 F2D7 - FFFD F2CB C3BF C3C1 F2C6 F2CE F2C8 FFFD - F2D8 F2D6 F2C7 F2CF FFFD FFFD FFFD F4BE - C3C5 F2D0 C4A7 C4A9 C4A6 FFFD F4C3 F4BB - F4B9 F4BD F4BA FFFD FFFD F4BF F4C1 C4AA - C4AC FFFD F4C0 C4AD C4AB F4C2 FFFD FFFD - FFFD FFFD C4A8 FFFD FFFD FFFD FFFD FFFD - C4F4 F5F1 F5F7 C4F6 F4BC F5F6 FFFD F5FD - F5F4 F5FB F5FA F4B8 F5F5 F0B6 F5FE F5F3 - F5F8 FFFD F5FC F5F2 FFFD F74A C4F5 F5F9 - FFFD FFFD F7F4 F74B F749 F747 F748 F74C - FFFD C5D9 F7F2 F7F0 F7F5 F7F3 FFFD F7F6 - C5DA F7F1 FFFD FFFD F8BC FFFD FFFD F945 - F946 F947 FFFD FFFD F9C7 F9BD CA4F AAEA - FFFD AD68 FFFD D3B8 D3B7 B040 B342 D77C - FFFD FFFD D77B FFFD B5EA B8B8 FFFD B8B7 - B8B9 FFFD E3D4 E77E EB58 EB5A EB59 FFFD - C1AB EE57 F0BA F9A5 A6E4 FFFD CDC9 CDCA - CDC8 CDC7 AAEB FFFD D0A9 D0A7 FFFD FFFD - D0A6 FFFD AD69 AD6B AD6A D0A8 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D3C4 D3C1 - D3BF FFFD FFFD B041 D3C2 B046 D3BC D3CB - FFFD D3CD D3BD FFFD B043 D3CE D3C9 D3BB - D3C0 D3CA D3C6 D3C3 FFFD B048 D3CC D3BE - FFFD FFFD D3C7 D3B9 B047 B044 D3C5 FFFD - D3C8 D3BA B045 B042 FFFD FFFD FFFD FFFD - B34C D7A5 B34B FFFD D7A8 D7AB B348 B346 - D77E D7A9 D7A7 D7A4 D7AC D7AD D7AF D7B0 - D77D B345 D7A2 D7A1 D7AE B347 D7A3 B349 - B344 D7A6 B34D FFFD B34A D7AA FFFD FFFD - FFFD B5F1 DBBF FFFD DBB4 B5EE FFFD DFE7 - DBBD DBB1 B5EC DBB6 B5EF DBBA DBB8 B5F2 - B5EB FFFD FFFD DBB2 DBB5 B5F0 FFFD DBB3 - FFFD DBBE DBBC DBB7 DBB9 DBBB B5ED FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DFE8 DFEE - DFE4 DFEA B8BA DFE6 B8C0 FFFD FFFD B8BF - FFFD B8BE DFED B8C1 B8C2 DFE3 DFF0 B8C3 - B8BD B8BC DFEC B8C4 DFE2 DFE5 DFEF DFEB - FFFD FFFD E3F4 E3E9 B8BB FFFD FFFD FFFD - FFFD BB6A E3DD E3F2 E3DE BB65 FFFD E3DB - FFFD E3E4 E3DC BB67 E3D6 E3F1 BB68 E3EE - E3EF E3D7 BB6D E3E6 FFFD E3E0 E3E7 E3DA - FFFD E3F3 E3EB E3E5 E3D5 BB69 E3EC FFFD - BB6C E3F0 FFFD E3EA BB66 E3E8 FFFD E3E2 - BB64 E3D9 E3E1 E3ED E3DF FFFD FFFD E3E3 - FFFD FFFD FFFD FFFD FFFD BDC1 DFE9 E7B2 - E7BB E7B1 E7AD E7AA BDC2 E7A8 BB6B E7A1 - BDC0 E7A7 BDBF E7AC E7A9 E7B9 E7B4 E7AE - E7B3 BDBB E7AB E7BE E7A2 E7A3 E7BA BDBC - E7BF BDBE E7C0 E7B0 E3D8 E7B6 E7AF E7B8 - E7B5 FFFD FFFD FFFD E7A6 BDB9 E7BD BDBA - E7A4 BDBD EB64 E7B7 E7BC FFFD FFFD FFFD - FFFD FFFD EB61 BDB8 BFC0 EB6B EB67 FFFD - EB65 EB60 EB6F FFFD FFFD FFFD BFC4 FFFD - EB5C EB68 EB69 EB5F EB5E EB6C FFFD EB62 - EB5D EB63 FFFD EB6E EB5B EB6D EB6A BFC2 - BFC1 FFFD FFFD BFC3 EB66 F0CB FFFD FFFD - FFFD FFFD FFFD EE59 C1B1 EE5D EE5A EE61 - EE67 EE5C FFFD EE70 C1AE EE6A EE5F EE6B - EE66 EE6D EE5E C1B3 C1B2 EE60 EE6E EE58 - EE6C C1AC FFFD EE64 EE63 EE68 EE5B C1B0 - FFFD C1B4 EE62 EE69 C1B5 EE65 FFFD FFFD - FFFD FFFD C1AD C1AF F0C7 F0C5 FFFD FFFD - F0CC F0C9 F0CD FFFD F0BE F0C6 F0D1 EE6F - F0C2 C2CF E7A5 F0BD F0CA F0C4 F0C1 F0BC - F0BB F0D0 FFFD F0C0 F0BF C2CD F0C8 FFFD - C2CC FFFD FFFD C2CE F0C3 F0CF FFFD F2DE - F2DF FFFD C3C9 F2DC C3C6 F2E4 FFFD C3CA - F2E6 F2DB F0CE F2E8 F2DD FFFD C3C7 F2E3 - FFFD F2E5 F2E0 F2E7 F2E2 F2E1 C3C8 FFFD - FFFD F4C5 F4C6 FFFD F4C8 C4AE C4AF F4C9 - F4C7 FFFD F4C4 FFFD F642 F645 F641 FFFD - C4FA F643 C4F9 C4F8 C4F7 F644 F751 F74F - FFFD F74E F640 F750 F646 F74D FFFD F7F9 - F7D7 F7F7 C5DB F7F8 F7FA FFFD F8BF C5FA - F8BE F8BD C5FB FFFD C65A F96E F9A7 F9A6 - F9A8 A6E5 D0AA FFFD D3CF D3D0 FFFD FFFD - FFFD DBC0 FFFD F647 F8C0 A6E6 AD6C D0AB - FFFD FFFD FFFD D7B1 B34E FFFD DBC2 DBC1 - B5F3 FFFD B8C5 E7C1 BDC3 FFFD BDC4 FFFD - FFFD FFFD BFC5 C5FC A6E7 FFFD FFFD FFFD - D0AC AAED D0AE D0AD AD6D FFFD D3D1 FFFD - D3D8 B049 D3D6 D3D4 FFFD D3DB D3D2 D3D3 - B04A FFFD B04E FFFD FFFD D3DC B04D D3DA - D3D7 D3D5 B04B B04C D3D9 FFFD FFFD FFFD - FFFD B350 D7B2 FFFD B355 D7C2 B354 D7C4 - FFFD FFFD D7B8 B352 D7C3 FFFD D7B3 B353 - D7BF D7BB D7BD D7B7 D7BE FFFD FFFD B34F - D7BA FFFD D7B9 D7B5 FFFD D7C0 FFFD FFFD - D7BC D7B4 FFFD D7B6 B351 D7C1 FFFD FFFD - FFFD FFFD B5F6 DBCD FFFD FFFD FFFD DBC9 - DBCB DBC6 DBC5 DBC3 FFFD DBCA DBCC DBC8 - FFFD DBC7 B5F4 B5F5 FFFD FFFD FFFD FFFD - FFFD FFFD DBCF B8CD DFF2 DFF8 DFF3 DFF4 - FFFD DFF9 FFFD B8CF FFFD B8C7 B8CE DFF1 - DBC4 B8CA B8C8 DFF7 DFF6 B8C9 B8CB DFF5 - B8C6 FFFD B8CC FFFD FFFD FFFD FFFD FFFD - E3F6 BB74 FFFD FFFD E442 E441 FFFD E3FB - BB76 E440 E3F7 E3F8 BB6E BB70 FFFD E3FD - E3F5 BB72 BB71 E3F9 E3FE E3FC BB73 E3FA - FFFD FFFD DBCE BB6F FFFD FFFD E7C2 E7C9 - BDC6 FFFD E7CD BDCA E7C5 E7C3 FFFD E7CC - FFFD BDC5 E7CB BDC7 BDC8 E7C4 BDC9 E7CA - E7C6 E7C7 E7C8 BB75 FFFD FFFD FFFD EB70 - EB7C FFFD BFCA EB77 EB79 FFFD BFC8 EB71 - EB75 FFFD EB78 BFC6 BFC9 EB7B EB73 EB74 - EB7A EB72 EB76 BFC7 EE72 FFFD EE71 C1B7 - EE77 C1B9 FFFD FFFD C1B6 EE73 C1BA EE74 - FFFD FFFD EE75 EE78 FFFD C1B8 FFFD F0D6 - FFFD FFFD F0D9 FFFD F0D3 F0D5 FFFD FFFD - F0D4 F0D7 F0D8 EE76 F0D2 FFFD FFFD C3CD - F2EC F2EF F2F1 F2EA F2EB F2EE F2F0 C3CE - C3CC C3CB F2ED F2E9 F4CA C4B0 FFFD F4CB - FFFD FFFD F649 C4FB F64B C4FC F648 F64A - C5A8 FFFD F752 C5A7 F7FD F7FC FFFD F7FB - FFFD FFFD F948 F949 F94B F94A FFFD CA50 - A6E8 FFFD AD6E D7C5 B5F7 FFFD DFFA C2D0 - FFFD F2F2 FFFD FFFD A8A3 FFFD FFFD FFFD - B357 FFFD FFFD FFFD B356 FFFD DBD0 B5F8 - DBD2 DBD1 FFFD FFFD DFFB B8D0 E443 E446 - E445 FFFD E444 E7CE E7D0 E7CF FFFD BFCC - FFFD FFFD FFFD BFCB FFFD C1BB EE79 EE7B - EE7A FFFD FFFD C2D1 FFFD FFFD FFFD F2F4 - F2F3 FFFD F4CC C4B1 FFFD FFFD C4FD F754 - F753 C65B -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 89D2 - srcEnd = 8B9F - mappingOffset = 3AD5 - Mapping = - A8A4 D0AF AD6F D7C8 D7C6 FFFD FFFD D7C7 - DBD4 DBD5 E043 DBD3 FFFD DFFC E041 E040 - E042 B8D1 DFFE DFFD E044 FFFD E449 E447 - FFFD E448 E7D3 E7D1 FFFD FFFD E7D2 EB7D - EE7C EE7D C2D2 FFFD F2F5 F4CD C4B2 FFFD - F64C F755 C5A9 FFFD F7FE F94C A8A5 FFFD - AD71 AD72 D0B0 FFFD FFFD D0B1 AD70 FFFD - B054 FFFD B052 FFFD B051 B058 B050 B059 - D3DD B056 FFFD B053 B057 B055 B04F FFFD - FFFD B35F FFFD B359 D7CC B35E FFFD FFFD - B360 B35A FFFD B35B FFFD D7CA FFFD FFFD - B358 FFFD D7CB B35D FFFD FFFD D7C9 B35C - FFFD FFFD B644 FFFD B646 FFFD FFFD DBD8 - B645 B5F9 B5FD FFFD B8E4 E049 DBDA B5FE - FFFD FFFD DBDD DBDE B643 FFFD DBE0 FFFD - DBE2 FFFD DBE3 DBD7 DBD6 DBE4 B642 DBE1 - DBDF FFFD B640 B5FB B647 DBDB DBDC DBD9 - FFFD B641 FFFD FFFD B5FC FFFD B5FA E048 - B8DF B8DA FFFD FFFD B8D5 FFFD B8E5 B8D6 - FFFD B8D2 B8E1 B8DE B8E0 FFFD B8D7 B8DC - B8D3 B8D4 E050 E04D E045 E04A FFFD B8E2 - E051 B8E3 B8D9 FFFD FFFD E047 FFFD E04F - E04B E04E E04C B8DD E046 B8D8 FFFD FFFD - FFFD E44C BB78 BB7B FFFD E44E FFFD BBA5 - E44D BB7D FFFD BDCF E44F FFFD BBA4 E44B - BBA6 FFFD FFFD FFFD BB79 FFFD B8DB BB7C - FFFD BB7A BB7E BBA2 BB77 BBA7 BBA3 FFFD - BBA1 E44A FFFD FFFD FFFD FFFD BDD6 FFFD - BDD2 FFFD FFFD FFFD BDD9 FFFD E7D6 BDDA - E7E2 E7DB BDCB E7E3 E7DD BDD5 E7DE FFFD - BDD4 E7E1 BDCE E7DF E7D5 BDCD EBAA BDD3 - FFFD BDD0 FFFD BDD8 FFFD E7D4 FFFD E7D8 - BDCC E7D7 E7D9 E7DA BDD7 E7DC E7E0 E7E4 - FFFD BDDB BFD2 EBA5 EBAB EBA8 EB7E EBAC - EBA1 FFFD EBA7 FFFD BFCD BFD3 EBAD FFFD - FFFD BFCF FFFD BFD9 BFD4 EBAF EBA9 BFD0 - EBA2 BFDA EBA3 EBA4 BFDB BFD8 BDD1 FFFD - BFCE EBB0 BFDC FFFD BFD5 EBAE BFD1 BFD6 - BFD7 FFFD C1C3 EEA4 EEAD EEAA EEAC FFFD - C1C0 EEA5 FFFD EEAB C1BC EEA7 C1C4 EEA3 - EEA8 EEAF EBA6 EEA9 EEA2 C1BD EEA1 C1BE - EEB0 C1BF EEAE C1C2 EE7E FFFD C1C1 FFFD - EEA6 F0DC F0EA F0E5 F0E7 F0DB C2D3 FFFD - F0DA C2D6 C2D5 FFFD F0E9 F0E1 F0DE F0E4 - FFFD F0DD FFFD F0DF F0E8 F0E6 FFFD C2D4 - F0ED F0EB F0E2 F0EC F0E3 FFFD F2F9 C3CF - F341 FFFD FFFD F64F C3D6 F0E0 F2F7 C3D2 - F2F8 F2FD FFFD FFFD C3D4 C3D5 F2F6 F340 - F342 F2FA F2FC F2FE F2FB F343 C3D1 C3D7 - C3D3 FFFD C3D0 F4D0 FFFD C4B7 F4CE FFFD - FFFD F4D2 FFFD F4D3 C4B5 F4D4 F4D1 FFFD - F4CF C4B8 C4B4 F4D5 FFFD C4B6 C4B3 FFFD - FFFD FFFD C4FE FFFD FFFD C540 F64E F64D - F650 F651 FFFD C541 F756 F75B C5AA FFFD - F758 FFFD F757 F75A F759 FFFD F843 FFFD - C5DC F842 F840 FFFD F841 FFFD FFFD FFFD - C5FE C5FD F8C1 F8C2 C640 FFFD F94D F94E - C667 FFFD C66D FFFD F9A9 F9C8 -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 8C37 - srcEnd = 8D1B - mappingOffset = 3CA3 - Mapping = - A8A6 FFFD D7CD FFFD D7CE E052 E450 E7E5 - C1C6 FFFD C1C5 F0EE F344 FFFD F844 A8A7 - D3DE B05A B361 E054 E053 BDDC E7E6 BDDD - EEB1 C2D7 FFFD FFFD FFFD C676 A8A8 CDCB - D3DF FFFD FFFD B362 FFFD D7CF D7D0 FFFD - DBE5 FFFD B648 B8E6 FFFD E056 E055 E057 - FFFD E451 E452 BBA8 BFDD BDDE BFDE FFFD - EEB5 EEB2 EEB4 EEB3 C1C7 FFFD F0EF F346 - F345 CBA4 B05C B05B D3E0 FFFD D7D1 FFFD - FFFD DBE7 DBE6 B649 FFFD E059 E05A E058 - FFFD FFFD B8E8 B8E7 FFFD BBAA BBA9 FFFD - E7E7 EBB3 EBB1 EBB2 BFDF EEB7 EEB6 FFFD - F0F2 F0F1 F0F0 F347 FFFD F9AA A8A9 AD73 - FFFD AD74 B05D B05E D3E2 D3E1 D7D2 FFFD - B368 B366 B363 B367 B365 B364 FFFD FFFD - B64A DBEA FFFD B8ED B64C B651 DBEC B653 - B652 B655 DBEB DBE8 B64F B64B B64D DBE9 - B654 B650 B64E B8EF B8EE B8EC B8F0 FFFD - B8EA B8EB FFFD B8E9 FFFD E05B FFFD FFFD - E454 FFFD BBAC BBAD BBAB FFFD E453 FFFD - E455 FFFD E7EA E7EC FFFD BDE7 E7ED BDE0 - E7E9 BDDF BDE9 BDE5 BDE6 BDE2 E7E8 BDE1 - E7EE E7EB FFFD BDE8 FFFD BDE3 BDE4 EBB5 - FFFD EBB7 EBB6 FFFD EBB8 BFE0 EBB4 FFFD - FFFD C1CB EEB8 C1C8 C1CC C1CA C1C9 F0F3 - FFFD F0F6 FFFD F0F5 FFFD F0F4 C2D8 F348 - F349 C3D8 F34A C3D9 FFFD FFFD C4BA FFFD - C4B9 F652 FFFD FFFD C542 F653 F75C C5AB - C5AC FFFD F845 FFFD C642 -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 8D64 - srcEnd = 8F64 - mappingOffset = 3D88 - Mapping = - A8AA FFFD B36A B369 E05C E05D FFFD BBAE - EBB9 BDEA EBBA EEB9 A8AB FFFD D0B2 AD76 - AD75 FFFD D3E3 B05F D3E4 D7D5 FFFD D7D4 - FFFD D7D3 FFFD FFFD DBEE B658 FFFD FFFD - DBED B657 FFFD FFFD FFFD DBEF B656 FFFD - E05F E062 E060 E061 E065 E05E E066 E063 - E064 BBB0 E456 FFFD FFFD BBAF FFFD E7F2 - E7F0 FFFD FFFD BDEB E7EF E7F1 FFFD BDEC - FFFD EBBB FFFD EBBC C1CD FFFD F34C F34E - F34B F34D F4D6 F654 FFFD FFFD F96F A8AC - AD77 D3E5 D3E7 D3E6 FFFD D7D8 B36C FFFD - D7D6 FFFD B36B D7D9 FFFD D7DA D7D7 FFFD - FFFD DBFB B660 DBF3 DBF9 FFFD FFFD B65B - B65E DBF2 B659 DBF6 E06C B65D FFFD DBF1 - FFFD DBF7 DBF4 DBFA DBF0 DBF8 B65C B65F - DBF5 B65A FFFD B8F2 E068 B8F1 E06F E06E - B8F8 FFFD B8F9 E070 B8F3 E06D B8F7 E072 - E069 FFFD E06B B8F4 E067 E06A E071 B8F5 - E073 FFFD FFFD FFFD FFFD FFFD B8F6 FFFD - BBB1 E45B E461 E459 E462 FFFD E458 E45D - E463 E460 E45F E45E FFFD E457 E45C FFFD - FFFD E45A FFFD BDF1 BDEE E7FB E841 E843 - E840 E7F8 E7FA E845 E842 E7FC E846 E7F9 - E844 BDEF BDF5 BDF3 E7F3 BDF4 BDF0 E7F4 - E7F6 E7F5 E7FD E7FE FFFD BDF2 FFFD BDED - FFFD FFFD E7F7 FFFD EBC6 BFE2 FFFD EBBD - BFE3 BFE6 EBC2 FFFD EBBF BFE5 FFFD FFFD - EBC3 EBC4 EBBE EBC7 EBC0 EBC5 BFE4 FFFD - BFE1 EBC1 FFFD EEBF C1D0 C1CE C1D1 C1CF - EEBE EEBB EEBA FFFD EEBD FFFD FFFD EEBC - F145 C2DE F0FB F0FA FFFD C2D9 F141 F140 - F0F7 F143 F0FC C2DD F0F9 F142 F0F8 C2DA - C2DC F0FD C2DB F0FE FFFD F144 F352 FFFD - C3DE F34F FFFD F353 FFFD FFFD C3DB F351 - C3E0 FFFD C3DD FFFD F350 FFFD C3DF F354 - C3DA FFFD FFFD FFFD FFFD C4BC C4BE FFFD - F4D9 C4BD F4D7 C3DC F4D8 C4BB C543 C545 - F656 C544 F655 FFFD F761 C5AD F760 C5AE - F75E F75D F762 F763 F846 FFFD F75F FFFD - FFFD F8C6 F8C3 F8C4 F8C5 C65C FFFD F951 - F950 F94F F970 FFFD F9BE F9AB C66E A8AD - B060 FFFD FFFD FFFD FFFD FFFD B8FA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD BDF6 FFFD - FFFD EBC8 FFFD FFFD C2DF FFFD F355 FFFD - FFFD FFFD FFFD FFFD FFFD F9AC A8AE AAEE - AD79 AD78 FFFD B063 FFFD D3E8 B061 D3E9 - B062 FFFD FFFD D7DF D7DB FFFD FFFD B36D - D7DE D7DD D7DC B36E D7E0 D7E1 FFFD FFFD - FFFD DC43 DC41 DC45 DC46 DC4C FFFD DC48 - DC4A FFFD DC42 DBFC FFFD DC49 FFFD FFFD - DC4B DC44 DC47 DBFD B662 DC40 DBFE B661 - B663 FFFD B8FD E075 E077 E076 E07B B8FB - FFFD E078 E074 E079 E07A B8FC B8FE E07C - FFFD E467 E466 FFFD E464 E465 BBB3 BBB5 - BBB2 BBB4 E84D E84E E849 FFFD E84A BDF8 - BDFD BDF7 BDFE BDF9 E84B FFFD FFFD E84C - E848 BE40 BDFB FFFD FFFD BDFA BDFC FFFD - E847 FFFD EBCA BFE8 FFFD FFFD EBCC BFEA - EBCF EBCB EBC9 EBCE BFE9 EBCD FFFD BFE7 - FFFD FFFD C1D3 C1D6 EEC1 FFFD C1D4 EEC0 - C1D2 C1D5 F146 F147 F148 C2E0 FFFD F149 - FFFD C2E1 C3E2 F358 F359 F357 F356 F35A - C3E1 F4DD F4DB F4DC F4DE F4DA F4DF F658 - FFFD F659 F657 C546 F764 C5AF F765 F848 - F847 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 8F9B - srcEnd = 9483 - mappingOffset = 3F89 - Mapping = - A8AF B664 FFFD FFFD B940 FFFD FFFD FFFD - BBB6 FFFD FFFD BFEC FFFD BFEB FFFD FFFD - FFFD FFFD C3E3 C47C C547 A8B0 B064 B941 - FFFD F35B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CBA6 FFFD FFFD A8B1 - FFFD A8B4 A8B3 A8B2 FFFD FFFD CBA5 FFFD - CDCD FFFD CDCF AAEF FFFD FFFD AAF1 CDCC - CDCE AAF0 CDD1 CDD0 CDD2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D0B6 D0B4 AD7C - D0B3 ADA3 AD7E AD7B FFFD ADA4 FFFD AD7D - ADA2 FFFD ADA1 D0B5 FFFD AD7A FFFD FFFD - FFFD B06A D3EB D3F1 B067 B06E FFFD B069 - D3EE D3F0 B06C D3EA D3ED B068 B065 D3EC - B06B D3EF B06D B066 FFFD FFFD FFFD FFFD - D7E3 D7E6 B370 FFFD B37A B376 D7E4 FFFD - FFFD B37E B377 B37C B372 FFFD B36F B371 - B37D D7E5 B375 B378 B374 B379 D7E7 B37B - B373 D7E2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DC4D B665 DC4F FFFD B667 B669 - FFFD DC4E B666 B66A FFFD B668 FFFD FFFD - FFFD B947 E0A3 B94F E07E FFFD B950 B945 - FFFD E0A1 FFFD FFFD B94A FFFD E0A2 B943 - B942 FFFD B94D B94C B94B B949 B94E E07D - B944 B946 B948 FFFD FFFD BBB8 BBBB FFFD - BBBF BBB9 BBBE BBBC FFFD BBB7 FFFD BBBD - BBBA FFFD FFFD FFFD E852 BE43 BE41 FFFD - E853 FFFD BE44 BE42 E851 E850 FFFD BFF0 - E84F BFEE BFED EBD0 BE45 BFEF EBD1 BFF2 - EBD2 BFF1 C1D8 EEC3 C1D7 C1DC C1DA C1DB - C2E3 C1D9 EEC2 EBD3 C2E2 C2E4 FFFD C3E4 - C3E5 FFFD F4E0 FFFD C5DE C5DD A8B6 FFFD - FFFD CA55 B06F FFFD CA52 CA53 CA51 FFFD - CA54 FFFD FFFD CBAA CBA7 CBAC CBA8 A8B7 - A8BA FFFD CBA9 A8B9 CBAB FFFD FFFD A8B8 - FFFD FFFD FFFD FFFD CDD5 CDD7 AAF4 CDD3 - CDD6 CDD4 AAF2 AAF5 FFFD AAF3 FFFD FFFD - FFFD FFFD D0B8 D0BC D0B9 FFFD ADA7 FFFD - ADA8 FFFD D0BB FFFD D0BD D0BF FFFD ADA5 - D0BE FFFD FFFD ADA6 FFFD FFFD FFFD FFFD - FFFD D7EE D0BA D3F2 D3FB D3F9 D3F4 D3F5 - D3FA D3FC B071 FFFD D3F7 D3F3 B070 B072 - D3F6 D3FD D3F8 FFFD FFFD B3A1 D7F1 D7E9 - D7EF D7F0 B3A2 FFFD D7E8 D7EA D0B7 D7EC - D7ED D7EB B66C FFFD FFFD FFFD DC56 EBD4 - DC57 DC54 B3A3 B66E DC53 DC59 DC58 B66B - DC5C DC52 DC5B DC50 DC5A DC55 B66D FFFD - E0AA FFFD E0A5 E0AB E0A6 E0A4 E0A7 B951 - FFFD E0A9 FFFD E0A8 B952 BBC1 BBC0 E46E - E471 E469 E46D BBC2 E46C E46A E470 E46B - E468 E46F FFFD E859 BE48 F14A E856 E857 - E855 DC51 BE47 E85A E854 BE46 BE49 E858 - EBD5 BFF3 EBD6 EBD7 FFFD EEC4 C1DD F14B - F14C FFFD FFFD F14D F35D F35C F4E2 FFFD - F4E1 F65B F65C F65A F766 C5B0 A8BB ADAA - ADA9 B075 B074 D440 D441 D3FE FFFD B073 - D7F5 FFFD D7F6 D7F2 B3A4 D7F3 FFFD D7F4 - FFFD FFFD FFFD FFFD DC5F DC61 DC5D DC60 - B66F DC5E B670 FFFD FFFD DD73 B955 B954 - FFFD B953 FFFD E0AC E0AD FFFD FFFD E473 - E475 BBC6 BBC3 FFFD BBC5 BBC4 E474 E472 - FFFD FFFD FFFD FFFD FFFD E861 E85E E85F - BE4D E860 E85B E85C BE4A FFFD BE4B E85D - BE4C FFFD EBDB FFFD EBDC EBD9 EBDA BFF4 - EBD8 FFFD FFFD FFFD FFFD FFFD EEC8 EEC5 - EEC7 C1E0 EECB C1DF EEC9 EECC EECA EEC6 - C1DE FFFD F14F FFFD F150 F14E FFFD F152 - C2E5 C2E6 F35F C3E7 F151 F35E C3E6 F4E5 - F4E6 C4BF F4E4 FFFD F4E3 FFFD F65D C548 - FFFD F849 F8C8 F8C7 FFFD C643 C65D F8C9 - F971 FFFD C66F A8BC AAF6 FFFD B956 FFFD - C4C0 A8BD ADAB B3A5 B671 C2E7 AAF7 FFFD - D0C1 D0C0 D442 FFFD B078 B076 B07A D444 - FFFD B079 B077 FFFD FFFD FFFD FFFD D443 - B3A8 D7FC FFFD B3A7 B3A9 D842 B3AB D7FE - D840 D7F7 B3AA D843 FFFD FFFD D7F9 FFFD - D7FA D7F8 B3A6 FFFD D841 D7FB D7FD FFFD - FFFD FFFD DC6D FFFD DC6C DC6A DC62 DC71 - DC65 DC6F DC76 DC6E B679 FFFD B675 DC63 - FFFD DC69 B677 FFFD DC68 B678 B67A DC6B - FFFD B672 B673 DC77 DC75 FFFD DC74 DC66 - FFFD DC72 FFFD B676 FFFD FFFD FFFD FFFD - B674 DC73 DC64 DC67 DC70 FFFD FFFD FFFD - FFFD FFFD E4BA E0B7 FFFD E0B0 E0C3 E0CC - E0B3 B961 FFFD E0C0 B957 B959 B965 E0B1 - FFFD FFFD B95A B95C B966 B95B FFFD FFFD - FFFD FFFD B964 E0B9 FFFD E0AE B962 E0B8 - B95E E0CA B963 E0C8 E0BC E0C6 B960 E0AF - E0C9 E0C4 FFFD E0CB B958 FFFD FFFD B967 - B95D FFFD FFFD E0B5 FFFD E0BD E0C1 FFFD - E0C5 B95F E0B4 E0B2 E0BE FFFD FFFD FFFD - FFFD E0BB E0BA FFFD E0BF E0C2 FFFD E0C7 - FFFD FFFD FFFD E478 FFFD BBC7 E4A4 E47A - BBCC BBD0 E4AD E4B5 E4A6 BBC8 FFFD E4AA - E0B6 FFFD BBC9 E4B1 E4B6 E4AE FFFD E4B0 - E4B9 E4B2 E47E E4A9 FFFD FFFD BBD1 FFFD - BBCD E47C E4AB BBCB E4A5 BBCA E4B3 E4A2 - E479 BBCE E4B8 FFFD FFFD E47B E4AF E4AC - E4A7 E477 E476 E4A1 E4B4 BBCF E4B7 E47D - E4A3 BE52 FFFD FFFD FFFD FFFD FFFD BE5A - BE55 E8A4 E8A1 E867 BE50 FFFD FFFD FFFD - BE4F BE56 FFFD FFFD FFFD E865 BE54 E871 - E863 E864 BE4E E8A3 BE58 E874 E879 E873 - EBEE E86F E877 E875 E868 E862 E87D BE57 - E87E FFFD E878 FFFD E86D E86B E866 FFFD - FFFD FFFD E86E E87B E86A E87A E8A2 FFFD - FFFD BE53 FFFD E876 E87C E872 E86C BE51 - FFFD FFFD FFFD E4A8 E870 BE59 E869 FFFD - FFFD FFFD FFFD FFFD EBF4 BFF7 EBF3 EBF0 - EC44 BFFB FFFD EC41 EBF8 EC43 EBE9 EBF6 - FFFD BFFD FFFD EBE1 FFFD EBDF EC42 FFFD - EC40 EBFE EBED EBEC EBE2 C040 FFFD EBE8 - EBF2 EBFD C043 EC45 FFFD C1E8 C045 BFFE - EBE6 FFFD EBEF EBDE EBE0 BFF5 C042 BFFA - EBE7 EBF7 EBF1 C041 EBDD C1E3 EBF9 EBFC - BFFC FFFD EBEB C044 BFF9 FFFD FFFD FFFD - BFF8 EBF5 EBFB BFF6 FFFD EBE4 EBFA FFFD - FFFD EBE5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EBEA EED2 FFFD EED7 C1E5 - C1E7 EEDD C1E1 EEEC EEE3 EED8 EED9 EEE2 - FFFD C1EE EEE1 EED1 EEE0 EED4 EEED C1ED - C1EB EED5 FFFD EEE8 FFFD EEDA EEE7 FFFD - EEE9 EED0 C1E6 FFFD EEEA FFFD FFFD EEDE - FFFD C1EA EEDB FFFD FFFD C1EC EEE4 FFFD - FFFD FFFD C1E4 EED6 EEE5 FFFD EEDF EBE3 - EEE6 EED3 FFFD C1E9 FFFD EEEB FFFD C1E2 - EECE FFFD FFFD FFFD FFFD F160 F159 C2E9 - FFFD F154 F163 F15B EEDC FFFD F165 F155 - FFFD C2E8 F15F C2EA C2F2 C2F0 F161 C2F1 - F157 FFFD F158 F15D F162 FFFD EECD C2EB - F16A F167 F16B F15E F15A F168 F36A F15C - FFFD C2EE FFFD C2ED EECF C2EF F164 F166 - C2EC F169 F153 FFFD F156 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F373 FFFD F363 - C3EB F371 FFFD FFFD F361 C3EC FFFD F36C - FFFD F368 C3F1 F372 F362 F365 C3E9 F374 - FFFD F36D F370 C3EF C3F4 C3F2 F369 F364 - FFFD C3ED C3EE F360 C3EA FFFD C3E8 C3F0 - F36F C3F3 FFFD F36B F375 C3F5 FFFD FFFD - FFFD F367 FFFD F36E FFFD FFFD FFFD FFFD - FFFD FFFD F4F3 F542 F4F5 F4FC F366 F4FA - F4E9 F540 C4C3 F4ED F4FE F4F4 FFFD FFFD - C4C2 FFFD FFFD F544 F4F6 FFFD F4FB F4FD - F4E7 F541 F4F2 F4F7 F4EB F4EF F543 F4F9 - F4E8 F4EC F4EE F4F8 FFFD C4C1 F4F1 FFFD - FFFD FFFD FFFD FFFD FFFD F4EA FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4F0 F661 F666 - C54F F668 FFFD C549 FFFD F664 F66A C54E - C54A FFFD C54B F660 F667 C54D F665 C54C - F65F F663 F662 FFFD F65E F669 FFFD FFFD - FFFD C5B1 F76D F770 F76C F76E F76F F769 - F76A F767 FFFD FFFD F76B F768 C5B2 C5B3 - FFFD FFFD F84B FFFD F84D FFFD FFFD FFFD - FFFD FFFD F84C F84E FFFD C5E0 FFFD F84A - C5DF C5E1 FFFD FFFD FFFD F8CB F8CC C644 - F8CA FFFD F953 F952 F954 C65F F955 C65E - F956 F972 F975 F974 C668 F973 FFFD FFFD - FFFD C672 C670 C671 C677 F9C0 F9C1 F9BF - F9C9 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 9577 - srcEnd = 95E5 - mappingOffset = 4472 - Mapping = - AAF8 FFFD FFFD D844 DC78 E8A5 F376 FFFD - FFFD AAF9 FFFD ADAC B07B FFFD FFFD D845 - FFFD D846 B3AC FFFD B67D DC7A DC79 B6A3 - B67C DC7B B67E B6A2 B6A1 B67B FFFD FFFD - FFFD B968 FFFD FFFD E0D0 E0CE FFFD E0CF - E0CD FFFD BBD2 FFFD BBD5 BBD7 BBD6 FFFD - FFFD BBD3 BBD4 FFFD E8A7 E8A6 BE5B E8A8 - FFFD E8A9 BE5C FFFD FFFD FFFD EC4D EC4B - EEF3 FFFD EC49 EC4A C046 EC46 EC4E EC48 - EC4C EEEF FFFD FFFD EEF1 FFFD EEF2 C1F3 - EEEE C1F2 EEF0 C1EF C1F0 C1F1 EC47 FFFD - FFFD C2F5 F16E F16C F16D C2F3 C2F6 C2F4 - FFFD FFFD FFFD F377 F378 C3F6 FFFD F545 - F547 F546 C4C4 C550 F66D F66C F66B -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 961C - srcEnd = 9874 - mappingOffset = 44E1 - Mapping = - AAFA FFFD C9AA FFFD CA58 A6E9 CA56 CA59 - CA57 FFFD FFFD FFFD CBAE FFFD A8C1 FFFD - A8C2 CBB0 A8BF CBAF CBAD A8C0 A8BE FFFD - FFFD FFFD FFFD FFFD FFFD CDD8 CDDB AAFD - CDDA CDD9 FFFD AAFC AAFB FFFD AB40 CDDC - AAFE FFFD FFFD FFFD FFFD FFFD D0C6 ADAE - ADAF ADB0 D0C7 D0C3 ADAD D0C4 FFFD D0C5 - D0C2 FFFD FFFD FFFD B0A4 FFFD FFFD B0A1 - D445 B0A2 B0A5 D446 FFFD B07E B07C B07D - B0A3 FFFD FFFD FFFD FFFD FFFD B3AD D849 - B3B5 D848 FFFD D84B B3B1 D84A B6AB B3AF - B3B2 B3AE B3B3 B3B4 B3B0 FFFD FFFD FFFD - D847 B6A7 DC7D FFFD DCA3 FFFD FFFD DCA2 - B6AC B6A8 B6A9 DC7C DC7E DCA1 B6A4 B6A6 - FFFD B6AA B6A5 FFFD FFFD E0D3 E0D1 E0D2 - B96A B96B FFFD E0D4 B969 BBD8 FFFD BBDA - BBD9 FFFD E4BB FFFD FFFD E4BC E8AB FFFD - E8AA FFFD FFFD C047 C048 EC4F C049 FFFD - EEF6 FFFD EEF4 FFFD EEF5 C1F4 FFFD F16F - C3F7 FFFD FFFD FFFD C1F5 AB41 FFFD B0A6 - D447 FFFD FFFD D84C B3B6 B6AD DCA4 DCA6 - B6AF B6AE B6B0 B6B1 DCA5 B96E B96F B96D - BBDB B96C E0D5 FFFD FFFD FFFD BBDC E8AC - EC50 C04A C1F6 F170 F174 C2F9 F171 C2FA - C2F8 F175 C2FB F173 FFFD F379 C2F7 C3F8 - FFFD F8CD FFFD FFFD AB42 B3B8 B3B7 FFFD - FFFD FFFD FFFD B6B2 DCA8 DCA7 B6B3 FFFD - FFFD E0D9 B973 B970 E0D8 B972 E0D6 B971 - FFFD E0D7 FFFD E4BD BBDD FFFD E8AF FFFD - BE5D E8AD BE5E BE5F E8AE BE60 FFFD EC51 - FFFD C04E C04B C050 EC53 C04C EC52 C04F - FFFD FFFD C04D FFFD EEF9 EEFB FFFD FFFD - C1F7 EEFA C1F8 EEF8 EEF7 FFFD F177 F176 - C2FC F178 F37E C3FA F37D F37A C3F9 F37B - F37C FFFD F548 F549 C4C5 FFFD C553 FFFD - FFFD F66E FFFD FFFD C551 C552 F66F FFFD - FFFD C5B4 C5B5 F771 FFFD FFFD C645 F8CF - C647 FFFD F8CE F8D0 C646 F957 FFFD F9AD - FFFD FFFD FFFD FFFD FFFD FFFD AB43 FFFD - FFFD FFFD B974 FFFD E4BE FFFD E8B0 C051 - C052 FFFD AB44 FFFD BE61 C3FB ADB1 FFFD - FFFD FFFD C053 FFFD C5E2 ADB2 D84D FFFD - DCA9 FFFD DCAB FFFD DCAA FFFD E0DD E0DA - B975 FFFD B976 E0DB E0DC FFFD E4C0 E4C5 - BBDE E4BF E4C1 E4C8 E4C3 E4C7 E4C4 E4C2 - E4C6 BBDF FFFD FFFD E8B3 FFFD E8B1 BE63 - FFFD BE62 E8B2 BE64 FFFD FFFD FFFD FFFD - EC56 FFFD FFFD EC55 C054 EC54 EEFC FFFD - EEFE EF41 EF40 FFFD C1F9 EEFD F1A1 C2FD - F17D F1A2 C2FE FFFD F17B FFFD F17E F17C - F179 C340 F17A FFFD FFFD FFFD FFFD F3A1 - FFFD FFFD F3A3 F3A2 FFFD F54A FFFD F54B - FFFD FFFD FFFD F670 FFFD C5B7 FFFD C5B6 - F84F F850 C648 F8D1 FFFD C669 FFFD ADB3 - B6B4 E4CA E4C9 E8B5 E8B4 FFFD FFFD C1FA - EF43 EF42 F1A5 F1A3 F1A6 F1A4 FFFD FFFD - C3FC F3A4 F3A5 F3A6 FFFD F671 FFFD F772 - FFFD F8D2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD ADB4 FFFD FFFD EC57 EF44 FFFD ADB5 - FFFD FFFD BBE0 FFFD EC58 C341 F1A7 C3FD - FFFD F54C F54D C554 F851 ADB6 B3BB B3BC - D84E B6B5 B6B6 DCAC B6B7 FFFD B97A FFFD - B97C E0DF E0E0 E0DE B977 B978 B97B B979 - FFFD FFFD E4CB BBE1 BBE2 FFFD FFFD E8BC - BE67 E8B7 E8B6 FFFD E8BB BE65 FFFD FFFD - C05B FFFD E8B8 E8BD E8BA E8B9 FFFD BE66 - FFFD C059 FFFD EC5A C055 FFFD EC5B FFFD - FFFD EC59 FFFD C058 C056 C05A FFFD C057 - FFFD FFFD FFFD FFFD FFFD EF45 FFFD EF4A - EF46 EF49 C1FB FFFD EDD4 EF48 EF47 FFFD - C344 C342 C345 C343 F1A8 F1A9 F1AA C346 - FFFD FFFD FFFD F3AA C440 F3A8 FFFD C441 - F3A7 F3A9 C3FE F551 F54E FFFD F54F F550 - F672 C556 FFFD C555 FFFD F774 F773 C5B8 - FFFD FFFD FFFD C5E3 C649 C660 F958 F9AE - F9AF -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 98A8 - srcEnd = 98CC - mappingOffset = 473A - Mapping = - ADB7 DCAD FFFD FFFD E0E1 E4CC E4CD BBE3 - FFFD BBE4 E8BE BE68 FFFD FFFD C1FC FFFD - F1AB FFFD C347 F3AD C442 F3AC F3AE F3AB - F675 F552 F553 FFFD C4C6 FFFD F674 FFFD - FFFD F673 FFFD F775 F9B0 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 98DB - srcEnd = 9961 - mappingOffset = 475F - Mapping = - ADB8 FFFD FFFD FFFD ADB9 FFFD FFFD B0A7 - D448 FFFD D84F FFFD B6B8 FFFD B6BB B6B9 - DCAE FFFD B6BD FFFD B6BA FFFD FFFD B6BC - FFFD B97E FFFD E0E2 FFFD FFFD E0E3 E8C0 - FFFD B97D B9A1 B9A2 FFFD E4CF FFFD E4CE - BBE5 FFFD BBE6 FFFD E4D0 E8BF BBE8 BE69 - FFFD BBE7 FFFD FFFD FFFD C05C E8C1 BE6B - BE6A E8C2 E8C5 E8C3 E8C4 BE6C FFFD C061 - C05F FFFD FFFD C05E EC5D FFFD C060 FFFD - FFFD EC5C EF4B FFFD EC5E C05D EC5F EF4E - EF4C EF4D EF52 C34B EF51 EF54 EF53 EF50 - EF4F FFFD C1FD FFFD FFFD FFFD FFFD F1AE - FFFD F1AD C34A C348 C349 FFFD F1AC FFFD - F3B1 FFFD C443 FFFD F3B0 F3AF C444 FFFD - F558 F557 FFFD F555 FFFD F554 C4C8 C4C7 - F559 F776 C5B9 F677 C557 F676 F556 FFFD - F777 C5E4 FFFD C661 F959 FFFD F9B1 -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 9996 - srcEnd = 9A6B - mappingOffset = 47E6 - Mapping = - ADBA D850 EF55 ADBB FFFD FFFD E4D2 E4D1 - EC60 FFFD FFFD EF57 FFFD EF56 FFFD C34C - F3B2 F3B3 C4C9 FFFD FFFD F9B2 B0A8 B6BF - B6BE E0E4 E0E6 B9A4 E0E5 B9A3 B9A5 E0E7 - FFFD FFFD FFFD E4D4 E4D6 E4D5 FFFD E4D8 - FFFD FFFD FFFD BBE9 E4D7 E4D3 FFFD FFFD - FFFD E4D9 FFFD E8CC FFFD E8CF E8D1 E8C7 - E8CB E8C8 BE6E BE71 BE73 E8C9 E8CA BE72 - E8CD E8D0 E8CE BE74 FFFD BE70 E8C6 BE6D - FFFD BE6F FFFD FFFD C063 EC66 EC64 EC63 - FFFD EC69 FFFD EC68 EC67 FFFD EC62 C062 - EC61 FFFD EC65 C064 FFFD FFFD EF5A FFFD - EF5E EF5B EF5D EF5C EF59 EF5F EF62 EF60 - EF61 C240 FFFD C1FE EF58 EF63 F1B3 F1B6 - F1B8 F1B7 FFFD F1B1 F1B5 F1B0 FFFD F1B2 - C34D F1AF FFFD F1B4 FFFD FFFD F3C0 F3B5 - C445 FFFD FFFD C446 F3B4 F3B9 F3BF F3B7 - F3BE FFFD F3BB FFFD F3BA F3BD F3B8 F3B6 - FFFD F3BC FFFD F560 F55E C4CA F55D F563 - F561 FFFD C4CB F55C F55A FFFD F55B C4CD - F55F C4CC F562 F678 F67E FFFD FFFD F679 - C55B F6A1 C55A F67D F67C C559 F67B C558 - F67A FFFD F77D F7A1 F77E FFFD F77B C5BB - F778 F77C F7A3 FFFD F7A2 F779 F77A C5BA - F852 C5E7 FFFD F853 C5E5 C5E6 FFFD FFFD - F8D3 C64A F976 FFFD C66A FFFD F9B3 C66B - F9B4 F9B5 F9C3 F9C2 C67A F9CD -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 9AA8 - srcEnd = 9C7A - mappingOffset = 48BC - Mapping = - B0A9 FFFD FFFD E0E9 FFFD E0E8 FFFD BBEA - BBEB E4DA FFFD E8D2 EC6C FFFD FFFD BE75 - C065 EC6A FFFD EC6D C066 FFFD EF64 EC6B - F1B9 C34E F3C1 FFFD FFFD FFFD F566 F564 - FFFD FFFD F565 FFFD FFFD F6A2 FFFD C55C - F7A4 C5EA C5BC C5E8 C5E9 F8D4 C662 FFFD - B0AA FFFD FFFD FFFD F1BA FFFD FFFD D449 - FFFD B9A6 FFFD E4DB FFFD FFFD BBEC E4DC - FFFD FFFD FFFD E8D4 E8D3 C068 BE76 BE77 - FFFD E8D7 E8D6 E8D5 FFFD FFFD EC6E EC71 - FFFD EC70 EC6F C067 EF68 EF66 EF65 FFFD - FFFD EF67 FFFD C34F F1BC F1BD C350 FFFD - F1BB FFFD F3C3 F3C2 F3C5 C447 F3C4 FFFD - F567 F569 F568 FFFD FFFD F6A3 F6A6 F6A4 - F6A5 F7A5 C5BD FFFD FFFD FFFD F854 F855 - F856 FFFD C64B C663 F9B6 B0AB FFFD BE78 - C069 F1BE FFFD F7A6 FFFD FFFD F9C4 D44A - FFFD C67B B0AC EC72 FFFD F1BF FFFD F3C6 - FFFD FFFD F6A7 F7A7 B0AD FFFD E4DD E4DE - FFFD BBED BBEE E8D9 BE7A BE79 E8D8 FFFD - EF69 FFFD F1C0 F1C2 F1C1 C353 C352 C351 - FFFD C55E F6A8 FFFD C55D F7A9 F7A8 FFFD - C64C F8D5 B3BD E0EA FFFD FFFD FFFD E4E1 - E4DF E4E0 FFFD FFFD E8E2 FFFD E8DD E8DA - E8E1 FFFD FFFD FFFD E8E3 FFFD FFFD BE7C - E8E0 E8DC FFFD FFFD E8DB E8DF E8DE BE7B - FFFD FFFD EC7D EC78 EC76 ECA1 EC77 FFFD - EC73 FFFD EC79 FFFD FFFD EC74 EF72 EC75 - ECA2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EC7C C06A EC7B EC7A FFFD EC7E FFFD FFFD - FFFD FFFD EF6A EF6D FFFD FFFD EF6C FFFD - EF74 EF6F EF73 FFFD EF71 EF70 EF6E FFFD - EF6B FFFD C243 C242 FFFD C244 C241 EF75 - FFFD FFFD FFFD FFFD FFFD F1C8 F1CB FFFD - F1C9 F1CD FFFD FFFD FFFD F1CE FFFD F1C6 - C358 F1C7 FFFD F1C5 F1CC FFFD F1C4 F1C3 - C357 C355 C354 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F1CA F3CF F3D5 C44A F3D0 - FFFD F3D3 F3D7 C44B F3D2 FFFD F3CA FFFD - F3C9 F3D6 F3CD FFFD F3CB F3D4 F3CC C449 - C448 FFFD F3C7 F3C8 F3D1 FFFD FFFD FFFD - F3CE FFFD FFFD FFFD FFFD FFFD FFFD F56C - F56F FFFD FFFD FFFD FFFD C356 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F56D F573 F571 - F56B F576 FFFD F56A FFFD C4CF F572 FFFD - FFFD FFFD F56E C4CE F575 FFFD FFFD F574 - FFFD FFFD FFFD FFFD F6AB F6AA FFFD FFFD - FFFD F6B1 FFFD F6AD F6B0 C560 FFFD FFFD - F6AE F6AF FFFD F6A9 F6AC C55F FFFD FFFD - FFFD C5BF F7B4 F7AF F7B3 FFFD F7B6 F7B2 - FFFD F7AE FFFD C5C1 F7B1 F7B5 C5C0 F7AC - F570 F7B0 FFFD FFFD F7AD FFFD F7AA FFFD - F7AB C5BE F85A F85C F85F F85B F860 FFFD - F859 FFFD F857 FFFD C5EB F85D C5ED C5EC - F858 F85E FFFD FFFD FFFD FFFD F8DA C64D - F8DB FFFD F8D9 F8D6 FFFD FFFD F8D8 F8D7 - F95A FFFD FFFD FFFD FFFD F95C F95B FFFD - FFFD F979 FFFD F978 F977 F97A FFFD C673 - C674 F9CA F9CE -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 9CE5 - srcEnd = 9E1E - mappingOffset = 4A8F - Mapping = - B3BE DCAF E0ED FFFD B9A7 E0EB FFFD FFFD - E0EC FFFD FFFD FFFD E4E2 E4E3 BBF1 BBEF - E4E4 BBF0 E8E8 FFFD E8EB E8E5 E8EC E8E4 - E8E6 FFFD E8E7 E8EA FFFD FFFD BEA1 E8EF - E8EE BE7D E8E9 E8ED BE7E FFFD FFFD FFFD - FFFD FFFD FFFD ECAC FFFD C06F FFFD ECA7 - C06B FFFD ECA4 ECAA ECAD FFFD C070 FFFD - ECA9 ECA6 ECAE ECA5 FFFD ECAB C06C FFFD - ECA3 C06D FFFD C06E ECA8 FFFD FFFD FFFD - EFA9 EF7A EF7B EF7E EF7C FFFD EF76 FFFD - FFFD EF79 EFA5 EF7D FFFD FFFD C245 FFFD - EFA7 EFA4 C246 EFA6 EF77 EFA2 EFA3 FFFD - EFA1 FFFD FFFD FFFD FFFD F1D2 F1D4 F1D7 - FFFD FFFD F1D1 FFFD C359 F1D9 F1D0 F1DA - FFFD F1D6 F1D8 F1DC F1D5 F1DD F1D3 F1CF - C35A FFFD F1DB C35B C44D FFFD FFFD FFFD - FFFD FFFD EF78 F3F1 F3E8 C44F F3E4 C450 - FFFD FFFD F3ED F3E7 F3DD C44E F3EA F3E5 - F3E6 FFFD F3D8 F3DF F3EE FFFD F3EB FFFD - F3E3 FFFD F3EF F3DE F3D9 F3EC FFFD F3DB - F3E9 F3E0 F3F0 F3DC C44C F3DA F3E1 F3E2 - FFFD FFFD FFFD F57D FFFD F57B FFFD F5A2 - FFFD F5AE F5A5 F57C F578 F5A7 F57E F5A3 - F57A F5AA F577 F5A1 F5A6 F5A8 F5AB F579 - FFFD F5AF F5B0 F5A9 F5AD F5A4 FFFD F6C1 - F6C4 FFFD C561 FFFD F6C3 F6C8 F6C6 C562 - F6BD F6B3 F6B2 C564 F6BF F6C0 F6BC F6B4 - FFFD F6B9 F5AC FFFD F6B5 C563 F6BB FFFD - F6BA FFFD F6B6 F6C2 FFFD F6B7 F7BB F6C5 - F6C7 F6BE F6B8 F7BC F7BE F7B8 C5C2 FFFD - F7C5 F7C3 C5C3 F7C2 F7C1 F7BA F7B7 F7BD - F7C6 F7B9 F7BF FFFD F869 F86E F864 F867 - C5EE F86B FFFD F872 F7C0 FFFD F865 F86F - F873 F86A F863 F86D FFFD F86C F871 F870 - F7C4 F868 F862 F866 C64E C64F F861 FFFD - F8E6 F8DD F8E5 F8E2 F8E3 F8DC F8DF F8E7 - F8E1 F8E0 F8DE FFFD F8E4 FFFD F95D FFFD - F95E FFFD F960 F95F F962 F961 F97C F97B - F9B7 FFFD F9B8 FFFD F9C5 C678 C67C FFFD - F9CF C67D -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 9E75 - srcEnd = 9F7E - mappingOffset = 4BC9 - Mapping = - B3BF FFFD FFFD FFFD C4D0 F6C9 FFFD C650 - C651 FFFD B3C0 E0EE FFFD B9A8 E8F0 FFFD - FFFD ECB0 ECB1 ECAF EFAB EFAA C247 F1DF - EFAC F1DE FFFD FFFD F3F3 C451 C453 F3F2 - FFFD FFFD C452 FFFD F5B1 F5B3 F5B2 F6CA - C565 FFFD C5EF F8E8 F963 FFFD FFFD F9D2 - B3C1 FFFD E4E5 FFFD BEA2 FFFD FFFD FFFD - ECB3 ECB2 FFFD EFAD FFFD FFFD FFFD C454 - C4D1 F7C7 F9CB FFFD FFFD FFFD B3C2 BBF2 - FFFD BEA3 FFFD F3F4 FFFD F874 B6C0 FFFD - FFFD FFFD FFFD EFAE FFFD FFFD FFFD C664 - B6C1 BEA4 C248 F875 B6C2 FFFD E8F1 C072 - ECB4 ECB5 FFFD C071 FFFD EFAF C24C C24A - C24B C249 F1E0 C35C FFFD FFFD FFFD F5B5 - F5B4 F5B7 F5B6 C4D2 FFFD FFFD F6CB FFFD - F6CD F6CC C566 F7C8 FFFD F876 F877 C5F0 - F964 F97D C675 FFFD DCB0 ECB6 EFB0 F3F5 - E0EF FFFD EFB1 F1E2 F1E1 FFFD FFFD FFFD - FFFD F878 C652 FFFD F965 F97E FFFD FFFD - FFFD B9A9 E8F2 E8F3 FFFD ECB7 B9AA FFFD - C35D F1E3 FFFD F6CF C567 F6D0 F6CE F879 - FFFD F8E9 FFFD B9AB FFFD EFB4 EFB3 EFB2 - F1E4 FFFD FFFD F1E8 F1E7 F1E6 F1E5 C35E - F3F6 F5B9 C4D3 F5B8 F6D1 F7CB F7CA C5C4 - F7C9 F87C F87B F87A FFFD FFFD BBF3 FFFD - ECB8 C24D FFFD F3F7 F3F8 F7CC F87D FFFD - FFFD F8EA F966 F9B9 F9D4 BBF4 C24E F1E9 - F3F9 F6D2 F87E FFFD FFFD BEA6 FFFD EFB5 - F1EA F3FA F3FB F3FC F5BE FFFD F5BA C568 - F5BD F5BC C4D4 F5BB C4D6 FFFD C4D5 F6D4 - F6D3 C569 C56A FFFD FFFD C5C6 F7CD C5C5 - FFFD F8A3 F8A4 F8A2 F8A1 C654 FFFD F8EB - F8EC F8ED C653 F967 F96A F969 F968 FFFD - FFFD F9D3 -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 9F8D - srcEnd = 9FA4 - mappingOffset = 4CD3 - Mapping = - C073 FFFD FFFD C365 F5BF F6D5 FFFD C5C7 - F7CE FFFD FFFD F9D5 FFFD FFFD FFFD C074 - FFFD FFFD FFFD EFB6 FFFD F7CF FFFD F9A1 -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = FA0C - srcEnd = FA0D - mappingOffset = 4CEB - Mapping = - C94A DDFC -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = FE30 - srcEnd = FE6B - mappingOffset = 4CED - Mapping = - A14A A157 FFFD A159 A15B A15F A160 A163 - A164 A167 A168 A16B A16C A16F A170 A173 - A174 A177 A178 A17B A17C FFFD FFFD FFFD - FFFD A1C6 A1C7 A1CA A1CB A1C8 A1C9 A15C - A14D FFFD A14F FFFD A151 A152 A153 A154 - FFFD A17D A17E A1A1 A1A2 A1A3 A1A4 A1CC - A1CD A1CE A1DE A1DF A1E0 A1E1 A1E2 FFFD - FFFD A24C A24D A24E -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = FF01 - srcEnd = FF20 - mappingOffset = 4D29 - Mapping = - A149 FFFD A1AD A243 A248 A1AE FFFD A15D - A15E A1AF A1CF A141 A1D0 A144 A241 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD A147 A146 A1D5 A1D7 A1D6 A148 A249 -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = FF3C - srcEnd = FF3F - mappingOffset = 4D49 - Mapping = - A242 FFFD FFFD A1C4 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = FF57 - srcEnd = FF64 - mappingOffset = 4D4D - Mapping = - A340 A341 A342 A343 A161 A155 A162 FFFD - FFFD FFFD FFFD FFFD FFFD A14E -End of Item 0064 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0065, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x001E, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x014D, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0015 */ -/* Total of Format 1 : 0x0045 */ -/* Total of Format 2 : 0x000B */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2210, 0x1221, 0x1112, -0x1211, 0x2122, 0x1111, 0x1111, 0x1122, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x001E Start of MapCell Array */ -/* 0000 */ 0x0391, 0x03A1, 0xA344, -/* 0001 */ 0x03A3, 0x03A9, 0xA355, -/* 0002 */ 0x03B1, 0x03C1, 0xA35C, -/* 0003 */ 0x03C3, 0x03C9, 0xA36D, -/* 0004 */ 0x0416, 0x041C, 0xC7B4, -/* 0005 */ 0x0423, 0x0435, 0xC7BB, -/* 0006 */ 0x0436, 0x044F, 0xC7CF, -/* 0007 */ 0x2160, 0x2169, 0xA2B9, -/* 0008 */ 0x2460, 0x2469, 0xC7E9, -/* 0009 */ 0x2474, 0x247D, 0xC7F3, -/* 000A */ 0x2581, 0x2588, 0xA262, -/* 000B */ 0x3021, 0x3029, 0xA2C3, -/* 000C */ 0x3041, 0x3093, 0xC6A5, -/* 000D */ 0x30A1, 0x30A7, 0xC6F8, -/* 000E */ 0x30A8, 0x30E6, 0xC740, -/* 000F */ 0x30E7, 0x30F6, 0xC7A1, -/* 0010 */ 0x3105, 0x310F, 0xA374, -/* 0011 */ 0x3110, 0x3129, 0xA3A1, -/* 0012 */ 0xFF10, 0xFF19, 0xA2AF, -/* 0013 */ 0xFF21, 0xFF3A, 0xA2CF, -/* 0014 */ 0xFF41, 0xFF56, 0xA2E9, -/* 0015 */ 0x00A2, 0x00B7, 0x0000, -/* 0016 */ 0x00D7, 0x0000, 0xA1D1, -/* 0017 */ 0x00F7, 0x0000, 0xA1D2, -/* 0018 */ 0x02C7, 0x02CB, 0x0016, -/* 0019 */ 0x02D9, 0x0000, 0xA3BB, -/* 001A */ 0x0401, 0x0000, 0xC7B3, -/* 001B */ 0x0414, 0x0415, 0x001B, -/* 001C */ 0x0451, 0x0000, 0xC7CE, -/* 001D */ 0x2013, 0x2026, 0x001D, -/* 001E */ 0x2032, 0x203E, 0x0031, -/* 001F */ 0x2103, 0x2109, 0x003E, -/* 0020 */ 0x2190, 0x2199, 0x0045, -/* 0021 */ 0x221A, 0x223C, 0x004F, -/* 0022 */ 0x2252, 0x0000, 0xA1DC, -/* 0023 */ 0x2260, 0x2267, 0x0072, -/* 0024 */ 0x22A5, 0x0000, 0xA1E6, -/* 0025 */ 0x22BF, 0x0000, 0xA1E9, -/* 0026 */ 0x2500, 0x253C, 0x007A, -/* 0027 */ 0x2550, 0x0000, 0xA2A4, -/* 0028 */ 0x255E, 0x2573, 0x00B7, -/* 0029 */ 0x2589, 0x25A1, 0x00CD, -/* 002A */ 0x25B2, 0x25CF, 0x00E6, -/* 002B */ 0x25E2, 0x25E5, 0x0104, -/* 002C */ 0x2605, 0x2609, 0x0108, -/* 002D */ 0x2640, 0x2642, 0x010D, -/* 002E */ 0x3000, 0x301E, 0x0110, -/* 002F */ 0x309D, 0x309E, 0x012F, -/* 0030 */ 0x30FE, 0x0000, 0xC6A1, -/* 0031 */ 0x32A3, 0x0000, 0xA1C0, -/* 0032 */ 0x338E, 0x338F, 0x0131, -/* 0033 */ 0x339C, 0x33A1, 0x0133, -/* 0034 */ 0x33C4, 0x33D5, 0x0139, -/* 0035 */ 0x4E00, 0x4F9E, 0x014B, -/* 0036 */ 0x4FAE, 0x51E1, 0x02EA, -/* 0037 */ 0x51F0, 0x52AE, 0x051E, -/* 0038 */ 0x52BB, 0x5454, 0x05DD, -/* 0039 */ 0x5460, 0x551A, 0x0777, -/* 003A */ 0x5526, 0x5752, 0x0832, -/* 003B */ 0x5761, 0x5CB8, 0x0A5F, -/* 003C */ 0x5CC6, 0x6072, 0x0FB7, -/* 003D */ 0x607F, 0x6298, 0x1364, -/* 003E */ 0x62A8, 0x62DC, 0x157E, -/* 003F */ 0x62EB, 0x6316, 0x15B3, -/* 0040 */ 0x6328, 0x63B1, 0x15DF, -/* 0041 */ 0x63BD, 0x63F9, 0x1669, -/* 0042 */ 0x6406, 0x679F, 0x16A6, -/* 0043 */ 0x67AE, 0x67FF, 0x1A40, -/* 0044 */ 0x6812, 0x6854, 0x1A92, -/* 0045 */ 0x686B, 0x68B5, 0x1AD5, -/* 0046 */ 0x68C4, 0x6917, 0x1B20, -/* 0047 */ 0x6925, 0x6C9D, 0x1B74, -/* 0048 */ 0x6CAB, 0x6D42, 0x1EED, -/* 0049 */ 0x6D58, 0x6D98, 0x1F85, -/* 004A */ 0x6DAA, 0x6E05, 0x1FC6, -/* 004B */ 0x6E19, 0x6E79, 0x2022, -/* 004C */ 0x6E88, 0x6EDC, 0x2083, -/* 004D */ 0x6EEB, 0x7E9C, 0x20D8, -/* 004E */ 0x7F36, 0x82C3, 0x308A, -/* 004F */ 0x82D1, 0x8356, 0x3418, -/* 0050 */ 0x8373, 0x83B0, 0x349E, -/* 0051 */ 0x83BD, 0x84DB, 0x34DC, -/* 0052 */ 0x84E7, 0x89C0, 0x35FB, -/* 0053 */ 0x89D2, 0x8B9F, 0x3AD5, -/* 0054 */ 0x8C37, 0x8D1B, 0x3CA3, -/* 0055 */ 0x8D64, 0x8F64, 0x3D88, -/* 0056 */ 0x8F9B, 0x9483, 0x3F89, -/* 0057 */ 0x9577, 0x95E5, 0x4472, -/* 0058 */ 0x961C, 0x9874, 0x44E1, -/* 0059 */ 0x98A8, 0x98CC, 0x473A, -/* 005A */ 0x98DB, 0x9961, 0x475F, -/* 005B */ 0x9996, 0x9A6B, 0x47E6, -/* 005C */ 0x9AA8, 0x9C7A, 0x48BC, -/* 005D */ 0x9CE5, 0x9E1E, 0x4A8F, -/* 005E */ 0x9E75, 0x9F7E, 0x4BC9, -/* 005F */ 0x9F8D, 0x9FA4, 0x4CD3, -/* 0060 */ 0xFA0C, 0xFA0D, 0x4CEB, -/* 0061 */ 0xFE30, 0xFE6B, 0x4CED, -/* 0062 */ 0xFF01, 0xFF20, 0x4D29, -/* 0063 */ 0xFF3C, 0xFF3F, 0x4D49, -/* 0064 */ 0xFF57, 0xFF64, 0x4D4D, -/*-------------------------------------------------------*/ -/* Offset=0x014D Start of MappingTable */ - -/* 0000 */ 0xA246, 0xA247, 0xFFFD, 0xA244, 0xFFFD, 0xA1B1, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA258, 0xA1D3, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA150, 0xA3BE, 0xFFFD, -/* 0018 */ 0xA3BC, 0xA3BD, 0xA3BF, 0xC7B1, 0xC7B2, 0xA156, 0xA158, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xA1A5, 0xA1A6, 0xFFFD, 0xFFFD, 0xA1A7, 0xA1A8, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA145, 0xFFFD, 0xFFFD, 0xA14C, -/* 0030 */ 0xA14B, 0xA1AC, 0xFFFD, 0xFFFD, 0xA1AB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0xA1B0, 0xFFFD, 0xFFFD, 0xA1C2, 0xA24A, 0xFFFD, -/* 0040 */ 0xA1C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xA24B, 0xA1F6, 0xA1F4, 0xA1F7, -/* 0048 */ 0xA1F5, 0xFFFD, 0xFFFD, 0xA1F8, 0xA1F9, 0xA1FB, 0xA1FA, 0xA1D4, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA1DB, 0xA1E8, 0xA1E7, 0xFFFD, 0xFFFD, -/* 0058 */ 0xA1FD, 0xFFFD, 0xA1FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1E4, 0xA1E5, -/* 0060 */ 0xA1EC, 0xFFFD, 0xFFFD, 0xA1ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xA1EF, 0xA1EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xA1E3, 0xA1DA, 0xA1DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xA1D8, 0xA1D9, 0xA277, 0xFFFD, 0xA278, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA27A, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0xA27B, 0xFFFD, 0xFFFD, 0xFFFD, 0xA27C, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0xA27D, 0xFFFD, 0xFFFD, 0xFFFD, 0xA275, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA274, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA273, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA272, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA271, 0xA2A5, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xA2A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA2A6, 0xFFFD, 0xFFFD, 0xA27E, 0xA2A1, -/* 00C8 */ 0xA2A3, 0xA2A2, 0xA2AC, 0xA2AD, 0xA2AE, 0xA270, 0xA26F, 0xA26E, -/* 00D0 */ 0xA26D, 0xA26C, 0xA26B, 0xA26A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D8 */ 0xA276, 0xA279, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1BD, 0xA1BC, 0xA1B6, 0xA1B5, -/* 00E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xA1BF, 0xA1BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0xFFFD, 0xA1BB, 0xA1BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1B3, -/* 0100 */ 0xFFFD, 0xFFFD, 0xA1B7, 0xA1B4, 0xA2A8, 0xA2A9, 0xA2AB, 0xA2AA, -/* 0108 */ 0xA1B9, 0xA1B8, 0xFFFD, 0xFFFD, 0xA1F3, 0xA1F0, 0xA1F2, 0xA1F1, -/* 0110 */ 0xA140, 0xA142, 0xA143, 0xA1B2, 0xFFFD, 0xC6A4, 0xFFFD, 0xFFFD, -/* 0118 */ 0xA171, 0xA172, 0xA16D, 0xA16E, 0xA175, 0xA176, 0xA179, 0xA17A, -/* 0120 */ 0xA169, 0xA16A, 0xA245, 0xFFFD, 0xA165, 0xA166, 0xFFFD, 0xFFFD, -/* 0128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1A9, 0xA1AA, 0xC6A2, -/* 0130 */ 0xC6A3, 0xA255, 0xA256, 0xA250, 0xA251, 0xA252, 0xFFFD, 0xFFFD, -/* 0138 */ 0xA254, 0xA257, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA253, 0xFFFD, 0xFFFD, 0xA1EB, 0xA1EA, -/* 0148 */ 0xFFFD, 0xFFFD, 0xA24F, 0xA440, 0xA442, 0xFFFD, 0xA443, 0xFFFD, -/* 0150 */ 0xFFFD, 0xFFFD, 0xC945, 0xA456, 0xA454, 0xA457, 0xA455, 0xC946, -/* 0158 */ 0xA4A3, 0xC94F, 0xC94D, 0xA4A2, 0xA4A1, 0xFFFD, 0xFFFD, 0xA542, -/* 0160 */ 0xA541, 0xA540, 0xFFFD, 0xA543, 0xA4FE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0168 */ 0xFFFD, 0xA5E0, 0xA5E1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0170 */ 0xFFFD, 0xA8C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA458, 0xFFFD, -/* 0178 */ 0xA4A4, 0xC950, 0xFFFD, 0xA4A5, 0xC963, 0xA6EA, 0xCBB1, 0xFFFD, -/* 0180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA459, 0xA4A6, 0xFFFD, 0xA544, 0xC964, -/* 0188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC940, 0xA444, 0xFFFD, -/* 0190 */ 0xA45B, 0xFFFD, 0xC947, 0xA45C, 0xFFFD, 0xFFFD, 0xA4A7, 0xFFFD, -/* 0198 */ 0xA545, 0xA547, 0xA546, 0xFFFD, 0xFFFD, 0xA5E2, 0xA5E3, 0xFFFD, -/* 01A0 */ 0xFFFD, 0xA8C4, 0xFFFD, 0xADBC, 0xA441, 0xFFFD, 0xFFFD, 0xC941, -/* 01A8 */ 0xA445, 0xA45E, 0xA45D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA5E4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8C5, 0xFFFD, -/* 01C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01C8 */ 0xFFFD, 0xB0AE, 0xD44B, 0xFFFD, 0xFFFD, 0xB6C3, 0xDCB1, 0xDCB2, -/* 01D0 */ 0xFFFD, 0xA446, 0xFFFD, 0xA4A9, 0xFFFD, 0xFFFD, 0xA8C6, 0xA447, -/* 01D8 */ 0xC948, 0xA45F, 0xFFFD, 0xFFFD, 0xA4AA, 0xA4AC, 0xC951, 0xA4AD, -/* 01E0 */ 0xA4AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xA5E5, 0xFFFD, 0xA8C7, 0xFFFD, -/* 01E8 */ 0xFFFD, 0xA8C8, 0xAB45, 0xFFFD, 0xA460, 0xA4AE, 0xFFFD, 0xA5E6, -/* 01F0 */ 0xA5E8, 0xA5E7, 0xFFFD, 0xA6EB, 0xFFFD, 0xFFFD, 0xA8C9, 0xA8CA, -/* 01F8 */ 0xAB46, 0xAB47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xADBD, 0xFFFD, -/* 0200 */ 0xFFFD, 0xDCB3, 0xFFFD, 0xFFFD, 0xF6D6, 0xA448, 0xFFFD, 0xFFFD, -/* 0208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA4B0, 0xA4AF, 0xC952, 0xA4B1, 0xA4B7, -/* 0210 */ 0xFFFD, 0xA4B2, 0xA4B3, 0xC954, 0xC953, 0xA4B5, 0xA4B6, 0xFFFD, -/* 0218 */ 0xA4B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA54A, -/* 0220 */ 0xA54B, 0xA54C, 0xA54D, 0xA549, 0xA550, 0xC96A, 0xFFFD, 0xC966, -/* 0228 */ 0xC969, 0xA551, 0xA561, 0xFFFD, 0xC968, 0xFFFD, 0xA54E, 0xA54F, -/* 0230 */ 0xA548, 0xFFFD, 0xFFFD, 0xC965, 0xC967, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA5F5, 0xC9B0, 0xA5F2, 0xA5F6, 0xC9BA, -/* 0240 */ 0xC9AE, 0xA5F3, 0xC9B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xA5F4, 0xFFFD, -/* 0248 */ 0xA5F7, 0xFFFD, 0xA5E9, 0xC9B1, 0xA5F8, 0xC9B5, 0xFFFD, 0xC9B9, -/* 0250 */ 0xC9B6, 0xFFFD, 0xFFFD, 0xC9B3, 0xA5EA, 0xA5EC, 0xA5F9, 0xFFFD, -/* 0258 */ 0xA5EE, 0xC9AB, 0xA5F1, 0xA5EF, 0xA5F0, 0xC9BB, 0xC9B8, 0xC9AF, -/* 0260 */ 0xA5ED, 0xFFFD, 0xFFFD, 0xC9AC, 0xA5EB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0268 */ 0xC9B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC9B7, 0xFFFD, 0xFFFD, -/* 0270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC9AD, -/* 0278 */ 0xCA66, 0xFFFD, 0xA742, 0xA6F4, 0xFFFD, 0xFFFD, 0xCA67, 0xA6F1, -/* 0280 */ 0xFFFD, 0xA744, 0xFFFD, 0xA6F9, 0xFFFD, 0xA6F8, 0xCA5B, 0xA6FC, -/* 0288 */ 0xA6F7, 0xCA60, 0xCA68, 0xFFFD, 0xCA64, 0xFFFD, 0xA6FA, 0xFFFD, -/* 0290 */ 0xFFFD, 0xA6FD, 0xA6EE, 0xA747, 0xCA5D, 0xFFFD, 0xFFFD, 0xCBBD, -/* 0298 */ 0xA6EC, 0xA743, 0xA6ED, 0xA6F5, 0xA6F6, 0xCA62, 0xCA5E, 0xA6FB, -/* 02A0 */ 0xA6F3, 0xCA5A, 0xA6EF, 0xCA65, 0xA745, 0xA748, 0xA6F2, 0xA740, -/* 02A8 */ 0xA746, 0xA6F0, 0xCA63, 0xA741, 0xCA69, 0xCA5C, 0xA6FE, 0xCA5F, -/* 02B0 */ 0xFFFD, 0xFFFD, 0xCA61, 0xFFFD, 0xA8D8, 0xCBBF, 0xCBCB, 0xA8D0, -/* 02B8 */ 0xFFFD, 0xCBCC, 0xA8CB, 0xA8D5, 0xFFFD, 0xFFFD, 0xA8CE, 0xCBB9, -/* 02C0 */ 0xA8D6, 0xCBB8, 0xCBBC, 0xCBC3, 0xCBC1, 0xA8DE, 0xA8D9, 0xCBB3, -/* 02C8 */ 0xCBB5, 0xA8DB, 0xA8CF, 0xCBB6, 0xCBC2, 0xCBC9, 0xA8D4, 0xCBBB, -/* 02D0 */ 0xCBB4, 0xA8D3, 0xCBB7, 0xA8D7, 0xCBBA, 0xFFFD, 0xA8D2, 0xFFFD, -/* 02D8 */ 0xA8CD, 0xFFFD, 0xA8DC, 0xCBC4, 0xA8DD, 0xCBC8, 0xFFFD, 0xCBC6, -/* 02E0 */ 0xCBCA, 0xA8DA, 0xCBBE, 0xCBB2, 0xFFFD, 0xCBC0, 0xA8D1, 0xCBC5, -/* 02E8 */ 0xA8CC, 0xCBC7, 0xAB56, 0xAB4A, 0xFFFD, 0xFFFD, 0xCDE0, 0xCDE8, -/* 02F0 */ 0xFFFD, 0xAB49, 0xAB51, 0xAB5D, 0xFFFD, 0xCDEE, 0xCDEC, 0xCDE7, -/* 02F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xAB4B, 0xCDED, 0xCDE3, 0xAB59, 0xAB50, -/* 0300 */ 0xAB58, 0xCDDE, 0xFFFD, 0xCDEA, 0xFFFD, 0xCDE1, 0xAB54, 0xCDE2, -/* 0308 */ 0xFFFD, 0xCDDD, 0xAB5B, 0xAB4E, 0xAB57, 0xAB4D, 0xFFFD, 0xCDDF, -/* 0310 */ 0xCDE4, 0xFFFD, 0xCDEB, 0xAB55, 0xAB52, 0xCDE6, 0xAB5A, 0xCDE9, -/* 0318 */ 0xCDE5, 0xAB4F, 0xAB5C, 0xAB53, 0xAB4C, 0xAB48, 0xFFFD, 0xFFFD, -/* 0320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0328 */ 0xCDEF, 0xFFFD, 0xADD7, 0xADC1, 0xFFFD, 0xADD1, 0xFFFD, 0xADD6, -/* 0330 */ 0xD0D0, 0xD0CF, 0xD0D4, 0xD0D5, 0xADC4, 0xFFFD, 0xADCD, 0xFFFD, -/* 0338 */ 0xFFFD, 0xFFFD, 0xADDA, 0xFFFD, 0xADCE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0340 */ 0xFFFD, 0xD0C9, 0xADC7, 0xD0CA, 0xFFFD, 0xADDC, 0xFFFD, 0xADD3, -/* 0348 */ 0xADBE, 0xADBF, 0xD0DD, 0xB0BF, 0xFFFD, 0xADCC, 0xADCB, 0xD0CB, -/* 0350 */ 0xADCF, 0xD45B, 0xADC6, 0xD0D6, 0xADD5, 0xADD4, 0xADCA, 0xD0CE, -/* 0358 */ 0xD0D7, 0xFFFD, 0xD0C8, 0xADC9, 0xD0D8, 0xADD2, 0xD0CC, 0xADC0, -/* 0360 */ 0xFFFD, 0xADC3, 0xADC2, 0xD0D9, 0xADD0, 0xADC5, 0xADD9, 0xADDB, -/* 0368 */ 0xD0D3, 0xADD8, 0xFFFD, 0xD0DB, 0xD0CD, 0xD0DC, 0xFFFD, 0xD0D1, -/* 0370 */ 0xFFFD, 0xD0DA, 0xFFFD, 0xD0D2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0378 */ 0xADC8, 0xFFFD, 0xFFFD, 0xFFFD, 0xD463, 0xD457, 0xFFFD, 0xB0B3, -/* 0380 */ 0xFFFD, 0xD45C, 0xD462, 0xB0B2, 0xD455, 0xB0B6, 0xD459, 0xD452, -/* 0388 */ 0xB0B4, 0xD456, 0xB0B9, 0xB0BE, 0xFFFD, 0xD467, 0xFFFD, 0xD451, -/* 0390 */ 0xFFFD, 0xB0BA, 0xFFFD, 0xD466, 0xFFFD, 0xFFFD, 0xB0B5, 0xD458, -/* 0398 */ 0xB0B1, 0xD453, 0xD44F, 0xD45D, 0xD450, 0xD44E, 0xD45A, 0xD460, -/* 03A0 */ 0xD461, 0xB0B7, 0xFFFD, 0xFFFD, 0xD85B, 0xD45E, 0xD44D, 0xD45F, -/* 03A8 */ 0xFFFD, 0xB0C1, 0xD464, 0xB0C0, 0xD44C, 0xFFFD, 0xD454, 0xD465, -/* 03B0 */ 0xB0BC, 0xB0BB, 0xB0B8, 0xB0BD, 0xFFFD, 0xFFFD, 0xB0AF, 0xFFFD, -/* 03B8 */ 0xFFFD, 0xB0B0, 0xFFFD, 0xFFFD, 0xB3C8, 0xFFFD, 0xD85E, 0xD857, -/* 03C0 */ 0xFFFD, 0xB3C5, 0xFFFD, 0xD85F, 0xFFFD, 0xFFFD, 0xFFFD, 0xD855, -/* 03C8 */ 0xD858, 0xB3C4, 0xD859, 0xFFFD, 0xFFFD, 0xB3C7, 0xD85D, 0xFFFD, -/* 03D0 */ 0xD853, 0xD852, 0xB3C9, 0xFFFD, 0xB3CA, 0xB3C6, 0xB3CB, 0xD851, -/* 03D8 */ 0xD85C, 0xD85A, 0xD854, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3C3, 0xD856, -/* 03E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03E8 */ 0xB6CA, 0xB6C4, 0xDCB7, 0xB6CD, 0xDCBD, 0xDCC0, 0xB6C6, 0xB6C7, -/* 03F0 */ 0xDCBA, 0xB6C5, 0xDCC3, 0xB6CB, 0xDCC4, 0xFFFD, 0xDCBF, 0xB6CC, -/* 03F8 */ 0xFFFD, 0xDCB4, 0xB6C9, 0xDCB5, 0xFFFD, 0xDCBE, 0xDCBC, 0xFFFD, -/* 0400 */ 0xDCB8, 0xB6C8, 0xDCB6, 0xB6CE, 0xDCBB, 0xDCC2, 0xDCB9, 0xDCC1, -/* 0408 */ 0xFFFD, 0xFFFD, 0xB9B6, 0xB9B3, 0xFFFD, 0xB9B4, 0xFFFD, 0xE0F9, -/* 0410 */ 0xE0F1, 0xB9B2, 0xB9AF, 0xE0F2, 0xFFFD, 0xFFFD, 0xB9B1, 0xE0F5, -/* 0418 */ 0xFFFD, 0xE0F7, 0xFFFD, 0xFFFD, 0xE0FE, 0xFFFD, 0xFFFD, 0xE0FD, -/* 0420 */ 0xE0F8, 0xB9AE, 0xE0F0, 0xB9AC, 0xE0F3, 0xB9B7, 0xE0F6, 0xFFFD, -/* 0428 */ 0xE0FA, 0xB9B0, 0xB9AD, 0xE0FC, 0xE0FB, 0xB9B5, 0xFFFD, 0xE0F4, -/* 0430 */ 0xFFFD, 0xBBF8, 0xE4EC, 0xFFFD, 0xE4E9, 0xBBF9, 0xFFFD, 0xBBF7, -/* 0438 */ 0xFFFD, 0xE4F0, 0xE4ED, 0xE4E6, 0xBBF6, 0xFFFD, 0xBBFA, 0xE4E7, -/* 0440 */ 0xBBF5, 0xBBFD, 0xE4EA, 0xE4EB, 0xBBFB, 0xBBFC, 0xE4F1, 0xE4EE, -/* 0448 */ 0xE4EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEAA, 0xE8F8, 0xBEA7, 0xE8F5, -/* 0450 */ 0xBEA9, 0xBEAB, 0xFFFD, 0xE8F6, 0xBEA8, 0xFFFD, 0xE8F7, 0xFFFD, -/* 0458 */ 0xE8F4, 0xFFFD, 0xFFFD, 0xC076, 0xECBD, 0xC077, 0xECBB, 0xFFFD, -/* 0460 */ 0xECBC, 0xECBA, 0xECB9, 0xFFFD, 0xFFFD, 0xECBE, 0xC075, 0xFFFD, -/* 0468 */ 0xFFFD, 0xEFB8, 0xEFB9, 0xFFFD, 0xE4E8, 0xEFB7, 0xC078, 0xC35F, -/* 0470 */ 0xF1EB, 0xF1EC, 0xFFFD, 0xC4D7, 0xC4D8, 0xF5C1, 0xF5C0, 0xC56C, -/* 0478 */ 0xC56B, 0xF7D0, 0xFFFD, 0xA449, 0xA461, 0xA4B9, 0xFFFD, 0xA4B8, -/* 0480 */ 0xA553, 0xA552, 0xA5FC, 0xA5FB, 0xA5FD, 0xA5FA, 0xFFFD, 0xA74A, -/* 0488 */ 0xA749, 0xA74B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8E0, 0xFFFD, -/* 0490 */ 0xA8DF, 0xA8E1, 0xFFFD, 0xAB5E, 0xFFFD, 0xA259, 0xD0DE, 0xA25A, -/* 0498 */ 0xB0C2, 0xA25C, 0xA25B, 0xD860, 0xFFFD, 0xA25D, 0xB9B8, 0xA25E, -/* 04A0 */ 0xFFFD, 0xA44A, 0xFFFD, 0xA4BA, 0xA5FE, 0xA8E2, 0xFFFD, 0xA44B, -/* 04A8 */ 0xA4BD, 0xA4BB, 0xA4BC, 0xFFFD, 0xFFFD, 0xA640, 0xFFFD, 0xFFFD, -/* 04B0 */ 0xFFFD, 0xA74C, 0xA8E4, 0xA8E3, 0xA8E5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04B8 */ 0xADDD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEAC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC94E, 0xFFFD, 0xA554, 0xA555, 0xFFFD, -/* 04C8 */ 0xFFFD, 0xA641, 0xFFFD, 0xCA6A, 0xFFFD, 0xAB60, 0xAB5F, 0xD0E0, -/* 04D0 */ 0xD0DF, 0xB0C3, 0xFFFD, 0xA4BE, 0xC955, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04D8 */ 0xFFFD, 0xFFFD, 0xCBCD, 0xFFFD, 0xAB61, 0xFFFD, 0xADE0, 0xFFFD, -/* 04E0 */ 0xADDE, 0xADDF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEAD, 0xFFFD, -/* 04E8 */ 0xA556, 0xFFFD, 0xFFFD, 0xFFFD, 0xA642, 0xC9BC, 0xFFFD, 0xFFFD, -/* 04F0 */ 0xFFFD, 0xFFFD, 0xA74D, 0xA74E, 0xFFFD, 0xCA6B, 0xFFFD, 0xFFFD, -/* 04F8 */ 0xCBCE, 0xA8E6, 0xCBCF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0500 */ 0xD0E2, 0xD0E3, 0xADE3, 0xFFFD, 0xD0E4, 0xFFFD, 0xD0E1, 0xADE4, -/* 0508 */ 0xADE2, 0xADE1, 0xD0E5, 0xFFFD, 0xD468, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0510 */ 0xD861, 0xFFFD, 0xFFFD, 0xDCC5, 0xE140, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0518 */ 0xBBFE, 0xBEAE, 0xE8F9, 0xFFFD, 0xA44C, 0xA45A, 0xB0C4, 0xB3CD, -/* 0520 */ 0xFFFD, 0xB9B9, 0xFFFD, 0xC942, 0xA4BF, 0xFFFD, 0xA559, 0xA557, -/* 0528 */ 0xA558, 0xFFFD, 0xFFFD, 0xA8E7, 0xFFFD, 0xFFFD, 0xA44D, 0xA44E, -/* 0530 */ 0xFFFD, 0xA462, 0xFFFD, 0xFFFD, 0xA4C0, 0xA4C1, 0xA4C2, 0xC9BE, -/* 0538 */ 0xA55A, 0xFFFD, 0xC96B, 0xFFFD, 0xA646, 0xFFFD, 0xC9BF, 0xA644, -/* 0540 */ 0xA645, 0xC9BD, 0xFFFD, 0xFFFD, 0xA647, 0xA643, 0xFFFD, 0xFFFD, -/* 0548 */ 0xFFFD, 0xFFFD, 0xCA6C, 0xAAEC, 0xCA6D, 0xFFFD, 0xFFFD, 0xCA6E, -/* 0550 */ 0xFFFD, 0xFFFD, 0xA750, 0xA74F, 0xFFFD, 0xFFFD, 0xA753, 0xA751, -/* 0558 */ 0xA752, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8ED, 0xFFFD, 0xA8EC, 0xCBD4, -/* 0560 */ 0xCBD1, 0xCBD2, 0xFFFD, 0xCBD0, 0xA8EE, 0xA8EA, 0xA8E9, 0xFFFD, -/* 0568 */ 0xA8EB, 0xA8E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8EF, -/* 0570 */ 0xFFFD, 0xAB63, 0xCDF0, 0xFFFD, 0xCBD3, 0xAB68, 0xFFFD, 0xCDF1, -/* 0578 */ 0xAB64, 0xAB67, 0xAB66, 0xAB65, 0xAB62, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0580 */ 0xD0E8, 0xFFFD, 0xADE7, 0xD0EB, 0xADE5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0588 */ 0xD0E7, 0xADE8, 0xADE6, 0xADE9, 0xD0E9, 0xD0EA, 0xFFFD, 0xD0E6, -/* 0590 */ 0xD0EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3D1, -/* 0598 */ 0xB0C5, 0xD469, 0xD46B, 0xD46A, 0xD46C, 0xB0C6, 0xFFFD, 0xFFFD, -/* 05A0 */ 0xB3CE, 0xFFFD, 0xB3CF, 0xB3D0, 0xFFFD, 0xB6D0, 0xDCC7, 0xFFFD, -/* 05A8 */ 0xDCC6, 0xDCC8, 0xDCC9, 0xB6D1, 0xFFFD, 0xB6CF, 0xE141, 0xE142, -/* 05B0 */ 0xB9BB, 0xB9BA, 0xE35A, 0xFFFD, 0xFFFD, 0xBC40, 0xBC41, 0xBC42, -/* 05B8 */ 0xBC44, 0xE4F2, 0xE4F3, 0xBC43, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEAF, -/* 05C0 */ 0xFFFD, 0xBEB0, 0xFFFD, 0xFFFD, 0xF1ED, 0xF5C3, 0xF5C2, 0xF7D1, -/* 05C8 */ 0xFFFD, 0xA44F, 0xFFFD, 0xFFFD, 0xFFFD, 0xA55C, 0xA55B, 0xFFFD, -/* 05D0 */ 0xFFFD, 0xA648, 0xFFFD, 0xFFFD, 0xC9C0, 0xFFFD, 0xFFFD, 0xA755, -/* 05D8 */ 0xA756, 0xA754, 0xA757, 0xCA6F, 0xCA70, 0xA8F1, 0xCBD5, 0xFFFD, -/* 05E0 */ 0xA8F0, 0xFFFD, 0xCDF2, 0xAB6C, 0xCDF3, 0xAB6B, 0xFFFD, 0xFFFD, -/* 05E8 */ 0xFFFD, 0xAB69, 0xFFFD, 0xAB6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0ED, -/* 05F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0C7, 0xD46E, 0xFFFD, 0xB0CA, -/* 05F8 */ 0xD46D, 0xB1E5, 0xB0C9, 0xB0C8, 0xFFFD, 0xB3D4, 0xFFFD, 0xB3D3, -/* 0600 */ 0xB3D2, 0xB6D2, 0xFFFD, 0xFFFD, 0xB6D5, 0xB6D6, 0xB6D4, 0xFFFD, -/* 0608 */ 0xB6D3, 0xFFFD, 0xFFFD, 0xE143, 0xFFFD, 0xE144, 0xFFFD, 0xFFFD, -/* 0610 */ 0xFFFD, 0xE4F5, 0xBC45, 0xE4F4, 0xFFFD, 0xBEB1, 0xECBF, 0xC079, -/* 0618 */ 0xFFFD, 0xF1EE, 0xC455, 0xFFFD, 0xA463, 0xA4C3, 0xC956, 0xFFFD, -/* 0620 */ 0xA4C4, 0xA4C5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA55D, -/* 0628 */ 0xA55E, 0xFFFD, 0xA649, 0xCA71, 0xCBD6, 0xCBD7, 0xFFFD, 0xAB6D, -/* 0630 */ 0xD0EE, 0xB0CC, 0xB0CB, 0xD863, 0xD862, 0xFFFD, 0xFFFD, 0xA450, -/* 0638 */ 0xA4C6, 0xA55F, 0xFFFD, 0xB0CD, 0xC943, 0xFFFD, 0xC96C, 0xA560, -/* 0640 */ 0xFFFD, 0xC9C2, 0xA64B, 0xA64A, 0xC9C1, 0xA758, 0xFFFD, 0xFFFD, -/* 0648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xADEA, 0xFFFD, 0xFFFD, 0xD46F, -/* 0650 */ 0xFFFD, 0xB6D7, 0xE145, 0xB9BC, 0xFFFD, 0xFFFD, 0xE8FA, 0xFFFD, -/* 0658 */ 0xFFFD, 0xF3FD, 0xFFFD, 0xA4C7, 0xFFFD, 0xFFFD, 0xCBD8, 0xCDF4, -/* 0660 */ 0xB0D0, 0xB0CE, 0xB0CF, 0xA451, 0xFFFD, 0xA464, 0xA2CD, 0xA4CA, -/* 0668 */ 0xFFFD, 0xA4C9, 0xA4C8, 0xA563, 0xA562, 0xFFFD, 0xC96D, 0xC9C3, -/* 0670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA8F5, 0xA8F2, 0xA8F4, 0xA8F3, 0xFFFD, -/* 0678 */ 0xFFFD, 0xAB6E, 0xFFFD, 0xFFFD, 0xB3D5, 0xFFFD, 0xA452, 0xFFFD, -/* 0680 */ 0xA4CB, 0xFFFD, 0xA565, 0xA564, 0xFFFD, 0xCA72, 0xFFFD, 0xFFFD, -/* 0688 */ 0xA8F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC957, 0xFFFD, -/* 0690 */ 0xA567, 0xA566, 0xA64C, 0xA64D, 0xCA73, 0xA759, 0xFFFD, 0xA75A, -/* 0698 */ 0xFFFD, 0xA8F7, 0xA8F8, 0xA8F9, 0xFFFD, 0xAB6F, 0xCDF5, 0xFFFD, -/* 06A0 */ 0xFFFD, 0xADEB, 0xFFFD, 0xFFFD, 0xC944, 0xFFFD, 0xA4CC, 0xFFFD, -/* 06A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC9C4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06B0 */ 0xCA74, 0xCA75, 0xFFFD, 0xFFFD, 0xCBD9, 0xFFFD, 0xCBDA, 0xFFFD, -/* 06B8 */ 0xCDF7, 0xCDF6, 0xCDF9, 0xCDF8, 0xAB70, 0xFFFD, 0xD470, 0xADED, -/* 06C0 */ 0xD0EF, 0xADEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD864, 0xB3D6, -/* 06C8 */ 0xFFFD, 0xD865, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE146, 0xB9BD, -/* 06D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBC46, 0xFFFD, 0xF1EF, 0xFFFD, -/* 06D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC958, 0xFFFD, 0xA568, 0xFFFD, 0xFFFD, -/* 06E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0D1, 0xFFFD, 0xFFFD, -/* 06E8 */ 0xFFFD, 0xFFFD, 0xA453, 0xA465, 0xA4CE, 0xA4CD, 0xFFFD, 0xA4CF, -/* 06F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8FB, 0xFFFD, -/* 06F8 */ 0xA8FA, 0xA8FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xAB71, 0xFFFD, 0xFFFD, -/* 0700 */ 0xFFFD, 0xADEE, 0xFFFD, 0xE8FB, 0xC24F, 0xA466, 0xA56A, 0xA579, -/* 0708 */ 0xA574, 0xFFFD, 0xA56F, 0xA56E, 0xA575, 0xA573, 0xA56C, 0xA57A, -/* 0710 */ 0xA56D, 0xA569, 0xA578, 0xA577, 0xA576, 0xA56B, 0xFFFD, 0xA572, -/* 0718 */ 0xFFFD, 0xFFFD, 0xA571, 0xFFFD, 0xFFFD, 0xA57B, 0xA570, 0xFFFD, -/* 0720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA653, 0xFFFD, 0xA659, 0xA655, 0xFFFD, -/* 0728 */ 0xA65B, 0xC9C5, 0xA658, 0xA64E, 0xA651, 0xA654, 0xA650, 0xA657, -/* 0730 */ 0xA65A, 0xA64F, 0xA652, 0xA656, 0xA65C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0738 */ 0xFFFD, 0xFFFD, 0xCA7E, 0xCA7B, 0xFFFD, 0xA767, 0xCA7C, 0xA75B, -/* 0740 */ 0xA75D, 0xA775, 0xA770, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAA5, 0xCA7D, -/* 0748 */ 0xA75F, 0xA761, 0xCAA4, 0xA768, 0xCA78, 0xA774, 0xA776, 0xA75C, -/* 0750 */ 0xA76D, 0xFFFD, 0xCA76, 0xA773, 0xFFFD, 0xA764, 0xFFFD, 0xA76E, -/* 0758 */ 0xA76F, 0xCA77, 0xA76C, 0xA76A, 0xFFFD, 0xA76B, 0xA771, 0xCAA1, -/* 0760 */ 0xA75E, 0xFFFD, 0xA772, 0xCAA3, 0xA766, 0xA763, 0xFFFD, 0xCA7A, -/* 0768 */ 0xA762, 0xCAA6, 0xA765, 0xFFFD, 0xA769, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0770 */ 0xA760, 0xCAA2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCA79, 0xCBEB, -/* 0778 */ 0xCBEA, 0xA94F, 0xCBED, 0xCBEF, 0xCBE4, 0xCBE7, 0xCBEE, 0xA950, -/* 0780 */ 0xFFFD, 0xFFFD, 0xCBE1, 0xCBE5, 0xFFFD, 0xFFFD, 0xCBE9, 0xCE49, -/* 0788 */ 0xA94B, 0xCE4D, 0xA8FD, 0xCBE6, 0xA8FE, 0xA94C, 0xA945, 0xA941, -/* 0790 */ 0xFFFD, 0xCBE2, 0xA944, 0xA949, 0xA952, 0xCBE3, 0xCBDC, 0xA943, -/* 0798 */ 0xCBDD, 0xCBDF, 0xFFFD, 0xA946, 0xFFFD, 0xA948, 0xCBDB, 0xCBE0, -/* 07A0 */ 0xFFFD, 0xFFFD, 0xA951, 0xA94D, 0xCBE8, 0xA953, 0xFFFD, 0xA94A, -/* 07A8 */ 0xCBDE, 0xA947, 0xFFFD, 0xFFFD, 0xA942, 0xA940, 0xFFFD, 0xCBEC, -/* 07B0 */ 0xFFFD, 0xA94E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE48, -/* 07B8 */ 0xCDFB, 0xCE4B, 0xFFFD, 0xFFFD, 0xCDFD, 0xAB78, 0xABA8, 0xAB74, -/* 07C0 */ 0xABA7, 0xAB7D, 0xABA4, 0xAB72, 0xCDFC, 0xCE43, 0xABA3, 0xCE4F, -/* 07C8 */ 0xABA5, 0xFFFD, 0xAB79, 0xFFFD, 0xFFFD, 0xCE45, 0xCE42, 0xAB77, -/* 07D0 */ 0xFFFD, 0xCDFA, 0xABA6, 0xCE4A, 0xAB7C, 0xCE4C, 0xABA9, 0xAB73, -/* 07D8 */ 0xAB7E, 0xAB7B, 0xCE40, 0xABA1, 0xCE46, 0xCE47, 0xAB7A, 0xABA2, -/* 07E0 */ 0xAB76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAB75, 0xCDFE, 0xFFFD, -/* 07E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE44, 0xFFFD, 0xFFFD, -/* 07F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE4E, 0xFFFD, 0xD144, -/* 07F8 */ 0xADFB, 0xD0F1, 0xFFFD, 0xD0F6, 0xADF4, 0xAE40, 0xD0F4, 0xADEF, -/* 0800 */ 0xADF9, 0xADFE, 0xD0FB, 0xFFFD, 0xADFA, 0xADFD, 0xFFFD, 0xFFFD, -/* 0808 */ 0xD0FE, 0xADF5, 0xD0F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xD142, 0xD143, -/* 0810 */ 0xFFFD, 0xADF7, 0xD141, 0xADF3, 0xAE43, 0xFFFD, 0xD0F8, 0xFFFD, -/* 0818 */ 0xADF1, 0xFFFD, 0xD146, 0xD0F9, 0xD0FD, 0xADF6, 0xAE42, 0xD0FA, -/* 0820 */ 0xADFC, 0xD140, 0xD147, 0xD4A1, 0xFFFD, 0xD145, 0xAE44, 0xADF0, -/* 0828 */ 0xD0FC, 0xD0F3, 0xFFFD, 0xADF8, 0xFFFD, 0xFFFD, 0xD0F2, 0xFFFD, -/* 0830 */ 0xFFFD, 0xD0F7, 0xD0F0, 0xAE41, 0xFFFD, 0xFFFD, 0xD477, 0xFFFD, -/* 0838 */ 0xB0E4, 0xD4A7, 0xB0E2, 0xB0DF, 0xD47C, 0xB0DB, 0xD4A2, 0xB0E6, -/* 0840 */ 0xD476, 0xD47B, 0xD47A, 0xADF2, 0xB0E1, 0xD4A5, 0xFFFD, 0xD4A8, -/* 0848 */ 0xD473, 0xFFFD, 0xB3E8, 0xFFFD, 0xD4A9, 0xB0E7, 0xFFFD, 0xB0D9, -/* 0850 */ 0xB0D6, 0xD47E, 0xB0D3, 0xFFFD, 0xD4A6, 0xFFFD, 0xB0DA, 0xD4AA, -/* 0858 */ 0xFFFD, 0xD474, 0xD4A4, 0xB0DD, 0xD475, 0xD478, 0xD47D, 0xFFFD, -/* 0860 */ 0xFFFD, 0xB0DE, 0xB0DC, 0xB0E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0868 */ 0xB0E3, 0xFFFD, 0xB0D7, 0xB1D2, 0xFFFD, 0xB0D8, 0xD479, 0xB0E5, -/* 0870 */ 0xB0E0, 0xD4A3, 0xB0D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0D4, 0xFFFD, -/* 0878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0880 */ 0xFFFD, 0xD471, 0xD472, 0xD86A, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3D7, -/* 0888 */ 0xB3DA, 0xD875, 0xB3EE, 0xD878, 0xB3D8, 0xD871, 0xB3DE, 0xB3E4, -/* 0890 */ 0xB5BD, 0xFFFD, 0xFFFD, 0xB3E2, 0xD86E, 0xB3EF, 0xB3DB, 0xB3E3, -/* 0898 */ 0xD876, 0xDCD7, 0xD87B, 0xD86F, 0xFFFD, 0xD866, 0xD873, 0xD86D, -/* 08A0 */ 0xB3E1, 0xD879, 0xFFFD, 0xFFFD, 0xB3DD, 0xB3F1, 0xB3EA, 0xFFFD, -/* 08A8 */ 0xB3DF, 0xB3DC, 0xFFFD, 0xB3E7, 0xFFFD, 0xD87A, 0xD86C, 0xD872, -/* 08B0 */ 0xD874, 0xD868, 0xD877, 0xB3D9, 0xD867, 0xFFFD, 0xB3E0, 0xB3F0, -/* 08B8 */ 0xB3EC, 0xD869, 0xB3E6, 0xFFFD, 0xFFFD, 0xB3ED, 0xB3E9, 0xB3E5, -/* 08C0 */ 0xFFFD, 0xD870, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3EB, -/* 08C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDCD5, 0xDCD1, 0xFFFD, 0xDCE0, 0xDCCA, -/* 08D0 */ 0xDCD3, 0xB6E5, 0xB6E6, 0xB6DE, 0xDCDC, 0xB6E8, 0xDCCF, 0xDCCE, -/* 08D8 */ 0xDCCC, 0xDCDE, 0xB6DC, 0xDCD8, 0xDCCD, 0xB6DF, 0xDCD6, 0xB6DA, -/* 08E0 */ 0xDCD2, 0xDCD9, 0xDCDB, 0xFFFD, 0xFFFD, 0xDCDF, 0xB6E3, 0xDCCB, -/* 08E8 */ 0xB6DD, 0xDCD0, 0xFFFD, 0xB6D8, 0xFFFD, 0xB6E4, 0xDCDA, 0xB6E0, -/* 08F0 */ 0xB6E1, 0xB6E7, 0xB6DB, 0xA25F, 0xB6D9, 0xDCD4, 0xFFFD, 0xFFFD, -/* 08F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB6E2, 0xFFFD, 0xFFFD, 0xDCDD, 0xFFFD, -/* 0900 */ 0xFFFD, 0xFFFD, 0xB9CD, 0xB9C8, 0xFFFD, 0xE155, 0xE151, 0xFFFD, -/* 0908 */ 0xE14B, 0xB9C2, 0xB9BE, 0xE154, 0xB9BF, 0xE14E, 0xE150, 0xFFFD, -/* 0910 */ 0xE153, 0xFFFD, 0xB9C4, 0xFFFD, 0xB9CB, 0xB9C5, 0xFFFD, 0xFFFD, -/* 0918 */ 0xE149, 0xB9C6, 0xB9C7, 0xE14C, 0xB9CC, 0xFFFD, 0xE14A, 0xE14F, -/* 0920 */ 0xB9C3, 0xE148, 0xB9C9, 0xB9C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9C0, -/* 0928 */ 0xE14D, 0xE152, 0xFFFD, 0xB9CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE147, 0xFFFD, 0xBC4D, 0xE547, 0xFFFD, -/* 0938 */ 0xE544, 0xFFFD, 0xBC47, 0xBC53, 0xBC54, 0xFFFD, 0xBC4A, 0xE542, -/* 0940 */ 0xBC4C, 0xE4F9, 0xBC52, 0xFFFD, 0xE546, 0xBC49, 0xE548, 0xBC48, -/* 0948 */ 0xFFFD, 0xE543, 0xE545, 0xBC4B, 0xE541, 0xE4FA, 0xE4F7, 0xFFFD, -/* 0950 */ 0xFFFD, 0xD86B, 0xE4FD, 0xFFFD, 0xE4F6, 0xE4FC, 0xE4FB, 0xFFFD, -/* 0958 */ 0xE4F8, 0xFFFD, 0xBC4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBC4E, -/* 0960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBC50, 0xE4FE, 0xBEB2, 0xE540, 0xFFFD, -/* 0968 */ 0xFFFD, 0xFFFD, 0xE945, 0xFFFD, 0xE8FD, 0xFFFD, 0xBEBE, 0xE942, -/* 0970 */ 0xBEB6, 0xBEBA, 0xE941, 0xFFFD, 0xBEB9, 0xBEB5, 0xBEB8, 0xBEB3, -/* 0978 */ 0xBEBD, 0xE943, 0xE8FE, 0xBEBC, 0xE8FC, 0xBEBB, 0xE944, 0xE940, -/* 0980 */ 0xBC51, 0xFFFD, 0xBEBF, 0xE946, 0xBEB7, 0xBEB4, 0xFFFD, 0xFFFD, -/* 0988 */ 0xFFFD, 0xFFFD, 0xECC6, 0xECC8, 0xC07B, 0xECC9, 0xECC7, 0xECC5, -/* 0990 */ 0xECC4, 0xC07D, 0xECC3, 0xC07E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0998 */ 0xECC1, 0xECC2, 0xC07A, 0xC0A1, 0xC07C, 0xFFFD, 0xFFFD, 0xECC0, -/* 09A0 */ 0xFFFD, 0xC250, 0xFFFD, 0xEFBC, 0xEFBA, 0xEFBF, 0xEFBD, 0xFFFD, -/* 09A8 */ 0xEFBB, 0xEFBE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09B0 */ 0xFFFD, 0xC360, 0xF1F2, 0xF1F3, 0xC456, 0xFFFD, 0xF1F4, 0xF1F0, -/* 09B8 */ 0xF1F5, 0xF1F1, 0xC251, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3FE, 0xF441, -/* 09C0 */ 0xC459, 0xF440, 0xC458, 0xC457, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09C8 */ 0xC45A, 0xF5C5, 0xF5C6, 0xFFFD, 0xC4DA, 0xC4D9, 0xC4DB, 0xF5C4, -/* 09D0 */ 0xFFFD, 0xF6D8, 0xF6D7, 0xFFFD, 0xC56D, 0xC56F, 0xC56E, 0xF6D9, -/* 09D8 */ 0xC5C8, 0xF8A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5F1, 0xFFFD, 0xF8A5, -/* 09E0 */ 0xF8EE, 0xFFFD, 0xFFFD, 0xC949, 0xFFFD, 0xFFFD, 0xA57D, 0xA57C, -/* 09E8 */ 0xFFFD, 0xA65F, 0xA65E, 0xC9C7, 0xA65D, 0xC9C6, 0xFFFD, 0xFFFD, -/* 09F0 */ 0xA779, 0xCAA9, 0xFFFD, 0xCAA8, 0xFFFD, 0xFFFD, 0xA777, 0xA77A, -/* 09F8 */ 0xFFFD, 0xFFFD, 0xCAA7, 0xFFFD, 0xA778, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCBF0, 0xFFFD, 0xCBF1, 0xA954, 0xFFFD, -/* 0A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xABAA, 0xFFFD, 0xD148, 0xD149, 0xAE45, -/* 0A10 */ 0xAE46, 0xFFFD, 0xFFFD, 0xD4AC, 0xB0E9, 0xB0EB, 0xD4AB, 0xB0EA, -/* 0A18 */ 0xD87C, 0xB3F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6E9, 0xB6EA, -/* 0A20 */ 0xDCE1, 0xFFFD, 0xB9CF, 0xFFFD, 0xB9CE, 0xFFFD, 0xE549, 0xE948, -/* 0A28 */ 0xE947, 0xFFFD, 0xF96B, 0xA467, 0xC959, 0xFFFD, 0xC96E, 0xC96F, -/* 0A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA662, 0xA666, 0xC9C9, 0xFFFD, -/* 0A38 */ 0xA664, 0xA663, 0xC9C8, 0xA665, 0xA661, 0xFFFD, 0xFFFD, 0xA660, -/* 0A40 */ 0xC9CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA7A6, -/* 0A48 */ 0xFFFD, 0xFFFD, 0xA7A3, 0xFFFD, 0xA77D, 0xCAAA, 0xFFFD, 0xFFFD, -/* 0A50 */ 0xFFFD, 0xCAAB, 0xFFFD, 0xA7A1, 0xFFFD, 0xCAAD, 0xA77B, 0xCAAE, -/* 0A58 */ 0xCAAC, 0xA77E, 0xA7A2, 0xA7A5, 0xA7A4, 0xA77C, 0xCAAF, 0xA959, -/* 0A60 */ 0xCBFE, 0xFFFD, 0xA95B, 0xFFFD, 0xA95A, 0xFFFD, 0xCC40, 0xA958, -/* 0A68 */ 0xA957, 0xCBF5, 0xFFFD, 0xCBF4, 0xFFFD, 0xCBF2, 0xCBF7, 0xCBF6, -/* 0A70 */ 0xCBF3, 0xCBFC, 0xCBFD, 0xCBFA, 0xCBF8, 0xA956, 0xFFFD, 0xFFFD, -/* 0A78 */ 0xFFFD, 0xCBFB, 0xA95C, 0xCC41, 0xFFFD, 0xFFFD, 0xCBF9, 0xFFFD, -/* 0A80 */ 0xABAB, 0xA955, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A88 */ 0xFFFD, 0xABAC, 0xCE54, 0xFFFD, 0xFFFD, 0xCE5A, 0xFFFD, 0xFFFD, -/* 0A90 */ 0xFFFD, 0xABB2, 0xCE58, 0xCE5E, 0xFFFD, 0xCE55, 0xCE59, 0xCE5B, -/* 0A98 */ 0xCE5D, 0xCE57, 0xFFFD, 0xCE56, 0xCE51, 0xCE52, 0xABAD, 0xFFFD, -/* 0AA0 */ 0xABAF, 0xABAE, 0xCE53, 0xCE5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xABB1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCE50, 0xD153, 0xFFFD, 0xD152, 0xD157, -/* 0AB8 */ 0xD14E, 0xFFFD, 0xD151, 0xD150, 0xFFFD, 0xD154, 0xFFFD, 0xD158, -/* 0AC0 */ 0xAE47, 0xAE4A, 0xFFFD, 0xFFFD, 0xD14F, 0xD155, 0xFFFD, 0xFFFD, -/* 0AC8 */ 0xFFFD, 0xAE49, 0xD14A, 0xFFFD, 0xABB0, 0xD4BA, 0xD156, 0xFFFD, -/* 0AD0 */ 0xD14D, 0xFFFD, 0xAE48, 0xD14C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AD8 */ 0xFFFD, 0xFFFD, 0xD4B1, 0xFFFD, 0xFFFD, 0xB0EC, 0xB0F0, 0xD4C1, -/* 0AE0 */ 0xD4AF, 0xD4BD, 0xB0F1, 0xD4BF, 0xFFFD, 0xD4C5, 0xFFFD, 0xD4C9, -/* 0AE8 */ 0xFFFD, 0xFFFD, 0xD4C0, 0xD4B4, 0xD4BC, 0xFFFD, 0xD4CA, 0xD4C8, -/* 0AF0 */ 0xD4BE, 0xD4B9, 0xD4B2, 0xD8A6, 0xD4B0, 0xB0F5, 0xD4B7, 0xB0F6, -/* 0AF8 */ 0xB0F2, 0xD4AD, 0xD4C3, 0xD4B5, 0xFFFD, 0xFFFD, 0xD4B3, 0xD4C6, -/* 0B00 */ 0xB0F3, 0xFFFD, 0xD4CC, 0xB0ED, 0xB0EF, 0xD4BB, 0xD4B6, 0xAE4B, -/* 0B08 */ 0xB0EE, 0xD4B8, 0xD4C7, 0xD4CB, 0xD4C2, 0xFFFD, 0xD4C4, 0xFFFD, -/* 0B10 */ 0xFFFD, 0xFFFD, 0xD4AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8A1, -/* 0B18 */ 0xFFFD, 0xD8AA, 0xD8A9, 0xB3FA, 0xD8A2, 0xFFFD, 0xB3FB, 0xB3F9, -/* 0B20 */ 0xFFFD, 0xD8A4, 0xB3F6, 0xD8A8, 0xFFFD, 0xD8A3, 0xD8A5, 0xD87D, -/* 0B28 */ 0xB3F4, 0xFFFD, 0xD8B2, 0xD8B1, 0xD8AE, 0xB3F3, 0xB3F7, 0xB3F8, -/* 0B30 */ 0xD14B, 0xD8AB, 0xB3F5, 0xB0F4, 0xD8AD, 0xD87E, 0xD8B0, 0xD8AF, -/* 0B38 */ 0xFFFD, 0xD8B3, 0xFFFD, 0xDCEF, 0xFFFD, 0xD8AC, 0xFFFD, 0xFFFD, -/* 0B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8A7, 0xDCE7, -/* 0B48 */ 0xB6F4, 0xB6F7, 0xB6F2, 0xDCE6, 0xDCEA, 0xDCE5, 0xFFFD, 0xB6EC, -/* 0B50 */ 0xB6F6, 0xDCE2, 0xB6F0, 0xDCE9, 0xFFFD, 0xB6EE, 0xB6ED, 0xDCEC, -/* 0B58 */ 0xB6EF, 0xDCEE, 0xFFFD, 0xDCEB, 0xB6EB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B60 */ 0xB6F5, 0xDCF0, 0xDCE4, 0xDCED, 0xFFFD, 0xFFFD, 0xDCE3, 0xFFFD, -/* 0B68 */ 0xFFFD, 0xB6F1, 0xFFFD, 0xB6F3, 0xFFFD, 0xDCE8, 0xFFFD, 0xDCF1, -/* 0B70 */ 0xFFFD, 0xFFFD, 0xE15D, 0xB9D0, 0xE163, 0xFFFD, 0xFFFD, 0xB9D5, -/* 0B78 */ 0xE15F, 0xE166, 0xE157, 0xB9D7, 0xB9D1, 0xE15C, 0xBC55, 0xE15B, -/* 0B80 */ 0xE164, 0xB9D2, 0xFFFD, 0xB9D6, 0xE15A, 0xE160, 0xE165, 0xE156, -/* 0B88 */ 0xB9D4, 0xE15E, 0xFFFD, 0xFFFD, 0xE162, 0xE168, 0xE158, 0xE161, -/* 0B90 */ 0xFFFD, 0xB9D3, 0xE167, 0xFFFD, 0xFFFD, 0xFFFD, 0xE159, 0xFFFD, -/* 0B98 */ 0xFFFD, 0xFFFD, 0xBC59, 0xE54B, 0xBC57, 0xBC56, 0xE54D, 0xE552, -/* 0BA0 */ 0xFFFD, 0xE54E, 0xFFFD, 0xE551, 0xBC5C, 0xFFFD, 0xBEA5, 0xBC5B, -/* 0BA8 */ 0xFFFD, 0xE54A, 0xE550, 0xFFFD, 0xBC5A, 0xE54F, 0xFFFD, 0xE54C, -/* 0BB0 */ 0xFFFD, 0xBC58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BB8 */ 0xE94D, 0xFFFD, 0xE94F, 0xE94A, 0xBEC1, 0xE94C, 0xFFFD, 0xBEC0, -/* 0BC0 */ 0xE94E, 0xFFFD, 0xFFFD, 0xBEC3, 0xE950, 0xBEC2, 0xE949, 0xE94B, -/* 0BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0A5, 0xECCC, 0xFFFD, 0xC0A4, -/* 0BD0 */ 0xECCD, 0xC0A3, 0xECCB, 0xC0A2, 0xECCA, 0xFFFD, 0xC253, 0xC252, -/* 0BD8 */ 0xF1F6, 0xF1F8, 0xFFFD, 0xF1F7, 0xC361, 0xC362, 0xFFFD, 0xFFFD, -/* 0BE0 */ 0xC363, 0xF442, 0xC45B, 0xFFFD, 0xFFFD, 0xF7D3, 0xF7D2, 0xC5F2, -/* 0BE8 */ 0xFFFD, 0xA468, 0xA4D0, 0xFFFD, 0xFFFD, 0xA7A7, 0xFFFD, 0xFFFD, -/* 0BF0 */ 0xFFFD, 0xFFFD, 0xCE5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3FC, -/* 0BF8 */ 0xB3FD, 0xFFFD, 0xDCF2, 0xB9D8, 0xE169, 0xE553, 0xFFFD, 0xFFFD, -/* 0C00 */ 0xFFFD, 0xC95A, 0xFFFD, 0xFFFD, 0xCAB0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C08 */ 0xFFFD, 0xFFFD, 0xCC42, 0xCE60, 0xD159, 0xAE4C, 0xFFFD, 0xFFFD, -/* 0C10 */ 0xF1F9, 0xFFFD, 0xC4DC, 0xA469, 0xA57E, 0xC970, 0xFFFD, 0xA667, -/* 0C18 */ 0xA668, 0xFFFD, 0xA95D, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0F7, 0xFFFD, -/* 0C20 */ 0xB9DA, 0xFFFD, 0xB9DB, 0xB9D9, 0xFFFD, 0xA46A, 0xFFFD, 0xA4D1, -/* 0C28 */ 0xA4D3, 0xA4D2, 0xC95B, 0xA4D4, 0xA5A1, 0xC971, 0xFFFD, 0xA5A2, -/* 0C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA669, 0xA66A, 0xFFFD, -/* 0C38 */ 0xFFFD, 0xFFFD, 0xC9CB, 0xFFFD, 0xA7A8, 0xFFFD, 0xCAB1, 0xFFFD, -/* 0C40 */ 0xFFFD, 0xFFFD, 0xA961, 0xCC43, 0xFFFD, 0xA95F, 0xA960, 0xA95E, -/* 0C48 */ 0xD15A, 0xFFFD, 0xFFFD, 0xFFFD, 0xABB6, 0xABB5, 0xABB7, 0xABB4, -/* 0C50 */ 0xFFFD, 0xCE61, 0xA962, 0xABB3, 0xFFFD, 0xAE4D, 0xAE4E, 0xFFFD, -/* 0C58 */ 0xAE4F, 0xFFFD, 0xD4CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3FE, 0xD8B4, -/* 0C60 */ 0xB0F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6F8, 0xFFFD, 0xB9DD, -/* 0C68 */ 0xB9DC, 0xE16A, 0xFFFD, 0xBC5D, 0xBEC4, 0xFFFD, 0xEFC0, 0xF6DA, -/* 0C70 */ 0xF7D4, 0xA46B, 0xA5A3, 0xFFFD, 0xA5A4, 0xC9D1, 0xA66C, 0xA66F, -/* 0C78 */ 0xFFFD, 0xC9CF, 0xC9CD, 0xA66E, 0xC9D0, 0xC9D2, 0xC9CC, 0xA671, -/* 0C80 */ 0xA670, 0xA66D, 0xA66B, 0xC9CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C88 */ 0xA7B3, 0xFFFD, 0xFFFD, 0xA7B0, 0xCAB6, 0xCAB9, 0xCAB8, 0xFFFD, -/* 0C90 */ 0xA7AA, 0xA7B2, 0xFFFD, 0xFFFD, 0xA7AF, 0xCAB5, 0xCAB3, 0xA7AE, -/* 0C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA7A9, 0xA7AC, 0xFFFD, 0xCAB4, 0xCABB, -/* 0CA0 */ 0xCAB7, 0xA7AD, 0xA7B1, 0xA7B4, 0xCAB2, 0xCABA, 0xA7AB, 0xFFFD, -/* 0CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA967, 0xA96F, 0xFFFD, 0xCC4F, -/* 0CB0 */ 0xCC48, 0xA970, 0xCC53, 0xCC44, 0xCC4B, 0xFFFD, 0xFFFD, 0xA966, -/* 0CB8 */ 0xCC45, 0xA964, 0xCC4C, 0xCC50, 0xA963, 0xFFFD, 0xCC51, 0xCC4A, -/* 0CC0 */ 0xFFFD, 0xCC4D, 0xFFFD, 0xA972, 0xA969, 0xCC54, 0xCC52, 0xFFFD, -/* 0CC8 */ 0xA96E, 0xA96C, 0xCC49, 0xA96B, 0xCC47, 0xCC46, 0xA96A, 0xA968, -/* 0CD0 */ 0xA971, 0xA96D, 0xA965, 0xFFFD, 0xCC4E, 0xFFFD, 0xABB9, 0xFFFD, -/* 0CD8 */ 0xABC0, 0xCE6F, 0xABB8, 0xCE67, 0xCE63, 0xFFFD, 0xCE73, 0xCE62, -/* 0CE0 */ 0xFFFD, 0xABBB, 0xCE6C, 0xABBE, 0xABC1, 0xFFFD, 0xABBC, 0xCE70, -/* 0CE8 */ 0xABBF, 0xFFFD, 0xAE56, 0xCE76, 0xCE64, 0xFFFD, 0xFFFD, 0xCE66, -/* 0CF0 */ 0xCE6D, 0xCE71, 0xCE75, 0xCE72, 0xCE6B, 0xCE6E, 0xFFFD, 0xFFFD, -/* 0CF8 */ 0xCE68, 0xABC3, 0xCE6A, 0xCE69, 0xCE74, 0xABBA, 0xCE65, 0xABC2, -/* 0D00 */ 0xFFFD, 0xABBD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAE5C, -/* 0D08 */ 0xD162, 0xFFFD, 0xAE5B, 0xFFFD, 0xFFFD, 0xD160, 0xFFFD, 0xAE50, -/* 0D10 */ 0xFFFD, 0xAE55, 0xFFFD, 0xD15F, 0xD15C, 0xD161, 0xAE51, 0xD15B, -/* 0D18 */ 0xFFFD, 0xAE54, 0xAE52, 0xFFFD, 0xD163, 0xAE53, 0xAE57, 0xFFFD, -/* 0D20 */ 0xFFFD, 0xAE58, 0xFFFD, 0xAE5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xAE59, -/* 0D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD15D, 0xD15E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D30 */ 0xFFFD, 0xD164, 0xFFFD, 0xD4D4, 0xB0F9, 0xD8C2, 0xD4D3, 0xD4E6, -/* 0D38 */ 0xFFFD, 0xFFFD, 0xB140, 0xFFFD, 0xD4E4, 0xFFFD, 0xB0FE, 0xB0FA, -/* 0D40 */ 0xD4ED, 0xD4DD, 0xD4E0, 0xFFFD, 0xB143, 0xD4EA, 0xD4E2, 0xB0FB, -/* 0D48 */ 0xB144, 0xFFFD, 0xD4E7, 0xD4E5, 0xFFFD, 0xFFFD, 0xD4D6, 0xD4EB, -/* 0D50 */ 0xD4DF, 0xD4DA, 0xFFFD, 0xD4D0, 0xD4EC, 0xD4DC, 0xD4CF, 0xFFFD, -/* 0D58 */ 0xB142, 0xD4E1, 0xD4EE, 0xD4DE, 0xD4D2, 0xD4D7, 0xD4CE, 0xFFFD, -/* 0D60 */ 0xB141, 0xFFFD, 0xD4DB, 0xD4D8, 0xB0FC, 0xD4D1, 0xFFFD, 0xD4E9, -/* 0D68 */ 0xB0FD, 0xFFFD, 0xD4D9, 0xD4D5, 0xFFFD, 0xFFFD, 0xD4E8, 0xFFFD, -/* 0D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB440, 0xD8BB, 0xFFFD, -/* 0D78 */ 0xD8B8, 0xD8C9, 0xD8BD, 0xD8CA, 0xFFFD, 0xB442, 0xFFFD, 0xFFFD, -/* 0D80 */ 0xFFFD, 0xD8C6, 0xD8C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D88 */ 0xD8C4, 0xD8C7, 0xD8CB, 0xFFFD, 0xD4E3, 0xD8CD, 0xDD47, 0xFFFD, -/* 0D90 */ 0xB443, 0xD8CE, 0xD8B6, 0xD8C0, 0xFFFD, 0xD8C5, 0xFFFD, 0xFFFD, -/* 0D98 */ 0xB441, 0xB444, 0xD8CC, 0xD8CF, 0xD8BA, 0xD8B7, 0xFFFD, 0xFFFD, -/* 0DA0 */ 0xD8B9, 0xFFFD, 0xFFFD, 0xD8BE, 0xD8BC, 0xB445, 0xFFFD, 0xD8C8, -/* 0DA8 */ 0xFFFD, 0xFFFD, 0xD8BF, 0xFFFD, 0xD8C1, 0xD8B5, 0xDCFA, 0xDCF8, -/* 0DB0 */ 0xB742, 0xB740, 0xDD43, 0xDCF9, 0xDD44, 0xDD40, 0xDCF7, 0xDD46, -/* 0DB8 */ 0xDCF6, 0xDCFD, 0xB6FE, 0xB6FD, 0xB6FC, 0xDCFB, 0xDD41, 0xB6F9, -/* 0DC0 */ 0xB741, 0xFFFD, 0xDCF4, 0xFFFD, 0xDCFE, 0xDCF3, 0xDCFC, 0xB6FA, -/* 0DC8 */ 0xDD42, 0xDCF5, 0xB6FB, 0xDD45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE16E, 0xB9E2, 0xB9E1, 0xB9E3, 0xE17A, -/* 0DD8 */ 0xE170, 0xE176, 0xE16B, 0xE179, 0xE178, 0xE17C, 0xE175, 0xB9DE, -/* 0DE0 */ 0xE174, 0xB9E4, 0xFFFD, 0xE16D, 0xB9DF, 0xFFFD, 0xE17B, 0xB9E0, -/* 0DE8 */ 0xE16F, 0xE172, 0xE177, 0xE171, 0xE16C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DF0 */ 0xFFFD, 0xE173, 0xE555, 0xBC61, 0xE558, 0xE557, 0xE55A, 0xE55C, -/* 0DF8 */ 0xFFFD, 0xBC5F, 0xFFFD, 0xE556, 0xFFFD, 0xE554, 0xFFFD, 0xE55D, -/* 0E00 */ 0xE55B, 0xE559, 0xFFFD, 0xE55F, 0xFFFD, 0xE55E, 0xBC63, 0xBC5E, -/* 0E08 */ 0xFFFD, 0xBC60, 0xBC62, 0xFFFD, 0xFFFD, 0xE560, 0xE957, 0xFFFD, -/* 0E10 */ 0xFFFD, 0xE956, 0xE955, 0xFFFD, 0xE958, 0xE951, 0xFFFD, 0xE952, -/* 0E18 */ 0xE95A, 0xE953, 0xFFFD, 0xBEC5, 0xE95C, 0xFFFD, 0xE95B, 0xE954, -/* 0E20 */ 0xFFFD, 0xECD1, 0xC0A8, 0xECCF, 0xECD4, 0xECD3, 0xE959, 0xFFFD, -/* 0E28 */ 0xC0A7, 0xFFFD, 0xECD2, 0xECCE, 0xECD6, 0xECD5, 0xC0A6, 0xFFFD, -/* 0E30 */ 0xECD0, 0xFFFD, 0xBEC6, 0xFFFD, 0xFFFD, 0xFFFD, 0xC254, 0xFFFD, -/* 0E38 */ 0xFFFD, 0xFFFD, 0xEFC1, 0xF1FA, 0xF1FB, 0xF1FC, 0xC45C, 0xFFFD, -/* 0E40 */ 0xFFFD, 0xC45D, 0xFFFD, 0xF443, 0xFFFD, 0xF5C8, 0xF5C7, 0xFFFD, -/* 0E48 */ 0xFFFD, 0xF6DB, 0xF6DC, 0xF7D5, 0xF8A7, 0xFFFD, 0xA46C, 0xA46D, -/* 0E50 */ 0xFFFD, 0xA46E, 0xA4D5, 0xA5A5, 0xC9D3, 0xA672, 0xA673, 0xFFFD, -/* 0E58 */ 0xA7B7, 0xA7B8, 0xA7B6, 0xA7B5, 0xFFFD, 0xA973, 0xFFFD, 0xFFFD, -/* 0E60 */ 0xCC55, 0xA975, 0xA974, 0xCC56, 0xFFFD, 0xFFFD, 0xFFFD, 0xABC4, -/* 0E68 */ 0xFFFD, 0xAE5D, 0xD165, 0xFFFD, 0xD4F0, 0xFFFD, 0xB145, 0xB447, -/* 0E70 */ 0xD4EF, 0xB446, 0xFFFD, 0xB9E5, 0xFFFD, 0xE17D, 0xBEC7, 0xFFFD, -/* 0E78 */ 0xC0A9, 0xECD7, 0xFFFD, 0xC45E, 0xFFFD, 0xC570, 0xFFFD, 0xC972, -/* 0E80 */ 0xFFFD, 0xA5A6, 0xC973, 0xA676, 0xFFFD, 0xA674, 0xA675, 0xA677, -/* 0E88 */ 0xFFFD, 0xA7BA, 0xA7B9, 0xFFFD, 0xCABC, 0xA7BB, 0xFFFD, 0xFFFD, -/* 0E90 */ 0xCABD, 0xCC57, 0xFFFD, 0xCC58, 0xFFFD, 0xA976, 0xA978, 0xA97A, -/* 0E98 */ 0xA977, 0xA97B, 0xA979, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EA0 */ 0xABC8, 0xABC5, 0xABC7, 0xABC9, 0xABC6, 0xD166, 0xCE77, 0xFFFD, -/* 0EA8 */ 0xFFFD, 0xFFFD, 0xD168, 0xD167, 0xAE63, 0xFFFD, 0xAE5F, 0xFFFD, -/* 0EB0 */ 0xFFFD, 0xAE60, 0xAE62, 0xAE64, 0xAE61, 0xFFFD, 0xAE66, 0xAE65, -/* 0EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB14A, 0xD4F2, 0xD4F1, -/* 0EC0 */ 0xB149, 0xFFFD, 0xB148, 0xB147, 0xB14B, 0xB146, 0xFFFD, 0xFFFD, -/* 0EC8 */ 0xD8D5, 0xD8D2, 0xB449, 0xD8D1, 0xD8D6, 0xFFFD, 0xB44B, 0xD8D4, -/* 0ED0 */ 0xB448, 0xB44A, 0xD8D3, 0xFFFD, 0xDD48, 0xFFFD, 0xDD49, 0xDD4A, -/* 0ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9E6, 0xB9EE, 0xE17E, 0xB9E8, -/* 0EE0 */ 0xB9EC, 0xE1A1, 0xB9ED, 0xB9E9, 0xB9EA, 0xB9E7, 0xB9EB, 0xBC66, -/* 0EE8 */ 0xD8D0, 0xBC67, 0xBC65, 0xFFFD, 0xBC64, 0xE95D, 0xBEC8, 0xECD8, -/* 0EF0 */ 0xECD9, 0xFFFD, 0xFFFD, 0xC364, 0xC45F, 0xFFFD, 0xA46F, 0xFFFD, -/* 0EF8 */ 0xA678, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xABCA, -/* 0F00 */ 0xFFFD, 0xD169, 0xAE67, 0xFFFD, 0xFFFD, 0xB14E, 0xB14D, 0xB14C, -/* 0F08 */ 0xB44C, 0xB44D, 0xD8D7, 0xB9EF, 0xBEC9, 0xA470, 0xC95C, 0xA4D6, -/* 0F10 */ 0xC974, 0xFFFD, 0xFFFD, 0xC9D4, 0xA679, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F18 */ 0xA97C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDD4B, 0xFFFD, 0xFFFD, -/* 0F20 */ 0xA471, 0xFFFD, 0xA4D7, 0xC9D5, 0xFFFD, 0xFFFD, 0xCABE, 0xFFFD, -/* 0F28 */ 0xCABF, 0xFFFD, 0xA7BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8D8, 0xB44E, -/* 0F30 */ 0xFFFD, 0xDD4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0AA, 0xA472, 0xA4A8, -/* 0F38 */ 0xA4D8, 0xC975, 0xA5A7, 0xFFFD, 0xA7C0, 0xA7BF, 0xA7BD, 0xA7BE, -/* 0F40 */ 0xFFFD, 0xFFFD, 0xCC59, 0xA97E, 0xA9A1, 0xCC5A, 0xA97D, 0xFFFD, -/* 0F48 */ 0xFFFD, 0xABCE, 0xCE78, 0xABCD, 0xABCB, 0xABCC, 0xAE6A, 0xAE68, -/* 0F50 */ 0xFFFD, 0xFFFD, 0xD16B, 0xAE69, 0xD16A, 0xFFFD, 0xAE5E, 0xD4F3, -/* 0F58 */ 0xFFFD, 0xFFFD, 0xB150, 0xB151, 0xFFFD, 0xFFFD, 0xB14F, 0xFFFD, -/* 0F60 */ 0xB9F0, 0xE1A2, 0xBC68, 0xBC69, 0xFFFD, 0xE561, 0xC0AB, 0xEFC2, -/* 0F68 */ 0xEFC3, 0xFFFD, 0xC4DD, 0xF8A8, 0xC94B, 0xA4D9, 0xFFFD, 0xA473, -/* 0F70 */ 0xFFFD, 0xC977, 0xC976, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA67A, -/* 0F78 */ 0xC9D7, 0xC9D8, 0xC9D6, 0xFFFD, 0xC9D9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAC7, 0xFFFD, 0xCAC2, 0xCAC4, -/* 0F88 */ 0xCAC6, 0xCAC3, 0xA7C4, 0xCAC0, 0xFFFD, 0xCAC1, 0xA7C1, 0xA7C2, -/* 0F90 */ 0xCAC5, 0xCAC8, 0xA7C3, 0xCAC9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCC68, 0xFFFD, 0xCC62, 0xCC5D, 0xA9A3, -/* 0FA0 */ 0xCC65, 0xCC63, 0xCC5C, 0xCC69, 0xCC6C, 0xCC67, 0xCC60, 0xA9A5, -/* 0FA8 */ 0xCC66, 0xA9A6, 0xCC61, 0xCC64, 0xCC5B, 0xCC5F, 0xCC6B, 0xA9A7, -/* 0FB0 */ 0xFFFD, 0xA9A8, 0xFFFD, 0xCC5E, 0xCC6A, 0xA9A2, 0xA9A4, 0xCEAB, -/* 0FB8 */ 0xCEA4, 0xCEAA, 0xCEA3, 0xCEA5, 0xCE7D, 0xCE7B, 0xFFFD, 0xCEAC, -/* 0FC0 */ 0xCEA9, 0xCE79, 0xFFFD, 0xABD0, 0xCEA7, 0xCEA8, 0xFFFD, 0xCEA6, -/* 0FC8 */ 0xCE7C, 0xCE7A, 0xABCF, 0xCEA2, 0xCE7E, 0xFFFD, 0xFFFD, 0xCEA1, -/* 0FD0 */ 0xCEAD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FD8 */ 0xFFFD, 0xAE6F, 0xFFFD, 0xAE6E, 0xFFFD, 0xD16C, 0xAE6B, 0xD16E, -/* 0FE0 */ 0xFFFD, 0xAE70, 0xD16F, 0xFFFD, 0xFFFD, 0xAE73, 0xFFFD, 0xAE71, -/* 0FE8 */ 0xD170, 0xCEAE, 0xD172, 0xFFFD, 0xAE6D, 0xFFFD, 0xAE6C, 0xFFFD, -/* 0FF0 */ 0xD16D, 0xD171, 0xAE72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB153, -/* 0FF8 */ 0xB152, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4F5, 0xD4F9, 0xD4FB, 0xB154, -/* 1000 */ 0xD4FE, 0xFFFD, 0xB158, 0xD541, 0xFFFD, 0xB15A, 0xFFFD, 0xB156, -/* 1008 */ 0xB15E, 0xFFFD, 0xB15B, 0xD4F7, 0xB155, 0xFFFD, 0xD4F6, 0xD4F4, -/* 1010 */ 0xD543, 0xD4F8, 0xFFFD, 0xB157, 0xD542, 0xB15C, 0xD4FD, 0xD4FC, -/* 1018 */ 0xB15D, 0xD4FA, 0xB159, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD544, -/* 1020 */ 0xFFFD, 0xD540, 0xD8E7, 0xD8EE, 0xD8E3, 0xB451, 0xD8DF, 0xD8EF, -/* 1028 */ 0xD8D9, 0xD8EC, 0xD8EA, 0xD8E4, 0xFFFD, 0xD8ED, 0xD8E6, 0xFFFD, -/* 1030 */ 0xD8DE, 0xD8F0, 0xD8DC, 0xD8E9, 0xD8DA, 0xFFFD, 0xD8F1, 0xFFFD, -/* 1038 */ 0xB452, 0xFFFD, 0xD8EB, 0xDD4F, 0xD8DD, 0xB44F, 0xFFFD, 0xD8E1, -/* 1040 */ 0xFFFD, 0xB450, 0xD8E0, 0xD8E5, 0xFFFD, 0xFFFD, 0xD8E2, 0xFFFD, -/* 1048 */ 0xFFFD, 0xFFFD, 0xD8E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDD53, -/* 1050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDD56, 0xDD4E, 0xFFFD, 0xDD50, 0xFFFD, -/* 1058 */ 0xDD55, 0xDD54, 0xB743, 0xFFFD, 0xD8DB, 0xDD52, 0xFFFD, 0xFFFD, -/* 1060 */ 0xB744, 0xFFFD, 0xDD4D, 0xDD51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1068 */ 0xE1A9, 0xFFFD, 0xE1B0, 0xE1A7, 0xFFFD, 0xE1AE, 0xE1A5, 0xE1AD, -/* 1070 */ 0xE1B1, 0xE1A4, 0xE1A8, 0xE1A3, 0xFFFD, 0xB9F1, 0xFFFD, 0xE1A6, -/* 1078 */ 0xB9F2, 0xE1AC, 0xE1AB, 0xE1AA, 0xFFFD, 0xFFFD, 0xE1AF, 0xFFFD, -/* 1080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE565, 0xE567, 0xBC6B, 0xE568, 0xFFFD, -/* 1088 */ 0xE563, 0xFFFD, 0xE562, 0xE56C, 0xFFFD, 0xE56A, 0xBC6A, 0xE56D, -/* 1090 */ 0xE564, 0xE569, 0xE56B, 0xE566, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1098 */ 0xE961, 0xE966, 0xE960, 0xE965, 0xFFFD, 0xE95E, 0xE968, 0xE964, -/* 10A0 */ 0xE969, 0xE963, 0xE95F, 0xE967, 0xFFFD, 0xE96A, 0xE962, 0xFFFD, -/* 10A8 */ 0xECDA, 0xC0AF, 0xFFFD, 0xC0AD, 0xFFFD, 0xC0AC, 0xC0AE, 0xFFFD, -/* 10B0 */ 0xFFFD, 0xEFC4, 0xFFFD, 0xF172, 0xF1FD, 0xFFFD, 0xFFFD, 0xF444, -/* 10B8 */ 0xF445, 0xFFFD, 0xC460, 0xFFFD, 0xF5C9, 0xFFFD, 0xC4DE, 0xFFFD, -/* 10C0 */ 0xF5CA, 0xFFFD, 0xF6DE, 0xC572, 0xFFFD, 0xC571, 0xF6DD, 0xC5C9, -/* 10C8 */ 0xFFFD, 0xF7D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA474, 0xA67B, -/* 10D0 */ 0xC9DA, 0xCACA, 0xA8B5, 0xB15F, 0xFFFD, 0xFFFD, 0xA475, 0xA5AA, -/* 10D8 */ 0xA5A9, 0xA5A8, 0xFFFD, 0xFFFD, 0xA7C5, 0xFFFD, 0xFFFD, 0xAE74, -/* 10E0 */ 0xFFFD, 0xDD57, 0xA476, 0xA477, 0xA478, 0xA4DA, 0xFFFD, 0xFFFD, -/* 10E8 */ 0xABD1, 0xFFFD, 0xCEAF, 0xFFFD, 0xFFFD, 0xFFFD, 0xB453, 0xA479, -/* 10F0 */ 0xC95D, 0xFFFD, 0xFFFD, 0xA5AB, 0xA5AC, 0xC978, 0xFFFD, 0xA67C, -/* 10F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCACB, 0xFFFD, 0xA7C6, 0xFFFD, 0xCACC, -/* 1100 */ 0xFFFD, 0xFFFD, 0xA9AE, 0xFFFD, 0xFFFD, 0xCC6E, 0xA9AC, 0xA9AB, -/* 1108 */ 0xCC6D, 0xA9A9, 0xCC6F, 0xA9AA, 0xA9AD, 0xFFFD, 0xABD2, 0xFFFD, -/* 1110 */ 0xABD4, 0xCEB3, 0xCEB0, 0xCEB1, 0xCEB2, 0xCEB4, 0xABD3, 0xFFFD, -/* 1118 */ 0xFFFD, 0xD174, 0xD173, 0xFFFD, 0xAE76, 0xFFFD, 0xAE75, 0xFFFD, -/* 1120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB162, 0xD546, 0xFFFD, 0xB161, -/* 1128 */ 0xB163, 0xB160, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB455, 0xD545, -/* 1130 */ 0xFFFD, 0xB456, 0xD8F3, 0xFFFD, 0xB457, 0xD8F2, 0xB454, 0xFFFD, -/* 1138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDD5A, 0xDD5C, 0xB745, 0xDD5B, 0xDD59, -/* 1140 */ 0xDD58, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1B4, 0xB9F7, 0xB9F5, 0xFFFD, -/* 1148 */ 0xB9F6, 0xE1B2, 0xE1B3, 0xFFFD, 0xB9F3, 0xE571, 0xE56F, 0xFFFD, -/* 1150 */ 0xBC6D, 0xE570, 0xBC6E, 0xBC6C, 0xB9F4, 0xFFFD, 0xFFFD, 0xE96D, -/* 1158 */ 0xE96B, 0xE96C, 0xE56E, 0xECDC, 0xC0B0, 0xECDB, 0xEFC5, 0xEFC6, -/* 1160 */ 0xE96E, 0xF1FE, 0xFFFD, 0xA47A, 0xA5AD, 0xA67E, 0xC9DB, 0xA67D, -/* 1168 */ 0xFFFD, 0xA9AF, 0xB746, 0xFFFD, 0xA4DB, 0xA5AE, 0xABD5, 0xB458, -/* 1170 */ 0xFFFD, 0xC979, 0xFFFD, 0xC97A, 0xFFFD, 0xC9DC, 0xFFFD, 0xFFFD, -/* 1178 */ 0xA7C8, 0xCAD0, 0xCACE, 0xA7C9, 0xCACD, 0xCACF, 0xCAD1, 0xFFFD, -/* 1180 */ 0xA7C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA9B3, 0xA9B4, -/* 1188 */ 0xA9B1, 0xFFFD, 0xFFFD, 0xA9B0, 0xCEB8, 0xA9B2, 0xFFFD, 0xFFFD, -/* 1190 */ 0xFFFD, 0xABD6, 0xFFFD, 0xCEB7, 0xCEB9, 0xCEB6, 0xCEBA, 0xABD7, -/* 1198 */ 0xAE79, 0xD175, 0xFFFD, 0xD177, 0xAE77, 0xD178, 0xAE78, 0xD176, -/* 11A0 */ 0xFFFD, 0xCEB5, 0xD547, 0xD54A, 0xD54B, 0xD548, 0xB167, 0xB166, -/* 11A8 */ 0xB164, 0xB165, 0xD549, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB168, -/* 11B0 */ 0xFFFD, 0xFFFD, 0xB45A, 0xB45B, 0xFFFD, 0xB45C, 0xDD5D, 0xDD5F, -/* 11B8 */ 0xDD61, 0xB748, 0xB747, 0xB459, 0xDD60, 0xDD5E, 0xFFFD, 0xE1B8, -/* 11C0 */ 0xFFFD, 0xFFFD, 0xE1B6, 0xE1BC, 0xB9F8, 0xE1BD, 0xE1BA, 0xB9F9, -/* 11C8 */ 0xE1B7, 0xE1B5, 0xE1BB, 0xBC70, 0xE573, 0xE1B9, 0xBC72, 0xE574, -/* 11D0 */ 0xBC71, 0xBC74, 0xE575, 0xBC6F, 0xBC73, 0xFFFD, 0xE973, 0xE971, -/* 11D8 */ 0xE970, 0xE972, 0xE96F, 0xFFFD, 0xFFFD, 0xC366, 0xFFFD, 0xF446, -/* 11E0 */ 0xF447, 0xFFFD, 0xF5CB, 0xF6DF, 0xC655, 0xFFFD, 0xFFFD, 0xA9B5, -/* 11E8 */ 0xA7CA, 0xFFFD, 0xFFFD, 0xABD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xA47B, -/* 11F0 */ 0xA4DC, 0xFFFD, 0xA5AF, 0xC9DD, 0xFFFD, 0xA7CB, 0xCAD2, 0xFFFD, -/* 11F8 */ 0xCEBB, 0xABD9, 0xFFFD, 0xB9FA, 0xA47C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1200 */ 0xA6A1, 0xFFFD, 0xFFFD, 0xB749, 0xA47D, 0xA4DD, 0xA4DE, 0xFFFD, -/* 1208 */ 0xA5B1, 0xA5B0, 0xFFFD, 0xC9DE, 0xA6A2, 0xFFFD, 0xCAD3, 0xFFFD, -/* 1210 */ 0xA7CC, 0xFFFD, 0xFFFD, 0xCC71, 0xCC72, 0xCC73, 0xFFFD, 0xA9B6, -/* 1218 */ 0xA9B7, 0xCC70, 0xA9B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xABDA, 0xCEBC, -/* 1220 */ 0xFFFD, 0xD17A, 0xAE7A, 0xFFFD, 0xD179, 0xFFFD, 0xB169, 0xD54C, -/* 1228 */ 0xB16A, 0xD54D, 0xFFFD, 0xFFFD, 0xFFFD, 0xB45D, 0xFFFD, 0xFFFD, -/* 1230 */ 0xFFFD, 0xDD62, 0xFFFD, 0xFFFD, 0xE1BF, 0xE1BE, 0xFFFD, 0xB9FB, -/* 1238 */ 0xFFFD, 0xBC75, 0xE576, 0xBECA, 0xE974, 0xC0B1, 0xFFFD, 0xC573, -/* 1240 */ 0xF7D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCC74, 0xFFFD, 0xCEBD, -/* 1248 */ 0xB16B, 0xD8F4, 0xB74A, 0xFFFD, 0xFFFD, 0xFFFD, 0xC255, 0xFFFD, -/* 1250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA7CE, 0xFFFD, 0xA7CD, 0xABDB, 0xFFFD, -/* 1258 */ 0xD17B, 0xFFFD, 0xB16D, 0xB343, 0xB16E, 0xB16C, 0xB45E, 0xFFFD, -/* 1260 */ 0xE1C0, 0xB9FC, 0xBC76, 0xFFFD, 0xC94C, 0xC9DF, 0xFFFD, 0xCAD5, -/* 1268 */ 0xA7CF, 0xCAD4, 0xA7D0, 0xFFFD, 0xFFFD, 0xA9BC, 0xCC77, 0xCC76, -/* 1270 */ 0xA9BB, 0xA9B9, 0xA9BA, 0xCC75, 0xFFFD, 0xFFFD, 0xABDD, 0xCEBE, -/* 1278 */ 0xABE0, 0xABDC, 0xABE2, 0xABDE, 0xABDF, 0xABE1, 0xFFFD, 0xFFFD, -/* 1280 */ 0xFFFD, 0xAE7D, 0xAE7C, 0xAE7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xD54F, -/* 1288 */ 0xB16F, 0xB172, 0xB170, 0xFFFD, 0xD54E, 0xB175, 0xFFFD, 0xB171, -/* 1290 */ 0xD550, 0xB174, 0xB173, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8F6, 0xD8F5, -/* 1298 */ 0xFFFD, 0xB461, 0xB45F, 0xB460, 0xD8F7, 0xB74B, 0xDD64, 0xB74C, -/* 12A0 */ 0xDD63, 0xFFFD, 0xFFFD, 0xE577, 0xFFFD, 0xFFFD, 0xBC78, 0xE1C1, -/* 12A8 */ 0xBC77, 0xFFFD, 0xB9FD, 0xFFFD, 0xECDE, 0xE975, 0xC0B2, 0xECDD, -/* 12B0 */ 0xF240, 0xF448, 0xF449, 0xFFFD, 0xA4DF, 0xFFFD, 0xA5B2, 0xFFFD, -/* 12B8 */ 0xFFFD, 0xFFFD, 0xC97B, 0xFFFD, 0xFFFD, 0xA7D2, 0xA7D4, 0xFFFD, -/* 12C0 */ 0xC9E2, 0xCAD8, 0xCAD7, 0xCAD6, 0xFFFD, 0xC9E1, 0xC9E0, 0xA6A4, -/* 12C8 */ 0xA7D3, 0xA7D1, 0xA6A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xA9BD, 0xCC78, -/* 12D0 */ 0xFFFD, 0xA9BE, 0xCADD, 0xFFFD, 0xCADF, 0xCADE, 0xCC79, 0xFFFD, -/* 12D8 */ 0xFFFD, 0xCADA, 0xFFFD, 0xA7D8, 0xA7D6, 0xFFFD, 0xCAD9, 0xCADB, -/* 12E0 */ 0xCAE1, 0xFFFD, 0xA7D5, 0xFFFD, 0xCADC, 0xCAE5, 0xA9C0, 0xFFFD, -/* 12E8 */ 0xCAE2, 0xA7D7, 0xFFFD, 0xCAE0, 0xCAE3, 0xFFFD, 0xA9BF, 0xFFFD, -/* 12F0 */ 0xA9C1, 0xCAE4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12F8 */ 0xFFFD, 0xFFFD, 0xCCAF, 0xCCA2, 0xCC7E, 0xCCAE, 0xCCA9, 0xABE7, -/* 1300 */ 0xA9C2, 0xCCAA, 0xCCAD, 0xABE3, 0xCCAC, 0xA9C3, 0xA9C8, 0xA9C6, -/* 1308 */ 0xCCA3, 0xFFFD, 0xCC7C, 0xCCA5, 0xA9CD, 0xCCB0, 0xABE4, 0xCCA6, -/* 1310 */ 0xFFFD, 0xABE5, 0xA9C9, 0xCCA8, 0xFFFD, 0xCECD, 0xABE6, 0xCC7B, -/* 1318 */ 0xA9CA, 0xABE8, 0xA9CB, 0xA9C7, 0xA9CC, 0xCCA7, 0xCC7A, 0xCCAB, -/* 1320 */ 0xA9C4, 0xFFFD, 0xFFFD, 0xCC7D, 0xCCA4, 0xCCA1, 0xA9C5, 0xFFFD, -/* 1328 */ 0xCEBF, 0xFFFD, 0xCEC0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1330 */ 0xFFFD, 0xCECA, 0xD1A1, 0xCECB, 0xABEE, 0xCECE, 0xCEC4, 0xABED, -/* 1338 */ 0xCEC6, 0xFFFD, 0xCEC7, 0xFFFD, 0xFFFD, 0xCEC9, 0xABE9, 0xFFFD, -/* 1340 */ 0xFFFD, 0xAEA3, 0xFFFD, 0xFFFD, 0xCEC5, 0xCEC1, 0xAEA4, 0xFFFD, -/* 1348 */ 0xFFFD, 0xCECF, 0xAE7E, 0xD17D, 0xCEC8, 0xFFFD, 0xD17C, 0xCEC3, -/* 1350 */ 0xCECC, 0xFFFD, 0xFFFD, 0xABEC, 0xAEA1, 0xABF2, 0xAEA2, 0xCED0, -/* 1358 */ 0xD17E, 0xABEB, 0xAEA6, 0xABF1, 0xABF0, 0xABEF, 0xAEA5, 0xCED1, -/* 1360 */ 0xAEA7, 0xABEA, 0xFFFD, 0xCEC2, 0xB176, 0xD1A4, 0xD1A6, 0xFFFD, -/* 1368 */ 0xD1A8, 0xAEA8, 0xAEAE, 0xD553, 0xD1AC, 0xD1A3, 0xB178, 0xD551, -/* 1370 */ 0xFFFD, 0xAEAD, 0xAEAB, 0xD1AE, 0xFFFD, 0xD552, 0xFFFD, 0xD1A5, -/* 1378 */ 0xFFFD, 0xAEAC, 0xD1A9, 0xAEAF, 0xD1AB, 0xFFFD, 0xFFFD, 0xAEAA, -/* 1380 */ 0xD1AA, 0xD1AD, 0xD1A7, 0xFFFD, 0xAEA9, 0xB179, 0xFFFD, 0xD1A2, -/* 1388 */ 0xB177, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB17A, 0xFFFD, 0xFFFD, -/* 1390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD555, 0xD55E, 0xB464, -/* 1398 */ 0xFFFD, 0xB17C, 0xB1A3, 0xB465, 0xD560, 0xB1AA, 0xD8F9, 0xD556, -/* 13A0 */ 0xB1A2, 0xB1A5, 0xB17E, 0xD554, 0xD562, 0xD565, 0xD949, 0xFFFD, -/* 13A8 */ 0xD563, 0xD8FD, 0xB1A1, 0xB1A8, 0xB1AC, 0xD55D, 0xD8F8, 0xD561, -/* 13B0 */ 0xB17B, 0xD8FA, 0xD564, 0xD8FC, 0xD559, 0xFFFD, 0xB462, 0xFFFD, -/* 13B8 */ 0xD557, 0xD558, 0xB1A7, 0xFFFD, 0xFFFD, 0xB1A6, 0xD55B, 0xB1AB, -/* 13C0 */ 0xD55F, 0xB1A4, 0xD55C, 0xFFFD, 0xB1A9, 0xB466, 0xB463, 0xD8FB, -/* 13C8 */ 0xFFFD, 0xD55A, 0xFFFD, 0xB17D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB46B, 0xB46F, 0xD940, -/* 13D8 */ 0xB751, 0xB46D, 0xD944, 0xB471, 0xDD65, 0xD946, 0xB753, 0xB469, -/* 13E0 */ 0xB46C, 0xD947, 0xFFFD, 0xD948, 0xD94E, 0xB473, 0xB754, 0xFFFD, -/* 13E8 */ 0xD94A, 0xD94F, 0xD943, 0xB75E, 0xFFFD, 0xB755, 0xB472, 0xD941, -/* 13F0 */ 0xD950, 0xFFFD, 0xB75D, 0xB470, 0xB74E, 0xD94D, 0xFFFD, 0xB474, -/* 13F8 */ 0xD945, 0xD8FE, 0xB46A, 0xD942, 0xFFFD, 0xD94B, 0xFFFD, 0xB74D, -/* 1400 */ 0xB752, 0xB467, 0xD94C, 0xFFFD, 0xB750, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1408 */ 0xB468, 0xFFFD, 0xFFFD, 0xFFFD, 0xB75C, 0xE1C3, 0xDD70, 0xFFFD, -/* 1410 */ 0xDD68, 0xE1C2, 0xFFFD, 0xDD6C, 0xDD6E, 0xFFFD, 0xFFFD, 0xDD6B, -/* 1418 */ 0xFFFD, 0xB75B, 0xFFFD, 0xDD6A, 0xB75F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1420 */ 0xE1D2, 0xFFFD, 0xFFFD, 0xB75A, 0xBA40, 0xDD71, 0xE1C4, 0xFFFD, -/* 1428 */ 0xFFFD, 0xB758, 0xDD69, 0xDD6D, 0xB9FE, 0xB74F, 0xDD66, 0xDD67, -/* 1430 */ 0xBA41, 0xB757, 0xB759, 0xB756, 0xDD6F, 0xFFFD, 0xFFFD, 0xE1C8, -/* 1438 */ 0xE1C9, 0xE1CE, 0xBC7D, 0xE1D5, 0xFFFD, 0xBA47, 0xFFFD, 0xBA46, -/* 1440 */ 0xE1D0, 0xFFFD, 0xBC7C, 0xE1C5, 0xBA45, 0xFFFD, 0xE1D4, 0xBA43, -/* 1448 */ 0xBA44, 0xFFFD, 0xE1D1, 0xE5AA, 0xBC7A, 0xB46E, 0xFFFD, 0xE1D3, -/* 1450 */ 0xBCA3, 0xE1CB, 0xFFFD, 0xBC7B, 0xFFFD, 0xBCA2, 0xE1C6, 0xE1CA, -/* 1458 */ 0xE1C7, 0xE1CD, 0xBA48, 0xBC79, 0xBA42, 0xFFFD, 0xE57A, 0xE1CF, -/* 1460 */ 0xFFFD, 0xBCA1, 0xFFFD, 0xBCA4, 0xFFFD, 0xE1CC, 0xFFFD, 0xBC7E, -/* 1468 */ 0xE579, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE57E, 0xBECE, -/* 1470 */ 0xE578, 0xE9A3, 0xE5A9, 0xBCA8, 0xFFFD, 0xBCA6, 0xBECC, 0xE5A6, -/* 1478 */ 0xE5A2, 0xBCAC, 0xFFFD, 0xE978, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCAA, -/* 1480 */ 0xE5A1, 0xFFFD, 0xE976, 0xFFFD, 0xE5A5, 0xFFFD, 0xE5A8, 0xE57D, -/* 1488 */ 0xFFFD, 0xBCAB, 0xFFFD, 0xFFFD, 0xBCA5, 0xE977, 0xBECD, 0xE5A7, -/* 1490 */ 0xBCA7, 0xBCA9, 0xE5A4, 0xBCAD, 0xE5A3, 0xE57C, 0xE57B, 0xBECB, -/* 1498 */ 0xE5AB, 0xE97A, 0xECE0, 0xBED0, 0xFFFD, 0xE9A2, 0xFFFD, 0xE97E, -/* 14A0 */ 0xFFFD, 0xECE1, 0xFFFD, 0xBED1, 0xE9A1, 0xFFFD, 0xE97C, 0xC0B4, -/* 14A8 */ 0xECDF, 0xFFFD, 0xE979, 0xE97B, 0xC0B5, 0xBED3, 0xC0B3, 0xBED2, -/* 14B0 */ 0xC0B7, 0xE97D, 0xBECF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEFCF, 0xFFFD, 0xEFC7, 0xFFFD, 0xFFFD, -/* 14C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xECE7, 0xEFC8, 0xECE3, 0xFFFD, 0xFFFD, -/* 14C8 */ 0xC256, 0xECE5, 0xECE4, 0xC0B6, 0xECE2, 0xECE6, 0xEFD0, 0xEFCC, -/* 14D0 */ 0xEFCE, 0xFFFD, 0xEFC9, 0xEFCA, 0xFFFD, 0xEFCD, 0xEFCB, 0xC367, -/* 14D8 */ 0xFFFD, 0xFFFD, 0xC36A, 0xC369, 0xC368, 0xC461, 0xF44A, 0xC462, -/* 14E0 */ 0xF241, 0xC4DF, 0xF5CC, 0xC4E0, 0xC574, 0xC5CA, 0xF7D9, 0xFFFD, -/* 14E8 */ 0xF7DA, 0xF7DB, 0xFFFD, 0xFFFD, 0xF9BA, 0xA4E0, 0xC97C, 0xA5B3, -/* 14F0 */ 0xFFFD, 0xA6A6, 0xA6A7, 0xA6A5, 0xFFFD, 0xA6A8, 0xA7DA, 0xA7D9, -/* 14F8 */ 0xFFFD, 0xCCB1, 0xA9CF, 0xA9CE, 0xFFFD, 0xFFFD, 0xD1AF, 0xB1AD, -/* 1500 */ 0xB1AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xB475, 0xDD72, 0xB760, 0xB761, -/* 1508 */ 0xDD74, 0xDD76, 0xDD75, 0xFFFD, 0xE1D7, 0xFFFD, 0xE1D6, 0xBA49, -/* 1510 */ 0xE1D8, 0xFFFD, 0xE5AC, 0xBCAE, 0xFFFD, 0xBED4, 0xFFFD, 0xC0B8, -/* 1518 */ 0xC257, 0xC0B9, 0xFFFD, 0xA4E1, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAE6, -/* 1520 */ 0xFFFD, 0xFFFD, 0xCCB2, 0xA9D1, 0xA9D0, 0xA9D2, 0xABF3, 0xCED2, -/* 1528 */ 0xCED3, 0xFFFD, 0xFFFD, 0xD1B0, 0xAEB0, 0xB1AF, 0xB476, 0xD951, -/* 1530 */ 0xA4E2, 0xFFFD, 0xA47E, 0xA4E3, 0xFFFD, 0xC97D, 0xA5B7, 0xA5B6, -/* 1538 */ 0xA5B4, 0xA5B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xA6AB, 0xC9E9, 0xC9EB, -/* 1540 */ 0xA6AA, 0xC9E3, 0xFFFD, 0xC9E4, 0xFFFD, 0xC9EA, 0xC9E6, 0xC9E8, -/* 1548 */ 0xA6A9, 0xC9E5, 0xC9EC, 0xC9E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1550 */ 0xFFFD, 0xFFFD, 0xA7E1, 0xA7EA, 0xA7E8, 0xCAF0, 0xCAED, 0xCAF5, -/* 1558 */ 0xA7E6, 0xCAF6, 0xFFFD, 0xA7DF, 0xCAF3, 0xFFFD, 0xA7E5, 0xCAEF, -/* 1560 */ 0xCAEE, 0xA7E3, 0xCAF4, 0xA7E4, 0xA9D3, 0xA7DE, 0xCAF1, 0xFFFD, -/* 1568 */ 0xCAE7, 0xA7DB, 0xFFFD, 0xA7EE, 0xCAEC, 0xCAF2, 0xA7E0, 0xA7E2, -/* 1570 */ 0xFFFD, 0xCAE8, 0xFFFD, 0xCAE9, 0xCAEA, 0xFFFD, 0xA7ED, 0xA7E7, -/* 1578 */ 0xA7EC, 0xCAEB, 0xA7EB, 0xA7DD, 0xA7DC, 0xA7E9, 0xA9E1, 0xCCBE, -/* 1580 */ 0xCCB7, 0xA9DC, 0xA9EF, 0xCCB3, 0xCCBA, 0xCCBC, 0xCCBF, 0xA9EA, -/* 1588 */ 0xFFFD, 0xCCBB, 0xCCB4, 0xA9E8, 0xCCB8, 0xFFFD, 0xCCC0, 0xA9D9, -/* 1590 */ 0xFFFD, 0xCCBD, 0xA9E3, 0xA9E2, 0xCCB6, 0xA9D7, 0xFFFD, 0xFFFD, -/* 1598 */ 0xA9D8, 0xFFFD, 0xA9D6, 0xFFFD, 0xA9EE, 0xA9E6, 0xA9E0, 0xA9D4, -/* 15A0 */ 0xCCB9, 0xA9DF, 0xA9D5, 0xA9E7, 0xA9F0, 0xCED4, 0xA9E4, 0xCCB5, -/* 15A8 */ 0xA9DA, 0xA9DD, 0xA9DE, 0xFFFD, 0xA9EC, 0xA9ED, 0xA9EB, 0xA9E5, -/* 15B0 */ 0xA9E9, 0xA9DB, 0xABF4, 0xCEDA, 0xAC41, 0xABF8, 0xABFA, 0xAC40, -/* 15B8 */ 0xCEE6, 0xABFD, 0xD1B1, 0xAEB1, 0xAC43, 0xCED7, 0xCEDF, 0xABFE, -/* 15C0 */ 0xCEDE, 0xCEDB, 0xCEE3, 0xCEE5, 0xABF7, 0xABFB, 0xAC42, 0xAEB3, -/* 15C8 */ 0xCEE0, 0xABF9, 0xAC45, 0xCED9, 0xFFFD, 0xFFFD, 0xFFFD, 0xABFC, -/* 15D0 */ 0xAEB2, 0xABF6, 0xFFFD, 0xCED6, 0xCEDD, 0xCED5, 0xCED8, 0xCEDC, -/* 15D8 */ 0xD1B2, 0xAC44, 0xFFFD, 0xCEE1, 0xCEE2, 0xCEE4, 0xABF5, 0xAEC1, -/* 15E0 */ 0xD1BE, 0xAEBF, 0xAEC0, 0xD1B4, 0xD1C4, 0xFFFD, 0xAEB6, 0xFFFD, -/* 15E8 */ 0xFFFD, 0xD566, 0xD1C6, 0xD1C0, 0xFFFD, 0xD1B7, 0xFFFD, 0xD1C9, -/* 15F0 */ 0xD1BA, 0xAEBC, 0xD57D, 0xD1BD, 0xAEBE, 0xAEB5, 0xFFFD, 0xD1CB, -/* 15F8 */ 0xD1BF, 0xAEB8, 0xD1B8, 0xD1B5, 0xD1B6, 0xAEB9, 0xD1C5, 0xD1CC, -/* 1600 */ 0xAEBB, 0xD1BC, 0xD1BB, 0xAEC3, 0xAEC2, 0xAEB4, 0xAEBA, 0xAEBD, -/* 1608 */ 0xD1C8, 0xFFFD, 0xFFFD, 0xD1C2, 0xAEB7, 0xD1B3, 0xD1CA, 0xD1C1, -/* 1610 */ 0xD1C3, 0xD1C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD567, 0xFFFD, 0xB1B7, 0xB1CB, -/* 1620 */ 0xB1CA, 0xFFFD, 0xB1BF, 0xFFFD, 0xD579, 0xD575, 0xD572, 0xD5A6, -/* 1628 */ 0xB1BA, 0xB1B2, 0xFFFD, 0xFFFD, 0xD577, 0xB4A8, 0xB1B6, 0xD5A1, -/* 1630 */ 0xFFFD, 0xB1CC, 0xB1C9, 0xD57B, 0xD56A, 0xFFFD, 0xFFFD, 0xB1C8, -/* 1638 */ 0xD5A3, 0xD569, 0xB1BD, 0xB1C1, 0xD5A2, 0xFFFD, 0xD573, 0xB1C2, -/* 1640 */ 0xB1BC, 0xD568, 0xFFFD, 0xB478, 0xD5A5, 0xD571, 0xB1C7, 0xD574, -/* 1648 */ 0xD5A4, 0xB1C6, 0xFFFD, 0xD952, 0xFFFD, 0xB1B3, 0xD56F, 0xB1B8, -/* 1650 */ 0xB1C3, 0xFFFD, 0xB1BE, 0xD578, 0xD56E, 0xD56C, 0xD57E, 0xB1B0, -/* 1658 */ 0xB1C4, 0xB1B4, 0xB477, 0xD57C, 0xB1B5, 0xFFFD, 0xB1B1, 0xB1C0, -/* 1660 */ 0xB1BB, 0xB1B9, 0xD570, 0xB1C5, 0xD56D, 0xD57A, 0xD576, 0xD954, -/* 1668 */ 0xD953, 0xD56B, 0xD964, 0xFFFD, 0xB47A, 0xFFFD, 0xD96A, 0xD959, -/* 1670 */ 0xD967, 0xDD77, 0xB47D, 0xD96B, 0xD96E, 0xB47C, 0xD95C, 0xD96D, -/* 1678 */ 0xD96C, 0xB47E, 0xD955, 0xB479, 0xB4A3, 0xFFFD, 0xB4A1, 0xD969, -/* 1680 */ 0xFFFD, 0xD95F, 0xB4A5, 0xD970, 0xD968, 0xD971, 0xB4AD, 0xB4AB, -/* 1688 */ 0xD966, 0xD965, 0xFFFD, 0xD963, 0xD95D, 0xB4A4, 0xFFFD, 0xB4A2, -/* 1690 */ 0xD1B9, 0xD956, 0xFFFD, 0xDDB7, 0xD957, 0xB47B, 0xB4AA, 0xDD79, -/* 1698 */ 0xFFFD, 0xB4A6, 0xB4A7, 0xD958, 0xD96F, 0xDD78, 0xD960, 0xD95B, -/* 16A0 */ 0xB4A9, 0xD961, 0xD95E, 0xFFFD, 0xFFFD, 0xB4AE, 0xB770, 0xFFFD, -/* 16A8 */ 0xFFFD, 0xDD7C, 0xDDB1, 0xDDB6, 0xDDAA, 0xB76C, 0xDDBB, 0xB769, -/* 16B0 */ 0xDD7A, 0xFFFD, 0xDD7B, 0xB762, 0xB76B, 0xDDA4, 0xB76E, 0xB76F, -/* 16B8 */ 0xDDA5, 0xFFFD, 0xDDB2, 0xDDB8, 0xB76A, 0xFFFD, 0xB764, 0xDDA3, -/* 16C0 */ 0xDD7D, 0xDDBA, 0xDDA8, 0xDDA9, 0xDD7E, 0xDDB4, 0xDDAB, 0xDDB5, -/* 16C8 */ 0xDDAD, 0xFFFD, 0xB765, 0xE1D9, 0xB768, 0xB766, 0xDDB9, 0xDDB0, -/* 16D0 */ 0xDDAC, 0xFFFD, 0xFFFD, 0xDDA1, 0xBA53, 0xDDAF, 0xB76D, 0xDDA7, -/* 16D8 */ 0xFFFD, 0xDDA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xB767, 0xB763, 0xE1EE, -/* 16E0 */ 0xDDB3, 0xDDAE, 0xFFFD, 0xDDA2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E9, 0xFFFD, 0xE1DA, 0xE1E5, 0xFFFD, -/* 16F0 */ 0xE1EC, 0xBA51, 0xB4AC, 0xE1EA, 0xBA4C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16F8 */ 0xBA4B, 0xE1F1, 0xFFFD, 0xE1DB, 0xE1E8, 0xE1DC, 0xE1E7, 0xBA4F, -/* 1700 */ 0xE1EB, 0xD962, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1F2, 0xE1E3, 0xBA52, -/* 1708 */ 0xE5BA, 0xBCAF, 0xFFFD, 0xE1F0, 0xE1EF, 0xBA54, 0xE5AD, 0xBCB0, -/* 1710 */ 0xE5AE, 0xFFFD, 0xE1DF, 0xE1E0, 0xE1DD, 0xE1E2, 0xE1DE, 0xE1F3, -/* 1718 */ 0xBA4E, 0xBCB1, 0xBA50, 0xBA55, 0xFFFD, 0xE1E1, 0xFFFD, 0xE1ED, -/* 1720 */ 0xFFFD, 0xFFFD, 0xE1E6, 0xFFFD, 0xFFFD, 0xE5B1, 0xFFFD, 0xBA4A, -/* 1728 */ 0xBCB4, 0xE9AA, 0xE5B6, 0xE5B5, 0xE5B7, 0xFFFD, 0xFFFD, 0xE5B4, -/* 1730 */ 0xBCB5, 0xFFFD, 0xBCBB, 0xBCB8, 0xFFFD, 0xBCB9, 0xE5AF, 0xE5B2, -/* 1738 */ 0xE5BC, 0xBCC1, 0xBCBF, 0xFFFD, 0xE5B3, 0xD95A, 0xBCB2, 0xE5B9, -/* 1740 */ 0xE5B0, 0xFFFD, 0xBCC2, 0xE5B8, 0xBA4D, 0xBCB7, 0xE1E4, 0xFFFD, -/* 1748 */ 0xFFFD, 0xBCBA, 0xFFFD, 0xBCBE, 0xBCC0, 0xBCBD, 0xBCBC, 0xFFFD, -/* 1750 */ 0xBCB6, 0xE5BB, 0xBCB3, 0xBCC3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1758 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBED8, 0xBED9, 0xE9A9, 0xBEE2, 0xBEDF, -/* 1760 */ 0xFFFD, 0xBED6, 0xBEDD, 0xE9AB, 0xBEDB, 0xBED5, 0xFFFD, 0xBEDC, -/* 1768 */ 0xFFFD, 0xE9A8, 0xC0BB, 0xBED7, 0xFFFD, 0xBEDE, 0xC0BA, 0xE9A7, -/* 1770 */ 0xE9A6, 0xFFFD, 0xBEE0, 0xFFFD, 0xBEE1, 0xFFFD, 0xE9A5, 0xE9A4, -/* 1778 */ 0xC0BC, 0xE9AE, 0xBEDA, 0xE9AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1780 */ 0xC0BD, 0xFFFD, 0xC0C2, 0xECEA, 0xECEC, 0xFFFD, 0xC0BF, 0xFFFD, -/* 1788 */ 0xECED, 0xECE9, 0xFFFD, 0xECEB, 0xC0C0, 0xC0C3, 0xFFFD, 0xECE8, -/* 1790 */ 0xC0BE, 0xC0C1, 0xC259, 0xE9AD, 0xC258, 0xFFFD, 0xFFFD, 0xC25E, -/* 1798 */ 0xEFD4, 0xFFFD, 0xC25C, 0xC25D, 0xEFD7, 0xEFD3, 0xC25A, 0xEFD1, -/* 17A0 */ 0xC36B, 0xEFD5, 0xFFFD, 0xEFD6, 0xEFD2, 0xFFFD, 0xC25B, 0xF242, -/* 17A8 */ 0xFFFD, 0xF245, 0xFFFD, 0xFFFD, 0xF246, 0xF244, 0xF247, 0xC36C, -/* 17B0 */ 0xF243, 0xFFFD, 0xFFFD, 0xF44E, 0xC464, 0xF44D, 0xF44C, 0xF44B, -/* 17B8 */ 0xC463, 0xC465, 0xFFFD, 0xF5CD, 0xC4E2, 0xC4E1, 0xFFFD, 0xFFFD, -/* 17C0 */ 0xF6E1, 0xF6E0, 0xF6E3, 0xC5CB, 0xC575, 0xF7DD, 0xF6E2, 0xFFFD, -/* 17C8 */ 0xFFFD, 0xF7DC, 0xC5CD, 0xC5CC, 0xC5F3, 0xF8A9, 0xF8EF, 0xA4E4, -/* 17D0 */ 0xFFFD, 0xFFFD, 0xD972, 0xE9AF, 0xFFFD, 0xFFFD, 0xA6AC, 0xCAF7, -/* 17D8 */ 0xA7F1, 0xA7EF, 0xFFFD, 0xA7F0, 0xFFFD, 0xCCC1, 0xA9F1, 0xAC46, -/* 17E0 */ 0xFFFD, 0xCEE7, 0xFFFD, 0xCEE8, 0xFFFD, 0xAC47, 0xD1CE, 0xFFFD, -/* 17E8 */ 0xAEC4, 0xAEC5, 0xD1CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB1D3, -/* 17F0 */ 0xFFFD, 0xB1CF, 0xFFFD, 0xD5A7, 0xB1D6, 0xB1D5, 0xB1CE, 0xB1D1, -/* 17F8 */ 0xB1D4, 0xB1D0, 0xFFFD, 0xFFFD, 0xD976, 0xB1CD, 0xB4AF, 0xFFFD, -/* 1800 */ 0xFFFD, 0xFFFD, 0xB4B1, 0xB4B2, 0xD975, 0xD978, 0xB4B0, 0xD973, -/* 1808 */ 0xD977, 0xFFFD, 0xD974, 0xFFFD, 0xB771, 0xFFFD, 0xFFFD, 0xDDBC, -/* 1810 */ 0xFFFD, 0xFFFD, 0xBA56, 0xE1F4, 0xBEE3, 0xBCC4, 0xE5BD, 0xBCC5, -/* 1818 */ 0xBCC6, 0xE5BF, 0xE5BE, 0xE5C0, 0xE9B1, 0xFFFD, 0xFFFD, 0xE9B0, -/* 1820 */ 0xECEF, 0xECEE, 0xC0C4, 0xC0C5, 0xF248, 0xFFFD, 0xFFFD, 0xA4E5, -/* 1828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD979, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1830 */ 0xB4B4, 0xB4B3, 0xDDBD, 0xFFFD, 0xEFD8, 0xC4E3, 0xF7DE, 0xA4E6, -/* 1838 */ 0xFFFD, 0xAEC6, 0xFFFD, 0xB1D8, 0xB1D7, 0xD97A, 0xD97B, 0xB772, -/* 1840 */ 0xE1F5, 0xBA57, 0xE9B2, 0xFFFD, 0xA4E7, 0xA5B8, 0xFFFD, 0xA9F2, -/* 1848 */ 0xCCC2, 0xFFFD, 0xCEE9, 0xAC48, 0xB1D9, 0xFFFD, 0xD97C, 0xB4B5, -/* 1850 */ 0xB773, 0xFFFD, 0xE5C1, 0xE5C2, 0xFFFD, 0xFFFD, 0xECF0, 0xC25F, -/* 1858 */ 0xF8F0, 0xA4E8, 0xFFFD, 0xCCC3, 0xA9F3, 0xAC49, 0xFFFD, 0xCEEA, -/* 1860 */ 0xFFFD, 0xAEC7, 0xD1D2, 0xD1D0, 0xD1D1, 0xAEC8, 0xD1CF, 0xFFFD, -/* 1868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB1DB, 0xB1DC, 0xD5A8, 0xB1DD, 0xB1DA, -/* 1870 */ 0xD97D, 0xFFFD, 0xD97E, 0xDDBE, 0xFFFD, 0xFFFD, 0xBA59, 0xBA58, -/* 1878 */ 0xFFFD, 0xFFFD, 0xECF1, 0xEFD9, 0xFFFD, 0xF24A, 0xF249, 0xF44F, -/* 1880 */ 0xFFFD, 0xC95E, 0xAC4A, 0xFFFD, 0xFFFD, 0xA4E9, 0xA5B9, 0xFFFD, -/* 1888 */ 0xA6AE, 0xA6AD, 0xFFFD, 0xFFFD, 0xA6AF, 0xA6B0, 0xC9EE, 0xC9ED, -/* 1890 */ 0xCAF8, 0xA7F2, 0xCAFB, 0xCAFA, 0xCAF9, 0xCAFC, 0xFFFD, 0xFFFD, -/* 1898 */ 0xFFFD, 0xFFFD, 0xA9F4, 0xCCC9, 0xCCC5, 0xCCCE, 0xFFFD, 0xFFFD, -/* 18A0 */ 0xA9FB, 0xFFFD, 0xA9F9, 0xCCCA, 0xCCC6, 0xCCCD, 0xA9F8, 0xAA40, -/* 18A8 */ 0xCCC8, 0xCCC4, 0xA9FE, 0xCCCB, 0xA9F7, 0xCCCC, 0xA9FA, 0xA9FC, -/* 18B0 */ 0xCCD0, 0xCCCF, 0xCCC7, 0xA9F6, 0xA9F5, 0xA9FD, 0xFFFD, 0xFFFD, -/* 18B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEEF, 0xCEF5, 0xFFFD, 0xAC50, -/* 18C0 */ 0xAC4D, 0xCEEC, 0xCEF1, 0xFFFD, 0xAC53, 0xAC4B, 0xCEF0, 0xAC4E, -/* 18C8 */ 0xAC51, 0xFFFD, 0xFFFD, 0xCEF3, 0xFFFD, 0xAC4C, 0xCEF8, 0xAC4F, -/* 18D0 */ 0xFFFD, 0xAC52, 0xCEED, 0xCEF2, 0xCEF6, 0xCEEE, 0xCEEB, 0xFFFD, -/* 18D8 */ 0xFFFD, 0xCEF7, 0xCEF4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18E0 */ 0xFFFD, 0xAED0, 0xAEC9, 0xAECC, 0xFFFD, 0xAECF, 0xFFFD, 0xD1D5, -/* 18E8 */ 0xFFFD, 0xAECA, 0xD1D3, 0xFFFD, 0xAECE, 0xFFFD, 0xFFFD, 0xAECB, -/* 18F0 */ 0xFFFD, 0xD1D6, 0xAECD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18F8 */ 0xFFFD, 0xD5AC, 0xB1DF, 0xD5AB, 0xD5AD, 0xB1DE, 0xB1E3, 0xD1D4, -/* 1900 */ 0xFFFD, 0xD5AA, 0xD5AE, 0xFFFD, 0xB1E0, 0xD5A9, 0xB1E2, 0xFFFD, -/* 1908 */ 0xB1E1, 0xFFFD, 0xD9A7, 0xFFFD, 0xD9A2, 0xFFFD, 0xB4B6, 0xB4BA, -/* 1910 */ 0xB4B7, 0xD9A5, 0xD9A8, 0xFFFD, 0xB4B8, 0xFFFD, 0xB4B9, 0xB4BE, -/* 1918 */ 0xDDC7, 0xD9A6, 0xB4BC, 0xD9A3, 0xD9A1, 0xFFFD, 0xB4BD, 0xFFFD, -/* 1920 */ 0xD9A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xB779, 0xFFFD, 0xDDBF, 0xB776, -/* 1928 */ 0xB777, 0xB775, 0xDDC4, 0xDDC3, 0xDDC0, 0xB77B, 0xFFFD, 0xFFFD, -/* 1930 */ 0xDDC2, 0xB4BB, 0xFFFD, 0xFFFD, 0xDDC6, 0xDDC1, 0xB778, 0xB774, -/* 1938 */ 0xB77A, 0xDDC5, 0xFFFD, 0xFFFD, 0xFFFD, 0xBA5C, 0xFFFD, 0xE1F8, -/* 1940 */ 0xE1F7, 0xE1F6, 0xBA5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1948 */ 0xBA5B, 0xE5C5, 0xE5C8, 0xBCC8, 0xFFFD, 0xFFFD, 0xBCC7, 0xE5C9, -/* 1950 */ 0xE5C4, 0xBCCA, 0xE5C6, 0xFFFD, 0xBCC9, 0xE5C3, 0xFFFD, 0xE5C7, -/* 1958 */ 0xBEE9, 0xBEE6, 0xE9BB, 0xE9BA, 0xFFFD, 0xE9B9, 0xE9B4, 0xFFFD, -/* 1960 */ 0xE9B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEE7, 0xFFFD, 0xBEE4, 0xBEE8, -/* 1968 */ 0xE9B3, 0xBEE5, 0xE9B6, 0xE9B7, 0xE9BC, 0xFFFD, 0xFFFD, 0xE9B8, -/* 1970 */ 0xFFFD, 0xFFFD, 0xECF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0C7, 0xFFFD, -/* 1978 */ 0xEFDC, 0xC0C6, 0xEFDA, 0xEFDB, 0xC260, 0xC36E, 0xF24B, 0xFFFD, -/* 1980 */ 0xC36D, 0xFFFD, 0xFFFD, 0xF451, 0xF452, 0xFFFD, 0xC466, 0xFFFD, -/* 1988 */ 0xF450, 0xC4E4, 0xFFFD, 0xF7DF, 0xC5CE, 0xF8AA, 0xF8AB, 0xFFFD, -/* 1990 */ 0xA4EA, 0xFFFD, 0xA6B1, 0xA6B2, 0xA7F3, 0xFFFD, 0xCCD1, 0xAC54, -/* 1998 */ 0xAED1, 0xB1E4, 0xFFFD, 0xFFFD, 0xB0D2, 0xFFFD, 0xB4BF, 0xB4C0, -/* 19A0 */ 0xB3CC, 0xD9A9, 0xFFFD, 0xB77C, 0xE1FA, 0xE1F9, 0xFFFD, 0xFFFD, -/* 19A8 */ 0xA4EB, 0xA6B3, 0xCCD2, 0xAA42, 0xFFFD, 0xAA41, 0xFFFD, 0xCEF9, -/* 19B0 */ 0xCEFA, 0xFFFD, 0xD1D7, 0xD1D8, 0xAED2, 0xAED3, 0xFFFD, 0xAED4, -/* 19B8 */ 0xD5AF, 0xFFFD, 0xFFFD, 0xB1E6, 0xFFFD, 0xB4C2, 0xFFFD, 0xB4C1, -/* 19C0 */ 0xDDC8, 0xDF7A, 0xE1FB, 0xE9BD, 0xFFFD, 0xFFFD, 0xC261, 0xC467, -/* 19C8 */ 0xA4EC, 0xFFFD, 0xA5BC, 0xA5BD, 0xA5BB, 0xA5BE, 0xA5BA, 0xFFFD, -/* 19D0 */ 0xFFFD, 0xA6B6, 0xFFFD, 0xC9F6, 0xA6B5, 0xA6B7, 0xFFFD, 0xFFFD, -/* 19D8 */ 0xC9F1, 0xC9F0, 0xC9F3, 0xC9F2, 0xC9F5, 0xA6B4, 0xC9EF, 0xC9F4, -/* 19E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAFD, 0xA7FD, 0xCAFE, -/* 19E8 */ 0xCB43, 0xA7FC, 0xFFFD, 0xCB47, 0xCB42, 0xCB45, 0xA7F5, 0xA7F6, -/* 19F0 */ 0xA7F7, 0xA7F8, 0xFFFD, 0xA840, 0xFFFD, 0xCB41, 0xA7FA, 0xA841, -/* 19F8 */ 0xFFFD, 0xCB40, 0xCB46, 0xFFFD, 0xA7F9, 0xCB44, 0xA7FB, 0xA7F4, -/* 1A00 */ 0xA7FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A08 */ 0xFFFD, 0xFFFD, 0xAA57, 0xFFFD, 0xCCD4, 0xAA43, 0xFFFD, 0xAA4D, -/* 1A10 */ 0xAA4E, 0xAA46, 0xAA58, 0xAA48, 0xCCDC, 0xAA53, 0xCCD7, 0xAA49, -/* 1A18 */ 0xCCE6, 0xCCE7, 0xCCDF, 0xCCD8, 0xAA56, 0xCCE4, 0xAA51, 0xAA4F, -/* 1A20 */ 0xFFFD, 0xCCE5, 0xFFFD, 0xCCE3, 0xCCDB, 0xCCD3, 0xCCDA, 0xAA4A, -/* 1A28 */ 0xFFFD, 0xAA50, 0xFFFD, 0xAA44, 0xCCDE, 0xCCDD, 0xCCD5, 0xFFFD, -/* 1A30 */ 0xAA52, 0xCCE1, 0xCCD6, 0xAA55, 0xCCE8, 0xAA45, 0xFFFD, 0xAA4C, -/* 1A38 */ 0xCCD9, 0xCCE2, 0xAA54, 0xFFFD, 0xAA47, 0xAA4B, 0xFFFD, 0xCCE0, -/* 1A40 */ 0xCF5B, 0xAC5C, 0xAC69, 0xFFFD, 0xCF56, 0xCF4C, 0xAC62, 0xCF4A, -/* 1A48 */ 0xAC5B, 0xCF45, 0xAC65, 0xCF52, 0xCEFE, 0xCF41, 0xFFFD, 0xFFFD, -/* 1A50 */ 0xFFFD, 0xFFFD, 0xCF44, 0xCEFB, 0xCF51, 0xCF61, 0xAC60, 0xCF46, -/* 1A58 */ 0xCF58, 0xFFFD, 0xCEFD, 0xCF5F, 0xCF60, 0xCF63, 0xCF5A, 0xCF4B, -/* 1A60 */ 0xCF53, 0xAC66, 0xAC59, 0xAC61, 0xAC6D, 0xAC56, 0xAC58, 0xFFFD, -/* 1A68 */ 0xFFFD, 0xFFFD, 0xCF43, 0xAC6A, 0xAC63, 0xCF5D, 0xCF40, 0xAC6C, -/* 1A70 */ 0xAC67, 0xCF49, 0xFFFD, 0xFFFD, 0xAC6B, 0xCF50, 0xCF48, 0xAC64, -/* 1A78 */ 0xCF5C, 0xCF54, 0xFFFD, 0xAC5E, 0xCF62, 0xCF47, 0xAC5A, 0xCF59, -/* 1A80 */ 0xCF4F, 0xAC5F, 0xCF55, 0xAC57, 0xCEFC, 0xAC68, 0xAEE3, 0xAC5D, -/* 1A88 */ 0xCF4E, 0xCF4D, 0xCF42, 0xFFFD, 0xCF5E, 0xFFFD, 0xCF57, 0xFFFD, -/* 1A90 */ 0xFFFD, 0xAC55, 0xD1EC, 0xAEEA, 0xD1ED, 0xFFFD, 0xD1E1, 0xAEDF, -/* 1A98 */ 0xAEEB, 0xFFFD, 0xD1DA, 0xFFFD, 0xD1E3, 0xD1EB, 0xFFFD, 0xD1D9, -/* 1AA0 */ 0xD1F4, 0xAED5, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1F3, 0xD1EE, 0xFFFD, -/* 1AA8 */ 0xD1EF, 0xAEDD, 0xAEE8, 0xD1E5, 0xFFFD, 0xD1E6, 0xD1F0, 0xD1E7, -/* 1AB0 */ 0xFFFD, 0xD1E2, 0xD1DC, 0xD1DD, 0xD1EA, 0xD1E4, 0xFFFD, 0xFFFD, -/* 1AB8 */ 0xAED6, 0xAEDA, 0xD1F2, 0xD1DE, 0xAEE6, 0xAEE2, 0xFFFD, 0xFFFD, -/* 1AC0 */ 0xAEE5, 0xAEEC, 0xAEDB, 0xAEE7, 0xD1E9, 0xAEE9, 0xAED8, 0xFFFD, -/* 1AC8 */ 0xAED7, 0xD1DB, 0xFFFD, 0xD1DF, 0xAEE0, 0xD1F1, 0xD1E8, 0xD1E0, -/* 1AD0 */ 0xAEE4, 0xAEE1, 0xFFFD, 0xAED9, 0xAEDC, 0xD5C4, 0xFFFD, 0xD5B4, -/* 1AD8 */ 0xD5B5, 0xD5B9, 0xFFFD, 0xD5C8, 0xD5C5, 0xFFFD, 0xD5BE, 0xD5BD, -/* 1AE0 */ 0xB1ED, 0xD5C1, 0xD5D0, 0xD5B0, 0xFFFD, 0xD5D1, 0xD5C3, 0xD5D5, -/* 1AE8 */ 0xD5C9, 0xB1EC, 0xD5C7, 0xB1E7, 0xB1FC, 0xB1F2, 0xFFFD, 0xB1F6, -/* 1AF0 */ 0xB1F5, 0xD5B1, 0xFFFD, 0xD5CE, 0xD5D4, 0xD5CC, 0xD5D3, 0xFFFD, -/* 1AF8 */ 0xFFFD, 0xD5C0, 0xD5B2, 0xD5D2, 0xD5C2, 0xB1EA, 0xB1F7, 0xFFFD, -/* 1B00 */ 0xD5CB, 0xB1F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5CA, 0xD5B3, 0xB1F8, -/* 1B08 */ 0xFFFD, 0xB1FA, 0xD5CD, 0xB1FB, 0xB1E9, 0xD5BA, 0xD5CF, 0xFFFD, -/* 1B10 */ 0xFFFD, 0xB1EF, 0xB1F9, 0xD5BC, 0xD5C6, 0xD5B7, 0xD5BB, 0xB1F4, -/* 1B18 */ 0xD5B6, 0xB1E8, 0xB1F1, 0xB1EE, 0xD5BF, 0xAEDE, 0xD9C0, 0xB1EB, -/* 1B20 */ 0xB1F3, 0xFFFD, 0xD9C3, 0xD9D9, 0xD9CE, 0xB4D6, 0xFFFD, 0xB4D1, -/* 1B28 */ 0xD9BD, 0xB4D2, 0xD9CD, 0xFFFD, 0xD9C6, 0xD9D3, 0xB4CE, 0xD9AB, -/* 1B30 */ 0xD9D5, 0xB4C4, 0xD9B3, 0xB4C7, 0xB4C6, 0xFFFD, 0xB4D7, 0xFFFD, -/* 1B38 */ 0xD9AD, 0xD9CF, 0xD9D0, 0xB4C9, 0xB4C5, 0xD9BB, 0xFFFD, 0xB4D0, -/* 1B40 */ 0xD9B6, 0xFFFD, 0xD9D1, 0xB4CC, 0xD9C9, 0xD9D6, 0xD9B0, 0xD9B5, -/* 1B48 */ 0xD9AF, 0xFFFD, 0xB4CB, 0xD9C2, 0xDDDE, 0xD9B1, 0xB4CF, 0xD9BA, -/* 1B50 */ 0xD9D2, 0xB4CA, 0xD9B7, 0xD9B4, 0xD9C5, 0xB4CD, 0xB4C3, 0xB4D9, -/* 1B58 */ 0xD9C8, 0xD9C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B60 */ 0xD9AC, 0xB4C8, 0xD9D4, 0xD9BC, 0xD9BE, 0xFFFD, 0xD9CB, 0xD9CA, -/* 1B68 */ 0xD9AA, 0xB4D3, 0xB4D5, 0xD9B2, 0xD9B9, 0xD9C1, 0xB4D4, 0xD9B8, -/* 1B70 */ 0xD9C4, 0xD9D7, 0xFFFD, 0xD9CC, 0xD9D8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B78 */ 0xFFFD, 0xD9AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDF2, 0xB7A6, -/* 1B80 */ 0xFFFD, 0xDDF0, 0xDDDB, 0xDDE0, 0xDDD9, 0xFFFD, 0xDDEC, 0xDDCB, -/* 1B88 */ 0xDDD2, 0xFFFD, 0xDDEA, 0xDDF4, 0xDDDC, 0xFFFD, 0xDDCF, 0xDDE2, -/* 1B90 */ 0xDDE7, 0xDDD3, 0xFFFD, 0xDDE4, 0xDDD0, 0xFFFD, 0xFFFD, 0xDDD7, -/* 1B98 */ 0xDDD8, 0xB7A8, 0xDDEB, 0xDDE9, 0xFFFD, 0xDDCC, 0xDDEE, 0xFFFD, -/* 1BA0 */ 0xDDEF, 0xDDF1, 0xB7AC, 0xB7A4, 0xFFFD, 0xD5B8, 0xDDD4, 0xDDE6, -/* 1BA8 */ 0xDDD5, 0xB7A1, 0xB7B1, 0xDDED, 0xB7AF, 0xB7AB, 0xDDCA, 0xB7A3, -/* 1BB0 */ 0xFFFD, 0xDDCD, 0xB7B0, 0xFFFD, 0xDDDD, 0xDDC9, 0xFFFD, 0xB7A9, -/* 1BB8 */ 0xDDE1, 0xDDD1, 0xB7AA, 0xDDDA, 0xB77E, 0xB4D8, 0xDDE3, 0xD9BF, -/* 1BC0 */ 0xDDCE, 0xFFFD, 0xFFFD, 0xDDE8, 0xB7A5, 0xDDE5, 0xB7A2, 0xDDDF, -/* 1BC8 */ 0xB7AD, 0xDDD6, 0xDDF3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BD0 */ 0xFFFD, 0xB7A7, 0xDEC6, 0xFFFD, 0xFFFD, 0xB7AE, 0xFFFD, 0xFFFD, -/* 1BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE24A, 0xE248, 0xFFFD, 0xE25E, -/* 1BE0 */ 0xE246, 0xFFFD, 0xE258, 0xB77D, 0xBA5F, 0xE242, 0xE25D, 0xFFFD, -/* 1BE8 */ 0xE247, 0xE255, 0xBA64, 0xBA5D, 0xFFFD, 0xE25B, 0xFFFD, 0xE240, -/* 1BF0 */ 0xE25A, 0xFFFD, 0xBA6F, 0xE251, 0xE261, 0xBA6D, 0xE249, 0xBA5E, -/* 1BF8 */ 0xE24B, 0xE259, 0xBA67, 0xE244, 0xBA6B, 0xBA61, 0xE24D, 0xE243, -/* 1C00 */ 0xE1FC, 0xFFFD, 0xE257, 0xBA68, 0xE260, 0xE1FD, 0xBA65, 0xFFFD, -/* 1C08 */ 0xE253, 0xFFFD, 0xBA66, 0xE245, 0xE250, 0xE24C, 0xE24E, 0xFFFD, -/* 1C10 */ 0xBA60, 0xE25F, 0xBA6E, 0xE24F, 0xFFFD, 0xE262, 0xFFFD, 0xFFFD, -/* 1C18 */ 0xE1FE, 0xE254, 0xBA63, 0xBA6C, 0xBA6A, 0xE241, 0xE256, 0xBA69, -/* 1C20 */ 0xFFFD, 0xFFFD, 0xBA62, 0xE252, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C28 */ 0xE25C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C30 */ 0xFFFD, 0xE5D5, 0xFFFD, 0xE5D1, 0xE5CD, 0xE5E1, 0xE5DE, 0xBCCD, -/* 1C38 */ 0xFFFD, 0xFFFD, 0xE5E5, 0xE5D4, 0xBCD8, 0xE5DB, 0xFFFD, 0xFFFD, -/* 1C40 */ 0xE5D0, 0xE5DA, 0xBCD5, 0xE5EE, 0xFFFD, 0xE5EB, 0xE5DD, 0xE5CE, -/* 1C48 */ 0xFFFD, 0xFFFD, 0xE5E2, 0xE5E4, 0xBCD1, 0xE5D8, 0xE5D3, 0xE5CA, -/* 1C50 */ 0xBCCE, 0xBCD6, 0xFFFD, 0xE5E7, 0xBCD7, 0xE5CB, 0xE5ED, 0xE5E0, -/* 1C58 */ 0xE5E6, 0xBCD4, 0xFFFD, 0xFFFD, 0xE5E3, 0xFFFD, 0xE5EA, 0xFFFD, -/* 1C60 */ 0xBCD9, 0xFFFD, 0xBCD3, 0xE5DC, 0xE5CF, 0xE5EF, 0xE5CC, 0xE5E8, -/* 1C68 */ 0xBCD0, 0xFFFD, 0xE5D6, 0xFFFD, 0xE5D7, 0xBCCF, 0xBCCC, 0xE5D2, -/* 1C70 */ 0xBCD2, 0xFFFD, 0xBCCB, 0xFFFD, 0xE5E9, 0xE5EC, 0xE5D9, 0xE9CA, -/* 1C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C80 */ 0xFFFD, 0xE9C2, 0xFFFD, 0xE9BE, 0xBEF6, 0xFFFD, 0xFFFD, 0xBEEB, -/* 1C88 */ 0xBEF0, 0xBEEC, 0xE9CC, 0xE9D7, 0xBEEA, 0xE9C4, 0xE9CD, 0xE5DF, -/* 1C90 */ 0xE9CE, 0xFFFD, 0xFFFD, 0xBEF1, 0xFFFD, 0xE9DD, 0xBEF5, 0xBEF8, -/* 1C98 */ 0xE9C0, 0xFFFD, 0xBEF4, 0xFFFD, 0xE9DB, 0xE9DC, 0xE9D2, 0xE9D1, -/* 1CA0 */ 0xE9C9, 0xFFFD, 0xFFFD, 0xE9D3, 0xE9DA, 0xE9D9, 0xFFFD, 0xBEEF, -/* 1CA8 */ 0xBEED, 0xE9CB, 0xE9C8, 0xFFFD, 0xE9C5, 0xE9D8, 0xBEF7, 0xE9D6, -/* 1CB0 */ 0xBEF3, 0xBEF2, 0xFFFD, 0xE9D0, 0xFFFD, 0xE9BF, 0xE9C1, 0xE9C3, -/* 1CB8 */ 0xE9D5, 0xE9CF, 0xBEEE, 0xFFFD, 0xE9C6, 0xFFFD, 0xE9D4, 0xFFFD, -/* 1CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9C7, 0xFFFD, 0xFFFD, -/* 1CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0CF, 0xED45, 0xC0C8, -/* 1CD0 */ 0xECF5, 0xFFFD, 0xED41, 0xC0CA, 0xED48, 0xFFFD, 0xECFC, 0xFFFD, -/* 1CD8 */ 0xECF7, 0xFFFD, 0xFFFD, 0xED49, 0xECF3, 0xECFE, 0xFFFD, 0xC0D1, -/* 1CE0 */ 0xED44, 0xED4A, 0xECFD, 0xC0C9, 0xED40, 0xECF4, 0xC0D0, 0xFFFD, -/* 1CE8 */ 0xFFFD, 0xED47, 0xECF9, 0xC0CC, 0xFFFD, 0xECFB, 0xECF8, 0xC0D2, -/* 1CF0 */ 0xECFA, 0xC0CB, 0xC0CE, 0xED43, 0xECF6, 0xED46, 0xFFFD, 0xED42, -/* 1CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC263, 0xEFE7, 0xC268, 0xC269, 0xFFFD, -/* 1D00 */ 0xFFFD, 0xFFFD, 0xC262, 0xEFE6, 0xFFFD, 0xEFE3, 0xEFE4, 0xC266, -/* 1D08 */ 0xEFDE, 0xEFE2, 0xC265, 0xFFFD, 0xEFDF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D10 */ 0xFFFD, 0xC267, 0xC264, 0xFFFD, 0xEFDD, 0xEFE1, 0xEFE5, 0xFFFD, -/* 1D18 */ 0xFFFD, 0xFFFD, 0xF251, 0xF24E, 0xF257, 0xFFFD, 0xF256, 0xF254, -/* 1D20 */ 0xF24F, 0xFFFD, 0xC372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D28 */ 0xF250, 0xC371, 0xC0CD, 0xF253, 0xC370, 0xF258, 0xF252, 0xF24D, -/* 1D30 */ 0xEFE0, 0xFFFD, 0xFFFD, 0xFFFD, 0xC36F, 0xFFFD, 0xF24C, 0xF456, -/* 1D38 */ 0xFFFD, 0xF455, 0xF255, 0xC468, 0xFFFD, 0xF459, 0xF45A, 0xF454, -/* 1D40 */ 0xF458, 0xFFFD, 0xF453, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5D1, -/* 1D48 */ 0xF457, 0xC4E7, 0xC4E5, 0xF5CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5D2, -/* 1D50 */ 0xFFFD, 0xF5CE, 0xF5D0, 0xC4E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6E5, -/* 1D58 */ 0xF6E6, 0xC576, 0xF6E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7E2, 0xC5CF, -/* 1D60 */ 0xF7E0, 0xF7E1, 0xF8AC, 0xFFFD, 0xFFFD, 0xC656, 0xF8F3, 0xF8F1, -/* 1D68 */ 0xF8F2, 0xF8F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9BB, 0xFFFD, 0xA4ED, -/* 1D70 */ 0xA6B8, 0xFFFD, 0xAA59, 0xFFFD, 0xCCE9, 0xFFFD, 0xFFFD, 0xCF64, -/* 1D78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD1F5, 0xD1F7, 0xFFFD, 0xD1F6, 0xFFFD, -/* 1D80 */ 0xD1F8, 0xB1FD, 0xD5D7, 0xD1F9, 0xFFFD, 0xD5D6, 0xD5D8, 0xD5D9, -/* 1D88 */ 0xD9DA, 0xB4DB, 0xD9DB, 0xD9DD, 0xB4DC, 0xB4DA, 0xD9DC, 0xFFFD, -/* 1D90 */ 0xDDFA, 0xDDF8, 0xDDF7, 0xFFFD, 0xDDF6, 0xDDF5, 0xB7B2, 0xDDF9, -/* 1D98 */ 0xBA70, 0xE263, 0xE265, 0xBA71, 0xE264, 0xBCDB, 0xFFFD, 0xBCDA, -/* 1DA0 */ 0xE5F0, 0xFFFD, 0xFFFD, 0xE9DF, 0xE9DE, 0xE9E0, 0xFFFD, 0xFFFD, -/* 1DA8 */ 0xBEF9, 0xFFFD, 0xED4B, 0xC0D3, 0xFFFD, 0xEFE8, 0xC26A, 0xF259, -/* 1DB0 */ 0xC577, 0xA4EE, 0xA5BF, 0xA6B9, 0xA842, 0xAA5A, 0xAA5B, 0xFFFD, -/* 1DB8 */ 0xFFFD, 0xAC6E, 0xFFFD, 0xFFFD, 0xD1FA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DC0 */ 0xFFFD, 0xB7B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6D1, 0xBEFA, 0xC26B, -/* 1DC8 */ 0xA4EF, 0xFFFD, 0xA6BA, 0xFFFD, 0xFFFD, 0xCCEB, 0xAA5C, 0xCCEA, -/* 1DD0 */ 0xFFFD, 0xCF65, 0xAC6F, 0xCF66, 0xFFFD, 0xAC70, 0xFFFD, 0xD1FC, -/* 1DD8 */ 0xAEEE, 0xAEED, 0xFFFD, 0xD5DE, 0xD5DC, 0xD5DD, 0xD5DB, 0xFFFD, -/* 1DE0 */ 0xD5DA, 0xFFFD, 0xFFFD, 0xD9DE, 0xD9E1, 0xB4DE, 0xD9DF, 0xB4DD, -/* 1DE8 */ 0xD9E0, 0xFFFD, 0xDDFB, 0xFFFD, 0xFFFD, 0xE266, 0xE267, 0xE268, -/* 1DF0 */ 0xFFFD, 0xE5F3, 0xE5F2, 0xBCDC, 0xE5F1, 0xE5F4, 0xE9E1, 0xFFFD, -/* 1DF8 */ 0xFFFD, 0xE9E2, 0xE9E3, 0xFFFD, 0xED4C, 0xC0D4, 0xC26C, 0xF25A, -/* 1E00 */ 0xFFFD, 0xC4E8, 0xC95F, 0xFFFD, 0xAC71, 0xCF67, 0xAEEF, 0xFFFD, -/* 1E08 */ 0xFFFD, 0xB1FE, 0xFFFD, 0xB4DF, 0xD9E2, 0xFFFD, 0xB7B5, 0xB7B4, -/* 1E10 */ 0xFFFD, 0xFFFD, 0xE269, 0xE26A, 0xBCDD, 0xBCDE, 0xE9E5, 0xE9E4, -/* 1E18 */ 0xEFE9, 0xF7E3, 0xA4F0, 0xC960, 0xA5C0, 0xFFFD, 0xA843, 0xCB48, -/* 1E20 */ 0xFFFD, 0xAC72, 0xB7B6, 0xA4F1, 0xFFFD, 0xCF68, 0xAC73, 0xCF69, -/* 1E28 */ 0xFFFD, 0xC0D5, 0xA4F2, 0xFFFD, 0xFFFD, 0xCCEC, 0xFFFD, 0xCF6A, -/* 1E30 */ 0xFFFD, 0xD242, 0xD241, 0xD1FE, 0xFFFD, 0xD1FD, 0xD243, 0xD240, -/* 1E38 */ 0xFFFD, 0xFFFD, 0xB240, 0xB241, 0xFFFD, 0xFFFD, 0xB4E0, 0xD9E3, -/* 1E40 */ 0xFFFD, 0xD9E4, 0xD9E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xDE41, 0xDE42, -/* 1E48 */ 0xDE40, 0xFFFD, 0xDDFD, 0xDDFE, 0xB7B7, 0xE26B, 0xE5F7, 0xE5F6, -/* 1E50 */ 0xE5F5, 0xE5F8, 0xE9E7, 0xE9E6, 0xBEFB, 0xE9E8, 0xFFFD, 0xC0D6, -/* 1E58 */ 0xED4D, 0xFFFD, 0xEFEA, 0xF25B, 0xF6E7, 0xFFFD, 0xA4F3, 0xA5C2, -/* 1E60 */ 0xA5C1, 0xFFFD, 0xAA5D, 0xC961, 0xC97E, 0xA6BB, 0xFFFD, 0xC9F7, -/* 1E68 */ 0xCB49, 0xCB4A, 0xAA5E, 0xFFFD, 0xCCED, 0xFFFD, 0xAC74, 0xCF6B, -/* 1E70 */ 0xCF6C, 0xFFFD, 0xAEF0, 0xAEF4, 0xD244, 0xAEF3, 0xAEF1, 0xAEF2, -/* 1E78 */ 0xFFFD, 0xD5DF, 0xB242, 0xB4E3, 0xFFFD, 0xB4E1, 0xB4E2, 0xD9E6, -/* 1E80 */ 0xFFFD, 0xFFFD, 0xBA72, 0xA4F4, 0xFFFD, 0xC9A1, 0xFFFD, 0xA5C3, -/* 1E88 */ 0xFFFD, 0xFFFD, 0xC9A4, 0xFFFD, 0xFFFD, 0xA5C6, 0xC9A3, 0xA5C5, -/* 1E90 */ 0xA5C4, 0xA844, 0xC9A2, 0xFFFD, 0xFFFD, 0xC9F8, 0xFFFD, 0xFFFD, -/* 1E98 */ 0xFFFD, 0xC9FC, 0xC9FE, 0xCA40, 0xA6C5, 0xA6C6, 0xC9FB, 0xA6C1, -/* 1EA0 */ 0xFFFD, 0xC9F9, 0xFFFD, 0xC9FD, 0xA6C2, 0xFFFD, 0xA6BD, 0xFFFD, -/* 1EA8 */ 0xA6BE, 0xFFFD, 0xA6C4, 0xC9FA, 0xA6BC, 0xA845, 0xA6BF, 0xA6C0, -/* 1EB0 */ 0xA6C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xCB5B, 0xCB59, 0xCB4C, 0xA851, -/* 1EB8 */ 0xCB53, 0xA84C, 0xCB4D, 0xFFFD, 0xCB55, 0xFFFD, 0xCB52, 0xA84F, -/* 1EC0 */ 0xCB51, 0xA856, 0xCB5A, 0xA858, 0xFFFD, 0xA85A, 0xFFFD, 0xCB4B, -/* 1EC8 */ 0xFFFD, 0xA84D, 0xCB5C, 0xFFFD, 0xA854, 0xA857, 0xFFFD, 0xCD45, -/* 1ED0 */ 0xA847, 0xA85E, 0xA855, 0xCB4E, 0xA84A, 0xA859, 0xCB56, 0xA848, -/* 1ED8 */ 0xA849, 0xCD43, 0xCB4F, 0xA850, 0xA85B, 0xCB5D, 0xCB50, 0xA84E, -/* 1EE0 */ 0xFFFD, 0xA853, 0xCCEE, 0xA85C, 0xCB57, 0xA852, 0xFFFD, 0xA85D, -/* 1EE8 */ 0xA846, 0xCB54, 0xA84B, 0xCB58, 0xCD44, 0xAA6A, 0xAA7A, 0xCCF5, -/* 1EF0 */ 0xAA71, 0xFFFD, 0xCD4B, 0xAA62, 0xFFFD, 0xAA65, 0xCD42, 0xFFFD, -/* 1EF8 */ 0xCCF3, 0xCCF7, 0xAA6D, 0xAA6F, 0xCCFA, 0xAA76, 0xAA68, 0xAA66, -/* 1F00 */ 0xAA67, 0xAA75, 0xCD47, 0xAA70, 0xCCF9, 0xCCFB, 0xAA6E, 0xAA73, -/* 1F08 */ 0xCCFC, 0xCD4A, 0xFFFD, 0xAC75, 0xAA79, 0xFFFD, 0xAA63, 0xCD49, -/* 1F10 */ 0xFFFD, 0xCD4D, 0xCCF8, 0xCD4F, 0xCD40, 0xAA6C, 0xCCF4, 0xAA6B, -/* 1F18 */ 0xAA7D, 0xAA72, 0xFFFD, 0xCCF2, 0xCF75, 0xAA78, 0xAA7C, 0xCD41, -/* 1F20 */ 0xCD46, 0xFFFD, 0xAA7E, 0xAA77, 0xAA69, 0xAA5F, 0xFFFD, 0xAA64, -/* 1F28 */ 0xFFFD, 0xCCF6, 0xAA60, 0xCD4E, 0xFFFD, 0xCCF0, 0xCCEF, 0xCCFD, -/* 1F30 */ 0xCCF1, 0xAA7B, 0xAEF5, 0xAA74, 0xCCFE, 0xAA61, 0xFFFD, 0xACA6, -/* 1F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCD4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F40 */ 0xFFFD, 0xFFFD, 0xCF7C, 0xCFA1, 0xFFFD, 0xCFA4, 0xCF77, 0xFFFD, -/* 1F48 */ 0xFFFD, 0xCFA7, 0xCFAA, 0xCFAC, 0xCF74, 0xAC76, 0xAC7B, 0xD249, -/* 1F50 */ 0xACAD, 0xCFA5, 0xCFAD, 0xCF7B, 0xCF73, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F58 */ 0xD264, 0xAC7E, 0xCFA2, 0xCF78, 0xCF7A, 0xACA5, 0xFFFD, 0xCF7D, -/* 1F60 */ 0xAC7D, 0xCF70, 0xCFA8, 0xFFFD, 0xCFAB, 0xFFFD, 0xFFFD, 0xAC7A, -/* 1F68 */ 0xFFFD, 0xACA8, 0xCF6D, 0xACAA, 0xAC78, 0xACAE, 0xCFA9, 0xCF6F, -/* 1F70 */ 0xACAB, 0xD25E, 0xCD48, 0xAC7C, 0xAC77, 0xCF76, 0xCF6E, 0xACAC, -/* 1F78 */ 0xACA4, 0xCFA3, 0xACA9, 0xACA7, 0xCF79, 0xACA1, 0xCF71, 0xACA2, -/* 1F80 */ 0xACA3, 0xCF72, 0xCFA6, 0xAC79, 0xCF7E, 0xD24C, 0xAEFD, 0xAF43, -/* 1F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD255, 0xD25B, 0xD257, 0xD24A, 0xD24D, -/* 1F90 */ 0xD246, 0xD247, 0xAF4A, 0xAEFA, 0xD256, 0xD25F, 0xAF45, 0xAEF6, -/* 1F98 */ 0xFFFD, 0xAF40, 0xD24E, 0xAF42, 0xD24F, 0xD259, 0xFFFD, 0xFFFD, -/* 1FA0 */ 0xFFFD, 0xAF44, 0xD268, 0xD248, 0xAEFC, 0xAEFB, 0xAF48, 0xD245, -/* 1FA8 */ 0xD266, 0xD25A, 0xD267, 0xD261, 0xD253, 0xD262, 0xFFFD, 0xD25C, -/* 1FB0 */ 0xD265, 0xD263, 0xAF49, 0xD254, 0xAEF9, 0xAEF8, 0xAF41, 0xAF47, -/* 1FB8 */ 0xD260, 0xAF46, 0xD251, 0xB243, 0xFFFD, 0xD269, 0xD250, 0xD24B, -/* 1FC0 */ 0xAEFE, 0xAF4B, 0xAEF7, 0xFFFD, 0xD258, 0xD25D, 0xB265, 0xD5E1, -/* 1FC8 */ 0xD5E5, 0xFFFD, 0xB252, 0xB250, 0xFFFD, 0xFFFD, 0xB247, 0xD5E3, -/* 1FD0 */ 0xD5E2, 0xB25B, 0xFFFD, 0xD5E8, 0xB255, 0xFFFD, 0xD5FA, 0xD647, -/* 1FD8 */ 0xB244, 0xD5F7, 0xD5F0, 0xB267, 0xD5E0, 0xFFFD, 0xD5FC, 0xFFFD, -/* 1FE0 */ 0xB264, 0xB258, 0xB263, 0xB24E, 0xD5EC, 0xD5FE, 0xD5F6, 0xB24F, -/* 1FE8 */ 0xB249, 0xD645, 0xFFFD, 0xD5FD, 0xD640, 0xB251, 0xB259, 0xD642, -/* 1FF0 */ 0xD5EA, 0xD5FB, 0xD5EF, 0xD644, 0xB25E, 0xB246, 0xB25C, 0xD5F4, -/* 1FF8 */ 0xD5F2, 0xD5F3, 0xB253, 0xD5EE, 0xD5ED, 0xB248, 0xD5E7, 0xD646, -/* 2000 */ 0xB24A, 0xD5F1, 0xB268, 0xFFFD, 0xB262, 0xD5E6, 0xB25F, 0xB25D, -/* 2008 */ 0xB266, 0xD5F8, 0xB261, 0xD252, 0xD5F9, 0xB260, 0xD641, 0xB245, -/* 2010 */ 0xD5F5, 0xB257, 0xD5E9, 0xB256, 0xFFFD, 0xB254, 0xB24C, 0xB24B, -/* 2018 */ 0xD9E7, 0xD643, 0xFFFD, 0xFFFD, 0xD5EB, 0xFFFD, 0xFFFD, 0xD9FC, -/* 2020 */ 0xFFFD, 0xB24D, 0xB541, 0xB25A, 0xB4EE, 0xD9F6, 0xB4FC, 0xFFFD, -/* 2028 */ 0xD9EA, 0xB4EB, 0xB4E7, 0xDA49, 0xB4ED, 0xB4F1, 0xB4EC, 0xB4F5, -/* 2030 */ 0xDA4D, 0xDA44, 0xFFFD, 0xFFFD, 0xD9F1, 0xB4FA, 0xB4F4, 0xD9FD, -/* 2038 */ 0xB4E4, 0xDA4A, 0xDA43, 0xB4E8, 0xD9F7, 0xB4F7, 0xDA55, 0xDA56, -/* 2040 */ 0xFFFD, 0xB4E5, 0xDA48, 0xB4F9, 0xD9FB, 0xD9ED, 0xD9EE, 0xB4FD, -/* 2048 */ 0xD9F2, 0xD9F9, 0xD9F3, 0xFFFD, 0xB4FB, 0xB544, 0xD9EF, 0xD9E8, -/* 2050 */ 0xD9E9, 0xFFFD, 0xD9EB, 0xB4EA, 0xD9F8, 0xFFFD, 0xB4F8, 0xB542, -/* 2058 */ 0xFFFD, 0xFFFD, 0xD9FA, 0xDA53, 0xDA4B, 0xB4E6, 0xDA51, 0xB4F2, -/* 2060 */ 0xFFFD, 0xB4F0, 0xFFFD, 0xDA57, 0xB4EF, 0xDA41, 0xD9F4, 0xD9FE, -/* 2068 */ 0xB547, 0xDA45, 0xDA42, 0xD9F0, 0xB543, 0xDA4F, 0xDA4C, 0xDA54, -/* 2070 */ 0xB4E9, 0xDA40, 0xB546, 0xFFFD, 0xDA47, 0xFFFD, 0xFFFD, 0xB4F3, -/* 2078 */ 0xB4F6, 0xFFFD, 0xDA46, 0xB545, 0xD9F5, 0xD5E4, 0xFFFD, 0xFFFD, -/* 2080 */ 0xDA50, 0xDA4E, 0xDA52, 0xD9EC, 0xB540, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2088 */ 0xDE61, 0xDE60, 0xDE46, 0xB7BD, 0xFFFD, 0xDE5F, 0xDE49, 0xDE4A, -/* 2090 */ 0xFFFD, 0xB7C7, 0xDE68, 0xB7C2, 0xDE5E, 0xFFFD, 0xDE43, 0xB7C8, -/* 2098 */ 0xB7BE, 0xDE52, 0xDE48, 0xDE4B, 0xDE63, 0xB7B8, 0xDE6A, 0xDE62, -/* 20A0 */ 0xB7C1, 0xDE57, 0xB7CC, 0xFFFD, 0xFFFD, 0xB7CB, 0xB7C5, 0xFFFD, -/* 20A8 */ 0xFFFD, 0xDE69, 0xB7B9, 0xDE55, 0xDE4C, 0xDE59, 0xDE65, 0xB7CD, -/* 20B0 */ 0xFFFD, 0xB7BB, 0xDE54, 0xFFFD, 0xDE4D, 0xB7C4, 0xFFFD, 0xB7C3, -/* 20B8 */ 0xDE50, 0xDE5A, 0xDE64, 0xDE47, 0xDE51, 0xB7BC, 0xDE5B, 0xB7C9, -/* 20C0 */ 0xB7C0, 0xDE4E, 0xB7BF, 0xDE45, 0xDE53, 0xDE67, 0xB4FE, 0xBAB0, -/* 20C8 */ 0xDE56, 0xE26C, 0xDE58, 0xDE66, 0xB7C6, 0xDE4F, 0xB7BA, 0xB7CA, -/* 20D0 */ 0xBCF0, 0xDE44, 0xFFFD, 0xDE5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xDE5C, -/* 20D8 */ 0xE2AA, 0xBAAD, 0xE27D, 0xE2A4, 0xBAA2, 0xFFFD, 0xE26E, 0xBAAF, -/* 20E0 */ 0xFFFD, 0xBA77, 0xE26D, 0xE2B0, 0xBAB1, 0xE271, 0xE2A3, 0xFFFD, -/* 20E8 */ 0xE273, 0xE2B3, 0xE2AF, 0xBA75, 0xBAA1, 0xE653, 0xBAAE, 0xBA7D, -/* 20F0 */ 0xE26F, 0xFFFD, 0xE2AE, 0xBAA3, 0xE2AB, 0xE2B8, 0xE275, 0xE27E, -/* 20F8 */ 0xFFFD, 0xFFFD, 0xE2B6, 0xE2AC, 0xBA7C, 0xFFFD, 0xFFFD, 0xE27C, -/* 2100 */ 0xBA76, 0xBA74, 0xBAA8, 0xFFFD, 0xFFFD, 0xE27A, 0xE277, 0xE278, -/* 2108 */ 0xFFFD, 0xE2B2, 0xFFFD, 0xE2B7, 0xE2B5, 0xBA7A, 0xE2B9, 0xBA7E, -/* 2110 */ 0xBAA7, 0xFFFD, 0xE270, 0xE5FA, 0xE279, 0xFFFD, 0xBA78, 0xBAAC, -/* 2118 */ 0xBAA9, 0xBA7B, 0xE2A5, 0xE274, 0xBAAA, 0xE2A7, 0xBAA4, 0xBAA6, -/* 2120 */ 0xBA73, 0xFFFD, 0xE2A9, 0xE2A1, 0xE272, 0xBAA5, 0xE2B1, 0xE2B4, -/* 2128 */ 0xE27B, 0xE2A8, 0xFFFD, 0xBA79, 0xBCDF, 0xE2A6, 0xE5F9, 0xFFFD, -/* 2130 */ 0xE2AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE276, 0xE644, 0xE64E, 0xBCE2, 0xE64D, -/* 2140 */ 0xE659, 0xBCE4, 0xE64B, 0xFFFD, 0xE64F, 0xBCEF, 0xFFFD, 0xE646, -/* 2148 */ 0xBCE7, 0xFFFD, 0xE652, 0xE9F0, 0xBCF3, 0xBCF2, 0xE654, 0xE643, -/* 2150 */ 0xE65E, 0xBCED, 0xFFFD, 0xBCE3, 0xE657, 0xFFFD, 0xE65B, 0xE660, -/* 2158 */ 0xE655, 0xE649, 0xBCE6, 0xBCE9, 0xBCF1, 0xBCEC, 0xFFFD, 0xE64C, -/* 2160 */ 0xE2A2, 0xFFFD, 0xFFFD, 0xE648, 0xE65F, 0xBCE8, 0xFFFD, 0xBCEB, -/* 2168 */ 0xE661, 0xBCE0, 0xE656, 0xE5FB, 0xE65C, 0xC0DF, 0xFFFD, 0xE64A, -/* 2170 */ 0xFFFD, 0xBCE1, 0xE645, 0xBCE5, 0xE5FC, 0xBAAB, 0xE641, 0xFFFD, -/* 2178 */ 0xE65A, 0xE642, 0xE640, 0xBCEA, 0xFFFD, 0xE658, 0xFFFD, 0xE5FE, -/* 2180 */ 0xE651, 0xE650, 0xE65D, 0xE647, 0xBCEE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9F3, 0xFFFD, 0xBF49, 0xBEFE, 0xEA40, -/* 2190 */ 0xE9EB, 0xBF41, 0xE9F7, 0xBF48, 0xBF43, 0xE9F5, 0xED4F, 0xE9FB, -/* 2198 */ 0xEA42, 0xE9FA, 0xE9E9, 0xE9F8, 0xEA44, 0xEA46, 0xBEFD, 0xEA45, -/* 21A0 */ 0xBF44, 0xBF4A, 0xFFFD, 0xBF47, 0xFFFD, 0xE9FE, 0xBF46, 0xE9F9, -/* 21A8 */ 0xFFFD, 0xE9ED, 0xE9F2, 0xFFFD, 0xE9FD, 0xBF45, 0xBF42, 0xBEFC, -/* 21B0 */ 0xBF40, 0xE9F1, 0xFFFD, 0xE5FD, 0xE9EC, 0xE9EF, 0xEA41, 0xE9F4, -/* 21B8 */ 0xE9EA, 0xED4E, 0xEA43, 0xE9EE, 0xE9FC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21C0 */ 0xFFFD, 0xED51, 0xC0E3, 0xFFFD, 0xFFFD, 0xC0D7, 0xFFFD, 0xFFFD, -/* 21C8 */ 0xC0DB, 0xED53, 0xED59, 0xED57, 0xC0D9, 0xC0DA, 0xC0E1, 0xED5A, -/* 21D0 */ 0xED52, 0xC0DC, 0xFFFD, 0xED56, 0xED55, 0xED5B, 0xC0E2, 0xFFFD, -/* 21D8 */ 0xC0DD, 0xC0E0, 0xED54, 0xC0E4, 0xC0DE, 0xC0E5, 0xC0D8, 0xED58, -/* 21E0 */ 0xFFFD, 0xED50, 0xFFFD, 0xFFFD, 0xEFF7, 0xFFFD, 0xFFFD, 0xC271, -/* 21E8 */ 0xEFF4, 0xEFF6, 0xFFFD, 0xC26F, 0xEFF2, 0xEFF3, 0xEFEE, 0xFFFD, -/* 21F0 */ 0xFFFD, 0xE9F6, 0xEFEF, 0xC270, 0xEFEB, 0xFFFD, 0xC26D, 0xEFF8, -/* 21F8 */ 0xC26E, 0xEFEC, 0xEFED, 0xEFF1, 0xC273, 0xFFFD, 0xC272, 0xFFFD, -/* 2200 */ 0xFFFD, 0xEFF0, 0xC378, 0xF25F, 0xF265, 0xC379, 0xF25C, 0xC376, -/* 2208 */ 0xC373, 0xF267, 0xC377, 0xFFFD, 0xC374, 0xF25E, 0xF261, 0xF262, -/* 2210 */ 0xF263, 0xF266, 0xFFFD, 0xEFF5, 0xF25D, 0xC375, 0xF264, 0xF268, -/* 2218 */ 0xF260, 0xFFFD, 0xFFFD, 0xFFFD, 0xF45D, 0xC46A, 0xF460, 0xC46B, -/* 2220 */ 0xF468, 0xF45F, 0xF45C, 0xFFFD, 0xF45E, 0xF462, 0xF465, 0xF464, -/* 2228 */ 0xF467, 0xF45B, 0xFFFD, 0xC469, 0xF463, 0xF466, 0xF469, 0xF461, -/* 2230 */ 0xF5D3, 0xF5D4, 0xF5D8, 0xF5D9, 0xFFFD, 0xF5D6, 0xF5D7, 0xF5D5, -/* 2238 */ 0xFFFD, 0xC4E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC578, 0xF6EB, -/* 2240 */ 0xFFFD, 0xFFFD, 0xF6E8, 0xF6E9, 0xF6EA, 0xC579, 0xFFFD, 0xF7E5, -/* 2248 */ 0xF7E4, 0xFFFD, 0xF8AF, 0xC5F4, 0xF8AD, 0xF8B0, 0xF8AE, 0xF8F5, -/* 2250 */ 0xC657, 0xC665, 0xF9A3, 0xF96C, 0xFFFD, 0xF9A2, 0xF9D0, 0xF9D1, -/* 2258 */ 0xA4F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA6C7, 0xCA41, 0xFFFD, -/* 2260 */ 0xFFFD, 0xCB5E, 0xFFFD, 0xA85F, 0xFFFD, 0xA862, 0xFFFD, 0xCB5F, -/* 2268 */ 0xFFFD, 0xA860, 0xA861, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCD58, -/* 2270 */ 0xCD5A, 0xCD55, 0xCD52, 0xCD54, 0xFFFD, 0xFFFD, 0xFFFD, 0xAAA4, -/* 2278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xAAA2, 0xFFFD, 0xFFFD, 0xCD56, 0xAAA3, -/* 2280 */ 0xCD53, 0xCD50, 0xAAA1, 0xCD57, 0xFFFD, 0xCD51, 0xAAA5, 0xCD59, -/* 2288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFAF, 0xFFFD, 0xCFB3, 0xFFFD, -/* 2290 */ 0xFFFD, 0xACB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFB6, 0xFFFD, -/* 2298 */ 0xACAF, 0xACB2, 0xACB4, 0xACB6, 0xACB3, 0xCFB2, 0xCFB1, 0xFFFD, -/* 22A0 */ 0xACB1, 0xCFB4, 0xCFB5, 0xFFFD, 0xCFAE, 0xACB5, 0xFFFD, 0xACB0, -/* 22A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCFB0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22B0 */ 0xFFFD, 0xFFFD, 0xD277, 0xD278, 0xD279, 0xAF50, 0xFFFD, 0xAF4C, -/* 22B8 */ 0xD26E, 0xFFFD, 0xD276, 0xD27B, 0xAF51, 0xFFFD, 0xD26C, 0xD272, -/* 22C0 */ 0xD26B, 0xD275, 0xFFFD, 0xFFFD, 0xD271, 0xAF4D, 0xAF4F, 0xD27A, -/* 22C8 */ 0xFFFD, 0xD26A, 0xD26D, 0xD273, 0xFFFD, 0xD274, 0xD27C, 0xD270, -/* 22D0 */ 0xFFFD, 0xAF4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB26D, 0xD64E, 0xFFFD, 0xFFFD, -/* 22E0 */ 0xD650, 0xD64C, 0xFFFD, 0xD658, 0xD64A, 0xD657, 0xB269, 0xD648, -/* 22E8 */ 0xDA5B, 0xD652, 0xB26C, 0xFFFD, 0xD653, 0xD656, 0xFFFD, 0xD65A, -/* 22F0 */ 0xFFFD, 0xD64F, 0xFFFD, 0xD654, 0xFFFD, 0xFFFD, 0xB26A, 0xB26B, -/* 22F8 */ 0xD659, 0xD64D, 0xD649, 0xD65B, 0xFFFD, 0xD651, 0xFFFD, 0xFFFD, -/* 2300 */ 0xD655, 0xFFFD, 0xFFFD, 0xFFFD, 0xD64B, 0xFFFD, 0xB548, 0xB549, -/* 2308 */ 0xDA65, 0xB54F, 0xFFFD, 0xDA59, 0xDA62, 0xDA58, 0xB54C, 0xDA60, -/* 2310 */ 0xDA5E, 0xFFFD, 0xDA5F, 0xB54A, 0xFFFD, 0xDA63, 0xFFFD, 0xFFFD, -/* 2318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDA5C, 0xDA5A, 0xB54B, 0xDA5D, 0xDA61, -/* 2320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB54D, 0xFFFD, 0xFFFD, 0xFFFD, 0xDA64, -/* 2328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDE70, 0xDE77, -/* 2330 */ 0xDE79, 0xDEA1, 0xFFFD, 0xB7DA, 0xDE6B, 0xFFFD, 0xB7D2, 0xFFFD, -/* 2338 */ 0xDE7A, 0xB7D7, 0xDEA2, 0xB7CE, 0xFFFD, 0xDE7D, 0xFFFD, 0xDE6D, -/* 2340 */ 0xDE7E, 0xDE6C, 0xFFFD, 0xB7DC, 0xFFFD, 0xDE78, 0xB7CF, 0xDEA3, -/* 2348 */ 0xFFFD, 0xB7D4, 0xDE71, 0xB7D9, 0xDE7C, 0xDE6F, 0xDE76, 0xDE72, -/* 2350 */ 0xDE6E, 0xB7D1, 0xB7D8, 0xB7D6, 0xB7D3, 0xB7DB, 0xB7D0, 0xDE75, -/* 2358 */ 0xFFFD, 0xB7D5, 0xFFFD, 0xB54E, 0xFFFD, 0xDE7B, 0xFFFD, 0xDE73, -/* 2360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDE74, 0xFFFD, 0xFFFD, -/* 2368 */ 0xE2C1, 0xFFFD, 0xBAB4, 0xFFFD, 0xFFFD, 0xE2BD, 0xE2C3, 0xE2BF, -/* 2370 */ 0xFFFD, 0xBAB6, 0xE2BE, 0xE2C2, 0xE2BA, 0xFFFD, 0xE2BC, 0xBAB5, -/* 2378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C0, 0xE2BB, 0xFFFD, 0xBAB7, -/* 2380 */ 0xFFFD, 0xBAB2, 0xFFFD, 0xFFFD, 0xE2C4, 0xFFFD, 0xBAB3, 0xE667, -/* 2388 */ 0xE664, 0xE670, 0xE66A, 0xE66C, 0xBCF4, 0xE666, 0xE66E, 0xFFFD, -/* 2390 */ 0xFFFD, 0xE66D, 0xE66B, 0xFFFD, 0xE671, 0xBCF7, 0xE668, 0xE66F, -/* 2398 */ 0xFFFD, 0xBCF5, 0xFFFD, 0xFFFD, 0xE663, 0xE665, 0xBCF6, 0xE662, -/* 23A0 */ 0xE672, 0xFFFD, 0xE669, 0xFFFD, 0xFFFD, 0xEA4A, 0xBF51, 0xFFFD, -/* 23A8 */ 0xFFFD, 0xEA55, 0xEA53, 0xBF4B, 0xEA49, 0xEA4C, 0xEA4D, 0xEA48, -/* 23B0 */ 0xBF55, 0xBF56, 0xEA47, 0xEA56, 0xEA51, 0xBF4F, 0xBF4C, 0xEA50, -/* 23B8 */ 0xEA4E, 0xFFFD, 0xFFFD, 0xBF52, 0xEA52, 0xBF4D, 0xFFFD, 0xBF4E, -/* 23C0 */ 0xFFFD, 0xEA4F, 0xBF50, 0xEA4B, 0xFFFD, 0xEA54, 0xBF53, 0xEA57, -/* 23C8 */ 0xEA58, 0xBF54, 0xFFFD, 0xFFFD, 0xC0E7, 0xC0EE, 0xED5C, 0xED62, -/* 23D0 */ 0xFFFD, 0xED60, 0xC0EA, 0xC0E9, 0xC0E6, 0xED5E, 0xFFFD, 0xFFFD, -/* 23D8 */ 0xFFFD, 0xC0EC, 0xC0EB, 0xC0E8, 0xFFFD, 0xED61, 0xED5D, 0xED5F, -/* 23E0 */ 0xFFFD, 0xC0ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xC277, 0xEFFB, 0xFFFD, -/* 23E8 */ 0xC274, 0xC275, 0xEFFD, 0xC276, 0xEFFA, 0xFFFD, 0xEFF9, 0xF26C, -/* 23F0 */ 0xEFFC, 0xFFFD, 0xF26D, 0xC37A, 0xF26B, 0xFFFD, 0xFFFD, 0xF26A, -/* 23F8 */ 0xFFFD, 0xF269, 0xC37B, 0xFFFD, 0xFFFD, 0xC46C, 0xFFFD, 0xFFFD, -/* 2400 */ 0xF46A, 0xF46B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5DC, 0xF5DB, -/* 2408 */ 0xC4EA, 0xFFFD, 0xF5DA, 0xF6EC, 0xF6ED, 0xFFFD, 0xFFFD, 0xF7E6, -/* 2410 */ 0xF8B1, 0xFFFD, 0xFFFD, 0xF8F6, 0xF9BC, 0xC679, 0xF9C6, 0xA4F6, -/* 2418 */ 0xFFFD, 0xAAA6, 0xAAA7, 0xFFFD, 0xFFFD, 0xACB8, 0xFFFD, 0xFFFD, -/* 2420 */ 0xFFFD, 0xFFFD, 0xC0EF, 0xA4F7, 0xFFFD, 0xAAA8, 0xAF52, 0xB7DD, -/* 2428 */ 0xA4F8, 0xFFFD, 0xB26E, 0xBAB8, 0xC962, 0xFFFD, 0xCFB7, 0xD27D, -/* 2430 */ 0xFFFD, 0xE2C5, 0xFFFD, 0xC0F0, 0xA4F9, 0xAAA9, 0xCFB8, 0xCFB9, -/* 2438 */ 0xDA66, 0xB550, 0xFFFD, 0xFFFD, 0xDEA4, 0xFFFD, 0xFFFD, 0xB7DE, -/* 2440 */ 0xE2C6, 0xFFFD, 0xFFFD, 0xBCF8, 0xFFFD, 0xC37C, 0xA4FA, 0xDA67, -/* 2448 */ 0xA4FB, 0xFFFD, 0xA6C9, 0xCA42, 0xA6C8, 0xA865, 0xA864, 0xA863, -/* 2450 */ 0xCB60, 0xFFFD, 0xFFFD, 0xFFFD, 0xAAAA, 0xFFFD, 0xAAAB, 0xCD5B, -/* 2458 */ 0xFFFD, 0xCFBA, 0xFFFD, 0xCFBD, 0xACBA, 0xCFBB, 0xFFFD, 0xACB9, -/* 2460 */ 0xCFBC, 0xACBB, 0xFFFD, 0xD2A2, 0xD2A1, 0xD27E, 0xAF53, 0xFFFD, -/* 2468 */ 0xD65D, 0xD65E, 0xB26F, 0xD65C, 0xD65F, 0xB552, 0xB270, 0xFFFD, -/* 2470 */ 0xFFFD, 0xB551, 0xDA6B, 0xDA6A, 0xFFFD, 0xDA68, 0xDA69, 0xFFFD, -/* 2478 */ 0xDA6C, 0xDEA6, 0xDEA5, 0xDEA9, 0xFFFD, 0xDEA8, 0xDEA7, 0xBAB9, -/* 2480 */ 0xE2C9, 0xFFFD, 0xE2C8, 0xBABA, 0xE2C7, 0xE673, 0xFFFD, 0xE674, -/* 2488 */ 0xBCF9, 0xFFFD, 0xEA59, 0xEA5A, 0xFFFD, 0xFFFD, 0xF272, 0xC37D, -/* 2490 */ 0xF271, 0xF270, 0xF26E, 0xF26F, 0xC4EB, 0xF46C, 0xF6EE, 0xF8F7, -/* 2498 */ 0xFFFD, 0xA4FC, 0xFFFD, 0xC9A5, 0xA5C7, 0xC9A6, 0xFFFD, 0xFFFD, -/* 24A0 */ 0xFFFD, 0xCA43, 0xCA44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCB66, -/* 24A8 */ 0xFFFD, 0xFFFD, 0xCB62, 0xFFFD, 0xCB61, 0xAAAC, 0xCB65, 0xA867, -/* 24B0 */ 0xCB63, 0xA866, 0xCB67, 0xCB64, 0xFFFD, 0xFFFD, 0xCD5F, 0xCFBE, -/* 24B8 */ 0xCD5D, 0xCD64, 0xFFFD, 0xAAAD, 0xFFFD, 0xAAB0, 0xCD65, 0xCD61, -/* 24C0 */ 0xFFFD, 0xCD62, 0xFFFD, 0xCD5C, 0xAAAF, 0xCD5E, 0xAAAE, 0xCD63, -/* 24C8 */ 0xFFFD, 0xCD60, 0xFFFD, 0xFFFD, 0xCFC2, 0xACBD, 0xACBE, 0xFFFD, -/* 24D0 */ 0xCFC5, 0xCFBF, 0xFFFD, 0xCFC4, 0xFFFD, 0xCFC0, 0xACBC, 0xCFC3, -/* 24D8 */ 0xCFC1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24E0 */ 0xD2A8, 0xD2A5, 0xFFFD, 0xD2A7, 0xAF58, 0xAF57, 0xAF55, 0xD2A4, -/* 24E8 */ 0xD2A9, 0xAF54, 0xAF56, 0xD2A6, 0xD667, 0xD2A3, 0xD2AA, 0xFFFD, -/* 24F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD662, 0xD666, 0xFFFD, 0xD665, -/* 24F8 */ 0xDA6E, 0xDA79, 0xFFFD, 0xFFFD, 0xD668, 0xFFFD, 0xD663, 0xDA6D, -/* 2500 */ 0xB274, 0xFFFD, 0xFFFD, 0xB273, 0xD661, 0xD664, 0xB275, 0xFFFD, -/* 2508 */ 0xB272, 0xB271, 0xD660, 0xD669, 0xFFFD, 0xFFFD, 0xFFFD, 0xDA70, -/* 2510 */ 0xDA77, 0xFFFD, 0xB554, 0xDA76, 0xDA73, 0xFFFD, 0xB556, 0xFFFD, -/* 2518 */ 0xFFFD, 0xFFFD, 0xDA75, 0xFFFD, 0xFFFD, 0xDA6F, 0xDA71, 0xDA74, -/* 2520 */ 0xDA72, 0xB555, 0xDA78, 0xB553, 0xB7DF, 0xFFFD, 0xFFFD, 0xDEAD, -/* 2528 */ 0xDEAC, 0xDEAA, 0xFFFD, 0xB7E2, 0xB7E1, 0xDEAE, 0xFFFD, 0xDEAB, -/* 2530 */ 0xE2CA, 0xBABB, 0xB7E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEB0, 0xDEAF, -/* 2538 */ 0xFFFD, 0xE2CD, 0xE2CB, 0xBCFA, 0xFFFD, 0xBABC, 0xE2CC, 0xE676, -/* 2540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCFB, 0xE675, 0xE67E, 0xE67D, -/* 2548 */ 0xE67B, 0xFFFD, 0xE67A, 0xE677, 0xE678, 0xE679, 0xE67C, 0xE6A1, -/* 2550 */ 0xFFFD, 0xFFFD, 0xEA5F, 0xEA5C, 0xEA5D, 0xBF57, 0xEA5B, 0xEA61, -/* 2558 */ 0xEA60, 0xEA5E, 0xFFFD, 0xED64, 0xED65, 0xC0F1, 0xFFFD, 0xC0F2, -/* 2560 */ 0xED63, 0xFFFD, 0xC279, 0xEFFE, 0xC278, 0xC37E, 0xFFFD, 0xC3A1, -/* 2568 */ 0xC46D, 0xF46E, 0xF46D, 0xF5DD, 0xF6EF, 0xC57A, 0xF7E8, 0xF7E7, -/* 2570 */ 0xF7E9, 0xA5C8, 0xCFC6, 0xAF59, 0xB276, 0xD66A, 0xA5C9, 0xC9A7, -/* 2578 */ 0xA4FD, 0xFFFD, 0xFFFD, 0xCA45, 0xFFFD, 0xFFFD, 0xFFFD, 0xCB6C, -/* 2580 */ 0xCB6A, 0xCB6B, 0xCB68, 0xA868, 0xCB69, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2588 */ 0xFFFD, 0xFFFD, 0xCD6D, 0xFFFD, 0xAAB3, 0xCD6B, 0xCD67, 0xCD6A, -/* 2590 */ 0xFFFD, 0xCD66, 0xAAB5, 0xCD69, 0xFFFD, 0xAAB2, 0xAAB1, 0xFFFD, -/* 2598 */ 0xAAB4, 0xCD6C, 0xCD68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xACC2, -/* 25A0 */ 0xACC5, 0xCFCE, 0xCFCD, 0xCFCC, 0xACBF, 0xCFD5, 0xCFCB, 0xFFFD, -/* 25A8 */ 0xACC1, 0xD2AF, 0xFFFD, 0xCFD2, 0xCFD0, 0xACC4, 0xFFFD, 0xCFC8, -/* 25B0 */ 0xCFD3, 0xFFFD, 0xCFCA, 0xCFD4, 0xCFD1, 0xCFC9, 0xFFFD, 0xACC0, -/* 25B8 */ 0xCFD6, 0xCFC7, 0xACC3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2B4, -/* 25C0 */ 0xD2AB, 0xD2B6, 0xFFFD, 0xD2AE, 0xD2B9, 0xD2BA, 0xD2AC, 0xD2B8, -/* 25C8 */ 0xD2B5, 0xD2B3, 0xD2B7, 0xAF5F, 0xFFFD, 0xAF5D, 0xFFFD, 0xFFFD, -/* 25D0 */ 0xD2B1, 0xFFFD, 0xD2AD, 0xFFFD, 0xD2B0, 0xD2BB, 0xD2B2, 0xAF5E, -/* 25D8 */ 0xCFCF, 0xFFFD, 0xAF5A, 0xAF5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25E0 */ 0xFFFD, 0xD678, 0xD66D, 0xD66B, 0xFFFD, 0xD66C, 0xFFFD, 0xD673, -/* 25E8 */ 0xFFFD, 0xD674, 0xD670, 0xB27B, 0xD675, 0xD672, 0xD66F, 0xFFFD, -/* 25F0 */ 0xB279, 0xD66E, 0xB277, 0xB27A, 0xD671, 0xD679, 0xAF5B, 0xB278, -/* 25F8 */ 0xD677, 0xD676, 0xB27C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDA7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAA1, -/* 2608 */ 0xB560, 0xFFFD, 0xDAA7, 0xFFFD, 0xFFFD, 0xDAA9, 0xDAA2, 0xB55A, -/* 2610 */ 0xDAA6, 0xDAA5, 0xB55B, 0xB561, 0xFFFD, 0xB562, 0xDAA8, 0xB558, -/* 2618 */ 0xDA7D, 0xDA7B, 0xDAA3, 0xDA7A, 0xB55F, 0xDA7C, 0xDAA4, 0xDAAA, -/* 2620 */ 0xB559, 0xB55E, 0xB55C, 0xB55D, 0xFFFD, 0xFFFD, 0xFFFD, 0xB557, -/* 2628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7E9, 0xDEB7, 0xB7E8, 0xDEBB, -/* 2630 */ 0xFFFD, 0xDEB1, 0xFFFD, 0xDEBC, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEB2, -/* 2638 */ 0xDEB3, 0xFFFD, 0xDEBD, 0xDEBA, 0xDEB8, 0xDEB9, 0xDEB5, 0xDEB4, -/* 2640 */ 0xFFFD, 0xDEBE, 0xB7E5, 0xFFFD, 0xDEB6, 0xFFFD, 0xB7EA, 0xB7E4, -/* 2648 */ 0xB7EB, 0xB7EC, 0xFFFD, 0xB7E7, 0xB7E6, 0xFFFD, 0xFFFD, 0xE2CE, -/* 2650 */ 0xBABE, 0xBABD, 0xFFFD, 0xFFFD, 0xE2D3, 0xFFFD, 0xBCFC, 0xBABF, -/* 2658 */ 0xFFFD, 0xFFFD, 0xBAC1, 0xE2D4, 0xB7E3, 0xBAC0, 0xE2D0, 0xE2D2, -/* 2660 */ 0xE2CF, 0xFFFD, 0xE2D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6AB, 0xFFFD, -/* 2668 */ 0xFFFD, 0xE6AA, 0xE6A7, 0xBD40, 0xEA62, 0xBD41, 0xE6A6, 0xFFFD, -/* 2670 */ 0xBCFE, 0xFFFD, 0xE6A8, 0xE6A5, 0xE6A2, 0xE6A9, 0xE6A3, 0xE6A4, -/* 2678 */ 0xBCFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xED69, 0xFFFD, 0xEA66, -/* 2680 */ 0xFFFD, 0xEA65, 0xEA67, 0xFFFD, 0xED66, 0xBF5A, 0xFFFD, 0xEA63, -/* 2688 */ 0xFFFD, 0xBF58, 0xFFFD, 0xBF5C, 0xBF5B, 0xEA64, 0xEA68, 0xFFFD, -/* 2690 */ 0xBF59, 0xFFFD, 0xED6D, 0xC0F5, 0xC27A, 0xC0F6, 0xC0F3, 0xED6A, -/* 2698 */ 0xED68, 0xFFFD, 0xED6B, 0xFFFD, 0xED6E, 0xC0F4, 0xED6C, 0xED67, -/* 26A0 */ 0xFFFD, 0xFFFD, 0xF042, 0xF045, 0xF275, 0xF040, 0xFFFD, 0xF46F, -/* 26A8 */ 0xF046, 0xFFFD, 0xC3A2, 0xF044, 0xC27B, 0xF041, 0xF043, 0xF047, -/* 26B0 */ 0xF276, 0xFFFD, 0xF274, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3A3, -/* 26B8 */ 0xF273, 0xFFFD, 0xFFFD, 0xFFFD, 0xC46E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26C0 */ 0xFFFD, 0xC4ED, 0xF6F1, 0xC4EC, 0xF6F3, 0xF6F0, 0xF6F2, 0xC5D0, -/* 26C8 */ 0xF8B2, 0xA5CA, 0xCD6E, 0xD2BC, 0xD2BD, 0xB27D, 0xDEBF, 0xBF5D, -/* 26D0 */ 0xC3A4, 0xC57B, 0xF8B3, 0xA5CB, 0xFFFD, 0xCD6F, 0xA260, 0xFFFD, -/* 26D8 */ 0xFFFD, 0xCFD7, 0xFFFD, 0xCFD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26E0 */ 0xFFFD, 0xD2BE, 0xD2BF, 0xB27E, 0xB2A1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26E8 */ 0xDAAB, 0xFFFD, 0xDEC2, 0xDEC1, 0xDEC0, 0xE2D5, 0xFFFD, 0xE2D6, -/* 26F0 */ 0xE2D7, 0xBAC2, 0xFFFD, 0xFFFD, 0xE6AD, 0xE6AC, 0xFFFD, 0xFFFD, -/* 26F8 */ 0xEA69, 0xBF5E, 0xBF5F, 0xFFFD, 0xED72, 0xED6F, 0xED70, 0xED71, -/* 2700 */ 0xF049, 0xF048, 0xC27C, 0xF277, 0xF5DE, 0xA5CC, 0xFFFD, 0xACC6, -/* 2708 */ 0xFFFD, 0xB2A2, 0xDEC3, 0xFFFD, 0xA5CD, 0xFFFD, 0xD2C0, 0xB2A3, -/* 2710 */ 0xFFFD, 0xFFFD, 0xB563, 0xB564, 0xFFFD, 0xA5CE, 0xA5CF, 0xCA46, -/* 2718 */ 0xA86A, 0xA869, 0xACC7, 0xCFD9, 0xDAAC, 0xA5D0, 0xA5D1, 0xA5D2, -/* 2720 */ 0xA5D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xA86B, 0xA86C, 0xCB6E, 0xCB6D, -/* 2728 */ 0xFFFD, 0xFFFD, 0xAAB6, 0xCD72, 0xCD70, 0xCD71, 0xFFFD, 0xFFFD, -/* 2730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFDA, 0xCFDB, 0xFFFD, 0xFFFD, -/* 2738 */ 0xACCB, 0xACC9, 0xFFFD, 0xACCA, 0xACC8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2740 */ 0xFFFD, 0xAF60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAF64, 0xAF63, -/* 2748 */ 0xD2C1, 0xAF62, 0xAF61, 0xFFFD, 0xD2C2, 0xFFFD, 0xFFFD, 0xB2A6, -/* 2750 */ 0xD67B, 0xD67A, 0xB2A4, 0xB2A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xB566, -/* 2758 */ 0xB565, 0xDAAE, 0xFFFD, 0xFFFD, 0xDAAD, 0xB2A7, 0xFFFD, 0xFFFD, -/* 2760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB7ED, 0xDEC5, 0xB7EE, 0xDEC4, 0xFFFD, -/* 2768 */ 0xFFFD, 0xFFFD, 0xE2D8, 0xE6AE, 0xBD42, 0xEA6A, 0xFFFD, 0xFFFD, -/* 2770 */ 0xFFFD, 0xED73, 0xFFFD, 0xC3A6, 0xC3A5, 0xFFFD, 0xFFFD, 0xC57C, -/* 2778 */ 0xA5D4, 0xCD73, 0xFFFD, 0xFFFD, 0xB2A8, 0xE2D9, 0xBAC3, 0xFFFD, -/* 2780 */ 0xFFFD, 0xCB6F, 0xCB70, 0xFFFD, 0xFFFD, 0xCD74, 0xAAB8, 0xAAB9, -/* 2788 */ 0xFFFD, 0xFFFD, 0xAAB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xACCF, -/* 2790 */ 0xACD0, 0xACCD, 0xACCE, 0xFFFD, 0xCFDC, 0xFFFD, 0xFFFD, 0xCFDD, -/* 2798 */ 0xACCC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2C3, 0xFFFD, 0xAF68, -/* 27A0 */ 0xAF69, 0xFFFD, 0xB2AB, 0xD2C9, 0xFFFD, 0xAF6E, 0xAF6C, 0xD2CA, -/* 27A8 */ 0xD2C5, 0xAF6B, 0xAF6A, 0xAF65, 0xD2C8, 0xD2C7, 0xD2C4, 0xAF6D, -/* 27B0 */ 0xFFFD, 0xD2C6, 0xAF66, 0xFFFD, 0xAF67, 0xFFFD, 0xFFFD, 0xB2AC, -/* 27B8 */ 0xD6A1, 0xD6A2, 0xB2AD, 0xD67C, 0xD67E, 0xD6A4, 0xD6A3, 0xD67D, -/* 27C0 */ 0xFFFD, 0xB2A9, 0xB2AA, 0xFFFD, 0xDAB6, 0xB56B, 0xB56A, 0xDAB0, -/* 27C8 */ 0xB568, 0xFFFD, 0xDAB3, 0xB56C, 0xDAB4, 0xB56D, 0xDAB1, 0xB567, -/* 27D0 */ 0xB569, 0xDAB5, 0xFFFD, 0xDAB2, 0xDAAF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D8 */ 0xFFFD, 0xFFFD, 0xDED2, 0xFFFD, 0xDEC7, 0xB7F0, 0xB7F3, 0xB7F2, -/* 27E0 */ 0xB7F7, 0xB7F6, 0xDED3, 0xDED1, 0xDECA, 0xDECE, 0xDECD, 0xB7F4, -/* 27E8 */ 0xDED0, 0xDECC, 0xDED4, 0xDECB, 0xB7F5, 0xB7EF, 0xB7F1, 0xFFFD, -/* 27F0 */ 0xDEC9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2DB, 0xBAC7, 0xE2DF, -/* 27F8 */ 0xBAC6, 0xE2DC, 0xBAC5, 0xFFFD, 0xDEC8, 0xDECF, 0xE2DE, 0xFFFD, -/* 2800 */ 0xBAC8, 0xE2E0, 0xE2DD, 0xE2DA, 0xFFFD, 0xFFFD, 0xE6B1, 0xE6B5, -/* 2808 */ 0xE6B7, 0xE6B3, 0xE6B2, 0xE6B0, 0xBD45, 0xBD43, 0xBD48, 0xBD49, -/* 2810 */ 0xE6B4, 0xBD46, 0xE6AF, 0xBD47, 0xBAC4, 0xE6B6, 0xBD44, 0xFFFD, -/* 2818 */ 0xFFFD, 0xFFFD, 0xEA6C, 0xFFFD, 0xEA6B, 0xEA73, 0xEA6D, 0xEA72, -/* 2820 */ 0xEA6F, 0xBF60, 0xEA71, 0xFFFD, 0xFFFD, 0xBF61, 0xFFFD, 0xBF62, -/* 2828 */ 0xFFFD, 0xEA70, 0xEA6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0F8, -/* 2830 */ 0xED74, 0xFFFD, 0xFFFD, 0xC0F7, 0xED77, 0xED75, 0xED76, 0xFFFD, -/* 2838 */ 0xFFFD, 0xC0F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xF04D, 0xFFFD, 0xC2A1, -/* 2840 */ 0xF04E, 0xFFFD, 0xFFFD, 0xC27D, 0xF04F, 0xC27E, 0xF04C, 0xF050, -/* 2848 */ 0xFFFD, 0xF04A, 0xFFFD, 0xFFFD, 0xC3A7, 0xF278, 0xC3A8, 0xC46F, -/* 2850 */ 0xFFFD, 0xF04B, 0xC470, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4EE, 0xF5DF, -/* 2858 */ 0xFFFD, 0xC57E, 0xF6F4, 0xC57D, 0xFFFD, 0xF7EA, 0xC5F5, 0xC5F6, -/* 2860 */ 0xFFFD, 0xFFFD, 0xF9CC, 0xFFFD, 0xFFFD, 0xACD1, 0xCFDE, 0xFFFD, -/* 2868 */ 0xB56E, 0xB56F, 0xA5D5, 0xA6CA, 0xCA47, 0xFFFD, 0xCB71, 0xA86D, -/* 2870 */ 0xFFFD, 0xAABA, 0xFFFD, 0xACD2, 0xACD3, 0xACD4, 0xD6A6, 0xD2CB, -/* 2878 */ 0xAF6F, 0xFFFD, 0xFFFD, 0xB2AE, 0xD6A5, 0xFFFD, 0xFFFD, 0xDAB8, -/* 2880 */ 0xB571, 0xFFFD, 0xDAB7, 0xB570, 0xFFFD, 0xFFFD, 0xDED5, 0xBD4A, -/* 2888 */ 0xE6BB, 0xE6B8, 0xE6B9, 0xE6BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2890 */ 0xFFFD, 0xED78, 0xFFFD, 0xF051, 0xFFFD, 0xFFFD, 0xFFFD, 0xF471, -/* 2898 */ 0xF470, 0xFFFD, 0xF6F5, 0xA5D6, 0xCD75, 0xAF70, 0xFFFD, 0xFFFD, -/* 28A0 */ 0xFFFD, 0xB572, 0xDED6, 0xFFFD, 0xFFFD, 0xE2E1, 0xFFFD, 0xBD4B, -/* 28A8 */ 0xEA74, 0xFFFD, 0xF052, 0xF472, 0xA5D7, 0xFFFD, 0xFFFD, 0xAABB, -/* 28B0 */ 0xACD7, 0xCFDF, 0xACD8, 0xACD6, 0xFFFD, 0xACD5, 0xD2CC, 0xAF71, -/* 28B8 */ 0xFFFD, 0xFFFD, 0xAF72, 0xAF73, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2B0, -/* 28C0 */ 0xD6A7, 0xB2AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAB9, -/* 28C8 */ 0xB2B1, 0xB573, 0xDED7, 0xB7F8, 0xB7F9, 0xFFFD, 0xBAC9, 0xFFFD, -/* 28D0 */ 0xBACA, 0xBD4C, 0xBF64, 0xEA75, 0xBF63, 0xFFFD, 0xED79, 0xC0FA, -/* 28D8 */ 0xFFFD, 0xF053, 0xF473, 0xA5D8, 0xA86E, 0xCD78, 0xCD77, 0xAABC, -/* 28E0 */ 0xCD76, 0xAABD, 0xCD79, 0xFFFD, 0xCFE5, 0xACDB, 0xACDA, 0xCFE7, -/* 28E8 */ 0xCFE6, 0xACDF, 0xFFFD, 0xACDE, 0xFFFD, 0xFFFD, 0xACD9, 0xFFFD, -/* 28F0 */ 0xCFE1, 0xCFE2, 0xCFE3, 0xFFFD, 0xACE0, 0xCFE0, 0xACDC, 0xCFE4, -/* 28F8 */ 0xACDD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2CF, 0xD2D3, 0xD2D1, -/* 2900 */ 0xD2D0, 0xFFFD, 0xD2D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2D5, 0xD2D6, -/* 2908 */ 0xD2CE, 0xFFFD, 0xD2CD, 0xFFFD, 0xAF75, 0xAF76, 0xFFFD, 0xD2D7, -/* 2910 */ 0xD2D2, 0xFFFD, 0xD6B0, 0xFFFD, 0xD2D8, 0xAF77, 0xAF74, 0xFFFD, -/* 2918 */ 0xFFFD, 0xFFFD, 0xD6AA, 0xFFFD, 0xD6A9, 0xFFFD, 0xD6AB, 0xD6AC, -/* 2920 */ 0xD6AE, 0xD6AD, 0xD6B2, 0xB2B5, 0xB2B2, 0xB2B6, 0xD6A8, 0xB2B7, -/* 2928 */ 0xD6B1, 0xB2B4, 0xD6AF, 0xB2B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2930 */ 0xFFFD, 0xDABC, 0xDABE, 0xDABA, 0xDABB, 0xFFFD, 0xFFFD, 0xDABF, -/* 2938 */ 0xDAC1, 0xDAC2, 0xDABD, 0xDAC0, 0xB574, 0xFFFD, 0xFFFD, 0xDEDB, -/* 2940 */ 0xFFFD, 0xDEE0, 0xDED8, 0xDEDC, 0xFFFD, 0xFFFD, 0xDEE1, 0xDEDD, -/* 2948 */ 0xB7FA, 0xB843, 0xFFFD, 0xB7FD, 0xDED9, 0xDEDA, 0xBACE, 0xB846, -/* 2950 */ 0xB7FE, 0xFFFD, 0xB844, 0xB7FC, 0xDEDF, 0xB845, 0xDEDE, 0xB841, -/* 2958 */ 0xB7FB, 0xB842, 0xDEE2, 0xE2E6, 0xE2E8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB840, 0xFFFD, -/* 2968 */ 0xFFFD, 0xE2E3, 0xBACC, 0xE2E9, 0xBACD, 0xE2E7, 0xE2E2, 0xE2E5, -/* 2970 */ 0xE2EA, 0xBACB, 0xE2E4, 0xFFFD, 0xBD4E, 0xE6BF, 0xE6BE, 0xFFFD, -/* 2978 */ 0xBD51, 0xBD4F, 0xE6BC, 0xBD4D, 0xE6BD, 0xFFFD, 0xBD50, 0xFFFD, -/* 2980 */ 0xFFFD, 0xFFFD, 0xEA7D, 0xFFFD, 0xEAA1, 0xFFFD, 0xEA7E, 0xEA76, -/* 2988 */ 0xEA7A, 0xEA79, 0xEA77, 0xBF66, 0xBF67, 0xBF65, 0xEA78, 0xEA7B, -/* 2990 */ 0xEA7C, 0xFFFD, 0xBF68, 0xFFFD, 0xC140, 0xEDA3, 0xFFFD, 0xC0FC, -/* 2998 */ 0xED7B, 0xC0FE, 0xC141, 0xFFFD, 0xFFFD, 0xC0FD, 0xEDA2, 0xED7C, -/* 29A0 */ 0xC0FB, 0xEDA1, 0xED7A, 0xED7E, 0xED7D, 0xFFFD, 0xFFFD, 0xF055, -/* 29A8 */ 0xC2A4, 0xC2A5, 0xC2A2, 0xFFFD, 0xC2A3, 0xFFFD, 0xFFFD, 0xF054, -/* 29B0 */ 0xFFFD, 0xF27B, 0xFFFD, 0xFFFD, 0xC3A9, 0xFFFD, 0xF279, 0xF27A, -/* 29B8 */ 0xFFFD, 0xF474, 0xF477, 0xF475, 0xF476, 0xF5E0, 0xFFFD, 0xFFFD, -/* 29C0 */ 0xC4EF, 0xF7EB, 0xF8B4, 0xFFFD, 0xC5F7, 0xF8F8, 0xF8F9, 0xC666, -/* 29C8 */ 0xA5D9, 0xACE1, 0xFFFD, 0xDAC3, 0xFFFD, 0xDEE3, 0xFFFD, 0xA5DA, -/* 29D0 */ 0xA86F, 0xFFFD, 0xAABE, 0xFFFD, 0xCFE8, 0xCFE9, 0xAF78, 0xFFFD, -/* 29D8 */ 0xFFFD, 0xDAC4, 0xB575, 0xB847, 0xC142, 0xEDA4, 0xF27C, 0xF478, -/* 29E0 */ 0xA5DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDA1, 0xCD7A, 0xCD7C, 0xCD7E, -/* 29E8 */ 0xCD7D, 0xCD7B, 0xAABF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xACE2, -/* 29F0 */ 0xCFF2, 0xFFFD, 0xCFED, 0xCFEA, 0xFFFD, 0xFFFD, 0xCFF1, 0xFFFD, -/* 29F8 */ 0xFFFD, 0xACE4, 0xACE5, 0xCFF0, 0xCFEF, 0xCFEE, 0xCFEB, 0xCFEC, -/* 2A00 */ 0xCFF3, 0xACE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A08 */ 0xFFFD, 0xFFFD, 0xAF7C, 0xFFFD, 0xAFA4, 0xAFA3, 0xD2E1, 0xD2DB, -/* 2A10 */ 0xD2D9, 0xFFFD, 0xAFA1, 0xD6B9, 0xAF7A, 0xD2DE, 0xD2E2, 0xD2E4, -/* 2A18 */ 0xD2E0, 0xD2DA, 0xAFA2, 0xD2DF, 0xD2DD, 0xAF79, 0xD2E5, 0xAFA5, -/* 2A20 */ 0xD2E3, 0xAF7D, 0xD2DC, 0xFFFD, 0xAF7E, 0xAF7B, 0xFFFD, 0xFFFD, -/* 2A28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A30 */ 0xB2B9, 0xFFFD, 0xD6BA, 0xFFFD, 0xFFFD, 0xD6B3, 0xD6B5, 0xD6B7, -/* 2A38 */ 0xFFFD, 0xD6B8, 0xD6B6, 0xB2BA, 0xFFFD, 0xD6BB, 0xFFFD, 0xD6B4, -/* 2A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A48 */ 0xFFFD, 0xDAC8, 0xB576, 0xDAD0, 0xFFFD, 0xDAC5, 0xFFFD, 0xDAD1, -/* 2A50 */ 0xFFFD, 0xDAC6, 0xDAC7, 0xFFFD, 0xFFFD, 0xDACF, 0xDACE, 0xDACB, -/* 2A58 */ 0xB2B8, 0xB577, 0xDAC9, 0xDACC, 0xB578, 0xDACD, 0xDACA, 0xFFFD, -/* 2A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEEE, 0xFFFD, -/* 2A68 */ 0xDEF2, 0xB84E, 0xFFFD, 0xE2F0, 0xB851, 0xDEF0, 0xFFFD, 0xFFFD, -/* 2A70 */ 0xDEED, 0xDEE8, 0xDEEA, 0xDEEB, 0xDEE4, 0xFFFD, 0xB84D, 0xFFFD, -/* 2A78 */ 0xFFFD, 0xB84C, 0xFFFD, 0xB848, 0xDEE7, 0xFFFD, 0xB84F, 0xFFFD, -/* 2A80 */ 0xB850, 0xDEE6, 0xDEE9, 0xDEF1, 0xB84A, 0xB84B, 0xDEEF, 0xDEE5, -/* 2A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2F2, 0xBAD0, 0xE2F4, 0xDEEC, 0xE2F6, -/* 2A90 */ 0xBAD4, 0xE2F7, 0xE2F3, 0xFFFD, 0xBAD1, 0xE2EF, 0xBAD3, 0xE2EC, -/* 2A98 */ 0xE2F1, 0xE2F5, 0xE2EE, 0xFFFD, 0xFFFD, 0xB849, 0xFFFD, 0xE2EB, -/* 2AA0 */ 0xBAD2, 0xE2ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBD54, -/* 2AA8 */ 0xE6C1, 0xBD58, 0xFFFD, 0xBD56, 0xFFFD, 0xFFFD, 0xBACF, 0xFFFD, -/* 2AB0 */ 0xE6C8, 0xE6C9, 0xBD53, 0xFFFD, 0xFFFD, 0xE6C7, 0xE6CA, 0xBD55, -/* 2AB8 */ 0xBD52, 0xE6C3, 0xE6C0, 0xE6C5, 0xE6C2, 0xBD59, 0xE6C4, 0xFFFD, -/* 2AC0 */ 0xFFFD, 0xE6C6, 0xBD57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBF6A, -/* 2AC8 */ 0xEAA8, 0xFFFD, 0xEAA2, 0xEAA6, 0xEAAC, 0xEAAD, 0xEAA9, 0xEAAA, -/* 2AD0 */ 0xEAA7, 0xFFFD, 0xEAA4, 0xFFFD, 0xBF6C, 0xBF69, 0xEAA3, 0xEAA5, -/* 2AD8 */ 0xFFFD, 0xBF6B, 0xEAAB, 0xFFFD, 0xC146, 0xFFFD, 0xFFFD, 0xEDAA, -/* 2AE0 */ 0xEDA5, 0xC145, 0xFFFD, 0xFFFD, 0xC143, 0xFFFD, 0xEDAC, 0xC144, -/* 2AE8 */ 0xEDA8, 0xEDA9, 0xEDA6, 0xEDAD, 0xF056, 0xFFFD, 0xC147, 0xEDA7, -/* 2AF0 */ 0xFFFD, 0xEDAE, 0xEDAB, 0xFFFD, 0xFFFD, 0xFFFD, 0xF05A, 0xFFFD, -/* 2AF8 */ 0xFFFD, 0xF057, 0xFFFD, 0xC2A6, 0xFFFD, 0xF05B, 0xF05D, 0xF05C, -/* 2B00 */ 0xF058, 0xF059, 0xFFFD, 0xFFFD, 0xF2A3, 0xFFFD, 0xC3AA, 0xFFFD, -/* 2B08 */ 0xF27E, 0xF2A2, 0xF27D, 0xF2A4, 0xFFFD, 0xFFFD, 0xF2A1, 0xFFFD, -/* 2B10 */ 0xF47A, 0xF47D, 0xF479, 0xC471, 0xF47B, 0xF47C, 0xF47E, 0xC472, -/* 2B18 */ 0xC474, 0xC473, 0xF5E1, 0xFFFD, 0xF5E3, 0xFFFD, 0xF5E2, 0xFFFD, -/* 2B20 */ 0xFFFD, 0xFFFD, 0xF6F6, 0xFFFD, 0xFFFD, 0xF8B5, 0xF8FA, 0xA5DC, -/* 2B28 */ 0xFFFD, 0xFFFD, 0xCB72, 0xAAC0, 0xCDA3, 0xAAC1, 0xAAC2, 0xCDA2, -/* 2B30 */ 0xFFFD, 0xCFF8, 0xCFF7, 0xACE6, 0xACE9, 0xACE8, 0xACE7, 0xCFF4, -/* 2B38 */ 0xCFF6, 0xCFF5, 0xFFFD, 0xFFFD, 0xD2E8, 0xAFA7, 0xD2EC, 0xD2EB, -/* 2B40 */ 0xD2EA, 0xD2E6, 0xAFA6, 0xAFAA, 0xAFAD, 0xFFFD, 0xFFFD, 0xAFAE, -/* 2B48 */ 0xD2E7, 0xD2E9, 0xAFAC, 0xAFAB, 0xAFA9, 0xAFA8, 0xD6C2, 0xFFFD, -/* 2B50 */ 0xD6C0, 0xD6BC, 0xB2BB, 0xFFFD, 0xD6BD, 0xB2BC, 0xD6BE, 0xD6BF, -/* 2B58 */ 0xD6C1, 0xFFFD, 0xB2BD, 0xFFFD, 0xFFFD, 0xDAD5, 0xFFFD, 0xDAD4, -/* 2B60 */ 0xDAD3, 0xDAD2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEF6, 0xB852, -/* 2B68 */ 0xFFFD, 0xDEF3, 0xDEF5, 0xFFFD, 0xB853, 0xFFFD, 0xB854, 0xDEF4, -/* 2B70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE341, 0xFFFD, 0xE2F9, -/* 2B78 */ 0xE2FA, 0xFFFD, 0xBAD7, 0xBAD5, 0xBAD6, 0xE343, 0xFFFD, 0xE342, -/* 2B80 */ 0xE2FE, 0xE2FD, 0xE2FC, 0xE2FB, 0xE340, 0xE2F8, 0xFFFD, 0xE6CB, -/* 2B88 */ 0xE6D0, 0xE6CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6CD, 0xE6CC, 0xE6CF, -/* 2B90 */ 0xFFFD, 0xEAAE, 0xFFFD, 0xBF6D, 0xC148, 0xEDB0, 0xFFFD, 0xC149, -/* 2B98 */ 0xEDAF, 0xF05F, 0xF05E, 0xC2A7, 0xFFFD, 0xF2A5, 0xC3AB, 0xF4A1, -/* 2BA0 */ 0xC5A1, 0xF6F7, 0xFFFD, 0xF8B7, 0xF8B6, 0xC9A8, 0xACEA, 0xACEB, -/* 2BA8 */ 0xD6C3, 0xFFFD, 0xB856, 0xA5DD, 0xA872, 0xA871, 0xA870, 0xFFFD, -/* 2BB0 */ 0xFFFD, 0xFFFD, 0xCDA4, 0xFFFD, 0xFFFD, 0xAAC4, 0xAAC3, 0xFFFD, -/* 2BB8 */ 0xACEE, 0xFFFD, 0xCFFA, 0xCFFD, 0xCFFB, 0xFFFD, 0xACEC, 0xACED, -/* 2BC0 */ 0xFFFD, 0xFFFD, 0xCFF9, 0xCFFC, 0xFFFD, 0xAFB5, 0xFFFD, 0xFFFD, -/* 2BC8 */ 0xFFFD, 0xD2F3, 0xD2F5, 0xD2F4, 0xAFB2, 0xD2EF, 0xFFFD, 0xFFFD, -/* 2BD0 */ 0xAFB0, 0xAFAF, 0xFFFD, 0xAFB3, 0xAFB1, 0xFFFD, 0xAFB4, 0xD2F2, -/* 2BD8 */ 0xD2ED, 0xD2EE, 0xD2F1, 0xD2F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD6C6, 0xD6C7, 0xD6C5, 0xFFFD, 0xD6C4, -/* 2BE8 */ 0xB2BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB57D, 0xFFFD, 0xDAD6, -/* 2BF0 */ 0xDAD8, 0xDADA, 0xB57C, 0xFFFD, 0xFFFD, 0xB57A, 0xFFFD, 0xDAD7, -/* 2BF8 */ 0xB57B, 0xDAD9, 0xB579, 0xFFFD, 0xFFFD, 0xDF41, 0xDEF7, 0xDEFA, -/* 2C00 */ 0xDEFE, 0xB85A, 0xDEFC, 0xFFFD, 0xDEFB, 0xDEF8, 0xDEF9, 0xB858, -/* 2C08 */ 0xDF40, 0xB857, 0xFFFD, 0xB85C, 0xB85B, 0xB859, 0xFFFD, 0xDEFD, -/* 2C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE349, 0xFFFD, 0xE348, 0xFFFD, 0xFFFD, -/* 2C18 */ 0xE344, 0xFFFD, 0xFFFD, 0xBAD8, 0xE347, 0xE346, 0xBAD9, 0xFFFD, -/* 2C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBD5E, 0xFFFD, 0xE6D2, 0xFFFD, -/* 2C28 */ 0xBD5F, 0xBD5B, 0xBD5D, 0xFFFD, 0xBD5A, 0xBD5C, 0xFFFD, 0xFFFD, -/* 2C30 */ 0xFFFD, 0xEAAF, 0xFFFD, 0xBF70, 0xEAB1, 0xEAB0, 0xFFFD, 0xE345, -/* 2C38 */ 0xBF72, 0xBF71, 0xBF6E, 0xBF6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C40 */ 0xFFFD, 0xEDB5, 0xFFFD, 0xEDB3, 0xC14A, 0xEDB4, 0xFFFD, 0xEDB6, -/* 2C48 */ 0xEDB2, 0xEDB1, 0xFFFD, 0xFFFD, 0xF060, 0xC2AA, 0xC2A8, 0xC2A9, -/* 2C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2A6, 0xF2A7, 0xC3AD, 0xFFFD, -/* 2C58 */ 0xC3AC, 0xF4A3, 0xF4A4, 0xF4A2, 0xFFFD, 0xF6F8, 0xF6F9, 0xFFFD, -/* 2C60 */ 0xFFFD, 0xA5DE, 0xCA48, 0xA873, 0xFFFD, 0xCDA5, 0xAAC6, 0xAAC5, -/* 2C68 */ 0xCDA6, 0xFFFD, 0xFFFD, 0xD040, 0xACEF, 0xCFFE, 0xACF0, 0xFFFD, -/* 2C70 */ 0xFFFD, 0xAFB6, 0xD2F8, 0xD2F6, 0xD2FC, 0xAFB7, 0xD2F7, 0xD2FB, -/* 2C78 */ 0xD2F9, 0xD2FA, 0xFFFD, 0xFFFD, 0xD6C8, 0xD6CA, 0xFFFD, 0xB2BF, -/* 2C80 */ 0xFFFD, 0xD6C9, 0xB2C0, 0xB5A2, 0xB5A1, 0xB57E, 0xDADB, 0xFFFD, -/* 2C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDF44, 0xB85D, 0xB85E, 0xFFFD, 0xDF43, -/* 2C90 */ 0xDF42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE34A, 0xBADB, 0xBADA, -/* 2C98 */ 0xE34B, 0xE34C, 0xFFFD, 0xBD61, 0xBD60, 0xFFFD, 0xEAB5, 0xE6D3, -/* 2CA0 */ 0xE6D5, 0xE6D4, 0xEAB4, 0xEAB2, 0xEAB6, 0xEAB3, 0xFFFD, 0xBF73, -/* 2CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEDB7, 0xC14B, 0xEDB8, 0xEDB9, 0xFFFD, -/* 2CB0 */ 0xFFFD, 0xC2AB, 0xC2AC, 0xFFFD, 0xC475, 0xFFFD, 0xFFFD, 0xC5D1, -/* 2CB8 */ 0xA5DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD041, 0xFFFD, -/* 2CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2FD, 0xAFB8, 0xFFFD, -/* 2CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3BA, 0xB3B9, 0xFFFD, 0xFFFD, -/* 2CD0 */ 0xB5A4, 0xDADD, 0xB5A3, 0xDADC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CD8 */ 0xDF45, 0xFFFD, 0xBADC, 0xE34D, 0xBADD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC476, 0xF4A5, 0xFFFD, 0xA6CB, 0xAAC7, -/* 2CE8 */ 0xCDA7, 0xFFFD, 0xACF2, 0xFFFD, 0xACF1, 0xD042, 0xD043, 0xFFFD, -/* 2CF0 */ 0xFFFD, 0xD340, 0xD342, 0xAFB9, 0xFFFD, 0xD344, 0xD347, 0xD345, -/* 2CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD346, 0xD343, 0xD2FE, 0xAFBA, 0xD348, -/* 2D00 */ 0xD341, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6D3, 0xB2C6, 0xD6DC, -/* 2D08 */ 0xB2C3, 0xFFFD, 0xD6D5, 0xB2C7, 0xFFFD, 0xB2C1, 0xFFFD, 0xD6D0, -/* 2D10 */ 0xD6DD, 0xD6D1, 0xD6CE, 0xB2C5, 0xFFFD, 0xB2C2, 0xFFFD, 0xD6D4, -/* 2D18 */ 0xD6D7, 0xB2C4, 0xD6D8, 0xB2C8, 0xD6D9, 0xD6CF, 0xD6D6, 0xD6DA, -/* 2D20 */ 0xD6D2, 0xD6CD, 0xD6CB, 0xFFFD, 0xFFFD, 0xD6DB, 0xFFFD, 0xFFFD, -/* 2D28 */ 0xDADF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAE4, 0xFFFD, 0xFFFD, -/* 2D30 */ 0xFFFD, 0xDAE0, 0xDAE6, 0xB5A7, 0xD6CC, 0xDAE1, 0xB5A5, 0xDADE, -/* 2D38 */ 0xB5AC, 0xDAE2, 0xB5AB, 0xDAE3, 0xB5AD, 0xB5A8, 0xB5AE, 0xB5A9, -/* 2D40 */ 0xFFFD, 0xB5AA, 0xFFFD, 0xB5A6, 0xFFFD, 0xDAE5, 0xFFFD, 0xFFFD, -/* 2D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB861, 0xDF50, 0xFFFD, -/* 2D50 */ 0xDF53, 0xDF47, 0xDF4C, 0xDF46, 0xB863, 0xFFFD, 0xDF4A, 0xFFFD, -/* 2D58 */ 0xFFFD, 0xFFFD, 0xDF48, 0xB862, 0xFFFD, 0xDF4F, 0xDF4E, 0xDF4B, -/* 2D60 */ 0xDF4D, 0xDF49, 0xBAE1, 0xDF52, 0xB85F, 0xDF51, 0xFFFD, 0xFFFD, -/* 2D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE35D, -/* 2D70 */ 0xFFFD, 0xBAE8, 0xE358, 0xFFFD, 0xBAE7, 0xE34E, 0xFFFD, 0xE350, -/* 2D78 */ 0xBAE0, 0xE355, 0xE354, 0xE357, 0xBAE5, 0xE352, 0xE351, 0xFFFD, -/* 2D80 */ 0xFFFD, 0xBAE4, 0xBADF, 0xE353, 0xBAE2, 0xE359, 0xE35B, 0xFFFD, -/* 2D88 */ 0xE356, 0xE34F, 0xBAE3, 0xFFFD, 0xFFFD, 0xBD69, 0xBADE, 0xFFFD, -/* 2D90 */ 0xFFFD, 0xE35C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D98 */ 0xFFFD, 0xE6D9, 0xBD62, 0xFFFD, 0xE6DB, 0xFFFD, 0xBD63, 0xFFFD, -/* 2DA0 */ 0xFFFD, 0xBD65, 0xE6DE, 0xFFFD, 0xE6D6, 0xBAE6, 0xE6DC, 0xFFFD, -/* 2DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE6D8, 0xFFFD, 0xB860, 0xBD68, 0xFFFD, -/* 2DB0 */ 0xFFFD, 0xBD64, 0xFFFD, 0xBD66, 0xBD67, 0xFFFD, 0xBF76, 0xE6DD, -/* 2DB8 */ 0xE6D7, 0xBD6A, 0xFFFD, 0xE6DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DC0 */ 0xFFFD, 0xEAC0, 0xEABB, 0xFFFD, 0xFFFD, 0xEAC5, 0xBF74, 0xEABD, -/* 2DC8 */ 0xBF78, 0xEAC3, 0xEABA, 0xEAB7, 0xEAC6, 0xC151, 0xBF79, 0xEAC2, -/* 2DD0 */ 0xEAB8, 0xBF77, 0xEABC, 0xBF7B, 0xEAB9, 0xEABE, 0xBF7A, 0xEAC1, -/* 2DD8 */ 0xEAC4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDCB, 0xEDCC, 0xEDBC, -/* 2DE0 */ 0xEDC3, 0xEDC1, 0xFFFD, 0xFFFD, 0xC14F, 0xEDC8, 0xEABF, 0xFFFD, -/* 2DE8 */ 0xEDBF, 0xFFFD, 0xEDC9, 0xC14E, 0xEDBE, 0xEDBD, 0xEDC7, 0xEDC4, -/* 2DF0 */ 0xEDC6, 0xFFFD, 0xEDBA, 0xEDCA, 0xC14C, 0xFFFD, 0xEDC5, 0xEDCE, -/* 2DF8 */ 0xEDC2, 0xC150, 0xC14D, 0xEDC0, 0xEDBB, 0xEDCD, 0xBF75, 0xFFFD, -/* 2E00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF063, 0xFFFD, -/* 2E08 */ 0xFFFD, 0xF061, 0xF067, 0xC2B0, 0xF065, 0xF064, 0xC2B2, 0xF06A, -/* 2E10 */ 0xC2B1, 0xFFFD, 0xF06B, 0xF068, 0xC2AE, 0xF069, 0xF062, 0xC2AF, -/* 2E18 */ 0xC2AD, 0xF2AB, 0xF066, 0xFFFD, 0xFFFD, 0xF06C, 0xFFFD, 0xFFFD, -/* 2E20 */ 0xF2A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3B2, 0xC3B0, 0xF2AA, 0xFFFD, -/* 2E28 */ 0xF2AC, 0xF2A9, 0xC3B1, 0xC3AE, 0xC3AF, 0xC3B3, 0xFFFD, 0xFFFD, -/* 2E30 */ 0xC478, 0xFFFD, 0xF4AA, 0xFFFD, 0xF4A9, 0xF4A7, 0xF4A6, 0xF4A8, -/* 2E38 */ 0xFFFD, 0xC477, 0xC479, 0xFFFD, 0xFFFD, 0xC4F0, 0xFFFD, 0xFFFD, -/* 2E40 */ 0xF5E5, 0xF5E4, 0xFFFD, 0xFFFD, 0xF6FA, 0xFFFD, 0xF6FC, 0xF6FE, -/* 2E48 */ 0xF6FD, 0xF6FB, 0xFFFD, 0xFFFD, 0xC5A3, 0xC5A2, 0xFFFD, 0xFFFD, -/* 2E50 */ 0xC5D3, 0xC5D2, 0xC5D4, 0xF7ED, 0xF7EC, 0xFFFD, 0xF8FB, 0xF8B8, -/* 2E58 */ 0xF8FC, 0xC658, 0xFFFD, 0xC659, 0xF96D, 0xFFFD, 0xFFFD, 0xC67E, -/* 2E60 */ 0xA6CC, 0xFFFD, 0xCDA8, 0xFFFD, 0xFFFD, 0xD045, 0xD046, 0xD044, -/* 2E68 */ 0xFFFD, 0xFFFD, 0xACF3, 0xFFFD, 0xD047, 0xD048, 0xD049, 0xFFFD, -/* 2E70 */ 0xFFFD, 0xD349, 0xD34F, 0xFFFD, 0xFFFD, 0xD34D, 0xAFBB, 0xD34B, -/* 2E78 */ 0xFFFD, 0xD34C, 0xD34E, 0xFFFD, 0xFFFD, 0xFFFD, 0xD34A, 0xB2C9, -/* 2E80 */ 0xFFFD, 0xD6DE, 0xB2CB, 0xD6E0, 0xB2CA, 0xD6DF, 0xFFFD, 0xFFFD, -/* 2E88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDAE8, 0xB5AF, 0xFFFD, 0xDAEA, 0xDAE7, -/* 2E90 */ 0xD6E1, 0xFFFD, 0xB5B0, 0xFFFD, 0xFFFD, 0xDAE9, 0xFFFD, 0xFFFD, -/* 2E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDF56, 0xFFFD, 0xB864, 0xDF54, -/* 2EA0 */ 0xB865, 0xDF55, 0xB866, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAE9, 0xE361, -/* 2EA8 */ 0xE35E, 0xE360, 0xBAEA, 0xBAEB, 0xE35F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EB0 */ 0xFFFD, 0xFFFD, 0xE6DF, 0xFFFD, 0xFFFD, 0xE6E0, 0xFFFD, 0xBD6B, -/* 2EB8 */ 0xE6E2, 0xE6E1, 0xFFFD, 0xA261, 0xFFFD, 0xEACA, 0xEACB, 0xEAC7, -/* 2EC0 */ 0xFFFD, 0xEAC8, 0xBF7C, 0xBF7D, 0xEAC9, 0xFFFD, 0xC157, 0xFFFD, -/* 2EC8 */ 0xFFFD, 0xC153, 0xC158, 0xC154, 0xC156, 0xC152, 0xFFFD, 0xC155, -/* 2ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2B3, 0xEDCF, 0xFFFD, 0xF2AE, -/* 2ED8 */ 0xFFFD, 0xF2AD, 0xFFFD, 0xF4AB, 0xC47A, 0xC47B, 0xF741, 0xF5E6, -/* 2EE0 */ 0xFFFD, 0xF740, 0xFFFD, 0xF8FD, 0xF9A4, 0xA6CD, 0xFFFD, 0xFFFD, -/* 2EE8 */ 0xA874, 0xFFFD, 0xCDA9, 0xAAC8, 0xFFFD, 0xACF6, 0xD04C, 0xACF4, -/* 2EF0 */ 0xD04A, 0xACF9, 0xACF5, 0xACFA, 0xACF8, 0xD04B, 0xACF7, 0xAFBF, -/* 2EF8 */ 0xAFBE, 0xD35A, 0xAFC7, 0xD353, 0xD359, 0xAFC3, 0xD352, 0xD358, -/* 2F00 */ 0xD356, 0xAFC2, 0xAFC4, 0xD355, 0xAFBD, 0xD354, 0xAFC8, 0xAFC5, -/* 2F08 */ 0xAFC9, 0xAFC6, 0xD351, 0xD350, 0xD357, 0xAFC0, 0xAFBC, 0xAFC1, -/* 2F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6F0, 0xD6E9, 0xFFFD, -/* 2F18 */ 0xB5B5, 0xD6E8, 0xFFFD, 0xB2CF, 0xB2D6, 0xB2D3, 0xB2D9, 0xB2D8, -/* 2F20 */ 0xB2D4, 0xFFFD, 0xD6E2, 0xD6E5, 0xFFFD, 0xD6E4, 0xB2D0, 0xD6E6, -/* 2F28 */ 0xD6EF, 0xB2D1, 0xD6E3, 0xD6EC, 0xD6ED, 0xB2D2, 0xD6EA, 0xB2D7, -/* 2F30 */ 0xB2CD, 0xB2D5, 0xD6E7, 0xB2CC, 0xD6EB, 0xFFFD, 0xFFFD, 0xD6EE, -/* 2F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDAFB, 0xDAF2, 0xB5B2, 0xDAF9, 0xDAF6, -/* 2F40 */ 0xDAEE, 0xDAF7, 0xB5B4, 0xDAEF, 0xFFFD, 0xDAEB, 0xFFFD, 0xFFFD, -/* 2F48 */ 0xB86C, 0xDAF4, 0xFFFD, 0xB5B1, 0xDAFA, 0xFFFD, 0xB5B8, 0xB5BA, -/* 2F50 */ 0xDAED, 0xFFFD, 0xFFFD, 0xB5B9, 0xDAF0, 0xB5B3, 0xDAF8, 0xDAF1, -/* 2F58 */ 0xDAF5, 0xFFFD, 0xDAF3, 0xB5B6, 0xDAEC, 0xB5BB, 0xB2CE, 0xB5B7, -/* 2F60 */ 0xB5BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB868, 0xDF5D, -/* 2F68 */ 0xDF5F, 0xDF61, 0xDF65, 0xFFFD, 0xDF5B, 0xDF59, 0xB86A, 0xFFFD, -/* 2F70 */ 0xDF60, 0xDF64, 0xDF5C, 0xDF58, 0xFFFD, 0xDF57, 0xFFFD, 0xFFFD, -/* 2F78 */ 0xFFFD, 0xDF62, 0xDF5A, 0xDF5E, 0xB86B, 0xFFFD, 0xB869, 0xDF66, -/* 2F80 */ 0xB867, 0xDF63, 0xFFFD, 0xE372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F88 */ 0xFFFD, 0xBAEE, 0xE36A, 0xBD78, 0xE374, 0xBAF1, 0xE378, 0xBAF7, -/* 2F90 */ 0xE365, 0xFFFD, 0xFFFD, 0xE375, 0xE362, 0xFFFD, 0xE377, 0xE366, -/* 2F98 */ 0xFFFD, 0xBAFE, 0xBAFB, 0xE376, 0xE370, 0xBAED, 0xBAF5, 0xBAF4, -/* 2FA0 */ 0xFFFD, 0xBAF3, 0xBAF9, 0xFFFD, 0xE363, 0xBAFA, 0xE371, 0xBAF6, -/* 2FA8 */ 0xBAEC, 0xE373, 0xBAEF, 0xBAF0, 0xBAF8, 0xE368, 0xE367, 0xE364, -/* 2FB0 */ 0xFFFD, 0xE36C, 0xE369, 0xE36D, 0xBAFD, 0xFFFD, 0xE379, 0xBAF2, -/* 2FB8 */ 0xE36E, 0xE36F, 0xFFFD, 0xE36B, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAFC, -/* 2FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E7, 0xBD70, 0xBD79, 0xBD75, -/* 2FC8 */ 0xE6E4, 0xFFFD, 0xBD72, 0xBD76, 0xE6F0, 0xBD6C, 0xE6E8, 0xFFFD, -/* 2FD0 */ 0xBD74, 0xFFFD, 0xFFFD, 0xE6EB, 0xE6E6, 0xBD73, 0xBD77, 0xE6E5, -/* 2FD8 */ 0xFFFD, 0xBD71, 0xFFFD, 0xE6EF, 0xBD6E, 0xE6EE, 0xE6ED, 0xBD7A, -/* 2FE0 */ 0xE572, 0xBD6D, 0xFFFD, 0xE6EC, 0xE6E3, 0xFFFD, 0xBD7B, 0xE6EA, -/* 2FE8 */ 0xBD6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF0 */ 0xE6E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFA2, 0xBFA7, 0xBF7E, -/* 2FF8 */ 0xEAD8, 0xEACF, 0xEADB, 0xEAD3, 0xEAD9, 0xBFA8, 0xBFA1, 0xEACC, -/* 3000 */ 0xEAD2, 0xEADC, 0xEAD5, 0xEADA, 0xEACE, 0xFFFD, 0xFFFD, 0xEAD6, -/* 3008 */ 0xBFA3, 0xEAD4, 0xBFA6, 0xBFA5, 0xEAD0, 0xEAD1, 0xEACD, 0xEAD7, -/* 3010 */ 0xBFA4, 0xEADE, 0xEADD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDDA, 0xEDD6, -/* 3018 */ 0xC15F, 0xFFFD, 0xEDD0, 0xC159, 0xC169, 0xEDDC, 0xC161, 0xC15D, -/* 3020 */ 0xEDD3, 0xC164, 0xC167, 0xEDDE, 0xC15C, 0xEDD5, 0xC165, 0xEDE0, -/* 3028 */ 0xEDDD, 0xEDD1, 0xC160, 0xC15A, 0xC168, 0xEDD8, 0xC163, 0xEDD2, -/* 3030 */ 0xC15E, 0xEDDF, 0xC162, 0xC15B, 0xEDD9, 0xC166, 0xEDD7, 0xFFFD, -/* 3038 */ 0xFFFD, 0xEDDB, 0xFFFD, 0xFFFD, 0xFFFD, 0xF06E, 0xF074, 0xC2B9, -/* 3040 */ 0xF077, 0xC2B4, 0xC2B5, 0xF06F, 0xF076, 0xF071, 0xC2BA, 0xC2B7, -/* 3048 */ 0xFFFD, 0xF06D, 0xFFFD, 0xC2B6, 0xF073, 0xF075, 0xC2B8, 0xF072, -/* 3050 */ 0xF070, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2B8, 0xC3B7, 0xC3B8, -/* 3058 */ 0xC3B4, 0xFFFD, 0xC3B5, 0xFFFD, 0xF2B4, 0xF2B2, 0xFFFD, 0xF2B6, -/* 3060 */ 0xC3BA, 0xF2B7, 0xF2B0, 0xF2AF, 0xF2B3, 0xF2B1, 0xC3B6, 0xF2B5, -/* 3068 */ 0xF4AC, 0xC47E, 0xC47D, 0xF4AD, 0xFFFD, 0xF4AF, 0xF4AE, 0xC4A1, -/* 3070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF5EB, 0xF5E8, 0xF5E9, 0xFFFD, 0xF5E7, -/* 3078 */ 0xF5EA, 0xC4F2, 0xF5EC, 0xFFFD, 0xC4F1, 0xFFFD, 0xF742, 0xFFFD, -/* 3080 */ 0xC5D5, 0xC5D7, 0xF7EE, 0xC5D6, 0xF8B9, 0xF940, 0xF942, 0xF8FE, -/* 3088 */ 0xF941, 0xC66C, 0xA6CE, 0xFFFD, 0xACFB, 0xD26F, 0xAFCA, 0xFFFD, -/* 3090 */ 0xFFFD, 0xB2DA, 0xDAFC, 0xDAFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEADF, -/* 3098 */ 0xC16A, 0xEDE1, 0xFFFD, 0xFFFD, 0xC2BB, 0xFFFD, 0xF2BA, 0xF2B9, -/* 30A0 */ 0xC4A2, 0xF5ED, 0xFFFD, 0xF743, 0xC5F8, 0xCA49, 0xFFFD, 0xFFFD, -/* 30A8 */ 0xAAC9, 0xA875, 0xFFFD, 0xFFFD, 0xD04D, 0xFFFD, 0xFFFD, 0xD360, -/* 30B0 */ 0xD35B, 0xD35F, 0xD35D, 0xAFCB, 0xD35E, 0xD35C, 0xFFFD, 0xD6F1, -/* 30B8 */ 0xFFFD, 0xDAFE, 0xDB40, 0xDF69, 0xDF6A, 0xB86E, 0xB86F, 0xDF68, -/* 30C0 */ 0xDF6B, 0xDF67, 0xB86D, 0xFFFD, 0xBB40, 0xFFFD, 0xB870, 0xE37A, -/* 30C8 */ 0xFFFD, 0xBD7C, 0xE6F1, 0xBD7D, 0xFFFD, 0xBFA9, 0xEAE2, 0xEAE0, -/* 30D0 */ 0xEAE1, 0xEDE4, 0xEDE3, 0xEDE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2BB, -/* 30D8 */ 0xFFFD, 0xC3B9, 0xF2BC, 0xF744, 0xC5F9, 0xF8BA, 0xA6CF, 0xAACB, -/* 30E0 */ 0xAACA, 0xD04F, 0xACFC, 0xFFFD, 0xFFFD, 0xD04E, 0xD362, 0xFFFD, -/* 30E8 */ 0xAFCC, 0xD6F2, 0xD361, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2DC, 0xD6F5, -/* 30F0 */ 0xD6F3, 0xD6F4, 0xB2DB, 0xFFFD, 0xDB42, 0xDB43, 0xDB41, 0xFFFD, -/* 30F8 */ 0xB873, 0xDF6D, 0xDF6C, 0xDF6E, 0xB872, 0xB871, 0xFFFD, 0xFFFD, -/* 3100 */ 0xE6F2, 0xE6F4, 0xFFFD, 0xBD7E, 0xE6F3, 0xEAE3, 0xBFAA, 0xF079, -/* 3108 */ 0xFFFD, 0xF078, 0xC3BB, 0xF2BD, 0xC3BD, 0xC3BC, 0xF4B0, 0xF5EE, -/* 3110 */ 0xC4F3, 0xA6D0, 0xD050, 0xACFD, 0xD365, 0xAFCE, 0xD364, 0xD363, -/* 3118 */ 0xFFFD, 0xAFCD, 0xFFFD, 0xD6FB, 0xFFFD, 0xD6FD, 0xD6F6, 0xD6F7, -/* 3120 */ 0xB2DD, 0xD6F8, 0xB2DE, 0xD6FC, 0xD6F9, 0xD6FA, 0xB2DF, 0xFFFD, -/* 3128 */ 0xB5BE, 0xB5BF, 0xFFFD, 0xDB44, 0xFFFD, 0xFFFD, 0xFFFD, 0xDF6F, -/* 3130 */ 0xDF70, 0xFFFD, 0xE37E, 0xBB43, 0xBB41, 0xBB42, 0xE37B, 0xE37C, -/* 3138 */ 0xFFFD, 0xE37D, 0xE6F9, 0xFFFD, 0xE6FA, 0xBDA1, 0xE6F7, 0xE6F6, -/* 3140 */ 0xE6F8, 0xE6F5, 0xBFAD, 0xEAE4, 0xBFAB, 0xBFAC, 0xEDE6, 0xC16B, -/* 3148 */ 0xEDE5, 0xEFA8, 0xFFFD, 0xF07A, 0xF07B, 0xC2BC, 0xFFFD, 0xC2BD, -/* 3150 */ 0xC16C, 0xF2BE, 0xF2BF, 0xF4B1, 0xC4A3, 0xA6D1, 0xFFFD, 0xA6D2, -/* 3158 */ 0xACFE, 0xAACC, 0xAFCF, 0xD051, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5C0, -/* 3160 */ 0xA6D3, 0xAD41, 0xD052, 0xD053, 0xAD40, 0xAD42, 0xA6D4, 0xFFFD, -/* 3168 */ 0xD054, 0xAFD1, 0xD366, 0xAFD3, 0xAFD0, 0xAFD2, 0xFFFD, 0xD741, -/* 3170 */ 0xB2E0, 0xFFFD, 0xD740, 0xD6FE, 0xFFFD, 0xDF71, 0xFFFD, 0xFFFD, -/* 3178 */ 0xE3A1, 0xFFFD, 0xBDA2, 0xFFFD, 0xBFAE, 0xEAE6, 0xEAE5, 0xFFFD, -/* 3180 */ 0xEDE7, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5EF, 0xFFFD, 0xFFFD, 0xA6D5, -/* 3188 */ 0xCB73, 0xCDAA, 0xAD43, 0xD055, 0xFFFD, 0xD368, 0xFFFD, 0xFFFD, -/* 3190 */ 0xFFFD, 0xAFD4, 0xD367, 0xAFD5, 0xFFFD, 0xFFFD, 0xFFFD, 0xD743, -/* 3198 */ 0xFFFD, 0xFFFD, 0xB2E2, 0xD742, 0xD744, 0xFFFD, 0xB2E1, 0xFFFD, -/* 31A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDB46, 0xDB47, 0xDB45, 0xB5C1, 0xFFFD, -/* 31A8 */ 0xFFFD, 0xFFFD, 0xB874, 0xFFFD, 0xB875, 0xFFFD, 0xBB45, 0xFFFD, -/* 31B0 */ 0xE3A3, 0xE3A2, 0xBB44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31B8 */ 0xE6FB, 0xFFFD, 0xFFFD, 0xE6FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31C0 */ 0xEAE7, 0xFFFD, 0xFFFD, 0xC170, 0xC16F, 0xC16D, 0xC16E, 0xC171, -/* 31C8 */ 0xFFFD, 0xF07C, 0xC2BF, 0xC2BE, 0xF2C0, 0xF4B2, 0xFFFD, 0xFFFD, -/* 31D0 */ 0xFFFD, 0xC5A5, 0xC5A4, 0xA6D6, 0xFFFD, 0xFFFD, 0xD1FB, 0xFFFD, -/* 31D8 */ 0xB877, 0xB5C2, 0xB876, 0xBB46, 0xFFFD, 0xA6D7, 0xC9A9, 0xA6D8, -/* 31E0 */ 0xA6D9, 0xFFFD, 0xFFFD, 0xCDAB, 0xCB76, 0xFFFD, 0xCB77, 0xA877, -/* 31E8 */ 0xFFFD, 0xCB74, 0xA876, 0xFFFD, 0xA879, 0xCB75, 0xA87B, 0xA87A, -/* 31F0 */ 0xCB78, 0xA878, 0xFFFD, 0xFFFD, 0xFFFD, 0xAAD1, 0xAACF, 0xCDAD, -/* 31F8 */ 0xFFFD, 0xAACE, 0xFFFD, 0xFFFD, 0xFFFD, 0xAAD3, 0xAAD5, 0xAAD2, -/* 3200 */ 0xFFFD, 0xCDB0, 0xCDAC, 0xAAD6, 0xFFFD, 0xAAD0, 0xA87C, 0xFFFD, -/* 3208 */ 0xAAD4, 0xCDAF, 0xFFFD, 0xFFFD, 0xCDAE, 0xFFFD, 0xAACD, 0xFFFD, -/* 3210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD05B, 0xAD47, -/* 3218 */ 0xAD48, 0xD05D, 0xFFFD, 0xD057, 0xD05A, 0xD063, 0xD061, 0xFFFD, -/* 3220 */ 0xAD49, 0xD067, 0xAD4C, 0xD064, 0xD05C, 0xD059, 0xFFFD, 0xFFFD, -/* 3228 */ 0xDB49, 0xD062, 0xAD44, 0xD065, 0xD056, 0xD05F, 0xAD46, 0xAD4B, -/* 3230 */ 0xD060, 0xAD4F, 0xAD4D, 0xFFFD, 0xD058, 0xAD4A, 0xFFFD, 0xD05E, -/* 3238 */ 0xAD4E, 0xAD45, 0xD066, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3240 */ 0xFFFD, 0xAFDA, 0xFFFD, 0xAFE3, 0xAFD8, 0xAFD6, 0xD36A, 0xAFDE, -/* 3248 */ 0xAFDB, 0xD36C, 0xFFFD, 0xFFFD, 0xAFDD, 0xD36B, 0xD369, 0xD36E, -/* 3250 */ 0xAFE2, 0xAFE0, 0xDB48, 0xFFFD, 0xD36F, 0xD36D, 0xAFD7, 0xFFFD, -/* 3258 */ 0xFFFD, 0xAFD9, 0xAFDC, 0xFFFD, 0xAFDF, 0xFFFD, 0xAFE1, 0xFFFD, -/* 3260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3268 */ 0xFFFD, 0xD74E, 0xB2E4, 0xFFFD, 0xD745, 0xD747, 0xFFFD, 0xD748, -/* 3270 */ 0xFFFD, 0xD750, 0xD74C, 0xD74A, 0xFFFD, 0xD74D, 0xD751, 0xB2E5, -/* 3278 */ 0xB2E9, 0xD746, 0xFFFD, 0xD74F, 0xFFFD, 0xB2E7, 0xFFFD, 0xB2E6, -/* 3280 */ 0xD74B, 0xD749, 0xFFFD, 0xB2E3, 0xB2E8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5C8, 0xDB51, 0xFFFD, -/* 3290 */ 0xFFFD, 0xDB4F, 0xB5CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDB4A, -/* 3298 */ 0xDFA1, 0xFFFD, 0xB5C9, 0xDB4E, 0xFFFD, 0xFFFD, 0xDB4B, 0xB5C5, -/* 32A0 */ 0xB5CB, 0xDB50, 0xB5C7, 0xDB4D, 0xBB47, 0xB5C6, 0xDB4C, 0xB5CC, -/* 32A8 */ 0xB5C4, 0xB5C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDF77, -/* 32B0 */ 0xDF75, 0xFFFD, 0xDF7B, 0xFFFD, 0xDF73, 0xDFA2, 0xDF78, 0xFFFD, -/* 32B8 */ 0xDF72, 0xB87B, 0xB8A3, 0xDF7D, 0xFFFD, 0xDF76, 0xFFFD, 0xB87E, -/* 32C0 */ 0xFFFD, 0xFFFD, 0xB87C, 0xDF7E, 0xB879, 0xB878, 0xDF79, 0xB87D, -/* 32C8 */ 0xB5CD, 0xFFFD, 0xDF7C, 0xDF74, 0xB87A, 0xB8A1, 0xB8A2, 0xFFFD, -/* 32D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBB4C, 0xBB48, 0xFFFD, 0xBB4D, 0xE3A6, -/* 32D8 */ 0xFFFD, 0xFFFD, 0xE3A5, 0xE3A7, 0xBB4A, 0xE3A4, 0xBB4B, 0xE3AA, -/* 32E0 */ 0xE3A9, 0xE3A8, 0xFFFD, 0xBB49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32E8 */ 0xFFFD, 0xE741, 0xFFFD, 0xE744, 0xBDA8, 0xE743, 0xBDA7, 0xBDA3, -/* 32F0 */ 0xBDA4, 0xBDA5, 0xE740, 0xE6FE, 0xBDA6, 0xFFFD, 0xE742, 0xE6FD, -/* 32F8 */ 0xFFFD, 0xFFFD, 0xEAE9, 0xEAF3, 0xBFB1, 0xBFB0, 0xFFFD, 0xEAED, -/* 3300 */ 0xEAEF, 0xFFFD, 0xEAEA, 0xFFFD, 0xEAEE, 0xEAE8, 0xEAF1, 0xBFAF, -/* 3308 */ 0xEAF0, 0xEAEC, 0xFFFD, 0xEAF2, 0xFFFD, 0xEAEB, 0xC174, 0xEDE8, -/* 3310 */ 0xEDEE, 0xC178, 0xC17A, 0xC177, 0xC176, 0xFFFD, 0xC175, 0xC173, -/* 3318 */ 0xEDE9, 0xEDEC, 0xC172, 0xEDED, 0xFFFD, 0xC179, 0xEDEB, 0xFFFD, -/* 3320 */ 0xEDEA, 0xC2C0, 0xFFFD, 0xC2C1, 0xF0A1, 0xF07D, 0xF07E, 0xFFFD, -/* 3328 */ 0xFFFD, 0xF2C2, 0xFFFD, 0xF2C1, 0xC3BE, 0xF4B4, 0xC4A4, 0xF4B3, -/* 3330 */ 0xFFFD, 0xF5F0, 0xF745, 0xC5A6, 0xF943, 0xF944, 0xC5D8, 0xA6DA, -/* 3338 */ 0xFFFD, 0xAAD7, 0xDB52, 0xBB4E, 0xC17B, 0xEDEF, 0xA6DB, 0xFFFD, -/* 3340 */ 0xAFE5, 0xAFE4, 0xDB53, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAF4, 0xA6DC, -/* 3348 */ 0xAD50, 0xFFFD, 0xFFFD, 0xDB54, 0xDB55, 0xDB56, 0xBB4F, 0xBFB2, -/* 3350 */ 0xA6DD, 0xFFFD, 0xAAD8, 0xD068, 0xAFE6, 0xD370, 0xB2EA, 0xFFFD, -/* 3358 */ 0xDB57, 0xB8A4, 0xFFFD, 0xBB50, 0xBFB3, 0xC17C, 0xC2C2, 0xF4B5, -/* 3360 */ 0xA6DE, 0xAAD9, 0xFFFD, 0xFFFD, 0xAFE7, 0xD752, 0xB5CE, 0xFFFD, -/* 3368 */ 0xBB51, 0xE3AB, 0xE745, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA6DF, -/* 3370 */ 0xB5CF, 0xDFA3, 0xBB52, 0xA6E0, 0xCDB1, 0xD069, 0xAD51, 0xFFFD, -/* 3378 */ 0xFFFD, 0xD372, 0xFFFD, 0xFFFD, 0xAFEA, 0xFFFD, 0xAFE8, 0xAFE9, -/* 3380 */ 0xAFEB, 0xFFFD, 0xFFFD, 0xD371, 0xFFFD, 0xFFFD, 0xD757, 0xD754, -/* 3388 */ 0xD756, 0xB2EB, 0xB2ED, 0xB2EC, 0xD753, 0xB2EE, 0xD755, 0xFFFD, -/* 3390 */ 0xDB58, 0xDB59, 0xFFFD, 0xDB5A, 0xDFA6, 0xFFFD, 0xDFA7, 0xFFFD, -/* 3398 */ 0xDFA5, 0xDFA8, 0xFFFD, 0xB8A5, 0xFFFD, 0xDFA4, 0xFFFD, 0xBB53, -/* 33A0 */ 0xFFFD, 0xFFFD, 0xE74A, 0xE746, 0xE749, 0xE74B, 0xE748, 0xE747, -/* 33A8 */ 0xFFFD, 0xEAF5, 0xEAF6, 0xEAF7, 0xBFB4, 0xBFB5, 0xEDF1, 0xEDF0, -/* 33B0 */ 0xEDF2, 0xFFFD, 0xF0A3, 0xF0A2, 0xFFFD, 0xF2C4, 0xFFFD, 0xF2C5, -/* 33B8 */ 0xF2C3, 0xFFFD, 0xC4A5, 0xFFFD, 0xF4B6, 0xF4B7, 0xFFFD, 0xF746, -/* 33C0 */ 0xF7EF, 0xF8BB, 0xA6E1, 0xA87D, 0xFFFD, 0xC17D, 0xA6E2, 0xFFFD, -/* 33C8 */ 0xD758, 0xDB5B, 0xFFFD, 0xC641, 0xCA4A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33D0 */ 0xCA4B, 0xCA4D, 0xA6E3, 0xCA4E, 0xCA4C, 0xFFFD, 0xFFFD, 0xCBA2, -/* 33D8 */ 0xCBA3, 0xCB7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBA1, 0xA8A1, -/* 33E0 */ 0xFFFD, 0xA8A2, 0xCB7C, 0xCB7A, 0xCB79, 0xCB7D, 0xA87E, 0xCB7E, -/* 33E8 */ 0xD06A, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDB6, 0xAADC, 0xCDB5, 0xCDB7, -/* 33F0 */ 0xFFFD, 0xAADB, 0xCDBC, 0xAADF, 0xCDB2, 0xCDC0, 0xCDC6, 0xAAE6, -/* 33F8 */ 0xCDC3, 0xAAE3, 0xFFFD, 0xCDB9, 0xCDBF, 0xCDC1, 0xFFFD, 0xCDB4, -/* 3400 */ 0xAAE2, 0xAADD, 0xCDBA, 0xAAE4, 0xAAE7, 0xAAE1, 0xFFFD, 0xAADA, -/* 3408 */ 0xCDBE, 0xCDB8, 0xCDC5, 0xAAE9, 0xAAE5, 0xAAE0, 0xCDBD, 0xAFEC, -/* 3410 */ 0xCDBB, 0xAADE, 0xAAE8, 0xFFFD, 0xCDB3, 0xFFFD, 0xCDC2, 0xCDC4, -/* 3418 */ 0xAD62, 0xAD5C, 0xAD64, 0xAD61, 0xD071, 0xD074, 0xAD5D, 0xFFFD, -/* 3420 */ 0xD06B, 0xFFFD, 0xAD56, 0xAD60, 0xFFFD, 0xAD63, 0xAD65, 0xD0A2, -/* 3428 */ 0xD077, 0xFFFD, 0xAD55, 0xD0A1, 0xAD59, 0xAD57, 0xAD52, 0xD06F, -/* 3430 */ 0xFFFD, 0xD07E, 0xD073, 0xD076, 0xD0A5, 0xFFFD, 0xAD66, 0xD07D, -/* 3438 */ 0xAD5E, 0xD078, 0xD0A4, 0xD075, 0xD079, 0xD07C, 0xFFFD, 0xFFFD, -/* 3440 */ 0xD06D, 0xD0A3, 0xD07B, 0xFFFD, 0xFFFD, 0xD06C, 0xFFFD, 0xD070, -/* 3448 */ 0xAD5F, 0xAD5A, 0xAD53, 0xAD58, 0xAD54, 0xAD67, 0xD06E, 0xD3A5, -/* 3450 */ 0xAD5B, 0xFFFD, 0xFFFD, 0xD07A, 0xCE41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3A8, 0xAFFA, 0xFFFD, -/* 3460 */ 0xD376, 0xFFFD, 0xD3A3, 0xD37D, 0xFFFD, 0xD3B2, 0xFFFD, 0xD3AA, -/* 3468 */ 0xFFFD, 0xD37E, 0xFFFD, 0xD3A9, 0xD378, 0xD37C, 0xD3B5, 0xAFFD, -/* 3470 */ 0xD3AD, 0xD3A4, 0xAFED, 0xD3B3, 0xD374, 0xFFFD, 0xD3AC, 0xFFFD, -/* 3478 */ 0xAFFC, 0xAFF7, 0xD373, 0xAFF5, 0xAFF4, 0xAFF9, 0xD3AB, 0xAFF1, -/* 3480 */ 0xAFF8, 0xD072, 0xDB5C, 0xD3A6, 0xFFFD, 0xFFFD, 0xD37A, 0xAFFB, -/* 3488 */ 0xD37B, 0xD3A1, 0xAFFE, 0xD375, 0xD3AF, 0xFFFD, 0xD3AE, 0xD3B6, -/* 3490 */ 0xAFF3, 0xAFF0, 0xD3B4, 0xD3B0, 0xD3A7, 0xD3A2, 0xAFF6, 0xAFF2, -/* 3498 */ 0xD377, 0xAFEE, 0xD3B1, 0xAFEF, 0xFFFD, 0xD379, 0xD75E, 0xD760, -/* 34A0 */ 0xD765, 0xD779, 0xB2FC, 0xB2F2, 0xFFFD, 0xD75D, 0xB2FD, 0xB2FE, -/* 34A8 */ 0xD768, 0xD76F, 0xD775, 0xFFFD, 0xD762, 0xFFFD, 0xD769, 0xFFFD, -/* 34B0 */ 0xFFFD, 0xB340, 0xD777, 0xD772, 0xB2FA, 0xB2F8, 0xD76E, 0xD76A, -/* 34B8 */ 0xD75C, 0xB2EF, 0xD761, 0xD759, 0xFFFD, 0xB2F7, 0xB2F9, 0xD766, -/* 34C0 */ 0xD763, 0xB2F4, 0xD773, 0xB2F1, 0xD764, 0xD77A, 0xD76C, 0xFFFD, -/* 34C8 */ 0xD76B, 0xB2F0, 0xFFFD, 0xB2FB, 0xFFFD, 0xB2F3, 0xD75A, 0xD75F, -/* 34D0 */ 0xD770, 0xD776, 0xB341, 0xD75B, 0xD767, 0xD76D, 0xB2F6, 0xFFFD, -/* 34D8 */ 0xFFFD, 0xD778, 0xD771, 0xD774, 0xB2F5, 0xFFFD, 0xDB6C, 0xDB60, -/* 34E0 */ 0xB5D7, 0xDB7D, 0xDBA7, 0xDBAA, 0xB5D5, 0xDB68, 0xDBA3, 0xDB69, -/* 34E8 */ 0xDB77, 0xB5E2, 0xDB73, 0xB5DF, 0xFFFD, 0xDB74, 0xDB5D, 0xFFFD, -/* 34F0 */ 0xDBA4, 0xFFFD, 0xFFFD, 0xB5E8, 0xDBA1, 0xDB75, 0xDBAC, 0xDB70, -/* 34F8 */ 0xDFC8, 0xFFFD, 0xDBAF, 0xB5E6, 0xDB6E, 0xDB7A, 0xB5E9, 0xB5D4, -/* 3500 */ 0xDB72, 0xDBAD, 0xDB6B, 0xDB64, 0xDB6F, 0xFFFD, 0xDB63, 0xDB61, -/* 3508 */ 0xB5D0, 0xDBA5, 0xDB6A, 0xDBA8, 0xFFFD, 0xDBA9, 0xB5D8, 0xB5DD, -/* 3510 */ 0xB5D9, 0xB5E1, 0xDB7E, 0xB5DA, 0xDB76, 0xDB66, 0xFFFD, 0xB5D2, -/* 3518 */ 0xDB5E, 0xDBA2, 0xDBAB, 0xDB65, 0xB5E0, 0xDBB0, 0xDB71, 0xFFFD, -/* 3520 */ 0xDB6D, 0xFFFD, 0xB5D1, 0xB5E5, 0xFFFD, 0xDB7C, 0xB5E7, 0xFFFD, -/* 3528 */ 0xDB78, 0xB5DC, 0xB5D6, 0xB5DE, 0xB5D3, 0xB5E4, 0xDB79, 0xDB67, -/* 3530 */ 0xDB7B, 0xDB62, 0xDBA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3538 */ 0xFFFD, 0xFFFD, 0xDBAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3540 */ 0xFFFD, 0xFFFD, 0xDB5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3548 */ 0xDFC7, 0xFFFD, 0xDFDD, 0xB855, 0xDFCC, 0xFFFD, 0xDFCA, 0xDFB5, -/* 3550 */ 0xB8A9, 0xDFC5, 0xDFD9, 0xDFC1, 0xB8B1, 0xDFD8, 0xDFBF, 0xB5E3, -/* 3558 */ 0xDFCF, 0xDFC0, 0xDFD6, 0xB8B0, 0xB8A8, 0xFFFD, 0xDFAA, 0xDFB2, -/* 3560 */ 0xFFFD, 0xDFCB, 0xDFC3, 0xDFDC, 0xDFC6, 0xB8B6, 0xDFD7, 0xFFFD, -/* 3568 */ 0xB8AD, 0xFFFD, 0xDFC9, 0xDFD1, 0xDFB6, 0xDFD0, 0xFFFD, 0xDFE1, -/* 3570 */ 0xDFB1, 0xDFD2, 0xFFFD, 0xDFDF, 0xFFFD, 0xDFAB, 0xB5DB, 0xFFFD, -/* 3578 */ 0xDFB9, 0xDFB8, 0xB8AF, 0xFFFD, 0xDFBC, 0xDFBE, 0xDFCD, 0xDFDE, -/* 3580 */ 0xB8B2, 0xFFFD, 0xB8B3, 0xFFFD, 0xDFB0, 0xB8AB, 0xDFB4, 0xDFDA, -/* 3588 */ 0xB8B4, 0xFFFD, 0xB8AC, 0xB8AE, 0xB8B5, 0xDFE0, 0xDFD3, 0xDFCE, -/* 3590 */ 0xFFFD, 0xFFFD, 0xDFBB, 0xDFBA, 0xB8AA, 0xDFAC, 0xB8A7, 0xDFC4, -/* 3598 */ 0xDFAD, 0xDFC2, 0xFFFD, 0xFFFD, 0xDFB7, 0xDFDB, 0xFFFD, 0xFFFD, -/* 35A0 */ 0xFFFD, 0xB8A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFB3, 0xFFFD, 0xFFFD, -/* 35A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFAF, 0xDFD5, 0xDFAE, 0xBB60, -/* 35B0 */ 0xE3D3, 0xFFFD, 0xFFFD, 0xE3C2, 0xFFFD, 0xFFFD, 0xE3AC, 0xE3CA, -/* 35B8 */ 0xBB58, 0xE3BB, 0xE3C5, 0xBB5B, 0xE3BE, 0xBB59, 0xE3AF, 0xE3CD, -/* 35C0 */ 0xE3AE, 0xE3C1, 0xFFFD, 0xE3AD, 0xFFFD, 0xFFFD, 0xE3BF, 0xE3C8, -/* 35C8 */ 0xE3C6, 0xE3BA, 0xE3B5, 0xE3B3, 0xFFFD, 0xE3B4, 0xE3C7, 0xE3D2, -/* 35D0 */ 0xE3BC, 0xBB5A, 0xFFFD, 0xE3B7, 0xFFFD, 0xE3CB, 0xFFFD, 0xBB5D, -/* 35D8 */ 0xE3B6, 0xE3B0, 0xE3C0, 0xBB61, 0xFFFD, 0xFFFD, 0xBB55, 0xBB5E, -/* 35E0 */ 0xE3B8, 0xE3B2, 0xFFFD, 0xBB57, 0xDFD4, 0xBB56, 0xE3C3, 0xFFFD, -/* 35E8 */ 0xBB54, 0xBB63, 0xBB5C, 0xE3C4, 0xE3B9, 0xE3B1, 0xE3CC, 0xE3BD, -/* 35F0 */ 0xBB62, 0xE3D0, 0xBB5F, 0xE3CF, 0xFFFD, 0xE3C9, 0xE3CE, 0xFFFD, -/* 35F8 */ 0xFFFD, 0xFFFD, 0xE3D1, 0xE773, 0xE774, 0xE767, 0xE766, 0xE762, -/* 3600 */ 0xBDB4, 0xFFFD, 0xBDAC, 0xE776, 0xE775, 0xDFA9, 0xE75F, 0xE763, -/* 3608 */ 0xE75D, 0xFFFD, 0xE770, 0xE761, 0xFFFD, 0xE777, 0xE75A, 0xE758, -/* 3610 */ 0xE764, 0xE76E, 0xE769, 0xBDB6, 0xE74F, 0xFFFD, 0xE76D, 0xFFFD, -/* 3618 */ 0xFFFD, 0xFFFD, 0xBDB7, 0xDFBD, 0xE75B, 0xE752, 0xE755, 0xE77B, -/* 3620 */ 0xE75C, 0xE753, 0xE751, 0xE74E, 0xFFFD, 0xBDB0, 0xE765, 0xBDAF, -/* 3628 */ 0xBDB3, 0xE760, 0xE768, 0xBDA9, 0xE778, 0xE77C, 0xBDAB, 0xFFFD, -/* 3630 */ 0xE757, 0xE76B, 0xE76F, 0xE754, 0xE779, 0xBDB2, 0xFFFD, 0xBDB1, -/* 3638 */ 0xE74C, 0xBDB5, 0xE772, 0xE756, 0xE76A, 0xE750, 0xE75E, 0xE759, -/* 3640 */ 0xBDAD, 0xBDAE, 0xE76C, 0xE77D, 0xE77A, 0xE771, 0xFFFD, 0xFFFD, -/* 3648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE74D, -/* 3650 */ 0xFFFD, 0xBDAA, 0xEB49, 0xFFFD, 0xEB40, 0xEB43, 0xFFFD, 0xBFBB, -/* 3658 */ 0xEB45, 0xEAF9, 0xEB41, 0xEB47, 0xBFB8, 0xBFBC, 0xBFB6, 0xFFFD, -/* 3660 */ 0xFFFD, 0xEAFB, 0xEB4C, 0xFFFD, 0xFFFD, 0xEB46, 0xFFFD, 0xEAFC, -/* 3668 */ 0xEB55, 0xEB4F, 0xEAF8, 0xEE46, 0xEAFE, 0xBFB7, 0xFFFD, 0xEB4A, -/* 3670 */ 0xFFFD, 0xEB54, 0xBFBF, 0xFFFD, 0xEB51, 0xEAFD, 0xEB44, 0xEB48, -/* 3678 */ 0xEB42, 0xEB56, 0xEB53, 0xEB50, 0xBFB9, 0xBFBA, 0xBFBE, 0xEAFA, -/* 3680 */ 0xEB57, 0xBFBD, 0xEB4D, 0xFFFD, 0xFFFD, 0xEB4B, 0xFFFD, 0xFFFD, -/* 3688 */ 0xFFFD, 0xEB4E, 0xEE53, 0xEE40, 0xEE45, 0xEE52, 0xEE44, 0xEDFB, -/* 3690 */ 0xEE41, 0xFFFD, 0xC1A2, 0xFFFD, 0xEDF4, 0xEE4D, 0xEE4F, 0xEDF3, -/* 3698 */ 0xC1A1, 0xEE51, 0xEE49, 0xC1A8, 0xEE50, 0xEE42, 0xC1AA, 0xEDF9, -/* 36A0 */ 0xEB52, 0xEE4A, 0xEE47, 0xEDF5, 0xEE55, 0xC1A4, 0xFFFD, 0xFFFD, -/* 36A8 */ 0xC1A5, 0xEDF7, 0xEE48, 0xFFFD, 0xEE54, 0xEE4B, 0xEDFD, 0xC1A7, -/* 36B0 */ 0xC1A3, 0xEE4C, 0xEDFE, 0xEE56, 0xEDF8, 0xEE43, 0xEE4E, 0xEDFA, -/* 36B8 */ 0xEDFC, 0xFFFD, 0xC2CB, 0xEDF6, 0xC1A9, 0xC2C4, 0xC17E, 0xFFFD, -/* 36C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC1A6, 0xC2C8, 0xF0B3, 0xFFFD, 0xF0A9, -/* 36C8 */ 0xF0A4, 0xF0AA, 0xF0B4, 0xF0B8, 0xF0B7, 0xC2CA, 0xC2C9, 0xFFFD, -/* 36D0 */ 0xFFFD, 0xF0AB, 0xF0B9, 0xF0AE, 0xF0A6, 0xFFFD, 0xF0A8, 0xF0A7, -/* 36D8 */ 0xF0AD, 0xF0B2, 0xF0A5, 0xF0AC, 0xF0B1, 0xC2C7, 0xFFFD, 0xF0AF, -/* 36E0 */ 0xFFFD, 0xC2C5, 0xF0B0, 0xC2C3, 0xC2C6, 0xF2D5, 0xF0B5, 0xFFFD, -/* 36E8 */ 0xFFFD, 0xC3C2, 0xFFFD, 0xF2CD, 0xF2D1, 0xF2C9, 0xF2CC, 0xFFFD, -/* 36F0 */ 0xF2D4, 0xC3C0, 0xF2D9, 0xF2D2, 0xFFFD, 0xF2CA, 0xF2DA, 0xF2D3, -/* 36F8 */ 0xC3C3, 0xC3C4, 0xF2D7, 0xFFFD, 0xF2CB, 0xC3BF, 0xC3C1, 0xF2C6, -/* 3700 */ 0xF2CE, 0xF2C8, 0xFFFD, 0xF2D8, 0xF2D6, 0xF2C7, 0xF2CF, 0xFFFD, -/* 3708 */ 0xFFFD, 0xFFFD, 0xF4BE, 0xC3C5, 0xF2D0, 0xC4A7, 0xC4A9, 0xC4A6, -/* 3710 */ 0xFFFD, 0xF4C3, 0xF4BB, 0xF4B9, 0xF4BD, 0xF4BA, 0xFFFD, 0xFFFD, -/* 3718 */ 0xF4BF, 0xF4C1, 0xC4AA, 0xC4AC, 0xFFFD, 0xF4C0, 0xC4AD, 0xC4AB, -/* 3720 */ 0xF4C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4A8, 0xFFFD, 0xFFFD, -/* 3728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC4F4, 0xF5F1, 0xF5F7, 0xC4F6, 0xF4BC, -/* 3730 */ 0xF5F6, 0xFFFD, 0xF5FD, 0xF5F4, 0xF5FB, 0xF5FA, 0xF4B8, 0xF5F5, -/* 3738 */ 0xF0B6, 0xF5FE, 0xF5F3, 0xF5F8, 0xFFFD, 0xF5FC, 0xF5F2, 0xFFFD, -/* 3740 */ 0xF74A, 0xC4F5, 0xF5F9, 0xFFFD, 0xFFFD, 0xF7F4, 0xF74B, 0xF749, -/* 3748 */ 0xF747, 0xF748, 0xF74C, 0xFFFD, 0xC5D9, 0xF7F2, 0xF7F0, 0xF7F5, -/* 3750 */ 0xF7F3, 0xFFFD, 0xF7F6, 0xC5DA, 0xF7F1, 0xFFFD, 0xFFFD, 0xF8BC, -/* 3758 */ 0xFFFD, 0xFFFD, 0xF945, 0xF946, 0xF947, 0xFFFD, 0xFFFD, 0xF9C7, -/* 3760 */ 0xF9BD, 0xCA4F, 0xAAEA, 0xFFFD, 0xAD68, 0xFFFD, 0xD3B8, 0xD3B7, -/* 3768 */ 0xB040, 0xB342, 0xD77C, 0xFFFD, 0xFFFD, 0xD77B, 0xFFFD, 0xB5EA, -/* 3770 */ 0xB8B8, 0xFFFD, 0xB8B7, 0xB8B9, 0xFFFD, 0xE3D4, 0xE77E, 0xEB58, -/* 3778 */ 0xEB5A, 0xEB59, 0xFFFD, 0xC1AB, 0xEE57, 0xF0BA, 0xF9A5, 0xA6E4, -/* 3780 */ 0xFFFD, 0xCDC9, 0xCDCA, 0xCDC8, 0xCDC7, 0xAAEB, 0xFFFD, 0xD0A9, -/* 3788 */ 0xD0A7, 0xFFFD, 0xFFFD, 0xD0A6, 0xFFFD, 0xAD69, 0xAD6B, 0xAD6A, -/* 3790 */ 0xD0A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3798 */ 0xFFFD, 0xD3C4, 0xD3C1, 0xD3BF, 0xFFFD, 0xFFFD, 0xB041, 0xD3C2, -/* 37A0 */ 0xB046, 0xD3BC, 0xD3CB, 0xFFFD, 0xD3CD, 0xD3BD, 0xFFFD, 0xB043, -/* 37A8 */ 0xD3CE, 0xD3C9, 0xD3BB, 0xD3C0, 0xD3CA, 0xD3C6, 0xD3C3, 0xFFFD, -/* 37B0 */ 0xB048, 0xD3CC, 0xD3BE, 0xFFFD, 0xFFFD, 0xD3C7, 0xD3B9, 0xB047, -/* 37B8 */ 0xB044, 0xD3C5, 0xFFFD, 0xD3C8, 0xD3BA, 0xB045, 0xB042, 0xFFFD, -/* 37C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB34C, 0xD7A5, 0xB34B, 0xFFFD, 0xD7A8, -/* 37C8 */ 0xD7AB, 0xB348, 0xB346, 0xD77E, 0xD7A9, 0xD7A7, 0xD7A4, 0xD7AC, -/* 37D0 */ 0xD7AD, 0xD7AF, 0xD7B0, 0xD77D, 0xB345, 0xD7A2, 0xD7A1, 0xD7AE, -/* 37D8 */ 0xB347, 0xD7A3, 0xB349, 0xB344, 0xD7A6, 0xB34D, 0xFFFD, 0xB34A, -/* 37E0 */ 0xD7AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5F1, 0xDBBF, 0xFFFD, 0xDBB4, -/* 37E8 */ 0xB5EE, 0xFFFD, 0xDFE7, 0xDBBD, 0xDBB1, 0xB5EC, 0xDBB6, 0xB5EF, -/* 37F0 */ 0xDBBA, 0xDBB8, 0xB5F2, 0xB5EB, 0xFFFD, 0xFFFD, 0xDBB2, 0xDBB5, -/* 37F8 */ 0xB5F0, 0xFFFD, 0xDBB3, 0xFFFD, 0xDBBE, 0xDBBC, 0xDBB7, 0xDBB9, -/* 3800 */ 0xDBBB, 0xB5ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3808 */ 0xFFFD, 0xDFE8, 0xDFEE, 0xDFE4, 0xDFEA, 0xB8BA, 0xDFE6, 0xB8C0, -/* 3810 */ 0xFFFD, 0xFFFD, 0xB8BF, 0xFFFD, 0xB8BE, 0xDFED, 0xB8C1, 0xB8C2, -/* 3818 */ 0xDFE3, 0xDFF0, 0xB8C3, 0xB8BD, 0xB8BC, 0xDFEC, 0xB8C4, 0xDFE2, -/* 3820 */ 0xDFE5, 0xDFEF, 0xDFEB, 0xFFFD, 0xFFFD, 0xE3F4, 0xE3E9, 0xB8BB, -/* 3828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBB6A, 0xE3DD, 0xE3F2, 0xE3DE, -/* 3830 */ 0xBB65, 0xFFFD, 0xE3DB, 0xFFFD, 0xE3E4, 0xE3DC, 0xBB67, 0xE3D6, -/* 3838 */ 0xE3F1, 0xBB68, 0xE3EE, 0xE3EF, 0xE3D7, 0xBB6D, 0xE3E6, 0xFFFD, -/* 3840 */ 0xE3E0, 0xE3E7, 0xE3DA, 0xFFFD, 0xE3F3, 0xE3EB, 0xE3E5, 0xE3D5, -/* 3848 */ 0xBB69, 0xE3EC, 0xFFFD, 0xBB6C, 0xE3F0, 0xFFFD, 0xE3EA, 0xBB66, -/* 3850 */ 0xE3E8, 0xFFFD, 0xE3E2, 0xBB64, 0xE3D9, 0xE3E1, 0xE3ED, 0xE3DF, -/* 3858 */ 0xFFFD, 0xFFFD, 0xE3E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3860 */ 0xBDC1, 0xDFE9, 0xE7B2, 0xE7BB, 0xE7B1, 0xE7AD, 0xE7AA, 0xBDC2, -/* 3868 */ 0xE7A8, 0xBB6B, 0xE7A1, 0xBDC0, 0xE7A7, 0xBDBF, 0xE7AC, 0xE7A9, -/* 3870 */ 0xE7B9, 0xE7B4, 0xE7AE, 0xE7B3, 0xBDBB, 0xE7AB, 0xE7BE, 0xE7A2, -/* 3878 */ 0xE7A3, 0xE7BA, 0xBDBC, 0xE7BF, 0xBDBE, 0xE7C0, 0xE7B0, 0xE3D8, -/* 3880 */ 0xE7B6, 0xE7AF, 0xE7B8, 0xE7B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7A6, -/* 3888 */ 0xBDB9, 0xE7BD, 0xBDBA, 0xE7A4, 0xBDBD, 0xEB64, 0xE7B7, 0xE7BC, -/* 3890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEB61, 0xBDB8, 0xBFC0, -/* 3898 */ 0xEB6B, 0xEB67, 0xFFFD, 0xEB65, 0xEB60, 0xEB6F, 0xFFFD, 0xFFFD, -/* 38A0 */ 0xFFFD, 0xBFC4, 0xFFFD, 0xEB5C, 0xEB68, 0xEB69, 0xEB5F, 0xEB5E, -/* 38A8 */ 0xEB6C, 0xFFFD, 0xEB62, 0xEB5D, 0xEB63, 0xFFFD, 0xEB6E, 0xEB5B, -/* 38B0 */ 0xEB6D, 0xEB6A, 0xBFC2, 0xBFC1, 0xFFFD, 0xFFFD, 0xBFC3, 0xEB66, -/* 38B8 */ 0xF0CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEE59, 0xC1B1, -/* 38C0 */ 0xEE5D, 0xEE5A, 0xEE61, 0xEE67, 0xEE5C, 0xFFFD, 0xEE70, 0xC1AE, -/* 38C8 */ 0xEE6A, 0xEE5F, 0xEE6B, 0xEE66, 0xEE6D, 0xEE5E, 0xC1B3, 0xC1B2, -/* 38D0 */ 0xEE60, 0xEE6E, 0xEE58, 0xEE6C, 0xC1AC, 0xFFFD, 0xEE64, 0xEE63, -/* 38D8 */ 0xEE68, 0xEE5B, 0xC1B0, 0xFFFD, 0xC1B4, 0xEE62, 0xEE69, 0xC1B5, -/* 38E0 */ 0xEE65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1AD, 0xC1AF, 0xF0C7, -/* 38E8 */ 0xF0C5, 0xFFFD, 0xFFFD, 0xF0CC, 0xF0C9, 0xF0CD, 0xFFFD, 0xF0BE, -/* 38F0 */ 0xF0C6, 0xF0D1, 0xEE6F, 0xF0C2, 0xC2CF, 0xE7A5, 0xF0BD, 0xF0CA, -/* 38F8 */ 0xF0C4, 0xF0C1, 0xF0BC, 0xF0BB, 0xF0D0, 0xFFFD, 0xF0C0, 0xF0BF, -/* 3900 */ 0xC2CD, 0xF0C8, 0xFFFD, 0xC2CC, 0xFFFD, 0xFFFD, 0xC2CE, 0xF0C3, -/* 3908 */ 0xF0CF, 0xFFFD, 0xF2DE, 0xF2DF, 0xFFFD, 0xC3C9, 0xF2DC, 0xC3C6, -/* 3910 */ 0xF2E4, 0xFFFD, 0xC3CA, 0xF2E6, 0xF2DB, 0xF0CE, 0xF2E8, 0xF2DD, -/* 3918 */ 0xFFFD, 0xC3C7, 0xF2E3, 0xFFFD, 0xF2E5, 0xF2E0, 0xF2E7, 0xF2E2, -/* 3920 */ 0xF2E1, 0xC3C8, 0xFFFD, 0xFFFD, 0xF4C5, 0xF4C6, 0xFFFD, 0xF4C8, -/* 3928 */ 0xC4AE, 0xC4AF, 0xF4C9, 0xF4C7, 0xFFFD, 0xF4C4, 0xFFFD, 0xF642, -/* 3930 */ 0xF645, 0xF641, 0xFFFD, 0xC4FA, 0xF643, 0xC4F9, 0xC4F8, 0xC4F7, -/* 3938 */ 0xF644, 0xF751, 0xF74F, 0xFFFD, 0xF74E, 0xF640, 0xF750, 0xF646, -/* 3940 */ 0xF74D, 0xFFFD, 0xF7F9, 0xF7D7, 0xF7F7, 0xC5DB, 0xF7F8, 0xF7FA, -/* 3948 */ 0xFFFD, 0xF8BF, 0xC5FA, 0xF8BE, 0xF8BD, 0xC5FB, 0xFFFD, 0xC65A, -/* 3950 */ 0xF96E, 0xF9A7, 0xF9A6, 0xF9A8, 0xA6E5, 0xD0AA, 0xFFFD, 0xD3CF, -/* 3958 */ 0xD3D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBC0, 0xFFFD, 0xF647, 0xF8C0, -/* 3960 */ 0xA6E6, 0xAD6C, 0xD0AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7B1, 0xB34E, -/* 3968 */ 0xFFFD, 0xDBC2, 0xDBC1, 0xB5F3, 0xFFFD, 0xB8C5, 0xE7C1, 0xBDC3, -/* 3970 */ 0xFFFD, 0xBDC4, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFC5, 0xC5FC, 0xA6E7, -/* 3978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD0AC, 0xAAED, 0xD0AE, 0xD0AD, 0xAD6D, -/* 3980 */ 0xFFFD, 0xD3D1, 0xFFFD, 0xD3D8, 0xB049, 0xD3D6, 0xD3D4, 0xFFFD, -/* 3988 */ 0xD3DB, 0xD3D2, 0xD3D3, 0xB04A, 0xFFFD, 0xB04E, 0xFFFD, 0xFFFD, -/* 3990 */ 0xD3DC, 0xB04D, 0xD3DA, 0xD3D7, 0xD3D5, 0xB04B, 0xB04C, 0xD3D9, -/* 3998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB350, 0xD7B2, 0xFFFD, 0xB355, -/* 39A0 */ 0xD7C2, 0xB354, 0xD7C4, 0xFFFD, 0xFFFD, 0xD7B8, 0xB352, 0xD7C3, -/* 39A8 */ 0xFFFD, 0xD7B3, 0xB353, 0xD7BF, 0xD7BB, 0xD7BD, 0xD7B7, 0xD7BE, -/* 39B0 */ 0xFFFD, 0xFFFD, 0xB34F, 0xD7BA, 0xFFFD, 0xD7B9, 0xD7B5, 0xFFFD, -/* 39B8 */ 0xD7C0, 0xFFFD, 0xFFFD, 0xD7BC, 0xD7B4, 0xFFFD, 0xD7B6, 0xB351, -/* 39C0 */ 0xD7C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5F6, 0xDBCD, 0xFFFD, -/* 39C8 */ 0xFFFD, 0xFFFD, 0xDBC9, 0xDBCB, 0xDBC6, 0xDBC5, 0xDBC3, 0xFFFD, -/* 39D0 */ 0xDBCA, 0xDBCC, 0xDBC8, 0xFFFD, 0xDBC7, 0xB5F4, 0xB5F5, 0xFFFD, -/* 39D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBCF, 0xB8CD, 0xDFF2, -/* 39E0 */ 0xDFF8, 0xDFF3, 0xDFF4, 0xFFFD, 0xDFF9, 0xFFFD, 0xB8CF, 0xFFFD, -/* 39E8 */ 0xB8C7, 0xB8CE, 0xDFF1, 0xDBC4, 0xB8CA, 0xB8C8, 0xDFF7, 0xDFF6, -/* 39F0 */ 0xB8C9, 0xB8CB, 0xDFF5, 0xB8C6, 0xFFFD, 0xB8CC, 0xFFFD, 0xFFFD, -/* 39F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3F6, 0xBB74, 0xFFFD, 0xFFFD, 0xE442, -/* 3A00 */ 0xE441, 0xFFFD, 0xE3FB, 0xBB76, 0xE440, 0xE3F7, 0xE3F8, 0xBB6E, -/* 3A08 */ 0xBB70, 0xFFFD, 0xE3FD, 0xE3F5, 0xBB72, 0xBB71, 0xE3F9, 0xE3FE, -/* 3A10 */ 0xE3FC, 0xBB73, 0xE3FA, 0xFFFD, 0xFFFD, 0xDBCE, 0xBB6F, 0xFFFD, -/* 3A18 */ 0xFFFD, 0xE7C2, 0xE7C9, 0xBDC6, 0xFFFD, 0xE7CD, 0xBDCA, 0xE7C5, -/* 3A20 */ 0xE7C3, 0xFFFD, 0xE7CC, 0xFFFD, 0xBDC5, 0xE7CB, 0xBDC7, 0xBDC8, -/* 3A28 */ 0xE7C4, 0xBDC9, 0xE7CA, 0xE7C6, 0xE7C7, 0xE7C8, 0xBB75, 0xFFFD, -/* 3A30 */ 0xFFFD, 0xFFFD, 0xEB70, 0xEB7C, 0xFFFD, 0xBFCA, 0xEB77, 0xEB79, -/* 3A38 */ 0xFFFD, 0xBFC8, 0xEB71, 0xEB75, 0xFFFD, 0xEB78, 0xBFC6, 0xBFC9, -/* 3A40 */ 0xEB7B, 0xEB73, 0xEB74, 0xEB7A, 0xEB72, 0xEB76, 0xBFC7, 0xEE72, -/* 3A48 */ 0xFFFD, 0xEE71, 0xC1B7, 0xEE77, 0xC1B9, 0xFFFD, 0xFFFD, 0xC1B6, -/* 3A50 */ 0xEE73, 0xC1BA, 0xEE74, 0xFFFD, 0xFFFD, 0xEE75, 0xEE78, 0xFFFD, -/* 3A58 */ 0xC1B8, 0xFFFD, 0xF0D6, 0xFFFD, 0xFFFD, 0xF0D9, 0xFFFD, 0xF0D3, -/* 3A60 */ 0xF0D5, 0xFFFD, 0xFFFD, 0xF0D4, 0xF0D7, 0xF0D8, 0xEE76, 0xF0D2, -/* 3A68 */ 0xFFFD, 0xFFFD, 0xC3CD, 0xF2EC, 0xF2EF, 0xF2F1, 0xF2EA, 0xF2EB, -/* 3A70 */ 0xF2EE, 0xF2F0, 0xC3CE, 0xC3CC, 0xC3CB, 0xF2ED, 0xF2E9, 0xF4CA, -/* 3A78 */ 0xC4B0, 0xFFFD, 0xF4CB, 0xFFFD, 0xFFFD, 0xF649, 0xC4FB, 0xF64B, -/* 3A80 */ 0xC4FC, 0xF648, 0xF64A, 0xC5A8, 0xFFFD, 0xF752, 0xC5A7, 0xF7FD, -/* 3A88 */ 0xF7FC, 0xFFFD, 0xF7FB, 0xFFFD, 0xFFFD, 0xF948, 0xF949, 0xF94B, -/* 3A90 */ 0xF94A, 0xFFFD, 0xCA50, 0xA6E8, 0xFFFD, 0xAD6E, 0xD7C5, 0xB5F7, -/* 3A98 */ 0xFFFD, 0xDFFA, 0xC2D0, 0xFFFD, 0xF2F2, 0xFFFD, 0xFFFD, 0xA8A3, -/* 3AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB357, 0xFFFD, 0xFFFD, 0xFFFD, 0xB356, -/* 3AA8 */ 0xFFFD, 0xDBD0, 0xB5F8, 0xDBD2, 0xDBD1, 0xFFFD, 0xFFFD, 0xDFFB, -/* 3AB0 */ 0xB8D0, 0xE443, 0xE446, 0xE445, 0xFFFD, 0xE444, 0xE7CE, 0xE7D0, -/* 3AB8 */ 0xE7CF, 0xFFFD, 0xBFCC, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFCB, 0xFFFD, -/* 3AC0 */ 0xC1BB, 0xEE79, 0xEE7B, 0xEE7A, 0xFFFD, 0xFFFD, 0xC2D1, 0xFFFD, -/* 3AC8 */ 0xFFFD, 0xFFFD, 0xF2F4, 0xF2F3, 0xFFFD, 0xF4CC, 0xC4B1, 0xFFFD, -/* 3AD0 */ 0xFFFD, 0xC4FD, 0xF754, 0xF753, 0xC65B, 0xA8A4, 0xD0AF, 0xAD6F, -/* 3AD8 */ 0xD7C8, 0xD7C6, 0xFFFD, 0xFFFD, 0xD7C7, 0xDBD4, 0xDBD5, 0xE043, -/* 3AE0 */ 0xDBD3, 0xFFFD, 0xDFFC, 0xE041, 0xE040, 0xE042, 0xB8D1, 0xDFFE, -/* 3AE8 */ 0xDFFD, 0xE044, 0xFFFD, 0xE449, 0xE447, 0xFFFD, 0xE448, 0xE7D3, -/* 3AF0 */ 0xE7D1, 0xFFFD, 0xFFFD, 0xE7D2, 0xEB7D, 0xEE7C, 0xEE7D, 0xC2D2, -/* 3AF8 */ 0xFFFD, 0xF2F5, 0xF4CD, 0xC4B2, 0xFFFD, 0xF64C, 0xF755, 0xC5A9, -/* 3B00 */ 0xFFFD, 0xF7FE, 0xF94C, 0xA8A5, 0xFFFD, 0xAD71, 0xAD72, 0xD0B0, -/* 3B08 */ 0xFFFD, 0xFFFD, 0xD0B1, 0xAD70, 0xFFFD, 0xB054, 0xFFFD, 0xB052, -/* 3B10 */ 0xFFFD, 0xB051, 0xB058, 0xB050, 0xB059, 0xD3DD, 0xB056, 0xFFFD, -/* 3B18 */ 0xB053, 0xB057, 0xB055, 0xB04F, 0xFFFD, 0xFFFD, 0xB35F, 0xFFFD, -/* 3B20 */ 0xB359, 0xD7CC, 0xB35E, 0xFFFD, 0xFFFD, 0xB360, 0xB35A, 0xFFFD, -/* 3B28 */ 0xB35B, 0xFFFD, 0xD7CA, 0xFFFD, 0xFFFD, 0xB358, 0xFFFD, 0xD7CB, -/* 3B30 */ 0xB35D, 0xFFFD, 0xFFFD, 0xD7C9, 0xB35C, 0xFFFD, 0xFFFD, 0xB644, -/* 3B38 */ 0xFFFD, 0xB646, 0xFFFD, 0xFFFD, 0xDBD8, 0xB645, 0xB5F9, 0xB5FD, -/* 3B40 */ 0xFFFD, 0xB8E4, 0xE049, 0xDBDA, 0xB5FE, 0xFFFD, 0xFFFD, 0xDBDD, -/* 3B48 */ 0xDBDE, 0xB643, 0xFFFD, 0xDBE0, 0xFFFD, 0xDBE2, 0xFFFD, 0xDBE3, -/* 3B50 */ 0xDBD7, 0xDBD6, 0xDBE4, 0xB642, 0xDBE1, 0xDBDF, 0xFFFD, 0xB640, -/* 3B58 */ 0xB5FB, 0xB647, 0xDBDB, 0xDBDC, 0xDBD9, 0xFFFD, 0xB641, 0xFFFD, -/* 3B60 */ 0xFFFD, 0xB5FC, 0xFFFD, 0xB5FA, 0xE048, 0xB8DF, 0xB8DA, 0xFFFD, -/* 3B68 */ 0xFFFD, 0xB8D5, 0xFFFD, 0xB8E5, 0xB8D6, 0xFFFD, 0xB8D2, 0xB8E1, -/* 3B70 */ 0xB8DE, 0xB8E0, 0xFFFD, 0xB8D7, 0xB8DC, 0xB8D3, 0xB8D4, 0xE050, -/* 3B78 */ 0xE04D, 0xE045, 0xE04A, 0xFFFD, 0xB8E2, 0xE051, 0xB8E3, 0xB8D9, -/* 3B80 */ 0xFFFD, 0xFFFD, 0xE047, 0xFFFD, 0xE04F, 0xE04B, 0xE04E, 0xE04C, -/* 3B88 */ 0xB8DD, 0xE046, 0xB8D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xE44C, 0xBB78, -/* 3B90 */ 0xBB7B, 0xFFFD, 0xE44E, 0xFFFD, 0xBBA5, 0xE44D, 0xBB7D, 0xFFFD, -/* 3B98 */ 0xBDCF, 0xE44F, 0xFFFD, 0xBBA4, 0xE44B, 0xBBA6, 0xFFFD, 0xFFFD, -/* 3BA0 */ 0xFFFD, 0xBB79, 0xFFFD, 0xB8DB, 0xBB7C, 0xFFFD, 0xBB7A, 0xBB7E, -/* 3BA8 */ 0xBBA2, 0xBB77, 0xBBA7, 0xBBA3, 0xFFFD, 0xBBA1, 0xE44A, 0xFFFD, -/* 3BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBDD6, 0xFFFD, 0xBDD2, 0xFFFD, 0xFFFD, -/* 3BB8 */ 0xFFFD, 0xBDD9, 0xFFFD, 0xE7D6, 0xBDDA, 0xE7E2, 0xE7DB, 0xBDCB, -/* 3BC0 */ 0xE7E3, 0xE7DD, 0xBDD5, 0xE7DE, 0xFFFD, 0xBDD4, 0xE7E1, 0xBDCE, -/* 3BC8 */ 0xE7DF, 0xE7D5, 0xBDCD, 0xEBAA, 0xBDD3, 0xFFFD, 0xBDD0, 0xFFFD, -/* 3BD0 */ 0xBDD8, 0xFFFD, 0xE7D4, 0xFFFD, 0xE7D8, 0xBDCC, 0xE7D7, 0xE7D9, -/* 3BD8 */ 0xE7DA, 0xBDD7, 0xE7DC, 0xE7E0, 0xE7E4, 0xFFFD, 0xBDDB, 0xBFD2, -/* 3BE0 */ 0xEBA5, 0xEBAB, 0xEBA8, 0xEB7E, 0xEBAC, 0xEBA1, 0xFFFD, 0xEBA7, -/* 3BE8 */ 0xFFFD, 0xBFCD, 0xBFD3, 0xEBAD, 0xFFFD, 0xFFFD, 0xBFCF, 0xFFFD, -/* 3BF0 */ 0xBFD9, 0xBFD4, 0xEBAF, 0xEBA9, 0xBFD0, 0xEBA2, 0xBFDA, 0xEBA3, -/* 3BF8 */ 0xEBA4, 0xBFDB, 0xBFD8, 0xBDD1, 0xFFFD, 0xBFCE, 0xEBB0, 0xBFDC, -/* 3C00 */ 0xFFFD, 0xBFD5, 0xEBAE, 0xBFD1, 0xBFD6, 0xBFD7, 0xFFFD, 0xC1C3, -/* 3C08 */ 0xEEA4, 0xEEAD, 0xEEAA, 0xEEAC, 0xFFFD, 0xC1C0, 0xEEA5, 0xFFFD, -/* 3C10 */ 0xEEAB, 0xC1BC, 0xEEA7, 0xC1C4, 0xEEA3, 0xEEA8, 0xEEAF, 0xEBA6, -/* 3C18 */ 0xEEA9, 0xEEA2, 0xC1BD, 0xEEA1, 0xC1BE, 0xEEB0, 0xC1BF, 0xEEAE, -/* 3C20 */ 0xC1C2, 0xEE7E, 0xFFFD, 0xC1C1, 0xFFFD, 0xEEA6, 0xF0DC, 0xF0EA, -/* 3C28 */ 0xF0E5, 0xF0E7, 0xF0DB, 0xC2D3, 0xFFFD, 0xF0DA, 0xC2D6, 0xC2D5, -/* 3C30 */ 0xFFFD, 0xF0E9, 0xF0E1, 0xF0DE, 0xF0E4, 0xFFFD, 0xF0DD, 0xFFFD, -/* 3C38 */ 0xF0DF, 0xF0E8, 0xF0E6, 0xFFFD, 0xC2D4, 0xF0ED, 0xF0EB, 0xF0E2, -/* 3C40 */ 0xF0EC, 0xF0E3, 0xFFFD, 0xF2F9, 0xC3CF, 0xF341, 0xFFFD, 0xFFFD, -/* 3C48 */ 0xF64F, 0xC3D6, 0xF0E0, 0xF2F7, 0xC3D2, 0xF2F8, 0xF2FD, 0xFFFD, -/* 3C50 */ 0xFFFD, 0xC3D4, 0xC3D5, 0xF2F6, 0xF340, 0xF342, 0xF2FA, 0xF2FC, -/* 3C58 */ 0xF2FE, 0xF2FB, 0xF343, 0xC3D1, 0xC3D7, 0xC3D3, 0xFFFD, 0xC3D0, -/* 3C60 */ 0xF4D0, 0xFFFD, 0xC4B7, 0xF4CE, 0xFFFD, 0xFFFD, 0xF4D2, 0xFFFD, -/* 3C68 */ 0xF4D3, 0xC4B5, 0xF4D4, 0xF4D1, 0xFFFD, 0xF4CF, 0xC4B8, 0xC4B4, -/* 3C70 */ 0xF4D5, 0xFFFD, 0xC4B6, 0xC4B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4FE, -/* 3C78 */ 0xFFFD, 0xFFFD, 0xC540, 0xF64E, 0xF64D, 0xF650, 0xF651, 0xFFFD, -/* 3C80 */ 0xC541, 0xF756, 0xF75B, 0xC5AA, 0xFFFD, 0xF758, 0xFFFD, 0xF757, -/* 3C88 */ 0xF75A, 0xF759, 0xFFFD, 0xF843, 0xFFFD, 0xC5DC, 0xF842, 0xF840, -/* 3C90 */ 0xFFFD, 0xF841, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5FE, 0xC5FD, 0xF8C1, -/* 3C98 */ 0xF8C2, 0xC640, 0xFFFD, 0xF94D, 0xF94E, 0xC667, 0xFFFD, 0xC66D, -/* 3CA0 */ 0xFFFD, 0xF9A9, 0xF9C8, 0xA8A6, 0xFFFD, 0xD7CD, 0xFFFD, 0xD7CE, -/* 3CA8 */ 0xE052, 0xE450, 0xE7E5, 0xC1C6, 0xFFFD, 0xC1C5, 0xF0EE, 0xF344, -/* 3CB0 */ 0xFFFD, 0xF844, 0xA8A7, 0xD3DE, 0xB05A, 0xB361, 0xE054, 0xE053, -/* 3CB8 */ 0xBDDC, 0xE7E6, 0xBDDD, 0xEEB1, 0xC2D7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CC0 */ 0xC676, 0xA8A8, 0xCDCB, 0xD3DF, 0xFFFD, 0xFFFD, 0xB362, 0xFFFD, -/* 3CC8 */ 0xD7CF, 0xD7D0, 0xFFFD, 0xDBE5, 0xFFFD, 0xB648, 0xB8E6, 0xFFFD, -/* 3CD0 */ 0xE056, 0xE055, 0xE057, 0xFFFD, 0xE451, 0xE452, 0xBBA8, 0xBFDD, -/* 3CD8 */ 0xBDDE, 0xBFDE, 0xFFFD, 0xEEB5, 0xEEB2, 0xEEB4, 0xEEB3, 0xC1C7, -/* 3CE0 */ 0xFFFD, 0xF0EF, 0xF346, 0xF345, 0xCBA4, 0xB05C, 0xB05B, 0xD3E0, -/* 3CE8 */ 0xFFFD, 0xD7D1, 0xFFFD, 0xFFFD, 0xDBE7, 0xDBE6, 0xB649, 0xFFFD, -/* 3CF0 */ 0xE059, 0xE05A, 0xE058, 0xFFFD, 0xFFFD, 0xB8E8, 0xB8E7, 0xFFFD, -/* 3CF8 */ 0xBBAA, 0xBBA9, 0xFFFD, 0xE7E7, 0xEBB3, 0xEBB1, 0xEBB2, 0xBFDF, -/* 3D00 */ 0xEEB7, 0xEEB6, 0xFFFD, 0xF0F2, 0xF0F1, 0xF0F0, 0xF347, 0xFFFD, -/* 3D08 */ 0xF9AA, 0xA8A9, 0xAD73, 0xFFFD, 0xAD74, 0xB05D, 0xB05E, 0xD3E2, -/* 3D10 */ 0xD3E1, 0xD7D2, 0xFFFD, 0xB368, 0xB366, 0xB363, 0xB367, 0xB365, -/* 3D18 */ 0xB364, 0xFFFD, 0xFFFD, 0xB64A, 0xDBEA, 0xFFFD, 0xB8ED, 0xB64C, -/* 3D20 */ 0xB651, 0xDBEC, 0xB653, 0xB652, 0xB655, 0xDBEB, 0xDBE8, 0xB64F, -/* 3D28 */ 0xB64B, 0xB64D, 0xDBE9, 0xB654, 0xB650, 0xB64E, 0xB8EF, 0xB8EE, -/* 3D30 */ 0xB8EC, 0xB8F0, 0xFFFD, 0xB8EA, 0xB8EB, 0xFFFD, 0xB8E9, 0xFFFD, -/* 3D38 */ 0xE05B, 0xFFFD, 0xFFFD, 0xE454, 0xFFFD, 0xBBAC, 0xBBAD, 0xBBAB, -/* 3D40 */ 0xFFFD, 0xE453, 0xFFFD, 0xE455, 0xFFFD, 0xE7EA, 0xE7EC, 0xFFFD, -/* 3D48 */ 0xBDE7, 0xE7ED, 0xBDE0, 0xE7E9, 0xBDDF, 0xBDE9, 0xBDE5, 0xBDE6, -/* 3D50 */ 0xBDE2, 0xE7E8, 0xBDE1, 0xE7EE, 0xE7EB, 0xFFFD, 0xBDE8, 0xFFFD, -/* 3D58 */ 0xBDE3, 0xBDE4, 0xEBB5, 0xFFFD, 0xEBB7, 0xEBB6, 0xFFFD, 0xEBB8, -/* 3D60 */ 0xBFE0, 0xEBB4, 0xFFFD, 0xFFFD, 0xC1CB, 0xEEB8, 0xC1C8, 0xC1CC, -/* 3D68 */ 0xC1CA, 0xC1C9, 0xF0F3, 0xFFFD, 0xF0F6, 0xFFFD, 0xF0F5, 0xFFFD, -/* 3D70 */ 0xF0F4, 0xC2D8, 0xF348, 0xF349, 0xC3D8, 0xF34A, 0xC3D9, 0xFFFD, -/* 3D78 */ 0xFFFD, 0xC4BA, 0xFFFD, 0xC4B9, 0xF652, 0xFFFD, 0xFFFD, 0xC542, -/* 3D80 */ 0xF653, 0xF75C, 0xC5AB, 0xC5AC, 0xFFFD, 0xF845, 0xFFFD, 0xC642, -/* 3D88 */ 0xA8AA, 0xFFFD, 0xB36A, 0xB369, 0xE05C, 0xE05D, 0xFFFD, 0xBBAE, -/* 3D90 */ 0xEBB9, 0xBDEA, 0xEBBA, 0xEEB9, 0xA8AB, 0xFFFD, 0xD0B2, 0xAD76, -/* 3D98 */ 0xAD75, 0xFFFD, 0xD3E3, 0xB05F, 0xD3E4, 0xD7D5, 0xFFFD, 0xD7D4, -/* 3DA0 */ 0xFFFD, 0xD7D3, 0xFFFD, 0xFFFD, 0xDBEE, 0xB658, 0xFFFD, 0xFFFD, -/* 3DA8 */ 0xDBED, 0xB657, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBEF, 0xB656, 0xFFFD, -/* 3DB0 */ 0xE05F, 0xE062, 0xE060, 0xE061, 0xE065, 0xE05E, 0xE066, 0xE063, -/* 3DB8 */ 0xE064, 0xBBB0, 0xE456, 0xFFFD, 0xFFFD, 0xBBAF, 0xFFFD, 0xE7F2, -/* 3DC0 */ 0xE7F0, 0xFFFD, 0xFFFD, 0xBDEB, 0xE7EF, 0xE7F1, 0xFFFD, 0xBDEC, -/* 3DC8 */ 0xFFFD, 0xEBBB, 0xFFFD, 0xEBBC, 0xC1CD, 0xFFFD, 0xF34C, 0xF34E, -/* 3DD0 */ 0xF34B, 0xF34D, 0xF4D6, 0xF654, 0xFFFD, 0xFFFD, 0xF96F, 0xA8AC, -/* 3DD8 */ 0xAD77, 0xD3E5, 0xD3E7, 0xD3E6, 0xFFFD, 0xD7D8, 0xB36C, 0xFFFD, -/* 3DE0 */ 0xD7D6, 0xFFFD, 0xB36B, 0xD7D9, 0xFFFD, 0xD7DA, 0xD7D7, 0xFFFD, -/* 3DE8 */ 0xFFFD, 0xDBFB, 0xB660, 0xDBF3, 0xDBF9, 0xFFFD, 0xFFFD, 0xB65B, -/* 3DF0 */ 0xB65E, 0xDBF2, 0xB659, 0xDBF6, 0xE06C, 0xB65D, 0xFFFD, 0xDBF1, -/* 3DF8 */ 0xFFFD, 0xDBF7, 0xDBF4, 0xDBFA, 0xDBF0, 0xDBF8, 0xB65C, 0xB65F, -/* 3E00 */ 0xDBF5, 0xB65A, 0xFFFD, 0xB8F2, 0xE068, 0xB8F1, 0xE06F, 0xE06E, -/* 3E08 */ 0xB8F8, 0xFFFD, 0xB8F9, 0xE070, 0xB8F3, 0xE06D, 0xB8F7, 0xE072, -/* 3E10 */ 0xE069, 0xFFFD, 0xE06B, 0xB8F4, 0xE067, 0xE06A, 0xE071, 0xB8F5, -/* 3E18 */ 0xE073, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8F6, 0xFFFD, -/* 3E20 */ 0xBBB1, 0xE45B, 0xE461, 0xE459, 0xE462, 0xFFFD, 0xE458, 0xE45D, -/* 3E28 */ 0xE463, 0xE460, 0xE45F, 0xE45E, 0xFFFD, 0xE457, 0xE45C, 0xFFFD, -/* 3E30 */ 0xFFFD, 0xE45A, 0xFFFD, 0xBDF1, 0xBDEE, 0xE7FB, 0xE841, 0xE843, -/* 3E38 */ 0xE840, 0xE7F8, 0xE7FA, 0xE845, 0xE842, 0xE7FC, 0xE846, 0xE7F9, -/* 3E40 */ 0xE844, 0xBDEF, 0xBDF5, 0xBDF3, 0xE7F3, 0xBDF4, 0xBDF0, 0xE7F4, -/* 3E48 */ 0xE7F6, 0xE7F5, 0xE7FD, 0xE7FE, 0xFFFD, 0xBDF2, 0xFFFD, 0xBDED, -/* 3E50 */ 0xFFFD, 0xFFFD, 0xE7F7, 0xFFFD, 0xEBC6, 0xBFE2, 0xFFFD, 0xEBBD, -/* 3E58 */ 0xBFE3, 0xBFE6, 0xEBC2, 0xFFFD, 0xEBBF, 0xBFE5, 0xFFFD, 0xFFFD, -/* 3E60 */ 0xEBC3, 0xEBC4, 0xEBBE, 0xEBC7, 0xEBC0, 0xEBC5, 0xBFE4, 0xFFFD, -/* 3E68 */ 0xBFE1, 0xEBC1, 0xFFFD, 0xEEBF, 0xC1D0, 0xC1CE, 0xC1D1, 0xC1CF, -/* 3E70 */ 0xEEBE, 0xEEBB, 0xEEBA, 0xFFFD, 0xEEBD, 0xFFFD, 0xFFFD, 0xEEBC, -/* 3E78 */ 0xF145, 0xC2DE, 0xF0FB, 0xF0FA, 0xFFFD, 0xC2D9, 0xF141, 0xF140, -/* 3E80 */ 0xF0F7, 0xF143, 0xF0FC, 0xC2DD, 0xF0F9, 0xF142, 0xF0F8, 0xC2DA, -/* 3E88 */ 0xC2DC, 0xF0FD, 0xC2DB, 0xF0FE, 0xFFFD, 0xF144, 0xF352, 0xFFFD, -/* 3E90 */ 0xC3DE, 0xF34F, 0xFFFD, 0xF353, 0xFFFD, 0xFFFD, 0xC3DB, 0xF351, -/* 3E98 */ 0xC3E0, 0xFFFD, 0xC3DD, 0xFFFD, 0xF350, 0xFFFD, 0xC3DF, 0xF354, -/* 3EA0 */ 0xC3DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4BC, 0xC4BE, 0xFFFD, -/* 3EA8 */ 0xF4D9, 0xC4BD, 0xF4D7, 0xC3DC, 0xF4D8, 0xC4BB, 0xC543, 0xC545, -/* 3EB0 */ 0xF656, 0xC544, 0xF655, 0xFFFD, 0xF761, 0xC5AD, 0xF760, 0xC5AE, -/* 3EB8 */ 0xF75E, 0xF75D, 0xF762, 0xF763, 0xF846, 0xFFFD, 0xF75F, 0xFFFD, -/* 3EC0 */ 0xFFFD, 0xF8C6, 0xF8C3, 0xF8C4, 0xF8C5, 0xC65C, 0xFFFD, 0xF951, -/* 3EC8 */ 0xF950, 0xF94F, 0xF970, 0xFFFD, 0xF9BE, 0xF9AB, 0xC66E, 0xA8AD, -/* 3ED0 */ 0xB060, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8FA, 0xFFFD, -/* 3ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDF6, 0xFFFD, -/* 3EE0 */ 0xFFFD, 0xEBC8, 0xFFFD, 0xFFFD, 0xC2DF, 0xFFFD, 0xF355, 0xFFFD, -/* 3EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9AC, 0xA8AE, 0xAAEE, -/* 3EF0 */ 0xAD79, 0xAD78, 0xFFFD, 0xB063, 0xFFFD, 0xD3E8, 0xB061, 0xD3E9, -/* 3EF8 */ 0xB062, 0xFFFD, 0xFFFD, 0xD7DF, 0xD7DB, 0xFFFD, 0xFFFD, 0xB36D, -/* 3F00 */ 0xD7DE, 0xD7DD, 0xD7DC, 0xB36E, 0xD7E0, 0xD7E1, 0xFFFD, 0xFFFD, -/* 3F08 */ 0xFFFD, 0xDC43, 0xDC41, 0xDC45, 0xDC46, 0xDC4C, 0xFFFD, 0xDC48, -/* 3F10 */ 0xDC4A, 0xFFFD, 0xDC42, 0xDBFC, 0xFFFD, 0xDC49, 0xFFFD, 0xFFFD, -/* 3F18 */ 0xDC4B, 0xDC44, 0xDC47, 0xDBFD, 0xB662, 0xDC40, 0xDBFE, 0xB661, -/* 3F20 */ 0xB663, 0xFFFD, 0xB8FD, 0xE075, 0xE077, 0xE076, 0xE07B, 0xB8FB, -/* 3F28 */ 0xFFFD, 0xE078, 0xE074, 0xE079, 0xE07A, 0xB8FC, 0xB8FE, 0xE07C, -/* 3F30 */ 0xFFFD, 0xE467, 0xE466, 0xFFFD, 0xE464, 0xE465, 0xBBB3, 0xBBB5, -/* 3F38 */ 0xBBB2, 0xBBB4, 0xE84D, 0xE84E, 0xE849, 0xFFFD, 0xE84A, 0xBDF8, -/* 3F40 */ 0xBDFD, 0xBDF7, 0xBDFE, 0xBDF9, 0xE84B, 0xFFFD, 0xFFFD, 0xE84C, -/* 3F48 */ 0xE848, 0xBE40, 0xBDFB, 0xFFFD, 0xFFFD, 0xBDFA, 0xBDFC, 0xFFFD, -/* 3F50 */ 0xE847, 0xFFFD, 0xEBCA, 0xBFE8, 0xFFFD, 0xFFFD, 0xEBCC, 0xBFEA, -/* 3F58 */ 0xEBCF, 0xEBCB, 0xEBC9, 0xEBCE, 0xBFE9, 0xEBCD, 0xFFFD, 0xBFE7, -/* 3F60 */ 0xFFFD, 0xFFFD, 0xC1D3, 0xC1D6, 0xEEC1, 0xFFFD, 0xC1D4, 0xEEC0, -/* 3F68 */ 0xC1D2, 0xC1D5, 0xF146, 0xF147, 0xF148, 0xC2E0, 0xFFFD, 0xF149, -/* 3F70 */ 0xFFFD, 0xC2E1, 0xC3E2, 0xF358, 0xF359, 0xF357, 0xF356, 0xF35A, -/* 3F78 */ 0xC3E1, 0xF4DD, 0xF4DB, 0xF4DC, 0xF4DE, 0xF4DA, 0xF4DF, 0xF658, -/* 3F80 */ 0xFFFD, 0xF659, 0xF657, 0xC546, 0xF764, 0xC5AF, 0xF765, 0xF848, -/* 3F88 */ 0xF847, 0xA8AF, 0xB664, 0xFFFD, 0xFFFD, 0xB940, 0xFFFD, 0xFFFD, -/* 3F90 */ 0xFFFD, 0xBBB6, 0xFFFD, 0xFFFD, 0xBFEC, 0xFFFD, 0xBFEB, 0xFFFD, -/* 3F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC3E3, 0xC47C, 0xC547, 0xA8B0, 0xB064, -/* 3FA0 */ 0xB941, 0xFFFD, 0xF35B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBA6, 0xFFFD, 0xFFFD, -/* 3FB0 */ 0xA8B1, 0xFFFD, 0xA8B4, 0xA8B3, 0xA8B2, 0xFFFD, 0xFFFD, 0xCBA5, -/* 3FB8 */ 0xFFFD, 0xCDCD, 0xFFFD, 0xCDCF, 0xAAEF, 0xFFFD, 0xFFFD, 0xAAF1, -/* 3FC0 */ 0xCDCC, 0xCDCE, 0xAAF0, 0xCDD1, 0xCDD0, 0xCDD2, 0xFFFD, 0xFFFD, -/* 3FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0B6, 0xD0B4, -/* 3FD0 */ 0xAD7C, 0xD0B3, 0xADA3, 0xAD7E, 0xAD7B, 0xFFFD, 0xADA4, 0xFFFD, -/* 3FD8 */ 0xAD7D, 0xADA2, 0xFFFD, 0xADA1, 0xD0B5, 0xFFFD, 0xAD7A, 0xFFFD, -/* 3FE0 */ 0xFFFD, 0xFFFD, 0xB06A, 0xD3EB, 0xD3F1, 0xB067, 0xB06E, 0xFFFD, -/* 3FE8 */ 0xB069, 0xD3EE, 0xD3F0, 0xB06C, 0xD3EA, 0xD3ED, 0xB068, 0xB065, -/* 3FF0 */ 0xD3EC, 0xB06B, 0xD3EF, 0xB06D, 0xB066, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FF8 */ 0xFFFD, 0xD7E3, 0xD7E6, 0xB370, 0xFFFD, 0xB37A, 0xB376, 0xD7E4, -/* 4000 */ 0xFFFD, 0xFFFD, 0xB37E, 0xB377, 0xB37C, 0xB372, 0xFFFD, 0xB36F, -/* 4008 */ 0xB371, 0xB37D, 0xD7E5, 0xB375, 0xB378, 0xB374, 0xB379, 0xD7E7, -/* 4010 */ 0xB37B, 0xB373, 0xD7E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDC4D, 0xB665, 0xDC4F, 0xFFFD, 0xB667, -/* 4020 */ 0xB669, 0xFFFD, 0xDC4E, 0xB666, 0xB66A, 0xFFFD, 0xB668, 0xFFFD, -/* 4028 */ 0xFFFD, 0xFFFD, 0xB947, 0xE0A3, 0xB94F, 0xE07E, 0xFFFD, 0xB950, -/* 4030 */ 0xB945, 0xFFFD, 0xE0A1, 0xFFFD, 0xFFFD, 0xB94A, 0xFFFD, 0xE0A2, -/* 4038 */ 0xB943, 0xB942, 0xFFFD, 0xB94D, 0xB94C, 0xB94B, 0xB949, 0xB94E, -/* 4040 */ 0xE07D, 0xB944, 0xB946, 0xB948, 0xFFFD, 0xFFFD, 0xBBB8, 0xBBBB, -/* 4048 */ 0xFFFD, 0xBBBF, 0xBBB9, 0xBBBE, 0xBBBC, 0xFFFD, 0xBBB7, 0xFFFD, -/* 4050 */ 0xBBBD, 0xBBBA, 0xFFFD, 0xFFFD, 0xFFFD, 0xE852, 0xBE43, 0xBE41, -/* 4058 */ 0xFFFD, 0xE853, 0xFFFD, 0xBE44, 0xBE42, 0xE851, 0xE850, 0xFFFD, -/* 4060 */ 0xBFF0, 0xE84F, 0xBFEE, 0xBFED, 0xEBD0, 0xBE45, 0xBFEF, 0xEBD1, -/* 4068 */ 0xBFF2, 0xEBD2, 0xBFF1, 0xC1D8, 0xEEC3, 0xC1D7, 0xC1DC, 0xC1DA, -/* 4070 */ 0xC1DB, 0xC2E3, 0xC1D9, 0xEEC2, 0xEBD3, 0xC2E2, 0xC2E4, 0xFFFD, -/* 4078 */ 0xC3E4, 0xC3E5, 0xFFFD, 0xF4E0, 0xFFFD, 0xC5DE, 0xC5DD, 0xA8B6, -/* 4080 */ 0xFFFD, 0xFFFD, 0xCA55, 0xB06F, 0xFFFD, 0xCA52, 0xCA53, 0xCA51, -/* 4088 */ 0xFFFD, 0xCA54, 0xFFFD, 0xFFFD, 0xCBAA, 0xCBA7, 0xCBAC, 0xCBA8, -/* 4090 */ 0xA8B7, 0xA8BA, 0xFFFD, 0xCBA9, 0xA8B9, 0xCBAB, 0xFFFD, 0xFFFD, -/* 4098 */ 0xA8B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDD5, 0xCDD7, 0xAAF4, -/* 40A0 */ 0xCDD3, 0xCDD6, 0xCDD4, 0xAAF2, 0xAAF5, 0xFFFD, 0xAAF3, 0xFFFD, -/* 40A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD0B8, 0xD0BC, 0xD0B9, 0xFFFD, 0xADA7, -/* 40B0 */ 0xFFFD, 0xADA8, 0xFFFD, 0xD0BB, 0xFFFD, 0xD0BD, 0xD0BF, 0xFFFD, -/* 40B8 */ 0xADA5, 0xD0BE, 0xFFFD, 0xFFFD, 0xADA6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40C0 */ 0xFFFD, 0xFFFD, 0xD7EE, 0xD0BA, 0xD3F2, 0xD3FB, 0xD3F9, 0xD3F4, -/* 40C8 */ 0xD3F5, 0xD3FA, 0xD3FC, 0xB071, 0xFFFD, 0xD3F7, 0xD3F3, 0xB070, -/* 40D0 */ 0xB072, 0xD3F6, 0xD3FD, 0xD3F8, 0xFFFD, 0xFFFD, 0xB3A1, 0xD7F1, -/* 40D8 */ 0xD7E9, 0xD7EF, 0xD7F0, 0xB3A2, 0xFFFD, 0xD7E8, 0xD7EA, 0xD0B7, -/* 40E0 */ 0xD7EC, 0xD7ED, 0xD7EB, 0xB66C, 0xFFFD, 0xFFFD, 0xFFFD, 0xDC56, -/* 40E8 */ 0xEBD4, 0xDC57, 0xDC54, 0xB3A3, 0xB66E, 0xDC53, 0xDC59, 0xDC58, -/* 40F0 */ 0xB66B, 0xDC5C, 0xDC52, 0xDC5B, 0xDC50, 0xDC5A, 0xDC55, 0xB66D, -/* 40F8 */ 0xFFFD, 0xE0AA, 0xFFFD, 0xE0A5, 0xE0AB, 0xE0A6, 0xE0A4, 0xE0A7, -/* 4100 */ 0xB951, 0xFFFD, 0xE0A9, 0xFFFD, 0xE0A8, 0xB952, 0xBBC1, 0xBBC0, -/* 4108 */ 0xE46E, 0xE471, 0xE469, 0xE46D, 0xBBC2, 0xE46C, 0xE46A, 0xE470, -/* 4110 */ 0xE46B, 0xE468, 0xE46F, 0xFFFD, 0xE859, 0xBE48, 0xF14A, 0xE856, -/* 4118 */ 0xE857, 0xE855, 0xDC51, 0xBE47, 0xE85A, 0xE854, 0xBE46, 0xBE49, -/* 4120 */ 0xE858, 0xEBD5, 0xBFF3, 0xEBD6, 0xEBD7, 0xFFFD, 0xEEC4, 0xC1DD, -/* 4128 */ 0xF14B, 0xF14C, 0xFFFD, 0xFFFD, 0xF14D, 0xF35D, 0xF35C, 0xF4E2, -/* 4130 */ 0xFFFD, 0xF4E1, 0xF65B, 0xF65C, 0xF65A, 0xF766, 0xC5B0, 0xA8BB, -/* 4138 */ 0xADAA, 0xADA9, 0xB075, 0xB074, 0xD440, 0xD441, 0xD3FE, 0xFFFD, -/* 4140 */ 0xB073, 0xD7F5, 0xFFFD, 0xD7F6, 0xD7F2, 0xB3A4, 0xD7F3, 0xFFFD, -/* 4148 */ 0xD7F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDC5F, 0xDC61, 0xDC5D, -/* 4150 */ 0xDC60, 0xB66F, 0xDC5E, 0xB670, 0xFFFD, 0xFFFD, 0xDD73, 0xB955, -/* 4158 */ 0xB954, 0xFFFD, 0xB953, 0xFFFD, 0xE0AC, 0xE0AD, 0xFFFD, 0xFFFD, -/* 4160 */ 0xE473, 0xE475, 0xBBC6, 0xBBC3, 0xFFFD, 0xBBC5, 0xBBC4, 0xE474, -/* 4168 */ 0xE472, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE861, 0xE85E, -/* 4170 */ 0xE85F, 0xBE4D, 0xE860, 0xE85B, 0xE85C, 0xBE4A, 0xFFFD, 0xBE4B, -/* 4178 */ 0xE85D, 0xBE4C, 0xFFFD, 0xEBDB, 0xFFFD, 0xEBDC, 0xEBD9, 0xEBDA, -/* 4180 */ 0xBFF4, 0xEBD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEC8, -/* 4188 */ 0xEEC5, 0xEEC7, 0xC1E0, 0xEECB, 0xC1DF, 0xEEC9, 0xEECC, 0xEECA, -/* 4190 */ 0xEEC6, 0xC1DE, 0xFFFD, 0xF14F, 0xFFFD, 0xF150, 0xF14E, 0xFFFD, -/* 4198 */ 0xF152, 0xC2E5, 0xC2E6, 0xF35F, 0xC3E7, 0xF151, 0xF35E, 0xC3E6, -/* 41A0 */ 0xF4E5, 0xF4E6, 0xC4BF, 0xF4E4, 0xFFFD, 0xF4E3, 0xFFFD, 0xF65D, -/* 41A8 */ 0xC548, 0xFFFD, 0xF849, 0xF8C8, 0xF8C7, 0xFFFD, 0xC643, 0xC65D, -/* 41B0 */ 0xF8C9, 0xF971, 0xFFFD, 0xC66F, 0xA8BC, 0xAAF6, 0xFFFD, 0xB956, -/* 41B8 */ 0xFFFD, 0xC4C0, 0xA8BD, 0xADAB, 0xB3A5, 0xB671, 0xC2E7, 0xAAF7, -/* 41C0 */ 0xFFFD, 0xD0C1, 0xD0C0, 0xD442, 0xFFFD, 0xB078, 0xB076, 0xB07A, -/* 41C8 */ 0xD444, 0xFFFD, 0xB079, 0xB077, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41D0 */ 0xD443, 0xB3A8, 0xD7FC, 0xFFFD, 0xB3A7, 0xB3A9, 0xD842, 0xB3AB, -/* 41D8 */ 0xD7FE, 0xD840, 0xD7F7, 0xB3AA, 0xD843, 0xFFFD, 0xFFFD, 0xD7F9, -/* 41E0 */ 0xFFFD, 0xD7FA, 0xD7F8, 0xB3A6, 0xFFFD, 0xD841, 0xD7FB, 0xD7FD, -/* 41E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDC6D, 0xFFFD, 0xDC6C, 0xDC6A, 0xDC62, -/* 41F0 */ 0xDC71, 0xDC65, 0xDC6F, 0xDC76, 0xDC6E, 0xB679, 0xFFFD, 0xB675, -/* 41F8 */ 0xDC63, 0xFFFD, 0xDC69, 0xB677, 0xFFFD, 0xDC68, 0xB678, 0xB67A, -/* 4200 */ 0xDC6B, 0xFFFD, 0xB672, 0xB673, 0xDC77, 0xDC75, 0xFFFD, 0xDC74, -/* 4208 */ 0xDC66, 0xFFFD, 0xDC72, 0xFFFD, 0xB676, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4210 */ 0xFFFD, 0xB674, 0xDC73, 0xDC64, 0xDC67, 0xDC70, 0xFFFD, 0xFFFD, -/* 4218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE4BA, 0xE0B7, 0xFFFD, 0xE0B0, 0xE0C3, -/* 4220 */ 0xE0CC, 0xE0B3, 0xB961, 0xFFFD, 0xE0C0, 0xB957, 0xB959, 0xB965, -/* 4228 */ 0xE0B1, 0xFFFD, 0xFFFD, 0xB95A, 0xB95C, 0xB966, 0xB95B, 0xFFFD, -/* 4230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB964, 0xE0B9, 0xFFFD, 0xE0AE, 0xB962, -/* 4238 */ 0xE0B8, 0xB95E, 0xE0CA, 0xB963, 0xE0C8, 0xE0BC, 0xE0C6, 0xB960, -/* 4240 */ 0xE0AF, 0xE0C9, 0xE0C4, 0xFFFD, 0xE0CB, 0xB958, 0xFFFD, 0xFFFD, -/* 4248 */ 0xB967, 0xB95D, 0xFFFD, 0xFFFD, 0xE0B5, 0xFFFD, 0xE0BD, 0xE0C1, -/* 4250 */ 0xFFFD, 0xE0C5, 0xB95F, 0xE0B4, 0xE0B2, 0xE0BE, 0xFFFD, 0xFFFD, -/* 4258 */ 0xFFFD, 0xFFFD, 0xE0BB, 0xE0BA, 0xFFFD, 0xE0BF, 0xE0C2, 0xFFFD, -/* 4260 */ 0xE0C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE478, 0xFFFD, 0xBBC7, 0xE4A4, -/* 4268 */ 0xE47A, 0xBBCC, 0xBBD0, 0xE4AD, 0xE4B5, 0xE4A6, 0xBBC8, 0xFFFD, -/* 4270 */ 0xE4AA, 0xE0B6, 0xFFFD, 0xBBC9, 0xE4B1, 0xE4B6, 0xE4AE, 0xFFFD, -/* 4278 */ 0xE4B0, 0xE4B9, 0xE4B2, 0xE47E, 0xE4A9, 0xFFFD, 0xFFFD, 0xBBD1, -/* 4280 */ 0xFFFD, 0xBBCD, 0xE47C, 0xE4AB, 0xBBCB, 0xE4A5, 0xBBCA, 0xE4B3, -/* 4288 */ 0xE4A2, 0xE479, 0xBBCE, 0xE4B8, 0xFFFD, 0xFFFD, 0xE47B, 0xE4AF, -/* 4290 */ 0xE4AC, 0xE4A7, 0xE477, 0xE476, 0xE4A1, 0xE4B4, 0xBBCF, 0xE4B7, -/* 4298 */ 0xE47D, 0xE4A3, 0xBE52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42A0 */ 0xBE5A, 0xBE55, 0xE8A4, 0xE8A1, 0xE867, 0xBE50, 0xFFFD, 0xFFFD, -/* 42A8 */ 0xFFFD, 0xBE4F, 0xBE56, 0xFFFD, 0xFFFD, 0xFFFD, 0xE865, 0xBE54, -/* 42B0 */ 0xE871, 0xE863, 0xE864, 0xBE4E, 0xE8A3, 0xBE58, 0xE874, 0xE879, -/* 42B8 */ 0xE873, 0xEBEE, 0xE86F, 0xE877, 0xE875, 0xE868, 0xE862, 0xE87D, -/* 42C0 */ 0xBE57, 0xE87E, 0xFFFD, 0xE878, 0xFFFD, 0xE86D, 0xE86B, 0xE866, -/* 42C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE86E, 0xE87B, 0xE86A, 0xE87A, 0xE8A2, -/* 42D0 */ 0xFFFD, 0xFFFD, 0xBE53, 0xFFFD, 0xE876, 0xE87C, 0xE872, 0xE86C, -/* 42D8 */ 0xBE51, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4A8, 0xE870, 0xBE59, 0xE869, -/* 42E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBF4, 0xBFF7, 0xEBF3, -/* 42E8 */ 0xEBF0, 0xEC44, 0xBFFB, 0xFFFD, 0xEC41, 0xEBF8, 0xEC43, 0xEBE9, -/* 42F0 */ 0xEBF6, 0xFFFD, 0xBFFD, 0xFFFD, 0xEBE1, 0xFFFD, 0xEBDF, 0xEC42, -/* 42F8 */ 0xFFFD, 0xEC40, 0xEBFE, 0xEBED, 0xEBEC, 0xEBE2, 0xC040, 0xFFFD, -/* 4300 */ 0xEBE8, 0xEBF2, 0xEBFD, 0xC043, 0xEC45, 0xFFFD, 0xC1E8, 0xC045, -/* 4308 */ 0xBFFE, 0xEBE6, 0xFFFD, 0xEBEF, 0xEBDE, 0xEBE0, 0xBFF5, 0xC042, -/* 4310 */ 0xBFFA, 0xEBE7, 0xEBF7, 0xEBF1, 0xC041, 0xEBDD, 0xC1E3, 0xEBF9, -/* 4318 */ 0xEBFC, 0xBFFC, 0xFFFD, 0xEBEB, 0xC044, 0xBFF9, 0xFFFD, 0xFFFD, -/* 4320 */ 0xFFFD, 0xBFF8, 0xEBF5, 0xEBFB, 0xBFF6, 0xFFFD, 0xEBE4, 0xEBFA, -/* 4328 */ 0xFFFD, 0xFFFD, 0xEBE5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBEA, 0xEED2, 0xFFFD, 0xEED7, -/* 4338 */ 0xC1E5, 0xC1E7, 0xEEDD, 0xC1E1, 0xEEEC, 0xEEE3, 0xEED8, 0xEED9, -/* 4340 */ 0xEEE2, 0xFFFD, 0xC1EE, 0xEEE1, 0xEED1, 0xEEE0, 0xEED4, 0xEEED, -/* 4348 */ 0xC1ED, 0xC1EB, 0xEED5, 0xFFFD, 0xEEE8, 0xFFFD, 0xEEDA, 0xEEE7, -/* 4350 */ 0xFFFD, 0xEEE9, 0xEED0, 0xC1E6, 0xFFFD, 0xEEEA, 0xFFFD, 0xFFFD, -/* 4358 */ 0xEEDE, 0xFFFD, 0xC1EA, 0xEEDB, 0xFFFD, 0xFFFD, 0xC1EC, 0xEEE4, -/* 4360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC1E4, 0xEED6, 0xEEE5, 0xFFFD, 0xEEDF, -/* 4368 */ 0xEBE3, 0xEEE6, 0xEED3, 0xFFFD, 0xC1E9, 0xFFFD, 0xEEEB, 0xFFFD, -/* 4370 */ 0xC1E2, 0xEECE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF160, 0xF159, -/* 4378 */ 0xC2E9, 0xFFFD, 0xF154, 0xF163, 0xF15B, 0xEEDC, 0xFFFD, 0xF165, -/* 4380 */ 0xF155, 0xFFFD, 0xC2E8, 0xF15F, 0xC2EA, 0xC2F2, 0xC2F0, 0xF161, -/* 4388 */ 0xC2F1, 0xF157, 0xFFFD, 0xF158, 0xF15D, 0xF162, 0xFFFD, 0xEECD, -/* 4390 */ 0xC2EB, 0xF16A, 0xF167, 0xF16B, 0xF15E, 0xF15A, 0xF168, 0xF36A, -/* 4398 */ 0xF15C, 0xFFFD, 0xC2EE, 0xFFFD, 0xC2ED, 0xEECF, 0xC2EF, 0xF164, -/* 43A0 */ 0xF166, 0xC2EC, 0xF169, 0xF153, 0xFFFD, 0xF156, 0xFFFD, 0xFFFD, -/* 43A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF373, 0xFFFD, -/* 43B0 */ 0xF363, 0xC3EB, 0xF371, 0xFFFD, 0xFFFD, 0xF361, 0xC3EC, 0xFFFD, -/* 43B8 */ 0xF36C, 0xFFFD, 0xF368, 0xC3F1, 0xF372, 0xF362, 0xF365, 0xC3E9, -/* 43C0 */ 0xF374, 0xFFFD, 0xF36D, 0xF370, 0xC3EF, 0xC3F4, 0xC3F2, 0xF369, -/* 43C8 */ 0xF364, 0xFFFD, 0xC3ED, 0xC3EE, 0xF360, 0xC3EA, 0xFFFD, 0xC3E8, -/* 43D0 */ 0xC3F0, 0xF36F, 0xC3F3, 0xFFFD, 0xF36B, 0xF375, 0xC3F5, 0xFFFD, -/* 43D8 */ 0xFFFD, 0xFFFD, 0xF367, 0xFFFD, 0xF36E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF4F3, 0xF542, 0xF4F5, 0xF4FC, 0xF366, -/* 43E8 */ 0xF4FA, 0xF4E9, 0xF540, 0xC4C3, 0xF4ED, 0xF4FE, 0xF4F4, 0xFFFD, -/* 43F0 */ 0xFFFD, 0xC4C2, 0xFFFD, 0xFFFD, 0xF544, 0xF4F6, 0xFFFD, 0xF4FB, -/* 43F8 */ 0xF4FD, 0xF4E7, 0xF541, 0xF4F2, 0xF4F7, 0xF4EB, 0xF4EF, 0xF543, -/* 4400 */ 0xF4F9, 0xF4E8, 0xF4EC, 0xF4EE, 0xF4F8, 0xFFFD, 0xC4C1, 0xF4F1, -/* 4408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4EA, 0xFFFD, -/* 4410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4F0, 0xF661, -/* 4418 */ 0xF666, 0xC54F, 0xF668, 0xFFFD, 0xC549, 0xFFFD, 0xF664, 0xF66A, -/* 4420 */ 0xC54E, 0xC54A, 0xFFFD, 0xC54B, 0xF660, 0xF667, 0xC54D, 0xF665, -/* 4428 */ 0xC54C, 0xF65F, 0xF663, 0xF662, 0xFFFD, 0xF65E, 0xF669, 0xFFFD, -/* 4430 */ 0xFFFD, 0xFFFD, 0xC5B1, 0xF76D, 0xF770, 0xF76C, 0xF76E, 0xF76F, -/* 4438 */ 0xF769, 0xF76A, 0xF767, 0xFFFD, 0xFFFD, 0xF76B, 0xF768, 0xC5B2, -/* 4440 */ 0xC5B3, 0xFFFD, 0xFFFD, 0xF84B, 0xFFFD, 0xF84D, 0xFFFD, 0xFFFD, -/* 4448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF84C, 0xF84E, 0xFFFD, 0xC5E0, 0xFFFD, -/* 4450 */ 0xF84A, 0xC5DF, 0xC5E1, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8CB, 0xF8CC, -/* 4458 */ 0xC644, 0xF8CA, 0xFFFD, 0xF953, 0xF952, 0xF954, 0xC65F, 0xF955, -/* 4460 */ 0xC65E, 0xF956, 0xF972, 0xF975, 0xF974, 0xC668, 0xF973, 0xFFFD, -/* 4468 */ 0xFFFD, 0xFFFD, 0xC672, 0xC670, 0xC671, 0xC677, 0xF9C0, 0xF9C1, -/* 4470 */ 0xF9BF, 0xF9C9, 0xAAF8, 0xFFFD, 0xFFFD, 0xD844, 0xDC78, 0xE8A5, -/* 4478 */ 0xF376, 0xFFFD, 0xFFFD, 0xAAF9, 0xFFFD, 0xADAC, 0xB07B, 0xFFFD, -/* 4480 */ 0xFFFD, 0xD845, 0xFFFD, 0xD846, 0xB3AC, 0xFFFD, 0xB67D, 0xDC7A, -/* 4488 */ 0xDC79, 0xB6A3, 0xB67C, 0xDC7B, 0xB67E, 0xB6A2, 0xB6A1, 0xB67B, -/* 4490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB968, 0xFFFD, 0xFFFD, 0xE0D0, 0xE0CE, -/* 4498 */ 0xFFFD, 0xE0CF, 0xE0CD, 0xFFFD, 0xBBD2, 0xFFFD, 0xBBD5, 0xBBD7, -/* 44A0 */ 0xBBD6, 0xFFFD, 0xFFFD, 0xBBD3, 0xBBD4, 0xFFFD, 0xE8A7, 0xE8A6, -/* 44A8 */ 0xBE5B, 0xE8A8, 0xFFFD, 0xE8A9, 0xBE5C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44B0 */ 0xEC4D, 0xEC4B, 0xEEF3, 0xFFFD, 0xEC49, 0xEC4A, 0xC046, 0xEC46, -/* 44B8 */ 0xEC4E, 0xEC48, 0xEC4C, 0xEEEF, 0xFFFD, 0xFFFD, 0xEEF1, 0xFFFD, -/* 44C0 */ 0xEEF2, 0xC1F3, 0xEEEE, 0xC1F2, 0xEEF0, 0xC1EF, 0xC1F0, 0xC1F1, -/* 44C8 */ 0xEC47, 0xFFFD, 0xFFFD, 0xC2F5, 0xF16E, 0xF16C, 0xF16D, 0xC2F3, -/* 44D0 */ 0xC2F6, 0xC2F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xF377, 0xF378, 0xC3F6, -/* 44D8 */ 0xFFFD, 0xF545, 0xF547, 0xF546, 0xC4C4, 0xC550, 0xF66D, 0xF66C, -/* 44E0 */ 0xF66B, 0xAAFA, 0xFFFD, 0xC9AA, 0xFFFD, 0xCA58, 0xA6E9, 0xCA56, -/* 44E8 */ 0xCA59, 0xCA57, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBAE, 0xFFFD, 0xA8C1, -/* 44F0 */ 0xFFFD, 0xA8C2, 0xCBB0, 0xA8BF, 0xCBAF, 0xCBAD, 0xA8C0, 0xA8BE, -/* 44F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDD8, 0xCDDB, -/* 4500 */ 0xAAFD, 0xCDDA, 0xCDD9, 0xFFFD, 0xAAFC, 0xAAFB, 0xFFFD, 0xAB40, -/* 4508 */ 0xCDDC, 0xAAFE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0C6, -/* 4510 */ 0xADAE, 0xADAF, 0xADB0, 0xD0C7, 0xD0C3, 0xADAD, 0xD0C4, 0xFFFD, -/* 4518 */ 0xD0C5, 0xD0C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0A4, 0xFFFD, 0xFFFD, -/* 4520 */ 0xB0A1, 0xD445, 0xB0A2, 0xB0A5, 0xD446, 0xFFFD, 0xB07E, 0xB07C, -/* 4528 */ 0xB07D, 0xB0A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3AD, -/* 4530 */ 0xD849, 0xB3B5, 0xD848, 0xFFFD, 0xD84B, 0xB3B1, 0xD84A, 0xB6AB, -/* 4538 */ 0xB3AF, 0xB3B2, 0xB3AE, 0xB3B3, 0xB3B4, 0xB3B0, 0xFFFD, 0xFFFD, -/* 4540 */ 0xFFFD, 0xD847, 0xB6A7, 0xDC7D, 0xFFFD, 0xDCA3, 0xFFFD, 0xFFFD, -/* 4548 */ 0xDCA2, 0xB6AC, 0xB6A8, 0xB6A9, 0xDC7C, 0xDC7E, 0xDCA1, 0xB6A4, -/* 4550 */ 0xB6A6, 0xFFFD, 0xB6AA, 0xB6A5, 0xFFFD, 0xFFFD, 0xE0D3, 0xE0D1, -/* 4558 */ 0xE0D2, 0xB96A, 0xB96B, 0xFFFD, 0xE0D4, 0xB969, 0xBBD8, 0xFFFD, -/* 4560 */ 0xBBDA, 0xBBD9, 0xFFFD, 0xE4BB, 0xFFFD, 0xFFFD, 0xE4BC, 0xE8AB, -/* 4568 */ 0xFFFD, 0xE8AA, 0xFFFD, 0xFFFD, 0xC047, 0xC048, 0xEC4F, 0xC049, -/* 4570 */ 0xFFFD, 0xEEF6, 0xFFFD, 0xEEF4, 0xFFFD, 0xEEF5, 0xC1F4, 0xFFFD, -/* 4578 */ 0xF16F, 0xC3F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1F5, 0xAB41, 0xFFFD, -/* 4580 */ 0xB0A6, 0xD447, 0xFFFD, 0xFFFD, 0xD84C, 0xB3B6, 0xB6AD, 0xDCA4, -/* 4588 */ 0xDCA6, 0xB6AF, 0xB6AE, 0xB6B0, 0xB6B1, 0xDCA5, 0xB96E, 0xB96F, -/* 4590 */ 0xB96D, 0xBBDB, 0xB96C, 0xE0D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBDC, -/* 4598 */ 0xE8AC, 0xEC50, 0xC04A, 0xC1F6, 0xF170, 0xF174, 0xC2F9, 0xF171, -/* 45A0 */ 0xC2FA, 0xC2F8, 0xF175, 0xC2FB, 0xF173, 0xFFFD, 0xF379, 0xC2F7, -/* 45A8 */ 0xC3F8, 0xFFFD, 0xF8CD, 0xFFFD, 0xFFFD, 0xAB42, 0xB3B8, 0xB3B7, -/* 45B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6B2, 0xDCA8, 0xDCA7, 0xB6B3, -/* 45B8 */ 0xFFFD, 0xFFFD, 0xE0D9, 0xB973, 0xB970, 0xE0D8, 0xB972, 0xE0D6, -/* 45C0 */ 0xB971, 0xFFFD, 0xE0D7, 0xFFFD, 0xE4BD, 0xBBDD, 0xFFFD, 0xE8AF, -/* 45C8 */ 0xFFFD, 0xBE5D, 0xE8AD, 0xBE5E, 0xBE5F, 0xE8AE, 0xBE60, 0xFFFD, -/* 45D0 */ 0xEC51, 0xFFFD, 0xC04E, 0xC04B, 0xC050, 0xEC53, 0xC04C, 0xEC52, -/* 45D8 */ 0xC04F, 0xFFFD, 0xFFFD, 0xC04D, 0xFFFD, 0xEEF9, 0xEEFB, 0xFFFD, -/* 45E0 */ 0xFFFD, 0xC1F7, 0xEEFA, 0xC1F8, 0xEEF8, 0xEEF7, 0xFFFD, 0xF177, -/* 45E8 */ 0xF176, 0xC2FC, 0xF178, 0xF37E, 0xC3FA, 0xF37D, 0xF37A, 0xC3F9, -/* 45F0 */ 0xF37B, 0xF37C, 0xFFFD, 0xF548, 0xF549, 0xC4C5, 0xFFFD, 0xC553, -/* 45F8 */ 0xFFFD, 0xFFFD, 0xF66E, 0xFFFD, 0xFFFD, 0xC551, 0xC552, 0xF66F, -/* 4600 */ 0xFFFD, 0xFFFD, 0xC5B4, 0xC5B5, 0xF771, 0xFFFD, 0xFFFD, 0xC645, -/* 4608 */ 0xF8CF, 0xC647, 0xFFFD, 0xF8CE, 0xF8D0, 0xC646, 0xF957, 0xFFFD, -/* 4610 */ 0xF9AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAB43, -/* 4618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB974, 0xFFFD, 0xE4BE, 0xFFFD, 0xE8B0, -/* 4620 */ 0xC051, 0xC052, 0xFFFD, 0xAB44, 0xFFFD, 0xBE61, 0xC3FB, 0xADB1, -/* 4628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC053, 0xFFFD, 0xC5E2, 0xADB2, 0xD84D, -/* 4630 */ 0xFFFD, 0xDCA9, 0xFFFD, 0xDCAB, 0xFFFD, 0xDCAA, 0xFFFD, 0xE0DD, -/* 4638 */ 0xE0DA, 0xB975, 0xFFFD, 0xB976, 0xE0DB, 0xE0DC, 0xFFFD, 0xE4C0, -/* 4640 */ 0xE4C5, 0xBBDE, 0xE4BF, 0xE4C1, 0xE4C8, 0xE4C3, 0xE4C7, 0xE4C4, -/* 4648 */ 0xE4C2, 0xE4C6, 0xBBDF, 0xFFFD, 0xFFFD, 0xE8B3, 0xFFFD, 0xE8B1, -/* 4650 */ 0xBE63, 0xFFFD, 0xBE62, 0xE8B2, 0xBE64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4658 */ 0xFFFD, 0xEC56, 0xFFFD, 0xFFFD, 0xEC55, 0xC054, 0xEC54, 0xEEFC, -/* 4660 */ 0xFFFD, 0xEEFE, 0xEF41, 0xEF40, 0xFFFD, 0xC1F9, 0xEEFD, 0xF1A1, -/* 4668 */ 0xC2FD, 0xF17D, 0xF1A2, 0xC2FE, 0xFFFD, 0xF17B, 0xFFFD, 0xF17E, -/* 4670 */ 0xF17C, 0xF179, 0xC340, 0xF17A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4678 */ 0xF3A1, 0xFFFD, 0xFFFD, 0xF3A3, 0xF3A2, 0xFFFD, 0xF54A, 0xFFFD, -/* 4680 */ 0xF54B, 0xFFFD, 0xFFFD, 0xFFFD, 0xF670, 0xFFFD, 0xC5B7, 0xFFFD, -/* 4688 */ 0xC5B6, 0xF84F, 0xF850, 0xC648, 0xF8D1, 0xFFFD, 0xC669, 0xFFFD, -/* 4690 */ 0xADB3, 0xB6B4, 0xE4CA, 0xE4C9, 0xE8B5, 0xE8B4, 0xFFFD, 0xFFFD, -/* 4698 */ 0xC1FA, 0xEF43, 0xEF42, 0xF1A5, 0xF1A3, 0xF1A6, 0xF1A4, 0xFFFD, -/* 46A0 */ 0xFFFD, 0xC3FC, 0xF3A4, 0xF3A5, 0xF3A6, 0xFFFD, 0xF671, 0xFFFD, -/* 46A8 */ 0xF772, 0xFFFD, 0xF8D2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46B0 */ 0xFFFD, 0xFFFD, 0xADB4, 0xFFFD, 0xFFFD, 0xEC57, 0xEF44, 0xFFFD, -/* 46B8 */ 0xADB5, 0xFFFD, 0xFFFD, 0xBBE0, 0xFFFD, 0xEC58, 0xC341, 0xF1A7, -/* 46C0 */ 0xC3FD, 0xFFFD, 0xF54C, 0xF54D, 0xC554, 0xF851, 0xADB6, 0xB3BB, -/* 46C8 */ 0xB3BC, 0xD84E, 0xB6B5, 0xB6B6, 0xDCAC, 0xB6B7, 0xFFFD, 0xB97A, -/* 46D0 */ 0xFFFD, 0xB97C, 0xE0DF, 0xE0E0, 0xE0DE, 0xB977, 0xB978, 0xB97B, -/* 46D8 */ 0xB979, 0xFFFD, 0xFFFD, 0xE4CB, 0xBBE1, 0xBBE2, 0xFFFD, 0xFFFD, -/* 46E0 */ 0xE8BC, 0xBE67, 0xE8B7, 0xE8B6, 0xFFFD, 0xE8BB, 0xBE65, 0xFFFD, -/* 46E8 */ 0xFFFD, 0xC05B, 0xFFFD, 0xE8B8, 0xE8BD, 0xE8BA, 0xE8B9, 0xFFFD, -/* 46F0 */ 0xBE66, 0xFFFD, 0xC059, 0xFFFD, 0xEC5A, 0xC055, 0xFFFD, 0xEC5B, -/* 46F8 */ 0xFFFD, 0xFFFD, 0xEC59, 0xFFFD, 0xC058, 0xC056, 0xC05A, 0xFFFD, -/* 4700 */ 0xC057, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEF45, 0xFFFD, -/* 4708 */ 0xEF4A, 0xEF46, 0xEF49, 0xC1FB, 0xFFFD, 0xEDD4, 0xEF48, 0xEF47, -/* 4710 */ 0xFFFD, 0xC344, 0xC342, 0xC345, 0xC343, 0xF1A8, 0xF1A9, 0xF1AA, -/* 4718 */ 0xC346, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3AA, 0xC440, 0xF3A8, 0xFFFD, -/* 4720 */ 0xC441, 0xF3A7, 0xF3A9, 0xC3FE, 0xF551, 0xF54E, 0xFFFD, 0xF54F, -/* 4728 */ 0xF550, 0xF672, 0xC556, 0xFFFD, 0xC555, 0xFFFD, 0xF774, 0xF773, -/* 4730 */ 0xC5B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5E3, 0xC649, 0xC660, 0xF958, -/* 4738 */ 0xF9AE, 0xF9AF, 0xADB7, 0xDCAD, 0xFFFD, 0xFFFD, 0xE0E1, 0xE4CC, -/* 4740 */ 0xE4CD, 0xBBE3, 0xFFFD, 0xBBE4, 0xE8BE, 0xBE68, 0xFFFD, 0xFFFD, -/* 4748 */ 0xC1FC, 0xFFFD, 0xF1AB, 0xFFFD, 0xC347, 0xF3AD, 0xC442, 0xF3AC, -/* 4750 */ 0xF3AE, 0xF3AB, 0xF675, 0xF552, 0xF553, 0xFFFD, 0xC4C6, 0xFFFD, -/* 4758 */ 0xF674, 0xFFFD, 0xFFFD, 0xF673, 0xFFFD, 0xF775, 0xF9B0, 0xADB8, -/* 4760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xADB9, 0xFFFD, 0xFFFD, 0xB0A7, 0xD448, -/* 4768 */ 0xFFFD, 0xD84F, 0xFFFD, 0xB6B8, 0xFFFD, 0xB6BB, 0xB6B9, 0xDCAE, -/* 4770 */ 0xFFFD, 0xB6BD, 0xFFFD, 0xB6BA, 0xFFFD, 0xFFFD, 0xB6BC, 0xFFFD, -/* 4778 */ 0xB97E, 0xFFFD, 0xE0E2, 0xFFFD, 0xFFFD, 0xE0E3, 0xE8C0, 0xFFFD, -/* 4780 */ 0xB97D, 0xB9A1, 0xB9A2, 0xFFFD, 0xE4CF, 0xFFFD, 0xE4CE, 0xBBE5, -/* 4788 */ 0xFFFD, 0xBBE6, 0xFFFD, 0xE4D0, 0xE8BF, 0xBBE8, 0xBE69, 0xFFFD, -/* 4790 */ 0xBBE7, 0xFFFD, 0xFFFD, 0xFFFD, 0xC05C, 0xE8C1, 0xBE6B, 0xBE6A, -/* 4798 */ 0xE8C2, 0xE8C5, 0xE8C3, 0xE8C4, 0xBE6C, 0xFFFD, 0xC061, 0xC05F, -/* 47A0 */ 0xFFFD, 0xFFFD, 0xC05E, 0xEC5D, 0xFFFD, 0xC060, 0xFFFD, 0xFFFD, -/* 47A8 */ 0xEC5C, 0xEF4B, 0xFFFD, 0xEC5E, 0xC05D, 0xEC5F, 0xEF4E, 0xEF4C, -/* 47B0 */ 0xEF4D, 0xEF52, 0xC34B, 0xEF51, 0xEF54, 0xEF53, 0xEF50, 0xEF4F, -/* 47B8 */ 0xFFFD, 0xC1FD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1AE, 0xFFFD, -/* 47C0 */ 0xF1AD, 0xC34A, 0xC348, 0xC349, 0xFFFD, 0xF1AC, 0xFFFD, 0xF3B1, -/* 47C8 */ 0xFFFD, 0xC443, 0xFFFD, 0xF3B0, 0xF3AF, 0xC444, 0xFFFD, 0xF558, -/* 47D0 */ 0xF557, 0xFFFD, 0xF555, 0xFFFD, 0xF554, 0xC4C8, 0xC4C7, 0xF559, -/* 47D8 */ 0xF776, 0xC5B9, 0xF677, 0xC557, 0xF676, 0xF556, 0xFFFD, 0xF777, -/* 47E0 */ 0xC5E4, 0xFFFD, 0xC661, 0xF959, 0xFFFD, 0xF9B1, 0xADBA, 0xD850, -/* 47E8 */ 0xEF55, 0xADBB, 0xFFFD, 0xFFFD, 0xE4D2, 0xE4D1, 0xEC60, 0xFFFD, -/* 47F0 */ 0xFFFD, 0xEF57, 0xFFFD, 0xEF56, 0xFFFD, 0xC34C, 0xF3B2, 0xF3B3, -/* 47F8 */ 0xC4C9, 0xFFFD, 0xFFFD, 0xF9B2, 0xB0A8, 0xB6BF, 0xB6BE, 0xE0E4, -/* 4800 */ 0xE0E6, 0xB9A4, 0xE0E5, 0xB9A3, 0xB9A5, 0xE0E7, 0xFFFD, 0xFFFD, -/* 4808 */ 0xFFFD, 0xE4D4, 0xE4D6, 0xE4D5, 0xFFFD, 0xE4D8, 0xFFFD, 0xFFFD, -/* 4810 */ 0xFFFD, 0xBBE9, 0xE4D7, 0xE4D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4D9, -/* 4818 */ 0xFFFD, 0xE8CC, 0xFFFD, 0xE8CF, 0xE8D1, 0xE8C7, 0xE8CB, 0xE8C8, -/* 4820 */ 0xBE6E, 0xBE71, 0xBE73, 0xE8C9, 0xE8CA, 0xBE72, 0xE8CD, 0xE8D0, -/* 4828 */ 0xE8CE, 0xBE74, 0xFFFD, 0xBE70, 0xE8C6, 0xBE6D, 0xFFFD, 0xBE6F, -/* 4830 */ 0xFFFD, 0xFFFD, 0xC063, 0xEC66, 0xEC64, 0xEC63, 0xFFFD, 0xEC69, -/* 4838 */ 0xFFFD, 0xEC68, 0xEC67, 0xFFFD, 0xEC62, 0xC062, 0xEC61, 0xFFFD, -/* 4840 */ 0xEC65, 0xC064, 0xFFFD, 0xFFFD, 0xEF5A, 0xFFFD, 0xEF5E, 0xEF5B, -/* 4848 */ 0xEF5D, 0xEF5C, 0xEF59, 0xEF5F, 0xEF62, 0xEF60, 0xEF61, 0xC240, -/* 4850 */ 0xFFFD, 0xC1FE, 0xEF58, 0xEF63, 0xF1B3, 0xF1B6, 0xF1B8, 0xF1B7, -/* 4858 */ 0xFFFD, 0xF1B1, 0xF1B5, 0xF1B0, 0xFFFD, 0xF1B2, 0xC34D, 0xF1AF, -/* 4860 */ 0xFFFD, 0xF1B4, 0xFFFD, 0xFFFD, 0xF3C0, 0xF3B5, 0xC445, 0xFFFD, -/* 4868 */ 0xFFFD, 0xC446, 0xF3B4, 0xF3B9, 0xF3BF, 0xF3B7, 0xF3BE, 0xFFFD, -/* 4870 */ 0xF3BB, 0xFFFD, 0xF3BA, 0xF3BD, 0xF3B8, 0xF3B6, 0xFFFD, 0xF3BC, -/* 4878 */ 0xFFFD, 0xF560, 0xF55E, 0xC4CA, 0xF55D, 0xF563, 0xF561, 0xFFFD, -/* 4880 */ 0xC4CB, 0xF55C, 0xF55A, 0xFFFD, 0xF55B, 0xC4CD, 0xF55F, 0xC4CC, -/* 4888 */ 0xF562, 0xF678, 0xF67E, 0xFFFD, 0xFFFD, 0xF679, 0xC55B, 0xF6A1, -/* 4890 */ 0xC55A, 0xF67D, 0xF67C, 0xC559, 0xF67B, 0xC558, 0xF67A, 0xFFFD, -/* 4898 */ 0xF77D, 0xF7A1, 0xF77E, 0xFFFD, 0xF77B, 0xC5BB, 0xF778, 0xF77C, -/* 48A0 */ 0xF7A3, 0xFFFD, 0xF7A2, 0xF779, 0xF77A, 0xC5BA, 0xF852, 0xC5E7, -/* 48A8 */ 0xFFFD, 0xF853, 0xC5E5, 0xC5E6, 0xFFFD, 0xFFFD, 0xF8D3, 0xC64A, -/* 48B0 */ 0xF976, 0xFFFD, 0xC66A, 0xFFFD, 0xF9B3, 0xC66B, 0xF9B4, 0xF9B5, -/* 48B8 */ 0xF9C3, 0xF9C2, 0xC67A, 0xF9CD, 0xB0A9, 0xFFFD, 0xFFFD, 0xE0E9, -/* 48C0 */ 0xFFFD, 0xE0E8, 0xFFFD, 0xBBEA, 0xBBEB, 0xE4DA, 0xFFFD, 0xE8D2, -/* 48C8 */ 0xEC6C, 0xFFFD, 0xFFFD, 0xBE75, 0xC065, 0xEC6A, 0xFFFD, 0xEC6D, -/* 48D0 */ 0xC066, 0xFFFD, 0xEF64, 0xEC6B, 0xF1B9, 0xC34E, 0xF3C1, 0xFFFD, -/* 48D8 */ 0xFFFD, 0xFFFD, 0xF566, 0xF564, 0xFFFD, 0xFFFD, 0xF565, 0xFFFD, -/* 48E0 */ 0xFFFD, 0xF6A2, 0xFFFD, 0xC55C, 0xF7A4, 0xC5EA, 0xC5BC, 0xC5E8, -/* 48E8 */ 0xC5E9, 0xF8D4, 0xC662, 0xFFFD, 0xB0AA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 48F0 */ 0xF1BA, 0xFFFD, 0xFFFD, 0xD449, 0xFFFD, 0xB9A6, 0xFFFD, 0xE4DB, -/* 48F8 */ 0xFFFD, 0xFFFD, 0xBBEC, 0xE4DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8D4, -/* 4900 */ 0xE8D3, 0xC068, 0xBE76, 0xBE77, 0xFFFD, 0xE8D7, 0xE8D6, 0xE8D5, -/* 4908 */ 0xFFFD, 0xFFFD, 0xEC6E, 0xEC71, 0xFFFD, 0xEC70, 0xEC6F, 0xC067, -/* 4910 */ 0xEF68, 0xEF66, 0xEF65, 0xFFFD, 0xFFFD, 0xEF67, 0xFFFD, 0xC34F, -/* 4918 */ 0xF1BC, 0xF1BD, 0xC350, 0xFFFD, 0xF1BB, 0xFFFD, 0xF3C3, 0xF3C2, -/* 4920 */ 0xF3C5, 0xC447, 0xF3C4, 0xFFFD, 0xF567, 0xF569, 0xF568, 0xFFFD, -/* 4928 */ 0xFFFD, 0xF6A3, 0xF6A6, 0xF6A4, 0xF6A5, 0xF7A5, 0xC5BD, 0xFFFD, -/* 4930 */ 0xFFFD, 0xFFFD, 0xF854, 0xF855, 0xF856, 0xFFFD, 0xC64B, 0xC663, -/* 4938 */ 0xF9B6, 0xB0AB, 0xFFFD, 0xBE78, 0xC069, 0xF1BE, 0xFFFD, 0xF7A6, -/* 4940 */ 0xFFFD, 0xFFFD, 0xF9C4, 0xD44A, 0xFFFD, 0xC67B, 0xB0AC, 0xEC72, -/* 4948 */ 0xFFFD, 0xF1BF, 0xFFFD, 0xF3C6, 0xFFFD, 0xFFFD, 0xF6A7, 0xF7A7, -/* 4950 */ 0xB0AD, 0xFFFD, 0xE4DD, 0xE4DE, 0xFFFD, 0xBBED, 0xBBEE, 0xE8D9, -/* 4958 */ 0xBE7A, 0xBE79, 0xE8D8, 0xFFFD, 0xEF69, 0xFFFD, 0xF1C0, 0xF1C2, -/* 4960 */ 0xF1C1, 0xC353, 0xC352, 0xC351, 0xFFFD, 0xC55E, 0xF6A8, 0xFFFD, -/* 4968 */ 0xC55D, 0xF7A9, 0xF7A8, 0xFFFD, 0xC64C, 0xF8D5, 0xB3BD, 0xE0EA, -/* 4970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE4E1, 0xE4DF, 0xE4E0, 0xFFFD, 0xFFFD, -/* 4978 */ 0xE8E2, 0xFFFD, 0xE8DD, 0xE8DA, 0xE8E1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4980 */ 0xE8E3, 0xFFFD, 0xFFFD, 0xBE7C, 0xE8E0, 0xE8DC, 0xFFFD, 0xFFFD, -/* 4988 */ 0xE8DB, 0xE8DF, 0xE8DE, 0xBE7B, 0xFFFD, 0xFFFD, 0xEC7D, 0xEC78, -/* 4990 */ 0xEC76, 0xECA1, 0xEC77, 0xFFFD, 0xEC73, 0xFFFD, 0xEC79, 0xFFFD, -/* 4998 */ 0xFFFD, 0xEC74, 0xEF72, 0xEC75, 0xECA2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 49A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEC7C, 0xC06A, 0xEC7B, 0xEC7A, -/* 49A8 */ 0xFFFD, 0xEC7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEF6A, 0xEF6D, -/* 49B0 */ 0xFFFD, 0xFFFD, 0xEF6C, 0xFFFD, 0xEF74, 0xEF6F, 0xEF73, 0xFFFD, -/* 49B8 */ 0xEF71, 0xEF70, 0xEF6E, 0xFFFD, 0xEF6B, 0xFFFD, 0xC243, 0xC242, -/* 49C0 */ 0xFFFD, 0xC244, 0xC241, 0xEF75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 49C8 */ 0xFFFD, 0xF1C8, 0xF1CB, 0xFFFD, 0xF1C9, 0xF1CD, 0xFFFD, 0xFFFD, -/* 49D0 */ 0xFFFD, 0xF1CE, 0xFFFD, 0xF1C6, 0xC358, 0xF1C7, 0xFFFD, 0xF1C5, -/* 49D8 */ 0xF1CC, 0xFFFD, 0xF1C4, 0xF1C3, 0xC357, 0xC355, 0xC354, 0xFFFD, -/* 49E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1CA, -/* 49E8 */ 0xF3CF, 0xF3D5, 0xC44A, 0xF3D0, 0xFFFD, 0xF3D3, 0xF3D7, 0xC44B, -/* 49F0 */ 0xF3D2, 0xFFFD, 0xF3CA, 0xFFFD, 0xF3C9, 0xF3D6, 0xF3CD, 0xFFFD, -/* 49F8 */ 0xF3CB, 0xF3D4, 0xF3CC, 0xC449, 0xC448, 0xFFFD, 0xF3C7, 0xF3C8, -/* 4A00 */ 0xF3D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3CE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF56C, 0xF56F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A10 */ 0xFFFD, 0xC356, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A18 */ 0xFFFD, 0xF56D, 0xF573, 0xF571, 0xF56B, 0xF576, 0xFFFD, 0xF56A, -/* 4A20 */ 0xFFFD, 0xC4CF, 0xF572, 0xFFFD, 0xFFFD, 0xFFFD, 0xF56E, 0xC4CE, -/* 4A28 */ 0xF575, 0xFFFD, 0xFFFD, 0xF574, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A30 */ 0xF6AB, 0xF6AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6B1, 0xFFFD, 0xF6AD, -/* 4A38 */ 0xF6B0, 0xC560, 0xFFFD, 0xFFFD, 0xF6AE, 0xF6AF, 0xFFFD, 0xF6A9, -/* 4A40 */ 0xF6AC, 0xC55F, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5BF, 0xF7B4, 0xF7AF, -/* 4A48 */ 0xF7B3, 0xFFFD, 0xF7B6, 0xF7B2, 0xFFFD, 0xF7AE, 0xFFFD, 0xC5C1, -/* 4A50 */ 0xF7B1, 0xF7B5, 0xC5C0, 0xF7AC, 0xF570, 0xF7B0, 0xFFFD, 0xFFFD, -/* 4A58 */ 0xF7AD, 0xFFFD, 0xF7AA, 0xFFFD, 0xF7AB, 0xC5BE, 0xF85A, 0xF85C, -/* 4A60 */ 0xF85F, 0xF85B, 0xF860, 0xFFFD, 0xF859, 0xFFFD, 0xF857, 0xFFFD, -/* 4A68 */ 0xC5EB, 0xF85D, 0xC5ED, 0xC5EC, 0xF858, 0xF85E, 0xFFFD, 0xFFFD, -/* 4A70 */ 0xFFFD, 0xFFFD, 0xF8DA, 0xC64D, 0xF8DB, 0xFFFD, 0xF8D9, 0xF8D6, -/* 4A78 */ 0xFFFD, 0xFFFD, 0xF8D8, 0xF8D7, 0xF95A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A80 */ 0xFFFD, 0xF95C, 0xF95B, 0xFFFD, 0xFFFD, 0xF979, 0xFFFD, 0xF978, -/* 4A88 */ 0xF977, 0xF97A, 0xFFFD, 0xC673, 0xC674, 0xF9CA, 0xF9CE, 0xB3BE, -/* 4A90 */ 0xDCAF, 0xE0ED, 0xFFFD, 0xB9A7, 0xE0EB, 0xFFFD, 0xFFFD, 0xE0EC, -/* 4A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE4E2, 0xE4E3, 0xBBF1, 0xBBEF, 0xE4E4, -/* 4AA0 */ 0xBBF0, 0xE8E8, 0xFFFD, 0xE8EB, 0xE8E5, 0xE8EC, 0xE8E4, 0xE8E6, -/* 4AA8 */ 0xFFFD, 0xE8E7, 0xE8EA, 0xFFFD, 0xFFFD, 0xBEA1, 0xE8EF, 0xE8EE, -/* 4AB0 */ 0xBE7D, 0xE8E9, 0xE8ED, 0xBE7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4AB8 */ 0xFFFD, 0xFFFD, 0xECAC, 0xFFFD, 0xC06F, 0xFFFD, 0xECA7, 0xC06B, -/* 4AC0 */ 0xFFFD, 0xECA4, 0xECAA, 0xECAD, 0xFFFD, 0xC070, 0xFFFD, 0xECA9, -/* 4AC8 */ 0xECA6, 0xECAE, 0xECA5, 0xFFFD, 0xECAB, 0xC06C, 0xFFFD, 0xECA3, -/* 4AD0 */ 0xC06D, 0xFFFD, 0xC06E, 0xECA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFA9, -/* 4AD8 */ 0xEF7A, 0xEF7B, 0xEF7E, 0xEF7C, 0xFFFD, 0xEF76, 0xFFFD, 0xFFFD, -/* 4AE0 */ 0xEF79, 0xEFA5, 0xEF7D, 0xFFFD, 0xFFFD, 0xC245, 0xFFFD, 0xEFA7, -/* 4AE8 */ 0xEFA4, 0xC246, 0xEFA6, 0xEF77, 0xEFA2, 0xEFA3, 0xFFFD, 0xEFA1, -/* 4AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1D2, 0xF1D4, 0xF1D7, 0xFFFD, -/* 4AF8 */ 0xFFFD, 0xF1D1, 0xFFFD, 0xC359, 0xF1D9, 0xF1D0, 0xF1DA, 0xFFFD, -/* 4B00 */ 0xF1D6, 0xF1D8, 0xF1DC, 0xF1D5, 0xF1DD, 0xF1D3, 0xF1CF, 0xC35A, -/* 4B08 */ 0xFFFD, 0xF1DB, 0xC35B, 0xC44D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4B10 */ 0xFFFD, 0xEF78, 0xF3F1, 0xF3E8, 0xC44F, 0xF3E4, 0xC450, 0xFFFD, -/* 4B18 */ 0xFFFD, 0xF3ED, 0xF3E7, 0xF3DD, 0xC44E, 0xF3EA, 0xF3E5, 0xF3E6, -/* 4B20 */ 0xFFFD, 0xF3D8, 0xF3DF, 0xF3EE, 0xFFFD, 0xF3EB, 0xFFFD, 0xF3E3, -/* 4B28 */ 0xFFFD, 0xF3EF, 0xF3DE, 0xF3D9, 0xF3EC, 0xFFFD, 0xF3DB, 0xF3E9, -/* 4B30 */ 0xF3E0, 0xF3F0, 0xF3DC, 0xC44C, 0xF3DA, 0xF3E1, 0xF3E2, 0xFFFD, -/* 4B38 */ 0xFFFD, 0xFFFD, 0xF57D, 0xFFFD, 0xF57B, 0xFFFD, 0xF5A2, 0xFFFD, -/* 4B40 */ 0xF5AE, 0xF5A5, 0xF57C, 0xF578, 0xF5A7, 0xF57E, 0xF5A3, 0xF57A, -/* 4B48 */ 0xF5AA, 0xF577, 0xF5A1, 0xF5A6, 0xF5A8, 0xF5AB, 0xF579, 0xFFFD, -/* 4B50 */ 0xF5AF, 0xF5B0, 0xF5A9, 0xF5AD, 0xF5A4, 0xFFFD, 0xF6C1, 0xF6C4, -/* 4B58 */ 0xFFFD, 0xC561, 0xFFFD, 0xF6C3, 0xF6C8, 0xF6C6, 0xC562, 0xF6BD, -/* 4B60 */ 0xF6B3, 0xF6B2, 0xC564, 0xF6BF, 0xF6C0, 0xF6BC, 0xF6B4, 0xFFFD, -/* 4B68 */ 0xF6B9, 0xF5AC, 0xFFFD, 0xF6B5, 0xC563, 0xF6BB, 0xFFFD, 0xF6BA, -/* 4B70 */ 0xFFFD, 0xF6B6, 0xF6C2, 0xFFFD, 0xF6B7, 0xF7BB, 0xF6C5, 0xF6C7, -/* 4B78 */ 0xF6BE, 0xF6B8, 0xF7BC, 0xF7BE, 0xF7B8, 0xC5C2, 0xFFFD, 0xF7C5, -/* 4B80 */ 0xF7C3, 0xC5C3, 0xF7C2, 0xF7C1, 0xF7BA, 0xF7B7, 0xF7BD, 0xF7C6, -/* 4B88 */ 0xF7B9, 0xF7BF, 0xFFFD, 0xF869, 0xF86E, 0xF864, 0xF867, 0xC5EE, -/* 4B90 */ 0xF86B, 0xFFFD, 0xF872, 0xF7C0, 0xFFFD, 0xF865, 0xF86F, 0xF873, -/* 4B98 */ 0xF86A, 0xF863, 0xF86D, 0xFFFD, 0xF86C, 0xF871, 0xF870, 0xF7C4, -/* 4BA0 */ 0xF868, 0xF862, 0xF866, 0xC64E, 0xC64F, 0xF861, 0xFFFD, 0xF8E6, -/* 4BA8 */ 0xF8DD, 0xF8E5, 0xF8E2, 0xF8E3, 0xF8DC, 0xF8DF, 0xF8E7, 0xF8E1, -/* 4BB0 */ 0xF8E0, 0xF8DE, 0xFFFD, 0xF8E4, 0xFFFD, 0xF95D, 0xFFFD, 0xF95E, -/* 4BB8 */ 0xFFFD, 0xF960, 0xF95F, 0xF962, 0xF961, 0xF97C, 0xF97B, 0xF9B7, -/* 4BC0 */ 0xFFFD, 0xF9B8, 0xFFFD, 0xF9C5, 0xC678, 0xC67C, 0xFFFD, 0xF9CF, -/* 4BC8 */ 0xC67D, 0xB3BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4D0, 0xF6C9, 0xFFFD, -/* 4BD0 */ 0xC650, 0xC651, 0xFFFD, 0xB3C0, 0xE0EE, 0xFFFD, 0xB9A8, 0xE8F0, -/* 4BD8 */ 0xFFFD, 0xFFFD, 0xECB0, 0xECB1, 0xECAF, 0xEFAB, 0xEFAA, 0xC247, -/* 4BE0 */ 0xF1DF, 0xEFAC, 0xF1DE, 0xFFFD, 0xFFFD, 0xF3F3, 0xC451, 0xC453, -/* 4BE8 */ 0xF3F2, 0xFFFD, 0xFFFD, 0xC452, 0xFFFD, 0xF5B1, 0xF5B3, 0xF5B2, -/* 4BF0 */ 0xF6CA, 0xC565, 0xFFFD, 0xC5EF, 0xF8E8, 0xF963, 0xFFFD, 0xFFFD, -/* 4BF8 */ 0xF9D2, 0xB3C1, 0xFFFD, 0xE4E5, 0xFFFD, 0xBEA2, 0xFFFD, 0xFFFD, -/* 4C00 */ 0xFFFD, 0xECB3, 0xECB2, 0xFFFD, 0xEFAD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C08 */ 0xC454, 0xC4D1, 0xF7C7, 0xF9CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3C2, -/* 4C10 */ 0xBBF2, 0xFFFD, 0xBEA3, 0xFFFD, 0xF3F4, 0xFFFD, 0xF874, 0xB6C0, -/* 4C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFAE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C20 */ 0xC664, 0xB6C1, 0xBEA4, 0xC248, 0xF875, 0xB6C2, 0xFFFD, 0xE8F1, -/* 4C28 */ 0xC072, 0xECB4, 0xECB5, 0xFFFD, 0xC071, 0xFFFD, 0xEFAF, 0xC24C, -/* 4C30 */ 0xC24A, 0xC24B, 0xC249, 0xF1E0, 0xC35C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C38 */ 0xF5B5, 0xF5B4, 0xF5B7, 0xF5B6, 0xC4D2, 0xFFFD, 0xFFFD, 0xF6CB, -/* 4C40 */ 0xFFFD, 0xF6CD, 0xF6CC, 0xC566, 0xF7C8, 0xFFFD, 0xF876, 0xF877, -/* 4C48 */ 0xC5F0, 0xF964, 0xF97D, 0xC675, 0xFFFD, 0xDCB0, 0xECB6, 0xEFB0, -/* 4C50 */ 0xF3F5, 0xE0EF, 0xFFFD, 0xEFB1, 0xF1E2, 0xF1E1, 0xFFFD, 0xFFFD, -/* 4C58 */ 0xFFFD, 0xFFFD, 0xF878, 0xC652, 0xFFFD, 0xF965, 0xF97E, 0xFFFD, -/* 4C60 */ 0xFFFD, 0xFFFD, 0xB9A9, 0xE8F2, 0xE8F3, 0xFFFD, 0xECB7, 0xB9AA, -/* 4C68 */ 0xFFFD, 0xC35D, 0xF1E3, 0xFFFD, 0xF6CF, 0xC567, 0xF6D0, 0xF6CE, -/* 4C70 */ 0xF879, 0xFFFD, 0xF8E9, 0xFFFD, 0xB9AB, 0xFFFD, 0xEFB4, 0xEFB3, -/* 4C78 */ 0xEFB2, 0xF1E4, 0xFFFD, 0xFFFD, 0xF1E8, 0xF1E7, 0xF1E6, 0xF1E5, -/* 4C80 */ 0xC35E, 0xF3F6, 0xF5B9, 0xC4D3, 0xF5B8, 0xF6D1, 0xF7CB, 0xF7CA, -/* 4C88 */ 0xC5C4, 0xF7C9, 0xF87C, 0xF87B, 0xF87A, 0xFFFD, 0xFFFD, 0xBBF3, -/* 4C90 */ 0xFFFD, 0xECB8, 0xC24D, 0xFFFD, 0xF3F7, 0xF3F8, 0xF7CC, 0xF87D, -/* 4C98 */ 0xFFFD, 0xFFFD, 0xF8EA, 0xF966, 0xF9B9, 0xF9D4, 0xBBF4, 0xC24E, -/* 4CA0 */ 0xF1E9, 0xF3F9, 0xF6D2, 0xF87E, 0xFFFD, 0xFFFD, 0xBEA6, 0xFFFD, -/* 4CA8 */ 0xEFB5, 0xF1EA, 0xF3FA, 0xF3FB, 0xF3FC, 0xF5BE, 0xFFFD, 0xF5BA, -/* 4CB0 */ 0xC568, 0xF5BD, 0xF5BC, 0xC4D4, 0xF5BB, 0xC4D6, 0xFFFD, 0xC4D5, -/* 4CB8 */ 0xF6D4, 0xF6D3, 0xC569, 0xC56A, 0xFFFD, 0xFFFD, 0xC5C6, 0xF7CD, -/* 4CC0 */ 0xC5C5, 0xFFFD, 0xF8A3, 0xF8A4, 0xF8A2, 0xF8A1, 0xC654, 0xFFFD, -/* 4CC8 */ 0xF8EB, 0xF8EC, 0xF8ED, 0xC653, 0xF967, 0xF96A, 0xF969, 0xF968, -/* 4CD0 */ 0xFFFD, 0xFFFD, 0xF9D3, 0xC073, 0xFFFD, 0xFFFD, 0xC365, 0xF5BF, -/* 4CD8 */ 0xF6D5, 0xFFFD, 0xC5C7, 0xF7CE, 0xFFFD, 0xFFFD, 0xF9D5, 0xFFFD, -/* 4CE0 */ 0xFFFD, 0xFFFD, 0xC074, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFB6, 0xFFFD, -/* 4CE8 */ 0xF7CF, 0xFFFD, 0xF9A1, 0xC94A, 0xDDFC, 0xA14A, 0xA157, 0xFFFD, -/* 4CF0 */ 0xA159, 0xA15B, 0xA15F, 0xA160, 0xA163, 0xA164, 0xA167, 0xA168, -/* 4CF8 */ 0xA16B, 0xA16C, 0xA16F, 0xA170, 0xA173, 0xA174, 0xA177, 0xA178, -/* 4D00 */ 0xA17B, 0xA17C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1C6, 0xA1C7, -/* 4D08 */ 0xA1CA, 0xA1CB, 0xA1C8, 0xA1C9, 0xA15C, 0xA14D, 0xFFFD, 0xA14F, -/* 4D10 */ 0xFFFD, 0xA151, 0xA152, 0xA153, 0xA154, 0xFFFD, 0xA17D, 0xA17E, -/* 4D18 */ 0xA1A1, 0xA1A2, 0xA1A3, 0xA1A4, 0xA1CC, 0xA1CD, 0xA1CE, 0xA1DE, -/* 4D20 */ 0xA1DF, 0xA1E0, 0xA1E1, 0xA1E2, 0xFFFD, 0xFFFD, 0xA24C, 0xA24D, -/* 4D28 */ 0xA24E, 0xA149, 0xFFFD, 0xA1AD, 0xA243, 0xA248, 0xA1AE, 0xFFFD, -/* 4D30 */ 0xA15D, 0xA15E, 0xA1AF, 0xA1CF, 0xA141, 0xA1D0, 0xA144, 0xA241, -/* 4D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4D40 */ 0xFFFD, 0xFFFD, 0xA147, 0xA146, 0xA1D5, 0xA1D7, 0xA1D6, 0xA148, -/* 4D48 */ 0xA249, 0xA242, 0xFFFD, 0xFFFD, 0xA1C4, 0xA340, 0xA341, 0xA342, -/* 4D50 */ 0xA343, 0xA161, 0xA155, 0xA162, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4D58 */ 0xFFFD, 0xFFFD, 0xA14E, -/* End of table Total Length = 0x4EA8 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cns_1.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cns_1.uf deleted file mode 100644 index b645703a214..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cns_1.uf +++ /dev/null @@ -1,7082 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0391 - srcEnd = 039A - destBegin = 2475 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 039B - srcEnd = 03A1 - destBegin = 2521 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = 2528 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = 252F -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = 2540 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 2160 - srcEnd = 2169 - destBegin = 242B -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 2170 - srcEnd = 2179 - destBegin = 2635 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 2400 - srcEnd = 241F - destBegin = 4221 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2460 - srcEnd = 2469 - destBegin = 2621 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2474 - srcEnd = 247D - destBegin = 262B -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2581 - srcEnd = 2588 - destBegin = 2324 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 3021 - srcEnd = 3029 - destBegin = 2435 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 3105 - srcEnd = 3129 - destBegin = 2547 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = FE59 - srcEnd = FE5E - destBegin = 215E -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = FF10 - srcEnd = FF19 - destBegin = 2421 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = FF21 - srcEnd = FF3A - destBegin = 2441 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = FF41 - srcEnd = FF5A - destBegin = 245B -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 00A7 - srcEnd = 00B7 - mappingOffset = 0000 - Mapping = - 2170 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2278 2234 FFFD FFFD FFFD FFFD FFFD - 2131 -End of Item 0011 - -Begin of Item 0012 - Format 2 - srcBegin = 00D7 - destBegin = 2232 -End of Item 0012 - -Begin of Item 0013 - Format 2 - srcBegin = 00F7 - destBegin = 2233 -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 02C7 - srcEnd = 02CB - mappingOffset = 0011 - Mapping = - 256F FFFD 256D 256E 2570 -End of Item 0014 - -Begin of Item 0015 - Format 2 - srcBegin = 02D9 - destBegin = 256C -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = 2013 - srcEnd = 2026 - mappingOffset = 0016 - Mapping = - 2139 2137 FFFD 225D FFFD 2164 2165 FFFD - FFFD 2166 2167 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 212D 212C -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 2032 - srcEnd = 203E - mappingOffset = 002A - Mapping = - 216A FFFD FFFD 216B FFFD FFFD FFFD FFFD - FFFD 216F FFFD FFFD 2223 -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 2103 - srcEnd = 2109 - mappingOffset = 0037 - Mapping = - 226A FFFD 2222 FFFD FFFD FFFD 226B -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 2190 - srcEnd = 2199 - mappingOffset = 003E - Mapping = - 2258 2255 2257 2256 FFFD FFFD 2259 225A - 225C 225B -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 2215 - srcEnd = 223C - mappingOffset = 0048 - Mapping = - 2261 FFFD FFFD FFFD FFFD 2235 FFFD FFFD - FFFD 223C 2249 2248 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2245 2246 224D FFFD - FFFD 224E FFFD FFFD FFFD FFFD FFFD 2250 - 224F FFFD FFFD FFFD FFFD FFFD FFFD 2244 -End of Item 001A - -Begin of Item 001B - Format 2 - srcBegin = 2252 - destBegin = 223D -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 2260 - srcEnd = 2267 - mappingOffset = 0070 - Mapping = - 223B 223E FFFD FFFD FFFD FFFD 2239 223A -End of Item 001C - -Begin of Item 001D - Format 2 - srcBegin = 22A5 - destBegin = 2247 -End of Item 001D - -Begin of Item 001E - Format 2 - srcBegin = 22BF - destBegin = 224A -End of Item 001E - -Begin of Item 001F - Format 2 - srcBegin = 2421 - destBegin = 4241 -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 0078 - Mapping = - 2339 FFFD 233A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 233C FFFD FFFD FFFD - 233D FFFD FFFD FFFD 233E FFFD FFFD FFFD - 233F FFFD FFFD FFFD 2337 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2336 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2335 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2334 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2333 -End of Item 0020 - -Begin of Item 0021 - Format 2 - srcBegin = 2550 - destBegin = 2344 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 255E - srcEnd = 2573 - mappingOffset = 00B5 - Mapping = - 2345 FFFD FFFD 2347 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2346 FFFD FFFD 2340 - 2341 2343 2342 234C 234D 234E -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 2589 - srcEnd = 25A1 - mappingOffset = 00CB - Mapping = - 2332 2331 2330 232F 232E 232D 232C FFFD - FFFD FFFD FFFD 2338 233B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 217C - 217B -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 25B2 - srcEnd = 25CF - mappingOffset = 00E4 - Mapping = - 2175 2174 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 217E 217D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 217A 2179 FFFD FFFD - FFFD 2172 FFFD FFFD 2176 2173 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 25E2 - srcEnd = 25E5 - mappingOffset = 0102 - Mapping = - 2348 2349 234B 234A -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 2605 - srcEnd = 2609 - mappingOffset = 0106 - Mapping = - 2178 2177 FFFD FFFD 2254 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 010B - Mapping = - 2251 2253 2252 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 3000 - srcEnd = 301E - mappingOffset = 010E - Mapping = - 2121 2123 2124 2171 FFFD FFFD FFFD FFFD - 2152 2153 214E 214F 2156 2157 215A 215B - 214A 214B 2265 FFFD 2146 2147 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2168 2169 -End of Item 0028 - -Begin of Item 0029 - Format 2 - srcBegin = 30FB - destBegin = 2126 -End of Item 0029 - -Begin of Item 002A - Format 2 - srcBegin = 32A3 - destBegin = 2221 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 338E - srcEnd = 338F - mappingOffset = 012D - Mapping = - 2275 2276 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 339C - srcEnd = 33A1 - mappingOffset = 012F - Mapping = - 2270 2271 2272 FFFD FFFD 2274 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 33C4 - srcEnd = 33D5 - mappingOffset = 0135 - Mapping = - 2277 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2273 FFFD FFFD 224C 224B FFFD - FFFD 226F -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 4E00 - srcEnd = 4F19 - mappingOffset = 0147 - Mapping = - 4421 4423 FFFD 4424 FFFD FFFD FFFD FFFD - 4437 4435 4438 4436 FFFD 4462 FFFD FFFD - 4461 4460 FFFD FFFD 4562 4561 4560 FFFD - 4563 455F FFFD FFFD FFFD FFFD 4722 4723 - FFFD FFFD FFFD FFFD FFFD FFFD 4B64 FFFD - FFFD FFFD FFFD 4439 FFFD 4463 FFFD FFFD - 4464 FFFD 486B FFFD FFFD FFFD FFFD FFFD - 443A 4465 FFFD 4564 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4425 FFFD 443C FFFD FFFD - 443D FFFD FFFD 4466 FFFD 4565 4567 4566 - FFFD FFFD 4724 4725 FFFD FFFD 4B65 FFFD - 537D 4422 FFFD FFFD FFFD 4426 443F 443E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4726 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4B66 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5871 FFFD - FFFD FFFD 632A FFFD FFFD FFFD 4427 FFFD - 4468 FFFD FFFD 4B67 4428 FFFD 4440 FFFD - FFFD 4469 446B FFFD 446C 446A FFFD FFFD - FFFD 4727 FFFD 4B68 FFFD FFFD 4B69 4F67 - FFFD 4441 446D FFFD 4728 472A 4729 FFFD - 486C FFFD FFFD 4B6A 4B6B 4F68 4F69 FFFD - FFFD FFFD FFFD 537E FFFD FFFD FFFD FFFD - FFFD FFFD 4429 FFFD FFFD FFFD FFFD FFFD - 446F 446E FFFD 4470 4476 FFFD 4471 4472 - FFFD FFFD 4474 4475 FFFD 4473 FFFD FFFD - FFFD FFFD FFFD FFFD 456A 456B 456C 456D - 4569 4570 FFFD FFFD FFFD FFFD 4571 4623 - FFFD FFFD FFFD 456E 456F 4568 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4737 FFFD 4734 4738 FFFD FFFD 4735 FFFD - FFFD FFFD FFFD 4736 FFFD 4739 FFFD 472B - FFFD 473A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 472C 472E 473B FFFD 4730 FFFD 4733 - 4731 4732 FFFD FFFD FFFD 472F FFFD FFFD - FFFD 472D -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 4F2F - srcEnd = 4F9D - mappingOffset = 0261 - Mapping = - 4924 4875 FFFD FFFD FFFD 4872 FFFD 4926 - FFFD 487A FFFD 4879 FFFD 487D 4878 FFFD - FFFD FFFD FFFD FFFD 487B FFFD FFFD 487E - 486F 4929 FFFD FFFD FFFD FFFD 486D 4925 - 486E 4876 4877 FFFD FFFD 487C 4874 FFFD - 4870 FFFD 4927 492A 4873 4922 4928 4871 - FFFD 4923 FFFD FFFD 4921 FFFD FFFD FFFD - FFFD FFFD 4B79 FFFD FFFD 4B71 FFFD FFFD - 4B6C 4B76 FFFD FFFD 4B6F FFFD 4B77 FFFD - FFFD FFFD FFFD 4C21 4B7A FFFD FFFD 4B7C - 4B70 FFFD FFFD FFFD 4B75 FFFD FFFD 4B74 - FFFD 4B78 FFFD FFFD 4B73 FFFD 4B6E FFFD - 4B7D FFFD 4B7E FFFD FFFD FFFD FFFD 4B7B - FFFD FFFD FFFD FFFD 4B72 FFFD 4B6D -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 4FAE - srcEnd = 4FE1 - mappingOffset = 02D0 - Mapping = - 4F78 4F6C FFFD FFFD FFFD FFFD FFFD 4F6B - 4F73 5021 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4F6D FFFD FFFD 4F7B 4F72 4F7A FFFD - FFFD FFFD FFFD FFFD 4F76 FFFD FFFD FFFD - 4F7D 4F70 4F79 4F6F FFFD FFFD FFFD FFFD - FFFD 4F77 4F74 FFFD 4F7C FFFD FFFD 4F71 - 4F7E 4F75 4F6E 4F6A -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 4FEE - srcEnd = 502D - mappingOffset = 0304 - Mapping = - 543A 5424 FFFD 5434 FFFD 5439 FFFD FFFD - FFFD FFFD 5427 FFFD 5430 FFFD FFFD FFFD - 543D FFFD 5431 FFFD FFFD FFFD FFFD FFFD - 542A FFFD FFFD 543F FFFD 5436 5421 5422 - FFFD 5924 FFFD 542F 542E FFFD 5432 FFFD - 5429 FFFD 5438 5437 542D FFFD FFFD FFFD - FFFD 542C FFFD 5435 FFFD 5423 FFFD 5426 - 5425 FFFD 5433 5428 543C 543E FFFD 543B -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 503C - srcEnd = 51CD - mappingOffset = 0344 - Mapping = - 542B FFFD FFFD FFFD FFFD FFFD FFFD 5876 - FFFD FFFD FFFD 5875 FFFD 5879 FFFD FFFD - 5877 FFFD 587C 5923 FFFD FFFD FFFD FFFD - FFFD 587D FFFD FFFD FFFD FFFD 5878 FFFD - 5874 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 587A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5926 FFFD 5925 FFFD FFFD FFFD FFFD - 5921 587E 587B 5922 FFFD FFFD 5872 FFFD - FFFD 5873 FFFD FFFD 5E2E FFFD FFFD FFFD - FFFD 5E2B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5E2A FFFD FFFD FFFD 5E2D FFFD FFFD - FFFD FFFD 5E2F FFFD 5E30 5E2C 5E31 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5E29 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6331 632B FFFD 6334 FFFD FFFD 632D 632E - FFFD 632C FFFD 6332 FFFD FFFD FFFD 6333 - FFFD FFFD 6330 FFFD FFFD FFFD FFFD FFFD - FFFD 632F FFFD 6335 FFFD FFFD FFFD FFFD - FFFD FFFD 677C 6779 FFFD 677A FFFD FFFD - FFFD 6778 6775 FFFD FFFD FFFD 6777 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6774 FFFD 6772 FFFD 677D FFFD FFFD - FFFD 6776 6773 FFFD FFFD 677B FFFD FFFD - FFFD 6C23 FFFD FFFD FFFD 6C24 FFFD 6C22 - FFFD FFFD FFFD FFFD 6C21 FFFD 6C25 FFFD - 6B7E 6C28 FFFD FFFD 6C26 6C27 FFFD FFFD - FFFD FFFD FFFD FFFD 7033 FFFD 7030 FFFD - 7032 7034 FFFD FFFD 7031 FFFD FFFD FFFD - FFFD FFFD FFFD 7341 FFFD 7342 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7340 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7343 782B - FFFD FFFD FFFD 7A62 7A63 FFFD FFFD 7B58 - 7B57 FFFD FFFD 442A 4442 4478 FFFD 4477 - 4573 4572 473E 473D 473F 473C FFFD 492C - 492B 492D FFFD FFFD FFFD FFFD 4C23 FFFD - 4C22 4C24 FFFD 5022 FFFD 2279 FFFD 227A - 5927 227C 227B FFFD FFFD 227D 677E 227E - FFFD 442B FFFD 4479 4740 4C25 FFFD 442C - 447C 447A 447B FFFD FFFD 4741 FFFD FFFD - FFFD 492E 4C27 4C26 4C28 FFFD FFFD FFFD - 5440 FFFD FFFD FFFD 7035 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4574 4575 FFFD - FFFD 4742 FFFD FFFD FFFD 5024 5023 FFFD - FFFD 5928 FFFD 447D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5025 FFFD 5443 FFFD - 5441 5442 FFFD FFFD FFFD FFFD 7036 FFFD - 4576 FFFD FFFD FFFD 4743 FFFD FFFD FFFD - FFFD FFFD 492F 4930 FFFD FFFD FFFD FFFD - FFFD 4C29 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5446 FFFD FFFD FFFD FFFD 5447 - 5445 5444 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 51DC - srcEnd = 51E1 - mappingOffset = 04D6 - Mapping = - 6C29 7037 FFFD FFFD 442D 443B -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 51F0 - srcEnd = 525D - mappingOffset = 04DC - Mapping = - 5929 5E33 FFFD 6821 FFFD FFFD 447E FFFD - 4579 4577 4578 FFFD FFFD 4C2A FFFD FFFD - 442E 442F FFFD 4443 FFFD FFFD 4521 4522 - 4523 FFFD 457A FFFD FFFD FFFD 4747 FFFD - FFFD 4745 4746 FFFD FFFD FFFD 4748 4744 - FFFD FFFD FFFD FFFD FFFD 4F4F FFFD FFFD - FFFD FFFD FFFD FFFD 4932 4931 FFFD FFFD - 4935 4933 4934 FFFD FFFD FFFD 4C30 FFFD - 4C2F FFFD FFFD FFFD FFFD FFFD 4C31 4C2D - 4C2C FFFD 4C2E 4C2B FFFD FFFD FFFD FFFD - FFFD 4C32 FFFD 5027 FFFD FFFD FFFD 502C - FFFD FFFD 5028 502B 502A 5029 5026 FFFD - FFFD FFFD FFFD FFFD 544A FFFD 5448 FFFD - FFFD FFFD FFFD 544B 5449 544C -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 5269 - srcEnd = 52AC - mappingOffset = 054A - Mapping = - 5E37 592A FFFD FFFD FFFD FFFD 592B FFFD - FFFD 5E34 FFFD 5E35 5E36 FFFD 6337 FFFD - FFFD FFFD FFFD FFFD 6338 FFFD 6336 FFFD - FFFD 6823 6822 FFFD FFFD FFFD 6C2A 6C2B - 6C2C 6C2E FFFD FFFD 6C2D FFFD FFFD FFFD - 7038 FFFD 7039 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4430 FFFD FFFD FFFD 457C 457B - FFFD FFFD 4749 FFFD FFFD FFFD FFFD FFFD - 4937 4938 4936 4939 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 52BB - srcEnd = 5384 - mappingOffset = 058E - Mapping = - 4C34 FFFD FFFD 4C33 FFFD FFFD 5030 FFFD - 502F FFFD FFFD FFFD 502D FFFD 502E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 592C - FFFD FFFD 592F FFFD 5B2B 592E 592D FFFD - 5E3A FFFD 5E39 5E38 6339 FFFD FFFD 633C - 633D 633B FFFD 633A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6C2F FFFD FFFD - 703A FFFD 7344 FFFD FFFD 7961 FFFD 4444 - 4524 FFFD FFFD 4525 4526 FFFD FFFD FFFD - FFFD FFFD 457D 457E FFFD 474A FFFD FFFD - FFFD FFFD 5031 FFFD 5931 5930 FFFD FFFD - FFFD FFFD 4431 4527 4621 FFFD 5932 FFFD - FFFD FFFD 4622 FFFD FFFD 474C 474B FFFD - 493A FFFD FFFD FFFD FFFD FFFD FFFD 544D - FFFD FFFD FFFD FFFD 633E FFFD 6824 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4528 FFFD - FFFD FFFD FFFD 5935 5933 5934 4432 FFFD - 4445 243F 452B FFFD 452A 4529 4625 4624 - FFFD FFFD FFFD FFFD FFFD FFFD 4C38 4C35 - 4C37 4C36 FFFD FFFD 5032 FFFD FFFD 5E3B - FFFD 4433 FFFD 452C FFFD 4627 4626 FFFD - FFFD FFFD FFFD 4C39 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4629 4628 474D 474E FFFD - 493B FFFD 493C FFFD 4C3A 4C3B 4C3C FFFD - 5033 FFFD FFFD FFFD 544E FFFD FFFD FFFD - FFFD 452D -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 539A - srcEnd = 544E - mappingOffset = 0658 - Mapping = - 5034 FFFD FFFD 5450 FFFD 544F FFFD FFFD - FFFD FFFD FFFD 5E3C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6825 FFFD FFFD FFFD FFFD - 6C30 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 462A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5936 FFFD FFFD FFFD FFFD 4434 4446 - 452F 452E FFFD 4530 FFFD FFFD FFFD FFFD - FFFD FFFD 4C3E FFFD 4C3D 4C3F FFFD FFFD - FFFD 5035 FFFD FFFD FFFD 5451 FFFD FFFD - 763B 4447 462C 463B 4636 FFFD 4631 4630 - 4637 4635 462E 463C 462F 462B 463A 4639 - 4638 462D FFFD 4634 FFFD FFFD 4633 FFFD - FFFD 463D 4632 FFFD FFFD FFFD FFFD 4754 - FFFD 475A 4756 FFFD 475C FFFD 4759 474F - 4752 4755 4751 4758 475B 4750 4753 4757 - 475D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4949 FFFD 493D 493F 4957 4952 FFFD - FFFD FFFD FFFD FFFD 4941 4943 FFFD 494A - FFFD 4956 4958 493E 494F FFFD FFFD 4955 - FFFD 4946 FFFD 4950 4951 FFFD 494E 494C - FFFD 494D 4953 FFFD 4940 FFFD 4954 FFFD - 4948 4945 FFFD FFFD 4944 FFFD 4947 FFFD - 494B FFFD FFFD FFFD 4942 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 5462 - srcEnd = 549A - mappingOffset = 070D - Mapping = - 4C51 FFFD FFFD FFFD FFFD FFFD 4C52 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4C4D - FFFD 4C40 FFFD 4C41 4C4E 4C47 4C43 FFFD - FFFD 4C46 4C4B 4C54 FFFD FFFD 4C45 FFFD - FFFD FFFD 4C48 FFFD 4C4A FFFD FFFD FFFD - FFFD 4C53 4C4F FFFD 4C55 FFFD 4C4C FFFD - 4C49 FFFD FFFD 4C44 4C42 FFFD FFFD FFFD - 4C50 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 54A6 - srcEnd = 54CE - mappingOffset = 0746 - Mapping = - 503C 504A 5038 5049 5041 5046 5036 FFFD - FFFD 5045 FFFD 5047 FFFD 503D FFFD FFFD - FFFD FFFD 503B FFFD FFFD 5048 FFFD 5040 - FFFD 504B 5037 5042 503F FFFD 5043 FFFD - FFFD 503E 5044 503A FFFD FFFD FFFD FFFD - 5039 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 54E1 - srcEnd = 5514 - mappingOffset = 076F - Mapping = - 545E FFFD FFFD FFFD 5457 5462 FFFD 5452 - 545C 5461 FFFD FFFD 545D 5460 FFFD FFFD - FFFD 5458 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 545A FFFD 5456 5465 FFFD FFFD FFFD - 5454 FFFD FFFD FFFD FFFD 5459 5464 FFFD - 545F FFFD FFFD FFFD FFFD FFFD 5466 5453 - FFFD FFFD FFFD 545B -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 5527 - srcEnd = 556A - mappingOffset = 07A3 - Mapping = - 5463 FFFD FFFD FFFD FFFD 5949 FFFD 5947 - 5944 FFFD 5940 FFFD 594B FFFD FFFD FFFD - 5455 5946 FFFD FFFD FFFD FFFD FFFD 5E4E - FFFD FFFD 594C FFFD 593E 593B FFFD 5938 - FFFD FFFD FFFD 593F FFFD FFFD FFFD FFFD - 5942 FFFD FFFD FFFD FFFD FFFD 5943 5941 - 594D FFFD FFFD FFFD FFFD 5948 FFFD 593C - 5A76 FFFD 593D FFFD 594A 5945 FFFD 593A - FFFD FFFD FFFD 5939 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 557B - srcEnd = 563F - mappingOffset = 07E7 - Mapping = - 5E3D 5E40 FFFD 5E54 FFFD 5E3E FFFD 5E44 - 5E4A 6143 FFFD FFFD 5E48 FFFD 5E55 5E41 - 5E49 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5E47 FFFD FFFD FFFD 5E43 5E57 5E50 - FFFD 5E45 5E42 FFFD 5E4D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5E3F FFFD FFFD 5E46 - 5E56 5E52 FFFD 5E4C FFFD FFFD 5E53 5E4F - 5E4B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5E51 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 634C 634D 6345 FFFD 634F FFFD - FFFD FFFD FFFD 6343 FFFD FFFD 6346 FFFD - 6341 FFFD FFFD FFFD FFFD FFFD FFFD 634A - FFFD 6344 FFFD FFFD 633F FFFD 634B FFFD - 6347 6348 634E 6342 2321 6340 FFFD FFFD - FFFD FFFD FFFD FFFD 6349 FFFD FFFD FFFD - FFFD FFFD FFFD 6835 6830 FFFD FFFD FFFD - FFFD FFFD 682A 6826 FFFD 6827 FFFD FFFD - FFFD FFFD FFFD 682C FFFD 6833 682D FFFD - FFFD FFFD 682E 682F FFFD 6834 FFFD FFFD - FFFD 682B FFFD 6831 6829 FFFD FFFD FFFD - 6828 FFFD FFFD FFFD 6832 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6C37 FFFD - FFFD FFFD FFFD 6C31 6C3D 6C3E FFFD 6C34 - FFFD 6C36 FFFD 6C3C FFFD FFFD 6C33 FFFD - 6C32 FFFD FFFD FFFD 6C35 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 564E - srcEnd = 5695 - mappingOffset = 08AC - Mapping = - 6C39 FFFD FFFD FFFD FFFD 6C38 FFFD FFFD - FFFD 6C3A FFFD 703B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7047 FFFD 703F 7043 - FFFD FFFD 7042 703E 7041 703C 7046 FFFD - FFFD 7045 FFFD 7044 FFFD FFFD 6C3B FFFD - 7048 FFFD 7040 703D FFFD FFFD FFFD FFFD - FFFD FFFD 7346 FFFD FFFD FFFD FFFD 7348 - FFFD 7349 FFFD FFFD FFFD FFFD FFFD FFFD - 7345 734A 7347 FFFD FFFD FFFD FFFD 763C -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 56A5 - srcEnd = 5751 - mappingOffset = 08F4 - Mapping = - 782C FFFD FFFD 782D FFFD FFFD FFFD FFFD - FFFD 763D FFFD FFFD FFFD FFFD FFFD 7964 - FFFD 7963 7962 FFFD FFFD FFFD FFFD 7965 - FFFD FFFD FFFD 7A65 7A64 7A66 FFFD FFFD - FFFD FFFD FFFD 7B59 7B5B 7B5A FFFD 7C34 - FFFD FFFD FFFD FFFD 7C5D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 463F 463E FFFD - 4760 475F FFFD 475E FFFD FFFD FFFD 495B - FFFD FFFD FFFD FFFD FFFD 4959 495C FFFD - FFFD FFFD FFFD 495A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4C56 FFFD FFFD - FFFD FFFD 504C FFFD FFFD FFFD 5467 5468 - FFFD FFFD FFFD 594E 5950 FFFD 594F FFFD - 5E58 FFFD FFFD FFFD FFFD 6350 6351 FFFD - FFFD 6837 FFFD 6836 FFFD FFFD FFFD FFFD - FFFD FFFD 4448 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4763 4767 FFFD FFFD 4765 - 4764 FFFD 4766 4762 FFFD FFFD 4761 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4966 FFFD - FFFD 4963 FFFD 495F FFFD FFFD FFFD FFFD - FFFD FFFD 4961 FFFD FFFD 495D FFFD FFFD - 4960 4962 4965 4964 495E -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 5761 - srcEnd = 576A - mappingOffset = 09A1 - Mapping = - 4C5B FFFD FFFD 4C5D FFFD 4C5C FFFD FFFD - 4C5A 4C59 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 5777 - srcEnd = 5793 - mappingOffset = 09AB - Mapping = - 4C58 FFFD FFFD FFFD FFFD 4C5E FFFD FFFD - FFFD FFFD FFFD 504D 4C57 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 504E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5054 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 57A0 - srcEnd = 57AE - mappingOffset = 09C8 - Mapping = - 504F FFFD 5051 5050 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5053 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 57C2 - srcEnd = 57E4 - mappingOffset = 09D7 - Mapping = - 5469 546C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 546B FFFD FFFD 5052 FFFD FFFD FFFD - FFFD FFFD 546A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5951 5955 FFFD - FFFD FFFD 5956 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 57F7 - srcEnd = 580A - mappingOffset = 09FA - Mapping = - 595A FFFD 595B 5957 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5958 FFFD FFFD 5952 5954 - FFFD FFFD 546D 5953 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 581D - srcEnd = 5835 - mappingOffset = 0A0E - Mapping = - 5E60 FFFD FFFD 5E61 5E5F FFFD FFFD 5E5C - FFFD FFFD FFFD FFFD FFFD 5E5A FFFD FFFD - FFFD FFFD 5E59 5E5D 5E5E FFFD FFFD 5E5B - 5959 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 584A - srcEnd = 58FD - mappingOffset = 0A27 - Mapping = - 635B 635E 6359 FFFD FFFD FFFD FFFD 6353 - 635D FFFD 6357 FFFD FFFD 6355 6354 FFFD - 6356 FFFD FFFD FFFD 6352 FFFD FFFD FFFD - 635C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6358 FFFD 635A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6838 FFFD FFFD FFFD 683D - FFFD FFFD FFFD 683F 6839 FFFD 6C3F FFFD - FFFD 683A FFFD 683E FFFD FFFD FFFD FFFD - 683C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 683B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6C43 FFFD 6C41 6C40 FFFD FFFD - FFFD FFFD FFFD FFFD 6C46 FFFD 702E 6C45 - FFFD FFFD FFFD FFFD 6C44 FFFD FFFD FFFD - FFFD 6C42 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 704A FFFD FFFD 7049 - FFFD FFFD FFFD 704C FFFD 704B FFFD FFFD - FFFD FFFD FFFD FFFD 734E FFFD FFFD 734D - FFFD 734C FFFD 734B FFFD FFFD 763F 763E - FFFD FFFD FFFD FFFD 782E 782F FFFD FFFD - 7830 FFFD 7966 FFFD FFFD FFFD FFFD 7C5E - FFFD 4449 4531 FFFD FFFD 4967 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5E62 - 5E63 FFFD FFFD 6840 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 590F - srcEnd = 59EC - mappingOffset = 0ADB - Mapping = - 546E FFFD FFFD FFFD FFFD 7A67 444A 4640 - FFFD FFFD 4768 4769 FFFD 4C5F FFFD FFFD - FFFD 595C FFFD 6842 FFFD 6843 6841 FFFD - 444B FFFD 4532 4534 4533 FFFD 4535 4641 - FFFD FFFD 4642 FFFD FFFD FFFD FFFD FFFD - 476A 476B FFFD FFFD FFFD FFFD FFFD 4968 - FFFD FFFD FFFD FFFD FFFD 4C63 FFFD FFFD - 4C61 4C62 4C60 FFFD FFFD FFFD FFFD 5058 - 5057 5059 5056 FFFD FFFD 4C64 5055 FFFD - 546F 5470 FFFD 5471 FFFD FFFD FFFD FFFD - FFFD 5E64 FFFD 595D FFFD FFFD FFFD FFFD - 635F FFFD 6845 6844 FFFD FFFD 6C47 704D - FFFD FFFD FFFD FFFD 444C 4643 FFFD 4644 - FFFD 476D 4770 FFFD FFFD FFFD 476F FFFD - FFFD FFFD 4772 4771 476E 476C FFFD FFFD - FFFD FFFD FFFD 4973 FFFD FFFD 4970 FFFD - FFFD FFFD FFFD 496A 4972 FFFD FFFD 496F - FFFD FFFD 496E FFFD FFFD FFFD 4969 496C - FFFD FFFD FFFD FFFD 496D 4971 4974 FFFD - FFFD 496B FFFD FFFD FFFD FFFD FFFD 4C69 - 4C71 FFFD FFFD FFFD 4C72 FFFD FFFD FFFD - FFFD FFFD 4C68 FFFD 4C66 FFFD FFFD 4C65 - FFFD FFFD FFFD FFFD FFFD FFFD 4C74 4C6B - FFFD FFFD FFFD 4C70 4C6E FFFD 4C6D FFFD - FFFD 4C6C 4C6A 4C73 4C6F 4C67 FFFD FFFD - FFFD 505B FFFD 5062 FFFD 505A FFFD FFFD - FFFD FFFD FFFD FFFD 505D FFFD 5060 5063 - FFFD 505E FFFD 5061 FFFD 5478 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 59FB - srcEnd = 5A29 - mappingOffset = 0BB9 - Mapping = - 5065 FFFD FFFD FFFD 505C FFFD 5064 FFFD - 505F FFFD FFFD FFFD FFFD FFFD 547E FFFD - FFFD 547D FFFD FFFD FFFD FFFD 5472 FFFD - 5477 FFFD FFFD FFFD FFFD 5473 FFFD FFFD - 5476 5474 FFFD FFFD 5475 5479 FFFD FFFD - 547A FFFD 547C FFFD FFFD FFFD 547B -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 5A36 - srcEnd = 5A4A - mappingOffset = 0BE8 - Mapping = - 595E FFFD FFFD FFFD FFFD FFFD 5964 FFFD - FFFD FFFD 5963 595F FFFD FFFD FFFD FFFD - 5967 FFFD FFFD 5960 5968 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 5A5A - srcEnd = 5A6A - mappingOffset = 0BFD - Mapping = - 5966 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5965 FFFD FFFD FFFD 5961 FFFD FFFD FFFD - 5962 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 5A77 - srcEnd = 5A7F - mappingOffset = 0C0E - Mapping = - 5E65 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5E67 -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 5A92 - srcEnd = 5A9B - mappingOffset = 0C17 - Mapping = - 5E68 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5E66 5E69 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 5AA7 - srcEnd = 5AE9 - mappingOffset = 0C21 - Mapping = - 5E6A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6368 6366 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6365 6364 6363 - FFFD FFFD 6360 6367 FFFD FFFD FFFD FFFD - FFFD FFFD 6361 FFFD FFFD 6362 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 684A - 6849 684B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6846 FFFD 684C FFFD FFFD 6847 - FFFD FFFD 6848 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 5AF5 - srcEnd = 5AFB - mappingOffset = 0C64 - Mapping = - 6C4B FFFD FFFD FFFD FFFD FFFD 6C49 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 5B08 - srcEnd = 5B0C - mappingOffset = 0C6B - Mapping = - 6C4D 6C48 FFFD 6C4A 6C4C -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 5B1D - srcEnd = 5B43 - mappingOffset = 0C70 - Mapping = - 704E FFFD FFFD FFFD FFFD FFFD FFFD 7351 - FFFD FFFD FFFD FFFD FFFD 7350 FFFD FFFD - FFFD FFFD FFFD 734F FFFD FFFD FFFD 704F - FFFD FFFD FFFD 7640 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7967 FFFD FFFD 7968 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 5B50 - srcEnd = 5C79 - mappingOffset = 0C97 - Mapping = - 444D 444E FFFD 444F 4536 4645 FFFD 4773 - 4774 FFFD 4977 4978 4976 4975 FFFD 4C75 - FFFD FFFD FFFD 4C77 4C76 FFFD FFFD FFFD - FFFD 5066 FFFD 5521 FFFD FFFD FFFD FFFD - 5969 5E6C FFFD 5E6B FFFD 684D FFFD FFFD - 7050 FFFD 7352 FFFD FFFD 7969 FFFD 7B5C - FFFD FFFD FFFD 4646 FFFD 4777 FFFD 4775 - 4776 4778 FFFD 497A 4979 FFFD FFFD 497B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4C78 - 4C7A 4C7C 4C79 4C7D 4C7B FFFD FFFD FFFD - FFFD FFFD 506A 5067 5069 506B 5068 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5527 FFFD - 5523 FFFD FFFD 5524 5526 5528 5525 FFFD - 552A 5529 FFFD FFFD FFFD FFFD FFFD 596E - FFFD FFFD 596D FFFD 596C 596B 596F 596A - FFFD FFFD FFFD FFFD 5E6E FFFD FFFD FFFD - 5E70 FFFD 5E6D 5E6F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 684E 6856 - FFFD 6850 6854 FFFD 6855 6851 6852 684F - 6853 6C50 FFFD 6C51 6C4F FFFD 6C4E FFFD - 7051 FFFD FFFD FFFD FFFD 7831 796A FFFD - 4450 FFFD 4779 FFFD FFFD FFFD FFFD FFFD - FFFD 506C FFFD FFFD 552B FFFD FFFD 5972 - 5971 5970 5E71 5E72 FFFD 6857 7052 4451 - FFFD 4537 FFFD FFFD FFFD FFFD 477A FFFD - FFFD FFFD 4C7E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4452 FFFD 4538 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 497C FFFD FFFD FFFD - FFFD 5E73 FFFD FFFD FFFD FFFD FFFD 7353 - 4453 4467 4539 FFFD 4647 FFFD 4A22 4A21 - 497D 497E FFFD FFFD FFFD 4D22 4D23 FFFD - 4D21 FFFD FFFD 5070 FFFD 506F 506D 506E - 552E 552C FFFD FFFD FFFD 552D FFFD FFFD - 5522 FFFD FFFD FFFD 5974 5975 FFFD FFFD - 5973 FFFD 6858 FFFD 6C52 6C53 FFFD FFFD - 7354 FFFD FFFD FFFD 7A68 FFFD FFFD 453A - FFFD 4454 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 477B -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 5C8C - srcEnd = 5C94 - mappingOffset = 0DC1 - Mapping = - 4A26 FFFD FFFD FFFD 4A23 4A24 FFFD FFFD - 4A25 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 5CA1 - srcEnd = 5CB8 - mappingOffset = 0DCA - Mapping = - 4D25 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4D27 FFFD 4D28 FFFD FFFD FFFD FFFD FFFD - 4D29 FFFD 4D2A FFFD FFFD FFFD 4D24 4D26 -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 5CD2 - srcEnd = 5CD9 - mappingOffset = 0DE2 - Mapping = - 5072 FFFD FFFD FFFD FFFD FFFD FFFD 5071 -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 5CE8 - srcEnd = 5D34 - mappingOffset = 0DEA - Mapping = - 5533 FFFD 5532 FFFD FFFD 552F FFFD FFFD - 5534 FFFD FFFD FFFD 5537 FFFD 5535 FFFD - FFFD FFFD FFFD 5531 FFFD 5530 FFFD FFFD - FFFD 5536 FFFD FFFD FFFD FFFD 5977 5976 - FFFD FFFD FFFD FFFD FFFD FFFD 5978 FFFD - FFFD 597C FFFD FFFD 597E FFFD 597A 5A24 - FFFD 5A21 FFFD 5979 FFFD FFFD FFFD FFFD - FFFD FFFD 597B FFFD 5A22 FFFD FFFD 5A23 - FFFD 597D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5E76 -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 5D47 - srcEnd = 5D50 - mappingOffset = 0E37 - Mapping = - 5E77 FFFD FFFD FFFD FFFD 5E74 FFFD FFFD - FFFD 5E75 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 5D69 - srcEnd = 5D6F - mappingOffset = 0E41 - Mapping = - 6369 FFFD FFFD FFFD FFFD FFFD 636A -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 5D84 - srcEnd = 5D87 - mappingOffset = 0E48 - Mapping = - 6859 FFFD FFFD 685A -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 5D94 - srcEnd = 5D9D - mappingOffset = 0E4C - Mapping = - 6C55 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6C54 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 5DB8 - srcEnd = 5DBD - mappingOffset = 0E56 - Mapping = - 7358 FFFD 7356 FFFD 7355 7357 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 5DC9 - srcEnd = 5FFF - mappingOffset = 0E5C - Mapping = - 796B FFFD FFFD FFFD 7A69 FFFD FFFD FFFD - FFFD 7B5E FFFD 7B5D FFFD 7C35 FFFD FFFD - FFFD FFFD FFFD FFFD 4455 477C FFFD FFFD - 4B56 5A25 FFFD FFFD 4456 464A 4649 4648 - FFFD FFFD 4A27 FFFD FFFD 5538 FFFD FFFD - 4457 4458 4459 453B FFFD FFFD 5073 FFFD - FFFD FFFD FFFD FFFD 5E78 445A FFFD FFFD - FFFD 464B 464C FFFD FFFD 477D FFFD FFFD - FFFD FFFD FFFD 4A28 FFFD FFFD FFFD FFFD - 4D30 FFFD FFFD FFFD 4D2E 4D2D FFFD 4D2B - FFFD 4D2C 4D2F FFFD 5074 FFFD 5076 FFFD - FFFD FFFD FFFD FFFD 5075 FFFD FFFD FFFD - FFFD FFFD 553A FFFD 5539 FFFD FFFD FFFD - FFFD FFFD 5A28 FFFD FFFD 5A27 5A29 5A26 - FFFD FFFD FFFD FFFD 5E7A FFFD FFFD 5E7B - FFFD FFFD 5E7C FFFD 5E79 FFFD FFFD FFFD - FFFD FFFD FFFD 636B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 685F 685D FFFD 685E FFFD - FFFD FFFD 685B FFFD FFFD FFFD 6C57 FFFD - 6C58 6C56 685C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7359 FFFD FFFD FFFD FFFD FFFD - FFFD 445B 464D 4821 FFFD 477E FFFD 4D31 - 636C FFFD 453C 464E 5077 5E7D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4A2A FFFD - FFFD 4A2B FFFD FFFD FFFD FFFD 4A29 FFFD - FFFD FFFD FFFD FFFD 4D35 4D36 4D33 FFFD - FFFD 4D32 FFFD 4D34 FFFD FFFD FFFD 5078 - FFFD FFFD FFFD FFFD FFFD 5079 553D FFFD - FFFD FFFD 553B FFFD 553C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5A2D 5A2C 5A2A 5A2B - FFFD FFFD FFFD FFFD FFFD 5A2E FFFD FFFD - 5F21 5F22 FFFD 5F23 FFFD FFFD FFFD 636E - 636D 5E7E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6860 FFFD FFFD 6861 FFFD FFFD - FFFD 6C5A FFFD FFFD 6C5C FFFD 6C5B 6C5E - FFFD 6C59 6C5D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7833 FFFD FFFD FFFD FFFD - FFFD FFFD 7D22 FFFD FFFD 4D37 4A2C FFFD - FFFD 507A FFFD FFFD FFFD 445C 453D FFFD - 464F FFFD FFFD 4A2D FFFD FFFD FFFD 507B - FFFD 6862 445D FFFD FFFD FFFD 4822 FFFD - FFFD 636F 445E 453E 453F FFFD 4651 4650 - FFFD FFFD 4823 FFFD FFFD FFFD 4A2E FFFD - FFFD FFFD FFFD FFFD FFFD 4D38 4D39 FFFD - 4D3A FFFD FFFD FFFD 507C FFFD FFFD FFFD - 553E FFFD FFFD FFFD 5A2F FFFD 5A30 FFFD - FFFD FFFD FFFD 5F24 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6863 FFFD 6C5F - FFFD 7053 FFFD 735A FFFD 7B5F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5A31 FFFD - 6370 FFFD FFFD FFFD FFFD 7641 FFFD FFFD - FFFD 4A30 FFFD 4A2F 507D FFFD FFFD FFFD - 5A33 5D29 5A34 5A32 5F25 FFFD FFFD 6864 - 6C60 FFFD FFFD FFFD FFFD FFFD 4A31 FFFD - 4A32 FFFD FFFD 4D3E FFFD FFFD 4D3D 4D3B - 4D3C FFFD FFFD FFFD 5121 FFFD 5124 507E - 5126 5122 5123 5125 FFFD FFFD FFFD 5541 - 5540 553F FFFD FFFD FFFD FFFD 5A35 5A38 - 5A36 FFFD FFFD 5A3B FFFD 5A37 FFFD 5A3A - 5A39 FFFD FFFD FFFD FFFD FFFD FFFD 5F28 - 5F26 5F27 FFFD 6371 FFFD 6372 FFFD FFFD - FFFD FFFD FFFD FFFD 6C62 FFFD 6C61 FFFD - 6865 FFFD FFFD FFFD 735B FFFD FFFD FFFD - FFFD FFFD 4540 FFFD 4652 FFFD FFFD FFFD - FFFD FFFD FFFD 4A34 4A36 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4825 4A35 4A33 - 4824 FFFD FFFD FFFD 4D3F FFFD FFFD 4D40 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4A3A 4A38 FFFD FFFD FFFD FFFD FFFD - 4A37 FFFD FFFD FFFD 4D42 FFFD FFFD 4A39 - FFFD FFFD FFFD FFFD 4D41 FFFD 4D43 -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 600E - srcEnd = 6035 - mappingOffset = 1093 - Mapping = - 512B 4D44 FFFD FFFD 5127 FFFD 4D45 4D4A - 4D48 FFFD FFFD FFFD FFFD 4D4F FFFD 5128 - FFFD FFFD 5129 4D4B FFFD FFFD FFFD 512A - FFFD 4D4C 512C 4D4D 4D49 4D4E FFFD FFFD - FFFD 4D46 FFFD FFFD FFFD FFFD FFFD 4D47 -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 6043 - srcEnd = 6070 - mappingOffset = 10BB - Mapping = - 5132 FFFD FFFD 5131 FFFD FFFD FFFD FFFD - FFFD FFFD 512D FFFD FFFD 5545 FFFD FFFD - FFFD FFFD 5546 FFFD FFFD FFFD 5542 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5130 - 5543 5136 5544 FFFD FFFD 512F 5548 5135 - 5134 5133 5547 FFFD 5549 512E -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 607F - srcEnd = 6127 - mappingOffset = 10E9 - Mapping = - 5A3C FFFD FFFD FFFD FFFD 554A 5550 FFFD - FFFD FFFD 5A3E FFFD FFFD 554F 554D FFFD - FFFD FFFD FFFD FFFD FFFD 554E FFFD 5551 - FFFD FFFD FFFD 554C FFFD FFFD FFFD FFFD - 554B 5A3F FFFD FFFD 5A3D FFFD FFFD FFFD - FFFD 5A40 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5F2B FFFD 5A42 5A47 5F2C - FFFD 5A4E FFFD FFFD 5A46 5A49 5A44 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5A45 5A4C - 5A50 FFFD FFFD FFFD 5A41 FFFD FFFD FFFD - FFFD FFFD 5F29 FFFD FFFD FFFD 5A4B FFFD - FFFD 5A4A FFFD 5A4F FFFD 5A48 FFFD FFFD - 5A4D 5F2D 5F2A FFFD FFFD FFFD FFFD 5A43 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F32 5F36 FFFD 6377 5F34 FFFD 5F38 - FFFD FFFD 6379 5F30 5F33 FFFD FFFD FFFD - FFFD 5F3A 637A FFFD FFFD FFFD FFFD 6426 - FFFD 637B 5F39 FFFD FFFD FFFD 6425 5F37 - 6374 FFFD FFFD 5F3B FFFD FFFD 5F31 FFFD - FFFD FFFD FFFD 6373 6378 5F2E FFFD FFFD - 6376 FFFD FFFD FFFD 5F2F FFFD FFFD FFFD - 6424 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 6134 - srcEnd = 61CD - mappingOffset = 1192 - Mapping = - 6423 FFFD FFFD 6427 FFFD FFFD FFFD FFFD - FFFD FFFD 6422 6867 FFFD FFFD FFFD FFFD - 637E FFFD FFFD 6866 6375 FFFD FFFD 6868 - 637D 6421 637C FFFD FFFD FFFD FFFD FFFD - FFFD 6C67 FFFD FFFD 686E FFFD 686D FFFD - FFFD 6C66 FFFD 686C FFFD FFFD 686A 686B - FFFD FFFD FFFD 6C64 5F35 FFFD FFFD 6C6B - FFFD FFFD 6C65 FFFD 6C6A FFFD FFFD FFFD - FFFD 686F 6C63 6869 FFFD FFFD FFFD FFFD - 6C69 FFFD 6C6C FFFD FFFD FFFD 6C68 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7057 FFFD - FFFD FFFD 6C70 FFFD 6C6E 7055 FFFD FFFD - 6C74 FFFD FFFD FFFD FFFD FFFD 6C72 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6C73 FFFD FFFD 6C6D FFFD 7056 FFFD 6C6F - 6C71 FFFD 6C75 FFFD FFFD FFFD 7054 FFFD - FFFD FFFD 7059 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 705A FFFD FFFD FFFD 735D FFFD - FFFD FFFD FFFD 735E 705C 735C 705B 7360 - FFFD 7058 -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 61E3 - srcEnd = 61E6 - mappingOffset = 122C - Mapping = - 7642 FFFD FFFD 735F -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 61F2 - srcEnd = 6298 - mappingOffset = 1230 - Mapping = - 7834 FFFD FFFD 7837 7836 7835 796C FFFD - 796D FFFD 7A6A FFFD 7A6B 7B60 7C36 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4541 FFFD - 4653 FFFD 4827 4828 4826 FFFD 4829 4A3C - 4A3B FFFD FFFD 4D51 4D50 FFFD FFFD FFFD - 5A51 5A52 FFFD FFFD FFFD 5F3C FFFD 6428 - 6429 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6870 FFFD FFFD FFFD 6C76 FFFD 705D FFFD - 7361 7643 7362 FFFD 4542 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4D53 4D52 4D54 5137 - FFFD FFFD FFFD FFFD FFFD 5552 5A53 5F3D - FFFD 4543 FFFD 445F 4544 FFFD FFFD 4657 - 4656 4654 4655 FFFD FFFD FFFD 482C FFFD - FFFD 482B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 482A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4A43 4A4C 4A4A FFFD FFFD - FFFD 4A48 FFFD FFFD 4A41 FFFD FFFD 4A47 - FFFD FFFD 4A45 FFFD 4A46 4D55 4A40 FFFD - FFFD FFFD 4A3D FFFD 4A50 FFFD FFFD 4A42 - 4A44 FFFD FFFD FFFD FFFD FFFD FFFD 4A4F - 4A49 4A4E FFFD 4A4D 4A3F 4A3E 4A4B -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 62A8 - srcEnd = 62DC - mappingOffset = 12D7 - Mapping = - 4D63 FFFD FFFD 4D5E 4D71 FFFD FFFD FFFD - FFFD 4D6C FFFD FFFD FFFD 4D6A FFFD FFFD - FFFD 4D5B FFFD FFFD 4D65 4D64 FFFD 4D59 - FFFD FFFD 4D5A FFFD 4D58 FFFD 4D70 4D68 - 4D62 4D56 FFFD 4D61 4D57 4D69 4D72 FFFD - 4D66 FFFD 4D5C 4D5F 4D60 FFFD 4D6E 4D6F - 4D6D 4D67 4D6B 4D5D 5138 -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 62EC - srcEnd = 6316 - mappingOffset = 130C - Mapping = - 5144 513C 513E 5143 FFFD 5141 FFFD 5553 - 5146 FFFD FFFD 5142 FFFD FFFD FFFD FFFD - 513B 513F 5145 5555 FFFD 513D 5148 FFFD - FFFD FFFD FFFD 5140 5554 513A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5147 FFFD FFFD - FFFD FFFD 5139 -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 6328 - srcEnd = 6355 - mappingOffset = 1337 - Mapping = - 5563 FFFD 5561 5562 FFFD FFFD FFFD 5558 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 555E FFFD FFFD 5560 5557 FFFD - FFFD FFFD 555A FFFD FFFD FFFD 555B FFFD - FFFD 555D FFFD FFFD 5565 5564 5556 555C - 555F FFFD FFFD FFFD FFFD 5559 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 6367 - srcEnd = 63AC - mappingOffset = 1365 - Mapping = - 5A5B 5A6F 5A6E FFFD 5A63 FFFD FFFD FFFD - FFFD FFFD 5A5E 5A56 FFFD FFFD FFFD 5F4D - 5A5A FFFD FFFD 5A70 5A6D FFFD FFFD FFFD - FFFD 5A6C FFFD FFFD 5A61 5A65 FFFD FFFD - FFFD 5A66 5A60 FFFD FFFD 5F3F FFFD FFFD - 5A6B FFFD FFFD 5A6A FFFD FFFD FFFD 5A57 - FFFD 5A5C 5A67 FFFD 5A62 FFFD FFFD FFFD - FFFD 5A54 5A68 5A58 5F3E FFFD 5A59 FFFD - 5A55 5A64 5A5F 5A5D FFFD 5A69 -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 63C0 - srcEnd = 63F9 - mappingOffset = 13AB - Mapping = - 5F41 FFFD FFFD FFFD FFFD FFFD 5F44 FFFD - FFFD 5F43 FFFD FFFD FFFD 5F45 FFFD 5F40 - 5F48 FFFD 5F46 FFFD FFFD FFFD 5F4A FFFD - FFFD FFFD 5F52 5F50 FFFD FFFD FFFD FFFD - FFFD 5F49 FFFD 5F47 FFFD FFFD FFFD FFFD - FFFD 5F42 5F4F FFFD FFFD 5F4B 5F4C FFFD - FFFD FFFD FFFD FFFD 5F4E FFFD FFFD FFFD - FFFD 5F53 -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 6406 - srcEnd = 641E - mappingOffset = 13E5 - Mapping = - 6438 FFFD FFFD FFFD FFFD FFFD FFFD 6434 - FFFD 6431 FFFD FFFD FFFD 642A 6433 FFFD - 6436 6437 FFFD FFFD FFFD FFFD 6432 FFFD - 642C -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 642A - srcEnd = 643E - mappingOffset = 13FE - Mapping = - 642D FFFD 6430 642E FFFD FFFD FFFD FFFD - FFFD FFFD 687A FFFD 6435 FFFD FFFD FFFD - FFFD FFFD FFFD 642F 642B -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 6451 - srcEnd = 647B - mappingOffset = 1413 - Mapping = - 6878 5F51 FFFD 6873 FFFD FFFD FFFD 6872 - FFFD FFFD FFFD FFFD FFFD FFFD 6876 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6879 FFFD - 6C77 FFFD FFFD FFFD 687B FFFD 6C78 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6875 - 6C79 6877 687C -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = 6487 - srcEnd = 6631 - mappingOffset = 143E - Mapping = - 6871 6C7C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6C7D FFFD 6D25 6D22 FFFD 6D23 FFFD - FFFD FFFD 6D2B 6D29 FFFD FFFD FFFD 6C7A - FFFD FFFD FFFD 6D2C FFFD 6874 6D21 FFFD - FFFD FFFD 6D24 FFFD 6D28 6D2A 6D27 6D26 - FFFD 6C7E FFFD 6C7B 6D2D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7061 7062 FFFD 706B - 7068 FFFD 705F 7066 FFFD 7064 705E FFFD - 7065 FFFD FFFD 7364 7060 FFFD 7067 7363 - FFFD FFFD FFFD 7069 FFFD 706A FFFD FFFD - FFFD 7365 FFFD 7063 FFFD FFFD FFFD FFFD - FFFD 7366 FFFD 736B FFFD FFFD FFFD 7368 - FFFD FFFD FFFD FFFD FFFD 7369 736C FFFD - FFFD 7367 736A 7645 FFFD 7644 FFFD FFFD - 764A FFFD FFFD 7648 7649 FFFD FFFD 7646 - FFFD 7838 FFFD FFFD FFFD FFFD FFFD 7647 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7839 FFFD FFFD FFFD FFFD 796F FFFD FFFD - FFFD 796E 7970 FFFD FFFD 7A6D 7A6C FFFD - FFFD FFFD FFFD FFFD 7C37 7B61 FFFD FFFD - FFFD FFFD FFFD 7C39 7C38 7C5F FFFD FFFD - 4545 FFFD FFFD FFFD FFFD FFFD FFFD 482D - FFFD 4A53 4A51 FFFD 4A52 FFFD FFFD 4D73 - 5149 FFFD FFFD FFFD FFFD FFFD 514A FFFD - FFFD 5566 5567 FFFD FFFD FFFD FFFD FFFD - 5A77 FFFD 5A73 FFFD FFFD 5A7A 5A79 5A72 - 5A75 5A78 5A74 FFFD FFFD FFFD 5A71 5F54 - FFFD FFFD FFFD 5F56 5F57 FFFD FFFD 5F55 - FFFD FFFD FFFD FFFD FFFD 6439 FFFD FFFD - FFFD FFFD FFFD 687D FFFD 706C 6D2E FFFD - 6D2F 6D30 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 736D 736E FFFD FFFD FFFD - 4546 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F59 5F58 FFFD FFFD FFFD 7A6E FFFD - 4547 FFFD 5568 FFFD 5A7C 5A7B FFFD FFFD - 643A FFFD 687E FFFD FFFD 4548 4658 FFFD - 4D74 FFFD FFFD FFFD 514B 5A7D FFFD FFFD - 5F5A 643B FFFD FFFD FFFD FFFD FFFD FFFD - 764B FFFD 4549 FFFD FFFD 4D75 514C FFFD - FFFD FFFD 5569 FFFD FFFD FFFD 556A FFFD - FFFD FFFD FFFD FFFD 5B21 5B22 FFFD 5B23 - 5A7E FFFD FFFD FFFD FFFD FFFD FFFD 6922 - 6921 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 514D FFFD FFFD 454A 4659 - FFFD 482F 482E FFFD FFFD 4830 4831 FFFD - FFFD FFFD 4A54 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4D76 FFFD FFFD FFFD FFFD - FFFD 4D7D FFFD 4D7B FFFD FFFD FFFD 4D7A - 4E23 FFFD FFFD 4E22 FFFD 4D79 FFFD 4D7C - 4D7E FFFD FFFD FFFD 4D78 4D77 4E21 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5153 5150 FFFD FFFD FFFD 5156 514E FFFD - 5151 5154 FFFD FFFD FFFD FFFD 514F FFFD - 5152 FFFD 5155 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 6641 - srcEnd = 66C9 - mappingOffset = 15E9 - Mapping = - 5572 556B 556E FFFD 5571 FFFD FFFD FFFD - 556C FFFD FFFD 5570 FFFD FFFD 556D FFFD - FFFD 556F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5B25 FFFD FFFD 5B24 5B29 FFFD FFFD - FFFD FFFD FFFD 5B26 FFFD 5B28 FFFD 5B27 - FFFD FFFD FFFD FFFD FFFD 5F5B 5F5F 5F5C - FFFD FFFD FFFD 5F5D FFFD 5F5E 5F63 FFFD - FFFD 5F61 FFFD FFFD FFFD 5F62 FFFD FFFD - FFFD FFFD FFFD 6441 FFFD FFFD 643E 643F - 643D FFFD FFFD FFFD 6443 FFFD FFFD FFFD - 5F60 FFFD FFFD FFFD FFFD 6440 643C 6442 - FFFD FFFD FFFD FFFD 6925 FFFD FFFD FFFD - FFFD 6923 FFFD FFFD FFFD FFFD FFFD 6924 - FFFD FFFD 6D32 FFFD FFFD 6D31 FFFD FFFD - 6D34 FFFD FFFD 6D33 FFFD FFFD FFFD 7072 - 706F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7070 FFFD 706D 7071 FFFD - 706E -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = 66D6 - srcEnd = 679D - mappingOffset = 1672 - Mapping = - 7370 FFFD FFFD 736F FFFD FFFD 764C 783B - FFFD FFFD 783A FFFD FFFD FFFD FFFD FFFD - 7971 FFFD FFFD 7A6F FFFD FFFD 7C3A FFFD - FFFD FFFD 454B FFFD 4832 4833 4A55 FFFD - FFFD 5157 5573 5B2A FFFD FFFD 5937 FFFD - 5F64 5F65 5E32 FFFD FFFD 6444 FFFD FFFD - FFFD FFFD 454C 4834 FFFD 4E25 FFFD 4E24 - FFFD FFFD FFFD FFFD FFFD FFFD 5574 5575 - FFFD 5576 FFFD FFFD FFFD 5B2C FFFD 5F67 - FFFD 5F66 FFFD FFFD FFFD FFFD FFFD FFFD - 764D 7972 454D FFFD 465C 465D 465B 465E - 465A FFFD FFFD 4837 FFFD FFFD 4836 4838 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4835 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4A5F FFFD FFFD 4A5E FFFD FFFD FFFD FFFD - 4A57 4A58 4A59 4A5A FFFD 4A61 FFFD FFFD - 4A5C 4A62 FFFD FFFD FFFD FFFD 4A5B FFFD - 4A5D 4A56 4A60 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4E3A FFFD FFFD 4E26 - FFFD 4E30 4E31 4E29 4E3B 4E2B FFFD 4E36 - FFFD 4E2C FFFD FFFD FFFD FFFD 4E39 FFFD - 4E34 4E32 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4E2D FFFD 4E33 FFFD 4E27 FFFD FFFD - FFFD FFFD 4E35 FFFD FFFD 4E38 FFFD 4E28 - FFFD 4E2F FFFD FFFD 4E37 FFFD 4E2A 4E2E -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 67AF - srcEnd = 67B8 - mappingOffset = 173A - Mapping = - 515F 516C FFFD FFFD FFFD 5165 FFFD 515E - FFFD 5168 -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = 67C4 - srcEnd = 67FF - mappingOffset = 1744 - Mapping = - 5163 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5169 515C 5164 5170 5159 - 515B FFFD FFFD FFFD FFFD 516D 5166 FFFD - FFFD 516F 516A FFFD FFFD FFFD 516E FFFD - FFFD 5167 FFFD FFFD FFFD 5161 FFFD FFFD - 515D FFFD FFFD 5162 FFFD 515A FFFD 516B - 5627 5160 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5158 -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = 6813 - srcEnd = 682A - mappingOffset = 1780 - Mapping = - 562E FFFD FFFD FFFD 5623 562F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5577 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5621 562C -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = 6838 - srcEnd = 6854 - mappingOffset = 1798 - Mapping = - 5578 557C FFFD FFFD 562A 5626 FFFD FFFD - 5629 5630 557D 562B FFFD 562D 557A FFFD - 5579 FFFD FFFD FFFD 5624 FFFD FFFD FFFD - 5628 5625 FFFD 557B 557E -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 6876 - srcEnd = 6886 - mappingOffset = 17B5 - Mapping = - 5B33 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5B32 FFFD 5B2D 5B42 5B38 FFFD 5B3C - 5B3B -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 6893 - srcEnd = 68B5 - mappingOffset = 17C6 - Mapping = - 5B30 5B3D FFFD FFFD 5B36 FFFD FFFD FFFD - FFFD FFFD 5B3E FFFD 5B40 FFFD 5B41 5B2F - FFFD FFFD FFFD FFFD 5B35 5B3F FFFD FFFD - FFFD FFFD 5B3A FFFD 5B2E 5B37 5B34 FFFD - 5622 FFFD 5B31 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 68C4 - srcEnd = 6912 - mappingOffset = 17E9 - Mapping = - 5B39 FFFD FFFD FFFD FFFD 5F7B FFFD 5F76 - FFFD 5F77 FFFD FFFD FFFD FFFD 5F73 FFFD - FFFD 5F69 FFFD 5F6C 5F6B FFFD 5F7C FFFD - FFFD FFFD FFFD 5F6E 5F6A FFFD FFFD 5F75 - FFFD FFFD FFFD 5F71 FFFD FFFD FFFD FFFD - FFFD FFFD 5F70 FFFD FFFD FFFD 5F74 FFFD - FFFD 5F6F FFFD FFFD FFFD 5F72 5F68 5F7E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F6D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F78 5F7A FFFD FFFD FFFD 5F79 -End of Item 0072 - -Begin of Item 0073 - Format 2 - srcBegin = 6930 - destBegin = 644C -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = 694A - srcEnd = 6986 - mappingOffset = 1838 - Mapping = - 644E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6452 644A FFFD FFFD FFFD FFFD FFFD - 6447 6457 FFFD 6455 6451 FFFD 6449 FFFD - FFFD 6456 FFFD FFFD FFFD FFFD 644F FFFD - FFFD 6450 FFFD 6446 5F7D FFFD FFFD FFFD - FFFD FFFD FFFD 644B FFFD 6448 FFFD 6453 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 644D FFFD FFFD FFFD 6454 -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 6994 - srcEnd = 69D3 - mappingOffset = 1875 - Mapping = - 6445 6928 FFFD FFFD FFFD FFFD FFFD 692D - 6926 FFFD FFFD FFFD FFFD FFFD FFFD 6938 - FFFD FFFD 6936 FFFD 6927 FFFD FFFD 6930 - FFFD 6934 692A FFFD FFFD FFFD FFFD FFFD - 6931 FFFD FFFD 692E FFFD FFFD FFFD 692F - FFFD FFFD FFFD FFFD FFFD 6929 FFFD 6937 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 692C - 6935 6933 FFFD FFFD 6932 FFFD FFFD 692B -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = 69E8 - srcEnd = 6A23 - mappingOffset = 18B5 - Mapping = - 6D37 FFFD FFFD FFFD FFFD 6D42 FFFD FFFD - FFFD FFFD FFFD 6D3F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6D3B FFFD FFFD - FFFD 6D38 6D40 FFFD FFFD 6D41 FFFD FFFD - FFFD FFFD 6D3E FFFD FFFD FFFD FFFD FFFD - FFFD 6D43 FFFD 6D3D FFFD FFFD FFFD FFFD - FFFD 6D3A FFFD FFFD FFFD FFFD 6D39 6D36 - FFFD 6D3C FFFD 6D35 -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = 6A35 - srcEnd = 6A4B - mappingOffset = 18F1 - Mapping = - 7121 FFFD FFFD 7074 7079 7075 FFFD FFFD - 7073 FFFD FFFD FFFD FFFD FFFD FFFD 707A - FFFD FFFD 707E 7123 FFFD FFFD 707D -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 6A58 - srcEnd = 6A6B - mappingOffset = 1908 - Mapping = - 7078 7076 FFFD FFFD FFFD FFFD FFFD 7122 - FFFD 707C 707B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7077 -End of Item 0078 - -Begin of Item 0079 - Format 1 - srcBegin = 6A7E - srcEnd = 6A84 - mappingOffset = 191C - Mapping = - 7378 FFFD 7371 FFFD FFFD FFFD 7373 -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = 6A90 - srcEnd = 6AC3 - mappingOffset = 1923 - Mapping = - 737A FFFD FFFD FFFD 7372 FFFD FFFD 7379 - FFFD FFFD FFFD FFFD 7375 FFFD FFFD FFFD - 737B FFFD 7374 7377 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 764F FFFD 7654 7655 - FFFD FFFD FFFD 764E FFFD FFFD FFFD FFFD - 7652 FFFD FFFD 7651 FFFD FFFD FFFD FFFD - FFFD FFFD 7653 7650 -End of Item 007A - -Begin of Item 007B - Format 1 - srcBegin = 6AD3 - srcEnd = 6AEC - mappingOffset = 1957 - Mapping = - 783F FFFD FFFD FFFD FFFD FFFD FFFD 783E - 7376 FFFD 783D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 783C FFFD FFFD FFFD FFFD FFFD - FFFD 7973 -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = 6AFA - srcEnd = 6B23 - mappingOffset = 1971 - Mapping = - 7A72 7A70 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7A71 FFFD FFFD FFFD FFFD FFFD - 7B62 FFFD FFFD FFFD FFFD FFFD 7C3B FFFD - FFFD FFFD FFFD FFFD 7D23 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 454E 4839 - FFFD 4E3C -End of Item 007C - -Begin of Item 007D - Format 1 - srcBegin = 6B32 - srcEnd = 6B8A - mappingOffset = 199B - Mapping = - 5B43 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6022 FFFD FFFD 6023 6021 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6458 FFFD 6939 - FFFD FFFD 693A FFFD 6D45 FFFD 6D44 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7124 - FFFD FFFD 737C FFFD FFFD 7656 FFFD 7B63 - 454F 465F 483A 4A63 4E3D 4E3E FFFD FFFD - 5171 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6459 FFFD FFFD FFFD FFFD 7125 7657 4550 - FFFD 483B FFFD FFFD FFFD 4E3F FFFD FFFD - FFFD 5172 FFFD FFFD 5173 FFFD FFFD 5632 - 5631 -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = 6B96 - srcEnd = 6B98 - mappingOffset = 19F4 - Mapping = - 6025 FFFD 6024 -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = 6BA4 - srcEnd = 6BDB - mappingOffset = 19F7 - Mapping = - 6D46 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 737D 7658 FFFD FFFD 7A73 FFFD - FFFD 5174 FFFD 5633 FFFD FFFD 5B44 FFFD - 6026 FFFD FFFD 645B 645A FFFD FFFD FFFD - FFFD 6D47 6D48 FFFD FFFD FFFD FFFD 4551 - FFFD 4660 FFFD 4A64 FFFD FFFD 5175 645C - 4552 FFFD FFFD 5176 FFFD FFFD 737E 4553 -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = 6BEB - srcEnd = 6BEF - mappingOffset = 1A2F - Mapping = - 5B45 5B46 FFFD FFFD 6027 -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = 6BFD - srcEnd = 6C9B - mappingOffset = 1A34 - Mapping = - 645D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7126 FFFD FFFD 7421 FFFD FFFD FFFD FFFD - FFFD FFFD 4554 4662 4661 FFFD 4E40 FFFD - FFFD 483C FFFD FFFD FFFD FFFD 4E41 FFFD - FFFD FFFD 5177 FFFD FFFD FFFD 5634 5638 - FFFD 5637 5635 5636 FFFD FFFD 5B47 602A - FFFD 6028 6029 FFFD FFFD FFFD 693B 4555 - FFFD FFFD FFFD 4663 FFFD FFFD FFFD FFFD - FFFD 4666 FFFD 4665 4664 4A65 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4846 4847 FFFD 4842 FFFD FFFD FFFD FFFD - 4843 FFFD 483E FFFD 483F FFFD 4845 FFFD - 483D 4A66 4840 4841 4844 FFFD FFFD FFFD - FFFD FFFD FFFD 4A72 FFFD 4A6D FFFD FFFD - FFFD FFFD FFFD 4A70 FFFD 4A77 FFFD 4A79 - FFFD 4A7B FFFD FFFD FFFD 4A6E FFFD FFFD - 4A75 4A78 FFFD FFFD 4A68 4B21 4A76 FFFD - 4A6B 4A7A FFFD 4A69 4A6A FFFD FFFD 4A71 - 4A7C FFFD FFFD 4A6F FFFD 4A74 FFFD 4A7D - FFFD 4A73 FFFD 4A7E 4A67 FFFD 4A6C -End of Item 0081 - -Begin of Item 0082 - Format 1 - srcBegin = 6CAB - srcEnd = 6CF5 - mappingOffset = 1AD3 - Mapping = - 4E4D 4E5D FFFD 4E54 FFFD FFFD 4E45 FFFD - 4E48 FFFD FFFD FFFD FFFD 4E50 4E52 FFFD - 4E59 4E4B 4E49 4E4A 4E58 FFFD 4E53 FFFD - FFFD 4E51 4E56 FFFD FFFD FFFD 5178 4E5C - FFFD 4E46 FFFD FFFD FFFD FFFD FFFD FFFD - 4E4F FFFD 4E4E 4E60 4E55 FFFD FFFD FFFD - 4E5B 4E5F FFFD FFFD FFFD 4E61 4E5A 4E4C - 4E42 FFFD 4E47 FFFD FFFD 4E43 FFFD FFFD - FFFD FFFD FFFD FFFD 4E5E 5639 4E57 FFFD - 4E44 FFFD 5229 -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = 6D0B - srcEnd = 6D41 - mappingOffset = 1B1E - Mapping = - 5179 517E FFFD 5230 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5223 FFFD FFFD FFFD - 5228 FFFD FFFD 5222 FFFD FFFD FFFD FFFD - FFFD FFFD 517D FFFD 522B FFFD 522D 517B - 5231 FFFD FFFD 522E FFFD FFFD 5221 517A - FFFD FFFD 522F 5227 FFFD 522C 522A FFFD - 5224 FFFD 5225 5226 FFFD FFFD 517C -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = 6D59 - srcEnd = 6D79 - mappingOffset = 1B55 - Mapping = - 5641 5646 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 564D 563E FFFD FFFD - 5648 563A FFFD 5643 FFFD 5645 FFFD FFFD - FFFD FFFD FFFD 5647 FFFD FFFD 5640 563F - 564B -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = 6D85 - srcEnd = 6D95 - mappingOffset = 1B76 - Mapping = - 564C FFFD 563D 563C 5644 564A FFFD 5649 - FFFD 5B48 FFFD FFFD FFFD FFFD 5642 564E - 563B -End of Item 0085 - -Begin of Item 0086 - Format 1 - srcBegin = 6DAA - srcEnd = 6E05 - mappingOffset = 1B87 - Mapping = - 5B6A FFFD FFFD FFFD 5B57 5B55 FFFD FFFD - 5B4C FFFD FFFD 5B60 FFFD FFFD 5B5A FFFD - FFFD FFFD 5B49 FFFD FFFD 5B6C FFFD FFFD - FFFD FFFD 5B69 5B5D 5B68 5B53 FFFD FFFD - FFFD 5B54 5B4E FFFD FFFD FFFD FFFD 5B56 - 5B5E FFFD FFFD FFFD FFFD FFFD 5B63 5B4B - 5B61 FFFD FFFD FFFD 5B58 FFFD FFFD 5B4D - FFFD FFFD 5B4F FFFD 5B6D FFFD 5B67 FFFD - 5B64 5B62 5B6B FFFD 5B66 FFFD FFFD 5B65 - FFFD 5B4A FFFD 5B5C FFFD 5B5B FFFD 5B59 - 5B51 5B50 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5B52 -End of Item 0086 - -Begin of Item 0087 - Format 1 - srcBegin = 6E19 - srcEnd = 6E72 - mappingOffset = 1BE3 - Mapping = - 6047 5B5F 6035 FFFD 6043 FFFD FFFD 6032 - 602E FFFD 6034 6038 6033 603C FFFD FFFD - FFFD FFFD FFFD 6041 603B FFFD 602B FFFD - FFFD 602F FFFD 603E FFFD FFFD FFFD 602C - FFFD 6040 FFFD FFFD FFFD 6044 FFFD FFFD - FFFD FFFD 6042 604A FFFD FFFD FFFD FFFD - FFFD 6031 FFFD FFFD 603F 6048 FFFD FFFD - FFFD FFFD FFFD 602D FFFD 6039 FFFD 6037 - FFFD FFFD 6036 FFFD FFFD FFFD 604D FFFD - FFFD FFFD 6049 FFFD FFFD FFFD 6030 FFFD - 604C FFFD FFFD FFFD FFFD 603A 603D FFFD - FFFD 604B -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = 6E89 - srcEnd = 6ED5 - mappingOffset = 1C3D - Mapping = - 6046 FFFD FFFD FFFD FFFD FFFD FFFD 6463 - FFFD FFFD FFFD FFFD FFFD 646D FFFD 6468 - FFFD FFFD FFFD 646E 6464 FFFD FFFD FFFD - FFFD 645E FFFD FFFD 6467 FFFD 6472 FFFD - FFFD 6471 646B FFFD FFFD FFFD 645F FFFD - FFFD FFFD FFFD 6473 FFFD 6461 FFFD FFFD - FFFD 646A FFFD 6469 FFFD FFFD FFFD FFFD - FFFD 6462 FFFD 646F 6466 FFFD 6465 FFFD - FFFD FFFD 6045 6957 FFFD FFFD FFFD FFFD - 646C FFFD 6460 6470 6D5A -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = 6EEC - srcEnd = 6F3F - mappingOffset = 1C8A - Mapping = - 6954 FFFD FFFD 6949 FFFD FFFD 6956 FFFD - 6940 FFFD FFFD 6958 FFFD FFFD FFFD FFFD - FFFD FFFD 693E 6948 FFFD 6955 6946 FFFD - FFFD FFFD 694A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6945 FFFD FFFD FFFD 693F - 693D 694F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6943 FFFD 6947 694E - FFFD FFFD FFFD FFFD FFFD 6941 6953 6950 - 6944 FFFD FFFD 6951 FFFD 694B 694D 693C - FFFD FFFD FFFD FFFD 694C FFFD FFFD FFFD - FFFD FFFD 6942 6D49 -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = 6F51 - srcEnd = 6FC3 - mappingOffset = 1CDE - Mapping = - 6D4C FFFD FFFD 6D4E FFFD FFFD FFFD 6D59 - FFFD FFFD 6D51 FFFD FFFD FFFD 6D5D 6D5C - FFFD FFFD FFFD 6D57 FFFD 6D4D FFFD FFFD - FFFD FFFD FFFD FFFD 6D50 6D53 6D5B 6D56 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6D52 - FFFD 6D55 FFFD 6D4A FFFD FFFD FFFD 742A - FFFD FFFD FFFD 6D4B FFFD 6D4F FFFD 6952 - FFFD FFFD FFFD FFFD FFFD 6D54 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6D58 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7133 - 7129 FFFD FFFD 712B FFFD 7132 712D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7128 FFFD 712E 7134 FFFD 7131 FFFD FFFD - 7130 FFFD FFFD FFFD FFFD FFFD FFFD 712F - 712C 7127 712A -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = 6FD5 - srcEnd = 7032 - mappingOffset = 1D51 - Mapping = - 742E FFFD FFFD 7422 FFFD FFFD 7426 FFFD - FFFD FFFD 7424 7425 742C FFFD FFFD 7427 - FFFD FFFD FFFD FFFD 742D FFFD 7428 742B - FFFD 742F 7429 7430 7423 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 765D FFFD FFFD - FFFD 765B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 765C FFFD FFFD 7659 FFFD 765A FFFD - FFFD FFFD 765F FFFD 765E FFFD FFFD FFFD - 7845 FFFD FFFD 7846 FFFD 7843 7840 FFFD - 7844 FFFD 7841 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7842 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7975 FFFD 7976 -End of Item 008B - -Begin of Item 008C - Format 2 - srcBegin = 703E - destBegin = 7974 -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = 704C - srcEnd = 707D - mappingOffset = 1DAF - Mapping = - 7A74 FFFD FFFD FFFD FFFD 7B64 FFFD FFFD - FFFD FFFD FFFD FFFD 7B65 FFFD FFFD FFFD - FFFD FFFD 7C60 FFFD FFFD FFFD FFFD 7D24 - 7D32 FFFD FFFD FFFD FFFD FFFD FFFD 4556 - FFFD FFFD FFFD FFFD 4848 FFFD FFFD FFFD - FFFD FFFD 4B22 FFFD 4B25 FFFD FFFD FFFD - 4B23 4B24 -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = 708A - srcEnd = 70BA - mappingOffset = 1DE1 - Mapping = - 4E65 FFFD FFFD FFFD 4E63 FFFD FFFD FFFD - 4E64 FFFD FFFD 4E62 FFFD FFFD FFFD 4E66 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 523A FFFD FFFD FFFD FFFD FFFD - FFFD 5232 5235 5237 5239 5236 FFFD FFFD - FFFD 5234 FFFD FFFD FFFD FFFD 5238 FFFD - 5233 -End of Item 008E - -Begin of Item 008F - Format 1 - srcBegin = 70C8 - srcEnd = 70FD - mappingOffset = 1E12 - Mapping = - 5653 FFFD 564F FFFD FFFD FFFD FFFD 5654 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5650 5652 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5651 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5B72 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5B6E FFFD FFFD FFFD 5B71 -End of Item 008F - -Begin of Item 0090 - Format 1 - srcBegin = 7109 - srcEnd = 710A - mappingOffset = 1E48 - Mapping = - 5B6F 5B70 -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = 7119 - srcEnd = 7136 - mappingOffset = 1E4A - Mapping = - 604E 604F FFFD 6055 FFFD FFFD FFFD FFFD - 6052 FFFD FFFD FFFD FFFD 6050 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6051 - FFFD FFFD FFFD FFFD FFFD 6053 -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = 7146 - srcEnd = 716E - mappingOffset = 1E68 - Mapping = - 6522 FFFD FFFD 6478 FFFD FFFD 647D FFFD - 6474 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6524 FFFD FFFD 6475 FFFD FFFD 647A FFFD - 6521 FFFD FFFD FFFD FFFD FFFD 6477 647E - 647C 6479 6523 6476 FFFD FFFD 647B FFFD - 6054 -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = 717D - srcEnd = 721B - mappingOffset = 1E91 - Mapping = - 695B FFFD FFFD FFFD FFFD FFFD FFFD 695D - FFFD FFFD FFFD FFFD FFFD 695C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 695E FFFD 6959 - FFFD FFFD FFFD FFFD 695A FFFD FFFD FFFD - FFFD FFFD 6D5E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6D61 FFFD FFFD FFFD 6D5F - FFFD FFFD FFFD FFFD 6D60 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 713B FFFD FFFD FFFD - FFFD 7135 FFFD FFFD FFFD FFFD 713F 7140 - FFFD FFFD FFFD 7139 7136 FFFD FFFD FFFD - FFFD 713C FFFD 7137 FFFD 7138 FFFD FFFD - 713A FFFD FFFD FFFD 713D FFFD FFFD 713E - FFFD FFFD 7432 7439 FFFD FFFD FFFD FFFD - 7435 7434 7431 FFFD FFFD FFFD FFFD 7437 - 7436 7433 FFFD FFFD FFFD FFFD FFFD 7438 - FFFD FFFD FFFD 7663 FFFD FFFD 7660 7661 - FFFD 7662 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7847 FFFD FFFD FFFD FFFD FFFD FFFD - 7848 FFFD FFFD 7977 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7A75 -End of Item 0093 - -Begin of Item 0094 - Format 1 - srcBegin = 7228 - srcEnd = 7284 - mappingOffset = 1F30 - Mapping = - 7D46 FFFD 4557 FFFD 4E67 4E68 FFFD FFFD - 523B FFFD FFFD FFFD FFFD 743A 4558 FFFD - 4E69 5655 6525 4559 FFFD 5B73 695F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 743B 455A - 4E6A FFFD FFFD FFFD 6056 FFFD FFFD FFFD - FFFD FFFD 6526 FFFD FFFD FFFD 6D62 FFFD - 7849 455B FFFD 455C FFFD 484A FFFD 4849 - 4B28 4B27 4B26 FFFD FFFD FFFD FFFD 4E6B - FFFD 4E6C FFFD FFFD FFFD FFFD FFFD 523D - FFFD FFFD 523C FFFD 523E FFFD FFFD FFFD - FFFD 5656 FFFD FFFD FFFD 5B74 FFFD FFFD - 6058 5B75 FFFD FFFD 6057 -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = 7292 - srcEnd = 72AF - mappingOffset = 1F8D - Mapping = - 6960 FFFD FFFD FFFD 6961 FFFD FFFD FFFD - FFFD 6D63 FFFD FFFD FFFD FFFD FFFD FFFD - 784A FFFD FFFD FFFD FFFD 7A76 FFFD FFFD - FFFD FFFD 455D FFFD FFFD 4667 -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = 72C0 - srcEnd = 72E9 - mappingOffset = 1FAB - Mapping = - 4E6D FFFD 4B2A FFFD 4B29 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4E6E FFFD - 4E71 FFFD FFFD FFFD FFFD FFFD FFFD 4E70 - FFFD 4E6F FFFD FFFD FFFD FFFD FFFD FFFD - 5240 5241 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 523F -End of Item 0096 - -Begin of Item 0097 - Format 1 - srcBegin = 72F7 - srcEnd = 72FD - mappingOffset = 1FD5 - Mapping = - 565B 565A 5658 FFFD FFFD 5657 5659 -End of Item 0097 - -Begin of Item 0098 - Format 1 - srcBegin = 7313 - srcEnd = 7357 - mappingOffset = 1FDC - Mapping = - 5B79 FFFD FFFD 5B78 FFFD FFFD 5B7A FFFD - 5B77 5B76 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 605A FFFD FFFD FFFD 605C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 605B FFFD 6059 6527 FFFD FFFD FFFD - FFFD FFFD FFFD 652A 6529 FFFD FFFD FFFD - FFFD 6962 6528 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6D64 FFFD 6963 FFFD FFFD - FFFD FFFD FFFD FFFD 6D65 -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = 7368 - srcEnd = 73CD - mappingOffset = 2021 - Mapping = - 7141 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 743C FFFD 743D FFFD FFFD 7665 FFFD 7664 - 784B FFFD 784C 7978 FFFD FFFD FFFD FFFD - 7B66 FFFD FFFD FFFD 4668 FFFD 565C 5B7B - FFFD 4669 FFFD 455E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4B2B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4E74 - FFFD FFFD FFFD FFFD FFFD 4E76 FFFD FFFD - 4E73 4E72 FFFD 4E75 FFFD FFFD FFFD FFFD - FFFD FFFD 5245 5248 FFFD FFFD FFFD 5242 - FFFD FFFD FFFD 5244 FFFD FFFD FFFD FFFD - 5247 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5243 FFFD FFFD 5246 -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = 73DE - srcEnd = 73EE - mappingOffset = 2087 - Mapping = - 5662 FFFD 5660 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5661 FFFD FFFD 565D - 565F -End of Item 009A - -Begin of Item 009B - Format 1 - srcBegin = 73FE - srcEnd = 740D - mappingOffset = 2098 - Mapping = - 5C22 FFFD FFFD FFFD FFFD 5B7E FFFD 5B7C - 5C21 FFFD FFFD 565E 5B7D FFFD FFFD 5C23 -End of Item 009B - -Begin of Item 009C - Format 1 - srcBegin = 741B - srcEnd = 7441 - mappingOffset = 20A8 - Mapping = - 6066 FFFD FFFD FFFD FFFD FFFD FFFD 6060 - FFFD FFFD 6061 6067 FFFD 6068 FFFD 605E - FFFD FFFD FFFD FFFD 6065 FFFD FFFD FFFD - 605F 6064 6062 6063 FFFD FFFD FFFD 605D - FFFD FFFD FFFD FFFD 6531 FFFD 6530 -End of Item 009C - -Begin of Item 009D - Format 1 - srcBegin = 7455 - srcEnd = 7470 - mappingOffset = 20CF - Mapping = - 652D FFFD FFFD FFFD 6532 652C 6533 6534 - FFFD 652F 652E FFFD FFFD FFFD 6965 6964 - FFFD FFFD FFFD FFFD 6D66 6966 FFFD FFFD - 6968 FFFD 652B 6967 -End of Item 009D - -Begin of Item 009E - Format 1 - srcBegin = 747E - srcEnd = 748B - mappingOffset = 20EB - Mapping = - 6D69 FFFD 6D6A FFFD FFFD 6D68 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6D67 -End of Item 009E - -Begin of Item 009F - Format 1 - srcBegin = 7498 - srcEnd = 74B0 - mappingOffset = 20F9 - Mapping = - 7144 FFFD FFFD FFFD 7142 FFFD 7146 7145 - FFFD FFFD FFFD 7143 FFFD FFFD 7440 7666 - 7441 743E FFFD FFFD FFFD FFFD FFFD FFFD - 743F -End of Item 009F - -Begin of Item 00A0 - Format 1 - srcBegin = 74BD - srcEnd = 74E9 - mappingOffset = 2112 - Mapping = - 784D FFFD 7667 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 784E FFFD FFFD - FFFD FFFD 7979 FFFD FFFD FFFD FFFD 7A78 - FFFD 7A77 FFFD FFFD FFFD 7C3C FFFD 466A - FFFD FFFD FFFD 5C24 FFFD 7147 784F 7B67 - FFFD 466B FFFD FFFD 2322 -End of Item 00A0 - -Begin of Item 00A1 - Format 1 - srcBegin = 74F6 - srcEnd = 74F7 - mappingOffset = 213F - Mapping = - 5C25 5C26 -End of Item 00A1 - -Begin of Item 00A2 - Format 1 - srcBegin = 7504 - srcEnd = 753D - mappingOffset = 2141 - Mapping = - 6969 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7148 7149 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7668 FFFD FFFD 466C FFFD 5249 FFFD - 5C27 FFFD FFFD 466D FFFD FFFD 5C28 FFFD - FFFD 6069 606A FFFD 466E 466F FFFD 4B2D - 4B2C 524A FFFD FFFD 4670 4671 4672 4673 - FFFD FFFD FFFD 4B2E 4B2F FFFD FFFD FFFD - FFFD 4E77 -End of Item 00A2 - -Begin of Item 00A3 - Format 1 - srcBegin = 754B - srcEnd = 75E3 - mappingOffset = 217B - Mapping = - 524E 524C FFFD 524D 524B FFFD FFFD FFFD - FFFD 5663 FFFD FFFD FFFD FFFD 5667 5666 - FFFD 5665 5664 FFFD FFFD FFFD FFFD 5C2B - FFFD FFFD 5C29 5C2A FFFD FFFD FFFD 606C - 606B FFFD FFFD FFFD FFFD 5C2C FFFD FFFD - FFFD FFFD FFFD 6535 FFFD 6536 FFFD FFFD - FFFD FFFD FFFD FFFD 6D6B FFFD FFFD FFFD - FFFD FFFD FFFD 7851 7850 FFFD FFFD 7B68 - 4674 FFFD FFFD FFFD 5C2D FFFD 696A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4E79 4E7A - FFFD FFFD 4E78 FFFD FFFD FFFD FFFD 5252 - 5253 5250 5251 FFFD FFFD FFFD FFFD FFFD - 524F FFFD FFFD FFFD FFFD FFFD FFFD 566B - 566C FFFD 5C30 FFFD FFFD 5671 566F FFFD - FFFD 566E 566D 5668 FFFD FFFD FFFD 5670 - FFFD FFFD 5669 FFFD 566A FFFD FFFD 5C31 - FFFD FFFD 5C32 FFFD FFFD FFFD FFFD FFFD - FFFD 5C2E 5C2F FFFD FFFD 6071 6070 FFFD - 606E FFFD FFFD 6072 FFFD 6073 FFFD 606D - 606F -End of Item 00A3 - -Begin of Item 00A4 - Format 1 - srcBegin = 75F0 - srcEnd = 7613 - mappingOffset = 2214 - Mapping = - 6538 653B 653A 653F 653E FFFD FFFD FFFD - FFFD FFFD 653C FFFD FFFD FFFD FFFD 653D - 6537 6539 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 696E FFFD 696D FFFD 696C FFFD FFFD - FFFD FFFD FFFD 696F -End of Item 00A4 - -Begin of Item 00A5 - Format 1 - srcBegin = 761F - srcEnd = 769A - mappingOffset = 2238 - Mapping = - 6D6E 6D6C 6D71 6D72 FFFD 6D6F FFFD 6D70 - 696B FFFD 6D6D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 714A FFFD FFFD - FFFD 714B FFFD 714C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7443 FFFD FFFD FFFD 7442 - FFFD FFFD FFFD FFFD FFFD 7444 FFFD FFFD - FFFD FFFD FFFD 766B FFFD FFFD FFFD 7669 - FFFD 766A FFFD FFFD FFFD FFFD FFFD FFFD - 7852 FFFD 7853 797A FFFD FFFD 797B FFFD - FFFD FFFD 7A79 FFFD FFFD 7B6A FFFD 7B69 - FFFD FFFD 7C61 7C62 FFFD FFFD FFFD FFFD - FFFD 5254 FFFD FFFD 6074 6075 4675 484B - FFFD FFFD FFFD 4B30 FFFD 4E7B FFFD 5255 - 5256 5257 FFFD FFFD 5672 FFFD FFFD 5C33 - FFFD FFFD FFFD FFFD 6077 FFFD FFFD 6076 - FFFD FFFD FFFD 6D73 -End of Item 00A5 - -Begin of Item 00A6 - Format 1 - srcBegin = 76AE - srcEnd = 770B - mappingOffset = 22B4 - Mapping = - 4676 FFFD 5673 FFFD FFFD FFFD 6078 FFFD - FFFD FFFD FFFD FFFD 6D74 FFFD FFFD FFFD - FFFD 4677 FFFD FFFD 4E7C 525A FFFD 525B - 5259 FFFD 5258 FFFD 5674 FFFD FFFD 5675 - 5676 FFFD FFFD FFFD 5C35 FFFD 5C34 FFFD - FFFD FFFD FFFD FFFD FFFD 5C36 6079 FFFD - 6540 6541 FFFD 6970 FFFD 6971 6D75 714E - FFFD 714D FFFD FFFD 7445 FFFD FFFD FFFD - 4678 4B31 FFFD FFFD 4E7D FFFD 4E7E FFFD - FFFD FFFD 525E 525D FFFD FFFD 5262 FFFD - 5261 FFFD FFFD 525C FFFD FFFD FFFD FFFD - FFFD 5263 FFFD 525F FFFD 5260 -End of Item 00A6 - -Begin of Item 00A7 - Format 1 - srcBegin = 771F - srcEnd = 7729 - mappingOffset = 2312 - Mapping = - 5678 5679 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 567A 5677 -End of Item 00A7 - -Begin of Item 00A8 - Format 1 - srcBegin = 7736 - srcEnd = 773E - mappingOffset = 231D - Mapping = - 5C3A 5C37 5C3B FFFD 5C3C FFFD 5C39 FFFD - 5C38 -End of Item 00A8 - -Begin of Item 00A9 - Format 2 - srcBegin = 774F - destBegin = 607A -End of Item 00A9 - -Begin of Item 00AA - Format 1 - srcBegin = 775B - srcEnd = 776C - mappingOffset = 2326 - Mapping = - 6542 654A FFFD 6545 FFFD FFFD 6975 654D - 6546 FFFD 654B 6544 FFFD 654C FFFD 6548 - 6543 6549 -End of Item 00AA - -Begin of Item 00AB - Format 1 - srcBegin = 7779 - srcEnd = 7791 - mappingOffset = 2338 - Mapping = - 6547 FFFD FFFD FFFD 6973 FFFD 6974 FFFD - FFFD FFFD FFFD 6972 FFFD FFFD 6D77 FFFD - FFFD FFFD 6D7A 6D78 FFFD 6D76 FFFD FFFD - 6D79 -End of Item 00AB - -Begin of Item 00AC - Format 1 - srcBegin = 779E - srcEnd = 77C7 - mappingOffset = 2351 - Mapping = - 7150 7151 714F FFFD FFFD FFFD FFFD 7152 - FFFD 744A FFFD FFFD 7447 FFFD 7449 744B - FFFD FFFD 7448 FFFD FFFD 7446 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 766E 766F 766C - FFFD 766D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7854 -End of Item 00AC - -Begin of Item 00AD - Format 1 - srcBegin = 77D3 - srcEnd = 784E - mappingOffset = 237B - Mapping = - 7A7A FFFD FFFD FFFD 7C63 FFFD FFFD 7D33 - 4679 5264 FFFD FFFD FFFD FFFD FFFD 467A - 4B32 FFFD 4F21 FFFD FFFD FFFD 567B FFFD - FFFD FFFD 607B 654E 744C FFFD FFFD FFFD - 467B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4F22 FFFD FFFD FFFD FFFD 5265 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5267 5268 FFFD FFFD FFFD FFFD FFFD - FFFD 5266 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5721 FFFD 5727 5726 FFFD FFFD - FFFD FFFD 5724 FFFD 567D FFFD FFFD FFFD - FFFD FFFD 5725 FFFD FFFD 567C FFFD 5728 - FFFD 5722 FFFD FFFD 5723 567E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5C3E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5C3F -End of Item 00AD - -Begin of Item 00AE - Format 2 - srcBegin = 785D - destBegin = 607C -End of Item 00AE - -Begin of Item 00AF - Format 1 - srcBegin = 786B - srcEnd = 786F - mappingOffset = 23F7 - Mapping = - 5C3D 607D FFFD FFFD 607E -End of Item 00AF - -Begin of Item 00B0 - Format 1 - srcBegin = 787C - srcEnd = 78DA - mappingOffset = 23FC - Mapping = - 6555 FFFD FFFD 6558 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6554 FFFD FFFD - 6553 FFFD 654F FFFD FFFD 6556 FFFD 6557 - FFFD FFFD FFFD 6551 6552 FFFD FFFD FFFD - FFFD FFFD FFFD 6977 FFFD FFFD FFFD 697B - FFFD FFFD FFFD 6978 FFFD 697A FFFD FFFD - FFFD FFFD FFFD FFFD 6550 FFFD FFFD 6979 - FFFD FFFD FFFD FFFD FFFD FFFD 6D7D FFFD - 6E23 FFFD 6E21 FFFD FFFD 6976 FFFD FFFD - FFFD 6D7C FFFD FFFD FFFD FFFD 6D7E 6D7B - FFFD FFFD FFFD FFFD 6E24 FFFD FFFD FFFD - FFFD 6E22 FFFD FFFD FFFD FFFD 7154 -End of Item 00B0 - -Begin of Item 00B1 - Format 1 - srcBegin = 78E7 - srcEnd = 7901 - mappingOffset = 245B - Mapping = - 7156 7153 FFFD FFFD FFFD 7155 FFFD FFFD - 7450 FFFD FFFD FFFD FFFD 744F FFFD FFFD - 744D FFFD FFFD 744E FFFD FFFD FFFD FFFD - FFFD FFFD 7451 -End of Item 00B1 - -Begin of Item 00B2 - Format 1 - srcBegin = 790E - srcEnd = 7919 - mappingOffset = 2476 - Mapping = - 7670 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7855 -End of Item 00B2 - -Begin of Item 00B3 - Format 1 - srcBegin = 7926 - srcEnd = 792C - mappingOffset = 2482 - Mapping = - 797C FFFD FFFD FFFD 797D 7A21 797E -End of Item 00B3 - -Begin of Item 00B4 - Format 1 - srcBegin = 793A - srcEnd = 796D - mappingOffset = 2489 - Mapping = - 467C FFFD FFFD FFFD 4F23 FFFD 4F24 4F25 - FFFD FFFD FFFD FFFD 5269 526C 526B 526A - FFFD FFFD FFFD FFFD FFFD FFFD 572A FFFD - FFFD FFFD FFFD 5729 572D 5730 FFFD FFFD - 5731 FFFD FFFD 572F 572E 572C 572B FFFD - FFFD FFFD FFFD 5C40 FFFD FFFD 5C41 FFFD - FFFD FFFD FFFD 5C42 -End of Item 00B4 - -Begin of Item 00B5 - Format 1 - srcBegin = 797A - srcEnd = 7981 - mappingOffset = 24BD - Mapping = - 6559 FFFD FFFD FFFD FFFD 655A FFFD 655B -End of Item 00B5 - -Begin of Item 00B6 - Format 1 - srcBegin = 798D - srcEnd = 798F - mappingOffset = 24C5 - Mapping = - 697E 697C 697D -End of Item 00B6 - -Begin of Item 00B7 - Format 1 - srcBegin = 79A6 - srcEnd = 79E9 - mappingOffset = 24C8 - Mapping = - 7157 7452 FFFD FFFD 7453 FFFD FFFD FFFD - 7671 FFFD FFFD 7856 FFFD 7B6B FFFD FFFD - FFFD FFFD FFFD 526D 526E FFFD FFFD 655D - 467D 4B35 4B34 4B33 FFFD FFFD FFFD FFFD - FFFD FFFD 4F27 4F26 FFFD 5271 FFFD FFFD - FFFD FFFD FFFD 526F 5270 FFFD FFFD FFFD - FFFD FFFD 5738 FFFD FFFD FFFD FFFD FFFD - FFFD 5735 FFFD FFFD FFFD 5733 5732 FFFD - 5736 5734 FFFD 5737 -End of Item 00B7 - -Begin of Item 00B8 - Format 1 - srcBegin = 79FB - srcEnd = 7A20 - mappingOffset = 250C - Mapping = - 5C43 FFFD FFFD FFFD FFFD 6125 FFFD FFFD - FFFD FFFD 6124 FFFD FFFD 6122 FFFD FFFD - 6123 FFFD 6121 FFFD FFFD FFFD FFFD FFFD - FFFD 6561 FFFD FFFD FFFD FFFD FFFD 655F - FFFD 655E FFFD 6563 6562 6560 -End of Item 00B8 - -Begin of Item 00B9 - Format 1 - srcBegin = 7A2E - srcEnd = 7ACB - mappingOffset = 2532 - Mapping = - 6A21 FFFD FFFD 6A22 FFFD FFFD FFFD FFFD - FFFD 6E29 FFFD FFFD FFFD 6E2A 6E26 6E28 - FFFD 6E25 6E27 FFFD FFFD FFFD FFFD FFFD - 715A FFFD FFFD FFFD FFFD 715C 715B 7158 - 7159 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7454 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7674 7672 7673 FFFD FFFD FFFD - FFFD FFFD FFFD 7858 FFFD 7857 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 467E FFFD - 4B36 FFFD FFFD 4F29 4F28 FFFD FFFD FFFD - FFFD 5272 FFFD 5273 FFFD FFFD 5739 FFFD - FFFD FFFD 573A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5C44 FFFD FFFD 5C45 - 6128 6127 6126 FFFD FFFD FFFD FFFD FFFD - FFFD 6564 6565 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6A24 6A23 FFFD FFFD FFFD - 6E2C 6E2B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 715D FFFD FFFD FFFD - FFFD 7455 FFFD FFFD FFFD FFFD 7675 7676 - FFFD 7A22 FFFD FFFD 7C3D 4721 -End of Item 00B9 - -Begin of Item 00BA - Format 1 - srcBegin = 7AD9 - srcEnd = 7B2E - mappingOffset = 25D0 - Mapping = - 573B FFFD FFFD FFFD FFFD FFFD 5D7E 5D7D - FFFD FFFD 612A FFFD 6129 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6A25 FFFD 6A26 FFFD - FFFD FFFD FFFD FFFD FFFD 7A23 FFFD FFFD - 484C 4F2A FFFD FFFD 5275 FFFD 5274 FFFD - FFFD FFFD FFFD FFFD FFFD 573C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 573D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5C4B FFFD 5C48 FFFD FFFD 5C4C FFFD 5C46 - FFFD FFFD FFFD FFFD FFFD 5C4A FFFD 5C47 - FFFD FFFD FFFD 5C49 FFFD 5C4D -End of Item 00BA - -Begin of Item 00BB - Format 1 - srcBegin = 7B46 - srcEnd = 7B77 - mappingOffset = 2626 - Mapping = - 612D FFFD FFFD 612B FFFD 6132 FFFD 6131 - FFFD 6133 612E 6134 612F FFFD 6130 FFFD - 612C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6568 FFFD FFFD FFFD FFFD FFFD - FFFD 656A FFFD FFFD FFFD FFFD FFFD FFFD - 6569 FFFD FFFD FFFD FFFD FFFD FFFD 6A2A - FFFD 6566 -End of Item 00BB - -Begin of Item 00BC - Format 1 - srcBegin = 7B84 - srcEnd = 7BA1 - mappingOffset = 2658 - Mapping = - 6A31 FFFD FFFD 6A30 FFFD FFFD FFFD 6A29 - FFFD FFFD FFFD 6A2E FFFD FFFD FFFD FFFD - 6A2D 6A28 FFFD 6A2B FFFD FFFD FFFD FFFD - FFFD 6A2C FFFD FFFD 6E34 6A27 -End of Item 00BC - -Begin of Item 00BD - Format 1 - srcBegin = 7BAD - srcEnd = 7BCC - mappingOffset = 2676 - Mapping = - 6E2D FFFD FFFD FFFD 6E2E FFFD FFFD 6E30 - FFFD FFFD FFFD 6A2F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6567 6E33 FFFD FFFD 6E2F - FFFD 6E31 6E32 FFFD 7160 FFFD FFFD 6E35 -End of Item 00BD - -Begin of Item 00BE - Format 1 - srcBegin = 7BD9 - srcEnd = 7BE9 - mappingOffset = 2696 - Mapping = - 715E FFFD 7162 FFFD FFFD FFFD FFFD 745B - 7163 FFFD FFFD 7161 FFFD 7165 FFFD FFFD - 7164 -End of Item 00BE - -Begin of Item 00BF - Format 1 - srcBegin = 7BF7 - srcEnd = 7C11 - mappingOffset = 26A7 - Mapping = - 7459 FFFD FFFD FFFD FFFD FFFD FFFD 7458 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7456 FFFD FFFD FFFD FFFD 745A 7457 FFFD - FFFD FFFD 715F -End of Item 00BF - -Begin of Item 00C0 - Format 1 - srcBegin = 7C1E - srcEnd = 7C2B - mappingOffset = 26C2 - Mapping = - 767A FFFD FFFD 767C FFFD 767B FFFD FFFD - FFFD 7678 FFFD FFFD 7679 7677 -End of Item 00C0 - -Begin of Item 00C1 - Format 1 - srcBegin = 7C37 - srcEnd = 7C50 - mappingOffset = 26D0 - Mapping = - 785D 785B FFFD FFFD FFFD FFFD 785C 7859 - 785A 785E FFFD FFFD 7A25 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7A24 7A26 FFFD - FFFD 7A7B -End of Item 00C1 - -Begin of Item 00C2 - Format 1 - srcBegin = 7C5F - srcEnd = 7C7D - mappingOffset = 26EA - Mapping = - 7B6D 7B6C FFFD FFFD 7C3F 7C3E 7C40 FFFD - FFFD FFFD FFFD FFFD FFFD 7D25 FFFD 7D26 - FFFD FFFD FFFD 7D4B 484D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5276 -End of Item 00C2 - -Begin of Item 00C3 - Format 1 - srcBegin = 7C89 - srcEnd = 7CA5 - mappingOffset = 2709 - Mapping = - 573E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5C4E FFFD FFFD 5C50 FFFD 5C4F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6135 FFFD - FFFD FFFD FFFD FFFD 6136 -End of Item 00C3 - -Begin of Item 00C4 - Format 1 - srcBegin = 7CB1 - srcEnd = 7CBE - mappingOffset = 2726 - Mapping = - 656B FFFD 656C FFFD 656D FFFD FFFD FFFD - 6A32 FFFD FFFD FFFD 6A33 6A34 -End of Item 00C4 - -Begin of Item 00C5 - Format 1 - srcBegin = 7CCA - srcEnd = 7D81 - mappingOffset = 2734 - Mapping = - 6E36 FFFD FFFD FFFD 2323 FFFD FFFD FFFD - FFFD FFFD FFFD 7166 7167 FFFD FFFD 7461 - FFFD FFFD 745D 7462 745E 7460 745C FFFD - 745F FFFD FFFD FFFD FFFD 767D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7A27 7A28 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 484E FFFD - FFFD 4B37 FFFD FFFD 4F2B FFFD 5279 FFFD - 5277 FFFD 527C 5278 527D 527B FFFD 527A - 5742 5741 FFFD 574A FFFD FFFD 5746 FFFD - FFFD FFFD 5745 5747 FFFD 5740 FFFD 574B - 5748 574C 5749 FFFD FFFD FFFD 5743 573F - 5744 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 613B FFFD FFFD 5C54 5C5B 5C58 5C5E - 5C5D 5C59 FFFD FFFD FFFD FFFD FFFD 5C55 - FFFD FFFD 5C56 FFFD FFFD FFFD 5C57 FFFD - 5C5C 5C52 5C5A FFFD 5C51 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6138 FFFD - FFFD FFFD FFFD 613A FFFD FFFD FFFD FFFD - FFFD 6573 FFFD FFFD 6137 FFFD FFFD 613E - 6140 FFFD FFFD FFFD 613F FFFD 6139 FFFD - FFFD FFFD FFFD FFFD 613C FFFD 6141 5C53 - 613D 6142 FFFD FFFD FFFD FFFD FFFD 656F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6571 -End of Item 00C5 - -Begin of Item 00C6 - Format 1 - srcBegin = 7D8F - srcEnd = 7DFB - mappingOffset = 27EC - Mapping = - 6572 FFFD 6570 FFFD 656E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6A37 FFFD 6E43 - FFFD 6A3A FFFD 6A40 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6A47 6A44 FFFD - FFFD 6A36 6A3E 6A3D FFFD 6A3C 6A42 FFFD - FFFD 6A43 FFFD 6A3F 6A35 FFFD 6A38 6A39 - 6A41 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6A46 FFFD FFFD 6A3B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6A45 FFFD FFFD FFFD FFFD - FFFD 6E3B 6E44 6E40 FFFD FFFD 6E3D 6E41 - FFFD 6E37 FFFD FFFD 6E3F FFFD FFFD FFFD - FFFD 6E3E 6E42 FFFD FFFD 6E3C FFFD FFFD - 6E39 FFFD FFFD 6E45 FFFD 6E38 FFFD FFFD - FFFD FFFD 6E46 FFFD 6E3A -End of Item 00C6 - -Begin of Item 00C7 - Format 1 - srcBegin = 7E08 - srcEnd = 7E9C - mappingOffset = 2859 - Mapping = - 716A 716F 7168 FFFD FFFD FFFD FFFD FFFD - 7170 7169 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 716B FFFD 716E 716D FFFD - FFFD FFFD FFFD 716C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7469 FFFD FFFD 7463 7473 - FFFD 746B 7467 FFFD 746E 7471 FFFD 7466 - FFFD 746F FFFD FFFD FFFD 746A 7464 7472 - FFFD 746D FFFD 7468 FFFD 746C 7465 FFFD - 7470 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7725 FFFD 767E 7721 FFFD FFFD - FFFD 7726 7723 FFFD FFFD FFFD 7722 FFFD - FFFD 7724 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7862 7863 785F FFFD 7860 FFFD FFFD - FFFD FFFD FFFD 7864 FFFD FFFD FFFD FFFD - FFFD 7861 FFFD FFFD 7A2B 7A2A FFFD FFFD - FFFD FFFD 7A2C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7A7D FFFD FFFD 7A7C - FFFD FFFD FFFD 7C41 7C43 FFFD 7C42 FFFD - FFFD FFFD FFFD FFFD 7D39 -End of Item 00C7 - -Begin of Item 00C8 - Format 1 - srcBegin = 7F36 - srcEnd = 7F79 - mappingOffset = 28EE - Mapping = - 484F FFFD 527E FFFD 574D FFFD FFFD 5C5F - FFFD FFFD FFFD FFFD FFFD FFFD 7474 FFFD - FFFD FFFD 7727 FFFD FFFD FFFD 7A2D FFFD - FFFD FFFD 7C64 FFFD FFFD FFFD 4F2C 4B38 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 574E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6575 6576 FFFD FFFD FFFD - 6574 FFFD 6A48 FFFD 6577 FFFD FFFD 6E47 - FFFD 6E48 FFFD 7171 -End of Item 00C8 - -Begin of Item 00C9 - Format 1 - srcBegin = 7F85 - srcEnd = 805E - mappingOffset = 2932 - Mapping = - 7865 FFFD FFFD 7C65 FFFD 4850 4F2E 4F2D - FFFD 5321 FFFD FFFD FFFD FFFD FFFD 574F - FFFD FFFD FFFD FFFD FFFD 5C61 FFFD FFFD - FFFD 5C60 FFFD FFFD FFFD FFFD FFFD 657A - FFFD FFFD FFFD 6579 6578 FFFD FFFD FFFD - FFFD FFFD 6E49 FFFD FFFD 7172 FFFD FFFD - FFFD 7866 FFFD 7868 7867 FFFD FFFD 7A7E - 4851 FFFD 5322 FFFD 5751 FFFD FFFD FFFD - 5750 FFFD FFFD FFFD FFFD FFFD FFFD 5C62 - FFFD 5C63 FFFD FFFD FFFD 5C64 FFFD 6144 - 6145 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6A4B 6A49 6A4A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6E4A FFFD FFFD FFFD - FFFD 7175 FFFD 7173 7174 FFFD 7475 FFFD - FFFD FFFD FFFD FFFD 7728 FFFD 7729 7476 - FFFD FFFD FFFD 7A2E 4852 FFFD 4853 5753 - 4F2F 5752 FFFD FFFD FFFD FFFD 6146 4854 - 5324 FFFD FFFD 5323 5325 4855 FFFD FFFD - 5755 FFFD 5757 5754 5756 FFFD FFFD 5C65 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6E4B FFFD 7176 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4856 FFFD - FFFD 5326 FFFD FFFD FFFD FFFD FFFD FFFD - 5758 FFFD 5759 FFFD FFFD FFFD FFFD FFFD - FFFD 5C67 FFFD FFFD FFFD 5C66 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6147 FFFD FFFD - FFFD 657B FFFD 657C FFFD 6A4D FFFD FFFD - FFFD 6A4C -End of Item 00C9 - -Begin of Item 00CA - Format 1 - srcBegin = 806F - srcEnd = 810A - mappingOffset = 2A0C - Mapping = - 747A 7479 7477 7478 747B FFFD FFFD 772B - 772A FFFD FFFD FFFD FFFD FFFD 7B6F 7B6E - 4857 FFFD FFFD FFFD FFFD 657E 6148 657D - 6A4E FFFD 4858 FFFD 4859 485A FFFD FFFD - FFFD FFFD FFFD FFFD 4B3A FFFD FFFD 4B39 - FFFD 4B3C FFFD 4B3E 4B3D FFFD 4B3B FFFD - FFFD FFFD 4F34 4F32 FFFD FFFD 4F31 FFFD - FFFD FFFD 4F36 4F38 4F35 FFFD FFFD FFFD - 4F39 FFFD 4F33 4B3F FFFD 4F37 FFFD FFFD - FFFD FFFD FFFD 4F30 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 532A 532B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 532C FFFD 532F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5327 - FFFD FFFD FFFD 5329 532E FFFD 5332 5330 - FFFD FFFD 532D FFFD FFFD 5331 5328 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 575E FFFD - 5767 575C 575A FFFD 5762 575F FFFD FFFD - FFFD 5761 FFFD FFFD FFFD 5766 5764 FFFD - FFFD FFFD FFFD 575B FFFD FFFD 575D 5760 - FFFD 5763 FFFD 5765 -End of Item 00CA - -Begin of Item 00CB - Format 2 - srcBegin = 8116 - destBegin = 5C69 -End of Item 00CB - -Begin of Item 00CC - Format 1 - srcBegin = 8123 - srcEnd = 8155 - mappingOffset = 2AA8 - Mapping = - 5C6A 5C6E FFFD FFFD FFFD FFFD 5C6C FFFD - 5C6B FFFD FFFD FFFD 5C68 5C6D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 614E FFFD - FFFD FFFD FFFD 6150 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 614F FFFD FFFD FFFD FFFD - 614B 6151 FFFD 614D FFFD 6A4F 614C FFFD - 6152 614A 6149 -End of Item 00CC - -Begin of Item 00CD - Format 1 - srcBegin = 8165 - srcEnd = 8239 - mappingOffset = 2ADB - Mapping = - 6624 662A FFFD FFFD FFFD FFFD 6627 FFFD - FFFD 6625 FFFD 6622 6621 FFFD 6626 6153 - FFFD FFFD FFFD 6623 6628 6629 FFFD FFFD - FFFD FFFD 6A54 6A50 FFFD 6A55 FFFD FFFD - FFFD FFFD FFFD 6A52 FFFD 6A53 FFFD FFFD - FFFD FFFD 6A51 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6E51 FFFD 6E50 6E4C 6E4D - 6E4E FFFD FFFD 6E4F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7179 7178 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7177 FFFD - FFFD FFFD FFFD FFFD FFFD 747E FFFD FFFD - 7524 7526 7523 7522 FFFD 7521 747D FFFD - FFFD 747C FFFD FFFD 7525 FFFD FFFD FFFD - 772C FFFD 772D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7869 FFFD 7A2F FFFD FFFD - FFFD FFFD 7B70 FFFD FFFD 7C44 485B FFFD - 4F3A FFFD 6A56 7527 FFFD 485C FFFD 5769 - 5768 FFFD FFFD FFFD FFFD FFFD 485D 5333 - FFFD FFFD FFFD FFFD FFFD 6A57 717A 485E - FFFD 4F3B FFFD 576A FFFD 5C6F FFFD FFFD - 662B FFFD 6A58 717B 7528 772E FFFD 485F - 4F3C FFFD FFFD 576B FFFD 6154 FFFD 6A59 - FFFD FFFD FFFD FFFD FFFD FFFD 4860 6155 - FFFD 6A5A 4861 FFFD FFFD 5334 FFFD FFFD - FFFD FFFD FFFD 576E FFFD 576C 576D 576F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5C70 5C72 5C71 FFFD 5C73 -End of Item 00CD - -Begin of Item 00CE - Format 1 - srcBegin = 8247 - srcEnd = 824B - mappingOffset = 2BB0 - Mapping = - 662C FFFD FFFD FFFD 6A5B -End of Item 00CE - -Begin of Item 00CF - Format 1 - srcBegin = 8258 - srcEnd = 8259 - mappingOffset = 2BB5 - Mapping = - 717C 717D -End of Item 00CF - -Begin of Item 00D0 - Format 1 - srcBegin = 8266 - srcEnd = 827E - mappingOffset = 2BB7 - Mapping = - 7A30 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4862 4B40 FFFD 7529 4863 FFFD FFFD FFFD - FFFD 7C6C FFFD FFFD FFFD FFFD FFFD FFFD - 4864 -End of Item 00D0 - -Begin of Item 00D1 - Format 1 - srcBegin = 828B - srcEnd = 82BE - mappingOffset = 2BD0 - Mapping = - 4B42 FFFD 4B43 FFFD FFFD FFFD FFFD 4B41 - FFFD FFFD FFFD FFFD FFFD FFFD 4F3F FFFD - FFFD FFFD 4F3E FFFD 4F42 FFFD FFFD FFFD - 4F49 FFFD 4F46 FFFD FFFD FFFD FFFD FFFD - FFFD 4F45 4F40 FFFD 4F47 4F4A 4F44 FFFD - 4F3D FFFD FFFD FFFD 4F4C 4F48 4F43 FFFD - 5770 FFFD 4F41 4F4B -End of Item 00D1 - -Begin of Item 00D2 - Format 1 - srcBegin = 82D1 - srcEnd = 82F1 - mappingOffset = 2C04 - Mapping = - 5345 533F 5347 5344 FFFD FFFD 5340 FFFD - FFFD FFFD 5339 5343 FFFD 5346 5348 FFFD - FFFD FFFD 5338 FFFD 533C 533A 5335 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5349 FFFD - 5341 -End of Item 00D2 - -Begin of Item 00D3 - Format 1 - srcBegin = 8301 - srcEnd = 8309 - mappingOffset = 2C25 - Mapping = - 5342 533D 5336 533B 5337 534A FFFD FFFD - 533E -End of Item 00D3 - -Begin of Item 00D4 - Format 2 - srcBegin = 8317 - destBegin = 577E -End of Item 00D4 - -Begin of Item 00D5 - Format 1 - srcBegin = 8328 - srcEnd = 8354 - mappingOffset = 2C2E - Mapping = - 5823 FFFD FFFD 5771 FFFD FFFD FFFD FFFD - FFFD 5822 577B FFFD 5779 5778 577D FFFD - 5775 577C FFFD FFFD FFFD FFFD FFFD FFFD - 5821 FFFD FFFD 5824 FFFD FFFD FFFD FFFD - FFFD 5777 5774 FFFD FFFD FFFD FFFD 577A - 5776 FFFD 5772 FFFD 5773 -End of Item 00D5 - -Begin of Item 00D6 - Format 1 - srcBegin = 8377 - srcEnd = 83AB - mappingOffset = 2C5B - Mapping = - 5D23 5C77 FFFD FFFD 5D24 5D25 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5D26 - FFFD FFFD 5D21 5C7D FFFD FFFD FFFD 5C74 - FFFD FFFD FFFD 5C7C 5C7E FFFD FFFD 5C79 - FFFD 5C76 FFFD FFFD FFFD FFFD FFFD 5C75 - FFFD 5D22 FFFD 5C78 FFFD FFFD FFFD FFFD - 5D27 FFFD FFFD FFFD 5C7B -End of Item 00D6 - -Begin of Item 00D7 - Format 1 - srcBegin = 83BD - srcEnd = 840E - mappingOffset = 2C90 - Mapping = - 5C7A FFFD FFFD FFFD 615D FFFD FFFD FFFD - 615B FFFD FFFD FFFD FFFD 6168 FFFD 6165 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 616E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 616C - FFFD FFFD 616F 615A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6156 FFFD FFFD FFFD - FFFD FFFD 615E 6163 615F 6167 FFFD 6160 - FFFD FFFD FFFD 6158 FFFD FFFD FFFD FFFD - 6166 FFFD FFFD FFFD FFFD FFFD 6157 616B - FFFD FFFD 616D FFFD FFFD 6162 615C 6164 - 6159 616A -End of Item 00D7 - -Begin of Item 00D8 - Format 1 - srcBegin = 842C - srcEnd = 8449 - mappingOffset = 2CE2 - Mapping = - 655C FFFD FFFD FFFD FFFD 6630 FFFD FFFD - FFFD 6638 FFFD FFFD 6169 FFFD FFFD FFFD - 6637 662F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 663D FFFD FFFD 6634 -End of Item 00D8 - -Begin of Item 00D9 - Format 1 - srcBegin = 8457 - srcEnd = 8482 - mappingOffset = 2D00 - Mapping = - 6161 FFFD FFFD FFFD 6636 FFFD FFFD FFFD - FFFD FFFD 6639 FFFD 663A FFFD FFFD 6632 - FFFD FFFD 663B FFFD 6633 6635 663C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6631 FFFD - 662E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 662D -End of Item 00D9 - -Begin of Item 00DA - Format 1 - srcBegin = 8490 - srcEnd = 849E - mappingOffset = 2D2C - Mapping = - 6A68 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6A60 FFFD FFFD 6A63 FFFD 6A61 -End of Item 00DA - -Begin of Item 00DB - Format 1 - srcBegin = 84B2 - srcEnd = 84D3 - mappingOffset = 2D3B - Mapping = - 6A62 FFFD FFFD FFFD FFFD FFFD 6A65 FFFD - FFFD FFFD 6A69 FFFD FFFD 6A5D 6A66 FFFD - FFFD FFFD 6A5F FFFD 6A5E FFFD FFFD 6A5C - 6A6B 6A64 FFFD FFFD FFFD FFFD FFFD 6A6A - FFFD 6A67 -End of Item 00DB - -Begin of Item 00DC - Format 1 - srcBegin = 84EC - srcEnd = 84EE - mappingOffset = 2D5D - Mapping = - 6E5D FFFD 6E55 -End of Item 00DC - -Begin of Item 00DD - Format 1 - srcBegin = 84FF - srcEnd = 852D - mappingOffset = 2D60 - Mapping = - 6E5F FFFD FFFD FFFD FFFD FFFD FFFD 6E60 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6E59 FFFD 6E58 6E5C FFFD FFFD - 6E52 FFFD FFFD 6E54 FFFD FFFD FFFD FFFD - FFFD FFFD 6E5B FFFD 6E5A FFFD 6E5E FFFD - FFFD FFFD FFFD FFFD FFFD 6E56 6E57 -End of Item 00DD - -Begin of Item 00DE - Format 1 - srcBegin = 853D - srcEnd = 854A - mappingOffset = 2D8F - Mapping = - 6E53 FFFD FFFD FFFD FFFD FFFD 7225 FFFD - FFFD FFFD FFFD 7222 7226 717E -End of Item 00DE - -Begin of Item 00DF - Format 1 - srcBegin = 8559 - srcEnd = 856D - mappingOffset = 2D9D - Mapping = - 7221 FFFD FFFD FFFD FFFD 7229 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7223 - 7224 7228 FFFD FFFD 7227 -End of Item 00DF - -Begin of Item 00E0 - Format 1 - srcBegin = 857E - srcEnd = 85BA - mappingOffset = 2DB2 - Mapping = - 752C FFFD FFFD FFFD FFFD FFFD 752B FFFD - FFFD 7532 FFFD FFFD 7534 FFFD FFFD FFFD - FFFD FFFD FFFD 752E FFFD FFFD 752F FFFD - FFFD FFFD FFFD FFFD FFFD 7531 752D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7535 FFFD 7533 7730 752A FFFD FFFD FFFD - FFFD 7530 7734 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7736 7735 -End of Item 00E0 - -Begin of Item 00E1 - Format 1 - srcBegin = 85C9 - srcEnd = 85EA - mappingOffset = 2DEF - Mapping = - 7733 FFFD FFFD FFFD 7731 FFFD 772F 7732 - FFFD FFFD FFFD FFFD 786D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 786B FFFD FFFD FFFD - FFFD FFFD FFFD 786E 786F FFFD FFFD FFFD - 786A 786C -End of Item 00E1 - -Begin of Item 00E2 - Format 1 - srcBegin = 85F7 - srcEnd = 861A - mappingOffset = 2E11 - Mapping = - 7870 FFFD 7A32 7A34 7A31 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7A35 - 7A37 FFFD FFFD 7A38 7A36 FFFD FFFD FFFD - FFFD FFFD 7A33 FFFD FFFD FFFD FFFD FFFD - 7B21 FFFD FFFD 7B23 -End of Item 00E2 - -Begin of Item 00E3 - Format 1 - srcBegin = 862D - srcEnd = 863F - mappingOffset = 2E35 - Mapping = - 7B22 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7C45 FFFD FFFD FFFD FFFD - FFFD FFFD 7C46 -End of Item 00E3 - -Begin of Item 00E4 - Format 1 - srcBegin = 864E - srcEnd = 867B - mappingOffset = 2E48 - Mapping = - 4F4D FFFD 534B FFFD FFFD FFFD 5825 5D28 - FFFD FFFD FFFD FFFD FFFD 6170 663F FFFD - 663E 6640 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7536 FFFD FFFD FFFD 4865 FFFD FFFD - FFFD FFFD FFFD 4F4E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 534C 534E 534D -End of Item 00E4 - -Begin of Item 00E5 - Format 1 - srcBegin = 868A - srcEnd = 86ED - mappingOffset = 2E76 - Mapping = - 5826 FFFD 582B FFFD FFFD FFFD FFFD FFFD - FFFD 5828 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 582D FFFD FFFD FFFD FFFD FFFD - FFFD 582C 5829 FFFD FFFD FFFD FFFD 582A - 5827 FFFD FFFD FFFD FFFD 5D32 FFFD 5D31 - FFFD FFFD FFFD 5D2E 5D2C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5D2B FFFD - FFFD FFFD 5D2D FFFD 5D2F 5D2A FFFD 5D33 - FFFD 5D30 FFFD FFFD FFFD FFFD 6177 FFFD - FFFD FFFD 6174 FFFD FFFD FFFD FFFD 6172 - FFFD 6175 FFFD FFFD 6178 6171 FFFD FFFD - FFFD FFFD 6176 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6173 -End of Item 00E5 - -Begin of Item 00E6 - Format 1 - srcBegin = 86F9 - srcEnd = 873F - mappingOffset = 2EDA - Mapping = - 6641 FFFD 6647 FFFD FFFD 6646 FFFD 6645 - FFFD 6648 6649 FFFD FFFD 664A 6644 6643 - FFFD 664B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6642 FFFD FFFD FFFD FFFD 6A72 - FFFD FFFD FFFD 6A6D FFFD FFFD FFFD FFFD - FFFD 6A6F FFFD FFFD 6A70 FFFD FFFD FFFD - 6A75 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6A71 FFFD FFFD 6A74 FFFD - FFFD FFFD 6A6E FFFD FFFD FFFD 6A6C -End of Item 00E6 - -Begin of Item 00E7 - Format 1 - srcBegin = 874C - srcEnd = 8768 - mappingOffset = 2F21 - Mapping = - 6E6A FFFD FFFD FFFD FFFD FFFD FFFD 6E6B - FFFD 6A73 FFFD 6E69 FFFD 6E68 FFFD FFFD - FFFD FFFD FFFD FFFD 6E64 FFFD FFFD FFFD - FFFD FFFD 6E65 FFFD 6E67 -End of Item 00E7 - -Begin of Item 00E8 - Format 1 - srcBegin = 8774 - srcEnd = 878D - mappingOffset = 2F3E - Mapping = - 6E62 FFFD 6E63 FFFD 6E66 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6E61 722A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 722E -End of Item 00E8 - -Begin of Item 00E9 - Format 1 - srcBegin = 879E - srcEnd = 87D2 - mappingOffset = 2F58 - Mapping = - 722C 722B FFFD FFFD 722D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 753C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7539 FFFD FFFD - FFFD FFFD FFFD FFFD 753E 753D FFFD FFFD - FFFD FFFD 7537 FFFD FFFD FFFD FFFD FFFD - 753B FFFD 753F FFFD FFFD 7540 FFFD FFFD - FFFD FFFD FFFD 7538 753A -End of Item 00E9 - -Begin of Item 00EA - Format 2 - srcBegin = 87E0 - destBegin = 773A -End of Item 00EA - -Begin of Item 00EB - Format 1 - srcBegin = 87EC - srcEnd = 8823 - mappingOffset = 2F8D - Mapping = - 7738 FFFD FFFD 7737 FFFD FFFD 7739 FFFD - FFFD FFFD FFFD FFFD FFFD 7874 FFFD 7871 - FFFD FFFD 7875 FFFD FFFD FFFD FFFD FFFD - FFFD 7872 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7873 FFFD FFFD FFFD FFFD FFFD FFFD - 7A39 7A3A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7B27 FFFD 7B26 7B25 7B24 -End of Item 00EB - -Begin of Item 00EC - Format 1 - srcBegin = 8831 - srcEnd = 8840 - mappingOffset = 2FC5 - Mapping = - 7C47 FFFD FFFD FFFD FFFD 7C66 FFFD FFFD - 7C67 FFFD 7D27 FFFD FFFD FFFD FFFD 4866 -End of Item 00EC - -Begin of Item 00ED - Format 1 - srcBegin = 884C - srcEnd = 889E - mappingOffset = 2FD5 - Mapping = - 4867 534F FFFD FFFD FFFD FFFD FFFD 5D34 - FFFD FFFD FFFD 6179 FFFD 664C FFFD 6E6C - FFFD 6E6D FFFD FFFD FFFD 722F 7C68 4868 - FFFD FFFD FFFD FFFD 4F50 FFFD FFFD 5350 - FFFD FFFD FFFD FFFD 582E FFFD FFFD FFFD - FFFD FFFD FFFD 582F FFFD 5833 FFFD FFFD - FFFD 5832 FFFD FFFD FFFD 5830 5831 FFFD - FFFD FFFD FFFD FFFD 5D36 FFFD FFFD 5D3B - FFFD 5D3A FFFD FFFD FFFD FFFD 5D38 FFFD - FFFD FFFD 5D39 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5D35 -End of Item 00ED - -Begin of Item 00EE - Format 1 - srcBegin = 88AB - srcEnd = 88B1 - mappingOffset = 3028 - Mapping = - 5D37 FFFD FFFD FFFD FFFD FFFD 617C -End of Item 00EE - -Begin of Item 00EF - Format 1 - srcBegin = 88C1 - srcEnd = 8944 - mappingOffset = 302F - Mapping = - 617A 617B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6654 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6656 FFFD 664E 6655 FFFD FFFD 6651 - 664F FFFD FFFD 6650 6652 FFFD 664D FFFD - 6653 FFFD FFFD FFFD FFFD FFFD FFFD 6A7C - FFFD FFFD FFFD FFFD FFFD FFFD 6A7E FFFD - FFFD FFFD 6A76 6A78 FFFD FFFD FFFD 6A7A - 6A79 FFFD FFFD FFFD 6A7B FFFD FFFD FFFD - FFFD 6A77 FFFD FFFD FFFD FFFD 6E6F FFFD - FFFD 6E73 FFFD FFFD FFFD FFFD FFFD 6E6E - FFFD 6E70 6E71 FFFD 6E72 FFFD FFFD FFFD - FFFD 6A7D FFFD FFFD FFFD FFFD FFFD FFFD - 7234 FFFD FFFD FFFD 7232 FFFD FFFD FFFD - FFFD 7230 7233 FFFD FFFD FFFD FFFD FFFD - FFFD 7231 FFFD FFFD FFFD 7542 FFFD 7544 - FFFD FFFD 7541 FFFD 7545 FFFD FFFD FFFD - FFFD FFFD FFFD 7543 -End of Item 00EF - -Begin of Item 00F0 - Format 1 - srcBegin = 8956 - srcEnd = 8972 - mappingOffset = 30B3 - Mapping = - 7878 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7879 7877 7876 FFFD FFFD FFFD 7A3B FFFD - FFFD FFFD FFFD FFFD 7B28 FFFD 7B29 FFFD - FFFD 7B72 FFFD FFFD 7B71 -End of Item 00F0 - -Begin of Item 00F1 - Format 1 - srcBegin = 897F - srcEnd = 89C0 - mappingOffset = 30D0 - Mapping = - 4869 FFFD 5351 FFFD 617D FFFD FFFD 773B - FFFD FFFD FFFD FFFD 4B44 FFFD FFFD FFFD - 5D3D FFFD FFFD FFFD 5D3C FFFD FFFD 617E - FFFD FFFD FFFD FFFD FFFD 6657 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7236 - FFFD FFFD FFFD 7235 FFFD 7546 FFFD FFFD - FFFD FFFD FFFD 773C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7A3C FFFD FFFD 7B2A FFFD - FFFD 7D28 -End of Item 00F1 - -Begin of Item 00F2 - Format 1 - srcBegin = 89D2 - srcEnd = 89D4 - mappingOffset = 3112 - Mapping = - 4B45 FFFD 5352 -End of Item 00F2 - -Begin of Item 00F3 - Format 2 - srcBegin = 89E3 - destBegin = 6658 -End of Item 00F3 - -Begin of Item 00F4 - Format 1 - srcBegin = 89F4 - srcEnd = 8B2C - mappingOffset = 3115 - Mapping = - 773D FFFD FFFD FFFD 7A3D FFFD FFFD FFFD - 7B73 FFFD FFFD FFFD 4B46 FFFD 5354 5355 - FFFD FFFD FFFD FFFD 5353 FFFD 5839 FFFD - 5837 FFFD 5836 583D 5835 583E FFFD 583B - FFFD 5838 583C 583A 5834 FFFD FFFD 5D45 - FFFD 5D3F FFFD 5D44 FFFD FFFD 5D46 5D40 - FFFD 5D41 FFFD FFFD FFFD FFFD 5D3E FFFD - FFFD 5D43 FFFD FFFD FFFD 5D42 FFFD FFFD - 622B FFFD 622D FFFD FFFD FFFD 622C 6221 - 6225 FFFD 666B FFFD FFFD 6226 FFFD FFFD - FFFD FFFD 622A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6229 FFFD FFFD FFFD - 6227 6223 622E FFFD FFFD FFFD FFFD 6228 - FFFD FFFD 6224 FFFD 6222 FFFD 6666 6661 - FFFD FFFD 665C FFFD 666C 665D FFFD 6659 - 6668 6665 6667 FFFD 665E 6663 665A 665B - FFFD FFFD FFFD FFFD FFFD 6669 FFFD 666A - 6660 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6664 FFFD 665F FFFD FFFD FFFD FFFD - 6B22 6B25 FFFD FFFD FFFD 6B2D FFFD 6B27 - FFFD 6E78 FFFD FFFD 6B2C FFFD 6B2E FFFD - FFFD FFFD 6B23 FFFD 6662 6B26 FFFD 6B24 - 6B28 6B2A 6B21 6B2F 6B2B FFFD 6B29 FFFD - FFFD FFFD FFFD FFFD 6F21 FFFD 6E7B FFFD - FFFD FFFD 6F24 FFFD FFFD 6F25 FFFD FFFD - 6E74 FFFD FFFD 6E7E FFFD FFFD 6E7D FFFD - 6E77 FFFD FFFD 6E76 FFFD 6E7C FFFD 6E79 - FFFD 6F23 FFFD FFFD FFFD FFFD 6E75 FFFD - FFFD FFFD 6F22 FFFD FFFD FFFD FFFD 6F26 - 723C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7237 723D FFFD FFFD FFFD 7239 - FFFD 7243 723E FFFD FFFD 723A FFFD 7244 - FFFD FFFD 7245 7242 6E7A FFFD 7238 FFFD - 7246 FFFD 723F FFFD 723B 7240 7241 FFFD - 754E FFFD FFFD FFFD FFFD FFFD 754B FFFD - FFFD FFFD 7547 FFFD 754F FFFD FFFD FFFD - FFFD FFFD FFFD 7548 FFFD 7549 FFFD 754A - FFFD 754D FFFD FFFD 754C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 773E FFFD FFFD 7741 - 7740 -End of Item 00F4 - -Begin of Item 00F5 - Format 1 - srcBegin = 8B39 - srcEnd = 8B9C - mappingOffset = 324E - Mapping = - 773F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 787A FFFD FFFD FFFD FFFD 7923 FFFD FFFD - 787D FFFD FFFD FFFD FFFD 7921 7922 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 787C - 7924 787E FFFD 787B FFFD FFFD 7A42 FFFD - FFFD FFFD FFFD FFFD FFFD 7A40 FFFD FFFD - FFFD FFFD 7A43 7A3F FFFD FFFD 7A41 7A3E - FFFD FFFD FFFD 7B2B FFFD FFFD 7B2C FFFD - FFFD FFFD FFFD FFFD 7B2D FFFD FFFD 7B74 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7C48 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7C6A 7C69 FFFD FFFD 7C6B FFFD FFFD - FFFD 7D34 FFFD 7D3A -End of Item 00F5 - -Begin of Item 00F6 - Format 1 - srcBegin = 8C37 - srcEnd = 8D1B - mappingOffset = 32B2 - Mapping = - 4B47 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7551 FFFD 7550 FFFD FFFD FFFD FFFD 4B48 - FFFD 583F 5D47 FFFD FFFD 6F27 FFFD 6F28 - FFFD 7742 FFFD FFFD FFFD 7D43 4B49 FFFD - FFFD FFFD FFFD 5D48 FFFD FFFD FFFD FFFD - FFFD FFFD 622F 666D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6B30 7247 6F29 7248 FFFD - FFFD FFFD FFFD FFFD 7552 FFFD FFFD FFFD - FFFD FFFD 5841 5840 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6230 FFFD FFFD FFFD FFFD - FFFD FFFD 666F 666E FFFD 6B32 6B31 FFFD - FFFD FFFD FFFD FFFD 7249 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4B4A 5356 - FFFD 5357 5842 5843 FFFD FFFD FFFD FFFD - 5D4E 5D4C 5D49 5D4D 5D4B 5D4A FFFD FFFD - 6231 FFFD FFFD 6674 6233 6238 FFFD 623A - 6239 623C FFFD FFFD 6236 6232 6234 FFFD - 623B 6237 6235 6676 6675 6673 6677 FFFD - 6671 6672 FFFD 6670 FFFD FFFD FFFD FFFD - FFFD FFFD 6B34 6B35 6B33 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6F32 FFFD 6F2B - FFFD 6F2A 6F34 6F30 6F31 6F2D FFFD 6F2C - FFFD FFFD FFFD 6F33 FFFD 6F2E 6F2F FFFD - FFFD FFFD FFFD FFFD FFFD 724A FFFD FFFD - FFFD 7556 FFFD 7553 7557 7555 7554 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7743 FFFD - FFFD 7925 FFFD 7926 FFFD FFFD 7A45 FFFD - 7A44 FFFD FFFD FFFD 7B2E FFFD FFFD 7B75 - 7B76 FFFD FFFD FFFD 7C6D -End of Item 00F6 - -Begin of Item 00F7 - Format 1 - srcBegin = 8D64 - srcEnd = 8DFC - mappingOffset = 3397 - Mapping = - 4B4B FFFD 5D50 5D4F FFFD FFFD FFFD 6B36 - FFFD 6F35 FFFD FFFD 4B4C FFFD FFFD 5359 - 5358 FFFD FFFD 5844 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 623F FFFD FFFD - FFFD 623E FFFD FFFD FFFD FFFD 623D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6B38 FFFD FFFD FFFD 6B37 FFFD FFFD - FFFD FFFD FFFD 6F36 FFFD FFFD FFFD 6F37 - FFFD FFFD FFFD FFFD 7558 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4B4D - 535A FFFD FFFD FFFD FFFD FFFD 5D52 FFFD - FFFD FFFD 5D51 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6247 FFFD FFFD FFFD FFFD 6242 - 6245 FFFD 6240 FFFD FFFD 6244 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6243 6246 - FFFD 6241 FFFD 6679 FFFD 6678 FFFD FFFD - 6721 FFFD 6722 FFFD 667A FFFD 667E FFFD - FFFD FFFD FFFD 667B FFFD FFFD FFFD 667C - FFFD FFFD FFFD FFFD FFFD FFFD 667D FFFD - 6B39 -End of Item 00F7 - -Begin of Item 00F8 - Format 1 - srcBegin = 8E0F - srcEnd = 8E10 - mappingOffset = 3430 - Mapping = - 6F3C 6F39 -End of Item 00F8 - -Begin of Item 00F9 - Format 1 - srcBegin = 8E1D - srcEnd = 8E93 - mappingOffset = 3432 - Mapping = - 6F3A 6F40 6F3E FFFD 6F3F 6F3B FFFD FFFD - FFFD FFFD FFFD FFFD 6F3D FFFD 6F38 FFFD - FFFD FFFD FFFD FFFD 724C FFFD FFFD 724D - 7250 FFFD FFFD FFFD 724F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 724E FFFD 724B - FFFD FFFD FFFD 755B 7559 755C 755A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7749 FFFD FFFD FFFD 7744 FFFD FFFD FFFD - FFFD FFFD 7748 FFFD FFFD FFFD 7745 7747 - FFFD 7746 FFFD FFFD FFFD FFFD FFFD 792B - FFFD FFFD FFFD FFFD FFFD 7928 FFFD 792D - FFFD 792A FFFD FFFD FFFD 792C FFFD 7927 - FFFD FFFD FFFD FFFD 7A47 7A49 FFFD FFFD - 7A48 FFFD 7929 FFFD 7A46 7B2F 7B31 FFFD - 7B30 FFFD FFFD FFFD 7B77 FFFD 7B78 -End of Item 00F9 - -Begin of Item 00FA - Format 1 - srcBegin = 8EA1 - srcEnd = 8EDF - mappingOffset = 34A9 - Mapping = - 7D29 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7D3B 4B4E 5845 FFFD FFFD FFFD FFFD - FFFD 6723 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6F41 FFFD FFFD FFFD FFFD FFFD 774A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4B4F 4F51 535C 535B FFFD 5848 FFFD - FFFD 5846 FFFD 5847 FFFD FFFD FFFD FFFD - FFFD FFFD 5D53 FFFD FFFD FFFD 5D54 -End of Item 00FA - -Begin of Item 00FB - Format 1 - srcBegin = 8EF8 - srcEnd = 8F61 - mappingOffset = 34E8 - Mapping = - 6249 FFFD FFFD 6248 624A FFFD 6726 FFFD - FFFD FFFD FFFD 6724 FFFD FFFD FFFD FFFD - FFFD 6725 6727 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6B3B 6B3D 6B3A 6B3C FFFD FFFD - FFFD FFFD FFFD 6F43 6F48 6F42 6F49 6F44 - FFFD FFFD FFFD FFFD FFFD 6F4A 6F46 FFFD - FFFD 6F45 6F47 FFFD FFFD FFFD FFFD 7252 - FFFD FFFD FFFD 7254 FFFD FFFD FFFD FFFD - 7253 FFFD FFFD 7251 FFFD FFFD 755E 7561 - FFFD FFFD 755F FFFD 755D 7560 FFFD FFFD - FFFD 774B FFFD FFFD FFFD 774C 792F FFFD - FFFD FFFD FFFD FFFD 792E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7B32 - FFFD 7B79 -End of Item 00FB - -Begin of Item 00FC - Format 1 - srcBegin = 8F9B - srcEnd = 8FB2 - mappingOffset = 3552 - Mapping = - 4B50 624B FFFD FFFD 6728 FFFD FFFD FFFD - 6B3E FFFD FFFD 7256 FFFD 7255 FFFD FFFD - FFFD FFFD 7930 7A29 7B33 4B51 5849 6729 -End of Item 00FC - -Begin of Item 00FD - Format 1 - srcBegin = 8FC2 - srcEnd = 8FD4 - mappingOffset = 356A - Mapping = - 4B52 FFFD 4B55 4B54 4B53 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4F52 FFFD FFFD 4F54 - FFFD FFFD 4F53 -End of Item 00FD - -Begin of Item 00FE - Format 1 - srcBegin = 8FE2 - srcEnd = 9095 - mappingOffset = 357D - Mapping = - 535F FFFD 5364 5361 535E FFFD 5365 FFFD - 5360 5363 FFFD 5362 FFFD FFFD 535D FFFD - FFFD FFFD 584F FFFD FFFD 584C 5853 FFFD - 584E FFFD FFFD 5851 FFFD FFFD 584D 584A - FFFD 5850 FFFD 5852 584B FFFD FFFD FFFD - FFFD FFFD FFFD 5D56 FFFD 5D60 5D5C FFFD - FFFD FFFD 5D64 5D5D 5D62 5D58 FFFD 5D55 - 5D57 5D63 FFFD 5D5B 5D5E 5D5A 5D5F FFFD - 5D61 5D59 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 624C FFFD FFFD 624E - 6250 FFFD FFFD 624D 6251 FFFD 624F FFFD - FFFD FFFD 672F FFFD 6737 FFFD FFFD 6738 - 672D FFFD FFFD FFFD FFFD 6732 FFFD FFFD - 672B 672A FFFD 6735 6734 6733 6731 6736 - FFFD 672C 672E 6730 FFFD FFFD 6B40 6B43 - FFFD 6B47 6B41 6B46 6B44 FFFD 6B3F FFFD - 6B45 6B42 FFFD FFFD FFFD FFFD 6F4D 6F4B - FFFD FFFD FFFD 6F4E 6F4C FFFD FFFD FFFD - 725A FFFD 7258 7257 FFFD 6F4F 7259 FFFD - 725C FFFD 725B 7563 FFFD 7562 7567 7565 - 7566 774E 7564 FFFD FFFD 774D 774F FFFD - 7931 7932 FFFD FFFD FFFD 7C4A 7C49 4B57 - FFFD FFFD FFFD 5854 -End of Item 00FE - -Begin of Item 00FF - Format 1 - srcBegin = 90A2 - srcEnd = 90CE - mappingOffset = 3631 - Mapping = - 4B58 4B5B FFFD FFFD 4B5A FFFD FFFD FFFD - 4B59 FFFD FFFD FFFD FFFD FFFD FFFD 4F57 - FFFD FFFD FFFD 4F55 4F58 FFFD 4F56 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5368 - FFFD 5369 FFFD FFFD FFFD FFFD FFFD FFFD - 5366 FFFD FFFD FFFD 5367 -End of Item 00FF - -Begin of Item 0100 - Format 1 - srcBegin = 90DD - srcEnd = 9139 - mappingOffset = 365E - Mapping = - 5856 FFFD FFFD FFFD 5855 5857 FFFD FFFD - FFFD FFFD FFFD 5D65 FFFD FFFD FFFD FFFD - 5D66 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6253 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5D67 6255 FFFD FFFD FFFD 6252 FFFD FFFD - FFFD FFFD FFFD FFFD 6254 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6739 FFFD FFFD - FFFD FFFD 673A 6B49 6B48 FFFD FFFD FFFD - FFFD 6B4A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6F52 FFFD FFFD FFFD FFFD FFFD - 6F51 FFFD FFFD 6F50 6F53 FFFD FFFD 725D - FFFD FFFD FFFD FFFD 7568 -End of Item 0100 - -Begin of Item 0101 - Format 1 - srcBegin = 9148 - srcEnd = 9157 - mappingOffset = 36BB - Mapping = - 7B7A 4B5C 536B 536A 585A 5859 FFFD FFFD - FFFD FFFD 5858 FFFD FFFD FFFD FFFD 5D68 -End of Item 0101 - -Begin of Item 0102 - Format 1 - srcBegin = 9163 - srcEnd = 91F5 - mappingOffset = 36CB - Mapping = - 6256 FFFD 6257 FFFD FFFD FFFD 673D 673C - FFFD 673B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6B4E 6B4B FFFD 6B4D 6B4C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6F57 FFFD FFFD FFFD 6F54 FFFD 6F55 FFFD - 6F56 FFFD FFFD FFFD FFFD FFFD FFFD 725E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 756B FFFD 756A FFFD FFFD FFFD FFFD - 7569 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7750 7751 FFFD 7934 FFFD FFFD 7933 FFFD - FFFD 7A4A FFFD FFFD FFFD FFFD FFFD 7B34 - FFFD FFFD FFFD FFFD FFFD 7C6E 7D2A FFFD - FFFD FFFD 7D3C 4B5D 4F59 FFFD 673E FFFD - 7A4B 4B5E 536C 5D69 6258 7752 4F5A FFFD - FFFD FFFD FFFD FFFD 585D 585B 585F FFFD - FFFD 585E 585C FFFD FFFD FFFD FFFD FFFD - 5D6C FFFD FFFD 5D6B 5D6D FFFD 5D6F FFFD - FFFD FFFD 5D6E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5D6A -End of Item 0102 - -Begin of Item 0103 - Format 1 - srcBegin = 9207 - srcEnd = 9223 - mappingOffset = 375E - Mapping = - 6260 FFFD 625C FFFD FFFD FFFD 625E FFFD - FFFD 625F 6261 FFFD FFFD 6259 625A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 625D - FFFD FFFD FFFD FFFD 625B -End of Item 0103 - -Begin of Item 0104 - Format 1 - srcBegin = 9234 - srcEnd = 9264 - mappingOffset = 377B - Mapping = - 6749 FFFD FFFD 673F 6741 674D FFFD FFFD - FFFD 6742 6744 674E 6743 FFFD FFFD FFFD - FFFD 674C FFFD FFFD FFFD 674A FFFD 6746 - FFFD 674B FFFD FFFD FFFD 6748 FFFD FFFD - FFFD FFFD FFFD 6740 FFFD FFFD 674F 6745 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6747 -End of Item 0104 - -Begin of Item 0105 - Format 1 - srcBegin = 9278 - srcEnd = 9285 - mappingOffset = 37AC - Mapping = - 6B4F FFFD FFFD 6B55 6B59 FFFD FFFD FFFD - 6B51 FFFD FFFD FFFD FFFD 6B52 -End of Item 0105 - -Begin of Item 0106 - Format 1 - srcBegin = 9291 - srcEnd = 929C - mappingOffset = 37BA - Mapping = - 6B5A FFFD 6B56 FFFD FFFD 6B54 FFFD 6B53 - FFFD FFFD FFFD 6B57 -End of Item 0106 - -Begin of Item 0107 - Format 1 - srcBegin = 92A8 - srcEnd = 92D2 - mappingOffset = 37C6 - Mapping = - 6B58 FFFD FFFD FFFD 6B50 FFFD FFFD FFFD - FFFD FFFD 6F63 6F5E FFFD FFFD FFFD 6F5A - FFFD FFFD FFFD 6F59 6F5F FFFD FFFD FFFD - FFFD 6F5D FFFD FFFD FFFD 6F58 FFFD 6F61 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6F60 -End of Item 0107 - -Begin of Item 0108 - Format 1 - srcBegin = 92E4 - srcEnd = 9304 - mappingOffset = 37F1 - Mapping = - 6F5C FFFD FFFD FFFD FFFD FFFD 6F5B FFFD - FFFD FFFD FFFD FFFD 6F62 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7261 FFFD FFFD FFFD - 7265 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7267 -End of Item 0108 - -Begin of Item 0109 - Format 1 - srcBegin = 9310 - srcEnd = 9336 - mappingOffset = 3812 - Mapping = - 7269 FFFD FFFD FFFD FFFD 726C FFFD FFFD - 7573 726E 7268 FFFD FFFD FFFD FFFD FFFD - 725F 726B 7264 FFFD FFFD FFFD 726A FFFD - 756E FFFD FFFD 7266 FFFD FFFD 726D 7263 - FFFD FFFD FFFD 7262 FFFD FFFD 7260 -End of Item 0109 - -Begin of Item 010A - Format 1 - srcBegin = 934A - srcEnd = 93B3 - mappingOffset = 3839 - Mapping = - 7570 7572 FFFD 756C FFFD FFFD FFFD FFFD - FFFD FFFD 7579 FFFD FFFD FFFD FFFD FFFD - 7578 7576 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7571 FFFD FFFD FFFD FFFD - FFFD FFFD 7575 FFFD FFFD FFFD 7577 FFFD - FFFD FFFD FFFD 756F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7574 FFFD FFFD FFFD - 756D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7754 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7753 FFFD 7755 775D 775B FFFD - 775C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7756 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7759 FFFD 7758 FFFD 775A FFFD - FFFD 7757 -End of Item 010A - -Begin of Item 010B - Format 1 - srcBegin = 93C3 - srcEnd = 93E8 - mappingOffset = 38A3 - Mapping = - 7938 FFFD FFFD FFFD FFFD 7939 FFFD FFFD - FFFD FFFD 793E FFFD FFFD FFFD 7936 FFFD - FFFD FFFD FFFD 793C 7941 793F FFFD FFFD - FFFD 793A 793B FFFD 7937 FFFD 7935 793D - FFFD 7940 FFFD FFFD FFFD 7942 -End of Item 010B - -Begin of Item 010C - Format 1 - srcBegin = 93FD - srcEnd = 9403 - mappingOffset = 38C9 - Mapping = - 7A4E FFFD FFFD FFFD FFFD FFFD 7A4D -End of Item 010C - -Begin of Item 010D - Format 2 - srcBegin = 9418 - destBegin = 7A4C -End of Item 010D - -Begin of Item 010E - Format 1 - srcBegin = 942B - srcEnd = 9444 - mappingOffset = 38D0 - Mapping = - 7B3B FFFD FFFD 7B35 FFFD FFFD FFFD 7B3A - 7B36 FFFD 7B37 FFFD FFFD 7B39 FFFD 7B38 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7B7B -End of Item 010E - -Begin of Item 010F - Format 1 - srcBegin = 9451 - srcEnd = 9452 - mappingOffset = 38EA - Mapping = - 7B7C 7B7D -End of Item 010F - -Begin of Item 0110 - Format 1 - srcBegin = 9460 - srcEnd = 947F - mappingOffset = 38EC - Mapping = - 7C4C FFFD FFFD 7C4B 7C4D FFFD FFFD FFFD - FFFD FFFD 7C6F FFFD FFFD FFFD FFFD FFFD - 7D2C FFFD 7D2B FFFD FFFD FFFD FFFD 7D35 - FFFD FFFD FFFD FFFD 7D3F 7D3D 7D3E 7D44 -End of Item 0110 - -Begin of Item 0111 - Format 1 - srcBegin = 9577 - srcEnd = 95E2 - mappingOffset = 390C - Mapping = - 4F5B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4F5C FFFD 536D 5860 FFFD FFFD FFFD - FFFD FFFD 5D70 FFFD 6264 FFFD FFFD 6268 - 6263 FFFD 6265 6267 6266 6262 FFFD FFFD - FFFD 6750 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6B5B FFFD 6B5E 6B60 6B5F FFFD - FFFD 6B5C 6B5D FFFD FFFD FFFD 6F64 FFFD - FFFD FFFD 6F65 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 726F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 757E - FFFD 757D FFFD 757A 757B 757C FFFD FFFD - FFFD 7760 FFFD FFFD FFFD 775E 7761 775F - FFFD FFFD FFFD FFFD FFFD 7943 FFFD FFFD - FFFD FFFD 7A4F 7B3C -End of Item 0111 - -Begin of Item 0112 - Format 1 - srcBegin = 961C - srcEnd = 97AD - mappingOffset = 3978 - Mapping = - 4F5D FFFD FFFD FFFD FFFD 486A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4B62 FFFD - 4B63 FFFD 4B60 FFFD FFFD 4B61 4B5F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4F60 - FFFD FFFD FFFD 4F5F 4F5E FFFD 4F62 FFFD - 4F61 FFFD FFFD FFFD FFFD FFFD FFFD 536F - 5370 5371 FFFD FFFD 536E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5867 FFFD FFFD 5864 - FFFD 5865 5868 FFFD FFFD 5863 5861 5862 - 5866 FFFD FFFD FFFD FFFD FFFD 5D71 FFFD - 5D79 FFFD FFFD FFFD 5D75 FFFD 6270 5D73 - 5D76 5D72 5D77 5D78 5D74 FFFD FFFD FFFD - FFFD 626C FFFD FFFD FFFD FFFD FFFD FFFD - 6271 626D 626E FFFD FFFD FFFD 6269 626B - FFFD 626F 626A FFFD FFFD FFFD FFFD FFFD - 6752 6753 FFFD FFFD 6751 6B61 FFFD 6B63 - 6B62 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7270 7271 FFFD 7272 FFFD - FFFD FFFD FFFD FFFD FFFD 7621 FFFD FFFD - 7944 FFFD FFFD FFFD 7622 4F63 FFFD 5869 - FFFD FFFD FFFD FFFD 5D7A 6272 FFFD FFFD - 6274 6273 6275 6276 FFFD 6756 6757 6755 - 6B64 6754 FFFD FFFD FFFD FFFD 6B65 FFFD - FFFD 7273 7623 FFFD FFFD 7764 FFFD 7765 - 7763 FFFD 7766 FFFD FFFD FFFD 7762 7945 - FFFD FFFD FFFD FFFD 4F64 5D7C 5D7B FFFD - FFFD FFFD FFFD 6277 FFFD FFFD 6278 FFFD - FFFD FFFD 675B 6758 FFFD 675A FFFD 6759 - FFFD FFFD FFFD FFFD 6B66 FFFD FFFD FFFD - 6F66 FFFD 6F67 6F68 FFFD 6F69 FFFD FFFD - FFFD 7277 7274 7279 FFFD 7275 FFFD 7278 - FFFD FFFD 7276 FFFD FFFD FFFD FFFD FFFD - 7624 FFFD 7625 FFFD FFFD FFFD FFFD FFFD - 7767 FFFD FFFD 7947 FFFD FFFD 7946 FFFD - FFFD FFFD FFFD FFFD 7A50 FFFD 7B3F FFFD - FFFD FFFD FFFD FFFD 7B3D 7B3E FFFD FFFD - FFFD 7B7E 7C21 FFFD FFFD FFFD 7C70 FFFD - 7C72 FFFD FFFD FFFD 7C71 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4F65 FFFD - FFFD FFFD 675C FFFD FFFD FFFD FFFD 727A - 727B FFFD 4F66 FFFD 6F6A 7948 5372 FFFD - FFFD FFFD 727C FFFD 7C4E 5373 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 675D FFFD 675E FFFD FFFD FFFD FFFD FFFD - 6B67 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6B68 FFFD FFFD FFFD FFFD FFFD 6F6C - FFFD 6F6B FFFD 6F6D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 727D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7626 FFFD FFFD 7768 - FFFD FFFD 7769 FFFD FFFD FFFD FFFD FFFD - FFFD 776A -End of Item 0112 - -Begin of Item 0113 - Format 1 - srcBegin = 97C1 - srcEnd = 97DC - mappingOffset = 3B0A - Mapping = - 7C23 FFFD 7C22 FFFD FFFD 7C73 FFFD FFFD - 7D36 FFFD 5374 6279 FFFD FFFD FFFD FFFD - FFFD FFFD 7627 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7949 -End of Item 0113 - -Begin of Item 0114 - Format 1 - srcBegin = 97ED - srcEnd = 9871 - mappingOffset = 3B26 - Mapping = - 5375 FFFD FFFD FFFD FFFD FFFD 5376 FFFD - FFFD 6B69 FFFD FFFD 776B FFFD 794A FFFD - FFFD FFFD 7B40 FFFD 5377 5E21 5E22 FFFD - 627A 627B FFFD 627C FFFD 6762 FFFD 6764 - FFFD FFFD FFFD 675F 6760 6763 6761 FFFD - FFFD FFFD 6B6A 6B6B FFFD FFFD FFFD 6F70 - FFFD FFFD FFFD FFFD 6F6E FFFD FFFD 7326 - FFFD FFFD FFFD FFFD FFFD FFFD 6F6F FFFD - 7324 FFFD FFFD 727E FFFD FFFD FFFD FFFD - FFFD FFFD 7323 7321 7325 FFFD 7322 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7628 FFFD FFFD FFFD FFFD FFFD 776E - 776C 776F 776D FFFD FFFD FFFD 7770 FFFD - FFFD FFFD FFFD 794C FFFD FFFD 794D FFFD - FFFD 794B FFFD FFFD FFFD FFFD FFFD FFFD - 7B42 FFFD 7B41 FFFD FFFD FFFD 7C24 FFFD - FFFD FFFD 7C4F 7C74 7D2D -End of Item 0114 - -Begin of Item 0115 - Format 1 - srcBegin = 98A8 - srcEnd = 98C4 - mappingOffset = 3BAB - Mapping = - 5378 FFFD FFFD FFFD FFFD FFFD FFFD 6B6C - FFFD 6B6D FFFD 6F71 FFFD FFFD 7629 FFFD - FFFD FFFD 7771 FFFD 794E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7A51 -End of Item 0115 - -Begin of Item 0116 - Format 1 - srcBegin = 98DB - srcEnd = 995E - mappingOffset = 3BC8 - Mapping = - 5379 FFFD FFFD FFFD 537A FFFD FFFD 586A - FFFD FFFD FFFD FFFD 627D FFFD 6322 627E - FFFD FFFD 6324 FFFD 6321 FFFD FFFD 6323 - FFFD 6766 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6765 6767 6768 FFFD FFFD FFFD FFFD - 6B6E FFFD 6B6F FFFD FFFD FFFD 6B71 6F72 - FFFD 6B70 FFFD FFFD FFFD 7327 FFFD 6F74 - 6F73 FFFD FFFD FFFD FFFD 6F75 FFFD 732C - 732A FFFD FFFD 7329 FFFD FFFD 732B FFFD - FFFD FFFD FFFD FFFD FFFD 7328 FFFD FFFD - FFFD FFFD FFFD 7775 FFFD FFFD FFFD FFFD - FFFD FFFD 762A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7774 7772 7773 FFFD FFFD FFFD - FFFD FFFD 794F FFFD FFFD FFFD 7950 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7A53 7A52 - FFFD FFFD 7C25 FFFD 7B43 FFFD FFFD FFFD - FFFD 7C50 FFFD 7D2E -End of Item 0116 - -Begin of Item 0117 - Format 1 - srcBegin = 9996 - srcEnd = 9999 - mappingOffset = 3C4C - Mapping = - 537B FFFD FFFD 537C -End of Item 0117 - -Begin of Item 0118 - Format 1 - srcBegin = 99A5 - srcEnd = 99B4 - mappingOffset = 3C50 - Mapping = - 7776 FFFD FFFD 7A54 FFFD FFFD FFFD 586B - 6326 6325 FFFD FFFD 676A FFFD 6769 676B -End of Item 0118 - -Begin of Item 0119 - Format 2 - srcBegin = 99C1 - destBegin = 6B72 -End of Item 0119 - -Begin of Item 011A - Format 1 - srcBegin = 99D0 - srcEnd = 99F1 - mappingOffset = 3C60 - Mapping = - 6F77 6F7A 6F7C FFFD FFFD 6F7B FFFD FFFD - FFFD 6F7D FFFD 6F79 FFFD 6F76 FFFD 6F78 - FFFD FFFD 732E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 732D FFFD FFFD - FFFD 732F -End of Item 011A - -Begin of Item 011B - Format 1 - srcBegin = 99FF - srcEnd = 9A01 - mappingOffset = 3C82 - Mapping = - 762C FFFD 762B -End of Item 011B - -Begin of Item 011C - Format 1 - srcBegin = 9A0E - srcEnd = 9A19 - mappingOffset = 3C85 - Mapping = - 7777 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7951 FFFD FFFD 7952 -End of Item 011C - -Begin of Item 011D - Format 1 - srcBegin = 9A2B - srcEnd = 9A6A - mappingOffset = 3C91 - Mapping = - 7A55 FFFD FFFD FFFD FFFD 7A56 FFFD FFFD - FFFD FFFD 7A58 FFFD 7A57 FFFD FFFD FFFD - FFFD FFFD FFFD 7B47 FFFD 7B46 FFFD FFFD - 7B45 FFFD 7B44 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7C27 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7C26 FFFD 7C53 FFFD FFFD 7C51 - 7C52 FFFD FFFD FFFD 7C75 FFFD FFFD 7D37 - FFFD FFFD 7D38 FFFD FFFD FFFD FFFD 7D47 -End of Item 011D - -Begin of Item 011E - Format 1 - srcBegin = 9AA8 - srcEnd = 9AC1 - mappingOffset = 3CD1 - Mapping = - 586C FFFD FFFD FFFD FFFD FFFD FFFD 6B73 - 6B74 FFFD FFFD FFFD FFFD FFFD FFFD 6F7E - 7330 FFFD FFFD FFFD 7331 FFFD FFFD FFFD - FFFD 7778 -End of Item 011E - -Begin of Item 011F - Format 1 - srcBegin = 9ACF - srcEnd = 9AEF - mappingOffset = 3CEB - Mapping = - 7B48 FFFD 7C56 7C28 7C54 7C55 FFFD 7D2F - FFFD 586D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 676C FFFD FFFD FFFD FFFD 6B75 - FFFD FFFD FFFD FFFD FFFD FFFD 7333 7021 - 7022 -End of Item 011F - -Begin of Item 0120 - Format 1 - srcBegin = 9AFB - srcEnd = 9B0D - mappingOffset = 3D0C - Mapping = - 7332 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7779 FFFD FFFD 777A FFFD FFFD FFFD FFFD - FFFD FFFD 7953 -End of Item 0120 - -Begin of Item 0121 - Format 1 - srcBegin = 9B1A - srcEnd = 9B5A - mappingOffset = 3D1F - Mapping = - 7C29 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7C76 7D30 FFFD 586E FFFD 7023 7334 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7D48 - 586F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5870 FFFD FFFD FFFD FFFD 6B76 - 6B77 FFFD 7025 7024 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 777D 777C 777B FFFD 7B4A - FFFD FFFD 7B49 FFFD FFFD FFFD 7C77 FFFD - 5E23 -End of Item 0121 - -Begin of Item 0122 - Format 1 - srcBegin = 9B6F - srcEnd = 9B77 - mappingOffset = 3D60 - Mapping = - 7027 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7026 -End of Item 0122 - -Begin of Item 0123 - Format 2 - srcBegin = 9B91 - destBegin = 7335 -End of Item 0123 - -Begin of Item 0124 - Format 1 - srcBegin = 9BAA - srcEnd = 9BAE - mappingOffset = 3D69 - Mapping = - 762F 762E FFFD 7630 762D -End of Item 0124 - -Begin of Item 0125 - Format 1 - srcBegin = 9BC0 - srcEnd = 9BCA - mappingOffset = 3D6E - Mapping = - 7824 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7823 7821 777E -End of Item 0125 - -Begin of Item 0126 - Format 1 - srcBegin = 9BD6 - srcEnd = 9BDB - mappingOffset = 3D79 - Mapping = - 7956 FFFD FFFD FFFD FFFD 7957 -End of Item 0126 - -Begin of Item 0127 - Format 1 - srcBegin = 9BE7 - srcEnd = 9BE8 - mappingOffset = 3D7F - Mapping = - 7955 7954 -End of Item 0127 - -Begin of Item 0128 - Format 2 - srcBegin = 9BFD - destBegin = 7822 -End of Item 0128 - -Begin of Item 0129 - Format 1 - srcBegin = 9C0D - srcEnd = 9C13 - mappingOffset = 3D81 - Mapping = - 7A5A FFFD FFFD FFFD FFFD FFFD 7A59 -End of Item 0129 - -Begin of Item 012A - Format 1 - srcBegin = 9C25 - srcEnd = 9C5F - mappingOffset = 3D88 - Mapping = - 7B4C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7B4B FFFD FFFD FFFD 7C2B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7C2D FFFD - FFFD 7C2C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7C2A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7C57 - FFFD 7C59 7C58 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7C78 -End of Item 012A - -Begin of Item 012B - Format 1 - srcBegin = 9C77 - srcEnd = 9C78 - mappingOffset = 3DC3 - Mapping = - 7D40 7D41 -End of Item 012B - -Begin of Item 012C - Format 1 - srcBegin = 9CE5 - srcEnd = 9CF6 - mappingOffset = 3DC5 - Mapping = - 5E24 FFFD FFFD FFFD 676D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6B7A 6B78 - FFFD 6B79 -End of Item 012C - -Begin of Item 012D - Format 1 - srcBegin = 9D03 - srcEnd = 9D28 - mappingOffset = 3DD7 - Mapping = - 702A FFFD FFFD 7028 FFFD FFFD 7029 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 733A - FFFD FFFD 7336 FFFD FFFD FFFD FFFD FFFD - 733B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7337 FFFD FFFD 7338 FFFD 7339 -End of Item 012D - -Begin of Item 012E - Format 1 - srcBegin = 9D3B - srcEnd = 9D3F - mappingOffset = 3DFD - Mapping = - 7631 FFFD FFFD FFFD 7632 -End of Item 012E - -Begin of Item 012F - Format 2 - srcBegin = 9D51 - destBegin = 7825 -End of Item 012F - -Begin of Item 0130 - Format 1 - srcBegin = 9D5D - srcEnd = 9D72 - mappingOffset = 3E02 - Mapping = - 7826 FFFD FFFD 7827 7959 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 795B FFFD 795C - FFFD FFFD FFFD FFFD FFFD 795A -End of Item 0130 - -Begin of Item 0131 - Format 2 - srcBegin = 9D89 - destBegin = 7958 -End of Item 0131 - -Begin of Item 0132 - Format 1 - srcBegin = 9DAF - srcEnd = 9DC2 - mappingOffset = 3E18 - Mapping = - 7B4D FFFD FFFD FFFD FFFD 7B4E FFFD FFFD - FFFD 7B50 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7B4F -End of Item 0132 - -Begin of Item 0133 - Format 1 - srcBegin = 9DD3 - srcEnd = 9DD7 - mappingOffset = 3E2C - Mapping = - 7C2E FFFD FFFD FFFD 7C2F -End of Item 0133 - -Begin of Item 0134 - Format 2 - srcBegin = 9DE5 - destBegin = 7C5A -End of Item 0134 - -Begin of Item 0135 - Format 1 - srcBegin = 9DF9 - srcEnd = 9DFA - mappingOffset = 3E31 - Mapping = - 7C79 7C7A -End of Item 0135 - -Begin of Item 0136 - Format 1 - srcBegin = 9E1A - srcEnd = 9E1E - mappingOffset = 3E33 - Mapping = - 7D45 7D49 FFFD FFFD 7D4A -End of Item 0136 - -Begin of Item 0137 - Format 1 - srcBegin = 9E75 - srcEnd = 9EF7 - mappingOffset = 3E38 - Mapping = - 5E25 FFFD FFFD FFFD 7A5B FFFD FFFD 7C7B - 7C7C FFFD 5E26 FFFD FFFD 676E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7633 FFFD - FFFD FFFD FFFD FFFD FFFD 795D 795F FFFD - FFFD FFFD 795E FFFD FFFD FFFD FFFD FFFD - 7B51 FFFD 7C5B FFFD FFFD FFFD FFFD FFFD - 5E27 FFFD FFFD FFFD 702B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7960 - 7A5C FFFD FFFD FFFD FFFD FFFD 5E28 6B7B - FFFD 702C FFFD FFFD FFFD FFFD 6327 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7D31 - 6328 702D 7634 FFFD 6329 FFFD FFFD 733D - FFFD FFFD FFFD 733C FFFD FFFD 7638 7636 - 7637 7635 FFFD 7828 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7A5D FFFD FFFD FFFD FFFD - FFFD FFFD 7B52 FFFD FFFD FFFD FFFD 7C5C - FFFD FFFD 7D42 -End of Item 0137 - -Begin of Item 0138 - Format 1 - srcBegin = 9F07 - srcEnd = 9F20 - mappingOffset = 3EBB - Mapping = - 7C7D FFFD FFFD FFFD FFFD FFFD FFFD 676F - FFFD FFFD FFFD FFFD 6770 FFFD 7829 FFFD - FFFD FFFD 7B53 FFFD FFFD FFFD FFFD FFFD - FFFD 6771 -End of Item 0138 - -Begin of Item 0139 - Format 1 - srcBegin = 9F2C - srcEnd = 9F3E - mappingOffset = 3ED5 - Mapping = - 782A FFFD FFFD 7A5E FFFD FFFD FFFD FFFD - 7C30 FFFD FFFD FFFD FFFD FFFD FFFD 6B7C - FFFD FFFD 7639 -End of Item 0139 - -Begin of Item 013A - Format 1 - srcBegin = 9F4A - srcEnd = 9F77 - mappingOffset = 3EE8 - Mapping = - 6B7D 763A FFFD FFFD FFFD FFFD FFFD FFFD - 702F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7B54 FFFD FFFD 7A5F FFFD 7A61 - FFFD 7A60 FFFD FFFD 7B55 7B56 FFFD FFFD - 7C32 FFFD 7C31 FFFD FFFD FFFD FFFD FFFD - 7D21 FFFD FFFD FFFD FFFD 7C7E -End of Item 013A - -Begin of Item 013B - Format 1 - srcBegin = 9F8D - srcEnd = 9F9C - mappingOffset = 3F16 - Mapping = - 733E FFFD FFFD 7832 FFFD FFFD FFFD 7C33 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 733F -End of Item 013B - -Begin of Item 013C - Format 1 - srcBegin = FE30 - srcEnd = FE6B - mappingOffset = 3F26 - Mapping = - 212B 2136 2138 FFFD FFFD 2140 2141 2144 - 2145 2148 2149 214C 214D 2150 2151 2154 - 2155 2158 2159 215C 215D FFFD FFFD FFFD - FFFD 2227 2228 222B 222C 2229 222A FFFD - 212E 212F 2130 FFFD 2132 2133 2134 2135 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 222D - 222E 222F 223F 2240 2241 2243 2242 FFFD - 2262 226C 226D 226E -End of Item 013C - -Begin of Item 013D - Format 1 - srcBegin = FF01 - srcEnd = FF20 - mappingOffset = 3F62 - Mapping = - 212A FFFD 216C 2263 2268 216D FFFD 213E - 213F 216E 2230 2122 2231 2125 225F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2128 2127 2236 2238 2237 2129 2269 -End of Item 013D - -Begin of Item 013E - Format 1 - srcBegin = FF3C - srcEnd = FF3F - mappingOffset = 3F82 - Mapping = - 2260 FFFD FFFD 2225 -End of Item 013E - -Begin of Item 013F - Format 1 - srcBegin = FF5B - srcEnd = FF5D - mappingOffset = 3F86 - Mapping = - 2142 225E 2143 -End of Item 013F - -Begin of Item 0140 - Format 1 - srcBegin = FFE0 - srcEnd = FFE5 - mappingOffset = 3F89 - Mapping = - 2266 2267 FFFD FFFD FFFD 2264 -End of Item 0140 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0141, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0055, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0418, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0011 */ -/* Total of Format 1 : 0x0117 */ -/* Total of Format 2 : 0x0019 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x2210, 0x1121, 0x2111, 0x2221, -0x1121, 0x1111, 0x1221, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1112, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1121, 0x1211, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x2111, 0x1111, 0x1111, 0x1112, 0x1111, 0x1111, -0x1111, 0x1111, 0x1211, 0x1111, 0x2111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1121, 0x1111, 0x1111, 0x1121, 0x1111, -0x2111, 0x1111, 0x1112, 0x2111, 0x1121, 0x1112, 0x1111, 0x1111, -0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0055 Start of MapCell Array */ -/* 0000 */ 0x0391, 0x039A, 0x2475, -/* 0001 */ 0x039B, 0x03A1, 0x2521, -/* 0002 */ 0x03A3, 0x03A9, 0x2528, -/* 0003 */ 0x03B1, 0x03C1, 0x252F, -/* 0004 */ 0x03C3, 0x03C9, 0x2540, -/* 0005 */ 0x2160, 0x2169, 0x242B, -/* 0006 */ 0x2170, 0x2179, 0x2635, -/* 0007 */ 0x2400, 0x241F, 0x4221, -/* 0008 */ 0x2460, 0x2469, 0x2621, -/* 0009 */ 0x2474, 0x247D, 0x262B, -/* 000A */ 0x2581, 0x2588, 0x2324, -/* 000B */ 0x3021, 0x3029, 0x2435, -/* 000C */ 0x3105, 0x3129, 0x2547, -/* 000D */ 0xFE59, 0xFE5E, 0x215E, -/* 000E */ 0xFF10, 0xFF19, 0x2421, -/* 000F */ 0xFF21, 0xFF3A, 0x2441, -/* 0010 */ 0xFF41, 0xFF5A, 0x245B, -/* 0011 */ 0x00A7, 0x00B7, 0x0000, -/* 0012 */ 0x00D7, 0x0000, 0x2232, -/* 0013 */ 0x00F7, 0x0000, 0x2233, -/* 0014 */ 0x02C7, 0x02CB, 0x0011, -/* 0015 */ 0x02D9, 0x0000, 0x256C, -/* 0016 */ 0x2013, 0x2026, 0x0016, -/* 0017 */ 0x2032, 0x203E, 0x002A, -/* 0018 */ 0x2103, 0x2109, 0x0037, -/* 0019 */ 0x2190, 0x2199, 0x003E, -/* 001A */ 0x2215, 0x223C, 0x0048, -/* 001B */ 0x2252, 0x0000, 0x223D, -/* 001C */ 0x2260, 0x2267, 0x0070, -/* 001D */ 0x22A5, 0x0000, 0x2247, -/* 001E */ 0x22BF, 0x0000, 0x224A, -/* 001F */ 0x2421, 0x0000, 0x4241, -/* 0020 */ 0x2500, 0x253C, 0x0078, -/* 0021 */ 0x2550, 0x0000, 0x2344, -/* 0022 */ 0x255E, 0x2573, 0x00B5, -/* 0023 */ 0x2589, 0x25A1, 0x00CB, -/* 0024 */ 0x25B2, 0x25CF, 0x00E4, -/* 0025 */ 0x25E2, 0x25E5, 0x0102, -/* 0026 */ 0x2605, 0x2609, 0x0106, -/* 0027 */ 0x2640, 0x2642, 0x010B, -/* 0028 */ 0x3000, 0x301E, 0x010E, -/* 0029 */ 0x30FB, 0x0000, 0x2126, -/* 002A */ 0x32A3, 0x0000, 0x2221, -/* 002B */ 0x338E, 0x338F, 0x012D, -/* 002C */ 0x339C, 0x33A1, 0x012F, -/* 002D */ 0x33C4, 0x33D5, 0x0135, -/* 002E */ 0x4E00, 0x4F19, 0x0147, -/* 002F */ 0x4F2F, 0x4F9D, 0x0261, -/* 0030 */ 0x4FAE, 0x4FE1, 0x02D0, -/* 0031 */ 0x4FEE, 0x502D, 0x0304, -/* 0032 */ 0x503C, 0x51CD, 0x0344, -/* 0033 */ 0x51DC, 0x51E1, 0x04D6, -/* 0034 */ 0x51F0, 0x525D, 0x04DC, -/* 0035 */ 0x5269, 0x52AC, 0x054A, -/* 0036 */ 0x52BB, 0x5384, 0x058E, -/* 0037 */ 0x539A, 0x544E, 0x0658, -/* 0038 */ 0x5462, 0x549A, 0x070D, -/* 0039 */ 0x54A6, 0x54CE, 0x0746, -/* 003A */ 0x54E1, 0x5514, 0x076F, -/* 003B */ 0x5527, 0x556A, 0x07A3, -/* 003C */ 0x557B, 0x563F, 0x07E7, -/* 003D */ 0x564E, 0x5695, 0x08AC, -/* 003E */ 0x56A5, 0x5751, 0x08F4, -/* 003F */ 0x5761, 0x576A, 0x09A1, -/* 0040 */ 0x5777, 0x5793, 0x09AB, -/* 0041 */ 0x57A0, 0x57AE, 0x09C8, -/* 0042 */ 0x57C2, 0x57E4, 0x09D7, -/* 0043 */ 0x57F7, 0x580A, 0x09FA, -/* 0044 */ 0x581D, 0x5835, 0x0A0E, -/* 0045 */ 0x584A, 0x58FD, 0x0A27, -/* 0046 */ 0x590F, 0x59EC, 0x0ADB, -/* 0047 */ 0x59FB, 0x5A29, 0x0BB9, -/* 0048 */ 0x5A36, 0x5A4A, 0x0BE8, -/* 0049 */ 0x5A5A, 0x5A6A, 0x0BFD, -/* 004A */ 0x5A77, 0x5A7F, 0x0C0E, -/* 004B */ 0x5A92, 0x5A9B, 0x0C17, -/* 004C */ 0x5AA7, 0x5AE9, 0x0C21, -/* 004D */ 0x5AF5, 0x5AFB, 0x0C64, -/* 004E */ 0x5B08, 0x5B0C, 0x0C6B, -/* 004F */ 0x5B1D, 0x5B43, 0x0C70, -/* 0050 */ 0x5B50, 0x5C79, 0x0C97, -/* 0051 */ 0x5C8C, 0x5C94, 0x0DC1, -/* 0052 */ 0x5CA1, 0x5CB8, 0x0DCA, -/* 0053 */ 0x5CD2, 0x5CD9, 0x0DE2, -/* 0054 */ 0x5CE8, 0x5D34, 0x0DEA, -/* 0055 */ 0x5D47, 0x5D50, 0x0E37, -/* 0056 */ 0x5D69, 0x5D6F, 0x0E41, -/* 0057 */ 0x5D84, 0x5D87, 0x0E48, -/* 0058 */ 0x5D94, 0x5D9D, 0x0E4C, -/* 0059 */ 0x5DB8, 0x5DBD, 0x0E56, -/* 005A */ 0x5DC9, 0x5FFF, 0x0E5C, -/* 005B */ 0x600E, 0x6035, 0x1093, -/* 005C */ 0x6043, 0x6070, 0x10BB, -/* 005D */ 0x607F, 0x6127, 0x10E9, -/* 005E */ 0x6134, 0x61CD, 0x1192, -/* 005F */ 0x61E3, 0x61E6, 0x122C, -/* 0060 */ 0x61F2, 0x6298, 0x1230, -/* 0061 */ 0x62A8, 0x62DC, 0x12D7, -/* 0062 */ 0x62EC, 0x6316, 0x130C, -/* 0063 */ 0x6328, 0x6355, 0x1337, -/* 0064 */ 0x6367, 0x63AC, 0x1365, -/* 0065 */ 0x63C0, 0x63F9, 0x13AB, -/* 0066 */ 0x6406, 0x641E, 0x13E5, -/* 0067 */ 0x642A, 0x643E, 0x13FE, -/* 0068 */ 0x6451, 0x647B, 0x1413, -/* 0069 */ 0x6487, 0x6631, 0x143E, -/* 006A */ 0x6641, 0x66C9, 0x15E9, -/* 006B */ 0x66D6, 0x679D, 0x1672, -/* 006C */ 0x67AF, 0x67B8, 0x173A, -/* 006D */ 0x67C4, 0x67FF, 0x1744, -/* 006E */ 0x6813, 0x682A, 0x1780, -/* 006F */ 0x6838, 0x6854, 0x1798, -/* 0070 */ 0x6876, 0x6886, 0x17B5, -/* 0071 */ 0x6893, 0x68B5, 0x17C6, -/* 0072 */ 0x68C4, 0x6912, 0x17E9, -/* 0073 */ 0x6930, 0x0000, 0x644C, -/* 0074 */ 0x694A, 0x6986, 0x1838, -/* 0075 */ 0x6994, 0x69D3, 0x1875, -/* 0076 */ 0x69E8, 0x6A23, 0x18B5, -/* 0077 */ 0x6A35, 0x6A4B, 0x18F1, -/* 0078 */ 0x6A58, 0x6A6B, 0x1908, -/* 0079 */ 0x6A7E, 0x6A84, 0x191C, -/* 007A */ 0x6A90, 0x6AC3, 0x1923, -/* 007B */ 0x6AD3, 0x6AEC, 0x1957, -/* 007C */ 0x6AFA, 0x6B23, 0x1971, -/* 007D */ 0x6B32, 0x6B8A, 0x199B, -/* 007E */ 0x6B96, 0x6B98, 0x19F4, -/* 007F */ 0x6BA4, 0x6BDB, 0x19F7, -/* 0080 */ 0x6BEB, 0x6BEF, 0x1A2F, -/* 0081 */ 0x6BFD, 0x6C9B, 0x1A34, -/* 0082 */ 0x6CAB, 0x6CF5, 0x1AD3, -/* 0083 */ 0x6D0B, 0x6D41, 0x1B1E, -/* 0084 */ 0x6D59, 0x6D79, 0x1B55, -/* 0085 */ 0x6D85, 0x6D95, 0x1B76, -/* 0086 */ 0x6DAA, 0x6E05, 0x1B87, -/* 0087 */ 0x6E19, 0x6E72, 0x1BE3, -/* 0088 */ 0x6E89, 0x6ED5, 0x1C3D, -/* 0089 */ 0x6EEC, 0x6F3F, 0x1C8A, -/* 008A */ 0x6F51, 0x6FC3, 0x1CDE, -/* 008B */ 0x6FD5, 0x7032, 0x1D51, -/* 008C */ 0x703E, 0x0000, 0x7974, -/* 008D */ 0x704C, 0x707D, 0x1DAF, -/* 008E */ 0x708A, 0x70BA, 0x1DE1, -/* 008F */ 0x70C8, 0x70FD, 0x1E12, -/* 0090 */ 0x7109, 0x710A, 0x1E48, -/* 0091 */ 0x7119, 0x7136, 0x1E4A, -/* 0092 */ 0x7146, 0x716E, 0x1E68, -/* 0093 */ 0x717D, 0x721B, 0x1E91, -/* 0094 */ 0x7228, 0x7284, 0x1F30, -/* 0095 */ 0x7292, 0x72AF, 0x1F8D, -/* 0096 */ 0x72C0, 0x72E9, 0x1FAB, -/* 0097 */ 0x72F7, 0x72FD, 0x1FD5, -/* 0098 */ 0x7313, 0x7357, 0x1FDC, -/* 0099 */ 0x7368, 0x73CD, 0x2021, -/* 009A */ 0x73DE, 0x73EE, 0x2087, -/* 009B */ 0x73FE, 0x740D, 0x2098, -/* 009C */ 0x741B, 0x7441, 0x20A8, -/* 009D */ 0x7455, 0x7470, 0x20CF, -/* 009E */ 0x747E, 0x748B, 0x20EB, -/* 009F */ 0x7498, 0x74B0, 0x20F9, -/* 00A0 */ 0x74BD, 0x74E9, 0x2112, -/* 00A1 */ 0x74F6, 0x74F7, 0x213F, -/* 00A2 */ 0x7504, 0x753D, 0x2141, -/* 00A3 */ 0x754B, 0x75E3, 0x217B, -/* 00A4 */ 0x75F0, 0x7613, 0x2214, -/* 00A5 */ 0x761F, 0x769A, 0x2238, -/* 00A6 */ 0x76AE, 0x770B, 0x22B4, -/* 00A7 */ 0x771F, 0x7729, 0x2312, -/* 00A8 */ 0x7736, 0x773E, 0x231D, -/* 00A9 */ 0x774F, 0x0000, 0x607A, -/* 00AA */ 0x775B, 0x776C, 0x2326, -/* 00AB */ 0x7779, 0x7791, 0x2338, -/* 00AC */ 0x779E, 0x77C7, 0x2351, -/* 00AD */ 0x77D3, 0x784E, 0x237B, -/* 00AE */ 0x785D, 0x0000, 0x607C, -/* 00AF */ 0x786B, 0x786F, 0x23F7, -/* 00B0 */ 0x787C, 0x78DA, 0x23FC, -/* 00B1 */ 0x78E7, 0x7901, 0x245B, -/* 00B2 */ 0x790E, 0x7919, 0x2476, -/* 00B3 */ 0x7926, 0x792C, 0x2482, -/* 00B4 */ 0x793A, 0x796D, 0x2489, -/* 00B5 */ 0x797A, 0x7981, 0x24BD, -/* 00B6 */ 0x798D, 0x798F, 0x24C5, -/* 00B7 */ 0x79A6, 0x79E9, 0x24C8, -/* 00B8 */ 0x79FB, 0x7A20, 0x250C, -/* 00B9 */ 0x7A2E, 0x7ACB, 0x2532, -/* 00BA */ 0x7AD9, 0x7B2E, 0x25D0, -/* 00BB */ 0x7B46, 0x7B77, 0x2626, -/* 00BC */ 0x7B84, 0x7BA1, 0x2658, -/* 00BD */ 0x7BAD, 0x7BCC, 0x2676, -/* 00BE */ 0x7BD9, 0x7BE9, 0x2696, -/* 00BF */ 0x7BF7, 0x7C11, 0x26A7, -/* 00C0 */ 0x7C1E, 0x7C2B, 0x26C2, -/* 00C1 */ 0x7C37, 0x7C50, 0x26D0, -/* 00C2 */ 0x7C5F, 0x7C7D, 0x26EA, -/* 00C3 */ 0x7C89, 0x7CA5, 0x2709, -/* 00C4 */ 0x7CB1, 0x7CBE, 0x2726, -/* 00C5 */ 0x7CCA, 0x7D81, 0x2734, -/* 00C6 */ 0x7D8F, 0x7DFB, 0x27EC, -/* 00C7 */ 0x7E08, 0x7E9C, 0x2859, -/* 00C8 */ 0x7F36, 0x7F79, 0x28EE, -/* 00C9 */ 0x7F85, 0x805E, 0x2932, -/* 00CA */ 0x806F, 0x810A, 0x2A0C, -/* 00CB */ 0x8116, 0x0000, 0x5C69, -/* 00CC */ 0x8123, 0x8155, 0x2AA8, -/* 00CD */ 0x8165, 0x8239, 0x2ADB, -/* 00CE */ 0x8247, 0x824B, 0x2BB0, -/* 00CF */ 0x8258, 0x8259, 0x2BB5, -/* 00D0 */ 0x8266, 0x827E, 0x2BB7, -/* 00D1 */ 0x828B, 0x82BE, 0x2BD0, -/* 00D2 */ 0x82D1, 0x82F1, 0x2C04, -/* 00D3 */ 0x8301, 0x8309, 0x2C25, -/* 00D4 */ 0x8317, 0x0000, 0x577E, -/* 00D5 */ 0x8328, 0x8354, 0x2C2E, -/* 00D6 */ 0x8377, 0x83AB, 0x2C5B, -/* 00D7 */ 0x83BD, 0x840E, 0x2C90, -/* 00D8 */ 0x842C, 0x8449, 0x2CE2, -/* 00D9 */ 0x8457, 0x8482, 0x2D00, -/* 00DA */ 0x8490, 0x849E, 0x2D2C, -/* 00DB */ 0x84B2, 0x84D3, 0x2D3B, -/* 00DC */ 0x84EC, 0x84EE, 0x2D5D, -/* 00DD */ 0x84FF, 0x852D, 0x2D60, -/* 00DE */ 0x853D, 0x854A, 0x2D8F, -/* 00DF */ 0x8559, 0x856D, 0x2D9D, -/* 00E0 */ 0x857E, 0x85BA, 0x2DB2, -/* 00E1 */ 0x85C9, 0x85EA, 0x2DEF, -/* 00E2 */ 0x85F7, 0x861A, 0x2E11, -/* 00E3 */ 0x862D, 0x863F, 0x2E35, -/* 00E4 */ 0x864E, 0x867B, 0x2E48, -/* 00E5 */ 0x868A, 0x86ED, 0x2E76, -/* 00E6 */ 0x86F9, 0x873F, 0x2EDA, -/* 00E7 */ 0x874C, 0x8768, 0x2F21, -/* 00E8 */ 0x8774, 0x878D, 0x2F3E, -/* 00E9 */ 0x879E, 0x87D2, 0x2F58, -/* 00EA */ 0x87E0, 0x0000, 0x773A, -/* 00EB */ 0x87EC, 0x8823, 0x2F8D, -/* 00EC */ 0x8831, 0x8840, 0x2FC5, -/* 00ED */ 0x884C, 0x889E, 0x2FD5, -/* 00EE */ 0x88AB, 0x88B1, 0x3028, -/* 00EF */ 0x88C1, 0x8944, 0x302F, -/* 00F0 */ 0x8956, 0x8972, 0x30B3, -/* 00F1 */ 0x897F, 0x89C0, 0x30D0, -/* 00F2 */ 0x89D2, 0x89D4, 0x3112, -/* 00F3 */ 0x89E3, 0x0000, 0x6658, -/* 00F4 */ 0x89F4, 0x8B2C, 0x3115, -/* 00F5 */ 0x8B39, 0x8B9C, 0x324E, -/* 00F6 */ 0x8C37, 0x8D1B, 0x32B2, -/* 00F7 */ 0x8D64, 0x8DFC, 0x3397, -/* 00F8 */ 0x8E0F, 0x8E10, 0x3430, -/* 00F9 */ 0x8E1D, 0x8E93, 0x3432, -/* 00FA */ 0x8EA1, 0x8EDF, 0x34A9, -/* 00FB */ 0x8EF8, 0x8F61, 0x34E8, -/* 00FC */ 0x8F9B, 0x8FB2, 0x3552, -/* 00FD */ 0x8FC2, 0x8FD4, 0x356A, -/* 00FE */ 0x8FE2, 0x9095, 0x357D, -/* 00FF */ 0x90A2, 0x90CE, 0x3631, -/* 0100 */ 0x90DD, 0x9139, 0x365E, -/* 0101 */ 0x9148, 0x9157, 0x36BB, -/* 0102 */ 0x9163, 0x91F5, 0x36CB, -/* 0103 */ 0x9207, 0x9223, 0x375E, -/* 0104 */ 0x9234, 0x9264, 0x377B, -/* 0105 */ 0x9278, 0x9285, 0x37AC, -/* 0106 */ 0x9291, 0x929C, 0x37BA, -/* 0107 */ 0x92A8, 0x92D2, 0x37C6, -/* 0108 */ 0x92E4, 0x9304, 0x37F1, -/* 0109 */ 0x9310, 0x9336, 0x3812, -/* 010A */ 0x934A, 0x93B3, 0x3839, -/* 010B */ 0x93C3, 0x93E8, 0x38A3, -/* 010C */ 0x93FD, 0x9403, 0x38C9, -/* 010D */ 0x9418, 0x0000, 0x7A4C, -/* 010E */ 0x942B, 0x9444, 0x38D0, -/* 010F */ 0x9451, 0x9452, 0x38EA, -/* 0110 */ 0x9460, 0x947F, 0x38EC, -/* 0111 */ 0x9577, 0x95E2, 0x390C, -/* 0112 */ 0x961C, 0x97AD, 0x3978, -/* 0113 */ 0x97C1, 0x97DC, 0x3B0A, -/* 0114 */ 0x97ED, 0x9871, 0x3B26, -/* 0115 */ 0x98A8, 0x98C4, 0x3BAB, -/* 0116 */ 0x98DB, 0x995E, 0x3BC8, -/* 0117 */ 0x9996, 0x9999, 0x3C4C, -/* 0118 */ 0x99A5, 0x99B4, 0x3C50, -/* 0119 */ 0x99C1, 0x0000, 0x6B72, -/* 011A */ 0x99D0, 0x99F1, 0x3C60, -/* 011B */ 0x99FF, 0x9A01, 0x3C82, -/* 011C */ 0x9A0E, 0x9A19, 0x3C85, -/* 011D */ 0x9A2B, 0x9A6A, 0x3C91, -/* 011E */ 0x9AA8, 0x9AC1, 0x3CD1, -/* 011F */ 0x9ACF, 0x9AEF, 0x3CEB, -/* 0120 */ 0x9AFB, 0x9B0D, 0x3D0C, -/* 0121 */ 0x9B1A, 0x9B5A, 0x3D1F, -/* 0122 */ 0x9B6F, 0x9B77, 0x3D60, -/* 0123 */ 0x9B91, 0x0000, 0x7335, -/* 0124 */ 0x9BAA, 0x9BAE, 0x3D69, -/* 0125 */ 0x9BC0, 0x9BCA, 0x3D6E, -/* 0126 */ 0x9BD6, 0x9BDB, 0x3D79, -/* 0127 */ 0x9BE7, 0x9BE8, 0x3D7F, -/* 0128 */ 0x9BFD, 0x0000, 0x7822, -/* 0129 */ 0x9C0D, 0x9C13, 0x3D81, -/* 012A */ 0x9C25, 0x9C5F, 0x3D88, -/* 012B */ 0x9C77, 0x9C78, 0x3DC3, -/* 012C */ 0x9CE5, 0x9CF6, 0x3DC5, -/* 012D */ 0x9D03, 0x9D28, 0x3DD7, -/* 012E */ 0x9D3B, 0x9D3F, 0x3DFD, -/* 012F */ 0x9D51, 0x0000, 0x7825, -/* 0130 */ 0x9D5D, 0x9D72, 0x3E02, -/* 0131 */ 0x9D89, 0x0000, 0x7958, -/* 0132 */ 0x9DAF, 0x9DC2, 0x3E18, -/* 0133 */ 0x9DD3, 0x9DD7, 0x3E2C, -/* 0134 */ 0x9DE5, 0x0000, 0x7C5A, -/* 0135 */ 0x9DF9, 0x9DFA, 0x3E31, -/* 0136 */ 0x9E1A, 0x9E1E, 0x3E33, -/* 0137 */ 0x9E75, 0x9EF7, 0x3E38, -/* 0138 */ 0x9F07, 0x9F20, 0x3EBB, -/* 0139 */ 0x9F2C, 0x9F3E, 0x3ED5, -/* 013A */ 0x9F4A, 0x9F77, 0x3EE8, -/* 013B */ 0x9F8D, 0x9F9C, 0x3F16, -/* 013C */ 0xFE30, 0xFE6B, 0x3F26, -/* 013D */ 0xFF01, 0xFF20, 0x3F62, -/* 013E */ 0xFF3C, 0xFF3F, 0x3F82, -/* 013F */ 0xFF5B, 0xFF5D, 0x3F86, -/* 0140 */ 0xFFE0, 0xFFE5, 0x3F89, -/*-------------------------------------------------------*/ -/* Offset=0x0418 Start of MappingTable */ - -/* 0000 */ 0x2170, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0x2278, 0x2234, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x2131, 0x256F, 0xFFFD, 0x256D, 0x256E, 0x2570, 0x2139, 0x2137, -/* 0018 */ 0xFFFD, 0x225D, 0xFFFD, 0x2164, 0x2165, 0xFFFD, 0xFFFD, 0x2166, -/* 0020 */ 0x2167, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0x212D, 0x212C, 0x216A, 0xFFFD, 0xFFFD, 0x216B, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x216F, 0xFFFD, 0xFFFD, 0x2223, 0x226A, -/* 0038 */ 0xFFFD, 0x2222, 0xFFFD, 0xFFFD, 0xFFFD, 0x226B, 0x2258, 0x2255, -/* 0040 */ 0x2257, 0x2256, 0xFFFD, 0xFFFD, 0x2259, 0x225A, 0x225C, 0x225B, -/* 0048 */ 0x2261, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2235, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0x223C, 0x2249, 0x2248, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2245, 0x2246, 0x224D, 0xFFFD, -/* 0060 */ 0xFFFD, 0x224E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2250, -/* 0068 */ 0x224F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2244, -/* 0070 */ 0x223B, 0x223E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2239, 0x223A, -/* 0078 */ 0x2339, 0xFFFD, 0x233A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x233C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0x233D, 0xFFFD, 0xFFFD, 0xFFFD, 0x233E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0x233F, 0xFFFD, 0xFFFD, 0xFFFD, 0x2337, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2336, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2335, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2334, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2333, 0x2345, 0xFFFD, 0xFFFD, -/* 00B8 */ 0x2347, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0x2346, 0xFFFD, 0xFFFD, 0x2340, 0x2341, 0x2343, 0x2342, -/* 00C8 */ 0x234C, 0x234D, 0x234E, 0x2332, 0x2331, 0x2330, 0x232F, 0x232E, -/* 00D0 */ 0x232D, 0x232C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2338, 0x233B, -/* 00D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0x217C, 0x217B, 0x2175, 0x2174, 0xFFFD, 0xFFFD, -/* 00E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x217E, 0x217D, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F8 */ 0x217A, 0x2179, 0xFFFD, 0xFFFD, 0xFFFD, 0x2172, 0xFFFD, 0xFFFD, -/* 0100 */ 0x2176, 0x2173, 0x2348, 0x2349, 0x234B, 0x234A, 0x2178, 0x2177, -/* 0108 */ 0xFFFD, 0xFFFD, 0x2254, 0x2251, 0x2253, 0x2252, 0x2121, 0x2123, -/* 0110 */ 0x2124, 0x2171, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2152, 0x2153, -/* 0118 */ 0x214E, 0x214F, 0x2156, 0x2157, 0x215A, 0x215B, 0x214A, 0x214B, -/* 0120 */ 0x2265, 0xFFFD, 0x2146, 0x2147, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2168, 0x2169, 0x2275, 0x2276, 0x2270, -/* 0130 */ 0x2271, 0x2272, 0xFFFD, 0xFFFD, 0x2274, 0x2277, 0xFFFD, 0xFFFD, -/* 0138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2273, -/* 0140 */ 0xFFFD, 0xFFFD, 0x224C, 0x224B, 0xFFFD, 0xFFFD, 0x226F, 0x4421, -/* 0148 */ 0x4423, 0xFFFD, 0x4424, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4437, -/* 0150 */ 0x4435, 0x4438, 0x4436, 0xFFFD, 0x4462, 0xFFFD, 0xFFFD, 0x4461, -/* 0158 */ 0x4460, 0xFFFD, 0xFFFD, 0x4562, 0x4561, 0x4560, 0xFFFD, 0x4563, -/* 0160 */ 0x455F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4722, 0x4723, 0xFFFD, -/* 0168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B64, 0xFFFD, 0xFFFD, -/* 0170 */ 0xFFFD, 0xFFFD, 0x4439, 0xFFFD, 0x4463, 0xFFFD, 0xFFFD, 0x4464, -/* 0178 */ 0xFFFD, 0x486B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x443A, -/* 0180 */ 0x4465, 0xFFFD, 0x4564, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0188 */ 0xFFFD, 0xFFFD, 0x4425, 0xFFFD, 0x443C, 0xFFFD, 0xFFFD, 0x443D, -/* 0190 */ 0xFFFD, 0xFFFD, 0x4466, 0xFFFD, 0x4565, 0x4567, 0x4566, 0xFFFD, -/* 0198 */ 0xFFFD, 0x4724, 0x4725, 0xFFFD, 0xFFFD, 0x4B65, 0xFFFD, 0x537D, -/* 01A0 */ 0x4422, 0xFFFD, 0xFFFD, 0xFFFD, 0x4426, 0x443F, 0x443E, 0xFFFD, -/* 01A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B0 */ 0x4726, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B8 */ 0xFFFD, 0xFFFD, 0x4B66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5871, 0xFFFD, 0xFFFD, -/* 01C8 */ 0xFFFD, 0x632A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4427, 0xFFFD, 0x4468, -/* 01D0 */ 0xFFFD, 0xFFFD, 0x4B67, 0x4428, 0xFFFD, 0x4440, 0xFFFD, 0xFFFD, -/* 01D8 */ 0x4469, 0x446B, 0xFFFD, 0x446C, 0x446A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E0 */ 0x4727, 0xFFFD, 0x4B68, 0xFFFD, 0xFFFD, 0x4B69, 0x4F67, 0xFFFD, -/* 01E8 */ 0x4441, 0x446D, 0xFFFD, 0x4728, 0x472A, 0x4729, 0xFFFD, 0x486C, -/* 01F0 */ 0xFFFD, 0xFFFD, 0x4B6A, 0x4B6B, 0x4F68, 0x4F69, 0xFFFD, 0xFFFD, -/* 01F8 */ 0xFFFD, 0xFFFD, 0x537E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0200 */ 0xFFFD, 0x4429, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x446F, -/* 0208 */ 0x446E, 0xFFFD, 0x4470, 0x4476, 0xFFFD, 0x4471, 0x4472, 0xFFFD, -/* 0210 */ 0xFFFD, 0x4474, 0x4475, 0xFFFD, 0x4473, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x456A, 0x456B, 0x456C, 0x456D, 0x4569, -/* 0220 */ 0x4570, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4571, 0x4623, 0xFFFD, -/* 0228 */ 0xFFFD, 0xFFFD, 0x456E, 0x456F, 0x4568, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4737, -/* 0238 */ 0xFFFD, 0x4734, 0x4738, 0xFFFD, 0xFFFD, 0x4735, 0xFFFD, 0xFFFD, -/* 0240 */ 0xFFFD, 0xFFFD, 0x4736, 0xFFFD, 0x4739, 0xFFFD, 0x472B, 0xFFFD, -/* 0248 */ 0x473A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0250 */ 0x472C, 0x472E, 0x473B, 0xFFFD, 0x4730, 0xFFFD, 0x4733, 0x4731, -/* 0258 */ 0x4732, 0xFFFD, 0xFFFD, 0xFFFD, 0x472F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0260 */ 0x472D, 0x4924, 0x4875, 0xFFFD, 0xFFFD, 0xFFFD, 0x4872, 0xFFFD, -/* 0268 */ 0x4926, 0xFFFD, 0x487A, 0xFFFD, 0x4879, 0xFFFD, 0x487D, 0x4878, -/* 0270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x487B, 0xFFFD, 0xFFFD, -/* 0278 */ 0x487E, 0x486F, 0x4929, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x486D, -/* 0280 */ 0x4925, 0x486E, 0x4876, 0x4877, 0xFFFD, 0xFFFD, 0x487C, 0x4874, -/* 0288 */ 0xFFFD, 0x4870, 0xFFFD, 0x4927, 0x492A, 0x4873, 0x4922, 0x4928, -/* 0290 */ 0x4871, 0xFFFD, 0x4923, 0xFFFD, 0xFFFD, 0x4921, 0xFFFD, 0xFFFD, -/* 0298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B79, 0xFFFD, 0xFFFD, 0x4B71, 0xFFFD, -/* 02A0 */ 0xFFFD, 0x4B6C, 0x4B76, 0xFFFD, 0xFFFD, 0x4B6F, 0xFFFD, 0x4B77, -/* 02A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C21, 0x4B7A, 0xFFFD, 0xFFFD, -/* 02B0 */ 0x4B7C, 0x4B70, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B75, 0xFFFD, 0xFFFD, -/* 02B8 */ 0x4B74, 0xFFFD, 0x4B78, 0xFFFD, 0xFFFD, 0x4B73, 0xFFFD, 0x4B6E, -/* 02C0 */ 0xFFFD, 0x4B7D, 0xFFFD, 0x4B7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02C8 */ 0x4B7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B72, 0xFFFD, 0x4B6D, -/* 02D0 */ 0x4F78, 0x4F6C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F6B, -/* 02D8 */ 0x4F73, 0x5021, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02E0 */ 0xFFFD, 0x4F6D, 0xFFFD, 0xFFFD, 0x4F7B, 0x4F72, 0x4F7A, 0xFFFD, -/* 02E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F76, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02F0 */ 0x4F7D, 0x4F70, 0x4F79, 0x4F6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02F8 */ 0xFFFD, 0x4F77, 0x4F74, 0xFFFD, 0x4F7C, 0xFFFD, 0xFFFD, 0x4F71, -/* 0300 */ 0x4F7E, 0x4F75, 0x4F6E, 0x4F6A, 0x543A, 0x5424, 0xFFFD, 0x5434, -/* 0308 */ 0xFFFD, 0x5439, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5427, 0xFFFD, -/* 0310 */ 0x5430, 0xFFFD, 0xFFFD, 0xFFFD, 0x543D, 0xFFFD, 0x5431, 0xFFFD, -/* 0318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x542A, 0xFFFD, 0xFFFD, 0x543F, -/* 0320 */ 0xFFFD, 0x5436, 0x5421, 0x5422, 0xFFFD, 0x5924, 0xFFFD, 0x542F, -/* 0328 */ 0x542E, 0xFFFD, 0x5432, 0xFFFD, 0x5429, 0xFFFD, 0x5438, 0x5437, -/* 0330 */ 0x542D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x542C, 0xFFFD, 0x5435, -/* 0338 */ 0xFFFD, 0x5423, 0xFFFD, 0x5426, 0x5425, 0xFFFD, 0x5433, 0x5428, -/* 0340 */ 0x543C, 0x543E, 0xFFFD, 0x543B, 0x542B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5876, 0xFFFD, 0xFFFD, 0xFFFD, 0x5875, -/* 0350 */ 0xFFFD, 0x5879, 0xFFFD, 0xFFFD, 0x5877, 0xFFFD, 0x587C, 0x5923, -/* 0358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x587D, 0xFFFD, 0xFFFD, -/* 0360 */ 0xFFFD, 0xFFFD, 0x5878, 0xFFFD, 0x5874, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x587A, 0xFFFD, 0xFFFD, -/* 0370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5926, 0xFFFD, 0x5925, -/* 0378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5921, 0x587E, 0x587B, 0x5922, -/* 0380 */ 0xFFFD, 0xFFFD, 0x5872, 0xFFFD, 0xFFFD, 0x5873, 0xFFFD, 0xFFFD, -/* 0388 */ 0x5E2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E2B, 0xFFFD, 0xFFFD, -/* 0390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E2A, 0xFFFD, 0xFFFD, -/* 0398 */ 0xFFFD, 0x5E2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E2F, 0xFFFD, -/* 03A0 */ 0x5E30, 0x5E2C, 0x5E31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03A8 */ 0xFFFD, 0xFFFD, 0x5E29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6331, 0x632B, 0xFFFD, 0x6334, -/* 03B8 */ 0xFFFD, 0xFFFD, 0x632D, 0x632E, 0xFFFD, 0x632C, 0xFFFD, 0x6332, -/* 03C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6333, 0xFFFD, 0xFFFD, 0x6330, 0xFFFD, -/* 03C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x632F, 0xFFFD, 0x6335, -/* 03D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x677C, 0x6779, -/* 03D8 */ 0xFFFD, 0x677A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6778, 0x6775, 0xFFFD, -/* 03E0 */ 0xFFFD, 0xFFFD, 0x6777, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6774, 0xFFFD, 0x6772, -/* 03F0 */ 0xFFFD, 0x677D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6776, 0x6773, 0xFFFD, -/* 03F8 */ 0xFFFD, 0x677B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C23, 0xFFFD, 0xFFFD, -/* 0400 */ 0xFFFD, 0x6C24, 0xFFFD, 0x6C22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0408 */ 0x6C21, 0xFFFD, 0x6C25, 0xFFFD, 0x6B7E, 0x6C28, 0xFFFD, 0xFFFD, -/* 0410 */ 0x6C26, 0x6C27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0418 */ 0x7033, 0xFFFD, 0x7030, 0xFFFD, 0x7032, 0x7034, 0xFFFD, 0xFFFD, -/* 0420 */ 0x7031, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7341, -/* 0428 */ 0xFFFD, 0x7342, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0430 */ 0xFFFD, 0xFFFD, 0x7340, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0438 */ 0xFFFD, 0xFFFD, 0x7343, 0x782B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A62, -/* 0440 */ 0x7A63, 0xFFFD, 0xFFFD, 0x7B58, 0x7B57, 0xFFFD, 0xFFFD, 0x442A, -/* 0448 */ 0x4442, 0x4478, 0xFFFD, 0x4477, 0x4573, 0x4572, 0x473E, 0x473D, -/* 0450 */ 0x473F, 0x473C, 0xFFFD, 0x492C, 0x492B, 0x492D, 0xFFFD, 0xFFFD, -/* 0458 */ 0xFFFD, 0xFFFD, 0x4C23, 0xFFFD, 0x4C22, 0x4C24, 0xFFFD, 0x5022, -/* 0460 */ 0xFFFD, 0x2279, 0xFFFD, 0x227A, 0x5927, 0x227C, 0x227B, 0xFFFD, -/* 0468 */ 0xFFFD, 0x227D, 0x677E, 0x227E, 0xFFFD, 0x442B, 0xFFFD, 0x4479, -/* 0470 */ 0x4740, 0x4C25, 0xFFFD, 0x442C, 0x447C, 0x447A, 0x447B, 0xFFFD, -/* 0478 */ 0xFFFD, 0x4741, 0xFFFD, 0xFFFD, 0xFFFD, 0x492E, 0x4C27, 0x4C26, -/* 0480 */ 0x4C28, 0xFFFD, 0xFFFD, 0xFFFD, 0x5440, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0488 */ 0x7035, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0490 */ 0xFFFD, 0x4574, 0x4575, 0xFFFD, 0xFFFD, 0x4742, 0xFFFD, 0xFFFD, -/* 0498 */ 0xFFFD, 0x5024, 0x5023, 0xFFFD, 0xFFFD, 0x5928, 0xFFFD, 0x447D, -/* 04A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04A8 */ 0x5025, 0xFFFD, 0x5443, 0xFFFD, 0x5441, 0x5442, 0xFFFD, 0xFFFD, -/* 04B0 */ 0xFFFD, 0xFFFD, 0x7036, 0xFFFD, 0x4576, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04B8 */ 0x4743, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x492F, 0x4930, -/* 04C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C29, 0xFFFD, 0xFFFD, -/* 04C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5446, 0xFFFD, -/* 04D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5447, 0x5445, 0x5444, 0x6C29, 0x7037, -/* 04D8 */ 0xFFFD, 0xFFFD, 0x442D, 0x443B, 0x5929, 0x5E33, 0xFFFD, 0x6821, -/* 04E0 */ 0xFFFD, 0xFFFD, 0x447E, 0xFFFD, 0x4579, 0x4577, 0x4578, 0xFFFD, -/* 04E8 */ 0xFFFD, 0x4C2A, 0xFFFD, 0xFFFD, 0x442E, 0x442F, 0xFFFD, 0x4443, -/* 04F0 */ 0xFFFD, 0xFFFD, 0x4521, 0x4522, 0x4523, 0xFFFD, 0x457A, 0xFFFD, -/* 04F8 */ 0xFFFD, 0xFFFD, 0x4747, 0xFFFD, 0xFFFD, 0x4745, 0x4746, 0xFFFD, -/* 0500 */ 0xFFFD, 0xFFFD, 0x4748, 0x4744, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0508 */ 0xFFFD, 0x4F4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0510 */ 0x4932, 0x4931, 0xFFFD, 0xFFFD, 0x4935, 0x4933, 0x4934, 0xFFFD, -/* 0518 */ 0xFFFD, 0xFFFD, 0x4C30, 0xFFFD, 0x4C2F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0520 */ 0xFFFD, 0xFFFD, 0x4C31, 0x4C2D, 0x4C2C, 0xFFFD, 0x4C2E, 0x4C2B, -/* 0528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C32, 0xFFFD, 0x5027, -/* 0530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x502C, 0xFFFD, 0xFFFD, 0x5028, 0x502B, -/* 0538 */ 0x502A, 0x5029, 0x5026, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0540 */ 0x544A, 0xFFFD, 0x5448, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x544B, -/* 0548 */ 0x5449, 0x544C, 0x5E37, 0x592A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0550 */ 0x592B, 0xFFFD, 0xFFFD, 0x5E34, 0xFFFD, 0x5E35, 0x5E36, 0xFFFD, -/* 0558 */ 0x6337, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6338, 0xFFFD, -/* 0560 */ 0x6336, 0xFFFD, 0xFFFD, 0x6823, 0x6822, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0568 */ 0x6C2A, 0x6C2B, 0x6C2C, 0x6C2E, 0xFFFD, 0xFFFD, 0x6C2D, 0xFFFD, -/* 0570 */ 0xFFFD, 0xFFFD, 0x7038, 0xFFFD, 0x7039, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4430, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0580 */ 0x457C, 0x457B, 0xFFFD, 0xFFFD, 0x4749, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0588 */ 0xFFFD, 0xFFFD, 0x4937, 0x4938, 0x4936, 0x4939, 0x4C34, 0xFFFD, -/* 0590 */ 0xFFFD, 0x4C33, 0xFFFD, 0xFFFD, 0x5030, 0xFFFD, 0x502F, 0xFFFD, -/* 0598 */ 0xFFFD, 0xFFFD, 0x502D, 0xFFFD, 0x502E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x592C, 0xFFFD, 0xFFFD, -/* 05A8 */ 0x592F, 0xFFFD, 0x5B2B, 0x592E, 0x592D, 0xFFFD, 0x5E3A, 0xFFFD, -/* 05B0 */ 0x5E39, 0x5E38, 0x6339, 0xFFFD, 0xFFFD, 0x633C, 0x633D, 0x633B, -/* 05B8 */ 0xFFFD, 0x633A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C2F, 0xFFFD, 0xFFFD, 0x703A, 0xFFFD, -/* 05C8 */ 0x7344, 0xFFFD, 0xFFFD, 0x7961, 0xFFFD, 0x4444, 0x4524, 0xFFFD, -/* 05D0 */ 0xFFFD, 0x4525, 0x4526, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05D8 */ 0x457D, 0x457E, 0xFFFD, 0x474A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05E0 */ 0x5031, 0xFFFD, 0x5931, 0x5930, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05E8 */ 0x4431, 0x4527, 0x4621, 0xFFFD, 0x5932, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05F0 */ 0x4622, 0xFFFD, 0xFFFD, 0x474C, 0x474B, 0xFFFD, 0x493A, 0xFFFD, -/* 05F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x544D, 0xFFFD, 0xFFFD, -/* 0600 */ 0xFFFD, 0xFFFD, 0x633E, 0xFFFD, 0x6824, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4528, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0610 */ 0xFFFD, 0x5935, 0x5933, 0x5934, 0x4432, 0xFFFD, 0x4445, 0x243F, -/* 0618 */ 0x452B, 0xFFFD, 0x452A, 0x4529, 0x4625, 0x4624, 0xFFFD, 0xFFFD, -/* 0620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C38, 0x4C35, 0x4C37, 0x4C36, -/* 0628 */ 0xFFFD, 0xFFFD, 0x5032, 0xFFFD, 0xFFFD, 0x5E3B, 0xFFFD, 0x4433, -/* 0630 */ 0xFFFD, 0x452C, 0xFFFD, 0x4627, 0x4626, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0638 */ 0xFFFD, 0x4C39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0640 */ 0xFFFD, 0x4629, 0x4628, 0x474D, 0x474E, 0xFFFD, 0x493B, 0xFFFD, -/* 0648 */ 0x493C, 0xFFFD, 0x4C3A, 0x4C3B, 0x4C3C, 0xFFFD, 0x5033, 0xFFFD, -/* 0650 */ 0xFFFD, 0xFFFD, 0x544E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x452D, -/* 0658 */ 0x5034, 0xFFFD, 0xFFFD, 0x5450, 0xFFFD, 0x544F, 0xFFFD, 0xFFFD, -/* 0660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0668 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6825, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0670 */ 0x6C30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0678 */ 0xFFFD, 0x462A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0680 */ 0xFFFD, 0x5936, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4434, 0x4446, -/* 0688 */ 0x452F, 0x452E, 0xFFFD, 0x4530, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0690 */ 0xFFFD, 0xFFFD, 0x4C3E, 0xFFFD, 0x4C3D, 0x4C3F, 0xFFFD, 0xFFFD, -/* 0698 */ 0xFFFD, 0x5035, 0xFFFD, 0xFFFD, 0xFFFD, 0x5451, 0xFFFD, 0xFFFD, -/* 06A0 */ 0x763B, 0x4447, 0x462C, 0x463B, 0x4636, 0xFFFD, 0x4631, 0x4630, -/* 06A8 */ 0x4637, 0x4635, 0x462E, 0x463C, 0x462F, 0x462B, 0x463A, 0x4639, -/* 06B0 */ 0x4638, 0x462D, 0xFFFD, 0x4634, 0xFFFD, 0xFFFD, 0x4633, 0xFFFD, -/* 06B8 */ 0xFFFD, 0x463D, 0x4632, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4754, -/* 06C0 */ 0xFFFD, 0x475A, 0x4756, 0xFFFD, 0x475C, 0xFFFD, 0x4759, 0x474F, -/* 06C8 */ 0x4752, 0x4755, 0x4751, 0x4758, 0x475B, 0x4750, 0x4753, 0x4757, -/* 06D0 */ 0x475D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06D8 */ 0xFFFD, 0x4949, 0xFFFD, 0x493D, 0x493F, 0x4957, 0x4952, 0xFFFD, -/* 06E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4941, 0x4943, 0xFFFD, 0x494A, -/* 06E8 */ 0xFFFD, 0x4956, 0x4958, 0x493E, 0x494F, 0xFFFD, 0xFFFD, 0x4955, -/* 06F0 */ 0xFFFD, 0x4946, 0xFFFD, 0x4950, 0x4951, 0xFFFD, 0x494E, 0x494C, -/* 06F8 */ 0xFFFD, 0x494D, 0x4953, 0xFFFD, 0x4940, 0xFFFD, 0x4954, 0xFFFD, -/* 0700 */ 0x4948, 0x4945, 0xFFFD, 0xFFFD, 0x4944, 0xFFFD, 0x4947, 0xFFFD, -/* 0708 */ 0x494B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4942, 0x4C51, 0xFFFD, 0xFFFD, -/* 0710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C4D, 0xFFFD, 0x4C40, 0xFFFD, -/* 0720 */ 0x4C41, 0x4C4E, 0x4C47, 0x4C43, 0xFFFD, 0xFFFD, 0x4C46, 0x4C4B, -/* 0728 */ 0x4C54, 0xFFFD, 0xFFFD, 0x4C45, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C48, -/* 0730 */ 0xFFFD, 0x4C4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C53, 0x4C4F, -/* 0738 */ 0xFFFD, 0x4C55, 0xFFFD, 0x4C4C, 0xFFFD, 0x4C49, 0xFFFD, 0xFFFD, -/* 0740 */ 0x4C44, 0x4C42, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C50, 0x503C, 0x504A, -/* 0748 */ 0x5038, 0x5049, 0x5041, 0x5046, 0x5036, 0xFFFD, 0xFFFD, 0x5045, -/* 0750 */ 0xFFFD, 0x5047, 0xFFFD, 0x503D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0758 */ 0x503B, 0xFFFD, 0xFFFD, 0x5048, 0xFFFD, 0x5040, 0xFFFD, 0x504B, -/* 0760 */ 0x5037, 0x5042, 0x503F, 0xFFFD, 0x5043, 0xFFFD, 0xFFFD, 0x503E, -/* 0768 */ 0x5044, 0x503A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5039, 0x545E, -/* 0770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5457, 0x5462, 0xFFFD, 0x5452, 0x545C, -/* 0778 */ 0x5461, 0xFFFD, 0xFFFD, 0x545D, 0x5460, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0780 */ 0x5458, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0788 */ 0x545A, 0xFFFD, 0x5456, 0x5465, 0xFFFD, 0xFFFD, 0xFFFD, 0x5454, -/* 0790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5459, 0x5464, 0xFFFD, 0x545F, -/* 0798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5466, 0x5453, 0xFFFD, -/* 07A0 */ 0xFFFD, 0xFFFD, 0x545B, 0x5463, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07A8 */ 0x5949, 0xFFFD, 0x5947, 0x5944, 0xFFFD, 0x5940, 0xFFFD, 0x594B, -/* 07B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5455, 0x5946, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07B8 */ 0xFFFD, 0xFFFD, 0x5E4E, 0xFFFD, 0xFFFD, 0x594C, 0xFFFD, 0x593E, -/* 07C0 */ 0x593B, 0xFFFD, 0x5938, 0xFFFD, 0xFFFD, 0xFFFD, 0x593F, 0xFFFD, -/* 07C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5942, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D0 */ 0xFFFD, 0x5943, 0x5941, 0x594D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D8 */ 0x5948, 0xFFFD, 0x593C, 0x5A76, 0xFFFD, 0x593D, 0xFFFD, 0x594A, -/* 07E0 */ 0x5945, 0xFFFD, 0x593A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5939, 0x5E3D, -/* 07E8 */ 0x5E40, 0xFFFD, 0x5E54, 0xFFFD, 0x5E3E, 0xFFFD, 0x5E44, 0x5E4A, -/* 07F0 */ 0x6143, 0xFFFD, 0xFFFD, 0x5E48, 0xFFFD, 0x5E55, 0x5E41, 0x5E49, -/* 07F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0800 */ 0x5E47, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E43, 0x5E57, 0x5E50, 0xFFFD, -/* 0808 */ 0x5E45, 0x5E42, 0xFFFD, 0x5E4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3F, 0xFFFD, 0xFFFD, 0x5E46, 0x5E56, -/* 0818 */ 0x5E52, 0xFFFD, 0x5E4C, 0xFFFD, 0xFFFD, 0x5E53, 0x5E4F, 0x5E4B, -/* 0820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E51, -/* 0828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0830 */ 0xFFFD, 0x634C, 0x634D, 0x6345, 0xFFFD, 0x634F, 0xFFFD, 0xFFFD, -/* 0838 */ 0xFFFD, 0xFFFD, 0x6343, 0xFFFD, 0xFFFD, 0x6346, 0xFFFD, 0x6341, -/* 0840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x634A, 0xFFFD, -/* 0848 */ 0x6344, 0xFFFD, 0xFFFD, 0x633F, 0xFFFD, 0x634B, 0xFFFD, 0x6347, -/* 0850 */ 0x6348, 0x634E, 0x6342, 0x2321, 0x6340, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6349, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0860 */ 0xFFFD, 0xFFFD, 0x6835, 0x6830, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0868 */ 0xFFFD, 0x682A, 0x6826, 0xFFFD, 0x6827, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0870 */ 0xFFFD, 0xFFFD, 0x682C, 0xFFFD, 0x6833, 0x682D, 0xFFFD, 0xFFFD, -/* 0878 */ 0xFFFD, 0x682E, 0x682F, 0xFFFD, 0x6834, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0880 */ 0x682B, 0xFFFD, 0x6831, 0x6829, 0xFFFD, 0xFFFD, 0xFFFD, 0x6828, -/* 0888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6832, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C37, 0xFFFD, 0xFFFD, -/* 0898 */ 0xFFFD, 0xFFFD, 0x6C31, 0x6C3D, 0x6C3E, 0xFFFD, 0x6C34, 0xFFFD, -/* 08A0 */ 0x6C36, 0xFFFD, 0x6C3C, 0xFFFD, 0xFFFD, 0x6C33, 0xFFFD, 0x6C32, -/* 08A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C35, 0x6C39, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08B0 */ 0xFFFD, 0x6C38, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C3A, 0xFFFD, 0x703B, -/* 08B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08C0 */ 0x7047, 0xFFFD, 0x703F, 0x7043, 0xFFFD, 0xFFFD, 0x7042, 0x703E, -/* 08C8 */ 0x7041, 0x703C, 0x7046, 0xFFFD, 0xFFFD, 0x7045, 0xFFFD, 0x7044, -/* 08D0 */ 0xFFFD, 0xFFFD, 0x6C3B, 0xFFFD, 0x7048, 0xFFFD, 0x7040, 0x703D, -/* 08D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7346, 0xFFFD, -/* 08E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7348, 0xFFFD, 0x7349, 0xFFFD, 0xFFFD, -/* 08E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7345, 0x734A, 0x7347, 0xFFFD, -/* 08F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x763C, 0x782C, 0xFFFD, 0xFFFD, 0x782D, -/* 08F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x763D, 0xFFFD, 0xFFFD, -/* 0900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7964, 0xFFFD, 0x7963, 0x7962, 0xFFFD, -/* 0908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7965, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A65, -/* 0910 */ 0x7A64, 0x7A66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B59, -/* 0918 */ 0x7B5B, 0x7B5A, 0xFFFD, 0x7C34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0920 */ 0x7C5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0928 */ 0xFFFD, 0x463F, 0x463E, 0xFFFD, 0x4760, 0x475F, 0xFFFD, 0x475E, -/* 0930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x495B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0938 */ 0xFFFD, 0x4959, 0x495C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x495A, -/* 0940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0948 */ 0xFFFD, 0x4C56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x504C, 0xFFFD, -/* 0950 */ 0xFFFD, 0xFFFD, 0x5467, 0x5468, 0xFFFD, 0xFFFD, 0xFFFD, 0x594E, -/* 0958 */ 0x5950, 0xFFFD, 0x594F, 0xFFFD, 0x5E58, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0960 */ 0xFFFD, 0x6350, 0x6351, 0xFFFD, 0xFFFD, 0x6837, 0xFFFD, 0x6836, -/* 0968 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4448, 0xFFFD, -/* 0970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4763, -/* 0978 */ 0x4767, 0xFFFD, 0xFFFD, 0x4765, 0x4764, 0xFFFD, 0x4766, 0x4762, -/* 0980 */ 0xFFFD, 0xFFFD, 0x4761, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0988 */ 0xFFFD, 0xFFFD, 0x4966, 0xFFFD, 0xFFFD, 0x4963, 0xFFFD, 0x495F, -/* 0990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4961, 0xFFFD, -/* 0998 */ 0xFFFD, 0x495D, 0xFFFD, 0xFFFD, 0x4960, 0x4962, 0x4965, 0x4964, -/* 09A0 */ 0x495E, 0x4C5B, 0xFFFD, 0xFFFD, 0x4C5D, 0xFFFD, 0x4C5C, 0xFFFD, -/* 09A8 */ 0xFFFD, 0x4C5A, 0x4C59, 0x4C58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09B0 */ 0x4C5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x504D, 0x4C57, -/* 09B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x504E, -/* 09C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5054, -/* 09C8 */ 0x504F, 0xFFFD, 0x5051, 0x5050, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5053, 0x5469, -/* 09D8 */ 0x546C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09E0 */ 0x546B, 0xFFFD, 0xFFFD, 0x5052, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09E8 */ 0xFFFD, 0x546A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5951, 0x5955, 0xFFFD, 0xFFFD, -/* 09F8 */ 0xFFFD, 0x5956, 0x595A, 0xFFFD, 0x595B, 0x5957, 0xFFFD, 0xFFFD, -/* 0A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5958, 0xFFFD, 0xFFFD, -/* 0A08 */ 0x5952, 0x5954, 0xFFFD, 0xFFFD, 0x546D, 0x5953, 0x5E60, 0xFFFD, -/* 0A10 */ 0xFFFD, 0x5E61, 0x5E5F, 0xFFFD, 0xFFFD, 0x5E5C, 0xFFFD, 0xFFFD, -/* 0A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A20 */ 0x5E59, 0x5E5D, 0x5E5E, 0xFFFD, 0xFFFD, 0x5E5B, 0x5959, 0x635B, -/* 0A28 */ 0x635E, 0x6359, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6353, 0x635D, -/* 0A30 */ 0xFFFD, 0x6357, 0xFFFD, 0xFFFD, 0x6355, 0x6354, 0xFFFD, 0x6356, -/* 0A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6352, 0xFFFD, 0xFFFD, 0xFFFD, 0x635C, -/* 0A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A48 */ 0x6358, 0xFFFD, 0x635A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A50 */ 0xFFFD, 0xFFFD, 0x6838, 0xFFFD, 0xFFFD, 0xFFFD, 0x683D, 0xFFFD, -/* 0A58 */ 0xFFFD, 0xFFFD, 0x683F, 0x6839, 0xFFFD, 0x6C3F, 0xFFFD, 0xFFFD, -/* 0A60 */ 0x683A, 0xFFFD, 0x683E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x683C, -/* 0A68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A70 */ 0x683B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A78 */ 0xFFFD, 0x6C43, 0xFFFD, 0x6C41, 0x6C40, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C46, 0xFFFD, 0x702E, 0x6C45, 0xFFFD, -/* 0A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A90 */ 0x6C42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x704A, 0xFFFD, 0xFFFD, 0x7049, 0xFFFD, -/* 0AA0 */ 0xFFFD, 0xFFFD, 0x704C, 0xFFFD, 0x704B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x734E, 0xFFFD, 0xFFFD, 0x734D, 0xFFFD, -/* 0AB0 */ 0x734C, 0xFFFD, 0x734B, 0xFFFD, 0xFFFD, 0x763F, 0x763E, 0xFFFD, -/* 0AB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x782E, 0x782F, 0xFFFD, 0xFFFD, 0x7830, -/* 0AC0 */ 0xFFFD, 0x7966, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C5E, 0xFFFD, -/* 0AC8 */ 0x4449, 0x4531, 0xFFFD, 0xFFFD, 0x4967, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E62, 0x5E63, -/* 0AD8 */ 0xFFFD, 0xFFFD, 0x6840, 0x546E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AE0 */ 0x7A67, 0x444A, 0x4640, 0xFFFD, 0xFFFD, 0x4768, 0x4769, 0xFFFD, -/* 0AE8 */ 0x4C5F, 0xFFFD, 0xFFFD, 0xFFFD, 0x595C, 0xFFFD, 0x6842, 0xFFFD, -/* 0AF0 */ 0x6843, 0x6841, 0xFFFD, 0x444B, 0xFFFD, 0x4532, 0x4534, 0x4533, -/* 0AF8 */ 0xFFFD, 0x4535, 0x4641, 0xFFFD, 0xFFFD, 0x4642, 0xFFFD, 0xFFFD, -/* 0B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x476A, 0x476B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B08 */ 0xFFFD, 0xFFFD, 0x4968, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B10 */ 0x4C63, 0xFFFD, 0xFFFD, 0x4C61, 0x4C62, 0x4C60, 0xFFFD, 0xFFFD, -/* 0B18 */ 0xFFFD, 0xFFFD, 0x5058, 0x5057, 0x5059, 0x5056, 0xFFFD, 0xFFFD, -/* 0B20 */ 0x4C64, 0x5055, 0xFFFD, 0x546F, 0x5470, 0xFFFD, 0x5471, 0xFFFD, -/* 0B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E64, 0xFFFD, 0x595D, 0xFFFD, -/* 0B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x635F, 0xFFFD, 0x6845, 0x6844, 0xFFFD, -/* 0B38 */ 0xFFFD, 0x6C47, 0x704D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x444C, -/* 0B40 */ 0x4643, 0xFFFD, 0x4644, 0xFFFD, 0x476D, 0x4770, 0xFFFD, 0xFFFD, -/* 0B48 */ 0xFFFD, 0x476F, 0xFFFD, 0xFFFD, 0xFFFD, 0x4772, 0x4771, 0x476E, -/* 0B50 */ 0x476C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4973, 0xFFFD, -/* 0B58 */ 0xFFFD, 0x4970, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x496A, 0x4972, -/* 0B60 */ 0xFFFD, 0xFFFD, 0x496F, 0xFFFD, 0xFFFD, 0x496E, 0xFFFD, 0xFFFD, -/* 0B68 */ 0xFFFD, 0x4969, 0x496C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x496D, -/* 0B70 */ 0x4971, 0x4974, 0xFFFD, 0xFFFD, 0x496B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B78 */ 0xFFFD, 0xFFFD, 0x4C69, 0x4C71, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C72, -/* 0B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C68, 0xFFFD, 0x4C66, -/* 0B88 */ 0xFFFD, 0xFFFD, 0x4C65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B90 */ 0xFFFD, 0x4C74, 0x4C6B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C70, 0x4C6E, -/* 0B98 */ 0xFFFD, 0x4C6D, 0xFFFD, 0xFFFD, 0x4C6C, 0x4C6A, 0x4C73, 0x4C6F, -/* 0BA0 */ 0x4C67, 0xFFFD, 0xFFFD, 0xFFFD, 0x505B, 0xFFFD, 0x5062, 0xFFFD, -/* 0BA8 */ 0x505A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x505D, -/* 0BB0 */ 0xFFFD, 0x5060, 0x5063, 0xFFFD, 0x505E, 0xFFFD, 0x5061, 0xFFFD, -/* 0BB8 */ 0x5478, 0x5065, 0xFFFD, 0xFFFD, 0xFFFD, 0x505C, 0xFFFD, 0x5064, -/* 0BC0 */ 0xFFFD, 0x505F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x547E, -/* 0BC8 */ 0xFFFD, 0xFFFD, 0x547D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5472, -/* 0BD0 */ 0xFFFD, 0x5477, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5473, 0xFFFD, -/* 0BD8 */ 0xFFFD, 0x5476, 0x5474, 0xFFFD, 0xFFFD, 0x5475, 0x5479, 0xFFFD, -/* 0BE0 */ 0xFFFD, 0x547A, 0xFFFD, 0x547C, 0xFFFD, 0xFFFD, 0xFFFD, 0x547B, -/* 0BE8 */ 0x595E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5964, 0xFFFD, -/* 0BF0 */ 0xFFFD, 0xFFFD, 0x5963, 0x595F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BF8 */ 0x5967, 0xFFFD, 0xFFFD, 0x5960, 0x5968, 0x5966, 0xFFFD, 0xFFFD, -/* 0C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5965, 0xFFFD, 0xFFFD, -/* 0C08 */ 0xFFFD, 0x5961, 0xFFFD, 0xFFFD, 0xFFFD, 0x5962, 0x5E65, 0xFFFD, -/* 0C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E67, 0x5E68, -/* 0C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E66, -/* 0C20 */ 0x5E69, 0x5E6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6368, 0x6366, 0xFFFD, 0xFFFD, -/* 0C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6365, 0x6364, -/* 0C38 */ 0x6363, 0xFFFD, 0xFFFD, 0x6360, 0x6367, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6361, 0xFFFD, 0xFFFD, 0x6362, 0xFFFD, -/* 0C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C50 */ 0x684A, 0x6849, 0x684B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6846, 0xFFFD, 0x684C, 0xFFFD, 0xFFFD, -/* 0C60 */ 0x6847, 0xFFFD, 0xFFFD, 0x6848, 0x6C4B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C68 */ 0xFFFD, 0xFFFD, 0x6C49, 0x6C4D, 0x6C48, 0xFFFD, 0x6C4A, 0x6C4C, -/* 0C70 */ 0x704E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7351, -/* 0C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7350, 0xFFFD, 0xFFFD, -/* 0C80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x734F, 0xFFFD, 0xFFFD, 0xFFFD, 0x704F, -/* 0C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7640, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7967, 0xFFFD, 0xFFFD, 0x7968, 0x444D, -/* 0C98 */ 0x444E, 0xFFFD, 0x444F, 0x4536, 0x4645, 0xFFFD, 0x4773, 0x4774, -/* 0CA0 */ 0xFFFD, 0x4977, 0x4978, 0x4976, 0x4975, 0xFFFD, 0x4C75, 0xFFFD, -/* 0CA8 */ 0xFFFD, 0xFFFD, 0x4C77, 0x4C76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0x5066, 0xFFFD, 0x5521, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5969, -/* 0CB8 */ 0x5E6C, 0xFFFD, 0x5E6B, 0xFFFD, 0x684D, 0xFFFD, 0xFFFD, 0x7050, -/* 0CC0 */ 0xFFFD, 0x7352, 0xFFFD, 0xFFFD, 0x7969, 0xFFFD, 0x7B5C, 0xFFFD, -/* 0CC8 */ 0xFFFD, 0xFFFD, 0x4646, 0xFFFD, 0x4777, 0xFFFD, 0x4775, 0x4776, -/* 0CD0 */ 0x4778, 0xFFFD, 0x497A, 0x4979, 0xFFFD, 0xFFFD, 0x497B, 0xFFFD, -/* 0CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C78, 0x4C7A, -/* 0CE0 */ 0x4C7C, 0x4C79, 0x4C7D, 0x4C7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0xFFFD, 0x506A, 0x5067, 0x5069, 0x506B, 0x5068, 0xFFFD, 0xFFFD, -/* 0CF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5527, 0xFFFD, 0x5523, -/* 0CF8 */ 0xFFFD, 0xFFFD, 0x5524, 0x5526, 0x5528, 0x5525, 0xFFFD, 0x552A, -/* 0D00 */ 0x5529, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x596E, 0xFFFD, -/* 0D08 */ 0xFFFD, 0x596D, 0xFFFD, 0x596C, 0x596B, 0x596F, 0x596A, 0xFFFD, -/* 0D10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E6E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E70, -/* 0D18 */ 0xFFFD, 0x5E6D, 0x5E6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x684E, 0x6856, 0xFFFD, -/* 0D28 */ 0x6850, 0x6854, 0xFFFD, 0x6855, 0x6851, 0x6852, 0x684F, 0x6853, -/* 0D30 */ 0x6C50, 0xFFFD, 0x6C51, 0x6C4F, 0xFFFD, 0x6C4E, 0xFFFD, 0x7051, -/* 0D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7831, 0x796A, 0xFFFD, 0x4450, -/* 0D40 */ 0xFFFD, 0x4779, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D48 */ 0x506C, 0xFFFD, 0xFFFD, 0x552B, 0xFFFD, 0xFFFD, 0x5972, 0x5971, -/* 0D50 */ 0x5970, 0x5E71, 0x5E72, 0xFFFD, 0x6857, 0x7052, 0x4451, 0xFFFD, -/* 0D58 */ 0x4537, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x477A, 0xFFFD, 0xFFFD, -/* 0D60 */ 0xFFFD, 0x4C7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D68 */ 0xFFFD, 0x4452, 0xFFFD, 0x4538, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x497C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D78 */ 0x5E73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7353, 0x4453, -/* 0D80 */ 0x4467, 0x4539, 0xFFFD, 0x4647, 0xFFFD, 0x4A22, 0x4A21, 0x497D, -/* 0D88 */ 0x497E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D22, 0x4D23, 0xFFFD, 0x4D21, -/* 0D90 */ 0xFFFD, 0xFFFD, 0x5070, 0xFFFD, 0x506F, 0x506D, 0x506E, 0x552E, -/* 0D98 */ 0x552C, 0xFFFD, 0xFFFD, 0xFFFD, 0x552D, 0xFFFD, 0xFFFD, 0x5522, -/* 0DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5974, 0x5975, 0xFFFD, 0xFFFD, 0x5973, -/* 0DA8 */ 0xFFFD, 0x6858, 0xFFFD, 0x6C52, 0x6C53, 0xFFFD, 0xFFFD, 0x7354, -/* 0DB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A68, 0xFFFD, 0xFFFD, 0x453A, 0xFFFD, -/* 0DB8 */ 0x4454, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DC0 */ 0x477B, 0x4A26, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A23, 0x4A24, 0xFFFD, -/* 0DC8 */ 0xFFFD, 0x4A25, 0x4D25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DD0 */ 0xFFFD, 0xFFFD, 0x4D27, 0xFFFD, 0x4D28, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DD8 */ 0xFFFD, 0xFFFD, 0x4D29, 0xFFFD, 0x4D2A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE0 */ 0x4D24, 0x4D26, 0x5072, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE8 */ 0xFFFD, 0x5071, 0x5533, 0xFFFD, 0x5532, 0xFFFD, 0xFFFD, 0x552F, -/* 0DF0 */ 0xFFFD, 0xFFFD, 0x5534, 0xFFFD, 0xFFFD, 0xFFFD, 0x5537, 0xFFFD, -/* 0DF8 */ 0x5535, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5531, 0xFFFD, 0x5530, -/* 0E00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5536, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E08 */ 0x5977, 0x5976, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E10 */ 0x5978, 0xFFFD, 0xFFFD, 0x597C, 0xFFFD, 0xFFFD, 0x597E, 0xFFFD, -/* 0E18 */ 0x597A, 0x5A24, 0xFFFD, 0x5A21, 0xFFFD, 0x5979, 0xFFFD, 0xFFFD, -/* 0E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x597B, 0xFFFD, 0x5A22, 0xFFFD, -/* 0E28 */ 0xFFFD, 0x5A23, 0xFFFD, 0x597D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E76, 0x5E77, -/* 0E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E74, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E40 */ 0x5E75, 0x6369, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x636A, -/* 0E48 */ 0x6859, 0xFFFD, 0xFFFD, 0x685A, 0x6C55, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C54, 0x7358, 0xFFFD, -/* 0E58 */ 0x7356, 0xFFFD, 0x7355, 0x7357, 0x796B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E60 */ 0x7A69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B5E, 0xFFFD, 0x7B5D, -/* 0E68 */ 0xFFFD, 0x7C35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E70 */ 0x4455, 0x477C, 0xFFFD, 0xFFFD, 0x4B56, 0x5A25, 0xFFFD, 0xFFFD, -/* 0E78 */ 0x4456, 0x464A, 0x4649, 0x4648, 0xFFFD, 0xFFFD, 0x4A27, 0xFFFD, -/* 0E80 */ 0xFFFD, 0x5538, 0xFFFD, 0xFFFD, 0x4457, 0x4458, 0x4459, 0x453B, -/* 0E88 */ 0xFFFD, 0xFFFD, 0x5073, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E90 */ 0x5E78, 0x445A, 0xFFFD, 0xFFFD, 0xFFFD, 0x464B, 0x464C, 0xFFFD, -/* 0E98 */ 0xFFFD, 0x477D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A28, -/* 0EA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D30, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EA8 */ 0x4D2E, 0x4D2D, 0xFFFD, 0x4D2B, 0xFFFD, 0x4D2C, 0x4D2F, 0xFFFD, -/* 0EB0 */ 0x5074, 0xFFFD, 0x5076, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EB8 */ 0x5075, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x553A, 0xFFFD, -/* 0EC0 */ 0x5539, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A28, 0xFFFD, -/* 0EC8 */ 0xFFFD, 0x5A27, 0x5A29, 0x5A26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0ED0 */ 0x5E7A, 0xFFFD, 0xFFFD, 0x5E7B, 0xFFFD, 0xFFFD, 0x5E7C, 0xFFFD, -/* 0ED8 */ 0x5E79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x636B, -/* 0EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x685F, -/* 0EE8 */ 0x685D, 0xFFFD, 0x685E, 0xFFFD, 0xFFFD, 0xFFFD, 0x685B, 0xFFFD, -/* 0EF0 */ 0xFFFD, 0xFFFD, 0x6C57, 0xFFFD, 0x6C58, 0x6C56, 0x685C, 0xFFFD, -/* 0EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7359, 0xFFFD, -/* 0F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x445B, 0x464D, 0x4821, -/* 0F08 */ 0xFFFD, 0x477E, 0xFFFD, 0x4D31, 0x636C, 0xFFFD, 0x453C, 0x464E, -/* 0F10 */ 0x5077, 0x5E7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F18 */ 0xFFFD, 0xFFFD, 0x4A2A, 0xFFFD, 0xFFFD, 0x4A2B, 0xFFFD, 0xFFFD, -/* 0F20 */ 0xFFFD, 0xFFFD, 0x4A29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F28 */ 0x4D35, 0x4D36, 0x4D33, 0xFFFD, 0xFFFD, 0x4D32, 0xFFFD, 0x4D34, -/* 0F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5078, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F38 */ 0xFFFD, 0x5079, 0x553D, 0xFFFD, 0xFFFD, 0xFFFD, 0x553B, 0xFFFD, -/* 0F40 */ 0x553C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F48 */ 0x5A2D, 0x5A2C, 0x5A2A, 0x5A2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F50 */ 0xFFFD, 0x5A2E, 0xFFFD, 0xFFFD, 0x5F21, 0x5F22, 0xFFFD, 0x5F23, -/* 0F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x636E, 0x636D, 0x5E7E, 0xFFFD, 0xFFFD, -/* 0F60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6860, 0xFFFD, -/* 0F68 */ 0xFFFD, 0x6861, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C5A, 0xFFFD, 0xFFFD, -/* 0F70 */ 0x6C5C, 0xFFFD, 0x6C5B, 0x6C5E, 0xFFFD, 0x6C59, 0x6C5D, 0xFFFD, -/* 0F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7833, -/* 0F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D22, 0xFFFD, -/* 0F88 */ 0xFFFD, 0x4D37, 0x4A2C, 0xFFFD, 0xFFFD, 0x507A, 0xFFFD, 0xFFFD, -/* 0F90 */ 0xFFFD, 0x445C, 0x453D, 0xFFFD, 0x464F, 0xFFFD, 0xFFFD, 0x4A2D, -/* 0F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x507B, 0xFFFD, 0x6862, 0x445D, 0xFFFD, -/* 0FA0 */ 0xFFFD, 0xFFFD, 0x4822, 0xFFFD, 0xFFFD, 0x636F, 0x445E, 0x453E, -/* 0FA8 */ 0x453F, 0xFFFD, 0x4651, 0x4650, 0xFFFD, 0xFFFD, 0x4823, 0xFFFD, -/* 0FB0 */ 0xFFFD, 0xFFFD, 0x4A2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FB8 */ 0xFFFD, 0x4D38, 0x4D39, 0xFFFD, 0x4D3A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FC0 */ 0x507C, 0xFFFD, 0xFFFD, 0xFFFD, 0x553E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FC8 */ 0x5A2F, 0xFFFD, 0x5A30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F24, -/* 0FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FD8 */ 0xFFFD, 0x6863, 0xFFFD, 0x6C5F, 0xFFFD, 0x7053, 0xFFFD, 0x735A, -/* 0FE0 */ 0xFFFD, 0x7B5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FE8 */ 0xFFFD, 0xFFFD, 0x5A31, 0xFFFD, 0x6370, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FF0 */ 0xFFFD, 0x7641, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A30, 0xFFFD, 0x4A2F, -/* 0FF8 */ 0x507D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A33, 0x5D29, 0x5A34, 0x5A32, -/* 1000 */ 0x5F25, 0xFFFD, 0xFFFD, 0x6864, 0x6C60, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1008 */ 0xFFFD, 0xFFFD, 0x4A31, 0xFFFD, 0x4A32, 0xFFFD, 0xFFFD, 0x4D3E, -/* 1010 */ 0xFFFD, 0xFFFD, 0x4D3D, 0x4D3B, 0x4D3C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1018 */ 0x5121, 0xFFFD, 0x5124, 0x507E, 0x5126, 0x5122, 0x5123, 0x5125, -/* 1020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5541, 0x5540, 0x553F, 0xFFFD, 0xFFFD, -/* 1028 */ 0xFFFD, 0xFFFD, 0x5A35, 0x5A38, 0x5A36, 0xFFFD, 0xFFFD, 0x5A3B, -/* 1030 */ 0xFFFD, 0x5A37, 0xFFFD, 0x5A3A, 0x5A39, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F28, 0x5F26, 0x5F27, 0xFFFD, 0x6371, -/* 1040 */ 0xFFFD, 0x6372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1048 */ 0x6C62, 0xFFFD, 0x6C61, 0xFFFD, 0x6865, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1050 */ 0x735B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4540, 0xFFFD, -/* 1058 */ 0x4652, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A34, -/* 1060 */ 0x4A36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1068 */ 0xFFFD, 0x4825, 0x4A35, 0x4A33, 0x4824, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1070 */ 0x4D3F, 0xFFFD, 0xFFFD, 0x4D40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A3A, 0x4A38, 0xFFFD, -/* 1080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A37, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1088 */ 0x4D42, 0xFFFD, 0xFFFD, 0x4A39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1090 */ 0x4D41, 0xFFFD, 0x4D43, 0x512B, 0x4D44, 0xFFFD, 0xFFFD, 0x5127, -/* 1098 */ 0xFFFD, 0x4D45, 0x4D4A, 0x4D48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10A0 */ 0x4D4F, 0xFFFD, 0x5128, 0xFFFD, 0xFFFD, 0x5129, 0x4D4B, 0xFFFD, -/* 10A8 */ 0xFFFD, 0xFFFD, 0x512A, 0xFFFD, 0x4D4C, 0x512C, 0x4D4D, 0x4D49, -/* 10B0 */ 0x4D4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10B8 */ 0xFFFD, 0xFFFD, 0x4D47, 0x5132, 0xFFFD, 0xFFFD, 0x5131, 0xFFFD, -/* 10C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x512D, 0xFFFD, 0xFFFD, -/* 10C8 */ 0x5545, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5546, 0xFFFD, 0xFFFD, -/* 10D0 */ 0xFFFD, 0x5542, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10D8 */ 0xFFFD, 0xFFFD, 0x5130, 0x5543, 0x5136, 0x5544, 0xFFFD, 0xFFFD, -/* 10E0 */ 0x512F, 0x5548, 0x5135, 0x5134, 0x5133, 0x5547, 0xFFFD, 0x5549, -/* 10E8 */ 0x512E, 0x5A3C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x554A, 0x5550, -/* 10F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A3E, 0xFFFD, 0xFFFD, 0x554F, 0x554D, -/* 10F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x554E, 0xFFFD, -/* 1100 */ 0x5551, 0xFFFD, 0xFFFD, 0xFFFD, 0x554C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1108 */ 0xFFFD, 0x554B, 0x5A3F, 0xFFFD, 0xFFFD, 0x5A3D, 0xFFFD, 0xFFFD, -/* 1110 */ 0xFFFD, 0xFFFD, 0x5A40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F2B, 0xFFFD, 0x5A42, 0x5A47, -/* 1120 */ 0x5F2C, 0xFFFD, 0x5A4E, 0xFFFD, 0xFFFD, 0x5A46, 0x5A49, 0x5A44, -/* 1128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A45, -/* 1130 */ 0x5A4C, 0x5A50, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A41, 0xFFFD, 0xFFFD, -/* 1138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F29, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A4B, -/* 1140 */ 0xFFFD, 0xFFFD, 0x5A4A, 0xFFFD, 0x5A4F, 0xFFFD, 0x5A48, 0xFFFD, -/* 1148 */ 0xFFFD, 0x5A4D, 0x5F2D, 0x5F2A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1150 */ 0x5A43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1158 */ 0xFFFD, 0xFFFD, 0x5F32, 0x5F36, 0xFFFD, 0x6377, 0x5F34, 0xFFFD, -/* 1160 */ 0x5F38, 0xFFFD, 0xFFFD, 0x6379, 0x5F30, 0x5F33, 0xFFFD, 0xFFFD, -/* 1168 */ 0xFFFD, 0xFFFD, 0x5F3A, 0x637A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1170 */ 0x6426, 0xFFFD, 0x637B, 0x5F39, 0xFFFD, 0xFFFD, 0xFFFD, 0x6425, -/* 1178 */ 0x5F37, 0x6374, 0xFFFD, 0xFFFD, 0x5F3B, 0xFFFD, 0xFFFD, 0x5F31, -/* 1180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6373, 0x6378, 0x5F2E, 0xFFFD, -/* 1188 */ 0xFFFD, 0x6376, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F2F, 0xFFFD, 0xFFFD, -/* 1190 */ 0xFFFD, 0x6424, 0x6423, 0xFFFD, 0xFFFD, 0x6427, 0xFFFD, 0xFFFD, -/* 1198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6422, 0x6867, 0xFFFD, 0xFFFD, -/* 11A0 */ 0xFFFD, 0xFFFD, 0x637E, 0xFFFD, 0xFFFD, 0x6866, 0x6375, 0xFFFD, -/* 11A8 */ 0xFFFD, 0x6868, 0x637D, 0x6421, 0x637C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C67, 0xFFFD, 0xFFFD, 0x686E, 0xFFFD, -/* 11B8 */ 0x686D, 0xFFFD, 0xFFFD, 0x6C66, 0xFFFD, 0x686C, 0xFFFD, 0xFFFD, -/* 11C0 */ 0x686A, 0x686B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C64, 0x5F35, 0xFFFD, -/* 11C8 */ 0xFFFD, 0x6C6B, 0xFFFD, 0xFFFD, 0x6C65, 0xFFFD, 0x6C6A, 0xFFFD, -/* 11D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x686F, 0x6C63, 0x6869, 0xFFFD, 0xFFFD, -/* 11D8 */ 0xFFFD, 0xFFFD, 0x6C69, 0xFFFD, 0x6C6C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11E0 */ 0x6C68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11E8 */ 0x7057, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C70, 0xFFFD, 0x6C6E, 0x7055, -/* 11F0 */ 0xFFFD, 0xFFFD, 0x6C74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11F8 */ 0x6C72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1200 */ 0xFFFD, 0xFFFD, 0x6C73, 0xFFFD, 0xFFFD, 0x6C6D, 0xFFFD, 0x7056, -/* 1208 */ 0xFFFD, 0x6C6F, 0x6C71, 0xFFFD, 0x6C75, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1210 */ 0x7054, 0xFFFD, 0xFFFD, 0xFFFD, 0x7059, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x705A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1220 */ 0x735D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x735E, 0x705C, 0x735C, -/* 1228 */ 0x705B, 0x7360, 0xFFFD, 0x7058, 0x7642, 0xFFFD, 0xFFFD, 0x735F, -/* 1230 */ 0x7834, 0xFFFD, 0xFFFD, 0x7837, 0x7836, 0x7835, 0x796C, 0xFFFD, -/* 1238 */ 0x796D, 0xFFFD, 0x7A6A, 0xFFFD, 0x7A6B, 0x7B60, 0x7C36, 0xFFFD, -/* 1240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4541, 0xFFFD, -/* 1248 */ 0x4653, 0xFFFD, 0x4827, 0x4828, 0x4826, 0xFFFD, 0x4829, 0x4A3C, -/* 1250 */ 0x4A3B, 0xFFFD, 0xFFFD, 0x4D51, 0x4D50, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1258 */ 0x5A51, 0x5A52, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F3C, 0xFFFD, 0x6428, -/* 1260 */ 0x6429, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1268 */ 0x6870, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C76, 0xFFFD, 0x705D, 0xFFFD, -/* 1270 */ 0x7361, 0x7643, 0x7362, 0xFFFD, 0x4542, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D53, 0x4D52, 0x4D54, 0x5137, -/* 1280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5552, 0x5A53, 0x5F3D, -/* 1288 */ 0xFFFD, 0x4543, 0xFFFD, 0x445F, 0x4544, 0xFFFD, 0xFFFD, 0x4657, -/* 1290 */ 0x4656, 0x4654, 0x4655, 0xFFFD, 0xFFFD, 0xFFFD, 0x482C, 0xFFFD, -/* 1298 */ 0xFFFD, 0x482B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A0 */ 0xFFFD, 0x482A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A43, 0x4A4C, 0x4A4A, 0xFFFD, 0xFFFD, -/* 12B0 */ 0xFFFD, 0x4A48, 0xFFFD, 0xFFFD, 0x4A41, 0xFFFD, 0xFFFD, 0x4A47, -/* 12B8 */ 0xFFFD, 0xFFFD, 0x4A45, 0xFFFD, 0x4A46, 0x4D55, 0x4A40, 0xFFFD, -/* 12C0 */ 0xFFFD, 0xFFFD, 0x4A3D, 0xFFFD, 0x4A50, 0xFFFD, 0xFFFD, 0x4A42, -/* 12C8 */ 0x4A44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A4F, -/* 12D0 */ 0x4A49, 0x4A4E, 0xFFFD, 0x4A4D, 0x4A3F, 0x4A3E, 0x4A4B, 0x4D63, -/* 12D8 */ 0xFFFD, 0xFFFD, 0x4D5E, 0x4D71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12E0 */ 0x4D6C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D6A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12E8 */ 0x4D5B, 0xFFFD, 0xFFFD, 0x4D65, 0x4D64, 0xFFFD, 0x4D59, 0xFFFD, -/* 12F0 */ 0xFFFD, 0x4D5A, 0xFFFD, 0x4D58, 0xFFFD, 0x4D70, 0x4D68, 0x4D62, -/* 12F8 */ 0x4D56, 0xFFFD, 0x4D61, 0x4D57, 0x4D69, 0x4D72, 0xFFFD, 0x4D66, -/* 1300 */ 0xFFFD, 0x4D5C, 0x4D5F, 0x4D60, 0xFFFD, 0x4D6E, 0x4D6F, 0x4D6D, -/* 1308 */ 0x4D67, 0x4D6B, 0x4D5D, 0x5138, 0x5144, 0x513C, 0x513E, 0x5143, -/* 1310 */ 0xFFFD, 0x5141, 0xFFFD, 0x5553, 0x5146, 0xFFFD, 0xFFFD, 0x5142, -/* 1318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x513B, 0x513F, 0x5145, 0x5555, -/* 1320 */ 0xFFFD, 0x513D, 0x5148, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5140, -/* 1328 */ 0x5554, 0x513A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1330 */ 0xFFFD, 0x5147, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5139, 0x5563, -/* 1338 */ 0xFFFD, 0x5561, 0x5562, 0xFFFD, 0xFFFD, 0xFFFD, 0x5558, 0xFFFD, -/* 1340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1348 */ 0xFFFD, 0x555E, 0xFFFD, 0xFFFD, 0x5560, 0x5557, 0xFFFD, 0xFFFD, -/* 1350 */ 0xFFFD, 0x555A, 0xFFFD, 0xFFFD, 0xFFFD, 0x555B, 0xFFFD, 0xFFFD, -/* 1358 */ 0x555D, 0xFFFD, 0xFFFD, 0x5565, 0x5564, 0x5556, 0x555C, 0x555F, -/* 1360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5559, 0x5A5B, 0x5A6F, 0x5A6E, -/* 1368 */ 0xFFFD, 0x5A63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A5E, -/* 1370 */ 0x5A56, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F4D, 0x5A5A, 0xFFFD, 0xFFFD, -/* 1378 */ 0x5A70, 0x5A6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A6C, 0xFFFD, -/* 1380 */ 0xFFFD, 0x5A61, 0x5A65, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A66, 0x5A60, -/* 1388 */ 0xFFFD, 0xFFFD, 0x5F3F, 0xFFFD, 0xFFFD, 0x5A6B, 0xFFFD, 0xFFFD, -/* 1390 */ 0x5A6A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A57, 0xFFFD, 0x5A5C, 0x5A67, -/* 1398 */ 0xFFFD, 0x5A62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A54, 0x5A68, -/* 13A0 */ 0x5A58, 0x5F3E, 0xFFFD, 0x5A59, 0xFFFD, 0x5A55, 0x5A64, 0x5A5F, -/* 13A8 */ 0x5A5D, 0xFFFD, 0x5A69, 0x5F41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13B0 */ 0xFFFD, 0x5F44, 0xFFFD, 0xFFFD, 0x5F43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13B8 */ 0x5F45, 0xFFFD, 0x5F40, 0x5F48, 0xFFFD, 0x5F46, 0xFFFD, 0xFFFD, -/* 13C0 */ 0xFFFD, 0x5F4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F52, 0x5F50, 0xFFFD, -/* 13C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F49, 0xFFFD, 0x5F47, 0xFFFD, -/* 13D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F42, 0x5F4F, 0xFFFD, 0xFFFD, -/* 13D8 */ 0x5F4B, 0x5F4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F4E, -/* 13E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F53, 0x6438, 0xFFFD, 0xFFFD, -/* 13E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6434, 0xFFFD, 0x6431, 0xFFFD, -/* 13F0 */ 0xFFFD, 0xFFFD, 0x642A, 0x6433, 0xFFFD, 0x6436, 0x6437, 0xFFFD, -/* 13F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6432, 0xFFFD, 0x642C, 0x642D, 0xFFFD, -/* 1400 */ 0x6430, 0x642E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1408 */ 0x687A, 0xFFFD, 0x6435, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1410 */ 0xFFFD, 0x642F, 0x642B, 0x6878, 0x5F51, 0xFFFD, 0x6873, 0xFFFD, -/* 1418 */ 0xFFFD, 0xFFFD, 0x6872, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1420 */ 0xFFFD, 0x6876, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1428 */ 0xFFFD, 0x6879, 0xFFFD, 0x6C77, 0xFFFD, 0xFFFD, 0xFFFD, 0x687B, -/* 1430 */ 0xFFFD, 0x6C78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1438 */ 0xFFFD, 0xFFFD, 0x6875, 0x6C79, 0x6877, 0x687C, 0x6871, 0x6C7C, -/* 1440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C7D, -/* 1448 */ 0xFFFD, 0x6D25, 0x6D22, 0xFFFD, 0x6D23, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1450 */ 0x6D2B, 0x6D29, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C7A, 0xFFFD, 0xFFFD, -/* 1458 */ 0xFFFD, 0x6D2C, 0xFFFD, 0x6874, 0x6D21, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1460 */ 0x6D24, 0xFFFD, 0x6D28, 0x6D2A, 0x6D27, 0x6D26, 0xFFFD, 0x6C7E, -/* 1468 */ 0xFFFD, 0x6C7B, 0x6D2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1470 */ 0xFFFD, 0xFFFD, 0x7061, 0x7062, 0xFFFD, 0x706B, 0x7068, 0xFFFD, -/* 1478 */ 0x705F, 0x7066, 0xFFFD, 0x7064, 0x705E, 0xFFFD, 0x7065, 0xFFFD, -/* 1480 */ 0xFFFD, 0x7364, 0x7060, 0xFFFD, 0x7067, 0x7363, 0xFFFD, 0xFFFD, -/* 1488 */ 0xFFFD, 0x7069, 0xFFFD, 0x706A, 0xFFFD, 0xFFFD, 0xFFFD, 0x7365, -/* 1490 */ 0xFFFD, 0x7063, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7366, -/* 1498 */ 0xFFFD, 0x736B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7368, 0xFFFD, 0xFFFD, -/* 14A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7369, 0x736C, 0xFFFD, 0xFFFD, 0x7367, -/* 14A8 */ 0x736A, 0x7645, 0xFFFD, 0x7644, 0xFFFD, 0xFFFD, 0x764A, 0xFFFD, -/* 14B0 */ 0xFFFD, 0x7648, 0x7649, 0xFFFD, 0xFFFD, 0x7646, 0xFFFD, 0x7838, -/* 14B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7647, 0xFFFD, 0xFFFD, -/* 14C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7839, 0xFFFD, -/* 14C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x796F, 0xFFFD, 0xFFFD, 0xFFFD, 0x796E, -/* 14D0 */ 0x7970, 0xFFFD, 0xFFFD, 0x7A6D, 0x7A6C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14D8 */ 0xFFFD, 0xFFFD, 0x7C37, 0x7B61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14E0 */ 0xFFFD, 0x7C39, 0x7C38, 0x7C5F, 0xFFFD, 0xFFFD, 0x4545, 0xFFFD, -/* 14E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x482D, 0xFFFD, 0x4A53, -/* 14F0 */ 0x4A51, 0xFFFD, 0x4A52, 0xFFFD, 0xFFFD, 0x4D73, 0x5149, 0xFFFD, -/* 14F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x514A, 0xFFFD, 0xFFFD, 0x5566, -/* 1500 */ 0x5567, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A77, 0xFFFD, -/* 1508 */ 0x5A73, 0xFFFD, 0xFFFD, 0x5A7A, 0x5A79, 0x5A72, 0x5A75, 0x5A78, -/* 1510 */ 0x5A74, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A71, 0x5F54, 0xFFFD, 0xFFFD, -/* 1518 */ 0xFFFD, 0x5F56, 0x5F57, 0xFFFD, 0xFFFD, 0x5F55, 0xFFFD, 0xFFFD, -/* 1520 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6439, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1528 */ 0xFFFD, 0x687D, 0xFFFD, 0x706C, 0x6D2E, 0xFFFD, 0x6D2F, 0x6D30, -/* 1530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1538 */ 0xFFFD, 0x736D, 0x736E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4546, 0xFFFD, -/* 1540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F59, -/* 1548 */ 0x5F58, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A6E, 0xFFFD, 0x4547, 0xFFFD, -/* 1550 */ 0x5568, 0xFFFD, 0x5A7C, 0x5A7B, 0xFFFD, 0xFFFD, 0x643A, 0xFFFD, -/* 1558 */ 0x687E, 0xFFFD, 0xFFFD, 0x4548, 0x4658, 0xFFFD, 0x4D74, 0xFFFD, -/* 1560 */ 0xFFFD, 0xFFFD, 0x514B, 0x5A7D, 0xFFFD, 0xFFFD, 0x5F5A, 0x643B, -/* 1568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x764B, 0xFFFD, -/* 1570 */ 0x4549, 0xFFFD, 0xFFFD, 0x4D75, 0x514C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1578 */ 0x5569, 0xFFFD, 0xFFFD, 0xFFFD, 0x556A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1580 */ 0xFFFD, 0xFFFD, 0x5B21, 0x5B22, 0xFFFD, 0x5B23, 0x5A7E, 0xFFFD, -/* 1588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6922, 0x6921, 0xFFFD, -/* 1590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1598 */ 0xFFFD, 0x514D, 0xFFFD, 0xFFFD, 0x454A, 0x4659, 0xFFFD, 0x482F, -/* 15A0 */ 0x482E, 0xFFFD, 0xFFFD, 0x4830, 0x4831, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15A8 */ 0x4A54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15B0 */ 0xFFFD, 0x4D76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D7D, -/* 15B8 */ 0xFFFD, 0x4D7B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D7A, 0x4E23, 0xFFFD, -/* 15C0 */ 0xFFFD, 0x4E22, 0xFFFD, 0x4D79, 0xFFFD, 0x4D7C, 0x4D7E, 0xFFFD, -/* 15C8 */ 0xFFFD, 0xFFFD, 0x4D78, 0x4D77, 0x4E21, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5153, 0x5150, -/* 15D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5156, 0x514E, 0xFFFD, 0x5151, 0x5154, -/* 15E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x514F, 0xFFFD, 0x5152, 0xFFFD, -/* 15E8 */ 0x5155, 0x5572, 0x556B, 0x556E, 0xFFFD, 0x5571, 0xFFFD, 0xFFFD, -/* 15F0 */ 0xFFFD, 0x556C, 0xFFFD, 0xFFFD, 0x5570, 0xFFFD, 0xFFFD, 0x556D, -/* 15F8 */ 0xFFFD, 0xFFFD, 0x556F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1600 */ 0xFFFD, 0xFFFD, 0x5B25, 0xFFFD, 0xFFFD, 0x5B24, 0x5B29, 0xFFFD, -/* 1608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B26, 0xFFFD, 0x5B28, 0xFFFD, -/* 1610 */ 0x5B27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F5B, 0x5F5F, -/* 1618 */ 0x5F5C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F5D, 0xFFFD, 0x5F5E, 0x5F63, -/* 1620 */ 0xFFFD, 0xFFFD, 0x5F61, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F62, 0xFFFD, -/* 1628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6441, 0xFFFD, 0xFFFD, 0x643E, -/* 1630 */ 0x643F, 0x643D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6443, 0xFFFD, 0xFFFD, -/* 1638 */ 0xFFFD, 0x5F60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6440, 0x643C, -/* 1640 */ 0x6442, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6925, 0xFFFD, 0xFFFD, -/* 1648 */ 0xFFFD, 0xFFFD, 0x6923, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1650 */ 0x6924, 0xFFFD, 0xFFFD, 0x6D32, 0xFFFD, 0xFFFD, 0x6D31, 0xFFFD, -/* 1658 */ 0xFFFD, 0x6D34, 0xFFFD, 0xFFFD, 0x6D33, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1660 */ 0x7072, 0x706F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1668 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7070, 0xFFFD, 0x706D, 0x7071, -/* 1670 */ 0xFFFD, 0x706E, 0x7370, 0xFFFD, 0xFFFD, 0x736F, 0xFFFD, 0xFFFD, -/* 1678 */ 0x764C, 0x783B, 0xFFFD, 0xFFFD, 0x783A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1680 */ 0xFFFD, 0xFFFD, 0x7971, 0xFFFD, 0xFFFD, 0x7A6F, 0xFFFD, 0xFFFD, -/* 1688 */ 0x7C3A, 0xFFFD, 0xFFFD, 0xFFFD, 0x454B, 0xFFFD, 0x4832, 0x4833, -/* 1690 */ 0x4A55, 0xFFFD, 0xFFFD, 0x5157, 0x5573, 0x5B2A, 0xFFFD, 0xFFFD, -/* 1698 */ 0x5937, 0xFFFD, 0x5F64, 0x5F65, 0x5E32, 0xFFFD, 0xFFFD, 0x6444, -/* 16A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x454C, 0x4834, 0xFFFD, 0x4E25, -/* 16A8 */ 0xFFFD, 0x4E24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16B0 */ 0x5574, 0x5575, 0xFFFD, 0x5576, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B2C, -/* 16B8 */ 0xFFFD, 0x5F67, 0xFFFD, 0x5F66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16C0 */ 0xFFFD, 0xFFFD, 0x764D, 0x7972, 0x454D, 0xFFFD, 0x465C, 0x465D, -/* 16C8 */ 0x465B, 0x465E, 0x465A, 0xFFFD, 0xFFFD, 0x4837, 0xFFFD, 0xFFFD, -/* 16D0 */ 0x4836, 0x4838, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16D8 */ 0xFFFD, 0x4835, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16E0 */ 0xFFFD, 0xFFFD, 0x4A5F, 0xFFFD, 0xFFFD, 0x4A5E, 0xFFFD, 0xFFFD, -/* 16E8 */ 0xFFFD, 0xFFFD, 0x4A57, 0x4A58, 0x4A59, 0x4A5A, 0xFFFD, 0x4A61, -/* 16F0 */ 0xFFFD, 0xFFFD, 0x4A5C, 0x4A62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16F8 */ 0x4A5B, 0xFFFD, 0x4A5D, 0x4A56, 0x4A60, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E3A, 0xFFFD, -/* 1708 */ 0xFFFD, 0x4E26, 0xFFFD, 0x4E30, 0x4E31, 0x4E29, 0x4E3B, 0x4E2B, -/* 1710 */ 0xFFFD, 0x4E36, 0xFFFD, 0x4E2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1718 */ 0x4E39, 0xFFFD, 0x4E34, 0x4E32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E2D, 0xFFFD, 0x4E33, 0xFFFD, 0x4E27, -/* 1728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E35, 0xFFFD, 0xFFFD, 0x4E38, -/* 1730 */ 0xFFFD, 0x4E28, 0xFFFD, 0x4E2F, 0xFFFD, 0xFFFD, 0x4E37, 0xFFFD, -/* 1738 */ 0x4E2A, 0x4E2E, 0x515F, 0x516C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5165, -/* 1740 */ 0xFFFD, 0x515E, 0xFFFD, 0x5168, 0x5163, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5169, -/* 1750 */ 0x515C, 0x5164, 0x5170, 0x5159, 0x515B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1758 */ 0xFFFD, 0x516D, 0x5166, 0xFFFD, 0xFFFD, 0x516F, 0x516A, 0xFFFD, -/* 1760 */ 0xFFFD, 0xFFFD, 0x516E, 0xFFFD, 0xFFFD, 0x5167, 0xFFFD, 0xFFFD, -/* 1768 */ 0xFFFD, 0x5161, 0xFFFD, 0xFFFD, 0x515D, 0xFFFD, 0xFFFD, 0x5162, -/* 1770 */ 0xFFFD, 0x515A, 0xFFFD, 0x516B, 0x5627, 0x5160, 0xFFFD, 0xFFFD, -/* 1778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5158, -/* 1780 */ 0x562E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5623, 0x562F, 0xFFFD, 0xFFFD, -/* 1788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5577, 0xFFFD, -/* 1790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5621, 0x562C, -/* 1798 */ 0x5578, 0x557C, 0xFFFD, 0xFFFD, 0x562A, 0x5626, 0xFFFD, 0xFFFD, -/* 17A0 */ 0x5629, 0x5630, 0x557D, 0x562B, 0xFFFD, 0x562D, 0x557A, 0xFFFD, -/* 17A8 */ 0x5579, 0xFFFD, 0xFFFD, 0xFFFD, 0x5624, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17B0 */ 0x5628, 0x5625, 0xFFFD, 0x557B, 0x557E, 0x5B33, 0xFFFD, 0xFFFD, -/* 17B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B32, 0xFFFD, -/* 17C0 */ 0x5B2D, 0x5B42, 0x5B38, 0xFFFD, 0x5B3C, 0x5B3B, 0x5B30, 0x5B3D, -/* 17C8 */ 0xFFFD, 0xFFFD, 0x5B36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17D0 */ 0x5B3E, 0xFFFD, 0x5B40, 0xFFFD, 0x5B41, 0x5B2F, 0xFFFD, 0xFFFD, -/* 17D8 */ 0xFFFD, 0xFFFD, 0x5B35, 0x5B3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17E0 */ 0x5B3A, 0xFFFD, 0x5B2E, 0x5B37, 0x5B34, 0xFFFD, 0x5622, 0xFFFD, -/* 17E8 */ 0x5B31, 0x5B39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F7B, 0xFFFD, -/* 17F0 */ 0x5F76, 0xFFFD, 0x5F77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F73, -/* 17F8 */ 0xFFFD, 0xFFFD, 0x5F69, 0xFFFD, 0x5F6C, 0x5F6B, 0xFFFD, 0x5F7C, -/* 1800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F6E, 0x5F6A, 0xFFFD, 0xFFFD, -/* 1808 */ 0x5F75, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F70, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F74, -/* 1818 */ 0xFFFD, 0xFFFD, 0x5F6F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F72, 0x5F68, -/* 1820 */ 0x5F7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1828 */ 0xFFFD, 0xFFFD, 0x5F6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1830 */ 0xFFFD, 0xFFFD, 0x5F78, 0x5F7A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F79, -/* 1838 */ 0x644E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1840 */ 0xFFFD, 0x6452, 0x644A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1848 */ 0x6447, 0x6457, 0xFFFD, 0x6455, 0x6451, 0xFFFD, 0x6449, 0xFFFD, -/* 1850 */ 0xFFFD, 0x6456, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x644F, 0xFFFD, -/* 1858 */ 0xFFFD, 0x6450, 0xFFFD, 0x6446, 0x5F7D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x644B, 0xFFFD, 0x6448, 0xFFFD, 0x6453, -/* 1868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1870 */ 0x644D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6454, 0x6445, 0x6928, 0xFFFD, -/* 1878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x692D, 0x6926, 0xFFFD, 0xFFFD, -/* 1880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6938, 0xFFFD, 0xFFFD, 0x6936, -/* 1888 */ 0xFFFD, 0x6927, 0xFFFD, 0xFFFD, 0x6930, 0xFFFD, 0x6934, 0x692A, -/* 1890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6931, 0xFFFD, 0xFFFD, -/* 1898 */ 0x692E, 0xFFFD, 0xFFFD, 0xFFFD, 0x692F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18A0 */ 0xFFFD, 0xFFFD, 0x6929, 0xFFFD, 0x6937, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x692C, 0x6935, 0x6933, 0xFFFD, -/* 18B0 */ 0xFFFD, 0x6932, 0xFFFD, 0xFFFD, 0x692B, 0x6D37, 0xFFFD, 0xFFFD, -/* 18B8 */ 0xFFFD, 0xFFFD, 0x6D42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18C0 */ 0x6D3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18C8 */ 0xFFFD, 0xFFFD, 0x6D3B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D38, 0x6D40, -/* 18D0 */ 0xFFFD, 0xFFFD, 0x6D41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D3E, -/* 18D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D43, 0xFFFD, -/* 18E0 */ 0x6D3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D3A, 0xFFFD, -/* 18E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D39, 0x6D36, 0xFFFD, 0x6D3C, 0xFFFD, -/* 18F0 */ 0x6D35, 0x7121, 0xFFFD, 0xFFFD, 0x7074, 0x7079, 0x7075, 0xFFFD, -/* 18F8 */ 0xFFFD, 0x7073, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1900 */ 0x707A, 0xFFFD, 0xFFFD, 0x707E, 0x7123, 0xFFFD, 0xFFFD, 0x707D, -/* 1908 */ 0x7078, 0x7076, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7122, -/* 1910 */ 0xFFFD, 0x707C, 0x707B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7077, 0x7378, 0xFFFD, 0x7371, 0xFFFD, -/* 1920 */ 0xFFFD, 0xFFFD, 0x7373, 0x737A, 0xFFFD, 0xFFFD, 0xFFFD, 0x7372, -/* 1928 */ 0xFFFD, 0xFFFD, 0x7379, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7375, -/* 1930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x737B, 0xFFFD, 0x7374, 0x7377, 0xFFFD, -/* 1938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x764F, -/* 1940 */ 0xFFFD, 0x7654, 0x7655, 0xFFFD, 0xFFFD, 0xFFFD, 0x764E, 0xFFFD, -/* 1948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7652, 0xFFFD, 0xFFFD, 0x7651, 0xFFFD, -/* 1950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7653, 0x7650, 0x783F, -/* 1958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x783E, 0x7376, -/* 1960 */ 0xFFFD, 0x783D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1968 */ 0xFFFD, 0x783C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1970 */ 0x7973, 0x7A72, 0x7A70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1980 */ 0xFFFD, 0x7B62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C3B, -/* 1988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D23, 0xFFFD, 0xFFFD, -/* 1990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x454E, -/* 1998 */ 0x4839, 0xFFFD, 0x4E3C, 0x5B43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6022, 0xFFFD, 0xFFFD, 0x6023, 0x6021, -/* 19A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19B0 */ 0x6458, 0xFFFD, 0x6939, 0xFFFD, 0xFFFD, 0x693A, 0xFFFD, 0x6D45, -/* 19B8 */ 0xFFFD, 0x6D44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19C0 */ 0xFFFD, 0xFFFD, 0x7124, 0xFFFD, 0xFFFD, 0x737C, 0xFFFD, 0xFFFD, -/* 19C8 */ 0x7656, 0xFFFD, 0x7B63, 0x454F, 0x465F, 0x483A, 0x4A63, 0x4E3D, -/* 19D0 */ 0x4E3E, 0xFFFD, 0xFFFD, 0x5171, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6459, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19E0 */ 0x7125, 0x7657, 0x4550, 0xFFFD, 0x483B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19E8 */ 0x4E3F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5172, 0xFFFD, 0xFFFD, 0x5173, -/* 19F0 */ 0xFFFD, 0xFFFD, 0x5632, 0x5631, 0x6025, 0xFFFD, 0x6024, 0x6D46, -/* 19F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A00 */ 0xFFFD, 0x737D, 0x7658, 0xFFFD, 0xFFFD, 0x7A73, 0xFFFD, 0xFFFD, -/* 1A08 */ 0x5174, 0xFFFD, 0x5633, 0xFFFD, 0xFFFD, 0x5B44, 0xFFFD, 0x6026, -/* 1A10 */ 0xFFFD, 0xFFFD, 0x645B, 0x645A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A18 */ 0x6D47, 0x6D48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4551, 0xFFFD, -/* 1A20 */ 0x4660, 0xFFFD, 0x4A64, 0xFFFD, 0xFFFD, 0x5175, 0x645C, 0x4552, -/* 1A28 */ 0xFFFD, 0xFFFD, 0x5176, 0xFFFD, 0xFFFD, 0x737E, 0x4553, 0x5B45, -/* 1A30 */ 0x5B46, 0xFFFD, 0xFFFD, 0x6027, 0x645D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7126, 0xFFFD, 0xFFFD, 0x7421, -/* 1A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4554, 0x4662, -/* 1A48 */ 0x4661, 0xFFFD, 0x4E40, 0xFFFD, 0xFFFD, 0x483C, 0xFFFD, 0xFFFD, -/* 1A50 */ 0xFFFD, 0xFFFD, 0x4E41, 0xFFFD, 0xFFFD, 0xFFFD, 0x5177, 0xFFFD, -/* 1A58 */ 0xFFFD, 0xFFFD, 0x5634, 0x5638, 0xFFFD, 0x5637, 0x5635, 0x5636, -/* 1A60 */ 0xFFFD, 0xFFFD, 0x5B47, 0x602A, 0xFFFD, 0x6028, 0x6029, 0xFFFD, -/* 1A68 */ 0xFFFD, 0xFFFD, 0x693B, 0x4555, 0xFFFD, 0xFFFD, 0xFFFD, 0x4663, -/* 1A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4666, 0xFFFD, 0x4665, -/* 1A78 */ 0x4664, 0x4A65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4846, 0x4847, 0xFFFD, 0x4842, -/* 1A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4843, 0xFFFD, 0x483E, 0xFFFD, -/* 1A90 */ 0x483F, 0xFFFD, 0x4845, 0xFFFD, 0x483D, 0x4A66, 0x4840, 0x4841, -/* 1A98 */ 0x4844, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A72, -/* 1AA0 */ 0xFFFD, 0x4A6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A70, -/* 1AA8 */ 0xFFFD, 0x4A77, 0xFFFD, 0x4A79, 0xFFFD, 0x4A7B, 0xFFFD, 0xFFFD, -/* 1AB0 */ 0xFFFD, 0x4A6E, 0xFFFD, 0xFFFD, 0x4A75, 0x4A78, 0xFFFD, 0xFFFD, -/* 1AB8 */ 0x4A68, 0x4B21, 0x4A76, 0xFFFD, 0x4A6B, 0x4A7A, 0xFFFD, 0x4A69, -/* 1AC0 */ 0x4A6A, 0xFFFD, 0xFFFD, 0x4A71, 0x4A7C, 0xFFFD, 0xFFFD, 0x4A6F, -/* 1AC8 */ 0xFFFD, 0x4A74, 0xFFFD, 0x4A7D, 0xFFFD, 0x4A73, 0xFFFD, 0x4A7E, -/* 1AD0 */ 0x4A67, 0xFFFD, 0x4A6C, 0x4E4D, 0x4E5D, 0xFFFD, 0x4E54, 0xFFFD, -/* 1AD8 */ 0xFFFD, 0x4E45, 0xFFFD, 0x4E48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AE0 */ 0x4E50, 0x4E52, 0xFFFD, 0x4E59, 0x4E4B, 0x4E49, 0x4E4A, 0x4E58, -/* 1AE8 */ 0xFFFD, 0x4E53, 0xFFFD, 0xFFFD, 0x4E51, 0x4E56, 0xFFFD, 0xFFFD, -/* 1AF0 */ 0xFFFD, 0x5178, 0x4E5C, 0xFFFD, 0x4E46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E4F, 0xFFFD, 0x4E4E, 0x4E60, 0x4E55, -/* 1B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E5B, 0x4E5F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B08 */ 0x4E61, 0x4E5A, 0x4E4C, 0x4E42, 0xFFFD, 0x4E47, 0xFFFD, 0xFFFD, -/* 1B10 */ 0x4E43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E5E, -/* 1B18 */ 0x5639, 0x4E57, 0xFFFD, 0x4E44, 0xFFFD, 0x5229, 0x5179, 0x517E, -/* 1B20 */ 0xFFFD, 0x5230, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B28 */ 0xFFFD, 0xFFFD, 0x5223, 0xFFFD, 0xFFFD, 0xFFFD, 0x5228, 0xFFFD, -/* 1B30 */ 0xFFFD, 0x5222, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B38 */ 0x517D, 0xFFFD, 0x522B, 0xFFFD, 0x522D, 0x517B, 0x5231, 0xFFFD, -/* 1B40 */ 0xFFFD, 0x522E, 0xFFFD, 0xFFFD, 0x5221, 0x517A, 0xFFFD, 0xFFFD, -/* 1B48 */ 0x522F, 0x5227, 0xFFFD, 0x522C, 0x522A, 0xFFFD, 0x5224, 0xFFFD, -/* 1B50 */ 0x5225, 0x5226, 0xFFFD, 0xFFFD, 0x517C, 0x5641, 0x5646, 0xFFFD, -/* 1B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B60 */ 0xFFFD, 0x564D, 0x563E, 0xFFFD, 0xFFFD, 0x5648, 0x563A, 0xFFFD, -/* 1B68 */ 0x5643, 0xFFFD, 0x5645, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B70 */ 0x5647, 0xFFFD, 0xFFFD, 0x5640, 0x563F, 0x564B, 0x564C, 0xFFFD, -/* 1B78 */ 0x563D, 0x563C, 0x5644, 0x564A, 0xFFFD, 0x5649, 0xFFFD, 0x5B48, -/* 1B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5642, 0x564E, 0x563B, 0x5B6A, -/* 1B88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B57, 0x5B55, 0xFFFD, 0xFFFD, 0x5B4C, -/* 1B90 */ 0xFFFD, 0xFFFD, 0x5B60, 0xFFFD, 0xFFFD, 0x5B5A, 0xFFFD, 0xFFFD, -/* 1B98 */ 0xFFFD, 0x5B49, 0xFFFD, 0xFFFD, 0x5B6C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BA0 */ 0xFFFD, 0x5B69, 0x5B5D, 0x5B68, 0x5B53, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BA8 */ 0x5B54, 0x5B4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B56, 0x5B5E, -/* 1BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B63, 0x5B4B, 0x5B61, -/* 1BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B58, 0xFFFD, 0xFFFD, 0x5B4D, 0xFFFD, -/* 1BC0 */ 0xFFFD, 0x5B4F, 0xFFFD, 0x5B6D, 0xFFFD, 0x5B67, 0xFFFD, 0x5B64, -/* 1BC8 */ 0x5B62, 0x5B6B, 0xFFFD, 0x5B66, 0xFFFD, 0xFFFD, 0x5B65, 0xFFFD, -/* 1BD0 */ 0x5B4A, 0xFFFD, 0x5B5C, 0xFFFD, 0x5B5B, 0xFFFD, 0x5B59, 0x5B51, -/* 1BD8 */ 0x5B50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BE0 */ 0xFFFD, 0xFFFD, 0x5B52, 0x6047, 0x5B5F, 0x6035, 0xFFFD, 0x6043, -/* 1BE8 */ 0xFFFD, 0xFFFD, 0x6032, 0x602E, 0xFFFD, 0x6034, 0x6038, 0x6033, -/* 1BF0 */ 0x603C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6041, 0x603B, -/* 1BF8 */ 0xFFFD, 0x602B, 0xFFFD, 0xFFFD, 0x602F, 0xFFFD, 0x603E, 0xFFFD, -/* 1C00 */ 0xFFFD, 0xFFFD, 0x602C, 0xFFFD, 0x6040, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C08 */ 0x6044, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6042, 0x604A, 0xFFFD, -/* 1C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6031, 0xFFFD, 0xFFFD, 0x603F, -/* 1C18 */ 0x6048, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x602D, 0xFFFD, -/* 1C20 */ 0x6039, 0xFFFD, 0x6037, 0xFFFD, 0xFFFD, 0x6036, 0xFFFD, 0xFFFD, -/* 1C28 */ 0xFFFD, 0x604D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6049, 0xFFFD, 0xFFFD, -/* 1C30 */ 0xFFFD, 0x6030, 0xFFFD, 0x604C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C38 */ 0x603A, 0x603D, 0xFFFD, 0xFFFD, 0x604B, 0x6046, 0xFFFD, 0xFFFD, -/* 1C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6463, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C48 */ 0xFFFD, 0xFFFD, 0x646D, 0xFFFD, 0x6468, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C50 */ 0x646E, 0x6464, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x645E, 0xFFFD, -/* 1C58 */ 0xFFFD, 0x6467, 0xFFFD, 0x6472, 0xFFFD, 0xFFFD, 0x6471, 0x646B, -/* 1C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x645F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C68 */ 0x6473, 0xFFFD, 0x6461, 0xFFFD, 0xFFFD, 0xFFFD, 0x646A, 0xFFFD, -/* 1C70 */ 0x6469, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6462, 0xFFFD, -/* 1C78 */ 0x646F, 0x6466, 0xFFFD, 0x6465, 0xFFFD, 0xFFFD, 0xFFFD, 0x6045, -/* 1C80 */ 0x6957, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x646C, 0xFFFD, 0x6460, -/* 1C88 */ 0x6470, 0x6D5A, 0x6954, 0xFFFD, 0xFFFD, 0x6949, 0xFFFD, 0xFFFD, -/* 1C90 */ 0x6956, 0xFFFD, 0x6940, 0xFFFD, 0xFFFD, 0x6958, 0xFFFD, 0xFFFD, -/* 1C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x693E, 0x6948, 0xFFFD, 0x6955, -/* 1CA0 */ 0x6946, 0xFFFD, 0xFFFD, 0xFFFD, 0x694A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6945, 0xFFFD, 0xFFFD, -/* 1CB0 */ 0xFFFD, 0x693F, 0x693D, 0x694F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6943, 0xFFFD, -/* 1CC0 */ 0x6947, 0x694E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6941, -/* 1CC8 */ 0x6953, 0x6950, 0x6944, 0xFFFD, 0xFFFD, 0x6951, 0xFFFD, 0x694B, -/* 1CD0 */ 0x694D, 0x693C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x694C, 0xFFFD, -/* 1CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6942, 0x6D49, 0x6D4C, 0xFFFD, -/* 1CE0 */ 0xFFFD, 0x6D4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D59, 0xFFFD, 0xFFFD, -/* 1CE8 */ 0x6D51, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5D, 0x6D5C, 0xFFFD, 0xFFFD, -/* 1CF0 */ 0xFFFD, 0x6D57, 0xFFFD, 0x6D4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CF8 */ 0xFFFD, 0xFFFD, 0x6D50, 0x6D53, 0x6D5B, 0x6D56, 0xFFFD, 0xFFFD, -/* 1D00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D52, 0xFFFD, 0x6D55, -/* 1D08 */ 0xFFFD, 0x6D4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x742A, 0xFFFD, 0xFFFD, -/* 1D10 */ 0xFFFD, 0x6D4B, 0xFFFD, 0x6D4F, 0xFFFD, 0x6952, 0xFFFD, 0xFFFD, -/* 1D18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D58, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7133, 0x7129, 0xFFFD, -/* 1D30 */ 0xFFFD, 0x712B, 0xFFFD, 0x7132, 0x712D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7128, 0xFFFD, -/* 1D40 */ 0x712E, 0x7134, 0xFFFD, 0x7131, 0xFFFD, 0xFFFD, 0x7130, 0xFFFD, -/* 1D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x712F, 0x712C, 0x7127, -/* 1D50 */ 0x712A, 0x742E, 0xFFFD, 0xFFFD, 0x7422, 0xFFFD, 0xFFFD, 0x7426, -/* 1D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7424, 0x7425, 0x742C, 0xFFFD, 0xFFFD, -/* 1D60 */ 0x7427, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x742D, 0xFFFD, 0x7428, -/* 1D68 */ 0x742B, 0xFFFD, 0x742F, 0x7429, 0x7430, 0x7423, 0xFFFD, 0xFFFD, -/* 1D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x765D, 0xFFFD, -/* 1D78 */ 0xFFFD, 0xFFFD, 0x765B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D80 */ 0xFFFD, 0xFFFD, 0x765C, 0xFFFD, 0xFFFD, 0x7659, 0xFFFD, 0x765A, -/* 1D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x765F, 0xFFFD, 0x765E, 0xFFFD, 0xFFFD, -/* 1D90 */ 0xFFFD, 0x7845, 0xFFFD, 0xFFFD, 0x7846, 0xFFFD, 0x7843, 0x7840, -/* 1D98 */ 0xFFFD, 0x7844, 0xFFFD, 0x7841, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7842, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7975, 0xFFFD, 0x7976, 0x7A74, -/* 1DB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7B65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DC0 */ 0xFFFD, 0x7C60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D24, 0x7D32, -/* 1DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4556, 0xFFFD, -/* 1DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4848, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DD8 */ 0xFFFD, 0x4B22, 0xFFFD, 0x4B25, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B23, -/* 1DE0 */ 0x4B24, 0x4E65, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E63, 0xFFFD, 0xFFFD, -/* 1DE8 */ 0xFFFD, 0x4E64, 0xFFFD, 0xFFFD, 0x4E62, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DF0 */ 0x4E66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x523A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E00 */ 0xFFFD, 0xFFFD, 0x5232, 0x5235, 0x5237, 0x5239, 0x5236, 0xFFFD, -/* 1E08 */ 0xFFFD, 0xFFFD, 0x5234, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5238, -/* 1E10 */ 0xFFFD, 0x5233, 0x5653, 0xFFFD, 0x564F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E18 */ 0xFFFD, 0x5654, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E20 */ 0xFFFD, 0xFFFD, 0x5650, 0x5652, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5651, 0xFFFD, -/* 1E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E38 */ 0xFFFD, 0x5B72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B6E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B71, -/* 1E48 */ 0x5B6F, 0x5B70, 0x604E, 0x604F, 0xFFFD, 0x6055, 0xFFFD, 0xFFFD, -/* 1E50 */ 0xFFFD, 0xFFFD, 0x6052, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6050, -/* 1E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E60 */ 0xFFFD, 0x6051, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6053, -/* 1E68 */ 0x6522, 0xFFFD, 0xFFFD, 0x6478, 0xFFFD, 0xFFFD, 0x647D, 0xFFFD, -/* 1E70 */ 0x6474, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E78 */ 0x6524, 0xFFFD, 0xFFFD, 0x6475, 0xFFFD, 0xFFFD, 0x647A, 0xFFFD, -/* 1E80 */ 0x6521, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6477, 0x647E, -/* 1E88 */ 0x647C, 0x6479, 0x6523, 0x6476, 0xFFFD, 0xFFFD, 0x647B, 0xFFFD, -/* 1E90 */ 0x6054, 0x695B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E98 */ 0x695D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x695C, 0xFFFD, -/* 1EA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x695E, 0xFFFD, -/* 1EA8 */ 0x6959, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x695A, 0xFFFD, 0xFFFD, -/* 1EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D61, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EC0 */ 0x6D5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D60, 0xFFFD, 0xFFFD, -/* 1EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x713B, 0xFFFD, 0xFFFD, -/* 1ED0 */ 0xFFFD, 0xFFFD, 0x7135, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x713F, -/* 1ED8 */ 0x7140, 0xFFFD, 0xFFFD, 0xFFFD, 0x7139, 0x7136, 0xFFFD, 0xFFFD, -/* 1EE0 */ 0xFFFD, 0xFFFD, 0x713C, 0xFFFD, 0x7137, 0xFFFD, 0x7138, 0xFFFD, -/* 1EE8 */ 0xFFFD, 0x713A, 0xFFFD, 0xFFFD, 0xFFFD, 0x713D, 0xFFFD, 0xFFFD, -/* 1EF0 */ 0x713E, 0xFFFD, 0xFFFD, 0x7432, 0x7439, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EF8 */ 0xFFFD, 0x7435, 0x7434, 0x7431, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F00 */ 0x7437, 0x7436, 0x7433, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F08 */ 0x7438, 0xFFFD, 0xFFFD, 0xFFFD, 0x7663, 0xFFFD, 0xFFFD, 0x7660, -/* 1F10 */ 0x7661, 0xFFFD, 0x7662, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F18 */ 0xFFFD, 0xFFFD, 0x7847, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F20 */ 0xFFFD, 0x7848, 0xFFFD, 0xFFFD, 0x7977, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A75, -/* 1F30 */ 0x7D46, 0xFFFD, 0x4557, 0xFFFD, 0x4E67, 0x4E68, 0xFFFD, 0xFFFD, -/* 1F38 */ 0x523B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x743A, 0x4558, 0xFFFD, -/* 1F40 */ 0x4E69, 0x5655, 0x6525, 0x4559, 0xFFFD, 0x5B73, 0x695F, 0xFFFD, -/* 1F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x743B, 0x455A, -/* 1F50 */ 0x4E6A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6056, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F58 */ 0xFFFD, 0xFFFD, 0x6526, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D62, 0xFFFD, -/* 1F60 */ 0x7849, 0x455B, 0xFFFD, 0x455C, 0xFFFD, 0x484A, 0xFFFD, 0x4849, -/* 1F68 */ 0x4B28, 0x4B27, 0x4B26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E6B, -/* 1F70 */ 0xFFFD, 0x4E6C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x523D, -/* 1F78 */ 0xFFFD, 0xFFFD, 0x523C, 0xFFFD, 0x523E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F80 */ 0xFFFD, 0x5656, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B74, 0xFFFD, 0xFFFD, -/* 1F88 */ 0x6058, 0x5B75, 0xFFFD, 0xFFFD, 0x6057, 0x6960, 0xFFFD, 0xFFFD, -/* 1F90 */ 0xFFFD, 0x6961, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D63, 0xFFFD, -/* 1F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x784A, 0xFFFD, 0xFFFD, -/* 1FA0 */ 0xFFFD, 0xFFFD, 0x7A76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x455D, -/* 1FA8 */ 0xFFFD, 0xFFFD, 0x4667, 0x4E6D, 0xFFFD, 0x4B2A, 0xFFFD, 0x4B29, -/* 1FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FB8 */ 0xFFFD, 0x4E6E, 0xFFFD, 0x4E71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC0 */ 0xFFFD, 0xFFFD, 0x4E70, 0xFFFD, 0x4E6F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5240, 0x5241, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x523F, 0x565B, 0x565A, 0x5658, -/* 1FD8 */ 0xFFFD, 0xFFFD, 0x5657, 0x5659, 0x5B79, 0xFFFD, 0xFFFD, 0x5B78, -/* 1FE0 */ 0xFFFD, 0xFFFD, 0x5B7A, 0xFFFD, 0x5B77, 0x5B76, 0xFFFD, 0xFFFD, -/* 1FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x605A, 0xFFFD, -/* 1FF0 */ 0xFFFD, 0xFFFD, 0x605C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x605B, 0xFFFD, 0x6059, -/* 2000 */ 0x6527, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x652A, -/* 2008 */ 0x6529, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6962, 0x6528, 0xFFFD, -/* 2010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D64, -/* 2018 */ 0xFFFD, 0x6963, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2020 */ 0x6D65, 0x7141, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2028 */ 0xFFFD, 0x743C, 0xFFFD, 0x743D, 0xFFFD, 0xFFFD, 0x7665, 0xFFFD, -/* 2030 */ 0x7664, 0x784B, 0xFFFD, 0x784C, 0x7978, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2038 */ 0xFFFD, 0x7B66, 0xFFFD, 0xFFFD, 0xFFFD, 0x4668, 0xFFFD, 0x565C, -/* 2040 */ 0x5B7B, 0xFFFD, 0x4669, 0xFFFD, 0x455E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B2B, -/* 2050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2058 */ 0x4E74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E76, 0xFFFD, -/* 2060 */ 0xFFFD, 0x4E73, 0x4E72, 0xFFFD, 0x4E75, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5245, 0x5248, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2070 */ 0x5242, 0xFFFD, 0xFFFD, 0xFFFD, 0x5244, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2078 */ 0xFFFD, 0x5247, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5243, 0xFFFD, 0xFFFD, 0x5246, 0x5662, -/* 2088 */ 0xFFFD, 0x5660, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5661, 0xFFFD, 0xFFFD, 0x565D, 0x565F, -/* 2098 */ 0x5C22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B7E, 0xFFFD, 0x5B7C, -/* 20A0 */ 0x5C21, 0xFFFD, 0xFFFD, 0x565E, 0x5B7D, 0xFFFD, 0xFFFD, 0x5C23, -/* 20A8 */ 0x6066, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6060, -/* 20B0 */ 0xFFFD, 0xFFFD, 0x6061, 0x6067, 0xFFFD, 0x6068, 0xFFFD, 0x605E, -/* 20B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6065, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20C0 */ 0x605F, 0x6064, 0x6062, 0x6063, 0xFFFD, 0xFFFD, 0xFFFD, 0x605D, -/* 20C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6531, 0xFFFD, 0x6530, 0x652D, -/* 20D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6532, 0x652C, 0x6533, 0x6534, 0xFFFD, -/* 20D8 */ 0x652F, 0x652E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6965, 0x6964, 0xFFFD, -/* 20E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D66, 0x6966, 0xFFFD, 0xFFFD, 0x6968, -/* 20E8 */ 0xFFFD, 0x652B, 0x6967, 0x6D69, 0xFFFD, 0x6D6A, 0xFFFD, 0xFFFD, -/* 20F0 */ 0x6D68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20F8 */ 0x6D67, 0x7144, 0xFFFD, 0xFFFD, 0xFFFD, 0x7142, 0xFFFD, 0x7146, -/* 2100 */ 0x7145, 0xFFFD, 0xFFFD, 0xFFFD, 0x7143, 0xFFFD, 0xFFFD, 0x7440, -/* 2108 */ 0x7666, 0x7441, 0x743E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2110 */ 0xFFFD, 0x743F, 0x784D, 0xFFFD, 0x7667, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x784E, -/* 2120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7979, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2128 */ 0xFFFD, 0x7A78, 0xFFFD, 0x7A77, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C3C, -/* 2130 */ 0xFFFD, 0x466A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C24, 0xFFFD, 0x7147, -/* 2138 */ 0x784F, 0x7B67, 0xFFFD, 0x466B, 0xFFFD, 0xFFFD, 0x2322, 0x5C25, -/* 2140 */ 0x5C26, 0x6969, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2148 */ 0xFFFD, 0x7148, 0x7149, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2150 */ 0xFFFD, 0xFFFD, 0x7668, 0xFFFD, 0xFFFD, 0x466C, 0xFFFD, 0x5249, -/* 2158 */ 0xFFFD, 0x5C27, 0xFFFD, 0xFFFD, 0x466D, 0xFFFD, 0xFFFD, 0x5C28, -/* 2160 */ 0xFFFD, 0xFFFD, 0x6069, 0x606A, 0xFFFD, 0x466E, 0x466F, 0xFFFD, -/* 2168 */ 0x4B2D, 0x4B2C, 0x524A, 0xFFFD, 0xFFFD, 0x4670, 0x4671, 0x4672, -/* 2170 */ 0x4673, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B2E, 0x4B2F, 0xFFFD, 0xFFFD, -/* 2178 */ 0xFFFD, 0xFFFD, 0x4E77, 0x524E, 0x524C, 0xFFFD, 0x524D, 0x524B, -/* 2180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5663, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2188 */ 0xFFFD, 0x5667, 0x5666, 0xFFFD, 0x5665, 0x5664, 0xFFFD, 0xFFFD, -/* 2190 */ 0xFFFD, 0xFFFD, 0x5C2B, 0xFFFD, 0xFFFD, 0x5C29, 0x5C2A, 0xFFFD, -/* 2198 */ 0xFFFD, 0xFFFD, 0x606C, 0x606B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21A0 */ 0x5C2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6535, 0xFFFD, -/* 21A8 */ 0x6536, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D6B, -/* 21B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7851, 0x7850, -/* 21B8 */ 0xFFFD, 0xFFFD, 0x7B68, 0x4674, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C2D, -/* 21C0 */ 0xFFFD, 0x696A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21C8 */ 0xFFFD, 0x4E79, 0x4E7A, 0xFFFD, 0xFFFD, 0x4E78, 0xFFFD, 0xFFFD, -/* 21D0 */ 0xFFFD, 0xFFFD, 0x5252, 0x5253, 0x5250, 0x5251, 0xFFFD, 0xFFFD, -/* 21D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x524F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21E0 */ 0xFFFD, 0xFFFD, 0x566B, 0x566C, 0xFFFD, 0x5C30, 0xFFFD, 0xFFFD, -/* 21E8 */ 0x5671, 0x566F, 0xFFFD, 0xFFFD, 0x566E, 0x566D, 0x5668, 0xFFFD, -/* 21F0 */ 0xFFFD, 0xFFFD, 0x5670, 0xFFFD, 0xFFFD, 0x5669, 0xFFFD, 0x566A, -/* 21F8 */ 0xFFFD, 0xFFFD, 0x5C31, 0xFFFD, 0xFFFD, 0x5C32, 0xFFFD, 0xFFFD, -/* 2200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C2E, 0x5C2F, 0xFFFD, 0xFFFD, -/* 2208 */ 0x6071, 0x6070, 0xFFFD, 0x606E, 0xFFFD, 0xFFFD, 0x6072, 0xFFFD, -/* 2210 */ 0x6073, 0xFFFD, 0x606D, 0x606F, 0x6538, 0x653B, 0x653A, 0x653F, -/* 2218 */ 0x653E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x653C, 0xFFFD, -/* 2220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x653D, 0x6537, 0x6539, 0xFFFD, 0xFFFD, -/* 2228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x696E, 0xFFFD, 0x696D, -/* 2230 */ 0xFFFD, 0x696C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x696F, -/* 2238 */ 0x6D6E, 0x6D6C, 0x6D71, 0x6D72, 0xFFFD, 0x6D6F, 0xFFFD, 0x6D70, -/* 2240 */ 0x696B, 0xFFFD, 0x6D6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x714A, 0xFFFD, 0xFFFD, -/* 2250 */ 0xFFFD, 0x714B, 0xFFFD, 0x714C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7443, 0xFFFD, 0xFFFD, 0xFFFD, 0x7442, -/* 2260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7444, 0xFFFD, 0xFFFD, -/* 2268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x766B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7669, -/* 2270 */ 0xFFFD, 0x766A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2278 */ 0x7852, 0xFFFD, 0x7853, 0x797A, 0xFFFD, 0xFFFD, 0x797B, 0xFFFD, -/* 2280 */ 0xFFFD, 0xFFFD, 0x7A79, 0xFFFD, 0xFFFD, 0x7B6A, 0xFFFD, 0x7B69, -/* 2288 */ 0xFFFD, 0xFFFD, 0x7C61, 0x7C62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2290 */ 0xFFFD, 0x5254, 0xFFFD, 0xFFFD, 0x6074, 0x6075, 0x4675, 0x484B, -/* 2298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B30, 0xFFFD, 0x4E7B, 0xFFFD, 0x5255, -/* 22A0 */ 0x5256, 0x5257, 0xFFFD, 0xFFFD, 0x5672, 0xFFFD, 0xFFFD, 0x5C33, -/* 22A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6077, 0xFFFD, 0xFFFD, 0x6076, -/* 22B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D73, 0x4676, 0xFFFD, 0x5673, 0xFFFD, -/* 22B8 */ 0xFFFD, 0xFFFD, 0x6078, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22C0 */ 0x6D74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4677, 0xFFFD, 0xFFFD, -/* 22C8 */ 0x4E7C, 0x525A, 0xFFFD, 0x525B, 0x5259, 0xFFFD, 0x5258, 0xFFFD, -/* 22D0 */ 0x5674, 0xFFFD, 0xFFFD, 0x5675, 0x5676, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22D8 */ 0x5C35, 0xFFFD, 0x5C34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22E0 */ 0xFFFD, 0x5C36, 0x6079, 0xFFFD, 0x6540, 0x6541, 0xFFFD, 0x6970, -/* 22E8 */ 0xFFFD, 0x6971, 0x6D75, 0x714E, 0xFFFD, 0x714D, 0xFFFD, 0xFFFD, -/* 22F0 */ 0x7445, 0xFFFD, 0xFFFD, 0xFFFD, 0x4678, 0x4B31, 0xFFFD, 0xFFFD, -/* 22F8 */ 0x4E7D, 0xFFFD, 0x4E7E, 0xFFFD, 0xFFFD, 0xFFFD, 0x525E, 0x525D, -/* 2300 */ 0xFFFD, 0xFFFD, 0x5262, 0xFFFD, 0x5261, 0xFFFD, 0xFFFD, 0x525C, -/* 2308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5263, 0xFFFD, 0x525F, -/* 2310 */ 0xFFFD, 0x5260, 0x5678, 0x5679, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x567A, 0x5677, 0x5C3A, 0x5C37, 0x5C3B, -/* 2320 */ 0xFFFD, 0x5C3C, 0xFFFD, 0x5C39, 0xFFFD, 0x5C38, 0x6542, 0x654A, -/* 2328 */ 0xFFFD, 0x6545, 0xFFFD, 0xFFFD, 0x6975, 0x654D, 0x6546, 0xFFFD, -/* 2330 */ 0x654B, 0x6544, 0xFFFD, 0x654C, 0xFFFD, 0x6548, 0x6543, 0x6549, -/* 2338 */ 0x6547, 0xFFFD, 0xFFFD, 0xFFFD, 0x6973, 0xFFFD, 0x6974, 0xFFFD, -/* 2340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6972, 0xFFFD, 0xFFFD, 0x6D77, 0xFFFD, -/* 2348 */ 0xFFFD, 0xFFFD, 0x6D7A, 0x6D78, 0xFFFD, 0x6D76, 0xFFFD, 0xFFFD, -/* 2350 */ 0x6D79, 0x7150, 0x7151, 0x714F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2358 */ 0x7152, 0xFFFD, 0x744A, 0xFFFD, 0xFFFD, 0x7447, 0xFFFD, 0x7449, -/* 2360 */ 0x744B, 0xFFFD, 0xFFFD, 0x7448, 0xFFFD, 0xFFFD, 0x7446, 0xFFFD, -/* 2368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x766E, 0x766F, -/* 2370 */ 0x766C, 0xFFFD, 0x766D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2378 */ 0xFFFD, 0xFFFD, 0x7854, 0x7A7A, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C63, -/* 2380 */ 0xFFFD, 0xFFFD, 0x7D33, 0x4679, 0x5264, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2388 */ 0xFFFD, 0xFFFD, 0x467A, 0x4B32, 0xFFFD, 0x4F21, 0xFFFD, 0xFFFD, -/* 2390 */ 0xFFFD, 0x567B, 0xFFFD, 0xFFFD, 0xFFFD, 0x607B, 0x654E, 0x744C, -/* 2398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x467B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F22, 0xFFFD, 0xFFFD, -/* 23A8 */ 0xFFFD, 0xFFFD, 0x5265, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5267, 0x5268, 0xFFFD, 0xFFFD, -/* 23B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5266, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5721, 0xFFFD, 0x5727, -/* 23C8 */ 0x5726, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5724, 0xFFFD, 0x567D, -/* 23D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5725, 0xFFFD, 0xFFFD, -/* 23D8 */ 0x567C, 0xFFFD, 0x5728, 0xFFFD, 0x5722, 0xFFFD, 0xFFFD, 0x5723, -/* 23E0 */ 0x567E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C3F, 0x5C3D, -/* 23F8 */ 0x607D, 0xFFFD, 0xFFFD, 0x607E, 0x6555, 0xFFFD, 0xFFFD, 0x6558, -/* 2400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2408 */ 0xFFFD, 0x6554, 0xFFFD, 0xFFFD, 0x6553, 0xFFFD, 0x654F, 0xFFFD, -/* 2410 */ 0xFFFD, 0x6556, 0xFFFD, 0x6557, 0xFFFD, 0xFFFD, 0xFFFD, 0x6551, -/* 2418 */ 0x6552, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6977, -/* 2420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x697B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6978, -/* 2428 */ 0xFFFD, 0x697A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2430 */ 0x6550, 0xFFFD, 0xFFFD, 0x6979, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2438 */ 0xFFFD, 0xFFFD, 0x6D7D, 0xFFFD, 0x6E23, 0xFFFD, 0x6E21, 0xFFFD, -/* 2440 */ 0xFFFD, 0x6976, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D7C, 0xFFFD, 0xFFFD, -/* 2448 */ 0xFFFD, 0xFFFD, 0x6D7E, 0x6D7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2450 */ 0x6E24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E22, 0xFFFD, 0xFFFD, -/* 2458 */ 0xFFFD, 0xFFFD, 0x7154, 0x7156, 0x7153, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2460 */ 0x7155, 0xFFFD, 0xFFFD, 0x7450, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2468 */ 0x744F, 0xFFFD, 0xFFFD, 0x744D, 0xFFFD, 0xFFFD, 0x744E, 0xFFFD, -/* 2470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7451, 0x7670, 0xFFFD, -/* 2478 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2480 */ 0xFFFD, 0x7855, 0x797C, 0xFFFD, 0xFFFD, 0xFFFD, 0x797D, 0x7A21, -/* 2488 */ 0x797E, 0x467C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F23, 0xFFFD, 0x4F24, -/* 2490 */ 0x4F25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5269, 0x526C, 0x526B, -/* 2498 */ 0x526A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x572A, -/* 24A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5729, 0x572D, 0x5730, 0xFFFD, -/* 24A8 */ 0xFFFD, 0x5731, 0xFFFD, 0xFFFD, 0x572F, 0x572E, 0x572C, 0x572B, -/* 24B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C40, 0xFFFD, 0xFFFD, 0x5C41, -/* 24B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C42, 0x6559, 0xFFFD, 0xFFFD, -/* 24C0 */ 0xFFFD, 0xFFFD, 0x655A, 0xFFFD, 0x655B, 0x697E, 0x697C, 0x697D, -/* 24C8 */ 0x7157, 0x7452, 0xFFFD, 0xFFFD, 0x7453, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24D0 */ 0x7671, 0xFFFD, 0xFFFD, 0x7856, 0xFFFD, 0x7B6B, 0xFFFD, 0xFFFD, -/* 24D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x526D, 0x526E, 0xFFFD, 0xFFFD, 0x655D, -/* 24E0 */ 0x467D, 0x4B35, 0x4B34, 0x4B33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24E8 */ 0xFFFD, 0xFFFD, 0x4F27, 0x4F26, 0xFFFD, 0x5271, 0xFFFD, 0xFFFD, -/* 24F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x526F, 0x5270, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24F8 */ 0xFFFD, 0xFFFD, 0x5738, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2500 */ 0xFFFD, 0x5735, 0xFFFD, 0xFFFD, 0xFFFD, 0x5733, 0x5732, 0xFFFD, -/* 2508 */ 0x5736, 0x5734, 0xFFFD, 0x5737, 0x5C43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2510 */ 0xFFFD, 0x6125, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6124, 0xFFFD, -/* 2518 */ 0xFFFD, 0x6122, 0xFFFD, 0xFFFD, 0x6123, 0xFFFD, 0x6121, 0xFFFD, -/* 2520 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6561, 0xFFFD, 0xFFFD, -/* 2528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x655F, 0xFFFD, 0x655E, 0xFFFD, 0x6563, -/* 2530 */ 0x6562, 0x6560, 0x6A21, 0xFFFD, 0xFFFD, 0x6A22, 0xFFFD, 0xFFFD, -/* 2538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E29, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E2A, -/* 2540 */ 0x6E26, 0x6E28, 0xFFFD, 0x6E25, 0x6E27, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2548 */ 0xFFFD, 0xFFFD, 0x715A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x715C, -/* 2550 */ 0x715B, 0x7158, 0x7159, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7454, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7674, 0x7672, 0x7673, 0xFFFD, -/* 2568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7858, 0xFFFD, 0x7857, -/* 2570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2578 */ 0x467E, 0xFFFD, 0x4B36, 0xFFFD, 0xFFFD, 0x4F29, 0x4F28, 0xFFFD, -/* 2580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5272, 0xFFFD, 0x5273, 0xFFFD, 0xFFFD, -/* 2588 */ 0x5739, 0xFFFD, 0xFFFD, 0xFFFD, 0x573A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C44, 0xFFFD, -/* 2598 */ 0xFFFD, 0x5C45, 0x6128, 0x6127, 0x6126, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6564, 0x6565, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A24, 0x6A23, 0xFFFD, -/* 25B0 */ 0xFFFD, 0xFFFD, 0x6E2C, 0x6E2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x715D, 0xFFFD, -/* 25C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7455, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25C8 */ 0x7675, 0x7676, 0xFFFD, 0x7A22, 0xFFFD, 0xFFFD, 0x7C3D, 0x4721, -/* 25D0 */ 0x573B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D7E, 0x5D7D, -/* 25D8 */ 0xFFFD, 0xFFFD, 0x612A, 0xFFFD, 0x6129, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A25, 0xFFFD, 0x6A26, 0xFFFD, -/* 25E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A23, 0xFFFD, 0xFFFD, -/* 25F0 */ 0x484C, 0x4F2A, 0xFFFD, 0xFFFD, 0x5275, 0xFFFD, 0x5274, 0xFFFD, -/* 25F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x573C, 0xFFFD, 0xFFFD, -/* 2600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2608 */ 0x573D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2610 */ 0x5C4B, 0xFFFD, 0x5C48, 0xFFFD, 0xFFFD, 0x5C4C, 0xFFFD, 0x5C46, -/* 2618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C4A, 0xFFFD, 0x5C47, -/* 2620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C49, 0xFFFD, 0x5C4D, 0x612D, 0xFFFD, -/* 2628 */ 0xFFFD, 0x612B, 0xFFFD, 0x6132, 0xFFFD, 0x6131, 0xFFFD, 0x6133, -/* 2630 */ 0x612E, 0x6134, 0x612F, 0xFFFD, 0x6130, 0xFFFD, 0x612C, 0xFFFD, -/* 2638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2640 */ 0x6568, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x656A, -/* 2648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6569, 0xFFFD, -/* 2650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A2A, 0xFFFD, 0x6566, -/* 2658 */ 0x6A31, 0xFFFD, 0xFFFD, 0x6A30, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A29, -/* 2660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2668 */ 0x6A2D, 0x6A28, 0xFFFD, 0x6A2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2670 */ 0xFFFD, 0x6A2C, 0xFFFD, 0xFFFD, 0x6E34, 0x6A27, 0x6E2D, 0xFFFD, -/* 2678 */ 0xFFFD, 0xFFFD, 0x6E2E, 0xFFFD, 0xFFFD, 0x6E30, 0xFFFD, 0xFFFD, -/* 2680 */ 0xFFFD, 0x6A2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2688 */ 0xFFFD, 0x6567, 0x6E33, 0xFFFD, 0xFFFD, 0x6E2F, 0xFFFD, 0x6E31, -/* 2690 */ 0x6E32, 0xFFFD, 0x7160, 0xFFFD, 0xFFFD, 0x6E35, 0x715E, 0xFFFD, -/* 2698 */ 0x7162, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x745B, 0x7163, 0xFFFD, -/* 26A0 */ 0xFFFD, 0x7161, 0xFFFD, 0x7165, 0xFFFD, 0xFFFD, 0x7164, 0x7459, -/* 26A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7458, 0xFFFD, -/* 26B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7456, -/* 26B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x745A, 0x7457, 0xFFFD, 0xFFFD, -/* 26C0 */ 0xFFFD, 0x715F, 0x767A, 0xFFFD, 0xFFFD, 0x767C, 0xFFFD, 0x767B, -/* 26C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7678, 0xFFFD, 0xFFFD, 0x7679, 0x7677, -/* 26D0 */ 0x785D, 0x785B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x785C, 0x7859, -/* 26D8 */ 0x785A, 0x785E, 0xFFFD, 0xFFFD, 0x7A25, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A24, 0x7A26, 0xFFFD, -/* 26E8 */ 0xFFFD, 0x7A7B, 0x7B6D, 0x7B6C, 0xFFFD, 0xFFFD, 0x7C3F, 0x7C3E, -/* 26F0 */ 0x7C40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D25, -/* 26F8 */ 0xFFFD, 0x7D26, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D4B, 0x484D, 0xFFFD, -/* 2700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2708 */ 0x5276, 0x573E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2710 */ 0xFFFD, 0xFFFD, 0x5C4E, 0xFFFD, 0xFFFD, 0x5C50, 0xFFFD, 0x5C4F, -/* 2718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6135, -/* 2720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6136, 0x656B, 0xFFFD, -/* 2728 */ 0x656C, 0xFFFD, 0x656D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A32, 0xFFFD, -/* 2730 */ 0xFFFD, 0xFFFD, 0x6A33, 0x6A34, 0x6E36, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2738 */ 0x2323, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7166, -/* 2740 */ 0x7167, 0xFFFD, 0xFFFD, 0x7461, 0xFFFD, 0xFFFD, 0x745D, 0x7462, -/* 2748 */ 0x745E, 0x7460, 0x745C, 0xFFFD, 0x745F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2750 */ 0xFFFD, 0x767D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2758 */ 0xFFFD, 0x7A27, 0x7A28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2760 */ 0xFFFD, 0xFFFD, 0x484E, 0xFFFD, 0xFFFD, 0x4B37, 0xFFFD, 0xFFFD, -/* 2768 */ 0x4F2B, 0xFFFD, 0x5279, 0xFFFD, 0x5277, 0xFFFD, 0x527C, 0x5278, -/* 2770 */ 0x527D, 0x527B, 0xFFFD, 0x527A, 0x5742, 0x5741, 0xFFFD, 0x574A, -/* 2778 */ 0xFFFD, 0xFFFD, 0x5746, 0xFFFD, 0xFFFD, 0xFFFD, 0x5745, 0x5747, -/* 2780 */ 0xFFFD, 0x5740, 0xFFFD, 0x574B, 0x5748, 0x574C, 0x5749, 0xFFFD, -/* 2788 */ 0xFFFD, 0xFFFD, 0x5743, 0x573F, 0x5744, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x613B, 0xFFFD, 0xFFFD, -/* 2798 */ 0x5C54, 0x5C5B, 0x5C58, 0x5C5E, 0x5C5D, 0x5C59, 0xFFFD, 0xFFFD, -/* 27A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C55, 0xFFFD, 0xFFFD, 0x5C56, 0xFFFD, -/* 27A8 */ 0xFFFD, 0xFFFD, 0x5C57, 0xFFFD, 0x5C5C, 0x5C52, 0x5C5A, 0xFFFD, -/* 27B0 */ 0x5C51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27B8 */ 0xFFFD, 0xFFFD, 0x6138, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x613A, -/* 27C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6573, 0xFFFD, 0xFFFD, -/* 27C8 */ 0x6137, 0xFFFD, 0xFFFD, 0x613E, 0x6140, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D0 */ 0x613F, 0xFFFD, 0x6139, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D8 */ 0x613C, 0xFFFD, 0x6141, 0x5C53, 0x613D, 0x6142, 0xFFFD, 0xFFFD, -/* 27E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x656F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6571, 0x6572, 0xFFFD, 0x6570, 0xFFFD, -/* 27F0 */ 0x656E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27F8 */ 0xFFFD, 0x6A37, 0xFFFD, 0x6E43, 0xFFFD, 0x6A3A, 0xFFFD, 0x6A40, -/* 2800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2808 */ 0xFFFD, 0x6A47, 0x6A44, 0xFFFD, 0xFFFD, 0x6A36, 0x6A3E, 0x6A3D, -/* 2810 */ 0xFFFD, 0x6A3C, 0x6A42, 0xFFFD, 0xFFFD, 0x6A43, 0xFFFD, 0x6A3F, -/* 2818 */ 0x6A35, 0xFFFD, 0x6A38, 0x6A39, 0x6A41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A46, 0xFFFD, 0xFFFD, 0x6A3B, -/* 2828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A45, -/* 2830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E3B, 0x6E44, 0x6E40, -/* 2838 */ 0xFFFD, 0xFFFD, 0x6E3D, 0x6E41, 0xFFFD, 0x6E37, 0xFFFD, 0xFFFD, -/* 2840 */ 0x6E3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E3E, 0x6E42, 0xFFFD, -/* 2848 */ 0xFFFD, 0x6E3C, 0xFFFD, 0xFFFD, 0x6E39, 0xFFFD, 0xFFFD, 0x6E45, -/* 2850 */ 0xFFFD, 0x6E38, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E46, 0xFFFD, -/* 2858 */ 0x6E3A, 0x716A, 0x716F, 0x7168, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2860 */ 0xFFFD, 0x7170, 0x7169, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x716B, 0xFFFD, 0x716E, 0x716D, -/* 2870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x716C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7469, 0xFFFD, 0xFFFD, 0x7463, -/* 2880 */ 0x7473, 0xFFFD, 0x746B, 0x7467, 0xFFFD, 0x746E, 0x7471, 0xFFFD, -/* 2888 */ 0x7466, 0xFFFD, 0x746F, 0xFFFD, 0xFFFD, 0xFFFD, 0x746A, 0x7464, -/* 2890 */ 0x7472, 0xFFFD, 0x746D, 0xFFFD, 0x7468, 0xFFFD, 0x746C, 0x7465, -/* 2898 */ 0xFFFD, 0x7470, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7725, 0xFFFD, 0x767E, 0x7721, 0xFFFD, -/* 28A8 */ 0xFFFD, 0xFFFD, 0x7726, 0x7723, 0xFFFD, 0xFFFD, 0xFFFD, 0x7722, -/* 28B0 */ 0xFFFD, 0xFFFD, 0x7724, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28B8 */ 0xFFFD, 0xFFFD, 0x7862, 0x7863, 0x785F, 0xFFFD, 0x7860, 0xFFFD, -/* 28C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7864, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28C8 */ 0xFFFD, 0xFFFD, 0x7861, 0xFFFD, 0xFFFD, 0x7A2B, 0x7A2A, 0xFFFD, -/* 28D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A7D, 0xFFFD, 0xFFFD, -/* 28E0 */ 0x7A7C, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C41, 0x7C43, 0xFFFD, 0x7C42, -/* 28E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D39, 0x484F, 0xFFFD, -/* 28F0 */ 0x527E, 0xFFFD, 0x574D, 0xFFFD, 0xFFFD, 0x5C5F, 0xFFFD, 0xFFFD, -/* 28F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7474, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2900 */ 0x7727, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A2D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2908 */ 0x7C64, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F2C, 0x4B38, 0xFFFD, 0xFFFD, -/* 2910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x574E, -/* 2918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2920 */ 0xFFFD, 0x6575, 0x6576, 0xFFFD, 0xFFFD, 0xFFFD, 0x6574, 0xFFFD, -/* 2928 */ 0x6A48, 0xFFFD, 0x6577, 0xFFFD, 0xFFFD, 0x6E47, 0xFFFD, 0x6E48, -/* 2930 */ 0xFFFD, 0x7171, 0x7865, 0xFFFD, 0xFFFD, 0x7C65, 0xFFFD, 0x4850, -/* 2938 */ 0x4F2E, 0x4F2D, 0xFFFD, 0x5321, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2940 */ 0xFFFD, 0x574F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C61, -/* 2948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2950 */ 0xFFFD, 0x657A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6579, 0x6578, 0xFFFD, -/* 2958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E49, 0xFFFD, 0xFFFD, 0x7172, -/* 2960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7866, 0xFFFD, 0x7868, 0x7867, 0xFFFD, -/* 2968 */ 0xFFFD, 0x7A7E, 0x4851, 0xFFFD, 0x5322, 0xFFFD, 0x5751, 0xFFFD, -/* 2970 */ 0xFFFD, 0xFFFD, 0x5750, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2978 */ 0xFFFD, 0x5C62, 0xFFFD, 0x5C63, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C64, -/* 2980 */ 0xFFFD, 0x6144, 0x6145, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A4B, 0x6A49, 0x6A4A, 0xFFFD, -/* 2990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E4A, 0xFFFD, -/* 2998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7175, 0xFFFD, 0x7173, 0x7174, 0xFFFD, -/* 29A0 */ 0x7475, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7728, 0xFFFD, -/* 29A8 */ 0x7729, 0x7476, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A2E, 0x4852, 0xFFFD, -/* 29B0 */ 0x4853, 0x5753, 0x4F2F, 0x5752, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29B8 */ 0x6146, 0x4854, 0x5324, 0xFFFD, 0xFFFD, 0x5323, 0x5325, 0x4855, -/* 29C0 */ 0xFFFD, 0xFFFD, 0x5755, 0xFFFD, 0x5757, 0x5754, 0x5756, 0xFFFD, -/* 29C8 */ 0xFFFD, 0x5C65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E4B, 0xFFFD, 0x7176, 0xFFFD, 0xFFFD, -/* 29D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29E0 */ 0x4856, 0xFFFD, 0xFFFD, 0x5326, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29E8 */ 0xFFFD, 0xFFFD, 0x5758, 0xFFFD, 0x5759, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C67, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C66, -/* 29F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6147, -/* 2A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x657B, 0xFFFD, 0x657C, 0xFFFD, 0x6A4D, -/* 2A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A4C, 0x747A, 0x7479, 0x7477, 0x7478, -/* 2A10 */ 0x747B, 0xFFFD, 0xFFFD, 0x772B, 0x772A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A18 */ 0xFFFD, 0xFFFD, 0x7B6F, 0x7B6E, 0x4857, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A20 */ 0xFFFD, 0x657E, 0x6148, 0x657D, 0x6A4E, 0xFFFD, 0x4858, 0xFFFD, -/* 2A28 */ 0x4859, 0x485A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A30 */ 0x4B3A, 0xFFFD, 0xFFFD, 0x4B39, 0xFFFD, 0x4B3C, 0xFFFD, 0x4B3E, -/* 2A38 */ 0x4B3D, 0xFFFD, 0x4B3B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F34, 0x4F32, -/* 2A40 */ 0xFFFD, 0xFFFD, 0x4F31, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F36, 0x4F38, -/* 2A48 */ 0x4F35, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F39, 0xFFFD, 0x4F33, 0x4B3F, -/* 2A50 */ 0xFFFD, 0x4F37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F30, -/* 2A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A60 */ 0x532A, 0x532B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A68 */ 0xFFFD, 0x532C, 0xFFFD, 0x532F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5327, 0xFFFD, 0xFFFD, 0xFFFD, 0x5329, -/* 2A78 */ 0x532E, 0xFFFD, 0x5332, 0x5330, 0xFFFD, 0xFFFD, 0x532D, 0xFFFD, -/* 2A80 */ 0xFFFD, 0x5331, 0x5328, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A88 */ 0xFFFD, 0xFFFD, 0x575E, 0xFFFD, 0x5767, 0x575C, 0x575A, 0xFFFD, -/* 2A90 */ 0x5762, 0x575F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5761, 0xFFFD, 0xFFFD, -/* 2A98 */ 0xFFFD, 0x5766, 0x5764, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x575B, -/* 2AA0 */ 0xFFFD, 0xFFFD, 0x575D, 0x5760, 0xFFFD, 0x5763, 0xFFFD, 0x5765, -/* 2AA8 */ 0x5C6A, 0x5C6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C6C, 0xFFFD, -/* 2AB0 */ 0x5C6B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C68, 0x5C6D, 0xFFFD, 0xFFFD, -/* 2AB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x614E, 0xFFFD, -/* 2AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6150, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x614F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AD0 */ 0x614B, 0x6151, 0xFFFD, 0x614D, 0xFFFD, 0x6A4F, 0x614C, 0xFFFD, -/* 2AD8 */ 0x6152, 0x614A, 0x6149, 0x6624, 0x662A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AE0 */ 0xFFFD, 0x6627, 0xFFFD, 0xFFFD, 0x6625, 0xFFFD, 0x6622, 0x6621, -/* 2AE8 */ 0xFFFD, 0x6626, 0x6153, 0xFFFD, 0xFFFD, 0xFFFD, 0x6623, 0x6628, -/* 2AF0 */ 0x6629, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A54, 0x6A50, 0xFFFD, -/* 2AF8 */ 0x6A55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A52, 0xFFFD, -/* 2B00 */ 0x6A53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A51, 0xFFFD, 0xFFFD, -/* 2B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E51, 0xFFFD, -/* 2B10 */ 0x6E50, 0x6E4C, 0x6E4D, 0x6E4E, 0xFFFD, 0xFFFD, 0x6E4F, 0xFFFD, -/* 2B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7179, 0x7178, -/* 2B20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B28 */ 0xFFFD, 0x7177, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B30 */ 0x747E, 0xFFFD, 0xFFFD, 0x7524, 0x7526, 0x7523, 0x7522, 0xFFFD, -/* 2B38 */ 0x7521, 0x747D, 0xFFFD, 0xFFFD, 0x747C, 0xFFFD, 0xFFFD, 0x7525, -/* 2B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x772C, 0xFFFD, 0x772D, 0xFFFD, 0xFFFD, -/* 2B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7869, 0xFFFD, -/* 2B50 */ 0x7A2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B70, 0xFFFD, 0xFFFD, -/* 2B58 */ 0x7C44, 0x485B, 0xFFFD, 0x4F3A, 0xFFFD, 0x6A56, 0x7527, 0xFFFD, -/* 2B60 */ 0x485C, 0xFFFD, 0x5769, 0x5768, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B68 */ 0xFFFD, 0x485D, 0x5333, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B70 */ 0x6A57, 0x717A, 0x485E, 0xFFFD, 0x4F3B, 0xFFFD, 0x576A, 0xFFFD, -/* 2B78 */ 0x5C6F, 0xFFFD, 0xFFFD, 0x662B, 0xFFFD, 0x6A58, 0x717B, 0x7528, -/* 2B80 */ 0x772E, 0xFFFD, 0x485F, 0x4F3C, 0xFFFD, 0xFFFD, 0x576B, 0xFFFD, -/* 2B88 */ 0x6154, 0xFFFD, 0x6A59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B90 */ 0xFFFD, 0x4860, 0x6155, 0xFFFD, 0x6A5A, 0x4861, 0xFFFD, 0xFFFD, -/* 2B98 */ 0x5334, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x576E, 0xFFFD, -/* 2BA0 */ 0x576C, 0x576D, 0x576F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C70, 0x5C72, 0x5C71, 0xFFFD, 0x5C73, -/* 2BB0 */ 0x662C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A5B, 0x717C, 0x717D, 0x7A30, -/* 2BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4862, -/* 2BC0 */ 0x4B40, 0xFFFD, 0x7529, 0x4863, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BC8 */ 0x7C6C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4864, -/* 2BD0 */ 0x4B42, 0xFFFD, 0x4B43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B41, -/* 2BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F3F, 0xFFFD, -/* 2BE0 */ 0xFFFD, 0xFFFD, 0x4F3E, 0xFFFD, 0x4F42, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BE8 */ 0x4F49, 0xFFFD, 0x4F46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BF0 */ 0xFFFD, 0x4F45, 0x4F40, 0xFFFD, 0x4F47, 0x4F4A, 0x4F44, 0xFFFD, -/* 2BF8 */ 0x4F3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F4C, 0x4F48, 0x4F43, 0xFFFD, -/* 2C00 */ 0x5770, 0xFFFD, 0x4F41, 0x4F4B, 0x5345, 0x533F, 0x5347, 0x5344, -/* 2C08 */ 0xFFFD, 0xFFFD, 0x5340, 0xFFFD, 0xFFFD, 0xFFFD, 0x5339, 0x5343, -/* 2C10 */ 0xFFFD, 0x5346, 0x5348, 0xFFFD, 0xFFFD, 0xFFFD, 0x5338, 0xFFFD, -/* 2C18 */ 0x533C, 0x533A, 0x5335, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C20 */ 0xFFFD, 0xFFFD, 0x5349, 0xFFFD, 0x5341, 0x5342, 0x533D, 0x5336, -/* 2C28 */ 0x533B, 0x5337, 0x534A, 0xFFFD, 0xFFFD, 0x533E, 0x5823, 0xFFFD, -/* 2C30 */ 0xFFFD, 0x5771, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5822, -/* 2C38 */ 0x577B, 0xFFFD, 0x5779, 0x5778, 0x577D, 0xFFFD, 0x5775, 0x577C, -/* 2C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5821, 0xFFFD, -/* 2C48 */ 0xFFFD, 0x5824, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5777, -/* 2C50 */ 0x5774, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x577A, 0x5776, 0xFFFD, -/* 2C58 */ 0x5772, 0xFFFD, 0x5773, 0x5D23, 0x5C77, 0xFFFD, 0xFFFD, 0x5D24, -/* 2C60 */ 0x5D25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C68 */ 0xFFFD, 0xFFFD, 0x5D26, 0xFFFD, 0xFFFD, 0x5D21, 0x5C7D, 0xFFFD, -/* 2C70 */ 0xFFFD, 0xFFFD, 0x5C74, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C7C, 0x5C7E, -/* 2C78 */ 0xFFFD, 0xFFFD, 0x5C79, 0xFFFD, 0x5C76, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C80 */ 0xFFFD, 0xFFFD, 0x5C75, 0xFFFD, 0x5D22, 0xFFFD, 0x5C78, 0xFFFD, -/* 2C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D27, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C7B, -/* 2C90 */ 0x5C7A, 0xFFFD, 0xFFFD, 0xFFFD, 0x615D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C98 */ 0x615B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6168, 0xFFFD, 0x6165, -/* 2CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x616E, -/* 2CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x616C, -/* 2CB0 */ 0xFFFD, 0xFFFD, 0x616F, 0x615A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6156, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CC0 */ 0xFFFD, 0xFFFD, 0x615E, 0x6163, 0x615F, 0x6167, 0xFFFD, 0x6160, -/* 2CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6158, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CD0 */ 0x6166, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6157, 0x616B, -/* 2CD8 */ 0xFFFD, 0xFFFD, 0x616D, 0xFFFD, 0xFFFD, 0x6162, 0x615C, 0x6164, -/* 2CE0 */ 0x6159, 0x616A, 0x655C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6630, -/* 2CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6638, 0xFFFD, 0xFFFD, 0x6169, 0xFFFD, -/* 2CF0 */ 0xFFFD, 0xFFFD, 0x6637, 0x662F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x663D, 0xFFFD, 0xFFFD, 0x6634, -/* 2D00 */ 0x6161, 0xFFFD, 0xFFFD, 0xFFFD, 0x6636, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D08 */ 0xFFFD, 0xFFFD, 0x6639, 0xFFFD, 0x663A, 0xFFFD, 0xFFFD, 0x6632, -/* 2D10 */ 0xFFFD, 0xFFFD, 0x663B, 0xFFFD, 0x6633, 0x6635, 0x663C, 0xFFFD, -/* 2D18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6631, 0xFFFD, -/* 2D20 */ 0x662E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x662D, 0x6A68, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A60, 0xFFFD, 0xFFFD, -/* 2D38 */ 0x6A63, 0xFFFD, 0x6A61, 0x6A62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D40 */ 0xFFFD, 0x6A65, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A69, 0xFFFD, 0xFFFD, -/* 2D48 */ 0x6A5D, 0x6A66, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A5F, 0xFFFD, 0x6A5E, -/* 2D50 */ 0xFFFD, 0xFFFD, 0x6A5C, 0x6A6B, 0x6A64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D58 */ 0xFFFD, 0xFFFD, 0x6A6A, 0xFFFD, 0x6A67, 0x6E5D, 0xFFFD, 0x6E55, -/* 2D60 */ 0x6E5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E60, -/* 2D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D70 */ 0xFFFD, 0xFFFD, 0x6E59, 0xFFFD, 0x6E58, 0x6E5C, 0xFFFD, 0xFFFD, -/* 2D78 */ 0x6E52, 0xFFFD, 0xFFFD, 0x6E54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D80 */ 0xFFFD, 0xFFFD, 0x6E5B, 0xFFFD, 0x6E5A, 0xFFFD, 0x6E5E, 0xFFFD, -/* 2D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E56, 0x6E57, 0x6E53, -/* 2D90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7225, 0xFFFD, 0xFFFD, -/* 2D98 */ 0xFFFD, 0xFFFD, 0x7222, 0x7226, 0x717E, 0x7221, 0xFFFD, 0xFFFD, -/* 2DA0 */ 0xFFFD, 0xFFFD, 0x7229, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7223, 0x7224, 0x7228, 0xFFFD, -/* 2DB0 */ 0xFFFD, 0x7227, 0x752C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DB8 */ 0x752B, 0xFFFD, 0xFFFD, 0x7532, 0xFFFD, 0xFFFD, 0x7534, 0xFFFD, -/* 2DC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x752E, 0xFFFD, 0xFFFD, -/* 2DC8 */ 0x752F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7531, -/* 2DD0 */ 0x752D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DD8 */ 0xFFFD, 0xFFFD, 0x7535, 0xFFFD, 0x7533, 0x7730, 0x752A, 0xFFFD, -/* 2DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7530, 0x7734, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7736, 0x7735, 0x7733, -/* 2DF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7731, 0xFFFD, 0x772F, 0x7732, 0xFFFD, -/* 2DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x786D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x786B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E08 */ 0xFFFD, 0xFFFD, 0x786E, 0x786F, 0xFFFD, 0xFFFD, 0xFFFD, 0x786A, -/* 2E10 */ 0x786C, 0x7870, 0xFFFD, 0x7A32, 0x7A34, 0x7A31, 0xFFFD, 0xFFFD, -/* 2E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E20 */ 0x7A35, 0x7A37, 0xFFFD, 0xFFFD, 0x7A38, 0x7A36, 0xFFFD, 0xFFFD, -/* 2E28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E30 */ 0xFFFD, 0x7B21, 0xFFFD, 0xFFFD, 0x7B23, 0x7B22, 0xFFFD, 0xFFFD, -/* 2E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E40 */ 0x7C45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C46, -/* 2E48 */ 0x4F4D, 0xFFFD, 0x534B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5825, 0x5D28, -/* 2E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6170, 0x663F, 0xFFFD, -/* 2E58 */ 0x663E, 0x6640, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E60 */ 0xFFFD, 0x7536, 0xFFFD, 0xFFFD, 0xFFFD, 0x4865, 0xFFFD, 0xFFFD, -/* 2E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x534C, 0x534E, 0x534D, 0x5826, 0xFFFD, -/* 2E78 */ 0x582B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5828, -/* 2E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E88 */ 0x582D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x582C, -/* 2E90 */ 0x5829, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x582A, 0x5827, 0xFFFD, -/* 2E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D32, 0xFFFD, 0x5D31, 0xFFFD, 0xFFFD, -/* 2EA0 */ 0xFFFD, 0x5D2E, 0x5D2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D2B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EB0 */ 0x5D2D, 0xFFFD, 0x5D2F, 0x5D2A, 0xFFFD, 0x5D33, 0xFFFD, 0x5D30, -/* 2EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6177, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EC0 */ 0x6174, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6172, 0xFFFD, 0x6175, -/* 2EC8 */ 0xFFFD, 0xFFFD, 0x6178, 0x6171, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2ED0 */ 0x6176, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2ED8 */ 0xFFFD, 0x6173, 0x6641, 0xFFFD, 0x6647, 0xFFFD, 0xFFFD, 0x6646, -/* 2EE0 */ 0xFFFD, 0x6645, 0xFFFD, 0x6648, 0x6649, 0xFFFD, 0xFFFD, 0x664A, -/* 2EE8 */ 0x6644, 0x6643, 0xFFFD, 0x664B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6642, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EF8 */ 0xFFFD, 0x6A72, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A6D, 0xFFFD, 0xFFFD, -/* 2F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A6F, 0xFFFD, 0xFFFD, 0x6A70, 0xFFFD, -/* 2F08 */ 0xFFFD, 0xFFFD, 0x6A75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A71, 0xFFFD, 0xFFFD, -/* 2F18 */ 0x6A74, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A6E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F20 */ 0x6A6C, 0x6E6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F28 */ 0x6E6B, 0xFFFD, 0x6A73, 0xFFFD, 0x6E69, 0xFFFD, 0x6E68, 0xFFFD, -/* 2F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E64, 0xFFFD, 0xFFFD, -/* 2F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E65, 0xFFFD, 0x6E67, 0x6E62, 0xFFFD, -/* 2F40 */ 0x6E63, 0xFFFD, 0x6E66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E61, 0x722A, 0xFFFD, 0xFFFD, -/* 2F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x722E, -/* 2F58 */ 0x722C, 0x722B, 0xFFFD, 0xFFFD, 0x722D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x753C, 0xFFFD, 0xFFFD, -/* 2F68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7539, 0xFFFD, 0xFFFD, -/* 2F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x753E, 0x753D, 0xFFFD, 0xFFFD, -/* 2F78 */ 0xFFFD, 0xFFFD, 0x7537, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F80 */ 0x753B, 0xFFFD, 0x753F, 0xFFFD, 0xFFFD, 0x7540, 0xFFFD, 0xFFFD, -/* 2F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7538, 0x753A, 0x7738, 0xFFFD, 0xFFFD, -/* 2F90 */ 0x7737, 0xFFFD, 0xFFFD, 0x7739, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F98 */ 0xFFFD, 0xFFFD, 0x7874, 0xFFFD, 0x7871, 0xFFFD, 0xFFFD, 0x7875, -/* 2FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7872, 0xFFFD, -/* 2FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7873, 0xFFFD, -/* 2FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A39, 0x7A3A, 0xFFFD, -/* 2FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FC0 */ 0x7B27, 0xFFFD, 0x7B26, 0x7B25, 0x7B24, 0x7C47, 0xFFFD, 0xFFFD, -/* 2FC8 */ 0xFFFD, 0xFFFD, 0x7C66, 0xFFFD, 0xFFFD, 0x7C67, 0xFFFD, 0x7D27, -/* 2FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4866, 0x4867, 0x534F, 0xFFFD, -/* 2FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D34, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FE0 */ 0x6179, 0xFFFD, 0x664C, 0xFFFD, 0x6E6C, 0xFFFD, 0x6E6D, 0xFFFD, -/* 2FE8 */ 0xFFFD, 0xFFFD, 0x722F, 0x7C68, 0x4868, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF0 */ 0xFFFD, 0x4F50, 0xFFFD, 0xFFFD, 0x5350, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF8 */ 0xFFFD, 0x582E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3000 */ 0x582F, 0xFFFD, 0x5833, 0xFFFD, 0xFFFD, 0xFFFD, 0x5832, 0xFFFD, -/* 3008 */ 0xFFFD, 0xFFFD, 0x5830, 0x5831, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3010 */ 0xFFFD, 0x5D36, 0xFFFD, 0xFFFD, 0x5D3B, 0xFFFD, 0x5D3A, 0xFFFD, -/* 3018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D38, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D39, -/* 3020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D35, -/* 3028 */ 0x5D37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x617C, 0x617A, -/* 3030 */ 0x617B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3038 */ 0x6654, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3040 */ 0x6656, 0xFFFD, 0x664E, 0x6655, 0xFFFD, 0xFFFD, 0x6651, 0x664F, -/* 3048 */ 0xFFFD, 0xFFFD, 0x6650, 0x6652, 0xFFFD, 0x664D, 0xFFFD, 0x6653, -/* 3050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A7C, 0xFFFD, -/* 3058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A7E, 0xFFFD, 0xFFFD, -/* 3060 */ 0xFFFD, 0x6A76, 0x6A78, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A7A, 0x6A79, -/* 3068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3070 */ 0x6A77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E6F, 0xFFFD, 0xFFFD, -/* 3078 */ 0x6E73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E6E, 0xFFFD, -/* 3080 */ 0x6E70, 0x6E71, 0xFFFD, 0x6E72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3088 */ 0x6A7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7234, -/* 3090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7232, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3098 */ 0x7230, 0x7233, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30A0 */ 0x7231, 0xFFFD, 0xFFFD, 0xFFFD, 0x7542, 0xFFFD, 0x7544, 0xFFFD, -/* 30A8 */ 0xFFFD, 0x7541, 0xFFFD, 0x7545, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30B0 */ 0xFFFD, 0xFFFD, 0x7543, 0x7878, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7879, 0x7877, 0x7876, 0xFFFD, 0xFFFD, -/* 30C0 */ 0xFFFD, 0x7A3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B28, -/* 30C8 */ 0xFFFD, 0x7B29, 0xFFFD, 0xFFFD, 0x7B72, 0xFFFD, 0xFFFD, 0x7B71, -/* 30D0 */ 0x4869, 0xFFFD, 0x5351, 0xFFFD, 0x617D, 0xFFFD, 0xFFFD, 0x773B, -/* 30D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B44, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30E0 */ 0x5D3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D3C, 0xFFFD, 0xFFFD, 0x617E, -/* 30E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6657, 0xFFFD, 0xFFFD, -/* 30F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7236, -/* 30F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7235, 0xFFFD, 0x7546, 0xFFFD, 0xFFFD, -/* 3100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x773C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A3C, 0xFFFD, 0xFFFD, 0x7B2A, 0xFFFD, -/* 3110 */ 0xFFFD, 0x7D28, 0x4B45, 0xFFFD, 0x5352, 0x773D, 0xFFFD, 0xFFFD, -/* 3118 */ 0xFFFD, 0x7A3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B73, 0xFFFD, 0xFFFD, -/* 3120 */ 0xFFFD, 0x4B46, 0xFFFD, 0x5354, 0x5355, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3128 */ 0xFFFD, 0x5353, 0xFFFD, 0x5839, 0xFFFD, 0x5837, 0xFFFD, 0x5836, -/* 3130 */ 0x583D, 0x5835, 0x583E, 0xFFFD, 0x583B, 0xFFFD, 0x5838, 0x583C, -/* 3138 */ 0x583A, 0x5834, 0xFFFD, 0xFFFD, 0x5D45, 0xFFFD, 0x5D3F, 0xFFFD, -/* 3140 */ 0x5D44, 0xFFFD, 0xFFFD, 0x5D46, 0x5D40, 0xFFFD, 0x5D41, 0xFFFD, -/* 3148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D3E, 0xFFFD, 0xFFFD, 0x5D43, 0xFFFD, -/* 3150 */ 0xFFFD, 0xFFFD, 0x5D42, 0xFFFD, 0xFFFD, 0x622B, 0xFFFD, 0x622D, -/* 3158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x622C, 0x6221, 0x6225, 0xFFFD, 0x666B, -/* 3160 */ 0xFFFD, 0xFFFD, 0x6226, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x622A, -/* 3168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3170 */ 0xFFFD, 0x6229, 0xFFFD, 0xFFFD, 0xFFFD, 0x6227, 0x6223, 0x622E, -/* 3178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6228, 0xFFFD, 0xFFFD, 0x6224, -/* 3180 */ 0xFFFD, 0x6222, 0xFFFD, 0x6666, 0x6661, 0xFFFD, 0xFFFD, 0x665C, -/* 3188 */ 0xFFFD, 0x666C, 0x665D, 0xFFFD, 0x6659, 0x6668, 0x6665, 0x6667, -/* 3190 */ 0xFFFD, 0x665E, 0x6663, 0x665A, 0x665B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3198 */ 0xFFFD, 0xFFFD, 0x6669, 0xFFFD, 0x666A, 0x6660, 0xFFFD, 0xFFFD, -/* 31A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6664, 0xFFFD, -/* 31A8 */ 0x665F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B22, 0x6B25, 0xFFFD, -/* 31B0 */ 0xFFFD, 0xFFFD, 0x6B2D, 0xFFFD, 0x6B27, 0xFFFD, 0x6E78, 0xFFFD, -/* 31B8 */ 0xFFFD, 0x6B2C, 0xFFFD, 0x6B2E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B23, -/* 31C0 */ 0xFFFD, 0x6662, 0x6B26, 0xFFFD, 0x6B24, 0x6B28, 0x6B2A, 0x6B21, -/* 31C8 */ 0x6B2F, 0x6B2B, 0xFFFD, 0x6B29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31D0 */ 0xFFFD, 0x6F21, 0xFFFD, 0x6E7B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F24, -/* 31D8 */ 0xFFFD, 0xFFFD, 0x6F25, 0xFFFD, 0xFFFD, 0x6E74, 0xFFFD, 0xFFFD, -/* 31E0 */ 0x6E7E, 0xFFFD, 0xFFFD, 0x6E7D, 0xFFFD, 0x6E77, 0xFFFD, 0xFFFD, -/* 31E8 */ 0x6E76, 0xFFFD, 0x6E7C, 0xFFFD, 0x6E79, 0xFFFD, 0x6F23, 0xFFFD, -/* 31F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E75, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F22, -/* 31F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F26, 0x723C, 0xFFFD, 0xFFFD, -/* 3200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7237, -/* 3208 */ 0x723D, 0xFFFD, 0xFFFD, 0xFFFD, 0x7239, 0xFFFD, 0x7243, 0x723E, -/* 3210 */ 0xFFFD, 0xFFFD, 0x723A, 0xFFFD, 0x7244, 0xFFFD, 0xFFFD, 0x7245, -/* 3218 */ 0x7242, 0x6E7A, 0xFFFD, 0x7238, 0xFFFD, 0x7246, 0xFFFD, 0x723F, -/* 3220 */ 0xFFFD, 0x723B, 0x7240, 0x7241, 0xFFFD, 0x754E, 0xFFFD, 0xFFFD, -/* 3228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x754B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7547, -/* 3230 */ 0xFFFD, 0x754F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3238 */ 0x7548, 0xFFFD, 0x7549, 0xFFFD, 0x754A, 0xFFFD, 0x754D, 0xFFFD, -/* 3240 */ 0xFFFD, 0x754C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3248 */ 0xFFFD, 0x773E, 0xFFFD, 0xFFFD, 0x7741, 0x7740, 0x773F, 0xFFFD, -/* 3250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x787A, 0xFFFD, -/* 3258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7923, 0xFFFD, 0xFFFD, 0x787D, 0xFFFD, -/* 3260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7921, 0x7922, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x787C, 0x7924, 0x787E, -/* 3270 */ 0xFFFD, 0x787B, 0xFFFD, 0xFFFD, 0x7A42, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3280 */ 0x7A43, 0x7A3F, 0xFFFD, 0xFFFD, 0x7A41, 0x7A3E, 0xFFFD, 0xFFFD, -/* 3288 */ 0xFFFD, 0x7B2B, 0xFFFD, 0xFFFD, 0x7B2C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3290 */ 0xFFFD, 0xFFFD, 0x7B2D, 0xFFFD, 0xFFFD, 0x7B74, 0xFFFD, 0xFFFD, -/* 3298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C48, -/* 32A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C6A, -/* 32A8 */ 0x7C69, 0xFFFD, 0xFFFD, 0x7C6B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D34, -/* 32B0 */ 0xFFFD, 0x7D3A, 0x4B47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32B8 */ 0xFFFD, 0xFFFD, 0x7551, 0xFFFD, 0x7550, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32C0 */ 0xFFFD, 0x4B48, 0xFFFD, 0x583F, 0x5D47, 0xFFFD, 0xFFFD, 0x6F27, -/* 32C8 */ 0xFFFD, 0x6F28, 0xFFFD, 0x7742, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D43, -/* 32D0 */ 0x4B49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D48, 0xFFFD, 0xFFFD, -/* 32D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x622F, 0x666D, 0xFFFD, 0xFFFD, -/* 32E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B30, 0x7247, 0x6F29, -/* 32E8 */ 0x7248, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7552, 0xFFFD, -/* 32F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5841, 0x5840, 0xFFFD, 0xFFFD, -/* 32F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6230, 0xFFFD, 0xFFFD, -/* 3300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x666F, 0x666E, 0xFFFD, 0x6B32, -/* 3308 */ 0x6B31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7249, 0xFFFD, -/* 3310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3318 */ 0x4B4A, 0x5356, 0xFFFD, 0x5357, 0x5842, 0x5843, 0xFFFD, 0xFFFD, -/* 3320 */ 0xFFFD, 0xFFFD, 0x5D4E, 0x5D4C, 0x5D49, 0x5D4D, 0x5D4B, 0x5D4A, -/* 3328 */ 0xFFFD, 0xFFFD, 0x6231, 0xFFFD, 0xFFFD, 0x6674, 0x6233, 0x6238, -/* 3330 */ 0xFFFD, 0x623A, 0x6239, 0x623C, 0xFFFD, 0xFFFD, 0x6236, 0x6232, -/* 3338 */ 0x6234, 0xFFFD, 0x623B, 0x6237, 0x6235, 0x6676, 0x6675, 0x6673, -/* 3340 */ 0x6677, 0xFFFD, 0x6671, 0x6672, 0xFFFD, 0x6670, 0xFFFD, 0xFFFD, -/* 3348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B34, 0x6B35, 0x6B33, 0xFFFD, -/* 3350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F32, -/* 3358 */ 0xFFFD, 0x6F2B, 0xFFFD, 0x6F2A, 0x6F34, 0x6F30, 0x6F31, 0x6F2D, -/* 3360 */ 0xFFFD, 0x6F2C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F33, 0xFFFD, 0x6F2E, -/* 3368 */ 0x6F2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x724A, -/* 3370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7556, 0xFFFD, 0x7553, 0x7557, 0x7555, -/* 3378 */ 0x7554, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3380 */ 0x7743, 0xFFFD, 0xFFFD, 0x7925, 0xFFFD, 0x7926, 0xFFFD, 0xFFFD, -/* 3388 */ 0x7A45, 0xFFFD, 0x7A44, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B2E, 0xFFFD, -/* 3390 */ 0xFFFD, 0x7B75, 0x7B76, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C6D, 0x4B4B, -/* 3398 */ 0xFFFD, 0x5D50, 0x5D4F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B36, 0xFFFD, -/* 33A0 */ 0x6F35, 0xFFFD, 0xFFFD, 0x4B4C, 0xFFFD, 0xFFFD, 0x5359, 0x5358, -/* 33A8 */ 0xFFFD, 0xFFFD, 0x5844, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x623F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33B8 */ 0x623E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x623D, 0xFFFD, 0xFFFD, -/* 33C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33C8 */ 0x6B38, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B37, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33D0 */ 0xFFFD, 0xFFFD, 0x6F36, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F37, 0xFFFD, -/* 33D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7558, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B4D, 0x535A, -/* 33E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D52, 0xFFFD, 0xFFFD, -/* 33F0 */ 0xFFFD, 0x5D51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33F8 */ 0xFFFD, 0x6247, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6242, 0x6245, -/* 3400 */ 0xFFFD, 0x6240, 0xFFFD, 0xFFFD, 0x6244, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6243, 0x6246, 0xFFFD, -/* 3410 */ 0x6241, 0xFFFD, 0x6679, 0xFFFD, 0x6678, 0xFFFD, 0xFFFD, 0x6721, -/* 3418 */ 0xFFFD, 0x6722, 0xFFFD, 0x667A, 0xFFFD, 0x667E, 0xFFFD, 0xFFFD, -/* 3420 */ 0xFFFD, 0xFFFD, 0x667B, 0xFFFD, 0xFFFD, 0xFFFD, 0x667C, 0xFFFD, -/* 3428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x667D, 0xFFFD, 0x6B39, -/* 3430 */ 0x6F3C, 0x6F39, 0x6F3A, 0x6F40, 0x6F3E, 0xFFFD, 0x6F3F, 0x6F3B, -/* 3438 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F3D, 0xFFFD, -/* 3440 */ 0x6F38, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x724C, 0xFFFD, -/* 3448 */ 0xFFFD, 0x724D, 0x7250, 0xFFFD, 0xFFFD, 0xFFFD, 0x724F, 0xFFFD, -/* 3450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x724E, -/* 3458 */ 0xFFFD, 0x724B, 0xFFFD, 0xFFFD, 0xFFFD, 0x755B, 0x7559, 0x755C, -/* 3460 */ 0x755A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3468 */ 0xFFFD, 0xFFFD, 0x7749, 0xFFFD, 0xFFFD, 0xFFFD, 0x7744, 0xFFFD, -/* 3470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7748, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3478 */ 0x7745, 0x7747, 0xFFFD, 0x7746, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3480 */ 0xFFFD, 0x792B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7928, -/* 3488 */ 0xFFFD, 0x792D, 0xFFFD, 0x792A, 0xFFFD, 0xFFFD, 0xFFFD, 0x792C, -/* 3490 */ 0xFFFD, 0x7927, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A47, 0x7A49, -/* 3498 */ 0xFFFD, 0xFFFD, 0x7A48, 0xFFFD, 0x7929, 0xFFFD, 0x7A46, 0x7B2F, -/* 34A0 */ 0x7B31, 0xFFFD, 0x7B30, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B77, 0xFFFD, -/* 34A8 */ 0x7B78, 0x7D29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34B0 */ 0xFFFD, 0xFFFD, 0x7D3B, 0x4B4E, 0x5845, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34B8 */ 0xFFFD, 0xFFFD, 0x6723, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34C0 */ 0xFFFD, 0xFFFD, 0x6F41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34C8 */ 0x774A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34D0 */ 0xFFFD, 0xFFFD, 0x4B4F, 0x4F51, 0x535C, 0x535B, 0xFFFD, 0x5848, -/* 34D8 */ 0xFFFD, 0xFFFD, 0x5846, 0xFFFD, 0x5847, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D53, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D54, -/* 34E8 */ 0x6249, 0xFFFD, 0xFFFD, 0x6248, 0x624A, 0xFFFD, 0x6726, 0xFFFD, -/* 34F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6724, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F8 */ 0xFFFD, 0x6725, 0x6727, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3500 */ 0xFFFD, 0xFFFD, 0x6B3B, 0x6B3D, 0x6B3A, 0x6B3C, 0xFFFD, 0xFFFD, -/* 3508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F43, 0x6F48, 0x6F42, 0x6F49, 0x6F44, -/* 3510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F4A, 0x6F46, 0xFFFD, -/* 3518 */ 0xFFFD, 0x6F45, 0x6F47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7252, -/* 3520 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7254, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3528 */ 0x7253, 0xFFFD, 0xFFFD, 0x7251, 0xFFFD, 0xFFFD, 0x755E, 0x7561, -/* 3530 */ 0xFFFD, 0xFFFD, 0x755F, 0xFFFD, 0x755D, 0x7560, 0xFFFD, 0xFFFD, -/* 3538 */ 0xFFFD, 0x774B, 0xFFFD, 0xFFFD, 0xFFFD, 0x774C, 0x792F, 0xFFFD, -/* 3540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x792E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B32, -/* 3550 */ 0xFFFD, 0x7B79, 0x4B50, 0x624B, 0xFFFD, 0xFFFD, 0x6728, 0xFFFD, -/* 3558 */ 0xFFFD, 0xFFFD, 0x6B3E, 0xFFFD, 0xFFFD, 0x7256, 0xFFFD, 0x7255, -/* 3560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7930, 0x7A29, 0x7B33, 0x4B51, -/* 3568 */ 0x5849, 0x6729, 0x4B52, 0xFFFD, 0x4B55, 0x4B54, 0x4B53, 0xFFFD, -/* 3570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F52, 0xFFFD, -/* 3578 */ 0xFFFD, 0x4F54, 0xFFFD, 0xFFFD, 0x4F53, 0x535F, 0xFFFD, 0x5364, -/* 3580 */ 0x5361, 0x535E, 0xFFFD, 0x5365, 0xFFFD, 0x5360, 0x5363, 0xFFFD, -/* 3588 */ 0x5362, 0xFFFD, 0xFFFD, 0x535D, 0xFFFD, 0xFFFD, 0xFFFD, 0x584F, -/* 3590 */ 0xFFFD, 0xFFFD, 0x584C, 0x5853, 0xFFFD, 0x584E, 0xFFFD, 0xFFFD, -/* 3598 */ 0x5851, 0xFFFD, 0xFFFD, 0x584D, 0x584A, 0xFFFD, 0x5850, 0xFFFD, -/* 35A0 */ 0x5852, 0x584B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35A8 */ 0x5D56, 0xFFFD, 0x5D60, 0x5D5C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D64, -/* 35B0 */ 0x5D5D, 0x5D62, 0x5D58, 0xFFFD, 0x5D55, 0x5D57, 0x5D63, 0xFFFD, -/* 35B8 */ 0x5D5B, 0x5D5E, 0x5D5A, 0x5D5F, 0xFFFD, 0x5D61, 0x5D59, 0xFFFD, -/* 35C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35C8 */ 0xFFFD, 0x624C, 0xFFFD, 0xFFFD, 0x624E, 0x6250, 0xFFFD, 0xFFFD, -/* 35D0 */ 0x624D, 0x6251, 0xFFFD, 0x624F, 0xFFFD, 0xFFFD, 0xFFFD, 0x672F, -/* 35D8 */ 0xFFFD, 0x6737, 0xFFFD, 0xFFFD, 0x6738, 0x672D, 0xFFFD, 0xFFFD, -/* 35E0 */ 0xFFFD, 0xFFFD, 0x6732, 0xFFFD, 0xFFFD, 0x672B, 0x672A, 0xFFFD, -/* 35E8 */ 0x6735, 0x6734, 0x6733, 0x6731, 0x6736, 0xFFFD, 0x672C, 0x672E, -/* 35F0 */ 0x6730, 0xFFFD, 0xFFFD, 0x6B40, 0x6B43, 0xFFFD, 0x6B47, 0x6B41, -/* 35F8 */ 0x6B46, 0x6B44, 0xFFFD, 0x6B3F, 0xFFFD, 0x6B45, 0x6B42, 0xFFFD, -/* 3600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F4D, 0x6F4B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3608 */ 0x6F4E, 0x6F4C, 0xFFFD, 0xFFFD, 0xFFFD, 0x725A, 0xFFFD, 0x7258, -/* 3610 */ 0x7257, 0xFFFD, 0x6F4F, 0x7259, 0xFFFD, 0x725C, 0xFFFD, 0x725B, -/* 3618 */ 0x7563, 0xFFFD, 0x7562, 0x7567, 0x7565, 0x7566, 0x774E, 0x7564, -/* 3620 */ 0xFFFD, 0xFFFD, 0x774D, 0x774F, 0xFFFD, 0x7931, 0x7932, 0xFFFD, -/* 3628 */ 0xFFFD, 0xFFFD, 0x7C4A, 0x7C49, 0x4B57, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3630 */ 0x5854, 0x4B58, 0x4B5B, 0xFFFD, 0xFFFD, 0x4B5A, 0xFFFD, 0xFFFD, -/* 3638 */ 0xFFFD, 0x4B59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3640 */ 0x4F57, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F55, 0x4F58, 0xFFFD, 0x4F56, -/* 3648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3650 */ 0x5368, 0xFFFD, 0x5369, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3658 */ 0xFFFD, 0x5366, 0xFFFD, 0xFFFD, 0xFFFD, 0x5367, 0x5856, 0xFFFD, -/* 3660 */ 0xFFFD, 0xFFFD, 0x5855, 0x5857, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3668 */ 0xFFFD, 0x5D65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D66, 0xFFFD, -/* 3670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6253, 0xFFFD, -/* 3678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D67, 0x6255, -/* 3680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6252, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3688 */ 0xFFFD, 0xFFFD, 0x6254, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6739, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3698 */ 0x673A, 0x6B49, 0x6B48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B4A, -/* 36A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36A8 */ 0x6F52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F51, 0xFFFD, -/* 36B0 */ 0xFFFD, 0x6F50, 0x6F53, 0xFFFD, 0xFFFD, 0x725D, 0xFFFD, 0xFFFD, -/* 36B8 */ 0xFFFD, 0xFFFD, 0x7568, 0x7B7A, 0x4B5C, 0x536B, 0x536A, 0x585A, -/* 36C0 */ 0x5859, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5858, 0xFFFD, 0xFFFD, -/* 36C8 */ 0xFFFD, 0xFFFD, 0x5D68, 0x6256, 0xFFFD, 0x6257, 0xFFFD, 0xFFFD, -/* 36D0 */ 0xFFFD, 0x673D, 0x673C, 0xFFFD, 0x673B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B4E, 0x6B4B, 0xFFFD, 0x6B4D, -/* 36E0 */ 0x6B4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F57, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F54, -/* 36F0 */ 0xFFFD, 0x6F55, 0xFFFD, 0x6F56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36F8 */ 0xFFFD, 0xFFFD, 0x725E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x756B, 0xFFFD, 0x756A, 0xFFFD, -/* 3708 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7569, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7750, 0x7751, 0xFFFD, 0x7934, 0xFFFD, -/* 3718 */ 0xFFFD, 0x7933, 0xFFFD, 0xFFFD, 0x7A4A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3720 */ 0xFFFD, 0xFFFD, 0x7B34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3728 */ 0x7C6E, 0x7D2A, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D3C, 0x4B5D, 0x4F59, -/* 3730 */ 0xFFFD, 0x673E, 0xFFFD, 0x7A4B, 0x4B5E, 0x536C, 0x5D69, 0x6258, -/* 3738 */ 0x7752, 0x4F5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x585D, -/* 3740 */ 0x585B, 0x585F, 0xFFFD, 0xFFFD, 0x585E, 0x585C, 0xFFFD, 0xFFFD, -/* 3748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D6C, 0xFFFD, 0xFFFD, 0x5D6B, 0x5D6D, -/* 3750 */ 0xFFFD, 0x5D6F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D6E, 0xFFFD, 0xFFFD, -/* 3758 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D6A, 0x6260, 0xFFFD, -/* 3760 */ 0x625C, 0xFFFD, 0xFFFD, 0xFFFD, 0x625E, 0xFFFD, 0xFFFD, 0x625F, -/* 3768 */ 0x6261, 0xFFFD, 0xFFFD, 0x6259, 0x625A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x625D, 0xFFFD, 0xFFFD, -/* 3778 */ 0xFFFD, 0xFFFD, 0x625B, 0x6749, 0xFFFD, 0xFFFD, 0x673F, 0x6741, -/* 3780 */ 0x674D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6742, 0x6744, 0x674E, 0x6743, -/* 3788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x674C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3790 */ 0x674A, 0xFFFD, 0x6746, 0xFFFD, 0x674B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3798 */ 0x6748, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6740, 0xFFFD, -/* 37A0 */ 0xFFFD, 0x674F, 0x6745, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6747, 0x6B4F, 0xFFFD, 0xFFFD, 0x6B55, -/* 37B0 */ 0x6B59, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B51, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37B8 */ 0xFFFD, 0x6B52, 0x6B5A, 0xFFFD, 0x6B56, 0xFFFD, 0xFFFD, 0x6B54, -/* 37C0 */ 0xFFFD, 0x6B53, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B57, 0x6B58, 0xFFFD, -/* 37C8 */ 0xFFFD, 0xFFFD, 0x6B50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37D0 */ 0x6F63, 0x6F5E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F5A, 0xFFFD, 0xFFFD, -/* 37D8 */ 0xFFFD, 0x6F59, 0x6F5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F5D, -/* 37E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F58, 0xFFFD, 0x6F61, 0xFFFD, 0xFFFD, -/* 37E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37F0 */ 0x6F60, 0x6F5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F5B, -/* 37F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F62, 0xFFFD, 0xFFFD, -/* 3800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7261, 0xFFFD, 0xFFFD, -/* 3808 */ 0xFFFD, 0x7265, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3810 */ 0xFFFD, 0x7267, 0x7269, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x726C, -/* 3818 */ 0xFFFD, 0xFFFD, 0x7573, 0x726E, 0x7268, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3820 */ 0xFFFD, 0xFFFD, 0x725F, 0x726B, 0x7264, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3828 */ 0x726A, 0xFFFD, 0x756E, 0xFFFD, 0xFFFD, 0x7266, 0xFFFD, 0xFFFD, -/* 3830 */ 0x726D, 0x7263, 0xFFFD, 0xFFFD, 0xFFFD, 0x7262, 0xFFFD, 0xFFFD, -/* 3838 */ 0x7260, 0x7570, 0x7572, 0xFFFD, 0x756C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7579, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3848 */ 0xFFFD, 0x7578, 0x7576, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7571, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7575, 0xFFFD, 0xFFFD, 0xFFFD, 0x7577, -/* 3860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x756F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7574, 0xFFFD, 0xFFFD, -/* 3870 */ 0xFFFD, 0x756D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3878 */ 0xFFFD, 0x7754, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7753, 0xFFFD, 0x7755, 0x775D, 0x775B, -/* 3888 */ 0xFFFD, 0x775C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3890 */ 0xFFFD, 0x7756, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7759, 0xFFFD, 0x7758, 0xFFFD, 0x775A, -/* 38A0 */ 0xFFFD, 0xFFFD, 0x7757, 0x7938, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38A8 */ 0x7939, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x793E, 0xFFFD, 0xFFFD, -/* 38B0 */ 0xFFFD, 0x7936, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x793C, 0x7941, -/* 38B8 */ 0x793F, 0xFFFD, 0xFFFD, 0xFFFD, 0x793A, 0x793B, 0xFFFD, 0x7937, -/* 38C0 */ 0xFFFD, 0x7935, 0x793D, 0xFFFD, 0x7940, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38C8 */ 0x7942, 0x7A4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A4D, -/* 38D0 */ 0x7B3B, 0xFFFD, 0xFFFD, 0x7B35, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B3A, -/* 38D8 */ 0x7B36, 0xFFFD, 0x7B37, 0xFFFD, 0xFFFD, 0x7B39, 0xFFFD, 0x7B38, -/* 38E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38E8 */ 0xFFFD, 0x7B7B, 0x7B7C, 0x7B7D, 0x7C4C, 0xFFFD, 0xFFFD, 0x7C4B, -/* 38F0 */ 0x7C4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C6F, 0xFFFD, -/* 38F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D2C, 0xFFFD, 0x7D2B, 0xFFFD, -/* 3900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7D35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3908 */ 0x7D3F, 0x7D3D, 0x7D3E, 0x7D44, 0x4F5B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F5C, 0xFFFD, 0x536D, -/* 3918 */ 0x5860, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D70, 0xFFFD, -/* 3920 */ 0x6264, 0xFFFD, 0xFFFD, 0x6268, 0x6263, 0xFFFD, 0x6265, 0x6267, -/* 3928 */ 0x6266, 0x6262, 0xFFFD, 0xFFFD, 0xFFFD, 0x6750, 0xFFFD, 0xFFFD, -/* 3930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B5B, 0xFFFD, -/* 3938 */ 0x6B5E, 0x6B60, 0x6B5F, 0xFFFD, 0xFFFD, 0x6B5C, 0x6B5D, 0xFFFD, -/* 3940 */ 0xFFFD, 0xFFFD, 0x6F64, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F65, 0xFFFD, -/* 3948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3950 */ 0x726F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x757E, 0xFFFD, 0x757D, 0xFFFD, 0x757A, -/* 3960 */ 0x757B, 0x757C, 0xFFFD, 0xFFFD, 0xFFFD, 0x7760, 0xFFFD, 0xFFFD, -/* 3968 */ 0xFFFD, 0x775E, 0x7761, 0x775F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3970 */ 0xFFFD, 0x7943, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A4F, 0x7B3C, -/* 3978 */ 0x4F5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x486A, 0xFFFD, 0xFFFD, -/* 3980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B62, 0xFFFD, -/* 3988 */ 0x4B63, 0xFFFD, 0x4B60, 0xFFFD, 0xFFFD, 0x4B61, 0x4B5F, 0xFFFD, -/* 3990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F60, -/* 3998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F5F, 0x4F5E, 0xFFFD, 0x4F62, 0xFFFD, -/* 39A0 */ 0x4F61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x536F, -/* 39A8 */ 0x5370, 0x5371, 0xFFFD, 0xFFFD, 0x536E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5867, 0xFFFD, 0xFFFD, 0x5864, -/* 39B8 */ 0xFFFD, 0x5865, 0x5868, 0xFFFD, 0xFFFD, 0x5863, 0x5861, 0x5862, -/* 39C0 */ 0x5866, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D71, 0xFFFD, -/* 39C8 */ 0x5D79, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D75, 0xFFFD, 0x6270, 0x5D73, -/* 39D0 */ 0x5D76, 0x5D72, 0x5D77, 0x5D78, 0x5D74, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39D8 */ 0xFFFD, 0x626C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39E0 */ 0x6271, 0x626D, 0x626E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6269, 0x626B, -/* 39E8 */ 0xFFFD, 0x626F, 0x626A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39F0 */ 0x6752, 0x6753, 0xFFFD, 0xFFFD, 0x6751, 0x6B61, 0xFFFD, 0x6B63, -/* 39F8 */ 0x6B62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7270, 0x7271, 0xFFFD, 0x7272, 0xFFFD, -/* 3A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7621, 0xFFFD, 0xFFFD, -/* 3A10 */ 0x7944, 0xFFFD, 0xFFFD, 0xFFFD, 0x7622, 0x4F63, 0xFFFD, 0x5869, -/* 3A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D7A, 0x6272, 0xFFFD, 0xFFFD, -/* 3A20 */ 0x6274, 0x6273, 0x6275, 0x6276, 0xFFFD, 0x6756, 0x6757, 0x6755, -/* 3A28 */ 0x6B64, 0x6754, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B65, 0xFFFD, -/* 3A30 */ 0xFFFD, 0x7273, 0x7623, 0xFFFD, 0xFFFD, 0x7764, 0xFFFD, 0x7765, -/* 3A38 */ 0x7763, 0xFFFD, 0x7766, 0xFFFD, 0xFFFD, 0xFFFD, 0x7762, 0x7945, -/* 3A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F64, 0x5D7C, 0x5D7B, 0xFFFD, -/* 3A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6277, 0xFFFD, 0xFFFD, 0x6278, 0xFFFD, -/* 3A50 */ 0xFFFD, 0xFFFD, 0x675B, 0x6758, 0xFFFD, 0x675A, 0xFFFD, 0x6759, -/* 3A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B66, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A60 */ 0x6F66, 0xFFFD, 0x6F67, 0x6F68, 0xFFFD, 0x6F69, 0xFFFD, 0xFFFD, -/* 3A68 */ 0xFFFD, 0x7277, 0x7274, 0x7279, 0xFFFD, 0x7275, 0xFFFD, 0x7278, -/* 3A70 */ 0xFFFD, 0xFFFD, 0x7276, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A78 */ 0x7624, 0xFFFD, 0x7625, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A80 */ 0x7767, 0xFFFD, 0xFFFD, 0x7947, 0xFFFD, 0xFFFD, 0x7946, 0xFFFD, -/* 3A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A50, 0xFFFD, 0x7B3F, 0xFFFD, -/* 3A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B3D, 0x7B3E, 0xFFFD, 0xFFFD, -/* 3A98 */ 0xFFFD, 0x7B7E, 0x7C21, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C70, 0xFFFD, -/* 3AA0 */ 0x7C72, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F65, 0xFFFD, -/* 3AB0 */ 0xFFFD, 0xFFFD, 0x675C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x727A, -/* 3AB8 */ 0x727B, 0xFFFD, 0x4F66, 0xFFFD, 0x6F6A, 0x7948, 0x5372, 0xFFFD, -/* 3AC0 */ 0xFFFD, 0xFFFD, 0x727C, 0xFFFD, 0x7C4E, 0x5373, 0xFFFD, 0xFFFD, -/* 3AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AD0 */ 0x675D, 0xFFFD, 0x675E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AD8 */ 0x6B67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AE0 */ 0xFFFD, 0x6B68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F6C, -/* 3AE8 */ 0xFFFD, 0x6F6B, 0xFFFD, 0x6F6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x727D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7626, 0xFFFD, 0xFFFD, 0x7768, -/* 3B00 */ 0xFFFD, 0xFFFD, 0x7769, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B08 */ 0xFFFD, 0x776A, 0x7C23, 0xFFFD, 0x7C22, 0xFFFD, 0xFFFD, 0x7C73, -/* 3B10 */ 0xFFFD, 0xFFFD, 0x7D36, 0xFFFD, 0x5374, 0x6279, 0xFFFD, 0xFFFD, -/* 3B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7627, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7949, 0x5375, 0xFFFD, -/* 3B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5376, 0xFFFD, 0xFFFD, 0x6B69, -/* 3B30 */ 0xFFFD, 0xFFFD, 0x776B, 0xFFFD, 0x794A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B38 */ 0x7B40, 0xFFFD, 0x5377, 0x5E21, 0x5E22, 0xFFFD, 0x627A, 0x627B, -/* 3B40 */ 0xFFFD, 0x627C, 0xFFFD, 0x6762, 0xFFFD, 0x6764, 0xFFFD, 0xFFFD, -/* 3B48 */ 0xFFFD, 0x675F, 0x6760, 0x6763, 0x6761, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B50 */ 0x6B6A, 0x6B6B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F70, 0xFFFD, 0xFFFD, -/* 3B58 */ 0xFFFD, 0xFFFD, 0x6F6E, 0xFFFD, 0xFFFD, 0x7326, 0xFFFD, 0xFFFD, -/* 3B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F6F, 0xFFFD, 0x7324, 0xFFFD, -/* 3B68 */ 0xFFFD, 0x727E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B70 */ 0x7323, 0x7321, 0x7325, 0xFFFD, 0x7322, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7628, -/* 3B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x776E, 0x776C, 0x776F, -/* 3B88 */ 0x776D, 0xFFFD, 0xFFFD, 0xFFFD, 0x7770, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B90 */ 0xFFFD, 0x794C, 0xFFFD, 0xFFFD, 0x794D, 0xFFFD, 0xFFFD, 0x794B, -/* 3B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B42, 0xFFFD, -/* 3BA0 */ 0x7B41, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C24, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BA8 */ 0x7C4F, 0x7C74, 0x7D2D, 0x5378, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BB0 */ 0xFFFD, 0xFFFD, 0x6B6C, 0xFFFD, 0x6B6D, 0xFFFD, 0x6F71, 0xFFFD, -/* 3BB8 */ 0xFFFD, 0x7629, 0xFFFD, 0xFFFD, 0xFFFD, 0x7771, 0xFFFD, 0x794E, -/* 3BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A51, -/* 3BC8 */ 0x5379, 0xFFFD, 0xFFFD, 0xFFFD, 0x537A, 0xFFFD, 0xFFFD, 0x586A, -/* 3BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x627D, 0xFFFD, 0x6322, 0x627E, -/* 3BD8 */ 0xFFFD, 0xFFFD, 0x6324, 0xFFFD, 0x6321, 0xFFFD, 0xFFFD, 0x6323, -/* 3BE0 */ 0xFFFD, 0x6766, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BE8 */ 0xFFFD, 0x6765, 0x6767, 0x6768, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BF0 */ 0x6B6E, 0xFFFD, 0x6B6F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B71, 0x6F72, -/* 3BF8 */ 0xFFFD, 0x6B70, 0xFFFD, 0xFFFD, 0xFFFD, 0x7327, 0xFFFD, 0x6F74, -/* 3C00 */ 0x6F73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F75, 0xFFFD, 0x732C, -/* 3C08 */ 0x732A, 0xFFFD, 0xFFFD, 0x7329, 0xFFFD, 0xFFFD, 0x732B, 0xFFFD, -/* 3C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7328, 0xFFFD, 0xFFFD, -/* 3C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7775, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C20 */ 0xFFFD, 0xFFFD, 0x762A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C28 */ 0xFFFD, 0xFFFD, 0x7774, 0x7772, 0x7773, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C30 */ 0xFFFD, 0xFFFD, 0x794F, 0xFFFD, 0xFFFD, 0xFFFD, 0x7950, 0xFFFD, -/* 3C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A53, 0x7A52, -/* 3C40 */ 0xFFFD, 0xFFFD, 0x7C25, 0xFFFD, 0x7B43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C48 */ 0xFFFD, 0x7C50, 0xFFFD, 0x7D2E, 0x537B, 0xFFFD, 0xFFFD, 0x537C, -/* 3C50 */ 0x7776, 0xFFFD, 0xFFFD, 0x7A54, 0xFFFD, 0xFFFD, 0xFFFD, 0x586B, -/* 3C58 */ 0x6326, 0x6325, 0xFFFD, 0xFFFD, 0x676A, 0xFFFD, 0x6769, 0x676B, -/* 3C60 */ 0x6F77, 0x6F7A, 0x6F7C, 0xFFFD, 0xFFFD, 0x6F7B, 0xFFFD, 0xFFFD, -/* 3C68 */ 0xFFFD, 0x6F7D, 0xFFFD, 0x6F79, 0xFFFD, 0x6F76, 0xFFFD, 0x6F78, -/* 3C70 */ 0xFFFD, 0xFFFD, 0x732E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x732D, 0xFFFD, 0xFFFD, -/* 3C80 */ 0xFFFD, 0x732F, 0x762C, 0xFFFD, 0x762B, 0x7777, 0xFFFD, 0xFFFD, -/* 3C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7951, 0xFFFD, 0xFFFD, -/* 3C90 */ 0x7952, 0x7A55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A56, 0xFFFD, -/* 3C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A58, 0xFFFD, 0x7A57, 0xFFFD, 0xFFFD, -/* 3CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B47, 0xFFFD, 0x7B46, 0xFFFD, -/* 3CA8 */ 0xFFFD, 0x7B45, 0xFFFD, 0x7B44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7C27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7C26, 0xFFFD, 0x7C53, 0xFFFD, 0xFFFD, -/* 3CC0 */ 0x7C51, 0x7C52, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C75, 0xFFFD, 0xFFFD, -/* 3CC8 */ 0x7D37, 0xFFFD, 0xFFFD, 0x7D38, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CD0 */ 0x7D47, 0x586C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CD8 */ 0x6B73, 0x6B74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CE0 */ 0x6F7E, 0x7330, 0xFFFD, 0xFFFD, 0xFFFD, 0x7331, 0xFFFD, 0xFFFD, -/* 3CE8 */ 0xFFFD, 0xFFFD, 0x7778, 0x7B48, 0xFFFD, 0x7C56, 0x7C28, 0x7C54, -/* 3CF0 */ 0x7C55, 0xFFFD, 0x7D2F, 0xFFFD, 0x586D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x676C, 0xFFFD, 0xFFFD, -/* 3D00 */ 0xFFFD, 0xFFFD, 0x6B75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D08 */ 0xFFFD, 0x7333, 0x7021, 0x7022, 0x7332, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7779, 0xFFFD, 0xFFFD, 0x777A, -/* 3D18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7953, 0x7C29, -/* 3D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C76, -/* 3D28 */ 0x7D30, 0xFFFD, 0x586E, 0xFFFD, 0x7023, 0x7334, 0xFFFD, 0xFFFD, -/* 3D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D48, 0x586F, -/* 3D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D40 */ 0xFFFD, 0x5870, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B76, 0x6B77, -/* 3D48 */ 0xFFFD, 0x7025, 0x7024, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D50 */ 0xFFFD, 0xFFFD, 0x777D, 0x777C, 0x777B, 0xFFFD, 0x7B4A, 0xFFFD, -/* 3D58 */ 0xFFFD, 0x7B49, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C77, 0xFFFD, 0x5E23, -/* 3D60 */ 0x7027, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D68 */ 0x7026, 0x762F, 0x762E, 0xFFFD, 0x7630, 0x762D, 0x7824, 0xFFFD, -/* 3D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7823, 0x7821, -/* 3D78 */ 0x777E, 0x7956, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7957, 0x7955, -/* 3D80 */ 0x7954, 0x7A5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A59, -/* 3D88 */ 0x7B4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D90 */ 0x7B4B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C2B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C2D, 0xFFFD, -/* 3DA0 */ 0xFFFD, 0x7C2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C2A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C57, -/* 3DB8 */ 0xFFFD, 0x7C59, 0x7C58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DC0 */ 0xFFFD, 0xFFFD, 0x7C78, 0x7D40, 0x7D41, 0x5E24, 0xFFFD, 0xFFFD, -/* 3DC8 */ 0xFFFD, 0x676D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B7A, 0x6B78, 0xFFFD, 0x6B79, 0x702A, -/* 3DD8 */ 0xFFFD, 0xFFFD, 0x7028, 0xFFFD, 0xFFFD, 0x7029, 0xFFFD, 0xFFFD, -/* 3DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x733A, 0xFFFD, -/* 3DE8 */ 0xFFFD, 0x7336, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x733B, -/* 3DF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7337, -/* 3DF8 */ 0xFFFD, 0xFFFD, 0x7338, 0xFFFD, 0x7339, 0x7631, 0xFFFD, 0xFFFD, -/* 3E00 */ 0xFFFD, 0x7632, 0x7826, 0xFFFD, 0xFFFD, 0x7827, 0x7959, 0xFFFD, -/* 3E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x795B, -/* 3E10 */ 0xFFFD, 0x795C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x795A, -/* 3E18 */ 0x7B4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B4E, 0xFFFD, 0xFFFD, -/* 3E20 */ 0xFFFD, 0x7B50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7B4F, 0x7C2E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E30 */ 0x7C2F, 0x7C79, 0x7C7A, 0x7D45, 0x7D49, 0xFFFD, 0xFFFD, 0x7D4A, -/* 3E38 */ 0x5E25, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A5B, 0xFFFD, 0xFFFD, 0x7C7B, -/* 3E40 */ 0x7C7C, 0xFFFD, 0x5E26, 0xFFFD, 0xFFFD, 0x676E, 0xFFFD, 0xFFFD, -/* 3E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7633, 0xFFFD, -/* 3E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x795D, 0x795F, 0xFFFD, -/* 3E58 */ 0xFFFD, 0xFFFD, 0x795E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E60 */ 0x7B51, 0xFFFD, 0x7C5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E68 */ 0x5E27, 0xFFFD, 0xFFFD, 0xFFFD, 0x702B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7960, -/* 3E78 */ 0x7A5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E28, 0x6B7B, -/* 3E80 */ 0xFFFD, 0x702C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6327, 0xFFFD, -/* 3E88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D31, -/* 3E90 */ 0x6328, 0x702D, 0x7634, 0xFFFD, 0x6329, 0xFFFD, 0xFFFD, 0x733D, -/* 3E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x733C, 0xFFFD, 0xFFFD, 0x7638, 0x7636, -/* 3EA0 */ 0x7637, 0x7635, 0xFFFD, 0x7828, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EB0 */ 0xFFFD, 0xFFFD, 0x7B52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C5C, -/* 3EB8 */ 0xFFFD, 0xFFFD, 0x7D42, 0x7C7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EC0 */ 0xFFFD, 0xFFFD, 0x676F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6770, -/* 3EC8 */ 0xFFFD, 0x7829, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B53, 0xFFFD, 0xFFFD, -/* 3ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6771, 0x782A, 0xFFFD, 0xFFFD, -/* 3ED8 */ 0x7A5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C30, 0xFFFD, 0xFFFD, -/* 3EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B7C, 0xFFFD, 0xFFFD, 0x7639, -/* 3EE8 */ 0x6B7D, 0x763A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EF0 */ 0x702F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EF8 */ 0xFFFD, 0xFFFD, 0x7B54, 0xFFFD, 0xFFFD, 0x7A5F, 0xFFFD, 0x7A61, -/* 3F00 */ 0xFFFD, 0x7A60, 0xFFFD, 0xFFFD, 0x7B55, 0x7B56, 0xFFFD, 0xFFFD, -/* 3F08 */ 0x7C32, 0xFFFD, 0x7C31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F10 */ 0x7D21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C7E, 0x733E, 0xFFFD, -/* 3F18 */ 0xFFFD, 0x7832, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C33, 0xFFFD, 0xFFFD, -/* 3F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x733F, 0x212B, 0x2136, -/* 3F28 */ 0x2138, 0xFFFD, 0xFFFD, 0x2140, 0x2141, 0x2144, 0x2145, 0x2148, -/* 3F30 */ 0x2149, 0x214C, 0x214D, 0x2150, 0x2151, 0x2154, 0x2155, 0x2158, -/* 3F38 */ 0x2159, 0x215C, 0x215D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2227, -/* 3F40 */ 0x2228, 0x222B, 0x222C, 0x2229, 0x222A, 0xFFFD, 0x212E, 0x212F, -/* 3F48 */ 0x2130, 0xFFFD, 0x2132, 0x2133, 0x2134, 0x2135, 0xFFFD, 0xFFFD, -/* 3F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x222D, 0x222E, 0x222F, -/* 3F58 */ 0x223F, 0x2240, 0x2241, 0x2243, 0x2242, 0xFFFD, 0x2262, 0x226C, -/* 3F60 */ 0x226D, 0x226E, 0x212A, 0xFFFD, 0x216C, 0x2263, 0x2268, 0x216D, -/* 3F68 */ 0xFFFD, 0x213E, 0x213F, 0x216E, 0x2230, 0x2122, 0x2231, 0x2125, -/* 3F70 */ 0x225F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2128, 0x2127, 0x2236, 0x2238, 0x2237, -/* 3F80 */ 0x2129, 0x2269, 0x2260, 0xFFFD, 0xFFFD, 0x2225, 0x2142, 0x225E, -/* 3F88 */ 0x2143, 0x2266, 0x2267, 0xFFFD, 0xFFFD, 0xFFFD, 0x2264, -/* End of table Total Length = 0x43A7 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cns_14.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cns_14.uf deleted file mode 100644 index 2d6be76e774..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cns_14.uf +++ /dev/null @@ -1,6981 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 1 - srcBegin = 4E04 - srcEnd = 4E05 - mappingOffset = 0000 - Mapping = - 2126 2125 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 4E20 - srcEnd = 4E2A - mappingOffset = 0002 - Mapping = - 2262 2261 2263 FFFD 243F FFFD FFFD FFFD - 2121 FFFD 212C -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 4E36 - srcEnd = 4EA3 - mappingOffset = 000D - Mapping = - 2122 FFFD FFFD FFFD FFFD FFFD FFFD 2740 - FFFD 2123 FFFD FFFD FFFD FFFD FFFD FFFD - 2130 FFFD FFFD 212E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2345 FFFD - FFFD 2B22 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2146 2145 FFFD FFFD - FFFD FFFD 2264 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2440 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2B23 FFFD FFFD FFFD FFFD - FFFD FFFD 396C 396E FFFD FFFD FFFD 2124 - FFFD 212D FFFD 2265 FFFD FFFD FFFD FFFD - FFFD 2131 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 216C 2266 FFFD FFFD FFFD 2442 2742 - FFFD FFFD FFFD FFFD FFFD 2147 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 4EAF - srcEnd = 4ECF - mappingOffset = 007B - Mapping = - 2B26 2B25 2B27 2B24 FFFD FFFD FFFD FFFD - 4033 FFFD FFFD FFFD FFFD 2132 FFFD 2133 - FFFD FFFD FFFD FFFD FFFD FFFD 2149 FFFD - FFFD FFFD FFFD FFFD FFFD 214C FFFD 214B - 214A -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 4EE0 - srcEnd = 4F07 - mappingOffset = 009C - Mapping = - 216D FFFD FFFD FFFD FFFD FFFD 2172 2170 - FFFD FFFD FFFD FFFD FFFD FFFD 226F 2268 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 226B 2267 2276 FFFD 226E FFFD FFFD FFFD - FFFD FFFD FFFD 226D FFFD FFFD 226C 2274 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 4F16 - srcEnd = 4F1C - mappingOffset = 00C4 - Mapping = - 2270 2277 FFFD FFFD 2275 FFFD 2273 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 4F28 - srcEnd = 4F4B - mappingOffset = 00CB - Mapping = - 2272 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2450 2448 FFFD FFFD 244F FFFD 2446 - FFFD 2445 FFFD FFFD FFFD FFFD FFFD FFFD - 244E FFFD 2449 FFFD 244B 2443 FFFD FFFD - FFFD FFFD 2444 244C -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 4F66 - srcEnd = 4F72 - mappingOffset = 00EF - Mapping = - 6448 FFFD 6449 FFFD FFFD FFFD FFFD 2747 - FFFD FFFD FFFD FFFD 274F -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 4F8A - srcEnd = 4F93 - mappingOffset = 00FC - Mapping = - 2744 FFFD 2751 FFFD 2748 FFFD FFFD FFFD - FFFD 2743 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 4F9F - srcEnd = 4FA3 - mappingOffset = 0106 - Mapping = - 274C 2749 274B 274A 274D -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 4FB0 - srcEnd = 4FD5 - mappingOffset = 010B - Mapping = - 2B2D 2B2E FFFD FFFD 2B36 FFFD FFFD FFFD - 2B2C FFFD FFFD FFFD FFFD 6263 2B2B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2B32 FFFD - 2B2F FFFD FFFD FFFD 2B33 FFFD FFFD FFFD - FFFD FFFD 2B28 FFFD FFFD 2B29 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 4FE3 - srcEnd = 5010 - mappingOffset = 0131 - Mapping = - 2B35 FFFD 2B34 FFFD 644A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2F48 FFFD 2F4D - FFFD FFFD FFFD FFFD FFFD FFFD 2F44 FFFD - 2F58 2F4C 2F56 FFFD 2F46 FFFD FFFD 2F4B - 2F49 2F47 FFFD FFFD FFFD 2F4F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2F53 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 501D - srcEnd = 5044 - mappingOffset = 015F - Mapping = - 2F45 FFFD FFFD FFFD FFFD FFFD FFFD 2F4E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2F51 FFFD FFFD FFFD 2F43 FFFD FFFD - FFFD 2F50 FFFD 2F54 2F55 FFFD FFFD FFFD - FFFD FFFD 644B FFFD FFFD 343C FFFD 343F -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 5050 - srcEnd = 5059 - mappingOffset = 0187 - Mapping = - 3444 FFFD 3441 FFFD 3442 FFFD 2F57 FFFD - 3447 343D -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 5066 - srcEnd = 5097 - mappingOffset = 0191 - Mapping = - 3440 FFFD FFFD FFFD FFFD FFFD 344B FFFD - FFFD FFFD FFFD 3443 FFFD FFFD FFFD FFFD - FFFD FFFD 344C 344A FFFD 3445 3446 FFFD - FFFD FFFD FFFD 3975 FFFD FFFD FFFD FFFD - FFFD FFFD 3971 3972 FFFD FFFD FFFD FFFD - FFFD 396F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3970 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 50A6 - srcEnd = 50AB - mappingOffset = 01C3 - Mapping = - 644D FFFD FFFD FFFD 4039 403C -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 50B9 - srcEnd = 5101 - mappingOffset = 01C9 - Mapping = - 403A FFFD FFFD 4037 FFFD FFFD FFFD FFFD - FFFD FFFD 403D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4036 403E FFFD FFFD 456B - FFFD 634C FFFD FFFD FFFD FFFD FFFD 456E - 456C FFFD FFFD 456D FFFD 4576 634D FFFD - 4570 4575 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4571 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4574 FFFD FFFD 4B29 FFFD - FFFD FFFD FFFD 4B2B FFFD FFFD FFFD FFFD - 4B2D -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 510D - srcEnd = 513E - mappingOffset = 0212 - Mapping = - 4B2C 4B27 644E FFFD FFFD FFFD FFFD FFFD - FFFD 5031 FFFD FFFD FFFD FFFD 5035 FFFD - 5030 5034 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5441 5440 FFFD FFFD 5033 FFFD - FFFD FFFD 5752 FFFD FFFD FFFD FFFD FFFD - FFFD 5C32 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 606F -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = 514A - srcEnd = 52D4 - mappingOffset = 0244 - Mapping = - 2278 FFFD FFFD FFFD 2454 FFFD 2453 2451 - FFFD FFFD FFFD FFFD 2752 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3976 FFFD - FFFD FFFD 5E25 FFFD 2134 FFFD FFFD FFFD - 2B37 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 227A FFFD FFFD FFFD FFFD FFFD FFFD 2E7B - FFFD FFFD FFFD FFFD 403F 6453 FFFD FFFD - 2127 FFFD 214D 2148 214E FFFD FFFD FFFD - FFFD 2178 2179 FFFD FFFD FFFD 2755 FFFD - FFFD FFFD FFFD FFFD 2128 FFFD FFFD 217A - FFFD FFFD FFFD 2457 FFFD 2B39 FFFD 2F5B - FFFD 2F59 FFFD FFFD 2F5A FFFD 344D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 227E 227D 227C 2459 FFFD FFFD 245A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2B3B - 2B3D 2B3E FFFD FFFD FFFD 2F5E FFFD 2F5F - FFFD FFFD FFFD FFFD FFFD 344F FFFD 344E - 397D 397A FFFD FFFD 397E FFFD FFFD 4B2F - 4B2E 4B30 FFFD FFFD FFFD 5442 FFFD FFFD - 212F 2135 2151 217B FFFD FFFD 2322 FFFD - FFFD FFFD 245B 2759 FFFD FFFD FFFD FFFD - FFFD FFFD 457A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 275A FFFD FFFD FFFD - FFFD FFFD 2136 2152 FFFD FFFD FFFD FFFD - FFFD 217D FFFD FFFD FFFD 2325 FFFD FFFD - FFFD FFFD 2324 2326 FFFD FFFD 2327 FFFD - FFFD FFFD FFFD FFFD FFFD 245F 2461 FFFD - FFFD 245C FFFD FFFD 245E 245D FFFD FFFD - FFFD 2460 FFFD FFFD FFFD 275B FFFD FFFD - FFFD FFFD 275E FFFD FFFD FFFD FFFD 275F - FFFD FFFD 275D FFFD 644F FFFD FFFD FFFD - FFFD FFFD FFFD 2B3F FFFD FFFD 2B40 FFFD - FFFD FFFD FFFD FFFD FFFD 2B43 FFFD FFFD - FFFD 2F68 FFFD FFFD FFFD 2F65 FFFD 2F62 - FFFD FFFD FFFD FFFD FFFD FFFD 2F60 FFFD - FFFD 2F66 2F61 2F63 FFFD 2F64 3450 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3A23 FFFD - FFFD 3A21 FFFD FFFD 3451 FFFD FFFD 4041 - FFFD FFFD FFFD FFFD 4040 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4B31 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4B32 FFFD 5036 FFFD - FFFD FFFD 5037 FFFD FFFD FFFD FFFD FFFD - 602C FFFD 2137 2154 2153 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2328 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2463 2462 2761 FFFD FFFD FFFD 2760 - FFFD FFFD FFFD 625A FFFD 2762 FFFD FFFD - FFFD FFFD 2B48 2B46 FFFD FFFD FFFD FFFD - 2B47 FFFD 2F6F FFFD 2F6C 2F6A 2F6D 2F6E - FFFD FFFD 3452 -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 52E0 - srcEnd = 5307 - mappingOffset = 03CF - Mapping = - 4045 4044 FFFD FFFD FFFD FFFD FFFD 4046 - FFFD FFFD 4621 FFFD FFFD 457E 4B33 FFFD - FFFD FFFD 4D2C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2155 FFFD FFFD - 2156 FFFD FFFD 2223 2222 FFFD FFFD 2224 -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 5314 - srcEnd = 53E0 - mappingOffset = 03F7 - Mapping = - 5038 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2226 FFFD FFFD FFFD FFFD FFFD - 6450 2465 FFFD 2B49 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4623 4B34 - FFFD 5444 5C34 FFFD 2129 FFFD 2157 2466 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2159 FFFD FFFD FFFD FFFD 232A - FFFD FFFD FFFD 232B 232D FFFD FFFD FFFD - FFFD 2763 FFFD FFFD 2B4A FFFD FFFD FFFD - FFFD 215A FFFD 2227 FFFD FFFD FFFD FFFD - FFFD 6451 FFFD 2A5C FFFD 212A FFFD FFFD - FFFD 2228 FFFD FFFD FFFD FFFD FFFD FFFD - 2467 FFFD 2765 FFFD FFFD FFFD 2766 FFFD - FFFD 2B4B FFFD FFFD 4047 FFFD FFFD FFFD - FFFD FFFD 215B FFFD FFFD 2229 FFFD 232F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2767 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6452 - FFFD FFFD FFFD FFFD 3454 FFFD FFFD FFFD - FFFD FFFD 3A28 FFFD 3A27 404A 4049 4048 - FFFD FFFD 4625 FFFD 4626 4B35 FFFD 5445 - FFFD FFFD 212B 215C FFFD FFFD 222A FFFD - FFFD FFFD 2331 FFFD FFFD 2769 276A FFFD - 3455 3A29 FFFD FFFD FFFD FFFD FFFD FFFD - 215E FFFD 2160 FFFD 222B FFFD 2333 FFFD - FFFD 276B FFFD FFFD FFFD 2B50 2B4F FFFD - 2B4E 2B4D FFFD FFFD 404B -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 53F4 - srcEnd = 5405 - mappingOffset = 04C4 - Mapping = - 2231 FFFD 222D 222E FFFD 222F FFFD FFFD - FFFD FFFD FFFD 2335 2337 FFFD FFFD FFFD - FFFD 2339 -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = 5413 - srcEnd = 5423 - mappingOffset = 04D6 - Mapping = - 233A FFFD 233B 2334 FFFD FFFD FFFD 2476 - FFFD FFFD FFFD FFFD FFFD FFFD 2479 247E - 2475 -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 542F - srcEnd = 546D - mappingOffset = 04E7 - Mapping = - 2524 FFFD FFFD 2477 FFFD 247B FFFD FFFD - FFFD FFFD FFFD 2470 FFFD FFFD FFFD FFFD - 2521 FFFD FFFD FFFD FFFD 2473 FFFD FFFD - FFFD FFFD 247C FFFD 2478 2474 246D FFFD - FFFD 247D 2522 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2523 FFFD FFFD FFFD FFFD - 276E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2774 2778 FFFD FFFD 2775 -End of Item 0017 - -Begin of Item 0018 - Format 2 - srcBegin = 5479 - destBegin = 2771 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 5485 - srcEnd = 54A4 - mappingOffset = 0526 - Mapping = - 276C FFFD FFFD FFFD 2770 2779 FFFD FFFD - FFFD FFFD 2773 FFFD FFFD FFFD 276F 2777 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2B5C 2B5D FFFD FFFD FFFD 2B57 2B59 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 54B2 - srcEnd = 54B9 - mappingOffset = 0546 - Mapping = - 2B5B FFFD 2B54 2B5E FFFD FFFD FFFD 2B51 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 54CA - srcEnd = 54DA - mappingOffset = 054E - Mapping = - 2B55 6454 2B63 2B61 FFFD FFFD 2B53 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2B58 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 54EF - srcEnd = 5519 - mappingOffset = 055F - Mapping = - 2F77 3021 FFFD FFFD FFFD 2F74 2F78 3022 - FFFD FFFD 2F79 FFFD FFFD FFFD FFFD FFFD - FFFD 2F7B FFFD 2F7A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2F73 FFFD - FFFD FFFD FFFD FFFD 2F76 FFFD FFFD FFFD - FFFD 2F7E 3025 -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 5528 - srcEnd = 552B - mappingOffset = 058A - Mapping = - 6721 345F FFFD 3468 -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 553A - srcEnd = 5586 - mappingOffset = 058E - Mapping = - 3466 FFFD FFFD FFFD FFFD 3467 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 345B - FFFD FFFD 3458 FFFD FFFD FFFD FFFD FFFD - FFFD 3462 3461 FFFD FFFD FFFD 3457 3A36 - 3464 FFFD FFFD 345E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3459 FFFD - FFFD 6457 FFFD FFFD FFFD FFFD FFFD 6456 - 6722 6455 FFFD FFFD FFFD FFFD FFFD FFFD - 3A3C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3A31 3A38 -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 5596 - srcEnd = 55C1 - mappingOffset = 05DB - Mapping = - 3A2E 3A2A FFFD FFFD FFFD 3A33 FFFD FFFD - 3A40 FFFD 3A34 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3A42 FFFD FFFD FFFD FFFD - FFFD 3A3B FFFD FFFD FFFD FFFD 3A2F FFFD - FFFD FFFD FFFD FFFD 6723 FFFD FFFD FFFD - FFFD FFFD FFFD 4051 -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 55D7 - srcEnd = 55DE - mappingOffset = 0607 - Mapping = - 404E FFFD FFFD FFFD FFFD FFFD FFFD 3A2B -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 55EA - srcEnd = 5637 - mappingOffset = 060F - Mapping = - 404C FFFD FFFD FFFD 6725 FFFD 6724 FFFD - FFFD FFFD 6458 FFFD FFFD FFFD 462E FFFD - FFFD 4628 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4629 FFFD 4636 FFFD 462C FFFD FFFD - FFFD 462A FFFD FFFD FFFD FFFD FFFD 4634 - FFFD FFFD FFFD FFFD FFFD FFFD 4633 FFFD - FFFD FFFD FFFD FFFD 4631 FFFD 645A FFFD - 6459 FFFD FFFD FFFD 4650 FFFD 4630 FFFD - FFFD 4B41 FFFD 4B38 FFFD FFFD FFFD 4B3D - FFFD FFFD FFFD FFFD FFFD 4B44 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 5644 - srcEnd = 5667 - mappingOffset = 065D - Mapping = - 4B3E FFFD FFFD 4B37 FFFD FFFD FFFD 4B3B - FFFD 4B43 FFFD 4B45 4B40 4635 4B3C FFFD - 4B39 FFFD 4B3F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 503F FFFD 5040 FFFD FFFD - FFFD FFFD FFFD 503B -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 567B - srcEnd = 567D - mappingOffset = 0681 - Mapping = - 503D FFFD 5448 -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 5689 - srcEnd = 56A0 - mappingOffset = 0684 - Mapping = - 5449 5447 FFFD FFFD FFFD FFFD FFFD FFFD - 645D 645B FFFD 575B FFFD 575A FFFD FFFD - FFFD FFFD 5758 FFFD FFFD 5759 5757 575C -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 56AF - srcEnd = 57EF - mappingOffset = 069C - Mapping = - 5A2D 645E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6726 6727 645C 5E26 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6728 FFFD FFFD - 5F40 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6071 FFFD FFFD FFFD FFFD - FFFD 2177 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 233E FFFD FFFD 252C - FFFD FFFD 2526 FFFD FFFD 252B 252A FFFD - 2529 FFFD 2548 2527 2528 FFFD FFFD 2822 - FFFD 277D FFFD FFFD 277C 2821 277B FFFD - FFFD 2B65 FFFD FFFD FFFD FFFD 3027 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3A44 - 3A43 FFFD FFFD FFFD FFFD FFFD 4052 FFFD - 4637 FFFD FFFD FFFD FFFD FFFD 5F41 FFFD - FFFD FFFD 2161 FFFD FFFD 2234 FFFD FFFD - 6249 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2341 2342 FFFD FFFD 233F 2340 - FFFD FFFD FFFD FFFD FFFD 2531 253E FFFD - 2530 FFFD FFFD 2540 2536 252F FFFD 253C - FFFD 252D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2532 2541 2542 2533 - 2538 2537 645F FFFD FFFD FFFD FFFD FFFD - 2535 FFFD FFFD FFFD 2825 FFFD 2823 FFFD - 2826 FFFD FFFD FFFD FFFD FFFD FFFD 2828 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2829 FFFD FFFD FFFD FFFD FFFD FFFD - 282A FFFD 2824 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6460 FFFD FFFD 2B69 2B68 - FFFD 2B6C 2B67 2B6A FFFD FFFD FFFD 2B71 - FFFD FFFD FFFD FFFD FFFD 2B70 FFFD FFFD - FFFD FFFD 2B6B FFFD FFFD FFFD FFFD 2B6D - 2B72 2B6E FFFD FFFD FFFD 2B66 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 302A FFFD FFFD FFFD 3030 FFFD FFFD 302F - FFFD 3038 FFFD FFFD FFFD 3034 3035 FFFD - FFFD 3033 3028 3037 FFFD FFFD 302B FFFD - FFFD FFFD 3036 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3032 FFFD 346E 3471 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3472 - FFFD 3474 FFFD 3469 FFFD FFFD FFFD FFFD - 346B -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 57FE - srcEnd = 5803 - mappingOffset = 07DD - Mapping = - 346F 3475 FFFD FFFD FFFD 3476 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 580F - srcEnd = 582B - mappingOffset = 07E3 - Mapping = - 6461 FFFD FFFD 6462 6463 FFFD FFFD FFFD - FFFD 3A4A FFFD 3A45 FFFD FFFD FFFD FFFD - 3A47 FFFD FFFD 3A50 FFFD FFFD FFFD 3A4C - FFFD FFFD FFFD FFFD 6336 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 583A - srcEnd = 5878 - mappingOffset = 0800 - Mapping = - 3A4E FFFD 3A49 FFFD 3A4B FFFD FFFD FFFD - FFFD FFFD FFFD 6337 FFFD 6464 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4057 FFFD - FFFD FFFD FFFD FFFD 405B FFFD FFFD FFFD - FFFD FFFD 4056 FFFD FFFD 405E 405C 4058 - FFFD FFFD FFFD FFFD 405D 6343 FFFD 405A - 4059 FFFD 4054 FFFD FFFD FFFD FFFD FFFD - 4643 463E FFFD FFFD FFFD 4642 463C -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 5884 - srcEnd = 58D0 - mappingOffset = 083F - Mapping = - 463D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 463A 4645 FFFD FFFD FFFD FFFD 4638 FFFD - FFFD 4641 4644 4640 FFFD FFFD FFFD 6465 - FFFD FFFD FFFD FFFD FFFD FFFD 4B46 FFFD - 4B50 FFFD FFFD 4B51 FFFD FFFD 4B4B FFFD - FFFD 463F FFFD FFFD 4B4D FFFD 4B49 FFFD - 4B4F 4B4C FFFD 4B47 FFFD FFFD FFFD 504A - FFFD FFFD FFFD FFFD 504B FFFD FFFD 5048 - 504C FFFD FFFD FFFD FFFD FFFD 5049 FFFD - FFFD 544B FFFD FFFD 544C -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 58DC - srcEnd = 593D - mappingOffset = 088C - Mapping = - 5A2F FFFD FFFD FFFD 5A2E FFFD FFFD FFFD - FFFD FFFD 5E28 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2343 FFFD 2545 2543 2544 282D - FFFD 2B77 FFFD 3477 FFFD FFFD FFFD 3A52 - FFFD FFFD FFFD FFFD 6466 504D 2139 FFFD - 2235 2344 FFFD FFFD 2B7A 2B79 213A 2546 - FFFD FFFD FFFD FFFD 4646 6560 FFFD FFFD - FFFD FFFD FFFD FFFD 2236 FFFD FFFD FFFD - FFFD FFFD FFFD 3479 FFFD FFFD FFFD 405F - FFFD FFFD 4B53 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2238 FFFD 2237 FFFD - 2239 FFFD 2347 FFFD FFFD FFFD FFFD FFFD - FFFD 2549 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 594B - srcEnd = 597A - mappingOffset = 08EE - Mapping = - 282E 282F 6467 FFFD FFFD FFFD FFFD 2B7C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 347B FFFD 347C 347D FFFD FFFD FFFD FFFD - 3A53 3A54 FFFD 4060 FFFD 4061 FFFD FFFD - FFFD 4648 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 223B FFFD FFFD FFFD FFFD 234B -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 5986 - srcEnd = 599F - mappingOffset = 091E - Mapping = - 234D FFFD FFFD 2555 FFFD FFFD 254C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 254B FFFD - FFFD FFFD FFFD FFFD 2556 2553 254E FFFD - FFFD 2551 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 59AC - srcEnd = 59C9 - mappingOffset = 0938 - Mapping = - 2841 2833 FFFD FFFD 2838 FFFD FFFD FFFD - FFFD FFFD FFFD 2845 2840 FFFD FFFD FFFD - FFFD FFFD FFFD 283D FFFD FFFD 2837 FFFD - 2835 FFFD FFFD FFFD FFFD 283F -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 59D5 - srcEnd = 5AAB - mappingOffset = 0956 - Mapping = - 2C26 FFFD 2846 FFFD 2C2D FFFD FFFD FFFD - FFFD FFFD 2C21 FFFD FFFD 2C2C FFFD FFFD - FFFD FFFD 2C2E FFFD FFFD FFFD 2C23 FFFD - FFFD FFFD 2C24 2C25 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2C2B 2C29 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2C2A FFFD 2C28 - FFFD FFFD FFFD FFFD FFFD FFFD 3040 FFFD - 2C27 FFFD FFFD 6270 FFFD 304F FFFD 304A - FFFD FFFD FFFD FFFD FFFD 304E FFFD FFFD - 303E FFFD FFFD FFFD 303B 3045 FFFD 3048 - FFFD 3052 FFFD FFFD FFFD 303C 3522 3538 - FFFD FFFD 304D FFFD 304B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3528 3524 FFFD - 3531 FFFD 3533 FFFD FFFD FFFD FFFD FFFD - 352E FFFD FFFD FFFD FFFD FFFD 352A FFFD - FFFD 352F 353B FFFD FFFD FFFD FFFD 353A - FFFD FFFD FFFD FFFD 3539 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3527 FFFD 353C FFFD - FFFD FFFD FFFD 3530 FFFD FFFD 352B FFFD - FFFD 3529 3534 FFFD 3532 FFFD 3537 FFFD - 3535 FFFD FFFD FFFD 3A75 FFFD FFFD FFFD - FFFD 3A7C FFFD 3A63 3A61 3A58 FFFD FFFD - 3A5B 3A77 3A72 3A59 3A60 FFFD FFFD FFFD - 3A7B FFFD FFFD FFFD 3A66 FFFD FFFD FFFD - FFFD 3A62 FFFD 3A5C 3A5E FFFD FFFD FFFD - FFFD FFFD FFFD 3A73 3A5A FFFD 3A57 3A7A - FFFD FFFD FFFD 3A56 FFFD 3A79 3A78 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 5AC3 - srcEnd = 5AD3 - mappingOffset = 0A2D - Mapping = - 4067 FFFD 4066 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4064 3A6B 406A 6468 FFFD - 6469 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 5AE4 - srcEnd = 5B4F - mappingOffset = 0A3E - Mapping = - 464C FFFD FFFD 464A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 464F 4653 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4B5C FFFD - 4B58 FFFD 4B54 FFFD 4B5E FFFD FFFD FFFD - 4B56 FFFD 4B5A FFFD FFFD FFFD 4B5B FFFD - FFFD 4B5D 4B5F FFFD FFFD 5050 5053 FFFD - FFFD 5051 FFFD FFFD 504F FFFD FFFD FFFD - 5054 FFFD FFFD 504E FFFD FFFD 5056 FFFD - FFFD FFFD FFFD FFFD FFFD 5450 FFFD 544E - FFFD FFFD FFFD FFFD FFFD 5452 FFFD 544F - FFFD 5451 FFFD 5453 FFFD 5A31 5761 575E - FFFD FFFD FFFD FFFD FFFD FFFD 5C36 FFFD - 5C39 FFFD 5C3A FFFD FFFD 5E29 5F42 FFFD - FFFD FFFD FFFD 6073 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 5B60 - srcEnd = 5B9F - mappingOffset = 0AAA - Mapping = - 2848 FFFD FFFD FFFD FFFD FFFD 625C 646A - FFFD FFFD 2C2F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4071 FFFD 4072 FFFD - FFFD 5057 FFFD FFFD 5A34 FFFD 5C3B FFFD - 213B FFFD 223D FFFD FFFD FFFD 2350 FFFD - FFFD FFFD FFFD FFFD FFFD 255A FFFD FFFD - FFFD FFFD FFFD FFFD 284C FFFD 284A FFFD - FFFD FFFD FFFD FFFD FFFD 284E 284B 284D -End of Item 0031 - -Begin of Item 0032 - Format 2 - srcBegin = 5BAB - destBegin = 2C32 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 5BB7 - srcEnd = 5BC8 - mappingOffset = 0AEA - Mapping = - 3057 FFFD FFFD FFFD 3056 3055 FFFD FFFD - FFFD FFFD FFFD FFFD 3541 FFFD FFFD FFFD - FFFD 353F -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 5BD5 - srcEnd = 5BDD - mappingOffset = 0AFC - Mapping = - 3A7E FFFD 4074 FFFD FFFD 4075 4076 4073 - 6345 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 5BF3 - srcEnd = 5C06 - mappingOffset = 0B05 - Mapping = - 5A35 FFFD FFFD FFFD 5E2A FFFD 223E FFFD - FFFD FFFD 255E 255C 255D 2850 FFFD FFFD - FFFD FFFD 3058 3059 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 5C13 - srcEnd = 5C3D - mappingOffset = 0B19 - Mapping = - 624A 223F FFFD FFFD FFFD 2352 2851 FFFD - 2C34 FFFD FFFD 3B24 FFFD 4078 6525 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 255F FFFD FFFD FFFD 2C35 FFFD FFFD FFFD - FFFD FFFD FFFD 5454 FFFD FFFD FFFD FFFD - FFFD FFFD 2354 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 5C49 - srcEnd = 5C6B - mappingOffset = 0B44 - Mapping = - 2854 2855 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 305A 305B FFFD FFFD FFFD 646B FFFD - FFFD FFFD 3543 FFFD FFFD 3B26 3B25 FFFD - 3544 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5A38 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 5C77 - srcEnd = 5C8E - mappingOffset = 0B67 - Mapping = - 646C 2355 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 235A FFFD FFFD FFFD 2561 2566 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2562 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 5C9C - srcEnd = 5C9E - mappingOffset = 0B7F - Mapping = - 2563 FFFD 285D -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 5CB4 - srcEnd = 5CC1 - mappingOffset = 0B82 - Mapping = - 285E FFFD FFFD FFFD FFFD 285C 285F 2857 - FFFD FFFD FFFD FFFD FFFD 2858 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 5CCD - srcEnd = 5D2F - mappingOffset = 0B90 - Mapping = - 2C3F FFFD FFFD FFFD 2C3B FFFD FFFD FFFD - 646D FFFD FFFD FFFD FFFD FFFD FFFD 2C3C - 2C42 FFFD FFFD FFFD 2C3E 2C41 FFFD FFFD - 2C43 2C3D FFFD FFFD 3063 FFFD 305F FFFD - FFFD FFFD 3064 FFFD FFFD FFFD 3061 FFFD - 3062 FFFD FFFD FFFD FFFD 305E FFFD 6271 - FFFD 6272 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 354B 3548 3547 FFFD FFFD - FFFD FFFD FFFD 3551 FFFD FFFD 3552 FFFD - 354F FFFD FFFD 3555 FFFD FFFD FFFD 3B2B - FFFD FFFD FFFD FFFD 3546 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 354E FFFD 354A - FFFD FFFD 3554 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 5D3B - srcEnd = 5DE4 - mappingOffset = 0BF3 - Mapping = - 3B36 FFFD FFFD 3B28 FFFD FFFD FFFD FFFD - FFFD 3B27 FFFD 3B37 FFFD 3B2A FFFD FFFD - FFFD FFFD 3B2E FFFD 3B34 FFFD FFFD FFFD - 3B33 FFFD FFFD FFFD 3B31 FFFD FFFD FFFD - 3B2D FFFD FFFD FFFD FFFD 4121 FFFD FFFD - FFFD 407C FFFD 407A FFFD FFFD FFFD FFFD - FFFD FFFD 4079 407D FFFD FFFD FFFD FFFD - FFFD FFFD 646E FFFD FFFD 465C FFFD FFFD - 4654 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4656 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4659 465A FFFD 646F 4B65 4B66 4B63 FFFD - FFFD FFFD FFFD 4B6B FFFD 4B67 FFFD FFFD - 4B69 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4B6A 4B68 6470 5058 FFFD FFFD FFFD FFFD - 505B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 505A FFFD FFFD 6471 FFFD FFFD 5457 FFFD - 5459 FFFD FFFD 5455 6472 FFFD 5762 FFFD - FFFD 5A39 FFFD FFFD FFFD 5C3D FFFD 5C3C - FFFD 5C3E FFFD FFFD FFFD 5E2D FFFD FFFD - 5F43 FFFD FFFD FFFD 6030 FFFD FFFD FFFD - 213C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3557 4B6C -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 5DF5 - srcEnd = 5E1E - mappingOffset = 0C9D - Mapping = - 2567 2860 FFFD FFFD FFFD 2C45 2C44 FFFD - FFFD FFFD FFFD 2163 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 235C 2568 FFFD 256B FFFD - FFFD FFFD FFFD FFFD FFFD 2862 2861 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2C46 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 5E2A - srcEnd = 5E65 - mappingOffset = 0CC7 - Mapping = - 3066 FFFD 3069 FFFD 3068 306A 3067 FFFD - 355B FFFD FFFD 3559 FFFD FFFD FFFD 3558 - 355A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3979 FFFD FFFD FFFD 3B3A 3B3B 3B3D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 465D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4B6D FFFD FFFD FFFD 4B70 FFFD FFFD FFFD - FFFD FFFD FFFD 6473 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 5E71 - srcEnd = 5EC0 - mappingOffset = 0D03 - Mapping = - 6677 FFFD FFFD FFFD FFFD FFFD 2863 FFFD - FFFD 213D FFFD FFFD FFFD FFFD 213E FFFD - 2247 FFFD 2248 FFFD 6678 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 256E - FFFD 256D FFFD FFFD FFFD FFFD FFFD 2865 - 2867 FFFD FFFD FFFD 2868 FFFD FFFD FFFD - 2C48 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 306C FFFD FFFD FFFD FFFD FFFD 306B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3561 3560 FFFD 3B3F FFFD 3B40 3B3E -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 5ECD - srcEnd = 5ED0 - mappingOffset = 0D53 - Mapping = - 6474 FFFD 4661 4660 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 5EEA - srcEnd = 5F11 - mappingOffset = 0D57 - Mapping = - 505C FFFD FFFD 6475 FFFD FFFD 5C3F FFFD - FFFD FFFD 213F 2361 FFFD FFFD 2869 286B - FFFD 2C4C 2C4B 306E FFFD FFFD FFFD FFFD - FFFD 256F FFFD FFFD 286D FFFD FFFD FFFD - FFFD FFFD 2164 2249 2362 FFFD FFFD 3B42 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 5F1E - srcEnd = 5F72 - mappingOffset = 0D7F - Mapping = - 2571 FFFD FFFD 286E FFFD FFFD FFFD 2870 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2C4D FFFD FFFD 306F FFFD 3562 FFFD - FFFD FFFD FFFD 3563 3B47 3B45 FFFD FFFD - 3B44 FFFD FFFD FFFD 4122 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5763 - FFFD FFFD 2140 2141 224A 2351 FFFD 2871 - FFFD FFFD FFFD FFFD 4123 505E FFFD 5764 - FFFD FFFD 6164 2142 FFFD 2572 FFFD FFFD - 2C50 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4124 FFFD FFFD FFFD 5F45 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 5F83 - srcEnd = 5F9A - mappingOffset = 0DD4 - Mapping = - 2876 2875 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6264 3070 3072 FFFD FFFD FFFD - 3071 6476 FFFD FFFD FFFD FFFD FFFD 6477 -End of Item 0043 - -Begin of Item 0044 - Format 2 - srcBegin = 5FA7 - destBegin = 3B4B -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 5FB3 - srcEnd = 6008 - mappingOffset = 0DEC - Mapping = - 4663 4664 FFFD FFFD FFFD 4B72 FFFD 6478 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5E2F - FFFD FFFD FFFD FFFD 224D 6251 FFFD 224C - FFFD FFFD FFFD 2578 FFFD FFFD FFFD FFFD - 2366 FFFD FFFD FFFD FFFD FFFD FFFD 2367 - 2369 2577 FFFD FFFD 257B FFFD FFFD FFFD - FFFD FFFD FFFD 2576 2574 FFFD 287E FFFD - FFFD 257C FFFD FFFD FFFD 2622 FFFD 2621 - FFFD FFFD FFFD 257D FFFD FFFD 2623 FFFD - FFFD 257A FFFD 2575 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2878 2922 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 6018 - srcEnd = 6023 - mappingOffset = 0E42 - Mapping = - 6266 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2C5A -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 6030 - srcEnd = 6061 - mappingOffset = 0E4E - Mapping = - 2877 2C5B FFFD FFFD FFFD FFFD 287A FFFD - FFFD FFFD FFFD FFFD FFFD 2921 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6267 FFFD 2C60 3079 FFFD FFFD 2C56 3073 - FFFD 2C57 2C5D FFFD FFFD FFFD 307E FFFD - FFFD FFFD FFFD FFFD 2C54 FFFD FFFD FFFD - 2C5F 2C61 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 6073 - srcEnd = 607E - mappingOffset = 0E80 - Mapping = - 307A 3078 307B FFFD FFFD FFFD FFFD FFFD - FFFD 2C5C FFFD 3076 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 608B - srcEnd = 60B3 - mappingOffset = 0E8C - Mapping = - 3122 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3125 FFFD FFFD FFFD FFFD 3568 3074 FFFD - FFFD FFFD FFFD 3127 FFFD FFFD 3571 FFFD - FFFD 3572 FFFD 3123 3128 FFFD 3121 356F - FFFD FFFD FFFD 3126 FFFD FFFD FFFD FFFD - 3B54 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 60D0 - srcEnd = 60EE - mappingOffset = 0EB5 - Mapping = - 356A FFFD 3B56 FFFD FFFD FFFD 3B55 356E - FFFD FFFD FFFD FFFD FFFD FFFD 3579 FFFD - FFFD FFFD FFFD 3B58 FFFD 3B59 FFFD 3576 - FFFD 3B5A 3B4D FFFD FFFD FFFD 3574 -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 60FD - srcEnd = 6143 - mappingOffset = 0ED4 - Mapping = - 3B5E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3B4F FFFD FFFD FFFD FFFD 3B51 - FFFD FFFD FFFD FFFD 3B5D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 412B FFFD FFFD FFFD - FFFD 3B61 FFFD 3B62 3B63 3B50 FFFD FFFD - 6479 FFFD FFFD FFFD FFFD 4129 FFFD FFFD - FFFD FFFD FFFD 4127 412C FFFD 466F FFFD - FFFD FFFD FFFD 466E FFFD 4128 FFFD 466C - 412E FFFD FFFD FFFD FFFD 466D 412A -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 6150 - srcEnd = 61A6 - mappingOffset = 0F1B - Mapping = - 647A FFFD FFFD FFFD FFFD FFFD FFFD 4B73 - FFFD 4B7E FFFD FFFD 4B74 FFFD FFFD FFFD - 4671 FFFD FFFD FFFD 4B7C FFFD FFFD FFFD - FFFD 4672 FFFD FFFD FFFD FFFD FFFD 466A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4C21 FFFD FFFD 4668 FFFD 4673 FFFD FFFD - FFFD 466B FFFD FFFD FFFD 4C23 4674 4C24 - 4B77 FFFD FFFD FFFD FFFD FFFD FFFD 4B7A - FFFD FFFD FFFD FFFD FFFD 4B76 FFFD 5068 - 4C28 5067 FFFD FFFD 4C29 FFFD 4C25 FFFD - FFFD FFFD FFFD 4B79 FFFD FFFD 4B75 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 61B7 - srcEnd = 61E2 - mappingOffset = 0F72 - Mapping = - 5061 FFFD 5063 FFFD 506A FFFD 5064 FFFD - FFFD 5066 FFFD FFFD FFFD 506C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5062 - 5065 506B FFFD FFFD 6679 FFFD FFFD FFFD - FFFD FFFD 5461 545F 545C 545E 545D FFFD - FFFD FFFD FFFD 545B -End of Item 004D - -Begin of Item 004E - Format 2 - srcBegin = 61F3 - destBegin = 5765 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 6202 - srcEnd = 6267 - mappingOffset = 0F9E - Mapping = - 5F46 FFFD FFFD 613E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 236B FFFD FFFD - FFFD 2625 FFFD FFFD FFFD FFFD 2C63 FFFD - FFFD FFFD FFFD FFFD 3B64 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4676 FFFD - FFFD FFFD 4675 FFFD FFFD 4C2C FFFD 506D - FFFD FFFD FFFD 5F48 FFFD 2165 2166 224E - FFFD 2628 2629 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3129 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2250 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 236F FFFD FFFD - FFFD FFFD FFFD 236C FFFD 236D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 236E -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 6275 - srcEnd = 628D - mappingOffset = 1004 - Mapping = - 2639 FFFD FFFD 262E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 262A FFFD FFFD - 2637 FFFD FFFD FFFD FFFD FFFD 262F FFFD - 2636 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 6299 - srcEnd = 62C5 - mappingOffset = 101D - Mapping = - 2635 FFFD 2633 2634 2638 2631 FFFD FFFD - FFFD FFFD 647B FFFD 2632 2931 292A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2926 FFFD FFFD FFFD FFFD 2928 FFFD - FFFD 2925 FFFD FFFD FFFD FFFD FFFD 2934 - 2932 FFFD FFFD FFFD 2933 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 62D5 - srcEnd = 62EA - mappingOffset = 104A - Mapping = - 292E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2930 2937 2935 2936 292F FFFD FFFD 2929 - FFFD FFFD FFFD FFFD FFFD 2C6D -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 6304 - srcEnd = 6305 - mappingOffset = 1060 - Mapping = - 2C6F 2C70 -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 6317 - srcEnd = 6321 - mappingOffset = 1062 - Mapping = - 2C6C FFFD 3132 FFFD 3133 FFFD FFFD FFFD - 2C6B FFFD 2C6E -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 632E - srcEnd = 633F - mappingOffset = 106D - Mapping = - 312C FFFD 312F 3135 FFFD FFFD FFFD 3138 - FFFD 3137 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 313C -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 6352 - srcEnd = 6393 - mappingOffset = 107F - Mapping = - 312E 3139 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3130 313B 3136 FFFD FFFD 647C FFFD - FFFD FFFD 647D FFFD 3631 FFFD FFFD FFFD - 3627 FFFD 3629 FFFD FFFD FFFD FFFD FFFD - FFFD 3626 3632 FFFD FFFD FFFD FFFD 3622 - FFFD FFFD FFFD FFFD 357C 362B FFFD FFFD - FFFD FFFD FFFD FFFD 3623 FFFD FFFD FFFD - FFFD 357D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3624 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 63B2 - srcEnd = 63C1 - mappingOffset = 10C1 - Mapping = - 362D FFFD FFFD FFFD 647E FFFD FFFD FFFD - 362E FFFD FFFD FFFD FFFD 3B71 FFFD 3B70 -End of Item 0057 - -Begin of Item 0058 - Format 2 - srcBegin = 63D1 - destBegin = 3B73 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 63DE - srcEnd = 63E6 - mappingOffset = 10D1 - Mapping = - 3B67 FFFD FFFD FFFD 3B66 FFFD FFFD FFFD - 3B68 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 63F7 - srcEnd = 641D - mappingOffset = 10DA - Mapping = - 3B72 3B6D FFFD 6339 FFFD FFFD FFFD 3B6F - FFFD FFFD FFFD FFFD 6521 FFFD FFFD FFFD - 4149 4132 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 413A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4138 FFFD FFFD FFFD 413E -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 6429 - srcEnd = 64F9 - mappingOffset = 1101 - Mapping = - 413D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4136 4133 FFFD FFFD FFFD FFFD FFFD 4134 - FFFD 4148 4725 4142 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4144 4145 FFFD - 6676 FFFD FFFD 4678 FFFD FFFD 4728 FFFD - FFFD FFFD FFFD FFFD 467E 4724 467A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4721 FFFD 472A FFFD FFFD FFFD FFFD - FFFD 4723 FFFD FFFD FFFD FFFD FFFD FFFD - 4722 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 467B FFFD 4729 FFFD 4C2D - 4726 FFFD 4C35 FFFD FFFD 4C38 FFFD FFFD - FFFD FFFD FFFD FFFD 4C30 4C2F FFFD FFFD - 4C3B FFFD FFFD 4C31 FFFD FFFD FFFD FFFD - FFFD FFFD 4C2E FFFD FFFD FFFD FFFD FFFD - 4C3E FFFD FFFD FFFD FFFD FFFD 4C3F 4C34 - FFFD 4C3D FFFD FFFD FFFD FFFD 4C3A FFFD - FFFD FFFD FFFD 4C39 FFFD 6522 FFFD FFFD - 4C37 FFFD FFFD FFFD FFFD FFFD FFFD 5070 - FFFD FFFD FFFD FFFD FFFD 4C32 FFFD 5077 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5076 FFFD 506F FFFD 5079 FFFD FFFD FFFD - FFFD FFFD FFFD 5075 FFFD FFFD 5464 FFFD - 5467 FFFD FFFD FFFD 576B FFFD 576D FFFD - FFFD 576C FFFD FFFD FFFD 5469 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 576A FFFD FFFD - 5770 -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 6505 - srcEnd = 654E - mappingOffset = 11D2 - Mapping = - 576E FFFD FFFD 5A3B FFFD 5A3C 5A3A FFFD - FFFD FFFD FFFD FFFD 5E31 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6523 FFFD FFFD - FFFD 5F4A 5F4B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5F49 6032 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2C72 FFFD FFFD 2167 - 2168 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2C74 FFFD 2C76 FFFD 2C73 - FFFD FFFD FFFD FFFD FFFD FFFD 313D FFFD - 3637 3636 -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 655A - srcEnd = 6571 - mappingOffset = 121C - Mapping = - 3634 FFFD FFFD FFFD FFFD 3B74 3B75 3B76 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 414B FFFD 414E 6346 FFFD 414D 4730 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 6585 - srcEnd = 658E - mappingOffset = 1234 - Mapping = - 5C41 FFFD FFFD 2558 2939 FFFD 3140 FFFD - 3638 3639 -End of Item 005E - -Begin of Item 005F - Format 2 - srcBegin = 659A - destBegin = 3142 -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 65A6 - srcEnd = 6601 - mappingOffset = 123E - Mapping = - 293B FFFD FFFD FFFD FFFD FFFD FFFD 363A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 546B - FFFD FFFD FFFD FFFD 293C FFFD FFFD FFFD - 2C77 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 363C FFFD 363F 363D FFFD FFFD FFFD - FFFD FFFD FFFD 3B79 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5A3F FFFD - FFFD FFFD 2169 FFFD FFFD 3641 4150 FFFD - FFFD 2251 FFFD FFFD 2373 2372 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 263D FFFD FFFD 625E FFFD FFFD FFFD FFFD - 2943 293E FFFD 2942 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 6617 - srcEnd = 6681 - mappingOffset = 129A - Mapping = - 2940 2941 FFFD 2C7E 2C7A FFFD FFFD 2D23 - FFFD FFFD FFFD FFFD 2C7C FFFD FFFD FFFD - FFFD FFFD 2C79 FFFD FFFD 2C7D FFFD FFFD - FFFD 2D21 FFFD FFFD FFFD FFFD FFFD FFFD - 2D24 2D25 FFFD FFFD 2D22 2C37 FFFD FFFD - FFFD 3146 FFFD FFFD FFFD 314C FFFD 3144 - FFFD 3149 FFFD FFFD 3148 FFFD 314D 3145 - FFFD 3143 FFFD FFFD FFFD FFFD FFFD FFFD - 3642 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 314B FFFD FFFD 3644 FFFD FFFD FFFD - 3645 FFFD 3C26 FFFD 3B7D FFFD 3C25 FFFD - FFFD FFFD FFFD FFFD 3C23 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3B7C FFFD - 3B7E FFFD 3C24 -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 668E - srcEnd = 66F5 - mappingOffset = 1305 - Mapping = - 415B 4156 FFFD FFFD 4159 4151 FFFD FFFD - FFFD FFFD FFFD FFFD 4734 FFFD 4735 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4739 4733 - 4737 FFFD FFFD FFFD FFFD FFFD 4C44 4C46 - FFFD FFFD FFFD FFFD FFFD 4C41 FFFD FFFD - 4C40 FFFD FFFD FFFD FFFD FFFD 4C43 FFFD - FFFD 507D FFFD 5123 FFFD 507A FFFD 507E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5122 - 5471 FFFD 546F 5470 FFFD FFFD 546C 546D - FFFD 5472 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5A43 FFFD 5A42 6526 FFFD FFFD 5C42 - FFFD 5C43 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 613F FFFD FFFD FFFD FFFD FFFD 2641 -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 6702 - srcEnd = 6737 - mappingOffset = 136D - Mapping = - 6527 FFFD FFFD FFFD 5124 FFFD FFFD FFFD - FFFD FFFD 2945 FFFD 2D27 FFFD FFFD 6632 - FFFD FFFD FFFD FFFD 3648 FFFD FFFD 3647 - 3646 FFFD FFFD FFFD 3C29 FFFD FFFD FFFD - FFFD FFFD 5126 6633 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2252 FFFD FFFD - 2377 FFFD FFFD FFFD 2378 2375 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 6744 - srcEnd = 676B - mappingOffset = 13A3 - Mapping = - 2648 FFFD FFFD FFFD FFFD FFFD 2649 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2645 FFFD - 2644 FFFD FFFD FFFD 2647 FFFD FFFD 2642 - FFFD FFFD FFFD FFFD FFFD 264A FFFD FFFD - FFFD 6257 FFFD FFFD FFFD FFFD FFFD 2947 -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 6780 - srcEnd = 6796 - mappingOffset = 13CB - Mapping = - 2952 FFFD 2949 FFFD FFFD FFFD FFFD FFFD - 625F FFFD 294A FFFD FFFD FFFD FFFD 294F - FFFD FFFD FFFD FFFD FFFD FFFD 2948 -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 67A2 - srcEnd = 67C7 - mappingOffset = 13E2 - Mapping = - 294E 294C 6528 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6529 FFFD FFFD FFFD FFFD 2D36 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2D2E FFFD FFFD 2D30 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2D2D -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 67D5 - srcEnd = 67D7 - mappingOffset = 1408 - Mapping = - 2D31 2D2B 2D3A -End of Item 0067 - -Begin of Item 0068 - Format 2 - srcBegin = 67E8 - destBegin = 2D2A -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = 67F9 - srcEnd = 685E - mappingOffset = 140B - Mapping = - 2951 FFFD 2D34 FFFD FFFD 2D32 FFFD 2D39 - 2D37 FFFD FFFD FFFD 2D38 652B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 652A - FFFD FFFD FFFD FFFD 315D FFFD FFFD FFFD - 3157 FFFD 3153 FFFD FFFD 315B FFFD FFFD - FFFD 315E 3164 3150 FFFD FFFD 315F FFFD - FFFD FFFD FFFD 3156 FFFD FFFD FFFD 3163 - FFFD FFFD FFFD FFFD FFFD 3154 314F FFFD - FFFD FFFD FFFD FFFD FFFD 315A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3159 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2D2F FFFD FFFD 3162 3158 FFFD 3161 - 3160 652D FFFD FFFD FFFD 652C -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 686C - srcEnd = 68A6 - mappingOffset = 1471 - Mapping = - 3655 FFFD FFFD FFFD 3660 FFFD FFFD 364E - FFFD FFFD FFFD FFFD FFFD FFFD 365B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3657 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3651 FFFD FFFD FFFD FFFD FFFD - FFFD 365A FFFD FFFD 364D 365C 3650 FFFD - FFFD FFFD 364B FFFD FFFD FFFD FFFD FFFD - FFFD 3654 3478 -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = 68B6 - srcEnd = 68CF - mappingOffset = 14AC - Mapping = - 364C 3652 365E 365F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3656 FFFD 3C45 FFFD 3C41 - FFFD FFFD FFFD FFFD 3C38 FFFD FFFD FFFD - FFFD 3C3E -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 68DB - srcEnd = 68ED - mappingOffset = 14C6 - Mapping = - 3653 FFFD FFFD FFFD FFFD FFFD FFFD 3C3D - FFFD FFFD 3C32 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3C2A -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = 68FE - srcEnd = 6909 - mappingOffset = 14D9 - Mapping = - 3C31 3C42 3C39 3C3B 3C34 3C2F FFFD FFFD - FFFD FFFD FFFD 3C37 -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = 6918 - srcEnd = 6955 - mappingOffset = 14E5 - Mapping = - 3C3C FFFD FFFD FFFD 3C44 FFFD 3C33 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 652F FFFD FFFD 652E FFFD 3C40 FFFD - FFFD 4165 FFFD FFFD FFFD FFFD 4177 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4168 FFFD - FFFD FFFD FFFD 416B FFFD FFFD 415D 4175 - FFFD FFFD FFFD FFFD FFFD 4173 FFFD FFFD - 4174 FFFD FFFD FFFD FFFD 416F -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = 6961 - srcEnd = 6967 - mappingOffset = 1523 - Mapping = - 4179 FFFD FFFD 4178 FFFD FFFD 4176 -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 6973 - srcEnd = 69A2 - mappingOffset = 152A - Mapping = - 416D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 416A 417B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4172 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 473A FFFD FFFD 473D - FFFD FFFD FFFD FFFD FFFD 4751 FFFD FFFD - FFFD FFFD 474E FFFD 4746 FFFD FFFD 4747 -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 69B2 - srcEnd = 69FA - mappingOffset = 155A - Mapping = - 473E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6352 FFFD FFFD FFFD FFFD FFFD 4743 FFFD - FFFD FFFD FFFD 473B FFFD FFFD 473C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4745 - 4748 FFFD FFFD 474D 4744 FFFD 4C54 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 474C - FFFD 4742 FFFD FFFD FFFD FFFD FFFD 4C64 - 4C60 FFFD FFFD FFFD FFFD 4C4F 4C51 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4C5F - 4C57 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 6A0B - srcEnd = 6B90 - mappingOffset = 15A3 - Mapping = - 4C4D 4C50 FFFD 4C47 FFFD 4C5B FFFD 4C56 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4C4A - FFFD 4C49 FFFD FFFD FFFD FFFD FFFD 4C52 - FFFD 4C62 FFFD FFFD FFFD FFFD 4C5E 4C59 - FFFD 4C61 6530 FFFD FFFD FFFD FFFD FFFD - 512C FFFD FFFD 513C 5138 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5128 - 512B FFFD 5140 FFFD FFFD FFFD FFFD 513B - FFFD 5131 FFFD FFFD FFFD FFFD FFFD 5129 - 513E FFFD FFFD FFFD 512F FFFD FFFD FFFD - FFFD 5144 FFFD FFFD FFFD FFFD FFFD FFFD - 5127 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 512E FFFD 5132 FFFD 5141 513A FFFD - FFFD FFFD FFFD FFFD 6531 FFFD FFFD 6532 - FFFD FFFD 5475 FFFD FFFD FFFD FFFD 547B - FFFD FFFD FFFD 5521 FFFD 547C FFFD 5476 - FFFD FFFD FFFD FFFD 5527 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5523 547A FFFD - FFFD FFFD 5524 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5478 FFFD FFFD 5529 - 5774 FFFD FFFD FFFD FFFD 5777 5821 5776 - FFFD FFFD 5778 FFFD FFFD FFFD FFFD FFFD - FFFD 577E FFFD 5779 5823 577D 577A FFFD - FFFD 5822 FFFD FFFD FFFD 577B FFFD 6533 - FFFD FFFD FFFD 5A44 FFFD FFFD FFFD 5A4F - FFFD 5A45 5A4E FFFD 5A47 5A4D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5A48 - 5A46 FFFD FFFD 6534 FFFD FFFD 5C49 FFFD - FFFD FFFD 5775 FFFD FFFD FFFD FFFD FFFD - FFFD 5C47 6535 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5E35 5E34 5E33 FFFD 5E37 FFFD - FFFD FFFD FFFD 5F4F 5F4E FFFD FFFD FFFD - FFFD FFFD 6536 6537 FFFD FFFD FFFD FFFD - FFFD 6074 FFFD FFFD FFFD FFFD FFFD FFFD - 6140 6165 6141 FFFD FFFD FFFD FFFD 2379 - FFFD FFFD FFFD 2953 2954 FFFD 6269 2D3C - 3166 FFFD FFFD 3165 FFFD 3167 FFFD FFFD - FFFD FFFD 3662 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 417D FFFD FFFD - FFFD 417C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4C66 FFFD FFFD 4C65 - 4C67 FFFD FFFD FFFD 5146 5145 FFFD FFFD - FFFD FFFD 552B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2955 2956 FFFD - 2D3D 3168 FFFD 3C49 3C47 FFFD 417E FFFD - 4221 4753 FFFD FFFD FFFD FFFD FFFD 2253 - FFFD FFFD FFFD FFFD FFFD FFFD 2958 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 316A FFFD FFFD FFFD FFFD 3664 -End of Item 0072 - -Begin of Item 0073 - Format 1 - srcBegin = 6B9C - srcEnd = 6BA1 - mappingOffset = 1729 - Mapping = - 4222 6354 FFFD FFFD FFFD 4754 -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = 6BB4 - srcEnd = 6BC1 - mappingOffset = 172F - Mapping = - 2959 FFFD FFFD FFFD FFFD FFFD FFFD 3665 - FFFD FFFD 3C4B FFFD FFFD 4226 -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 6BCE - srcEnd = 6BFA - mappingOffset = 173D - Mapping = - 237A FFFD FFFD 295A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6538 6539 - FFFD FFFD FFFD 2D42 FFFD FFFD FFFD 316E - FFFD FFFD FFFD 316C 316D FFFD FFFD 3666 - FFFD FFFD FFFD FFFD FFFD FFFD 3C4D FFFD - 653A FFFD FFFD FFFD 4228 -End of Item 0075 - -Begin of Item 0076 - Format 2 - srcBegin = 6C0A - destBegin = 552D -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = 6C1C - srcEnd = 6C1E - mappingOffset = 176A - Mapping = - 295D FFFD 653B -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 6C2D - srcEnd = 6C45 - mappingOffset = 176D - Mapping = - 3C4E FFFD FFFD FFFD 4229 422A FFFD FFFD - FFFD FFFD 2257 FFFD 2254 FFFD FFFD 2421 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2258 - 2259 -End of Item 0078 - -Begin of Item 0079 - Format 1 - srcBegin = 6C51 - srcEnd = 6C7F - mappingOffset = 1786 - Mapping = - 237D FFFD 2425 FFFD FFFD 2655 FFFD 237C - FFFD 2423 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 653C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2964 FFFD 2650 FFFD FFFD - FFFD FFFD FFFD FFFD 2653 FFFD 237E FFFD - 2657 FFFD FFFD 2651 FFFD FFFD 264C -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = 6C91 - srcEnd = 6CB2 - mappingOffset = 17B5 - Mapping = - 264D FFFD FFFD FFFD FFFD FFFD 2963 FFFD - FFFD FFFD FFFD FFFD FFFD 264E 2652 265C - 2659 2656 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 265B FFFD FFFD FFFD FFFD 2D4E FFFD - FFFD 296B -End of Item 007A - -Begin of Item 007B - Format 1 - srcBegin = 6CC8 - srcEnd = 6D06 - mappingOffset = 17D7 - Mapping = - 296D FFFD FFFD 6261 FFFD FFFD 296C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 296A FFFD FFFD FFFD FFFD FFFD FFFD 2965 - FFFD FFFD FFFD FFFD 2969 FFFD 6260 FFFD - FFFD FFFD 2967 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2D4F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2D46 - FFFD FFFD 2D50 FFFD FFFD 2D48 2D4A -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = 6D13 - srcEnd = 6D26 - mappingOffset = 1816 - Mapping = - 2D49 2D47 2D4D FFFD FFFD FFFD FFFD FFFD - FFFD 317A FFFD FFFD FFFD FFFD 2D4B FFFD - 2D45 2D57 FFFD 2D53 -End of Item 007C - -Begin of Item 007D - Format 1 - srcBegin = 6D44 - srcEnd = 6D45 - mappingOffset = 182A - Mapping = - 2D55 2D51 -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = 6D56 - srcEnd = 6D5D - mappingOffset = 182C - Mapping = - 3177 3173 FFFD FFFD FFFD 3179 3226 3176 -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = 6D6B - srcEnd = 6D73 - mappingOffset = 1834 - Mapping = - 316F FFFD FFFD FFFD FFFD FFFD 3222 3225 - 3172 -End of Item 007F - -Begin of Item 0080 - Format 2 - srcBegin = 6D81 - destBegin = 3221 -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = 6D8F - srcEnd = 6DCE - mappingOffset = 183D - Mapping = - 3178 FFFD FFFD FFFD FFFD FFFD FFFD 3227 - FFFD FFFD 317D 317B 317C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 653D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 366F FFFD - FFFD 367A 3721 FFFD FFFD FFFD FFFD 3C50 - FFFD FFFD 3672 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 366A FFFD 366B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 366C -End of Item 0081 - -Begin of Item 0082 - Format 2 - srcBegin = 6DE7 - destBegin = 3674 -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = 6DF8 - srcEnd = 6E2A - mappingOffset = 187D - Mapping = - 367C FFFD FFFD FFFD FFFD FFFD 3C5D 3728 - FFFD 3726 3723 FFFD 3670 FFFD 3677 3724 - 3676 3725 3679 FFFD 367D FFFD FFFD 653E - FFFD FFFD 3729 FFFD FFFD FFFD FFFD 3727 - 3C54 FFFD FFFD FFFD FFFD FFFD 3C52 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3C6B 3C6D -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = 6E42 - srcEnd = 6E59 - mappingOffset = 18B0 - Mapping = - 3C5A FFFD FFFD FFFD FFFD FFFD 3C56 FFFD - FFFD FFFD 3C6E FFFD FFFD 3C58 3C69 FFFD - FFFD FFFD FFFD FFFD FFFD 3C66 FFFD 3C64 -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = 6E6A - srcEnd = 6E9A - mappingOffset = 18C8 - Mapping = - 3C5B FFFD 423A 3C60 FFFD FFFD 3C5C FFFD - FFFD FFFD FFFD 3C51 3C6C FFFD FFFD FFFD - FFFD 3C62 6542 FFFD 3C63 FFFD 3C68 FFFD - FFFD FFFD 6540 FFFD 633D FFFD FFFD FFFD - 653F 6541 FFFD FFFD FFFD FFFD FFFD 4230 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4233 -End of Item 0085 - -Begin of Item 0086 - Format 1 - srcBegin = 6EA8 - srcEnd = 6EBB - mappingOffset = 18F9 - Mapping = - 422E 4236 FFFD FFFD 4240 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4239 FFFD FFFD - 422D FFFD FFFD 4231 -End of Item 0086 - -Begin of Item 0087 - Format 1 - srcBegin = 6ED9 - srcEnd = 6F28 - mappingOffset = 190D - Mapping = - 4244 423E 4247 FFFD 423D FFFD FFFD FFFD - FFFD FFFD 4245 FFFD FFFD 423F FFFD 423B - 4246 FFFD FFFD FFFD FFFD FFFD FFFD 4756 - FFFD FFFD 4757 FFFD FFFD FFFD FFFD FFFD - FFFD 4765 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4763 FFFD FFFD FFFD FFFD - FFFD FFFD 4C78 475B FFFD FFFD FFFD 4C6A - 4764 FFFD FFFD FFFD FFFD FFFD 475F FFFD - FFFD FFFD 475A FFFD 475C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 475E -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = 6F34 - srcEnd = 6F4C - mappingOffset = 195D - Mapping = - 475D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4C74 FFFD FFFD FFFD FFFD 4762 FFFD - 4761 FFFD FFFD FFFD 6544 6545 4766 FFFD - 6543 -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = 6F59 - srcEnd = 6F65 - mappingOffset = 1976 - Mapping = - 4C7D FFFD FFFD 4C73 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4C6B -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = 6F71 - srcEnd = 6F9F - mappingOffset = 1983 - Mapping = - 4C75 FFFD FFFD 4C7E 4C6C FFFD FFFD FFFD - 4C79 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4C7A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6363 FFFD FFFD FFFD FFFD 4C7B FFFD - 4C77 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6547 FFFD FFFD FFFD 6546 FFFD 5156 -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = 6FB5 - srcEnd = 6FBE - mappingOffset = 19B2 - Mapping = - 5154 FFFD 5158 FFFD FFFD FFFD 514D FFFD - FFFD 5150 -End of Item 008B - -Begin of Item 008C - Format 1 - srcBegin = 6FD0 - srcEnd = 7090 - mappingOffset = 19BC - Mapping = - 4C71 FFFD FFFD 5155 FFFD FFFD 5530 552F - FFFD 5535 5536 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5531 FFFD FFFD - FFFD FFFD 5537 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5A55 FFFD 5159 5539 FFFD - 6548 FFFD FFFD FFFD FFFD 5828 FFFD FFFD - FFFD FFFD 582A 5827 FFFD FFFD FFFD FFFD - 5826 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5829 FFFD FFFD 582B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5A52 FFFD - FFFD FFFD FFFD FFFD FFFD 5A54 FFFD FFFD - FFFD FFFD FFFD FFFD 5A53 654A 6549 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5C51 FFFD - FFFD FFFD FFFD FFFD FFFD 5C4F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5E3C - FFFD FFFD FFFD 5E3A FFFD 5E3B FFFD FFFD - FFFD FFFD FFFD 6036 5F52 FFFD FFFD FFFD - FFFD 6037 FFFD FFFD 654B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6179 - FFFD FFFD FFFD FFFD FFFD FFFD 2428 2426 - FFFD FFFD 2427 242B FFFD 2662 FFFD 265F - FFFD 265E FFFD 2663 FFFD FFFD 2660 FFFD - FFFD 2977 FFFD FFFD FFFD FFFD FFFD 2974 - 2970 2975 FFFD 296F 2979 2976 FFFD 2972 - 2971 -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = 70A0 - srcEnd = 715B - mappingOffset = 1A7D - Mapping = - 2D5E FFFD 2D5C 2D5A FFFD 2D58 626A 2D65 - 2D62 FFFD 2D5F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2D64 FFFD FFFD FFFD 2D63 FFFD - FFFD 2D68 FFFD 2D5D FFFD FFFD FFFD 654D - FFFD FFFD FFFD FFFD 3228 FFFD FFFD FFFD - FFFD 6279 FFFD FFFD 322A FFFD FFFD FFFD - 322B FFFD FFFD FFFD FFFD 3231 322F FFFD - FFFD FFFD FFFD 3229 FFFD FFFD FFFD 322D - FFFD FFFD FFFD 322C FFFD 654F FFFD FFFD - FFFD FFFD 654E FFFD FFFD FFFD 3230 FFFD - FFFD 3730 3732 FFFD FFFD 372F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3735 FFFD - FFFD 372E FFFD 372C FFFD FFFD FFFD 372D - 3731 FFFD FFFD FFFD FFFD FFFD FFFD 3733 - FFFD 6550 6551 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3C74 FFFD FFFD - FFFD FFFD FFFD FFFD 3C7D FFFD FFFD 3C7C - FFFD FFFD 3C6F 3C7A 3C72 3D21 FFFD FFFD - FFFD FFFD FFFD 3C7B 3C79 3C71 FFFD 3C73 - 3C77 6553 FFFD 6554 FFFD 6555 FFFD 6552 - FFFD FFFD FFFD FFFD FFFD 4257 FFFD FFFD - 424C FFFD 424E FFFD FFFD FFFD FFFD 4251 - FFFD 4258 FFFD FFFD FFFD FFFD FFFD 4252 - FFFD FFFD FFFD 483C -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = 716B - srcEnd = 7196 - mappingOffset = 1B39 - Mapping = - 424F FFFD 4259 FFFD 4249 FFFD 6559 FFFD - FFFD 4253 6557 6558 6556 FFFD FFFD FFFD - FFFD 476F FFFD 476E 476C FFFD FFFD FFFD - 4770 FFFD FFFD FFFD FFFD 4772 FFFD FFFD - 476A 476D 476B 4768 FFFD FFFD 4767 FFFD - 655B FFFD FFFD 655A -End of Item 008E - -Begin of Item 008F - Format 1 - srcBegin = 71A2 - srcEnd = 71BB - mappingOffset = 1B65 - Mapping = - 4D2A 4D24 FFFD FFFD 4D29 FFFD FFFD FFFD - FFFD 4D28 FFFD 4D25 4D22 FFFD FFFD FFFD - FFFD FFFD 655C FFFD 5162 515A FFFD FFFD - 5160 515C -End of Item 008F - -Begin of Item 0090 - Format 1 - srcBegin = 71CC - srcEnd = 7240 - mappingOffset = 1B7F - Mapping = - 5163 6374 FFFD FFFD FFFD 515E FFFD 5166 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 655D 655E FFFD FFFD FFFD FFFD 553C - FFFD FFFD FFFD FFFD FFFD 553E 5543 5540 - FFFD FFFD FFFD 5541 FFFD FFFD FFFD 5542 - FFFD FFFD FFFD FFFD FFFD FFFD 582D FFFD - FFFD FFFD FFFD FFFD 582E FFFD FFFD FFFD - 5A56 FFFD FFFD FFFD 5A57 FFFD FFFD 5C59 - FFFD FFFD 655F 5C56 FFFD 5C58 5C55 FFFD - FFFD 5A58 5C53 5C57 6561 FFFD FFFD FFFD - 5F53 FFFD FFFD FFFD 5F54 6039 FFFD FFFD - 6143 6142 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2D69 FFFD FFFD FFFD 3D22 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2D6B FFFD FFFD FFFD 297C -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = 724E - srcEnd = 7257 - mappingOffset = 1BF4 - Mapping = - 425D FFFD 425C 425B FFFD FFFD FFFD 4D2E - FFFD 4D2D -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = 7264 - srcEnd = 726D - mappingOffset = 1BFE - Mapping = - 2664 2A21 2A22 FFFD 2A23 FFFD FFFD FFFD - FFFD 2D6D -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = 727A - srcEnd = 7287 - mappingOffset = 1C08 - Mapping = - 3236 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3D24 3D23 FFFD FFFD FFFD 3D25 -End of Item 0093 - -Begin of Item 0094 - Format 1 - srcBegin = 7294 - srcEnd = 7299 - mappingOffset = 1C16 - Mapping = - 4775 FFFD FFFD FFFD FFFD 4D2F -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = 72AB - srcEnd = 72F5 - mappingOffset = 1C1C - Mapping = - 617B FFFD FFFD FFFD FFFD FFFD 242C 242D - FFFD FFFD FFFD 266B FFFD FFFD 2669 FFFD - 2666 2667 FFFD 266A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2668 FFFD FFFD FFFD - FFFD FFFD 2A26 FFFD 2A2A FFFD FFFD FFFD - 2A27 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2A28 FFFD FFFD FFFD FFFD FFFD FFFD 2D75 - FFFD FFFD 2D74 FFFD 2D70 FFFD FFFD FFFD - FFFD 2D73 2D71 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3238 -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = 7302 - srcEnd = 7355 - mappingOffset = 1C67 - Mapping = - 3239 FFFD FFFD FFFD 3D26 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 373B FFFD 373A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3739 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3D27 FFFD FFFD FFFD 3D2E FFFD - 3D29 3D2B 3D2A FFFD 4261 3D2D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3D28 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 425F - FFFD FFFD FFFD FFFD 4262 6562 6563 FFFD - FFFD 4D30 FFFD FFFD FFFD 4779 FFFD FFFD - FFFD 4778 477A 4777 -End of Item 0096 - -Begin of Item 0097 - Format 2 - srcBegin = 7371 - destBegin = 5549 -End of Item 0097 - -Begin of Item 0098 - Format 1 - srcBegin = 738C - srcEnd = 73AF - mappingOffset = 1CBB - Mapping = - 225A 216B FFFD 242F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 266E FFFD FFFD FFFD - 2A33 FFFD 2A2D FFFD FFFD FFFD FFFD 2A2C - FFFD FFFD FFFD 2A2B FFFD FFFD 2A32 FFFD - FFFD FFFD FFFD 2A2F -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = 73BD - srcEnd = 7402 - mappingOffset = 1CDF - Mapping = - 2D78 FFFD FFFD FFFD 2D7B FFFD FFFD 2D77 - FFFD FFFD FFFD FFFD 2D7A FFFD FFFD FFFD - FFFD 2D7E 2D79 2D7C FFFD FFFD FFFD FFFD - 323E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3240 FFFD 3247 323C FFFD 3246 - FFFD 3241 FFFD FFFD FFFD FFFD FFFD 323D - FFFD FFFD 6564 FFFD FFFD FFFD 373D FFFD - FFFD FFFD 3D38 FFFD 323F FFFD 3740 FFFD - FFFD FFFD FFFD FFFD FFFD 373C -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = 7412 - srcEnd = 7427 - mappingOffset = 1D25 - Mapping = - 6565 FFFD 3D36 3D3A FFFD 3D2F 3D3B 3D32 - FFFD FFFD 3D39 FFFD 426D 3D35 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4264 -End of Item 009A - -Begin of Item 009B - Format 1 - srcBegin = 7438 - srcEnd = 74D3 - mappingOffset = 1D3B - Mapping = - 3D33 3D3C FFFD 6566 3D37 4268 4275 FFFD - FFFD FFFD FFFD 426F FFFD 4274 FFFD 426E - 4266 4271 FFFD FFFD 4273 FFFD FFFD FFFD - FFFD FFFD FFFD 4267 FFFD FFFD 426B FFFD - 4270 FFFD FFFD FFFD FFFD 426A FFFD FFFD - 4825 477E FFFD FFFD FFFD 477C 477D FFFD - 4822 FFFD FFFD 4821 477B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4827 FFFD 4823 FFFD - FFFD FFFD 4D31 4D3B FFFD FFFD FFFD FFFD - FFFD FFFD 4D39 FFFD 4D36 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4D35 6568 FFFD FFFD - FFFD FFFD FFFD 4D3A FFFD FFFD 516A FFFD - FFFD 6375 FFFD 5167 FFFD 516C FFFD FFFD - FFFD FFFD 516B FFFD 6567 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 554F FFFD 554B FFFD - FFFD FFFD FFFD 554D 6569 FFFD FFFD FFFD - FFFD 582F FFFD FFFD 5830 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5A5A FFFD FFFD 5A5C - 5A5D 5A5B FFFD FFFD 5C5E 5C5C 5C5F FFFD - 5C5D 5C60 FFFD 5E3D -End of Item 009B - -Begin of Item 009C - Format 1 - srcBegin = 74EB - srcEnd = 750E - mappingOffset = 1DD7 - Mapping = - 2E22 FFFD 2E21 FFFD 2E24 FFFD FFFD FFFD - 3248 FFFD FFFD FFFD FFFD FFFD 3D3D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4277 FFFD - FFFD FFFD FFFD 4828 FFFD FFFD 4D3D 516D - FFFD FFFD FFFD 516E -End of Item 009C - -Begin of Item 009D - Format 1 - srcBegin = 751B - srcEnd = 7524 - mappingOffset = 1DFB - Mapping = - 3744 FFFD FFFD 4278 FFFD FFFD FFFD FFFD - 3745 3D3E -End of Item 009D - -Begin of Item 009E - Format 1 - srcBegin = 753B - srcEnd = 75B4 - mappingOffset = 1E05 - Mapping = - 2A37 FFFD FFFD FFFD FFFD FFFD 2A38 2A35 - FFFD 2A36 FFFD 2E27 FFFD FFFD 2E25 2E28 - FFFD FFFD 2E2A FFFD FFFD 2E26 FFFD FFFD - FFFD FFFD 324E 324D 3250 324F FFFD FFFD - FFFD FFFD FFFD 3251 FFFD FFFD 3746 FFFD - FFFD FFFD FFFD FFFD 3749 3747 FFFD FFFD - FFFD FFFD 3D43 3D42 FFFD FFFD 3D44 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 427B - FFFD FFFD FFFD FFFD FFFD FFFD 5170 FFFD - 5552 FFFD FFFD FFFD FFFD FFFD 5C62 FFFD - FFFD FFFD FFFD 3D45 FFFD FFFD FFFD 225B - 2673 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2A3A FFFD FFFD 2A3B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2E2B FFFD 2E2F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3257 FFFD - FFFD 3255 -End of Item 009E - -Begin of Item 009F - Format 2 - srcBegin = 75C3 - destBegin = 3252 -End of Item 009F - -Begin of Item 00A0 - Format 2 - srcBegin = 75D3 - destBegin = 374A -End of Item 00A0 - -Begin of Item 00A1 - Format 1 - srcBegin = 75E5 - srcEnd = 75EE - mappingOffset = 1E7F - Mapping = - 3D47 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 427C -End of Item 00A1 - -Begin of Item 00A2 - Format 1 - srcBegin = 7602 - srcEnd = 760E - mappingOffset = 1E89 - Mapping = - 427D FFFD FFFD FFFD FFFD 482B FFFD FFFD - FFFD FFFD FFFD FFFD 4829 -End of Item 00A2 - -Begin of Item 00A3 - Format 1 - srcBegin = 762C - srcEnd = 765B - mappingOffset = 1E96 - Mapping = - 5171 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5173 5172 FFFD FFFD FFFD 5174 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5555 5553 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5554 5834 FFFD 5833 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5832 -End of Item 00A3 - -Begin of Item 00A4 - Format 1 - srcBegin = 7667 - srcEnd = 7683 - mappingOffset = 1EC6 - Mapping = - 5E3F 5E3E FFFD FFFD FFFD FFFD FFFD FFFD - 603B FFFD FFFD FFFD 656A FFFD FFFD 225C - 656B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2674 FFFD FFFD 2676 -End of Item 00A4 - -Begin of Item 00A5 - Format 1 - srcBegin = 7690 - srcEnd = 76EB - mappingOffset = 1EE3 - Mapping = - 374D FFFD FFFD FFFD 3D4C FFFD FFFD 427E - 4321 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5176 FFFD 5556 FFFD 5557 FFFD FFFD - FFFD 5A5E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3D4D FFFD FFFD FFFD 4830 - FFFD 482E FFFD FFFD 656C FFFD FFFD FFFD - 2677 2678 FFFD FFFD FFFD FFFD FFFD 2E32 - FFFD FFFD FFFD 325A 325B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3750 3752 3751 - FFFD 3D4F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4831 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5835 -End of Item 00A5 - -Begin of Item 00A6 - Format 1 - srcBegin = 76FD - srcEnd = 7730 - mappingOffset = 1F3F - Mapping = - 2E35 FFFD 2E33 FFFD FFFD FFFD FFFD FFFD - FFFD 626C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3264 325F FFFD FFFD FFFD FFFD FFFD - FFFD 325E FFFD 3268 FFFD FFFD FFFD FFFD - FFFD 3759 FFFD FFFD 3267 FFFD FFFD 3265 - FFFD 3755 FFFD FFFD FFFD 325C 3263 FFFD - FFFD FFFD FFFD 3753 -End of Item 00A6 - -Begin of Item 00A7 - Format 1 - srcBegin = 773F - srcEnd = 7764 - mappingOffset = 1F73 - Mapping = - 3262 3757 FFFD 3D56 3D53 FFFD FFFD FFFD - FFFD 3D51 3D52 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4327 FFFD FFFD FFFD - FFFD 4328 FFFD FFFD FFFD FFFD 4325 FFFD - FFFD FFFD FFFD FFFD FFFD 4326 -End of Item 00A7 - -Begin of Item 00A8 - Format 1 - srcBegin = 7771 - srcEnd = 777B - mappingOffset = 1F99 - Mapping = - 4839 FFFD FFFD 4833 4836 4835 4834 4838 - FFFD 483B 483D -End of Item 00A8 - -Begin of Item 00A9 - Format 1 - srcBegin = 778A - srcEnd = 7798 - mappingOffset = 1FA4 - Mapping = - 4D44 FFFD FFFD FFFD FFFD FFFD 4D46 FFFD - FFFD FFFD FFFD FFFD 517B FFFD 5179 -End of Item 00A9 - -Begin of Item 00AA - Format 1 - srcBegin = 77A4 - srcEnd = 77E6 - mappingOffset = 1FB3 - Mapping = - 5559 FFFD 5558 FFFD FFFD 555B FFFD FFFD - FFFD FFFD FFFD 555C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5836 5838 FFFD FFFD - FFFD FFFD 583B FFFD 583A 5839 FFFD FFFD - FFFD 5A60 5A5F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5E42 FFFD FFFD - FFFD FFFD 6432 FFFD FFFD FFFD FFFD FFFD - FFFD 3269 FFFD 3D57 FFFD FFFD FFFD FFFD - FFFD FFFD 2E36 -End of Item 00AA - -Begin of Item 00AB - Format 1 - srcBegin = 77F4 - srcEnd = 77F5 - mappingOffset = 1FF6 - Mapping = - 267B 267C -End of Item 00AB - -Begin of Item 00AC - Format 1 - srcBegin = 7804 - srcEnd = 7824 - mappingOffset = 1FF8 - Mapping = - 2E39 FFFD FFFD 2E3B 2E3E FFFD 2E37 2E3A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2E3D FFFD FFFD FFFD 656D FFFD 656E - FFFD FFFD 667C FFFD FFFD FFFD FFFD FFFD - 326C -End of Item 00AC - -Begin of Item 00AD - Format 1 - srcBegin = 7836 - srcEnd = 7866 - mappingOffset = 2019 - Mapping = - 326D FFFD FFFD FFFD FFFD FFFD FFFD 656F - FFFD FFFD FFFD FFFD 3762 FFFD FFFD FFFD - 3763 375D FFFD FFFD FFFD 375F FFFD FFFD - FFFD 3761 FFFD 3760 FFFD 6570 6571 FFFD - FFFD FFFD 6572 FFFD FFFD FFFD FFFD FFFD - FFFD 3D5C FFFD FFFD FFFD 3D59 FFFD FFFD - 3D5D -End of Item 00AD - -Begin of Item 00AE - Format 1 - srcBegin = 7876 - srcEnd = 7892 - mappingOffset = 204A - Mapping = - 3D5A FFFD 4331 FFFD 432D FFFD FFFD 432E - FFFD FFFD FFFD 4337 4329 FFFD FFFD FFFD - FFFD FFFD 4335 FFFD 432B 4330 FFFD 4334 - FFFD FFFD 432A FFFD 4336 -End of Item 00AE - -Begin of Item 00AF - Format 1 - srcBegin = 78A6 - srcEnd = 78DC - mappingOffset = 2067 - Mapping = - 483E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 483F 4845 FFFD 4844 FFFD FFFD FFFD FFFD - FFFD 6573 4840 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4D4A FFFD 4D4D FFFD FFFD FFFD - 4D48 4D4C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4D4B 4D49 FFFD FFFD - 5221 FFFD 6574 FFFD FFFD FFFD 5224 -End of Item 00AF - -Begin of Item 00B0 - Format 1 - srcBegin = 78EB - srcEnd = 78F8 - mappingOffset = 209E - Mapping = - 5222 FFFD FFFD 6575 FFFD 5560 5562 FFFD - FFFD FFFD FFFD FFFD FFFD 5561 -End of Item 00B0 - -Begin of Item 00B1 - Format 1 - srcBegin = 7906 - srcEnd = 7922 - mappingOffset = 20AC - Mapping = - 5843 583E 5840 FFFD 583F 583C FFFD 5842 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5844 - FFFD FFFD 5A61 FFFD 5A62 FFFD FFFD FFFD - FFFD FFFD 5A63 FFFD 6576 -End of Item 00B1 - -Begin of Item 00B2 - Format 1 - srcBegin = 792E - srcEnd = 793C - mappingOffset = 20C9 - Mapping = - 5E45 FFFD 5E43 FFFD 5E44 FFFD FFFD FFFD - FFFD 603C FFFD FFFD FFFD FFFD 2433 -End of Item 00B2 - -Begin of Item 00B3 - Format 1 - srcBegin = 794D - srcEnd = 7989 - mappingOffset = 20D8 - Mapping = - 6577 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 326F 3270 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3272 FFFD FFFD - FFFD 3D5E FFFD FFFD FFFD FFFD FFFD 3766 - FFFD 3765 FFFD FFFD 3D5F FFFD FFFD FFFD - 3D64 3D62 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4338 FFFD 433D FFFD FFFD 4339 3D63 - FFFD 6578 4848 FFFD 4847 -End of Item 00B3 - -Begin of Item 00B4 - Format 1 - srcBegin = 7999 - srcEnd = 7A0F - mappingOffset = 2115 - Mapping = - 6579 FFFD FFFD FFFD 4D50 4D51 4D4F FFFD - FFFD FFFD 657A FFFD 5226 FFFD FFFD FFFD - 5227 FFFD FFFD FFFD FFFD FFFD 5845 FFFD - FFFD FFFD FFFD FFFD 603D FFFD FFFD FFFD - FFFD FFFD FFFD 657B FFFD FFFD FFFD FFFD - FFFD FFFD 2A3E 2A3D FFFD 2A3F 2A42 FFFD - FFFD 2A44 FFFD 654C FFFD FFFD FFFD 2E42 - FFFD FFFD 2E40 2E41 FFFD FFFD 2E43 FFFD - 3274 3273 3279 FFFD FFFD FFFD FFFD FFFD - 3276 327B FFFD FFFD 3277 FFFD FFFD 3278 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 327C - 3769 3767 376B FFFD 376A FFFD FFFD FFFD - 376C FFFD FFFD FFFD FFFD FFFD 3D65 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3D66 FFFD - 3D69 FFFD FFFD FFFD FFFD 3D68 4341 -End of Item 00B4 - -Begin of Item 00B5 - Format 1 - srcBegin = 7A1D - srcEnd = 7A53 - mappingOffset = 218C - Mapping = - 4344 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6524 FFFD FFFD FFFD 484B 484D FFFD 4850 - 484F FFFD FFFD FFFD FFFD 4852 FFFD FFFD - FFFD FFFD FFFD 4D55 FFFD 4D56 FFFD FFFD - FFFD 4D5A FFFD FFFD 4D53 4D57 FFFD FFFD - 522A FFFD FFFD FFFD 5564 FFFD FFFD FFFD - FFFD FFFD 522C FFFD FFFD FFFD 5229 -End of Item 00B5 - -Begin of Item 00B6 - Format 1 - srcBegin = 7A64 - srcEnd = 7A83 - mappingOffset = 21C3 - Mapping = - 5A66 FFFD 5A65 FFFD FFFD FFFD 5A67 FFFD - FFFD FFFD FFFD 5C64 FFFD FFFD 6076 6077 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2E44 2E47 FFFD FFFD FFFD FFFD 2E49 2E48 -End of Item 00B6 - -Begin of Item 00B7 - Format 1 - srcBegin = 7A91 - srcEnd = 7AFE - mappingOffset = 21E3 - Mapping = - 3772 FFFD 3771 FFFD FFFD FFFD FFFD FFFD - FFFD 3770 FFFD FFFD FFFD FFFD FFFD FFFD - 4346 FFFD FFFD 4347 FFFD FFFD 657C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4D5B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 522F FFFD 522E FFFD FFFD FFFD - FFFD 5568 FFFD FFFD FFFD FFFD FFFD 5E49 - 5E48 FFFD FFFD 267E 2721 FFFD 2A47 2E4E - FFFD 2E4F 2E4D 2E4B 2E4C FFFD FFFD FFFD - FFFD 3323 3326 3327 3324 FFFD FFFD FFFD - 3773 3D71 FFFD FFFD FFFD FFFD 3D70 FFFD - 4349 434A FFFD 4854 FFFD FFFD FFFD 4855 - 5230 5569 556A FFFD 5849 FFFD FFFD 5F55 - FFFD FFFD FFFD 2E51 FFFD 2E50 -End of Item 00B7 - -Begin of Item 00B8 - Format 1 - srcBegin = 7B0B - srcEnd = 7B29 - mappingOffset = 2251 - Mapping = - 332B FFFD 332A FFFD FFFD FFFD FFFD FFFD - FFFD 332C FFFD 3778 3779 FFFD FFFD FFFD - FFFD 3777 FFFD FFFD 377B FFFD 3776 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 632D -End of Item 00B8 - -Begin of Item 00B9 - Format 1 - srcBegin = 7B36 - srcEnd = 7B43 - mappingOffset = 2270 - Mapping = - 377A 657D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3D7B 3D78 3D75 -End of Item 00B9 - -Begin of Item 00BA - Format 1 - srcBegin = 7B53 - srcEnd = 7B86 - mappingOffset = 227E - Mapping = - 3D79 FFFD 3D72 FFFD 3D76 FFFD 657E FFFD - FFFD FFFD FFFD 434F FFFD FFFD FFFD 434C - FFFD FFFD FFFD FFFD FFFD 4355 FFFD FFFD - 434D 3D77 FFFD FFFD 4354 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4351 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4856 FFFD - 4858 FFFD FFFD 4860 -End of Item 00BA - -Begin of Item 00BB - Format 1 - srcBegin = 7B92 - srcEnd = 7BB3 - mappingOffset = 22B2 - Mapping = - 485A 485E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4857 485D FFFD FFFD - FFFD 485C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4D5C FFFD FFFD FFFD - 4D65 4D5D -End of Item 00BB - -Begin of Item 00BC - Format 1 - srcBegin = 7BBF - srcEnd = 7BD0 - mappingOffset = 22D4 - Mapping = - 4D60 FFFD FFFD 6367 6366 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4D63 FFFD - FFFD 6621 -End of Item 00BC - -Begin of Item 00BD - Format 1 - srcBegin = 7BEC - srcEnd = 7BFC - mappingOffset = 22E6 - Mapping = - 5233 5234 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 556D FFFD FFFD FFFD 556B FFFD - 556E -End of Item 00BD - -Begin of Item 00BE - Format 1 - srcBegin = 7C08 - srcEnd = 7C35 - mappingOffset = 22F7 - Mapping = - 5570 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5571 FFFD FFFD FFFD FFFD FFFD - 556F FFFD 5850 584E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5851 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 584C 6622 - FFFD FFFD 6623 FFFD 5A6F 5A6E -End of Item 00BE - -Begin of Item 00BF - Format 1 - srcBegin = 7C42 - srcEnd = 7CFF - mappingOffset = 2325 - Mapping = - 6624 FFFD 5C66 FFFD FFFD FFFD FFFD FFFD - FFFD 5C65 FFFD FFFD 6625 FFFD FFFD 5E4C - FFFD FFFD FFFD FFFD 5E4B FFFD 5F58 FFFD - FFFD FFFD FFFD 5F57 603F FFFD FFFD FFFD - 603E FFFD FFFD FFFD FFFD FFFD 6626 FFFD - FFFD FFFD FFFD 6144 FFFD FFFD FFFD 623A - FFFD FFFD 2A49 FFFD 2A48 2E52 FFFD FFFD - FFFD 2E54 2E53 FFFD FFFD FFFD FFFD FFFD - FFFD 3331 FFFD FFFD 332E 3330 FFFD FFFD - FFFD 3332 FFFD FFFD 332D FFFD FFFD FFFD - FFFD 377D FFFD FFFD FFFD FFFD FFFD 377E - 3821 383E 3822 FFFD FFFD FFFD 3E21 FFFD - FFFD FFFD 3E23 FFFD 3E22 3D7E FFFD 6627 - FFFD FFFD FFFD FFFD 4358 FFFD 435C FFFD - FFFD FFFD FFFD FFFD FFFD 4862 4861 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4D6F 4D71 4D6D FFFD 4D70 4D73 FFFD 4D72 - FFFD FFFD FFFD 4D6E FFFD FFFD FFFD FFFD - FFFD 5237 FFFD FFFD FFFD FFFD FFFD FFFD - 5575 5574 FFFD FFFD FFFD FFFD FFFD 5239 - FFFD 5855 FFFD FFFD 5854 FFFD FFFD FFFD - FFFD FFFD FFFD 6628 FFFD FFFD FFFD FFFD - FFFD 6169 FFFD 6040 FFFD FFFD FFFD FFFD - 2722 FFFD 2A4B FFFD FFFD 2A4A -End of Item 00BF - -Begin of Item 00C0 - Format 1 - srcBegin = 7D24 - srcEnd = 7D37 - mappingOffset = 23E3 - Mapping = - 3337 333B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3829 FFFD FFFD FFFD FFFD FFFD FFFD - 3826 FFFD FFFD 3827 -End of Item 00C0 - -Begin of Item 00C1 - Format 1 - srcBegin = 7D48 - srcEnd = 7DB6 - mappingOffset = 23F7 - Mapping = - 382E 3824 FFFD FFFD 382B 3E34 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3E29 - FFFD 3E26 3E2E FFFD FFFD 3E2F FFFD FFFD - 3E28 FFFD FFFD FFFD 3E2C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3E2A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3E24 3E35 3E33 FFFD - 4367 FFFD FFFD FFFD FFFD FFFD 3E2B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4366 - FFFD 4369 4360 4362 FFFD FFFD FFFD FFFD - 435E FFFD FFFD FFFD FFFD 4364 FFFD 4368 - 436A 4363 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4874 FFFD FFFD FFFD - 486D FFFD FFFD 486E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4870 FFFD FFFD 4869 -End of Item 00C1 - -Begin of Item 00C2 - Format 1 - srcBegin = 7DC8 - srcEnd = 7E07 - mappingOffset = 2466 - Mapping = - 4868 FFFD FFFD FFFD FFFD 4871 FFFD 4873 - 6629 486B FFFD 662B FFFD FFFD 4E22 FFFD - FFFD FFFD FFFD FFFD 4D7C FFFD FFFD FFFD - FFFD FFFD 4D78 FFFD 4E24 4E2F FFFD FFFD - FFFD FFFD FFFD 4E2E FFFD 4D77 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4E2B FFFD FFFD - 4D75 FFFD FFFD FFFD 4E28 4E29 4E25 4E2C - 4E27 4D7E 4D7D FFFD FFFD FFFD FFFD 662A -End of Item 00C2 - -Begin of Item 00C3 - Format 2 - srcBegin = 7E19 - destBegin = 523B -End of Item 00C3 - -Begin of Item 00C4 - Format 1 - srcBegin = 7E26 - srcEnd = 7E2C - mappingOffset = 24A6 - Mapping = - 5240 523F FFFD FFFD FFFD FFFD 5579 -End of Item 00C4 - -Begin of Item 00C5 - Format 1 - srcBegin = 7E4D - srcEnd = 7E4F - mappingOffset = 24AD - Mapping = - 557A FFFD 5859 -End of Item 00C5 - -Begin of Item 00C6 - Format 1 - srcBegin = 7E5B - srcEnd = 7E71 - mappingOffset = 24B0 - Mapping = - 585B FFFD 5858 FFFD FFFD FFFD FFFD FFFD - FFFD 662C FFFD 585A FFFD FFFD FFFD FFFD - FFFD 5A72 FFFD 5A74 FFFD FFFD 5A75 -End of Item 00C6 - -Begin of Item 00C7 - Format 1 - srcBegin = 7E7F - srcEnd = 7E92 - mappingOffset = 24C7 - Mapping = - 5C6C FFFD FFFD FFFD FFFD 5E53 5E50 FFFD - FFFD FFFD 5E51 FFFD FFFD FFFD FFFD 5E52 - FFFD FFFD FFFD 5F5A -End of Item 00C7 - -Begin of Item 00C8 - Format 2 - srcBegin = 7E9E - destBegin = 6235 -End of Item 00C8 - -Begin of Item 00C9 - Format 1 - srcBegin = 7F3B - srcEnd = 7F62 - mappingOffset = 24DB - Mapping = - 3831 FFFD FFFD FFFD FFFD 662D 4877 FFFD - FFFD FFFD FFFD 557D 585C FFFD FFFD FFFD - FFFD FFFD FFFD 5F5B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2A4E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 333C -End of Item 00C9 - -Begin of Item 00CA - Format 1 - srcBegin = 7F6F - srcEnd = 7F78 - mappingOffset = 2503 - Mapping = - 4878 FFFD 4879 FFFD FFFD FFFD FFFD FFFD - FFFD 4E30 -End of Item 00CA - -Begin of Item 00CB - Format 1 - srcBegin = 7F84 - srcEnd = 7FB4 - mappingOffset = 250D - Mapping = - 6422 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2E5D FFFD FFFD FFFD 333D - FFFD FFFD FFFD 333F FFFD 333E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 436E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4E31 FFFD FFFD FFFD FFFD FFFD - 585D -End of Item 00CB - -Begin of Item 00CC - Format 1 - srcBegin = 7FC4 - srcEnd = 7FC6 - mappingOffset = 253E - Mapping = - 3342 FFFD 3343 -End of Item 00CC - -Begin of Item 00CD - Format 1 - srcBegin = 7FD3 - srcEnd = 7FE7 - mappingOffset = 2541 - Mapping = - 3E37 FFFD FFFD 3E38 FFFD FFFD FFFD FFFD - FFFD FFFD 4372 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4E32 -End of Item 00CD - -Begin of Item 00CE - Format 1 - srcBegin = 7FF6 - srcEnd = 800A - mappingOffset = 2556 - Mapping = - 557E FFFD FFFD FFFD 5861 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 667B FFFD FFFD FFFD - FFFD FFFD 3836 FFFD 3344 -End of Item 00CE - -Begin of Item 00CF - Format 1 - srcBegin = 801A - srcEnd = 802F - mappingOffset = 256B - Mapping = - 3837 FFFD FFFD 3839 FFFD FFFD FFFD FFFD - FFFD 4922 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5621 FFFD FFFD 5862 5C6F -End of Item 00CF - -Begin of Item 00D0 - Format 1 - srcBegin = 803B - srcEnd = 807C - mappingOffset = 2581 - Mapping = - 3349 3348 FFFD FFFD FFFD 3347 662F FFFD - FFFD 383D 383C FFFD FFFD FFFD 383B FFFD - FFFD FFFD FFFD 3E3C FFFD FFFD FFFD FFFD - 6729 FFFD FFFD FFFD 4373 FFFD 6356 FFFD - 4923 FFFD FFFD FFFD 4926 3E3B 4925 FFFD - 6630 FFFD 4E34 4E36 FFFD 4E37 FFFD 4E35 - 4E38 FFFD FFFD 5243 FFFD FFFD FFFD FFFD - FFFD 5622 FFFD FFFD FFFD FFFD FFFD 5C70 - 5C71 5C72 -End of Item 00D0 - -Begin of Item 00D1 - Format 1 - srcBegin = 808D - srcEnd = 80D3 - mappingOffset = 25C3 - Mapping = - 2435 2436 FFFD FFFD 2724 FFFD FFFD 2726 - FFFD FFFD 2725 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2723 FFFD FFFD FFFD FFFD 2A56 - FFFD 2A5B 2A58 2A4F FFFD FFFD FFFD 2A59 - FFFD FFFD FFFD 2A52 FFFD FFFD 2A54 FFFD - FFFD 2A57 FFFD FFFD FFFD FFFD 6631 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2E66 FFFD FFFD FFFD FFFD 2E60 FFFD - FFFD FFFD FFFD FFFD FFFD 2E61 2E5E -End of Item 00D1 - -Begin of Item 00D2 - Format 1 - srcBegin = 80DF - srcEnd = 80E2 - mappingOffset = 260A - Mapping = - 2E65 FFFD FFFD 2E64 -End of Item 00D2 - -Begin of Item 00D3 - Format 1 - srcBegin = 80EE - srcEnd = 811A - mappingOffset = 260E - Mapping = - 334C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 334A 3352 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 334B FFFD FFFD FFFD 334E 334D FFFD - FFFD 334F FFFD 2E63 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3E44 FFFD - FFFD 3849 FFFD FFFD 3847 -End of Item 00D3 - -Begin of Item 00D4 - Format 1 - srcBegin = 8128 - srcEnd = 8149 - mappingOffset = 263B - Mapping = - 632E FFFD 3841 FFFD FFFD FFFD 3842 FFFD - FFFD 3845 FFFD FFFD 3848 FFFD FFFD FFFD - FFFD FFFD FFFD 3E3E FFFD FFFD FFFD FFFD - 3E43 3E45 3E41 FFFD FFFD 3E3D FFFD FFFD - 3E40 3E42 -End of Item 00D4 - -Begin of Item 00D5 - Format 1 - srcBegin = 815D - srcEnd = 8184 - mappingOffset = 265D - Mapping = - 437B FFFD 437E FFFD FFFD FFFD 4375 FFFD - FFFD FFFD FFFD FFFD FFFD 4376 FFFD 4377 - 4423 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 437C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4422 FFFD FFFD FFFD 4927 FFFD FFFD 492A -End of Item 00D5 - -Begin of Item 00D6 - Format 1 - srcBegin = 8192 - srcEnd = 81B8 - mappingOffset = 2685 - Mapping = - 4E3B 4E3D 4E39 FFFD 4E3C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4E3A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5249 FFFD FFFD 5247 FFFD 5244 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5623 -End of Item 00D6 - -Begin of Item 00D7 - Format 1 - srcBegin = 81C8 - srcEnd = 81D6 - mappingOffset = 26AC - Mapping = - 5624 FFFD FFFD FFFD FFFD FFFD 5865 FFFD - FFFD FFFD FFFD FFFD 5A77 FFFD 5A78 -End of Item 00D7 - -Begin of Item 00D8 - Format 1 - srcBegin = 81EF - srcEnd = 81F6 - mappingOffset = 26BB - Mapping = - 3E47 FFFD FFFD FFFD FFFD FFFD FFFD 3E48 -End of Item 00D8 - -Begin of Item 00D9 - Format 1 - srcBegin = 8203 - srcEnd = 822D - mappingOffset = 26C3 - Mapping = - 3E49 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2A5D FFFD FFFD FFFD FFFD - 492B FFFD FFFD FFFD FFFD 524A 5868 5A79 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2E68 FFFD FFFD 3357 FFFD 3358 FFFD - FFFD FFFD 3355 -End of Item 00D9 - -Begin of Item 00DA - Format 1 - srcBegin = 8241 - srcEnd = 824C - mappingOffset = 26EE - Mapping = - 4426 FFFD FFFD FFFD FFFD FFFD FFFD 6634 - FFFD 492D FFFD 492E -End of Item 00DA - -Begin of Item 00DB - Format 1 - srcBegin = 8262 - srcEnd = 826A - mappingOffset = 26FA - Mapping = - 5A7A FFFD FFFD 5A7B FFFD FFFD FFFD FFFD - 5E55 -End of Item 00DB - -Begin of Item 00DC - Format 1 - srcBegin = 8276 - srcEnd = 82B2 - mappingOffset = 2703 - Mapping = - 5A7C FFFD FFFD FFFD FFFD 2438 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2728 FFFD FFFD FFFD FFFD FFFD 2729 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 272B - FFFD FFFD FFFD FFFD FFFD FFFD 2A60 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2A6B FFFD FFFD FFFD 2A66 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2A6C -End of Item 00DC - -Begin of Item 00DD - Format 1 - srcBegin = 82C4 - srcEnd = 82FD - mappingOffset = 2740 - Mapping = - 2A5E FFFD FFFD FFFD FFFD 2A68 FFFD FFFD - FFFD FFFD FFFD FFFD 2E76 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2E6A FFFD FFFD FFFD - FFFD 2E6B FFFD FFFD FFFD FFFD 2E78 FFFD - FFFD FFFD FFFD FFFD FFFD 2E72 FFFD FFFD - FFFD FFFD 2E74 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2E69 2E6E FFFD FFFD FFFD - 2E6F 2E7A -End of Item 00DD - -Begin of Item 00DE - Format 1 - srcBegin = 830B - srcEnd = 8323 - mappingOffset = 277A - Mapping = - 2E79 FFFD FFFD 2E77 FFFD 6635 FFFD 6637 - FFFD FFFD FFFD FFFD FFFD 3362 FFFD FFFD - FFFD FFFD 384D FFFD 3359 FFFD 335F FFFD - 385B -End of Item 00DE - -Begin of Item 00DF - Format 1 - srcBegin = 833E - srcEnd = 8346 - mappingOffset = 2793 - Mapping = - 2A5F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3E57 -End of Item 00DF - -Begin of Item 00E0 - Format 1 - srcBegin = 8357 - srcEnd = 8363 - mappingOffset = 279C - Mapping = - 335A 3363 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6636 2D33 -End of Item 00E0 - -Begin of Item 00E1 - Format 1 - srcBegin = 8371 - srcEnd = 8385 - mappingOffset = 27A9 - Mapping = - 384E 3851 FFFD FFFD FFFD FFFD FFFD FFFD - 3854 FFFD FFFD FFFD FFFD FFFD FFFD 3850 - FFFD FFFD FFFD 384F 385D -End of Item 00E1 - -Begin of Item 00E2 - Format 1 - srcBegin = 8391 - srcEnd = 83A1 - mappingOffset = 27BE - Mapping = - 3855 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 385E FFFD FFFD 3857 FFFD - 3852 -End of Item 00E2 - -Begin of Item 00E3 - Format 1 - srcBegin = 83AD - srcEnd = 83B7 - mappingOffset = 27CF - Mapping = - 3858 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 385F -End of Item 00E3 - -Begin of Item 00E4 - Format 1 - srcBegin = 83CD - srcEnd = 83DA - mappingOffset = 27DA - Mapping = - 3E5E FFFD FFFD FFFD FFFD 3E4F 3E59 FFFD - FFFD FFFD FFFD FFFD FFFD 3E4D -End of Item 00E4 - -Begin of Item 00E5 - Format 1 - srcBegin = 83E6 - srcEnd = 83ED - mappingOffset = 27E8 - Mapping = - 3E5F FFFD FFFD FFFD FFFD FFFD FFFD 3E4B -End of Item 00E5 - -Begin of Item 00E6 - Format 1 - srcBegin = 8400 - srcEnd = 8408 - mappingOffset = 27F0 - Mapping = - 3E52 FFFD 3E5C FFFD FFFD 3E5A FFFD FFFD - 3E50 -End of Item 00E6 - -Begin of Item 00E7 - Format 1 - srcBegin = 8414 - srcEnd = 842E - mappingOffset = 27F9 - Mapping = - 3E58 FFFD 3E5D 3E56 3E4E FFFD FFFD FFFD - FFFD FFFD 6639 3E5B FFFD 6638 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 442D FFFD - FFFD FFFD 4431 -End of Item 00E7 - -Begin of Item 00E8 - Format 1 - srcBegin = 843E - srcEnd = 8464 - mappingOffset = 2814 - Mapping = - 443A FFFD FFFD 4435 FFFD FFFD FFFD FFFD - FFFD FFFD 442C FFFD 443E FFFD FFFD FFFD - FFFD 4427 FFFD FFFD FFFD 4433 FFFD 443F - FFFD FFFD 4440 FFFD FFFD FFFD 4432 FFFD - FFFD FFFD FFFD FFFD 4438 FFFD 4430 -End of Item 00E8 - -Begin of Item 00E9 - Format 1 - srcBegin = 8471 - srcEnd = 8484 - mappingOffset = 283B - Mapping = - 443C 442F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 442E FFFD FFFD FFFD 442A 4439 - FFFD FFFD 443B 4428 -End of Item 00E9 - -Begin of Item 00EA - Format 1 - srcBegin = 8492 - srcEnd = 8496 - mappingOffset = 284F - Mapping = - 4935 4944 FFFD 4933 4938 -End of Item 00EA - -Begin of Item 00EB - Format 1 - srcBegin = 84A3 - srcEnd = 84C8 - mappingOffset = 2854 - Mapping = - 493C FFFD 4939 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4942 FFFD FFFD FFFD FFFD FFFD - 493B FFFD 493A FFFD 4941 FFFD FFFD FFFD - FFFD FFFD 4932 FFFD FFFD FFFD FFFD FFFD - 4936 FFFD FFFD FFFD FFFD 4436 -End of Item 00EB - -Begin of Item 00EC - Format 1 - srcBegin = 84D5 - srcEnd = 8505 - mappingOffset = 287A - Mapping = - 493F FFFD FFFD 493E FFFD 4943 FFFD FFFD - FFFD 663B FFFD FFFD 663C 663A FFFD 493D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4E4F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4E44 FFFD FFFD 4E42 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4E40 FFFD 4E4C 4E46 - 4E54 -End of Item 00EC - -Begin of Item 00ED - Format 2 - srcBegin = 851B - destBegin = 4E4B -End of Item 00ED - -Begin of Item 00EE - Format 1 - srcBegin = 8533 - srcEnd = 854C - mappingOffset = 28AB - Mapping = - 4E4D 4E4E 4E52 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 525A FFFD FFFD 5252 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5259 5250 -End of Item 00EE - -Begin of Item 00EF - Format 1 - srcBegin = 855A - srcEnd = 855F - mappingOffset = 28C5 - Mapping = - 5258 FFFD 5254 FFFD FFFD 5256 -End of Item 00EF - -Begin of Item 00F0 - Format 1 - srcBegin = 856F - srcEnd = 8573 - mappingOffset = 28CB - Mapping = - 524F 5255 FFFD FFFD 663D -End of Item 00F0 - -Begin of Item 00F1 - Format 2 - srcBegin = 857F - destBegin = 562B -End of Item 00F1 - -Begin of Item 00F2 - Format 1 - srcBegin = 8592 - srcEnd = 8597 - mappingOffset = 28D0 - Mapping = - 5628 5629 FFFD FFFD FFFD 562D -End of Item 00F2 - -Begin of Item 00F3 - Format 1 - srcBegin = 85AB - srcEnd = 85DB - mappingOffset = 28D6 - Mapping = - 562C 5630 FFFD FFFD FFFD FFFD FFFD 586C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 586E FFFD FFFD FFFD FFFD FFFD 586F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 586B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 663E FFFD 5A7E FFFD FFFD FFFD FFFD - 5A7D -End of Item 00F3 - -Begin of Item 00F4 - Format 1 - srcBegin = 85E7 - srcEnd = 864A - mappingOffset = 2907 - Mapping = - 5B22 FFFD FFFD FFFD FFFD FFFD FFFD 5C7B - FFFD FFFD FFFD FFFD FFFD 5B25 663F FFFD - FFFD FFFD FFFD FFFD FFFD 5C76 FFFD FFFD - FFFD FFFD FFFD 5C78 5C7C FFFD FFFD FFFD - FFFD 5D22 FFFD FFFD FFFD FFFD 5C7E FFFD - 5D23 5C77 FFFD FFFD 5D21 FFFD 5E5B 5E5A - FFFD FFFD FFFD FFFD FFFD FFFD 5E5C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5E58 FFFD FFFD 5E56 FFFD FFFD FFFD - 5E57 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6640 FFFD FFFD FFFD FFFD FFFD 6043 FFFD - FFFD FFFD 602F 6146 FFFD FFFD 6641 FFFD - FFFD FFFD 6147 617C -End of Item 00F4 - -Begin of Item 00F5 - Format 1 - srcBegin = 8657 - srcEnd = 865D - mappingOffset = 296B - Mapping = - 3863 3860 FFFD 3861 FFFD FFFD 3E61 -End of Item 00F5 - -Begin of Item 00F6 - Format 1 - srcBegin = 866C - srcEnd = 86B2 - mappingOffset = 2972 - Mapping = - 272D FFFD FFFD FFFD FFFD FFFD 6642 FFFD - FFFD 2F23 2E7C FFFD 2E7E FFFD FFFD FFFD - FFFD 2F24 FFFD FFFD FFFD FFFD FFFD FFFD - 3369 FFFD FFFD FFFD FFFD 336C FFFD FFFD - FFFD FFFD FFFD 336F FFFD FFFD 336E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 336B - FFFD FFFD FFFD 336A 3370 FFFD FFFD FFFD - FFFD FFFD 336D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3866 FFFD FFFD FFFD 3864 -End of Item 00F6 - -Begin of Item 00F7 - Format 2 - srcBegin = 86D5 - destBegin = 3E62 -End of Item 00F7 - -Begin of Item 00F8 - Format 2 - srcBegin = 86E1 - destBegin = 3E63 -End of Item 00F8 - -Begin of Item 00F9 - Format 2 - srcBegin = 86EE - destBegin = 3E68 -End of Item 00F9 - -Begin of Item 00FA - Format 1 - srcBegin = 86FC - srcEnd = 86FF - mappingOffset = 29B9 - Mapping = - 4444 4445 FFFD 4449 -End of Item 00FA - -Begin of Item 00FB - Format 1 - srcBegin = 8715 - srcEnd = 871D - mappingOffset = 29BD - Mapping = - 4446 4448 FFFD FFFD FFFD FFFD FFFD FFFD - 494F -End of Item 00FB - -Begin of Item 00FC - Format 1 - srcBegin = 872B - srcEnd = 874A - mappingOffset = 29C6 - Mapping = - 494A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4945 FFFD FFFD 494C FFFD - FFFD FFFD 4949 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 494E FFFD 494B FFFD FFFD 6643 -End of Item 00FC - -Begin of Item 00FD - Format 2 - srcBegin = 8771 - destBegin = 4E5D -End of Item 00FD - -Begin of Item 00FE - Format 2 - srcBegin = 877D - destBegin = 4E59 -End of Item 00FE - -Begin of Item 00FF - Format 1 - srcBegin = 878A - srcEnd = 87B1 - mappingOffset = 29E6 - Mapping = - 525B 525D FFFD FFFD 525F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5262 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 525E - FFFD FFFD FFFD 6645 FFFD FFFD FFFD 6644 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 563A -End of Item 00FF - -Begin of Item 0100 - Format 1 - srcBegin = 87C1 - srcEnd = 87DA - mappingOffset = 2A0E - Mapping = - 5639 FFFD FFFD FFFD FFFD FFFD 563B FFFD - FFFD FFFD FFFD FFFD 5636 5634 FFFD FFFD - FFFD FFFD FFFD FFFD 5B28 5876 FFFD FFFD - FFFD 5878 -End of Item 0100 - -Begin of Item 0101 - Format 1 - srcBegin = 87E9 - srcEnd = 881A - mappingOffset = 2A28 - Mapping = - 5873 FFFD FFFD FFFD FFFD 5874 FFFD 5875 - FFFD FFFD FFFD FFFD 6646 FFFD FFFD 5B2C - FFFD FFFD FFFD FFFD 5B27 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5B29 FFFD - FFFD FFFD FFFD FFFD FFFD 5877 5B2B FFFD - FFFD 5D25 FFFD FFFD FFFD FFFD FFFD 5D24 - FFFD 5E5D -End of Item 0101 - -Begin of Item 0102 - Format 1 - srcBegin = 8827 - srcEnd = 8834 - mappingOffset = 2A5A - Mapping = - 5F5F FFFD FFFD FFFD FFFD FFFD 6045 FFFD - FFFD FFFD FFFD FFFD FFFD 6647 -End of Item 0102 - -Begin of Item 0103 - Format 1 - srcBegin = 8842 - srcEnd = 88BF - mappingOffset = 2A68 - Mapping = - 2F26 FFFD FFFD 386A 3E6A 3E69 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3371 6648 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 444D FFFD - FFFD FFFD 4E5F FFFD 5263 5264 FFFD FFFD - FFFD FFFD FFFD FFFD 2F27 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3374 FFFD FFFD FFFD - FFFD 3377 FFFD FFFD FFFD FFFD 3372 FFFD - 3373 3375 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3376 FFFD FFFD 6649 FFFD FFFD - 3872 FFFD FFFD FFFD FFFD 386E 3874 FFFD - FFFD FFFD 386C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 386B FFFD FFFD FFFD 3873 FFFD - FFFD 386D FFFD 386F 3871 FFFD FFFD 3870 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3E70 3E72 FFFD FFFD FFFD FFFD - FFFD 3E6D FFFD FFFD FFFD 3E6F -End of Item 0103 - -Begin of Item 0104 - Format 2 - srcBegin = 88CF - destBegin = 444E -End of Item 0104 - -Begin of Item 0105 - Format 1 - srcBegin = 88E0 - srcEnd = 8903 - mappingOffset = 2AE6 - Mapping = - 444F FFFD FFFD FFFD FFFD FFFD 4E60 FFFD - FFFD 4959 4952 FFFD FFFD 4957 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4954 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4951 - 4956 FFFD FFFD 4958 -End of Item 0105 - -Begin of Item 0106 - Format 2 - srcBegin = 890F - destBegin = 4E61 -End of Item 0106 - -Begin of Item 0107 - Format 1 - srcBegin = 891B - srcEnd = 8924 - mappingOffset = 2B0A - Mapping = - 4E62 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5265 -End of Item 0107 - -Begin of Item 0108 - Format 1 - srcBegin = 8939 - srcEnd = 8954 - mappingOffset = 2B14 - Mapping = - 5640 FFFD FFFD FFFD FFFD FFFD 563F 563D - FFFD FFFD 5642 FFFD FFFD FFFD FFFD 5879 - FFFD 587A FFFD FFFD 587C 587B FFFD FFFD - FFFD FFFD FFFD 664A -End of Item 0108 - -Begin of Item 0109 - Format 1 - srcBegin = 8965 - srcEnd = 8967 - mappingOffset = 2B30 - Mapping = - 5D29 FFFD 5D28 -End of Item 0109 - -Begin of Item 010A - Format 1 - srcBegin = 8978 - srcEnd = 89BC - mappingOffset = 2B33 - Mapping = - 6149 FFFD FFFD FFFD FFFD 617D FFFD FFFD - FFFD FFFD FFFD FFFD 664B FFFD FFFD 5B2F - FFFD 6046 614A FFFD 2F29 FFFD FFFD FFFD - FFFD 3876 3875 FFFD 3877 FFFD FFFD FFFD - FFFD FFFD 3E74 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4E65 FFFD 5266 - FFFD 4E64 FFFD 5646 FFFD FFFD FFFD FFFD - 587E 587D FFFD 5921 FFFD 5B31 FFFD FFFD - FFFD FFFD FFFD 5D2A 5E61 -End of Item 010A - -Begin of Item 010B - Format 1 - srcBegin = 89E7 - srcEnd = 89F5 - mappingOffset = 2B78 - Mapping = - 4454 FFFD FFFD 495C FFFD FFFD FFFD 4E66 - FFFD FFFD FFFD FFFD FFFD FFFD 5B32 -End of Item 010B - -Begin of Item 010C - Format 1 - srcBegin = 8A05 - srcEnd = 8A0D - mappingOffset = 2B87 - Mapping = - 2F2A 2F2C FFFD FFFD FFFD FFFD 337B FFFD - 337A -End of Item 010C - -Begin of Item 010D - Format 1 - srcBegin = 8A19 - srcEnd = 8A4B - mappingOffset = 2B90 - Mapping = - 337C FFFD FFFD 387E FFFD FFFD FFFD 3923 - 3929 FFFD FFFD FFFD FFFD 3879 FFFD 387B - 3925 FFFD 3922 FFFD FFFD 6330 FFFD FFFD - FFFD 387A FFFD FFFD 3E7C FFFD FFFD 3E7D - FFFD FFFD FFFD FFFD 3F24 FFFD FFFD FFFD - FFFD 3E7E 3E75 FFFD FFFD FFFD FFFD FFFD - 3F21 FFFD 3F23 -End of Item 010D - -Begin of Item 010E - Format 1 - srcBegin = 8A5A - srcEnd = 8AD0 - mappingOffset = 2BC3 - Mapping = - 3E78 FFFD FFFD 3F22 FFFD FFFD FFFD FFFD - FFFD FFFD 4460 4459 FFFD 4463 FFFD FFFD - 4455 FFFD FFFD FFFD FFFD 4458 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 445B FFFD - FFFD FFFD FFFD 445C 4461 FFFD 4456 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 445D FFFD - FFFD FFFD FFFD FFFD 495F FFFD 4964 FFFD - FFFD FFFD 4963 FFFD FFFD FFFD FFFD FFFD - FFFD 495E 4962 496B FFFD 4968 FFFD FFFD - 4960 FFFD FFFD FFFD FFFD FFFD FFFD 4965 - FFFD FFFD 4966 FFFD FFFD 4E74 FFFD 4E67 - FFFD 4E72 4E70 4E6E FFFD 4E6C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4E73 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4E75 FFFD 4E69 FFFD 4E6A FFFD 4E76 -End of Item 010E - -Begin of Item 010F - Format 1 - srcBegin = 8AE3 - srcEnd = 8AEC - mappingOffset = 2C3A - Mapping = - 526A FFFD 526B FFFD FFFD FFFD 4E6F 5267 - FFFD 526E -End of Item 010F - -Begin of Item 0110 - Format 1 - srcBegin = 8AF9 - srcEnd = 8B0C - mappingOffset = 2C44 - Mapping = - 5269 FFFD FFFD FFFD 5268 FFFD FFFD FFFD - FFFD FFFD 664C FFFD FFFD FFFD FFFD FFFD - 5649 FFFD FFFD 564A -End of Item 0110 - -Begin of Item 0111 - Format 1 - srcBegin = 8B1F - srcEnd = 8B4D - mappingOffset = 2C58 - Mapping = - 5648 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 592A FFFD FFFD FFFD 5926 FFFD - FFFD FFFD FFFD 5924 FFFD 5928 FFFD FFFD - FFFD 5923 FFFD FFFD FFFD FFFD FFFD FFFD - 5B34 FFFD FFFD FFFD 5B35 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5B36 5D33 -End of Item 0111 - -Begin of Item 0112 - Format 1 - srcBegin = 8B61 - srcEnd = 8B9D - mappingOffset = 2C87 - Mapping = - 5D30 5D2C FFFD 5D32 FFFD FFFD FFFD FFFD - 5D2B FFFD FFFD FFFD FFFD 5D2E FFFD FFFD - 5C6D FFFD 642D FFFD 5E62 FFFD FFFD FFFD - FFFD FFFD FFFD 5E63 FFFD FFFD FFFD FFFD - 5F61 FFFD 5F62 FFFD FFFD FFFD 6048 FFFD - FFFD FFFD FFFD FFFD 6047 FFFD FFFD 6049 - 607B FFFD FFFD FFFD FFFD FFFD 614B FFFD - FFFD FFFD 616B FFFD 617E -End of Item 0112 - -Begin of Item 0113 - Format 1 - srcBegin = 8C3A - srcEnd = 8C44 - mappingOffset = 2CC4 - Mapping = - 392A FFFD FFFD FFFD FFFD FFFD 564D FFFD - FFFD FFFD 5F64 -End of Item 0113 - -Begin of Item 0114 - Format 1 - srcBegin = 8C51 - srcEnd = 8C67 - mappingOffset = 2CCF - Mapping = - 5D34 664D 6221 FFFD FFFD FFFD FFFD 392D - FFFD FFFD 392C FFFD FFFD 3F2A FFFD 3F29 - FFFD FFFD 4464 FFFD FFFD FFFD 496D -End of Item 0114 - -Begin of Item 0115 - Format 1 - srcBegin = 8C74 - srcEnd = 8CB1 - mappingOffset = 2CE6 - Mapping = - 592B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 392E FFFD 3F2C 3F2B FFFD FFFD FFFD 3F2D - FFFD FFFD FFFD 634A 4465 FFFD FFFD FFFD - FFFD FFFD 4E7A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 564F FFFD FFFD FFFD FFFD 614D - FFFD FFFD FFFD 2F2E FFFD FFFD FFFD FFFD - FFFD FFFD 3930 FFFD FFFD FFFD FFFD FFFD - FFFD 3932 3931 FFFD FFFD 3F2F -End of Item 0115 - -Begin of Item 0116 - Format 1 - srcBegin = 8CC9 - srcEnd = 8CDB - mappingOffset = 2D24 - Mapping = - 4469 FFFD FFFD FFFD 4467 FFFD FFFD 4970 - FFFD FFFD FFFD 4972 FFFD 4971 FFFD 664E - FFFD FFFD 4E7E -End of Item 0116 - -Begin of Item 0117 - Format 1 - srcBegin = 8CE9 - srcEnd = 8CF7 - mappingOffset = 2D37 - Mapping = - 4E7D FFFD 4F22 FFFD FFFD FFFD 5275 FFFD - FFFD 5273 FFFD FFFD FFFD 5651 5652 -End of Item 0117 - -Begin of Item 0118 - Format 1 - srcBegin = 8D03 - srcEnd = 8D1C - mappingOffset = 2D46 - Mapping = - 592E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5B38 664F FFFD 6428 FFFD FFFD 5E65 5E66 - FFFD FFFD FFFD FFFD FFFD 6650 FFFD 604A - FFFD 614E -End of Item 0118 - -Begin of Item 0119 - Format 2 - srcBegin = 8D65 - destBegin = 3933 -End of Item 0119 - -Begin of Item 011A - Format 1 - srcBegin = 8D71 - srcEnd = 8D8B - mappingOffset = 2D60 - Mapping = - 243A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3939 FFFD 3937 FFFD 3935 3938 FFFD - FFFD 3F39 3F34 FFFD FFFD 3F37 3F30 3F33 - FFFD FFFD 3F38 -End of Item 011A - -Begin of Item 011B - Format 1 - srcBegin = 8D97 - srcEnd = 8DD4 - mappingOffset = 2D7B - Mapping = - 4975 4973 FFFD 4974 FFFD FFFD 4F26 FFFD - FFFD FFFD FFFD 4F25 FFFD 4F23 FFFD 5277 - FFFD FFFD 5931 FFFD FFFD FFFD FFFD FFFD - FFFD 6651 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 393E FFFD 393A FFFD - FFFD 393D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3F3F 3F3A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3F3B FFFD 3F3E -End of Item 011B - -Begin of Item 011C - Format 2 - srcBegin = 8DED - destBegin = 446B -End of Item 011C - -Begin of Item 011D - Format 1 - srcBegin = 8E01 - srcEnd = 8E0B - mappingOffset = 2DB9 - Mapping = - 497B FFFD FFFD FFFD FFFD FFFD FFFD 497A - FFFD FFFD 4979 -End of Item 011D - -Begin of Item 011E - Format 1 - srcBegin = 8E28 - srcEnd = 8E58 - mappingOffset = 2DC4 - Mapping = - 4F2C FFFD 4F2B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 527E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 527B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 527C FFFD FFFD 5654 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5655 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5932 -End of Item 011E - -Begin of Item 011F - Format 1 - srcBegin = 8E68 - srcEnd = 8E77 - mappingOffset = 2DF5 - Mapping = - 5B3A FFFD FFFD 5B39 FFFD FFFD FFFD FFFD - 5B3B FFFD FFFD FFFD FFFD 5B3C FFFD 5B3D -End of Item 011F - -Begin of Item 0120 - Format 2 - srcBegin = 8E83 - destBegin = 5D37 -End of Item 0120 - -Begin of Item 0121 - Format 1 - srcBegin = 8E99 - srcEnd = 8EC6 - mappingOffset = 2E05 - Mapping = - 604B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6150 FFFD FFFD FFFD FFFD 616C FFFD - FFFD FFFD FFFD FFFD 393F FFFD 3940 3F40 - 4473 FFFD 497D 497C FFFD 4F30 4F32 4F2F - 4F31 FFFD FFFD 6652 FFFD FFFD 5935 FFFD - 5936 FFFD 5B3F FFFD FFFD 5D38 -End of Item 0121 - -Begin of Item 0122 - Format 1 - srcBegin = 8ED5 - srcEnd = 8F04 - mappingOffset = 2E33 - Mapping = - 6653 3941 FFFD FFFD 3947 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3F45 - FFFD FFFD FFFD FFFD FFFD 3F47 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3F44 3F46 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3F49 FFFD FFFD FFFD FFFD FFFD FFFD 4476 -End of Item 0122 - -Begin of Item 0123 - Format 1 - srcBegin = 8F19 - srcEnd = 8F4A - mappingOffset = 2E63 - Mapping = - 4F36 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4F33 FFFD FFFD FFFD FFFD 4F35 FFFD - FFFD FFFD 4F34 FFFD 5324 FFFD FFFD 5322 - 5321 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5325 5659 FFFD FFFD FFFD - 565A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5937 -End of Item 0123 - -Begin of Item 0124 - Format 1 - srcBegin = 8F5C - srcEnd = 8F65 - mappingOffset = 2E95 - Mapping = - 5E67 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6222 -End of Item 0124 - -Begin of Item 0125 - Format 1 - srcBegin = 8F9D - srcEnd = 8FD9 - mappingOffset = 2E9F - Mapping = - 3F4B 4477 FFFD 4478 4A21 4A22 FFFD 4F37 - 5327 FFFD 5326 FFFD FFFD 6654 FFFD 5938 - FFFD FFFD FFFD FFFD FFFD FFFD 4F39 FFFD - 272F FFFD FFFD FFFD 243B FFFD FFFD FFFD - FFFD 2730 FFFD FFFD 2733 FFFD FFFD FFFD - FFFD FFFD 2731 FFFD FFFD 2A72 FFFD 2A70 - FFFD FFFD 2A74 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2A73 2A71 -End of Item 0125 - -Begin of Item 0126 - Format 1 - srcBegin = 8FE7 - srcEnd = 8FF9 - mappingOffset = 2EDC - Mapping = - 2F31 FFFD 2F32 FFFD FFFD FFFD FFFD FFFD - 2F33 FFFD 2F30 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3425 -End of Item 0126 - -Begin of Item 0127 - Format 1 - srcBegin = 9008 - srcEnd = 9013 - mappingOffset = 2EEF - Mapping = - 3427 3426 FFFD FFFD FFFD FFFD 394B FFFD - FFFD FFFD 394A 394E -End of Item 0127 - -Begin of Item 0128 - Format 1 - srcBegin = 9025 - srcEnd = 904C - mappingOffset = 2EFB - Mapping = - 394C FFFD FFFD 3F4F 3F50 3F4D 3F4C 3F51 - FFFD FFFD FFFD 3F55 FFFD FFFD FFFD FFFD - FFFD FFFD 3F56 FFFD FFFD 3F54 3F57 FFFD - FFFD FFFD FFFD 447D FFFD FFFD 4479 FFFD - 447C 447A FFFD 447B FFFD FFFD FFFD 447E -End of Item 0128 - -Begin of Item 0129 - Format 1 - srcBegin = 905A - srcEnd = 9071 - mappingOffset = 2F23 - Mapping = - 4A24 FFFD FFFD FFFD FFFD 4A27 FFFD 4A26 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4F3C FFFD FFFD FFFD FFFD FFFD FFFD 4F3B -End of Item 0129 - -Begin of Item 012A - Format 1 - srcBegin = 9089 - srcEnd = 90CD - mappingOffset = 2F3B - Mapping = - 593A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 225E 225D FFFD FFFD 243C FFFD FFFD - FFFD 243D FFFD 6655 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2735 FFFD FFFD FFFD 2739 - 2734 FFFD 3951 FFFD 2A77 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2A75 FFFD - 2A78 FFFD FFFD 2F35 FFFD FFFD FFFD 2F38 - FFFD 2F34 FFFD 2F3E FFFD 2F37 FFFD FFFD - 2F3C FFFD FFFD FFFD 2F3B -End of Item 012A - -Begin of Item 012B - Format 2 - srcBegin = 90DE - destBegin = 3429 -End of Item 012B - -Begin of Item 012C - Format 1 - srcBegin = 90EE - srcEnd = 90F7 - mappingOffset = 2F80 - Mapping = - 394F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 636C 3952 -End of Item 012C - -Begin of Item 012D - Format 1 - srcBegin = 910A - srcEnd = 9115 - mappingOffset = 2F8A - Mapping = - 3F59 FFFD 4523 FFFD FFFD FFFD FFFD FFFD - FFFD 4524 FFFD 4525 -End of Item 012D - -Begin of Item 012E - Format 2 - srcBegin = 9125 - destBegin = 4A2A -End of Item 012E - -Begin of Item 012F - Format 1 - srcBegin = 9137 - srcEnd = 913D - mappingOffset = 2F96 - Mapping = - 532B FFFD FFFD FFFD FFFD 593C 593B -End of Item 012F - -Begin of Item 0130 - Format 1 - srcBegin = 9151 - srcEnd = 917C - mappingOffset = 2F9D - Mapping = - 342A FFFD FFFD 3955 FFFD FFFD FFFD FFFD - 3954 FFFD FFFD 6657 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4528 FFFD - FFFD FFFD 4527 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4A2C FFFD FFFD - FFFD FFFD 4A2B 4A2D -End of Item 0130 - -Begin of Item 0131 - Format 1 - srcBegin = 9188 - srcEnd = 9196 - mappingOffset = 2FC9 - Mapping = - 4F3F FFFD FFFD FFFD 4F40 FFFD 532D FFFD - FFFD FFFD FFFD FFFD FFFD 532C 532F -End of Item 0131 - -Begin of Item 0132 - Format 2 - srcBegin = 91A9 - destBegin = 593D -End of Item 0132 - -Begin of Item 0133 - Format 1 - srcBegin = 91BB - srcEnd = 91C4 - mappingOffset = 2FD8 - Mapping = - 5E68 FFFD FFFD FFFD 607E FFFD FFFD FFFD - FFFD 616D -End of Item 0133 - -Begin of Item 0134 - Format 1 - srcBegin = 91D6 - srcEnd = 9244 - mappingOffset = 2FE2 - Mapping = - 3430 FFFD FFFD FFFD FFFD 342D FFFD FFFD - 342F 342E 3431 FFFD FFFD FFFD FFFD 3958 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3957 FFFD 3956 FFFD FFFD FFFD - 3959 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3F5D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3F66 FFFD FFFD 3F60 FFFD FFFD - 3F68 FFFD FFFD FFFD FFFD 3F69 FFFD FFFD - FFFD FFFD 3F62 FFFD FFFD 3F65 FFFD FFFD - FFFD FFFD 3F5E 6659 3F63 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6658 FFFD FFFD - FFFD 452E FFFD FFFD FFFD FFFD FFFD 452B - FFFD FFFD FFFD FFFD FFFD 4537 452F FFFD - FFFD FFFD FFFD 4539 FFFD FFFD 4538 -End of Item 0134 - -Begin of Item 0135 - Format 1 - srcBegin = 9255 - srcEnd = 9273 - mappingOffset = 3051 - Mapping = - 452A FFFD FFFD FFFD 452D FFFD FFFD 4531 - 4529 FFFD 4534 FFFD FFFD 4533 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4532 4535 FFFD - FFFD 4536 FFFD FFFD FFFD FFFD 665A -End of Item 0135 - -Begin of Item 0136 - Format 1 - srcBegin = 9281 - srcEnd = 9292 - mappingOffset = 3070 - Mapping = - 4A34 FFFD FFFD 4A35 FFFD FFFD FFFD FFFD - 4A2F FFFD FFFD FFFD FFFD FFFD 4530 4A38 - FFFD 4A33 -End of Item 0136 - -Begin of Item 0137 - Format 2 - srcBegin = 929E - destBegin = 4A39 -End of Item 0137 - -Begin of Item 0138 - Format 1 - srcBegin = 92AD - srcEnd = 92BF - mappingOffset = 3082 - Mapping = - 4A32 4A37 FFFD 672A 4A31 FFFD FFFD FFFD - FFFD FFFD FFFD 4F42 4F50 FFFD FFFD FFFD - FFFD 4F43 4F41 -End of Item 0138 - -Begin of Item 0139 - Format 1 - srcBegin = 92D4 - srcEnd = 930A - mappingOffset = 3095 - Mapping = - 4F48 FFFD 4F49 FFFD FFFD FFFD 4F4B 4F4E - 4F44 FFFD FFFD FFFD FFFD FFFD 4F51 FFFD - FFFD 4F45 FFFD FFFD FFFD FFFD FFFD 4F52 - FFFD 4F4C FFFD FFFD FFFD FFFD FFFD 4F4D - 665B 665C 4A30 FFFD FFFD FFFD FFFD FFFD - FFFD 5335 FFFD FFFD FFFD FFFD FFFD 533D - FFFD 533E FFFD 5338 FFFD FFFD 5332 -End of Item 0139 - -Begin of Item 013A - Format 1 - srcBegin = 9317 - srcEnd = 931C - mappingOffset = 30CC - Mapping = - 5336 FFFD FFFD FFFD FFFD 5337 -End of Item 013A - -Begin of Item 013B - Format 1 - srcBegin = 932C - srcEnd = 9332 - mappingOffset = 30D2 - Mapping = - 533B FFFD FFFD FFFD 533C 5339 533A -End of Item 013B - -Begin of Item 013C - Format 1 - srcBegin = 933F - srcEnd = 93A0 - mappingOffset = 30D9 - Mapping = - 665D FFFD FFFD 665E FFFD FFFD 5331 FFFD - FFFD 5665 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5666 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 565D FFFD - 5667 FFFD FFFD 5664 FFFD FFFD FFFD 565B - FFFD 5668 565E FFFD 566B FFFD FFFD 5661 - FFFD FFFD FFFD 5662 5663 565F FFFD FFFD - FFFD 565C FFFD FFFD FFFD FFFD 5660 FFFD - 566A FFFD FFFD FFFD FFFD FFFD FFFD 665F - FFFD FFFD FFFD FFFD 5943 FFFD FFFD FFFD - FFFD 5940 FFFD FFFD 5942 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5949 FFFD FFFD - FFFD 593E -End of Item 013C - -Begin of Item 013D - Format 1 - srcBegin = 93AD - srcEnd = 93F4 - mappingOffset = 313B - Mapping = - 5944 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5946 FFFD FFFD 5945 6661 - 6662 6660 FFFD FFFD 5B50 FFFD FFFD FFFD - 5B44 5B45 FFFD FFFD FFFD FFFD 5B43 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5B48 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5B4D FFFD - FFFD FFFD FFFD 5B4F FFFD FFFD FFFD FFFD - 5B4A FFFD FFFD FFFD 5B41 5B42 5B4E FFFD - 5B47 FFFD 6665 FFFD 6663 6664 5D41 5E6A -End of Item 013D - -Begin of Item 013E - Format 1 - srcBegin = 9402 - srcEnd = 9408 - mappingOffset = 3183 - Mapping = - 5D43 FFFD 5D3C 5D3F FFFD FFFD 5D3E -End of Item 013E - -Begin of Item 013F - Format 1 - srcBegin = 9417 - srcEnd = 942D - mappingOffset = 318A - Mapping = - 5D3D FFFD FFFD 5D44 5D45 5D47 FFFD 5D42 - 5D3A FFFD FFFD 6666 6667 6668 FFFD FFFD - 5D46 FFFD FFFD FFFD FFFD FFFD 5E6D -End of Item 013F - -Begin of Item 0140 - Format 1 - srcBegin = 9442 - srcEnd = 946C - mappingOffset = 31A1 - Mapping = - 5F69 5F6E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5F6A 5F6C FFFD FFFD FFFD - FFFD FFFD 5F6B FFFD 6052 FFFD 6431 FFFD - 6055 6054 6056 FFFD FFFD 604F FFFD 6053 - FFFD FFFD FFFD 6057 666A 6669 FFFD FFFD - FFFD FFFD 6122 -End of Item 0140 - -Begin of Item 0141 - Format 1 - srcBegin = 947A - srcEnd = 9484 - mappingOffset = 31CC - Mapping = - 616F 6223 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6236 -End of Item 0141 - -Begin of Item 0142 - Format 1 - srcBegin = 9579 - srcEnd = 9587 - mappingOffset = 31D7 - Mapping = - 6323 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2F40 FFFD FFFD FFFD 3432 FFFD 395C -End of Item 0142 - -Begin of Item 0143 - Format 1 - srcBegin = 9595 - srcEnd = 95E7 - mappingOffset = 31E6 - Mapping = - 3F6C FFFD 666B FFFD 453C 453A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4A3D FFFD FFFD - FFFD FFFD 4A3E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4F53 FFFD FFFD 4F55 4F56 FFFD - FFFD FFFD FFFD 5342 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5344 5340 FFFD 566D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 666C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 594B 594A FFFD FFFD FFFD FFFD - 5B53 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 666D -End of Item 0143 - -Begin of Item 0144 - Format 1 - srcBegin = 961D - srcEnd = 9641 - mappingOffset = 3239 - Mapping = - 2143 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 273B 273A FFFD 273F FFFD 273C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 273D 273E - FFFD FFFD 2A79 FFFD FFFD FFFD FFFD FFFD - FFFD 2A7C FFFD FFFD 2A7B -End of Item 0144 - -Begin of Item 0145 - Format 1 - srcBegin = 9656 - srcEnd = 9660 - mappingOffset = 325E - Mapping = - 3436 FFFD FFFD 3434 395E FFFD FFFD FFFD - FFFD FFFD 3433 -End of Item 0145 - -Begin of Item 0146 - Format 1 - srcBegin = 966E - srcEnd = 96BD - mappingOffset = 3269 - Mapping = - 3961 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3965 FFFD 3F71 FFFD FFFD - FFFD 3F72 FFFD 3F73 3F75 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3F70 FFFD - FFFD 4540 FFFD FFFD FFFD FFFD FFFD FFFD - 4542 FFFD FFFD FFFD FFFD FFFD FFFD 4A45 - FFFD 4A46 4A44 FFFD FFFD 4F5A FFFD 4F5B - FFFD FFFD FFFD FFFD FFFD 5348 FFFD 5670 - FFFD 566F FFFD FFFD 5671 FFFD FFFD 5D49 - 2A7D 5349 FFFD FFFD 6325 FFFD FFFD 3439 -End of Item 0146 - -Begin of Item 0147 - Format 1 - srcBegin = 96D0 - srcEnd = 96D1 - mappingOffset = 32B9 - Mapping = - 4A47 4A49 -End of Item 0147 - -Begin of Item 0148 - Format 1 - srcBegin = 96E4 - srcEnd = 96FC - mappingOffset = 32BB - Mapping = - 5E70 FFFD 6125 622F FFFD FFFD FFFD FFFD - 3F7E 3F7C 3F7B FFFD FFFD FFFD FFFD FFFD - 4546 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4547 -End of Item 0148 - -Begin of Item 0149 - Format 1 - srcBegin = 970A - srcEnd = 971B - mappingOffset = 32D4 - Mapping = - 4F60 FFFD 5350 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 534D 534C FFFD 5351 FFFD FFFD - 5674 5675 -End of Item 0149 - -Begin of Item 014A - Format 1 - srcBegin = 9731 - srcEnd = 9779 - mappingOffset = 32E6 - Mapping = - 5D4F FFFD 5D4C 5D4E FFFD 5E72 5E71 FFFD - FFFD FFFD 666E 5F71 FFFD FFFD FFFD 5F72 - 6059 FFFD FFFD FFFD 6126 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 666F FFFD FFFD 6245 - 2A7E FFFD FFFD FFFD 4549 FFFD FFFD FFFD - 4A4C FFFD FFFD FFFD 594F FFFD 4021 FFFD - FFFD FFFD 2B21 4A4E FFFD FFFD 5E73 FFFD - FFFD FFFD FFFD FFFD 4024 FFFD 4022 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 454B -End of Item 014A - -Begin of Item 014B - Format 1 - srcBegin = 9787 - srcEnd = 97FC - mappingOffset = 332F - Mapping = - 4F62 FFFD 4F63 FFFD FFFD 4F64 FFFD FFFD - FFFD FFFD FFFD FFFD 5353 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 567A FFFD FFFD FFFD - 567B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5950 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5B5F 5B5D FFFD 5B5E 5B60 FFFD - FFFD 5D50 FFFD 5D51 FFFD FFFD 5E75 5E74 - FFFD 5F73 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6128 FFFD 623B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5355 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5951 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5E76 FFFD 6129 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 454F - 4F65 FFFD FFFD 5B61 FFFD FFFD 4550 FFFD - FFFD FFFD FFFD FFFD FFFD 5D53 -End of Item 014B - -Begin of Item 014C - Format 1 - srcBegin = 980B - srcEnd = 986E - mappingOffset = 33A5 - Mapping = - 4552 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4A54 4A55 FFFD FFFD FFFD 4A52 4A56 - FFFD FFFD FFFD FFFD 4F69 FFFD FFFD 4F67 - 636E FFFD FFFD FFFD FFFD FFFD FFFD 4F66 - FFFD FFFD FFFD 535C FFFD FFFD 5359 FFFD - 535A 5228 FFFD 5358 FFFD FFFD FFFD 535D - FFFD 535B 535F FFFD 595B 5726 FFFD 637B - FFFD FFFD FFFD FFFD 5728 FFFD FFFD FFFD - 5959 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5956 5958 5B65 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 642A FFFD - FFFD FFFD FFFD 5E78 FFFD 5E77 FFFD FFFD - FFFD 605D 605E 605C -End of Item 014C - -Begin of Item 014D - Format 1 - srcBegin = 98B5 - srcEnd = 98CD - mappingOffset = 3409 - Mapping = - 5361 FFFD 572A FFFD 595C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5D56 FFFD - FFFD FFFD 5E7B 5E79 FFFD 5E7A FFFD FFFD - 6225 -End of Item 014D - -Begin of Item 014E - Format 1 - srcBegin = 98DC - srcEnd = 9923 - mappingOffset = 3422 - Mapping = - 5E7C 6226 FFFD FFFD FFFD 3967 FFFD FFFD - 6670 FFFD 3968 FFFD FFFD FFFD FFFD FFFD - 455B FFFD FFFD FFFD 402B 455C FFFD 4554 - FFFD 4559 FFFD 4557 4A5D FFFD FFFD FFFD - FFFD FFFD FFFD 4558 FFFD 4A5E FFFD FFFD - FFFD FFFD 4A5B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 667A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4F6B FFFD FFFD - 5365 5366 FFFD FFFD 5364 FFFD 5362 5363 -End of Item 014E - -Begin of Item 014F - Format 1 - srcBegin = 9936 - srcEnd = 995D - mappingOffset = 346A - Mapping = - 5962 FFFD 5961 5966 FFFD 5965 FFFD FFFD - FFFD FFFD 5963 FFFD 6671 FFFD 5B69 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5D58 - FFFD 5E7E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5F78 FFFD FFFD 612A -End of Item 014F - -Begin of Item 0150 - Format 1 - srcBegin = 999A - srcEnd = 99AA - mappingOffset = 3492 - Mapping = - 455F FFFD FFFD FFFD FFFD FFFD 5368 FFFD - 5730 FFFD 5967 FFFD FFFD FFFD FFFD 5F21 - 6060 -End of Item 0150 - -Begin of Item 0151 - Format 1 - srcBegin = 99B6 - srcEnd = 99CA - mappingOffset = 34A3 - Mapping = - 4A63 4A62 4A66 FFFD FFFD FFFD 4A61 FFFD - 4A60 4A6C 4A64 FFFD FFFD FFFD 4A6A FFFD - FFFD FFFD 4F73 FFFD 4F6D -End of Item 0151 - -Begin of Item 0152 - Format 1 - srcBegin = 99DA - srcEnd = 9A2F - mappingOffset = 34B8 - Mapping = - 4F6E FFFD FFFD FFFD 4F72 FFFD 4F74 5370 - FFFD FFFD FFFD FFFD 5371 FFFD 536B FFFD - FFFD 536C FFFD FFFD FFFD 536A FFFD FFFD - FFFD 5734 FFFD 5737 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5733 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 596A FFFD - FFFD FFFD 596B FFFD FFFD FFFD 596D FFFD - FFFD FFFD FFFD FFFD FFFD 5B6F 5B6D FFFD - FFFD FFFD FFFD FFFD FFFD 5B6C FFFD 5B6E - FFFD FFFD FFFD FFFD 5B6B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5D5A -End of Item 0152 - -Begin of Item 0153 - Format 1 - srcBegin = 9A3B - srcEnd = 9A3C - mappingOffset = 350E - Mapping = - 5F24 5F22 -End of Item 0153 - -Begin of Item 0154 - Format 1 - srcBegin = 9A51 - srcEnd = 9A63 - mappingOffset = 3510 - Mapping = - 5F79 FFFD FFFD FFFD FFFD FFFD FFFD 6062 - FFFD FFFD FFFD 6061 FFFD FFFD FFFD FFFD - 6172 FFFD 6173 -End of Item 0154 - -Begin of Item 0155 - Format 2 - srcBegin = 9AA9 - destBegin = 402F -End of Item 0155 - -Begin of Item 0156 - Format 1 - srcBegin = 9AB5 - srcEnd = 9B72 - mappingOffset = 3523 - Mapping = - 4F77 4F76 FFFD FFFD FFFD FFFD FFFD FFFD - 573A FFFD FFFD FFFD FFFD FFFD FFFD 5D61 - FFFD FFFD FFFD 5D60 5D5E FFFD FFFD FFFD - FFFD 5F25 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6174 FFFD 6334 4A6E FFFD FFFD - 5F7B 6063 FFFD 4032 FFFD 4561 FFFD 4A6F - 4A73 FFFD FFFD 4A71 4A70 4A72 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4F79 - 5375 FFFD FFFD 5374 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 573B FFFD 573C FFFD FFFD - FFFD FFFD 596F FFFD 5B71 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5F27 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6672 FFFD FFFD FFFD 612C FFFD FFFD FFFD - FFFD 4A75 FFFD FFFD FFFD 5D62 FFFD 612E - 6433 FFFD FFFD 6228 FFFD FFFD FFFD 573E - FFFD FFFD FFFD 5D63 FFFD FFFD FFFD FFFD - 4562 FFFD FFFD 4A78 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 573F FFFD FFFD FFFD - FFFD FFFD FFFD 5D64 FFFD FFFD 5F28 FFFD - FFFD FFFD 612F FFFD FFFD FFFD FFFD FFFD - 4563 FFFD FFFD FFFD FFFD FFFD 4F7E FFFD - FFFD FFFD FFFD FFFD 4F7C FFFD 4F7B FFFD - FFFD FFFD FFFD FFFD FFFD 4F7D -End of Item 0156 - -Begin of Item 0157 - Format 1 - srcBegin = 9B83 - srcEnd = 9BA3 - mappingOffset = 35E1 - Mapping = - 5378 537A FFFD FFFD FFFD FFFD 5423 FFFD - 537C 5421 FFFD 5425 537D FFFD FFFD FFFD - FFFD 5379 FFFD FFFD FFFD 6673 5744 FFFD - FFFD FFFD 5745 FFFD 5740 FFFD FFFD FFFD - 5742 -End of Item 0157 - -Begin of Item 0158 - Format 1 - srcBegin = 9BBB - srcEnd = 9BD2 - mappingOffset = 3602 - Mapping = - 5974 FFFD FFFD FFFD FFFD FFFD FFFD 5973 - FFFD FFFD 5B74 FFFD FFFD FFFD FFFD FFFD - 5976 5975 5743 FFFD FFFD FFFD FFFD 5971 -End of Item 0158 - -Begin of Item 0159 - Format 1 - srcBegin = 9BDF - srcEnd = 9C7B - mappingOffset = 361A - Mapping = - 5B75 FFFD FFFD FFFD 5B77 FFFD FFFD FFFD - FFFD FFFD 5B79 FFFD FFFD FFFD FFFD 5B7A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5D6F - FFFD FFFD 5D71 FFFD 5D67 5D69 FFFD 5D6A - 5D74 5D75 FFFD 5D6E FFFD 5D68 FFFD FFFD - FFFD FFFD FFFD 5D66 FFFD 5D76 FFFD FFFD - FFFD 5D73 FFFD FFFD FFFD FFFD 5D72 FFFD - FFFD FFFD FFFD FFFD 5D70 FFFD FFFD FFFD - 5F2C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 642F FFFD FFFD FFFD FFFD FFFD FFFD 5F2A - FFFD FFFD FFFD FFFD FFFD FFFD 6025 FFFD - FFFD 5F7E FFFD 6023 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6022 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6065 FFFD 6066 FFFD 6068 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6132 FFFD - FFFD FFFD 6133 FFFD FFFD FFFD 6134 FFFD - FFFD FFFD FFFD FFFD FFFD 6159 FFFD FFFD - 615B FFFD FFFD FFFD FFFD FFFD FFFD 6175 - FFFD FFFD FFFD FFFD 6241 -End of Item 0159 - -Begin of Item 015A - Format 1 - srcBegin = 9CE8 - srcEnd = 9D83 - mappingOffset = 36B7 - Mapping = - 4564 FFFD FFFD 4566 2F42 FFFD 4568 4567 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5027 FFFD FFFD FFFD FFFD FFFD 502A FFFD - FFFD 5024 502B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 542D FFFD 5025 5022 FFFD 542A - FFFD FFFD FFFD 542C FFFD FFFD 5436 FFFD - FFFD FFFD 5433 FFFD FFFD FFFD FFFD FFFD - FFFD 5437 FFFD FFFD 5429 FFFD FFFD 5435 - FFFD FFFD 5432 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 574D FFFD FFFD - FFFD 5748 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 574A FFFD FFFD FFFD - FFFD 6675 FFFD FFFD FFFD 5979 597B FFFD - 597D FFFD FFFD FFFD FFFD 597E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5A22 FFFD - FFFD FFFD FFFD 597A FFFD FFFD 5B7D FFFD - FFFD FFFD FFFD FFFD FFFD 5C27 5C22 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5C25 FFFD - FFFD FFFD 5B7E FFFD FFFD FFFD 5C26 FFFD - FFFD FFFD FFFD 5C24 -End of Item 015A - -Begin of Item 015B - Format 1 - srcBegin = 9D91 - srcEnd = 9D95 - mappingOffset = 3753 - Mapping = - 5C23 FFFD FFFD FFFD 5D79 -End of Item 015B - -Begin of Item 015C - Format 1 - srcBegin = 9DA5 - srcEnd = 9DB0 - mappingOffset = 3758 - Mapping = - 5D7A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F35 FFFD 5F31 -End of Item 015C - -Begin of Item 015D - Format 1 - srcBegin = 9DBD - srcEnd = 9DC4 - mappingOffset = 3764 - Mapping = - 5F32 FFFD FFFD FFFD FFFD FFFD FFFD 5F36 -End of Item 015D - -Begin of Item 015E - Format 2 - srcBegin = 9DFC - destBegin = 606C -End of Item 015E - -Begin of Item 015F - Format 1 - srcBegin = 9E08 - srcEnd = 9E1C - mappingOffset = 376C - Mapping = - 6135 FFFD FFFD FFFD FFFD FFFD 615D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6229 FFFD - 6230 FFFD FFFD FFFD 6238 -End of Item 015F - -Begin of Item 0160 - Format 1 - srcBegin = 9E7B - srcEnd = 9ED7 - mappingOffset = 3781 - Mapping = - 5F37 FFFD FFFD FFFD FFFD FFFD 4569 FFFD - FFFD 502C 5439 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5A24 FFFD FFFD - FFFD FFFD 5C29 FFFD FFFD 5E21 FFFD FFFD - FFFD FFFD FFFD 5F3A FFFD FFFD FFFD 6231 - 623F FFFD FFFD 2547 FFFD FFFD FFFD 502F - 502E 543A FFFD FFFD 5750 FFFD 5A26 5A25 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4B22 FFFD FFFD FFFD 5E22 FFFD - FFFD 396A 543C 543B FFFD FFFD FFFD 5A28 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 396B - FFFD FFFD FFFD FFFD 543D -End of Item 0160 - -Begin of Item 0161 - Format 2 - srcBegin = 9EE3 - destBegin = 5C2A -End of Item 0161 - -Begin of Item 0162 - Format 2 - srcBegin = 9EF1 - destBegin = 6029 -End of Item 0162 - -Begin of Item 0163 - Format 1 - srcBegin = 9EFE - srcEnd = 9F08 - mappingOffset = 37DE - Mapping = - 2772 FFFD FFFD FFFD 5A29 5C2D 5C2E 5F3C - FFFD FFFD 615F -End of Item 0163 - -Begin of Item 0164 - Format 1 - srcBegin = 9F14 - srcEnd = 9F27 - mappingOffset = 37E9 - Mapping = - 456A FFFD FFFD 5C30 FFFD FFFD FFFD FFFD - FFFD 6160 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5A2B 5A2A -End of Item 0164 - -Begin of Item 0165 - Format 2 - srcBegin = 9F39 - destBegin = 606D -End of Item 0165 - -Begin of Item 0166 - Format 1 - srcBegin = 9F45 - srcEnd = 9F5A - mappingOffset = 37FD - Mapping = - 613B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2370 FFFD FFFD 543E FFFD - FFFD FFFD FFFD FFFD FFFD 5E24 -End of Item 0166 - -Begin of Item 0167 - Format 2 - srcBegin = 9F69 - destBegin = 5F3E -End of Item 0167 - -Begin of Item 0168 - Format 2 - srcBegin = 9F7C - destBegin = 6233 -End of Item 0168 - -Begin of Item 0169 - Format 1 - srcBegin = 9F8E - srcEnd = 9FA5 - mappingOffset = 3813 - Mapping = - 5755 FFFD FFFD FFFD FFFD 602B FFFD FFFD - FFFD 6242 FFFD FFFD FFFD FFFD FFFD 5E47 - FFFD FFFD FFFD 5F3F FFFD 6161 FFFD 6177 -End of Item 0169 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x016A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x005F, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x049D, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0000 */ -/* Total of Format 1 : 0x0144 */ -/* Total of Format 2 : 0x0026 */ -/* Total of Format 3 : 0x0000 */ - -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1112, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1211, 0x1111, 0x1111, 0x1111, -0x1111, 0x1112, 0x1111, 0x1211, 0x1111, 0x1111, 0x1112, 0x2111, -0x1111, 0x1111, 0x1112, 0x1111, 0x1111, 0x1211, 0x1111, 0x1111, -0x1212, 0x1111, 0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x2111, -0x1112, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x2111, 0x1111, 0x1112, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1121, 0x1121, 0x2111, 0x1122, 0x1221, -0x1111, 0x1212, 0x1111, 0x1111, 0x1111, 0x1111, 0x1121, 0x1112, -0x1112, 0x1111, 0x2111, 0x1211, 0x1211, 0x2111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1121, 0x1111, 0x1211, -0x1221, 0x2121, 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x005F Start of MapCell Array */ -/* 0000 */ 0x4E04, 0x4E05, 0x0000, -/* 0001 */ 0x4E20, 0x4E2A, 0x0002, -/* 0002 */ 0x4E36, 0x4EA3, 0x000D, -/* 0003 */ 0x4EAF, 0x4ECF, 0x007B, -/* 0004 */ 0x4EE0, 0x4F07, 0x009C, -/* 0005 */ 0x4F16, 0x4F1C, 0x00C4, -/* 0006 */ 0x4F28, 0x4F4B, 0x00CB, -/* 0007 */ 0x4F66, 0x4F72, 0x00EF, -/* 0008 */ 0x4F8A, 0x4F93, 0x00FC, -/* 0009 */ 0x4F9F, 0x4FA3, 0x0106, -/* 000A */ 0x4FB0, 0x4FD5, 0x010B, -/* 000B */ 0x4FE3, 0x5010, 0x0131, -/* 000C */ 0x501D, 0x5044, 0x015F, -/* 000D */ 0x5050, 0x5059, 0x0187, -/* 000E */ 0x5066, 0x5097, 0x0191, -/* 000F */ 0x50A6, 0x50AB, 0x01C3, -/* 0010 */ 0x50B9, 0x5101, 0x01C9, -/* 0011 */ 0x510D, 0x513E, 0x0212, -/* 0012 */ 0x514A, 0x52D4, 0x0244, -/* 0013 */ 0x52E0, 0x5307, 0x03CF, -/* 0014 */ 0x5314, 0x53E0, 0x03F7, -/* 0015 */ 0x53F4, 0x5405, 0x04C4, -/* 0016 */ 0x5413, 0x5423, 0x04D6, -/* 0017 */ 0x542F, 0x546D, 0x04E7, -/* 0018 */ 0x5479, 0x0000, 0x2771, -/* 0019 */ 0x5485, 0x54A4, 0x0526, -/* 001A */ 0x54B2, 0x54B9, 0x0546, -/* 001B */ 0x54CA, 0x54DA, 0x054E, -/* 001C */ 0x54EF, 0x5519, 0x055F, -/* 001D */ 0x5528, 0x552B, 0x058A, -/* 001E */ 0x553A, 0x5586, 0x058E, -/* 001F */ 0x5596, 0x55C1, 0x05DB, -/* 0020 */ 0x55D7, 0x55DE, 0x0607, -/* 0021 */ 0x55EA, 0x5637, 0x060F, -/* 0022 */ 0x5644, 0x5667, 0x065D, -/* 0023 */ 0x567B, 0x567D, 0x0681, -/* 0024 */ 0x5689, 0x56A0, 0x0684, -/* 0025 */ 0x56AF, 0x57EF, 0x069C, -/* 0026 */ 0x57FE, 0x5803, 0x07DD, -/* 0027 */ 0x580F, 0x582B, 0x07E3, -/* 0028 */ 0x583A, 0x5878, 0x0800, -/* 0029 */ 0x5884, 0x58D0, 0x083F, -/* 002A */ 0x58DC, 0x593D, 0x088C, -/* 002B */ 0x594B, 0x597A, 0x08EE, -/* 002C */ 0x5986, 0x599F, 0x091E, -/* 002D */ 0x59AC, 0x59C9, 0x0938, -/* 002E */ 0x59D5, 0x5AAB, 0x0956, -/* 002F */ 0x5AC3, 0x5AD3, 0x0A2D, -/* 0030 */ 0x5AE4, 0x5B4F, 0x0A3E, -/* 0031 */ 0x5B60, 0x5B9F, 0x0AAA, -/* 0032 */ 0x5BAB, 0x0000, 0x2C32, -/* 0033 */ 0x5BB7, 0x5BC8, 0x0AEA, -/* 0034 */ 0x5BD5, 0x5BDD, 0x0AFC, -/* 0035 */ 0x5BF3, 0x5C06, 0x0B05, -/* 0036 */ 0x5C13, 0x5C3D, 0x0B19, -/* 0037 */ 0x5C49, 0x5C6B, 0x0B44, -/* 0038 */ 0x5C77, 0x5C8E, 0x0B67, -/* 0039 */ 0x5C9C, 0x5C9E, 0x0B7F, -/* 003A */ 0x5CB4, 0x5CC1, 0x0B82, -/* 003B */ 0x5CCD, 0x5D2F, 0x0B90, -/* 003C */ 0x5D3B, 0x5DE4, 0x0BF3, -/* 003D */ 0x5DF5, 0x5E1E, 0x0C9D, -/* 003E */ 0x5E2A, 0x5E65, 0x0CC7, -/* 003F */ 0x5E71, 0x5EC0, 0x0D03, -/* 0040 */ 0x5ECD, 0x5ED0, 0x0D53, -/* 0041 */ 0x5EEA, 0x5F11, 0x0D57, -/* 0042 */ 0x5F1E, 0x5F72, 0x0D7F, -/* 0043 */ 0x5F83, 0x5F9A, 0x0DD4, -/* 0044 */ 0x5FA7, 0x0000, 0x3B4B, -/* 0045 */ 0x5FB3, 0x6008, 0x0DEC, -/* 0046 */ 0x6018, 0x6023, 0x0E42, -/* 0047 */ 0x6030, 0x6061, 0x0E4E, -/* 0048 */ 0x6073, 0x607E, 0x0E80, -/* 0049 */ 0x608B, 0x60B3, 0x0E8C, -/* 004A */ 0x60D0, 0x60EE, 0x0EB5, -/* 004B */ 0x60FD, 0x6143, 0x0ED4, -/* 004C */ 0x6150, 0x61A6, 0x0F1B, -/* 004D */ 0x61B7, 0x61E2, 0x0F72, -/* 004E */ 0x61F3, 0x0000, 0x5765, -/* 004F */ 0x6202, 0x6267, 0x0F9E, -/* 0050 */ 0x6275, 0x628D, 0x1004, -/* 0051 */ 0x6299, 0x62C5, 0x101D, -/* 0052 */ 0x62D5, 0x62EA, 0x104A, -/* 0053 */ 0x6304, 0x6305, 0x1060, -/* 0054 */ 0x6317, 0x6321, 0x1062, -/* 0055 */ 0x632E, 0x633F, 0x106D, -/* 0056 */ 0x6352, 0x6393, 0x107F, -/* 0057 */ 0x63B2, 0x63C1, 0x10C1, -/* 0058 */ 0x63D1, 0x0000, 0x3B73, -/* 0059 */ 0x63DE, 0x63E6, 0x10D1, -/* 005A */ 0x63F7, 0x641D, 0x10DA, -/* 005B */ 0x6429, 0x64F9, 0x1101, -/* 005C */ 0x6505, 0x654E, 0x11D2, -/* 005D */ 0x655A, 0x6571, 0x121C, -/* 005E */ 0x6585, 0x658E, 0x1234, -/* 005F */ 0x659A, 0x0000, 0x3142, -/* 0060 */ 0x65A6, 0x6601, 0x123E, -/* 0061 */ 0x6617, 0x6681, 0x129A, -/* 0062 */ 0x668E, 0x66F5, 0x1305, -/* 0063 */ 0x6702, 0x6737, 0x136D, -/* 0064 */ 0x6744, 0x676B, 0x13A3, -/* 0065 */ 0x6780, 0x6796, 0x13CB, -/* 0066 */ 0x67A2, 0x67C7, 0x13E2, -/* 0067 */ 0x67D5, 0x67D7, 0x1408, -/* 0068 */ 0x67E8, 0x0000, 0x2D2A, -/* 0069 */ 0x67F9, 0x685E, 0x140B, -/* 006A */ 0x686C, 0x68A6, 0x1471, -/* 006B */ 0x68B6, 0x68CF, 0x14AC, -/* 006C */ 0x68DB, 0x68ED, 0x14C6, -/* 006D */ 0x68FE, 0x6909, 0x14D9, -/* 006E */ 0x6918, 0x6955, 0x14E5, -/* 006F */ 0x6961, 0x6967, 0x1523, -/* 0070 */ 0x6973, 0x69A2, 0x152A, -/* 0071 */ 0x69B2, 0x69FA, 0x155A, -/* 0072 */ 0x6A0B, 0x6B90, 0x15A3, -/* 0073 */ 0x6B9C, 0x6BA1, 0x1729, -/* 0074 */ 0x6BB4, 0x6BC1, 0x172F, -/* 0075 */ 0x6BCE, 0x6BFA, 0x173D, -/* 0076 */ 0x6C0A, 0x0000, 0x552D, -/* 0077 */ 0x6C1C, 0x6C1E, 0x176A, -/* 0078 */ 0x6C2D, 0x6C45, 0x176D, -/* 0079 */ 0x6C51, 0x6C7F, 0x1786, -/* 007A */ 0x6C91, 0x6CB2, 0x17B5, -/* 007B */ 0x6CC8, 0x6D06, 0x17D7, -/* 007C */ 0x6D13, 0x6D26, 0x1816, -/* 007D */ 0x6D44, 0x6D45, 0x182A, -/* 007E */ 0x6D56, 0x6D5D, 0x182C, -/* 007F */ 0x6D6B, 0x6D73, 0x1834, -/* 0080 */ 0x6D81, 0x0000, 0x3221, -/* 0081 */ 0x6D8F, 0x6DCE, 0x183D, -/* 0082 */ 0x6DE7, 0x0000, 0x3674, -/* 0083 */ 0x6DF8, 0x6E2A, 0x187D, -/* 0084 */ 0x6E42, 0x6E59, 0x18B0, -/* 0085 */ 0x6E6A, 0x6E9A, 0x18C8, -/* 0086 */ 0x6EA8, 0x6EBB, 0x18F9, -/* 0087 */ 0x6ED9, 0x6F28, 0x190D, -/* 0088 */ 0x6F34, 0x6F4C, 0x195D, -/* 0089 */ 0x6F59, 0x6F65, 0x1976, -/* 008A */ 0x6F71, 0x6F9F, 0x1983, -/* 008B */ 0x6FB5, 0x6FBE, 0x19B2, -/* 008C */ 0x6FD0, 0x7090, 0x19BC, -/* 008D */ 0x70A0, 0x715B, 0x1A7D, -/* 008E */ 0x716B, 0x7196, 0x1B39, -/* 008F */ 0x71A2, 0x71BB, 0x1B65, -/* 0090 */ 0x71CC, 0x7240, 0x1B7F, -/* 0091 */ 0x724E, 0x7257, 0x1BF4, -/* 0092 */ 0x7264, 0x726D, 0x1BFE, -/* 0093 */ 0x727A, 0x7287, 0x1C08, -/* 0094 */ 0x7294, 0x7299, 0x1C16, -/* 0095 */ 0x72AB, 0x72F5, 0x1C1C, -/* 0096 */ 0x7302, 0x7355, 0x1C67, -/* 0097 */ 0x7371, 0x0000, 0x5549, -/* 0098 */ 0x738C, 0x73AF, 0x1CBB, -/* 0099 */ 0x73BD, 0x7402, 0x1CDF, -/* 009A */ 0x7412, 0x7427, 0x1D25, -/* 009B */ 0x7438, 0x74D3, 0x1D3B, -/* 009C */ 0x74EB, 0x750E, 0x1DD7, -/* 009D */ 0x751B, 0x7524, 0x1DFB, -/* 009E */ 0x753B, 0x75B4, 0x1E05, -/* 009F */ 0x75C3, 0x0000, 0x3252, -/* 00A0 */ 0x75D3, 0x0000, 0x374A, -/* 00A1 */ 0x75E5, 0x75EE, 0x1E7F, -/* 00A2 */ 0x7602, 0x760E, 0x1E89, -/* 00A3 */ 0x762C, 0x765B, 0x1E96, -/* 00A4 */ 0x7667, 0x7683, 0x1EC6, -/* 00A5 */ 0x7690, 0x76EB, 0x1EE3, -/* 00A6 */ 0x76FD, 0x7730, 0x1F3F, -/* 00A7 */ 0x773F, 0x7764, 0x1F73, -/* 00A8 */ 0x7771, 0x777B, 0x1F99, -/* 00A9 */ 0x778A, 0x7798, 0x1FA4, -/* 00AA */ 0x77A4, 0x77E6, 0x1FB3, -/* 00AB */ 0x77F4, 0x77F5, 0x1FF6, -/* 00AC */ 0x7804, 0x7824, 0x1FF8, -/* 00AD */ 0x7836, 0x7866, 0x2019, -/* 00AE */ 0x7876, 0x7892, 0x204A, -/* 00AF */ 0x78A6, 0x78DC, 0x2067, -/* 00B0 */ 0x78EB, 0x78F8, 0x209E, -/* 00B1 */ 0x7906, 0x7922, 0x20AC, -/* 00B2 */ 0x792E, 0x793C, 0x20C9, -/* 00B3 */ 0x794D, 0x7989, 0x20D8, -/* 00B4 */ 0x7999, 0x7A0F, 0x2115, -/* 00B5 */ 0x7A1D, 0x7A53, 0x218C, -/* 00B6 */ 0x7A64, 0x7A83, 0x21C3, -/* 00B7 */ 0x7A91, 0x7AFE, 0x21E3, -/* 00B8 */ 0x7B0B, 0x7B29, 0x2251, -/* 00B9 */ 0x7B36, 0x7B43, 0x2270, -/* 00BA */ 0x7B53, 0x7B86, 0x227E, -/* 00BB */ 0x7B92, 0x7BB3, 0x22B2, -/* 00BC */ 0x7BBF, 0x7BD0, 0x22D4, -/* 00BD */ 0x7BEC, 0x7BFC, 0x22E6, -/* 00BE */ 0x7C08, 0x7C35, 0x22F7, -/* 00BF */ 0x7C42, 0x7CFF, 0x2325, -/* 00C0 */ 0x7D24, 0x7D37, 0x23E3, -/* 00C1 */ 0x7D48, 0x7DB6, 0x23F7, -/* 00C2 */ 0x7DC8, 0x7E07, 0x2466, -/* 00C3 */ 0x7E19, 0x0000, 0x523B, -/* 00C4 */ 0x7E26, 0x7E2C, 0x24A6, -/* 00C5 */ 0x7E4D, 0x7E4F, 0x24AD, -/* 00C6 */ 0x7E5B, 0x7E71, 0x24B0, -/* 00C7 */ 0x7E7F, 0x7E92, 0x24C7, -/* 00C8 */ 0x7E9E, 0x0000, 0x6235, -/* 00C9 */ 0x7F3B, 0x7F62, 0x24DB, -/* 00CA */ 0x7F6F, 0x7F78, 0x2503, -/* 00CB */ 0x7F84, 0x7FB4, 0x250D, -/* 00CC */ 0x7FC4, 0x7FC6, 0x253E, -/* 00CD */ 0x7FD3, 0x7FE7, 0x2541, -/* 00CE */ 0x7FF6, 0x800A, 0x2556, -/* 00CF */ 0x801A, 0x802F, 0x256B, -/* 00D0 */ 0x803B, 0x807C, 0x2581, -/* 00D1 */ 0x808D, 0x80D3, 0x25C3, -/* 00D2 */ 0x80DF, 0x80E2, 0x260A, -/* 00D3 */ 0x80EE, 0x811A, 0x260E, -/* 00D4 */ 0x8128, 0x8149, 0x263B, -/* 00D5 */ 0x815D, 0x8184, 0x265D, -/* 00D6 */ 0x8192, 0x81B8, 0x2685, -/* 00D7 */ 0x81C8, 0x81D6, 0x26AC, -/* 00D8 */ 0x81EF, 0x81F6, 0x26BB, -/* 00D9 */ 0x8203, 0x822D, 0x26C3, -/* 00DA */ 0x8241, 0x824C, 0x26EE, -/* 00DB */ 0x8262, 0x826A, 0x26FA, -/* 00DC */ 0x8276, 0x82B2, 0x2703, -/* 00DD */ 0x82C4, 0x82FD, 0x2740, -/* 00DE */ 0x830B, 0x8323, 0x277A, -/* 00DF */ 0x833E, 0x8346, 0x2793, -/* 00E0 */ 0x8357, 0x8363, 0x279C, -/* 00E1 */ 0x8371, 0x8385, 0x27A9, -/* 00E2 */ 0x8391, 0x83A1, 0x27BE, -/* 00E3 */ 0x83AD, 0x83B7, 0x27CF, -/* 00E4 */ 0x83CD, 0x83DA, 0x27DA, -/* 00E5 */ 0x83E6, 0x83ED, 0x27E8, -/* 00E6 */ 0x8400, 0x8408, 0x27F0, -/* 00E7 */ 0x8414, 0x842E, 0x27F9, -/* 00E8 */ 0x843E, 0x8464, 0x2814, -/* 00E9 */ 0x8471, 0x8484, 0x283B, -/* 00EA */ 0x8492, 0x8496, 0x284F, -/* 00EB */ 0x84A3, 0x84C8, 0x2854, -/* 00EC */ 0x84D5, 0x8505, 0x287A, -/* 00ED */ 0x851B, 0x0000, 0x4E4B, -/* 00EE */ 0x8533, 0x854C, 0x28AB, -/* 00EF */ 0x855A, 0x855F, 0x28C5, -/* 00F0 */ 0x856F, 0x8573, 0x28CB, -/* 00F1 */ 0x857F, 0x0000, 0x562B, -/* 00F2 */ 0x8592, 0x8597, 0x28D0, -/* 00F3 */ 0x85AB, 0x85DB, 0x28D6, -/* 00F4 */ 0x85E7, 0x864A, 0x2907, -/* 00F5 */ 0x8657, 0x865D, 0x296B, -/* 00F6 */ 0x866C, 0x86B2, 0x2972, -/* 00F7 */ 0x86D5, 0x0000, 0x3E62, -/* 00F8 */ 0x86E1, 0x0000, 0x3E63, -/* 00F9 */ 0x86EE, 0x0000, 0x3E68, -/* 00FA */ 0x86FC, 0x86FF, 0x29B9, -/* 00FB */ 0x8715, 0x871D, 0x29BD, -/* 00FC */ 0x872B, 0x874A, 0x29C6, -/* 00FD */ 0x8771, 0x0000, 0x4E5D, -/* 00FE */ 0x877D, 0x0000, 0x4E59, -/* 00FF */ 0x878A, 0x87B1, 0x29E6, -/* 0100 */ 0x87C1, 0x87DA, 0x2A0E, -/* 0101 */ 0x87E9, 0x881A, 0x2A28, -/* 0102 */ 0x8827, 0x8834, 0x2A5A, -/* 0103 */ 0x8842, 0x88BF, 0x2A68, -/* 0104 */ 0x88CF, 0x0000, 0x444E, -/* 0105 */ 0x88E0, 0x8903, 0x2AE6, -/* 0106 */ 0x890F, 0x0000, 0x4E61, -/* 0107 */ 0x891B, 0x8924, 0x2B0A, -/* 0108 */ 0x8939, 0x8954, 0x2B14, -/* 0109 */ 0x8965, 0x8967, 0x2B30, -/* 010A */ 0x8978, 0x89BC, 0x2B33, -/* 010B */ 0x89E7, 0x89F5, 0x2B78, -/* 010C */ 0x8A05, 0x8A0D, 0x2B87, -/* 010D */ 0x8A19, 0x8A4B, 0x2B90, -/* 010E */ 0x8A5A, 0x8AD0, 0x2BC3, -/* 010F */ 0x8AE3, 0x8AEC, 0x2C3A, -/* 0110 */ 0x8AF9, 0x8B0C, 0x2C44, -/* 0111 */ 0x8B1F, 0x8B4D, 0x2C58, -/* 0112 */ 0x8B61, 0x8B9D, 0x2C87, -/* 0113 */ 0x8C3A, 0x8C44, 0x2CC4, -/* 0114 */ 0x8C51, 0x8C67, 0x2CCF, -/* 0115 */ 0x8C74, 0x8CB1, 0x2CE6, -/* 0116 */ 0x8CC9, 0x8CDB, 0x2D24, -/* 0117 */ 0x8CE9, 0x8CF7, 0x2D37, -/* 0118 */ 0x8D03, 0x8D1C, 0x2D46, -/* 0119 */ 0x8D65, 0x0000, 0x3933, -/* 011A */ 0x8D71, 0x8D8B, 0x2D60, -/* 011B */ 0x8D97, 0x8DD4, 0x2D7B, -/* 011C */ 0x8DED, 0x0000, 0x446B, -/* 011D */ 0x8E01, 0x8E0B, 0x2DB9, -/* 011E */ 0x8E28, 0x8E58, 0x2DC4, -/* 011F */ 0x8E68, 0x8E77, 0x2DF5, -/* 0120 */ 0x8E83, 0x0000, 0x5D37, -/* 0121 */ 0x8E99, 0x8EC6, 0x2E05, -/* 0122 */ 0x8ED5, 0x8F04, 0x2E33, -/* 0123 */ 0x8F19, 0x8F4A, 0x2E63, -/* 0124 */ 0x8F5C, 0x8F65, 0x2E95, -/* 0125 */ 0x8F9D, 0x8FD9, 0x2E9F, -/* 0126 */ 0x8FE7, 0x8FF9, 0x2EDC, -/* 0127 */ 0x9008, 0x9013, 0x2EEF, -/* 0128 */ 0x9025, 0x904C, 0x2EFB, -/* 0129 */ 0x905A, 0x9071, 0x2F23, -/* 012A */ 0x9089, 0x90CD, 0x2F3B, -/* 012B */ 0x90DE, 0x0000, 0x3429, -/* 012C */ 0x90EE, 0x90F7, 0x2F80, -/* 012D */ 0x910A, 0x9115, 0x2F8A, -/* 012E */ 0x9125, 0x0000, 0x4A2A, -/* 012F */ 0x9137, 0x913D, 0x2F96, -/* 0130 */ 0x9151, 0x917C, 0x2F9D, -/* 0131 */ 0x9188, 0x9196, 0x2FC9, -/* 0132 */ 0x91A9, 0x0000, 0x593D, -/* 0133 */ 0x91BB, 0x91C4, 0x2FD8, -/* 0134 */ 0x91D6, 0x9244, 0x2FE2, -/* 0135 */ 0x9255, 0x9273, 0x3051, -/* 0136 */ 0x9281, 0x9292, 0x3070, -/* 0137 */ 0x929E, 0x0000, 0x4A39, -/* 0138 */ 0x92AD, 0x92BF, 0x3082, -/* 0139 */ 0x92D4, 0x930A, 0x3095, -/* 013A */ 0x9317, 0x931C, 0x30CC, -/* 013B */ 0x932C, 0x9332, 0x30D2, -/* 013C */ 0x933F, 0x93A0, 0x30D9, -/* 013D */ 0x93AD, 0x93F4, 0x313B, -/* 013E */ 0x9402, 0x9408, 0x3183, -/* 013F */ 0x9417, 0x942D, 0x318A, -/* 0140 */ 0x9442, 0x946C, 0x31A1, -/* 0141 */ 0x947A, 0x9484, 0x31CC, -/* 0142 */ 0x9579, 0x9587, 0x31D7, -/* 0143 */ 0x9595, 0x95E7, 0x31E6, -/* 0144 */ 0x961D, 0x9641, 0x3239, -/* 0145 */ 0x9656, 0x9660, 0x325E, -/* 0146 */ 0x966E, 0x96BD, 0x3269, -/* 0147 */ 0x96D0, 0x96D1, 0x32B9, -/* 0148 */ 0x96E4, 0x96FC, 0x32BB, -/* 0149 */ 0x970A, 0x971B, 0x32D4, -/* 014A */ 0x9731, 0x9779, 0x32E6, -/* 014B */ 0x9787, 0x97FC, 0x332F, -/* 014C */ 0x980B, 0x986E, 0x33A5, -/* 014D */ 0x98B5, 0x98CD, 0x3409, -/* 014E */ 0x98DC, 0x9923, 0x3422, -/* 014F */ 0x9936, 0x995D, 0x346A, -/* 0150 */ 0x999A, 0x99AA, 0x3492, -/* 0151 */ 0x99B6, 0x99CA, 0x34A3, -/* 0152 */ 0x99DA, 0x9A2F, 0x34B8, -/* 0153 */ 0x9A3B, 0x9A3C, 0x350E, -/* 0154 */ 0x9A51, 0x9A63, 0x3510, -/* 0155 */ 0x9AA9, 0x0000, 0x402F, -/* 0156 */ 0x9AB5, 0x9B72, 0x3523, -/* 0157 */ 0x9B83, 0x9BA3, 0x35E1, -/* 0158 */ 0x9BBB, 0x9BD2, 0x3602, -/* 0159 */ 0x9BDF, 0x9C7B, 0x361A, -/* 015A */ 0x9CE8, 0x9D83, 0x36B7, -/* 015B */ 0x9D91, 0x9D95, 0x3753, -/* 015C */ 0x9DA5, 0x9DB0, 0x3758, -/* 015D */ 0x9DBD, 0x9DC4, 0x3764, -/* 015E */ 0x9DFC, 0x0000, 0x606C, -/* 015F */ 0x9E08, 0x9E1C, 0x376C, -/* 0160 */ 0x9E7B, 0x9ED7, 0x3781, -/* 0161 */ 0x9EE3, 0x0000, 0x5C2A, -/* 0162 */ 0x9EF1, 0x0000, 0x6029, -/* 0163 */ 0x9EFE, 0x9F08, 0x37DE, -/* 0164 */ 0x9F14, 0x9F27, 0x37E9, -/* 0165 */ 0x9F39, 0x0000, 0x606D, -/* 0166 */ 0x9F45, 0x9F5A, 0x37FD, -/* 0167 */ 0x9F69, 0x0000, 0x5F3E, -/* 0168 */ 0x9F7C, 0x0000, 0x6233, -/* 0169 */ 0x9F8E, 0x9FA5, 0x3813, -/*-------------------------------------------------------*/ -/* Offset=0x049D Start of MappingTable */ - -/* 0000 */ 0x2126, 0x2125, 0x2262, 0x2261, 0x2263, 0xFFFD, 0x243F, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0x2121, 0xFFFD, 0x212C, 0x2122, 0xFFFD, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2740, 0xFFFD, 0x2123, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2130, 0xFFFD, 0xFFFD, -/* 0020 */ 0x212E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2345, 0xFFFD, 0xFFFD, 0x2B22, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0x2146, 0x2145, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2264, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0048 */ 0x2440, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0x2B23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x396C, -/* 0058 */ 0x396E, 0xFFFD, 0xFFFD, 0xFFFD, 0x2124, 0xFFFD, 0x212D, 0xFFFD, -/* 0060 */ 0x2265, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2131, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x216C, 0x2266, -/* 0070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2442, 0x2742, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0x2147, 0x2B26, 0x2B25, 0x2B27, 0x2B24, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4033, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0x2132, 0xFFFD, 0x2133, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0x2149, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0x214C, 0xFFFD, 0x214B, 0x214A, 0x216D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0x2172, 0x2170, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0x226F, 0x2268, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x226B, 0x2267, 0x2276, 0xFFFD, -/* 00B8 */ 0x226E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x226D, -/* 00C0 */ 0xFFFD, 0xFFFD, 0x226C, 0x2274, 0x2270, 0x2277, 0xFFFD, 0xFFFD, -/* 00C8 */ 0x2275, 0xFFFD, 0x2273, 0x2272, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2450, 0x2448, 0xFFFD, 0xFFFD, -/* 00D8 */ 0x244F, 0xFFFD, 0x2446, 0xFFFD, 0x2445, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x244E, 0xFFFD, 0x2449, 0xFFFD, 0x244B, -/* 00E8 */ 0x2443, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2444, 0x244C, 0x6448, -/* 00F0 */ 0xFFFD, 0x6449, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2747, 0xFFFD, -/* 00F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x274F, 0x2744, 0xFFFD, 0x2751, 0xFFFD, -/* 0100 */ 0x2748, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2743, 0x274C, 0x2749, -/* 0108 */ 0x274B, 0x274A, 0x274D, 0x2B2D, 0x2B2E, 0xFFFD, 0xFFFD, 0x2B36, -/* 0110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2B2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0118 */ 0x6263, 0x2B2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0120 */ 0xFFFD, 0x2B32, 0xFFFD, 0x2B2F, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B33, -/* 0128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B28, 0xFFFD, 0xFFFD, -/* 0130 */ 0x2B29, 0x2B35, 0xFFFD, 0x2B34, 0xFFFD, 0x644A, 0xFFFD, 0xFFFD, -/* 0138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F48, 0xFFFD, -/* 0140 */ 0x2F4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F44, -/* 0148 */ 0xFFFD, 0x2F58, 0x2F4C, 0x2F56, 0xFFFD, 0x2F46, 0xFFFD, 0xFFFD, -/* 0150 */ 0x2F4B, 0x2F49, 0x2F47, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F4F, 0xFFFD, -/* 0158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F53, 0x2F45, -/* 0160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F4E, 0xFFFD, -/* 0168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0170 */ 0x2F51, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0178 */ 0x2F50, 0xFFFD, 0x2F54, 0x2F55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0180 */ 0xFFFD, 0x644B, 0xFFFD, 0xFFFD, 0x343C, 0xFFFD, 0x343F, 0x3444, -/* 0188 */ 0xFFFD, 0x3441, 0xFFFD, 0x3442, 0xFFFD, 0x2F57, 0xFFFD, 0x3447, -/* 0190 */ 0x343D, 0x3440, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x344B, -/* 0198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3443, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x344C, 0x344A, 0xFFFD, 0x3445, 0x3446, -/* 01A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3975, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3971, 0x3972, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B8 */ 0xFFFD, 0xFFFD, 0x396F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01C0 */ 0xFFFD, 0xFFFD, 0x3970, 0x644D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4039, -/* 01C8 */ 0x403C, 0x403A, 0xFFFD, 0xFFFD, 0x4037, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x403D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4036, 0x403E, 0xFFFD, 0xFFFD, -/* 01E0 */ 0x456B, 0xFFFD, 0x634C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E8 */ 0x456E, 0x456C, 0xFFFD, 0xFFFD, 0x456D, 0xFFFD, 0x4576, 0x634D, -/* 01F0 */ 0xFFFD, 0x4570, 0x4575, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4571, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4574, 0xFFFD, 0xFFFD, 0x4B29, -/* 0208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B2B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0210 */ 0xFFFD, 0x4B2D, 0x4B2C, 0x4B27, 0x644E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5031, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0220 */ 0x5035, 0xFFFD, 0x5030, 0x5034, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5441, 0x5440, 0xFFFD, 0xFFFD, -/* 0230 */ 0x5033, 0xFFFD, 0xFFFD, 0xFFFD, 0x5752, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x606F, 0x2278, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0248 */ 0x2454, 0xFFFD, 0x2453, 0x2451, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0250 */ 0x2752, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0258 */ 0xFFFD, 0xFFFD, 0x3976, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E25, 0xFFFD, -/* 0260 */ 0x2134, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B37, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x227A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2E7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0278 */ 0x403F, 0x6453, 0xFFFD, 0xFFFD, 0x2127, 0xFFFD, 0x214D, 0x2148, -/* 0280 */ 0x214E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2178, 0x2179, 0xFFFD, -/* 0288 */ 0xFFFD, 0xFFFD, 0x2755, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0290 */ 0x2128, 0xFFFD, 0xFFFD, 0x217A, 0xFFFD, 0xFFFD, 0xFFFD, 0x2457, -/* 0298 */ 0xFFFD, 0x2B39, 0xFFFD, 0x2F5B, 0xFFFD, 0x2F59, 0xFFFD, 0xFFFD, -/* 02A0 */ 0x2F5A, 0xFFFD, 0x344D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x227E, 0x227D, 0x227C, 0x2459, -/* 02B0 */ 0xFFFD, 0xFFFD, 0x245A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2B3B, 0x2B3D, 0x2B3E, 0xFFFD, 0xFFFD, -/* 02C0 */ 0xFFFD, 0x2F5E, 0xFFFD, 0x2F5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02C8 */ 0xFFFD, 0x344F, 0xFFFD, 0x344E, 0x397D, 0x397A, 0xFFFD, 0xFFFD, -/* 02D0 */ 0x397E, 0xFFFD, 0xFFFD, 0x4B2F, 0x4B2E, 0x4B30, 0xFFFD, 0xFFFD, -/* 02D8 */ 0xFFFD, 0x5442, 0xFFFD, 0xFFFD, 0x212F, 0x2135, 0x2151, 0x217B, -/* 02E0 */ 0xFFFD, 0xFFFD, 0x2322, 0xFFFD, 0xFFFD, 0xFFFD, 0x245B, 0x2759, -/* 02E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x457A, 0xFFFD, -/* 02F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02F8 */ 0x275A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2136, 0x2152, -/* 0300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x217D, 0xFFFD, 0xFFFD, -/* 0308 */ 0xFFFD, 0x2325, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2324, 0x2326, -/* 0310 */ 0xFFFD, 0xFFFD, 0x2327, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0318 */ 0xFFFD, 0x245F, 0x2461, 0xFFFD, 0xFFFD, 0x245C, 0xFFFD, 0xFFFD, -/* 0320 */ 0x245E, 0x245D, 0xFFFD, 0xFFFD, 0xFFFD, 0x2460, 0xFFFD, 0xFFFD, -/* 0328 */ 0xFFFD, 0x275B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x275E, 0xFFFD, -/* 0330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x275F, 0xFFFD, 0xFFFD, 0x275D, 0xFFFD, -/* 0338 */ 0x644F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B3F, -/* 0340 */ 0xFFFD, 0xFFFD, 0x2B40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0348 */ 0xFFFD, 0x2B43, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F68, 0xFFFD, 0xFFFD, -/* 0350 */ 0xFFFD, 0x2F65, 0xFFFD, 0x2F62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0358 */ 0xFFFD, 0xFFFD, 0x2F60, 0xFFFD, 0xFFFD, 0x2F66, 0x2F61, 0x2F63, -/* 0360 */ 0xFFFD, 0x2F64, 0x3450, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0368 */ 0xFFFD, 0xFFFD, 0x3A23, 0xFFFD, 0xFFFD, 0x3A21, 0xFFFD, 0xFFFD, -/* 0370 */ 0x3451, 0xFFFD, 0xFFFD, 0x4041, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0378 */ 0x4040, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0380 */ 0x4B31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0388 */ 0x4B32, 0xFFFD, 0x5036, 0xFFFD, 0xFFFD, 0xFFFD, 0x5037, 0xFFFD, -/* 0390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x602C, 0xFFFD, 0x2137, 0x2154, -/* 0398 */ 0x2153, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03A0 */ 0xFFFD, 0xFFFD, 0x2328, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2463, 0x2462, 0x2761, -/* 03B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2760, 0xFFFD, 0xFFFD, 0xFFFD, 0x625A, -/* 03B8 */ 0xFFFD, 0x2762, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B48, 0x2B46, -/* 03C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B47, 0xFFFD, 0x2F6F, 0xFFFD, -/* 03C8 */ 0x2F6C, 0x2F6A, 0x2F6D, 0x2F6E, 0xFFFD, 0xFFFD, 0x3452, 0x4045, -/* 03D0 */ 0x4044, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4046, 0xFFFD, -/* 03D8 */ 0xFFFD, 0x4621, 0xFFFD, 0xFFFD, 0x457E, 0x4B33, 0xFFFD, 0xFFFD, -/* 03E0 */ 0xFFFD, 0x4D2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2155, 0xFFFD, 0xFFFD, 0x2156, -/* 03F0 */ 0xFFFD, 0xFFFD, 0x2223, 0x2222, 0xFFFD, 0xFFFD, 0x2224, 0x5038, -/* 03F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0400 */ 0xFFFD, 0x2226, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6450, -/* 0408 */ 0x2465, 0xFFFD, 0x2B49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4623, 0x4B34, 0xFFFD, -/* 0418 */ 0x5444, 0x5C34, 0xFFFD, 0x2129, 0xFFFD, 0x2157, 0x2466, 0xFFFD, -/* 0420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0428 */ 0xFFFD, 0x2159, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x232A, 0xFFFD, -/* 0430 */ 0xFFFD, 0xFFFD, 0x232B, 0x232D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0438 */ 0x2763, 0xFFFD, 0xFFFD, 0x2B4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0440 */ 0x215A, 0xFFFD, 0x2227, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0448 */ 0x6451, 0xFFFD, 0x2A5C, 0xFFFD, 0x212A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0450 */ 0x2228, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2467, -/* 0458 */ 0xFFFD, 0x2765, 0xFFFD, 0xFFFD, 0xFFFD, 0x2766, 0xFFFD, 0xFFFD, -/* 0460 */ 0x2B4B, 0xFFFD, 0xFFFD, 0x4047, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0468 */ 0xFFFD, 0x215B, 0xFFFD, 0xFFFD, 0x2229, 0xFFFD, 0x232F, 0xFFFD, -/* 0470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2767, 0xFFFD, -/* 0478 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6452, 0xFFFD, -/* 0480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3454, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0488 */ 0xFFFD, 0x3A28, 0xFFFD, 0x3A27, 0x404A, 0x4049, 0x4048, 0xFFFD, -/* 0490 */ 0xFFFD, 0x4625, 0xFFFD, 0x4626, 0x4B35, 0xFFFD, 0x5445, 0xFFFD, -/* 0498 */ 0xFFFD, 0x212B, 0x215C, 0xFFFD, 0xFFFD, 0x222A, 0xFFFD, 0xFFFD, -/* 04A0 */ 0xFFFD, 0x2331, 0xFFFD, 0xFFFD, 0x2769, 0x276A, 0xFFFD, 0x3455, -/* 04A8 */ 0x3A29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x215E, -/* 04B0 */ 0xFFFD, 0x2160, 0xFFFD, 0x222B, 0xFFFD, 0x2333, 0xFFFD, 0xFFFD, -/* 04B8 */ 0x276B, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B50, 0x2B4F, 0xFFFD, 0x2B4E, -/* 04C0 */ 0x2B4D, 0xFFFD, 0xFFFD, 0x404B, 0x2231, 0xFFFD, 0x222D, 0x222E, -/* 04C8 */ 0xFFFD, 0x222F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2335, -/* 04D0 */ 0x2337, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2339, 0x233A, 0xFFFD, -/* 04D8 */ 0x233B, 0x2334, 0xFFFD, 0xFFFD, 0xFFFD, 0x2476, 0xFFFD, 0xFFFD, -/* 04E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2479, 0x247E, 0x2475, 0x2524, -/* 04E8 */ 0xFFFD, 0xFFFD, 0x2477, 0xFFFD, 0x247B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04F0 */ 0xFFFD, 0xFFFD, 0x2470, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2521, -/* 04F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2473, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0500 */ 0xFFFD, 0x247C, 0xFFFD, 0x2478, 0x2474, 0x246D, 0xFFFD, 0xFFFD, -/* 0508 */ 0x247D, 0x2522, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0510 */ 0xFFFD, 0xFFFD, 0x2523, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x276E, -/* 0518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0520 */ 0xFFFD, 0x2774, 0x2778, 0xFFFD, 0xFFFD, 0x2775, 0x276C, 0xFFFD, -/* 0528 */ 0xFFFD, 0xFFFD, 0x2770, 0x2779, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0530 */ 0x2773, 0xFFFD, 0xFFFD, 0xFFFD, 0x276F, 0x2777, 0xFFFD, 0xFFFD, -/* 0538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B5C, -/* 0540 */ 0x2B5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B57, 0x2B59, 0x2B5B, 0xFFFD, -/* 0548 */ 0x2B54, 0x2B5E, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B51, 0x2B55, 0x6454, -/* 0550 */ 0x2B63, 0x2B61, 0xFFFD, 0xFFFD, 0x2B53, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B58, 0x2F77, -/* 0560 */ 0x3021, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F74, 0x2F78, 0x3022, 0xFFFD, -/* 0568 */ 0xFFFD, 0x2F79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0570 */ 0x2F7B, 0xFFFD, 0x2F7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F73, 0xFFFD, 0xFFFD, -/* 0580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2F76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0588 */ 0x2F7E, 0x3025, 0x6721, 0x345F, 0xFFFD, 0x3468, 0x3466, 0xFFFD, -/* 0590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3467, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0598 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x345B, 0xFFFD, 0xFFFD, -/* 05A0 */ 0x3458, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3462, -/* 05A8 */ 0x3461, 0xFFFD, 0xFFFD, 0xFFFD, 0x3457, 0x3A36, 0x3464, 0xFFFD, -/* 05B0 */ 0xFFFD, 0x345E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3459, 0xFFFD, 0xFFFD, 0x6457, -/* 05C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6456, 0x6722, 0x6455, -/* 05C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A3C, 0xFFFD, -/* 05D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05D8 */ 0xFFFD, 0x3A31, 0x3A38, 0x3A2E, 0x3A2A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05E0 */ 0x3A33, 0xFFFD, 0xFFFD, 0x3A40, 0xFFFD, 0x3A34, 0xFFFD, 0xFFFD, -/* 05E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A42, 0xFFFD, -/* 05F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A3B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05F8 */ 0xFFFD, 0x3A2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6723, -/* 0600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4051, 0x404E, -/* 0608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A2B, 0x404C, -/* 0610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6725, 0xFFFD, 0x6724, 0xFFFD, 0xFFFD, -/* 0618 */ 0xFFFD, 0x6458, 0xFFFD, 0xFFFD, 0xFFFD, 0x462E, 0xFFFD, 0xFFFD, -/* 0620 */ 0x4628, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0628 */ 0x4629, 0xFFFD, 0x4636, 0xFFFD, 0x462C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0630 */ 0x462A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4634, 0xFFFD, -/* 0638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4633, 0xFFFD, 0xFFFD, -/* 0640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4631, 0xFFFD, 0x645A, 0xFFFD, 0x6459, -/* 0648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4650, 0xFFFD, 0x4630, 0xFFFD, 0xFFFD, -/* 0650 */ 0x4B41, 0xFFFD, 0x4B38, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B3D, 0xFFFD, -/* 0658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B44, 0x4B3E, 0xFFFD, 0xFFFD, -/* 0660 */ 0x4B37, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B3B, 0xFFFD, 0x4B43, 0xFFFD, -/* 0668 */ 0x4B45, 0x4B40, 0x4635, 0x4B3C, 0xFFFD, 0x4B39, 0xFFFD, 0x4B3F, -/* 0670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0678 */ 0x503F, 0xFFFD, 0x5040, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0680 */ 0x503B, 0x503D, 0xFFFD, 0x5448, 0x5449, 0x5447, 0xFFFD, 0xFFFD, -/* 0688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x645D, 0x645B, 0xFFFD, 0x575B, -/* 0690 */ 0xFFFD, 0x575A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5758, 0xFFFD, -/* 0698 */ 0xFFFD, 0x5759, 0x5757, 0x575C, 0x5A2D, 0x645E, 0xFFFD, 0xFFFD, -/* 06A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6726, 0x6727, 0x645C, -/* 06A8 */ 0x5E26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06B0 */ 0xFFFD, 0x6728, 0xFFFD, 0xFFFD, 0x5F40, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6071, -/* 06C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2177, 0xFFFD, 0xFFFD, -/* 06C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06D0 */ 0x233E, 0xFFFD, 0xFFFD, 0x252C, 0xFFFD, 0xFFFD, 0x2526, 0xFFFD, -/* 06D8 */ 0xFFFD, 0x252B, 0x252A, 0xFFFD, 0x2529, 0xFFFD, 0x2548, 0x2527, -/* 06E0 */ 0x2528, 0xFFFD, 0xFFFD, 0x2822, 0xFFFD, 0x277D, 0xFFFD, 0xFFFD, -/* 06E8 */ 0x277C, 0x2821, 0x277B, 0xFFFD, 0xFFFD, 0x2B65, 0xFFFD, 0xFFFD, -/* 06F0 */ 0xFFFD, 0xFFFD, 0x3027, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A44, 0x3A43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0700 */ 0xFFFD, 0xFFFD, 0x4052, 0xFFFD, 0x4637, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0708 */ 0xFFFD, 0xFFFD, 0x5F41, 0xFFFD, 0xFFFD, 0xFFFD, 0x2161, 0xFFFD, -/* 0710 */ 0xFFFD, 0x2234, 0xFFFD, 0xFFFD, 0x6249, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2341, 0x2342, -/* 0720 */ 0xFFFD, 0xFFFD, 0x233F, 0x2340, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0728 */ 0xFFFD, 0x2531, 0x253E, 0xFFFD, 0x2530, 0xFFFD, 0xFFFD, 0x2540, -/* 0730 */ 0x2536, 0x252F, 0xFFFD, 0x253C, 0xFFFD, 0x252D, 0xFFFD, 0xFFFD, -/* 0738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0740 */ 0x2532, 0x2541, 0x2542, 0x2533, 0x2538, 0x2537, 0x645F, 0xFFFD, -/* 0748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2535, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0750 */ 0x2825, 0xFFFD, 0x2823, 0xFFFD, 0x2826, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0758 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2828, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2829, 0xFFFD, 0xFFFD, -/* 0768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x282A, 0xFFFD, 0x2824, 0xFFFD, -/* 0770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6460, -/* 0778 */ 0xFFFD, 0xFFFD, 0x2B69, 0x2B68, 0xFFFD, 0x2B6C, 0x2B67, 0x2B6A, -/* 0780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2B71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0788 */ 0xFFFD, 0x2B70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B6B, 0xFFFD, -/* 0790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2B6D, 0x2B72, 0x2B6E, 0xFFFD, 0xFFFD, -/* 0798 */ 0xFFFD, 0x2B66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x302A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07A8 */ 0x3030, 0xFFFD, 0xFFFD, 0x302F, 0xFFFD, 0x3038, 0xFFFD, 0xFFFD, -/* 07B0 */ 0xFFFD, 0x3034, 0x3035, 0xFFFD, 0xFFFD, 0x3033, 0x3028, 0x3037, -/* 07B8 */ 0xFFFD, 0xFFFD, 0x302B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3036, 0xFFFD, -/* 07C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07C8 */ 0x3032, 0xFFFD, 0x346E, 0x3471, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3472, 0xFFFD, 0x3474, 0xFFFD, 0x3469, -/* 07D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x346B, 0x346F, 0x3475, 0xFFFD, -/* 07E0 */ 0xFFFD, 0xFFFD, 0x3476, 0x6461, 0xFFFD, 0xFFFD, 0x6462, 0x6463, -/* 07E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A4A, 0xFFFD, 0x3A45, 0xFFFD, -/* 07F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A47, 0xFFFD, 0xFFFD, 0x3A50, 0xFFFD, -/* 07F8 */ 0xFFFD, 0xFFFD, 0x3A4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6336, -/* 0800 */ 0x3A4E, 0xFFFD, 0x3A49, 0xFFFD, 0x3A4B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6337, 0xFFFD, 0x6464, 0xFFFD, 0xFFFD, -/* 0810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4057, 0xFFFD, -/* 0818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x405B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0820 */ 0xFFFD, 0xFFFD, 0x4056, 0xFFFD, 0xFFFD, 0x405E, 0x405C, 0x4058, -/* 0828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x405D, 0x6343, 0xFFFD, 0x405A, -/* 0830 */ 0x4059, 0xFFFD, 0x4054, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0838 */ 0x4643, 0x463E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4642, 0x463C, 0x463D, -/* 0840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x463A, -/* 0848 */ 0x4645, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4638, 0xFFFD, 0xFFFD, -/* 0850 */ 0x4641, 0x4644, 0x4640, 0xFFFD, 0xFFFD, 0xFFFD, 0x6465, 0xFFFD, -/* 0858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B46, 0xFFFD, 0x4B50, -/* 0860 */ 0xFFFD, 0xFFFD, 0x4B51, 0xFFFD, 0xFFFD, 0x4B4B, 0xFFFD, 0xFFFD, -/* 0868 */ 0x463F, 0xFFFD, 0xFFFD, 0x4B4D, 0xFFFD, 0x4B49, 0xFFFD, 0x4B4F, -/* 0870 */ 0x4B4C, 0xFFFD, 0x4B47, 0xFFFD, 0xFFFD, 0xFFFD, 0x504A, 0xFFFD, -/* 0878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x504B, 0xFFFD, 0xFFFD, 0x5048, 0x504C, -/* 0880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5049, 0xFFFD, 0xFFFD, -/* 0888 */ 0x544B, 0xFFFD, 0xFFFD, 0x544C, 0x5A2F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0890 */ 0x5A2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E28, 0xFFFD, -/* 0898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2343, 0xFFFD, -/* 08A0 */ 0x2545, 0x2543, 0x2544, 0x282D, 0xFFFD, 0x2B77, 0xFFFD, 0x3477, -/* 08A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08B0 */ 0x6466, 0x504D, 0x2139, 0xFFFD, 0x2235, 0x2344, 0xFFFD, 0xFFFD, -/* 08B8 */ 0x2B7A, 0x2B79, 0x213A, 0x2546, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08C0 */ 0x4646, 0x6560, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08C8 */ 0x2236, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3479, -/* 08D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x405F, 0xFFFD, 0xFFFD, 0x4B53, 0xFFFD, -/* 08D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08E0 */ 0x2238, 0xFFFD, 0x2237, 0xFFFD, 0x2239, 0xFFFD, 0x2347, 0xFFFD, -/* 08E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2549, 0x282E, 0x282F, -/* 08F0 */ 0x6467, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B7C, 0xFFFD, 0xFFFD, -/* 08F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x347B, 0xFFFD, -/* 0900 */ 0x347C, 0x347D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A53, 0x3A54, -/* 0908 */ 0xFFFD, 0x4060, 0xFFFD, 0x4061, 0xFFFD, 0xFFFD, 0xFFFD, 0x4648, -/* 0910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0918 */ 0x223B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x234B, 0x234D, 0xFFFD, -/* 0920 */ 0xFFFD, 0x2555, 0xFFFD, 0xFFFD, 0x254C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0928 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x254B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0930 */ 0xFFFD, 0xFFFD, 0x2556, 0x2553, 0x254E, 0xFFFD, 0xFFFD, 0x2551, -/* 0938 */ 0x2841, 0x2833, 0xFFFD, 0xFFFD, 0x2838, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2845, 0x2840, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x283D, 0xFFFD, 0xFFFD, 0x2837, 0xFFFD, -/* 0950 */ 0x2835, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x283F, 0x2C26, 0xFFFD, -/* 0958 */ 0x2846, 0xFFFD, 0x2C2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0960 */ 0x2C21, 0xFFFD, 0xFFFD, 0x2C2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0968 */ 0x2C2E, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C23, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0970 */ 0x2C24, 0x2C25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0978 */ 0xFFFD, 0x2C2B, 0x2C29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2C2A, 0xFFFD, 0x2C28, 0xFFFD, 0xFFFD, -/* 0988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3040, 0xFFFD, 0x2C27, 0xFFFD, -/* 0990 */ 0xFFFD, 0x6270, 0xFFFD, 0x304F, 0xFFFD, 0x304A, 0xFFFD, 0xFFFD, -/* 0998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x304E, 0xFFFD, 0xFFFD, 0x303E, 0xFFFD, -/* 09A0 */ 0xFFFD, 0xFFFD, 0x303B, 0x3045, 0xFFFD, 0x3048, 0xFFFD, 0x3052, -/* 09A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x303C, 0x3522, 0x3538, 0xFFFD, 0xFFFD, -/* 09B0 */ 0x304D, 0xFFFD, 0x304B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3528, 0x3524, 0xFFFD, 0x3531, 0xFFFD, -/* 09C0 */ 0x3533, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x352E, 0xFFFD, -/* 09C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x352A, 0xFFFD, 0xFFFD, 0x352F, -/* 09D0 */ 0x353B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x353A, 0xFFFD, 0xFFFD, -/* 09D8 */ 0xFFFD, 0xFFFD, 0x3539, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09E0 */ 0xFFFD, 0xFFFD, 0x3527, 0xFFFD, 0x353C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09E8 */ 0xFFFD, 0x3530, 0xFFFD, 0xFFFD, 0x352B, 0xFFFD, 0xFFFD, 0x3529, -/* 09F0 */ 0x3534, 0xFFFD, 0x3532, 0xFFFD, 0x3537, 0xFFFD, 0x3535, 0xFFFD, -/* 09F8 */ 0xFFFD, 0xFFFD, 0x3A75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A7C, -/* 0A00 */ 0xFFFD, 0x3A63, 0x3A61, 0x3A58, 0xFFFD, 0xFFFD, 0x3A5B, 0x3A77, -/* 0A08 */ 0x3A72, 0x3A59, 0x3A60, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A7B, 0xFFFD, -/* 0A10 */ 0xFFFD, 0xFFFD, 0x3A66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A62, -/* 0A18 */ 0xFFFD, 0x3A5C, 0x3A5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A20 */ 0xFFFD, 0x3A73, 0x3A5A, 0xFFFD, 0x3A57, 0x3A7A, 0xFFFD, 0xFFFD, -/* 0A28 */ 0xFFFD, 0x3A56, 0xFFFD, 0x3A79, 0x3A78, 0x4067, 0xFFFD, 0x4066, -/* 0A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A38 */ 0x4064, 0x3A6B, 0x406A, 0x6468, 0xFFFD, 0x6469, 0x464C, 0xFFFD, -/* 0A40 */ 0xFFFD, 0x464A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A48 */ 0xFFFD, 0x464F, 0x4653, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B5C, 0xFFFD, 0x4B58, 0xFFFD, -/* 0A58 */ 0x4B54, 0xFFFD, 0x4B5E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B56, 0xFFFD, -/* 0A60 */ 0x4B5A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B5B, 0xFFFD, 0xFFFD, 0x4B5D, -/* 0A68 */ 0x4B5F, 0xFFFD, 0xFFFD, 0x5050, 0x5053, 0xFFFD, 0xFFFD, 0x5051, -/* 0A70 */ 0xFFFD, 0xFFFD, 0x504F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5054, 0xFFFD, -/* 0A78 */ 0xFFFD, 0x504E, 0xFFFD, 0xFFFD, 0x5056, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5450, 0xFFFD, 0x544E, 0xFFFD, 0xFFFD, -/* 0A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5452, 0xFFFD, 0x544F, 0xFFFD, 0x5451, -/* 0A90 */ 0xFFFD, 0x5453, 0xFFFD, 0x5A31, 0x5761, 0x575E, 0xFFFD, 0xFFFD, -/* 0A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C36, 0xFFFD, 0x5C39, 0xFFFD, -/* 0AA0 */ 0x5C3A, 0xFFFD, 0xFFFD, 0x5E29, 0x5F42, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AA8 */ 0xFFFD, 0x6073, 0x2848, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AB0 */ 0x625C, 0x646A, 0xFFFD, 0xFFFD, 0x2C2F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4071, 0xFFFD, -/* 0AC0 */ 0x4072, 0xFFFD, 0xFFFD, 0x5057, 0xFFFD, 0xFFFD, 0x5A34, 0xFFFD, -/* 0AC8 */ 0x5C3B, 0xFFFD, 0x213B, 0xFFFD, 0x223D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AD0 */ 0x2350, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x255A, -/* 0AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x284C, 0xFFFD, -/* 0AE0 */ 0x284A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x284E, -/* 0AE8 */ 0x284B, 0x284D, 0x3057, 0xFFFD, 0xFFFD, 0xFFFD, 0x3056, 0x3055, -/* 0AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3541, 0xFFFD, -/* 0AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x353F, 0x3A7E, 0xFFFD, 0x4074, 0xFFFD, -/* 0B00 */ 0xFFFD, 0x4075, 0x4076, 0x4073, 0x6345, 0x5A35, 0xFFFD, 0xFFFD, -/* 0B08 */ 0xFFFD, 0x5E2A, 0xFFFD, 0x223E, 0xFFFD, 0xFFFD, 0xFFFD, 0x255E, -/* 0B10 */ 0x255C, 0x255D, 0x2850, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3058, -/* 0B18 */ 0x3059, 0x624A, 0x223F, 0xFFFD, 0xFFFD, 0xFFFD, 0x2352, 0x2851, -/* 0B20 */ 0xFFFD, 0x2C34, 0xFFFD, 0xFFFD, 0x3B24, 0xFFFD, 0x4078, 0x6525, -/* 0B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B30 */ 0xFFFD, 0x255F, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C35, 0xFFFD, 0xFFFD, -/* 0B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5454, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2354, 0x2854, 0x2855, 0xFFFD, 0xFFFD, -/* 0B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x305A, 0x305B, 0xFFFD, -/* 0B50 */ 0xFFFD, 0xFFFD, 0x646B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3543, 0xFFFD, -/* 0B58 */ 0xFFFD, 0x3B26, 0x3B25, 0xFFFD, 0x3544, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A38, 0x646C, -/* 0B68 */ 0x2355, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B70 */ 0x235A, 0xFFFD, 0xFFFD, 0xFFFD, 0x2561, 0x2566, 0xFFFD, 0xFFFD, -/* 0B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2562, 0x2563, -/* 0B80 */ 0xFFFD, 0x285D, 0x285E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x285C, -/* 0B88 */ 0x285F, 0x2857, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2858, -/* 0B90 */ 0x2C3F, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C3B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B98 */ 0x646D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C3C, -/* 0BA0 */ 0x2C42, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C3E, 0x2C41, 0xFFFD, 0xFFFD, -/* 0BA8 */ 0x2C43, 0x2C3D, 0xFFFD, 0xFFFD, 0x3063, 0xFFFD, 0x305F, 0xFFFD, -/* 0BB0 */ 0xFFFD, 0xFFFD, 0x3064, 0xFFFD, 0xFFFD, 0xFFFD, 0x3061, 0xFFFD, -/* 0BB8 */ 0x3062, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x305E, 0xFFFD, 0x6271, -/* 0BC0 */ 0xFFFD, 0x6272, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x354B, 0x3548, 0x3547, 0xFFFD, 0xFFFD, -/* 0BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3551, 0xFFFD, 0xFFFD, 0x3552, 0xFFFD, -/* 0BD8 */ 0x354F, 0xFFFD, 0xFFFD, 0x3555, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B2B, -/* 0BE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3546, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x354E, 0xFFFD, 0x354A, -/* 0BF0 */ 0xFFFD, 0xFFFD, 0x3554, 0x3B36, 0xFFFD, 0xFFFD, 0x3B28, 0xFFFD, -/* 0BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B27, 0xFFFD, 0x3B37, 0xFFFD, -/* 0C00 */ 0x3B2A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B2E, 0xFFFD, 0x3B34, -/* 0C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B33, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B31, -/* 0C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C18 */ 0x4121, 0xFFFD, 0xFFFD, 0xFFFD, 0x407C, 0xFFFD, 0x407A, 0xFFFD, -/* 0C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4079, 0x407D, 0xFFFD, -/* 0C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x646E, 0xFFFD, 0xFFFD, -/* 0C30 */ 0x465C, 0xFFFD, 0xFFFD, 0x4654, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4656, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4659, 0x465A, 0xFFFD, 0x646F, 0x4B65, -/* 0C48 */ 0x4B66, 0x4B63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B6B, 0xFFFD, -/* 0C50 */ 0x4B67, 0xFFFD, 0xFFFD, 0x4B69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B6A, 0x4B68, 0x6470, 0x5058, 0xFFFD, -/* 0C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x505B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x505A, 0xFFFD, 0xFFFD, 0x6471, 0xFFFD, -/* 0C70 */ 0xFFFD, 0x5457, 0xFFFD, 0x5459, 0xFFFD, 0xFFFD, 0x5455, 0x6472, -/* 0C78 */ 0xFFFD, 0x5762, 0xFFFD, 0xFFFD, 0x5A39, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C80 */ 0x5C3D, 0xFFFD, 0x5C3C, 0xFFFD, 0x5C3E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C88 */ 0x5E2D, 0xFFFD, 0xFFFD, 0x5F43, 0xFFFD, 0xFFFD, 0xFFFD, 0x6030, -/* 0C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x213C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3557, 0x4B6C, 0x2567, 0x2860, 0xFFFD, -/* 0CA0 */ 0xFFFD, 0xFFFD, 0x2C45, 0x2C44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CA8 */ 0x2163, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0x235C, 0x2568, 0xFFFD, 0x256B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB8 */ 0xFFFD, 0xFFFD, 0x2862, 0x2861, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C46, 0x3066, -/* 0CC8 */ 0xFFFD, 0x3069, 0xFFFD, 0x3068, 0x306A, 0x3067, 0xFFFD, 0x355B, -/* 0CD0 */ 0xFFFD, 0xFFFD, 0x3559, 0xFFFD, 0xFFFD, 0xFFFD, 0x3558, 0x355A, -/* 0CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3979, -/* 0CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B3A, 0x3B3B, 0x3B3D, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x465D, -/* 0CF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B6D, -/* 0CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D00 */ 0xFFFD, 0xFFFD, 0x6473, 0x6677, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D08 */ 0xFFFD, 0x2863, 0xFFFD, 0xFFFD, 0x213D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D10 */ 0xFFFD, 0x213E, 0xFFFD, 0x2247, 0xFFFD, 0x2248, 0xFFFD, 0x6678, -/* 0D18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D20 */ 0xFFFD, 0xFFFD, 0x256E, 0xFFFD, 0x256D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D28 */ 0xFFFD, 0xFFFD, 0x2865, 0x2867, 0xFFFD, 0xFFFD, 0xFFFD, 0x2868, -/* 0D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2C48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x306C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D40 */ 0xFFFD, 0x306B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3561, 0x3560, 0xFFFD, 0x3B3F, -/* 0D50 */ 0xFFFD, 0x3B40, 0x3B3E, 0x6474, 0xFFFD, 0x4661, 0x4660, 0x505C, -/* 0D58 */ 0xFFFD, 0xFFFD, 0x6475, 0xFFFD, 0xFFFD, 0x5C3F, 0xFFFD, 0xFFFD, -/* 0D60 */ 0xFFFD, 0x213F, 0x2361, 0xFFFD, 0xFFFD, 0x2869, 0x286B, 0xFFFD, -/* 0D68 */ 0x2C4C, 0x2C4B, 0x306E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D70 */ 0x256F, 0xFFFD, 0xFFFD, 0x286D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D78 */ 0xFFFD, 0x2164, 0x2249, 0x2362, 0xFFFD, 0xFFFD, 0x3B42, 0x2571, -/* 0D80 */ 0xFFFD, 0xFFFD, 0x286E, 0xFFFD, 0xFFFD, 0xFFFD, 0x2870, 0xFFFD, -/* 0D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D90 */ 0x2C4D, 0xFFFD, 0xFFFD, 0x306F, 0xFFFD, 0x3562, 0xFFFD, 0xFFFD, -/* 0D98 */ 0xFFFD, 0xFFFD, 0x3563, 0x3B47, 0x3B45, 0xFFFD, 0xFFFD, 0x3B44, -/* 0DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4122, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5763, 0xFFFD, -/* 0DB0 */ 0xFFFD, 0x2140, 0x2141, 0x224A, 0x2351, 0xFFFD, 0x2871, 0xFFFD, -/* 0DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4123, 0x505E, 0xFFFD, 0x5764, 0xFFFD, -/* 0DC0 */ 0xFFFD, 0x6164, 0x2142, 0xFFFD, 0x2572, 0xFFFD, 0xFFFD, 0x2C50, -/* 0DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4124, -/* 0DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F45, 0x2876, 0x2875, 0xFFFD, 0xFFFD, -/* 0DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6264, 0x3070, -/* 0DE0 */ 0x3072, 0xFFFD, 0xFFFD, 0xFFFD, 0x3071, 0x6476, 0xFFFD, 0xFFFD, -/* 0DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6477, 0x4663, 0x4664, 0xFFFD, 0xFFFD, -/* 0DF0 */ 0xFFFD, 0x4B72, 0xFFFD, 0x6478, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E00 */ 0x224D, 0x6251, 0xFFFD, 0x224C, 0xFFFD, 0xFFFD, 0xFFFD, 0x2578, -/* 0E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2366, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2367, 0x2369, 0x2577, 0xFFFD, 0xFFFD, -/* 0E18 */ 0x257B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2576, -/* 0E20 */ 0x2574, 0xFFFD, 0x287E, 0xFFFD, 0xFFFD, 0x257C, 0xFFFD, 0xFFFD, -/* 0E28 */ 0xFFFD, 0x2622, 0xFFFD, 0x2621, 0xFFFD, 0xFFFD, 0xFFFD, 0x257D, -/* 0E30 */ 0xFFFD, 0xFFFD, 0x2623, 0xFFFD, 0xFFFD, 0x257A, 0xFFFD, 0x2575, -/* 0E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E40 */ 0x2878, 0x2922, 0x6266, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C5A, 0x2877, 0x2C5B, -/* 0E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x287A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2921, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6267, 0xFFFD, -/* 0E68 */ 0x2C60, 0x3079, 0xFFFD, 0xFFFD, 0x2C56, 0x3073, 0xFFFD, 0x2C57, -/* 0E70 */ 0x2C5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x307E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E78 */ 0xFFFD, 0xFFFD, 0x2C54, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C5F, 0x2C61, -/* 0E80 */ 0x307A, 0x3078, 0x307B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E88 */ 0xFFFD, 0x2C5C, 0xFFFD, 0x3076, 0x3122, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3125, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E98 */ 0xFFFD, 0x3568, 0x3074, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3127, -/* 0EA0 */ 0xFFFD, 0xFFFD, 0x3571, 0xFFFD, 0xFFFD, 0x3572, 0xFFFD, 0x3123, -/* 0EA8 */ 0x3128, 0xFFFD, 0x3121, 0x356F, 0xFFFD, 0xFFFD, 0xFFFD, 0x3126, -/* 0EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B54, 0x356A, 0xFFFD, 0x3B56, -/* 0EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B55, 0x356E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3579, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EC8 */ 0x3B58, 0xFFFD, 0x3B59, 0xFFFD, 0x3576, 0xFFFD, 0x3B5A, 0x3B4D, -/* 0ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3574, 0x3B5E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B4F, 0xFFFD, -/* 0EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EE8 */ 0x3B5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EF0 */ 0x412B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B61, 0xFFFD, 0x3B62, -/* 0EF8 */ 0x3B63, 0x3B50, 0xFFFD, 0xFFFD, 0x6479, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F00 */ 0xFFFD, 0x4129, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4127, -/* 0F08 */ 0x412C, 0xFFFD, 0x466F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x466E, -/* 0F10 */ 0xFFFD, 0x4128, 0xFFFD, 0x466C, 0x412E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F18 */ 0xFFFD, 0x466D, 0x412A, 0x647A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F20 */ 0xFFFD, 0xFFFD, 0x4B73, 0xFFFD, 0x4B7E, 0xFFFD, 0xFFFD, 0x4B74, -/* 0F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4671, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B7C, -/* 0F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4672, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F38 */ 0xFFFD, 0xFFFD, 0x466A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C21, 0xFFFD, 0xFFFD, 0x4668, 0xFFFD, -/* 0F48 */ 0x4673, 0xFFFD, 0xFFFD, 0xFFFD, 0x466B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F50 */ 0x4C23, 0x4674, 0x4C24, 0x4B77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F58 */ 0xFFFD, 0xFFFD, 0x4B7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F60 */ 0x4B76, 0xFFFD, 0x5068, 0x4C28, 0x5067, 0xFFFD, 0xFFFD, 0x4C29, -/* 0F68 */ 0xFFFD, 0x4C25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B79, 0xFFFD, -/* 0F70 */ 0xFFFD, 0x4B75, 0x5061, 0xFFFD, 0x5063, 0xFFFD, 0x506A, 0xFFFD, -/* 0F78 */ 0x5064, 0xFFFD, 0xFFFD, 0x5066, 0xFFFD, 0xFFFD, 0xFFFD, 0x506C, -/* 0F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F88 */ 0xFFFD, 0x5062, 0x5065, 0x506B, 0xFFFD, 0xFFFD, 0x6679, 0xFFFD, -/* 0F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5461, 0x545F, 0x545C, 0x545E, -/* 0F98 */ 0x545D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x545B, 0x5F46, 0xFFFD, -/* 0FA0 */ 0xFFFD, 0x613E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x236B, 0xFFFD, 0xFFFD, 0xFFFD, 0x2625, -/* 0FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C63, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FB8 */ 0xFFFD, 0xFFFD, 0x3B64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4676, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FC8 */ 0x4675, 0xFFFD, 0xFFFD, 0x4C2C, 0xFFFD, 0x506D, 0xFFFD, 0xFFFD, -/* 0FD0 */ 0xFFFD, 0x5F48, 0xFFFD, 0x2165, 0x2166, 0x224E, 0xFFFD, 0x2628, -/* 0FD8 */ 0x2629, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FE0 */ 0xFFFD, 0x3129, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2250, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x236F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FF8 */ 0xFFFD, 0x236C, 0xFFFD, 0x236D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x236E, 0x2639, 0xFFFD, 0xFFFD, 0x262E, -/* 1008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1010 */ 0xFFFD, 0x262A, 0xFFFD, 0xFFFD, 0x2637, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1018 */ 0xFFFD, 0xFFFD, 0x262F, 0xFFFD, 0x2636, 0x2635, 0xFFFD, 0x2633, -/* 1020 */ 0x2634, 0x2638, 0x2631, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x647B, -/* 1028 */ 0xFFFD, 0x2632, 0x2931, 0x292A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2926, 0xFFFD, -/* 1038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2928, 0xFFFD, 0xFFFD, 0x2925, 0xFFFD, -/* 1040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2934, 0x2932, 0xFFFD, 0xFFFD, -/* 1048 */ 0xFFFD, 0x2933, 0x292E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1050 */ 0xFFFD, 0xFFFD, 0x2930, 0x2937, 0x2935, 0x2936, 0x292F, 0xFFFD, -/* 1058 */ 0xFFFD, 0x2929, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C6D, -/* 1060 */ 0x2C6F, 0x2C70, 0x2C6C, 0xFFFD, 0x3132, 0xFFFD, 0x3133, 0xFFFD, -/* 1068 */ 0xFFFD, 0xFFFD, 0x2C6B, 0xFFFD, 0x2C6E, 0x312C, 0xFFFD, 0x312F, -/* 1070 */ 0x3135, 0xFFFD, 0xFFFD, 0xFFFD, 0x3138, 0xFFFD, 0x3137, 0xFFFD, -/* 1078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x313C, 0x312E, -/* 1080 */ 0x3139, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1088 */ 0x3130, 0x313B, 0x3136, 0xFFFD, 0xFFFD, 0x647C, 0xFFFD, 0xFFFD, -/* 1090 */ 0xFFFD, 0x647D, 0xFFFD, 0x3631, 0xFFFD, 0xFFFD, 0xFFFD, 0x3627, -/* 1098 */ 0xFFFD, 0x3629, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10A0 */ 0x3626, 0x3632, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3622, 0xFFFD, -/* 10A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x357C, 0x362B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3623, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10B8 */ 0x357D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10C0 */ 0x3624, 0x362D, 0xFFFD, 0xFFFD, 0xFFFD, 0x647E, 0xFFFD, 0xFFFD, -/* 10C8 */ 0xFFFD, 0x362E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B71, 0xFFFD, -/* 10D0 */ 0x3B70, 0x3B67, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B66, 0xFFFD, 0xFFFD, -/* 10D8 */ 0xFFFD, 0x3B68, 0x3B72, 0x3B6D, 0xFFFD, 0x6339, 0xFFFD, 0xFFFD, -/* 10E0 */ 0xFFFD, 0x3B6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6521, 0xFFFD, -/* 10E8 */ 0xFFFD, 0xFFFD, 0x4149, 0x4132, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x413A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4138, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1100 */ 0x413E, 0x413D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1108 */ 0xFFFD, 0x4136, 0x4133, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1110 */ 0x4134, 0xFFFD, 0x4148, 0x4725, 0x4142, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4144, 0x4145, -/* 1120 */ 0xFFFD, 0x6676, 0xFFFD, 0xFFFD, 0x4678, 0xFFFD, 0xFFFD, 0x4728, -/* 1128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x467E, 0x4724, 0x467A, -/* 1130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1138 */ 0xFFFD, 0xFFFD, 0x4721, 0xFFFD, 0x472A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1140 */ 0xFFFD, 0xFFFD, 0x4723, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1148 */ 0xFFFD, 0x4722, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x467B, 0xFFFD, 0x4729, 0xFFFD, -/* 1158 */ 0x4C2D, 0x4726, 0xFFFD, 0x4C35, 0xFFFD, 0xFFFD, 0x4C38, 0xFFFD, -/* 1160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C30, 0x4C2F, 0xFFFD, -/* 1168 */ 0xFFFD, 0x4C3B, 0xFFFD, 0xFFFD, 0x4C31, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1178 */ 0xFFFD, 0x4C3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C3F, -/* 1180 */ 0x4C34, 0xFFFD, 0x4C3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C3A, -/* 1188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C39, 0xFFFD, 0x6522, 0xFFFD, -/* 1190 */ 0xFFFD, 0x4C37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1198 */ 0x5070, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C32, 0xFFFD, -/* 11A0 */ 0x5077, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11A8 */ 0xFFFD, 0x5076, 0xFFFD, 0x506F, 0xFFFD, 0x5079, 0xFFFD, 0xFFFD, -/* 11B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5075, 0xFFFD, 0xFFFD, 0x5464, -/* 11B8 */ 0xFFFD, 0x5467, 0xFFFD, 0xFFFD, 0xFFFD, 0x576B, 0xFFFD, 0x576D, -/* 11C0 */ 0xFFFD, 0xFFFD, 0x576C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5469, 0xFFFD, -/* 11C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x576A, 0xFFFD, -/* 11D0 */ 0xFFFD, 0x5770, 0x576E, 0xFFFD, 0xFFFD, 0x5A3B, 0xFFFD, 0x5A3C, -/* 11D8 */ 0x5A3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E31, 0xFFFD, -/* 11E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6523, -/* 11E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F4A, 0x5F4B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F49, 0x6032, 0xFFFD, 0xFFFD, -/* 11F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C72, 0xFFFD, -/* 1200 */ 0xFFFD, 0x2167, 0x2168, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C74, 0xFFFD, 0x2C76, -/* 1210 */ 0xFFFD, 0x2C73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1218 */ 0x313D, 0xFFFD, 0x3637, 0x3636, 0x3634, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1220 */ 0xFFFD, 0x3B74, 0x3B75, 0x3B76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x414B, 0xFFFD, 0x414E, -/* 1230 */ 0x6346, 0xFFFD, 0x414D, 0x4730, 0x5C41, 0xFFFD, 0xFFFD, 0x2558, -/* 1238 */ 0x2939, 0xFFFD, 0x3140, 0xFFFD, 0x3638, 0x3639, 0x293B, 0xFFFD, -/* 1240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x363A, 0xFFFD, 0xFFFD, -/* 1248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x546B, 0xFFFD, 0xFFFD, -/* 1250 */ 0xFFFD, 0xFFFD, 0x293C, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C77, 0xFFFD, -/* 1258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x363C, -/* 1260 */ 0xFFFD, 0x363F, 0x363D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1268 */ 0xFFFD, 0x3B79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A3F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1278 */ 0x2169, 0xFFFD, 0xFFFD, 0x3641, 0x4150, 0xFFFD, 0xFFFD, 0x2251, -/* 1280 */ 0xFFFD, 0xFFFD, 0x2373, 0x2372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x263D, 0xFFFD, -/* 1290 */ 0xFFFD, 0x625E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2943, 0x293E, -/* 1298 */ 0xFFFD, 0x2942, 0x2940, 0x2941, 0xFFFD, 0x2C7E, 0x2C7A, 0xFFFD, -/* 12A0 */ 0xFFFD, 0x2D23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C7C, 0xFFFD, -/* 12A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C79, 0xFFFD, 0xFFFD, 0x2C7D, -/* 12B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2D21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12B8 */ 0xFFFD, 0xFFFD, 0x2D24, 0x2D25, 0xFFFD, 0xFFFD, 0x2D22, 0x2C37, -/* 12C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3146, 0xFFFD, 0xFFFD, 0xFFFD, 0x314C, -/* 12C8 */ 0xFFFD, 0x3144, 0xFFFD, 0x3149, 0xFFFD, 0xFFFD, 0x3148, 0xFFFD, -/* 12D0 */ 0x314D, 0x3145, 0xFFFD, 0x3143, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12D8 */ 0xFFFD, 0xFFFD, 0x3642, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x314B, 0xFFFD, 0xFFFD, 0x3644, 0xFFFD, -/* 12E8 */ 0xFFFD, 0xFFFD, 0x3645, 0xFFFD, 0x3C26, 0xFFFD, 0x3B7D, 0xFFFD, -/* 12F0 */ 0x3C25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C23, 0xFFFD, -/* 12F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1300 */ 0x3B7C, 0xFFFD, 0x3B7E, 0xFFFD, 0x3C24, 0x415B, 0x4156, 0xFFFD, -/* 1308 */ 0xFFFD, 0x4159, 0x4151, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1310 */ 0xFFFD, 0x4734, 0xFFFD, 0x4735, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4739, 0x4733, 0x4737, 0xFFFD, 0xFFFD, -/* 1320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C44, 0x4C46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1328 */ 0xFFFD, 0xFFFD, 0x4C41, 0xFFFD, 0xFFFD, 0x4C40, 0xFFFD, 0xFFFD, -/* 1330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C43, 0xFFFD, 0xFFFD, 0x507D, 0xFFFD, -/* 1338 */ 0x5123, 0xFFFD, 0x507A, 0xFFFD, 0x507E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5122, 0x5471, 0xFFFD, 0x546F, -/* 1348 */ 0x5470, 0xFFFD, 0xFFFD, 0x546C, 0x546D, 0xFFFD, 0x5472, 0xFFFD, -/* 1350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A43, 0xFFFD, -/* 1358 */ 0x5A42, 0x6526, 0xFFFD, 0xFFFD, 0x5C42, 0xFFFD, 0x5C43, 0xFFFD, -/* 1360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x613F, 0xFFFD, -/* 1368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2641, 0x6527, 0xFFFD, 0xFFFD, -/* 1370 */ 0xFFFD, 0x5124, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2945, -/* 1378 */ 0xFFFD, 0x2D27, 0xFFFD, 0xFFFD, 0x6632, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1380 */ 0xFFFD, 0x3648, 0xFFFD, 0xFFFD, 0x3647, 0x3646, 0xFFFD, 0xFFFD, -/* 1388 */ 0xFFFD, 0x3C29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5126, -/* 1390 */ 0x6633, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1398 */ 0xFFFD, 0xFFFD, 0x2252, 0xFFFD, 0xFFFD, 0x2377, 0xFFFD, 0xFFFD, -/* 13A0 */ 0xFFFD, 0x2378, 0x2375, 0x2648, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13A8 */ 0xFFFD, 0x2649, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13B0 */ 0xFFFD, 0x2645, 0xFFFD, 0x2644, 0xFFFD, 0xFFFD, 0xFFFD, 0x2647, -/* 13B8 */ 0xFFFD, 0xFFFD, 0x2642, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13C0 */ 0x264A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6257, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13C8 */ 0xFFFD, 0xFFFD, 0x2947, 0x2952, 0xFFFD, 0x2949, 0xFFFD, 0xFFFD, -/* 13D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x625F, 0xFFFD, 0x294A, 0xFFFD, 0xFFFD, -/* 13D8 */ 0xFFFD, 0xFFFD, 0x294F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13E0 */ 0xFFFD, 0x2948, 0x294E, 0x294C, 0x6528, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6529, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13F0 */ 0xFFFD, 0x2D36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D2E, 0xFFFD, 0xFFFD, 0x2D30, -/* 1400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D2D, -/* 1408 */ 0x2D31, 0x2D2B, 0x2D3A, 0x2951, 0xFFFD, 0x2D34, 0xFFFD, 0xFFFD, -/* 1410 */ 0x2D32, 0xFFFD, 0x2D39, 0x2D37, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D38, -/* 1418 */ 0x652B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1420 */ 0xFFFD, 0xFFFD, 0x652A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x315D, -/* 1428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3157, 0xFFFD, 0x3153, 0xFFFD, 0xFFFD, -/* 1430 */ 0x315B, 0xFFFD, 0xFFFD, 0xFFFD, 0x315E, 0x3164, 0x3150, 0xFFFD, -/* 1438 */ 0xFFFD, 0x315F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3156, 0xFFFD, -/* 1440 */ 0xFFFD, 0xFFFD, 0x3163, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1448 */ 0x3154, 0x314F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1450 */ 0x315A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1458 */ 0xFFFD, 0x3159, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D2F, 0xFFFD, 0xFFFD, 0x3162, -/* 1468 */ 0x3158, 0xFFFD, 0x3161, 0x3160, 0x652D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1470 */ 0x652C, 0x3655, 0xFFFD, 0xFFFD, 0xFFFD, 0x3660, 0xFFFD, 0xFFFD, -/* 1478 */ 0x364E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x365B, -/* 1480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1488 */ 0xFFFD, 0x3657, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3651, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1498 */ 0xFFFD, 0xFFFD, 0x365A, 0xFFFD, 0xFFFD, 0x364D, 0x365C, 0x3650, -/* 14A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x364B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14A8 */ 0xFFFD, 0xFFFD, 0x3654, 0x3478, 0x364C, 0x3652, 0x365E, 0x365F, -/* 14B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3656, -/* 14B8 */ 0xFFFD, 0x3C45, 0xFFFD, 0x3C41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14C0 */ 0x3C38, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C3E, 0x3653, 0xFFFD, -/* 14C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C3D, 0xFFFD, 0xFFFD, -/* 14D0 */ 0x3C32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14D8 */ 0x3C2A, 0x3C31, 0x3C42, 0x3C39, 0x3C3B, 0x3C34, 0x3C2F, 0xFFFD, -/* 14E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C37, 0x3C3C, 0xFFFD, 0xFFFD, -/* 14E8 */ 0xFFFD, 0x3C44, 0xFFFD, 0x3C33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x652F, 0xFFFD, -/* 14F8 */ 0xFFFD, 0x652E, 0xFFFD, 0x3C40, 0xFFFD, 0xFFFD, 0x4165, 0xFFFD, -/* 1500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4177, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4168, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1510 */ 0x416B, 0xFFFD, 0xFFFD, 0x415D, 0x4175, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1518 */ 0xFFFD, 0xFFFD, 0x4173, 0xFFFD, 0xFFFD, 0x4174, 0xFFFD, 0xFFFD, -/* 1520 */ 0xFFFD, 0xFFFD, 0x416F, 0x4179, 0xFFFD, 0xFFFD, 0x4178, 0xFFFD, -/* 1528 */ 0xFFFD, 0x4176, 0x416D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x416A, 0x417B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4172, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x473A, 0xFFFD, -/* 1548 */ 0xFFFD, 0x473D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4751, -/* 1550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x474E, 0xFFFD, 0x4746, 0xFFFD, -/* 1558 */ 0xFFFD, 0x4747, 0x473E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1560 */ 0xFFFD, 0xFFFD, 0x6352, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1568 */ 0x4743, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x473B, 0xFFFD, 0xFFFD, -/* 1570 */ 0x473C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1578 */ 0xFFFD, 0x4745, 0x4748, 0xFFFD, 0xFFFD, 0x474D, 0x4744, 0xFFFD, -/* 1580 */ 0x4C54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1588 */ 0xFFFD, 0x474C, 0xFFFD, 0x4742, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1590 */ 0xFFFD, 0x4C64, 0x4C60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C4F, -/* 1598 */ 0x4C51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15A0 */ 0xFFFD, 0x4C5F, 0x4C57, 0x4C4D, 0x4C50, 0xFFFD, 0x4C47, 0xFFFD, -/* 15A8 */ 0x4C5B, 0xFFFD, 0x4C56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15B0 */ 0xFFFD, 0xFFFD, 0x4C4A, 0xFFFD, 0x4C49, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15B8 */ 0xFFFD, 0xFFFD, 0x4C52, 0xFFFD, 0x4C62, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15C0 */ 0xFFFD, 0x4C5E, 0x4C59, 0xFFFD, 0x4C61, 0x6530, 0xFFFD, 0xFFFD, -/* 15C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x512C, 0xFFFD, 0xFFFD, 0x513C, 0x5138, -/* 15D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15D8 */ 0xFFFD, 0xFFFD, 0x5128, 0x512B, 0xFFFD, 0x5140, 0xFFFD, 0xFFFD, -/* 15E0 */ 0xFFFD, 0xFFFD, 0x513B, 0xFFFD, 0x5131, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15E8 */ 0xFFFD, 0xFFFD, 0x5129, 0x513E, 0xFFFD, 0xFFFD, 0xFFFD, 0x512F, -/* 15F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5144, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5127, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x512E, 0xFFFD, 0x5132, 0xFFFD, -/* 1608 */ 0x5141, 0x513A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6531, -/* 1610 */ 0xFFFD, 0xFFFD, 0x6532, 0xFFFD, 0xFFFD, 0x5475, 0xFFFD, 0xFFFD, -/* 1618 */ 0xFFFD, 0xFFFD, 0x547B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5521, 0xFFFD, -/* 1620 */ 0x547C, 0xFFFD, 0x5476, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5527, -/* 1628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1630 */ 0x5523, 0x547A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5524, 0xFFFD, 0xFFFD, -/* 1638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5478, -/* 1640 */ 0xFFFD, 0xFFFD, 0x5529, 0x5774, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1648 */ 0x5777, 0x5821, 0x5776, 0xFFFD, 0xFFFD, 0x5778, 0xFFFD, 0xFFFD, -/* 1650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x577E, 0xFFFD, 0x5779, 0x5823, -/* 1658 */ 0x577D, 0x577A, 0xFFFD, 0xFFFD, 0x5822, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1660 */ 0x577B, 0xFFFD, 0x6533, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A44, 0xFFFD, -/* 1668 */ 0xFFFD, 0xFFFD, 0x5A4F, 0xFFFD, 0x5A45, 0x5A4E, 0xFFFD, 0x5A47, -/* 1670 */ 0x5A4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1678 */ 0xFFFD, 0xFFFD, 0x5A48, 0x5A46, 0xFFFD, 0xFFFD, 0x6534, 0xFFFD, -/* 1680 */ 0xFFFD, 0x5C49, 0xFFFD, 0xFFFD, 0xFFFD, 0x5775, 0xFFFD, 0xFFFD, -/* 1688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C47, 0x6535, 0xFFFD, 0xFFFD, -/* 1690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E35, 0x5E34, 0x5E33, -/* 1698 */ 0xFFFD, 0x5E37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F4F, 0x5F4E, -/* 16A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6536, 0x6537, 0xFFFD, -/* 16A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6074, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6140, 0x6165, 0x6141, 0xFFFD, 0xFFFD, -/* 16B8 */ 0xFFFD, 0xFFFD, 0x2379, 0xFFFD, 0xFFFD, 0xFFFD, 0x2953, 0x2954, -/* 16C0 */ 0xFFFD, 0x6269, 0x2D3C, 0x3166, 0xFFFD, 0xFFFD, 0x3165, 0xFFFD, -/* 16C8 */ 0x3167, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3662, 0xFFFD, 0xFFFD, -/* 16D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16D8 */ 0x417D, 0xFFFD, 0xFFFD, 0xFFFD, 0x417C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C66, -/* 16E8 */ 0xFFFD, 0xFFFD, 0x4C65, 0x4C67, 0xFFFD, 0xFFFD, 0xFFFD, 0x5146, -/* 16F0 */ 0x5145, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x552B, 0xFFFD, 0xFFFD, -/* 16F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1700 */ 0x2955, 0x2956, 0xFFFD, 0x2D3D, 0x3168, 0xFFFD, 0x3C49, 0x3C47, -/* 1708 */ 0xFFFD, 0x417E, 0xFFFD, 0x4221, 0x4753, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1710 */ 0xFFFD, 0xFFFD, 0x2253, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1718 */ 0xFFFD, 0x2958, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x316A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1728 */ 0x3664, 0x4222, 0x6354, 0xFFFD, 0xFFFD, 0xFFFD, 0x4754, 0x2959, -/* 1730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3665, 0xFFFD, -/* 1738 */ 0xFFFD, 0x3C4B, 0xFFFD, 0xFFFD, 0x4226, 0x237A, 0xFFFD, 0xFFFD, -/* 1740 */ 0x295A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6538, 0x6539, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1750 */ 0x2D42, 0xFFFD, 0xFFFD, 0xFFFD, 0x316E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1758 */ 0x316C, 0x316D, 0xFFFD, 0xFFFD, 0x3666, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C4D, 0xFFFD, 0x653A, 0xFFFD, 0xFFFD, -/* 1768 */ 0xFFFD, 0x4228, 0x295D, 0xFFFD, 0x653B, 0x3C4E, 0xFFFD, 0xFFFD, -/* 1770 */ 0xFFFD, 0x4229, 0x422A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2257, -/* 1778 */ 0xFFFD, 0x2254, 0xFFFD, 0xFFFD, 0x2421, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2258, 0x2259, 0x237D, 0xFFFD, -/* 1788 */ 0x2425, 0xFFFD, 0xFFFD, 0x2655, 0xFFFD, 0x237C, 0xFFFD, 0x2423, -/* 1790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1798 */ 0x653C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17A0 */ 0xFFFD, 0x2964, 0xFFFD, 0x2650, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17A8 */ 0xFFFD, 0xFFFD, 0x2653, 0xFFFD, 0x237E, 0xFFFD, 0x2657, 0xFFFD, -/* 17B0 */ 0xFFFD, 0x2651, 0xFFFD, 0xFFFD, 0x264C, 0x264D, 0xFFFD, 0xFFFD, -/* 17B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2963, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17C0 */ 0xFFFD, 0xFFFD, 0x264E, 0x2652, 0x265C, 0x2659, 0x2656, 0xFFFD, -/* 17C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x265B, 0xFFFD, -/* 17D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2D4E, 0xFFFD, 0xFFFD, 0x296B, 0x296D, -/* 17D8 */ 0xFFFD, 0xFFFD, 0x6261, 0xFFFD, 0xFFFD, 0x296C, 0xFFFD, 0xFFFD, -/* 17E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x296A, -/* 17E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2965, 0xFFFD, -/* 17F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2969, 0xFFFD, 0x6260, 0xFFFD, 0xFFFD, -/* 17F8 */ 0xFFFD, 0x2967, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2D4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D46, 0xFFFD, -/* 1810 */ 0xFFFD, 0x2D50, 0xFFFD, 0xFFFD, 0x2D48, 0x2D4A, 0x2D49, 0x2D47, -/* 1818 */ 0x2D4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x317A, -/* 1820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D4B, 0xFFFD, 0x2D45, 0x2D57, -/* 1828 */ 0xFFFD, 0x2D53, 0x2D55, 0x2D51, 0x3177, 0x3173, 0xFFFD, 0xFFFD, -/* 1830 */ 0xFFFD, 0x3179, 0x3226, 0x3176, 0x316F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1838 */ 0xFFFD, 0xFFFD, 0x3222, 0x3225, 0x3172, 0x3178, 0xFFFD, 0xFFFD, -/* 1840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3227, 0xFFFD, 0xFFFD, 0x317D, -/* 1848 */ 0x317B, 0x317C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x653D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x366F, 0xFFFD, 0xFFFD, 0x367A, 0x3721, -/* 1860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C50, 0xFFFD, 0xFFFD, 0x3672, -/* 1868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x366A, -/* 1870 */ 0xFFFD, 0x366B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x366C, 0x367C, 0xFFFD, 0xFFFD, -/* 1880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C5D, 0x3728, 0xFFFD, 0x3726, 0x3723, -/* 1888 */ 0xFFFD, 0x3670, 0xFFFD, 0x3677, 0x3724, 0x3676, 0x3725, 0x3679, -/* 1890 */ 0xFFFD, 0x367D, 0xFFFD, 0xFFFD, 0x653E, 0xFFFD, 0xFFFD, 0x3729, -/* 1898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3727, 0x3C54, 0xFFFD, 0xFFFD, -/* 18A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C6B, 0x3C6D, -/* 18B0 */ 0x3C5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C56, 0xFFFD, -/* 18B8 */ 0xFFFD, 0xFFFD, 0x3C6E, 0xFFFD, 0xFFFD, 0x3C58, 0x3C69, 0xFFFD, -/* 18C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C66, 0xFFFD, 0x3C64, -/* 18C8 */ 0x3C5B, 0xFFFD, 0x423A, 0x3C60, 0xFFFD, 0xFFFD, 0x3C5C, 0xFFFD, -/* 18D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C51, 0x3C6C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18D8 */ 0xFFFD, 0x3C62, 0x6542, 0xFFFD, 0x3C63, 0xFFFD, 0x3C68, 0xFFFD, -/* 18E0 */ 0xFFFD, 0xFFFD, 0x6540, 0xFFFD, 0x633D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18E8 */ 0x653F, 0x6541, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4230, -/* 18F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18F8 */ 0x4233, 0x422E, 0x4236, 0xFFFD, 0xFFFD, 0x4240, 0xFFFD, 0xFFFD, -/* 1900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4239, 0xFFFD, -/* 1908 */ 0xFFFD, 0x422D, 0xFFFD, 0xFFFD, 0x4231, 0x4244, 0x423E, 0x4247, -/* 1910 */ 0xFFFD, 0x423D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4245, -/* 1918 */ 0xFFFD, 0xFFFD, 0x423F, 0xFFFD, 0x423B, 0x4246, 0xFFFD, 0xFFFD, -/* 1920 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4756, 0xFFFD, 0xFFFD, 0x4757, -/* 1928 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4765, 0xFFFD, -/* 1930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1938 */ 0x4763, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C78, -/* 1940 */ 0x475B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C6A, 0x4764, 0xFFFD, 0xFFFD, -/* 1948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x475F, 0xFFFD, 0xFFFD, 0xFFFD, 0x475A, -/* 1950 */ 0xFFFD, 0x475C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x475E, 0x475D, 0xFFFD, 0xFFFD, -/* 1960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C74, 0xFFFD, -/* 1968 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4762, 0xFFFD, 0x4761, 0xFFFD, 0xFFFD, -/* 1970 */ 0xFFFD, 0x6544, 0x6545, 0x4766, 0xFFFD, 0x6543, 0x4C7D, 0xFFFD, -/* 1978 */ 0xFFFD, 0x4C73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1980 */ 0xFFFD, 0xFFFD, 0x4C6B, 0x4C75, 0xFFFD, 0xFFFD, 0x4C7E, 0x4C6C, -/* 1988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6363, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A0 */ 0xFFFD, 0x4C7B, 0xFFFD, 0x4C77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6547, 0xFFFD, 0xFFFD, 0xFFFD, 0x6546, -/* 19B0 */ 0xFFFD, 0x5156, 0x5154, 0xFFFD, 0x5158, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19B8 */ 0x514D, 0xFFFD, 0xFFFD, 0x5150, 0x4C71, 0xFFFD, 0xFFFD, 0x5155, -/* 19C0 */ 0xFFFD, 0xFFFD, 0x5530, 0x552F, 0xFFFD, 0x5535, 0x5536, 0xFFFD, -/* 19C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19D0 */ 0xFFFD, 0x5531, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5537, 0xFFFD, -/* 19D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A55, -/* 19E0 */ 0xFFFD, 0x5159, 0x5539, 0xFFFD, 0x6548, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19E8 */ 0xFFFD, 0x5828, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x582A, 0x5827, -/* 19F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5826, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5829, 0xFFFD, 0xFFFD, 0x582B, -/* 1A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A08 */ 0xFFFD, 0xFFFD, 0x5A52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A10 */ 0xFFFD, 0x5A54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A18 */ 0x5A53, 0x654A, 0x6549, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A20 */ 0xFFFD, 0xFFFD, 0x5C51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A28 */ 0xFFFD, 0x5C4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3A, -/* 1A38 */ 0xFFFD, 0x5E3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6036, -/* 1A40 */ 0x5F52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6037, 0xFFFD, 0xFFFD, -/* 1A48 */ 0x654B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6179, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A58 */ 0xFFFD, 0xFFFD, 0x2428, 0x2426, 0xFFFD, 0xFFFD, 0x2427, 0x242B, -/* 1A60 */ 0xFFFD, 0x2662, 0xFFFD, 0x265F, 0xFFFD, 0x265E, 0xFFFD, 0x2663, -/* 1A68 */ 0xFFFD, 0xFFFD, 0x2660, 0xFFFD, 0xFFFD, 0x2977, 0xFFFD, 0xFFFD, -/* 1A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2974, 0x2970, 0x2975, 0xFFFD, 0x296F, -/* 1A78 */ 0x2979, 0x2976, 0xFFFD, 0x2972, 0x2971, 0x2D5E, 0xFFFD, 0x2D5C, -/* 1A80 */ 0x2D5A, 0xFFFD, 0x2D58, 0x626A, 0x2D65, 0x2D62, 0xFFFD, 0x2D5F, -/* 1A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D64, -/* 1A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2D63, 0xFFFD, 0xFFFD, 0x2D68, 0xFFFD, -/* 1A98 */ 0x2D5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x654D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AA0 */ 0xFFFD, 0x3228, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6279, 0xFFFD, -/* 1AA8 */ 0xFFFD, 0x322A, 0xFFFD, 0xFFFD, 0xFFFD, 0x322B, 0xFFFD, 0xFFFD, -/* 1AB0 */ 0xFFFD, 0xFFFD, 0x3231, 0x322F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AB8 */ 0x3229, 0xFFFD, 0xFFFD, 0xFFFD, 0x322D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC0 */ 0x322C, 0xFFFD, 0x654F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x654E, -/* 1AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3230, 0xFFFD, 0xFFFD, 0x3730, 0x3732, -/* 1AD0 */ 0xFFFD, 0xFFFD, 0x372F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3735, 0xFFFD, 0xFFFD, 0x372E, 0xFFFD, -/* 1AE0 */ 0x372C, 0xFFFD, 0xFFFD, 0xFFFD, 0x372D, 0x3731, 0xFFFD, 0xFFFD, -/* 1AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3733, 0xFFFD, 0x6550, 0x6551, -/* 1AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AF8 */ 0xFFFD, 0xFFFD, 0x3C74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B00 */ 0xFFFD, 0x3C7D, 0xFFFD, 0xFFFD, 0x3C7C, 0xFFFD, 0xFFFD, 0x3C6F, -/* 1B08 */ 0x3C7A, 0x3C72, 0x3D21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B10 */ 0x3C7B, 0x3C79, 0x3C71, 0xFFFD, 0x3C73, 0x3C77, 0x6553, 0xFFFD, -/* 1B18 */ 0x6554, 0xFFFD, 0x6555, 0xFFFD, 0x6552, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B20 */ 0xFFFD, 0xFFFD, 0x4257, 0xFFFD, 0xFFFD, 0x424C, 0xFFFD, 0x424E, -/* 1B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4251, 0xFFFD, 0x4258, 0xFFFD, -/* 1B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4252, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B38 */ 0x483C, 0x424F, 0xFFFD, 0x4259, 0xFFFD, 0x4249, 0xFFFD, 0x6559, -/* 1B40 */ 0xFFFD, 0xFFFD, 0x4253, 0x6557, 0x6558, 0x6556, 0xFFFD, 0xFFFD, -/* 1B48 */ 0xFFFD, 0xFFFD, 0x476F, 0xFFFD, 0x476E, 0x476C, 0xFFFD, 0xFFFD, -/* 1B50 */ 0xFFFD, 0x4770, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4772, 0xFFFD, -/* 1B58 */ 0xFFFD, 0x476A, 0x476D, 0x476B, 0x4768, 0xFFFD, 0xFFFD, 0x4767, -/* 1B60 */ 0xFFFD, 0x655B, 0xFFFD, 0xFFFD, 0x655A, 0x4D2A, 0x4D24, 0xFFFD, -/* 1B68 */ 0xFFFD, 0x4D29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D28, 0xFFFD, -/* 1B70 */ 0x4D25, 0x4D22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x655C, -/* 1B78 */ 0xFFFD, 0x5162, 0x515A, 0xFFFD, 0xFFFD, 0x5160, 0x515C, 0x5163, -/* 1B80 */ 0x6374, 0xFFFD, 0xFFFD, 0xFFFD, 0x515E, 0xFFFD, 0x5166, 0xFFFD, -/* 1B88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B90 */ 0x655D, 0x655E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x553C, 0xFFFD, -/* 1B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x553E, 0x5543, 0x5540, 0xFFFD, -/* 1BA0 */ 0xFFFD, 0xFFFD, 0x5541, 0xFFFD, 0xFFFD, 0xFFFD, 0x5542, 0xFFFD, -/* 1BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x582D, 0xFFFD, 0xFFFD, -/* 1BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x582E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A56, -/* 1BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A57, 0xFFFD, 0xFFFD, 0x5C59, 0xFFFD, -/* 1BC0 */ 0xFFFD, 0x655F, 0x5C56, 0xFFFD, 0x5C58, 0x5C55, 0xFFFD, 0xFFFD, -/* 1BC8 */ 0x5A58, 0x5C53, 0x5C57, 0x6561, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F53, -/* 1BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F54, 0x6039, 0xFFFD, 0xFFFD, 0x6143, -/* 1BD8 */ 0x6142, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BE0 */ 0xFFFD, 0x2D69, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D22, 0xFFFD, 0xFFFD, -/* 1BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D6B, -/* 1BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x297C, 0x425D, 0xFFFD, 0x425C, 0x425B, -/* 1BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D2E, 0xFFFD, 0x4D2D, 0x2664, 0x2A21, -/* 1C00 */ 0x2A22, 0xFFFD, 0x2A23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D6D, -/* 1C08 */ 0x3236, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C10 */ 0x3D24, 0x3D23, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D25, 0x4775, 0xFFFD, -/* 1C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D2F, 0x617B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C20 */ 0xFFFD, 0xFFFD, 0x242C, 0x242D, 0xFFFD, 0xFFFD, 0xFFFD, 0x266B, -/* 1C28 */ 0xFFFD, 0xFFFD, 0x2669, 0xFFFD, 0x2666, 0x2667, 0xFFFD, 0x266A, -/* 1C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C38 */ 0x2668, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A26, 0xFFFD, -/* 1C40 */ 0x2A2A, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A27, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A28, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2D75, 0xFFFD, 0xFFFD, 0x2D74, 0xFFFD, -/* 1C58 */ 0x2D70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D73, 0x2D71, 0xFFFD, -/* 1C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3238, 0x3239, -/* 1C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x373B, 0xFFFD, 0x373A, 0xFFFD, 0xFFFD, -/* 1C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3739, -/* 1C80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C88 */ 0xFFFD, 0x3D27, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D2E, 0xFFFD, 0x3D29, -/* 1C90 */ 0x3D2B, 0x3D2A, 0xFFFD, 0x4261, 0x3D2D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D28, 0xFFFD, 0xFFFD, -/* 1CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x425F, 0xFFFD, -/* 1CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4262, 0x6562, 0x6563, 0xFFFD, 0xFFFD, -/* 1CB0 */ 0x4D30, 0xFFFD, 0xFFFD, 0xFFFD, 0x4779, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CB8 */ 0x4778, 0x477A, 0x4777, 0x225A, 0x216B, 0xFFFD, 0x242F, 0xFFFD, -/* 1CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x266E, -/* 1CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2A33, 0xFFFD, 0x2A2D, 0xFFFD, 0xFFFD, -/* 1CD0 */ 0xFFFD, 0xFFFD, 0x2A2C, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A2B, 0xFFFD, -/* 1CD8 */ 0xFFFD, 0x2A32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A2F, 0x2D78, -/* 1CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2D7B, 0xFFFD, 0xFFFD, 0x2D77, 0xFFFD, -/* 1CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2D7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CF0 */ 0x2D7E, 0x2D79, 0x2D7C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x323E, -/* 1CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D00 */ 0xFFFD, 0x3240, 0xFFFD, 0x3247, 0x323C, 0xFFFD, 0x3246, 0xFFFD, -/* 1D08 */ 0x3241, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x323D, 0xFFFD, -/* 1D10 */ 0xFFFD, 0x6564, 0xFFFD, 0xFFFD, 0xFFFD, 0x373D, 0xFFFD, 0xFFFD, -/* 1D18 */ 0xFFFD, 0x3D38, 0xFFFD, 0x323F, 0xFFFD, 0x3740, 0xFFFD, 0xFFFD, -/* 1D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x373C, 0x6565, 0xFFFD, 0x3D36, -/* 1D28 */ 0x3D3A, 0xFFFD, 0x3D2F, 0x3D3B, 0x3D32, 0xFFFD, 0xFFFD, 0x3D39, -/* 1D30 */ 0xFFFD, 0x426D, 0x3D35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D38 */ 0xFFFD, 0xFFFD, 0x4264, 0x3D33, 0x3D3C, 0xFFFD, 0x6566, 0x3D37, -/* 1D40 */ 0x4268, 0x4275, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x426F, 0xFFFD, -/* 1D48 */ 0x4274, 0xFFFD, 0x426E, 0x4266, 0x4271, 0xFFFD, 0xFFFD, 0x4273, -/* 1D50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4267, 0xFFFD, -/* 1D58 */ 0xFFFD, 0x426B, 0xFFFD, 0x4270, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D60 */ 0x426A, 0xFFFD, 0xFFFD, 0x4825, 0x477E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D68 */ 0x477C, 0x477D, 0xFFFD, 0x4822, 0xFFFD, 0xFFFD, 0x4821, 0x477B, -/* 1D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4827, -/* 1D78 */ 0xFFFD, 0x4823, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D31, 0x4D3B, 0xFFFD, -/* 1D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D39, 0xFFFD, 0x4D36, -/* 1D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D35, -/* 1D90 */ 0x6568, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D3A, 0xFFFD, -/* 1D98 */ 0xFFFD, 0x516A, 0xFFFD, 0xFFFD, 0x6375, 0xFFFD, 0x5167, 0xFFFD, -/* 1DA0 */ 0x516C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x516B, 0xFFFD, 0x6567, -/* 1DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x554F, -/* 1DB0 */ 0xFFFD, 0x554B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x554D, 0x6569, -/* 1DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x582F, 0xFFFD, 0xFFFD, 0x5830, -/* 1DC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A5A, -/* 1DC8 */ 0xFFFD, 0xFFFD, 0x5A5C, 0x5A5D, 0x5A5B, 0xFFFD, 0xFFFD, 0x5C5E, -/* 1DD0 */ 0x5C5C, 0x5C5F, 0xFFFD, 0x5C5D, 0x5C60, 0xFFFD, 0x5E3D, 0x2E22, -/* 1DD8 */ 0xFFFD, 0x2E21, 0xFFFD, 0x2E24, 0xFFFD, 0xFFFD, 0xFFFD, 0x3248, -/* 1DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D3D, 0xFFFD, 0xFFFD, -/* 1DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4277, 0xFFFD, 0xFFFD, -/* 1DF0 */ 0xFFFD, 0xFFFD, 0x4828, 0xFFFD, 0xFFFD, 0x4D3D, 0x516D, 0xFFFD, -/* 1DF8 */ 0xFFFD, 0xFFFD, 0x516E, 0x3744, 0xFFFD, 0xFFFD, 0x4278, 0xFFFD, -/* 1E00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3745, 0x3D3E, 0x2A37, 0xFFFD, 0xFFFD, -/* 1E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2A38, 0x2A35, 0xFFFD, 0x2A36, 0xFFFD, -/* 1E10 */ 0x2E27, 0xFFFD, 0xFFFD, 0x2E25, 0x2E28, 0xFFFD, 0xFFFD, 0x2E2A, -/* 1E18 */ 0xFFFD, 0xFFFD, 0x2E26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x324E, -/* 1E20 */ 0x324D, 0x3250, 0x324F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E28 */ 0x3251, 0xFFFD, 0xFFFD, 0x3746, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E30 */ 0xFFFD, 0x3749, 0x3747, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D43, -/* 1E38 */ 0x3D42, 0xFFFD, 0xFFFD, 0x3D44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x427B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5170, 0xFFFD, 0x5552, 0xFFFD, 0xFFFD, -/* 1E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E58 */ 0x3D45, 0xFFFD, 0xFFFD, 0xFFFD, 0x225B, 0x2673, 0xFFFD, 0xFFFD, -/* 1E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A3A, 0xFFFD, 0xFFFD, -/* 1E68 */ 0x2A3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E70 */ 0x2E2B, 0xFFFD, 0x2E2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3257, 0xFFFD, 0xFFFD, 0x3255, 0x3D47, -/* 1E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E88 */ 0x427C, 0x427D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x482B, 0xFFFD, -/* 1E90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4829, 0x5171, 0xFFFD, -/* 1E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EA0 */ 0x5173, 0x5172, 0xFFFD, 0xFFFD, 0xFFFD, 0x5174, 0xFFFD, 0xFFFD, -/* 1EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5555, 0x5553, -/* 1EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EB8 */ 0x5554, 0x5834, 0xFFFD, 0x5833, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5832, 0x5E3F, 0x5E3E, -/* 1EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x603B, 0xFFFD, -/* 1ED0 */ 0xFFFD, 0xFFFD, 0x656A, 0xFFFD, 0xFFFD, 0x225C, 0x656B, 0xFFFD, -/* 1ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2674, -/* 1EE0 */ 0xFFFD, 0xFFFD, 0x2676, 0x374D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D4C, -/* 1EE8 */ 0xFFFD, 0xFFFD, 0x427E, 0x4321, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5176, 0xFFFD, 0x5556, 0xFFFD, -/* 1EF8 */ 0x5557, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A5E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D4D, 0xFFFD, -/* 1F08 */ 0xFFFD, 0xFFFD, 0x4830, 0xFFFD, 0x482E, 0xFFFD, 0xFFFD, 0x656C, -/* 1F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2677, 0x2678, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F18 */ 0xFFFD, 0xFFFD, 0x2E32, 0xFFFD, 0xFFFD, 0xFFFD, 0x325A, 0x325B, -/* 1F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F28 */ 0x3750, 0x3752, 0x3751, 0xFFFD, 0x3D4F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4831, 0xFFFD, 0xFFFD, -/* 1F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5835, 0x2E35, -/* 1F40 */ 0xFFFD, 0x2E33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F48 */ 0x626C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F50 */ 0x3264, 0x325F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F58 */ 0x325E, 0xFFFD, 0x3268, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F60 */ 0x3759, 0xFFFD, 0xFFFD, 0x3267, 0xFFFD, 0xFFFD, 0x3265, 0xFFFD, -/* 1F68 */ 0x3755, 0xFFFD, 0xFFFD, 0xFFFD, 0x325C, 0x3263, 0xFFFD, 0xFFFD, -/* 1F70 */ 0xFFFD, 0xFFFD, 0x3753, 0x3262, 0x3757, 0xFFFD, 0x3D56, 0x3D53, -/* 1F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D51, 0x3D52, 0xFFFD, 0xFFFD, -/* 1F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4327, -/* 1F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4328, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F90 */ 0xFFFD, 0x4325, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F98 */ 0x4326, 0x4839, 0xFFFD, 0xFFFD, 0x4833, 0x4836, 0x4835, 0x4834, -/* 1FA0 */ 0x4838, 0xFFFD, 0x483B, 0x483D, 0x4D44, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FA8 */ 0xFFFD, 0xFFFD, 0x4D46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FB0 */ 0x517B, 0xFFFD, 0x5179, 0x5559, 0xFFFD, 0x5558, 0xFFFD, 0xFFFD, -/* 1FB8 */ 0x555B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x555C, 0xFFFD, -/* 1FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5836, -/* 1FC8 */ 0x5838, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x583B, 0xFFFD, 0x583A, -/* 1FD0 */ 0x5839, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A60, 0x5A5F, 0xFFFD, 0xFFFD, -/* 1FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FE0 */ 0x5E42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6432, 0xFFFD, 0xFFFD, -/* 1FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3269, 0xFFFD, 0x3D57, 0xFFFD, -/* 1FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E36, 0x267B, 0x267C, -/* 1FF8 */ 0x2E39, 0xFFFD, 0xFFFD, 0x2E3B, 0x2E3E, 0xFFFD, 0x2E37, 0x2E3A, -/* 2000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2008 */ 0xFFFD, 0x2E3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x656D, 0xFFFD, 0x656E, -/* 2010 */ 0xFFFD, 0xFFFD, 0x667C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2018 */ 0x326C, 0x326D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2020 */ 0x656F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3762, 0xFFFD, 0xFFFD, -/* 2028 */ 0xFFFD, 0x3763, 0x375D, 0xFFFD, 0xFFFD, 0xFFFD, 0x375F, 0xFFFD, -/* 2030 */ 0xFFFD, 0xFFFD, 0x3761, 0xFFFD, 0x3760, 0xFFFD, 0x6570, 0x6571, -/* 2038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6572, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2040 */ 0xFFFD, 0xFFFD, 0x3D5C, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D59, 0xFFFD, -/* 2048 */ 0xFFFD, 0x3D5D, 0x3D5A, 0xFFFD, 0x4331, 0xFFFD, 0x432D, 0xFFFD, -/* 2050 */ 0xFFFD, 0x432E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4337, 0x4329, 0xFFFD, -/* 2058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4335, 0xFFFD, 0x432B, 0x4330, -/* 2060 */ 0xFFFD, 0x4334, 0xFFFD, 0xFFFD, 0x432A, 0xFFFD, 0x4336, 0x483E, -/* 2068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x483F, -/* 2070 */ 0x4845, 0xFFFD, 0x4844, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2078 */ 0x6573, 0x4840, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2080 */ 0xFFFD, 0x4D4A, 0xFFFD, 0x4D4D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D48, -/* 2088 */ 0x4D4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D4B, 0x4D49, 0xFFFD, 0xFFFD, 0x5221, -/* 2098 */ 0xFFFD, 0x6574, 0xFFFD, 0xFFFD, 0xFFFD, 0x5224, 0x5222, 0xFFFD, -/* 20A0 */ 0xFFFD, 0x6575, 0xFFFD, 0x5560, 0x5562, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5561, 0x5843, 0x583E, 0x5840, 0xFFFD, -/* 20B0 */ 0x583F, 0x583C, 0xFFFD, 0x5842, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5844, 0xFFFD, 0xFFFD, 0x5A61, 0xFFFD, -/* 20C0 */ 0x5A62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A63, 0xFFFD, -/* 20C8 */ 0x6576, 0x5E45, 0xFFFD, 0x5E43, 0xFFFD, 0x5E44, 0xFFFD, 0xFFFD, -/* 20D0 */ 0xFFFD, 0xFFFD, 0x603C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2433, -/* 20D8 */ 0x6577, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x326F, 0x3270, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3272, 0xFFFD, 0xFFFD, -/* 20F0 */ 0xFFFD, 0x3D5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3766, -/* 20F8 */ 0xFFFD, 0x3765, 0xFFFD, 0xFFFD, 0x3D5F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2100 */ 0x3D64, 0x3D62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2108 */ 0xFFFD, 0x4338, 0xFFFD, 0x433D, 0xFFFD, 0xFFFD, 0x4339, 0x3D63, -/* 2110 */ 0xFFFD, 0x6578, 0x4848, 0xFFFD, 0x4847, 0x6579, 0xFFFD, 0xFFFD, -/* 2118 */ 0xFFFD, 0x4D50, 0x4D51, 0x4D4F, 0xFFFD, 0xFFFD, 0xFFFD, 0x657A, -/* 2120 */ 0xFFFD, 0x5226, 0xFFFD, 0xFFFD, 0xFFFD, 0x5227, 0xFFFD, 0xFFFD, -/* 2128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5845, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2130 */ 0xFFFD, 0x603D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2138 */ 0x657B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A3E, -/* 2140 */ 0x2A3D, 0xFFFD, 0x2A3F, 0x2A42, 0xFFFD, 0xFFFD, 0x2A44, 0xFFFD, -/* 2148 */ 0x654C, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E42, 0xFFFD, 0xFFFD, 0x2E40, -/* 2150 */ 0x2E41, 0xFFFD, 0xFFFD, 0x2E43, 0xFFFD, 0x3274, 0x3273, 0x3279, -/* 2158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3276, 0x327B, 0xFFFD, -/* 2160 */ 0xFFFD, 0x3277, 0xFFFD, 0xFFFD, 0x3278, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x327C, 0x3769, 0x3767, 0x376B, -/* 2170 */ 0xFFFD, 0x376A, 0xFFFD, 0xFFFD, 0xFFFD, 0x376C, 0xFFFD, 0xFFFD, -/* 2178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D66, 0xFFFD, 0x3D69, 0xFFFD, 0xFFFD, -/* 2188 */ 0xFFFD, 0xFFFD, 0x3D68, 0x4341, 0x4344, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6524, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2198 */ 0x484B, 0x484D, 0xFFFD, 0x4850, 0x484F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21A0 */ 0xFFFD, 0x4852, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D55, -/* 21A8 */ 0xFFFD, 0x4D56, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D5A, 0xFFFD, 0xFFFD, -/* 21B0 */ 0x4D53, 0x4D57, 0xFFFD, 0xFFFD, 0x522A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21B8 */ 0x5564, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x522C, 0xFFFD, -/* 21C0 */ 0xFFFD, 0xFFFD, 0x5229, 0x5A66, 0xFFFD, 0x5A65, 0xFFFD, 0xFFFD, -/* 21C8 */ 0xFFFD, 0x5A67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C64, 0xFFFD, -/* 21D0 */ 0xFFFD, 0x6076, 0x6077, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2E44, 0x2E47, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21E0 */ 0xFFFD, 0x2E49, 0x2E48, 0x3772, 0xFFFD, 0x3771, 0xFFFD, 0xFFFD, -/* 21E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3770, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4346, 0xFFFD, 0xFFFD, 0x4347, 0xFFFD, -/* 21F8 */ 0xFFFD, 0x657C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2200 */ 0xFFFD, 0xFFFD, 0x4D5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x522F, 0xFFFD, 0x522E, -/* 2210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5568, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2218 */ 0xFFFD, 0xFFFD, 0x5E49, 0x5E48, 0xFFFD, 0xFFFD, 0x267E, 0x2721, -/* 2220 */ 0xFFFD, 0x2A47, 0x2E4E, 0xFFFD, 0x2E4F, 0x2E4D, 0x2E4B, 0x2E4C, -/* 2228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3323, 0x3326, 0x3327, 0x3324, -/* 2230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3773, 0x3D71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2238 */ 0xFFFD, 0x3D70, 0xFFFD, 0x4349, 0x434A, 0xFFFD, 0x4854, 0xFFFD, -/* 2240 */ 0xFFFD, 0xFFFD, 0x4855, 0x5230, 0x5569, 0x556A, 0xFFFD, 0x5849, -/* 2248 */ 0xFFFD, 0xFFFD, 0x5F55, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E51, 0xFFFD, -/* 2250 */ 0x2E50, 0x332B, 0xFFFD, 0x332A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2258 */ 0xFFFD, 0xFFFD, 0x332C, 0xFFFD, 0x3778, 0x3779, 0xFFFD, 0xFFFD, -/* 2260 */ 0xFFFD, 0xFFFD, 0x3777, 0xFFFD, 0xFFFD, 0x377B, 0xFFFD, 0x3776, -/* 2268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x632D, -/* 2270 */ 0x377A, 0x657D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D7B, 0x3D78, 0x3D75, 0x3D79, 0xFFFD, -/* 2280 */ 0x3D72, 0xFFFD, 0x3D76, 0xFFFD, 0x657E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2288 */ 0xFFFD, 0x434F, 0xFFFD, 0xFFFD, 0xFFFD, 0x434C, 0xFFFD, 0xFFFD, -/* 2290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4355, 0xFFFD, 0xFFFD, 0x434D, 0x3D77, -/* 2298 */ 0xFFFD, 0xFFFD, 0x4354, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4351, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4856, 0xFFFD, 0x4858, 0xFFFD, -/* 22B0 */ 0xFFFD, 0x4860, 0x485A, 0x485E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4857, 0x485D, -/* 22C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x485C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D5C, 0xFFFD, -/* 22D0 */ 0xFFFD, 0xFFFD, 0x4D65, 0x4D5D, 0x4D60, 0xFFFD, 0xFFFD, 0x6367, -/* 22D8 */ 0x6366, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22E0 */ 0xFFFD, 0xFFFD, 0x4D63, 0xFFFD, 0xFFFD, 0x6621, 0x5233, 0x5234, -/* 22E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22F0 */ 0x556D, 0xFFFD, 0xFFFD, 0xFFFD, 0x556B, 0xFFFD, 0x556E, 0x5570, -/* 22F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2300 */ 0xFFFD, 0x5571, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x556F, -/* 2308 */ 0xFFFD, 0x5850, 0x584E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5851, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x584C, 0x6622, 0xFFFD, -/* 2320 */ 0xFFFD, 0x6623, 0xFFFD, 0x5A6F, 0x5A6E, 0x6624, 0xFFFD, 0x5C66, -/* 2328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C65, 0xFFFD, -/* 2330 */ 0xFFFD, 0x6625, 0xFFFD, 0xFFFD, 0x5E4C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2338 */ 0xFFFD, 0x5E4B, 0xFFFD, 0x5F58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2340 */ 0x5F57, 0x603F, 0xFFFD, 0xFFFD, 0xFFFD, 0x603E, 0xFFFD, 0xFFFD, -/* 2348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6626, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2350 */ 0x6144, 0xFFFD, 0xFFFD, 0xFFFD, 0x623A, 0xFFFD, 0xFFFD, 0x2A49, -/* 2358 */ 0xFFFD, 0x2A48, 0x2E52, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E54, 0x2E53, -/* 2360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3331, 0xFFFD, -/* 2368 */ 0xFFFD, 0x332E, 0x3330, 0xFFFD, 0xFFFD, 0xFFFD, 0x3332, 0xFFFD, -/* 2370 */ 0xFFFD, 0x332D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x377D, 0xFFFD, -/* 2378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x377E, 0x3821, 0x383E, 0x3822, -/* 2380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E21, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E23, -/* 2388 */ 0xFFFD, 0x3E22, 0x3D7E, 0xFFFD, 0x6627, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2390 */ 0xFFFD, 0x4358, 0xFFFD, 0x435C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2398 */ 0xFFFD, 0xFFFD, 0x4862, 0x4861, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D6F, 0x4D71, 0x4D6D, -/* 23A8 */ 0xFFFD, 0x4D70, 0x4D73, 0xFFFD, 0x4D72, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23B0 */ 0x4D6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5237, 0xFFFD, -/* 23B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5575, 0x5574, 0xFFFD, -/* 23C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5239, 0xFFFD, 0x5855, 0xFFFD, -/* 23C8 */ 0xFFFD, 0x5854, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23D0 */ 0x6628, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6169, 0xFFFD, -/* 23D8 */ 0x6040, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2722, 0xFFFD, 0x2A4B, -/* 23E0 */ 0xFFFD, 0xFFFD, 0x2A4A, 0x3337, 0x333B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3829, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3826, 0xFFFD, 0xFFFD, 0x3827, 0x382E, -/* 23F8 */ 0x3824, 0xFFFD, 0xFFFD, 0x382B, 0x3E34, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E29, 0xFFFD, -/* 2408 */ 0x3E26, 0x3E2E, 0xFFFD, 0xFFFD, 0x3E2F, 0xFFFD, 0xFFFD, 0x3E28, -/* 2410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E2A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E24, 0x3E35, 0x3E33, 0xFFFD, 0x4367, -/* 2428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E2B, 0xFFFD, 0xFFFD, -/* 2430 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4366, 0xFFFD, -/* 2438 */ 0x4369, 0x4360, 0x4362, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x435E, -/* 2440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4364, 0xFFFD, 0x4368, 0x436A, -/* 2448 */ 0x4363, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4874, 0xFFFD, 0xFFFD, 0xFFFD, 0x486D, -/* 2458 */ 0xFFFD, 0xFFFD, 0x486E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2460 */ 0xFFFD, 0xFFFD, 0x4870, 0xFFFD, 0xFFFD, 0x4869, 0x4868, 0xFFFD, -/* 2468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4871, 0xFFFD, 0x4873, 0x6629, 0x486B, -/* 2470 */ 0xFFFD, 0x662B, 0xFFFD, 0xFFFD, 0x4E22, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2478 */ 0xFFFD, 0xFFFD, 0x4D7C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2480 */ 0x4D78, 0xFFFD, 0x4E24, 0x4E2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2488 */ 0xFFFD, 0x4E2E, 0xFFFD, 0x4D77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E2B, 0xFFFD, 0xFFFD, 0x4D75, 0xFFFD, -/* 2498 */ 0xFFFD, 0xFFFD, 0x4E28, 0x4E29, 0x4E25, 0x4E2C, 0x4E27, 0x4D7E, -/* 24A0 */ 0x4D7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x662A, 0x5240, 0x523F, -/* 24A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5579, 0x557A, 0xFFFD, 0x5859, -/* 24B0 */ 0x585B, 0xFFFD, 0x5858, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24B8 */ 0xFFFD, 0x662C, 0xFFFD, 0x585A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24C0 */ 0xFFFD, 0x5A72, 0xFFFD, 0x5A74, 0xFFFD, 0xFFFD, 0x5A75, 0x5C6C, -/* 24C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E53, 0x5E50, 0xFFFD, 0xFFFD, -/* 24D0 */ 0xFFFD, 0x5E51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E52, 0xFFFD, -/* 24D8 */ 0xFFFD, 0xFFFD, 0x5F5A, 0x3831, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24E0 */ 0x662D, 0x4877, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x557D, 0x585C, -/* 24E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F5B, 0xFFFD, -/* 24F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24F8 */ 0xFFFD, 0x2A4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2500 */ 0xFFFD, 0xFFFD, 0x333C, 0x4878, 0xFFFD, 0x4879, 0xFFFD, 0xFFFD, -/* 2508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E30, 0x6422, 0xFFFD, 0xFFFD, -/* 2510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2518 */ 0x2E5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x333D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2520 */ 0x333F, 0xFFFD, 0x333E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x436E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E31, -/* 2538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x585D, 0x3342, 0xFFFD, -/* 2540 */ 0x3343, 0x3E37, 0xFFFD, 0xFFFD, 0x3E38, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E32, 0x557E, 0xFFFD, -/* 2558 */ 0xFFFD, 0xFFFD, 0x5861, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2560 */ 0xFFFD, 0xFFFD, 0x667B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2568 */ 0x3836, 0xFFFD, 0x3344, 0x3837, 0xFFFD, 0xFFFD, 0x3839, 0xFFFD, -/* 2570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4922, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5621, 0xFFFD, 0xFFFD, 0x5862, -/* 2580 */ 0x5C6F, 0x3349, 0x3348, 0xFFFD, 0xFFFD, 0xFFFD, 0x3347, 0x662F, -/* 2588 */ 0xFFFD, 0xFFFD, 0x383D, 0x383C, 0xFFFD, 0xFFFD, 0xFFFD, 0x383B, -/* 2590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E3C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2598 */ 0xFFFD, 0x6729, 0xFFFD, 0xFFFD, 0xFFFD, 0x4373, 0xFFFD, 0x6356, -/* 25A0 */ 0xFFFD, 0x4923, 0xFFFD, 0xFFFD, 0xFFFD, 0x4926, 0x3E3B, 0x4925, -/* 25A8 */ 0xFFFD, 0x6630, 0xFFFD, 0x4E34, 0x4E36, 0xFFFD, 0x4E37, 0xFFFD, -/* 25B0 */ 0x4E35, 0x4E38, 0xFFFD, 0xFFFD, 0x5243, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25B8 */ 0xFFFD, 0xFFFD, 0x5622, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25C0 */ 0x5C70, 0x5C71, 0x5C72, 0x2435, 0x2436, 0xFFFD, 0xFFFD, 0x2724, -/* 25C8 */ 0xFFFD, 0xFFFD, 0x2726, 0xFFFD, 0xFFFD, 0x2725, 0xFFFD, 0xFFFD, -/* 25D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2723, 0xFFFD, 0xFFFD, -/* 25D8 */ 0xFFFD, 0xFFFD, 0x2A56, 0xFFFD, 0x2A5B, 0x2A58, 0x2A4F, 0xFFFD, -/* 25E0 */ 0xFFFD, 0xFFFD, 0x2A59, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A52, 0xFFFD, -/* 25E8 */ 0xFFFD, 0x2A54, 0xFFFD, 0xFFFD, 0x2A57, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25F0 */ 0xFFFD, 0x6631, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E66, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2600 */ 0xFFFD, 0x2E60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2608 */ 0x2E61, 0x2E5E, 0x2E65, 0xFFFD, 0xFFFD, 0x2E64, 0x334C, 0xFFFD, -/* 2610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x334A, 0x3352, -/* 2618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x334B, -/* 2620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x334E, 0x334D, 0xFFFD, 0xFFFD, 0x334F, -/* 2628 */ 0xFFFD, 0x2E63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E44, 0xFFFD, 0xFFFD, 0x3849, -/* 2638 */ 0xFFFD, 0xFFFD, 0x3847, 0x632E, 0xFFFD, 0x3841, 0xFFFD, 0xFFFD, -/* 2640 */ 0xFFFD, 0x3842, 0xFFFD, 0xFFFD, 0x3845, 0xFFFD, 0xFFFD, 0x3848, -/* 2648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E3E, 0xFFFD, -/* 2650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E43, 0x3E45, 0x3E41, 0xFFFD, 0xFFFD, -/* 2658 */ 0x3E3D, 0xFFFD, 0xFFFD, 0x3E40, 0x3E42, 0x437B, 0xFFFD, 0x437E, -/* 2660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4375, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2668 */ 0xFFFD, 0xFFFD, 0x4376, 0xFFFD, 0x4377, 0x4423, 0xFFFD, 0xFFFD, -/* 2670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x437C, 0xFFFD, 0xFFFD, -/* 2678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4422, 0xFFFD, 0xFFFD, -/* 2680 */ 0xFFFD, 0x4927, 0xFFFD, 0xFFFD, 0x492A, 0x4E3B, 0x4E3D, 0x4E39, -/* 2688 */ 0xFFFD, 0x4E3C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E3A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5249, 0xFFFD, 0xFFFD, -/* 26A0 */ 0x5247, 0xFFFD, 0x5244, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5623, 0x5624, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26B0 */ 0xFFFD, 0xFFFD, 0x5865, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26B8 */ 0x5A77, 0xFFFD, 0x5A78, 0x3E47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26C0 */ 0xFFFD, 0xFFFD, 0x3E48, 0x3E49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A5D, 0xFFFD, -/* 26D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x492B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26D8 */ 0x524A, 0x5868, 0x5A79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E68, 0xFFFD, 0xFFFD, 0x3357, -/* 26E8 */ 0xFFFD, 0x3358, 0xFFFD, 0xFFFD, 0xFFFD, 0x3355, 0x4426, 0xFFFD, -/* 26F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6634, 0xFFFD, 0x492D, -/* 26F8 */ 0xFFFD, 0x492E, 0x5A7A, 0xFFFD, 0xFFFD, 0x5A7B, 0xFFFD, 0xFFFD, -/* 2700 */ 0xFFFD, 0xFFFD, 0x5E55, 0x5A7C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2708 */ 0x2438, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2728, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2718 */ 0xFFFD, 0x2729, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2720 */ 0xFFFD, 0xFFFD, 0x272B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2728 */ 0xFFFD, 0x2A60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2A6B, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A66, -/* 2738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A6C, -/* 2740 */ 0x2A5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A68, 0xFFFD, 0xFFFD, -/* 2748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E76, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2750 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E6A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2758 */ 0xFFFD, 0x2E6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E78, 0xFFFD, -/* 2760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E72, 0xFFFD, 0xFFFD, -/* 2768 */ 0xFFFD, 0xFFFD, 0x2E74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2E69, 0x2E6E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2778 */ 0x2E6F, 0x2E7A, 0x2E79, 0xFFFD, 0xFFFD, 0x2E77, 0xFFFD, 0x6635, -/* 2780 */ 0xFFFD, 0x6637, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3362, -/* 2788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x384D, 0xFFFD, 0x3359, 0xFFFD, -/* 2790 */ 0x335F, 0xFFFD, 0x385B, 0x2A5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E57, 0x335A, 0x3363, 0xFFFD, 0xFFFD, -/* 27A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6636, -/* 27A8 */ 0x2D33, 0x384E, 0x3851, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27B0 */ 0xFFFD, 0x3854, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27B8 */ 0x3850, 0xFFFD, 0xFFFD, 0xFFFD, 0x384F, 0x385D, 0x3855, 0xFFFD, -/* 27C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27C8 */ 0xFFFD, 0x385E, 0xFFFD, 0xFFFD, 0x3857, 0xFFFD, 0x3852, 0x3858, -/* 27D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D8 */ 0xFFFD, 0x385F, 0x3E5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E4F, -/* 27E0 */ 0x3E59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E4D, -/* 27E8 */ 0x3E5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E4B, -/* 27F0 */ 0x3E52, 0xFFFD, 0x3E5C, 0xFFFD, 0xFFFD, 0x3E5A, 0xFFFD, 0xFFFD, -/* 27F8 */ 0x3E50, 0x3E58, 0xFFFD, 0x3E5D, 0x3E56, 0x3E4E, 0xFFFD, 0xFFFD, -/* 2800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6639, 0x3E5B, 0xFFFD, 0x6638, 0xFFFD, -/* 2808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x442D, -/* 2810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4431, 0x443A, 0xFFFD, 0xFFFD, 0x4435, -/* 2818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x442C, 0xFFFD, -/* 2820 */ 0x443E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4427, 0xFFFD, 0xFFFD, -/* 2828 */ 0xFFFD, 0x4433, 0xFFFD, 0x443F, 0xFFFD, 0xFFFD, 0x4440, 0xFFFD, -/* 2830 */ 0xFFFD, 0xFFFD, 0x4432, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2838 */ 0x4438, 0xFFFD, 0x4430, 0x443C, 0x442F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x442E, 0xFFFD, 0xFFFD, -/* 2848 */ 0xFFFD, 0x442A, 0x4439, 0xFFFD, 0xFFFD, 0x443B, 0x4428, 0x4935, -/* 2850 */ 0x4944, 0xFFFD, 0x4933, 0x4938, 0x493C, 0xFFFD, 0x4939, 0xFFFD, -/* 2858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4942, 0xFFFD, -/* 2860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x493B, 0xFFFD, 0x493A, 0xFFFD, -/* 2868 */ 0x4941, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4932, 0xFFFD, -/* 2870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4936, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2878 */ 0xFFFD, 0x4436, 0x493F, 0xFFFD, 0xFFFD, 0x493E, 0xFFFD, 0x4943, -/* 2880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x663B, 0xFFFD, 0xFFFD, 0x663C, 0x663A, -/* 2888 */ 0xFFFD, 0x493D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2890 */ 0xFFFD, 0xFFFD, 0x4E4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2898 */ 0xFFFD, 0xFFFD, 0x4E44, 0xFFFD, 0xFFFD, 0x4E42, 0xFFFD, 0xFFFD, -/* 28A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E40, 0xFFFD, -/* 28A8 */ 0x4E4C, 0x4E46, 0x4E54, 0x4E4D, 0x4E4E, 0x4E52, 0xFFFD, 0xFFFD, -/* 28B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x525A, -/* 28B8 */ 0xFFFD, 0xFFFD, 0x5252, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5259, 0x5250, 0x5258, 0xFFFD, 0x5254, -/* 28C8 */ 0xFFFD, 0xFFFD, 0x5256, 0x524F, 0x5255, 0xFFFD, 0xFFFD, 0x663D, -/* 28D0 */ 0x5628, 0x5629, 0xFFFD, 0xFFFD, 0xFFFD, 0x562D, 0x562C, 0x5630, -/* 28D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x586C, 0xFFFD, 0xFFFD, -/* 28E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x586E, 0xFFFD, -/* 28E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x586F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x586B, -/* 28F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x663E, -/* 2900 */ 0xFFFD, 0x5A7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A7D, 0x5B22, -/* 2908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C7B, 0xFFFD, -/* 2910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B25, 0x663F, 0xFFFD, 0xFFFD, -/* 2918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C76, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2920 */ 0xFFFD, 0xFFFD, 0x5C78, 0x5C7C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2928 */ 0x5D22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C7E, 0xFFFD, 0x5D23, -/* 2930 */ 0x5C77, 0xFFFD, 0xFFFD, 0x5D21, 0xFFFD, 0x5E5B, 0x5E5A, 0xFFFD, -/* 2938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E5C, 0xFFFD, 0xFFFD, -/* 2940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2948 */ 0x5E58, 0xFFFD, 0xFFFD, 0x5E56, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E57, -/* 2950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6640, -/* 2958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6043, 0xFFFD, 0xFFFD, -/* 2960 */ 0xFFFD, 0x602F, 0x6146, 0xFFFD, 0xFFFD, 0x6641, 0xFFFD, 0xFFFD, -/* 2968 */ 0xFFFD, 0x6147, 0x617C, 0x3863, 0x3860, 0xFFFD, 0x3861, 0xFFFD, -/* 2970 */ 0xFFFD, 0x3E61, 0x272D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2978 */ 0x6642, 0xFFFD, 0xFFFD, 0x2F23, 0x2E7C, 0xFFFD, 0x2E7E, 0xFFFD, -/* 2980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2F24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2988 */ 0xFFFD, 0xFFFD, 0x3369, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x336C, -/* 2990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x336F, 0xFFFD, 0xFFFD, -/* 2998 */ 0x336E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29A0 */ 0xFFFD, 0x336B, 0xFFFD, 0xFFFD, 0xFFFD, 0x336A, 0x3370, 0xFFFD, -/* 29A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x336D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3866, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29B8 */ 0x3864, 0x4444, 0x4445, 0xFFFD, 0x4449, 0x4446, 0x4448, 0xFFFD, -/* 29C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x494F, 0x494A, 0xFFFD, -/* 29C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29D0 */ 0xFFFD, 0x4945, 0xFFFD, 0xFFFD, 0x494C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29D8 */ 0x4949, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29E0 */ 0x494E, 0xFFFD, 0x494B, 0xFFFD, 0xFFFD, 0x6643, 0x525B, 0x525D, -/* 29E8 */ 0xFFFD, 0xFFFD, 0x525F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5262, 0xFFFD, 0xFFFD, -/* 29F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x525E, 0xFFFD, 0xFFFD, -/* 2A00 */ 0xFFFD, 0x6645, 0xFFFD, 0xFFFD, 0xFFFD, 0x6644, 0xFFFD, 0xFFFD, -/* 2A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x563A, 0x5639, 0xFFFD, -/* 2A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x563B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A18 */ 0xFFFD, 0xFFFD, 0x5636, 0x5634, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A20 */ 0xFFFD, 0xFFFD, 0x5B28, 0x5876, 0xFFFD, 0xFFFD, 0xFFFD, 0x5878, -/* 2A28 */ 0x5873, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5874, 0xFFFD, 0x5875, -/* 2A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6646, 0xFFFD, 0xFFFD, 0x5B2C, -/* 2A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B27, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B29, 0xFFFD, -/* 2A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5877, 0x5B2B, 0xFFFD, -/* 2A50 */ 0xFFFD, 0x5D25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D24, -/* 2A58 */ 0xFFFD, 0x5E5D, 0x5F5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A60 */ 0x6045, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6647, -/* 2A68 */ 0x2F26, 0xFFFD, 0xFFFD, 0x386A, 0x3E6A, 0x3E69, 0xFFFD, 0xFFFD, -/* 2A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3371, 0x6648, 0xFFFD, -/* 2A78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x444D, 0xFFFD, -/* 2A80 */ 0xFFFD, 0xFFFD, 0x4E5F, 0xFFFD, 0x5263, 0x5264, 0xFFFD, 0xFFFD, -/* 2A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F27, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3374, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A98 */ 0xFFFD, 0x3377, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3372, 0xFFFD, -/* 2AA0 */ 0x3373, 0x3375, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AA8 */ 0xFFFD, 0xFFFD, 0x3376, 0xFFFD, 0xFFFD, 0x6649, 0xFFFD, 0xFFFD, -/* 2AB0 */ 0x3872, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x386E, 0x3874, 0xFFFD, -/* 2AB8 */ 0xFFFD, 0xFFFD, 0x386C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AC0 */ 0xFFFD, 0xFFFD, 0x386B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3873, 0xFFFD, -/* 2AC8 */ 0xFFFD, 0x386D, 0xFFFD, 0x386F, 0x3871, 0xFFFD, 0xFFFD, 0x3870, -/* 2AD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AD8 */ 0xFFFD, 0xFFFD, 0x3E70, 0x3E72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AE0 */ 0xFFFD, 0x3E6D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E6F, 0x444F, 0xFFFD, -/* 2AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E60, 0xFFFD, 0xFFFD, 0x4959, -/* 2AF0 */ 0x4952, 0xFFFD, 0xFFFD, 0x4957, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4954, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4951, 0x4956, 0xFFFD, -/* 2B08 */ 0xFFFD, 0x4958, 0x4E62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5265, 0x5640, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B18 */ 0xFFFD, 0xFFFD, 0x563F, 0x563D, 0xFFFD, 0xFFFD, 0x5642, 0xFFFD, -/* 2B20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5879, 0xFFFD, 0x587A, 0xFFFD, 0xFFFD, -/* 2B28 */ 0x587C, 0x587B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x664A, -/* 2B30 */ 0x5D29, 0xFFFD, 0x5D28, 0x6149, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B38 */ 0x617D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x664B, -/* 2B40 */ 0xFFFD, 0xFFFD, 0x5B2F, 0xFFFD, 0x6046, 0x614A, 0xFFFD, 0x2F29, -/* 2B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3876, 0x3875, 0xFFFD, 0x3877, -/* 2B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E74, 0xFFFD, 0xFFFD, -/* 2B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B60 */ 0x4E65, 0xFFFD, 0x5266, 0xFFFD, 0x4E64, 0xFFFD, 0x5646, 0xFFFD, -/* 2B68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x587E, 0x587D, 0xFFFD, 0x5921, 0xFFFD, -/* 2B70 */ 0x5B31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D2A, 0x5E61, -/* 2B78 */ 0x4454, 0xFFFD, 0xFFFD, 0x495C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E66, -/* 2B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B32, 0x2F2A, -/* 2B88 */ 0x2F2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x337B, 0xFFFD, 0x337A, -/* 2B90 */ 0x337C, 0xFFFD, 0xFFFD, 0x387E, 0xFFFD, 0xFFFD, 0xFFFD, 0x3923, -/* 2B98 */ 0x3929, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3879, 0xFFFD, 0x387B, -/* 2BA0 */ 0x3925, 0xFFFD, 0x3922, 0xFFFD, 0xFFFD, 0x6330, 0xFFFD, 0xFFFD, -/* 2BA8 */ 0xFFFD, 0x387A, 0xFFFD, 0xFFFD, 0x3E7C, 0xFFFD, 0xFFFD, 0x3E7D, -/* 2BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F24, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BB8 */ 0xFFFD, 0x3E7E, 0x3E75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BC0 */ 0x3F21, 0xFFFD, 0x3F23, 0x3E78, 0xFFFD, 0xFFFD, 0x3F22, 0xFFFD, -/* 2BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4460, 0x4459, 0xFFFD, -/* 2BD0 */ 0x4463, 0xFFFD, 0xFFFD, 0x4455, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BD8 */ 0x4458, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BE0 */ 0xFFFD, 0x445B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x445C, 0x4461, -/* 2BE8 */ 0xFFFD, 0x4456, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BF0 */ 0xFFFD, 0x445D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x495F, -/* 2BF8 */ 0xFFFD, 0x4964, 0xFFFD, 0xFFFD, 0xFFFD, 0x4963, 0xFFFD, 0xFFFD, -/* 2C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x495E, 0x4962, 0x496B, 0xFFFD, -/* 2C08 */ 0x4968, 0xFFFD, 0xFFFD, 0x4960, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C10 */ 0xFFFD, 0xFFFD, 0x4965, 0xFFFD, 0xFFFD, 0x4966, 0xFFFD, 0xFFFD, -/* 2C18 */ 0x4E74, 0xFFFD, 0x4E67, 0xFFFD, 0x4E72, 0x4E70, 0x4E6E, 0xFFFD, -/* 2C20 */ 0x4E6C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C28 */ 0xFFFD, 0xFFFD, 0x4E73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E75, 0xFFFD, 0x4E69, 0xFFFD, 0x4E6A, -/* 2C38 */ 0xFFFD, 0x4E76, 0x526A, 0xFFFD, 0x526B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C40 */ 0x4E6F, 0x5267, 0xFFFD, 0x526E, 0x5269, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C48 */ 0x5268, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x664C, 0xFFFD, -/* 2C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5649, 0xFFFD, 0xFFFD, 0x564A, -/* 2C58 */ 0x5648, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C60 */ 0xFFFD, 0xFFFD, 0x592A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5926, 0xFFFD, -/* 2C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5924, 0xFFFD, 0x5928, 0xFFFD, 0xFFFD, -/* 2C70 */ 0xFFFD, 0x5923, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C78 */ 0x5B34, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B35, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B36, 0x5D33, 0x5D30, -/* 2C88 */ 0x5D2C, 0xFFFD, 0x5D32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D2B, -/* 2C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D2E, 0xFFFD, 0xFFFD, 0x5C6D, -/* 2C98 */ 0xFFFD, 0x642D, 0xFFFD, 0x5E62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CA0 */ 0xFFFD, 0xFFFD, 0x5E63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F61, -/* 2CA8 */ 0xFFFD, 0x5F62, 0xFFFD, 0xFFFD, 0xFFFD, 0x6048, 0xFFFD, 0xFFFD, -/* 2CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6047, 0xFFFD, 0xFFFD, 0x6049, 0x607B, -/* 2CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x614B, 0xFFFD, 0xFFFD, -/* 2CC0 */ 0xFFFD, 0x616B, 0xFFFD, 0x617E, 0x392A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CC8 */ 0xFFFD, 0xFFFD, 0x564D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F64, 0x5D34, -/* 2CD0 */ 0x664D, 0x6221, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x392D, 0xFFFD, -/* 2CD8 */ 0xFFFD, 0x392C, 0xFFFD, 0xFFFD, 0x3F2A, 0xFFFD, 0x3F29, 0xFFFD, -/* 2CE0 */ 0xFFFD, 0x4464, 0xFFFD, 0xFFFD, 0xFFFD, 0x496D, 0x592B, 0xFFFD, -/* 2CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x392E, 0xFFFD, -/* 2CF0 */ 0x3F2C, 0x3F2B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F2D, 0xFFFD, 0xFFFD, -/* 2CF8 */ 0xFFFD, 0x634A, 0x4465, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D00 */ 0x4E7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D08 */ 0x564F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x614D, 0xFFFD, 0xFFFD, -/* 2D10 */ 0xFFFD, 0x2F2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D18 */ 0x3930, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3932, -/* 2D20 */ 0x3931, 0xFFFD, 0xFFFD, 0x3F2F, 0x4469, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D28 */ 0x4467, 0xFFFD, 0xFFFD, 0x4970, 0xFFFD, 0xFFFD, 0xFFFD, 0x4972, -/* 2D30 */ 0xFFFD, 0x4971, 0xFFFD, 0x664E, 0xFFFD, 0xFFFD, 0x4E7E, 0x4E7D, -/* 2D38 */ 0xFFFD, 0x4F22, 0xFFFD, 0xFFFD, 0xFFFD, 0x5275, 0xFFFD, 0xFFFD, -/* 2D40 */ 0x5273, 0xFFFD, 0xFFFD, 0xFFFD, 0x5651, 0x5652, 0x592E, 0xFFFD, -/* 2D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B38, 0x664F, -/* 2D50 */ 0xFFFD, 0x6428, 0xFFFD, 0xFFFD, 0x5E65, 0x5E66, 0xFFFD, 0xFFFD, -/* 2D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6650, 0xFFFD, 0x604A, 0xFFFD, 0x614E, -/* 2D60 */ 0x243A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D68 */ 0xFFFD, 0x3939, 0xFFFD, 0x3937, 0xFFFD, 0x3935, 0x3938, 0xFFFD, -/* 2D70 */ 0xFFFD, 0x3F39, 0x3F34, 0xFFFD, 0xFFFD, 0x3F37, 0x3F30, 0x3F33, -/* 2D78 */ 0xFFFD, 0xFFFD, 0x3F38, 0x4975, 0x4973, 0xFFFD, 0x4974, 0xFFFD, -/* 2D80 */ 0xFFFD, 0x4F26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F25, 0xFFFD, -/* 2D88 */ 0x4F23, 0xFFFD, 0x5277, 0xFFFD, 0xFFFD, 0x5931, 0xFFFD, 0xFFFD, -/* 2D90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6651, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x393E, -/* 2DA0 */ 0xFFFD, 0x393A, 0xFFFD, 0xFFFD, 0x393D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F3F, 0x3F3A, 0xFFFD, -/* 2DB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F3B, 0xFFFD, -/* 2DB8 */ 0x3F3E, 0x497B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DC0 */ 0x497A, 0xFFFD, 0xFFFD, 0x4979, 0x4F2C, 0xFFFD, 0x4F2B, 0xFFFD, -/* 2DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x527E, 0xFFFD, -/* 2DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x527B, -/* 2DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x527C, -/* 2DE0 */ 0xFFFD, 0xFFFD, 0x5654, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5655, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5932, 0x5B3A, 0xFFFD, 0xFFFD, -/* 2DF8 */ 0x5B39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B3B, 0xFFFD, 0xFFFD, -/* 2E00 */ 0xFFFD, 0xFFFD, 0x5B3C, 0xFFFD, 0x5B3D, 0x604B, 0xFFFD, 0xFFFD, -/* 2E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6150, 0xFFFD, -/* 2E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x616C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E18 */ 0xFFFD, 0x393F, 0xFFFD, 0x3940, 0x3F40, 0x4473, 0xFFFD, 0x497D, -/* 2E20 */ 0x497C, 0xFFFD, 0x4F30, 0x4F32, 0x4F2F, 0x4F31, 0xFFFD, 0xFFFD, -/* 2E28 */ 0x6652, 0xFFFD, 0xFFFD, 0x5935, 0xFFFD, 0x5936, 0xFFFD, 0x5B3F, -/* 2E30 */ 0xFFFD, 0xFFFD, 0x5D38, 0x6653, 0x3941, 0xFFFD, 0xFFFD, 0x3947, -/* 2E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E40 */ 0xFFFD, 0xFFFD, 0x3F45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E48 */ 0x3F47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E50 */ 0x3F44, 0x3F46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E60 */ 0xFFFD, 0xFFFD, 0x4476, 0x4F36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F33, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E70 */ 0xFFFD, 0x4F35, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F34, 0xFFFD, 0x5324, -/* 2E78 */ 0xFFFD, 0xFFFD, 0x5322, 0x5321, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5325, 0x5659, -/* 2E88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x565A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5937, 0x5E67, 0xFFFD, 0xFFFD, -/* 2E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6222, 0x3F4B, -/* 2EA0 */ 0x4477, 0xFFFD, 0x4478, 0x4A21, 0x4A22, 0xFFFD, 0x4F37, 0x5327, -/* 2EA8 */ 0xFFFD, 0x5326, 0xFFFD, 0xFFFD, 0x6654, 0xFFFD, 0x5938, 0xFFFD, -/* 2EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F39, 0xFFFD, 0x272F, -/* 2EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x243B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EC0 */ 0x2730, 0xFFFD, 0xFFFD, 0x2733, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EC8 */ 0xFFFD, 0x2731, 0xFFFD, 0xFFFD, 0x2A72, 0xFFFD, 0x2A70, 0xFFFD, -/* 2ED0 */ 0xFFFD, 0x2A74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2ED8 */ 0xFFFD, 0xFFFD, 0x2A73, 0x2A71, 0x2F31, 0xFFFD, 0x2F32, 0xFFFD, -/* 2EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F33, 0xFFFD, 0x2F30, 0xFFFD, -/* 2EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3425, 0x3427, -/* 2EF0 */ 0x3426, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x394B, 0xFFFD, 0xFFFD, -/* 2EF8 */ 0xFFFD, 0x394A, 0x394E, 0x394C, 0xFFFD, 0xFFFD, 0x3F4F, 0x3F50, -/* 2F00 */ 0x3F4D, 0x3F4C, 0x3F51, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F55, 0xFFFD, -/* 2F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F56, 0xFFFD, 0xFFFD, -/* 2F10 */ 0x3F54, 0x3F57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x447D, 0xFFFD, -/* 2F18 */ 0xFFFD, 0x4479, 0xFFFD, 0x447C, 0x447A, 0xFFFD, 0x447B, 0xFFFD, -/* 2F20 */ 0xFFFD, 0xFFFD, 0x447E, 0x4A24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F28 */ 0x4A27, 0xFFFD, 0x4A26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F3C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F38 */ 0xFFFD, 0xFFFD, 0x4F3B, 0x593A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x225E, 0x225D, 0xFFFD, 0xFFFD, -/* 2F48 */ 0x243C, 0xFFFD, 0xFFFD, 0xFFFD, 0x243D, 0xFFFD, 0x6655, 0xFFFD, -/* 2F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2735, 0xFFFD, -/* 2F58 */ 0xFFFD, 0xFFFD, 0x2739, 0x2734, 0xFFFD, 0x3951, 0xFFFD, 0x2A77, -/* 2F60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F68 */ 0xFFFD, 0x2A75, 0xFFFD, 0x2A78, 0xFFFD, 0xFFFD, 0x2F35, 0xFFFD, -/* 2F70 */ 0xFFFD, 0xFFFD, 0x2F38, 0xFFFD, 0x2F34, 0xFFFD, 0x2F3E, 0xFFFD, -/* 2F78 */ 0x2F37, 0xFFFD, 0xFFFD, 0x2F3C, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F3B, -/* 2F80 */ 0x394F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F88 */ 0x636C, 0x3952, 0x3F59, 0xFFFD, 0x4523, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4524, 0xFFFD, 0x4525, 0x532B, 0xFFFD, -/* 2F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x593C, 0x593B, 0x342A, 0xFFFD, 0xFFFD, -/* 2FA0 */ 0x3955, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3954, 0xFFFD, 0xFFFD, -/* 2FA8 */ 0x6657, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4528, 0xFFFD, 0xFFFD, 0xFFFD, 0x4527, -/* 2FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FC0 */ 0xFFFD, 0xFFFD, 0x4A2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A2B, -/* 2FC8 */ 0x4A2D, 0x4F3F, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F40, 0xFFFD, 0x532D, -/* 2FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x532C, 0x532F, -/* 2FD8 */ 0x5E68, 0xFFFD, 0xFFFD, 0xFFFD, 0x607E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FE0 */ 0xFFFD, 0x616D, 0x3430, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x342D, -/* 2FE8 */ 0xFFFD, 0xFFFD, 0x342F, 0x342E, 0x3431, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF0 */ 0xFFFD, 0x3958, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3957, 0xFFFD, 0x3956, 0xFFFD, -/* 3000 */ 0xFFFD, 0xFFFD, 0x3959, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3008 */ 0xFFFD, 0xFFFD, 0x3F5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F66, 0xFFFD, 0xFFFD, 0x3F60, -/* 3018 */ 0xFFFD, 0xFFFD, 0x3F68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F69, -/* 3020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F62, 0xFFFD, 0xFFFD, 0x3F65, -/* 3028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F5E, 0x6659, 0x3F63, 0xFFFD, -/* 3030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6658, -/* 3038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x452E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3040 */ 0xFFFD, 0x452B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4537, -/* 3048 */ 0x452F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4539, 0xFFFD, 0xFFFD, -/* 3050 */ 0x4538, 0x452A, 0xFFFD, 0xFFFD, 0xFFFD, 0x452D, 0xFFFD, 0xFFFD, -/* 3058 */ 0x4531, 0x4529, 0xFFFD, 0x4534, 0xFFFD, 0xFFFD, 0x4533, 0xFFFD, -/* 3060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4532, 0x4535, -/* 3068 */ 0xFFFD, 0xFFFD, 0x4536, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x665A, -/* 3070 */ 0x4A34, 0xFFFD, 0xFFFD, 0x4A35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3078 */ 0x4A2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4530, 0x4A38, -/* 3080 */ 0xFFFD, 0x4A33, 0x4A32, 0x4A37, 0xFFFD, 0x672A, 0x4A31, 0xFFFD, -/* 3088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F42, 0x4F50, 0xFFFD, -/* 3090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F43, 0x4F41, 0x4F48, 0xFFFD, 0x4F49, -/* 3098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F4B, 0x4F4E, 0x4F44, 0xFFFD, 0xFFFD, -/* 30A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F51, 0xFFFD, 0xFFFD, 0x4F45, 0xFFFD, -/* 30A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F52, 0xFFFD, 0x4F4C, 0xFFFD, -/* 30B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F4D, 0x665B, 0x665C, 0x4A30, -/* 30B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5335, 0xFFFD, -/* 30C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x533D, 0xFFFD, 0x533E, 0xFFFD, -/* 30C8 */ 0x5338, 0xFFFD, 0xFFFD, 0x5332, 0x5336, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30D0 */ 0xFFFD, 0x5337, 0x533B, 0xFFFD, 0xFFFD, 0xFFFD, 0x533C, 0x5339, -/* 30D8 */ 0x533A, 0x665D, 0xFFFD, 0xFFFD, 0x665E, 0xFFFD, 0xFFFD, 0x5331, -/* 30E0 */ 0xFFFD, 0xFFFD, 0x5665, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5666, 0xFFFD, 0xFFFD, -/* 30F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x565D, -/* 30F8 */ 0xFFFD, 0x5667, 0xFFFD, 0xFFFD, 0x5664, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3100 */ 0x565B, 0xFFFD, 0x5668, 0x565E, 0xFFFD, 0x566B, 0xFFFD, 0xFFFD, -/* 3108 */ 0x5661, 0xFFFD, 0xFFFD, 0xFFFD, 0x5662, 0x5663, 0x565F, 0xFFFD, -/* 3110 */ 0xFFFD, 0xFFFD, 0x565C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5660, -/* 3118 */ 0xFFFD, 0x566A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3120 */ 0x665F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5943, 0xFFFD, 0xFFFD, -/* 3128 */ 0xFFFD, 0xFFFD, 0x5940, 0xFFFD, 0xFFFD, 0x5942, 0xFFFD, 0xFFFD, -/* 3130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5949, 0xFFFD, -/* 3138 */ 0xFFFD, 0xFFFD, 0x593E, 0x5944, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5946, 0xFFFD, -/* 3148 */ 0xFFFD, 0x5945, 0x6661, 0x6662, 0x6660, 0xFFFD, 0xFFFD, 0x5B50, -/* 3150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B44, 0x5B45, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3158 */ 0xFFFD, 0x5B43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3160 */ 0xFFFD, 0x5B48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3168 */ 0xFFFD, 0x5B4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B4F, 0xFFFD, -/* 3170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B41, -/* 3178 */ 0x5B42, 0x5B4E, 0xFFFD, 0x5B47, 0xFFFD, 0x6665, 0xFFFD, 0x6663, -/* 3180 */ 0x6664, 0x5D41, 0x5E6A, 0x5D43, 0xFFFD, 0x5D3C, 0x5D3F, 0xFFFD, -/* 3188 */ 0xFFFD, 0x5D3E, 0x5D3D, 0xFFFD, 0xFFFD, 0x5D44, 0x5D45, 0x5D47, -/* 3190 */ 0xFFFD, 0x5D42, 0x5D3A, 0xFFFD, 0xFFFD, 0x6666, 0x6667, 0x6668, -/* 3198 */ 0xFFFD, 0xFFFD, 0x5D46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31A0 */ 0x5E6D, 0x5F69, 0x5F6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F6A, 0x5F6C, 0xFFFD, 0xFFFD, -/* 31B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F6B, 0xFFFD, 0x6052, 0xFFFD, 0x6431, -/* 31B8 */ 0xFFFD, 0x6055, 0x6054, 0x6056, 0xFFFD, 0xFFFD, 0x604F, 0xFFFD, -/* 31C0 */ 0x6053, 0xFFFD, 0xFFFD, 0xFFFD, 0x6057, 0x666A, 0x6669, 0xFFFD, -/* 31C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6122, 0x616F, 0x6223, 0xFFFD, 0xFFFD, -/* 31D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6236, 0x6323, -/* 31D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F40, -/* 31E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3432, 0xFFFD, 0x395C, 0x3F6C, 0xFFFD, -/* 31E8 */ 0x666B, 0xFFFD, 0x453C, 0x453A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F8 */ 0x4A3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3200 */ 0x4F53, 0xFFFD, 0xFFFD, 0x4F55, 0x4F56, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3208 */ 0xFFFD, 0x5342, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3210 */ 0xFFFD, 0xFFFD, 0x5344, 0x5340, 0xFFFD, 0x566D, 0xFFFD, 0xFFFD, -/* 3218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x666C, -/* 3220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3228 */ 0x594B, 0x594A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B53, 0xFFFD, -/* 3230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3238 */ 0x666D, 0x2143, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3240 */ 0xFFFD, 0xFFFD, 0x273B, 0x273A, 0xFFFD, 0x273F, 0xFFFD, 0x273C, -/* 3248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x273D, -/* 3250 */ 0x273E, 0xFFFD, 0xFFFD, 0x2A79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3258 */ 0xFFFD, 0xFFFD, 0x2A7C, 0xFFFD, 0xFFFD, 0x2A7B, 0x3436, 0xFFFD, -/* 3260 */ 0xFFFD, 0x3434, 0x395E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3268 */ 0x3433, 0x3961, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3965, 0xFFFD, 0x3F71, 0xFFFD, -/* 3278 */ 0xFFFD, 0xFFFD, 0x3F72, 0xFFFD, 0x3F73, 0x3F75, 0xFFFD, 0xFFFD, -/* 3280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F70, -/* 3288 */ 0xFFFD, 0xFFFD, 0x4540, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3290 */ 0xFFFD, 0x4542, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3298 */ 0x4A45, 0xFFFD, 0x4A46, 0x4A44, 0xFFFD, 0xFFFD, 0x4F5A, 0xFFFD, -/* 32A0 */ 0x4F5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5348, 0xFFFD, -/* 32A8 */ 0x5670, 0xFFFD, 0x566F, 0xFFFD, 0xFFFD, 0x5671, 0xFFFD, 0xFFFD, -/* 32B0 */ 0x5D49, 0x2A7D, 0x5349, 0xFFFD, 0xFFFD, 0x6325, 0xFFFD, 0xFFFD, -/* 32B8 */ 0x3439, 0x4A47, 0x4A49, 0x5E70, 0xFFFD, 0x6125, 0x622F, 0xFFFD, -/* 32C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F7E, 0x3F7C, 0x3F7B, 0xFFFD, 0xFFFD, -/* 32C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4546, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4547, 0x4F60, 0xFFFD, 0x5350, 0xFFFD, -/* 32D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x534D, 0x534C, -/* 32E0 */ 0xFFFD, 0x5351, 0xFFFD, 0xFFFD, 0x5674, 0x5675, 0x5D4F, 0xFFFD, -/* 32E8 */ 0x5D4C, 0x5D4E, 0xFFFD, 0x5E72, 0x5E71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32F0 */ 0x666E, 0x5F71, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F72, 0x6059, 0xFFFD, -/* 32F8 */ 0xFFFD, 0xFFFD, 0x6126, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3300 */ 0xFFFD, 0xFFFD, 0x666F, 0xFFFD, 0xFFFD, 0x6245, 0x2A7E, 0xFFFD, -/* 3308 */ 0xFFFD, 0xFFFD, 0x4549, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A4C, 0xFFFD, -/* 3310 */ 0xFFFD, 0xFFFD, 0x594F, 0xFFFD, 0x4021, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3318 */ 0x2B21, 0x4A4E, 0xFFFD, 0xFFFD, 0x5E73, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3320 */ 0xFFFD, 0xFFFD, 0x4024, 0xFFFD, 0x4022, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x454B, 0x4F62, -/* 3330 */ 0xFFFD, 0x4F63, 0xFFFD, 0xFFFD, 0x4F64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5353, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x567A, 0xFFFD, 0xFFFD, 0xFFFD, 0x567B, -/* 3348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3350 */ 0xFFFD, 0x5950, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3358 */ 0xFFFD, 0x5B5F, 0x5B5D, 0xFFFD, 0x5B5E, 0x5B60, 0xFFFD, 0xFFFD, -/* 3360 */ 0x5D50, 0xFFFD, 0x5D51, 0xFFFD, 0xFFFD, 0x5E75, 0x5E74, 0xFFFD, -/* 3368 */ 0x5F73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3370 */ 0x6128, 0xFFFD, 0x623B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3378 */ 0xFFFD, 0xFFFD, 0x5355, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3380 */ 0xFFFD, 0xFFFD, 0x5951, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3388 */ 0xFFFD, 0xFFFD, 0x5E76, 0xFFFD, 0x6129, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x454F, 0x4F65, -/* 3398 */ 0xFFFD, 0xFFFD, 0x5B61, 0xFFFD, 0xFFFD, 0x4550, 0xFFFD, 0xFFFD, -/* 33A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D53, 0x4552, 0xFFFD, 0xFFFD, -/* 33A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A54, 0x4A55, -/* 33B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A52, 0x4A56, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33B8 */ 0xFFFD, 0x4F69, 0xFFFD, 0xFFFD, 0x4F67, 0x636E, 0xFFFD, 0xFFFD, -/* 33C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F66, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33C8 */ 0x535C, 0xFFFD, 0xFFFD, 0x5359, 0xFFFD, 0x535A, 0x5228, 0xFFFD, -/* 33D0 */ 0x5358, 0xFFFD, 0xFFFD, 0xFFFD, 0x535D, 0xFFFD, 0x535B, 0x535F, -/* 33D8 */ 0xFFFD, 0x595B, 0x5726, 0xFFFD, 0x637B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33E0 */ 0xFFFD, 0x5728, 0xFFFD, 0xFFFD, 0xFFFD, 0x5959, 0xFFFD, 0xFFFD, -/* 33E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5956, 0x5958, -/* 33F0 */ 0x5B65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x642A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3400 */ 0x5E78, 0xFFFD, 0x5E77, 0xFFFD, 0xFFFD, 0xFFFD, 0x605D, 0x605E, -/* 3408 */ 0x605C, 0x5361, 0xFFFD, 0x572A, 0xFFFD, 0x595C, 0xFFFD, 0xFFFD, -/* 3410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D56, -/* 3418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E7B, 0x5E79, 0xFFFD, 0x5E7A, 0xFFFD, -/* 3420 */ 0xFFFD, 0x6225, 0x5E7C, 0x6226, 0xFFFD, 0xFFFD, 0xFFFD, 0x3967, -/* 3428 */ 0xFFFD, 0xFFFD, 0x6670, 0xFFFD, 0x3968, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3430 */ 0xFFFD, 0xFFFD, 0x455B, 0xFFFD, 0xFFFD, 0xFFFD, 0x402B, 0x455C, -/* 3438 */ 0xFFFD, 0x4554, 0xFFFD, 0x4559, 0xFFFD, 0x4557, 0x4A5D, 0xFFFD, -/* 3440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4558, 0xFFFD, 0x4A5E, -/* 3448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A5B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x667A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F6B, -/* 3460 */ 0xFFFD, 0xFFFD, 0x5365, 0x5366, 0xFFFD, 0xFFFD, 0x5364, 0xFFFD, -/* 3468 */ 0x5362, 0x5363, 0x5962, 0xFFFD, 0x5961, 0x5966, 0xFFFD, 0x5965, -/* 3470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5963, 0xFFFD, 0x6671, 0xFFFD, -/* 3478 */ 0x5B69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3480 */ 0xFFFD, 0x5D58, 0xFFFD, 0x5E7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F78, 0xFFFD, -/* 3490 */ 0xFFFD, 0x612A, 0x455F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3498 */ 0x5368, 0xFFFD, 0x5730, 0xFFFD, 0x5967, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34A0 */ 0xFFFD, 0x5F21, 0x6060, 0x4A63, 0x4A62, 0x4A66, 0xFFFD, 0xFFFD, -/* 34A8 */ 0xFFFD, 0x4A61, 0xFFFD, 0x4A60, 0x4A6C, 0x4A64, 0xFFFD, 0xFFFD, -/* 34B0 */ 0xFFFD, 0x4A6A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F73, 0xFFFD, 0x4F6D, -/* 34B8 */ 0x4F6E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F72, 0xFFFD, 0x4F74, 0x5370, -/* 34C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5371, 0xFFFD, 0x536B, 0xFFFD, -/* 34C8 */ 0xFFFD, 0x536C, 0xFFFD, 0xFFFD, 0xFFFD, 0x536A, 0xFFFD, 0xFFFD, -/* 34D0 */ 0xFFFD, 0x5734, 0xFFFD, 0x5737, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5733, 0xFFFD, -/* 34E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x596A, 0xFFFD, -/* 34E8 */ 0xFFFD, 0xFFFD, 0x596B, 0xFFFD, 0xFFFD, 0xFFFD, 0x596D, 0xFFFD, -/* 34F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B6F, 0x5B6D, 0xFFFD, -/* 34F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B6C, 0xFFFD, 0x5B6E, -/* 3500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B6B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D5A, 0x5F24, 0x5F22, -/* 3510 */ 0x5F79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6062, -/* 3518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6061, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3520 */ 0x6172, 0xFFFD, 0x6173, 0x4F77, 0x4F76, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x573A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3530 */ 0xFFFD, 0xFFFD, 0x5D61, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D60, 0x5D5E, -/* 3538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F25, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6174, 0xFFFD, 0x6334, -/* 3548 */ 0x4A6E, 0xFFFD, 0xFFFD, 0x5F7B, 0x6063, 0xFFFD, 0x4032, 0xFFFD, -/* 3550 */ 0x4561, 0xFFFD, 0x4A6F, 0x4A73, 0xFFFD, 0xFFFD, 0x4A71, 0x4A70, -/* 3558 */ 0x4A72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3560 */ 0xFFFD, 0xFFFD, 0x4F79, 0x5375, 0xFFFD, 0xFFFD, 0x5374, 0xFFFD, -/* 3568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x573B, 0xFFFD, -/* 3570 */ 0x573C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x596F, 0xFFFD, 0x5B71, -/* 3578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3580 */ 0xFFFD, 0xFFFD, 0x5F27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6672, 0xFFFD, 0xFFFD, 0xFFFD, 0x612C, -/* 3590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A75, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3598 */ 0x5D62, 0xFFFD, 0x612E, 0x6433, 0xFFFD, 0xFFFD, 0x6228, 0xFFFD, -/* 35A0 */ 0xFFFD, 0xFFFD, 0x573E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D63, 0xFFFD, -/* 35A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4562, 0xFFFD, 0xFFFD, 0x4A78, 0xFFFD, -/* 35B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x573F, -/* 35B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D64, 0xFFFD, -/* 35C0 */ 0xFFFD, 0x5F28, 0xFFFD, 0xFFFD, 0xFFFD, 0x612F, 0xFFFD, 0xFFFD, -/* 35C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4563, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35D0 */ 0xFFFD, 0x4F7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F7C, -/* 35D8 */ 0xFFFD, 0x4F7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35E0 */ 0x4F7D, 0x5378, 0x537A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5423, -/* 35E8 */ 0xFFFD, 0x537C, 0x5421, 0xFFFD, 0x5425, 0x537D, 0xFFFD, 0xFFFD, -/* 35F0 */ 0xFFFD, 0xFFFD, 0x5379, 0xFFFD, 0xFFFD, 0xFFFD, 0x6673, 0x5744, -/* 35F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5745, 0xFFFD, 0x5740, 0xFFFD, 0xFFFD, -/* 3600 */ 0xFFFD, 0x5742, 0x5974, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3608 */ 0xFFFD, 0x5973, 0xFFFD, 0xFFFD, 0x5B74, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3610 */ 0xFFFD, 0xFFFD, 0x5976, 0x5975, 0x5743, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3618 */ 0xFFFD, 0x5971, 0x5B75, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B77, 0xFFFD, -/* 3620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B79, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3628 */ 0xFFFD, 0x5B7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3630 */ 0xFFFD, 0x5D6F, 0xFFFD, 0xFFFD, 0x5D71, 0xFFFD, 0x5D67, 0x5D69, -/* 3638 */ 0xFFFD, 0x5D6A, 0x5D74, 0x5D75, 0xFFFD, 0x5D6E, 0xFFFD, 0x5D68, -/* 3640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D66, 0xFFFD, 0x5D76, -/* 3648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3650 */ 0x5D72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D70, 0xFFFD, -/* 3658 */ 0xFFFD, 0xFFFD, 0x5F2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3660 */ 0xFFFD, 0xFFFD, 0x642F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3668 */ 0xFFFD, 0x5F2A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3670 */ 0x6025, 0xFFFD, 0xFFFD, 0x5F7E, 0xFFFD, 0x6023, 0xFFFD, 0xFFFD, -/* 3678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3680 */ 0x6022, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3688 */ 0xFFFD, 0xFFFD, 0x6065, 0xFFFD, 0x6066, 0xFFFD, 0x6068, 0xFFFD, -/* 3690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3698 */ 0x6132, 0xFFFD, 0xFFFD, 0xFFFD, 0x6133, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36A0 */ 0x6134, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6159, -/* 36A8 */ 0xFFFD, 0xFFFD, 0x615B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36B0 */ 0xFFFD, 0x6175, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6241, 0x4564, -/* 36B8 */ 0xFFFD, 0xFFFD, 0x4566, 0x2F42, 0xFFFD, 0x4568, 0x4567, 0xFFFD, -/* 36C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5027, -/* 36C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x502A, 0xFFFD, 0xFFFD, -/* 36D0 */ 0x5024, 0x502B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36D8 */ 0xFFFD, 0x542D, 0xFFFD, 0x5025, 0x5022, 0xFFFD, 0x542A, 0xFFFD, -/* 36E0 */ 0xFFFD, 0xFFFD, 0x542C, 0xFFFD, 0xFFFD, 0x5436, 0xFFFD, 0xFFFD, -/* 36E8 */ 0xFFFD, 0x5433, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36F0 */ 0x5437, 0xFFFD, 0xFFFD, 0x5429, 0xFFFD, 0xFFFD, 0x5435, 0xFFFD, -/* 36F8 */ 0xFFFD, 0x5432, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x574D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3708 */ 0x5748, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x574A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3718 */ 0x6675, 0xFFFD, 0xFFFD, 0xFFFD, 0x5979, 0x597B, 0xFFFD, 0x597D, -/* 3720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x597E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A22, 0xFFFD, 0xFFFD, -/* 3730 */ 0xFFFD, 0xFFFD, 0x597A, 0xFFFD, 0xFFFD, 0x5B7D, 0xFFFD, 0xFFFD, -/* 3738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C27, 0x5C22, 0xFFFD, 0xFFFD, -/* 3740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C25, 0xFFFD, 0xFFFD, -/* 3748 */ 0xFFFD, 0x5B7E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C26, 0xFFFD, 0xFFFD, -/* 3750 */ 0xFFFD, 0xFFFD, 0x5C24, 0x5C23, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D79, -/* 3758 */ 0x5D7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3760 */ 0xFFFD, 0x5F35, 0xFFFD, 0x5F31, 0x5F32, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F36, 0x6135, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3770 */ 0xFFFD, 0xFFFD, 0x615D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3778 */ 0xFFFD, 0xFFFD, 0x6229, 0xFFFD, 0x6230, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3780 */ 0x6238, 0x5F37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4569, -/* 3788 */ 0xFFFD, 0xFFFD, 0x502C, 0x5439, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A24, 0xFFFD, -/* 3798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C29, 0xFFFD, 0xFFFD, 0x5E21, 0xFFFD, -/* 37A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F3A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37A8 */ 0x6231, 0x623F, 0xFFFD, 0xFFFD, 0x2547, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37B0 */ 0x502F, 0x502E, 0x543A, 0xFFFD, 0xFFFD, 0x5750, 0xFFFD, 0x5A26, -/* 37B8 */ 0x5A25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B22, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E22, -/* 37C8 */ 0xFFFD, 0xFFFD, 0x396A, 0x543C, 0x543B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37D0 */ 0x5A28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37D8 */ 0x396B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x543D, 0x2772, 0xFFFD, -/* 37E0 */ 0xFFFD, 0xFFFD, 0x5A29, 0x5C2D, 0x5C2E, 0x5F3C, 0xFFFD, 0xFFFD, -/* 37E8 */ 0x615F, 0x456A, 0xFFFD, 0xFFFD, 0x5C30, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37F0 */ 0xFFFD, 0xFFFD, 0x6160, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A2B, 0x5A2A, 0x613B, 0xFFFD, 0xFFFD, -/* 3800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3808 */ 0x2370, 0xFFFD, 0xFFFD, 0x543E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3810 */ 0xFFFD, 0xFFFD, 0x5E24, 0x5755, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3818 */ 0x602B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6242, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3820 */ 0xFFFD, 0xFFFD, 0x5E47, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F3F, 0xFFFD, -/* 3828 */ 0x6161, 0xFFFD, 0x6177, -/* End of table Total Length = 0x3CC8 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cns_2.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cns_2.uf deleted file mode 100644 index d4c754c5d62..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cns_2.uf +++ /dev/null @@ -1,5753 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 1 - srcBegin = 4E07 - srcEnd = 4E0F - mappingOffset = 0000 - Mapping = - 2126 FFFD FFFD FFFD FFFD 2127 FFFD 212F - 212D -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 4E2E - srcEnd = 4E47 - mappingOffset = 0009 - Mapping = - 2130 FFFD FFFD 2143 FFFD 2531 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2144 FFFD - FFFD FFFD FFFD FFFD 2121 FFFD FFFD FFFD - FFFD 2128 -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 4E5C - destBegin = 2122 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 4E7F - srcEnd = 4E93 - mappingOffset = 0023 - Mapping = - 334E FFFD FFFD FFFD 4156 4157 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2129 FFFD - FFFD FFFD FFFD FFFD 2131 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 4EB6 - srcEnd = 4EC9 - mappingOffset = 0038 - Mapping = - 4158 FFFD FFFD 6D44 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2132 FFFD FFFD FFFD - FFFD FFFD 2134 2133 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 4EDA - srcEnd = 4F9E - mappingOffset = 004C - Mapping = - 214A FFFD 2146 2149 FFFD FFFD FFFD 2148 - FFFD FFFD FFFD FFFD FFFD FFFD 2145 2147 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 216F - FFFD FFFD 2179 216D FFFD 2171 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2170 FFFD - 2174 FFFD 2178 2175 FFFD FFFD 2172 FFFD - FFFD FFFD FFFD FFFD 216A FFFD FFFD FFFD - 217A 2177 216E FFFD FFFD FFFD 216B FFFD - FFFD FFFD FFFD 2173 FFFD FFFD FFFD FFFD - 2176 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 216C 2328 FFFD FFFD FFFD FFFD - FFFD 2329 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 227B FFFD FFFD 2322 232A FFFD 2326 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 227D - FFFD FFFD 253D FFFD FFFD FFFD FFFD FFFD - 2324 227E FFFD FFFD 227A FFFD 2327 FFFD - FFFD FFFD FFFD FFFD FFFD 2325 FFFD 232B - 227C FFFD 2321 FFFD FFFD 2323 FFFD FFFD - 253F 254B FFFD FFFD 254C FFFD FFFD FFFD - FFFD FFFD 2539 FFFD 2538 253C 2543 2541 - FFFD FFFD 2533 2535 FFFD FFFD 2536 2542 - 2549 FFFD 253B 2534 FFFD 2537 FFFD 253A - FFFD FFFD FFFD FFFD FFFD FFFD 2544 FFFD - 2548 FFFD 2546 254A FFFD 253E 2532 FFFD - 2540 FFFD 2545 FFFD 2547 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 4FB2 - srcEnd = 4FDC - mappingOffset = 0111 - Mapping = - 2922 292A FFFD FFFD FFFD FFFD FFFD 2930 - 292E 2929 FFFD FFFD FFFD FFFD 292F 2925 - FFFD FFFD FFFD 287E FFFD 292C FFFD 2923 - FFFD 2924 FFFD 287D FFFD FFFD FFFD FFFD - FFFD 2921 2926 FFFD 292D FFFD FFFD 2928 - FFFD 292B 2927 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 4FEC - srcEnd = 4FF7 - mappingOffset = 013C - Mapping = - 2931 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2D71 2D70 2D75 2D76 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 5005 - srcEnd = 5073 - mappingOffset = 0148 - Mapping = - 2D6A FFFD 2D6B FFFD FFFD FFFD FFFD FFFD - FFFD 2D7E FFFD FFFD FFFD FFFD 2D6C FFFD - 335E FFFD 2D77 FFFD FFFD FFFD 2D6F 2D78 - FFFD 2D69 FFFD 2D79 FFFD 2D6D FFFD FFFD - FFFD FFFD 2D7A FFFD FFFD FFFD FFFD 2D74 - FFFD FFFD 2D7C 2D6E 2D7D FFFD 2D72 FFFD - 2D7B FFFD 2D73 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3366 335A FFFD FFFD FFFD - 335F 3365 FFFD 3358 FFFD 335C 3355 FFFD - 3359 FFFD FFFD FFFD 336A FFFD 3354 FFFD - FFFD FFFD 3369 FFFD FFFD FFFD 335B FFFD - 3356 3352 3360 3353 3351 335D 3363 3364 - FFFD FFFD FFFD 3A3F 3361 3350 3362 FFFD - FFFD 3367 FFFD 334F FFFD 3357 3368 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 5082 - srcEnd = 513D - mappingOffset = 01B7 - Mapping = - 3A42 3A3B FFFD FFFD FFFD 3A43 FFFD FFFD - FFFD 3A39 3A3C FFFD 3A3D FFFD FFFD FFFD - 3A41 FFFD 3A37 3A36 FFFD FFFD FFFD FFFD - FFFD 3A35 3A40 3A3E 3A38 FFFD FFFD FFFD - FFFD 3A3A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 415C FFFD 4162 4165 - FFFD FFFD 415F FFFD 4168 FFFD 4169 FFFD - 4164 FFFD FFFD 4159 FFFD 415A FFFD 4163 - 4161 FFFD 415D FFFD 415B FFFD 4160 4167 - 415E 4166 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4921 4877 FFFD FFFD 4878 FFFD FFFD - FFFD 487B FFFD 487D FFFD FFFD 4926 FFFD - FFFD 4925 487E FFFD 4876 FFFD 4879 FFFD - 487C FFFD 4922 FFFD FFFD 4924 4923 FFFD - FFFD 487A FFFD FFFD 4F54 FFFD 4F51 FFFD - FFFD FFFD FFFD 4F58 4F55 4F4E FFFD FFFD - FFFD 4F4F FFFD FFFD 4F52 4F53 FFFD FFFD - 4F59 4F56 4F57 FFFD FFFD FFFD FFFD 5643 - FFFD 5640 FFFD FFFD FFFD 5641 FFFD FFFD - 5642 FFFD 563F FFFD FFFD FFFD 5C49 FFFD - 5C47 FFFD 5C48 5C46 5C45 FFFD FFFD 5C4A - FFFD FFFD FFFD 6144 6145 FFFD 4F50 6143 - FFFD FFFD 6537 6538 FFFD FFFD FFFD 6B4F - 6B4E FFFD FFFD 6E7D -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 515A - srcEnd = 515F - mappingOffset = 0273 - Mapping = - 2E21 FFFD FFFD FFFD FFFD 3A44 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 5187 - srcEnd = 519E - mappingOffset = 0279 - Mapping = - 212E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 232C FFFD FFFD FFFD 2E23 2E22 FFFD FFFD - FFFD 2135 FFFD FFFD FFFD FFFD FFFD 254D -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 51B1 - srcEnd = 51DE - mappingOffset = 0291 - Mapping = - 217B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 232D FFFD FFFD 254E FFFD 254F FFFD FFFD - FFFD FFFD FFFD 2E25 2E26 FFFD FFFD 2E27 - FFFD 2E24 FFFD FFFD FFFD 2E28 FFFD 336B - FFFD FFFD FFFD 3A45 FFFD FFFD 416A 4927 - FFFD FFFD FFFD FFFD FFFD 5644 -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 51F5 - destBegin = 2123 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 5209 - srcEnd = 5221 - mappingOffset = 02BF - Mapping = - 214C FFFD FFFD 214B FFFD FFFD FFFD 217D - FFFD FFFD 217C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 232E FFFD 232F FFFD FFFD - 2330 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 5231 - srcEnd = 5235 - mappingOffset = 02D8 - Mapping = - 2554 2551 2552 FFFD 2550 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 5244 - srcEnd = 5299 - mappingOffset = 02DD - Mapping = - 2932 FFFD 2553 FFFD FFFD 2933 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2E2B FFFD - FFFD 2E2E FFFD FFFD FFFD FFFD 2E2A FFFD - FFFD FFFD 2E2C 2E2D FFFD 2E29 2E2F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 336C - 336E 336D 336F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 416C FFFD 416B 416D - 416E FFFD FFFD FFFD 4928 4929 FFFD FFFD - 4C61 FFFD FFFD FFFD FFFD FFFD FFFD 4F5A - 4F5B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6539 6B51 6B50 6E7E -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 52A6 - srcEnd = 52AE - mappingOffset = 0333 - Mapping = - 217E FFFD FFFD FFFD FFFD FFFD FFFD 2331 - 2332 -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = 52BC - srcEnd = 52D6 - mappingOffset = 033C - Mapping = - 2555 FFFD FFFD FFFD 2934 FFFD 2935 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2E30 FFFD FFFD FFFD FFFD FFFD 3371 - FFFD FFFD 3370 -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 52E9 - srcEnd = 52FC - mappingOffset = 0357 - Mapping = - 492A FFFD 492B FFFD FFFD FFFD 4F5D FFFD - 4F5C FFFD FFFD 5C4B FFFD FFFD 653A FFFD - FFFD FFFD FFFD 2136 -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 5309 - srcEnd = 533D - mappingOffset = 036B - Mapping = - 2333 2556 2557 FFFD FFFD 2E31 FFFD FFFD - 3A47 3A46 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2124 FFFD 214D FFFD FFFD 2222 FFFD - FFFD 2221 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3372 FFFD FFFD 492C - FFFD FFFD FFFD 5645 FFFD FFFD 686A FFFD - FFFD FFFD FFFD 2558 2936 -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 534C - srcEnd = 534D - mappingOffset = 03A0 - Mapping = - 214E 2223 -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = 5363 - srcEnd = 53B9 - mappingOffset = 03A2 - Mapping = - 2334 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2137 FFFD FFFD FFFD FFFD FFFD 2335 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2937 FFFD FFFD FFFD FFFD FFFD 2125 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2224 - FFFD FFFD FFFD 2336 2337 FFFD FFFD 2559 - FFFD 255A FFFD 2939 2938 293B 293A FFFD - FFFD 3373 FFFD 2E32 FFFD FFFD FFFD FFFD - FFFD 3A48 FFFD FFFD 3A49 FFFD FFFD FFFD - FFFD 492D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 653B FFFD FFFD FFFD FFFD 2138 -End of Item 0016 - -Begin of Item 0017 - Format 2 - srcBegin = 53E1 - destBegin = 5646 -End of Item 0017 - -Begin of Item 0018 - Format 2 - srcBegin = 5407 - destBegin = 2225 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 5418 - srcEnd = 5454 - mappingOffset = 03F9 - Mapping = - 2340 233D FFFD FFFD 233E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2345 233F FFFD FFFD - 2344 FFFD 233A FFFD FFFD FFFD FFFD FFFD - 2338 FFFD FFFD FFFD FFFD FFFD FFFD 2339 - FFFD FFFD FFFD FFFD FFFD 2341 FFFD FFFD - FFFD 2343 FFFD FFFD FFFD 233C FFFD 2346 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2342 - FFFD FFFD FFFD FFFD 233B -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 5460 - srcEnd = 551A - mappingOffset = 0436 - Mapping = - 256B 256A FFFD 256D 256F 2564 2567 256E - FFFD FFFD FFFD 2561 2565 FFFD FFFD 2569 - 294A FFFD 294E FFFD 2566 FFFD FFFD FFFD - FFFD FFFD 2562 FFFD FFFD FFFD 2563 255C - FFFD 255D 255F FFFD FFFD FFFD FFFD 255B - 2560 FFFD FFFD FFFD FFFD 2568 FFFD FFFD - FFFD 255E FFFD FFFD FFFD FFFD FFFD FFFD - 256C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2949 293D 294C FFFD FFFD 293F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 293E 2944 FFFD - 2950 FFFD FFFD FFFD FFFD FFFD 2946 2943 - FFFD FFFD 293C FFFD 294B FFFD 294D FFFD - FFFD FFFD FFFD 2941 FFFD 2947 2948 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2940 - FFFD FFFD FFFD FFFD FFFD FFFD 2945 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 294F FFFD - 2E46 FFFD 2E34 FFFD 2E39 FFFD FFFD 2E37 - FFFD FFFD FFFD 2E3E FFFD FFFD FFFD FFFD - FFFD 2E41 FFFD 2E38 FFFD FFFD FFFD 2E44 - 2E45 FFFD FFFD 2E43 FFFD FFFD FFFD 2E3B - FFFD FFFD FFFD 2E48 2E3C 2E40 FFFD FFFD - 2E3D FFFD 2E42 2E49 3424 FFFD 2E47 FFFD - FFFD 2E3F 2E36 FFFD FFFD FFFD FFFD 2E35 - FFFD FFFD 2E3A -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 5526 - srcEnd = 5552 - mappingOffset = 04F1 - Mapping = - 2E33 FFFD FFFD FFFD 337A FFFD FFFD 342A - FFFD FFFD 3421 FFFD 3425 FFFD 3379 337E - 337D FFFD FFFD 3428 FFFD 342B 3376 FFFD - FFFD FFFD 342C FFFD FFFD FFFD FFFD 3423 - FFFD FFFD 3429 FFFD FFFD 342D FFFD 3377 - 3427 FFFD 3378 337B 3422 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 5562 - srcEnd = 5565 - mappingOffset = 051E - Mapping = - 337C FFFD FFFD 3426 -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 5575 - srcEnd = 5595 - mappingOffset = 0522 - Mapping = - 3374 3375 3A4E FFFD FFFD FFFD FFFD FFFD - 3A59 FFFD 3A5C FFFD 3A55 FFFD FFFD FFFD - FFFD FFFD FFFD 3A52 FFFD FFFD FFFD 3A5A - 417C 3A5F 3A53 FFFD 3A4A 3A57 3A51 FFFD - 3A5D -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 55A1 - srcEnd = 564C - mappingOffset = 0543 - Mapping = - 3A5E 3A50 3A56 3A58 3A4C 3A5B FFFD 3A4B - FFFD FFFD FFFD FFFD 3A4D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3A54 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 417A 4176 - FFFD 4227 416F 4178 FFFD FFFD FFFD 4223 - FFFD 4174 4173 4171 4225 FFFD 417D 4172 - FFFD 417B FFFD 4177 417E 4222 FFFD FFFD - 4226 FFFD 4170 FFFD 4175 FFFD FFFD FFFD - FFFD 4221 FFFD FFFD FFFD FFFD FFFD FFFD - 4179 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4224 FFFD FFFD FFFD FFFD FFFD FFFD - 493C 4938 FFFD 4932 FFFD FFFD 493B FFFD - 4935 4937 FFFD 493A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4930 FFFD FFFD 4933 FFFD - FFFD 4931 4936 FFFD 492F FFFD FFFD FFFD - FFFD FFFD FFFD 4934 4939 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 492E FFFD - FFFD 4F6E FFFD 4F6B FFFD FFFD FFFD FFFD - FFFD FFFD 4F69 FFFD 4F61 FFFD FFFD 4F6D - FFFD 4F6F FFFD FFFD 4F6A 4F6C FFFD 4F68 - 4F62 4F5F FFFD FFFD 3A4F 4F65 FFFD 4F5E - 4F64 4F63 FFFD 4F60 -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 5658 - srcEnd = 5734 - mappingOffset = 05EF - Mapping = - 4F66 FFFD 4F67 FFFD FFFD FFFD 564F FFFD - 5648 FFFD FFFD 564C FFFD FFFD 564B FFFD - FFFD FFFD FFFD FFFD FFFD 564D 5649 FFFD - 5647 FFFD 564E 564A FFFD FFFD FFFD 5650 - FFFD FFFD FFFD FFFD FFFD FFFD 5C52 5C54 - FFFD 5C55 5C53 5C51 5C50 FFFD 5C4F FFFD - FFFD FFFD FFFD FFFD 5C4D 5C4E FFFD FFFD - FFFD FFFD FFFD 5C4C FFFD FFFD FFFD 6148 - 6146 614B 6149 FFFD 6147 614A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 653E 653F - FFFD FFFD 6540 653C 6541 653D FFFD FFFD - FFFD FFFD 686B 686D FFFD 686C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6B53 6B54 FFFD - FFFD FFFD FFFD 6B52 FFFD 6D46 6D45 FFFD - FFFD FFFD FFFD 6D47 FFFD 7034 FFFD FFFD - FFFD FFFD FFFD 7033 707C FFFD FFFD 212A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2227 - FFFD 2226 FFFD FFFD FFFD 2349 FFFD 2348 - FFFD FFFD FFFD FFFD FFFD FFFD 2347 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2570 - FFFD 2571 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2E4A 2E4B FFFD FFFD FFFD FFFD 342F - FFFD FFFD 342E FFFD 3A60 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4228 FFFD FFFD FFFD - FFFD FFFD 4F70 5652 5651 FFFD 715A FFFD - 2139 FFFD 214F 2150 FFFD FFFD FFFD FFFD - FFFD FFFD 2229 FFFD FFFD FFFD 2228 FFFD - FFFD FFFD FFFD FFFD 222A -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 5741 - srcEnd = 5752 - mappingOffset = 06CC - Mapping = - 234A FFFD FFFD FFFD 234B FFFD FFFD FFFD - 234D FFFD 234E 234C FFFD FFFD FFFD FFFD - FFFD 234F -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 5762 - srcEnd = 5780 - mappingOffset = 06DE - Mapping = - 257E FFFD FFFD FFFD FFFD FFFD 2621 FFFD - FFFD 2575 FFFD 2574 FFFD 2572 2577 2576 - 2573 257C 257D 257A 2578 FFFD FFFD FFFD - FFFD 257B FFFD 2622 FFFD FFFD 2579 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 578C - srcEnd = 57A5 - mappingOffset = 06FD - Mapping = - 2955 FFFD FFFD 295B FFFD FFFD FFFD FFFD - 2959 295F FFFD 2956 295A 295C 295E 2958 - FFFD 2957 2952 2953 FFFD FFFD FFFD FFFD - 2954 295D -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 57B5 - srcEnd = 58E8 - mappingOffset = 0717 - Mapping = - 2951 2E55 FFFD 2E54 2E59 2E50 FFFD 2E53 - 2E52 FFFD 2E56 FFFD 2E5A FFFD FFFD FFFD - FFFD 2E51 2E57 FFFD FFFD FFFD FFFD 2E4C - FFFD FFFD 343D 2E58 FFFD 2E4F FFFD FFFD - 2E4E FFFD FFFD FFFD FFFD FFFD FFFD 3434 - FFFD FFFD FFFD FFFD 3444 3432 3440 FFFD - 3442 FFFD 3448 FFFD 344C FFFD FFFD 3443 - 3437 343F FFFD 344D 344B 3441 343C 3435 - 3A68 3433 FFFD 343A FFFD FFFD 3430 3446 - 3438 FFFD FFFD 3436 3449 FFFD FFFD 344F - FFFD FFFD 343E 3439 FFFD FFFD 343B 344A - 344E 3445 FFFD 3447 FFFD FFFD FFFD 3431 - FFFD FFFD FFFD FFFD 3A63 FFFD 3A6C 3A6B - FFFD 3A64 FFFD FFFD FFFD FFFD 3A66 FFFD - 3A6A FFFD 3A65 3A67 3A61 FFFD FFFD 3A74 - 3A73 3A70 FFFD FFFD FFFD 2E4D 3A6D FFFD - FFFD 3A6F 3A62 3A72 3A71 FFFD 3A75 FFFD - 4236 FFFD 3A6E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3A69 422E FFFD FFFD FFFD - 422D 4231 422C FFFD FFFD FFFD 4229 FFFD - 4230 FFFD FFFD FFFD 4233 FFFD 4235 FFFD - 4232 FFFD FFFD FFFD FFFD FFFD 4237 422B - 4234 FFFD FFFD 422A FFFD FFFD FFFD FFFD - FFFD FFFD 422F FFFD 4238 FFFD FFFD 4944 - FFFD 494A FFFD FFFD FFFD 4946 494D 493E - FFFD FFFD 4943 FFFD 4942 494B FFFD FFFD - FFFD 4941 4947 494C 493D FFFD 4945 FFFD - FFFD 4949 494F 493F 4948 FFFD FFFD 494E - FFFD FFFD FFFD 4940 FFFD FFFD FFFD FFFD - 4F72 FFFD FFFD 4F74 4F79 FFFD 4F75 FFFD - 4F78 FFFD FFFD FFFD FFFD FFFD 4F71 4F77 - FFFD FFFD 4F76 FFFD 4F73 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5657 FFFD 5659 - 5654 FFFD 5656 FFFD FFFD 5658 FFFD FFFD - FFFD 565A FFFD 5653 5655 FFFD FFFD FFFD - FFFD FFFD 5C58 FFFD FFFD 5C59 FFFD 5C57 - FFFD 5C56 FFFD FFFD FFFD 6542 6544 FFFD - 6543 FFFD FFFD FFFD FFFD FFFD 686E FFFD - FFFD FFFD 6F22 6F21 -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 58F4 - srcEnd = 5917 - mappingOffset = 084B - Mapping = - 2960 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4239 FFFD 4950 4F7A FFFD FFFD FFFD 213A - FFFD FFFD 2350 FFFD FFFD FFFD FFFD FFFD - 2623 2961 2E5B FFFD FFFD FFFD 6545 FFFD - FFFD FFFD FFFD 2151 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 592C - srcEnd = 592F - mappingOffset = 086F - Mapping = - 213B FFFD FFFD 2152 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 593C - srcEnd = 5A1E - mappingOffset = 0873 - Mapping = - 222B FFFD FFFD FFFD 2351 FFFD FFFD FFFD - FFFD 2624 FFFD FFFD FFFD FFFD 2E5C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2962 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3450 FFFD FFFD FFFD FFFD 3A76 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4951 - FFFD FFFD FFFD FFFD 614C 6D48 6F23 FFFD - FFFD FFFD FFFD 2231 FFFD FFFD FFFD 222F - 222D FFFD 2230 2232 222C FFFD FFFD FFFD - FFFD 222E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2356 2359 2358 FFFD FFFD FFFD - FFFD FFFD FFFD 2355 2353 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2354 235B 2357 FFFD - FFFD FFFD 2352 235A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2630 2629 FFFD - 2634 2625 262C FFFD FFFD FFFD 2626 FFFD - 262D 2631 FFFD FFFD 2632 262B FFFD 262E - FFFD FFFD FFFD 2635 2633 FFFD FFFD FFFD - 262A FFFD 2628 2627 FFFD FFFD FFFD FFFD - FFFD FFFD 262F FFFD FFFD FFFD FFFD 2970 - FFFD 2968 2964 FFFD 2974 2963 FFFD FFFD - 296D FFFD FFFD FFFD FFFD 2971 FFFD FFFD - FFFD 2977 2965 FFFD FFFD 2967 296E 2972 - 2976 2973 296C 296F FFFD FFFD 2969 FFFD - 296B 296A 2975 FFFD 2966 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2E64 FFFD - FFFD FFFD FFFD 2E62 FFFD FFFD FFFD FFFD - FFFD 2E61 2E5E 2E63 FFFD 2E5D FFFD FFFD - FFFD FFFD 2E65 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 5A2D - srcEnd = 5B56 - mappingOffset = 0956 - Mapping = - 2E5F 2E60 FFFD FFFD FFFD FFFD 2E66 FFFD - 3457 FFFD 3B26 3456 3469 FFFD FFFD FFFD - FFFD 3467 FFFD FFFD FFFD 3470 3460 3463 - FFFD FFFD 346D 3465 FFFD FFFD FFFD 346A - 3468 FFFD FFFD 3459 346E 3462 345D FFFD - 3453 346F 345F 3452 FFFD FFFD 3464 3471 - 3461 3455 345A 3451 FFFD FFFD FFFD 345E - 345B FFFD 3454 FFFD 346C FFFD FFFD 345C - 3458 FFFD FFFD 346B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3A7D FFFD 3A7A 3B2D 3B21 - 3B2E FFFD FFFD FFFD FFFD FFFD 3B2A 3B27 - FFFD FFFD FFFD FFFD FFFD 3B28 3B2B 3B2F - FFFD 3466 3B31 424D FFFD FFFD 3B32 3A78 - 3B24 FFFD 3B29 FFFD FFFD FFFD FFFD 3B30 - 3B33 3A7C 3A79 FFFD FFFD 3A7B FFFD FFFD - 3B22 3A7E FFFD FFFD 3B2C FFFD FFFD 3B23 - FFFD 3B25 3A77 4241 423F FFFD FFFD 4249 - 4240 424A 4246 423E 424C 423D 4244 FFFD - FFFD FFFD 4242 4247 FFFD FFFD FFFD 423B - FFFD 4245 423A 4243 FFFD 4248 423C FFFD - 424B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4955 FFFD FFFD FFFD 4961 4957 495D 4952 - 4960 495F 4963 495C FFFD 495B FFFD FFFD - 4954 FFFD FFFD 4962 FFFD 4956 4959 495E - 4958 4953 FFFD FFFD FFFD FFFD 495A 4F7C - FFFD 5021 4F7E 5023 5025 FFFD FFFD FFFD - 4F7D FFFD 4F7B FFFD 5026 5024 5022 FFFD - 5028 FFFD 5027 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5029 5661 FFFD FFFD 5660 565F - FFFD 5662 565B FFFD 565C 5664 565D FFFD - FFFD 5666 FFFD 5665 565E FFFD 5C5D FFFD - 5C5B 5C60 5C5F 5663 FFFD FFFD FFFD 5C5E - 5C5A 5C62 5C61 FFFD FFFD 5C5C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 614D - 6546 6547 6548 FFFD FFFD FFFD FFFD FFFD - 686F FFFD 6B56 6B55 FFFD FFFD 6D49 6D4A - 6F24 7035 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2233 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 5B62 - srcEnd = 5B95 - mappingOffset = 0A80 - Mapping = - 2636 FFFD FFFD 2637 FFFD FFFD FFFD FFFD - FFFD FFFD 2E67 FFFD 3473 FFFD FFFD FFFD - 3472 FFFD FFFD FFFD FFFD 4964 FFFD FFFD - FFFD 5C63 FFFD FFFD FFFD FFFD FFFD 2153 - FFFD FFFD 2154 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 235C FFFD FFFD FFFD - 235D 2638 FFFD 2639 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 5BA7 - srcEnd = 5BAD - mappingOffset = 0AB4 - Mapping = - 2E68 2978 FFFD FFFD FFFD 2E6A 2E69 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 5BC0 - srcEnd = 5BF2 - mappingOffset = 0ABB - Mapping = - 3475 3474 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3B39 3B36 FFFD 3B35 3B3A FFFD - FFFD 3B38 FFFD FFFD 3B37 FFFD 424E FFFD - 424F 4250 FFFD FFFD FFFD FFFD FFFD FFFD - 4965 FFFD FFFD 4966 FFFD FFFD FFFD FFFD - FFFD FFFD 3B34 FFFD FFFD FFFD FFFD 5667 - FFFD 5C64 5C65 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 5C03 - srcEnd = 5CB6 - mappingOffset = 0AEE - Mapping = - 2E6B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3B3B FFFD FFFD FFFD 213C FFFD 2155 - FFFD FFFD 2234 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4251 FFFD FFFD FFFD - FFFD FFFD 2235 FFFD FFFD 235E FFFD 235F - FFFD FFFD FFFD FFFD FFFD 3B3C FFFD FFFD - 4252 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2156 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 263A FFFD FFFD 263B FFFD FFFD FFFD - FFFD 2979 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2E6D FFFD 2E6C FFFD FFFD 3476 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4967 FFFD FFFD FFFD 502A FFFD 614E 614F - FFFD FFFD 7036 212B FFFD FFFD FFFD FFFD - 2158 2157 FFFD FFFD FFFD FFFD FFFD 2237 - 2238 2236 FFFD 2239 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2367 FFFD 2362 2364 2366 - 2363 FFFD 2360 FFFD 2361 FFFD FFFD 2365 - 2368 FFFD 2369 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2649 FFFD 2643 263E FFFD 2646 - 2644 263D 264A 264D 2648 2641 FFFD 2647 - FFFD 2642 2645 263C 2640 264C FFFD FFFD - FFFD FFFD 263F 264B -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 5CC6 - srcEnd = 5CDF - mappingOffset = 0BA2 - Mapping = - 2A2C 2A25 2A2B 2A24 2A26 297E 297C FFFD - 2A2D 2A2A 297A FFFD FFFD 2A28 2A29 FFFD - 2A27 297D 297B FFFD 2A23 2A21 FFFD FFFD - 2A22 2A2E -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 5CEC - srcEnd = 5DE0 - mappingOffset = 0BBC - Mapping = - 2E6E FFFD 2E70 FFFD FFFD 2E71 FFFD FFFD - FFFD FFFD FFFD 2E72 2A2F 2E74 FFFD FFFD - FFFD FFFD FFFD 2E6F 2E73 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3478 - 347C 347E FFFD 3523 FFFD FFFD 3525 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 347A FFFD - FFFD 3479 3477 3527 347B FFFD FFFD 3526 - FFFD 3522 3521 FFFD 347D FFFD FFFD FFFD - FFFD FFFD 3528 FFFD 3524 3B4B 3B52 3B47 - FFFD 3B43 3B53 3B3D 3B50 3B4E 3B48 FFFD - 3B51 3B4A FFFD 3B42 3B54 3B40 3B4D 3B3E - FFFD 3B55 FFFD FFFD FFFD 3B4F 4255 3B41 - FFFD FFFD 3B45 FFFD FFFD 3B44 3B49 FFFD - FFFD 3B46 FFFD FFFD FFFD 3B4C FFFD FFFD - FFFD FFFD 4259 FFFD FFFD FFFD 425C 4254 - FFFD 4256 FFFD 425B 425A FFFD FFFD 3B3F - 4258 FFFD FFFD FFFD FFFD 4253 4257 FFFD - FFFD FFFD FFFD 496E FFFD 4975 496C FFFD - 4973 496A 4972 4976 4969 496D 4968 FFFD - FFFD FFFD 496B FFFD 4971 4970 496F FFFD - FFFD 4974 FFFD FFFD FFFD FFFD 502E 5030 - FFFD 5031 FFFD 502C FFFD 502B 5035 FFFD - 5033 FFFD 5036 502D 5032 5034 502F FFFD - FFFD FFFD FFFD 566B 5670 566A 566F FFFD - 5668 5672 566E 5673 566D 5669 5671 FFFD - 5674 566C FFFD 5C66 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6150 FFFD 643E 6549 - FFFD FFFD 6870 6871 FFFD FFFD FFFD 6B57 - FFFD FFFD FFFD 6B58 FFFD 6D4C FFFD FFFD - FFFD 6D4B FFFD FFFD 6F25 FFFD FFFD FFFD - FFFD FFFD FFFD 223A 236A -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 5DF0 - srcEnd = 5E8D - mappingOffset = 0CB1 - Mapping = - 425D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2A30 FFFD FFFD FFFD FFFD FFFD 213D - FFFD FFFD FFFD FFFD 2159 FFFD FFFD FFFD - FFFD FFFD 236B FFFD FFFD FFFD 236C FFFD - FFFD FFFD FFFD FFFD 264F FFFD FFFD 264E - FFFD 2650 FFFD FFFD FFFD FFFD FFFD FFFD - 2A34 2A31 2A32 2A33 2A35 FFFD FFFD FFFD - 2E76 2E75 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 352A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3529 FFFD - FFFD 3B57 FFFD FFFD 3B56 FFFD FFFD FFFD - FFFD FFFD 4260 4262 FFFD 4261 425F 425E - FFFD FFFD FFFD 4979 FFFD FFFD FFFD FFFD - 4977 4978 FFFD FFFD 503A 5038 FFFD FFFD - 5039 FFFD FFFD FFFD FFFD FFFD 5677 5675 - 5676 5037 5C68 FFFD 5C67 6151 6152 5678 - 654A FFFD FFFD FFFD FFFD 223B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 215A FFFD 215B FFFD 223C FFFD FFFD FFFD - 2370 236E FFFD 236D 236F 2371 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 5E9B - srcEnd = 5EB9 - mappingOffset = 0D4F - Mapping = - 2A39 FFFD FFFD FFFD FFFD FFFD FFFD 2A38 - 2A3A 2A37 2A3B FFFD FFFD 2E77 FFFD 2E79 - FFFD 2E7A FFFD 2E78 FFFD 2A36 352B 352E - 352F 352C FFFD FFFD FFFD FFFD 352D -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 5EC5 - srcEnd = 5EF2 - mappingOffset = 0D6E - Mapping = - 4263 4265 4267 FFFD FFFD FFFD 4266 4264 - FFFD 497D FFFD FFFD 497B 4A23 FFFD 4A24 - 4A21 FFFD 497C 497A 4A22 FFFD 503C 497E - FFFD 503D FFFD FFFD 503E FFFD FFFD FFFD - 567D 567B 567A 567C 5679 FFFD FFFD FFFD - FFFD 6872 6873 FFFD 6B59 6D4D -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 5F02 - srcEnd = 5F07 - mappingOffset = 0D9C - Mapping = - 223D FFFD FFFD 2372 FFFD 2A3C -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 5F1A - srcEnd = 5F58 - mappingOffset = 0DA2 - Mapping = - 223E FFFD FFFD 2373 FFFD FFFD FFFD FFFD - 2652 2653 2654 FFFD FFFD FFFD 2651 FFFD - FFFD FFFD FFFD FFFD 2A3D FFFD 2E7C FFFD - FFFD 2E7B FFFD FFFD 3530 FFFD 3531 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4268 FFFD - FFFD 4A26 4A25 FFFD FFFD FFFD FFFD 503F - FFFD 567E FFFD FFFD FFFD 6F27 FFFD FFFD - FFFD FFFD 2655 FFFD 2A3E FFFD 3B58 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 5F67 - srcEnd = 5F86 - mappingOffset = 0DE1 - Mapping = - 2E7D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4A27 FFFD FFFD FFFD 212C 223F FFFD 2375 - FFFD 2374 FFFD FFFD FFFD FFFD 2658 2657 - FFFD FFFD FFFD 2656 FFFD FFFD FFFD 2A3F -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 5F96 - srcEnd = 6072 - mappingOffset = 0E01 - Mapping = - 3533 FFFD FFFD FFFD FFFD 3532 FFFD FFFD - FFFD 3534 FFFD FFFD FFFD FFFD FFFD 3B5A - 3B59 FFFD FFFD FFFD FFFD 3B5B FFFD 426A - FFFD 4269 FFFD FFFD 5040 FFFD FFFD FFFD - 4A28 FFFD FFFD FFFD FFFD 5722 5721 FFFD - 5C69 654B 6874 6875 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 215C FFFD FFFD FFFD FFFD - FFFD 2242 2378 2377 2376 FFFD 2241 2240 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2659 FFFD FFFD 237D FFFD 2421 237E 265A - FFFD FFFD 237A FFFD FFFD FFFD FFFD 2379 - 237B 2423 FFFD FFFD FFFD 237C 2427 FFFD - FFFD 2424 FFFD FFFD 2422 2425 FFFD FFFD - FFFD FFFD 2426 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 266E 2661 265F 266D 2668 - FFFD FFFD 2669 266C FFFD 266B FFFD FFFD - FFFD 2662 FFFD 265D 2664 FFFD 266F FFFD - 2665 FFFD FFFD FFFD 2667 FFFD 2A4E FFFD - 265C FFFD FFFD FFFD FFFD FFFD 2666 265B - 266A FFFD FFFD FFFD 265E 2663 2660 FFFD - FFFD 2A40 FFFD 2A41 FFFD FFFD FFFD FFFD - FFFD FFFD 2A4B 2F23 2A4C FFFD 2A4F 2A45 - FFFD 2A47 FFFD 2A48 FFFD FFFD 2A4A FFFD - FFFD FFFD FFFD FFFD FFFD 2A46 2A42 FFFD - FFFD FFFD 2A50 FFFD 2F21 2A49 FFFD 2E7E - 2A44 2A4D FFFD FFFD FFFD FFFD FFFD FFFD - 2A51 2F22 FFFD FFFD FFFD FFFD FFFD FFFD - 2A52 FFFD FFFD FFFD 2A43 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 6080 - srcEnd = 60A2 - mappingOffset = 0EDE - Mapping = - 2F26 2F28 FFFD 2F2A FFFD FFFD 3537 2F2E - 2F25 FFFD 3535 FFFD FFFD FFFD 2F30 FFFD - 3536 FFFD 2F27 FFFD FFFD 2F2B FFFD 2F2D - FFFD FFFD FFFD 2F2C 2F2F 2F29 FFFD FFFD - FFFD FFFD 2F24 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 60B0 - srcEnd = 60E4 - mappingOffset = 0F01 - Mapping = - 3539 3542 FFFD FFFD FFFD FFFD FFFD 3544 - FFFD 3B5D 353A FFFD FFFD FFFD 3538 3546 - 3549 3B6C FFFD 3547 3B61 FFFD FFFD FFFD - 3541 3B5C 3545 FFFD 3B5E 3548 3B60 353D - FFFD FFFD FFFD 353B 353C FFFD FFFD FFFD - FFFD 353F FFFD 3543 FFFD 3540 FFFD FFFD - FFFD FFFD 3B5F FFFD 353E -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 60F2 - srcEnd = 622D - mappingOffset = 0F36 - Mapping = - 3B63 FFFD FFFD 3B67 FFFD 426B 3B69 FFFD - FFFD FFFD 3B6A FFFD 3B6B 3B71 FFFD FFFD - FFFD 3B6D 3B72 3B66 FFFD FFFD FFFD FFFD - 3B64 3B73 FFFD FFFD FFFD FFFD 3B70 FFFD - FFFD 3B68 3B62 FFFD 3B65 FFFD 3B6E FFFD - FFFD FFFD FFFD 3B6F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4A2A 4276 - FFFD 426E 4A29 FFFD 4272 4274 FFFD FFFD - 4271 FFFD FFFD FFFD 4270 FFFD FFFD FFFD - FFFD 4A39 FFFD FFFD FFFD FFFD 4277 4A2B - FFFD FFFD FFFD 426F 4273 FFFD FFFD 426C - 426D FFFD FFFD FFFD FFFD 4275 FFFD FFFD - 4A2F 4A30 4A35 FFFD 4A3C FFFD FFFD FFFD - FFFD 4A37 FFFD FFFD 4A2C FFFD FFFD 4A3B - FFFD FFFD FFFD 4A38 5051 FFFD FFFD FFFD - 4A3A FFFD 4A32 FFFD FFFD FFFD FFFD 4A2D - 4A31 4A2E 4A34 FFFD FFFD FFFD FFFD 5043 - 4A36 FFFD FFFD FFFD FFFD FFFD 4A33 FFFD - FFFD 5042 FFFD FFFD FFFD FFFD FFFD 5047 - FFFD 5041 572E 5050 FFFD FFFD FFFD FFFD - 504D 5049 FFFD FFFD 5725 FFFD FFFD FFFD - FFFD 5048 FFFD 5723 FFFD 504C FFFD 504F - 5046 FFFD FFFD FFFD FFFD FFFD 5724 FFFD - 504E FFFD FFFD 504B FFFD 504A 5045 5044 - FFFD 5052 5727 5C6B FFFD FFFD 572D FFFD - 572B FFFD 5C6C FFFD FFFD 572C FFFD 5729 - FFFD 5C6A FFFD 5726 5728 FFFD FFFD FFFD - FFFD FFFD 572A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 615B FFFD 6153 FFFD - FFFD FFFD FFFD FFFD 5C72 6154 5C6E FFFD - FFFD FFFD 5C70 5C6F FFFD 5C6D 5C71 615C - 6158 615A FFFD 6155 6156 FFFD 6159 6157 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6876 - FFFD 654C FFFD 6B5A FFFD FFFD FFFD 6F28 - FFFD 6F29 6F2A FFFD FFFD 722A FFFD 215D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2670 FFFD FFFD FFFD FFFD 2F31 - FFFD FFFD FFFD FFFD FFFD FFFD 4278 FFFD - FFFD 427A 427C 427B FFFD 4A3E FFFD 4A3D - FFFD 4A3F FFFD 5053 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 623A - srcEnd = 6294 - mappingOffset = 1072 - Mapping = - 2428 FFFD FFFD 2671 FFFD FFFD FFFD FFFD - 2A53 2A54 FFFD FFFD 2F32 FFFD FFFD FFFD - 3B74 FFFD FFFD FFFD FFFD FFFD 215E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2249 - 224B FFFD 2243 FFFD 2244 FFFD 224A 2246 - 2248 FFFD 2245 224C 2247 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2432 242F - 2437 FFFD 2438 FFFD FFFD 2435 FFFD FFFD - 2431 2430 FFFD 2436 FFFD FFFD FFFD 2433 - FFFD 2429 FFFD FFFD FFFD 242E 2434 FFFD - FFFD FFFD 242A FFFD 242B 242C FFFD FFFD - FFFD FFFD 242D -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 62A9 - srcEnd = 62BE - mappingOffset = 10CD - Mapping = - 267D 2676 FFFD FFFD 2672 2679 267B 267E - FFFD FFFD 267A 2673 FFFD 2677 FFFD 2721 - FFFD FFFD 267C FFFD FFFD 2675 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 62CA - srcEnd = 62D1 - mappingOffset = 10E3 - Mapping = - 2678 FFFD FFFD FFFD FFFD 2A55 FFFD 2674 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 62EB - srcEnd = 6315 - mappingOffset = 10EB - Mapping = - 2A5B FFFD FFFD FFFD FFFD 2A67 FFFD 2F33 - FFFD FFFD 2A58 2A60 FFFD 2A5F 2A5C 2A64 - 2A66 FFFD FFFD FFFD FFFD 2A61 FFFD FFFD - 2A5A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2A57 2A5E 2A56 2A59 2A5D 2F34 FFFD FFFD - 2A62 2A63 2A65 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 6329 - srcEnd = 63B1 - mappingOffset = 1116 - Mapping = - 2F40 FFFD FFFD 2F36 2F46 FFFD FFFD FFFD - FFFD 354A 2F48 2F42 FFFD 2F39 FFFD 2F4B - 2F3C FFFD 3561 2F3F FFFD FFFD FFFD 2F4D - 2F41 FFFD 2F3A 2F37 2F38 FFFD 2F47 2F4E - FFFD 2F3E 2F3D FFFD FFFD FFFD FFFD FFFD - 2F4A FFFD FFFD 2F44 FFFD 2F35 2F4C 2F43 - 2F45 2F49 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 354B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 355D 3559 3556 3568 - FFFD FFFD FFFD FFFD 355B FFFD FFFD 3563 - FFFD FFFD FFFD 355F 354E FFFD FFFD FFFD - 3565 354D FFFD FFFD 3564 FFFD 3557 FFFD - FFFD 354C FFFD FFFD 3567 3555 FFFD 3558 - 3566 FFFD FFFD 3B75 FFFD FFFD 3553 FFFD - FFFD FFFD FFFD 355C 3552 3550 3562 FFFD - FFFD FFFD FFFD 3560 FFFD FFFD FFFD FFFD - FFFD FFFD 3554 FFFD 3551 355E 355A 3B77 - 3B76 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 63BD - srcEnd = 63F6 - mappingOffset = 119F - Mapping = - 354F 3C29 FFFD FFFD FFFD 3C2F 3B7C 3C2C - 427D FFFD 3C30 3C33 FFFD 3C21 3C32 3C31 - FFFD 3B78 FFFD FFFD FFFD FFFD 3C2E FFFD - 3C24 FFFD 3C35 3C2D 3C36 FFFD FFFD 3C2B - 3C2A FFFD 3C28 3C22 FFFD FFFD FFFD 2F3B - 3B79 FFFD 433D 3B7A FFFD FFFD 4321 FFFD - FFFD FFFD 3B7B 3C34 427E 3C25 3B7E FFFD - 3C26 3C23 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 6409 - srcEnd = 64B1 - mappingOffset = 11D9 - Mapping = - 4324 4337 433C 4330 FFFD 4341 FFFD 4322 - FFFD 4323 FFFD FFFD 432A FFFD FFFD 432B - FFFD 4338 433E FFFD FFFD FFFD 4329 4325 - 4340 432E 432F 4326 433A 4331 433B 4333 - FFFD FFFD 4A40 FFFD FFFD 433F 4336 4332 - FFFD FFFD 4327 FFFD 4335 FFFD 432D FFFD - 432C FFFD FFFD FFFD FFFD FFFD 4A55 4339 - 4334 FFFD 4328 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4A50 FFFD 4A41 4A4C FFFD 4A53 - FFFD FFFD 4A51 FFFD FFFD FFFD FFFD FFFD - 4A58 FFFD 4A42 4A4F 4A43 4A4E FFFD 4A52 - 3C27 FFFD FFFD FFFD 4A59 4A4A FFFD 5061 - FFFD FFFD 4A57 4A56 FFFD 5054 FFFD 5055 - FFFD 4A46 4A47 4A44 4A49 4A45 4A5A FFFD - FFFD FFFD FFFD FFFD 4A48 FFFD 4A54 FFFD - FFFD 4A4D FFFD FFFD 5058 FFFD FFFD FFFD - 5735 505D 505C 505E FFFD FFFD 505B FFFD - FFFD FFFD FFFD FFFD FFFD 5056 5059 5063 - FFFD FFFD FFFD 505A 3B7D FFFD 5060 5057 - FFFD FFFD 505F FFFD FFFD 4A4B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5062 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 64BD - srcEnd = 65E1 - mappingOffset = 1282 - Mapping = - 5734 FFFD FFFD FFFD FFFD FFFD 5736 FFFD - FFFD FFFD FFFD FFFD 5733 FFFD FFFD FFFD - FFFD FFFD 5732 5731 FFFD FFFD FFFD FFFD - FFFD 5730 572F FFFD 5739 FFFD 5737 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5C75 5C77 - FFFD FFFD FFFD 5C78 5C74 FFFD 5C76 FFFD - FFFD FFFD 5C73 FFFD FFFD FFFD 5738 FFFD - FFFD FFFD FFFD 6160 FFFD FFFD FFFD 6163 - 615F FFFD 615D FFFD 6161 FFFD 6162 615E - FFFD FFFD 654D FFFD 6550 FFFD FFFD 6551 - 654F 6552 FFFD 654E FFFD FFFD 687A FFFD - 6879 6878 6877 FFFD FFFD FFFD 6B5B FFFD - FFFD FFFD FFFD 6D4F 6D4E 6D51 FFFD FFFD - 6F2C 6D50 FFFD FFFD 6F2B FFFD FFFD FFFD - 7037 707D FFFD FFFD FFFD 3C37 573A FFFD - FFFD FFFD 224D FFFD FFFD FFFD FFFD FFFD - 2722 FFFD FFFD FFFD 2A68 FFFD 2A69 FFFD - FFFD 2F50 FFFD FFFD FFFD 2F4F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3569 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3C3B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3C3A - 3C3D FFFD 3C38 3C3C FFFD 3C39 FFFD FFFD - FFFD FFFD 4342 FFFD FFFD FFFD 4A5B FFFD - FFFD 5064 FFFD FFFD 5066 5065 5067 573C - FFFD FFFD 573B 5C7A 5C79 FFFD FFFD 6553 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3C3E - FFFD FFFD FFFD FFFD FFFD 4343 FFFD 6164 - FFFD 6F2D FFFD FFFD FFFD FFFD FFFD FFFD - 3C3F 3C40 FFFD 4A5C FFFD 573D FFFD FFFD - FFFD FFFD FFFD 2723 FFFD 2A6A FFFD FFFD - FFFD 3C41 FFFD FFFD FFFD 5068 5069 FFFD - FFFD 5C7B FFFD 707E FFFD FFFD 2724 FFFD - FFFD FFFD 2A6B FFFD FFFD 2F54 2F52 2F53 - FFFD 2F51 FFFD FFFD FFFD FFFD FFFD FFFD - 356A FFFD FFFD 3C42 FFFD 3C43 4344 FFFD - FFFD FFFD FFFD FFFD FFFD 5C7C 6165 FFFD - 6555 6554 687B FFFD 213E -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 65EE - srcEnd = 663A - mappingOffset = 13A7 - Mapping = - 224F 224E 2439 FFFD 243C 243B 243A 243D - FFFD FFFD FFFD FFFD FFFD 272A 2726 272F - FFFD FFFD FFFD FFFD FFFD 272B 2727 272E - FFFD FFFD 2729 2725 FFFD 272C FFFD 272D - FFFD FFFD 2731 2730 2728 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2A70 2A76 - FFFD FFFD FFFD 2A6D 2A72 FFFD FFFD FFFD - 2A71 FFFD FFFD FFFD FFFD 2A74 FFFD FFFD - 2A79 FFFD FFFD FFFD 2A6E 2A73 2A77 2A6F - 2A6C FFFD FFFD 2A78 2A75 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 6647 - srcEnd = 6723 - mappingOffset = 13F4 - Mapping = - 2F57 FFFD FFFD 2F55 FFFD FFFD FFFD FFFD - FFFD FFFD 2F58 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 356E FFFD 356D 356F FFFD FFFD - 2F56 FFFD 356C 3570 FFFD FFFD 356B FFFD - FFFD FFFD FFFD 3C4A FFFD 3C45 FFFD FFFD - FFFD FFFD 3C48 3C4B FFFD FFFD FFFD FFFD - FFFD 434D 3C49 FFFD 3C46 3C44 FFFD FFFD - FFFD 3C47 FFFD FFFD FFFD FFFD FFFD 4345 - FFFD FFFD FFFD 434A 4349 4346 FFFD FFFD - FFFD 4348 FFFD FFFD FFFD 434C 4347 FFFD - FFFD FFFD 434B FFFD FFFD FFFD FFFD FFFD - 4A5F 4A5E 4A5D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 506C 506F FFFD FFFD FFFD FFFD - 5070 506B FFFD 506D FFFD FFFD 506A FFFD - 506E FFFD FFFD 5746 5745 FFFD 5744 573F - FFFD 5740 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 573E FFFD 5741 5742 5747 FFFD FFFD - 5743 FFFD FFFD 5C7D FFFD FFFD FFFD FFFD - FFFD 6168 FFFD 6166 6167 FFFD FFFD 6556 - FFFD FFFD FFFD FFFD 687D 687E FFFD FFFD - FFFD 687C FFFD FFFD 6F2E FFFD 7038 7039 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2732 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3C4C FFFD FFFD 4A61 4A60 FFFD - FFFD FFFD FFFD 2733 FFFD FFFD FFFD FFFD - 2A7A 2A7B FFFD 2F59 2F5A FFFD FFFD FFFD - FFFD 3571 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 434E 4641 4A62 5748 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 6733 - srcEnd = 675D - mappingOffset = 14D1 - Mapping = - 2257 FFFD FFFD FFFD FFFD 2252 2251 2254 - 2253 2256 FFFD 2250 2255 FFFD FFFD FFFD - FFFD FFFD 243E FFFD 243F 2443 FFFD FFFD - 2447 2442 2445 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2441 FFFD FFFD FFFD 2440 2446 - FFFD FFFD 2444 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 676C - srcEnd = 679F - mappingOffset = 14FC - Mapping = - 2735 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 273D FFFD 2738 FFFD 2747 2748 2740 2739 - FFFD 2745 FFFD FFFD FFFD 2746 FFFD 2744 - 273C 2734 273B FFFD FFFD FFFD FFFD FFFD - 273F 273E 2736 FFFD FFFD 2742 2737 FFFD - 2749 FFFD FFFD FFFD 273A 2743 FFFD FFFD - FFFD FFFD FFFD 2741 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 67AE - srcEnd = 67FC - mappingOffset = 1530 - Mapping = - 2B3D FFFD FFFD FFFD 2B38 2B2E FFFD 2B2C - FFFD 2B27 FFFD 2B34 2B21 2B23 FFFD FFFD - FFFD FFFD 2B26 2A7C 2B33 2B43 FFFD 2B28 - 2B3A FFFD 2A7E 2B41 2B42 2B45 2B3C 2B2D - 2B35 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2B25 FFFD FFFD 2B3F 2B22 FFFD - FFFD 2B2B FFFD FFFD FFFD 2B32 2B2A FFFD - 2B3E 2B36 FFFD FFFD 2B44 2B29 FFFD 2B3B - 2B31 FFFD 2B37 FFFD 2A7D FFFD FFFD FFFD - 2B30 2B2F 2B24 FFFD 2B40 FFFD 2B39 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 6812 - srcEnd = 684F - mappingOffset = 157F - Mapping = - 2F6E FFFD 2F6F FFFD 2F63 FFFD FFFD FFFD - 2F5C FFFD 2F65 2F6D FFFD 2F5B 2F76 FFFD - FFFD FFFD FFFD 2F75 2F70 FFFD 2F71 FFFD - FFFD 2F67 FFFD 2F68 2F72 2F69 FFFD 2F64 - 2F5E 2F5F 2F6C 2F66 FFFD FFFD FFFD FFFD - 2F74 2F60 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2F6B FFFD FFFD FFFD FFFD 2F5D - FFFD 2F61 FFFD 2F73 2F6A 2F62 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 686B - srcEnd = 68B4 - mappingOffset = 15BD - Mapping = - 3628 FFFD 3576 3577 357B FFFD 362C 3629 - FFFD 3622 3621 FFFD 3625 3634 3572 FFFD - 3635 3627 3639 362D FFFD 362B FFFD FFFD - FFFD FFFD FFFD FFFD 3573 FFFD 3632 3638 - 3630 3637 FFFD FFFD 3624 3574 3636 3626 - FFFD FFFD FFFD 362F FFFD FFFD FFFD FFFD - 362E 3575 FFFD FFFD FFFD 3631 FFFD FFFD - 357C 3633 FFFD FFFD FFFD FFFD 357E 362A - 3579 357D FFFD 3578 FFFD FFFD FFFD 3623 - FFFD 3C63 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 68C6 - srcEnd = 6917 - mappingOffset = 1607 - Mapping = - 3C66 3C7C 3C71 FFFD FFFD FFFD 3C60 FFFD - 3C70 FFFD 3C69 3C76 FFFD 3C4E 3C78 FFFD - 3C56 FFFD FFFD FFFD FFFD FFFD 3C50 3C72 - 3C73 FFFD FFFD 3C5E FFFD FFFD 3C59 FFFD - 3C74 FFFD 3C6C 3C79 3C53 3C58 3C52 FFFD - FFFD 3C65 4364 3C54 FFFD 3C5D 3C75 FFFD - 3C5A 3C57 3C68 FFFD FFFD FFFD 3C6B 3C6A - FFFD FFFD FFFD FFFD FFFD FFFD 3C4F FFFD - 3C77 3C5F 3C61 FFFD 3C6E 3C6D 3C4D FFFD - FFFD 3C55 3C5C 3C64 FFFD 3C5B 3C67 3C7A - FFFD 3C6F -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 6925 - srcEnd = 6B60 - mappingOffset = 1659 - Mapping = - 3C7B FFFD FFFD FFFD FFFD 3C51 FFFD FFFD - FFFD FFFD 4378 FFFD FFFD 4376 4361 4366 - 435F FFFD 4372 4351 4358 FFFD 4370 437A - 4362 FFFD 4355 4368 436D 4359 FFFD 436A - 4356 FFFD FFFD 435D 435E FFFD 4371 436F - FFFD 4352 4374 FFFD 4375 4377 FFFD FFFD - FFFD 357A 435A 436C 435B FFFD FFFD 4373 - FFFD FFFD 4350 FFFD FFFD 4353 FFFD FFFD - 4363 434F FFFD FFFD 4367 4357 FFFD 4360 - FFFD FFFD 4369 3C62 4354 FFFD FFFD 436E - FFFD 436B FFFD 4365 FFFD 435C 4379 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 452C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4A70 4A6E FFFD 4B26 4A6C FFFD 4A7E FFFD - FFFD 4A68 4B25 FFFD 4A6D 4A7B FFFD FFFD - FFFD 4B23 FFFD 4A66 4B22 FFFD FFFD 4A77 - 4B29 FFFD 4A6F FFFD 4A71 4B21 FFFD 4A6A - FFFD FFFD 4A73 4A69 4A63 FFFD 4A7D FFFD - 4B28 4A64 FFFD FFFD 4A79 FFFD FFFD 4A6B - 4A76 4A72 4A74 FFFD FFFD 4B27 FFFD 4A75 - FFFD 4B2A FFFD FFFD 4A65 4A7A FFFD FFFD - FFFD 4A67 4A7C FFFD FFFD FFFD FFFD 4A78 - FFFD FFFD FFFD FFFD 4B24 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 507C FFFD 5078 - 5074 512A 5127 FFFD FFFD FFFD 512E 507B - FFFD 5124 FFFD FFFD 5077 5123 FFFD 5137 - FFFD 5134 5126 5075 FFFD FFFD 512B 512D - FFFD 5121 507A 5071 FFFD FFFD FFFD 5130 - FFFD 5072 5136 5129 512F FFFD FFFD FFFD - 512C FFFD 5133 FFFD FFFD FFFD FFFD 5125 - 5076 5138 5073 5131 FFFD FFFD 507D FFFD - 507E FFFD FFFD 5079 FFFD FFFD FFFD FFFD - 5132 5135 5122 5755 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 574D FFFD 5749 - FFFD FFFD FFFD FFFD FFFD FFFD 5757 5762 - FFFD 574F 5758 5128 5759 FFFD FFFD FFFD - FFFD 5768 FFFD FFFD 574B FFFD FFFD FFFD - 5766 5767 575D 575C 5754 FFFD FFFD 575E - 5765 5764 FFFD FFFD FFFD 5756 5753 FFFD - 5750 5763 FFFD 5761 FFFD FFFD FFFD 575B - FFFD 574A 574C 574E 5760 575A FFFD FFFD - 5751 FFFD 575F FFFD FFFD FFFD FFFD FFFD - FFFD 5752 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5D31 FFFD 5D22 FFFD 5D2D FFFD - 5D34 FFFD 5D29 FFFD 5D24 FFFD FFFD 5D35 - 5C7E 5D2B FFFD FFFD 5D30 5D36 5D2A FFFD - 5D2C 5D21 FFFD FFFD FFFD 5D33 5D26 FFFD - FFFD 5D28 5D25 FFFD 5D27 FFFD FFFD 5D2F - 5D23 5D32 FFFD 5D2E FFFD FFFD FFFD FFFD - 6173 FFFD FFFD FFFD FFFD FFFD FFFD 6172 - FFFD 616F 6170 FFFD 616A 616E FFFD FFFD - 616B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6169 616D 6171 FFFD FFFD FFFD 655C 6559 - 6562 FFFD 6561 655F 655A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 655B FFFD FFFD 655E - FFFD 6563 655D 6558 616C FFFD FFFD FFFD - FFFD FFFD 6557 6924 FFFD 6923 6560 FFFD - FFFD 6927 6928 6922 6926 FFFD 6921 FFFD - FFFD FFFD FFFD 6B5F 6925 FFFD FFFD 6B5D - FFFD FFFD FFFD 6B60 FFFD 6B5C 6B5E FFFD - FFFD FFFD FFFD 6D53 6D54 FFFD 6D52 FFFD - FFFD FFFD 6F31 FFFD 6F2F 6F30 703A FFFD - FFFD FFFD 7123 7121 7122 7124 FFFD FFFD - FFFD 722B FFFD FFFD FFFD FFFD FFFD FFFD - 274A FFFD FFFD 2B46 FFFD FFFD FFFD 2F77 - 2F79 FFFD 2F78 FFFD 2F7A FFFD 363B 2F7B - FFFD 363A 363C 363D 3C7D FFFD 3C7E 3D22 - FFFD FFFD 3D21 FFFD 4422 437E 437D FFFD - 437C 437B FFFD 4421 FFFD 4B2B 4B2D FFFD - 4B2C FFFD FFFD FFFD 5139 FFFD FFFD 576A - 5769 576B FFFD FFFD FFFD FFFD 5D37 FFFD - FFFD 6174 FFFD 6564 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 6B6D - srcEnd = 6C9D - mappingOffset = 1895 - Mapping = - 2F7C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5259 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 274C FFFD 274B FFFD 2B47 FFFD 2B48 - FFFD FFFD FFFD 2F7E FFFD FFFD FFFD 3642 - 3640 3641 363F FFFD 363E FFFD FFFD 3D23 - 3D26 FFFD 3D24 FFFD 3D25 FFFD 4423 FFFD - FFFD 4B2E 4B2F 4B30 FFFD 513C 513B FFFD - 513A 513D 576C FFFD FFFD 576D 576E FFFD - 5D38 FFFD FFFD 6565 FFFD FFFD 213F FFFD - FFFD 2B49 FFFD FFFD FFFD FFFD FFFD FFFD - 3D27 FFFD FFFD FFFD FFFD FFFD 4B31 4B32 - FFFD FFFD 5770 576F 6175 6F32 FFFD 2140 - FFFD FFFD FFFD 2448 FFFD FFFD FFFD FFFD - FFFD 2B4A FFFD 2B4B FFFD FFFD FFFD FFFD - FFFD 274D FFFD 2B4C FFFD 3025 3024 3022 - FFFD 3021 3026 3023 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3D28 FFFD 3D29 3D2A FFFD - FFFD FFFD 4427 4428 4426 FFFD 4424 4425 - FFFD 4B33 5140 513F 513E 5141 5772 5771 - FFFD 5773 FFFD FFFD 5D39 FFFD 6176 6566 - 6D55 FFFD FFFD FFFD FFFD FFFD FFFD 2141 - 215F FFFD FFFD 2258 2449 244A FFFD FFFD - 274E FFFD FFFD 2B4D 2B4E FFFD FFFD FFFD - 3027 FFFD FFFD FFFD FFFD 3643 FFFD FFFD - FFFD FFFD FFFD 3D2B FFFD FFFD FFFD FFFD - FFFD 2160 FFFD FFFD FFFD FFFD 2163 FFFD - FFFD FFFD 2162 FFFD FFFD FFFD 2161 FFFD - FFFD 2259 FFFD FFFD FFFD 225D 225F 2260 - FFFD FFFD 225C FFFD FFFD 225A FFFD 225E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 225B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 245B 2459 244C FFFD 2453 FFFD 244D FFFD - 2455 FFFD 2452 FFFD 2451 FFFD 245A FFFD - FFFD FFFD FFFD 244B FFFD FFFD 245C FFFD - FFFD FFFD FFFD 2765 FFFD FFFD FFFD 244E - FFFD FFFD 2456 FFFD FFFD 2763 244F FFFD - FFFD 245D 2450 FFFD FFFD FFFD 274F FFFD - 2457 FFFD FFFD FFFD FFFD 2454 FFFD 2458 - 2764 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 6CAD - srcEnd = 6D42 - mappingOffset = 19C6 - Mapping = - 2756 FFFD FFFD 276B FFFD FFFD FFFD 2762 - FFFD 2754 2758 FFFD FFFD 275B FFFD FFFD - FFFD FFFD FFFD 2767 FFFD 275A 275C FFFD - FFFD 275D 276A FFFD FFFD FFFD FFFD FFFD - 2769 FFFD 276D 2759 276F 2760 FFFD 2755 - FFFD FFFD FFFD FFFD 2753 2B57 FFFD FFFD - 2761 2766 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2757 FFFD 276E FFFD 2751 2750 - 275E 2752 FFFD FFFD FFFD 275F FFFD FFFD - FFFD FFFD FFFD FFFD 276C FFFD FFFD FFFD - FFFD FFFD FFFD 2B5E 2B61 FFFD 2B64 2B59 - FFFD FFFD 2B67 2B6A 2B6C 2B56 FFFD FFFD - 302C FFFD 2B65 2B6D 2B5D 2B55 FFFD FFFD - FFFD 3047 FFFD 2B62 2B5A 2B5C FFFD FFFD - 2B5F FFFD 2B52 2B68 FFFD 2B6B FFFD FFFD - FFFD FFFD FFFD 2B4F FFFD FFFD FFFD 2B69 - 2B51 FFFD 3041 2768 FFFD FFFD 2B58 2B50 - FFFD FFFD 2B63 FFFD FFFD 2B5B FFFD 2B53 - FFFD FFFD 2B54 2B66 FFFD 2B60 -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 6D58 - srcEnd = 6D98 - mappingOffset = 1A5C - Mapping = - 302F FFFD FFFD FFFD FFFD FFFD 3038 303E - 303A 302D 3030 3029 302A FFFD FFFD 3039 - 3042 FFFD FFFD FFFD FFFD 3031 FFFD 3032 - 303C FFFD FFFD FFFD FFFD 304B 302B FFFD - FFFD FFFD 3028 3049 303D 304A 3044 3036 - 3045 FFFD 303F 3048 3046 FFFD 3037 FFFD - FFFD FFFD FFFD 3043 FFFD 3034 FFFD FFFD - 304C 3033 302E FFFD FFFD FFFD FFFD 303B - 3040 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 6DAB - srcEnd = 6E03 - mappingOffset = 1A9D - Mapping = - 3645 3649 FFFD FFFD FFFD FFFD FFFD FFFD - 3647 3646 FFFD FFFD 364C FFFD FFFD 365E - 366A FFFD 365B 3654 FFFD 3644 FFFD 3660 - FFFD FFFD FFFD FFFD FFFD 3650 3662 365A - FFFD FFFD 3668 FFFD 3661 3663 FFFD FFFD - 3665 364E 365F 3653 3667 FFFD FFFD FFFD - 3658 3656 3657 FFFD 3652 3651 FFFD 364B - 3669 FFFD 3655 FFFD FFFD FFFD 364A FFFD - FFFD FFFD 365C FFFD 3035 365D FFFD 3664 - FFFD 3659 FFFD 364D FFFD FFFD FFFD FFFD - FFFD 3D2C 3666 FFFD FFFD 364F FFFD FFFD - 3D41 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 6E1C - srcEnd = 6E79 - mappingOffset = 1AF6 - Mapping = - 3D3B FFFD FFFD 3D2F FFFD FFFD 3D4D FFFD - FFFD FFFD FFFD 3D51 3D48 FFFD FFFD 3D36 - FFFD FFFD 3D42 FFFD 3D4E 3D47 FFFD 3D3C - FFFD 3D59 3D5A FFFD FFFD 3D4C FFFD 3D40 - 3D32 3D33 FFFD 3D37 3D3E 3D38 FFFD FFFD - FFFD 3D34 3D2D 3D2E FFFD 3D30 FFFD 3D3D - FFFD FFFD FFFD FFFD FFFD 3D3F 3D57 3D4F - FFFD 3D55 FFFD FFFD FFFD FFFD 3D5B FFFD - 3D45 3D39 3D43 FFFD 3D49 3D46 3D35 FFFD - 3D53 3D50 3D58 FFFD 3D44 FFFD FFFD 3D4B - FFFD FFFD FFFD FFFD FFFD 3D4A FFFD 3D3A - 3648 FFFD FFFD 3D54 3D52 3D56 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 6E88 - srcEnd = 6EDC - mappingOffset = 1B54 - Mapping = - 3D31 FFFD FFFD FFFD FFFD 4447 4446 442C - FFFD FFFD 4445 442F 4430 FFFD FFFD 444E - FFFD 4444 FFFD 4429 FFFD FFFD 4438 442E - 4431 4449 FFFD 4450 4448 FFFD 443D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 444F FFFD - 443B 4432 443F 444B FFFD FFFD FFFD 443A - FFFD 4433 FFFD FFFD FFFD 4436 4440 444A - 442D 4437 FFFD 4441 FFFD FFFD 4434 FFFD - 442B 4439 444D FFFD FFFD 443C 4B34 443E - 444C FFFD 4435 FFFD FFFD FFFD 442A FFFD - 4443 FFFD FFFD FFFD 4442 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 6EEB - srcEnd = 70E2 - mappingOffset = 1BA9 - Mapping = - 4B50 FFFD 4B45 4B4A FFFD FFFD 4B36 FFFD - FFFD FFFD 4B35 4B56 FFFD 4B39 4B49 FFFD - 4B3B 4B59 4B55 FFFD FFFD 515B FFFD FFFD - 4B37 FFFD 4B54 FFFD 4B51 4B5E 4B3D 4B46 - FFFD FFFD 4B5C 4B52 FFFD FFFD FFFD 4B44 - FFFD FFFD FFFD FFFD FFFD 4B42 4B3F 4B40 - FFFD 4B58 FFFD 4B5D 4B5B FFFD 4B5F FFFD - FFFD FFFD 4B38 5143 4B41 FFFD FFFD FFFD - FFFD FFFD 4B4B 4B3C FFFD 4B4D FFFD FFFD - FFFD FFFD 4B4F 4B47 4B3A FFFD 4B57 4B5A - 4B43 4B4E FFFD FFFD FFFD 4B4C 5142 FFFD - 4B53 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4B3E 514C 5156 FFFD 5155 - 5161 FFFD 5153 FFFD 5157 FFFD FFFD 514E - FFFD FFFD 515A 577B FFFD FFFD 515C 514B - 5166 FFFD FFFD FFFD 515F FFFD 5163 5168 - 515D 5151 FFFD FFFD FFFD FFFD FFFD 5154 - 4B48 FFFD FFFD 5150 5167 FFFD FFFD FFFD - 5169 FFFD 515E 5144 5164 FFFD FFFD 5152 - FFFD FFFD 514D FFFD 5145 FFFD 5149 FFFD - 5162 514A 5148 FFFD FFFD 5160 FFFD 5147 - 5159 5158 5165 514F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 577E FFFD FFFD FFFD 582C - 5776 FFFD 5824 FFFD FFFD 5822 5D3B 5828 - 582E 5827 5774 5825 5830 5832 FFFD 5831 - FFFD FFFD FFFD FFFD FFFD 582B FFFD 5826 - FFFD 5778 577D FFFD 582A FFFD FFFD FFFD - FFFD 577C FFFD 5146 5777 577A 582D 5821 - 5775 5D3A 582F 5779 5829 FFFD FFFD FFFD - FFFD 5D3D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5D3F 5D45 5D43 FFFD FFFD FFFD 5D46 - 5D3E FFFD FFFD 5D42 5D41 5D47 FFFD FFFD - FFFD FFFD 5D40 FFFD FFFD FFFD FFFD 5D44 - FFFD 5D3C FFFD FFFD 6225 FFFD FFFD FFFD - 6222 6224 FFFD FFFD 617E 6221 617A FFFD - FFFD 5823 617B FFFD 6177 FFFD FFFD 6226 - FFFD 6178 6179 617D FFFD FFFD FFFD FFFD - FFFD 617C FFFD 656A 6570 FFFD 6567 FFFD - FFFD 6572 FFFD FFFD FFFD 6569 656C 656D - 656E 6571 FFFD 6223 6568 FFFD 656F 6934 - 656B FFFD FFFD FFFD 692B FFFD 692E FFFD - 6937 692D 692A FFFD 692C 6930 6933 6932 - 6936 6929 FFFD FFFD 6931 6935 6938 692F - 6B61 6B62 6B66 6B67 FFFD 6B64 6B65 6B63 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6D59 - FFFD FFFD 6D56 6D57 6D58 FFFD FFFD 6F34 - 6F33 FFFD 703D FFFD 703B 703E 703C 7125 - FFFD FFFD 7171 715B FFFD 7170 723E 723F - FFFD FFFD FFFD FFFD FFFD FFFD 2261 FFFD - FFFD 245E FFFD FFFD FFFD FFFD FFFD 245F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2778 - 277A 2775 2772 2774 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2776 FFFD - 2773 2770 FFFD 2777 FFFD 2771 FFFD 2779 - FFFD FFFD FFFD FFFD 2B6F FFFD 2B73 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2B76 FFFD - FFFD FFFD FFFD FFFD FFFD 2B72 2B71 FFFD - FFFD 2B74 2B75 FFFD 2B6E FFFD FFFD FFFD - FFFD FFFD FFFD 2B70 FFFD FFFD FFFD FFFD - FFFD FFFD 305A 305B 305C FFFD FFFD FFFD - 3051 FFFD 3059 305E FFFD FFFD 304F 3055 - 304E 3058 FFFD FFFD 3054 FFFD FFFD 305D - FFFD 304D 3050 3056 FFFD 3057 305F 3053 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 70F0 - srcEnd = 7229 - mappingOffset = 1DA1 - Mapping = - 3671 FFFD FFFD 3673 366F FFFD 367B 366D - 367A FFFD 366B 3D5F 3675 FFFD FFFD 3676 - 3679 FFFD 367D FFFD 3672 FFFD 3677 FFFD - FFFD FFFD FFFD 367C 3670 366C 367E FFFD - 3674 FFFD FFFD 3678 FFFD FFFD FFFD 366E - FFFD FFFD FFFD 3D69 FFFD FFFD 3D5D 3D66 - 3D5C FFFD 3D64 3D62 FFFD 3D63 FFFD FFFD - 3D67 FFFD FFFD FFFD FFFD FFFD 3D60 3D5E - FFFD 3D61 3D65 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3D68 FFFD FFFD FFFD FFFD FFFD - FFFD 4456 445D 445F 4465 FFFD FFFD 4451 - FFFD FFFD FFFD 4460 FFFD 4466 FFFD FFFD - 4463 FFFD 4453 4464 4452 FFFD FFFD FFFD - 445E FFFD 4467 FFFD FFFD 4457 FFFD 4462 - 4455 445C 4458 4454 FFFD FFFD FFFD FFFD - FFFD FFFD 445B FFFD FFFD FFFD FFFD FFFD - 4461 FFFD 4459 FFFD FFFD FFFD FFFD FFFD - 445A FFFD FFFD 4B67 FFFD FFFD FFFD FFFD - 4B63 4B69 4B65 FFFD FFFD 4B64 4B68 4B60 - FFFD 4B62 FFFD FFFD FFFD FFFD FFFD 4B66 - 4B61 FFFD FFFD FFFD FFFD FFFD FFFD 4B6A - FFFD FFFD 516F 516C 5178 5172 5174 FFFD - 516E 5176 FFFD FFFD 5175 5173 FFFD 5179 - FFFD 5170 5177 FFFD FFFD FFFD FFFD 516B - 516D FFFD 516A 517A FFFD 5171 FFFD FFFD - 5836 FFFD FFFD FFFD 5841 583F FFFD 5835 - 5838 5839 5834 FFFD FFFD 5833 5842 583D - FFFD FFFD 583C 583A FFFD FFFD FFFD 583E - FFFD FFFD FFFD FFFD 583B FFFD 5837 FFFD - 5840 FFFD 5843 5844 FFFD FFFD FFFD FFFD - FFFD 5D48 5D4E FFFD 5D4C FFFD FFFD FFFD - 5D4A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5D4D 5D49 5D4B FFFD FFFD FFFD FFFD FFFD - FFFD 6229 FFFD FFFD FFFD 622B FFFD 6228 - FFFD 6227 6576 622A FFFD 6577 FFFD 6575 - FFFD FFFD 6574 FFFD 6573 FFFD FFFD FFFD - FFFD FFFD FFFD 6939 693A FFFD FFFD FFFD - FFFD 6B6A 6B69 FFFD FFFD 6B68 6D5A 6D5B - FFFD FFFD 6F35 703F FFFD FFFD 7126 722C - FFFD 7240 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 723F - srcEnd = 7432 - mappingOffset = 1EDB - Mapping = - 2142 FFFD 2B77 3060 FFFD 4B6B FFFD FFFD - FFFD FFFD 2B78 2B79 3D6A FFFD FFFD FFFD - 4468 FFFD FFFD FFFD 4B6C FFFD FFFD FFFD - FFFD FFFD FFFD 3D6B FFFD FFFD FFFD 2262 - FFFD FFFD FFFD FFFD 2460 FFFD FFFD FFFD - FFFD FFFD FFFD 277B FFFD 2B7A FFFD 2B7D - FFFD 2B7B FFFD FFFD 2B7C FFFD FFFD 3063 - 3062 3061 FFFD FFFD 3722 3723 FFFD 3721 - 3724 FFFD FFFD FFFD FFFD FFFD 3D6F 3D6E - FFFD 3D6C 3D6D FFFD 3D70 446A 4469 446D - FFFD 446C 446B FFFD 4B6F FFFD 4B6E FFFD - 4B6D 517B FFFD 517C FFFD FFFD 5845 5846 - FFFD FFFD 657C FFFD 657B 657A 6578 6579 - FFFD 693B 6D5C 7127 FFFD FFFD FFFD 2164 - FFFD 2165 FFFD FFFD FFFD 2263 2264 FFFD - FFFD FFFD FFFD 2466 FFFD FFFD 2462 FFFD - 2461 FFFD 2465 FFFD 2463 FFFD 2467 2464 - FFFD FFFD 2821 2B7E 277D 2826 FFFD FFFD - FFFD FFFD 2827 2823 FFFD 2824 FFFD 277C - FFFD 277E FFFD 2825 FFFD 2822 FFFD FFFD - 2C24 FFFD FFFD FFFD 2C27 2C21 FFFD 2C26 - FFFD 2C22 FFFD 2C25 2C23 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3069 3066 FFFD 3068 - FFFD FFFD FFFD 3065 306A FFFD FFFD 3067 - 372C 3064 306B FFFD FFFD FFFD FFFD FFFD - 3727 372B FFFD 372A 3D72 3D7D FFFD FFFD - 372D FFFD 3728 3D71 FFFD FFFD FFFD FFFD - 3726 3729 FFFD FFFD FFFD FFFD 3725 372E - FFFD FFFD FFFD 3D74 3D7B FFFD FFFD 3D7A - 3D77 FFFD FFFD FFFD FFFD FFFD 3D79 FFFD - FFFD 3D73 3D75 3D78 3D76 FFFD 3D7C FFFD - FFFD FFFD FFFD 4471 4470 446E FFFD FFFD - FFFD 4472 FFFD 446F 4B70 FFFD FFFD FFFD - FFFD FFFD 4474 4473 FFFD 4B73 4B71 FFFD - FFFD FFFD 4B72 517E FFFD FFFD FFFD FFFD - FFFD 517D 5228 5227 5225 FFFD 5224 5221 - 5222 5223 5226 5229 FFFD FFFD 584B 5848 - 5849 FFFD 5847 584D 584C 584A FFFD 5D50 - 5D51 FFFD FFFD FFFD 5D4F FFFD FFFD 622C - FFFD FFFD FFFD FFFD FFFD 693D 693C 6B6B - 6D5D FFFD 6F37 6F36 6F38 FFFD 2C28 FFFD - FFFD 372F FFFD 2166 FFFD FFFD FFFD 2265 - FFFD FFFD FFFD 246C 246A 246B 2468 FFFD - 2469 FFFD FFFD FFFD FFFD FFFD 282F FFFD - FFFD 282D 2829 282C FFFD 2828 FFFD 282B - FFFD FFFD FFFD FFFD FFFD 282E 282A FFFD - FFFD FFFD FFFD FFFD FFFD 2C30 2C2F 2C2E - FFFD 2C37 2C2D FFFD FFFD 3070 FFFD 2C34 - 2C32 FFFD FFFD 2C2A 2C35 FFFD 2C2C 2C36 - 2C33 2C2B FFFD FFFD 2C38 2C29 FFFD FFFD - FFFD FFFD FFFD 3075 306C 3077 FFFD 306F - 307A 307B 306D 3079 3076 3074 3078 FFFD - FFFD FFFD FFFD FFFD 3072 FFFD 306E FFFD - 3071 307C 3073 FFFD 2C31 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 373D 3732 3730 - FFFD 3731 FFFD 3738 FFFD 3739 3735 FFFD - 373A 3737 3734 FFFD FFFD 3733 FFFD FFFD - 3736 373E FFFD FFFD 373C 373B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3E24 - FFFD FFFD FFFD 3E25 FFFD FFFD 3E2B FFFD - FFFD 3E2D 3E26 FFFD 3E2A 3E29 FFFD FFFD - FFFD FFFD 3E2C FFFD 3E23 3E21 3E27 3D7E - FFFD 3E22 3E28 3E2E -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 7440 - srcEnd = 7548 - mappingOffset = 20CF - Mapping = - 447B FFFD 4521 FFFD 4475 FFFD 4522 FFFD - FFFD FFFD 4476 4477 FFFD 4523 447E 447C - 447D 4479 4478 FFFD 4524 FFFD FFFD 447A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4B74 FFFD FFFD FFFD FFFD 4B79 - FFFD FFFD FFFD FFFD FFFD FFFD 4B7A FFFD - FFFD 4B76 4B78 4B75 FFFD 4B77 FFFD FFFD - FFFD 5233 FFFD FFFD 5232 522F FFFD 584E - FFFD 522E FFFD FFFD FFFD 5230 522D 522A - 5231 522B 522C FFFD FFFD FFFD FFFD FFFD - 5D55 FFFD 5852 FFFD 5851 5853 FFFD 5D52 - FFFD FFFD 584F FFFD FFFD FFFD FFFD FFFD - 5850 5854 FFFD FFFD FFFD 5D59 FFFD FFFD - FFFD FFFD 5D56 5D54 FFFD 5D57 FFFD 5D5A - FFFD 5D58 5D53 FFFD FFFD 622F 6232 6621 - 622D FFFD 693E 6233 FFFD FFFD 6231 FFFD - 622E 6230 6234 6622 FFFD 657E FFFD FFFD - FFFD FFFD FFFD 657D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6D5F FFFD 6D61 - 6D5E 6D60 FFFD 7040 FFFD 2830 307D 307E - FFFD 4525 FFFD FFFD FFFD 7041 FFFD FFFD - 2831 FFFD FFFD FFFD 2C39 FFFD 2C3A FFFD - FFFD FFFD FFFD FFFD 3121 3122 FFFD FFFD - FFFD FFFD FFFD 3E2F FFFD 4528 4527 4526 - 4B7B FFFD 4B7C 4B7D FFFD FFFD FFFD 5235 - 5234 FFFD FFFD 5855 FFFD FFFD FFFD 5D5E - 5D5B 5D5C 5D5D 6236 6235 FFFD 6623 6B6C - FFFD FFFD FFFD FFFD FFFD 4529 FFFD FFFD - FFFD 3123 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2266 FFFD FFFD FFFD 2C3B 3E30 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 246E 246D FFFD FFFD FFFD 2834 2832 - 2833 FFFD FFFD FFFD FFFD FFFD FFFD 2C3C - 2C3D -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 755B - srcEnd = 7598 - mappingOffset = 21D8 - Mapping = - 3124 FFFD FFFD FFFD 3125 FFFD FFFD FFFD - 3740 373F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3E32 FFFD FFFD 3E31 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 452B FFFD 452A FFFD - FFFD FFFD 4B7E 5236 FFFD 5856 FFFD FFFD - FFFD 5D5F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2835 FFFD FFFD FFFD 4C21 FFFD FFFD - FFFD 246F 2470 FFFD FFFD 2836 -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 75A7 - srcEnd = 776F - mappingOffset = 2216 - Mapping = - 2C3E FFFD FFFD 2C3F FFFD FFFD FFFD FFFD - FFFD 3126 FFFD FFFD FFFD FFFD FFFD 312C - FFFD FFFD FFFD 312D 3128 FFFD FFFD FFFD - 312B 312A 3127 FFFD FFFD 3129 FFFD FFFD - FFFD FFFD FFFD FFFD 3744 3745 FFFD 3741 - 3743 3747 3746 3742 FFFD FFFD FFFD FFFD - 3E3A FFFD FFFD 3E34 FFFD FFFD 3E37 FFFD - 3E38 FFFD 3E35 FFFD FFFD 3E39 FFFD 3E36 - 3E33 FFFD FFFD FFFD FFFD FFFD 4538 FFFD - 452D FFFD FFFD FFFD FFFD FFFD 4539 4537 - 4530 4534 4533 FFFD 4536 4532 453A 4531 - FFFD FFFD FFFD FFFD 452F FFFD FFFD FFFD - FFFD 4C23 FFFD 4C27 FFFD 4C24 FFFD FFFD - 452E 4535 4C26 FFFD FFFD 4C28 4C25 4C22 - FFFD FFFD 5239 523D 523F 523B 523A 5238 - FFFD FFFD FFFD FFFD 523C FFFD 5237 FFFD - FFFD 523E FFFD FFFD FFFD FFFD 5858 FFFD - 5857 585F 5859 585E 585B FFFD 585D FFFD - FFFD FFFD FFFD FFFD FFFD 585C 585A FFFD - FFFD FFFD FFFD FFFD 5D60 FFFD FFFD FFFD - 5D63 5D61 5D62 FFFD FFFD FFFD FFFD FFFD - FFFD 623A FFFD FFFD 623B FFFD FFFD FFFD - 623C FFFD 6239 623D FFFD 6237 FFFD FFFD - FFFD 6624 FFFD FFFD FFFD 6238 FFFD FFFD - FFFD FFFD FFFD 6B6D FFFD FFFD 6D62 FFFD - FFFD 6F39 FFFD FFFD FFFD FFFD 723A FFFD - FFFD FFFD 2C40 FFFD FFFD FFFD FFFD FFFD - 2267 FFFD 2471 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3749 312E FFFD FFFD FFFD FFFD - 3748 FFFD FFFD 3E3C FFFD FFFD 3E3B FFFD - FFFD FFFD 453B FFFD 5243 5240 5241 5242 - FFFD FFFD FFFD FFFD FFFD 5D64 FFFD 623E - FFFD FFFD FFFD 6940 693F FFFD 6D63 FFFD - 2837 FFFD FFFD FFFD FFFD FFFD 453C FFFD - FFFD 4C29 FFFD FFFD 5860 FFFD 623F 6941 - FFFD FFFD FFFD FFFD FFFD 2C41 FFFD FFFD - FFFD FFFD 312F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 374A FFFD FFFD FFFD - FFFD FFFD FFFD 3E3D FFFD FFFD 453D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5861 - FFFD FFFD 5D65 FFFD FFFD 6240 6942 FFFD - FFFD 283A 2839 FFFD 2838 FFFD 283B FFFD - 2C47 FFFD FFFD 2C49 2C48 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2C43 2C44 2C45 FFFD - FFFD 2C42 FFFD 2C46 FFFD FFFD FFFD FFFD - FFFD 3132 3136 3134 3133 FFFD 3137 FFFD - FFFD FFFD 3138 3139 3131 FFFD 3130 FFFD - FFFD FFFD FFFD 313A 3135 FFFD 3753 FFFD - 313B FFFD FFFD FFFD FFFD FFFD 374D FFFD - 374C FFFD 374E 374F 3751 3750 3755 FFFD - FFFD FFFD 374B FFFD 3754 FFFD 3752 FFFD - FFFD FFFD FFFD FFFD FFFD 3E40 3E42 3E3E - 3E3F FFFD FFFD 3E43 3E45 3E46 3E41 3E44 - FFFD FFFD FFFD 4541 FFFD 4546 453E 4542 - FFFD FFFD 4547 4543 FFFD FFFD FFFD FFFD - 453F 4540 FFFD FFFD FFFD FFFD FFFD FFFD - 4545 FFFD 4544 FFFD FFFD FFFD 4548 4C2E - 4C30 -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 777C - srcEnd = 7813 - mappingOffset = 23DF - Mapping = - 4C2B FFFD 4C31 FFFD 4C2F 4C2A 4C2D 4C32 - FFFD 4C2C FFFD FFFD 5247 5246 FFFD FFFD - FFFD 5244 FFFD 5245 FFFD FFFD FFFD FFFD - FFFD 5869 FFFD 586B FFFD 586A 5862 5866 - 5865 5863 FFFD FFFD FFFD 5864 5867 5868 - FFFD FFFD FFFD FFFD 5D6D FFFD FFFD 5D67 - FFFD FFFD FFFD FFFD FFFD 5D6C 5D68 FFFD - 5D6B 5D66 5D6A 5D69 FFFD FFFD 6242 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6241 FFFD - 6627 FFFD FFFD FFFD FFFD 6625 6626 FFFD - 6943 6946 6944 6945 6B6E FFFD FFFD FFFD - 6F3A 7042 FFFD FFFD 7128 7129 FFFD FFFD - FFFD FFFD 3E47 FFFD 4549 FFFD FFFD FFFD - FFFD FFFD FFFD 2C4A 2C4B FFFD FFFD FFFD - 3E48 FFFD FFFD FFFD 5D6E 6628 6947 FFFD - FFFD FFFD FFFD 2841 283C 283E 2840 283F - 283D FFFD FFFD FFFD FFFD FFFD FFFD 2C54 - FFFD 2C4F 2C4C FFFD FFFD 2C53 FFFD FFFD - FFFD FFFD 2C52 2C51 2C50 2C4D 2C4E 2C55 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 7821 - srcEnd = 7835 - mappingOffset = 2477 - Mapping = - 3144 313E 313C FFFD FFFD 375C FFFD 3141 - 3145 3147 3143 313D FFFD 3142 3140 FFFD - 3148 FFFD 3146 FFFD 313F -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 7845 - srcEnd = 7AC1 - mappingOffset = 248C - Mapping = - 375D FFFD FFFD 3756 3758 375A FFFD 375B - 3759 FFFD FFFD 375E FFFD 3757 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3E4C - FFFD 3E54 FFFD 3E49 FFFD 3E55 FFFD 3E4A - 3E4B FFFD FFFD 3E53 3E52 3E4F FFFD FFFD - 3E4D 3E50 FFFD 3E51 3E4E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4554 FFFD 4558 FFFD - FFFD 4C38 FFFD 4556 FFFD FFFD 4553 454E - 4550 4551 454A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 454D FFFD FFFD FFFD FFFD 454C - 454F 4557 FFFD FFFD 4555 454B FFFD FFFD - FFFD 4C3A FFFD 4C3C 4552 4C3E FFFD 4C3F - 4C3B FFFD FFFD 4C37 FFFD 4C34 4C39 4C3D - 4C36 FFFD FFFD FFFD FFFD 4C33 FFFD 4C35 - FFFD FFFD FFFD FFFD FFFD FFFD 5249 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5250 5251 - FFFD FFFD FFFD 524F 5252 FFFD FFFD 524B - 5248 524D 524A FFFD 524C FFFD FFFD 524E - FFFD FFFD FFFD FFFD FFFD FFFD 5872 FFFD - 586C 5870 5876 5877 5873 5874 5871 FFFD - 586E FFFD FFFD FFFD 586D 586F FFFD FFFD - 5875 FFFD FFFD FFFD FFFD 5D75 5D6F FFFD - FFFD FFFD FFFD FFFD 5D77 FFFD 5D72 5D73 - 5D70 5D78 5D74 FFFD FFFD 5D71 FFFD 5D79 - 5D76 FFFD FFFD FFFD 6246 FFFD FFFD 6243 - FFFD FFFD FFFD 6247 6249 6248 6244 6245 - FFFD FFFD 662D FFFD FFFD FFFD 662A 662C - 6629 662E FFFD FFFD 662B FFFD 6949 694C - 6948 FFFD 694A 694B 694D FFFD FFFD FFFD - 6B6F FFFD 6B71 FFFD 6B70 FFFD FFFD FFFD - 6D64 FFFD FFFD 7043 712A FFFD FFFD FFFD - 2472 FFFD 2843 FFFD FFFD 2842 FFFD 2C5A - 2C59 FFFD FFFD FFFD FFFD 2C56 2C58 2C57 - FFFD FFFD 314B FFFD 314F 314E 314D 3149 - FFFD FFFD FFFD FFFD FFFD FFFD 314A 314C - FFFD FFFD FFFD FFFD 3765 FFFD 3763 375F - FFFD FFFD 3760 FFFD 3761 3762 3764 FFFD - FFFD FFFD FFFD 3E59 FFFD 3E58 3E57 3E56 - FFFD FFFD FFFD FFFD 455C FFFD FFFD 4559 - 455B FFFD FFFD FFFD FFFD 455A FFFD FFFD - FFFD FFFD FFFD 4C48 FFFD 4C41 4C42 FFFD - FFFD FFFD FFFD 4C4A FFFD 4C49 4C46 4C45 - 4C44 4C43 4C47 4C40 FFFD 5253 5258 5256 - FFFD FFFD FFFD 5255 5254 5257 FFFD 5878 - FFFD FFFD FFFD 5D7B FFFD FFFD 5D7A 624B - 624A FFFD FFFD 662F FFFD 694E FFFD 6D65 - FFFD 7045 7044 2167 FFFD FFFD 3766 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2844 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2C5C 2C5F 2C5D FFFD FFFD FFFD FFFD FFFD - 2C5B 2C5E FFFD FFFD FFFD FFFD FFFD 3156 - 3158 3157 FFFD 3152 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3155 3150 3151 - 3154 3153 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3769 376A 3768 FFFD 3767 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3E5A 3E5C 3E5E - FFFD FFFD FFFD FFFD FFFD 3E5B FFFD 3E5D - FFFD FFFD FFFD 4566 455D 4560 4564 FFFD - 4562 FFFD 4561 455E 455F FFFD 4565 FFFD - FFFD FFFD FFFD FFFD FFFD 4563 FFFD FFFD - FFFD 4C50 FFFD 4C4F FFFD FFFD 4C4B FFFD - FFFD FFFD 4C4E 4C4D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 525A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5879 - FFFD FFFD 587B 587A FFFD 4C4C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5E22 - FFFD 5D7E FFFD 5E21 FFFD 5E23 5D7D 5D7C - FFFD FFFD 624C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6630 6631 FFFD FFFD FFFD 6950 - 6951 694F FFFD 6D66 6D67 FFFD FFFD FFFD - 2268 FFFD FFFD 2845 FFFD FFFD 2846 FFFD - FFFD 2C61 FFFD 2C60 FFFD FFFD FFFD FFFD - 315B 3159 315F FFFD 315A 315E 315C 315D - FFFD FFFD 376B 376D FFFD FFFD FFFD 376C - FFFD FFFD FFFD FFFD 3E5F FFFD FFFD FFFD - FFFD 4569 FFFD FFFD FFFD 4568 4567 FFFD - FFFD FFFD FFFD 4C51 FFFD FFFD 4C52 4C53 - FFFD FFFD FFFD FFFD 5921 525B 525D 525C - 587E 587C 5922 587D FFFD FFFD FFFD FFFD - FFFD 5E24 FFFD 5E25 5E26 -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 7AD1 - srcEnd = 7AD8 - mappingOffset = 2709 - Mapping = - 2C62 FFFD FFFD FFFD FFFD FFFD FFFD 3160 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 7AE4 - srcEnd = 7BBE - mappingOffset = 2711 - Mapping = - 3E61 FFFD 3E60 FFFD FFFD FFFD FFFD 456A - FFFD FFFD 4C54 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6952 FFFD FFFD FFFD 2847 - FFFD FFFD FFFD FFFD 2C63 2C64 FFFD FFFD - 3162 3164 FFFD FFFD 3166 3169 3167 FFFD - FFFD FFFD 3168 3165 3161 FFFD 316A 3163 - FFFD FFFD FFFD FFFD 3776 FFFD 3821 FFFD - FFFD 3778 FFFD FFFD FFFD FFFD 3773 3822 - 3774 3771 FFFD FFFD FFFD FFFD 3777 377A - FFFD 377B FFFD 377C 3772 3779 377D 3775 - 3770 376E FFFD FFFD 377E FFFD FFFD 376F - FFFD FFFD FFFD FFFD 3E68 FFFD FFFD FFFD - 3E64 3E6A FFFD 3E63 3E65 FFFD 3E62 FFFD - 3E66 FFFD 3E67 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3E69 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4575 FFFD 4578 - 456C 4571 456B FFFD FFFD 456F FFFD FFFD - FFFD 456D FFFD FFFD 4574 4573 4570 4572 - 456E FFFD 4577 FFFD 4576 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4C64 FFFD - FFFD 4C5F FFFD FFFD 4C55 FFFD 4C57 FFFD - 4C5C 4C5B 4C5E FFFD 4C59 4C58 FFFD FFFD - FFFD FFFD 4C5A FFFD 4C60 4C62 FFFD 4C5D - 4C56 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4C63 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5261 FFFD FFFD 5263 FFFD FFFD FFFD FFFD - FFFD 5266 FFFD 525E FFFD 5264 FFFD FFFD - FFFD FFFD 5260 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 7BCA - srcEnd = 7CD7 - mappingOffset = 27EC - Mapping = - 5265 525F FFFD FFFD 5262 FFFD FFFD FFFD - FFFD FFFD 592C 5927 FFFD FFFD 5931 FFFD - 5929 FFFD 592F 5926 5923 5932 FFFD FFFD - 592E 5924 FFFD 5928 FFFD 5925 592A FFFD - 592D 5930 FFFD FFFD FFFD FFFD 5E38 5E39 - 5E29 5E30 5E2E FFFD FFFD FFFD 5E35 592B - FFFD 5E2C FFFD 5E36 FFFD 5E2B 5E2A 5E34 - 5E31 5E33 FFFD 5E27 5E37 FFFD FFFD 5E32 - 5E3B 5E2F FFFD FFFD 5E2D 5E28 5E3A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 624F - FFFD FFFD 624D 6253 FFFD 6251 6250 FFFD - 6256 FFFD FFFD 6257 6254 FFFD 6255 624E - FFFD FFFD 6635 6252 FFFD FFFD 6258 FFFD - FFFD 6632 FFFD FFFD FFFD FFFD FFFD 6634 - FFFD 6636 6633 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6957 FFFD 6956 6954 6953 - 6955 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6B73 6B72 FFFD FFFD 6D68 FFFD 6D6A - 6D6C 6D6B 6D69 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6F3C 6F3B FFFD 712B - 7046 712C FFFD FFFD FFFD 715C FFFD FFFD - FFFD FFFD FFFD 2848 FFFD FFFD 2C66 2C67 - 2C65 FFFD FFFD FFFD FFFD 2C68 2C69 2C6A - FFFD FFFD 316B 3171 FFFD FFFD 316F FFFD - 316D FFFD 316E 3170 FFFD FFFD FFFD 316C - FFFD FFFD 3823 FFFD 3825 FFFD 3824 FFFD - FFFD FFFD FFFD FFFD 3E6C FFFD FFFD 3E6E - 3E6B 3826 FFFD FFFD FFFD FFFD 3E6D FFFD - FFFD FFFD FFFD FFFD FFFD 457B FFFD FFFD - 4579 FFFD 457A FFFD FFFD FFFD FFFD FFFD - 4C68 4C65 4C67 FFFD FFFD 4C66 FFFD FFFD - FFFD FFFD FFFD 5267 FFFD FFFD 5268 FFFD - FFFD 526A 5269 FFFD FFFD FFFD 5936 5937 - 5933 FFFD 5934 FFFD FFFD 5935 -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 7CE8 - srcEnd = 7E9B - mappingOffset = 28FA - Mapping = - 5E3C FFFD 6638 FFFD 6637 FFFD 6958 FFFD - FFFD 6D6E 6B74 FFFD 6D6D FFFD 712D 7172 - FFFD FFFD FFFD FFFD FFFD 2849 FFFD FFFD - FFFD 2C6D FFFD 2C6B FFFD FFFD FFFD FFFD - 2C6C FFFD FFFD FFFD 317C FFFD 3175 317B - FFFD 3174 317A 3178 FFFD FFFD 3177 FFFD - 3176 FFFD FFFD FFFD FFFD 3173 3172 3179 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3835 382E FFFD FFFD 382D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3827 382A FFFD - 3829 FFFD 382B 3834 FFFD 3828 3831 3832 - FFFD 382F FFFD FFFD FFFD 382C FFFD 3830 - FFFD FFFD 3833 FFFD FFFD FFFD 3F21 3E76 - FFFD 3E7D 3E7A 3E72 3E7B FFFD 3E73 FFFD - 3E6F FFFD FFFD FFFD 3E78 FFFD FFFD 3E7E - FFFD FFFD FFFD 3E71 FFFD FFFD FFFD 3E74 - FFFD 3E7C 3E75 3E79 FFFD 3E77 FFFD 3E70 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4624 4626 4628 462C FFFD 4622 - 457E FFFD FFFD 4627 462B 4623 457D FFFD - 457C FFFD FFFD FFFD 4629 4621 4625 FFFD - FFFD FFFD 462D FFFD 462A FFFD 4C79 FFFD - FFFD FFFD FFFD FFFD FFFD 4C71 FFFD 4C7B - FFFD 4D21 FFFD 4C6C FFFD FFFD 4C7C 4C69 - FFFD 4C7E 4C6D FFFD FFFD FFFD 4C7D 4C77 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4C6A - FFFD 4C78 FFFD FFFD 4C7A FFFD FFFD FFFD - 4C6F 4C6E 4C6B FFFD 4C73 4C70 4C74 FFFD - FFFD 4D22 FFFD 4C75 4C76 FFFD 4C72 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 526F - FFFD FFFD FFFD 526C FFFD FFFD FFFD 5278 - FFFD 5270 FFFD FFFD FFFD FFFD 5273 526E - FFFD FFFD 526D FFFD FFFD FFFD 5277 FFFD - 5276 5275 FFFD 503B FFFD FFFD 5274 526B - FFFD FFFD 5272 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5271 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5944 593B 5947 593F 5945 - FFFD FFFD 5938 593E 5948 5941 5946 593A - FFFD FFFD 5942 FFFD 5940 FFFD FFFD 593C - 593D 5939 5943 FFFD 594A 5949 FFFD FFFD - FFFD 5E47 5E43 FFFD FFFD 5E3D FFFD FFFD - 5E49 FFFD FFFD 5E40 FFFD FFFD 5E4B FFFD - 5E42 FFFD 5E4D 5E4A 5E3E FFFD FFFD FFFD - 5E45 FFFD 5E3F FFFD 5E4C FFFD FFFD 5E46 - FFFD 5E44 FFFD FFFD 5E48 FFFD FFFD FFFD - 625A 6260 FFFD 6263 FFFD FFFD 625B 6262 - 625D FFFD FFFD FFFD 6259 FFFD FFFD 625F - 6261 FFFD 625E 625C FFFD FFFD FFFD FFFD - 6642 FFFD FFFD FFFD FFFD FFFD FFFD 663E - 663C FFFD 6640 FFFD 6641 663A 6639 663D - 663B FFFD 663F 6959 FFFD FFFD 695A FFFD - 695C 695B FFFD FFFD FFFD FFFD 6B79 6B76 - 6B77 FFFD 6B75 6B78 FFFD 6B7A FFFD FFFD - FFFD 6D6F FFFD FFFD FFFD 6F3D FFFD 7047 - 712F 7131 712E 7130 -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 7F39 - srcEnd = 80E6 - mappingOffset = 2AAE - Mapping = - 3052 FFFD FFFD FFFD FFFD 3F22 3F23 FFFD - FFFD FFFD 594B FFFD 5E4E FFFD FFFD FFFD - FFFD 6644 6643 FFFD 6B7B FFFD 6D70 FFFD - 2269 FFFD FFFD FFFD FFFD FFFD FFFD 2C6E - FFFD FFFD 3224 317D 3223 3221 FFFD 3222 - 317E FFFD 3836 FFFD 3F24 3F25 4630 4631 - FFFD FFFD 462F 4632 462E FFFD FFFD FFFD - FFFD FFFD 4D23 FFFD FFFD 5279 FFFD FFFD - FFFD 594E 594C 594D 5E51 5E50 5E4F FFFD - FFFD FFFD 6645 FFFD FFFD 6646 6D71 FFFD - 7048 FFFD FFFD FFFD 2C70 FFFD FFFD FFFD - 2C6F 3226 FFFD FFFD 3837 3225 FFFD FFFD - FFFD FFFD 383A 3838 3839 FFFD FFFD 3F27 - 3F28 3F26 FFFD FFFD 4634 4633 4635 FFFD - FFFD FFFD FFFD 527A 527C FFFD FFFD 527B - 594F FFFD 6265 FFFD 6264 FFFD 6647 FFFD - FFFD 695D 6B7C FFFD FFFD 2C71 FFFD 3229 - FFFD 3228 3227 FFFD FFFD FFFD 3840 FFFD - 3842 383B 383C FFFD 383D FFFD 3841 383E - 383F FFFD FFFD FFFD FFFD FFFD 3F29 FFFD - FFFD FFFD 4636 4637 FFFD 4D27 FFFD FFFD - FFFD 4D24 4D25 FFFD 4D26 5323 FFFD 5324 - FFFD 5321 527E 5322 527D FFFD 5950 FFFD - FFFD 5E53 FFFD 5E52 6134 FFFD 6266 6267 - FFFD FFFD FFFD FFFD 6648 6649 695E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2C72 FFFD - FFFD FFFD FFFD FFFD FFFD 2C73 2C74 FFFD - FFFD FFFD FFFD 2C75 FFFD 322A FFFD FFFD - FFFD FFFD 3845 FFFD FFFD 3844 3843 FFFD - 4638 FFFD FFFD 4D28 FFFD FFFD FFFD FFFD - 5952 5951 FFFD 5E54 FFFD FFFD FFFD 6B7D - FFFD FFFD FFFD 2473 284A FFFD 2C76 FFFD - 322C FFFD FFFD FFFD FFFD 322B FFFD FFFD - FFFD FFFD 3847 FFFD FFFD FFFD 3846 3848 - FFFD FFFD FFFD FFFD FFFD FFFD 3F2B 3F2C - 3F2A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4D2A 4D29 FFFD FFFD FFFD - FFFD FFFD FFFD 5325 FFFD FFFD 5326 FFFD - FFFD FFFD FFFD 5953 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6268 FFFD FFFD 664A - 695F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2F7D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2168 FFFD FFFD FFFD FFFD 284B 2476 - FFFD 2477 FFFD FFFD 2474 FFFD FFFD FFFD - 2475 FFFD FFFD 2478 FFFD FFFD FFFD FFFD - FFFD FFFD 284D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2850 284C FFFD FFFD - FFFD FFFD FFFD FFFD 284F FFFD FFFD 284E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2C7C FFFD FFFD 2C7E FFFD 2C78 2C7B - 2D26 2D24 FFFD FFFD 2D2A FFFD 2D27 2C7D - 2C7A FFFD FFFD 3F2E 2D25 FFFD 2D28 2C77 - 2D22 FFFD FFFD 2D23 FFFD FFFD FFFD 2C79 - FFFD FFFD 2D21 FFFD FFFD 2D29 -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 80F2 - srcEnd = 8101 - mappingOffset = 2C5C - Mapping = - 322E FFFD FFFD 3230 FFFD FFFD FFFD 322F - 322D 3232 FFFD FFFD 3F2D FFFD 3233 3231 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 8115 - srcEnd = 812D - mappingOffset = 2C6C - Mapping = - 3852 FFFD FFFD 3849 384B FFFD 384C FFFD - 3854 3850 384E FFFD 3851 3855 FFFD FFFD - 384A FFFD 3853 FFFD FFFD FFFD FFFD 384F - 384D -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 813A - srcEnd = 8177 - mappingOffset = 2C85 - Mapping = - 3F36 FFFD FFFD 3F34 FFFD FFFD FFFD FFFD - FFFD 3F2F 4646 FFFD FFFD 3F33 FFFD FFFD - 3F30 FFFD FFFD 3F35 FFFD 3F32 FFFD FFFD - 3F31 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 463E 463C FFFD 4642 FFFD 463A 4647 - 463F FFFD 4639 FFFD FFFD 4644 FFFD 463D - FFFD FFFD FFFD FFFD FFFD 4645 FFFD FFFD - 4640 FFFD FFFD FFFD 4643 463B -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 8183 - srcEnd = 82C3 - mappingOffset = 2CC3 - Mapping = - 4D2D FFFD FFFD 4D2C 4D2E FFFD 4D2B FFFD - 4D31 4D30 4D2F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 532A FFFD 532D FFFD 532C FFFD - FFFD FFFD FFFD 5329 5328 FFFD FFFD 532B - 5327 FFFD FFFD 5955 595F FFFD FFFD FFFD - 5959 595B FFFD 5956 FFFD 595A 5954 595D - FFFD 595C 5958 FFFD 595E FFFD 5957 FFFD - 5E55 5E5B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5E56 5E59 FFFD 5E5A FFFD FFFD 5E58 - FFFD 5E57 FFFD FFFD FFFD 626B 6269 626A - FFFD FFFD 664C FFFD 664B FFFD 6961 FFFD - 6960 FFFD 6B7E 6D72 FFFD 7132 7133 FFFD - FFFD FFFD FFFD 3F37 FFFD FFFD 5E5C FFFD - FFFD FFFD FFFD 3F38 FFFD FFFD FFFD 5960 - FFFD FFFD FFFD FFFD 3F39 3F3A 3F3B FFFD - FFFD FFFD FFFD FFFD 2D2B FFFD 3234 FFFD - FFFD 3F3C FFFD FFFD FFFD FFFD FFFD FFFD - 664D FFFD FFFD FFFD FFFD FFFD 3856 FFFD - FFFD FFFD 4D32 532E FFFD FFFD FFFD FFFD - FFFD FFFD 4648 FFFD FFFD 2851 2D2C FFFD - FFFD FFFD 3236 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3235 FFFD FFFD 385B - 3858 385A FFFD FFFD FFFD 3857 FFFD 3859 - FFFD 3F3D 3F3E FFFD 3F3F 464B FFFD 464C - FFFD 464A 464D FFFD FFFD FFFD 4649 FFFD - FFFD FFFD FFFD 5333 532F 5332 5334 5331 - 5330 FFFD 5961 5962 5963 FFFD FFFD 5E5E - 5E5D 5E5F FFFD 626D 626C FFFD 664F FFFD - 6650 664E FFFD FFFD FFFD 6962 6963 FFFD - 6D73 6F3E 7049 FFFD FFFD FFFD FFFD FFFD - FFFD 385C 3F40 FFFD FFFD 226A FFFD FFFD - FFFD 226B 226D FFFD 226E 226C FFFD FFFD - 2522 2523 247B FFFD FFFD FFFD FFFD 2521 - FFFD FFFD FFFD 247C 247A 2479 247D FFFD - 247E 2D2D FFFD FFFD FFFD 2856 FFFD 2855 - 2857 FFFD FFFD 285C FFFD 2852 2860 2866 - FFFD 2863 FFFD FFFD 2859 285F 2861 FFFD - 2854 FFFD FFFD 285A FFFD FFFD FFFD FFFD - FFFD 285E 2858 2865 FFFD FFFD FFFD 285D - FFFD 285B FFFD FFFD FFFD 2853 FFFD 2862 - 2864 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 82D5 - srcEnd = 8356 - mappingOffset = 2E04 - Mapping = - 2D34 2D37 FFFD FFFD 2D2E FFFD FFFD FFFD - FFFD FFFD FFFD 2D43 2D3A FFFD FFFD 2D42 - FFFD FFFD FFFD 2D32 FFFD 2D41 2D36 2D39 - 2D46 FFFD FFFD 2D40 FFFD 2D3B 2D45 2D38 - 2D3C 2D3F FFFD FFFD 2D30 2D44 2D3E FFFD - FFFD 2D2F FFFD 2D33 FFFD FFFD FFFD FFFD - FFFD FFFD 2D31 3247 FFFD FFFD FFFD 2D3D - 2942 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 324A FFFD FFFD 323A FFFD 3245 3241 - FFFD 3254 FFFD 324C FFFD 3242 FFFD 324B - 323C 3240 3257 FFFD 324F 3246 FFFD 3255 - 3238 FFFD 324E FFFD FFFD FFFD 3237 FFFD - FFFD FFFD 324D FFFD FFFD 2D35 3F41 3248 - FFFD FFFD 323E FFFD 323F 3243 FFFD 3239 - 3251 FFFD 3250 3258 FFFD FFFD 3256 3252 - 3249 3244 FFFD FFFD 323B FFFD 3253 FFFD - FFFD 323D -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 8373 - srcEnd = 83B0 - mappingOffset = 2E86 - Mapping = - 3862 3864 3869 387D FFFD FFFD FFFD 3861 - FFFD FFFD 386C 3873 3879 FFFD 3866 FFFD - 386D FFFD FFFD FFFD 387B 3876 FFFD FFFD - 3872 386E 3860 FFFD 3865 385D FFFD FFFD - FFFD 386A 3867 FFFD 3877 FFFD 3868 3F6A - 3870 FFFD 386F FFFD FFFD FFFD FFFD FFFD - 385E 3863 3874 387A FFFD 385F 386B 3871 - FFFD FFFD FFFD 387C 3875 3878 -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 83BF - srcEnd = 84DB - mappingOffset = 2EC4 - Mapping = - 3F51 3F45 FFFD 3F62 3F6B 3F6E FFFD 3F4D - 3F66 3F4E 3F5C FFFD 3F58 FFFD FFFD 3F59 - 3F42 FFFD 3F67 FFFD FFFD FFFD 3F64 3F5A - 3F70 3F55 466D FFFD 3F73 FFFD 3F53 3F5F - FFFD FFFD 3F57 3F71 3F50 3F49 3F54 FFFD - 3F48 3F46 FFFD 3F68 3F4F 3F6C FFFD 3F6D - FFFD FFFD FFFD FFFD 3F63 FFFD 3F5B 3F4B - FFFD FFFD 3F43 3F65 3F6F 3F4A FFFD 3F74 - 3F56 FFFD 3F52 FFFD FFFD FFFD FFFD 3F61 - FFFD FFFD 3F5D FFFD FFFD FFFD FFFD FFFD - 3F5E 3F4C 3F60 3F47 3F69 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3F72 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3F44 FFFD FFFD FFFD - FFFD FFFD 466C FFFD 4724 FFFD 4671 FFFD - 466F 465A FFFD 466A 467E 4666 FFFD 467D - 4664 FFFD 4674 4665 467B FFFD FFFD FFFD - 464F 4657 FFFD 4670 4668 4723 466B FFFD - 467C FFFD FFFD FFFD 466E 4676 465B 4675 - FFFD 4728 4656 4677 FFFD 4726 FFFD 4650 - FFFD FFFD 465E 465D FFFD FFFD 4661 4663 - 4672 4725 FFFD FFFD FFFD FFFD 4655 FFFD - 4659 4721 FFFD FFFD FFFD FFFD FFFD 4727 - 4678 4673 FFFD FFFD 4660 465F FFFD 4651 - FFFD 4669 4652 4667 FFFD FFFD 465C 4722 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4658 - FFFD FFFD FFFD FFFD FFFD FFFD 4654 467A - 4653 FFFD 4D5A FFFD FFFD 4D49 FFFD FFFD - 4D33 4D51 FFFD 4D42 4D4C FFFD 4D45 FFFD - 4D36 4D54 4D35 4D48 FFFD 4D34 FFFD FFFD - 4D46 4D4F 4D4D 4D41 4D3C 4D3A FFFD 4D3B - 4D4E 4D59 4D43 FFFD FFFD 4D3E FFFD 4D52 - FFFD FFFD 4D3D 4D37 4D47 FFFD FFFD FFFD - FFFD FFFD 4D3F 4D39 FFFD FFFD 4679 FFFD - 4D4A FFFD FFFD FFFD FFFD 4D4B 4D40 4D38 - 4D53 4D44 FFFD 4D57 FFFD 4D56 FFFD 4D50 - 4D55 FFFD FFFD FFFD 4D58 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 84E7 - srcEnd = 860C - mappingOffset = 2FE1 - Mapping = - 535C 535D 5350 534F 534B FFFD FFFD FFFD - 535F 535E 464E 5348 534C 5346 FFFD 5359 - 534A FFFD 5360 5343 5341 534D 5357 5352 - FFFD 5338 FFFD 5356 FFFD FFFD FFFD FFFD - 4662 5344 533B 533E 5364 5345 533C 533A - 5337 FFFD FFFD 534E FFFD FFFD 5349 5351 - FFFD 5361 5365 FFFD FFFD 5340 5354 5358 - 533D 5362 FFFD FFFD FFFD 5335 FFFD 535B - 533F 5353 5339 5347 5342 FFFD FFFD 5355 - 5366 5363 535A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5336 FFFD FFFD 5974 - FFFD 596B 596E FFFD FFFD 5970 5965 596C - 5972 FFFD FFFD FFFD FFFD FFFD 5967 5977 - FFFD FFFD 5971 FFFD 5968 5A22 597A 5964 - 5E72 596A FFFD FFFD 5975 FFFD 5A21 FFFD - FFFD 597C 5969 596F 5973 596D 5A23 597E - 597B FFFD FFFD FFFD 5966 5A24 FFFD 5978 - FFFD FFFD 5976 FFFD FFFD FFFD 5979 5F21 - 5E6C 5E71 5E7E 5E70 5E68 5E6D FFFD FFFD - FFFD 5E61 5E79 5E7B 5E60 FFFD 5E7D 5E75 - FFFD 5E7C 5E6E FFFD 5E66 597D 5E76 5E73 - 5E62 5F23 FFFD FFFD FFFD FFFD 5E64 5E74 - FFFD 5F22 5E77 5E6A FFFD FFFD 5E78 5E6B - 5F24 5E65 5E6F 5E7A 5E67 5E69 FFFD FFFD - 5E63 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 627D FFFD 6273 626E 6274 627E - 6324 6323 FFFD FFFD FFFD FFFD 6275 6325 - 6278 6270 FFFD 6272 6271 6277 627C 626F - 6276 627B FFFD FFFD 6279 FFFD FFFD 627A - FFFD FFFD 6660 6321 FFFD FFFD FFFD FFFD - 6658 665C 6654 6657 FFFD 665F FFFD 6664 - 665D FFFD 6655 6665 665E FFFD FFFD 6662 - FFFD 6656 FFFD FFFD 6651 6659 6653 FFFD - 6663 6661 6652 665A FFFD FFFD FFFD 696A - FFFD 665B FFFD FFFD FFFD FFFD 696F 6967 - 6965 6969 6966 FFFD FFFD 696B 696D FFFD - FFFD FFFD 696C FFFD FFFD 696E -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 8618 - srcEnd = 885A - mappingOffset = 3107 - Mapping = - 6C21 6C27 FFFD 6968 6C26 FFFD 6C2D 6C24 - 6C2B 6C2A 6964 6C25 6322 6C2E 6C23 6C28 - FFFD 6C2C 6C22 FFFD 6D77 FFFD 6C29 FFFD - FFFD 6F43 6D78 6D76 6D74 6D75 6D79 FFFD - FFFD 6F41 6F3F 6F44 6F42 FFFD 6F45 FFFD - 6F40 FFFD FFFD 704A FFFD FFFD 7134 7135 - 7136 FFFD FFFD 7235 722D 226F FFFD FFFD - FFFD FFFD 325A 3259 FFFD FFFD 3921 FFFD - FFFD 387E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4D5B 5367 5A25 5A27 5A26 FFFD FFFD - 5F25 6326 7173 FFFD FFFD 2869 286A 2868 - 2867 FFFD FFFD 2D4A 2D48 FFFD FFFD 2D47 - FFFD FFFD FFFD FFFD 2D49 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3266 3263 3261 - FFFD FFFD FFFD 3264 FFFD 325E 326D FFFD - 326F 325F FFFD FFFD 3270 326B 325D 3262 - 326C 3268 3265 FFFD FFFD 326E 3260 FFFD - FFFD 3269 325B FFFD FFFD 3267 FFFD 326A - 325C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3928 FFFD FFFD 392B 392E FFFD FFFD 3923 - 392C 392A 3927 392F 3930 3932 3933 3922 - FFFD 3925 3924 3931 FFFD 3926 FFFD FFFD - 3929 FFFD FFFD FFFD 392D FFFD FFFD FFFD - FFFD 4025 FFFD 3F78 FFFD FFFD 472E 4023 - 3F75 FFFD 3F7A FFFD 3F7E 3F7C FFFD FFFD - FFFD FFFD 3F76 3F79 FFFD FFFD 3F77 FFFD - 4024 4022 3F7B 3F7D 4021 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 472F 4735 472B - 4731 FFFD 472D FFFD FFFD FFFD FFFD FFFD - FFFD 4734 FFFD FFFD 472A 4737 FFFD FFFD - FFFD 4733 FFFD 4729 472C 4736 4732 FFFD - FFFD 4D7B 4D70 FFFD FFFD FFFD FFFD FFFD - FFFD 4D64 4D79 4D65 FFFD FFFD 4D62 FFFD - 4D6B 4D63 FFFD 4D5D 4D78 FFFD 4D75 4D76 - 4D5E FFFD 4D6D FFFD 4D67 4D6E 4D61 FFFD - 4D7A 4D72 4D6C 4D5C FFFD 4D73 FFFD FFFD - 4D77 FFFD 4D71 FFFD 4D6F FFFD 4D69 FFFD - 4D60 4D68 4D74 4D66 FFFD FFFD 4D6A FFFD - FFFD FFFD FFFD FFFD FFFD 4730 5379 5424 - 5378 5374 5371 FFFD 536F FFFD 5368 FFFD - 536E FFFD 5373 5370 5422 537B 5375 537A - FFFD 5372 5427 5369 536A 5423 FFFD 5428 - FFFD 5429 5377 4D5F 537D 5376 5421 537C - FFFD FFFD FFFD 536D FFFD 5426 FFFD 536B - FFFD 5A32 537E 5425 FFFD FFFD FFFD FFFD - FFFD 5A2F FFFD FFFD 5A39 5A35 FFFD 5A33 - 5A2E 5A3D FFFD FFFD FFFD FFFD FFFD 5A2A - 5A36 5A37 5A2D 5A2C 5A3A FFFD 5A30 5A2B - 5A31 FFFD 5A3C 5A29 5A3B 5A38 FFFD FFFD - FFFD FFFD FFFD 5A34 5A28 FFFD FFFD FFFD - FFFD FFFD 5F27 FFFD 5F2B 5F28 5F2F 5F35 - 5F2A FFFD 5F3E FFFD 5F38 5F2D 5F39 5F34 - 5F3B 5F2C FFFD FFFD 5F2E 5F3C 5F26 5F3A - FFFD FFFD 5F32 5F31 5F36 5F29 FFFD FFFD - FFFD 5F30 5F37 FFFD 5F33 FFFD FFFD FFFD - FFFD FFFD FFFD 6333 6331 FFFD FFFD 6337 - 6335 6338 FFFD 632A 6332 633C 5F3D 632E - FFFD 536C 6329 6336 6330 632D 6328 6327 - 633B FFFD 632C 632B FFFD 6334 FFFD FFFD - FFFD FFFD FFFD 632F 633A FFFD 6669 666A - FFFD FFFD 6667 FFFD 666F FFFD FFFD 6671 - 6666 6339 6673 6668 FFFD FFFD 666E FFFD - 6670 666B 6672 666D 666C FFFD FFFD FFFD - 6971 6972 FFFD 6974 FFFD FFFD 6975 6973 - FFFD 6970 FFFD 6C31 6C34 6C30 FFFD FFFD - 6C32 FFFD FFFD FFFD 6C33 6D7E 6D7C FFFD - 6D7B 6C2F 6D7D 6C35 6D7A FFFD 6F48 6F26 - 6F46 FFFD 6F47 6F49 FFFD 704D FFFD 704C - 704B FFFD FFFD FFFD 715D 7175 7174 7176 - FFFD 2D4B FFFD 3271 3272 FFFD FFFD FFFD - 4026 FFFD 6C36 704E FFFD FFFD 2D4C FFFD - FFFD FFFD 3934 FFFD FFFD 4028 4027 FFFD - FFFD FFFD 542A -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 8867 - srcEnd = 8988 - mappingOffset = 334A - Mapping = - 2D4D FFFD 2D4F 2D4E FFFD FFFD 3273 FFFD - 327A FFFD 3278 3276 FFFD 327D 3274 3275 - FFFD FFFD FFFD FFFD FFFD 327E FFFD 327C - 3279 3277 FFFD FFFD 327B FFFD FFFD FFFD - FFFD FFFD 3935 FFFD FFFD 3945 FFFD 3947 - FFFD FFFD 393B FFFD 3946 FFFD 3936 FFFD - 3942 393E 3940 393A 3941 FFFD FFFD FFFD - 393D FFFD 393C 3938 FFFD 3943 FFFD FFFD - 393F 3937 FFFD 3939 FFFD 3944 FFFD FFFD - FFFD FFFD FFFD 4033 FFFD FFFD FFFD 402F - 4031 402C 402B 4029 FFFD 4030 4032 402E - FFFD 402D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4035 FFFD 4739 473F 473A 473B - FFFD 4740 FFFD FFFD FFFD FFFD FFFD 4738 - 402A FFFD FFFD 473E 473D FFFD FFFD 473C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4D7D FFFD FFFD FFFD 4E2A 4E29 FFFD 4E24 - FFFD 4E28 4D7E 4E21 FFFD FFFD FFFD 4E26 - 4D7C FFFD FFFD 4E22 4E27 4E25 FFFD 4E23 - FFFD FFFD 4034 FFFD FFFD FFFD 542B 5432 - FFFD FFFD 5436 FFFD 542E 542C FFFD 5435 - FFFD FFFD 5434 FFFD FFFD 542D FFFD 5433 - 542F 5430 5431 FFFD FFFD FFFD FFFD 5A3E - 5A4A FFFD FFFD 5A45 5A47 FFFD FFFD 5A3F - 5A43 FFFD 5A46 FFFD FFFD 5A49 5A41 5A42 - 5A48 5A40 5A44 FFFD 5F40 FFFD 5F3F FFFD - 5F45 FFFD FFFD FFFD FFFD 5F41 FFFD 5F42 - FFFD FFFD 5F43 5F46 FFFD FFFD FFFD 6341 - FFFD FFFD 6344 FFFD 633E 6340 FFFD FFFD - 633F 6342 6343 5F44 633D FFFD FFFD FFFD - 6677 667A 667C 6675 6676 6679 667B FFFD - FFFD FFFD 6678 6674 6976 FFFD FFFD 6977 - FFFD FFFD 6C38 FFFD 6C3A FFFD 6C37 6C39 - FFFD FFFD 6E21 FFFD 6F4C 6F4B FFFD 6F4A - FFFD FFFD 7137 7138 713A 7139 FFFD 2270 - FFFD FFFD FFFD 3948 FFFD FFFD 4741 FFFD - FFFD 667D -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 8995 - srcEnd = 89BF - mappingOffset = 346C - Mapping = - 4036 FFFD 4038 4037 FFFD FFFD 4742 FFFD - 4E2B 4E2E 4E2D FFFD 4E2C 5437 5439 5438 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5F47 5F49 5F48 FFFD FFFD FFFD FFFD FFFD - FFFD 6721 667E FFFD 6978 FFFD FFFD FFFD - FFFD 6E23 6E22 -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 89D3 - srcEnd = 8A12 - mappingOffset = 3497 - Mapping = - 2D50 FFFD 394B 3949 FFFD FFFD 394A 403A - 403B 4749 4039 FFFD 4743 4747 4746 4748 - FFFD 4745 4744 474A FFFD 4E31 4E2F FFFD - 4E30 543C 543A FFFD FFFD 543B 5A4B 5F4A - 5F4B FFFD FFFD 6722 6979 FFFD FFFD 6C3B - 6E24 FFFD FFFD 6F4D 713B FFFD FFFD FFFD - FFFD 2D51 FFFD FFFD 2D52 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3321 -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = 8A1E - srcEnd = 8A61 - mappingOffset = 34D7 - Mapping = - 394F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 394D FFFD FFFD FFFD FFFD 394E FFFD - FFFD FFFD 394C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 403E FFFD FFFD FFFD FFFD - FFFD 474F 4040 FFFD FFFD FFFD 4043 4044 - FFFD FFFD 4046 FFFD 4048 FFFD 4049 403D - 403C 404A FFFD 4047 4045 FFFD FFFD FFFD - FFFD 4041 4042 403F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 474E -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 8A74 - srcEnd = 8A99 - mappingOffset = 351B - Mapping = - 4756 4753 474B 4750 FFFD FFFD 4757 FFFD - FFFD FFFD FFFD 474D FFFD 4755 4751 4754 - 4752 FFFD 474C FFFD FFFD FFFD FFFD 4E34 - FFFD FFFD FFFD 4E36 FFFD FFFD 4E35 FFFD - FFFD FFFD 4E37 FFFD FFFD 4E33 -End of Item 006A - -Begin of Item 006B - Format 2 - srcBegin = 8AAB - destBegin = 4E32 -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 8AB8 - srcEnd = 8B9F - mappingOffset = 3541 - Mapping = - 543F FFFD 544B 5444 FFFD 544C 5446 FFFD - 5447 FFFD FFFD 544A FFFD 5448 543E FFFD - 5A56 FFFD FFFD FFFD FFFD FFFD FFFD 543D - FFFD 5441 FFFD 5440 5442 5443 FFFD 5445 - 5449 544D FFFD FFFD FFFD 5A51 5A57 5A54 - 5A4C 5A58 5A4D FFFD 5A53 FFFD FFFD FFFD - 5A59 FFFD FFFD FFFD FFFD FFFD FFFD 5A5B - 5A55 FFFD 5A4E FFFD 5A4F 5A50 FFFD FFFD - FFFD FFFD FFFD 5A5C FFFD FFFD FFFD 5A5A - FFFD FFFD FFFD FFFD FFFD 5F50 5F59 5F56 - 5F58 FFFD FFFD 5F51 FFFD 5F57 FFFD 5F53 - FFFD 5F4F 5F54 5F5B 5A52 5F55 5F4E FFFD - 5F4D FFFD 5F5C FFFD 5F5A FFFD 5F4C FFFD - FFFD FFFD 5F52 6347 6355 6350 6352 6346 - FFFD FFFD 6345 FFFD FFFD FFFD 6354 634C - 6349 634F FFFD 6348 FFFD 634A 6353 6351 - FFFD FFFD 6358 6356 634D 6357 634E FFFD - 6726 FFFD 672D FFFD FFFD 6C3E FFFD 634B - 6724 FFFD 6725 672A FFFD FFFD FFFD FFFD - 6723 672C 672E 6727 6729 672B 6728 672F - FFFD FFFD FFFD FFFD FFFD 697C FFFD FFFD - 697A FFFD FFFD 697E FFFD 6A21 FFFD 6A22 - 697D FFFD 697B FFFD FFFD 6A23 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6C3D 6C3C 6C3F 6C40 FFFD FFFD 6E25 6E2A - FFFD FFFD 6E27 FFFD 6E26 6E29 6E28 FFFD - 6F51 FFFD FFFD 6F50 6F4E FFFD 6F4F FFFD - FFFD FFFD FFFD FFFD 704F 7050 FFFD FFFD - 713C 713D FFFD FFFD FFFD FFFD 7177 7236 -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = 8C39 - srcEnd = 8CBE - mappingOffset = 3629 - Mapping = - 3950 FFFD 3951 4758 4E38 544E FFFD FFFD - FFFD 6359 6730 FFFD 6F52 FFFD 3322 FFFD - FFFD 475A 4759 FFFD 544F FFFD 5F5D FFFD - FFFD FFFD FFFD FFFD FFFD 286B 3323 FFFD - FFFD FFFD FFFD 3952 3953 FFFD 404B FFFD - FFFD FFFD FFFD 475C 475B 475D FFFD 4E39 - 4E3A FFFD FFFD FFFD FFFD FFFD 5F61 5F5E - 5F60 5F5F FFFD FFFD 635A 6732 6731 2524 - FFFD FFFD 3324 FFFD 3954 FFFD FFFD 404D - 404C FFFD FFFD 475F 4760 475E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5450 5A5F - 5A5D 5A5E FFFD 5F63 5F62 FFFD 635D 635C - 635B 6733 FFFD 7178 FFFD FFFD FFFD FFFD - FFFD FFFD 3326 3325 3955 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4050 - FFFD FFFD FFFD FFFD 4052 FFFD FFFD FFFD - 4051 404E FFFD FFFD FFFD 404F -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = 8CCC - srcEnd = 8D19 - mappingOffset = 36AF - Mapping = - 4761 FFFD FFFD 4E3C FFFD FFFD FFFD FFFD - FFFD 4E3B FFFD 4E3D FFFD 5453 5455 FFFD - FFFD 5456 FFFD 5452 FFFD FFFD FFFD FFFD - FFFD 5451 FFFD 5457 5454 FFFD FFFD FFFD - FFFD FFFD 5A61 FFFD 5A63 5A62 FFFD 5A64 - FFFD 5A60 FFFD FFFD FFFD 5F64 FFFD FFFD - FFFD FFFD 635E FFFD 6361 FFFD 6360 FFFD - 635F FFFD 6734 6735 FFFD 6736 FFFD FFFD - FFFD FFFD FFFD FFFD 6C41 FFFD FFFD FFFD - 6C42 6E2B FFFD FFFD FFFD 6F53 -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = 8D68 - srcEnd = 8EA9 - mappingOffset = 36FD - Mapping = - 4762 4763 FFFD FFFD 5A65 FFFD 5A66 5F65 - FFFD FFFD 2D53 FFFD FFFD FFFD 3327 FFFD - 3328 3958 FFFD 3957 FFFD 3956 FFFD FFFD - 4054 FFFD FFFD FFFD 4053 FFFD FFFD FFFD - FFFD 4055 FFFD FFFD 4765 4768 4766 4767 - 476B 4764 476C 4769 476A FFFD 4E3E FFFD - FFFD FFFD FFFD 545B 5459 FFFD FFFD FFFD - 5458 545A FFFD FFFD FFFD 5A67 FFFD 5A68 - FFFD FFFD 6738 673A 6737 6739 6A24 6C43 - FFFD FFFD 715E FFFD FFFD 3329 332B 332A - FFFD 395B FFFD FFFD 3959 FFFD FFFD 395C - FFFD 395D 395A FFFD FFFD 4061 FFFD 4059 - 405F FFFD FFFD FFFD FFFD 4058 FFFD 405C - 4772 FFFD FFFD 4057 FFFD 405D 405A 4060 - 4056 405E FFFD FFFD 405B FFFD FFFD FFFD - 476E FFFD 4775 4774 FFFD FFFD FFFD 4776 - FFFD 4773 FFFD 4778 476F FFFD 4771 FFFD - 476D 4770 4777 FFFD 4779 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4E43 4E49 4E41 - 4E4A FFFD 4E40 4E45 4E4B 4E48 4E47 4E46 - FFFD 4E3F 4E44 FFFD FFFD 4E42 FFFD FFFD - FFFD 5464 5469 546B 5468 5461 5463 546D - 546A 5465 546E 5462 546C FFFD FFFD FFFD - 545C FFFD FFFD 545D 545F 545E 5466 5467 - FFFD FFFD FFFD FFFD FFFD FFFD 5460 FFFD - 5A72 FFFD FFFD 5A69 FFFD FFFD 5A6E FFFD - 5A6B FFFD FFFD FFFD 5A6F 5A70 5A6A 5A73 - 5A6C 5A71 FFFD FFFD FFFD 5A6D FFFD 5F6B - FFFD FFFD FFFD FFFD 5F6A 5F67 5F66 FFFD - 5F69 FFFD FFFD 5F68 636F FFFD 6366 6365 - FFFD FFFD 636B 636A 6362 636D 6367 FFFD - 6364 636C 6363 FFFD FFFD 6368 FFFD 6369 - FFFD 636E 673E FFFD FFFD 673B FFFD 673F - FFFD FFFD FFFD 673D FFFD FFFD FFFD FFFD - 673C FFFD FFFD 6740 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6A27 FFFD 6A25 FFFD - 6A26 FFFD FFFD FFFD 6C45 FFFD 6C44 FFFD - 6E30 FFFD 6E2F FFFD 6E2D 6E2C 6E31 6E32 - 6F54 FFFD 6E2E FFFD FFFD 7054 7051 7052 - 7053 FFFD FFFD 7140 713F 713E 715F FFFD - 722E 7179 -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 8EBD - srcEnd = 8F64 - mappingOffset = 383F - Mapping = - 5A74 FFFD FFFD FFFD FFFD 6741 FFFD FFFD - FFFD FFFD FFFD FFFD 717A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 332C FFFD 332D FFFD - FFFD FFFD 3962 395E FFFD FFFD FFFD 3961 - 3960 395F FFFD 3963 3964 FFFD FFFD FFFD - 4068 4066 406A 406B 4071 FFFD 406D 406F - FFFD 4067 4062 FFFD 406E FFFD FFFD 4070 - 4069 406C 4063 FFFD 4065 4064 FFFD FFFD - FFFD FFFD 477B 477D 477C 4823 FFFD FFFD - 477E 477A 4821 4822 FFFD FFFD 4824 FFFD - 4E4F 4E4E FFFD 4E4C 4E4D FFFD FFFD FFFD - FFFD 5475 5476 5471 FFFD 5472 FFFD FFFD - FFFD FFFD FFFD 5473 FFFD FFFD 5474 5470 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 546F - FFFD 5A76 FFFD FFFD FFFD 5A78 FFFD 5A7B - 5A77 5A75 5A7A FFFD 5A79 FFFD FFFD FFFD - FFFD FFFD FFFD 5F6D FFFD FFFD 5F6C FFFD - FFFD 6370 6371 6372 FFFD FFFD 6373 FFFD - FFFD FFFD 6744 6745 6743 6742 6746 FFFD - 6A2B 6A29 6A2A 6A2C 6A28 6A2D 6C47 FFFD - 6C48 6C46 FFFD 6E33 FFFD 6E34 6F56 6F55 -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 8FB4 - srcEnd = 9052 - mappingOffset = 38E7 - Mapping = - 6747 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2526 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2525 FFFD 286D - FFFD 286F FFFD FFFD FFFD FFFD 286C 286E - FFFD 2871 2870 2872 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2D57 2D55 FFFD 2D54 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2D56 FFFD FFFD FFFD FFFD FFFD - FFFD 332F 3335 FFFD FFFD FFFD FFFD 3332 - 3334 FFFD 332E 3331 FFFD FFFD 3330 FFFD - 3333 FFFD FFFD FFFD FFFD FFFD FFFD 3966 - 3969 FFFD FFFD FFFD FFFD 3967 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3968 FFFD FFFD FFFD FFFD 396A FFFD FFFD - 3965 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4072 FFFD 4074 FFFD FFFD FFFD FFFD - 4073 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4829 FFFD 4826 FFFD FFFD FFFD FFFD - 4827 FFFD FFFD FFFD FFFD 4828 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4825 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 9067 - srcEnd = 91C3 - mappingOffset = 3986 - Mapping = - 547A FFFD FFFD FFFD 547B FFFD FFFD FFFD - 5479 5478 FFFD FFFD 5477 FFFD FFFD 5A7C - FFFD FFFD 5A7D FFFD 5A7E FFFD FFFD 5F6F - FFFD FFFD FFFD FFFD FFFD FFFD 5F6E 5B21 - FFFD FFFD FFFD FFFD FFFD FFFD 6A2E FFFD - FFFD FFFD FFFD FFFD FFFD 2275 FFFD FFFD - 2272 2273 2271 FFFD 2274 FFFD FFFD 252A - 2527 252C 2528 FFFD FFFD FFFD 2529 FFFD - 252B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2875 2877 FFFD 2873 2876 2874 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2D59 2D5D - 2D5A FFFD FFFD FFFD FFFD FFFD 2D5C FFFD - 2D5E 2D60 FFFD FFFD 2D5F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3971 2D5B 3336 - 333F 333D 3338 3339 333E 3340 FFFD FFFD - 333B 3337 FFFD FFFD 333A 3341 333C FFFD - FFFD FFFD 3974 396C 3972 3973 FFFD FFFD - 396B 396D 2D58 396F 3970 396E FFFD FFFD - FFFD FFFD 407B 5B22 407C 4079 FFFD FFFD - 4078 407E 407D FFFD 4123 4077 4122 4075 - 4121 407A FFFD FFFD 4830 FFFD 482B 4831 - 482C 482A 482D FFFD FFFD 482F FFFD 482E - FFFD FFFD FFFD 4E56 4E59 4E51 4E55 FFFD - 4E54 4E52 4E58 4E53 4E50 4E57 FFFD 5523 - FFFD 6374 547E 5521 547D 4076 FFFD 5524 - 547C FFFD FFFD 5522 5B23 FFFD 5B24 5B25 - FFFD 5F70 FFFD 6375 6376 FFFD FFFD 6377 - 6749 6748 6A30 FFFD 6A2F 6C4A 6C4B 6C49 - 6E35 FFFD FFFD FFFD FFFD FFFD FFFD 3343 - 3344 3342 FFFD FFFD 3978 FFFD 3979 3975 - FFFD 3976 FFFD 3977 FFFD FFFD FFFD FFFD - 4126 4128 4124 4127 FFFD 4125 FFFD FFFD - FFFD 4279 FFFD FFFD FFFD FFFD FFFD 4832 - 4833 FFFD FFFD 4E5B 4E5D FFFD FFFD FFFD - FFFD FFFD 4E5C 4E5A FFFD FFFD FFFD FFFD - FFFD 552B 5528 5529 FFFD 552A 5525 5526 - FFFD FFFD FFFD 5527 FFFD FFFD 5B29 FFFD - 5B2A 5B27 5B28 FFFD 5B26 FFFD FFFD FFFD - FFFD FFFD 5F74 5F71 5F73 FFFD 5F77 FFFD - 5F75 5F78 5F76 5F72 FFFD FFFD 6379 FFFD - 637A 6378 FFFD 637C FFFD FFFD 674B FFFD - 637B 674A FFFD 6A33 6A34 FFFD 6A32 FFFD - 6A31 FFFD 6C4C FFFD FFFD 6F57 7056 7055 - FFFD FFFD FFFD 7057 7160 -End of Item 0072 - -Begin of Item 0073 - Format 1 - srcBegin = 91D3 - srcEnd = 923A - mappingOffset = 3AE3 - Mapping = - 2D62 2D61 3345 FFFD FFFD FFFD FFFD 3347 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3346 - FFFD 3A21 FFFD FFFD FFFD 3A26 FFFD 3A23 - 3A24 397A FFFD 3A27 FFFD FFFD 397C FFFD - 397D 397B FFFD FFFD 3A25 397E 3A22 FFFD - FFFD FFFD 4134 FFFD 4133 4131 4129 4138 - 412C 4136 413D 4135 FFFD FFFD FFFD 412A - FFFD 4130 FFFD FFFD 412F FFFD FFFD 4132 - FFFD FFFD FFFD 413E 413C FFFD 413B 412D - FFFD 4139 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 413A 412B 412E 4137 FFFD FFFD FFFD - FFFD FFFD 4F22 483D FFFD 4836 4849 4852 - 4839 FFFD FFFD 4846 FFFD FFFD FFFD 4837 -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = 9246 - srcEnd = 9483 - mappingOffset = 3B4B - Mapping = - 483F FFFD 4834 FFFD 483E FFFD 4850 FFFD - 484E 4842 484C FFFD 4835 484F 484A FFFD - 4851 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 483B FFFD 4843 4847 FFFD 484B FFFD 483A - 4838 4844 FFFD FFFD FFFD FFFD 4841 4840 - FFFD 4845 4848 FFFD 484D FFFD FFFD FFFD - 4E60 FFFD FFFD 4E6A 4E62 FFFD FFFD 4E73 - 4E7B 4E6C FFFD FFFD 4E70 483C FFFD FFFD - 4E77 4E7C 4E74 FFFD 4E76 4F21 4E78 4E66 - 4E6F FFFD FFFD FFFD FFFD FFFD 4E64 4E71 - FFFD 4E6B FFFD 4E79 4E68 4E61 FFFD 4E7E - FFFD FFFD 4E63 4E75 4E72 4E6D 4E5F 4E5E - 4E67 4E7A FFFD 4E7D 4E65 4E69 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 554D 5549 - 5531 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 552F FFFD 553B 552D 552E FFFD - 554C FFFD 553E 5543 553D 5B3C 5539 5541 - 553F 5532 552C 5547 FFFD 5548 FFFD 5542 - FFFD 5537 5535 5530 FFFD FFFD FFFD 5538 - 5545 5534 5544 554A FFFD FFFD FFFD FFFD - 5540 5546 553C 5536 FFFD FFFD FFFD FFFD - 4E6E 553A FFFD 5533 FFFD FFFD FFFD FFFD - FFFD 5B41 FFFD 5B40 5B3E 5B50 FFFD FFFD - 5B4D 5B45 5B4F 5B37 5B43 FFFD FFFD FFFD - 5B2F FFFD 5B2D 5B4E FFFD 5B4C 5B4B 5B3B - 5B3A 5B30 FFFD FFFD 5B36 5B3F 5B4A FFFD - 5B51 FFFD FFFD FFFD FFFD 5B34 FFFD 5B3D - 5B2C 5B2E FFFD FFFD FFFD 5B35 5B44 554B - FFFD 5B2B FFFD 5B46 5B49 FFFD FFFD 5B39 - FFFD FFFD FFFD FFFD FFFD FFFD 5B42 5B48 - FFFD FFFD 5B32 5B47 FFFD FFFD 5B33 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5B38 5F7E FFFD 6025 FFFD FFFD 602B FFFD - 6039 6031 6026 6027 6030 FFFD FFFD 602F - 5F7D 602E 6022 603A FFFD FFFD 6023 FFFD - 6036 FFFD 6028 6035 FFFD 6037 5F7C FFFD - FFFD 6038 FFFD FFFD 602C FFFD FFFD 6029 - FFFD FFFD FFFD 6032 FFFD FFFD FFFD FFFD - 6024 6033 FFFD 602D 5B31 6034 6021 FFFD - FFFD FFFD 642F FFFD FFFD 5F7A FFFD FFFD - FFFD FFFD 642C 6425 FFFD FFFD 637E 6430 - 6427 602A FFFD 6432 6421 FFFD FFFD 642B - FFFD FFFD FFFD 642D FFFD 6423 FFFD 6424 - 6429 642E FFFD 5F79 FFFD 6437 6434 6761 - 642A 6426 6435 6756 6428 FFFD FFFD FFFD - FFFD 5F7B FFFD 6431 6433 FFFD 6436 637D - FFFD 6422 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 675F FFFD 674F FFFD 675D FFFD - FFFD 674D FFFD FFFD 6758 FFFD 6754 FFFD - 675E 674E 6751 FFFD 6760 FFFD 6759 675C - FFFD FFFD FFFD 6755 6750 FFFD FFFD FFFD - 674C FFFD FFFD FFFD FFFD 675B FFFD FFFD - 6757 6762 FFFD FFFD FFFD FFFD 6753 FFFD - 675A FFFD FFFD FFFD FFFD FFFD FFFD 6A41 - 6A50 6A43 6A4A 6752 6A48 6A37 6A4E FFFD - 6A3B 6A4D 6A42 FFFD FFFD FFFD FFFD FFFD - 6A52 6A44 FFFD 6A49 6A4C 6A35 6A4F 6A40 - 6A45 6A39 6A3D 6A51 6A47 6A36 6A3A 6A3C - 6A46 FFFD FFFD 6A3F FFFD FFFD FFFD FFFD - FFFD FFFD 6A38 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6A3E 6C50 6C54 FFFD 6C56 FFFD - FFFD FFFD 6C52 6C58 FFFD FFFD FFFD FFFD - 6C4F 6C55 FFFD 6C53 FFFD 6C4E 6A4B 6C51 - FFFD 6C4D 6C57 FFFD FFFD FFFD FFFD 6E3C - 6E3F 6E3B 6E3D 6E3E 6E38 6E39 6E36 FFFD - FFFD 6E3A 6E37 FFFD FFFD FFFD FFFD 6F59 - FFFD 6F5B FFFD FFFD FFFD FFFD FFFD 6F5A - 6F5C FFFD FFFD FFFD 6F58 FFFD FFFD FFFD - FFFD FFFD 7059 705A FFFD 7058 FFFD 7142 - 7141 7143 FFFD 7144 FFFD 7145 7161 7164 - 7163 FFFD 7162 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7230 7231 722F 7237 -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 957A - srcEnd = 959F - mappingOffset = 3D89 - Mapping = - 3A28 413F 554E 6763 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3A29 FFFD 3A2A FFFD - FFFD FFFD 4141 4140 FFFD FFFD 4142 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4856 4854 FFFD 4855 4853 -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = 95AB - srcEnd = 95E5 - mappingOffset = 3DAF - Mapping = - 5550 554F FFFD 5551 FFFD 5552 FFFD FFFD - FFFD FFFD 5B59 5B57 6040 FFFD 5B55 5B56 - FFFD 5B52 5B5A 5B54 5B58 603C FFFD FFFD - 603E FFFD 603F FFFD 603B FFFD 603D FFFD - FFFD FFFD 5B53 FFFD FFFD FFFD 643A 6438 - 6439 FFFD FFFD FFFD FFFD FFFD FFFD 6764 - 6765 FFFD FFFD 6A53 6A55 6A54 FFFD FFFD - 6C5B 6C5A 6C59 -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = 961E - srcEnd = 965F - mappingOffset = 3DEA - Mapping = - 2169 FFFD 2278 FFFD 2276 2279 2277 FFFD - FFFD FFFD 252E FFFD FFFD FFFD FFFD 2530 - FFFD 252F 252D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2878 287B FFFD 287A 2879 - FFFD FFFD FFFD FFFD FFFD 287C FFFD FFFD - FFFD FFFD FFFD FFFD 2D67 FFFD FFFD FFFD - 2D68 2D64 FFFD 2D65 FFFD 2D66 2D63 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3348 FFFD - FFFD 3349 -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 966B - srcEnd = 974B - mappingOffset = 3E2C - Mapping = - 3A2D FFFD 3A2C FFFD 3A2F FFFD 3A2E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3A2B FFFD 4144 FFFD 4148 FFFD FFFD - 4147 FFFD FFFD FFFD 4143 4145 4146 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4859 4857 - 4858 FFFD FFFD FFFD 485A FFFD FFFD FFFD - FFFD FFFD FFFD 4F23 FFFD FFFD 4F24 5554 - FFFD 5553 FFFD FFFD FFFD FFFD 5B5B FFFD - FFFD 6043 FFFD 6041 FFFD 6042 FFFD FFFD - 643B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 334A FFFD FFFD 3A30 FFFD FFFD 4149 - 414B FFFD FFFD FFFD FFFD 414A FFFD FFFD - FFFD FFFD FFFD 485B FFFD FFFD FFFD FFFD - 5555 5B5C FFFD FFFD 643C 6440 FFFD 643D - FFFD FFFD 6441 FFFD 643F FFFD 6766 FFFD - FFFD FFFD 705B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 414D 414C FFFD - FFFD FFFD 485F FFFD FFFD 485E FFFD 485C - FFFD FFFD 485D FFFD 4F25 FFFD FFFD 5558 - FFFD FFFD 5556 FFFD FFFD 5557 FFFD FFFD - 5B5D FFFD FFFD FFFD FFFD 5B5F FFFD 5B5E - FFFD FFFD FFFD FFFD FFFD 6046 6048 FFFD - FFFD FFFD 6047 FFFD 6045 6044 FFFD 6443 - 6442 FFFD 6444 676B FFFD 676A 6767 FFFD - 6768 6769 FFFD 6A56 6A57 FFFD FFFD FFFD - FFFD FFFD 6C5C FFFD FFFD FFFD FFFD 6C5D - FFFD FFFD FFFD FFFD 6E40 FFFD FFFD FFFD - 705D FFFD FFFD 705C 705E FFFD 7146 FFFD - 717B -End of Item 0078 - -Begin of Item 0079 - Format 1 - srcBegin = 9758 - srcEnd = 975A - mappingOffset = 3F0D - Mapping = - 4F26 FFFD 5559 -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = 976A - srcEnd = 9835 - mappingOffset = 3F10 - Mapping = - 3A31 FFFD 414E FFFD 4150 FFFD 414F FFFD - 4863 4860 FFFD FFFD FFFD 4861 4862 FFFD - 4F28 4F2D FFFD 4F27 4F29 4F30 4F2B 4F2F - 4F2C 4F2A 4F2E FFFD FFFD FFFD 555C FFFD - 555A FFFD FFFD FFFD 555B FFFD FFFD FFFD - FFFD FFFD 5B62 FFFD FFFD 5B61 FFFD 5B60 - 6049 FFFD 604B 604D 604C FFFD FFFD 604A - 644B FFFD 6449 644C FFFD FFFD 6447 FFFD - 644A 6448 6445 FFFD 6446 FFFD FFFD FFFD - FFFD 676C FFFD FFFD 676E 676D FFFD 6A58 - FFFD 6A59 FFFD FFFD FFFD 6C5E FFFD FFFD - FFFD FFFD 6F5D 6F5E FFFD 705F FFFD FFFD - FFFD FFFD FFFD 4F32 4F31 555E 555D FFFD - FFFD FFFD 604F 604E 644F 644D 6450 644E - FFFD FFFD FFFD 676F 6770 6771 FFFD 6C5F - FFFD 6E41 FFFD 7060 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5B63 6050 - FFFD FFFD FFFD FFFD FFFD FFFD 5B64 FFFD - 6451 FFFD FFFD 6A5A 6A5B FFFD 6F5F FFFD - FFFD FFFD 3A32 FFFD FFFD 4151 FFFD FFFD - FFFD FFFD FFFD 4865 4866 4864 FFFD FFFD - FFFD FFFD FFFD FFFD 4F33 FFFD FFFD FFFD - FFFD 5565 FFFD 5560 555F FFFD 5564 FFFD - FFFD FFFD FFFD FFFD 5561 5566 5563 5562 - FFFD FFFD FFFD FFFD FFFD 5B66 FFFD FFFD - 5B67 FFFD FFFD 5B65 -End of Item 007A - -Begin of Item 007B - Format 1 - srcBegin = 9841 - srcEnd = 9874 - mappingOffset = 3FDC - Mapping = - 6051 FFFD 6056 6052 6055 FFFD FFFD 5E41 - 6054 6053 FFFD FFFD FFFD FFFD FFFD 6452 - 6453 6454 FFFD FFFD FFFD FFFD 6775 FFFD - 6773 FFFD FFFD 6772 6774 FFFD 6A5F 6A5C - FFFD 6A5D 6A5E 6C60 FFFD FFFD FFFD FFFD - 6E43 6E42 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7147 717C 717D -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = 98A9 - srcEnd = 98CC - mappingOffset = 4010 - Mapping = - 4152 FFFD FFFD 4867 4F34 4F35 FFFD FFFD - FFFD 5567 FFFD FFFD FFFD FFFD FFFD 6455 - FFFD FFFD 6778 FFFD 6777 6779 6776 6C63 - 6A60 6A61 FFFD FFFD FFFD 6C62 FFFD FFFD - 6C61 FFFD 6E44 717E -End of Item 007C - -Begin of Item 007D - Format 1 - srcBegin = 98E3 - srcEnd = 9961 - mappingOffset = 4034 - Mapping = - 334B FFFD 3A33 FFFD FFFD FFFD FFFD FFFD - 4153 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4868 FFFD FFFD 4869 5569 - FFFD FFFD FFFD FFFD FFFD 4F37 FFFD 4F36 - FFFD FFFD FFFD FFFD 4F38 5568 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 556A FFFD - FFFD 556B 556E 556C 556D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5B69 FFFD FFFD FFFD - FFFD 5B68 6057 FFFD 5B6A FFFD 5B6B 605A - 6058 6059 605E FFFD 605D 6060 605F 605C - 605B FFFD FFFD FFFD FFFD FFFD FFFD 6458 - FFFD 6457 FFFD FFFD FFFD FFFD 6456 FFFD - 677C FFFD FFFD FFFD 677B 677A FFFD FFFD - 6A66 6A65 FFFD 6A63 FFFD 6A62 FFFD FFFD - 6A67 6E45 FFFD 6C65 FFFD 6C64 6A64 FFFD - 6E46 FFFD FFFD FFFD 7148 FFFD 7221 -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = 9997 - srcEnd = 9A6B - mappingOffset = 40B3 - Mapping = - 3A34 6061 FFFD FFFD FFFD 4F3A 4F39 5B6C - FFFD FFFD 6063 FFFD 6062 FFFD FFFD 677D - 677E FFFD FFFD FFFD 7222 FFFD FFFD FFFD - 486A 486C FFFD 486B FFFD FFFD 486D FFFD - FFFD FFFD 4F3C 4F3E 4F3D FFFD 4F40 FFFD - FFFD FFFD FFFD 4F3F 4F3B FFFD FFFD FFFD - 4F41 FFFD 5575 FFFD 5578 557A 5570 5574 - 5571 FFFD FFFD FFFD 5572 5573 FFFD 5576 - 5579 5577 FFFD FFFD FFFD 556F FFFD FFFD - FFFD FFFD FFFD FFFD 5B72 5B70 5B6F FFFD - 5B75 FFFD 5B74 5B73 FFFD 5B6E FFFD 5B6D - FFFD 5B71 FFFD FFFD FFFD 6066 FFFD 606A - 6067 6069 6068 6065 606B 606E 606C 606D - FFFD FFFD FFFD 6064 606F 645D 6460 6462 - 6461 FFFD 645B 645F 645A FFFD 645C FFFD - 6459 FFFD 645E FFFD FFFD 682D 6822 FFFD - FFFD FFFD FFFD 6821 6826 682C 6824 682B - FFFD 6828 FFFD 6827 682A 6825 6823 FFFD - 6829 FFFD 6A6E 6A6C FFFD 6A6B 6A71 6A6F - FFFD FFFD 6A6A 6A68 FFFD 6A69 FFFD 6A6D - FFFD 6A70 6C66 6C6C FFFD FFFD 6C67 FFFD - 6C6D FFFD 6C6B 6C6A FFFD 6C69 FFFD 6C68 - FFFD 6E4C 6E4E 6E4D FFFD 6E4A FFFD 6E47 - 6E4B 6E50 FFFD 6E4F 6E48 6E49 FFFD 6F60 - FFFD FFFD 6F61 FFFD FFFD FFFD FFFD 7061 - FFFD 7165 FFFD FFFD FFFD 7223 FFFD 7224 - 7225 7233 7232 FFFD 723B -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = 9AAB - srcEnd = 9BC7 - mappingOffset = 4188 - Mapping = - 486F FFFD 486E FFFD FFFD FFFD 4F42 FFFD - 557B 5B78 FFFD FFFD FFFD FFFD 5B76 FFFD - 5B79 FFFD FFFD 6070 5B77 6463 FFFD 682E - FFFD FFFD FFFD 6A74 6A72 FFFD FFFD 6A73 - FFFD FFFD 6C6E FFFD FFFD 6E51 FFFD FFFD - FFFD FFFD 7062 FFFD FFFD FFFD FFFD FFFD - FFFD 6464 FFFD FFFD 334C FFFD FFFD FFFD - 4F43 FFFD FFFD FFFD 4F44 FFFD FFFD FFFD - 557D 557C FFFD FFFD FFFD FFFD 5622 5621 - 557E FFFD FFFD 5B7A 5B7D FFFD 5B7C 5B7B - FFFD 6074 6072 6071 FFFD FFFD 6073 FFFD - FFFD 6466 6467 FFFD FFFD 6465 FFFD 6830 - 682F 6832 FFFD 6831 FFFD 6A75 6A77 6A76 - FFFD FFFD 6C6F 6C72 6C70 6C71 6E52 FFFD - FFFD FFFD FFFD 6F62 6F63 6F64 FFFD FFFD - FFFD 7226 FFFD FFFD FFFD FFFD 6468 FFFD - 6E53 FFFD FFFD 7166 334D FFFD FFFD FFFD - 5B7E FFFD 6469 FFFD 6833 FFFD FFFD 6C73 - 6E54 FFFD FFFD 4F45 4F46 FFFD FFFD FFFD - 5624 FFFD FFFD 5623 FFFD 6075 FFFD 646A - 646C 646B FFFD FFFD FFFD FFFD FFFD 6C74 - FFFD FFFD 6E56 6E55 FFFD FFFD 7063 FFFD - 4870 FFFD FFFD FFFD 4F49 4F47 4F48 FFFD - FFFD 562D FFFD 5628 5625 562C FFFD FFFD - FFFD 562E FFFD FFFD FFFD 562B 5627 FFFD - FFFD 5626 562A 5629 FFFD FFFD FFFD 5C2B - 5C26 5C24 5C2D 5C25 FFFD 5C21 FFFD 5C27 - FFFD FFFD 5C22 607E 5C23 5C2E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5C2A FFFD 5C29 - 5C28 FFFD 5C2C FFFD FFFD FFFD FFFD 6076 - 6079 FFFD FFFD 6078 FFFD 6122 607B 6121 - FFFD 607D 607C 607A FFFD 6077 FFFD FFFD - FFFD FFFD FFFD FFFD 6123 FFFD FFFD FFFD - FFFD FFFD 6472 6475 FFFD 6473 6477 FFFD - FFFD FFFD 6478 FFFD 6470 FFFD 6471 FFFD - 646F 6476 FFFD 646E 646D -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = 9BD3 - srcEnd = 9BF8 - mappingOffset = 42A5 - Mapping = - 6474 683C 6842 FFFD 683D FFFD 6840 6844 - FFFD 683F FFFD 6837 FFFD 6836 6843 683A - FFFD 6838 6841 6839 FFFD FFFD FFFD 6834 - 6835 683E FFFD FFFD FFFD 683B FFFD FFFD - FFFD FFFD FFFD FFFD 6A7A 6A7D -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = 9C05 - srcEnd = 9C7A - mappingOffset = 42CB - Mapping = - 6A7B 6B23 6B21 6A79 6B26 FFFD 6A78 FFFD - FFFD 6B22 FFFD FFFD FFFD 6A7C FFFD 6B25 - FFFD FFFD 6B24 FFFD FFFD FFFD FFFD 6C77 - 6C76 FFFD FFFD FFFD 6C7D FFFD 6C79 6C7C - FFFD FFFD FFFD 6C7A 6C7B FFFD 6C75 6C78 - FFFD FFFD FFFD FFFD FFFD 6E61 6E5C 6E60 - FFFD 6E63 6E5F FFFD 6E5B FFFD FFFD 6E5E - 6E62 FFFD 6E59 6A7E 6E5D FFFD FFFD 6E5A - FFFD 6E57 FFFD 6E58 FFFD 6F68 6F6A 6F6D - 6F69 6F6E FFFD 6F67 FFFD 6F65 FFFD FFFD - 6F6B FFFD FFFD 6F66 6F6C FFFD FFFD FFFD - FFFD 7068 FFFD 7069 FFFD 7067 7064 FFFD - FFFD 7066 7065 7149 FFFD FFFD FFFD FFFD - 714B 714A FFFD FFFD 7169 FFFD 7168 7167 - 716A FFFD FFFD FFFD 7238 723C -End of Item 0081 - -Begin of Item 0082 - Format 1 - srcBegin = 9CE6 - srcEnd = 9E1D - mappingOffset = 4341 - Mapping = - 4154 4873 FFFD FFFD 4871 FFFD FFFD 4872 - FFFD FFFD FFFD 4F4A 4F4B FFFD FFFD 4F4C - FFFD 5633 FFFD 5636 5630 5637 562F 5631 - FFFD 5632 5635 FFFD FFFD FFFD 563A 5639 - FFFD 5634 5638 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5C38 FFFD FFFD FFFD 5C33 FFFD - FFFD 5C30 5C36 5C39 FFFD FFFD FFFD 5C35 - 5C32 5C3A 5C31 FFFD 5C37 FFFD FFFD 5C2F - FFFD FFFD FFFD 5C34 FFFD FFFD FFFD 6135 - 6128 6129 612C 612A FFFD 6124 FFFD FFFD - 6127 6131 612B FFFD FFFD FFFD FFFD 6133 - 6130 FFFD 6132 6125 612E 612F FFFD 612D - FFFD FFFD FFFD FFFD 647C 647E 6523 FFFD - FFFD 647B FFFD FFFD 6525 647A 6526 FFFD - 6522 6524 6528 6521 6529 647D 6479 FFFD - FFFD 6527 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6126 685E 6855 FFFD 6851 FFFD FFFD - FFFD 685A 6854 684A FFFD 6857 6852 6853 - FFFD 6845 684C 685B FFFD 6858 FFFD 6850 - FFFD 685C 684B 6846 6859 FFFD 6848 6856 - 684D 685D 6849 FFFD 6847 684E 684F FFFD - FFFD FFFD 6B2D FFFD 6B2B FFFD 6B30 FFFD - 6B3C 6B33 6B2C 6B28 6B35 6B2E 6B31 6B2A - 6B38 6B27 6B2F 6B34 6B36 6B39 6B29 FFFD - 6B3D 6B3E 6B37 6B3B 6B32 FFFD 6D2F 6D32 - FFFD FFFD FFFD 6D31 6D36 6D34 FFFD 6D2B - 6D21 6C7E FFFD 6D2D 6D2E 6D2A 6D22 FFFD - 6D27 6B3A FFFD 6D23 FFFD 6D29 FFFD 6D28 - FFFD 6D24 6D30 FFFD 6D25 6E68 6D33 6D35 - 6D2C 6D26 6E69 6E6B 6E65 FFFD FFFD 6E72 - 6E70 FFFD 6E6F 6E6E 6E67 6E64 6E6A 6E73 - 6E66 6E6C FFFD 6F77 6F7C 6F72 6F75 FFFD - 6F79 FFFD 7022 6E6D FFFD 6F73 6F7D 7023 - 6F78 6F71 6F7B FFFD 6F7A 7021 6F7E 6E71 - 6F76 6F70 6F74 FFFD FFFD 6F6F FFFD 7074 - 706B 7073 7070 7071 706A 706D 7075 706F - 706E 706C FFFD 7072 FFFD 714C FFFD 714D - FFFD 714F 714E 7151 7150 716C 716B 7227 - FFFD 7228 FFFD 7234 FFFD FFFD FFFD 723D -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = 9E7A - srcEnd = 9F7E - mappingOffset = 4479 - Mapping = - 6D37 FFFD FFFD FFFD FFFD FFFD 4874 FFFD - FFFD 563B FFFD FFFD 5C3C 5C3D 5C3B 6137 - 6136 FFFD 652B 6138 652A FFFD FFFD 6860 - FFFD FFFD 685F FFFD FFFD FFFD FFFD 6B3F - 6B41 6B40 6D38 FFFD FFFD FFFD 7076 7152 - FFFD FFFD 7241 FFFD FFFD 4F4D FFFD FFFD - FFFD FFFD FFFD 5C3F 5C3E FFFD 6139 FFFD - FFFD FFFD FFFD FFFD 6E74 7239 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6861 FFFD - 7024 FFFD FFFD FFFD FFFD FFFD 613A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7025 FFFD - FFFD 563C FFFD 5C40 5C41 FFFD FFFD FFFD - 613B FFFD FFFD FFFD FFFD 652C FFFD FFFD - FFFD FFFD 6B43 6B42 6B45 6B44 FFFD FFFD - FFFD 6D39 FFFD 6D3B 6D3A FFFD 6E75 FFFD - 7026 7027 FFFD 7153 716D FFFD FFFD 4155 - 5C42 613C 6862 4875 FFFD 613D 652E 652D - FFFD FFFD FFFD FFFD 7028 FFFD FFFD 7154 - 716E FFFD FFFD FFFD FFFD 563D 563E FFFD - 5C43 FFFD FFFD FFFD 652F FFFD 6D3D FFFD - 6D3E 6D3C 7029 FFFD 7077 FFFD FFFD FFFD - 6140 613F 613E 6530 FFFD FFFD 6534 6533 - 6532 6531 FFFD 6863 6B47 FFFD 6B46 6D3F - 6E78 6E77 FFFD 6E76 702C 702B 702A FFFD - FFFD FFFD FFFD 5C44 FFFD FFFD 6864 6865 - 6E79 702D FFFD FFFD 7078 7155 7229 7243 - FFFD FFFD 6535 6866 6D40 702E FFFD FFFD - FFFD FFFD 6141 6536 6867 6868 6869 6B4C - FFFD 6B48 FFFD 6B4B 6B4A FFFD 6B49 FFFD - FFFD FFFD 6D42 6D41 FFFD FFFD FFFD FFFD - FFFD 6E7A FFFD FFFD 7031 7032 7030 702F - FFFD FFFD 7079 707A 707B FFFD 7156 7159 - 7158 7157 FFFD FFFD 7242 -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = 9F91 - srcEnd = 9FA4 - mappingOffset = 457E - Mapping = - 6B4D 6D43 FFFD FFFD 6E7B FFFD FFFD 7244 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6142 - FFFD 6E7C FFFD 716F -End of Item 0084 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0085, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0026, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x01B5, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0000 */ -/* Total of Format 1 : 0x0080 */ -/* Total of Format 2 : 0x0005 */ -/* Total of Format 3 : 0x0000 */ - -0x1211, 0x1111, 0x1111, 0x1121, 0x1111, 0x2111, 0x1112, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x2111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0026 Start of MapCell Array */ -/* 0000 */ 0x4E07, 0x4E0F, 0x0000, -/* 0001 */ 0x4E2E, 0x4E47, 0x0009, -/* 0002 */ 0x4E5C, 0x0000, 0x2122, -/* 0003 */ 0x4E7F, 0x4E93, 0x0023, -/* 0004 */ 0x4EB6, 0x4EC9, 0x0038, -/* 0005 */ 0x4EDA, 0x4F9E, 0x004C, -/* 0006 */ 0x4FB2, 0x4FDC, 0x0111, -/* 0007 */ 0x4FEC, 0x4FF7, 0x013C, -/* 0008 */ 0x5005, 0x5073, 0x0148, -/* 0009 */ 0x5082, 0x513D, 0x01B7, -/* 000A */ 0x515A, 0x515F, 0x0273, -/* 000B */ 0x5187, 0x519E, 0x0279, -/* 000C */ 0x51B1, 0x51DE, 0x0291, -/* 000D */ 0x51F5, 0x0000, 0x2123, -/* 000E */ 0x5209, 0x5221, 0x02BF, -/* 000F */ 0x5231, 0x5235, 0x02D8, -/* 0010 */ 0x5244, 0x5299, 0x02DD, -/* 0011 */ 0x52A6, 0x52AE, 0x0333, -/* 0012 */ 0x52BC, 0x52D6, 0x033C, -/* 0013 */ 0x52E9, 0x52FC, 0x0357, -/* 0014 */ 0x5309, 0x533D, 0x036B, -/* 0015 */ 0x534C, 0x534D, 0x03A0, -/* 0016 */ 0x5363, 0x53B9, 0x03A2, -/* 0017 */ 0x53E1, 0x0000, 0x5646, -/* 0018 */ 0x5407, 0x0000, 0x2225, -/* 0019 */ 0x5418, 0x5454, 0x03F9, -/* 001A */ 0x5460, 0x551A, 0x0436, -/* 001B */ 0x5526, 0x5552, 0x04F1, -/* 001C */ 0x5562, 0x5565, 0x051E, -/* 001D */ 0x5575, 0x5595, 0x0522, -/* 001E */ 0x55A1, 0x564C, 0x0543, -/* 001F */ 0x5658, 0x5734, 0x05EF, -/* 0020 */ 0x5741, 0x5752, 0x06CC, -/* 0021 */ 0x5762, 0x5780, 0x06DE, -/* 0022 */ 0x578C, 0x57A5, 0x06FD, -/* 0023 */ 0x57B5, 0x58E8, 0x0717, -/* 0024 */ 0x58F4, 0x5917, 0x084B, -/* 0025 */ 0x592C, 0x592F, 0x086F, -/* 0026 */ 0x593C, 0x5A1E, 0x0873, -/* 0027 */ 0x5A2D, 0x5B56, 0x0956, -/* 0028 */ 0x5B62, 0x5B95, 0x0A80, -/* 0029 */ 0x5BA7, 0x5BAD, 0x0AB4, -/* 002A */ 0x5BC0, 0x5BF2, 0x0ABB, -/* 002B */ 0x5C03, 0x5CB6, 0x0AEE, -/* 002C */ 0x5CC6, 0x5CDF, 0x0BA2, -/* 002D */ 0x5CEC, 0x5DE0, 0x0BBC, -/* 002E */ 0x5DF0, 0x5E8D, 0x0CB1, -/* 002F */ 0x5E9B, 0x5EB9, 0x0D4F, -/* 0030 */ 0x5EC5, 0x5EF2, 0x0D6E, -/* 0031 */ 0x5F02, 0x5F07, 0x0D9C, -/* 0032 */ 0x5F1A, 0x5F58, 0x0DA2, -/* 0033 */ 0x5F67, 0x5F86, 0x0DE1, -/* 0034 */ 0x5F96, 0x6072, 0x0E01, -/* 0035 */ 0x6080, 0x60A2, 0x0EDE, -/* 0036 */ 0x60B0, 0x60E4, 0x0F01, -/* 0037 */ 0x60F2, 0x622D, 0x0F36, -/* 0038 */ 0x623A, 0x6294, 0x1072, -/* 0039 */ 0x62A9, 0x62BE, 0x10CD, -/* 003A */ 0x62CA, 0x62D1, 0x10E3, -/* 003B */ 0x62EB, 0x6315, 0x10EB, -/* 003C */ 0x6329, 0x63B1, 0x1116, -/* 003D */ 0x63BD, 0x63F6, 0x119F, -/* 003E */ 0x6409, 0x64B1, 0x11D9, -/* 003F */ 0x64BD, 0x65E1, 0x1282, -/* 0040 */ 0x65EE, 0x663A, 0x13A7, -/* 0041 */ 0x6647, 0x6723, 0x13F4, -/* 0042 */ 0x6733, 0x675D, 0x14D1, -/* 0043 */ 0x676C, 0x679F, 0x14FC, -/* 0044 */ 0x67AE, 0x67FC, 0x1530, -/* 0045 */ 0x6812, 0x684F, 0x157F, -/* 0046 */ 0x686B, 0x68B4, 0x15BD, -/* 0047 */ 0x68C6, 0x6917, 0x1607, -/* 0048 */ 0x6925, 0x6B60, 0x1659, -/* 0049 */ 0x6B6D, 0x6C9D, 0x1895, -/* 004A */ 0x6CAD, 0x6D42, 0x19C6, -/* 004B */ 0x6D58, 0x6D98, 0x1A5C, -/* 004C */ 0x6DAB, 0x6E03, 0x1A9D, -/* 004D */ 0x6E1C, 0x6E79, 0x1AF6, -/* 004E */ 0x6E88, 0x6EDC, 0x1B54, -/* 004F */ 0x6EEB, 0x70E2, 0x1BA9, -/* 0050 */ 0x70F0, 0x7229, 0x1DA1, -/* 0051 */ 0x723F, 0x7432, 0x1EDB, -/* 0052 */ 0x7440, 0x7548, 0x20CF, -/* 0053 */ 0x755B, 0x7598, 0x21D8, -/* 0054 */ 0x75A7, 0x776F, 0x2216, -/* 0055 */ 0x777C, 0x7813, 0x23DF, -/* 0056 */ 0x7821, 0x7835, 0x2477, -/* 0057 */ 0x7845, 0x7AC1, 0x248C, -/* 0058 */ 0x7AD1, 0x7AD8, 0x2709, -/* 0059 */ 0x7AE4, 0x7BBE, 0x2711, -/* 005A */ 0x7BCA, 0x7CD7, 0x27EC, -/* 005B */ 0x7CE8, 0x7E9B, 0x28FA, -/* 005C */ 0x7F39, 0x80E6, 0x2AAE, -/* 005D */ 0x80F2, 0x8101, 0x2C5C, -/* 005E */ 0x8115, 0x812D, 0x2C6C, -/* 005F */ 0x813A, 0x8177, 0x2C85, -/* 0060 */ 0x8183, 0x82C3, 0x2CC3, -/* 0061 */ 0x82D5, 0x8356, 0x2E04, -/* 0062 */ 0x8373, 0x83B0, 0x2E86, -/* 0063 */ 0x83BF, 0x84DB, 0x2EC4, -/* 0064 */ 0x84E7, 0x860C, 0x2FE1, -/* 0065 */ 0x8618, 0x885A, 0x3107, -/* 0066 */ 0x8867, 0x8988, 0x334A, -/* 0067 */ 0x8995, 0x89BF, 0x346C, -/* 0068 */ 0x89D3, 0x8A12, 0x3497, -/* 0069 */ 0x8A1E, 0x8A61, 0x34D7, -/* 006A */ 0x8A74, 0x8A99, 0x351B, -/* 006B */ 0x8AAB, 0x0000, 0x4E32, -/* 006C */ 0x8AB8, 0x8B9F, 0x3541, -/* 006D */ 0x8C39, 0x8CBE, 0x3629, -/* 006E */ 0x8CCC, 0x8D19, 0x36AF, -/* 006F */ 0x8D68, 0x8EA9, 0x36FD, -/* 0070 */ 0x8EBD, 0x8F64, 0x383F, -/* 0071 */ 0x8FB4, 0x9052, 0x38E7, -/* 0072 */ 0x9067, 0x91C3, 0x3986, -/* 0073 */ 0x91D3, 0x923A, 0x3AE3, -/* 0074 */ 0x9246, 0x9483, 0x3B4B, -/* 0075 */ 0x957A, 0x959F, 0x3D89, -/* 0076 */ 0x95AB, 0x95E5, 0x3DAF, -/* 0077 */ 0x961E, 0x965F, 0x3DEA, -/* 0078 */ 0x966B, 0x974B, 0x3E2C, -/* 0079 */ 0x9758, 0x975A, 0x3F0D, -/* 007A */ 0x976A, 0x9835, 0x3F10, -/* 007B */ 0x9841, 0x9874, 0x3FDC, -/* 007C */ 0x98A9, 0x98CC, 0x4010, -/* 007D */ 0x98E3, 0x9961, 0x4034, -/* 007E */ 0x9997, 0x9A6B, 0x40B3, -/* 007F */ 0x9AAB, 0x9BC7, 0x4188, -/* 0080 */ 0x9BD3, 0x9BF8, 0x42A5, -/* 0081 */ 0x9C05, 0x9C7A, 0x42CB, -/* 0082 */ 0x9CE6, 0x9E1D, 0x4341, -/* 0083 */ 0x9E7A, 0x9F7E, 0x4479, -/* 0084 */ 0x9F91, 0x9FA4, 0x457E, -/*-------------------------------------------------------*/ -/* Offset=0x01B5 Start of MappingTable */ - -/* 0000 */ 0x2126, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2127, 0xFFFD, 0x212F, -/* 0008 */ 0x212D, 0x2130, 0xFFFD, 0xFFFD, 0x2143, 0xFFFD, 0x2531, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2144, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2121, 0xFFFD, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0x2128, 0x334E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4156, -/* 0028 */ 0x4157, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0x2129, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2131, -/* 0038 */ 0x4158, 0xFFFD, 0xFFFD, 0x6D44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2132, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0x2134, 0x2133, 0x214A, 0xFFFD, 0x2146, 0x2149, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2148, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0x2145, 0x2147, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x216F, 0xFFFD, 0xFFFD, 0x2179, 0x216D, -/* 0068 */ 0xFFFD, 0x2171, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xFFFD, 0x2170, 0xFFFD, 0x2174, 0xFFFD, 0x2178, 0x2175, -/* 0078 */ 0xFFFD, 0xFFFD, 0x2172, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0x216A, 0xFFFD, 0xFFFD, 0xFFFD, 0x217A, 0x2177, 0x216E, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0x216B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2173, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2176, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x216C, 0x2328, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2329, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x227B, 0xFFFD, 0xFFFD, -/* 00B0 */ 0x2322, 0x232A, 0xFFFD, 0x2326, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x227D, 0xFFFD, 0xFFFD, 0x253D, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2324, 0x227E, 0xFFFD, 0xFFFD, -/* 00C8 */ 0x227A, 0xFFFD, 0x2327, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0x2325, 0xFFFD, 0x232B, 0x227C, 0xFFFD, 0x2321, 0xFFFD, -/* 00D8 */ 0xFFFD, 0x2323, 0xFFFD, 0xFFFD, 0x253F, 0x254B, 0xFFFD, 0xFFFD, -/* 00E0 */ 0x254C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2539, 0xFFFD, -/* 00E8 */ 0x2538, 0x253C, 0x2543, 0x2541, 0xFFFD, 0xFFFD, 0x2533, 0x2535, -/* 00F0 */ 0xFFFD, 0xFFFD, 0x2536, 0x2542, 0x2549, 0xFFFD, 0x253B, 0x2534, -/* 00F8 */ 0xFFFD, 0x2537, 0xFFFD, 0x253A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0100 */ 0xFFFD, 0xFFFD, 0x2544, 0xFFFD, 0x2548, 0xFFFD, 0x2546, 0x254A, -/* 0108 */ 0xFFFD, 0x253E, 0x2532, 0xFFFD, 0x2540, 0xFFFD, 0x2545, 0xFFFD, -/* 0110 */ 0x2547, 0x2922, 0x292A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0118 */ 0x2930, 0x292E, 0x2929, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x292F, -/* 0120 */ 0x2925, 0xFFFD, 0xFFFD, 0xFFFD, 0x287E, 0xFFFD, 0x292C, 0xFFFD, -/* 0128 */ 0x2923, 0xFFFD, 0x2924, 0xFFFD, 0x287D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0130 */ 0xFFFD, 0xFFFD, 0x2921, 0x2926, 0xFFFD, 0x292D, 0xFFFD, 0xFFFD, -/* 0138 */ 0x2928, 0xFFFD, 0x292B, 0x2927, 0x2931, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D71, 0x2D70, 0x2D75, 0x2D76, -/* 0148 */ 0x2D6A, 0xFFFD, 0x2D6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0150 */ 0xFFFD, 0x2D7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D6C, 0xFFFD, -/* 0158 */ 0x335E, 0xFFFD, 0x2D77, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D6F, 0x2D78, -/* 0160 */ 0xFFFD, 0x2D69, 0xFFFD, 0x2D79, 0xFFFD, 0x2D6D, 0xFFFD, 0xFFFD, -/* 0168 */ 0xFFFD, 0xFFFD, 0x2D7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D74, -/* 0170 */ 0xFFFD, 0xFFFD, 0x2D7C, 0x2D6E, 0x2D7D, 0xFFFD, 0x2D72, 0xFFFD, -/* 0178 */ 0x2D7B, 0xFFFD, 0x2D73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3366, 0x335A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0188 */ 0x335F, 0x3365, 0xFFFD, 0x3358, 0xFFFD, 0x335C, 0x3355, 0xFFFD, -/* 0190 */ 0x3359, 0xFFFD, 0xFFFD, 0xFFFD, 0x336A, 0xFFFD, 0x3354, 0xFFFD, -/* 0198 */ 0xFFFD, 0xFFFD, 0x3369, 0xFFFD, 0xFFFD, 0xFFFD, 0x335B, 0xFFFD, -/* 01A0 */ 0x3356, 0x3352, 0x3360, 0x3353, 0x3351, 0x335D, 0x3363, 0x3364, -/* 01A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A3F, 0x3361, 0x3350, 0x3362, 0xFFFD, -/* 01B0 */ 0xFFFD, 0x3367, 0xFFFD, 0x334F, 0xFFFD, 0x3357, 0x3368, 0x3A42, -/* 01B8 */ 0x3A3B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01C0 */ 0x3A39, 0x3A3C, 0xFFFD, 0x3A3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A41, -/* 01C8 */ 0xFFFD, 0x3A37, 0x3A36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01D0 */ 0x3A35, 0x3A40, 0x3A3E, 0x3A38, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01D8 */ 0x3A3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x415C, 0xFFFD, 0x4162, 0x4165, 0xFFFD, -/* 01E8 */ 0xFFFD, 0x415F, 0xFFFD, 0x4168, 0xFFFD, 0x4169, 0xFFFD, 0x4164, -/* 01F0 */ 0xFFFD, 0xFFFD, 0x4159, 0xFFFD, 0x415A, 0xFFFD, 0x4163, 0x4161, -/* 01F8 */ 0xFFFD, 0x415D, 0xFFFD, 0x415B, 0xFFFD, 0x4160, 0x4167, 0x415E, -/* 0200 */ 0x4166, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0208 */ 0x4921, 0x4877, 0xFFFD, 0xFFFD, 0x4878, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0210 */ 0x487B, 0xFFFD, 0x487D, 0xFFFD, 0xFFFD, 0x4926, 0xFFFD, 0xFFFD, -/* 0218 */ 0x4925, 0x487E, 0xFFFD, 0x4876, 0xFFFD, 0x4879, 0xFFFD, 0x487C, -/* 0220 */ 0xFFFD, 0x4922, 0xFFFD, 0xFFFD, 0x4924, 0x4923, 0xFFFD, 0xFFFD, -/* 0228 */ 0x487A, 0xFFFD, 0xFFFD, 0x4F54, 0xFFFD, 0x4F51, 0xFFFD, 0xFFFD, -/* 0230 */ 0xFFFD, 0xFFFD, 0x4F58, 0x4F55, 0x4F4E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0238 */ 0x4F4F, 0xFFFD, 0xFFFD, 0x4F52, 0x4F53, 0xFFFD, 0xFFFD, 0x4F59, -/* 0240 */ 0x4F56, 0x4F57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5643, 0xFFFD, -/* 0248 */ 0x5640, 0xFFFD, 0xFFFD, 0xFFFD, 0x5641, 0xFFFD, 0xFFFD, 0x5642, -/* 0250 */ 0xFFFD, 0x563F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C49, 0xFFFD, 0x5C47, -/* 0258 */ 0xFFFD, 0x5C48, 0x5C46, 0x5C45, 0xFFFD, 0xFFFD, 0x5C4A, 0xFFFD, -/* 0260 */ 0xFFFD, 0xFFFD, 0x6144, 0x6145, 0xFFFD, 0x4F50, 0x6143, 0xFFFD, -/* 0268 */ 0xFFFD, 0x6537, 0x6538, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B4F, 0x6B4E, -/* 0270 */ 0xFFFD, 0xFFFD, 0x6E7D, 0x2E21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0278 */ 0x3A44, 0x212E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0280 */ 0xFFFD, 0x232C, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E23, 0x2E22, 0xFFFD, -/* 0288 */ 0xFFFD, 0xFFFD, 0x2135, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0290 */ 0x254D, 0x217B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0298 */ 0xFFFD, 0x232D, 0xFFFD, 0xFFFD, 0x254E, 0xFFFD, 0x254F, 0xFFFD, -/* 02A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E25, 0x2E26, 0xFFFD, 0xFFFD, -/* 02A8 */ 0x2E27, 0xFFFD, 0x2E24, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E28, 0xFFFD, -/* 02B0 */ 0x336B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A45, 0xFFFD, 0xFFFD, 0x416A, -/* 02B8 */ 0x4927, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5644, 0x214C, -/* 02C0 */ 0xFFFD, 0xFFFD, 0x214B, 0xFFFD, 0xFFFD, 0xFFFD, 0x217D, 0xFFFD, -/* 02C8 */ 0xFFFD, 0x217C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02D0 */ 0xFFFD, 0xFFFD, 0x232E, 0xFFFD, 0x232F, 0xFFFD, 0xFFFD, 0x2330, -/* 02D8 */ 0x2554, 0x2551, 0x2552, 0xFFFD, 0x2550, 0x2932, 0xFFFD, 0x2553, -/* 02E0 */ 0xFFFD, 0xFFFD, 0x2933, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2E2B, 0xFFFD, 0xFFFD, 0x2E2E, 0xFFFD, -/* 02F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2E2A, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E2C, -/* 02F8 */ 0x2E2D, 0xFFFD, 0x2E29, 0x2E2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x336C, 0x336E, 0x336D, 0x336F, -/* 0308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0310 */ 0xFFFD, 0x416C, 0xFFFD, 0x416B, 0x416D, 0x416E, 0xFFFD, 0xFFFD, -/* 0318 */ 0xFFFD, 0x4928, 0x4929, 0xFFFD, 0xFFFD, 0x4C61, 0xFFFD, 0xFFFD, -/* 0320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F5A, 0x4F5B, 0xFFFD, 0xFFFD, -/* 0328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6539, -/* 0330 */ 0x6B51, 0x6B50, 0x6E7E, 0x217E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0338 */ 0xFFFD, 0xFFFD, 0x2331, 0x2332, 0x2555, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0340 */ 0x2934, 0xFFFD, 0x2935, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E30, 0xFFFD, 0xFFFD, -/* 0350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3371, 0xFFFD, 0xFFFD, 0x3370, 0x492A, -/* 0358 */ 0xFFFD, 0x492B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F5D, 0xFFFD, 0x4F5C, -/* 0360 */ 0xFFFD, 0xFFFD, 0x5C4B, 0xFFFD, 0xFFFD, 0x653A, 0xFFFD, 0xFFFD, -/* 0368 */ 0xFFFD, 0xFFFD, 0x2136, 0x2333, 0x2556, 0x2557, 0xFFFD, 0xFFFD, -/* 0370 */ 0x2E31, 0xFFFD, 0xFFFD, 0x3A47, 0x3A46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2124, 0xFFFD, 0x214D, 0xFFFD, -/* 0380 */ 0xFFFD, 0x2222, 0xFFFD, 0xFFFD, 0x2221, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3372, -/* 0390 */ 0xFFFD, 0xFFFD, 0x492C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5645, 0xFFFD, -/* 0398 */ 0xFFFD, 0x686A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2558, 0x2936, -/* 03A0 */ 0x214E, 0x2223, 0x2334, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2137, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03B0 */ 0xFFFD, 0x2335, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2937, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03C0 */ 0xFFFD, 0x2125, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03C8 */ 0xFFFD, 0x2224, 0xFFFD, 0xFFFD, 0xFFFD, 0x2336, 0x2337, 0xFFFD, -/* 03D0 */ 0xFFFD, 0x2559, 0xFFFD, 0x255A, 0xFFFD, 0x2939, 0x2938, 0x293B, -/* 03D8 */ 0x293A, 0xFFFD, 0xFFFD, 0x3373, 0xFFFD, 0x2E32, 0xFFFD, 0xFFFD, -/* 03E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A48, 0xFFFD, 0xFFFD, 0x3A49, 0xFFFD, -/* 03E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x492D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x653B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03F8 */ 0x2138, 0x2340, 0x233D, 0xFFFD, 0xFFFD, 0x233E, 0xFFFD, 0xFFFD, -/* 0400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2345, 0x233F, 0xFFFD, -/* 0408 */ 0xFFFD, 0x2344, 0xFFFD, 0x233A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0410 */ 0xFFFD, 0x2338, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0418 */ 0x2339, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2341, 0xFFFD, -/* 0420 */ 0xFFFD, 0xFFFD, 0x2343, 0xFFFD, 0xFFFD, 0xFFFD, 0x233C, 0xFFFD, -/* 0428 */ 0x2346, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0430 */ 0x2342, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x233B, 0x256B, 0x256A, -/* 0438 */ 0xFFFD, 0x256D, 0x256F, 0x2564, 0x2567, 0x256E, 0xFFFD, 0xFFFD, -/* 0440 */ 0xFFFD, 0x2561, 0x2565, 0xFFFD, 0xFFFD, 0x2569, 0x294A, 0xFFFD, -/* 0448 */ 0x294E, 0xFFFD, 0x2566, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0450 */ 0x2562, 0xFFFD, 0xFFFD, 0xFFFD, 0x2563, 0x255C, 0xFFFD, 0x255D, -/* 0458 */ 0x255F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x255B, 0x2560, 0xFFFD, -/* 0460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2568, 0xFFFD, 0xFFFD, 0xFFFD, 0x255E, -/* 0468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x256C, 0xFFFD, -/* 0470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2949, 0x293D, -/* 0478 */ 0x294C, 0xFFFD, 0xFFFD, 0x293F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x293E, 0x2944, 0xFFFD, 0x2950, 0xFFFD, -/* 0488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2946, 0x2943, 0xFFFD, 0xFFFD, -/* 0490 */ 0x293C, 0xFFFD, 0x294B, 0xFFFD, 0x294D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0498 */ 0xFFFD, 0x2941, 0xFFFD, 0x2947, 0x2948, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2940, 0xFFFD, 0xFFFD, -/* 04A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2945, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x294F, 0xFFFD, 0x2E46, 0xFFFD, -/* 04B8 */ 0x2E34, 0xFFFD, 0x2E39, 0xFFFD, 0xFFFD, 0x2E37, 0xFFFD, 0xFFFD, -/* 04C0 */ 0xFFFD, 0x2E3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E41, -/* 04C8 */ 0xFFFD, 0x2E38, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E44, 0x2E45, 0xFFFD, -/* 04D0 */ 0xFFFD, 0x2E43, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E3B, 0xFFFD, 0xFFFD, -/* 04D8 */ 0xFFFD, 0x2E48, 0x2E3C, 0x2E40, 0xFFFD, 0xFFFD, 0x2E3D, 0xFFFD, -/* 04E0 */ 0x2E42, 0x2E49, 0x3424, 0xFFFD, 0x2E47, 0xFFFD, 0xFFFD, 0x2E3F, -/* 04E8 */ 0x2E36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E35, 0xFFFD, 0xFFFD, -/* 04F0 */ 0x2E3A, 0x2E33, 0xFFFD, 0xFFFD, 0xFFFD, 0x337A, 0xFFFD, 0xFFFD, -/* 04F8 */ 0x342A, 0xFFFD, 0xFFFD, 0x3421, 0xFFFD, 0x3425, 0xFFFD, 0x3379, -/* 0500 */ 0x337E, 0x337D, 0xFFFD, 0xFFFD, 0x3428, 0xFFFD, 0x342B, 0x3376, -/* 0508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x342C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0510 */ 0x3423, 0xFFFD, 0xFFFD, 0x3429, 0xFFFD, 0xFFFD, 0x342D, 0xFFFD, -/* 0518 */ 0x3377, 0x3427, 0xFFFD, 0x3378, 0x337B, 0x3422, 0x337C, 0xFFFD, -/* 0520 */ 0xFFFD, 0x3426, 0x3374, 0x3375, 0x3A4E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0528 */ 0xFFFD, 0xFFFD, 0x3A59, 0xFFFD, 0x3A5C, 0xFFFD, 0x3A55, 0xFFFD, -/* 0530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A52, 0xFFFD, 0xFFFD, -/* 0538 */ 0xFFFD, 0x3A5A, 0x417C, 0x3A5F, 0x3A53, 0xFFFD, 0x3A4A, 0x3A57, -/* 0540 */ 0x3A51, 0xFFFD, 0x3A5D, 0x3A5E, 0x3A50, 0x3A56, 0x3A58, 0x3A4C, -/* 0548 */ 0x3A5B, 0xFFFD, 0x3A4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A4D, -/* 0550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A54, -/* 0558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0560 */ 0xFFFD, 0x417A, 0x4176, 0xFFFD, 0x4227, 0x416F, 0x4178, 0xFFFD, -/* 0568 */ 0xFFFD, 0xFFFD, 0x4223, 0xFFFD, 0x4174, 0x4173, 0x4171, 0x4225, -/* 0570 */ 0xFFFD, 0x417D, 0x4172, 0xFFFD, 0x417B, 0xFFFD, 0x4177, 0x417E, -/* 0578 */ 0x4222, 0xFFFD, 0xFFFD, 0x4226, 0xFFFD, 0x4170, 0xFFFD, 0x4175, -/* 0580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4221, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4179, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4224, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0598 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x493C, 0x4938, 0xFFFD, 0x4932, 0xFFFD, -/* 05A0 */ 0xFFFD, 0x493B, 0xFFFD, 0x4935, 0x4937, 0xFFFD, 0x493A, 0xFFFD, -/* 05A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4930, 0xFFFD, -/* 05B0 */ 0xFFFD, 0x4933, 0xFFFD, 0xFFFD, 0x4931, 0x4936, 0xFFFD, 0x492F, -/* 05B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4934, 0x4939, -/* 05C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05C8 */ 0xFFFD, 0x492E, 0xFFFD, 0xFFFD, 0x4F6E, 0xFFFD, 0x4F6B, 0xFFFD, -/* 05D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F69, 0xFFFD, 0x4F61, -/* 05D8 */ 0xFFFD, 0xFFFD, 0x4F6D, 0xFFFD, 0x4F6F, 0xFFFD, 0xFFFD, 0x4F6A, -/* 05E0 */ 0x4F6C, 0xFFFD, 0x4F68, 0x4F62, 0x4F5F, 0xFFFD, 0xFFFD, 0x3A4F, -/* 05E8 */ 0x4F65, 0xFFFD, 0x4F5E, 0x4F64, 0x4F63, 0xFFFD, 0x4F60, 0x4F66, -/* 05F0 */ 0xFFFD, 0x4F67, 0xFFFD, 0xFFFD, 0xFFFD, 0x564F, 0xFFFD, 0x5648, -/* 05F8 */ 0xFFFD, 0xFFFD, 0x564C, 0xFFFD, 0xFFFD, 0x564B, 0xFFFD, 0xFFFD, -/* 0600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x564D, 0x5649, 0xFFFD, 0x5647, -/* 0608 */ 0xFFFD, 0x564E, 0x564A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5650, 0xFFFD, -/* 0610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C52, 0x5C54, 0xFFFD, -/* 0618 */ 0x5C55, 0x5C53, 0x5C51, 0x5C50, 0xFFFD, 0x5C4F, 0xFFFD, 0xFFFD, -/* 0620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C4D, 0x5C4E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0628 */ 0xFFFD, 0xFFFD, 0x5C4C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6148, 0x6146, -/* 0630 */ 0x614B, 0x6149, 0xFFFD, 0x6147, 0x614A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x653E, 0x653F, 0xFFFD, -/* 0640 */ 0xFFFD, 0x6540, 0x653C, 0x6541, 0x653D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0648 */ 0xFFFD, 0x686B, 0x686D, 0xFFFD, 0x686C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B53, 0x6B54, 0xFFFD, 0xFFFD, -/* 0658 */ 0xFFFD, 0xFFFD, 0x6B52, 0xFFFD, 0x6D46, 0x6D45, 0xFFFD, 0xFFFD, -/* 0660 */ 0xFFFD, 0xFFFD, 0x6D47, 0xFFFD, 0x7034, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0668 */ 0xFFFD, 0xFFFD, 0x7033, 0x707C, 0xFFFD, 0xFFFD, 0x212A, 0xFFFD, -/* 0670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2227, 0xFFFD, -/* 0678 */ 0x2226, 0xFFFD, 0xFFFD, 0xFFFD, 0x2349, 0xFFFD, 0x2348, 0xFFFD, -/* 0680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2347, 0xFFFD, 0xFFFD, -/* 0688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2570, 0xFFFD, -/* 0690 */ 0x2571, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0698 */ 0x2E4A, 0x2E4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x342F, 0xFFFD, -/* 06A0 */ 0xFFFD, 0x342E, 0xFFFD, 0x3A60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4228, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06B0 */ 0xFFFD, 0x4F70, 0x5652, 0x5651, 0xFFFD, 0x715A, 0xFFFD, 0x2139, -/* 06B8 */ 0xFFFD, 0x214F, 0x2150, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06C0 */ 0xFFFD, 0x2229, 0xFFFD, 0xFFFD, 0xFFFD, 0x2228, 0xFFFD, 0xFFFD, -/* 06C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x222A, 0x234A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06D0 */ 0x234B, 0xFFFD, 0xFFFD, 0xFFFD, 0x234D, 0xFFFD, 0x234E, 0x234C, -/* 06D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x234F, 0x257E, 0xFFFD, -/* 06E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2621, 0xFFFD, 0xFFFD, 0x2575, -/* 06E8 */ 0xFFFD, 0x2574, 0xFFFD, 0x2572, 0x2577, 0x2576, 0x2573, 0x257C, -/* 06F0 */ 0x257D, 0x257A, 0x2578, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x257B, -/* 06F8 */ 0xFFFD, 0x2622, 0xFFFD, 0xFFFD, 0x2579, 0x2955, 0xFFFD, 0xFFFD, -/* 0700 */ 0x295B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2959, 0x295F, 0xFFFD, -/* 0708 */ 0x2956, 0x295A, 0x295C, 0x295E, 0x2958, 0xFFFD, 0x2957, 0x2952, -/* 0710 */ 0x2953, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2954, 0x295D, 0x2951, -/* 0718 */ 0x2E55, 0xFFFD, 0x2E54, 0x2E59, 0x2E50, 0xFFFD, 0x2E53, 0x2E52, -/* 0720 */ 0xFFFD, 0x2E56, 0xFFFD, 0x2E5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0728 */ 0x2E51, 0x2E57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E4C, 0xFFFD, -/* 0730 */ 0xFFFD, 0x343D, 0x2E58, 0xFFFD, 0x2E4F, 0xFFFD, 0xFFFD, 0x2E4E, -/* 0738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3434, 0xFFFD, -/* 0740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3444, 0x3432, 0x3440, 0xFFFD, 0x3442, -/* 0748 */ 0xFFFD, 0x3448, 0xFFFD, 0x344C, 0xFFFD, 0xFFFD, 0x3443, 0x3437, -/* 0750 */ 0x343F, 0xFFFD, 0x344D, 0x344B, 0x3441, 0x343C, 0x3435, 0x3A68, -/* 0758 */ 0x3433, 0xFFFD, 0x343A, 0xFFFD, 0xFFFD, 0x3430, 0x3446, 0x3438, -/* 0760 */ 0xFFFD, 0xFFFD, 0x3436, 0x3449, 0xFFFD, 0xFFFD, 0x344F, 0xFFFD, -/* 0768 */ 0xFFFD, 0x343E, 0x3439, 0xFFFD, 0xFFFD, 0x343B, 0x344A, 0x344E, -/* 0770 */ 0x3445, 0xFFFD, 0x3447, 0xFFFD, 0xFFFD, 0xFFFD, 0x3431, 0xFFFD, -/* 0778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A63, 0xFFFD, 0x3A6C, 0x3A6B, 0xFFFD, -/* 0780 */ 0x3A64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A66, 0xFFFD, 0x3A6A, -/* 0788 */ 0xFFFD, 0x3A65, 0x3A67, 0x3A61, 0xFFFD, 0xFFFD, 0x3A74, 0x3A73, -/* 0790 */ 0x3A70, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E4D, 0x3A6D, 0xFFFD, 0xFFFD, -/* 0798 */ 0x3A6F, 0x3A62, 0x3A72, 0x3A71, 0xFFFD, 0x3A75, 0xFFFD, 0x4236, -/* 07A0 */ 0xFFFD, 0x3A6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07A8 */ 0xFFFD, 0xFFFD, 0x3A69, 0x422E, 0xFFFD, 0xFFFD, 0xFFFD, 0x422D, -/* 07B0 */ 0x4231, 0x422C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4229, 0xFFFD, 0x4230, -/* 07B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4233, 0xFFFD, 0x4235, 0xFFFD, 0x4232, -/* 07C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4237, 0x422B, 0x4234, -/* 07C8 */ 0xFFFD, 0xFFFD, 0x422A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D0 */ 0xFFFD, 0x422F, 0xFFFD, 0x4238, 0xFFFD, 0xFFFD, 0x4944, 0xFFFD, -/* 07D8 */ 0x494A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4946, 0x494D, 0x493E, 0xFFFD, -/* 07E0 */ 0xFFFD, 0x4943, 0xFFFD, 0x4942, 0x494B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07E8 */ 0x4941, 0x4947, 0x494C, 0x493D, 0xFFFD, 0x4945, 0xFFFD, 0xFFFD, -/* 07F0 */ 0x4949, 0x494F, 0x493F, 0x4948, 0xFFFD, 0xFFFD, 0x494E, 0xFFFD, -/* 07F8 */ 0xFFFD, 0xFFFD, 0x4940, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F72, -/* 0800 */ 0xFFFD, 0xFFFD, 0x4F74, 0x4F79, 0xFFFD, 0x4F75, 0xFFFD, 0x4F78, -/* 0808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F71, 0x4F77, 0xFFFD, -/* 0810 */ 0xFFFD, 0x4F76, 0xFFFD, 0x4F73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5657, 0xFFFD, 0x5659, 0x5654, -/* 0820 */ 0xFFFD, 0x5656, 0xFFFD, 0xFFFD, 0x5658, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0828 */ 0x565A, 0xFFFD, 0x5653, 0x5655, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0830 */ 0xFFFD, 0x5C58, 0xFFFD, 0xFFFD, 0x5C59, 0xFFFD, 0x5C57, 0xFFFD, -/* 0838 */ 0x5C56, 0xFFFD, 0xFFFD, 0xFFFD, 0x6542, 0x6544, 0xFFFD, 0x6543, -/* 0840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x686E, 0xFFFD, 0xFFFD, -/* 0848 */ 0xFFFD, 0x6F22, 0x6F21, 0x2960, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4239, 0xFFFD, 0x4950, 0x4F7A, 0xFFFD, -/* 0858 */ 0xFFFD, 0xFFFD, 0x213A, 0xFFFD, 0xFFFD, 0x2350, 0xFFFD, 0xFFFD, -/* 0860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2623, 0x2961, 0x2E5B, 0xFFFD, 0xFFFD, -/* 0868 */ 0xFFFD, 0x6545, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2151, 0x213B, -/* 0870 */ 0xFFFD, 0xFFFD, 0x2152, 0x222B, 0xFFFD, 0xFFFD, 0xFFFD, 0x2351, -/* 0878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2624, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0880 */ 0xFFFD, 0x2E5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0888 */ 0xFFFD, 0xFFFD, 0x2962, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3450, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0898 */ 0x3A76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08A0 */ 0xFFFD, 0xFFFD, 0x4951, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x614C, -/* 08A8 */ 0x6D48, 0x6F23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2231, 0xFFFD, -/* 08B0 */ 0xFFFD, 0xFFFD, 0x222F, 0x222D, 0xFFFD, 0x2230, 0x2232, 0x222C, -/* 08B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x222E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2356, 0x2359, 0x2358, -/* 08C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2355, 0x2353, -/* 08D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2354, -/* 08D8 */ 0x235B, 0x2357, 0xFFFD, 0xFFFD, 0xFFFD, 0x2352, 0x235A, 0xFFFD, -/* 08E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08E8 */ 0x2630, 0x2629, 0xFFFD, 0x2634, 0x2625, 0x262C, 0xFFFD, 0xFFFD, -/* 08F0 */ 0xFFFD, 0x2626, 0xFFFD, 0x262D, 0x2631, 0xFFFD, 0xFFFD, 0x2632, -/* 08F8 */ 0x262B, 0xFFFD, 0x262E, 0xFFFD, 0xFFFD, 0xFFFD, 0x2635, 0x2633, -/* 0900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x262A, 0xFFFD, 0x2628, 0x2627, 0xFFFD, -/* 0908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x262F, 0xFFFD, 0xFFFD, -/* 0910 */ 0xFFFD, 0xFFFD, 0x2970, 0xFFFD, 0x2968, 0x2964, 0xFFFD, 0x2974, -/* 0918 */ 0x2963, 0xFFFD, 0xFFFD, 0x296D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0920 */ 0x2971, 0xFFFD, 0xFFFD, 0xFFFD, 0x2977, 0x2965, 0xFFFD, 0xFFFD, -/* 0928 */ 0x2967, 0x296E, 0x2972, 0x2976, 0x2973, 0x296C, 0x296F, 0xFFFD, -/* 0930 */ 0xFFFD, 0x2969, 0xFFFD, 0x296B, 0x296A, 0x2975, 0xFFFD, 0x2966, -/* 0938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0940 */ 0xFFFD, 0x2E64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E62, 0xFFFD, -/* 0948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E61, 0x2E5E, 0x2E63, 0xFFFD, -/* 0950 */ 0x2E5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E65, 0x2E5F, 0x2E60, -/* 0958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E66, 0xFFFD, 0x3457, 0xFFFD, -/* 0960 */ 0x3B26, 0x3456, 0x3469, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3467, -/* 0968 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3470, 0x3460, 0x3463, 0xFFFD, 0xFFFD, -/* 0970 */ 0x346D, 0x3465, 0xFFFD, 0xFFFD, 0xFFFD, 0x346A, 0x3468, 0xFFFD, -/* 0978 */ 0xFFFD, 0x3459, 0x346E, 0x3462, 0x345D, 0xFFFD, 0x3453, 0x346F, -/* 0980 */ 0x345F, 0x3452, 0xFFFD, 0xFFFD, 0x3464, 0x3471, 0x3461, 0x3455, -/* 0988 */ 0x345A, 0x3451, 0xFFFD, 0xFFFD, 0xFFFD, 0x345E, 0x345B, 0xFFFD, -/* 0990 */ 0x3454, 0xFFFD, 0x346C, 0xFFFD, 0xFFFD, 0x345C, 0x3458, 0xFFFD, -/* 0998 */ 0xFFFD, 0x346B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09A0 */ 0xFFFD, 0x3A7D, 0xFFFD, 0x3A7A, 0x3B2D, 0x3B21, 0x3B2E, 0xFFFD, -/* 09A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B2A, 0x3B27, 0xFFFD, 0xFFFD, -/* 09B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B28, 0x3B2B, 0x3B2F, 0xFFFD, 0x3466, -/* 09B8 */ 0x3B31, 0x424D, 0xFFFD, 0xFFFD, 0x3B32, 0x3A78, 0x3B24, 0xFFFD, -/* 09C0 */ 0x3B29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B30, 0x3B33, 0x3A7C, -/* 09C8 */ 0x3A79, 0xFFFD, 0xFFFD, 0x3A7B, 0xFFFD, 0xFFFD, 0x3B22, 0x3A7E, -/* 09D0 */ 0xFFFD, 0xFFFD, 0x3B2C, 0xFFFD, 0xFFFD, 0x3B23, 0xFFFD, 0x3B25, -/* 09D8 */ 0x3A77, 0x4241, 0x423F, 0xFFFD, 0xFFFD, 0x4249, 0x4240, 0x424A, -/* 09E0 */ 0x4246, 0x423E, 0x424C, 0x423D, 0x4244, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09E8 */ 0x4242, 0x4247, 0xFFFD, 0xFFFD, 0xFFFD, 0x423B, 0xFFFD, 0x4245, -/* 09F0 */ 0x423A, 0x4243, 0xFFFD, 0x4248, 0x423C, 0xFFFD, 0x424B, 0xFFFD, -/* 09F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4955, 0xFFFD, -/* 0A00 */ 0xFFFD, 0xFFFD, 0x4961, 0x4957, 0x495D, 0x4952, 0x4960, 0x495F, -/* 0A08 */ 0x4963, 0x495C, 0xFFFD, 0x495B, 0xFFFD, 0xFFFD, 0x4954, 0xFFFD, -/* 0A10 */ 0xFFFD, 0x4962, 0xFFFD, 0x4956, 0x4959, 0x495E, 0x4958, 0x4953, -/* 0A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x495A, 0x4F7C, 0xFFFD, 0x5021, -/* 0A20 */ 0x4F7E, 0x5023, 0x5025, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F7D, 0xFFFD, -/* 0A28 */ 0x4F7B, 0xFFFD, 0x5026, 0x5024, 0x5022, 0xFFFD, 0x5028, 0xFFFD, -/* 0A30 */ 0x5027, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A38 */ 0x5029, 0x5661, 0xFFFD, 0xFFFD, 0x5660, 0x565F, 0xFFFD, 0x5662, -/* 0A40 */ 0x565B, 0xFFFD, 0x565C, 0x5664, 0x565D, 0xFFFD, 0xFFFD, 0x5666, -/* 0A48 */ 0xFFFD, 0x5665, 0x565E, 0xFFFD, 0x5C5D, 0xFFFD, 0x5C5B, 0x5C60, -/* 0A50 */ 0x5C5F, 0x5663, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C5E, 0x5C5A, 0x5C62, -/* 0A58 */ 0x5C61, 0xFFFD, 0xFFFD, 0x5C5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x614D, 0x6546, 0x6547, -/* 0A68 */ 0x6548, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x686F, 0xFFFD, -/* 0A70 */ 0x6B56, 0x6B55, 0xFFFD, 0xFFFD, 0x6D49, 0x6D4A, 0x6F24, 0x7035, -/* 0A78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2233, -/* 0A80 */ 0x2636, 0xFFFD, 0xFFFD, 0x2637, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A88 */ 0xFFFD, 0xFFFD, 0x2E67, 0xFFFD, 0x3473, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A90 */ 0x3472, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4964, 0xFFFD, 0xFFFD, -/* 0A98 */ 0xFFFD, 0x5C63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2153, -/* 0AA0 */ 0xFFFD, 0xFFFD, 0x2154, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x235C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AB0 */ 0x235D, 0x2638, 0xFFFD, 0x2639, 0x2E68, 0x2978, 0xFFFD, 0xFFFD, -/* 0AB8 */ 0xFFFD, 0x2E6A, 0x2E69, 0x3475, 0x3474, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B39, 0x3B36, 0xFFFD, -/* 0AC8 */ 0x3B35, 0x3B3A, 0xFFFD, 0xFFFD, 0x3B38, 0xFFFD, 0xFFFD, 0x3B37, -/* 0AD0 */ 0xFFFD, 0x424E, 0xFFFD, 0x424F, 0x4250, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4965, 0xFFFD, 0xFFFD, 0x4966, 0xFFFD, -/* 0AE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B34, 0xFFFD, 0xFFFD, -/* 0AE8 */ 0xFFFD, 0xFFFD, 0x5667, 0xFFFD, 0x5C64, 0x5C65, 0x2E6B, 0xFFFD, -/* 0AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B3B, -/* 0AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x213C, 0xFFFD, 0x2155, 0xFFFD, 0xFFFD, -/* 0B00 */ 0x2234, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B08 */ 0xFFFD, 0xFFFD, 0x4251, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B10 */ 0x2235, 0xFFFD, 0xFFFD, 0x235E, 0xFFFD, 0x235F, 0xFFFD, 0xFFFD, -/* 0B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B3C, 0xFFFD, 0xFFFD, 0x4252, 0xFFFD, -/* 0B20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2156, 0xFFFD, -/* 0B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x263A, -/* 0B30 */ 0xFFFD, 0xFFFD, 0x263B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2979, -/* 0B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E6D, -/* 0B40 */ 0xFFFD, 0x2E6C, 0xFFFD, 0xFFFD, 0x3476, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4967, 0xFFFD, -/* 0B50 */ 0xFFFD, 0xFFFD, 0x502A, 0xFFFD, 0x614E, 0x614F, 0xFFFD, 0xFFFD, -/* 0B58 */ 0x7036, 0x212B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2158, 0x2157, -/* 0B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2237, 0x2238, 0x2236, -/* 0B68 */ 0xFFFD, 0x2239, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B70 */ 0xFFFD, 0x2367, 0xFFFD, 0x2362, 0x2364, 0x2366, 0x2363, 0xFFFD, -/* 0B78 */ 0x2360, 0xFFFD, 0x2361, 0xFFFD, 0xFFFD, 0x2365, 0x2368, 0xFFFD, -/* 0B80 */ 0x2369, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B88 */ 0x2649, 0xFFFD, 0x2643, 0x263E, 0xFFFD, 0x2646, 0x2644, 0x263D, -/* 0B90 */ 0x264A, 0x264D, 0x2648, 0x2641, 0xFFFD, 0x2647, 0xFFFD, 0x2642, -/* 0B98 */ 0x2645, 0x263C, 0x2640, 0x264C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BA0 */ 0x263F, 0x264B, 0x2A2C, 0x2A25, 0x2A2B, 0x2A24, 0x2A26, 0x297E, -/* 0BA8 */ 0x297C, 0xFFFD, 0x2A2D, 0x2A2A, 0x297A, 0xFFFD, 0xFFFD, 0x2A28, -/* 0BB0 */ 0x2A29, 0xFFFD, 0x2A27, 0x297D, 0x297B, 0xFFFD, 0x2A23, 0x2A21, -/* 0BB8 */ 0xFFFD, 0xFFFD, 0x2A22, 0x2A2E, 0x2E6E, 0xFFFD, 0x2E70, 0xFFFD, -/* 0BC0 */ 0xFFFD, 0x2E71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E72, -/* 0BC8 */ 0x2A2F, 0x2E74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2E6F, -/* 0BD0 */ 0x2E73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3478, 0x347C, 0x347E, 0xFFFD, 0x3523, -/* 0BE0 */ 0xFFFD, 0xFFFD, 0x3525, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BE8 */ 0xFFFD, 0xFFFD, 0x347A, 0xFFFD, 0xFFFD, 0x3479, 0x3477, 0x3527, -/* 0BF0 */ 0x347B, 0xFFFD, 0xFFFD, 0x3526, 0xFFFD, 0x3522, 0x3521, 0xFFFD, -/* 0BF8 */ 0x347D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3528, 0xFFFD, -/* 0C00 */ 0x3524, 0x3B4B, 0x3B52, 0x3B47, 0xFFFD, 0x3B43, 0x3B53, 0x3B3D, -/* 0C08 */ 0x3B50, 0x3B4E, 0x3B48, 0xFFFD, 0x3B51, 0x3B4A, 0xFFFD, 0x3B42, -/* 0C10 */ 0x3B54, 0x3B40, 0x3B4D, 0x3B3E, 0xFFFD, 0x3B55, 0xFFFD, 0xFFFD, -/* 0C18 */ 0xFFFD, 0x3B4F, 0x4255, 0x3B41, 0xFFFD, 0xFFFD, 0x3B45, 0xFFFD, -/* 0C20 */ 0xFFFD, 0x3B44, 0x3B49, 0xFFFD, 0xFFFD, 0x3B46, 0xFFFD, 0xFFFD, -/* 0C28 */ 0xFFFD, 0x3B4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4259, 0xFFFD, -/* 0C30 */ 0xFFFD, 0xFFFD, 0x425C, 0x4254, 0xFFFD, 0x4256, 0xFFFD, 0x425B, -/* 0C38 */ 0x425A, 0xFFFD, 0xFFFD, 0x3B3F, 0x4258, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C40 */ 0xFFFD, 0x4253, 0x4257, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x496E, -/* 0C48 */ 0xFFFD, 0x4975, 0x496C, 0xFFFD, 0x4973, 0x496A, 0x4972, 0x4976, -/* 0C50 */ 0x4969, 0x496D, 0x4968, 0xFFFD, 0xFFFD, 0xFFFD, 0x496B, 0xFFFD, -/* 0C58 */ 0x4971, 0x4970, 0x496F, 0xFFFD, 0xFFFD, 0x4974, 0xFFFD, 0xFFFD, -/* 0C60 */ 0xFFFD, 0xFFFD, 0x502E, 0x5030, 0xFFFD, 0x5031, 0xFFFD, 0x502C, -/* 0C68 */ 0xFFFD, 0x502B, 0x5035, 0xFFFD, 0x5033, 0xFFFD, 0x5036, 0x502D, -/* 0C70 */ 0x5032, 0x5034, 0x502F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x566B, -/* 0C78 */ 0x5670, 0x566A, 0x566F, 0xFFFD, 0x5668, 0x5672, 0x566E, 0x5673, -/* 0C80 */ 0x566D, 0x5669, 0x5671, 0xFFFD, 0x5674, 0x566C, 0xFFFD, 0x5C66, -/* 0C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C90 */ 0x6150, 0xFFFD, 0x643E, 0x6549, 0xFFFD, 0xFFFD, 0x6870, 0x6871, -/* 0C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B57, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B58, -/* 0CA0 */ 0xFFFD, 0x6D4C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D4B, 0xFFFD, 0xFFFD, -/* 0CA8 */ 0x6F25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x223A, -/* 0CB0 */ 0x236A, 0x425D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB8 */ 0xFFFD, 0xFFFD, 0x2A30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC0 */ 0x213D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2159, 0xFFFD, 0xFFFD, -/* 0CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x236B, 0xFFFD, 0xFFFD, 0xFFFD, 0x236C, -/* 0CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x264F, 0xFFFD, 0xFFFD, -/* 0CD8 */ 0x264E, 0xFFFD, 0x2650, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CE0 */ 0xFFFD, 0x2A34, 0x2A31, 0x2A32, 0x2A33, 0x2A35, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0xFFFD, 0x2E76, 0x2E75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x352A, 0xFFFD, 0xFFFD, -/* 0CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3529, -/* 0D00 */ 0xFFFD, 0xFFFD, 0x3B57, 0xFFFD, 0xFFFD, 0x3B56, 0xFFFD, 0xFFFD, -/* 0D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4260, 0x4262, 0xFFFD, 0x4261, 0x425F, -/* 0D10 */ 0x425E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4979, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D18 */ 0xFFFD, 0x4977, 0x4978, 0xFFFD, 0xFFFD, 0x503A, 0x5038, 0xFFFD, -/* 0D20 */ 0xFFFD, 0x5039, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5677, -/* 0D28 */ 0x5675, 0x5676, 0x5037, 0x5C68, 0xFFFD, 0x5C67, 0x6151, 0x6152, -/* 0D30 */ 0x5678, 0x654A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x223B, 0xFFFD, -/* 0D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D40 */ 0xFFFD, 0x215A, 0xFFFD, 0x215B, 0xFFFD, 0x223C, 0xFFFD, 0xFFFD, -/* 0D48 */ 0xFFFD, 0x2370, 0x236E, 0xFFFD, 0x236D, 0x236F, 0x2371, 0x2A39, -/* 0D50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A38, 0x2A3A, -/* 0D58 */ 0x2A37, 0x2A3B, 0xFFFD, 0xFFFD, 0x2E77, 0xFFFD, 0x2E79, 0xFFFD, -/* 0D60 */ 0x2E7A, 0xFFFD, 0x2E78, 0xFFFD, 0x2A36, 0x352B, 0x352E, 0x352F, -/* 0D68 */ 0x352C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x352D, 0x4263, 0x4265, -/* 0D70 */ 0x4267, 0xFFFD, 0xFFFD, 0xFFFD, 0x4266, 0x4264, 0xFFFD, 0x497D, -/* 0D78 */ 0xFFFD, 0xFFFD, 0x497B, 0x4A23, 0xFFFD, 0x4A24, 0x4A21, 0xFFFD, -/* 0D80 */ 0x497C, 0x497A, 0x4A22, 0xFFFD, 0x503C, 0x497E, 0xFFFD, 0x503D, -/* 0D88 */ 0xFFFD, 0xFFFD, 0x503E, 0xFFFD, 0xFFFD, 0xFFFD, 0x567D, 0x567B, -/* 0D90 */ 0x567A, 0x567C, 0x5679, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6872, -/* 0D98 */ 0x6873, 0xFFFD, 0x6B59, 0x6D4D, 0x223D, 0xFFFD, 0xFFFD, 0x2372, -/* 0DA0 */ 0xFFFD, 0x2A3C, 0x223E, 0xFFFD, 0xFFFD, 0x2373, 0xFFFD, 0xFFFD, -/* 0DA8 */ 0xFFFD, 0xFFFD, 0x2652, 0x2653, 0x2654, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DB0 */ 0x2651, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A3D, 0xFFFD, -/* 0DB8 */ 0x2E7C, 0xFFFD, 0xFFFD, 0x2E7B, 0xFFFD, 0xFFFD, 0x3530, 0xFFFD, -/* 0DC0 */ 0x3531, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DC8 */ 0x4268, 0xFFFD, 0xFFFD, 0x4A26, 0x4A25, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DD0 */ 0xFFFD, 0x503F, 0xFFFD, 0x567E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F27, -/* 0DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2655, 0xFFFD, 0x2A3E, 0xFFFD, -/* 0DE0 */ 0x3B58, 0x2E7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE8 */ 0xFFFD, 0x4A27, 0xFFFD, 0xFFFD, 0xFFFD, 0x212C, 0x223F, 0xFFFD, -/* 0DF0 */ 0x2375, 0xFFFD, 0x2374, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2658, -/* 0DF8 */ 0x2657, 0xFFFD, 0xFFFD, 0xFFFD, 0x2656, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E00 */ 0x2A3F, 0x3533, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3532, 0xFFFD, -/* 0E08 */ 0xFFFD, 0xFFFD, 0x3534, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E10 */ 0x3B5A, 0x3B59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B5B, 0xFFFD, -/* 0E18 */ 0x426A, 0xFFFD, 0x4269, 0xFFFD, 0xFFFD, 0x5040, 0xFFFD, 0xFFFD, -/* 0E20 */ 0xFFFD, 0x4A28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5722, 0x5721, -/* 0E28 */ 0xFFFD, 0x5C69, 0x654B, 0x6874, 0x6875, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x215C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E38 */ 0xFFFD, 0xFFFD, 0x2242, 0x2378, 0x2377, 0x2376, 0xFFFD, 0x2241, -/* 0E40 */ 0x2240, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E48 */ 0xFFFD, 0x2659, 0xFFFD, 0xFFFD, 0x237D, 0xFFFD, 0x2421, 0x237E, -/* 0E50 */ 0x265A, 0xFFFD, 0xFFFD, 0x237A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E58 */ 0x2379, 0x237B, 0x2423, 0xFFFD, 0xFFFD, 0xFFFD, 0x237C, 0x2427, -/* 0E60 */ 0xFFFD, 0xFFFD, 0x2424, 0xFFFD, 0xFFFD, 0x2422, 0x2425, 0xFFFD, -/* 0E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2426, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x266E, 0x2661, 0x265F, 0x266D, -/* 0E78 */ 0x2668, 0xFFFD, 0xFFFD, 0x2669, 0x266C, 0xFFFD, 0x266B, 0xFFFD, -/* 0E80 */ 0xFFFD, 0xFFFD, 0x2662, 0xFFFD, 0x265D, 0x2664, 0xFFFD, 0x266F, -/* 0E88 */ 0xFFFD, 0x2665, 0xFFFD, 0xFFFD, 0xFFFD, 0x2667, 0xFFFD, 0x2A4E, -/* 0E90 */ 0xFFFD, 0x265C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2666, -/* 0E98 */ 0x265B, 0x266A, 0xFFFD, 0xFFFD, 0xFFFD, 0x265E, 0x2663, 0x2660, -/* 0EA0 */ 0xFFFD, 0xFFFD, 0x2A40, 0xFFFD, 0x2A41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2A4B, 0x2F23, 0x2A4C, 0xFFFD, 0x2A4F, -/* 0EB0 */ 0x2A45, 0xFFFD, 0x2A47, 0xFFFD, 0x2A48, 0xFFFD, 0xFFFD, 0x2A4A, -/* 0EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A46, 0x2A42, -/* 0EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2A50, 0xFFFD, 0x2F21, 0x2A49, 0xFFFD, -/* 0EC8 */ 0x2E7E, 0x2A44, 0x2A4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0ED0 */ 0xFFFD, 0x2A51, 0x2F22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0ED8 */ 0xFFFD, 0x2A52, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A43, 0x2F26, 0x2F28, -/* 0EE0 */ 0xFFFD, 0x2F2A, 0xFFFD, 0xFFFD, 0x3537, 0x2F2E, 0x2F25, 0xFFFD, -/* 0EE8 */ 0x3535, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F30, 0xFFFD, 0x3536, 0xFFFD, -/* 0EF0 */ 0x2F27, 0xFFFD, 0xFFFD, 0x2F2B, 0xFFFD, 0x2F2D, 0xFFFD, 0xFFFD, -/* 0EF8 */ 0xFFFD, 0x2F2C, 0x2F2F, 0x2F29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F00 */ 0x2F24, 0x3539, 0x3542, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F08 */ 0x3544, 0xFFFD, 0x3B5D, 0x353A, 0xFFFD, 0xFFFD, 0xFFFD, 0x3538, -/* 0F10 */ 0x3546, 0x3549, 0x3B6C, 0xFFFD, 0x3547, 0x3B61, 0xFFFD, 0xFFFD, -/* 0F18 */ 0xFFFD, 0x3541, 0x3B5C, 0x3545, 0xFFFD, 0x3B5E, 0x3548, 0x3B60, -/* 0F20 */ 0x353D, 0xFFFD, 0xFFFD, 0xFFFD, 0x353B, 0x353C, 0xFFFD, 0xFFFD, -/* 0F28 */ 0xFFFD, 0xFFFD, 0x353F, 0xFFFD, 0x3543, 0xFFFD, 0x3540, 0xFFFD, -/* 0F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B5F, 0xFFFD, 0x353E, 0x3B63, 0xFFFD, -/* 0F38 */ 0xFFFD, 0x3B67, 0xFFFD, 0x426B, 0x3B69, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F40 */ 0x3B6A, 0xFFFD, 0x3B6B, 0x3B71, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B6D, -/* 0F48 */ 0x3B72, 0x3B66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B64, 0x3B73, -/* 0F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B70, 0xFFFD, 0xFFFD, 0x3B68, -/* 0F58 */ 0x3B62, 0xFFFD, 0x3B65, 0xFFFD, 0x3B6E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F60 */ 0xFFFD, 0x3B6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A2A, 0x4276, 0xFFFD, 0x426E, -/* 0F70 */ 0x4A29, 0xFFFD, 0x4272, 0x4274, 0xFFFD, 0xFFFD, 0x4271, 0xFFFD, -/* 0F78 */ 0xFFFD, 0xFFFD, 0x4270, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A39, -/* 0F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4277, 0x4A2B, 0xFFFD, 0xFFFD, -/* 0F88 */ 0xFFFD, 0x426F, 0x4273, 0xFFFD, 0xFFFD, 0x426C, 0x426D, 0xFFFD, -/* 0F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4275, 0xFFFD, 0xFFFD, 0x4A2F, 0x4A30, -/* 0F98 */ 0x4A35, 0xFFFD, 0x4A3C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A37, -/* 0FA0 */ 0xFFFD, 0xFFFD, 0x4A2C, 0xFFFD, 0xFFFD, 0x4A3B, 0xFFFD, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0x4A38, 0x5051, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A3A, 0xFFFD, -/* 0FB0 */ 0x4A32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A2D, 0x4A31, 0x4A2E, -/* 0FB8 */ 0x4A34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5043, 0x4A36, 0xFFFD, -/* 0FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A33, 0xFFFD, 0xFFFD, 0x5042, -/* 0FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5047, 0xFFFD, 0x5041, -/* 0FD0 */ 0x572E, 0x5050, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x504D, 0x5049, -/* 0FD8 */ 0xFFFD, 0xFFFD, 0x5725, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5048, -/* 0FE0 */ 0xFFFD, 0x5723, 0xFFFD, 0x504C, 0xFFFD, 0x504F, 0x5046, 0xFFFD, -/* 0FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5724, 0xFFFD, 0x504E, 0xFFFD, -/* 0FF0 */ 0xFFFD, 0x504B, 0xFFFD, 0x504A, 0x5045, 0x5044, 0xFFFD, 0x5052, -/* 0FF8 */ 0x5727, 0x5C6B, 0xFFFD, 0xFFFD, 0x572D, 0xFFFD, 0x572B, 0xFFFD, -/* 1000 */ 0x5C6C, 0xFFFD, 0xFFFD, 0x572C, 0xFFFD, 0x5729, 0xFFFD, 0x5C6A, -/* 1008 */ 0xFFFD, 0x5726, 0x5728, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1010 */ 0x572A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1018 */ 0xFFFD, 0xFFFD, 0x615B, 0xFFFD, 0x6153, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1020 */ 0xFFFD, 0xFFFD, 0x5C72, 0x6154, 0x5C6E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1028 */ 0x5C70, 0x5C6F, 0xFFFD, 0x5C6D, 0x5C71, 0x615C, 0x6158, 0x615A, -/* 1030 */ 0xFFFD, 0x6155, 0x6156, 0xFFFD, 0x6159, 0x6157, 0xFFFD, 0xFFFD, -/* 1038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6876, 0xFFFD, 0x654C, -/* 1040 */ 0xFFFD, 0x6B5A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F28, 0xFFFD, 0x6F29, -/* 1048 */ 0x6F2A, 0xFFFD, 0xFFFD, 0x722A, 0xFFFD, 0x215D, 0xFFFD, 0xFFFD, -/* 1050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1058 */ 0x2670, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F31, 0xFFFD, 0xFFFD, -/* 1060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4278, 0xFFFD, 0xFFFD, 0x427A, -/* 1068 */ 0x427C, 0x427B, 0xFFFD, 0x4A3E, 0xFFFD, 0x4A3D, 0xFFFD, 0x4A3F, -/* 1070 */ 0xFFFD, 0x5053, 0x2428, 0xFFFD, 0xFFFD, 0x2671, 0xFFFD, 0xFFFD, -/* 1078 */ 0xFFFD, 0xFFFD, 0x2A53, 0x2A54, 0xFFFD, 0xFFFD, 0x2F32, 0xFFFD, -/* 1080 */ 0xFFFD, 0xFFFD, 0x3B74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1088 */ 0x215E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1090 */ 0xFFFD, 0x2249, 0x224B, 0xFFFD, 0x2243, 0xFFFD, 0x2244, 0xFFFD, -/* 1098 */ 0x224A, 0x2246, 0x2248, 0xFFFD, 0x2245, 0x224C, 0x2247, 0xFFFD, -/* 10A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10A8 */ 0x2432, 0x242F, 0x2437, 0xFFFD, 0x2438, 0xFFFD, 0xFFFD, 0x2435, -/* 10B0 */ 0xFFFD, 0xFFFD, 0x2431, 0x2430, 0xFFFD, 0x2436, 0xFFFD, 0xFFFD, -/* 10B8 */ 0xFFFD, 0x2433, 0xFFFD, 0x2429, 0xFFFD, 0xFFFD, 0xFFFD, 0x242E, -/* 10C0 */ 0x2434, 0xFFFD, 0xFFFD, 0xFFFD, 0x242A, 0xFFFD, 0x242B, 0x242C, -/* 10C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x242D, 0x267D, 0x2676, 0xFFFD, -/* 10D0 */ 0xFFFD, 0x2672, 0x2679, 0x267B, 0x267E, 0xFFFD, 0xFFFD, 0x267A, -/* 10D8 */ 0x2673, 0xFFFD, 0x2677, 0xFFFD, 0x2721, 0xFFFD, 0xFFFD, 0x267C, -/* 10E0 */ 0xFFFD, 0xFFFD, 0x2675, 0x2678, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10E8 */ 0x2A55, 0xFFFD, 0x2674, 0x2A5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10F0 */ 0x2A67, 0xFFFD, 0x2F33, 0xFFFD, 0xFFFD, 0x2A58, 0x2A60, 0xFFFD, -/* 10F8 */ 0x2A5F, 0x2A5C, 0x2A64, 0x2A66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1100 */ 0x2A61, 0xFFFD, 0xFFFD, 0x2A5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2A57, 0x2A5E, 0x2A56, 0x2A59, 0x2A5D, -/* 1110 */ 0x2F34, 0xFFFD, 0xFFFD, 0x2A62, 0x2A63, 0x2A65, 0x2F40, 0xFFFD, -/* 1118 */ 0xFFFD, 0x2F36, 0x2F46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x354A, -/* 1120 */ 0x2F48, 0x2F42, 0xFFFD, 0x2F39, 0xFFFD, 0x2F4B, 0x2F3C, 0xFFFD, -/* 1128 */ 0x3561, 0x2F3F, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F4D, 0x2F41, 0xFFFD, -/* 1130 */ 0x2F3A, 0x2F37, 0x2F38, 0xFFFD, 0x2F47, 0x2F4E, 0xFFFD, 0x2F3E, -/* 1138 */ 0x2F3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F4A, 0xFFFD, -/* 1140 */ 0xFFFD, 0x2F44, 0xFFFD, 0x2F35, 0x2F4C, 0x2F43, 0x2F45, 0x2F49, -/* 1148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1150 */ 0xFFFD, 0xFFFD, 0x354B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1158 */ 0xFFFD, 0xFFFD, 0x355D, 0x3559, 0x3556, 0x3568, 0xFFFD, 0xFFFD, -/* 1160 */ 0xFFFD, 0xFFFD, 0x355B, 0xFFFD, 0xFFFD, 0x3563, 0xFFFD, 0xFFFD, -/* 1168 */ 0xFFFD, 0x355F, 0x354E, 0xFFFD, 0xFFFD, 0xFFFD, 0x3565, 0x354D, -/* 1170 */ 0xFFFD, 0xFFFD, 0x3564, 0xFFFD, 0x3557, 0xFFFD, 0xFFFD, 0x354C, -/* 1178 */ 0xFFFD, 0xFFFD, 0x3567, 0x3555, 0xFFFD, 0x3558, 0x3566, 0xFFFD, -/* 1180 */ 0xFFFD, 0x3B75, 0xFFFD, 0xFFFD, 0x3553, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1188 */ 0xFFFD, 0x355C, 0x3552, 0x3550, 0x3562, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1190 */ 0xFFFD, 0x3560, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1198 */ 0x3554, 0xFFFD, 0x3551, 0x355E, 0x355A, 0x3B77, 0x3B76, 0x354F, -/* 11A0 */ 0x3C29, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C2F, 0x3B7C, 0x3C2C, 0x427D, -/* 11A8 */ 0xFFFD, 0x3C30, 0x3C33, 0xFFFD, 0x3C21, 0x3C32, 0x3C31, 0xFFFD, -/* 11B0 */ 0x3B78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C2E, 0xFFFD, 0x3C24, -/* 11B8 */ 0xFFFD, 0x3C35, 0x3C2D, 0x3C36, 0xFFFD, 0xFFFD, 0x3C2B, 0x3C2A, -/* 11C0 */ 0xFFFD, 0x3C28, 0x3C22, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F3B, 0x3B79, -/* 11C8 */ 0xFFFD, 0x433D, 0x3B7A, 0xFFFD, 0xFFFD, 0x4321, 0xFFFD, 0xFFFD, -/* 11D0 */ 0xFFFD, 0x3B7B, 0x3C34, 0x427E, 0x3C25, 0x3B7E, 0xFFFD, 0x3C26, -/* 11D8 */ 0x3C23, 0x4324, 0x4337, 0x433C, 0x4330, 0xFFFD, 0x4341, 0xFFFD, -/* 11E0 */ 0x4322, 0xFFFD, 0x4323, 0xFFFD, 0xFFFD, 0x432A, 0xFFFD, 0xFFFD, -/* 11E8 */ 0x432B, 0xFFFD, 0x4338, 0x433E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4329, -/* 11F0 */ 0x4325, 0x4340, 0x432E, 0x432F, 0x4326, 0x433A, 0x4331, 0x433B, -/* 11F8 */ 0x4333, 0xFFFD, 0xFFFD, 0x4A40, 0xFFFD, 0xFFFD, 0x433F, 0x4336, -/* 1200 */ 0x4332, 0xFFFD, 0xFFFD, 0x4327, 0xFFFD, 0x4335, 0xFFFD, 0x432D, -/* 1208 */ 0xFFFD, 0x432C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A55, -/* 1210 */ 0x4339, 0x4334, 0xFFFD, 0x4328, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A50, 0xFFFD, 0x4A41, 0x4A4C, 0xFFFD, -/* 1220 */ 0x4A53, 0xFFFD, 0xFFFD, 0x4A51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1228 */ 0xFFFD, 0x4A58, 0xFFFD, 0x4A42, 0x4A4F, 0x4A43, 0x4A4E, 0xFFFD, -/* 1230 */ 0x4A52, 0x3C27, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A59, 0x4A4A, 0xFFFD, -/* 1238 */ 0x5061, 0xFFFD, 0xFFFD, 0x4A57, 0x4A56, 0xFFFD, 0x5054, 0xFFFD, -/* 1240 */ 0x5055, 0xFFFD, 0x4A46, 0x4A47, 0x4A44, 0x4A49, 0x4A45, 0x4A5A, -/* 1248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A48, 0xFFFD, 0x4A54, -/* 1250 */ 0xFFFD, 0xFFFD, 0x4A4D, 0xFFFD, 0xFFFD, 0x5058, 0xFFFD, 0xFFFD, -/* 1258 */ 0xFFFD, 0x5735, 0x505D, 0x505C, 0x505E, 0xFFFD, 0xFFFD, 0x505B, -/* 1260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5056, 0x5059, -/* 1268 */ 0x5063, 0xFFFD, 0xFFFD, 0xFFFD, 0x505A, 0x3B7D, 0xFFFD, 0x5060, -/* 1270 */ 0x5057, 0xFFFD, 0xFFFD, 0x505F, 0xFFFD, 0xFFFD, 0x4A4B, 0xFFFD, -/* 1278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1280 */ 0xFFFD, 0x5062, 0x5734, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1288 */ 0x5736, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5733, 0xFFFD, -/* 1290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5732, 0x5731, 0xFFFD, 0xFFFD, -/* 1298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5730, 0x572F, 0xFFFD, 0x5739, 0xFFFD, -/* 12A0 */ 0x5737, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A8 */ 0x5C75, 0x5C77, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C78, 0x5C74, 0xFFFD, -/* 12B0 */ 0x5C76, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C73, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12B8 */ 0x5738, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6160, 0xFFFD, 0xFFFD, -/* 12C0 */ 0xFFFD, 0x6163, 0x615F, 0xFFFD, 0x615D, 0xFFFD, 0x6161, 0xFFFD, -/* 12C8 */ 0x6162, 0x615E, 0xFFFD, 0xFFFD, 0x654D, 0xFFFD, 0x6550, 0xFFFD, -/* 12D0 */ 0xFFFD, 0x6551, 0x654F, 0x6552, 0xFFFD, 0x654E, 0xFFFD, 0xFFFD, -/* 12D8 */ 0x687A, 0xFFFD, 0x6879, 0x6878, 0x6877, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12E0 */ 0x6B5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D4F, 0x6D4E, 0x6D51, -/* 12E8 */ 0xFFFD, 0xFFFD, 0x6F2C, 0x6D50, 0xFFFD, 0xFFFD, 0x6F2B, 0xFFFD, -/* 12F0 */ 0xFFFD, 0xFFFD, 0x7037, 0x707D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C37, -/* 12F8 */ 0x573A, 0xFFFD, 0xFFFD, 0xFFFD, 0x224D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1300 */ 0xFFFD, 0xFFFD, 0x2722, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A68, 0xFFFD, -/* 1308 */ 0x2A69, 0xFFFD, 0xFFFD, 0x2F50, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F4F, -/* 1310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1318 */ 0x3569, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1320 */ 0xFFFD, 0x3C3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1328 */ 0xFFFD, 0x3C3A, 0x3C3D, 0xFFFD, 0x3C38, 0x3C3C, 0xFFFD, 0x3C39, -/* 1330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4342, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1338 */ 0x4A5B, 0xFFFD, 0xFFFD, 0x5064, 0xFFFD, 0xFFFD, 0x5066, 0x5065, -/* 1340 */ 0x5067, 0x573C, 0xFFFD, 0xFFFD, 0x573B, 0x5C7A, 0x5C79, 0xFFFD, -/* 1348 */ 0xFFFD, 0x6553, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1350 */ 0xFFFD, 0x3C3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4343, -/* 1358 */ 0xFFFD, 0x6164, 0xFFFD, 0x6F2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1360 */ 0xFFFD, 0xFFFD, 0x3C3F, 0x3C40, 0xFFFD, 0x4A5C, 0xFFFD, 0x573D, -/* 1368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2723, 0xFFFD, 0x2A6A, -/* 1370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C41, 0xFFFD, 0xFFFD, 0xFFFD, 0x5068, -/* 1378 */ 0x5069, 0xFFFD, 0xFFFD, 0x5C7B, 0xFFFD, 0x707E, 0xFFFD, 0xFFFD, -/* 1380 */ 0x2724, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A6B, 0xFFFD, 0xFFFD, 0x2F54, -/* 1388 */ 0x2F52, 0x2F53, 0xFFFD, 0x2F51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1390 */ 0xFFFD, 0xFFFD, 0x356A, 0xFFFD, 0xFFFD, 0x3C42, 0xFFFD, 0x3C43, -/* 1398 */ 0x4344, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C7C, -/* 13A0 */ 0x6165, 0xFFFD, 0x6555, 0x6554, 0x687B, 0xFFFD, 0x213E, 0x224F, -/* 13A8 */ 0x224E, 0x2439, 0xFFFD, 0x243C, 0x243B, 0x243A, 0x243D, 0xFFFD, -/* 13B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x272A, 0x2726, 0x272F, 0xFFFD, -/* 13B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x272B, 0x2727, 0x272E, 0xFFFD, -/* 13C0 */ 0xFFFD, 0x2729, 0x2725, 0xFFFD, 0x272C, 0xFFFD, 0x272D, 0xFFFD, -/* 13C8 */ 0xFFFD, 0x2731, 0x2730, 0x2728, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A70, 0x2A76, 0xFFFD, -/* 13D8 */ 0xFFFD, 0xFFFD, 0x2A6D, 0x2A72, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A71, -/* 13E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A74, 0xFFFD, 0xFFFD, 0x2A79, -/* 13E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2A6E, 0x2A73, 0x2A77, 0x2A6F, 0x2A6C, -/* 13F0 */ 0xFFFD, 0xFFFD, 0x2A78, 0x2A75, 0x2F57, 0xFFFD, 0xFFFD, 0x2F55, -/* 13F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F58, 0xFFFD, -/* 1400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x356E, 0xFFFD, -/* 1408 */ 0x356D, 0x356F, 0xFFFD, 0xFFFD, 0x2F56, 0xFFFD, 0x356C, 0x3570, -/* 1410 */ 0xFFFD, 0xFFFD, 0x356B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C4A, -/* 1418 */ 0xFFFD, 0x3C45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C48, 0x3C4B, -/* 1420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x434D, 0x3C49, 0xFFFD, -/* 1428 */ 0x3C46, 0x3C44, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C47, 0xFFFD, 0xFFFD, -/* 1430 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4345, 0xFFFD, 0xFFFD, 0xFFFD, 0x434A, -/* 1438 */ 0x4349, 0x4346, 0xFFFD, 0xFFFD, 0xFFFD, 0x4348, 0xFFFD, 0xFFFD, -/* 1440 */ 0xFFFD, 0x434C, 0x4347, 0xFFFD, 0xFFFD, 0xFFFD, 0x434B, 0xFFFD, -/* 1448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A5F, 0x4A5E, 0x4A5D, 0xFFFD, -/* 1450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x506C, 0x506F, -/* 1458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5070, 0x506B, 0xFFFD, 0x506D, -/* 1460 */ 0xFFFD, 0xFFFD, 0x506A, 0xFFFD, 0x506E, 0xFFFD, 0xFFFD, 0x5746, -/* 1468 */ 0x5745, 0xFFFD, 0x5744, 0x573F, 0xFFFD, 0x5740, 0xFFFD, 0xFFFD, -/* 1470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x573E, 0xFFFD, 0x5741, -/* 1478 */ 0x5742, 0x5747, 0xFFFD, 0xFFFD, 0x5743, 0xFFFD, 0xFFFD, 0x5C7D, -/* 1480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6168, 0xFFFD, 0x6166, -/* 1488 */ 0x6167, 0xFFFD, 0xFFFD, 0x6556, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1490 */ 0x687D, 0x687E, 0xFFFD, 0xFFFD, 0xFFFD, 0x687C, 0xFFFD, 0xFFFD, -/* 1498 */ 0x6F2E, 0xFFFD, 0x7038, 0x7039, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2732, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C4C, 0xFFFD, -/* 14B0 */ 0xFFFD, 0x4A61, 0x4A60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2733, -/* 14B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2A7A, 0x2A7B, 0xFFFD, 0x2F59, -/* 14C0 */ 0x2F5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3571, 0xFFFD, 0xFFFD, -/* 14C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x434E, 0x4641, 0x4A62, -/* 14D0 */ 0x5748, 0x2257, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2252, 0x2251, -/* 14D8 */ 0x2254, 0x2253, 0x2256, 0xFFFD, 0x2250, 0x2255, 0xFFFD, 0xFFFD, -/* 14E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x243E, 0xFFFD, 0x243F, 0x2443, 0xFFFD, -/* 14E8 */ 0xFFFD, 0x2447, 0x2442, 0x2445, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2441, 0xFFFD, 0xFFFD, 0xFFFD, 0x2440, -/* 14F8 */ 0x2446, 0xFFFD, 0xFFFD, 0x2444, 0x2735, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x273D, 0xFFFD, 0x2738, 0xFFFD, -/* 1508 */ 0x2747, 0x2748, 0x2740, 0x2739, 0xFFFD, 0x2745, 0xFFFD, 0xFFFD, -/* 1510 */ 0xFFFD, 0x2746, 0xFFFD, 0x2744, 0x273C, 0x2734, 0x273B, 0xFFFD, -/* 1518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x273F, 0x273E, 0x2736, 0xFFFD, -/* 1520 */ 0xFFFD, 0x2742, 0x2737, 0xFFFD, 0x2749, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1528 */ 0x273A, 0x2743, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2741, -/* 1530 */ 0x2B3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B38, 0x2B2E, 0xFFFD, 0x2B2C, -/* 1538 */ 0xFFFD, 0x2B27, 0xFFFD, 0x2B34, 0x2B21, 0x2B23, 0xFFFD, 0xFFFD, -/* 1540 */ 0xFFFD, 0xFFFD, 0x2B26, 0x2A7C, 0x2B33, 0x2B43, 0xFFFD, 0x2B28, -/* 1548 */ 0x2B3A, 0xFFFD, 0x2A7E, 0x2B41, 0x2B42, 0x2B45, 0x2B3C, 0x2B2D, -/* 1550 */ 0x2B35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1558 */ 0xFFFD, 0xFFFD, 0x2B25, 0xFFFD, 0xFFFD, 0x2B3F, 0x2B22, 0xFFFD, -/* 1560 */ 0xFFFD, 0x2B2B, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B32, 0x2B2A, 0xFFFD, -/* 1568 */ 0x2B3E, 0x2B36, 0xFFFD, 0xFFFD, 0x2B44, 0x2B29, 0xFFFD, 0x2B3B, -/* 1570 */ 0x2B31, 0xFFFD, 0x2B37, 0xFFFD, 0x2A7D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1578 */ 0x2B30, 0x2B2F, 0x2B24, 0xFFFD, 0x2B40, 0xFFFD, 0x2B39, 0x2F6E, -/* 1580 */ 0xFFFD, 0x2F6F, 0xFFFD, 0x2F63, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F5C, -/* 1588 */ 0xFFFD, 0x2F65, 0x2F6D, 0xFFFD, 0x2F5B, 0x2F76, 0xFFFD, 0xFFFD, -/* 1590 */ 0xFFFD, 0xFFFD, 0x2F75, 0x2F70, 0xFFFD, 0x2F71, 0xFFFD, 0xFFFD, -/* 1598 */ 0x2F67, 0xFFFD, 0x2F68, 0x2F72, 0x2F69, 0xFFFD, 0x2F64, 0x2F5E, -/* 15A0 */ 0x2F5F, 0x2F6C, 0x2F66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F74, -/* 15A8 */ 0x2F60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15B0 */ 0xFFFD, 0x2F6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F5D, 0xFFFD, -/* 15B8 */ 0x2F61, 0xFFFD, 0x2F73, 0x2F6A, 0x2F62, 0x3628, 0xFFFD, 0x3576, -/* 15C0 */ 0x3577, 0x357B, 0xFFFD, 0x362C, 0x3629, 0xFFFD, 0x3622, 0x3621, -/* 15C8 */ 0xFFFD, 0x3625, 0x3634, 0x3572, 0xFFFD, 0x3635, 0x3627, 0x3639, -/* 15D0 */ 0x362D, 0xFFFD, 0x362B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15D8 */ 0xFFFD, 0x3573, 0xFFFD, 0x3632, 0x3638, 0x3630, 0x3637, 0xFFFD, -/* 15E0 */ 0xFFFD, 0x3624, 0x3574, 0x3636, 0x3626, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15E8 */ 0x362F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x362E, 0x3575, 0xFFFD, -/* 15F0 */ 0xFFFD, 0xFFFD, 0x3631, 0xFFFD, 0xFFFD, 0x357C, 0x3633, 0xFFFD, -/* 15F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x357E, 0x362A, 0x3579, 0x357D, 0xFFFD, -/* 1600 */ 0x3578, 0xFFFD, 0xFFFD, 0xFFFD, 0x3623, 0xFFFD, 0x3C63, 0x3C66, -/* 1608 */ 0x3C7C, 0x3C71, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C60, 0xFFFD, 0x3C70, -/* 1610 */ 0xFFFD, 0x3C69, 0x3C76, 0xFFFD, 0x3C4E, 0x3C78, 0xFFFD, 0x3C56, -/* 1618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C50, 0x3C72, 0x3C73, -/* 1620 */ 0xFFFD, 0xFFFD, 0x3C5E, 0xFFFD, 0xFFFD, 0x3C59, 0xFFFD, 0x3C74, -/* 1628 */ 0xFFFD, 0x3C6C, 0x3C79, 0x3C53, 0x3C58, 0x3C52, 0xFFFD, 0xFFFD, -/* 1630 */ 0x3C65, 0x4364, 0x3C54, 0xFFFD, 0x3C5D, 0x3C75, 0xFFFD, 0x3C5A, -/* 1638 */ 0x3C57, 0x3C68, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C6B, 0x3C6A, 0xFFFD, -/* 1640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C4F, 0xFFFD, 0x3C77, -/* 1648 */ 0x3C5F, 0x3C61, 0xFFFD, 0x3C6E, 0x3C6D, 0x3C4D, 0xFFFD, 0xFFFD, -/* 1650 */ 0x3C55, 0x3C5C, 0x3C64, 0xFFFD, 0x3C5B, 0x3C67, 0x3C7A, 0xFFFD, -/* 1658 */ 0x3C6F, 0x3C7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C51, 0xFFFD, -/* 1660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4378, 0xFFFD, 0xFFFD, 0x4376, 0x4361, -/* 1668 */ 0x4366, 0x435F, 0xFFFD, 0x4372, 0x4351, 0x4358, 0xFFFD, 0x4370, -/* 1670 */ 0x437A, 0x4362, 0xFFFD, 0x4355, 0x4368, 0x436D, 0x4359, 0xFFFD, -/* 1678 */ 0x436A, 0x4356, 0xFFFD, 0xFFFD, 0x435D, 0x435E, 0xFFFD, 0x4371, -/* 1680 */ 0x436F, 0xFFFD, 0x4352, 0x4374, 0xFFFD, 0x4375, 0x4377, 0xFFFD, -/* 1688 */ 0xFFFD, 0xFFFD, 0x357A, 0x435A, 0x436C, 0x435B, 0xFFFD, 0xFFFD, -/* 1690 */ 0x4373, 0xFFFD, 0xFFFD, 0x4350, 0xFFFD, 0xFFFD, 0x4353, 0xFFFD, -/* 1698 */ 0xFFFD, 0x4363, 0x434F, 0xFFFD, 0xFFFD, 0x4367, 0x4357, 0xFFFD, -/* 16A0 */ 0x4360, 0xFFFD, 0xFFFD, 0x4369, 0x3C62, 0x4354, 0xFFFD, 0xFFFD, -/* 16A8 */ 0x436E, 0xFFFD, 0x436B, 0xFFFD, 0x4365, 0xFFFD, 0x435C, 0x4379, -/* 16B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x452C, -/* 16B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16C0 */ 0xFFFD, 0x4A70, 0x4A6E, 0xFFFD, 0x4B26, 0x4A6C, 0xFFFD, 0x4A7E, -/* 16C8 */ 0xFFFD, 0xFFFD, 0x4A68, 0x4B25, 0xFFFD, 0x4A6D, 0x4A7B, 0xFFFD, -/* 16D0 */ 0xFFFD, 0xFFFD, 0x4B23, 0xFFFD, 0x4A66, 0x4B22, 0xFFFD, 0xFFFD, -/* 16D8 */ 0x4A77, 0x4B29, 0xFFFD, 0x4A6F, 0xFFFD, 0x4A71, 0x4B21, 0xFFFD, -/* 16E0 */ 0x4A6A, 0xFFFD, 0xFFFD, 0x4A73, 0x4A69, 0x4A63, 0xFFFD, 0x4A7D, -/* 16E8 */ 0xFFFD, 0x4B28, 0x4A64, 0xFFFD, 0xFFFD, 0x4A79, 0xFFFD, 0xFFFD, -/* 16F0 */ 0x4A6B, 0x4A76, 0x4A72, 0x4A74, 0xFFFD, 0xFFFD, 0x4B27, 0xFFFD, -/* 16F8 */ 0x4A75, 0xFFFD, 0x4B2A, 0xFFFD, 0xFFFD, 0x4A65, 0x4A7A, 0xFFFD, -/* 1700 */ 0xFFFD, 0xFFFD, 0x4A67, 0x4A7C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1708 */ 0x4A78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B24, 0xFFFD, 0xFFFD, -/* 1710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x507C, 0xFFFD, -/* 1718 */ 0x5078, 0x5074, 0x512A, 0x5127, 0xFFFD, 0xFFFD, 0xFFFD, 0x512E, -/* 1720 */ 0x507B, 0xFFFD, 0x5124, 0xFFFD, 0xFFFD, 0x5077, 0x5123, 0xFFFD, -/* 1728 */ 0x5137, 0xFFFD, 0x5134, 0x5126, 0x5075, 0xFFFD, 0xFFFD, 0x512B, -/* 1730 */ 0x512D, 0xFFFD, 0x5121, 0x507A, 0x5071, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1738 */ 0x5130, 0xFFFD, 0x5072, 0x5136, 0x5129, 0x512F, 0xFFFD, 0xFFFD, -/* 1740 */ 0xFFFD, 0x512C, 0xFFFD, 0x5133, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1748 */ 0x5125, 0x5076, 0x5138, 0x5073, 0x5131, 0xFFFD, 0xFFFD, 0x507D, -/* 1750 */ 0xFFFD, 0x507E, 0xFFFD, 0xFFFD, 0x5079, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1758 */ 0xFFFD, 0x5132, 0x5135, 0x5122, 0x5755, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x574D, 0xFFFD, -/* 1768 */ 0x5749, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5757, -/* 1770 */ 0x5762, 0xFFFD, 0x574F, 0x5758, 0x5128, 0x5759, 0xFFFD, 0xFFFD, -/* 1778 */ 0xFFFD, 0xFFFD, 0x5768, 0xFFFD, 0xFFFD, 0x574B, 0xFFFD, 0xFFFD, -/* 1780 */ 0xFFFD, 0x5766, 0x5767, 0x575D, 0x575C, 0x5754, 0xFFFD, 0xFFFD, -/* 1788 */ 0x575E, 0x5765, 0x5764, 0xFFFD, 0xFFFD, 0xFFFD, 0x5756, 0x5753, -/* 1790 */ 0xFFFD, 0x5750, 0x5763, 0xFFFD, 0x5761, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1798 */ 0x575B, 0xFFFD, 0x574A, 0x574C, 0x574E, 0x5760, 0x575A, 0xFFFD, -/* 17A0 */ 0xFFFD, 0x5751, 0xFFFD, 0x575F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17A8 */ 0xFFFD, 0xFFFD, 0x5752, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D31, 0xFFFD, 0x5D22, 0xFFFD, 0x5D2D, -/* 17B8 */ 0xFFFD, 0x5D34, 0xFFFD, 0x5D29, 0xFFFD, 0x5D24, 0xFFFD, 0xFFFD, -/* 17C0 */ 0x5D35, 0x5C7E, 0x5D2B, 0xFFFD, 0xFFFD, 0x5D30, 0x5D36, 0x5D2A, -/* 17C8 */ 0xFFFD, 0x5D2C, 0x5D21, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D33, 0x5D26, -/* 17D0 */ 0xFFFD, 0xFFFD, 0x5D28, 0x5D25, 0xFFFD, 0x5D27, 0xFFFD, 0xFFFD, -/* 17D8 */ 0x5D2F, 0x5D23, 0x5D32, 0xFFFD, 0x5D2E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17E0 */ 0xFFFD, 0x6173, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17E8 */ 0x6172, 0xFFFD, 0x616F, 0x6170, 0xFFFD, 0x616A, 0x616E, 0xFFFD, -/* 17F0 */ 0xFFFD, 0x616B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F8 */ 0xFFFD, 0x6169, 0x616D, 0x6171, 0xFFFD, 0xFFFD, 0xFFFD, 0x655C, -/* 1800 */ 0x6559, 0x6562, 0xFFFD, 0x6561, 0x655F, 0x655A, 0xFFFD, 0xFFFD, -/* 1808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x655B, 0xFFFD, 0xFFFD, -/* 1810 */ 0x655E, 0xFFFD, 0x6563, 0x655D, 0x6558, 0x616C, 0xFFFD, 0xFFFD, -/* 1818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6557, 0x6924, 0xFFFD, 0x6923, 0x6560, -/* 1820 */ 0xFFFD, 0xFFFD, 0x6927, 0x6928, 0x6922, 0x6926, 0xFFFD, 0x6921, -/* 1828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B5F, 0x6925, 0xFFFD, 0xFFFD, -/* 1830 */ 0x6B5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B60, 0xFFFD, 0x6B5C, 0x6B5E, -/* 1838 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D53, 0x6D54, 0xFFFD, 0x6D52, -/* 1840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F31, 0xFFFD, 0x6F2F, 0x6F30, 0x703A, -/* 1848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7123, 0x7121, 0x7122, 0x7124, 0xFFFD, -/* 1850 */ 0xFFFD, 0xFFFD, 0x722B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1858 */ 0xFFFD, 0x274A, 0xFFFD, 0xFFFD, 0x2B46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1860 */ 0x2F77, 0x2F79, 0xFFFD, 0x2F78, 0xFFFD, 0x2F7A, 0xFFFD, 0x363B, -/* 1868 */ 0x2F7B, 0xFFFD, 0x363A, 0x363C, 0x363D, 0x3C7D, 0xFFFD, 0x3C7E, -/* 1870 */ 0x3D22, 0xFFFD, 0xFFFD, 0x3D21, 0xFFFD, 0x4422, 0x437E, 0x437D, -/* 1878 */ 0xFFFD, 0x437C, 0x437B, 0xFFFD, 0x4421, 0xFFFD, 0x4B2B, 0x4B2D, -/* 1880 */ 0xFFFD, 0x4B2C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5139, 0xFFFD, 0xFFFD, -/* 1888 */ 0x576A, 0x5769, 0x576B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D37, -/* 1890 */ 0xFFFD, 0xFFFD, 0x6174, 0xFFFD, 0x6564, 0x2F7C, 0xFFFD, 0xFFFD, -/* 1898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5259, 0xFFFD, -/* 18A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x274C, 0xFFFD, -/* 18A8 */ 0x274B, 0xFFFD, 0x2B47, 0xFFFD, 0x2B48, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18B0 */ 0x2F7E, 0xFFFD, 0xFFFD, 0xFFFD, 0x3642, 0x3640, 0x3641, 0x363F, -/* 18B8 */ 0xFFFD, 0x363E, 0xFFFD, 0xFFFD, 0x3D23, 0x3D26, 0xFFFD, 0x3D24, -/* 18C0 */ 0xFFFD, 0x3D25, 0xFFFD, 0x4423, 0xFFFD, 0xFFFD, 0x4B2E, 0x4B2F, -/* 18C8 */ 0x4B30, 0xFFFD, 0x513C, 0x513B, 0xFFFD, 0x513A, 0x513D, 0x576C, -/* 18D0 */ 0xFFFD, 0xFFFD, 0x576D, 0x576E, 0xFFFD, 0x5D38, 0xFFFD, 0xFFFD, -/* 18D8 */ 0x6565, 0xFFFD, 0xFFFD, 0x213F, 0xFFFD, 0xFFFD, 0x2B49, 0xFFFD, -/* 18E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D27, 0xFFFD, 0xFFFD, -/* 18E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B31, 0x4B32, 0xFFFD, 0xFFFD, 0x5770, -/* 18F0 */ 0x576F, 0x6175, 0x6F32, 0xFFFD, 0x2140, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18F8 */ 0x2448, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B4A, 0xFFFD, -/* 1900 */ 0x2B4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x274D, 0xFFFD, -/* 1908 */ 0x2B4C, 0xFFFD, 0x3025, 0x3024, 0x3022, 0xFFFD, 0x3021, 0x3026, -/* 1910 */ 0x3023, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1918 */ 0x3D28, 0xFFFD, 0x3D29, 0x3D2A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4427, -/* 1920 */ 0x4428, 0x4426, 0xFFFD, 0x4424, 0x4425, 0xFFFD, 0x4B33, 0x5140, -/* 1928 */ 0x513F, 0x513E, 0x5141, 0x5772, 0x5771, 0xFFFD, 0x5773, 0xFFFD, -/* 1930 */ 0xFFFD, 0x5D39, 0xFFFD, 0x6176, 0x6566, 0x6D55, 0xFFFD, 0xFFFD, -/* 1938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2141, 0x215F, 0xFFFD, 0xFFFD, -/* 1940 */ 0x2258, 0x2449, 0x244A, 0xFFFD, 0xFFFD, 0x274E, 0xFFFD, 0xFFFD, -/* 1948 */ 0x2B4D, 0x2B4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x3027, 0xFFFD, 0xFFFD, -/* 1950 */ 0xFFFD, 0xFFFD, 0x3643, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1958 */ 0x3D2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2160, 0xFFFD, -/* 1960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2163, 0xFFFD, 0xFFFD, 0xFFFD, 0x2162, -/* 1968 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2161, 0xFFFD, 0xFFFD, 0x2259, 0xFFFD, -/* 1970 */ 0xFFFD, 0xFFFD, 0x225D, 0x225F, 0x2260, 0xFFFD, 0xFFFD, 0x225C, -/* 1978 */ 0xFFFD, 0xFFFD, 0x225A, 0xFFFD, 0x225E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x225B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x245B, 0x2459, 0x244C, -/* 1990 */ 0xFFFD, 0x2453, 0xFFFD, 0x244D, 0xFFFD, 0x2455, 0xFFFD, 0x2452, -/* 1998 */ 0xFFFD, 0x2451, 0xFFFD, 0x245A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A0 */ 0x244B, 0xFFFD, 0xFFFD, 0x245C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A8 */ 0x2765, 0xFFFD, 0xFFFD, 0xFFFD, 0x244E, 0xFFFD, 0xFFFD, 0x2456, -/* 19B0 */ 0xFFFD, 0xFFFD, 0x2763, 0x244F, 0xFFFD, 0xFFFD, 0x245D, 0x2450, -/* 19B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x274F, 0xFFFD, 0x2457, 0xFFFD, 0xFFFD, -/* 19C0 */ 0xFFFD, 0xFFFD, 0x2454, 0xFFFD, 0x2458, 0x2764, 0x2756, 0xFFFD, -/* 19C8 */ 0xFFFD, 0x276B, 0xFFFD, 0xFFFD, 0xFFFD, 0x2762, 0xFFFD, 0x2754, -/* 19D0 */ 0x2758, 0xFFFD, 0xFFFD, 0x275B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19D8 */ 0xFFFD, 0x2767, 0xFFFD, 0x275A, 0x275C, 0xFFFD, 0xFFFD, 0x275D, -/* 19E0 */ 0x276A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2769, 0xFFFD, -/* 19E8 */ 0x276D, 0x2759, 0x276F, 0x2760, 0xFFFD, 0x2755, 0xFFFD, 0xFFFD, -/* 19F0 */ 0xFFFD, 0xFFFD, 0x2753, 0x2B57, 0xFFFD, 0xFFFD, 0x2761, 0x2766, -/* 19F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A00 */ 0x2757, 0xFFFD, 0x276E, 0xFFFD, 0x2751, 0x2750, 0x275E, 0x2752, -/* 1A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x275F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A10 */ 0xFFFD, 0xFFFD, 0x276C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A18 */ 0xFFFD, 0x2B5E, 0x2B61, 0xFFFD, 0x2B64, 0x2B59, 0xFFFD, 0xFFFD, -/* 1A20 */ 0x2B67, 0x2B6A, 0x2B6C, 0x2B56, 0xFFFD, 0xFFFD, 0x302C, 0xFFFD, -/* 1A28 */ 0x2B65, 0x2B6D, 0x2B5D, 0x2B55, 0xFFFD, 0xFFFD, 0xFFFD, 0x3047, -/* 1A30 */ 0xFFFD, 0x2B62, 0x2B5A, 0x2B5C, 0xFFFD, 0xFFFD, 0x2B5F, 0xFFFD, -/* 1A38 */ 0x2B52, 0x2B68, 0xFFFD, 0x2B6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A40 */ 0xFFFD, 0x2B4F, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B69, 0x2B51, 0xFFFD, -/* 1A48 */ 0x3041, 0x2768, 0xFFFD, 0xFFFD, 0x2B58, 0x2B50, 0xFFFD, 0xFFFD, -/* 1A50 */ 0x2B63, 0xFFFD, 0xFFFD, 0x2B5B, 0xFFFD, 0x2B53, 0xFFFD, 0xFFFD, -/* 1A58 */ 0x2B54, 0x2B66, 0xFFFD, 0x2B60, 0x302F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A60 */ 0xFFFD, 0xFFFD, 0x3038, 0x303E, 0x303A, 0x302D, 0x3030, 0x3029, -/* 1A68 */ 0x302A, 0xFFFD, 0xFFFD, 0x3039, 0x3042, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A70 */ 0xFFFD, 0x3031, 0xFFFD, 0x3032, 0x303C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A78 */ 0xFFFD, 0x304B, 0x302B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3028, 0x3049, -/* 1A80 */ 0x303D, 0x304A, 0x3044, 0x3036, 0x3045, 0xFFFD, 0x303F, 0x3048, -/* 1A88 */ 0x3046, 0xFFFD, 0x3037, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3043, -/* 1A90 */ 0xFFFD, 0x3034, 0xFFFD, 0xFFFD, 0x304C, 0x3033, 0x302E, 0xFFFD, -/* 1A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x303B, 0x3040, 0x3645, 0x3649, 0xFFFD, -/* 1AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3647, 0x3646, 0xFFFD, -/* 1AA8 */ 0xFFFD, 0x364C, 0xFFFD, 0xFFFD, 0x365E, 0x366A, 0xFFFD, 0x365B, -/* 1AB0 */ 0x3654, 0xFFFD, 0x3644, 0xFFFD, 0x3660, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AB8 */ 0xFFFD, 0xFFFD, 0x3650, 0x3662, 0x365A, 0xFFFD, 0xFFFD, 0x3668, -/* 1AC0 */ 0xFFFD, 0x3661, 0x3663, 0xFFFD, 0xFFFD, 0x3665, 0x364E, 0x365F, -/* 1AC8 */ 0x3653, 0x3667, 0xFFFD, 0xFFFD, 0xFFFD, 0x3658, 0x3656, 0x3657, -/* 1AD0 */ 0xFFFD, 0x3652, 0x3651, 0xFFFD, 0x364B, 0x3669, 0xFFFD, 0x3655, -/* 1AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x364A, 0xFFFD, 0xFFFD, 0xFFFD, 0x365C, -/* 1AE0 */ 0xFFFD, 0x3035, 0x365D, 0xFFFD, 0x3664, 0xFFFD, 0x3659, 0xFFFD, -/* 1AE8 */ 0x364D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D2C, 0x3666, -/* 1AF0 */ 0xFFFD, 0xFFFD, 0x364F, 0xFFFD, 0xFFFD, 0x3D41, 0x3D3B, 0xFFFD, -/* 1AF8 */ 0xFFFD, 0x3D2F, 0xFFFD, 0xFFFD, 0x3D4D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B00 */ 0xFFFD, 0x3D51, 0x3D48, 0xFFFD, 0xFFFD, 0x3D36, 0xFFFD, 0xFFFD, -/* 1B08 */ 0x3D42, 0xFFFD, 0x3D4E, 0x3D47, 0xFFFD, 0x3D3C, 0xFFFD, 0x3D59, -/* 1B10 */ 0x3D5A, 0xFFFD, 0xFFFD, 0x3D4C, 0xFFFD, 0x3D40, 0x3D32, 0x3D33, -/* 1B18 */ 0xFFFD, 0x3D37, 0x3D3E, 0x3D38, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D34, -/* 1B20 */ 0x3D2D, 0x3D2E, 0xFFFD, 0x3D30, 0xFFFD, 0x3D3D, 0xFFFD, 0xFFFD, -/* 1B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D3F, 0x3D57, 0x3D4F, 0xFFFD, 0x3D55, -/* 1B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D5B, 0xFFFD, 0x3D45, 0x3D39, -/* 1B38 */ 0x3D43, 0xFFFD, 0x3D49, 0x3D46, 0x3D35, 0xFFFD, 0x3D53, 0x3D50, -/* 1B40 */ 0x3D58, 0xFFFD, 0x3D44, 0xFFFD, 0xFFFD, 0x3D4B, 0xFFFD, 0xFFFD, -/* 1B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D4A, 0xFFFD, 0x3D3A, 0x3648, 0xFFFD, -/* 1B50 */ 0xFFFD, 0x3D54, 0x3D52, 0x3D56, 0x3D31, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B58 */ 0xFFFD, 0x4447, 0x4446, 0x442C, 0xFFFD, 0xFFFD, 0x4445, 0x442F, -/* 1B60 */ 0x4430, 0xFFFD, 0xFFFD, 0x444E, 0xFFFD, 0x4444, 0xFFFD, 0x4429, -/* 1B68 */ 0xFFFD, 0xFFFD, 0x4438, 0x442E, 0x4431, 0x4449, 0xFFFD, 0x4450, -/* 1B70 */ 0x4448, 0xFFFD, 0x443D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B78 */ 0xFFFD, 0xFFFD, 0x444F, 0xFFFD, 0x443B, 0x4432, 0x443F, 0x444B, -/* 1B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x443A, 0xFFFD, 0x4433, 0xFFFD, 0xFFFD, -/* 1B88 */ 0xFFFD, 0x4436, 0x4440, 0x444A, 0x442D, 0x4437, 0xFFFD, 0x4441, -/* 1B90 */ 0xFFFD, 0xFFFD, 0x4434, 0xFFFD, 0x442B, 0x4439, 0x444D, 0xFFFD, -/* 1B98 */ 0xFFFD, 0x443C, 0x4B34, 0x443E, 0x444C, 0xFFFD, 0x4435, 0xFFFD, -/* 1BA0 */ 0xFFFD, 0xFFFD, 0x442A, 0xFFFD, 0x4443, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BA8 */ 0x4442, 0x4B50, 0xFFFD, 0x4B45, 0x4B4A, 0xFFFD, 0xFFFD, 0x4B36, -/* 1BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B35, 0x4B56, 0xFFFD, 0x4B39, 0x4B49, -/* 1BB8 */ 0xFFFD, 0x4B3B, 0x4B59, 0x4B55, 0xFFFD, 0xFFFD, 0x515B, 0xFFFD, -/* 1BC0 */ 0xFFFD, 0x4B37, 0xFFFD, 0x4B54, 0xFFFD, 0x4B51, 0x4B5E, 0x4B3D, -/* 1BC8 */ 0x4B46, 0xFFFD, 0xFFFD, 0x4B5C, 0x4B52, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BD0 */ 0x4B44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B42, 0x4B3F, -/* 1BD8 */ 0x4B40, 0xFFFD, 0x4B58, 0xFFFD, 0x4B5D, 0x4B5B, 0xFFFD, 0x4B5F, -/* 1BE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B38, 0x5143, 0x4B41, 0xFFFD, 0xFFFD, -/* 1BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B4B, 0x4B3C, 0xFFFD, 0x4B4D, 0xFFFD, -/* 1BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B4F, 0x4B47, 0x4B3A, 0xFFFD, 0x4B57, -/* 1BF8 */ 0x4B5A, 0x4B43, 0x4B4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B4C, 0x5142, -/* 1C00 */ 0xFFFD, 0x4B53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B3E, 0x514C, 0x5156, 0xFFFD, -/* 1C10 */ 0x5155, 0x5161, 0xFFFD, 0x5153, 0xFFFD, 0x5157, 0xFFFD, 0xFFFD, -/* 1C18 */ 0x514E, 0xFFFD, 0xFFFD, 0x515A, 0x577B, 0xFFFD, 0xFFFD, 0x515C, -/* 1C20 */ 0x514B, 0x5166, 0xFFFD, 0xFFFD, 0xFFFD, 0x515F, 0xFFFD, 0x5163, -/* 1C28 */ 0x5168, 0x515D, 0x5151, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C30 */ 0x5154, 0x4B48, 0xFFFD, 0xFFFD, 0x5150, 0x5167, 0xFFFD, 0xFFFD, -/* 1C38 */ 0xFFFD, 0x5169, 0xFFFD, 0x515E, 0x5144, 0x5164, 0xFFFD, 0xFFFD, -/* 1C40 */ 0x5152, 0xFFFD, 0xFFFD, 0x514D, 0xFFFD, 0x5145, 0xFFFD, 0x5149, -/* 1C48 */ 0xFFFD, 0x5162, 0x514A, 0x5148, 0xFFFD, 0xFFFD, 0x5160, 0xFFFD, -/* 1C50 */ 0x5147, 0x5159, 0x5158, 0x5165, 0x514F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x577E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C60 */ 0x582C, 0x5776, 0xFFFD, 0x5824, 0xFFFD, 0xFFFD, 0x5822, 0x5D3B, -/* 1C68 */ 0x5828, 0x582E, 0x5827, 0x5774, 0x5825, 0x5830, 0x5832, 0xFFFD, -/* 1C70 */ 0x5831, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x582B, 0xFFFD, -/* 1C78 */ 0x5826, 0xFFFD, 0x5778, 0x577D, 0xFFFD, 0x582A, 0xFFFD, 0xFFFD, -/* 1C80 */ 0xFFFD, 0xFFFD, 0x577C, 0xFFFD, 0x5146, 0x5777, 0x577A, 0x582D, -/* 1C88 */ 0x5821, 0x5775, 0x5D3A, 0x582F, 0x5779, 0x5829, 0xFFFD, 0xFFFD, -/* 1C90 */ 0xFFFD, 0xFFFD, 0x5D3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C98 */ 0xFFFD, 0xFFFD, 0x5D3F, 0x5D45, 0x5D43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CA0 */ 0x5D46, 0x5D3E, 0xFFFD, 0xFFFD, 0x5D42, 0x5D41, 0x5D47, 0xFFFD, -/* 1CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CB0 */ 0x5D44, 0xFFFD, 0x5D3C, 0xFFFD, 0xFFFD, 0x6225, 0xFFFD, 0xFFFD, -/* 1CB8 */ 0xFFFD, 0x6222, 0x6224, 0xFFFD, 0xFFFD, 0x617E, 0x6221, 0x617A, -/* 1CC0 */ 0xFFFD, 0xFFFD, 0x5823, 0x617B, 0xFFFD, 0x6177, 0xFFFD, 0xFFFD, -/* 1CC8 */ 0x6226, 0xFFFD, 0x6178, 0x6179, 0x617D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CD0 */ 0xFFFD, 0xFFFD, 0x617C, 0xFFFD, 0x656A, 0x6570, 0xFFFD, 0x6567, -/* 1CD8 */ 0xFFFD, 0xFFFD, 0x6572, 0xFFFD, 0xFFFD, 0xFFFD, 0x6569, 0x656C, -/* 1CE0 */ 0x656D, 0x656E, 0x6571, 0xFFFD, 0x6223, 0x6568, 0xFFFD, 0x656F, -/* 1CE8 */ 0x6934, 0x656B, 0xFFFD, 0xFFFD, 0xFFFD, 0x692B, 0xFFFD, 0x692E, -/* 1CF0 */ 0xFFFD, 0x6937, 0x692D, 0x692A, 0xFFFD, 0x692C, 0x6930, 0x6933, -/* 1CF8 */ 0x6932, 0x6936, 0x6929, 0xFFFD, 0xFFFD, 0x6931, 0x6935, 0x6938, -/* 1D00 */ 0x692F, 0x6B61, 0x6B62, 0x6B66, 0x6B67, 0xFFFD, 0x6B64, 0x6B65, -/* 1D08 */ 0x6B63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D10 */ 0x6D59, 0xFFFD, 0xFFFD, 0x6D56, 0x6D57, 0x6D58, 0xFFFD, 0xFFFD, -/* 1D18 */ 0x6F34, 0x6F33, 0xFFFD, 0x703D, 0xFFFD, 0x703B, 0x703E, 0x703C, -/* 1D20 */ 0x7125, 0xFFFD, 0xFFFD, 0x7171, 0x715B, 0xFFFD, 0x7170, 0x723E, -/* 1D28 */ 0x723F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2261, -/* 1D30 */ 0xFFFD, 0xFFFD, 0x245E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D38 */ 0x245F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D40 */ 0x2778, 0x277A, 0x2775, 0x2772, 0x2774, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2776, -/* 1D50 */ 0xFFFD, 0x2773, 0x2770, 0xFFFD, 0x2777, 0xFFFD, 0x2771, 0xFFFD, -/* 1D58 */ 0x2779, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B6F, 0xFFFD, 0x2B73, -/* 1D60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B76, -/* 1D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B72, 0x2B71, -/* 1D70 */ 0xFFFD, 0xFFFD, 0x2B74, 0x2B75, 0xFFFD, 0x2B6E, 0xFFFD, 0xFFFD, -/* 1D78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B70, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x305A, 0x305B, 0x305C, 0xFFFD, 0xFFFD, -/* 1D88 */ 0xFFFD, 0x3051, 0xFFFD, 0x3059, 0x305E, 0xFFFD, 0xFFFD, 0x304F, -/* 1D90 */ 0x3055, 0x304E, 0x3058, 0xFFFD, 0xFFFD, 0x3054, 0xFFFD, 0xFFFD, -/* 1D98 */ 0x305D, 0xFFFD, 0x304D, 0x3050, 0x3056, 0xFFFD, 0x3057, 0x305F, -/* 1DA0 */ 0x3053, 0x3671, 0xFFFD, 0xFFFD, 0x3673, 0x366F, 0xFFFD, 0x367B, -/* 1DA8 */ 0x366D, 0x367A, 0xFFFD, 0x366B, 0x3D5F, 0x3675, 0xFFFD, 0xFFFD, -/* 1DB0 */ 0x3676, 0x3679, 0xFFFD, 0x367D, 0xFFFD, 0x3672, 0xFFFD, 0x3677, -/* 1DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x367C, 0x3670, 0x366C, 0x367E, -/* 1DC0 */ 0xFFFD, 0x3674, 0xFFFD, 0xFFFD, 0x3678, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DC8 */ 0x366E, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D69, 0xFFFD, 0xFFFD, 0x3D5D, -/* 1DD0 */ 0x3D66, 0x3D5C, 0xFFFD, 0x3D64, 0x3D62, 0xFFFD, 0x3D63, 0xFFFD, -/* 1DD8 */ 0xFFFD, 0x3D67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D60, -/* 1DE0 */ 0x3D5E, 0xFFFD, 0x3D61, 0x3D65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DF0 */ 0xFFFD, 0xFFFD, 0x4456, 0x445D, 0x445F, 0x4465, 0xFFFD, 0xFFFD, -/* 1DF8 */ 0x4451, 0xFFFD, 0xFFFD, 0xFFFD, 0x4460, 0xFFFD, 0x4466, 0xFFFD, -/* 1E00 */ 0xFFFD, 0x4463, 0xFFFD, 0x4453, 0x4464, 0x4452, 0xFFFD, 0xFFFD, -/* 1E08 */ 0xFFFD, 0x445E, 0xFFFD, 0x4467, 0xFFFD, 0xFFFD, 0x4457, 0xFFFD, -/* 1E10 */ 0x4462, 0x4455, 0x445C, 0x4458, 0x4454, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x445B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E20 */ 0xFFFD, 0x4461, 0xFFFD, 0x4459, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E28 */ 0xFFFD, 0x445A, 0xFFFD, 0xFFFD, 0x4B67, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E30 */ 0xFFFD, 0x4B63, 0x4B69, 0x4B65, 0xFFFD, 0xFFFD, 0x4B64, 0x4B68, -/* 1E38 */ 0x4B60, 0xFFFD, 0x4B62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E40 */ 0x4B66, 0x4B61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E48 */ 0x4B6A, 0xFFFD, 0xFFFD, 0x516F, 0x516C, 0x5178, 0x5172, 0x5174, -/* 1E50 */ 0xFFFD, 0x516E, 0x5176, 0xFFFD, 0xFFFD, 0x5175, 0x5173, 0xFFFD, -/* 1E58 */ 0x5179, 0xFFFD, 0x5170, 0x5177, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E60 */ 0x516B, 0x516D, 0xFFFD, 0x516A, 0x517A, 0xFFFD, 0x5171, 0xFFFD, -/* 1E68 */ 0xFFFD, 0x5836, 0xFFFD, 0xFFFD, 0xFFFD, 0x5841, 0x583F, 0xFFFD, -/* 1E70 */ 0x5835, 0x5838, 0x5839, 0x5834, 0xFFFD, 0xFFFD, 0x5833, 0x5842, -/* 1E78 */ 0x583D, 0xFFFD, 0xFFFD, 0x583C, 0x583A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E80 */ 0x583E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x583B, 0xFFFD, 0x5837, -/* 1E88 */ 0xFFFD, 0x5840, 0xFFFD, 0x5843, 0x5844, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E90 */ 0xFFFD, 0xFFFD, 0x5D48, 0x5D4E, 0xFFFD, 0x5D4C, 0xFFFD, 0xFFFD, -/* 1E98 */ 0xFFFD, 0x5D4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EA0 */ 0xFFFD, 0x5D4D, 0x5D49, 0x5D4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EA8 */ 0xFFFD, 0xFFFD, 0x6229, 0xFFFD, 0xFFFD, 0xFFFD, 0x622B, 0xFFFD, -/* 1EB0 */ 0x6228, 0xFFFD, 0x6227, 0x6576, 0x622A, 0xFFFD, 0x6577, 0xFFFD, -/* 1EB8 */ 0x6575, 0xFFFD, 0xFFFD, 0x6574, 0xFFFD, 0x6573, 0xFFFD, 0xFFFD, -/* 1EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6939, 0x693A, 0xFFFD, 0xFFFD, -/* 1EC8 */ 0xFFFD, 0xFFFD, 0x6B6A, 0x6B69, 0xFFFD, 0xFFFD, 0x6B68, 0x6D5A, -/* 1ED0 */ 0x6D5B, 0xFFFD, 0xFFFD, 0x6F35, 0x703F, 0xFFFD, 0xFFFD, 0x7126, -/* 1ED8 */ 0x722C, 0xFFFD, 0x7240, 0x2142, 0xFFFD, 0x2B77, 0x3060, 0xFFFD, -/* 1EE0 */ 0x4B6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2B78, 0x2B79, 0x3D6A, -/* 1EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4468, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B6C, -/* 1EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D6B, 0xFFFD, -/* 1EF8 */ 0xFFFD, 0xFFFD, 0x2262, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2460, -/* 1F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x277B, 0xFFFD, -/* 1F08 */ 0x2B7A, 0xFFFD, 0x2B7D, 0xFFFD, 0x2B7B, 0xFFFD, 0xFFFD, 0x2B7C, -/* 1F10 */ 0xFFFD, 0xFFFD, 0x3063, 0x3062, 0x3061, 0xFFFD, 0xFFFD, 0x3722, -/* 1F18 */ 0x3723, 0xFFFD, 0x3721, 0x3724, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F20 */ 0xFFFD, 0x3D6F, 0x3D6E, 0xFFFD, 0x3D6C, 0x3D6D, 0xFFFD, 0x3D70, -/* 1F28 */ 0x446A, 0x4469, 0x446D, 0xFFFD, 0x446C, 0x446B, 0xFFFD, 0x4B6F, -/* 1F30 */ 0xFFFD, 0x4B6E, 0xFFFD, 0x4B6D, 0x517B, 0xFFFD, 0x517C, 0xFFFD, -/* 1F38 */ 0xFFFD, 0x5845, 0x5846, 0xFFFD, 0xFFFD, 0x657C, 0xFFFD, 0x657B, -/* 1F40 */ 0x657A, 0x6578, 0x6579, 0xFFFD, 0x693B, 0x6D5C, 0x7127, 0xFFFD, -/* 1F48 */ 0xFFFD, 0xFFFD, 0x2164, 0xFFFD, 0x2165, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F50 */ 0x2263, 0x2264, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2466, 0xFFFD, -/* 1F58 */ 0xFFFD, 0x2462, 0xFFFD, 0x2461, 0xFFFD, 0x2465, 0xFFFD, 0x2463, -/* 1F60 */ 0xFFFD, 0x2467, 0x2464, 0xFFFD, 0xFFFD, 0x2821, 0x2B7E, 0x277D, -/* 1F68 */ 0x2826, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2827, 0x2823, 0xFFFD, -/* 1F70 */ 0x2824, 0xFFFD, 0x277C, 0xFFFD, 0x277E, 0xFFFD, 0x2825, 0xFFFD, -/* 1F78 */ 0x2822, 0xFFFD, 0xFFFD, 0x2C24, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C27, -/* 1F80 */ 0x2C21, 0xFFFD, 0x2C26, 0xFFFD, 0x2C22, 0xFFFD, 0x2C25, 0x2C23, -/* 1F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3069, -/* 1F90 */ 0x3066, 0xFFFD, 0x3068, 0xFFFD, 0xFFFD, 0xFFFD, 0x3065, 0x306A, -/* 1F98 */ 0xFFFD, 0xFFFD, 0x3067, 0x372C, 0x3064, 0x306B, 0xFFFD, 0xFFFD, -/* 1FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3727, 0x372B, 0xFFFD, 0x372A, 0x3D72, -/* 1FA8 */ 0x3D7D, 0xFFFD, 0xFFFD, 0x372D, 0xFFFD, 0x3728, 0x3D71, 0xFFFD, -/* 1FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3726, 0x3729, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FB8 */ 0xFFFD, 0x3725, 0x372E, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D74, 0x3D7B, -/* 1FC0 */ 0xFFFD, 0xFFFD, 0x3D7A, 0x3D77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC8 */ 0xFFFD, 0x3D79, 0xFFFD, 0xFFFD, 0x3D73, 0x3D75, 0x3D78, 0x3D76, -/* 1FD0 */ 0xFFFD, 0x3D7C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4471, 0x4470, -/* 1FD8 */ 0x446E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4472, 0xFFFD, 0x446F, 0x4B70, -/* 1FE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4474, 0x4473, 0xFFFD, -/* 1FE8 */ 0x4B73, 0x4B71, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B72, 0x517E, 0xFFFD, -/* 1FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x517D, 0x5228, 0x5227, 0x5225, -/* 1FF8 */ 0xFFFD, 0x5224, 0x5221, 0x5222, 0x5223, 0x5226, 0x5229, 0xFFFD, -/* 2000 */ 0xFFFD, 0x584B, 0x5848, 0x5849, 0xFFFD, 0x5847, 0x584D, 0x584C, -/* 2008 */ 0x584A, 0xFFFD, 0x5D50, 0x5D51, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D4F, -/* 2010 */ 0xFFFD, 0xFFFD, 0x622C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2018 */ 0x693D, 0x693C, 0x6B6B, 0x6D5D, 0xFFFD, 0x6F37, 0x6F36, 0x6F38, -/* 2020 */ 0xFFFD, 0x2C28, 0xFFFD, 0xFFFD, 0x372F, 0xFFFD, 0x2166, 0xFFFD, -/* 2028 */ 0xFFFD, 0xFFFD, 0x2265, 0xFFFD, 0xFFFD, 0xFFFD, 0x246C, 0x246A, -/* 2030 */ 0x246B, 0x2468, 0xFFFD, 0x2469, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2038 */ 0xFFFD, 0x282F, 0xFFFD, 0xFFFD, 0x282D, 0x2829, 0x282C, 0xFFFD, -/* 2040 */ 0x2828, 0xFFFD, 0x282B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2048 */ 0x282E, 0x282A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2050 */ 0x2C30, 0x2C2F, 0x2C2E, 0xFFFD, 0x2C37, 0x2C2D, 0xFFFD, 0xFFFD, -/* 2058 */ 0x3070, 0xFFFD, 0x2C34, 0x2C32, 0xFFFD, 0xFFFD, 0x2C2A, 0x2C35, -/* 2060 */ 0xFFFD, 0x2C2C, 0x2C36, 0x2C33, 0x2C2B, 0xFFFD, 0xFFFD, 0x2C38, -/* 2068 */ 0x2C29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3075, 0x306C, -/* 2070 */ 0x3077, 0xFFFD, 0x306F, 0x307A, 0x307B, 0x306D, 0x3079, 0x3076, -/* 2078 */ 0x3074, 0x3078, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3072, -/* 2080 */ 0xFFFD, 0x306E, 0xFFFD, 0x3071, 0x307C, 0x3073, 0xFFFD, 0x2C31, -/* 2088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2090 */ 0x373D, 0x3732, 0x3730, 0xFFFD, 0x3731, 0xFFFD, 0x3738, 0xFFFD, -/* 2098 */ 0x3739, 0x3735, 0xFFFD, 0x373A, 0x3737, 0x3734, 0xFFFD, 0xFFFD, -/* 20A0 */ 0x3733, 0xFFFD, 0xFFFD, 0x3736, 0x373E, 0xFFFD, 0xFFFD, 0x373C, -/* 20A8 */ 0x373B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20B0 */ 0xFFFD, 0xFFFD, 0x3E24, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E25, 0xFFFD, -/* 20B8 */ 0xFFFD, 0x3E2B, 0xFFFD, 0xFFFD, 0x3E2D, 0x3E26, 0xFFFD, 0x3E2A, -/* 20C0 */ 0x3E29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E2C, 0xFFFD, 0x3E23, -/* 20C8 */ 0x3E21, 0x3E27, 0x3D7E, 0xFFFD, 0x3E22, 0x3E28, 0x3E2E, 0x447B, -/* 20D0 */ 0xFFFD, 0x4521, 0xFFFD, 0x4475, 0xFFFD, 0x4522, 0xFFFD, 0xFFFD, -/* 20D8 */ 0xFFFD, 0x4476, 0x4477, 0xFFFD, 0x4523, 0x447E, 0x447C, 0x447D, -/* 20E0 */ 0x4479, 0x4478, 0xFFFD, 0x4524, 0xFFFD, 0xFFFD, 0x447A, 0xFFFD, -/* 20E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20F0 */ 0xFFFD, 0x4B74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B79, 0xFFFD, -/* 20F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B7A, 0xFFFD, 0xFFFD, -/* 2100 */ 0x4B76, 0x4B78, 0x4B75, 0xFFFD, 0x4B77, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2108 */ 0x5233, 0xFFFD, 0xFFFD, 0x5232, 0x522F, 0xFFFD, 0x584E, 0xFFFD, -/* 2110 */ 0x522E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5230, 0x522D, 0x522A, 0x5231, -/* 2118 */ 0x522B, 0x522C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D55, -/* 2120 */ 0xFFFD, 0x5852, 0xFFFD, 0x5851, 0x5853, 0xFFFD, 0x5D52, 0xFFFD, -/* 2128 */ 0xFFFD, 0x584F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5850, -/* 2130 */ 0x5854, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D59, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2138 */ 0xFFFD, 0x5D56, 0x5D54, 0xFFFD, 0x5D57, 0xFFFD, 0x5D5A, 0xFFFD, -/* 2140 */ 0x5D58, 0x5D53, 0xFFFD, 0xFFFD, 0x622F, 0x6232, 0x6621, 0x622D, -/* 2148 */ 0xFFFD, 0x693E, 0x6233, 0xFFFD, 0xFFFD, 0x6231, 0xFFFD, 0x622E, -/* 2150 */ 0x6230, 0x6234, 0x6622, 0xFFFD, 0x657E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2158 */ 0xFFFD, 0xFFFD, 0x657D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5F, 0xFFFD, 0x6D61, 0x6D5E, -/* 2168 */ 0x6D60, 0xFFFD, 0x7040, 0xFFFD, 0x2830, 0x307D, 0x307E, 0xFFFD, -/* 2170 */ 0x4525, 0xFFFD, 0xFFFD, 0xFFFD, 0x7041, 0xFFFD, 0xFFFD, 0x2831, -/* 2178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2C39, 0xFFFD, 0x2C3A, 0xFFFD, 0xFFFD, -/* 2180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3121, 0x3122, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2188 */ 0xFFFD, 0xFFFD, 0x3E2F, 0xFFFD, 0x4528, 0x4527, 0x4526, 0x4B7B, -/* 2190 */ 0xFFFD, 0x4B7C, 0x4B7D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5235, 0x5234, -/* 2198 */ 0xFFFD, 0xFFFD, 0x5855, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D5E, 0x5D5B, -/* 21A0 */ 0x5D5C, 0x5D5D, 0x6236, 0x6235, 0xFFFD, 0x6623, 0x6B6C, 0xFFFD, -/* 21A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4529, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21B0 */ 0x3123, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21B8 */ 0xFFFD, 0x2266, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C3B, 0x3E30, 0xFFFD, -/* 21C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21C8 */ 0x246E, 0x246D, 0xFFFD, 0xFFFD, 0xFFFD, 0x2834, 0x2832, 0x2833, -/* 21D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C3C, 0x2C3D, -/* 21D8 */ 0x3124, 0xFFFD, 0xFFFD, 0xFFFD, 0x3125, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21E0 */ 0x3740, 0x373F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21E8 */ 0xFFFD, 0x3E32, 0xFFFD, 0xFFFD, 0x3E31, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x452B, 0xFFFD, 0x452A, 0xFFFD, -/* 21F8 */ 0xFFFD, 0xFFFD, 0x4B7E, 0x5236, 0xFFFD, 0x5856, 0xFFFD, 0xFFFD, -/* 2200 */ 0xFFFD, 0x5D5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2208 */ 0xFFFD, 0x2835, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C21, 0xFFFD, 0xFFFD, -/* 2210 */ 0xFFFD, 0x246F, 0x2470, 0xFFFD, 0xFFFD, 0x2836, 0x2C3E, 0xFFFD, -/* 2218 */ 0xFFFD, 0x2C3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3126, -/* 2220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x312C, 0xFFFD, 0xFFFD, -/* 2228 */ 0xFFFD, 0x312D, 0x3128, 0xFFFD, 0xFFFD, 0xFFFD, 0x312B, 0x312A, -/* 2230 */ 0x3127, 0xFFFD, 0xFFFD, 0x3129, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2238 */ 0xFFFD, 0xFFFD, 0x3744, 0x3745, 0xFFFD, 0x3741, 0x3743, 0x3747, -/* 2240 */ 0x3746, 0x3742, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E3A, 0xFFFD, -/* 2248 */ 0xFFFD, 0x3E34, 0xFFFD, 0xFFFD, 0x3E37, 0xFFFD, 0x3E38, 0xFFFD, -/* 2250 */ 0x3E35, 0xFFFD, 0xFFFD, 0x3E39, 0xFFFD, 0x3E36, 0x3E33, 0xFFFD, -/* 2258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4538, 0xFFFD, 0x452D, 0xFFFD, -/* 2260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4539, 0x4537, 0x4530, 0x4534, -/* 2268 */ 0x4533, 0xFFFD, 0x4536, 0x4532, 0x453A, 0x4531, 0xFFFD, 0xFFFD, -/* 2270 */ 0xFFFD, 0xFFFD, 0x452F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C23, -/* 2278 */ 0xFFFD, 0x4C27, 0xFFFD, 0x4C24, 0xFFFD, 0xFFFD, 0x452E, 0x4535, -/* 2280 */ 0x4C26, 0xFFFD, 0xFFFD, 0x4C28, 0x4C25, 0x4C22, 0xFFFD, 0xFFFD, -/* 2288 */ 0x5239, 0x523D, 0x523F, 0x523B, 0x523A, 0x5238, 0xFFFD, 0xFFFD, -/* 2290 */ 0xFFFD, 0xFFFD, 0x523C, 0xFFFD, 0x5237, 0xFFFD, 0xFFFD, 0x523E, -/* 2298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5858, 0xFFFD, 0x5857, 0x585F, -/* 22A0 */ 0x5859, 0x585E, 0x585B, 0xFFFD, 0x585D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x585C, 0x585A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22B0 */ 0xFFFD, 0xFFFD, 0x5D60, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D63, 0x5D61, -/* 22B8 */ 0x5D62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x623A, -/* 22C0 */ 0xFFFD, 0xFFFD, 0x623B, 0xFFFD, 0xFFFD, 0xFFFD, 0x623C, 0xFFFD, -/* 22C8 */ 0x6239, 0x623D, 0xFFFD, 0x6237, 0xFFFD, 0xFFFD, 0xFFFD, 0x6624, -/* 22D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6238, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22D8 */ 0xFFFD, 0x6B6D, 0xFFFD, 0xFFFD, 0x6D62, 0xFFFD, 0xFFFD, 0x6F39, -/* 22E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x723A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22E8 */ 0x2C40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2267, 0xFFFD, -/* 22F0 */ 0x2471, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22F8 */ 0x3749, 0x312E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3748, 0xFFFD, -/* 2300 */ 0xFFFD, 0x3E3C, 0xFFFD, 0xFFFD, 0x3E3B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2308 */ 0x453B, 0xFFFD, 0x5243, 0x5240, 0x5241, 0x5242, 0xFFFD, 0xFFFD, -/* 2310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D64, 0xFFFD, 0x623E, 0xFFFD, 0xFFFD, -/* 2318 */ 0xFFFD, 0x6940, 0x693F, 0xFFFD, 0x6D63, 0xFFFD, 0x2837, 0xFFFD, -/* 2320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x453C, 0xFFFD, 0xFFFD, 0x4C29, -/* 2328 */ 0xFFFD, 0xFFFD, 0x5860, 0xFFFD, 0x623F, 0x6941, 0xFFFD, 0xFFFD, -/* 2330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2C41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2338 */ 0x312F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2340 */ 0xFFFD, 0xFFFD, 0x374A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2348 */ 0xFFFD, 0x3E3D, 0xFFFD, 0xFFFD, 0x453D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5861, 0xFFFD, 0xFFFD, -/* 2358 */ 0x5D65, 0xFFFD, 0xFFFD, 0x6240, 0x6942, 0xFFFD, 0xFFFD, 0x283A, -/* 2360 */ 0x2839, 0xFFFD, 0x2838, 0xFFFD, 0x283B, 0xFFFD, 0x2C47, 0xFFFD, -/* 2368 */ 0xFFFD, 0x2C49, 0x2C48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2370 */ 0xFFFD, 0xFFFD, 0x2C43, 0x2C44, 0x2C45, 0xFFFD, 0xFFFD, 0x2C42, -/* 2378 */ 0xFFFD, 0x2C46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3132, -/* 2380 */ 0x3136, 0x3134, 0x3133, 0xFFFD, 0x3137, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2388 */ 0x3138, 0x3139, 0x3131, 0xFFFD, 0x3130, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2390 */ 0xFFFD, 0x313A, 0x3135, 0xFFFD, 0x3753, 0xFFFD, 0x313B, 0xFFFD, -/* 2398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x374D, 0xFFFD, 0x374C, 0xFFFD, -/* 23A0 */ 0x374E, 0x374F, 0x3751, 0x3750, 0x3755, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23A8 */ 0x374B, 0xFFFD, 0x3754, 0xFFFD, 0x3752, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E40, 0x3E42, 0x3E3E, 0x3E3F, 0xFFFD, -/* 23B8 */ 0xFFFD, 0x3E43, 0x3E45, 0x3E46, 0x3E41, 0x3E44, 0xFFFD, 0xFFFD, -/* 23C0 */ 0xFFFD, 0x4541, 0xFFFD, 0x4546, 0x453E, 0x4542, 0xFFFD, 0xFFFD, -/* 23C8 */ 0x4547, 0x4543, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x453F, 0x4540, -/* 23D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4545, 0xFFFD, -/* 23D8 */ 0x4544, 0xFFFD, 0xFFFD, 0xFFFD, 0x4548, 0x4C2E, 0x4C30, 0x4C2B, -/* 23E0 */ 0xFFFD, 0x4C31, 0xFFFD, 0x4C2F, 0x4C2A, 0x4C2D, 0x4C32, 0xFFFD, -/* 23E8 */ 0x4C2C, 0xFFFD, 0xFFFD, 0x5247, 0x5246, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23F0 */ 0x5244, 0xFFFD, 0x5245, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23F8 */ 0x5869, 0xFFFD, 0x586B, 0xFFFD, 0x586A, 0x5862, 0x5866, 0x5865, -/* 2400 */ 0x5863, 0xFFFD, 0xFFFD, 0xFFFD, 0x5864, 0x5867, 0x5868, 0xFFFD, -/* 2408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D6D, 0xFFFD, 0xFFFD, 0x5D67, 0xFFFD, -/* 2410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D6C, 0x5D68, 0xFFFD, 0x5D6B, -/* 2418 */ 0x5D66, 0x5D6A, 0x5D69, 0xFFFD, 0xFFFD, 0x6242, 0xFFFD, 0xFFFD, -/* 2420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6241, 0xFFFD, 0x6627, -/* 2428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6625, 0x6626, 0xFFFD, 0x6943, -/* 2430 */ 0x6946, 0x6944, 0x6945, 0x6B6E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F3A, -/* 2438 */ 0x7042, 0xFFFD, 0xFFFD, 0x7128, 0x7129, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2440 */ 0xFFFD, 0x3E47, 0xFFFD, 0x4549, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2448 */ 0xFFFD, 0xFFFD, 0x2C4A, 0x2C4B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E48, -/* 2450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D6E, 0x6628, 0x6947, 0xFFFD, 0xFFFD, -/* 2458 */ 0xFFFD, 0xFFFD, 0x2841, 0x283C, 0x283E, 0x2840, 0x283F, 0x283D, -/* 2460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C54, 0xFFFD, -/* 2468 */ 0x2C4F, 0x2C4C, 0xFFFD, 0xFFFD, 0x2C53, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2470 */ 0xFFFD, 0x2C52, 0x2C51, 0x2C50, 0x2C4D, 0x2C4E, 0x2C55, 0x3144, -/* 2478 */ 0x313E, 0x313C, 0xFFFD, 0xFFFD, 0x375C, 0xFFFD, 0x3141, 0x3145, -/* 2480 */ 0x3147, 0x3143, 0x313D, 0xFFFD, 0x3142, 0x3140, 0xFFFD, 0x3148, -/* 2488 */ 0xFFFD, 0x3146, 0xFFFD, 0x313F, 0x375D, 0xFFFD, 0xFFFD, 0x3756, -/* 2490 */ 0x3758, 0x375A, 0xFFFD, 0x375B, 0x3759, 0xFFFD, 0xFFFD, 0x375E, -/* 2498 */ 0xFFFD, 0x3757, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E4C, 0xFFFD, 0x3E54, 0xFFFD, 0x3E49, -/* 24A8 */ 0xFFFD, 0x3E55, 0xFFFD, 0x3E4A, 0x3E4B, 0xFFFD, 0xFFFD, 0x3E53, -/* 24B0 */ 0x3E52, 0x3E4F, 0xFFFD, 0xFFFD, 0x3E4D, 0x3E50, 0xFFFD, 0x3E51, -/* 24B8 */ 0x3E4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24C0 */ 0x4554, 0xFFFD, 0x4558, 0xFFFD, 0xFFFD, 0x4C38, 0xFFFD, 0x4556, -/* 24C8 */ 0xFFFD, 0xFFFD, 0x4553, 0x454E, 0x4550, 0x4551, 0x454A, 0xFFFD, -/* 24D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x454D, 0xFFFD, -/* 24D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x454C, 0x454F, 0x4557, 0xFFFD, 0xFFFD, -/* 24E0 */ 0x4555, 0x454B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C3A, 0xFFFD, 0x4C3C, -/* 24E8 */ 0x4552, 0x4C3E, 0xFFFD, 0x4C3F, 0x4C3B, 0xFFFD, 0xFFFD, 0x4C37, -/* 24F0 */ 0xFFFD, 0x4C34, 0x4C39, 0x4C3D, 0x4C36, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24F8 */ 0xFFFD, 0x4C33, 0xFFFD, 0x4C35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2500 */ 0xFFFD, 0xFFFD, 0x5249, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2508 */ 0xFFFD, 0xFFFD, 0x5250, 0x5251, 0xFFFD, 0xFFFD, 0xFFFD, 0x524F, -/* 2510 */ 0x5252, 0xFFFD, 0xFFFD, 0x524B, 0x5248, 0x524D, 0x524A, 0xFFFD, -/* 2518 */ 0x524C, 0xFFFD, 0xFFFD, 0x524E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2520 */ 0xFFFD, 0xFFFD, 0x5872, 0xFFFD, 0x586C, 0x5870, 0x5876, 0x5877, -/* 2528 */ 0x5873, 0x5874, 0x5871, 0xFFFD, 0x586E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2530 */ 0x586D, 0x586F, 0xFFFD, 0xFFFD, 0x5875, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2538 */ 0xFFFD, 0x5D75, 0x5D6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2540 */ 0x5D77, 0xFFFD, 0x5D72, 0x5D73, 0x5D70, 0x5D78, 0x5D74, 0xFFFD, -/* 2548 */ 0xFFFD, 0x5D71, 0xFFFD, 0x5D79, 0x5D76, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2550 */ 0x6246, 0xFFFD, 0xFFFD, 0x6243, 0xFFFD, 0xFFFD, 0xFFFD, 0x6247, -/* 2558 */ 0x6249, 0x6248, 0x6244, 0x6245, 0xFFFD, 0xFFFD, 0x662D, 0xFFFD, -/* 2560 */ 0xFFFD, 0xFFFD, 0x662A, 0x662C, 0x6629, 0x662E, 0xFFFD, 0xFFFD, -/* 2568 */ 0x662B, 0xFFFD, 0x6949, 0x694C, 0x6948, 0xFFFD, 0x694A, 0x694B, -/* 2570 */ 0x694D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B6F, 0xFFFD, 0x6B71, 0xFFFD, -/* 2578 */ 0x6B70, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D64, 0xFFFD, 0xFFFD, 0x7043, -/* 2580 */ 0x712A, 0xFFFD, 0xFFFD, 0xFFFD, 0x2472, 0xFFFD, 0x2843, 0xFFFD, -/* 2588 */ 0xFFFD, 0x2842, 0xFFFD, 0x2C5A, 0x2C59, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2590 */ 0xFFFD, 0x2C56, 0x2C58, 0x2C57, 0xFFFD, 0xFFFD, 0x314B, 0xFFFD, -/* 2598 */ 0x314F, 0x314E, 0x314D, 0x3149, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25A0 */ 0xFFFD, 0xFFFD, 0x314A, 0x314C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25A8 */ 0x3765, 0xFFFD, 0x3763, 0x375F, 0xFFFD, 0xFFFD, 0x3760, 0xFFFD, -/* 25B0 */ 0x3761, 0x3762, 0x3764, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E59, -/* 25B8 */ 0xFFFD, 0x3E58, 0x3E57, 0x3E56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25C0 */ 0x455C, 0xFFFD, 0xFFFD, 0x4559, 0x455B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25C8 */ 0xFFFD, 0x455A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C48, -/* 25D0 */ 0xFFFD, 0x4C41, 0x4C42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C4A, -/* 25D8 */ 0xFFFD, 0x4C49, 0x4C46, 0x4C45, 0x4C44, 0x4C43, 0x4C47, 0x4C40, -/* 25E0 */ 0xFFFD, 0x5253, 0x5258, 0x5256, 0xFFFD, 0xFFFD, 0xFFFD, 0x5255, -/* 25E8 */ 0x5254, 0x5257, 0xFFFD, 0x5878, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D7B, -/* 25F0 */ 0xFFFD, 0xFFFD, 0x5D7A, 0x624B, 0x624A, 0xFFFD, 0xFFFD, 0x662F, -/* 25F8 */ 0xFFFD, 0x694E, 0xFFFD, 0x6D65, 0xFFFD, 0x7045, 0x7044, 0x2167, -/* 2600 */ 0xFFFD, 0xFFFD, 0x3766, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2844, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C5C, 0x2C5F, 0x2C5D, 0xFFFD, -/* 2618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C5B, 0x2C5E, 0xFFFD, 0xFFFD, -/* 2620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3156, 0x3158, 0x3157, 0xFFFD, 0x3152, -/* 2628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2630 */ 0xFFFD, 0x3155, 0x3150, 0x3151, 0x3154, 0x3153, 0xFFFD, 0xFFFD, -/* 2638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3769, 0x376A, 0x3768, -/* 2640 */ 0xFFFD, 0x3767, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2648 */ 0xFFFD, 0x3E5A, 0x3E5C, 0x3E5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2650 */ 0xFFFD, 0x3E5B, 0xFFFD, 0x3E5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4566, -/* 2658 */ 0x455D, 0x4560, 0x4564, 0xFFFD, 0x4562, 0xFFFD, 0x4561, 0x455E, -/* 2660 */ 0x455F, 0xFFFD, 0x4565, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2668 */ 0xFFFD, 0x4563, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C50, 0xFFFD, 0x4C4F, -/* 2670 */ 0xFFFD, 0xFFFD, 0x4C4B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C4E, 0x4C4D, -/* 2678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2680 */ 0x525A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5879, 0xFFFD, 0xFFFD, 0x587B, 0x587A, -/* 2690 */ 0xFFFD, 0x4C4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E22, 0xFFFD, 0x5D7E, 0xFFFD, 0x5E21, -/* 26A0 */ 0xFFFD, 0x5E23, 0x5D7D, 0x5D7C, 0xFFFD, 0xFFFD, 0x624C, 0xFFFD, -/* 26A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6630, 0x6631, -/* 26B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6950, 0x6951, 0x694F, 0xFFFD, 0x6D66, -/* 26B8 */ 0x6D67, 0xFFFD, 0xFFFD, 0xFFFD, 0x2268, 0xFFFD, 0xFFFD, 0x2845, -/* 26C0 */ 0xFFFD, 0xFFFD, 0x2846, 0xFFFD, 0xFFFD, 0x2C61, 0xFFFD, 0x2C60, -/* 26C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x315B, 0x3159, 0x315F, 0xFFFD, -/* 26D0 */ 0x315A, 0x315E, 0x315C, 0x315D, 0xFFFD, 0xFFFD, 0x376B, 0x376D, -/* 26D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x376C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26E0 */ 0x3E5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4569, 0xFFFD, 0xFFFD, -/* 26E8 */ 0xFFFD, 0x4568, 0x4567, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C51, -/* 26F0 */ 0xFFFD, 0xFFFD, 0x4C52, 0x4C53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26F8 */ 0x5921, 0x525B, 0x525D, 0x525C, 0x587E, 0x587C, 0x5922, 0x587D, -/* 2700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E24, 0xFFFD, 0x5E25, -/* 2708 */ 0x5E26, 0x2C62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2710 */ 0x3160, 0x3E61, 0xFFFD, 0x3E60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2718 */ 0x456A, 0xFFFD, 0xFFFD, 0x4C54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6952, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2728 */ 0x2847, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C63, 0x2C64, 0xFFFD, -/* 2730 */ 0xFFFD, 0x3162, 0x3164, 0xFFFD, 0xFFFD, 0x3166, 0x3169, 0x3167, -/* 2738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3168, 0x3165, 0x3161, 0xFFFD, 0x316A, -/* 2740 */ 0x3163, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3776, 0xFFFD, 0x3821, -/* 2748 */ 0xFFFD, 0xFFFD, 0x3778, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3773, -/* 2750 */ 0x3822, 0x3774, 0x3771, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3777, -/* 2758 */ 0x377A, 0xFFFD, 0x377B, 0xFFFD, 0x377C, 0x3772, 0x3779, 0x377D, -/* 2760 */ 0x3775, 0x3770, 0x376E, 0xFFFD, 0xFFFD, 0x377E, 0xFFFD, 0xFFFD, -/* 2768 */ 0x376F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E68, 0xFFFD, 0xFFFD, -/* 2770 */ 0xFFFD, 0x3E64, 0x3E6A, 0xFFFD, 0x3E63, 0x3E65, 0xFFFD, 0x3E62, -/* 2778 */ 0xFFFD, 0x3E66, 0xFFFD, 0x3E67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E69, 0xFFFD, 0xFFFD, -/* 2788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4575, 0xFFFD, -/* 2790 */ 0x4578, 0x456C, 0x4571, 0x456B, 0xFFFD, 0xFFFD, 0x456F, 0xFFFD, -/* 2798 */ 0xFFFD, 0xFFFD, 0x456D, 0xFFFD, 0xFFFD, 0x4574, 0x4573, 0x4570, -/* 27A0 */ 0x4572, 0x456E, 0xFFFD, 0x4577, 0xFFFD, 0x4576, 0xFFFD, 0xFFFD, -/* 27A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C64, -/* 27B0 */ 0xFFFD, 0xFFFD, 0x4C5F, 0xFFFD, 0xFFFD, 0x4C55, 0xFFFD, 0x4C57, -/* 27B8 */ 0xFFFD, 0x4C5C, 0x4C5B, 0x4C5E, 0xFFFD, 0x4C59, 0x4C58, 0xFFFD, -/* 27C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C5A, 0xFFFD, 0x4C60, 0x4C62, 0xFFFD, -/* 27C8 */ 0x4C5D, 0x4C56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D0 */ 0xFFFD, 0x4C63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D8 */ 0xFFFD, 0x5261, 0xFFFD, 0xFFFD, 0x5263, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27E0 */ 0xFFFD, 0xFFFD, 0x5266, 0xFFFD, 0x525E, 0xFFFD, 0x5264, 0xFFFD, -/* 27E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5260, 0x5265, 0x525F, 0xFFFD, 0xFFFD, -/* 27F0 */ 0x5262, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x592C, 0x5927, -/* 27F8 */ 0xFFFD, 0xFFFD, 0x5931, 0xFFFD, 0x5929, 0xFFFD, 0x592F, 0x5926, -/* 2800 */ 0x5923, 0x5932, 0xFFFD, 0xFFFD, 0x592E, 0x5924, 0xFFFD, 0x5928, -/* 2808 */ 0xFFFD, 0x5925, 0x592A, 0xFFFD, 0x592D, 0x5930, 0xFFFD, 0xFFFD, -/* 2810 */ 0xFFFD, 0xFFFD, 0x5E38, 0x5E39, 0x5E29, 0x5E30, 0x5E2E, 0xFFFD, -/* 2818 */ 0xFFFD, 0xFFFD, 0x5E35, 0x592B, 0xFFFD, 0x5E2C, 0xFFFD, 0x5E36, -/* 2820 */ 0xFFFD, 0x5E2B, 0x5E2A, 0x5E34, 0x5E31, 0x5E33, 0xFFFD, 0x5E27, -/* 2828 */ 0x5E37, 0xFFFD, 0xFFFD, 0x5E32, 0x5E3B, 0x5E2F, 0xFFFD, 0xFFFD, -/* 2830 */ 0x5E2D, 0x5E28, 0x5E3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2838 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x624F, 0xFFFD, 0xFFFD, 0x624D, 0x6253, -/* 2840 */ 0xFFFD, 0x6251, 0x6250, 0xFFFD, 0x6256, 0xFFFD, 0xFFFD, 0x6257, -/* 2848 */ 0x6254, 0xFFFD, 0x6255, 0x624E, 0xFFFD, 0xFFFD, 0x6635, 0x6252, -/* 2850 */ 0xFFFD, 0xFFFD, 0x6258, 0xFFFD, 0xFFFD, 0x6632, 0xFFFD, 0xFFFD, -/* 2858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6634, 0xFFFD, 0x6636, 0x6633, 0xFFFD, -/* 2860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6957, -/* 2868 */ 0xFFFD, 0x6956, 0x6954, 0x6953, 0x6955, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B73, 0x6B72, 0xFFFD, -/* 2878 */ 0xFFFD, 0x6D68, 0xFFFD, 0x6D6A, 0x6D6C, 0x6D6B, 0x6D69, 0xFFFD, -/* 2880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2888 */ 0x6F3C, 0x6F3B, 0xFFFD, 0x712B, 0x7046, 0x712C, 0xFFFD, 0xFFFD, -/* 2890 */ 0xFFFD, 0x715C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2848, -/* 2898 */ 0xFFFD, 0xFFFD, 0x2C66, 0x2C67, 0x2C65, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28A0 */ 0xFFFD, 0x2C68, 0x2C69, 0x2C6A, 0xFFFD, 0xFFFD, 0x316B, 0x3171, -/* 28A8 */ 0xFFFD, 0xFFFD, 0x316F, 0xFFFD, 0x316D, 0xFFFD, 0x316E, 0x3170, -/* 28B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x316C, 0xFFFD, 0xFFFD, 0x3823, 0xFFFD, -/* 28B8 */ 0x3825, 0xFFFD, 0x3824, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28C0 */ 0x3E6C, 0xFFFD, 0xFFFD, 0x3E6E, 0x3E6B, 0x3826, 0xFFFD, 0xFFFD, -/* 28C8 */ 0xFFFD, 0xFFFD, 0x3E6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28D0 */ 0xFFFD, 0x457B, 0xFFFD, 0xFFFD, 0x4579, 0xFFFD, 0x457A, 0xFFFD, -/* 28D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C68, 0x4C65, 0x4C67, 0xFFFD, -/* 28E0 */ 0xFFFD, 0x4C66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5267, -/* 28E8 */ 0xFFFD, 0xFFFD, 0x5268, 0xFFFD, 0xFFFD, 0x526A, 0x5269, 0xFFFD, -/* 28F0 */ 0xFFFD, 0xFFFD, 0x5936, 0x5937, 0x5933, 0xFFFD, 0x5934, 0xFFFD, -/* 28F8 */ 0xFFFD, 0x5935, 0x5E3C, 0xFFFD, 0x6638, 0xFFFD, 0x6637, 0xFFFD, -/* 2900 */ 0x6958, 0xFFFD, 0xFFFD, 0x6D6E, 0x6B74, 0xFFFD, 0x6D6D, 0xFFFD, -/* 2908 */ 0x712D, 0x7172, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2849, -/* 2910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2C6D, 0xFFFD, 0x2C6B, 0xFFFD, 0xFFFD, -/* 2918 */ 0xFFFD, 0xFFFD, 0x2C6C, 0xFFFD, 0xFFFD, 0xFFFD, 0x317C, 0xFFFD, -/* 2920 */ 0x3175, 0x317B, 0xFFFD, 0x3174, 0x317A, 0x3178, 0xFFFD, 0xFFFD, -/* 2928 */ 0x3177, 0xFFFD, 0x3176, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3173, -/* 2930 */ 0x3172, 0x3179, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2938 */ 0xFFFD, 0xFFFD, 0x3835, 0x382E, 0xFFFD, 0xFFFD, 0x382D, 0xFFFD, -/* 2940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3827, -/* 2948 */ 0x382A, 0xFFFD, 0x3829, 0xFFFD, 0x382B, 0x3834, 0xFFFD, 0x3828, -/* 2950 */ 0x3831, 0x3832, 0xFFFD, 0x382F, 0xFFFD, 0xFFFD, 0xFFFD, 0x382C, -/* 2958 */ 0xFFFD, 0x3830, 0xFFFD, 0xFFFD, 0x3833, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2960 */ 0x3F21, 0x3E76, 0xFFFD, 0x3E7D, 0x3E7A, 0x3E72, 0x3E7B, 0xFFFD, -/* 2968 */ 0x3E73, 0xFFFD, 0x3E6F, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E78, 0xFFFD, -/* 2970 */ 0xFFFD, 0x3E7E, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E71, 0xFFFD, 0xFFFD, -/* 2978 */ 0xFFFD, 0x3E74, 0xFFFD, 0x3E7C, 0x3E75, 0x3E79, 0xFFFD, 0x3E77, -/* 2980 */ 0xFFFD, 0x3E70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4624, 0x4626, 0x4628, 0x462C, -/* 2990 */ 0xFFFD, 0x4622, 0x457E, 0xFFFD, 0xFFFD, 0x4627, 0x462B, 0x4623, -/* 2998 */ 0x457D, 0xFFFD, 0x457C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4629, 0x4621, -/* 29A0 */ 0x4625, 0xFFFD, 0xFFFD, 0xFFFD, 0x462D, 0xFFFD, 0x462A, 0xFFFD, -/* 29A8 */ 0x4C79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C71, -/* 29B0 */ 0xFFFD, 0x4C7B, 0xFFFD, 0x4D21, 0xFFFD, 0x4C6C, 0xFFFD, 0xFFFD, -/* 29B8 */ 0x4C7C, 0x4C69, 0xFFFD, 0x4C7E, 0x4C6D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29C0 */ 0x4C7D, 0x4C77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29C8 */ 0xFFFD, 0x4C6A, 0xFFFD, 0x4C78, 0xFFFD, 0xFFFD, 0x4C7A, 0xFFFD, -/* 29D0 */ 0xFFFD, 0xFFFD, 0x4C6F, 0x4C6E, 0x4C6B, 0xFFFD, 0x4C73, 0x4C70, -/* 29D8 */ 0x4C74, 0xFFFD, 0xFFFD, 0x4D22, 0xFFFD, 0x4C75, 0x4C76, 0xFFFD, -/* 29E0 */ 0x4C72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29E8 */ 0xFFFD, 0x526F, 0xFFFD, 0xFFFD, 0xFFFD, 0x526C, 0xFFFD, 0xFFFD, -/* 29F0 */ 0xFFFD, 0x5278, 0xFFFD, 0x5270, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29F8 */ 0x5273, 0x526E, 0xFFFD, 0xFFFD, 0x526D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A00 */ 0x5277, 0xFFFD, 0x5276, 0x5275, 0xFFFD, 0x503B, 0xFFFD, 0xFFFD, -/* 2A08 */ 0x5274, 0x526B, 0xFFFD, 0xFFFD, 0x5272, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5271, 0xFFFD, 0xFFFD, -/* 2A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5944, 0x593B, 0x5947, -/* 2A20 */ 0x593F, 0x5945, 0xFFFD, 0xFFFD, 0x5938, 0x593E, 0x5948, 0x5941, -/* 2A28 */ 0x5946, 0x593A, 0xFFFD, 0xFFFD, 0x5942, 0xFFFD, 0x5940, 0xFFFD, -/* 2A30 */ 0xFFFD, 0x593C, 0x593D, 0x5939, 0x5943, 0xFFFD, 0x594A, 0x5949, -/* 2A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E47, 0x5E43, 0xFFFD, 0xFFFD, 0x5E3D, -/* 2A40 */ 0xFFFD, 0xFFFD, 0x5E49, 0xFFFD, 0xFFFD, 0x5E40, 0xFFFD, 0xFFFD, -/* 2A48 */ 0x5E4B, 0xFFFD, 0x5E42, 0xFFFD, 0x5E4D, 0x5E4A, 0x5E3E, 0xFFFD, -/* 2A50 */ 0xFFFD, 0xFFFD, 0x5E45, 0xFFFD, 0x5E3F, 0xFFFD, 0x5E4C, 0xFFFD, -/* 2A58 */ 0xFFFD, 0x5E46, 0xFFFD, 0x5E44, 0xFFFD, 0xFFFD, 0x5E48, 0xFFFD, -/* 2A60 */ 0xFFFD, 0xFFFD, 0x625A, 0x6260, 0xFFFD, 0x6263, 0xFFFD, 0xFFFD, -/* 2A68 */ 0x625B, 0x6262, 0x625D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6259, 0xFFFD, -/* 2A70 */ 0xFFFD, 0x625F, 0x6261, 0xFFFD, 0x625E, 0x625C, 0xFFFD, 0xFFFD, -/* 2A78 */ 0xFFFD, 0xFFFD, 0x6642, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A80 */ 0xFFFD, 0x663E, 0x663C, 0xFFFD, 0x6640, 0xFFFD, 0x6641, 0x663A, -/* 2A88 */ 0x6639, 0x663D, 0x663B, 0xFFFD, 0x663F, 0x6959, 0xFFFD, 0xFFFD, -/* 2A90 */ 0x695A, 0xFFFD, 0x695C, 0x695B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A98 */ 0x6B79, 0x6B76, 0x6B77, 0xFFFD, 0x6B75, 0x6B78, 0xFFFD, 0x6B7A, -/* 2AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D6F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F3D, -/* 2AA8 */ 0xFFFD, 0x7047, 0x712F, 0x7131, 0x712E, 0x7130, 0x3052, 0xFFFD, -/* 2AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F22, 0x3F23, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AB8 */ 0x594B, 0xFFFD, 0x5E4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6644, -/* 2AC0 */ 0x6643, 0xFFFD, 0x6B7B, 0xFFFD, 0x6D70, 0xFFFD, 0x2269, 0xFFFD, -/* 2AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C6E, 0xFFFD, 0xFFFD, -/* 2AD0 */ 0x3224, 0x317D, 0x3223, 0x3221, 0xFFFD, 0x3222, 0x317E, 0xFFFD, -/* 2AD8 */ 0x3836, 0xFFFD, 0x3F24, 0x3F25, 0x4630, 0x4631, 0xFFFD, 0xFFFD, -/* 2AE0 */ 0x462F, 0x4632, 0x462E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AE8 */ 0x4D23, 0xFFFD, 0xFFFD, 0x5279, 0xFFFD, 0xFFFD, 0xFFFD, 0x594E, -/* 2AF0 */ 0x594C, 0x594D, 0x5E51, 0x5E50, 0x5E4F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AF8 */ 0x6645, 0xFFFD, 0xFFFD, 0x6646, 0x6D71, 0xFFFD, 0x7048, 0xFFFD, -/* 2B00 */ 0xFFFD, 0xFFFD, 0x2C70, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C6F, 0x3226, -/* 2B08 */ 0xFFFD, 0xFFFD, 0x3837, 0x3225, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B10 */ 0x383A, 0x3838, 0x3839, 0xFFFD, 0xFFFD, 0x3F27, 0x3F28, 0x3F26, -/* 2B18 */ 0xFFFD, 0xFFFD, 0x4634, 0x4633, 0x4635, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B20 */ 0xFFFD, 0x527A, 0x527C, 0xFFFD, 0xFFFD, 0x527B, 0x594F, 0xFFFD, -/* 2B28 */ 0x6265, 0xFFFD, 0x6264, 0xFFFD, 0x6647, 0xFFFD, 0xFFFD, 0x695D, -/* 2B30 */ 0x6B7C, 0xFFFD, 0xFFFD, 0x2C71, 0xFFFD, 0x3229, 0xFFFD, 0x3228, -/* 2B38 */ 0x3227, 0xFFFD, 0xFFFD, 0xFFFD, 0x3840, 0xFFFD, 0x3842, 0x383B, -/* 2B40 */ 0x383C, 0xFFFD, 0x383D, 0xFFFD, 0x3841, 0x383E, 0x383F, 0xFFFD, -/* 2B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F29, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B50 */ 0x4636, 0x4637, 0xFFFD, 0x4D27, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D24, -/* 2B58 */ 0x4D25, 0xFFFD, 0x4D26, 0x5323, 0xFFFD, 0x5324, 0xFFFD, 0x5321, -/* 2B60 */ 0x527E, 0x5322, 0x527D, 0xFFFD, 0x5950, 0xFFFD, 0xFFFD, 0x5E53, -/* 2B68 */ 0xFFFD, 0x5E52, 0x6134, 0xFFFD, 0x6266, 0x6267, 0xFFFD, 0xFFFD, -/* 2B70 */ 0xFFFD, 0xFFFD, 0x6648, 0x6649, 0x695E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C72, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2C73, 0x2C74, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B88 */ 0xFFFD, 0x2C75, 0xFFFD, 0x322A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B90 */ 0x3845, 0xFFFD, 0xFFFD, 0x3844, 0x3843, 0xFFFD, 0x4638, 0xFFFD, -/* 2B98 */ 0xFFFD, 0x4D28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5952, 0x5951, -/* 2BA0 */ 0xFFFD, 0x5E54, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B7D, 0xFFFD, 0xFFFD, -/* 2BA8 */ 0xFFFD, 0x2473, 0x284A, 0xFFFD, 0x2C76, 0xFFFD, 0x322C, 0xFFFD, -/* 2BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x322B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BB8 */ 0x3847, 0xFFFD, 0xFFFD, 0xFFFD, 0x3846, 0x3848, 0xFFFD, 0xFFFD, -/* 2BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F2B, 0x3F2C, 0x3F2A, 0xFFFD, -/* 2BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BD0 */ 0xFFFD, 0x4D2A, 0x4D29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BD8 */ 0xFFFD, 0x5325, 0xFFFD, 0xFFFD, 0x5326, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BE0 */ 0xFFFD, 0x5953, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BE8 */ 0xFFFD, 0xFFFD, 0x6268, 0xFFFD, 0xFFFD, 0x664A, 0x695F, 0xFFFD, -/* 2BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2F7D, -/* 2BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2168, -/* 2C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x284B, 0x2476, 0xFFFD, 0x2477, -/* 2C08 */ 0xFFFD, 0xFFFD, 0x2474, 0xFFFD, 0xFFFD, 0xFFFD, 0x2475, 0xFFFD, -/* 2C10 */ 0xFFFD, 0x2478, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C18 */ 0x284D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C20 */ 0xFFFD, 0xFFFD, 0x2850, 0x284C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C28 */ 0xFFFD, 0xFFFD, 0x284F, 0xFFFD, 0xFFFD, 0x284E, 0xFFFD, 0xFFFD, -/* 2C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C7C, -/* 2C38 */ 0xFFFD, 0xFFFD, 0x2C7E, 0xFFFD, 0x2C78, 0x2C7B, 0x2D26, 0x2D24, -/* 2C40 */ 0xFFFD, 0xFFFD, 0x2D2A, 0xFFFD, 0x2D27, 0x2C7D, 0x2C7A, 0xFFFD, -/* 2C48 */ 0xFFFD, 0x3F2E, 0x2D25, 0xFFFD, 0x2D28, 0x2C77, 0x2D22, 0xFFFD, -/* 2C50 */ 0xFFFD, 0x2D23, 0xFFFD, 0xFFFD, 0xFFFD, 0x2C79, 0xFFFD, 0xFFFD, -/* 2C58 */ 0x2D21, 0xFFFD, 0xFFFD, 0x2D29, 0x322E, 0xFFFD, 0xFFFD, 0x3230, -/* 2C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x322F, 0x322D, 0x3232, 0xFFFD, 0xFFFD, -/* 2C68 */ 0x3F2D, 0xFFFD, 0x3233, 0x3231, 0x3852, 0xFFFD, 0xFFFD, 0x3849, -/* 2C70 */ 0x384B, 0xFFFD, 0x384C, 0xFFFD, 0x3854, 0x3850, 0x384E, 0xFFFD, -/* 2C78 */ 0x3851, 0x3855, 0xFFFD, 0xFFFD, 0x384A, 0xFFFD, 0x3853, 0xFFFD, -/* 2C80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x384F, 0x384D, 0x3F36, 0xFFFD, 0xFFFD, -/* 2C88 */ 0x3F34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F2F, 0x4646, -/* 2C90 */ 0xFFFD, 0xFFFD, 0x3F33, 0xFFFD, 0xFFFD, 0x3F30, 0xFFFD, 0xFFFD, -/* 2C98 */ 0x3F35, 0xFFFD, 0x3F32, 0xFFFD, 0xFFFD, 0x3F31, 0xFFFD, 0xFFFD, -/* 2CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x463E, 0x463C, -/* 2CA8 */ 0xFFFD, 0x4642, 0xFFFD, 0x463A, 0x4647, 0x463F, 0xFFFD, 0x4639, -/* 2CB0 */ 0xFFFD, 0xFFFD, 0x4644, 0xFFFD, 0x463D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CB8 */ 0xFFFD, 0xFFFD, 0x4645, 0xFFFD, 0xFFFD, 0x4640, 0xFFFD, 0xFFFD, -/* 2CC0 */ 0xFFFD, 0x4643, 0x463B, 0x4D2D, 0xFFFD, 0xFFFD, 0x4D2C, 0x4D2E, -/* 2CC8 */ 0xFFFD, 0x4D2B, 0xFFFD, 0x4D31, 0x4D30, 0x4D2F, 0xFFFD, 0xFFFD, -/* 2CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x532A, 0xFFFD, 0x532D, -/* 2CD8 */ 0xFFFD, 0x532C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5329, 0x5328, -/* 2CE0 */ 0xFFFD, 0xFFFD, 0x532B, 0x5327, 0xFFFD, 0xFFFD, 0x5955, 0x595F, -/* 2CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5959, 0x595B, 0xFFFD, 0x5956, 0xFFFD, -/* 2CF0 */ 0x595A, 0x5954, 0x595D, 0xFFFD, 0x595C, 0x5958, 0xFFFD, 0x595E, -/* 2CF8 */ 0xFFFD, 0x5957, 0xFFFD, 0x5E55, 0x5E5B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E56, 0x5E59, 0xFFFD, 0x5E5A, -/* 2D08 */ 0xFFFD, 0xFFFD, 0x5E58, 0xFFFD, 0x5E57, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D10 */ 0x626B, 0x6269, 0x626A, 0xFFFD, 0xFFFD, 0x664C, 0xFFFD, 0x664B, -/* 2D18 */ 0xFFFD, 0x6961, 0xFFFD, 0x6960, 0xFFFD, 0x6B7E, 0x6D72, 0xFFFD, -/* 2D20 */ 0x7132, 0x7133, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F37, 0xFFFD, -/* 2D28 */ 0xFFFD, 0x5E5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F38, 0xFFFD, -/* 2D30 */ 0xFFFD, 0xFFFD, 0x5960, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F39, -/* 2D38 */ 0x3F3A, 0x3F3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D2B, -/* 2D40 */ 0xFFFD, 0x3234, 0xFFFD, 0xFFFD, 0x3F3C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x664D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D50 */ 0xFFFD, 0x3856, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D32, 0x532E, 0xFFFD, -/* 2D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4648, 0xFFFD, 0xFFFD, -/* 2D60 */ 0x2851, 0x2D2C, 0xFFFD, 0xFFFD, 0xFFFD, 0x3236, 0xFFFD, 0xFFFD, -/* 2D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3235, -/* 2D70 */ 0xFFFD, 0xFFFD, 0x385B, 0x3858, 0x385A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D78 */ 0x3857, 0xFFFD, 0x3859, 0xFFFD, 0x3F3D, 0x3F3E, 0xFFFD, 0x3F3F, -/* 2D80 */ 0x464B, 0xFFFD, 0x464C, 0xFFFD, 0x464A, 0x464D, 0xFFFD, 0xFFFD, -/* 2D88 */ 0xFFFD, 0x4649, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5333, 0x532F, -/* 2D90 */ 0x5332, 0x5334, 0x5331, 0x5330, 0xFFFD, 0x5961, 0x5962, 0x5963, -/* 2D98 */ 0xFFFD, 0xFFFD, 0x5E5E, 0x5E5D, 0x5E5F, 0xFFFD, 0x626D, 0x626C, -/* 2DA0 */ 0xFFFD, 0x664F, 0xFFFD, 0x6650, 0x664E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DA8 */ 0x6962, 0x6963, 0xFFFD, 0x6D73, 0x6F3E, 0x7049, 0xFFFD, 0xFFFD, -/* 2DB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x385C, 0x3F40, 0xFFFD, 0xFFFD, -/* 2DB8 */ 0x226A, 0xFFFD, 0xFFFD, 0xFFFD, 0x226B, 0x226D, 0xFFFD, 0x226E, -/* 2DC0 */ 0x226C, 0xFFFD, 0xFFFD, 0x2522, 0x2523, 0x247B, 0xFFFD, 0xFFFD, -/* 2DC8 */ 0xFFFD, 0xFFFD, 0x2521, 0xFFFD, 0xFFFD, 0xFFFD, 0x247C, 0x247A, -/* 2DD0 */ 0x2479, 0x247D, 0xFFFD, 0x247E, 0x2D2D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DD8 */ 0x2856, 0xFFFD, 0x2855, 0x2857, 0xFFFD, 0xFFFD, 0x285C, 0xFFFD, -/* 2DE0 */ 0x2852, 0x2860, 0x2866, 0xFFFD, 0x2863, 0xFFFD, 0xFFFD, 0x2859, -/* 2DE8 */ 0x285F, 0x2861, 0xFFFD, 0x2854, 0xFFFD, 0xFFFD, 0x285A, 0xFFFD, -/* 2DF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x285E, 0x2858, 0x2865, 0xFFFD, -/* 2DF8 */ 0xFFFD, 0xFFFD, 0x285D, 0xFFFD, 0x285B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E00 */ 0x2853, 0xFFFD, 0x2862, 0x2864, 0x2D34, 0x2D37, 0xFFFD, 0xFFFD, -/* 2E08 */ 0x2D2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D43, -/* 2E10 */ 0x2D3A, 0xFFFD, 0xFFFD, 0x2D42, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D32, -/* 2E18 */ 0xFFFD, 0x2D41, 0x2D36, 0x2D39, 0x2D46, 0xFFFD, 0xFFFD, 0x2D40, -/* 2E20 */ 0xFFFD, 0x2D3B, 0x2D45, 0x2D38, 0x2D3C, 0x2D3F, 0xFFFD, 0xFFFD, -/* 2E28 */ 0x2D30, 0x2D44, 0x2D3E, 0xFFFD, 0xFFFD, 0x2D2F, 0xFFFD, 0x2D33, -/* 2E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D31, 0x3247, -/* 2E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2D3D, 0x2942, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x324A, 0xFFFD, 0xFFFD, -/* 2E48 */ 0x323A, 0xFFFD, 0x3245, 0x3241, 0xFFFD, 0x3254, 0xFFFD, 0x324C, -/* 2E50 */ 0xFFFD, 0x3242, 0xFFFD, 0x324B, 0x323C, 0x3240, 0x3257, 0xFFFD, -/* 2E58 */ 0x324F, 0x3246, 0xFFFD, 0x3255, 0x3238, 0xFFFD, 0x324E, 0xFFFD, -/* 2E60 */ 0xFFFD, 0xFFFD, 0x3237, 0xFFFD, 0xFFFD, 0xFFFD, 0x324D, 0xFFFD, -/* 2E68 */ 0xFFFD, 0x2D35, 0x3F41, 0x3248, 0xFFFD, 0xFFFD, 0x323E, 0xFFFD, -/* 2E70 */ 0x323F, 0x3243, 0xFFFD, 0x3239, 0x3251, 0xFFFD, 0x3250, 0x3258, -/* 2E78 */ 0xFFFD, 0xFFFD, 0x3256, 0x3252, 0x3249, 0x3244, 0xFFFD, 0xFFFD, -/* 2E80 */ 0x323B, 0xFFFD, 0x3253, 0xFFFD, 0xFFFD, 0x323D, 0x3862, 0x3864, -/* 2E88 */ 0x3869, 0x387D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3861, 0xFFFD, 0xFFFD, -/* 2E90 */ 0x386C, 0x3873, 0x3879, 0xFFFD, 0x3866, 0xFFFD, 0x386D, 0xFFFD, -/* 2E98 */ 0xFFFD, 0xFFFD, 0x387B, 0x3876, 0xFFFD, 0xFFFD, 0x3872, 0x386E, -/* 2EA0 */ 0x3860, 0xFFFD, 0x3865, 0x385D, 0xFFFD, 0xFFFD, 0xFFFD, 0x386A, -/* 2EA8 */ 0x3867, 0xFFFD, 0x3877, 0xFFFD, 0x3868, 0x3F6A, 0x3870, 0xFFFD, -/* 2EB0 */ 0x386F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x385E, 0x3863, -/* 2EB8 */ 0x3874, 0x387A, 0xFFFD, 0x385F, 0x386B, 0x3871, 0xFFFD, 0xFFFD, -/* 2EC0 */ 0xFFFD, 0x387C, 0x3875, 0x3878, 0x3F51, 0x3F45, 0xFFFD, 0x3F62, -/* 2EC8 */ 0x3F6B, 0x3F6E, 0xFFFD, 0x3F4D, 0x3F66, 0x3F4E, 0x3F5C, 0xFFFD, -/* 2ED0 */ 0x3F58, 0xFFFD, 0xFFFD, 0x3F59, 0x3F42, 0xFFFD, 0x3F67, 0xFFFD, -/* 2ED8 */ 0xFFFD, 0xFFFD, 0x3F64, 0x3F5A, 0x3F70, 0x3F55, 0x466D, 0xFFFD, -/* 2EE0 */ 0x3F73, 0xFFFD, 0x3F53, 0x3F5F, 0xFFFD, 0xFFFD, 0x3F57, 0x3F71, -/* 2EE8 */ 0x3F50, 0x3F49, 0x3F54, 0xFFFD, 0x3F48, 0x3F46, 0xFFFD, 0x3F68, -/* 2EF0 */ 0x3F4F, 0x3F6C, 0xFFFD, 0x3F6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EF8 */ 0x3F63, 0xFFFD, 0x3F5B, 0x3F4B, 0xFFFD, 0xFFFD, 0x3F43, 0x3F65, -/* 2F00 */ 0x3F6F, 0x3F4A, 0xFFFD, 0x3F74, 0x3F56, 0xFFFD, 0x3F52, 0xFFFD, -/* 2F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F61, 0xFFFD, 0xFFFD, 0x3F5D, 0xFFFD, -/* 2F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F5E, 0x3F4C, 0x3F60, 0x3F47, -/* 2F18 */ 0x3F69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F20 */ 0x3F72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F28 */ 0x3F44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x466C, 0xFFFD, -/* 2F30 */ 0x4724, 0xFFFD, 0x4671, 0xFFFD, 0x466F, 0x465A, 0xFFFD, 0x466A, -/* 2F38 */ 0x467E, 0x4666, 0xFFFD, 0x467D, 0x4664, 0xFFFD, 0x4674, 0x4665, -/* 2F40 */ 0x467B, 0xFFFD, 0xFFFD, 0xFFFD, 0x464F, 0x4657, 0xFFFD, 0x4670, -/* 2F48 */ 0x4668, 0x4723, 0x466B, 0xFFFD, 0x467C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F50 */ 0x466E, 0x4676, 0x465B, 0x4675, 0xFFFD, 0x4728, 0x4656, 0x4677, -/* 2F58 */ 0xFFFD, 0x4726, 0xFFFD, 0x4650, 0xFFFD, 0xFFFD, 0x465E, 0x465D, -/* 2F60 */ 0xFFFD, 0xFFFD, 0x4661, 0x4663, 0x4672, 0x4725, 0xFFFD, 0xFFFD, -/* 2F68 */ 0xFFFD, 0xFFFD, 0x4655, 0xFFFD, 0x4659, 0x4721, 0xFFFD, 0xFFFD, -/* 2F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4727, 0x4678, 0x4673, 0xFFFD, 0xFFFD, -/* 2F78 */ 0x4660, 0x465F, 0xFFFD, 0x4651, 0xFFFD, 0x4669, 0x4652, 0x4667, -/* 2F80 */ 0xFFFD, 0xFFFD, 0x465C, 0x4722, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4658, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F90 */ 0xFFFD, 0xFFFD, 0x4654, 0x467A, 0x4653, 0xFFFD, 0x4D5A, 0xFFFD, -/* 2F98 */ 0xFFFD, 0x4D49, 0xFFFD, 0xFFFD, 0x4D33, 0x4D51, 0xFFFD, 0x4D42, -/* 2FA0 */ 0x4D4C, 0xFFFD, 0x4D45, 0xFFFD, 0x4D36, 0x4D54, 0x4D35, 0x4D48, -/* 2FA8 */ 0xFFFD, 0x4D34, 0xFFFD, 0xFFFD, 0x4D46, 0x4D4F, 0x4D4D, 0x4D41, -/* 2FB0 */ 0x4D3C, 0x4D3A, 0xFFFD, 0x4D3B, 0x4D4E, 0x4D59, 0x4D43, 0xFFFD, -/* 2FB8 */ 0xFFFD, 0x4D3E, 0xFFFD, 0x4D52, 0xFFFD, 0xFFFD, 0x4D3D, 0x4D37, -/* 2FC0 */ 0x4D47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D3F, 0x4D39, -/* 2FC8 */ 0xFFFD, 0xFFFD, 0x4679, 0xFFFD, 0x4D4A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FD0 */ 0xFFFD, 0x4D4B, 0x4D40, 0x4D38, 0x4D53, 0x4D44, 0xFFFD, 0x4D57, -/* 2FD8 */ 0xFFFD, 0x4D56, 0xFFFD, 0x4D50, 0x4D55, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FE0 */ 0x4D58, 0x535C, 0x535D, 0x5350, 0x534F, 0x534B, 0xFFFD, 0xFFFD, -/* 2FE8 */ 0xFFFD, 0x535F, 0x535E, 0x464E, 0x5348, 0x534C, 0x5346, 0xFFFD, -/* 2FF0 */ 0x5359, 0x534A, 0xFFFD, 0x5360, 0x5343, 0x5341, 0x534D, 0x5357, -/* 2FF8 */ 0x5352, 0xFFFD, 0x5338, 0xFFFD, 0x5356, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3000 */ 0xFFFD, 0x4662, 0x5344, 0x533B, 0x533E, 0x5364, 0x5345, 0x533C, -/* 3008 */ 0x533A, 0x5337, 0xFFFD, 0xFFFD, 0x534E, 0xFFFD, 0xFFFD, 0x5349, -/* 3010 */ 0x5351, 0xFFFD, 0x5361, 0x5365, 0xFFFD, 0xFFFD, 0x5340, 0x5354, -/* 3018 */ 0x5358, 0x533D, 0x5362, 0xFFFD, 0xFFFD, 0xFFFD, 0x5335, 0xFFFD, -/* 3020 */ 0x535B, 0x533F, 0x5353, 0x5339, 0x5347, 0x5342, 0xFFFD, 0xFFFD, -/* 3028 */ 0x5355, 0x5366, 0x5363, 0x535A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5336, 0xFFFD, 0xFFFD, -/* 3038 */ 0x5974, 0xFFFD, 0x596B, 0x596E, 0xFFFD, 0xFFFD, 0x5970, 0x5965, -/* 3040 */ 0x596C, 0x5972, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5967, -/* 3048 */ 0x5977, 0xFFFD, 0xFFFD, 0x5971, 0xFFFD, 0x5968, 0x5A22, 0x597A, -/* 3050 */ 0x5964, 0x5E72, 0x596A, 0xFFFD, 0xFFFD, 0x5975, 0xFFFD, 0x5A21, -/* 3058 */ 0xFFFD, 0xFFFD, 0x597C, 0x5969, 0x596F, 0x5973, 0x596D, 0x5A23, -/* 3060 */ 0x597E, 0x597B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5966, 0x5A24, 0xFFFD, -/* 3068 */ 0x5978, 0xFFFD, 0xFFFD, 0x5976, 0xFFFD, 0xFFFD, 0xFFFD, 0x5979, -/* 3070 */ 0x5F21, 0x5E6C, 0x5E71, 0x5E7E, 0x5E70, 0x5E68, 0x5E6D, 0xFFFD, -/* 3078 */ 0xFFFD, 0xFFFD, 0x5E61, 0x5E79, 0x5E7B, 0x5E60, 0xFFFD, 0x5E7D, -/* 3080 */ 0x5E75, 0xFFFD, 0x5E7C, 0x5E6E, 0xFFFD, 0x5E66, 0x597D, 0x5E76, -/* 3088 */ 0x5E73, 0x5E62, 0x5F23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E64, -/* 3090 */ 0x5E74, 0xFFFD, 0x5F22, 0x5E77, 0x5E6A, 0xFFFD, 0xFFFD, 0x5E78, -/* 3098 */ 0x5E6B, 0x5F24, 0x5E65, 0x5E6F, 0x5E7A, 0x5E67, 0x5E69, 0xFFFD, -/* 30A0 */ 0xFFFD, 0x5E63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x627D, 0xFFFD, 0x6273, 0x626E, 0x6274, -/* 30B0 */ 0x627E, 0x6324, 0x6323, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6275, -/* 30B8 */ 0x6325, 0x6278, 0x6270, 0xFFFD, 0x6272, 0x6271, 0x6277, 0x627C, -/* 30C0 */ 0x626F, 0x6276, 0x627B, 0xFFFD, 0xFFFD, 0x6279, 0xFFFD, 0xFFFD, -/* 30C8 */ 0x627A, 0xFFFD, 0xFFFD, 0x6660, 0x6321, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30D0 */ 0xFFFD, 0x6658, 0x665C, 0x6654, 0x6657, 0xFFFD, 0x665F, 0xFFFD, -/* 30D8 */ 0x6664, 0x665D, 0xFFFD, 0x6655, 0x6665, 0x665E, 0xFFFD, 0xFFFD, -/* 30E0 */ 0x6662, 0xFFFD, 0x6656, 0xFFFD, 0xFFFD, 0x6651, 0x6659, 0x6653, -/* 30E8 */ 0xFFFD, 0x6663, 0x6661, 0x6652, 0x665A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30F0 */ 0x696A, 0xFFFD, 0x665B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x696F, -/* 30F8 */ 0x6967, 0x6965, 0x6969, 0x6966, 0xFFFD, 0xFFFD, 0x696B, 0x696D, -/* 3100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x696C, 0xFFFD, 0xFFFD, 0x696E, 0x6C21, -/* 3108 */ 0x6C27, 0xFFFD, 0x6968, 0x6C26, 0xFFFD, 0x6C2D, 0x6C24, 0x6C2B, -/* 3110 */ 0x6C2A, 0x6964, 0x6C25, 0x6322, 0x6C2E, 0x6C23, 0x6C28, 0xFFFD, -/* 3118 */ 0x6C2C, 0x6C22, 0xFFFD, 0x6D77, 0xFFFD, 0x6C29, 0xFFFD, 0xFFFD, -/* 3120 */ 0x6F43, 0x6D78, 0x6D76, 0x6D74, 0x6D75, 0x6D79, 0xFFFD, 0xFFFD, -/* 3128 */ 0x6F41, 0x6F3F, 0x6F44, 0x6F42, 0xFFFD, 0x6F45, 0xFFFD, 0x6F40, -/* 3130 */ 0xFFFD, 0xFFFD, 0x704A, 0xFFFD, 0xFFFD, 0x7134, 0x7135, 0x7136, -/* 3138 */ 0xFFFD, 0xFFFD, 0x7235, 0x722D, 0x226F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3140 */ 0xFFFD, 0x325A, 0x3259, 0xFFFD, 0xFFFD, 0x3921, 0xFFFD, 0xFFFD, -/* 3148 */ 0x387E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3150 */ 0x4D5B, 0x5367, 0x5A25, 0x5A27, 0x5A26, 0xFFFD, 0xFFFD, 0x5F25, -/* 3158 */ 0x6326, 0x7173, 0xFFFD, 0xFFFD, 0x2869, 0x286A, 0x2868, 0x2867, -/* 3160 */ 0xFFFD, 0xFFFD, 0x2D4A, 0x2D48, 0xFFFD, 0xFFFD, 0x2D47, 0xFFFD, -/* 3168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2D49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3266, 0x3263, 0x3261, 0xFFFD, -/* 3178 */ 0xFFFD, 0xFFFD, 0x3264, 0xFFFD, 0x325E, 0x326D, 0xFFFD, 0x326F, -/* 3180 */ 0x325F, 0xFFFD, 0xFFFD, 0x3270, 0x326B, 0x325D, 0x3262, 0x326C, -/* 3188 */ 0x3268, 0x3265, 0xFFFD, 0xFFFD, 0x326E, 0x3260, 0xFFFD, 0xFFFD, -/* 3190 */ 0x3269, 0x325B, 0xFFFD, 0xFFFD, 0x3267, 0xFFFD, 0x326A, 0x325C, -/* 3198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3928, -/* 31A0 */ 0xFFFD, 0xFFFD, 0x392B, 0x392E, 0xFFFD, 0xFFFD, 0x3923, 0x392C, -/* 31A8 */ 0x392A, 0x3927, 0x392F, 0x3930, 0x3932, 0x3933, 0x3922, 0xFFFD, -/* 31B0 */ 0x3925, 0x3924, 0x3931, 0xFFFD, 0x3926, 0xFFFD, 0xFFFD, 0x3929, -/* 31B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x392D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31C0 */ 0x4025, 0xFFFD, 0x3F78, 0xFFFD, 0xFFFD, 0x472E, 0x4023, 0x3F75, -/* 31C8 */ 0xFFFD, 0x3F7A, 0xFFFD, 0x3F7E, 0x3F7C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31D0 */ 0xFFFD, 0x3F76, 0x3F79, 0xFFFD, 0xFFFD, 0x3F77, 0xFFFD, 0x4024, -/* 31D8 */ 0x4022, 0x3F7B, 0x3F7D, 0x4021, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x472F, 0x4735, 0x472B, 0x4731, -/* 31E8 */ 0xFFFD, 0x472D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F0 */ 0x4734, 0xFFFD, 0xFFFD, 0x472A, 0x4737, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F8 */ 0x4733, 0xFFFD, 0x4729, 0x472C, 0x4736, 0x4732, 0xFFFD, 0xFFFD, -/* 3200 */ 0x4D7B, 0x4D70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3208 */ 0x4D64, 0x4D79, 0x4D65, 0xFFFD, 0xFFFD, 0x4D62, 0xFFFD, 0x4D6B, -/* 3210 */ 0x4D63, 0xFFFD, 0x4D5D, 0x4D78, 0xFFFD, 0x4D75, 0x4D76, 0x4D5E, -/* 3218 */ 0xFFFD, 0x4D6D, 0xFFFD, 0x4D67, 0x4D6E, 0x4D61, 0xFFFD, 0x4D7A, -/* 3220 */ 0x4D72, 0x4D6C, 0x4D5C, 0xFFFD, 0x4D73, 0xFFFD, 0xFFFD, 0x4D77, -/* 3228 */ 0xFFFD, 0x4D71, 0xFFFD, 0x4D6F, 0xFFFD, 0x4D69, 0xFFFD, 0x4D60, -/* 3230 */ 0x4D68, 0x4D74, 0x4D66, 0xFFFD, 0xFFFD, 0x4D6A, 0xFFFD, 0xFFFD, -/* 3238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4730, 0x5379, 0x5424, 0x5378, -/* 3240 */ 0x5374, 0x5371, 0xFFFD, 0x536F, 0xFFFD, 0x5368, 0xFFFD, 0x536E, -/* 3248 */ 0xFFFD, 0x5373, 0x5370, 0x5422, 0x537B, 0x5375, 0x537A, 0xFFFD, -/* 3250 */ 0x5372, 0x5427, 0x5369, 0x536A, 0x5423, 0xFFFD, 0x5428, 0xFFFD, -/* 3258 */ 0x5429, 0x5377, 0x4D5F, 0x537D, 0x5376, 0x5421, 0x537C, 0xFFFD, -/* 3260 */ 0xFFFD, 0xFFFD, 0x536D, 0xFFFD, 0x5426, 0xFFFD, 0x536B, 0xFFFD, -/* 3268 */ 0x5A32, 0x537E, 0x5425, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3270 */ 0x5A2F, 0xFFFD, 0xFFFD, 0x5A39, 0x5A35, 0xFFFD, 0x5A33, 0x5A2E, -/* 3278 */ 0x5A3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A2A, 0x5A36, -/* 3280 */ 0x5A37, 0x5A2D, 0x5A2C, 0x5A3A, 0xFFFD, 0x5A30, 0x5A2B, 0x5A31, -/* 3288 */ 0xFFFD, 0x5A3C, 0x5A29, 0x5A3B, 0x5A38, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3290 */ 0xFFFD, 0xFFFD, 0x5A34, 0x5A28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3298 */ 0xFFFD, 0x5F27, 0xFFFD, 0x5F2B, 0x5F28, 0x5F2F, 0x5F35, 0x5F2A, -/* 32A0 */ 0xFFFD, 0x5F3E, 0xFFFD, 0x5F38, 0x5F2D, 0x5F39, 0x5F34, 0x5F3B, -/* 32A8 */ 0x5F2C, 0xFFFD, 0xFFFD, 0x5F2E, 0x5F3C, 0x5F26, 0x5F3A, 0xFFFD, -/* 32B0 */ 0xFFFD, 0x5F32, 0x5F31, 0x5F36, 0x5F29, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32B8 */ 0x5F30, 0x5F37, 0xFFFD, 0x5F33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32C0 */ 0xFFFD, 0xFFFD, 0x6333, 0x6331, 0xFFFD, 0xFFFD, 0x6337, 0x6335, -/* 32C8 */ 0x6338, 0xFFFD, 0x632A, 0x6332, 0x633C, 0x5F3D, 0x632E, 0xFFFD, -/* 32D0 */ 0x536C, 0x6329, 0x6336, 0x6330, 0x632D, 0x6328, 0x6327, 0x633B, -/* 32D8 */ 0xFFFD, 0x632C, 0x632B, 0xFFFD, 0x6334, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32E0 */ 0xFFFD, 0xFFFD, 0x632F, 0x633A, 0xFFFD, 0x6669, 0x666A, 0xFFFD, -/* 32E8 */ 0xFFFD, 0x6667, 0xFFFD, 0x666F, 0xFFFD, 0xFFFD, 0x6671, 0x6666, -/* 32F0 */ 0x6339, 0x6673, 0x6668, 0xFFFD, 0xFFFD, 0x666E, 0xFFFD, 0x6670, -/* 32F8 */ 0x666B, 0x6672, 0x666D, 0x666C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6971, -/* 3300 */ 0x6972, 0xFFFD, 0x6974, 0xFFFD, 0xFFFD, 0x6975, 0x6973, 0xFFFD, -/* 3308 */ 0x6970, 0xFFFD, 0x6C31, 0x6C34, 0x6C30, 0xFFFD, 0xFFFD, 0x6C32, -/* 3310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C33, 0x6D7E, 0x6D7C, 0xFFFD, 0x6D7B, -/* 3318 */ 0x6C2F, 0x6D7D, 0x6C35, 0x6D7A, 0xFFFD, 0x6F48, 0x6F26, 0x6F46, -/* 3320 */ 0xFFFD, 0x6F47, 0x6F49, 0xFFFD, 0x704D, 0xFFFD, 0x704C, 0x704B, -/* 3328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x715D, 0x7175, 0x7174, 0x7176, 0xFFFD, -/* 3330 */ 0x2D4B, 0xFFFD, 0x3271, 0x3272, 0xFFFD, 0xFFFD, 0xFFFD, 0x4026, -/* 3338 */ 0xFFFD, 0x6C36, 0x704E, 0xFFFD, 0xFFFD, 0x2D4C, 0xFFFD, 0xFFFD, -/* 3340 */ 0xFFFD, 0x3934, 0xFFFD, 0xFFFD, 0x4028, 0x4027, 0xFFFD, 0xFFFD, -/* 3348 */ 0xFFFD, 0x542A, 0x2D4D, 0xFFFD, 0x2D4F, 0x2D4E, 0xFFFD, 0xFFFD, -/* 3350 */ 0x3273, 0xFFFD, 0x327A, 0xFFFD, 0x3278, 0x3276, 0xFFFD, 0x327D, -/* 3358 */ 0x3274, 0x3275, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x327E, -/* 3360 */ 0xFFFD, 0x327C, 0x3279, 0x3277, 0xFFFD, 0xFFFD, 0x327B, 0xFFFD, -/* 3368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3935, 0xFFFD, 0xFFFD, 0x3945, -/* 3370 */ 0xFFFD, 0x3947, 0xFFFD, 0xFFFD, 0x393B, 0xFFFD, 0x3946, 0xFFFD, -/* 3378 */ 0x3936, 0xFFFD, 0x3942, 0x393E, 0x3940, 0x393A, 0x3941, 0xFFFD, -/* 3380 */ 0xFFFD, 0xFFFD, 0x393D, 0xFFFD, 0x393C, 0x3938, 0xFFFD, 0x3943, -/* 3388 */ 0xFFFD, 0xFFFD, 0x393F, 0x3937, 0xFFFD, 0x3939, 0xFFFD, 0x3944, -/* 3390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4033, 0xFFFD, 0xFFFD, -/* 3398 */ 0xFFFD, 0x402F, 0x4031, 0x402C, 0x402B, 0x4029, 0xFFFD, 0x4030, -/* 33A0 */ 0x4032, 0x402E, 0xFFFD, 0x402D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4035, 0xFFFD, 0x4739, 0x473F, -/* 33B0 */ 0x473A, 0x473B, 0xFFFD, 0x4740, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33B8 */ 0xFFFD, 0x4738, 0x402A, 0xFFFD, 0xFFFD, 0x473E, 0x473D, 0xFFFD, -/* 33C0 */ 0xFFFD, 0x473C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33C8 */ 0xFFFD, 0xFFFD, 0x4D7D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E2A, 0x4E29, -/* 33D0 */ 0xFFFD, 0x4E24, 0xFFFD, 0x4E28, 0x4D7E, 0x4E21, 0xFFFD, 0xFFFD, -/* 33D8 */ 0xFFFD, 0x4E26, 0x4D7C, 0xFFFD, 0xFFFD, 0x4E22, 0x4E27, 0x4E25, -/* 33E0 */ 0xFFFD, 0x4E23, 0xFFFD, 0xFFFD, 0x4034, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33E8 */ 0x542B, 0x5432, 0xFFFD, 0xFFFD, 0x5436, 0xFFFD, 0x542E, 0x542C, -/* 33F0 */ 0xFFFD, 0x5435, 0xFFFD, 0xFFFD, 0x5434, 0xFFFD, 0xFFFD, 0x542D, -/* 33F8 */ 0xFFFD, 0x5433, 0x542F, 0x5430, 0x5431, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3400 */ 0xFFFD, 0x5A3E, 0x5A4A, 0xFFFD, 0xFFFD, 0x5A45, 0x5A47, 0xFFFD, -/* 3408 */ 0xFFFD, 0x5A3F, 0x5A43, 0xFFFD, 0x5A46, 0xFFFD, 0xFFFD, 0x5A49, -/* 3410 */ 0x5A41, 0x5A42, 0x5A48, 0x5A40, 0x5A44, 0xFFFD, 0x5F40, 0xFFFD, -/* 3418 */ 0x5F3F, 0xFFFD, 0x5F45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F41, -/* 3420 */ 0xFFFD, 0x5F42, 0xFFFD, 0xFFFD, 0x5F43, 0x5F46, 0xFFFD, 0xFFFD, -/* 3428 */ 0xFFFD, 0x6341, 0xFFFD, 0xFFFD, 0x6344, 0xFFFD, 0x633E, 0x6340, -/* 3430 */ 0xFFFD, 0xFFFD, 0x633F, 0x6342, 0x6343, 0x5F44, 0x633D, 0xFFFD, -/* 3438 */ 0xFFFD, 0xFFFD, 0x6677, 0x667A, 0x667C, 0x6675, 0x6676, 0x6679, -/* 3440 */ 0x667B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6678, 0x6674, 0x6976, 0xFFFD, -/* 3448 */ 0xFFFD, 0x6977, 0xFFFD, 0xFFFD, 0x6C38, 0xFFFD, 0x6C3A, 0xFFFD, -/* 3450 */ 0x6C37, 0x6C39, 0xFFFD, 0xFFFD, 0x6E21, 0xFFFD, 0x6F4C, 0x6F4B, -/* 3458 */ 0xFFFD, 0x6F4A, 0xFFFD, 0xFFFD, 0x7137, 0x7138, 0x713A, 0x7139, -/* 3460 */ 0xFFFD, 0x2270, 0xFFFD, 0xFFFD, 0xFFFD, 0x3948, 0xFFFD, 0xFFFD, -/* 3468 */ 0x4741, 0xFFFD, 0xFFFD, 0x667D, 0x4036, 0xFFFD, 0x4038, 0x4037, -/* 3470 */ 0xFFFD, 0xFFFD, 0x4742, 0xFFFD, 0x4E2B, 0x4E2E, 0x4E2D, 0xFFFD, -/* 3478 */ 0x4E2C, 0x5437, 0x5439, 0x5438, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F47, 0x5F49, 0x5F48, 0xFFFD, -/* 3488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6721, 0x667E, 0xFFFD, -/* 3490 */ 0x6978, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E23, 0x6E22, 0x2D50, -/* 3498 */ 0xFFFD, 0x394B, 0x3949, 0xFFFD, 0xFFFD, 0x394A, 0x403A, 0x403B, -/* 34A0 */ 0x4749, 0x4039, 0xFFFD, 0x4743, 0x4747, 0x4746, 0x4748, 0xFFFD, -/* 34A8 */ 0x4745, 0x4744, 0x474A, 0xFFFD, 0x4E31, 0x4E2F, 0xFFFD, 0x4E30, -/* 34B0 */ 0x543C, 0x543A, 0xFFFD, 0xFFFD, 0x543B, 0x5A4B, 0x5F4A, 0x5F4B, -/* 34B8 */ 0xFFFD, 0xFFFD, 0x6722, 0x6979, 0xFFFD, 0xFFFD, 0x6C3B, 0x6E24, -/* 34C0 */ 0xFFFD, 0xFFFD, 0x6F4D, 0x713B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34C8 */ 0x2D51, 0xFFFD, 0xFFFD, 0x2D52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3321, 0x394F, -/* 34D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34E0 */ 0x394D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x394E, 0xFFFD, 0xFFFD, -/* 34E8 */ 0xFFFD, 0x394C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F0 */ 0xFFFD, 0xFFFD, 0x403E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F8 */ 0x474F, 0x4040, 0xFFFD, 0xFFFD, 0xFFFD, 0x4043, 0x4044, 0xFFFD, -/* 3500 */ 0xFFFD, 0x4046, 0xFFFD, 0x4048, 0xFFFD, 0x4049, 0x403D, 0x403C, -/* 3508 */ 0x404A, 0xFFFD, 0x4047, 0x4045, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3510 */ 0x4041, 0x4042, 0x403F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3518 */ 0xFFFD, 0xFFFD, 0x474E, 0x4756, 0x4753, 0x474B, 0x4750, 0xFFFD, -/* 3520 */ 0xFFFD, 0x4757, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x474D, 0xFFFD, -/* 3528 */ 0x4755, 0x4751, 0x4754, 0x4752, 0xFFFD, 0x474C, 0xFFFD, 0xFFFD, -/* 3530 */ 0xFFFD, 0xFFFD, 0x4E34, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E36, 0xFFFD, -/* 3538 */ 0xFFFD, 0x4E35, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E37, 0xFFFD, 0xFFFD, -/* 3540 */ 0x4E33, 0x543F, 0xFFFD, 0x544B, 0x5444, 0xFFFD, 0x544C, 0x5446, -/* 3548 */ 0xFFFD, 0x5447, 0xFFFD, 0xFFFD, 0x544A, 0xFFFD, 0x5448, 0x543E, -/* 3550 */ 0xFFFD, 0x5A56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3558 */ 0x543D, 0xFFFD, 0x5441, 0xFFFD, 0x5440, 0x5442, 0x5443, 0xFFFD, -/* 3560 */ 0x5445, 0x5449, 0x544D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A51, 0x5A57, -/* 3568 */ 0x5A54, 0x5A4C, 0x5A58, 0x5A4D, 0xFFFD, 0x5A53, 0xFFFD, 0xFFFD, -/* 3570 */ 0xFFFD, 0x5A59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3578 */ 0x5A5B, 0x5A55, 0xFFFD, 0x5A4E, 0xFFFD, 0x5A4F, 0x5A50, 0xFFFD, -/* 3580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A5C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3588 */ 0x5A5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F50, 0x5F59, -/* 3590 */ 0x5F56, 0x5F58, 0xFFFD, 0xFFFD, 0x5F51, 0xFFFD, 0x5F57, 0xFFFD, -/* 3598 */ 0x5F53, 0xFFFD, 0x5F4F, 0x5F54, 0x5F5B, 0x5A52, 0x5F55, 0x5F4E, -/* 35A0 */ 0xFFFD, 0x5F4D, 0xFFFD, 0x5F5C, 0xFFFD, 0x5F5A, 0xFFFD, 0x5F4C, -/* 35A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F52, 0x6347, 0x6355, 0x6350, 0x6352, -/* 35B0 */ 0x6346, 0xFFFD, 0xFFFD, 0x6345, 0xFFFD, 0xFFFD, 0xFFFD, 0x6354, -/* 35B8 */ 0x634C, 0x6349, 0x634F, 0xFFFD, 0x6348, 0xFFFD, 0x634A, 0x6353, -/* 35C0 */ 0x6351, 0xFFFD, 0xFFFD, 0x6358, 0x6356, 0x634D, 0x6357, 0x634E, -/* 35C8 */ 0xFFFD, 0x6726, 0xFFFD, 0x672D, 0xFFFD, 0xFFFD, 0x6C3E, 0xFFFD, -/* 35D0 */ 0x634B, 0x6724, 0xFFFD, 0x6725, 0x672A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35D8 */ 0xFFFD, 0x6723, 0x672C, 0x672E, 0x6727, 0x6729, 0x672B, 0x6728, -/* 35E0 */ 0x672F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x697C, 0xFFFD, -/* 35E8 */ 0xFFFD, 0x697A, 0xFFFD, 0xFFFD, 0x697E, 0xFFFD, 0x6A21, 0xFFFD, -/* 35F0 */ 0x6A22, 0x697D, 0xFFFD, 0x697B, 0xFFFD, 0xFFFD, 0x6A23, 0xFFFD, -/* 35F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3600 */ 0xFFFD, 0x6C3D, 0x6C3C, 0x6C3F, 0x6C40, 0xFFFD, 0xFFFD, 0x6E25, -/* 3608 */ 0x6E2A, 0xFFFD, 0xFFFD, 0x6E27, 0xFFFD, 0x6E26, 0x6E29, 0x6E28, -/* 3610 */ 0xFFFD, 0x6F51, 0xFFFD, 0xFFFD, 0x6F50, 0x6F4E, 0xFFFD, 0x6F4F, -/* 3618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x704F, 0x7050, 0xFFFD, -/* 3620 */ 0xFFFD, 0x713C, 0x713D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7177, -/* 3628 */ 0x7236, 0x3950, 0xFFFD, 0x3951, 0x4758, 0x4E38, 0x544E, 0xFFFD, -/* 3630 */ 0xFFFD, 0xFFFD, 0x6359, 0x6730, 0xFFFD, 0x6F52, 0xFFFD, 0x3322, -/* 3638 */ 0xFFFD, 0xFFFD, 0x475A, 0x4759, 0xFFFD, 0x544F, 0xFFFD, 0x5F5D, -/* 3640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x286B, 0x3323, -/* 3648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3952, 0x3953, 0xFFFD, 0x404B, -/* 3650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x475C, 0x475B, 0x475D, 0xFFFD, -/* 3658 */ 0x4E39, 0x4E3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F61, -/* 3660 */ 0x5F5E, 0x5F60, 0x5F5F, 0xFFFD, 0xFFFD, 0x635A, 0x6732, 0x6731, -/* 3668 */ 0x2524, 0xFFFD, 0xFFFD, 0x3324, 0xFFFD, 0x3954, 0xFFFD, 0xFFFD, -/* 3670 */ 0x404D, 0x404C, 0xFFFD, 0xFFFD, 0x475F, 0x4760, 0x475E, 0xFFFD, -/* 3678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5450, -/* 3680 */ 0x5A5F, 0x5A5D, 0x5A5E, 0xFFFD, 0x5F63, 0x5F62, 0xFFFD, 0x635D, -/* 3688 */ 0x635C, 0x635B, 0x6733, 0xFFFD, 0x7178, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3326, 0x3325, 0x3955, 0xFFFD, 0xFFFD, -/* 3698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36A0 */ 0x4050, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4052, 0xFFFD, 0xFFFD, -/* 36A8 */ 0xFFFD, 0x4051, 0x404E, 0xFFFD, 0xFFFD, 0xFFFD, 0x404F, 0x4761, -/* 36B0 */ 0xFFFD, 0xFFFD, 0x4E3C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36B8 */ 0x4E3B, 0xFFFD, 0x4E3D, 0xFFFD, 0x5453, 0x5455, 0xFFFD, 0xFFFD, -/* 36C0 */ 0x5456, 0xFFFD, 0x5452, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36C8 */ 0x5451, 0xFFFD, 0x5457, 0x5454, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36D0 */ 0xFFFD, 0x5A61, 0xFFFD, 0x5A63, 0x5A62, 0xFFFD, 0x5A64, 0xFFFD, -/* 36D8 */ 0x5A60, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36E0 */ 0xFFFD, 0x635E, 0xFFFD, 0x6361, 0xFFFD, 0x6360, 0xFFFD, 0x635F, -/* 36E8 */ 0xFFFD, 0x6734, 0x6735, 0xFFFD, 0x6736, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C41, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C42, -/* 36F8 */ 0x6E2B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F53, 0x4762, 0x4763, 0xFFFD, -/* 3700 */ 0xFFFD, 0x5A65, 0xFFFD, 0x5A66, 0x5F65, 0xFFFD, 0xFFFD, 0x2D53, -/* 3708 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3327, 0xFFFD, 0x3328, 0x3958, 0xFFFD, -/* 3710 */ 0x3957, 0xFFFD, 0x3956, 0xFFFD, 0xFFFD, 0x4054, 0xFFFD, 0xFFFD, -/* 3718 */ 0xFFFD, 0x4053, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4055, 0xFFFD, -/* 3720 */ 0xFFFD, 0x4765, 0x4768, 0x4766, 0x4767, 0x476B, 0x4764, 0x476C, -/* 3728 */ 0x4769, 0x476A, 0xFFFD, 0x4E3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3730 */ 0x545B, 0x5459, 0xFFFD, 0xFFFD, 0xFFFD, 0x5458, 0x545A, 0xFFFD, -/* 3738 */ 0xFFFD, 0xFFFD, 0x5A67, 0xFFFD, 0x5A68, 0xFFFD, 0xFFFD, 0x6738, -/* 3740 */ 0x673A, 0x6737, 0x6739, 0x6A24, 0x6C43, 0xFFFD, 0xFFFD, 0x715E, -/* 3748 */ 0xFFFD, 0xFFFD, 0x3329, 0x332B, 0x332A, 0xFFFD, 0x395B, 0xFFFD, -/* 3750 */ 0xFFFD, 0x3959, 0xFFFD, 0xFFFD, 0x395C, 0xFFFD, 0x395D, 0x395A, -/* 3758 */ 0xFFFD, 0xFFFD, 0x4061, 0xFFFD, 0x4059, 0x405F, 0xFFFD, 0xFFFD, -/* 3760 */ 0xFFFD, 0xFFFD, 0x4058, 0xFFFD, 0x405C, 0x4772, 0xFFFD, 0xFFFD, -/* 3768 */ 0x4057, 0xFFFD, 0x405D, 0x405A, 0x4060, 0x4056, 0x405E, 0xFFFD, -/* 3770 */ 0xFFFD, 0x405B, 0xFFFD, 0xFFFD, 0xFFFD, 0x476E, 0xFFFD, 0x4775, -/* 3778 */ 0x4774, 0xFFFD, 0xFFFD, 0xFFFD, 0x4776, 0xFFFD, 0x4773, 0xFFFD, -/* 3780 */ 0x4778, 0x476F, 0xFFFD, 0x4771, 0xFFFD, 0x476D, 0x4770, 0x4777, -/* 3788 */ 0xFFFD, 0x4779, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3790 */ 0xFFFD, 0xFFFD, 0x4E43, 0x4E49, 0x4E41, 0x4E4A, 0xFFFD, 0x4E40, -/* 3798 */ 0x4E45, 0x4E4B, 0x4E48, 0x4E47, 0x4E46, 0xFFFD, 0x4E3F, 0x4E44, -/* 37A0 */ 0xFFFD, 0xFFFD, 0x4E42, 0xFFFD, 0xFFFD, 0xFFFD, 0x5464, 0x5469, -/* 37A8 */ 0x546B, 0x5468, 0x5461, 0x5463, 0x546D, 0x546A, 0x5465, 0x546E, -/* 37B0 */ 0x5462, 0x546C, 0xFFFD, 0xFFFD, 0xFFFD, 0x545C, 0xFFFD, 0xFFFD, -/* 37B8 */ 0x545D, 0x545F, 0x545E, 0x5466, 0x5467, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5460, 0xFFFD, 0x5A72, 0xFFFD, 0xFFFD, -/* 37C8 */ 0x5A69, 0xFFFD, 0xFFFD, 0x5A6E, 0xFFFD, 0x5A6B, 0xFFFD, 0xFFFD, -/* 37D0 */ 0xFFFD, 0x5A6F, 0x5A70, 0x5A6A, 0x5A73, 0x5A6C, 0x5A71, 0xFFFD, -/* 37D8 */ 0xFFFD, 0xFFFD, 0x5A6D, 0xFFFD, 0x5F6B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37E0 */ 0xFFFD, 0x5F6A, 0x5F67, 0x5F66, 0xFFFD, 0x5F69, 0xFFFD, 0xFFFD, -/* 37E8 */ 0x5F68, 0x636F, 0xFFFD, 0x6366, 0x6365, 0xFFFD, 0xFFFD, 0x636B, -/* 37F0 */ 0x636A, 0x6362, 0x636D, 0x6367, 0xFFFD, 0x6364, 0x636C, 0x6363, -/* 37F8 */ 0xFFFD, 0xFFFD, 0x6368, 0xFFFD, 0x6369, 0xFFFD, 0x636E, 0x673E, -/* 3800 */ 0xFFFD, 0xFFFD, 0x673B, 0xFFFD, 0x673F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3808 */ 0x673D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x673C, 0xFFFD, 0xFFFD, -/* 3810 */ 0x6740, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3818 */ 0xFFFD, 0x6A27, 0xFFFD, 0x6A25, 0xFFFD, 0x6A26, 0xFFFD, 0xFFFD, -/* 3820 */ 0xFFFD, 0x6C45, 0xFFFD, 0x6C44, 0xFFFD, 0x6E30, 0xFFFD, 0x6E2F, -/* 3828 */ 0xFFFD, 0x6E2D, 0x6E2C, 0x6E31, 0x6E32, 0x6F54, 0xFFFD, 0x6E2E, -/* 3830 */ 0xFFFD, 0xFFFD, 0x7054, 0x7051, 0x7052, 0x7053, 0xFFFD, 0xFFFD, -/* 3838 */ 0x7140, 0x713F, 0x713E, 0x715F, 0xFFFD, 0x722E, 0x7179, 0x5A74, -/* 3840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6741, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x717A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x332C, 0xFFFD, 0x332D, 0xFFFD, 0xFFFD, -/* 3858 */ 0xFFFD, 0x3962, 0x395E, 0xFFFD, 0xFFFD, 0xFFFD, 0x3961, 0x3960, -/* 3860 */ 0x395F, 0xFFFD, 0x3963, 0x3964, 0xFFFD, 0xFFFD, 0xFFFD, 0x4068, -/* 3868 */ 0x4066, 0x406A, 0x406B, 0x4071, 0xFFFD, 0x406D, 0x406F, 0xFFFD, -/* 3870 */ 0x4067, 0x4062, 0xFFFD, 0x406E, 0xFFFD, 0xFFFD, 0x4070, 0x4069, -/* 3878 */ 0x406C, 0x4063, 0xFFFD, 0x4065, 0x4064, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3880 */ 0xFFFD, 0x477B, 0x477D, 0x477C, 0x4823, 0xFFFD, 0xFFFD, 0x477E, -/* 3888 */ 0x477A, 0x4821, 0x4822, 0xFFFD, 0xFFFD, 0x4824, 0xFFFD, 0x4E4F, -/* 3890 */ 0x4E4E, 0xFFFD, 0x4E4C, 0x4E4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3898 */ 0x5475, 0x5476, 0x5471, 0xFFFD, 0x5472, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38A0 */ 0xFFFD, 0xFFFD, 0x5473, 0xFFFD, 0xFFFD, 0x5474, 0x5470, 0xFFFD, -/* 38A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x546F, 0xFFFD, -/* 38B0 */ 0x5A76, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A78, 0xFFFD, 0x5A7B, 0x5A77, -/* 38B8 */ 0x5A75, 0x5A7A, 0xFFFD, 0x5A79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38C0 */ 0xFFFD, 0xFFFD, 0x5F6D, 0xFFFD, 0xFFFD, 0x5F6C, 0xFFFD, 0xFFFD, -/* 38C8 */ 0x6370, 0x6371, 0x6372, 0xFFFD, 0xFFFD, 0x6373, 0xFFFD, 0xFFFD, -/* 38D0 */ 0xFFFD, 0x6744, 0x6745, 0x6743, 0x6742, 0x6746, 0xFFFD, 0x6A2B, -/* 38D8 */ 0x6A29, 0x6A2A, 0x6A2C, 0x6A28, 0x6A2D, 0x6C47, 0xFFFD, 0x6C48, -/* 38E0 */ 0x6C46, 0xFFFD, 0x6E33, 0xFFFD, 0x6E34, 0x6F56, 0x6F55, 0x6747, -/* 38E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38F0 */ 0xFFFD, 0xFFFD, 0x2526, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2525, 0xFFFD, 0x286D, 0xFFFD, -/* 3900 */ 0x286F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x286C, 0x286E, 0xFFFD, -/* 3908 */ 0x2871, 0x2870, 0x2872, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2D57, 0x2D55, 0xFFFD, 0x2D54, 0xFFFD, -/* 3918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3920 */ 0xFFFD, 0x2D56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3928 */ 0x332F, 0x3335, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3332, 0x3334, -/* 3930 */ 0xFFFD, 0x332E, 0x3331, 0xFFFD, 0xFFFD, 0x3330, 0xFFFD, 0x3333, -/* 3938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3966, 0x3969, -/* 3940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3967, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3968, -/* 3950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x396A, 0xFFFD, 0xFFFD, 0x3965, -/* 3958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3960 */ 0x4072, 0xFFFD, 0x4074, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4073, -/* 3968 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3970 */ 0x4829, 0xFFFD, 0x4826, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4827, -/* 3978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4828, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4825, 0x547A, 0xFFFD, -/* 3988 */ 0xFFFD, 0xFFFD, 0x547B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5479, 0x5478, -/* 3990 */ 0xFFFD, 0xFFFD, 0x5477, 0xFFFD, 0xFFFD, 0x5A7C, 0xFFFD, 0xFFFD, -/* 3998 */ 0x5A7D, 0xFFFD, 0x5A7E, 0xFFFD, 0xFFFD, 0x5F6F, 0xFFFD, 0xFFFD, -/* 39A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F6E, 0x5B21, 0xFFFD, 0xFFFD, -/* 39A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A2E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2275, 0xFFFD, 0xFFFD, 0x2272, 0x2273, -/* 39B8 */ 0x2271, 0xFFFD, 0x2274, 0xFFFD, 0xFFFD, 0x252A, 0x2527, 0x252C, -/* 39C0 */ 0x2528, 0xFFFD, 0xFFFD, 0xFFFD, 0x2529, 0xFFFD, 0x252B, 0xFFFD, -/* 39C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2875, 0x2877, -/* 39D0 */ 0xFFFD, 0x2873, 0x2876, 0x2874, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D59, 0x2D5D, 0x2D5A, 0xFFFD, -/* 39E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D5C, 0xFFFD, 0x2D5E, 0x2D60, -/* 39E8 */ 0xFFFD, 0xFFFD, 0x2D5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3971, 0x2D5B, 0x3336, 0x333F, 0x333D, -/* 39F8 */ 0x3338, 0x3339, 0x333E, 0x3340, 0xFFFD, 0xFFFD, 0x333B, 0x3337, -/* 3A00 */ 0xFFFD, 0xFFFD, 0x333A, 0x3341, 0x333C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A08 */ 0x3974, 0x396C, 0x3972, 0x3973, 0xFFFD, 0xFFFD, 0x396B, 0x396D, -/* 3A10 */ 0x2D58, 0x396F, 0x3970, 0x396E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A18 */ 0x407B, 0x5B22, 0x407C, 0x4079, 0xFFFD, 0xFFFD, 0x4078, 0x407E, -/* 3A20 */ 0x407D, 0xFFFD, 0x4123, 0x4077, 0x4122, 0x4075, 0x4121, 0x407A, -/* 3A28 */ 0xFFFD, 0xFFFD, 0x4830, 0xFFFD, 0x482B, 0x4831, 0x482C, 0x482A, -/* 3A30 */ 0x482D, 0xFFFD, 0xFFFD, 0x482F, 0xFFFD, 0x482E, 0xFFFD, 0xFFFD, -/* 3A38 */ 0xFFFD, 0x4E56, 0x4E59, 0x4E51, 0x4E55, 0xFFFD, 0x4E54, 0x4E52, -/* 3A40 */ 0x4E58, 0x4E53, 0x4E50, 0x4E57, 0xFFFD, 0x5523, 0xFFFD, 0x6374, -/* 3A48 */ 0x547E, 0x5521, 0x547D, 0x4076, 0xFFFD, 0x5524, 0x547C, 0xFFFD, -/* 3A50 */ 0xFFFD, 0x5522, 0x5B23, 0xFFFD, 0x5B24, 0x5B25, 0xFFFD, 0x5F70, -/* 3A58 */ 0xFFFD, 0x6375, 0x6376, 0xFFFD, 0xFFFD, 0x6377, 0x6749, 0x6748, -/* 3A60 */ 0x6A30, 0xFFFD, 0x6A2F, 0x6C4A, 0x6C4B, 0x6C49, 0x6E35, 0xFFFD, -/* 3A68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3343, 0x3344, 0x3342, -/* 3A70 */ 0xFFFD, 0xFFFD, 0x3978, 0xFFFD, 0x3979, 0x3975, 0xFFFD, 0x3976, -/* 3A78 */ 0xFFFD, 0x3977, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4126, 0x4128, -/* 3A80 */ 0x4124, 0x4127, 0xFFFD, 0x4125, 0xFFFD, 0xFFFD, 0xFFFD, 0x4279, -/* 3A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4832, 0x4833, 0xFFFD, -/* 3A90 */ 0xFFFD, 0x4E5B, 0x4E5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A98 */ 0x4E5C, 0x4E5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x552B, -/* 3AA0 */ 0x5528, 0x5529, 0xFFFD, 0x552A, 0x5525, 0x5526, 0xFFFD, 0xFFFD, -/* 3AA8 */ 0xFFFD, 0x5527, 0xFFFD, 0xFFFD, 0x5B29, 0xFFFD, 0x5B2A, 0x5B27, -/* 3AB0 */ 0x5B28, 0xFFFD, 0x5B26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AB8 */ 0x5F74, 0x5F71, 0x5F73, 0xFFFD, 0x5F77, 0xFFFD, 0x5F75, 0x5F78, -/* 3AC0 */ 0x5F76, 0x5F72, 0xFFFD, 0xFFFD, 0x6379, 0xFFFD, 0x637A, 0x6378, -/* 3AC8 */ 0xFFFD, 0x637C, 0xFFFD, 0xFFFD, 0x674B, 0xFFFD, 0x637B, 0x674A, -/* 3AD0 */ 0xFFFD, 0x6A33, 0x6A34, 0xFFFD, 0x6A32, 0xFFFD, 0x6A31, 0xFFFD, -/* 3AD8 */ 0x6C4C, 0xFFFD, 0xFFFD, 0x6F57, 0x7056, 0x7055, 0xFFFD, 0xFFFD, -/* 3AE0 */ 0xFFFD, 0x7057, 0x7160, 0x2D62, 0x2D61, 0x3345, 0xFFFD, 0xFFFD, -/* 3AE8 */ 0xFFFD, 0xFFFD, 0x3347, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AF0 */ 0xFFFD, 0xFFFD, 0x3346, 0xFFFD, 0x3A21, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AF8 */ 0x3A26, 0xFFFD, 0x3A23, 0x3A24, 0x397A, 0xFFFD, 0x3A27, 0xFFFD, -/* 3B00 */ 0xFFFD, 0x397C, 0xFFFD, 0x397D, 0x397B, 0xFFFD, 0xFFFD, 0x3A25, -/* 3B08 */ 0x397E, 0x3A22, 0xFFFD, 0xFFFD, 0xFFFD, 0x4134, 0xFFFD, 0x4133, -/* 3B10 */ 0x4131, 0x4129, 0x4138, 0x412C, 0x4136, 0x413D, 0x4135, 0xFFFD, -/* 3B18 */ 0xFFFD, 0xFFFD, 0x412A, 0xFFFD, 0x4130, 0xFFFD, 0xFFFD, 0x412F, -/* 3B20 */ 0xFFFD, 0xFFFD, 0x4132, 0xFFFD, 0xFFFD, 0xFFFD, 0x413E, 0x413C, -/* 3B28 */ 0xFFFD, 0x413B, 0x412D, 0xFFFD, 0x4139, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x413A, 0x412B, 0x412E, 0x4137, -/* 3B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F22, 0x483D, 0xFFFD, -/* 3B40 */ 0x4836, 0x4849, 0x4852, 0x4839, 0xFFFD, 0xFFFD, 0x4846, 0xFFFD, -/* 3B48 */ 0xFFFD, 0xFFFD, 0x4837, 0x483F, 0xFFFD, 0x4834, 0xFFFD, 0x483E, -/* 3B50 */ 0xFFFD, 0x4850, 0xFFFD, 0x484E, 0x4842, 0x484C, 0xFFFD, 0x4835, -/* 3B58 */ 0x484F, 0x484A, 0xFFFD, 0x4851, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x483B, 0xFFFD, 0x4843, 0x4847, 0xFFFD, -/* 3B68 */ 0x484B, 0xFFFD, 0x483A, 0x4838, 0x4844, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B70 */ 0xFFFD, 0x4841, 0x4840, 0xFFFD, 0x4845, 0x4848, 0xFFFD, 0x484D, -/* 3B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E60, 0xFFFD, 0xFFFD, 0x4E6A, 0x4E62, -/* 3B80 */ 0xFFFD, 0xFFFD, 0x4E73, 0x4E7B, 0x4E6C, 0xFFFD, 0xFFFD, 0x4E70, -/* 3B88 */ 0x483C, 0xFFFD, 0xFFFD, 0x4E77, 0x4E7C, 0x4E74, 0xFFFD, 0x4E76, -/* 3B90 */ 0x4F21, 0x4E78, 0x4E66, 0x4E6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B98 */ 0xFFFD, 0x4E64, 0x4E71, 0xFFFD, 0x4E6B, 0xFFFD, 0x4E79, 0x4E68, -/* 3BA0 */ 0x4E61, 0xFFFD, 0x4E7E, 0xFFFD, 0xFFFD, 0x4E63, 0x4E75, 0x4E72, -/* 3BA8 */ 0x4E6D, 0x4E5F, 0x4E5E, 0x4E67, 0x4E7A, 0xFFFD, 0x4E7D, 0x4E65, -/* 3BB0 */ 0x4E69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BB8 */ 0xFFFD, 0x554D, 0x5549, 0x5531, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x552F, 0xFFFD, 0x553B, -/* 3BC8 */ 0x552D, 0x552E, 0xFFFD, 0x554C, 0xFFFD, 0x553E, 0x5543, 0x553D, -/* 3BD0 */ 0x5B3C, 0x5539, 0x5541, 0x553F, 0x5532, 0x552C, 0x5547, 0xFFFD, -/* 3BD8 */ 0x5548, 0xFFFD, 0x5542, 0xFFFD, 0x5537, 0x5535, 0x5530, 0xFFFD, -/* 3BE0 */ 0xFFFD, 0xFFFD, 0x5538, 0x5545, 0x5534, 0x5544, 0x554A, 0xFFFD, -/* 3BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5540, 0x5546, 0x553C, 0x5536, 0xFFFD, -/* 3BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E6E, 0x553A, 0xFFFD, 0x5533, 0xFFFD, -/* 3BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B41, 0xFFFD, 0x5B40, 0x5B3E, -/* 3C00 */ 0x5B50, 0xFFFD, 0xFFFD, 0x5B4D, 0x5B45, 0x5B4F, 0x5B37, 0x5B43, -/* 3C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B2F, 0xFFFD, 0x5B2D, 0x5B4E, 0xFFFD, -/* 3C10 */ 0x5B4C, 0x5B4B, 0x5B3B, 0x5B3A, 0x5B30, 0xFFFD, 0xFFFD, 0x5B36, -/* 3C18 */ 0x5B3F, 0x5B4A, 0xFFFD, 0x5B51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C20 */ 0x5B34, 0xFFFD, 0x5B3D, 0x5B2C, 0x5B2E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C28 */ 0x5B35, 0x5B44, 0x554B, 0xFFFD, 0x5B2B, 0xFFFD, 0x5B46, 0x5B49, -/* 3C30 */ 0xFFFD, 0xFFFD, 0x5B39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C38 */ 0xFFFD, 0x5B42, 0x5B48, 0xFFFD, 0xFFFD, 0x5B32, 0x5B47, 0xFFFD, -/* 3C40 */ 0xFFFD, 0x5B33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B38, 0x5F7E, 0xFFFD, 0x6025, 0xFFFD, -/* 3C50 */ 0xFFFD, 0x602B, 0xFFFD, 0x6039, 0x6031, 0x6026, 0x6027, 0x6030, -/* 3C58 */ 0xFFFD, 0xFFFD, 0x602F, 0x5F7D, 0x602E, 0x6022, 0x603A, 0xFFFD, -/* 3C60 */ 0xFFFD, 0x6023, 0xFFFD, 0x6036, 0xFFFD, 0x6028, 0x6035, 0xFFFD, -/* 3C68 */ 0x6037, 0x5F7C, 0xFFFD, 0xFFFD, 0x6038, 0xFFFD, 0xFFFD, 0x602C, -/* 3C70 */ 0xFFFD, 0xFFFD, 0x6029, 0xFFFD, 0xFFFD, 0xFFFD, 0x6032, 0xFFFD, -/* 3C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6024, 0x6033, 0xFFFD, 0x602D, 0x5B31, -/* 3C80 */ 0x6034, 0x6021, 0xFFFD, 0xFFFD, 0xFFFD, 0x642F, 0xFFFD, 0xFFFD, -/* 3C88 */ 0x5F7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x642C, 0x6425, 0xFFFD, -/* 3C90 */ 0xFFFD, 0x637E, 0x6430, 0x6427, 0x602A, 0xFFFD, 0x6432, 0x6421, -/* 3C98 */ 0xFFFD, 0xFFFD, 0x642B, 0xFFFD, 0xFFFD, 0xFFFD, 0x642D, 0xFFFD, -/* 3CA0 */ 0x6423, 0xFFFD, 0x6424, 0x6429, 0x642E, 0xFFFD, 0x5F79, 0xFFFD, -/* 3CA8 */ 0x6437, 0x6434, 0x6761, 0x642A, 0x6426, 0x6435, 0x6756, 0x6428, -/* 3CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F7B, 0xFFFD, 0x6431, 0x6433, -/* 3CB8 */ 0xFFFD, 0x6436, 0x637D, 0xFFFD, 0x6422, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x675F, 0xFFFD, 0x674F, -/* 3CC8 */ 0xFFFD, 0x675D, 0xFFFD, 0xFFFD, 0x674D, 0xFFFD, 0xFFFD, 0x6758, -/* 3CD0 */ 0xFFFD, 0x6754, 0xFFFD, 0x675E, 0x674E, 0x6751, 0xFFFD, 0x6760, -/* 3CD8 */ 0xFFFD, 0x6759, 0x675C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6755, 0x6750, -/* 3CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x674C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CE8 */ 0x675B, 0xFFFD, 0xFFFD, 0x6757, 0x6762, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CF0 */ 0xFFFD, 0x6753, 0xFFFD, 0x675A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CF8 */ 0xFFFD, 0xFFFD, 0x6A41, 0x6A50, 0x6A43, 0x6A4A, 0x6752, 0x6A48, -/* 3D00 */ 0x6A37, 0x6A4E, 0xFFFD, 0x6A3B, 0x6A4D, 0x6A42, 0xFFFD, 0xFFFD, -/* 3D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A52, 0x6A44, 0xFFFD, 0x6A49, 0x6A4C, -/* 3D10 */ 0x6A35, 0x6A4F, 0x6A40, 0x6A45, 0x6A39, 0x6A3D, 0x6A51, 0x6A47, -/* 3D18 */ 0x6A36, 0x6A3A, 0x6A3C, 0x6A46, 0xFFFD, 0xFFFD, 0x6A3F, 0xFFFD, -/* 3D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A38, 0xFFFD, 0xFFFD, -/* 3D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A3E, 0x6C50, 0x6C54, -/* 3D30 */ 0xFFFD, 0x6C56, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C52, 0x6C58, 0xFFFD, -/* 3D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C4F, 0x6C55, 0xFFFD, 0x6C53, 0xFFFD, -/* 3D40 */ 0x6C4E, 0x6A4B, 0x6C51, 0xFFFD, 0x6C4D, 0x6C57, 0xFFFD, 0xFFFD, -/* 3D48 */ 0xFFFD, 0xFFFD, 0x6E3C, 0x6E3F, 0x6E3B, 0x6E3D, 0x6E3E, 0x6E38, -/* 3D50 */ 0x6E39, 0x6E36, 0xFFFD, 0xFFFD, 0x6E3A, 0x6E37, 0xFFFD, 0xFFFD, -/* 3D58 */ 0xFFFD, 0xFFFD, 0x6F59, 0xFFFD, 0x6F5B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D60 */ 0xFFFD, 0xFFFD, 0x6F5A, 0x6F5C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F58, -/* 3D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7059, 0x705A, 0xFFFD, -/* 3D70 */ 0x7058, 0xFFFD, 0x7142, 0x7141, 0x7143, 0xFFFD, 0x7144, 0xFFFD, -/* 3D78 */ 0x7145, 0x7161, 0x7164, 0x7163, 0xFFFD, 0x7162, 0xFFFD, 0xFFFD, -/* 3D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7230, 0x7231, 0x722F, -/* 3D88 */ 0x7237, 0x3A28, 0x413F, 0x554E, 0x6763, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A29, 0xFFFD, 0x3A2A, -/* 3D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4141, 0x4140, 0xFFFD, 0xFFFD, 0x4142, -/* 3DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DA8 */ 0xFFFD, 0xFFFD, 0x4856, 0x4854, 0xFFFD, 0x4855, 0x4853, 0x5550, -/* 3DB0 */ 0x554F, 0xFFFD, 0x5551, 0xFFFD, 0x5552, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DB8 */ 0xFFFD, 0x5B59, 0x5B57, 0x6040, 0xFFFD, 0x5B55, 0x5B56, 0xFFFD, -/* 3DC0 */ 0x5B52, 0x5B5A, 0x5B54, 0x5B58, 0x603C, 0xFFFD, 0xFFFD, 0x603E, -/* 3DC8 */ 0xFFFD, 0x603F, 0xFFFD, 0x603B, 0xFFFD, 0x603D, 0xFFFD, 0xFFFD, -/* 3DD0 */ 0xFFFD, 0x5B53, 0xFFFD, 0xFFFD, 0xFFFD, 0x643A, 0x6438, 0x6439, -/* 3DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6764, 0x6765, -/* 3DE0 */ 0xFFFD, 0xFFFD, 0x6A53, 0x6A55, 0x6A54, 0xFFFD, 0xFFFD, 0x6C5B, -/* 3DE8 */ 0x6C5A, 0x6C59, 0x2169, 0xFFFD, 0x2278, 0xFFFD, 0x2276, 0x2279, -/* 3DF0 */ 0x2277, 0xFFFD, 0xFFFD, 0xFFFD, 0x252E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DF8 */ 0xFFFD, 0x2530, 0xFFFD, 0x252F, 0x252D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2878, 0x287B, 0xFFFD, -/* 3E08 */ 0x287A, 0x2879, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x287C, -/* 3E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2D67, 0xFFFD, -/* 3E18 */ 0xFFFD, 0xFFFD, 0x2D68, 0x2D64, 0xFFFD, 0x2D65, 0xFFFD, 0x2D66, -/* 3E20 */ 0x2D63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E28 */ 0x3348, 0xFFFD, 0xFFFD, 0x3349, 0x3A2D, 0xFFFD, 0x3A2C, 0xFFFD, -/* 3E30 */ 0x3A2F, 0xFFFD, 0x3A2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A2B, 0xFFFD, 0x4144, -/* 3E40 */ 0xFFFD, 0x4148, 0xFFFD, 0xFFFD, 0x4147, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E48 */ 0x4143, 0x4145, 0x4146, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E50 */ 0xFFFD, 0xFFFD, 0x4859, 0x4857, 0x4858, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E58 */ 0x485A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F23, -/* 3E60 */ 0xFFFD, 0xFFFD, 0x4F24, 0x5554, 0xFFFD, 0x5553, 0xFFFD, 0xFFFD, -/* 3E68 */ 0xFFFD, 0xFFFD, 0x5B5B, 0xFFFD, 0xFFFD, 0x6043, 0xFFFD, 0x6041, -/* 3E70 */ 0xFFFD, 0x6042, 0xFFFD, 0xFFFD, 0x643B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x334A, 0xFFFD, 0xFFFD, -/* 3E80 */ 0x3A30, 0xFFFD, 0xFFFD, 0x4149, 0x414B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E88 */ 0xFFFD, 0x414A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x485B, -/* 3E90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5555, 0x5B5C, 0xFFFD, 0xFFFD, -/* 3E98 */ 0x643C, 0x6440, 0xFFFD, 0x643D, 0xFFFD, 0xFFFD, 0x6441, 0xFFFD, -/* 3EA0 */ 0x643F, 0xFFFD, 0x6766, 0xFFFD, 0xFFFD, 0xFFFD, 0x705B, 0xFFFD, -/* 3EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EB0 */ 0xFFFD, 0x414D, 0x414C, 0xFFFD, 0xFFFD, 0xFFFD, 0x485F, 0xFFFD, -/* 3EB8 */ 0xFFFD, 0x485E, 0xFFFD, 0x485C, 0xFFFD, 0xFFFD, 0x485D, 0xFFFD, -/* 3EC0 */ 0x4F25, 0xFFFD, 0xFFFD, 0x5558, 0xFFFD, 0xFFFD, 0x5556, 0xFFFD, -/* 3EC8 */ 0xFFFD, 0x5557, 0xFFFD, 0xFFFD, 0x5B5D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3ED0 */ 0xFFFD, 0x5B5F, 0xFFFD, 0x5B5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3ED8 */ 0xFFFD, 0x6046, 0x6048, 0xFFFD, 0xFFFD, 0xFFFD, 0x6047, 0xFFFD, -/* 3EE0 */ 0x6045, 0x6044, 0xFFFD, 0x6443, 0x6442, 0xFFFD, 0x6444, 0x676B, -/* 3EE8 */ 0xFFFD, 0x676A, 0x6767, 0xFFFD, 0x6768, 0x6769, 0xFFFD, 0x6A56, -/* 3EF0 */ 0x6A57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C5C, 0xFFFD, -/* 3EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F00 */ 0x6E40, 0xFFFD, 0xFFFD, 0xFFFD, 0x705D, 0xFFFD, 0xFFFD, 0x705C, -/* 3F08 */ 0x705E, 0xFFFD, 0x7146, 0xFFFD, 0x717B, 0x4F26, 0xFFFD, 0x5559, -/* 3F10 */ 0x3A31, 0xFFFD, 0x414E, 0xFFFD, 0x4150, 0xFFFD, 0x414F, 0xFFFD, -/* 3F18 */ 0x4863, 0x4860, 0xFFFD, 0xFFFD, 0xFFFD, 0x4861, 0x4862, 0xFFFD, -/* 3F20 */ 0x4F28, 0x4F2D, 0xFFFD, 0x4F27, 0x4F29, 0x4F30, 0x4F2B, 0x4F2F, -/* 3F28 */ 0x4F2C, 0x4F2A, 0x4F2E, 0xFFFD, 0xFFFD, 0xFFFD, 0x555C, 0xFFFD, -/* 3F30 */ 0x555A, 0xFFFD, 0xFFFD, 0xFFFD, 0x555B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F38 */ 0xFFFD, 0xFFFD, 0x5B62, 0xFFFD, 0xFFFD, 0x5B61, 0xFFFD, 0x5B60, -/* 3F40 */ 0x6049, 0xFFFD, 0x604B, 0x604D, 0x604C, 0xFFFD, 0xFFFD, 0x604A, -/* 3F48 */ 0x644B, 0xFFFD, 0x6449, 0x644C, 0xFFFD, 0xFFFD, 0x6447, 0xFFFD, -/* 3F50 */ 0x644A, 0x6448, 0x6445, 0xFFFD, 0x6446, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F58 */ 0xFFFD, 0x676C, 0xFFFD, 0xFFFD, 0x676E, 0x676D, 0xFFFD, 0x6A58, -/* 3F60 */ 0xFFFD, 0x6A59, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C5E, 0xFFFD, 0xFFFD, -/* 3F68 */ 0xFFFD, 0xFFFD, 0x6F5D, 0x6F5E, 0xFFFD, 0x705F, 0xFFFD, 0xFFFD, -/* 3F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F32, 0x4F31, 0x555E, 0x555D, 0xFFFD, -/* 3F78 */ 0xFFFD, 0xFFFD, 0x604F, 0x604E, 0x644F, 0x644D, 0x6450, 0x644E, -/* 3F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x676F, 0x6770, 0x6771, 0xFFFD, 0x6C5F, -/* 3F88 */ 0xFFFD, 0x6E41, 0xFFFD, 0x7060, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B63, 0x6050, -/* 3F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B64, 0xFFFD, -/* 3FA0 */ 0x6451, 0xFFFD, 0xFFFD, 0x6A5A, 0x6A5B, 0xFFFD, 0x6F5F, 0xFFFD, -/* 3FA8 */ 0xFFFD, 0xFFFD, 0x3A32, 0xFFFD, 0xFFFD, 0x4151, 0xFFFD, 0xFFFD, -/* 3FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4865, 0x4866, 0x4864, 0xFFFD, 0xFFFD, -/* 3FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F33, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FC0 */ 0xFFFD, 0x5565, 0xFFFD, 0x5560, 0x555F, 0xFFFD, 0x5564, 0xFFFD, -/* 3FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5561, 0x5566, 0x5563, 0x5562, -/* 3FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B66, 0xFFFD, 0xFFFD, -/* 3FD8 */ 0x5B67, 0xFFFD, 0xFFFD, 0x5B65, 0x6051, 0xFFFD, 0x6056, 0x6052, -/* 3FE0 */ 0x6055, 0xFFFD, 0xFFFD, 0x5E41, 0x6054, 0x6053, 0xFFFD, 0xFFFD, -/* 3FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6452, 0x6453, 0x6454, 0xFFFD, 0xFFFD, -/* 3FF0 */ 0xFFFD, 0xFFFD, 0x6775, 0xFFFD, 0x6773, 0xFFFD, 0xFFFD, 0x6772, -/* 3FF8 */ 0x6774, 0xFFFD, 0x6A5F, 0x6A5C, 0xFFFD, 0x6A5D, 0x6A5E, 0x6C60, -/* 4000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E43, 0x6E42, 0xFFFD, 0xFFFD, -/* 4008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7147, 0x717C, 0x717D, -/* 4010 */ 0x4152, 0xFFFD, 0xFFFD, 0x4867, 0x4F34, 0x4F35, 0xFFFD, 0xFFFD, -/* 4018 */ 0xFFFD, 0x5567, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6455, -/* 4020 */ 0xFFFD, 0xFFFD, 0x6778, 0xFFFD, 0x6777, 0x6779, 0x6776, 0x6C63, -/* 4028 */ 0x6A60, 0x6A61, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C62, 0xFFFD, 0xFFFD, -/* 4030 */ 0x6C61, 0xFFFD, 0x6E44, 0x717E, 0x334B, 0xFFFD, 0x3A33, 0xFFFD, -/* 4038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4153, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4868, -/* 4048 */ 0xFFFD, 0xFFFD, 0x4869, 0x5569, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4050 */ 0xFFFD, 0x4F37, 0xFFFD, 0x4F36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4058 */ 0x4F38, 0x5568, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4060 */ 0xFFFD, 0xFFFD, 0x556A, 0xFFFD, 0xFFFD, 0x556B, 0x556E, 0x556C, -/* 4068 */ 0x556D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4070 */ 0x5B69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B68, 0x6057, 0xFFFD, -/* 4078 */ 0x5B6A, 0xFFFD, 0x5B6B, 0x605A, 0x6058, 0x6059, 0x605E, 0xFFFD, -/* 4080 */ 0x605D, 0x6060, 0x605F, 0x605C, 0x605B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6458, 0xFFFD, 0x6457, 0xFFFD, 0xFFFD, -/* 4090 */ 0xFFFD, 0xFFFD, 0x6456, 0xFFFD, 0x677C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4098 */ 0x677B, 0x677A, 0xFFFD, 0xFFFD, 0x6A66, 0x6A65, 0xFFFD, 0x6A63, -/* 40A0 */ 0xFFFD, 0x6A62, 0xFFFD, 0xFFFD, 0x6A67, 0x6E45, 0xFFFD, 0x6C65, -/* 40A8 */ 0xFFFD, 0x6C64, 0x6A64, 0xFFFD, 0x6E46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40B0 */ 0x7148, 0xFFFD, 0x7221, 0x3A34, 0x6061, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40B8 */ 0x4F3A, 0x4F39, 0x5B6C, 0xFFFD, 0xFFFD, 0x6063, 0xFFFD, 0x6062, -/* 40C0 */ 0xFFFD, 0xFFFD, 0x677D, 0x677E, 0xFFFD, 0xFFFD, 0xFFFD, 0x7222, -/* 40C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x486A, 0x486C, 0xFFFD, 0x486B, 0xFFFD, -/* 40D0 */ 0xFFFD, 0x486D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F3C, 0x4F3E, 0x4F3D, -/* 40D8 */ 0xFFFD, 0x4F40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F3F, 0x4F3B, -/* 40E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F41, 0xFFFD, 0x5575, 0xFFFD, 0x5578, -/* 40E8 */ 0x557A, 0x5570, 0x5574, 0x5571, 0xFFFD, 0xFFFD, 0xFFFD, 0x5572, -/* 40F0 */ 0x5573, 0xFFFD, 0x5576, 0x5579, 0x5577, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40F8 */ 0x556F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B72, -/* 4100 */ 0x5B70, 0x5B6F, 0xFFFD, 0x5B75, 0xFFFD, 0x5B74, 0x5B73, 0xFFFD, -/* 4108 */ 0x5B6E, 0xFFFD, 0x5B6D, 0xFFFD, 0x5B71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4110 */ 0x6066, 0xFFFD, 0x606A, 0x6067, 0x6069, 0x6068, 0x6065, 0x606B, -/* 4118 */ 0x606E, 0x606C, 0x606D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6064, 0x606F, -/* 4120 */ 0x645D, 0x6460, 0x6462, 0x6461, 0xFFFD, 0x645B, 0x645F, 0x645A, -/* 4128 */ 0xFFFD, 0x645C, 0xFFFD, 0x6459, 0xFFFD, 0x645E, 0xFFFD, 0xFFFD, -/* 4130 */ 0x682D, 0x6822, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6821, 0x6826, -/* 4138 */ 0x682C, 0x6824, 0x682B, 0xFFFD, 0x6828, 0xFFFD, 0x6827, 0x682A, -/* 4140 */ 0x6825, 0x6823, 0xFFFD, 0x6829, 0xFFFD, 0x6A6E, 0x6A6C, 0xFFFD, -/* 4148 */ 0x6A6B, 0x6A71, 0x6A6F, 0xFFFD, 0xFFFD, 0x6A6A, 0x6A68, 0xFFFD, -/* 4150 */ 0x6A69, 0xFFFD, 0x6A6D, 0xFFFD, 0x6A70, 0x6C66, 0x6C6C, 0xFFFD, -/* 4158 */ 0xFFFD, 0x6C67, 0xFFFD, 0x6C6D, 0xFFFD, 0x6C6B, 0x6C6A, 0xFFFD, -/* 4160 */ 0x6C69, 0xFFFD, 0x6C68, 0xFFFD, 0x6E4C, 0x6E4E, 0x6E4D, 0xFFFD, -/* 4168 */ 0x6E4A, 0xFFFD, 0x6E47, 0x6E4B, 0x6E50, 0xFFFD, 0x6E4F, 0x6E48, -/* 4170 */ 0x6E49, 0xFFFD, 0x6F60, 0xFFFD, 0xFFFD, 0x6F61, 0xFFFD, 0xFFFD, -/* 4178 */ 0xFFFD, 0xFFFD, 0x7061, 0xFFFD, 0x7165, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4180 */ 0x7223, 0xFFFD, 0x7224, 0x7225, 0x7233, 0x7232, 0xFFFD, 0x723B, -/* 4188 */ 0x486F, 0xFFFD, 0x486E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F42, 0xFFFD, -/* 4190 */ 0x557B, 0x5B78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B76, 0xFFFD, -/* 4198 */ 0x5B79, 0xFFFD, 0xFFFD, 0x6070, 0x5B77, 0x6463, 0xFFFD, 0x682E, -/* 41A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A74, 0x6A72, 0xFFFD, 0xFFFD, 0x6A73, -/* 41A8 */ 0xFFFD, 0xFFFD, 0x6C6E, 0xFFFD, 0xFFFD, 0x6E51, 0xFFFD, 0xFFFD, -/* 41B0 */ 0xFFFD, 0xFFFD, 0x7062, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41B8 */ 0xFFFD, 0x6464, 0xFFFD, 0xFFFD, 0x334C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41C0 */ 0x4F43, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F44, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41C8 */ 0x557D, 0x557C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5622, 0x5621, -/* 41D0 */ 0x557E, 0xFFFD, 0xFFFD, 0x5B7A, 0x5B7D, 0xFFFD, 0x5B7C, 0x5B7B, -/* 41D8 */ 0xFFFD, 0x6074, 0x6072, 0x6071, 0xFFFD, 0xFFFD, 0x6073, 0xFFFD, -/* 41E0 */ 0xFFFD, 0x6466, 0x6467, 0xFFFD, 0xFFFD, 0x6465, 0xFFFD, 0x6830, -/* 41E8 */ 0x682F, 0x6832, 0xFFFD, 0x6831, 0xFFFD, 0x6A75, 0x6A77, 0x6A76, -/* 41F0 */ 0xFFFD, 0xFFFD, 0x6C6F, 0x6C72, 0x6C70, 0x6C71, 0x6E52, 0xFFFD, -/* 41F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F62, 0x6F63, 0x6F64, 0xFFFD, 0xFFFD, -/* 4200 */ 0xFFFD, 0x7226, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6468, 0xFFFD, -/* 4208 */ 0x6E53, 0xFFFD, 0xFFFD, 0x7166, 0x334D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4210 */ 0x5B7E, 0xFFFD, 0x6469, 0xFFFD, 0x6833, 0xFFFD, 0xFFFD, 0x6C73, -/* 4218 */ 0x6E54, 0xFFFD, 0xFFFD, 0x4F45, 0x4F46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4220 */ 0x5624, 0xFFFD, 0xFFFD, 0x5623, 0xFFFD, 0x6075, 0xFFFD, 0x646A, -/* 4228 */ 0x646C, 0x646B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C74, -/* 4230 */ 0xFFFD, 0xFFFD, 0x6E56, 0x6E55, 0xFFFD, 0xFFFD, 0x7063, 0xFFFD, -/* 4238 */ 0x4870, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F49, 0x4F47, 0x4F48, 0xFFFD, -/* 4240 */ 0xFFFD, 0x562D, 0xFFFD, 0x5628, 0x5625, 0x562C, 0xFFFD, 0xFFFD, -/* 4248 */ 0xFFFD, 0x562E, 0xFFFD, 0xFFFD, 0xFFFD, 0x562B, 0x5627, 0xFFFD, -/* 4250 */ 0xFFFD, 0x5626, 0x562A, 0x5629, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C2B, -/* 4258 */ 0x5C26, 0x5C24, 0x5C2D, 0x5C25, 0xFFFD, 0x5C21, 0xFFFD, 0x5C27, -/* 4260 */ 0xFFFD, 0xFFFD, 0x5C22, 0x607E, 0x5C23, 0x5C2E, 0xFFFD, 0xFFFD, -/* 4268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C2A, 0xFFFD, 0x5C29, -/* 4270 */ 0x5C28, 0xFFFD, 0x5C2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6076, -/* 4278 */ 0x6079, 0xFFFD, 0xFFFD, 0x6078, 0xFFFD, 0x6122, 0x607B, 0x6121, -/* 4280 */ 0xFFFD, 0x607D, 0x607C, 0x607A, 0xFFFD, 0x6077, 0xFFFD, 0xFFFD, -/* 4288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6123, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4290 */ 0xFFFD, 0xFFFD, 0x6472, 0x6475, 0xFFFD, 0x6473, 0x6477, 0xFFFD, -/* 4298 */ 0xFFFD, 0xFFFD, 0x6478, 0xFFFD, 0x6470, 0xFFFD, 0x6471, 0xFFFD, -/* 42A0 */ 0x646F, 0x6476, 0xFFFD, 0x646E, 0x646D, 0x6474, 0x683C, 0x6842, -/* 42A8 */ 0xFFFD, 0x683D, 0xFFFD, 0x6840, 0x6844, 0xFFFD, 0x683F, 0xFFFD, -/* 42B0 */ 0x6837, 0xFFFD, 0x6836, 0x6843, 0x683A, 0xFFFD, 0x6838, 0x6841, -/* 42B8 */ 0x6839, 0xFFFD, 0xFFFD, 0xFFFD, 0x6834, 0x6835, 0x683E, 0xFFFD, -/* 42C0 */ 0xFFFD, 0xFFFD, 0x683B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42C8 */ 0xFFFD, 0x6A7A, 0x6A7D, 0x6A7B, 0x6B23, 0x6B21, 0x6A79, 0x6B26, -/* 42D0 */ 0xFFFD, 0x6A78, 0xFFFD, 0xFFFD, 0x6B22, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42D8 */ 0x6A7C, 0xFFFD, 0x6B25, 0xFFFD, 0xFFFD, 0x6B24, 0xFFFD, 0xFFFD, -/* 42E0 */ 0xFFFD, 0xFFFD, 0x6C77, 0x6C76, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C7D, -/* 42E8 */ 0xFFFD, 0x6C79, 0x6C7C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C7A, 0x6C7B, -/* 42F0 */ 0xFFFD, 0x6C75, 0x6C78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42F8 */ 0x6E61, 0x6E5C, 0x6E60, 0xFFFD, 0x6E63, 0x6E5F, 0xFFFD, 0x6E5B, -/* 4300 */ 0xFFFD, 0xFFFD, 0x6E5E, 0x6E62, 0xFFFD, 0x6E59, 0x6A7E, 0x6E5D, -/* 4308 */ 0xFFFD, 0xFFFD, 0x6E5A, 0xFFFD, 0x6E57, 0xFFFD, 0x6E58, 0xFFFD, -/* 4310 */ 0x6F68, 0x6F6A, 0x6F6D, 0x6F69, 0x6F6E, 0xFFFD, 0x6F67, 0xFFFD, -/* 4318 */ 0x6F65, 0xFFFD, 0xFFFD, 0x6F6B, 0xFFFD, 0xFFFD, 0x6F66, 0x6F6C, -/* 4320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7068, 0xFFFD, 0x7069, 0xFFFD, -/* 4328 */ 0x7067, 0x7064, 0xFFFD, 0xFFFD, 0x7066, 0x7065, 0x7149, 0xFFFD, -/* 4330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x714B, 0x714A, 0xFFFD, 0xFFFD, 0x7169, -/* 4338 */ 0xFFFD, 0x7168, 0x7167, 0x716A, 0xFFFD, 0xFFFD, 0xFFFD, 0x7238, -/* 4340 */ 0x723C, 0x4154, 0x4873, 0xFFFD, 0xFFFD, 0x4871, 0xFFFD, 0xFFFD, -/* 4348 */ 0x4872, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F4A, 0x4F4B, 0xFFFD, 0xFFFD, -/* 4350 */ 0x4F4C, 0xFFFD, 0x5633, 0xFFFD, 0x5636, 0x5630, 0x5637, 0x562F, -/* 4358 */ 0x5631, 0xFFFD, 0x5632, 0x5635, 0xFFFD, 0xFFFD, 0xFFFD, 0x563A, -/* 4360 */ 0x5639, 0xFFFD, 0x5634, 0x5638, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C38, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C33, -/* 4370 */ 0xFFFD, 0xFFFD, 0x5C30, 0x5C36, 0x5C39, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4378 */ 0x5C35, 0x5C32, 0x5C3A, 0x5C31, 0xFFFD, 0x5C37, 0xFFFD, 0xFFFD, -/* 4380 */ 0x5C2F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C34, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4388 */ 0x6135, 0x6128, 0x6129, 0x612C, 0x612A, 0xFFFD, 0x6124, 0xFFFD, -/* 4390 */ 0xFFFD, 0x6127, 0x6131, 0x612B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4398 */ 0x6133, 0x6130, 0xFFFD, 0x6132, 0x6125, 0x612E, 0x612F, 0xFFFD, -/* 43A0 */ 0x612D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x647C, 0x647E, 0x6523, -/* 43A8 */ 0xFFFD, 0xFFFD, 0x647B, 0xFFFD, 0xFFFD, 0x6525, 0x647A, 0x6526, -/* 43B0 */ 0xFFFD, 0x6522, 0x6524, 0x6528, 0x6521, 0x6529, 0x647D, 0x6479, -/* 43B8 */ 0xFFFD, 0xFFFD, 0x6527, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43C0 */ 0xFFFD, 0xFFFD, 0x6126, 0x685E, 0x6855, 0xFFFD, 0x6851, 0xFFFD, -/* 43C8 */ 0xFFFD, 0xFFFD, 0x685A, 0x6854, 0x684A, 0xFFFD, 0x6857, 0x6852, -/* 43D0 */ 0x6853, 0xFFFD, 0x6845, 0x684C, 0x685B, 0xFFFD, 0x6858, 0xFFFD, -/* 43D8 */ 0x6850, 0xFFFD, 0x685C, 0x684B, 0x6846, 0x6859, 0xFFFD, 0x6848, -/* 43E0 */ 0x6856, 0x684D, 0x685D, 0x6849, 0xFFFD, 0x6847, 0x684E, 0x684F, -/* 43E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B2D, 0xFFFD, 0x6B2B, 0xFFFD, 0x6B30, -/* 43F0 */ 0xFFFD, 0x6B3C, 0x6B33, 0x6B2C, 0x6B28, 0x6B35, 0x6B2E, 0x6B31, -/* 43F8 */ 0x6B2A, 0x6B38, 0x6B27, 0x6B2F, 0x6B34, 0x6B36, 0x6B39, 0x6B29, -/* 4400 */ 0xFFFD, 0x6B3D, 0x6B3E, 0x6B37, 0x6B3B, 0x6B32, 0xFFFD, 0x6D2F, -/* 4408 */ 0x6D32, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D31, 0x6D36, 0x6D34, 0xFFFD, -/* 4410 */ 0x6D2B, 0x6D21, 0x6C7E, 0xFFFD, 0x6D2D, 0x6D2E, 0x6D2A, 0x6D22, -/* 4418 */ 0xFFFD, 0x6D27, 0x6B3A, 0xFFFD, 0x6D23, 0xFFFD, 0x6D29, 0xFFFD, -/* 4420 */ 0x6D28, 0xFFFD, 0x6D24, 0x6D30, 0xFFFD, 0x6D25, 0x6E68, 0x6D33, -/* 4428 */ 0x6D35, 0x6D2C, 0x6D26, 0x6E69, 0x6E6B, 0x6E65, 0xFFFD, 0xFFFD, -/* 4430 */ 0x6E72, 0x6E70, 0xFFFD, 0x6E6F, 0x6E6E, 0x6E67, 0x6E64, 0x6E6A, -/* 4438 */ 0x6E73, 0x6E66, 0x6E6C, 0xFFFD, 0x6F77, 0x6F7C, 0x6F72, 0x6F75, -/* 4440 */ 0xFFFD, 0x6F79, 0xFFFD, 0x7022, 0x6E6D, 0xFFFD, 0x6F73, 0x6F7D, -/* 4448 */ 0x7023, 0x6F78, 0x6F71, 0x6F7B, 0xFFFD, 0x6F7A, 0x7021, 0x6F7E, -/* 4450 */ 0x6E71, 0x6F76, 0x6F70, 0x6F74, 0xFFFD, 0xFFFD, 0x6F6F, 0xFFFD, -/* 4458 */ 0x7074, 0x706B, 0x7073, 0x7070, 0x7071, 0x706A, 0x706D, 0x7075, -/* 4460 */ 0x706F, 0x706E, 0x706C, 0xFFFD, 0x7072, 0xFFFD, 0x714C, 0xFFFD, -/* 4468 */ 0x714D, 0xFFFD, 0x714F, 0x714E, 0x7151, 0x7150, 0x716C, 0x716B, -/* 4470 */ 0x7227, 0xFFFD, 0x7228, 0xFFFD, 0x7234, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4478 */ 0x723D, 0x6D37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4874, -/* 4480 */ 0xFFFD, 0xFFFD, 0x563B, 0xFFFD, 0xFFFD, 0x5C3C, 0x5C3D, 0x5C3B, -/* 4488 */ 0x6137, 0x6136, 0xFFFD, 0x652B, 0x6138, 0x652A, 0xFFFD, 0xFFFD, -/* 4490 */ 0x6860, 0xFFFD, 0xFFFD, 0x685F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4498 */ 0x6B3F, 0x6B41, 0x6B40, 0x6D38, 0xFFFD, 0xFFFD, 0xFFFD, 0x7076, -/* 44A0 */ 0x7152, 0xFFFD, 0xFFFD, 0x7241, 0xFFFD, 0xFFFD, 0x4F4D, 0xFFFD, -/* 44A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C3F, 0x5C3E, 0xFFFD, 0x6139, -/* 44B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E74, 0x7239, 0xFFFD, -/* 44B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6861, -/* 44C0 */ 0xFFFD, 0x7024, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x613A, -/* 44C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7025, -/* 44D0 */ 0xFFFD, 0xFFFD, 0x563C, 0xFFFD, 0x5C40, 0x5C41, 0xFFFD, 0xFFFD, -/* 44D8 */ 0xFFFD, 0x613B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x652C, 0xFFFD, -/* 44E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B43, 0x6B42, 0x6B45, 0x6B44, 0xFFFD, -/* 44E8 */ 0xFFFD, 0xFFFD, 0x6D39, 0xFFFD, 0x6D3B, 0x6D3A, 0xFFFD, 0x6E75, -/* 44F0 */ 0xFFFD, 0x7026, 0x7027, 0xFFFD, 0x7153, 0x716D, 0xFFFD, 0xFFFD, -/* 44F8 */ 0x4155, 0x5C42, 0x613C, 0x6862, 0x4875, 0xFFFD, 0x613D, 0x652E, -/* 4500 */ 0x652D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7028, 0xFFFD, 0xFFFD, -/* 4508 */ 0x7154, 0x716E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x563D, 0x563E, -/* 4510 */ 0xFFFD, 0x5C43, 0xFFFD, 0xFFFD, 0xFFFD, 0x652F, 0xFFFD, 0x6D3D, -/* 4518 */ 0xFFFD, 0x6D3E, 0x6D3C, 0x7029, 0xFFFD, 0x7077, 0xFFFD, 0xFFFD, -/* 4520 */ 0xFFFD, 0x6140, 0x613F, 0x613E, 0x6530, 0xFFFD, 0xFFFD, 0x6534, -/* 4528 */ 0x6533, 0x6532, 0x6531, 0xFFFD, 0x6863, 0x6B47, 0xFFFD, 0x6B46, -/* 4530 */ 0x6D3F, 0x6E78, 0x6E77, 0xFFFD, 0x6E76, 0x702C, 0x702B, 0x702A, -/* 4538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C44, 0xFFFD, 0xFFFD, 0x6864, -/* 4540 */ 0x6865, 0x6E79, 0x702D, 0xFFFD, 0xFFFD, 0x7078, 0x7155, 0x7229, -/* 4548 */ 0x7243, 0xFFFD, 0xFFFD, 0x6535, 0x6866, 0x6D40, 0x702E, 0xFFFD, -/* 4550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6141, 0x6536, 0x6867, 0x6868, 0x6869, -/* 4558 */ 0x6B4C, 0xFFFD, 0x6B48, 0xFFFD, 0x6B4B, 0x6B4A, 0xFFFD, 0x6B49, -/* 4560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D42, 0x6D41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4568 */ 0xFFFD, 0xFFFD, 0x6E7A, 0xFFFD, 0xFFFD, 0x7031, 0x7032, 0x7030, -/* 4570 */ 0x702F, 0xFFFD, 0xFFFD, 0x7079, 0x707A, 0x707B, 0xFFFD, 0x7156, -/* 4578 */ 0x7159, 0x7158, 0x7157, 0xFFFD, 0xFFFD, 0x7242, 0x6B4D, 0x6D43, -/* 4580 */ 0xFFFD, 0xFFFD, 0x6E7B, 0xFFFD, 0xFFFD, 0x7244, 0xFFFD, 0xFFFD, -/* 4588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6142, 0xFFFD, 0x6E7C, -/* 4590 */ 0xFFFD, 0x716F, -/* End of table Total Length = 0x4747 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp037.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp037.uf deleted file mode 100644 index 9ec2c3affe6..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp037.uf +++ /dev/null @@ -1,204 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 001F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0030 - srcEnd = 0039 - destBegin = 00F0 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0041 - srcEnd = 0049 - destBegin = 00C1 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 004A - srcEnd = 0052 - destBegin = 00D1 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0053 - srcEnd = 005A - destBegin = 00E2 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0061 - srcEnd = 0069 - destBegin = 0081 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 006A - srcEnd = 0072 - destBegin = 0091 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0073 - srcEnd = 007A - destBegin = 00A2 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = F840 - srcEnd = F85F - destBegin = 0020 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 0020 - srcEnd = 0040 - mappingOffset = 0000 - Mapping = - 0040 005A 007F 007B 005B 006C 0050 007D - 004D 005D 005C 004E 006B 0060 004B 0061 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 007A 005E 004C 007E 006E 006F - 007C -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 005B - srcEnd = 0060 - mappingOffset = 0021 - Mapping = - 00BA 00E0 00BB 00B0 006D 0079 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 007B - srcEnd = 007E - mappingOffset = 0027 - Mapping = - 00C0 004F 00D0 00A1 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 002B - Mapping = - 0041 00AA 004A 00B1 009F 00B2 006A 00B5 - 00BD 00B4 009A 008A 005F 00CA 00AF 00BC - 0090 008F 00EA 00FA 00BE 00A0 00B6 00B3 - 009D 00DA 009B 008B 00B7 00B8 00B9 00AB - 0064 0065 0062 0066 0063 0067 009E 0068 - 0074 0071 0072 0073 0078 0075 0076 0077 - 00AC 0069 00ED 00EE 00EB 00EF 00EC 00BF - 0080 00FD 00FE 00FB 00FC 00AD 00AE 0059 - 0044 0045 0042 0046 0043 0047 009C 0048 - 0054 0051 0052 0053 0058 0055 0056 0057 - 008C 0049 00CD 00CE 00CB 00CF 00CC 00E1 - 0070 00DD 00DE 00DB 00DC 008D 008E 00DF -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = F860 - destBegin = 00FF -End of Item 000D - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000E, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0032, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0009 */ -/* Total of Format 1 : 0x0004 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x1110, 0x0021, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x001F, 0x0000, -/* 0001 */ 0x0030, 0x0039, 0x00F0, -/* 0002 */ 0x0041, 0x0049, 0x00C1, -/* 0003 */ 0x004A, 0x0052, 0x00D1, -/* 0004 */ 0x0053, 0x005A, 0x00E2, -/* 0005 */ 0x0061, 0x0069, 0x0081, -/* 0006 */ 0x006A, 0x0072, 0x0091, -/* 0007 */ 0x0073, 0x007A, 0x00A2, -/* 0008 */ 0xF840, 0xF85F, 0x0020, -/* 0009 */ 0x0020, 0x0040, 0x0000, -/* 000A */ 0x005B, 0x0060, 0x0021, -/* 000B */ 0x007B, 0x007E, 0x0027, -/* 000C */ 0x00A0, 0x00FF, 0x002B, -/* 000D */ 0xF860, 0x0000, 0x00FF, -/*-------------------------------------------------------*/ -/* Offset=0x0032 Start of MappingTable */ - -/* 0000 */ 0x0040, 0x005A, 0x007F, 0x007B, 0x005B, 0x006C, 0x0050, 0x007D, -/* 0008 */ 0x004D, 0x005D, 0x005C, 0x004E, 0x006B, 0x0060, 0x004B, 0x0061, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0x007A, 0x005E, 0x004C, 0x007E, 0x006E, 0x006F, -/* 0020 */ 0x007C, 0x00BA, 0x00E0, 0x00BB, 0x00B0, 0x006D, 0x0079, 0x00C0, -/* 0028 */ 0x004F, 0x00D0, 0x00A1, 0x0041, 0x00AA, 0x004A, 0x00B1, 0x009F, -/* 0030 */ 0x00B2, 0x006A, 0x00B5, 0x00BD, 0x00B4, 0x009A, 0x008A, 0x005F, -/* 0038 */ 0x00CA, 0x00AF, 0x00BC, 0x0090, 0x008F, 0x00EA, 0x00FA, 0x00BE, -/* 0040 */ 0x00A0, 0x00B6, 0x00B3, 0x009D, 0x00DA, 0x009B, 0x008B, 0x00B7, -/* 0048 */ 0x00B8, 0x00B9, 0x00AB, 0x0064, 0x0065, 0x0062, 0x0066, 0x0063, -/* 0050 */ 0x0067, 0x009E, 0x0068, 0x0074, 0x0071, 0x0072, 0x0073, 0x0078, -/* 0058 */ 0x0075, 0x0076, 0x0077, 0x00AC, 0x0069, 0x00ED, 0x00EE, 0x00EB, -/* 0060 */ 0x00EF, 0x00EC, 0x00BF, 0x0080, 0x00FD, 0x00FE, 0x00FB, 0x00FC, -/* 0068 */ 0x00AD, 0x00AE, 0x0059, 0x0044, 0x0045, 0x0042, 0x0046, 0x0043, -/* 0070 */ 0x0047, 0x009C, 0x0048, 0x0054, 0x0051, 0x0052, 0x0053, 0x0058, -/* 0078 */ 0x0055, 0x0056, 0x0057, 0x008C, 0x0049, 0x00CD, 0x00CE, 0x00CB, -/* 0080 */ 0x00CF, 0x00CC, 0x00E1, 0x0070, 0x00DD, 0x00DE, 0x00DB, 0x00DC, -/* 0088 */ 0x008D, 0x008E, 0x00DF, -/* End of table Total Length = 0x00BD * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1026.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp1026.uf deleted file mode 100644 index f44ca1fd43d..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1026.uf +++ /dev/null @@ -1,235 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 001F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0030 - srcEnd = 0039 - destBegin = 00F0 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0041 - srcEnd = 0049 - destBegin = 00C1 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 004A - srcEnd = 0052 - destBegin = 00D1 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0053 - srcEnd = 005A - destBegin = 00E2 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0061 - srcEnd = 0069 - destBegin = 0081 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 006A - srcEnd = 0072 - destBegin = 0091 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0073 - srcEnd = 007A - destBegin = 00A2 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = F866 - srcEnd = F885 - destBegin = 0020 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 0020 - srcEnd = 0040 - mappingOffset = 0000 - Mapping = - 0040 004F 00FC 00EC 00AD 006C 0050 007D - 004D 005D 005C 004E 006B 0060 004B 0061 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 007A 005E 004C 007E 006E 006F - 00AE -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 005B - srcEnd = 0060 - mappingOffset = 0021 - Mapping = - 0068 00DC 00AC 005F 006D 008D -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 007B - srcEnd = 007E - mappingOffset = 0027 - Mapping = - 0048 00BB 008C 00CC -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 002B - Mapping = - 0041 00AA 00B0 00B1 009F 00B2 008E 00B5 - 00BD 00B4 009A 008A 00BA 00CA 00AF 00BC - 0090 008F 00EA 00FA 00BE 00A0 00B6 00B3 - 009D 00DA 009B 008B 00B7 00B8 00B9 00AB - 0064 0065 0062 0066 0063 0067 009E 004A - 0074 0071 0072 0073 0078 0075 0076 0077 - FFFD 0069 00ED 00EE 00EB 00EF 007B 00BF - 0080 00FD 00FE 00FB 007F FFFD FFFD 0059 - 0044 0045 0042 0046 0043 0047 009C 00C0 - 0054 0051 0052 0053 0058 0055 0056 0057 - FFFD 0049 00CD 00CE 00CB 00CF 00A1 00E1 - 0070 00DD 00DE 00DB 00E0 FFFD FFFD 00DF -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 011E - srcEnd = 011F - mappingOffset = 008B - Mapping = - 005A 00D0 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 0130 - srcEnd = 0131 - mappingOffset = 008D - Mapping = - 005B 0079 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 015E - srcEnd = 015F - mappingOffset = 008F - Mapping = - 007C 006A -End of Item 000F - -Begin of Item 0010 - Format 2 - srcBegin = F886 - destBegin = 00FF -End of Item 0010 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x003C, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0009 */ -/* Total of Format 1 : 0x0007 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x1110, 0x1111, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x001F, 0x0000, -/* 0001 */ 0x0030, 0x0039, 0x00F0, -/* 0002 */ 0x0041, 0x0049, 0x00C1, -/* 0003 */ 0x004A, 0x0052, 0x00D1, -/* 0004 */ 0x0053, 0x005A, 0x00E2, -/* 0005 */ 0x0061, 0x0069, 0x0081, -/* 0006 */ 0x006A, 0x0072, 0x0091, -/* 0007 */ 0x0073, 0x007A, 0x00A2, -/* 0008 */ 0xF866, 0xF885, 0x0020, -/* 0009 */ 0x0020, 0x0040, 0x0000, -/* 000A */ 0x005B, 0x0060, 0x0021, -/* 000B */ 0x007B, 0x007E, 0x0027, -/* 000C */ 0x00A0, 0x00FF, 0x002B, -/* 000D */ 0x011E, 0x011F, 0x008B, -/* 000E */ 0x0130, 0x0131, 0x008D, -/* 000F */ 0x015E, 0x015F, 0x008F, -/* 0010 */ 0xF886, 0x0000, 0x00FF, -/*-------------------------------------------------------*/ -/* Offset=0x003C Start of MappingTable */ - -/* 0000 */ 0x0040, 0x004F, 0x00FC, 0x00EC, 0x00AD, 0x006C, 0x0050, 0x007D, -/* 0008 */ 0x004D, 0x005D, 0x005C, 0x004E, 0x006B, 0x0060, 0x004B, 0x0061, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0x007A, 0x005E, 0x004C, 0x007E, 0x006E, 0x006F, -/* 0020 */ 0x00AE, 0x0068, 0x00DC, 0x00AC, 0x005F, 0x006D, 0x008D, 0x0048, -/* 0028 */ 0x00BB, 0x008C, 0x00CC, 0x0041, 0x00AA, 0x00B0, 0x00B1, 0x009F, -/* 0030 */ 0x00B2, 0x008E, 0x00B5, 0x00BD, 0x00B4, 0x009A, 0x008A, 0x00BA, -/* 0038 */ 0x00CA, 0x00AF, 0x00BC, 0x0090, 0x008F, 0x00EA, 0x00FA, 0x00BE, -/* 0040 */ 0x00A0, 0x00B6, 0x00B3, 0x009D, 0x00DA, 0x009B, 0x008B, 0x00B7, -/* 0048 */ 0x00B8, 0x00B9, 0x00AB, 0x0064, 0x0065, 0x0062, 0x0066, 0x0063, -/* 0050 */ 0x0067, 0x009E, 0x004A, 0x0074, 0x0071, 0x0072, 0x0073, 0x0078, -/* 0058 */ 0x0075, 0x0076, 0x0077, 0xFFFD, 0x0069, 0x00ED, 0x00EE, 0x00EB, -/* 0060 */ 0x00EF, 0x007B, 0x00BF, 0x0080, 0x00FD, 0x00FE, 0x00FB, 0x007F, -/* 0068 */ 0xFFFD, 0xFFFD, 0x0059, 0x0044, 0x0045, 0x0042, 0x0046, 0x0043, -/* 0070 */ 0x0047, 0x009C, 0x00C0, 0x0054, 0x0051, 0x0052, 0x0053, 0x0058, -/* 0078 */ 0x0055, 0x0056, 0x0057, 0xFFFD, 0x0049, 0x00CD, 0x00CE, 0x00CB, -/* 0080 */ 0x00CF, 0x00A1, 0x00E1, 0x0070, 0x00DD, 0x00DE, 0x00DB, 0x00E0, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00DF, 0x005A, 0x00D0, 0x005B, 0x0079, 0x007C, -/* 0090 */ 0x006A, -/* End of table Total Length = 0x00CD * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1250.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp1250.uf deleted file mode 100644 index dc964b56f53..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1250.uf +++ /dev/null @@ -1,178 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 011B - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD FFFD 00A4 FFFD 00A6 00A7 - 00A8 00A9 FFFD 00AB 00AC 00AD 00AE FFFD - 00B0 00B1 FFFD FFFD 00B4 00B5 00B6 00B7 - 00B8 FFFD FFFD 00BB FFFD FFFD FFFD FFFD - FFFD 00C1 00C2 FFFD 00C4 FFFD FFFD 00C7 - FFFD 00C9 FFFD 00CB FFFD 00CD 00CE FFFD - FFFD FFFD FFFD 00D3 00D4 FFFD 00D6 00D7 - FFFD FFFD 00DA FFFD 00DC 00DD FFFD 00DF - FFFD 00E1 00E2 FFFD 00E4 FFFD FFFD 00E7 - FFFD 00E9 FFFD 00EB FFFD 00ED 00EE FFFD - FFFD FFFD FFFD 00F3 00F4 FFFD 00F6 00F7 - FFFD FFFD 00FA FFFD 00FC 00FD FFFD FFFD - FFFD FFFD 00C3 00E3 00A5 00B9 00C6 00E6 - FFFD FFFD FFFD FFFD 00C8 00E8 00CF 00EF - 00D0 00F0 FFFD FFFD FFFD FFFD FFFD FFFD - 00CA 00EA 00CC 00EC -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0139 - srcEnd = 017E - mappingOffset = 007C - Mapping = - 00C5 00E5 FFFD FFFD 00BC 00BE FFFD FFFD - 00A3 00B3 00D1 00F1 FFFD FFFD 00D2 00F2 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 00D5 - 00F5 FFFD FFFD 00C0 00E0 FFFD FFFD 00D8 - 00F8 008C 009C FFFD FFFD 00AA 00BA 008A - 009A 00DE 00FE 008D 009D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00D9 00F9 00DB - 00FB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 008F 009F 00AF 00BF 008E 009E -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 02C7 - destBegin = 00A1 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 00C2 - Mapping = - 00A2 00FF FFFD 00B2 FFFD 00BD -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 2013 - srcEnd = 203A - mappingOffset = 00C8 - Mapping = - 0096 0097 FFFD FFFD FFFD 0091 0092 0082 - FFFD 0093 0094 0084 FFFD 0086 0087 0095 - FFFD FFFD FFFD 0085 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 0089 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 008B 009B -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 20AC - destBegin = 0080 -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 2122 - destBegin = 0099 -End of Item 0007 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0004 */ -/* Total of Format 2 : 0x0003 */ -/* Total of Format 3 : 0x0000 */ - -0x2110, 0x2211, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x011B, 0x0000, -/* 0002 */ 0x0139, 0x017E, 0x007C, -/* 0003 */ 0x02C7, 0x0000, 0x00A1, -/* 0004 */ 0x02D8, 0x02DD, 0x00C2, -/* 0005 */ 0x2013, 0x203A, 0x00C8, -/* 0006 */ 0x20AC, 0x0000, 0x0080, -/* 0007 */ 0x2122, 0x0000, 0x0099, -/*-------------------------------------------------------*/ -/* Offset=0x001F Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A4, 0xFFFD, 0x00A6, 0x00A7, -/* 0008 */ 0x00A8, 0x00A9, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0xFFFD, -/* 0010 */ 0x00B0, 0x00B1, 0xFFFD, 0xFFFD, 0x00B4, 0x00B5, 0x00B6, 0x00B7, -/* 0018 */ 0x00B8, 0xFFFD, 0xFFFD, 0x00BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0xFFFD, 0x00C1, 0x00C2, 0xFFFD, 0x00C4, 0xFFFD, 0xFFFD, 0x00C7, -/* 0028 */ 0xFFFD, 0x00C9, 0xFFFD, 0x00CB, 0xFFFD, 0x00CD, 0x00CE, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00D3, 0x00D4, 0xFFFD, 0x00D6, 0x00D7, -/* 0038 */ 0xFFFD, 0xFFFD, 0x00DA, 0xFFFD, 0x00DC, 0x00DD, 0xFFFD, 0x00DF, -/* 0040 */ 0xFFFD, 0x00E1, 0x00E2, 0xFFFD, 0x00E4, 0xFFFD, 0xFFFD, 0x00E7, -/* 0048 */ 0xFFFD, 0x00E9, 0xFFFD, 0x00EB, 0xFFFD, 0x00ED, 0x00EE, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00F3, 0x00F4, 0xFFFD, 0x00F6, 0x00F7, -/* 0058 */ 0xFFFD, 0xFFFD, 0x00FA, 0xFFFD, 0x00FC, 0x00FD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0x00C3, 0x00E3, 0x00A5, 0x00B9, 0x00C6, 0x00E6, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C8, 0x00E8, 0x00CF, 0x00EF, -/* 0070 */ 0x00D0, 0x00F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0x00CA, 0x00EA, 0x00CC, 0x00EC, 0x00C5, 0x00E5, 0xFFFD, 0xFFFD, -/* 0080 */ 0x00BC, 0x00BE, 0xFFFD, 0xFFFD, 0x00A3, 0x00B3, 0x00D1, 0x00F1, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00D2, 0x00F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00D5, 0x00F5, 0xFFFD, 0xFFFD, 0x00C0, -/* 0098 */ 0x00E0, 0xFFFD, 0xFFFD, 0x00D8, 0x00F8, 0x008C, 0x009C, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00AA, 0x00BA, 0x008A, 0x009A, 0x00DE, 0x00FE, 0x008D, -/* 00A8 */ 0x009D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0x00D9, 0x00F9, 0x00DB, 0x00FB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008F, 0x009F, 0x00AF, 0x00BF, -/* 00C0 */ 0x008E, 0x009E, 0x00A2, 0x00FF, 0xFFFD, 0x00B2, 0xFFFD, 0x00BD, -/* 00C8 */ 0x0096, 0x0097, 0xFFFD, 0xFFFD, 0xFFFD, 0x0091, 0x0092, 0x0082, -/* 00D0 */ 0xFFFD, 0x0093, 0x0094, 0x0084, 0xFFFD, 0x0086, 0x0087, 0x0095, -/* 00D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0085, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0089, 0xFFFD, 0xFFFD, -/* 00E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008B, 0x009B, -/* End of table Total Length = 0x010F * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1251.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp1251.uf deleted file mode 100644 index 043e0a7baa9..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1251.uf +++ /dev/null @@ -1,161 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0410 - srcEnd = 044F - destBegin = 00C0 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 00A0 - srcEnd = 00BB - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD FFFD 00A4 FFFD 00A6 00A7 - FFFD 00A9 FFFD 00AB 00AC 00AD 00AE FFFD - 00B0 00B1 FFFD FFFD FFFD 00B5 00B6 00B7 - FFFD FFFD FFFD 00BB -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0401 - srcEnd = 040F - mappingOffset = 001C - Mapping = - 00A8 0080 0081 00AA 00BD 00B2 00AF 00A3 - 008A 008C 008E 008D FFFD 00A1 008F -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0451 - srcEnd = 045F - mappingOffset = 002B - Mapping = - 00B8 0090 0083 00BA 00BE 00B3 00BF 00BC - 009A 009C 009E 009D FFFD 00A2 009F -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 0490 - srcEnd = 0491 - mappingOffset = 003A - Mapping = - 00A5 00B4 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2013 - srcEnd = 203A - mappingOffset = 003C - Mapping = - 0096 0097 FFFD FFFD FFFD 0091 0092 0082 - FFFD 0093 0094 0084 FFFD 0086 0087 0095 - FFFD FFFD FFFD 0085 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 0089 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 008B 009B -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 20AC - destBegin = 0088 -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 2116 - destBegin = 00B9 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 2122 - destBegin = 0099 -End of Item 0009 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0025, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0005 */ -/* Total of Format 2 : 0x0003 */ -/* Total of Format 3 : 0x0000 */ - -0x1100, 0x2111, 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0410, 0x044F, 0x00C0, -/* 0002 */ 0x00A0, 0x00BB, 0x0000, -/* 0003 */ 0x0401, 0x040F, 0x001C, -/* 0004 */ 0x0451, 0x045F, 0x002B, -/* 0005 */ 0x0490, 0x0491, 0x003A, -/* 0006 */ 0x2013, 0x203A, 0x003C, -/* 0007 */ 0x20AC, 0x0000, 0x0088, -/* 0008 */ 0x2116, 0x0000, 0x00B9, -/* 0009 */ 0x2122, 0x0000, 0x0099, -/*-------------------------------------------------------*/ -/* Offset=0x0025 Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A4, 0xFFFD, 0x00A6, 0x00A7, -/* 0008 */ 0xFFFD, 0x00A9, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0xFFFD, -/* 0010 */ 0x00B0, 0x00B1, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B5, 0x00B6, 0x00B7, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00BB, 0x00A8, 0x0080, 0x0081, 0x00AA, -/* 0020 */ 0x00BD, 0x00B2, 0x00AF, 0x00A3, 0x008A, 0x008C, 0x008E, 0x008D, -/* 0028 */ 0xFFFD, 0x00A1, 0x008F, 0x00B8, 0x0090, 0x0083, 0x00BA, 0x00BE, -/* 0030 */ 0x00B3, 0x00BF, 0x00BC, 0x009A, 0x009C, 0x009E, 0x009D, 0xFFFD, -/* 0038 */ 0x00A2, 0x009F, 0x00A5, 0x00B4, 0x0096, 0x0097, 0xFFFD, 0xFFFD, -/* 0040 */ 0xFFFD, 0x0091, 0x0092, 0x0082, 0xFFFD, 0x0093, 0x0094, 0x0084, -/* 0048 */ 0xFFFD, 0x0086, 0x0087, 0x0095, 0xFFFD, 0xFFFD, 0xFFFD, 0x0085, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0x0089, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0x008B, 0x009B, -/* End of table Total Length = 0x0089 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1252.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp1252.uf deleted file mode 100644 index 9812e60c845..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1252.uf +++ /dev/null @@ -1,154 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A0 - srcEnd = 00FF - destBegin = 00A0 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0152 - srcEnd = 0153 - mappingOffset = 0000 - Mapping = - 008C 009C -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0160 - srcEnd = 0161 - mappingOffset = 0002 - Mapping = - 008A 009A -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0178 - srcEnd = 017E - mappingOffset = 0004 - Mapping = - 009F FFFD FFFD FFFD FFFD 008E 009E -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 0192 - destBegin = 0083 -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 02C6 - destBegin = 0088 -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 02DC - destBegin = 0098 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 2013 - srcEnd = 203A - mappingOffset = 000B - Mapping = - 0096 0097 FFFD FFFD FFFD 0091 0092 0082 - FFFD 0093 0094 0084 FFFD 0086 0087 0095 - FFFD FFFD FFFD 0085 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 0089 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 008B 009B -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 20AC - destBegin = 0080 -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 2122 - destBegin = 0099 -End of Item 000A - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0028, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0004 */ -/* Total of Format 2 : 0x0005 */ -/* Total of Format 3 : 0x0000 */ - -0x1100, 0x2221, 0x0221, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00FF, 0x00A0, -/* 0002 */ 0x0152, 0x0153, 0x0000, -/* 0003 */ 0x0160, 0x0161, 0x0002, -/* 0004 */ 0x0178, 0x017E, 0x0004, -/* 0005 */ 0x0192, 0x0000, 0x0083, -/* 0006 */ 0x02C6, 0x0000, 0x0088, -/* 0007 */ 0x02DC, 0x0000, 0x0098, -/* 0008 */ 0x2013, 0x203A, 0x000B, -/* 0009 */ 0x20AC, 0x0000, 0x0080, -/* 000A */ 0x2122, 0x0000, 0x0099, -/*-------------------------------------------------------*/ -/* Offset=0x0028 Start of MappingTable */ - -/* 0000 */ 0x008C, 0x009C, 0x008A, 0x009A, 0x009F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0x008E, 0x009E, 0x0096, 0x0097, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x0091, 0x0092, 0x0082, 0xFFFD, 0x0093, 0x0094, 0x0084, 0xFFFD, -/* 0018 */ 0x0086, 0x0087, 0x0095, 0xFFFD, 0xFFFD, 0xFFFD, 0x0085, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0x0089, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0x008B, 0x009B, -/* End of table Total Length = 0x005B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1253.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp1253.uf deleted file mode 100644 index 412b9418d11..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1253.uf +++ /dev/null @@ -1,153 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A3 - srcEnd = 00A9 - destBegin = 00A3 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 038E - srcEnd = 03A1 - destBegin = 00BE -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03A3 - srcEnd = 03CE - destBegin = 00D3 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00A0 - srcEnd = 00BD - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 00AB 00AC 00AD 00AE FFFD - 00B0 00B1 00B2 00B3 FFFD 00B5 00B6 00B7 - FFFD FFFD FFFD 00BB FFFD 00BD -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 0192 - destBegin = 0083 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 0384 - srcEnd = 038C - mappingOffset = 001E - Mapping = - 00B4 00A1 00A2 FFFD 00B8 00B9 00BA FFFD - 00BC -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 2013 - srcEnd = 203A - mappingOffset = 0027 - Mapping = - 0096 0097 00AF FFFD FFFD 0091 0092 0082 - FFFD 0093 0094 0084 FFFD 0086 0087 0095 - FFFD FFFD FFFD 0085 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 0089 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 008B 009B -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 20AC - destBegin = 0080 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 2122 - destBegin = 0099 -End of Item 0009 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0025, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0003 */ -/* Total of Format 2 : 0x0003 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1121, 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A3, 0x00A9, 0x00A3, -/* 0002 */ 0x038E, 0x03A1, 0x00BE, -/* 0003 */ 0x03A3, 0x03CE, 0x00D3, -/* 0004 */ 0x00A0, 0x00BD, 0x0000, -/* 0005 */ 0x0192, 0x0000, 0x0083, -/* 0006 */ 0x0384, 0x038C, 0x001E, -/* 0007 */ 0x2013, 0x203A, 0x0027, -/* 0008 */ 0x20AC, 0x0000, 0x0080, -/* 0009 */ 0x2122, 0x0000, 0x0099, -/*-------------------------------------------------------*/ -/* Offset=0x0025 Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0xFFFD, -/* 0010 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0xFFFD, 0x00B5, 0x00B6, 0x00B7, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00BB, 0xFFFD, 0x00BD, 0x00B4, 0x00A1, -/* 0020 */ 0x00A2, 0xFFFD, 0x00B8, 0x00B9, 0x00BA, 0xFFFD, 0x00BC, 0x0096, -/* 0028 */ 0x0097, 0x00AF, 0xFFFD, 0xFFFD, 0x0091, 0x0092, 0x0082, 0xFFFD, -/* 0030 */ 0x0093, 0x0094, 0x0084, 0xFFFD, 0x0086, 0x0087, 0x0095, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0x0085, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0089, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008B, 0x009B, -/* End of table Total Length = 0x0074 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1254.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp1254.uf deleted file mode 100644 index a7861b1ad24..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1254.uf +++ /dev/null @@ -1,194 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A0 - srcEnd = 00CF - destBegin = 00A0 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00D1 - srcEnd = 00DC - destBegin = 00D1 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00DF - srcEnd = 00EF - destBegin = 00DF -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00F1 - srcEnd = 00FC - destBegin = 00F1 -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 00FF - destBegin = 00FF -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 011E - srcEnd = 011F - mappingOffset = 0000 - Mapping = - 00D0 00F0 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 0130 - srcEnd = 0131 - mappingOffset = 0002 - Mapping = - 00DD 00FD -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 0152 - srcEnd = 0161 - mappingOffset = 0004 - Mapping = - 008C 009C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DE 00FE 008A 009A -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 0178 - destBegin = 009F -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 0192 - destBegin = 0083 -End of Item 000A - -Begin of Item 000B - Format 2 - srcBegin = 02C6 - destBegin = 0088 -End of Item 000B - -Begin of Item 000C - Format 2 - srcBegin = 02DC - destBegin = 0098 -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2013 - srcEnd = 203A - mappingOffset = 0014 - Mapping = - 0096 0097 FFFD FFFD FFFD 0091 0092 0082 - FFFD 0093 0094 0084 FFFD 0086 0087 0095 - FFFD FFFD FFFD 0085 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 0089 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 008B 009B -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 20AC - destBegin = 0080 -End of Item 000E - -Begin of Item 000F - Format 2 - srcBegin = 2122 - destBegin = 0099 -End of Item 000F - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0039, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0005 */ -/* Total of Format 1 : 0x0004 */ -/* Total of Format 2 : 0x0007 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1120, 0x2221, 0x2212, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00CF, 0x00A0, -/* 0002 */ 0x00D1, 0x00DC, 0x00D1, -/* 0003 */ 0x00DF, 0x00EF, 0x00DF, -/* 0004 */ 0x00F1, 0x00FC, 0x00F1, -/* 0005 */ 0x00FF, 0x0000, 0x00FF, -/* 0006 */ 0x011E, 0x011F, 0x0000, -/* 0007 */ 0x0130, 0x0131, 0x0002, -/* 0008 */ 0x0152, 0x0161, 0x0004, -/* 0009 */ 0x0178, 0x0000, 0x009F, -/* 000A */ 0x0192, 0x0000, 0x0083, -/* 000B */ 0x02C6, 0x0000, 0x0088, -/* 000C */ 0x02DC, 0x0000, 0x0098, -/* 000D */ 0x2013, 0x203A, 0x0014, -/* 000E */ 0x20AC, 0x0000, 0x0080, -/* 000F */ 0x2122, 0x0000, 0x0099, -/*-------------------------------------------------------*/ -/* Offset=0x0039 Start of MappingTable */ - -/* 0000 */ 0x00D0, 0x00F0, 0x00DD, 0x00FD, 0x008C, 0x009C, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00DE, 0x00FE, 0x008A, 0x009A, 0x0096, 0x0097, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0x0091, 0x0092, 0x0082, 0xFFFD, 0x0093, 0x0094, 0x0084, -/* 0020 */ 0xFFFD, 0x0086, 0x0087, 0x0095, 0xFFFD, 0xFFFD, 0xFFFD, 0x0085, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0x0089, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0x008B, 0x009B, -/* End of table Total Length = 0x0075 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1255.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp1255.uf deleted file mode 100644 index af3aac1d68f..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1255.uf +++ /dev/null @@ -1,199 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00AB - srcEnd = 00B9 - destBegin = 00AB -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 05B0 - srcEnd = 05B9 - destBegin = 00C0 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 05BB - srcEnd = 05C3 - destBegin = 00CB -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 05D0 - srcEnd = 05EA - destBegin = 00E0 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00A0 - srcEnd = 00A9 - mappingOffset = 0000 - Mapping = - 00A0 00A1 00A2 00A3 FFFD 00A5 00A6 00A7 - 00A8 00A9 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 00BB - srcEnd = 00BF - mappingOffset = 000A - Mapping = - 00BB 00BC 00BD 00BE 00BF -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 00D7 - destBegin = 00AA -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 00F7 - destBegin = 00BA -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 0192 - destBegin = 0083 -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 02C6 - destBegin = 0088 -End of Item 000A - -Begin of Item 000B - Format 2 - srcBegin = 02DC - destBegin = 0098 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 05F0 - srcEnd = 05F4 - mappingOffset = 000F - Mapping = - 00D4 00D5 00D6 00D7 00D8 -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 200E - srcEnd = 203A - mappingOffset = 0014 - Mapping = - 00FD 00FE FFFD FFFD FFFD 0096 0097 FFFD - FFFD FFFD 0091 0092 0082 FFFD 0093 0094 - 0084 FFFD 0086 0087 0095 FFFD FFFD FFFD - 0085 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 0089 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 008B 009B -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 20AA - srcEnd = 20AC - mappingOffset = 0041 - Mapping = - 00A4 FFFD 0080 -End of Item 000E - -Begin of Item 000F - Format 2 - srcBegin = 2122 - destBegin = 0099 -End of Item 000F - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0039, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0005 */ -/* Total of Format 1 : 0x0005 */ -/* Total of Format 2 : 0x0006 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x2110, 0x2222, 0x2111, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00AB, 0x00B9, 0x00AB, -/* 0002 */ 0x05B0, 0x05B9, 0x00C0, -/* 0003 */ 0x05BB, 0x05C3, 0x00CB, -/* 0004 */ 0x05D0, 0x05EA, 0x00E0, -/* 0005 */ 0x00A0, 0x00A9, 0x0000, -/* 0006 */ 0x00BB, 0x00BF, 0x000A, -/* 0007 */ 0x00D7, 0x0000, 0x00AA, -/* 0008 */ 0x00F7, 0x0000, 0x00BA, -/* 0009 */ 0x0192, 0x0000, 0x0083, -/* 000A */ 0x02C6, 0x0000, 0x0088, -/* 000B */ 0x02DC, 0x0000, 0x0098, -/* 000C */ 0x05F0, 0x05F4, 0x000F, -/* 000D */ 0x200E, 0x203A, 0x0014, -/* 000E */ 0x20AA, 0x20AC, 0x0041, -/* 000F */ 0x2122, 0x0000, 0x0099, -/*-------------------------------------------------------*/ -/* Offset=0x0039 Start of MappingTable */ - -/* 0000 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0xFFFD, 0x00A5, 0x00A6, 0x00A7, -/* 0008 */ 0x00A8, 0x00A9, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0x00D4, -/* 0010 */ 0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00FD, 0x00FE, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0x0096, 0x0097, 0xFFFD, 0xFFFD, 0xFFFD, 0x0091, 0x0092, -/* 0020 */ 0x0082, 0xFFFD, 0x0093, 0x0094, 0x0084, 0xFFFD, 0x0086, 0x0087, -/* 0028 */ 0x0095, 0xFFFD, 0xFFFD, 0xFFFD, 0x0085, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0089, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008B, -/* 0040 */ 0x009B, 0x00A4, 0xFFFD, 0x0080, -/* End of table Total Length = 0x007D * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1256.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp1256.uf deleted file mode 100644 index f12bda52a66..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1256.uf +++ /dev/null @@ -1,240 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A2 - srcEnd = 00A9 - destBegin = 00A2 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00AB - srcEnd = 00B9 - destBegin = 00AB -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 0621 - srcEnd = 0636 - destBegin = 00C1 -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 00A0 - destBegin = 00A0 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00BB - srcEnd = 00BE - mappingOffset = 0000 - Mapping = - 00BB 00BC 00BD 00BE -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 00D7 - srcEnd = 00FC - mappingOffset = 0004 - Mapping = - 00D7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00E0 FFFD 00E2 FFFD FFFD FFFD FFFD - 00E7 00E8 00E9 00EA 00EB FFFD FFFD 00EE - 00EF FFFD FFFD FFFD FFFD 00F4 FFFD FFFD - 00F7 FFFD 00F9 FFFD 00FB 00FC -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 0152 - srcEnd = 0153 - mappingOffset = 002A - Mapping = - 008C 009C -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 0192 - destBegin = 0083 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 02C6 - destBegin = 0088 -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 060C - destBegin = 00A1 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 061B - srcEnd = 061F - mappingOffset = 002C - Mapping = - 00BA FFFD FFFD FFFD 00BF -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 0637 - srcEnd = 0652 - mappingOffset = 0031 - Mapping = - 00D8 00D9 00DA 00DB FFFD FFFD FFFD FFFD - FFFD 00DC 00DD 00DE 00DF 00E1 00E3 00E4 - 00E5 00E6 00EC 00ED 00F0 00F1 00F2 00F3 - 00F5 00F6 00F8 00FA -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 067E - srcEnd = 0686 - mappingOffset = 004D - Mapping = - 0081 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 008D -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 0698 - destBegin = 008E -End of Item 000E - -Begin of Item 000F - Format 2 - srcBegin = 06AF - destBegin = 0090 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 200C - srcEnd = 203A - mappingOffset = 0056 - Mapping = - 009D 009E 00FD 00FE FFFD FFFD FFFD 0096 - 0097 FFFD FFFD FFFD 0091 0092 0082 FFFD - 0093 0094 0084 FFFD 0086 0087 0095 FFFD - FFFD FFFD 0085 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0089 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 008B 009B -End of Item 0010 - -Begin of Item 0011 - Format 2 - srcBegin = 20AC - destBegin = 0080 -End of Item 0011 - -Begin of Item 0012 - Format 2 - srcBegin = 2122 - destBegin = 0099 -End of Item 0012 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0013, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0042, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0007 */ -/* Total of Format 2 : 0x0008 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1112, 0x1222, 0x2211, 0x0221, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A2, 0x00A9, 0x00A2, -/* 0002 */ 0x00AB, 0x00B9, 0x00AB, -/* 0003 */ 0x0621, 0x0636, 0x00C1, -/* 0004 */ 0x00A0, 0x0000, 0x00A0, -/* 0005 */ 0x00BB, 0x00BE, 0x0000, -/* 0006 */ 0x00D7, 0x00FC, 0x0004, -/* 0007 */ 0x0152, 0x0153, 0x002A, -/* 0008 */ 0x0192, 0x0000, 0x0083, -/* 0009 */ 0x02C6, 0x0000, 0x0088, -/* 000A */ 0x060C, 0x0000, 0x00A1, -/* 000B */ 0x061B, 0x061F, 0x002C, -/* 000C */ 0x0637, 0x0652, 0x0031, -/* 000D */ 0x067E, 0x0686, 0x004D, -/* 000E */ 0x0698, 0x0000, 0x008E, -/* 000F */ 0x06AF, 0x0000, 0x0090, -/* 0010 */ 0x200C, 0x203A, 0x0056, -/* 0011 */ 0x20AC, 0x0000, 0x0080, -/* 0012 */ 0x2122, 0x0000, 0x0099, -/*-------------------------------------------------------*/ -/* Offset=0x0042 Start of MappingTable */ - -/* 0000 */ 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00D7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E0, 0xFFFD, 0x00E2, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E7, 0x00E8, 0x00E9, 0x00EA, -/* 0018 */ 0x00EB, 0xFFFD, 0xFFFD, 0x00EE, 0x00EF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0xFFFD, 0x00F4, 0xFFFD, 0xFFFD, 0x00F7, 0xFFFD, 0x00F9, 0xFFFD, -/* 0028 */ 0x00FB, 0x00FC, 0x008C, 0x009C, 0x00BA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0x00BF, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0x00DC, 0x00DD, 0x00DE, 0x00DF, 0x00E1, 0x00E3, -/* 0040 */ 0x00E4, 0x00E5, 0x00E6, 0x00EC, 0x00ED, 0x00F0, 0x00F1, 0x00F2, -/* 0048 */ 0x00F3, 0x00F5, 0x00F6, 0x00F8, 0x00FA, 0x0081, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008D, 0x009D, 0x009E, -/* 0058 */ 0x00FD, 0x00FE, 0xFFFD, 0xFFFD, 0xFFFD, 0x0096, 0x0097, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0x0091, 0x0092, 0x0082, 0xFFFD, 0x0093, 0x0094, -/* 0068 */ 0x0084, 0xFFFD, 0x0086, 0x0087, 0x0095, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0x0085, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0x0089, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x008B, 0x009B, -/* End of table Total Length = 0x00C7 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1257.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp1257.uf deleted file mode 100644 index 2d84866f6d7..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1257.uf +++ /dev/null @@ -1,184 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00B0 - srcEnd = 00B7 - destBegin = 00B0 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 00A0 - srcEnd = 017E - mappingOffset = 0000 - Mapping = - 00A0 FFFD 00A2 00A3 00A4 FFFD 00A6 00A7 - 008D 00A9 FFFD 00AB 00AC 00AD 00AE 009D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 008F 00B9 FFFD 00BB 00BC 00BD 00BE FFFD - FFFD FFFD FFFD FFFD 00C4 00C5 00AF FFFD - FFFD 00C9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 00D3 FFFD 00D5 00D6 00D7 - 00A8 FFFD FFFD FFFD 00DC FFFD FFFD 00DF - FFFD FFFD FFFD FFFD 00E4 00E5 00BF FFFD - FFFD 00E9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 00F3 FFFD 00F5 00F6 00F7 - 00B8 FFFD FFFD FFFD 00FC FFFD FFFD FFFD - 00C2 00E2 FFFD FFFD 00C0 00E0 00C3 00E3 - FFFD FFFD FFFD FFFD 00C8 00E8 FFFD FFFD - FFFD FFFD 00C7 00E7 FFFD FFFD 00CB 00EB - 00C6 00E6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00CC 00EC FFFD FFFD FFFD FFFD - FFFD FFFD 00CE 00EE FFFD FFFD 00C1 00E1 - FFFD FFFD FFFD FFFD FFFD FFFD 00CD 00ED - FFFD FFFD FFFD 00CF 00EF FFFD FFFD FFFD - FFFD 00D9 00F9 00D1 00F1 00D2 00F2 FFFD - FFFD FFFD FFFD FFFD 00D4 00F4 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 00AA 00BA - FFFD FFFD 00DA 00FA FFFD FFFD FFFD FFFD - 00D0 00F0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00DB 00FB FFFD FFFD FFFD FFFD - FFFD FFFD 00D8 00F8 FFFD FFFD FFFD FFFD - FFFD 00CA 00EA 00DD 00FD 00DE 00FE -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 02C7 - destBegin = 008E -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 02D9 - srcEnd = 02DB - mappingOffset = 00DF - Mapping = - 00FF FFFD 009E -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 2013 - srcEnd = 203A - mappingOffset = 00E2 - Mapping = - 0096 0097 FFFD FFFD FFFD 0091 0092 0082 - FFFD 0093 0094 0084 FFFD 0086 0087 0095 - FFFD FFFD FFFD 0085 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 0089 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 008B 009B -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 20AC - destBegin = 0080 -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 2122 - destBegin = 0099 -End of Item 0007 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0003 */ -/* Total of Format 2 : 0x0003 */ -/* Total of Format 3 : 0x0000 */ - -0x2100, 0x2211, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00B0, 0x00B7, 0x00B0, -/* 0002 */ 0x00A0, 0x017E, 0x0000, -/* 0003 */ 0x02C7, 0x0000, 0x008E, -/* 0004 */ 0x02D9, 0x02DB, 0x00DF, -/* 0005 */ 0x2013, 0x203A, 0x00E2, -/* 0006 */ 0x20AC, 0x0000, 0x0080, -/* 0007 */ 0x2122, 0x0000, 0x0099, -/*-------------------------------------------------------*/ -/* Offset=0x001F Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0x00A2, 0x00A3, 0x00A4, 0xFFFD, 0x00A6, 0x00A7, -/* 0008 */ 0x008D, 0x00A9, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x009D, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0x008F, 0x00B9, 0xFFFD, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C4, 0x00C5, 0x00AF, 0xFFFD, -/* 0028 */ 0xFFFD, 0x00C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00D3, 0xFFFD, 0x00D5, 0x00D6, 0x00D7, -/* 0038 */ 0x00A8, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, 0xFFFD, 0xFFFD, 0x00DF, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E4, 0x00E5, 0x00BF, 0xFFFD, -/* 0048 */ 0xFFFD, 0x00E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00F3, 0xFFFD, 0x00F5, 0x00F6, 0x00F7, -/* 0058 */ 0x00B8, 0xFFFD, 0xFFFD, 0xFFFD, 0x00FC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0x00C2, 0x00E2, 0xFFFD, 0xFFFD, 0x00C0, 0x00E0, 0x00C3, 0x00E3, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C8, 0x00E8, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xFFFD, 0x00C7, 0x00E7, 0xFFFD, 0xFFFD, 0x00CB, 0x00EB, -/* 0078 */ 0x00C6, 0x00E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0x00CC, 0x00EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00CE, 0x00EE, 0xFFFD, 0xFFFD, 0x00C1, 0x00E1, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00CD, 0x00ED, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00CF, 0x00EF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00D9, 0x00F9, 0x00D1, 0x00F1, 0x00D2, 0x00F2, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D4, 0x00F4, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AA, 0x00BA, -/* 00B8 */ 0xFFFD, 0xFFFD, 0x00DA, 0x00FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0x00D0, 0x00F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0x00DB, 0x00FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0x00D8, 0x00F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D8 */ 0xFFFD, 0x00CA, 0x00EA, 0x00DD, 0x00FD, 0x00DE, 0x00FE, 0x00FF, -/* 00E0 */ 0xFFFD, 0x009E, 0x0096, 0x0097, 0xFFFD, 0xFFFD, 0xFFFD, 0x0091, -/* 00E8 */ 0x0092, 0x0082, 0xFFFD, 0x0093, 0x0094, 0x0084, 0xFFFD, 0x0086, -/* 00F0 */ 0x0087, 0x0095, 0xFFFD, 0xFFFD, 0xFFFD, 0x0085, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0089, -/* 0100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0108 */ 0x008B, 0x009B, -/* End of table Total Length = 0x0129 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1258.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp1258.uf deleted file mode 100644 index 994fe917058..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp1258.uf +++ /dev/null @@ -1,257 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A0 - srcEnd = 00C2 - destBegin = 00A0 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00C4 - srcEnd = 00CB - destBegin = 00C4 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00D6 - srcEnd = 00DC - destBegin = 00D6 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00E4 - srcEnd = 00EB - destBegin = 00E4 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 00F6 - srcEnd = 00FC - destBegin = 00F6 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 00CD - srcEnd = 0103 - mappingOffset = 0000 - Mapping = - 00CD 00CE 00CF FFFD 00D1 FFFD 00D3 00D4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00DF 00E0 00E1 00E2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00ED 00EE 00EF FFFD 00F1 FFFD 00F3 00F4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00FF FFFD FFFD 00C3 00E3 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 0110 - srcEnd = 0111 - mappingOffset = 0037 - Mapping = - 00D0 00F0 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 0152 - srcEnd = 0153 - mappingOffset = 0039 - Mapping = - 008C 009C -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 0178 - destBegin = 009F -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 0192 - destBegin = 0083 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 01A0 - srcEnd = 01A1 - mappingOffset = 003B - Mapping = - 00D5 00F5 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 01AF - srcEnd = 01B0 - mappingOffset = 003D - Mapping = - 00DD 00FD -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 02C6 - destBegin = 0088 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 02DC - destBegin = 0098 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 0303 - srcEnd = 0309 - mappingOffset = 003F - Mapping = - 00DE FFFD FFFD FFFD FFFD FFFD 00D2 -End of Item 000F - -Begin of Item 0010 - Format 2 - srcBegin = 0323 - destBegin = 00F2 -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 0340 - srcEnd = 0341 - mappingOffset = 0046 - Mapping = - 00CC 00EC -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = 2013 - srcEnd = 203A - mappingOffset = 0048 - Mapping = - 0096 0097 FFFD FFFD FFFD 0091 0092 0082 - FFFD 0093 0094 0084 FFFD 0086 0087 0095 - FFFD FFFD FFFD 0085 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 0089 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 008B 009B -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 20AB - srcEnd = 20AC - mappingOffset = 0070 - Mapping = - 00FE 0080 -End of Item 0013 - -Begin of Item 0014 - Format 2 - srcBegin = 2122 - destBegin = 0099 -End of Item 0014 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0049, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0006 */ -/* Total of Format 1 : 0x0009 */ -/* Total of Format 2 : 0x0006 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1100, 0x1221, 0x1221, 0x1112, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x000A Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00C2, 0x00A0, -/* 0002 */ 0x00C4, 0x00CB, 0x00C4, -/* 0003 */ 0x00D6, 0x00DC, 0x00D6, -/* 0004 */ 0x00E4, 0x00EB, 0x00E4, -/* 0005 */ 0x00F6, 0x00FC, 0x00F6, -/* 0006 */ 0x00CD, 0x0103, 0x0000, -/* 0007 */ 0x0110, 0x0111, 0x0037, -/* 0008 */ 0x0152, 0x0153, 0x0039, -/* 0009 */ 0x0178, 0x0000, 0x009F, -/* 000A */ 0x0192, 0x0000, 0x0083, -/* 000B */ 0x01A0, 0x01A1, 0x003B, -/* 000C */ 0x01AF, 0x01B0, 0x003D, -/* 000D */ 0x02C6, 0x0000, 0x0088, -/* 000E */ 0x02DC, 0x0000, 0x0098, -/* 000F */ 0x0303, 0x0309, 0x003F, -/* 0010 */ 0x0323, 0x0000, 0x00F2, -/* 0011 */ 0x0340, 0x0341, 0x0046, -/* 0012 */ 0x2013, 0x203A, 0x0048, -/* 0013 */ 0x20AB, 0x20AC, 0x0070, -/* 0014 */ 0x2122, 0x0000, 0x0099, -/*-------------------------------------------------------*/ -/* Offset=0x0049 Start of MappingTable */ - -/* 0000 */ 0x00CD, 0x00CE, 0x00CF, 0xFFFD, 0x00D1, 0xFFFD, 0x00D3, 0x00D4, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0x00DF, 0x00E0, 0x00E1, 0x00E2, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0x00ED, 0x00EE, 0x00EF, 0xFFFD, 0x00F1, 0xFFFD, 0x00F3, 0x00F4, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0x00FF, 0xFFFD, 0xFFFD, 0x00C3, 0x00E3, 0x00D0, -/* 0038 */ 0x00F0, 0x008C, 0x009C, 0x00D5, 0x00F5, 0x00DD, 0x00FD, 0x00DE, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D2, 0x00CC, 0x00EC, -/* 0048 */ 0x0096, 0x0097, 0xFFFD, 0xFFFD, 0xFFFD, 0x0091, 0x0092, 0x0082, -/* 0050 */ 0xFFFD, 0x0093, 0x0094, 0x0084, 0xFFFD, 0x0086, 0x0087, 0x0095, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0085, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0089, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008B, 0x009B, -/* 0070 */ 0x00FE, 0x0080, -/* End of table Total Length = 0x00BB * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp437.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp437.uf deleted file mode 100644 index 47b678146a3..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp437.uf +++ /dev/null @@ -1,253 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00FF 00AD 009B 009C FFFD 009D FFFD FFFD - FFFD FFFD 00A6 00AE 00AA FFFD FFFD FFFD - 00F8 00F1 00FD FFFD FFFD 00E6 FFFD 00FA - FFFD FFFD 00A7 00AF 00AC 00AB FFFD 00A8 - FFFD FFFD FFFD FFFD 008E 008F 0092 0080 - FFFD 0090 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00A5 FFFD FFFD FFFD FFFD 0099 FFFD - FFFD FFFD FFFD FFFD 009A FFFD FFFD 00E1 - 0085 00A0 0083 FFFD 0084 0086 0091 0087 - 008A 0082 0088 0089 008D 00A1 008C 008B - FFFD 00A4 0095 00A2 0093 FFFD 0094 00F6 - FFFD 0097 00A3 0096 0081 FFFD FFFD 0098 -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 0192 - destBegin = 009F -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0393 - srcEnd = 03C6 - mappingOffset = 0060 - Mapping = - 00E2 FFFD FFFD FFFD FFFD 00E9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00E4 FFFD FFFD 00E8 FFFD FFFD 00EA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 00E0 FFFD - FFFD 00EB 00EE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00E3 FFFD FFFD - 00E5 00E7 FFFD 00ED -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 207F - destBegin = 00FC -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 20A7 - destBegin = 009E -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2219 - srcEnd = 2229 - mappingOffset = 0094 - Mapping = - 00F9 00FB FFFD FFFD FFFD 00EC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00EF -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 2248 - destBegin = 00F7 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 2261 - srcEnd = 2265 - mappingOffset = 00A5 - Mapping = - 00F0 FFFD FFFD 00F3 00F2 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 2310 - destBegin = 00A9 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2320 - srcEnd = 2321 - mappingOffset = 00AA - Mapping = - 00F4 00F5 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 00AC - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 00E9 - Mapping = - 00CD 00BA 00D5 00D6 00C9 00B8 00B7 00BB - 00D4 00D3 00C8 00BE 00BD 00BC 00C6 00C7 - 00CC 00B5 00B6 00B9 00D1 00D2 00CB 00CF - 00D0 00CA 00D8 00D7 00CE -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 0106 - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD 00DD FFFD FFFD FFFD - 00DE 00B0 00B1 00B2 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 000E - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000F, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0035, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x0006 */ -/* Total of Format 3 : 0x0000 */ - -0x1210, 0x2122, 0x1121, 0x0211, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00FF, 0x0000, -/* 0002 */ 0x0192, 0x0000, 0x009F, -/* 0003 */ 0x0393, 0x03C6, 0x0060, -/* 0004 */ 0x207F, 0x0000, 0x00FC, -/* 0005 */ 0x20A7, 0x0000, 0x009E, -/* 0006 */ 0x2219, 0x2229, 0x0094, -/* 0007 */ 0x2248, 0x0000, 0x00F7, -/* 0008 */ 0x2261, 0x2265, 0x00A5, -/* 0009 */ 0x2310, 0x0000, 0x00A9, -/* 000A */ 0x2320, 0x2321, 0x00AA, -/* 000B */ 0x2500, 0x253C, 0x00AC, -/* 000C */ 0x2550, 0x256C, 0x00E9, -/* 000D */ 0x2580, 0x2593, 0x0106, -/* 000E */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x0035 Start of MappingTable */ - -/* 0000 */ 0x00FF, 0x00AD, 0x009B, 0x009C, 0xFFFD, 0x009D, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0x00A6, 0x00AE, 0x00AA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00F8, 0x00F1, 0x00FD, 0xFFFD, 0xFFFD, 0x00E6, 0xFFFD, 0x00FA, -/* 0018 */ 0xFFFD, 0xFFFD, 0x00A7, 0x00AF, 0x00AC, 0x00AB, 0xFFFD, 0x00A8, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008E, 0x008F, 0x0092, 0x0080, -/* 0028 */ 0xFFFD, 0x0090, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0x00A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0099, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x009A, 0xFFFD, 0xFFFD, 0x00E1, -/* 0040 */ 0x0085, 0x00A0, 0x0083, 0xFFFD, 0x0084, 0x0086, 0x0091, 0x0087, -/* 0048 */ 0x008A, 0x0082, 0x0088, 0x0089, 0x008D, 0x00A1, 0x008C, 0x008B, -/* 0050 */ 0xFFFD, 0x00A4, 0x0095, 0x00A2, 0x0093, 0xFFFD, 0x0094, 0x00F6, -/* 0058 */ 0xFFFD, 0x0097, 0x00A3, 0x0096, 0x0081, 0xFFFD, 0xFFFD, 0x0098, -/* 0060 */ 0x00E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E9, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0x00E4, 0xFFFD, 0xFFFD, 0x00E8, 0xFFFD, 0xFFFD, 0x00EA, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E0, 0xFFFD, -/* 0080 */ 0xFFFD, 0x00EB, 0x00EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E3, 0xFFFD, 0xFFFD, -/* 0090 */ 0x00E5, 0x00E7, 0xFFFD, 0x00ED, 0x00F9, 0x00FB, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0x00EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00EF, 0x00F0, 0xFFFD, 0xFFFD, -/* 00A8 */ 0x00F3, 0x00F2, 0x00F4, 0x00F5, 0x00C4, 0xFFFD, 0x00B3, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0x00DA, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0x00C0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D8 */ 0x00C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E0 */ 0x00C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E8 */ 0x00C5, 0x00CD, 0x00BA, 0x00D5, 0x00D6, 0x00C9, 0x00B8, 0x00B7, -/* 00F0 */ 0x00BB, 0x00D4, 0x00D3, 0x00C8, 0x00BE, 0x00BD, 0x00BC, 0x00C6, -/* 00F8 */ 0x00C7, 0x00CC, 0x00B5, 0x00B6, 0x00B9, 0x00D1, 0x00D2, 0x00CB, -/* 0100 */ 0x00CF, 0x00D0, 0x00CA, 0x00D8, 0x00D7, 0x00CE, 0x00DF, 0xFFFD, -/* 0108 */ 0xFFFD, 0xFFFD, 0x00DC, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DB, 0xFFFD, -/* 0110 */ 0xFFFD, 0xFFFD, 0x00DD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DE, 0x00B0, -/* 0118 */ 0x00B1, 0x00B2, -/* End of table Total Length = 0x014F * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp500.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp500.uf deleted file mode 100644 index 0725428fa4c..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp500.uf +++ /dev/null @@ -1,208 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 001F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0030 - srcEnd = 0039 - destBegin = 00F0 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0041 - srcEnd = 0049 - destBegin = 00C1 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 004A - srcEnd = 0052 - destBegin = 00D1 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0053 - srcEnd = 005A - destBegin = 00E2 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0061 - srcEnd = 0069 - destBegin = 0081 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 006A - srcEnd = 0072 - destBegin = 0091 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0073 - srcEnd = 007A - destBegin = 00A2 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = F89A - srcEnd = F8B9 - destBegin = 0020 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 0020 - srcEnd = 0040 - mappingOffset = 0000 - Mapping = - 0040 004F 007F 007B 005B 006C 0050 007D - 004D 005D 005C 004E 006B 0060 004B 0061 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 007A 005E 004C 007E 006E 006F - 007C -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 005B - srcEnd = 0060 - mappingOffset = 0021 - Mapping = - 004A 00E0 005A 005F 006D 0079 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 007B - srcEnd = 007E - mappingOffset = 0027 - Mapping = - 00C0 00BB 00D0 00A1 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 002B - Mapping = - 0041 00AA 00B0 00B1 009F 00B2 006A 00B5 - 00BD 00B4 009A 008A 00BA 00CA 00AF 00BC - 0090 008F 00EA 00FA 00BE 00A0 00B6 00B3 - 009D 00DA 009B 008B 00B7 00B8 00B9 00AB - 0064 0065 0062 0066 0063 0067 009E 0068 - 0074 0071 0072 0073 0078 0075 0076 0077 - 00AC 0069 00ED 00EE 00EB 00EF 00EC 00BF - 0080 00FD 00FE 00FB 00FC 00AD 00AE 0059 - 0044 0045 0042 0046 0043 0047 009C 0048 - 0054 0051 0052 0053 0058 0055 0056 0057 - 008C 0049 00CD 00CE 00CB 00CF 00CC 00E1 - 0070 00DD 00DE 00DB 00DC 008D 008E 00DF -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = F8BA - destBegin = 00FF -End of Item 000D - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000E, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0032, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0009 */ -/* Total of Format 1 : 0x0004 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x1110, 0x0021, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x001F, 0x0000, -/* 0001 */ 0x0030, 0x0039, 0x00F0, -/* 0002 */ 0x0041, 0x0049, 0x00C1, -/* 0003 */ 0x004A, 0x0052, 0x00D1, -/* 0004 */ 0x0053, 0x005A, 0x00E2, -/* 0005 */ 0x0061, 0x0069, 0x0081, -/* 0006 */ 0x006A, 0x0072, 0x0091, -/* 0007 */ 0x0073, 0x007A, 0x00A2, -/* 0008 */ 0xF89A, 0xF8B9, 0x0020, -/* 0009 */ 0x0020, 0x0040, 0x0000, -/* 000A */ 0x005B, 0x0060, 0x0021, -/* 000B */ 0x007B, 0x007E, 0x0027, -/* 000C */ 0x00A0, 0x00FF, 0x002B, -/* 000D */ 0xF8BA, 0x0000, 0x00FF, -/*-------------------------------------------------------*/ -/* Offset=0x0032 Start of MappingTable */ - -/* 0000 */ 0x0040, 0x004F, 0x007F, 0x007B, 0x005B, 0x006C, 0x0050, 0x007D, -/* 0008 */ 0x004D, 0x005D, 0x005C, 0x004E, 0x006B, 0x0060, 0x004B, 0x0061, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0x007A, 0x005E, 0x004C, 0x007E, 0x006E, 0x006F, -/* 0020 */ 0x007C, 0x004A, 0x00E0, 0x005A, 0x005F, 0x006D, 0x0079, 0x00C0, -/* 0028 */ 0x00BB, 0x00D0, 0x00A1, 0x0041, 0x00AA, 0x00B0, 0x00B1, 0x009F, -/* 0030 */ 0x00B2, 0x006A, 0x00B5, 0x00BD, 0x00B4, 0x009A, 0x008A, 0x00BA, -/* 0038 */ 0x00CA, 0x00AF, 0x00BC, 0x0090, 0x008F, 0x00EA, 0x00FA, 0x00BE, -/* 0040 */ 0x00A0, 0x00B6, 0x00B3, 0x009D, 0x00DA, 0x009B, 0x008B, 0x00B7, -/* 0048 */ 0x00B8, 0x00B9, 0x00AB, 0x0064, 0x0065, 0x0062, 0x0066, 0x0063, -/* 0050 */ 0x0067, 0x009E, 0x0068, 0x0074, 0x0071, 0x0072, 0x0073, 0x0078, -/* 0058 */ 0x0075, 0x0076, 0x0077, 0x00AC, 0x0069, 0x00ED, 0x00EE, 0x00EB, -/* 0060 */ 0x00EF, 0x00EC, 0x00BF, 0x0080, 0x00FD, 0x00FE, 0x00FB, 0x00FC, -/* 0068 */ 0x00AD, 0x00AE, 0x0059, 0x0044, 0x0045, 0x0042, 0x0046, 0x0043, -/* 0070 */ 0x0047, 0x009C, 0x0048, 0x0054, 0x0051, 0x0052, 0x0053, 0x0058, -/* 0078 */ 0x0055, 0x0056, 0x0057, 0x008C, 0x0049, 0x00CD, 0x00CE, 0x00CB, -/* 0080 */ 0x00CF, 0x00CC, 0x00E1, 0x0070, 0x00DD, 0x00DE, 0x00DB, 0x00DC, -/* 0088 */ 0x008D, 0x008E, 0x00DF, -/* End of table Total Length = 0x00BD * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp737.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp737.uf deleted file mode 100644 index d69ad2a2034..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp737.uf +++ /dev/null @@ -1,246 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = 0080 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = 0091 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = 0098 -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 00A0 - destBegin = 00FF -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00B0 - srcEnd = 00B7 - mappingOffset = 0000 - Mapping = - 00F8 00F1 00FD FFFD FFFD FFFD FFFD 00FA -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 00F7 - destBegin = 00F6 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 0386 - srcEnd = 038F - mappingOffset = 0008 - Mapping = - 00EA FFFD 00EB 00EC 00ED FFFD 00EE FFFD - 00EF 00F0 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 03AA - srcEnd = 03AF - mappingOffset = 0012 - Mapping = - 00F4 00F5 00E1 00E2 00E3 00E5 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 03C2 - srcEnd = 03CE - mappingOffset = 0018 - Mapping = - 00AA 00A9 00AB 00AC 00AD 00AE 00AF 00E0 - 00E4 00E8 00E6 00E7 00E9 -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 207F - destBegin = 00FC -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2219 - srcEnd = 221A - mappingOffset = 0025 - Mapping = - 00F9 00FB -End of Item 000B - -Begin of Item 000C - Format 2 - srcBegin = 2248 - destBegin = 00F7 -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2264 - srcEnd = 2265 - mappingOffset = 0027 - Mapping = - 00F3 00F2 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 0029 - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 0066 - Mapping = - 00CD 00BA 00D5 00D6 00C9 00B8 00B7 00BB - 00D4 00D3 00C8 00BE 00BD 00BC 00C6 00C7 - 00CC 00B5 00B6 00B9 00D1 00D2 00CB 00CF - 00D0 00CA 00D8 00D7 00CE -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 0083 - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD 00DD FFFD FFFD FFFD - 00DE 00B0 00B1 00B2 -End of Item 0010 - -Begin of Item 0011 - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 0011 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x003F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0009 */ -/* Total of Format 2 : 0x0005 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1212, 0x1211, 0x1112, 0x0021, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0391, 0x03A1, 0x0080, -/* 0002 */ 0x03A3, 0x03A9, 0x0091, -/* 0003 */ 0x03B1, 0x03C1, 0x0098, -/* 0004 */ 0x00A0, 0x0000, 0x00FF, -/* 0005 */ 0x00B0, 0x00B7, 0x0000, -/* 0006 */ 0x00F7, 0x0000, 0x00F6, -/* 0007 */ 0x0386, 0x038F, 0x0008, -/* 0008 */ 0x03AA, 0x03AF, 0x0012, -/* 0009 */ 0x03C2, 0x03CE, 0x0018, -/* 000A */ 0x207F, 0x0000, 0x00FC, -/* 000B */ 0x2219, 0x221A, 0x0025, -/* 000C */ 0x2248, 0x0000, 0x00F7, -/* 000D */ 0x2264, 0x2265, 0x0027, -/* 000E */ 0x2500, 0x253C, 0x0029, -/* 000F */ 0x2550, 0x256C, 0x0066, -/* 0010 */ 0x2580, 0x2593, 0x0083, -/* 0011 */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x003F Start of MappingTable */ - -/* 0000 */ 0x00F8, 0x00F1, 0x00FD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00FA, -/* 0008 */ 0x00EA, 0xFFFD, 0x00EB, 0x00EC, 0x00ED, 0xFFFD, 0x00EE, 0xFFFD, -/* 0010 */ 0x00EF, 0x00F0, 0x00F4, 0x00F5, 0x00E1, 0x00E2, 0x00E3, 0x00E5, -/* 0018 */ 0x00AA, 0x00A9, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, 0x00E0, -/* 0020 */ 0x00E4, 0x00E8, 0x00E6, 0x00E7, 0x00E9, 0x00F9, 0x00FB, 0x00F3, -/* 0028 */ 0x00F2, 0x00C4, 0xFFFD, 0x00B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DA, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, 0xFFFD, 0xFFFD, -/* 0040 */ 0xFFFD, 0x00D9, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B4, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C2, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C1, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C5, 0x00CD, 0x00BA, -/* 0068 */ 0x00D5, 0x00D6, 0x00C9, 0x00B8, 0x00B7, 0x00BB, 0x00D4, 0x00D3, -/* 0070 */ 0x00C8, 0x00BE, 0x00BD, 0x00BC, 0x00C6, 0x00C7, 0x00CC, 0x00B5, -/* 0078 */ 0x00B6, 0x00B9, 0x00D1, 0x00D2, 0x00CB, 0x00CF, 0x00D0, 0x00CA, -/* 0080 */ 0x00D8, 0x00D7, 0x00CE, 0x00DF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DB, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DD, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DE, 0x00B0, 0x00B1, 0x00B2, -/* End of table Total Length = 0x00D6 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp775.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp775.uf deleted file mode 100644 index 22b79d1997f..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp775.uf +++ /dev/null @@ -1,210 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 017E - mappingOffset = 0000 - Mapping = - 00FF FFFD 0096 009C 009F FFFD 00A7 00F5 - FFFD 00A8 FFFD 00AE 00AA 00F0 00A9 FFFD - 00F8 00F1 00FD 00FC FFFD 00E6 00F4 00FA - FFFD 00FB FFFD 00AF 00AC 00AB 00F3 FFFD - FFFD FFFD FFFD FFFD 008E 008F 0092 FFFD - FFFD 0090 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 00E0 FFFD 00E5 0099 009E - 009D FFFD FFFD FFFD 009A FFFD FFFD 00E1 - FFFD FFFD FFFD FFFD 0084 0086 0091 FFFD - FFFD 0082 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 00A2 FFFD 00E4 0094 00F6 - 009B FFFD FFFD FFFD 0081 FFFD FFFD FFFD - 00A0 0083 FFFD FFFD 00B5 00D0 0080 0087 - FFFD FFFD FFFD FFFD 00B6 00D1 FFFD FFFD - FFFD FFFD 00ED 0089 FFFD FFFD 00B8 00D3 - 00B7 00D2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 0095 0085 FFFD FFFD FFFD FFFD - FFFD FFFD 00A1 008C FFFD FFFD 00BD 00D4 - FFFD FFFD FFFD FFFD FFFD FFFD 00E8 00E9 - FFFD FFFD FFFD 00EA 00EB FFFD FFFD FFFD - FFFD 00AD 0088 00E3 00E7 00EE 00EC FFFD - FFFD FFFD FFFD FFFD 00E2 0093 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 008A 008B - FFFD FFFD 0097 0098 FFFD FFFD FFFD FFFD - 00BE 00D5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00C7 00D7 FFFD FFFD FFFD FFFD - FFFD FFFD 00C6 00D6 FFFD FFFD FFFD FFFD - FFFD 008D 00A5 00A3 00A4 00CF 00D8 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 2019 - srcEnd = 201E - mappingOffset = 00DF - Mapping = - 00EF FFFD FFFD 00F2 00A6 00F7 -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 2219 - destBegin = 00F9 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 00E5 - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 0122 - Mapping = - 00CD 00BA FFFD FFFD 00C9 FFFD FFFD 00BB - FFFD FFFD 00C8 FFFD FFFD 00BC FFFD FFFD - 00CC FFFD FFFD 00B9 FFFD FFFD 00CB FFFD - FFFD 00CA FFFD FFFD 00CE -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 013F - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD 00DD FFFD FFFD FFFD - 00DE 00B0 00B1 00B2 -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 0007 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0005 */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x2110, 0x2111, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x017E, 0x0000, -/* 0002 */ 0x2019, 0x201E, 0x00DF, -/* 0003 */ 0x2219, 0x0000, 0x00F9, -/* 0004 */ 0x2500, 0x253C, 0x00E5, -/* 0005 */ 0x2550, 0x256C, 0x0122, -/* 0006 */ 0x2580, 0x2593, 0x013F, -/* 0007 */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x001F Start of MappingTable */ - -/* 0000 */ 0x00FF, 0xFFFD, 0x0096, 0x009C, 0x009F, 0xFFFD, 0x00A7, 0x00F5, -/* 0008 */ 0xFFFD, 0x00A8, 0xFFFD, 0x00AE, 0x00AA, 0x00F0, 0x00A9, 0xFFFD, -/* 0010 */ 0x00F8, 0x00F1, 0x00FD, 0x00FC, 0xFFFD, 0x00E6, 0x00F4, 0x00FA, -/* 0018 */ 0xFFFD, 0x00FB, 0xFFFD, 0x00AF, 0x00AC, 0x00AB, 0x00F3, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008E, 0x008F, 0x0092, 0xFFFD, -/* 0028 */ 0xFFFD, 0x0090, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00E0, 0xFFFD, 0x00E5, 0x0099, 0x009E, -/* 0038 */ 0x009D, 0xFFFD, 0xFFFD, 0xFFFD, 0x009A, 0xFFFD, 0xFFFD, 0x00E1, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0084, 0x0086, 0x0091, 0xFFFD, -/* 0048 */ 0xFFFD, 0x0082, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00A2, 0xFFFD, 0x00E4, 0x0094, 0x00F6, -/* 0058 */ 0x009B, 0xFFFD, 0xFFFD, 0xFFFD, 0x0081, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0x00A0, 0x0083, 0xFFFD, 0xFFFD, 0x00B5, 0x00D0, 0x0080, 0x0087, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B6, 0x00D1, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xFFFD, 0x00ED, 0x0089, 0xFFFD, 0xFFFD, 0x00B8, 0x00D3, -/* 0078 */ 0x00B7, 0x00D2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0x0095, 0x0085, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00A1, 0x008C, 0xFFFD, 0xFFFD, 0x00BD, 0x00D4, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E8, 0x00E9, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00EA, 0x00EB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00AD, 0x0088, 0x00E3, 0x00E7, 0x00EE, 0x00EC, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E2, 0x0093, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008A, 0x008B, -/* 00B8 */ 0xFFFD, 0xFFFD, 0x0097, 0x0098, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0x00BE, 0x00D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0x00C7, 0x00D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0x00C6, 0x00D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D8 */ 0xFFFD, 0x008D, 0x00A5, 0x00A3, 0x00A4, 0x00CF, 0x00D8, 0x00EF, -/* 00E0 */ 0xFFFD, 0xFFFD, 0x00F2, 0x00A6, 0x00F7, 0x00C4, 0xFFFD, 0x00B3, -/* 00E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xFFFD, 0x00DA, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0x00C0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, 0xFFFD, 0xFFFD, -/* 0100 */ 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0108 */ 0xFFFD, 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0110 */ 0xFFFD, 0x00C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0118 */ 0xFFFD, 0x00C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0120 */ 0xFFFD, 0x00C5, 0x00CD, 0x00BA, 0xFFFD, 0xFFFD, 0x00C9, 0xFFFD, -/* 0128 */ 0xFFFD, 0x00BB, 0xFFFD, 0xFFFD, 0x00C8, 0xFFFD, 0xFFFD, 0x00BC, -/* 0130 */ 0xFFFD, 0xFFFD, 0x00CC, 0xFFFD, 0xFFFD, 0x00B9, 0xFFFD, 0xFFFD, -/* 0138 */ 0x00CB, 0xFFFD, 0xFFFD, 0x00CA, 0xFFFD, 0xFFFD, 0x00CE, 0x00DF, -/* 0140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DB, -/* 0148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DE, -/* 0150 */ 0x00B0, 0x00B1, 0x00B2, -/* End of table Total Length = 0x0172 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp850.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp850.uf deleted file mode 100644 index 739e1feaedf..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp850.uf +++ /dev/null @@ -1,181 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00FF 00AD 00BD 009C 00CF 00BE 00DD 00F5 - 00F9 00B8 00A6 00AE 00AA 00F0 00A9 00EE - 00F8 00F1 00FD 00FC 00EF 00E6 00F4 00FA - 00F7 00FB 00A7 00AF 00AC 00AB 00F3 00A8 - 00B7 00B5 00B6 00C7 008E 008F 0092 0080 - 00D4 0090 00D2 00D3 00DE 00D6 00D7 00D8 - 00D1 00A5 00E3 00E0 00E2 00E5 0099 009E - 009D 00EB 00E9 00EA 009A 00ED 00E8 00E1 - 0085 00A0 0083 00C6 0084 0086 0091 0087 - 008A 0082 0088 0089 008D 00A1 008C 008B - 00D0 00A4 0095 00A2 0093 00E4 0094 00F6 - 009B 0097 00A3 0096 0081 00EC 00E7 0098 -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 0131 - destBegin = 00D5 -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 0192 - destBegin = 009F -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 2017 - destBegin = 00F2 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 0060 - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 009D - Mapping = - 00CD 00BA FFFD FFFD 00C9 FFFD FFFD 00BB - FFFD FFFD 00C8 FFFD FFFD 00BC FFFD FFFD - 00CC FFFD FFFD 00B9 FFFD FFFD 00CB FFFD - FFFD 00CA FFFD FFFD 00CE -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 00BA - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00B0 00B1 00B2 -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 0008 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0004 */ -/* Total of Format 2 : 0x0004 */ -/* Total of Format 3 : 0x0000 */ - -0x2210, 0x1112, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00FF, 0x0000, -/* 0002 */ 0x0131, 0x0000, 0x00D5, -/* 0003 */ 0x0192, 0x0000, 0x009F, -/* 0004 */ 0x2017, 0x0000, 0x00F2, -/* 0005 */ 0x2500, 0x253C, 0x0060, -/* 0006 */ 0x2550, 0x256C, 0x009D, -/* 0007 */ 0x2580, 0x2593, 0x00BA, -/* 0008 */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x0022 Start of MappingTable */ - -/* 0000 */ 0x00FF, 0x00AD, 0x00BD, 0x009C, 0x00CF, 0x00BE, 0x00DD, 0x00F5, -/* 0008 */ 0x00F9, 0x00B8, 0x00A6, 0x00AE, 0x00AA, 0x00F0, 0x00A9, 0x00EE, -/* 0010 */ 0x00F8, 0x00F1, 0x00FD, 0x00FC, 0x00EF, 0x00E6, 0x00F4, 0x00FA, -/* 0018 */ 0x00F7, 0x00FB, 0x00A7, 0x00AF, 0x00AC, 0x00AB, 0x00F3, 0x00A8, -/* 0020 */ 0x00B7, 0x00B5, 0x00B6, 0x00C7, 0x008E, 0x008F, 0x0092, 0x0080, -/* 0028 */ 0x00D4, 0x0090, 0x00D2, 0x00D3, 0x00DE, 0x00D6, 0x00D7, 0x00D8, -/* 0030 */ 0x00D1, 0x00A5, 0x00E3, 0x00E0, 0x00E2, 0x00E5, 0x0099, 0x009E, -/* 0038 */ 0x009D, 0x00EB, 0x00E9, 0x00EA, 0x009A, 0x00ED, 0x00E8, 0x00E1, -/* 0040 */ 0x0085, 0x00A0, 0x0083, 0x00C6, 0x0084, 0x0086, 0x0091, 0x0087, -/* 0048 */ 0x008A, 0x0082, 0x0088, 0x0089, 0x008D, 0x00A1, 0x008C, 0x008B, -/* 0050 */ 0x00D0, 0x00A4, 0x0095, 0x00A2, 0x0093, 0x00E4, 0x0094, 0x00F6, -/* 0058 */ 0x009B, 0x0097, 0x00A3, 0x0096, 0x0081, 0x00EC, 0x00E7, 0x0098, -/* 0060 */ 0x00C4, 0xFFFD, 0x00B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0x00D9, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C5, 0x00CD, 0x00BA, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00C9, 0xFFFD, 0xFFFD, 0x00BB, 0xFFFD, 0xFFFD, 0x00C8, -/* 00A8 */ 0xFFFD, 0xFFFD, 0x00BC, 0xFFFD, 0xFFFD, 0x00CC, 0xFFFD, 0xFFFD, -/* 00B0 */ 0x00B9, 0xFFFD, 0xFFFD, 0x00CB, 0xFFFD, 0xFFFD, 0x00CA, 0xFFFD, -/* 00B8 */ 0xFFFD, 0x00CE, 0x00DF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0x00DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00B0, 0x00B1, 0x00B2, -/* End of table Total Length = 0x00F0 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp852.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp852.uf deleted file mode 100644 index a97651f2e00..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp852.uf +++ /dev/null @@ -1,212 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 011B - mappingOffset = 0000 - Mapping = - 00FF FFFD FFFD FFFD 00CF FFFD FFFD 00F5 - 00F9 FFFD FFFD 00AE 00AA 00F0 FFFD FFFD - 00F8 FFFD FFFD FFFD 00EF FFFD FFFD FFFD - 00F7 FFFD FFFD 00AF FFFD FFFD FFFD FFFD - FFFD 00B5 00B6 FFFD 008E FFFD FFFD 0080 - FFFD 0090 FFFD 00D3 FFFD 00D6 00D7 FFFD - FFFD FFFD FFFD 00E0 00E2 FFFD 0099 009E - FFFD FFFD 00E9 FFFD 009A 00ED FFFD 00E1 - FFFD 00A0 0083 FFFD 0084 FFFD FFFD 0087 - FFFD 0082 FFFD 0089 FFFD 00A1 008C FFFD - FFFD FFFD FFFD 00A2 0093 FFFD 0094 00F6 - FFFD FFFD 00A3 FFFD 0081 00EC FFFD FFFD - FFFD FFFD 00C6 00C7 00A4 00A5 008F 0086 - FFFD FFFD FFFD FFFD 00AC 009F 00D2 00D4 - 00D1 00D0 FFFD FFFD FFFD FFFD FFFD FFFD - 00A8 00A9 00B7 00D8 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0139 - srcEnd = 017E - mappingOffset = 007C - Mapping = - 0091 0092 FFFD FFFD 0095 0096 FFFD FFFD - 009D 0088 00E3 00E4 FFFD FFFD 00D5 00E5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 008A - 008B FFFD FFFD 00E8 00EA FFFD FFFD 00FC - 00FD 0097 0098 FFFD FFFD 00B8 00AD 00E6 - 00E7 00DD 00EE 009B 009C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00DE 0085 00EB - 00FB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 008D 00AB 00BD 00BE 00A6 00A7 -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 02C7 - destBegin = 00F3 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 00C2 - Mapping = - 00F4 00FA FFFD 00F2 FFFD 00F1 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 00C8 - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 0105 - Mapping = - 00CD 00BA FFFD FFFD 00C9 FFFD FFFD 00BB - FFFD FFFD 00C8 FFFD FFFD 00BC FFFD FFFD - 00CC FFFD FFFD 00B9 FFFD FFFD 00CB FFFD - FFFD 00CA FFFD FFFD 00CE -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 0122 - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00B0 00B1 00B2 -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 0008 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0006 */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x2110, 0x1111, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x011B, 0x0000, -/* 0002 */ 0x0139, 0x017E, 0x007C, -/* 0003 */ 0x02C7, 0x0000, 0x00F3, -/* 0004 */ 0x02D8, 0x02DD, 0x00C2, -/* 0005 */ 0x2500, 0x253C, 0x00C8, -/* 0006 */ 0x2550, 0x256C, 0x0105, -/* 0007 */ 0x2580, 0x2593, 0x0122, -/* 0008 */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x0022 Start of MappingTable */ - -/* 0000 */ 0x00FF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00CF, 0xFFFD, 0xFFFD, 0x00F5, -/* 0008 */ 0x00F9, 0xFFFD, 0xFFFD, 0x00AE, 0x00AA, 0x00F0, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00F8, 0xFFFD, 0xFFFD, 0xFFFD, 0x00EF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0x00F7, 0xFFFD, 0xFFFD, 0x00AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0xFFFD, 0x00B5, 0x00B6, 0xFFFD, 0x008E, 0xFFFD, 0xFFFD, 0x0080, -/* 0028 */ 0xFFFD, 0x0090, 0xFFFD, 0x00D3, 0xFFFD, 0x00D6, 0x00D7, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00E0, 0x00E2, 0xFFFD, 0x0099, 0x009E, -/* 0038 */ 0xFFFD, 0xFFFD, 0x00E9, 0xFFFD, 0x009A, 0x00ED, 0xFFFD, 0x00E1, -/* 0040 */ 0xFFFD, 0x00A0, 0x0083, 0xFFFD, 0x0084, 0xFFFD, 0xFFFD, 0x0087, -/* 0048 */ 0xFFFD, 0x0082, 0xFFFD, 0x0089, 0xFFFD, 0x00A1, 0x008C, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00A2, 0x0093, 0xFFFD, 0x0094, 0x00F6, -/* 0058 */ 0xFFFD, 0xFFFD, 0x00A3, 0xFFFD, 0x0081, 0x00EC, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0x00C6, 0x00C7, 0x00A4, 0x00A5, 0x008F, 0x0086, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AC, 0x009F, 0x00D2, 0x00D4, -/* 0070 */ 0x00D1, 0x00D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0x00A8, 0x00A9, 0x00B7, 0x00D8, 0x0091, 0x0092, 0xFFFD, 0xFFFD, -/* 0080 */ 0x0095, 0x0096, 0xFFFD, 0xFFFD, 0x009D, 0x0088, 0x00E3, 0x00E4, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00D5, 0x00E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x008A, 0x008B, 0xFFFD, 0xFFFD, 0x00E8, -/* 0098 */ 0x00EA, 0xFFFD, 0xFFFD, 0x00FC, 0x00FD, 0x0097, 0x0098, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00B8, 0x00AD, 0x00E6, 0x00E7, 0x00DD, 0x00EE, 0x009B, -/* 00A8 */ 0x009C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0x00DE, 0x0085, 0x00EB, 0x00FB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008D, 0x00AB, 0x00BD, 0x00BE, -/* 00C0 */ 0x00A6, 0x00A7, 0x00F4, 0x00FA, 0xFFFD, 0x00F2, 0xFFFD, 0x00F1, -/* 00C8 */ 0x00C4, 0xFFFD, 0x00B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D8 */ 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E0 */ 0x00D9, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C5, 0x00CD, 0x00BA, 0xFFFD, -/* 0108 */ 0xFFFD, 0x00C9, 0xFFFD, 0xFFFD, 0x00BB, 0xFFFD, 0xFFFD, 0x00C8, -/* 0110 */ 0xFFFD, 0xFFFD, 0x00BC, 0xFFFD, 0xFFFD, 0x00CC, 0xFFFD, 0xFFFD, -/* 0118 */ 0x00B9, 0xFFFD, 0xFFFD, 0x00CB, 0xFFFD, 0xFFFD, 0x00CA, 0xFFFD, -/* 0120 */ 0xFFFD, 0x00CE, 0x00DF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, 0xFFFD, -/* 0128 */ 0xFFFD, 0xFFFD, 0x00DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00B0, 0x00B1, 0x00B2, -/* End of table Total Length = 0x0158 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp855.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp855.uf deleted file mode 100644 index f8edaa5f307..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp855.uf +++ /dev/null @@ -1,187 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00AD - mappingOffset = 0000 - Mapping = - 00FF FFFD FFFD FFFD 00CF FFFD FFFD 00FD - FFFD FFFD FFFD 00AE FFFD 00F0 -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 00BB - destBegin = 00AF -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0401 - srcEnd = 045F - mappingOffset = 000E - Mapping = - 0085 0081 0083 0087 0089 008B 008D 008F - 0091 0093 0095 0097 FFFD 0099 009B 00A1 - 00A3 00EC 00AD 00A7 00A9 00EA 00F4 00B8 - 00BE 00C7 00D1 00D3 00D5 00D7 00DD 00E2 - 00E4 00E6 00E8 00AB 00B6 00A5 00FC 00F6 - 00FA 009F 00F2 00EE 00F8 009D 00E0 00A0 - 00A2 00EB 00AC 00A6 00A8 00E9 00F3 00B7 - 00BD 00C6 00D0 00D2 00D4 00D6 00D8 00E1 - 00E3 00E5 00E7 00AA 00B5 00A4 00FB 00F5 - 00F9 009E 00F1 00ED 00F7 009C 00DE FFFD - 0084 0080 0082 0086 0088 008A 008C 008E - 0090 0092 0094 0096 FFFD 0098 009A -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 2116 - destBegin = 00EF -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 006D - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 00AA - Mapping = - 00CD 00BA FFFD FFFD 00C9 FFFD FFFD 00BB - FFFD FFFD 00C8 FFFD FFFD 00BC FFFD FFFD - 00CC FFFD FFFD 00B9 FFFD FFFD 00CB FFFD - FFFD 00CA FFFD FFFD 00CE -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 00C7 - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00B0 00B1 00B2 -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 0008 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0005 */ -/* Total of Format 2 : 0x0003 */ -/* Total of Format 3 : 0x0000 */ - -0x1210, 0x1112, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00AD, 0x0000, -/* 0002 */ 0x00BB, 0x0000, 0x00AF, -/* 0003 */ 0x0401, 0x045F, 0x000E, -/* 0004 */ 0x2116, 0x0000, 0x00EF, -/* 0005 */ 0x2500, 0x253C, 0x006D, -/* 0006 */ 0x2550, 0x256C, 0x00AA, -/* 0007 */ 0x2580, 0x2593, 0x00C7, -/* 0008 */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x0022 Start of MappingTable */ - -/* 0000 */ 0x00FF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00CF, 0xFFFD, 0xFFFD, 0x00FD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00AE, 0xFFFD, 0x00F0, 0x0085, 0x0081, -/* 0010 */ 0x0083, 0x0087, 0x0089, 0x008B, 0x008D, 0x008F, 0x0091, 0x0093, -/* 0018 */ 0x0095, 0x0097, 0xFFFD, 0x0099, 0x009B, 0x00A1, 0x00A3, 0x00EC, -/* 0020 */ 0x00AD, 0x00A7, 0x00A9, 0x00EA, 0x00F4, 0x00B8, 0x00BE, 0x00C7, -/* 0028 */ 0x00D1, 0x00D3, 0x00D5, 0x00D7, 0x00DD, 0x00E2, 0x00E4, 0x00E6, -/* 0030 */ 0x00E8, 0x00AB, 0x00B6, 0x00A5, 0x00FC, 0x00F6, 0x00FA, 0x009F, -/* 0038 */ 0x00F2, 0x00EE, 0x00F8, 0x009D, 0x00E0, 0x00A0, 0x00A2, 0x00EB, -/* 0040 */ 0x00AC, 0x00A6, 0x00A8, 0x00E9, 0x00F3, 0x00B7, 0x00BD, 0x00C6, -/* 0048 */ 0x00D0, 0x00D2, 0x00D4, 0x00D6, 0x00D8, 0x00E1, 0x00E3, 0x00E5, -/* 0050 */ 0x00E7, 0x00AA, 0x00B5, 0x00A4, 0x00FB, 0x00F5, 0x00F9, 0x009E, -/* 0058 */ 0x00F1, 0x00ED, 0x00F7, 0x009C, 0x00DE, 0xFFFD, 0x0084, 0x0080, -/* 0060 */ 0x0082, 0x0086, 0x0088, 0x008A, 0x008C, 0x008E, 0x0090, 0x0092, -/* 0068 */ 0x0094, 0x0096, 0xFFFD, 0x0098, 0x009A, 0x00C4, 0xFFFD, 0x00B3, -/* 0070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0x00DA, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0x00C0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0x00C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0x00C5, 0x00CD, 0x00BA, 0xFFFD, 0xFFFD, 0x00C9, 0xFFFD, -/* 00B0 */ 0xFFFD, 0x00BB, 0xFFFD, 0xFFFD, 0x00C8, 0xFFFD, 0xFFFD, 0x00BC, -/* 00B8 */ 0xFFFD, 0xFFFD, 0x00CC, 0xFFFD, 0xFFFD, 0x00B9, 0xFFFD, 0xFFFD, -/* 00C0 */ 0x00CB, 0xFFFD, 0xFFFD, 0x00CA, 0xFFFD, 0xFFFD, 0x00CE, 0x00DF, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DB, -/* 00D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D8 */ 0x00B0, 0x00B1, 0x00B2, -/* End of table Total Length = 0x00FD * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp857.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp857.uf deleted file mode 100644 index 39617b228ec..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp857.uf +++ /dev/null @@ -1,201 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00FF 00AD 00BD 009C 00CF 00BE 00DD 00F5 - 00F9 00B8 00D1 00AE 00AA 00F0 00A9 00EE - 00F8 00F1 00FD 00FC 00EF 00E6 00F4 00FA - 00F7 00FB 00D0 00AF 00AC 00AB 00F3 00A8 - 00B7 00B5 00B6 00C7 008E 008F 0092 0080 - 00D4 0090 00D2 00D3 00DE 00D6 00D7 00D8 - FFFD 00A5 00E3 00E0 00E2 00E5 0099 00E8 - 009D 00EB 00E9 00EA 009A FFFD FFFD 00E1 - 0085 00A0 0083 00C6 0084 0086 0091 0087 - 008A 0082 0088 0089 00EC 00A1 008C 008B - FFFD 00A4 0095 00A2 0093 00E4 0094 00F6 - 009B 0097 00A3 0096 0081 FFFD FFFD 00ED -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 011E - srcEnd = 011F - mappingOffset = 0060 - Mapping = - 00A6 00A7 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0130 - srcEnd = 0131 - mappingOffset = 0062 - Mapping = - 0098 008D -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 015E - srcEnd = 015F - mappingOffset = 0064 - Mapping = - 009E 009F -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 0066 - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 00A3 - Mapping = - 00CD 00BA FFFD FFFD 00C9 FFFD FFFD 00BB - FFFD FFFD 00C8 FFFD FFFD 00BC FFFD FFFD - 00CC FFFD FFFD 00B9 FFFD FFFD 00CB FFFD - FFFD 00CA FFFD FFFD 00CE -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 00C0 - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00B0 00B1 00B2 -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = F8BB - srcEnd = F8BD - mappingOffset = 00D4 - Mapping = - 00D5 00E7 00F2 -End of Item 0009 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0025, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x1110, 0x1111, 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00FF, 0x0000, -/* 0002 */ 0x011E, 0x011F, 0x0060, -/* 0003 */ 0x0130, 0x0131, 0x0062, -/* 0004 */ 0x015E, 0x015F, 0x0064, -/* 0005 */ 0x2500, 0x253C, 0x0066, -/* 0006 */ 0x2550, 0x256C, 0x00A3, -/* 0007 */ 0x2580, 0x2593, 0x00C0, -/* 0008 */ 0x25A0, 0x0000, 0x00FE, -/* 0009 */ 0xF8BB, 0xF8BD, 0x00D4, -/*-------------------------------------------------------*/ -/* Offset=0x0025 Start of MappingTable */ - -/* 0000 */ 0x00FF, 0x00AD, 0x00BD, 0x009C, 0x00CF, 0x00BE, 0x00DD, 0x00F5, -/* 0008 */ 0x00F9, 0x00B8, 0x00D1, 0x00AE, 0x00AA, 0x00F0, 0x00A9, 0x00EE, -/* 0010 */ 0x00F8, 0x00F1, 0x00FD, 0x00FC, 0x00EF, 0x00E6, 0x00F4, 0x00FA, -/* 0018 */ 0x00F7, 0x00FB, 0x00D0, 0x00AF, 0x00AC, 0x00AB, 0x00F3, 0x00A8, -/* 0020 */ 0x00B7, 0x00B5, 0x00B6, 0x00C7, 0x008E, 0x008F, 0x0092, 0x0080, -/* 0028 */ 0x00D4, 0x0090, 0x00D2, 0x00D3, 0x00DE, 0x00D6, 0x00D7, 0x00D8, -/* 0030 */ 0xFFFD, 0x00A5, 0x00E3, 0x00E0, 0x00E2, 0x00E5, 0x0099, 0x00E8, -/* 0038 */ 0x009D, 0x00EB, 0x00E9, 0x00EA, 0x009A, 0xFFFD, 0xFFFD, 0x00E1, -/* 0040 */ 0x0085, 0x00A0, 0x0083, 0x00C6, 0x0084, 0x0086, 0x0091, 0x0087, -/* 0048 */ 0x008A, 0x0082, 0x0088, 0x0089, 0x00EC, 0x00A1, 0x008C, 0x008B, -/* 0050 */ 0xFFFD, 0x00A4, 0x0095, 0x00A2, 0x0093, 0x00E4, 0x0094, 0x00F6, -/* 0058 */ 0x009B, 0x0097, 0x00A3, 0x0096, 0x0081, 0xFFFD, 0xFFFD, 0x00ED, -/* 0060 */ 0x00A6, 0x00A7, 0x0098, 0x008D, 0x009E, 0x009F, 0x00C4, 0xFFFD, -/* 0068 */ 0x00B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xFFFD, 0x00DA, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BF, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0x00C0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0x00C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0x00C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0x00C5, 0x00CD, 0x00BA, 0xFFFD, 0xFFFD, 0x00C9, -/* 00A8 */ 0xFFFD, 0xFFFD, 0x00BB, 0xFFFD, 0xFFFD, 0x00C8, 0xFFFD, 0xFFFD, -/* 00B0 */ 0x00BC, 0xFFFD, 0xFFFD, 0x00CC, 0xFFFD, 0xFFFD, 0x00B9, 0xFFFD, -/* 00B8 */ 0xFFFD, 0x00CB, 0xFFFD, 0xFFFD, 0x00CA, 0xFFFD, 0xFFFD, 0x00CE, -/* 00C0 */ 0x00DF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0x00DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0x00B0, 0x00B1, 0x00B2, 0x00D5, 0x00E7, 0x00F2, -/* End of table Total Length = 0x00FC * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp860.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp860.uf deleted file mode 100644 index 9ff23ee560d..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp860.uf +++ /dev/null @@ -1,238 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00FC - mappingOffset = 0000 - Mapping = - 00FF 00AD 009B 009C FFFD FFFD FFFD FFFD - FFFD FFFD 00A6 00AE 00AA FFFD FFFD FFFD - 00F8 00F1 00FD FFFD FFFD 00E6 FFFD 00FA - FFFD FFFD 00A7 00AF 00AC 00AB FFFD 00A8 - 0091 0086 008F 008E FFFD FFFD FFFD 0080 - 0092 0090 0089 FFFD 0098 008B FFFD FFFD - FFFD 00A5 00A9 009F 008C 0099 FFFD FFFD - FFFD 009D 0096 FFFD 009A FFFD FFFD 00E1 - 0085 00A0 0083 0084 FFFD FFFD FFFD 0087 - 008A 0082 0088 FFFD 008D 00A1 FFFD FFFD - FFFD 00A4 0095 00A2 0093 0094 FFFD 00F6 - FFFD 0097 00A3 FFFD 0081 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0393 - srcEnd = 03C6 - mappingOffset = 005D - Mapping = - 00E2 FFFD FFFD FFFD FFFD 00E9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00E4 FFFD FFFD 00E8 FFFD FFFD 00EA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 00E0 FFFD - FFFD 00EB 00EE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00E3 FFFD FFFD - 00E5 00E7 FFFD 00ED -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 207F - destBegin = 00FC -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 20A7 - destBegin = 009E -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 2219 - srcEnd = 2229 - mappingOffset = 0091 - Mapping = - 00F9 00FB FFFD FFFD FFFD 00EC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00EF -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 2248 - destBegin = 00F7 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 2261 - srcEnd = 2265 - mappingOffset = 00A2 - Mapping = - 00F0 FFFD FFFD 00F3 00F2 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 2320 - srcEnd = 2321 - mappingOffset = 00A7 - Mapping = - 00F4 00F5 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 00A9 - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 00E6 - Mapping = - 00CD 00BA 00D5 00D6 00C9 00B8 00B7 00BB - 00D4 00D3 00C8 00BE 00BD 00BC 00C6 00C7 - 00CC 00B5 00B6 00B9 00D1 00D2 00CB 00CF - 00D0 00CA 00D8 00D7 00CE -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 0103 - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD 00DD FFFD FFFD FFFD - 00DE 00B0 00B1 00B2 -End of Item 000B - -Begin of Item 000C - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 000C - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000D, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x002F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x0004 */ -/* Total of Format 3 : 0x0000 */ - -0x2110, 0x1212, 0x1111, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00FC, 0x0000, -/* 0002 */ 0x0393, 0x03C6, 0x005D, -/* 0003 */ 0x207F, 0x0000, 0x00FC, -/* 0004 */ 0x20A7, 0x0000, 0x009E, -/* 0005 */ 0x2219, 0x2229, 0x0091, -/* 0006 */ 0x2248, 0x0000, 0x00F7, -/* 0007 */ 0x2261, 0x2265, 0x00A2, -/* 0008 */ 0x2320, 0x2321, 0x00A7, -/* 0009 */ 0x2500, 0x253C, 0x00A9, -/* 000A */ 0x2550, 0x256C, 0x00E6, -/* 000B */ 0x2580, 0x2593, 0x0103, -/* 000C */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x002F Start of MappingTable */ - -/* 0000 */ 0x00FF, 0x00AD, 0x009B, 0x009C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0x00A6, 0x00AE, 0x00AA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00F8, 0x00F1, 0x00FD, 0xFFFD, 0xFFFD, 0x00E6, 0xFFFD, 0x00FA, -/* 0018 */ 0xFFFD, 0xFFFD, 0x00A7, 0x00AF, 0x00AC, 0x00AB, 0xFFFD, 0x00A8, -/* 0020 */ 0x0091, 0x0086, 0x008F, 0x008E, 0xFFFD, 0xFFFD, 0xFFFD, 0x0080, -/* 0028 */ 0x0092, 0x0090, 0x0089, 0xFFFD, 0x0098, 0x008B, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0x00A5, 0x00A9, 0x009F, 0x008C, 0x0099, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0x009D, 0x0096, 0xFFFD, 0x009A, 0xFFFD, 0xFFFD, 0x00E1, -/* 0040 */ 0x0085, 0x00A0, 0x0083, 0x0084, 0xFFFD, 0xFFFD, 0xFFFD, 0x0087, -/* 0048 */ 0x008A, 0x0082, 0x0088, 0xFFFD, 0x008D, 0x00A1, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0x00A4, 0x0095, 0x00A2, 0x0093, 0x0094, 0xFFFD, 0x00F6, -/* 0058 */ 0xFFFD, 0x0097, 0x00A3, 0xFFFD, 0x0081, 0x00E2, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0x00E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E4, 0xFFFD, 0xFFFD, -/* 0070 */ 0x00E8, 0xFFFD, 0xFFFD, 0x00EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00E0, 0xFFFD, 0xFFFD, 0x00EB, 0x00EE, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00E3, 0xFFFD, 0xFFFD, 0x00E5, 0x00E7, 0xFFFD, -/* 0090 */ 0x00ED, 0x00F9, 0x00FB, 0xFFFD, 0xFFFD, 0xFFFD, 0x00EC, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00EF, 0x00F0, 0xFFFD, 0xFFFD, 0x00F3, 0x00F2, 0x00F4, -/* 00A8 */ 0x00F5, 0x00C4, 0xFFFD, 0x00B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DA, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0x00D9, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B4, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C2, 0xFFFD, 0xFFFD, -/* 00D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C1, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C5, 0x00CD, 0x00BA, -/* 00E8 */ 0x00D5, 0x00D6, 0x00C9, 0x00B8, 0x00B7, 0x00BB, 0x00D4, 0x00D3, -/* 00F0 */ 0x00C8, 0x00BE, 0x00BD, 0x00BC, 0x00C6, 0x00C7, 0x00CC, 0x00B5, -/* 00F8 */ 0x00B6, 0x00B9, 0x00D1, 0x00D2, 0x00CB, 0x00CF, 0x00D0, 0x00CA, -/* 0100 */ 0x00D8, 0x00D7, 0x00CE, 0x00DF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, -/* 0108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DB, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DD, -/* 0110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DE, 0x00B0, 0x00B1, 0x00B2, -/* End of table Total Length = 0x0146 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp861.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp861.uf deleted file mode 100644 index a6c768929f8..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp861.uf +++ /dev/null @@ -1,253 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00FE - mappingOffset = 0000 - Mapping = - 00FF 00AD FFFD 009C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 00AE 00AA FFFD FFFD FFFD - 00F8 00F1 00FD FFFD FFFD 00E6 FFFD 00FA - FFFD FFFD FFFD 00AF 00AC 00AB FFFD 00A8 - FFFD 00A4 FFFD FFFD 008E 008F 0092 0080 - FFFD 0090 FFFD FFFD FFFD 00A5 FFFD FFFD - 008B FFFD FFFD 00A6 FFFD FFFD 0099 FFFD - 009D FFFD 00A7 FFFD 009A 0097 008D 00E1 - 0085 00A0 0083 FFFD 0084 0086 0091 0087 - 008A 0082 0088 0089 FFFD 00A1 FFFD FFFD - 008C FFFD FFFD 00A2 0093 FFFD 0094 00F6 - 009B FFFD 00A3 0096 0081 0098 0095 -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 0192 - destBegin = 009F -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0393 - srcEnd = 03C6 - mappingOffset = 005F - Mapping = - 00E2 FFFD FFFD FFFD FFFD 00E9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00E4 FFFD FFFD 00E8 FFFD FFFD 00EA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 00E0 FFFD - FFFD 00EB 00EE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00E3 FFFD FFFD - 00E5 00E7 FFFD 00ED -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 207F - destBegin = 00FC -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 20A7 - destBegin = 009E -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2219 - srcEnd = 2229 - mappingOffset = 0093 - Mapping = - 00F9 00FB FFFD FFFD FFFD 00EC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00EF -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 2248 - destBegin = 00F7 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 2261 - srcEnd = 2265 - mappingOffset = 00A4 - Mapping = - 00F0 FFFD FFFD 00F3 00F2 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 2310 - destBegin = 00A9 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2320 - srcEnd = 2321 - mappingOffset = 00A9 - Mapping = - 00F4 00F5 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 00AB - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 00E8 - Mapping = - 00CD 00BA 00D5 00D6 00C9 00B8 00B7 00BB - 00D4 00D3 00C8 00BE 00BD 00BC 00C6 00C7 - 00CC 00B5 00B6 00B9 00D1 00D2 00CB 00CF - 00D0 00CA 00D8 00D7 00CE -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 0105 - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD 00DD FFFD FFFD FFFD - 00DE 00B0 00B1 00B2 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 000E - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000F, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0035, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x0006 */ -/* Total of Format 3 : 0x0000 */ - -0x1210, 0x2122, 0x1121, 0x0211, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00FE, 0x0000, -/* 0002 */ 0x0192, 0x0000, 0x009F, -/* 0003 */ 0x0393, 0x03C6, 0x005F, -/* 0004 */ 0x207F, 0x0000, 0x00FC, -/* 0005 */ 0x20A7, 0x0000, 0x009E, -/* 0006 */ 0x2219, 0x2229, 0x0093, -/* 0007 */ 0x2248, 0x0000, 0x00F7, -/* 0008 */ 0x2261, 0x2265, 0x00A4, -/* 0009 */ 0x2310, 0x0000, 0x00A9, -/* 000A */ 0x2320, 0x2321, 0x00A9, -/* 000B */ 0x2500, 0x253C, 0x00AB, -/* 000C */ 0x2550, 0x256C, 0x00E8, -/* 000D */ 0x2580, 0x2593, 0x0105, -/* 000E */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x0035 Start of MappingTable */ - -/* 0000 */ 0x00FF, 0x00AD, 0xFFFD, 0x009C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00AE, 0x00AA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00F8, 0x00F1, 0x00FD, 0xFFFD, 0xFFFD, 0x00E6, 0xFFFD, 0x00FA, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00AF, 0x00AC, 0x00AB, 0xFFFD, 0x00A8, -/* 0020 */ 0xFFFD, 0x00A4, 0xFFFD, 0xFFFD, 0x008E, 0x008F, 0x0092, 0x0080, -/* 0028 */ 0xFFFD, 0x0090, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A5, 0xFFFD, 0xFFFD, -/* 0030 */ 0x008B, 0xFFFD, 0xFFFD, 0x00A6, 0xFFFD, 0xFFFD, 0x0099, 0xFFFD, -/* 0038 */ 0x009D, 0xFFFD, 0x00A7, 0xFFFD, 0x009A, 0x0097, 0x008D, 0x00E1, -/* 0040 */ 0x0085, 0x00A0, 0x0083, 0xFFFD, 0x0084, 0x0086, 0x0091, 0x0087, -/* 0048 */ 0x008A, 0x0082, 0x0088, 0x0089, 0xFFFD, 0x00A1, 0xFFFD, 0xFFFD, -/* 0050 */ 0x008C, 0xFFFD, 0xFFFD, 0x00A2, 0x0093, 0xFFFD, 0x0094, 0x00F6, -/* 0058 */ 0x009B, 0xFFFD, 0x00A3, 0x0096, 0x0081, 0x0098, 0x0095, 0x00E2, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E4, -/* 0070 */ 0xFFFD, 0xFFFD, 0x00E8, 0xFFFD, 0xFFFD, 0x00EA, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E0, 0xFFFD, 0xFFFD, -/* 0080 */ 0x00EB, 0x00EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E3, 0xFFFD, 0xFFFD, 0x00E5, -/* 0090 */ 0x00E7, 0xFFFD, 0x00ED, 0x00F9, 0x00FB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0x00EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00EF, 0x00F0, 0xFFFD, 0xFFFD, 0x00F3, -/* 00A8 */ 0x00F2, 0x00F4, 0x00F5, 0x00C4, 0xFFFD, 0x00B3, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DA, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, -/* 00C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B4, -/* 00D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C2, -/* 00D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C1, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C5, -/* 00E8 */ 0x00CD, 0x00BA, 0x00D5, 0x00D6, 0x00C9, 0x00B8, 0x00B7, 0x00BB, -/* 00F0 */ 0x00D4, 0x00D3, 0x00C8, 0x00BE, 0x00BD, 0x00BC, 0x00C6, 0x00C7, -/* 00F8 */ 0x00CC, 0x00B5, 0x00B6, 0x00B9, 0x00D1, 0x00D2, 0x00CB, 0x00CF, -/* 0100 */ 0x00D0, 0x00CA, 0x00D8, 0x00D7, 0x00CE, 0x00DF, 0xFFFD, 0xFFFD, -/* 0108 */ 0xFFFD, 0x00DC, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DB, 0xFFFD, 0xFFFD, -/* 0110 */ 0xFFFD, 0x00DD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DE, 0x00B0, 0x00B1, -/* 0118 */ 0x00B2, -/* End of table Total Length = 0x014E * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp862.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp862.uf deleted file mode 100644 index 4e347b35960..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp862.uf +++ /dev/null @@ -1,275 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 05D0 - srcEnd = 05EA - destBegin = 0080 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 00A0 - srcEnd = 00BF - mappingOffset = 0000 - Mapping = - 00FF 00AD 009B 009C FFFD 009D FFFD FFFD - FFFD FFFD 00A6 00AE 00AA FFFD FFFD FFFD - 00F8 00F1 00FD FFFD FFFD 00E6 FFFD 00FA - FFFD FFFD 00A7 00AF 00AC 00AB FFFD 00A8 -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 00D1 - destBegin = 00A5 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00DF - srcEnd = 00E1 - mappingOffset = 0020 - Mapping = - 00E1 FFFD 00A0 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00ED - srcEnd = 00FA - mappingOffset = 0023 - Mapping = - 00A1 FFFD FFFD FFFD 00A4 FFFD 00A2 FFFD - FFFD FFFD 00F6 FFFD FFFD 00A3 -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 0192 - destBegin = 009F -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 0393 - srcEnd = 03C6 - mappingOffset = 0031 - Mapping = - 00E2 FFFD FFFD FFFD FFFD 00E9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00E4 FFFD FFFD 00E8 FFFD FFFD 00EA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 00E0 FFFD - FFFD 00EB 00EE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00E3 FFFD FFFD - 00E5 00E7 FFFD 00ED -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 207F - destBegin = 00FC -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 20A7 - destBegin = 009E -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2219 - srcEnd = 2229 - mappingOffset = 0065 - Mapping = - 00F9 00FB FFFD FFFD FFFD 00EC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00EF -End of Item 000A - -Begin of Item 000B - Format 2 - srcBegin = 2248 - destBegin = 00F7 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2261 - srcEnd = 2265 - mappingOffset = 0076 - Mapping = - 00F0 FFFD FFFD 00F3 00F2 -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 2310 - destBegin = 00A9 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 2320 - srcEnd = 2321 - mappingOffset = 007B - Mapping = - 00F4 00F5 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 007D - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 00BA - Mapping = - 00CD 00BA 00D5 00D6 00C9 00B8 00B7 00BB - 00D4 00D3 00C8 00BE 00BD 00BC 00C6 00C7 - 00CC 00B5 00B6 00B9 00D1 00D2 00CB 00CF - 00D0 00CA 00D8 00D7 00CE -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 00D7 - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD 00DD FFFD FFFD FFFD - 00DE 00B0 00B1 00B2 -End of Item 0011 - -Begin of Item 0012 - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 0012 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0013, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0042, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x000A */ -/* Total of Format 2 : 0x0007 */ -/* Total of Format 3 : 0x0000 */ - -0x2100, 0x1211, 0x2122, 0x1121, 0x0211, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x05D0, 0x05EA, 0x0080, -/* 0002 */ 0x00A0, 0x00BF, 0x0000, -/* 0003 */ 0x00D1, 0x0000, 0x00A5, -/* 0004 */ 0x00DF, 0x00E1, 0x0020, -/* 0005 */ 0x00ED, 0x00FA, 0x0023, -/* 0006 */ 0x0192, 0x0000, 0x009F, -/* 0007 */ 0x0393, 0x03C6, 0x0031, -/* 0008 */ 0x207F, 0x0000, 0x00FC, -/* 0009 */ 0x20A7, 0x0000, 0x009E, -/* 000A */ 0x2219, 0x2229, 0x0065, -/* 000B */ 0x2248, 0x0000, 0x00F7, -/* 000C */ 0x2261, 0x2265, 0x0076, -/* 000D */ 0x2310, 0x0000, 0x00A9, -/* 000E */ 0x2320, 0x2321, 0x007B, -/* 000F */ 0x2500, 0x253C, 0x007D, -/* 0010 */ 0x2550, 0x256C, 0x00BA, -/* 0011 */ 0x2580, 0x2593, 0x00D7, -/* 0012 */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x0042 Start of MappingTable */ - -/* 0000 */ 0x00FF, 0x00AD, 0x009B, 0x009C, 0xFFFD, 0x009D, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0x00A6, 0x00AE, 0x00AA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00F8, 0x00F1, 0x00FD, 0xFFFD, 0xFFFD, 0x00E6, 0xFFFD, 0x00FA, -/* 0018 */ 0xFFFD, 0xFFFD, 0x00A7, 0x00AF, 0x00AC, 0x00AB, 0xFFFD, 0x00A8, -/* 0020 */ 0x00E1, 0xFFFD, 0x00A0, 0x00A1, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A4, -/* 0028 */ 0xFFFD, 0x00A2, 0xFFFD, 0xFFFD, 0xFFFD, 0x00F6, 0xFFFD, 0xFFFD, -/* 0030 */ 0x00A3, 0x00E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E9, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0xFFFD, 0x00E4, 0xFFFD, 0xFFFD, 0x00E8, 0xFFFD, 0xFFFD, 0x00EA, -/* 0048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E0, -/* 0050 */ 0xFFFD, 0xFFFD, 0x00EB, 0x00EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E3, 0xFFFD, -/* 0060 */ 0xFFFD, 0x00E5, 0x00E7, 0xFFFD, 0x00ED, 0x00F9, 0x00FB, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0x00EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00EF, 0x00F0, 0xFFFD, -/* 0078 */ 0xFFFD, 0x00F3, 0x00F2, 0x00F4, 0x00F5, 0x00C4, 0xFFFD, 0x00B3, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0x00DA, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0x00C0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0x00C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0x00C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0x00C5, 0x00CD, 0x00BA, 0x00D5, 0x00D6, 0x00C9, 0x00B8, -/* 00C0 */ 0x00B7, 0x00BB, 0x00D4, 0x00D3, 0x00C8, 0x00BE, 0x00BD, 0x00BC, -/* 00C8 */ 0x00C6, 0x00C7, 0x00CC, 0x00B5, 0x00B6, 0x00B9, 0x00D1, 0x00D2, -/* 00D0 */ 0x00CB, 0x00CF, 0x00D0, 0x00CA, 0x00D8, 0x00D7, 0x00CE, 0x00DF, -/* 00D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DB, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DE, -/* 00E8 */ 0x00B0, 0x00B1, 0x00B2, -/* End of table Total Length = 0x012D * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp863.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp863.uf deleted file mode 100644 index adcb1f8b5be..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp863.uf +++ /dev/null @@ -1,252 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00FC - mappingOffset = 0000 - Mapping = - 00FF FFFD 009B 009C 0098 FFFD 00A0 008F - 00A4 FFFD FFFD 00AE 00AA FFFD FFFD 00A7 - 00F8 00F1 00FD 00A6 00A1 00E6 0086 00FA - 00A5 FFFD FFFD 00AF 00AC 00AB 00AD FFFD - 008E FFFD 0084 FFFD FFFD FFFD FFFD 0080 - 0091 0090 0092 0094 FFFD FFFD 00A8 0095 - FFFD FFFD FFFD FFFD 0099 FFFD FFFD FFFD - FFFD 009D FFFD 009E 009A FFFD FFFD 00E1 - 0085 FFFD 0083 FFFD FFFD FFFD FFFD 0087 - 008A 0082 0088 0089 FFFD FFFD 008C 008B - FFFD FFFD FFFD 00A2 0093 FFFD FFFD 00F6 - FFFD 0097 00A3 0096 0081 -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 0192 - destBegin = 009F -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0393 - srcEnd = 03C6 - mappingOffset = 005D - Mapping = - 00E2 FFFD FFFD FFFD FFFD 00E9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00E4 FFFD FFFD 00E8 FFFD FFFD 00EA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 00E0 FFFD - FFFD 00EB 00EE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00E3 FFFD FFFD - 00E5 00E7 FFFD 00ED -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 2017 - destBegin = 008D -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 207F - destBegin = 00FC -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2219 - srcEnd = 2229 - mappingOffset = 0091 - Mapping = - 00F9 00FB FFFD FFFD FFFD 00EC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00EF -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 2248 - destBegin = 00F7 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 2261 - srcEnd = 2265 - mappingOffset = 00A2 - Mapping = - 00F0 FFFD FFFD 00F3 00F2 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 2310 - destBegin = 00A9 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2320 - srcEnd = 2321 - mappingOffset = 00A7 - Mapping = - 00F4 00F5 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 00A9 - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 00E6 - Mapping = - 00CD 00BA 00D5 00D6 00C9 00B8 00B7 00BB - 00D4 00D3 00C8 00BE 00BD 00BC 00C6 00C7 - 00CC 00B5 00B6 00B9 00D1 00D2 00CB 00CF - 00D0 00CA 00D8 00D7 00CE -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 0103 - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD 00DD FFFD FFFD FFFD - 00DE 00B0 00B1 00B2 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 000E - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000F, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0035, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x0006 */ -/* Total of Format 3 : 0x0000 */ - -0x1210, 0x2122, 0x1121, 0x0211, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00FC, 0x0000, -/* 0002 */ 0x0192, 0x0000, 0x009F, -/* 0003 */ 0x0393, 0x03C6, 0x005D, -/* 0004 */ 0x2017, 0x0000, 0x008D, -/* 0005 */ 0x207F, 0x0000, 0x00FC, -/* 0006 */ 0x2219, 0x2229, 0x0091, -/* 0007 */ 0x2248, 0x0000, 0x00F7, -/* 0008 */ 0x2261, 0x2265, 0x00A2, -/* 0009 */ 0x2310, 0x0000, 0x00A9, -/* 000A */ 0x2320, 0x2321, 0x00A7, -/* 000B */ 0x2500, 0x253C, 0x00A9, -/* 000C */ 0x2550, 0x256C, 0x00E6, -/* 000D */ 0x2580, 0x2593, 0x0103, -/* 000E */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x0035 Start of MappingTable */ - -/* 0000 */ 0x00FF, 0xFFFD, 0x009B, 0x009C, 0x0098, 0xFFFD, 0x00A0, 0x008F, -/* 0008 */ 0x00A4, 0xFFFD, 0xFFFD, 0x00AE, 0x00AA, 0xFFFD, 0xFFFD, 0x00A7, -/* 0010 */ 0x00F8, 0x00F1, 0x00FD, 0x00A6, 0x00A1, 0x00E6, 0x0086, 0x00FA, -/* 0018 */ 0x00A5, 0xFFFD, 0xFFFD, 0x00AF, 0x00AC, 0x00AB, 0x00AD, 0xFFFD, -/* 0020 */ 0x008E, 0xFFFD, 0x0084, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0080, -/* 0028 */ 0x0091, 0x0090, 0x0092, 0x0094, 0xFFFD, 0xFFFD, 0x00A8, 0x0095, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0099, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0x009D, 0xFFFD, 0x009E, 0x009A, 0xFFFD, 0xFFFD, 0x00E1, -/* 0040 */ 0x0085, 0xFFFD, 0x0083, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0087, -/* 0048 */ 0x008A, 0x0082, 0x0088, 0x0089, 0xFFFD, 0xFFFD, 0x008C, 0x008B, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00A2, 0x0093, 0xFFFD, 0xFFFD, 0x00F6, -/* 0058 */ 0xFFFD, 0x0097, 0x00A3, 0x0096, 0x0081, 0x00E2, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0x00E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E4, 0xFFFD, 0xFFFD, -/* 0070 */ 0x00E8, 0xFFFD, 0xFFFD, 0x00EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00E0, 0xFFFD, 0xFFFD, 0x00EB, 0x00EE, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00E3, 0xFFFD, 0xFFFD, 0x00E5, 0x00E7, 0xFFFD, -/* 0090 */ 0x00ED, 0x00F9, 0x00FB, 0xFFFD, 0xFFFD, 0xFFFD, 0x00EC, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00EF, 0x00F0, 0xFFFD, 0xFFFD, 0x00F3, 0x00F2, 0x00F4, -/* 00A8 */ 0x00F5, 0x00C4, 0xFFFD, 0x00B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DA, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0x00D9, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B4, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C2, 0xFFFD, 0xFFFD, -/* 00D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C1, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C5, 0x00CD, 0x00BA, -/* 00E8 */ 0x00D5, 0x00D6, 0x00C9, 0x00B8, 0x00B7, 0x00BB, 0x00D4, 0x00D3, -/* 00F0 */ 0x00C8, 0x00BE, 0x00BD, 0x00BC, 0x00C6, 0x00C7, 0x00CC, 0x00B5, -/* 00F8 */ 0x00B6, 0x00B9, 0x00D1, 0x00D2, 0x00CB, 0x00CF, 0x00D0, 0x00CA, -/* 0100 */ 0x00D8, 0x00D7, 0x00CE, 0x00DF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, -/* 0108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DB, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DD, -/* 0110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DE, 0x00B0, 0x00B1, 0x00B2, -/* End of table Total Length = 0x014C * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp864.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp864.uf deleted file mode 100644 index a7017eefa69..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp864.uf +++ /dev/null @@ -1,273 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 0024 - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0026 - srcEnd = 007F - destBegin = 0026 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0660 - srcEnd = 0669 - destBegin = 00B0 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 009B - srcEnd = 00BD - mappingOffset = 0000 - Mapping = - 009B 009C FFFD FFFD 009F 00A0 FFFD 00C0 - 00A3 00A4 FFFD 00DB FFFD FFFD FFFD FFFD - 0097 00DC 00A1 FFFD FFFD 0080 0093 FFFD - FFFD FFFD FFFD FFFD 0081 FFFD FFFD FFFD - 0098 0095 0094 -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 00D7 - destBegin = 00DE -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 00F7 - destBegin = 00DD -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 03B2 - destBegin = 0090 -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 03C6 - destBegin = 0092 -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 060C - destBegin = 00AC -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 061B - srcEnd = 061F - mappingOffset = 0023 - Mapping = - 00BB FFFD FFFD FFFD 00BF -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 0640 - destBegin = 00E0 -End of Item 000A - -Begin of Item 000B - Format 2 - srcBegin = 0651 - destBegin = 00F1 -End of Item 000B - -Begin of Item 000C - Format 2 - srcBegin = 066A - destBegin = 0025 -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2219 - srcEnd = 221E - mappingOffset = 0028 - Mapping = - 0082 0083 FFFD FFFD FFFD 0091 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 2248 - destBegin = 0096 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 002E - Mapping = - 0085 FFFD 0086 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 008D FFFD FFFD FFFD - 008C FFFD FFFD FFFD 008E FFFD FFFD FFFD - 008F FFFD FFFD FFFD 008A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0088 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0089 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 008B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0087 -End of Item 000F - -Begin of Item 0010 - Format 2 - srcBegin = 2592 - destBegin = 0084 -End of Item 0010 - -Begin of Item 0011 - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = F8BE - srcEnd = F8C0 - mappingOffset = 006B - Mapping = - 00A6 00A7 00FF -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = FE7D - srcEnd = FEFC - mappingOffset = 006E - Mapping = - 00F0 FFFD FFFD 00C1 00C2 00A2 00C3 00A5 - 00C4 FFFD FFFD FFFD FFFD 00C6 FFFD FFFD - 00C7 00A8 00A9 00C8 FFFD FFFD 00C9 FFFD - 00AA 00CA FFFD FFFD 00AB 00CB FFFD FFFD - 00AD 00CC FFFD FFFD 00AE 00CD FFFD FFFD - 00AF 00CE FFFD FFFD 00CF FFFD 00D0 FFFD - 00D1 FFFD 00D2 FFFD 00BC 00D3 FFFD FFFD - 00BD 00D4 FFFD FFFD 00BE 00D5 FFFD FFFD - 00EB 00D6 FFFD FFFD 00D7 FFFD FFFD FFFD - 00D8 FFFD FFFD FFFD 00DF 00D9 00EC 00C5 - 00EE 00DA 00F7 00ED 00BA 00E1 FFFD FFFD - 00F8 00E2 FFFD FFFD 00FC 00E3 FFFD FFFD - 00FB 00E4 FFFD FFFD 00EF 00E5 FFFD FFFD - 00F2 00E6 FFFD FFFD 00F3 00E7 00F4 FFFD - 00E8 FFFD 00E9 00F5 00FD 00EA FFFD 00F6 - 00F9 00FA 0099 009A FFFD FFFD 009D 009E -End of Item 0013 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0014, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0046, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0006 */ -/* Total of Format 2 : 0x000B */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x2222, 0x2212, 0x1212, 0x1122, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000A Start of MapCell Array */ -/* 0000 */ 0x0000, 0x0024, 0x0000, -/* 0001 */ 0x0026, 0x007F, 0x0026, -/* 0002 */ 0x0660, 0x0669, 0x00B0, -/* 0003 */ 0x009B, 0x00BD, 0x0000, -/* 0004 */ 0x00D7, 0x0000, 0x00DE, -/* 0005 */ 0x00F7, 0x0000, 0x00DD, -/* 0006 */ 0x03B2, 0x0000, 0x0090, -/* 0007 */ 0x03C6, 0x0000, 0x0092, -/* 0008 */ 0x060C, 0x0000, 0x00AC, -/* 0009 */ 0x061B, 0x061F, 0x0023, -/* 000A */ 0x0640, 0x0000, 0x00E0, -/* 000B */ 0x0651, 0x0000, 0x00F1, -/* 000C */ 0x066A, 0x0000, 0x0025, -/* 000D */ 0x2219, 0x221E, 0x0028, -/* 000E */ 0x2248, 0x0000, 0x0096, -/* 000F */ 0x2500, 0x253C, 0x002E, -/* 0010 */ 0x2592, 0x0000, 0x0084, -/* 0011 */ 0x25A0, 0x0000, 0x00FE, -/* 0012 */ 0xF8BE, 0xF8C0, 0x006B, -/* 0013 */ 0xFE7D, 0xFEFC, 0x006E, -/*-------------------------------------------------------*/ -/* Offset=0x0046 Start of MappingTable */ - -/* 0000 */ 0x009B, 0x009C, 0xFFFD, 0xFFFD, 0x009F, 0x00A0, 0xFFFD, 0x00C0, -/* 0008 */ 0x00A3, 0x00A4, 0xFFFD, 0x00DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x0097, 0x00DC, 0x00A1, 0xFFFD, 0xFFFD, 0x0080, 0x0093, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0081, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0x0098, 0x0095, 0x0094, 0x00BB, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BF, -/* 0028 */ 0x0082, 0x0083, 0xFFFD, 0xFFFD, 0xFFFD, 0x0091, 0x0085, 0xFFFD, -/* 0030 */ 0x0086, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0x008D, 0xFFFD, 0xFFFD, 0xFFFD, 0x008C, 0xFFFD, -/* 0040 */ 0xFFFD, 0xFFFD, 0x008E, 0xFFFD, 0xFFFD, 0xFFFD, 0x008F, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0x008A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0x0088, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0x0089, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0x008B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0x0087, 0x00A6, 0x00A7, 0x00FF, 0x00F0, 0xFFFD, -/* 0070 */ 0xFFFD, 0x00C1, 0x00C2, 0x00A2, 0x00C3, 0x00A5, 0x00C4, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00C6, 0xFFFD, 0xFFFD, 0x00C7, 0x00A8, -/* 0080 */ 0x00A9, 0x00C8, 0xFFFD, 0xFFFD, 0x00C9, 0xFFFD, 0x00AA, 0x00CA, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00AB, 0x00CB, 0xFFFD, 0xFFFD, 0x00AD, 0x00CC, -/* 0090 */ 0xFFFD, 0xFFFD, 0x00AE, 0x00CD, 0xFFFD, 0xFFFD, 0x00AF, 0x00CE, -/* 0098 */ 0xFFFD, 0xFFFD, 0x00CF, 0xFFFD, 0x00D0, 0xFFFD, 0x00D1, 0xFFFD, -/* 00A0 */ 0x00D2, 0xFFFD, 0x00BC, 0x00D3, 0xFFFD, 0xFFFD, 0x00BD, 0x00D4, -/* 00A8 */ 0xFFFD, 0xFFFD, 0x00BE, 0x00D5, 0xFFFD, 0xFFFD, 0x00EB, 0x00D6, -/* 00B0 */ 0xFFFD, 0xFFFD, 0x00D7, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D8, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0x00DF, 0x00D9, 0x00EC, 0x00C5, 0x00EE, 0x00DA, -/* 00C0 */ 0x00F7, 0x00ED, 0x00BA, 0x00E1, 0xFFFD, 0xFFFD, 0x00F8, 0x00E2, -/* 00C8 */ 0xFFFD, 0xFFFD, 0x00FC, 0x00E3, 0xFFFD, 0xFFFD, 0x00FB, 0x00E4, -/* 00D0 */ 0xFFFD, 0xFFFD, 0x00EF, 0x00E5, 0xFFFD, 0xFFFD, 0x00F2, 0x00E6, -/* 00D8 */ 0xFFFD, 0xFFFD, 0x00F3, 0x00E7, 0x00F4, 0xFFFD, 0x00E8, 0xFFFD, -/* 00E0 */ 0x00E9, 0x00F5, 0x00FD, 0x00EA, 0xFFFD, 0x00F6, 0x00F9, 0x00FA, -/* 00E8 */ 0x0099, 0x009A, 0xFFFD, 0xFFFD, 0x009D, 0x009E, -/* End of table Total Length = 0x0134 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp865.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp865.uf deleted file mode 100644 index 36646484b32..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp865.uf +++ /dev/null @@ -1,253 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00FF 00AD FFFD 009C 00AF FFFD FFFD FFFD - FFFD FFFD 00A6 00AE 00AA FFFD FFFD FFFD - 00F8 00F1 00FD FFFD FFFD 00E6 FFFD 00FA - FFFD FFFD 00A7 FFFD 00AC 00AB FFFD 00A8 - FFFD FFFD FFFD FFFD 008E 008F 0092 0080 - FFFD 0090 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00A5 FFFD FFFD FFFD FFFD 0099 FFFD - 009D FFFD FFFD FFFD 009A FFFD FFFD 00E1 - 0085 00A0 0083 FFFD 0084 0086 0091 0087 - 008A 0082 0088 0089 008D 00A1 008C 008B - FFFD 00A4 0095 00A2 0093 FFFD 0094 00F6 - 009B 0097 00A3 0096 0081 FFFD FFFD 0098 -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 0192 - destBegin = 009F -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0393 - srcEnd = 03C6 - mappingOffset = 0060 - Mapping = - 00E2 FFFD FFFD FFFD FFFD 00E9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00E4 FFFD FFFD 00E8 FFFD FFFD 00EA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 00E0 FFFD - FFFD 00EB 00EE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00E3 FFFD FFFD - 00E5 00E7 FFFD 00ED -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 207F - destBegin = 00FC -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 20A7 - destBegin = 009E -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2219 - srcEnd = 2229 - mappingOffset = 0094 - Mapping = - 00F9 00FB FFFD FFFD FFFD 00EC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00EF -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 2248 - destBegin = 00F7 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 2261 - srcEnd = 2265 - mappingOffset = 00A5 - Mapping = - 00F0 FFFD FFFD 00F3 00F2 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 2310 - destBegin = 00A9 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2320 - srcEnd = 2321 - mappingOffset = 00AA - Mapping = - 00F4 00F5 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 00AC - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 00E9 - Mapping = - 00CD 00BA 00D5 00D6 00C9 00B8 00B7 00BB - 00D4 00D3 00C8 00BE 00BD 00BC 00C6 00C7 - 00CC 00B5 00B6 00B9 00D1 00D2 00CB 00CF - 00D0 00CA 00D8 00D7 00CE -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 0106 - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD 00DD FFFD FFFD FFFD - 00DE 00B0 00B1 00B2 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 000E - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000F, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0035, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x0006 */ -/* Total of Format 3 : 0x0000 */ - -0x1210, 0x2122, 0x1121, 0x0211, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00FF, 0x0000, -/* 0002 */ 0x0192, 0x0000, 0x009F, -/* 0003 */ 0x0393, 0x03C6, 0x0060, -/* 0004 */ 0x207F, 0x0000, 0x00FC, -/* 0005 */ 0x20A7, 0x0000, 0x009E, -/* 0006 */ 0x2219, 0x2229, 0x0094, -/* 0007 */ 0x2248, 0x0000, 0x00F7, -/* 0008 */ 0x2261, 0x2265, 0x00A5, -/* 0009 */ 0x2310, 0x0000, 0x00A9, -/* 000A */ 0x2320, 0x2321, 0x00AA, -/* 000B */ 0x2500, 0x253C, 0x00AC, -/* 000C */ 0x2550, 0x256C, 0x00E9, -/* 000D */ 0x2580, 0x2593, 0x0106, -/* 000E */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x0035 Start of MappingTable */ - -/* 0000 */ 0x00FF, 0x00AD, 0xFFFD, 0x009C, 0x00AF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0x00A6, 0x00AE, 0x00AA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00F8, 0x00F1, 0x00FD, 0xFFFD, 0xFFFD, 0x00E6, 0xFFFD, 0x00FA, -/* 0018 */ 0xFFFD, 0xFFFD, 0x00A7, 0xFFFD, 0x00AC, 0x00AB, 0xFFFD, 0x00A8, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008E, 0x008F, 0x0092, 0x0080, -/* 0028 */ 0xFFFD, 0x0090, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0x00A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0099, 0xFFFD, -/* 0038 */ 0x009D, 0xFFFD, 0xFFFD, 0xFFFD, 0x009A, 0xFFFD, 0xFFFD, 0x00E1, -/* 0040 */ 0x0085, 0x00A0, 0x0083, 0xFFFD, 0x0084, 0x0086, 0x0091, 0x0087, -/* 0048 */ 0x008A, 0x0082, 0x0088, 0x0089, 0x008D, 0x00A1, 0x008C, 0x008B, -/* 0050 */ 0xFFFD, 0x00A4, 0x0095, 0x00A2, 0x0093, 0xFFFD, 0x0094, 0x00F6, -/* 0058 */ 0x009B, 0x0097, 0x00A3, 0x0096, 0x0081, 0xFFFD, 0xFFFD, 0x0098, -/* 0060 */ 0x00E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E9, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0x00E4, 0xFFFD, 0xFFFD, 0x00E8, 0xFFFD, 0xFFFD, 0x00EA, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E0, 0xFFFD, -/* 0080 */ 0xFFFD, 0x00EB, 0x00EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E3, 0xFFFD, 0xFFFD, -/* 0090 */ 0x00E5, 0x00E7, 0xFFFD, 0x00ED, 0x00F9, 0x00FB, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0x00EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00EF, 0x00F0, 0xFFFD, 0xFFFD, -/* 00A8 */ 0x00F3, 0x00F2, 0x00F4, 0x00F5, 0x00C4, 0xFFFD, 0x00B3, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0x00DA, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0x00C0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D8 */ 0x00C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E0 */ 0x00C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E8 */ 0x00C5, 0x00CD, 0x00BA, 0x00D5, 0x00D6, 0x00C9, 0x00B8, 0x00B7, -/* 00F0 */ 0x00BB, 0x00D4, 0x00D3, 0x00C8, 0x00BE, 0x00BD, 0x00BC, 0x00C6, -/* 00F8 */ 0x00C7, 0x00CC, 0x00B5, 0x00B6, 0x00B9, 0x00D1, 0x00D2, 0x00CB, -/* 0100 */ 0x00CF, 0x00D0, 0x00CA, 0x00D8, 0x00D7, 0x00CE, 0x00DF, 0xFFFD, -/* 0108 */ 0xFFFD, 0xFFFD, 0x00DC, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DB, 0xFFFD, -/* 0110 */ 0xFFFD, 0xFFFD, 0x00DD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DE, 0x00B0, -/* 0118 */ 0x00B1, 0x00B2, -/* End of table Total Length = 0x014F * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp866.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp866.uf deleted file mode 100644 index 66c42c33c0d..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp866.uf +++ /dev/null @@ -1,208 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0410 - srcEnd = 043F - destBegin = 0080 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0440 - srcEnd = 044F - destBegin = 00E0 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00A4 - mappingOffset = 0000 - Mapping = - 00FF FFFD FFFD FFFD 00FD -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00B0 - srcEnd = 00B7 - mappingOffset = 0005 - Mapping = - 00F8 FFFD FFFD FFFD FFFD FFFD FFFD 00FA -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 0401 - srcEnd = 040E - mappingOffset = 000D - Mapping = - 00F0 FFFD FFFD 00F2 FFFD FFFD 00F4 FFFD - FFFD FFFD FFFD FFFD FFFD 00F6 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 0451 - srcEnd = 045E - mappingOffset = 001B - Mapping = - 00F1 FFFD FFFD 00F3 FFFD FFFD 00F5 FFFD - FFFD FFFD FFFD FFFD FFFD 00F7 -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 2116 - destBegin = 00FC -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 2219 - srcEnd = 221A - mappingOffset = 0029 - Mapping = - 00F9 00FB -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 002B - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 0068 - Mapping = - 00CD 00BA 00D5 00D6 00C9 00B8 00B7 00BB - 00D4 00D3 00C8 00BE 00BD 00BC 00C6 00C7 - 00CC 00B5 00B6 00B9 00D1 00D2 00CB 00CF - 00D0 00CA 00D8 00D7 00CE -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 0085 - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD 00DD FFFD FFFD FFFD - 00DE 00B0 00B1 00B2 -End of Item 000B - -Begin of Item 000C - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 000C - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000D, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x002F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x2111, 0x1111, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0410, 0x043F, 0x0080, -/* 0002 */ 0x0440, 0x044F, 0x00E0, -/* 0003 */ 0x00A0, 0x00A4, 0x0000, -/* 0004 */ 0x00B0, 0x00B7, 0x0005, -/* 0005 */ 0x0401, 0x040E, 0x000D, -/* 0006 */ 0x0451, 0x045E, 0x001B, -/* 0007 */ 0x2116, 0x0000, 0x00FC, -/* 0008 */ 0x2219, 0x221A, 0x0029, -/* 0009 */ 0x2500, 0x253C, 0x002B, -/* 000A */ 0x2550, 0x256C, 0x0068, -/* 000B */ 0x2580, 0x2593, 0x0085, -/* 000C */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x002F Start of MappingTable */ - -/* 0000 */ 0x00FF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00FD, 0x00F8, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00FA, 0x00F0, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00F2, 0xFFFD, 0xFFFD, 0x00F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0x00F6, 0x00F1, 0xFFFD, 0xFFFD, 0x00F3, 0xFFFD, -/* 0020 */ 0xFFFD, 0x00F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0x00F7, 0x00F9, 0x00FB, 0x00C4, 0xFFFD, 0x00B3, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DA, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, -/* 0048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B4, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C2, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C1, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C5, -/* 0068 */ 0x00CD, 0x00BA, 0x00D5, 0x00D6, 0x00C9, 0x00B8, 0x00B7, 0x00BB, -/* 0070 */ 0x00D4, 0x00D3, 0x00C8, 0x00BE, 0x00BD, 0x00BC, 0x00C6, 0x00C7, -/* 0078 */ 0x00CC, 0x00B5, 0x00B6, 0x00B9, 0x00D1, 0x00D2, 0x00CB, 0x00CF, -/* 0080 */ 0x00D0, 0x00CA, 0x00D8, 0x00D7, 0x00CE, 0x00DF, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0x00DC, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DB, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0x00DD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DE, 0x00B0, 0x00B1, -/* 0098 */ 0x00B2, -/* End of table Total Length = 0x00C8 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp869.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp869.uf deleted file mode 100644 index 28b51f5d1f1..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp869.uf +++ /dev/null @@ -1,231 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 0085 - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0391 - srcEnd = 0397 - destBegin = 00A4 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = 00CF -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03B6 - srcEnd = 03C1 - destBegin = 00E0 -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 0087 - destBegin = 0087 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 0093 - srcEnd = 0094 - mappingOffset = 0000 - Mapping = - 0093 0094 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 00A0 - srcEnd = 00BD - mappingOffset = 0002 - Mapping = - 00FF FFFD FFFD 009C FFFD FFFD 008A 00F5 - 00F9 0097 FFFD 00AE 0089 00F0 FFFD FFFD - 00F8 00F1 0099 009A FFFD FFFD FFFD 0088 - FFFD FFFD FFFD 00AF FFFD 00AB -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 0384 - srcEnd = 03B5 - mappingOffset = 0020 - Mapping = - 00EF 00F7 0086 FFFD 008D 008F 0090 FFFD - 0092 FFFD 0095 0098 00A1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00AC 00AD 00B5 00B6 - 00B7 00B8 00BD 00BE 00C6 00C7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 0091 0096 - 009B 009D 009E 009F 00FC 00D6 00D7 00D8 - 00DD 00DE -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 03C2 - srcEnd = 03CE - mappingOffset = 0052 - Mapping = - 00ED 00EC 00EE 00F2 00F3 00F4 00F6 00FA - 00A0 00FB 00A2 00A3 00FD -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 2015 - srcEnd = 2019 - mappingOffset = 005F - Mapping = - 008E FFFD FFFD 008B 008C -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 0064 - Mapping = - 00C4 FFFD 00B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DA FFFD FFFD FFFD - 00BF FFFD FFFD FFFD 00C0 FFFD FFFD FFFD - 00D9 FFFD FFFD FFFD 00C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00C5 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 00A1 - Mapping = - 00CD 00BA FFFD FFFD 00C9 FFFD FFFD 00BB - FFFD FFFD 00C8 FFFD FFFD 00BC FFFD FFFD - 00CC FFFD FFFD 00B9 FFFD FFFD 00CB FFFD - FFFD 00CA FFFD FFFD 00CE -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 00BE - Mapping = - 00DF FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 00DB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00B0 00B1 00B2 -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 25A0 - destBegin = 00FE -End of Item 000D - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000E, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0032, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1112, 0x1111, 0x0021, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x0085, 0x0000, -/* 0001 */ 0x0391, 0x0397, 0x00A4, -/* 0002 */ 0x03A3, 0x03A9, 0x00CF, -/* 0003 */ 0x03B6, 0x03C1, 0x00E0, -/* 0004 */ 0x0087, 0x0000, 0x0087, -/* 0005 */ 0x0093, 0x0094, 0x0000, -/* 0006 */ 0x00A0, 0x00BD, 0x0002, -/* 0007 */ 0x0384, 0x03B5, 0x0020, -/* 0008 */ 0x03C2, 0x03CE, 0x0052, -/* 0009 */ 0x2015, 0x2019, 0x005F, -/* 000A */ 0x2500, 0x253C, 0x0064, -/* 000B */ 0x2550, 0x256C, 0x00A1, -/* 000C */ 0x2580, 0x2593, 0x00BE, -/* 000D */ 0x25A0, 0x0000, 0x00FE, -/*-------------------------------------------------------*/ -/* Offset=0x0032 Start of MappingTable */ - -/* 0000 */ 0x0093, 0x0094, 0x00FF, 0xFFFD, 0xFFFD, 0x009C, 0xFFFD, 0xFFFD, -/* 0008 */ 0x008A, 0x00F5, 0x00F9, 0x0097, 0xFFFD, 0x00AE, 0x0089, 0x00F0, -/* 0010 */ 0xFFFD, 0xFFFD, 0x00F8, 0x00F1, 0x0099, 0x009A, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0x0088, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AF, 0xFFFD, 0x00AB, -/* 0020 */ 0x00EF, 0x00F7, 0x0086, 0xFFFD, 0x008D, 0x008F, 0x0090, 0xFFFD, -/* 0028 */ 0x0092, 0xFFFD, 0x0095, 0x0098, 0x00A1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00AC, 0x00AD, 0x00B5, 0x00B6, -/* 0038 */ 0x00B7, 0x00B8, 0x00BD, 0x00BE, 0x00C6, 0x00C7, 0xFFFD, 0xFFFD, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0091, 0x0096, -/* 0048 */ 0x009B, 0x009D, 0x009E, 0x009F, 0x00FC, 0x00D6, 0x00D7, 0x00D8, -/* 0050 */ 0x00DD, 0x00DE, 0x00ED, 0x00EC, 0x00EE, 0x00F2, 0x00F3, 0x00F4, -/* 0058 */ 0x00F6, 0x00FA, 0x00A0, 0x00FB, 0x00A2, 0x00A3, 0x00FD, 0x008E, -/* 0060 */ 0xFFFD, 0xFFFD, 0x008B, 0x008C, 0x00C4, 0xFFFD, 0x00B3, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0x00DA, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0x00C0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0x00C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0x00C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0x00C5, 0x00CD, 0x00BA, 0xFFFD, 0xFFFD, 0x00C9, 0xFFFD, 0xFFFD, -/* 00A8 */ 0x00BB, 0xFFFD, 0xFFFD, 0x00C8, 0xFFFD, 0xFFFD, 0x00BC, 0xFFFD, -/* 00B0 */ 0xFFFD, 0x00CC, 0xFFFD, 0xFFFD, 0x00B9, 0xFFFD, 0xFFFD, 0x00CB, -/* 00B8 */ 0xFFFD, 0xFFFD, 0x00CA, 0xFFFD, 0xFFFD, 0x00CE, 0x00DF, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0x00DC, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DB, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B0, -/* 00D0 */ 0x00B1, 0x00B2, -/* End of table Total Length = 0x0104 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp874.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp874.uf deleted file mode 100644 index c45366ac0b9..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp874.uf +++ /dev/null @@ -1,109 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0E01 - srcEnd = 0E3A - destBegin = 00A1 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0E3F - srcEnd = 0E5B - destBegin = 00DF -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 00A0 - destBegin = 00A0 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 2013 - srcEnd = 2026 - mappingOffset = 0000 - Mapping = - 0096 0097 FFFD FFFD FFFD 0091 0092 FFFD - FFFD 0093 0094 FFFD FFFD FFFD FFFD 0095 - FFFD FFFD FFFD 0085 -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 20AC - destBegin = 0080 -End of Item 0005 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0018, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x2000, 0x0021, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0E01, 0x0E3A, 0x00A1, -/* 0002 */ 0x0E3F, 0x0E5B, 0x00DF, -/* 0003 */ 0x00A0, 0x0000, 0x00A0, -/* 0004 */ 0x2013, 0x2026, 0x0000, -/* 0005 */ 0x20AC, 0x0000, 0x0080, -/*-------------------------------------------------------*/ -/* Offset=0x0018 Start of MappingTable */ - -/* 0000 */ 0x0096, 0x0097, 0xFFFD, 0xFFFD, 0xFFFD, 0x0091, 0x0092, 0xFFFD, -/* 0008 */ 0xFFFD, 0x0093, 0x0094, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0095, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0085, -/* End of table Total Length = 0x002C * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp875.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp875.uf deleted file mode 100644 index e31069fbdfb..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp875.uf +++ /dev/null @@ -1,286 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 001F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0030 - srcEnd = 0039 - destBegin = 00F0 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0041 - srcEnd = 0049 - destBegin = 00C1 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 004A - srcEnd = 0052 - destBegin = 00D1 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0053 - srcEnd = 005A - destBegin = 00E2 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0061 - srcEnd = 0069 - destBegin = 0081 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 006A - srcEnd = 0072 - destBegin = 0091 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0073 - srcEnd = 007A - destBegin = 00A2 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 0391 - srcEnd = 0399 - destBegin = 0041 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 039A - srcEnd = 03A1 - destBegin = 0051 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 03A4 - srcEnd = 03AB - destBegin = 0062 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 03B1 - srcEnd = 03B6 - destBegin = 008A -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 03B7 - srcEnd = 03BC - destBegin = 009A -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = F8C9 - srcEnd = F8E8 - destBegin = 0020 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 0020 - srcEnd = 0040 - mappingOffset = 0000 - Mapping = - 0040 004F 007F 007B 005B 006C 0050 007D - 004D 005D 005C 004E 006B 0060 004B 0061 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 007A 005E 004C 007E 006E 006F - 007C -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 005B - srcEnd = 0060 - mappingOffset = 0021 - Mapping = - 004A 00E0 005A 005F 006D 0079 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 007B - srcEnd = 007E - mappingOffset = 0027 - Mapping = - 00C0 006A 00D0 00A1 -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 00A0 - srcEnd = 00BD - mappingOffset = 002B - Mapping = - 0074 FFFD FFFD 00B0 FFFD FFFD 00DF 00EB - 0070 00FB FFFD 00EE 00EF 00CA FFFD FFFD - 0090 00DA 00EA 00FA 00A0 FFFD FFFD 00DD - FFFD FFFD FFFD 00FE FFFD 00DB -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = 0385 - srcEnd = 0390 - mappingOffset = 0049 - Mapping = - 0080 0071 FFFD 0072 0073 0075 FFFD 0076 - FFFD 0077 0078 00CC -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 03A3 - srcEnd = 03B0 - mappingOffset = 0055 - Mapping = - 0059 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00B1 00B2 00B3 00B5 00CD -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 03BD - srcEnd = 03CE - mappingOffset = 0063 - Mapping = - 00AA 00AB 00AC 00AD 00AE 00BA 00AF 00BB - 00BC 00BD 00BE 00BF 00CB 00B4 00B8 00B6 - 00B7 00B9 -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 2015 - srcEnd = 2019 - mappingOffset = 0075 - Mapping = - 00CF FFFD FFFD 00CE 00DE -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = F8E9 - srcEnd = F8EF - mappingOffset = 007A - Mapping = - 00DC 00E1 00EC 00ED 00FC 00FD 00FF -End of Item 0016 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0017, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x004F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x000E */ -/* Total of Format 1 : 0x0009 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x1100, 0x1111, 0x0111, -/*-------------------------------------------------------*/ -/* Offset=0x000A Start of MapCell Array */ -/* 0000 */ 0x0000, 0x001F, 0x0000, -/* 0001 */ 0x0030, 0x0039, 0x00F0, -/* 0002 */ 0x0041, 0x0049, 0x00C1, -/* 0003 */ 0x004A, 0x0052, 0x00D1, -/* 0004 */ 0x0053, 0x005A, 0x00E2, -/* 0005 */ 0x0061, 0x0069, 0x0081, -/* 0006 */ 0x006A, 0x0072, 0x0091, -/* 0007 */ 0x0073, 0x007A, 0x00A2, -/* 0008 */ 0x0391, 0x0399, 0x0041, -/* 0009 */ 0x039A, 0x03A1, 0x0051, -/* 000A */ 0x03A4, 0x03AB, 0x0062, -/* 000B */ 0x03B1, 0x03B6, 0x008A, -/* 000C */ 0x03B7, 0x03BC, 0x009A, -/* 000D */ 0xF8C9, 0xF8E8, 0x0020, -/* 000E */ 0x0020, 0x0040, 0x0000, -/* 000F */ 0x005B, 0x0060, 0x0021, -/* 0010 */ 0x007B, 0x007E, 0x0027, -/* 0011 */ 0x00A0, 0x00BD, 0x002B, -/* 0012 */ 0x0385, 0x0390, 0x0049, -/* 0013 */ 0x03A3, 0x03B0, 0x0055, -/* 0014 */ 0x03BD, 0x03CE, 0x0063, -/* 0015 */ 0x2015, 0x2019, 0x0075, -/* 0016 */ 0xF8E9, 0xF8EF, 0x007A, -/*-------------------------------------------------------*/ -/* Offset=0x004F Start of MappingTable */ - -/* 0000 */ 0x0040, 0x004F, 0x007F, 0x007B, 0x005B, 0x006C, 0x0050, 0x007D, -/* 0008 */ 0x004D, 0x005D, 0x005C, 0x004E, 0x006B, 0x0060, 0x004B, 0x0061, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0x007A, 0x005E, 0x004C, 0x007E, 0x006E, 0x006F, -/* 0020 */ 0x007C, 0x004A, 0x00E0, 0x005A, 0x005F, 0x006D, 0x0079, 0x00C0, -/* 0028 */ 0x006A, 0x00D0, 0x00A1, 0x0074, 0xFFFD, 0xFFFD, 0x00B0, 0xFFFD, -/* 0030 */ 0xFFFD, 0x00DF, 0x00EB, 0x0070, 0x00FB, 0xFFFD, 0x00EE, 0x00EF, -/* 0038 */ 0x00CA, 0xFFFD, 0xFFFD, 0x0090, 0x00DA, 0x00EA, 0x00FA, 0x00A0, -/* 0040 */ 0xFFFD, 0xFFFD, 0x00DD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00FE, 0xFFFD, -/* 0048 */ 0x00DB, 0x0080, 0x0071, 0xFFFD, 0x0072, 0x0073, 0x0075, 0xFFFD, -/* 0050 */ 0x0076, 0xFFFD, 0x0077, 0x0078, 0x00CC, 0x0059, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B1, 0x00B2, -/* 0060 */ 0x00B3, 0x00B5, 0x00CD, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, -/* 0068 */ 0x00BA, 0x00AF, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0x00CB, -/* 0070 */ 0x00B4, 0x00B8, 0x00B6, 0x00B7, 0x00B9, 0x00CF, 0xFFFD, 0xFFFD, -/* 0078 */ 0x00CE, 0x00DE, 0x00DC, 0x00E1, 0x00EC, 0x00ED, 0x00FC, 0x00FD, -/* 0080 */ 0x00FF, -/* End of table Total Length = 0x00D0 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp932.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp932.uf deleted file mode 100644 index 1481cda5baf..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp932.uf +++ /dev/null @@ -1,6590 +0,0 @@ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = 839F -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = 83B0 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = 83BF -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = 83D0 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0410 - srcEnd = 0415 - destBegin = 8440 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0416 - srcEnd = 042F - destBegin = 8447 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0430 - srcEnd = 0435 - destBegin = 8470 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 0436 - srcEnd = 043D - destBegin = 8477 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 043E - srcEnd = 044F - destBegin = 8480 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2160 - srcEnd = 2169 - destBegin = FA4A -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2170 - srcEnd = 2179 - destBegin = FA40 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 2460 - srcEnd = 2473 - destBegin = 8740 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 3008 - srcEnd = 3011 - destBegin = 8171 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = 829F -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 30A1 - srcEnd = 30DF - destBegin = 8340 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 30E0 - srcEnd = 30F6 - destBegin = 8380 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = FF10 - srcEnd = FF19 - destBegin = 824F -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = FF21 - srcEnd = FF3A - destBegin = 8260 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = FF41 - srcEnd = FF5A - destBegin = 8281 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = FF61 - srcEnd = FF9F - destBegin = 00A1 -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 00A7 - srcEnd = 00B6 - mappingOffset = 0000 - Mapping = - 8198 814E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 818B 817D FFFD FFFD 814C FFFD 81F7 -End of Item 0015 - -Begin of Item 0016 - Format 2 - srcBegin = 00D7 - destBegin = 817E -End of Item 0016 - -Begin of Item 0017 - Format 2 - srcBegin = 00F7 - destBegin = 8180 -End of Item 0017 - -Begin of Item 0018 - Format 2 - srcBegin = 0401 - destBegin = 8446 -End of Item 0018 - -Begin of Item 0019 - Format 2 - srcBegin = 0451 - destBegin = 8476 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 2010 - srcEnd = 203B - mappingOffset = 0010 - Mapping = - 815D FFFD FFFD FFFD FFFD 815C FFFD FFFD - 8165 8166 FFFD FFFD 8167 8168 FFFD FFFD - 81F5 81F6 FFFD FFFD FFFD 8164 8163 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 81F1 FFFD 818C 818D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 81A6 -End of Item 001A - -Begin of Item 001B - Format 2 - srcBegin = 2103 - destBegin = 818E -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 2116 - srcEnd = 212B - mappingOffset = 003C - Mapping = - FA59 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FA5A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 81F0 -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 2190 - srcEnd = 2193 - mappingOffset = 0052 - Mapping = - 81A9 81AA 81A8 81AB -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 21D2 - srcEnd = 21D4 - mappingOffset = 0056 - Mapping = - 81CB FFFD 81CC -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 2200 - srcEnd = 223D - mappingOffset = 0059 - Mapping = - 81CD FFFD 81DD 81CE FFFD FFFD FFFD 81DE - 81B8 FFFD FFFD 81B9 FFFD FFFD FFFD FFFD - FFFD 8794 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8795 FFFD FFFD 81E5 8187 8798 - 8797 FFFD FFFD FFFD FFFD 8161 FFFD 81C8 - 81C9 879B 879C 8792 81E8 FFFD 8793 FFFD - FFFD FFFD FFFD FFFD 8188 FA5B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 81E4 -End of Item 001F - -Begin of Item 0020 - Format 2 - srcBegin = 2252 - destBegin = 8790 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 2260 - srcEnd = 226B - mappingOffset = 0097 - Mapping = - 8182 8791 FFFD FFFD FFFD FFFD 8185 8186 - FFFD FFFD 81E1 81E2 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 2282 - srcEnd = 2287 - mappingOffset = 00A3 - Mapping = - 81BC 81BD FFFD FFFD 81BA 81BB -End of Item 0022 - -Begin of Item 0023 - Format 2 - srcBegin = 22A5 - destBegin = 8796 -End of Item 0023 - -Begin of Item 0024 - Format 2 - srcBegin = 22BF - destBegin = 8799 -End of Item 0024 - -Begin of Item 0025 - Format 2 - srcBegin = 2312 - destBegin = 81DC -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 2500 - srcEnd = 254B - mappingOffset = 00A9 - Mapping = - 849F 84AA 84A0 84AB FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 84A1 FFFD FFFD 84AC - 84A2 FFFD FFFD 84AD 84A4 FFFD FFFD 84AF - 84A3 FFFD FFFD 84AE 84A5 84BA FFFD FFFD - 84B5 FFFD FFFD 84B0 84A7 84BC FFFD FFFD - 84B7 FFFD FFFD 84B2 84A6 FFFD FFFD 84B6 - 84BB FFFD FFFD 84B1 84A8 FFFD FFFD 84B8 - 84BD FFFD FFFD 84B3 84A9 FFFD FFFD 84B9 - FFFD FFFD 84BE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 84B4 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 25A0 - srcEnd = 25A1 - mappingOffset = 00F5 - Mapping = - 81A1 81A0 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 25B2 - srcEnd = 25CF - mappingOffset = 00F7 - Mapping = - 81A3 81A2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 81A5 81A4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 819F 819E FFFD FFFD - FFFD 819B FFFD FFFD 819D 819C -End of Item 0028 - -Begin of Item 0029 - Format 2 - srcBegin = 25EF - destBegin = 81FC -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 2605 - srcEnd = 2606 - mappingOffset = 0115 - Mapping = - 819A 8199 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 0117 - Mapping = - 818A FFFD 8189 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 266A - srcEnd = 266F - mappingOffset = 011A - Mapping = - 81F4 FFFD FFFD 81F3 FFFD 81F2 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 3000 - srcEnd = 301F - mappingOffset = 0120 - Mapping = - 8140 8141 8142 8156 FFFD 8158 8159 815A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 81A7 81AC 816B 816C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 8780 FFFD 8781 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 309B - srcEnd = 309E - mappingOffset = 0140 - Mapping = - 814A 814B 8154 8155 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 30FB - srcEnd = 30FE - mappingOffset = 0144 - Mapping = - 8145 815B 8152 8153 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 3231 - srcEnd = 3239 - mappingOffset = 0148 - Mapping = - FA58 878B FFFD FFFD FFFD FFFD FFFD FFFD - 878C -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 32A4 - srcEnd = 32A8 - mappingOffset = 0151 - Mapping = - 8785 8786 8787 8788 8789 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 3303 - srcEnd = 333B - mappingOffset = 0156 - Mapping = - 8765 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8769 FFFD FFFD FFFD FFFD FFFD - FFFD 8760 FFFD FFFD FFFD 8763 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8761 - 876B FFFD FFFD 876A 8764 FFFD FFFD FFFD - 876C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8766 FFFD FFFD FFFD FFFD - 876E -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 3349 - srcEnd = 3357 - mappingOffset = 018F - Mapping = - 875F 876D FFFD FFFD 8762 FFFD FFFD FFFD - 8767 FFFD FFFD FFFD FFFD FFFD 8768 -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 337B - srcEnd = 337E - mappingOffset = 019E - Mapping = - 877E 878F 878E 878D -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 338E - srcEnd = 338F - mappingOffset = 01A2 - Mapping = - 8772 8773 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 339C - srcEnd = 33A1 - mappingOffset = 01A4 - Mapping = - 876F 8770 8771 FFFD FFFD 8775 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 33C4 - srcEnd = 33CD - mappingOffset = 01AA - Mapping = - 8774 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8783 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 4E00 - srcEnd = 4E62 - mappingOffset = 01B4 - Mapping = - 88EA 929A FFFD 8EB5 FFFD FFFD FFFD 969C - 8FE4 8E4F 8FE3 89BA FFFD 9573 975E FFFD - 98A0 894E FFFD FFFD 8A8E 98A1 90A2 99C0 - 8B75 95B8 FFFD FFFD FFFD FFFD 8FE5 FFFD - FFFD 97BC FFFD FFFD FFFD FFFD 95C0 FFFD - FA68 FFFD 98A2 FFFD FFFD 9286 FFFD FFFD - FFFD 98A3 8BF8 FFFD FFFD FFFD 98A4 FFFD - 8ADB 924F FFFD 8EE5 98A5 FFFD FFFD 98A6 - FFFD FFFD 98A7 9454 FFFD 8B76 FFFD FFFD - FFFD FFFD FFFD 9456 FFFD 93E1 8CC1 9652 - FFFD FFFD FFFD FFFD FFFD E568 98A8 8FE6 - 98A9 89B3 FFFD FFFD FFFD 8BE3 8CEE 96E7 - FFFD FFFD 9BA4 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 4E71 - srcEnd = 4F1D - mappingOffset = 0217 - Mapping = - 9790 FFFD 93FB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 8AA3 FFFD 8B54 - FFFD 98AA FFFD FFFD 98AB 97B9 FFFD 975C - 9188 98AD 8E96 93F1 FFFD 98B0 FFFD FFFD - 895D 8CDD FFFD 8CDC 88E4 FFFD FFFD 986A - 9869 FFFD 8DB1 889F FFFD 98B1 98B2 98B3 - 9653 98B4 FFFD 8CF0 88E5 9692 FFFD 8B9C - FFFD FFFD 8B9D 8B9E 92E0 97BA FFFD 98B5 - FFFD FFFD 98B6 FFFD FFFD 98B7 FFFD FFFD - FFFD 906C FFFD FFFD FFFD FFFD FFFD 8F59 - 906D 98BC FFFD 98BA FFFD 98BB 8B77 FFFD - FFFD 8DA1 89EE FFFD 98B9 98B8 95A7 FFFD - FFFD FFFD FFFD 8E65 8E64 91BC 98BD 9574 - 90E5 FFFD FFFD FFFD 8157 98BE 98C0 FFFD - FA69 FFFD 91E3 97DF 88C8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 98BF 89BC FFFD 8BC2 - FFFD 9287 FFFD FFFD FFFD 8C8F 98C1 FFFD - FFFD FFFD 9443 FA6A FFFD FFFD FFFD FA6B - 8AE9 FFFD FA6C FFFD FFFD FFFD FFFD FFFD - 98C2 88C9 FFFD FFFD 8CDE 8AEA 959A 94B0 - 8B78 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 89EF FFFD 98E5 9360 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 4F2F - srcEnd = 509A - mappingOffset = 02C4 - Mapping = - 948C 98C4 FFFD FFFD FFFD 94BA FFFD 97E0 - FFFD 904C FA6D 8E66 FFFD 8E97 89BE FFFD - FFFD FFFD FFFD FFFD 92CF FFFD FFFD 9241 - 98C8 FFFD FFFD FFFD FFFD FFFD 88CA 92E1 - 8F5A 8DB2 9743 FFFD 91CC FFFD 89BD FA6E - 98C7 FFFD 975D 98C3 98C5 8DEC 98C6 9B43 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 98CE FFFD FFFD FFFD FFFD FFFD - 98D1 98CF FFFD FFFD 89C0 FFFD 95B9 98C9 - FFFD FFFD FFFD FFFD 98CD 8CF1 FFFD FFFD - 8E67 FFFD FFFD FFFD 8AA4 FFFD FFFD 98D2 - FFFD 98CA FFFD FA70 97E1 FFFD 8E98 FFFD - 98CB FFFD 98D0 FA6F FFFD FA72 FFFD 98D3 - FFFD 98CC FFFD FA71 8B9F FFFD 88CB FFFD - FFFD 8BA0 89BF FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9B44 FFFD 9699 958E - 8CF2 FFFD FFFD FFFD FFFD FFFD 904E 97B5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 95D6 FFFD FFFD 8C57 91A3 89E2 FFFD FFFD - FFFD FFFD FA61 8F72 FFFD FFFD FA73 98D7 - FFFD 98DC 98DA FFFD FFFD 98D5 FFFD FFFD - 91AD 98D8 FFFD 98DB 98D9 FFFD 95DB FFFD - 98D6 FFFD 904D FFFD 9693 98DD 98DE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8F43 - 98EB FFFD FFFD FFFD 946F FFFD 9555 98E6 - FFFD 95EE FFFD 89B4 FFFD FFFD FFFD 98EA - FA76 FFFD FFFD FFFD FFFD FFFD 98E4 98ED - FFFD FFFD 9171 FFFD 8CC2 FFFD 947B FFFD - E0C5 FFFD 98EC 937C FFFD 98E1 FFFD 8CF4 - FFFD FFFD 8CF3 98DF FFFD FFFD FFFD FA77 - 8ED8 FFFD 98E7 FA75 95ED 926C 98E3 8C91 - FFFD 98E0 98E8 98E2 97CF 98E9 9860 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8BE4 - FFFD FFFD 8C90 FFFD FFFD FFFD FFFD FFFD - FFFD FA74 FFFD FA7A 98EE FFFD FFFD FA78 - 98EF 98F3 88CC FFFD FFFD FFFD FFFD FFFD - 95CE 98F2 FFFD FFFD FFFD FFFD 98F1 98F5 - FFFD FFFD FFFD 98F4 FFFD 92E2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8C92 FFFD - FFFD FFFD FFFD FFFD FFFD 98F6 FFFD FFFD - FFFD FA79 FFFD 8EC3 FFFD 91A4 92E3 8BF4 - FFFD 98F7 FFFD FFFD FFFD FFFD 8B55 FFFD - FFFD 98F8 FFFD FFFD FFFD FFFD 98FA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9654 FFFD - FFFD FFFD 8C86 FFFD FFFD FA7B FFFD FFFD - FFFD 8E50 94F5 98F9 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 50AC - srcEnd = 5384 - mappingOffset = 0430 - Mapping = - 8DC3 9762 FFFD FFFD FFFD FFFD 98FC 9942 - 98FB 8DC2 FFFD 8F9D FFFD FFFD FFFD FFFD - FFFD FFFD 8C58 FFFD FFFD FFFD 9943 FFFD - FFFD 8BCD FFFD FFFD FFFD 9940 9941 FFFD - FFFD 93AD FFFD 919C FFFD 8BA1 FFFD FFFD - FFFD 966C 9944 FFFD FA7D FFFD 97BB FFFD - FFFD FFFD 9945 FFFD FFFD FFFD FFFD 9948 - FFFD 9946 FFFD 916D FFFD FFFD FFFD FFFD - FFFD 9947 9949 FFFD FFFD FFFD FFFD FFFD - FA7C 994B FFFD FFFD FFFD 994A FFFD 95C6 - FFFD FFFD FFFD FFFD 8B56 994D 994E FFFD - 89AD FFFD FFFD FFFD FFFD 994C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8EF2 FFFD - 9951 9950 994F FFFD 98D4 FFFD 9952 FFFD - FFFD FFFD FFFD 8F9E FFFD 9953 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9744 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 96D7 FFFD - FFFD FFFD FFFD 9955 FFFD FFFD 9954 9957 - 9956 FFFD FFFD 9958 9959 88F2 FFFD 8CB3 - 8C5A 8F5B 929B 8BA2 90E6 8CF5 FA7E 8D8E - 995B 96C6 9365 FFFD 8E99 FFFD 995A FFFD - 995C FFFD FFFD FFFD FFFD FFFD 937D FFFD - 8A95 FFFD FFFD FFFD FFFD FFFD 995D FFFD - FA80 93FC FFFD FFFD 9153 995F 9960 94AA - 8CF6 985A 9961 FFFD FFFD 8BA4 FFFD FFFD - FFFD 95BA 91B4 8BEF 9354 FFFD FFFD FFFD - 8C93 FFFD FFFD FFFD 9962 FFFD 9963 FFFD - FFFD 93E0 897E FFFD FFFD 9966 8DFB FFFD - 9965 8DC4 FFFD 9967 E3EC 9968 9660 9969 - FFFD 996A 996B 8FE7 FFFD 8ECA FFFD FFFD - FFFD FA81 FFFD FFFD 8AA5 FFFD 996E FFFD - 996C 96BB 996D FFFD 9579 996F 9970 9971 - 937E FFFD FFFD FFFD 9975 9973 9974 9972 - 8DE1 9976 96E8 97E2 FFFD FFFD FFFD FFFD - FFFD 9977 FA82 FFFD FFFD FFFD FFFD FFFD - 90A6 9978 8F79 FFFD FFFD 9979 FFFD 929C - 97BD 9380 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 99C3 FFFD FFFD FFFD FFFD 997A - EAA3 8BC3 FFFD FFFD 997B 967D FFFD FFFD - FFFD FFFD 8F88 91FA FFFD 997D 93E2 FFFD - FA83 997E FFFD FFFD 9980 8A4D FFFD FFFD - FFFD 9981 8BA5 FFFD 93CA 899A 8F6F FFFD - FFFD 949F 9982 FFFD 9381 FFFD FFFD 906E - 9983 FFFD 95AA 90D8 8AA0 FFFD 8AA7 9984 - FFFD FFFD 9986 FFFD FFFD 8C59 FFFD FFFD - 9985 FA84 FFFD 97F1 FFFD FFFD FFFD FFFD - FFFD 8F89 FFFD FFFD FFFD FFFD FFFD FFFD - 94BB 95CA FFFD 9987 FFFD 9798 9988 FFFD - FFFD FFFD 9989 FFFD 939E FFFD FFFD 998A - FFFD FFFD 90A7 8DFC 8C94 998B 8E68 8D8F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 92E4 - 998D FFFD FFFD 91A5 FFFD FFFD 8DED 998E - 998F 914F FFFD 998C FFFD FFFD FFFD FFFD - 9991 FFFD 9655 FFFD FFFD FFFD FFFD 8D84 - FFFD FFFD 9990 FFFD FFFD FFFD FFFD 8C95 - 8DDC 948D FFFD FFFD FFFD 9994 9992 FFFD - FFFD FFFD FFFD 959B 8FE8 999B 8A84 9995 - 9993 916E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 9997 FFFD 9996 FFFD FFFD FFFD 8A63 - FFFD FFFD FFFD 8C80 999C 97AB FFFD FFFD - FFFD 9998 FFFD FFFD FFFD 999D 999A FFFD - 9999 FFFD FFFD FFFD FFFD FFFD FFFD 97CD - FA85 FFFD FFFD 8CF7 89C1 FFFD FFFD 97F2 - FFFD FFFD FA86 FFFD FFFD 8F95 9377 8D85 - 99A0 99A1 FFFD FB77 FFFD 97E3 FFFD FFFD - 984A 99A3 FFFD FFFD FFFD 8CF8 FFFD FFFD - 99A2 FFFD 8A4E FFFD FA87 99A4 FFFD 9675 - FFFD 92BA FFFD 9745 FFFD 95D7 FFFD FFFD - FFFD 99A5 FFFD FFFD FFFD FFFD E8D3 FFFD - FFFD 93AE FFFD 99A6 8AA8 96B1 FFFD FA88 - FFFD 8F9F 99A7 95E5 99AB FFFD 90A8 99A8 - 8BCE FFFD 99A9 8AA9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8C4D 99AC - FFFD 99AD FFFD FFFD 99AE 99AF 8ED9 FFFD - FFFD FFFD 8CF9 96DC FA89 96E6 93F5 FFFD - FFFD 95EF 99B0 FA8A 99B1 FFFD FFFD FFFD - FFFD 99B3 FFFD 99B5 99B4 FFFD FFFD FFFD - FFFD 99B6 89BB 966B FFFD 8DFA 99B7 FFFD - FFFD 9178 FFFD FFFD 8FA0 8BA7 FFFD 99B8 - FA8B FFFD FFFD FFFD FFFD FFFD 94D9 FFFD - FFFD FFFD FFFD 99B9 FFFD 99BA FFFD 99BB - FFFD FFFD FFFD FFFD 99BC 9543 8BE6 88E3 - FFFD FFFD FFFD 93BD 99BD 8F5C FFFD 90E7 - FFFD 99BF 99BE 8FA1 8CDF 99C1 94BC FFFD - FFFD 99C2 FFFD FFFD FFFD 94DA 91B2 91EC - 8BA6 FFFD FFFD 93EC 9250 FFFD 948E FFFD - 966D FFFD 99C4 FFFD 90E8 FFFD FFFD FFFD - FFFD FFFD 8C54 FFFD FFFD 99C5 FFFD FFFD - FFFD FFFD 99C6 894B 88F3 8AEB FA8C 91A6 - 8B70 9791 FFFD 99C9 89B5 FFFD FFFD 99C8 - FFFD FFFD FFFD 8BA8 FFFD FFFD 99CA FFFD - 96EF -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 5393 - srcEnd = 5451 - mappingOffset = 0709 - Mapping = - FA8D FFFD FFFD 99CB FFFD 97D0 FFFD 8CFA - FFFD FFFD FFFD FFFD 8CB4 99CC FFFD FFFD - FFFD FFFD 99CE 99CD FFFD 907E 8958 FFFD - FFFD FFFD 897D 99CF FFFD 99D0 FFFD FA8E - 8CB5 FFFD FFFD 99D1 FFFD FFFD FFFD FFFD - 8B8E FFFD FFFD FFFD FFFD FFFD FFFD 8E51 - 99D2 FFFD FFFD FFFD FFFD 9694 8DB3 8B79 - 9746 916F 94BD 8EFB FFFD FFFD FFFD FFFD - FFFD 8F66 FFFD 8EE6 8EF3 FFFD 8F96 FFFD - 94BE FFFD FA8F FFFD 99D5 FFFD 8962 9170 - 8CFB 8CC3 8BE5 FFFD FFFD 99D9 9240 91FC - 8BA9 8FA2 99DA 99D8 89C2 91E4 8EB6 8E6A - 8945 FFFD FFFD 8A90 8D86 8E69 FFFD 99DB - FFFD FFFD FFFD FFFD FFFD FFFD 99DC FFFD - 8B68 8A65 FFFD FFFD FFFD 8D87 8B67 92DD - 8944 93AF 96BC 8D40 9799 9366 8CFC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8C4E FFFD 99E5 FFFD 8BE1 9669 FFFD FFFD - FFFD FFFD FFFD 94DB FFFD FFFD 99E4 FFFD - 8ADC 99DF 99E0 99E2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 99E3 FFFD 8B7A 9081 FFFD - 95AB 99E1 99DD 8CE1 FFFD 99DE FFFD 9843 - FFFD FFFD FFFD 95F0 FFFD 92E6 8CE0 8D90 - FFFD FFFD FFFD 99E6 FFFD FFFD 93DB -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 545F - srcEnd = 54C9 - mappingOffset = 07C8 - Mapping = - 99EA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8EFC FFFD 8EF4 FFFD FFFD FFFD FFFD - FFFD 99ED 99EB FFFD 96A1 FFFD 99E8 99F1 - 99EC FFFD FFFD FFFD 99EF 8CC4 96BD FFFD - FFFD 99F0 FFFD FFFD FFFD 99F2 FFFD 99F4 - FFFD FFFD FFFD FA92 8DEE 9861 FFFD 99E9 - 99E7 99F3 FFFD 99EE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FA91 FFFD FFFD - FFFD FFFD FFFD 99F6 FFFD 9A42 99F8 FFFD - FFFD 99FC FA93 FFFD 9A40 99F9 FFFD FFFD - 9A5D FFFD FFFD 8DE7 8A50 FFFD FFFD FFFD - FFFD 99F7 FFFD FFFD FFFD 9A44 88F4 9A43 - FFFD 88A3 9569 9A41 FFFD 99FA FFFD FFFD - 99F5 99FB 8DC6 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 54D8 - srcEnd = 5516 - mappingOffset = 0833 - Mapping = - 9A45 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 88F5 9A4E FFFD FFFD 9A46 9A47 FFFD - 8FA3 9689 FFFD FFFD FFFD 9A4C 9A4B FFFD - FFFD FFFD 934E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9A4D FFFD FFFD 9A4A FFFD FA94 - FFFD FFFD FFFD FFFD 8953 FFFD 8DB4 904F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9A48 - 9382 FFFD FFFD FFFD 9A49 FFFD 88A0 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 552E - srcEnd = 5563 - mappingOffset = 0872 - Mapping = - 9A53 9742 FFFD 8FA5 FFFD 9A59 FFFD FFFD - FFFD FFFD 9A58 9A4F FFFD FFFD FFFD FFFD - 91C1 FFFD 9A50 FFFD FFFD FFFD 91ED 9A55 - 8FA4 FFFD FFFD FFFD FFFD FFFD 9A52 FFFD - FFFD 96E2 FFFD FFFD FFFD 8C5B FFFD FFFD - 9A56 9A57 FFFD FFFD FFFD FFFD 9A54 9A5A - FFFD FFFD FFFD FFFD FFFD 9A51 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 557B - srcEnd = 558B - mappingOffset = 08A8 - Mapping = - 9A60 9A65 FFFD 9A61 FFFD 9A5C FFFD FFFD - 9A66 9150 FFFD FA95 9A68 FFFD 8D41 9A5E - 929D -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 5598 - srcEnd = 55B6 - mappingOffset = 08B9 - Mapping = - 9A62 9A5B 8AAB FFFD 8AEC 8A85 9A63 9A5F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8C96 - 9A69 9A67 9172 8B69 8BAA FFFD 9A64 FFFD - 8BF2 FFFD FFFD FFFD FFFD FFFD 8963 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 55C4 - srcEnd = 55C7 - mappingOffset = 08D8 - Mapping = - 9A6D 9A6B FFFD 9AA5 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 55D4 - srcEnd = 55E4 - mappingOffset = 08DC - Mapping = - 9A70 FFFD FFFD FFFD FFFD FFFD 9A6A FFFD - 9A6E FFFD FFFD 9A6C FFFD FFFD FFFD 8E6B - 9A6F -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 55F7 - srcEnd = 561B - mappingOffset = 08ED - Mapping = - 9A72 FFFD 9A77 FFFD FFFD FFFD 9A75 9A74 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9251 - FFFD FFFD 89C3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9A71 FFFD 9A73 - 8FA6 8952 FFFD FFFD 9A76 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 5629 - srcEnd = 5694 - mappingOffset = 0912 - Mapping = - 89DC FFFD FFFD FFFD FFFD FFFD 9A82 FFFD - 8FFA 9A7D FFFD 9A7B FFFD 9A7C FFFD 9A7E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 895C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9158 FFFD 9A78 FFFD 9A79 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8A9A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9A81 FFFD FFFD FFFD 8AED - FFFD 9A84 9A80 9A83 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 95AC FFFD FFFD FFFD 93D3 - FFFD 94B6 FFFD FFFD FFFD FFFD FFFD 9A86 - FFFD FFFD FFFD FFFD FFFD 9A85 8A64 FFFD - FFFD 9A87 FFFD FFFD FFFD FFFD 9A8A FFFD - FFFD FFFD FFFD 9A89 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 56A0 - srcEnd = 576A - mappingOffset = 097E - Mapping = - 9A88 FFFD 9458 FFFD FFFD 9A8B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9A8C FFFD - FFFD FFFD FFFD FFFD 9A8E FFFD 9A8D FFFD - FFFD FFFD FFFD FFFD 9A90 FFFD FFFD FFFD - 9A93 9A91 9A8F 9A92 FFFD FFFD FFFD FFFD - 9A94 FFFD FFFD FFFD FFFD FFFD 9A95 FFFD - FFFD 9A96 FFFD 9A97 FFFD FFFD FFFD 9A98 - 9964 FFFD 8EFA 8E6C FFFD FFFD 89F1 FFFD - 88F6 FFFD FFFD 9263 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9A99 FFFD - 8DA2 FFFD 88CD 907D FFFD FFFD FFFD FFFD - FFFD 9A9A 8CC5 FFFD FFFD 8D91 FFFD 9A9C - 9A9B FFFD FFFD 95DE 9A9D FFFD FFFD FFFD - 9A9F 9A9E FFFD 9AA0 FFFD 9AA1 FFFD 8C97 - FFFD FFFD 8980 9AA2 FFFD FFFD 9AA4 FFFD - 9AA3 FFFD FFFD FFFD 9AA6 FFFD FFFD 9379 - FFFD FFFD FFFD FFFD FFFD FFFD 9AA7 88B3 - 8DDD FFFD FFFD FFFD FFFD 8C5C FFFD FFFD - 926E FFFD FFFD FFFD FFFD FFFD FFFD 9AA8 - 9AA9 FFFD FFFD 9AAB FFFD FFFD FFFD FFFD - 9AAC FFFD 8DE2 FFFD FFFD FFFD FFFD 8BCF - FFFD FFFD 9656 FFFD FFFD FFFD 9AAA 9AAD - 8DBF 8D42 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FA96 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 9AB1 FFFD FFFD 8DA3 FA97 9252 FFFD - FFFD 9AAE 92D8 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 577F - srcEnd = 5793 - mappingOffset = 0A49 - Mapping = - 9AB2 FFFD FFFD 9082 FFFD FFFD FFFD FFFD - FFFD 9AB0 9AB3 FFFD 8C5E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9AB4 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 57A0 - srcEnd = 57B3 - mappingOffset = 0A5E - Mapping = - 9AB5 FFFD 8D43 8A5F 9AB7 FFFD FFFD FFFD - FFFD FFFD 9AB8 FFFD FA98 FFFD FFFD FFFD - 9AB9 FFFD FFFD 9AB6 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 57C0 - srcEnd = 57E3 - mappingOffset = 0A72 - Mapping = - 9AAF FFFD FFFD 9ABA FFFD FFFD 9ABB FA9A - FA99 FFFD FFFD 9684 FFFD FFFD 8FE9 FFFD - FFFD FFFD 9ABD 9ABE 9ABC FFFD 9AC0 FFFD - FFFD FFFD FFFD FFFD 9457 FFFD FFFD 88E6 - 9575 FFFD FFFD 9AC1 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 57F4 - srcEnd = 5885 - mappingOffset = 0A96 - Mapping = - 8FFB FFFD FFFD 8EB7 FFFD 947C 8AEE FFFD - 8DE9 FFFD FFFD FFFD 9678 FFFD 93B0 FFFD - FFFD 8C98 91CD FFFD FFFD FFFD 9ABF 9AC2 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 91C2 FFFD FFFD FFFD 9AC3 FFFD FFFD - FFFD 9AC4 FFFD FFFD FFFD 9AC6 FFFD FFFD - 92E7 FFFD FFFD FFFD FFFD FFFD 8AAC FFFD - FFFD FFFD FFFD EA9F 8981 95F1 FFFD FFFD - 8FEA 9367 FFFD FFFD FFFD FFFD 8DE4 FFFD - FFFD 9ACC FFFD FFFD 95BB 97DB FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 89F2 9AC8 - FFFD FFFD FFFD FFFD FFFD 9159 9ACB FFFD - 9383 FFFD FFFD 9368 9384 94B7 92CB FFFD - FFFD FFFD 8DC7 FFFD FFFD FFFD 9AC7 FFFD - FFFD FFFD FFFD FFFD FFFD 8996 FFFD 9355 - FFFD FFFD FFFD FFFD 9AC9 FFFD 9AC5 FFFD - FFFD 906F FFFD FFFD FFFD 9ACD FFFD FFFD - FFFD FFFD 8F6D FFFD FFFD FFFD FFFD 8BAB - FFFD 9ACE -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 5893 - srcEnd = 5A49 - mappingOffset = 0B28 - Mapping = - 95E6 FFFD FFFD FFFD 919D FFFD FFFD FFFD - FFFD 92C4 FFFD FA9D 9AD0 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 966E FFFD FFFD - 9AD1 FFFD FFFD 9AD6 FFFD FFFD FFFD FA9E - 95AD FFFD FFFD FFFD FFFD 9AD5 9ACF 9AD2 - 9AD4 FFFD FFFD 8DA4 FFFD FFFD 95C7 FFFD - FFFD FFFD 9AD7 FFFD 9264 FFFD FFFD 89F3 - FFFD 8FEB FFFD FFFD FFFD FFFD 9AD9 FFFD - 9AD8 FFFD 8D88 FFFD 9ADA 9ADC 9ADB FFFD - FFFD 9ADE FFFD 9AD3 9AE0 FFFD FFFD FFFD - FFFD 9ADF 9ADD FFFD FFFD FFFD FFFD FFFD - 8E6D 9070 FFFD 9173 9AE1 90BA 88EB 9484 - FFFD FFFD FFFD FFFD 92D9 FFFD 9AE3 9AE2 - 9AE4 9AE5 9AE6 FFFD FFFD FFFD FFFD 9AE7 - FFFD FFFD FFFD FFFD FFFD FFFD 95CF 9AE8 - FA9F FFFD FFFD FFFD 89C4 9AE9 FFFD FFFD - FFFD FFFD 975B 8A4F FFFD 99C7 8F67 91BD - 9AEA 96E9 FFFD FFFD FFFD FFFD FFFD 96B2 - FFFD FFFD 9AEC FFFD 91E5 FFFD 9356 91BE - 9576 9AED 9AEE 899B FFFD FFFD 8EB8 9AEF - FFFD FFFD FFFD FFFD 88CE 9AF0 FFFD FFFD - FFFD FFFD FFFD 9AF1 FFFD FFFD FFFD FFFD - FFFD 8982 FFFD FFFD 8AEF 93DE 95F2 FFFD - FFFD FFFD FFFD 9AF5 9174 9AF4 8C5F FFFD - FAA0 967A 9AF3 FFFD 9385 9AF7 FFFD 9AF6 - FAA1 FFFD FAA2 FFFD FFFD 9AF9 FFFD 9AF8 - FAA3 FFFD 899C FFFD 9AFA 8FA7 9AFC 9244 - FFFD 9AFB FFFD 95B1 FFFD FFFD FFFD FFFD - 8F97 937A FFFD FFFD FFFD 9B40 FFFD FFFD - FFFD FFFD 8D44 FFFD FFFD FFFD 9B41 9440 - 94DC 96CF FFFD FFFD FFFD FFFD FFFD 9444 - FFFD FFFD 9B4A FFFD FFFD FFFD FFFD FFFD - 8B57 FFFD FFFD 9764 FFFD FFFD 96AD FFFD - 9BAA FFFD 9B42 FFFD FFFD FFFD FFFD FFFD - 9B45 FAA4 91C3 FFFD FFFD 9657 FFFD FFFD - FFFD 9369 FFFD FFFD FFFD FFFD FFFD 9B46 - FFFD FFFD FFFD FFFD FFFD FFFD 9685 FAA5 - 8DC8 FFFD FFFD 8FA8 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9B47 FFFD FFFD 8E6F FFFD - 8E6E FFFD FFFD FFFD FFFD 88B7 8CC6 FFFD - 90A9 88CF FFFD FFFD FFFD FFFD 9B4B 9B4C - FFFD 9B49 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8957 8AAD FFFD 9B48 FFFD 96C3 - 9550 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 88A6 FFFD FFFD FFFD FFFD - 88F7 FFFD FFFD FFFD 8E70 FFFD 88D0 FFFD - 88A1 FFFD FFFD FFFD FFFD FFFD 9B51 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9B4F FFFD - FFFD FFFD FFFD FFFD FFFD 96BA FFFD 9B52 - FFFD 9B50 FFFD FFFD 9B4E 9050 FFFD FFFD - FFFD FFFD 9B4D FFFD FFFD FFFD 95D8 FFFD - FFFD FFFD FFFD FFFD 8CE2 FFFD FFFD FFFD - FFFD FFFD 9B56 9B57 FFFD FFFD FFFD FFFD - FFFD 8FA9 FFFD FFFD FFFD 9B53 984B FFFD - FFFD FFFD FFFD 946B FFFD FFFD 9B55 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 5A5A - srcEnd = 5A6C - mappingOffset = 0CDF - Mapping = - 8DA5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9B58 FFFD FFFD FFFD 9577 FFFD FFFD FFFD - 9B59 FFFD 9B54 -End of Item 004C - -Begin of Item 004D - Format 2 - srcBegin = 5A7F - destBegin = 96B9 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 5A92 - srcEnd = 5A9B - mappingOffset = 0CF2 - Mapping = - 947D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9B5A 9551 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 5ABC - srcEnd = 5AE9 - mappingOffset = 0CFC - Mapping = - 9B5B 9B5F 9B5C FFFD FFFD 89C5 9B5E FFFD - FFFD FFFD FFFD FFFD FFFD 8EB9 FFFD 9B5D - 8C99 FFFD FFFD FFFD 9B6B FFFD FFFD FFFD - FFFD FFFD 9B64 9B61 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9284 FFFD 9B60 - FFFD FFFD 9B62 FFFD FFFD 9B63 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 5AFA - srcEnd = 5AFB - mappingOffset = 0D2A - Mapping = - 9B65 9B66 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 5B09 - srcEnd = 5B16 - mappingOffset = 0D2C - Mapping = - 8AF0 FFFD 9B68 9B67 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9B69 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 5B22 - srcEnd = 5C79 - mappingOffset = 0D3A - Mapping = - 8FEC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9B6C FFFD 92DA FFFD FFFD FFFD 8964 FFFD - 9B6A FFFD FFFD FFFD 9B6D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9B6E FFFD 9B71 FFFD - FFFD 9B6F FFFD 9B70 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8E71 9B72 - FFFD FFFD 8D45 9B73 FAA6 8E9A 91B6 FFFD - 9B74 9B75 8E79 8D46 FFFD 96D0 FFFD FFFD - FFFD 8B47 8CC7 9B76 8A77 FFFD FFFD 9B77 - FFFD 91B7 FFFD FFFD FFFD FFFD 9B78 9BA1 - FFFD 9B79 FFFD 9B7A FFFD FFFD 9B7B FFFD - 9B7D FFFD FFFD FFFD FFFD FFFD 9B7E FFFD - FFFD 9B80 FFFD 91EE FFFD 8946 8EE7 88C0 - FFFD 9176 8AAE 8EB3 FFFD 8D47 FFFD FFFD - FFFD FFFD FFFD 9386 FFFD 8F40 8AAF 9288 - 92E8 88B6 8B58 95F3 FFFD 8EC0 FFFD FFFD - 8B71 90E9 8EBA 9747 9B81 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8B7B FFFD 8DC9 FFFD - FFFD 8A51 8983 8FAA 89C6 FFFD 9B82 9765 - FFFD FFFD FFFD FFFD FFFD 8F68 FAA7 FFFD - 8EE2 9B83 8AF1 93D0 96A7 9B84 FFFD 9B85 - FFFD FFFD 9578 FFFD FFFD FFFD 9B87 FFFD - 8AA6 8BF5 9B86 FFFD FFFD FFFD FAA9 FFFD - FFFD 8AB0 FFFD 9051 9B8B 8E40 FFFD 89C7 - 9B8A FFFD 9B88 9B8C 9B89 944A 9ECB 9052 - FFFD 9B8D FAAA FFFD 97BE FFFD 9B8E FFFD - FFFD 9B90 FFFD 929E 9B8F FFFD 90A1 FFFD - 8E9B FFFD FFFD FFFD 91CE 8EF5 FFFD 9595 - 90EA FFFD 8ECB 9B91 8FAB 9B92 9B93 88D1 - 91B8 9071 FFFD 9B94 93B1 8FAC FFFD 8FAD - FFFD 9B95 FFFD FFFD 90EB FFFD FFFD FFFD - 8FAE FFFD FFFD FFFD FAAB FFFD 9B96 FFFD - 9B97 FFFD 96DE FFFD FFFD FFFD 9B98 FFFD - FFFD FFFD FFFD 8BC4 FFFD FFFD FFFD 8F41 - FFFD FFFD FFFD FFFD FFFD FFFD 9B99 9B9A - 8EDA 904B 93F2 9073 94F6 9441 8BC7 9B9B - FFFD FFFD FFFD 8B8F 9B9C FFFD 8BFC FFFD - 93CD 89AE FFFD 8E72 9B9D 9BA0 9B9F 8BFB - FFFD 9B9E FFFD 9357 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 91AE FFFD 936A 8EC6 - FFFD FFFD 9177 979A FFFD FFFD FFFD FFFD - FFFD FFFD 9BA2 FFFD 9BA3 93D4 FFFD 8E52 - FFFD FFFD FFFD FFFD 9BA5 FFFD FFFD 9BA6 -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 5C8C - srcEnd = 5C94 - mappingOffset = 0E92 - Mapping = - 9BA7 FFFD FFFD FFFD 8AF2 9BA8 FFFD FFFD - 9BA9 -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 5CA1 - srcEnd = 5CC7 - mappingOffset = 0E9B - Mapping = - 89AA FFFD FFFD FFFD FFFD FAAC FFFD 915A - 8AE2 FFFD 9BAB 96A6 FFFD FFFD FFFD FFFD - 91D0 FFFD 8A78 FFFD FFFD 9BAD 9BAF 8ADD - FFFD FAAD 9BAC 9BAE FFFD 9BB1 FFFD FFFD - FFFD FFFD FFFD FFFD 9BB0 FFFD 9BB2 -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 5CD9 - srcEnd = 5D29 - mappingOffset = 0EC2 - Mapping = - 9BB3 FFFD FFFD FFFD FFFD FFFD FFFD 93BB - 8BAC FFFD FFFD FFFD FFFD FFFD FFFD 89E3 - 9BB4 9BB9 FFFD FFFD 9BB7 FFFD 95F5 95F4 - FFFD FFFD FFFD FFFD FAAE 9387 FFFD FFFD - FFFD 9BB6 8F73 FFFD 9BB5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9092 FFFD - FFFD FFFD 9BBA FFFD FFFD 8DE8 FFFD FFFD - 9BC0 FFFD FFFD 9BC1 9BBB 8A52 9BBC 9BC5 - 9BC4 9BC3 9BBF FFFD FFFD FFFD 9BBE FFFD - FFFD 9BC2 FFFD FFFD FFFD FFFD FAAF FFFD - 95F6 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 5D42 - srcEnd = 5D5C - mappingOffset = 0F13 - Mapping = - FAB2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 9BC9 9BC6 FFFD 9BC8 FFFD 9792 FFFD - 9BC7 FAB0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9BBD -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 5D69 - srcEnd = 5D76 - mappingOffset = 0F2E - Mapping = - 9093 FFFD FFFD 9BCA FAB3 FFFD 8DB5 FFFD - FFFD FFFD 9BCB FFFD FFFD 9BCC -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 5D82 - srcEnd = 5D90 - mappingOffset = 0F3C - Mapping = - 9BCF FFFD 9BCE FFFD FFFD 9BCD FFFD FFFD - FFFD 9388 9BB8 FFFD FFFD FFFD 9BD5 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 5D9D - srcEnd = 5DBD - mappingOffset = 0F4B - Mapping = - 9BD1 FFFD FFFD FFFD FFFD 9BD0 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9BD2 - FFFD 9BD3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9BD6 FAB4 FAB5 97E4 FFFD 9BD7 - 9BD4 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 5DC9 - srcEnd = 5E64 - mappingOffset = 0F6C - Mapping = - 9BD8 FFFD FFFD 8ADE 9BD9 FFFD FFFD FAB6 - FFFD 9BDB 9BDA FFFD FFFD 9BDC FFFD FFFD - FFFD FFFD 9BDD FFFD 90EC 8F42 FFFD FFFD - 8F84 FFFD 9183 FFFD 8D48 8DB6 8D49 8B90 - FFFD FFFD 9BDE FFFD FFFD 8DB7 FFFD FFFD - 8CC8 9BDF 96A4 9462 9BE0 FFFD 8D4A FFFD - FFFD FFFD 8AAA FFFD 9246 8BD0 FFFD FFFD - FFFD 8E73 957A FFFD FFFD 94BF FFFD FFFD - FFFD FFFD 9BE1 8AF3 FFFD FFFD FFFD FFFD - 9BE4 FFFD FFFD FFFD FFFD 929F FFFD FFFD - 9BE3 9BE2 9BE5 FFFD 92E9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9083 FFFD FFFD FFFD - FFFD FFFD 8E74 FFFD 90C8 FFFD 91D1 8B41 - FFFD FFFD 92A0 FFFD FFFD 9BE6 9BE7 8FED - FFFD FFFD FFFD FFFD 9658 FFFD FFFD 9BEA - FFFD FFFD 9BE9 9BE8 959D FFFD 9BF1 FFFD - FFFD FFFD FFFD 9679 FFFD 9BEB FFFD FFFD - FFFD FFFD FFFD 9BED 968B FFFD 9BEC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9BEE FFFD - 94A6 9BEF 95BC 9BF0 -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 5E72 - srcEnd = 5FFF - mappingOffset = 1008 - Mapping = - 8AB1 95BD 944E 9BF2 9BF3 FFFD 8D4B 8AB2 - 9BF4 8CB6 9763 9748 8AF4 9BF6 FFFD 92A1 - FFFD 8D4C 8FAF FFFD FFFD 94DD FFFD FFFD - 8FB0 FFFD FFFD FFFD FFFD 8F98 FFFD FFFD - FFFD FFFD FFFD 92EA 95F7 9358 FFFD FFFD - 8D4D FFFD 957B FFFD FFFD FFFD 9BF7 FFFD - FFFD FFFD FFFD FFFD 9378 8DC0 FFFD FFFD - FFFD 8CC9 FFFD 92EB FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 88C1 8F8E 8D4E 9766 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9BF8 - 9BF9 9470 FFFD FFFD FFFD FFFD 9BFA 97F5 - 984C FFFD FFFD FFFD FFFD 9BFC 9BFB FFFD - FFFD 8A66 FFFD FFFD 9C40 FFFD FFFD FFFD - 9C43 9C44 FFFD 9C42 FFFD 955F 8FB1 9C46 - 9C45 9C41 FFFD FFFD FFFD FFFD 9C47 9C48 - FFFD FFFD 9C49 FFFD FFFD FFFD 9C4C 9C4A - FFFD 9C4B 9C4D FFFD 8984 92EC 9C4E FFFD - 8C9A 89F4 9455 FFFD 9C4F 93F9 FFFD 95D9 - FFFD 9C50 984D FFFD FFFD FFFD FFFD 9C51 - 95BE 9C54 989F 98AF FFFD 8EAE 93F3 9C55 - FFFD 8B7C 92A2 88F8 9C56 95A4 8D4F FFFD - FFFD 926F FFFD FFFD FFFD 92ED FFFD FAB7 - FFFD FFFD FFFD 96ED 8CB7 8CCA FFFD 9C57 - FFFD FFFD FFFD 9C58 FFFD 9C5E FFFD 8EE3 - FFFD FFFD FAB8 92A3 FFFD 8BAD 9C59 FFFD - FFFD FFFD 954A FFFD 9265 FFFD FFFD 9C5A - FFFD FFFD FFFD FA67 FFFD FFFD 9C5B FFFD - 8BAE FFFD 9C5C FFFD 9C5D FFFD FFFD 9C5F - FFFD 9396 FFFD FFFD 9C60 9C61 FFFD 9C62 - FFFD FFFD 9C53 9C52 FFFD FFFD FFFD 9C63 - 8C60 FFFD FFFD FFFD 9546 FAB9 FFFD 8DCA - 9556 92A4 956A 9C64 FFFD FFFD 8FB2 8965 - FFFD 9C65 FFFD FFFD FFFD 9C66 FFFD 96F0 - FFFD FFFD 94DE FFFD FFFD 9C69 899D 90AA - 9C68 9C67 8C61 91D2 FFFD 9C6D 9C6B FFFD - 9C6A 97A5 8CE3 FFFD FFFD FFFD 8F99 9C6C - 936B 8F5D FFFD FFFD FFFD 93BE 9C70 9C6F - FFFD FFFD FFFD FFFD 9C6E FFFD 9C71 8CE4 - FFFD FFFD FFFD FFFD FFFD FFFD 9C72 959C - 8F7A FFFD FFFD 9C73 94F7 FFFD FFFD FFFD - FFFD 93BF 92A5 FFFD FFFD FABA FFFD 934F - FFFD FFFD 9C74 8B4A FFFD FFFD FFFD FFFD - FFFD 9053 FFFD 954B FFFD FFFD FFFD FFFD - FFFD FFFD 8AF5 9445 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9C75 8E75 9659 965A - FFFD FFFD 899E 9C7A FABB FFFD 9289 FFFD - FFFD FFFD 9C77 FFFD FFFD FFFD FFFD FFFD - FFFD 89F5 FFFD FFFD FFFD FFFD 9CAB 9C79 - FFFD FFFD FFFD 944F FFFD FFFD 9C78 FFFD - FFFD 9C76 FFFD 8D9A FFFD 9C7C -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 600E - srcEnd = 61D0 - mappingOffset = 1196 - Mapping = - 9C83 9C89 9C81 FFFD 937B FFFD FFFD 9C86 - 957C FFFD FFFD 9C80 FFFD 9C85 97E5 8E76 - FFFD FFFD 91D3 9C7D FFFD FFFD FFFD 8B7D - 9C88 90AB 8985 9C82 89F6 9C87 FFFD FFFD - FFFD 8BAF FFFD 9C84 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9C8A FFFD FFFD FFFD - FFFD FFFD FFFD 9C8C 9C96 9C94 FFFD FFFD - 9C91 FFFD FFFD FFFD 9C90 97F6 FFFD 9C92 - FFFD FFFD 8BB0 FFFD 8D50 FFFD FFFD 8F9A - FFFD FFFD FFFD 9C99 9C8B FFFD FFFD FABC - FFFD 9C8F 9C7E FFFD 89F8 9C93 9C95 9270 - FFFD FFFD 8DA6 89B6 9C8D 9C98 9C97 8BB1 - FFFD 91A7 8A86 FFFD FFFD FFFD FFFD 8C62 - FFFD 9C8E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9C9A FFFD 9C9D 9C9F FABD - FFFD FFFD FFFD 8EBB FABE 9CA5 92EE 9C9B - FFFD FFFD FFFD FFFD 9CA3 FFFD 89F7 FFFD - 9CA1 9CA2 FFFD FFFD 9C9E 9CA0 FFFD FFFD - FFFD 8CE5 9749 FFFD FFFD 8AB3 FFFD FFFD - 8978 9CA4 FFFD 9459 88AB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 94DF 9C7B 9CAA 9CAE - 96E3 FFFD 9CA7 FFFD FFFD FFFD 9389 9CAC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8FEE - 9CAD 93D5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9866 FFFD 9CA9 FFFD FAC0 - FFFD FFFD 9CAF FFFD 8D9B FFFD 90C9 FFFD - FABF 88D2 9CA8 9CA6 FFFD 9179 FFFD FFFD - FFFD 9C9C 8E53 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 91C4 9CBB FAC2 917A 9CB6 FFFD - 9CB3 9CB4 FFFD 8EE4 9CB7 9CBA FFFD FFFD - FFFD FFFD 9CB5 8F44 FFFD 9CB8 FFFD FFFD - 9CB2 FFFD 96FA 96F9 FFFD FFFD FFFD 9CBC - 9CBD 88D3 FFFD FAC3 FFFD FFFD FFFD 9CB1 - FFFD FFFD FFFD FFFD 8BF0 88A4 FFFD FFFD - FFFD 8AB4 FAC1 9CB9 FFFD FFFD FFFD FFFD - FFFD 9CC1 9CC0 FFFD FFFD FFFD 9CC5 FFFD - FFFD FFFD FAC5 FFFD FFFD FFFD 9CC6 FFFD - FFFD FAC4 FFFD FFFD FFFD FFFD 9CC4 9CC7 - 9CBF 9CC3 FFFD FFFD 9CC8 FFFD 9CC9 FFFD - FFFD 9CBE 8E9C FFFD 9CC2 91D4 8D51 9CB0 - 9054 FFFD FFFD FFFD FFFD 9CD6 FFFD 95E7 - FFFD FFFD 9CCC 9CCD 9CCE FFFD FFFD 9CD5 - FFFD 9CD4 FFFD FFFD 969D 8AB5 FFFD 9CD2 - FFFD 8C64 8A53 FFFD FFFD 9CCF FFFD FFFD - 97B6 9CD1 88D4 9CD3 FFFD 9CCA 9CD0 9CD7 - 8C63 9CCB FFFD FFFD FFFD FFFD FFFD FFFD - 977C FFFD FFFD FFFD 974A FFFD FFFD FFFD - FFFD 9CDA FFFD FFFD 9CDE FFFD FFFD FFFD - 919E FFFD 97F7 9CDF FFFD FFFD 9CDC FFFD - 9CD9 FFFD FAC6 9CD8 9CDD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 95AE FFFD - FFFD 93B2 FFFD 8C65 FFFD 9CE0 9CDB FFFD - 9CE1 FFFD FFFD FFFD 8C9B FFFD FFFD FFFD - 89AF FFFD FFFD FFFD 9CE9 FFFD FFFD FFFD - 8AB6 FFFD FFFD FFFD FFFD 9CE7 FFFD FFFD - 9CE8 8DA7 9CE6 9CE4 9CE3 9CEA 9CE2 9CEC - FFFD FFFD 89F9 -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 61E3 - srcEnd = 61E6 - mappingOffset = 1359 - Mapping = - 9CEE FFFD FFFD 9CED -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 61F2 - srcEnd = 63FA - mappingOffset = 135D - Mapping = - 92A6 FFFD 9CF1 FFFD 9CEF 9CE5 8C9C FFFD - 9CF0 FFFD 9CF4 9CF3 9CF5 9CF2 9CF6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9CF7 9CF8 - 95E8 FFFD 9CFA 9CF9 8F5E FFFD 90AC 89E4 - 89FA FAC7 9CFB FFFD 88BD FFFD FFFD FFFD - 90CA 9CFC FFFD E6C1 9D40 8C81 FFFD 9D41 - FFFD FFFD FFFD FFFD 90ED FFFD FFFD FFFD - 9D42 FFFD FFFD FFFD 9D43 8B59 9D44 FFFD - 9D45 9D46 91D5 FFFD FFFD FFFD 8CCB FFFD - FFFD 96DF FFFD FFFD FFFD 965B 8F8A 9D47 - FFFD FFFD FFFD FFFD FFFD 90EE E7BB 94E0 - FFFD 8EE8 FFFD 8DCB 9D48 FFFD FFFD FFFD - FFFD 91C5 FFFD 95A5 FFFD FFFD 91EF FFFD - FFFD 9D4B FFFD FFFD 9D49 FFFD 9D4C FFFD - FFFD 9D4A FFFD FFFD FFFD FFFD 9D4D FFFD - FFFD FFFD FFFD FFFD 95AF FFFD FFFD 88B5 - FFFD FFFD FFFD FFFD 957D FFFD FFFD 94E1 - FFFD FFFD 9D4E FFFD 9D51 8FB3 8B5A FFFD - 9D4F 9D56 8FB4 FFFD FFFD FFFD FFFD 9D50 - 9463 FFFD FFFD FFFD FFFD FFFD FFFD 977D - 9D52 9D53 9D57 938A 9D54 8D52 90DC FFFD - FFFD 9D65 94B2 FFFD 91F0 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FAC8 FFFD FFFD FFFD - FFFD 94E2 9DAB FFFD FFFD FFFD FFFD 95F8 - FFFD FFFD FFFD 92EF FFFD FFFD FFFD 9695 - FFFD 9D5A 899F 928A FFFD FFFD FFFD FFFD - 9D63 FFFD FFFD 9253 9D5D 9D64 9D5F 9D66 - 9D62 FFFD 9D61 948F FFFD 9D5B 89FB 9D59 - 8B91 91F1 9D55 FFFD FFFD 9D58 8D53 90D9 - FFFD 8FB5 9D60 9471 FFFD FFFD 8B92 8A67 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8A87 9040 9D68 9D6D FFFD 9D69 - FFFD 8C9D FFFD 9D6E 8E41 8D89 FFFD FFFD - FFFD FFFD FFFD FFFD 8F45 9D5C FFFD 8E9D - 9D6B FFFD FFFD FFFD FFFD 8E77 9D6C 88C2 - FFFD FFFD 9D67 FFFD FFFD FFFD FFFD 92A7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8B93 - FFFD FFFD FFFD FFFD FFFD 8BB2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9D6A 88A5 FFFD - FFFD 8DC1 FFFD FFFD FFFD 9055 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 92F0 FFFD FFFD 94D2 9D70 917D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 91A8 - FFFD FFFD 8E4A 9D71 FFFD 9D73 9D6F FFFD - FFFD FFFD FFFD 95DF FFFD 92BB FFFD FFFD - FFFD FFFD 917B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 95F9 8ECC 9D80 - FFFD 9D7E FFFD FFFD 9098 FFFD FFFD FFFD - 8C9E FFFD FFFD FFFD 9D78 8FB7 FFFD FFFD - 93E6 9450 FFFD FFFD FFFD FFFD 9D76 FFFD - FFFD 917C FFFD FFFD FFFD FFFD 8EF6 9D7B - FFFD FFFD 8FB6 FFFD 9D75 9D7A FFFD FFFD - 9472 FFFD FFFD FFFD 9D74 FFFD 8C40 FFFD - FFFD 8A7C FFFD FFFD FFFD 9D7C 97A9 8DCC - 9254 9D79 FFFD 90DA FFFD 8D54 9084 8986 - 915B 9D77 8B64 FFFD FFFD FFFD FFFD FFFD - 8C66 FFFD 92CD 9D7D FFFD FFFD FFFD FFFD - FFFD 917E FFFD FFFD 9D81 FFFD 9D83 FFFD - FFFD 91B5 9D89 FFFD 9D84 FFFD FFFD 9D86 - FFFD FFFD FFFD FFFD FFFD 9560 92F1 FFFD - 9D87 FFFD FFFD FFFD 974B FFFD FFFD FFFD - 9767 8AB7 FFFD FFFD FFFD FFFD FFFD 88AC - FFFD 9D85 FFFD FFFD FFFD FFFD FFFD 9D82 - FFFD FFFD FFFD FFFD 8AF6 FFFD FFFD FFFD - FFFD FFFD 8987 FAC9 9D88 FFFD FFFD FFFD - 9768 -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 6406 - srcEnd = 6442 - mappingOffset = 1566 - Mapping = - 9D8C FFFD FFFD FFFD FFFD FFFD FFFD 91B9 - FFFD 9D93 FFFD FFFD FFFD 9D8D FFFD FFFD - 9D8A 9D91 FFFD FFFD FFFD FFFD 9D72 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9D8E FFFD 9D92 FFFD FFFD FFFD 94C0 938B - FFFD FFFD FFFD FFFD FFFD FFFD 9D8B FFFD - 9D8F FFFD FFFD FFFD 8C67 FFFD FFFD FFFD - 8DEF FFFD FFFD FFFD 90DB -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 644E - srcEnd = 6505 - mappingOffset = 15A3 - Mapping = - 9D97 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9345 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FACA FFFD FFFD FFFD FFFD FFFD - FFFD 9D94 FFFD 9680 FFFD FFFD FFFD FFFD - FFFD 9D95 FFFD FFFD FFFD FFFD FFFD FFFD - 9D96 FFFD 96CC FFFD 90A0 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 8C82 FFFD FFFD - FFFD FFFD 9D9D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8E54 9D9A FFFD 9D99 - FFFD FFFD FFFD FFFD 9451 FFFD FFFD FACB - 93B3 FFFD FFFD FFFD FFFD FFFD 9350 9D9B - FFFD FFFD FFFD 9D9C FFFD 958F FFFD 9464 - 8E42 FFFD 90EF FFFD 966F FFFD FFFD FFFD - FFFD FFFD FFFD 8A68 FFFD 9DA3 9D9E FFFD - FFFD FFFD FFFD 9769 9DA5 FFFD FFFD 9DA1 - FFFD 9DA2 FFFD FFFD FFFD FFFD FFFD 9180 - FACC FFFD FFFD FFFD 9DA0 FFFD 9D5E FFFD - FFFD FFFD 9DA4 FFFD 9D9F FFFD FFFD FFFD - FFFD FFFD 9DA9 9DAA 9346 9DAC FFFD FFFD - 8E43 9DA7 FFFD FFFD FFFD FFFD 8B5B FFFD - FFFD 9DAD FFFD 9DA6 9DB1 FFFD 9DB0 FFFD - 9DAF FFFD FFFD FFFD 9DB2 FFFD FFFD 9DB4 - 8FEF FFFD 9DB3 FFFD FFFD FFFD FFFD 9DB7 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 6518 - srcEnd = 66C9 - mappingOffset = 165B - Mapping = - 9DB5 FFFD FFFD FFFD 9DB6 9D90 FFFD FFFD - FFFD FFFD FFFD 9DB9 9DB8 FFFD FFFD FFFD - FFFD FFFD 9D98 9DBA 9DAE FFFD FFFD 8E78 - FFFD FFFD FFFD FFFD 9DBB 9DBC 9DBE 9DBD - 9DBF 89FC FFFD 8D55 FFFD FFFD 95FA 90AD - FFFD FFFD FFFD FFFD FFFD 8CCC FFFD FFFD - 9DC1 FFFD FFFD FFFD FFFD 9DC4 FACD 9571 - FFFD 8B7E FFFD FFFD FFFD 9DC3 9DC2 9473 - 9DC5 8BB3 FFFD FFFD FFFD 9DC7 9DC6 FFFD - FFFD FFFD 8AB8 8E55 FFFD FFFD 93D6 FFFD - FFFD FFFD FFFD FFFD 8C68 FFFD FFFD FFFD - 9094 FFFD 9DC8 FFFD 90AE 9347 FFFD 957E - 9DC9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9DCA 9DCB FFFD FFFD FFFD 95B6 - 9B7C 90C4 FFFD FFFD 956B FFFD 8DD6 FFFD - 94E3 94C1 FFFD FFFD FFFD FFFD FFFD 936C - FFFD 97BF FFFD 9DCD 8ECE FFFD FFFD 9DCE - FFFD 88B4 FFFD FFFD 8BD2 90CB FFFD 9580 - FFFD FFFD FFFD 9DCF 8E61 9266 FFFD 8E7A - 9056 FFFD FFFD FFFD FFFD FFFD FFFD 9DD0 - FFFD 95FB FFFD FFFD 8997 8E7B FFFD FFFD - FFFD 9DD3 FFFD 9DD1 9DD4 97B7 9DD2 FFFD - FFFD FFFD FFFD 90F9 9DD5 FFFD FFFD 91B0 - FFFD FFFD 9DD6 FFFD FFFD FFFD FFFD 8AF8 - FFFD 9DD8 FFFD 9DD7 FFFD FFFD FFFD FFFD - 9DD9 9DDA 8AF9 FFFD FFFD 93FA 9255 8B8C - 8E7C 9181 FFFD FFFD 8F7B 88AE FFFD FFFD - FFFD 9DDB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 89A0 9DDF FFFD FFFD FFFD FFFD - FACE FFFD 8D56 9DDE FFFD FFFD 8DA9 8FB8 - FFFD FAD1 9DDD FFFD 8FB9 FFFD 96BE 8DA8 - FFFD FFFD FFFD 88D5 90CC FACF FFFD FFFD - FFFD FFFD FFFD FFFD 9DE4 FFFD FAD3 90AF - 8966 FFFD FFFD FFFD FAD4 8F74 FFFD 9686 - 8DF0 FFFD FFFD FFFD FFFD 8FBA FAD2 90A5 - FFFD FA63 FFFD FFFD 9DE3 9DE1 9DE2 FFFD - FFFD FFFD FFFD FAD0 928B FFFD FFFD 9E45 - FFFD 9DE8 8E9E 8D57 9DE6 FFFD FFFD FFFD - FFFD 9DE7 FFFD 9057 FFFD FFFD FFFD 9DE5 - FFFD FFFD 8E4E FFFD FFFD FFFD FFFD FAD6 - FFFD FAD7 FFFD FFFD FFFD 9DEA 9DE9 9DEE - FFFD FFFD 9DEF FFFD 9DEB FAD5 8A41 9DEC - 9DED 94D3 FFFD FFFD FFFD FFFD 9581 8C69 - 9DF0 FFFD FFFD FAD9 90B0 FFFD 8FBB FFFD - FFFD FFFD 9271 FFFD FFFD FFFD FFFD FFFD - FFFD 8BC5 FFFD 9DF1 9DF5 FFFD FFFD 89C9 - 9DF2 9DF4 FFFD FFFD FFFD FFFD 9DF3 FFFD - FFFD 8F8B FFFD FFFD FFFD FFFD 9267 88C3 - 9DF6 FADA FFFD FFFD FFFD 9DF7 FFFD FFFD - FADB FFFD 92A8 FFFD FFFD FFFD 97EF FFFD - FFFD FFFD FFFD 8E62 FFFD FFFD 95E9 FFFD - FFFD FFFD FADC FFFD 965C FFFD FFFD FFFD - 9E41 9DF9 FFFD FFFD 9DFC FFFD 9DFB FADD - FFFD 9DF8 FFFD FFFD 9E40 FFFD FFFD 93DC - FFFD 9DFA -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 66D6 - srcEnd = 6804 - mappingOffset = 180D - Mapping = - 9E42 FFFD FFFD 8F8C 9E43 FFFD 976A 9498 - FFFD FFFD 9E44 FFFD FFFD FFFD FFFD FFFD - 9E46 FFFD FFFD 9E47 FFFD FFFD FFFD FFFD - FFFD FFFD 9E48 FFFD 8BC8 8967 8D58 9E49 - FFFD 9E4A 8F91 9182 FADE FA66 99D6 915D - 915C 91D6 8DC5 FFFD FFFD 98F0 FFFD FFFD - FFFD FFFD 8C8E 974C FFFD 95FC FFFD 959E - FADF 9E4B FFFD FFFD FFFD FFFD 8DF1 92BD - 9E4C 984E FFFD FFFD FFFD 965D FFFD 92A9 - 9E4D 8AFA FFFD FFFD FFFD FFFD FFFD FFFD - 9E4E 9E4F 96D8 FFFD 96A2 9696 967B 8E44 - 9E51 FFFD FFFD 8EE9 FFFD FFFD 9670 FFFD - 9E53 9E56 9E55 FFFD 8AF7 FFFD FFFD 8B80 - FFFD 9E52 FFFD 9E54 FFFD FFFD FFFD FFFD - 9E57 FFFD FFFD 9099 FFFD FFFD FFFD FFFD - 979B 88C7 8DDE 91BA FFFD 8EDB FFFD FFFD - 8FF1 FFFD FFFD 9E5A FFFD FFFD 936D FFFD - 9E58 91A9 9E59 8FF0 96DB 9E5B 9E5C 9788 - FAE1 FFFD FFFD FFFD 9E61 FFFD FFFD 8D59 - FFFD 9474 9E5E 938C 9DDC 9DE0 FFFD 8B6E - FFFD 9466 FFFD FFFD FFFD FFFD 9E60 FFFD - 8FBC 94C2 FFFD FFFD FFFD FFFD FFFD 9E66 - FFFD 94F8 FFFD 9E5D FFFD 9E63 9E62 FFFD - FFFD FFFD 90CD FFFD FFFD FFFD FFFD 968D - FFFD 97D1 FFFD FFFD 9687 FFFD 89CA 8E7D - FFFD FFFD 9867 9E65 9095 FFFD FFFD FFFD - 9E64 FFFD FFFD 9E5F FFFD FFFD FFFD FFFD - FFFD 8CCD FFFD FFFD FFFD 9E6B 9E69 FFFD - 89CB 9E67 9E6D 9E73 FFFD FAE2 FFFD FFFD - FFFD FFFD FAE4 91C6 FFFD FFFD 95BF FFFD - 9E75 FFFD FFFD FFFD 9541 FFFD FFFD FFFD - 9E74 9490 965E 8AB9 FFFD 90F5 8F5F FFFD - FFFD FFFD 92D1 FFFD 974D FFFD FFFD 9E70 - 9E6F FFFD FFFD FFFD 9E71 FFFD 9E6E FFFD - FFFD 9E76 FFFD 9E6C FFFD FFFD 9E6A FFFD - 9E72 9E68 FFFD 928C FFFD 96F6 8EC4 8DF2 - FFFD FFFD FFFD FFFD FFFD 8DB8 FFFD FFFD - 968F 8A60 FFFD FAE5 92CC 93C8 8968 -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 6813 - srcEnd = 6867 - mappingOffset = 193C - Mapping = - 90F0 FFFD FFFD 90B2 8C49 FFFD FFFD FFFD - FFFD FFFD FFFD 9E78 FFFD FFFD 8D5A 8A9C - FFFD FFFD FFFD FFFD FFFD FFFD 9E7A 8A94 - 9E81 FFFD FFFD FFFD FFFD FFFD FFFD 9E7D - FFFD 90F1 FFFD FFFD FFFD 8A6A 8DAA FFFD - FFFD 8A69 8DCD FFFD FFFD 9E7B 8C85 8C6A - 938D FAE6 FFFD 9E79 FFFD 88C4 FFFD FFFD - FFFD FFFD 9E7C 9E7E FFFD 8BCB 8C4B FAE3 - 8ABA 8B6A FFFD FFFD FFFD FFFD 9E82 FFFD - FFFD 8DF7 9691 FFFD 8E56 FFFD FFFD FFFD - 9E83 FFFD FFFD FFFD 954F -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 6874 - srcEnd = 6A4B - mappingOffset = 1991 - Mapping = - 9E8F FFFD 89B1 9E84 FFFD FFFD FFFD FFFD - FFFD FFFD 9E95 9E85 FFFD 97C0 FFFD 9E8C - FFFD 947E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 9E94 FFFD 9E87 FFFD FFFD FFFD 88B2 - 9E89 FFFD FFFD 8D5B FFFD FFFD FFFD 9E8B - FFFD 9E8A FFFD 9E86 9E91 FFFD 8FBD FFFD - FFFD FFFD 9AEB 8CE6 979C FFFD FFFD FFFD - FFFD 9E88 FFFD 92F2 8A42 8DAB FFFD 9E80 - FFFD 9E90 8A81 FFFD FFFD 9E8E 9E92 FFFD - 938E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8AFC FFFD 9EB0 FFFD FA64 96C7 9E97 8AFB - FFFD 9E9E FFFD FAE7 FFFD FFFD 965F FFFD - 9E9F 9EA1 FFFD 9EA5 9E99 FFFD 9249 FFFD - FFFD FFFD FFFD 938F 9EA9 9E9C FFFD 9EA6 - FFFD FFFD FFFD 9EA0 FFFD FFFD FFFD FFFD - FFFD FFFD 9058 9EAA FFFD FFFD 90B1 FFFD - FFFD FFFD FFFD FFFD FFFD 9EA8 8ABB FFFD - FFFD FFFD FFFD FFFD 986F 9E96 FFFD FFFD - 9EA4 88D6 FFFD FFFD 9E98 FFFD FFFD 96B8 - 9E9D 9041 92C5 9E93 FFFD FFFD 9EA3 FFFD - FFFD FFFD FFFD FFFD FFFD 909A 9EAD 8A91 - 8C9F FFFD FFFD FFFD FFFD 9EAF 9E9A 9EAE - FFFD 9EA7 9E9B FFFD 9EAB FFFD 9EAC FFFD - FFFD FFFD FFFD FFFD 9EBD FFFD FFFD FFFD - 93CC FFFD 9EA2 FFFD FFFD 9EB9 FFFD FFFD - FFFD 9EBB FFFD 92D6 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 976B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9596 - 9EB6 91C8 FFFD FFFD FFFD 9EBC 915E FFFD - 9EB3 9EC0 9EBF FFFD 93ED 9EBE 93E8 FFFD - FFFD FFFD FFFD FFFD FAE9 FFFD 9EC2 9EB5 - FFFD 8BC6 9EB8 8F7C FFFD FFFD FFFD 9480 - 9EBA 8BC9 FFFD 9EB2 9EB4 9EB1 FFFD FFFD - 984F 8A79 9EB7 FFFD FFFD 9EC1 8A54 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8DE5 FFFD - FFFD FFFD 897C FFFD FFFD 9ED2 FFFD FFFD - 9850 9ED5 FFFD FFFD FAEB FFFD FFFD 9059 - 9ED4 FFFD FFFD FFFD 9ED3 FFFD FFFD FFFD - FFFD FFFD FFFD 9ED0 FFFD FFFD FFFD FFFD - FFFD FFFD 9EC4 FFFD FFFD 9EE1 9EC3 FFFD - 9ED6 FFFD FFFD FFFD FFFD FFFD FFFD 9ECE - FFFD FFFD 9EC9 9EC6 FFFD 9EC7 FFFD 9ECF - FFFD FFFD FFFD EAA0 FFFD FFFD 9ECC 8D5C - 92C6 9184 9ECA FFFD 9EC5 FFFD FFFD 9EC8 - FFFD FFFD FFFD FFFD 976C 968A FFFD FFFD - FFFD 9ECD 9ED7 FFFD FFFD FFFD FAEC FFFD - FFFD FFFD FFFD 9EDF 9ED8 FFFD FFFD 9EE5 - FFFD 9EE3 FFFD FFFD FFFD FFFD 9EDE FFFD - FFFD FFFD FFFD FFFD FFFD 9EDD FFFD 92CE - FFFD 9185 FFFD 9EDB FFFD FFFD 9ED9 FFFD - FFFD 9EE0 FFFD FFFD FFFD FFFD 9EE6 94F3 - 9EEC FFFD FFFD FFFD FFFD FFFD 9EE7 9EEA - 9EE4 FFFD FFFD 9294 FFFD 9557 FFFD 9EDA - FFFD FFFD 9EE2 8FBE FFFD 96CD 9EF6 9EE9 - FFFD FFFD FFFD FFFD FFFD 8CA0 89A1 8A7E - FFFD FFFD 9ED1 FFFD FAED FFFD FFFD FFFD - FFFD 8FBF 9EEE FFFD 9EF5 8EF7 8A92 FFFD - FFFD 924D FFFD FFFD FFFD FFFD FFFD FFFD - 9EEB FFFD FAEF 9EF0 9EF4 FFFD FFFD 8BB4 -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 6A58 - srcEnd = 6AC3 - mappingOffset = 1B69 - Mapping = - 8B6B 9EF2 FFFD FFFD FFFD FFFD FFFD 8B40 - FFFD 93C9 9EF1 FFFD FFFD FFFD 9EF3 FFFD - FFFD FFFD FFFD FAEE FFFD FFFD FFFD FFFD - FFFD FFFD 9EED FAF0 FFFD FFFD FFFD FFFD - 9EEF FFFD FFFD FFFD FFFD FFFD FAF1 8A80 - 9268 FFFD FFFD FFFD 9EFA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9EF8 8CE7 FFFD - 9EF7 FFFD FFFD FFFD FFFD FFFD FFFD 9F40 - FFFD FFFD FFFD FFFD 9E77 FFFD FFFD FFFD - 9EF9 FFFD 9EFB 9EFC FFFD FFFD FFFD FFFD - FFFD FFFD 9F4B FFFD 9F47 FFFD 9E8D FFFD - FFFD FFFD FFFD 9F46 FFFD FFFD FFFD FFFD - 9F45 FFFD FFFD 9F42 FFFD FFFD FFFD FFFD - FFFD 9EE8 9F44 9F43 -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 6AD1 - srcEnd = 6AEA - mappingOffset = 1BD5 - Mapping = - 9F49 FFFD 9845 FFFD FFFD FFFD FFFD FFFD - FFFD 9F4C 8BF9 FFFD FFFD 9F48 9F4A FFFD - FFFD FAF2 FFFD FAF3 FFFD FFFD FFFD 94A5 - FFFD 9F4D -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 6AFA - srcEnd = 6BDF - mappingOffset = 1BEF - Mapping = - 9F51 9F4E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9793 9F4F FFFD FFFD FFFD FFFD - 9EDC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9F52 FFFD FFFD FFFD 9F53 FFFD FFFD FFFD - FFFD FFFD FFFD 8954 FFFD 9F55 8C87 8E9F - FFFD 8BD3 FFFD FFFD FFFD 89A2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 977E FFFD FFFD FFFD FFFD 9F57 9F56 9F59 - 8B5C FFFD FFFD 8BD4 8ABC FFFD FFFD FFFD - FFFD 9F5C FFFD FFFD FFFD 9F5B FFFD 9F5D - FFFD FFFD 89CC FFFD 9256 FFFD 9F5E FFFD - FFFD 8ABD 9F60 FFFD FFFD FFFD FFFD 9F5F - FFFD 9F61 FFFD FFFD FFFD 9F62 FFFD 9F63 - 8E7E 90B3 8D9F FFFD 9590 FFFD FFFD 95E0 - 9863 FFFD FFFD FFFD FFFD 8E95 FFFD FFFD - FFFD 8DCE 97F0 FFFD FFFD FFFD 9F64 9F65 - FFFD 8E80 FFFD FFFD FFFD 9F66 9F67 FFFD - FFFD 9F69 9F68 FFFD 9677 FFFD FFFD 8F7D - 8EEA 8E63 FFFD 9F6A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9F6C 9042 FFFD 9F6B FFFD - FFFD FFFD FFFD FFFD 9F6D FFFD FFFD FFFD - FFFD FFFD 9F6E FFFD FFFD FFFD FFFD FFFD - 9F6F 9F70 FFFD FFFD FFFD 9F71 FFFD 9F73 - 9F72 9F74 89A3 9269 FFFD 9F75 FFFD FFFD - 8E45 8A6B 9F76 FFFD FFFD 9361 9ACA FFFD - FFFD FFFD FFFD 8B42 9F77 FFFD FFFD FFFD - FFFD 9F78 FFFD 95EA 9688 FFFD FFFD FFFD - 93C5 9F79 94E4 FFFD FAF4 FFFD 94F9 FFFD - FFFD 96D1 FFFD FFFD FFFD 9F7A -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 6BEB - srcEnd = 6BF3 - mappingOffset = 1CD5 - Mapping = - 9F7C 9F7B FFFD FFFD 9F7E FFFD FFFD FFFD - 9F7D -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = 6C08 - srcEnd = 6C24 - mappingOffset = 1CDE - Mapping = - 9F81 FFFD FFFD FFFD FFFD FFFD FFFD 8E81 - FFFD 96AF FFFD 9F82 9F83 FFFD FFFD 8B43 - FFFD FFFD FFFD 9F84 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9F86 9F85 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 6C34 - srcEnd = 6C42 - mappingOffset = 1CFB - Mapping = - 9085 FFFD FFFD 9558 8969 FFFD FFFD FFFD - FFFD FFFD 94C3 FAF5 92F3 8F60 8B81 -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = 6C4E - srcEnd = 6CF3 - mappingOffset = 1D0A - Mapping = - 94C4 FFFD 8EAC FFFD FFFD FFFD FFFD 9F88 - FFFD 8ABE FFFD FFFD 8998 FFFD FAF6 93F0 - 9F87 8D5D 9272 FFFD 9F89 FFFD FFFD FFFD - FFFD FFFD 9F91 FFFD 9F8A FFFD FFFD FFFD - FFFD FAF8 91BF FFFD 8B82 9F92 FFFD FFFD - FFFD FFFD FFFD FFFD 8C88 FFFD FFFD 8B44 - 9F90 FFFD FFFD 9F8E 9F8B 9780 FFFD FFFD - FAF7 FFFD 92BE FFFD FFFD FFFD 93D7 9F8C - FFFD FFFD 9F94 FFFD 9F93 8C42 FFFD FFFD - 89AB FFFD FFFD 8DB9 9F8D 9F8F FFFD FFFD - FFFD FFFD FFFD 9676 91F2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9697 FFFD FFFD - 9F9C FFFD FFFD 9F9D FFFD 89CD FFFD FFFD - FFFD FFFD 95A6 96FB 9F9F 8EA1 8FC0 9F98 - 9F9E 8988 FFFD 8BB5 FFFD FFFD 9F95 9F9A - FFFD FFFD FFFD 90F2 9491 FFFD 94E5 FFFD - FFFD FFFD FFFD FFFD FFFD 9F97 FFFD 9640 - FFFD 9F99 FFFD 9FA2 FAF9 9FA0 FFFD 9F9B - FFFD FFFD FFFD 9641 9467 8B83 FFFD 9344 - FFFD FFFD 928D FFFD 9FA3 FFFD FFFD FFFD - FFFD 9FA1 91D7 9F96 FFFD 896A -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 6D04 - srcEnd = 6D45 - mappingOffset = 1DB0 - Mapping = - FAFA FFFD FFFD FFFD FFFD FFFD FFFD 976D - 9FAE FFFD FFFD FFFD FFFD FFFD 9FAD FFFD - FFFD FFFD FFFD 90F4 FFFD 9FAA FFFD 978C - FFFD FFFD 93B4 9FA4 FFFD FFFD FFFD FFFD - FFFD 92C3 FFFD FFFD FFFD 896B 8D5E 9FA7 - FFFD FFFD FFFD FFFD FFFD FFFD 8F46 9FAC - FFFD 9FAB 9FA6 FFFD 9FA9 FFFD FFFD 8A88 - FFFD 9FA8 9468 FFFD FFFD 97AC FFFD FFFD - 8FF2 90F3 -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = 6D59 - srcEnd = 6D79 - mappingOffset = 1DF2 - Mapping = - 9FB4 9FB2 FFFD 956C FFFD FFFD FFFD FFFD - FFFD FFFD 9FAF 9FB1 FFFD 8959 FFFD FFFD - 8D5F 9851 FFFD 8A5C FFFD 9582 FAFC FFFD - FFFD FFFD FFFD 9781 FFFD FFFD 8A43 905A - 9FB3 -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = 6D85 - srcEnd = 6D9C - mappingOffset = 1E13 - Mapping = - 9FB8 FFFD FAFB 8FC1 FFFD FFFD FFFD 974F - FFFD 9FB5 FFFD FFFD FFFD FFFD 9FB0 FFFD - 9FB6 FB40 FFFD FFFD 97DC FFFD 9393 93C0 -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = 6DAC - srcEnd = 6EDE - mappingOffset = 1E2B - Mapping = - FB41 FFFD FFFD 8A55 FFFD FFFD 8974 FFFD - FFFD 9FBC FFFD FFFD 9FBF FFFD FFFD FFFD - 97C1 FFFD FFFD FFFD 9784 FFFD FFFD FFFD - FFFD 9FC6 9FC0 9FBD FFFD FFFD FFFD 97D2 - 9FC3 FFFD FFFD FB42 FFFD 8F69 9FC5 FFFD - FFFD 9FCA FFFD FFFD 9391 9FC8 FFFD FFFD - FFFD FFFD 9FC2 FFFD FFFD 9257 FFFD FFFD - 9FC9 FFFD 9FBE FFFD 9FC4 FFFD 9FCB 88FA - 9FC1 FFFD 9FCC FFFD FFFD 905B FB44 8F7E - FFFD 95A3 FFFD 8DAC FB43 9FB9 9FC7 9359 - FB45 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 90B4 FFFD 8A89 8DCF 8FC2 9FBB 8F61 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8C6B - FFFD 9FBA FFFD FFFD FFFD 9FD0 8F8D 8CB8 - FFFD 9FDF FFFD 9FD9 8B94 936E FFFD 9FD4 - 9FDD 88AD 8951 FB48 FFFD 89B7 FFFD 9FD6 - 91AA 9FCD 9FCF 8D60 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9FE0 FB46 9FDB FFFD - FB49 FFFD 9FD3 FFFD FFFD FFFD FFFD 9FDA - FFFD FFFD FFFD FFFD FFFD FFFD 96A9 FFFD - FFFD 9FD8 9FDC FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8CCE FFFD 8FC3 FFFD FFFD 9258 - FB47 FFFD FFFD 9FD2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 974E FFFD FFFD FFFD 9FD5 - FFFD FFFD 9FCE 9392 FFFD FFFD 9FD1 FFFD - FFFD FFFD 9FD7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9870 8EBC 969E FFFD 9FE1 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 94AC FFFD FFFD 9FED 8CB9 FFFD FFFD FFFD - FFFD FFFD 8F80 FFFD 9FE3 FFFD FFFD FFFD - 97AD 8D61 FFFD 9FF0 FFFD FFFD 88EC FFFD - FFFD 9FEE FFFD FFFD FFFD FFFD 9FE2 FFFD - FFFD FFFD FFFD 9FE8 FFFD FFFD 9FEA FFFD - FFFD FFFD 976E 9FE5 FFFD FFFD 934D FFFD - FFFD 9FE7 FFFD FB4A FFFD FFFD 9FEF FFFD - 9FE9 96C5 FFFD FFFD FFFD 9FE4 FFFD 8EA0 - 9FFC FFFD FFFD FFFD FFFD 8A8A FFFD 9FE6 - 9FEB 9FEC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 91EA 91D8 -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 6EEC - srcEnd = 6F45 - mappingOffset = 1F5E - Mapping = - 9FF4 FFFD FFFD 9FFA FFFD FFFD 9FF8 FFFD - 9348 FFFD FFFD E042 9FF5 FFFD FFFD FFFD - FFFD FFFD 9FF6 9FDE FFFD 8B99 9559 FFFD - FFFD FFFD 8EBD FFFD FFFD 8D97 FFFD FFFD - FFFD FFFD FFFD 9852 FFFD 9FF2 FFFD E041 - 8989 9186 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9499 FFFD 8ABF 97F8 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 969F - 92D0 FFFD FFFD FFFD FFFD 9FF9 9FFB FFFD - FFFD FFFD FFFD FFFD 9151 FFFD FFFD FFFD - FFFD FFFD E040 9FF7 FFFD 9FF1 FFFD FFFD - FFFD 8AC1 -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 6F54 - srcEnd = 6FC6 - mappingOffset = 1FB8 - Mapping = - 8C89 FFFD FFFD FFFD E04E FFFD FFFD E049 - 90F6 FFFD FFFD 8A83 FFFD FFFD FFFD FFFD - 8F81 FFFD E052 FFFD FFFD FFFD FFFD FFFD - FFFD E04B 92AA E048 92D7 FFFD FFFD FFFD - E06B FFFD FFFD FFFD E045 FFFD E044 FFFD - E04D FFFD FFFD FFFD E047 E046 E04C FFFD - 909F FFFD E043 FFFD FB4B FFFD FFFD FFFD - FFFD FFFD E04F FFFD FFFD E050 FFFD FFFD - FFFD FFFD FFFD 8AC0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E055 FFFD E054 - E056 FFFD FFFD FFFD FFFD FFFD E059 FFFD - FFFD FFFD FFFD FFFD FFFD 9362 FFFD E053 - FFFD FB4C FFFD FFFD FFFD E057 FFFD FFFD - FFFD FFFD FFFD FFFD 8C83 91F7 E051 945A - FFFD FFFD E058 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 6FD4 - srcEnd = 7032 - mappingOffset = 202B - Mapping = - E05D E05B FFFD FFFD E05E FFFD FFFD E061 - FFFD FFFD FFFD E05A 8D8A 9447 FFFD FFFD - 9FB7 FFFD FFFD FFFD FFFD FFFD FFFD 9794 - E05C FFFD E060 91F3 FFFD E05F FFFD E04A - FFFD FB4D E889 FFFD FFFD FFFD E064 FFFD - FFFD FFFD E068 FFFD FFFD E066 FFFD FFFD - FFFD FB4E FFFD FB4F FFFD E062 FFFD E063 - FFFD FFFD FFFD E067 FFFD E065 FFFD FFFD - FFFD 956D FFFD FFFD E06D FFFD E06A E069 - FFFD E06C 93D2 E06E FFFD FFFD FFFD FFFD - FFFD FFFD 9295 91EB FB50 FFFD FFFD FFFD - 90A3 FFFD FFFD FFFD E06F FFFD E071 -End of Item 0072 - -Begin of Item 0073 - Format 2 - srcBegin = 703E - destBegin = E070 -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = 704C - srcEnd = 7099 - mappingOffset = 208A - Mapping = - 9FF3 FFFD FFFD FFFD FFFD E072 FFFD FFFD - FFFD FFFD FFFD FFFD 93E5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E073 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 89CE - FFFD FFFD FFFD 9394 8A44 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8B84 FFFD FFFD FFFD - 8EDC 8DD0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FB51 FFFD FFFD FFFD 9846 9086 FFFD - FFFD FFFD 898A FFFD FFFD FFFD E075 FFFD - FFFD FFFD FFFD FFFD FFFD E074 -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 70AB - srcEnd = 70BB - mappingOffset = 20D8 - Mapping = - FB52 E078 9259 E07B E076 FFFD FFFD FFFD - E07A FFFD FFFD FFFD FFFD E079 935F 88D7 - FA62 -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = 70C8 - srcEnd = 70DF - mappingOffset = 20E9 - Mapping = - 97F3 FFFD FFFD E07D FFFD FFFD FFFD 8947 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E080 FFFD FFFD FFFD E07E FFFD E07C -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = 70F1 - srcEnd = 7126 - mappingOffset = 2101 - Mapping = - E077 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9642 FFFD FFFD FFFD E082 FFFD FFFD FFFD - FFFD FFFD FFFD FB54 FFFD FFFD FFFD FFFD - E081 FFFD FFFD FFFD FFFD FFFD FB53 FFFD - FFFD FFFD FFFD 898B FFFD FFFD FFFD FFFD - E084 95B0 FFFD E083 FFFD FFFD FFFD FFFD - 96B3 FFFD FFFD FFFD FFFD 8FC5 -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 7136 - srcEnd = 716E - mappingOffset = 2137 - Mapping = - 9152 FFFD FFFD FFFD FFFD FFFD 8FC4 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FB56 FB57 FFFD 97F9 FFFD FFFD E08A FFFD - 90F7 FFFD FFFD FFFD FFFD FFFD FFFD E086 - E08B FFFD FFFD 898C FFFD FFFD FB55 FFFD - FFFD FFFD FFFD FFFD E089 FFFD 9481 E085 - E088 8FC6 FFFD 94CF FFFD FFFD E08C FFFD - 8ECF -End of Item 0078 - -Begin of Item 0079 - Format 1 - srcBegin = 717D - srcEnd = 721B - mappingOffset = 2170 - Mapping = - 90F8 FFFD FFFD FFFD FFFD FFFD FFFD E08F - FFFD FFFD FFFD E087 FFFD 8C46 FFFD FFFD - FFFD FFFD E08D FFFD FFFD FFFD FFFD 976F - E090 FFFD FFFD FFFD EAA4 FFFD FFFD FFFD - FFFD FFFD 8F6E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E091 FFFD FFFD FFFD E092 - FFFD FFFD FFFD FFFD 944D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E094 FFFD FFFD FFFD - FFFD E095 FFFD FFFD FB59 FFFD 9452 FFFD - FFFD FFFD FFFD 9395 E097 FFFD FFFD FFFD - FFFD E099 FFFD 97D3 FFFD E096 FFFD E098 - 898D FFFD E093 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9A7A E09A FFFD FFFD FFFD FFFD - 9187 8E57 E09C FFFD FFFD FFFD FFFD E09B - 9043 99D7 FFFD FFFD FFFD FFFD FFFD FFFD - E09D FFFD FFFD FFFD E09F FFFD E08E E09E - FFFD FB5A E0A0 FFFD FFFD FFFD FFFD FFFD - FFFD 949A FFFD FFFD FFFD FFFD FFFD FFFD - E0A1 FFFD FFFD E0A2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E0A3 -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = 7228 - srcEnd = 72FD - mappingOffset = 220F - Mapping = - E0A4 FFFD 92DC FFFD E0A6 E0A5 FFFD FFFD - E0A7 FFFD E0A8 FFFD FFFD 8EDD 9583 FFFD - FFFD FFFD 96EA E0A9 E0AA 9175 8EA2 E0AB - E0AC FFFD FFFD FFFD FFFD FFFD E0AD 95D0 - 94C5 FFFD FFFD E0AE 9476 FFFD FFFD FFFD - FFFD FFFD 92AB FFFD FFFD FFFD FFFD FFFD - E0AF 89E5 FFFD 8B8D FFFD 96C4 FFFD 96B4 - FFFD 89B2 9853 FFFD FFFD FFFD FFFD 9671 - FFFD 95A8 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 90B5 FFFD E0B0 FFFD FFFD FFFD - FFFD 93C1 FFFD FFFD FFFD 8CA1 E0B1 FFFD - 8DD2 E0B3 E0B2 FFFD FFFD FFFD FFFD E0B4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E0B5 FFFD FFFD FFFD E0B6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8B5D FFFD E0B7 FFFD FFFD FFFD FFFD E0B8 - FFFD FFFD FFFD FFFD 8CA2 FFFD FFFD 94C6 - FFFD FB5B E0BA FFFD FFFD FFFD 8FF3 FFFD - FFFD E0B9 FFFD FFFD FFFD FFFD FB5C FFFD - FFFD FFFD 8BB6 E0BB E0BD FFFD E0BC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E0BE FFFD - 8CCF FFFD E0BF FFFD FFFD FFFD FFFD 8BE7 - FFFD 915F FFFD 8D9D FFFD FFFD FFFD FFFD - E0C1 E0C2 E0C0 FFFD FFFD FFFD FFFD FFFD - FFFD 8EEB FFFD FFFD 93C6 8BB7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E0C4 - 924B E0C3 FFFD FFFD 9854 9482 -End of Item 007A - -Begin of Item 007B - Format 2 - srcBegin = 730A - destBegin = E0C7 -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = 7316 - srcEnd = 7357 - mappingOffset = 22E5 - Mapping = - E0C9 E0C6 FFFD FFFD FFFD 96D2 E0C8 E0CA - FFFD 97C2 FFFD FFFD FFFD FFFD FB5D E0CE - FFFD FFFD FFFD E0CD 9296 944C FFFD FFFD - 8CA3 E0CC FFFD FFFD FFFD FFFD E0CB FFFD - 9750 9751 FFFD FFFD FFFD FFFD FFFD FFFD - E0CF 898E FFFD FFFD FFFD FFFD 8D96 8E82 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E0D0 E0D1 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E0D3 -End of Item 007C - -Begin of Item 007D - Format 1 - srcBegin = 7363 - srcEnd = 7396 - mappingOffset = 2327 - Mapping = - 8F62 FFFD FFFD FFFD FFFD E0D5 FFFD E0D4 - FFFD FFFD FFFD FFFD FFFD E0D6 FFFD 8A6C - FFFD FFFD E0D8 FFFD FB5F E0D7 FFFD E0DA - E0D9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8CBA FFFD FFFD 97A6 FFFD 8BCA FFFD - 89A4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8BE8 -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = 73A9 - srcEnd = 7409 - mappingOffset = 235B - Mapping = - 8ADF FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 97E6 E0DC FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E0DE FFFD FB60 FFFD FFFD E0DF - FFFD 89CF FFFD FFFD FFFD FFFD FFFD E0DB - FB61 8E58 FFFD FFFD 92BF E0DD FFFD FFFD - FFFD FB64 FFFD FFFD FFFD FB62 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E0E2 FFFD 8EEC - FFFD FFFD FB63 FFFD E0E0 FFFD FFFD FFFD - FFFD 8C5D FFFD FFFD 94C7 E0E1 FFFD FFFD - E0FC FFFD FFFD FFFD FB66 FFFD FFFD E0E7 - FFFD FFFD FFFD FFFD FFFD 8CBB FFFD FFFD - FFFD FFFD 8B85 FFFD E0E4 979D FB65 FFFD - 97AE -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = 7422 - srcEnd = 7441 - mappingOffset = 23BC - Mapping = - 91F4 FFFD FFFD E0E6 FB67 FFFD FFFD FB69 - FB68 FFFD FFFD FFFD FB6A FFFD FFFD FFFD - E0E8 97D4 8BD5 94FA 9469 FFFD FFFD FFFD - E0E9 FFFD FFFD FFFD FFFD E0EB FFFD E0EE -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = 7455 - srcEnd = 748B - mappingOffset = 23DC - Mapping = - E0EA FFFD FFFD FFFD E0ED 8CE8 896C E0EF - FFFD 9090 E0EC 97DA FFFD FB6B E0F2 EAA2 - FFFD FFFD FFFD FFFD E0F0 E0F3 FFFD FFFD - FFFD FFFD E0E5 E0F1 FFFD FFFD 8DBA FFFD - FFFD E0F4 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E0F5 FFFD FFFD FFFD FFFD 979E FFFD - FFFD FFFD FFFD FFFD FB6C FFFD E0F6 -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = 749E - srcEnd = 74B0 - mappingOffset = 2413 - Mapping = - E0F7 FB6D FFFD FFFD E0E3 FFFD FFFD FFFD - FFFD E0F8 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8AC2 -End of Item 0081 - -Begin of Item 0082 - Format 2 - srcBegin = 74BD - destBegin = 8EA3 -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = 74CA - srcEnd = 760D - mappingOffset = 2426 - Mapping = - E0F9 FFFD FFFD FFFD FFFD E0FA FFFD FFFD - FFFD FFFD E0FB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 895A FFFD FFFD FFFD E140 FFFD - 955A E141 FFFD FFFD 8AA2 E142 FFFD E143 - FFFD FFFD FFFD FFFD E144 FFFD E146 E147 - E145 FFFD FFFD FFFD 9572 E149 E148 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FB6E - FFFD E14B E14A E14C FFFD FFFD FFFD FFFD - FFFD FFFD E14D E14F E14E FFFD FFFD 8D99 - FFFD E151 FFFD E150 FFFD FFFD 8AC3 FFFD - 9072 FFFD 935B FFFD E152 90B6 FFFD FFFD - FFFD 8E59 FFFD 8999 E153 FFFD 9770 FFFD - FFFD 95E1 E154 FFFD FFFD FAA8 9363 9752 - 8D62 905C FFFD FFFD FFFD 926A 99B2 FFFD - 92AC 89E6 E155 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E156 FFFD E15B FFFD FFFD E159 - E158 9DC0 8A45 E157 FFFD 88D8 FFFD 94A8 - FFFD FFFD 94C8 FFFD FFFD FFFD FFFD 97AF - E15C E15A 927B 90A4 FFFD FFFD 94A9 FFFD - 954C FFFD E15E 97AA 8C6C E15F FFFD E15D - 94D4 E160 FFFD E161 FFFD FB6F 88D9 FFFD - FFFD 8FF4 E166 FFFD E163 93EB E162 FFFD - FFFD FFFD FFFD FFFD FFFD 8B45 FFFD FFFD - E169 FFFD FFFD FFFD E164 E165 FFFD E168 - E167 9544 FFFD FFFD 9161 9160 FFFD 8B5E - FFFD FFFD E16A FFFD FFFD FFFD FFFD FFFD - E16B FFFD FFFD E16C FFFD FFFD FFFD FFFD - FFFD E16E FFFD E16D FFFD FFFD FFFD FFFD - FFFD 8975 FFFD FFFD FFFD FFFD FFFD E176 - 94E6 E170 FFFD E172 FFFD FFFD E174 905D - FFFD FFFD E175 E173 8EBE FFFD FFFD FFFD - E16F E171 FFFD 9561 FFFD 8FC7 FFFD FFFD - E178 FFFD FFFD E177 FFFD FFFD FFFD FFFD - E179 FFFD 8EA4 8DAD FFFD FFFD 9397 E17A - FFFD 92C9 FFFD FFFD E17C FFFD FFFD FFFD - 979F E17B FFFD FFFD FFFD FFFD FFFD 9189 - FFFD FFFD FFFD FFFD FFFD FFFD E182 FFFD - E184 E185 9273 FFFD FFFD FFFD FFFD FFFD - E183 FFFD E180 FFFD E17D E17E FFFD E181 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E188 - FFFD E186 FFFD E187 -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = 761F - srcEnd = 770C - mappingOffset = 256A - Mapping = - E189 E18B E18C E18D FFFD E18E FFFD FFFD - E18A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E190 FFFD FFFD FFFD E18F FFFD FFFD - FFFD FFFD FFFD FFFD E191 FFFD FFFD FFFD - FFFD FFFD FFFD 97C3 FFFD FFFD FFFD E194 - E192 E193 FFFD FFFD FFFD 8AE0 FFFD FFFD - FFFD FFFD FFFD 96FC FFFD FFFD FFFD 95C8 - FFFD E196 FFFD FFFD FFFD E195 FFFD FFFD - FFFD FFFD E197 E198 FFFD FFFD FFFD FFFD - E19C E199 E19A E19B FFFD E19D FFFD FFFD - FFFD E19E FFFD E19F FFFD FFFD FFFD E1A0 - FFFD E1A1 FFFD 94AD 936F E1A2 9492 9553 - FFFD E1A3 FFFD FB70 E1A4 9349 FFFD 8A46 - 8D63 E1A5 FFFD FFFD E1A6 FFFD FFFD E1A7 - FFFD 8E48 FFFD FFFD E1A9 FFFD FFFD E1A8 - FFFD FFFD E1AA E1AB FB73 FB71 FFFD FB72 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FB74 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 94E7 - FFFD E1AC FFFD FFFD FFFD E1AD FFFD FFFD - EA89 E1AE E1AF E1B0 FFFD FFFD FFFD FFFD - 8E4D FFFD FFFD E1B1 9475 FFFD FFFD 967E - FFFD 896D FFFD 8976 FFFD FFFD E1B2 FFFD - FFFD FFFD FFFD E1B4 FFFD FFFD FFFD E1B3 - 9390 FFFD FFFD FFFD 90B7 9F58 FFFD E1B5 - 96BF FFFD E1B6 FFFD 8AC4 94D5 E1B7 FFFD - E1B8 FFFD FFFD E1B9 FFFD FFFD FFFD 96DA - FFFD FFFD FFFD 96D3 FFFD 92BC FFFD FFFD - FFFD 918A FFFD FFFD E1BB FFFD FFFD 8F82 - FFFD FFFD 8FC8 FFFD FFFD E1BE FFFD FFFD - E1BD E1BC 94FB FFFD 8AC5 8CA7 -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = 771B - srcEnd = 7729 - mappingOffset = 2658 - Mapping = - E1C4 FFFD FFFD E1C1 905E 96B0 FFFD FFFD - FFFD E1C0 E1C2 E1C3 FFFD FFFD E1BF -End of Item 0085 - -Begin of Item 0086 - Format 1 - srcBegin = 7737 - srcEnd = 7747 - mappingOffset = 2667 - Mapping = - E1C5 E1C6 FFFD 92AD FFFD 8AE1 FFFD FFFD - FFFD 9285 FFFD FFFD FFFD FFFD FFFD FB76 - E1C7 -End of Item 0086 - -Begin of Item 0087 - Format 1 - srcBegin = 775A - srcEnd = 776B - mappingOffset = 2678 - Mapping = - E1C8 E1CB FFFD FFFD FFFD FFFD FFFD 9087 - FFFD 93C2 FFFD E1CC 9672 FFFD E1C9 FFFD - FFFD E1CA -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = 7779 - srcEnd = 777F - mappingOffset = 268A - Mapping = - E1CF FFFD FFFD FFFD FFFD E1CE E1CD -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = 778B - srcEnd = 7791 - mappingOffset = 2691 - Mapping = - E1D1 FFFD FFFD E1D0 FFFD FFFD E1D2 -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = 779E - srcEnd = 784E - mappingOffset = 2698 - Mapping = - E1D4 FFFD E1D3 FFFD FFFD FFFD FFFD 95CB - FFFD FFFD FFFD FFFD FFFD FFFD 8F75 97C4 - FFFD FFFD E1D5 FFFD FFFD 93B5 FFFD FFFD - E1D6 FFFD FFFD E1D7 FFFD E1DB E1D9 E1DA - FFFD E1D8 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E1DC FFFD FFFD FFFD FFFD FFFD E1DD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E1DE FFFD FFFD E1DF 96B5 E1E0 FFFD - FFFD FFFD FFFD FFFD 96EE E1E1 FFFD 926D - FFFD 948A FFFD 8BE9 FFFD FFFD FFFD 925A - E1E2 8BB8 FFFD FFFD FFFD 90CE FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E1E3 FFFD - FFFD FFFD FFFD FFFD 8DBB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E1E4 FFFD - FFFD FFFD FFFD FFFD E1E5 FFFD 8CA4 8DD3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E1E7 FB78 FFFD FFFD FFFD 9375 - 8DD4 8B6D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9643 FFFD 946A FFFD - FFFD FFFD FFFD FFFD 9376 FFFD FFFD FFFD - FFFD 8D7B FFFD FFFD FFFD FFFD FFFD E1E9 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FB79 -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = 785D - srcEnd = 78DA - mappingOffset = 2749 - Mapping = - 8FC9 FFFD FFFD FFFD FFFD FFFD FFFD FB7A - FFFD FFFD FFFD FFFD FFFD FFFD 97B0 8D64 - FFFD FFFD 8CA5 FFFD FFFD 94A1 FFFD E1EB - FFFD FFFD FFFD FFFD FFFD FB7B FFFD E1ED - FFFD FFFD FFFD FFFD 8CE9 FFFD FFFD FFFD - FFFD E1EC 92F4 FFFD FFFD FFFD FFFD E1EF - 8A56 E1EA FFFD FFFD 94E8 FFFD 894F FFFD - 8DEA FFFD 9871 FFFD FFFD E1EE FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E1F0 FFFD - FFFD FFFD 95C9 FFFD 90D7 E1F2 FFFD FFFD - FFFD FFFD E1F3 FFFD FFFD FFFD FFFD FFFD - E1F1 FFFD FFFD FFFD FFFD 8A6D FFFD E1F9 - FFFD E1F8 FFFD FFFD 8EA5 FFFD FFFD FFFD - E1FA E1F5 FFFD FFFD FFFD E1FB E1F6 FFFD - FFFD FFFD FFFD 94D6 E1F4 FFFD FFFD E1F7 - FFFD FFFD FFFD FFFD FFFD E241 -End of Item 008B - -Begin of Item 008C - Format 1 - srcBegin = 78E7 - srcEnd = 7919 - mappingOffset = 27C7 - Mapping = - E240 9681 FFFD FFFD FFFD E1FC FFFD FFFD - 88E9 FFFD FFFD FFFD FFFD E243 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E242 FFFD - FFFD FFFD 8FCA FFFD FFFD FFFD FFFD FFFD - E244 FFFD FFFD FFFD FFFD FFFD FFFD 9162 - FFFD FFFD E246 E245 FFFD FFFD FFFD FFFD - FFFD FFFD E247 -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = 7926 - srcEnd = 7A20 - mappingOffset = 27FA - Mapping = - E1E6 FFFD FFFD FFFD E1E8 E249 E248 FFFD - FFFD FFFD FB7C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8EA6 FFFD 97E7 FFFD - 8ED0 FFFD E24A 8C56 FFFD FFFD FFFD FFFD - FFFD 8B5F 8B46 8E83 FFFD FFFD FFFD FFFD - FFFD FFFD 9753 FFFD FFFD E250 FFFD E24F - 9163 E24C FFFD FFFD E24E FFFD FFFD 8F6A - 905F E24D E24B FFFD 9449 FFFD FFFD 8FCB - FFFD FFFD 955B FFFD FFFD FFFD FFFD 8DD5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 9398 FFFD FFFD E251 FFFD FFFD FFFD - FFFD E252 E268 8BD6 FFFD FFFD 985C 9154 - FFFD FFFD FFFD FFFD E253 FFFD FFFD 89D0 - 92F5 959F FFFD FFFD FFFD FFFD FB81 FFFD - FFFD FFFD FFFD FFFD FFFD FB83 FFFD E254 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8B9A E255 FFFD FFFD E257 FFFD FFFD FFFD - E258 FFFD 9448 FFFD FFFD E259 FFFD FFFD - FFFD FFFD FFFD E25A E25B FFFD FFFD 8BD7 - 89D1 93C3 8F47 8E84 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E25C FFFD 8F48 FFFD FFFD - FFFD FFFD FFFD 89C8 9562 FFFD FFFD E25D - FFFD FFFD 94E9 FFFD FFFD FFFD FFFD FFFD - FFFD 9164 FFFD E260 FFFD E261 9489 FFFD - 9060 E25E FFFD 9281 FFFD FFFD E25F FFFD - FFFD FFFD 8FCC FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 88DA FFFD FFFD - FFFD FFFD 8B48 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E262 FFFD FFFD 92F6 FFFD E263 - 90C5 FFFD FFFD FFFD FFFD FFFD 96AB FFFD - FFFD 9542 E264 E265 9274 FFFD 97C5 FFFD - FFFD E267 E266 -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = 7A2E - srcEnd = 7B39 - mappingOffset = 28F5 - Mapping = - 8EED FFFD FFFD E269 88EE FFFD FFFD FFFD - FFFD E26C FFFD FFFD FFFD E26A 89D2 8C6D - E26B 8D65 8D92 FFFD 95E4 E26D FFFD FFFD - 9673 FFFD FFFD E26F FFFD FFFD FFFD 90CF - 896E 89B8 88AA FFFD FFFD FFFD FFFD FFFD - FFFD E26E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E270 E271 8FF5 FFFD FFFD - FFFD FFFD FFFD E272 FFFD 8A6E FFFD FFFD - FFFD FFFD E274 FFFD FFFD FFFD 8C8A FFFD - 8B86 FFFD FFFD E275 8BF3 FFFD FFFD E276 - FFFD 90FA FFFD 93CB FFFD 90DE 8DF3 FFFD - FFFD FFFD E277 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9282 918B FFFD E279 - E27B E278 E27A FFFD FFFD FFFD FFFD FFFD - FFFD 8C41 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E27C 8C45 FFFD FFFD FFFD - 8B87 9771 E27E FFFD FFFD FFFD FFFD FFFD - E280 FFFD FFFD FFFD 894D FFFD FFFD FFFD - FFFD E283 FFFD FFFD FFFD 8A96 E282 E281 - FFFD E285 E27D FFFD E286 97A7 FFFD E287 - FFFD E288 FFFD FB84 9AF2 E28A FFFD E289 - FFFD FFFD FFFD E28B E28C FFFD 97B3 E28D - FFFD E8ED 8FCD E28E E28F 8F76 FFFD 93B6 - E290 FB85 FFFD FFFD 9247 FB87 FFFD E291 - FFFD 925B E292 FFFD FFFD FFFD FFFD FFFD - 8BA3 FFFD 995E 927C 8EB1 FFFD FFFD FFFD - FFFD 8AC6 FFFD FFFD E293 FFFD E2A0 FFFD - E296 FFFD 8B88 FFFD E295 E2A2 FFFD FFFD - FFFD E294 FFFD 8FCE FFFD FFFD FFFD FFFD - FFFD FFFD E298 E299 FFFD 934A FFFD FFFD - E29A FFFD 8A7D FFFD FFFD FFFD FFFD 9079 - 9584 FFFD E29C FFFD FFFD FFFD 91E6 FFFD - FFFD FFFD FFFD FFFD FFFD E297 FFFD E29B - E29D FFFD FFFD 8DF9 -End of Item 008E - -Begin of Item 008F - Format 1 - srcBegin = 7B45 - srcEnd = 7B7A - mappingOffset = 2A01 - Mapping = - E2A4 954D FFFD 94A4 9399 FFFD 8BD8 E2A3 - E2A1 FFFD 94B3 E29E 927D 939B FFFD 939A - FFFD 8DF4 FFFD FFFD FFFD FFFD FFFD FFFD - E2B6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E2A6 FFFD E2A8 FFFD FFFD FFFD FFFD E2AB - FFFD E2AC FFFD E2A9 E2AA FFFD FFFD E2A7 - E2A5 FFFD FFFD FFFD FFFD E29F -End of Item 008F - -Begin of Item 0090 - Format 1 - srcBegin = 7B86 - srcEnd = 7BCF - mappingOffset = 2A37 - Mapping = - 95CD 89D3 FFFD FFFD FFFD E2B3 FFFD E2B0 - FFFD E2B5 FFFD FFFD E2B4 FFFD 9493 96A5 - FFFD 8E5A E2AE E2B7 E2B2 FFFD E2B1 E2AD - FB88 E2AF FFFD 8AC7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 925C FFFD FFFD 90FB - FFFD FFFD FFFD 94A0 FFFD FFFD E2BC FFFD - FFFD FFFD 94A2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 90DF E2B9 FFFD FFFD 94CD FFFD - E2BD 95D1 FFFD 927A FFFD E2B8 E2BA FFFD - FFFD E2BB -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = 7BDD - srcEnd = 7C2B - mappingOffset = 2A81 - Mapping = - E2BE FFFD FFFD 8EC2 FFFD FFFD FFFD 93C4 - E2C3 E2C2 FFFD FFFD E2BF FFFD FFFD FFFD - 9855 FFFD FFFD FFFD FFFD FFFD E2C8 FFFD - FFFD E2CC E2C9 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E2C5 FFFD FFFD FFFD FFFD - FFFD FFFD E2C6 FFFD FFFD FFFD FFFD FFFD - E2CB FFFD FFFD FFFD E2C0 99D3 E2C7 E2C1 - FFFD FFFD E2CA FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E2D0 FFFD 8AC8 FFFD E2CD FFFD - FFFD FFFD E2CE FFFD FFFD E2CF E2D2 -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = 7C37 - srcEnd = 7D7D - mappingOffset = 2AD0 - Mapping = - E2D1 94F4 FFFD FFFD FFFD FFFD E2D3 97FA - 95EB E2D8 FFFD FFFD E2D5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E2D4 90D0 FFFD - E2D7 E2D9 FFFD FFFD FFFD E2D6 FFFD E2DD - FFFD E2DA FFFD FFFD FFFD FFFD FFFD FFFD - E2DB E2C4 FFFD FFFD FFFD E2DC E2DE FFFD - FFFD FFFD FFFD FFFD FFFD E2DF FFFD FFFD - FFFD FFFD FFFD FFFD 95C4 FFFD E2E0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 96E0 - FFFD FFFD 8BCC 8C48 E2E1 FFFD FFFD FFFD - FFFD FFFD 95B2 FFFD 9088 FFFD 96AE FFFD - FFFD E2E2 FFFD 97B1 FFFD FFFD 9494 FFFD - 9165 9453 FFFD FFFD 8F6C FFFD FFFD FFFD - 88BE FFFD E2E7 E2E5 FFFD E2E3 8A9F FFFD - 8FCF E2E8 FFFD FFFD E2E6 FFFD E2E4 E2EC - FFFD FFFD E2EB E2EA E2E9 FFFD FFFD FFFD - FFFD FFFD E2ED FFFD FFFD FFFD E2EE 90B8 - FFFD E2EF FFFD E2F1 FFFD FFFD E2F0 FFFD - FFFD FFFD FFFD 8CD0 FFFD FFFD FFFD 9157 - FFFD FFFD FFFD E2F3 FFFD FFFD FFFD 939C - FFFD E2F2 FFFD FFFD FFFD E2F4 FFFD 95B3 - 918C 8D66 FFFD E2F5 FFFD FFFD FFFD FFFD - 97C6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E2F7 FFFD FFFD E2F8 FFFD E2F9 FFFD E2FA - FFFD 8E85 FFFD E2FB 8C6E FFFD FFFD 8B8A - FFFD 8B49 FFFD E340 FFFD 96F1 8D67 E2FC - FFFD FFFD FFFD E343 96E4 FFFD 945B FFFD - FFFD 9552 FFFD FFFD FFFD 8F83 E342 FFFD - 8ED1 8D68 8E86 8B89 95B4 E341 FFFD FFFD - FFFD 9166 9661 8DF5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8E87 92DB FFFD E346 - 97DD 8DD7 FFFD E347 9061 FFFD E349 FFFD - FFFD FFFD 8FD0 8DAE FFFD FFFD FFFD FFFD - E348 FFFD FFFD 8F49 8CBC 9167 E344 E34A - FFFD FB8A FFFD FFFD E345 8C6F FFFD E34D - E351 8C8B FFFD FFFD FFFD FFFD FFFD E34C - FFFD FFFD FFFD FFFD E355 FB8B FFFD 8D69 - FFFD FFFD 978D 88BA E352 FFFD FFFD 8B8B - FFFD E34F FFFD FFFD FFFD FFFD FFFD E350 - FFFD FFFD 939D E34E E34B FFFD 8A47 90E2 - FFFD FFFD 8CA6 FFFD FFFD FFFD E357 -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = 7D89 - srcEnd = 7E9C - mappingOffset = 2C17 - Mapping = - E354 FFFD FFFD FFFD FFFD FFFD E356 FFFD - FFFD FFFD E353 FFFD FFFD FFFD FFFD FFFD - 8C70 91B1 E358 918E FFFD FFFD E365 FB8D - FFFD E361 E35B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E35F 8EF8 88DB E35A E362 E366 - 8D6A 96D4 FFFD 92D4 E35C FFFD FB8C E364 - FFFD E359 925D FFFD E35E 88BB 96C8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E35D FFFD - FFFD 8BD9 94EA FFFD FFFD FFFD 918D FFFD - 97CE 8F8F FFFD FFFD E38E FB8E FFFD E367 - FFFD 90FC FFFD E363 E368 E36A FFFD 92F7 - E36D FFFD FFFD E369 FFFD FFFD FFFD 95D2 - 8AC9 FFFD FFFD 96C9 FFFD FFFD 88DC FFFD - FFFD E36C FFFD 97FB FFFD FFFD FFFD FFFD - FFFD FFFD E36B FFFD FFFD FFFD FFFD FFFD - 898F FFFD FFFD 93EA E36E FFFD FFFD FFFD - E375 E36F E376 FFFD FFFD FFFD FFFD FFFD - FFFD E372 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 949B FFFD FFFD 8EC8 E374 FFFD - E371 E377 E370 FFFD FFFD 8F63 FFFD FFFD - FFFD FFFD 9644 FFFD FFFD 8F6B FFFD FFFD - E373 E380 FFFD FFFD E37B FFFD E37E FFFD - E37C E381 E37A FFFD E360 90D1 FFFD FFFD - 94C9 FFFD E37D FFFD FFFD E378 FFFD FFFD - FFFD 9140 8C71 FFFD 8F4A FFFD FFFD FFFD - FFFD FB8F FFFD 9044 9155 E384 FFFD FFFD - E386 E387 FFFD FFFD E383 E385 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E379 E382 FFFD - E38A E389 FFFD FFFD 969A FFFD FFFD 8C4A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E388 FFFD E38C E38B E38F FFFD E391 FFFD - FFFD 8E5B E38D FFFD FFFD FFFD FFFD E392 - E393 FA5C FFFD E394 FFFD E39A 935A E396 - FFFD E395 E397 E398 FFFD E399 FFFD FFFD - FFFD FFFD E39B E39C -End of Item 0093 - -Begin of Item 0094 - Format 1 - srcBegin = 7F36 - srcEnd = 810A - mappingOffset = 2D2B - Mapping = - 8ACA FFFD E39D FFFD E39E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E39F - FFFD FB90 FFFD FFFD FFFD FFFD E3A0 E3A1 - E3A2 FFFD E3A3 E3A4 FFFD FFFD E3A6 E3A5 - FFFD FFFD E3A7 FFFD FFFD FFFD FFFD FFFD - FFFD E3A8 E3A9 FFFD FFFD FFFD FFFD FFFD - FFFD E3AC E3AA E3AB 8DDF 8C72 FFFD FFFD - 9275 FFFD 94B1 FFFD 8F90 FFFD FFFD 946C - FFFD 94EB E3AD 9CEB FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E3AE E3B0 FFFD 9785 - E3AF E3B2 E3B1 FFFD 9772 FFFD E3B3 FFFD - 94FC FFFD FFFD FFFD FFFD FFFD E3B4 FFFD - FFFD FFFD FFFD FFFD E3B7 FFFD FFFD E3B6 - E3B5 FFFD FFFD FB91 FFFD E3B8 8C51 FFFD - FFFD FFFD 9141 8B60 FFFD FFFD FFFD FFFD - E3BC E3B9 FFFD FFFD E3BA FFFD FFFD FFFD - E3BD FFFD E3BE E3BB FFFD FFFD FFFD 8948 - FFFD FFFD FFFD 89A5 FFFD FFFD FFFD E3C0 - E3C1 FFFD FFFD FFFD E3C2 FFFD 9782 FFFD - FFFD FFFD FFFD FFFD 8F4B FFFD E3C4 E3C3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9089 E3C5 FFFD FFFD FFFD FFFD - E3C6 FFFD FFFD E3C7 FFFD 8AE3 FFFD FFFD - FFFD FFFD 8ACB FFFD FFFD E3C8 FFFD FFFD - FFFD FFFD FFFD E3C9 FFFD 967C 9783 FFFD - FFFD FFFD 9773 9856 FFFD 8D6C E3CC 8ED2 - E3CB FFFD FFFD FFFD FFFD E3CD 8EA7 FFFD - FFFD FFFD 91CF FFFD E3CE FFFD FFFD 8D6B - FFFD 96D5 E3CF E3D0 FFFD FFFD E3D1 FFFD - FFFD FFFD FFFD E3D2 FFFD FFFD FFFD FFFD - FFFD FFFD E3D3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 8EA8 FFFD FFFD - 96EB FFFD FFFD FFFD FFFD E3D5 FFFD 925E - FFFD E3D4 FFFD FFFD FFFD FFFD FFFD FFFD - E3D7 FFFD FFFD FFFD E3D6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E3D8 FFFD FFFD FFFD - 90B9 FFFD E3D9 FFFD E3DA FFFD FFFD FFFD - 95B7 E3DB FFFD 918F E3DC FFFD FFFD FFFD - FFFD FFFD E3DD FFFD FFFD FFFD FFFD FFFD - FFFD 97FC E3E0 FFFD E3DF E3DE 92AE FFFD - E3E1 9045 FFFD E3E2 FFFD FFFD FFFD E3E3 - 9857 E3E4 FFFD FFFD FFFD FFFD E3E5 E3E7 - E3E6 94A3 FFFD 93F7 FFFD 985D 94A7 FFFD - FFFD FFFD FFFD FFFD FFFD E3E9 FFFD FFFD - 8FD1 FFFD 9549 FFFD E3EA E3E8 FFFD 8ACC - FFFD FFFD FFFD 8CD2 8E88 FFFD FFFD 94EC - FFFD FFFD FFFD 8CA8 9662 FFFD E3ED E3EB - FFFD 8D6D FFFD 8D6E 88E7 FFFD 8DE6 FFFD - FFFD FFFD FFFD FFFD 9478 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 88DD E3F2 FFFD - 925F FFFD FFFD FFFD FFFD FFFD 9477 FFFD - 91D9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E3F4 FFFD FFFD E3F0 E3F3 E3EE FFFD E3F1 - 9645 FFFD FFFD 8CD3 FFFD FFFD 88FB E3EF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E3F6 FFFD E3F7 FFFD FFFD 93B7 FFFD - FFFD FFFD 8BB9 FFFD FFFD FFFD E445 945C - FFFD FFFD FFFD FFFD 8E89 FFFD FFFD 8BBA - 90C6 9865 96AC E3F5 90D2 -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = 811A - srcEnd = 8247 - mappingOffset = 2F00 - Mapping = - 8B72 E3F8 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E3FA FFFD FFFD FFFD FFFD FFFD E3F9 - FFFD FFFD FFFD FFFD FFFD E3FB FFFD 9245 - FFFD 945D FFFD FFFD FFFD FFFD FFFD 92AF - FFFD FFFD FFFD FFFD E442 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E441 FFFD FFFD FFFD - FFFD E3FC FFFD FFFD 9074 FFFD 9585 E444 - FFFD E443 8D6F 9872 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E454 FFFD FFFD - FFFD FFFD FFFD E448 E449 FFFD FFFD FFFD - FFFD 8EEE FFFD FFFD E447 FFFD 8D98 E446 - FFFD FFFD E44A FFFD FFFD FFFD 92B0 95A0 - 9142 FFFD FFFD FFFD FFFD 91DA E44E FFFD - E44F E44B FFFD FFFD FFFD FFFD E44C FFFD - E44D FFFD FFFD FFFD FFFD 8D70 FFFD FFFD - FFFD E455 FFFD E451 FFFD FFFD FFFD FFFD - 9586 FFFD 968C 9547 FFFD FFFD E450 FFFD - FFFD E453 E452 FFFD FFFD FFFD 9663 E456 - FFFD FFFD FFFD FFFD FFFD FFFD E457 FFFD - FFFD 9156 FFFD E458 FFFD FFFD E45A FFFD - E45E FFFD FFFD E45B E459 945E E45C FFFD - E45D FFFD FFFD FFFD 89B0 FFFD E464 E45F - FFFD FFFD FFFD E460 FFFD FFFD FFFD E461 - FFFD 919F FFFD FFFD FFFD FFFD E463 E462 - E465 FFFD FFFD FFFD FFFD E466 E467 FFFD - FFFD 9062 FFFD 89E7 FFFD E468 97D5 FFFD - 8EA9 FFFD FFFD 8F4C FFFD FFFD FFFD FFFD - FFFD 8E8A 9276 FFFD FFFD FFFD FFFD FFFD - E469 E46A 8950 FFFD E46B FFFD FFFD E46C - E46D FFFD FFFD E46E FFFD E46F 8BBB 9DA8 - E470 FFFD 90E3 E471 8EC9 FFFD E472 FFFD - 98AE FFFD FFFD FFFD E473 95DC 8ADA FFFD - FFFD 9143 8F77 FFFD 9591 8F4D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E474 - 8D71 E475 94CA FFFD E484 FFFD FFFD FFFD - FFFD E477 FFFD 91C7 9495 8CBD E476 9144 - FFFD FFFD FFFD FFFD FFFD FFFD E478 FFFD - FFFD FFFD FFFD FFFD FFFD 92F8 -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = 8258 - srcEnd = 827E - mappingOffset = 302E - Mapping = - E47A E479 E47C FFFD FFFD E47B FFFD E47D - FFFD FFFD E480 FFFD E47E FFFD 8ACD FFFD - E481 FFFD E482 E483 FFFD FFFD 8DAF 97C7 - FFFD E485 9046 FFFD FFFD FFFD 8990 E486 - E487 FFFD FFFD FFFD FFFD FFFD E488 -End of Item 0096 - -Begin of Item 0097 - Format 1 - srcBegin = 828B - srcEnd = 82C5 - mappingOffset = 3055 - Mapping = - 88F0 FFFD E489 FFFD FFFD FFFD FFFD E48A - FFFD FFFD FFFD FFFD FFFD FFFD 9587 FFFD - FFFD FFFD 8EC5 FFFD E48C FFFD FFFD FFFD - FFFD FFFD 8A48 88B0 FFFD FFFD FFFD FFFD - E48B E48E 946D FFFD 9063 FFFD 89D4 FFFD - 9646 FFFD FFFD FFFD FFFD 8C7C 8BDA FFFD - E48D FFFD 89E8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8AA1 -End of Item 0097 - -Begin of Item 0098 - Format 1 - srcBegin = 82D1 - srcEnd = 8362 - mappingOffset = 3090 - Mapping = - 8991 E492 97E8 91DB FFFD FFFD 9563 FFFD - E49E FFFD 89D5 E49C FFFD E49A E491 FFFD - E48F FFFD E490 FFFD 8EE1 8BEA 9297 FFFD - FFFD FFFD 93CF FFFD FFFD FFFD FFFD FFFD - 8970 FFFD E494 E493 FFFD FFFD FFFD FFFD - E499 E495 E498 FFFD FFFD FFFD FFFD FFFD - FB93 96CE E497 89D6 8A9D E49B FFFD FFFD - E49D FFFD FFFD FFFD FFFD 8C73 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E4A1 E4AA E4AB - FFFD FFFD FFFD 88A9 FFFD FFFD FFFD FFFD - FFFD FFFD E4B2 FFFD FFFD FFFD FFFD 88EF - FFFD FFFD E4A9 FFFD FFFD FFFD E4A8 FFFD - E4A3 E4A2 FFFD E4A0 E49F 9283 FFFD 91F9 - E4A5 FFFD FFFD FFFD FFFD FFFD FFFD E4A4 - FFFD FFFD FFFD FFFD E4A7 FFFD FFFD FFFD - 9190 8C74 FFFD FFFD FFFD FFFD 8960 E4A6 - FFFD 8D72 FFFD FFFD FFFD FFFD FFFD 9191 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FB94 -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = 8373 - srcEnd = 8413 - mappingOffset = 3122 - Mapping = - E4B8 FFFD E4B9 FFFD 89D7 FFFD FFFD FFFD - 89AC E4B6 FFFD FFFD FB95 FFFD FFFD FFFD - FFFD FFFD E4AC FFFD E4B4 FFFD E4BB E4B5 - FFFD FFFD FFFD E4B3 FFFD FFFD FFFD FFFD - E496 FFFD FFFD E4B1 FFFD FFFD FFFD E4AD - FFFD FFFD FFFD 8ACE E4AF E4BA FFFD E4B0 - FFFD FFFD FFFD FFFD FFFD E4BC FFFD E4AE - 949C FFFD FFFD FFFD FFFD FFFD 9789 FFFD - FFFD FFFD E4B7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E4CD FFFD FFFD FFFD E4C5 FFFD - FFFD FFFD 909B FFFD FB96 FFFD FFFD 8B65 - FFFD 8BDB FFFD E4C0 FFFD FFFD FFFD FFFD - 89D9 FFFD FFFD 8FD2 FFFD E4C3 FFFD FFFD - FFFD 8DD8 FFFD FFFD 9370 E4C8 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 95EC FFFD - E4BF FFFD FFFD FFFD 89D8 8CD4 9548 E4C9 - FFFD E4BD FFFD FB97 E4C6 FFFD FFFD FFFD - E4D0 FFFD E4C1 FFFD FFFD FFFD FFFD FFFD - E4C2 93B8 FFFD FFFD E4C7 FFFD FFFD FFFD - E4C4 9647 E4CA 88DE FFFD FFFD FFFD FFFD - E4BE -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = 8420 - srcEnd = 84A1 - mappingOffset = 31C3 - Mapping = - E4CC FFFD E4CB FFFD FFFD FFFD FFFD FFFD - FFFD 948B E4D2 FFFD E4DD FFFD FFFD FFFD - FFFD 8A9E FFFD FFFD FFFD E4E0 FFFD FFFD - E4CE FFFD FFFD FFFD E4D3 978E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E4DC FFFD - FB98 9774 FFFD FFFD FFFD FFFD 97A8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9298 - FFFD FFFD FFFD 8A8B FFFD FFFD FFFD FFFD - FFFD 9592 E4E2 939F FFFD FFFD 88AF FFFD - FFFD E4DB FFFD E4D7 9192 E4D1 E4D9 E4DE - FFFD 944B FFFD FFFD FFFD 88A8 FFFD E4D6 - FFFD E4DF 9598 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E4DA FFFD E4D5 FFFD FFFD FFFD - FFFD FFFD FFFD 8FD3 FFFD FFFD FFFD FFFD - 8F4E FFFD FFFD FFFD 8EAA FFFD FFFD FFFD - FFFD 96D6 FFFD FFFD 9566 FFFD FFFD E4E5 - FFFD E4EE -End of Item 009A - -Begin of Item 009B - Format 1 - srcBegin = 84AD - srcEnd = 84DC - mappingOffset = 3245 - Mapping = - E4D8 FFFD FFFD FFFD FFFD 8A97 FFFD FB99 - FFFD FFFD FFFD 8FF6 E4E3 FFFD E4E8 9193 - FFFD FFFD E4E4 FFFD E4EB FFFD FFFD 927E - FFFD E4EC FFFD FFFD 9775 E4E1 8A57 FFFD - E4E7 FFFD FFFD E4EA 96AA FFFD FFFD FFFD - FFFD E4ED FFFD FFFD E4E6 E4E9 FFFD FA60 -End of Item 009B - -Begin of Item 009C - Format 1 - srcBegin = 84EC - srcEnd = 85EA - mappingOffset = 3275 - Mapping = - 9648 FFFD 9840 FFFD FFFD FFFD FFFD FFFD - E4F1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E4F8 FFFD FFFD E4F0 8EC1 FFFD FFFD FFFD - FFFD FFFD E4CF FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 95CC FFFD 96A0 - E4F7 E4F6 FFFD E4F2 E4F3 FFFD 8955 FFFD - FFFD FFFD FFFD E4F5 FFFD E4EF FFFD FFFD - FFFD FFFD 92D3 FFFD FFFD FFFD FFFD FFFD - E4F4 88FC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 91A0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 95C1 FFFD FFFD E4F9 E540 FFFD 94D7 - FFFD FFFD FFFD FFFD E4FC 8FD4 8EC7 E542 - FFFD FFFD 8BBC FFFD FFFD FFFD FFFD FB9A - FFFD E543 FFFD 9599 E4FB FB9B E4D4 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E4FA - FFFD FFFD FFFD FFFD 986E 93A0 9593 FB9C - FFFD E54A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E550 FFFD FFFD FFFD FFFD - FFFD FFFD E551 FFFD E544 FFFD FFFD FFFD - 9496 FFFD FFFD E54E E546 FFFD E548 FFFD - FFFD FFFD FFFD FFFD E552 E547 FFFD FFFD - E54B FFFD FFFD 8992 FFFD 93E3 FFFD E54C - E54F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E545 FFFD 9145 FFFD E549 8E46 9064 8C4F - 96F2 FFFD 96F7 8F92 FB9E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E556 E554 FFFD - FFFD FFFD FFFD FFFD FFFD 986D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E553 FFFD FFFD - FFFD 9795 FFFD E555 E557 FFFD FFFD FFFD - FFFD E558 FFFD FFFD FFFD FFFD FFFD FFFD - E55B E559 FFFD FFFD FFFD FFFD FFFD FFFD - 93A1 E55A FFFD FFFD FFFD 94CB E54D -End of Item 009C - -Begin of Item 009D - Format 1 - srcBegin = 85F7 - srcEnd = 8630 - mappingOffset = 3374 - Mapping = - 8F93 FFFD E55C E561 9194 FFFD FFFD E560 - FFFD FFFD FFFD E541 FFFD FFFD FFFD E562 - 9168 FFFD FFFD E55D E55F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E55E FFFD FFFD 9F50 - 9F41 FFFD FFFD E564 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E563 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9796 FFFD - E1BA E565 -End of Item 009D - -Begin of Item 009E - Format 2 - srcBegin = 863F - destBegin = E566 -End of Item 009E - -Begin of Item 009F - Format 1 - srcBegin = 864D - srcEnd = 867B - mappingOffset = 33AE - Mapping = - E567 8CD5 FFFD 8B73 FFFD FFFD FFFD E569 - 997C FFFD FFFD FFFD FFFD 8B95 FFFD 97B8 - FFFD 8BF1 E56A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E56B FFFD FFFD FFFD 928E FFFD - FFFD FFFD FFFD FFFD E56C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 93F8 FFFD 88B8 -End of Item 009F - -Begin of Item 00A0 - Format 1 - srcBegin = 868A - srcEnd = 8695 - mappingOffset = 33DD - Mapping = - 89E1 E571 E572 FFFD FFFD FFFD FFFD FFFD - FFFD E56D FFFD 8E5C -End of Item 00A0 - -Begin of Item 00A1 - Format 1 - srcBegin = 86A3 - srcEnd = 86B6 - mappingOffset = 33E9 - Mapping = - E56E 9461 FFFD FFFD FFFD FFFD E56F E570 - E57A FFFD FFFD FFFD E574 E577 FFFD FFFD - FFFD FFFD FFFD E573 -End of Item 00A1 - -Begin of Item 00A2 - Format 1 - srcBegin = 86C4 - srcEnd = 878D - mappingOffset = 33FD - Mapping = - E575 FFFD E576 8ED6 FFFD E578 FFFD 9260 - FFFD 8C75 8A61 FFFD FFFD FFFD FFFD FFFD - E57B FFFD FFFD FFFD FFFD 8A5E FFFD E581 - FFFD FFFD E57C E580 FFFD FFFD FFFD FFFD - 94B8 FFFD FFFD FFFD FFFD E57D FFFD FFFD - E57E 9567 94D8 E582 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 91FB E58C FFFD E588 - FFFD FFFD 89E9 FFFD E586 FFFD 9649 E587 - FFFD FFFD E584 FFFD E585 E58A E58D FFFD - FFFD E58B FFFD FFFD FFFD E589 E583 FFFD - FFFD FFFD FFFD FFFD 9277 FFFD E594 FFFD - 96A8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E592 FFFD FFFD FFFD E593 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E58E FFFD FFFD E590 FFFD FFFD FFFD E591 - FFFD FFFD FFFD E58F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 90E4 FFFD 9858 - E598 FFFD E599 FFFD FFFD FFFD FFFD E59F - FFFD 9049 FFFD E59B FFFD E59E FFFD FFFD - FFFD FFFD FFFD E596 E595 FFFD FFFD E5A0 - FFFD FFFD 89DA FFFD E59C FFFD E5A1 FFFD - FFFD FFFD E59D FFFD FFFD FFFD FFFD FFFD - E59A FFFD 92B1 FFFD E597 FFFD FFFD FFFD - FFFD FFFD FFFD 9488 FFFD FFFD E5A5 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 975A -End of Item 00A2 - -Begin of Item 00A3 - Format 1 - srcBegin = 879F - srcEnd = 87D2 - mappingOffset = 34C7 - Mapping = - E5A4 FFFD FFFD E5A3 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E5AC FFFD FFFD FFFD - E5A6 FFFD FFFD FFFD E5AE FFFD FFFD FFFD - FFFD FFFD FFFD 9786 E5B1 FFFD E5A8 FFFD - FFFD E5A9 FFFD FFFD FFFD E5AD FFFD E5B0 - E5AF FFFD FFFD FFFD E5A7 FFFD FFFD FFFD - FFFD E5AA FFFD E5BB -End of Item 00A3 - -Begin of Item 00A4 - Format 2 - srcBegin = 87E0 - destBegin = E5B4 -End of Item 00A4 - -Begin of Item 00A5 - Format 1 - srcBegin = 87EF - srcEnd = 89C0 - mappingOffset = 34FB - Mapping = - E5B2 FFFD FFFD E5B3 FFFD FFFD FFFD E5B8 - E5B9 FFFD 8A49 FFFD 8B61 FFFD FFFD E5B7 - FFFD FFFD FFFD FFFD FFFD FFFD E5A2 FFFD - FBA1 FFFD FFFD FFFD FFFD FFFD E5B6 E5BA - E5B5 FFFD E5BC FFFD FFFD FFFD E5BE E5BD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E5C0 E5BF E579 FFFD FFFD FFFD - E5C4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E5C1 FFFD FFFD FFFD FFFD E5C2 - FFFD FFFD E5C3 FFFD E5C5 FFFD FFFD FFFD - FFFD 8C8C FFFD E5C7 FFFD E5C6 FFFD 8F4F - FFFD FFFD FFFD FFFD FFFD 8D73 9FA5 FFFD - FFFD FFFD FFFD E5C8 8F70 FFFD FFFD FFFD - 8A58 FFFD E5C9 FFFD 8971 FFFD 8FD5 E5CA - FFFD FFFD 8D74 E5CB 88DF FFFD FFFD FFFD - FFFD 955C FFFD FFFD E5CC FFFD FFFD FFFD - FFFD 908A FFFD E5D3 FFFD FFFD E5D0 FFFD - 928F FFFD FFFD FFFD FFFD FFFD E5D1 E5CE - 8BDC FFFD E5CD E5D4 FFFD FFFD FFFD FFFD - FFFD 8C55 FFFD FFFD 91DC FFFD E5DA FFFD - FFFD FFFD FFFD E5D6 FFFD FFFD FFFD 91B3 - E5D5 FFFD E5D8 FFFD FFFD FFFD FFFD E5CF - FFFD FFFD FFFD E5D9 FFFD E5DB FFFD FFFD - FFFD FFFD FFFD FFFD 94ED FFFD FFFD E5D7 - FFFD E5DC E5DE FFFD FFFD 8CD1 E5D2 FFFD - 88BF FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E5DD FFFD 8DD9 97F4 E5DF E5E0 9195 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 97A0 FFFD FFFD FFFD FFFD E5E1 9754 FFFD - FFFD E5E2 E5E3 FFFD FFFD 95E2 E5E4 FFFD - 8DBE FFFD 97A1 FFFD FFFD FFFD FFFD FFFD - FFFD E5E9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E5EA 8FD6 E5E8 FBA2 FFFD - FFFD 9787 E5E5 FFFD FFFD E5E7 90BB 909E - FFFD FFFD FFFD E5E6 FFFD E5EB FFFD FFFD - 95A1 FFFD FFFD E5ED FFFD E5EC FFFD FFFD - FFFD 8A8C FFFD 964A E5EE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FA5D E5FA E5F0 - FFFD FFFD FFFD FFFD FFFD FFFD E5F1 FFFD - FFFD FFFD FFFD E5F2 E5F3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E5F7 - FFFD E5F8 FFFD FFFD E5F6 FFFD FFFD FFFD - FFFD FFFD E5F4 FFFD E5EF E5F5 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E5F9 E8B5 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 89A6 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E5FC - 8BDD E5FB FFFD FFFD FFFD E641 FFFD E640 - FFFD FFFD FFFD E643 FFFD FFFD E642 FFFD - E644 FFFD FFFD 8F50 FFFD E645 FFFD FFFD - E646 FFFD FFFD FFFD FFFD FFFD FFFD E647 - 90BC FFFD 9776 FFFD E648 FFFD FFFD 95A2 - 9465 E649 FFFD E64A 8CA9 FFFD FFFD FFFD - 8B4B FFFD FFFD FFFD E64B FFFD FFFD 8E8B - 9460 E64C FFFD 8A6F FFFD FFFD FFFD FFFD - FFFD FFFD E64D FFFD FFFD FFFD FFFD E64F - 9797 FFFD E64E 9065 FFFD E650 FFFD FFFD - E651 FFFD FFFD E652 8ACF FFFD FFFD FFFD - FFFD FFFD FFFD E653 FFFD FFFD E654 FFFD - E655 E656 -End of Item 00A5 - -Begin of Item 00A6 - Format 1 - srcBegin = 89D2 - srcEnd = 89E7 - mappingOffset = 36CD - Mapping = - 8A70 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E657 FFFD E658 E659 FFFD FFFD FFFD FFFD - FFFD 89F0 FFFD FFFD 9047 E65A -End of Item 00A6 - -Begin of Item 00A7 - Format 1 - srcBegin = 89F4 - srcEnd = 8B9A - mappingOffset = 36E3 - Mapping = - E65B FFFD FFFD FFFD E65C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8CBE FFFD 92F9 E65D - FFFD FFFD FFFD FFFD 8C76 FFFD 9075 FFFD - E660 FFFD 93A2 FFFD E65F FFFD FBA3 8C50 - FFFD FFFD E65E 91F5 8B4C FFFD FFFD E661 - FFFD E662 FFFD 8FD7 FFFD FFFD FFFD 8C8D - FFFD E663 FFFD FFFD FFFD FFFD 964B FFFD - FFFD 90DD FFFD FFFD FFFD 8B96 FFFD 96F3 - 9169 FFFD E664 FBA4 FFFD FFFD 9066 9290 - 8FD8 FFFD FFFD FFFD FFFD E665 FFFD FFFD - FFFD FFFD E668 FFFD E669 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8DBC 91C0 E667 FFFD - 8FD9 955D FFFD FFFD FFFD FFFD FFFD E666 - FFFD FFFD 8E8C FFFD 8972 FFFD E66D 8C77 - FFFD FFFD 8E8E FFFD FFFD 8E8D FFFD 986C - E66C E66B 9146 FFFD 8B6C 9862 8A59 8FDA - FFFD FFFD FFFD FFFD FFFD FBA5 FFFD FFFD - E66A FFFD FFFD FFFD FFFD FFFD E66F FFFD - E670 E66E FFFD 8CD6 FFFD 975F FFFD FFFD - 8E8F 9446 FFFD FFFD FFFD E673 FFFD 90BE - FFFD 9261 FFFD FFFD 9755 FFFD E676 FFFD - FFFD FFFD 8CEA FFFD 90BD E672 FFFD E677 - 8CEB E674 E675 FBA6 E671 FFFD FFFD FFFD - 90E0 93C7 FFFD FFFD 924E FFFD 89DB FFFD - FFFD FFFD FFFD FFFD FFFD 94EE FFFD FFFD - 8B62 FFFD FBA7 92B2 FFFD FFFD E67A FFFD - E678 FFFD FFFD 926B FFFD FFFD FFFD 90BF - 8AD0 E679 FFFD 907A FFFD FFFD 97C8 FFFD - FFFD FFFD 985F FFFD FFFD FFFD E67B E687 - 92B3 FFFD E686 FBA8 E683 E68B E684 FFFD - E680 FFFD 92FA E67E FFFD FFFD FFFD E67C - FFFD 9740 8E90 FFFD FFFD E681 FFFD E67D - FFFD FFFD FBAA E685 8F94 FFFD 8CBF FFFD - FFFD FFFD 91F8 FFFD 9664 8979 88E0 FFFD - 93A3 FFFD FFFD E689 FFFD FFFD FFFD FFFD - E688 FFFD 93E4 FFFD E68D FFFD FFFD FFFD - E682 FFFD E68C E68E FFFD 8CAA E68A 8D75 - FFFD 8ED3 FFFD FFFD E68F 9777 FFFD FFFD - FFFD FFFD E692 FFFD E695 FFFD FFFD E693 - 9554 FFFD FFFD FFFD FFFD FFFD FFFD E690 - FFFD FFFD FFFD FFFD FFFD 8BDE FFFD FFFD - FFFD FFFD E694 FFFD FFFD E696 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E69A FFFD FFFD - E697 FFFD E699 E698 FFFD FFFD FFFD FBAB - FFFD FFFD E69B FFFD 8EAF FFFD E69D E69C - 9588 FFFD FFFD E69F FFFD FFFD FFFD FFFD - FFFD FFFD 8C78 FFFD FFFD FFFD FFFD E69E - E6A0 FFFD FFFD E6A1 8B63 E3BF 8FF7 FFFD - E6A2 FFFD FFFD 8CEC FFFD FFFD FFFD FFFD - FFFD E6A3 FFFD FBAC E6A4 FFFD FFFD 8E5D - FFFD FFFD FFFD FFFD FFFD FFFD 9DCC FFFD - E6A5 FFFD E6A6 FFFD 8F51 FFFD E6A7 E6A8 - FFFD FFFD E6A9 FFFD FFFD E6AA E6AB -End of Item 00A7 - -Begin of Item 00A8 - Format 1 - srcBegin = 8C37 - srcEnd = 8C6C - mappingOffset = 388A - Mapping = - 924A FFFD FFFD E6AC FFFD FFFD FFFD FFFD - E6AE FFFD E6AD FFFD FFFD FFFD FFFD 93A4 - FFFD E6AF FFFD 964C FFFD E6B0 FFFD E6B1 - FFFD E6B2 FFFD FFFD FFFD FFFD E6B3 FFFD - FFFD FFFD FFFD 93D8 FFFD FFFD FFFD FFFD - FFFD FFFD 8FDB E6B4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8D8B 98AC E6B5 -End of Item 00A8 - -Begin of Item 00A9 - Format 1 - srcBegin = 8C78 - srcEnd = 8D16 - mappingOffset = 38C0 - Mapping = - E6B6 955E E6B7 FFFD E6BF FFFD FFFD FFFD - FFFD FFFD E6B8 FFFD FFFD E6BA FFFD FFFD - FFFD E6B9 E6BB FFFD 9665 E6BC E6BD FFFD - FFFD FFFD FFFD FFFD E6BE FFFD FFFD FFFD - E6C0 FFFD FFFD FFFD FFFD 8A4C 92E5 FFFD - 9589 8DE0 8D76 FFFD FFFD FFFD FFFD 956E - 89DD 94CC E6C3 8AD1 90D3 E6C2 E6C7 9299 - 96E1 FFFD E6C5 E6C6 8B4D FFFD E6C8 9483 - 91DD FFFD FFFD 94EF 935C E6C4 FFFD 9666 - 89EA E6CA 9847 92C0 9864 FFFD FFFD 8E91 - E6C9 FFFD 91AF FFFD FFFD E6DA 9147 FFFD - FFFD 93F6 FFFD 956F FFFD FFFD FFFD FFFD - FFFD FFFD E6CD 8E5E 8E92 FFFD 8FDC FFFD - 9485 FFFD 8CAB E6CC E6CB FFFD 958A FFFD - FFFD FFFD 8EBF FFFD FFFD 9371 FFFD FFFD - FBAD FFFD FFFD FFFD FBAE FFFD FFFD FFFD - FFFD FFFD E6CF E6D0 8D77 E6CE FFFD FFFD - FFFD FFFD FFFD FFFD E6D1 E6D2 FFFD E6D4 - 91A1 FFFD E6D3 8AE4 FFFD E6D6 FFFD E6D5 - E6D7 FFFD FBAF E6D9 E6DB FFFD E6DC -End of Item 00A9 - -Begin of Item 00AA - Format 1 - srcBegin = 8D64 - srcEnd = 8D8A - mappingOffset = 395F - Mapping = - 90D4 FFFD 8ECD E6DD FFFD FFFD FFFD 8A71 - FFFD E6DE FFFD FFFD 9196 E6DF FFFD E6E0 - 958B FFFD FBB0 8B4E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E6E1 FFFD FFFD - FFFD 92B4 FFFD FFFD FFFD FFFD 897A -End of Item 00AA - -Begin of Item 00AB - Format 1 - srcBegin = 8D99 - srcEnd = 8E10 - mappingOffset = 3986 - Mapping = - E6E2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8EEF FFFD FFFD FFFD FFFD 9096 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 91AB FFFD FFFD FFFD FFFD FFFD - FFFD E6E5 FFFD FFFD FFFD E6E4 FFFD FFFD - FFFD E6E3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E6EB E6E9 FFFD FFFD E6E6 FFFD - FFFD FFFD FFFD FFFD FFFD E6E8 FFFD FFFD - FFFD E6E7 E6EA FFFD 8B97 FFFD E6EE FFFD - 90D5 FFFD E6EF FFFD FFFD FFFD FFFD 8CD7 - FFFD E6EC E6ED FFFD FFFD FFFD 9848 FFFD - FFFD FFFD 92B5 FFFD 9148 FFFD FFFD FFFD - FFFD FFFD FFFD E6F0 FFFD FFFD E6F3 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E6F1 - E6F2 9778 FFFD FFFD FFFD FFFD 93A5 E6F6 -End of Item 00AB - -Begin of Item 00AC - Format 1 - srcBegin = 8E1D - srcEnd = 8E35 - mappingOffset = 39FE - Mapping = - E6F4 E6F5 E6F7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E748 FFFD FFFD - FFFD FFFD FFFD E6FA FFFD FFFD FFFD E6FB - E6F9 -End of Item 00AC - -Begin of Item 00AD - Format 1 - srcBegin = 8E42 - srcEnd = 8E64 - mappingOffset = 3A17 - Mapping = - E6F8 FFFD 92FB FFFD FFFD E740 E744 E741 - E6FC FFFD E742 FFFD FFFD FFFD E743 FFFD - FFFD FFFD FFFD E74A FFFD FFFD FFFD E745 - FFFD FFFD FFFD FFFD FFFD 90D6 E747 FFFD - FFFD E749 E746 -End of Item 00AD - -Begin of Item 00AE - Format 1 - srcBegin = 8E72 - srcEnd = 8EB1 - mappingOffset = 3A3A - Mapping = - E74C FFFD 8F52 FFFD E74B FFFD FFFD FFFD - FFFD FFFD E74D FFFD FFFD FFFD FFFD E74E - FFFD FFFD E751 E750 FFFD E74F FFFD FFFD - E753 E752 FFFD 96F4 FFFD FFFD FFFD E755 - FFFD E754 E756 FFFD FFFD FFFD FFFD E757 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E759 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E758 9067 E75A FFFD FFFD 8BEB E75B E75D -End of Item 00AE - -Begin of Item 00AF - Format 1 - srcBegin = 8EBE - srcEnd = 8EEB - mappingOffset = 3A7A - Mapping = - E75E FFFD FFFD FFFD FFFD FFFD FFFD E75F - E75C FFFD E760 FFFD 8ED4 E761 8B4F 8C52 - FFFD FBB2 FFFD FFFD 8CAC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E762 FFFD FFFD - FFFD 93EE FFFD FFFD 935D E763 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E766 -End of Item 00AF - -Begin of Item 00B0 - Format 1 - srcBegin = 8EF8 - srcEnd = 8F64 - mappingOffset = 3AA8 - Mapping = - 8EB2 FFFD FFFD E765 E764 8C79 E767 FFFD - FFFD FFFD FFFD 8A72 FFFD E769 FFFD FFFD - FFFD 8DDA E768 FFFD E771 FFFD FFFD FFFD - FFFD FFFD E76B E76D 95E3 E76A FFFD FFFD - FFFD E76C FFFD E770 E76E 8B50 FFFD E76F - FFFD FFFD FFFD FFFD FFFD FFFD E772 FFFD - FFFD 9479 97D6 FFFD FFFD FFFD FFFD 8F53 - FFFD FFFD FFFD E773 FFFD FFFD FFFD FFFD - 9741 E775 FFFD E774 FFFD FFFD E778 9760 - FFFD FFFD E777 FFFD 8A8D E776 E77B FFFD - FFFD E77A FFFD FFFD E779 9351 E77C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E77D - FFFD FFFD FFFD FFFD E77E FFFD FFFD 8D8C - FFFD 8C44 E780 E781 E782 -End of Item 00B0 - -Begin of Item 00B1 - Format 1 - srcBegin = 8F9B - srcEnd = 9091 - mappingOffset = 3B15 - Mapping = - 9068 E783 FFFD 8EAB E784 FFFD FFFD FFFD - E785 FFFD FFFD FFFD 999F 999E FFFD FFFD - FFFD FFFD E786 E390 E787 9243 904A 945F - FFFD FFFD FFFD FFFD E788 FFFD FFFD 95D3 - 92D2 8D9E FFFD FFFD 9248 FFFD FFFD 8949 - FFFD 9698 9076 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8C7D FFFD FFFD 8BDF FFFD - FFFD 95D4 FFFD FFFD FFFD FFFD FFFD E789 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E78B - FFFD FFFD E78A 89DE FFFD FFFD 93F4 E78C - 9497 FFFD 9352 FFFD E78D 8F71 FFFD FFFD - FFFD E78F FFFD FFFD 96C0 E79E E791 E792 - FFFD FFFD 92C7 FFFD FFFD 91DE 9197 FFFD - 93A6 FFFD E790 8B74 FFFD FFFD FFFD FFFD - E799 FFFD E796 E7A3 93A7 9280 E793 FFFD - 92FC 9372 E794 E798 9080 FFFD 9487 92CA - FFFD FFFD 90C0 E797 91AC 91A2 E795 88A7 - 9841 FFFD FFFD FFFD E79A FFFD FFFD FFFD - FFFD FFFD FFFD 91DF FFFD FFFD 8F54 9069 - FFFD FFFD E79C E79B FFFD 88ED E79D FFFD - FFFD 954E FFFD E7A5 FFFD FFFD 93D9 908B - FFFD FFFD 9278 FFFD 8BF6 FFFD E7A4 9756 - 895E FFFD 95D5 89DF E79F E7A0 E7A1 E7A2 - 93B9 9242 88E1 E7A6 FFFD E7A7 EAA1 FFFD - FFFD 91BB FFFD E7A8 FFFD 8993 916B FFFD - 8CAD FFFD 9779 FFFD FBB5 E7A9 934B FFFD - FFFD FFFD 9198 8ED5 E7AA FFFD FFFD E7AD - FFFD FFFD 8F85 E7AB 914A 9149 FFFD 88E2 - FFFD 97C9 E7AF FFFD 94F0 E7B1 E7B0 E7AE - E284 8AD2 FFFD FFFD E78E FFFD E7B3 E7B2 - FFFD FFFD FFFD FFFD E7B4 FFFD 9757 -End of Item 00B1 - -Begin of Item 00B2 - Format 1 - srcBegin = 90A3 - srcEnd = 90CE - mappingOffset = 3C0C - Mapping = - 93DF FFFD FFFD 964D FFFD E7B5 FFFD 8ED7 - FFFD FFFD FFFD FFFD E7B6 FFFD E7B7 FFFD - FFFD FFFD E7B8 FFFD FFFD 9340 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 88E8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8D78 - FFFD FFFD FFFD 9859 -End of Item 00B2 - -Begin of Item 00B3 - Format 1 - srcBegin = 90DB - srcEnd = 9102 - mappingOffset = 3C38 - Mapping = - E7BC FFFD FFFD FBB6 FFFD FFFD 8C53 E7B9 - FFFD E7BA FFFD FFFD FFFD 9594 FFFD FFFD - FFFD FFFD 8A73 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9758 FFFD 8BBD FFFD FFFD FFFD - FFFD FFFD 9373 FFFD FFFD FFFD FFFD E7BD -End of Item 00B3 - -Begin of Item 00B4 - Format 1 - srcBegin = 9112 - srcEnd = 9119 - mappingOffset = 3C60 - Mapping = - E7BE FFFD FFFD FBB8 FFFD FFFD FFFD E7BF -End of Item 00B4 - -Begin of Item 00B5 - Format 1 - srcBegin = 9127 - srcEnd = 9132 - mappingOffset = 3C68 - Mapping = - FBB9 FFFD FFFD FFFD FFFD FFFD 9341 FFFD - FFFD E7C1 FFFD E7C0 -End of Item 00B5 - -Begin of Item 00B6 - Format 1 - srcBegin = 9149 - srcEnd = 92B9 - mappingOffset = 3C74 - Mapping = - 93D1 E7C2 8F55 8EDE 947A 9291 FFFD FFFD - FFFD 8EF0 FFFD 908C FFFD E7C3 FFFD E7C4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 907C E7C5 FFFD E7C6 FFFD FFFD FFFD - E7C7 978F FFFD 8F56 FFFD FFFD FFFD FFFD - FFFD E7C9 E7C8 FFFD 8D79 FFFD 8D93 8E5F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E7CC FFFD FFFD FFFD FFFD 8F86 FFFD - E7CB FFFD E7CA FFFD 91E7 FFFD FFFD 8CED - FFFD 90C1 FFFD FFFD FFFD FFFD 94AE FFFD - FFFD FFFD FFFD 8F58 FFFD FFFD FFFD FFFD - FFFD E7CD FFFD 8FDD FFFD FFFD FFFD FFFD - FFFD E7D0 E7CE FFFD FFFD FFFD E7CF FFFD - FFFD FFFD FFFD E7D2 E7D1 FFFD FFFD 8FF8 - FFFD E7D3 FFFD FFFD FFFD FFFD FFFD E7D4 - E7D5 FFFD FFFD FFFD FFFD 94CE 8DD1 8EDF - E7D6 FFFD E7D7 97A2 8F64 96EC 97CA E7D8 - 8BE0 FFFD FFFD FFFD FFFD E7D9 FBBB 9342 - FFFD FBBA E7DC 8A98 906A FBBC E7DA FFFD - E7DB FFFD 92DE FBBF FBC0 9674 8BFA FFFD - FFFD FFFD FFFD FFFD FBBD FBBE FFFD FFFD - FFFD FFFD FFFD FFFD E7DE E7DF FFFD FFFD - FFFD FFFD FFFD E7DD FFFD FFFD E7E1 FFFD - FFFD FFFD FFFD FFFD FFFD FBC1 FFFD FFFD - FFFD FBC3 FFFD FFFD 93DD 8A62 FFFD FBC2 - E7E5 FFFD FFFD E7E2 E7E4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E7E0 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E86E FFFD FFFD E7E3 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 97E9 FFFD FFFD 8CD8 FFFD - FBCA FBC4 FFFD FBC6 FFFD FFFD E7ED FBC5 - FFFD FFFD FFFD 9353 E7E8 FFFD FFFD E7EB - E7E9 FFFD E7EE FFFD FFFD FBC7 FFFD E7EF - FBC9 FFFD FFFD FFFD FFFD FFFD E7E7 FFFD - FBC8 E7F4 8994 FFFD FFFD E7E6 FFFD FFFD - FFFD 94AB FFFD E7EA FFFD 8FDE FBCB FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8D7A FFFD FFFD FFFD FFFD FFFD FBCD FBCE - FFFD FFFD FFFD FFFD FFFD 9667 FFFD 8BE2 - FFFD FFFD 8F65 FFFD 93BA FFFD FFFD FA5F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 914C FFFD E7F2 FFFD E7EC E7F1 FFFD 96C1 - FFFD 92B6 E7F3 E7F0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FBCC FFFD - FFFD FFFD FFFD FFFD 914B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E7F7 FFFD - E7F6 -End of Item 00B6 - -Begin of Item 00B7 - Format 1 - srcBegin = 92CF - srcEnd = 9360 - mappingOffset = 3DE5 - Mapping = - E7F5 FBD2 FFFD 964E FBD6 FFFD FBD4 FFFD - FBD0 FFFD FBD1 FFFD FFFD FFFD FFFD FFFD - FFFD FBD5 FFFD FFFD FFFD 8F9B FFFD FFFD - FBCF FFFD E7F8 95DD FFFD FFFD 8973 FFFD - FFFD FFFD FFFD 9565 9292 FFFD FFFD FFFD - FFFD 8B98 FA65 E7FA FBD9 8D7C FFFD FFFD - FBDC FFFD FFFD FBDE FFFD FFFD FFFD 8E4B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E7F9 908D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 908E E840 E842 FFFD FFFD FBDD FBDB - FFFD 8FF9 FBD8 E841 E843 FFFD FBD7 8BD1 - FFFD 9564 FFFD FFFD 8EE0 9842 FFFD E7FC - 8DF6 FFFD FFFD 985E FFFD FFFD E845 FFFD - FFFD FFFD FFFD E844 E846 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E7FB FFFD FFFD - FFFD FA5E FFFD FFFD 93E7 FFFD 9374 FFFD - FFFD FFFD FFFD FFFD FFFD 92D5 FFFD E84B - FBE0 FFFD FFFD FFFD 9262 E847 FFFD FFFD - FFFD E848 -End of Item 00B7 - -Begin of Item 00B8 - Format 1 - srcBegin = 936C - srcEnd = 937E - mappingOffset = 3E77 - Mapping = - 8C4C FFFD E84A FFFD FBDF FFFD FFFD FFFD - FFFD 8CAE FFFD FFFD FFFD FFFD FFFD FFFD - E849 FFFD 8FDF -End of Item 00B8 - -Begin of Item 00B9 - Format 1 - srcBegin = 938C - srcEnd = 93E8 - mappingOffset = 3E8A - Mapping = - 8A99 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E84F FFFD 8DBD 9199 FFFD FFFD 92C8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FBE1 FFFD FFFD 8A5A FFFD FFFD FFFD FFFD - E84D E84E 92C1 FFFD E84C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E850 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E856 - FFFD FFFD FBE2 FFFD E859 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E858 934C FFFD FFFD - FFFD FFFD E851 E852 E855 FFFD FFFD FFFD - FFFD E857 FBE3 FFFD FFFD 8BBE FFFD FFFD - E85A E854 FFFD FFFD E853 -End of Item 00B9 - -Begin of Item 00BA - Format 1 - srcBegin = 93F8 - srcEnd = 9481 - mappingOffset = 3EE7 - Mapping = - FBE4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E85E FFFD FFFD FFFD E85F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E860 FFFD FFFD E85D E85C FFFD FFFD FFFD - 8FE0 93A8 E85B FFFD FFFD FFFD FFFD FFFD - FFFD E864 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E862 FFFD FFFD FFFD FFFD - FFFD FBE5 FFFD FFFD FFFD E863 E861 FFFD - 91F6 FFFD E865 FFFD FFFD FFFD FFFD FFFD - FFFD E866 FFFD FFFD E868 FBE6 FFFD FFFD - FBE7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8AD3 E867 96F8 FFFD FFFD FFFD FFFD - FFFD FFFD E873 E869 FFFD FFFD E86C FFFD - E86A FFFD E86B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E86D FFFD FFFD FFFD FFFD FFFD - E86F FFFD FFFD FFFD FFFD E870 FFFD E871 - FFFD FFFD FFFD FFFD E874 E872 E875 E877 - FFFD E876 -End of Item 00BA - -Begin of Item 00BB - Format 1 - srcBegin = 9577 - srcEnd = 95E5 - mappingOffset = 3F71 - Mapping = - 92B7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 96E5 FFFD E878 914D FFFD FFFD FFFD - E879 FFFD 95C2 E87A 8A4A FFFD FFFD FFFD - 895B FFFD 8AD5 FBE8 8AD4 E87B FFFD E87C - FFFD E87D E87E FFFD FFFD FFFD FFFD FFFD - FFFD E880 FFFD 8AD6 8A74 8D7D 94B4 FFFD - E882 E881 FFFD FFFD FFFD FFFD E883 FFFD - FFFD FFFD FFFD 897B FFFD FFFD FFFD FFFD - FFFD FFFD E886 FFFD E885 E884 FFFD E887 - FFFD FFFD FFFD FFFD E88A FFFD FFFD FFFD - 88C5 FFFD FFFD E888 FFFD E88C E88B FFFD - FFFD FFFD FFFD FFFD FFFD E88E E88D E88F - FFFD 93AC FFFD FFFD FFFD E890 FFFD FFFD - FFFD FFFD E891 E893 FFFD FFFD E892 -End of Item 00BB - -Begin of Item 00BC - Format 1 - srcBegin = 961C - srcEnd = 97B4 - mappingOffset = 3FE0 - Mapping = - 958C FFFD FFFD FFFD FFFD E894 FFFD FFFD - FFFD FFFD FFFD FFFD E895 FFFD 8DE3 FFFD - FFFD FFFD E896 E897 FFFD FFFD 9668 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 916A - FFFD FFFD FFFD 88A2 91C9 FFFD E898 FFFD - 958D FFFD FFFD FFFD FFFD FFFD FFFD E89B - E899 8D7E FFFD E89A 8CC0 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 95C3 - E89D E89F E89E E8A0 FFFD FFFD 8940 9077 - 8F9C 8AD7 E8A1 FFFD FFFD FFFD 9486 FFFD - E8A3 FFFD FFFD FFFD 8941 FFFD E8A2 92C2 - FFFD 97CB 93A9 E89C 97A4 FFFD 8CAF FFFD - FFFD 977A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8BF7 97B2 FFFD 8C47 FFFD 91E0 E440 - FFFD E8A4 8A4B 908F FFFD FFFD FFFD FFFD - 8A75 E8A6 FFFD E8A7 E8A5 8C84 FFFD 8DDB - 8FE1 FBEB FFFD FFFD 8942 FFFD FFFD 97D7 - FFFD FFFD FFFD E8A9 E7AC FFFD E8A8 FFFD - FFFD FFFD FFFD FBEC E8AC E8AA E8AB FFFD - E8AD FFFD E8AE 97EA E8AF E8B0 FFFD 90C7 - 94B9 FFFD FFFD FFFD 909D 8AE5 FFFD FFFD - 9759 89EB 8F57 8CD9 FFFD E8B3 FFFD E8B2 - 8E93 E8B4 E8B1 FFFD FFFD 8E47 FFFD FFFD - FFFD E8B8 E5AB FFFD FFFD 99D4 FFFD 9097 - E8B6 FFFD FFFD FFFD FFFD FFFD 97A3 93EF - FFFD FFFD FFFD FFFD 894A FFFD 90E1 8EB4 - FFFD FFFD FFFD FFFD 95B5 FFFD 895F FFFD - FFFD FFFD 97EB 978B FFFD E8B9 FFFD 9364 - FFFD FFFD FFFD FFFD 8EF9 FFFD FFFD FFFD - E8BA FFFD E8BB 906B E8BC FFFD 97EC FFFD - FFFD E8B7 E8BE E8C0 FFFD E8BF FFFD E8BD - FFFD FFFD E8C1 FFFD FFFD E8C2 FFFD FFFD - 919A FFFD 89E0 FFFD FFFD FFFD FFFD FFFD - E8C3 FFFD FFFD 96B6 FFFD FFFD E8C4 FFFD - FFFD FFFD FFFD FFFD E8C5 FFFD 9849 FBED - FFFD FFFD FFFD FFFD 9E50 E8C6 FFFD FBEE - FFFD E8C7 E8C8 FFFD FFFD FFFD E8CC FBEF - E8C9 FFFD E8CA FFFD E8CB E8CD FFFD FFFD - FFFD FBF0 FFFD FBF1 FFFD FBF2 90C2 FFFD - FFFD FBF3 96F5 FFFD FFFD 90C3 FFFD FFFD - E8CE FFFD 94F1 FFFD E8CF EA72 96CA FFFD - E8D0 FFFD E8D1 FFFD E8D2 8A76 FFFD E8D4 - FFFD 9078 FFFD FFFD FFFD E8D5 FFFD FFFD - 8C43 FFFD FFFD FFFD FFFD E8D6 E8DA FFFD - E8D8 FFFD FFFD FFFD FFFD E8D9 FFFD FFFD - 8A93 E8D7 E8DB FFFD FFFD FFFD FFFD E8DC - FFFD 88C6 FFFD E8DD E8DE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8FE2 FFFD FFFD FFFD - E8DF FFFD FFFD FFFD 8B66 FFFD FFFD E8E2 - FFFD FFFD E8E1 FFFD E8E0 FFFD FFFD E691 - FFFD 95DA FFFD FFFD FFFD FFFD FFFD E8E3 - E8E4 -End of Item 00BC - -Begin of Item 00BD - Format 1 - srcBegin = 97C3 - srcEnd = 97DC - mappingOffset = 4179 - Mapping = - E8E5 FFFD FFFD E8E6 FFFD E8E7 FFFD FFFD - E8E8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8AD8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E8E9 -End of Item 00BD - -Begin of Item 00BE - Format 1 - srcBegin = 97ED - srcEnd = 9874 - mappingOffset = 4193 - Mapping = - E8EA 9442 FFFD FFFD FFFD E8EC 89B9 FFFD - E8EF E8EE FFFD FFFD FFFD FFFD 8943 FFFD - FFFD FFFD 8BBF FFFD 95C5 92B8 8DA0 FFFD - 8D80 8F87 FFFD 907B FFFD FFFD FFFD E8F1 - FFFD FFFD E8F0 9761 8AE6 94D0 93DA FFFD - FFFD FFFD 909C 97CC FFFD 8C7A FFFD FFFD - FFFD FFFD FFFD FFFD E8F4 FFFD FFFD E8F3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 966A - 93AA FFFD FFFD FFFD FFFD FFFD FFFD 896F - FFFD FFFD E8F5 E8F2 FFFD FFFD 9570 978A - E8F6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E8F7 FFFD FFFD FFFD FFFD E8F9 91E8 - 8A7A 8A7B E8F8 FFFD FFFD FFFD FFFD 8AE7 - 8CB0 FFFD FBF4 8AE8 FFFD FFFD 935E FFFD - FFFD 97DE FFFD FFFD FFFD FFFD FFFD FFFD - FBF5 FFFD 8CDA FFFD FFFD FFFD E8FA FFFD - FFFD FFFD E8FB E8FC E940 FFFD E942 E941 -End of Item 00BE - -Begin of Item 00BF - Format 1 - srcBegin = 98A8 - srcEnd = 98B6 - mappingOffset = 421B - Mapping = - 9597 FFFD E943 FFFD FFFD FFFD FFFD E944 - FFFD E945 FFFD FFFD FFFD FFFD E946 -End of Item 00BF - -Begin of Item 00C0 - Format 1 - srcBegin = 98C3 - srcEnd = 98C6 - mappingOffset = 422A - Mapping = - E948 E947 FFFD E949 -End of Item 00C0 - -Begin of Item 00C1 - Format 1 - srcBegin = 98DB - srcEnd = 992E - mappingOffset = 422E - Mapping = - 94F2 E3CA FFFD FFFD 9048 FFFD FFFD 8B51 - FFFD FFFD FFFD FFFD FFFD FFFD E94A FFFD - E94B FFFD 99AA 9F5A 94D1 FFFD FFFD 88F9 - FFFD 88B9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8E94 964F 8FFC FFFD FFFD FFFD FFFD - E94C FFFD 96DD FFFD FFFD FFFD E94D 977B - FFFD 8961 FFFD FFFD FFFD 8E60 FFFD E94E - 89EC E94F FFFD FFFD FFFD E950 FFFD FFFD - FFFD FFFD E952 E953 FFFD E955 E951 FFFD - FFFD E954 FFFD FFFD FBF8 8AD9 FFFD FFFD - FFFD E956 FFFD E957 -End of Item 00C1 - -Begin of Item 00C2 - Format 1 - srcBegin = 993D - srcEnd = 9957 - mappingOffset = 4282 - Mapping = - E958 E959 FFFD FFFD FFFD E95A FFFD FFFD - E95C FFFD FFFD FFFD E95B FFFD E95E E961 - FFFD FFFD FFFD E95D E95F E960 FFFD FFFD - E962 FFFD 8BC0 -End of Item 00C2 - -Begin of Item 00C3 - Format 1 - srcBegin = 9996 - srcEnd = 9A19 - mappingOffset = 429D - Mapping = - 8EF1 E963 E964 8D81 FFFD FFFD FFFD FFFD - FBFA FFFD FFFD FFFD FFFD FFFD FFFD E965 - FFFD FFFD 8A5D FFFD FFFD FFFD 946E E966 - E967 FFFD FFFD FFFD FFFD 9279 93E9 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E968 FFFD - FFFD FFFD FFFD 949D FFFD FFFD 91CA 8977 - 8BEC FFFD 8BED FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9293 E96D 8BEE FFFD FFFD 89ED - FFFD FFFD E96C FFFD FFFD E96A FFFD E96B - FFFD E969 FFFD FFFD E977 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E96E - E96F FFFD FFFD E970 E971 FFFD FFFD FFFD - FFFD FFFD E973 FFFD FFFD E972 FFFD FFFD - FFFD 8F78 FFFD E974 FFFD FFFD FFFD E976 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8B52 E975 FFFD FFFD 919B 8CB1 FFFD FFFD - FFFD FFFD FFFD E978 -End of Item 00C3 - -Begin of Item 00C4 - Format 1 - srcBegin = 9A28 - srcEnd = 9A6B - mappingOffset = 4321 - Mapping = - 91CB FFFD FFFD E979 FFFD FFFD FFFD FFFD - 93AB FFFD FFFD FFFD FFFD FFFD FFFD E97A - FFFD FFFD FFFD FFFD FFFD FFFD E980 FFFD - E97D FFFD E97C E97E FFFD E97B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E982 FBFB FFFD - FFFD FFFD FFFD FFFD FFFD E981 FFFD E984 - FFFD FFFD 8BC1 E983 FFFD FFFD FFFD E985 - FFFD FFFD E986 FFFD E988 E987 FFFD FFFD - FFFD E989 E98B E98A -End of Item 00C4 - -Begin of Item 00C5 - Format 1 - srcBegin = 9AA8 - srcEnd = 9B06 - mappingOffset = 4365 - Mapping = - 8D9C FFFD FFFD FFFD FFFD E98C FFFD FFFD - E98D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8A5B FFFD FFFD FFFD E98E FFFD FFFD FFFD - E98F FFFD FFFD FFFD 9091 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E990 - FFFD E991 FFFD E992 E993 FFFD FFFD FFFD - 8D82 FBFC FFFD FFFD FC40 FFFD E994 E995 - FFFD FFFD E996 E997 FFFD FFFD E998 FFFD - FFFD FFFD 94AF E99A FFFD 9545 E99B E999 - FFFD E99D FFFD FFFD E99C FFFD FFFD E99E - FFFD FFFD FFFD E99F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E9A0 -End of Item 00C5 - -Begin of Item 00C6 - Format 1 - srcBegin = 9B18 - srcEnd = 9B5A - mappingOffset = 43C4 - Mapping = - E9A1 FFFD E9A2 FFFD FFFD FFFD FFFD E9A3 - FFFD FFFD E9A4 E9A5 FFFD E9A6 FFFD E9A7 - E9A8 E9A9 E9AA FFFD FFFD FFFD E9AB E9AC - FFFD 9F54 E9AD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E2F6 8B53 FFFD FFFD FFFD - FFFD 8A40 8DB0 E9AF E9AE 96A3 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E9B1 E9B2 E9B0 - FFFD E9B3 FFFD FFFD 9682 FFFD FFFD FFFD - E9B4 FFFD 8B9B -End of Item 00C6 - -Begin of Item 00C7 - Format 1 - srcBegin = 9B6F - srcEnd = 9B75 - mappingOffset = 4407 - Mapping = - 9844 FFFD FFFD FC42 FFFD E9B5 FC41 -End of Item 00C7 - -Begin of Item 00C8 - Format 1 - srcBegin = 9B83 - srcEnd = 9C67 - mappingOffset = 440E - Mapping = - E9B7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 88BC FC43 FFFD E9B8 95A9 - E9B6 FFFD FFFD E9B9 E9BA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E9BB E9BC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E9BD FFFD 968E - 8E4C FFFD 8DF8 914E FFFD FFFD FC44 FFFD - FFFD E9BE FFFD FFFD FFFD FFFD E9C1 FFFD - FC45 FFFD FFFD FFFD FFFD E9BF FFFD FFFD - FFFD FFFD FFFD E9C2 FFFD FFFD 8CEF E9C0 - FFFD FFFD FFFD FFFD E9C3 FFFD E9C4 E9C5 - FFFD E9C9 FFFD 8E49 FFFD FFFD FFFD FFFD - 91E2 FFFD FFFD FFFD FFFD FFFD E9CA E9C7 - E9C6 E9C8 FFFD FFFD FFFD 8C7E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E9CE E9CD E9CC - FFFD FFFD 88B1 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FC46 FFFD FFFD - FFFD E9D8 FFFD E9D4 FFFD E9D5 E9D1 E9D7 - FFFD E9D3 8A82 FFFD FFFD 986B FFFD E9D6 - E9D2 E9D0 E9CF FFFD FFFD FFFD FFFD FFFD - E9DA FFFD FFFD FFFD FFFD FFFD E9DD FFFD - FFFD E9DC E9DB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9568 E9D9 88F1 E9DE FFFD E9E0 - FFFD FFFD FFFD FFFD FFFD FFFD 8A8F E9CB - 8956 FFFD FFFD E9E2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E9E1 E9DF 924C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9690 - FFFD FFFD FFFD FFFD 97D8 FFFD FFFD E9E3 - FFFD FFFD FFFD FFFD FFFD E9E4 FFFD FFFD - FFFD FFFD FFFD FFFD E9E5 -End of Item 00C8 - -Begin of Item 00C9 - Format 1 - srcBegin = 9C76 - srcEnd = 9C78 - mappingOffset = 44F3 - Mapping = - E9E6 FFFD E9E7 -End of Item 00C9 - -Begin of Item 00CA - Format 1 - srcBegin = 9CE5 - srcEnd = 9CF6 - mappingOffset = 44F6 - Mapping = - 92B9 FFFD E9E8 FFFD 94B5 FFFD E9ED E9E9 - FFFD FFFD FFFD E9EA FFFD FFFD 9650 96C2 - FFFD 93CE -End of Item 00CA - -Begin of Item 00CB - Format 1 - srcBegin = 9D03 - srcEnd = 9D2C - mappingOffset = 4508 - Mapping = - E9EE FFFD FFFD E9EF 93BC E9EC E9EB FFFD - FFFD FFFD FFFD 89A8 FFFD FFFD FFFD E9F7 - FFFD FFFD E9F6 FFFD FFFD FFFD FFFD FFFD - 8995 FFFD FFFD FFFD E9F4 FFFD FFFD FFFD - E9F3 FFFD FFFD E9F1 FFFD 8A9B FFFD E9F0 - 8EB0 89A7 -End of Item 00CB - -Begin of Item 00CC - Format 1 - srcBegin = 9D3B - srcEnd = 9D7A - mappingOffset = 4532 - Mapping = - 8D83 FFFD FFFD E9FA E9F9 FFFD E9F8 FFFD - FFFD E9F5 FFFD E9FB FFFD E9FC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EA44 EA43 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD EA45 FFFD - FFFD 894C EA40 EA41 FFFD 8D94 96B7 FFFD - FFFD EA42 FFFD FFFD FFFD FFFD FFFD FFFD - FC48 9651 FFFD FFFD EA4A FC47 FFFD EA46 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EA4B -End of Item 00CC - -Begin of Item 00CD - Format 1 - srcBegin = 9D87 - srcEnd = 9DD9 - mappingOffset = 4572 - Mapping = - EA48 FFFD EA47 FFFD FFFD FFFD FFFD FFFD - 8C7B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EA4C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EA4D FFFD FFFD - FFFD FFFD EA4E FFFD EA49 FFFD FFFD FFFD - E9F2 FFFD FFFD EA4F FFFD 92DF FFFD FFFD - FFFD EA53 FFFD EA54 EA52 FFFD FFFD FFFD - FFFD FFFD EA51 EA57 FFFD EA50 FFFD EA55 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EA56 FFFD FFFD FFFD EA59 FFFD FFFD FFFD - FFFD FFFD EA58 -End of Item 00CD - -Begin of Item 00CE - Format 1 - srcBegin = 9DE6 - srcEnd = 9DFD - mappingOffset = 45C5 - Mapping = - EA5B FFFD FFFD FFFD FFFD FFFD FFFD EA5C - FFFD EA5D FFFD FFFD 9868 FFFD FFFD FFFD - FFFD FFFD EA5A 91E9 8DEB FFFD FFFD EA5E -End of Item 00CE - -Begin of Item 00CF - Format 1 - srcBegin = 9E19 - srcEnd = 9E1E - mappingOffset = 45DD - Mapping = - FC4A EA5F EA60 FFFD FFFD EA61 -End of Item 00CF - -Begin of Item 00D0 - Format 1 - srcBegin = 9E75 - srcEnd = 9F2C - mappingOffset = 45E3 - Mapping = - EA62 FFFD FFFD 8CB2 EA63 FFFD FFFD FFFD - EA64 FFFD 8EAD FFFD EA65 FFFD FFFD FFFD - FFFD FFFD FFFD EA66 FFFD FFFD EA67 EA68 - FFFD FFFD FFFD FFFD EA6B EA69 985B FFFD - EA6A FFFD 97ED FFFD FFFD FFFD FFFD FFFD - EA6C FFFD 97D9 FFFD FFFD FFFD FFFD FFFD - EA6D 949E FFFD FFFD EA6E EA70 FFFD FFFD - EA71 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EA6F 8D8D 96CB 9683 9BF5 - FFFD 9F80 969B FFFD FFFD FFFD FFFD 89A9 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EA73 - 8B6F EA74 EA75 EA76 FC4B 8D95 FFFD EA77 - FFFD FFFD FFFD E0D2 96D9 FFFD 91E1 EA78 - EA7A EA79 FFFD EA7B FFFD FFFD FFFD FFFD - EA7C FFFD FFFD EA7D FFFD FFFD FFFD FFFD - FFFD FFFD EA7E FFFD FFFD FFFD FFFD EA80 - FFFD EA81 EA82 FFFD EA83 FFFD EA84 EA85 - EA86 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD EA87 EA88 FFFD FFFD FFFD FFFD - FFFD 9343 FFFD FFFD FFFD FFFD 8CDB FFFD - EA8A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 916C EA8B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EA8C -End of Item 00D0 - -Begin of Item 00D1 - Format 1 - srcBegin = 9F3B - srcEnd = 9F3E - mappingOffset = 469B - Mapping = - 9540 FFFD FFFD EA8D -End of Item 00D1 - -Begin of Item 00D2 - Format 1 - srcBegin = 9F4A - srcEnd = 9F77 - mappingOffset = 469F - Mapping = - EA8E E256 FFFD FFFD E6D8 E8EB FFFD FFFD - EA8F FFFD EA90 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EA92 EA93 EA94 - 97EE EA91 FFFD FFFD EA95 EA96 FFFD FFFD - EA98 FFFD EA97 FFFD FFFD FFFD FFFD FFFD - EA9A FFFD FFFD FFFD EA9B EA99 -End of Item 00D2 - -Begin of Item 00D3 - Format 1 - srcBegin = 9F8D - srcEnd = 9FA0 - mappingOffset = 46CD - Mapping = - 97B4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EA9C FFFD FFFD FFFD FFFD FFFD FFFD EA9D - E273 FFFD FFFD EA9E -End of Item 00D3 - -Begin of Item 00D4 - Format 2 - srcBegin = F929 - destBegin = FAE0 -End of Item 00D4 - -Begin of Item 00D5 - Format 2 - srcBegin = F9DC - destBegin = FBE9 -End of Item 00D5 - -Begin of Item 00D6 - Format 1 - srcBegin = FA0E - srcEnd = FA2D - mappingOffset = 46E1 - Mapping = - FA90 FA9B FA9C FAB1 FAD8 FAE8 FAEA FB58 - FB5E FB75 FB7D FB7E FB80 FB82 FB86 FB89 - FB92 FB9D FB9F FBA0 FBA9 FBB1 FBB3 FBB4 - FBB7 FBD3 FBDA FBEA FBF6 FBF7 FBF9 FC49 -End of Item 00D6 - -Begin of Item 00D7 - Format 1 - srcBegin = FF01 - srcEnd = FF20 - mappingOffset = 4701 - Mapping = - 8149 FA57 8194 8190 8193 8195 FA56 8169 - 816A 8196 817B 8143 817C 8144 815E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8146 8147 8183 8181 8184 8148 8197 -End of Item 00D7 - -Begin of Item 00D8 - Format 1 - srcBegin = FF3B - srcEnd = FF40 - mappingOffset = 4721 - Mapping = - 816D 815F 816E 814F 8151 814D -End of Item 00D8 - -Begin of Item 00D9 - Format 1 - srcBegin = FF5B - srcEnd = FF5E - mappingOffset = 4727 - Mapping = - 816F 8162 8170 8160 -End of Item 00D9 - -Begin of Item 00DA - Format 1 - srcBegin = FFE0 - srcEnd = FFE5 - mappingOffset = 472B - Mapping = - 8191 8192 FA54 8150 FA55 818F -End of Item 00DA - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x00DB, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x003B, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x02CC, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0015 */ -/* Total of Format 1 : 0x00B4 */ -/* Total of Format 2 : 0x0012 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2210, 0x2122, 0x1111, -0x2112, 0x1122, 0x1121, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1121, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x2111, 0x1111, -0x1211, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1211, -0x1111, 0x1112, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1122, 0x0111, -/*-------------------------------------------------------*/ -/* Offset=0x003B Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0391, 0x03A1, 0x839F, -/* 0002 */ 0x03A3, 0x03A9, 0x83B0, -/* 0003 */ 0x03B1, 0x03C1, 0x83BF, -/* 0004 */ 0x03C3, 0x03C9, 0x83D0, -/* 0005 */ 0x0410, 0x0415, 0x8440, -/* 0006 */ 0x0416, 0x042F, 0x8447, -/* 0007 */ 0x0430, 0x0435, 0x8470, -/* 0008 */ 0x0436, 0x043D, 0x8477, -/* 0009 */ 0x043E, 0x044F, 0x8480, -/* 000A */ 0x2160, 0x2169, 0xFA4A, -/* 000B */ 0x2170, 0x2179, 0xFA40, -/* 000C */ 0x2460, 0x2473, 0x8740, -/* 000D */ 0x3008, 0x3011, 0x8171, -/* 000E */ 0x3041, 0x3093, 0x829F, -/* 000F */ 0x30A1, 0x30DF, 0x8340, -/* 0010 */ 0x30E0, 0x30F6, 0x8380, -/* 0011 */ 0xFF10, 0xFF19, 0x824F, -/* 0012 */ 0xFF21, 0xFF3A, 0x8260, -/* 0013 */ 0xFF41, 0xFF5A, 0x8281, -/* 0014 */ 0xFF61, 0xFF9F, 0x00A1, -/* 0015 */ 0x00A7, 0x00B6, 0x0000, -/* 0016 */ 0x00D7, 0x0000, 0x817E, -/* 0017 */ 0x00F7, 0x0000, 0x8180, -/* 0018 */ 0x0401, 0x0000, 0x8446, -/* 0019 */ 0x0451, 0x0000, 0x8476, -/* 001A */ 0x2010, 0x203B, 0x0010, -/* 001B */ 0x2103, 0x0000, 0x818E, -/* 001C */ 0x2116, 0x212B, 0x003C, -/* 001D */ 0x2190, 0x2193, 0x0052, -/* 001E */ 0x21D2, 0x21D4, 0x0056, -/* 001F */ 0x2200, 0x223D, 0x0059, -/* 0020 */ 0x2252, 0x0000, 0x8790, -/* 0021 */ 0x2260, 0x226B, 0x0097, -/* 0022 */ 0x2282, 0x2287, 0x00A3, -/* 0023 */ 0x22A5, 0x0000, 0x8796, -/* 0024 */ 0x22BF, 0x0000, 0x8799, -/* 0025 */ 0x2312, 0x0000, 0x81DC, -/* 0026 */ 0x2500, 0x254B, 0x00A9, -/* 0027 */ 0x25A0, 0x25A1, 0x00F5, -/* 0028 */ 0x25B2, 0x25CF, 0x00F7, -/* 0029 */ 0x25EF, 0x0000, 0x81FC, -/* 002A */ 0x2605, 0x2606, 0x0115, -/* 002B */ 0x2640, 0x2642, 0x0117, -/* 002C */ 0x266A, 0x266F, 0x011A, -/* 002D */ 0x3000, 0x301F, 0x0120, -/* 002E */ 0x309B, 0x309E, 0x0140, -/* 002F */ 0x30FB, 0x30FE, 0x0144, -/* 0030 */ 0x3231, 0x3239, 0x0148, -/* 0031 */ 0x32A4, 0x32A8, 0x0151, -/* 0032 */ 0x3303, 0x333B, 0x0156, -/* 0033 */ 0x3349, 0x3357, 0x018F, -/* 0034 */ 0x337B, 0x337E, 0x019E, -/* 0035 */ 0x338E, 0x338F, 0x01A2, -/* 0036 */ 0x339C, 0x33A1, 0x01A4, -/* 0037 */ 0x33C4, 0x33CD, 0x01AA, -/* 0038 */ 0x4E00, 0x4E62, 0x01B4, -/* 0039 */ 0x4E71, 0x4F1D, 0x0217, -/* 003A */ 0x4F2F, 0x509A, 0x02C4, -/* 003B */ 0x50AC, 0x5384, 0x0430, -/* 003C */ 0x5393, 0x5451, 0x0709, -/* 003D */ 0x545F, 0x54C9, 0x07C8, -/* 003E */ 0x54D8, 0x5516, 0x0833, -/* 003F */ 0x552E, 0x5563, 0x0872, -/* 0040 */ 0x557B, 0x558B, 0x08A8, -/* 0041 */ 0x5598, 0x55B6, 0x08B9, -/* 0042 */ 0x55C4, 0x55C7, 0x08D8, -/* 0043 */ 0x55D4, 0x55E4, 0x08DC, -/* 0044 */ 0x55F7, 0x561B, 0x08ED, -/* 0045 */ 0x5629, 0x5694, 0x0912, -/* 0046 */ 0x56A0, 0x576A, 0x097E, -/* 0047 */ 0x577F, 0x5793, 0x0A49, -/* 0048 */ 0x57A0, 0x57B3, 0x0A5E, -/* 0049 */ 0x57C0, 0x57E3, 0x0A72, -/* 004A */ 0x57F4, 0x5885, 0x0A96, -/* 004B */ 0x5893, 0x5A49, 0x0B28, -/* 004C */ 0x5A5A, 0x5A6C, 0x0CDF, -/* 004D */ 0x5A7F, 0x0000, 0x96B9, -/* 004E */ 0x5A92, 0x5A9B, 0x0CF2, -/* 004F */ 0x5ABC, 0x5AE9, 0x0CFC, -/* 0050 */ 0x5AFA, 0x5AFB, 0x0D2A, -/* 0051 */ 0x5B09, 0x5B16, 0x0D2C, -/* 0052 */ 0x5B22, 0x5C79, 0x0D3A, -/* 0053 */ 0x5C8C, 0x5C94, 0x0E92, -/* 0054 */ 0x5CA1, 0x5CC7, 0x0E9B, -/* 0055 */ 0x5CD9, 0x5D29, 0x0EC2, -/* 0056 */ 0x5D42, 0x5D5C, 0x0F13, -/* 0057 */ 0x5D69, 0x5D76, 0x0F2E, -/* 0058 */ 0x5D82, 0x5D90, 0x0F3C, -/* 0059 */ 0x5D9D, 0x5DBD, 0x0F4B, -/* 005A */ 0x5DC9, 0x5E64, 0x0F6C, -/* 005B */ 0x5E72, 0x5FFF, 0x1008, -/* 005C */ 0x600E, 0x61D0, 0x1196, -/* 005D */ 0x61E3, 0x61E6, 0x1359, -/* 005E */ 0x61F2, 0x63FA, 0x135D, -/* 005F */ 0x6406, 0x6442, 0x1566, -/* 0060 */ 0x644E, 0x6505, 0x15A3, -/* 0061 */ 0x6518, 0x66C9, 0x165B, -/* 0062 */ 0x66D6, 0x6804, 0x180D, -/* 0063 */ 0x6813, 0x6867, 0x193C, -/* 0064 */ 0x6874, 0x6A4B, 0x1991, -/* 0065 */ 0x6A58, 0x6AC3, 0x1B69, -/* 0066 */ 0x6AD1, 0x6AEA, 0x1BD5, -/* 0067 */ 0x6AFA, 0x6BDF, 0x1BEF, -/* 0068 */ 0x6BEB, 0x6BF3, 0x1CD5, -/* 0069 */ 0x6C08, 0x6C24, 0x1CDE, -/* 006A */ 0x6C34, 0x6C42, 0x1CFB, -/* 006B */ 0x6C4E, 0x6CF3, 0x1D0A, -/* 006C */ 0x6D04, 0x6D45, 0x1DB0, -/* 006D */ 0x6D59, 0x6D79, 0x1DF2, -/* 006E */ 0x6D85, 0x6D9C, 0x1E13, -/* 006F */ 0x6DAC, 0x6EDE, 0x1E2B, -/* 0070 */ 0x6EEC, 0x6F45, 0x1F5E, -/* 0071 */ 0x6F54, 0x6FC6, 0x1FB8, -/* 0072 */ 0x6FD4, 0x7032, 0x202B, -/* 0073 */ 0x703E, 0x0000, 0xE070, -/* 0074 */ 0x704C, 0x7099, 0x208A, -/* 0075 */ 0x70AB, 0x70BB, 0x20D8, -/* 0076 */ 0x70C8, 0x70DF, 0x20E9, -/* 0077 */ 0x70F1, 0x7126, 0x2101, -/* 0078 */ 0x7136, 0x716E, 0x2137, -/* 0079 */ 0x717D, 0x721B, 0x2170, -/* 007A */ 0x7228, 0x72FD, 0x220F, -/* 007B */ 0x730A, 0x0000, 0xE0C7, -/* 007C */ 0x7316, 0x7357, 0x22E5, -/* 007D */ 0x7363, 0x7396, 0x2327, -/* 007E */ 0x73A9, 0x7409, 0x235B, -/* 007F */ 0x7422, 0x7441, 0x23BC, -/* 0080 */ 0x7455, 0x748B, 0x23DC, -/* 0081 */ 0x749E, 0x74B0, 0x2413, -/* 0082 */ 0x74BD, 0x0000, 0x8EA3, -/* 0083 */ 0x74CA, 0x760D, 0x2426, -/* 0084 */ 0x761F, 0x770C, 0x256A, -/* 0085 */ 0x771B, 0x7729, 0x2658, -/* 0086 */ 0x7737, 0x7747, 0x2667, -/* 0087 */ 0x775A, 0x776B, 0x2678, -/* 0088 */ 0x7779, 0x777F, 0x268A, -/* 0089 */ 0x778B, 0x7791, 0x2691, -/* 008A */ 0x779E, 0x784E, 0x2698, -/* 008B */ 0x785D, 0x78DA, 0x2749, -/* 008C */ 0x78E7, 0x7919, 0x27C7, -/* 008D */ 0x7926, 0x7A20, 0x27FA, -/* 008E */ 0x7A2E, 0x7B39, 0x28F5, -/* 008F */ 0x7B45, 0x7B7A, 0x2A01, -/* 0090 */ 0x7B86, 0x7BCF, 0x2A37, -/* 0091 */ 0x7BDD, 0x7C2B, 0x2A81, -/* 0092 */ 0x7C37, 0x7D7D, 0x2AD0, -/* 0093 */ 0x7D89, 0x7E9C, 0x2C17, -/* 0094 */ 0x7F36, 0x810A, 0x2D2B, -/* 0095 */ 0x811A, 0x8247, 0x2F00, -/* 0096 */ 0x8258, 0x827E, 0x302E, -/* 0097 */ 0x828B, 0x82C5, 0x3055, -/* 0098 */ 0x82D1, 0x8362, 0x3090, -/* 0099 */ 0x8373, 0x8413, 0x3122, -/* 009A */ 0x8420, 0x84A1, 0x31C3, -/* 009B */ 0x84AD, 0x84DC, 0x3245, -/* 009C */ 0x84EC, 0x85EA, 0x3275, -/* 009D */ 0x85F7, 0x8630, 0x3374, -/* 009E */ 0x863F, 0x0000, 0xE566, -/* 009F */ 0x864D, 0x867B, 0x33AE, -/* 00A0 */ 0x868A, 0x8695, 0x33DD, -/* 00A1 */ 0x86A3, 0x86B6, 0x33E9, -/* 00A2 */ 0x86C4, 0x878D, 0x33FD, -/* 00A3 */ 0x879F, 0x87D2, 0x34C7, -/* 00A4 */ 0x87E0, 0x0000, 0xE5B4, -/* 00A5 */ 0x87EF, 0x89C0, 0x34FB, -/* 00A6 */ 0x89D2, 0x89E7, 0x36CD, -/* 00A7 */ 0x89F4, 0x8B9A, 0x36E3, -/* 00A8 */ 0x8C37, 0x8C6C, 0x388A, -/* 00A9 */ 0x8C78, 0x8D16, 0x38C0, -/* 00AA */ 0x8D64, 0x8D8A, 0x395F, -/* 00AB */ 0x8D99, 0x8E10, 0x3986, -/* 00AC */ 0x8E1D, 0x8E35, 0x39FE, -/* 00AD */ 0x8E42, 0x8E64, 0x3A17, -/* 00AE */ 0x8E72, 0x8EB1, 0x3A3A, -/* 00AF */ 0x8EBE, 0x8EEB, 0x3A7A, -/* 00B0 */ 0x8EF8, 0x8F64, 0x3AA8, -/* 00B1 */ 0x8F9B, 0x9091, 0x3B15, -/* 00B2 */ 0x90A3, 0x90CE, 0x3C0C, -/* 00B3 */ 0x90DB, 0x9102, 0x3C38, -/* 00B4 */ 0x9112, 0x9119, 0x3C60, -/* 00B5 */ 0x9127, 0x9132, 0x3C68, -/* 00B6 */ 0x9149, 0x92B9, 0x3C74, -/* 00B7 */ 0x92CF, 0x9360, 0x3DE5, -/* 00B8 */ 0x936C, 0x937E, 0x3E77, -/* 00B9 */ 0x938C, 0x93E8, 0x3E8A, -/* 00BA */ 0x93F8, 0x9481, 0x3EE7, -/* 00BB */ 0x9577, 0x95E5, 0x3F71, -/* 00BC */ 0x961C, 0x97B4, 0x3FE0, -/* 00BD */ 0x97C3, 0x97DC, 0x4179, -/* 00BE */ 0x97ED, 0x9874, 0x4193, -/* 00BF */ 0x98A8, 0x98B6, 0x421B, -/* 00C0 */ 0x98C3, 0x98C6, 0x422A, -/* 00C1 */ 0x98DB, 0x992E, 0x422E, -/* 00C2 */ 0x993D, 0x9957, 0x4282, -/* 00C3 */ 0x9996, 0x9A19, 0x429D, -/* 00C4 */ 0x9A28, 0x9A6B, 0x4321, -/* 00C5 */ 0x9AA8, 0x9B06, 0x4365, -/* 00C6 */ 0x9B18, 0x9B5A, 0x43C4, -/* 00C7 */ 0x9B6F, 0x9B75, 0x4407, -/* 00C8 */ 0x9B83, 0x9C67, 0x440E, -/* 00C9 */ 0x9C76, 0x9C78, 0x44F3, -/* 00CA */ 0x9CE5, 0x9CF6, 0x44F6, -/* 00CB */ 0x9D03, 0x9D2C, 0x4508, -/* 00CC */ 0x9D3B, 0x9D7A, 0x4532, -/* 00CD */ 0x9D87, 0x9DD9, 0x4572, -/* 00CE */ 0x9DE6, 0x9DFD, 0x45C5, -/* 00CF */ 0x9E19, 0x9E1E, 0x45DD, -/* 00D0 */ 0x9E75, 0x9F2C, 0x45E3, -/* 00D1 */ 0x9F3B, 0x9F3E, 0x469B, -/* 00D2 */ 0x9F4A, 0x9F77, 0x469F, -/* 00D3 */ 0x9F8D, 0x9FA0, 0x46CD, -/* 00D4 */ 0xF929, 0x0000, 0xFAE0, -/* 00D5 */ 0xF9DC, 0x0000, 0xFBE9, -/* 00D6 */ 0xFA0E, 0xFA2D, 0x46E1, -/* 00D7 */ 0xFF01, 0xFF20, 0x4701, -/* 00D8 */ 0xFF3B, 0xFF40, 0x4721, -/* 00D9 */ 0xFF5B, 0xFF5E, 0x4727, -/* 00DA */ 0xFFE0, 0xFFE5, 0x472B, -/*-------------------------------------------------------*/ -/* Offset=0x02CC Start of MappingTable */ - -/* 0000 */ 0x8198, 0x814E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0x818B, 0x817D, 0xFFFD, 0xFFFD, 0x814C, 0xFFFD, 0x81F7, -/* 0010 */ 0x815D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x815C, 0xFFFD, 0xFFFD, -/* 0018 */ 0x8165, 0x8166, 0xFFFD, 0xFFFD, 0x8167, 0x8168, 0xFFFD, 0xFFFD, -/* 0020 */ 0x81F5, 0x81F6, 0xFFFD, 0xFFFD, 0xFFFD, 0x8164, 0x8163, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0x81F1, 0xFFFD, 0x818C, 0x818D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x81A6, 0xFA59, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFA5A, -/* 0048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0x81F0, 0x81A9, 0x81AA, 0x81A8, 0x81AB, 0x81CB, 0xFFFD, -/* 0058 */ 0x81CC, 0x81CD, 0xFFFD, 0x81DD, 0x81CE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0x81DE, 0x81B8, 0xFFFD, 0xFFFD, 0x81B9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0x8794, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8795, 0xFFFD, 0xFFFD, 0x81E5, 0x8187, -/* 0078 */ 0x8798, 0x8797, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8161, 0xFFFD, -/* 0080 */ 0x81C8, 0x81C9, 0x879B, 0x879C, 0x8792, 0x81E8, 0xFFFD, 0x8793, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8188, 0xFA5B, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x81E4, 0x8182, -/* 0098 */ 0x8791, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8185, 0x8186, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x81E1, 0x81E2, 0x81BC, 0x81BD, 0xFFFD, 0xFFFD, 0x81BA, -/* 00A8 */ 0x81BB, 0x849F, 0x84AA, 0x84A0, 0x84AB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x84A1, 0xFFFD, 0xFFFD, -/* 00B8 */ 0x84AC, 0x84A2, 0xFFFD, 0xFFFD, 0x84AD, 0x84A4, 0xFFFD, 0xFFFD, -/* 00C0 */ 0x84AF, 0x84A3, 0xFFFD, 0xFFFD, 0x84AE, 0x84A5, 0x84BA, 0xFFFD, -/* 00C8 */ 0xFFFD, 0x84B5, 0xFFFD, 0xFFFD, 0x84B0, 0x84A7, 0x84BC, 0xFFFD, -/* 00D0 */ 0xFFFD, 0x84B7, 0xFFFD, 0xFFFD, 0x84B2, 0x84A6, 0xFFFD, 0xFFFD, -/* 00D8 */ 0x84B6, 0x84BB, 0xFFFD, 0xFFFD, 0x84B1, 0x84A8, 0xFFFD, 0xFFFD, -/* 00E0 */ 0x84B8, 0x84BD, 0xFFFD, 0xFFFD, 0x84B3, 0x84A9, 0xFFFD, 0xFFFD, -/* 00E8 */ 0x84B9, 0xFFFD, 0xFFFD, 0x84BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x84B4, 0x81A1, 0x81A0, 0x81A3, -/* 00F8 */ 0x81A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0100 */ 0xFFFD, 0x81A5, 0x81A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x819F, 0x819E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0110 */ 0x819B, 0xFFFD, 0xFFFD, 0x819D, 0x819C, 0x819A, 0x8199, 0x818A, -/* 0118 */ 0xFFFD, 0x8189, 0x81F4, 0xFFFD, 0xFFFD, 0x81F3, 0xFFFD, 0x81F2, -/* 0120 */ 0x8140, 0x8141, 0x8142, 0x8156, 0xFFFD, 0x8158, 0x8159, 0x815A, -/* 0128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0130 */ 0xFFFD, 0xFFFD, 0x81A7, 0x81AC, 0x816B, 0x816C, 0xFFFD, 0xFFFD, -/* 0138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8780, 0xFFFD, 0x8781, -/* 0140 */ 0x814A, 0x814B, 0x8154, 0x8155, 0x8145, 0x815B, 0x8152, 0x8153, -/* 0148 */ 0xFA58, 0x878B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0150 */ 0x878C, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x8765, 0xFFFD, -/* 0158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0160 */ 0x8769, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8760, -/* 0168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8763, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8761, 0x876B, 0xFFFD, -/* 0178 */ 0xFFFD, 0x876A, 0x8764, 0xFFFD, 0xFFFD, 0xFFFD, 0x876C, 0xFFFD, -/* 0180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0188 */ 0xFFFD, 0x8766, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x876E, 0x875F, -/* 0190 */ 0x876D, 0xFFFD, 0xFFFD, 0x8762, 0xFFFD, 0xFFFD, 0xFFFD, 0x8767, -/* 0198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8768, 0x877E, 0x878F, -/* 01A0 */ 0x878E, 0x878D, 0x8772, 0x8773, 0x876F, 0x8770, 0x8771, 0xFFFD, -/* 01A8 */ 0xFFFD, 0x8775, 0x8774, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8783, 0x88EA, 0x929A, 0xFFFD, 0x8EB5, -/* 01B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x969C, 0x8FE4, 0x8E4F, 0x8FE3, 0x89BA, -/* 01C0 */ 0xFFFD, 0x9573, 0x975E, 0xFFFD, 0x98A0, 0x894E, 0xFFFD, 0xFFFD, -/* 01C8 */ 0x8A8E, 0x98A1, 0x90A2, 0x99C0, 0x8B75, 0x95B8, 0xFFFD, 0xFFFD, -/* 01D0 */ 0xFFFD, 0xFFFD, 0x8FE5, 0xFFFD, 0xFFFD, 0x97BC, 0xFFFD, 0xFFFD, -/* 01D8 */ 0xFFFD, 0xFFFD, 0x95C0, 0xFFFD, 0xFA68, 0xFFFD, 0x98A2, 0xFFFD, -/* 01E0 */ 0xFFFD, 0x9286, 0xFFFD, 0xFFFD, 0xFFFD, 0x98A3, 0x8BF8, 0xFFFD, -/* 01E8 */ 0xFFFD, 0xFFFD, 0x98A4, 0xFFFD, 0x8ADB, 0x924F, 0xFFFD, 0x8EE5, -/* 01F0 */ 0x98A5, 0xFFFD, 0xFFFD, 0x98A6, 0xFFFD, 0xFFFD, 0x98A7, 0x9454, -/* 01F8 */ 0xFFFD, 0x8B76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9456, -/* 0200 */ 0xFFFD, 0x93E1, 0x8CC1, 0x9652, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0208 */ 0xFFFD, 0xE568, 0x98A8, 0x8FE6, 0x98A9, 0x89B3, 0xFFFD, 0xFFFD, -/* 0210 */ 0xFFFD, 0x8BE3, 0x8CEE, 0x96E7, 0xFFFD, 0xFFFD, 0x9BA4, 0x9790, -/* 0218 */ 0xFFFD, 0x93FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AA3, 0xFFFD, 0x8B54, 0xFFFD, -/* 0228 */ 0x98AA, 0xFFFD, 0xFFFD, 0x98AB, 0x97B9, 0xFFFD, 0x975C, 0x9188, -/* 0230 */ 0x98AD, 0x8E96, 0x93F1, 0xFFFD, 0x98B0, 0xFFFD, 0xFFFD, 0x895D, -/* 0238 */ 0x8CDD, 0xFFFD, 0x8CDC, 0x88E4, 0xFFFD, 0xFFFD, 0x986A, 0x9869, -/* 0240 */ 0xFFFD, 0x8DB1, 0x889F, 0xFFFD, 0x98B1, 0x98B2, 0x98B3, 0x9653, -/* 0248 */ 0x98B4, 0xFFFD, 0x8CF0, 0x88E5, 0x9692, 0xFFFD, 0x8B9C, 0xFFFD, -/* 0250 */ 0xFFFD, 0x8B9D, 0x8B9E, 0x92E0, 0x97BA, 0xFFFD, 0x98B5, 0xFFFD, -/* 0258 */ 0xFFFD, 0x98B6, 0xFFFD, 0xFFFD, 0x98B7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0260 */ 0x906C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F59, 0x906D, -/* 0268 */ 0x98BC, 0xFFFD, 0x98BA, 0xFFFD, 0x98BB, 0x8B77, 0xFFFD, 0xFFFD, -/* 0270 */ 0x8DA1, 0x89EE, 0xFFFD, 0x98B9, 0x98B8, 0x95A7, 0xFFFD, 0xFFFD, -/* 0278 */ 0xFFFD, 0xFFFD, 0x8E65, 0x8E64, 0x91BC, 0x98BD, 0x9574, 0x90E5, -/* 0280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8157, 0x98BE, 0x98C0, 0xFFFD, 0xFA69, -/* 0288 */ 0xFFFD, 0x91E3, 0x97DF, 0x88C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x98BF, 0x89BC, 0xFFFD, 0x8BC2, 0xFFFD, -/* 0298 */ 0x9287, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C8F, 0x98C1, 0xFFFD, 0xFFFD, -/* 02A0 */ 0xFFFD, 0x9443, 0xFA6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFA6B, 0x8AE9, -/* 02A8 */ 0xFFFD, 0xFA6C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x98C2, -/* 02B0 */ 0x88C9, 0xFFFD, 0xFFFD, 0x8CDE, 0x8AEA, 0x959A, 0x94B0, 0x8B78, -/* 02B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02C0 */ 0x89EF, 0xFFFD, 0x98E5, 0x9360, 0x948C, 0x98C4, 0xFFFD, 0xFFFD, -/* 02C8 */ 0xFFFD, 0x94BA, 0xFFFD, 0x97E0, 0xFFFD, 0x904C, 0xFA6D, 0x8E66, -/* 02D0 */ 0xFFFD, 0x8E97, 0x89BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02D8 */ 0x92CF, 0xFFFD, 0xFFFD, 0x9241, 0x98C8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02E0 */ 0xFFFD, 0xFFFD, 0x88CA, 0x92E1, 0x8F5A, 0x8DB2, 0x9743, 0xFFFD, -/* 02E8 */ 0x91CC, 0xFFFD, 0x89BD, 0xFA6E, 0x98C7, 0xFFFD, 0x975D, 0x98C3, -/* 02F0 */ 0x98C5, 0x8DEC, 0x98C6, 0x9B43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x98CE, 0xFFFD, -/* 0300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x98D1, 0x98CF, 0xFFFD, 0xFFFD, -/* 0308 */ 0x89C0, 0xFFFD, 0x95B9, 0x98C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0310 */ 0x98CD, 0x8CF1, 0xFFFD, 0xFFFD, 0x8E67, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0318 */ 0x8AA4, 0xFFFD, 0xFFFD, 0x98D2, 0xFFFD, 0x98CA, 0xFFFD, 0xFA70, -/* 0320 */ 0x97E1, 0xFFFD, 0x8E98, 0xFFFD, 0x98CB, 0xFFFD, 0x98D0, 0xFA6F, -/* 0328 */ 0xFFFD, 0xFA72, 0xFFFD, 0x98D3, 0xFFFD, 0x98CC, 0xFFFD, 0xFA71, -/* 0330 */ 0x8B9F, 0xFFFD, 0x88CB, 0xFFFD, 0xFFFD, 0x8BA0, 0x89BF, 0xFFFD, -/* 0338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0340 */ 0x9B44, 0xFFFD, 0x9699, 0x958E, 0x8CF2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0348 */ 0xFFFD, 0xFFFD, 0x904E, 0x97B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95D6, 0xFFFD, 0xFFFD, 0x8C57, -/* 0358 */ 0x91A3, 0x89E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFA61, 0x8F72, -/* 0360 */ 0xFFFD, 0xFFFD, 0xFA73, 0x98D7, 0xFFFD, 0x98DC, 0x98DA, 0xFFFD, -/* 0368 */ 0xFFFD, 0x98D5, 0xFFFD, 0xFFFD, 0x91AD, 0x98D8, 0xFFFD, 0x98DB, -/* 0370 */ 0x98D9, 0xFFFD, 0x95DB, 0xFFFD, 0x98D6, 0xFFFD, 0x904D, 0xFFFD, -/* 0378 */ 0x9693, 0x98DD, 0x98DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8F43, 0x98EB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0388 */ 0x946F, 0xFFFD, 0x9555, 0x98E6, 0xFFFD, 0x95EE, 0xFFFD, 0x89B4, -/* 0390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x98EA, 0xFA76, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0398 */ 0xFFFD, 0xFFFD, 0x98E4, 0x98ED, 0xFFFD, 0xFFFD, 0x9171, 0xFFFD, -/* 03A0 */ 0x8CC2, 0xFFFD, 0x947B, 0xFFFD, 0xE0C5, 0xFFFD, 0x98EC, 0x937C, -/* 03A8 */ 0xFFFD, 0x98E1, 0xFFFD, 0x8CF4, 0xFFFD, 0xFFFD, 0x8CF3, 0x98DF, -/* 03B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFA77, 0x8ED8, 0xFFFD, 0x98E7, 0xFA75, -/* 03B8 */ 0x95ED, 0x926C, 0x98E3, 0x8C91, 0xFFFD, 0x98E0, 0x98E8, 0x98E2, -/* 03C0 */ 0x97CF, 0x98E9, 0x9860, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8BE4, 0xFFFD, 0xFFFD, 0x8C90, 0xFFFD, -/* 03D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFA74, 0xFFFD, 0xFA7A, -/* 03D8 */ 0x98EE, 0xFFFD, 0xFFFD, 0xFA78, 0x98EF, 0x98F3, 0x88CC, 0xFFFD, -/* 03E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95CE, 0x98F2, 0xFFFD, 0xFFFD, -/* 03E8 */ 0xFFFD, 0xFFFD, 0x98F1, 0x98F5, 0xFFFD, 0xFFFD, 0xFFFD, 0x98F4, -/* 03F0 */ 0xFFFD, 0x92E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03F8 */ 0xFFFD, 0xFFFD, 0x8C92, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0400 */ 0xFFFD, 0x98F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFA79, 0xFFFD, 0x8EC3, -/* 0408 */ 0xFFFD, 0x91A4, 0x92E3, 0x8BF4, 0xFFFD, 0x98F7, 0xFFFD, 0xFFFD, -/* 0410 */ 0xFFFD, 0xFFFD, 0x8B55, 0xFFFD, 0xFFFD, 0x98F8, 0xFFFD, 0xFFFD, -/* 0418 */ 0xFFFD, 0xFFFD, 0x98FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0420 */ 0xFFFD, 0xFFFD, 0x9654, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C86, 0xFFFD, -/* 0428 */ 0xFFFD, 0xFA7B, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E50, 0x94F5, 0x98F9, -/* 0430 */ 0x8DC3, 0x9762, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x98FC, 0x9942, -/* 0438 */ 0x98FB, 0x8DC2, 0xFFFD, 0x8F9D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0440 */ 0xFFFD, 0xFFFD, 0x8C58, 0xFFFD, 0xFFFD, 0xFFFD, 0x9943, 0xFFFD, -/* 0448 */ 0xFFFD, 0x8BCD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9940, 0x9941, 0xFFFD, -/* 0450 */ 0xFFFD, 0x93AD, 0xFFFD, 0x919C, 0xFFFD, 0x8BA1, 0xFFFD, 0xFFFD, -/* 0458 */ 0xFFFD, 0x966C, 0x9944, 0xFFFD, 0xFA7D, 0xFFFD, 0x97BB, 0xFFFD, -/* 0460 */ 0xFFFD, 0xFFFD, 0x9945, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9948, -/* 0468 */ 0xFFFD, 0x9946, 0xFFFD, 0x916D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0470 */ 0xFFFD, 0x9947, 0x9949, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0478 */ 0xFA7C, 0x994B, 0xFFFD, 0xFFFD, 0xFFFD, 0x994A, 0xFFFD, 0x95C6, -/* 0480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B56, 0x994D, 0x994E, 0xFFFD, -/* 0488 */ 0x89AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x994C, 0xFFFD, 0xFFFD, -/* 0490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EF2, 0xFFFD, -/* 0498 */ 0x9951, 0x9950, 0x994F, 0xFFFD, 0x98D4, 0xFFFD, 0x9952, 0xFFFD, -/* 04A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8F9E, 0xFFFD, 0x9953, 0xFFFD, 0xFFFD, -/* 04A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9744, 0xFFFD, -/* 04B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96D7, 0xFFFD, -/* 04B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9955, 0xFFFD, 0xFFFD, 0x9954, 0x9957, -/* 04C0 */ 0x9956, 0xFFFD, 0xFFFD, 0x9958, 0x9959, 0x88F2, 0xFFFD, 0x8CB3, -/* 04C8 */ 0x8C5A, 0x8F5B, 0x929B, 0x8BA2, 0x90E6, 0x8CF5, 0xFA7E, 0x8D8E, -/* 04D0 */ 0x995B, 0x96C6, 0x9365, 0xFFFD, 0x8E99, 0xFFFD, 0x995A, 0xFFFD, -/* 04D8 */ 0x995C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x937D, 0xFFFD, -/* 04E0 */ 0x8A95, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x995D, 0xFFFD, -/* 04E8 */ 0xFA80, 0x93FC, 0xFFFD, 0xFFFD, 0x9153, 0x995F, 0x9960, 0x94AA, -/* 04F0 */ 0x8CF6, 0x985A, 0x9961, 0xFFFD, 0xFFFD, 0x8BA4, 0xFFFD, 0xFFFD, -/* 04F8 */ 0xFFFD, 0x95BA, 0x91B4, 0x8BEF, 0x9354, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0500 */ 0x8C93, 0xFFFD, 0xFFFD, 0xFFFD, 0x9962, 0xFFFD, 0x9963, 0xFFFD, -/* 0508 */ 0xFFFD, 0x93E0, 0x897E, 0xFFFD, 0xFFFD, 0x9966, 0x8DFB, 0xFFFD, -/* 0510 */ 0x9965, 0x8DC4, 0xFFFD, 0x9967, 0xE3EC, 0x9968, 0x9660, 0x9969, -/* 0518 */ 0xFFFD, 0x996A, 0x996B, 0x8FE7, 0xFFFD, 0x8ECA, 0xFFFD, 0xFFFD, -/* 0520 */ 0xFFFD, 0xFA81, 0xFFFD, 0xFFFD, 0x8AA5, 0xFFFD, 0x996E, 0xFFFD, -/* 0528 */ 0x996C, 0x96BB, 0x996D, 0xFFFD, 0x9579, 0x996F, 0x9970, 0x9971, -/* 0530 */ 0x937E, 0xFFFD, 0xFFFD, 0xFFFD, 0x9975, 0x9973, 0x9974, 0x9972, -/* 0538 */ 0x8DE1, 0x9976, 0x96E8, 0x97E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0540 */ 0xFFFD, 0x9977, 0xFA82, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0548 */ 0x90A6, 0x9978, 0x8F79, 0xFFFD, 0xFFFD, 0x9979, 0xFFFD, 0x929C, -/* 0550 */ 0x97BD, 0x9380, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0558 */ 0xFFFD, 0xFFFD, 0x99C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x997A, -/* 0560 */ 0xEAA3, 0x8BC3, 0xFFFD, 0xFFFD, 0x997B, 0x967D, 0xFFFD, 0xFFFD, -/* 0568 */ 0xFFFD, 0xFFFD, 0x8F88, 0x91FA, 0xFFFD, 0x997D, 0x93E2, 0xFFFD, -/* 0570 */ 0xFA83, 0x997E, 0xFFFD, 0xFFFD, 0x9980, 0x8A4D, 0xFFFD, 0xFFFD, -/* 0578 */ 0xFFFD, 0x9981, 0x8BA5, 0xFFFD, 0x93CA, 0x899A, 0x8F6F, 0xFFFD, -/* 0580 */ 0xFFFD, 0x949F, 0x9982, 0xFFFD, 0x9381, 0xFFFD, 0xFFFD, 0x906E, -/* 0588 */ 0x9983, 0xFFFD, 0x95AA, 0x90D8, 0x8AA0, 0xFFFD, 0x8AA7, 0x9984, -/* 0590 */ 0xFFFD, 0xFFFD, 0x9986, 0xFFFD, 0xFFFD, 0x8C59, 0xFFFD, 0xFFFD, -/* 0598 */ 0x9985, 0xFA84, 0xFFFD, 0x97F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05A0 */ 0xFFFD, 0x8F89, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05A8 */ 0x94BB, 0x95CA, 0xFFFD, 0x9987, 0xFFFD, 0x9798, 0x9988, 0xFFFD, -/* 05B0 */ 0xFFFD, 0xFFFD, 0x9989, 0xFFFD, 0x939E, 0xFFFD, 0xFFFD, 0x998A, -/* 05B8 */ 0xFFFD, 0xFFFD, 0x90A7, 0x8DFC, 0x8C94, 0x998B, 0x8E68, 0x8D8F, -/* 05C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92E4, -/* 05C8 */ 0x998D, 0xFFFD, 0xFFFD, 0x91A5, 0xFFFD, 0xFFFD, 0x8DED, 0x998E, -/* 05D0 */ 0x998F, 0x914F, 0xFFFD, 0x998C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05D8 */ 0x9991, 0xFFFD, 0x9655, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8D84, -/* 05E0 */ 0xFFFD, 0xFFFD, 0x9990, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C95, -/* 05E8 */ 0x8DDC, 0x948D, 0xFFFD, 0xFFFD, 0xFFFD, 0x9994, 0x9992, 0xFFFD, -/* 05F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x959B, 0x8FE8, 0x999B, 0x8A84, 0x9995, -/* 05F8 */ 0x9993, 0x916E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0600 */ 0xFFFD, 0x9997, 0xFFFD, 0x9996, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A63, -/* 0608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8C80, 0x999C, 0x97AB, 0xFFFD, 0xFFFD, -/* 0610 */ 0xFFFD, 0x9998, 0xFFFD, 0xFFFD, 0xFFFD, 0x999D, 0x999A, 0xFFFD, -/* 0618 */ 0x9999, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97CD, -/* 0620 */ 0xFA85, 0xFFFD, 0xFFFD, 0x8CF7, 0x89C1, 0xFFFD, 0xFFFD, 0x97F2, -/* 0628 */ 0xFFFD, 0xFFFD, 0xFA86, 0xFFFD, 0xFFFD, 0x8F95, 0x9377, 0x8D85, -/* 0630 */ 0x99A0, 0x99A1, 0xFFFD, 0xFB77, 0xFFFD, 0x97E3, 0xFFFD, 0xFFFD, -/* 0638 */ 0x984A, 0x99A3, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CF8, 0xFFFD, 0xFFFD, -/* 0640 */ 0x99A2, 0xFFFD, 0x8A4E, 0xFFFD, 0xFA87, 0x99A4, 0xFFFD, 0x9675, -/* 0648 */ 0xFFFD, 0x92BA, 0xFFFD, 0x9745, 0xFFFD, 0x95D7, 0xFFFD, 0xFFFD, -/* 0650 */ 0xFFFD, 0x99A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8D3, 0xFFFD, -/* 0658 */ 0xFFFD, 0x93AE, 0xFFFD, 0x99A6, 0x8AA8, 0x96B1, 0xFFFD, 0xFA88, -/* 0660 */ 0xFFFD, 0x8F9F, 0x99A7, 0x95E5, 0x99AB, 0xFFFD, 0x90A8, 0x99A8, -/* 0668 */ 0x8BCE, 0xFFFD, 0x99A9, 0x8AA9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C4D, 0x99AC, -/* 0678 */ 0xFFFD, 0x99AD, 0xFFFD, 0xFFFD, 0x99AE, 0x99AF, 0x8ED9, 0xFFFD, -/* 0680 */ 0xFFFD, 0xFFFD, 0x8CF9, 0x96DC, 0xFA89, 0x96E6, 0x93F5, 0xFFFD, -/* 0688 */ 0xFFFD, 0x95EF, 0x99B0, 0xFA8A, 0x99B1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0690 */ 0xFFFD, 0x99B3, 0xFFFD, 0x99B5, 0x99B4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0698 */ 0xFFFD, 0x99B6, 0x89BB, 0x966B, 0xFFFD, 0x8DFA, 0x99B7, 0xFFFD, -/* 06A0 */ 0xFFFD, 0x9178, 0xFFFD, 0xFFFD, 0x8FA0, 0x8BA7, 0xFFFD, 0x99B8, -/* 06A8 */ 0xFA8B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x94D9, 0xFFFD, -/* 06B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x99B9, 0xFFFD, 0x99BA, 0xFFFD, 0x99BB, -/* 06B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99BC, 0x9543, 0x8BE6, 0x88E3, -/* 06C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x93BD, 0x99BD, 0x8F5C, 0xFFFD, 0x90E7, -/* 06C8 */ 0xFFFD, 0x99BF, 0x99BE, 0x8FA1, 0x8CDF, 0x99C1, 0x94BC, 0xFFFD, -/* 06D0 */ 0xFFFD, 0x99C2, 0xFFFD, 0xFFFD, 0xFFFD, 0x94DA, 0x91B2, 0x91EC, -/* 06D8 */ 0x8BA6, 0xFFFD, 0xFFFD, 0x93EC, 0x9250, 0xFFFD, 0x948E, 0xFFFD, -/* 06E0 */ 0x966D, 0xFFFD, 0x99C4, 0xFFFD, 0x90E8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06E8 */ 0xFFFD, 0xFFFD, 0x8C54, 0xFFFD, 0xFFFD, 0x99C5, 0xFFFD, 0xFFFD, -/* 06F0 */ 0xFFFD, 0xFFFD, 0x99C6, 0x894B, 0x88F3, 0x8AEB, 0xFA8C, 0x91A6, -/* 06F8 */ 0x8B70, 0x9791, 0xFFFD, 0x99C9, 0x89B5, 0xFFFD, 0xFFFD, 0x99C8, -/* 0700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8BA8, 0xFFFD, 0xFFFD, 0x99CA, 0xFFFD, -/* 0708 */ 0x96EF, 0xFA8D, 0xFFFD, 0xFFFD, 0x99CB, 0xFFFD, 0x97D0, 0xFFFD, -/* 0710 */ 0x8CFA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CB4, 0x99CC, 0xFFFD, -/* 0718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x99CE, 0x99CD, 0xFFFD, 0x907E, 0x8958, -/* 0720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x897D, 0x99CF, 0xFFFD, 0x99D0, 0xFFFD, -/* 0728 */ 0xFA8E, 0x8CB5, 0xFFFD, 0xFFFD, 0x99D1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0730 */ 0xFFFD, 0x8B8E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0738 */ 0x8E51, 0x99D2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9694, 0x8DB3, -/* 0740 */ 0x8B79, 0x9746, 0x916F, 0x94BD, 0x8EFB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0748 */ 0xFFFD, 0xFFFD, 0x8F66, 0xFFFD, 0x8EE6, 0x8EF3, 0xFFFD, 0x8F96, -/* 0750 */ 0xFFFD, 0x94BE, 0xFFFD, 0xFA8F, 0xFFFD, 0x99D5, 0xFFFD, 0x8962, -/* 0758 */ 0x9170, 0x8CFB, 0x8CC3, 0x8BE5, 0xFFFD, 0xFFFD, 0x99D9, 0x9240, -/* 0760 */ 0x91FC, 0x8BA9, 0x8FA2, 0x99DA, 0x99D8, 0x89C2, 0x91E4, 0x8EB6, -/* 0768 */ 0x8E6A, 0x8945, 0xFFFD, 0xFFFD, 0x8A90, 0x8D86, 0x8E69, 0xFFFD, -/* 0770 */ 0x99DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99DC, -/* 0778 */ 0xFFFD, 0x8B68, 0x8A65, 0xFFFD, 0xFFFD, 0xFFFD, 0x8D87, 0x8B67, -/* 0780 */ 0x92DD, 0x8944, 0x93AF, 0x96BC, 0x8D40, 0x9799, 0x9366, 0x8CFC, -/* 0788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0790 */ 0xFFFD, 0x8C4E, 0xFFFD, 0x99E5, 0xFFFD, 0x8BE1, 0x9669, 0xFFFD, -/* 0798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x94DB, 0xFFFD, 0xFFFD, 0x99E4, -/* 07A0 */ 0xFFFD, 0x8ADC, 0x99DF, 0x99E0, 0x99E2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99E3, 0xFFFD, 0x8B7A, 0x9081, -/* 07B0 */ 0xFFFD, 0x95AB, 0x99E1, 0x99DD, 0x8CE1, 0xFFFD, 0x99DE, 0xFFFD, -/* 07B8 */ 0x9843, 0xFFFD, 0xFFFD, 0xFFFD, 0x95F0, 0xFFFD, 0x92E6, 0x8CE0, -/* 07C0 */ 0x8D90, 0xFFFD, 0xFFFD, 0xFFFD, 0x99E6, 0xFFFD, 0xFFFD, 0x93DB, -/* 07C8 */ 0x99EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D0 */ 0xFFFD, 0x8EFC, 0xFFFD, 0x8EF4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D8 */ 0xFFFD, 0x99ED, 0x99EB, 0xFFFD, 0x96A1, 0xFFFD, 0x99E8, 0x99F1, -/* 07E0 */ 0x99EC, 0xFFFD, 0xFFFD, 0xFFFD, 0x99EF, 0x8CC4, 0x96BD, 0xFFFD, -/* 07E8 */ 0xFFFD, 0x99F0, 0xFFFD, 0xFFFD, 0xFFFD, 0x99F2, 0xFFFD, 0x99F4, -/* 07F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFA92, 0x8DEE, 0x9861, 0xFFFD, 0x99E9, -/* 07F8 */ 0x99E7, 0x99F3, 0xFFFD, 0x99EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFA91, 0xFFFD, 0xFFFD, -/* 0808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x99F6, 0xFFFD, 0x9A42, 0x99F8, 0xFFFD, -/* 0810 */ 0xFFFD, 0x99FC, 0xFA93, 0xFFFD, 0x9A40, 0x99F9, 0xFFFD, 0xFFFD, -/* 0818 */ 0x9A5D, 0xFFFD, 0xFFFD, 0x8DE7, 0x8A50, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0820 */ 0xFFFD, 0x99F7, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A44, 0x88F4, 0x9A43, -/* 0828 */ 0xFFFD, 0x88A3, 0x9569, 0x9A41, 0xFFFD, 0x99FA, 0xFFFD, 0xFFFD, -/* 0830 */ 0x99F5, 0x99FB, 0x8DC6, 0x9A45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0838 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88F5, 0x9A4E, 0xFFFD, 0xFFFD, -/* 0840 */ 0x9A46, 0x9A47, 0xFFFD, 0x8FA3, 0x9689, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0848 */ 0x9A4C, 0x9A4B, 0xFFFD, 0xFFFD, 0xFFFD, 0x934E, 0xFFFD, 0xFFFD, -/* 0850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A4D, 0xFFFD, 0xFFFD, -/* 0858 */ 0x9A4A, 0xFFFD, 0xFA94, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8953, -/* 0860 */ 0xFFFD, 0x8DB4, 0x904F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0868 */ 0xFFFD, 0xFFFD, 0x9A48, 0x9382, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A49, -/* 0870 */ 0xFFFD, 0x88A0, 0x9A53, 0x9742, 0xFFFD, 0x8FA5, 0xFFFD, 0x9A59, -/* 0878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A58, 0x9A4F, 0xFFFD, 0xFFFD, -/* 0880 */ 0xFFFD, 0xFFFD, 0x91C1, 0xFFFD, 0x9A50, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0888 */ 0x91ED, 0x9A55, 0x8FA4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0890 */ 0x9A52, 0xFFFD, 0xFFFD, 0x96E2, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C5B, -/* 0898 */ 0xFFFD, 0xFFFD, 0x9A56, 0x9A57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08A0 */ 0x9A54, 0x9A5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A51, -/* 08A8 */ 0x9A60, 0x9A65, 0xFFFD, 0x9A61, 0xFFFD, 0x9A5C, 0xFFFD, 0xFFFD, -/* 08B0 */ 0x9A66, 0x9150, 0xFFFD, 0xFA95, 0x9A68, 0xFFFD, 0x8D41, 0x9A5E, -/* 08B8 */ 0x929D, 0x9A62, 0x9A5B, 0x8AAB, 0xFFFD, 0x8AEC, 0x8A85, 0x9A63, -/* 08C0 */ 0x9A5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08C8 */ 0x8C96, 0x9A69, 0x9A67, 0x9172, 0x8B69, 0x8BAA, 0xFFFD, 0x9A64, -/* 08D0 */ 0xFFFD, 0x8BF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8963, -/* 08D8 */ 0x9A6D, 0x9A6B, 0xFFFD, 0x9AA5, 0x9A70, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08E0 */ 0xFFFD, 0xFFFD, 0x9A6A, 0xFFFD, 0x9A6E, 0xFFFD, 0xFFFD, 0x9A6C, -/* 08E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8E6B, 0x9A6F, 0x9A72, 0xFFFD, 0x9A77, -/* 08F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9A75, 0x9A74, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9251, 0xFFFD, 0xFFFD, 0x89C3, -/* 0900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0908 */ 0xFFFD, 0xFFFD, 0x9A71, 0xFFFD, 0x9A73, 0x8FA6, 0x8952, 0xFFFD, -/* 0910 */ 0xFFFD, 0x9A76, 0x89DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0918 */ 0x9A82, 0xFFFD, 0x8FFA, 0x9A7D, 0xFFFD, 0x9A7B, 0xFFFD, 0x9A7C, -/* 0920 */ 0xFFFD, 0x9A7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0928 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x895C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9158, 0xFFFD, 0x9A78, -/* 0938 */ 0xFFFD, 0x9A79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A9A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A81, 0xFFFD, 0xFFFD, -/* 0950 */ 0xFFFD, 0x8AED, 0xFFFD, 0x9A84, 0x9A80, 0x9A83, 0xFFFD, 0xFFFD, -/* 0958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95AC, 0xFFFD, 0xFFFD, -/* 0960 */ 0xFFFD, 0x93D3, 0xFFFD, 0x94B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0968 */ 0xFFFD, 0x9A86, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A85, -/* 0970 */ 0x8A64, 0xFFFD, 0xFFFD, 0x9A87, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0978 */ 0x9A8A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A89, 0x9A88, 0xFFFD, -/* 0980 */ 0x9458, 0xFFFD, 0xFFFD, 0x9A8B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A8C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0990 */ 0xFFFD, 0xFFFD, 0x9A8E, 0xFFFD, 0x9A8D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0998 */ 0xFFFD, 0xFFFD, 0x9A90, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A93, 0x9A91, -/* 09A0 */ 0x9A8F, 0x9A92, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A94, 0xFFFD, -/* 09A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A95, 0xFFFD, 0xFFFD, 0x9A96, -/* 09B0 */ 0xFFFD, 0x9A97, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A98, 0x9964, 0xFFFD, -/* 09B8 */ 0x8EFA, 0x8E6C, 0xFFFD, 0xFFFD, 0x89F1, 0xFFFD, 0x88F6, 0xFFFD, -/* 09C0 */ 0xFFFD, 0x9263, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A99, 0xFFFD, 0x8DA2, 0xFFFD, -/* 09D0 */ 0x88CD, 0x907D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A9A, -/* 09D8 */ 0x8CC5, 0xFFFD, 0xFFFD, 0x8D91, 0xFFFD, 0x9A9C, 0x9A9B, 0xFFFD, -/* 09E0 */ 0xFFFD, 0x95DE, 0x9A9D, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A9F, 0x9A9E, -/* 09E8 */ 0xFFFD, 0x9AA0, 0xFFFD, 0x9AA1, 0xFFFD, 0x8C97, 0xFFFD, 0xFFFD, -/* 09F0 */ 0x8980, 0x9AA2, 0xFFFD, 0xFFFD, 0x9AA4, 0xFFFD, 0x9AA3, 0xFFFD, -/* 09F8 */ 0xFFFD, 0xFFFD, 0x9AA6, 0xFFFD, 0xFFFD, 0x9379, 0xFFFD, 0xFFFD, -/* 0A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AA7, 0x88B3, 0x8DDD, 0xFFFD, -/* 0A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8C5C, 0xFFFD, 0xFFFD, 0x926E, 0xFFFD, -/* 0A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AA8, 0x9AA9, 0xFFFD, -/* 0A18 */ 0xFFFD, 0x9AAB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AAC, 0xFFFD, -/* 0A20 */ 0x8DE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BCF, 0xFFFD, 0xFFFD, -/* 0A28 */ 0x9656, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AAA, 0x9AAD, 0x8DBF, 0x8D42, -/* 0A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFA96, -/* 0A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AB1, -/* 0A40 */ 0xFFFD, 0xFFFD, 0x8DA3, 0xFA97, 0x9252, 0xFFFD, 0xFFFD, 0x9AAE, -/* 0A48 */ 0x92D8, 0x9AB2, 0xFFFD, 0xFFFD, 0x9082, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A50 */ 0xFFFD, 0xFFFD, 0x9AB0, 0x9AB3, 0xFFFD, 0x8C5E, 0xFFFD, 0xFFFD, -/* 0A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AB4, 0x9AB5, 0xFFFD, -/* 0A60 */ 0x8D43, 0x8A5F, 0x9AB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A68 */ 0x9AB8, 0xFFFD, 0xFA98, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AB9, 0xFFFD, -/* 0A70 */ 0xFFFD, 0x9AB6, 0x9AAF, 0xFFFD, 0xFFFD, 0x9ABA, 0xFFFD, 0xFFFD, -/* 0A78 */ 0x9ABB, 0xFA9A, 0xFA99, 0xFFFD, 0xFFFD, 0x9684, 0xFFFD, 0xFFFD, -/* 0A80 */ 0x8FE9, 0xFFFD, 0xFFFD, 0xFFFD, 0x9ABD, 0x9ABE, 0x9ABC, 0xFFFD, -/* 0A88 */ 0x9AC0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9457, 0xFFFD, -/* 0A90 */ 0xFFFD, 0x88E6, 0x9575, 0xFFFD, 0xFFFD, 0x9AC1, 0x8FFB, 0xFFFD, -/* 0A98 */ 0xFFFD, 0x8EB7, 0xFFFD, 0x947C, 0x8AEE, 0xFFFD, 0x8DE9, 0xFFFD, -/* 0AA0 */ 0xFFFD, 0xFFFD, 0x9678, 0xFFFD, 0x93B0, 0xFFFD, 0xFFFD, 0x8C98, -/* 0AA8 */ 0x91CD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9ABF, 0x9AC2, 0xFFFD, 0xFFFD, -/* 0AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91C2, -/* 0AB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9AC3, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AC4, -/* 0AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9AC6, 0xFFFD, 0xFFFD, 0x92E7, 0xFFFD, -/* 0AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AAC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AD0 */ 0xFFFD, 0xEA9F, 0x8981, 0x95F1, 0xFFFD, 0xFFFD, 0x8FEA, 0x9367, -/* 0AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8DE4, 0xFFFD, 0xFFFD, 0x9ACC, -/* 0AE0 */ 0xFFFD, 0xFFFD, 0x95BB, 0x97DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x89F2, 0x9AC8, 0xFFFD, 0xFFFD, -/* 0AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9159, 0x9ACB, 0xFFFD, 0x9383, 0xFFFD, -/* 0AF8 */ 0xFFFD, 0x9368, 0x9384, 0x94B7, 0x92CB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B00 */ 0x8DC7, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AC7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8996, 0xFFFD, 0x9355, 0xFFFD, 0xFFFD, -/* 0B10 */ 0xFFFD, 0xFFFD, 0x9AC9, 0xFFFD, 0x9AC5, 0xFFFD, 0xFFFD, 0x906F, -/* 0B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9ACD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B20 */ 0x8F6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BAB, 0xFFFD, 0x9ACE, -/* 0B28 */ 0x95E6, 0xFFFD, 0xFFFD, 0xFFFD, 0x919D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B30 */ 0xFFFD, 0x92C4, 0xFFFD, 0xFA9D, 0x9AD0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x966E, 0xFFFD, 0xFFFD, -/* 0B40 */ 0x9AD1, 0xFFFD, 0xFFFD, 0x9AD6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFA9E, -/* 0B48 */ 0x95AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AD5, 0x9ACF, 0x9AD2, -/* 0B50 */ 0x9AD4, 0xFFFD, 0xFFFD, 0x8DA4, 0xFFFD, 0xFFFD, 0x95C7, 0xFFFD, -/* 0B58 */ 0xFFFD, 0xFFFD, 0x9AD7, 0xFFFD, 0x9264, 0xFFFD, 0xFFFD, 0x89F3, -/* 0B60 */ 0xFFFD, 0x8FEB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AD9, 0xFFFD, -/* 0B68 */ 0x9AD8, 0xFFFD, 0x8D88, 0xFFFD, 0x9ADA, 0x9ADC, 0x9ADB, 0xFFFD, -/* 0B70 */ 0xFFFD, 0x9ADE, 0xFFFD, 0x9AD3, 0x9AE0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B78 */ 0xFFFD, 0x9ADF, 0x9ADD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B80 */ 0x8E6D, 0x9070, 0xFFFD, 0x9173, 0x9AE1, 0x90BA, 0x88EB, 0x9484, -/* 0B88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92D9, 0xFFFD, 0x9AE3, 0x9AE2, -/* 0B90 */ 0x9AE4, 0x9AE5, 0x9AE6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AE7, -/* 0B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95CF, 0x9AE8, -/* 0BA0 */ 0xFA9F, 0xFFFD, 0xFFFD, 0xFFFD, 0x89C4, 0x9AE9, 0xFFFD, 0xFFFD, -/* 0BA8 */ 0xFFFD, 0xFFFD, 0x975B, 0x8A4F, 0xFFFD, 0x99C7, 0x8F67, 0x91BD, -/* 0BB0 */ 0x9AEA, 0x96E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96B2, -/* 0BB8 */ 0xFFFD, 0xFFFD, 0x9AEC, 0xFFFD, 0x91E5, 0xFFFD, 0x9356, 0x91BE, -/* 0BC0 */ 0x9576, 0x9AED, 0x9AEE, 0x899B, 0xFFFD, 0xFFFD, 0x8EB8, 0x9AEF, -/* 0BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88CE, 0x9AF0, 0xFFFD, 0xFFFD, -/* 0BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9AF1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BD8 */ 0xFFFD, 0x8982, 0xFFFD, 0xFFFD, 0x8AEF, 0x93DE, 0x95F2, 0xFFFD, -/* 0BE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9AF5, 0x9174, 0x9AF4, 0x8C5F, 0xFFFD, -/* 0BE8 */ 0xFAA0, 0x967A, 0x9AF3, 0xFFFD, 0x9385, 0x9AF7, 0xFFFD, 0x9AF6, -/* 0BF0 */ 0xFAA1, 0xFFFD, 0xFAA2, 0xFFFD, 0xFFFD, 0x9AF9, 0xFFFD, 0x9AF8, -/* 0BF8 */ 0xFAA3, 0xFFFD, 0x899C, 0xFFFD, 0x9AFA, 0x8FA7, 0x9AFC, 0x9244, -/* 0C00 */ 0xFFFD, 0x9AFB, 0xFFFD, 0x95B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C08 */ 0x8F97, 0x937A, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B40, 0xFFFD, 0xFFFD, -/* 0C10 */ 0xFFFD, 0xFFFD, 0x8D44, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B41, 0x9440, -/* 0C18 */ 0x94DC, 0x96CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9444, -/* 0C20 */ 0xFFFD, 0xFFFD, 0x9B4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C28 */ 0x8B57, 0xFFFD, 0xFFFD, 0x9764, 0xFFFD, 0xFFFD, 0x96AD, 0xFFFD, -/* 0C30 */ 0x9BAA, 0xFFFD, 0x9B42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C38 */ 0x9B45, 0xFAA4, 0x91C3, 0xFFFD, 0xFFFD, 0x9657, 0xFFFD, 0xFFFD, -/* 0C40 */ 0xFFFD, 0x9369, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B46, -/* 0C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9685, 0xFAA5, -/* 0C50 */ 0x8DC8, 0xFFFD, 0xFFFD, 0x8FA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9B47, 0xFFFD, 0xFFFD, 0x8E6F, 0xFFFD, -/* 0C60 */ 0x8E6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88B7, 0x8CC6, 0xFFFD, -/* 0C68 */ 0x90A9, 0x88CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B4B, 0x9B4C, -/* 0C70 */ 0xFFFD, 0x9B49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C78 */ 0xFFFD, 0xFFFD, 0x8957, 0x8AAD, 0xFFFD, 0x9B48, 0xFFFD, 0x96C3, -/* 0C80 */ 0x9550, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x88A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C90 */ 0x88F7, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E70, 0xFFFD, 0x88D0, 0xFFFD, -/* 0C98 */ 0x88A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B51, 0xFFFD, -/* 0CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B4F, 0xFFFD, -/* 0CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96BA, 0xFFFD, 0x9B52, -/* 0CB0 */ 0xFFFD, 0x9B50, 0xFFFD, 0xFFFD, 0x9B4E, 0x9050, 0xFFFD, 0xFFFD, -/* 0CB8 */ 0xFFFD, 0xFFFD, 0x9B4D, 0xFFFD, 0xFFFD, 0xFFFD, 0x95D8, 0xFFFD, -/* 0CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CE2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC8 */ 0xFFFD, 0xFFFD, 0x9B56, 0x9B57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CD0 */ 0xFFFD, 0x8FA9, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B53, 0x984B, 0xFFFD, -/* 0CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x946B, 0xFFFD, 0xFFFD, 0x9B55, 0x8DA5, -/* 0CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B58, -/* 0CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9577, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B59, -/* 0CF0 */ 0xFFFD, 0x9B54, 0x947D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CF8 */ 0xFFFD, 0xFFFD, 0x9B5A, 0x9551, 0x9B5B, 0x9B5F, 0x9B5C, 0xFFFD, -/* 0D00 */ 0xFFFD, 0x89C5, 0x9B5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D08 */ 0xFFFD, 0x8EB9, 0xFFFD, 0x9B5D, 0x8C99, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D10 */ 0x9B6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B64, 0x9B61, -/* 0D18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D20 */ 0xFFFD, 0x9284, 0xFFFD, 0x9B60, 0xFFFD, 0xFFFD, 0x9B62, 0xFFFD, -/* 0D28 */ 0xFFFD, 0x9B63, 0x9B65, 0x9B66, 0x8AF0, 0xFFFD, 0x9B68, 0x9B67, -/* 0D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D38 */ 0xFFFD, 0x9B69, 0x8FEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D40 */ 0xFFFD, 0xFFFD, 0x9B6C, 0xFFFD, 0x92DA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D48 */ 0x8964, 0xFFFD, 0x9B6A, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B6D, 0xFFFD, -/* 0D50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B6E, 0xFFFD, -/* 0D58 */ 0x9B71, 0xFFFD, 0xFFFD, 0x9B6F, 0xFFFD, 0x9B70, 0xFFFD, 0xFFFD, -/* 0D60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D68 */ 0x8E71, 0x9B72, 0xFFFD, 0xFFFD, 0x8D45, 0x9B73, 0xFAA6, 0x8E9A, -/* 0D70 */ 0x91B6, 0xFFFD, 0x9B74, 0x9B75, 0x8E79, 0x8D46, 0xFFFD, 0x96D0, -/* 0D78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8B47, 0x8CC7, 0x9B76, 0x8A77, 0xFFFD, -/* 0D80 */ 0xFFFD, 0x9B77, 0xFFFD, 0x91B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D88 */ 0x9B78, 0x9BA1, 0xFFFD, 0x9B79, 0xFFFD, 0x9B7A, 0xFFFD, 0xFFFD, -/* 0D90 */ 0x9B7B, 0xFFFD, 0x9B7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D98 */ 0x9B7E, 0xFFFD, 0xFFFD, 0x9B80, 0xFFFD, 0x91EE, 0xFFFD, 0x8946, -/* 0DA0 */ 0x8EE7, 0x88C0, 0xFFFD, 0x9176, 0x8AAE, 0x8EB3, 0xFFFD, 0x8D47, -/* 0DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9386, 0xFFFD, 0x8F40, -/* 0DB0 */ 0x8AAF, 0x9288, 0x92E8, 0x88B6, 0x8B58, 0x95F3, 0xFFFD, 0x8EC0, -/* 0DB8 */ 0xFFFD, 0xFFFD, 0x8B71, 0x90E9, 0x8EBA, 0x9747, 0x9B81, 0xFFFD, -/* 0DC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B7B, 0xFFFD, -/* 0DC8 */ 0x8DC9, 0xFFFD, 0xFFFD, 0x8A51, 0x8983, 0x8FAA, 0x89C6, 0xFFFD, -/* 0DD0 */ 0x9B82, 0x9765, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F68, -/* 0DD8 */ 0xFAA7, 0xFFFD, 0x8EE2, 0x9B83, 0x8AF1, 0x93D0, 0x96A7, 0x9B84, -/* 0DE0 */ 0xFFFD, 0x9B85, 0xFFFD, 0xFFFD, 0x9578, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE8 */ 0x9B87, 0xFFFD, 0x8AA6, 0x8BF5, 0x9B86, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DF0 */ 0xFAA9, 0xFFFD, 0xFFFD, 0x8AB0, 0xFFFD, 0x9051, 0x9B8B, 0x8E40, -/* 0DF8 */ 0xFFFD, 0x89C7, 0x9B8A, 0xFFFD, 0x9B88, 0x9B8C, 0x9B89, 0x944A, -/* 0E00 */ 0x9ECB, 0x9052, 0xFFFD, 0x9B8D, 0xFAAA, 0xFFFD, 0x97BE, 0xFFFD, -/* 0E08 */ 0x9B8E, 0xFFFD, 0xFFFD, 0x9B90, 0xFFFD, 0x929E, 0x9B8F, 0xFFFD, -/* 0E10 */ 0x90A1, 0xFFFD, 0x8E9B, 0xFFFD, 0xFFFD, 0xFFFD, 0x91CE, 0x8EF5, -/* 0E18 */ 0xFFFD, 0x9595, 0x90EA, 0xFFFD, 0x8ECB, 0x9B91, 0x8FAB, 0x9B92, -/* 0E20 */ 0x9B93, 0x88D1, 0x91B8, 0x9071, 0xFFFD, 0x9B94, 0x93B1, 0x8FAC, -/* 0E28 */ 0xFFFD, 0x8FAD, 0xFFFD, 0x9B95, 0xFFFD, 0xFFFD, 0x90EB, 0xFFFD, -/* 0E30 */ 0xFFFD, 0xFFFD, 0x8FAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAAB, 0xFFFD, -/* 0E38 */ 0x9B96, 0xFFFD, 0x9B97, 0xFFFD, 0x96DE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E40 */ 0x9B98, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BC4, 0xFFFD, 0xFFFD, -/* 0E48 */ 0xFFFD, 0x8F41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E50 */ 0x9B99, 0x9B9A, 0x8EDA, 0x904B, 0x93F2, 0x9073, 0x94F6, 0x9441, -/* 0E58 */ 0x8BC7, 0x9B9B, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B8F, 0x9B9C, 0xFFFD, -/* 0E60 */ 0x8BFC, 0xFFFD, 0x93CD, 0x89AE, 0xFFFD, 0x8E72, 0x9B9D, 0x9BA0, -/* 0E68 */ 0x9B9F, 0x8BFB, 0xFFFD, 0x9B9E, 0xFFFD, 0x9357, 0xFFFD, 0xFFFD, -/* 0E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91AE, 0xFFFD, -/* 0E78 */ 0x936A, 0x8EC6, 0xFFFD, 0xFFFD, 0x9177, 0x979A, 0xFFFD, 0xFFFD, -/* 0E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BA2, 0xFFFD, 0x9BA3, 0x93D4, -/* 0E88 */ 0xFFFD, 0x8E52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BA5, 0xFFFD, -/* 0E90 */ 0xFFFD, 0x9BA6, 0x9BA7, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AF2, 0x9BA8, -/* 0E98 */ 0xFFFD, 0xFFFD, 0x9BA9, 0x89AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EA0 */ 0xFAAC, 0xFFFD, 0x915A, 0x8AE2, 0xFFFD, 0x9BAB, 0x96A6, 0xFFFD, -/* 0EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x91D0, 0xFFFD, 0x8A78, 0xFFFD, 0xFFFD, -/* 0EB0 */ 0x9BAD, 0x9BAF, 0x8ADD, 0xFFFD, 0xFAAD, 0x9BAC, 0x9BAE, 0xFFFD, -/* 0EB8 */ 0x9BB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BB0, -/* 0EC0 */ 0xFFFD, 0x9BB2, 0x9BB3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EC8 */ 0xFFFD, 0x93BB, 0x8BAC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0ED0 */ 0xFFFD, 0x89E3, 0x9BB4, 0x9BB9, 0xFFFD, 0xFFFD, 0x9BB7, 0xFFFD, -/* 0ED8 */ 0x95F5, 0x95F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAAE, 0x9387, -/* 0EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9BB6, 0x8F73, 0xFFFD, 0x9BB5, 0xFFFD, -/* 0EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EF0 */ 0x9092, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BBA, 0xFFFD, 0xFFFD, 0x8DE8, -/* 0EF8 */ 0xFFFD, 0xFFFD, 0x9BC0, 0xFFFD, 0xFFFD, 0x9BC1, 0x9BBB, 0x8A52, -/* 0F00 */ 0x9BBC, 0x9BC5, 0x9BC4, 0x9BC3, 0x9BBF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F08 */ 0x9BBE, 0xFFFD, 0xFFFD, 0x9BC2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F10 */ 0xFAAF, 0xFFFD, 0x95F6, 0xFAB2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BC9, 0x9BC6, 0xFFFD, 0x9BC8, -/* 0F20 */ 0xFFFD, 0x9792, 0xFFFD, 0x9BC7, 0xFAB0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BBD, 0x9093, 0xFFFD, -/* 0F30 */ 0xFFFD, 0x9BCA, 0xFAB3, 0xFFFD, 0x8DB5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F38 */ 0x9BCB, 0xFFFD, 0xFFFD, 0x9BCC, 0x9BCF, 0xFFFD, 0x9BCE, 0xFFFD, -/* 0F40 */ 0xFFFD, 0x9BCD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9388, 0x9BB8, 0xFFFD, -/* 0F48 */ 0xFFFD, 0xFFFD, 0x9BD5, 0x9BD1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F50 */ 0x9BD0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F58 */ 0xFFFD, 0xFFFD, 0x9BD2, 0xFFFD, 0x9BD3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BD6, 0xFAB4, 0xFAB5, -/* 0F68 */ 0x97E4, 0xFFFD, 0x9BD7, 0x9BD4, 0x9BD8, 0xFFFD, 0xFFFD, 0x8ADE, -/* 0F70 */ 0x9BD9, 0xFFFD, 0xFFFD, 0xFAB6, 0xFFFD, 0x9BDB, 0x9BDA, 0xFFFD, -/* 0F78 */ 0xFFFD, 0x9BDC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BDD, 0xFFFD, -/* 0F80 */ 0x90EC, 0x8F42, 0xFFFD, 0xFFFD, 0x8F84, 0xFFFD, 0x9183, 0xFFFD, -/* 0F88 */ 0x8D48, 0x8DB6, 0x8D49, 0x8B90, 0xFFFD, 0xFFFD, 0x9BDE, 0xFFFD, -/* 0F90 */ 0xFFFD, 0x8DB7, 0xFFFD, 0xFFFD, 0x8CC8, 0x9BDF, 0x96A4, 0x9462, -/* 0F98 */ 0x9BE0, 0xFFFD, 0x8D4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AAA, 0xFFFD, -/* 0FA0 */ 0x9246, 0x8BD0, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E73, 0x957A, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0x94BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BE1, 0x8AF3, -/* 0FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BE4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FB8 */ 0xFFFD, 0x929F, 0xFFFD, 0xFFFD, 0x9BE3, 0x9BE2, 0x9BE5, 0xFFFD, -/* 0FC0 */ 0x92E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FC8 */ 0x9083, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E74, 0xFFFD, -/* 0FD0 */ 0x90C8, 0xFFFD, 0x91D1, 0x8B41, 0xFFFD, 0xFFFD, 0x92A0, 0xFFFD, -/* 0FD8 */ 0xFFFD, 0x9BE6, 0x9BE7, 0x8FED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FE0 */ 0x9658, 0xFFFD, 0xFFFD, 0x9BEA, 0xFFFD, 0xFFFD, 0x9BE9, 0x9BE8, -/* 0FE8 */ 0x959D, 0xFFFD, 0x9BF1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9679, -/* 0FF0 */ 0xFFFD, 0x9BEB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BED, -/* 0FF8 */ 0x968B, 0xFFFD, 0x9BEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1000 */ 0xFFFD, 0xFFFD, 0x9BEE, 0xFFFD, 0x94A6, 0x9BEF, 0x95BC, 0x9BF0, -/* 1008 */ 0x8AB1, 0x95BD, 0x944E, 0x9BF2, 0x9BF3, 0xFFFD, 0x8D4B, 0x8AB2, -/* 1010 */ 0x9BF4, 0x8CB6, 0x9763, 0x9748, 0x8AF4, 0x9BF6, 0xFFFD, 0x92A1, -/* 1018 */ 0xFFFD, 0x8D4C, 0x8FAF, 0xFFFD, 0xFFFD, 0x94DD, 0xFFFD, 0xFFFD, -/* 1020 */ 0x8FB0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F98, 0xFFFD, 0xFFFD, -/* 1028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x92EA, 0x95F7, 0x9358, 0xFFFD, 0xFFFD, -/* 1030 */ 0x8D4D, 0xFFFD, 0x957B, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BF7, 0xFFFD, -/* 1038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9378, 0x8DC0, 0xFFFD, 0xFFFD, -/* 1040 */ 0xFFFD, 0x8CC9, 0xFFFD, 0x92EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x88C1, 0x8F8E, 0x8D4E, 0x9766, 0xFFFD, -/* 1050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BF8, -/* 1058 */ 0x9BF9, 0x9470, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BFA, 0x97F5, -/* 1060 */ 0x984C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BFC, 0x9BFB, 0xFFFD, -/* 1068 */ 0xFFFD, 0x8A66, 0xFFFD, 0xFFFD, 0x9C40, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1070 */ 0x9C43, 0x9C44, 0xFFFD, 0x9C42, 0xFFFD, 0x955F, 0x8FB1, 0x9C46, -/* 1078 */ 0x9C45, 0x9C41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C47, 0x9C48, -/* 1080 */ 0xFFFD, 0xFFFD, 0x9C49, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C4C, 0x9C4A, -/* 1088 */ 0xFFFD, 0x9C4B, 0x9C4D, 0xFFFD, 0x8984, 0x92EC, 0x9C4E, 0xFFFD, -/* 1090 */ 0x8C9A, 0x89F4, 0x9455, 0xFFFD, 0x9C4F, 0x93F9, 0xFFFD, 0x95D9, -/* 1098 */ 0xFFFD, 0x9C50, 0x984D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C51, -/* 10A0 */ 0x95BE, 0x9C54, 0x989F, 0x98AF, 0xFFFD, 0x8EAE, 0x93F3, 0x9C55, -/* 10A8 */ 0xFFFD, 0x8B7C, 0x92A2, 0x88F8, 0x9C56, 0x95A4, 0x8D4F, 0xFFFD, -/* 10B0 */ 0xFFFD, 0x926F, 0xFFFD, 0xFFFD, 0xFFFD, 0x92ED, 0xFFFD, 0xFAB7, -/* 10B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x96ED, 0x8CB7, 0x8CCA, 0xFFFD, 0x9C57, -/* 10C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9C58, 0xFFFD, 0x9C5E, 0xFFFD, 0x8EE3, -/* 10C8 */ 0xFFFD, 0xFFFD, 0xFAB8, 0x92A3, 0xFFFD, 0x8BAD, 0x9C59, 0xFFFD, -/* 10D0 */ 0xFFFD, 0xFFFD, 0x954A, 0xFFFD, 0x9265, 0xFFFD, 0xFFFD, 0x9C5A, -/* 10D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFA67, 0xFFFD, 0xFFFD, 0x9C5B, 0xFFFD, -/* 10E0 */ 0x8BAE, 0xFFFD, 0x9C5C, 0xFFFD, 0x9C5D, 0xFFFD, 0xFFFD, 0x9C5F, -/* 10E8 */ 0xFFFD, 0x9396, 0xFFFD, 0xFFFD, 0x9C60, 0x9C61, 0xFFFD, 0x9C62, -/* 10F0 */ 0xFFFD, 0xFFFD, 0x9C53, 0x9C52, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C63, -/* 10F8 */ 0x8C60, 0xFFFD, 0xFFFD, 0xFFFD, 0x9546, 0xFAB9, 0xFFFD, 0x8DCA, -/* 1100 */ 0x9556, 0x92A4, 0x956A, 0x9C64, 0xFFFD, 0xFFFD, 0x8FB2, 0x8965, -/* 1108 */ 0xFFFD, 0x9C65, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C66, 0xFFFD, 0x96F0, -/* 1110 */ 0xFFFD, 0xFFFD, 0x94DE, 0xFFFD, 0xFFFD, 0x9C69, 0x899D, 0x90AA, -/* 1118 */ 0x9C68, 0x9C67, 0x8C61, 0x91D2, 0xFFFD, 0x9C6D, 0x9C6B, 0xFFFD, -/* 1120 */ 0x9C6A, 0x97A5, 0x8CE3, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F99, 0x9C6C, -/* 1128 */ 0x936B, 0x8F5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x93BE, 0x9C70, 0x9C6F, -/* 1130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C6E, 0xFFFD, 0x9C71, 0x8CE4, -/* 1138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C72, 0x959C, -/* 1140 */ 0x8F7A, 0xFFFD, 0xFFFD, 0x9C73, 0x94F7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1148 */ 0xFFFD, 0x93BF, 0x92A5, 0xFFFD, 0xFFFD, 0xFABA, 0xFFFD, 0x934F, -/* 1150 */ 0xFFFD, 0xFFFD, 0x9C74, 0x8B4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1158 */ 0xFFFD, 0x9053, 0xFFFD, 0x954B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1160 */ 0xFFFD, 0xFFFD, 0x8AF5, 0x9445, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C75, 0x8E75, 0x9659, 0x965A, -/* 1170 */ 0xFFFD, 0xFFFD, 0x899E, 0x9C7A, 0xFABB, 0xFFFD, 0x9289, 0xFFFD, -/* 1178 */ 0xFFFD, 0xFFFD, 0x9C77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1180 */ 0xFFFD, 0x89F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CAB, 0x9C79, -/* 1188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x944F, 0xFFFD, 0xFFFD, 0x9C78, 0xFFFD, -/* 1190 */ 0xFFFD, 0x9C76, 0xFFFD, 0x8D9A, 0xFFFD, 0x9C7C, 0x9C83, 0x9C89, -/* 1198 */ 0x9C81, 0xFFFD, 0x937B, 0xFFFD, 0xFFFD, 0x9C86, 0x957C, 0xFFFD, -/* 11A0 */ 0xFFFD, 0x9C80, 0xFFFD, 0x9C85, 0x97E5, 0x8E76, 0xFFFD, 0xFFFD, -/* 11A8 */ 0x91D3, 0x9C7D, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B7D, 0x9C88, 0x90AB, -/* 11B0 */ 0x8985, 0x9C82, 0x89F6, 0x9C87, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BAF, -/* 11B8 */ 0xFFFD, 0x9C84, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11C0 */ 0xFFFD, 0xFFFD, 0x9C8A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11C8 */ 0xFFFD, 0x9C8C, 0x9C96, 0x9C94, 0xFFFD, 0xFFFD, 0x9C91, 0xFFFD, -/* 11D0 */ 0xFFFD, 0xFFFD, 0x9C90, 0x97F6, 0xFFFD, 0x9C92, 0xFFFD, 0xFFFD, -/* 11D8 */ 0x8BB0, 0xFFFD, 0x8D50, 0xFFFD, 0xFFFD, 0x8F9A, 0xFFFD, 0xFFFD, -/* 11E0 */ 0xFFFD, 0x9C99, 0x9C8B, 0xFFFD, 0xFFFD, 0xFABC, 0xFFFD, 0x9C8F, -/* 11E8 */ 0x9C7E, 0xFFFD, 0x89F8, 0x9C93, 0x9C95, 0x9270, 0xFFFD, 0xFFFD, -/* 11F0 */ 0x8DA6, 0x89B6, 0x9C8D, 0x9C98, 0x9C97, 0x8BB1, 0xFFFD, 0x91A7, -/* 11F8 */ 0x8A86, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C62, 0xFFFD, 0x9C8E, -/* 1200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1208 */ 0xFFFD, 0x9C9A, 0xFFFD, 0x9C9D, 0x9C9F, 0xFABD, 0xFFFD, 0xFFFD, -/* 1210 */ 0xFFFD, 0x8EBB, 0xFABE, 0x9CA5, 0x92EE, 0x9C9B, 0xFFFD, 0xFFFD, -/* 1218 */ 0xFFFD, 0xFFFD, 0x9CA3, 0xFFFD, 0x89F7, 0xFFFD, 0x9CA1, 0x9CA2, -/* 1220 */ 0xFFFD, 0xFFFD, 0x9C9E, 0x9CA0, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CE5, -/* 1228 */ 0x9749, 0xFFFD, 0xFFFD, 0x8AB3, 0xFFFD, 0xFFFD, 0x8978, 0x9CA4, -/* 1230 */ 0xFFFD, 0x9459, 0x88AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1238 */ 0xFFFD, 0xFFFD, 0x94DF, 0x9C7B, 0x9CAA, 0x9CAE, 0x96E3, 0xFFFD, -/* 1240 */ 0x9CA7, 0xFFFD, 0xFFFD, 0xFFFD, 0x9389, 0x9CAC, 0xFFFD, 0xFFFD, -/* 1248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FEE, 0x9CAD, 0x93D5, -/* 1250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1258 */ 0xFFFD, 0x9866, 0xFFFD, 0x9CA9, 0xFFFD, 0xFAC0, 0xFFFD, 0xFFFD, -/* 1260 */ 0x9CAF, 0xFFFD, 0x8D9B, 0xFFFD, 0x90C9, 0xFFFD, 0xFABF, 0x88D2, -/* 1268 */ 0x9CA8, 0x9CA6, 0xFFFD, 0x9179, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C9C, -/* 1270 */ 0x8E53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1278 */ 0x91C4, 0x9CBB, 0xFAC2, 0x917A, 0x9CB6, 0xFFFD, 0x9CB3, 0x9CB4, -/* 1280 */ 0xFFFD, 0x8EE4, 0x9CB7, 0x9CBA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1288 */ 0x9CB5, 0x8F44, 0xFFFD, 0x9CB8, 0xFFFD, 0xFFFD, 0x9CB2, 0xFFFD, -/* 1290 */ 0x96FA, 0x96F9, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CBC, 0x9CBD, 0x88D3, -/* 1298 */ 0xFFFD, 0xFAC3, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CB1, 0xFFFD, 0xFFFD, -/* 12A0 */ 0xFFFD, 0xFFFD, 0x8BF0, 0x88A4, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AB4, -/* 12A8 */ 0xFAC1, 0x9CB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CC1, -/* 12B0 */ 0x9CC0, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CC5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12B8 */ 0xFAC5, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CC6, 0xFFFD, 0xFFFD, 0xFAC4, -/* 12C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CC4, 0x9CC7, 0x9CBF, 0x9CC3, -/* 12C8 */ 0xFFFD, 0xFFFD, 0x9CC8, 0xFFFD, 0x9CC9, 0xFFFD, 0xFFFD, 0x9CBE, -/* 12D0 */ 0x8E9C, 0xFFFD, 0x9CC2, 0x91D4, 0x8D51, 0x9CB0, 0x9054, 0xFFFD, -/* 12D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9CD6, 0xFFFD, 0x95E7, 0xFFFD, 0xFFFD, -/* 12E0 */ 0x9CCC, 0x9CCD, 0x9CCE, 0xFFFD, 0xFFFD, 0x9CD5, 0xFFFD, 0x9CD4, -/* 12E8 */ 0xFFFD, 0xFFFD, 0x969D, 0x8AB5, 0xFFFD, 0x9CD2, 0xFFFD, 0x8C64, -/* 12F0 */ 0x8A53, 0xFFFD, 0xFFFD, 0x9CCF, 0xFFFD, 0xFFFD, 0x97B6, 0x9CD1, -/* 12F8 */ 0x88D4, 0x9CD3, 0xFFFD, 0x9CCA, 0x9CD0, 0x9CD7, 0x8C63, 0x9CCB, -/* 1300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x977C, 0xFFFD, -/* 1308 */ 0xFFFD, 0xFFFD, 0x974A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CDA, -/* 1310 */ 0xFFFD, 0xFFFD, 0x9CDE, 0xFFFD, 0xFFFD, 0xFFFD, 0x919E, 0xFFFD, -/* 1318 */ 0x97F7, 0x9CDF, 0xFFFD, 0xFFFD, 0x9CDC, 0xFFFD, 0x9CD9, 0xFFFD, -/* 1320 */ 0xFAC6, 0x9CD8, 0x9CDD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95AE, 0xFFFD, 0xFFFD, 0x93B2, -/* 1330 */ 0xFFFD, 0x8C65, 0xFFFD, 0x9CE0, 0x9CDB, 0xFFFD, 0x9CE1, 0xFFFD, -/* 1338 */ 0xFFFD, 0xFFFD, 0x8C9B, 0xFFFD, 0xFFFD, 0xFFFD, 0x89AF, 0xFFFD, -/* 1340 */ 0xFFFD, 0xFFFD, 0x9CE9, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AB6, 0xFFFD, -/* 1348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9CE7, 0xFFFD, 0xFFFD, 0x9CE8, 0x8DA7, -/* 1350 */ 0x9CE6, 0x9CE4, 0x9CE3, 0x9CEA, 0x9CE2, 0x9CEC, 0xFFFD, 0xFFFD, -/* 1358 */ 0x89F9, 0x9CEE, 0xFFFD, 0xFFFD, 0x9CED, 0x92A6, 0xFFFD, 0x9CF1, -/* 1360 */ 0xFFFD, 0x9CEF, 0x9CE5, 0x8C9C, 0xFFFD, 0x9CF0, 0xFFFD, 0x9CF4, -/* 1368 */ 0x9CF3, 0x9CF5, 0x9CF2, 0x9CF6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9CF7, 0x9CF8, 0x95E8, 0xFFFD, 0x9CFA, -/* 1378 */ 0x9CF9, 0x8F5E, 0xFFFD, 0x90AC, 0x89E4, 0x89FA, 0xFAC7, 0x9CFB, -/* 1380 */ 0xFFFD, 0x88BD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90CA, 0x9CFC, 0xFFFD, -/* 1388 */ 0xE6C1, 0x9D40, 0x8C81, 0xFFFD, 0x9D41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1390 */ 0xFFFD, 0x90ED, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D42, 0xFFFD, 0xFFFD, -/* 1398 */ 0xFFFD, 0x9D43, 0x8B59, 0x9D44, 0xFFFD, 0x9D45, 0x9D46, 0x91D5, -/* 13A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8CCB, 0xFFFD, 0xFFFD, 0x96DF, 0xFFFD, -/* 13A8 */ 0xFFFD, 0xFFFD, 0x965B, 0x8F8A, 0x9D47, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13B0 */ 0xFFFD, 0xFFFD, 0x90EE, 0xE7BB, 0x94E0, 0xFFFD, 0x8EE8, 0xFFFD, -/* 13B8 */ 0x8DCB, 0x9D48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91C5, 0xFFFD, -/* 13C0 */ 0x95A5, 0xFFFD, 0xFFFD, 0x91EF, 0xFFFD, 0xFFFD, 0x9D4B, 0xFFFD, -/* 13C8 */ 0xFFFD, 0x9D49, 0xFFFD, 0x9D4C, 0xFFFD, 0xFFFD, 0x9D4A, 0xFFFD, -/* 13D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9D4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13D8 */ 0xFFFD, 0x95AF, 0xFFFD, 0xFFFD, 0x88B5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13E0 */ 0xFFFD, 0x957D, 0xFFFD, 0xFFFD, 0x94E1, 0xFFFD, 0xFFFD, 0x9D4E, -/* 13E8 */ 0xFFFD, 0x9D51, 0x8FB3, 0x8B5A, 0xFFFD, 0x9D4F, 0x9D56, 0x8FB4, -/* 13F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D50, 0x9463, 0xFFFD, 0xFFFD, -/* 13F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x977D, 0x9D52, 0x9D53, 0x9D57, -/* 1400 */ 0x938A, 0x9D54, 0x8D52, 0x90DC, 0xFFFD, 0xFFFD, 0x9D65, 0x94B2, -/* 1408 */ 0xFFFD, 0x91F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1410 */ 0xFFFD, 0xFAC8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x94E2, 0x9DAB, -/* 1418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95F8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1420 */ 0x92EF, 0xFFFD, 0xFFFD, 0xFFFD, 0x9695, 0xFFFD, 0x9D5A, 0x899F, -/* 1428 */ 0x928A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D63, 0xFFFD, 0xFFFD, -/* 1430 */ 0x9253, 0x9D5D, 0x9D64, 0x9D5F, 0x9D66, 0x9D62, 0xFFFD, 0x9D61, -/* 1438 */ 0x948F, 0xFFFD, 0x9D5B, 0x89FB, 0x9D59, 0x8B91, 0x91F1, 0x9D55, -/* 1440 */ 0xFFFD, 0xFFFD, 0x9D58, 0x8D53, 0x90D9, 0xFFFD, 0x8FB5, 0x9D60, -/* 1448 */ 0x9471, 0xFFFD, 0xFFFD, 0x8B92, 0x8A67, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A87, -/* 1458 */ 0x9040, 0x9D68, 0x9D6D, 0xFFFD, 0x9D69, 0xFFFD, 0x8C9D, 0xFFFD, -/* 1460 */ 0x9D6E, 0x8E41, 0x8D89, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1468 */ 0xFFFD, 0x8F45, 0x9D5C, 0xFFFD, 0x8E9D, 0x9D6B, 0xFFFD, 0xFFFD, -/* 1470 */ 0xFFFD, 0xFFFD, 0x8E77, 0x9D6C, 0x88C2, 0xFFFD, 0xFFFD, 0x9D67, -/* 1478 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92A7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B93, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1488 */ 0xFFFD, 0xFFFD, 0x8BB2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1490 */ 0xFFFD, 0xFFFD, 0x9D6A, 0x88A5, 0xFFFD, 0xFFFD, 0x8DC1, 0xFFFD, -/* 1498 */ 0xFFFD, 0xFFFD, 0x9055, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92F0, 0xFFFD, 0xFFFD, -/* 14A8 */ 0x94D2, 0x9D70, 0x917D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91A8, 0xFFFD, 0xFFFD, 0x8E4A, -/* 14B8 */ 0x9D71, 0xFFFD, 0x9D73, 0x9D6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14C0 */ 0x95DF, 0xFFFD, 0x92BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x917B, -/* 14C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14D0 */ 0xFFFD, 0xFFFD, 0x95F9, 0x8ECC, 0x9D80, 0xFFFD, 0x9D7E, 0xFFFD, -/* 14D8 */ 0xFFFD, 0x9098, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C9E, 0xFFFD, 0xFFFD, -/* 14E0 */ 0xFFFD, 0x9D78, 0x8FB7, 0xFFFD, 0xFFFD, 0x93E6, 0x9450, 0xFFFD, -/* 14E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9D76, 0xFFFD, 0xFFFD, 0x917C, 0xFFFD, -/* 14F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8EF6, 0x9D7B, 0xFFFD, 0xFFFD, 0x8FB6, -/* 14F8 */ 0xFFFD, 0x9D75, 0x9D7A, 0xFFFD, 0xFFFD, 0x9472, 0xFFFD, 0xFFFD, -/* 1500 */ 0xFFFD, 0x9D74, 0xFFFD, 0x8C40, 0xFFFD, 0xFFFD, 0x8A7C, 0xFFFD, -/* 1508 */ 0xFFFD, 0xFFFD, 0x9D7C, 0x97A9, 0x8DCC, 0x9254, 0x9D79, 0xFFFD, -/* 1510 */ 0x90DA, 0xFFFD, 0x8D54, 0x9084, 0x8986, 0x915B, 0x9D77, 0x8B64, -/* 1518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C66, 0xFFFD, 0x92CD, -/* 1520 */ 0x9D7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x917E, 0xFFFD, -/* 1528 */ 0xFFFD, 0x9D81, 0xFFFD, 0x9D83, 0xFFFD, 0xFFFD, 0x91B5, 0x9D89, -/* 1530 */ 0xFFFD, 0x9D84, 0xFFFD, 0xFFFD, 0x9D86, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1538 */ 0xFFFD, 0xFFFD, 0x9560, 0x92F1, 0xFFFD, 0x9D87, 0xFFFD, 0xFFFD, -/* 1540 */ 0xFFFD, 0x974B, 0xFFFD, 0xFFFD, 0xFFFD, 0x9767, 0x8AB7, 0xFFFD, -/* 1548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88AC, 0xFFFD, 0x9D85, 0xFFFD, -/* 1550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D82, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1558 */ 0xFFFD, 0x8AF6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8987, -/* 1560 */ 0xFAC9, 0x9D88, 0xFFFD, 0xFFFD, 0xFFFD, 0x9768, 0x9D8C, 0xFFFD, -/* 1568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91B9, 0xFFFD, 0x9D93, -/* 1570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9D8D, 0xFFFD, 0xFFFD, 0x9D8A, 0x9D91, -/* 1578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D72, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D8E, 0xFFFD, -/* 1588 */ 0x9D92, 0xFFFD, 0xFFFD, 0xFFFD, 0x94C0, 0x938B, 0xFFFD, 0xFFFD, -/* 1590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D8B, 0xFFFD, 0x9D8F, 0xFFFD, -/* 1598 */ 0xFFFD, 0xFFFD, 0x8C67, 0xFFFD, 0xFFFD, 0xFFFD, 0x8DEF, 0xFFFD, -/* 15A0 */ 0xFFFD, 0xFFFD, 0x90DB, 0x9D97, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9345, 0xFFFD, 0xFFFD, -/* 15B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFACA, 0xFFFD, 0xFFFD, -/* 15B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D94, 0xFFFD, 0x9680, 0xFFFD, -/* 15C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D95, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9D96, 0xFFFD, 0x96CC, 0xFFFD, 0x90A0, -/* 15D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15D8 */ 0x8C82, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D9D, 0xFFFD, 0xFFFD, -/* 15E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E54, -/* 15E8 */ 0x9D9A, 0xFFFD, 0x9D99, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9451, -/* 15F0 */ 0xFFFD, 0xFFFD, 0xFACB, 0x93B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15F8 */ 0xFFFD, 0x9350, 0x9D9B, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D9C, 0xFFFD, -/* 1600 */ 0x958F, 0xFFFD, 0x9464, 0x8E42, 0xFFFD, 0x90EF, 0xFFFD, 0x966F, -/* 1608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A68, 0xFFFD, -/* 1610 */ 0x9DA3, 0x9D9E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9769, 0x9DA5, -/* 1618 */ 0xFFFD, 0xFFFD, 0x9DA1, 0xFFFD, 0x9DA2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1620 */ 0xFFFD, 0xFFFD, 0x9180, 0xFACC, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DA0, -/* 1628 */ 0xFFFD, 0x9D5E, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DA4, 0xFFFD, 0x9D9F, -/* 1630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DA9, 0x9DAA, 0x9346, -/* 1638 */ 0x9DAC, 0xFFFD, 0xFFFD, 0x8E43, 0x9DA7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1640 */ 0xFFFD, 0x8B5B, 0xFFFD, 0xFFFD, 0x9DAD, 0xFFFD, 0x9DA6, 0x9DB1, -/* 1648 */ 0xFFFD, 0x9DB0, 0xFFFD, 0x9DAF, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DB2, -/* 1650 */ 0xFFFD, 0xFFFD, 0x9DB4, 0x8FEF, 0xFFFD, 0x9DB3, 0xFFFD, 0xFFFD, -/* 1658 */ 0xFFFD, 0xFFFD, 0x9DB7, 0x9DB5, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DB6, -/* 1660 */ 0x9D90, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DB9, 0x9DB8, -/* 1668 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D98, 0x9DBA, 0x9DAE, -/* 1670 */ 0xFFFD, 0xFFFD, 0x8E78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DBB, -/* 1678 */ 0x9DBC, 0x9DBE, 0x9DBD, 0x9DBF, 0x89FC, 0xFFFD, 0x8D55, 0xFFFD, -/* 1680 */ 0xFFFD, 0x95FA, 0x90AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1688 */ 0x8CCC, 0xFFFD, 0xFFFD, 0x9DC1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1690 */ 0x9DC4, 0xFACD, 0x9571, 0xFFFD, 0x8B7E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1698 */ 0x9DC3, 0x9DC2, 0x9473, 0x9DC5, 0x8BB3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16A0 */ 0x9DC7, 0x9DC6, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AB8, 0x8E55, 0xFFFD, -/* 16A8 */ 0xFFFD, 0x93D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C68, -/* 16B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9094, 0xFFFD, 0x9DC8, 0xFFFD, 0x90AE, -/* 16B8 */ 0x9347, 0xFFFD, 0x957E, 0x9DC9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DCA, 0x9DCB, 0xFFFD, -/* 16C8 */ 0xFFFD, 0xFFFD, 0x95B6, 0x9B7C, 0x90C4, 0xFFFD, 0xFFFD, 0x956B, -/* 16D0 */ 0xFFFD, 0x8DD6, 0xFFFD, 0x94E3, 0x94C1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16D8 */ 0xFFFD, 0xFFFD, 0x936C, 0xFFFD, 0x97BF, 0xFFFD, 0x9DCD, 0x8ECE, -/* 16E0 */ 0xFFFD, 0xFFFD, 0x9DCE, 0xFFFD, 0x88B4, 0xFFFD, 0xFFFD, 0x8BD2, -/* 16E8 */ 0x90CB, 0xFFFD, 0x9580, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DCF, 0x8E61, -/* 16F0 */ 0x9266, 0xFFFD, 0x8E7A, 0x9056, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16F8 */ 0xFFFD, 0xFFFD, 0x9DD0, 0xFFFD, 0x95FB, 0xFFFD, 0xFFFD, 0x8997, -/* 1700 */ 0x8E7B, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DD3, 0xFFFD, 0x9DD1, 0x9DD4, -/* 1708 */ 0x97B7, 0x9DD2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90F9, 0x9DD5, -/* 1710 */ 0xFFFD, 0xFFFD, 0x91B0, 0xFFFD, 0xFFFD, 0x9DD6, 0xFFFD, 0xFFFD, -/* 1718 */ 0xFFFD, 0xFFFD, 0x8AF8, 0xFFFD, 0x9DD8, 0xFFFD, 0x9DD7, 0xFFFD, -/* 1720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9DD9, 0x9DDA, 0x8AF9, 0xFFFD, 0xFFFD, -/* 1728 */ 0x93FA, 0x9255, 0x8B8C, 0x8E7C, 0x9181, 0xFFFD, 0xFFFD, 0x8F7B, -/* 1730 */ 0x88AE, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DDB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x89A0, 0x9DDF, 0xFFFD, -/* 1740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFACE, 0xFFFD, 0x8D56, 0x9DDE, 0xFFFD, -/* 1748 */ 0xFFFD, 0x8DA9, 0x8FB8, 0xFFFD, 0xFAD1, 0x9DDD, 0xFFFD, 0x8FB9, -/* 1750 */ 0xFFFD, 0x96BE, 0x8DA8, 0xFFFD, 0xFFFD, 0xFFFD, 0x88D5, 0x90CC, -/* 1758 */ 0xFACF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DE4, -/* 1760 */ 0xFFFD, 0xFAD3, 0x90AF, 0x8966, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAD4, -/* 1768 */ 0x8F74, 0xFFFD, 0x9686, 0x8DF0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1770 */ 0x8FBA, 0xFAD2, 0x90A5, 0xFFFD, 0xFA63, 0xFFFD, 0xFFFD, 0x9DE3, -/* 1778 */ 0x9DE1, 0x9DE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAD0, 0x928B, -/* 1780 */ 0xFFFD, 0xFFFD, 0x9E45, 0xFFFD, 0x9DE8, 0x8E9E, 0x8D57, 0x9DE6, -/* 1788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DE7, 0xFFFD, 0x9057, 0xFFFD, -/* 1790 */ 0xFFFD, 0xFFFD, 0x9DE5, 0xFFFD, 0xFFFD, 0x8E4E, 0xFFFD, 0xFFFD, -/* 1798 */ 0xFFFD, 0xFFFD, 0xFAD6, 0xFFFD, 0xFAD7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17A0 */ 0x9DEA, 0x9DE9, 0x9DEE, 0xFFFD, 0xFFFD, 0x9DEF, 0xFFFD, 0x9DEB, -/* 17A8 */ 0xFAD5, 0x8A41, 0x9DEC, 0x9DED, 0x94D3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17B0 */ 0xFFFD, 0x9581, 0x8C69, 0x9DF0, 0xFFFD, 0xFFFD, 0xFAD9, 0x90B0, -/* 17B8 */ 0xFFFD, 0x8FBB, 0xFFFD, 0xFFFD, 0xFFFD, 0x9271, 0xFFFD, 0xFFFD, -/* 17C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BC5, 0xFFFD, 0x9DF1, 0x9DF5, -/* 17C8 */ 0xFFFD, 0xFFFD, 0x89C9, 0x9DF2, 0x9DF4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17D0 */ 0xFFFD, 0x9DF3, 0xFFFD, 0xFFFD, 0x8F8B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17D8 */ 0xFFFD, 0x9267, 0x88C3, 0x9DF6, 0xFADA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17E0 */ 0x9DF7, 0xFFFD, 0xFFFD, 0xFADB, 0xFFFD, 0x92A8, 0xFFFD, 0xFFFD, -/* 17E8 */ 0xFFFD, 0x97EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E62, 0xFFFD, -/* 17F0 */ 0xFFFD, 0x95E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFADC, 0xFFFD, 0x965C, -/* 17F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9E41, 0x9DF9, 0xFFFD, 0xFFFD, 0x9DFC, -/* 1800 */ 0xFFFD, 0x9DFB, 0xFADD, 0xFFFD, 0x9DF8, 0xFFFD, 0xFFFD, 0x9E40, -/* 1808 */ 0xFFFD, 0xFFFD, 0x93DC, 0xFFFD, 0x9DFA, 0x9E42, 0xFFFD, 0xFFFD, -/* 1810 */ 0x8F8C, 0x9E43, 0xFFFD, 0x976A, 0x9498, 0xFFFD, 0xFFFD, 0x9E44, -/* 1818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E46, 0xFFFD, 0xFFFD, -/* 1820 */ 0x9E47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E48, -/* 1828 */ 0xFFFD, 0x8BC8, 0x8967, 0x8D58, 0x9E49, 0xFFFD, 0x9E4A, 0x8F91, -/* 1830 */ 0x9182, 0xFADE, 0xFA66, 0x99D6, 0x915D, 0x915C, 0x91D6, 0x8DC5, -/* 1838 */ 0xFFFD, 0xFFFD, 0x98F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C8E, -/* 1840 */ 0x974C, 0xFFFD, 0x95FC, 0xFFFD, 0x959E, 0xFADF, 0x9E4B, 0xFFFD, -/* 1848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8DF1, 0x92BD, 0x9E4C, 0x984E, 0xFFFD, -/* 1850 */ 0xFFFD, 0xFFFD, 0x965D, 0xFFFD, 0x92A9, 0x9E4D, 0x8AFA, 0xFFFD, -/* 1858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E4E, 0x9E4F, 0x96D8, -/* 1860 */ 0xFFFD, 0x96A2, 0x9696, 0x967B, 0x8E44, 0x9E51, 0xFFFD, 0xFFFD, -/* 1868 */ 0x8EE9, 0xFFFD, 0xFFFD, 0x9670, 0xFFFD, 0x9E53, 0x9E56, 0x9E55, -/* 1870 */ 0xFFFD, 0x8AF7, 0xFFFD, 0xFFFD, 0x8B80, 0xFFFD, 0x9E52, 0xFFFD, -/* 1878 */ 0x9E54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E57, 0xFFFD, 0xFFFD, -/* 1880 */ 0x9099, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x979B, 0x88C7, 0x8DDE, -/* 1888 */ 0x91BA, 0xFFFD, 0x8EDB, 0xFFFD, 0xFFFD, 0x8FF1, 0xFFFD, 0xFFFD, -/* 1890 */ 0x9E5A, 0xFFFD, 0xFFFD, 0x936D, 0xFFFD, 0x9E58, 0x91A9, 0x9E59, -/* 1898 */ 0x8FF0, 0x96DB, 0x9E5B, 0x9E5C, 0x9788, 0xFAE1, 0xFFFD, 0xFFFD, -/* 18A0 */ 0xFFFD, 0x9E61, 0xFFFD, 0xFFFD, 0x8D59, 0xFFFD, 0x9474, 0x9E5E, -/* 18A8 */ 0x938C, 0x9DDC, 0x9DE0, 0xFFFD, 0x8B6E, 0xFFFD, 0x9466, 0xFFFD, -/* 18B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9E60, 0xFFFD, 0x8FBC, 0x94C2, 0xFFFD, -/* 18B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E66, 0xFFFD, 0x94F8, 0xFFFD, -/* 18C0 */ 0x9E5D, 0xFFFD, 0x9E63, 0x9E62, 0xFFFD, 0xFFFD, 0xFFFD, 0x90CD, -/* 18C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x968D, 0xFFFD, 0x97D1, 0xFFFD, -/* 18D0 */ 0xFFFD, 0x9687, 0xFFFD, 0x89CA, 0x8E7D, 0xFFFD, 0xFFFD, 0x9867, -/* 18D8 */ 0x9E65, 0x9095, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E64, 0xFFFD, 0xFFFD, -/* 18E0 */ 0x9E5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CCD, 0xFFFD, -/* 18E8 */ 0xFFFD, 0xFFFD, 0x9E6B, 0x9E69, 0xFFFD, 0x89CB, 0x9E67, 0x9E6D, -/* 18F0 */ 0x9E73, 0xFFFD, 0xFAE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAE4, -/* 18F8 */ 0x91C6, 0xFFFD, 0xFFFD, 0x95BF, 0xFFFD, 0x9E75, 0xFFFD, 0xFFFD, -/* 1900 */ 0xFFFD, 0x9541, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E74, 0x9490, 0x965E, -/* 1908 */ 0x8AB9, 0xFFFD, 0x90F5, 0x8F5F, 0xFFFD, 0xFFFD, 0xFFFD, 0x92D1, -/* 1910 */ 0xFFFD, 0x974D, 0xFFFD, 0xFFFD, 0x9E70, 0x9E6F, 0xFFFD, 0xFFFD, -/* 1918 */ 0xFFFD, 0x9E71, 0xFFFD, 0x9E6E, 0xFFFD, 0xFFFD, 0x9E76, 0xFFFD, -/* 1920 */ 0x9E6C, 0xFFFD, 0xFFFD, 0x9E6A, 0xFFFD, 0x9E72, 0x9E68, 0xFFFD, -/* 1928 */ 0x928C, 0xFFFD, 0x96F6, 0x8EC4, 0x8DF2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1930 */ 0xFFFD, 0xFFFD, 0x8DB8, 0xFFFD, 0xFFFD, 0x968F, 0x8A60, 0xFFFD, -/* 1938 */ 0xFAE5, 0x92CC, 0x93C8, 0x8968, 0x90F0, 0xFFFD, 0xFFFD, 0x90B2, -/* 1940 */ 0x8C49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E78, -/* 1948 */ 0xFFFD, 0xFFFD, 0x8D5A, 0x8A9C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1950 */ 0xFFFD, 0xFFFD, 0x9E7A, 0x8A94, 0x9E81, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9E7D, 0xFFFD, 0x90F1, 0xFFFD, 0xFFFD, -/* 1960 */ 0xFFFD, 0x8A6A, 0x8DAA, 0xFFFD, 0xFFFD, 0x8A69, 0x8DCD, 0xFFFD, -/* 1968 */ 0xFFFD, 0x9E7B, 0x8C85, 0x8C6A, 0x938D, 0xFAE6, 0xFFFD, 0x9E79, -/* 1970 */ 0xFFFD, 0x88C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E7C, 0x9E7E, -/* 1978 */ 0xFFFD, 0x8BCB, 0x8C4B, 0xFAE3, 0x8ABA, 0x8B6A, 0xFFFD, 0xFFFD, -/* 1980 */ 0xFFFD, 0xFFFD, 0x9E82, 0xFFFD, 0xFFFD, 0x8DF7, 0x9691, 0xFFFD, -/* 1988 */ 0x8E56, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E83, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1990 */ 0x954F, 0x9E8F, 0xFFFD, 0x89B1, 0x9E84, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9E95, 0x9E85, 0xFFFD, 0x97C0, 0xFFFD, -/* 19A0 */ 0x9E8C, 0xFFFD, 0x947E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A8 */ 0xFFFD, 0xFFFD, 0x9E94, 0xFFFD, 0x9E87, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19B0 */ 0x88B2, 0x9E89, 0xFFFD, 0xFFFD, 0x8D5B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19B8 */ 0x9E8B, 0xFFFD, 0x9E8A, 0xFFFD, 0x9E86, 0x9E91, 0xFFFD, 0x8FBD, -/* 19C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9AEB, 0x8CE6, 0x979C, 0xFFFD, 0xFFFD, -/* 19C8 */ 0xFFFD, 0xFFFD, 0x9E88, 0xFFFD, 0x92F2, 0x8A42, 0x8DAB, 0xFFFD, -/* 19D0 */ 0x9E80, 0xFFFD, 0x9E90, 0x8A81, 0xFFFD, 0xFFFD, 0x9E8E, 0x9E92, -/* 19D8 */ 0xFFFD, 0x938E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19E0 */ 0xFFFD, 0x8AFC, 0xFFFD, 0x9EB0, 0xFFFD, 0xFA64, 0x96C7, 0x9E97, -/* 19E8 */ 0x8AFB, 0xFFFD, 0x9E9E, 0xFFFD, 0xFAE7, 0xFFFD, 0xFFFD, 0x965F, -/* 19F0 */ 0xFFFD, 0x9E9F, 0x9EA1, 0xFFFD, 0x9EA5, 0x9E99, 0xFFFD, 0x9249, -/* 19F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x938F, 0x9EA9, 0x9E9C, 0xFFFD, -/* 1A00 */ 0x9EA6, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EA0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9058, 0x9EAA, 0xFFFD, 0xFFFD, 0x90B1, -/* 1A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EA8, 0x8ABB, -/* 1A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x986F, 0x9E96, 0xFFFD, -/* 1A20 */ 0xFFFD, 0x9EA4, 0x88D6, 0xFFFD, 0xFFFD, 0x9E98, 0xFFFD, 0xFFFD, -/* 1A28 */ 0x96B8, 0x9E9D, 0x9041, 0x92C5, 0x9E93, 0xFFFD, 0xFFFD, 0x9EA3, -/* 1A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x909A, 0x9EAD, -/* 1A38 */ 0x8A91, 0x8C9F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EAF, 0x9E9A, -/* 1A40 */ 0x9EAE, 0xFFFD, 0x9EA7, 0x9E9B, 0xFFFD, 0x9EAB, 0xFFFD, 0x9EAC, -/* 1A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EBD, 0xFFFD, 0xFFFD, -/* 1A50 */ 0xFFFD, 0x93CC, 0xFFFD, 0x9EA2, 0xFFFD, 0xFFFD, 0x9EB9, 0xFFFD, -/* 1A58 */ 0xFFFD, 0xFFFD, 0x9EBB, 0xFFFD, 0x92D6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x976B, -/* 1A68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A70 */ 0x9596, 0x9EB6, 0x91C8, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EBC, 0x915E, -/* 1A78 */ 0xFFFD, 0x9EB3, 0x9EC0, 0x9EBF, 0xFFFD, 0x93ED, 0x9EBE, 0x93E8, -/* 1A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAE9, 0xFFFD, 0x9EC2, -/* 1A88 */ 0x9EB5, 0xFFFD, 0x8BC6, 0x9EB8, 0x8F7C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A90 */ 0x9480, 0x9EBA, 0x8BC9, 0xFFFD, 0x9EB2, 0x9EB4, 0x9EB1, 0xFFFD, -/* 1A98 */ 0xFFFD, 0x984F, 0x8A79, 0x9EB7, 0xFFFD, 0xFFFD, 0x9EC1, 0x8A54, -/* 1AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8DE5, -/* 1AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x897C, 0xFFFD, 0xFFFD, 0x9ED2, 0xFFFD, -/* 1AB0 */ 0xFFFD, 0x9850, 0x9ED5, 0xFFFD, 0xFFFD, 0xFAEB, 0xFFFD, 0xFFFD, -/* 1AB8 */ 0x9059, 0x9ED4, 0xFFFD, 0xFFFD, 0xFFFD, 0x9ED3, 0xFFFD, 0xFFFD, -/* 1AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9ED0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9EC4, 0xFFFD, 0xFFFD, 0x9EE1, 0x9EC3, -/* 1AD0 */ 0xFFFD, 0x9ED6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AD8 */ 0x9ECE, 0xFFFD, 0xFFFD, 0x9EC9, 0x9EC6, 0xFFFD, 0x9EC7, 0xFFFD, -/* 1AE0 */ 0x9ECF, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAA0, 0xFFFD, 0xFFFD, 0x9ECC, -/* 1AE8 */ 0x8D5C, 0x92C6, 0x9184, 0x9ECA, 0xFFFD, 0x9EC5, 0xFFFD, 0xFFFD, -/* 1AF0 */ 0x9EC8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x976C, 0x968A, 0xFFFD, -/* 1AF8 */ 0xFFFD, 0xFFFD, 0x9ECD, 0x9ED7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAEC, -/* 1B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EDF, 0x9ED8, 0xFFFD, 0xFFFD, -/* 1B08 */ 0x9EE5, 0xFFFD, 0x9EE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EDE, -/* 1B10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EDD, 0xFFFD, -/* 1B18 */ 0x92CE, 0xFFFD, 0x9185, 0xFFFD, 0x9EDB, 0xFFFD, 0xFFFD, 0x9ED9, -/* 1B20 */ 0xFFFD, 0xFFFD, 0x9EE0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EE6, -/* 1B28 */ 0x94F3, 0x9EEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EE7, -/* 1B30 */ 0x9EEA, 0x9EE4, 0xFFFD, 0xFFFD, 0x9294, 0xFFFD, 0x9557, 0xFFFD, -/* 1B38 */ 0x9EDA, 0xFFFD, 0xFFFD, 0x9EE2, 0x8FBE, 0xFFFD, 0x96CD, 0x9EF6, -/* 1B40 */ 0x9EE9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CA0, 0x89A1, -/* 1B48 */ 0x8A7E, 0xFFFD, 0xFFFD, 0x9ED1, 0xFFFD, 0xFAED, 0xFFFD, 0xFFFD, -/* 1B50 */ 0xFFFD, 0xFFFD, 0x8FBF, 0x9EEE, 0xFFFD, 0x9EF5, 0x8EF7, 0x8A92, -/* 1B58 */ 0xFFFD, 0xFFFD, 0x924D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B60 */ 0xFFFD, 0x9EEB, 0xFFFD, 0xFAEF, 0x9EF0, 0x9EF4, 0xFFFD, 0xFFFD, -/* 1B68 */ 0x8BB4, 0x8B6B, 0x9EF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B70 */ 0x8B40, 0xFFFD, 0x93C9, 0x9EF1, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EF3, -/* 1B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAEE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9EED, 0xFAF0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B88 */ 0xFFFD, 0x9EEF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAF1, -/* 1B90 */ 0x8A80, 0x9268, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EFA, 0xFFFD, 0xFFFD, -/* 1B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EF8, 0x8CE7, -/* 1BA0 */ 0xFFFD, 0x9EF7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BA8 */ 0x9F40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E77, 0xFFFD, 0xFFFD, -/* 1BB0 */ 0xFFFD, 0x9EF9, 0xFFFD, 0x9EFB, 0x9EFC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9F4B, 0xFFFD, 0x9F47, 0xFFFD, 0x9E8D, -/* 1BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BC8 */ 0xFFFD, 0x9F45, 0xFFFD, 0xFFFD, 0x9F42, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BD0 */ 0xFFFD, 0xFFFD, 0x9EE8, 0x9F44, 0x9F43, 0x9F49, 0xFFFD, 0x9845, -/* 1BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F4C, 0x8BF9, -/* 1BE0 */ 0xFFFD, 0xFFFD, 0x9F48, 0x9F4A, 0xFFFD, 0xFFFD, 0xFAF2, 0xFFFD, -/* 1BE8 */ 0xFAF3, 0xFFFD, 0xFFFD, 0xFFFD, 0x94A5, 0xFFFD, 0x9F4D, 0x9F51, -/* 1BF0 */ 0x9F4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BF8 */ 0xFFFD, 0x9793, 0x9F4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EDC, -/* 1C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F52, -/* 1C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9F53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C10 */ 0xFFFD, 0xFFFD, 0x8954, 0xFFFD, 0x9F55, 0x8C87, 0x8E9F, 0xFFFD, -/* 1C18 */ 0x8BD3, 0xFFFD, 0xFFFD, 0xFFFD, 0x89A2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x977E, -/* 1C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F57, 0x9F56, 0x9F59, 0x8B5C, -/* 1C30 */ 0xFFFD, 0xFFFD, 0x8BD4, 0x8ABC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C38 */ 0x9F5C, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F5B, 0xFFFD, 0x9F5D, 0xFFFD, -/* 1C40 */ 0xFFFD, 0x89CC, 0xFFFD, 0x9256, 0xFFFD, 0x9F5E, 0xFFFD, 0xFFFD, -/* 1C48 */ 0x8ABD, 0x9F60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F5F, 0xFFFD, -/* 1C50 */ 0x9F61, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F62, 0xFFFD, 0x9F63, 0x8E7E, -/* 1C58 */ 0x90B3, 0x8D9F, 0xFFFD, 0x9590, 0xFFFD, 0xFFFD, 0x95E0, 0x9863, -/* 1C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E95, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C68 */ 0x8DCE, 0x97F0, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F64, 0x9F65, 0xFFFD, -/* 1C70 */ 0x8E80, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F66, 0x9F67, 0xFFFD, 0xFFFD, -/* 1C78 */ 0x9F69, 0x9F68, 0xFFFD, 0x9677, 0xFFFD, 0xFFFD, 0x8F7D, 0x8EEA, -/* 1C80 */ 0x8E63, 0xFFFD, 0x9F6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C88 */ 0xFFFD, 0xFFFD, 0x9F6C, 0x9042, 0xFFFD, 0x9F6B, 0xFFFD, 0xFFFD, -/* 1C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9F6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C98 */ 0xFFFD, 0x9F6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F6F, -/* 1CA0 */ 0x9F70, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F71, 0xFFFD, 0x9F73, 0x9F72, -/* 1CA8 */ 0x9F74, 0x89A3, 0x9269, 0xFFFD, 0x9F75, 0xFFFD, 0xFFFD, 0x8E45, -/* 1CB0 */ 0x8A6B, 0x9F76, 0xFFFD, 0xFFFD, 0x9361, 0x9ACA, 0xFFFD, 0xFFFD, -/* 1CB8 */ 0xFFFD, 0xFFFD, 0x8B42, 0x9F77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CC0 */ 0x9F78, 0xFFFD, 0x95EA, 0x9688, 0xFFFD, 0xFFFD, 0xFFFD, 0x93C5, -/* 1CC8 */ 0x9F79, 0x94E4, 0xFFFD, 0xFAF4, 0xFFFD, 0x94F9, 0xFFFD, 0xFFFD, -/* 1CD0 */ 0x96D1, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F7A, 0x9F7C, 0x9F7B, 0xFFFD, -/* 1CD8 */ 0xFFFD, 0x9F7E, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F7D, 0x9F81, 0xFFFD, -/* 1CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E81, 0xFFFD, 0x96AF, -/* 1CE8 */ 0xFFFD, 0x9F82, 0x9F83, 0xFFFD, 0xFFFD, 0x8B43, 0xFFFD, 0xFFFD, -/* 1CF0 */ 0xFFFD, 0x9F84, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CF8 */ 0xFFFD, 0x9F86, 0x9F85, 0x9085, 0xFFFD, 0xFFFD, 0x9558, 0x8969, -/* 1D00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x94C3, 0xFAF5, 0x92F3, -/* 1D08 */ 0x8F60, 0x8B81, 0x94C4, 0xFFFD, 0x8EAC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D10 */ 0xFFFD, 0x9F88, 0xFFFD, 0x8ABE, 0xFFFD, 0xFFFD, 0x8998, 0xFFFD, -/* 1D18 */ 0xFAF6, 0x93F0, 0x9F87, 0x8D5D, 0x9272, 0xFFFD, 0x9F89, 0xFFFD, -/* 1D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F91, 0xFFFD, 0x9F8A, 0xFFFD, -/* 1D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFAF8, 0x91BF, 0xFFFD, 0x8B82, 0x9F92, -/* 1D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C88, 0xFFFD, -/* 1D38 */ 0xFFFD, 0x8B44, 0x9F90, 0xFFFD, 0xFFFD, 0x9F8E, 0x9F8B, 0x9780, -/* 1D40 */ 0xFFFD, 0xFFFD, 0xFAF7, 0xFFFD, 0x92BE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D48 */ 0x93D7, 0x9F8C, 0xFFFD, 0xFFFD, 0x9F94, 0xFFFD, 0x9F93, 0x8C42, -/* 1D50 */ 0xFFFD, 0xFFFD, 0x89AB, 0xFFFD, 0xFFFD, 0x8DB9, 0x9F8D, 0x9F8F, -/* 1D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9676, 0x91F2, 0xFFFD, -/* 1D60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9697, -/* 1D68 */ 0xFFFD, 0xFFFD, 0x9F9C, 0xFFFD, 0xFFFD, 0x9F9D, 0xFFFD, 0x89CD, -/* 1D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95A6, 0x96FB, 0x9F9F, 0x8EA1, -/* 1D78 */ 0x8FC0, 0x9F98, 0x9F9E, 0x8988, 0xFFFD, 0x8BB5, 0xFFFD, 0xFFFD, -/* 1D80 */ 0x9F95, 0x9F9A, 0xFFFD, 0xFFFD, 0xFFFD, 0x90F2, 0x9491, 0xFFFD, -/* 1D88 */ 0x94E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F97, -/* 1D90 */ 0xFFFD, 0x9640, 0xFFFD, 0x9F99, 0xFFFD, 0x9FA2, 0xFAF9, 0x9FA0, -/* 1D98 */ 0xFFFD, 0x9F9B, 0xFFFD, 0xFFFD, 0xFFFD, 0x9641, 0x9467, 0x8B83, -/* 1DA0 */ 0xFFFD, 0x9344, 0xFFFD, 0xFFFD, 0x928D, 0xFFFD, 0x9FA3, 0xFFFD, -/* 1DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9FA1, 0x91D7, 0x9F96, 0xFFFD, 0x896A, -/* 1DB0 */ 0xFAFA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x976D, -/* 1DB8 */ 0x9FAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FAD, 0xFFFD, -/* 1DC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x90F4, 0xFFFD, 0x9FAA, 0xFFFD, 0x978C, -/* 1DC8 */ 0xFFFD, 0xFFFD, 0x93B4, 0x9FA4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DD0 */ 0xFFFD, 0x92C3, 0xFFFD, 0xFFFD, 0xFFFD, 0x896B, 0x8D5E, 0x9FA7, -/* 1DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F46, 0x9FAC, -/* 1DE0 */ 0xFFFD, 0x9FAB, 0x9FA6, 0xFFFD, 0x9FA9, 0xFFFD, 0xFFFD, 0x8A88, -/* 1DE8 */ 0xFFFD, 0x9FA8, 0x9468, 0xFFFD, 0xFFFD, 0x97AC, 0xFFFD, 0xFFFD, -/* 1DF0 */ 0x8FF2, 0x90F3, 0x9FB4, 0x9FB2, 0xFFFD, 0x956C, 0xFFFD, 0xFFFD, -/* 1DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FAF, 0x9FB1, 0xFFFD, 0x8959, -/* 1E00 */ 0xFFFD, 0xFFFD, 0x8D5F, 0x9851, 0xFFFD, 0x8A5C, 0xFFFD, 0x9582, -/* 1E08 */ 0xFAFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9781, 0xFFFD, 0xFFFD, -/* 1E10 */ 0x8A43, 0x905A, 0x9FB3, 0x9FB8, 0xFFFD, 0xFAFB, 0x8FC1, 0xFFFD, -/* 1E18 */ 0xFFFD, 0xFFFD, 0x974F, 0xFFFD, 0x9FB5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E20 */ 0xFFFD, 0x9FB0, 0xFFFD, 0x9FB6, 0xFB40, 0xFFFD, 0xFFFD, 0x97DC, -/* 1E28 */ 0xFFFD, 0x9393, 0x93C0, 0xFB41, 0xFFFD, 0xFFFD, 0x8A55, 0xFFFD, -/* 1E30 */ 0xFFFD, 0x8974, 0xFFFD, 0xFFFD, 0x9FBC, 0xFFFD, 0xFFFD, 0x9FBF, -/* 1E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x97C1, 0xFFFD, 0xFFFD, 0xFFFD, 0x9784, -/* 1E40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FC6, 0x9FC0, 0x9FBD, 0xFFFD, -/* 1E48 */ 0xFFFD, 0xFFFD, 0x97D2, 0x9FC3, 0xFFFD, 0xFFFD, 0xFB42, 0xFFFD, -/* 1E50 */ 0x8F69, 0x9FC5, 0xFFFD, 0xFFFD, 0x9FCA, 0xFFFD, 0xFFFD, 0x9391, -/* 1E58 */ 0x9FC8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FC2, 0xFFFD, 0xFFFD, -/* 1E60 */ 0x9257, 0xFFFD, 0xFFFD, 0x9FC9, 0xFFFD, 0x9FBE, 0xFFFD, 0x9FC4, -/* 1E68 */ 0xFFFD, 0x9FCB, 0x88FA, 0x9FC1, 0xFFFD, 0x9FCC, 0xFFFD, 0xFFFD, -/* 1E70 */ 0x905B, 0xFB44, 0x8F7E, 0xFFFD, 0x95A3, 0xFFFD, 0x8DAC, 0xFB43, -/* 1E78 */ 0x9FB9, 0x9FC7, 0x9359, 0xFB45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90B4, 0xFFFD, 0x8A89, 0x8DCF, -/* 1E88 */ 0x8FC2, 0x9FBB, 0x8F61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E90 */ 0xFFFD, 0xFFFD, 0x8C6B, 0xFFFD, 0x9FBA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E98 */ 0x9FD0, 0x8F8D, 0x8CB8, 0xFFFD, 0x9FDF, 0xFFFD, 0x9FD9, 0x8B94, -/* 1EA0 */ 0x936E, 0xFFFD, 0x9FD4, 0x9FDD, 0x88AD, 0x8951, 0xFB48, 0xFFFD, -/* 1EA8 */ 0x89B7, 0xFFFD, 0x9FD6, 0x91AA, 0x9FCD, 0x9FCF, 0x8D60, 0xFFFD, -/* 1EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FE0, -/* 1EB8 */ 0xFB46, 0x9FDB, 0xFFFD, 0xFB49, 0xFFFD, 0x9FD3, 0xFFFD, 0xFFFD, -/* 1EC0 */ 0xFFFD, 0xFFFD, 0x9FDA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EC8 */ 0xFFFD, 0x96A9, 0xFFFD, 0xFFFD, 0x9FD8, 0x9FDC, 0xFFFD, 0xFFFD, -/* 1ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CCE, 0xFFFD, 0x8FC3, -/* 1ED8 */ 0xFFFD, 0xFFFD, 0x9258, 0xFB47, 0xFFFD, 0xFFFD, 0x9FD2, 0xFFFD, -/* 1EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x974E, 0xFFFD, -/* 1EE8 */ 0xFFFD, 0xFFFD, 0x9FD5, 0xFFFD, 0xFFFD, 0x9FCE, 0x9392, 0xFFFD, -/* 1EF0 */ 0xFFFD, 0x9FD1, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FD7, 0xFFFD, 0xFFFD, -/* 1EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9870, 0x8EBC, 0x969E, -/* 1F00 */ 0xFFFD, 0x9FE1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x94AC, 0xFFFD, 0xFFFD, 0x9FED, 0x8CB9, -/* 1F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F80, 0xFFFD, 0x9FE3, -/* 1F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x97AD, 0x8D61, 0xFFFD, 0x9FF0, 0xFFFD, -/* 1F20 */ 0xFFFD, 0x88EC, 0xFFFD, 0xFFFD, 0x9FEE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F28 */ 0xFFFD, 0x9FE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FE8, 0xFFFD, -/* 1F30 */ 0xFFFD, 0x9FEA, 0xFFFD, 0xFFFD, 0xFFFD, 0x976E, 0x9FE5, 0xFFFD, -/* 1F38 */ 0xFFFD, 0x934D, 0xFFFD, 0xFFFD, 0x9FE7, 0xFFFD, 0xFB4A, 0xFFFD, -/* 1F40 */ 0xFFFD, 0x9FEF, 0xFFFD, 0x9FE9, 0x96C5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F48 */ 0x9FE4, 0xFFFD, 0x8EA0, 0x9FFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F50 */ 0x8A8A, 0xFFFD, 0x9FE6, 0x9FEB, 0x9FEC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91EA, 0x91D8, 0x9FF4, 0xFFFD, -/* 1F60 */ 0xFFFD, 0x9FFA, 0xFFFD, 0xFFFD, 0x9FF8, 0xFFFD, 0x9348, 0xFFFD, -/* 1F68 */ 0xFFFD, 0xE042, 0x9FF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F70 */ 0x9FF6, 0x9FDE, 0xFFFD, 0x8B99, 0x9559, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F78 */ 0x8EBD, 0xFFFD, 0xFFFD, 0x8D97, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F80 */ 0xFFFD, 0x9852, 0xFFFD, 0x9FF2, 0xFFFD, 0xE041, 0x8989, 0x9186, -/* 1F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F90 */ 0xFFFD, 0xFFFD, 0x9499, 0xFFFD, 0x8ABF, 0x97F8, 0xFFFD, 0xFFFD, -/* 1F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x969F, 0x92D0, 0xFFFD, -/* 1FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9FF9, 0x9FFB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FA8 */ 0xFFFD, 0xFFFD, 0x9151, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FB0 */ 0xE040, 0x9FF7, 0xFFFD, 0x9FF1, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AC1, -/* 1FB8 */ 0x8C89, 0xFFFD, 0xFFFD, 0xFFFD, 0xE04E, 0xFFFD, 0xFFFD, 0xE049, -/* 1FC0 */ 0x90F6, 0xFFFD, 0xFFFD, 0x8A83, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC8 */ 0x8F81, 0xFFFD, 0xE052, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FD0 */ 0xFFFD, 0xE04B, 0x92AA, 0xE048, 0x92D7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FD8 */ 0xE06B, 0xFFFD, 0xFFFD, 0xFFFD, 0xE045, 0xFFFD, 0xE044, 0xFFFD, -/* 1FE0 */ 0xE04D, 0xFFFD, 0xFFFD, 0xFFFD, 0xE047, 0xE046, 0xE04C, 0xFFFD, -/* 1FE8 */ 0x909F, 0xFFFD, 0xE043, 0xFFFD, 0xFB4B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FF0 */ 0xFFFD, 0xFFFD, 0xE04F, 0xFFFD, 0xFFFD, 0xE050, 0xFFFD, 0xFFFD, -/* 1FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8AC0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE055, 0xFFFD, 0xE054, -/* 2008 */ 0xE056, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE059, 0xFFFD, -/* 2010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9362, 0xFFFD, 0xE053, -/* 2018 */ 0xFFFD, 0xFB4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xE057, 0xFFFD, 0xFFFD, -/* 2020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C83, 0x91F7, 0xE051, 0x945A, -/* 2028 */ 0xFFFD, 0xFFFD, 0xE058, 0xE05D, 0xE05B, 0xFFFD, 0xFFFD, 0xE05E, -/* 2030 */ 0xFFFD, 0xFFFD, 0xE061, 0xFFFD, 0xFFFD, 0xFFFD, 0xE05A, 0x8D8A, -/* 2038 */ 0x9447, 0xFFFD, 0xFFFD, 0x9FB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2040 */ 0xFFFD, 0xFFFD, 0x9794, 0xE05C, 0xFFFD, 0xE060, 0x91F3, 0xFFFD, -/* 2048 */ 0xE05F, 0xFFFD, 0xE04A, 0xFFFD, 0xFB4D, 0xE889, 0xFFFD, 0xFFFD, -/* 2050 */ 0xFFFD, 0xE064, 0xFFFD, 0xFFFD, 0xFFFD, 0xE068, 0xFFFD, 0xFFFD, -/* 2058 */ 0xE066, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB4E, 0xFFFD, 0xFB4F, 0xFFFD, -/* 2060 */ 0xE062, 0xFFFD, 0xE063, 0xFFFD, 0xFFFD, 0xFFFD, 0xE067, 0xFFFD, -/* 2068 */ 0xE065, 0xFFFD, 0xFFFD, 0xFFFD, 0x956D, 0xFFFD, 0xFFFD, 0xE06D, -/* 2070 */ 0xFFFD, 0xE06A, 0xE069, 0xFFFD, 0xE06C, 0x93D2, 0xE06E, 0xFFFD, -/* 2078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9295, 0x91EB, 0xFB50, -/* 2080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x90A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE06F, -/* 2088 */ 0xFFFD, 0xE071, 0x9FF3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE072, -/* 2090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x93E5, 0xFFFD, -/* 2098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20A0 */ 0xFFFD, 0xE073, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20A8 */ 0xFFFD, 0x89CE, 0xFFFD, 0xFFFD, 0xFFFD, 0x9394, 0x8A44, 0xFFFD, -/* 20B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B84, 0xFFFD, -/* 20B8 */ 0xFFFD, 0xFFFD, 0x8EDC, 0x8DD0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFB51, 0xFFFD, 0xFFFD, 0xFFFD, 0x9846, -/* 20C8 */ 0x9086, 0xFFFD, 0xFFFD, 0xFFFD, 0x898A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20D0 */ 0xE075, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE074, -/* 20D8 */ 0xFB52, 0xE078, 0x9259, 0xE07B, 0xE076, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20E0 */ 0xE07A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE079, 0x935F, 0x88D7, -/* 20E8 */ 0xFA62, 0x97F3, 0xFFFD, 0xFFFD, 0xE07D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20F0 */ 0x8947, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20F8 */ 0xFFFD, 0xFFFD, 0xE080, 0xFFFD, 0xFFFD, 0xFFFD, 0xE07E, 0xFFFD, -/* 2100 */ 0xE07C, 0xE077, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2108 */ 0xFFFD, 0x9642, 0xFFFD, 0xFFFD, 0xFFFD, 0xE082, 0xFFFD, 0xFFFD, -/* 2110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB54, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2118 */ 0xFFFD, 0xE081, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB53, -/* 2120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x898B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2128 */ 0xFFFD, 0xE084, 0x95B0, 0xFFFD, 0xE083, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2130 */ 0xFFFD, 0x96B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FC5, 0x9152, -/* 2138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FC4, 0xFFFD, 0xFFFD, -/* 2140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB56, -/* 2148 */ 0xFB57, 0xFFFD, 0x97F9, 0xFFFD, 0xFFFD, 0xE08A, 0xFFFD, 0x90F7, -/* 2150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE086, 0xE08B, -/* 2158 */ 0xFFFD, 0xFFFD, 0x898C, 0xFFFD, 0xFFFD, 0xFB55, 0xFFFD, 0xFFFD, -/* 2160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE089, 0xFFFD, 0x9481, 0xE085, 0xE088, -/* 2168 */ 0x8FC6, 0xFFFD, 0x94CF, 0xFFFD, 0xFFFD, 0xE08C, 0xFFFD, 0x8ECF, -/* 2170 */ 0x90F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE08F, -/* 2178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE087, 0xFFFD, 0x8C46, 0xFFFD, 0xFFFD, -/* 2180 */ 0xFFFD, 0xFFFD, 0xE08D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x976F, -/* 2188 */ 0xE090, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAA4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2190 */ 0xFFFD, 0xFFFD, 0x8F6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE091, 0xFFFD, 0xFFFD, 0xFFFD, 0xE092, -/* 21A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x944D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE094, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21B0 */ 0xFFFD, 0xE095, 0xFFFD, 0xFFFD, 0xFB59, 0xFFFD, 0x9452, 0xFFFD, -/* 21B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9395, 0xE097, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21C0 */ 0xFFFD, 0xE099, 0xFFFD, 0x97D3, 0xFFFD, 0xE096, 0xFFFD, 0xE098, -/* 21C8 */ 0x898D, 0xFFFD, 0xE093, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21D0 */ 0xFFFD, 0xFFFD, 0x9A7A, 0xE09A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21D8 */ 0x9187, 0x8E57, 0xE09C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE09B, -/* 21E0 */ 0x9043, 0x99D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21E8 */ 0xE09D, 0xFFFD, 0xFFFD, 0xFFFD, 0xE09F, 0xFFFD, 0xE08E, 0xE09E, -/* 21F0 */ 0xFFFD, 0xFB5A, 0xE0A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F8 */ 0xFFFD, 0x949A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2200 */ 0xE0A1, 0xFFFD, 0xFFFD, 0xE0A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0A3, 0xE0A4, -/* 2210 */ 0xFFFD, 0x92DC, 0xFFFD, 0xE0A6, 0xE0A5, 0xFFFD, 0xFFFD, 0xE0A7, -/* 2218 */ 0xFFFD, 0xE0A8, 0xFFFD, 0xFFFD, 0x8EDD, 0x9583, 0xFFFD, 0xFFFD, -/* 2220 */ 0xFFFD, 0x96EA, 0xE0A9, 0xE0AA, 0x9175, 0x8EA2, 0xE0AB, 0xE0AC, -/* 2228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0AD, 0x95D0, 0x94C5, -/* 2230 */ 0xFFFD, 0xFFFD, 0xE0AE, 0x9476, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2238 */ 0xFFFD, 0x92AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0AF, -/* 2240 */ 0x89E5, 0xFFFD, 0x8B8D, 0xFFFD, 0x96C4, 0xFFFD, 0x96B4, 0xFFFD, -/* 2248 */ 0x89B2, 0x9853, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9671, 0xFFFD, -/* 2250 */ 0x95A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2258 */ 0xFFFD, 0x90B5, 0xFFFD, 0xE0B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2260 */ 0x93C1, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CA1, 0xE0B1, 0xFFFD, 0x8DD2, -/* 2268 */ 0xE0B3, 0xE0B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0B4, 0xFFFD, -/* 2270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2278 */ 0xFFFD, 0xE0B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0B6, 0xFFFD, 0xFFFD, -/* 2280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B5D, -/* 2288 */ 0xFFFD, 0xE0B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0B8, 0xFFFD, -/* 2290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8CA2, 0xFFFD, 0xFFFD, 0x94C6, 0xFFFD, -/* 2298 */ 0xFB5B, 0xE0BA, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FF3, 0xFFFD, 0xFFFD, -/* 22A0 */ 0xE0B9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB5C, 0xFFFD, 0xFFFD, -/* 22A8 */ 0xFFFD, 0x8BB6, 0xE0BB, 0xE0BD, 0xFFFD, 0xE0BC, 0xFFFD, 0xFFFD, -/* 22B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0BE, 0xFFFD, 0x8CCF, -/* 22B8 */ 0xFFFD, 0xE0BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BE7, 0xFFFD, -/* 22C0 */ 0x915F, 0xFFFD, 0x8D9D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0C1, -/* 22C8 */ 0xE0C2, 0xE0C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22D0 */ 0x8EEB, 0xFFFD, 0xFFFD, 0x93C6, 0x8BB7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0C4, 0x924B, -/* 22E0 */ 0xE0C3, 0xFFFD, 0xFFFD, 0x9854, 0x9482, 0xE0C9, 0xE0C6, 0xFFFD, -/* 22E8 */ 0xFFFD, 0xFFFD, 0x96D2, 0xE0C8, 0xE0CA, 0xFFFD, 0x97C2, 0xFFFD, -/* 22F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFB5D, 0xE0CE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22F8 */ 0xE0CD, 0x9296, 0x944C, 0xFFFD, 0xFFFD, 0x8CA3, 0xE0CC, 0xFFFD, -/* 2300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0CB, 0xFFFD, 0x9750, 0x9751, 0xFFFD, -/* 2308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0CF, 0x898E, 0xFFFD, -/* 2310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8D96, 0x8E82, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0D0, 0xE0D1, 0xFFFD, -/* 2320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0D3, 0x8F62, -/* 2328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0D5, 0xFFFD, 0xE0D4, 0xFFFD, -/* 2330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0D6, 0xFFFD, 0x8A6C, 0xFFFD, -/* 2338 */ 0xFFFD, 0xE0D8, 0xFFFD, 0xFB5F, 0xE0D7, 0xFFFD, 0xE0DA, 0xE0D9, -/* 2340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2348 */ 0x8CBA, 0xFFFD, 0xFFFD, 0x97A6, 0xFFFD, 0x8BCA, 0xFFFD, 0x89A4, -/* 2350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2358 */ 0xFFFD, 0xFFFD, 0x8BE8, 0x8ADF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97E6, 0xE0DC, 0xFFFD, 0xFFFD, -/* 2368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0DE, 0xFFFD, 0xFB60, -/* 2370 */ 0xFFFD, 0xFFFD, 0xE0DF, 0xFFFD, 0x89CF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2378 */ 0xFFFD, 0xFFFD, 0xE0DB, 0xFB61, 0x8E58, 0xFFFD, 0xFFFD, 0x92BF, -/* 2380 */ 0xE0DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2388 */ 0xFB62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2390 */ 0xE0E2, 0xFFFD, 0x8EEC, 0xFFFD, 0xFFFD, 0xFB63, 0xFFFD, 0xE0E0, -/* 2398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C5D, 0xFFFD, 0xFFFD, 0x94C7, -/* 23A0 */ 0xE0E1, 0xFFFD, 0xFFFD, 0xE0FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB66, -/* 23A8 */ 0xFFFD, 0xFFFD, 0xE0E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23B0 */ 0x8CBB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B85, 0xFFFD, 0xE0E4, -/* 23B8 */ 0x979D, 0xFB65, 0xFFFD, 0x97AE, 0x91F4, 0xFFFD, 0xFFFD, 0xE0E6, -/* 23C0 */ 0xFB67, 0xFFFD, 0xFFFD, 0xFB69, 0xFB68, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23C8 */ 0xFB6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0E8, 0x97D4, 0x8BD5, 0x94FA, -/* 23D0 */ 0x9469, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0E9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23D8 */ 0xFFFD, 0xE0EB, 0xFFFD, 0xE0EE, 0xE0EA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23E0 */ 0xE0ED, 0x8CE8, 0x896C, 0xE0EF, 0xFFFD, 0x9090, 0xE0EC, 0x97DA, -/* 23E8 */ 0xFFFD, 0xFB6B, 0xE0F2, 0xEAA2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23F0 */ 0xE0F0, 0xE0F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0E5, 0xE0F1, -/* 23F8 */ 0xFFFD, 0xFFFD, 0x8DBA, 0xFFFD, 0xFFFD, 0xE0F4, 0xFFFD, 0xFFFD, -/* 2400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0F5, 0xFFFD, 0xFFFD, -/* 2408 */ 0xFFFD, 0xFFFD, 0x979E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2410 */ 0xFB6C, 0xFFFD, 0xE0F6, 0xE0F7, 0xFB6D, 0xFFFD, 0xFFFD, 0xE0E3, -/* 2418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0F8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AC2, 0xE0F9, 0xFFFD, -/* 2428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2430 */ 0xE0FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2438 */ 0x895A, 0xFFFD, 0xFFFD, 0xFFFD, 0xE140, 0xFFFD, 0x955A, 0xE141, -/* 2440 */ 0xFFFD, 0xFFFD, 0x8AA2, 0xE142, 0xFFFD, 0xE143, 0xFFFD, 0xFFFD, -/* 2448 */ 0xFFFD, 0xFFFD, 0xE144, 0xFFFD, 0xE146, 0xE147, 0xE145, 0xFFFD, -/* 2450 */ 0xFFFD, 0xFFFD, 0x9572, 0xE149, 0xE148, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB6E, 0xFFFD, 0xE14B, -/* 2460 */ 0xE14A, 0xE14C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2468 */ 0xE14D, 0xE14F, 0xE14E, 0xFFFD, 0xFFFD, 0x8D99, 0xFFFD, 0xE151, -/* 2470 */ 0xFFFD, 0xE150, 0xFFFD, 0xFFFD, 0x8AC3, 0xFFFD, 0x9072, 0xFFFD, -/* 2478 */ 0x935B, 0xFFFD, 0xE152, 0x90B6, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E59, -/* 2480 */ 0xFFFD, 0x8999, 0xE153, 0xFFFD, 0x9770, 0xFFFD, 0xFFFD, 0x95E1, -/* 2488 */ 0xE154, 0xFFFD, 0xFFFD, 0xFAA8, 0x9363, 0x9752, 0x8D62, 0x905C, -/* 2490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x926A, 0x99B2, 0xFFFD, 0x92AC, 0x89E6, -/* 2498 */ 0xE155, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24A0 */ 0xE156, 0xFFFD, 0xE15B, 0xFFFD, 0xFFFD, 0xE159, 0xE158, 0x9DC0, -/* 24A8 */ 0x8A45, 0xE157, 0xFFFD, 0x88D8, 0xFFFD, 0x94A8, 0xFFFD, 0xFFFD, -/* 24B0 */ 0x94C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97AF, 0xE15C, 0xE15A, -/* 24B8 */ 0x927B, 0x90A4, 0xFFFD, 0xFFFD, 0x94A9, 0xFFFD, 0x954C, 0xFFFD, -/* 24C0 */ 0xE15E, 0x97AA, 0x8C6C, 0xE15F, 0xFFFD, 0xE15D, 0x94D4, 0xE160, -/* 24C8 */ 0xFFFD, 0xE161, 0xFFFD, 0xFB6F, 0x88D9, 0xFFFD, 0xFFFD, 0x8FF4, -/* 24D0 */ 0xE166, 0xFFFD, 0xE163, 0x93EB, 0xE162, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8B45, 0xFFFD, 0xFFFD, 0xE169, 0xFFFD, -/* 24E0 */ 0xFFFD, 0xFFFD, 0xE164, 0xE165, 0xFFFD, 0xE168, 0xE167, 0x9544, -/* 24E8 */ 0xFFFD, 0xFFFD, 0x9161, 0x9160, 0xFFFD, 0x8B5E, 0xFFFD, 0xFFFD, -/* 24F0 */ 0xE16A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE16B, 0xFFFD, -/* 24F8 */ 0xFFFD, 0xE16C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE16E, -/* 2500 */ 0xFFFD, 0xE16D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8975, -/* 2508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE176, 0x94E6, 0xE170, -/* 2510 */ 0xFFFD, 0xE172, 0xFFFD, 0xFFFD, 0xE174, 0x905D, 0xFFFD, 0xFFFD, -/* 2518 */ 0xE175, 0xE173, 0x8EBE, 0xFFFD, 0xFFFD, 0xFFFD, 0xE16F, 0xE171, -/* 2520 */ 0xFFFD, 0x9561, 0xFFFD, 0x8FC7, 0xFFFD, 0xFFFD, 0xE178, 0xFFFD, -/* 2528 */ 0xFFFD, 0xE177, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE179, 0xFFFD, -/* 2530 */ 0x8EA4, 0x8DAD, 0xFFFD, 0xFFFD, 0x9397, 0xE17A, 0xFFFD, 0x92C9, -/* 2538 */ 0xFFFD, 0xFFFD, 0xE17C, 0xFFFD, 0xFFFD, 0xFFFD, 0x979F, 0xE17B, -/* 2540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9189, 0xFFFD, 0xFFFD, -/* 2548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE182, 0xFFFD, 0xE184, 0xE185, -/* 2550 */ 0x9273, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE183, 0xFFFD, -/* 2558 */ 0xE180, 0xFFFD, 0xE17D, 0xE17E, 0xFFFD, 0xE181, 0xFFFD, 0xFFFD, -/* 2560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE188, 0xFFFD, 0xE186, -/* 2568 */ 0xFFFD, 0xE187, 0xE189, 0xE18B, 0xE18C, 0xE18D, 0xFFFD, 0xE18E, -/* 2570 */ 0xFFFD, 0xFFFD, 0xE18A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE190, 0xFFFD, 0xFFFD, 0xFFFD, 0xE18F, -/* 2580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE191, 0xFFFD, -/* 2588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97C3, 0xFFFD, 0xFFFD, -/* 2590 */ 0xFFFD, 0xE194, 0xE192, 0xE193, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AE0, -/* 2598 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96FC, 0xFFFD, 0xFFFD, -/* 25A0 */ 0xFFFD, 0x95C8, 0xFFFD, 0xE196, 0xFFFD, 0xFFFD, 0xFFFD, 0xE195, -/* 25A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE197, 0xE198, 0xFFFD, 0xFFFD, -/* 25B0 */ 0xFFFD, 0xFFFD, 0xE19C, 0xE199, 0xE19A, 0xE19B, 0xFFFD, 0xE19D, -/* 25B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE19E, 0xFFFD, 0xE19F, 0xFFFD, 0xFFFD, -/* 25C0 */ 0xFFFD, 0xE1A0, 0xFFFD, 0xE1A1, 0xFFFD, 0x94AD, 0x936F, 0xE1A2, -/* 25C8 */ 0x9492, 0x9553, 0xFFFD, 0xE1A3, 0xFFFD, 0xFB70, 0xE1A4, 0x9349, -/* 25D0 */ 0xFFFD, 0x8A46, 0x8D63, 0xE1A5, 0xFFFD, 0xFFFD, 0xE1A6, 0xFFFD, -/* 25D8 */ 0xFFFD, 0xE1A7, 0xFFFD, 0x8E48, 0xFFFD, 0xFFFD, 0xE1A9, 0xFFFD, -/* 25E0 */ 0xFFFD, 0xE1A8, 0xFFFD, 0xFFFD, 0xE1AA, 0xE1AB, 0xFB73, 0xFB71, -/* 25E8 */ 0xFFFD, 0xFB72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25F0 */ 0xFFFD, 0xFB74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25F8 */ 0xFFFD, 0x94E7, 0xFFFD, 0xE1AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1AD, -/* 2600 */ 0xFFFD, 0xFFFD, 0xEA89, 0xE1AE, 0xE1AF, 0xE1B0, 0xFFFD, 0xFFFD, -/* 2608 */ 0xFFFD, 0xFFFD, 0x8E4D, 0xFFFD, 0xFFFD, 0xE1B1, 0x9475, 0xFFFD, -/* 2610 */ 0xFFFD, 0x967E, 0xFFFD, 0x896D, 0xFFFD, 0x8976, 0xFFFD, 0xFFFD, -/* 2618 */ 0xE1B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1B4, 0xFFFD, 0xFFFD, -/* 2620 */ 0xFFFD, 0xE1B3, 0x9390, 0xFFFD, 0xFFFD, 0xFFFD, 0x90B7, 0x9F58, -/* 2628 */ 0xFFFD, 0xE1B5, 0x96BF, 0xFFFD, 0xE1B6, 0xFFFD, 0x8AC4, 0x94D5, -/* 2630 */ 0xE1B7, 0xFFFD, 0xE1B8, 0xFFFD, 0xFFFD, 0xE1B9, 0xFFFD, 0xFFFD, -/* 2638 */ 0xFFFD, 0x96DA, 0xFFFD, 0xFFFD, 0xFFFD, 0x96D3, 0xFFFD, 0x92BC, -/* 2640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x918A, 0xFFFD, 0xFFFD, 0xE1BB, 0xFFFD, -/* 2648 */ 0xFFFD, 0x8F82, 0xFFFD, 0xFFFD, 0x8FC8, 0xFFFD, 0xFFFD, 0xE1BE, -/* 2650 */ 0xFFFD, 0xFFFD, 0xE1BD, 0xE1BC, 0x94FB, 0xFFFD, 0x8AC5, 0x8CA7, -/* 2658 */ 0xE1C4, 0xFFFD, 0xFFFD, 0xE1C1, 0x905E, 0x96B0, 0xFFFD, 0xFFFD, -/* 2660 */ 0xFFFD, 0xE1C0, 0xE1C2, 0xE1C3, 0xFFFD, 0xFFFD, 0xE1BF, 0xE1C5, -/* 2668 */ 0xE1C6, 0xFFFD, 0x92AD, 0xFFFD, 0x8AE1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2670 */ 0x9285, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB76, 0xE1C7, -/* 2678 */ 0xE1C8, 0xE1CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9087, -/* 2680 */ 0xFFFD, 0x93C2, 0xFFFD, 0xE1CC, 0x9672, 0xFFFD, 0xE1C9, 0xFFFD, -/* 2688 */ 0xFFFD, 0xE1CA, 0xE1CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1CE, -/* 2690 */ 0xE1CD, 0xE1D1, 0xFFFD, 0xFFFD, 0xE1D0, 0xFFFD, 0xFFFD, 0xE1D2, -/* 2698 */ 0xE1D4, 0xFFFD, 0xE1D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95CB, -/* 26A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F75, 0x97C4, -/* 26A8 */ 0xFFFD, 0xFFFD, 0xE1D5, 0xFFFD, 0xFFFD, 0x93B5, 0xFFFD, 0xFFFD, -/* 26B0 */ 0xE1D6, 0xFFFD, 0xFFFD, 0xE1D7, 0xFFFD, 0xE1DB, 0xE1D9, 0xE1DA, -/* 26B8 */ 0xFFFD, 0xE1D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26C0 */ 0xFFFD, 0xE1DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1DD, -/* 26C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26D0 */ 0xFFFD, 0xE1DE, 0xFFFD, 0xFFFD, 0xE1DF, 0x96B5, 0xE1E0, 0xFFFD, -/* 26D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96EE, 0xE1E1, 0xFFFD, 0x926D, -/* 26E0 */ 0xFFFD, 0x948A, 0xFFFD, 0x8BE9, 0xFFFD, 0xFFFD, 0xFFFD, 0x925A, -/* 26E8 */ 0xE1E2, 0x8BB8, 0xFFFD, 0xFFFD, 0xFFFD, 0x90CE, 0xFFFD, 0xFFFD, -/* 26F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E3, 0xFFFD, -/* 26F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8DBB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E4, 0xFFFD, -/* 2708 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E5, 0xFFFD, 0x8CA4, 0x8DD3, -/* 2710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2718 */ 0xFFFD, 0xFFFD, 0xE1E7, 0xFB78, 0xFFFD, 0xFFFD, 0xFFFD, 0x9375, -/* 2720 */ 0x8DD4, 0x8B6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9643, 0xFFFD, 0x946A, 0xFFFD, -/* 2730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9376, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2738 */ 0xFFFD, 0x8D7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E9, -/* 2740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2748 */ 0xFB79, 0x8FC9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2750 */ 0xFB7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97B0, -/* 2758 */ 0x8D64, 0xFFFD, 0xFFFD, 0x8CA5, 0xFFFD, 0xFFFD, 0x94A1, 0xFFFD, -/* 2760 */ 0xE1EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB7B, 0xFFFD, -/* 2768 */ 0xE1ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CE9, 0xFFFD, 0xFFFD, -/* 2770 */ 0xFFFD, 0xFFFD, 0xE1EC, 0x92F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2778 */ 0xE1EF, 0x8A56, 0xE1EA, 0xFFFD, 0xFFFD, 0x94E8, 0xFFFD, 0x894F, -/* 2780 */ 0xFFFD, 0x8DEA, 0xFFFD, 0x9871, 0xFFFD, 0xFFFD, 0xE1EE, 0xFFFD, -/* 2788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1F0, -/* 2790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x95C9, 0xFFFD, 0x90D7, 0xE1F2, 0xFFFD, -/* 2798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE1F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27A0 */ 0xFFFD, 0xE1F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A6D, 0xFFFD, -/* 27A8 */ 0xE1F9, 0xFFFD, 0xE1F8, 0xFFFD, 0xFFFD, 0x8EA5, 0xFFFD, 0xFFFD, -/* 27B0 */ 0xFFFD, 0xE1FA, 0xE1F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1FB, 0xE1F6, -/* 27B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x94D6, 0xE1F4, 0xFFFD, 0xFFFD, -/* 27C0 */ 0xE1F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE241, 0xE240, -/* 27C8 */ 0x9681, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1FC, 0xFFFD, 0xFFFD, 0x88E9, -/* 27D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE243, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE242, 0xFFFD, 0xFFFD, -/* 27E0 */ 0xFFFD, 0x8FCA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE244, -/* 27E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9162, 0xFFFD, -/* 27F0 */ 0xFFFD, 0xE246, 0xE245, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27F8 */ 0xFFFD, 0xE247, 0xE1E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E8, 0xE249, -/* 2800 */ 0xE248, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB7C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EA6, 0xFFFD, -/* 2810 */ 0x97E7, 0xFFFD, 0x8ED0, 0xFFFD, 0xE24A, 0x8C56, 0xFFFD, 0xFFFD, -/* 2818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8B5F, 0x8B46, 0x8E83, 0xFFFD, 0xFFFD, -/* 2820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9753, 0xFFFD, 0xFFFD, 0xE250, -/* 2828 */ 0xFFFD, 0xE24F, 0x9163, 0xE24C, 0xFFFD, 0xFFFD, 0xE24E, 0xFFFD, -/* 2830 */ 0xFFFD, 0x8F6A, 0x905F, 0xE24D, 0xE24B, 0xFFFD, 0x9449, 0xFFFD, -/* 2838 */ 0xFFFD, 0x8FCB, 0xFFFD, 0xFFFD, 0x955B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2840 */ 0xFFFD, 0x8DD5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9398, 0xFFFD, 0xFFFD, 0xE251, 0xFFFD, -/* 2850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE252, 0xE268, 0x8BD6, 0xFFFD, 0xFFFD, -/* 2858 */ 0x985C, 0x9154, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE253, 0xFFFD, -/* 2860 */ 0xFFFD, 0x89D0, 0x92F5, 0x959F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2868 */ 0xFB81, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB83, -/* 2870 */ 0xFFFD, 0xE254, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2878 */ 0xFFFD, 0xFFFD, 0x8B9A, 0xE255, 0xFFFD, 0xFFFD, 0xE257, 0xFFFD, -/* 2880 */ 0xFFFD, 0xFFFD, 0xE258, 0xFFFD, 0x9448, 0xFFFD, 0xFFFD, 0xE259, -/* 2888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE25A, 0xE25B, 0xFFFD, -/* 2890 */ 0xFFFD, 0x8BD7, 0x89D1, 0x93C3, 0x8F47, 0x8E84, 0xFFFD, 0xFFFD, -/* 2898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE25C, 0xFFFD, 0x8F48, -/* 28A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x89C8, 0x9562, 0xFFFD, -/* 28A8 */ 0xFFFD, 0xE25D, 0xFFFD, 0xFFFD, 0x94E9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9164, 0xFFFD, 0xE260, 0xFFFD, 0xE261, -/* 28B8 */ 0x9489, 0xFFFD, 0x9060, 0xE25E, 0xFFFD, 0x9281, 0xFFFD, 0xFFFD, -/* 28C0 */ 0xE25F, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FCC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88DA, -/* 28D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B48, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE262, 0xFFFD, 0xFFFD, 0x92F6, -/* 28E0 */ 0xFFFD, 0xE263, 0x90C5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28E8 */ 0x96AB, 0xFFFD, 0xFFFD, 0x9542, 0xE264, 0xE265, 0x9274, 0xFFFD, -/* 28F0 */ 0x97C5, 0xFFFD, 0xFFFD, 0xE267, 0xE266, 0x8EED, 0xFFFD, 0xFFFD, -/* 28F8 */ 0xE269, 0x88EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE26C, 0xFFFD, -/* 2900 */ 0xFFFD, 0xFFFD, 0xE26A, 0x89D2, 0x8C6D, 0xE26B, 0x8D65, 0x8D92, -/* 2908 */ 0xFFFD, 0x95E4, 0xE26D, 0xFFFD, 0xFFFD, 0x9673, 0xFFFD, 0xFFFD, -/* 2910 */ 0xE26F, 0xFFFD, 0xFFFD, 0xFFFD, 0x90CF, 0x896E, 0x89B8, 0x88AA, -/* 2918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE26E, 0xFFFD, -/* 2920 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2928 */ 0xE270, 0xE271, 0x8FF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2930 */ 0xE272, 0xFFFD, 0x8A6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE274, -/* 2938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8C8A, 0xFFFD, 0x8B86, 0xFFFD, 0xFFFD, -/* 2940 */ 0xE275, 0x8BF3, 0xFFFD, 0xFFFD, 0xE276, 0xFFFD, 0x90FA, 0xFFFD, -/* 2948 */ 0x93CB, 0xFFFD, 0x90DE, 0x8DF3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE277, -/* 2950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2958 */ 0xFFFD, 0x9282, 0x918B, 0xFFFD, 0xE279, 0xE27B, 0xE278, 0xE27A, -/* 2960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C41, 0xFFFD, -/* 2968 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2970 */ 0xE27C, 0x8C45, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B87, 0x9771, 0xE27E, -/* 2978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE280, 0xFFFD, 0xFFFD, -/* 2980 */ 0xFFFD, 0x894D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE283, 0xFFFD, -/* 2988 */ 0xFFFD, 0xFFFD, 0x8A96, 0xE282, 0xE281, 0xFFFD, 0xE285, 0xE27D, -/* 2990 */ 0xFFFD, 0xE286, 0x97A7, 0xFFFD, 0xE287, 0xFFFD, 0xE288, 0xFFFD, -/* 2998 */ 0xFB84, 0x9AF2, 0xE28A, 0xFFFD, 0xE289, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29A0 */ 0xE28B, 0xE28C, 0xFFFD, 0x97B3, 0xE28D, 0xFFFD, 0xE8ED, 0x8FCD, -/* 29A8 */ 0xE28E, 0xE28F, 0x8F76, 0xFFFD, 0x93B6, 0xE290, 0xFB85, 0xFFFD, -/* 29B0 */ 0xFFFD, 0x9247, 0xFB87, 0xFFFD, 0xE291, 0xFFFD, 0x925B, 0xE292, -/* 29B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BA3, 0xFFFD, 0x995E, -/* 29C0 */ 0x927C, 0x8EB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AC6, 0xFFFD, -/* 29C8 */ 0xFFFD, 0xE293, 0xFFFD, 0xE2A0, 0xFFFD, 0xE296, 0xFFFD, 0x8B88, -/* 29D0 */ 0xFFFD, 0xE295, 0xE2A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xE294, 0xFFFD, -/* 29D8 */ 0x8FCE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE298, -/* 29E0 */ 0xE299, 0xFFFD, 0x934A, 0xFFFD, 0xFFFD, 0xE29A, 0xFFFD, 0x8A7D, -/* 29E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9079, 0x9584, 0xFFFD, 0xE29C, -/* 29F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x91E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29F8 */ 0xFFFD, 0xFFFD, 0xE297, 0xFFFD, 0xE29B, 0xE29D, 0xFFFD, 0xFFFD, -/* 2A00 */ 0x8DF9, 0xE2A4, 0x954D, 0xFFFD, 0x94A4, 0x9399, 0xFFFD, 0x8BD8, -/* 2A08 */ 0xE2A3, 0xE2A1, 0xFFFD, 0x94B3, 0xE29E, 0x927D, 0x939B, 0xFFFD, -/* 2A10 */ 0x939A, 0xFFFD, 0x8DF4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A18 */ 0xFFFD, 0xE2B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A20 */ 0xFFFD, 0xE2A6, 0xFFFD, 0xE2A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A28 */ 0xE2AB, 0xFFFD, 0xE2AC, 0xFFFD, 0xE2A9, 0xE2AA, 0xFFFD, 0xFFFD, -/* 2A30 */ 0xE2A7, 0xE2A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE29F, 0x95CD, -/* 2A38 */ 0x89D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2B3, 0xFFFD, 0xE2B0, 0xFFFD, -/* 2A40 */ 0xE2B5, 0xFFFD, 0xFFFD, 0xE2B4, 0xFFFD, 0x9493, 0x96A5, 0xFFFD, -/* 2A48 */ 0x8E5A, 0xE2AE, 0xE2B7, 0xE2B2, 0xFFFD, 0xE2B1, 0xE2AD, 0xFB88, -/* 2A50 */ 0xE2AF, 0xFFFD, 0x8AC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x925C, 0xFFFD, 0xFFFD, 0x90FB, 0xFFFD, -/* 2A60 */ 0xFFFD, 0xFFFD, 0x94A0, 0xFFFD, 0xFFFD, 0xE2BC, 0xFFFD, 0xFFFD, -/* 2A68 */ 0xFFFD, 0x94A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A70 */ 0xFFFD, 0x90DF, 0xE2B9, 0xFFFD, 0xFFFD, 0x94CD, 0xFFFD, 0xE2BD, -/* 2A78 */ 0x95D1, 0xFFFD, 0x927A, 0xFFFD, 0xE2B8, 0xE2BA, 0xFFFD, 0xFFFD, -/* 2A80 */ 0xE2BB, 0xE2BE, 0xFFFD, 0xFFFD, 0x8EC2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A88 */ 0x93C4, 0xE2C3, 0xE2C2, 0xFFFD, 0xFFFD, 0xE2BF, 0xFFFD, 0xFFFD, -/* 2A90 */ 0xFFFD, 0x9855, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C8, -/* 2A98 */ 0xFFFD, 0xFFFD, 0xE2CC, 0xE2C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AB0 */ 0xFFFD, 0xE2CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C0, 0x99D3, 0xE2C7, -/* 2AB8 */ 0xE2C1, 0xFFFD, 0xFFFD, 0xE2CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2D0, 0xFFFD, 0x8AC8, 0xFFFD, 0xE2CD, -/* 2AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2CE, 0xFFFD, 0xFFFD, 0xE2CF, 0xE2D2, -/* 2AD0 */ 0xE2D1, 0x94F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2D3, 0x97FA, -/* 2AD8 */ 0x95EB, 0xE2D8, 0xFFFD, 0xFFFD, 0xE2D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2D4, 0x90D0, 0xFFFD, -/* 2AE8 */ 0xE2D7, 0xE2D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2D6, 0xFFFD, 0xE2DD, -/* 2AF0 */ 0xFFFD, 0xE2DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AF8 */ 0xE2DB, 0xE2C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2DC, 0xE2DE, 0xFFFD, -/* 2B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2DF, 0xFFFD, 0xFFFD, -/* 2B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95C4, 0xFFFD, 0xE2E0, 0xFFFD, -/* 2B10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96E0, -/* 2B18 */ 0xFFFD, 0xFFFD, 0x8BCC, 0x8C48, 0xE2E1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B20 */ 0xFFFD, 0xFFFD, 0x95B2, 0xFFFD, 0x9088, 0xFFFD, 0x96AE, 0xFFFD, -/* 2B28 */ 0xFFFD, 0xE2E2, 0xFFFD, 0x97B1, 0xFFFD, 0xFFFD, 0x9494, 0xFFFD, -/* 2B30 */ 0x9165, 0x9453, 0xFFFD, 0xFFFD, 0x8F6C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B38 */ 0x88BE, 0xFFFD, 0xE2E7, 0xE2E5, 0xFFFD, 0xE2E3, 0x8A9F, 0xFFFD, -/* 2B40 */ 0x8FCF, 0xE2E8, 0xFFFD, 0xFFFD, 0xE2E6, 0xFFFD, 0xE2E4, 0xE2EC, -/* 2B48 */ 0xFFFD, 0xFFFD, 0xE2EB, 0xE2EA, 0xE2E9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B50 */ 0xFFFD, 0xFFFD, 0xE2ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2EE, 0x90B8, -/* 2B58 */ 0xFFFD, 0xE2EF, 0xFFFD, 0xE2F1, 0xFFFD, 0xFFFD, 0xE2F0, 0xFFFD, -/* 2B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8CD0, 0xFFFD, 0xFFFD, 0xFFFD, 0x9157, -/* 2B68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2F3, 0xFFFD, 0xFFFD, 0xFFFD, 0x939C, -/* 2B70 */ 0xFFFD, 0xE2F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2F4, 0xFFFD, 0x95B3, -/* 2B78 */ 0x918C, 0x8D66, 0xFFFD, 0xE2F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B80 */ 0x97C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B88 */ 0xE2F7, 0xFFFD, 0xFFFD, 0xE2F8, 0xFFFD, 0xE2F9, 0xFFFD, 0xE2FA, -/* 2B90 */ 0xFFFD, 0x8E85, 0xFFFD, 0xE2FB, 0x8C6E, 0xFFFD, 0xFFFD, 0x8B8A, -/* 2B98 */ 0xFFFD, 0x8B49, 0xFFFD, 0xE340, 0xFFFD, 0x96F1, 0x8D67, 0xE2FC, -/* 2BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE343, 0x96E4, 0xFFFD, 0x945B, 0xFFFD, -/* 2BA8 */ 0xFFFD, 0x9552, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F83, 0xE342, 0xFFFD, -/* 2BB0 */ 0x8ED1, 0x8D68, 0x8E86, 0x8B89, 0x95B4, 0xE341, 0xFFFD, 0xFFFD, -/* 2BB8 */ 0xFFFD, 0x9166, 0x9661, 0x8DF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E87, 0x92DB, 0xFFFD, 0xE346, -/* 2BC8 */ 0x97DD, 0x8DD7, 0xFFFD, 0xE347, 0x9061, 0xFFFD, 0xE349, 0xFFFD, -/* 2BD0 */ 0xFFFD, 0xFFFD, 0x8FD0, 0x8DAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BD8 */ 0xE348, 0xFFFD, 0xFFFD, 0x8F49, 0x8CBC, 0x9167, 0xE344, 0xE34A, -/* 2BE0 */ 0xFFFD, 0xFB8A, 0xFFFD, 0xFFFD, 0xE345, 0x8C6F, 0xFFFD, 0xE34D, -/* 2BE8 */ 0xE351, 0x8C8B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE34C, -/* 2BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE355, 0xFB8B, 0xFFFD, 0x8D69, -/* 2BF8 */ 0xFFFD, 0xFFFD, 0x978D, 0x88BA, 0xE352, 0xFFFD, 0xFFFD, 0x8B8B, -/* 2C00 */ 0xFFFD, 0xE34F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE350, -/* 2C08 */ 0xFFFD, 0xFFFD, 0x939D, 0xE34E, 0xE34B, 0xFFFD, 0x8A47, 0x90E2, -/* 2C10 */ 0xFFFD, 0xFFFD, 0x8CA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE357, 0xE354, -/* 2C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE356, 0xFFFD, 0xFFFD, -/* 2C20 */ 0xFFFD, 0xE353, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C70, -/* 2C28 */ 0x91B1, 0xE358, 0x918E, 0xFFFD, 0xFFFD, 0xE365, 0xFB8D, 0xFFFD, -/* 2C30 */ 0xE361, 0xE35B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C38 */ 0xFFFD, 0xE35F, 0x8EF8, 0x88DB, 0xE35A, 0xE362, 0xE366, 0x8D6A, -/* 2C40 */ 0x96D4, 0xFFFD, 0x92D4, 0xE35C, 0xFFFD, 0xFB8C, 0xE364, 0xFFFD, -/* 2C48 */ 0xE359, 0x925D, 0xFFFD, 0xE35E, 0x88BB, 0x96C8, 0xFFFD, 0xFFFD, -/* 2C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE35D, 0xFFFD, 0xFFFD, -/* 2C58 */ 0x8BD9, 0x94EA, 0xFFFD, 0xFFFD, 0xFFFD, 0x918D, 0xFFFD, 0x97CE, -/* 2C60 */ 0x8F8F, 0xFFFD, 0xFFFD, 0xE38E, 0xFB8E, 0xFFFD, 0xE367, 0xFFFD, -/* 2C68 */ 0x90FC, 0xFFFD, 0xE363, 0xE368, 0xE36A, 0xFFFD, 0x92F7, 0xE36D, -/* 2C70 */ 0xFFFD, 0xFFFD, 0xE369, 0xFFFD, 0xFFFD, 0xFFFD, 0x95D2, 0x8AC9, -/* 2C78 */ 0xFFFD, 0xFFFD, 0x96C9, 0xFFFD, 0xFFFD, 0x88DC, 0xFFFD, 0xFFFD, -/* 2C80 */ 0xE36C, 0xFFFD, 0x97FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C88 */ 0xFFFD, 0xE36B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x898F, -/* 2C90 */ 0xFFFD, 0xFFFD, 0x93EA, 0xE36E, 0xFFFD, 0xFFFD, 0xFFFD, 0xE375, -/* 2C98 */ 0xE36F, 0xE376, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CA0 */ 0xE372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CA8 */ 0xFFFD, 0x949B, 0xFFFD, 0xFFFD, 0x8EC8, 0xE374, 0xFFFD, 0xE371, -/* 2CB0 */ 0xE377, 0xE370, 0xFFFD, 0xFFFD, 0x8F63, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CB8 */ 0xFFFD, 0x9644, 0xFFFD, 0xFFFD, 0x8F6B, 0xFFFD, 0xFFFD, 0xE373, -/* 2CC0 */ 0xE380, 0xFFFD, 0xFFFD, 0xE37B, 0xFFFD, 0xE37E, 0xFFFD, 0xE37C, -/* 2CC8 */ 0xE381, 0xE37A, 0xFFFD, 0xE360, 0x90D1, 0xFFFD, 0xFFFD, 0x94C9, -/* 2CD0 */ 0xFFFD, 0xE37D, 0xFFFD, 0xFFFD, 0xE378, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CD8 */ 0x9140, 0x8C71, 0xFFFD, 0x8F4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CE0 */ 0xFB8F, 0xFFFD, 0x9044, 0x9155, 0xE384, 0xFFFD, 0xFFFD, 0xE386, -/* 2CE8 */ 0xE387, 0xFFFD, 0xFFFD, 0xE383, 0xE385, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE379, 0xE382, 0xFFFD, 0xE38A, -/* 2CF8 */ 0xE389, 0xFFFD, 0xFFFD, 0x969A, 0xFFFD, 0xFFFD, 0x8C4A, 0xFFFD, -/* 2D00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE388, -/* 2D08 */ 0xFFFD, 0xE38C, 0xE38B, 0xE38F, 0xFFFD, 0xE391, 0xFFFD, 0xFFFD, -/* 2D10 */ 0x8E5B, 0xE38D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE392, 0xE393, -/* 2D18 */ 0xFA5C, 0xFFFD, 0xE394, 0xFFFD, 0xE39A, 0x935A, 0xE396, 0xFFFD, -/* 2D20 */ 0xE395, 0xE397, 0xE398, 0xFFFD, 0xE399, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D28 */ 0xFFFD, 0xE39B, 0xE39C, 0x8ACA, 0xFFFD, 0xE39D, 0xFFFD, 0xE39E, -/* 2D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D38 */ 0xFFFD, 0xFFFD, 0xE39F, 0xFFFD, 0xFB90, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D40 */ 0xFFFD, 0xE3A0, 0xE3A1, 0xE3A2, 0xFFFD, 0xE3A3, 0xE3A4, 0xFFFD, -/* 2D48 */ 0xFFFD, 0xE3A6, 0xE3A5, 0xFFFD, 0xFFFD, 0xE3A7, 0xFFFD, 0xFFFD, -/* 2D50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3A8, 0xE3A9, 0xFFFD, 0xFFFD, -/* 2D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3AC, 0xE3AA, 0xE3AB, 0x8DDF, -/* 2D60 */ 0x8C72, 0xFFFD, 0xFFFD, 0x9275, 0xFFFD, 0x94B1, 0xFFFD, 0x8F90, -/* 2D68 */ 0xFFFD, 0xFFFD, 0x946C, 0xFFFD, 0x94EB, 0xE3AD, 0x9CEB, 0xFFFD, -/* 2D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3AE, -/* 2D78 */ 0xE3B0, 0xFFFD, 0x9785, 0xE3AF, 0xE3B2, 0xE3B1, 0xFFFD, 0x9772, -/* 2D80 */ 0xFFFD, 0xE3B3, 0xFFFD, 0x94FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D88 */ 0xFFFD, 0xE3B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3B7, -/* 2D90 */ 0xFFFD, 0xFFFD, 0xE3B6, 0xE3B5, 0xFFFD, 0xFFFD, 0xFB91, 0xFFFD, -/* 2D98 */ 0xE3B8, 0x8C51, 0xFFFD, 0xFFFD, 0xFFFD, 0x9141, 0x8B60, 0xFFFD, -/* 2DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3BC, 0xE3B9, 0xFFFD, 0xFFFD, 0xE3BA, -/* 2DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3BD, 0xFFFD, 0xE3BE, 0xE3BB, 0xFFFD, -/* 2DB0 */ 0xFFFD, 0xFFFD, 0x8948, 0xFFFD, 0xFFFD, 0xFFFD, 0x89A5, 0xFFFD, -/* 2DB8 */ 0xFFFD, 0xFFFD, 0xE3C0, 0xE3C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3C2, -/* 2DC0 */ 0xFFFD, 0x9782, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F4B, -/* 2DC8 */ 0xFFFD, 0xE3C4, 0xE3C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9089, 0xE3C5, 0xFFFD, -/* 2DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3C6, 0xFFFD, 0xFFFD, 0xE3C7, 0xFFFD, -/* 2DE0 */ 0x8AE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8ACB, 0xFFFD, 0xFFFD, -/* 2DE8 */ 0xE3C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3C9, 0xFFFD, -/* 2DF0 */ 0x967C, 0x9783, 0xFFFD, 0xFFFD, 0xFFFD, 0x9773, 0x9856, 0xFFFD, -/* 2DF8 */ 0x8D6C, 0xE3CC, 0x8ED2, 0xE3CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E00 */ 0xE3CD, 0x8EA7, 0xFFFD, 0xFFFD, 0xFFFD, 0x91CF, 0xFFFD, 0xE3CE, -/* 2E08 */ 0xFFFD, 0xFFFD, 0x8D6B, 0xFFFD, 0x96D5, 0xE3CF, 0xE3D0, 0xFFFD, -/* 2E10 */ 0xFFFD, 0xE3D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3D2, 0xFFFD, -/* 2E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3D3, 0xFFFD, 0xFFFD, -/* 2E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E28 */ 0x8EA8, 0xFFFD, 0xFFFD, 0x96EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E30 */ 0xE3D5, 0xFFFD, 0x925E, 0xFFFD, 0xE3D4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3D6, -/* 2E40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3D8, -/* 2E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x90B9, 0xFFFD, 0xE3D9, 0xFFFD, 0xE3DA, -/* 2E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x95B7, 0xE3DB, 0xFFFD, 0x918F, 0xE3DC, -/* 2E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3DD, 0xFFFD, 0xFFFD, -/* 2E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97FC, 0xE3E0, 0xFFFD, 0xE3DF, -/* 2E68 */ 0xE3DE, 0x92AE, 0xFFFD, 0xE3E1, 0x9045, 0xFFFD, 0xE3E2, 0xFFFD, -/* 2E70 */ 0xFFFD, 0xFFFD, 0xE3E3, 0x9857, 0xE3E4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E78 */ 0xFFFD, 0xE3E5, 0xE3E7, 0xE3E6, 0x94A3, 0xFFFD, 0x93F7, 0xFFFD, -/* 2E80 */ 0x985D, 0x94A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E88 */ 0xE3E9, 0xFFFD, 0xFFFD, 0x8FD1, 0xFFFD, 0x9549, 0xFFFD, 0xE3EA, -/* 2E90 */ 0xE3E8, 0xFFFD, 0x8ACC, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CD2, 0x8E88, -/* 2E98 */ 0xFFFD, 0xFFFD, 0x94EC, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CA8, 0x9662, -/* 2EA0 */ 0xFFFD, 0xE3ED, 0xE3EB, 0xFFFD, 0x8D6D, 0xFFFD, 0x8D6E, 0x88E7, -/* 2EA8 */ 0xFFFD, 0x8DE6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9478, -/* 2EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EB8 */ 0x88DD, 0xE3F2, 0xFFFD, 0x925F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EC0 */ 0xFFFD, 0x9477, 0xFFFD, 0x91D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3F4, 0xFFFD, 0xFFFD, 0xE3F0, 0xE3F3, -/* 2ED0 */ 0xE3EE, 0xFFFD, 0xE3F1, 0x9645, 0xFFFD, 0xFFFD, 0x8CD3, 0xFFFD, -/* 2ED8 */ 0xFFFD, 0x88FB, 0xE3EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3F6, 0xFFFD, 0xE3F7, 0xFFFD, -/* 2EE8 */ 0xFFFD, 0x93B7, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BB9, 0xFFFD, 0xFFFD, -/* 2EF0 */ 0xFFFD, 0xE445, 0x945C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E89, -/* 2EF8 */ 0xFFFD, 0xFFFD, 0x8BBA, 0x90C6, 0x9865, 0x96AC, 0xE3F5, 0x90D2, -/* 2F00 */ 0x8B72, 0xE3F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F08 */ 0xFFFD, 0xE3FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3F9, -/* 2F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3FB, 0xFFFD, 0x9245, -/* 2F18 */ 0xFFFD, 0x945D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92AF, -/* 2F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE442, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE441, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F30 */ 0xFFFD, 0xE3FC, 0xFFFD, 0xFFFD, 0x9074, 0xFFFD, 0x9585, 0xE444, -/* 2F38 */ 0xFFFD, 0xE443, 0x8D6F, 0x9872, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE454, 0xFFFD, 0xFFFD, -/* 2F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE448, 0xE449, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F50 */ 0xFFFD, 0x8EEE, 0xFFFD, 0xFFFD, 0xE447, 0xFFFD, 0x8D98, 0xE446, -/* 2F58 */ 0xFFFD, 0xFFFD, 0xE44A, 0xFFFD, 0xFFFD, 0xFFFD, 0x92B0, 0x95A0, -/* 2F60 */ 0x9142, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91DA, 0xE44E, 0xFFFD, -/* 2F68 */ 0xE44F, 0xE44B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE44C, 0xFFFD, -/* 2F70 */ 0xE44D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8D70, 0xFFFD, 0xFFFD, -/* 2F78 */ 0xFFFD, 0xE455, 0xFFFD, 0xE451, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F80 */ 0x9586, 0xFFFD, 0x968C, 0x9547, 0xFFFD, 0xFFFD, 0xE450, 0xFFFD, -/* 2F88 */ 0xFFFD, 0xE453, 0xE452, 0xFFFD, 0xFFFD, 0xFFFD, 0x9663, 0xE456, -/* 2F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE457, 0xFFFD, -/* 2F98 */ 0xFFFD, 0x9156, 0xFFFD, 0xE458, 0xFFFD, 0xFFFD, 0xE45A, 0xFFFD, -/* 2FA0 */ 0xE45E, 0xFFFD, 0xFFFD, 0xE45B, 0xE459, 0x945E, 0xE45C, 0xFFFD, -/* 2FA8 */ 0xE45D, 0xFFFD, 0xFFFD, 0xFFFD, 0x89B0, 0xFFFD, 0xE464, 0xE45F, -/* 2FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE460, 0xFFFD, 0xFFFD, 0xFFFD, 0xE461, -/* 2FB8 */ 0xFFFD, 0x919F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE463, 0xE462, -/* 2FC0 */ 0xE465, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE466, 0xE467, 0xFFFD, -/* 2FC8 */ 0xFFFD, 0x9062, 0xFFFD, 0x89E7, 0xFFFD, 0xE468, 0x97D5, 0xFFFD, -/* 2FD0 */ 0x8EA9, 0xFFFD, 0xFFFD, 0x8F4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FD8 */ 0xFFFD, 0x8E8A, 0x9276, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FE0 */ 0xE469, 0xE46A, 0x8950, 0xFFFD, 0xE46B, 0xFFFD, 0xFFFD, 0xE46C, -/* 2FE8 */ 0xE46D, 0xFFFD, 0xFFFD, 0xE46E, 0xFFFD, 0xE46F, 0x8BBB, 0x9DA8, -/* 2FF0 */ 0xE470, 0xFFFD, 0x90E3, 0xE471, 0x8EC9, 0xFFFD, 0xE472, 0xFFFD, -/* 2FF8 */ 0x98AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xE473, 0x95DC, 0x8ADA, 0xFFFD, -/* 3000 */ 0xFFFD, 0x9143, 0x8F77, 0xFFFD, 0x9591, 0x8F4D, 0xFFFD, 0xFFFD, -/* 3008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE474, -/* 3010 */ 0x8D71, 0xE475, 0x94CA, 0xFFFD, 0xE484, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3018 */ 0xFFFD, 0xE477, 0xFFFD, 0x91C7, 0x9495, 0x8CBD, 0xE476, 0x9144, -/* 3020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE478, 0xFFFD, -/* 3028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92F8, 0xE47A, 0xE479, -/* 3030 */ 0xE47C, 0xFFFD, 0xFFFD, 0xE47B, 0xFFFD, 0xE47D, 0xFFFD, 0xFFFD, -/* 3038 */ 0xE480, 0xFFFD, 0xE47E, 0xFFFD, 0x8ACD, 0xFFFD, 0xE481, 0xFFFD, -/* 3040 */ 0xE482, 0xE483, 0xFFFD, 0xFFFD, 0x8DAF, 0x97C7, 0xFFFD, 0xE485, -/* 3048 */ 0x9046, 0xFFFD, 0xFFFD, 0xFFFD, 0x8990, 0xE486, 0xE487, 0xFFFD, -/* 3050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE488, 0x88F0, 0xFFFD, 0xE489, -/* 3058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE48A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9587, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EC5, -/* 3068 */ 0xFFFD, 0xE48C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A48, -/* 3070 */ 0x88B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE48B, 0xE48E, 0x946D, -/* 3078 */ 0xFFFD, 0x9063, 0xFFFD, 0x89D4, 0xFFFD, 0x9646, 0xFFFD, 0xFFFD, -/* 3080 */ 0xFFFD, 0xFFFD, 0x8C7C, 0x8BDA, 0xFFFD, 0xE48D, 0xFFFD, 0x89E8, -/* 3088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AA1, -/* 3090 */ 0x8991, 0xE492, 0x97E8, 0x91DB, 0xFFFD, 0xFFFD, 0x9563, 0xFFFD, -/* 3098 */ 0xE49E, 0xFFFD, 0x89D5, 0xE49C, 0xFFFD, 0xE49A, 0xE491, 0xFFFD, -/* 30A0 */ 0xE48F, 0xFFFD, 0xE490, 0xFFFD, 0x8EE1, 0x8BEA, 0x9297, 0xFFFD, -/* 30A8 */ 0xFFFD, 0xFFFD, 0x93CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30B0 */ 0x8970, 0xFFFD, 0xE494, 0xE493, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30B8 */ 0xE499, 0xE495, 0xE498, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30C0 */ 0xFB93, 0x96CE, 0xE497, 0x89D6, 0x8A9D, 0xE49B, 0xFFFD, 0xFFFD, -/* 30C8 */ 0xE49D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C73, 0xFFFD, 0xFFFD, -/* 30D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4A1, 0xE4AA, 0xE4AB, -/* 30D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x88A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30E0 */ 0xFFFD, 0xFFFD, 0xE4B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88EF, -/* 30E8 */ 0xFFFD, 0xFFFD, 0xE4A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4A8, 0xFFFD, -/* 30F0 */ 0xE4A3, 0xE4A2, 0xFFFD, 0xE4A0, 0xE49F, 0x9283, 0xFFFD, 0x91F9, -/* 30F8 */ 0xE4A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4A4, -/* 3100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4A7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3108 */ 0x9190, 0x8C74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8960, 0xE4A6, -/* 3110 */ 0xFFFD, 0x8D72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9191, -/* 3118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3120 */ 0xFFFD, 0xFB94, 0xE4B8, 0xFFFD, 0xE4B9, 0xFFFD, 0x89D7, 0xFFFD, -/* 3128 */ 0xFFFD, 0xFFFD, 0x89AC, 0xE4B6, 0xFFFD, 0xFFFD, 0xFB95, 0xFFFD, -/* 3130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4AC, 0xFFFD, 0xE4B4, 0xFFFD, -/* 3138 */ 0xE4BB, 0xE4B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4B3, 0xFFFD, 0xFFFD, -/* 3140 */ 0xFFFD, 0xFFFD, 0xE496, 0xFFFD, 0xFFFD, 0xE4B1, 0xFFFD, 0xFFFD, -/* 3148 */ 0xFFFD, 0xE4AD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8ACE, 0xE4AF, 0xE4BA, -/* 3150 */ 0xFFFD, 0xE4B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4BC, -/* 3158 */ 0xFFFD, 0xE4AE, 0x949C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3160 */ 0x9789, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4B7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4CD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3170 */ 0xE4C5, 0xFFFD, 0xFFFD, 0xFFFD, 0x909B, 0xFFFD, 0xFB96, 0xFFFD, -/* 3178 */ 0xFFFD, 0x8B65, 0xFFFD, 0x8BDB, 0xFFFD, 0xE4C0, 0xFFFD, 0xFFFD, -/* 3180 */ 0xFFFD, 0xFFFD, 0x89D9, 0xFFFD, 0xFFFD, 0x8FD2, 0xFFFD, 0xE4C3, -/* 3188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8DD8, 0xFFFD, 0xFFFD, 0x9370, 0xE4C8, -/* 3190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3198 */ 0x95EC, 0xFFFD, 0xE4BF, 0xFFFD, 0xFFFD, 0xFFFD, 0x89D8, 0x8CD4, -/* 31A0 */ 0x9548, 0xE4C9, 0xFFFD, 0xE4BD, 0xFFFD, 0xFB97, 0xE4C6, 0xFFFD, -/* 31A8 */ 0xFFFD, 0xFFFD, 0xE4D0, 0xFFFD, 0xE4C1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31B0 */ 0xFFFD, 0xFFFD, 0xE4C2, 0x93B8, 0xFFFD, 0xFFFD, 0xE4C7, 0xFFFD, -/* 31B8 */ 0xFFFD, 0xFFFD, 0xE4C4, 0x9647, 0xE4CA, 0x88DE, 0xFFFD, 0xFFFD, -/* 31C0 */ 0xFFFD, 0xFFFD, 0xE4BE, 0xE4CC, 0xFFFD, 0xE4CB, 0xFFFD, 0xFFFD, -/* 31C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x948B, 0xE4D2, 0xFFFD, 0xE4DD, -/* 31D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A9E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31D8 */ 0xE4E0, 0xFFFD, 0xFFFD, 0xE4CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4D3, -/* 31E0 */ 0x978E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31E8 */ 0xFFFD, 0xE4DC, 0xFFFD, 0xFB98, 0x9774, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F0 */ 0xFFFD, 0x97A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F8 */ 0xFFFD, 0xFFFD, 0x9298, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A8B, 0xFFFD, -/* 3200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9592, 0xE4E2, 0x939F, 0xFFFD, -/* 3208 */ 0xFFFD, 0x88AF, 0xFFFD, 0xFFFD, 0xE4DB, 0xFFFD, 0xE4D7, 0x9192, -/* 3210 */ 0xE4D1, 0xE4D9, 0xE4DE, 0xFFFD, 0x944B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3218 */ 0x88A8, 0xFFFD, 0xE4D6, 0xFFFD, 0xE4DF, 0x9598, 0xFFFD, 0xFFFD, -/* 3220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4DA, 0xFFFD, 0xE4D5, -/* 3228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FD3, 0xFFFD, -/* 3230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8F4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EAA, -/* 3238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96D6, 0xFFFD, 0xFFFD, 0x9566, -/* 3240 */ 0xFFFD, 0xFFFD, 0xE4E5, 0xFFFD, 0xE4EE, 0xE4D8, 0xFFFD, 0xFFFD, -/* 3248 */ 0xFFFD, 0xFFFD, 0x8A97, 0xFFFD, 0xFB99, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3250 */ 0x8FF6, 0xE4E3, 0xFFFD, 0xE4E8, 0x9193, 0xFFFD, 0xFFFD, 0xE4E4, -/* 3258 */ 0xFFFD, 0xE4EB, 0xFFFD, 0xFFFD, 0x927E, 0xFFFD, 0xE4EC, 0xFFFD, -/* 3260 */ 0xFFFD, 0x9775, 0xE4E1, 0x8A57, 0xFFFD, 0xE4E7, 0xFFFD, 0xFFFD, -/* 3268 */ 0xE4EA, 0x96AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4ED, 0xFFFD, -/* 3270 */ 0xFFFD, 0xE4E6, 0xE4E9, 0xFFFD, 0xFA60, 0x9648, 0xFFFD, 0x9840, -/* 3278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4F1, 0xFFFD, 0xFFFD, -/* 3280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4F8, 0xFFFD, 0xFFFD, -/* 3288 */ 0xE4F0, 0x8EC1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4CF, -/* 3290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3298 */ 0xFFFD, 0xFFFD, 0x95CC, 0xFFFD, 0x96A0, 0xE4F7, 0xE4F6, 0xFFFD, -/* 32A0 */ 0xE4F2, 0xE4F3, 0xFFFD, 0x8955, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32A8 */ 0xE4F5, 0xFFFD, 0xE4EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92D3, -/* 32B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4F4, 0x88FC, 0xFFFD, -/* 32B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91A0, 0xFFFD, -/* 32C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95C1, 0xFFFD, -/* 32C8 */ 0xFFFD, 0xE4F9, 0xE540, 0xFFFD, 0x94D7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32D0 */ 0xFFFD, 0xE4FC, 0x8FD4, 0x8EC7, 0xE542, 0xFFFD, 0xFFFD, 0x8BBC, -/* 32D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFB9A, 0xFFFD, 0xE543, 0xFFFD, -/* 32E0 */ 0x9599, 0xE4FB, 0xFB9B, 0xE4D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4FA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32F0 */ 0xFFFD, 0x986E, 0x93A0, 0x9593, 0xFB9C, 0xFFFD, 0xE54A, 0xFFFD, -/* 32F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3300 */ 0xE550, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE551, -/* 3308 */ 0xFFFD, 0xE544, 0xFFFD, 0xFFFD, 0xFFFD, 0x9496, 0xFFFD, 0xFFFD, -/* 3310 */ 0xE54E, 0xE546, 0xFFFD, 0xE548, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3318 */ 0xFFFD, 0xE552, 0xE547, 0xFFFD, 0xFFFD, 0xE54B, 0xFFFD, 0xFFFD, -/* 3320 */ 0x8992, 0xFFFD, 0x93E3, 0xFFFD, 0xE54C, 0xE54F, 0xFFFD, 0xFFFD, -/* 3328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE545, 0xFFFD, 0x9145, -/* 3330 */ 0xFFFD, 0xE549, 0x8E46, 0x9064, 0x8C4F, 0x96F2, 0xFFFD, 0x96F7, -/* 3338 */ 0x8F92, 0xFB9E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3340 */ 0xFFFD, 0xFFFD, 0xE556, 0xE554, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3348 */ 0xFFFD, 0xFFFD, 0x986D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3350 */ 0xFFFD, 0xFFFD, 0xE553, 0xFFFD, 0xFFFD, 0xFFFD, 0x9795, 0xFFFD, -/* 3358 */ 0xE555, 0xE557, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE558, 0xFFFD, -/* 3360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE55B, 0xE559, 0xFFFD, -/* 3368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x93A1, 0xE55A, 0xFFFD, -/* 3370 */ 0xFFFD, 0xFFFD, 0x94CB, 0xE54D, 0x8F93, 0xFFFD, 0xE55C, 0xE561, -/* 3378 */ 0x9194, 0xFFFD, 0xFFFD, 0xE560, 0xFFFD, 0xFFFD, 0xFFFD, 0xE541, -/* 3380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE562, 0x9168, 0xFFFD, 0xFFFD, 0xE55D, -/* 3388 */ 0xE55F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3390 */ 0xE55E, 0xFFFD, 0xFFFD, 0x9F50, 0x9F41, 0xFFFD, 0xFFFD, 0xE564, -/* 3398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE563, -/* 33A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33A8 */ 0xFFFD, 0xFFFD, 0x9796, 0xFFFD, 0xE1BA, 0xE565, 0xE567, 0x8CD5, -/* 33B0 */ 0xFFFD, 0x8B73, 0xFFFD, 0xFFFD, 0xFFFD, 0xE569, 0x997C, 0xFFFD, -/* 33B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8B95, 0xFFFD, 0x97B8, 0xFFFD, 0x8BF1, -/* 33C0 */ 0xE56A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33C8 */ 0xE56B, 0xFFFD, 0xFFFD, 0xFFFD, 0x928E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33D0 */ 0xFFFD, 0xFFFD, 0xE56C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33D8 */ 0xFFFD, 0xFFFD, 0x93F8, 0xFFFD, 0x88B8, 0x89E1, 0xE571, 0xE572, -/* 33E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE56D, 0xFFFD, -/* 33E8 */ 0x8E5C, 0xE56E, 0x9461, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE56F, -/* 33F0 */ 0xE570, 0xE57A, 0xFFFD, 0xFFFD, 0xFFFD, 0xE574, 0xE577, 0xFFFD, -/* 33F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE573, 0xE575, 0xFFFD, 0xE576, -/* 3400 */ 0x8ED6, 0xFFFD, 0xE578, 0xFFFD, 0x9260, 0xFFFD, 0x8C75, 0x8A61, -/* 3408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE57B, 0xFFFD, 0xFFFD, -/* 3410 */ 0xFFFD, 0xFFFD, 0x8A5E, 0xFFFD, 0xE581, 0xFFFD, 0xFFFD, 0xE57C, -/* 3418 */ 0xE580, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x94B8, 0xFFFD, 0xFFFD, -/* 3420 */ 0xFFFD, 0xFFFD, 0xE57D, 0xFFFD, 0xFFFD, 0xE57E, 0x9567, 0x94D8, -/* 3428 */ 0xE582, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3430 */ 0xFFFD, 0x91FB, 0xE58C, 0xFFFD, 0xE588, 0xFFFD, 0xFFFD, 0x89E9, -/* 3438 */ 0xFFFD, 0xE586, 0xFFFD, 0x9649, 0xE587, 0xFFFD, 0xFFFD, 0xE584, -/* 3440 */ 0xFFFD, 0xE585, 0xE58A, 0xE58D, 0xFFFD, 0xFFFD, 0xE58B, 0xFFFD, -/* 3448 */ 0xFFFD, 0xFFFD, 0xE589, 0xE583, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3450 */ 0xFFFD, 0x9277, 0xFFFD, 0xE594, 0xFFFD, 0x96A8, 0xFFFD, 0xFFFD, -/* 3458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE592, 0xFFFD, -/* 3460 */ 0xFFFD, 0xFFFD, 0xE593, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE58E, 0xFFFD, 0xFFFD, -/* 3470 */ 0xE590, 0xFFFD, 0xFFFD, 0xFFFD, 0xE591, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3478 */ 0xE58F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3480 */ 0xFFFD, 0xFFFD, 0x90E4, 0xFFFD, 0x9858, 0xE598, 0xFFFD, 0xE599, -/* 3488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE59F, 0xFFFD, 0x9049, 0xFFFD, -/* 3490 */ 0xE59B, 0xFFFD, 0xE59E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3498 */ 0xE596, 0xE595, 0xFFFD, 0xFFFD, 0xE5A0, 0xFFFD, 0xFFFD, 0x89DA, -/* 34A0 */ 0xFFFD, 0xE59C, 0xFFFD, 0xE5A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xE59D, -/* 34A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE59A, 0xFFFD, 0x92B1, -/* 34B0 */ 0xFFFD, 0xE597, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34B8 */ 0x9488, 0xFFFD, 0xFFFD, 0xE5A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x975A, 0xE5A4, -/* 34C8 */ 0xFFFD, 0xFFFD, 0xE5A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5A6, -/* 34D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34E0 */ 0xFFFD, 0xFFFD, 0x9786, 0xE5B1, 0xFFFD, 0xE5A8, 0xFFFD, 0xFFFD, -/* 34E8 */ 0xE5A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AD, 0xFFFD, 0xE5B0, 0xE5AF, -/* 34F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F8 */ 0xE5AA, 0xFFFD, 0xE5BB, 0xE5B2, 0xFFFD, 0xFFFD, 0xE5B3, 0xFFFD, -/* 3500 */ 0xFFFD, 0xFFFD, 0xE5B8, 0xE5B9, 0xFFFD, 0x8A49, 0xFFFD, 0x8B61, -/* 3508 */ 0xFFFD, 0xFFFD, 0xE5B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3510 */ 0xFFFD, 0xE5A2, 0xFFFD, 0xFBA1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3518 */ 0xFFFD, 0xE5B6, 0xE5BA, 0xE5B5, 0xFFFD, 0xE5BC, 0xFFFD, 0xFFFD, -/* 3520 */ 0xFFFD, 0xE5BE, 0xE5BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5C0, 0xE5BF, 0xE579, -/* 3530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5C1, 0xFFFD, 0xFFFD, -/* 3540 */ 0xFFFD, 0xFFFD, 0xE5C2, 0xFFFD, 0xFFFD, 0xE5C3, 0xFFFD, 0xE5C5, -/* 3548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C8C, 0xFFFD, 0xE5C7, 0xFFFD, -/* 3550 */ 0xE5C6, 0xFFFD, 0x8F4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3558 */ 0x8D73, 0x9FA5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5C8, 0x8F70, -/* 3560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8A58, 0xFFFD, 0xE5C9, 0xFFFD, 0x8971, -/* 3568 */ 0xFFFD, 0x8FD5, 0xE5CA, 0xFFFD, 0xFFFD, 0x8D74, 0xE5CB, 0x88DF, -/* 3570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x955C, 0xFFFD, 0xFFFD, 0xE5CC, -/* 3578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x908A, 0xFFFD, 0xE5D3, 0xFFFD, -/* 3580 */ 0xFFFD, 0xE5D0, 0xFFFD, 0x928F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3588 */ 0xFFFD, 0xE5D1, 0xE5CE, 0x8BDC, 0xFFFD, 0xE5CD, 0xE5D4, 0xFFFD, -/* 3590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C55, 0xFFFD, 0xFFFD, 0x91DC, -/* 3598 */ 0xFFFD, 0xE5DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5D6, 0xFFFD, -/* 35A0 */ 0xFFFD, 0xFFFD, 0x91B3, 0xE5D5, 0xFFFD, 0xE5D8, 0xFFFD, 0xFFFD, -/* 35A8 */ 0xFFFD, 0xFFFD, 0xE5CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5D9, 0xFFFD, -/* 35B0 */ 0xE5DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x94ED, -/* 35B8 */ 0xFFFD, 0xFFFD, 0xE5D7, 0xFFFD, 0xE5DC, 0xE5DE, 0xFFFD, 0xFFFD, -/* 35C0 */ 0x8CD1, 0xE5D2, 0xFFFD, 0x88BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5DD, 0xFFFD, 0x8DD9, 0x97F4, 0xE5DF, -/* 35D0 */ 0xE5E0, 0x9195, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x97A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35E0 */ 0xE5E1, 0x9754, 0xFFFD, 0xFFFD, 0xE5E2, 0xE5E3, 0xFFFD, 0xFFFD, -/* 35E8 */ 0x95E2, 0xE5E4, 0xFFFD, 0x8DBE, 0xFFFD, 0x97A1, 0xFFFD, 0xFFFD, -/* 35F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5E9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5EA, 0x8FD6, -/* 3600 */ 0xE5E8, 0xFBA2, 0xFFFD, 0xFFFD, 0x9787, 0xE5E5, 0xFFFD, 0xFFFD, -/* 3608 */ 0xE5E7, 0x90BB, 0x909E, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5E6, 0xFFFD, -/* 3610 */ 0xE5EB, 0xFFFD, 0xFFFD, 0x95A1, 0xFFFD, 0xFFFD, 0xE5ED, 0xFFFD, -/* 3618 */ 0xE5EC, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A8C, 0xFFFD, 0x964A, 0xE5EE, -/* 3620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3628 */ 0xFA5D, 0xE5FA, 0xE5F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3630 */ 0xFFFD, 0xE5F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5F2, 0xE5F3, -/* 3638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3640 */ 0xFFFD, 0xFFFD, 0xE5F7, 0xFFFD, 0xE5F8, 0xFFFD, 0xFFFD, 0xE5F6, -/* 3648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5F4, 0xFFFD, 0xE5EF, -/* 3650 */ 0xE5F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3658 */ 0xE5F9, 0xE8B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3660 */ 0xFFFD, 0xFFFD, 0x89A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3668 */ 0xFFFD, 0xFFFD, 0xE5FC, 0x8BDD, 0xE5FB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3670 */ 0xE641, 0xFFFD, 0xE640, 0xFFFD, 0xFFFD, 0xFFFD, 0xE643, 0xFFFD, -/* 3678 */ 0xFFFD, 0xE642, 0xFFFD, 0xE644, 0xFFFD, 0xFFFD, 0x8F50, 0xFFFD, -/* 3680 */ 0xE645, 0xFFFD, 0xFFFD, 0xE646, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3688 */ 0xFFFD, 0xFFFD, 0xE647, 0x90BC, 0xFFFD, 0x9776, 0xFFFD, 0xE648, -/* 3690 */ 0xFFFD, 0xFFFD, 0x95A2, 0x9465, 0xE649, 0xFFFD, 0xE64A, 0x8CA9, -/* 3698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8B4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xE64B, -/* 36A0 */ 0xFFFD, 0xFFFD, 0x8E8B, 0x9460, 0xE64C, 0xFFFD, 0x8A6F, 0xFFFD, -/* 36A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE64D, 0xFFFD, 0xFFFD, -/* 36B0 */ 0xFFFD, 0xFFFD, 0xE64F, 0x9797, 0xFFFD, 0xE64E, 0x9065, 0xFFFD, -/* 36B8 */ 0xE650, 0xFFFD, 0xFFFD, 0xE651, 0xFFFD, 0xFFFD, 0xE652, 0x8ACF, -/* 36C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE653, 0xFFFD, -/* 36C8 */ 0xFFFD, 0xE654, 0xFFFD, 0xE655, 0xE656, 0x8A70, 0xFFFD, 0xFFFD, -/* 36D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE657, 0xFFFD, 0xE658, -/* 36D8 */ 0xE659, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x89F0, 0xFFFD, -/* 36E0 */ 0xFFFD, 0x9047, 0xE65A, 0xE65B, 0xFFFD, 0xFFFD, 0xFFFD, 0xE65C, -/* 36E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CBE, -/* 36F0 */ 0xFFFD, 0x92F9, 0xE65D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C76, -/* 36F8 */ 0xFFFD, 0x9075, 0xFFFD, 0xE660, 0xFFFD, 0x93A2, 0xFFFD, 0xE65F, -/* 3700 */ 0xFFFD, 0xFBA3, 0x8C50, 0xFFFD, 0xFFFD, 0xE65E, 0x91F5, 0x8B4C, -/* 3708 */ 0xFFFD, 0xFFFD, 0xE661, 0xFFFD, 0xE662, 0xFFFD, 0x8FD7, 0xFFFD, -/* 3710 */ 0xFFFD, 0xFFFD, 0x8C8D, 0xFFFD, 0xE663, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3718 */ 0xFFFD, 0x964B, 0xFFFD, 0xFFFD, 0x90DD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3720 */ 0x8B96, 0xFFFD, 0x96F3, 0x9169, 0xFFFD, 0xE664, 0xFBA4, 0xFFFD, -/* 3728 */ 0xFFFD, 0x9066, 0x9290, 0x8FD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3730 */ 0xE665, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE668, 0xFFFD, 0xE669, -/* 3738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8DBC, -/* 3740 */ 0x91C0, 0xE667, 0xFFFD, 0x8FD9, 0x955D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3748 */ 0xFFFD, 0xFFFD, 0xE666, 0xFFFD, 0xFFFD, 0x8E8C, 0xFFFD, 0x8972, -/* 3750 */ 0xFFFD, 0xE66D, 0x8C77, 0xFFFD, 0xFFFD, 0x8E8E, 0xFFFD, 0xFFFD, -/* 3758 */ 0x8E8D, 0xFFFD, 0x986C, 0xE66C, 0xE66B, 0x9146, 0xFFFD, 0x8B6C, -/* 3760 */ 0x9862, 0x8A59, 0x8FDA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3768 */ 0xFBA5, 0xFFFD, 0xFFFD, 0xE66A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3770 */ 0xFFFD, 0xE66F, 0xFFFD, 0xE670, 0xE66E, 0xFFFD, 0x8CD6, 0xFFFD, -/* 3778 */ 0x975F, 0xFFFD, 0xFFFD, 0x8E8F, 0x9446, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3780 */ 0xE673, 0xFFFD, 0x90BE, 0xFFFD, 0x9261, 0xFFFD, 0xFFFD, 0x9755, -/* 3788 */ 0xFFFD, 0xE676, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CEA, 0xFFFD, 0x90BD, -/* 3790 */ 0xE672, 0xFFFD, 0xE677, 0x8CEB, 0xE674, 0xE675, 0xFBA6, 0xE671, -/* 3798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x90E0, 0x93C7, 0xFFFD, 0xFFFD, 0x924E, -/* 37A0 */ 0xFFFD, 0x89DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37A8 */ 0x94EE, 0xFFFD, 0xFFFD, 0x8B62, 0xFFFD, 0xFBA7, 0x92B2, 0xFFFD, -/* 37B0 */ 0xFFFD, 0xE67A, 0xFFFD, 0xE678, 0xFFFD, 0xFFFD, 0x926B, 0xFFFD, -/* 37B8 */ 0xFFFD, 0xFFFD, 0x90BF, 0x8AD0, 0xE679, 0xFFFD, 0x907A, 0xFFFD, -/* 37C0 */ 0xFFFD, 0x97C8, 0xFFFD, 0xFFFD, 0xFFFD, 0x985F, 0xFFFD, 0xFFFD, -/* 37C8 */ 0xFFFD, 0xE67B, 0xE687, 0x92B3, 0xFFFD, 0xE686, 0xFBA8, 0xE683, -/* 37D0 */ 0xE68B, 0xE684, 0xFFFD, 0xE680, 0xFFFD, 0x92FA, 0xE67E, 0xFFFD, -/* 37D8 */ 0xFFFD, 0xFFFD, 0xE67C, 0xFFFD, 0x9740, 0x8E90, 0xFFFD, 0xFFFD, -/* 37E0 */ 0xE681, 0xFFFD, 0xE67D, 0xFFFD, 0xFFFD, 0xFBAA, 0xE685, 0x8F94, -/* 37E8 */ 0xFFFD, 0x8CBF, 0xFFFD, 0xFFFD, 0xFFFD, 0x91F8, 0xFFFD, 0x9664, -/* 37F0 */ 0x8979, 0x88E0, 0xFFFD, 0x93A3, 0xFFFD, 0xFFFD, 0xE689, 0xFFFD, -/* 37F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE688, 0xFFFD, 0x93E4, 0xFFFD, 0xE68D, -/* 3800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE682, 0xFFFD, 0xE68C, 0xE68E, 0xFFFD, -/* 3808 */ 0x8CAA, 0xE68A, 0x8D75, 0xFFFD, 0x8ED3, 0xFFFD, 0xFFFD, 0xE68F, -/* 3810 */ 0x9777, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE692, 0xFFFD, 0xE695, -/* 3818 */ 0xFFFD, 0xFFFD, 0xE693, 0x9554, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3820 */ 0xFFFD, 0xFFFD, 0xE690, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3828 */ 0x8BDE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE694, 0xFFFD, 0xFFFD, -/* 3830 */ 0xE696, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3838 */ 0xE69A, 0xFFFD, 0xFFFD, 0xE697, 0xFFFD, 0xE699, 0xE698, 0xFFFD, -/* 3840 */ 0xFFFD, 0xFFFD, 0xFBAB, 0xFFFD, 0xFFFD, 0xE69B, 0xFFFD, 0x8EAF, -/* 3848 */ 0xFFFD, 0xE69D, 0xE69C, 0x9588, 0xFFFD, 0xFFFD, 0xE69F, 0xFFFD, -/* 3850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C78, 0xFFFD, 0xFFFD, -/* 3858 */ 0xFFFD, 0xFFFD, 0xE69E, 0xE6A0, 0xFFFD, 0xFFFD, 0xE6A1, 0x8B63, -/* 3860 */ 0xE3BF, 0x8FF7, 0xFFFD, 0xE6A2, 0xFFFD, 0xFFFD, 0x8CEC, 0xFFFD, -/* 3868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6A3, 0xFFFD, 0xFBAC, 0xE6A4, -/* 3870 */ 0xFFFD, 0xFFFD, 0x8E5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3878 */ 0xFFFD, 0x9DCC, 0xFFFD, 0xE6A5, 0xFFFD, 0xE6A6, 0xFFFD, 0x8F51, -/* 3880 */ 0xFFFD, 0xE6A7, 0xE6A8, 0xFFFD, 0xFFFD, 0xE6A9, 0xFFFD, 0xFFFD, -/* 3888 */ 0xE6AA, 0xE6AB, 0x924A, 0xFFFD, 0xFFFD, 0xE6AC, 0xFFFD, 0xFFFD, -/* 3890 */ 0xFFFD, 0xFFFD, 0xE6AE, 0xFFFD, 0xE6AD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3898 */ 0xFFFD, 0x93A4, 0xFFFD, 0xE6AF, 0xFFFD, 0x964C, 0xFFFD, 0xE6B0, -/* 38A0 */ 0xFFFD, 0xE6B1, 0xFFFD, 0xE6B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38A8 */ 0xE6B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x93D8, 0xFFFD, 0xFFFD, -/* 38B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FDB, 0xE6B4, 0xFFFD, 0xFFFD, -/* 38B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8D8B, 0x98AC, 0xE6B5, -/* 38C0 */ 0xE6B6, 0x955E, 0xE6B7, 0xFFFD, 0xE6BF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38C8 */ 0xFFFD, 0xFFFD, 0xE6B8, 0xFFFD, 0xFFFD, 0xE6BA, 0xFFFD, 0xFFFD, -/* 38D0 */ 0xFFFD, 0xE6B9, 0xE6BB, 0xFFFD, 0x9665, 0xE6BC, 0xE6BD, 0xFFFD, -/* 38D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6BE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38E0 */ 0xE6C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A4C, 0x92E5, 0xFFFD, -/* 38E8 */ 0x9589, 0x8DE0, 0x8D76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x956E, -/* 38F0 */ 0x89DD, 0x94CC, 0xE6C3, 0x8AD1, 0x90D3, 0xE6C2, 0xE6C7, 0x9299, -/* 38F8 */ 0x96E1, 0xFFFD, 0xE6C5, 0xE6C6, 0x8B4D, 0xFFFD, 0xE6C8, 0x9483, -/* 3900 */ 0x91DD, 0xFFFD, 0xFFFD, 0x94EF, 0x935C, 0xE6C4, 0xFFFD, 0x9666, -/* 3908 */ 0x89EA, 0xE6CA, 0x9847, 0x92C0, 0x9864, 0xFFFD, 0xFFFD, 0x8E91, -/* 3910 */ 0xE6C9, 0xFFFD, 0x91AF, 0xFFFD, 0xFFFD, 0xE6DA, 0x9147, 0xFFFD, -/* 3918 */ 0xFFFD, 0x93F6, 0xFFFD, 0x956F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3920 */ 0xFFFD, 0xFFFD, 0xE6CD, 0x8E5E, 0x8E92, 0xFFFD, 0x8FDC, 0xFFFD, -/* 3928 */ 0x9485, 0xFFFD, 0x8CAB, 0xE6CC, 0xE6CB, 0xFFFD, 0x958A, 0xFFFD, -/* 3930 */ 0xFFFD, 0xFFFD, 0x8EBF, 0xFFFD, 0xFFFD, 0x9371, 0xFFFD, 0xFFFD, -/* 3938 */ 0xFBAD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBAE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3940 */ 0xFFFD, 0xFFFD, 0xE6CF, 0xE6D0, 0x8D77, 0xE6CE, 0xFFFD, 0xFFFD, -/* 3948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6D1, 0xE6D2, 0xFFFD, 0xE6D4, -/* 3950 */ 0x91A1, 0xFFFD, 0xE6D3, 0x8AE4, 0xFFFD, 0xE6D6, 0xFFFD, 0xE6D5, -/* 3958 */ 0xE6D7, 0xFFFD, 0xFBAF, 0xE6D9, 0xE6DB, 0xFFFD, 0xE6DC, 0x90D4, -/* 3960 */ 0xFFFD, 0x8ECD, 0xE6DD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A71, 0xFFFD, -/* 3968 */ 0xE6DE, 0xFFFD, 0xFFFD, 0x9196, 0xE6DF, 0xFFFD, 0xE6E0, 0x958B, -/* 3970 */ 0xFFFD, 0xFBB0, 0x8B4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3980 */ 0x92B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x897A, 0xE6E2, 0xFFFD, -/* 3988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3990 */ 0x8EEF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9096, 0xFFFD, 0xFFFD, -/* 3998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39A0 */ 0x91AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E5, -/* 39A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E3, -/* 39B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39B8 */ 0xE6EB, 0xE6E9, 0xFFFD, 0xFFFD, 0xE6E6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E7, -/* 39C8 */ 0xE6EA, 0xFFFD, 0x8B97, 0xFFFD, 0xE6EE, 0xFFFD, 0x90D5, 0xFFFD, -/* 39D0 */ 0xE6EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CD7, 0xFFFD, 0xE6EC, -/* 39D8 */ 0xE6ED, 0xFFFD, 0xFFFD, 0xFFFD, 0x9848, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39E0 */ 0x92B5, 0xFFFD, 0x9148, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39E8 */ 0xFFFD, 0xE6F0, 0xFFFD, 0xFFFD, 0xE6F3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6F1, 0xE6F2, 0x9778, -/* 39F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x93A5, 0xE6F6, 0xE6F4, 0xE6F5, -/* 3A00 */ 0xE6F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE748, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A10 */ 0xFFFD, 0xE6FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6FB, 0xE6F9, 0xE6F8, -/* 3A18 */ 0xFFFD, 0x92FB, 0xFFFD, 0xFFFD, 0xE740, 0xE744, 0xE741, 0xE6FC, -/* 3A20 */ 0xFFFD, 0xE742, 0xFFFD, 0xFFFD, 0xFFFD, 0xE743, 0xFFFD, 0xFFFD, -/* 3A28 */ 0xFFFD, 0xFFFD, 0xE74A, 0xFFFD, 0xFFFD, 0xFFFD, 0xE745, 0xFFFD, -/* 3A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90D6, 0xE747, 0xFFFD, 0xFFFD, -/* 3A38 */ 0xE749, 0xE746, 0xE74C, 0xFFFD, 0x8F52, 0xFFFD, 0xE74B, 0xFFFD, -/* 3A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE74D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A48 */ 0xFFFD, 0xE74E, 0xFFFD, 0xFFFD, 0xE751, 0xE750, 0xFFFD, 0xE74F, -/* 3A50 */ 0xFFFD, 0xFFFD, 0xE753, 0xE752, 0xFFFD, 0x96F4, 0xFFFD, 0xFFFD, -/* 3A58 */ 0xFFFD, 0xE755, 0xFFFD, 0xE754, 0xE756, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A60 */ 0xFFFD, 0xE757, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A68 */ 0xFFFD, 0xE759, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A70 */ 0xFFFD, 0xFFFD, 0xE758, 0x9067, 0xE75A, 0xFFFD, 0xFFFD, 0x8BEB, -/* 3A78 */ 0xE75B, 0xE75D, 0xE75E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A80 */ 0xFFFD, 0xE75F, 0xE75C, 0xFFFD, 0xE760, 0xFFFD, 0x8ED4, 0xE761, -/* 3A88 */ 0x8B4F, 0x8C52, 0xFFFD, 0xFBB2, 0xFFFD, 0xFFFD, 0x8CAC, 0xFFFD, -/* 3A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE762, -/* 3A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x93EE, 0xFFFD, 0xFFFD, 0x935D, 0xE763, -/* 3AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE766, -/* 3AA8 */ 0x8EB2, 0xFFFD, 0xFFFD, 0xE765, 0xE764, 0x8C79, 0xE767, 0xFFFD, -/* 3AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8A72, 0xFFFD, 0xE769, 0xFFFD, 0xFFFD, -/* 3AB8 */ 0xFFFD, 0x8DDA, 0xE768, 0xFFFD, 0xE771, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AC0 */ 0xFFFD, 0xFFFD, 0xE76B, 0xE76D, 0x95E3, 0xE76A, 0xFFFD, 0xFFFD, -/* 3AC8 */ 0xFFFD, 0xE76C, 0xFFFD, 0xE770, 0xE76E, 0x8B50, 0xFFFD, 0xE76F, -/* 3AD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE772, 0xFFFD, -/* 3AD8 */ 0xFFFD, 0x9479, 0x97D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F53, -/* 3AE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE773, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AE8 */ 0x9741, 0xE775, 0xFFFD, 0xE774, 0xFFFD, 0xFFFD, 0xE778, 0x9760, -/* 3AF0 */ 0xFFFD, 0xFFFD, 0xE777, 0xFFFD, 0x8A8D, 0xE776, 0xE77B, 0xFFFD, -/* 3AF8 */ 0xFFFD, 0xE77A, 0xFFFD, 0xFFFD, 0xE779, 0x9351, 0xE77C, 0xFFFD, -/* 3B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE77D, -/* 3B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE77E, 0xFFFD, 0xFFFD, 0x8D8C, -/* 3B10 */ 0xFFFD, 0x8C44, 0xE780, 0xE781, 0xE782, 0x9068, 0xE783, 0xFFFD, -/* 3B18 */ 0x8EAB, 0xE784, 0xFFFD, 0xFFFD, 0xFFFD, 0xE785, 0xFFFD, 0xFFFD, -/* 3B20 */ 0xFFFD, 0x999F, 0x999E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE786, -/* 3B28 */ 0xE390, 0xE787, 0x9243, 0x904A, 0x945F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B30 */ 0xFFFD, 0xE788, 0xFFFD, 0xFFFD, 0x95D3, 0x92D2, 0x8D9E, 0xFFFD, -/* 3B38 */ 0xFFFD, 0x9248, 0xFFFD, 0xFFFD, 0x8949, 0xFFFD, 0x9698, 0x9076, -/* 3B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B48 */ 0x8C7D, 0xFFFD, 0xFFFD, 0x8BDF, 0xFFFD, 0xFFFD, 0x95D4, 0xFFFD, -/* 3B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE789, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE78B, 0xFFFD, 0xFFFD, 0xE78A, -/* 3B60 */ 0x89DE, 0xFFFD, 0xFFFD, 0x93F4, 0xE78C, 0x9497, 0xFFFD, 0x9352, -/* 3B68 */ 0xFFFD, 0xE78D, 0x8F71, 0xFFFD, 0xFFFD, 0xFFFD, 0xE78F, 0xFFFD, -/* 3B70 */ 0xFFFD, 0x96C0, 0xE79E, 0xE791, 0xE792, 0xFFFD, 0xFFFD, 0x92C7, -/* 3B78 */ 0xFFFD, 0xFFFD, 0x91DE, 0x9197, 0xFFFD, 0x93A6, 0xFFFD, 0xE790, -/* 3B80 */ 0x8B74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE799, 0xFFFD, 0xE796, -/* 3B88 */ 0xE7A3, 0x93A7, 0x9280, 0xE793, 0xFFFD, 0x92FC, 0x9372, 0xE794, -/* 3B90 */ 0xE798, 0x9080, 0xFFFD, 0x9487, 0x92CA, 0xFFFD, 0xFFFD, 0x90C0, -/* 3B98 */ 0xE797, 0x91AC, 0x91A2, 0xE795, 0x88A7, 0x9841, 0xFFFD, 0xFFFD, -/* 3BA0 */ 0xFFFD, 0xE79A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BA8 */ 0x91DF, 0xFFFD, 0xFFFD, 0x8F54, 0x9069, 0xFFFD, 0xFFFD, 0xE79C, -/* 3BB0 */ 0xE79B, 0xFFFD, 0x88ED, 0xE79D, 0xFFFD, 0xFFFD, 0x954E, 0xFFFD, -/* 3BB8 */ 0xE7A5, 0xFFFD, 0xFFFD, 0x93D9, 0x908B, 0xFFFD, 0xFFFD, 0x9278, -/* 3BC0 */ 0xFFFD, 0x8BF6, 0xFFFD, 0xE7A4, 0x9756, 0x895E, 0xFFFD, 0x95D5, -/* 3BC8 */ 0x89DF, 0xE79F, 0xE7A0, 0xE7A1, 0xE7A2, 0x93B9, 0x9242, 0x88E1, -/* 3BD0 */ 0xE7A6, 0xFFFD, 0xE7A7, 0xEAA1, 0xFFFD, 0xFFFD, 0x91BB, 0xFFFD, -/* 3BD8 */ 0xE7A8, 0xFFFD, 0x8993, 0x916B, 0xFFFD, 0x8CAD, 0xFFFD, 0x9779, -/* 3BE0 */ 0xFFFD, 0xFBB5, 0xE7A9, 0x934B, 0xFFFD, 0xFFFD, 0xFFFD, 0x9198, -/* 3BE8 */ 0x8ED5, 0xE7AA, 0xFFFD, 0xFFFD, 0xE7AD, 0xFFFD, 0xFFFD, 0x8F85, -/* 3BF0 */ 0xE7AB, 0x914A, 0x9149, 0xFFFD, 0x88E2, 0xFFFD, 0x97C9, 0xE7AF, -/* 3BF8 */ 0xFFFD, 0x94F0, 0xE7B1, 0xE7B0, 0xE7AE, 0xE284, 0x8AD2, 0xFFFD, -/* 3C00 */ 0xFFFD, 0xE78E, 0xFFFD, 0xE7B3, 0xE7B2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C08 */ 0xFFFD, 0xE7B4, 0xFFFD, 0x9757, 0x93DF, 0xFFFD, 0xFFFD, 0x964D, -/* 3C10 */ 0xFFFD, 0xE7B5, 0xFFFD, 0x8ED7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C18 */ 0xE7B6, 0xFFFD, 0xE7B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7B8, 0xFFFD, -/* 3C20 */ 0xFFFD, 0x9340, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C28 */ 0xFFFD, 0xFFFD, 0x88E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8D78, 0xFFFD, 0xFFFD, 0xFFFD, 0x9859, -/* 3C38 */ 0xE7BC, 0xFFFD, 0xFFFD, 0xFBB6, 0xFFFD, 0xFFFD, 0x8C53, 0xE7B9, -/* 3C40 */ 0xFFFD, 0xE7BA, 0xFFFD, 0xFFFD, 0xFFFD, 0x9594, 0xFFFD, 0xFFFD, -/* 3C48 */ 0xFFFD, 0xFFFD, 0x8A73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C50 */ 0xFFFD, 0xFFFD, 0x9758, 0xFFFD, 0x8BBD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C58 */ 0xFFFD, 0xFFFD, 0x9373, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7BD, -/* 3C60 */ 0xE7BE, 0xFFFD, 0xFFFD, 0xFBB8, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7BF, -/* 3C68 */ 0xFBB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9341, 0xFFFD, -/* 3C70 */ 0xFFFD, 0xE7C1, 0xFFFD, 0xE7C0, 0x93D1, 0xE7C2, 0x8F55, 0x8EDE, -/* 3C78 */ 0x947A, 0x9291, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EF0, 0xFFFD, 0x908C, -/* 3C80 */ 0xFFFD, 0xE7C3, 0xFFFD, 0xE7C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x907C, 0xE7C5, 0xFFFD, -/* 3C90 */ 0xE7C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7C7, 0x978F, 0xFFFD, 0x8F56, -/* 3C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7C9, 0xE7C8, 0xFFFD, -/* 3CA0 */ 0x8D79, 0xFFFD, 0x8D93, 0x8E5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7CC, 0xFFFD, 0xFFFD, -/* 3CB0 */ 0xFFFD, 0xFFFD, 0x8F86, 0xFFFD, 0xE7CB, 0xFFFD, 0xE7CA, 0xFFFD, -/* 3CB8 */ 0x91E7, 0xFFFD, 0xFFFD, 0x8CED, 0xFFFD, 0x90C1, 0xFFFD, 0xFFFD, -/* 3CC0 */ 0xFFFD, 0xFFFD, 0x94AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F58, -/* 3CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7CD, 0xFFFD, 0x8FDD, -/* 3CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7D0, 0xE7CE, 0xFFFD, -/* 3CD8 */ 0xFFFD, 0xFFFD, 0xE7CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7D2, -/* 3CE0 */ 0xE7D1, 0xFFFD, 0xFFFD, 0x8FF8, 0xFFFD, 0xE7D3, 0xFFFD, 0xFFFD, -/* 3CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE7D4, 0xE7D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CF0 */ 0xFFFD, 0x94CE, 0x8DD1, 0x8EDF, 0xE7D6, 0xFFFD, 0xE7D7, 0x97A2, -/* 3CF8 */ 0x8F64, 0x96EC, 0x97CA, 0xE7D8, 0x8BE0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D00 */ 0xFFFD, 0xE7D9, 0xFBBB, 0x9342, 0xFFFD, 0xFBBA, 0xE7DC, 0x8A98, -/* 3D08 */ 0x906A, 0xFBBC, 0xE7DA, 0xFFFD, 0xE7DB, 0xFFFD, 0x92DE, 0xFBBF, -/* 3D10 */ 0xFBC0, 0x9674, 0x8BFA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D18 */ 0xFBBD, 0xFBBE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D20 */ 0xE7DE, 0xE7DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7DD, -/* 3D28 */ 0xFFFD, 0xFFFD, 0xE7E1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D30 */ 0xFFFD, 0xFBC1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBC3, 0xFFFD, 0xFFFD, -/* 3D38 */ 0x93DD, 0x8A62, 0xFFFD, 0xFBC2, 0xE7E5, 0xFFFD, 0xFFFD, 0xE7E2, -/* 3D40 */ 0xE7E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D48 */ 0xFFFD, 0xE7E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE86E, 0xFFFD, 0xFFFD, 0xE7E3, -/* 3D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97E9, -/* 3D60 */ 0xFFFD, 0xFFFD, 0x8CD8, 0xFFFD, 0xFBCA, 0xFBC4, 0xFFFD, 0xFBC6, -/* 3D68 */ 0xFFFD, 0xFFFD, 0xE7ED, 0xFBC5, 0xFFFD, 0xFFFD, 0xFFFD, 0x9353, -/* 3D70 */ 0xE7E8, 0xFFFD, 0xFFFD, 0xE7EB, 0xE7E9, 0xFFFD, 0xE7EE, 0xFFFD, -/* 3D78 */ 0xFFFD, 0xFBC7, 0xFFFD, 0xE7EF, 0xFBC9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D80 */ 0xFFFD, 0xFFFD, 0xE7E7, 0xFFFD, 0xFBC8, 0xE7F4, 0x8994, 0xFFFD, -/* 3D88 */ 0xFFFD, 0xE7E6, 0xFFFD, 0xFFFD, 0xFFFD, 0x94AB, 0xFFFD, 0xE7EA, -/* 3D90 */ 0xFFFD, 0x8FDE, 0xFBCB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8D7A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DA0 */ 0xFFFD, 0xFFFD, 0xFBCD, 0xFBCE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DA8 */ 0xFFFD, 0x9667, 0xFFFD, 0x8BE2, 0xFFFD, 0xFFFD, 0x8F65, 0xFFFD, -/* 3DB0 */ 0x93BA, 0xFFFD, 0xFFFD, 0xFA5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x914C, 0xFFFD, 0xE7F2, 0xFFFD, -/* 3DC0 */ 0xE7EC, 0xE7F1, 0xFFFD, 0x96C1, 0xFFFD, 0x92B6, 0xE7F3, 0xE7F0, -/* 3DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DD0 */ 0xFFFD, 0xFFFD, 0xFBCC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DD8 */ 0x914B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DE0 */ 0xFFFD, 0xFFFD, 0xE7F7, 0xFFFD, 0xE7F6, 0xE7F5, 0xFBD2, 0xFFFD, -/* 3DE8 */ 0x964E, 0xFBD6, 0xFFFD, 0xFBD4, 0xFFFD, 0xFBD0, 0xFFFD, 0xFBD1, -/* 3DF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBD5, 0xFFFD, -/* 3DF8 */ 0xFFFD, 0xFFFD, 0x8F9B, 0xFFFD, 0xFFFD, 0xFBCF, 0xFFFD, 0xE7F8, -/* 3E00 */ 0x95DD, 0xFFFD, 0xFFFD, 0x8973, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E08 */ 0x9565, 0x9292, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B98, 0xFA65, -/* 3E10 */ 0xE7FA, 0xFBD9, 0x8D7C, 0xFFFD, 0xFFFD, 0xFBDC, 0xFFFD, 0xFFFD, -/* 3E18 */ 0xFBDE, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E4B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7F9, 0x908D, 0xFFFD, -/* 3E28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x908E, 0xE840, -/* 3E30 */ 0xE842, 0xFFFD, 0xFFFD, 0xFBDD, 0xFBDB, 0xFFFD, 0x8FF9, 0xFBD8, -/* 3E38 */ 0xE841, 0xE843, 0xFFFD, 0xFBD7, 0x8BD1, 0xFFFD, 0x9564, 0xFFFD, -/* 3E40 */ 0xFFFD, 0x8EE0, 0x9842, 0xFFFD, 0xE7FC, 0x8DF6, 0xFFFD, 0xFFFD, -/* 3E48 */ 0x985E, 0xFFFD, 0xFFFD, 0xE845, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E50 */ 0xE844, 0xE846, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E58 */ 0xFFFD, 0xFFFD, 0xE7FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFA5E, 0xFFFD, -/* 3E60 */ 0xFFFD, 0x93E7, 0xFFFD, 0x9374, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E68 */ 0xFFFD, 0xFFFD, 0x92D5, 0xFFFD, 0xE84B, 0xFBE0, 0xFFFD, 0xFFFD, -/* 3E70 */ 0xFFFD, 0x9262, 0xE847, 0xFFFD, 0xFFFD, 0xFFFD, 0xE848, 0x8C4C, -/* 3E78 */ 0xFFFD, 0xE84A, 0xFFFD, 0xFBDF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E80 */ 0x8CAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE849, -/* 3E88 */ 0xFFFD, 0x8FDF, 0x8A99, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E90 */ 0xFFFD, 0xFFFD, 0xE84F, 0xFFFD, 0x8DBD, 0x9199, 0xFFFD, 0xFFFD, -/* 3E98 */ 0x92C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EA0 */ 0xFFFD, 0xFFFD, 0xFBE1, 0xFFFD, 0xFFFD, 0x8A5A, 0xFFFD, 0xFFFD, -/* 3EA8 */ 0xFFFD, 0xFFFD, 0xE84D, 0xE84E, 0x92C1, 0xFFFD, 0xE84C, 0xFFFD, -/* 3EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE850, -/* 3EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EC0 */ 0xFFFD, 0xE856, 0xFFFD, 0xFFFD, 0xFBE2, 0xFFFD, 0xE859, 0xFFFD, -/* 3EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE858, 0x934C, -/* 3ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE851, 0xE852, 0xE855, 0xFFFD, -/* 3ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE857, 0xFBE3, 0xFFFD, 0xFFFD, 0x8BBE, -/* 3EE0 */ 0xFFFD, 0xFFFD, 0xE85A, 0xE854, 0xFFFD, 0xFFFD, 0xE853, 0xFBE4, -/* 3EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EF0 */ 0xFFFD, 0xFFFD, 0xE85E, 0xFFFD, 0xFFFD, 0xFFFD, 0xE85F, 0xFFFD, -/* 3EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE860, -/* 3F00 */ 0xFFFD, 0xFFFD, 0xE85D, 0xE85C, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FE0, -/* 3F08 */ 0x93A8, 0xE85B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F10 */ 0xE864, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F18 */ 0xFFFD, 0xFFFD, 0xE862, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F20 */ 0xFBE5, 0xFFFD, 0xFFFD, 0xFFFD, 0xE863, 0xE861, 0xFFFD, 0x91F6, -/* 3F28 */ 0xFFFD, 0xE865, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F30 */ 0xE866, 0xFFFD, 0xFFFD, 0xE868, 0xFBE6, 0xFFFD, 0xFFFD, 0xFBE7, -/* 3F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F40 */ 0x8AD3, 0xE867, 0x96F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F48 */ 0xFFFD, 0xE873, 0xE869, 0xFFFD, 0xFFFD, 0xE86C, 0xFFFD, 0xE86A, -/* 3F50 */ 0xFFFD, 0xE86B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F58 */ 0xFFFD, 0xE86D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE86F, -/* 3F60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE870, 0xFFFD, 0xE871, 0xFFFD, -/* 3F68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE874, 0xE872, 0xE875, 0xE877, 0xFFFD, -/* 3F70 */ 0xE876, 0x92B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F78 */ 0xFFFD, 0xFFFD, 0x96E5, 0xFFFD, 0xE878, 0x914D, 0xFFFD, 0xFFFD, -/* 3F80 */ 0xFFFD, 0xE879, 0xFFFD, 0x95C2, 0xE87A, 0x8A4A, 0xFFFD, 0xFFFD, -/* 3F88 */ 0xFFFD, 0x895B, 0xFFFD, 0x8AD5, 0xFBE8, 0x8AD4, 0xE87B, 0xFFFD, -/* 3F90 */ 0xE87C, 0xFFFD, 0xE87D, 0xE87E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F98 */ 0xFFFD, 0xFFFD, 0xE880, 0xFFFD, 0x8AD6, 0x8A74, 0x8D7D, 0x94B4, -/* 3FA0 */ 0xFFFD, 0xE882, 0xE881, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE883, -/* 3FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x897B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE886, 0xFFFD, 0xE885, 0xE884, 0xFFFD, -/* 3FB8 */ 0xE887, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE88A, 0xFFFD, 0xFFFD, -/* 3FC0 */ 0xFFFD, 0x88C5, 0xFFFD, 0xFFFD, 0xE888, 0xFFFD, 0xE88C, 0xE88B, -/* 3FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE88E, 0xE88D, -/* 3FD0 */ 0xE88F, 0xFFFD, 0x93AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xE890, 0xFFFD, -/* 3FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE891, 0xE893, 0xFFFD, 0xFFFD, 0xE892, -/* 3FE0 */ 0x958C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE894, 0xFFFD, 0xFFFD, -/* 3FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE895, 0xFFFD, 0x8DE3, 0xFFFD, -/* 3FF0 */ 0xFFFD, 0xFFFD, 0xE896, 0xE897, 0xFFFD, 0xFFFD, 0x9668, 0xFFFD, -/* 3FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x916A, -/* 4000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x88A2, 0x91C9, 0xFFFD, 0xE898, 0xFFFD, -/* 4008 */ 0x958D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE89B, -/* 4010 */ 0xE899, 0x8D7E, 0xFFFD, 0xE89A, 0x8CC0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95C3, -/* 4020 */ 0xE89D, 0xE89F, 0xE89E, 0xE8A0, 0xFFFD, 0xFFFD, 0x8940, 0x9077, -/* 4028 */ 0x8F9C, 0x8AD7, 0xE8A1, 0xFFFD, 0xFFFD, 0xFFFD, 0x9486, 0xFFFD, -/* 4030 */ 0xE8A3, 0xFFFD, 0xFFFD, 0xFFFD, 0x8941, 0xFFFD, 0xE8A2, 0x92C2, -/* 4038 */ 0xFFFD, 0x97CB, 0x93A9, 0xE89C, 0x97A4, 0xFFFD, 0x8CAF, 0xFFFD, -/* 4040 */ 0xFFFD, 0x977A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4048 */ 0xFFFD, 0x8BF7, 0x97B2, 0xFFFD, 0x8C47, 0xFFFD, 0x91E0, 0xE440, -/* 4050 */ 0xFFFD, 0xE8A4, 0x8A4B, 0x908F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4058 */ 0x8A75, 0xE8A6, 0xFFFD, 0xE8A7, 0xE8A5, 0x8C84, 0xFFFD, 0x8DDB, -/* 4060 */ 0x8FE1, 0xFBEB, 0xFFFD, 0xFFFD, 0x8942, 0xFFFD, 0xFFFD, 0x97D7, -/* 4068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8A9, 0xE7AC, 0xFFFD, 0xE8A8, 0xFFFD, -/* 4070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFBEC, 0xE8AC, 0xE8AA, 0xE8AB, 0xFFFD, -/* 4078 */ 0xE8AD, 0xFFFD, 0xE8AE, 0x97EA, 0xE8AF, 0xE8B0, 0xFFFD, 0x90C7, -/* 4080 */ 0x94B9, 0xFFFD, 0xFFFD, 0xFFFD, 0x909D, 0x8AE5, 0xFFFD, 0xFFFD, -/* 4088 */ 0x9759, 0x89EB, 0x8F57, 0x8CD9, 0xFFFD, 0xE8B3, 0xFFFD, 0xE8B2, -/* 4090 */ 0x8E93, 0xE8B4, 0xE8B1, 0xFFFD, 0xFFFD, 0x8E47, 0xFFFD, 0xFFFD, -/* 4098 */ 0xFFFD, 0xE8B8, 0xE5AB, 0xFFFD, 0xFFFD, 0x99D4, 0xFFFD, 0x9097, -/* 40A0 */ 0xE8B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97A3, 0x93EF, -/* 40A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x894A, 0xFFFD, 0x90E1, 0x8EB4, -/* 40B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95B5, 0xFFFD, 0x895F, 0xFFFD, -/* 40B8 */ 0xFFFD, 0xFFFD, 0x97EB, 0x978B, 0xFFFD, 0xE8B9, 0xFFFD, 0x9364, -/* 40C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EF9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40C8 */ 0xE8BA, 0xFFFD, 0xE8BB, 0x906B, 0xE8BC, 0xFFFD, 0x97EC, 0xFFFD, -/* 40D0 */ 0xFFFD, 0xE8B7, 0xE8BE, 0xE8C0, 0xFFFD, 0xE8BF, 0xFFFD, 0xE8BD, -/* 40D8 */ 0xFFFD, 0xFFFD, 0xE8C1, 0xFFFD, 0xFFFD, 0xE8C2, 0xFFFD, 0xFFFD, -/* 40E0 */ 0x919A, 0xFFFD, 0x89E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40E8 */ 0xE8C3, 0xFFFD, 0xFFFD, 0x96B6, 0xFFFD, 0xFFFD, 0xE8C4, 0xFFFD, -/* 40F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8C5, 0xFFFD, 0x9849, 0xFBED, -/* 40F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E50, 0xE8C6, 0xFFFD, 0xFBEE, -/* 4100 */ 0xFFFD, 0xE8C7, 0xE8C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8CC, 0xFBEF, -/* 4108 */ 0xE8C9, 0xFFFD, 0xE8CA, 0xFFFD, 0xE8CB, 0xE8CD, 0xFFFD, 0xFFFD, -/* 4110 */ 0xFFFD, 0xFBF0, 0xFFFD, 0xFBF1, 0xFFFD, 0xFBF2, 0x90C2, 0xFFFD, -/* 4118 */ 0xFFFD, 0xFBF3, 0x96F5, 0xFFFD, 0xFFFD, 0x90C3, 0xFFFD, 0xFFFD, -/* 4120 */ 0xE8CE, 0xFFFD, 0x94F1, 0xFFFD, 0xE8CF, 0xEA72, 0x96CA, 0xFFFD, -/* 4128 */ 0xE8D0, 0xFFFD, 0xE8D1, 0xFFFD, 0xE8D2, 0x8A76, 0xFFFD, 0xE8D4, -/* 4130 */ 0xFFFD, 0x9078, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8D5, 0xFFFD, 0xFFFD, -/* 4138 */ 0x8C43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8D6, 0xE8DA, 0xFFFD, -/* 4140 */ 0xE8D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8D9, 0xFFFD, 0xFFFD, -/* 4148 */ 0x8A93, 0xE8D7, 0xE8DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8DC, -/* 4150 */ 0xFFFD, 0x88C6, 0xFFFD, 0xE8DD, 0xE8DE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FE2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4160 */ 0xE8DF, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B66, 0xFFFD, 0xFFFD, 0xE8E2, -/* 4168 */ 0xFFFD, 0xFFFD, 0xE8E1, 0xFFFD, 0xE8E0, 0xFFFD, 0xFFFD, 0xE691, -/* 4170 */ 0xFFFD, 0x95DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8E3, -/* 4178 */ 0xE8E4, 0xE8E5, 0xFFFD, 0xFFFD, 0xE8E6, 0xFFFD, 0xE8E7, 0xFFFD, -/* 4180 */ 0xFFFD, 0xE8E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4188 */ 0xFFFD, 0x8AD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4190 */ 0xFFFD, 0xFFFD, 0xE8E9, 0xE8EA, 0x9442, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4198 */ 0xE8EC, 0x89B9, 0xFFFD, 0xE8EF, 0xE8EE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41A0 */ 0xFFFD, 0x8943, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BBF, 0xFFFD, 0x95C5, -/* 41A8 */ 0x92B8, 0x8DA0, 0xFFFD, 0x8D80, 0x8F87, 0xFFFD, 0x907B, 0xFFFD, -/* 41B0 */ 0xFFFD, 0xFFFD, 0xE8F1, 0xFFFD, 0xFFFD, 0xE8F0, 0x9761, 0x8AE6, -/* 41B8 */ 0x94D0, 0x93DA, 0xFFFD, 0xFFFD, 0xFFFD, 0x909C, 0x97CC, 0xFFFD, -/* 41C0 */ 0x8C7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8F4, -/* 41C8 */ 0xFFFD, 0xFFFD, 0xE8F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41D0 */ 0xFFFD, 0xFFFD, 0x966A, 0x93AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41D8 */ 0xFFFD, 0xFFFD, 0x896F, 0xFFFD, 0xFFFD, 0xE8F5, 0xE8F2, 0xFFFD, -/* 41E0 */ 0xFFFD, 0x9570, 0x978A, 0xE8F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8F7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41F0 */ 0xFFFD, 0xE8F9, 0x91E8, 0x8A7A, 0x8A7B, 0xE8F8, 0xFFFD, 0xFFFD, -/* 41F8 */ 0xFFFD, 0xFFFD, 0x8AE7, 0x8CB0, 0xFFFD, 0xFBF4, 0x8AE8, 0xFFFD, -/* 4200 */ 0xFFFD, 0x935E, 0xFFFD, 0xFFFD, 0x97DE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFBF5, 0xFFFD, 0x8CDA, 0xFFFD, 0xFFFD, -/* 4210 */ 0xFFFD, 0xE8FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8FB, 0xE8FC, 0xE940, -/* 4218 */ 0xFFFD, 0xE942, 0xE941, 0x9597, 0xFFFD, 0xE943, 0xFFFD, 0xFFFD, -/* 4220 */ 0xFFFD, 0xFFFD, 0xE944, 0xFFFD, 0xE945, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4228 */ 0xFFFD, 0xE946, 0xE948, 0xE947, 0xFFFD, 0xE949, 0x94F2, 0xE3CA, -/* 4230 */ 0xFFFD, 0xFFFD, 0x9048, 0xFFFD, 0xFFFD, 0x8B51, 0xFFFD, 0xFFFD, -/* 4238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE94A, 0xFFFD, 0xE94B, 0xFFFD, -/* 4240 */ 0x99AA, 0x9F5A, 0x94D1, 0xFFFD, 0xFFFD, 0x88F9, 0xFFFD, 0x88B9, -/* 4248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E94, -/* 4250 */ 0x964F, 0x8FFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE94C, 0xFFFD, -/* 4258 */ 0x96DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE94D, 0x977B, 0xFFFD, 0x8961, -/* 4260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8E60, 0xFFFD, 0xE94E, 0x89EC, 0xE94F, -/* 4268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE950, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4270 */ 0xE952, 0xE953, 0xFFFD, 0xE955, 0xE951, 0xFFFD, 0xFFFD, 0xE954, -/* 4278 */ 0xFFFD, 0xFFFD, 0xFBF8, 0x8AD9, 0xFFFD, 0xFFFD, 0xFFFD, 0xE956, -/* 4280 */ 0xFFFD, 0xE957, 0xE958, 0xE959, 0xFFFD, 0xFFFD, 0xFFFD, 0xE95A, -/* 4288 */ 0xFFFD, 0xFFFD, 0xE95C, 0xFFFD, 0xFFFD, 0xFFFD, 0xE95B, 0xFFFD, -/* 4290 */ 0xE95E, 0xE961, 0xFFFD, 0xFFFD, 0xFFFD, 0xE95D, 0xE95F, 0xE960, -/* 4298 */ 0xFFFD, 0xFFFD, 0xE962, 0xFFFD, 0x8BC0, 0x8EF1, 0xE963, 0xE964, -/* 42A0 */ 0x8D81, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBFA, 0xFFFD, 0xFFFD, -/* 42A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE965, 0xFFFD, 0xFFFD, 0x8A5D, -/* 42B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x946E, 0xE966, 0xE967, 0xFFFD, 0xFFFD, -/* 42B8 */ 0xFFFD, 0xFFFD, 0x9279, 0x93E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE968, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42C8 */ 0x949D, 0xFFFD, 0xFFFD, 0x91CA, 0x8977, 0x8BEC, 0xFFFD, 0x8BED, -/* 42D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9293, -/* 42D8 */ 0xE96D, 0x8BEE, 0xFFFD, 0xFFFD, 0x89ED, 0xFFFD, 0xFFFD, 0xE96C, -/* 42E0 */ 0xFFFD, 0xFFFD, 0xE96A, 0xFFFD, 0xE96B, 0xFFFD, 0xE969, 0xFFFD, -/* 42E8 */ 0xFFFD, 0xE977, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE96E, 0xE96F, 0xFFFD, 0xFFFD, -/* 42F8 */ 0xE970, 0xE971, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE973, -/* 4300 */ 0xFFFD, 0xFFFD, 0xE972, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F78, 0xFFFD, -/* 4308 */ 0xE974, 0xFFFD, 0xFFFD, 0xFFFD, 0xE976, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B52, 0xE975, 0xFFFD, -/* 4318 */ 0xFFFD, 0x919B, 0x8CB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4320 */ 0xE978, 0x91CB, 0xFFFD, 0xFFFD, 0xE979, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4328 */ 0xFFFD, 0x93AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4330 */ 0xE97A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE980, -/* 4338 */ 0xFFFD, 0xE97D, 0xFFFD, 0xE97C, 0xE97E, 0xFFFD, 0xE97B, 0xFFFD, -/* 4340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE982, 0xFBFB, -/* 4348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE981, 0xFFFD, -/* 4350 */ 0xE984, 0xFFFD, 0xFFFD, 0x8BC1, 0xE983, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4358 */ 0xE985, 0xFFFD, 0xFFFD, 0xE986, 0xFFFD, 0xE988, 0xE987, 0xFFFD, -/* 4360 */ 0xFFFD, 0xFFFD, 0xE989, 0xE98B, 0xE98A, 0x8D9C, 0xFFFD, 0xFFFD, -/* 4368 */ 0xFFFD, 0xFFFD, 0xE98C, 0xFFFD, 0xFFFD, 0xE98D, 0xFFFD, 0xFFFD, -/* 4370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A5B, 0xFFFD, 0xFFFD, -/* 4378 */ 0xFFFD, 0xE98E, 0xFFFD, 0xFFFD, 0xFFFD, 0xE98F, 0xFFFD, 0xFFFD, -/* 4380 */ 0xFFFD, 0x9091, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE990, 0xFFFD, 0xE991, 0xFFFD, -/* 4390 */ 0xE992, 0xE993, 0xFFFD, 0xFFFD, 0xFFFD, 0x8D82, 0xFBFC, 0xFFFD, -/* 4398 */ 0xFFFD, 0xFC40, 0xFFFD, 0xE994, 0xE995, 0xFFFD, 0xFFFD, 0xE996, -/* 43A0 */ 0xE997, 0xFFFD, 0xFFFD, 0xE998, 0xFFFD, 0xFFFD, 0xFFFD, 0x94AF, -/* 43A8 */ 0xE99A, 0xFFFD, 0x9545, 0xE99B, 0xE999, 0xFFFD, 0xE99D, 0xFFFD, -/* 43B0 */ 0xFFFD, 0xE99C, 0xFFFD, 0xFFFD, 0xE99E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43B8 */ 0xE99F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9A0, 0xE9A1, 0xFFFD, 0xE9A2, 0xFFFD, -/* 43C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9A3, 0xFFFD, 0xFFFD, 0xE9A4, 0xE9A5, -/* 43D0 */ 0xFFFD, 0xE9A6, 0xFFFD, 0xE9A7, 0xE9A8, 0xE9A9, 0xE9AA, 0xFFFD, -/* 43D8 */ 0xFFFD, 0xFFFD, 0xE9AB, 0xE9AC, 0xFFFD, 0x9F54, 0xE9AD, 0xFFFD, -/* 43E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2F6, -/* 43E8 */ 0x8B53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A40, 0x8DB0, 0xE9AF, -/* 43F0 */ 0xE9AE, 0x96A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43F8 */ 0xFFFD, 0xE9B1, 0xE9B2, 0xE9B0, 0xFFFD, 0xE9B3, 0xFFFD, 0xFFFD, -/* 4400 */ 0x9682, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9B4, 0xFFFD, 0x8B9B, 0x9844, -/* 4408 */ 0xFFFD, 0xFFFD, 0xFC42, 0xFFFD, 0xE9B5, 0xFC41, 0xE9B7, 0xFFFD, -/* 4410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4418 */ 0xFFFD, 0x88BC, 0xFC43, 0xFFFD, 0xE9B8, 0x95A9, 0xE9B6, 0xFFFD, -/* 4420 */ 0xFFFD, 0xE9B9, 0xE9BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4428 */ 0xFFFD, 0xFFFD, 0xE9BB, 0xE9BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4430 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9BD, 0xFFFD, 0x968E, 0x8E4C, 0xFFFD, -/* 4438 */ 0x8DF8, 0x914E, 0xFFFD, 0xFFFD, 0xFC44, 0xFFFD, 0xFFFD, 0xE9BE, -/* 4440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9C1, 0xFFFD, 0xFC45, 0xFFFD, -/* 4448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4450 */ 0xFFFD, 0xE9C2, 0xFFFD, 0xFFFD, 0x8CEF, 0xE9C0, 0xFFFD, 0xFFFD, -/* 4458 */ 0xFFFD, 0xFFFD, 0xE9C3, 0xFFFD, 0xE9C4, 0xE9C5, 0xFFFD, 0xE9C9, -/* 4460 */ 0xFFFD, 0x8E49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91E2, 0xFFFD, -/* 4468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9CA, 0xE9C7, 0xE9C6, 0xE9C8, -/* 4470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8C7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4478 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9CE, 0xE9CD, 0xE9CC, 0xFFFD, 0xFFFD, -/* 4480 */ 0x88B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFC46, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9D8, -/* 4490 */ 0xFFFD, 0xE9D4, 0xFFFD, 0xE9D5, 0xE9D1, 0xE9D7, 0xFFFD, 0xE9D3, -/* 4498 */ 0x8A82, 0xFFFD, 0xFFFD, 0x986B, 0xFFFD, 0xE9D6, 0xE9D2, 0xE9D0, -/* 44A0 */ 0xE9CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9DA, 0xFFFD, -/* 44A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9DD, 0xFFFD, 0xFFFD, 0xE9DC, -/* 44B0 */ 0xE9DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44B8 */ 0x9568, 0xE9D9, 0x88F1, 0xE9DE, 0xFFFD, 0xE9E0, 0xFFFD, 0xFFFD, -/* 44C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A8F, 0xE9CB, 0x8956, 0xFFFD, -/* 44C8 */ 0xFFFD, 0xE9E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44D0 */ 0xFFFD, 0xE9E1, 0xE9DF, 0x924C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9690, 0xFFFD, 0xFFFD, -/* 44E0 */ 0xFFFD, 0xFFFD, 0x97D8, 0xFFFD, 0xFFFD, 0xE9E3, 0xFFFD, 0xFFFD, -/* 44E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44F0 */ 0xFFFD, 0xFFFD, 0xE9E5, 0xE9E6, 0xFFFD, 0xE9E7, 0x92B9, 0xFFFD, -/* 44F8 */ 0xE9E8, 0xFFFD, 0x94B5, 0xFFFD, 0xE9ED, 0xE9E9, 0xFFFD, 0xFFFD, -/* 4500 */ 0xFFFD, 0xE9EA, 0xFFFD, 0xFFFD, 0x9650, 0x96C2, 0xFFFD, 0x93CE, -/* 4508 */ 0xE9EE, 0xFFFD, 0xFFFD, 0xE9EF, 0x93BC, 0xE9EC, 0xE9EB, 0xFFFD, -/* 4510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x89A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9F7, -/* 4518 */ 0xFFFD, 0xFFFD, 0xE9F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4520 */ 0x8995, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9F4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4528 */ 0xE9F3, 0xFFFD, 0xFFFD, 0xE9F1, 0xFFFD, 0x8A9B, 0xFFFD, 0xE9F0, -/* 4530 */ 0x8EB0, 0x89A7, 0x8D83, 0xFFFD, 0xFFFD, 0xE9FA, 0xE9F9, 0xFFFD, -/* 4538 */ 0xE9F8, 0xFFFD, 0xFFFD, 0xE9F5, 0xFFFD, 0xE9FB, 0xFFFD, 0xE9FC, -/* 4540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA44, -/* 4548 */ 0xEA43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4550 */ 0xEA45, 0xFFFD, 0xFFFD, 0x894C, 0xEA40, 0xEA41, 0xFFFD, 0x8D94, -/* 4558 */ 0x96B7, 0xFFFD, 0xFFFD, 0xEA42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4560 */ 0xFFFD, 0xFFFD, 0xFC48, 0x9651, 0xFFFD, 0xFFFD, 0xEA4A, 0xFC47, -/* 4568 */ 0xFFFD, 0xEA46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4570 */ 0xFFFD, 0xEA4B, 0xEA48, 0xFFFD, 0xEA47, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4578 */ 0xFFFD, 0xFFFD, 0x8C7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA4C, 0xFFFD, 0xFFFD, -/* 4588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA4D, -/* 4590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA4E, 0xFFFD, 0xEA49, 0xFFFD, -/* 4598 */ 0xFFFD, 0xFFFD, 0xE9F2, 0xFFFD, 0xFFFD, 0xEA4F, 0xFFFD, 0x92DF, -/* 45A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEA53, 0xFFFD, 0xEA54, 0xEA52, 0xFFFD, -/* 45A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA51, 0xEA57, 0xFFFD, 0xEA50, -/* 45B0 */ 0xFFFD, 0xEA55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 45B8 */ 0xFFFD, 0xFFFD, 0xEA56, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA59, 0xFFFD, -/* 45C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA58, 0xEA5B, 0xFFFD, 0xFFFD, -/* 45C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA5C, 0xFFFD, 0xEA5D, 0xFFFD, -/* 45D0 */ 0xFFFD, 0x9868, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA5A, -/* 45D8 */ 0x91E9, 0x8DEB, 0xFFFD, 0xFFFD, 0xEA5E, 0xFC4A, 0xEA5F, 0xEA60, -/* 45E0 */ 0xFFFD, 0xFFFD, 0xEA61, 0xEA62, 0xFFFD, 0xFFFD, 0x8CB2, 0xEA63, -/* 45E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEA64, 0xFFFD, 0x8EAD, 0xFFFD, 0xEA65, -/* 45F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA66, 0xFFFD, -/* 45F8 */ 0xFFFD, 0xEA67, 0xEA68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA6B, -/* 4600 */ 0xEA69, 0x985B, 0xFFFD, 0xEA6A, 0xFFFD, 0x97ED, 0xFFFD, 0xFFFD, -/* 4608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEA6C, 0xFFFD, 0x97D9, 0xFFFD, 0xFFFD, -/* 4610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEA6D, 0x949E, 0xFFFD, 0xFFFD, 0xEA6E, -/* 4618 */ 0xEA70, 0xFFFD, 0xFFFD, 0xEA71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA6F, 0x8D8D, -/* 4628 */ 0x96CB, 0x9683, 0x9BF5, 0xFFFD, 0x9F80, 0x969B, 0xFFFD, 0xFFFD, -/* 4630 */ 0xFFFD, 0xFFFD, 0x89A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4638 */ 0xFFFD, 0xFFFD, 0xEA73, 0x8B6F, 0xEA74, 0xEA75, 0xEA76, 0xFC4B, -/* 4640 */ 0x8D95, 0xFFFD, 0xEA77, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0D2, 0x96D9, -/* 4648 */ 0xFFFD, 0x91E1, 0xEA78, 0xEA7A, 0xEA79, 0xFFFD, 0xEA7B, 0xFFFD, -/* 4650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEA7C, 0xFFFD, 0xFFFD, 0xEA7D, 0xFFFD, -/* 4658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA7E, 0xFFFD, 0xFFFD, -/* 4660 */ 0xFFFD, 0xFFFD, 0xEA80, 0xFFFD, 0xEA81, 0xEA82, 0xFFFD, 0xEA83, -/* 4668 */ 0xFFFD, 0xEA84, 0xEA85, 0xEA86, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA87, 0xEA88, 0xFFFD, -/* 4678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9343, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4680 */ 0xFFFD, 0x8CDB, 0xFFFD, 0xEA8A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x916C, 0xEA8B, -/* 4690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4698 */ 0xFFFD, 0xFFFD, 0xEA8C, 0x9540, 0xFFFD, 0xFFFD, 0xEA8D, 0xEA8E, -/* 46A0 */ 0xE256, 0xFFFD, 0xFFFD, 0xE6D8, 0xE8EB, 0xFFFD, 0xFFFD, 0xEA8F, -/* 46A8 */ 0xFFFD, 0xEA90, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA92, 0xEA93, 0xEA94, 0x97EE, -/* 46B8 */ 0xEA91, 0xFFFD, 0xFFFD, 0xEA95, 0xEA96, 0xFFFD, 0xFFFD, 0xEA98, -/* 46C0 */ 0xFFFD, 0xEA97, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA9A, -/* 46C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEA9B, 0xEA99, 0x97B4, 0xFFFD, 0xFFFD, -/* 46D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA9C, 0xFFFD, 0xFFFD, -/* 46D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA9D, 0xE273, 0xFFFD, 0xFFFD, -/* 46E0 */ 0xEA9E, 0xFA90, 0xFA9B, 0xFA9C, 0xFAB1, 0xFAD8, 0xFAE8, 0xFAEA, -/* 46E8 */ 0xFB58, 0xFB5E, 0xFB75, 0xFB7D, 0xFB7E, 0xFB80, 0xFB82, 0xFB86, -/* 46F0 */ 0xFB89, 0xFB92, 0xFB9D, 0xFB9F, 0xFBA0, 0xFBA9, 0xFBB1, 0xFBB3, -/* 46F8 */ 0xFBB4, 0xFBB7, 0xFBD3, 0xFBDA, 0xFBEA, 0xFBF6, 0xFBF7, 0xFBF9, -/* 4700 */ 0xFC49, 0x8149, 0xFA57, 0x8194, 0x8190, 0x8193, 0x8195, 0xFA56, -/* 4708 */ 0x8169, 0x816A, 0x8196, 0x817B, 0x8143, 0x817C, 0x8144, 0x815E, -/* 4710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4718 */ 0xFFFD, 0xFFFD, 0x8146, 0x8147, 0x8183, 0x8181, 0x8184, 0x8148, -/* 4720 */ 0x8197, 0x816D, 0x815F, 0x816E, 0x814F, 0x8151, 0x814D, 0x816F, -/* 4728 */ 0x8162, 0x8170, 0x8160, 0x8191, 0x8192, 0xFA54, 0x8150, 0xFA55, -/* 4730 */ 0x818F, -/* End of table Total Length = 0x49FD * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp936.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp936.uf deleted file mode 100644 index 0b72308e243..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp936.uf +++ /dev/null @@ -1,11005 +0,0 @@ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = A6A1 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = A6B2 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = A6C1 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = A6D2 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0410 - srcEnd = 0415 - destBegin = A7A1 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0416 - srcEnd = 042F - destBegin = A7A8 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0430 - srcEnd = 0435 - destBegin = A7D1 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 0436 - srcEnd = 044F - destBegin = A7D8 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2160 - srcEnd = 216B - destBegin = A2F1 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2170 - srcEnd = 2179 - destBegin = A2A1 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2460 - srcEnd = 2469 - destBegin = A2D9 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 2474 - srcEnd = 2487 - destBegin = A2C5 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 2488 - srcEnd = 249B - destBegin = A2B1 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 2500 - srcEnd = 254B - destBegin = A9A4 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 2550 - srcEnd = 2573 - destBegin = A854 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 2581 - srcEnd = 2587 - destBegin = A878 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 2588 - srcEnd = 258F - destBegin = A880 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 3008 - srcEnd = 300F - destBegin = A1B4 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 3021 - srcEnd = 3029 - destBegin = A940 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = A4A1 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 30A1 - srcEnd = 30F6 - destBegin = A5A1 -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 3105 - srcEnd = 3129 - destBegin = A8C5 -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 3220 - srcEnd = 3229 - destBegin = A2E5 -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 4E6A - srcEnd = 4E6F - destBegin = 8165 -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 4E74 - srcEnd = 4E7D - destBegin = 816C -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = 4E7F - srcEnd = 4E85 - destBegin = 8176 -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = 4F02 - srcEnd = 4F08 - destBegin = 81AC -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = 4F47 - srcEnd = 4F4C - destBegin = 81D0 -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = 4FB6 - srcEnd = 4FBE - destBegin = 8248 -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = 4FFF - srcEnd = 500A - destBegin = 8273 -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = 502F - srcEnd = 5039 - destBegin = 8291 -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = 505D - srcEnd = 5064 - destBegin = 82B3 -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = 5066 - srcEnd = 506B - destBegin = 82BB -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = 506D - srcEnd = 5075 - destBegin = 82C1 -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = 508E - srcEnd = 50A2 - destBegin = 82D9 -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = 50B3 - srcEnd = 50B9 - destBegin = 82F7 -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = 50BD - srcEnd = 50CE - destBegin = 8340 -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = 50D0 - srcEnd = 50D5 - destBegin = 8352 -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = 50DB - srcEnd = 50E5 - destBegin = 835B -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = 50FC - srcEnd = 5105 - destBegin = 8374 -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = 510C - srcEnd = 5111 - destBegin = 8382 -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = 5113 - srcEnd = 5120 - destBegin = 8388 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = 5122 - srcEnd = 513E - destBegin = 8396 -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = 51D2 - srcEnd = 51D7 - destBegin = 83F9 -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = 51E5 - srcEnd = 51EA - destBegin = 8448 -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = 5244 - srcEnd = 5249 - destBegin = 8471 -End of Item 002E - -Begin of Item 002F - Format 0 - srcBegin = 5273 - srcEnd = 527C - destBegin = 8491 -End of Item 002F - -Begin of Item 0030 - Format 0 - srcBegin = 5289 - srcEnd = 528F - destBegin = 84A2 -End of Item 0030 - -Begin of Item 0031 - Format 0 - srcBegin = 5294 - srcEnd = 529A - destBegin = 84AB -End of Item 0031 - -Begin of Item 0032 - Format 0 - srcBegin = 52B4 - srcEnd = 52BD - destBegin = 84BA -End of Item 0032 - -Begin of Item 0033 - Format 0 - srcBegin = 52D9 - srcEnd = 52DE - destBegin = 84D5 -End of Item 0033 - -Begin of Item 0034 - Format 0 - srcBegin = 52E5 - srcEnd = 52EF - destBegin = 84DF -End of Item 0034 - -Begin of Item 0035 - Format 0 - srcBegin = 52F1 - srcEnd = 52F8 - destBegin = 84EA -End of Item 0035 - -Begin of Item 0036 - Format 0 - srcBegin = 532F - srcEnd = 5338 - destBegin = 8552 -End of Item 0036 - -Begin of Item 0037 - Format 0 - srcBegin = 53AF - srcEnd = 53B5 - destBegin = 8593 -End of Item 0037 - -Begin of Item 0038 - Format 0 - srcBegin = 5469 - srcEnd = 5470 - destBegin = 85E1 -End of Item 0038 - -Begin of Item 0039 - Format 0 - srcBegin = 54F4 - srcEnd = 54F9 - destBegin = 865D -End of Item 0039 - -Begin of Item 003A - Format 0 - srcBegin = 5515 - srcEnd = 551A - destBegin = 8672 -End of Item 003A - -Begin of Item 003B - Format 0 - srcBegin = 556F - srcEnd = 5574 - destBegin = 86A9 -End of Item 003B - -Begin of Item 003C - Format 0 - srcBegin = 55A0 - srcEnd = 55A6 - destBegin = 86C1 -End of Item 003C - -Begin of Item 003D - Format 0 - srcBegin = 55A8 - srcEnd = 55B0 - destBegin = 86C8 -End of Item 003D - -Begin of Item 003E - Format 0 - srcBegin = 5610 - srcEnd = 5617 - destBegin = 8745 -End of Item 003E - -Begin of Item 003F - Format 0 - srcBegin = 5640 - srcEnd = 564B - destBegin = 8765 -End of Item 003F - -Begin of Item 0040 - Format 0 - srcBegin = 567D - srcEnd = 5684 - destBegin = 8790 -End of Item 0040 - -Begin of Item 0041 - Format 0 - srcBegin = 5687 - srcEnd = 568D - destBegin = 8798 -End of Item 0041 - -Begin of Item 0042 - Format 0 - srcBegin = 5694 - srcEnd = 56A2 - destBegin = 87A2 -End of Item 0042 - -Begin of Item 0043 - Format 0 - srcBegin = 56A4 - srcEnd = 56AE - destBegin = 87B1 -End of Item 0043 - -Begin of Item 0044 - Format 0 - srcBegin = 56B0 - srcEnd = 56B6 - destBegin = 87BC -End of Item 0044 - -Begin of Item 0045 - Format 0 - srcBegin = 56BD - srcEnd = 56C9 - destBegin = 87C7 -End of Item 0045 - -Begin of Item 0046 - Format 0 - srcBegin = 56CB - srcEnd = 56D3 - destBegin = 87D4 -End of Item 0046 - -Begin of Item 0047 - Format 0 - srcBegin = 56E5 - srcEnd = 56EA - destBegin = 87E3 -End of Item 0047 - -Begin of Item 0048 - Format 0 - srcBegin = 570B - srcEnd = 5711 - destBegin = 87F8 -End of Item 0048 - -Begin of Item 0049 - Format 0 - srcBegin = 5712 - srcEnd = 571B - destBegin = 8840 -End of Item 0049 - -Begin of Item 004A - Format 0 - srcBegin = 5794 - srcEnd = 579A - destBegin = 888A -End of Item 004A - -Begin of Item 004B - Format 0 - srcBegin = 57B9 - srcEnd = 57C1 - destBegin = 88A0 -End of Item 004B - -Begin of Item 004C - Format 0 - srcBegin = 57C4 - srcEnd = 57CA - destBegin = 88A9 -End of Item 004C - -Begin of Item 004D - Format 0 - srcBegin = 57E5 - srcEnd = 57EC - destBegin = 88BD -End of Item 004D - -Begin of Item 004E - Format 0 - srcBegin = 5836 - srcEnd = 583D - destBegin = 88F7 -End of Item 004E - -Begin of Item 004F - Format 0 - srcBegin = 583E - srcEnd = 5843 - destBegin = 8940 -End of Item 004F - -Begin of Item 0050 - Format 0 - srcBegin = 5845 - srcEnd = 584B - destBegin = 8946 -End of Item 0050 - -Begin of Item 0051 - Format 0 - srcBegin = 585F - srcEnd = 5864 - destBegin = 895A -End of Item 0051 - -Begin of Item 0052 - Format 0 - srcBegin = 586D - srcEnd = 587D - destBegin = 8965 -End of Item 0052 - -Begin of Item 0053 - Format 0 - srcBegin = 58A0 - srcEnd = 58A7 - destBegin = 898D -End of Item 0053 - -Begin of Item 0054 - Format 0 - srcBegin = 58AA - srcEnd = 58BB - destBegin = 8995 -End of Item 0054 - -Begin of Item 0055 - Format 0 - srcBegin = 58C6 - srcEnd = 58D0 - destBegin = 89AE -End of Item 0055 - -Begin of Item 0056 - Format 0 - srcBegin = 58D6 - srcEnd = 58E3 - destBegin = 89BC -End of Item 0056 - -Begin of Item 0057 - Format 0 - srcBegin = 58E5 - srcEnd = 58EA - destBegin = 89CA -End of Item 0057 - -Begin of Item 0058 - Format 0 - srcBegin = 58FA - srcEnd = 5901 - destBegin = 89D8 -End of Item 0058 - -Begin of Item 0059 - Format 0 - srcBegin = 5966 - srcEnd = 5972 - destBegin = 8A56 -End of Item 0059 - -Begin of Item 005A - Format 0 - srcBegin = 59B3 - srcEnd = 59B8 - destBegin = 8A85 -End of Item 005A - -Begin of Item 005B - Format 0 - srcBegin = 59BF - srcEnd = 59C5 - destBegin = 8A8E -End of Item 005B - -Begin of Item 005C - Format 0 - srcBegin = 59ED - srcEnd = 59F8 - destBegin = 8AAB -End of Item 005C - -Begin of Item 005D - Format 0 - srcBegin = 5A2A - srcEnd = 5A30 - destBegin = 8AD3 -End of Item 005D - -Begin of Item 005E - Format 0 - srcBegin = 5A4B - srcEnd = 5A54 - destBegin = 8AEB -End of Item 005E - -Begin of Item 005F - Format 0 - srcBegin = 5A5B - srcEnd = 5A60 - destBegin = 8AF9 -End of Item 005F - -Begin of Item 0060 - Format 0 - srcBegin = 5A6B - srcEnd = 5A73 - destBegin = 8B47 -End of Item 0060 - -Begin of Item 0061 - Format 0 - srcBegin = 5A80 - srcEnd = 5A91 - destBegin = 8B56 -End of Item 0061 - -Begin of Item 0062 - Format 0 - srcBegin = 5A93 - srcEnd = 5A99 - destBegin = 8B68 -End of Item 0062 - -Begin of Item 0063 - Format 0 - srcBegin = 5A9C - srcEnd = 5AA9 - destBegin = 8B6F -End of Item 0063 - -Begin of Item 0064 - Format 0 - srcBegin = 5AC3 - srcEnd = 5AC8 - destBegin = 8B8F -End of Item 0064 - -Begin of Item 0065 - Format 0 - srcBegin = 5AF2 - srcEnd = 5B08 - destBegin = 8BB0 -End of Item 0065 - -Begin of Item 0066 - Format 0 - srcBegin = 5B0A - srcEnd = 5B15 - destBegin = 8BC7 -End of Item 0066 - -Begin of Item 0067 - Format 0 - srcBegin = 5B18 - srcEnd = 5B31 - destBegin = 8BD3 -End of Item 0067 - -Begin of Item 0068 - Format 0 - srcBegin = 5B38 - srcEnd = 5B3F - destBegin = 8BF0 -End of Item 0068 - -Begin of Item 0069 - Format 0 - srcBegin = 5B41 - srcEnd = 5B47 - destBegin = 8BF8 -End of Item 0069 - -Begin of Item 006A - Format 0 - srcBegin = 5B48 - srcEnd = 5B4F - destBegin = 8C40 -End of Item 006A - -Begin of Item 006B - Format 0 - srcBegin = 5BD4 - srcEnd = 5BDC - destBegin = 8C81 -End of Item 006B - -Begin of Item 006C - Format 0 - srcBegin = 5BF1 - srcEnd = 5BF7 - destBegin = 8C95 -End of Item 006C - -Begin of Item 006D - Format 0 - srcBegin = 5C67 - srcEnd = 5C6D - destBegin = 8CD4 -End of Item 006D - -Begin of Item 006E - Format 0 - srcBegin = 5C72 - srcEnd = 5C78 - destBegin = 8CDC -End of Item 006E - -Begin of Item 006F - Format 0 - srcBegin = 5CC5 - srcEnd = 5CCA - destBegin = 8D4F -End of Item 006F - -Begin of Item 0070 - Format 0 - srcBegin = 5CCC - srcEnd = 5CD1 - destBegin = 8D55 -End of Item 0070 - -Begin of Item 0071 - Format 0 - srcBegin = 5CD3 - srcEnd = 5CD8 - destBegin = 8D5B -End of Item 0071 - -Begin of Item 0072 - Format 0 - srcBegin = 5CDA - srcEnd = 5CE0 - destBegin = 8D61 -End of Item 0072 - -Begin of Item 0073 - Format 0 - srcBegin = 5CF1 - srcEnd = 5CFA - destBegin = 8D70 -End of Item 0073 - -Begin of Item 0074 - Format 0 - srcBegin = 5D08 - srcEnd = 5D0D - destBegin = 8D83 -End of Item 0074 - -Begin of Item 0075 - Format 0 - srcBegin = 5D35 - srcEnd = 5D3C - destBegin = 8DA4 -End of Item 0075 - -Begin of Item 0076 - Format 0 - srcBegin = 5D3F - srcEnd = 5D46 - destBegin = 8DAC -End of Item 0076 - -Begin of Item 0077 - Format 0 - srcBegin = 5D4D - srcEnd = 5D57 - destBegin = 8DB6 -End of Item 0077 - -Begin of Item 0078 - Format 0 - srcBegin = 5D5E - srcEnd = 5D68 - destBegin = 8DC4 -End of Item 0078 - -Begin of Item 0079 - Format 0 - srcBegin = 5D75 - srcEnd = 5D81 - destBegin = 8DD6 -End of Item 0079 - -Begin of Item 007A - Format 0 - srcBegin = 5D83 - srcEnd = 5D98 - destBegin = 8DE3 -End of Item 007A - -Begin of Item 007B - Format 0 - srcBegin = 5DA1 - srcEnd = 5DB6 - destBegin = 8E40 -End of Item 007B - -Begin of Item 007C - Format 0 - srcBegin = 5DB8 - srcEnd = 5DC4 - destBegin = 8E56 -End of Item 007C - -Begin of Item 007D - Format 0 - srcBegin = 5DC6 - srcEnd = 5DCC - destBegin = 8E63 -End of Item 007D - -Begin of Item 007E - Format 0 - srcBegin = 5DCE - srcEnd = 5DDA - destBegin = 8E6A -End of Item 007E - -Begin of Item 007F - Format 0 - srcBegin = 5E1E - srcEnd = 5E25 - destBegin = 8E94 -End of Item 007F - -Begin of Item 0080 - Format 0 - srcBegin = 5E46 - srcEnd = 5E4B - destBegin = 8EAF -End of Item 0080 - -Begin of Item 0081 - Format 0 - srcBegin = 5E4D - srcEnd = 5E53 - destBegin = 8EB5 -End of Item 0081 - -Begin of Item 0082 - Format 0 - srcBegin = 5E63 - srcEnd = 5E71 - destBegin = 8EC5 -End of Item 0082 - -Begin of Item 0083 - Format 0 - srcBegin = 5EBF - srcEnd = 5EC5 - destBegin = 8EF8 -End of Item 0083 - -Begin of Item 0084 - Format 0 - srcBegin = 5ECB - srcEnd = 5ED0 - destBegin = 8F43 -End of Item 0084 - -Begin of Item 0085 - Format 0 - srcBegin = 5EDC - srcEnd = 5EE7 - destBegin = 8F4F -End of Item 0085 - -Begin of Item 0086 - Format 0 - srcBegin = 5EEB - srcEnd = 5EF3 - destBegin = 8F5C -End of Item 0086 - -Begin of Item 0087 - Format 0 - srcBegin = 5F32 - srcEnd = 5F38 - destBegin = 8F85 -End of Item 0087 - -Begin of Item 0088 - Format 0 - srcBegin = 5F41 - srcEnd = 5F4F - destBegin = 8F90 -End of Item 0088 - -Begin of Item 0089 - Format 0 - srcBegin = 5FA2 - srcEnd = 5FA7 - destBegin = 8FC7 -End of Item 0089 - -Begin of Item 008A - Format 0 - srcBegin = 5FAF - srcEnd = 5FB4 - destBegin = 8FD0 -End of Item 008A - -Begin of Item 008B - Format 0 - srcBegin = 6044 - srcEnd = 604A - destBegin = 905F -End of Item 008B - -Begin of Item 008C - Format 0 - srcBegin = 60BD - srcEnd = 60C4 - destBegin = 90A2 -End of Item 008C - -Begin of Item 008D - Format 0 - srcBegin = 612C - srcEnd = 613E - destBegin = 90E5 -End of Item 008D - -Begin of Item 008E - Format 0 - srcBegin = 6140 - srcEnd = 6146 - destBegin = 90F8 -End of Item 008E - -Begin of Item 008F - Format 0 - srcBegin = 6156 - srcEnd = 615C - destBegin = 9149 -End of Item 008F - -Begin of Item 0090 - Format 0 - srcBegin = 6169 - srcEnd = 616F - destBegin = 9158 -End of Item 0090 - -Begin of Item 0091 - Format 0 - srcBegin = 6178 - srcEnd = 618A - destBegin = 9164 -End of Item 0091 - -Begin of Item 0092 - Format 0 - srcBegin = 6196 - srcEnd = 619C - destBegin = 9180 -End of Item 0092 - -Begin of Item 0093 - Format 0 - srcBegin = 619E - srcEnd = 61A6 - destBegin = 9187 -End of Item 0093 - -Begin of Item 0094 - Format 0 - srcBegin = 61AD - srcEnd = 61B6 - destBegin = 9192 -End of Item 0094 - -Begin of Item 0095 - Format 0 - srcBegin = 61B8 - srcEnd = 61BD - destBegin = 919C -End of Item 0095 - -Begin of Item 0096 - Format 0 - srcBegin = 61D5 - srcEnd = 61E5 - destBegin = 91B1 -End of Item 0096 - -Begin of Item 0097 - Format 0 - srcBegin = 61E7 - srcEnd = 61F4 - destBegin = 91C2 -End of Item 0097 - -Begin of Item 0098 - Format 0 - srcBegin = 61F6 - srcEnd = 61FE - destBegin = 91D0 -End of Item 0098 - -Begin of Item 0099 - Format 0 - srcBegin = 6200 - srcEnd = 6205 - destBegin = 91D9 -End of Item 0099 - -Begin of Item 009A - Format 0 - srcBegin = 625C - srcEnd = 6262 - destBegin = 9247 -End of Item 009A - -Begin of Item 009B - Format 0 - srcBegin = 628B - srcEnd = 6290 - destBegin = 9261 -End of Item 009B - -Begin of Item 009C - Format 0 - srcBegin = 6333 - srcEnd = 6338 - destBegin = 92AE -End of Item 009C - -Begin of Item 009D - Format 0 - srcBegin = 6356 - srcEnd = 635D - destBegin = 92C2 -End of Item 009D - -Begin of Item 009E - Format 0 - srcBegin = 6399 - srcEnd = 639F - destBegin = 92EA -End of Item 009E - -Begin of Item 009F - Format 0 - srcBegin = 63D7 - srcEnd = 63DD - destBegin = 934D -End of Item 009F - -Begin of Item 00A0 - Format 0 - srcBegin = 6415 - srcEnd = 641A - destBegin = 9374 -End of Item 00A0 - -Begin of Item 00A1 - Format 0 - srcBegin = 642E - srcEnd = 6433 - destBegin = 9385 -End of Item 00A1 - -Begin of Item 00A2 - Format 0 - srcBegin = 644B - srcEnd = 6451 - destBegin = 9397 -End of Item 00A2 - -Begin of Item 00A3 - Format 0 - srcBegin = 645F - srcEnd = 6466 - destBegin = 93A7 -End of Item 00A3 - -Begin of Item 00A4 - Format 0 - srcBegin = 646E - srcEnd = 6477 - destBegin = 93B3 -End of Item 00A4 - -Begin of Item 00A5 - Format 0 - srcBegin = 647B - srcEnd = 6481 - destBegin = 93BD -End of Item 00A5 - -Begin of Item 00A6 - Format 0 - srcBegin = 6488 - srcEnd = 6490 - destBegin = 93C6 -End of Item 00A6 - -Begin of Item 00A7 - Format 0 - srcBegin = 64C6 - srcEnd = 64CC - destBegin = 93F0 -End of Item 00A7 - -Begin of Item 00A8 - Format 0 - srcBegin = 64E7 - srcEnd = 64FF - destBegin = 9448 -End of Item 00A8 - -Begin of Item 00A9 - Format 0 - srcBegin = 6501 - srcEnd = 6508 - destBegin = 9461 -End of Item 00A9 - -Begin of Item 00AA - Format 0 - srcBegin = 650A - srcEnd = 6511 - destBegin = 9469 -End of Item 00AA - -Begin of Item 00AB - Format 0 - srcBegin = 6519 - srcEnd = 6521 - destBegin = 9476 -End of Item 00AB - -Begin of Item 00AC - Format 0 - srcBegin = 6578 - srcEnd = 6586 - destBegin = 94B5 -End of Item 00AC - -Begin of Item 00AD - Format 0 - srcBegin = 65B1 - srcEnd = 65B8 - destBegin = 94DA -End of Item 00AD - -Begin of Item 00AE - Format 0 - srcBegin = 65D8 - srcEnd = 65DF - destBegin = 94F2 -End of Item 00AE - -Begin of Item 00AF - Format 0 - srcBegin = 6644 - srcEnd = 664A - destBegin = 9573 -End of Item 00AF - -Begin of Item 00B0 - Format 0 - srcBegin = 669E - srcEnd = 66A6 - destBegin = 95AF -End of Item 00B0 - -Begin of Item 00B1 - Format 0 - srcBegin = 66BF - srcEnd = 66D8 - destBegin = 95CA -End of Item 00B1 - -Begin of Item 00B2 - Format 0 - srcBegin = 66DE - srcEnd = 66E5 - destBegin = 95E5 -End of Item 00B2 - -Begin of Item 00B3 - Format 0 - srcBegin = 66EA - srcEnd = 66EF - destBegin = 95EF -End of Item 00B3 - -Begin of Item 00B4 - Format 0 - srcBegin = 6720 - srcEnd = 6725 - destBegin = 9650 -End of Item 00B4 - -Begin of Item 00B5 - Format 0 - srcBegin = 67B9 - srcEnd = 67C0 - destBegin = 96A2 -End of Item 00B5 - -Begin of Item 00B6 - Format 0 - srcBegin = 67C5 - srcEnd = 67CE - destBegin = 96AB -End of Item 00B6 - -Begin of Item 00B7 - Format 0 - srcBegin = 67F5 - srcEnd = 67FC - destBegin = 96C5 -End of Item 00B7 - -Begin of Item 00B8 - Format 0 - srcBegin = 6822 - srcEnd = 6828 - destBegin = 96E0 -End of Item 00B8 - -Begin of Item 00B9 - Format 0 - srcBegin = 682B - srcEnd = 6831 - destBegin = 96E7 -End of Item 00B9 - -Begin of Item 00BA - Format 0 - srcBegin = 6856 - srcEnd = 685B - destBegin = 96F9 -End of Item 00BA - -Begin of Item 00BB - Format 0 - srcBegin = 686C - srcEnd = 6873 - destBegin = 9745 -End of Item 00BB - -Begin of Item 00BC - Format 0 - srcBegin = 6878 - srcEnd = 6880 - destBegin = 974E -End of Item 00BC - -Begin of Item 00BD - Format 0 - srcBegin = 6887 - srcEnd = 688E - destBegin = 9759 -End of Item 00BD - -Begin of Item 00BE - Format 0 - srcBegin = 6898 - srcEnd = 68A1 - destBegin = 9767 -End of Item 00BE - -Begin of Item 00BF - Format 0 - srcBegin = 68B9 - srcEnd = 68BF - destBegin = 9780 -End of Item 00BF - -Begin of Item 00C0 - Format 0 - srcBegin = 68C3 - srcEnd = 68C8 - destBegin = 9788 -End of Item 00C0 - -Begin of Item 00C1 - Format 0 - srcBegin = 68E4 - srcEnd = 68ED - destBegin = 97A0 -End of Item 00C1 - -Begin of Item 00C2 - Format 0 - srcBegin = 6913 - srcEnd = 691E - destBegin = 97C1 -End of Item 00C2 - -Begin of Item 00C3 - Format 0 - srcBegin = 6925 - srcEnd = 692C - destBegin = 97D0 -End of Item 00C3 - -Begin of Item 00C4 - Format 0 - srcBegin = 6943 - srcEnd = 6953 - destBegin = 97E7 -End of Item 00C4 - -Begin of Item 00C5 - Format 0 - srcBegin = 698E - srcEnd = 6993 - destBegin = 985C -End of Item 00C5 - -Begin of Item 00C6 - Format 0 - srcBegin = 699D - srcEnd = 69A6 - destBegin = 9866 -End of Item 00C6 - -Begin of Item 00C7 - Format 0 - srcBegin = 69C2 - srcEnd = 69C9 - destBegin = 9883 -End of Item 00C7 - -Begin of Item 00C8 - Format 0 - srcBegin = 69D5 - srcEnd = 69DA - destBegin = 9891 -End of Item 00C8 - -Begin of Item 00C9 - Format 0 - srcBegin = 69E1 - srcEnd = 69EC - destBegin = 989A -End of Item 00C9 - -Begin of Item 00CA - Format 0 - srcBegin = 69F3 - srcEnd = 69FC - destBegin = 98AA -End of Item 00CA - -Begin of Item 00CB - Format 0 - srcBegin = 6A00 - srcEnd = 6A09 - destBegin = 98B5 -End of Item 00CB - -Begin of Item 00CC - Format 0 - srcBegin = 6A0B - srcEnd = 6A16 - destBegin = 98BF -End of Item 00CC - -Begin of Item 00CD - Format 0 - srcBegin = 6A19 - srcEnd = 6A1E - destBegin = 98CB -End of Item 00CD - -Begin of Item 00CE - Format 0 - srcBegin = 6A22 - srcEnd = 6A27 - destBegin = 98D2 -End of Item 00CE - -Begin of Item 00CF - Format 0 - srcBegin = 6A36 - srcEnd = 6A3C - destBegin = 98E1 -End of Item 00CF - -Begin of Item 00D0 - Format 0 - srcBegin = 6A48 - srcEnd = 6A4F - destBegin = 98EF -End of Item 00D0 - -Begin of Item 00D1 - Format 0 - srcBegin = 6A51 - srcEnd = 6A57 - destBegin = 98F7 -End of Item 00D1 - -Begin of Item 00D2 - Format 0 - srcBegin = 6A66 - srcEnd = 6A70 - destBegin = 9948 -End of Item 00D2 - -Begin of Item 00D3 - Format 0 - srcBegin = 6A72 - srcEnd = 6A78 - destBegin = 9953 -End of Item 00D3 - -Begin of Item 00D4 - Format 0 - srcBegin = 6A85 - srcEnd = 6A8D - destBegin = 9962 -End of Item 00D4 - -Begin of Item 00D5 - Format 0 - srcBegin = 6A98 - srcEnd = 6A9F - destBegin = 9971 -End of Item 00D5 - -Begin of Item 00D6 - Format 0 - srcBegin = 6AA1 - srcEnd = 6AA6 - destBegin = 9979 -End of Item 00D6 - -Begin of Item 00D7 - Format 0 - srcBegin = 6AAD - srcEnd = 6B1F - destBegin = 9983 -End of Item 00D7 - -Begin of Item 00D8 - Format 0 - srcBegin = 6B28 - srcEnd = 6B2E - destBegin = 99F8 -End of Item 00D8 - -Begin of Item 00D9 - Format 0 - srcBegin = 6B4D - srcEnd = 6B58 - destBegin = 9A54 -End of Item 00D9 - -Begin of Item 00DA - Format 0 - srcBegin = 6B5A - srcEnd = 6B61 - destBegin = 9A60 -End of Item 00DA - -Begin of Item 00DB - Format 0 - srcBegin = 6B6B - srcEnd = 6B78 - destBegin = 9A6A -End of Item 00DB - -Begin of Item 00DC - Format 0 - srcBegin = 6BA2 - srcEnd = 6BA9 - destBegin = 9A8F -End of Item 00DC - -Begin of Item 00DD - Format 0 - srcBegin = 6BAB - srcEnd = 6BB2 - destBegin = 9A97 -End of Item 00DD - -Begin of Item 00DE - Format 0 - srcBegin = 6BB8 - srcEnd = 6BBE - destBegin = 9AA0 -End of Item 00DE - -Begin of Item 00DF - Format 0 - srcBegin = 6BE2 - srcEnd = 6BE9 - destBegin = 9ABA -End of Item 00DF - -Begin of Item 00E0 - Format 0 - srcBegin = 6BFE - srcEnd = 6C04 - destBegin = 9ACF -End of Item 00E0 - -Begin of Item 00E1 - Format 0 - srcBegin = 6D1F - srcEnd = 6D24 - destBegin = 9BA2 -End of Item 00E1 - -Begin of Item 00E2 - Format 0 - srcBegin = 6DB9 - srcEnd = 6DBE - destBegin = 9BF3 -End of Item 00E2 - -Begin of Item 00E3 - Format 0 - srcBegin = 6DFD - srcEnd = 6E04 - destBegin = 9C5D -End of Item 00E3 - -Begin of Item 00E4 - Format 0 - srcBegin = 6E3B - srcEnd = 6E42 - destBegin = 9C83 -End of Item 00E4 - -Begin of Item 00E5 - Format 0 - srcBegin = 6E45 - srcEnd = 6E4C - destBegin = 9C8B -End of Item 00E5 - -Begin of Item 00E6 - Format 0 - srcBegin = 6E60 - srcEnd = 6E6A - destBegin = 9C9E -End of Item 00E6 - -Begin of Item 00E7 - Format 0 - srcBegin = 6E6F - srcEnd = 6E7D - destBegin = 9CAB -End of Item 00E7 - -Begin of Item 00E8 - Format 0 - srcBegin = 6E91 - srcEnd = 6E97 - destBegin = 9CC5 -End of Item 00E8 - -Begin of Item 00E9 - Format 0 - srcBegin = 6EEA - srcEnd = 6EEF - destBegin = 9CF9 -End of Item 00E9 - -Begin of Item 00EA - Format 0 - srcBegin = 6EFA - srcEnd = 6F01 - destBegin = 9D48 -End of Item 00EA - -Begin of Item 00EB - Format 0 - srcBegin = 6F16 - srcEnd = 6F1F - destBegin = 9D5D -End of Item 00EB - -Begin of Item 00EC - Format 0 - srcBegin = 6F37 - srcEnd = 6F3D - destBegin = 9D74 -End of Item 00EC - -Begin of Item 00ED - Format 0 - srcBegin = 6F4E - srcEnd = 6F57 - destBegin = 9D87 -End of Item 00ED - -Begin of Item 00EE - Format 0 - srcBegin = 6F67 - srcEnd = 6F6C - destBegin = 9D9B -End of Item 00EE - -Begin of Item 00EF - Format 0 - srcBegin = 6F7D - srcEnd = 6F83 - destBegin = 9DAA -End of Item 00EF - -Begin of Item 00F0 - Format 0 - srcBegin = 6F8F - srcEnd = 6F9B - destBegin = 9DB6 -End of Item 00F0 - -Begin of Item 00F1 - Format 0 - srcBegin = 6FA8 - srcEnd = 6FB2 - destBegin = 9DCC -End of Item 00F1 - -Begin of Item 00F2 - Format 0 - srcBegin = 6FBA - srcEnd = 6FBF - destBegin = 9DDB -End of Item 00F2 - -Begin of Item 00F3 - Format 0 - srcBegin = 6FC3 - srcEnd = 6FC8 - destBegin = 9DE2 -End of Item 00F3 - -Begin of Item 00F4 - Format 0 - srcBegin = 6FCA - srcEnd = 6FD0 - destBegin = 9DE8 -End of Item 00F4 - -Begin of Item 00F5 - Format 0 - srcBegin = 6FD3 - srcEnd = 6FDD - destBegin = 9DEF -End of Item 00F5 - -Begin of Item 00F6 - Format 0 - srcBegin = 6FE6 - srcEnd = 6FED - destBegin = 9E40 -End of Item 00F6 - -Begin of Item 00F7 - Format 0 - srcBegin = 6FF0 - srcEnd = 7010 - destBegin = 9E48 -End of Item 00F7 - -Begin of Item 00F8 - Format 0 - srcBegin = 7012 - srcEnd = 7019 - destBegin = 9E69 -End of Item 00F8 - -Begin of Item 00F9 - Format 0 - srcBegin = 701C - srcEnd = 7022 - destBegin = 9E71 -End of Item 00F9 - -Begin of Item 00FA - Format 0 - srcBegin = 7024 - srcEnd = 702A - destBegin = 9E78 -End of Item 00FA - -Begin of Item 00FB - Format 0 - srcBegin = 702B - srcEnd = 7034 - destBegin = 9E80 -End of Item 00FB - -Begin of Item 00FC - Format 0 - srcBegin = 703A - srcEnd = 704B - destBegin = 9E8D -End of Item 00FC - -Begin of Item 00FD - Format 0 - srcBegin = 7050 - srcEnd = 705D - destBegin = 9EA1 -End of Item 00FD - -Begin of Item 00FE - Format 0 - srcBegin = 705F - srcEnd = 706A - destBegin = 9EAF -End of Item 00FE - -Begin of Item 00FF - Format 0 - srcBegin = 709E - srcEnd = 70AA - destBegin = 9ED7 -End of Item 00FF - -Begin of Item 0100 - Format 0 - srcBegin = 70CB - srcEnd = 70D7 - destBegin = 9EF1 -End of Item 0100 - -Begin of Item 0101 - Format 0 - srcBegin = 70F0 - srcEnd = 70F6 - destBegin = 9F4A -End of Item 0101 - -Begin of Item 0102 - Format 0 - srcBegin = 70FE - srcEnd = 7108 - destBegin = 9F55 -End of Item 0102 - -Begin of Item 0103 - Format 0 - srcBegin = 711B - srcEnd = 7125 - destBegin = 9F69 -End of Item 0103 - -Begin of Item 0104 - Format 0 - srcBegin = 7127 - srcEnd = 712E - destBegin = 9F74 -End of Item 0104 - -Begin of Item 0105 - Format 0 - srcBegin = 7137 - srcEnd = 7144 - destBegin = 9F81 -End of Item 0105 - -Begin of Item 0106 - Format 0 - srcBegin = 714F - srcEnd = 715B - destBegin = 9F95 -End of Item 0106 - -Begin of Item 0107 - Format 0 - srcBegin = 717E - srcEnd = 7183 - destBegin = 9FB8 -End of Item 0107 - -Begin of Item 0108 - Format 0 - srcBegin = 71A1 - srcEnd = 71A7 - destBegin = 9FD3 -End of Item 0108 - -Begin of Item 0109 - Format 0 - srcBegin = 71AD - srcEnd = 71B2 - destBegin = 9FDD -End of Item 0109 - -Begin of Item 010A - Format 0 - srcBegin = 71BA - srcEnd = 71C2 - destBegin = 9FE7 -End of Item 010A - -Begin of Item 010B - Format 0 - srcBegin = 71C4 - srcEnd = 71CD - destBegin = 9FF0 -End of Item 010B - -Begin of Item 010C - Format 0 - srcBegin = 71D6 - srcEnd = 71DF - destBegin = A040 -End of Item 010C - -Begin of Item 010D - Format 0 - srcBegin = 71E8 - srcEnd = 71ED - destBegin = A04F -End of Item 010D - -Begin of Item 010E - Format 0 - srcBegin = 71EF - srcEnd = 71F8 - destBegin = A055 -End of Item 010E - -Begin of Item 010F - Format 0 - srcBegin = 71FA - srcEnd = 7205 - destBegin = A05F -End of Item 010F - -Begin of Item 0110 - Format 0 - srcBegin = 7207 - srcEnd = 721A - destBegin = A06B -End of Item 0110 - -Begin of Item 0111 - Format 0 - srcBegin = 721E - srcEnd = 7227 - destBegin = A082 -End of Item 0111 - -Begin of Item 0112 - Format 0 - srcBegin = 7240 - srcEnd = 7246 - destBegin = A097 -End of Item 0112 - -Begin of Item 0113 - Format 0 - srcBegin = 7293 - srcEnd = 729E - destBegin = A0CB -End of Item 0113 - -Begin of Item 0114 - Format 0 - srcBegin = 72A0 - srcEnd = 72AB - destBegin = A0D7 -End of Item 0114 - -Begin of Item 0115 - Format 0 - srcBegin = 72BA - srcEnd = 72C0 - destBegin = A0E8 -End of Item 0115 - -Begin of Item 0116 - Format 0 - srcBegin = 72E2 - srcEnd = 72E7 - destBegin = AA43 -End of Item 0116 - -Begin of Item 0117 - Format 0 - srcBegin = 7304 - srcEnd = 7309 - destBegin = AA53 -End of Item 0117 - -Begin of Item 0118 - Format 0 - srcBegin = 7340 - srcEnd = 7348 - destBegin = AA76 -End of Item 0118 - -Begin of Item 0119 - Format 0 - srcBegin = 7358 - srcEnd = 735F - destBegin = AA8B -End of Item 0119 - -Begin of Item 011A - Format 0 - srcBegin = 7361 - srcEnd = 736B - destBegin = AA93 -End of Item 011A - -Begin of Item 011B - Format 0 - srcBegin = 7372 - srcEnd = 737D - destBegin = AB40 -End of Item 011B - -Begin of Item 011C - Format 0 - srcBegin = 73A3 - srcEnd = 73A8 - destBegin = AB66 -End of Item 011C - -Begin of Item 011D - Format 0 - srcBegin = 73D2 - srcEnd = 73D8 - destBegin = AB83 -End of Item 011D - -Begin of Item 011E - Format 0 - srcBegin = 73F8 - srcEnd = 7402 - destBegin = AC40 -End of Item 011E - -Begin of Item 011F - Format 0 - srcBegin = 7411 - srcEnd = 7419 - destBegin = AC52 -End of Item 011F - -Begin of Item 0120 - Format 0 - srcBegin = 741C - srcEnd = 7421 - destBegin = AC5B -End of Item 0120 - -Begin of Item 0121 - Format 0 - srcBegin = 7442 - srcEnd = 744D - destBegin = AC73 -End of Item 0121 - -Begin of Item 0122 - Format 0 - srcBegin = 744E - srcEnd = 7454 - destBegin = AC80 -End of Item 0122 - -Begin of Item 0123 - Format 0 - srcBegin = 7460 - srcEnd = 746C - destBegin = AC8A -End of Item 0123 - -Begin of Item 0124 - Format 0 - srcBegin = 7491 - srcEnd = 749B - destBegin = AD4E -End of Item 0124 - -Begin of Item 0125 - Format 0 - srcBegin = 749F - srcEnd = 74A6 - destBegin = AD5A -End of Item 0125 - -Begin of Item 0126 - Format 0 - srcBegin = 74AA - srcEnd = 74B9 - destBegin = AD62 -End of Item 0126 - -Begin of Item 0127 - Format 0 - srcBegin = 74BB - srcEnd = 74C7 - destBegin = AD72 -End of Item 0127 - -Begin of Item 0128 - Format 0 - srcBegin = 74C8 - srcEnd = 74D1 - destBegin = AD80 -End of Item 0128 - -Begin of Item 0129 - Format 0 - srcBegin = 74D3 - srcEnd = 74DB - destBegin = AD8A -End of Item 0129 - -Begin of Item 012A - Format 0 - srcBegin = 74E7 - srcEnd = 74ED - destBegin = AD97 -End of Item 012A - -Begin of Item 012B - Format 0 - srcBegin = 74F8 - srcEnd = 74FE - destBegin = AE42 -End of Item 012B - -Begin of Item 012C - Format 0 - srcBegin = 7505 - srcEnd = 750C - destBegin = AE4D -End of Item 012C - -Begin of Item 012D - Format 0 - srcBegin = 755D - srcEnd = 7564 - destBegin = AE80 -End of Item 012D - -Begin of Item 012E - Format 0 - srcBegin = 756B - srcEnd = 7571 - destBegin = AE8B -End of Item 012E - -Begin of Item 012F - Format 0 - srcBegin = 7645 - srcEnd = 764B - destBegin = B040 -End of Item 012F - -Begin of Item 0130 - Format 0 - srcBegin = 764E - srcEnd = 7653 - destBegin = B047 -End of Item 0130 - -Begin of Item 0131 - Format 0 - srcBegin = 7664 - srcEnd = 766A - destBegin = B058 -End of Item 0131 - -Begin of Item 0132 - Format 0 - srcBegin = 7670 - srcEnd = 7677 - destBegin = B062 -End of Item 0132 - -Begin of Item 0133 - Format 0 - srcBegin = 769C - srcEnd = 76A3 - destBegin = B080 -End of Item 0133 - -Begin of Item 0134 - Format 0 - srcBegin = 76A5 - srcEnd = 76AD - destBegin = B088 -End of Item 0134 - -Begin of Item 0135 - Format 0 - srcBegin = 76B5 - srcEnd = 76BE - destBegin = B094 -End of Item 0135 - -Begin of Item 0136 - Format 0 - srcBegin = 76E6 - srcEnd = 76ED - destBegin = B151 -End of Item 0136 - -Begin of Item 0137 - Format 0 - srcBegin = 770E - srcEnd = 7718 - destBegin = B169 -End of Item 0137 - -Begin of Item 0138 - Format 0 - srcBegin = 7748 - srcEnd = 774F - destBegin = B190 -End of Item 0138 - -Begin of Item 0139 - Format 0 - srcBegin = 7752 - srcEnd = 7759 - destBegin = B198 -End of Item 0139 - -Begin of Item 013A - Format 0 - srcBegin = 776D - srcEnd = 7778 - destBegin = B248 -End of Item 013A - -Begin of Item 013B - Format 0 - srcBegin = 7786 - srcEnd = 778B - destBegin = B25A -End of Item 013B - -Begin of Item 013C - Format 0 - srcBegin = 7793 - srcEnd = 779E - destBegin = B262 -End of Item 013C - -Begin of Item 013D - Format 0 - srcBegin = 77C0 - srcEnd = 77CC - destBegin = B282 -End of Item 013D - -Begin of Item 013E - Format 0 - srcBegin = 77CE - srcEnd = 77D6 - destBegin = B28F -End of Item 013E - -Begin of Item 013F - Format 0 - srcBegin = 7803 - srcEnd = 7808 - destBegin = B34E -End of Item 013F - -Begin of Item 0140 - Format 0 - srcBegin = 785E - srcEnd = 7869 - destBegin = B382 -End of Item 0140 - -Begin of Item 0141 - Format 0 - srcBegin = 786F - srcEnd = 7876 - destBegin = B38E -End of Item 0141 - -Begin of Item 0142 - Format 0 - srcBegin = 787D - srcEnd = 7883 - destBegin = B39A -End of Item 0142 - -Begin of Item 0143 - Format 0 - srcBegin = 78A8 - srcEnd = 78AF - destBegin = B453 -End of Item 0143 - -Begin of Item 0144 - Format 0 - srcBegin = 78DA - srcEnd = 78E3 - destBegin = B475 -End of Item 0144 - -Begin of Item 0145 - Format 0 - srcBegin = 78FB - srcEnd = 7900 - destBegin = B491 -End of Item 0145 - -Begin of Item 0146 - Format 0 - srcBegin = 7906 - srcEnd = 790C - destBegin = B49A -End of Item 0146 - -Begin of Item 0147 - Format 0 - srcBegin = 790D - srcEnd = 7912 - destBegin = B540 -End of Item 0147 - -Begin of Item 0148 - Format 0 - srcBegin = 7914 - srcEnd = 791D - destBegin = B546 -End of Item 0148 - -Begin of Item 0149 - Format 0 - srcBegin = 7925 - srcEnd = 7933 - destBegin = B555 -End of Item 0149 - -Begin of Item 014A - Format 0 - srcBegin = 794A - srcEnd = 7952 - destBegin = B570 -End of Item 014A - -Begin of Item 014B - Format 0 - srcBegin = 7970 - srcEnd = 7976 - destBegin = B587 -End of Item 014B - -Begin of Item 014C - Format 0 - srcBegin = 7993 - srcEnd = 7999 - destBegin = B640 -End of Item 014C - -Begin of Item 014D - Format 0 - srcBegin = 799B - srcEnd = 79A6 - destBegin = B647 -End of Item 014D - -Begin of Item 014E - Format 0 - srcBegin = 79A8 - srcEnd = 79B2 - destBegin = B653 -End of Item 014E - -Begin of Item 014F - Format 0 - srcBegin = 79D9 - srcEnd = 79DE - destBegin = B673 -End of Item 014F - -Begin of Item 0150 - Format 0 - srcBegin = 79F1 - srcEnd = 79F7 - destBegin = B682 -End of Item 0150 - -Begin of Item 0151 - Format 0 - srcBegin = 7A24 - srcEnd = 7A32 - destBegin = B744 -End of Item 0151 - -Begin of Item 0152 - Format 0 - srcBegin = 7A40 - srcEnd = 7A45 - destBegin = B759 -End of Item 0152 - -Begin of Item 0153 - Format 0 - srcBegin = 7A47 - srcEnd = 7A50 - destBegin = B75F -End of Item 0153 - -Begin of Item 0154 - Format 0 - srcBegin = 7A58 - srcEnd = 7A68 - destBegin = B76E -End of Item 0154 - -Begin of Item 0155 - Format 0 - srcBegin = 7A69 - srcEnd = 7A6F - destBegin = B780 -End of Item 0155 - -Begin of Item 0156 - Format 0 - srcBegin = 7AB4 - srcEnd = 7ABE - destBegin = B84B -End of Item 0156 - -Begin of Item 0157 - Format 0 - srcBegin = 7AC0 - srcEnd = 7ACA - destBegin = B856 -End of Item 0157 - -Begin of Item 0158 - Format 0 - srcBegin = 7ACC - srcEnd = 7AD5 - destBegin = B861 -End of Item 0158 - -Begin of Item 0159 - Format 0 - srcBegin = 7AE7 - srcEnd = 7AEC - destBegin = B874 -End of Item 0159 - -Begin of Item 015A - Format 0 - srcBegin = 7B3F - srcEnd = 7B44 - destBegin = B94A -End of Item 015A - -Begin of Item 015B - Format 0 - srcBegin = 7B63 - srcEnd = 7B6D - destBegin = B95D -End of Item 015B - -Begin of Item 015C - Format 0 - srcBegin = 7B86 - srcEnd = 7B8C - destBegin = B976 -End of Item 015C - -Begin of Item 015D - Format 0 - srcBegin = 7BB9 - srcEnd = 7BC0 - destBegin = B996 -End of Item 015D - -Begin of Item 015E - Format 0 - srcBegin = 7BFF - srcEnd = 7C06 - destBegin = BA69 -End of Item 015E - -Begin of Item 015F - Format 0 - srcBegin = 7C10 - srcEnd = 7C15 - destBegin = BA76 -End of Item 015F - -Begin of Item 0160 - Format 0 - srcBegin = 7C20 - srcEnd = 7C25 - destBegin = BA85 -End of Item 0160 - -Begin of Item 0161 - Format 0 - srcBegin = 7C2B - srcEnd = 7C37 - destBegin = BA8D -End of Item 0161 - -Begin of Item 0162 - Format 0 - srcBegin = 7C39 - srcEnd = 7C3E - destBegin = BA9A -End of Item 0162 - -Begin of Item 0163 - Format 0 - srcBegin = 7C43 - srcEnd = 7C4C - destBegin = BB40 -End of Item 0163 - -Begin of Item 0164 - Format 0 - srcBegin = 7C4E - srcEnd = 7C72 - destBegin = BB4A -End of Item 0164 - -Begin of Item 0165 - Format 0 - srcBegin = 7C75 - srcEnd = 7C7A - destBegin = BB6F -End of Item 0165 - -Begin of Item 0166 - Format 0 - srcBegin = 7C7E - srcEnd = 7C87 - destBegin = BB75 -End of Item 0166 - -Begin of Item 0167 - Format 0 - srcBegin = 7C8A - srcEnd = 7C90 - destBegin = BB81 -End of Item 0167 - -Begin of Item 0168 - Format 0 - srcBegin = 7CCE - srcEnd = 7CD4 - destBegin = BC48 -End of Item 0168 - -Begin of Item 0169 - Format 0 - srcBegin = 7CE1 - srcEnd = 7CE7 - destBegin = BC54 -End of Item 0169 - -Begin of Item 016A - Format 0 - srcBegin = 7CE9 - srcEnd = 7CEE - destBegin = BC5B -End of Item 016A - -Begin of Item 016B - Format 0 - srcBegin = 7CF0 - srcEnd = 7CF7 - destBegin = BC61 -End of Item 016B - -Begin of Item 016C - Format 0 - srcBegin = 7CFC - srcEnd = 7D09 - destBegin = BC6B -End of Item 016C - -Begin of Item 016D - Format 0 - srcBegin = 7D0B - srcEnd = 7D10 - destBegin = BC79 -End of Item 016D - -Begin of Item 016E - Format 0 - srcBegin = 7D11 - srcEnd = 7D1F - destBegin = BC80 -End of Item 016E - -Begin of Item 016F - Format 0 - srcBegin = 7D30 - srcEnd = 7D36 - destBegin = BC9A -End of Item 016F - -Begin of Item 0170 - Format 0 - srcBegin = 7D37 - srcEnd = 7D6D - destBegin = BD40 -End of Item 0170 - -Begin of Item 0171 - Format 0 - srcBegin = 7D6F - srcEnd = 7D76 - destBegin = BD77 -End of Item 0171 - -Begin of Item 0172 - Format 0 - srcBegin = 7D78 - srcEnd = 7D98 - destBegin = BD80 -End of Item 0172 - -Begin of Item 0173 - Format 0 - srcBegin = 7D99 - srcEnd = 7DA5 - destBegin = BE40 -End of Item 0173 - -Begin of Item 0174 - Format 0 - srcBegin = 7DA7 - srcEnd = 7DAD - destBegin = BE4D -End of Item 0174 - -Begin of Item 0175 - Format 0 - srcBegin = 7DAF - srcEnd = 7DD9 - destBegin = BE54 -End of Item 0175 - -Begin of Item 0176 - Format 0 - srcBegin = 7DDA - srcEnd = 7DFA - destBegin = BE80 -End of Item 0176 - -Begin of Item 0177 - Format 0 - srcBegin = 7DFB - srcEnd = 7E39 - destBegin = BF40 -End of Item 0177 - -Begin of Item 0178 - Format 0 - srcBegin = 7E48 - srcEnd = 7E5D - destBegin = BF8B -End of Item 0178 - -Begin of Item 0179 - Format 0 - srcBegin = 7E5E - srcEnd = 7E81 - destBegin = C040 -End of Item 0179 - -Begin of Item 017A - Format 0 - srcBegin = 7E83 - srcEnd = 7E9A - destBegin = C064 -End of Item 017A - -Begin of Item 017B - Format 0 - srcBegin = 7F21 - srcEnd = 7F27 - destBegin = E7CA -End of Item 017B - -Begin of Item 017C - Format 0 - srcBegin = 7F3B - srcEnd = 7F41 - destBegin = C08D -End of Item 017C - -Begin of Item 017D - Format 0 - srcBegin = 7F46 - srcEnd = 7F4F - destBegin = C095 -End of Item 017D - -Begin of Item 017E - Format 0 - srcBegin = 7F82 - srcEnd = 7F89 - destBegin = C15C -End of Item 017E - -Begin of Item 017F - Format 0 - srcBegin = 7FA8 - srcEnd = 7FAE - destBegin = C177 -End of Item 017F - -Begin of Item 0180 - Format 0 - srcBegin = 7FD9 - srcEnd = 7FDE - destBegin = C199 -End of Item 0180 - -Begin of Item 0181 - Format 0 - srcBegin = 7FF4 - srcEnd = 7FFA - destBegin = C249 -End of Item 0181 - -Begin of Item 0182 - Format 0 - srcBegin = 802B - srcEnd = 8030 - destBegin = C264 -End of Item 0182 - -Begin of Item 0183 - Format 0 - srcBegin = 805B - srcEnd = 8068 - destBegin = C281 -End of Item 0183 - -Begin of Item 0184 - Format 0 - srcBegin = 806B - srcEnd = 8070 - destBegin = C28F -End of Item 0184 - -Begin of Item 0185 - Format 0 - srcBegin = 8072 - srcEnd = 807D - destBegin = C295 -End of Item 0185 - -Begin of Item 0186 - Format 0 - srcBegin = 808D - srcEnd = 8092 - destBegin = C346 -End of Item 0186 - -Begin of Item 0187 - Format 0 - srcBegin = 80CF - srcEnd = 80D5 - destBegin = C363 -End of Item 0187 - -Begin of Item 0188 - Format 0 - srcBegin = 811F - srcEnd = 812B - destBegin = C387 -End of Item 0188 - -Begin of Item 0189 - Format 0 - srcBegin = 8140 - srcEnd = 8145 - destBegin = C440 -End of Item 0189 - -Begin of Item 018A - Format 0 - srcBegin = 8192 - srcEnd = 8197 - destBegin = C470 -End of Item 018A - -Begin of Item 018B - Format 0 - srcBegin = 81AB - srcEnd = 81B2 - destBegin = C482 -End of Item 018B - -Begin of Item 018C - Format 0 - srcBegin = 81B4 - srcEnd = 81B9 - destBegin = C48A -End of Item 018C - -Begin of Item 018D - Format 0 - srcBegin = 81CD - srcEnd = 81D3 - destBegin = C49A -End of Item 018D - -Begin of Item 018E - Format 0 - srcBegin = 81D4 - srcEnd = 81E2 - destBegin = C540 -End of Item 018E - -Begin of Item 018F - Format 0 - srcBegin = 81F5 - srcEnd = 81FA - destBegin = C55A -End of Item 018F - -Begin of Item 0190 - Format 0 - srcBegin = 8215 - srcEnd = 821A - destBegin = C56C -End of Item 0190 - -Begin of Item 0191 - Format 0 - srcBegin = 8250 - srcEnd = 8257 - destBegin = C58B -End of Item 0191 - -Begin of Item 0192 - Format 0 - srcBegin = 8260 - srcEnd = 8267 - destBegin = C598 -End of Item 0192 - -Begin of Item 0193 - Format 0 - srcBegin = 831D - srcEnd = 8326 - destBegin = C68F -End of Item 0193 - -Begin of Item 0194 - Format 0 - srcBegin = 8370 - srcEnd = 8376 - destBegin = C754 -End of Item 0194 - -Begin of Item 0195 - Format 0 - srcBegin = 837E - srcEnd = 8384 - destBegin = C75D -End of Item 0195 - -Begin of Item 0196 - Format 0 - srcBegin = 83A1 - srcEnd = 83A7 - destBegin = C775 -End of Item 0196 - -Begin of Item 0197 - Format 0 - srcBegin = 8412 - srcEnd = 8417 - destBegin = C854 -End of Item 0197 - -Begin of Item 0198 - Format 0 - srcBegin = 841E - srcEnd = 8423 - destBegin = C85D -End of Item 0198 - -Begin of Item 0199 - Format 0 - srcBegin = 8429 - srcEnd = 8430 - destBegin = C863 -End of Item 0199 - -Begin of Item 019A - Format 0 - srcBegin = 8432 - srcEnd = 8437 - destBegin = C86B -End of Item 019A - -Begin of Item 019B - Format 0 - srcBegin = 843E - srcEnd = 8445 - destBegin = C874 -End of Item 019B - -Begin of Item 019C - Format 0 - srcBegin = 844A - srcEnd = 8450 - destBegin = C880 -End of Item 019C - -Begin of Item 019D - Format 0 - srcBegin = 848F - srcEnd = 8496 - destBegin = C94B -End of Item 019D - -Begin of Item 019E - Format 0 - srcBegin = 84A2 - srcEnd = 84AE - destBegin = C95A -End of Item 019E - -Begin of Item 019F - Format 0 - srcBegin = 84F1 - srcEnd = 84FB - destBegin = C991 -End of Item 019F - -Begin of Item 01A0 - Format 0 - srcBegin = 8503 - srcEnd = 850B - destBegin = CA40 -End of Item 01A0 - -Begin of Item 01A1 - Format 0 - srcBegin = 8522 - srcEnd = 852A - destBegin = CA58 -End of Item 01A1 - -Begin of Item 01A2 - Format 0 - srcBegin = 852D - srcEnd = 8536 - destBegin = CA61 -End of Item 01A2 - -Begin of Item 01A3 - Format 0 - srcBegin = 854B - srcEnd = 8555 - destBegin = CA74 -End of Item 01A3 - -Begin of Item 01A4 - Format 0 - srcBegin = 8569 - srcEnd = 8571 - destBegin = CA8E -End of Item 01A4 - -Begin of Item 01A5 - Format 0 - srcBegin = 8588 - srcEnd = 858E - destBegin = CB43 -End of Item 01A5 - -Begin of Item 01A6 - Format 0 - srcBegin = 8590 - srcEnd = 859A - destBegin = CB4A -End of Item 01A6 - -Begin of Item 01A7 - Format 0 - srcBegin = 859D - srcEnd = 85A3 - destBegin = CB55 -End of Item 01A7 - -Begin of Item 01A8 - Format 0 - srcBegin = 85B1 - srcEnd = 85B6 - destBegin = CB63 -End of Item 01A8 - -Begin of Item 01A9 - Format 0 - srcBegin = 85BA - srcEnd = 85C0 - destBegin = CB6A -End of Item 01A9 - -Begin of Item 01AA - Format 0 - srcBegin = 85C2 - srcEnd = 85C8 - destBegin = CB71 -End of Item 01AA - -Begin of Item 01AB - Format 0 - srcBegin = 85D6 - srcEnd = 85DB - destBegin = CB81 -End of Item 01AB - -Begin of Item 01AC - Format 0 - srcBegin = 85DD - srcEnd = 85E3 - destBegin = CB87 -End of Item 01AC - -Begin of Item 01AD - Format 0 - srcBegin = 85EA - srcEnd = 85F8 - destBegin = CB92 -End of Item 01AD - -Begin of Item 01AE - Format 0 - srcBegin = 8606 - srcEnd = 8610 - destBegin = CC4A -End of Item 01AE - -Begin of Item 01AF - Format 0 - srcBegin = 8617 - srcEnd = 8626 - destBegin = CC59 -End of Item 01AF - -Begin of Item 01B0 - Format 0 - srcBegin = 862A - srcEnd = 8637 - destBegin = CC6A -End of Item 01B0 - -Begin of Item 01B1 - Format 0 - srcBegin = 8641 - srcEnd = 864C - destBegin = CC80 -End of Item 01B1 - -Begin of Item 01B2 - Format 0 - srcBegin = 8663 - srcEnd = 866A - destBegin = CC99 -End of Item 01B2 - -Begin of Item 01B3 - Format 0 - srcBegin = 8672 - srcEnd = 8678 - destBegin = CD43 -End of Item 01B3 - -Begin of Item 01B4 - Format 0 - srcBegin = 8683 - srcEnd = 8689 - destBegin = CD4A -End of Item 01B4 - -Begin of Item 01B5 - Format 0 - srcBegin = 8696 - srcEnd = 869B - destBegin = CD57 -End of Item 01B5 - -Begin of Item 01B6 - Format 0 - srcBegin = 8740 - srcEnd = 8746 - destBegin = CE58 -End of Item 01B6 - -Begin of Item 01B7 - Format 0 - srcBegin = 875A - srcEnd = 875F - destBegin = CE6A -End of Item 01B7 - -Begin of Item 01B8 - Format 0 - srcBegin = 8766 - srcEnd = 876D - destBegin = CE72 -End of Item 01B8 - -Begin of Item 01B9 - Format 0 - srcBegin = 8798 - srcEnd = 879E - destBegin = CE95 -End of Item 01B9 - -Begin of Item 01BA - Format 0 - srcBegin = 87D4 - srcEnd = 87DA - destBegin = CF5F -End of Item 01BA - -Begin of Item 01BB - Format 0 - srcBegin = 87EF - srcEnd = 87F8 - destBegin = CF75 -End of Item 01BB - -Begin of Item 01BC - Format 0 - srcBegin = 8804 - srcEnd = 8809 - destBegin = CF88 -End of Item 01BC - -Begin of Item 01BD - Format 0 - srcBegin = 880B - srcEnd = 8812 - destBegin = CF8E -End of Item 01BD - -Begin of Item 01BE - Format 0 - srcBegin = 8824 - srcEnd = 8831 - destBegin = D040 -End of Item 01BE - -Begin of Item 01BF - Format 0 - srcBegin = 8833 - srcEnd = 8838 - destBegin = D04E -End of Item 01BF - -Begin of Item 01C0 - Format 0 - srcBegin = 8846 - srcEnd = 884B - destBegin = D05C -End of Item 01C0 - -Begin of Item 01C1 - Format 0 - srcBegin = 884E - srcEnd = 8853 - destBegin = D062 -End of Item 01C1 - -Begin of Item 01C2 - Format 0 - srcBegin = 885A - srcEnd = 8860 - destBegin = D06B -End of Item 01C2 - -Begin of Item 01C3 - Format 0 - srcBegin = 88A5 - srcEnd = 88AA - destBegin = D09B -End of Item 01C3 - -Begin of Item 01C4 - Format 0 - srcBegin = 88E9 - srcEnd = 88EF - destBegin = D168 -End of Item 01C4 - -Begin of Item 01C5 - Format 0 - srcBegin = 8903 - srcEnd = 8908 - destBegin = D179 -End of Item 01C5 - -Begin of Item 01C6 - Format 0 - srcBegin = 8938 - srcEnd = 8940 - destBegin = D240 -End of Item 01C6 - -Begin of Item 01C7 - Format 0 - srcBegin = 8945 - srcEnd = 895D - destBegin = D24B -End of Item 01C7 - -Begin of Item 01C8 - Format 0 - srcBegin = 8960 - srcEnd = 8965 - destBegin = D264 -End of Item 01C8 - -Begin of Item 01C9 - Format 0 - srcBegin = 8967 - srcEnd = 897A - destBegin = D26A -End of Item 01C9 - -Begin of Item 01CA - Format 0 - srcBegin = 8987 - srcEnd = 89A1 - destBegin = D286 -End of Item 01CA - -Begin of Item 01CB - Format 0 - srcBegin = 89A2 - srcEnd = 89C0 - destBegin = D340 -End of Item 01CB - -Begin of Item 01CC - Format 0 - srcBegin = 89F4 - srcEnd = 89FA - destBegin = D378 -End of Item 01CC - -Begin of Item 01CD - Format 0 - srcBegin = 8A01 - srcEnd = 8A06 - destBegin = D385 -End of Item 01CD - -Begin of Item 01CE - Format 0 - srcBegin = 8A08 - srcEnd = 8A1D - destBegin = D38B -End of Item 01CE - -Begin of Item 01CF - Format 0 - srcBegin = 8A1E - srcEnd = 8A3D - destBegin = D440 -End of Item 01CF - -Begin of Item 01D0 - Format 0 - srcBegin = 8A3F - srcEnd = 8A47 - destBegin = D460 -End of Item 01D0 - -Begin of Item 01D1 - Format 0 - srcBegin = 8A49 - srcEnd = 8A5E - destBegin = D469 -End of Item 01D1 - -Begin of Item 01D2 - Format 0 - srcBegin = 8A5F - srcEnd = 8A78 - destBegin = D480 -End of Item 01D2 - -Begin of Item 01D3 - Format 0 - srcBegin = 8A7A - srcEnd = 8A80 - destBegin = D49A -End of Item 01D3 - -Begin of Item 01D4 - Format 0 - srcBegin = 8A81 - srcEnd = 8A88 - destBegin = D540 -End of Item 01D4 - -Begin of Item 01D5 - Format 0 - srcBegin = 8A8B - srcEnd = 8A92 - destBegin = D548 -End of Item 01D5 - -Begin of Item 01D6 - Format 0 - srcBegin = 8A94 - srcEnd = 8AC2 - destBegin = D550 -End of Item 01D6 - -Begin of Item 01D7 - Format 0 - srcBegin = 8AC3 - srcEnd = 8AE3 - destBegin = D580 -End of Item 01D7 - -Begin of Item 01D8 - Format 0 - srcBegin = 8AE4 - srcEnd = 8B06 - destBegin = D640 -End of Item 01D8 - -Begin of Item 01D9 - Format 0 - srcBegin = 8B08 - srcEnd = 8B23 - destBegin = D663 -End of Item 01D9 - -Begin of Item 01DA - Format 0 - srcBegin = 8B27 - srcEnd = 8B45 - destBegin = D682 -End of Item 01DA - -Begin of Item 01DB - Format 0 - srcBegin = 8B46 - srcEnd = 8B65 - destBegin = D740 -End of Item 01DB - -Begin of Item 01DC - Format 0 - srcBegin = 8B6D - srcEnd = 8B86 - destBegin = D765 -End of Item 01DC - -Begin of Item 01DD - Format 0 - srcBegin = 8B87 - srcEnd = 8B9F - destBegin = D780 -End of Item 01DD - -Begin of Item 01DE - Format 0 - srcBegin = 8C38 - srcEnd = 8C40 - destBegin = D840 -End of Item 01DE - -Begin of Item 01DF - Format 0 - srcBegin = 8C4D - srcEnd = 8C54 - destBegin = D850 -End of Item 01DF - -Begin of Item 01E0 - Format 0 - srcBegin = 8C5B - srcEnd = 8C60 - destBegin = D85C -End of Item 01E0 - -Begin of Item 01E1 - Format 0 - srcBegin = 8C63 - srcEnd = 8C69 - destBegin = D862 -End of Item 01E1 - -Begin of Item 01E2 - Format 0 - srcBegin = 8C6C - srcEnd = 8C72 - destBegin = D869 -End of Item 01E2 - -Begin of Item 01E3 - Format 0 - srcBegin = 8C7B - srcEnd = 8C81 - destBegin = D874 -End of Item 01E3 - -Begin of Item 01E4 - Format 0 - srcBegin = 8C8D - srcEnd = 8C93 - destBegin = D882 -End of Item 01E4 - -Begin of Item 01E5 - Format 0 - srcBegin = 8C99 - srcEnd = 8CAD - destBegin = D88C -End of Item 01E5 - -Begin of Item 01E6 - Format 0 - srcBegin = 8CAE - srcEnd = 8CEC - destBegin = D940 -End of Item 01E6 - -Begin of Item 01E7 - Format 0 - srcBegin = 8CED - srcEnd = 8D0D - destBegin = D980 -End of Item 01E7 - -Begin of Item 01E8 - Format 0 - srcBegin = 8D0E - srcEnd = 8D1C - destBegin = DA40 -End of Item 01E8 - -Begin of Item 01E9 - Format 0 - srcBegin = 8D78 - srcEnd = 8D80 - destBegin = DA5D -End of Item 01E9 - -Begin of Item 01EA - Format 0 - srcBegin = 8D95 - srcEnd = 8D9E - destBegin = DA73 -End of Item 01EA - -Begin of Item 01EB - Format 0 - srcBegin = 8DA4 - srcEnd = 8DB0 - destBegin = DA81 -End of Item 01EB - -Begin of Item 01EC - Format 0 - srcBegin = 8DFE - srcEnd = 8E04 - destBegin = DB53 -End of Item 01EC - -Begin of Item 01ED - Format 0 - srcBegin = 8E15 - srcEnd = 8E1C - destBegin = DB64 -End of Item 01ED - -Begin of Item 01EE - Format 0 - srcBegin = 8E53 - srcEnd = 8E58 - destBegin = DB89 -End of Item 01EE - -Begin of Item 01EF - Format 0 - srcBegin = 8E5A - srcEnd = 8E65 - destBegin = DB8F -End of Item 01EF - -Begin of Item 01F0 - Format 0 - srcBegin = 8E88 - srcEnd = 8E8E - destBegin = DC4E -End of Item 01F0 - -Begin of Item 01F1 - Format 0 - srcBegin = 8E95 - srcEnd = 8E9B - destBegin = DC58 -End of Item 01F1 - -Begin of Item 01F2 - Format 0 - srcBegin = 8E9F - srcEnd = 8EAA - destBegin = DC60 -End of Item 01F2 - -Begin of Item 01F3 - Format 0 - srcBegin = 8EB3 - srcEnd = 8EB9 - destBegin = DC70 -End of Item 01F3 - -Begin of Item 01F4 - Format 0 - srcBegin = 8EBB - srcEnd = 8EC2 - destBegin = DC77 -End of Item 01F4 - -Begin of Item 01F5 - Format 0 - srcBegin = 8EC3 - srcEnd = 8ECD - destBegin = DC80 -End of Item 01F5 - -Begin of Item 01F6 - Format 0 - srcBegin = 8ECF - srcEnd = 8EE4 - destBegin = DC8B -End of Item 01F6 - -Begin of Item 01F7 - Format 0 - srcBegin = 8EE5 - srcEnd = 8F23 - destBegin = DD40 -End of Item 01F7 - -Begin of Item 01F8 - Format 0 - srcBegin = 8F24 - srcEnd = 8F44 - destBegin = DD80 -End of Item 01F8 - -Begin of Item 01F9 - Format 0 - srcBegin = 8F45 - srcEnd = 8F65 - destBegin = DE40 -End of Item 01F9 - -Begin of Item 01FA - Format 0 - srcBegin = 9027 - srcEnd = 902C - destBegin = DF45 -End of Item 01FA - -Begin of Item 01FB - Format 0 - srcBegin = 905C - srcEnd = 9061 - destBegin = DF64 -End of Item 01FB - -Begin of Item 01FC - Format 0 - srcBegin = 9076 - srcEnd = 907C - destBegin = DF76 -End of Item 01FC - -Begin of Item 01FD - Format 0 - srcBegin = 9105 - srcEnd = 9118 - destBegin = E068 -End of Item 01FD - -Begin of Item 01FE - Format 0 - srcBegin = 9124 - srcEnd = 912E - destBegin = E084 -End of Item 01FE - -Begin of Item 01FF - Format 0 - srcBegin = 9132 - srcEnd = 9138 - destBegin = E090 -End of Item 01FF - -Begin of Item 0200 - Format 0 - srcBegin = 913A - srcEnd = 9142 - destBegin = E097 -End of Item 0200 - -Begin of Item 0201 - Format 0 - srcBegin = 9193 - srcEnd = 9199 - destBegin = E161 -End of Item 0201 - -Begin of Item 0202 - Format 0 - srcBegin = 919C - srcEnd = 91A1 - destBegin = E168 -End of Item 0202 - -Begin of Item 0203 - Format 0 - srcBegin = 91A4 - srcEnd = 91A9 - destBegin = E16E -End of Item 0203 - -Begin of Item 0204 - Format 0 - srcBegin = 91BC - srcEnd = 91C6 - destBegin = E180 -End of Item 0204 - -Begin of Item 0205 - Format 0 - srcBegin = 91D2 - srcEnd = 91DB - destBegin = E18E -End of Item 0205 - -Begin of Item 0206 - Format 0 - srcBegin = 91DD - srcEnd = 91E5 - destBegin = E198 -End of Item 0206 - -Begin of Item 0207 - Format 0 - srcBegin = 91E6 - srcEnd = 9224 - destBegin = E240 -End of Item 0207 - -Begin of Item 0208 - Format 0 - srcBegin = 9225 - srcEnd = 9245 - destBegin = E280 -End of Item 0208 - -Begin of Item 0209 - Format 0 - srcBegin = 9246 - srcEnd = 9273 - destBegin = E340 -End of Item 0209 - -Begin of Item 020A - Format 0 - srcBegin = 9275 - srcEnd = 9285 - destBegin = E36E -End of Item 020A - -Begin of Item 020B - Format 0 - srcBegin = 9286 - srcEnd = 928D - destBegin = E380 -End of Item 020B - -Begin of Item 020C - Format 0 - srcBegin = 928F - srcEnd = 92A7 - destBegin = E388 -End of Item 020C - -Begin of Item 020D - Format 0 - srcBegin = 92A8 - srcEnd = 92AD - destBegin = E440 -End of Item 020D - -Begin of Item 020E - Format 0 - srcBegin = 92AF - srcEnd = 92C7 - destBegin = E446 -End of Item 020E - -Begin of Item 020F - Format 0 - srcBegin = 92C9 - srcEnd = 92E8 - destBegin = E45F -End of Item 020F - -Begin of Item 0210 - Format 0 - srcBegin = 92E9 - srcEnd = 9309 - destBegin = E480 -End of Item 0210 - -Begin of Item 0211 - Format 0 - srcBegin = 930A - srcEnd = 933D - destBegin = E540 -End of Item 0211 - -Begin of Item 0212 - Format 0 - srcBegin = 933F - srcEnd = 9349 - destBegin = E574 -End of Item 0212 - -Begin of Item 0213 - Format 0 - srcBegin = 934A - srcEnd = 9369 - destBegin = E580 -End of Item 0213 - -Begin of Item 0214 - Format 0 - srcBegin = 936C - srcEnd = 938E - destBegin = E640 -End of Item 0214 - -Begin of Item 0215 - Format 0 - srcBegin = 9390 - srcEnd = 93AB - destBegin = E663 -End of Item 0215 - -Begin of Item 0216 - Format 0 - srcBegin = 93AC - srcEnd = 93C9 - destBegin = E680 -End of Item 0216 - -Begin of Item 0217 - Format 0 - srcBegin = 93CE - srcEnd = 93D5 - destBegin = E740 -End of Item 0217 - -Begin of Item 0218 - Format 0 - srcBegin = 93D7 - srcEnd = 940D - destBegin = E748 -End of Item 0218 - -Begin of Item 0219 - Format 0 - srcBegin = 940E - srcEnd = 942E - destBegin = E780 -End of Item 0219 - -Begin of Item 021A - Format 0 - srcBegin = 942F - srcEnd = 943D - destBegin = E840 -End of Item 021A - -Begin of Item 021B - Format 0 - srcBegin = 943F - srcEnd = 946A - destBegin = E84F -End of Item 021B - -Begin of Item 021C - Format 0 - srcBegin = 9470 - srcEnd = 9484 - destBegin = E880 -End of Item 021C - -Begin of Item 021D - Format 0 - srcBegin = 94C8 - srcEnd = 94CE - destBegin = EEE6 -End of Item 021D - -Begin of Item 021E - Format 0 - srcBegin = 9564 - srcEnd = 956C - destBegin = EFE4 -End of Item 021E - -Begin of Item 021F - Format 0 - srcBegin = 9577 - srcEnd = 957E - destBegin = E94C -End of Item 021F - -Begin of Item 0220 - Format 0 - srcBegin = 9580 - srcEnd = 95AA - destBegin = E954 -End of Item 0220 - -Begin of Item 0221 - Format 0 - srcBegin = 95AB - srcEnd = 95CB - destBegin = E980 -End of Item 0221 - -Begin of Item 0222 - Format 0 - srcBegin = 95CC - srcEnd = 95E7 - destBegin = EA40 -End of Item 0222 - -Begin of Item 0223 - Format 0 - srcBegin = 9623 - srcEnd = 9629 - destBegin = EA64 -End of Item 0223 - -Begin of Item 0224 - Format 0 - srcBegin = 9678 - srcEnd = 9684 - destBegin = EA91 -End of Item 0224 - -Begin of Item 0225 - Format 0 - srcBegin = 969D - srcEnd = 96A6 - destBegin = EB49 -End of Item 0225 - -Begin of Item 0226 - Format 0 - srcBegin = 96A8 - srcEnd = 96AF - destBegin = EB53 -End of Item 0226 - -Begin of Item 0227 - Format 0 - srcBegin = 96D6 - srcEnd = 96DF - destBegin = EB6D -End of Item 0227 - -Begin of Item 0228 - Format 0 - srcBegin = 96E1 - srcEnd = 96E7 - destBegin = EB77 -End of Item 0228 - -Begin of Item 0229 - Format 0 - srcBegin = 9721 - srcEnd = 9729 - destBegin = EC40 -End of Item 0229 - -Begin of Item 022A - Format 0 - srcBegin = 973F - srcEnd = 9751 - destBegin = EC57 -End of Item 022A - -Begin of Item 022B - Format 0 - srcBegin = 976A - srcEnd = 9771 - destBegin = EC77 -End of Item 022B - -Begin of Item 022C - Format 0 - srcBegin = 977D - srcEnd = 9784 - destBegin = EC87 -End of Item 022C - -Begin of Item 022D - Format 0 - srcBegin = 97A4 - srcEnd = 97AA - destBegin = ED44 -End of Item 022D - -Begin of Item 022E - Format 0 - srcBegin = 97B5 - srcEnd = 97E3 - destBegin = ED50 -End of Item 022E - -Begin of Item 022F - Format 0 - srcBegin = 97F7 - srcEnd = 980E - destBegin = ED89 -End of Item 022F - -Begin of Item 0230 - Format 0 - srcBegin = 980F - srcEnd = 984D - destBegin = EE40 -End of Item 0230 - -Begin of Item 0231 - Format 0 - srcBegin = 984E - srcEnd = 986E - destBegin = EE80 -End of Item 0231 - -Begin of Item 0232 - Format 0 - srcBegin = 986F - srcEnd = 9874 - destBegin = EF40 -End of Item 0232 - -Begin of Item 0233 - Format 0 - srcBegin = 98A8 - srcEnd = 98CD - destBegin = EF4C -End of Item 0233 - -Begin of Item 0234 - Format 0 - srcBegin = 98E9 - srcEnd = 9907 - destBegin = EF82 -End of Item 0234 - -Begin of Item 0235 - Format 0 - srcBegin = 9911 - srcEnd = 992D - destBegin = F047 -End of Item 0235 - -Begin of Item 0236 - Format 0 - srcBegin = 992F - srcEnd = 9949 - destBegin = F064 -End of Item 0236 - -Begin of Item 0237 - Format 0 - srcBegin = 994A - srcEnd = 9953 - destBegin = F080 -End of Item 0237 - -Begin of Item 0238 - Format 0 - srcBegin = 9956 - srcEnd = 9962 - destBegin = F08A -End of Item 0238 - -Begin of Item 0239 - Format 0 - srcBegin = 9967 - srcEnd = 996C - destBegin = E2BC -End of Item 0239 - -Begin of Item 023A - Format 0 - srcBegin = 999A - srcEnd = 99A4 - destBegin = F142 -End of Item 023A - -Begin of Item 023B - Format 0 - srcBegin = 99A9 - srcEnd = 99D8 - destBegin = F14F -End of Item 023B - -Begin of Item 023C - Format 0 - srcBegin = 99D9 - srcEnd = 99F9 - destBegin = F180 -End of Item 023C - -Begin of Item 023D - Format 0 - srcBegin = 99FA - srcEnd = 9A38 - destBegin = F240 -End of Item 023D - -Begin of Item 023E - Format 0 - srcBegin = 9A39 - srcEnd = 9A59 - destBegin = F280 -End of Item 023E - -Begin of Item 023F - Format 0 - srcBegin = 9A5A - srcEnd = 9A6B - destBegin = F340 -End of Item 023F - -Begin of Item 0240 - Format 0 - srcBegin = 9AA9 - srcEnd = 9AAF - destBegin = F35B -End of Item 0240 - -Begin of Item 0241 - Format 0 - srcBegin = 9AF0 - srcEnd = 9AF8 - destBegin = F38D -End of Item 0241 - -Begin of Item 0242 - Format 0 - srcBegin = 9AFC - srcEnd = 9B02 - destBegin = F397 -End of Item 0242 - -Begin of Item 0243 - Format 0 - srcBegin = 9B09 - srcEnd = 9B0E - destBegin = F441 -End of Item 0243 - -Begin of Item 0244 - Format 0 - srcBegin = 9B14 - srcEnd = 9B1E - destBegin = F44A -End of Item 0244 - -Begin of Item 0245 - Format 0 - srcBegin = 9B24 - srcEnd = 9B2E - destBegin = F458 -End of Item 0245 - -Begin of Item 0246 - Format 0 - srcBegin = 9B33 - srcEnd = 9B3A - destBegin = F465 -End of Item 0246 - -Begin of Item 0247 - Format 0 - srcBegin = 9B55 - srcEnd = 9B5A - destBegin = F479 -End of Item 0247 - -Begin of Item 0248 - Format 0 - srcBegin = 9B5B - srcEnd = 9B7B - destBegin = F480 -End of Item 0248 - -Begin of Item 0249 - Format 0 - srcBegin = 9B7C - srcEnd = 9BBA - destBegin = F540 -End of Item 0249 - -Begin of Item 024A - Format 0 - srcBegin = 9BBB - srcEnd = 9BDB - destBegin = F580 -End of Item 024A - -Begin of Item 024B - Format 0 - srcBegin = 9BDC - srcEnd = 9C1A - destBegin = F640 -End of Item 024B - -Begin of Item 024C - Format 0 - srcBegin = 9C1B - srcEnd = 9C3B - destBegin = F680 -End of Item 024C - -Begin of Item 024D - Format 0 - srcBegin = 9C3C - srcEnd = 9C7A - destBegin = F740 -End of Item 024D - -Begin of Item 024E - Format 0 - srcBegin = 9C9E - srcEnd = 9CA3 - destBegin = F6DF -End of Item 024E - -Begin of Item 024F - Format 0 - srcBegin = 9CB0 - srcEnd = 9CB7 - destBegin = F6ED -End of Item 024F - -Begin of Item 0250 - Format 0 - srcBegin = 9CE3 - srcEnd = 9D21 - destBegin = F840 -End of Item 0250 - -Begin of Item 0251 - Format 0 - srcBegin = 9D22 - srcEnd = 9D42 - destBegin = F880 -End of Item 0251 - -Begin of Item 0252 - Format 0 - srcBegin = 9D43 - srcEnd = 9D81 - destBegin = F940 -End of Item 0252 - -Begin of Item 0253 - Format 0 - srcBegin = 9D82 - srcEnd = 9DA2 - destBegin = F980 -End of Item 0253 - -Begin of Item 0254 - Format 0 - srcBegin = 9DA3 - srcEnd = 9DE1 - destBegin = FA40 -End of Item 0254 - -Begin of Item 0255 - Format 0 - srcBegin = 9DE2 - srcEnd = 9E02 - destBegin = FA80 -End of Item 0255 - -Begin of Item 0256 - Format 0 - srcBegin = 9E03 - srcEnd = 9E1E - destBegin = FB40 -End of Item 0256 - -Begin of Item 0257 - Format 0 - srcBegin = 9E66 - srcEnd = 9E6C - destBegin = F0D0 -End of Item 0257 - -Begin of Item 0258 - Format 0 - srcBegin = 9E74 - srcEnd = 9E7D - destBegin = FB74 -End of Item 0258 - -Begin of Item 0259 - Format 0 - srcBegin = 9E8C - srcEnd = 9E91 - destBegin = FB87 -End of Item 0259 - -Begin of Item 025A - Format 0 - srcBegin = 9E94 - srcEnd = 9E9C - destBegin = FB8D -End of Item 025A - -Begin of Item 025B - Format 0 - srcBegin = 9EA0 - srcEnd = 9EA5 - destBegin = FB97 -End of Item 025B - -Begin of Item 025C - Format 0 - srcBegin = 9EAB - srcEnd = 9EB3 - destBegin = FC40 -End of Item 025C - -Begin of Item 025D - Format 0 - srcBegin = 9EF0 - srcEnd = 9EF8 - destBegin = FC6D -End of Item 025D - -Begin of Item 025E - Format 0 - srcBegin = 9EFF - srcEnd = 9F05 - destBegin = FC78 -End of Item 025E - -Begin of Item 025F - Format 0 - srcBegin = 9F1A - srcEnd = 9F1F - destBegin = FC8D -End of Item 025F - -Begin of Item 0260 - Format 0 - srcBegin = 9F23 - srcEnd = 9F2B - destBegin = FC94 -End of Item 0260 - -Begin of Item 0261 - Format 0 - srcBegin = 9F45 - srcEnd = 9F4F - destBegin = FD4D -End of Item 0261 - -Begin of Item 0262 - Format 0 - srcBegin = 9F52 - srcEnd = 9F78 - destBegin = FD58 -End of Item 0262 - -Begin of Item 0263 - Format 0 - srcBegin = 9F79 - srcEnd = 9F7E - destBegin = FD80 -End of Item 0263 - -Begin of Item 0264 - Format 0 - srcBegin = 9F85 - srcEnd = 9F8A - destBegin = F6B5 -End of Item 0264 - -Begin of Item 0265 - Format 0 - srcBegin = 9F8D - srcEnd = 9F98 - destBegin = FD88 -End of Item 0265 - -Begin of Item 0266 - Format 0 - srcBegin = FE49 - srcEnd = FE52 - destBegin = A968 -End of Item 0266 - -Begin of Item 0267 - Format 0 - srcBegin = FE59 - srcEnd = FE61 - destBegin = A976 -End of Item 0267 - -Begin of Item 0268 - Format 0 - srcBegin = FF05 - srcEnd = FF5D - destBegin = A3A5 -End of Item 0268 - -Begin of Item 0269 - Format 1 - srcBegin = 00A4 - srcEnd = 00B7 - mappingOffset = 0000 - Mapping = - A1E8 FFFD FFFD A1EC A1A7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A1E3 A1C0 FFFD FFFD - FFFD FFFD FFFD A1A4 -End of Item 0269 - -Begin of Item 026A - Format 1 - srcBegin = 00D7 - srcEnd = 0101 - mappingOffset = 0014 - Mapping = - A1C1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD A8A4 A8A2 FFFD FFFD FFFD FFFD FFFD - FFFD A8A8 A8A6 A8BA FFFD A8AC A8AA FFFD - FFFD FFFD FFFD A8B0 A8AE FFFD FFFD FFFD - A1C2 FFFD A8B4 A8B2 FFFD A8B9 FFFD FFFD - FFFD FFFD A8A1 -End of Item 026A - -Begin of Item 026B - Format 1 - srcBegin = 0113 - srcEnd = 011B - mappingOffset = 003F - Mapping = - A8A5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - A8A7 -End of Item 026B - -Begin of Item 026C - Format 2 - srcBegin = 012B - destBegin = A8A9 -End of Item 026C - -Begin of Item 026D - Format 1 - srcBegin = 0144 - srcEnd = 014D - mappingOffset = 0048 - Mapping = - A8BD FFFD FFFD FFFD A8BE FFFD FFFD FFFD - FFFD A8AD -End of Item 026D - -Begin of Item 026E - Format 2 - srcBegin = 016B - destBegin = A8B1 -End of Item 026E - -Begin of Item 026F - Format 1 - srcBegin = 01CE - srcEnd = 01DC - mappingOffset = 0052 - Mapping = - A8A3 FFFD A8AB FFFD A8AF FFFD A8B3 FFFD - A8B5 FFFD A8B6 FFFD A8B7 FFFD A8B8 -End of Item 026F - -Begin of Item 0270 - Format 2 - srcBegin = 0251 - destBegin = A8BB -End of Item 0270 - -Begin of Item 0271 - Format 2 - srcBegin = 0261 - destBegin = A8C0 -End of Item 0271 - -Begin of Item 0272 - Format 1 - srcBegin = 02C7 - srcEnd = 02CB - mappingOffset = 0061 - Mapping = - A1A6 FFFD A1A5 A840 A841 -End of Item 0272 - -Begin of Item 0273 - Format 2 - srcBegin = 02D9 - destBegin = A842 -End of Item 0273 - -Begin of Item 0274 - Format 2 - srcBegin = 0401 - destBegin = A7A7 -End of Item 0274 - -Begin of Item 0275 - Format 2 - srcBegin = 0451 - destBegin = A7D7 -End of Item 0275 - -Begin of Item 0276 - Format 1 - srcBegin = 2010 - srcEnd = 203B - mappingOffset = 0066 - Mapping = - A95C FFFD FFFD A843 A1AA A844 A1AC FFFD - A1AE A1AF FFFD FFFD A1B0 A1B1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD A845 A1AD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - A1EB FFFD A1E4 A1E5 FFFD A846 FFFD FFFD - FFFD FFFD FFFD A1F9 -End of Item 0276 - -Begin of Item 0277 - Format 1 - srcBegin = 2103 - srcEnd = 2109 - mappingOffset = 0092 - Mapping = - A1E6 FFFD A847 FFFD FFFD FFFD A848 -End of Item 0277 - -Begin of Item 0278 - Format 1 - srcBegin = 2116 - srcEnd = 2121 - mappingOffset = 0099 - Mapping = - A1ED FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD A959 -End of Item 0278 - -Begin of Item 0279 - Format 1 - srcBegin = 2190 - srcEnd = 2199 - mappingOffset = 00A5 - Mapping = - A1FB A1FC A1FA A1FD FFFD FFFD A849 A84A - A84B A84C -End of Item 0279 - -Begin of Item 027A - Format 1 - srcBegin = 2208 - srcEnd = 2252 - mappingOffset = 00AF - Mapping = - A1CA FFFD FFFD FFFD FFFD FFFD FFFD A1C7 - FFFD A1C6 FFFD FFFD FFFD A84D FFFD FFFD - FFFD FFFD A1CC FFFD FFFD A1D8 A1DE A84E - A1CF FFFD FFFD A84F FFFD A1CE FFFD A1C4 - A1C5 A1C9 A1C8 A1D2 FFFD FFFD A1D3 FFFD - FFFD FFFD FFFD FFFD A1E0 A1DF A1C3 A1CB - FFFD FFFD FFFD FFFD FFFD A1D7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - A1D6 FFFD FFFD FFFD A1D5 FFFD FFFD FFFD - FFFD FFFD A850 -End of Item 027A - -Begin of Item 027B - Format 1 - srcBegin = 2260 - srcEnd = 226F - mappingOffset = 00FA - Mapping = - A1D9 A1D4 FFFD FFFD A1DC A1DD A851 A852 - FFFD FFFD FFFD FFFD FFFD FFFD A1DA A1DB -End of Item 027B - -Begin of Item 027C - Format 1 - srcBegin = 2295 - srcEnd = 2299 - mappingOffset = 010A - Mapping = - A892 FFFD FFFD FFFD A1D1 -End of Item 027C - -Begin of Item 027D - Format 2 - srcBegin = 22A5 - destBegin = A1CD -End of Item 027D - -Begin of Item 027E - Format 2 - srcBegin = 22BF - destBegin = A853 -End of Item 027E - -Begin of Item 027F - Format 2 - srcBegin = 2312 - destBegin = A1D0 -End of Item 027F - -Begin of Item 0280 - Format 1 - srcBegin = 2593 - srcEnd = 25A1 - mappingOffset = 010F - Mapping = - A888 A889 A88A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD A1F6 A1F5 -End of Item 0280 - -Begin of Item 0281 - Format 1 - srcBegin = 25B2 - srcEnd = 25CF - mappingOffset = 011E - Mapping = - A1F8 A1F7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD A88B A88C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A1F4 A1F3 FFFD FFFD - FFFD A1F0 FFFD FFFD A1F2 A1F1 -End of Item 0281 - -Begin of Item 0282 - Format 1 - srcBegin = 25E2 - srcEnd = 25E5 - mappingOffset = 013C - Mapping = - A88D A88E A88F A890 -End of Item 0282 - -Begin of Item 0283 - Format 1 - srcBegin = 2605 - srcEnd = 2609 - mappingOffset = 0140 - Mapping = - A1EF A1EE FFFD FFFD A891 -End of Item 0283 - -Begin of Item 0284 - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 0145 - Mapping = - A1E2 FFFD A1E1 -End of Item 0284 - -Begin of Item 0285 - Format 1 - srcBegin = 3000 - srcEnd = 301E - mappingOffset = 0148 - Mapping = - A1A1 A1A2 A1A3 A1A8 FFFD A1A9 A965 A996 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - A1BE A1BF A893 A1FE A1B2 A1B3 A1BC A1BD - FFFD FFFD FFFD FFFD FFFD A894 A895 -End of Item 0285 - -Begin of Item 0286 - Format 1 - srcBegin = 309B - srcEnd = 309E - mappingOffset = 0167 - Mapping = - A961 A962 A966 A967 -End of Item 0286 - -Begin of Item 0287 - Format 1 - srcBegin = 30FC - srcEnd = 30FE - mappingOffset = 016B - Mapping = - A960 A963 A964 -End of Item 0287 - -Begin of Item 0288 - Format 2 - srcBegin = 3231 - destBegin = A95A -End of Item 0288 - -Begin of Item 0289 - Format 2 - srcBegin = 32A3 - destBegin = A949 -End of Item 0289 - -Begin of Item 028A - Format 1 - srcBegin = 338E - srcEnd = 338F - mappingOffset = 016E - Mapping = - A94A A94B -End of Item 028A - -Begin of Item 028B - Format 1 - srcBegin = 339C - srcEnd = 33A1 - mappingOffset = 0170 - Mapping = - A94C A94D A94E FFFD FFFD A94F -End of Item 028B - -Begin of Item 028C - Format 1 - srcBegin = 33C4 - srcEnd = 33D5 - mappingOffset = 0176 - Mapping = - A950 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD A951 FFFD FFFD A952 A953 FFFD - FFFD A954 -End of Item 028C - -Begin of Item 028D - Format 1 - srcBegin = 4E00 - srcEnd = 4FFE - mappingOffset = 0188 - Mapping = - D2BB B6A1 8140 C6DF 8141 8142 8143 CDF2 - D5C9 C8FD C9CF CFC2 D8A2 B2BB D3EB 8144 - D8A4 B3F3 8145 D7A8 C7D2 D8A7 CAC0 8146 - C7F0 B1FB D2B5 B4D4 B6AB CBBF D8A9 8147 - 8148 8149 B6AA 814A C1BD D1CF 814B C9A5 - D8AD 814C B8F6 D1BE E3DC D6D0 814D 814E - B7E1 814F B4AE 8150 C1D9 8151 D8BC 8152 - CDE8 B5A4 CEAA D6F7 8153 C0F6 BED9 D8AF - 8154 8155 8156 C4CB 8157 BEC3 8158 D8B1 - C3B4 D2E5 8159 D6AE CEDA D5A7 BAF5 B7A6 - C0D6 815A C6B9 C5D2 C7C7 815B B9D4 815C - B3CB D2D2 815D 815E D8BF BEC5 C6F2 D2B2 - CFB0 CFE7 815F 8160 8161 8162 CAE9 8163 - 8164 D8C0 FFFD FFFD FFFD FFFD FFFD FFFD - C2F2 C2D2 816B C8E9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD C7AC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD C1CB 817D - D3E8 D5F9 817E CAC2 B6FE D8A1 D3DA BFF7 - 8180 D4C6 BBA5 D8C1 CEE5 BEAE 8181 8182 - D8A8 8183 D1C7 D0A9 8184 8185 8186 D8BD - D9EF CDF6 BFBA 8187 BDBB BAA5 D2E0 B2FA - BAE0 C4B6 8188 CFED BEA9 CDA4 C1C1 8189 - 818A 818B C7D7 D9F1 818C D9F4 818D 818E - 818F 8190 C8CB D8E9 8191 8192 8193 D2DA - CAB2 C8CA D8EC D8EA D8C6 BDF6 C6CD B3F0 - 8194 D8EB BDF1 BDE9 8195 C8D4 B4D3 8196 - 8197 C2D8 8198 B2D6 D7D0 CACB CBFB D5CC - B8B6 CFC9 8199 819A 819B D9DA D8F0 C7AA - 819C D8EE 819D B4FA C1EE D2D4 819E 819F - D8ED 81A0 D2C7 D8EF C3C7 81A1 81A2 81A3 - D1F6 81A4 D6D9 D8F2 81A5 D8F5 BCFE BCDB - 81A6 81A7 81A8 C8CE 81A9 B7DD 81AA B7C2 - 81AB C6F3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D8F8 D2C1 81B3 81B4 CEE9 BCBF B7FC - B7A5 D0DD 81B5 81B6 81B7 81B8 81B9 D6DA - D3C5 BBEF BBE1 D8F1 81BA 81BB C9A1 CEB0 - B4AB 81BC D8F3 81BD C9CB D8F6 C2D7 D8F7 - 81BE 81BF CEB1 D8F9 81C0 81C1 81C2 B2AE - B9C0 81C3 D9A3 81C4 B0E9 81C5 C1E6 81C6 - C9EC 81C7 CBC5 81C8 CBC6 D9A4 81C9 81CA - 81CB 81CC 81CD B5E8 81CE 81CF B5AB FFFD - FFFD FFFD FFFD FFFD FFFD CEBB B5CD D7A1 - D7F4 D3D3 81D6 CCE5 81D7 BACE 81D8 D9A2 - D9DC D3E0 D8FD B7F0 D7F7 D8FE D8FA D9A1 - C4E3 81D9 81DA D3B6 D8F4 D9DD 81DB D8FB - 81DC C5E5 81DD 81DE C0D0 81DF 81E0 D1F0 - B0DB 81E1 81E2 BCD1 D9A6 81E3 D9A5 81E4 - 81E5 81E6 81E7 D9AC D9AE 81E8 D9AB CAB9 - 81E9 81EA 81EB D9A9 D6B6 81EC 81ED 81EE - B3DE D9A8 81EF C0FD 81F0 CACC 81F1 D9AA - 81F2 D9A7 81F3 81F4 D9B0 81F5 81F6 B6B1 - 81F7 81F8 81F9 B9A9 81FA D2C0 81FB 81FC - CFC0 81FD 81FE C2C2 8240 BDC4 D5EC B2E0 - C7C8 BFEB D9AD 8241 D9AF 8242 CEEA BAEE - 8243 8244 8245 8246 8247 C7D6 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD B1E3 - 8251 8252 8253 B4D9 B6ED D9B4 8254 8255 - 8256 8257 BFA1 8258 8259 825A D9DE C7CE - C0FE D9B8 825B 825C 825D 825E 825F CBD7 - B7FD 8260 D9B5 8261 D9B7 B1A3 D3E1 D9B9 - 8262 D0C5 8263 D9B6 8264 8265 D9B1 8266 - D9B2 C1A9 D9B3 8267 8268 BCF3 D0DE B8A9 - 8269 BEE3 826A D9BD 826B 826C 826D 826E - D9BA 826F B0B3 8270 8271 8272 D9C2 -End of Item 028D - -Begin of Item 028E - Format 1 - srcBegin = 500B - srcEnd = 502E - mappingOffset = 0387 - Mapping = - 8280 D9C4 B1B6 8281 D9BF 8282 8283 B5B9 - 8284 BEF3 8285 8286 8287 CCC8 BAF2 D2D0 - 8288 D9C3 8289 828A BDE8 828B B3AB 828C - 828D 828E D9C5 BEEB 828F D9C6 D9BB C4DF - 8290 D9BE D9C1 D9C0 -End of Item 028E - -Begin of Item 028F - Format 1 - srcBegin = 503A - srcEnd = 508D - mappingOffset = 03AB - Mapping = - D5AE 829C D6B5 829D C7E3 829E 829F 82A0 - 82A1 D9C8 82A2 82A3 82A4 BCD9 D9CA 82A5 - 82A6 82A7 D9BC 82A8 D9CB C6AB 82A9 82AA - 82AB 82AC 82AD D9C9 82AE 82AF 82B0 82B1 - D7F6 82B2 CDA3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD BDA1 FFFD FFFD FFFD FFFD - FFFD FFFD D9CC FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C5BC CDB5 82CA 82CB - 82CC D9CD 82CD 82CE D9C7 B3A5 BFFE 82CF - 82D0 82D1 82D2 B8B5 82D3 82D4 C0FC 82D5 - 82D6 82D7 82D8 B0F8 -End of Item 028F - -Begin of Item 0290 - Format 1 - srcBegin = 50A3 - srcEnd = 50BC - mappingOffset = 03FF - Mapping = - B4F6 82EE D9CE 82EF D9CF B4A2 D9D0 82F0 - 82F1 B4DF 82F2 82F3 82F4 82F5 82F6 B0C1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D9D1 - C9B5 82FE -End of Item 0290 - -Begin of Item 0291 - Format 1 - srcBegin = 50CF - srcEnd = 50DA - mappingOffset = 0419 - Mapping = - CFF1 FFFD FFFD FFFD FFFD FFFD FFFD D9D2 - 8358 8359 835A C1C5 -End of Item 0291 - -Begin of Item 0292 - Format 1 - srcBegin = 50E6 - srcEnd = 5112 - mappingOffset = 0425 - Mapping = - D9D6 C9AE 8366 8367 8368 8369 D9D5 D9D4 - D9D7 836A 836B 836C 836D CBDB 836E BDA9 - 836F 8370 8371 8372 8373 C6A7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D9D3 D9D8 837E 8380 8381 D9D9 FFFD FFFD - FFFD FFFD FFFD FFFD C8E5 -End of Item 0292 - -Begin of Item 0293 - Format 2 - srcBegin = 5121 - destBegin = C0DC -End of Item 0293 - -Begin of Item 0294 - Format 1 - srcBegin = 513F - srcEnd = 52E4 - mappingOffset = 0452 - Mapping = - B6F9 D8A3 D4CA 83B3 D4AA D0D6 B3E4 D5D7 - 83B4 CFC8 B9E2 83B5 BFCB 83B6 C3E2 83B7 - 83B8 83B9 B6D2 83BA 83BB CDC3 D9EE D9F0 - 83BC 83BD 83BE B5B3 83BF B6B5 83C0 83C1 - 83C2 83C3 83C4 BEA4 83C5 83C6 C8EB 83C7 - 83C8 C8AB 83C9 83CA B0CB B9AB C1F9 D9E2 - 83CB C0BC B9B2 83CC B9D8 D0CB B1F8 C6E4 - BEDF B5E4 D7C8 83CD D1F8 BCE6 CADE 83CE - 83CF BCBD D9E6 D8E7 83D0 83D1 C4DA 83D2 - 83D3 B8D4 C8BD 83D4 83D5 B2E1 D4D9 83D6 - 83D7 83D8 83D9 C3B0 83DA 83DB C3E1 DAA2 - C8DF 83DC D0B4 83DD BEFC C5A9 83DE 83DF - 83E0 B9DA 83E1 DAA3 83E2 D4A9 DAA4 83E3 - 83E4 83E5 83E6 83E7 D9FB B6AC 83E8 83E9 - B7EB B1F9 D9FC B3E5 BEF6 83EA BFF6 D2B1 - C0E4 83EB 83EC 83ED B6B3 D9FE D9FD 83EE - 83EF BEBB 83F0 83F1 83F2 C6E0 83F3 D7BC - DAA1 83F4 C1B9 83F5 B5F2 C1E8 83F6 83F7 - BCF5 83F8 B4D5 FFFD FFFD FFFD FFFD FFFD - FFFD 8440 8441 8442 C1DD 8443 C4FD 8444 - 8445 BCB8 B7B2 8446 8447 B7EF FFFD FFFD - FFFD FFFD FFFD FFFD D9EC 844E C6BE 844F - BFAD BBCB 8450 8451 B5CA 8452 DBC9 D0D7 - 8453 CDB9 B0BC B3F6 BBF7 DBCA BAAF 8454 - D4E4 B5B6 B5F3 D8D6 C8D0 8455 8456 B7D6 - C7D0 D8D7 8457 BFAF 8458 8459 DBBB D8D8 - 845A 845B D0CC BBAE 845C 845D 845E EBBE - C1D0 C1F5 D4F2 B8D5 B4B4 845F B3F5 8460 - 8461 C9BE 8462 8463 8464 C5D0 8465 8466 - 8467 C5D9 C0FB 8468 B1F0 8469 D8D9 B9CE - 846A B5BD 846B 846C D8DA 846D 846E D6C6 - CBA2 C8AF C9B2 B4CC BFCC 846F B9F4 8470 - D8DB D8DC B6E7 BCC1 CCEA FFFD FFFD FFFD - FFFD FFFD FFFD CFF7 8477 D8DD C7B0 8478 - 8479 B9D0 BDA3 847A 847B CCDE 847C C6CA - 847D 847E 8480 8481 8482 D8E0 8483 D8DE - 8484 8485 D8DF 8486 8487 8488 B0FE 8489 - BEE7 848A CAA3 BCF4 848B 848C 848D 848E - B8B1 848F 8490 B8EE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D8E2 849B - BDCB 849C D8E4 D8E3 849D 849E 849F 84A0 - 84A1 C5FC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D8E5 84A9 84AA D8E6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C1A6 84B2 C8B0 B0EC - B9A6 BCD3 CEF1 DBBD C1D3 84B3 84B4 84B5 - 84B6 B6AF D6FA C5AC BDD9 DBBE DBBF 84B7 - 84B8 84B9 C0F8 BEA2 C0CD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD DBC0 - CAC6 84C4 84C5 84C6 B2AA 84C7 84C8 84C9 - D3C2 84CA C3E3 84CB D1AB 84CC 84CD 84CE - 84CF DBC2 84D0 C0D5 84D1 84D2 84D3 DBC3 - 84D4 BFB1 FFFD FFFD FFFD FFFD FFFD FFFD - C4BC 84DB 84DC 84DD 84DE C7DA -End of Item 0294 - -Begin of Item 0295 - Format 1 - srcBegin = 52F0 - srcEnd = 563F - mappingOffset = 05F8 - Mapping = - DBC4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D9E8 C9D7 84F2 84F3 84F4 B9B4 CEF0 - D4C8 84F5 84F6 84F7 84F8 B0FC B4D2 84F9 - D0D9 84FA 84FB 84FC 84FD D9E9 84FE DECB - D9EB 8540 8541 8542 8543 D8B0 BBAF B1B1 - 8544 B3D7 D8CE 8545 8546 D4D1 8547 8548 - BDB3 BFEF 8549 CFBB 854A 854B D8D0 854C - 854D 854E B7CB 854F 8550 8551 D8D1 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C6A5 C7F8 D2BD 855C 855D D8D2 C4E4 - 855E CAAE 855F C7A7 8560 D8A6 8561 C9FD - CEE7 BBDC B0EB 8562 8563 8564 BBAA D0AD - 8565 B1B0 D7E4 D7BF 8566 B5A5 C2F4 C4CF - 8567 8568 B2A9 8569 B2B7 856A B1E5 DFB2 - D5BC BFA8 C2AC D8D5 C2B1 856B D8D4 CED4 - 856C DAE0 856D CEC0 856E 856F D8B4 C3AE - D3A1 CEA3 8570 BCB4 C8B4 C2D1 8571 BEED - D0B6 8572 DAE1 8573 8574 8575 8576 C7E4 - 8577 8578 B3A7 8579 B6F2 CCFC C0FA 857A - 857B C0F7 857C D1B9 D1E1 D8C7 857D 857E - 8580 8581 8582 8583 8584 B2DE 8585 8586 - C0E5 8587 BAF1 8588 8589 D8C8 858A D4AD - 858B 858C CFE1 D8C9 858D D8CA CFC3 858E - B3F8 BEC7 858F 8590 8591 8592 D8CB FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DBCC 859A - 859B 859C 859D C8A5 859E 859F 85A0 CFD8 - 85A1 C8FE B2CE 85A2 85A3 85A4 85A5 85A6 - D3D6 B2E6 BCB0 D3D1 CBAB B7B4 85A7 85A8 - 85A9 B7A2 85AA 85AB CAE5 85AC C8A1 CADC - B1E4 D0F0 85AD C5D1 85AE 85AF 85B0 DBC5 - B5FE 85B1 85B2 BFDA B9C5 BEE4 C1ED 85B3 - DFB6 DFB5 D6BB BDD0 D5D9 B0C8 B6A3 BFC9 - CCA8 DFB3 CAB7 D3D2 85B4 D8CF D2B6 BAC5 - CBBE CCBE 85B5 DFB7 B5F0 DFB4 85B6 85B7 - 85B8 D3F5 85B9 B3D4 B8F7 85BA DFBA 85BB - BACF BCAA B5F5 85BC CDAC C3FB BAF3 C0F4 - CDC2 CFF2 DFB8 CFC5 85BD C2C0 DFB9 C2F0 - 85BE 85BF 85C0 BEFD 85C1 C1DF CDCC D2F7 - B7CD DFC1 85C2 DFC4 85C3 85C4 B7F1 B0C9 - B6D6 B7D4 85C5 BAAC CCFD BFD4 CBB1 C6F4 - 85C6 D6A8 DFC5 85C7 CEE2 B3B3 85C8 85C9 - CEFC B4B5 85CA CEC7 BAF0 85CB CEE1 85CC - D1BD 85CD 85CE DFC0 85CF 85D0 B4F4 85D1 - B3CA 85D2 B8E6 DFBB 85D3 85D4 85D5 85D6 - C4C5 85D7 DFBC DFBD DFBE C5BB DFBF DFC2 - D4B1 DFC3 85D8 C7BA CED8 85D9 85DA 85DB - 85DC 85DD C4D8 85DE DFCA 85DF DFCF 85E0 - D6DC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DFC9 DFDA CEB6 85E9 BAC7 DFCE DFC8 - C5DE 85EA 85EB C9EB BAF4 C3FC 85EC 85ED - BED7 85EE DFC6 85EF DFCD 85F0 C5D8 85F1 - 85F2 85F3 85F4 D5A6 BACD 85F5 BECC D3BD - B8C0 85F6 D6E4 85F7 DFC7 B9BE BFA7 85F8 - 85F9 C1FC DFCB DFCC 85FA DFD0 85FB 85FC - 85FD 85FE 8640 DFDB DFE5 8641 DFD7 DFD6 - D7C9 DFE3 DFE4 E5EB D2A7 DFD2 8642 BFA9 - 8643 D4DB 8644 BFC8 DFD4 8645 8646 8647 - CFCC 8648 8649 DFDD 864A D1CA 864B DFDE - B0A7 C6B7 DFD3 864C BAE5 864D B6DF CDDB - B9FE D4D5 864E 864F DFDF CFEC B0A5 DFE7 - DFD1 D1C6 DFD5 DFD8 DFD9 DFDC 8650 BBA9 - 8651 DFE0 DFE1 8652 DFE2 DFE6 DFE8 D3B4 - 8653 8654 8655 8656 8657 B8E7 C5B6 DFEA - C9DA C1A8 C4C4 8658 8659 BFDE CFF8 865A - 865B 865C D5DC DFEE FFFD FFFD FFFD FFFD - FFFD FFFD B2B8 8663 BADF DFEC 8664 DBC1 - 8665 D1E4 8666 8667 8668 8669 CBF4 B4BD - 866A B0A6 866B 866C 866D 866E 866F DFF1 - CCC6 DFF2 8670 8671 DFED FFFD FFFD FFFD - FFFD FFFD FFFD DFE9 8678 8679 867A 867B - DFEB 867C DFEF DFF0 BBBD 867D 867E DFF3 - 8680 8681 DFF4 8682 BBA3 8683 CADB CEA8 - E0A7 B3AA 8684 E0A6 8685 8686 8687 E0A1 - 8688 8689 868A 868B DFFE 868C CDD9 DFFC - 868D DFFA 868E BFD0 D7C4 868F C9CC 8690 - 8691 DFF8 B0A1 8692 8693 8694 8695 8696 - DFFD 8697 8698 8699 869A DFFB E0A2 869B - 869C 869D 869E 869F E0A8 86A0 86A1 86A2 - 86A3 B7C8 86A4 86A5 C6A1 C9B6 C0B2 DFF5 - 86A6 86A7 C5BE 86A8 D8C4 DFF9 C4F6 FFFD - FFFD FFFD FFFD FFFD FFFD E0A3 E0A4 E0A5 - D0A5 86AF 86B0 E0B4 CCE4 86B1 E0B1 86B2 - BFA6 E0AF CEB9 E0AB C9C6 86B3 86B4 C0AE - E0AE BAED BAB0 E0A9 86B5 86B6 86B7 DFF6 - 86B8 E0B3 86B9 86BA E0B8 86BB 86BC 86BD - B4AD E0B9 86BE 86BF CFB2 BAC8 86C0 E0B0 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D0FA - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E0AC 86D1 D4FB 86D2 DFF7 86D3 C5E7 - 86D4 E0AD 86D5 D3F7 86D6 E0B6 E0B7 86D7 - 86D8 86D9 86DA 86DB E0C4 D0E1 86DC 86DD - 86DE E0BC 86DF 86E0 E0C9 E0CA 86E1 86E2 - 86E3 E0BE E0AA C9A4 E0C1 86E4 E0B2 86E5 - 86E6 86E7 86E8 86E9 CAC8 E0C3 86EA E0B5 - 86EB CECB 86EC CBC3 E0CD E0C6 E0C2 86ED - E0CB 86EE E0BA E0BF E0C0 86EF 86F0 E0C5 - 86F1 86F2 E0C7 E0C8 86F3 E0CC 86F4 E0BB - 86F5 86F6 86F7 86F8 86F9 CBD4 E0D5 86FA - E0D6 E0D2 86FB 86FC 86FD 86FE 8740 8741 - E0D0 BCCE 8742 8743 E0D1 8744 B8C2 D8C5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D0EA 874D 874E C2EF 874F 8750 E0CF E0BD - 8751 8752 8753 E0D4 E0D3 8754 8755 E0D7 - 8756 8757 8758 8759 E0DC E0D8 875A 875B - 875C D6F6 B3B0 875D D7EC 875E CBBB 875F - 8760 E0DA 8761 CEFB 8762 8763 8764 BAD9 -End of Item 0295 - -Begin of Item 0296 - Format 1 - srcBegin = 564C - srcEnd = 5693 - mappingOffset = 0948 - Mapping = - E0E1 E0DD D2AD 8771 8772 8773 8774 8775 - E0E2 8776 8777 E0DB E0D9 E0DF 8778 8779 - E0E0 877A 877B 877C 877D 877E E0DE 8780 - E0E4 8781 8782 8783 C6F7 D8AC D4EB E0E6 - CAC9 8784 8785 8786 8787 E0E5 8788 8789 - 878A 878B B8C1 878C 878D 878E 878F E0E7 - E0E8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E0E9 E0E3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD BABF CCE7 879F 87A0 87A1 E0EA -End of Item 0296 - -Begin of Item 0297 - Format 2 - srcBegin = 56A3 - destBegin = CFF9 -End of Item 0297 - -Begin of Item 0298 - Format 1 - srcBegin = 56AF - srcEnd = 56BC - mappingOffset = 0990 - Mapping = - E0EB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C8C2 87C3 87C4 87C5 87C6 BDC0 -End of Item 0298 - -Begin of Item 0299 - Format 1 - srcBegin = 56CA - srcEnd = 570A - mappingOffset = 099E - Mapping = - C4D2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E0EC 87DD 87DE E0ED 87DF 87E0 - C7F4 CBC4 87E1 E0EE BBD8 D8B6 D2F2 E0EF - CDC5 87E2 B6DA FFFD FFFD FFFD FFFD FFFD - FFFD E0F1 87E9 D4B0 87EA 87EB C0A7 B4D1 - 87EC 87ED CEA7 E0F0 87EE 87EF 87F0 E0F2 - B9CC 87F1 87F2 B9FA CDBC E0F3 87F3 87F4 - 87F5 C6D4 E0F4 87F6 D4B2 87F7 C8A6 E0F6 - E0F5 -End of Item 0299 - -Begin of Item 029A - Format 1 - srcBegin = 571C - srcEnd = 5835 - mappingOffset = 09DF - Mapping = - E0F7 884A 884B CDC1 884C 884D 884E CAA5 - 884F 8850 8851 8852 D4DA DBD7 DBD9 8853 - DBD8 B9E7 DBDC DBDD B5D8 8854 8855 DBDA - 8856 8857 8858 8859 885A DBDB B3A1 DBDF - 885B 885C BBF8 885D D6B7 885E DBE0 885F - 8860 8861 8862 BEF9 8863 8864 B7BB 8865 - DBD0 CCAE BFB2 BBB5 D7F8 BFD3 8866 8867 - 8868 8869 886A BFE9 886B 886C BCE1 CCB3 - DBDE B0D3 CEEB B7D8 D7B9 C6C2 886D 886E - C0A4 886F CCB9 8870 DBE7 DBE1 C6BA DBE3 - 8871 DBE8 8872 C5F7 8873 8874 8875 DBEA - 8876 8877 DBE9 BFC0 8878 8879 887A DBE6 - DBE5 887B 887C 887D 887E 8880 B4B9 C0AC - C2A2 DBE2 DBE4 8881 8882 8883 8884 D0CD - DBED 8885 8886 8887 8888 8889 C0DD DBF2 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD B6E2 - 8891 8892 8893 8894 DBF3 DBD2 B9B8 D4AB - DBEC 8895 BFD1 DBF0 8896 DBD1 8897 B5E6 - 8898 DBEB BFE5 8899 889A 889B DBEE 889C - DBF1 889D 889E 889F DBF9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B9A1 B0A3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C2F1 - 88B0 88B1 B3C7 DBEF 88B2 88B3 DBF8 88B4 - C6D2 DBF4 88B5 88B6 DBF5 DBF7 DBF6 88B7 - 88B8 DBFE 88B9 D3F2 B2BA 88BA 88BB 88BC - DBFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DCA4 88C5 DBFB 88C6 88C7 88C8 88C9 - DBFA 88CA 88CB 88CC DBFC C5E0 BBF9 88CD - 88CE DCA3 88CF 88D0 DCA5 88D1 CCC3 88D2 - 88D3 88D4 B6D1 DDC0 88D5 88D6 88D7 DCA1 - 88D8 DCA2 88D9 88DA 88DB C7B5 88DC 88DD - 88DE B6E9 88DF 88E0 88E1 DCA7 88E2 88E3 - 88E4 88E5 DCA6 88E6 DCA9 B1A4 88E7 88E8 - B5CC 88E9 88EA 88EB 88EC 88ED BFB0 88EE - 88EF 88F0 88F1 88F2 D1DF 88F3 88F4 88F5 - 88F6 B6C2 -End of Item 029A - -Begin of Item 029B - Format 1 - srcBegin = 5844 - srcEnd = 586C - mappingOffset = 0AF9 - Mapping = - DCA8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CBFA EBF3 894D 894E 894F CBDC 8950 8951 - CBFE 8952 8953 8954 CCC1 8955 8956 8957 - 8958 8959 C8FB FFFD FFFD FFFD FFFD FFFD - FFFD DCAA 8960 8961 8962 8963 8964 CCEE - DCAB -End of Item 029B - -Begin of Item 029C - Format 1 - srcBegin = 587E - srcEnd = 58A9 - mappingOffset = 0B22 - Mapping = - DBD3 8976 DCAF DCAC 8977 BEB3 8978 CAFB - 8979 897A 897B DCAD 897C 897D 897E 8980 - 8981 8982 8983 8984 C9CA C4B9 8985 8986 - 8987 8988 8989 C7BD DCAE 898A 898B 898C - D4F6 D0E6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C4AB B6D5 -End of Item 029C - -Begin of Item 029D - Format 1 - srcBegin = 58BC - srcEnd = 58C5 - mappingOffset = 0B4E - Mapping = - DBD4 89A7 89A8 89A9 89AA B1DA 89AB 89AC - 89AD DBD5 -End of Item 029D - -Begin of Item 029E - Format 1 - srcBegin = 58D1 - srcEnd = 58D5 - mappingOffset = 0B58 - Mapping = - DBD6 89B9 89BA 89BB BABE -End of Item 029E - -Begin of Item 029F - Format 1 - srcBegin = 58E4 - srcEnd = 5965 - mappingOffset = 0B5D - Mapping = - C8C0 FFFD FFFD FFFD FFFD FFFD FFFD CABF - C8C9 89D0 D7B3 89D1 C9F9 89D2 89D3 BFC7 - 89D4 89D5 BAF8 89D6 89D7 D2BC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E2BA 89E0 - B4A6 89E1 89E2 B1B8 89E3 89E4 89E5 89E6 - 89E7 B8B4 89E8 CFC4 89E9 89EA 89EB 89EC - D9E7 CFA6 CDE2 89ED 89EE D9ED B6E0 89EF - D2B9 89F0 89F1 B9BB 89F2 89F3 89F4 89F5 - E2B9 E2B7 89F6 B4F3 89F7 CCEC CCAB B7F2 - 89F8 D8B2 D1EB BABB 89F9 CAA7 89FA 89FB - CDB7 89FC 89FD D2C4 BFE4 BCD0 B6E1 89FE - DEC5 8A40 8A41 8A42 8A43 DEC6 DBBC 8A44 - D1D9 8A45 8A46 C6E6 C4CE B7EE 8A47 B7DC - 8A48 8A49 BFFC D7E0 8A4A C6F5 8A4B 8A4C - B1BC DEC8 BDB1 CCD7 DECA 8A4D DEC9 8A4E - 8A4F 8A50 8A51 8A52 B5EC 8A53 C9DD 8A54 - 8A55 B0C2 -End of Item 029F - -Begin of Item 02A0 - Format 1 - srcBegin = 5973 - srcEnd = 59EC - mappingOffset = 0BDF - Mapping = - C5AE C5AB 8A63 C4CC 8A64 BCE9 CBFD 8A65 - 8A66 8A67 BAC3 8A68 8A69 8A6A E5F9 C8E7 - E5FA CDFD 8A6B D7B1 B8BE C2E8 8A6C C8D1 - 8A6D 8A6E E5FB 8A6F 8A70 8A71 8A72 B6CA - BCCB 8A73 8A74 D1FD E6A1 8A75 C3EE 8A76 - 8A77 8A78 8A79 E6A4 8A7A 8A7B 8A7C 8A7D - E5FE E6A5 CDD7 8A7E 8A80 B7C1 E5FC E5FD - E6A3 8A81 8A82 C4DD E6A8 8A83 8A84 E6A7 - FFFD FFFD FFFD FFFD FFFD FFFD C3C3 8A8B - C6DE 8A8C 8A8D E6AA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C4B7 8A95 8A96 8A97 E6A2 - CABC 8A98 8A99 8A9A 8A9B BDE3 B9C3 E6A6 - D0D5 CEAF 8A9C 8A9D E6A9 E6B0 8A9E D2A6 - 8A9F BDAA E6AD 8AA0 8AA1 8AA2 8AA3 8AA4 - E6AF 8AA5 C0D1 8AA6 8AA7 D2CC 8AA8 8AA9 - 8AAA BCA7 -End of Item 02A0 - -Begin of Item 02A1 - Format 1 - srcBegin = 59F9 - srcEnd = 5A7F - mappingOffset = 0C59 - Mapping = - E6B1 8AB7 D2F6 8AB8 8AB9 8ABA D7CB 8ABB - CDFE 8ABC CDDE C2A6 E6AB E6AC BDBF E6AE - E6B3 8ABD 8ABE E6B2 8ABF 8AC0 8AC1 8AC2 - E6B6 8AC3 E6B8 8AC4 8AC5 8AC6 8AC7 C4EF - 8AC8 8AC9 8ACA C4C8 8ACB 8ACC BEEA C9EF - 8ACD 8ACE E6B7 8ACF B6F0 8AD0 8AD1 8AD2 - C3E4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D3E9 E6B4 8ADA E6B5 8ADB C8A2 8ADC 8ADD - 8ADE 8ADF 8AE0 E6BD 8AE1 8AE2 8AE3 E6B9 - 8AE4 8AE5 8AE6 8AE7 8AE8 C6C5 8AE9 8AEA - CDF1 E6BB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E6BC 8AF5 8AF6 8AF7 - 8AF8 BBE9 FFFD FFFD FFFD FFFD FFFD FFFD - 8B40 E6BE 8B41 8B42 8B43 8B44 E6BA 8B45 - 8B46 C0B7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D3A4 E6BF C9F4 E6C3 8B50 - 8B51 E6C4 8B52 8B53 8B54 8B55 D0F6 -End of Item 02A1 - -Begin of Item 02A2 - Format 1 - srcBegin = 5A92 - srcEnd = 5A9B - mappingOffset = 0CE0 - Mapping = - C3BD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C3C4 E6C2 -End of Item 02A2 - -Begin of Item 02A3 - Format 1 - srcBegin = 5AAA - srcEnd = 5AF1 - mappingOffset = 0CEA - Mapping = - E6C1 8B7D 8B7E 8B80 8B81 8B82 8B83 8B84 - E6C7 CFB1 8B85 EBF4 8B86 8B87 E6CA 8B88 - 8B89 8B8A 8B8B 8B8C E6C5 8B8D 8B8E BCDE - C9A9 FFFD FFFD FFFD FFFD FFFD FFFD BCB5 - 8B95 8B96 CFD3 8B97 8B98 8B99 8B9A 8B9B - E6C8 8B9C E6C9 8B9D E6CE 8B9E E6D0 8B9F - 8BA0 8BA1 E6D1 8BA2 8BA3 8BA4 E6CB B5D5 - 8BA5 E6CC 8BA6 8BA7 E6CF 8BA8 8BA9 C4DB - 8BAA E6C6 8BAB 8BAC 8BAD 8BAE 8BAF E6CD -End of Item 02A3 - -Begin of Item 02A4 - Format 2 - srcBegin = 5B09 - destBegin = E6D2 -End of Item 02A4 - -Begin of Item 02A5 - Format 1 - srcBegin = 5B16 - srcEnd = 5B17 - mappingOffset = 0D32 - Mapping = - E6D4 E6D3 -End of Item 02A5 - -Begin of Item 02A6 - Format 1 - srcBegin = 5B32 - srcEnd = 5B40 - mappingOffset = 0D34 - Mapping = - E6D5 8BED D9F8 8BEE 8BEF E6D6 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E6D7 -End of Item 02A6 - -Begin of Item 02A7 - Format 1 - srcBegin = 5B50 - srcEnd = 5D4C - mappingOffset = 0D43 - Mapping = - D7D3 E6DD 8C48 E6DE BFD7 D4D0 8C49 D7D6 - B4E6 CBEF E6DA D8C3 D7CE D0A2 8C4A C3CF - 8C4B 8C4C E6DF BCBE B9C2 E6DB D1A7 8C4D - 8C4E BAA2 C2CF 8C4F D8AB 8C50 8C51 8C52 - CAEB E5EE 8C53 E6DC 8C54 B7F5 8C55 8C56 - 8C57 8C58 C8E6 8C59 8C5A C4F5 8C5B 8C5C - E5B2 C4FE 8C5D CBFC E5B3 D5AC 8C5E D3EE - CAD8 B0B2 8C5F CBCE CDEA 8C60 8C61 BAEA - 8C62 8C63 8C64 E5B5 8C65 E5B4 8C66 D7DA - B9D9 D6E6 B6A8 CDF0 D2CB B1A6 CAB5 8C67 - B3E8 C9F3 BFCD D0FB CAD2 E5B6 BBC2 8C68 - 8C69 8C6A CFDC B9AC 8C6B 8C6C 8C6D 8C6E - D4D7 8C6F 8C70 BAA6 D1E7 CFFC BCD2 8C71 - E5B7 C8DD 8C72 8C73 8C74 BFED B1F6 CBDE - 8C75 8C76 BCC5 8C77 BCC4 D2FA C3DC BFDC - 8C78 8C79 8C7A 8C7B B8BB 8C7C 8C7D 8C7E - C3C2 8C80 BAAE D4A2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C7DE C4AF B2EC - 8C8A B9D1 8C8B 8C8C E5BB C1C8 8C8D 8C8E - D5AF 8C8F 8C90 8C91 8C92 8C93 E5BC 8C94 - E5BE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B4E7 B6D4 CBC2 D1B0 B5BC 8C9C 8C9D CAD9 - 8C9E B7E2 8C9F 8CA0 C9E4 8CA1 BDAB 8CA2 - 8CA3 CEBE D7F0 8CA4 8CA5 8CA6 8CA7 D0A1 - 8CA8 C9D9 8CA9 8CAA B6FB E6D8 BCE2 8CAB - B3BE 8CAC C9D0 8CAD E6D9 B3A2 8CAE 8CAF - 8CB0 8CB1 DECC 8CB2 D3C8 DECD 8CB3 D2A2 - 8CB4 8CB5 8CB6 8CB7 DECE 8CB8 8CB9 8CBA - 8CBB BECD 8CBC 8CBD DECF 8CBE 8CBF 8CC0 - CAAC D2FC B3DF E5EA C4E1 BEA1 CEB2 C4F2 - BED6 C6A8 B2E3 8CC1 8CC2 BED3 8CC3 8CC4 - C7FC CCEB BDEC CEDD 8CC5 8CC6 CABA C6C1 - E5EC D0BC 8CC7 8CC8 8CC9 D5B9 8CCA 8CCB - 8CCC E5ED 8CCD 8CCE 8CCF 8CD0 CAF4 8CD1 - CDC0 C2C5 8CD2 E5EF 8CD3 C2C4 E5F0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E5F8 CDCD - 8CDB C9BD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D2D9 E1A8 8CE3 8CE4 8CE5 8CE6 D3EC - 8CE7 CBEA C6F1 8CE8 8CE9 8CEA 8CEB 8CEC - E1AC 8CED 8CEE 8CEF E1A7 E1A9 8CF0 8CF1 - E1AA E1AF 8CF2 8CF3 B2ED 8CF4 E1AB B8DA - E1AD E1AE E1B0 B5BA E1B1 8CF5 8CF6 8CF7 - 8CF8 8CF9 E1B3 E1B8 8CFA 8CFB 8CFC 8CFD - 8CFE D1D2 8D40 E1B6 E1B5 C1EB 8D41 8D42 - 8D43 E1B7 8D44 D4C0 8D45 E1B2 8D46 E1BA - B0B6 8D47 8D48 8D49 8D4A E1B4 8D4B BFF9 - 8D4C E1B9 8D4D 8D4E E1BB FFFD FFFD FFFD - FFFD FFFD FFFD E1BE FFFD FFFD FFFD FFFD - FFFD FFFD E1BC FFFD FFFD FFFD FFFD FFFD - FFFD D6C5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CFBF 8D68 8D69 E1BD E1BF C2CD 8D6A - B6EB 8D6B D3F8 8D6C 8D6D C7CD 8D6E 8D6F - B7E5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD BEFE 8D7A 8D7B 8D7C 8D7D - 8D7E 8D80 E1C0 E1C1 8D81 8D82 E1C7 B3E7 - FFFD FFFD FFFD FFFD FFFD FFFD C6E9 8D89 - 8D8A 8D8B 8D8C 8D8D B4DE 8D8E D1C2 8D8F - 8D90 8D91 8D92 E1C8 8D93 8D94 E1C6 8D95 - 8D96 8D97 8D98 8D99 E1C5 8D9A E1C3 E1C2 - 8D9B B1C0 8D9C 8D9D 8D9E D5B8 E1C4 8D9F - 8DA0 8DA1 8DA2 8DA3 E1CB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E1CC E1CA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EFFA - 8DB4 8DB5 E1D3 E1D2 C7B6 -End of Item 02A7 - -Begin of Item 02A8 - Format 1 - srcBegin = 5D58 - srcEnd = 5D5D - mappingOffset = 0F40 - Mapping = - E1C9 8DC1 8DC2 E1CE 8DC3 E1D0 -End of Item 02A8 - -Begin of Item 02A9 - Format 1 - srcBegin = 5D69 - srcEnd = 5D74 - mappingOffset = 0F46 - Mapping = - E1D4 8DCF E1D1 E1CD 8DD0 8DD1 E1CF 8DD2 - 8DD3 8DD4 8DD5 E1D5 -End of Item 02A9 - -Begin of Item 02AA - Format 2 - srcBegin = 5D82 - destBegin = E1D6 -End of Item 02AA - -Begin of Item 02AB - Format 1 - srcBegin = 5D99 - srcEnd = 5DA0 - mappingOffset = 0F52 - Mapping = - E1D7 8DF9 8DFA 8DFB E1D8 8DFC 8DFD 8DFE -End of Item 02AB - -Begin of Item 02AC - Format 2 - srcBegin = 5DB7 - destBegin = E1DA -End of Item 02AC - -Begin of Item 02AD - Format 1 - srcBegin = 5DC5 - srcEnd = 5DCD - mappingOffset = 0F5A - Mapping = - E1DB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CEA1 -End of Item 02AD - -Begin of Item 02AE - Format 1 - srcBegin = 5DDB - srcEnd = 5E62 - mappingOffset = 0F63 - Mapping = - E7DD 8E77 B4A8 D6DD 8E78 8E79 D1B2 B3B2 - 8E7A 8E7B B9A4 D7F3 C7C9 BEDE B9AE 8E7C - CED7 8E7D 8E7E B2EE DBCF 8E80 BCBA D2D1 - CBC8 B0CD 8E81 8E82 CFEF 8E83 8E84 8E85 - 8E86 8E87 D9E3 BDED 8E88 8E89 B1D2 CAD0 - B2BC 8E8A CBA7 B7AB 8E8B CAA6 8E8C 8E8D - 8E8E CFA3 8E8F 8E90 E0F8 D5CA E0FB 8E91 - 8E92 E0FA C5C1 CCFB 8E93 C1B1 E0F9 D6E3 - B2AF D6C4 B5DB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B4F8 D6A1 8E9C 8E9D 8E9E - 8E9F 8EA0 CFAF B0EF 8EA1 8EA2 E0FC 8EA3 - 8EA4 8EA5 8EA6 8EA7 E1A1 B3A3 8EA8 8EA9 - E0FD E0FE C3B1 8EAA 8EAB 8EAC 8EAD C3DD - 8EAE E1A2 B7F9 FFFD FFFD FFFD FFFD FFFD - FFFD BBCF FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E1A3 C4BB 8EBC 8EBD 8EBE 8EBF 8EC0 - E1A4 8EC1 8EC2 E1A5 8EC3 8EC4 E1A6 B4B1 -End of Item 02AE - -Begin of Item 02AF - Format 1 - srcBegin = 5E72 - srcEnd = 5EDB - mappingOffset = 0FEB - Mapping = - B8C9 C6BD C4EA 8ED4 B2A2 8ED5 D0D2 8ED6 - E7DB BBC3 D3D7 D3C4 8ED7 B9E3 E2CF 8ED8 - 8ED9 8EDA D7AF 8EDB C7EC B1D3 8EDC 8EDD - B4B2 E2D1 8EDE 8EDF 8EE0 D0F2 C2AE E2D0 - 8EE1 BFE2 D3A6 B5D7 E2D2 B5EA 8EE2 C3ED - B8FD 8EE3 B8AE 8EE4 C5D3 B7CF E2D4 8EE5 - 8EE6 8EE7 8EE8 E2D3 B6C8 D7F9 8EE9 8EEA - 8EEB 8EEC 8EED CDA5 8EEE 8EEF 8EF0 8EF1 - 8EF2 E2D8 8EF3 E2D6 CAFC BFB5 D3B9 E2D5 - 8EF4 8EF5 8EF6 8EF7 E2D7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8F40 8F41 8F42 C1AE - C0C8 FFFD FFFD FFFD FFFD FFFD FFFD E2DB - E2DA C0AA 8F49 8F4A C1CE 8F4B 8F4C 8F4D - 8F4E E2DC -End of Item 02AF - -Begin of Item 02B0 - Format 1 - srcBegin = 5EE8 - srcEnd = 5F40 - mappingOffset = 1055 - Mapping = - E2DD 8F5B E2DE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DBC8 8F65 D1D3 CDA2 - 8F66 8F67 BDA8 8F68 8F69 8F6A DEC3 D8A5 - BFAA DBCD D2EC C6FA C5AA 8F6B 8F6C 8F6D - DEC4 8F6E B1D7 DFAE 8F6F 8F70 8F71 CABD - 8F72 DFB1 8F73 B9AD 8F74 D2FD 8F75 B8A5 - BAEB 8F76 8F77 B3DA 8F78 8F79 8F7A B5DC - D5C5 8F7B 8F7C 8F7D 8F7E C3D6 CFD2 BBA1 - 8F80 E5F3 E5F2 8F81 8F82 E5F4 8F83 CDE4 - 8F84 C8F5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B5AF C7BF 8F8C E5F6 8F8D 8F8E 8F8F - ECB0 -End of Item 02B0 - -Begin of Item 02B1 - Format 1 - srcBegin = 5F50 - srcEnd = 612B - mappingOffset = 10AE - Mapping = - E5E6 8F9F B9E9 B5B1 8FA0 C2BC E5E8 E5E7 - E5E9 8FA1 8FA2 8FA3 8FA4 D2CD 8FA5 8FA6 - 8FA7 E1EA D0CE 8FA8 CDAE 8FA9 D1E5 8FAA - 8FAB B2CA B1EB 8FAC B1F2 C5ED 8FAD 8FAE - D5C3 D3B0 8FAF E1DC 8FB0 8FB1 8FB2 E1DD - 8FB3 D2DB 8FB4 B3B9 B1CB 8FB5 8FB6 8FB7 - CDF9 D5F7 E1DE 8FB8 BEB6 B4FD 8FB9 E1DF - BADC E1E0 BBB2 C2C9 E1E1 8FBA 8FBB 8FBC - D0EC 8FBD CDBD 8FBE 8FBF E1E2 8FC0 B5C3 - C5C7 E1E3 8FC1 8FC2 E1E4 8FC3 8FC4 8FC5 - 8FC6 D3F9 FFFD FFFD FFFD FFFD FFFD FFFD - E1E5 8FCD D1AD 8FCE 8FCF E1E6 CEA2 FFFD - FFFD FFFD FFFD FFFD FFFD E1E7 8FD6 B5C2 - 8FD7 8FD8 8FD9 8FDA E1E8 BBD5 8FDB 8FDC - 8FDD 8FDE 8FDF D0C4 E2E0 B1D8 D2E4 8FE0 - 8FE1 E2E1 8FE2 8FE3 BCC9 C8CC 8FE4 E2E3 - ECFE ECFD DFAF 8FE5 8FE6 8FE7 E2E2 D6BE - CDFC C3A6 8FE8 8FE9 8FEA E3C3 8FEB 8FEC - D6D2 E2E7 8FED 8FEE E2E8 8FEF 8FF0 D3C7 - 8FF1 8FF2 E2EC BFEC 8FF3 E2ED E2E5 8FF4 - 8FF5 B3C0 8FF6 8FF7 8FF8 C4EE 8FF9 8FFA - E2EE 8FFB 8FFC D0C3 8FFD BAF6 E2E9 B7DE - BBB3 CCAC CBCB E2E4 E2E6 E2EA E2EB 8FFE - 9040 9041 E2F7 9042 9043 E2F4 D4F5 E2F3 - 9044 9045 C5AD 9046 D5FA C5C2 B2C0 9047 - 9048 E2EF 9049 E2F2 C1AF CBBC 904A 904B - B5A1 E2F9 904C 904D 904E BCB1 E2F1 D0D4 - D4B9 E2F5 B9D6 E2F6 904F 9050 9051 C7D3 - 9052 9053 9054 9055 9056 E2F0 9057 9058 - 9059 905A 905B D7DC EDA1 905C 905D E2F8 - 905E EDA5 E2FE CAD1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C1B5 9066 BBD0 9067 9068 - BFD6 9069 BAE3 906A 906B CBA1 906C 906D - 906E EDA6 EDA3 906F 9070 EDA2 9071 9072 - 9073 9074 BBD6 EDA7 D0F4 9075 9076 EDA4 - BADE B6F7 E3A1 B6B2 CCF1 B9A7 9077 CFA2 - C7A1 9078 9079 BFD2 907A 907B B6F1 907C - E2FA E2FB E2FD E2FC C4D5 E3A2 907D D3C1 - 907E 9080 9081 E3A7 C7C4 9082 9083 9084 - 9085 CFA4 9086 9087 E3A9 BAB7 9088 9089 - 908A 908B E3A8 908C BBDA 908D E3A3 908E - 908F 9090 E3A4 E3AA 9091 E3A6 9092 CEF2 - D3C6 9093 9094 BBBC 9095 9096 D4C3 9097 - C4FA 9098 9099 EDA8 D0FC E3A5 909A C3F5 - 909B E3AD B1AF 909C E3B2 909D 909E 909F - BCC2 90A0 90A1 E3AC B5BF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C7E9 E3B0 90AA - 90AB 90AC BEAA CDEF 90AD 90AE 90AF 90B0 - 90B1 BBF3 90B2 90B3 90B4 CCE8 90B5 90B6 - E3AF 90B7 E3B1 90B8 CFA7 E3AE 90B9 CEA9 - BBDD 90BA 90BB 90BC 90BD 90BE B5EB BEE5 - B2D2 B3CD 90BF B1B9 E3AB B2D1 B5AC B9DF - B6E8 90C0 90C1 CFEB E3B7 90C2 BBCC 90C3 - 90C4 C8C7 D0CA 90C5 90C6 90C7 90C8 90C9 - E3B8 B3EE 90CA 90CB 90CC 90CD EDA9 90CE - D3FA D3E4 90CF 90D0 90D1 EDAA E3B9 D2E2 - 90D2 90D3 90D4 90D5 90D6 E3B5 90D7 90D8 - 90D9 90DA D3DE 90DB 90DC 90DD 90DE B8D0 - E3B3 90DF 90E0 E3B6 B7DF 90E1 E3B4 C0A2 - 90E2 90E3 90E4 E3BA -End of Item 02B1 - -Begin of Item 02B2 - Format 1 - srcBegin = 613F - srcEnd = 6177 - mappingOffset = 128A - Mapping = - D4B8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9140 B4C8 9141 E3BB 9142 BBC5 9143 C9F7 - 9144 9145 C9E5 9146 9147 9148 C4BD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD EDAB 9150 - 9151 9152 9153 C2FD 9154 9155 9156 9157 - BBDB BFAE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CEBF 915F 9160 9161 9162 E3BC 9163 - BFB6 -End of Item 02B2 - -Begin of Item 02B3 - Format 1 - srcBegin = 618B - srcEnd = 61D4 - mappingOffset = 12C3 - Mapping = - B1EF 9177 9178 D4F7 9179 917A 917B 917C - 917D E3BE 917E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD EDAD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E3BF BAA9 EDAC 9190 - 9191 E3BD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E3C0 FFFD FFFD FFFD - FFFD FFFD FFFD BAB6 91A2 91A3 91A4 B6AE - 91A5 91A6 91A7 91A8 91A9 D0B8 91AA B0C3 - EDAE 91AB 91AC 91AD 91AE 91AF EDAF C0C1 - 91B0 E3C1 -End of Item 02B3 - -Begin of Item 02B4 - Format 2 - srcBegin = 61E6 - destBegin = C5B3 -End of Item 02B4 - -Begin of Item 02B5 - Format 1 - srcBegin = 61F5 - srcEnd = 64E6 - mappingOffset = 130D - Mapping = - E3C2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DCB2 FFFD FFFD FFFD FFFD FFFD - FFFD EDB0 91DF B8EA 91E0 CEEC EAA7 D0E7 - CAF9 C8D6 CFB7 B3C9 CED2 BDE4 91E1 91E2 - E3DE BBF2 EAA8 D5BD 91E3 C6DD EAA9 91E4 - 91E5 91E6 EAAA 91E7 EAAC EAAB 91E8 EAAE - EAAD 91E9 91EA 91EB 91EC BDD8 91ED EAAF - 91EE C2BE 91EF 91F0 91F1 91F2 B4C1 B4F7 - 91F3 91F4 BBA7 91F5 91F6 91F7 91F8 91F9 - ECE6 ECE5 B7BF CBF9 B1E2 91FA ECE7 91FB - 91FC 91FD C9C8 ECE8 ECE9 91FE CAD6 DED0 - B2C5 D4FA 9240 9241 C6CB B0C7 B4F2 C8D3 - 9242 9243 9244 CDD0 9245 9246 BFB8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD BFDB 924E - 924F C7A4 D6B4 9250 C0A9 DED1 C9A8 D1EF - C5A4 B0E7 B3B6 C8C5 9251 9252 B0E2 9253 - 9254 B7F6 9255 9256 C5FA 9257 9258 B6F3 - 9259 D5D2 B3D0 BCBC 925A 925B 925C B3AD - 925D 925E 925F 9260 BEF1 B0D1 FFFD FFFD - FFFD FFFD FFFD FFFD D2D6 CAE3 D7A5 9267 - CDB6 B6B6 BFB9 D5DB 9268 B8A7 C5D7 9269 - 926A 926B DED2 BFD9 C2D5 C7C0 926C BBA4 - B1A8 926D 926E C5EA 926F 9270 C5FB CCA7 - 9271 9272 9273 9274 B1A7 9275 9276 9277 - B5D6 9278 9279 927A C4A8 927B DED3 D1BA - B3E9 927C C3F2 927D 927E B7F7 9280 D6F4 - B5A3 B2F0 C4B4 C4E9 C0AD DED4 9281 B0E8 - C5C4 C1E0 9282 B9D5 9283 BEDC CDD8 B0CE - 9284 CDCF DED6 BED0 D7BE DED5 D5D0 B0DD - 9285 9286 C4E2 9287 9288 C2A3 BCF0 9289 - D3B5 C0B9 C5A1 B2A6 D4F1 928A 928B C0A8 - CAC3 DED7 D5FC 928C B9B0 928D C8AD CBA9 - 928E DED9 BFBD 928F 9290 9291 9292 C6B4 - D7A7 CAB0 C4C3 9293 B3D6 B9D2 9294 9295 - 9296 9297 D6B8 EAFC B0B4 9298 9299 929A - 929B BFE6 929C 929D CCF4 929E 929F 92A0 - 92A1 CDDA 92A2 92A3 92A4 D6BF C2CE 92A5 - CECE CCA2 D0AE C4D3 B5B2 DED8 D5F5 BCB7 - BBD3 92A6 92A7 B0A4 92A8 C5B2 B4EC 92A9 - 92AA 92AB D5F1 92AC 92AD EAFD FFFD FFFD - FFFD FFFD FFFD FFFD DEDA CDA6 92B4 92B5 - CDEC 92B6 92B7 92B8 92B9 CEE6 DEDC 92BA - CDB1 C0A6 92BB 92BC D7BD 92BD DEDB B0C6 - BAB4 C9D3 C4F3 BEE8 92BE 92BF 92C0 92C1 - B2B6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C0CC CBF0 92CA BCF1 BBBB B5B7 92CB - 92CC 92CD C5F5 92CE DEE6 92CF 92D0 92D1 - DEE3 BEDD 92D2 92D3 DEDF 92D4 92D5 92D6 - 92D7 B4B7 BDDD 92D8 92D9 DEE0 C4ED 92DA - 92DB 92DC 92DD CFC6 92DE B5E0 92DF 92E0 - 92E1 92E2 B6DE CADA B5F4 DEE5 92E3 D5C6 - 92E4 DEE1 CCCD C6FE 92E5 C5C5 92E6 92E7 - 92E8 D2B4 92E9 BEF2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C2D3 92F1 CCBD B3B8 92F2 - BDD3 92F3 BFD8 CDC6 D1DA B4EB 92F4 DEE4 - DEDD DEE7 92F5 EAFE 92F6 92F7 C2B0 DEE2 - 92F8 92F9 D6C0 B5A7 92FA B2F4 92FB DEE8 - 92FC DEF2 92FD 92FE 9340 9341 9342 DEED - 9343 DEF1 9344 9345 C8E0 9346 9347 9348 - D7E1 DEEF C3E8 CCE1 9349 B2E5 934A 934B - 934C D2BE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DEEE 9354 DEEB CED5 9355 B4A7 9356 - 9357 9358 9359 935A BFAB BEBE 935B 935C - BDD2 935D 935E 935F 9360 DEE9 9361 D4AE - 9362 DEDE 9363 DEEA 9364 9365 9366 9367 - C0BF 9368 DEEC B2F3 B8E9 C2A7 9369 936A - BDC1 936B 936C 936D 936E 936F DEF5 DEF8 - 9370 9371 B2AB B4A4 9372 9373 B4EA C9A6 - FFFD FFFD FFFD FFFD FFFD FFFD DEF6 CBD1 - 937A B8E3 937B DEF7 DEFA 937C 937D 937E - 9380 DEF9 9381 9382 9383 CCC2 9384 B0E1 - B4EE FFFD FFFD FFFD FFFD FFFD FFFD E5BA - 938B 938C 938D 938E 938F D0AF 9390 9391 - B2EB 9392 EBA1 9393 DEF4 9394 9395 C9E3 - DEF3 B0DA D2A1 B1F7 9396 CCAF FFFD FFFD - FFFD FFFD FFFD FFFD FFFD DEF0 939E CBA4 - 939F 93A0 93A1 D5AA 93A2 93A3 93A4 93A5 - 93A6 DEFB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B4DD 93AF C4A6 93B0 93B1 93B2 - DEFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C3FE C4A1 DFA1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C1CC 93C4 DEFC - BEEF 93C5 C6B2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B3C5 C8F6 93CF 93D0 - CBBA DEFE 93D1 93D2 DFA4 93D3 93D4 93D5 - 93D6 D7B2 93D7 93D8 93D9 93DA 93DB B3B7 - 93DC 93DD 93DE 93DF C1C3 93E0 93E1 C7CB - B2A5 B4E9 93E2 D7AB 93E3 93E4 93E5 93E6 - C4EC 93E7 DFA2 DFA3 93E8 DFA5 93E9 BAB3 - 93EA 93EB 93EC DFA6 93ED C0DE 93EE 93EF - C9C3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B2D9 C7E6 93F7 DFA7 93F8 C7DC 93F9 93FA - 93FB 93FC DFA8 EBA2 93FD 93FE 9440 9441 - 9442 CBD3 9443 9444 9445 DFAA 9446 DFA9 - 9447 B2C1 -End of Item 02B5 - -Begin of Item 02B6 - Format 1 - srcBegin = 6500 - srcEnd = 6577 - mappingOffset = 15FF - Mapping = - C5CA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DFAB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D4DC 9471 9472 9473 9474 9475 - C8C1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9480 9481 9482 DFAC 9483 9484 - 9485 9486 9487 BEF0 9488 9489 DFAD D6A7 - 948A 948B 948C 948D EAB7 EBB6 CAD5 948E - D8FC B8C4 948F B9A5 9490 9491 B7C5 D5FE - 9492 9493 9494 9495 9496 B9CA 9497 9498 - D0A7 F4CD 9499 949A B5D0 949B 949C C3F4 - 949D BEC8 949E 949F 94A0 EBB7 B0BD 94A1 - 94A2 BDCC 94A3 C1B2 94A4 B1D6 B3A8 94A5 - 94A6 94A7 B8D2 C9A2 94A8 94A9 B6D8 94AA - 94AB 94AC 94AD EBB8 BEB4 94AE 94AF 94B0 - CAFD 94B1 C7C3 94B2 D5FB 94B3 94B4 B7F3 -End of Item 02B6 - -Begin of Item 02B7 - Format 1 - srcBegin = 6587 - srcEnd = 66BE - mappingOffset = 1677 - Mapping = - CEC4 94C4 94C5 94C6 D5AB B1F3 94C7 94C8 - 94C9 ECB3 B0DF 94CA ECB5 94CB 94CC 94CD - B6B7 94CE C1CF 94CF F5FA D0B1 94D0 94D1 - D5E5 94D2 CED3 94D3 94D4 BDEF B3E2 94D5 - B8AB 94D6 D5B6 94D7 EDBD 94D8 B6CF 94D9 - CBB9 D0C2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B7BD 94E2 94E3 ECB6 CAA9 94E4 - 94E5 94E6 C5D4 94E7 ECB9 ECB8 C2C3 ECB7 - 94E8 94E9 94EA 94EB D0FD ECBA 94EC ECBB - D7E5 94ED 94EE ECBC 94EF 94F0 94F1 ECBD - C6EC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CEDE 94FA BCC8 94FB 94FC C8D5 B5A9 - BEC9 D6BC D4E7 94FD 94FE D1AE D0F1 EAB8 - EAB9 EABA BAB5 9540 9541 9542 9543 CAB1 - BFF5 9544 9545 CDFA 9546 9547 9548 9549 - 954A EAC0 954B B0BA EABE 954C 954D C0A5 - 954E 954F 9550 EABB 9551 B2FD 9552 C3F7 - BBE8 9553 9554 9555 D2D7 CEF4 EABF 9556 - 9557 9558 EABC 9559 955A 955B EAC3 955C - D0C7 D3B3 955D 955E 955F 9560 B4BA 9561 - C3C1 D7F2 9562 9563 9564 9565 D5D1 9566 - CAC7 9567 EAC5 9568 9569 EAC4 EAC7 EAC6 - 956A 956B 956C 956D 956E D6E7 956F CFD4 - 9570 9571 EACB 9572 BBCE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BDFA C9CE 957A 957B - EACC 957C 957D C9B9 CFFE EACA D4CE EACD - EACF 957E 9580 CDED 9581 9582 9583 9584 - EAC9 9585 EACE 9586 9587 CEEE 9588 BBDE - 9589 B3BF 958A 958B 958C 958D 958E C6D5 - BEB0 CEFA 958F 9590 9591 C7E7 9592 BEA7 - EAD0 9593 9594 D6C7 9595 9596 9597 C1C0 - 9598 9599 959A D4DD 959B EAD1 959C 959D - CFBE 959E 959F 95A0 95A1 EAD2 95A2 95A3 - 95A4 95A5 CAEE 95A6 95A7 95A8 95A9 C5AF - B0B5 95AA 95AB 95AC 95AD 95AE EAD4 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EAD3 F4DF 95B8 95B9 95BA 95BB 95BC C4BA - 95BD 95BE 95BF 95C0 95C1 B1A9 95C2 95C3 - 95C4 95C5 E5DF 95C6 95C7 95C8 95C9 EAD5 -End of Item 02B7 - -Begin of Item 02B8 - Format 1 - srcBegin = 66D9 - srcEnd = 6912 - mappingOffset = 17AF - Mapping = - CAEF 95E4 EAD6 EAD7 C6D8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EAD8 95ED 95EE - EAD9 FFFD FFFD FFFD FFFD FFFD FFFD D4BB - 95F5 C7FA D2B7 B8FC 95F6 95F7 EAC2 95F8 - B2DC 95F9 95FA C2FC 95FB D4F8 CCE6 D7EE - 95FC 95FD 95FE 9640 9641 9642 9643 D4C2 - D3D0 EBC3 C5F3 9644 B7FE 9645 9646 EBD4 - 9647 9648 9649 CBB7 EBDE 964A C0CA 964B - 964C 964D CDFB 964E B3AF 964F C6DA FFFD - FFFD FFFD FFFD FFFD FFFD EBFC 9656 C4BE - 9657 CEB4 C4A9 B1BE D4FD 9658 CAF5 9659 - D6EC 965A 965B C6D3 B6E4 965C 965D 965E - 965F BBFA 9660 9661 D0E0 9662 9663 C9B1 - 9664 D4D3 C8A8 9665 9666 B8CB 9667 E8BE - C9BC 9668 9669 E8BB 966A C0EE D0D3 B2C4 - B4E5 966B E8BC 966C 966D D5C8 966E 966F - 9670 9671 9672 B6C5 9673 E8BD CAF8 B8DC - CCF5 9674 9675 9676 C0B4 9677 9678 D1EE - E8BF E8C2 9679 967A BABC 967B B1AD BDDC - 967C EABD E8C3 967D E8C6 967E E8CB 9680 - 9681 9682 9683 E8CC 9684 CBC9 B0E5 9685 - BCAB 9686 9687 B9B9 9688 9689 E8C1 968A - CDF7 968B E8CA 968C 968D 968E 968F CEF6 - 9690 9691 9692 9693 D5ED 9694 C1D6 E8C4 - 9695 C3B6 9696 B9FB D6A6 E8C8 9697 9698 - 9699 CAE0 D4E6 969A E8C0 969B E8C5 E8C7 - 969C C7B9 B7E3 969D E8C9 969E BFDD E8D2 - 969F 96A0 E8D7 96A1 E8D5 BCDC BCCF E8DB - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E8DE 96AA E8DA B1FA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B0D8 C4B3 - B8CC C6E2 C8BE C8E1 96B5 96B6 96B7 E8CF - E8D4 E8D6 96B8 B9F1 E8D8 D7F5 96B9 C4FB - 96BA E8DC 96BB 96BC B2E9 96BD 96BE 96BF - E8D1 96C0 96C1 BCED 96C2 96C3 BFC2 E8CD - D6F9 96C4 C1F8 B2F1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E8DF 96CD CAC1 E8D9 - 96CE 96CF 96D0 96D1 D5A4 96D2 B1EA D5BB - E8CE E8D0 B6B0 E8D3 96D3 E8DD C0B8 96D4 - CAF7 96D5 CBA8 96D6 96D7 C6DC C0F5 96D8 - 96D9 96DA 96DB 96DC E8E9 96DD 96DE 96DF - D0A3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E8F2 D6EA FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E8E0 E8E1 96EE 96EF 96F0 D1F9 BACB - B8F9 96F1 96F2 B8F1 D4D4 E8EF 96F3 E8EE - E8EC B9F0 CCD2 E8E6 CEA6 BFF2 96F4 B0B8 - E8F1 E8F0 96F5 D7C0 96F6 E8E4 96F7 CDA9 - C9A3 96F8 BBB8 BDDB E8EA FFFD FFFD FFFD - FFFD FFFD FFFD 9740 9741 9742 9743 E8E2 - E8E3 E8E5 B5B5 E8E7 C7C5 E8EB E8ED BDB0 - D7AE 9744 E8F8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E8F5 974D CDB0 E8F6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C1BA 9757 E8E8 9758 C3B7 B0F0 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E8F4 9761 - 9762 9763 E8F7 9764 9765 9766 B9A3 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C9D2 9771 9772 9773 C3CE CEE0 C0E6 - 9774 9775 9776 9777 CBF3 9778 CCDD D0B5 - 9779 977A CAE1 977B E8F3 977C 977D 977E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BCEC - 9787 E8F9 FFFD FFFD FFFD FFFD FFFD FFFD - C3DE 978E C6E5 978F B9F7 9790 9791 9792 - 9793 B0F4 9794 9795 D7D8 9796 9797 BCAC - 9798 C5EF 9799 979A 979B 979C 979D CCC4 - 979E 979F E9A6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C9AD 97AA E9A2 - C0E2 97AB 97AC 97AD BFC3 97AE 97AF 97B0 - E8FE B9D7 97B1 E8FB 97B2 97B3 97B4 97B5 - E9A4 97B6 97B7 97B8 D2CE 97B9 97BA 97BB - 97BC 97BD E9A3 97BE D6B2 D7B5 97BF E9A7 - 97C0 BDB7 -End of Item 02B8 - -Begin of Item 02B9 - Format 1 - srcBegin = 691F - srcEnd = 6942 - mappingOffset = 19E9 - Mapping = - E8FC E8FD 97CD 97CE 97CF E9A1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD CDD6 97D8 - 97D9 D2AC 97DA 97DB 97DC E9B2 97DD 97DE - 97DF 97E0 E9A9 97E1 97E2 97E3 B4AA 97E4 - B4BB 97E5 97E6 E9AB -End of Item 02B9 - -Begin of Item 02BA - Format 1 - srcBegin = 6954 - srcEnd = 69E0 - mappingOffset = 1A0D - Mapping = - D0A8 97F8 97F9 E9A5 97FA 97FB B3FE 97FC - 97FD E9AC C0E3 97FE E9AA 9840 9841 E9B9 - 9842 9843 E9B8 9844 9845 9846 9847 E9AE - 9848 9849 E8FA 984A 984B E9A8 984C 984D - 984E 984F 9850 BFAC E9B1 E9BA 9851 9852 - C2A5 9853 9854 9855 E9AF 9856 B8C5 9857 - E9AD 9858 D3DC E9B4 E9B5 E9B7 9859 985A - 985B E9C7 FFFD FFFD FFFD FFFD FFFD FFFD - C0C6 E9C5 9862 9863 E9B0 9864 9865 E9BB - B0F1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E9BC D5A5 9870 9871 E9BE - 9872 E9BF 9873 9874 9875 E9C1 9876 9877 - C1F1 9878 9879 C8B6 987A 987B 987C E9BD - 987D 987E 9880 9881 9882 E9C2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E9C3 988B - E9B3 988C E9B6 988D BBB1 988E 988F 9890 - E9C0 FFFD FFFD FFFD FFFD FFFD FFFD BCF7 - 9897 9898 9899 E9C4 E9C6 -End of Item 02BA - -Begin of Item 02BB - Format 1 - srcBegin = 69ED - srcEnd = 6A0A - mappingOffset = 1A9A - Mapping = - E9CA 98A6 98A7 98A8 98A9 E9CE FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B2DB 98B4 E9C8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B7AE -End of Item 02BB - -Begin of Item 02BC - Format 1 - srcBegin = 6A17 - srcEnd = 6A65 - mappingOffset = 1AB8 - Mapping = - E9CB E9CC FFFD FFFD FFFD FFFD FFFD FFFD - D5C1 98D1 C4A3 FFFD FFFD FFFD FFFD FFFD - FFFD E9D8 98D8 BAE1 98D9 98DA 98DB 98DC - E9C9 98DD D3A3 98DE 98DF 98E0 E9D4 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E9D7 E9D0 - 98E8 98E9 98EA 98EB 98EC E9CF 98ED 98EE - C7C1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E9D2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E9D9 B3C8 98FE E9D3 9940 9941 9942 - 9943 9944 CFF0 9945 9946 9947 E9CD -End of Item 02BC - -Begin of Item 02BD - Format 1 - srcBegin = 6A71 - srcEnd = 6AAC - mappingOffset = 1B07 - Mapping = - B3F7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E9D6 995A 995B E9DA 995C 995D 995E CCB4 - 995F 9960 9961 CFAD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E9D5 996B E9DC - E9DB 996C 996D 996E 996F 9970 E9DE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E9D1 - FFFD FFFD FFFD FFFD FFFD FFFD 9980 9981 - E9DD 9982 E9DF C3CA -End of Item 02BD - -Begin of Item 02BE - Format 1 - srcBegin = 6B20 - srcEnd = 6B4C - mappingOffset = 1B43 - Mapping = - C7B7 B4CE BBB6 D0C0 ECA3 99F6 99F7 C5B7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9A40 - 9A41 9A42 D3FB 9A43 9A44 9A45 9A46 ECA4 - 9A47 ECA5 C6DB 9A48 9A49 9A4A BFEE 9A4B - 9A4C 9A4D 9A4E ECA6 9A4F 9A50 ECA7 D0AA - 9A51 C7B8 9A52 9A53 B8E8 -End of Item 02BE - -Begin of Item 02BF - Format 1 - srcBegin = 6B59 - srcEnd = 6B6A - mappingOffset = 1B70 - Mapping = - ECA8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D6B9 D5FD B4CB B2BD CEE4 C6E7 9A68 - 9A69 CDE1 -End of Item 02BF - -Begin of Item 02C0 - Format 1 - srcBegin = 6B79 - srcEnd = 6E5F - mappingOffset = 1B82 - Mapping = - B4F5 9A78 CBC0 BCDF 9A79 9A7A 9A7B 9A7C - E9E2 E9E3 D1EA E9E5 9A7D B4F9 E9E4 9A7E - D1B3 CAE2 B2D0 9A80 E9E8 9A81 9A82 9A83 - 9A84 E9E6 E9E7 9A85 9A86 D6B3 9A87 9A88 - 9A89 E9E9 E9EA 9A8A 9A8B 9A8C 9A8D 9A8E - E9EB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E9EC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD ECAF C5B9 B6CE 9A9F D2F3 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B5EE 9AA7 - BBD9 ECB1 9AA8 9AA9 D2E3 9AAA 9AAB 9AAC - 9AAD 9AAE CEE3 9AAF C4B8 9AB0 C3BF 9AB1 - 9AB2 B6BE D8B9 B1C8 B1CF B1D1 C5FE 9AB3 - B1D0 9AB4 C3AB 9AB5 9AB6 9AB7 9AB8 9AB9 - D5B1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD EBA4 BAC1 9AC2 9AC3 9AC4 CCBA 9AC5 - 9AC6 9AC7 EBA5 9AC8 EBA7 9AC9 9ACA 9ACB - EBA8 9ACC 9ACD 9ACE EBA6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD EBA9 EBAB EBAA 9AD6 - 9AD7 9AD8 9AD9 9ADA EBAC 9ADB CACF D8B5 - C3F1 9ADC C3A5 C6F8 EBAD C4CA 9ADD EBAE - EBAF EBB0 B7D5 9ADE 9ADF 9AE0 B7FA 9AE1 - EBB1 C7E2 9AE2 EBB3 9AE3 BAA4 D1F5 B0B1 - EBB2 EBB4 9AE4 9AE5 9AE6 B5AA C2C8 C7E8 - 9AE7 EBB5 9AE8 CBAE E3DF 9AE9 9AEA D3C0 - 9AEB 9AEC 9AED 9AEE D9DB 9AEF 9AF0 CDA1 - D6AD C7F3 9AF1 9AF2 9AF3 D9E0 BBE3 9AF4 - BABA E3E2 9AF5 9AF6 9AF7 9AF8 9AF9 CFAB - 9AFA 9AFB 9AFC E3E0 C9C7 9AFD BAB9 9AFE - 9B40 9B41 D1B4 E3E1 C8EA B9AF BDAD B3D8 - CEDB 9B42 9B43 CCC0 9B44 9B45 9B46 E3E8 - E3E9 CDF4 9B47 9B48 9B49 9B4A 9B4B CCAD - 9B4C BCB3 9B4D E3EA 9B4E E3EB 9B4F 9B50 - D0DA 9B51 9B52 9B53 C6FB B7DA 9B54 9B55 - C7DF D2CA CED6 9B56 E3E4 E3EC 9B57 C9F2 - B3C1 9B58 9B59 E3E7 9B5A 9B5B C6E3 E3E5 - 9B5C 9B5D EDB3 E3E6 9B5E 9B5F 9B60 9B61 - C9B3 9B62 C5E6 9B63 9B64 9B65 B9B5 9B66 - C3BB 9B67 E3E3 C5BD C1A4 C2D9 B2D7 9B68 - E3ED BBA6 C4AD 9B69 E3F0 BEDA 9B6A 9B6B - E3FB E3F5 BAD3 9B6C 9B6D 9B6E 9B6F B7D0 - D3CD 9B70 D6CE D5D3 B9C1 D5B4 D1D8 9B71 - 9B72 9B73 9B74 D0B9 C7F6 9B75 9B76 9B77 - C8AA B2B4 9B78 C3DA 9B79 9B7A 9B7B E3EE - 9B7C 9B7D E3FC E3EF B7A8 E3F7 E3F4 9B7E - 9B80 9B81 B7BA 9B82 9B83 C5A2 9B84 E3F6 - C5DD B2A8 C6FC 9B85 C4E0 9B86 9B87 D7A2 - 9B88 C0E1 E3F9 9B89 9B8A E3FA E3FD CCA9 - E3F3 9B8B D3BE 9B8C B1C3 EDB4 E3F1 E3F2 - 9B8D E3F8 D0BA C6C3 D4F3 E3FE 9B8E 9B8F - BDE0 9B90 9B91 E4A7 9B92 9B93 E4A6 9B94 - 9B95 9B96 D1F3 E4A3 9B97 E4A9 9B98 9B99 - 9B9A C8F7 9B9B 9B9C 9B9D 9B9E CFB4 9B9F - E4A8 E4AE C2E5 9BA0 9BA1 B6B4 FFFD FFFD - FFFD FFFD FFFD FFFD BDF2 9BA8 E4A2 9BA9 - 9BAA BAE9 E4AA 9BAB 9BAC E4AC 9BAD 9BAE - B6FD D6DE E4B2 9BAF E4AD 9BB0 9BB1 9BB2 - E4A1 9BB3 BBEE CDDD C7A2 C5C9 9BB4 9BB5 - C1F7 9BB6 E4A4 9BB7 C7B3 BDAC BDBD E4A5 - 9BB8 D7C7 B2E2 9BB9 E4AB BCC3 E4AF 9BBA - BBEB E4B0 C5A8 E4B1 9BBB 9BBC 9BBD 9BBE - D5E3 BFA3 9BBF E4BA 9BC0 E4B7 9BC1 E4BB - 9BC2 9BC3 E4BD 9BC4 9BC5 C6D6 9BC6 9BC7 - BAC6 C0CB 9BC8 9BC9 9BCA B8A1 E4B4 9BCB - 9BCC 9BCD 9BCE D4A1 9BCF 9BD0 BAA3 BDFE - 9BD1 9BD2 9BD3 E4BC 9BD4 9BD5 9BD6 9BD7 - 9BD8 CDBF 9BD9 9BDA C4F9 9BDB 9BDC CFFB - C9E6 9BDD 9BDE D3BF 9BDF CFD1 9BE0 9BE1 - E4B3 9BE2 E4B8 E4B9 CCE9 9BE3 9BE4 9BE5 - 9BE6 9BE7 CCCE 9BE8 C0D4 E4B5 C1B0 E4B6 - CED0 9BE9 BBC1 B5D3 9BEA C8F3 BDA7 D5C7 - C9AC B8A2 E4CA 9BEB 9BEC E4CC D1C4 9BED - 9BEE D2BA 9BEF 9BF0 BAAD 9BF1 9BF2 BAD4 - FFFD FFFD FFFD FFFD FFFD FFFD E4C3 B5ED - 9BF9 9BFA 9BFB D7CD E4C0 CFFD E4BF 9BFC - 9BFD 9BFE C1DC CCCA 9C40 9C41 9C42 9C43 - CAE7 9C44 9C45 9C46 9C47 C4D7 9C48 CCD4 - E4C8 9C49 9C4A 9C4B E4C7 E4C1 9C4C E4C4 - B5AD 9C4D 9C4E D3D9 9C4F E4C6 9C50 9C51 - 9C52 9C53 D2F9 B4E3 9C54 BBB4 9C55 9C56 - C9EE 9C57 B4BE 9C58 9C59 9C5A BBEC 9C5B - D1CD 9C5C CCED EDB5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C7E5 9C65 9C66 9C67 - 9C68 D4A8 9C69 E4CB D7D5 E4C2 9C6A BDA5 - E4C5 9C6B 9C6C D3E6 9C6D E4C9 C9F8 9C6E - 9C6F E4BE 9C70 9C71 D3E5 9C72 9C73 C7FE - B6C9 9C74 D4FC B2B3 E4D7 9C75 9C76 9C77 - CEC2 9C78 E4CD 9C79 CEBC 9C7A B8DB 9C7B - 9C7C E4D6 9C7D BFCA 9C7E 9C80 9C81 D3CE - 9C82 C3EC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C5C8 E4D8 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CDC4 E4CF 9C93 9C94 - 9C95 9C96 E4D4 E4D5 9C97 BAFE 9C98 CFE6 - 9C99 9C9A D5BF 9C9B 9C9C 9C9D E4D2 -End of Item 02C0 - -Begin of Item 02C1 - Format 1 - srcBegin = 6E6B - srcEnd = 6E6E - mappingOffset = 1E69 - Mapping = - E4D0 9CA9 9CAA E4CE -End of Item 02C1 - -Begin of Item 02C2 - Format 1 - srcBegin = 6E7E - srcEnd = 6F8E - mappingOffset = 1E6D - Mapping = - CDE5 CAAA 9CBA 9CBB 9CBC C0A3 9CBD BDA6 - E4D3 9CBE 9CBF B8C8 9CC0 9CC1 9CC2 9CC3 - 9CC4 E4E7 D4B4 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E4DB 9CCC 9CCD 9CCE C1EF 9CCF - 9CD0 E4E9 9CD1 9CD2 D2E7 9CD3 9CD4 E4DF - 9CD5 E4E0 9CD6 9CD7 CFAA 9CD8 9CD9 9CDA - 9CDB CBDD 9CDC E4DA E4D1 9CDD E4E5 9CDE - C8DC E4E3 9CDF 9CE0 C4E7 E4E2 9CE1 E4E1 - 9CE2 9CE3 9CE4 B3FC E4E8 9CE5 9CE6 9CE7 - 9CE8 B5E1 9CE9 9CEA 9CEB D7CC 9CEC 9CED - 9CEE E4E6 9CEF BBAC 9CF0 D7D2 CCCF EBF8 - 9CF1 E4E4 9CF2 9CF3 B9F6 9CF4 9CF5 9CF6 - D6CD E4D9 E4DC C2FA E4DE 9CF7 C2CB C0C4 - C2D0 9CF8 B1F5 CCB2 FFFD FFFD FFFD FFFD - FFFD FFFD 9D40 9D41 9D42 9D43 B5CE 9D44 - 9D45 9D46 9D47 E4EF FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C6AF 9D50 9D51 9D52 - C6E1 9D53 9D54 E4F5 9D55 9D56 9D57 9D58 - 9D59 C2A9 9D5A 9D5B 9D5C C0EC D1DD E4EE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C4AE 9D67 9D68 9D69 E4ED 9D6A - 9D6B 9D6C 9D6D E4F6 E4F4 C2FE 9D6E E4DD - 9D6F E4F0 9D70 CAFE 9D71 D5C4 9D72 9D73 - E4F1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D1FA 9D7B 9D7C 9D7D 9D7E 9D80 9D81 9D82 - E4EB E4EC 9D83 9D84 9D85 E4F2 9D86 CEAB - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C5CB 9D91 9D92 9D93 C7B1 9D94 - C2BA 9D95 9D96 9D97 E4EA 9D98 9D99 9D9A - C1CA FFFD FFFD FFFD FFFD FFFD FFFD CCB6 - B3B1 9DA1 9DA2 9DA3 E4FB 9DA4 E4F3 9DA5 - 9DA6 9DA7 E4FA 9DA8 E4FD 9DA9 E4FC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B3CE 9DB1 - 9DB2 9DB3 B3BA E4F7 9DB4 9DB5 E4F9 E4F8 - C5EC -End of Item 02C2 - -Begin of Item 02C3 - Format 1 - srcBegin = 6F9C - srcEnd = 6FA7 - mappingOffset = 1F7E - Mapping = - C0BD 9DC3 9DC4 9DC5 9DC6 D4E8 9DC7 9DC8 - 9DC9 9DCA 9DCB E5A2 -End of Item 02C3 - -Begin of Item 02C4 - Format 1 - srcBegin = 6FB3 - srcEnd = 6FD2 - mappingOffset = 1F8A - Mapping = - B0C4 9DD7 9DD8 E5A4 9DD9 9DDA E5A3 FFFD - FFFD FFFD FFFD FFFD FFFD BCA4 9DE1 E5A5 - FFFD FFFD FFFD FFFD FFFD FFFD E5A1 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E4FE B1F4 -End of Item 02C4 - -Begin of Item 02C5 - Format 1 - srcBegin = 6FDE - srcEnd = 6FEF - mappingOffset = 1FAA - Mapping = - E5A8 9DFA E5A9 E5A6 9DFB 9DFC 9DFD 9DFE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E5A7 E5AA -End of Item 02C5 - -Begin of Item 02C6 - Format 1 - srcBegin = 7011 - srcEnd = 7023 - mappingOffset = 1FBC - Mapping = - C6D9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E5AB E5AD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E5AC -End of Item 02C6 - -Begin of Item 02C7 - Format 1 - srcBegin = 7035 - srcEnd = 7039 - mappingOffset = 1FCF - Mapping = - E5AF 9E8A 9E8B 9E8C E5AE -End of Item 02C7 - -Begin of Item 02C8 - Format 1 - srcBegin = 704C - srcEnd = 704F - mappingOffset = 1FD4 - Mapping = - B9E0 9E9F 9EA0 E5B0 -End of Item 02C8 - -Begin of Item 02C9 - Format 2 - srcBegin = 705E - destBegin = E5B1 -End of Item 02C9 - -Begin of Item 02CA - Format 1 - srcBegin = 706B - srcEnd = 709D - mappingOffset = 1FD8 - Mapping = - BBF0 ECE1 C3F0 9EBB B5C6 BBD2 9EBC 9EBD - 9EBE 9EBF C1E9 D4EE 9EC0 BEC4 9EC1 9EC2 - 9EC3 D7C6 9EC4 D4D6 B2D3 ECBE 9EC5 9EC6 - 9EC7 9EC8 EAC1 9EC9 9ECA 9ECB C2AF B4B6 - 9ECC 9ECD 9ECE D1D7 9ECF 9ED0 9ED1 B3B4 - 9ED2 C8B2 BFBB ECC0 9ED3 9ED4 D6CB 9ED5 - 9ED6 ECBF ECC1 -End of Item 02CA - -Begin of Item 02CB - Format 1 - srcBegin = 70AB - srcEnd = 70CA - mappingOffset = 200B - Mapping = - ECC5 BEE6 CCBF C5DA BEBC 9EE4 ECC6 9EE5 - B1FE 9EE6 9EE7 9EE8 ECC4 D5A8 B5E3 9EE9 - ECC2 C1B6 B3E3 9EEA 9EEB ECC3 CBB8 C0C3 - CCFE 9EEC 9EED 9EEE 9EEF C1D2 9EF0 ECC8 -End of Item 02CB - -Begin of Item 02CC - Format 1 - srcBegin = 70D8 - srcEnd = 70FD - mappingOffset = 202B - Mapping = - BAE6 C0D3 9EFE D6F2 9F40 9F41 9F42 D1CC - 9F43 9F44 9F45 9F46 BFBE 9F47 B7B3 C9D5 - ECC7 BBE2 9F48 CCCC BDFD C8C8 9F49 CFA9 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD CDE9 - 9F51 C5EB 9F52 9F53 9F54 B7E9 -End of Item 02CC - -Begin of Item 02CD - Format 1 - srcBegin = 7109 - srcEnd = 711A - mappingOffset = 2051 - Mapping = - D1C9 BAB8 9F60 9F61 9F62 9F63 9F64 ECC9 - 9F65 9F66 ECCA 9F67 BBC0 ECCB 9F68 ECE2 - B1BA B7D9 -End of Item 02CD - -Begin of Item 02CE - Format 1 - srcBegin = 7126 - srcEnd = 7136 - mappingOffset = 2063 - Mapping = - BDB9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD ECCC D1E6 ECCD 9F7C 9F7D 9F7E 9F80 - C8BB -End of Item 02CE - -Begin of Item 02CF - Format 1 - srcBegin = 7145 - srcEnd = 714E - mappingOffset = 2074 - Mapping = - ECD1 9F8F 9F90 9F91 9F92 ECD3 9F93 BBCD - 9F94 BCE5 -End of Item 02CF - -Begin of Item 02D0 - Format 1 - srcBegin = 715C - srcEnd = 71F9 - mappingOffset = 207E - Mapping = - ECCF 9FA2 C9B7 9FA3 9FA4 9FA5 9FA6 9FA7 - C3BA 9FA8 ECE3 D5D5 ECD0 9FA9 9FAA 9FAB - 9FAC 9FAD D6F3 9FAE 9FAF 9FB0 ECD2 ECCE - 9FB1 9FB2 9FB3 9FB4 ECD4 9FB5 ECD5 9FB6 - 9FB7 C9BF FFFD FFFD FFFD FFFD FFFD FFFD - CFA8 9FBE 9FBF 9FC0 9FC1 9FC2 D0DC 9FC3 - 9FC4 9FC5 9FC6 D1AC 9FC7 9FC8 9FC9 9FCA - C8DB 9FCB 9FCC 9FCD ECD6 CEF5 9FCE 9FCF - 9FD0 9FD1 9FD2 CAEC ECDA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD ECD9 9FDA 9FDB 9FDC - B0BE FFFD FFFD FFFD FFFD FFFD FFFD ECD7 - 9FE3 ECD8 9FE4 9FE5 9FE6 ECE4 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C8BC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C1C7 9FFA 9FFB 9FFC 9FFD 9FFE - ECDC D1E0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD ECDB A04A A04B A04C - A04D D4EF A04E ECDD FFFD FFFD FFFD FFFD - FFFD FFFD DBC6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD ECDE -End of Item 02D0 - -Begin of Item 02D1 - Format 2 - srcBegin = 7206 - destBegin = B1AC -End of Item 02D1 - -Begin of Item 02D2 - Format 1 - srcBegin = 721B - srcEnd = 7292 - mappingOffset = 211C - Mapping = - A080 A081 ECDF FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD ECE0 A08C D7A6 - A08D C5C0 A08E A08F A090 EBBC B0AE A091 - A092 A093 BEF4 B8B8 D2AF B0D6 B5F9 A094 - D8B3 A095 CBAC A096 E3DD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C6AC B0E6 A09E A09F - A0A0 C5C6 EBB9 A0A1 A0A2 A0A3 A0A4 EBBA - A0A5 A0A6 A0A7 EBBB A0A8 A0A9 D1C0 A0AA - C5A3 A0AB EAF2 A0AC C4B2 A0AD C4B5 C0CE - A0AE A0AF A0B0 EAF3 C4C1 A0B1 CEEF A0B2 - A0B3 A0B4 A0B5 EAF0 EAF4 A0B6 A0B7 C9FC - A0B8 A0B9 C7A3 A0BA A0BB A0BC CCD8 CEFE - A0BD A0BE A0BF EAF5 EAF6 CFAC C0E7 A0C0 - A0C1 EAF7 A0C2 A0C3 A0C4 A0C5 A0C6 B6BF - EAF8 A0C7 EAF9 A0C8 EAFA A0C9 A0CA EAFB -End of Item 02D2 - -Begin of Item 02D3 - Format 2 - srcBegin = 729F - destBegin = EAF1 -End of Item 02D3 - -Begin of Item 02D4 - Format 1 - srcBegin = 72AC - srcEnd = 7360 - mappingOffset = 2194 - Mapping = - C8AE E1EB A0E3 B7B8 E1EC A0E4 A0E5 A0E6 - E1ED A0E7 D7B4 E1EE E1EF D3CC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E1F1 BFF1 E1F0 - B5D2 A0EF A0F0 A0F1 B1B7 A0F2 A0F3 A0F4 - A0F5 E1F3 E1F2 A0F6 BAFC A0F7 E1F4 A0F8 - A0F9 A0FA A0FB B9B7 A0FC BED1 A0FD A0FE - AA40 AA41 C4FC AA42 BADD BDC6 FFFD FFFD - FFFD FFFD FFFD FFFD E1F5 E1F7 AA49 AA4A - B6C0 CFC1 CAA8 E1F6 D5F8 D3FC E1F8 E1FC - E1F9 AA4B AA4C E1FA C0EA AA4D E1FE E2A1 - C0C7 AA4E AA4F AA50 AA51 E1FB AA52 E1FD - FFFD FFFD FFFD FFFD FFFD FFFD E2A5 AA59 - AA5A AA5B C1D4 AA5C AA5D AA5E AA5F E2A3 - AA60 E2A8 B2FE E2A2 AA61 AA62 AA63 C3CD - B2C2 E2A7 E2A6 AA64 AA65 E2A4 E2A9 AA66 - AA67 E2AB AA68 AA69 AA6A D0C9 D6ED C3A8 - E2AC AA6B CFD7 AA6C AA6D E2AE AA6E AA6F - BAEF AA70 AA71 E9E0 E2AD E2AA AA72 AA73 - AA74 AA75 BBAB D4B3 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD AA80 AA81 AA82 - AA83 E2B0 AA84 AA85 E2AF AA86 E9E1 AA87 - AA88 AA89 AA8A E2B1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E2B2 -End of Item 02D4 - -Begin of Item 02D5 - Format 1 - srcBegin = 736C - srcEnd = 7371 - mappingOffset = 2249 - Mapping = - E2B3 CCA1 AA9E E2B4 AA9F AAA0 -End of Item 02D5 - -Begin of Item 02D6 - Format 1 - srcBegin = 737E - srcEnd = 73F7 - mappingOffset = 224F - Mapping = - E2B5 AB4C AB4D AB4E AB4F AB50 D0FE AB51 - AB52 C2CA AB53 D3F1 AB54 CDF5 AB55 AB56 - E7E0 AB57 AB58 E7E1 AB59 AB5A AB5B AB5C - BEC1 AB5D AB5E AB5F AB60 C2EA AB61 AB62 - AB63 E7E4 AB64 AB65 E7E3 FFFD FFFD FFFD - FFFD FFFD FFFD CDE6 AB6C C3B5 AB6D AB6E - E7E2 BBB7 CFD6 AB6F C1E1 E7E9 AB70 AB71 - AB72 E7E8 AB73 AB74 E7F4 B2A3 AB75 AB76 - AB77 AB78 E7EA AB79 E7E6 AB7A AB7B AB7C - AB7D AB7E E7EC E7EB C9BA AB80 AB81 D5E4 - AB82 E7E5 B7A9 E7E7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E7EE AB8A AB8B AB8C AB8D - E7F3 AB8E D6E9 AB8F AB90 AB91 AB92 E7ED - AB93 E7F2 AB94 E7F1 AB95 AB96 AB97 B0E0 - AB98 AB99 AB9A AB9B E7F5 AB9C AB9D AB9E - AB9F ABA0 -End of Item 02D6 - -Begin of Item 02D7 - Format 1 - srcBegin = 7403 - srcEnd = 7441 - mappingOffset = 22C9 - Mapping = - C7F2 AC4B C0C5 C0ED AC4C AC4D C1F0 E7F0 - AC4E AC4F AC50 AC51 E7F6 CBF6 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E8A2 - E8A1 FFFD FFFD FFFD FFFD FFFD FFFD D7C1 - AC61 AC62 E7FA E7F9 AC63 E7FB AC64 E7F7 - AC65 E7FE AC66 E7FD AC67 E7FC AC68 AC69 - C1D5 C7D9 C5FD C5C3 AC6A AC6B AC6C AC6D - AC6E C7ED AC6F AC70 AC71 AC72 E8A3 -End of Item 02D7 - -Begin of Item 02D8 - Format 1 - srcBegin = 7455 - srcEnd = 745F - mappingOffset = 2308 - Mapping = - E8A6 AC87 E8A5 AC88 E8A7 BAF7 E7F8 E8A4 - AC89 C8F0 C9AA -End of Item 02D8 - -Begin of Item 02D9 - Format 1 - srcBegin = 746D - srcEnd = 7490 - mappingOffset = 2313 - Mapping = - E8A9 AC97 AC98 B9E5 AC99 AC9A AC9B AC9C - AC9D D1FE E8A8 AC9E AC9F ACA0 AD40 AD41 - AD42 E8AA AD43 E8AD E8AE AD44 C1A7 AD45 - AD46 AD47 E8AF AD48 AD49 AD4A E8B0 AD4B - AD4C E8AC AD4D E8B4 -End of Item 02D9 - -Begin of Item 02DA - Format 1 - srcBegin = 749C - srcEnd = 74A9 - mappingOffset = 2337 - Mapping = - E8AB AD59 E8B1 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E8B5 E8B2 E8B3 -End of Item 02DA - -Begin of Item 02DB - Format 2 - srcBegin = 74BA - destBegin = E8B7 -End of Item 02DB - -Begin of Item 02DC - Format 1 - srcBegin = 74D2 - srcEnd = 770D - mappingOffset = 2345 - Mapping = - E8B6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B9CF AD93 F0AC AD94 F0AD AD95 - C6B0 B0EA C8BF AD96 CDDF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CECD EAB1 AD9E AD9F - ADA0 AE40 EAB2 AE41 C6BF B4C9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EAB3 AE49 AE4A - AE4B AE4C D5E7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD DDF9 AE55 EAB4 AE56 EAB5 - AE57 EAB6 AE58 AE59 AE5A AE5B B8CA DFB0 - C9F5 AE5C CCF0 AE5D AE5E C9FA AE5F AE60 - AE61 AE62 AE63 C9FB AE64 AE65 D3C3 CBA6 - AE66 B8A6 F0AE B1C2 AE67 E5B8 CCEF D3C9 - BCD7 C9EA AE68 B5E7 AE69 C4D0 B5E9 AE6A - EEAE BBAD AE6B AE6C E7DE AE6D EEAF AE6E - AE6F AE70 AE71 B3A9 AE72 AE73 EEB2 AE74 - AE75 EEB1 BDE7 AE76 EEB0 CEB7 AE77 AE78 - AE79 AE7A C5CF AE7B AE7C AE7D AE7E C1F4 - DBCE EEB3 D0F3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C2D4 C6E8 AE88 AE89 AE8A - B7AC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EEB4 AE92 B3EB AE93 AE94 AE95 BBFB EEB5 - AE96 AE97 AE98 AE99 AE9A E7DC AE9B AE9C - AE9D EEB6 AE9E AE9F BDAE AEA0 AF40 AF41 - AF42 F1E2 AF43 AF44 AF45 CAE8 AF46 D2C9 - F0DA AF47 F0DB AF48 F0DC C1C6 AF49 B8ED - BECE AF4A AF4B F0DE AF4C C5B1 F0DD D1F1 - AF4D F0E0 B0CC BDEA AF4E AF4F AF50 AF51 - AF52 D2DF F0DF AF53 B4AF B7E8 F0E6 F0E5 - C6A3 F0E1 F0E2 B4C3 AF54 AF55 F0E3 D5EE - AF56 AF57 CCDB BED2 BCB2 AF58 AF59 AF5A - F0E8 F0E7 F0E4 B2A1 AF5B D6A2 D3B8 BEB7 - C8AC AF5C AF5D F0EA AF5E AF5F AF60 AF61 - D1F7 AF62 D6CC BADB F0E9 AF63 B6BB AF64 - AF65 CDB4 AF66 AF67 C6A6 AF68 AF69 AF6A - C1A1 F0EB F0EE AF6B F0ED F0F0 F0EC AF6C - BBBE F0EF AF6D AF6E AF6F AF70 CCB5 F0F2 - AF71 AF72 B3D5 AF73 AF74 AF75 AF76 B1D4 - AF77 AF78 F0F3 AF79 AF7A F0F4 F0F6 B4E1 - AF7B F0F1 AF7C F0F7 AF7D AF7E AF80 AF81 - F0FA AF82 F0F8 AF83 AF84 AF85 F0F5 AF86 - AF87 AF88 AF89 F0FD AF8A F0F9 F0FC F0FE - AF8B F1A1 AF8C AF8D AF8E CEC1 F1A4 AF8F - F1A3 AF90 C1F6 F0FB CADD AF91 AF92 B4F1 - B1F1 CCB1 AF93 F1A6 AF94 AF95 F1A7 AF96 - AF97 F1AC D5CE F1A9 AF98 AF99 C8B3 AF9A - AF9B AF9C F1A2 AF9D F1AB F1A8 F1A5 AF9E - AF9F F1AA AFA0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B0A9 F1AD FFFD FFFD FFFD FFFD - FFFD FFFD F1AF B04D F1B1 B04E B04F B050 - B051 B052 F1B0 B053 F1AE B054 B055 B056 - B057 D1A2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F1B2 B05F B060 B061 F1B3 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B9EF B06A - B06B B5C7 B06C B0D7 B0D9 B06D B06E B06F - D4ED B070 B5C4 B071 BDD4 BBCA F0A7 B072 - B073 B8DE B074 B075 F0A8 B076 B077 B0A8 - B078 F0A9 B079 B07A CDEE B07B B07C F0AA - B07D B07E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F0AB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C6A4 B091 B092 D6E5 - F1E4 B093 F1E5 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C3F3 B09E B09F - D3DB B0A0 B140 D6D1 C5E8 B141 D3AF B142 - D2E6 B143 B144 EEC1 B0BB D5B5 D1CE BCE0 - BAD0 B145 BFF8 B146 B8C7 B5C1 C5CC B147 - B148 CAA2 B149 B14A B14B C3CB B14C B14D - B14E B14F B150 EEC2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C4BF B6A2 B159 EDEC - C3A4 B15A D6B1 B15B B15C B15D CFE0 EDEF - B15E B15F C5CE B160 B6DC B161 B162 CAA1 - B163 B164 EDED B165 B166 EDF0 EDF1 C3BC - B167 BFB4 B168 EDEE -End of Item 02DC - -Begin of Item 02DD - Format 1 - srcBegin = 7719 - srcEnd = 776C - mappingOffset = 2581 - Mapping = - EDF4 EDF2 B174 B175 B176 B177 D5E6 C3DF - B178 EDF3 B179 B17A B17B EDF6 B17C D5A3 - D1A3 B17D B17E B180 EDF5 B181 C3D0 B182 - B183 B184 B185 B186 EDF7 BFF4 BEEC EDF8 - B187 CCF7 B188 D1DB B189 B18A B18B D7C5 - D5F6 B18C EDFC B18D B18E B18F EDFB FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EDF9 - EDFA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD EDFD BEA6 B1A0 B240 B241 B242 B243 - CBAF EEA1 B6BD B244 EEA2 C4C0 B245 EDFE - B246 B247 BDDE B2C7 -End of Item 02DD - -Begin of Item 02DE - Format 1 - srcBegin = 7779 - srcEnd = 7792 - mappingOffset = 25D5 - Mapping = - B6C3 B254 B255 B256 EEA5 D8BA EEA3 EEA6 - B257 B258 B259 C3E9 B3F2 FFFD FFFD FFFD - FFFD FFFD FFFD EEA7 EEA4 CFB9 B260 B261 - EEA8 C2F7 -End of Item 02DE - -Begin of Item 02DF - Format 1 - srcBegin = 779F - srcEnd = 77BF - mappingOffset = 25EF - Mapping = - EEA9 EEAA B26E DEAB B26F B270 C6B3 B271 - C7C6 B272 D6F5 B5C9 B273 CBB2 B274 B275 - B276 EEAB B277 B278 CDAB B279 EEAC B27A - B27B B27C B27D B27E D5B0 B280 EEAD B281 - F6C4 -End of Item 02DF - -Begin of Item 02E0 - Format 1 - srcBegin = 77CD - srcEnd = 785D - mappingOffset = 2610 - Mapping = - DBC7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B4A3 B298 B299 B29A C3AC F1E6 - B29B B29C B29D B29E B29F CAB8 D2D3 B2A0 - D6AA B340 EFF2 B341 BED8 B342 BDC3 EFF3 - B6CC B0AB B343 B344 B345 B346 CAAF B347 - B348 EDB6 B349 EDB7 B34A B34B B34C B34D - CEF9 B7AF BFF3 EDB8 C2EB C9B0 FFFD FFFD - FFFD FFFD FFFD FFFD EDB9 B354 B355 C6F6 - BFB3 B356 B357 B358 EDBC C5F8 B359 D1D0 - B35A D7A9 EDBA EDBB B35B D1E2 B35C EDBF - EDC0 B35D EDC4 B35E B35F B360 EDC8 B361 - EDC6 EDCE D5E8 B362 EDC9 B363 B364 EDC7 - EDBE B365 B366 C5E9 B367 B368 B369 C6C6 - B36A B36B C9E9 D4D2 EDC1 EDC2 EDC3 EDC5 - B36C C0F9 B36D B4A1 B36E B36F B370 B371 - B9E8 B372 EDD0 B373 B374 B375 B376 EDD1 - B377 EDCA B378 EDCF B379 CEF8 B37A B37B - CBB6 EDCC EDCD B37C B37D B37E B380 B381 - CFF5 -End of Item 02E0 - -Begin of Item 02E1 - Format 1 - srcBegin = 786A - srcEnd = 7905 - mappingOffset = 26A1 - Mapping = - EDD2 C1F2 D3B2 EDCB C8B7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BCEF B396 B397 - B398 B399 C5F0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B440 B441 B442 EDD6 B443 B5EF - B444 B445 C2B5 B0AD CBE9 B446 B447 B1AE - B448 EDD4 B449 B44A B44B CDEB B5E2 B44C - EDD5 EDD3 EDD7 B44D B44E B5FA B44F EDD8 - B450 EDD9 B451 EDDC B452 B1CC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD C5F6 BCEE - EDDA CCBC B2EA B45B B45C B45D B45E EDDB - B45F B460 B461 B462 C4EB B463 B464 B4C5 - B465 B466 B467 B0F5 B468 B469 B46A EDDF - C0DA B4E8 B46B B46C B46D B46E C5CD B46F - B470 B471 EDDD BFC4 B472 B473 B474 EDDE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B480 B481 B482 B483 C4A5 B484 - B485 B486 EDE0 B487 B488 B489 B48A B48B - EDE1 B48C EDE3 B48D B48E C1D7 B48F B490 - BBC7 FFFD FFFD FFFD FFFD FFFD FFFD BDB8 - B497 B498 B499 EDE2 -End of Item 02E1 - -Begin of Item 02E2 - Format 1 - srcBegin = 7913 - srcEnd = 7924 - mappingOffset = 273D - Mapping = - EDE4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EDE6 B550 B551 B552 B553 - B554 EDE5 -End of Item 02E2 - -Begin of Item 02E3 - Format 1 - srcBegin = 7934 - srcEnd = 799A - mappingOffset = 274F - Mapping = - EDE7 B564 B565 B566 B567 B568 CABE ECEA - C0F1 B569 C9E7 B56A ECEB C6EE B56B B56C - B56D B56E ECEC B56F C6ED ECED FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD ECF0 - B579 B57A D7E6 ECF3 B57B B57C ECF1 ECEE - ECEF D7A3 C9F1 CBEE ECF4 B57D ECF2 B57E - B580 CFE9 B581 ECF6 C6B1 B582 B583 B584 - B585 BCC0 B586 ECF5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B5BB BBF6 B58E ECF7 B58F - B590 B591 B592 B593 D9F7 BDFB B594 B595 - C2BB ECF8 B596 B597 B598 B599 ECF9 B59A - B59B B59C B59D B8A3 B59E B59F B5A0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD ECFA -End of Item 02E3 - -Begin of Item 02E4 - Format 2 - srcBegin = 79A7 - destBegin = ECFB -End of Item 02E4 - -Begin of Item 02E5 - Format 1 - srcBegin = 79B3 - srcEnd = 7A23 - mappingOffset = 27B6 - Mapping = - ECFC B65E B65F B660 B661 B662 D3ED D8AE - C0EB B663 C7DD BACC B664 D0E3 CBBD B665 - CDBA B666 B667 B8D1 B668 B669 B1FC B66A - C7EF B66B D6D6 B66C B66D B66E BFC6 C3EB - B66F B670 EFF5 B671 B672 C3D8 FFFD FFFD - FFFD FFFD FFFD FFFD D7E2 B679 B67A B67B - EFF7 B3D3 B67C C7D8 D1ED B67D D6C8 B67E - EFF8 B680 EFF6 B681 BBFD B3C6 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BDD5 B689 B68A - D2C6 B68B BBE0 B68C B68D CFA1 B68E EFFC - EFFB B68F B690 EFF9 B691 B692 B693 B694 - B3CC B695 C9D4 CBB0 B696 B697 B698 B699 - B69A EFFE B69B B69C B0DE B69D B69E D6C9 - B69F B6A0 B740 EFFD B741 B3ED B742 B743 - F6D5 -End of Item 02E5 - -Begin of Item 02E6 - Format 1 - srcBegin = 7A33 - srcEnd = 7A57 - mappingOffset = 2827 - Mapping = - CEC8 B753 B754 B755 F0A2 B756 F0A1 B757 - B5BE BCDA BBFC B758 B8E5 FFFD FFFD FFFD - FFFD FFFD FFFD C4C2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F0A3 B769 - B76A B76B B76C B76D CBEB -End of Item 02E6 - -Begin of Item 02E7 - Format 1 - srcBegin = 7A70 - srcEnd = 7AB3 - mappingOffset = 284C - Mapping = - F0A6 B787 B788 B789 D1A8 B78A BEBF C7EE - F1B6 F1B7 BFD5 B78B B78C B78D B78E B4A9 - F1B8 CDBB B78F C7D4 D5AD B790 F1B9 B791 - F1BA B792 B793 B794 B795 C7CF B796 B797 - B798 D2A4 D6CF B799 B79A F1BB BDD1 B4B0 - BEBD B79B B79C B79D B4DC CED1 B79E BFDF - F1BD B79F B7A0 B840 B841 BFFA F1BC B842 - F1BF B843 B844 B845 F1BE F1C0 B846 B847 - B848 B849 B84A F1C1 -End of Item 02E7 - -Begin of Item 02E8 - Format 2 - srcBegin = 7ABF - destBegin = C1FE -End of Item 02E8 - -Begin of Item 02E9 - Format 1 - srcBegin = 7ACB - srcEnd = 7B62 - mappingOffset = 2890 - Mapping = - C1A2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD CAFA B86B B86C D5BE B86D - B86E B86F B870 BEBA BEB9 D5C2 B871 B872 - BFA2 B873 CDAF F1B5 FFFD FFFD FFFD FFFD - FFFD FFFD BDDF B87A B6CB B87B B87C B87D - B87E B880 B881 B882 B883 B884 D6F1 F3C3 - B885 B886 F3C4 B887 B8CD B888 B889 B88A - F3C6 F3C7 B88B B0CA B88C F3C5 B88D F3C9 - CBF1 B88E B88F B890 F3CB B891 D0A6 B892 - B893 B1CA F3C8 B894 B895 B896 F3CF B897 - B5D1 B898 B899 F3D7 B89A F3D2 B89B B89C - B89D F3D4 F3D3 B7FB B89E B1BF B89F F3CE - F3CA B5DA B8A0 F3D0 B940 B941 F3D1 B942 - F3D5 B943 B944 B945 B946 F3CD B947 BCE3 - B948 C1FD B949 F3D6 FFFD FFFD FFFD FFFD - FFFD FFFD F3DA B950 F3CC B951 B5C8 B952 - BDEE F3DC B953 B954 B7A4 BFF0 D6FE CDB2 - B955 B4F0 B956 B2DF B957 F3D8 B958 F3D9 - C9B8 B959 F3DD B95A B95B F3DE B95C F3E1 -End of Item 02E9 - -Begin of Item 02EA - Format 1 - srcBegin = 7B6E - srcEnd = 7C2A - mappingOffset = 2928 - Mapping = - F3DF B968 B969 F3E3 F3E2 B96A B96B F3DB - B96C BFEA B96D B3EF B96E F3E0 B96F B970 - C7A9 B971 BCF2 B972 B973 B974 B975 F3EB - FFFD FFFD FFFD FFFD FFFD FFFD FFFD B9BF - B97D B97E F3E4 B980 B981 B982 B2AD BBFE - B983 CBE3 B984 B985 B986 B987 F3ED F3E9 - B988 B989 B98A B9DC F3EE B98B B98C B98D - F3E5 F3E6 F3EA C2E1 F3EC F3EF F3E8 BCFD - B98E B98F B990 CFE4 B991 B992 F3F0 B993 - B994 B995 F3E7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F3F2 B99E B99F B9A0 BA40 - D7AD C6AA BA41 BA42 BA43 BA44 F3F3 BA45 - BA46 BA47 BA48 F3F1 BA49 C2A8 BA4A BA4B - BA4C BA4D BA4E B8DD F3F5 BA4F BA50 F3F4 - BA51 BA52 BA53 B4DB BA54 BA55 BA56 F3F6 - F3F7 BA57 BA58 BA59 F3F8 BA5A BA5B BA5C - C0BA BA5D BA5E C0E9 BA5F BA60 BA61 BA62 - BA63 C5F1 BA64 BA65 BA66 BA67 F3FB BA68 - F3FA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B4D8 BA71 BA72 BA73 F3FE F3F9 BA74 - BA75 F3FC FFFD FFFD FFFD FFFD FFFD FFFD - F3FD BA7C BA7D BA7E BA80 BA81 BA82 BA83 - BA84 F4A1 FFFD FFFD FFFD FFFD FFFD FFFD - F4A3 BBC9 BA8B BA8C F4A2 -End of Item 02EA - -Begin of Item 02EB - Format 1 - srcBegin = 7C38 - srcEnd = 7C4D - mappingOffset = 29E5 - Mapping = - F4A4 FFFD FFFD FFFD FFFD FFFD FFFD B2BE - F4A6 F4A5 BAA0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BCAE -End of Item 02EB - -Begin of Item 02EC - Format 1 - srcBegin = 7C73 - srcEnd = 7CFB - mappingOffset = 29FB - Mapping = - C3D7 D9E1 FFFD FFFD FFFD FFFD FFFD FFFD - C0E0 F4CC D7D1 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BB80 B7DB FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F4CE C1A3 - BB88 BB89 C6C9 BB8A B4D6 D5B3 BB8B BB8C - BB8D F4D0 F4CF F4D1 CBDA BB8E BB8F F4D2 - BB90 D4C1 D6E0 BB91 BB92 BB93 BB94 B7E0 - BB95 BB96 BB97 C1B8 BB98 BB99 C1BB F4D3 - BEAC BB9A BB9B BB9C BB9D BB9E B4E2 BB9F - BBA0 F4D4 F4D5 BEAB BC40 BC41 F4D6 BC42 - BC43 BC44 F4DB BC45 F4D7 F4DA BC46 BAFD - BC47 F4D8 F4D9 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B8E2 CCC7 F4DC BC4F B2DA BC50 - BC51 C3D3 BC52 BC53 D4E3 BFB7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4DD FFFD FFFD - FFFD FFFD FFFD FFFD C5B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4E9 BC69 BC6A - CFB5 -End of Item 02EC - -Begin of Item 02ED - Format 2 - srcBegin = 7D0A - destBegin = CEC9 -End of Item 02ED - -Begin of Item 02EE - Format 1 - srcBegin = 7D20 - srcEnd = 7D2F - mappingOffset = 2A84 - Mapping = - CBD8 BC8F CBF7 BC90 BC91 BC92 BC93 BDF4 - BC94 BC95 BC96 D7CF BC97 BC98 BC99 C0DB -End of Item 02EE - -Begin of Item 02EF - Format 1 - srcBegin = 7D6E - srcEnd = 7D77 - mappingOffset = 2A94 - Mapping = - D0F5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F4EA -End of Item 02EF - -Begin of Item 02F0 - Format 1 - srcBegin = 7DA6 - srcEnd = 7DAE - mappingOffset = 2A9E - Mapping = - F4EB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F4EC -End of Item 02F0 - -Begin of Item 02F1 - Format 1 - srcBegin = 7E3A - srcEnd = 7E47 - mappingOffset = 2AA7 - Mapping = - BF80 F7E3 BF81 BF82 BF83 BF84 BF85 B7B1 - BF86 BF87 BF88 BF89 BF8A F4ED -End of Item 02F1 - -Begin of Item 02F2 - Format 2 - srcBegin = 7E82 - destBegin = D7EB -End of Item 02F2 - -Begin of Item 02F3 - Format 1 - srcBegin = 7E9B - srcEnd = 805A - mappingOffset = 2AB5 - Mapping = - F4EE C07C C07D C07E E6F9 BEC0 E6FA BAEC - E6FB CFCB E6FC D4BC BCB6 E6FD E6FE BCCD - C8D2 CEB3 E7A1 C080 B4BF E7A2 C9B4 B8D9 - C4C9 C081 D7DD C2DA B7D7 D6BD CEC6 B7C4 - C082 C083 C5A6 E7A3 CFDF E7A4 E7A5 E7A6 - C1B7 D7E9 C9F0 CFB8 D6AF D6D5 E7A7 B0ED - E7A8 E7A9 C9DC D2EF BEAD E7AA B0F3 C8DE - BDE1 E7AB C8C6 C084 E7AC BBE6 B8F8 D1A4 - E7AD C2E7 BEF8 BDCA CDB3 E7AE E7AF BEEE - D0E5 C085 CBE7 CCD0 BCCC E7B0 BCA8 D0F7 - E7B1 C086 D0F8 E7B2 E7B3 B4C2 E7B4 E7B5 - C9FE CEAC C3E0 E7B7 B1C1 B3F1 C087 E7B8 - E7B9 D7DB D5C0 E7BA C2CC D7BA E7BB E7BC - E7BD BCEA C3E5 C0C2 E7BE E7BF BCA9 C088 - E7C0 E7C1 E7B6 B6D0 E7C2 C089 E7C3 E7C4 - BBBA B5DE C2C6 B1E0 E7C5 D4B5 E7C6 B8BF - E7C8 E7C7 B7EC C08A E7C9 B2F8 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D3A7 CBF5 E7D1 - E7D2 E7D3 E7D4 C9C9 E7D5 E7D6 E7D7 E7D8 - E7D9 BDC9 E7DA F3BE C08B B8D7 C08C C8B1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F3BF - C094 F3C0 F3C1 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B9DE CDF8 C09F - C0A0 D8E8 BAB1 C140 C2DE EEB7 C141 B7A3 - C142 C143 C144 C145 EEB9 C146 EEB8 B0D5 - C147 C148 C149 C14A C14B EEBB D5D6 D7EF - C14C C14D C14E D6C3 C14F C150 EEBD CAF0 - C151 EEBC C152 C153 C154 C155 EEBE C156 - C157 C158 C159 EEC0 C15A C15B EEBF FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D1F2 - C164 C7BC C165 C3C0 C166 C167 C168 C169 - C16A B8E1 C16B C16C C16D C16E C16F C1E7 - C170 C171 F4C6 D0DF F4C7 C172 CFDB C173 - C174 C8BA C175 C176 F4C8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F4C9 F4CA C17E F4CB - C180 C181 C182 C183 C184 D9FA B8FE C185 - C186 E5F1 D3F0 C187 F4E0 C188 CECC C189 - C18A C18B B3E1 C18C C18D C18E C18F F1B4 - C190 D2EE C191 F4E1 C192 C193 C194 C195 - C196 CFE8 F4E2 C197 C198 C7CC FFFD FFFD - FFFD FFFD FFFD FFFD B5D4 B4E4 F4E4 C19F - C1A0 C240 F4E3 F4E5 C241 C242 F4E6 C243 - C244 C245 C246 F4E7 C247 BAB2 B0BF C248 - F4E8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B7AD D2ED C250 C251 C252 D2AB C0CF C253 - BFBC EBA3 D5DF EAC8 C254 C255 C256 C257 - F1F3 B6F8 CBA3 C258 C259 C4CD C25A F1E7 - C25B F1E8 B8FB F1E9 BAC4 D4C5 B0D2 C25C - C25D F1EA C25E C25F C260 F1EB C261 F1EC - C262 C263 F1ED F1EE F1EF F1F1 F1F0 C5D5 - FFFD FFFD FFFD FFFD FFFD FFFD F1F2 C26A - B6FA C26B F1F4 D2AE DEC7 CBCA C26C C26D - B3DC C26E B5A2 C26F B9A2 C270 C271 C4F4 - F1F5 C272 C273 F1F6 C274 C275 C276 C1C4 - C1FB D6B0 F1F7 C277 C278 C279 C27A F1F8 - C27B C1AA C27C C27D C27E C6B8 C280 BEDB -End of Item 02F3 - -Begin of Item 02F4 - Format 1 - srcBegin = 8069 - srcEnd = 8071 - mappingOffset = 2C75 - Mapping = - F1F9 B4CF FFFD FFFD FFFD FFFD FFFD FFFD - F1FA -End of Item 02F4 - -Begin of Item 02F5 - Format 1 - srcBegin = 807E - srcEnd = 811E - mappingOffset = 2C7E - Mapping = - C340 EDB2 EDB1 C341 C342 CBE0 D2DE C343 - CBC1 D5D8 C344 C8E2 C345 C0DF BCA1 FFFD - FFFD FFFD FFFD FFFD FFFD EBC1 C34C C34D - D0A4 C34E D6E2 C34F B6C7 B8D8 EBC0 B8CE - C350 EBBF B3A6 B9C9 D6AB C351 B7F4 B7CA - C352 C353 C354 BCE7 B7BE EBC6 C355 EBC7 - B0B9 BFCF C356 EBC5 D3FD C357 EBC8 C358 - C359 EBC9 C35A C35B B7CE C35C EBC2 EBC4 - C9F6 D6D7 D5CD D0B2 EBCF CEB8 EBD0 C35D - B5A8 C35E C35F C360 C361 C362 B1B3 EBD2 - CCA5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C5D6 EBD3 C36A EBD1 C5DF EBCE CAA4 EBD5 - B0FB C36B C36C BAFA C36D C36E D8B7 F1E3 - C36F EBCA EBCB EBCC EBCD EBD6 E6C0 EBD9 - C370 BFE8 D2C8 EBD7 EBDC B8EC EBD8 C371 - BDBA C372 D0D8 C373 B0B7 C374 EBDD C4DC - C375 C376 C377 C378 D6AC C379 C37A C37B - B4E0 C37C C37D C2F6 BCB9 C37E C380 EBDA - EBDB D4E0 C6EA C4D4 EBDF C5A7 D9F5 C381 - B2B1 C382 EBE4 C383 BDC5 C384 C385 C386 - EBE2 -End of Item 02F5 - -Begin of Item 02F6 - Format 1 - srcBegin = 812C - srcEnd = 81CC - mappingOffset = 2D1F - Mapping = - EBE3 C394 C395 B8AC C396 CDD1 EBE5 C397 - C398 C399 EBE1 C39A C1B3 C39B C39C C39D - C39E C39F C6A2 C3A0 FFFD FFFD FFFD FFFD - FFFD FFFD CCF3 C446 EBE6 C447 C0B0 D2B8 - EBE7 C448 C449 C44A B8AF B8AD C44B EBE8 - C7BB CDF3 C44C C44D C44E EBEA EBEB C44F - C450 C451 C452 C453 EBED C454 C455 C456 - C457 D0C8 C458 EBF2 C459 EBEE C45A C45B - C45C EBF1 C8F9 C45D D1FC EBEC C45E C45F - EBE9 C460 C461 C462 C463 B8B9 CFD9 C4E5 - EBEF EBF0 CCDA CDC8 B0F2 C464 EBF6 C465 - C466 C467 C468 C469 EBF5 C46A B2B2 C46B - C46C C46D C46E B8E0 C46F EBF7 FFFD FFFD - FFFD FFFD FFFD FFFD B1EC C476 C477 CCC5 - C4A4 CFA5 C478 C479 C47A C47B C47C EBF9 - C47D C47E ECA2 C480 C5F2 C481 EBFA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C9C5 - FFFD FFFD FFFD FFFD FFFD FFFD E2DF EBFE - C490 C491 C492 C493 CDCE ECA1 B1DB D3B7 - C494 C495 D2DC C496 C497 C498 EBFD C499 - EBFB -End of Item 02F6 - -Begin of Item 02F7 - Format 1 - srcBegin = 81E3 - srcEnd = 84A1 - mappingOffset = 2DC0 - Mapping = - B3BC C54F C550 C551 EAB0 C552 C553 D7D4 - C554 F4AB B3F4 C555 C556 C557 C558 C559 - D6C1 D6C2 FFFD FFFD FFFD FFFD FFFD FFFD - D5E9 BECA C560 F4A7 C561 D2A8 F4A8 F4A9 - C562 F4AA BECB D3DF C563 C564 C565 C566 - C567 C9E0 C9E1 C568 C569 F3C2 C56A CAE6 - C56B CCF2 FFFD FFFD FFFD FFFD FFFD FFFD - E2B6 CBB4 C572 CEE8 D6DB C573 F4AD F4AE - F4AF C574 C575 C576 C577 F4B2 C578 BABD - F4B3 B0E3 F4B0 C579 F4B1 BDA2 B2D5 C57A - F4B6 F4B7 B6E6 B2B0 CFCF F4B4 B4AC C57B - F4B5 C57C C57D F4B8 C57E C580 C581 C582 - C583 F4B9 C584 C585 CDA7 C586 F4BA C587 - F4BB C588 C589 C58A F4BC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CBD2 C593 F4BD - C594 C595 C596 C597 F4BE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4BF C5A0 C640 - C641 C642 C643 F4DE C1BC BCE8 C644 C9AB - D1DE E5F5 C645 C646 C647 C648 DCB3 D2D5 - C649 C64A DCB4 B0AC DCB5 C64B C64C BDDA - C64D DCB9 C64E C64F C650 D8C2 C651 DCB7 - D3F3 C652 C9D6 DCBA DCB6 C653 DCBB C3A2 - C654 C655 C656 C657 DCBC DCC5 DCBD C658 - C659 CEDF D6A5 C65A DCCF C65B DCCD C65C - C65D DCD2 BDE6 C2AB C65E DCB8 DCCB DCCE - DCBE B7D2 B0C5 DCC7 D0BE DCC1 BBA8 C65F - B7BC DCCC C660 C661 DCC6 DCBF C7DB C662 - C663 C664 D1BF DCC0 C665 C666 DCCA C667 - C668 DCD0 C669 C66A CEAD DCC2 C66B DCC3 - DCC8 DCC9 B2D4 DCD1 CBD5 C66C D4B7 DCDB - DCDF CCA6 DCE6 C66D C3E7 DCDC C66E C66F - BFC1 DCD9 C670 B0FA B9B6 DCE5 DCD3 C671 - DCC4 DCD6 C8F4 BFE0 C672 C673 C674 C675 - C9BB C676 C677 C678 B1BD C679 D3A2 C67A - C67B DCDA C67C C67D DCD5 C67E C6BB C680 - DCDE C681 C682 C683 C684 C685 D7C2 C3AF - B7B6 C7D1 C3A9 DCE2 DCD8 DCEB DCD4 C686 - C687 DCDD C688 BEA5 DCD7 C689 DCE0 C68A - C68B DCE3 DCE4 C68C DCF8 C68D C68E DCE1 - DDA2 DCE7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BCEB B4C4 C699 C69A - C3A3 B2E7 DCFA C69B DCF2 C69C DCEF C69D - DCFC DCEE D2F0 B2E8 C69E C8D7 C8E3 DCFB - C69F DCED C6A0 C740 C741 DCF7 C742 C743 - DCF5 C744 C745 BEA3 DCF4 C746 B2DD C747 - C748 C749 C74A C74B DCF3 BCF6 DCE8 BBC4 - C74C C0F3 C74D C74E C74F C750 C751 BCD4 - DCE9 DCEA C752 DCF1 DCF6 DCF9 B5B4 C753 - C8D9 BBE7 DCFE DCFD D3AB DDA1 DDA3 DDA5 - D2F1 DDA4 DDA6 DDA7 D2A9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BAC9 DDA9 C75B C75C - DDB6 DDB1 DDB4 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DDB0 C6CE C764 C765 C0F2 C766 - C767 C768 C769 C9AF C76A C76B C76C DCEC - DDAE C76D C76E C76F C770 DDB7 C771 C772 - DCF0 DDAF C773 DDB8 C774 DDAC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD DDB9 DDB3 DDAD - C4AA C77C C77D C77E C780 DDA8 C0B3 C1AB - DDAA DDAB C781 DDB2 BBF1 DDB5 D3A8 DDBA - C782 DDBB C3A7 C783 C784 DDD2 DDBC C785 - C786 C787 DDD1 C788 B9BD C789 C78A BED5 - C78B BEFA C78C C78D BACA C78E C78F C790 - C791 DDCA C792 DDC5 C793 DDBF C794 C795 - C796 B2CB DDC3 C797 DDCB B2A4 DDD5 C798 - C799 C79A DDBE C79B C79C C79D C6D0 DDD0 - C79E C79F C7A0 C840 C841 DDD4 C1E2 B7C6 - C842 C843 C844 C845 C846 DDCE DDCF C847 - C848 C849 DDC4 C84A C84B C84C DDBD C84D - DDCD CCD1 C84E DDC9 C84F C850 C851 C852 - DDC2 C3C8 C6BC CEAE DDCC C853 DDC8 FFFD - FFFD FFFD FFFD FFFD FFFD DDC1 C85A C85B - C85C DDC6 C2DC FFFD FFFD FFFD FFFD FFFD - FFFD D3A9 D3AA DDD3 CFF4 C8F8 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DDE6 FFFD - FFFD FFFD FFFD FFFD FFFD DDC7 C871 C872 - C873 DDE0 C2E4 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD DDE1 C87C C87D C87E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DDD7 C887 - C888 C889 C88A C88B D6F8 C88C DDD9 DDD8 - B8F0 DDD6 C88D C88E C88F C890 C6CF C891 - B6AD C892 C893 C894 C895 C896 DDE2 C897 - BAF9 D4E1 DDE7 C898 C899 C89A B4D0 C89B - DDDA C89C BFFB DDE3 C89D DDDF C89E DDDD - C89F C8A0 C940 C941 C942 C943 C944 B5D9 - C945 C946 C947 C948 DDDB DDDC DDDE C949 - BDAF DDE4 C94A DDE5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DDF5 C953 C3C9 C954 - C955 CBE2 C956 C957 C958 C959 DDF2 -End of Item 02F7 - -Begin of Item 02F8 - Format 1 - srcBegin = 84AF - srcEnd = 84F0 - mappingOffset = 307F - Mapping = - D8E1 C967 C968 C6D1 C969 DDF4 C96A C96B - C96C D5F4 DDF3 DDF0 C96D C96E DDEC C96F - DDEF C970 DDE8 C971 C972 D0EE C973 C974 - C975 C976 C8D8 DDEE C977 C978 DDE9 C979 - C97A DDEA CBF2 C97B DDED C97C C97D B1CD - C97E C980 C981 C982 C983 C984 C0B6 C985 - BCBB DDF1 C986 C987 DDF7 C988 DDF6 DDEB - C989 C98A C98B C98C C98D C5EE C98E C98F - C990 DDFB -End of Item 02F8 - -Begin of Item 02F9 - Format 1 - srcBegin = 84FC - srcEnd = 854A - mappingOffset = 30C1 - Mapping = - DEA4 C99C C99D DEA3 C99E C99F C9A0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - DDF8 CA49 CA4A CA4B CA4C C3EF CA4D C2FB - CA4E CA4F CA50 D5E1 CA51 CA52 CEB5 CA53 - CA54 CA55 CA56 DDFD CA57 B2CC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C4E8 - CADF FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C7BE DDFA DDFC DDFE DEA2 - B0AA B1CE CA6B CA6C CA6D CA6E CA6F DEAC - CA70 CA71 CA72 CA73 DEA6 BDB6 C8EF -End of Item 02F9 - -Begin of Item 02FA - Format 1 - srcBegin = 8556 - srcEnd = 858F - mappingOffset = 3110 - Mapping = - DEA1 CA80 CA81 DEA5 CA82 CA83 CA84 CA85 - DEA9 CA86 CA87 CA88 CA89 CA8A DEA8 CA8B - CA8C CA8D DEA7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DEAD CA97 D4CC CA98 - CA99 CA9A CA9B DEB3 DEAA DEAE CA9C CA9D - C0D9 CA9E CA9F CAA0 CB40 CB41 B1A1 DEB6 - CB42 DEB1 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DEB2 -End of Item 02FA - -Begin of Item 02FB - Format 1 - srcBegin = 859B - srcEnd = 85E9 - mappingOffset = 314A - Mapping = - D1A6 DEB5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DEAF CB5C CB5D CB5E DEB0 CB5F D0BD - CB60 CB61 CB62 DEB4 CAED DEB9 FFFD FFFD - FFFD FFFD FFFD FFFD DEB8 CB69 DEB7 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DEBB FFFD - FFFD FFFD FFFD FFFD FFFD FFFD BDE5 CB78 - CB79 CB7A CB7B CB7C B2D8 C3EA CB7D CB7E - DEBA CB80 C5BA FFFD FFFD FFFD FFFD FFFD - FFFD DEBC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CCD9 CB8E CB8F CB90 CB91 B7AA -End of Item 02FB - -Begin of Item 02FC - Format 1 - srcBegin = 85F9 - srcEnd = 8605 - mappingOffset = 3199 - Mapping = - CC40 CC41 D4E5 CC42 CC43 CC44 DEBD CC45 - CC46 CC47 CC48 CC49 DEBF -End of Item 02FC - -Begin of Item 02FD - Format 1 - srcBegin = 8611 - srcEnd = 8616 - mappingOffset = 31A6 - Mapping = - C4A2 CC55 CC56 CC57 CC58 DEC1 -End of Item 02FD - -Begin of Item 02FE - Format 1 - srcBegin = 8627 - srcEnd = 8629 - mappingOffset = 31AC - Mapping = - DEBE CC69 DEC0 -End of Item 02FE - -Begin of Item 02FF - Format 1 - srcBegin = 8638 - srcEnd = 8640 - mappingOffset = 31AF - Mapping = - D5BA CC78 CC79 CC7A DEC2 CC7B CC7C CC7D - CC7E -End of Item 02FF - -Begin of Item 0300 - Format 1 - srcBegin = 864D - srcEnd = 8823 - mappingOffset = 31B8 - Mapping = - F2AE BBA2 C2B2 C5B0 C2C7 CC8C CC8D F2AF - CC8E CC8F CC90 CC91 CC92 D0E9 CC93 CC94 - CC95 D3DD CC96 CC97 CC98 EBBD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B3E6 F2B0 - CD40 F2B1 CD41 CD42 CAAD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BAE7 F2B3 F2B5 F2B4 - CBE4 CFBA F2B2 CAB4 D2CF C2EC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CEC3 F2B8 B0F6 - F2B7 CD51 CD52 CD53 CD54 CD55 F2BE CD56 - B2CF FFFD FFFD FFFD FFFD FFFD FFFD D1C1 - F2BA CD5D CD5E CD5F CD60 CD61 F2BC D4E9 - CD62 CD63 F2BB F2B6 F2BF F2BD CD64 F2B9 - CD65 CD66 F2C7 F2C4 F2C6 CD67 CD68 F2CA - F2C2 F2C0 CD69 CD6A CD6B F2C5 CD6C CD6D - CD6E CD6F CD70 D6FB CD71 CD72 CD73 F2C1 - CD74 C7F9 C9DF CD75 F2C8 B9C6 B5B0 CD76 - CD77 F2C3 F2C9 F2D0 F2D6 CD78 CD79 BBD7 - CD7A CD7B CD7C F2D5 CDDC CD7D D6EB CD7E - CD80 F2D2 F2D4 CD81 CD82 CD83 CD84 B8F2 - CD85 CD86 CD87 CD88 F2CB CD89 CD8A CD8B - F2CE C2F9 CD8C D5DD F2CC F2CD F2CF F2D3 - CD8D CD8E CD8F F2D9 D3BC CD90 CD91 CD92 - CD93 B6EA CD94 CAF1 CD95 B7E4 F2D7 CD96 - CD97 CD98 F2D8 F2DA F2DD F2DB CD99 CD9A - F2DC CD9B CD9C CD9D CD9E D1D1 F2D1 CD9F - CDC9 CDA0 CECF D6A9 CE40 F2E3 CE41 C3DB - CE42 F2E0 CE43 CE44 C0AF F2EC F2DE CE45 - F2E1 CE46 CE47 CE48 F2E8 CE49 CE4A CE4B - CE4C F2E2 CE4D CE4E F2E7 CE4F CE50 F2E6 - CE51 CE52 F2E9 CE53 CE54 CE55 F2DF CE56 - CE57 F2E4 F2EA FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D3AC F2E5 B2F5 CE5F CE60 F2F2 - CE61 D0AB CE62 CE63 CE64 CE65 F2F5 CE66 - CE67 CE68 BBC8 CE69 F2F9 FFFD FFFD FFFD - FFFD FFFD FFFD F2F0 CE70 CE71 F2F6 F2F8 - F2FA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F2F3 CE7A F2F1 CE7B CE7C CE7D BAFB - CE7E B5FB CE80 CE81 CE82 CE83 F2EF F2F7 - F2ED F2EE CE84 CE85 CE86 F2EB F3A6 CE87 - F3A3 CE88 CE89 F3A2 CE8A CE8B F2F4 CE8C - C8DA CE8D CE8E CE8F CE90 CE91 F2FB CE92 - CE93 CE94 F3A5 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C3F8 CE9C CE9D CE9E CE9F CEA0 - CF40 CF41 CF42 F2FD CF43 CF44 F3A7 F3A9 - F3A4 CF45 F2FC CF46 CF47 CF48 F3AB CF49 - F3AA CF4A CF4B CF4C CF4D C2DD CF4E CF4F - F3AE CF50 CF51 F3B0 CF52 CF53 CF54 CF55 - CF56 F3A1 CF57 CF58 CF59 F3B1 F3AC CF5A - CF5B CF5C CF5D CF5E F3AF F2FE F3AD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F3B2 CF66 - CF67 CF68 CF69 F3B4 CF6A CF6B CF6C CF6D - F3A8 CF6E CF6F CF70 CF71 F3B3 CF72 CF73 - CF74 F3B5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D0B7 CF80 CF81 CF82 - CF83 F3B8 CF84 CF85 CF86 CF87 D9F9 FFFD - FFFD FFFD FFFD FFFD FFFD F3B9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F3B7 CF96 - C8E4 F3B6 CF97 CF98 CF99 CF9A F3BA CF9B - CF9C CF9D CF9E CF9F F3BB B4C0 CFA0 -End of Item 0300 - -Begin of Item 0301 - Format 1 - srcBegin = 8832 - srcEnd = 8944 - mappingOffset = 338F - Mapping = - EEC3 FFFD FFFD FFFD FFFD FFFD FFFD F3BC - D054 D055 F3BD D056 D057 D058 D1AA D059 - D05A D05B F4AC D0C6 FFFD FFFD FFFD FFFD - FFFD FFFD D0D0 D1DC FFFD FFFD FFFD FFFD - FFFD FFFD CFCE D068 D069 BDD6 D06A D1C3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BAE2 - E1E9 D2C2 F1C2 B2B9 D072 D073 B1ED F1C3 - D074 C9C0 B3C4 D075 D9F2 D076 CBA5 D077 - F1C4 D078 D079 D07A D07B D6D4 D07C D07D - D07E D080 D081 F1C5 F4C0 F1C6 D082 D4AC - F1C7 D083 B0C0 F4C1 D084 D085 F4C2 D086 - D087 B4FC D088 C5DB D089 D08A D08B D08C - CCBB D08D D08E D08F D0E4 D090 D091 D092 - D093 D094 CDE0 D095 D096 D097 D098 D099 - F1C8 D09A D9F3 FFFD FFFD FFFD FFFD FFFD - FFFD B1BB D140 CFAE D141 D142 D143 B8A4 - D144 D145 D146 D147 D148 F1CA D149 D14A - D14B D14C F1CB D14D D14E D14F D150 B2C3 - C1D1 D151 D152 D7B0 F1C9 D153 D154 F1CC - D155 D156 D157 D158 F1CE D159 D15A D15B - D9F6 D15C D2E1 D4A3 D15D D15E F4C3 C8B9 - D15F D160 D161 D162 D163 F4C4 D164 D165 - F1CD F1CF BFE3 F1D0 D166 D167 F1D4 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F1D6 F1D1 - D16F C9D1 C5E1 D170 D171 D172 C2E3 B9FC - D173 D174 F1D3 D175 F1D5 D176 D177 D178 - B9D3 FFFD FFFD FFFD FFFD FFFD FFFD D180 - F1DB D181 D182 D183 D184 D185 BAD6 D186 - B0FD F1D9 D187 D188 D189 D18A D18B F1D8 - F1D2 F1DA D18C D18D D18E D18F D190 F1D7 - D191 D192 D193 C8EC D194 D195 D196 D197 - CDCA F1DD D198 D199 D19A D19B E5BD D19C - D19D D19E F1DC D19F F1DE D1A0 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F1DF - D249 D24A CFE5 -End of Item 0301 - -Begin of Item 0302 - Format 1 - srcBegin = 895E - srcEnd = 8966 - mappingOffset = 34A2 - Mapping = - F4C5 BDF3 FFFD FFFD FFFD FFFD FFFD FFFD - F1E0 -End of Item 0302 - -Begin of Item 0303 - Format 1 - srcBegin = 897B - srcEnd = 8986 - mappingOffset = 34AB - Mapping = - F1E1 D27E D280 D281 CEF7 D282 D2AA D283 - F1FB D284 D285 B8B2 -End of Item 0303 - -Begin of Item 0304 - Format 1 - srcBegin = 89C1 - srcEnd = 8A07 - mappingOffset = 34B7 - Mapping = - BCFB B9DB D35F B9E6 C3D9 CAD3 EAE8 C0C0 - BEF5 EAE9 EAEA EAEB D360 EAEC EAED EAEE - EAEF BDC7 D361 D362 D363 F5FB D364 D365 - D366 F5FD D367 F5FE D368 F5FC D369 D36A - D36B D36C BDE2 D36D F6A1 B4A5 D36E D36F - D370 D371 F6A2 D372 D373 D374 F6A3 D375 - D376 D377 ECB2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D380 D381 D382 D383 D384 D1D4 - FFFD FFFD FFFD FFFD FFFD FFFD D9EA -End of Item 0304 - -Begin of Item 0305 - Format 1 - srcBegin = 8A3E - srcEnd = 8A48 - mappingOffset = 34FE - Mapping = - F6A4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD EEBA -End of Item 0305 - -Begin of Item 0306 - Format 2 - srcBegin = 8A79 - destBegin = D5B2 -End of Item 0306 - -Begin of Item 0307 - Format 1 - srcBegin = 8A89 - srcEnd = 8A93 - mappingOffset = 3509 - Mapping = - D3FE CCDC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CAC4 -End of Item 0307 - -Begin of Item 0308 - Format 2 - srcBegin = 8B07 - destBegin = E5C0 -End of Item 0308 - -Begin of Item 0309 - Format 1 - srcBegin = 8B24 - srcEnd = 8B26 - mappingOffset = 3514 - Mapping = - D680 D681 F6A5 -End of Item 0309 - -Begin of Item 030A - Format 1 - srcBegin = 8B66 - srcEnd = 8B6C - mappingOffset = 3517 - Mapping = - BEAF D760 D761 D762 D763 D764 C6A9 -End of Item 030A - -Begin of Item 030B - Format 1 - srcBegin = 8BA0 - srcEnd = 8C98 - mappingOffset = 351E - Mapping = - DAA5 BCC6 B6A9 B8BC C8CF BCA5 DAA6 DAA7 - CCD6 C8C3 DAA8 C6FD D799 D1B5 D2E9 D1B6 - BCC7 D79A BDB2 BBE4 DAA9 DAAA D1C8 DAAB - D0ED B6EF C2DB D79B CBCF B7ED C9E8 B7C3 - BEF7 D6A4 DAAC DAAD C6C0 D7E7 CAB6 D79C - D5A9 CBDF D5EF DAAE D6DF B4CA DAB0 DAAF - D79D D2EB DAB1 DAB2 DAB3 CAD4 DAB4 CAAB - DAB5 DAB6 B3CF D6EF DAB7 BBB0 B5AE DAB8 - DAB9 B9EE D1AF D2E8 DABA B8C3 CFEA B2EF - DABB DABC D79E BDEB CEDC D3EF DABD CEF3 - DABE D3D5 BBE5 DABF CBB5 CBD0 DAC0 C7EB - D6EE DAC1 C5B5 B6C1 DAC2 B7CC BFCE DAC3 - DAC4 CBAD DAC5 B5F7 DAC6 C1C2 D7BB DAC7 - CCB8 D79F D2EA C4B1 DAC8 B5FD BBD1 DAC9 - D0B3 DACA DACB CEBD DACC DACD DACE B2F7 - DAD1 DACF D1E8 DAD0 C3D5 DAD2 D7A0 DAD3 - DAD4 DAD5 D0BB D2A5 B0F9 DAD6 C7AB DAD7 - BDF7 C3A1 DAD8 DAD9 C3FD CCB7 DADA DADB - C0BE C6D7 DADC DADD C7B4 DADE DADF B9C8 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD BBED D849 D84A D84B D84C B6B9 F4F8 - D84D F4F9 D84E D84F CDE3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F5B9 D858 D859 - D85A D85B EBE0 FFFD FFFD FFFD FFFD FFFD - FFFD CFF3 BBBF FFFD FFFD FFFD FFFD FFFD - FFFD FFFD BAC0 D4A5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E1D9 D870 D871 D872 D873 - F5F4 B1AA B2F2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F5F5 D87B D87C F5F7 D87D D87E - D880 BAD1 F5F6 D881 C3B2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F5F9 D889 D88A D88B - F5F8 -End of Item 030B - -Begin of Item 030C - Format 1 - srcBegin = 8D1D - srcEnd = 8DA3 - mappingOffset = 3617 - Mapping = - B1B4 D5EA B8BA DA4F B9B1 B2C6 D4F0 CFCD - B0DC D5CB BBF5 D6CA B7B7 CCB0 C6B6 B1E1 - B9BA D6FC B9E1 B7A1 BCFA EADA EADB CCF9 - B9F3 EADC B4FB C3B3 B7D1 BAD8 EADD D4F4 - EADE BCD6 BBDF EADF C1DE C2B8 D4DF D7CA - EAE0 EAE1 EAE4 EAE2 EAE3 C9DE B8B3 B6C4 - EAE5 CAEA C9CD B4CD DA50 DA51 E2D9 C5E2 - EAE6 C0B5 DA52 D7B8 EAE7 D7AC C8FC D8D3 - D8CD D4DE DA53 D4F9 C9C4 D3AE B8D3 B3E0 - DA54 C9E2 F4F6 DA55 DA56 DA57 BAD5 DA58 - F4F7 DA59 DA5A D7DF DA5B DA5C F4F1 B8B0 - D5D4 B8CF C6F0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B3C3 DA66 DA67 F4F2 - B3AC DA68 DA69 DA6A DA6B D4BD C7F7 DA6C - DA6D DA6E DA6F DA70 F4F4 DA71 DA72 F4F3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CCCB DA7D DA7E DA80 C8A4 -End of Item 030C - -Begin of Item 030D - Format 1 - srcBegin = 8DB1 - srcEnd = 8E59 - mappingOffset = 369E - Mapping = - F4F5 DA8E D7E3 C5BF F5C0 DA8F DA90 F5BB - DA91 F5C3 DA92 F5C2 DA93 D6BA F5C1 DA94 - DA95 DA96 D4BE F5C4 DA97 F5CC DA98 DA99 - DA9A DA9B B0CF B5F8 DA9C F5C9 F5CA DA9D - C5DC DA9E DA9F DAA0 DB40 F5C5 F5C6 DB41 - DB42 F5C7 F5CB DB43 BEE0 F5C8 B8FA DB44 - DB45 DB46 F5D0 F5D3 DB47 DB48 DB49 BFE7 - DB4A B9F2 F5BC F5CD DB4B DB4C C2B7 DB4D - DB4E DB4F CCF8 DB50 BCF9 DB51 F5CE F5CF - F5D1 B6E5 F5D2 DB52 F5D5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F5BD DB5A DB5B DB5C - F5D4 D3BB DB5D B3EC DB5E DB5F CCA4 DB60 - DB61 DB62 DB63 F5D6 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F5D7 BEE1 F5D8 DB6C - DB6D CCDF F5DB DB6E DB6F DB70 DB71 DB72 - B2C8 D7D9 DB73 F5D9 DB74 F5DA F5DC DB75 - F5E2 DB76 DB77 DB78 F5E0 DB79 DB7A DB7B - F5DF F5DD DB7C DB7D F5E1 DB7E DB80 F5DE - F5E4 F5E5 DB81 CCE3 DB82 DB83 E5BF B5B8 - F5E3 F5E8 CCA3 DB84 DB85 DB86 DB87 DB88 - F5E6 F5E7 FFFD FFFD FFFD FFFD FFFD FFFD - F5BE -End of Item 030D - -Begin of Item 030E - Format 1 - srcBegin = 8E66 - srcEnd = 8E9E - mappingOffset = 3747 - Mapping = - B1C4 DB9B DB9C F5BF DB9D DB9E B5C5 B2E4 - DB9F F5EC F5E9 DBA0 B6D7 DC40 F5ED DC41 - F5EA DC42 DC43 DC44 DC45 DC46 F5EB DC47 - DC48 B4DA DC49 D4EA DC4A DC4B DC4C F5EE - DC4D B3F9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F5EF F5F1 DC55 DC56 DC57 F5F0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F5F2 DC5F - F5F3 -End of Item 030E - -Begin of Item 030F - Format 1 - srcBegin = 8EAB - srcEnd = 8EBA - mappingOffset = 3780 - Mapping = - C9ED B9AA DC6C DC6D C7FB DC6E DC6F B6E3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD CCC9 -End of Item 030F - -Begin of Item 0310 - Format 2 - srcBegin = 8ECE - destBegin = EAA6 -End of Item 0310 - -Begin of Item 0311 - Format 1 - srcBegin = 8F66 - srcEnd = 9104 - mappingOffset = 3790 - Mapping = - B3B5 D4FE B9EC D0F9 DE61 E9ED D7AA E9EE - C2D6 C8ED BAE4 E9EF E9F0 E9F1 D6E1 E9F2 - E9F3 E9F5 E9F4 E9F6 E9F7 C7E1 E9F8 D4D8 - E9F9 BDCE DE62 E9FA E9FB BDCF E9FC B8A8 - C1BE E9FD B1B2 BBD4 B9F5 E9FE DE63 EAA1 - EAA2 EAA3 B7F8 BCAD DE64 CAE4 E0CE D4AF - CFBD D5B7 EAA4 D5DE EAA5 D0C1 B9BC DE65 - B4C7 B1D9 DE66 DE67 DE68 C0B1 DE69 DE6A - DE6B DE6C B1E6 B1E7 DE6D B1E8 DE6E DE6F - DE70 DE71 B3BD C8E8 DE72 DE73 DE74 DE75 - E5C1 DE76 DE77 B1DF DE78 DE79 DE7A C1C9 - B4EF DE7B DE7C C7A8 D3D8 DE7D C6F9 D1B8 - DE7E B9FD C2F5 DE80 DE81 DE82 DE83 DE84 - D3AD DE85 D4CB BDFC DE86 E5C2 B7B5 E5C3 - DE87 DE88 BBB9 D5E2 DE89 BDF8 D4B6 CEA5 - C1AC B3D9 DE8A DE8B CCF6 DE8C E5C6 E5C4 - E5C8 DE8D E5CA E5C7 B5CF C6C8 DE8E B5FC - E5C5 DE8F CAF6 DE90 DE91 E5C9 DE92 DE93 - DE94 C3D4 B1C5 BCA3 DE95 DE96 DE97 D7B7 - DE98 DE99 CDCB CBCD CACA CCD3 E5CC E5CB - C4E6 DE9A DE9B D1A1 D1B7 E5CD DE9C E5D0 - DE9D CDB8 D6F0 E5CF B5DD DE9E CDBE DE9F - E5D1 B6BA DEA0 DF40 CDA8 B9E4 DF41 CAC5 - B3D1 CBD9 D4EC E5D2 B7EA DF42 DF43 DF44 - E5CE FFFD FFFD FFFD FFFD FFFD FFFD E5D5 - B4FE E5D6 DF4B DF4C DF4D DF4E DF4F E5D3 - E5D4 DF50 D2DD DF51 DF52 C2DF B1C6 DF53 - D3E2 DF54 DF55 B6DD CBEC DF56 E5D7 DF57 - DF58 D3F6 DF59 DF5A DF5B DF5C DF5D B1E9 - DF5E B6F4 E5DA E5D8 E5D9 B5C0 DF5F DF60 - DF61 D2C5 E5DC DF62 DF63 E5DE FFFD FFFD - FFFD FFFD FFFD FFFD E5DD C7B2 DF6A D2A3 - DF6B DF6C E5DB DF6D DF6E DF6F DF70 D4E2 - D5DA DF71 DF72 DF73 DF74 DF75 E5E0 D7F1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E5E1 - DF7D B1DC D1FB DF7E E5E2 E5E4 DF80 DF81 - DF82 DF83 E5E3 DF84 DF85 E5E5 DF86 DF87 - DF88 DF89 DF8A D2D8 DF8B B5CB DF8C E7DF - DF8D DAF5 DF8E DAF8 DF8F DAF6 DF90 DAF7 - DF91 DF92 DF93 DAFA D0CF C4C7 DF94 DF95 - B0EE DF96 DF97 DF98 D0B0 DF99 DAF9 DF9A - D3CA BAAA DBA2 C7F1 DF9B DAFC DAFB C9DB - DAFD DF9C DBA1 D7DE DAFE C1DA DF9D DF9E - DBA5 DF9F DFA0 D3F4 E040 E041 DBA7 DBA4 - E042 DBA8 E043 E044 BDBC E045 E046 E047 - C0C9 DBA3 DBA6 D6A3 E048 DBA9 E049 E04A - E04B DBAD E04C E04D E04E DBAE DBAC BAC2 - E04F E050 E051 BFA4 DBAB E052 E053 E054 - DBAA D4C7 B2BF E055 E056 DBAF E057 B9F9 - E058 DBB0 E059 E05A E05B E05C B3BB E05D - E05E E05F B5A6 E060 E061 E062 E063 B6BC - DBB1 E064 E065 E066 B6F5 E067 DBB2 -End of Item 0311 - -Begin of Item 0312 - Format 1 - srcBegin = 9119 - srcEnd = 9123 - mappingOffset = 392F - Mapping = - B1C9 E07C E07D E07E E080 DBB4 E081 E082 - E083 DBB3 DBB5 -End of Item 0312 - -Begin of Item 0313 - Format 1 - srcBegin = 912F - srcEnd = 91BB - mappingOffset = 393A - Mapping = - DBB7 E08F DBB6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DBB8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DBB9 E0A0 E140 DBBA - E141 E142 D3CF F4FA C7F5 D7C3 C5E4 F4FC - F4FD F4FB E143 BEC6 E144 E145 E146 E147 - D0EF E148 E149 B7D3 E14A E14B D4CD CCAA - E14C E14D F5A2 F5A1 BAA8 F4FE CBD6 E14E - E14F E150 F5A4 C0D2 E151 B3EA E152 CDAA - F5A5 F5A3 BDB4 F5A8 E153 F5A9 BDCD C3B8 - BFE1 CBE1 F5AA E154 E155 E156 F5A6 F5A7 - C4F0 E157 E158 E159 E15A E15B F5AC E15C - B4BC E15D D7ED E15E B4D7 F5AB F5AE E15F - E160 F5AD F5AF D0D1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C3D1 C8A9 FFFD FFFD FFFD - FFFD FFFD FFFD F5B0 F5B1 FFFD FFFD FFFD - FFFD FFFD FFFD F5B2 E174 E175 F5B3 F5B4 - F5B5 E176 E177 E178 E179 F5B7 F5B6 E17A - E17B E17C E17D F5B8 E17E -End of Item 0313 - -Begin of Item 0314 - Format 1 - srcBegin = 91C7 - srcEnd = 91DC - mappingOffset = 39C7 - Mapping = - B2C9 E18B D3D4 CACD E18C C0EF D6D8 D2B0 - C1BF E18D BDF0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B8AA -End of Item 0314 - -Begin of Item 0315 - Format 2 - srcBegin = 9274 - destBegin = BCF8 -End of Item 0315 - -Begin of Item 0316 - Format 2 - srcBegin = 928E - destBegin = F6C6 -End of Item 0316 - -Begin of Item 0317 - Format 2 - srcBegin = 92AE - destBegin = F6C7 -End of Item 0317 - -Begin of Item 0318 - Format 2 - srcBegin = 92C8 - destBegin = F6C8 -End of Item 0318 - -Begin of Item 0319 - Format 2 - srcBegin = 933E - destBegin = F6C9 -End of Item 0319 - -Begin of Item 031A - Format 1 - srcBegin = 936A - srcEnd = 936B - mappingOffset = 39DD - Mapping = - F6CA E5A0 -End of Item 031A - -Begin of Item 031B - Format 2 - srcBegin = 938F - destBegin = F6CC -End of Item 031B - -Begin of Item 031C - Format 1 - srcBegin = 93CA - srcEnd = 93D6 - mappingOffset = 39DF - Mapping = - F6CB E69E E69F E6A0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F7E9 -End of Item 031C - -Begin of Item 031D - Format 2 - srcBegin = 943E - destBegin = F6CD -End of Item 031D - -Begin of Item 031E - Format 1 - srcBegin = 946B - srcEnd = 946F - mappingOffset = 39EC - Mapping = - F6CE E87B E87C E87D E87E -End of Item 031E - -Begin of Item 031F - Format 1 - srcBegin = 9485 - srcEnd = 957F - mappingOffset = 39F1 - Mapping = - EEC4 EEC5 EEC6 D5EB B6A4 EEC8 EEC7 EEC9 - EECA C7A5 EECB EECC E895 B7B0 B5F6 EECD - EECF E896 EECE E897 B8C6 EED0 EED1 EED2 - B6DB B3AE D6D3 C4C6 B1B5 B8D6 EED3 EED4 - D4BF C7D5 BEFB CED9 B9B3 EED6 EED5 EED8 - EED7 C5A5 EED9 EEDA C7AE EEDB C7AF EEDC - B2A7 EEDD EEDE EEDF EEE0 EEE1 D7EA EEE2 - EEE3 BCD8 EEE4 D3CB CCFA B2AC C1E5 EEE5 - C7A6 C3AD E898 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E899 EEED EEEE EEEF E89A E89B - EEF0 EEF1 EEF2 EEF4 EEF3 E89C EEF5 CDAD - C2C1 EEF6 EEF7 EEF8 D5A1 EEF9 CFB3 EEFA - EEFB E89D EEFC EEFD EFA1 EEFE EFA2 B8F5 - C3FA EFA3 EFA4 BDC2 D2BF B2F9 EFA5 EFA6 - EFA7 D2F8 EFA8 D6FD EFA9 C6CC E89E EFAA - EFAB C1B4 EFAC CFFA CBF8 EFAE EFAD B3FA - B9F8 EFAF EFB0 D0E2 EFB1 EFB2 B7E6 D0BF - EFB3 EFB4 EFB5 C8F1 CCE0 EFB6 EFB7 EFB8 - EFB9 EFBA D5E0 EFBB B4ED C3AA EFBC E89F - EFBD EFBE EFBF E8A0 CEFD EFC0 C2E0 B4B8 - D7B6 BDF5 E940 CFC7 EFC3 EFC1 EFC2 EFC4 - B6A7 BCFC BEE2 C3CC EFC5 EFC6 E941 EFC7 - EFCF EFC8 EFC9 EFCA C7C2 EFF1 B6CD EFCB - E942 EFCC EFCD B6C6 C3BE EFCE E943 EFD0 - EFD1 EFD2 D5F2 E944 EFD3 C4F7 E945 EFD4 - C4F8 EFD5 EFD6 B8E4 B0F7 EFD7 EFD8 EFD9 - E946 EFDA EFDB EFDC EFDD E947 EFDE BEB5 - EFE1 EFDF EFE0 E948 EFE2 EFE3 C1CD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C0D8 E949 EFED C1AD EFEE EFEF EFF0 E94A - E94B CFE2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B3A4 -End of Item 031F - -Begin of Item 0320 - Format 1 - srcBegin = 95E8 - srcEnd = 9677 - mappingOffset = 3AEC - Mapping = - C3C5 E3C5 C9C1 E3C6 EA5C B1D5 CECA B4B3 - C8F2 E3C7 CFD0 E3C8 BCE4 E3C9 E3CA C3C6 - D5A2 C4D6 B9EB CEC5 E3CB C3F6 E3CC EA5D - B7A7 B8F3 BAD2 E3CD E3CE D4C4 E3CF EA5E - E3D0 D1CB E3D1 E3D2 E3D3 E3D4 D1D6 E3D5 - B2FB C0BB E3D6 EA5F C0AB E3D7 E3D8 E3D9 - EA60 E3DA E3DB EA61 B8B7 DAE2 EA62 B6D3 - EA63 DAE4 DAE3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DAE6 EA6B EA6C EA6D C8EE EA6E - EA6F DAE5 B7C0 D1F4 D2F5 D5F3 BDD7 EA70 - EA71 EA72 EA73 D7E8 DAE8 DAE7 EA74 B0A2 - CDD3 EA75 DAE9 EA76 B8BD BCCA C2BD C2A4 - B3C2 DAEA EA77 C2AA C4B0 BDB5 EA78 EA79 - CFDE EA7A EA7B EA7C DAEB C9C2 EA7D EA7E - EA80 EA81 EA82 B1DD EA83 EA84 EA85 DAEC - EA86 B6B8 D4BA EA87 B3FD EA88 EA89 DAED - D4C9 CFD5 C5E3 EA8A DAEE EA8B EA8C EA8D - EA8E EA8F DAEF EA90 DAF0 C1EA CCD5 CFDD -End of Item 0320 - -Begin of Item 0321 - Format 1 - srcBegin = 9685 - srcEnd = 973E - mappingOffset = 3B7C - Mapping = - D3E7 C2A1 EA9E DAF1 EA9F EAA0 CBE5 EB40 - DAF2 EB41 CBE6 D2FE EB42 EB43 EB44 B8F4 - EB45 EB46 DAF3 B0AF CFB6 EB47 EB48 D5CF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CBED FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD DAF4 EB5B EB5C E3C4 EB5D - EB5E C1A5 EB5F EB60 F6BF EB61 EB62 F6C0 - F6C1 C4D1 EB63 C8B8 D1E3 EB64 EB65 D0DB - D1C5 BCAF B9CD EB66 EFF4 EB67 EB68 B4C6 - D3BA F6C2 B3FB EB69 EB6A F6C3 EB6B EB6C - B5F1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F6C5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D3EA F6A7 D1A9 EB7E EB80 - EB81 EB82 F6A9 EB83 EB84 EB85 F6A8 EB86 - EB87 C1E3 C0D7 EB88 B1A2 EB89 EB8A EB8B - EB8C CEED EB8D D0E8 F6AB EB8E EB8F CFF6 - EB90 F6AA D5F0 F6AC C3B9 EB91 EB92 EB93 - BBF4 F6AE F6AD EB94 EB95 EB96 C4DE EB97 - EB98 C1D8 EB99 EB9A EB9B EB9C EB9D CBAA - EB9E CFBC EB9F EBA0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F6AF EC49 EC4A - F6B0 EC4B EC4C F6B1 EC4D C2B6 EC4E EC4F - EC50 EC51 EC52 B0D4 C5F9 EC53 EC54 EC55 - EC56 F6B2 -End of Item 0321 - -Begin of Item 0322 - Format 1 - srcBegin = 9752 - srcEnd = 97B4 - mappingOffset = 3C36 - Mapping = - C7E0 F6A6 EC6A EC6B BEB8 EC6C EC6D BEB2 - EC6E B5E5 EC6F EC70 B7C7 EC71 BFBF C3D2 - C3E6 EC72 EC73 D8CC EC74 EC75 EC76 B8EF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EC80 BDF9 D1A5 EC81 B0D0 EC82 EC83 EC84 - EC85 EC86 F7B0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F7B1 EC8F EC90 EC91 EC92 - EC93 D0AC EC94 B0B0 EC95 EC96 EC97 F7B2 - F7B3 EC98 F7B4 EC99 EC9A EC9B C7CA EC9C - EC9D EC9E EC9F ECA0 ED40 ED41 BECF ED42 - ED43 F7B7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F7B6 ED4B B1DE ED4C F7B5 ED4D ED4E - F7B8 ED4F F7B9 -End of Item 0322 - -Begin of Item 0323 - Format 1 - srcBegin = 97E4 - srcEnd = 97F6 - mappingOffset = 3C99 - Mapping = - ED80 ED81 CEA4 C8CD ED82 BAAB E8B8 E8B9 - E8BA BEC2 ED83 ED84 ED85 ED86 ED87 D2F4 - ED88 D4CF C9D8 -End of Item 0323 - -Begin of Item 0324 - Format 1 - srcBegin = 9875 - srcEnd = 98A7 - mappingOffset = 3CAC - Mapping = - D2B3 B6A5 C7EA F1FC CFEE CBB3 D0EB E7EF - CDE7 B9CB B6D9 F1FD B0E4 CBCC F1FE D4A4 - C2AD C1EC C6C4 BEB1 F2A1 BCD5 EF46 F2A2 - F2A3 EF47 F2A4 D2C3 C6B5 EF48 CDC7 F2A5 - EF49 D3B1 BFC5 CCE2 EF4A F2A6 F2A7 D1D5 - B6EE F2A8 F2A9 B5DF F2AA F2AB EF4B B2FC - F2AC F2AD C8A7 -End of Item 0324 - -Begin of Item 0325 - Format 1 - srcBegin = 98CE - srcEnd = 98E8 - mappingOffset = 3CDF - Mapping = - B7E7 EF72 EF73 ECA9 ECAA ECAB EF74 ECAC - EF75 EF76 C6AE ECAD ECAE EF77 EF78 EF79 - B7C9 CAB3 EF7A EF7B EF7C EF7D EF7E EF80 - EF81 E2B8 F7CF -End of Item 0325 - -Begin of Item 0326 - Format 1 - srcBegin = 9908 - srcEnd = 9910 - mappingOffset = 3CFA - Mapping = - F040 F041 F042 F043 F044 F7D0 F045 F046 - B2CD -End of Item 0326 - -Begin of Item 0327 - Format 2 - srcBegin = 992E - destBegin = F7D1 -End of Item 0327 - -Begin of Item 0328 - Format 1 - srcBegin = 9954 - srcEnd = 9955 - mappingOffset = 3D03 - Mapping = - F7D3 F7D2 -End of Item 0328 - -Begin of Item 0329 - Format 1 - srcBegin = 9963 - srcEnd = 9999 - mappingOffset = 3D05 - Mapping = - E2BB F097 BCA2 F098 FFFD FFFD FFFD FFFD - FFFD FFFD B7B9 D2FB BDA4 CACE B1A5 CBC7 - F099 E2C2 B6FC C8C4 E2C3 F09A F09B BDC8 - F09C B1FD E2C4 F09D B6F6 E2C5 C4D9 F09E - F09F E2C6 CFDA B9DD E2C7 C0A1 F0A0 E2C8 - B2F6 F140 E2C9 F141 C1F3 E2CA E2CB C2F8 - E2CC E2CD E2CE CAD7 D8B8 D9E5 CFE3 -End of Item 0329 - -Begin of Item 032A - Format 1 - srcBegin = 99A5 - srcEnd = 99A8 - mappingOffset = 3D3C - Mapping = - F0A5 F14D F14E DCB0 -End of Item 032A - -Begin of Item 032B - Format 1 - srcBegin = 9A6C - srcEnd = 9B13 - mappingOffset = 3D40 - Mapping = - C2ED D4A6 CDD4 D1B1 B3DB C7FD F352 B2B5 - C2BF E6E0 CABB E6E1 E6E2 BED4 E6E3 D7A4 - CDD5 E6E5 BCDD E6E4 E6E6 E6E7 C2EE F353 - BDBE E6E8 C2E6 BAA7 E6E9 F354 E6EA B3D2 - D1E9 F355 F356 BFA5 E6EB C6EF E6EC E6ED - F357 F358 E6EE C6AD E6EF F359 C9A7 E6F0 - E6F1 E6F2 E5B9 E6F3 E6F4 C2E2 E6F5 E6F6 - D6E8 E6F7 F35A E6F8 B9C7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F7BB F7BA F362 F363 - F364 F365 F7BE F7BC BAA1 F366 F7BF F367 - F7C0 F368 F369 F36A F7C2 F7C1 F7C4 F36B - F36C F7C3 F36D F36E F36F F370 F371 F7C5 - F7C6 F372 F373 F374 F375 F7C7 F376 CBE8 - F377 F378 F379 F37A B8DF F37B F37C F37D - F37E F380 F381 F7D4 F382 F7D5 F383 F384 - F385 F386 F7D6 F387 F388 F389 F38A F7D8 - F38B F7DA F38C F7D7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F7DB F396 F7D9 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D7D7 - F39E F39F F3A0 F440 F7DC FFFD FFFD FFFD - FFFD FFFD FFFD F7DD F447 F448 F449 F7DE -End of Item 032B - -Begin of Item 032C - Format 1 - srcBegin = 9B1F - srcEnd = 9B23 - mappingOffset = 3DE8 - Mapping = - F7DF F455 F456 F457 F7E0 -End of Item 032C - -Begin of Item 032D - Format 1 - srcBegin = 9B2F - srcEnd = 9B54 - mappingOffset = 3DED - Mapping = - DBCB F463 F464 D8AA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E5F7 B9ED F46D F46E - F46F F470 BFFD BBEA F7C9 C6C7 F7C8 F471 - F7CA F7CC F7CB F472 F473 F474 F7CD F475 - CEBA F476 F7CE F477 F478 C4A7 -End of Item 032D - -Begin of Item 032E - Format 1 - srcBegin = 9C7B - srcEnd = 9CE2 - mappingOffset = 3E13 - Mapping = - F780 D3E3 F781 F782 F6CF F783 C2B3 F6D0 - F784 F785 F6D1 F6D2 F6D3 F6D4 F786 F787 - F6D6 F788 B1AB F6D7 F789 F6D8 F6D9 F6DA - F78A F6DB F6DC F78B F78C F78D F78E F6DD - F6DE CFCA F78F FFFD FFFD FFFD FFFD FFFD - FFFD C0F0 F6E5 F6E6 F6E7 F6E8 F6E9 F790 - F6EA F791 F6EB F6EC F792 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BEA8 F793 F6F5 - F6F6 F6F7 F6F8 F794 F795 F796 F797 F798 - C8FA F6F9 F6FA F6FB F6FC F799 F79A F6FD - F6FE F7A1 F7A2 F7A3 F7A4 F7A5 F79B F79C - F7A6 F7A7 F7A8 B1EE F7A9 F7AA F7AB F79D - F79E F7AC F7AD C1DB F7AE F79F F7A0 F7AF -End of Item 032E - -Begin of Item 032F - Format 1 - srcBegin = 9E1F - srcEnd = 9F44 - mappingOffset = 3E7B - Mapping = - C4F1 F0AF BCA6 F0B0 C3F9 FB5C C5B8 D1BB - FB5D F0B1 F0B2 F0B3 F0B4 F0B5 D1BC FB5E - D1EC FB5F F0B7 F0B6 D4A7 FB60 CDD2 F0B8 - F0BA F0B9 F0BB F0BC FB61 FB62 B8EB F0BD - BAE8 FB63 F0BE F0BF BEE9 F0C0 B6EC F0C1 - F0C2 F0C3 F0C4 C8B5 F0C5 F0C6 FB64 F0C7 - C5F4 FB65 F0C8 FB66 FB67 FB68 F0C9 FB69 - F0CA F7BD FB6A F0CB F0CC F0CD FB6B F0CE - FB6C FB6D FB6E FB6F F0CF BAD7 FB70 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F0D8 FB71 - FB72 D3A5 F0D7 FB73 F0D9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F5BA - C2B9 FB7E FB80 F7E4 FB81 FB82 FB83 FB84 - F7E5 F7E6 FB85 FB86 F7E7 FFFD FFFD FFFD - FFFD FFFD FFFD F7E8 C2B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F7EA FB96 - F7EB FFFD FFFD FFFD FFFD FFFD FFFD C2F3 - FB9D FB9E FB9F FBA0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4F0 FC49 FC4A - FC4B F4EF FC4C FC4D C2E9 FC4E F7E1 F7E2 - FC4F FC50 FC51 FC52 FC53 BBC6 FC54 FC55 - FC56 FC57 D9E4 FC58 FC59 FC5A CAF2 C0E8 - F0A4 FC5B BADA FC5C FC5D C7AD FC5E FC5F - FC60 C4AC FC61 FC62 F7EC F7ED F7EE FC63 - F7F0 F7EF FC64 F7F1 FC65 FC66 F7F4 FC67 - F7F3 FC68 F7F2 F7F5 FC69 FC6A FC6B FC6C - F7F6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD EDE9 FC76 EDEA EDEB FC77 F6BC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FC80 - FC81 FC82 FC83 FC84 F6BD FC85 F6BE B6A6 - FC86 D8BE FC87 FC88 B9C4 FC89 FC8A FC8B - D8BB FC8C DCB1 FFFD FFFD FFFD FFFD FFFD - FFFD CAF3 FC93 F7F7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F7F8 FC9D FC9E - F7F9 FC9F FCA0 FD40 FD41 FD42 FD43 FD44 - F7FB FD45 F7FA FD46 B1C7 FD47 F7FC F7FD - FD48 FD49 FD4A FD4B FD4C F7FE -End of Item 032F - -Begin of Item 0330 - Format 1 - srcBegin = 9F50 - srcEnd = 9F51 - mappingOffset = 3FA1 - Mapping = - C6EB ECB4 -End of Item 0330 - -Begin of Item 0331 - Format 1 - srcBegin = 9F7F - srcEnd = 9F8C - mappingOffset = 3FA3 - Mapping = - B3DD F6B3 FD86 FD87 F6B4 C1E4 FFFD FFFD - FFFD FFFD FFFD FFFD C8A3 F6BB -End of Item 0331 - -Begin of Item 0332 - Format 1 - srcBegin = 9F99 - srcEnd = 9FA5 - mappingOffset = 3FB1 - Mapping = - C1FA B9A8 EDE8 FD94 FD95 FD96 B9EA D9DF - FD97 FD98 FD99 FD9A FD9B -End of Item 0332 - -Begin of Item 0333 - Format 2 - srcBegin = F92C - destBegin = FD9C -End of Item 0333 - -Begin of Item 0334 - Format 2 - srcBegin = F979 - destBegin = FD9D -End of Item 0334 - -Begin of Item 0335 - Format 2 - srcBegin = F995 - destBegin = FD9E -End of Item 0335 - -Begin of Item 0336 - Format 1 - srcBegin = F9E7 - srcEnd = F9F1 - mappingOffset = 3FBE - Mapping = - FD9F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FDA0 -End of Item 0336 - -Begin of Item 0337 - Format 1 - srcBegin = FA0C - srcEnd = FA29 - mappingOffset = 3FC9 - Mapping = - FE40 FE41 FE42 FE43 FFFD FE44 FFFD FE45 - FE46 FFFD FFFD FFFD FE47 FFFD FFFD FFFD - FFFD FFFD FFFD FE48 FE49 FE4A FFFD FE4B - FE4C FFFD FFFD FE4D FE4E FE4F -End of Item 0337 - -Begin of Item 0338 - Format 1 - srcBegin = FE30 - srcEnd = FE44 - mappingOffset = 3FE7 - Mapping = - A955 A6F2 FFFD A6F4 A6F5 A6E0 A6E1 A6F0 - A6F1 A6E2 A6E3 A6EE A6EF A6E6 A6E7 A6E4 - A6E5 A6E8 A6E9 A6EA A6EB -End of Item 0338 - -Begin of Item 0339 - Format 1 - srcBegin = FE54 - srcEnd = FE6B - mappingOffset = 3FFC - Mapping = - A972 A973 A974 A975 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD A980 A981 - A982 A983 A984 FFFD A985 A986 A987 A988 -End of Item 0339 - -Begin of Item 033A - Format 1 - srcBegin = FF01 - srcEnd = FF04 - mappingOffset = 4014 - Mapping = - A3A1 A3A2 A3A3 A1E7 -End of Item 033A - -Begin of Item 033B - Format 2 - srcBegin = FF5E - destBegin = A1AB -End of Item 033B - -Begin of Item 033C - Format 1 - srcBegin = FFE0 - srcEnd = FFE5 - mappingOffset = 4018 - Mapping = - A1E9 A1EA A956 A3FE A957 A3A4 -End of Item 033C - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x033D, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x00D4, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0A8B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0269 */ -/* Total of Format 1 : 0x00AB */ -/* Total of Format 2 : 0x0029 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x1110, 0x1212, 0x2122, 0x1122, 0x1111, 0x2221, -0x1111, 0x1111, 0x1122, 0x1111, 0x2111, 0x2111, 0x1111, 0x1111, -0x1111, 0x1112, 0x1211, 0x1112, 0x1111, 0x1112, 0x1111, 0x1111, -0x1111, 0x1111, 0x1121, 0x1111, 0x2121, 0x1111, 0x2111, 0x1111, -0x1111, 0x1112, 0x1112, 0x1121, 0x1211, 0x1111, 0x1111, 0x1111, -0x1111, 0x1211, 0x1112, 0x1111, 0x1112, 0x2221, 0x2122, 0x1121, -0x1111, 0x2111, 0x1111, 0x1111, 0x2111, 0x1122, 0x2111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x00D4 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0391, 0x03A1, 0xA6A1, -/* 0002 */ 0x03A3, 0x03A9, 0xA6B2, -/* 0003 */ 0x03B1, 0x03C1, 0xA6C1, -/* 0004 */ 0x03C3, 0x03C9, 0xA6D2, -/* 0005 */ 0x0410, 0x0415, 0xA7A1, -/* 0006 */ 0x0416, 0x042F, 0xA7A8, -/* 0007 */ 0x0430, 0x0435, 0xA7D1, -/* 0008 */ 0x0436, 0x044F, 0xA7D8, -/* 0009 */ 0x2160, 0x216B, 0xA2F1, -/* 000A */ 0x2170, 0x2179, 0xA2A1, -/* 000B */ 0x2460, 0x2469, 0xA2D9, -/* 000C */ 0x2474, 0x2487, 0xA2C5, -/* 000D */ 0x2488, 0x249B, 0xA2B1, -/* 000E */ 0x2500, 0x254B, 0xA9A4, -/* 000F */ 0x2550, 0x2573, 0xA854, -/* 0010 */ 0x2581, 0x2587, 0xA878, -/* 0011 */ 0x2588, 0x258F, 0xA880, -/* 0012 */ 0x3008, 0x300F, 0xA1B4, -/* 0013 */ 0x3021, 0x3029, 0xA940, -/* 0014 */ 0x3041, 0x3093, 0xA4A1, -/* 0015 */ 0x30A1, 0x30F6, 0xA5A1, -/* 0016 */ 0x3105, 0x3129, 0xA8C5, -/* 0017 */ 0x3220, 0x3229, 0xA2E5, -/* 0018 */ 0x4E6A, 0x4E6F, 0x8165, -/* 0019 */ 0x4E74, 0x4E7D, 0x816C, -/* 001A */ 0x4E7F, 0x4E85, 0x8176, -/* 001B */ 0x4F02, 0x4F08, 0x81AC, -/* 001C */ 0x4F47, 0x4F4C, 0x81D0, -/* 001D */ 0x4FB6, 0x4FBE, 0x8248, -/* 001E */ 0x4FFF, 0x500A, 0x8273, -/* 001F */ 0x502F, 0x5039, 0x8291, -/* 0020 */ 0x505D, 0x5064, 0x82B3, -/* 0021 */ 0x5066, 0x506B, 0x82BB, -/* 0022 */ 0x506D, 0x5075, 0x82C1, -/* 0023 */ 0x508E, 0x50A2, 0x82D9, -/* 0024 */ 0x50B3, 0x50B9, 0x82F7, -/* 0025 */ 0x50BD, 0x50CE, 0x8340, -/* 0026 */ 0x50D0, 0x50D5, 0x8352, -/* 0027 */ 0x50DB, 0x50E5, 0x835B, -/* 0028 */ 0x50FC, 0x5105, 0x8374, -/* 0029 */ 0x510C, 0x5111, 0x8382, -/* 002A */ 0x5113, 0x5120, 0x8388, -/* 002B */ 0x5122, 0x513E, 0x8396, -/* 002C */ 0x51D2, 0x51D7, 0x83F9, -/* 002D */ 0x51E5, 0x51EA, 0x8448, -/* 002E */ 0x5244, 0x5249, 0x8471, -/* 002F */ 0x5273, 0x527C, 0x8491, -/* 0030 */ 0x5289, 0x528F, 0x84A2, -/* 0031 */ 0x5294, 0x529A, 0x84AB, -/* 0032 */ 0x52B4, 0x52BD, 0x84BA, -/* 0033 */ 0x52D9, 0x52DE, 0x84D5, -/* 0034 */ 0x52E5, 0x52EF, 0x84DF, -/* 0035 */ 0x52F1, 0x52F8, 0x84EA, -/* 0036 */ 0x532F, 0x5338, 0x8552, -/* 0037 */ 0x53AF, 0x53B5, 0x8593, -/* 0038 */ 0x5469, 0x5470, 0x85E1, -/* 0039 */ 0x54F4, 0x54F9, 0x865D, -/* 003A */ 0x5515, 0x551A, 0x8672, -/* 003B */ 0x556F, 0x5574, 0x86A9, -/* 003C */ 0x55A0, 0x55A6, 0x86C1, -/* 003D */ 0x55A8, 0x55B0, 0x86C8, -/* 003E */ 0x5610, 0x5617, 0x8745, -/* 003F */ 0x5640, 0x564B, 0x8765, -/* 0040 */ 0x567D, 0x5684, 0x8790, -/* 0041 */ 0x5687, 0x568D, 0x8798, -/* 0042 */ 0x5694, 0x56A2, 0x87A2, -/* 0043 */ 0x56A4, 0x56AE, 0x87B1, -/* 0044 */ 0x56B0, 0x56B6, 0x87BC, -/* 0045 */ 0x56BD, 0x56C9, 0x87C7, -/* 0046 */ 0x56CB, 0x56D3, 0x87D4, -/* 0047 */ 0x56E5, 0x56EA, 0x87E3, -/* 0048 */ 0x570B, 0x5711, 0x87F8, -/* 0049 */ 0x5712, 0x571B, 0x8840, -/* 004A */ 0x5794, 0x579A, 0x888A, -/* 004B */ 0x57B9, 0x57C1, 0x88A0, -/* 004C */ 0x57C4, 0x57CA, 0x88A9, -/* 004D */ 0x57E5, 0x57EC, 0x88BD, -/* 004E */ 0x5836, 0x583D, 0x88F7, -/* 004F */ 0x583E, 0x5843, 0x8940, -/* 0050 */ 0x5845, 0x584B, 0x8946, -/* 0051 */ 0x585F, 0x5864, 0x895A, -/* 0052 */ 0x586D, 0x587D, 0x8965, -/* 0053 */ 0x58A0, 0x58A7, 0x898D, -/* 0054 */ 0x58AA, 0x58BB, 0x8995, -/* 0055 */ 0x58C6, 0x58D0, 0x89AE, -/* 0056 */ 0x58D6, 0x58E3, 0x89BC, -/* 0057 */ 0x58E5, 0x58EA, 0x89CA, -/* 0058 */ 0x58FA, 0x5901, 0x89D8, -/* 0059 */ 0x5966, 0x5972, 0x8A56, -/* 005A */ 0x59B3, 0x59B8, 0x8A85, -/* 005B */ 0x59BF, 0x59C5, 0x8A8E, -/* 005C */ 0x59ED, 0x59F8, 0x8AAB, -/* 005D */ 0x5A2A, 0x5A30, 0x8AD3, -/* 005E */ 0x5A4B, 0x5A54, 0x8AEB, -/* 005F */ 0x5A5B, 0x5A60, 0x8AF9, -/* 0060 */ 0x5A6B, 0x5A73, 0x8B47, -/* 0061 */ 0x5A80, 0x5A91, 0x8B56, -/* 0062 */ 0x5A93, 0x5A99, 0x8B68, -/* 0063 */ 0x5A9C, 0x5AA9, 0x8B6F, -/* 0064 */ 0x5AC3, 0x5AC8, 0x8B8F, -/* 0065 */ 0x5AF2, 0x5B08, 0x8BB0, -/* 0066 */ 0x5B0A, 0x5B15, 0x8BC7, -/* 0067 */ 0x5B18, 0x5B31, 0x8BD3, -/* 0068 */ 0x5B38, 0x5B3F, 0x8BF0, -/* 0069 */ 0x5B41, 0x5B47, 0x8BF8, -/* 006A */ 0x5B48, 0x5B4F, 0x8C40, -/* 006B */ 0x5BD4, 0x5BDC, 0x8C81, -/* 006C */ 0x5BF1, 0x5BF7, 0x8C95, -/* 006D */ 0x5C67, 0x5C6D, 0x8CD4, -/* 006E */ 0x5C72, 0x5C78, 0x8CDC, -/* 006F */ 0x5CC5, 0x5CCA, 0x8D4F, -/* 0070 */ 0x5CCC, 0x5CD1, 0x8D55, -/* 0071 */ 0x5CD3, 0x5CD8, 0x8D5B, -/* 0072 */ 0x5CDA, 0x5CE0, 0x8D61, -/* 0073 */ 0x5CF1, 0x5CFA, 0x8D70, -/* 0074 */ 0x5D08, 0x5D0D, 0x8D83, -/* 0075 */ 0x5D35, 0x5D3C, 0x8DA4, -/* 0076 */ 0x5D3F, 0x5D46, 0x8DAC, -/* 0077 */ 0x5D4D, 0x5D57, 0x8DB6, -/* 0078 */ 0x5D5E, 0x5D68, 0x8DC4, -/* 0079 */ 0x5D75, 0x5D81, 0x8DD6, -/* 007A */ 0x5D83, 0x5D98, 0x8DE3, -/* 007B */ 0x5DA1, 0x5DB6, 0x8E40, -/* 007C */ 0x5DB8, 0x5DC4, 0x8E56, -/* 007D */ 0x5DC6, 0x5DCC, 0x8E63, -/* 007E */ 0x5DCE, 0x5DDA, 0x8E6A, -/* 007F */ 0x5E1E, 0x5E25, 0x8E94, -/* 0080 */ 0x5E46, 0x5E4B, 0x8EAF, -/* 0081 */ 0x5E4D, 0x5E53, 0x8EB5, -/* 0082 */ 0x5E63, 0x5E71, 0x8EC5, -/* 0083 */ 0x5EBF, 0x5EC5, 0x8EF8, -/* 0084 */ 0x5ECB, 0x5ED0, 0x8F43, -/* 0085 */ 0x5EDC, 0x5EE7, 0x8F4F, -/* 0086 */ 0x5EEB, 0x5EF3, 0x8F5C, -/* 0087 */ 0x5F32, 0x5F38, 0x8F85, -/* 0088 */ 0x5F41, 0x5F4F, 0x8F90, -/* 0089 */ 0x5FA2, 0x5FA7, 0x8FC7, -/* 008A */ 0x5FAF, 0x5FB4, 0x8FD0, -/* 008B */ 0x6044, 0x604A, 0x905F, -/* 008C */ 0x60BD, 0x60C4, 0x90A2, -/* 008D */ 0x612C, 0x613E, 0x90E5, -/* 008E */ 0x6140, 0x6146, 0x90F8, -/* 008F */ 0x6156, 0x615C, 0x9149, -/* 0090 */ 0x6169, 0x616F, 0x9158, -/* 0091 */ 0x6178, 0x618A, 0x9164, -/* 0092 */ 0x6196, 0x619C, 0x9180, -/* 0093 */ 0x619E, 0x61A6, 0x9187, -/* 0094 */ 0x61AD, 0x61B6, 0x9192, -/* 0095 */ 0x61B8, 0x61BD, 0x919C, -/* 0096 */ 0x61D5, 0x61E5, 0x91B1, -/* 0097 */ 0x61E7, 0x61F4, 0x91C2, -/* 0098 */ 0x61F6, 0x61FE, 0x91D0, -/* 0099 */ 0x6200, 0x6205, 0x91D9, -/* 009A */ 0x625C, 0x6262, 0x9247, -/* 009B */ 0x628B, 0x6290, 0x9261, -/* 009C */ 0x6333, 0x6338, 0x92AE, -/* 009D */ 0x6356, 0x635D, 0x92C2, -/* 009E */ 0x6399, 0x639F, 0x92EA, -/* 009F */ 0x63D7, 0x63DD, 0x934D, -/* 00A0 */ 0x6415, 0x641A, 0x9374, -/* 00A1 */ 0x642E, 0x6433, 0x9385, -/* 00A2 */ 0x644B, 0x6451, 0x9397, -/* 00A3 */ 0x645F, 0x6466, 0x93A7, -/* 00A4 */ 0x646E, 0x6477, 0x93B3, -/* 00A5 */ 0x647B, 0x6481, 0x93BD, -/* 00A6 */ 0x6488, 0x6490, 0x93C6, -/* 00A7 */ 0x64C6, 0x64CC, 0x93F0, -/* 00A8 */ 0x64E7, 0x64FF, 0x9448, -/* 00A9 */ 0x6501, 0x6508, 0x9461, -/* 00AA */ 0x650A, 0x6511, 0x9469, -/* 00AB */ 0x6519, 0x6521, 0x9476, -/* 00AC */ 0x6578, 0x6586, 0x94B5, -/* 00AD */ 0x65B1, 0x65B8, 0x94DA, -/* 00AE */ 0x65D8, 0x65DF, 0x94F2, -/* 00AF */ 0x6644, 0x664A, 0x9573, -/* 00B0 */ 0x669E, 0x66A6, 0x95AF, -/* 00B1 */ 0x66BF, 0x66D8, 0x95CA, -/* 00B2 */ 0x66DE, 0x66E5, 0x95E5, -/* 00B3 */ 0x66EA, 0x66EF, 0x95EF, -/* 00B4 */ 0x6720, 0x6725, 0x9650, -/* 00B5 */ 0x67B9, 0x67C0, 0x96A2, -/* 00B6 */ 0x67C5, 0x67CE, 0x96AB, -/* 00B7 */ 0x67F5, 0x67FC, 0x96C5, -/* 00B8 */ 0x6822, 0x6828, 0x96E0, -/* 00B9 */ 0x682B, 0x6831, 0x96E7, -/* 00BA */ 0x6856, 0x685B, 0x96F9, -/* 00BB */ 0x686C, 0x6873, 0x9745, -/* 00BC */ 0x6878, 0x6880, 0x974E, -/* 00BD */ 0x6887, 0x688E, 0x9759, -/* 00BE */ 0x6898, 0x68A1, 0x9767, -/* 00BF */ 0x68B9, 0x68BF, 0x9780, -/* 00C0 */ 0x68C3, 0x68C8, 0x9788, -/* 00C1 */ 0x68E4, 0x68ED, 0x97A0, -/* 00C2 */ 0x6913, 0x691E, 0x97C1, -/* 00C3 */ 0x6925, 0x692C, 0x97D0, -/* 00C4 */ 0x6943, 0x6953, 0x97E7, -/* 00C5 */ 0x698E, 0x6993, 0x985C, -/* 00C6 */ 0x699D, 0x69A6, 0x9866, -/* 00C7 */ 0x69C2, 0x69C9, 0x9883, -/* 00C8 */ 0x69D5, 0x69DA, 0x9891, -/* 00C9 */ 0x69E1, 0x69EC, 0x989A, -/* 00CA */ 0x69F3, 0x69FC, 0x98AA, -/* 00CB */ 0x6A00, 0x6A09, 0x98B5, -/* 00CC */ 0x6A0B, 0x6A16, 0x98BF, -/* 00CD */ 0x6A19, 0x6A1E, 0x98CB, -/* 00CE */ 0x6A22, 0x6A27, 0x98D2, -/* 00CF */ 0x6A36, 0x6A3C, 0x98E1, -/* 00D0 */ 0x6A48, 0x6A4F, 0x98EF, -/* 00D1 */ 0x6A51, 0x6A57, 0x98F7, -/* 00D2 */ 0x6A66, 0x6A70, 0x9948, -/* 00D3 */ 0x6A72, 0x6A78, 0x9953, -/* 00D4 */ 0x6A85, 0x6A8D, 0x9962, -/* 00D5 */ 0x6A98, 0x6A9F, 0x9971, -/* 00D6 */ 0x6AA1, 0x6AA6, 0x9979, -/* 00D7 */ 0x6AAD, 0x6B1F, 0x9983, -/* 00D8 */ 0x6B28, 0x6B2E, 0x99F8, -/* 00D9 */ 0x6B4D, 0x6B58, 0x9A54, -/* 00DA */ 0x6B5A, 0x6B61, 0x9A60, -/* 00DB */ 0x6B6B, 0x6B78, 0x9A6A, -/* 00DC */ 0x6BA2, 0x6BA9, 0x9A8F, -/* 00DD */ 0x6BAB, 0x6BB2, 0x9A97, -/* 00DE */ 0x6BB8, 0x6BBE, 0x9AA0, -/* 00DF */ 0x6BE2, 0x6BE9, 0x9ABA, -/* 00E0 */ 0x6BFE, 0x6C04, 0x9ACF, -/* 00E1 */ 0x6D1F, 0x6D24, 0x9BA2, -/* 00E2 */ 0x6DB9, 0x6DBE, 0x9BF3, -/* 00E3 */ 0x6DFD, 0x6E04, 0x9C5D, -/* 00E4 */ 0x6E3B, 0x6E42, 0x9C83, -/* 00E5 */ 0x6E45, 0x6E4C, 0x9C8B, -/* 00E6 */ 0x6E60, 0x6E6A, 0x9C9E, -/* 00E7 */ 0x6E6F, 0x6E7D, 0x9CAB, -/* 00E8 */ 0x6E91, 0x6E97, 0x9CC5, -/* 00E9 */ 0x6EEA, 0x6EEF, 0x9CF9, -/* 00EA */ 0x6EFA, 0x6F01, 0x9D48, -/* 00EB */ 0x6F16, 0x6F1F, 0x9D5D, -/* 00EC */ 0x6F37, 0x6F3D, 0x9D74, -/* 00ED */ 0x6F4E, 0x6F57, 0x9D87, -/* 00EE */ 0x6F67, 0x6F6C, 0x9D9B, -/* 00EF */ 0x6F7D, 0x6F83, 0x9DAA, -/* 00F0 */ 0x6F8F, 0x6F9B, 0x9DB6, -/* 00F1 */ 0x6FA8, 0x6FB2, 0x9DCC, -/* 00F2 */ 0x6FBA, 0x6FBF, 0x9DDB, -/* 00F3 */ 0x6FC3, 0x6FC8, 0x9DE2, -/* 00F4 */ 0x6FCA, 0x6FD0, 0x9DE8, -/* 00F5 */ 0x6FD3, 0x6FDD, 0x9DEF, -/* 00F6 */ 0x6FE6, 0x6FED, 0x9E40, -/* 00F7 */ 0x6FF0, 0x7010, 0x9E48, -/* 00F8 */ 0x7012, 0x7019, 0x9E69, -/* 00F9 */ 0x701C, 0x7022, 0x9E71, -/* 00FA */ 0x7024, 0x702A, 0x9E78, -/* 00FB */ 0x702B, 0x7034, 0x9E80, -/* 00FC */ 0x703A, 0x704B, 0x9E8D, -/* 00FD */ 0x7050, 0x705D, 0x9EA1, -/* 00FE */ 0x705F, 0x706A, 0x9EAF, -/* 00FF */ 0x709E, 0x70AA, 0x9ED7, -/* 0100 */ 0x70CB, 0x70D7, 0x9EF1, -/* 0101 */ 0x70F0, 0x70F6, 0x9F4A, -/* 0102 */ 0x70FE, 0x7108, 0x9F55, -/* 0103 */ 0x711B, 0x7125, 0x9F69, -/* 0104 */ 0x7127, 0x712E, 0x9F74, -/* 0105 */ 0x7137, 0x7144, 0x9F81, -/* 0106 */ 0x714F, 0x715B, 0x9F95, -/* 0107 */ 0x717E, 0x7183, 0x9FB8, -/* 0108 */ 0x71A1, 0x71A7, 0x9FD3, -/* 0109 */ 0x71AD, 0x71B2, 0x9FDD, -/* 010A */ 0x71BA, 0x71C2, 0x9FE7, -/* 010B */ 0x71C4, 0x71CD, 0x9FF0, -/* 010C */ 0x71D6, 0x71DF, 0xA040, -/* 010D */ 0x71E8, 0x71ED, 0xA04F, -/* 010E */ 0x71EF, 0x71F8, 0xA055, -/* 010F */ 0x71FA, 0x7205, 0xA05F, -/* 0110 */ 0x7207, 0x721A, 0xA06B, -/* 0111 */ 0x721E, 0x7227, 0xA082, -/* 0112 */ 0x7240, 0x7246, 0xA097, -/* 0113 */ 0x7293, 0x729E, 0xA0CB, -/* 0114 */ 0x72A0, 0x72AB, 0xA0D7, -/* 0115 */ 0x72BA, 0x72C0, 0xA0E8, -/* 0116 */ 0x72E2, 0x72E7, 0xAA43, -/* 0117 */ 0x7304, 0x7309, 0xAA53, -/* 0118 */ 0x7340, 0x7348, 0xAA76, -/* 0119 */ 0x7358, 0x735F, 0xAA8B, -/* 011A */ 0x7361, 0x736B, 0xAA93, -/* 011B */ 0x7372, 0x737D, 0xAB40, -/* 011C */ 0x73A3, 0x73A8, 0xAB66, -/* 011D */ 0x73D2, 0x73D8, 0xAB83, -/* 011E */ 0x73F8, 0x7402, 0xAC40, -/* 011F */ 0x7411, 0x7419, 0xAC52, -/* 0120 */ 0x741C, 0x7421, 0xAC5B, -/* 0121 */ 0x7442, 0x744D, 0xAC73, -/* 0122 */ 0x744E, 0x7454, 0xAC80, -/* 0123 */ 0x7460, 0x746C, 0xAC8A, -/* 0124 */ 0x7491, 0x749B, 0xAD4E, -/* 0125 */ 0x749F, 0x74A6, 0xAD5A, -/* 0126 */ 0x74AA, 0x74B9, 0xAD62, -/* 0127 */ 0x74BB, 0x74C7, 0xAD72, -/* 0128 */ 0x74C8, 0x74D1, 0xAD80, -/* 0129 */ 0x74D3, 0x74DB, 0xAD8A, -/* 012A */ 0x74E7, 0x74ED, 0xAD97, -/* 012B */ 0x74F8, 0x74FE, 0xAE42, -/* 012C */ 0x7505, 0x750C, 0xAE4D, -/* 012D */ 0x755D, 0x7564, 0xAE80, -/* 012E */ 0x756B, 0x7571, 0xAE8B, -/* 012F */ 0x7645, 0x764B, 0xB040, -/* 0130 */ 0x764E, 0x7653, 0xB047, -/* 0131 */ 0x7664, 0x766A, 0xB058, -/* 0132 */ 0x7670, 0x7677, 0xB062, -/* 0133 */ 0x769C, 0x76A3, 0xB080, -/* 0134 */ 0x76A5, 0x76AD, 0xB088, -/* 0135 */ 0x76B5, 0x76BE, 0xB094, -/* 0136 */ 0x76E6, 0x76ED, 0xB151, -/* 0137 */ 0x770E, 0x7718, 0xB169, -/* 0138 */ 0x7748, 0x774F, 0xB190, -/* 0139 */ 0x7752, 0x7759, 0xB198, -/* 013A */ 0x776D, 0x7778, 0xB248, -/* 013B */ 0x7786, 0x778B, 0xB25A, -/* 013C */ 0x7793, 0x779E, 0xB262, -/* 013D */ 0x77C0, 0x77CC, 0xB282, -/* 013E */ 0x77CE, 0x77D6, 0xB28F, -/* 013F */ 0x7803, 0x7808, 0xB34E, -/* 0140 */ 0x785E, 0x7869, 0xB382, -/* 0141 */ 0x786F, 0x7876, 0xB38E, -/* 0142 */ 0x787D, 0x7883, 0xB39A, -/* 0143 */ 0x78A8, 0x78AF, 0xB453, -/* 0144 */ 0x78DA, 0x78E3, 0xB475, -/* 0145 */ 0x78FB, 0x7900, 0xB491, -/* 0146 */ 0x7906, 0x790C, 0xB49A, -/* 0147 */ 0x790D, 0x7912, 0xB540, -/* 0148 */ 0x7914, 0x791D, 0xB546, -/* 0149 */ 0x7925, 0x7933, 0xB555, -/* 014A */ 0x794A, 0x7952, 0xB570, -/* 014B */ 0x7970, 0x7976, 0xB587, -/* 014C */ 0x7993, 0x7999, 0xB640, -/* 014D */ 0x799B, 0x79A6, 0xB647, -/* 014E */ 0x79A8, 0x79B2, 0xB653, -/* 014F */ 0x79D9, 0x79DE, 0xB673, -/* 0150 */ 0x79F1, 0x79F7, 0xB682, -/* 0151 */ 0x7A24, 0x7A32, 0xB744, -/* 0152 */ 0x7A40, 0x7A45, 0xB759, -/* 0153 */ 0x7A47, 0x7A50, 0xB75F, -/* 0154 */ 0x7A58, 0x7A68, 0xB76E, -/* 0155 */ 0x7A69, 0x7A6F, 0xB780, -/* 0156 */ 0x7AB4, 0x7ABE, 0xB84B, -/* 0157 */ 0x7AC0, 0x7ACA, 0xB856, -/* 0158 */ 0x7ACC, 0x7AD5, 0xB861, -/* 0159 */ 0x7AE7, 0x7AEC, 0xB874, -/* 015A */ 0x7B3F, 0x7B44, 0xB94A, -/* 015B */ 0x7B63, 0x7B6D, 0xB95D, -/* 015C */ 0x7B86, 0x7B8C, 0xB976, -/* 015D */ 0x7BB9, 0x7BC0, 0xB996, -/* 015E */ 0x7BFF, 0x7C06, 0xBA69, -/* 015F */ 0x7C10, 0x7C15, 0xBA76, -/* 0160 */ 0x7C20, 0x7C25, 0xBA85, -/* 0161 */ 0x7C2B, 0x7C37, 0xBA8D, -/* 0162 */ 0x7C39, 0x7C3E, 0xBA9A, -/* 0163 */ 0x7C43, 0x7C4C, 0xBB40, -/* 0164 */ 0x7C4E, 0x7C72, 0xBB4A, -/* 0165 */ 0x7C75, 0x7C7A, 0xBB6F, -/* 0166 */ 0x7C7E, 0x7C87, 0xBB75, -/* 0167 */ 0x7C8A, 0x7C90, 0xBB81, -/* 0168 */ 0x7CCE, 0x7CD4, 0xBC48, -/* 0169 */ 0x7CE1, 0x7CE7, 0xBC54, -/* 016A */ 0x7CE9, 0x7CEE, 0xBC5B, -/* 016B */ 0x7CF0, 0x7CF7, 0xBC61, -/* 016C */ 0x7CFC, 0x7D09, 0xBC6B, -/* 016D */ 0x7D0B, 0x7D10, 0xBC79, -/* 016E */ 0x7D11, 0x7D1F, 0xBC80, -/* 016F */ 0x7D30, 0x7D36, 0xBC9A, -/* 0170 */ 0x7D37, 0x7D6D, 0xBD40, -/* 0171 */ 0x7D6F, 0x7D76, 0xBD77, -/* 0172 */ 0x7D78, 0x7D98, 0xBD80, -/* 0173 */ 0x7D99, 0x7DA5, 0xBE40, -/* 0174 */ 0x7DA7, 0x7DAD, 0xBE4D, -/* 0175 */ 0x7DAF, 0x7DD9, 0xBE54, -/* 0176 */ 0x7DDA, 0x7DFA, 0xBE80, -/* 0177 */ 0x7DFB, 0x7E39, 0xBF40, -/* 0178 */ 0x7E48, 0x7E5D, 0xBF8B, -/* 0179 */ 0x7E5E, 0x7E81, 0xC040, -/* 017A */ 0x7E83, 0x7E9A, 0xC064, -/* 017B */ 0x7F21, 0x7F27, 0xE7CA, -/* 017C */ 0x7F3B, 0x7F41, 0xC08D, -/* 017D */ 0x7F46, 0x7F4F, 0xC095, -/* 017E */ 0x7F82, 0x7F89, 0xC15C, -/* 017F */ 0x7FA8, 0x7FAE, 0xC177, -/* 0180 */ 0x7FD9, 0x7FDE, 0xC199, -/* 0181 */ 0x7FF4, 0x7FFA, 0xC249, -/* 0182 */ 0x802B, 0x8030, 0xC264, -/* 0183 */ 0x805B, 0x8068, 0xC281, -/* 0184 */ 0x806B, 0x8070, 0xC28F, -/* 0185 */ 0x8072, 0x807D, 0xC295, -/* 0186 */ 0x808D, 0x8092, 0xC346, -/* 0187 */ 0x80CF, 0x80D5, 0xC363, -/* 0188 */ 0x811F, 0x812B, 0xC387, -/* 0189 */ 0x8140, 0x8145, 0xC440, -/* 018A */ 0x8192, 0x8197, 0xC470, -/* 018B */ 0x81AB, 0x81B2, 0xC482, -/* 018C */ 0x81B4, 0x81B9, 0xC48A, -/* 018D */ 0x81CD, 0x81D3, 0xC49A, -/* 018E */ 0x81D4, 0x81E2, 0xC540, -/* 018F */ 0x81F5, 0x81FA, 0xC55A, -/* 0190 */ 0x8215, 0x821A, 0xC56C, -/* 0191 */ 0x8250, 0x8257, 0xC58B, -/* 0192 */ 0x8260, 0x8267, 0xC598, -/* 0193 */ 0x831D, 0x8326, 0xC68F, -/* 0194 */ 0x8370, 0x8376, 0xC754, -/* 0195 */ 0x837E, 0x8384, 0xC75D, -/* 0196 */ 0x83A1, 0x83A7, 0xC775, -/* 0197 */ 0x8412, 0x8417, 0xC854, -/* 0198 */ 0x841E, 0x8423, 0xC85D, -/* 0199 */ 0x8429, 0x8430, 0xC863, -/* 019A */ 0x8432, 0x8437, 0xC86B, -/* 019B */ 0x843E, 0x8445, 0xC874, -/* 019C */ 0x844A, 0x8450, 0xC880, -/* 019D */ 0x848F, 0x8496, 0xC94B, -/* 019E */ 0x84A2, 0x84AE, 0xC95A, -/* 019F */ 0x84F1, 0x84FB, 0xC991, -/* 01A0 */ 0x8503, 0x850B, 0xCA40, -/* 01A1 */ 0x8522, 0x852A, 0xCA58, -/* 01A2 */ 0x852D, 0x8536, 0xCA61, -/* 01A3 */ 0x854B, 0x8555, 0xCA74, -/* 01A4 */ 0x8569, 0x8571, 0xCA8E, -/* 01A5 */ 0x8588, 0x858E, 0xCB43, -/* 01A6 */ 0x8590, 0x859A, 0xCB4A, -/* 01A7 */ 0x859D, 0x85A3, 0xCB55, -/* 01A8 */ 0x85B1, 0x85B6, 0xCB63, -/* 01A9 */ 0x85BA, 0x85C0, 0xCB6A, -/* 01AA */ 0x85C2, 0x85C8, 0xCB71, -/* 01AB */ 0x85D6, 0x85DB, 0xCB81, -/* 01AC */ 0x85DD, 0x85E3, 0xCB87, -/* 01AD */ 0x85EA, 0x85F8, 0xCB92, -/* 01AE */ 0x8606, 0x8610, 0xCC4A, -/* 01AF */ 0x8617, 0x8626, 0xCC59, -/* 01B0 */ 0x862A, 0x8637, 0xCC6A, -/* 01B1 */ 0x8641, 0x864C, 0xCC80, -/* 01B2 */ 0x8663, 0x866A, 0xCC99, -/* 01B3 */ 0x8672, 0x8678, 0xCD43, -/* 01B4 */ 0x8683, 0x8689, 0xCD4A, -/* 01B5 */ 0x8696, 0x869B, 0xCD57, -/* 01B6 */ 0x8740, 0x8746, 0xCE58, -/* 01B7 */ 0x875A, 0x875F, 0xCE6A, -/* 01B8 */ 0x8766, 0x876D, 0xCE72, -/* 01B9 */ 0x8798, 0x879E, 0xCE95, -/* 01BA */ 0x87D4, 0x87DA, 0xCF5F, -/* 01BB */ 0x87EF, 0x87F8, 0xCF75, -/* 01BC */ 0x8804, 0x8809, 0xCF88, -/* 01BD */ 0x880B, 0x8812, 0xCF8E, -/* 01BE */ 0x8824, 0x8831, 0xD040, -/* 01BF */ 0x8833, 0x8838, 0xD04E, -/* 01C0 */ 0x8846, 0x884B, 0xD05C, -/* 01C1 */ 0x884E, 0x8853, 0xD062, -/* 01C2 */ 0x885A, 0x8860, 0xD06B, -/* 01C3 */ 0x88A5, 0x88AA, 0xD09B, -/* 01C4 */ 0x88E9, 0x88EF, 0xD168, -/* 01C5 */ 0x8903, 0x8908, 0xD179, -/* 01C6 */ 0x8938, 0x8940, 0xD240, -/* 01C7 */ 0x8945, 0x895D, 0xD24B, -/* 01C8 */ 0x8960, 0x8965, 0xD264, -/* 01C9 */ 0x8967, 0x897A, 0xD26A, -/* 01CA */ 0x8987, 0x89A1, 0xD286, -/* 01CB */ 0x89A2, 0x89C0, 0xD340, -/* 01CC */ 0x89F4, 0x89FA, 0xD378, -/* 01CD */ 0x8A01, 0x8A06, 0xD385, -/* 01CE */ 0x8A08, 0x8A1D, 0xD38B, -/* 01CF */ 0x8A1E, 0x8A3D, 0xD440, -/* 01D0 */ 0x8A3F, 0x8A47, 0xD460, -/* 01D1 */ 0x8A49, 0x8A5E, 0xD469, -/* 01D2 */ 0x8A5F, 0x8A78, 0xD480, -/* 01D3 */ 0x8A7A, 0x8A80, 0xD49A, -/* 01D4 */ 0x8A81, 0x8A88, 0xD540, -/* 01D5 */ 0x8A8B, 0x8A92, 0xD548, -/* 01D6 */ 0x8A94, 0x8AC2, 0xD550, -/* 01D7 */ 0x8AC3, 0x8AE3, 0xD580, -/* 01D8 */ 0x8AE4, 0x8B06, 0xD640, -/* 01D9 */ 0x8B08, 0x8B23, 0xD663, -/* 01DA */ 0x8B27, 0x8B45, 0xD682, -/* 01DB */ 0x8B46, 0x8B65, 0xD740, -/* 01DC */ 0x8B6D, 0x8B86, 0xD765, -/* 01DD */ 0x8B87, 0x8B9F, 0xD780, -/* 01DE */ 0x8C38, 0x8C40, 0xD840, -/* 01DF */ 0x8C4D, 0x8C54, 0xD850, -/* 01E0 */ 0x8C5B, 0x8C60, 0xD85C, -/* 01E1 */ 0x8C63, 0x8C69, 0xD862, -/* 01E2 */ 0x8C6C, 0x8C72, 0xD869, -/* 01E3 */ 0x8C7B, 0x8C81, 0xD874, -/* 01E4 */ 0x8C8D, 0x8C93, 0xD882, -/* 01E5 */ 0x8C99, 0x8CAD, 0xD88C, -/* 01E6 */ 0x8CAE, 0x8CEC, 0xD940, -/* 01E7 */ 0x8CED, 0x8D0D, 0xD980, -/* 01E8 */ 0x8D0E, 0x8D1C, 0xDA40, -/* 01E9 */ 0x8D78, 0x8D80, 0xDA5D, -/* 01EA */ 0x8D95, 0x8D9E, 0xDA73, -/* 01EB */ 0x8DA4, 0x8DB0, 0xDA81, -/* 01EC */ 0x8DFE, 0x8E04, 0xDB53, -/* 01ED */ 0x8E15, 0x8E1C, 0xDB64, -/* 01EE */ 0x8E53, 0x8E58, 0xDB89, -/* 01EF */ 0x8E5A, 0x8E65, 0xDB8F, -/* 01F0 */ 0x8E88, 0x8E8E, 0xDC4E, -/* 01F1 */ 0x8E95, 0x8E9B, 0xDC58, -/* 01F2 */ 0x8E9F, 0x8EAA, 0xDC60, -/* 01F3 */ 0x8EB3, 0x8EB9, 0xDC70, -/* 01F4 */ 0x8EBB, 0x8EC2, 0xDC77, -/* 01F5 */ 0x8EC3, 0x8ECD, 0xDC80, -/* 01F6 */ 0x8ECF, 0x8EE4, 0xDC8B, -/* 01F7 */ 0x8EE5, 0x8F23, 0xDD40, -/* 01F8 */ 0x8F24, 0x8F44, 0xDD80, -/* 01F9 */ 0x8F45, 0x8F65, 0xDE40, -/* 01FA */ 0x9027, 0x902C, 0xDF45, -/* 01FB */ 0x905C, 0x9061, 0xDF64, -/* 01FC */ 0x9076, 0x907C, 0xDF76, -/* 01FD */ 0x9105, 0x9118, 0xE068, -/* 01FE */ 0x9124, 0x912E, 0xE084, -/* 01FF */ 0x9132, 0x9138, 0xE090, -/* 0200 */ 0x913A, 0x9142, 0xE097, -/* 0201 */ 0x9193, 0x9199, 0xE161, -/* 0202 */ 0x919C, 0x91A1, 0xE168, -/* 0203 */ 0x91A4, 0x91A9, 0xE16E, -/* 0204 */ 0x91BC, 0x91C6, 0xE180, -/* 0205 */ 0x91D2, 0x91DB, 0xE18E, -/* 0206 */ 0x91DD, 0x91E5, 0xE198, -/* 0207 */ 0x91E6, 0x9224, 0xE240, -/* 0208 */ 0x9225, 0x9245, 0xE280, -/* 0209 */ 0x9246, 0x9273, 0xE340, -/* 020A */ 0x9275, 0x9285, 0xE36E, -/* 020B */ 0x9286, 0x928D, 0xE380, -/* 020C */ 0x928F, 0x92A7, 0xE388, -/* 020D */ 0x92A8, 0x92AD, 0xE440, -/* 020E */ 0x92AF, 0x92C7, 0xE446, -/* 020F */ 0x92C9, 0x92E8, 0xE45F, -/* 0210 */ 0x92E9, 0x9309, 0xE480, -/* 0211 */ 0x930A, 0x933D, 0xE540, -/* 0212 */ 0x933F, 0x9349, 0xE574, -/* 0213 */ 0x934A, 0x9369, 0xE580, -/* 0214 */ 0x936C, 0x938E, 0xE640, -/* 0215 */ 0x9390, 0x93AB, 0xE663, -/* 0216 */ 0x93AC, 0x93C9, 0xE680, -/* 0217 */ 0x93CE, 0x93D5, 0xE740, -/* 0218 */ 0x93D7, 0x940D, 0xE748, -/* 0219 */ 0x940E, 0x942E, 0xE780, -/* 021A */ 0x942F, 0x943D, 0xE840, -/* 021B */ 0x943F, 0x946A, 0xE84F, -/* 021C */ 0x9470, 0x9484, 0xE880, -/* 021D */ 0x94C8, 0x94CE, 0xEEE6, -/* 021E */ 0x9564, 0x956C, 0xEFE4, -/* 021F */ 0x9577, 0x957E, 0xE94C, -/* 0220 */ 0x9580, 0x95AA, 0xE954, -/* 0221 */ 0x95AB, 0x95CB, 0xE980, -/* 0222 */ 0x95CC, 0x95E7, 0xEA40, -/* 0223 */ 0x9623, 0x9629, 0xEA64, -/* 0224 */ 0x9678, 0x9684, 0xEA91, -/* 0225 */ 0x969D, 0x96A6, 0xEB49, -/* 0226 */ 0x96A8, 0x96AF, 0xEB53, -/* 0227 */ 0x96D6, 0x96DF, 0xEB6D, -/* 0228 */ 0x96E1, 0x96E7, 0xEB77, -/* 0229 */ 0x9721, 0x9729, 0xEC40, -/* 022A */ 0x973F, 0x9751, 0xEC57, -/* 022B */ 0x976A, 0x9771, 0xEC77, -/* 022C */ 0x977D, 0x9784, 0xEC87, -/* 022D */ 0x97A4, 0x97AA, 0xED44, -/* 022E */ 0x97B5, 0x97E3, 0xED50, -/* 022F */ 0x97F7, 0x980E, 0xED89, -/* 0230 */ 0x980F, 0x984D, 0xEE40, -/* 0231 */ 0x984E, 0x986E, 0xEE80, -/* 0232 */ 0x986F, 0x9874, 0xEF40, -/* 0233 */ 0x98A8, 0x98CD, 0xEF4C, -/* 0234 */ 0x98E9, 0x9907, 0xEF82, -/* 0235 */ 0x9911, 0x992D, 0xF047, -/* 0236 */ 0x992F, 0x9949, 0xF064, -/* 0237 */ 0x994A, 0x9953, 0xF080, -/* 0238 */ 0x9956, 0x9962, 0xF08A, -/* 0239 */ 0x9967, 0x996C, 0xE2BC, -/* 023A */ 0x999A, 0x99A4, 0xF142, -/* 023B */ 0x99A9, 0x99D8, 0xF14F, -/* 023C */ 0x99D9, 0x99F9, 0xF180, -/* 023D */ 0x99FA, 0x9A38, 0xF240, -/* 023E */ 0x9A39, 0x9A59, 0xF280, -/* 023F */ 0x9A5A, 0x9A6B, 0xF340, -/* 0240 */ 0x9AA9, 0x9AAF, 0xF35B, -/* 0241 */ 0x9AF0, 0x9AF8, 0xF38D, -/* 0242 */ 0x9AFC, 0x9B02, 0xF397, -/* 0243 */ 0x9B09, 0x9B0E, 0xF441, -/* 0244 */ 0x9B14, 0x9B1E, 0xF44A, -/* 0245 */ 0x9B24, 0x9B2E, 0xF458, -/* 0246 */ 0x9B33, 0x9B3A, 0xF465, -/* 0247 */ 0x9B55, 0x9B5A, 0xF479, -/* 0248 */ 0x9B5B, 0x9B7B, 0xF480, -/* 0249 */ 0x9B7C, 0x9BBA, 0xF540, -/* 024A */ 0x9BBB, 0x9BDB, 0xF580, -/* 024B */ 0x9BDC, 0x9C1A, 0xF640, -/* 024C */ 0x9C1B, 0x9C3B, 0xF680, -/* 024D */ 0x9C3C, 0x9C7A, 0xF740, -/* 024E */ 0x9C9E, 0x9CA3, 0xF6DF, -/* 024F */ 0x9CB0, 0x9CB7, 0xF6ED, -/* 0250 */ 0x9CE3, 0x9D21, 0xF840, -/* 0251 */ 0x9D22, 0x9D42, 0xF880, -/* 0252 */ 0x9D43, 0x9D81, 0xF940, -/* 0253 */ 0x9D82, 0x9DA2, 0xF980, -/* 0254 */ 0x9DA3, 0x9DE1, 0xFA40, -/* 0255 */ 0x9DE2, 0x9E02, 0xFA80, -/* 0256 */ 0x9E03, 0x9E1E, 0xFB40, -/* 0257 */ 0x9E66, 0x9E6C, 0xF0D0, -/* 0258 */ 0x9E74, 0x9E7D, 0xFB74, -/* 0259 */ 0x9E8C, 0x9E91, 0xFB87, -/* 025A */ 0x9E94, 0x9E9C, 0xFB8D, -/* 025B */ 0x9EA0, 0x9EA5, 0xFB97, -/* 025C */ 0x9EAB, 0x9EB3, 0xFC40, -/* 025D */ 0x9EF0, 0x9EF8, 0xFC6D, -/* 025E */ 0x9EFF, 0x9F05, 0xFC78, -/* 025F */ 0x9F1A, 0x9F1F, 0xFC8D, -/* 0260 */ 0x9F23, 0x9F2B, 0xFC94, -/* 0261 */ 0x9F45, 0x9F4F, 0xFD4D, -/* 0262 */ 0x9F52, 0x9F78, 0xFD58, -/* 0263 */ 0x9F79, 0x9F7E, 0xFD80, -/* 0264 */ 0x9F85, 0x9F8A, 0xF6B5, -/* 0265 */ 0x9F8D, 0x9F98, 0xFD88, -/* 0266 */ 0xFE49, 0xFE52, 0xA968, -/* 0267 */ 0xFE59, 0xFE61, 0xA976, -/* 0268 */ 0xFF05, 0xFF5D, 0xA3A5, -/* 0269 */ 0x00A4, 0x00B7, 0x0000, -/* 026A */ 0x00D7, 0x0101, 0x0014, -/* 026B */ 0x0113, 0x011B, 0x003F, -/* 026C */ 0x012B, 0x0000, 0xA8A9, -/* 026D */ 0x0144, 0x014D, 0x0048, -/* 026E */ 0x016B, 0x0000, 0xA8B1, -/* 026F */ 0x01CE, 0x01DC, 0x0052, -/* 0270 */ 0x0251, 0x0000, 0xA8BB, -/* 0271 */ 0x0261, 0x0000, 0xA8C0, -/* 0272 */ 0x02C7, 0x02CB, 0x0061, -/* 0273 */ 0x02D9, 0x0000, 0xA842, -/* 0274 */ 0x0401, 0x0000, 0xA7A7, -/* 0275 */ 0x0451, 0x0000, 0xA7D7, -/* 0276 */ 0x2010, 0x203B, 0x0066, -/* 0277 */ 0x2103, 0x2109, 0x0092, -/* 0278 */ 0x2116, 0x2121, 0x0099, -/* 0279 */ 0x2190, 0x2199, 0x00A5, -/* 027A */ 0x2208, 0x2252, 0x00AF, -/* 027B */ 0x2260, 0x226F, 0x00FA, -/* 027C */ 0x2295, 0x2299, 0x010A, -/* 027D */ 0x22A5, 0x0000, 0xA1CD, -/* 027E */ 0x22BF, 0x0000, 0xA853, -/* 027F */ 0x2312, 0x0000, 0xA1D0, -/* 0280 */ 0x2593, 0x25A1, 0x010F, -/* 0281 */ 0x25B2, 0x25CF, 0x011E, -/* 0282 */ 0x25E2, 0x25E5, 0x013C, -/* 0283 */ 0x2605, 0x2609, 0x0140, -/* 0284 */ 0x2640, 0x2642, 0x0145, -/* 0285 */ 0x3000, 0x301E, 0x0148, -/* 0286 */ 0x309B, 0x309E, 0x0167, -/* 0287 */ 0x30FC, 0x30FE, 0x016B, -/* 0288 */ 0x3231, 0x0000, 0xA95A, -/* 0289 */ 0x32A3, 0x0000, 0xA949, -/* 028A */ 0x338E, 0x338F, 0x016E, -/* 028B */ 0x339C, 0x33A1, 0x0170, -/* 028C */ 0x33C4, 0x33D5, 0x0176, -/* 028D */ 0x4E00, 0x4FFE, 0x0188, -/* 028E */ 0x500B, 0x502E, 0x0387, -/* 028F */ 0x503A, 0x508D, 0x03AB, -/* 0290 */ 0x50A3, 0x50BC, 0x03FF, -/* 0291 */ 0x50CF, 0x50DA, 0x0419, -/* 0292 */ 0x50E6, 0x5112, 0x0425, -/* 0293 */ 0x5121, 0x0000, 0xC0DC, -/* 0294 */ 0x513F, 0x52E4, 0x0452, -/* 0295 */ 0x52F0, 0x563F, 0x05F8, -/* 0296 */ 0x564C, 0x5693, 0x0948, -/* 0297 */ 0x56A3, 0x0000, 0xCFF9, -/* 0298 */ 0x56AF, 0x56BC, 0x0990, -/* 0299 */ 0x56CA, 0x570A, 0x099E, -/* 029A */ 0x571C, 0x5835, 0x09DF, -/* 029B */ 0x5844, 0x586C, 0x0AF9, -/* 029C */ 0x587E, 0x58A9, 0x0B22, -/* 029D */ 0x58BC, 0x58C5, 0x0B4E, -/* 029E */ 0x58D1, 0x58D5, 0x0B58, -/* 029F */ 0x58E4, 0x5965, 0x0B5D, -/* 02A0 */ 0x5973, 0x59EC, 0x0BDF, -/* 02A1 */ 0x59F9, 0x5A7F, 0x0C59, -/* 02A2 */ 0x5A92, 0x5A9B, 0x0CE0, -/* 02A3 */ 0x5AAA, 0x5AF1, 0x0CEA, -/* 02A4 */ 0x5B09, 0x0000, 0xE6D2, -/* 02A5 */ 0x5B16, 0x5B17, 0x0D32, -/* 02A6 */ 0x5B32, 0x5B40, 0x0D34, -/* 02A7 */ 0x5B50, 0x5D4C, 0x0D43, -/* 02A8 */ 0x5D58, 0x5D5D, 0x0F40, -/* 02A9 */ 0x5D69, 0x5D74, 0x0F46, -/* 02AA */ 0x5D82, 0x0000, 0xE1D6, -/* 02AB */ 0x5D99, 0x5DA0, 0x0F52, -/* 02AC */ 0x5DB7, 0x0000, 0xE1DA, -/* 02AD */ 0x5DC5, 0x5DCD, 0x0F5A, -/* 02AE */ 0x5DDB, 0x5E62, 0x0F63, -/* 02AF */ 0x5E72, 0x5EDB, 0x0FEB, -/* 02B0 */ 0x5EE8, 0x5F40, 0x1055, -/* 02B1 */ 0x5F50, 0x612B, 0x10AE, -/* 02B2 */ 0x613F, 0x6177, 0x128A, -/* 02B3 */ 0x618B, 0x61D4, 0x12C3, -/* 02B4 */ 0x61E6, 0x0000, 0xC5B3, -/* 02B5 */ 0x61F5, 0x64E6, 0x130D, -/* 02B6 */ 0x6500, 0x6577, 0x15FF, -/* 02B7 */ 0x6587, 0x66BE, 0x1677, -/* 02B8 */ 0x66D9, 0x6912, 0x17AF, -/* 02B9 */ 0x691F, 0x6942, 0x19E9, -/* 02BA */ 0x6954, 0x69E0, 0x1A0D, -/* 02BB */ 0x69ED, 0x6A0A, 0x1A9A, -/* 02BC */ 0x6A17, 0x6A65, 0x1AB8, -/* 02BD */ 0x6A71, 0x6AAC, 0x1B07, -/* 02BE */ 0x6B20, 0x6B4C, 0x1B43, -/* 02BF */ 0x6B59, 0x6B6A, 0x1B70, -/* 02C0 */ 0x6B79, 0x6E5F, 0x1B82, -/* 02C1 */ 0x6E6B, 0x6E6E, 0x1E69, -/* 02C2 */ 0x6E7E, 0x6F8E, 0x1E6D, -/* 02C3 */ 0x6F9C, 0x6FA7, 0x1F7E, -/* 02C4 */ 0x6FB3, 0x6FD2, 0x1F8A, -/* 02C5 */ 0x6FDE, 0x6FEF, 0x1FAA, -/* 02C6 */ 0x7011, 0x7023, 0x1FBC, -/* 02C7 */ 0x7035, 0x7039, 0x1FCF, -/* 02C8 */ 0x704C, 0x704F, 0x1FD4, -/* 02C9 */ 0x705E, 0x0000, 0xE5B1, -/* 02CA */ 0x706B, 0x709D, 0x1FD8, -/* 02CB */ 0x70AB, 0x70CA, 0x200B, -/* 02CC */ 0x70D8, 0x70FD, 0x202B, -/* 02CD */ 0x7109, 0x711A, 0x2051, -/* 02CE */ 0x7126, 0x7136, 0x2063, -/* 02CF */ 0x7145, 0x714E, 0x2074, -/* 02D0 */ 0x715C, 0x71F9, 0x207E, -/* 02D1 */ 0x7206, 0x0000, 0xB1AC, -/* 02D2 */ 0x721B, 0x7292, 0x211C, -/* 02D3 */ 0x729F, 0x0000, 0xEAF1, -/* 02D4 */ 0x72AC, 0x7360, 0x2194, -/* 02D5 */ 0x736C, 0x7371, 0x2249, -/* 02D6 */ 0x737E, 0x73F7, 0x224F, -/* 02D7 */ 0x7403, 0x7441, 0x22C9, -/* 02D8 */ 0x7455, 0x745F, 0x2308, -/* 02D9 */ 0x746D, 0x7490, 0x2313, -/* 02DA */ 0x749C, 0x74A9, 0x2337, -/* 02DB */ 0x74BA, 0x0000, 0xE8B7, -/* 02DC */ 0x74D2, 0x770D, 0x2345, -/* 02DD */ 0x7719, 0x776C, 0x2581, -/* 02DE */ 0x7779, 0x7792, 0x25D5, -/* 02DF */ 0x779F, 0x77BF, 0x25EF, -/* 02E0 */ 0x77CD, 0x785D, 0x2610, -/* 02E1 */ 0x786A, 0x7905, 0x26A1, -/* 02E2 */ 0x7913, 0x7924, 0x273D, -/* 02E3 */ 0x7934, 0x799A, 0x274F, -/* 02E4 */ 0x79A7, 0x0000, 0xECFB, -/* 02E5 */ 0x79B3, 0x7A23, 0x27B6, -/* 02E6 */ 0x7A33, 0x7A57, 0x2827, -/* 02E7 */ 0x7A70, 0x7AB3, 0x284C, -/* 02E8 */ 0x7ABF, 0x0000, 0xC1FE, -/* 02E9 */ 0x7ACB, 0x7B62, 0x2890, -/* 02EA */ 0x7B6E, 0x7C2A, 0x2928, -/* 02EB */ 0x7C38, 0x7C4D, 0x29E5, -/* 02EC */ 0x7C73, 0x7CFB, 0x29FB, -/* 02ED */ 0x7D0A, 0x0000, 0xCEC9, -/* 02EE */ 0x7D20, 0x7D2F, 0x2A84, -/* 02EF */ 0x7D6E, 0x7D77, 0x2A94, -/* 02F0 */ 0x7DA6, 0x7DAE, 0x2A9E, -/* 02F1 */ 0x7E3A, 0x7E47, 0x2AA7, -/* 02F2 */ 0x7E82, 0x0000, 0xD7EB, -/* 02F3 */ 0x7E9B, 0x805A, 0x2AB5, -/* 02F4 */ 0x8069, 0x8071, 0x2C75, -/* 02F5 */ 0x807E, 0x811E, 0x2C7E, -/* 02F6 */ 0x812C, 0x81CC, 0x2D1F, -/* 02F7 */ 0x81E3, 0x84A1, 0x2DC0, -/* 02F8 */ 0x84AF, 0x84F0, 0x307F, -/* 02F9 */ 0x84FC, 0x854A, 0x30C1, -/* 02FA */ 0x8556, 0x858F, 0x3110, -/* 02FB */ 0x859B, 0x85E9, 0x314A, -/* 02FC */ 0x85F9, 0x8605, 0x3199, -/* 02FD */ 0x8611, 0x8616, 0x31A6, -/* 02FE */ 0x8627, 0x8629, 0x31AC, -/* 02FF */ 0x8638, 0x8640, 0x31AF, -/* 0300 */ 0x864D, 0x8823, 0x31B8, -/* 0301 */ 0x8832, 0x8944, 0x338F, -/* 0302 */ 0x895E, 0x8966, 0x34A2, -/* 0303 */ 0x897B, 0x8986, 0x34AB, -/* 0304 */ 0x89C1, 0x8A07, 0x34B7, -/* 0305 */ 0x8A3E, 0x8A48, 0x34FE, -/* 0306 */ 0x8A79, 0x0000, 0xD5B2, -/* 0307 */ 0x8A89, 0x8A93, 0x3509, -/* 0308 */ 0x8B07, 0x0000, 0xE5C0, -/* 0309 */ 0x8B24, 0x8B26, 0x3514, -/* 030A */ 0x8B66, 0x8B6C, 0x3517, -/* 030B */ 0x8BA0, 0x8C98, 0x351E, -/* 030C */ 0x8D1D, 0x8DA3, 0x3617, -/* 030D */ 0x8DB1, 0x8E59, 0x369E, -/* 030E */ 0x8E66, 0x8E9E, 0x3747, -/* 030F */ 0x8EAB, 0x8EBA, 0x3780, -/* 0310 */ 0x8ECE, 0x0000, 0xEAA6, -/* 0311 */ 0x8F66, 0x9104, 0x3790, -/* 0312 */ 0x9119, 0x9123, 0x392F, -/* 0313 */ 0x912F, 0x91BB, 0x393A, -/* 0314 */ 0x91C7, 0x91DC, 0x39C7, -/* 0315 */ 0x9274, 0x0000, 0xBCF8, -/* 0316 */ 0x928E, 0x0000, 0xF6C6, -/* 0317 */ 0x92AE, 0x0000, 0xF6C7, -/* 0318 */ 0x92C8, 0x0000, 0xF6C8, -/* 0319 */ 0x933E, 0x0000, 0xF6C9, -/* 031A */ 0x936A, 0x936B, 0x39DD, -/* 031B */ 0x938F, 0x0000, 0xF6CC, -/* 031C */ 0x93CA, 0x93D6, 0x39DF, -/* 031D */ 0x943E, 0x0000, 0xF6CD, -/* 031E */ 0x946B, 0x946F, 0x39EC, -/* 031F */ 0x9485, 0x957F, 0x39F1, -/* 0320 */ 0x95E8, 0x9677, 0x3AEC, -/* 0321 */ 0x9685, 0x973E, 0x3B7C, -/* 0322 */ 0x9752, 0x97B4, 0x3C36, -/* 0323 */ 0x97E4, 0x97F6, 0x3C99, -/* 0324 */ 0x9875, 0x98A7, 0x3CAC, -/* 0325 */ 0x98CE, 0x98E8, 0x3CDF, -/* 0326 */ 0x9908, 0x9910, 0x3CFA, -/* 0327 */ 0x992E, 0x0000, 0xF7D1, -/* 0328 */ 0x9954, 0x9955, 0x3D03, -/* 0329 */ 0x9963, 0x9999, 0x3D05, -/* 032A */ 0x99A5, 0x99A8, 0x3D3C, -/* 032B */ 0x9A6C, 0x9B13, 0x3D40, -/* 032C */ 0x9B1F, 0x9B23, 0x3DE8, -/* 032D */ 0x9B2F, 0x9B54, 0x3DED, -/* 032E */ 0x9C7B, 0x9CE2, 0x3E13, -/* 032F */ 0x9E1F, 0x9F44, 0x3E7B, -/* 0330 */ 0x9F50, 0x9F51, 0x3FA1, -/* 0331 */ 0x9F7F, 0x9F8C, 0x3FA3, -/* 0332 */ 0x9F99, 0x9FA5, 0x3FB1, -/* 0333 */ 0xF92C, 0x0000, 0xFD9C, -/* 0334 */ 0xF979, 0x0000, 0xFD9D, -/* 0335 */ 0xF995, 0x0000, 0xFD9E, -/* 0336 */ 0xF9E7, 0xF9F1, 0x3FBE, -/* 0337 */ 0xFA0C, 0xFA29, 0x3FC9, -/* 0338 */ 0xFE30, 0xFE44, 0x3FE7, -/* 0339 */ 0xFE54, 0xFE6B, 0x3FFC, -/* 033A */ 0xFF01, 0xFF04, 0x4014, -/* 033B */ 0xFF5E, 0x0000, 0xA1AB, -/* 033C */ 0xFFE0, 0xFFE5, 0x4018, -/*-------------------------------------------------------*/ -/* Offset=0x0A8B Start of MappingTable */ - -/* 0000 */ 0xA1E8, 0xFFFD, 0xFFFD, 0xA1EC, 0xA1A7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1E3, 0xA1C0, 0xFFFD, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA1A4, 0xA1C1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8A4, 0xA8A2, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8A8, 0xA8A6, 0xA8BA, -/* 0028 */ 0xFFFD, 0xA8AC, 0xA8AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8B0, -/* 0030 */ 0xA8AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1C2, 0xFFFD, 0xA8B4, 0xA8B2, -/* 0038 */ 0xFFFD, 0xA8B9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8A1, 0xA8A5, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8A7, -/* 0048 */ 0xA8BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8BE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0xA8AD, 0xA8A3, 0xFFFD, 0xA8AB, 0xFFFD, 0xA8AF, 0xFFFD, -/* 0058 */ 0xA8B3, 0xFFFD, 0xA8B5, 0xFFFD, 0xA8B6, 0xFFFD, 0xA8B7, 0xFFFD, -/* 0060 */ 0xA8B8, 0xA1A6, 0xFFFD, 0xA1A5, 0xA840, 0xA841, 0xA95C, 0xFFFD, -/* 0068 */ 0xFFFD, 0xA843, 0xA1AA, 0xA844, 0xA1AC, 0xFFFD, 0xA1AE, 0xA1AF, -/* 0070 */ 0xFFFD, 0xFFFD, 0xA1B0, 0xA1B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA845, 0xA1AD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1EB, 0xFFFD, -/* 0088 */ 0xA1E4, 0xA1E5, 0xFFFD, 0xA846, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0xA1F9, 0xA1E6, 0xFFFD, 0xA847, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xA848, 0xA1ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA959, 0xA1FB, 0xA1FC, 0xA1FA, -/* 00A8 */ 0xA1FD, 0xFFFD, 0xFFFD, 0xA849, 0xA84A, 0xA84B, 0xA84C, 0xA1CA, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1C7, 0xFFFD, -/* 00B8 */ 0xA1C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xA84D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xA1CC, 0xFFFD, 0xFFFD, 0xA1D8, 0xA1DE, 0xA84E, 0xA1CF, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xA84F, 0xFFFD, 0xA1CE, 0xFFFD, 0xA1C4, 0xA1C5, -/* 00D0 */ 0xA1C9, 0xA1C8, 0xA1D2, 0xFFFD, 0xFFFD, 0xA1D3, 0xFFFD, 0xFFFD, -/* 00D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA1E0, 0xA1DF, 0xA1C3, 0xA1CB, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1D7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1D6, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA1D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0xA850, 0xA1D9, 0xA1D4, 0xFFFD, 0xFFFD, 0xA1DC, 0xA1DD, -/* 0100 */ 0xA851, 0xA852, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0108 */ 0xA1DA, 0xA1DB, 0xA892, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1D1, 0xA888, -/* 0110 */ 0xA889, 0xA88A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1F6, 0xA1F5, 0xA1F8, 0xA1F7, -/* 0120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0128 */ 0xA88B, 0xA88C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0130 */ 0xFFFD, 0xFFFD, 0xA1F4, 0xA1F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1F0, -/* 0138 */ 0xFFFD, 0xFFFD, 0xA1F2, 0xA1F1, 0xA88D, 0xA88E, 0xA88F, 0xA890, -/* 0140 */ 0xA1EF, 0xA1EE, 0xFFFD, 0xFFFD, 0xA891, 0xA1E2, 0xFFFD, 0xA1E1, -/* 0148 */ 0xA1A1, 0xA1A2, 0xA1A3, 0xA1A8, 0xFFFD, 0xA1A9, 0xA965, 0xA996, -/* 0150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0158 */ 0xA1BE, 0xA1BF, 0xA893, 0xA1FE, 0xA1B2, 0xA1B3, 0xA1BC, 0xA1BD, -/* 0160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA894, 0xA895, 0xA961, -/* 0168 */ 0xA962, 0xA966, 0xA967, 0xA960, 0xA963, 0xA964, 0xA94A, 0xA94B, -/* 0170 */ 0xA94C, 0xA94D, 0xA94E, 0xFFFD, 0xFFFD, 0xA94F, 0xA950, 0xFFFD, -/* 0178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0180 */ 0xA951, 0xFFFD, 0xFFFD, 0xA952, 0xA953, 0xFFFD, 0xFFFD, 0xA954, -/* 0188 */ 0xD2BB, 0xB6A1, 0x8140, 0xC6DF, 0x8141, 0x8142, 0x8143, 0xCDF2, -/* 0190 */ 0xD5C9, 0xC8FD, 0xC9CF, 0xCFC2, 0xD8A2, 0xB2BB, 0xD3EB, 0x8144, -/* 0198 */ 0xD8A4, 0xB3F3, 0x8145, 0xD7A8, 0xC7D2, 0xD8A7, 0xCAC0, 0x8146, -/* 01A0 */ 0xC7F0, 0xB1FB, 0xD2B5, 0xB4D4, 0xB6AB, 0xCBBF, 0xD8A9, 0x8147, -/* 01A8 */ 0x8148, 0x8149, 0xB6AA, 0x814A, 0xC1BD, 0xD1CF, 0x814B, 0xC9A5, -/* 01B0 */ 0xD8AD, 0x814C, 0xB8F6, 0xD1BE, 0xE3DC, 0xD6D0, 0x814D, 0x814E, -/* 01B8 */ 0xB7E1, 0x814F, 0xB4AE, 0x8150, 0xC1D9, 0x8151, 0xD8BC, 0x8152, -/* 01C0 */ 0xCDE8, 0xB5A4, 0xCEAA, 0xD6F7, 0x8153, 0xC0F6, 0xBED9, 0xD8AF, -/* 01C8 */ 0x8154, 0x8155, 0x8156, 0xC4CB, 0x8157, 0xBEC3, 0x8158, 0xD8B1, -/* 01D0 */ 0xC3B4, 0xD2E5, 0x8159, 0xD6AE, 0xCEDA, 0xD5A7, 0xBAF5, 0xB7A6, -/* 01D8 */ 0xC0D6, 0x815A, 0xC6B9, 0xC5D2, 0xC7C7, 0x815B, 0xB9D4, 0x815C, -/* 01E0 */ 0xB3CB, 0xD2D2, 0x815D, 0x815E, 0xD8BF, 0xBEC5, 0xC6F2, 0xD2B2, -/* 01E8 */ 0xCFB0, 0xCFE7, 0x815F, 0x8160, 0x8161, 0x8162, 0xCAE9, 0x8163, -/* 01F0 */ 0x8164, 0xD8C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01F8 */ 0xC2F2, 0xC2D2, 0x816B, 0xC8E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7AC, 0xFFFD, -/* 0208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1CB, 0x817D, -/* 0210 */ 0xD3E8, 0xD5F9, 0x817E, 0xCAC2, 0xB6FE, 0xD8A1, 0xD3DA, 0xBFF7, -/* 0218 */ 0x8180, 0xD4C6, 0xBBA5, 0xD8C1, 0xCEE5, 0xBEAE, 0x8181, 0x8182, -/* 0220 */ 0xD8A8, 0x8183, 0xD1C7, 0xD0A9, 0x8184, 0x8185, 0x8186, 0xD8BD, -/* 0228 */ 0xD9EF, 0xCDF6, 0xBFBA, 0x8187, 0xBDBB, 0xBAA5, 0xD2E0, 0xB2FA, -/* 0230 */ 0xBAE0, 0xC4B6, 0x8188, 0xCFED, 0xBEA9, 0xCDA4, 0xC1C1, 0x8189, -/* 0238 */ 0x818A, 0x818B, 0xC7D7, 0xD9F1, 0x818C, 0xD9F4, 0x818D, 0x818E, -/* 0240 */ 0x818F, 0x8190, 0xC8CB, 0xD8E9, 0x8191, 0x8192, 0x8193, 0xD2DA, -/* 0248 */ 0xCAB2, 0xC8CA, 0xD8EC, 0xD8EA, 0xD8C6, 0xBDF6, 0xC6CD, 0xB3F0, -/* 0250 */ 0x8194, 0xD8EB, 0xBDF1, 0xBDE9, 0x8195, 0xC8D4, 0xB4D3, 0x8196, -/* 0258 */ 0x8197, 0xC2D8, 0x8198, 0xB2D6, 0xD7D0, 0xCACB, 0xCBFB, 0xD5CC, -/* 0260 */ 0xB8B6, 0xCFC9, 0x8199, 0x819A, 0x819B, 0xD9DA, 0xD8F0, 0xC7AA, -/* 0268 */ 0x819C, 0xD8EE, 0x819D, 0xB4FA, 0xC1EE, 0xD2D4, 0x819E, 0x819F, -/* 0270 */ 0xD8ED, 0x81A0, 0xD2C7, 0xD8EF, 0xC3C7, 0x81A1, 0x81A2, 0x81A3, -/* 0278 */ 0xD1F6, 0x81A4, 0xD6D9, 0xD8F2, 0x81A5, 0xD8F5, 0xBCFE, 0xBCDB, -/* 0280 */ 0x81A6, 0x81A7, 0x81A8, 0xC8CE, 0x81A9, 0xB7DD, 0x81AA, 0xB7C2, -/* 0288 */ 0x81AB, 0xC6F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0290 */ 0xFFFD, 0xD8F8, 0xD2C1, 0x81B3, 0x81B4, 0xCEE9, 0xBCBF, 0xB7FC, -/* 0298 */ 0xB7A5, 0xD0DD, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9, 0xD6DA, -/* 02A0 */ 0xD3C5, 0xBBEF, 0xBBE1, 0xD8F1, 0x81BA, 0x81BB, 0xC9A1, 0xCEB0, -/* 02A8 */ 0xB4AB, 0x81BC, 0xD8F3, 0x81BD, 0xC9CB, 0xD8F6, 0xC2D7, 0xD8F7, -/* 02B0 */ 0x81BE, 0x81BF, 0xCEB1, 0xD8F9, 0x81C0, 0x81C1, 0x81C2, 0xB2AE, -/* 02B8 */ 0xB9C0, 0x81C3, 0xD9A3, 0x81C4, 0xB0E9, 0x81C5, 0xC1E6, 0x81C6, -/* 02C0 */ 0xC9EC, 0x81C7, 0xCBC5, 0x81C8, 0xCBC6, 0xD9A4, 0x81C9, 0x81CA, -/* 02C8 */ 0x81CB, 0x81CC, 0x81CD, 0xB5E8, 0x81CE, 0x81CF, 0xB5AB, 0xFFFD, -/* 02D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEBB, 0xB5CD, 0xD7A1, -/* 02D8 */ 0xD7F4, 0xD3D3, 0x81D6, 0xCCE5, 0x81D7, 0xBACE, 0x81D8, 0xD9A2, -/* 02E0 */ 0xD9DC, 0xD3E0, 0xD8FD, 0xB7F0, 0xD7F7, 0xD8FE, 0xD8FA, 0xD9A1, -/* 02E8 */ 0xC4E3, 0x81D9, 0x81DA, 0xD3B6, 0xD8F4, 0xD9DD, 0x81DB, 0xD8FB, -/* 02F0 */ 0x81DC, 0xC5E5, 0x81DD, 0x81DE, 0xC0D0, 0x81DF, 0x81E0, 0xD1F0, -/* 02F8 */ 0xB0DB, 0x81E1, 0x81E2, 0xBCD1, 0xD9A6, 0x81E3, 0xD9A5, 0x81E4, -/* 0300 */ 0x81E5, 0x81E6, 0x81E7, 0xD9AC, 0xD9AE, 0x81E8, 0xD9AB, 0xCAB9, -/* 0308 */ 0x81E9, 0x81EA, 0x81EB, 0xD9A9, 0xD6B6, 0x81EC, 0x81ED, 0x81EE, -/* 0310 */ 0xB3DE, 0xD9A8, 0x81EF, 0xC0FD, 0x81F0, 0xCACC, 0x81F1, 0xD9AA, -/* 0318 */ 0x81F2, 0xD9A7, 0x81F3, 0x81F4, 0xD9B0, 0x81F5, 0x81F6, 0xB6B1, -/* 0320 */ 0x81F7, 0x81F8, 0x81F9, 0xB9A9, 0x81FA, 0xD2C0, 0x81FB, 0x81FC, -/* 0328 */ 0xCFC0, 0x81FD, 0x81FE, 0xC2C2, 0x8240, 0xBDC4, 0xD5EC, 0xB2E0, -/* 0330 */ 0xC7C8, 0xBFEB, 0xD9AD, 0x8241, 0xD9AF, 0x8242, 0xCEEA, 0xBAEE, -/* 0338 */ 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, 0xC7D6, 0xFFFD, 0xFFFD, -/* 0340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB1E3, -/* 0348 */ 0x8251, 0x8252, 0x8253, 0xB4D9, 0xB6ED, 0xD9B4, 0x8254, 0x8255, -/* 0350 */ 0x8256, 0x8257, 0xBFA1, 0x8258, 0x8259, 0x825A, 0xD9DE, 0xC7CE, -/* 0358 */ 0xC0FE, 0xD9B8, 0x825B, 0x825C, 0x825D, 0x825E, 0x825F, 0xCBD7, -/* 0360 */ 0xB7FD, 0x8260, 0xD9B5, 0x8261, 0xD9B7, 0xB1A3, 0xD3E1, 0xD9B9, -/* 0368 */ 0x8262, 0xD0C5, 0x8263, 0xD9B6, 0x8264, 0x8265, 0xD9B1, 0x8266, -/* 0370 */ 0xD9B2, 0xC1A9, 0xD9B3, 0x8267, 0x8268, 0xBCF3, 0xD0DE, 0xB8A9, -/* 0378 */ 0x8269, 0xBEE3, 0x826A, 0xD9BD, 0x826B, 0x826C, 0x826D, 0x826E, -/* 0380 */ 0xD9BA, 0x826F, 0xB0B3, 0x8270, 0x8271, 0x8272, 0xD9C2, 0x8280, -/* 0388 */ 0xD9C4, 0xB1B6, 0x8281, 0xD9BF, 0x8282, 0x8283, 0xB5B9, 0x8284, -/* 0390 */ 0xBEF3, 0x8285, 0x8286, 0x8287, 0xCCC8, 0xBAF2, 0xD2D0, 0x8288, -/* 0398 */ 0xD9C3, 0x8289, 0x828A, 0xBDE8, 0x828B, 0xB3AB, 0x828C, 0x828D, -/* 03A0 */ 0x828E, 0xD9C5, 0xBEEB, 0x828F, 0xD9C6, 0xD9BB, 0xC4DF, 0x8290, -/* 03A8 */ 0xD9BE, 0xD9C1, 0xD9C0, 0xD5AE, 0x829C, 0xD6B5, 0x829D, 0xC7E3, -/* 03B0 */ 0x829E, 0x829F, 0x82A0, 0x82A1, 0xD9C8, 0x82A2, 0x82A3, 0x82A4, -/* 03B8 */ 0xBCD9, 0xD9CA, 0x82A5, 0x82A6, 0x82A7, 0xD9BC, 0x82A8, 0xD9CB, -/* 03C0 */ 0xC6AB, 0x82A9, 0x82AA, 0x82AB, 0x82AC, 0x82AD, 0xD9C9, 0x82AE, -/* 03C8 */ 0x82AF, 0x82B0, 0x82B1, 0xD7F6, 0x82B2, 0xCDA3, 0xFFFD, 0xFFFD, -/* 03D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDA1, 0xFFFD, -/* 03D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9CC, 0xFFFD, 0xFFFD, -/* 03E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5BC, -/* 03E8 */ 0xCDB5, 0x82CA, 0x82CB, 0x82CC, 0xD9CD, 0x82CD, 0x82CE, 0xD9C7, -/* 03F0 */ 0xB3A5, 0xBFFE, 0x82CF, 0x82D0, 0x82D1, 0x82D2, 0xB8B5, 0x82D3, -/* 03F8 */ 0x82D4, 0xC0FC, 0x82D5, 0x82D6, 0x82D7, 0x82D8, 0xB0F8, 0xB4F6, -/* 0400 */ 0x82EE, 0xD9CE, 0x82EF, 0xD9CF, 0xB4A2, 0xD9D0, 0x82F0, 0x82F1, -/* 0408 */ 0xB4DF, 0x82F2, 0x82F3, 0x82F4, 0x82F5, 0x82F6, 0xB0C1, 0xFFFD, -/* 0410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9D1, 0xC9B5, -/* 0418 */ 0x82FE, 0xCFF1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0420 */ 0xD9D2, 0x8358, 0x8359, 0x835A, 0xC1C5, 0xD9D6, 0xC9AE, 0x8366, -/* 0428 */ 0x8367, 0x8368, 0x8369, 0xD9D5, 0xD9D4, 0xD9D7, 0x836A, 0x836B, -/* 0430 */ 0x836C, 0x836D, 0xCBDB, 0x836E, 0xBDA9, 0x836F, 0x8370, 0x8371, -/* 0438 */ 0x8372, 0x8373, 0xC6A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9D3, 0xD9D8, 0x837E, -/* 0448 */ 0x8380, 0x8381, 0xD9D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0450 */ 0xFFFD, 0xC8E5, 0xB6F9, 0xD8A3, 0xD4CA, 0x83B3, 0xD4AA, 0xD0D6, -/* 0458 */ 0xB3E4, 0xD5D7, 0x83B4, 0xCFC8, 0xB9E2, 0x83B5, 0xBFCB, 0x83B6, -/* 0460 */ 0xC3E2, 0x83B7, 0x83B8, 0x83B9, 0xB6D2, 0x83BA, 0x83BB, 0xCDC3, -/* 0468 */ 0xD9EE, 0xD9F0, 0x83BC, 0x83BD, 0x83BE, 0xB5B3, 0x83BF, 0xB6B5, -/* 0470 */ 0x83C0, 0x83C1, 0x83C2, 0x83C3, 0x83C4, 0xBEA4, 0x83C5, 0x83C6, -/* 0478 */ 0xC8EB, 0x83C7, 0x83C8, 0xC8AB, 0x83C9, 0x83CA, 0xB0CB, 0xB9AB, -/* 0480 */ 0xC1F9, 0xD9E2, 0x83CB, 0xC0BC, 0xB9B2, 0x83CC, 0xB9D8, 0xD0CB, -/* 0488 */ 0xB1F8, 0xC6E4, 0xBEDF, 0xB5E4, 0xD7C8, 0x83CD, 0xD1F8, 0xBCE6, -/* 0490 */ 0xCADE, 0x83CE, 0x83CF, 0xBCBD, 0xD9E6, 0xD8E7, 0x83D0, 0x83D1, -/* 0498 */ 0xC4DA, 0x83D2, 0x83D3, 0xB8D4, 0xC8BD, 0x83D4, 0x83D5, 0xB2E1, -/* 04A0 */ 0xD4D9, 0x83D6, 0x83D7, 0x83D8, 0x83D9, 0xC3B0, 0x83DA, 0x83DB, -/* 04A8 */ 0xC3E1, 0xDAA2, 0xC8DF, 0x83DC, 0xD0B4, 0x83DD, 0xBEFC, 0xC5A9, -/* 04B0 */ 0x83DE, 0x83DF, 0x83E0, 0xB9DA, 0x83E1, 0xDAA3, 0x83E2, 0xD4A9, -/* 04B8 */ 0xDAA4, 0x83E3, 0x83E4, 0x83E5, 0x83E6, 0x83E7, 0xD9FB, 0xB6AC, -/* 04C0 */ 0x83E8, 0x83E9, 0xB7EB, 0xB1F9, 0xD9FC, 0xB3E5, 0xBEF6, 0x83EA, -/* 04C8 */ 0xBFF6, 0xD2B1, 0xC0E4, 0x83EB, 0x83EC, 0x83ED, 0xB6B3, 0xD9FE, -/* 04D0 */ 0xD9FD, 0x83EE, 0x83EF, 0xBEBB, 0x83F0, 0x83F1, 0x83F2, 0xC6E0, -/* 04D8 */ 0x83F3, 0xD7BC, 0xDAA1, 0x83F4, 0xC1B9, 0x83F5, 0xB5F2, 0xC1E8, -/* 04E0 */ 0x83F6, 0x83F7, 0xBCF5, 0x83F8, 0xB4D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8440, 0x8441, 0x8442, 0xC1DD, 0x8443, -/* 04F0 */ 0xC4FD, 0x8444, 0x8445, 0xBCB8, 0xB7B2, 0x8446, 0x8447, 0xB7EF, -/* 04F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9EC, 0x844E, -/* 0500 */ 0xC6BE, 0x844F, 0xBFAD, 0xBBCB, 0x8450, 0x8451, 0xB5CA, 0x8452, -/* 0508 */ 0xDBC9, 0xD0D7, 0x8453, 0xCDB9, 0xB0BC, 0xB3F6, 0xBBF7, 0xDBCA, -/* 0510 */ 0xBAAF, 0x8454, 0xD4E4, 0xB5B6, 0xB5F3, 0xD8D6, 0xC8D0, 0x8455, -/* 0518 */ 0x8456, 0xB7D6, 0xC7D0, 0xD8D7, 0x8457, 0xBFAF, 0x8458, 0x8459, -/* 0520 */ 0xDBBB, 0xD8D8, 0x845A, 0x845B, 0xD0CC, 0xBBAE, 0x845C, 0x845D, -/* 0528 */ 0x845E, 0xEBBE, 0xC1D0, 0xC1F5, 0xD4F2, 0xB8D5, 0xB4B4, 0x845F, -/* 0530 */ 0xB3F5, 0x8460, 0x8461, 0xC9BE, 0x8462, 0x8463, 0x8464, 0xC5D0, -/* 0538 */ 0x8465, 0x8466, 0x8467, 0xC5D9, 0xC0FB, 0x8468, 0xB1F0, 0x8469, -/* 0540 */ 0xD8D9, 0xB9CE, 0x846A, 0xB5BD, 0x846B, 0x846C, 0xD8DA, 0x846D, -/* 0548 */ 0x846E, 0xD6C6, 0xCBA2, 0xC8AF, 0xC9B2, 0xB4CC, 0xBFCC, 0x846F, -/* 0550 */ 0xB9F4, 0x8470, 0xD8DB, 0xD8DC, 0xB6E7, 0xBCC1, 0xCCEA, 0xFFFD, -/* 0558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFF7, 0x8477, 0xD8DD, -/* 0560 */ 0xC7B0, 0x8478, 0x8479, 0xB9D0, 0xBDA3, 0x847A, 0x847B, 0xCCDE, -/* 0568 */ 0x847C, 0xC6CA, 0x847D, 0x847E, 0x8480, 0x8481, 0x8482, 0xD8E0, -/* 0570 */ 0x8483, 0xD8DE, 0x8484, 0x8485, 0xD8DF, 0x8486, 0x8487, 0x8488, -/* 0578 */ 0xB0FE, 0x8489, 0xBEE7, 0x848A, 0xCAA3, 0xBCF4, 0x848B, 0x848C, -/* 0580 */ 0x848D, 0x848E, 0xB8B1, 0x848F, 0x8490, 0xB8EE, 0xFFFD, 0xFFFD, -/* 0588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0590 */ 0xD8E2, 0x849B, 0xBDCB, 0x849C, 0xD8E4, 0xD8E3, 0x849D, 0x849E, -/* 0598 */ 0x849F, 0x84A0, 0x84A1, 0xC5FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD8E5, 0x84A9, 0x84AA, 0xD8E6, 0xFFFD, -/* 05A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1A6, 0x84B2, -/* 05B0 */ 0xC8B0, 0xB0EC, 0xB9A6, 0xBCD3, 0xCEF1, 0xDBBD, 0xC1D3, 0x84B3, -/* 05B8 */ 0x84B4, 0x84B5, 0x84B6, 0xB6AF, 0xD6FA, 0xC5AC, 0xBDD9, 0xDBBE, -/* 05C0 */ 0xDBBF, 0x84B7, 0x84B8, 0x84B9, 0xC0F8, 0xBEA2, 0xC0CD, 0xFFFD, -/* 05C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05D0 */ 0xFFFD, 0xDBC0, 0xCAC6, 0x84C4, 0x84C5, 0x84C6, 0xB2AA, 0x84C7, -/* 05D8 */ 0x84C8, 0x84C9, 0xD3C2, 0x84CA, 0xC3E3, 0x84CB, 0xD1AB, 0x84CC, -/* 05E0 */ 0x84CD, 0x84CE, 0x84CF, 0xDBC2, 0x84D0, 0xC0D5, 0x84D1, 0x84D2, -/* 05E8 */ 0x84D3, 0xDBC3, 0x84D4, 0xBFB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05F0 */ 0xFFFD, 0xFFFD, 0xC4BC, 0x84DB, 0x84DC, 0x84DD, 0x84DE, 0xC7DA, -/* 05F8 */ 0xDBC4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0600 */ 0xFFFD, 0xD9E8, 0xC9D7, 0x84F2, 0x84F3, 0x84F4, 0xB9B4, 0xCEF0, -/* 0608 */ 0xD4C8, 0x84F5, 0x84F6, 0x84F7, 0x84F8, 0xB0FC, 0xB4D2, 0x84F9, -/* 0610 */ 0xD0D9, 0x84FA, 0x84FB, 0x84FC, 0x84FD, 0xD9E9, 0x84FE, 0xDECB, -/* 0618 */ 0xD9EB, 0x8540, 0x8541, 0x8542, 0x8543, 0xD8B0, 0xBBAF, 0xB1B1, -/* 0620 */ 0x8544, 0xB3D7, 0xD8CE, 0x8545, 0x8546, 0xD4D1, 0x8547, 0x8548, -/* 0628 */ 0xBDB3, 0xBFEF, 0x8549, 0xCFBB, 0x854A, 0x854B, 0xD8D0, 0x854C, -/* 0630 */ 0x854D, 0x854E, 0xB7CB, 0x854F, 0x8550, 0x8551, 0xD8D1, 0xFFFD, -/* 0638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0640 */ 0xFFFD, 0xC6A5, 0xC7F8, 0xD2BD, 0x855C, 0x855D, 0xD8D2, 0xC4E4, -/* 0648 */ 0x855E, 0xCAAE, 0x855F, 0xC7A7, 0x8560, 0xD8A6, 0x8561, 0xC9FD, -/* 0650 */ 0xCEE7, 0xBBDC, 0xB0EB, 0x8562, 0x8563, 0x8564, 0xBBAA, 0xD0AD, -/* 0658 */ 0x8565, 0xB1B0, 0xD7E4, 0xD7BF, 0x8566, 0xB5A5, 0xC2F4, 0xC4CF, -/* 0660 */ 0x8567, 0x8568, 0xB2A9, 0x8569, 0xB2B7, 0x856A, 0xB1E5, 0xDFB2, -/* 0668 */ 0xD5BC, 0xBFA8, 0xC2AC, 0xD8D5, 0xC2B1, 0x856B, 0xD8D4, 0xCED4, -/* 0670 */ 0x856C, 0xDAE0, 0x856D, 0xCEC0, 0x856E, 0x856F, 0xD8B4, 0xC3AE, -/* 0678 */ 0xD3A1, 0xCEA3, 0x8570, 0xBCB4, 0xC8B4, 0xC2D1, 0x8571, 0xBEED, -/* 0680 */ 0xD0B6, 0x8572, 0xDAE1, 0x8573, 0x8574, 0x8575, 0x8576, 0xC7E4, -/* 0688 */ 0x8577, 0x8578, 0xB3A7, 0x8579, 0xB6F2, 0xCCFC, 0xC0FA, 0x857A, -/* 0690 */ 0x857B, 0xC0F7, 0x857C, 0xD1B9, 0xD1E1, 0xD8C7, 0x857D, 0x857E, -/* 0698 */ 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0xB2DE, 0x8585, 0x8586, -/* 06A0 */ 0xC0E5, 0x8587, 0xBAF1, 0x8588, 0x8589, 0xD8C8, 0x858A, 0xD4AD, -/* 06A8 */ 0x858B, 0x858C, 0xCFE1, 0xD8C9, 0x858D, 0xD8CA, 0xCFC3, 0x858E, -/* 06B0 */ 0xB3F8, 0xBEC7, 0x858F, 0x8590, 0x8591, 0x8592, 0xD8CB, 0xFFFD, -/* 06B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBCC, 0x859A, -/* 06C0 */ 0x859B, 0x859C, 0x859D, 0xC8A5, 0x859E, 0x859F, 0x85A0, 0xCFD8, -/* 06C8 */ 0x85A1, 0xC8FE, 0xB2CE, 0x85A2, 0x85A3, 0x85A4, 0x85A5, 0x85A6, -/* 06D0 */ 0xD3D6, 0xB2E6, 0xBCB0, 0xD3D1, 0xCBAB, 0xB7B4, 0x85A7, 0x85A8, -/* 06D8 */ 0x85A9, 0xB7A2, 0x85AA, 0x85AB, 0xCAE5, 0x85AC, 0xC8A1, 0xCADC, -/* 06E0 */ 0xB1E4, 0xD0F0, 0x85AD, 0xC5D1, 0x85AE, 0x85AF, 0x85B0, 0xDBC5, -/* 06E8 */ 0xB5FE, 0x85B1, 0x85B2, 0xBFDA, 0xB9C5, 0xBEE4, 0xC1ED, 0x85B3, -/* 06F0 */ 0xDFB6, 0xDFB5, 0xD6BB, 0xBDD0, 0xD5D9, 0xB0C8, 0xB6A3, 0xBFC9, -/* 06F8 */ 0xCCA8, 0xDFB3, 0xCAB7, 0xD3D2, 0x85B4, 0xD8CF, 0xD2B6, 0xBAC5, -/* 0700 */ 0xCBBE, 0xCCBE, 0x85B5, 0xDFB7, 0xB5F0, 0xDFB4, 0x85B6, 0x85B7, -/* 0708 */ 0x85B8, 0xD3F5, 0x85B9, 0xB3D4, 0xB8F7, 0x85BA, 0xDFBA, 0x85BB, -/* 0710 */ 0xBACF, 0xBCAA, 0xB5F5, 0x85BC, 0xCDAC, 0xC3FB, 0xBAF3, 0xC0F4, -/* 0718 */ 0xCDC2, 0xCFF2, 0xDFB8, 0xCFC5, 0x85BD, 0xC2C0, 0xDFB9, 0xC2F0, -/* 0720 */ 0x85BE, 0x85BF, 0x85C0, 0xBEFD, 0x85C1, 0xC1DF, 0xCDCC, 0xD2F7, -/* 0728 */ 0xB7CD, 0xDFC1, 0x85C2, 0xDFC4, 0x85C3, 0x85C4, 0xB7F1, 0xB0C9, -/* 0730 */ 0xB6D6, 0xB7D4, 0x85C5, 0xBAAC, 0xCCFD, 0xBFD4, 0xCBB1, 0xC6F4, -/* 0738 */ 0x85C6, 0xD6A8, 0xDFC5, 0x85C7, 0xCEE2, 0xB3B3, 0x85C8, 0x85C9, -/* 0740 */ 0xCEFC, 0xB4B5, 0x85CA, 0xCEC7, 0xBAF0, 0x85CB, 0xCEE1, 0x85CC, -/* 0748 */ 0xD1BD, 0x85CD, 0x85CE, 0xDFC0, 0x85CF, 0x85D0, 0xB4F4, 0x85D1, -/* 0750 */ 0xB3CA, 0x85D2, 0xB8E6, 0xDFBB, 0x85D3, 0x85D4, 0x85D5, 0x85D6, -/* 0758 */ 0xC4C5, 0x85D7, 0xDFBC, 0xDFBD, 0xDFBE, 0xC5BB, 0xDFBF, 0xDFC2, -/* 0760 */ 0xD4B1, 0xDFC3, 0x85D8, 0xC7BA, 0xCED8, 0x85D9, 0x85DA, 0x85DB, -/* 0768 */ 0x85DC, 0x85DD, 0xC4D8, 0x85DE, 0xDFCA, 0x85DF, 0xDFCF, 0x85E0, -/* 0770 */ 0xD6DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0778 */ 0xFFFD, 0xDFC9, 0xDFDA, 0xCEB6, 0x85E9, 0xBAC7, 0xDFCE, 0xDFC8, -/* 0780 */ 0xC5DE, 0x85EA, 0x85EB, 0xC9EB, 0xBAF4, 0xC3FC, 0x85EC, 0x85ED, -/* 0788 */ 0xBED7, 0x85EE, 0xDFC6, 0x85EF, 0xDFCD, 0x85F0, 0xC5D8, 0x85F1, -/* 0790 */ 0x85F2, 0x85F3, 0x85F4, 0xD5A6, 0xBACD, 0x85F5, 0xBECC, 0xD3BD, -/* 0798 */ 0xB8C0, 0x85F6, 0xD6E4, 0x85F7, 0xDFC7, 0xB9BE, 0xBFA7, 0x85F8, -/* 07A0 */ 0x85F9, 0xC1FC, 0xDFCB, 0xDFCC, 0x85FA, 0xDFD0, 0x85FB, 0x85FC, -/* 07A8 */ 0x85FD, 0x85FE, 0x8640, 0xDFDB, 0xDFE5, 0x8641, 0xDFD7, 0xDFD6, -/* 07B0 */ 0xD7C9, 0xDFE3, 0xDFE4, 0xE5EB, 0xD2A7, 0xDFD2, 0x8642, 0xBFA9, -/* 07B8 */ 0x8643, 0xD4DB, 0x8644, 0xBFC8, 0xDFD4, 0x8645, 0x8646, 0x8647, -/* 07C0 */ 0xCFCC, 0x8648, 0x8649, 0xDFDD, 0x864A, 0xD1CA, 0x864B, 0xDFDE, -/* 07C8 */ 0xB0A7, 0xC6B7, 0xDFD3, 0x864C, 0xBAE5, 0x864D, 0xB6DF, 0xCDDB, -/* 07D0 */ 0xB9FE, 0xD4D5, 0x864E, 0x864F, 0xDFDF, 0xCFEC, 0xB0A5, 0xDFE7, -/* 07D8 */ 0xDFD1, 0xD1C6, 0xDFD5, 0xDFD8, 0xDFD9, 0xDFDC, 0x8650, 0xBBA9, -/* 07E0 */ 0x8651, 0xDFE0, 0xDFE1, 0x8652, 0xDFE2, 0xDFE6, 0xDFE8, 0xD3B4, -/* 07E8 */ 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0xB8E7, 0xC5B6, 0xDFEA, -/* 07F0 */ 0xC9DA, 0xC1A8, 0xC4C4, 0x8658, 0x8659, 0xBFDE, 0xCFF8, 0x865A, -/* 07F8 */ 0x865B, 0x865C, 0xD5DC, 0xDFEE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0800 */ 0xFFFD, 0xFFFD, 0xB2B8, 0x8663, 0xBADF, 0xDFEC, 0x8664, 0xDBC1, -/* 0808 */ 0x8665, 0xD1E4, 0x8666, 0x8667, 0x8668, 0x8669, 0xCBF4, 0xB4BD, -/* 0810 */ 0x866A, 0xB0A6, 0x866B, 0x866C, 0x866D, 0x866E, 0x866F, 0xDFF1, -/* 0818 */ 0xCCC6, 0xDFF2, 0x8670, 0x8671, 0xDFED, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDFE9, 0x8678, 0x8679, 0x867A, 0x867B, -/* 0828 */ 0xDFEB, 0x867C, 0xDFEF, 0xDFF0, 0xBBBD, 0x867D, 0x867E, 0xDFF3, -/* 0830 */ 0x8680, 0x8681, 0xDFF4, 0x8682, 0xBBA3, 0x8683, 0xCADB, 0xCEA8, -/* 0838 */ 0xE0A7, 0xB3AA, 0x8684, 0xE0A6, 0x8685, 0x8686, 0x8687, 0xE0A1, -/* 0840 */ 0x8688, 0x8689, 0x868A, 0x868B, 0xDFFE, 0x868C, 0xCDD9, 0xDFFC, -/* 0848 */ 0x868D, 0xDFFA, 0x868E, 0xBFD0, 0xD7C4, 0x868F, 0xC9CC, 0x8690, -/* 0850 */ 0x8691, 0xDFF8, 0xB0A1, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696, -/* 0858 */ 0xDFFD, 0x8697, 0x8698, 0x8699, 0x869A, 0xDFFB, 0xE0A2, 0x869B, -/* 0860 */ 0x869C, 0x869D, 0x869E, 0x869F, 0xE0A8, 0x86A0, 0x86A1, 0x86A2, -/* 0868 */ 0x86A3, 0xB7C8, 0x86A4, 0x86A5, 0xC6A1, 0xC9B6, 0xC0B2, 0xDFF5, -/* 0870 */ 0x86A6, 0x86A7, 0xC5BE, 0x86A8, 0xD8C4, 0xDFF9, 0xC4F6, 0xFFFD, -/* 0878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0A3, 0xE0A4, 0xE0A5, -/* 0880 */ 0xD0A5, 0x86AF, 0x86B0, 0xE0B4, 0xCCE4, 0x86B1, 0xE0B1, 0x86B2, -/* 0888 */ 0xBFA6, 0xE0AF, 0xCEB9, 0xE0AB, 0xC9C6, 0x86B3, 0x86B4, 0xC0AE, -/* 0890 */ 0xE0AE, 0xBAED, 0xBAB0, 0xE0A9, 0x86B5, 0x86B6, 0x86B7, 0xDFF6, -/* 0898 */ 0x86B8, 0xE0B3, 0x86B9, 0x86BA, 0xE0B8, 0x86BB, 0x86BC, 0x86BD, -/* 08A0 */ 0xB4AD, 0xE0B9, 0x86BE, 0x86BF, 0xCFB2, 0xBAC8, 0x86C0, 0xE0B0, -/* 08A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0FA, -/* 08B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08B8 */ 0xFFFD, 0xE0AC, 0x86D1, 0xD4FB, 0x86D2, 0xDFF7, 0x86D3, 0xC5E7, -/* 08C0 */ 0x86D4, 0xE0AD, 0x86D5, 0xD3F7, 0x86D6, 0xE0B6, 0xE0B7, 0x86D7, -/* 08C8 */ 0x86D8, 0x86D9, 0x86DA, 0x86DB, 0xE0C4, 0xD0E1, 0x86DC, 0x86DD, -/* 08D0 */ 0x86DE, 0xE0BC, 0x86DF, 0x86E0, 0xE0C9, 0xE0CA, 0x86E1, 0x86E2, -/* 08D8 */ 0x86E3, 0xE0BE, 0xE0AA, 0xC9A4, 0xE0C1, 0x86E4, 0xE0B2, 0x86E5, -/* 08E0 */ 0x86E6, 0x86E7, 0x86E8, 0x86E9, 0xCAC8, 0xE0C3, 0x86EA, 0xE0B5, -/* 08E8 */ 0x86EB, 0xCECB, 0x86EC, 0xCBC3, 0xE0CD, 0xE0C6, 0xE0C2, 0x86ED, -/* 08F0 */ 0xE0CB, 0x86EE, 0xE0BA, 0xE0BF, 0xE0C0, 0x86EF, 0x86F0, 0xE0C5, -/* 08F8 */ 0x86F1, 0x86F2, 0xE0C7, 0xE0C8, 0x86F3, 0xE0CC, 0x86F4, 0xE0BB, -/* 0900 */ 0x86F5, 0x86F6, 0x86F7, 0x86F8, 0x86F9, 0xCBD4, 0xE0D5, 0x86FA, -/* 0908 */ 0xE0D6, 0xE0D2, 0x86FB, 0x86FC, 0x86FD, 0x86FE, 0x8740, 0x8741, -/* 0910 */ 0xE0D0, 0xBCCE, 0x8742, 0x8743, 0xE0D1, 0x8744, 0xB8C2, 0xD8C5, -/* 0918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0920 */ 0xD0EA, 0x874D, 0x874E, 0xC2EF, 0x874F, 0x8750, 0xE0CF, 0xE0BD, -/* 0928 */ 0x8751, 0x8752, 0x8753, 0xE0D4, 0xE0D3, 0x8754, 0x8755, 0xE0D7, -/* 0930 */ 0x8756, 0x8757, 0x8758, 0x8759, 0xE0DC, 0xE0D8, 0x875A, 0x875B, -/* 0938 */ 0x875C, 0xD6F6, 0xB3B0, 0x875D, 0xD7EC, 0x875E, 0xCBBB, 0x875F, -/* 0940 */ 0x8760, 0xE0DA, 0x8761, 0xCEFB, 0x8762, 0x8763, 0x8764, 0xBAD9, -/* 0948 */ 0xE0E1, 0xE0DD, 0xD2AD, 0x8771, 0x8772, 0x8773, 0x8774, 0x8775, -/* 0950 */ 0xE0E2, 0x8776, 0x8777, 0xE0DB, 0xE0D9, 0xE0DF, 0x8778, 0x8779, -/* 0958 */ 0xE0E0, 0x877A, 0x877B, 0x877C, 0x877D, 0x877E, 0xE0DE, 0x8780, -/* 0960 */ 0xE0E4, 0x8781, 0x8782, 0x8783, 0xC6F7, 0xD8AC, 0xD4EB, 0xE0E6, -/* 0968 */ 0xCAC9, 0x8784, 0x8785, 0x8786, 0x8787, 0xE0E5, 0x8788, 0x8789, -/* 0970 */ 0x878A, 0x878B, 0xB8C1, 0x878C, 0x878D, 0x878E, 0x878F, 0xE0E7, -/* 0978 */ 0xE0E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0980 */ 0xFFFD, 0xE0E9, 0xE0E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0988 */ 0xFFFD, 0xFFFD, 0xBABF, 0xCCE7, 0x879F, 0x87A0, 0x87A1, 0xE0EA, -/* 0990 */ 0xE0EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0998 */ 0xC8C2, 0x87C3, 0x87C4, 0x87C5, 0x87C6, 0xBDC0, 0xC4D2, 0xFFFD, -/* 09A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09A8 */ 0xE0EC, 0x87DD, 0x87DE, 0xE0ED, 0x87DF, 0x87E0, 0xC7F4, 0xCBC4, -/* 09B0 */ 0x87E1, 0xE0EE, 0xBBD8, 0xD8B6, 0xD2F2, 0xE0EF, 0xCDC5, 0x87E2, -/* 09B8 */ 0xB6DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0F1, -/* 09C0 */ 0x87E9, 0xD4B0, 0x87EA, 0x87EB, 0xC0A7, 0xB4D1, 0x87EC, 0x87ED, -/* 09C8 */ 0xCEA7, 0xE0F0, 0x87EE, 0x87EF, 0x87F0, 0xE0F2, 0xB9CC, 0x87F1, -/* 09D0 */ 0x87F2, 0xB9FA, 0xCDBC, 0xE0F3, 0x87F3, 0x87F4, 0x87F5, 0xC6D4, -/* 09D8 */ 0xE0F4, 0x87F6, 0xD4B2, 0x87F7, 0xC8A6, 0xE0F6, 0xE0F5, 0xE0F7, -/* 09E0 */ 0x884A, 0x884B, 0xCDC1, 0x884C, 0x884D, 0x884E, 0xCAA5, 0x884F, -/* 09E8 */ 0x8850, 0x8851, 0x8852, 0xD4DA, 0xDBD7, 0xDBD9, 0x8853, 0xDBD8, -/* 09F0 */ 0xB9E7, 0xDBDC, 0xDBDD, 0xB5D8, 0x8854, 0x8855, 0xDBDA, 0x8856, -/* 09F8 */ 0x8857, 0x8858, 0x8859, 0x885A, 0xDBDB, 0xB3A1, 0xDBDF, 0x885B, -/* 0A00 */ 0x885C, 0xBBF8, 0x885D, 0xD6B7, 0x885E, 0xDBE0, 0x885F, 0x8860, -/* 0A08 */ 0x8861, 0x8862, 0xBEF9, 0x8863, 0x8864, 0xB7BB, 0x8865, 0xDBD0, -/* 0A10 */ 0xCCAE, 0xBFB2, 0xBBB5, 0xD7F8, 0xBFD3, 0x8866, 0x8867, 0x8868, -/* 0A18 */ 0x8869, 0x886A, 0xBFE9, 0x886B, 0x886C, 0xBCE1, 0xCCB3, 0xDBDE, -/* 0A20 */ 0xB0D3, 0xCEEB, 0xB7D8, 0xD7B9, 0xC6C2, 0x886D, 0x886E, 0xC0A4, -/* 0A28 */ 0x886F, 0xCCB9, 0x8870, 0xDBE7, 0xDBE1, 0xC6BA, 0xDBE3, 0x8871, -/* 0A30 */ 0xDBE8, 0x8872, 0xC5F7, 0x8873, 0x8874, 0x8875, 0xDBEA, 0x8876, -/* 0A38 */ 0x8877, 0xDBE9, 0xBFC0, 0x8878, 0x8879, 0x887A, 0xDBE6, 0xDBE5, -/* 0A40 */ 0x887B, 0x887C, 0x887D, 0x887E, 0x8880, 0xB4B9, 0xC0AC, 0xC2A2, -/* 0A48 */ 0xDBE2, 0xDBE4, 0x8881, 0x8882, 0x8883, 0x8884, 0xD0CD, 0xDBED, -/* 0A50 */ 0x8885, 0x8886, 0x8887, 0x8888, 0x8889, 0xC0DD, 0xDBF2, 0xFFFD, -/* 0A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6E2, 0x8891, -/* 0A60 */ 0x8892, 0x8893, 0x8894, 0xDBF3, 0xDBD2, 0xB9B8, 0xD4AB, 0xDBEC, -/* 0A68 */ 0x8895, 0xBFD1, 0xDBF0, 0x8896, 0xDBD1, 0x8897, 0xB5E6, 0x8898, -/* 0A70 */ 0xDBEB, 0xBFE5, 0x8899, 0x889A, 0x889B, 0xDBEE, 0x889C, 0xDBF1, -/* 0A78 */ 0x889D, 0x889E, 0x889F, 0xDBF9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9A1, 0xB0A3, 0xFFFD, -/* 0A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2F1, 0x88B0, -/* 0A90 */ 0x88B1, 0xB3C7, 0xDBEF, 0x88B2, 0x88B3, 0xDBF8, 0x88B4, 0xC6D2, -/* 0A98 */ 0xDBF4, 0x88B5, 0x88B6, 0xDBF5, 0xDBF7, 0xDBF6, 0x88B7, 0x88B8, -/* 0AA0 */ 0xDBFE, 0x88B9, 0xD3F2, 0xB2BA, 0x88BA, 0x88BB, 0x88BC, 0xDBFD, -/* 0AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AB0 */ 0xDCA4, 0x88C5, 0xDBFB, 0x88C6, 0x88C7, 0x88C8, 0x88C9, 0xDBFA, -/* 0AB8 */ 0x88CA, 0x88CB, 0x88CC, 0xDBFC, 0xC5E0, 0xBBF9, 0x88CD, 0x88CE, -/* 0AC0 */ 0xDCA3, 0x88CF, 0x88D0, 0xDCA5, 0x88D1, 0xCCC3, 0x88D2, 0x88D3, -/* 0AC8 */ 0x88D4, 0xB6D1, 0xDDC0, 0x88D5, 0x88D6, 0x88D7, 0xDCA1, 0x88D8, -/* 0AD0 */ 0xDCA2, 0x88D9, 0x88DA, 0x88DB, 0xC7B5, 0x88DC, 0x88DD, 0x88DE, -/* 0AD8 */ 0xB6E9, 0x88DF, 0x88E0, 0x88E1, 0xDCA7, 0x88E2, 0x88E3, 0x88E4, -/* 0AE0 */ 0x88E5, 0xDCA6, 0x88E6, 0xDCA9, 0xB1A4, 0x88E7, 0x88E8, 0xB5CC, -/* 0AE8 */ 0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0xBFB0, 0x88EE, 0x88EF, -/* 0AF0 */ 0x88F0, 0x88F1, 0x88F2, 0xD1DF, 0x88F3, 0x88F4, 0x88F5, 0x88F6, -/* 0AF8 */ 0xB6C2, 0xDCA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B00 */ 0xFFFD, 0xCBFA, 0xEBF3, 0x894D, 0x894E, 0x894F, 0xCBDC, 0x8950, -/* 0B08 */ 0x8951, 0xCBFE, 0x8952, 0x8953, 0x8954, 0xCCC1, 0x8955, 0x8956, -/* 0B10 */ 0x8957, 0x8958, 0x8959, 0xC8FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B18 */ 0xFFFD, 0xFFFD, 0xDCAA, 0x8960, 0x8961, 0x8962, 0x8963, 0x8964, -/* 0B20 */ 0xCCEE, 0xDCAB, 0xDBD3, 0x8976, 0xDCAF, 0xDCAC, 0x8977, 0xBEB3, -/* 0B28 */ 0x8978, 0xCAFB, 0x8979, 0x897A, 0x897B, 0xDCAD, 0x897C, 0x897D, -/* 0B30 */ 0x897E, 0x8980, 0x8981, 0x8982, 0x8983, 0x8984, 0xC9CA, 0xC4B9, -/* 0B38 */ 0x8985, 0x8986, 0x8987, 0x8988, 0x8989, 0xC7BD, 0xDCAE, 0x898A, -/* 0B40 */ 0x898B, 0x898C, 0xD4F6, 0xD0E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4AB, 0xB6D5, 0xDBD4, 0x89A7, -/* 0B50 */ 0x89A8, 0x89A9, 0x89AA, 0xB1DA, 0x89AB, 0x89AC, 0x89AD, 0xDBD5, -/* 0B58 */ 0xDBD6, 0x89B9, 0x89BA, 0x89BB, 0xBABE, 0xC8C0, 0xFFFD, 0xFFFD, -/* 0B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCABF, 0xC8C9, 0x89D0, 0xD7B3, -/* 0B68 */ 0x89D1, 0xC9F9, 0x89D2, 0x89D3, 0xBFC7, 0x89D4, 0x89D5, 0xBAF8, -/* 0B70 */ 0x89D6, 0x89D7, 0xD2BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2BA, 0x89E0, 0xB4A6, 0x89E1, 0x89E2, -/* 0B80 */ 0xB1B8, 0x89E3, 0x89E4, 0x89E5, 0x89E6, 0x89E7, 0xB8B4, 0x89E8, -/* 0B88 */ 0xCFC4, 0x89E9, 0x89EA, 0x89EB, 0x89EC, 0xD9E7, 0xCFA6, 0xCDE2, -/* 0B90 */ 0x89ED, 0x89EE, 0xD9ED, 0xB6E0, 0x89EF, 0xD2B9, 0x89F0, 0x89F1, -/* 0B98 */ 0xB9BB, 0x89F2, 0x89F3, 0x89F4, 0x89F5, 0xE2B9, 0xE2B7, 0x89F6, -/* 0BA0 */ 0xB4F3, 0x89F7, 0xCCEC, 0xCCAB, 0xB7F2, 0x89F8, 0xD8B2, 0xD1EB, -/* 0BA8 */ 0xBABB, 0x89F9, 0xCAA7, 0x89FA, 0x89FB, 0xCDB7, 0x89FC, 0x89FD, -/* 0BB0 */ 0xD2C4, 0xBFE4, 0xBCD0, 0xB6E1, 0x89FE, 0xDEC5, 0x8A40, 0x8A41, -/* 0BB8 */ 0x8A42, 0x8A43, 0xDEC6, 0xDBBC, 0x8A44, 0xD1D9, 0x8A45, 0x8A46, -/* 0BC0 */ 0xC6E6, 0xC4CE, 0xB7EE, 0x8A47, 0xB7DC, 0x8A48, 0x8A49, 0xBFFC, -/* 0BC8 */ 0xD7E0, 0x8A4A, 0xC6F5, 0x8A4B, 0x8A4C, 0xB1BC, 0xDEC8, 0xBDB1, -/* 0BD0 */ 0xCCD7, 0xDECA, 0x8A4D, 0xDEC9, 0x8A4E, 0x8A4F, 0x8A50, 0x8A51, -/* 0BD8 */ 0x8A52, 0xB5EC, 0x8A53, 0xC9DD, 0x8A54, 0x8A55, 0xB0C2, 0xC5AE, -/* 0BE0 */ 0xC5AB, 0x8A63, 0xC4CC, 0x8A64, 0xBCE9, 0xCBFD, 0x8A65, 0x8A66, -/* 0BE8 */ 0x8A67, 0xBAC3, 0x8A68, 0x8A69, 0x8A6A, 0xE5F9, 0xC8E7, 0xE5FA, -/* 0BF0 */ 0xCDFD, 0x8A6B, 0xD7B1, 0xB8BE, 0xC2E8, 0x8A6C, 0xC8D1, 0x8A6D, -/* 0BF8 */ 0x8A6E, 0xE5FB, 0x8A6F, 0x8A70, 0x8A71, 0x8A72, 0xB6CA, 0xBCCB, -/* 0C00 */ 0x8A73, 0x8A74, 0xD1FD, 0xE6A1, 0x8A75, 0xC3EE, 0x8A76, 0x8A77, -/* 0C08 */ 0x8A78, 0x8A79, 0xE6A4, 0x8A7A, 0x8A7B, 0x8A7C, 0x8A7D, 0xE5FE, -/* 0C10 */ 0xE6A5, 0xCDD7, 0x8A7E, 0x8A80, 0xB7C1, 0xE5FC, 0xE5FD, 0xE6A3, -/* 0C18 */ 0x8A81, 0x8A82, 0xC4DD, 0xE6A8, 0x8A83, 0x8A84, 0xE6A7, 0xFFFD, -/* 0C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3C3, 0x8A8B, 0xC6DE, -/* 0C28 */ 0x8A8C, 0x8A8D, 0xE6AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C30 */ 0xFFFD, 0xFFFD, 0xC4B7, 0x8A95, 0x8A96, 0x8A97, 0xE6A2, 0xCABC, -/* 0C38 */ 0x8A98, 0x8A99, 0x8A9A, 0x8A9B, 0xBDE3, 0xB9C3, 0xE6A6, 0xD0D5, -/* 0C40 */ 0xCEAF, 0x8A9C, 0x8A9D, 0xE6A9, 0xE6B0, 0x8A9E, 0xD2A6, 0x8A9F, -/* 0C48 */ 0xBDAA, 0xE6AD, 0x8AA0, 0x8AA1, 0x8AA2, 0x8AA3, 0x8AA4, 0xE6AF, -/* 0C50 */ 0x8AA5, 0xC0D1, 0x8AA6, 0x8AA7, 0xD2CC, 0x8AA8, 0x8AA9, 0x8AAA, -/* 0C58 */ 0xBCA7, 0xE6B1, 0x8AB7, 0xD2F6, 0x8AB8, 0x8AB9, 0x8ABA, 0xD7CB, -/* 0C60 */ 0x8ABB, 0xCDFE, 0x8ABC, 0xCDDE, 0xC2A6, 0xE6AB, 0xE6AC, 0xBDBF, -/* 0C68 */ 0xE6AE, 0xE6B3, 0x8ABD, 0x8ABE, 0xE6B2, 0x8ABF, 0x8AC0, 0x8AC1, -/* 0C70 */ 0x8AC2, 0xE6B6, 0x8AC3, 0xE6B8, 0x8AC4, 0x8AC5, 0x8AC6, 0x8AC7, -/* 0C78 */ 0xC4EF, 0x8AC8, 0x8AC9, 0x8ACA, 0xC4C8, 0x8ACB, 0x8ACC, 0xBEEA, -/* 0C80 */ 0xC9EF, 0x8ACD, 0x8ACE, 0xE6B7, 0x8ACF, 0xB6F0, 0x8AD0, 0x8AD1, -/* 0C88 */ 0x8AD2, 0xC3E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C90 */ 0xFFFD, 0xD3E9, 0xE6B4, 0x8ADA, 0xE6B5, 0x8ADB, 0xC8A2, 0x8ADC, -/* 0C98 */ 0x8ADD, 0x8ADE, 0x8ADF, 0x8AE0, 0xE6BD, 0x8AE1, 0x8AE2, 0x8AE3, -/* 0CA0 */ 0xE6B9, 0x8AE4, 0x8AE5, 0x8AE6, 0x8AE7, 0x8AE8, 0xC6C5, 0x8AE9, -/* 0CA8 */ 0x8AEA, 0xCDF1, 0xE6BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6BC, 0x8AF5, 0x8AF6, -/* 0CB8 */ 0x8AF7, 0x8AF8, 0xBBE9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC0 */ 0xFFFD, 0x8B40, 0xE6BE, 0x8B41, 0x8B42, 0x8B43, 0x8B44, 0xE6BA, -/* 0CC8 */ 0x8B45, 0x8B46, 0xC0B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3A4, 0xE6BF, 0xC9F4, 0xE6C3, -/* 0CD8 */ 0x8B50, 0x8B51, 0xE6C4, 0x8B52, 0x8B53, 0x8B54, 0x8B55, 0xD0F6, -/* 0CE0 */ 0xC3BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0xC3C4, 0xE6C2, 0xE6C1, 0x8B7D, 0x8B7E, 0x8B80, 0x8B81, 0x8B82, -/* 0CF0 */ 0x8B83, 0x8B84, 0xE6C7, 0xCFB1, 0x8B85, 0xEBF4, 0x8B86, 0x8B87, -/* 0CF8 */ 0xE6CA, 0x8B88, 0x8B89, 0x8B8A, 0x8B8B, 0x8B8C, 0xE6C5, 0x8B8D, -/* 0D00 */ 0x8B8E, 0xBCDE, 0xC9A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D08 */ 0xFFFD, 0xBCB5, 0x8B95, 0x8B96, 0xCFD3, 0x8B97, 0x8B98, 0x8B99, -/* 0D10 */ 0x8B9A, 0x8B9B, 0xE6C8, 0x8B9C, 0xE6C9, 0x8B9D, 0xE6CE, 0x8B9E, -/* 0D18 */ 0xE6D0, 0x8B9F, 0x8BA0, 0x8BA1, 0xE6D1, 0x8BA2, 0x8BA3, 0x8BA4, -/* 0D20 */ 0xE6CB, 0xB5D5, 0x8BA5, 0xE6CC, 0x8BA6, 0x8BA7, 0xE6CF, 0x8BA8, -/* 0D28 */ 0x8BA9, 0xC4DB, 0x8BAA, 0xE6C6, 0x8BAB, 0x8BAC, 0x8BAD, 0x8BAE, -/* 0D30 */ 0x8BAF, 0xE6CD, 0xE6D4, 0xE6D3, 0xE6D5, 0x8BED, 0xD9F8, 0x8BEE, -/* 0D38 */ 0x8BEF, 0xE6D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D40 */ 0xFFFD, 0xFFFD, 0xE6D7, 0xD7D3, 0xE6DD, 0x8C48, 0xE6DE, 0xBFD7, -/* 0D48 */ 0xD4D0, 0x8C49, 0xD7D6, 0xB4E6, 0xCBEF, 0xE6DA, 0xD8C3, 0xD7CE, -/* 0D50 */ 0xD0A2, 0x8C4A, 0xC3CF, 0x8C4B, 0x8C4C, 0xE6DF, 0xBCBE, 0xB9C2, -/* 0D58 */ 0xE6DB, 0xD1A7, 0x8C4D, 0x8C4E, 0xBAA2, 0xC2CF, 0x8C4F, 0xD8AB, -/* 0D60 */ 0x8C50, 0x8C51, 0x8C52, 0xCAEB, 0xE5EE, 0x8C53, 0xE6DC, 0x8C54, -/* 0D68 */ 0xB7F5, 0x8C55, 0x8C56, 0x8C57, 0x8C58, 0xC8E6, 0x8C59, 0x8C5A, -/* 0D70 */ 0xC4F5, 0x8C5B, 0x8C5C, 0xE5B2, 0xC4FE, 0x8C5D, 0xCBFC, 0xE5B3, -/* 0D78 */ 0xD5AC, 0x8C5E, 0xD3EE, 0xCAD8, 0xB0B2, 0x8C5F, 0xCBCE, 0xCDEA, -/* 0D80 */ 0x8C60, 0x8C61, 0xBAEA, 0x8C62, 0x8C63, 0x8C64, 0xE5B5, 0x8C65, -/* 0D88 */ 0xE5B4, 0x8C66, 0xD7DA, 0xB9D9, 0xD6E6, 0xB6A8, 0xCDF0, 0xD2CB, -/* 0D90 */ 0xB1A6, 0xCAB5, 0x8C67, 0xB3E8, 0xC9F3, 0xBFCD, 0xD0FB, 0xCAD2, -/* 0D98 */ 0xE5B6, 0xBBC2, 0x8C68, 0x8C69, 0x8C6A, 0xCFDC, 0xB9AC, 0x8C6B, -/* 0DA0 */ 0x8C6C, 0x8C6D, 0x8C6E, 0xD4D7, 0x8C6F, 0x8C70, 0xBAA6, 0xD1E7, -/* 0DA8 */ 0xCFFC, 0xBCD2, 0x8C71, 0xE5B7, 0xC8DD, 0x8C72, 0x8C73, 0x8C74, -/* 0DB0 */ 0xBFED, 0xB1F6, 0xCBDE, 0x8C75, 0x8C76, 0xBCC5, 0x8C77, 0xBCC4, -/* 0DB8 */ 0xD2FA, 0xC3DC, 0xBFDC, 0x8C78, 0x8C79, 0x8C7A, 0x8C7B, 0xB8BB, -/* 0DC0 */ 0x8C7C, 0x8C7D, 0x8C7E, 0xC3C2, 0x8C80, 0xBAAE, 0xD4A2, 0xFFFD, -/* 0DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DD0 */ 0xC7DE, 0xC4AF, 0xB2EC, 0x8C8A, 0xB9D1, 0x8C8B, 0x8C8C, 0xE5BB, -/* 0DD8 */ 0xC1C8, 0x8C8D, 0x8C8E, 0xD5AF, 0x8C8F, 0x8C90, 0x8C91, 0x8C92, -/* 0DE0 */ 0x8C93, 0xE5BC, 0x8C94, 0xE5BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB4E7, 0xB6D4, 0xCBC2, 0xD1B0, 0xB5BC, -/* 0DF0 */ 0x8C9C, 0x8C9D, 0xCAD9, 0x8C9E, 0xB7E2, 0x8C9F, 0x8CA0, 0xC9E4, -/* 0DF8 */ 0x8CA1, 0xBDAB, 0x8CA2, 0x8CA3, 0xCEBE, 0xD7F0, 0x8CA4, 0x8CA5, -/* 0E00 */ 0x8CA6, 0x8CA7, 0xD0A1, 0x8CA8, 0xC9D9, 0x8CA9, 0x8CAA, 0xB6FB, -/* 0E08 */ 0xE6D8, 0xBCE2, 0x8CAB, 0xB3BE, 0x8CAC, 0xC9D0, 0x8CAD, 0xE6D9, -/* 0E10 */ 0xB3A2, 0x8CAE, 0x8CAF, 0x8CB0, 0x8CB1, 0xDECC, 0x8CB2, 0xD3C8, -/* 0E18 */ 0xDECD, 0x8CB3, 0xD2A2, 0x8CB4, 0x8CB5, 0x8CB6, 0x8CB7, 0xDECE, -/* 0E20 */ 0x8CB8, 0x8CB9, 0x8CBA, 0x8CBB, 0xBECD, 0x8CBC, 0x8CBD, 0xDECF, -/* 0E28 */ 0x8CBE, 0x8CBF, 0x8CC0, 0xCAAC, 0xD2FC, 0xB3DF, 0xE5EA, 0xC4E1, -/* 0E30 */ 0xBEA1, 0xCEB2, 0xC4F2, 0xBED6, 0xC6A8, 0xB2E3, 0x8CC1, 0x8CC2, -/* 0E38 */ 0xBED3, 0x8CC3, 0x8CC4, 0xC7FC, 0xCCEB, 0xBDEC, 0xCEDD, 0x8CC5, -/* 0E40 */ 0x8CC6, 0xCABA, 0xC6C1, 0xE5EC, 0xD0BC, 0x8CC7, 0x8CC8, 0x8CC9, -/* 0E48 */ 0xD5B9, 0x8CCA, 0x8CCB, 0x8CCC, 0xE5ED, 0x8CCD, 0x8CCE, 0x8CCF, -/* 0E50 */ 0x8CD0, 0xCAF4, 0x8CD1, 0xCDC0, 0xC2C5, 0x8CD2, 0xE5EF, 0x8CD3, -/* 0E58 */ 0xC2C4, 0xE5F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E60 */ 0xFFFD, 0xE5F8, 0xCDCD, 0x8CDB, 0xC9BD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2D9, 0xE1A8, 0x8CE3, 0x8CE4, -/* 0E70 */ 0x8CE5, 0x8CE6, 0xD3EC, 0x8CE7, 0xCBEA, 0xC6F1, 0x8CE8, 0x8CE9, -/* 0E78 */ 0x8CEA, 0x8CEB, 0x8CEC, 0xE1AC, 0x8CED, 0x8CEE, 0x8CEF, 0xE1A7, -/* 0E80 */ 0xE1A9, 0x8CF0, 0x8CF1, 0xE1AA, 0xE1AF, 0x8CF2, 0x8CF3, 0xB2ED, -/* 0E88 */ 0x8CF4, 0xE1AB, 0xB8DA, 0xE1AD, 0xE1AE, 0xE1B0, 0xB5BA, 0xE1B1, -/* 0E90 */ 0x8CF5, 0x8CF6, 0x8CF7, 0x8CF8, 0x8CF9, 0xE1B3, 0xE1B8, 0x8CFA, -/* 0E98 */ 0x8CFB, 0x8CFC, 0x8CFD, 0x8CFE, 0xD1D2, 0x8D40, 0xE1B6, 0xE1B5, -/* 0EA0 */ 0xC1EB, 0x8D41, 0x8D42, 0x8D43, 0xE1B7, 0x8D44, 0xD4C0, 0x8D45, -/* 0EA8 */ 0xE1B2, 0x8D46, 0xE1BA, 0xB0B6, 0x8D47, 0x8D48, 0x8D49, 0x8D4A, -/* 0EB0 */ 0xE1B4, 0x8D4B, 0xBFF9, 0x8D4C, 0xE1B9, 0x8D4D, 0x8D4E, 0xE1BB, -/* 0EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1BE, 0xFFFD, -/* 0EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1BC, 0xFFFD, 0xFFFD, -/* 0EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6C5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFBF, 0x8D68, 0x8D69, 0xE1BD, -/* 0ED8 */ 0xE1BF, 0xC2CD, 0x8D6A, 0xB6EB, 0x8D6B, 0xD3F8, 0x8D6C, 0x8D6D, -/* 0EE0 */ 0xC7CD, 0x8D6E, 0x8D6F, 0xB7E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEFE, 0x8D7A, -/* 0EF0 */ 0x8D7B, 0x8D7C, 0x8D7D, 0x8D7E, 0x8D80, 0xE1C0, 0xE1C1, 0x8D81, -/* 0EF8 */ 0x8D82, 0xE1C7, 0xB3E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F00 */ 0xFFFD, 0xC6E9, 0x8D89, 0x8D8A, 0x8D8B, 0x8D8C, 0x8D8D, 0xB4DE, -/* 0F08 */ 0x8D8E, 0xD1C2, 0x8D8F, 0x8D90, 0x8D91, 0x8D92, 0xE1C8, 0x8D93, -/* 0F10 */ 0x8D94, 0xE1C6, 0x8D95, 0x8D96, 0x8D97, 0x8D98, 0x8D99, 0xE1C5, -/* 0F18 */ 0x8D9A, 0xE1C3, 0xE1C2, 0x8D9B, 0xB1C0, 0x8D9C, 0x8D9D, 0x8D9E, -/* 0F20 */ 0xD5B8, 0xE1C4, 0x8D9F, 0x8DA0, 0x8DA1, 0x8DA2, 0x8DA3, 0xE1CB, -/* 0F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F30 */ 0xE1CC, 0xE1CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F38 */ 0xFFFD, 0xFFFD, 0xEFFA, 0x8DB4, 0x8DB5, 0xE1D3, 0xE1D2, 0xC7B6, -/* 0F40 */ 0xE1C9, 0x8DC1, 0x8DC2, 0xE1CE, 0x8DC3, 0xE1D0, 0xE1D4, 0x8DCF, -/* 0F48 */ 0xE1D1, 0xE1CD, 0x8DD0, 0x8DD1, 0xE1CF, 0x8DD2, 0x8DD3, 0x8DD4, -/* 0F50 */ 0x8DD5, 0xE1D5, 0xE1D7, 0x8DF9, 0x8DFA, 0x8DFB, 0xE1D8, 0x8DFC, -/* 0F58 */ 0x8DFD, 0x8DFE, 0xE1DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F60 */ 0xFFFD, 0xFFFD, 0xCEA1, 0xE7DD, 0x8E77, 0xB4A8, 0xD6DD, 0x8E78, -/* 0F68 */ 0x8E79, 0xD1B2, 0xB3B2, 0x8E7A, 0x8E7B, 0xB9A4, 0xD7F3, 0xC7C9, -/* 0F70 */ 0xBEDE, 0xB9AE, 0x8E7C, 0xCED7, 0x8E7D, 0x8E7E, 0xB2EE, 0xDBCF, -/* 0F78 */ 0x8E80, 0xBCBA, 0xD2D1, 0xCBC8, 0xB0CD, 0x8E81, 0x8E82, 0xCFEF, -/* 0F80 */ 0x8E83, 0x8E84, 0x8E85, 0x8E86, 0x8E87, 0xD9E3, 0xBDED, 0x8E88, -/* 0F88 */ 0x8E89, 0xB1D2, 0xCAD0, 0xB2BC, 0x8E8A, 0xCBA7, 0xB7AB, 0x8E8B, -/* 0F90 */ 0xCAA6, 0x8E8C, 0x8E8D, 0x8E8E, 0xCFA3, 0x8E8F, 0x8E90, 0xE0F8, -/* 0F98 */ 0xD5CA, 0xE0FB, 0x8E91, 0x8E92, 0xE0FA, 0xC5C1, 0xCCFB, 0x8E93, -/* 0FA0 */ 0xC1B1, 0xE0F9, 0xD6E3, 0xB2AF, 0xD6C4, 0xB5DB, 0xFFFD, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4F8, 0xD6A1, -/* 0FB0 */ 0x8E9C, 0x8E9D, 0x8E9E, 0x8E9F, 0x8EA0, 0xCFAF, 0xB0EF, 0x8EA1, -/* 0FB8 */ 0x8EA2, 0xE0FC, 0x8EA3, 0x8EA4, 0x8EA5, 0x8EA6, 0x8EA7, 0xE1A1, -/* 0FC0 */ 0xB3A3, 0x8EA8, 0x8EA9, 0xE0FD, 0xE0FE, 0xC3B1, 0x8EAA, 0x8EAB, -/* 0FC8 */ 0x8EAC, 0x8EAD, 0xC3DD, 0x8EAE, 0xE1A2, 0xB7F9, 0xFFFD, 0xFFFD, -/* 0FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBCF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1A3, 0xC4BB, 0x8EBC, 0x8EBD, -/* 0FE0 */ 0x8EBE, 0x8EBF, 0x8EC0, 0xE1A4, 0x8EC1, 0x8EC2, 0xE1A5, 0x8EC3, -/* 0FE8 */ 0x8EC4, 0xE1A6, 0xB4B1, 0xB8C9, 0xC6BD, 0xC4EA, 0x8ED4, 0xB2A2, -/* 0FF0 */ 0x8ED5, 0xD0D2, 0x8ED6, 0xE7DB, 0xBBC3, 0xD3D7, 0xD3C4, 0x8ED7, -/* 0FF8 */ 0xB9E3, 0xE2CF, 0x8ED8, 0x8ED9, 0x8EDA, 0xD7AF, 0x8EDB, 0xC7EC, -/* 1000 */ 0xB1D3, 0x8EDC, 0x8EDD, 0xB4B2, 0xE2D1, 0x8EDE, 0x8EDF, 0x8EE0, -/* 1008 */ 0xD0F2, 0xC2AE, 0xE2D0, 0x8EE1, 0xBFE2, 0xD3A6, 0xB5D7, 0xE2D2, -/* 1010 */ 0xB5EA, 0x8EE2, 0xC3ED, 0xB8FD, 0x8EE3, 0xB8AE, 0x8EE4, 0xC5D3, -/* 1018 */ 0xB7CF, 0xE2D4, 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0xE2D3, 0xB6C8, -/* 1020 */ 0xD7F9, 0x8EE9, 0x8EEA, 0x8EEB, 0x8EEC, 0x8EED, 0xCDA5, 0x8EEE, -/* 1028 */ 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF2, 0xE2D8, 0x8EF3, 0xE2D6, 0xCAFC, -/* 1030 */ 0xBFB5, 0xD3B9, 0xE2D5, 0x8EF4, 0x8EF5, 0x8EF6, 0x8EF7, 0xE2D7, -/* 1038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F40, -/* 1040 */ 0x8F41, 0x8F42, 0xC1AE, 0xC0C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1048 */ 0xFFFD, 0xFFFD, 0xE2DB, 0xE2DA, 0xC0AA, 0x8F49, 0x8F4A, 0xC1CE, -/* 1050 */ 0x8F4B, 0x8F4C, 0x8F4D, 0x8F4E, 0xE2DC, 0xE2DD, 0x8F5B, 0xE2DE, -/* 1058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1060 */ 0xFFFD, 0xDBC8, 0x8F65, 0xD1D3, 0xCDA2, 0x8F66, 0x8F67, 0xBDA8, -/* 1068 */ 0x8F68, 0x8F69, 0x8F6A, 0xDEC3, 0xD8A5, 0xBFAA, 0xDBCD, 0xD2EC, -/* 1070 */ 0xC6FA, 0xC5AA, 0x8F6B, 0x8F6C, 0x8F6D, 0xDEC4, 0x8F6E, 0xB1D7, -/* 1078 */ 0xDFAE, 0x8F6F, 0x8F70, 0x8F71, 0xCABD, 0x8F72, 0xDFB1, 0x8F73, -/* 1080 */ 0xB9AD, 0x8F74, 0xD2FD, 0x8F75, 0xB8A5, 0xBAEB, 0x8F76, 0x8F77, -/* 1088 */ 0xB3DA, 0x8F78, 0x8F79, 0x8F7A, 0xB5DC, 0xD5C5, 0x8F7B, 0x8F7C, -/* 1090 */ 0x8F7D, 0x8F7E, 0xC3D6, 0xCFD2, 0xBBA1, 0x8F80, 0xE5F3, 0xE5F2, -/* 1098 */ 0x8F81, 0x8F82, 0xE5F4, 0x8F83, 0xCDE4, 0x8F84, 0xC8F5, 0xFFFD, -/* 10A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5AF, 0xC7BF, -/* 10A8 */ 0x8F8C, 0xE5F6, 0x8F8D, 0x8F8E, 0x8F8F, 0xECB0, 0xE5E6, 0x8F9F, -/* 10B0 */ 0xB9E9, 0xB5B1, 0x8FA0, 0xC2BC, 0xE5E8, 0xE5E7, 0xE5E9, 0x8FA1, -/* 10B8 */ 0x8FA2, 0x8FA3, 0x8FA4, 0xD2CD, 0x8FA5, 0x8FA6, 0x8FA7, 0xE1EA, -/* 10C0 */ 0xD0CE, 0x8FA8, 0xCDAE, 0x8FA9, 0xD1E5, 0x8FAA, 0x8FAB, 0xB2CA, -/* 10C8 */ 0xB1EB, 0x8FAC, 0xB1F2, 0xC5ED, 0x8FAD, 0x8FAE, 0xD5C3, 0xD3B0, -/* 10D0 */ 0x8FAF, 0xE1DC, 0x8FB0, 0x8FB1, 0x8FB2, 0xE1DD, 0x8FB3, 0xD2DB, -/* 10D8 */ 0x8FB4, 0xB3B9, 0xB1CB, 0x8FB5, 0x8FB6, 0x8FB7, 0xCDF9, 0xD5F7, -/* 10E0 */ 0xE1DE, 0x8FB8, 0xBEB6, 0xB4FD, 0x8FB9, 0xE1DF, 0xBADC, 0xE1E0, -/* 10E8 */ 0xBBB2, 0xC2C9, 0xE1E1, 0x8FBA, 0x8FBB, 0x8FBC, 0xD0EC, 0x8FBD, -/* 10F0 */ 0xCDBD, 0x8FBE, 0x8FBF, 0xE1E2, 0x8FC0, 0xB5C3, 0xC5C7, 0xE1E3, -/* 10F8 */ 0x8FC1, 0x8FC2, 0xE1E4, 0x8FC3, 0x8FC4, 0x8FC5, 0x8FC6, 0xD3F9, -/* 1100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E5, 0x8FCD, -/* 1108 */ 0xD1AD, 0x8FCE, 0x8FCF, 0xE1E6, 0xCEA2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E7, 0x8FD6, 0xB5C2, 0x8FD7, 0x8FD8, -/* 1118 */ 0x8FD9, 0x8FDA, 0xE1E8, 0xBBD5, 0x8FDB, 0x8FDC, 0x8FDD, 0x8FDE, -/* 1120 */ 0x8FDF, 0xD0C4, 0xE2E0, 0xB1D8, 0xD2E4, 0x8FE0, 0x8FE1, 0xE2E1, -/* 1128 */ 0x8FE2, 0x8FE3, 0xBCC9, 0xC8CC, 0x8FE4, 0xE2E3, 0xECFE, 0xECFD, -/* 1130 */ 0xDFAF, 0x8FE5, 0x8FE6, 0x8FE7, 0xE2E2, 0xD6BE, 0xCDFC, 0xC3A6, -/* 1138 */ 0x8FE8, 0x8FE9, 0x8FEA, 0xE3C3, 0x8FEB, 0x8FEC, 0xD6D2, 0xE2E7, -/* 1140 */ 0x8FED, 0x8FEE, 0xE2E8, 0x8FEF, 0x8FF0, 0xD3C7, 0x8FF1, 0x8FF2, -/* 1148 */ 0xE2EC, 0xBFEC, 0x8FF3, 0xE2ED, 0xE2E5, 0x8FF4, 0x8FF5, 0xB3C0, -/* 1150 */ 0x8FF6, 0x8FF7, 0x8FF8, 0xC4EE, 0x8FF9, 0x8FFA, 0xE2EE, 0x8FFB, -/* 1158 */ 0x8FFC, 0xD0C3, 0x8FFD, 0xBAF6, 0xE2E9, 0xB7DE, 0xBBB3, 0xCCAC, -/* 1160 */ 0xCBCB, 0xE2E4, 0xE2E6, 0xE2EA, 0xE2EB, 0x8FFE, 0x9040, 0x9041, -/* 1168 */ 0xE2F7, 0x9042, 0x9043, 0xE2F4, 0xD4F5, 0xE2F3, 0x9044, 0x9045, -/* 1170 */ 0xC5AD, 0x9046, 0xD5FA, 0xC5C2, 0xB2C0, 0x9047, 0x9048, 0xE2EF, -/* 1178 */ 0x9049, 0xE2F2, 0xC1AF, 0xCBBC, 0x904A, 0x904B, 0xB5A1, 0xE2F9, -/* 1180 */ 0x904C, 0x904D, 0x904E, 0xBCB1, 0xE2F1, 0xD0D4, 0xD4B9, 0xE2F5, -/* 1188 */ 0xB9D6, 0xE2F6, 0x904F, 0x9050, 0x9051, 0xC7D3, 0x9052, 0x9053, -/* 1190 */ 0x9054, 0x9055, 0x9056, 0xE2F0, 0x9057, 0x9058, 0x9059, 0x905A, -/* 1198 */ 0x905B, 0xD7DC, 0xEDA1, 0x905C, 0x905D, 0xE2F8, 0x905E, 0xEDA5, -/* 11A0 */ 0xE2FE, 0xCAD1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11A8 */ 0xFFFD, 0xC1B5, 0x9066, 0xBBD0, 0x9067, 0x9068, 0xBFD6, 0x9069, -/* 11B0 */ 0xBAE3, 0x906A, 0x906B, 0xCBA1, 0x906C, 0x906D, 0x906E, 0xEDA6, -/* 11B8 */ 0xEDA3, 0x906F, 0x9070, 0xEDA2, 0x9071, 0x9072, 0x9073, 0x9074, -/* 11C0 */ 0xBBD6, 0xEDA7, 0xD0F4, 0x9075, 0x9076, 0xEDA4, 0xBADE, 0xB6F7, -/* 11C8 */ 0xE3A1, 0xB6B2, 0xCCF1, 0xB9A7, 0x9077, 0xCFA2, 0xC7A1, 0x9078, -/* 11D0 */ 0x9079, 0xBFD2, 0x907A, 0x907B, 0xB6F1, 0x907C, 0xE2FA, 0xE2FB, -/* 11D8 */ 0xE2FD, 0xE2FC, 0xC4D5, 0xE3A2, 0x907D, 0xD3C1, 0x907E, 0x9080, -/* 11E0 */ 0x9081, 0xE3A7, 0xC7C4, 0x9082, 0x9083, 0x9084, 0x9085, 0xCFA4, -/* 11E8 */ 0x9086, 0x9087, 0xE3A9, 0xBAB7, 0x9088, 0x9089, 0x908A, 0x908B, -/* 11F0 */ 0xE3A8, 0x908C, 0xBBDA, 0x908D, 0xE3A3, 0x908E, 0x908F, 0x9090, -/* 11F8 */ 0xE3A4, 0xE3AA, 0x9091, 0xE3A6, 0x9092, 0xCEF2, 0xD3C6, 0x9093, -/* 1200 */ 0x9094, 0xBBBC, 0x9095, 0x9096, 0xD4C3, 0x9097, 0xC4FA, 0x9098, -/* 1208 */ 0x9099, 0xEDA8, 0xD0FC, 0xE3A5, 0x909A, 0xC3F5, 0x909B, 0xE3AD, -/* 1210 */ 0xB1AF, 0x909C, 0xE3B2, 0x909D, 0x909E, 0x909F, 0xBCC2, 0x90A0, -/* 1218 */ 0x90A1, 0xE3AC, 0xB5BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC7E9, 0xE3B0, 0x90AA, 0x90AB, 0x90AC, -/* 1228 */ 0xBEAA, 0xCDEF, 0x90AD, 0x90AE, 0x90AF, 0x90B0, 0x90B1, 0xBBF3, -/* 1230 */ 0x90B2, 0x90B3, 0x90B4, 0xCCE8, 0x90B5, 0x90B6, 0xE3AF, 0x90B7, -/* 1238 */ 0xE3B1, 0x90B8, 0xCFA7, 0xE3AE, 0x90B9, 0xCEA9, 0xBBDD, 0x90BA, -/* 1240 */ 0x90BB, 0x90BC, 0x90BD, 0x90BE, 0xB5EB, 0xBEE5, 0xB2D2, 0xB3CD, -/* 1248 */ 0x90BF, 0xB1B9, 0xE3AB, 0xB2D1, 0xB5AC, 0xB9DF, 0xB6E8, 0x90C0, -/* 1250 */ 0x90C1, 0xCFEB, 0xE3B7, 0x90C2, 0xBBCC, 0x90C3, 0x90C4, 0xC8C7, -/* 1258 */ 0xD0CA, 0x90C5, 0x90C6, 0x90C7, 0x90C8, 0x90C9, 0xE3B8, 0xB3EE, -/* 1260 */ 0x90CA, 0x90CB, 0x90CC, 0x90CD, 0xEDA9, 0x90CE, 0xD3FA, 0xD3E4, -/* 1268 */ 0x90CF, 0x90D0, 0x90D1, 0xEDAA, 0xE3B9, 0xD2E2, 0x90D2, 0x90D3, -/* 1270 */ 0x90D4, 0x90D5, 0x90D6, 0xE3B5, 0x90D7, 0x90D8, 0x90D9, 0x90DA, -/* 1278 */ 0xD3DE, 0x90DB, 0x90DC, 0x90DD, 0x90DE, 0xB8D0, 0xE3B3, 0x90DF, -/* 1280 */ 0x90E0, 0xE3B6, 0xB7DF, 0x90E1, 0xE3B4, 0xC0A2, 0x90E2, 0x90E3, -/* 1288 */ 0x90E4, 0xE3BA, 0xD4B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1290 */ 0xFFFD, 0xFFFD, 0x9140, 0xB4C8, 0x9141, 0xE3BB, 0x9142, 0xBBC5, -/* 1298 */ 0x9143, 0xC9F7, 0x9144, 0x9145, 0xC9E5, 0x9146, 0x9147, 0x9148, -/* 12A0 */ 0xC4BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A8 */ 0xEDAB, 0x9150, 0x9151, 0x9152, 0x9153, 0xC2FD, 0x9154, 0x9155, -/* 12B0 */ 0x9156, 0x9157, 0xBBDB, 0xBFAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCEBF, 0x915F, 0x9160, 0x9161, 0x9162, -/* 12C0 */ 0xE3BC, 0x9163, 0xBFB6, 0xB1EF, 0x9177, 0x9178, 0xD4F7, 0x9179, -/* 12C8 */ 0x917A, 0x917B, 0x917C, 0x917D, 0xE3BE, 0x917E, 0xFFFD, 0xFFFD, -/* 12D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDAD, 0xFFFD, 0xFFFD, -/* 12D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3BF, -/* 12E0 */ 0xBAA9, 0xEDAC, 0x9190, 0x9191, 0xE3BD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3C0, -/* 12F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAB6, 0x91A2, -/* 12F8 */ 0x91A3, 0x91A4, 0xB6AE, 0x91A5, 0x91A6, 0x91A7, 0x91A8, 0x91A9, -/* 1300 */ 0xD0B8, 0x91AA, 0xB0C3, 0xEDAE, 0x91AB, 0x91AC, 0x91AD, 0x91AE, -/* 1308 */ 0x91AF, 0xEDAF, 0xC0C1, 0x91B0, 0xE3C1, 0xE3C2, 0xFFFD, 0xFFFD, -/* 1310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCB2, -/* 1318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDB0, 0x91DF, -/* 1320 */ 0xB8EA, 0x91E0, 0xCEEC, 0xEAA7, 0xD0E7, 0xCAF9, 0xC8D6, 0xCFB7, -/* 1328 */ 0xB3C9, 0xCED2, 0xBDE4, 0x91E1, 0x91E2, 0xE3DE, 0xBBF2, 0xEAA8, -/* 1330 */ 0xD5BD, 0x91E3, 0xC6DD, 0xEAA9, 0x91E4, 0x91E5, 0x91E6, 0xEAAA, -/* 1338 */ 0x91E7, 0xEAAC, 0xEAAB, 0x91E8, 0xEAAE, 0xEAAD, 0x91E9, 0x91EA, -/* 1340 */ 0x91EB, 0x91EC, 0xBDD8, 0x91ED, 0xEAAF, 0x91EE, 0xC2BE, 0x91EF, -/* 1348 */ 0x91F0, 0x91F1, 0x91F2, 0xB4C1, 0xB4F7, 0x91F3, 0x91F4, 0xBBA7, -/* 1350 */ 0x91F5, 0x91F6, 0x91F7, 0x91F8, 0x91F9, 0xECE6, 0xECE5, 0xB7BF, -/* 1358 */ 0xCBF9, 0xB1E2, 0x91FA, 0xECE7, 0x91FB, 0x91FC, 0x91FD, 0xC9C8, -/* 1360 */ 0xECE8, 0xECE9, 0x91FE, 0xCAD6, 0xDED0, 0xB2C5, 0xD4FA, 0x9240, -/* 1368 */ 0x9241, 0xC6CB, 0xB0C7, 0xB4F2, 0xC8D3, 0x9242, 0x9243, 0x9244, -/* 1370 */ 0xCDD0, 0x9245, 0x9246, 0xBFB8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBFDB, 0x924E, 0x924F, 0xC7A4, 0xD6B4, -/* 1380 */ 0x9250, 0xC0A9, 0xDED1, 0xC9A8, 0xD1EF, 0xC5A4, 0xB0E7, 0xB3B6, -/* 1388 */ 0xC8C5, 0x9251, 0x9252, 0xB0E2, 0x9253, 0x9254, 0xB7F6, 0x9255, -/* 1390 */ 0x9256, 0xC5FA, 0x9257, 0x9258, 0xB6F3, 0x9259, 0xD5D2, 0xB3D0, -/* 1398 */ 0xBCBC, 0x925A, 0x925B, 0x925C, 0xB3AD, 0x925D, 0x925E, 0x925F, -/* 13A0 */ 0x9260, 0xBEF1, 0xB0D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13A8 */ 0xFFFD, 0xD2D6, 0xCAE3, 0xD7A5, 0x9267, 0xCDB6, 0xB6B6, 0xBFB9, -/* 13B0 */ 0xD5DB, 0x9268, 0xB8A7, 0xC5D7, 0x9269, 0x926A, 0x926B, 0xDED2, -/* 13B8 */ 0xBFD9, 0xC2D5, 0xC7C0, 0x926C, 0xBBA4, 0xB1A8, 0x926D, 0x926E, -/* 13C0 */ 0xC5EA, 0x926F, 0x9270, 0xC5FB, 0xCCA7, 0x9271, 0x9272, 0x9273, -/* 13C8 */ 0x9274, 0xB1A7, 0x9275, 0x9276, 0x9277, 0xB5D6, 0x9278, 0x9279, -/* 13D0 */ 0x927A, 0xC4A8, 0x927B, 0xDED3, 0xD1BA, 0xB3E9, 0x927C, 0xC3F2, -/* 13D8 */ 0x927D, 0x927E, 0xB7F7, 0x9280, 0xD6F4, 0xB5A3, 0xB2F0, 0xC4B4, -/* 13E0 */ 0xC4E9, 0xC0AD, 0xDED4, 0x9281, 0xB0E8, 0xC5C4, 0xC1E0, 0x9282, -/* 13E8 */ 0xB9D5, 0x9283, 0xBEDC, 0xCDD8, 0xB0CE, 0x9284, 0xCDCF, 0xDED6, -/* 13F0 */ 0xBED0, 0xD7BE, 0xDED5, 0xD5D0, 0xB0DD, 0x9285, 0x9286, 0xC4E2, -/* 13F8 */ 0x9287, 0x9288, 0xC2A3, 0xBCF0, 0x9289, 0xD3B5, 0xC0B9, 0xC5A1, -/* 1400 */ 0xB2A6, 0xD4F1, 0x928A, 0x928B, 0xC0A8, 0xCAC3, 0xDED7, 0xD5FC, -/* 1408 */ 0x928C, 0xB9B0, 0x928D, 0xC8AD, 0xCBA9, 0x928E, 0xDED9, 0xBFBD, -/* 1410 */ 0x928F, 0x9290, 0x9291, 0x9292, 0xC6B4, 0xD7A7, 0xCAB0, 0xC4C3, -/* 1418 */ 0x9293, 0xB3D6, 0xB9D2, 0x9294, 0x9295, 0x9296, 0x9297, 0xD6B8, -/* 1420 */ 0xEAFC, 0xB0B4, 0x9298, 0x9299, 0x929A, 0x929B, 0xBFE6, 0x929C, -/* 1428 */ 0x929D, 0xCCF4, 0x929E, 0x929F, 0x92A0, 0x92A1, 0xCDDA, 0x92A2, -/* 1430 */ 0x92A3, 0x92A4, 0xD6BF, 0xC2CE, 0x92A5, 0xCECE, 0xCCA2, 0xD0AE, -/* 1438 */ 0xC4D3, 0xB5B2, 0xDED8, 0xD5F5, 0xBCB7, 0xBBD3, 0x92A6, 0x92A7, -/* 1440 */ 0xB0A4, 0x92A8, 0xC5B2, 0xB4EC, 0x92A9, 0x92AA, 0x92AB, 0xD5F1, -/* 1448 */ 0x92AC, 0x92AD, 0xEAFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1450 */ 0xFFFD, 0xDEDA, 0xCDA6, 0x92B4, 0x92B5, 0xCDEC, 0x92B6, 0x92B7, -/* 1458 */ 0x92B8, 0x92B9, 0xCEE6, 0xDEDC, 0x92BA, 0xCDB1, 0xC0A6, 0x92BB, -/* 1460 */ 0x92BC, 0xD7BD, 0x92BD, 0xDEDB, 0xB0C6, 0xBAB4, 0xC9D3, 0xC4F3, -/* 1468 */ 0xBEE8, 0x92BE, 0x92BF, 0x92C0, 0x92C1, 0xB2B6, 0xFFFD, 0xFFFD, -/* 1470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0CC, 0xCBF0, -/* 1478 */ 0x92CA, 0xBCF1, 0xBBBB, 0xB5B7, 0x92CB, 0x92CC, 0x92CD, 0xC5F5, -/* 1480 */ 0x92CE, 0xDEE6, 0x92CF, 0x92D0, 0x92D1, 0xDEE3, 0xBEDD, 0x92D2, -/* 1488 */ 0x92D3, 0xDEDF, 0x92D4, 0x92D5, 0x92D6, 0x92D7, 0xB4B7, 0xBDDD, -/* 1490 */ 0x92D8, 0x92D9, 0xDEE0, 0xC4ED, 0x92DA, 0x92DB, 0x92DC, 0x92DD, -/* 1498 */ 0xCFC6, 0x92DE, 0xB5E0, 0x92DF, 0x92E0, 0x92E1, 0x92E2, 0xB6DE, -/* 14A0 */ 0xCADA, 0xB5F4, 0xDEE5, 0x92E3, 0xD5C6, 0x92E4, 0xDEE1, 0xCCCD, -/* 14A8 */ 0xC6FE, 0x92E5, 0xC5C5, 0x92E6, 0x92E7, 0x92E8, 0xD2B4, 0x92E9, -/* 14B0 */ 0xBEF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14B8 */ 0xC2D3, 0x92F1, 0xCCBD, 0xB3B8, 0x92F2, 0xBDD3, 0x92F3, 0xBFD8, -/* 14C0 */ 0xCDC6, 0xD1DA, 0xB4EB, 0x92F4, 0xDEE4, 0xDEDD, 0xDEE7, 0x92F5, -/* 14C8 */ 0xEAFE, 0x92F6, 0x92F7, 0xC2B0, 0xDEE2, 0x92F8, 0x92F9, 0xD6C0, -/* 14D0 */ 0xB5A7, 0x92FA, 0xB2F4, 0x92FB, 0xDEE8, 0x92FC, 0xDEF2, 0x92FD, -/* 14D8 */ 0x92FE, 0x9340, 0x9341, 0x9342, 0xDEED, 0x9343, 0xDEF1, 0x9344, -/* 14E0 */ 0x9345, 0xC8E0, 0x9346, 0x9347, 0x9348, 0xD7E1, 0xDEEF, 0xC3E8, -/* 14E8 */ 0xCCE1, 0x9349, 0xB2E5, 0x934A, 0x934B, 0x934C, 0xD2BE, 0xFFFD, -/* 14F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEEE, 0x9354, -/* 14F8 */ 0xDEEB, 0xCED5, 0x9355, 0xB4A7, 0x9356, 0x9357, 0x9358, 0x9359, -/* 1500 */ 0x935A, 0xBFAB, 0xBEBE, 0x935B, 0x935C, 0xBDD2, 0x935D, 0x935E, -/* 1508 */ 0x935F, 0x9360, 0xDEE9, 0x9361, 0xD4AE, 0x9362, 0xDEDE, 0x9363, -/* 1510 */ 0xDEEA, 0x9364, 0x9365, 0x9366, 0x9367, 0xC0BF, 0x9368, 0xDEEC, -/* 1518 */ 0xB2F3, 0xB8E9, 0xC2A7, 0x9369, 0x936A, 0xBDC1, 0x936B, 0x936C, -/* 1520 */ 0x936D, 0x936E, 0x936F, 0xDEF5, 0xDEF8, 0x9370, 0x9371, 0xB2AB, -/* 1528 */ 0xB4A4, 0x9372, 0x9373, 0xB4EA, 0xC9A6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDEF6, 0xCBD1, 0x937A, 0xB8E3, 0x937B, -/* 1538 */ 0xDEF7, 0xDEFA, 0x937C, 0x937D, 0x937E, 0x9380, 0xDEF9, 0x9381, -/* 1540 */ 0x9382, 0x9383, 0xCCC2, 0x9384, 0xB0E1, 0xB4EE, 0xFFFD, 0xFFFD, -/* 1548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5BA, 0x938B, 0x938C, 0x938D, -/* 1550 */ 0x938E, 0x938F, 0xD0AF, 0x9390, 0x9391, 0xB2EB, 0x9392, 0xEBA1, -/* 1558 */ 0x9393, 0xDEF4, 0x9394, 0x9395, 0xC9E3, 0xDEF3, 0xB0DA, 0xD2A1, -/* 1560 */ 0xB1F7, 0x9396, 0xCCAF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1568 */ 0xFFFD, 0xFFFD, 0xDEF0, 0x939E, 0xCBA4, 0x939F, 0x93A0, 0x93A1, -/* 1570 */ 0xD5AA, 0x93A2, 0x93A3, 0x93A4, 0x93A5, 0x93A6, 0xDEFB, 0xFFFD, -/* 1578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4DD, -/* 1580 */ 0x93AF, 0xC4A6, 0x93B0, 0x93B1, 0x93B2, 0xDEFD, 0xFFFD, 0xFFFD, -/* 1588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1590 */ 0xC3FE, 0xC4A1, 0xDFA1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1598 */ 0xFFFD, 0xFFFD, 0xC1CC, 0x93C4, 0xDEFC, 0xBEEF, 0x93C5, 0xC6B2, -/* 15A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15A8 */ 0xFFFD, 0xB3C5, 0xC8F6, 0x93CF, 0x93D0, 0xCBBA, 0xDEFE, 0x93D1, -/* 15B0 */ 0x93D2, 0xDFA4, 0x93D3, 0x93D4, 0x93D5, 0x93D6, 0xD7B2, 0x93D7, -/* 15B8 */ 0x93D8, 0x93D9, 0x93DA, 0x93DB, 0xB3B7, 0x93DC, 0x93DD, 0x93DE, -/* 15C0 */ 0x93DF, 0xC1C3, 0x93E0, 0x93E1, 0xC7CB, 0xB2A5, 0xB4E9, 0x93E2, -/* 15C8 */ 0xD7AB, 0x93E3, 0x93E4, 0x93E5, 0x93E6, 0xC4EC, 0x93E7, 0xDFA2, -/* 15D0 */ 0xDFA3, 0x93E8, 0xDFA5, 0x93E9, 0xBAB3, 0x93EA, 0x93EB, 0x93EC, -/* 15D8 */ 0xDFA6, 0x93ED, 0xC0DE, 0x93EE, 0x93EF, 0xC9C3, 0xFFFD, 0xFFFD, -/* 15E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2D9, 0xC7E6, 0x93F7, -/* 15E8 */ 0xDFA7, 0x93F8, 0xC7DC, 0x93F9, 0x93FA, 0x93FB, 0x93FC, 0xDFA8, -/* 15F0 */ 0xEBA2, 0x93FD, 0x93FE, 0x9440, 0x9441, 0x9442, 0xCBD3, 0x9443, -/* 15F8 */ 0x9444, 0x9445, 0xDFAA, 0x9446, 0xDFA9, 0x9447, 0xB2C1, 0xC5CA, -/* 1600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1608 */ 0xDFAB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1610 */ 0xFFFD, 0xD4DC, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0xC8C1, -/* 1618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1620 */ 0xFFFD, 0x9480, 0x9481, 0x9482, 0xDFAC, 0x9483, 0x9484, 0x9485, -/* 1628 */ 0x9486, 0x9487, 0xBEF0, 0x9488, 0x9489, 0xDFAD, 0xD6A7, 0x948A, -/* 1630 */ 0x948B, 0x948C, 0x948D, 0xEAB7, 0xEBB6, 0xCAD5, 0x948E, 0xD8FC, -/* 1638 */ 0xB8C4, 0x948F, 0xB9A5, 0x9490, 0x9491, 0xB7C5, 0xD5FE, 0x9492, -/* 1640 */ 0x9493, 0x9494, 0x9495, 0x9496, 0xB9CA, 0x9497, 0x9498, 0xD0A7, -/* 1648 */ 0xF4CD, 0x9499, 0x949A, 0xB5D0, 0x949B, 0x949C, 0xC3F4, 0x949D, -/* 1650 */ 0xBEC8, 0x949E, 0x949F, 0x94A0, 0xEBB7, 0xB0BD, 0x94A1, 0x94A2, -/* 1658 */ 0xBDCC, 0x94A3, 0xC1B2, 0x94A4, 0xB1D6, 0xB3A8, 0x94A5, 0x94A6, -/* 1660 */ 0x94A7, 0xB8D2, 0xC9A2, 0x94A8, 0x94A9, 0xB6D8, 0x94AA, 0x94AB, -/* 1668 */ 0x94AC, 0x94AD, 0xEBB8, 0xBEB4, 0x94AE, 0x94AF, 0x94B0, 0xCAFD, -/* 1670 */ 0x94B1, 0xC7C3, 0x94B2, 0xD5FB, 0x94B3, 0x94B4, 0xB7F3, 0xCEC4, -/* 1678 */ 0x94C4, 0x94C5, 0x94C6, 0xD5AB, 0xB1F3, 0x94C7, 0x94C8, 0x94C9, -/* 1680 */ 0xECB3, 0xB0DF, 0x94CA, 0xECB5, 0x94CB, 0x94CC, 0x94CD, 0xB6B7, -/* 1688 */ 0x94CE, 0xC1CF, 0x94CF, 0xF5FA, 0xD0B1, 0x94D0, 0x94D1, 0xD5E5, -/* 1690 */ 0x94D2, 0xCED3, 0x94D3, 0x94D4, 0xBDEF, 0xB3E2, 0x94D5, 0xB8AB, -/* 1698 */ 0x94D6, 0xD5B6, 0x94D7, 0xEDBD, 0x94D8, 0xB6CF, 0x94D9, 0xCBB9, -/* 16A0 */ 0xD0C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16A8 */ 0xFFFD, 0xB7BD, 0x94E2, 0x94E3, 0xECB6, 0xCAA9, 0x94E4, 0x94E5, -/* 16B0 */ 0x94E6, 0xC5D4, 0x94E7, 0xECB9, 0xECB8, 0xC2C3, 0xECB7, 0x94E8, -/* 16B8 */ 0x94E9, 0x94EA, 0x94EB, 0xD0FD, 0xECBA, 0x94EC, 0xECBB, 0xD7E5, -/* 16C0 */ 0x94ED, 0x94EE, 0xECBC, 0x94EF, 0x94F0, 0x94F1, 0xECBD, 0xC6EC, -/* 16C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16D0 */ 0xCEDE, 0x94FA, 0xBCC8, 0x94FB, 0x94FC, 0xC8D5, 0xB5A9, 0xBEC9, -/* 16D8 */ 0xD6BC, 0xD4E7, 0x94FD, 0x94FE, 0xD1AE, 0xD0F1, 0xEAB8, 0xEAB9, -/* 16E0 */ 0xEABA, 0xBAB5, 0x9540, 0x9541, 0x9542, 0x9543, 0xCAB1, 0xBFF5, -/* 16E8 */ 0x9544, 0x9545, 0xCDFA, 0x9546, 0x9547, 0x9548, 0x9549, 0x954A, -/* 16F0 */ 0xEAC0, 0x954B, 0xB0BA, 0xEABE, 0x954C, 0x954D, 0xC0A5, 0x954E, -/* 16F8 */ 0x954F, 0x9550, 0xEABB, 0x9551, 0xB2FD, 0x9552, 0xC3F7, 0xBBE8, -/* 1700 */ 0x9553, 0x9554, 0x9555, 0xD2D7, 0xCEF4, 0xEABF, 0x9556, 0x9557, -/* 1708 */ 0x9558, 0xEABC, 0x9559, 0x955A, 0x955B, 0xEAC3, 0x955C, 0xD0C7, -/* 1710 */ 0xD3B3, 0x955D, 0x955E, 0x955F, 0x9560, 0xB4BA, 0x9561, 0xC3C1, -/* 1718 */ 0xD7F2, 0x9562, 0x9563, 0x9564, 0x9565, 0xD5D1, 0x9566, 0xCAC7, -/* 1720 */ 0x9567, 0xEAC5, 0x9568, 0x9569, 0xEAC4, 0xEAC7, 0xEAC6, 0x956A, -/* 1728 */ 0x956B, 0x956C, 0x956D, 0x956E, 0xD6E7, 0x956F, 0xCFD4, 0x9570, -/* 1730 */ 0x9571, 0xEACB, 0x9572, 0xBBCE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBDFA, 0xC9CE, 0x957A, 0x957B, 0xEACC, -/* 1740 */ 0x957C, 0x957D, 0xC9B9, 0xCFFE, 0xEACA, 0xD4CE, 0xEACD, 0xEACF, -/* 1748 */ 0x957E, 0x9580, 0xCDED, 0x9581, 0x9582, 0x9583, 0x9584, 0xEAC9, -/* 1750 */ 0x9585, 0xEACE, 0x9586, 0x9587, 0xCEEE, 0x9588, 0xBBDE, 0x9589, -/* 1758 */ 0xB3BF, 0x958A, 0x958B, 0x958C, 0x958D, 0x958E, 0xC6D5, 0xBEB0, -/* 1760 */ 0xCEFA, 0x958F, 0x9590, 0x9591, 0xC7E7, 0x9592, 0xBEA7, 0xEAD0, -/* 1768 */ 0x9593, 0x9594, 0xD6C7, 0x9595, 0x9596, 0x9597, 0xC1C0, 0x9598, -/* 1770 */ 0x9599, 0x959A, 0xD4DD, 0x959B, 0xEAD1, 0x959C, 0x959D, 0xCFBE, -/* 1778 */ 0x959E, 0x959F, 0x95A0, 0x95A1, 0xEAD2, 0x95A2, 0x95A3, 0x95A4, -/* 1780 */ 0x95A5, 0xCAEE, 0x95A6, 0x95A7, 0x95A8, 0x95A9, 0xC5AF, 0xB0B5, -/* 1788 */ 0x95AA, 0x95AB, 0x95AC, 0x95AD, 0x95AE, 0xEAD4, 0xFFFD, 0xFFFD, -/* 1790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAD3, -/* 1798 */ 0xF4DF, 0x95B8, 0x95B9, 0x95BA, 0x95BB, 0x95BC, 0xC4BA, 0x95BD, -/* 17A0 */ 0x95BE, 0x95BF, 0x95C0, 0x95C1, 0xB1A9, 0x95C2, 0x95C3, 0x95C4, -/* 17A8 */ 0x95C5, 0xE5DF, 0x95C6, 0x95C7, 0x95C8, 0x95C9, 0xEAD5, 0xCAEF, -/* 17B0 */ 0x95E4, 0xEAD6, 0xEAD7, 0xC6D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAD8, 0x95ED, 0x95EE, 0xEAD9, -/* 17C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4BB, 0x95F5, -/* 17C8 */ 0xC7FA, 0xD2B7, 0xB8FC, 0x95F6, 0x95F7, 0xEAC2, 0x95F8, 0xB2DC, -/* 17D0 */ 0x95F9, 0x95FA, 0xC2FC, 0x95FB, 0xD4F8, 0xCCE6, 0xD7EE, 0x95FC, -/* 17D8 */ 0x95FD, 0x95FE, 0x9640, 0x9641, 0x9642, 0x9643, 0xD4C2, 0xD3D0, -/* 17E0 */ 0xEBC3, 0xC5F3, 0x9644, 0xB7FE, 0x9645, 0x9646, 0xEBD4, 0x9647, -/* 17E8 */ 0x9648, 0x9649, 0xCBB7, 0xEBDE, 0x964A, 0xC0CA, 0x964B, 0x964C, -/* 17F0 */ 0x964D, 0xCDFB, 0x964E, 0xB3AF, 0x964F, 0xC6DA, 0xFFFD, 0xFFFD, -/* 17F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBFC, 0x9656, 0xC4BE, 0x9657, -/* 1800 */ 0xCEB4, 0xC4A9, 0xB1BE, 0xD4FD, 0x9658, 0xCAF5, 0x9659, 0xD6EC, -/* 1808 */ 0x965A, 0x965B, 0xC6D3, 0xB6E4, 0x965C, 0x965D, 0x965E, 0x965F, -/* 1810 */ 0xBBFA, 0x9660, 0x9661, 0xD0E0, 0x9662, 0x9663, 0xC9B1, 0x9664, -/* 1818 */ 0xD4D3, 0xC8A8, 0x9665, 0x9666, 0xB8CB, 0x9667, 0xE8BE, 0xC9BC, -/* 1820 */ 0x9668, 0x9669, 0xE8BB, 0x966A, 0xC0EE, 0xD0D3, 0xB2C4, 0xB4E5, -/* 1828 */ 0x966B, 0xE8BC, 0x966C, 0x966D, 0xD5C8, 0x966E, 0x966F, 0x9670, -/* 1830 */ 0x9671, 0x9672, 0xB6C5, 0x9673, 0xE8BD, 0xCAF8, 0xB8DC, 0xCCF5, -/* 1838 */ 0x9674, 0x9675, 0x9676, 0xC0B4, 0x9677, 0x9678, 0xD1EE, 0xE8BF, -/* 1840 */ 0xE8C2, 0x9679, 0x967A, 0xBABC, 0x967B, 0xB1AD, 0xBDDC, 0x967C, -/* 1848 */ 0xEABD, 0xE8C3, 0x967D, 0xE8C6, 0x967E, 0xE8CB, 0x9680, 0x9681, -/* 1850 */ 0x9682, 0x9683, 0xE8CC, 0x9684, 0xCBC9, 0xB0E5, 0x9685, 0xBCAB, -/* 1858 */ 0x9686, 0x9687, 0xB9B9, 0x9688, 0x9689, 0xE8C1, 0x968A, 0xCDF7, -/* 1860 */ 0x968B, 0xE8CA, 0x968C, 0x968D, 0x968E, 0x968F, 0xCEF6, 0x9690, -/* 1868 */ 0x9691, 0x9692, 0x9693, 0xD5ED, 0x9694, 0xC1D6, 0xE8C4, 0x9695, -/* 1870 */ 0xC3B6, 0x9696, 0xB9FB, 0xD6A6, 0xE8C8, 0x9697, 0x9698, 0x9699, -/* 1878 */ 0xCAE0, 0xD4E6, 0x969A, 0xE8C0, 0x969B, 0xE8C5, 0xE8C7, 0x969C, -/* 1880 */ 0xC7B9, 0xB7E3, 0x969D, 0xE8C9, 0x969E, 0xBFDD, 0xE8D2, 0x969F, -/* 1888 */ 0x96A0, 0xE8D7, 0x96A1, 0xE8D5, 0xBCDC, 0xBCCF, 0xE8DB, 0xFFFD, -/* 1890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8DE, -/* 1898 */ 0x96AA, 0xE8DA, 0xB1FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0D8, 0xC4B3, 0xB8CC, -/* 18A8 */ 0xC6E2, 0xC8BE, 0xC8E1, 0x96B5, 0x96B6, 0x96B7, 0xE8CF, 0xE8D4, -/* 18B0 */ 0xE8D6, 0x96B8, 0xB9F1, 0xE8D8, 0xD7F5, 0x96B9, 0xC4FB, 0x96BA, -/* 18B8 */ 0xE8DC, 0x96BB, 0x96BC, 0xB2E9, 0x96BD, 0x96BE, 0x96BF, 0xE8D1, -/* 18C0 */ 0x96C0, 0x96C1, 0xBCED, 0x96C2, 0x96C3, 0xBFC2, 0xE8CD, 0xD6F9, -/* 18C8 */ 0x96C4, 0xC1F8, 0xB2F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8DF, 0x96CD, 0xCAC1, 0xE8D9, 0x96CE, -/* 18D8 */ 0x96CF, 0x96D0, 0x96D1, 0xD5A4, 0x96D2, 0xB1EA, 0xD5BB, 0xE8CE, -/* 18E0 */ 0xE8D0, 0xB6B0, 0xE8D3, 0x96D3, 0xE8DD, 0xC0B8, 0x96D4, 0xCAF7, -/* 18E8 */ 0x96D5, 0xCBA8, 0x96D6, 0x96D7, 0xC6DC, 0xC0F5, 0x96D8, 0x96D9, -/* 18F0 */ 0x96DA, 0x96DB, 0x96DC, 0xE8E9, 0x96DD, 0x96DE, 0x96DF, 0xD0A3, -/* 18F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8F2, -/* 1900 */ 0xD6EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1908 */ 0xE8E0, 0xE8E1, 0x96EE, 0x96EF, 0x96F0, 0xD1F9, 0xBACB, 0xB8F9, -/* 1910 */ 0x96F1, 0x96F2, 0xB8F1, 0xD4D4, 0xE8EF, 0x96F3, 0xE8EE, 0xE8EC, -/* 1918 */ 0xB9F0, 0xCCD2, 0xE8E6, 0xCEA6, 0xBFF2, 0x96F4, 0xB0B8, 0xE8F1, -/* 1920 */ 0xE8F0, 0x96F5, 0xD7C0, 0x96F6, 0xE8E4, 0x96F7, 0xCDA9, 0xC9A3, -/* 1928 */ 0x96F8, 0xBBB8, 0xBDDB, 0xE8EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1930 */ 0xFFFD, 0xFFFD, 0x9740, 0x9741, 0x9742, 0x9743, 0xE8E2, 0xE8E3, -/* 1938 */ 0xE8E5, 0xB5B5, 0xE8E7, 0xC7C5, 0xE8EB, 0xE8ED, 0xBDB0, 0xD7AE, -/* 1940 */ 0x9744, 0xE8F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1948 */ 0xFFFD, 0xFFFD, 0xE8F5, 0x974D, 0xCDB0, 0xE8F6, 0xFFFD, 0xFFFD, -/* 1950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1BA, -/* 1958 */ 0x9757, 0xE8E8, 0x9758, 0xC3B7, 0xB0F0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8F4, 0x9761, 0x9762, -/* 1968 */ 0x9763, 0xE8F7, 0x9764, 0x9765, 0x9766, 0xB9A3, 0xFFFD, 0xFFFD, -/* 1970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1978 */ 0xC9D2, 0x9771, 0x9772, 0x9773, 0xC3CE, 0xCEE0, 0xC0E6, 0x9774, -/* 1980 */ 0x9775, 0x9776, 0x9777, 0xCBF3, 0x9778, 0xCCDD, 0xD0B5, 0x9779, -/* 1988 */ 0x977A, 0xCAE1, 0x977B, 0xE8F3, 0x977C, 0x977D, 0x977E, 0xFFFD, -/* 1990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCEC, 0x9787, -/* 1998 */ 0xE8F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3DE, -/* 19A0 */ 0x978E, 0xC6E5, 0x978F, 0xB9F7, 0x9790, 0x9791, 0x9792, 0x9793, -/* 19A8 */ 0xB0F4, 0x9794, 0x9795, 0xD7D8, 0x9796, 0x9797, 0xBCAC, 0x9798, -/* 19B0 */ 0xC5EF, 0x9799, 0x979A, 0x979B, 0x979C, 0x979D, 0xCCC4, 0x979E, -/* 19B8 */ 0x979F, 0xE9A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC9AD, 0x97AA, 0xE9A2, 0xC0E2, -/* 19C8 */ 0x97AB, 0x97AC, 0x97AD, 0xBFC3, 0x97AE, 0x97AF, 0x97B0, 0xE8FE, -/* 19D0 */ 0xB9D7, 0x97B1, 0xE8FB, 0x97B2, 0x97B3, 0x97B4, 0x97B5, 0xE9A4, -/* 19D8 */ 0x97B6, 0x97B7, 0x97B8, 0xD2CE, 0x97B9, 0x97BA, 0x97BB, 0x97BC, -/* 19E0 */ 0x97BD, 0xE9A3, 0x97BE, 0xD6B2, 0xD7B5, 0x97BF, 0xE9A7, 0x97C0, -/* 19E8 */ 0xBDB7, 0xE8FC, 0xE8FD, 0x97CD, 0x97CE, 0x97CF, 0xE9A1, 0xFFFD, -/* 19F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDD6, -/* 19F8 */ 0x97D8, 0x97D9, 0xD2AC, 0x97DA, 0x97DB, 0x97DC, 0xE9B2, 0x97DD, -/* 1A00 */ 0x97DE, 0x97DF, 0x97E0, 0xE9A9, 0x97E1, 0x97E2, 0x97E3, 0xB4AA, -/* 1A08 */ 0x97E4, 0xB4BB, 0x97E5, 0x97E6, 0xE9AB, 0xD0A8, 0x97F8, 0x97F9, -/* 1A10 */ 0xE9A5, 0x97FA, 0x97FB, 0xB3FE, 0x97FC, 0x97FD, 0xE9AC, 0xC0E3, -/* 1A18 */ 0x97FE, 0xE9AA, 0x9840, 0x9841, 0xE9B9, 0x9842, 0x9843, 0xE9B8, -/* 1A20 */ 0x9844, 0x9845, 0x9846, 0x9847, 0xE9AE, 0x9848, 0x9849, 0xE8FA, -/* 1A28 */ 0x984A, 0x984B, 0xE9A8, 0x984C, 0x984D, 0x984E, 0x984F, 0x9850, -/* 1A30 */ 0xBFAC, 0xE9B1, 0xE9BA, 0x9851, 0x9852, 0xC2A5, 0x9853, 0x9854, -/* 1A38 */ 0x9855, 0xE9AF, 0x9856, 0xB8C5, 0x9857, 0xE9AD, 0x9858, 0xD3DC, -/* 1A40 */ 0xE9B4, 0xE9B5, 0xE9B7, 0x9859, 0x985A, 0x985B, 0xE9C7, 0xFFFD, -/* 1A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0C6, 0xE9C5, 0x9862, -/* 1A50 */ 0x9863, 0xE9B0, 0x9864, 0x9865, 0xE9BB, 0xB0F1, 0xFFFD, 0xFFFD, -/* 1A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A60 */ 0xE9BC, 0xD5A5, 0x9870, 0x9871, 0xE9BE, 0x9872, 0xE9BF, 0x9873, -/* 1A68 */ 0x9874, 0x9875, 0xE9C1, 0x9876, 0x9877, 0xC1F1, 0x9878, 0x9879, -/* 1A70 */ 0xC8B6, 0x987A, 0x987B, 0x987C, 0xE9BD, 0x987D, 0x987E, 0x9880, -/* 1A78 */ 0x9881, 0x9882, 0xE9C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9C3, 0x988B, 0xE9B3, 0x988C, 0xE9B6, -/* 1A88 */ 0x988D, 0xBBB1, 0x988E, 0x988F, 0x9890, 0xE9C0, 0xFFFD, 0xFFFD, -/* 1A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCF7, 0x9897, 0x9898, 0x9899, -/* 1A98 */ 0xE9C4, 0xE9C6, 0xE9CA, 0x98A6, 0x98A7, 0x98A8, 0x98A9, 0xE9CE, -/* 1AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AA8 */ 0xFFFD, 0xFFFD, 0xB2DB, 0x98B4, 0xE9C8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7AE, -/* 1AB8 */ 0xE9CB, 0xE9CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC0 */ 0xD5C1, 0x98D1, 0xC4A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC8 */ 0xFFFD, 0xE9D8, 0x98D8, 0xBAE1, 0x98D9, 0x98DA, 0x98DB, 0x98DC, -/* 1AD0 */ 0xE9C9, 0x98DD, 0xD3A3, 0x98DE, 0x98DF, 0x98E0, 0xE9D4, 0xFFFD, -/* 1AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9D7, 0xE9D0, -/* 1AE0 */ 0x98E8, 0x98E9, 0x98EA, 0x98EB, 0x98EC, 0xE9CF, 0x98ED, 0x98EE, -/* 1AE8 */ 0xC7C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AF0 */ 0xFFFD, 0xE9D2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AF8 */ 0xFFFD, 0xE9D9, 0xB3C8, 0x98FE, 0xE9D3, 0x9940, 0x9941, 0x9942, -/* 1B00 */ 0x9943, 0x9944, 0xCFF0, 0x9945, 0x9946, 0x9947, 0xE9CD, 0xB3F7, -/* 1B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9D6, -/* 1B10 */ 0x995A, 0x995B, 0xE9DA, 0x995C, 0x995D, 0x995E, 0xCCB4, 0x995F, -/* 1B18 */ 0x9960, 0x9961, 0xCFAD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9D5, 0x996B, 0xE9DC, 0xE9DB, -/* 1B28 */ 0x996C, 0x996D, 0x996E, 0x996F, 0x9970, 0xE9DE, 0xFFFD, 0xFFFD, -/* 1B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9D1, 0xFFFD, -/* 1B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9980, 0x9981, 0xE9DD, -/* 1B40 */ 0x9982, 0xE9DF, 0xC3CA, 0xC7B7, 0xB4CE, 0xBBB6, 0xD0C0, 0xECA3, -/* 1B48 */ 0x99F6, 0x99F7, 0xC5B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B50 */ 0xFFFD, 0xFFFD, 0x9A40, 0x9A41, 0x9A42, 0xD3FB, 0x9A43, 0x9A44, -/* 1B58 */ 0x9A45, 0x9A46, 0xECA4, 0x9A47, 0xECA5, 0xC6DB, 0x9A48, 0x9A49, -/* 1B60 */ 0x9A4A, 0xBFEE, 0x9A4B, 0x9A4C, 0x9A4D, 0x9A4E, 0xECA6, 0x9A4F, -/* 1B68 */ 0x9A50, 0xECA7, 0xD0AA, 0x9A51, 0xC7B8, 0x9A52, 0x9A53, 0xB8E8, -/* 1B70 */ 0xECA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B78 */ 0xFFFD, 0xD6B9, 0xD5FD, 0xB4CB, 0xB2BD, 0xCEE4, 0xC6E7, 0x9A68, -/* 1B80 */ 0x9A69, 0xCDE1, 0xB4F5, 0x9A78, 0xCBC0, 0xBCDF, 0x9A79, 0x9A7A, -/* 1B88 */ 0x9A7B, 0x9A7C, 0xE9E2, 0xE9E3, 0xD1EA, 0xE9E5, 0x9A7D, 0xB4F9, -/* 1B90 */ 0xE9E4, 0x9A7E, 0xD1B3, 0xCAE2, 0xB2D0, 0x9A80, 0xE9E8, 0x9A81, -/* 1B98 */ 0x9A82, 0x9A83, 0x9A84, 0xE9E6, 0xE9E7, 0x9A85, 0x9A86, 0xD6B3, -/* 1BA0 */ 0x9A87, 0x9A88, 0x9A89, 0xE9E9, 0xE9EA, 0x9A8A, 0x9A8B, 0x9A8C, -/* 1BA8 */ 0x9A8D, 0x9A8E, 0xE9EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECAF, 0xC5B9, 0xB6CE, 0x9A9F, -/* 1BC0 */ 0xD2F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BC8 */ 0xB5EE, 0x9AA7, 0xBBD9, 0xECB1, 0x9AA8, 0x9AA9, 0xD2E3, 0x9AAA, -/* 1BD0 */ 0x9AAB, 0x9AAC, 0x9AAD, 0x9AAE, 0xCEE3, 0x9AAF, 0xC4B8, 0x9AB0, -/* 1BD8 */ 0xC3BF, 0x9AB1, 0x9AB2, 0xB6BE, 0xD8B9, 0xB1C8, 0xB1CF, 0xB1D1, -/* 1BE0 */ 0xC5FE, 0x9AB3, 0xB1D0, 0x9AB4, 0xC3AB, 0x9AB5, 0x9AB6, 0x9AB7, -/* 1BE8 */ 0x9AB8, 0x9AB9, 0xD5B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEBA4, 0xBAC1, 0x9AC2, 0x9AC3, 0x9AC4, -/* 1BF8 */ 0xCCBA, 0x9AC5, 0x9AC6, 0x9AC7, 0xEBA5, 0x9AC8, 0xEBA7, 0x9AC9, -/* 1C00 */ 0x9ACA, 0x9ACB, 0xEBA8, 0x9ACC, 0x9ACD, 0x9ACE, 0xEBA6, 0xFFFD, -/* 1C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBA9, 0xEBAB, -/* 1C10 */ 0xEBAA, 0x9AD6, 0x9AD7, 0x9AD8, 0x9AD9, 0x9ADA, 0xEBAC, 0x9ADB, -/* 1C18 */ 0xCACF, 0xD8B5, 0xC3F1, 0x9ADC, 0xC3A5, 0xC6F8, 0xEBAD, 0xC4CA, -/* 1C20 */ 0x9ADD, 0xEBAE, 0xEBAF, 0xEBB0, 0xB7D5, 0x9ADE, 0x9ADF, 0x9AE0, -/* 1C28 */ 0xB7FA, 0x9AE1, 0xEBB1, 0xC7E2, 0x9AE2, 0xEBB3, 0x9AE3, 0xBAA4, -/* 1C30 */ 0xD1F5, 0xB0B1, 0xEBB2, 0xEBB4, 0x9AE4, 0x9AE5, 0x9AE6, 0xB5AA, -/* 1C38 */ 0xC2C8, 0xC7E8, 0x9AE7, 0xEBB5, 0x9AE8, 0xCBAE, 0xE3DF, 0x9AE9, -/* 1C40 */ 0x9AEA, 0xD3C0, 0x9AEB, 0x9AEC, 0x9AED, 0x9AEE, 0xD9DB, 0x9AEF, -/* 1C48 */ 0x9AF0, 0xCDA1, 0xD6AD, 0xC7F3, 0x9AF1, 0x9AF2, 0x9AF3, 0xD9E0, -/* 1C50 */ 0xBBE3, 0x9AF4, 0xBABA, 0xE3E2, 0x9AF5, 0x9AF6, 0x9AF7, 0x9AF8, -/* 1C58 */ 0x9AF9, 0xCFAB, 0x9AFA, 0x9AFB, 0x9AFC, 0xE3E0, 0xC9C7, 0x9AFD, -/* 1C60 */ 0xBAB9, 0x9AFE, 0x9B40, 0x9B41, 0xD1B4, 0xE3E1, 0xC8EA, 0xB9AF, -/* 1C68 */ 0xBDAD, 0xB3D8, 0xCEDB, 0x9B42, 0x9B43, 0xCCC0, 0x9B44, 0x9B45, -/* 1C70 */ 0x9B46, 0xE3E8, 0xE3E9, 0xCDF4, 0x9B47, 0x9B48, 0x9B49, 0x9B4A, -/* 1C78 */ 0x9B4B, 0xCCAD, 0x9B4C, 0xBCB3, 0x9B4D, 0xE3EA, 0x9B4E, 0xE3EB, -/* 1C80 */ 0x9B4F, 0x9B50, 0xD0DA, 0x9B51, 0x9B52, 0x9B53, 0xC6FB, 0xB7DA, -/* 1C88 */ 0x9B54, 0x9B55, 0xC7DF, 0xD2CA, 0xCED6, 0x9B56, 0xE3E4, 0xE3EC, -/* 1C90 */ 0x9B57, 0xC9F2, 0xB3C1, 0x9B58, 0x9B59, 0xE3E7, 0x9B5A, 0x9B5B, -/* 1C98 */ 0xC6E3, 0xE3E5, 0x9B5C, 0x9B5D, 0xEDB3, 0xE3E6, 0x9B5E, 0x9B5F, -/* 1CA0 */ 0x9B60, 0x9B61, 0xC9B3, 0x9B62, 0xC5E6, 0x9B63, 0x9B64, 0x9B65, -/* 1CA8 */ 0xB9B5, 0x9B66, 0xC3BB, 0x9B67, 0xE3E3, 0xC5BD, 0xC1A4, 0xC2D9, -/* 1CB0 */ 0xB2D7, 0x9B68, 0xE3ED, 0xBBA6, 0xC4AD, 0x9B69, 0xE3F0, 0xBEDA, -/* 1CB8 */ 0x9B6A, 0x9B6B, 0xE3FB, 0xE3F5, 0xBAD3, 0x9B6C, 0x9B6D, 0x9B6E, -/* 1CC0 */ 0x9B6F, 0xB7D0, 0xD3CD, 0x9B70, 0xD6CE, 0xD5D3, 0xB9C1, 0xD5B4, -/* 1CC8 */ 0xD1D8, 0x9B71, 0x9B72, 0x9B73, 0x9B74, 0xD0B9, 0xC7F6, 0x9B75, -/* 1CD0 */ 0x9B76, 0x9B77, 0xC8AA, 0xB2B4, 0x9B78, 0xC3DA, 0x9B79, 0x9B7A, -/* 1CD8 */ 0x9B7B, 0xE3EE, 0x9B7C, 0x9B7D, 0xE3FC, 0xE3EF, 0xB7A8, 0xE3F7, -/* 1CE0 */ 0xE3F4, 0x9B7E, 0x9B80, 0x9B81, 0xB7BA, 0x9B82, 0x9B83, 0xC5A2, -/* 1CE8 */ 0x9B84, 0xE3F6, 0xC5DD, 0xB2A8, 0xC6FC, 0x9B85, 0xC4E0, 0x9B86, -/* 1CF0 */ 0x9B87, 0xD7A2, 0x9B88, 0xC0E1, 0xE3F9, 0x9B89, 0x9B8A, 0xE3FA, -/* 1CF8 */ 0xE3FD, 0xCCA9, 0xE3F3, 0x9B8B, 0xD3BE, 0x9B8C, 0xB1C3, 0xEDB4, -/* 1D00 */ 0xE3F1, 0xE3F2, 0x9B8D, 0xE3F8, 0xD0BA, 0xC6C3, 0xD4F3, 0xE3FE, -/* 1D08 */ 0x9B8E, 0x9B8F, 0xBDE0, 0x9B90, 0x9B91, 0xE4A7, 0x9B92, 0x9B93, -/* 1D10 */ 0xE4A6, 0x9B94, 0x9B95, 0x9B96, 0xD1F3, 0xE4A3, 0x9B97, 0xE4A9, -/* 1D18 */ 0x9B98, 0x9B99, 0x9B9A, 0xC8F7, 0x9B9B, 0x9B9C, 0x9B9D, 0x9B9E, -/* 1D20 */ 0xCFB4, 0x9B9F, 0xE4A8, 0xE4AE, 0xC2E5, 0x9BA0, 0x9BA1, 0xB6B4, -/* 1D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDF2, 0x9BA8, -/* 1D30 */ 0xE4A2, 0x9BA9, 0x9BAA, 0xBAE9, 0xE4AA, 0x9BAB, 0x9BAC, 0xE4AC, -/* 1D38 */ 0x9BAD, 0x9BAE, 0xB6FD, 0xD6DE, 0xE4B2, 0x9BAF, 0xE4AD, 0x9BB0, -/* 1D40 */ 0x9BB1, 0x9BB2, 0xE4A1, 0x9BB3, 0xBBEE, 0xCDDD, 0xC7A2, 0xC5C9, -/* 1D48 */ 0x9BB4, 0x9BB5, 0xC1F7, 0x9BB6, 0xE4A4, 0x9BB7, 0xC7B3, 0xBDAC, -/* 1D50 */ 0xBDBD, 0xE4A5, 0x9BB8, 0xD7C7, 0xB2E2, 0x9BB9, 0xE4AB, 0xBCC3, -/* 1D58 */ 0xE4AF, 0x9BBA, 0xBBEB, 0xE4B0, 0xC5A8, 0xE4B1, 0x9BBB, 0x9BBC, -/* 1D60 */ 0x9BBD, 0x9BBE, 0xD5E3, 0xBFA3, 0x9BBF, 0xE4BA, 0x9BC0, 0xE4B7, -/* 1D68 */ 0x9BC1, 0xE4BB, 0x9BC2, 0x9BC3, 0xE4BD, 0x9BC4, 0x9BC5, 0xC6D6, -/* 1D70 */ 0x9BC6, 0x9BC7, 0xBAC6, 0xC0CB, 0x9BC8, 0x9BC9, 0x9BCA, 0xB8A1, -/* 1D78 */ 0xE4B4, 0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0xD4A1, 0x9BCF, 0x9BD0, -/* 1D80 */ 0xBAA3, 0xBDFE, 0x9BD1, 0x9BD2, 0x9BD3, 0xE4BC, 0x9BD4, 0x9BD5, -/* 1D88 */ 0x9BD6, 0x9BD7, 0x9BD8, 0xCDBF, 0x9BD9, 0x9BDA, 0xC4F9, 0x9BDB, -/* 1D90 */ 0x9BDC, 0xCFFB, 0xC9E6, 0x9BDD, 0x9BDE, 0xD3BF, 0x9BDF, 0xCFD1, -/* 1D98 */ 0x9BE0, 0x9BE1, 0xE4B3, 0x9BE2, 0xE4B8, 0xE4B9, 0xCCE9, 0x9BE3, -/* 1DA0 */ 0x9BE4, 0x9BE5, 0x9BE6, 0x9BE7, 0xCCCE, 0x9BE8, 0xC0D4, 0xE4B5, -/* 1DA8 */ 0xC1B0, 0xE4B6, 0xCED0, 0x9BE9, 0xBBC1, 0xB5D3, 0x9BEA, 0xC8F3, -/* 1DB0 */ 0xBDA7, 0xD5C7, 0xC9AC, 0xB8A2, 0xE4CA, 0x9BEB, 0x9BEC, 0xE4CC, -/* 1DB8 */ 0xD1C4, 0x9BED, 0x9BEE, 0xD2BA, 0x9BEF, 0x9BF0, 0xBAAD, 0x9BF1, -/* 1DC0 */ 0x9BF2, 0xBAD4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DC8 */ 0xE4C3, 0xB5ED, 0x9BF9, 0x9BFA, 0x9BFB, 0xD7CD, 0xE4C0, 0xCFFD, -/* 1DD0 */ 0xE4BF, 0x9BFC, 0x9BFD, 0x9BFE, 0xC1DC, 0xCCCA, 0x9C40, 0x9C41, -/* 1DD8 */ 0x9C42, 0x9C43, 0xCAE7, 0x9C44, 0x9C45, 0x9C46, 0x9C47, 0xC4D7, -/* 1DE0 */ 0x9C48, 0xCCD4, 0xE4C8, 0x9C49, 0x9C4A, 0x9C4B, 0xE4C7, 0xE4C1, -/* 1DE8 */ 0x9C4C, 0xE4C4, 0xB5AD, 0x9C4D, 0x9C4E, 0xD3D9, 0x9C4F, 0xE4C6, -/* 1DF0 */ 0x9C50, 0x9C51, 0x9C52, 0x9C53, 0xD2F9, 0xB4E3, 0x9C54, 0xBBB4, -/* 1DF8 */ 0x9C55, 0x9C56, 0xC9EE, 0x9C57, 0xB4BE, 0x9C58, 0x9C59, 0x9C5A, -/* 1E00 */ 0xBBEC, 0x9C5B, 0xD1CD, 0x9C5C, 0xCCED, 0xEDB5, 0xFFFD, 0xFFFD, -/* 1E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7E5, 0x9C65, -/* 1E10 */ 0x9C66, 0x9C67, 0x9C68, 0xD4A8, 0x9C69, 0xE4CB, 0xD7D5, 0xE4C2, -/* 1E18 */ 0x9C6A, 0xBDA5, 0xE4C5, 0x9C6B, 0x9C6C, 0xD3E6, 0x9C6D, 0xE4C9, -/* 1E20 */ 0xC9F8, 0x9C6E, 0x9C6F, 0xE4BE, 0x9C70, 0x9C71, 0xD3E5, 0x9C72, -/* 1E28 */ 0x9C73, 0xC7FE, 0xB6C9, 0x9C74, 0xD4FC, 0xB2B3, 0xE4D7, 0x9C75, -/* 1E30 */ 0x9C76, 0x9C77, 0xCEC2, 0x9C78, 0xE4CD, 0x9C79, 0xCEBC, 0x9C7A, -/* 1E38 */ 0xB8DB, 0x9C7B, 0x9C7C, 0xE4D6, 0x9C7D, 0xBFCA, 0x9C7E, 0x9C80, -/* 1E40 */ 0x9C81, 0xD3CE, 0x9C82, 0xC3EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5C8, 0xE4D8, 0xFFFD, 0xFFFD, -/* 1E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDC4, 0xE4CF, -/* 1E58 */ 0x9C93, 0x9C94, 0x9C95, 0x9C96, 0xE4D4, 0xE4D5, 0x9C97, 0xBAFE, -/* 1E60 */ 0x9C98, 0xCFE6, 0x9C99, 0x9C9A, 0xD5BF, 0x9C9B, 0x9C9C, 0x9C9D, -/* 1E68 */ 0xE4D2, 0xE4D0, 0x9CA9, 0x9CAA, 0xE4CE, 0xCDE5, 0xCAAA, 0x9CBA, -/* 1E70 */ 0x9CBB, 0x9CBC, 0xC0A3, 0x9CBD, 0xBDA6, 0xE4D3, 0x9CBE, 0x9CBF, -/* 1E78 */ 0xB8C8, 0x9CC0, 0x9CC1, 0x9CC2, 0x9CC3, 0x9CC4, 0xE4E7, 0xD4B4, -/* 1E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4DB, -/* 1E88 */ 0x9CCC, 0x9CCD, 0x9CCE, 0xC1EF, 0x9CCF, 0x9CD0, 0xE4E9, 0x9CD1, -/* 1E90 */ 0x9CD2, 0xD2E7, 0x9CD3, 0x9CD4, 0xE4DF, 0x9CD5, 0xE4E0, 0x9CD6, -/* 1E98 */ 0x9CD7, 0xCFAA, 0x9CD8, 0x9CD9, 0x9CDA, 0x9CDB, 0xCBDD, 0x9CDC, -/* 1EA0 */ 0xE4DA, 0xE4D1, 0x9CDD, 0xE4E5, 0x9CDE, 0xC8DC, 0xE4E3, 0x9CDF, -/* 1EA8 */ 0x9CE0, 0xC4E7, 0xE4E2, 0x9CE1, 0xE4E1, 0x9CE2, 0x9CE3, 0x9CE4, -/* 1EB0 */ 0xB3FC, 0xE4E8, 0x9CE5, 0x9CE6, 0x9CE7, 0x9CE8, 0xB5E1, 0x9CE9, -/* 1EB8 */ 0x9CEA, 0x9CEB, 0xD7CC, 0x9CEC, 0x9CED, 0x9CEE, 0xE4E6, 0x9CEF, -/* 1EC0 */ 0xBBAC, 0x9CF0, 0xD7D2, 0xCCCF, 0xEBF8, 0x9CF1, 0xE4E4, 0x9CF2, -/* 1EC8 */ 0x9CF3, 0xB9F6, 0x9CF4, 0x9CF5, 0x9CF6, 0xD6CD, 0xE4D9, 0xE4DC, -/* 1ED0 */ 0xC2FA, 0xE4DE, 0x9CF7, 0xC2CB, 0xC0C4, 0xC2D0, 0x9CF8, 0xB1F5, -/* 1ED8 */ 0xCCB2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D40, -/* 1EE0 */ 0x9D41, 0x9D42, 0x9D43, 0xB5CE, 0x9D44, 0x9D45, 0x9D46, 0x9D47, -/* 1EE8 */ 0xE4EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EF0 */ 0xFFFD, 0xC6AF, 0x9D50, 0x9D51, 0x9D52, 0xC6E1, 0x9D53, 0x9D54, -/* 1EF8 */ 0xE4F5, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0xC2A9, 0x9D5A, -/* 1F00 */ 0x9D5B, 0x9D5C, 0xC0EC, 0xD1DD, 0xE4EE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4AE, -/* 1F10 */ 0x9D67, 0x9D68, 0x9D69, 0xE4ED, 0x9D6A, 0x9D6B, 0x9D6C, 0x9D6D, -/* 1F18 */ 0xE4F6, 0xE4F4, 0xC2FE, 0x9D6E, 0xE4DD, 0x9D6F, 0xE4F0, 0x9D70, -/* 1F20 */ 0xCAFE, 0x9D71, 0xD5C4, 0x9D72, 0x9D73, 0xE4F1, 0xFFFD, 0xFFFD, -/* 1F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1FA, 0x9D7B, 0x9D7C, -/* 1F30 */ 0x9D7D, 0x9D7E, 0x9D80, 0x9D81, 0x9D82, 0xE4EB, 0xE4EC, 0x9D83, -/* 1F38 */ 0x9D84, 0x9D85, 0xE4F2, 0x9D86, 0xCEAB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5CB, -/* 1F48 */ 0x9D91, 0x9D92, 0x9D93, 0xC7B1, 0x9D94, 0xC2BA, 0x9D95, 0x9D96, -/* 1F50 */ 0x9D97, 0xE4EA, 0x9D98, 0x9D99, 0x9D9A, 0xC1CA, 0xFFFD, 0xFFFD, -/* 1F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCB6, 0xB3B1, 0x9DA1, 0x9DA2, -/* 1F60 */ 0x9DA3, 0xE4FB, 0x9DA4, 0xE4F3, 0x9DA5, 0x9DA6, 0x9DA7, 0xE4FA, -/* 1F68 */ 0x9DA8, 0xE4FD, 0x9DA9, 0xE4FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB3CE, 0x9DB1, 0x9DB2, 0x9DB3, 0xB3BA, -/* 1F78 */ 0xE4F7, 0x9DB4, 0x9DB5, 0xE4F9, 0xE4F8, 0xC5EC, 0xC0BD, 0x9DC3, -/* 1F80 */ 0x9DC4, 0x9DC5, 0x9DC6, 0xD4E8, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, -/* 1F88 */ 0x9DCB, 0xE5A2, 0xB0C4, 0x9DD7, 0x9DD8, 0xE5A4, 0x9DD9, 0x9DDA, -/* 1F90 */ 0xE5A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCA4, -/* 1F98 */ 0x9DE1, 0xE5A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FA0 */ 0xE5A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FA8 */ 0xE4FE, 0xB1F4, 0xE5A8, 0x9DFA, 0xE5A9, 0xE5A6, 0x9DFB, 0x9DFC, -/* 1FB0 */ 0x9DFD, 0x9DFE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FB8 */ 0xFFFD, 0xFFFD, 0xE5A7, 0xE5AA, 0xC6D9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AB, 0xE5AD, 0xFFFD, -/* 1FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AC, 0xE5AF, -/* 1FD0 */ 0x9E8A, 0x9E8B, 0x9E8C, 0xE5AE, 0xB9E0, 0x9E9F, 0x9EA0, 0xE5B0, -/* 1FD8 */ 0xBBF0, 0xECE1, 0xC3F0, 0x9EBB, 0xB5C6, 0xBBD2, 0x9EBC, 0x9EBD, -/* 1FE0 */ 0x9EBE, 0x9EBF, 0xC1E9, 0xD4EE, 0x9EC0, 0xBEC4, 0x9EC1, 0x9EC2, -/* 1FE8 */ 0x9EC3, 0xD7C6, 0x9EC4, 0xD4D6, 0xB2D3, 0xECBE, 0x9EC5, 0x9EC6, -/* 1FF0 */ 0x9EC7, 0x9EC8, 0xEAC1, 0x9EC9, 0x9ECA, 0x9ECB, 0xC2AF, 0xB4B6, -/* 1FF8 */ 0x9ECC, 0x9ECD, 0x9ECE, 0xD1D7, 0x9ECF, 0x9ED0, 0x9ED1, 0xB3B4, -/* 2000 */ 0x9ED2, 0xC8B2, 0xBFBB, 0xECC0, 0x9ED3, 0x9ED4, 0xD6CB, 0x9ED5, -/* 2008 */ 0x9ED6, 0xECBF, 0xECC1, 0xECC5, 0xBEE6, 0xCCBF, 0xC5DA, 0xBEBC, -/* 2010 */ 0x9EE4, 0xECC6, 0x9EE5, 0xB1FE, 0x9EE6, 0x9EE7, 0x9EE8, 0xECC4, -/* 2018 */ 0xD5A8, 0xB5E3, 0x9EE9, 0xECC2, 0xC1B6, 0xB3E3, 0x9EEA, 0x9EEB, -/* 2020 */ 0xECC3, 0xCBB8, 0xC0C3, 0xCCFE, 0x9EEC, 0x9EED, 0x9EEE, 0x9EEF, -/* 2028 */ 0xC1D2, 0x9EF0, 0xECC8, 0xBAE6, 0xC0D3, 0x9EFE, 0xD6F2, 0x9F40, -/* 2030 */ 0x9F41, 0x9F42, 0xD1CC, 0x9F43, 0x9F44, 0x9F45, 0x9F46, 0xBFBE, -/* 2038 */ 0x9F47, 0xB7B3, 0xC9D5, 0xECC7, 0xBBE2, 0x9F48, 0xCCCC, 0xBDFD, -/* 2040 */ 0xC8C8, 0x9F49, 0xCFA9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2048 */ 0xFFFD, 0xFFFD, 0xCDE9, 0x9F51, 0xC5EB, 0x9F52, 0x9F53, 0x9F54, -/* 2050 */ 0xB7E9, 0xD1C9, 0xBAB8, 0x9F60, 0x9F61, 0x9F62, 0x9F63, 0x9F64, -/* 2058 */ 0xECC9, 0x9F65, 0x9F66, 0xECCA, 0x9F67, 0xBBC0, 0xECCB, 0x9F68, -/* 2060 */ 0xECE2, 0xB1BA, 0xB7D9, 0xBDB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECCC, 0xD1E6, 0xECCD, 0x9F7C, -/* 2070 */ 0x9F7D, 0x9F7E, 0x9F80, 0xC8BB, 0xECD1, 0x9F8F, 0x9F90, 0x9F91, -/* 2078 */ 0x9F92, 0xECD3, 0x9F93, 0xBBCD, 0x9F94, 0xBCE5, 0xECCF, 0x9FA2, -/* 2080 */ 0xC9B7, 0x9FA3, 0x9FA4, 0x9FA5, 0x9FA6, 0x9FA7, 0xC3BA, 0x9FA8, -/* 2088 */ 0xECE3, 0xD5D5, 0xECD0, 0x9FA9, 0x9FAA, 0x9FAB, 0x9FAC, 0x9FAD, -/* 2090 */ 0xD6F3, 0x9FAE, 0x9FAF, 0x9FB0, 0xECD2, 0xECCE, 0x9FB1, 0x9FB2, -/* 2098 */ 0x9FB3, 0x9FB4, 0xECD4, 0x9FB5, 0xECD5, 0x9FB6, 0x9FB7, 0xC9BF, -/* 20A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFA8, 0x9FBE, -/* 20A8 */ 0x9FBF, 0x9FC0, 0x9FC1, 0x9FC2, 0xD0DC, 0x9FC3, 0x9FC4, 0x9FC5, -/* 20B0 */ 0x9FC6, 0xD1AC, 0x9FC7, 0x9FC8, 0x9FC9, 0x9FCA, 0xC8DB, 0x9FCB, -/* 20B8 */ 0x9FCC, 0x9FCD, 0xECD6, 0xCEF5, 0x9FCE, 0x9FCF, 0x9FD0, 0x9FD1, -/* 20C0 */ 0x9FD2, 0xCAEC, 0xECDA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20C8 */ 0xFFFD, 0xFFFD, 0xECD9, 0x9FDA, 0x9FDB, 0x9FDC, 0xB0BE, 0xFFFD, -/* 20D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECD7, 0x9FE3, 0xECD8, -/* 20D8 */ 0x9FE4, 0x9FE5, 0x9FE6, 0xECE4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8BC, 0xFFFD, 0xFFFD, -/* 20E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20F0 */ 0xC1C7, 0x9FFA, 0x9FFB, 0x9FFC, 0x9FFD, 0x9FFE, 0xECDC, 0xD1E0, -/* 20F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2100 */ 0xFFFD, 0xFFFD, 0xECDB, 0xA04A, 0xA04B, 0xA04C, 0xA04D, 0xD4EF, -/* 2108 */ 0xA04E, 0xECDD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2110 */ 0xDBC6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xECDE, 0xA080, 0xA081, 0xECDF, 0xFFFD, -/* 2120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2128 */ 0xFFFD, 0xECE0, 0xA08C, 0xD7A6, 0xA08D, 0xC5C0, 0xA08E, 0xA08F, -/* 2130 */ 0xA090, 0xEBBC, 0xB0AE, 0xA091, 0xA092, 0xA093, 0xBEF4, 0xB8B8, -/* 2138 */ 0xD2AF, 0xB0D6, 0xB5F9, 0xA094, 0xD8B3, 0xA095, 0xCBAC, 0xA096, -/* 2140 */ 0xE3DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2148 */ 0xC6AC, 0xB0E6, 0xA09E, 0xA09F, 0xA0A0, 0xC5C6, 0xEBB9, 0xA0A1, -/* 2150 */ 0xA0A2, 0xA0A3, 0xA0A4, 0xEBBA, 0xA0A5, 0xA0A6, 0xA0A7, 0xEBBB, -/* 2158 */ 0xA0A8, 0xA0A9, 0xD1C0, 0xA0AA, 0xC5A3, 0xA0AB, 0xEAF2, 0xA0AC, -/* 2160 */ 0xC4B2, 0xA0AD, 0xC4B5, 0xC0CE, 0xA0AE, 0xA0AF, 0xA0B0, 0xEAF3, -/* 2168 */ 0xC4C1, 0xA0B1, 0xCEEF, 0xA0B2, 0xA0B3, 0xA0B4, 0xA0B5, 0xEAF0, -/* 2170 */ 0xEAF4, 0xA0B6, 0xA0B7, 0xC9FC, 0xA0B8, 0xA0B9, 0xC7A3, 0xA0BA, -/* 2178 */ 0xA0BB, 0xA0BC, 0xCCD8, 0xCEFE, 0xA0BD, 0xA0BE, 0xA0BF, 0xEAF5, -/* 2180 */ 0xEAF6, 0xCFAC, 0xC0E7, 0xA0C0, 0xA0C1, 0xEAF7, 0xA0C2, 0xA0C3, -/* 2188 */ 0xA0C4, 0xA0C5, 0xA0C6, 0xB6BF, 0xEAF8, 0xA0C7, 0xEAF9, 0xA0C8, -/* 2190 */ 0xEAFA, 0xA0C9, 0xA0CA, 0xEAFB, 0xC8AE, 0xE1EB, 0xA0E3, 0xB7B8, -/* 2198 */ 0xE1EC, 0xA0E4, 0xA0E5, 0xA0E6, 0xE1ED, 0xA0E7, 0xD7B4, 0xE1EE, -/* 21A0 */ 0xE1EF, 0xD3CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21A8 */ 0xFFFD, 0xE1F1, 0xBFF1, 0xE1F0, 0xB5D2, 0xA0EF, 0xA0F0, 0xA0F1, -/* 21B0 */ 0xB1B7, 0xA0F2, 0xA0F3, 0xA0F4, 0xA0F5, 0xE1F3, 0xE1F2, 0xA0F6, -/* 21B8 */ 0xBAFC, 0xA0F7, 0xE1F4, 0xA0F8, 0xA0F9, 0xA0FA, 0xA0FB, 0xB9B7, -/* 21C0 */ 0xA0FC, 0xBED1, 0xA0FD, 0xA0FE, 0xAA40, 0xAA41, 0xC4FC, 0xAA42, -/* 21C8 */ 0xBADD, 0xBDC6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21D0 */ 0xE1F5, 0xE1F7, 0xAA49, 0xAA4A, 0xB6C0, 0xCFC1, 0xCAA8, 0xE1F6, -/* 21D8 */ 0xD5F8, 0xD3FC, 0xE1F8, 0xE1FC, 0xE1F9, 0xAA4B, 0xAA4C, 0xE1FA, -/* 21E0 */ 0xC0EA, 0xAA4D, 0xE1FE, 0xE2A1, 0xC0C7, 0xAA4E, 0xAA4F, 0xAA50, -/* 21E8 */ 0xAA51, 0xE1FB, 0xAA52, 0xE1FD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F0 */ 0xFFFD, 0xFFFD, 0xE2A5, 0xAA59, 0xAA5A, 0xAA5B, 0xC1D4, 0xAA5C, -/* 21F8 */ 0xAA5D, 0xAA5E, 0xAA5F, 0xE2A3, 0xAA60, 0xE2A8, 0xB2FE, 0xE2A2, -/* 2200 */ 0xAA61, 0xAA62, 0xAA63, 0xC3CD, 0xB2C2, 0xE2A7, 0xE2A6, 0xAA64, -/* 2208 */ 0xAA65, 0xE2A4, 0xE2A9, 0xAA66, 0xAA67, 0xE2AB, 0xAA68, 0xAA69, -/* 2210 */ 0xAA6A, 0xD0C9, 0xD6ED, 0xC3A8, 0xE2AC, 0xAA6B, 0xCFD7, 0xAA6C, -/* 2218 */ 0xAA6D, 0xE2AE, 0xAA6E, 0xAA6F, 0xBAEF, 0xAA70, 0xAA71, 0xE9E0, -/* 2220 */ 0xE2AD, 0xE2AA, 0xAA72, 0xAA73, 0xAA74, 0xAA75, 0xBBAB, 0xD4B3, -/* 2228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2230 */ 0xFFFD, 0xAA80, 0xAA81, 0xAA82, 0xAA83, 0xE2B0, 0xAA84, 0xAA85, -/* 2238 */ 0xE2AF, 0xAA86, 0xE9E1, 0xAA87, 0xAA88, 0xAA89, 0xAA8A, 0xE2B1, -/* 2240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2248 */ 0xE2B2, 0xE2B3, 0xCCA1, 0xAA9E, 0xE2B4, 0xAA9F, 0xAAA0, 0xE2B5, -/* 2250 */ 0xAB4C, 0xAB4D, 0xAB4E, 0xAB4F, 0xAB50, 0xD0FE, 0xAB51, 0xAB52, -/* 2258 */ 0xC2CA, 0xAB53, 0xD3F1, 0xAB54, 0xCDF5, 0xAB55, 0xAB56, 0xE7E0, -/* 2260 */ 0xAB57, 0xAB58, 0xE7E1, 0xAB59, 0xAB5A, 0xAB5B, 0xAB5C, 0xBEC1, -/* 2268 */ 0xAB5D, 0xAB5E, 0xAB5F, 0xAB60, 0xC2EA, 0xAB61, 0xAB62, 0xAB63, -/* 2270 */ 0xE7E4, 0xAB64, 0xAB65, 0xE7E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2278 */ 0xFFFD, 0xFFFD, 0xCDE6, 0xAB6C, 0xC3B5, 0xAB6D, 0xAB6E, 0xE7E2, -/* 2280 */ 0xBBB7, 0xCFD6, 0xAB6F, 0xC1E1, 0xE7E9, 0xAB70, 0xAB71, 0xAB72, -/* 2288 */ 0xE7E8, 0xAB73, 0xAB74, 0xE7F4, 0xB2A3, 0xAB75, 0xAB76, 0xAB77, -/* 2290 */ 0xAB78, 0xE7EA, 0xAB79, 0xE7E6, 0xAB7A, 0xAB7B, 0xAB7C, 0xAB7D, -/* 2298 */ 0xAB7E, 0xE7EC, 0xE7EB, 0xC9BA, 0xAB80, 0xAB81, 0xD5E4, 0xAB82, -/* 22A0 */ 0xE7E5, 0xB7A9, 0xE7E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22A8 */ 0xFFFD, 0xFFFD, 0xE7EE, 0xAB8A, 0xAB8B, 0xAB8C, 0xAB8D, 0xE7F3, -/* 22B0 */ 0xAB8E, 0xD6E9, 0xAB8F, 0xAB90, 0xAB91, 0xAB92, 0xE7ED, 0xAB93, -/* 22B8 */ 0xE7F2, 0xAB94, 0xE7F1, 0xAB95, 0xAB96, 0xAB97, 0xB0E0, 0xAB98, -/* 22C0 */ 0xAB99, 0xAB9A, 0xAB9B, 0xE7F5, 0xAB9C, 0xAB9D, 0xAB9E, 0xAB9F, -/* 22C8 */ 0xABA0, 0xC7F2, 0xAC4B, 0xC0C5, 0xC0ED, 0xAC4C, 0xAC4D, 0xC1F0, -/* 22D0 */ 0xE7F0, 0xAC4E, 0xAC4F, 0xAC50, 0xAC51, 0xE7F6, 0xCBF6, 0xFFFD, -/* 22D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22E0 */ 0xE8A2, 0xE8A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22E8 */ 0xD7C1, 0xAC61, 0xAC62, 0xE7FA, 0xE7F9, 0xAC63, 0xE7FB, 0xAC64, -/* 22F0 */ 0xE7F7, 0xAC65, 0xE7FE, 0xAC66, 0xE7FD, 0xAC67, 0xE7FC, 0xAC68, -/* 22F8 */ 0xAC69, 0xC1D5, 0xC7D9, 0xC5FD, 0xC5C3, 0xAC6A, 0xAC6B, 0xAC6C, -/* 2300 */ 0xAC6D, 0xAC6E, 0xC7ED, 0xAC6F, 0xAC70, 0xAC71, 0xAC72, 0xE8A3, -/* 2308 */ 0xE8A6, 0xAC87, 0xE8A5, 0xAC88, 0xE8A7, 0xBAF7, 0xE7F8, 0xE8A4, -/* 2310 */ 0xAC89, 0xC8F0, 0xC9AA, 0xE8A9, 0xAC97, 0xAC98, 0xB9E5, 0xAC99, -/* 2318 */ 0xAC9A, 0xAC9B, 0xAC9C, 0xAC9D, 0xD1FE, 0xE8A8, 0xAC9E, 0xAC9F, -/* 2320 */ 0xACA0, 0xAD40, 0xAD41, 0xAD42, 0xE8AA, 0xAD43, 0xE8AD, 0xE8AE, -/* 2328 */ 0xAD44, 0xC1A7, 0xAD45, 0xAD46, 0xAD47, 0xE8AF, 0xAD48, 0xAD49, -/* 2330 */ 0xAD4A, 0xE8B0, 0xAD4B, 0xAD4C, 0xE8AC, 0xAD4D, 0xE8B4, 0xE8AB, -/* 2338 */ 0xAD59, 0xE8B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2340 */ 0xFFFD, 0xFFFD, 0xE8B5, 0xE8B2, 0xE8B3, 0xE8B6, 0xFFFD, 0xFFFD, -/* 2348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9CF, -/* 2350 */ 0xAD93, 0xF0AC, 0xAD94, 0xF0AD, 0xAD95, 0xC6B0, 0xB0EA, 0xC8BF, -/* 2358 */ 0xAD96, 0xCDDF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2360 */ 0xFFFD, 0xCECD, 0xEAB1, 0xAD9E, 0xAD9F, 0xADA0, 0xAE40, 0xEAB2, -/* 2368 */ 0xAE41, 0xC6BF, 0xB4C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2370 */ 0xFFFD, 0xFFFD, 0xEAB3, 0xAE49, 0xAE4A, 0xAE4B, 0xAE4C, 0xD5E7, -/* 2378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2380 */ 0xDDF9, 0xAE55, 0xEAB4, 0xAE56, 0xEAB5, 0xAE57, 0xEAB6, 0xAE58, -/* 2388 */ 0xAE59, 0xAE5A, 0xAE5B, 0xB8CA, 0xDFB0, 0xC9F5, 0xAE5C, 0xCCF0, -/* 2390 */ 0xAE5D, 0xAE5E, 0xC9FA, 0xAE5F, 0xAE60, 0xAE61, 0xAE62, 0xAE63, -/* 2398 */ 0xC9FB, 0xAE64, 0xAE65, 0xD3C3, 0xCBA6, 0xAE66, 0xB8A6, 0xF0AE, -/* 23A0 */ 0xB1C2, 0xAE67, 0xE5B8, 0xCCEF, 0xD3C9, 0xBCD7, 0xC9EA, 0xAE68, -/* 23A8 */ 0xB5E7, 0xAE69, 0xC4D0, 0xB5E9, 0xAE6A, 0xEEAE, 0xBBAD, 0xAE6B, -/* 23B0 */ 0xAE6C, 0xE7DE, 0xAE6D, 0xEEAF, 0xAE6E, 0xAE6F, 0xAE70, 0xAE71, -/* 23B8 */ 0xB3A9, 0xAE72, 0xAE73, 0xEEB2, 0xAE74, 0xAE75, 0xEEB1, 0xBDE7, -/* 23C0 */ 0xAE76, 0xEEB0, 0xCEB7, 0xAE77, 0xAE78, 0xAE79, 0xAE7A, 0xC5CF, -/* 23C8 */ 0xAE7B, 0xAE7C, 0xAE7D, 0xAE7E, 0xC1F4, 0xDBCE, 0xEEB3, 0xD0F3, -/* 23D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23D8 */ 0xC2D4, 0xC6E8, 0xAE88, 0xAE89, 0xAE8A, 0xB7AC, 0xFFFD, 0xFFFD, -/* 23E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEB4, 0xAE92, 0xB3EB, -/* 23E8 */ 0xAE93, 0xAE94, 0xAE95, 0xBBFB, 0xEEB5, 0xAE96, 0xAE97, 0xAE98, -/* 23F0 */ 0xAE99, 0xAE9A, 0xE7DC, 0xAE9B, 0xAE9C, 0xAE9D, 0xEEB6, 0xAE9E, -/* 23F8 */ 0xAE9F, 0xBDAE, 0xAEA0, 0xAF40, 0xAF41, 0xAF42, 0xF1E2, 0xAF43, -/* 2400 */ 0xAF44, 0xAF45, 0xCAE8, 0xAF46, 0xD2C9, 0xF0DA, 0xAF47, 0xF0DB, -/* 2408 */ 0xAF48, 0xF0DC, 0xC1C6, 0xAF49, 0xB8ED, 0xBECE, 0xAF4A, 0xAF4B, -/* 2410 */ 0xF0DE, 0xAF4C, 0xC5B1, 0xF0DD, 0xD1F1, 0xAF4D, 0xF0E0, 0xB0CC, -/* 2418 */ 0xBDEA, 0xAF4E, 0xAF4F, 0xAF50, 0xAF51, 0xAF52, 0xD2DF, 0xF0DF, -/* 2420 */ 0xAF53, 0xB4AF, 0xB7E8, 0xF0E6, 0xF0E5, 0xC6A3, 0xF0E1, 0xF0E2, -/* 2428 */ 0xB4C3, 0xAF54, 0xAF55, 0xF0E3, 0xD5EE, 0xAF56, 0xAF57, 0xCCDB, -/* 2430 */ 0xBED2, 0xBCB2, 0xAF58, 0xAF59, 0xAF5A, 0xF0E8, 0xF0E7, 0xF0E4, -/* 2438 */ 0xB2A1, 0xAF5B, 0xD6A2, 0xD3B8, 0xBEB7, 0xC8AC, 0xAF5C, 0xAF5D, -/* 2440 */ 0xF0EA, 0xAF5E, 0xAF5F, 0xAF60, 0xAF61, 0xD1F7, 0xAF62, 0xD6CC, -/* 2448 */ 0xBADB, 0xF0E9, 0xAF63, 0xB6BB, 0xAF64, 0xAF65, 0xCDB4, 0xAF66, -/* 2450 */ 0xAF67, 0xC6A6, 0xAF68, 0xAF69, 0xAF6A, 0xC1A1, 0xF0EB, 0xF0EE, -/* 2458 */ 0xAF6B, 0xF0ED, 0xF0F0, 0xF0EC, 0xAF6C, 0xBBBE, 0xF0EF, 0xAF6D, -/* 2460 */ 0xAF6E, 0xAF6F, 0xAF70, 0xCCB5, 0xF0F2, 0xAF71, 0xAF72, 0xB3D5, -/* 2468 */ 0xAF73, 0xAF74, 0xAF75, 0xAF76, 0xB1D4, 0xAF77, 0xAF78, 0xF0F3, -/* 2470 */ 0xAF79, 0xAF7A, 0xF0F4, 0xF0F6, 0xB4E1, 0xAF7B, 0xF0F1, 0xAF7C, -/* 2478 */ 0xF0F7, 0xAF7D, 0xAF7E, 0xAF80, 0xAF81, 0xF0FA, 0xAF82, 0xF0F8, -/* 2480 */ 0xAF83, 0xAF84, 0xAF85, 0xF0F5, 0xAF86, 0xAF87, 0xAF88, 0xAF89, -/* 2488 */ 0xF0FD, 0xAF8A, 0xF0F9, 0xF0FC, 0xF0FE, 0xAF8B, 0xF1A1, 0xAF8C, -/* 2490 */ 0xAF8D, 0xAF8E, 0xCEC1, 0xF1A4, 0xAF8F, 0xF1A3, 0xAF90, 0xC1F6, -/* 2498 */ 0xF0FB, 0xCADD, 0xAF91, 0xAF92, 0xB4F1, 0xB1F1, 0xCCB1, 0xAF93, -/* 24A0 */ 0xF1A6, 0xAF94, 0xAF95, 0xF1A7, 0xAF96, 0xAF97, 0xF1AC, 0xD5CE, -/* 24A8 */ 0xF1A9, 0xAF98, 0xAF99, 0xC8B3, 0xAF9A, 0xAF9B, 0xAF9C, 0xF1A2, -/* 24B0 */ 0xAF9D, 0xF1AB, 0xF1A8, 0xF1A5, 0xAF9E, 0xAF9F, 0xF1AA, 0xAFA0, -/* 24B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0A9, -/* 24C0 */ 0xF1AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1AF, -/* 24C8 */ 0xB04D, 0xF1B1, 0xB04E, 0xB04F, 0xB050, 0xB051, 0xB052, 0xF1B0, -/* 24D0 */ 0xB053, 0xF1AE, 0xB054, 0xB055, 0xB056, 0xB057, 0xD1A2, 0xFFFD, -/* 24D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1B2, 0xB05F, -/* 24E0 */ 0xB060, 0xB061, 0xF1B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB9EF, 0xB06A, 0xB06B, 0xB5C7, 0xB06C, -/* 24F0 */ 0xB0D7, 0xB0D9, 0xB06D, 0xB06E, 0xB06F, 0xD4ED, 0xB070, 0xB5C4, -/* 24F8 */ 0xB071, 0xBDD4, 0xBBCA, 0xF0A7, 0xB072, 0xB073, 0xB8DE, 0xB074, -/* 2500 */ 0xB075, 0xF0A8, 0xB076, 0xB077, 0xB0A8, 0xB078, 0xF0A9, 0xB079, -/* 2508 */ 0xB07A, 0xCDEE, 0xB07B, 0xB07C, 0xF0AA, 0xB07D, 0xB07E, 0xFFFD, -/* 2510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0AB, -/* 2518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2520 */ 0xFFFD, 0xC6A4, 0xB091, 0xB092, 0xD6E5, 0xF1E4, 0xB093, 0xF1E5, -/* 2528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2530 */ 0xFFFD, 0xFFFD, 0xC3F3, 0xB09E, 0xB09F, 0xD3DB, 0xB0A0, 0xB140, -/* 2538 */ 0xD6D1, 0xC5E8, 0xB141, 0xD3AF, 0xB142, 0xD2E6, 0xB143, 0xB144, -/* 2540 */ 0xEEC1, 0xB0BB, 0xD5B5, 0xD1CE, 0xBCE0, 0xBAD0, 0xB145, 0xBFF8, -/* 2548 */ 0xB146, 0xB8C7, 0xB5C1, 0xC5CC, 0xB147, 0xB148, 0xCAA2, 0xB149, -/* 2550 */ 0xB14A, 0xB14B, 0xC3CB, 0xB14C, 0xB14D, 0xB14E, 0xB14F, 0xB150, -/* 2558 */ 0xEEC2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2560 */ 0xFFFD, 0xC4BF, 0xB6A2, 0xB159, 0xEDEC, 0xC3A4, 0xB15A, 0xD6B1, -/* 2568 */ 0xB15B, 0xB15C, 0xB15D, 0xCFE0, 0xEDEF, 0xB15E, 0xB15F, 0xC5CE, -/* 2570 */ 0xB160, 0xB6DC, 0xB161, 0xB162, 0xCAA1, 0xB163, 0xB164, 0xEDED, -/* 2578 */ 0xB165, 0xB166, 0xEDF0, 0xEDF1, 0xC3BC, 0xB167, 0xBFB4, 0xB168, -/* 2580 */ 0xEDEE, 0xEDF4, 0xEDF2, 0xB174, 0xB175, 0xB176, 0xB177, 0xD5E6, -/* 2588 */ 0xC3DF, 0xB178, 0xEDF3, 0xB179, 0xB17A, 0xB17B, 0xEDF6, 0xB17C, -/* 2590 */ 0xD5A3, 0xD1A3, 0xB17D, 0xB17E, 0xB180, 0xEDF5, 0xB181, 0xC3D0, -/* 2598 */ 0xB182, 0xB183, 0xB184, 0xB185, 0xB186, 0xEDF7, 0xBFF4, 0xBEEC, -/* 25A0 */ 0xEDF8, 0xB187, 0xCCF7, 0xB188, 0xD1DB, 0xB189, 0xB18A, 0xB18B, -/* 25A8 */ 0xD7C5, 0xD5F6, 0xB18C, 0xEDFC, 0xB18D, 0xB18E, 0xB18F, 0xEDFB, -/* 25B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25B8 */ 0xEDF9, 0xEDFA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25C0 */ 0xFFFD, 0xFFFD, 0xEDFD, 0xBEA6, 0xB1A0, 0xB240, 0xB241, 0xB242, -/* 25C8 */ 0xB243, 0xCBAF, 0xEEA1, 0xB6BD, 0xB244, 0xEEA2, 0xC4C0, 0xB245, -/* 25D0 */ 0xEDFE, 0xB246, 0xB247, 0xBDDE, 0xB2C7, 0xB6C3, 0xB254, 0xB255, -/* 25D8 */ 0xB256, 0xEEA5, 0xD8BA, 0xEEA3, 0xEEA6, 0xB257, 0xB258, 0xB259, -/* 25E0 */ 0xC3E9, 0xB3F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25E8 */ 0xEEA7, 0xEEA4, 0xCFB9, 0xB260, 0xB261, 0xEEA8, 0xC2F7, 0xEEA9, -/* 25F0 */ 0xEEAA, 0xB26E, 0xDEAB, 0xB26F, 0xB270, 0xC6B3, 0xB271, 0xC7C6, -/* 25F8 */ 0xB272, 0xD6F5, 0xB5C9, 0xB273, 0xCBB2, 0xB274, 0xB275, 0xB276, -/* 2600 */ 0xEEAB, 0xB277, 0xB278, 0xCDAB, 0xB279, 0xEEAC, 0xB27A, 0xB27B, -/* 2608 */ 0xB27C, 0xB27D, 0xB27E, 0xD5B0, 0xB280, 0xEEAD, 0xB281, 0xF6C4, -/* 2610 */ 0xDBC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2618 */ 0xFFFD, 0xFFFD, 0xB4A3, 0xB298, 0xB299, 0xB29A, 0xC3AC, 0xF1E6, -/* 2620 */ 0xB29B, 0xB29C, 0xB29D, 0xB29E, 0xB29F, 0xCAB8, 0xD2D3, 0xB2A0, -/* 2628 */ 0xD6AA, 0xB340, 0xEFF2, 0xB341, 0xBED8, 0xB342, 0xBDC3, 0xEFF3, -/* 2630 */ 0xB6CC, 0xB0AB, 0xB343, 0xB344, 0xB345, 0xB346, 0xCAAF, 0xB347, -/* 2638 */ 0xB348, 0xEDB6, 0xB349, 0xEDB7, 0xB34A, 0xB34B, 0xB34C, 0xB34D, -/* 2640 */ 0xCEF9, 0xB7AF, 0xBFF3, 0xEDB8, 0xC2EB, 0xC9B0, 0xFFFD, 0xFFFD, -/* 2648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDB9, 0xB354, 0xB355, 0xC6F6, -/* 2650 */ 0xBFB3, 0xB356, 0xB357, 0xB358, 0xEDBC, 0xC5F8, 0xB359, 0xD1D0, -/* 2658 */ 0xB35A, 0xD7A9, 0xEDBA, 0xEDBB, 0xB35B, 0xD1E2, 0xB35C, 0xEDBF, -/* 2660 */ 0xEDC0, 0xB35D, 0xEDC4, 0xB35E, 0xB35F, 0xB360, 0xEDC8, 0xB361, -/* 2668 */ 0xEDC6, 0xEDCE, 0xD5E8, 0xB362, 0xEDC9, 0xB363, 0xB364, 0xEDC7, -/* 2670 */ 0xEDBE, 0xB365, 0xB366, 0xC5E9, 0xB367, 0xB368, 0xB369, 0xC6C6, -/* 2678 */ 0xB36A, 0xB36B, 0xC9E9, 0xD4D2, 0xEDC1, 0xEDC2, 0xEDC3, 0xEDC5, -/* 2680 */ 0xB36C, 0xC0F9, 0xB36D, 0xB4A1, 0xB36E, 0xB36F, 0xB370, 0xB371, -/* 2688 */ 0xB9E8, 0xB372, 0xEDD0, 0xB373, 0xB374, 0xB375, 0xB376, 0xEDD1, -/* 2690 */ 0xB377, 0xEDCA, 0xB378, 0xEDCF, 0xB379, 0xCEF8, 0xB37A, 0xB37B, -/* 2698 */ 0xCBB6, 0xEDCC, 0xEDCD, 0xB37C, 0xB37D, 0xB37E, 0xB380, 0xB381, -/* 26A0 */ 0xCFF5, 0xEDD2, 0xC1F2, 0xD3B2, 0xEDCB, 0xC8B7, 0xFFFD, 0xFFFD, -/* 26A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCEF, 0xB396, -/* 26B0 */ 0xB397, 0xB398, 0xB399, 0xC5F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB440, 0xB441, 0xB442, 0xEDD6, 0xB443, -/* 26C0 */ 0xB5EF, 0xB444, 0xB445, 0xC2B5, 0xB0AD, 0xCBE9, 0xB446, 0xB447, -/* 26C8 */ 0xB1AE, 0xB448, 0xEDD4, 0xB449, 0xB44A, 0xB44B, 0xCDEB, 0xB5E2, -/* 26D0 */ 0xB44C, 0xEDD5, 0xEDD3, 0xEDD7, 0xB44D, 0xB44E, 0xB5FA, 0xB44F, -/* 26D8 */ 0xEDD8, 0xB450, 0xEDD9, 0xB451, 0xEDDC, 0xB452, 0xB1CC, 0xFFFD, -/* 26E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5F6, -/* 26E8 */ 0xBCEE, 0xEDDA, 0xCCBC, 0xB2EA, 0xB45B, 0xB45C, 0xB45D, 0xB45E, -/* 26F0 */ 0xEDDB, 0xB45F, 0xB460, 0xB461, 0xB462, 0xC4EB, 0xB463, 0xB464, -/* 26F8 */ 0xB4C5, 0xB465, 0xB466, 0xB467, 0xB0F5, 0xB468, 0xB469, 0xB46A, -/* 2700 */ 0xEDDF, 0xC0DA, 0xB4E8, 0xB46B, 0xB46C, 0xB46D, 0xB46E, 0xC5CD, -/* 2708 */ 0xB46F, 0xB470, 0xB471, 0xEDDD, 0xBFC4, 0xB472, 0xB473, 0xB474, -/* 2710 */ 0xEDDE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB480, 0xB481, 0xB482, 0xB483, 0xC4A5, -/* 2720 */ 0xB484, 0xB485, 0xB486, 0xEDE0, 0xB487, 0xB488, 0xB489, 0xB48A, -/* 2728 */ 0xB48B, 0xEDE1, 0xB48C, 0xEDE3, 0xB48D, 0xB48E, 0xC1D7, 0xB48F, -/* 2730 */ 0xB490, 0xBBC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2738 */ 0xBDB8, 0xB497, 0xB498, 0xB499, 0xEDE2, 0xEDE4, 0xFFFD, 0xFFFD, -/* 2740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2748 */ 0xEDE6, 0xB550, 0xB551, 0xB552, 0xB553, 0xB554, 0xEDE5, 0xEDE7, -/* 2750 */ 0xB564, 0xB565, 0xB566, 0xB567, 0xB568, 0xCABE, 0xECEA, 0xC0F1, -/* 2758 */ 0xB569, 0xC9E7, 0xB56A, 0xECEB, 0xC6EE, 0xB56B, 0xB56C, 0xB56D, -/* 2760 */ 0xB56E, 0xECEC, 0xB56F, 0xC6ED, 0xECED, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECF0, 0xB579, -/* 2770 */ 0xB57A, 0xD7E6, 0xECF3, 0xB57B, 0xB57C, 0xECF1, 0xECEE, 0xECEF, -/* 2778 */ 0xD7A3, 0xC9F1, 0xCBEE, 0xECF4, 0xB57D, 0xECF2, 0xB57E, 0xB580, -/* 2780 */ 0xCFE9, 0xB581, 0xECF6, 0xC6B1, 0xB582, 0xB583, 0xB584, 0xB585, -/* 2788 */ 0xBCC0, 0xB586, 0xECF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2790 */ 0xFFFD, 0xFFFD, 0xB5BB, 0xBBF6, 0xB58E, 0xECF7, 0xB58F, 0xB590, -/* 2798 */ 0xB591, 0xB592, 0xB593, 0xD9F7, 0xBDFB, 0xB594, 0xB595, 0xC2BB, -/* 27A0 */ 0xECF8, 0xB596, 0xB597, 0xB598, 0xB599, 0xECF9, 0xB59A, 0xB59B, -/* 27A8 */ 0xB59C, 0xB59D, 0xB8A3, 0xB59E, 0xB59F, 0xB5A0, 0xFFFD, 0xFFFD, -/* 27B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECFA, 0xECFC, 0xB65E, -/* 27B8 */ 0xB65F, 0xB660, 0xB661, 0xB662, 0xD3ED, 0xD8AE, 0xC0EB, 0xB663, -/* 27C0 */ 0xC7DD, 0xBACC, 0xB664, 0xD0E3, 0xCBBD, 0xB665, 0xCDBA, 0xB666, -/* 27C8 */ 0xB667, 0xB8D1, 0xB668, 0xB669, 0xB1FC, 0xB66A, 0xC7EF, 0xB66B, -/* 27D0 */ 0xD6D6, 0xB66C, 0xB66D, 0xB66E, 0xBFC6, 0xC3EB, 0xB66F, 0xB670, -/* 27D8 */ 0xEFF5, 0xB671, 0xB672, 0xC3D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27E0 */ 0xFFFD, 0xFFFD, 0xD7E2, 0xB679, 0xB67A, 0xB67B, 0xEFF7, 0xB3D3, -/* 27E8 */ 0xB67C, 0xC7D8, 0xD1ED, 0xB67D, 0xD6C8, 0xB67E, 0xEFF8, 0xB680, -/* 27F0 */ 0xEFF6, 0xB681, 0xBBFD, 0xB3C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBDD5, 0xB689, 0xB68A, 0xD2C6, 0xB68B, -/* 2800 */ 0xBBE0, 0xB68C, 0xB68D, 0xCFA1, 0xB68E, 0xEFFC, 0xEFFB, 0xB68F, -/* 2808 */ 0xB690, 0xEFF9, 0xB691, 0xB692, 0xB693, 0xB694, 0xB3CC, 0xB695, -/* 2810 */ 0xC9D4, 0xCBB0, 0xB696, 0xB697, 0xB698, 0xB699, 0xB69A, 0xEFFE, -/* 2818 */ 0xB69B, 0xB69C, 0xB0DE, 0xB69D, 0xB69E, 0xD6C9, 0xB69F, 0xB6A0, -/* 2820 */ 0xB740, 0xEFFD, 0xB741, 0xB3ED, 0xB742, 0xB743, 0xF6D5, 0xCEC8, -/* 2828 */ 0xB753, 0xB754, 0xB755, 0xF0A2, 0xB756, 0xF0A1, 0xB757, 0xB5BE, -/* 2830 */ 0xBCDA, 0xBBFC, 0xB758, 0xB8E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2838 */ 0xFFFD, 0xFFFD, 0xC4C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0A3, 0xB769, 0xB76A, -/* 2848 */ 0xB76B, 0xB76C, 0xB76D, 0xCBEB, 0xF0A6, 0xB787, 0xB788, 0xB789, -/* 2850 */ 0xD1A8, 0xB78A, 0xBEBF, 0xC7EE, 0xF1B6, 0xF1B7, 0xBFD5, 0xB78B, -/* 2858 */ 0xB78C, 0xB78D, 0xB78E, 0xB4A9, 0xF1B8, 0xCDBB, 0xB78F, 0xC7D4, -/* 2860 */ 0xD5AD, 0xB790, 0xF1B9, 0xB791, 0xF1BA, 0xB792, 0xB793, 0xB794, -/* 2868 */ 0xB795, 0xC7CF, 0xB796, 0xB797, 0xB798, 0xD2A4, 0xD6CF, 0xB799, -/* 2870 */ 0xB79A, 0xF1BB, 0xBDD1, 0xB4B0, 0xBEBD, 0xB79B, 0xB79C, 0xB79D, -/* 2878 */ 0xB4DC, 0xCED1, 0xB79E, 0xBFDF, 0xF1BD, 0xB79F, 0xB7A0, 0xB840, -/* 2880 */ 0xB841, 0xBFFA, 0xF1BC, 0xB842, 0xF1BF, 0xB843, 0xB844, 0xB845, -/* 2888 */ 0xF1BE, 0xF1C0, 0xB846, 0xB847, 0xB848, 0xB849, 0xB84A, 0xF1C1, -/* 2890 */ 0xC1A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCAFA, 0xB86B, 0xB86C, 0xD5BE, 0xB86D, -/* 28A0 */ 0xB86E, 0xB86F, 0xB870, 0xBEBA, 0xBEB9, 0xD5C2, 0xB871, 0xB872, -/* 28A8 */ 0xBFA2, 0xB873, 0xCDAF, 0xF1B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28B0 */ 0xFFFD, 0xFFFD, 0xBDDF, 0xB87A, 0xB6CB, 0xB87B, 0xB87C, 0xB87D, -/* 28B8 */ 0xB87E, 0xB880, 0xB881, 0xB882, 0xB883, 0xB884, 0xD6F1, 0xF3C3, -/* 28C0 */ 0xB885, 0xB886, 0xF3C4, 0xB887, 0xB8CD, 0xB888, 0xB889, 0xB88A, -/* 28C8 */ 0xF3C6, 0xF3C7, 0xB88B, 0xB0CA, 0xB88C, 0xF3C5, 0xB88D, 0xF3C9, -/* 28D0 */ 0xCBF1, 0xB88E, 0xB88F, 0xB890, 0xF3CB, 0xB891, 0xD0A6, 0xB892, -/* 28D8 */ 0xB893, 0xB1CA, 0xF3C8, 0xB894, 0xB895, 0xB896, 0xF3CF, 0xB897, -/* 28E0 */ 0xB5D1, 0xB898, 0xB899, 0xF3D7, 0xB89A, 0xF3D2, 0xB89B, 0xB89C, -/* 28E8 */ 0xB89D, 0xF3D4, 0xF3D3, 0xB7FB, 0xB89E, 0xB1BF, 0xB89F, 0xF3CE, -/* 28F0 */ 0xF3CA, 0xB5DA, 0xB8A0, 0xF3D0, 0xB940, 0xB941, 0xF3D1, 0xB942, -/* 28F8 */ 0xF3D5, 0xB943, 0xB944, 0xB945, 0xB946, 0xF3CD, 0xB947, 0xBCE3, -/* 2900 */ 0xB948, 0xC1FD, 0xB949, 0xF3D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2908 */ 0xFFFD, 0xFFFD, 0xF3DA, 0xB950, 0xF3CC, 0xB951, 0xB5C8, 0xB952, -/* 2910 */ 0xBDEE, 0xF3DC, 0xB953, 0xB954, 0xB7A4, 0xBFF0, 0xD6FE, 0xCDB2, -/* 2918 */ 0xB955, 0xB4F0, 0xB956, 0xB2DF, 0xB957, 0xF3D8, 0xB958, 0xF3D9, -/* 2920 */ 0xC9B8, 0xB959, 0xF3DD, 0xB95A, 0xB95B, 0xF3DE, 0xB95C, 0xF3E1, -/* 2928 */ 0xF3DF, 0xB968, 0xB969, 0xF3E3, 0xF3E2, 0xB96A, 0xB96B, 0xF3DB, -/* 2930 */ 0xB96C, 0xBFEA, 0xB96D, 0xB3EF, 0xB96E, 0xF3E0, 0xB96F, 0xB970, -/* 2938 */ 0xC7A9, 0xB971, 0xBCF2, 0xB972, 0xB973, 0xB974, 0xB975, 0xF3EB, -/* 2940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9BF, -/* 2948 */ 0xB97D, 0xB97E, 0xF3E4, 0xB980, 0xB981, 0xB982, 0xB2AD, 0xBBFE, -/* 2950 */ 0xB983, 0xCBE3, 0xB984, 0xB985, 0xB986, 0xB987, 0xF3ED, 0xF3E9, -/* 2958 */ 0xB988, 0xB989, 0xB98A, 0xB9DC, 0xF3EE, 0xB98B, 0xB98C, 0xB98D, -/* 2960 */ 0xF3E5, 0xF3E6, 0xF3EA, 0xC2E1, 0xF3EC, 0xF3EF, 0xF3E8, 0xBCFD, -/* 2968 */ 0xB98E, 0xB98F, 0xB990, 0xCFE4, 0xB991, 0xB992, 0xF3F0, 0xB993, -/* 2970 */ 0xB994, 0xB995, 0xF3E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF3F2, 0xB99E, 0xB99F, 0xB9A0, 0xBA40, -/* 2980 */ 0xD7AD, 0xC6AA, 0xBA41, 0xBA42, 0xBA43, 0xBA44, 0xF3F3, 0xBA45, -/* 2988 */ 0xBA46, 0xBA47, 0xBA48, 0xF3F1, 0xBA49, 0xC2A8, 0xBA4A, 0xBA4B, -/* 2990 */ 0xBA4C, 0xBA4D, 0xBA4E, 0xB8DD, 0xF3F5, 0xBA4F, 0xBA50, 0xF3F4, -/* 2998 */ 0xBA51, 0xBA52, 0xBA53, 0xB4DB, 0xBA54, 0xBA55, 0xBA56, 0xF3F6, -/* 29A0 */ 0xF3F7, 0xBA57, 0xBA58, 0xBA59, 0xF3F8, 0xBA5A, 0xBA5B, 0xBA5C, -/* 29A8 */ 0xC0BA, 0xBA5D, 0xBA5E, 0xC0E9, 0xBA5F, 0xBA60, 0xBA61, 0xBA62, -/* 29B0 */ 0xBA63, 0xC5F1, 0xBA64, 0xBA65, 0xBA66, 0xBA67, 0xF3FB, 0xBA68, -/* 29B8 */ 0xF3FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29C0 */ 0xFFFD, 0xB4D8, 0xBA71, 0xBA72, 0xBA73, 0xF3FE, 0xF3F9, 0xBA74, -/* 29C8 */ 0xBA75, 0xF3FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29D0 */ 0xF3FD, 0xBA7C, 0xBA7D, 0xBA7E, 0xBA80, 0xBA81, 0xBA82, 0xBA83, -/* 29D8 */ 0xBA84, 0xF4A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29E0 */ 0xF4A3, 0xBBC9, 0xBA8B, 0xBA8C, 0xF4A2, 0xF4A4, 0xFFFD, 0xFFFD, -/* 29E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2BE, 0xF4A6, 0xF4A5, 0xBAA0, -/* 29F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29F8 */ 0xFFFD, 0xFFFD, 0xBCAE, 0xC3D7, 0xD9E1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC0E0, 0xF4CC, 0xD7D1, 0xFFFD, 0xFFFD, -/* 2A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A10 */ 0xBB80, 0xB7DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A18 */ 0xFFFD, 0xF4CE, 0xC1A3, 0xBB88, 0xBB89, 0xC6C9, 0xBB8A, 0xB4D6, -/* 2A20 */ 0xD5B3, 0xBB8B, 0xBB8C, 0xBB8D, 0xF4D0, 0xF4CF, 0xF4D1, 0xCBDA, -/* 2A28 */ 0xBB8E, 0xBB8F, 0xF4D2, 0xBB90, 0xD4C1, 0xD6E0, 0xBB91, 0xBB92, -/* 2A30 */ 0xBB93, 0xBB94, 0xB7E0, 0xBB95, 0xBB96, 0xBB97, 0xC1B8, 0xBB98, -/* 2A38 */ 0xBB99, 0xC1BB, 0xF4D3, 0xBEAC, 0xBB9A, 0xBB9B, 0xBB9C, 0xBB9D, -/* 2A40 */ 0xBB9E, 0xB4E2, 0xBB9F, 0xBBA0, 0xF4D4, 0xF4D5, 0xBEAB, 0xBC40, -/* 2A48 */ 0xBC41, 0xF4D6, 0xBC42, 0xBC43, 0xBC44, 0xF4DB, 0xBC45, 0xF4D7, -/* 2A50 */ 0xF4DA, 0xBC46, 0xBAFD, 0xBC47, 0xF4D8, 0xF4D9, 0xFFFD, 0xFFFD, -/* 2A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8E2, 0xCCC7, 0xF4DC, -/* 2A60 */ 0xBC4F, 0xB2DA, 0xBC50, 0xBC51, 0xC3D3, 0xBC52, 0xBC53, 0xD4E3, -/* 2A68 */ 0xBFB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A70 */ 0xF4DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5B4, -/* 2A78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A80 */ 0xF4E9, 0xBC69, 0xBC6A, 0xCFB5, 0xCBD8, 0xBC8F, 0xCBF7, 0xBC90, -/* 2A88 */ 0xBC91, 0xBC92, 0xBC93, 0xBDF4, 0xBC94, 0xBC95, 0xBC96, 0xD7CF, -/* 2A90 */ 0xBC97, 0xBC98, 0xBC99, 0xC0DB, 0xD0F5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4EA, 0xF4EB, 0xFFFD, -/* 2AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4EC, 0xBF80, -/* 2AA8 */ 0xF7E3, 0xBF81, 0xBF82, 0xBF83, 0xBF84, 0xBF85, 0xB7B1, 0xBF86, -/* 2AB0 */ 0xBF87, 0xBF88, 0xBF89, 0xBF8A, 0xF4ED, 0xF4EE, 0xC07C, 0xC07D, -/* 2AB8 */ 0xC07E, 0xE6F9, 0xBEC0, 0xE6FA, 0xBAEC, 0xE6FB, 0xCFCB, 0xE6FC, -/* 2AC0 */ 0xD4BC, 0xBCB6, 0xE6FD, 0xE6FE, 0xBCCD, 0xC8D2, 0xCEB3, 0xE7A1, -/* 2AC8 */ 0xC080, 0xB4BF, 0xE7A2, 0xC9B4, 0xB8D9, 0xC4C9, 0xC081, 0xD7DD, -/* 2AD0 */ 0xC2DA, 0xB7D7, 0xD6BD, 0xCEC6, 0xB7C4, 0xC082, 0xC083, 0xC5A6, -/* 2AD8 */ 0xE7A3, 0xCFDF, 0xE7A4, 0xE7A5, 0xE7A6, 0xC1B7, 0xD7E9, 0xC9F0, -/* 2AE0 */ 0xCFB8, 0xD6AF, 0xD6D5, 0xE7A7, 0xB0ED, 0xE7A8, 0xE7A9, 0xC9DC, -/* 2AE8 */ 0xD2EF, 0xBEAD, 0xE7AA, 0xB0F3, 0xC8DE, 0xBDE1, 0xE7AB, 0xC8C6, -/* 2AF0 */ 0xC084, 0xE7AC, 0xBBE6, 0xB8F8, 0xD1A4, 0xE7AD, 0xC2E7, 0xBEF8, -/* 2AF8 */ 0xBDCA, 0xCDB3, 0xE7AE, 0xE7AF, 0xBEEE, 0xD0E5, 0xC085, 0xCBE7, -/* 2B00 */ 0xCCD0, 0xBCCC, 0xE7B0, 0xBCA8, 0xD0F7, 0xE7B1, 0xC086, 0xD0F8, -/* 2B08 */ 0xE7B2, 0xE7B3, 0xB4C2, 0xE7B4, 0xE7B5, 0xC9FE, 0xCEAC, 0xC3E0, -/* 2B10 */ 0xE7B7, 0xB1C1, 0xB3F1, 0xC087, 0xE7B8, 0xE7B9, 0xD7DB, 0xD5C0, -/* 2B18 */ 0xE7BA, 0xC2CC, 0xD7BA, 0xE7BB, 0xE7BC, 0xE7BD, 0xBCEA, 0xC3E5, -/* 2B20 */ 0xC0C2, 0xE7BE, 0xE7BF, 0xBCA9, 0xC088, 0xE7C0, 0xE7C1, 0xE7B6, -/* 2B28 */ 0xB6D0, 0xE7C2, 0xC089, 0xE7C3, 0xE7C4, 0xBBBA, 0xB5DE, 0xC2C6, -/* 2B30 */ 0xB1E0, 0xE7C5, 0xD4B5, 0xE7C6, 0xB8BF, 0xE7C8, 0xE7C7, 0xB7EC, -/* 2B38 */ 0xC08A, 0xE7C9, 0xB2F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B40 */ 0xFFFD, 0xFFFD, 0xD3A7, 0xCBF5, 0xE7D1, 0xE7D2, 0xE7D3, 0xE7D4, -/* 2B48 */ 0xC9C9, 0xE7D5, 0xE7D6, 0xE7D7, 0xE7D8, 0xE7D9, 0xBDC9, 0xE7DA, -/* 2B50 */ 0xF3BE, 0xC08B, 0xB8D7, 0xC08C, 0xC8B1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3BF, 0xC094, 0xF3C0, 0xF3C1, -/* 2B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B68 */ 0xFFFD, 0xFFFD, 0xB9DE, 0xCDF8, 0xC09F, 0xC0A0, 0xD8E8, 0xBAB1, -/* 2B70 */ 0xC140, 0xC2DE, 0xEEB7, 0xC141, 0xB7A3, 0xC142, 0xC143, 0xC144, -/* 2B78 */ 0xC145, 0xEEB9, 0xC146, 0xEEB8, 0xB0D5, 0xC147, 0xC148, 0xC149, -/* 2B80 */ 0xC14A, 0xC14B, 0xEEBB, 0xD5D6, 0xD7EF, 0xC14C, 0xC14D, 0xC14E, -/* 2B88 */ 0xD6C3, 0xC14F, 0xC150, 0xEEBD, 0xCAF0, 0xC151, 0xEEBC, 0xC152, -/* 2B90 */ 0xC153, 0xC154, 0xC155, 0xEEBE, 0xC156, 0xC157, 0xC158, 0xC159, -/* 2B98 */ 0xEEC0, 0xC15A, 0xC15B, 0xEEBF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1F2, 0xC164, 0xC7BC, 0xC165, -/* 2BA8 */ 0xC3C0, 0xC166, 0xC167, 0xC168, 0xC169, 0xC16A, 0xB8E1, 0xC16B, -/* 2BB0 */ 0xC16C, 0xC16D, 0xC16E, 0xC16F, 0xC1E7, 0xC170, 0xC171, 0xF4C6, -/* 2BB8 */ 0xD0DF, 0xF4C7, 0xC172, 0xCFDB, 0xC173, 0xC174, 0xC8BA, 0xC175, -/* 2BC0 */ 0xC176, 0xF4C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BC8 */ 0xFFFD, 0xF4C9, 0xF4CA, 0xC17E, 0xF4CB, 0xC180, 0xC181, 0xC182, -/* 2BD0 */ 0xC183, 0xC184, 0xD9FA, 0xB8FE, 0xC185, 0xC186, 0xE5F1, 0xD3F0, -/* 2BD8 */ 0xC187, 0xF4E0, 0xC188, 0xCECC, 0xC189, 0xC18A, 0xC18B, 0xB3E1, -/* 2BE0 */ 0xC18C, 0xC18D, 0xC18E, 0xC18F, 0xF1B4, 0xC190, 0xD2EE, 0xC191, -/* 2BE8 */ 0xF4E1, 0xC192, 0xC193, 0xC194, 0xC195, 0xC196, 0xCFE8, 0xF4E2, -/* 2BF0 */ 0xC197, 0xC198, 0xC7CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BF8 */ 0xFFFD, 0xB5D4, 0xB4E4, 0xF4E4, 0xC19F, 0xC1A0, 0xC240, 0xF4E3, -/* 2C00 */ 0xF4E5, 0xC241, 0xC242, 0xF4E6, 0xC243, 0xC244, 0xC245, 0xC246, -/* 2C08 */ 0xF4E7, 0xC247, 0xBAB2, 0xB0BF, 0xC248, 0xF4E8, 0xFFFD, 0xFFFD, -/* 2C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7AD, 0xD2ED, 0xC250, -/* 2C18 */ 0xC251, 0xC252, 0xD2AB, 0xC0CF, 0xC253, 0xBFBC, 0xEBA3, 0xD5DF, -/* 2C20 */ 0xEAC8, 0xC254, 0xC255, 0xC256, 0xC257, 0xF1F3, 0xB6F8, 0xCBA3, -/* 2C28 */ 0xC258, 0xC259, 0xC4CD, 0xC25A, 0xF1E7, 0xC25B, 0xF1E8, 0xB8FB, -/* 2C30 */ 0xF1E9, 0xBAC4, 0xD4C5, 0xB0D2, 0xC25C, 0xC25D, 0xF1EA, 0xC25E, -/* 2C38 */ 0xC25F, 0xC260, 0xF1EB, 0xC261, 0xF1EC, 0xC262, 0xC263, 0xF1ED, -/* 2C40 */ 0xF1EE, 0xF1EF, 0xF1F1, 0xF1F0, 0xC5D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF1F2, 0xC26A, 0xB6FA, 0xC26B, 0xF1F4, -/* 2C50 */ 0xD2AE, 0xDEC7, 0xCBCA, 0xC26C, 0xC26D, 0xB3DC, 0xC26E, 0xB5A2, -/* 2C58 */ 0xC26F, 0xB9A2, 0xC270, 0xC271, 0xC4F4, 0xF1F5, 0xC272, 0xC273, -/* 2C60 */ 0xF1F6, 0xC274, 0xC275, 0xC276, 0xC1C4, 0xC1FB, 0xD6B0, 0xF1F7, -/* 2C68 */ 0xC277, 0xC278, 0xC279, 0xC27A, 0xF1F8, 0xC27B, 0xC1AA, 0xC27C, -/* 2C70 */ 0xC27D, 0xC27E, 0xC6B8, 0xC280, 0xBEDB, 0xF1F9, 0xB4CF, 0xFFFD, -/* 2C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1FA, 0xC340, 0xEDB2, -/* 2C80 */ 0xEDB1, 0xC341, 0xC342, 0xCBE0, 0xD2DE, 0xC343, 0xCBC1, 0xD5D8, -/* 2C88 */ 0xC344, 0xC8E2, 0xC345, 0xC0DF, 0xBCA1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEBC1, 0xC34C, 0xC34D, 0xD0A4, 0xC34E, -/* 2C98 */ 0xD6E2, 0xC34F, 0xB6C7, 0xB8D8, 0xEBC0, 0xB8CE, 0xC350, 0xEBBF, -/* 2CA0 */ 0xB3A6, 0xB9C9, 0xD6AB, 0xC351, 0xB7F4, 0xB7CA, 0xC352, 0xC353, -/* 2CA8 */ 0xC354, 0xBCE7, 0xB7BE, 0xEBC6, 0xC355, 0xEBC7, 0xB0B9, 0xBFCF, -/* 2CB0 */ 0xC356, 0xEBC5, 0xD3FD, 0xC357, 0xEBC8, 0xC358, 0xC359, 0xEBC9, -/* 2CB8 */ 0xC35A, 0xC35B, 0xB7CE, 0xC35C, 0xEBC2, 0xEBC4, 0xC9F6, 0xD6D7, -/* 2CC0 */ 0xD5CD, 0xD0B2, 0xEBCF, 0xCEB8, 0xEBD0, 0xC35D, 0xB5A8, 0xC35E, -/* 2CC8 */ 0xC35F, 0xC360, 0xC361, 0xC362, 0xB1B3, 0xEBD2, 0xCCA5, 0xFFFD, -/* 2CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5D6, 0xEBD3, -/* 2CD8 */ 0xC36A, 0xEBD1, 0xC5DF, 0xEBCE, 0xCAA4, 0xEBD5, 0xB0FB, 0xC36B, -/* 2CE0 */ 0xC36C, 0xBAFA, 0xC36D, 0xC36E, 0xD8B7, 0xF1E3, 0xC36F, 0xEBCA, -/* 2CE8 */ 0xEBCB, 0xEBCC, 0xEBCD, 0xEBD6, 0xE6C0, 0xEBD9, 0xC370, 0xBFE8, -/* 2CF0 */ 0xD2C8, 0xEBD7, 0xEBDC, 0xB8EC, 0xEBD8, 0xC371, 0xBDBA, 0xC372, -/* 2CF8 */ 0xD0D8, 0xC373, 0xB0B7, 0xC374, 0xEBDD, 0xC4DC, 0xC375, 0xC376, -/* 2D00 */ 0xC377, 0xC378, 0xD6AC, 0xC379, 0xC37A, 0xC37B, 0xB4E0, 0xC37C, -/* 2D08 */ 0xC37D, 0xC2F6, 0xBCB9, 0xC37E, 0xC380, 0xEBDA, 0xEBDB, 0xD4E0, -/* 2D10 */ 0xC6EA, 0xC4D4, 0xEBDF, 0xC5A7, 0xD9F5, 0xC381, 0xB2B1, 0xC382, -/* 2D18 */ 0xEBE4, 0xC383, 0xBDC5, 0xC384, 0xC385, 0xC386, 0xEBE2, 0xEBE3, -/* 2D20 */ 0xC394, 0xC395, 0xB8AC, 0xC396, 0xCDD1, 0xEBE5, 0xC397, 0xC398, -/* 2D28 */ 0xC399, 0xEBE1, 0xC39A, 0xC1B3, 0xC39B, 0xC39C, 0xC39D, 0xC39E, -/* 2D30 */ 0xC39F, 0xC6A2, 0xC3A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D38 */ 0xFFFD, 0xCCF3, 0xC446, 0xEBE6, 0xC447, 0xC0B0, 0xD2B8, 0xEBE7, -/* 2D40 */ 0xC448, 0xC449, 0xC44A, 0xB8AF, 0xB8AD, 0xC44B, 0xEBE8, 0xC7BB, -/* 2D48 */ 0xCDF3, 0xC44C, 0xC44D, 0xC44E, 0xEBEA, 0xEBEB, 0xC44F, 0xC450, -/* 2D50 */ 0xC451, 0xC452, 0xC453, 0xEBED, 0xC454, 0xC455, 0xC456, 0xC457, -/* 2D58 */ 0xD0C8, 0xC458, 0xEBF2, 0xC459, 0xEBEE, 0xC45A, 0xC45B, 0xC45C, -/* 2D60 */ 0xEBF1, 0xC8F9, 0xC45D, 0xD1FC, 0xEBEC, 0xC45E, 0xC45F, 0xEBE9, -/* 2D68 */ 0xC460, 0xC461, 0xC462, 0xC463, 0xB8B9, 0xCFD9, 0xC4E5, 0xEBEF, -/* 2D70 */ 0xEBF0, 0xCCDA, 0xCDC8, 0xB0F2, 0xC464, 0xEBF6, 0xC465, 0xC466, -/* 2D78 */ 0xC467, 0xC468, 0xC469, 0xEBF5, 0xC46A, 0xB2B2, 0xC46B, 0xC46C, -/* 2D80 */ 0xC46D, 0xC46E, 0xB8E0, 0xC46F, 0xEBF7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB1EC, 0xC476, 0xC477, 0xCCC5, 0xC4A4, -/* 2D90 */ 0xCFA5, 0xC478, 0xC479, 0xC47A, 0xC47B, 0xC47C, 0xEBF9, 0xC47D, -/* 2D98 */ 0xC47E, 0xECA2, 0xC480, 0xC5F2, 0xC481, 0xEBFA, 0xFFFD, 0xFFFD, -/* 2DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC9C5, 0xFFFD, -/* 2DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2DF, 0xEBFE, 0xC490, -/* 2DB0 */ 0xC491, 0xC492, 0xC493, 0xCDCE, 0xECA1, 0xB1DB, 0xD3B7, 0xC494, -/* 2DB8 */ 0xC495, 0xD2DC, 0xC496, 0xC497, 0xC498, 0xEBFD, 0xC499, 0xEBFB, -/* 2DC0 */ 0xB3BC, 0xC54F, 0xC550, 0xC551, 0xEAB0, 0xC552, 0xC553, 0xD7D4, -/* 2DC8 */ 0xC554, 0xF4AB, 0xB3F4, 0xC555, 0xC556, 0xC557, 0xC558, 0xC559, -/* 2DD0 */ 0xD6C1, 0xD6C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DD8 */ 0xD5E9, 0xBECA, 0xC560, 0xF4A7, 0xC561, 0xD2A8, 0xF4A8, 0xF4A9, -/* 2DE0 */ 0xC562, 0xF4AA, 0xBECB, 0xD3DF, 0xC563, 0xC564, 0xC565, 0xC566, -/* 2DE8 */ 0xC567, 0xC9E0, 0xC9E1, 0xC568, 0xC569, 0xF3C2, 0xC56A, 0xCAE6, -/* 2DF0 */ 0xC56B, 0xCCF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DF8 */ 0xE2B6, 0xCBB4, 0xC572, 0xCEE8, 0xD6DB, 0xC573, 0xF4AD, 0xF4AE, -/* 2E00 */ 0xF4AF, 0xC574, 0xC575, 0xC576, 0xC577, 0xF4B2, 0xC578, 0xBABD, -/* 2E08 */ 0xF4B3, 0xB0E3, 0xF4B0, 0xC579, 0xF4B1, 0xBDA2, 0xB2D5, 0xC57A, -/* 2E10 */ 0xF4B6, 0xF4B7, 0xB6E6, 0xB2B0, 0xCFCF, 0xF4B4, 0xB4AC, 0xC57B, -/* 2E18 */ 0xF4B5, 0xC57C, 0xC57D, 0xF4B8, 0xC57E, 0xC580, 0xC581, 0xC582, -/* 2E20 */ 0xC583, 0xF4B9, 0xC584, 0xC585, 0xCDA7, 0xC586, 0xF4BA, 0xC587, -/* 2E28 */ 0xF4BB, 0xC588, 0xC589, 0xC58A, 0xF4BC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBD2, 0xC593, 0xF4BD, -/* 2E38 */ 0xC594, 0xC595, 0xC596, 0xC597, 0xF4BE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4BF, 0xC5A0, 0xC640, -/* 2E48 */ 0xC641, 0xC642, 0xC643, 0xF4DE, 0xC1BC, 0xBCE8, 0xC644, 0xC9AB, -/* 2E50 */ 0xD1DE, 0xE5F5, 0xC645, 0xC646, 0xC647, 0xC648, 0xDCB3, 0xD2D5, -/* 2E58 */ 0xC649, 0xC64A, 0xDCB4, 0xB0AC, 0xDCB5, 0xC64B, 0xC64C, 0xBDDA, -/* 2E60 */ 0xC64D, 0xDCB9, 0xC64E, 0xC64F, 0xC650, 0xD8C2, 0xC651, 0xDCB7, -/* 2E68 */ 0xD3F3, 0xC652, 0xC9D6, 0xDCBA, 0xDCB6, 0xC653, 0xDCBB, 0xC3A2, -/* 2E70 */ 0xC654, 0xC655, 0xC656, 0xC657, 0xDCBC, 0xDCC5, 0xDCBD, 0xC658, -/* 2E78 */ 0xC659, 0xCEDF, 0xD6A5, 0xC65A, 0xDCCF, 0xC65B, 0xDCCD, 0xC65C, -/* 2E80 */ 0xC65D, 0xDCD2, 0xBDE6, 0xC2AB, 0xC65E, 0xDCB8, 0xDCCB, 0xDCCE, -/* 2E88 */ 0xDCBE, 0xB7D2, 0xB0C5, 0xDCC7, 0xD0BE, 0xDCC1, 0xBBA8, 0xC65F, -/* 2E90 */ 0xB7BC, 0xDCCC, 0xC660, 0xC661, 0xDCC6, 0xDCBF, 0xC7DB, 0xC662, -/* 2E98 */ 0xC663, 0xC664, 0xD1BF, 0xDCC0, 0xC665, 0xC666, 0xDCCA, 0xC667, -/* 2EA0 */ 0xC668, 0xDCD0, 0xC669, 0xC66A, 0xCEAD, 0xDCC2, 0xC66B, 0xDCC3, -/* 2EA8 */ 0xDCC8, 0xDCC9, 0xB2D4, 0xDCD1, 0xCBD5, 0xC66C, 0xD4B7, 0xDCDB, -/* 2EB0 */ 0xDCDF, 0xCCA6, 0xDCE6, 0xC66D, 0xC3E7, 0xDCDC, 0xC66E, 0xC66F, -/* 2EB8 */ 0xBFC1, 0xDCD9, 0xC670, 0xB0FA, 0xB9B6, 0xDCE5, 0xDCD3, 0xC671, -/* 2EC0 */ 0xDCC4, 0xDCD6, 0xC8F4, 0xBFE0, 0xC672, 0xC673, 0xC674, 0xC675, -/* 2EC8 */ 0xC9BB, 0xC676, 0xC677, 0xC678, 0xB1BD, 0xC679, 0xD3A2, 0xC67A, -/* 2ED0 */ 0xC67B, 0xDCDA, 0xC67C, 0xC67D, 0xDCD5, 0xC67E, 0xC6BB, 0xC680, -/* 2ED8 */ 0xDCDE, 0xC681, 0xC682, 0xC683, 0xC684, 0xC685, 0xD7C2, 0xC3AF, -/* 2EE0 */ 0xB7B6, 0xC7D1, 0xC3A9, 0xDCE2, 0xDCD8, 0xDCEB, 0xDCD4, 0xC686, -/* 2EE8 */ 0xC687, 0xDCDD, 0xC688, 0xBEA5, 0xDCD7, 0xC689, 0xDCE0, 0xC68A, -/* 2EF0 */ 0xC68B, 0xDCE3, 0xDCE4, 0xC68C, 0xDCF8, 0xC68D, 0xC68E, 0xDCE1, -/* 2EF8 */ 0xDDA2, 0xDCE7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCEB, 0xB4C4, 0xC699, 0xC69A, -/* 2F08 */ 0xC3A3, 0xB2E7, 0xDCFA, 0xC69B, 0xDCF2, 0xC69C, 0xDCEF, 0xC69D, -/* 2F10 */ 0xDCFC, 0xDCEE, 0xD2F0, 0xB2E8, 0xC69E, 0xC8D7, 0xC8E3, 0xDCFB, -/* 2F18 */ 0xC69F, 0xDCED, 0xC6A0, 0xC740, 0xC741, 0xDCF7, 0xC742, 0xC743, -/* 2F20 */ 0xDCF5, 0xC744, 0xC745, 0xBEA3, 0xDCF4, 0xC746, 0xB2DD, 0xC747, -/* 2F28 */ 0xC748, 0xC749, 0xC74A, 0xC74B, 0xDCF3, 0xBCF6, 0xDCE8, 0xBBC4, -/* 2F30 */ 0xC74C, 0xC0F3, 0xC74D, 0xC74E, 0xC74F, 0xC750, 0xC751, 0xBCD4, -/* 2F38 */ 0xDCE9, 0xDCEA, 0xC752, 0xDCF1, 0xDCF6, 0xDCF9, 0xB5B4, 0xC753, -/* 2F40 */ 0xC8D9, 0xBBE7, 0xDCFE, 0xDCFD, 0xD3AB, 0xDDA1, 0xDDA3, 0xDDA5, -/* 2F48 */ 0xD2F1, 0xDDA4, 0xDDA6, 0xDDA7, 0xD2A9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAC9, 0xDDA9, 0xC75B, 0xC75C, -/* 2F58 */ 0xDDB6, 0xDDB1, 0xDDB4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F60 */ 0xFFFD, 0xFFFD, 0xDDB0, 0xC6CE, 0xC764, 0xC765, 0xC0F2, 0xC766, -/* 2F68 */ 0xC767, 0xC768, 0xC769, 0xC9AF, 0xC76A, 0xC76B, 0xC76C, 0xDCEC, -/* 2F70 */ 0xDDAE, 0xC76D, 0xC76E, 0xC76F, 0xC770, 0xDDB7, 0xC771, 0xC772, -/* 2F78 */ 0xDCF0, 0xDDAF, 0xC773, 0xDDB8, 0xC774, 0xDDAC, 0xFFFD, 0xFFFD, -/* 2F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDB9, 0xDDB3, 0xDDAD, -/* 2F88 */ 0xC4AA, 0xC77C, 0xC77D, 0xC77E, 0xC780, 0xDDA8, 0xC0B3, 0xC1AB, -/* 2F90 */ 0xDDAA, 0xDDAB, 0xC781, 0xDDB2, 0xBBF1, 0xDDB5, 0xD3A8, 0xDDBA, -/* 2F98 */ 0xC782, 0xDDBB, 0xC3A7, 0xC783, 0xC784, 0xDDD2, 0xDDBC, 0xC785, -/* 2FA0 */ 0xC786, 0xC787, 0xDDD1, 0xC788, 0xB9BD, 0xC789, 0xC78A, 0xBED5, -/* 2FA8 */ 0xC78B, 0xBEFA, 0xC78C, 0xC78D, 0xBACA, 0xC78E, 0xC78F, 0xC790, -/* 2FB0 */ 0xC791, 0xDDCA, 0xC792, 0xDDC5, 0xC793, 0xDDBF, 0xC794, 0xC795, -/* 2FB8 */ 0xC796, 0xB2CB, 0xDDC3, 0xC797, 0xDDCB, 0xB2A4, 0xDDD5, 0xC798, -/* 2FC0 */ 0xC799, 0xC79A, 0xDDBE, 0xC79B, 0xC79C, 0xC79D, 0xC6D0, 0xDDD0, -/* 2FC8 */ 0xC79E, 0xC79F, 0xC7A0, 0xC840, 0xC841, 0xDDD4, 0xC1E2, 0xB7C6, -/* 2FD0 */ 0xC842, 0xC843, 0xC844, 0xC845, 0xC846, 0xDDCE, 0xDDCF, 0xC847, -/* 2FD8 */ 0xC848, 0xC849, 0xDDC4, 0xC84A, 0xC84B, 0xC84C, 0xDDBD, 0xC84D, -/* 2FE0 */ 0xDDCD, 0xCCD1, 0xC84E, 0xDDC9, 0xC84F, 0xC850, 0xC851, 0xC852, -/* 2FE8 */ 0xDDC2, 0xC3C8, 0xC6BC, 0xCEAE, 0xDDCC, 0xC853, 0xDDC8, 0xFFFD, -/* 2FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDC1, 0xC85A, 0xC85B, -/* 2FF8 */ 0xC85C, 0xDDC6, 0xC2DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3000 */ 0xFFFD, 0xD3A9, 0xD3AA, 0xDDD3, 0xCFF4, 0xC8F8, 0xFFFD, 0xFFFD, -/* 3008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDE6, 0xFFFD, -/* 3010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDC7, 0xC871, 0xC872, -/* 3018 */ 0xC873, 0xDDE0, 0xC2E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDDE1, 0xC87C, 0xC87D, 0xC87E, 0xFFFD, -/* 3028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDD7, 0xC887, -/* 3030 */ 0xC888, 0xC889, 0xC88A, 0xC88B, 0xD6F8, 0xC88C, 0xDDD9, 0xDDD8, -/* 3038 */ 0xB8F0, 0xDDD6, 0xC88D, 0xC88E, 0xC88F, 0xC890, 0xC6CF, 0xC891, -/* 3040 */ 0xB6AD, 0xC892, 0xC893, 0xC894, 0xC895, 0xC896, 0xDDE2, 0xC897, -/* 3048 */ 0xBAF9, 0xD4E1, 0xDDE7, 0xC898, 0xC899, 0xC89A, 0xB4D0, 0xC89B, -/* 3050 */ 0xDDDA, 0xC89C, 0xBFFB, 0xDDE3, 0xC89D, 0xDDDF, 0xC89E, 0xDDDD, -/* 3058 */ 0xC89F, 0xC8A0, 0xC940, 0xC941, 0xC942, 0xC943, 0xC944, 0xB5D9, -/* 3060 */ 0xC945, 0xC946, 0xC947, 0xC948, 0xDDDB, 0xDDDC, 0xDDDE, 0xC949, -/* 3068 */ 0xBDAF, 0xDDE4, 0xC94A, 0xDDE5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDF5, 0xC953, 0xC3C9, 0xC954, -/* 3078 */ 0xC955, 0xCBE2, 0xC956, 0xC957, 0xC958, 0xC959, 0xDDF2, 0xD8E1, -/* 3080 */ 0xC967, 0xC968, 0xC6D1, 0xC969, 0xDDF4, 0xC96A, 0xC96B, 0xC96C, -/* 3088 */ 0xD5F4, 0xDDF3, 0xDDF0, 0xC96D, 0xC96E, 0xDDEC, 0xC96F, 0xDDEF, -/* 3090 */ 0xC970, 0xDDE8, 0xC971, 0xC972, 0xD0EE, 0xC973, 0xC974, 0xC975, -/* 3098 */ 0xC976, 0xC8D8, 0xDDEE, 0xC977, 0xC978, 0xDDE9, 0xC979, 0xC97A, -/* 30A0 */ 0xDDEA, 0xCBF2, 0xC97B, 0xDDED, 0xC97C, 0xC97D, 0xB1CD, 0xC97E, -/* 30A8 */ 0xC980, 0xC981, 0xC982, 0xC983, 0xC984, 0xC0B6, 0xC985, 0xBCBB, -/* 30B0 */ 0xDDF1, 0xC986, 0xC987, 0xDDF7, 0xC988, 0xDDF6, 0xDDEB, 0xC989, -/* 30B8 */ 0xC98A, 0xC98B, 0xC98C, 0xC98D, 0xC5EE, 0xC98E, 0xC98F, 0xC990, -/* 30C0 */ 0xDDFB, 0xDEA4, 0xC99C, 0xC99D, 0xDEA3, 0xC99E, 0xC99F, 0xC9A0, -/* 30C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30D0 */ 0xFFFD, 0xDDF8, 0xCA49, 0xCA4A, 0xCA4B, 0xCA4C, 0xC3EF, 0xCA4D, -/* 30D8 */ 0xC2FB, 0xCA4E, 0xCA4F, 0xCA50, 0xD5E1, 0xCA51, 0xCA52, 0xCEB5, -/* 30E0 */ 0xCA53, 0xCA54, 0xCA55, 0xCA56, 0xDDFD, 0xCA57, 0xB2CC, 0xFFFD, -/* 30E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30F0 */ 0xC4E8, 0xCADF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7BE, 0xDDFA, 0xDDFC, 0xDDFE, -/* 3100 */ 0xDEA2, 0xB0AA, 0xB1CE, 0xCA6B, 0xCA6C, 0xCA6D, 0xCA6E, 0xCA6F, -/* 3108 */ 0xDEAC, 0xCA70, 0xCA71, 0xCA72, 0xCA73, 0xDEA6, 0xBDB6, 0xC8EF, -/* 3110 */ 0xDEA1, 0xCA80, 0xCA81, 0xDEA5, 0xCA82, 0xCA83, 0xCA84, 0xCA85, -/* 3118 */ 0xDEA9, 0xCA86, 0xCA87, 0xCA88, 0xCA89, 0xCA8A, 0xDEA8, 0xCA8B, -/* 3120 */ 0xCA8C, 0xCA8D, 0xDEA7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEAD, 0xCA97, 0xD4CC, 0xCA98, -/* 3130 */ 0xCA99, 0xCA9A, 0xCA9B, 0xDEB3, 0xDEAA, 0xDEAE, 0xCA9C, 0xCA9D, -/* 3138 */ 0xC0D9, 0xCA9E, 0xCA9F, 0xCAA0, 0xCB40, 0xCB41, 0xB1A1, 0xDEB6, -/* 3140 */ 0xCB42, 0xDEB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3148 */ 0xFFFD, 0xDEB2, 0xD1A6, 0xDEB5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDEAF, 0xCB5C, 0xCB5D, 0xCB5E, 0xDEB0, -/* 3158 */ 0xCB5F, 0xD0BD, 0xCB60, 0xCB61, 0xCB62, 0xDEB4, 0xCAED, 0xDEB9, -/* 3160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEB8, 0xCB69, -/* 3168 */ 0xDEB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3170 */ 0xDEBB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3178 */ 0xBDE5, 0xCB78, 0xCB79, 0xCB7A, 0xCB7B, 0xCB7C, 0xB2D8, 0xC3EA, -/* 3180 */ 0xCB7D, 0xCB7E, 0xDEBA, 0xCB80, 0xC5BA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDEBC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCCD9, 0xCB8E, 0xCB8F, 0xCB90, 0xCB91, -/* 3198 */ 0xB7AA, 0xCC40, 0xCC41, 0xD4E5, 0xCC42, 0xCC43, 0xCC44, 0xDEBD, -/* 31A0 */ 0xCC45, 0xCC46, 0xCC47, 0xCC48, 0xCC49, 0xDEBF, 0xC4A2, 0xCC55, -/* 31A8 */ 0xCC56, 0xCC57, 0xCC58, 0xDEC1, 0xDEBE, 0xCC69, 0xDEC0, 0xD5BA, -/* 31B0 */ 0xCC78, 0xCC79, 0xCC7A, 0xDEC2, 0xCC7B, 0xCC7C, 0xCC7D, 0xCC7E, -/* 31B8 */ 0xF2AE, 0xBBA2, 0xC2B2, 0xC5B0, 0xC2C7, 0xCC8C, 0xCC8D, 0xF2AF, -/* 31C0 */ 0xCC8E, 0xCC8F, 0xCC90, 0xCC91, 0xCC92, 0xD0E9, 0xCC93, 0xCC94, -/* 31C8 */ 0xCC95, 0xD3DD, 0xCC96, 0xCC97, 0xCC98, 0xEBBD, 0xFFFD, 0xFFFD, -/* 31D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3E6, 0xF2B0, -/* 31D8 */ 0xCD40, 0xF2B1, 0xCD41, 0xCD42, 0xCAAD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAE7, 0xF2B3, 0xF2B5, 0xF2B4, -/* 31E8 */ 0xCBE4, 0xCFBA, 0xF2B2, 0xCAB4, 0xD2CF, 0xC2EC, 0xFFFD, 0xFFFD, -/* 31F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEC3, 0xF2B8, 0xB0F6, -/* 31F8 */ 0xF2B7, 0xCD51, 0xCD52, 0xCD53, 0xCD54, 0xCD55, 0xF2BE, 0xCD56, -/* 3200 */ 0xB2CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1C1, -/* 3208 */ 0xF2BA, 0xCD5D, 0xCD5E, 0xCD5F, 0xCD60, 0xCD61, 0xF2BC, 0xD4E9, -/* 3210 */ 0xCD62, 0xCD63, 0xF2BB, 0xF2B6, 0xF2BF, 0xF2BD, 0xCD64, 0xF2B9, -/* 3218 */ 0xCD65, 0xCD66, 0xF2C7, 0xF2C4, 0xF2C6, 0xCD67, 0xCD68, 0xF2CA, -/* 3220 */ 0xF2C2, 0xF2C0, 0xCD69, 0xCD6A, 0xCD6B, 0xF2C5, 0xCD6C, 0xCD6D, -/* 3228 */ 0xCD6E, 0xCD6F, 0xCD70, 0xD6FB, 0xCD71, 0xCD72, 0xCD73, 0xF2C1, -/* 3230 */ 0xCD74, 0xC7F9, 0xC9DF, 0xCD75, 0xF2C8, 0xB9C6, 0xB5B0, 0xCD76, -/* 3238 */ 0xCD77, 0xF2C3, 0xF2C9, 0xF2D0, 0xF2D6, 0xCD78, 0xCD79, 0xBBD7, -/* 3240 */ 0xCD7A, 0xCD7B, 0xCD7C, 0xF2D5, 0xCDDC, 0xCD7D, 0xD6EB, 0xCD7E, -/* 3248 */ 0xCD80, 0xF2D2, 0xF2D4, 0xCD81, 0xCD82, 0xCD83, 0xCD84, 0xB8F2, -/* 3250 */ 0xCD85, 0xCD86, 0xCD87, 0xCD88, 0xF2CB, 0xCD89, 0xCD8A, 0xCD8B, -/* 3258 */ 0xF2CE, 0xC2F9, 0xCD8C, 0xD5DD, 0xF2CC, 0xF2CD, 0xF2CF, 0xF2D3, -/* 3260 */ 0xCD8D, 0xCD8E, 0xCD8F, 0xF2D9, 0xD3BC, 0xCD90, 0xCD91, 0xCD92, -/* 3268 */ 0xCD93, 0xB6EA, 0xCD94, 0xCAF1, 0xCD95, 0xB7E4, 0xF2D7, 0xCD96, -/* 3270 */ 0xCD97, 0xCD98, 0xF2D8, 0xF2DA, 0xF2DD, 0xF2DB, 0xCD99, 0xCD9A, -/* 3278 */ 0xF2DC, 0xCD9B, 0xCD9C, 0xCD9D, 0xCD9E, 0xD1D1, 0xF2D1, 0xCD9F, -/* 3280 */ 0xCDC9, 0xCDA0, 0xCECF, 0xD6A9, 0xCE40, 0xF2E3, 0xCE41, 0xC3DB, -/* 3288 */ 0xCE42, 0xF2E0, 0xCE43, 0xCE44, 0xC0AF, 0xF2EC, 0xF2DE, 0xCE45, -/* 3290 */ 0xF2E1, 0xCE46, 0xCE47, 0xCE48, 0xF2E8, 0xCE49, 0xCE4A, 0xCE4B, -/* 3298 */ 0xCE4C, 0xF2E2, 0xCE4D, 0xCE4E, 0xF2E7, 0xCE4F, 0xCE50, 0xF2E6, -/* 32A0 */ 0xCE51, 0xCE52, 0xF2E9, 0xCE53, 0xCE54, 0xCE55, 0xF2DF, 0xCE56, -/* 32A8 */ 0xCE57, 0xF2E4, 0xF2EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32B0 */ 0xFFFD, 0xFFFD, 0xD3AC, 0xF2E5, 0xB2F5, 0xCE5F, 0xCE60, 0xF2F2, -/* 32B8 */ 0xCE61, 0xD0AB, 0xCE62, 0xCE63, 0xCE64, 0xCE65, 0xF2F5, 0xCE66, -/* 32C0 */ 0xCE67, 0xCE68, 0xBBC8, 0xCE69, 0xF2F9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF2F0, 0xCE70, 0xCE71, 0xF2F6, 0xF2F8, -/* 32D0 */ 0xF2FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32D8 */ 0xFFFD, 0xF2F3, 0xCE7A, 0xF2F1, 0xCE7B, 0xCE7C, 0xCE7D, 0xBAFB, -/* 32E0 */ 0xCE7E, 0xB5FB, 0xCE80, 0xCE81, 0xCE82, 0xCE83, 0xF2EF, 0xF2F7, -/* 32E8 */ 0xF2ED, 0xF2EE, 0xCE84, 0xCE85, 0xCE86, 0xF2EB, 0xF3A6, 0xCE87, -/* 32F0 */ 0xF3A3, 0xCE88, 0xCE89, 0xF3A2, 0xCE8A, 0xCE8B, 0xF2F4, 0xCE8C, -/* 32F8 */ 0xC8DA, 0xCE8D, 0xCE8E, 0xCE8F, 0xCE90, 0xCE91, 0xF2FB, 0xCE92, -/* 3300 */ 0xCE93, 0xCE94, 0xF3A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3308 */ 0xFFFD, 0xFFFD, 0xC3F8, 0xCE9C, 0xCE9D, 0xCE9E, 0xCE9F, 0xCEA0, -/* 3310 */ 0xCF40, 0xCF41, 0xCF42, 0xF2FD, 0xCF43, 0xCF44, 0xF3A7, 0xF3A9, -/* 3318 */ 0xF3A4, 0xCF45, 0xF2FC, 0xCF46, 0xCF47, 0xCF48, 0xF3AB, 0xCF49, -/* 3320 */ 0xF3AA, 0xCF4A, 0xCF4B, 0xCF4C, 0xCF4D, 0xC2DD, 0xCF4E, 0xCF4F, -/* 3328 */ 0xF3AE, 0xCF50, 0xCF51, 0xF3B0, 0xCF52, 0xCF53, 0xCF54, 0xCF55, -/* 3330 */ 0xCF56, 0xF3A1, 0xCF57, 0xCF58, 0xCF59, 0xF3B1, 0xF3AC, 0xCF5A, -/* 3338 */ 0xCF5B, 0xCF5C, 0xCF5D, 0xCF5E, 0xF3AF, 0xF2FE, 0xF3AD, 0xFFFD, -/* 3340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3B2, 0xCF66, -/* 3348 */ 0xCF67, 0xCF68, 0xCF69, 0xF3B4, 0xCF6A, 0xCF6B, 0xCF6C, 0xCF6D, -/* 3350 */ 0xF3A8, 0xCF6E, 0xCF6F, 0xCF70, 0xCF71, 0xF3B3, 0xCF72, 0xCF73, -/* 3358 */ 0xCF74, 0xF3B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0B7, 0xCF80, 0xCF81, 0xCF82, -/* 3368 */ 0xCF83, 0xF3B8, 0xCF84, 0xCF85, 0xCF86, 0xCF87, 0xD9F9, 0xFFFD, -/* 3370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3B9, 0xFFFD, 0xFFFD, -/* 3378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3B7, 0xCF96, -/* 3380 */ 0xC8E4, 0xF3B6, 0xCF97, 0xCF98, 0xCF99, 0xCF9A, 0xF3BA, 0xCF9B, -/* 3388 */ 0xCF9C, 0xCF9D, 0xCF9E, 0xCF9F, 0xF3BB, 0xB4C0, 0xCFA0, 0xEEC3, -/* 3390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3BC, 0xD054, -/* 3398 */ 0xD055, 0xF3BD, 0xD056, 0xD057, 0xD058, 0xD1AA, 0xD059, 0xD05A, -/* 33A0 */ 0xD05B, 0xF4AC, 0xD0C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33A8 */ 0xFFFD, 0xD0D0, 0xD1DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33B0 */ 0xFFFD, 0xCFCE, 0xD068, 0xD069, 0xBDD6, 0xD06A, 0xD1C3, 0xFFFD, -/* 33B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAE2, 0xE1E9, -/* 33C0 */ 0xD2C2, 0xF1C2, 0xB2B9, 0xD072, 0xD073, 0xB1ED, 0xF1C3, 0xD074, -/* 33C8 */ 0xC9C0, 0xB3C4, 0xD075, 0xD9F2, 0xD076, 0xCBA5, 0xD077, 0xF1C4, -/* 33D0 */ 0xD078, 0xD079, 0xD07A, 0xD07B, 0xD6D4, 0xD07C, 0xD07D, 0xD07E, -/* 33D8 */ 0xD080, 0xD081, 0xF1C5, 0xF4C0, 0xF1C6, 0xD082, 0xD4AC, 0xF1C7, -/* 33E0 */ 0xD083, 0xB0C0, 0xF4C1, 0xD084, 0xD085, 0xF4C2, 0xD086, 0xD087, -/* 33E8 */ 0xB4FC, 0xD088, 0xC5DB, 0xD089, 0xD08A, 0xD08B, 0xD08C, 0xCCBB, -/* 33F0 */ 0xD08D, 0xD08E, 0xD08F, 0xD0E4, 0xD090, 0xD091, 0xD092, 0xD093, -/* 33F8 */ 0xD094, 0xCDE0, 0xD095, 0xD096, 0xD097, 0xD098, 0xD099, 0xF1C8, -/* 3400 */ 0xD09A, 0xD9F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3408 */ 0xB1BB, 0xD140, 0xCFAE, 0xD141, 0xD142, 0xD143, 0xB8A4, 0xD144, -/* 3410 */ 0xD145, 0xD146, 0xD147, 0xD148, 0xF1CA, 0xD149, 0xD14A, 0xD14B, -/* 3418 */ 0xD14C, 0xF1CB, 0xD14D, 0xD14E, 0xD14F, 0xD150, 0xB2C3, 0xC1D1, -/* 3420 */ 0xD151, 0xD152, 0xD7B0, 0xF1C9, 0xD153, 0xD154, 0xF1CC, 0xD155, -/* 3428 */ 0xD156, 0xD157, 0xD158, 0xF1CE, 0xD159, 0xD15A, 0xD15B, 0xD9F6, -/* 3430 */ 0xD15C, 0xD2E1, 0xD4A3, 0xD15D, 0xD15E, 0xF4C3, 0xC8B9, 0xD15F, -/* 3438 */ 0xD160, 0xD161, 0xD162, 0xD163, 0xF4C4, 0xD164, 0xD165, 0xF1CD, -/* 3440 */ 0xF1CF, 0xBFE3, 0xF1D0, 0xD166, 0xD167, 0xF1D4, 0xFFFD, 0xFFFD, -/* 3448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1D6, 0xF1D1, 0xD16F, -/* 3450 */ 0xC9D1, 0xC5E1, 0xD170, 0xD171, 0xD172, 0xC2E3, 0xB9FC, 0xD173, -/* 3458 */ 0xD174, 0xF1D3, 0xD175, 0xF1D5, 0xD176, 0xD177, 0xD178, 0xB9D3, -/* 3460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD180, 0xF1DB, -/* 3468 */ 0xD181, 0xD182, 0xD183, 0xD184, 0xD185, 0xBAD6, 0xD186, 0xB0FD, -/* 3470 */ 0xF1D9, 0xD187, 0xD188, 0xD189, 0xD18A, 0xD18B, 0xF1D8, 0xF1D2, -/* 3478 */ 0xF1DA, 0xD18C, 0xD18D, 0xD18E, 0xD18F, 0xD190, 0xF1D7, 0xD191, -/* 3480 */ 0xD192, 0xD193, 0xC8EC, 0xD194, 0xD195, 0xD196, 0xD197, 0xCDCA, -/* 3488 */ 0xF1DD, 0xD198, 0xD199, 0xD19A, 0xD19B, 0xE5BD, 0xD19C, 0xD19D, -/* 3490 */ 0xD19E, 0xF1DC, 0xD19F, 0xF1DE, 0xD1A0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1DF, 0xD249, -/* 34A0 */ 0xD24A, 0xCFE5, 0xF4C5, 0xBDF3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34A8 */ 0xFFFD, 0xFFFD, 0xF1E0, 0xF1E1, 0xD27E, 0xD280, 0xD281, 0xCEF7, -/* 34B0 */ 0xD282, 0xD2AA, 0xD283, 0xF1FB, 0xD284, 0xD285, 0xB8B2, 0xBCFB, -/* 34B8 */ 0xB9DB, 0xD35F, 0xB9E6, 0xC3D9, 0xCAD3, 0xEAE8, 0xC0C0, 0xBEF5, -/* 34C0 */ 0xEAE9, 0xEAEA, 0xEAEB, 0xD360, 0xEAEC, 0xEAED, 0xEAEE, 0xEAEF, -/* 34C8 */ 0xBDC7, 0xD361, 0xD362, 0xD363, 0xF5FB, 0xD364, 0xD365, 0xD366, -/* 34D0 */ 0xF5FD, 0xD367, 0xF5FE, 0xD368, 0xF5FC, 0xD369, 0xD36A, 0xD36B, -/* 34D8 */ 0xD36C, 0xBDE2, 0xD36D, 0xF6A1, 0xB4A5, 0xD36E, 0xD36F, 0xD370, -/* 34E0 */ 0xD371, 0xF6A2, 0xD372, 0xD373, 0xD374, 0xF6A3, 0xD375, 0xD376, -/* 34E8 */ 0xD377, 0xECB2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F0 */ 0xFFFD, 0xD380, 0xD381, 0xD382, 0xD383, 0xD384, 0xD1D4, 0xFFFD, -/* 34F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9EA, 0xF6A4, 0xFFFD, -/* 3500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3508 */ 0xEEBA, 0xD3FE, 0xCCDC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCAC4, 0xD680, 0xD681, 0xF6A5, 0xBEAF, -/* 3518 */ 0xD760, 0xD761, 0xD762, 0xD763, 0xD764, 0xC6A9, 0xDAA5, 0xBCC6, -/* 3520 */ 0xB6A9, 0xB8BC, 0xC8CF, 0xBCA5, 0xDAA6, 0xDAA7, 0xCCD6, 0xC8C3, -/* 3528 */ 0xDAA8, 0xC6FD, 0xD799, 0xD1B5, 0xD2E9, 0xD1B6, 0xBCC7, 0xD79A, -/* 3530 */ 0xBDB2, 0xBBE4, 0xDAA9, 0xDAAA, 0xD1C8, 0xDAAB, 0xD0ED, 0xB6EF, -/* 3538 */ 0xC2DB, 0xD79B, 0xCBCF, 0xB7ED, 0xC9E8, 0xB7C3, 0xBEF7, 0xD6A4, -/* 3540 */ 0xDAAC, 0xDAAD, 0xC6C0, 0xD7E7, 0xCAB6, 0xD79C, 0xD5A9, 0xCBDF, -/* 3548 */ 0xD5EF, 0xDAAE, 0xD6DF, 0xB4CA, 0xDAB0, 0xDAAF, 0xD79D, 0xD2EB, -/* 3550 */ 0xDAB1, 0xDAB2, 0xDAB3, 0xCAD4, 0xDAB4, 0xCAAB, 0xDAB5, 0xDAB6, -/* 3558 */ 0xB3CF, 0xD6EF, 0xDAB7, 0xBBB0, 0xB5AE, 0xDAB8, 0xDAB9, 0xB9EE, -/* 3560 */ 0xD1AF, 0xD2E8, 0xDABA, 0xB8C3, 0xCFEA, 0xB2EF, 0xDABB, 0xDABC, -/* 3568 */ 0xD79E, 0xBDEB, 0xCEDC, 0xD3EF, 0xDABD, 0xCEF3, 0xDABE, 0xD3D5, -/* 3570 */ 0xBBE5, 0xDABF, 0xCBB5, 0xCBD0, 0xDAC0, 0xC7EB, 0xD6EE, 0xDAC1, -/* 3578 */ 0xC5B5, 0xB6C1, 0xDAC2, 0xB7CC, 0xBFCE, 0xDAC3, 0xDAC4, 0xCBAD, -/* 3580 */ 0xDAC5, 0xB5F7, 0xDAC6, 0xC1C2, 0xD7BB, 0xDAC7, 0xCCB8, 0xD79F, -/* 3588 */ 0xD2EA, 0xC4B1, 0xDAC8, 0xB5FD, 0xBBD1, 0xDAC9, 0xD0B3, 0xDACA, -/* 3590 */ 0xDACB, 0xCEBD, 0xDACC, 0xDACD, 0xDACE, 0xB2F7, 0xDAD1, 0xDACF, -/* 3598 */ 0xD1E8, 0xDAD0, 0xC3D5, 0xDAD2, 0xD7A0, 0xDAD3, 0xDAD4, 0xDAD5, -/* 35A0 */ 0xD0BB, 0xD2A5, 0xB0F9, 0xDAD6, 0xC7AB, 0xDAD7, 0xBDF7, 0xC3A1, -/* 35A8 */ 0xDAD8, 0xDAD9, 0xC3FD, 0xCCB7, 0xDADA, 0xDADB, 0xC0BE, 0xC6D7, -/* 35B0 */ 0xDADC, 0xDADD, 0xC7B4, 0xDADE, 0xDADF, 0xB9C8, 0xFFFD, 0xFFFD, -/* 35B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBED, -/* 35C0 */ 0xD849, 0xD84A, 0xD84B, 0xD84C, 0xB6B9, 0xF4F8, 0xD84D, 0xF4F9, -/* 35C8 */ 0xD84E, 0xD84F, 0xCDE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF5B9, 0xD858, 0xD859, 0xD85A, 0xD85B, -/* 35D8 */ 0xEBE0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFF3, -/* 35E0 */ 0xBBBF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35E8 */ 0xBAC0, 0xD4A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35F0 */ 0xFFFD, 0xE1D9, 0xD870, 0xD871, 0xD872, 0xD873, 0xF5F4, 0xB1AA, -/* 35F8 */ 0xB2F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3600 */ 0xF5F5, 0xD87B, 0xD87C, 0xF5F7, 0xD87D, 0xD87E, 0xD880, 0xBAD1, -/* 3608 */ 0xF5F6, 0xD881, 0xC3B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3610 */ 0xFFFD, 0xFFFD, 0xF5F9, 0xD889, 0xD88A, 0xD88B, 0xF5F8, 0xB1B4, -/* 3618 */ 0xD5EA, 0xB8BA, 0xDA4F, 0xB9B1, 0xB2C6, 0xD4F0, 0xCFCD, 0xB0DC, -/* 3620 */ 0xD5CB, 0xBBF5, 0xD6CA, 0xB7B7, 0xCCB0, 0xC6B6, 0xB1E1, 0xB9BA, -/* 3628 */ 0xD6FC, 0xB9E1, 0xB7A1, 0xBCFA, 0xEADA, 0xEADB, 0xCCF9, 0xB9F3, -/* 3630 */ 0xEADC, 0xB4FB, 0xC3B3, 0xB7D1, 0xBAD8, 0xEADD, 0xD4F4, 0xEADE, -/* 3638 */ 0xBCD6, 0xBBDF, 0xEADF, 0xC1DE, 0xC2B8, 0xD4DF, 0xD7CA, 0xEAE0, -/* 3640 */ 0xEAE1, 0xEAE4, 0xEAE2, 0xEAE3, 0xC9DE, 0xB8B3, 0xB6C4, 0xEAE5, -/* 3648 */ 0xCAEA, 0xC9CD, 0xB4CD, 0xDA50, 0xDA51, 0xE2D9, 0xC5E2, 0xEAE6, -/* 3650 */ 0xC0B5, 0xDA52, 0xD7B8, 0xEAE7, 0xD7AC, 0xC8FC, 0xD8D3, 0xD8CD, -/* 3658 */ 0xD4DE, 0xDA53, 0xD4F9, 0xC9C4, 0xD3AE, 0xB8D3, 0xB3E0, 0xDA54, -/* 3660 */ 0xC9E2, 0xF4F6, 0xDA55, 0xDA56, 0xDA57, 0xBAD5, 0xDA58, 0xF4F7, -/* 3668 */ 0xDA59, 0xDA5A, 0xD7DF, 0xDA5B, 0xDA5C, 0xF4F1, 0xB8B0, 0xD5D4, -/* 3670 */ 0xB8CF, 0xC6F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB3C3, 0xDA66, 0xDA67, 0xF4F2, 0xB3AC, -/* 3680 */ 0xDA68, 0xDA69, 0xDA6A, 0xDA6B, 0xD4BD, 0xC7F7, 0xDA6C, 0xDA6D, -/* 3688 */ 0xDA6E, 0xDA6F, 0xDA70, 0xF4F4, 0xDA71, 0xDA72, 0xF4F3, 0xFFFD, -/* 3690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3698 */ 0xFFFD, 0xCCCB, 0xDA7D, 0xDA7E, 0xDA80, 0xC8A4, 0xF4F5, 0xDA8E, -/* 36A0 */ 0xD7E3, 0xC5BF, 0xF5C0, 0xDA8F, 0xDA90, 0xF5BB, 0xDA91, 0xF5C3, -/* 36A8 */ 0xDA92, 0xF5C2, 0xDA93, 0xD6BA, 0xF5C1, 0xDA94, 0xDA95, 0xDA96, -/* 36B0 */ 0xD4BE, 0xF5C4, 0xDA97, 0xF5CC, 0xDA98, 0xDA99, 0xDA9A, 0xDA9B, -/* 36B8 */ 0xB0CF, 0xB5F8, 0xDA9C, 0xF5C9, 0xF5CA, 0xDA9D, 0xC5DC, 0xDA9E, -/* 36C0 */ 0xDA9F, 0xDAA0, 0xDB40, 0xF5C5, 0xF5C6, 0xDB41, 0xDB42, 0xF5C7, -/* 36C8 */ 0xF5CB, 0xDB43, 0xBEE0, 0xF5C8, 0xB8FA, 0xDB44, 0xDB45, 0xDB46, -/* 36D0 */ 0xF5D0, 0xF5D3, 0xDB47, 0xDB48, 0xDB49, 0xBFE7, 0xDB4A, 0xB9F2, -/* 36D8 */ 0xF5BC, 0xF5CD, 0xDB4B, 0xDB4C, 0xC2B7, 0xDB4D, 0xDB4E, 0xDB4F, -/* 36E0 */ 0xCCF8, 0xDB50, 0xBCF9, 0xDB51, 0xF5CE, 0xF5CF, 0xF5D1, 0xB6E5, -/* 36E8 */ 0xF5D2, 0xDB52, 0xF5D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36F0 */ 0xFFFD, 0xFFFD, 0xF5BD, 0xDB5A, 0xDB5B, 0xDB5C, 0xF5D4, 0xD3BB, -/* 36F8 */ 0xDB5D, 0xB3EC, 0xDB5E, 0xDB5F, 0xCCA4, 0xDB60, 0xDB61, 0xDB62, -/* 3700 */ 0xDB63, 0xF5D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3708 */ 0xFFFD, 0xFFFD, 0xF5D7, 0xBEE1, 0xF5D8, 0xDB6C, 0xDB6D, 0xCCDF, -/* 3710 */ 0xF5DB, 0xDB6E, 0xDB6F, 0xDB70, 0xDB71, 0xDB72, 0xB2C8, 0xD7D9, -/* 3718 */ 0xDB73, 0xF5D9, 0xDB74, 0xF5DA, 0xF5DC, 0xDB75, 0xF5E2, 0xDB76, -/* 3720 */ 0xDB77, 0xDB78, 0xF5E0, 0xDB79, 0xDB7A, 0xDB7B, 0xF5DF, 0xF5DD, -/* 3728 */ 0xDB7C, 0xDB7D, 0xF5E1, 0xDB7E, 0xDB80, 0xF5DE, 0xF5E4, 0xF5E5, -/* 3730 */ 0xDB81, 0xCCE3, 0xDB82, 0xDB83, 0xE5BF, 0xB5B8, 0xF5E3, 0xF5E8, -/* 3738 */ 0xCCA3, 0xDB84, 0xDB85, 0xDB86, 0xDB87, 0xDB88, 0xF5E6, 0xF5E7, -/* 3740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5BE, 0xB1C4, -/* 3748 */ 0xDB9B, 0xDB9C, 0xF5BF, 0xDB9D, 0xDB9E, 0xB5C5, 0xB2E4, 0xDB9F, -/* 3750 */ 0xF5EC, 0xF5E9, 0xDBA0, 0xB6D7, 0xDC40, 0xF5ED, 0xDC41, 0xF5EA, -/* 3758 */ 0xDC42, 0xDC43, 0xDC44, 0xDC45, 0xDC46, 0xF5EB, 0xDC47, 0xDC48, -/* 3760 */ 0xB4DA, 0xDC49, 0xD4EA, 0xDC4A, 0xDC4B, 0xDC4C, 0xF5EE, 0xDC4D, -/* 3768 */ 0xB3F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3770 */ 0xF5EF, 0xF5F1, 0xDC55, 0xDC56, 0xDC57, 0xF5F0, 0xFFFD, 0xFFFD, -/* 3778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5F2, 0xDC5F, 0xF5F3, -/* 3780 */ 0xC9ED, 0xB9AA, 0xDC6C, 0xDC6D, 0xC7FB, 0xDC6E, 0xDC6F, 0xB6E3, -/* 3788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCC9, -/* 3790 */ 0xB3B5, 0xD4FE, 0xB9EC, 0xD0F9, 0xDE61, 0xE9ED, 0xD7AA, 0xE9EE, -/* 3798 */ 0xC2D6, 0xC8ED, 0xBAE4, 0xE9EF, 0xE9F0, 0xE9F1, 0xD6E1, 0xE9F2, -/* 37A0 */ 0xE9F3, 0xE9F5, 0xE9F4, 0xE9F6, 0xE9F7, 0xC7E1, 0xE9F8, 0xD4D8, -/* 37A8 */ 0xE9F9, 0xBDCE, 0xDE62, 0xE9FA, 0xE9FB, 0xBDCF, 0xE9FC, 0xB8A8, -/* 37B0 */ 0xC1BE, 0xE9FD, 0xB1B2, 0xBBD4, 0xB9F5, 0xE9FE, 0xDE63, 0xEAA1, -/* 37B8 */ 0xEAA2, 0xEAA3, 0xB7F8, 0xBCAD, 0xDE64, 0xCAE4, 0xE0CE, 0xD4AF, -/* 37C0 */ 0xCFBD, 0xD5B7, 0xEAA4, 0xD5DE, 0xEAA5, 0xD0C1, 0xB9BC, 0xDE65, -/* 37C8 */ 0xB4C7, 0xB1D9, 0xDE66, 0xDE67, 0xDE68, 0xC0B1, 0xDE69, 0xDE6A, -/* 37D0 */ 0xDE6B, 0xDE6C, 0xB1E6, 0xB1E7, 0xDE6D, 0xB1E8, 0xDE6E, 0xDE6F, -/* 37D8 */ 0xDE70, 0xDE71, 0xB3BD, 0xC8E8, 0xDE72, 0xDE73, 0xDE74, 0xDE75, -/* 37E0 */ 0xE5C1, 0xDE76, 0xDE77, 0xB1DF, 0xDE78, 0xDE79, 0xDE7A, 0xC1C9, -/* 37E8 */ 0xB4EF, 0xDE7B, 0xDE7C, 0xC7A8, 0xD3D8, 0xDE7D, 0xC6F9, 0xD1B8, -/* 37F0 */ 0xDE7E, 0xB9FD, 0xC2F5, 0xDE80, 0xDE81, 0xDE82, 0xDE83, 0xDE84, -/* 37F8 */ 0xD3AD, 0xDE85, 0xD4CB, 0xBDFC, 0xDE86, 0xE5C2, 0xB7B5, 0xE5C3, -/* 3800 */ 0xDE87, 0xDE88, 0xBBB9, 0xD5E2, 0xDE89, 0xBDF8, 0xD4B6, 0xCEA5, -/* 3808 */ 0xC1AC, 0xB3D9, 0xDE8A, 0xDE8B, 0xCCF6, 0xDE8C, 0xE5C6, 0xE5C4, -/* 3810 */ 0xE5C8, 0xDE8D, 0xE5CA, 0xE5C7, 0xB5CF, 0xC6C8, 0xDE8E, 0xB5FC, -/* 3818 */ 0xE5C5, 0xDE8F, 0xCAF6, 0xDE90, 0xDE91, 0xE5C9, 0xDE92, 0xDE93, -/* 3820 */ 0xDE94, 0xC3D4, 0xB1C5, 0xBCA3, 0xDE95, 0xDE96, 0xDE97, 0xD7B7, -/* 3828 */ 0xDE98, 0xDE99, 0xCDCB, 0xCBCD, 0xCACA, 0xCCD3, 0xE5CC, 0xE5CB, -/* 3830 */ 0xC4E6, 0xDE9A, 0xDE9B, 0xD1A1, 0xD1B7, 0xE5CD, 0xDE9C, 0xE5D0, -/* 3838 */ 0xDE9D, 0xCDB8, 0xD6F0, 0xE5CF, 0xB5DD, 0xDE9E, 0xCDBE, 0xDE9F, -/* 3840 */ 0xE5D1, 0xB6BA, 0xDEA0, 0xDF40, 0xCDA8, 0xB9E4, 0xDF41, 0xCAC5, -/* 3848 */ 0xB3D1, 0xCBD9, 0xD4EC, 0xE5D2, 0xB7EA, 0xDF42, 0xDF43, 0xDF44, -/* 3850 */ 0xE5CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5D5, -/* 3858 */ 0xB4FE, 0xE5D6, 0xDF4B, 0xDF4C, 0xDF4D, 0xDF4E, 0xDF4F, 0xE5D3, -/* 3860 */ 0xE5D4, 0xDF50, 0xD2DD, 0xDF51, 0xDF52, 0xC2DF, 0xB1C6, 0xDF53, -/* 3868 */ 0xD3E2, 0xDF54, 0xDF55, 0xB6DD, 0xCBEC, 0xDF56, 0xE5D7, 0xDF57, -/* 3870 */ 0xDF58, 0xD3F6, 0xDF59, 0xDF5A, 0xDF5B, 0xDF5C, 0xDF5D, 0xB1E9, -/* 3878 */ 0xDF5E, 0xB6F4, 0xE5DA, 0xE5D8, 0xE5D9, 0xB5C0, 0xDF5F, 0xDF60, -/* 3880 */ 0xDF61, 0xD2C5, 0xE5DC, 0xDF62, 0xDF63, 0xE5DE, 0xFFFD, 0xFFFD, -/* 3888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5DD, 0xC7B2, 0xDF6A, 0xD2A3, -/* 3890 */ 0xDF6B, 0xDF6C, 0xE5DB, 0xDF6D, 0xDF6E, 0xDF6F, 0xDF70, 0xD4E2, -/* 3898 */ 0xD5DA, 0xDF71, 0xDF72, 0xDF73, 0xDF74, 0xDF75, 0xE5E0, 0xD7F1, -/* 38A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5E1, -/* 38A8 */ 0xDF7D, 0xB1DC, 0xD1FB, 0xDF7E, 0xE5E2, 0xE5E4, 0xDF80, 0xDF81, -/* 38B0 */ 0xDF82, 0xDF83, 0xE5E3, 0xDF84, 0xDF85, 0xE5E5, 0xDF86, 0xDF87, -/* 38B8 */ 0xDF88, 0xDF89, 0xDF8A, 0xD2D8, 0xDF8B, 0xB5CB, 0xDF8C, 0xE7DF, -/* 38C0 */ 0xDF8D, 0xDAF5, 0xDF8E, 0xDAF8, 0xDF8F, 0xDAF6, 0xDF90, 0xDAF7, -/* 38C8 */ 0xDF91, 0xDF92, 0xDF93, 0xDAFA, 0xD0CF, 0xC4C7, 0xDF94, 0xDF95, -/* 38D0 */ 0xB0EE, 0xDF96, 0xDF97, 0xDF98, 0xD0B0, 0xDF99, 0xDAF9, 0xDF9A, -/* 38D8 */ 0xD3CA, 0xBAAA, 0xDBA2, 0xC7F1, 0xDF9B, 0xDAFC, 0xDAFB, 0xC9DB, -/* 38E0 */ 0xDAFD, 0xDF9C, 0xDBA1, 0xD7DE, 0xDAFE, 0xC1DA, 0xDF9D, 0xDF9E, -/* 38E8 */ 0xDBA5, 0xDF9F, 0xDFA0, 0xD3F4, 0xE040, 0xE041, 0xDBA7, 0xDBA4, -/* 38F0 */ 0xE042, 0xDBA8, 0xE043, 0xE044, 0xBDBC, 0xE045, 0xE046, 0xE047, -/* 38F8 */ 0xC0C9, 0xDBA3, 0xDBA6, 0xD6A3, 0xE048, 0xDBA9, 0xE049, 0xE04A, -/* 3900 */ 0xE04B, 0xDBAD, 0xE04C, 0xE04D, 0xE04E, 0xDBAE, 0xDBAC, 0xBAC2, -/* 3908 */ 0xE04F, 0xE050, 0xE051, 0xBFA4, 0xDBAB, 0xE052, 0xE053, 0xE054, -/* 3910 */ 0xDBAA, 0xD4C7, 0xB2BF, 0xE055, 0xE056, 0xDBAF, 0xE057, 0xB9F9, -/* 3918 */ 0xE058, 0xDBB0, 0xE059, 0xE05A, 0xE05B, 0xE05C, 0xB3BB, 0xE05D, -/* 3920 */ 0xE05E, 0xE05F, 0xB5A6, 0xE060, 0xE061, 0xE062, 0xE063, 0xB6BC, -/* 3928 */ 0xDBB1, 0xE064, 0xE065, 0xE066, 0xB6F5, 0xE067, 0xDBB2, 0xB1C9, -/* 3930 */ 0xE07C, 0xE07D, 0xE07E, 0xE080, 0xDBB4, 0xE081, 0xE082, 0xE083, -/* 3938 */ 0xDBB3, 0xDBB5, 0xDBB7, 0xE08F, 0xDBB6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBB8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBB9, 0xE0A0, -/* 3950 */ 0xE140, 0xDBBA, 0xE141, 0xE142, 0xD3CF, 0xF4FA, 0xC7F5, 0xD7C3, -/* 3958 */ 0xC5E4, 0xF4FC, 0xF4FD, 0xF4FB, 0xE143, 0xBEC6, 0xE144, 0xE145, -/* 3960 */ 0xE146, 0xE147, 0xD0EF, 0xE148, 0xE149, 0xB7D3, 0xE14A, 0xE14B, -/* 3968 */ 0xD4CD, 0xCCAA, 0xE14C, 0xE14D, 0xF5A2, 0xF5A1, 0xBAA8, 0xF4FE, -/* 3970 */ 0xCBD6, 0xE14E, 0xE14F, 0xE150, 0xF5A4, 0xC0D2, 0xE151, 0xB3EA, -/* 3978 */ 0xE152, 0xCDAA, 0xF5A5, 0xF5A3, 0xBDB4, 0xF5A8, 0xE153, 0xF5A9, -/* 3980 */ 0xBDCD, 0xC3B8, 0xBFE1, 0xCBE1, 0xF5AA, 0xE154, 0xE155, 0xE156, -/* 3988 */ 0xF5A6, 0xF5A7, 0xC4F0, 0xE157, 0xE158, 0xE159, 0xE15A, 0xE15B, -/* 3990 */ 0xF5AC, 0xE15C, 0xB4BC, 0xE15D, 0xD7ED, 0xE15E, 0xB4D7, 0xF5AB, -/* 3998 */ 0xF5AE, 0xE15F, 0xE160, 0xF5AD, 0xF5AF, 0xD0D1, 0xFFFD, 0xFFFD, -/* 39A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3D1, 0xC8A9, 0xFFFD, -/* 39A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5B0, 0xF5B1, 0xFFFD, -/* 39B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5B2, 0xE174, 0xE175, -/* 39B8 */ 0xF5B3, 0xF5B4, 0xF5B5, 0xE176, 0xE177, 0xE178, 0xE179, 0xF5B7, -/* 39C0 */ 0xF5B6, 0xE17A, 0xE17B, 0xE17C, 0xE17D, 0xF5B8, 0xE17E, 0xB2C9, -/* 39C8 */ 0xE18B, 0xD3D4, 0xCACD, 0xE18C, 0xC0EF, 0xD6D8, 0xD2B0, 0xC1BF, -/* 39D0 */ 0xE18D, 0xBDF0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8AA, 0xF6CA, 0xE5A0, 0xF6CB, -/* 39E0 */ 0xE69E, 0xE69F, 0xE6A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF7E9, 0xF6CE, 0xE87B, 0xE87C, 0xE87D, -/* 39F0 */ 0xE87E, 0xEEC4, 0xEEC5, 0xEEC6, 0xD5EB, 0xB6A4, 0xEEC8, 0xEEC7, -/* 39F8 */ 0xEEC9, 0xEECA, 0xC7A5, 0xEECB, 0xEECC, 0xE895, 0xB7B0, 0xB5F6, -/* 3A00 */ 0xEECD, 0xEECF, 0xE896, 0xEECE, 0xE897, 0xB8C6, 0xEED0, 0xEED1, -/* 3A08 */ 0xEED2, 0xB6DB, 0xB3AE, 0xD6D3, 0xC4C6, 0xB1B5, 0xB8D6, 0xEED3, -/* 3A10 */ 0xEED4, 0xD4BF, 0xC7D5, 0xBEFB, 0xCED9, 0xB9B3, 0xEED6, 0xEED5, -/* 3A18 */ 0xEED8, 0xEED7, 0xC5A5, 0xEED9, 0xEEDA, 0xC7AE, 0xEEDB, 0xC7AF, -/* 3A20 */ 0xEEDC, 0xB2A7, 0xEEDD, 0xEEDE, 0xEEDF, 0xEEE0, 0xEEE1, 0xD7EA, -/* 3A28 */ 0xEEE2, 0xEEE3, 0xBCD8, 0xEEE4, 0xD3CB, 0xCCFA, 0xB2AC, 0xC1E5, -/* 3A30 */ 0xEEE5, 0xC7A6, 0xC3AD, 0xE898, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE899, 0xEEED, 0xEEEE, 0xEEEF, 0xE89A, -/* 3A40 */ 0xE89B, 0xEEF0, 0xEEF1, 0xEEF2, 0xEEF4, 0xEEF3, 0xE89C, 0xEEF5, -/* 3A48 */ 0xCDAD, 0xC2C1, 0xEEF6, 0xEEF7, 0xEEF8, 0xD5A1, 0xEEF9, 0xCFB3, -/* 3A50 */ 0xEEFA, 0xEEFB, 0xE89D, 0xEEFC, 0xEEFD, 0xEFA1, 0xEEFE, 0xEFA2, -/* 3A58 */ 0xB8F5, 0xC3FA, 0xEFA3, 0xEFA4, 0xBDC2, 0xD2BF, 0xB2F9, 0xEFA5, -/* 3A60 */ 0xEFA6, 0xEFA7, 0xD2F8, 0xEFA8, 0xD6FD, 0xEFA9, 0xC6CC, 0xE89E, -/* 3A68 */ 0xEFAA, 0xEFAB, 0xC1B4, 0xEFAC, 0xCFFA, 0xCBF8, 0xEFAE, 0xEFAD, -/* 3A70 */ 0xB3FA, 0xB9F8, 0xEFAF, 0xEFB0, 0xD0E2, 0xEFB1, 0xEFB2, 0xB7E6, -/* 3A78 */ 0xD0BF, 0xEFB3, 0xEFB4, 0xEFB5, 0xC8F1, 0xCCE0, 0xEFB6, 0xEFB7, -/* 3A80 */ 0xEFB8, 0xEFB9, 0xEFBA, 0xD5E0, 0xEFBB, 0xB4ED, 0xC3AA, 0xEFBC, -/* 3A88 */ 0xE89F, 0xEFBD, 0xEFBE, 0xEFBF, 0xE8A0, 0xCEFD, 0xEFC0, 0xC2E0, -/* 3A90 */ 0xB4B8, 0xD7B6, 0xBDF5, 0xE940, 0xCFC7, 0xEFC3, 0xEFC1, 0xEFC2, -/* 3A98 */ 0xEFC4, 0xB6A7, 0xBCFC, 0xBEE2, 0xC3CC, 0xEFC5, 0xEFC6, 0xE941, -/* 3AA0 */ 0xEFC7, 0xEFCF, 0xEFC8, 0xEFC9, 0xEFCA, 0xC7C2, 0xEFF1, 0xB6CD, -/* 3AA8 */ 0xEFCB, 0xE942, 0xEFCC, 0xEFCD, 0xB6C6, 0xC3BE, 0xEFCE, 0xE943, -/* 3AB0 */ 0xEFD0, 0xEFD1, 0xEFD2, 0xD5F2, 0xE944, 0xEFD3, 0xC4F7, 0xE945, -/* 3AB8 */ 0xEFD4, 0xC4F8, 0xEFD5, 0xEFD6, 0xB8E4, 0xB0F7, 0xEFD7, 0xEFD8, -/* 3AC0 */ 0xEFD9, 0xE946, 0xEFDA, 0xEFDB, 0xEFDC, 0xEFDD, 0xE947, 0xEFDE, -/* 3AC8 */ 0xBEB5, 0xEFE1, 0xEFDF, 0xEFE0, 0xE948, 0xEFE2, 0xEFE3, 0xC1CD, -/* 3AD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AD8 */ 0xFFFD, 0xC0D8, 0xE949, 0xEFED, 0xC1AD, 0xEFEE, 0xEFEF, 0xEFF0, -/* 3AE0 */ 0xE94A, 0xE94B, 0xCFE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB3A4, 0xC3C5, 0xE3C5, 0xC9C1, 0xE3C6, -/* 3AF0 */ 0xEA5C, 0xB1D5, 0xCECA, 0xB4B3, 0xC8F2, 0xE3C7, 0xCFD0, 0xE3C8, -/* 3AF8 */ 0xBCE4, 0xE3C9, 0xE3CA, 0xC3C6, 0xD5A2, 0xC4D6, 0xB9EB, 0xCEC5, -/* 3B00 */ 0xE3CB, 0xC3F6, 0xE3CC, 0xEA5D, 0xB7A7, 0xB8F3, 0xBAD2, 0xE3CD, -/* 3B08 */ 0xE3CE, 0xD4C4, 0xE3CF, 0xEA5E, 0xE3D0, 0xD1CB, 0xE3D1, 0xE3D2, -/* 3B10 */ 0xE3D3, 0xE3D4, 0xD1D6, 0xE3D5, 0xB2FB, 0xC0BB, 0xE3D6, 0xEA5F, -/* 3B18 */ 0xC0AB, 0xE3D7, 0xE3D8, 0xE3D9, 0xEA60, 0xE3DA, 0xE3DB, 0xEA61, -/* 3B20 */ 0xB8B7, 0xDAE2, 0xEA62, 0xB6D3, 0xEA63, 0xDAE4, 0xDAE3, 0xFFFD, -/* 3B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAE6, 0xEA6B, -/* 3B30 */ 0xEA6C, 0xEA6D, 0xC8EE, 0xEA6E, 0xEA6F, 0xDAE5, 0xB7C0, 0xD1F4, -/* 3B38 */ 0xD2F5, 0xD5F3, 0xBDD7, 0xEA70, 0xEA71, 0xEA72, 0xEA73, 0xD7E8, -/* 3B40 */ 0xDAE8, 0xDAE7, 0xEA74, 0xB0A2, 0xCDD3, 0xEA75, 0xDAE9, 0xEA76, -/* 3B48 */ 0xB8BD, 0xBCCA, 0xC2BD, 0xC2A4, 0xB3C2, 0xDAEA, 0xEA77, 0xC2AA, -/* 3B50 */ 0xC4B0, 0xBDB5, 0xEA78, 0xEA79, 0xCFDE, 0xEA7A, 0xEA7B, 0xEA7C, -/* 3B58 */ 0xDAEB, 0xC9C2, 0xEA7D, 0xEA7E, 0xEA80, 0xEA81, 0xEA82, 0xB1DD, -/* 3B60 */ 0xEA83, 0xEA84, 0xEA85, 0xDAEC, 0xEA86, 0xB6B8, 0xD4BA, 0xEA87, -/* 3B68 */ 0xB3FD, 0xEA88, 0xEA89, 0xDAED, 0xD4C9, 0xCFD5, 0xC5E3, 0xEA8A, -/* 3B70 */ 0xDAEE, 0xEA8B, 0xEA8C, 0xEA8D, 0xEA8E, 0xEA8F, 0xDAEF, 0xEA90, -/* 3B78 */ 0xDAF0, 0xC1EA, 0xCCD5, 0xCFDD, 0xD3E7, 0xC2A1, 0xEA9E, 0xDAF1, -/* 3B80 */ 0xEA9F, 0xEAA0, 0xCBE5, 0xEB40, 0xDAF2, 0xEB41, 0xCBE6, 0xD2FE, -/* 3B88 */ 0xEB42, 0xEB43, 0xEB44, 0xB8F4, 0xEB45, 0xEB46, 0xDAF3, 0xB0AF, -/* 3B90 */ 0xCFB6, 0xEB47, 0xEB48, 0xD5CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBED, 0xFFFD, -/* 3BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAF4, -/* 3BA8 */ 0xEB5B, 0xEB5C, 0xE3C4, 0xEB5D, 0xEB5E, 0xC1A5, 0xEB5F, 0xEB60, -/* 3BB0 */ 0xF6BF, 0xEB61, 0xEB62, 0xF6C0, 0xF6C1, 0xC4D1, 0xEB63, 0xC8B8, -/* 3BB8 */ 0xD1E3, 0xEB64, 0xEB65, 0xD0DB, 0xD1C5, 0xBCAF, 0xB9CD, 0xEB66, -/* 3BC0 */ 0xEFF4, 0xEB67, 0xEB68, 0xB4C6, 0xD3BA, 0xF6C2, 0xB3FB, 0xEB69, -/* 3BC8 */ 0xEB6A, 0xF6C3, 0xEB6B, 0xEB6C, 0xB5F1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6C5, -/* 3BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3EA, -/* 3BE0 */ 0xF6A7, 0xD1A9, 0xEB7E, 0xEB80, 0xEB81, 0xEB82, 0xF6A9, 0xEB83, -/* 3BE8 */ 0xEB84, 0xEB85, 0xF6A8, 0xEB86, 0xEB87, 0xC1E3, 0xC0D7, 0xEB88, -/* 3BF0 */ 0xB1A2, 0xEB89, 0xEB8A, 0xEB8B, 0xEB8C, 0xCEED, 0xEB8D, 0xD0E8, -/* 3BF8 */ 0xF6AB, 0xEB8E, 0xEB8F, 0xCFF6, 0xEB90, 0xF6AA, 0xD5F0, 0xF6AC, -/* 3C00 */ 0xC3B9, 0xEB91, 0xEB92, 0xEB93, 0xBBF4, 0xF6AE, 0xF6AD, 0xEB94, -/* 3C08 */ 0xEB95, 0xEB96, 0xC4DE, 0xEB97, 0xEB98, 0xC1D8, 0xEB99, 0xEB9A, -/* 3C10 */ 0xEB9B, 0xEB9C, 0xEB9D, 0xCBAA, 0xEB9E, 0xCFBC, 0xEB9F, 0xEBA0, -/* 3C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C20 */ 0xFFFD, 0xF6AF, 0xEC49, 0xEC4A, 0xF6B0, 0xEC4B, 0xEC4C, 0xF6B1, -/* 3C28 */ 0xEC4D, 0xC2B6, 0xEC4E, 0xEC4F, 0xEC50, 0xEC51, 0xEC52, 0xB0D4, -/* 3C30 */ 0xC5F9, 0xEC53, 0xEC54, 0xEC55, 0xEC56, 0xF6B2, 0xC7E0, 0xF6A6, -/* 3C38 */ 0xEC6A, 0xEC6B, 0xBEB8, 0xEC6C, 0xEC6D, 0xBEB2, 0xEC6E, 0xB5E5, -/* 3C40 */ 0xEC6F, 0xEC70, 0xB7C7, 0xEC71, 0xBFBF, 0xC3D2, 0xC3E6, 0xEC72, -/* 3C48 */ 0xEC73, 0xD8CC, 0xEC74, 0xEC75, 0xEC76, 0xB8EF, 0xFFFD, 0xFFFD, -/* 3C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEC80, 0xBDF9, -/* 3C58 */ 0xD1A5, 0xEC81, 0xB0D0, 0xEC82, 0xEC83, 0xEC84, 0xEC85, 0xEC86, -/* 3C60 */ 0xF7B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C68 */ 0xFFFD, 0xF7B1, 0xEC8F, 0xEC90, 0xEC91, 0xEC92, 0xEC93, 0xD0AC, -/* 3C70 */ 0xEC94, 0xB0B0, 0xEC95, 0xEC96, 0xEC97, 0xF7B2, 0xF7B3, 0xEC98, -/* 3C78 */ 0xF7B4, 0xEC99, 0xEC9A, 0xEC9B, 0xC7CA, 0xEC9C, 0xEC9D, 0xEC9E, -/* 3C80 */ 0xEC9F, 0xECA0, 0xED40, 0xED41, 0xBECF, 0xED42, 0xED43, 0xF7B7, -/* 3C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7B6, -/* 3C90 */ 0xED4B, 0xB1DE, 0xED4C, 0xF7B5, 0xED4D, 0xED4E, 0xF7B8, 0xED4F, -/* 3C98 */ 0xF7B9, 0xED80, 0xED81, 0xCEA4, 0xC8CD, 0xED82, 0xBAAB, 0xE8B8, -/* 3CA0 */ 0xE8B9, 0xE8BA, 0xBEC2, 0xED83, 0xED84, 0xED85, 0xED86, 0xED87, -/* 3CA8 */ 0xD2F4, 0xED88, 0xD4CF, 0xC9D8, 0xD2B3, 0xB6A5, 0xC7EA, 0xF1FC, -/* 3CB0 */ 0xCFEE, 0xCBB3, 0xD0EB, 0xE7EF, 0xCDE7, 0xB9CB, 0xB6D9, 0xF1FD, -/* 3CB8 */ 0xB0E4, 0xCBCC, 0xF1FE, 0xD4A4, 0xC2AD, 0xC1EC, 0xC6C4, 0xBEB1, -/* 3CC0 */ 0xF2A1, 0xBCD5, 0xEF46, 0xF2A2, 0xF2A3, 0xEF47, 0xF2A4, 0xD2C3, -/* 3CC8 */ 0xC6B5, 0xEF48, 0xCDC7, 0xF2A5, 0xEF49, 0xD3B1, 0xBFC5, 0xCCE2, -/* 3CD0 */ 0xEF4A, 0xF2A6, 0xF2A7, 0xD1D5, 0xB6EE, 0xF2A8, 0xF2A9, 0xB5DF, -/* 3CD8 */ 0xF2AA, 0xF2AB, 0xEF4B, 0xB2FC, 0xF2AC, 0xF2AD, 0xC8A7, 0xB7E7, -/* 3CE0 */ 0xEF72, 0xEF73, 0xECA9, 0xECAA, 0xECAB, 0xEF74, 0xECAC, 0xEF75, -/* 3CE8 */ 0xEF76, 0xC6AE, 0xECAD, 0xECAE, 0xEF77, 0xEF78, 0xEF79, 0xB7C9, -/* 3CF0 */ 0xCAB3, 0xEF7A, 0xEF7B, 0xEF7C, 0xEF7D, 0xEF7E, 0xEF80, 0xEF81, -/* 3CF8 */ 0xE2B8, 0xF7CF, 0xF040, 0xF041, 0xF042, 0xF043, 0xF044, 0xF7D0, -/* 3D00 */ 0xF045, 0xF046, 0xB2CD, 0xF7D3, 0xF7D2, 0xE2BB, 0xF097, 0xBCA2, -/* 3D08 */ 0xF098, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7B9, -/* 3D10 */ 0xD2FB, 0xBDA4, 0xCACE, 0xB1A5, 0xCBC7, 0xF099, 0xE2C2, 0xB6FC, -/* 3D18 */ 0xC8C4, 0xE2C3, 0xF09A, 0xF09B, 0xBDC8, 0xF09C, 0xB1FD, 0xE2C4, -/* 3D20 */ 0xF09D, 0xB6F6, 0xE2C5, 0xC4D9, 0xF09E, 0xF09F, 0xE2C6, 0xCFDA, -/* 3D28 */ 0xB9DD, 0xE2C7, 0xC0A1, 0xF0A0, 0xE2C8, 0xB2F6, 0xF140, 0xE2C9, -/* 3D30 */ 0xF141, 0xC1F3, 0xE2CA, 0xE2CB, 0xC2F8, 0xE2CC, 0xE2CD, 0xE2CE, -/* 3D38 */ 0xCAD7, 0xD8B8, 0xD9E5, 0xCFE3, 0xF0A5, 0xF14D, 0xF14E, 0xDCB0, -/* 3D40 */ 0xC2ED, 0xD4A6, 0xCDD4, 0xD1B1, 0xB3DB, 0xC7FD, 0xF352, 0xB2B5, -/* 3D48 */ 0xC2BF, 0xE6E0, 0xCABB, 0xE6E1, 0xE6E2, 0xBED4, 0xE6E3, 0xD7A4, -/* 3D50 */ 0xCDD5, 0xE6E5, 0xBCDD, 0xE6E4, 0xE6E6, 0xE6E7, 0xC2EE, 0xF353, -/* 3D58 */ 0xBDBE, 0xE6E8, 0xC2E6, 0xBAA7, 0xE6E9, 0xF354, 0xE6EA, 0xB3D2, -/* 3D60 */ 0xD1E9, 0xF355, 0xF356, 0xBFA5, 0xE6EB, 0xC6EF, 0xE6EC, 0xE6ED, -/* 3D68 */ 0xF357, 0xF358, 0xE6EE, 0xC6AD, 0xE6EF, 0xF359, 0xC9A7, 0xE6F0, -/* 3D70 */ 0xE6F1, 0xE6F2, 0xE5B9, 0xE6F3, 0xE6F4, 0xC2E2, 0xE6F5, 0xE6F6, -/* 3D78 */ 0xD6E8, 0xE6F7, 0xF35A, 0xE6F8, 0xB9C7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7BB, 0xF7BA, 0xF362, 0xF363, -/* 3D88 */ 0xF364, 0xF365, 0xF7BE, 0xF7BC, 0xBAA1, 0xF366, 0xF7BF, 0xF367, -/* 3D90 */ 0xF7C0, 0xF368, 0xF369, 0xF36A, 0xF7C2, 0xF7C1, 0xF7C4, 0xF36B, -/* 3D98 */ 0xF36C, 0xF7C3, 0xF36D, 0xF36E, 0xF36F, 0xF370, 0xF371, 0xF7C5, -/* 3DA0 */ 0xF7C6, 0xF372, 0xF373, 0xF374, 0xF375, 0xF7C7, 0xF376, 0xCBE8, -/* 3DA8 */ 0xF377, 0xF378, 0xF379, 0xF37A, 0xB8DF, 0xF37B, 0xF37C, 0xF37D, -/* 3DB0 */ 0xF37E, 0xF380, 0xF381, 0xF7D4, 0xF382, 0xF7D5, 0xF383, 0xF384, -/* 3DB8 */ 0xF385, 0xF386, 0xF7D6, 0xF387, 0xF388, 0xF389, 0xF38A, 0xF7D8, -/* 3DC0 */ 0xF38B, 0xF7DA, 0xF38C, 0xF7D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7DB, 0xF396, 0xF7D9, -/* 3DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7D7, -/* 3DD8 */ 0xF39E, 0xF39F, 0xF3A0, 0xF440, 0xF7DC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF7DD, 0xF447, 0xF448, 0xF449, 0xF7DE, -/* 3DE8 */ 0xF7DF, 0xF455, 0xF456, 0xF457, 0xF7E0, 0xDBCB, 0xF463, 0xF464, -/* 3DF0 */ 0xD8AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DF8 */ 0xFFFD, 0xE5F7, 0xB9ED, 0xF46D, 0xF46E, 0xF46F, 0xF470, 0xBFFD, -/* 3E00 */ 0xBBEA, 0xF7C9, 0xC6C7, 0xF7C8, 0xF471, 0xF7CA, 0xF7CC, 0xF7CB, -/* 3E08 */ 0xF472, 0xF473, 0xF474, 0xF7CD, 0xF475, 0xCEBA, 0xF476, 0xF7CE, -/* 3E10 */ 0xF477, 0xF478, 0xC4A7, 0xF780, 0xD3E3, 0xF781, 0xF782, 0xF6CF, -/* 3E18 */ 0xF783, 0xC2B3, 0xF6D0, 0xF784, 0xF785, 0xF6D1, 0xF6D2, 0xF6D3, -/* 3E20 */ 0xF6D4, 0xF786, 0xF787, 0xF6D6, 0xF788, 0xB1AB, 0xF6D7, 0xF789, -/* 3E28 */ 0xF6D8, 0xF6D9, 0xF6DA, 0xF78A, 0xF6DB, 0xF6DC, 0xF78B, 0xF78C, -/* 3E30 */ 0xF78D, 0xF78E, 0xF6DD, 0xF6DE, 0xCFCA, 0xF78F, 0xFFFD, 0xFFFD, -/* 3E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0F0, 0xF6E5, 0xF6E6, 0xF6E7, -/* 3E40 */ 0xF6E8, 0xF6E9, 0xF790, 0xF6EA, 0xF791, 0xF6EB, 0xF6EC, 0xF792, -/* 3E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E50 */ 0xBEA8, 0xF793, 0xF6F5, 0xF6F6, 0xF6F7, 0xF6F8, 0xF794, 0xF795, -/* 3E58 */ 0xF796, 0xF797, 0xF798, 0xC8FA, 0xF6F9, 0xF6FA, 0xF6FB, 0xF6FC, -/* 3E60 */ 0xF799, 0xF79A, 0xF6FD, 0xF6FE, 0xF7A1, 0xF7A2, 0xF7A3, 0xF7A4, -/* 3E68 */ 0xF7A5, 0xF79B, 0xF79C, 0xF7A6, 0xF7A7, 0xF7A8, 0xB1EE, 0xF7A9, -/* 3E70 */ 0xF7AA, 0xF7AB, 0xF79D, 0xF79E, 0xF7AC, 0xF7AD, 0xC1DB, 0xF7AE, -/* 3E78 */ 0xF79F, 0xF7A0, 0xF7AF, 0xC4F1, 0xF0AF, 0xBCA6, 0xF0B0, 0xC3F9, -/* 3E80 */ 0xFB5C, 0xC5B8, 0xD1BB, 0xFB5D, 0xF0B1, 0xF0B2, 0xF0B3, 0xF0B4, -/* 3E88 */ 0xF0B5, 0xD1BC, 0xFB5E, 0xD1EC, 0xFB5F, 0xF0B7, 0xF0B6, 0xD4A7, -/* 3E90 */ 0xFB60, 0xCDD2, 0xF0B8, 0xF0BA, 0xF0B9, 0xF0BB, 0xF0BC, 0xFB61, -/* 3E98 */ 0xFB62, 0xB8EB, 0xF0BD, 0xBAE8, 0xFB63, 0xF0BE, 0xF0BF, 0xBEE9, -/* 3EA0 */ 0xF0C0, 0xB6EC, 0xF0C1, 0xF0C2, 0xF0C3, 0xF0C4, 0xC8B5, 0xF0C5, -/* 3EA8 */ 0xF0C6, 0xFB64, 0xF0C7, 0xC5F4, 0xFB65, 0xF0C8, 0xFB66, 0xFB67, -/* 3EB0 */ 0xFB68, 0xF0C9, 0xFB69, 0xF0CA, 0xF7BD, 0xFB6A, 0xF0CB, 0xF0CC, -/* 3EB8 */ 0xF0CD, 0xFB6B, 0xF0CE, 0xFB6C, 0xFB6D, 0xFB6E, 0xFB6F, 0xF0CF, -/* 3EC0 */ 0xBAD7, 0xFB70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EC8 */ 0xFFFD, 0xF0D8, 0xFB71, 0xFB72, 0xD3A5, 0xF0D7, 0xFB73, 0xF0D9, -/* 3ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3ED8 */ 0xFFFD, 0xFFFD, 0xF5BA, 0xC2B9, 0xFB7E, 0xFB80, 0xF7E4, 0xFB81, -/* 3EE0 */ 0xFB82, 0xFB83, 0xFB84, 0xF7E5, 0xF7E6, 0xFB85, 0xFB86, 0xF7E7, -/* 3EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7E8, 0xC2B4, -/* 3EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EF8 */ 0xFFFD, 0xF7EA, 0xFB96, 0xF7EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F00 */ 0xFFFD, 0xFFFD, 0xC2F3, 0xFB9D, 0xFB9E, 0xFB9F, 0xFBA0, 0xFFFD, -/* 3F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F10 */ 0xF4F0, 0xFC49, 0xFC4A, 0xFC4B, 0xF4EF, 0xFC4C, 0xFC4D, 0xC2E9, -/* 3F18 */ 0xFC4E, 0xF7E1, 0xF7E2, 0xFC4F, 0xFC50, 0xFC51, 0xFC52, 0xFC53, -/* 3F20 */ 0xBBC6, 0xFC54, 0xFC55, 0xFC56, 0xFC57, 0xD9E4, 0xFC58, 0xFC59, -/* 3F28 */ 0xFC5A, 0xCAF2, 0xC0E8, 0xF0A4, 0xFC5B, 0xBADA, 0xFC5C, 0xFC5D, -/* 3F30 */ 0xC7AD, 0xFC5E, 0xFC5F, 0xFC60, 0xC4AC, 0xFC61, 0xFC62, 0xF7EC, -/* 3F38 */ 0xF7ED, 0xF7EE, 0xFC63, 0xF7F0, 0xF7EF, 0xFC64, 0xF7F1, 0xFC65, -/* 3F40 */ 0xFC66, 0xF7F4, 0xFC67, 0xF7F3, 0xFC68, 0xF7F2, 0xF7F5, 0xFC69, -/* 3F48 */ 0xFC6A, 0xFC6B, 0xFC6C, 0xF7F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDE9, 0xFC76, 0xEDEA, -/* 3F58 */ 0xEDEB, 0xFC77, 0xF6BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F60 */ 0xFFFD, 0xFFFD, 0xFC80, 0xFC81, 0xFC82, 0xFC83, 0xFC84, 0xF6BD, -/* 3F68 */ 0xFC85, 0xF6BE, 0xB6A6, 0xFC86, 0xD8BE, 0xFC87, 0xFC88, 0xB9C4, -/* 3F70 */ 0xFC89, 0xFC8A, 0xFC8B, 0xD8BB, 0xFC8C, 0xDCB1, 0xFFFD, 0xFFFD, -/* 3F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAF3, 0xFC93, 0xF7F7, 0xFFFD, -/* 3F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F88 */ 0xF7F8, 0xFC9D, 0xFC9E, 0xF7F9, 0xFC9F, 0xFCA0, 0xFD40, 0xFD41, -/* 3F90 */ 0xFD42, 0xFD43, 0xFD44, 0xF7FB, 0xFD45, 0xF7FA, 0xFD46, 0xB1C7, -/* 3F98 */ 0xFD47, 0xF7FC, 0xF7FD, 0xFD48, 0xFD49, 0xFD4A, 0xFD4B, 0xFD4C, -/* 3FA0 */ 0xF7FE, 0xC6EB, 0xECB4, 0xB3DD, 0xF6B3, 0xFD86, 0xFD87, 0xF6B4, -/* 3FA8 */ 0xC1E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8A3, -/* 3FB0 */ 0xF6BB, 0xC1FA, 0xB9A8, 0xEDE8, 0xFD94, 0xFD95, 0xFD96, 0xB9EA, -/* 3FB8 */ 0xD9DF, 0xFD97, 0xFD98, 0xFD99, 0xFD9A, 0xFD9B, 0xFD9F, 0xFFFD, -/* 3FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FC8 */ 0xFDA0, 0xFE40, 0xFE41, 0xFE42, 0xFE43, 0xFFFD, 0xFE44, 0xFFFD, -/* 3FD0 */ 0xFE45, 0xFE46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFE47, 0xFFFD, 0xFFFD, -/* 3FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFE48, 0xFE49, 0xFE4A, 0xFFFD, -/* 3FE0 */ 0xFE4B, 0xFE4C, 0xFFFD, 0xFFFD, 0xFE4D, 0xFE4E, 0xFE4F, 0xA955, -/* 3FE8 */ 0xA6F2, 0xFFFD, 0xA6F4, 0xA6F5, 0xA6E0, 0xA6E1, 0xA6F0, 0xA6F1, -/* 3FF0 */ 0xA6E2, 0xA6E3, 0xA6EE, 0xA6EF, 0xA6E6, 0xA6E7, 0xA6E4, 0xA6E5, -/* 3FF8 */ 0xA6E8, 0xA6E9, 0xA6EA, 0xA6EB, 0xA972, 0xA973, 0xA974, 0xA975, -/* 4000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4008 */ 0xFFFD, 0xFFFD, 0xA980, 0xA981, 0xA982, 0xA983, 0xA984, 0xFFFD, -/* 4010 */ 0xA985, 0xA986, 0xA987, 0xA988, 0xA3A1, 0xA3A2, 0xA3A3, 0xA1E7, -/* 4018 */ 0xA1E9, 0xA1EA, 0xA956, 0xA3FE, 0xA957, 0xA3A4, -/* End of table Total Length = 0x4AA9 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp949.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp949.uf deleted file mode 100644 index d64dd22fd89..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp949.uf +++ /dev/null @@ -1,15469 +0,0 @@ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = A5C1 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = A5D2 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = A5E1 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = A5F2 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0410 - srcEnd = 0415 - destBegin = ACA1 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0416 - srcEnd = 042F - destBegin = ACA8 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0430 - srcEnd = 0435 - destBegin = ACD1 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 0436 - srcEnd = 044F - destBegin = ACD8 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2160 - srcEnd = 2169 - destBegin = A5B0 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2170 - srcEnd = 2179 - destBegin = A5A1 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2460 - srcEnd = 246E - destBegin = A8E7 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 2474 - srcEnd = 2482 - destBegin = A9E7 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 249C - srcEnd = 24B5 - destBegin = A9CD -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 24D0 - srcEnd = 24E9 - destBegin = A8CD -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 2543 - srcEnd = 254A - destBegin = A6DD -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 3008 - srcEnd = 3011 - destBegin = A1B4 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = AAA1 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 30A1 - srcEnd = 30F6 - destBegin = ABA1 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 3131 - srcEnd = 318E - destBegin = A4A1 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 3200 - srcEnd = 321B - destBegin = A9B1 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 3260 - srcEnd = 327B - destBegin = A8B1 -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 3399 - srcEnd = 33A2 - destBegin = A7AB -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 33B0 - srcEnd = 33B9 - destBegin = A7BF -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 33BA - srcEnd = 33BF - destBegin = A7CE -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = AC10 - srcEnd = AC17 - destBegin = B0A8 -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = AC25 - srcEnd = AC2B - destBegin = 8150 -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = AC41 - srcEnd = AC4A - destBegin = 8169 -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = AC4E - srcEnd = AC53 - destBegin = 8174 -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = AC5D - srcEnd = AC6F - destBegin = 8186 -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = AC95 - srcEnd = AC9B - destBegin = 81AC -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = ACA2 - srcEnd = ACA7 - destBegin = 81B4 -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = ACB1 - srcEnd = ACB7 - destBegin = 81BD -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = ACCD - srcEnd = ACD4 - destBegin = 81D0 -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = ACD8 - srcEnd = ACDF - destBegin = 81D9 -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = AD21 - srcEnd = AD28 - destBegin = 824B -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = AD2E - srcEnd = AD33 - destBegin = 8255 -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = AD3D - srcEnd = AD43 - destBegin = 8266 -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = AD4A - srcEnd = AD4F - destBegin = 826F -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = AD59 - srcEnd = AD60 - destBegin = 8281 -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = AD64 - srcEnd = AD6B - destBegin = 828A -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = AD91 - srcEnd = AD9B - destBegin = 82A6 -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = AD9E - srcEnd = ADA3 - destBegin = 82B1 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = ADA5 - srcEnd = ADB6 - destBegin = 82B7 -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = ADB8 - srcEnd = ADBF - destBegin = 82C9 -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = ADC9 - srcEnd = ADCF - destBegin = 82D6 -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = ADD4 - srcEnd = ADDB - destBegin = 82DE -End of Item 002E - -Begin of Item 002F - Format 0 - srcBegin = ADE5 - srcEnd = ADF7 - destBegin = 82EC -End of Item 002F - -Begin of Item 0030 - Format 0 - srcBegin = AE02 - srcEnd = AE07 - destBegin = 8345 -End of Item 0030 - -Begin of Item 0031 - Format 0 - srcBegin = AE0E - srcEnd = AE13 - destBegin = 834D -End of Item 0031 - -Begin of Item 0032 - Format 0 - srcBegin = AE15 - srcEnd = AE1C - destBegin = 8353 -End of Item 0032 - -Begin of Item 0033 - Format 0 - srcBegin = AE1D - srcEnd = AE2F - destBegin = 8361 -End of Item 0033 - -Begin of Item 0034 - Format 0 - srcBegin = AE71 - srcEnd = AE77 - destBegin = 839F -End of Item 0034 - -Begin of Item 0035 - Format 0 - srcBegin = AE7E - srcEnd = AE83 - destBegin = 83A7 -End of Item 0035 - -Begin of Item 0036 - Format 0 - srcBegin = AE86 - srcEnd = AE8B - destBegin = 83AD -End of Item 0036 - -Begin of Item 0037 - Format 0 - srcBegin = AE8D - srcEnd = AEBB - destBegin = 83B3 -End of Item 0037 - -Begin of Item 0038 - Format 0 - srcBegin = AEC5 - srcEnd = AECB - destBegin = 83E6 -End of Item 0038 - -Begin of Item 0039 - Format 0 - srcBegin = AED2 - srcEnd = AED7 - destBegin = 83EE -End of Item 0039 - -Begin of Item 003A - Format 0 - srcBegin = AEDD - srcEnd = AEE5 - destBegin = 83F6 -End of Item 003A - -Begin of Item 003B - Format 0 - srcBegin = AEEE - srcEnd = AEF3 - destBegin = 8446 -End of Item 003B - -Begin of Item 003C - Format 0 - srcBegin = AEFD - srcEnd = AF05 - destBegin = 8452 -End of Item 003C - -Begin of Item 003D - Format 0 - srcBegin = AF11 - srcEnd = AF23 - destBegin = 8468 -End of Item 003D - -Begin of Item 003E - Format 0 - srcBegin = AF24 - srcEnd = AF2B - destBegin = 8481 -End of Item 003E - -Begin of Item 003F - Format 0 - srcBegin = AF35 - srcEnd = AF3B - destBegin = 848D -End of Item 003F - -Begin of Item 0040 - Format 0 - srcBegin = AF4A - srcEnd = AF4F - destBegin = 849A -End of Item 0040 - -Begin of Item 0041 - Format 0 - srcBegin = AF51 - srcEnd = AF5B - destBegin = 84A0 -End of Item 0041 - -Begin of Item 0042 - Format 0 - srcBegin = AF5E - srcEnd = AF63 - destBegin = 84AB -End of Item 0042 - -Begin of Item 0043 - Format 0 - srcBegin = AF66 - srcEnd = AF78 - destBegin = 84B1 -End of Item 0043 - -Begin of Item 0044 - Format 0 - srcBegin = AF7A - srcEnd = AF7F - destBegin = 84C4 -End of Item 0044 - -Begin of Item 0045 - Format 0 - srcBegin = AF89 - srcEnd = AF8F - destBegin = 84D0 -End of Item 0045 - -Begin of Item 0046 - Format 0 - srcBegin = AF96 - srcEnd = AF9B - destBegin = 84DA -End of Item 0046 - -Begin of Item 0047 - Format 0 - srcBegin = AF9D - srcEnd = AFB7 - destBegin = 84E0 -End of Item 0047 - -Begin of Item 0048 - Format 0 - srcBegin = AFC1 - srcEnd = AFC6 - destBegin = 8542 -End of Item 0048 - -Begin of Item 0049 - Format 0 - srcBegin = AFD5 - srcEnd = AFDB - destBegin = 854F -End of Item 0049 - -Begin of Item 004A - Format 0 - srcBegin = AFE2 - srcEnd = AFE7 - destBegin = 8561 -End of Item 004A - -Begin of Item 004B - Format 0 - srcBegin = AFEA - srcEnd = AFEF - destBegin = 8567 -End of Item 004B - -Begin of Item 004C - Format 0 - srcBegin = AFF9 - srcEnd = AFFF - destBegin = 8572 -End of Item 004C - -Begin of Item 004D - Format 0 - srcBegin = B005 - srcEnd = B00B - destBegin = 8581 -End of Item 004D - -Begin of Item 004E - Format 0 - srcBegin = B015 - srcEnd = B01B - destBegin = 858E -End of Item 004E - -Begin of Item 004F - Format 0 - srcBegin = B01E - srcEnd = B027 - destBegin = 8595 -End of Item 004F - -Begin of Item 0050 - Format 0 - srcBegin = B029 - srcEnd = B043 - destBegin = 859F -End of Item 0050 - -Begin of Item 0051 - Format 0 - srcBegin = B05E - srcEnd = B07B - destBegin = 85C8 -End of Item 0051 - -Begin of Item 0052 - Format 0 - srcBegin = B085 - srcEnd = B08B - destBegin = 85EB -End of Item 0052 - -Begin of Item 0053 - Format 0 - srcBegin = B092 - srcEnd = B097 - destBegin = 85F4 -End of Item 0053 - -Begin of Item 0054 - Format 0 - srcBegin = B0BD - srcEnd = B0C3 - destBegin = 864C -End of Item 0054 - -Begin of Item 0055 - Format 0 - srcBegin = B0CA - srcEnd = B0CF - destBegin = 8654 -End of Item 0055 - -Begin of Item 0056 - Format 0 - srcBegin = B0D9 - srcEnd = B0DF - destBegin = 8665 -End of Item 0056 - -Begin of Item 0057 - Format 0 - srcBegin = B0E6 - srcEnd = B0F0 - destBegin = 8670 -End of Item 0057 - -Begin of Item 0058 - Format 0 - srcBegin = B0F1 - srcEnd = B107 - destBegin = 8681 -End of Item 0058 - -Begin of Item 0059 - Format 0 - srcBegin = B12D - srcEnd = B133 - destBegin = 86AC -End of Item 0059 - -Begin of Item 005A - Format 0 - srcBegin = B13A - srcEnd = B13F - destBegin = 86B4 -End of Item 005A - -Begin of Item 005B - Format 0 - srcBegin = B149 - srcEnd = B14F - destBegin = 86BF -End of Item 005B - -Begin of Item 005C - Format 0 - srcBegin = B161 - srcEnd = B177 - destBegin = 86D0 -End of Item 005C - -Begin of Item 005D - Format 0 - srcBegin = B19E - srcEnd = B1A7 - destBegin = 8741 -End of Item 005D - -Begin of Item 005E - Format 0 - srcBegin = B1A9 - srcEnd = B1B8 - destBegin = 874B -End of Item 005E - -Begin of Item 005F - Format 0 - srcBegin = B1B9 - srcEnd = B1CB - destBegin = 8761 -End of Item 005F - -Begin of Item 0060 - Format 0 - srcBegin = B1D6 - srcEnd = B1DB - destBegin = 8781 -End of Item 0060 - -Begin of Item 0061 - Format 0 - srcBegin = B1E0 - srcEnd = B1E7 - destBegin = 8788 -End of Item 0061 - -Begin of Item 0062 - Format 0 - srcBegin = B1F1 - srcEnd = B1F8 - destBegin = 8795 -End of Item 0062 - -Begin of Item 0063 - Format 0 - srcBegin = B1FE - srcEnd = B203 - destBegin = 879F -End of Item 0063 - -Begin of Item 0064 - Format 0 - srcBegin = B20D - srcEnd = B213 - destBegin = 87A9 -End of Item 0064 - -Begin of Item 0065 - Format 0 - srcBegin = B21A - srcEnd = B21F - destBegin = 87B2 -End of Item 0065 - -Begin of Item 0066 - Format 0 - srcBegin = B221 - srcEnd = B233 - destBegin = 87B8 -End of Item 0066 - -Begin of Item 0067 - Format 0 - srcBegin = B235 - srcEnd = B23B - destBegin = 87CB -End of Item 0067 - -Begin of Item 0068 - Format 0 - srcBegin = B23D - srcEnd = B257 - destBegin = 87D2 -End of Item 0068 - -Begin of Item 0069 - Format 0 - srcBegin = B261 - srcEnd = B267 - destBegin = 87F3 -End of Item 0069 - -Begin of Item 006A - Format 0 - srcBegin = B276 - srcEnd = B27B - destBegin = 8846 -End of Item 006A - -Begin of Item 006B - Format 0 - srcBegin = B27D - srcEnd = B283 - destBegin = 884C -End of Item 006B - -Begin of Item 006C - Format 0 - srcBegin = B2B8 - srcEnd = B2C7 - destBegin = 8881 -End of Item 006C - -Begin of Item 006D - Format 0 - srcBegin = B309 - srcEnd = B30F - destBegin = 88B2 -End of Item 006D - -Begin of Item 006E - Format 0 - srcBegin = B316 - srcEnd = B31B - destBegin = 88BA -End of Item 006E - -Begin of Item 006F - Format 0 - srcBegin = B31D - srcEnd = B353 - destBegin = 88C0 -End of Item 006F - -Begin of Item 0070 - Format 0 - srcBegin = B379 - srcEnd = B37F - destBegin = 894C -End of Item 0070 - -Begin of Item 0071 - Format 0 - srcBegin = B386 - srcEnd = B38B - destBegin = 8954 -End of Item 0071 - -Begin of Item 0072 - Format 0 - srcBegin = B395 - srcEnd = B39F - destBegin = 8966 -End of Item 0072 - -Begin of Item 0073 - Format 0 - srcBegin = B3A2 - srcEnd = B3A7 - destBegin = 8971 -End of Item 0073 - -Begin of Item 0074 - Format 0 - srcBegin = B3AE - srcEnd = B3C3 - destBegin = 8981 -End of Item 0074 - -Begin of Item 0075 - Format 0 - srcBegin = B3E9 - srcEnd = B3FB - destBegin = 89AC -End of Item 0075 - -Begin of Item 0076 - Format 0 - srcBegin = B3FD - srcEnd = B40F - destBegin = 89BF -End of Item 0076 - -Begin of Item 0077 - Format 0 - srcBegin = B411 - srcEnd = B417 - destBegin = 89D2 -End of Item 0077 - -Begin of Item 0078 - Format 0 - srcBegin = B421 - srcEnd = B427 - destBegin = 89DF -End of Item 0078 - -Begin of Item 0079 - Format 0 - srcBegin = B42C - srcEnd = B433 - destBegin = 89E7 -End of Item 0079 - -Begin of Item 007A - Format 0 - srcBegin = B435 - srcEnd = B444 - destBegin = 89EF -End of Item 007A - -Begin of Item 007B - Format 0 - srcBegin = B445 - srcEnd = B44F - destBegin = 8A41 -End of Item 007B - -Begin of Item 007C - Format 0 - srcBegin = B459 - srcEnd = B45F - destBegin = 8A51 -End of Item 007C - -Begin of Item 007D - Format 0 - srcBegin = B46D - srcEnd = B47F - destBegin = 8A66 -End of Item 007D - -Begin of Item 007E - Format 0 - srcBegin = B489 - srcEnd = B49C - destBegin = 8A86 -End of Item 007E - -Begin of Item 007F - Format 0 - srcBegin = B49E - srcEnd = B4A3 - destBegin = 8A9A -End of Item 007F - -Begin of Item 0080 - Format 0 - srcBegin = B4AD - srcEnd = B4B4 - destBegin = 8AA6 -End of Item 0080 - -Begin of Item 0081 - Format 0 - srcBegin = B4BA - srcEnd = B4BF - destBegin = 8AB0 -End of Item 0081 - -Begin of Item 0082 - Format 0 - srcBegin = B4C9 - srcEnd = B4CF - destBegin = 8ABC -End of Item 0082 - -Begin of Item 0083 - Format 0 - srcBegin = B4D6 - srcEnd = B4DB - destBegin = 8AC7 -End of Item 0083 - -Begin of Item 0084 - Format 0 - srcBegin = B4F2 - srcEnd = B4F7 - destBegin = 8AD9 -End of Item 0084 - -Begin of Item 0085 - Format 0 - srcBegin = B4F9 - srcEnd = B513 - destBegin = 8ADF -End of Item 0085 - -Begin of Item 0086 - Format 0 - srcBegin = B51E - srcEnd = B523 - destBegin = 8B41 -End of Item 0086 - -Begin of Item 0087 - Format 0 - srcBegin = B539 - srcEnd = B53F - destBegin = 8B52 -End of Item 0087 - -Begin of Item 0088 - Format 0 - srcBegin = B555 - srcEnd = B55B - destBegin = 8B6A -End of Item 0088 - -Begin of Item 0089 - Format 0 - srcBegin = B562 - srcEnd = B56A - destBegin = 8B72 -End of Item 0089 - -Begin of Item 008A - Format 0 - srcBegin = B56B - srcEnd = B59F - destBegin = 8B81 -End of Item 008A - -Begin of Item 008B - Format 0 - srcBegin = B5C5 - srcEnd = B5CB - destBegin = 8BCB -End of Item 008B - -Begin of Item 008C - Format 0 - srcBegin = B5D2 - srcEnd = B5D7 - destBegin = 8BD3 -End of Item 008C - -Begin of Item 008D - Format 0 - srcBegin = B5D9 - srcEnd = B5EB - destBegin = 8BD9 -End of Item 008D - -Begin of Item 008E - Format 0 - srcBegin = B5ED - srcEnd = B5FF - destBegin = 8BEC -End of Item 008E - -Begin of Item 008F - Format 0 - srcBegin = B600 - srcEnd = B60F - destBegin = 8C41 -End of Item 008F - -Begin of Item 0090 - Format 0 - srcBegin = B61E - srcEnd = B624 - destBegin = 8C61 -End of Item 0090 - -Begin of Item 0091 - Format 0 - srcBegin = B626 - srcEnd = B62B - destBegin = 8C68 -End of Item 0091 - -Begin of Item 0092 - Format 0 - srcBegin = B62D - srcEnd = B633 - destBegin = 8C6E -End of Item 0092 - -Begin of Item 0093 - Format 0 - srcBegin = B635 - srcEnd = B63A - destBegin = 8C75 -End of Item 0093 - -Begin of Item 0094 - Format 0 - srcBegin = B63B - srcEnd = B647 - destBegin = 8C81 -End of Item 0094 - -Begin of Item 0095 - Format 0 - srcBegin = B649 - srcEnd = B663 - destBegin = 8C8E -End of Item 0095 - -Begin of Item 0096 - Format 0 - srcBegin = B669 - srcEnd = B69B - destBegin = 8CAC -End of Item 0096 - -Begin of Item 0097 - Format 0 - srcBegin = B6A5 - srcEnd = B6AA - destBegin = 8CE4 -End of Item 0097 - -Begin of Item 0098 - Format 0 - srcBegin = B6B2 - srcEnd = B6C2 - destBegin = 8CEE -End of Item 0098 - -Begin of Item 0099 - Format 0 - srcBegin = B6C3 - srcEnd = B6D3 - destBegin = 8D41 -End of Item 0099 - -Begin of Item 009A - Format 0 - srcBegin = B6D5 - srcEnd = B6DD - destBegin = 8D52 -End of Item 009A - -Begin of Item 009B - Format 0 - srcBegin = B6DE - srcEnd = B6EF - destBegin = 8D61 -End of Item 009B - -Begin of Item 009C - Format 0 - srcBegin = B706 - srcEnd = B727 - destBegin = 8D89 -End of Item 009C - -Begin of Item 009D - Format 0 - srcBegin = B731 - srcEnd = B737 - destBegin = 8DAF -End of Item 009D - -Begin of Item 009E - Format 0 - srcBegin = B73C - srcEnd = B743 - destBegin = 8DB7 -End of Item 009E - -Begin of Item 009F - Format 0 - srcBegin = B74D - srcEnd = B753 - destBegin = 8DC5 -End of Item 009F - -Begin of Item 00A0 - Format 0 - srcBegin = B756 - srcEnd = B75F - destBegin = 8DCC -End of Item 00A0 - -Begin of Item 00A1 - Format 0 - srcBegin = B769 - srcEnd = B76F - destBegin = 8DDC -End of Item 00A1 - -Begin of Item 00A2 - Format 0 - srcBegin = B776 - srcEnd = B77B - destBegin = 8DE5 -End of Item 00A2 - -Begin of Item 00A3 - Format 0 - srcBegin = B785 - srcEnd = B78B - destBegin = 8DF0 -End of Item 00A3 - -Begin of Item 00A4 - Format 0 - srcBegin = B7A1 - srcEnd = B7A7 - destBegin = 8E42 -End of Item 00A4 - -Begin of Item 00A5 - Format 0 - srcBegin = B7AE - srcEnd = B7B3 - destBegin = 8E4A -End of Item 00A5 - -Begin of Item 00A6 - Format 0 - srcBegin = B7B9 - srcEnd = B7C1 - destBegin = 8E52 -End of Item 00A6 - -Begin of Item 00A7 - Format 0 - srcBegin = B7CA - srcEnd = B7DD - destBegin = 8E67 -End of Item 00A7 - -Begin of Item 00A8 - Format 0 - srcBegin = B7DE - srcEnd = B7EB - destBegin = 8E81 -End of Item 00A8 - -Begin of Item 00A9 - Format 0 - srcBegin = B7F5 - srcEnd = B7FB - destBegin = 8E94 -End of Item 00A9 - -Begin of Item 00AA - Format 0 - srcBegin = B811 - srcEnd = B817 - destBegin = 8EA6 -End of Item 00AA - -Begin of Item 00AB - Format 0 - srcBegin = B81E - srcEnd = B823 - destBegin = 8EAF -End of Item 00AB - -Begin of Item 00AC - Format 0 - srcBegin = B82D - srcEnd = B833 - destBegin = 8EBA -End of Item 00AC - -Begin of Item 00AD - Format 0 - srcBegin = B83A - srcEnd = B83F - destBegin = 8EC2 -End of Item 00AD - -Begin of Item 00AE - Format 0 - srcBegin = B845 - srcEnd = B850 - destBegin = 8ECB -End of Item 00AE - -Begin of Item 00AF - Format 0 - srcBegin = B854 - srcEnd = B85B - destBegin = 8ED8 -End of Item 00AF - -Begin of Item 00B0 - Format 0 - srcBegin = B865 - srcEnd = B86B - destBegin = 8EE5 -End of Item 00B0 - -Begin of Item 00B1 - Format 0 - srcBegin = B872 - srcEnd = B877 - destBegin = 8EEE -End of Item 00B1 - -Begin of Item 00B2 - Format 0 - srcBegin = B87D - srcEnd = B884 - destBegin = 8EF7 -End of Item 00B2 - -Begin of Item 00B3 - Format 0 - srcBegin = B885 - srcEnd = B88C - destBegin = 8F41 -End of Item 00B3 - -Begin of Item 00B4 - Format 0 - srcBegin = B88E - srcEnd = B89F - destBegin = 8F49 -End of Item 00B4 - -Begin of Item 00B5 - Format 0 - srcBegin = B8A0 - srcEnd = B8A7 - destBegin = 8F61 -End of Item 00B5 - -Begin of Item 00B6 - Format 0 - srcBegin = B8A9 - srcEnd = B8AF - destBegin = 8F69 -End of Item 00B6 - -Begin of Item 00B7 - Format 0 - srcBegin = B8C6 - srcEnd = B8CB - destBegin = 8F85 -End of Item 00B7 - -Begin of Item 00B8 - Format 0 - srcBegin = B8D5 - srcEnd = B8DC - destBegin = 8F91 -End of Item 00B8 - -Begin of Item 00B9 - Format 0 - srcBegin = B8E2 - srcEnd = B8E7 - destBegin = 8F9B -End of Item 00B9 - -Begin of Item 00BA - Format 0 - srcBegin = B8F1 - srcEnd = B8F7 - destBegin = 8FA6 -End of Item 00BA - -Begin of Item 00BB - Format 0 - srcBegin = B8FE - srcEnd = B903 - destBegin = 8FAF -End of Item 00BB - -Begin of Item 00BC - Format 0 - srcBegin = B905 - srcEnd = B917 - destBegin = 8FB5 -End of Item 00BC - -Begin of Item 00BD - Format 0 - srcBegin = B919 - srcEnd = B91F - destBegin = 8FC8 -End of Item 00BD - -Begin of Item 00BE - Format 0 - srcBegin = B921 - srcEnd = B93B - destBegin = 8FCF -End of Item 00BE - -Begin of Item 00BF - Format 0 - srcBegin = B945 - srcEnd = B94B - destBegin = 8FEF -End of Item 00BF - -Begin of Item 00C0 - Format 0 - srcBegin = B952 - srcEnd = B957 - destBegin = 8FF9 -End of Item 00C0 - -Begin of Item 00C1 - Format 0 - srcBegin = B961 - srcEnd = B967 - destBegin = 9046 -End of Item 00C1 - -Begin of Item 00C2 - Format 0 - srcBegin = B96E - srcEnd = B973 - destBegin = 904F -End of Item 00C2 - -Begin of Item 00C3 - Format 0 - srcBegin = B97E - srcEnd = B983 - destBegin = 9061 -End of Item 00C3 - -Begin of Item 00C4 - Format 0 - srcBegin = B98F - srcEnd = B99E - destBegin = 906B -End of Item 00C4 - -Begin of Item 00C5 - Format 0 - srcBegin = B99F - srcEnd = B9AB - destBegin = 9081 -End of Item 00C5 - -Begin of Item 00C6 - Format 0 - srcBegin = B9B5 - srcEnd = B9BB - destBegin = 9093 -End of Item 00C6 - -Begin of Item 00C7 - Format 0 - srcBegin = B9C2 - srcEnd = B9C7 - destBegin = 909C -End of Item 00C7 - -Begin of Item 00C8 - Format 0 - srcBegin = B9ED - srcEnd = B9F3 - destBegin = 90B4 -End of Item 00C8 - -Begin of Item 00C9 - Format 0 - srcBegin = BA02 - srcEnd = BA07 - destBegin = 90C1 -End of Item 00C9 - -Begin of Item 00CA - Format 0 - srcBegin = BA09 - srcEnd = BA14 - destBegin = 90C7 -End of Item 00CA - -Begin of Item 00CB - Format 0 - srcBegin = BA16 - srcEnd = BA37 - destBegin = 90D3 -End of Item 00CB - -Begin of Item 00CC - Format 0 - srcBegin = BA5D - srcEnd = BA63 - destBegin = 914D -End of Item 00CC - -Begin of Item 00CD - Format 0 - srcBegin = BA6A - srcEnd = BA6F - destBegin = 9155 -End of Item 00CD - -Begin of Item 00CE - Format 0 - srcBegin = BA79 - srcEnd = BA82 - destBegin = 9166 -End of Item 00CE - -Begin of Item 00CF - Format 0 - srcBegin = BA8D - srcEnd = BA92 - destBegin = 9175 -End of Item 00CF - -Begin of Item 00D0 - Format 0 - srcBegin = BA93 - srcEnd = BAA7 - destBegin = 9181 -End of Item 00D0 - -Begin of Item 00D1 - Format 0 - srcBegin = BABE - srcEnd = BAC3 - destBegin = 91A2 -End of Item 00D1 - -Begin of Item 00D2 - Format 0 - srcBegin = BAC9 - srcEnd = BAD7 - destBegin = 91AB -End of Item 00D2 - -Begin of Item 00D3 - Format 0 - srcBegin = BADA - srcEnd = BAFB - destBegin = 91BA -End of Item 00D3 - -Begin of Item 00D4 - Format 0 - srcBegin = BB05 - srcEnd = BB0C - destBegin = 91E2 -End of Item 00D4 - -Begin of Item 00D5 - Format 0 - srcBegin = BB12 - srcEnd = BB17 - destBegin = 91EC -End of Item 00D5 - -Begin of Item 00D6 - Format 0 - srcBegin = BB21 - srcEnd = BB27 - destBegin = 91F8 -End of Item 00D6 - -Begin of Item 00D7 - Format 0 - srcBegin = BB2C - srcEnd = BB33 - destBegin = 9243 -End of Item 00D7 - -Begin of Item 00D8 - Format 0 - srcBegin = BB59 - srcEnd = BB60 - destBegin = 9265 -End of Item 00D8 - -Begin of Item 00D9 - Format 0 - srcBegin = BB64 - srcEnd = BB6B - destBegin = 926E -End of Item 00D9 - -Begin of Item 00DA - Format 0 - srcBegin = BB72 - srcEnd = BB87 - destBegin = 9281 -End of Item 00DA - -Begin of Item 00DB - Format 0 - srcBegin = BB91 - srcEnd = BBA3 - destBegin = 929D -End of Item 00DB - -Begin of Item 00DC - Format 0 - srcBegin = BBAD - srcEnd = BBB3 - destBegin = 92B6 -End of Item 00DC - -Begin of Item 00DD - Format 0 - srcBegin = BBB8 - srcEnd = BBBF - destBegin = 92BF -End of Item 00DD - -Begin of Item 00DE - Format 0 - srcBegin = BBC9 - srcEnd = BBCF - destBegin = 92CD -End of Item 00DE - -Begin of Item 00DF - Format 0 - srcBegin = BBD4 - srcEnd = BBF7 - destBegin = 92D6 -End of Item 00DF - -Begin of Item 00E0 - Format 0 - srcBegin = BC39 - srcEnd = BC3F - destBegin = 9363 -End of Item 00E0 - -Begin of Item 00E1 - Format 0 - srcBegin = BC51 - srcEnd = BC59 - destBegin = 9372 -End of Item 00E1 - -Begin of Item 00E2 - Format 0 - srcBegin = BC5E - srcEnd = BC83 - destBegin = 9384 -End of Item 00E2 - -Begin of Item 00E3 - Format 0 - srcBegin = BCA9 - srcEnd = BCAF - destBegin = 93BF -End of Item 00E3 - -Begin of Item 00E4 - Format 0 - srcBegin = BCB6 - srcEnd = BCBB - destBegin = 93C7 -End of Item 00E4 - -Begin of Item 00E5 - Format 0 - srcBegin = BCC5 - srcEnd = BCCC - destBegin = 93D2 -End of Item 00E5 - -Begin of Item 00E6 - Format 0 - srcBegin = BCDD - srcEnd = BCF3 - destBegin = 93E3 -End of Item 00E6 - -Begin of Item 00E7 - Format 0 - srcBegin = BCFE - srcEnd = BD03 - destBegin = 9441 -End of Item 00E7 - -Begin of Item 00E8 - Format 0 - srcBegin = BD0A - srcEnd = BD0F - destBegin = 9449 -End of Item 00E8 - -Begin of Item 00E9 - Format 0 - srcBegin = BD15 - srcEnd = BD1D - destBegin = 9452 -End of Item 00E9 - -Begin of Item 00EA - Format 0 - srcBegin = BD1E - srcEnd = BD23 - destBegin = 9461 -End of Item 00EA - -Begin of Item 00EB - Format 0 - srcBegin = BD25 - srcEnd = BD2B - destBegin = 9467 -End of Item 00EB - -Begin of Item 00EC - Format 0 - srcBegin = BD2D - srcEnd = BD39 - destBegin = 946E -End of Item 00EC - -Begin of Item 00ED - Format 0 - srcBegin = BD3A - srcEnd = BD3F - destBegin = 9481 -End of Item 00ED - -Begin of Item 00EE - Format 0 - srcBegin = BD41 - srcEnd = BD47 - destBegin = 9487 -End of Item 00EE - -Begin of Item 00EF - Format 0 - srcBegin = BD51 - srcEnd = BD57 - destBegin = 9493 -End of Item 00EF - -Begin of Item 00F0 - Format 0 - srcBegin = BD5A - srcEnd = BD63 - destBegin = 949A -End of Item 00F0 - -Begin of Item 00F1 - Format 0 - srcBegin = BD69 - srcEnd = BD7F - destBegin = 94A7 -End of Item 00F1 - -Begin of Item 00F2 - Format 0 - srcBegin = BD9D - srcEnd = BDA3 - destBegin = 94CD -End of Item 00F2 - -Begin of Item 00F3 - Format 0 - srcBegin = BDA5 - srcEnd = BDAF - destBegin = 94D4 -End of Item 00F3 - -Begin of Item 00F4 - Format 0 - srcBegin = BDB1 - srcEnd = BDB7 - destBegin = 94DF -End of Item 00F4 - -Begin of Item 00F5 - Format 0 - srcBegin = BDB9 - srcEnd = BDD1 - destBegin = 94E6 -End of Item 00F5 - -Begin of Item 00F6 - Format 0 - srcBegin = BDDD - srcEnd = BDE8 - destBegin = 9548 -End of Item 00F6 - -Begin of Item 00F7 - Format 0 - srcBegin = BDEA - srcEnd = BDEF - destBegin = 9554 -End of Item 00F7 - -Begin of Item 00F8 - Format 0 - srcBegin = BDF9 - srcEnd = BDFF - destBegin = 9566 -End of Item 00F8 - -Begin of Item 00F9 - Format 0 - srcBegin = BE06 - srcEnd = BE0B - destBegin = 9570 -End of Item 00F9 - -Begin of Item 00FA - Format 0 - srcBegin = BE15 - srcEnd = BE1B - destBegin = 9581 -End of Item 00FA - -Begin of Item 00FB - Format 0 - srcBegin = BE20 - srcEnd = BE43 - destBegin = 9589 -End of Item 00FB - -Begin of Item 00FC - Format 0 - srcBegin = BE85 - srcEnd = BE8B - destBegin = 95D4 -End of Item 00FC - -Begin of Item 00FD - Format 0 - srcBegin = BE92 - srcEnd = BE97 - destBegin = 95DC -End of Item 00FD - -Begin of Item 00FE - Format 0 - srcBegin = BE9A - srcEnd = BEA7 - destBegin = 95E2 -End of Item 00FE - -Begin of Item 00FF - Format 0 - srcBegin = BEA9 - srcEnd = BEB7 - destBegin = 95F0 -End of Item 00FF - -Begin of Item 0100 - Format 0 - srcBegin = BEB8 - srcEnd = BECF - destBegin = 9641 -End of Item 0100 - -Begin of Item 0101 - Format 0 - srcBegin = BED9 - srcEnd = BEDF - destBegin = 9663 -End of Item 0101 - -Begin of Item 0102 - Format 0 - srcBegin = BEE6 - srcEnd = BEEB - destBegin = 966C -End of Item 0102 - -Begin of Item 0103 - Format 0 - srcBegin = BEED - srcEnd = BEF5 - destBegin = 9672 -End of Item 0103 - -Begin of Item 0104 - Format 0 - srcBegin = BEF6 - srcEnd = BF00 - destBegin = 9681 -End of Item 0104 - -Begin of Item 0105 - Format 0 - srcBegin = BF02 - srcEnd = BF07 - destBegin = 968C -End of Item 0105 - -Begin of Item 0106 - Format 0 - srcBegin = BF0A - srcEnd = BF17 - destBegin = 9692 -End of Item 0106 - -Begin of Item 0107 - Format 0 - srcBegin = BF1E - srcEnd = BF3F - destBegin = 96A1 -End of Item 0107 - -Begin of Item 0108 - Format 0 - srcBegin = BF49 - srcEnd = BF4F - destBegin = 96C8 -End of Item 0108 - -Begin of Item 0109 - Format 0 - srcBegin = BF56 - srcEnd = BF82 - destBegin = 96D2 -End of Item 0109 - -Begin of Item 010A - Format 0 - srcBegin = BF83 - srcEnd = BF93 - destBegin = 9741 -End of Item 010A - -Begin of Item 010B - Format 0 - srcBegin = BF95 - srcEnd = BF9D - destBegin = 9752 -End of Item 010B - -Begin of Item 010C - Format 0 - srcBegin = BF9E - srcEnd = BFAF - destBegin = 9761 -End of Item 010C - -Begin of Item 010D - Format 0 - srcBegin = BFB1 - srcEnd = BFB8 - destBegin = 9773 -End of Item 010D - -Begin of Item 010E - Format 0 - srcBegin = BFB9 - srcEnd = BFC4 - destBegin = 9781 -End of Item 010E - -Begin of Item 010F - Format 0 - srcBegin = BFC6 - srcEnd = BFCB - destBegin = 978D -End of Item 010F - -Begin of Item 0110 - Format 0 - srcBegin = BFD5 - srcEnd = BFDB - destBegin = 9798 -End of Item 0110 - -Begin of Item 0111 - Format 0 - srcBegin = BFE2 - srcEnd = C03B - destBegin = 97A2 -End of Item 0111 - -Begin of Item 0112 - Format 0 - srcBegin = C040 - srcEnd = C050 - destBegin = 9841 -End of Item 0112 - -Begin of Item 0113 - Format 0 - srcBegin = C052 - srcEnd = C057 - destBegin = 9852 -End of Item 0113 - -Begin of Item 0114 - Format 0 - srcBegin = C061 - srcEnd = C067 - destBegin = 9864 -End of Item 0114 - -Begin of Item 0115 - Format 0 - srcBegin = C06A - srcEnd = C079 - destBegin = 986B -End of Item 0115 - -Begin of Item 0116 - Format 0 - srcBegin = C07A - srcEnd = C08F - destBegin = 9881 -End of Item 0116 - -Begin of Item 0117 - Format 0 - srcBegin = C099 - srcEnd = C09F - destBegin = 989C -End of Item 0117 - -Begin of Item 0118 - Format 0 - srcBegin = C0A6 - srcEnd = C0AB - destBegin = 98A5 -End of Item 0118 - -Begin of Item 0119 - Format 0 - srcBegin = C0D1 - srcEnd = C0D7 - destBegin = 98BE -End of Item 0119 - -Begin of Item 011A - Format 0 - srcBegin = C0DE - srcEnd = C0E3 - destBegin = 98C6 -End of Item 011A - -Begin of Item 011B - Format 0 - srcBegin = C0ED - srcEnd = C0F3 - destBegin = 98D1 -End of Item 011B - -Begin of Item 011C - Format 0 - srcBegin = C0FA - srcEnd = C0FF - destBegin = 98DA -End of Item 011C - -Begin of Item 011D - Format 0 - srcBegin = C109 - srcEnd = C10F - destBegin = 98E6 -End of Item 011D - -Begin of Item 011E - Format 0 - srcBegin = C116 - srcEnd = C11B - destBegin = 98F1 -End of Item 011E - -Begin of Item 011F - Format 0 - srcBegin = C141 - srcEnd = C147 - destBegin = 994B -End of Item 011F - -Begin of Item 0120 - Format 0 - srcBegin = C14E - srcEnd = C153 - destBegin = 9953 -End of Item 0120 - -Begin of Item 0121 - Format 0 - srcBegin = C15D - srcEnd = C163 - destBegin = 9964 -End of Item 0121 - -Begin of Item 0122 - Format 0 - srcBegin = C16A - srcEnd = C16F - destBegin = 996C -End of Item 0122 - -Begin of Item 0123 - Format 0 - srcBegin = C17C - srcEnd = C184 - destBegin = 9981 -End of Item 0123 - -Begin of Item 0124 - Format 0 - srcBegin = C186 - srcEnd = C18B - destBegin = 998A -End of Item 0124 - -Begin of Item 0125 - Format 0 - srcBegin = C1B1 - srcEnd = C1BC - destBegin = 99A6 -End of Item 0125 - -Begin of Item 0126 - Format 0 - srcBegin = C1BE - srcEnd = C1C3 - destBegin = 99B2 -End of Item 0126 - -Begin of Item 0127 - Format 0 - srcBegin = C1CD - srcEnd = C1D3 - destBegin = 99BE -End of Item 0127 - -Begin of Item 0128 - Format 0 - srcBegin = C1D9 - srcEnd = C1DF - destBegin = 99C7 -End of Item 0128 - -Begin of Item 0129 - Format 0 - srcBegin = C1E9 - srcEnd = C1EF - destBegin = 99D4 -End of Item 0129 - -Begin of Item 012A - Format 0 - srcBegin = C1F4 - srcEnd = C1FB - destBegin = 99DC -End of Item 012A - -Begin of Item 012B - Format 0 - srcBegin = C205 - srcEnd = C20B - destBegin = 99E9 -End of Item 012B - -Begin of Item 012C - Format 0 - srcBegin = C212 - srcEnd = C217 - destBegin = 99F2 -End of Item 012C - -Begin of Item 012D - Format 0 - srcBegin = C235 - srcEnd = C245 - destBegin = 9A4A -End of Item 012D - -Begin of Item 012E - Format 0 - srcBegin = C249 - srcEnd = C24F - destBegin = 9A63 -End of Item 012E - -Begin of Item 012F - Format 0 - srcBegin = C259 - srcEnd = C25F - destBegin = 9A6F -End of Item 012F - -Begin of Item 0130 - Format 0 - srcBegin = C275 - srcEnd = C27B - destBegin = 9A8B -End of Item 0130 - -Begin of Item 0131 - Format 0 - srcBegin = C282 - srcEnd = C287 - destBegin = 9A94 -End of Item 0131 - -Begin of Item 0132 - Format 0 - srcBegin = C28A - srcEnd = C28F - destBegin = 9A9A -End of Item 0132 - -Begin of Item 0133 - Format 0 - srcBegin = C291 - srcEnd = C297 - destBegin = 9AA0 -End of Item 0133 - -Begin of Item 0134 - Format 0 - srcBegin = C29E - srcEnd = C2A3 - destBegin = 9AAA -End of Item 0134 - -Begin of Item 0135 - Format 0 - srcBegin = C2AE - srcEnd = C2B3 - destBegin = 9AB5 -End of Item 0135 - -Begin of Item 0136 - Format 0 - srcBegin = C2BA - srcEnd = C2DB - destBegin = 9ABD -End of Item 0136 - -Begin of Item 0137 - Format 0 - srcBegin = C2E5 - srcEnd = C2EA - destBegin = 9AE3 -End of Item 0137 - -Begin of Item 0138 - Format 0 - srcBegin = C301 - srcEnd = C307 - destBegin = 9AF4 -End of Item 0138 - -Begin of Item 0139 - Format 0 - srcBegin = C31D - srcEnd = C323 - destBegin = 9B49 -End of Item 0139 - -Begin of Item 013A - Format 0 - srcBegin = C32A - srcEnd = C332 - destBegin = 9B52 -End of Item 013A - -Begin of Item 013B - Format 0 - srcBegin = C333 - srcEnd = C344 - destBegin = 9B61 -End of Item 013B - -Begin of Item 013C - Format 0 - srcBegin = C346 - srcEnd = C34D - destBegin = 9B73 -End of Item 013C - -Begin of Item 013D - Format 0 - srcBegin = C34E - srcEnd = C367 - destBegin = 9B81 -End of Item 013D - -Begin of Item 013E - Format 0 - srcBegin = C37E - srcEnd = C383 - destBegin = 9BA8 -End of Item 013E - -Begin of Item 013F - Format 0 - srcBegin = C38D - srcEnd = C3BF - destBegin = 9BB4 -End of Item 013F - -Begin of Item 0140 - Format 0 - srcBegin = C3C1 - srcEnd = C3D7 - destBegin = 9BE7 -End of Item 0140 - -Begin of Item 0141 - Format 0 - srcBegin = C3EE - srcEnd = C3F3 - destBegin = 9C4D -End of Item 0141 - -Begin of Item 0142 - Format 0 - srcBegin = C3F9 - srcEnd = C3FE - destBegin = 9C55 -End of Item 0142 - -Begin of Item 0143 - Format 0 - srcBegin = C3FF - srcEnd = C407 - destBegin = 9C61 -End of Item 0143 - -Begin of Item 0144 - Format 0 - srcBegin = C409 - srcEnd = C40F - destBegin = 9C6A -End of Item 0144 - -Begin of Item 0145 - Format 0 - srcBegin = C411 - srcEnd = C41A - destBegin = 9C71 -End of Item 0145 - -Begin of Item 0146 - Format 0 - srcBegin = C41B - srcEnd = C423 - destBegin = 9C81 -End of Item 0146 - -Begin of Item 0147 - Format 0 - srcBegin = C425 - srcEnd = C42B - destBegin = 9C8A -End of Item 0147 - -Begin of Item 0148 - Format 0 - srcBegin = C435 - srcEnd = C43B - destBegin = 9C97 -End of Item 0148 - -Begin of Item 0149 - Format 0 - srcBegin = C43E - srcEnd = C447 - destBegin = 9C9E -End of Item 0149 - -Begin of Item 014A - Format 0 - srcBegin = C449 - srcEnd = C463 - destBegin = 9CA8 -End of Item 014A - -Begin of Item 014B - Format 0 - srcBegin = C46D - srcEnd = C473 - destBegin = 9CC8 -End of Item 014B - -Begin of Item 014C - Format 0 - srcBegin = C47A - srcEnd = C47F - destBegin = 9CD2 -End of Item 014C - -Begin of Item 014D - Format 0 - srcBegin = C481 - srcEnd = C493 - destBegin = 9CD8 -End of Item 014D - -Begin of Item 014E - Format 0 - srcBegin = C495 - srcEnd = C49B - destBegin = 9CEB -End of Item 014E - -Begin of Item 014F - Format 0 - srcBegin = C49D - srcEnd = C4A9 - destBegin = 9CF2 -End of Item 014F - -Begin of Item 0150 - Format 0 - srcBegin = C4AA - srcEnd = C4B7 - destBegin = 9D41 -End of Item 0150 - -Begin of Item 0151 - Format 0 - srcBegin = C4BD - srcEnd = C4C5 - destBegin = 9D52 -End of Item 0151 - -Begin of Item 0152 - Format 0 - srcBegin = C4C6 - srcEnd = C4DF - destBegin = 9D61 -End of Item 0152 - -Begin of Item 0153 - Format 0 - srcBegin = C4E0 - srcEnd = C4E8 - destBegin = 9D81 -End of Item 0153 - -Begin of Item 0154 - Format 0 - srcBegin = C4EA - srcEnd = C4EF - destBegin = 9D8A -End of Item 0154 - -Begin of Item 0155 - Format 0 - srcBegin = C502 - srcEnd = C50B - destBegin = 9D9A -End of Item 0155 - -Begin of Item 0156 - Format 0 - srcBegin = C515 - srcEnd = C51B - destBegin = 9DAA -End of Item 0156 - -Begin of Item 0157 - Format 0 - srcBegin = C51D - srcEnd = C527 - destBegin = 9DB1 -End of Item 0157 - -Begin of Item 0158 - Format 0 - srcBegin = C531 - srcEnd = C537 - destBegin = 9DC1 -End of Item 0158 - -Begin of Item 0159 - Format 0 - srcBegin = C53E - srcEnd = C543 - destBegin = 9DCA -End of Item 0159 - -Begin of Item 015A - Format 0 - srcBegin = C569 - srcEnd = C56F - destBegin = 9DE1 -End of Item 015A - -Begin of Item 015B - Format 0 - srcBegin = C576 - srcEnd = C57B - destBegin = 9DE9 -End of Item 015B - -Begin of Item 015C - Format 0 - srcBegin = C5A1 - srcEnd = C5A8 - destBegin = 9E48 -End of Item 015C - -Begin of Item 015D - Format 0 - srcBegin = C5AA - srcEnd = C5B3 - destBegin = 9E50 -End of Item 015D - -Begin of Item 015E - Format 0 - srcBegin = C5C4 - srcEnd = C5CA - destBegin = BEF6 -End of Item 015E - -Begin of Item 015F - Format 0 - srcBegin = C5D9 - srcEnd = C5DF - destBegin = 9E70 -End of Item 015F - -Begin of Item 0160 - Format 0 - srcBegin = C5FC - srcEnd = C601 - destBegin = BFB0 -End of Item 0160 - -Begin of Item 0161 - Format 0 - srcBegin = C611 - srcEnd = C617 - destBegin = 9E97 -End of Item 0161 - -Begin of Item 0162 - Format 0 - srcBegin = C61D - srcEnd = C623 - destBegin = 9E9F -End of Item 0162 - -Begin of Item 0163 - Format 0 - srcBegin = C649 - srcEnd = C64F - destBegin = 9EBA -End of Item 0163 - -Begin of Item 0164 - Format 0 - srcBegin = C656 - srcEnd = C65B - destBegin = 9EC2 -End of Item 0164 - -Begin of Item 0165 - Format 0 - srcBegin = C661 - srcEnd = C66B - destBegin = 9ECA -End of Item 0165 - -Begin of Item 0166 - Format 0 - srcBegin = C672 - srcEnd = C677 - destBegin = 9ED8 -End of Item 0166 - -Begin of Item 0167 - Format 0 - srcBegin = C681 - srcEnd = C687 - destBegin = 9EE3 -End of Item 0167 - -Begin of Item 0168 - Format 0 - srcBegin = C68E - srcEnd = C693 - destBegin = 9EEC -End of Item 0168 - -Begin of Item 0169 - Format 0 - srcBegin = C69D - srcEnd = C6A3 - destBegin = 9EF7 -End of Item 0169 - -Begin of Item 016A - Format 0 - srcBegin = C6AA - srcEnd = C6AF - destBegin = 9F42 -End of Item 016A - -Begin of Item 016B - Format 0 - srcBegin = C6C6 - srcEnd = C6CB - destBegin = 9F54 -End of Item 016B - -Begin of Item 016C - Format 0 - srcBegin = C6D5 - srcEnd = C6DB - destBegin = 9F65 -End of Item 016C - -Begin of Item 016D - Format 0 - srcBegin = C6E2 - srcEnd = C6E7 - destBegin = 9F6E -End of Item 016D - -Begin of Item 016E - Format 0 - srcBegin = C6FE - srcEnd = C703 - destBegin = 9F89 -End of Item 016E - -Begin of Item 016F - Format 0 - srcBegin = C70D - srcEnd = C713 - destBegin = 9F94 -End of Item 016F - -Begin of Item 0170 - Format 0 - srcBegin = C71A - srcEnd = C71F - destBegin = 9F9D -End of Item 0170 - -Begin of Item 0171 - Format 0 - srcBegin = C729 - srcEnd = C72F - destBegin = 9FA8 -End of Item 0171 - -Begin of Item 0172 - Format 0 - srcBegin = C751 - srcEnd = C758 - destBegin = C0C0 -End of Item 0172 - -Begin of Item 0173 - Format 0 - srcBegin = C761 - srcEnd = C767 - destBegin = 9FC9 -End of Item 0173 - -Begin of Item 0174 - Format 0 - srcBegin = C76C - srcEnd = C773 - destBegin = 9FD2 -End of Item 0174 - -Begin of Item 0175 - Format 0 - srcBegin = C7C2 - srcEnd = C7C7 - destBegin = A046 -End of Item 0175 - -Begin of Item 0176 - Format 0 - srcBegin = C7D1 - srcEnd = C7D7 - destBegin = A050 -End of Item 0176 - -Begin of Item 0177 - Format 0 - srcBegin = C7DE - srcEnd = C7E3 - destBegin = A061 -End of Item 0177 - -Begin of Item 0178 - Format 0 - srcBegin = C7ED - srcEnd = C7FA - destBegin = A06D -End of Item 0178 - -Begin of Item 0179 - Format 0 - srcBegin = C825 - srcEnd = C82B - destBegin = A09D -End of Item 0179 - -Begin of Item 017A - Format 0 - srcBegin = C832 - srcEnd = C837 - destBegin = A0A6 -End of Item 017A - -Begin of Item 017B - Format 0 - srcBegin = C841 - srcEnd = C847 - destBegin = A0B2 -End of Item 017B - -Begin of Item 017C - Format 0 - srcBegin = C84E - srcEnd = C853 - destBegin = A0BB -End of Item 017C - -Begin of Item 017D - Format 0 - srcBegin = C855 - srcEnd = C86F - destBegin = A0C1 -End of Item 017D - -Begin of Item 017E - Format 0 - srcBegin = C88E - srcEnd = C893 - destBegin = A0EC -End of Item 017E - -Begin of Item 017F - Format 0 - srcBegin = C895 - srcEnd = C89C - destBegin = A0F2 -End of Item 017F - -Begin of Item 0180 - Format 0 - srcBegin = C8A9 - srcEnd = C8BB - destBegin = A144 -End of Item 0180 - -Begin of Item 0181 - Format 0 - srcBegin = C8CD - srcEnd = C8D3 - destBegin = A169 -End of Item 0181 - -Begin of Item 0182 - Format 0 - srcBegin = C8DA - srcEnd = C8DF - destBegin = A172 -End of Item 0182 - -Begin of Item 0183 - Format 0 - srcBegin = C8E6 - srcEnd = C8F4 - destBegin = A181 -End of Item 0183 - -Begin of Item 0184 - Format 0 - srcBegin = C8F6 - srcEnd = C8FB - destBegin = A190 -End of Item 0184 - -Begin of Item 0185 - Format 0 - srcBegin = C912 - srcEnd = C917 - destBegin = A242 -End of Item 0185 - -Begin of Item 0186 - Format 0 - srcBegin = C919 - srcEnd = C92B - destBegin = A248 -End of Item 0186 - -Begin of Item 0187 - Format 0 - srcBegin = C92D - srcEnd = C933 - destBegin = A261 -End of Item 0187 - -Begin of Item 0188 - Format 0 - srcBegin = C935 - srcEnd = C947 - destBegin = A268 -End of Item 0188 - -Begin of Item 0189 - Format 0 - srcBegin = C948 - srcEnd = C94F - destBegin = A281 -End of Item 0189 - -Begin of Item 018A - Format 0 - srcBegin = C959 - srcEnd = C95F - destBegin = A28E -End of Item 018A - -Begin of Item 018B - Format 0 - srcBegin = C964 - srcEnd = C96B - destBegin = A296 -End of Item 018B - -Begin of Item 018C - Format 0 - srcBegin = C975 - srcEnd = C97B - destBegin = A344 -End of Item 018C - -Begin of Item 018D - Format 0 - srcBegin = C97D - srcEnd = C987 - destBegin = A34B -End of Item 018D - -Begin of Item 018E - Format 0 - srcBegin = C991 - srcEnd = C997 - destBegin = A361 -End of Item 018E - -Begin of Item 018F - Format 0 - srcBegin = C99E - srcEnd = C9AE - destBegin = A36A -End of Item 018F - -Begin of Item 0190 - Format 0 - srcBegin = C9AF - srcEnd = C9BF - destBegin = A381 -End of Item 0190 - -Begin of Item 0191 - Format 0 - srcBegin = C9F2 - srcEnd = C9F7 - destBegin = A44C -End of Item 0191 - -Begin of Item 0192 - Format 0 - srcBegin = CA0E - srcEnd = CA13 - destBegin = A465 -End of Item 0192 - -Begin of Item 0193 - Format 0 - srcBegin = CA19 - srcEnd = CA25 - destBegin = A46E -End of Item 0193 - -Begin of Item 0194 - Format 0 - srcBegin = CA2A - srcEnd = CA46 - destBegin = A484 -End of Item 0194 - -Begin of Item 0195 - Format 0 - srcBegin = CA55 - srcEnd = CA5B - destBegin = A54B -End of Item 0195 - -Begin of Item 0196 - Format 0 - srcBegin = CA62 - srcEnd = CA67 - destBegin = A553 -End of Item 0196 - -Begin of Item 0197 - Format 0 - srcBegin = CA6B - srcEnd = CA7C - destBegin = A561 -End of Item 0197 - -Begin of Item 0198 - Format 0 - srcBegin = CA7E - srcEnd = CA83 - destBegin = A573 -End of Item 0198 - -Begin of Item 0199 - Format 0 - srcBegin = CA87 - srcEnd = CA97 - destBegin = A581 -End of Item 0199 - -Begin of Item 019A - Format 0 - srcBegin = CA99 - srcEnd = CAA7 - destBegin = A592 -End of Item 019A - -Begin of Item 019B - Format 0 - srcBegin = CAA8 - srcEnd = CABB - destBegin = A641 -End of Item 019B - -Begin of Item 019C - Format 0 - srcBegin = CAC6 - srcEnd = CACB - destBegin = A661 -End of Item 019C - -Begin of Item 019D - Format 0 - srcBegin = CADA - srcEnd = CADF - destBegin = A66E -End of Item 019D - -Begin of Item 019E - Format 0 - srcBegin = CAE1 - srcEnd = CAE7 - destBegin = A674 -End of Item 019E - -Begin of Item 019F - Format 0 - srcBegin = CAED - srcEnd = CAF3 - destBegin = A685 -End of Item 019F - -Begin of Item 01A0 - Format 0 - srcBegin = CAF5 - srcEnd = CB07 - destBegin = A68C -End of Item 01A0 - -Begin of Item 01A1 - Format 0 - srcBegin = CB19 - srcEnd = CB1F - destBegin = A74C -End of Item 01A1 - -Begin of Item 01A2 - Format 0 - srcBegin = CB22 - srcEnd = CB29 - destBegin = A753 -End of Item 01A2 - -Begin of Item 01A3 - Format 0 - srcBegin = CB2A - srcEnd = CB40 - destBegin = A761 -End of Item 01A3 - -Begin of Item 01A4 - Format 0 - srcBegin = CB51 - srcEnd = CB57 - destBegin = A789 -End of Item 01A4 - -Begin of Item 01A5 - Format 0 - srcBegin = CB5E - srcEnd = CB63 - destBegin = A793 -End of Item 01A5 - -Begin of Item 01A6 - Format 0 - srcBegin = CB65 - srcEnd = CB6C - destBegin = A799 -End of Item 01A6 - -Begin of Item 01A7 - Format 0 - srcBegin = CB6D - srcEnd = CB77 - destBegin = A841 -End of Item 01A7 - -Begin of Item 01A8 - Format 0 - srcBegin = CB7A - srcEnd = CB88 - destBegin = A84C -End of Item 01A8 - -Begin of Item 01A9 - Format 0 - srcBegin = CB89 - srcEnd = CB9B - destBegin = A861 -End of Item 01A9 - -Begin of Item 01AA - Format 0 - srcBegin = CB9D - srcEnd = CBA3 - destBegin = A874 -End of Item 01AA - -Begin of Item 01AB - Format 0 - srcBegin = CBA4 - srcEnd = CBB7 - destBegin = A881 -End of Item 01AB - -Begin of Item 01AC - Format 0 - srcBegin = CBB9 - srcEnd = CBC4 - destBegin = A895 -End of Item 01AC - -Begin of Item 01AD - Format 0 - srcBegin = CBC5 - srcEnd = CBD3 - destBegin = A941 -End of Item 01AD - -Begin of Item 01AE - Format 0 - srcBegin = CBD5 - srcEnd = CBDF - destBegin = A950 -End of Item 01AE - -Begin of Item 01AF - Format 0 - srcBegin = CBEA - srcEnd = CBFC - destBegin = A968 -End of Item 01AF - -Begin of Item 01B0 - Format 0 - srcBegin = CBFD - srcEnd = CC0B - destBegin = A981 -End of Item 01B0 - -Begin of Item 01B1 - Format 0 - srcBegin = CC15 - srcEnd = CC1B - destBegin = A995 -End of Item 01B1 - -Begin of Item 01B2 - Format 0 - srcBegin = CC31 - srcEnd = CC37 - destBegin = AA47 -End of Item 01B2 - -Begin of Item 01B3 - Format 0 - srcBegin = CC5A - srcEnd = CC5F - destBegin = AA67 -End of Item 01B3 - -Begin of Item 01B4 - Format 0 - srcBegin = CC69 - srcEnd = CC6F - destBegin = AA72 -End of Item 01B4 - -Begin of Item 01B5 - Format 0 - srcBegin = CC76 - srcEnd = CC93 - destBegin = AA83 -End of Item 01B5 - -Begin of Item 01B6 - Format 0 - srcBegin = CCA1 - srcEnd = CCA7 - destBegin = AB4A -End of Item 01B6 - -Begin of Item 01B7 - Format 0 - srcBegin = CCAE - srcEnd = CCB3 - destBegin = AB52 -End of Item 01B7 - -Begin of Item 01B8 - Format 0 - srcBegin = CCBD - srcEnd = CCC3 - destBegin = AB63 -End of Item 01B8 - -Begin of Item 01B9 - Format 0 - srcBegin = CCCA - srcEnd = CCCF - destBegin = AB6C -End of Item 01B9 - -Begin of Item 01BA - Format 0 - srcBegin = CCD5 - srcEnd = CCDA - destBegin = AB75 -End of Item 01BA - -Begin of Item 01BB - Format 0 - srcBegin = CCDB - srcEnd = CCE3 - destBegin = AB81 -End of Item 01BB - -Begin of Item 01BC - Format 0 - srcBegin = CCE5 - srcEnd = CCEB - destBegin = AB8A -End of Item 01BC - -Begin of Item 01BD - Format 0 - srcBegin = CCF1 - srcEnd = CCFD - destBegin = AB94 -End of Item 01BD - -Begin of Item 01BE - Format 0 - srcBegin = CD02 - srcEnd = CD07 - destBegin = AC44 -End of Item 01BE - -Begin of Item 01BF - Format 0 - srcBegin = CD11 - srcEnd = CD17 - destBegin = AC4F -End of Item 01BF - -Begin of Item 01C0 - Format 0 - srcBegin = CD2D - srcEnd = CD38 - destBegin = AC6A -End of Item 01C0 - -Begin of Item 01C1 - Format 0 - srcBegin = CD3F - srcEnd = CD5B - destBegin = AC81 -End of Item 01C1 - -Begin of Item 01C2 - Format 0 - srcBegin = CD65 - srcEnd = CD6B - destBegin = AD44 -End of Item 01C2 - -Begin of Item 01C3 - Format 0 - srcBegin = CD72 - srcEnd = CD77 - destBegin = AD4D -End of Item 01C3 - -Begin of Item 01C4 - Format 0 - srcBegin = CD79 - srcEnd = CD80 - destBegin = AD53 -End of Item 01C4 - -Begin of Item 01C5 - Format 0 - srcBegin = CD81 - srcEnd = CD87 - destBegin = AD61 -End of Item 01C5 - -Begin of Item 01C6 - Format 0 - srcBegin = CD89 - srcEnd = CD93 - destBegin = AD68 -End of Item 01C6 - -Begin of Item 01C7 - Format 0 - srcBegin = CDAA - srcEnd = CDAF - destBegin = AD87 -End of Item 01C7 - -Begin of Item 01C8 - Format 0 - srcBegin = CDB1 - srcEnd = CDC3 - destBegin = AD8D -End of Item 01C8 - -Begin of Item 01C9 - Format 0 - srcBegin = CDC6 - srcEnd = CDCB - destBegin = AE41 -End of Item 01C9 - -Begin of Item 01CA - Format 0 - srcBegin = CDD1 - srcEnd = CDE1 - destBegin = AE4A -End of Item 01CA - -Begin of Item 01CB - Format 0 - srcBegin = CDE2 - srcEnd = CDE7 - destBegin = AE61 -End of Item 01CB - -Begin of Item 01CC - Format 0 - srcBegin = CDF1 - srcEnd = CDF7 - destBegin = AE6D -End of Item 01CC - -Begin of Item 01CD - Format 0 - srcBegin = CE0D - srcEnd = CE13 - destBegin = AE88 -End of Item 01CD - -Begin of Item 01CE - Format 0 - srcBegin = CE1A - srcEnd = CE1F - destBegin = AE93 -End of Item 01CE - -Begin of Item 01CF - Format 0 - srcBegin = CE36 - srcEnd = CE49 - destBegin = AF47 -End of Item 01CF - -Begin of Item 01D0 - Format 0 - srcBegin = CE4A - srcEnd = CE57 - destBegin = AF61 -End of Item 01D0 - -Begin of Item 01D1 - Format 0 - srcBegin = CE62 - srcEnd = CE67 - destBegin = AF73 -End of Item 01D1 - -Begin of Item 01D2 - Format 0 - srcBegin = CE6E - srcEnd = CE73 - destBegin = AF81 -End of Item 01D2 - -Begin of Item 01D3 - Format 0 - srcBegin = CE7D - srcEnd = CE83 - destBegin = AF8C -End of Item 01D3 - -Begin of Item 01D4 - Format 0 - srcBegin = CE8A - srcEnd = CE8F - destBegin = AF95 -End of Item 01D4 - -Begin of Item 01D5 - Format 0 - srcBegin = CE9A - srcEnd = CE9F - destBegin = B041 -End of Item 01D5 - -Begin of Item 01D6 - Format 0 - srcBegin = CEA6 - srcEnd = CEAB - destBegin = B048 -End of Item 01D6 - -Begin of Item 01D7 - Format 0 - srcBegin = CEAE - srcEnd = CEBA - destBegin = B04E -End of Item 01D7 - -Begin of Item 01D8 - Format 0 - srcBegin = CEBB - srcEnd = CEC0 - destBegin = B061 -End of Item 01D8 - -Begin of Item 01D9 - Format 0 - srcBegin = CEC2 - srcEnd = CED5 - destBegin = B067 -End of Item 01D9 - -Begin of Item 01DA - Format 0 - srcBegin = CED6 - srcEnd = CEE3 - destBegin = B081 -End of Item 01DA - -Begin of Item 01DB - Format 0 - srcBegin = CEED - srcEnd = CEF3 - destBegin = B093 -End of Item 01DB - -Begin of Item 01DC - Format 0 - srcBegin = CEFA - srcEnd = CEFF - destBegin = B09B -End of Item 01DC - -Begin of Item 01DD - Format 0 - srcBegin = CF09 - srcEnd = CF0F - destBegin = B146 -End of Item 01DD - -Begin of Item 01DE - Format 0 - srcBegin = CF16 - srcEnd = CF1B - destBegin = B14F -End of Item 01DE - -Begin of Item 01DF - Format 0 - srcBegin = CF25 - srcEnd = CF2B - destBegin = B161 -End of Item 01DF - -Begin of Item 01E0 - Format 0 - srcBegin = CF32 - srcEnd = CF37 - destBegin = B169 -End of Item 01E0 - -Begin of Item 01E1 - Format 0 - srcBegin = CF39 - srcEnd = CF44 - destBegin = B16F -End of Item 01E1 - -Begin of Item 01E2 - Format 0 - srcBegin = CF45 - srcEnd = CF53 - destBegin = B181 -End of Item 01E2 - -Begin of Item 01E3 - Format 0 - srcBegin = CF5D - srcEnd = CF63 - destBegin = B195 -End of Item 01E3 - -Begin of Item 01E4 - Format 0 - srcBegin = CF79 - srcEnd = CF7F - destBegin = B249 -End of Item 01E4 - -Begin of Item 01E5 - Format 0 - srcBegin = CF86 - srcEnd = CF8B - destBegin = B254 -End of Item 01E5 - -Begin of Item 01E6 - Format 0 - srcBegin = CF8E - srcEnd = CFA0 - destBegin = B261 -End of Item 01E6 - -Begin of Item 01E7 - Format 0 - srcBegin = CFA2 - srcEnd = CFA7 - destBegin = B274 -End of Item 01E7 - -Begin of Item 01E8 - Format 0 - srcBegin = CFAA - srcEnd = CFAF - destBegin = B281 -End of Item 01E8 - -Begin of Item 01E9 - Format 0 - srcBegin = CFB1 - srcEnd = CFC3 - destBegin = B287 -End of Item 01E9 - -Begin of Item 01EA - Format 0 - srcBegin = CFC5 - srcEnd = CFCB - destBegin = B29A -End of Item 01EA - -Begin of Item 01EB - Format 0 - srcBegin = CFCC - srcEnd = CFDF - destBegin = B341 -End of Item 01EB - -Begin of Item 01EC - Format 0 - srcBegin = CFEA - srcEnd = CFEF - destBegin = B361 -End of Item 01EC - -Begin of Item 01ED - Format 0 - srcBegin = CFF6 - srcEnd = CFFB - destBegin = B369 -End of Item 01ED - -Begin of Item 01EE - Format 0 - srcBegin = D005 - srcEnd = D00A - destBegin = B375 -End of Item 01EE - -Begin of Item 01EF - Format 0 - srcBegin = D00B - srcEnd = D010 - destBegin = B381 -End of Item 01EF - -Begin of Item 01F0 - Format 0 - srcBegin = D012 - srcEnd = D017 - destBegin = B387 -End of Item 01F0 - -Begin of Item 01F1 - Format 0 - srcBegin = D019 - srcEnd = D02C - destBegin = B38D -End of Item 01F1 - -Begin of Item 01F2 - Format 0 - srcBegin = D02E - srcEnd = D033 - destBegin = B441 -End of Item 01F2 - -Begin of Item 01F3 - Format 0 - srcBegin = D03D - srcEnd = D043 - destBegin = B44C -End of Item 01F3 - -Begin of Item 01F4 - Format 0 - srcBegin = D04A - srcEnd = D04F - destBegin = B455 -End of Item 01F4 - -Begin of Item 01F5 - Format 0 - srcBegin = D059 - srcEnd = D05F - destBegin = B467 -End of Item 01F5 - -Begin of Item 01F6 - Format 0 - srcBegin = D061 - srcEnd = D06B - destBegin = B46E -End of Item 01F6 - -Begin of Item 01F7 - Format 0 - srcBegin = D075 - srcEnd = D07B - destBegin = B484 -End of Item 01F7 - -Begin of Item 01F8 - Format 0 - srcBegin = D082 - srcEnd = D094 - destBegin = B48E -End of Item 01F8 - -Begin of Item 01F9 - Format 0 - srcBegin = D095 - srcEnd = D0A3 - destBegin = B541 -End of Item 01F9 - -Begin of Item 01FA - Format 0 - srcBegin = D0AD - srcEnd = D0B2 - destBegin = B555 -End of Item 01FA - -Begin of Item 01FB - Format 0 - srcBegin = D0BA - srcEnd = D0BF - destBegin = B564 -End of Item 01FB - -Begin of Item 01FC - Format 0 - srcBegin = D0CA - srcEnd = D0CF - destBegin = B56F -End of Item 01FC - -Begin of Item 01FD - Format 0 - srcBegin = D0E5 - srcEnd = D0EB - destBegin = B587 -End of Item 01FD - -Begin of Item 01FE - Format 0 - srcBegin = D0F2 - srcEnd = D0F7 - destBegin = B58F -End of Item 01FE - -Begin of Item 01FF - Format 0 - srcBegin = D0F9 - srcEnd = D104 - destBegin = B595 -End of Item 01FF - -Begin of Item 0200 - Format 0 - srcBegin = D105 - srcEnd = D10C - destBegin = B641 -End of Item 0200 - -Begin of Item 0201 - Format 0 - srcBegin = D10E - srcEnd = D11F - destBegin = B649 -End of Item 0201 - -Begin of Item 0202 - Format 0 - srcBegin = D120 - srcEnd = D12F - destBegin = B661 -End of Item 0202 - -Begin of Item 0203 - Format 0 - srcBegin = D146 - srcEnd = D14B - destBegin = B683 -End of Item 0203 - -Begin of Item 0204 - Format 0 - srcBegin = D155 - srcEnd = D15B - destBegin = B68E -End of Item 0204 - -Begin of Item 0205 - Format 0 - srcBegin = D162 - srcEnd = D167 - destBegin = B697 -End of Item 0205 - -Begin of Item 0206 - Format 0 - srcBegin = D16E - srcEnd = D17B - destBegin = B741 -End of Item 0206 - -Begin of Item 0207 - Format 0 - srcBegin = D17D - srcEnd = D183 - destBegin = B74F -End of Item 0207 - -Begin of Item 0208 - Format 0 - srcBegin = D18B - srcEnd = D19F - destBegin = B761 -End of Item 0208 - -Begin of Item 0209 - Format 0 - srcBegin = D1A9 - srcEnd = D1AF - destBegin = B781 -End of Item 0209 - -Begin of Item 020A - Format 0 - srcBegin = D1C1 - srcEnd = D1CF - destBegin = B792 -End of Item 020A - -Begin of Item 020B - Format 0 - srcBegin = D1D0 - srcEnd = D1D7 - destBegin = B841 -End of Item 020B - -Begin of Item 020C - Format 0 - srcBegin = D1D9 - srcEnd = D1EA - destBegin = B849 -End of Item 020C - -Begin of Item 020D - Format 0 - srcBegin = D1EB - srcEnd = D1F3 - destBegin = B861 -End of Item 020D - -Begin of Item 020E - Format 0 - srcBegin = D1F9 - srcEnd = D206 - destBegin = B86D -End of Item 020E - -Begin of Item 020F - Format 0 - srcBegin = D20A - srcEnd = D20F - destBegin = B882 -End of Item 020F - -Begin of Item 0210 - Format 0 - srcBegin = D211 - srcEnd = D229 - destBegin = B888 -End of Item 0210 - -Begin of Item 0211 - Format 0 - srcBegin = D235 - srcEnd = D23B - destBegin = B948 -End of Item 0211 - -Begin of Item 0212 - Format 0 - srcBegin = D242 - srcEnd = D247 - destBegin = B951 -End of Item 0212 - -Begin of Item 0213 - Format 0 - srcBegin = D24D - srcEnd = D25B - destBegin = B961 -End of Item 0213 - -Begin of Item 0214 - Format 0 - srcBegin = D25D - srcEnd = D263 - destBegin = B970 -End of Item 0214 - -Begin of Item 0215 - Format 0 - srcBegin = D269 - srcEnd = D27F - destBegin = B981 -End of Item 0215 - -Begin of Item 0216 - Format 0 - srcBegin = D296 - srcEnd = D29B - destBegin = BA47 -End of Item 0216 - -Begin of Item 0217 - Format 0 - srcBegin = D2A5 - srcEnd = D2AB - destBegin = BA53 -End of Item 0217 - -Begin of Item 0218 - Format 0 - srcBegin = D2B2 - srcEnd = D2B7 - destBegin = BA64 -End of Item 0218 - -Begin of Item 0219 - Format 0 - srcBegin = D2CC - srcEnd = D2D1 - destBegin = BA75 -End of Item 0219 - -Begin of Item 021A - Format 0 - srcBegin = D2DD - srcEnd = D2E3 - destBegin = BA89 -End of Item 021A - -Begin of Item 021B - Format 0 - srcBegin = D2E6 - srcEnd = D2EF - destBegin = BA90 -End of Item 021B - -Begin of Item 021C - Format 0 - srcBegin = D306 - srcEnd = D30B - destBegin = BB48 -End of Item 021C - -Begin of Item 021D - Format 0 - srcBegin = D331 - srcEnd = D337 - destBegin = BB69 -End of Item 021D - -Begin of Item 021E - Format 0 - srcBegin = D33E - srcEnd = D343 - destBegin = BB71 -End of Item 021E - -Begin of Item 021F - Format 0 - srcBegin = D34A - srcEnd = D369 - destBegin = BB81 -End of Item 021F - -Begin of Item 0220 - Format 0 - srcBegin = D36A - srcEnd = D37B - destBegin = BC41 -End of Item 0220 - -Begin of Item 0221 - Format 0 - srcBegin = D392 - srcEnd = D397 - destBegin = BC66 -End of Item 0221 - -Begin of Item 0222 - Format 0 - srcBegin = D3A1 - srcEnd = D3A7 - destBegin = BC71 -End of Item 0222 - -Begin of Item 0223 - Format 0 - srcBegin = D3BD - srcEnd = D3C3 - destBegin = BC8C -End of Item 0223 - -Begin of Item 0224 - Format 0 - srcBegin = D3CA - srcEnd = D3CF - destBegin = BC95 -End of Item 0224 - -Begin of Item 0225 - Format 0 - srcBegin = D3D1 - srcEnd = D3D6 - destBegin = BC9B -End of Item 0225 - -Begin of Item 0226 - Format 0 - srcBegin = D3D9 - srcEnd = D3E0 - destBegin = BD42 -End of Item 0226 - -Begin of Item 0227 - Format 0 - srcBegin = D3E4 - srcEnd = D3EB - destBegin = BD4B -End of Item 0227 - -Begin of Item 0228 - Format 0 - srcBegin = D402 - srcEnd = D407 - destBegin = BD67 -End of Item 0228 - -Begin of Item 0229 - Format 0 - srcBegin = D409 - srcEnd = D416 - destBegin = BD6D -End of Item 0229 - -Begin of Item 022A - Format 0 - srcBegin = D417 - srcEnd = D41C - destBegin = BD81 -End of Item 022A - -Begin of Item 022B - Format 0 - srcBegin = D41E - srcEnd = D437 - destBegin = BD87 -End of Item 022B - -Begin of Item 022C - Format 0 - srcBegin = D438 - srcEnd = D43F - destBegin = BE41 -End of Item 022C - -Begin of Item 022D - Format 0 - srcBegin = D445 - srcEnd = D453 - destBegin = BE4C -End of Item 022D - -Begin of Item 022E - Format 0 - srcBegin = D454 - srcEnd = D45B - destBegin = BE61 -End of Item 022E - -Begin of Item 022F - Format 0 - srcBegin = D465 - srcEnd = D46C - destBegin = BE6F -End of Item 022F - -Begin of Item 0230 - Format 0 - srcBegin = D48E - srcEnd = D493 - destBegin = BE92 -End of Item 0230 - -Begin of Item 0231 - Format 0 - srcBegin = D495 - srcEnd = D49D - destBegin = BE98 -End of Item 0231 - -Begin of Item 0232 - Format 0 - srcBegin = D49E - srcEnd = D4A8 - destBegin = BF41 -End of Item 0232 - -Begin of Item 0233 - Format 0 - srcBegin = D4AA - srcEnd = D4B8 - destBegin = BF4C -End of Item 0233 - -Begin of Item 0234 - Format 0 - srcBegin = D4B9 - srcEnd = D4CB - destBegin = BF61 -End of Item 0234 - -Begin of Item 0235 - Format 0 - srcBegin = D4D6 - srcEnd = D4DB - destBegin = BF81 -End of Item 0235 - -Begin of Item 0236 - Format 0 - srcBegin = D4E0 - srcEnd = D4E7 - destBegin = BF89 -End of Item 0236 - -Begin of Item 0237 - Format 0 - srcBegin = D4F1 - srcEnd = D4F7 - destBegin = BF97 -End of Item 0237 - -Begin of Item 0238 - Format 0 - srcBegin = D4FE - srcEnd = D503 - destBegin = C041 -End of Item 0238 - -Begin of Item 0239 - Format 0 - srcBegin = D50D - srcEnd = D513 - destBegin = C04D -End of Item 0239 - -Begin of Item 023A - Format 0 - srcBegin = D518 - srcEnd = D51D - destBegin = C055 -End of Item 023A - -Begin of Item 023B - Format 0 - srcBegin = D51E - srcEnd = D537 - destBegin = C061 -End of Item 023B - -Begin of Item 023C - Format 0 - srcBegin = D545 - srcEnd = D54B - destBegin = C08A -End of Item 023C - -Begin of Item 023D - Format 0 - srcBegin = D552 - srcEnd = D557 - destBegin = C093 -End of Item 023D - -Begin of Item 023E - Format 0 - srcBegin = D56E - srcEnd = D573 - destBegin = C146 -End of Item 023E - -Begin of Item 023F - Format 0 - srcBegin = D57D - srcEnd = D583 - destBegin = C151 -End of Item 023F - -Begin of Item 0240 - Format 0 - srcBegin = D591 - srcEnd = D5A4 - destBegin = C165 -End of Item 0240 - -Begin of Item 0241 - Format 0 - srcBegin = D5A8 - srcEnd = D5C7 - destBegin = C181 -End of Item 0241 - -Begin of Item 0242 - Format 0 - srcBegin = D5DE - srcEnd = D5E3 - destBegin = C24E -End of Item 0242 - -Begin of Item 0243 - Format 0 - srcBegin = D5FA - srcEnd = D5FF - destBegin = C268 -End of Item 0243 - -Begin of Item 0244 - Format 0 - srcBegin = D609 - srcEnd = D60F - destBegin = C273 -End of Item 0244 - -Begin of Item 0245 - Format 0 - srcBegin = D616 - srcEnd = D61B - destBegin = C281 -End of Item 0245 - -Begin of Item 0246 - Format 0 - srcBegin = D625 - srcEnd = D62C - destBegin = C28D -End of Item 0246 - -Begin of Item 0247 - Format 0 - srcBegin = D62E - srcEnd = D637 - destBegin = C295 -End of Item 0247 - -Begin of Item 0248 - Format 0 - srcBegin = D66A - srcEnd = D66F - destBegin = C367 -End of Item 0248 - -Begin of Item 0249 - Format 0 - srcBegin = D675 - srcEnd = D680 - destBegin = C36F -End of Item 0249 - -Begin of Item 024A - Format 0 - srcBegin = D686 - srcEnd = D68B - destBegin = C384 -End of Item 024A - -Begin of Item 024B - Format 0 - srcBegin = D695 - srcEnd = D69C - destBegin = C38F -End of Item 024B - -Begin of Item 024C - Format 0 - srcBegin = D6A2 - srcEnd = D6A7 - destBegin = C399 -End of Item 024C - -Begin of Item 024D - Format 0 - srcBegin = D6B1 - srcEnd = D6B8 - destBegin = C445 -End of Item 024D - -Begin of Item 024E - Format 0 - srcBegin = D6BC - srcEnd = D6C3 - destBegin = C44E -End of Item 024E - -Begin of Item 024F - Format 0 - srcBegin = D6DA - srcEnd = D6DF - destBegin = C46A -End of Item 024F - -Begin of Item 0250 - Format 0 - srcBegin = D6F6 - srcEnd = D6FB - destBegin = C487 -End of Item 0250 - -Begin of Item 0251 - Format 0 - srcBegin = D705 - srcEnd = D710 - destBegin = C492 -End of Item 0251 - -Begin of Item 0252 - Format 0 - srcBegin = D721 - srcEnd = D727 - destBegin = C549 -End of Item 0252 - -Begin of Item 0253 - Format 0 - srcBegin = D72E - srcEnd = D733 - destBegin = C552 -End of Item 0253 - -Begin of Item 0254 - Format 0 - srcBegin = D73D - srcEnd = D743 - destBegin = C563 -End of Item 0254 - -Begin of Item 0255 - Format 0 - srcBegin = D74A - srcEnd = D74F - destBegin = C56D -End of Item 0255 - -Begin of Item 0256 - Format 0 - srcBegin = D775 - srcEnd = D77B - destBegin = C58F -End of Item 0256 - -Begin of Item 0257 - Format 0 - srcBegin = D782 - srcEnd = D787 - destBegin = C599 -End of Item 0257 - -Begin of Item 0258 - Format 0 - srcBegin = D791 - srcEnd = D797 - destBegin = C644 -End of Item 0258 - -Begin of Item 0259 - Format 0 - srcBegin = D79E - srcEnd = D7A3 - destBegin = C64D -End of Item 0259 - -Begin of Item 025A - Format 0 - srcBegin = F90E - srcEnd = F913 - destBegin = D1DB -End of Item 025A - -Begin of Item 025B - Format 0 - srcBegin = F933 - srcEnd = F938 - destBegin = D2C6 -End of Item 025B - -Begin of Item 025C - Format 0 - srcBegin = F939 - srcEnd = F943 - destBegin = D2CD -End of Item 025C - -Begin of Item 025D - Format 0 - srcBegin = F94A - srcEnd = F951 - destBegin = D2E4 -End of Item 025D - -Begin of Item 025E - Format 0 - srcBegin = F952 - srcEnd = F957 - destBegin = D2F0 -End of Item 025E - -Begin of Item 025F - Format 0 - srcBegin = FF01 - srcEnd = FF3B - destBegin = A3A1 -End of Item 025F - -Begin of Item 0260 - Format 0 - srcBegin = FF3D - srcEnd = FF5D - destBegin = A3DD -End of Item 0260 - -Begin of Item 0261 - Format 1 - srcBegin = 00A1 - srcEnd = 00FE - mappingOffset = 0000 - Mapping = - A2AE FFFD FFFD A2B4 FFFD FFFD A1D7 A1A7 - FFFD A8A3 FFFD FFFD A1A9 FFFD FFFD A1C6 - A1BE A9F7 A9F8 A2A5 FFFD A2D2 A1A4 A2AC - A9F6 A8AC FFFD A8F9 A8F6 A8FA A2AF FFFD - FFFD FFFD FFFD FFFD FFFD A8A1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD A8A2 - FFFD FFFD FFFD FFFD FFFD FFFD A1BF A8AA - FFFD FFFD FFFD FFFD FFFD A8AD A9AC FFFD - FFFD FFFD FFFD FFFD FFFD A9A1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD A9A3 - FFFD FFFD FFFD FFFD FFFD FFFD A1C0 A9AA - FFFD FFFD FFFD FFFD FFFD A9AD -End of Item 0261 - -Begin of Item 0262 - Format 2 - srcBegin = 0111 - destBegin = A9A2 -End of Item 0262 - -Begin of Item 0263 - Format 1 - srcBegin = 0126 - srcEnd = 0153 - mappingOffset = 005E - Mapping = - A8A4 A9A4 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD A9A5 A8A6 A9A6 FFFD FFFD - FFFD FFFD A9A7 FFFD FFFD FFFD FFFD FFFD - FFFD A8A8 A9A8 A8A9 A9A9 FFFD FFFD FFFD - FFFD FFFD FFFD A9B0 A8AF A9AF FFFD FFFD - FFFD FFFD FFFD FFFD A8AB A9AB -End of Item 0263 - -Begin of Item 0264 - Format 1 - srcBegin = 0166 - srcEnd = 0167 - mappingOffset = 008C - Mapping = - A8AE A9AE -End of Item 0264 - -Begin of Item 0265 - Format 1 - srcBegin = 02C7 - srcEnd = 02DD - mappingOffset = 008E - Mapping = - A2A7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD A2B0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD A2A8 A2AB A2AA A2AD FFFD A2A9 -End of Item 0265 - -Begin of Item 0266 - Format 2 - srcBegin = 0401 - destBegin = ACA7 -End of Item 0266 - -Begin of Item 0267 - Format 2 - srcBegin = 0451 - destBegin = ACD7 -End of Item 0267 - -Begin of Item 0268 - Format 1 - srcBegin = 2015 - srcEnd = 203B - mappingOffset = 00A5 - Mapping = - A1AA FFFD FFFD A1AE A1AF FFFD FFFD A1B0 - A1B1 FFFD FFFD A2D3 A2D4 FFFD FFFD FFFD - A1A5 A1A6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD A2B6 FFFD A1C7 A1C8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD A1D8 -End of Item 0268 - -Begin of Item 0269 - Format 1 - srcBegin = 2074 - srcEnd = 2084 - mappingOffset = 00CC - Mapping = - A9F9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD A9FA FFFD A9FB A9FC A9FD - A9FE -End of Item 0269 - -Begin of Item 026A - Format 1 - srcBegin = 2103 - srcEnd = 212B - mappingOffset = 00DD - Mapping = - A1C9 FFFD FFFD FFFD FFFD FFFD A2B5 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - A7A4 FFFD FFFD A2E0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD A2E5 A2E2 - FFFD FFFD FFFD A7D9 FFFD FFFD FFFD FFFD - A1CA -End of Item 026A - -Begin of Item 026B - Format 1 - srcBegin = 2153 - srcEnd = 215E - mappingOffset = 0106 - Mapping = - A8F7 A8F8 FFFD FFFD FFFD FFFD FFFD FFFD - A8FB A8FC A8FD A8FE -End of Item 026B - -Begin of Item 026C - Format 1 - srcBegin = 2190 - srcEnd = 2199 - mappingOffset = 0112 - Mapping = - A1E7 A1E8 A1E6 A1E9 A1EA A2D5 A2D8 A2D6 - A2D9 A2D7 -End of Item 026C - -Begin of Item 026D - Format 1 - srcBegin = 21D2 - srcEnd = 21D4 - mappingOffset = 011C - Mapping = - A2A1 FFFD A2A2 -End of Item 026D - -Begin of Item 026E - Format 1 - srcBegin = 2200 - srcEnd = 223D - mappingOffset = 011F - Mapping = - A2A3 FFFD A1D3 A2A4 FFFD FFFD FFFD A1D4 - A1F4 FFFD FFFD A1F5 FFFD FFFD FFFD A2B3 - FFFD A2B2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD A1EE FFFD FFFD A1F0 A1C4 FFFD - A1D0 FFFD FFFD FFFD FFFD A1AB FFFD A1FC - A1FD A1FB A1FA A1F2 A1F3 FFFD A2B1 FFFD - FFFD FFFD FFFD FFFD A1C5 A1F1 FFFD FFFD - FFFD FFFD FFFD FFFD A1AD A1EF -End of Item 026E - -Begin of Item 026F - Format 2 - srcBegin = 2252 - destBegin = A1D6 -End of Item 026F - -Begin of Item 0270 - Format 1 - srcBegin = 2260 - srcEnd = 226B - mappingOffset = 015D - Mapping = - A1C1 A1D5 FFFD FFFD A1C2 A1C3 FFFD FFFD - FFFD FFFD A1EC A1ED -End of Item 0270 - -Begin of Item 0271 - Format 1 - srcBegin = 2282 - srcEnd = 2287 - mappingOffset = 0169 - Mapping = - A1F8 A1F9 FFFD FFFD A1F6 A1F7 -End of Item 0271 - -Begin of Item 0272 - Format 2 - srcBegin = 2299 - destBegin = A2C1 -End of Item 0272 - -Begin of Item 0273 - Format 2 - srcBegin = 22A5 - destBegin = A1D1 -End of Item 0273 - -Begin of Item 0274 - Format 2 - srcBegin = 2312 - destBegin = A1D2 -End of Item 0274 - -Begin of Item 0275 - Format 1 - srcBegin = 2500 - srcEnd = 254B - mappingOffset = 016F - Mapping = - A6A1 A6AC A6A2 A6AD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A6A3 A6C8 A6C7 A6AE - A6A4 A6C2 A6C1 A6AF A6A6 A6C6 A6C5 A6B1 - A6A5 A6C4 A6C3 A6B0 A6A7 A6BC A6C9 A6CA - A6B7 A6CB A6CC A6B2 A6A9 A6BE A6CD A6CE - A6B9 A6CF A6D0 A6B4 A6A8 A6D1 A6D2 A6B8 - A6BD A6D3 A6D4 A6B3 A6AA A6D5 A6D6 A6BA - A6BF A6D7 A6D8 A6B5 A6AB A6D9 A6DA A6BB - A6DB A6DC A6C0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD A6B6 -End of Item 0275 - -Begin of Item 0276 - Format 2 - srcBegin = 2592 - destBegin = A2C6 -End of Item 0276 - -Begin of Item 0277 - Format 1 - srcBegin = 25A0 - srcEnd = 25D1 - mappingOffset = 01BB - Mapping = - A1E1 A1E0 FFFD A2C3 A2C7 A2C8 A2CB A2CA - A2C9 A2CC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD A1E3 A1E2 FFFD FFFD A2BA A2B9 - FFFD FFFD FFFD FFFD A1E5 A1E4 FFFD FFFD - A2B8 A2B7 FFFD FFFD FFFD FFFD A1DF A1DE - A2C2 FFFD FFFD A1DB FFFD FFFD A1DD A1DC - A2C4 A2C5 -End of Item 0277 - -Begin of Item 0278 - Format 1 - srcBegin = 2605 - srcEnd = 260F - mappingOffset = 01ED - Mapping = - A1DA A1D9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD A2CF A2CE -End of Item 0278 - -Begin of Item 0279 - Format 1 - srcBegin = 261C - srcEnd = 261E - mappingOffset = 01F8 - Mapping = - A2D0 FFFD A2D1 -End of Item 0279 - -Begin of Item 027A - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 01FB - Mapping = - A1CF FFFD A1CE -End of Item 027A - -Begin of Item 027B - Format 1 - srcBegin = 2660 - srcEnd = 266D - mappingOffset = 01FE - Mapping = - A2BC A2BD FFFD A2C0 A2BB A2BE FFFD A2BF - A2CD A2DB A2DC FFFD A2DD A2DA -End of Item 027B - -Begin of Item 027C - Format 1 - srcBegin = 3000 - srcEnd = 3003 - mappingOffset = 020C - Mapping = - A1A1 A1A2 A1A3 A1A8 -End of Item 027C - -Begin of Item 027D - Format 1 - srcBegin = 3013 - srcEnd = 3015 - mappingOffset = 0210 - Mapping = - A1EB A1B2 A1B3 -End of Item 027D - -Begin of Item 027E - Format 2 - srcBegin = 321C - destBegin = A2DF -End of Item 027E - -Begin of Item 027F - Format 2 - srcBegin = 327F - destBegin = A2DE -End of Item 027F - -Begin of Item 0280 - Format 1 - srcBegin = 3380 - srcEnd = 33AF - mappingOffset = 0213 - Mapping = - A7C9 A7CA A7CB A7CC A7CD FFFD FFFD FFFD - A7BA A7BB A7DC A7DD A7DE A7B6 A7B7 A7B8 - A7D4 A7D5 A7D6 A7D7 A7D8 A7A1 A7A2 A7A3 - A7A5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD A7A7 A7A8 A7A9 A7AA A7BD - A7BE A7E5 A7E6 A7E7 A7E8 A7E1 A7E2 A7E3 -End of Item 0280 - -Begin of Item 0281 - Format 1 - srcBegin = 33C0 - srcEnd = 33DD - mappingOffset = 0243 - Mapping = - A7DA A7DB A2E3 A7EC A7A6 A7E0 A7EF A2E1 - A7BC A7ED A7B5 FFFD FFFD FFFD FFFD A7B9 - A7EA FFFD FFFD A7EB FFFD FFFD A7DF FFFD - A2E4 FFFD FFFD A7E4 A7EE A7E9 -End of Item 0281 - -Begin of Item 0282 - Format 1 - srcBegin = 4E00 - srcEnd = 4E1E - mappingOffset = 0261 - Mapping = - ECE9 EFCB FFFD F6D2 FFFD FFFD FFFD D8B2 - EDDB DFB2 DFBE F9BB FFFD DCF4 FFFD FFFD - FFFD F5E4 FFFD FFFD F3A6 DDE0 E1A6 FFFD - CEF8 DCB0 FFFD FFFD FFFD FFFD E3AA -End of Item 0282 - -Begin of Item 0283 - Format 1 - srcBegin = 4E2D - srcEnd = 4E5F - mappingOffset = 0280 - Mapping = - F1E9 FFFD FFFD FFFD FFFD CDFA FFFD FFFD - FFFD FFFD FFFD FCAF D3A1 FFFD F1AB FFFD - FFFD FFFD FFFD FFFD FFFD E7D1 D2AC FFFD - CEF9 FFFD FFFD FFFD FFFD FFFD F1FD FFFD - DEBF FBBA F9B9 FFFD FFFD FFFD FFFD FFFD - FFFD CED2 FFFD E3AB EBE0 FFFD FFFD FFFD - CEFA CBF7 E5A5 -End of Item 0283 - -Begin of Item 0284 - Format 1 - srcBegin = 4E6B - srcEnd = 4F11 - mappingOffset = 02B3 - Mapping = - CAE1 FFFD D4CC FFFD FFFD FFFD FFFD FFFD - EAE1 FFFD FFFD DCE3 DFAD FFFD FFFD FFFD - FFFD FFFD FFFD CBEB FFFD FFFD FFFD D5AF - FFFD FFFD FFFD D6F5 FFFD E5F8 FFFD FFFD - DEC0 ECA3 FFFD E9CD FFFD EAA7 E9F6 FBBB - FFFD E7E9 EFCC FFFD FFFD D0E6 FFFD FFFD - DEC1 FFFD FFFD E4AC FFFD FFFD D8CC F9F1 - FFFD CEDF FAA4 E6B2 FFFD FAFB FFFD FFFD - FABD CCC8 EFCD D5D5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D3A2 FFFD FFFD FFFD ECD1 - FFFD FFFD FFFD FFFD FFFD E4A7 ECD2 FFFD - FFFD F6B1 FFFD FFFD CEFB FFFD FFFD D0D1 - CBBF FFFD EDA4 FFFD FFFD FFFD FFFD FFFD - FFFD EDA8 DEC2 F6E2 EDDC DCF5 E0B9 FFFD - FFFD FFFD D4CE FFFD F4B5 FFFD FFFD FFFD - D3DB D6B5 ECA4 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E4E6 FFFD F1EA - FFFD FFFD FFFD CBEC CBC0 FFFD FFFD FFFD - ECF2 FFFD FFFD FFFD FFFD FFFD D0EA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F9F2 ECA5 - D0DF FFFD E7EA D0EB DCD1 DBE9 FDCC -End of Item 0284 - -Begin of Item 0285 - Format 1 - srcBegin = 4F2F - srcEnd = 4F5C - mappingOffset = 035A - Mapping = - DBD7 FFFD FFFD FFFD FFFD DAE1 FFFD D6B6 - FFFD E3DF FFFD DEC3 FFFD DEC4 CAA1 FFFD - FFFD FFFD FFFD FFFD EEEC FFFD FFFD D3A3 - EEB7 F8CF FFFD FFFD FFFD FFFD EAC8 EEB8 - F1AC F1A5 E9CE FFFD FFFD FFFD F9BC FFFD - FFFD FFFD E5F9 ECEA DDD6 EDC2 -End of Item 0285 - -Begin of Item 0286 - Format 1 - srcBegin = 4F69 - srcEnd = 4F9D - mappingOffset = 0388 - Mapping = - F8A5 FFFD FFFD FFFD FFFD FFFD E5BA DBD8 - FFFD FFFD CAA2 FFFD FFFD D1CD FFFD FFFD - FFFD EEED FFFD FFFD FFFD ECEB DEC5 FFFD - E3E0 FFFD CAC9 F2E9 FFFD D5CE FFFD F6B6 - FFFD CEC2 D6C7 FFFD E3B4 FFFD F1AD FFFD - EAE2 FFFD FFFD FFFD FFFD D7C2 FFFD F3A7 - FFFD FFFD CDEA FFFD EBEE -End of Item 0286 - -Begin of Item 0287 - Format 1 - srcBegin = 4FAE - srcEnd = 4FE1 - mappingOffset = 03BD - Mapping = - D9B2 FDA5 FFFD FFFD FFFD FFFD FFFD F6D5 - D5E2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F8B5 FFFD FFFD CCF5 F5B5 E4AD FFFD - FFFD FFFD FFFD E7EB F1D5 FFFD FFFD FFFD - F0BB FFFD FFFD E9B5 FFFD CCC9 FAD5 FFFD - FFFD E1D4 FFFD FFFD D7D6 FFFD FFFD DCC1 - FFFD DEC6 FAEF E3E1 -End of Item 0287 - -Begin of Item 0288 - Format 1 - srcBegin = 4FEE - srcEnd = 502D - mappingOffset = 03F1 - Mapping = - E1F3 DCF6 FFFD CEFC FFFD DBC4 FFFD F8F1 - FFFD FFFD DCE4 FFFD E5EF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DCB1 FFFD FFFD FFFD - D5D6 FFFD FFFD F3DA FFFD CBC1 FFFD DBC3 - FFFD FFFD FFFD D9FA D3EE FFFD FFFD FFFD - FAB8 FFFD FFFD FDA6 EBEF FFFD F4A6 FFFD - CCCA F3A8 FFFD F3DB FFFD DBA7 F6B7 FFFD - CFE6 F0F2 CBDA FFFD E7D2 D7C3 F6F0 E8DE -End of Item 0288 - -Begin of Item 0289 - Format 1 - srcBegin = 503B - srcEnd = 5065 - mappingOffset = 0431 - Mapping = - E5A6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E5E7 FFFD FFFD FFFD CAA3 CCA7 EAC9 FFFD - FFFD FFFD FFFD FFFD F8B6 FFFD FFFD FFFD - FFFD FFFD FAA5 FFFD FFFD FFFD FFFD F1AE - FFFD EFCE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CBED -End of Item 0289 - -Begin of Item 028A - Format 1 - srcBegin = 5074 - srcEnd = 5099 - mappingOffset = 045C - Mapping = - F6B0 EFCF E9CF FFFD F7DE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CED3 FFFD FFFD FFFD - FFFD DCF7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DBA8 FFFD FFFD FFFD CBF8 FFFD FFFD - FFFD FFFD FFFD FFFD DFA1 DDE1 -End of Item 028A - -Begin of Item 028B - Format 1 - srcBegin = 50AC - srcEnd = 50ED - mappingOffset = 0482 - Mapping = - F5CA E9B6 FFFD FFFD FFFD FFFD E7EC EEEE - FFFD F3F0 FFFD DFBF FFFD FFFD FFFD FFFD - FFFD FFFD CCCB FFFD FFFD FFFD FFFD FFFD - FFFD D0C1 FFFD FFFD FFFD F4D2 E0BA FFFD - FFFD FFFD FFFD DFC0 FFFD CEE0 FFFD FFFD - FFFD DCD2 FDEA FFFD FFFD FFFD D6F6 FFFD - FFFD FFFD EACA FFFD FFFD FFFD FFFD FFFD - FFFD E8E9 FFFD E3AC FFFD FFFD FFFD FFFD - FFFD F3D0 -End of Item 028B - -Begin of Item 028C - Format 1 - srcBegin = 50F9 - srcEnd = 5112 - mappingOffset = 04C4 - Mapping = - CAA4 FFFD DBF8 FFFD FFFD FFFD DEC7 EBF0 - F1D6 FFFD FFFD E5E2 FFFD CCCC FFFD FFFD - CBFB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD EAE3 -End of Item 028C - -Begin of Item 028D - Format 1 - srcBegin = 511F - srcEnd = 51CD - mappingOffset = 04DE - Mapping = - DFC1 FFFD D6ED FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E9D0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EEB9 FFFD FFFD FFFD FFFD - D5E3 FFFD FFFD D1D3 FFFD E5F0 FFFD FFFD - FFFD E8B4 EBC3 FFFD EAAA FAFC F5F6 F0BC - FDD4 E0BB CEC3 FFFD D0BA F7BA D8F3 F7CD - FFFD FFFD FFFD E4AE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D4DF FFFD FFFD - FFFD FFFD FFFD D0E7 FFFD FFFD ECFD FFFD - D2AE EEEF D5D7 EAE4 F8A2 CDEB D7BF FBB1 - FFFD FFFD CDEC FFFD FFFD FFFD DCB2 D0EC - CEFD EEF0 FFFD FFFD FFFD CCC2 FFFD FFFD - FFFD D0ED FFFD FFFD FFFD FFFD FFFD E5F7 - FFFD FFFD FFFD F3FC FFFD FFFD EEA2 FFFD - FFFD FFFD FFFD D9B3 FFFD FFFD D8F4 FFFD - E9B7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CEAE FFFD FFFD FFFD FFFD D9A2 FFFD - FFFD FFFD FFFD D8F1 FFFD D4CF FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E5A7 - D5D2 FFFD FFFD FFFD FFFD FFFD D6A9 FFFD - FFFD FFFD FFFD FFFD FFFD F4A2 FFFD F1D7 - FFFD FFFD D5D8 FFFD F0BD D7D0 D4D0 -End of Item 028D - -Begin of Item 028E - Format 1 - srcBegin = 51DC - srcEnd = 51E1 - mappingOffset = 058D - Mapping = - D7CF EBEA FDEB FFFD FFFD DBED -End of Item 028E - -Begin of Item 028F - Format 1 - srcBegin = 51F0 - srcEnd = 52AB - mappingOffset = 0593 - Mapping = - FCC5 CBC2 FFFD FFFD FFFD FFFD FDD5 FFFD - F4C8 E8EA F5F3 FFFD FFFD F9DE FFFD FFFD - D3EF FFFD FFFD ECD3 FFFD FFFD DDC2 EFB7 - E7D4 FFFD CACA FFFD FFFD FFFD D9FB FFFD - FFFD FAFD FFFD FFFD FFFD FFFD FFFD D6AA - FFFD FFFD FFFD FFFD FFFD F4F8 FFFD FFFD - FFFD FFFD FFFD FFFD F7F7 DCAC FFFD FFFD - FFFD D7D7 DFA2 FFFD FFFD FFFD CEBE FFFD - D3F0 FFFD FFFD FFFD FFFD FFFD F0A4 E1EC - CFE7 F3CB EDA9 CABE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F4EF FFFD FFFD FFFD F6CE - FFFD FFFD DEFB D0BB D5B7 EEF1 FFFD FFFD - FFFD FFFD FFFD FFFD F4A8 FFFD DCF8 FFFD - FFFD FFFD FFFD CBA7 FFFD DACE FFFD FFFD - FFFD E0E6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD EDA5 EEF2 FFFD FFFD FFFD FFFD DCF9 - FFFD FFFD F9DC FFFD FFFD F3DC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F8F2 FFFD F4F9 - FFFD FFFD FFFD FCF1 FFFD FFFD FFFD D0BC - DBF9 D7B1 FFFD FFFD FFFD CBFC FFFD FFFD - FFFD F0A5 CBFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D5F4 FFFD FFFD FFFD CDED - CAA5 FFFD FFFD D6AB D0C2 FFFD FFFD FFFD - FFFD F0BE D2BD CCA4 -End of Item 028F - -Begin of Item 0290 - Format 1 - srcBegin = 52BE - srcEnd = 52E4 - mappingOffset = 064F - Mapping = - FAB6 FFFD FFFD CCCD FFFD DAFA FFFD F6CF - FFFD E9B8 FFFD D8F5 FFFD FFFD FFFD CCCE - FFFD FFFD FFFD FFFD D7CD FFFD FFFD D4D1 - E9ED FFFD CAEB D9E2 FFFD FDB2 FFFD E3AD - D6CC D9B4 FFFD FFFD E1A7 EED3 D0C3 -End of Item 0290 - -Begin of Item 0291 - Format 1 - srcBegin = 52F3 - srcEnd = 5384 - mappingOffset = 0676 - Mapping = - FDB3 FFFD D5E4 FFFD FFFD CFE8 FFFD EDC3 - D0B2 FFFD FFFD CEFE DAA8 FFFD FFFD FFFD - FFFD FFFD F8D0 FFFD FFFD FDD6 FFFD FFFD - FFFD FFFD F8D1 FFFD F8D2 DCD3 FFFD FFFD - FFFD FFFD DDE2 FBF9 DDC1 FFFD E3B5 FFFD - FFFD FFFD FFFD FFFD FFFD EDDD CEC4 FFFD - CBA1 FFFD FFFD FFFD FFFD FFFD FFFD DDE3 - FFFD FFFD FFFD FFFD FCDD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F9AF FFFD - FFFD FFFD FFFD FFFD D2FB CFA1 E4A8 FFFD - F4B6 ECFE FFFD FFFD E3AE E7ED FDC1 DAE2 - FFFD FFFD D8B3 FFFD FFFD FFFD DDE4 F0EF - F6F1 FAF0 FFFD FFFD D1F5 FFFD FFFD DACF - FFFD DCD4 FFFD DCA6 FFFD EFBF FFFD FFFD - FFFD FFFD FFFD CECF FFFD E0D9 FFFD FFFD - FFFD FFFD FFFD FFFD D9D6 ECD4 EACB FFFD - FFFD CABF D5B0 FFFD CFE9 FFFD FFFD FFFD - FFFD FFFD F1ED FFFD CCCF FFFD FFFD FFFD - FFFD E4F8 -End of Item 0291 - -Begin of Item 0292 - Format 1 - srcBegin = 5393 - srcEnd = 53AD - mappingOffset = 0708 - Mapping = - E4ED FFFD FFFD FFFD FFFD D7D8 FFFD FDA7 - FFFD FFFD FFFD FFFD EAAB F6B2 FFFD FFFD - FFFD FFFD CFF0 F9BD FFFD FFFD FFFD FFFD - FFFD FFFD E6F4 -End of Item 0292 - -Begin of Item 0293 - Format 1 - srcBegin = 53BB - srcEnd = 5451 - mappingOffset = 0723 - Mapping = - CBDB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F3D1 FFFD FFFD FFFD FFFD E9D1 F3A9 D0E0 - E9D2 FFFD DAE3 FFFD FFFD FFFD FFFD FFFD - FFFD E2D2 FFFD F6A2 E1F4 FFFD FFFD FFFD - DAE4 FFFD FFFD FFFD FFFD FFFD E7D5 F5BF - CFA2 CDAF CFA3 FFFD FFFD FFFD CDB0 F1FE - D0A3 E1AF F8A3 FFFD CAA6 F7BB F2EA DEC8 - E9D3 FFFD FFFD FFFD FFFD DEC9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FDDE CAC0 FFFD FFFD FFFD F9EA D1CE EED4 - FFFD D4D2 D9A3 FDA8 D7D9 F7CE FABE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CFD6 FFFD D7F0 FFFD EBE1 F8C5 FFFD FFFD - FFFD FFFD FFFD DCFA FFFD FFFD DDC3 FFFD - F9DF FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E7EF FFFD FFFD FFFD FFFD FDE5 F6A3 FFFD - D9FC FDA9 FFFD E7EE FFFD FFFD FFFD D5E5 - FFFD FFFD FFFD FFFD FFFD EFD0 FFFD CDB1 - FFFD FFFD FFFD FFFD FFFD FFFD F7A2 -End of Item 0293 - -Begin of Item 0294 - Format 1 - srcBegin = 5468 - srcEnd = 5490 - mappingOffset = 07BA - Mapping = - F1B2 FFFD F1B1 FFFD FFFD FFFD FFFD FFFD - FFFD CDB2 FFFD DAAB FFFD CAA7 FFFD FFFD - FFFD FFFD FFFD E3E2 FBBC D9A4 FFFD FFFD - EEBA FFFD FFFD FFFD FFFD FFFD F8D3 FFFD - FFFD FFFD FFFD FFFD FBFA FFFD CFA4 FFFD - DCFB -End of Item 0294 - -Begin of Item 0295 - Format 1 - srcBegin = 54A4 - srcEnd = 54C9 - mappingOffset = 07E3 - Mapping = - F6E3 FFFD FFFD FFFD EDAA FFFD FFFD F2A1 - CEE1 FFFD FFFD FFFD FFFD FFFD FFFD FAA6 - FFFD FFFD FFFD FFFD F9E0 FFFD FFFD FFFD - FFFD ECD6 FFFD FFFD E4EE F9A1 FFFD FFFD - FBEF FFFD FFFD FFFD F9EB EEA3 -End of Item 0295 - -Begin of Item 0296 - Format 1 - srcBegin = 54E1 - srcEnd = 5510 - mappingOffset = 0809 - Mapping = - EAAC FFFD FFFD FFFD CAA8 FFFD FFFD F4FA - FFFD FFFD FFFD FFFD CDD6 FCF6 FFFD FFFD - FFFD F4C9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F8D4 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F8A6 FFFD DECA F2C6 FFFD - FFFD FFFD FFFD FFFD FFFD D7DA FFFD D3D0 -End of Item 0296 - -Begin of Item 0297 - Format 2 - srcBegin = 551C - destBegin = D8C5 -End of Item 0297 - -Begin of Item 0298 - Format 1 - srcBegin = 552F - srcEnd = 5563 - mappingOffset = 0839 - Mapping = - EAE6 FFFD F3DD FFFD FFFD FFFD E4DA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F6E4 - FFFD FFFD FFFD FFFD FFFD F6F2 FFFD DFC2 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D9FD FFFD FFFD FFFD CCF6 FFFD FFFD D3BA - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E4AF - FFFD FFFD FFFD FFFD F9E1 -End of Item 0298 - -Begin of Item 0299 - Format 1 - srcBegin = 557C - srcEnd = 558A - mappingOffset = 086E - Mapping = - F0A6 FFFD FFFD FFFD CBD3 FFFD FFFD FFFD - E0BC FFFD F4CA D4FA FFFD FDAA F9E2 -End of Item 0299 - -Begin of Item 029A - Format 1 - srcBegin = 5598 - srcEnd = 55AE - mappingOffset = 087D - Mapping = - F4B7 FDC2 FCB0 FFFD FDEC CAE2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FDBD - FFFD EAE7 DFC3 D1D2 CEE2 FFFD D3A4 -End of Item 029A - -Begin of Item 029B - Format 1 - srcBegin = 55C5 - srcEnd = 55C7 - mappingOffset = 0894 - Mapping = - FDAB FFFD DFE0 -End of Item 029B - -Begin of Item 029C - Format 1 - srcBegin = 55D4 - srcEnd = 55E4 - mappingOffset = 0897 - Mapping = - F2C7 FFFD FFFD FFFD FFFD FFFD E7F0 FFFD - D0EE FFFD FFFD F3AA FFFD FFFD FFFD DECB - F6B8 -End of Item 029C - -Begin of Item 029D - Format 1 - srcBegin = 55FD - srcEnd = 5617 - mappingOffset = 08A8 - Mapping = - E1F5 F1B3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F7A3 FFFD FFFD CAA9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD CFA5 - FFFD FFFD DFC4 -End of Item 029D - -Begin of Item 029E - Format 1 - srcBegin = 562F - srcEnd = 5636 - mappingOffset = 08C3 - Mapping = - E1B0 FFFD FFFD F0BF FFFD F6A4 FFFD E3B6 -End of Item 029E - -Begin of Item 029F - Format 2 - srcBegin = 5653 - destBegin = FAC6 -End of Item 029F - -Begin of Item 02A0 - Format 1 - srcBegin = 5668 - srcEnd = 5674 - mappingOffset = 08CB - Mapping = - D0EF FFFD FFFD FDED FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DDC4 -End of Item 02A0 - -Begin of Item 02A1 - Format 2 - srcBegin = 5686 - destBegin = FCF7 -End of Item 02A1 - -Begin of Item 02A2 - Format 1 - srcBegin = 56A5 - srcEnd = 56BC - mappingOffset = 08D8 - Mapping = - E6BF FFFD FFFD FFFD FFFD FFFD FFFD DEAD - FFFD FABF FFFD FFFD FFFD FFFD FFFD E5F1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EDC4 -End of Item 02A2 - -Begin of Item 02A3 - Format 1 - srcBegin = 56CA - srcEnd = 56E0 - mappingOffset = 08F0 - Mapping = - D2A5 FFFD FFFD FDEE FFFD FFFD FFFD F5B6 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E1F6 DECC FFFD FFFD FCDE FFFD ECD7 -End of Item 02A3 - -Begin of Item 02A4 - Format 1 - srcBegin = 56F0 - srcEnd = 5751 - mappingOffset = 0907 - Mapping = - CDDD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D6B7 CDB3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F8D5 E5D8 FFFD FFFD FFFD - CFEA FFFD FFFD CFD0 FFFD EACC FFFD FFFD - FFFD FFFD EAAE EAAD FFFD FFFD D3F1 FFFD - D3A5 FFFD FFFD FFFD FFFD FFFD FFFD F7CF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EEA4 FFFD FFFD FFFD FFFD D0A4 FFFD FFFD - F2A2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D0F0 FFFD FFFD FFFD FFFD - F2A3 FFFD F7F8 FFFD FFFD FFFD FFFD D0B3 - FFFD FFFD DBA9 FFFD FFFD D3BB CAEC FFFD - F1A6 CBD5 -End of Item 02A4 - -Begin of Item 02A5 - Format 1 - srcBegin = 5761 - srcEnd = 5793 - mappingOffset = 0969 - Mapping = - F7E7 FFFD FFFD CDDE FFFD F7A4 FFFD FFFD - FFFD F8C0 FFFD FFFD FFFD D3DD FFFD CCD0 - FFFD FFFD FFFD FFFD CFA6 FFFD FFFD FFFD - FFFD FFFD FFFD F6F3 FFFD FFFD FFFD FFFD - FFFD E1F7 FFFD FFFD FFFD FFFD FFFD D3DC - FFFD FFFD FAFE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FAA7 -End of Item 02A5 - -Begin of Item 02A6 - Format 1 - srcBegin = 57A0 - srcEnd = 57A3 - mappingOffset = 099C - Mapping = - EBD9 FFFD CFA7 EAAF -End of Item 02A6 - -Begin of Item 02A7 - Format 1 - srcBegin = 57C3 - srcEnd = 57CE - mappingOffset = 09A0 - Mapping = - E4EF FFFD FFFD FFFD E9B9 F1D8 FFFD FFFD - D8D8 FFFD FFFD E0F2 -End of Item 02A7 - -Begin of Item 02A8 - Format 1 - srcBegin = 57DF - srcEnd = 57E0 - mappingOffset = 09AC - Mapping = - E6B4 DCFC -End of Item 02A8 - -Begin of Item 02A9 - Format 1 - srcBegin = 57F0 - srcEnd = 580A - mappingOffset = 09AE - Mapping = - F3F1 FFFD FFFD FFFD E3D0 FFFD FFFD F2FB - FFFD DBC6 D0F1 FFFD D0F2 FFFD FFFD FFFD - CFDC FFFD D3D1 FFFD FFFD CCB1 F7D8 FFFD - CBA8 EBBC E4BE -End of Item 02A9 - -Begin of Item 02AA - Format 1 - srcBegin = 581E - srcEnd = 583A - mappingOffset = 09C9 - Mapping = - F4DC FFFD FFFD DCC2 FFFD FFFD F0A7 FFFD - FFFD E6C0 FFFD FFFD CAED FFFD FFFD FFFD - FFFD E8EB E5E8 DCC3 FFFD FFFD EDDE D3F2 - FFFD FFFD FFFD FFFD CCF7 -End of Item 02AA - -Begin of Item 02AB - Format 1 - srcBegin = 584A - srcEnd = 5864 - mappingOffset = 09E6 - Mapping = - CED4 E7AB FFFD FFFD FFFD CBC3 FFFD E1B1 - FFFD FFFD F7B2 FFFD FFFD D3F3 D3D2 FFFD - F5C0 FFFD FFFD FFFD DFDD FFFD FFFD EEF3 - E7F1 FFFD FDB4 -End of Item 02AB - -Begin of Item 02AC - Format 1 - srcBegin = 5875 - srcEnd = 58FD - mappingOffset = 0A01 - Mapping = - F2C8 FFFD FFFD FFFD F3D2 FFFD FFFD EEF4 - FFFD E2D3 FFFD FFFD FFFD FFFD CCD1 FFFD - DFEA FFFD FFFD FFFD E9BA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D9D7 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F5CD - FFFD F1F2 FAC7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D9F8 D4C2 FFFD FFFD FFFD - FFFD F6E5 FFFD FFFD FFFD FFFD DDC5 FFFD - FFFD FFFD FFFD FFFD FFFD E7F2 EDDF FFFD - FFFD CACB FFFD FFFD DBFA FFFD FFFD FFFD - E8B5 FFFD D3A6 FFFD FFFD FFFD FFFD FFFD - FFFD FDB5 FFFD FFFD F9C9 FFFD E4E2 FFFD - FBBD FFFD FFFD D7A4 CEC5 FFFD FFFD FFFD - FFFD CED5 D6E6 FFFD FFFD FFFD FFFD E5BD - FFFD FFFD FFFD FFFD FFFD FFFD DECD ECF3 - FFFD FFFD EDE0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD ECEC FBBE DFEB FFFD - E1F8 -End of Item 02AC - -Begin of Item 02AD - Format 1 - srcBegin = 590F - srcEnd = 5999 - mappingOffset = 0A8A - Mapping = - F9BE FFFD FFFD FFFD FFFD D0F3 E0AA E8E2 - FFFD FFFD E2D4 D2FD FFFD E5A8 FFFD FFFD - FFFD FFFD FFFD D9D3 FFFD FFFD FFFD FFFD - D3DE FFFD F4B8 F7BC DCFD FFFD E8EC E4E7 - FFFD FFFD E3F7 FFFD FFFD FFFD FFFD FFFD - ECA8 FFFD FFFD FFFD FFFD FFFD FFFD FAF1 - FFFD FFFD FFFD FFFD FFFD E5F2 FFFD FFFD - D0F4 D2AF DCE5 FFFD FFFD FFFD FFFD D0A5 - F1B4 FCB1 CCF8 FFFD FFFD DDC6 FAD1 FFFD - F7DF FFFD FFFD FAA8 FFFD FFFD FFFD FFFD - FFFD EEF5 FFFD DECE FFFD FFFD FFFD FFFD - E7F3 FFFD FFFD F7AC EBC4 EDE1 E0AB DDC7 - FFFD FFFD FFFD FFFD D2B3 D2BF FFFD FFFD - FFFD CACC FFFD FFFD FFFD FFFD FBBF FFFD - FFFD FFFD FFFD E5FD DDE5 D8CD FFFD FFFD - FFFD FFFD FFFD ECF4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D0F5 FFFD FFFD E8ED - D0D2 FFFD D9D8 -End of Item 02AD - -Begin of Item 02AE - Format 1 - srcBegin = 59A5 - srcEnd = 59AC - mappingOffset = 0B15 - Mapping = - F6E6 FFFD FFFD DBAA FFFD FFFD FFFD F7E0 -End of Item 02AE - -Begin of Item 02AF - Format 1 - srcBegin = 59B9 - srcEnd = 5A03 - mappingOffset = 0B1D - Mapping = - D8D9 FFFD F4A3 FFFD FFFD F4DD FFFD FFFD - FFFD FFFD EFD1 FFFD FFFD D9B5 FFFD FFFD - EDAB FFFD E3B7 FFFD FFFD FFFD FFFD EEBB - CDB4 FFFD E0F3 EACD FFFD FFFD FFFD FFFD - ECF5 E8EE FFFD CBA9 F1AF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CACD FFFD ECA9 - FFFD F2EB FFFD FDEF FFFD F9F3 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E6C1 - FFFD FFFD ECD8 FFFD FFFD FFFD EDAC FFFD - EACE FFFD E8DF -End of Item 02AF - -Begin of Item 02B0 - Format 1 - srcBegin = 5A11 - srcEnd = 5A29 - mappingOffset = 0B68 - Mapping = - DECF FFFD FFFD FFFD FFFD FFFD FFFD D2A6 - FFFD FFFD E7F4 D1D6 FFFD FFFD E6C2 E3E3 - FFFD FFFD FFFD FFFD E4B0 FFFD FFFD FFFD - D8B4 -End of Item 02B0 - -Begin of Item 02B1 - Format 1 - srcBegin = 5A36 - srcEnd = 5A49 - mappingOffset = 0B81 - Mapping = - F6A5 FFFD FFFD FFFD FFFD FFFD F3DE FFFD - FFFD FFFD FFFD D7A5 FFFD FFFD FFFD FFFD - F7E8 FFFD FFFD E8C6 -End of Item 02B1 - -Begin of Item 02B2 - Format 1 - srcBegin = 5A5A - srcEnd = 5A66 - mappingOffset = 0B95 - Mapping = - FBE6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - DDE6 FFFD FFFD FFFD DCFE -End of Item 02B2 - -Begin of Item 02B3 - Format 1 - srcBegin = 5A92 - srcEnd = 5AA4 - mappingOffset = 0BA2 - Mapping = - D8DA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - DAAC EAB0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E3B8 -End of Item 02B3 - -Begin of Item 02B4 - Format 1 - srcBegin = 5AC1 - srcEnd = 5ACC - mappingOffset = 0BB5 - Mapping = - CAAA E1F9 FFFD EAB1 FFFD FFFD FFFD FFFD - F2EC FFFD FFFD FAEE -End of Item 02B4 - -Begin of Item 02B5 - Format 1 - srcBegin = 5AE1 - srcEnd = 5AE9 - mappingOffset = 0BC1 - Mapping = - EED5 FFFD FFFD FFFD FFFD F9F4 FFFD FFFD - D2EC -End of Item 02B5 - -Begin of Item 02B6 - Format 1 - srcBegin = 5B05 - srcEnd = 5B16 - mappingOffset = 0BCA - Mapping = - FBFB FFFD FFFD FFFD FDF0 FFFD E0BD CEE3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F8C6 -End of Item 02B6 - -Begin of Item 02B7 - Format 2 - srcBegin = 5B2A - destBegin = DEAE -End of Item 02B7 - -Begin of Item 02B8 - Format 1 - srcBegin = 5B40 - srcEnd = 5B43 - mappingOffset = 0BDC - Mapping = - DFC5 FFFD FFFD E5BE -End of Item 02B8 - -Begin of Item 02B9 - Format 1 - srcBegin = 5B50 - srcEnd = 5C79 - mappingOffset = 0BE0 - Mapping = - EDAD FAEA FFFD FFFD CDEE EDA6 FFFD EDAE - F0ED FFFD DDA1 FFFD EDAF FCF8 FFFD D8EB - FFFD FFFD FFFD CCF9 CDB5 FFFD FFFD FFFD - FFFD FAA9 FFFD E1DD FFFD FFFD FFFD FFFD - E2D5 EDCF FFFD FFFD FFFD DDA2 FFFD FFFD - F9CA FFFD EAE8 FFFD E5ED FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D3EB FFFD E9D4 - E1FA E4CC FFFD E1E4 E8C7 FFFD FFFD CEDB - FFFD FFFD FFFD DCD5 FFFD F7B5 FCF3 F0F3 - CEAF F1B5 EFD2 E8C8 EBF1 FFFD FFFD FFFD - FFFD FFFD CBD4 E0BE E3F8 EAE9 FCB2 FFFD - FFFD FFFD FFFD FFFD E0F4 FFFD CFE0 FFFD - EEA5 FFFD FFFD FAAA E6C3 E1B2 CAAB FFFD - E3E4 E9BB FFFD FFFD FFFD FFFD FFFD E2D6 - F3F2 FFFD EED6 EAB2 D0F6 ECD9 DACB CFA8 - FFFD FFFD FFFD FFFD DDA3 FFFD FFFD FFFD - D8DB FFFD F9CE E9D5 E3D1 FFFD FFFD D2BC - FFFD FFFD FFFD FFFD FFFD FFFD D8AC F3CC - FFFD CDFB F6D6 FFFD E7F5 E8EF E3F9 D2BB - F3F3 E3FB FFFD DED0 CEB0 FFFD D6F7 F1D9 - FFFD FFFD FFFD FFFD FFFD F5C1 DCC4 FFFD - F5BB FFFD DED1 FFFD FFFD FFFD FFFD FFFD - FFFD DCE6 FFFD FFFD DED2 FFFD FFFD EDE2 - EEF6 EACF F0EE E3FC FFFD D3DF D3F4 E1B3 - FFFD E1B4 FFFD FFFD FFFD FFFD F4D3 FFFD - FFFD DFC6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E9D6 FFFD FFFD FFFD - DBAB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F6A6 FFFD FFFD FFFD FFFD FFFD FFFD - E3B9 EBC5 F4A9 CDB6 D2F9 FFFD DAAD D2E3 - CFD1 FFFD FFFD FFFD FFFD CBDC CCFA FFFD - CFDD FFFD FFFD E8A9 FFFD E3BB E3BA FFFD - FFFD E0DA FFFD FFFD FFFD EEF7 FFFD FFFD - FFFD FFFD FFFD DCB3 FFFD FFFD FFFD FFFD - D3F5 FFFD D7A6 FFFD F6B5 D7DB FFFD FFFD - FFFD FFFD FFFD FFFD E1D5 FFFD FFFD D4EA - FFFD DFA3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FDDF -End of Item 02B9 - -Begin of Item 02BA - Format 1 - srcBegin = 5C90 - srcEnd = 5C91 - mappingOffset = 0D0A - Mapping = - D0F7 EDD4 -End of Item 02BA - -Begin of Item 02BB - Format 1 - srcBegin = 5CA1 - srcEnd = 5CC0 - mappingOffset = 0D0C - Mapping = - CBAA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E4DB FFFD E1FB CBA2 FFFD FFFD FFFD FFFD - D3E0 FFFD E4BF FFFD FBC0 FFFD DABE E4CD - FFFD D6B9 FFFD FFFD FFFD EFC0 FFFD E1FC -End of Item 02BB - -Begin of Item 02BC - Format 1 - srcBegin = 5CD9 - srcEnd = 5D19 - mappingOffset = 0D2C - Mapping = - F6B9 FFFD FFFD FFFD FFFD FFFD FFFD DFC7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E4B1 - FFFD FFFD FFFD FFFD FFFD FFFD DCE7 DCE8 - FFFD FFFD FFFD FAD6 FFFD D3F6 FFFD FFFD - FFFD FFFD F1DA FFFD FAF2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E2FD FFFD - FFFD FFFD FFFD FFFD D5CF D0F8 FFFD FFFD - CDDF FFFD FFFD F5CB FFFD E4F0 CBAB FFFD - D7C4 -End of Item 02BC - -Begin of Item 02BD - Format 1 - srcBegin = 5D27 - srcEnd = 5D29 - mappingOffset = 0D6D - Mapping = - E2FE FFFD DDDA -End of Item 02BD - -Begin of Item 02BE - Format 1 - srcBegin = 5D4B - srcEnd = 5D50 - mappingOffset = 0D70 - Mapping = - DAAE CAEE FFFD FFFD FFFD D5B9 -End of Item 02BE - -Begin of Item 02BF - Format 1 - srcBegin = 5D69 - srcEnd = 5D6F - mappingOffset = 0D76 - Mapping = - E3A1 FFFD FFFD E8E3 FFFD FFFD F3AB -End of Item 02BF - -Begin of Item 02C0 - Format 1 - srcBegin = 5D87 - srcEnd = 5D8B - mappingOffset = 0D7D - Mapping = - CFA9 FFFD FFFD FFFD D3F7 -End of Item 02C0 - -Begin of Item 02C1 - Format 1 - srcBegin = 5D9D - srcEnd = 5DAA - mappingOffset = 0D82 - Mapping = - D4F1 FFFD FFFD CEE4 FFFD E8F2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E5F5 -End of Item 02C1 - -Begin of Item 02C2 - Format 1 - srcBegin = 5DB8 - srcEnd = 5DBD - mappingOffset = 0D90 - Mapping = - E7AE FFFD D6BA FFFD DFEC E4C0 -End of Item 02C2 - -Begin of Item 02C3 - Format 1 - srcBegin = 5DCD - srcEnd = 5E63 - mappingOffset = 0D96 - Mapping = - E8E4 FFFD FFFD FFFD FFFD D8B5 FFFD FFFD - FFFD E4DC FFFD FFFD FFFD FFFD FFFD FFFD - F4B9 F1B6 FFFD FFFD E2DE E1B5 FFFD FFFD - CDEF F1A7 CEE5 CBDD FFFD FFFD D9E3 FFFD - FFFD F3AC FFFD FFFD D0F9 ECAB DED3 F7E9 - FFFD FFFD F9F5 FFFD FFFD FFFD FFFD FFFD - E1DE CBEE FFFD FFFD FFFD E3BC F8D6 FFFD - FFFD DBEE FFFD FFFD FFFD FFFD FFFD FDF1 - FFFD FFFD FFFD FFFD F7B6 FFFD FFFD FFFD - FFFD F4DE FFFD FFFD F2ED FFFD DBD9 FFFD - F0A8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E1FD FFFD FFFD FFFD FFFD FFFD DED4 FFFD - E0AC FFFD FFFD FFFD FFFD FFFD EDE3 FFFD - FFFD D3E1 FFFD DFC8 FFFD FFFD FFFD FFFD - D9B6 FFFD FDAC EFD3 FFFD FFFD FFFD E4C1 - F8EB FFFD DBAC FFFD FFFD FFFD FFFD FCC6 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D8AD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F6BA FFFD DBDF D3D3 F8C7 -End of Item 02C3 - -Begin of Item 02C4 - Format 1 - srcBegin = 5E72 - srcEnd = 5F3C - mappingOffset = 0E2D - Mapping = - CACE F8C1 D2B4 FFFD FFFD DCB4 FAB9 CACF - FFFD FCB3 EAEA EAEB D0FA FFFD FFFD FFFD - FFFD FFFD EDE4 FFFD FFFD DDE7 FFFD FFFD - DFC9 FFFD FFFD FFFD FFFD DFED FFFD FFFD - FFFD FFFD FFFD EEBC FFFD EFC1 FFFD FFFD - CCD2 FFFD DDA4 FFFD FFFD FFFD DFCA FFFD - FFFD FFFD FFFD FFFD D3F8 F1A8 FFFD FFFD - FFFD CDB7 FFFD EFD4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E4DD DFEE CBAC E9BC FFFD - FFFD FFFD FFFD FFFD EAEC FFFD FFFD FFFD - DFCB FFFD FFFD FFFD FFFD FFFD F9BF D6AF - D5C6 FFFD FFFD FFFD FFFD FFFD CFAA FFFD - FFFD CEA9 FFFD FFFD D6F8 FFFD FFFD FFFD - F1B7 EEF8 FFFD FFFD FFFD D9D9 F3DF FFFD - F8C8 CEC6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D5E6 FFFD FFFD FFFD FFFD FFFD - FFFD F4E6 FFFD FFFD E6C5 EFD5 FFFD FFFD - CBEF FCDF FFFD FFFD FFFD FFFD FFFD DCA7 - FFFD FFFD D6E7 FFFD FFFD FFFD FFFD FFFD - F8C9 FFFD FFFD FFFD FFFD E3D2 FFFD E3BD - FFFD CFE1 F0C0 ECDA FFFD DDD7 FBF0 FFFD - FFFD ECAC FFFD FFFD FFFD F0A9 FFFD FFFD - FFFD FFFD FFFD FFFD FAD7 FBC1 FFFD D2C0 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E5B0 - FFFD FFFD FFFD EDE5 FFFD FFFD FFFD FFFD - CBAD FFFD F9B0 -End of Item 02C4 - -Begin of Item 02C5 - Format 1 - srcBegin = 5F48 - srcEnd = 5FFF - mappingOffset = 0EF8 - Mapping = - F7A5 FFFD CBAE FFFD DAAF FFFD D8B6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D3A7 FBB2 - FFFD FDC4 FFFD ECAD FFFD FFFD FFFD FFFD - FFFD FFFD FBA1 FFFD FFFD FFFD E5E9 E9EE - FFFD F3F4 F8F3 F0C1 DEAF F8B0 FFFD FFFD - F3E0 E7AF FFFD FFFD FFFD FFFD FFFD DBAD - FFFD E6B5 FFFD FFFD F9A8 FFFD FFFD DDD8 - E8D9 EFD6 FFFD FFFD FFFD D3E2 FFFD E2DF - FFFD FFFD FCE0 D7C8 FDAD FFFD FFFD FFFD - DFEF CCD3 D3F9 FFFD FFFD FFFD FFFD D4F0 - DBC7 DED5 FFFD FFFD FFFD FFFD F0F4 FFFD - D5D0 E5D9 FFFD FFFD FFFD FFFD FFFD FFFD - FCC7 DCD6 E2E0 FFFD FFFD FFFD DAB0 FFFD - FFFD FFFD FFFD FFFD FFFD F3A3 FFFD D3EC - FFFD F4CB FFFD FFFD FFFD FDC5 FFFD FFFD - FFFD FFFD FFFD E3FD FFFD F9B1 FFFD FFFD - FFFD FFFD FFFD FFFD D0FB ECDB FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F5BC F2A4 - D8CE D8CF FFFD FFFD FFFD FFFD FFFD FFFD - F5F7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F6E1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D2B7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FBEC FFFD DDC8 -End of Item 02C5 - -Begin of Item 02C6 - Format 1 - srcBegin = 600F - srcEnd = 602F - mappingOffset = 0FB0 - Mapping = - E4E8 FFFD FFFD D2C1 FFFD FFFD FFFD F8D7 - FFFD FFFD FFFD FFFD FFFD D6BB DED6 FFFD - FFFD F7BD ECAE FFFD FFFD FFFD D0E1 FFFD - E0F5 EAB3 FFFD CED6 FFFD FFFD FFFD FFFD - CCA5 -End of Item 02C6 - -Begin of Item 02C7 - Format 1 - srcBegin = 6041 - srcEnd = 6070 - mappingOffset = 0FD1 - Mapping = - ECF6 E2E1 E3BE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FCC8 FFFD FFFD CDF0 - FFFD F9F6 FFFD FFFD DFF0 FFFD FFFD FFFD - E5BF FFFD FFFD FFFD CEBF FFFD FFFD FFFD - FFFD FCE1 EDB0 FDD1 F6BB FFFD FFFD F9CF - EBDA CAC1 FFFD D2B8 CDF1 FFFD E3D3 FDE6 -End of Item 02C7 - -Begin of Item 02C8 - Format 1 - srcBegin = 6085 - srcEnd = 60E1 - mappingOffset = 1001 - Mapping = - E6ED FFFD FFFD FFFD E3FA FFFD FFFD F0AA - F9D0 FFFD FFFD FFFD FFFD FFFD FFFD FCE2 - FFFD F8A7 FFFD FFFD FFFD E1E5 EEF9 FFFD - FFFD FFFD E7F6 EAED FFFD FFFD FCB4 F5C2 - FFFD FFFD D7DC FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F0F5 FFFD DDE8 D3ED F5FC - FFFD DABF FFFD CCFB FFFD FFFD FFFD D3FA - F4A4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EFD7 FFFD D4C3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FBE3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FBED FFFD E0AD - FFFD FFFD EAEE FBB3 E4C2 -End of Item 02C8 - -Begin of Item 02C9 - Format 1 - srcBegin = 60F0 - srcEnd = 61CB - mappingOffset = 105E - Mapping = - F6E7 D2DD FFFD DFCC FFFD FFFD FCC9 FFFD - FFFD E5A9 E0F6 F6B3 FFFD FFFD FFFD FFFD - FFFD E1FE FFFD FFFD FFFD FFFD CBF0 FFFD - EAEF EAF0 FFFD FFFD FFFD DAC0 F8B4 EBF2 - FFFD FFFD FFFD FFFD FFFD E4C3 FFFD FFFD - FFFD FFFD E9D7 E4F1 FFFD FFFD FFFD CAEF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD CED7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FCCA FFFD FFFD FFFD F3E1 FFFD FFFD CBC4 - FFFD FFFD FFFD FFFD E3E5 FFFD CBC5 EAB4 - FFFD FFFD E9BD FFFD D7C9 FFFD FFFD EBDB - EDB1 FFFD CCC3 F7BE FCCB FFFD FFFD FFFD - FFFD FFFD FFFD F8F4 FFFD D9B7 FFFD FFFD - F3D3 F3D4 FFFD FFFD FFFD F7E4 FFFD F7D1 - FFFD FFFD D8B7 CEB1 CAC2 FFFD FFFD FBB4 - CBC6 FFFD FFFD F0F6 FFFD FFFD D5E7 FFFD - EAD0 FFFD FFFD FFFD FFFD FFFD CCD4 CBAF - FFFD FFFD FFFD FFFD FFFD F4AA E9AF FFFD - FFFD F5C3 E9D8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DDE9 FFFD FFFD FFFD F1F3 FFFD - D5FB DEBB FFFD FFFD F4FB FFFD FFFD FFFD - FDF3 FDF2 F7A6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DDC9 FFFD FFFD D4D3 - FFFD CCA8 FFFD DAC1 CCD5 FFFD D9E4 FFFD - FFFD FFFD FACA FFFD FFFD FFFD E5E3 FFFD - FFFD FFFD D3BC FFFD FFFD FFFD CAF0 FFFD - FFFD FFFD FFFD D0C4 FFFD FFFD FFFD CAD0 - FAAB EBEB E7F8 D9E5 -End of Item 02C9 - -Begin of Item 02CA - Format 2 - srcBegin = 61E6 - destBegin = D1D7 -End of Item 02CA - -Begin of Item 02CB - Format 1 - srcBegin = 61F2 - srcEnd = 6258 - mappingOffset = 113A - Mapping = - F3A4 FFFD FFFD FFFD D4FB FCE3 FAD8 FFFD - F3D5 FFFD CFAB FFFD FFFD EBF3 D5FC FFFD - FFFD FFFD FFFD FFFD FFFD D3D4 CDFC FFFD - D9E6 FFFD E2F9 E2A1 EBD4 FFFD E0F7 E4B2 - CCFC FFFD FFFD FFFD FBE4 FFFD FFFD FFFD - F4AB FFFD FFFD FFFD FFFD D0BD FFFD CAF1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EFB8 FFFD FFFD FFFD D7C0 FFFD EEFA FDF4 - FFFD FFFD D3E3 FFFD FBC2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D5E8 DBAE E1B6 F8B7 - FFFD FFFD FFFD FFFD FFFD E0BF FBC3 DDEA - FFFD E2A2 FFFD EEA6 FFFD FFFD FFFD FFFD - FFFD F6E8 FFFD FFFD FFFD FFFD F6F5 -End of Item 02CB - -Begin of Item 02CC - Format 1 - srcBegin = 626E - srcEnd = 629B - mappingOffset = 11A1 - Mapping = - DDCA FFFD FFFD D0E2 FFFD FFFD FFFD FFFD - DDA6 FFFD FFFD DDEB FFFD FFFD E4F9 FFFD - FFFD E3AF D0FC FFFD FFFD FFFD F4FC FFFD - FFFD FFFD FFFD CCBC F7EA FFFD FFFD FFFD - FFFD FFFD FFFD E5E4 DFF1 FFFD FFFD F7E1 - FFFD F9F7 EFB9 FFFD FFFD F8D8 -End of Item 02CC - -Begin of Item 02CD - Format 1 - srcBegin = 62AB - srcEnd = 62DC - mappingOffset = 11CF - Mapping = - F9A9 FFFD FFFD FFFD FFFD FFFD F8D9 FFFD - FFFD FFFD EEBD FFFD FFFD FFFD D8C6 FFFD - FFFD E4E3 F5CE FFFD FFFD FFFD FFFD DDD9 - FFFD FFFD FFFD FFFD D9E7 D2B9 D5C3 FFFD - FFFD DAE5 DAD0 FFFD D1D9 CED8 FFFD CBDE - F4AC DAFB FFFD F6E9 E8F3 CFAC F0F0 FFFD - F4FD DBC8 -End of Item 02CD - -Begin of Item 02CE - Format 1 - srcBegin = 62EC - srcEnd = 6311 - mappingOffset = 1201 - Mapping = - CEC0 E3D4 D1CF F1F5 FFFD CDF2 FFFD CFEB - FFFD FFFD FFFD CDB8 FFFD FFFD FFFD FFFD - FFFD FFFD E3A6 D1DA FFFD F2A5 FFFD FFFD - FFFD FFFD FFFD F2A6 FFFD E4CE FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D3FB -End of Item 02CE - -Begin of Item 02CF - Format 1 - srcBegin = 632B - srcEnd = 6355 - mappingOffset = 1227 - Mapping = - F1A9 FFFD FFFD FFFD F2C9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EFD8 - E6C9 FFFD D8B8 FAF3 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F3B5 FFFD - FFFD F8A4 FFFD FFFD D1F3 E6C8 FFFD FFFD - FFFD FFFD F8DA -End of Item 02CF - -Begin of Item 02D0 - Format 1 - srcBegin = 6367 - srcEnd = 63AA - mappingOffset = 1252 - Mapping = - DCE9 DED7 FFFD FFFD FFFD FFFD FFFD CBDF - FFFD FFFD FFFD CFEC FFFD FFFD FFFD FFFD - F4DF FFFD FFFD D1F4 D2BA FFFD FFFD FFFD - DFF2 FFFD FFFD FFFD E1B7 FFFD FFFD FFFD - FFFD E2A3 D3FC FFFD FFFD EDE6 FFFD FFFD - FFFD FFFD FFFD DBC9 FFFD FFFD FFFD E4FA - FFFD CFDE FFFD FFFD CED0 FFFD FFFD FFFD - FFFD D5D3 F3F5 F7AE FFFD FFFD EFC8 FFFD - CDF3 F5CF E5F3 F0C2 -End of Item 02D0 - -Begin of Item 02D1 - Format 1 - srcBegin = 63C0 - srcEnd = 63E1 - mappingOffset = 1296 - Mapping = - CAD1 FFFD FFFD FFFD EAF1 FFFD D0A6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D9DA - F0AB FFFD FFFD FFFD FFFD FFFD EBE7 FFFD - FFFD FFFD E5C0 FCB5 FFFD FFFD FFFD FFFD - FFFD E4C4 -End of Item 02D1 - -Begin of Item 02D2 - Format 1 - srcBegin = 63ED - srcEnd = 63F7 - mappingOffset = 12B8 - Mapping = - CCA9 FDC6 FFFD FFFD FFFD FFFD FFFD EAB5 - FFFD E5AA DFBA -End of Item 02D2 - -Begin of Item 02D3 - Format 1 - srcBegin = 640D - srcEnd = 642D - mappingOffset = 12C3 - Mapping = - E1DF FFFD DAD1 FFFD FFFD FFFD FFFD E1B8 - FFFD E8F4 D3FD FFFD FFFD FFFD FFFD E2A4 - FFFD FFFD FFFD FFFD FFFD F2CA FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD DAE6 - F7B3 -End of Item 02D3 - -Begin of Item 02D4 - Format 1 - srcBegin = 643A - srcEnd = 643E - mappingOffset = 12E4 - Mapping = - FDCD FFFD FFFD FFFD F3B6 -End of Item 02D4 - -Begin of Item 02D5 - Format 1 - srcBegin = 6458 - srcEnd = 647A - mappingOffset = 12E9 - Mapping = - EED7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F5C4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D8A4 FFFD FFFD FFFD FFFD FFFD F2A7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D9B8 D9B9 EFC9 -End of Item 02D5 - -Begin of Item 02D6 - Format 1 - srcBegin = 6488 - srcEnd = 6504 - mappingOffset = 130C - Mapping = - D6CE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F7CB DFAE E8F5 FFFD FFFD FFFD FFFD - FFFD FFFD D2B5 FFFD FFFD FFFD D3D5 FFFD - FFFD FFFD FFFD FFFD F4CC DAFC FFFD FFFD - FFFD FFFD FFFD D9E8 FFFD F7EB F5C9 FFFD - F3BC FFFD DAD2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D3B5 FFFD FFFD FFFD FFFD - FFFD E8B6 FFFD FFFD D6CF F4BA FFFD F7C9 - FFFD FFFD CCAA FFFD FFFD F0C3 CCD6 FFFD - FFFD FFFD D0D3 FFFD D3BD FFFD FFFD FFFD - DBFB FFFD CBE0 FFFD FFFD FFFD FFFD FFFD - FFFD D3E4 F6F7 FFFD FFFD D5BA F3CD CBE1 - FFFD FFFD FFFD FFFD EBF4 FFFD FFFD FFFD - FFFD FFFD F4AD FFFD FCAA FFFD FFFD FFFD - FFFD FFFD F7EC FFFD FFFD FFFD E8F6 FFFD - DAE7 FFFD FFFD FFFD F7CC -End of Item 02D6 - -Begin of Item 02D7 - Format 1 - srcBegin = 6518 - srcEnd = 66C9 - mappingOffset = 1389 - Mapping = - E5C1 FFFD FFFD FFFD FFFD E0EE FFFD FFFD - FFFD FFFD FFFD D5FD FFFD FFFD FFFD FFFD - FFFD FFFD CEE6 FCAB D5BB FFFD FFFD F2A8 - FFFD FFFD FFFD FFFD FFFD FFFD E2A5 CDB9 - EAF2 CBC7 FFFD CDF4 FFFD FFFD DBAF EFD9 - FFFD FFFD FFFD FFFD FFFD CDBA FFFD FFFD - FCF9 FFFD FFFD FFFD FFFD DFF3 CEE7 DAC2 - FFFD CFAD FFFD FFFD FFFD FFFD E7F9 F8A8 - FFFD FFFD FFFD FFFD FFFD FFFD F3E2 FFFD - FFFD FFFD CAF2 DFA4 FFFD FFFD D4C4 FFFD - FFFD FFFD FFFD FFFD CCD7 E5C2 FFFD FFFD - FFFD FFFD CDBB FFFD EFDA EED8 FFFD DDA7 - E2A6 FFFD FFFD FFFD FFFD FFFD E0C0 FFFD - FFFD FFFD D6B0 F8CA FFFD FCFA FFFD D9FE - FFFD FFFD FFFD FFFD DEB0 FFFD FFFD FFFD - DDEC DAE8 FFFD FFFD FFFD FFFD FFFD D4E0 - FFFD D6F9 FFFD CDD7 DED8 FFFD FFFD F2F8 - FFFD E4D6 FFFD FFFD D0C5 F4AE FFFD DDA8 - FFFD FFFD FFFD EDC5 F3D6 FFFD FFFD DED9 - E3E6 FFFD FFFD FFFD FFFD FFFD FFFD D3A8 - FFFD DBB0 FFFD FFFD E5DA E3BF FFFD FFFD - FFFD DBB1 FFFD FFFD FFFD D5E9 FFFD FFFD - FFFD FFFD FFFD E0C1 EFDB FFFD FFFD F0E9 - FFFD FFFD D7B2 FFFD FFFD FFFD FFFD D0FD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D9E9 FFFD FFFD D0FE FFFD ECED D3A9 FFFD - F2A9 F0C4 FFFD FFFD E2E2 E9EF FFFD FFFD - FFFD F9D1 FFFD FFFD E9D9 FFFD FFFD FFFD - FFFD FFFD E8DA DAC3 DAC4 D4C5 FFFD E7FA - FFFD FFFD FFFD FFFD FFFD FFFD CDE0 E3B0 - FFFD DBB2 FBC4 FFFD F3E3 FFFD D9A5 FBE7 - DDCB D0D4 FFFD E6B6 E0AE FDDA FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DCB5 E0F8 - E7B1 FFFD FFFD FFFD FFFD F5F0 FFFD D8DC - EDC6 FFFD FFFD FFFD FFFD E1B9 FFFD E3C0 - F9C0 E9F0 FFFD FFFD D9DB FFFD F3E4 FFFD - FFFD FFFD DCB6 E4E9 FFFD FFFD FFFD FFFD - FFFD F0C5 E3C1 FCCC FCCD FFFD FFFD FFFD - FFFD F2CB FFFD F2CC FFFD FFFD FFFD E4CF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F1DB FFFD FAD9 FFFD F1B8 FDF5 E0F9 - FFFD FFFD FFFD FFFD E7FB FCB7 FCE4 FBC5 - E3E7 D8B9 FFFD F6F8 FFFD FFFD DCC5 CCD8 - FFFD FFFD FFFD E0AF F4E7 FFFD EFDC CFFC - EFDD FFFD F2AA FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FDBE FFFD FFFD CAAC - FDBB FDC7 FFFD FFFD FFFD FFFD E7B2 FFFD - EAD1 DFF4 FFFD FFFD FFFD FFFD D1EC E4DE - E5C3 FFFD FFFD FFFD FFFD D9A6 FFFD FFFD - CDBC FFFD F3E5 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EDD5 FFFD FFFD D9BA FFFD - FFFD FFFD EDE7 FBB5 F8EC FFFD FFFD FFFD - FFFD E0E7 FFFD CCD9 FFFD FFFD D4C6 FFFD - FFFD FFFD FFFD FFFD E7A5 FFFD D5F5 D3BE - FFFD FCFB -End of Item 02D7 - -Begin of Item 02D8 - Format 1 - srcBegin = 66D6 - srcEnd = 675F - mappingOffset = 153B - Mapping = - E4F2 FFFD FFFD DFF5 FFFD FFFD E8F8 F8ED - FFFD FFFD CEC7 FFFD FFFD FFFD FFFD FFFD - FDF6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E8D8 FFFD CDD8 E7D6 CCDA FFFD - FFFD CAE3 DFF6 F0C7 F0C6 FFFD D8BA FFFD - F1F4 F4F0 F5CC FFFD FFFD FCE5 FFFD FFFD - FFFD FFFD EAC5 EAF3 FFFD DDDB FFFD DCD7 - FFFD FFFD FFFD FFFD FFFD FFFD DEFD F2F9 - FFFD D5C7 FFFD FFFD FFFD D8D0 FFFD F0C8 - D1A1 D1A2 FFFD FFFD FFFD FFFD FFFD FFFD - D9D4 D6E8 D9CA FFFD DAB1 D8C7 DCE2 F3CE - F5F4 FFFD FFFD F1B9 FFFD FFFD DAD3 FFFD - F6EA FFFD FFFD FFFD CFF5 FFFD FFFD FDAE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CAD2 FFFD FFFD DFB4 FFFD FFFD FFFD FFFD - D7DD FABA EEA7 F5BD FFFD F8F5 FFFD FFFD - EDE8 FFFD FFFD FFFD FFFD FFFD D4E1 FFFD - D1A3 E1D6 -End of Item 02D8 - -Begin of Item 02D9 - Format 1 - srcBegin = 676D - srcEnd = 679D - mappingOffset = 15C5 - Mapping = - F9F8 FFFD DBCA CBF9 D4D4 FFFD D9DC FFFD - EEBE FFFD F7ED FFFD FFFD FFFD D2EE FFFD - FFFD E1E6 F7F9 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DDED FFFD E8DB FFFD DBB3 FFFD - FFFD FFFD D1F7 E0B0 FFFD FFFD D4E2 FFFD - F6D7 FFFD D7F9 FFFD FFFD D8DD FFFD CDFD - F2AB -End of Item 02D9 - -Begin of Item 02DA - Format 1 - srcBegin = 67AF - srcEnd = 67DD - mappingOffset = 15F6 - Mapping = - CDBD F8C2 FFFD FFFD F2AC FFFD FFFD CAAD - CAAE CFAE FFFD FFFD FFFD FFFD FFFD E3C2 - FFFD FFFD FFFD FFFD FFFD DCB7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - DBDA D9BB CAF3 F6D3 E6F8 EAF5 FFFD FFFD - FFFD FFFD FFFD EAF6 FFFD FFFD F6F9 -End of Item 02DA - -Begin of Item 02DB - Format 1 - srcBegin = 67E9 - srcEnd = 67FE - mappingOffset = 1625 - Mapping = - CFAF FFFD FFFD CAD3 FFFD FFFD CAAF D2B0 - F1BA FFFD D7B3 E3C3 F3FD DEDA FFFD FFFD - FFFD FFFD DEDB FFFD FFFD EFDE -End of Item 02DB - -Begin of Item 02DC - Format 1 - srcBegin = 6812 - srcEnd = 6854 - mappingOffset = 163B - Mapping = - E2E3 EEFB FFFD FFFD DFF7 D7CA FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD CEE8 - DBDB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F1BB FFFD FFFD FFFD FFFD E9F1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FAB7 D0C6 - FFFD FFFD CCAB EEA8 FFFD FFFD CBFA F9F9 - CCFD D3FE FFFD FFFD FFFD FFFD E4D0 FFFD - FFFD FFFD FFFD FFFD F2EE FFFD D4D5 DFCD - FFFD FCB8 D1D0 -End of Item 02DC - -Begin of Item 02DD - Format 1 - srcBegin = 686D - srcEnd = 68B6 - mappingOffset = 167E - Mapping = - F2CD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F7D2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CAD4 FFFD D5D9 FFFD FFFD FFFD - D8DE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CDD9 FFFD FFFD FFFD EEA9 F6BC - FFFD FFFD CCDB FFFD FFFD FFFD FFFD FFFD - F0C9 FFFD FCFC FFFD E8C9 F4FE FFFD FFFD - FFFD FFFD E7FC D7DE FFFD FFFD FFFD FFFD - DEDC FFFD F0AC CCFE CDE1 FFFD E1BA FFFD - DBEF DAB2 -End of Item 02DD - -Begin of Item 02DE - Format 1 - srcBegin = 68C4 - srcEnd = 6912 - mappingOffset = 16C8 - Mapping = - D1A5 DCB8 FFFD FFFD FFFD D8F6 FFFD D1A4 - FFFD CDE2 FFFD FFFD FFFD FFFD DCEA FFFD - FFFD F0F7 FFFD F0CA D0BE FFFD DDDC FFFD - FFFD FFFD FFFD D4D6 D3D6 FFFD FFFD FFFD - FFFD FFFD FFFD EDD0 CDA1 FFFD FFFD FFFD - FFFD FFFD DFB5 FFFD FFFD FFFD DFF8 FFFD - FFFD FFFD FFFD FFFD FFFD D4A1 CEB2 FFFD - FFFD FFFD FFFD FFFD E8CA FFFD FFFD FFFD - FFFD EBF5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E3D5 F5D0 FFFD FFFD FFFD F5A1 -End of Item 02DE - -Begin of Item 02DF - Format 1 - srcBegin = 6927 - srcEnd = 6930 - mappingOffset = 1717 - Mapping = - D9A7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E5AB -End of Item 02DF - -Begin of Item 02E0 - Format 1 - srcBegin = 693D - srcEnd = 6979 - mappingOffset = 1721 - Mapping = - E6CB FFFD F5F1 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E5C5 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F9A3 E0DB - F6EB FFFD CBF1 FFFD D9EA F5A2 FFFD FFFD - FFFD D7D1 FFFD D1F8 EAF8 EAF9 DAB3 FFFD - FFFD FFFD FFFD EFDF FFFD FFFD F1EF FFFD - E5F6 EEBF E2E4 FFFD FFFD FFFD FFFD FFFD - D0BF FFFD FAAC F5D1 E7B3 -End of Item 02E0 - -Begin of Item 02E1 - Format 1 - srcBegin = 6995 - srcEnd = 69D0 - mappingOffset = 175E - Mapping = - E9BE FFFD FFFD FFFD FFFD FFFD F2CE DBB4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FCCE FFFD DDEE FFFD FFFD FFFD FFFD FFFD - FFFD E7B4 FFFD FFFD FFFD FFFD FFFD D7B4 - FFFD FFFD FFFD FFFD FFFD FFFD F7B4 FFFD - FFFD FFFD FFFD FFFD CDBE FFFD DAE9 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD CFB0 F7D9 - F3E6 FFFD FFFD CED9 -End of Item 02E1 - -Begin of Item 02E2 - Format 1 - srcBegin = 69E8 - srcEnd = 69EA - mappingOffset = 179A - Mapping = - CEAA FFFD CBC8 -End of Item 02E2 - -Begin of Item 02E3 - Format 1 - srcBegin = 69FB - srcEnd = 6A23 - mappingOffset = 179D - Mapping = - D0A7 FFFD F0CB FFFD D0C7 FFFD FFFD E4C5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD DBE0 - FFFD FFFD FFFD FFFD FFFD FFFD D5DA FFFD - D7A7 FFFD FFFD FFFD EEC0 FFFD F8F6 FFFD - FFFD FFFD FFFD F5D2 EDE9 FFFD D9BC FFFD - E5C6 -End of Item 02E3 - -Begin of Item 02E4 - Format 1 - srcBegin = 6A35 - srcEnd = 6A6B - mappingOffset = 17C6 - Mapping = - F5A3 FFFD FFFD DAD4 E2A7 FBFC FFFD FFFD - F1DC FFFD FFFD FFFD FFFD FFFD FFFD CAF4 - FFFD FFFD FFFD E8FA FFFD FFFD CEE9 FFFD - FFFD FFFD FFFD FFFD FFFD E9F8 E2E5 FFFD - FFFD FFFD FFFD D0B9 D4F2 FFFD FFFD FFFD - FFFD FFFD D1A6 FFFD DFCE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FCF4 -End of Item 02E4 - -Begin of Item 02E5 - Format 1 - srcBegin = 6A80 - srcEnd = 6AA3 - mappingOffset = 17FD - Mapping = - D3AA FFFD FFFD FFFD CCAC FFFD FFFD FFFD - FFFD EFE0 FFFD FFFD FFFD E5E5 D0D5 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD DBFC - FFFD FFFD FFFD FFFD FCE6 FFFD FFFD FFFD - FFFD FFFD CBFE EDEA -End of Item 02E5 - -Begin of Item 02E6 - Format 1 - srcBegin = 6AB3 - srcEnd = 6AC3 - mappingOffset = 1821 - Mapping = - DEB1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F9E3 FFFD FFFD FFFD FFFD FFFD FFFD D4A2 - CFF6 -End of Item 02E6 - -Begin of Item 02E7 - Format 1 - srcBegin = 6AD3 - srcEnd = 6ADB - mappingOffset = 1832 - Mapping = - D6D0 FFFD FFFD FFFD FFFD FFFD FFFD D5EA - F1EE -End of Item 02E7 - -Begin of Item 02E8 - Format 1 - srcBegin = 6AF6 - srcEnd = 6B23 - mappingOffset = 183B - Mapping = - FACB FFFD FFFD FFFD FFFD E5A1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D5B1 FFFD - FFFD FFFD FFFD FFFD CFED FFFD EDEB FFFD - FFFD FFFD FFFD FFFD D5B2 FFFD FFFD FFFD - D5BC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FDE2 F3AD FFFD FDDB -End of Item 02E8 - -Begin of Item 02E9 - Format 1 - srcBegin = 6B32 - srcEnd = 6B50 - mappingOffset = 1869 - Mapping = - E9B0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D1A7 FFFD FFFD FDE3 CEB3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FDE4 FACE FFFD FFFD - FFFD FFFD CAB0 FFFD F7A7 FFFD CFB1 -End of Item 02E9 - -Begin of Item 02EA - Format 1 - srcBegin = 6B5F - srcEnd = 6B8A - mappingOffset = 1888 - Mapping = - E6A2 FFFD FCB6 F2AD EFE1 F3AE DCC6 D9EB - FFFD FFFD FFFD E8E0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E1A8 FFFD FFFD FFFD FFFD - D5F6 CFFD FFFD FFFD DEDD FFFD FFFD FFFD - D9D1 FFFD FFFD FFFD E4EA F2CF FFFD F7BF - FFFD FFFD E2E6 E2A8 -End of Item 02EA - -Begin of Item 02EB - Format 1 - srcBegin = 6B96 - srcEnd = 6B9E - mappingOffset = 18B4 - Mapping = - E3D6 FFFD EDD1 FFFD FFFD FFFD FFFD FFFD - E9F9 -End of Item 02EB - -Begin of Item 02EC - Format 1 - srcBegin = 6BAE - srcEnd = 6BDB - mappingOffset = 18BD - Mapping = - D6B1 DEB2 FFFD FFFD E0E8 FFFD FFFD D3AB - FFFD EBDC FFFD FFFD DFAF FFFD CAC3 FFFD - FFFD EEFC FFFD FDC3 FFFD FFFD FFFD EBF6 - CFB2 FFFD FFFD FFFD FFFD D9EC FFFD D9BD - FFFD D8DF FFFD FFFD D4B8 EBBE DDEF FFFD - DDF0 DDF1 DDF2 FFFD FFFD D9BE -End of Item 02EC - -Begin of Item 02ED - Format 1 - srcBegin = 6BEB - srcEnd = 6BEC - mappingOffset = 18EB - Mapping = - FBC6 CFB3 -End of Item 02ED - -Begin of Item 02EE - Format 1 - srcBegin = 6C08 - srcEnd = 6C13 - mappingOffset = 18ED - Mapping = - EEFD FFFD FFFD FFFD FFFD FFFD FFFD E4AB - FFFD DAC5 FFFD D8EC -End of Item 02EE - -Begin of Item 02EF - Format 2 - srcBegin = 6C23 - destBegin = D1A8 -End of Item 02EF - -Begin of Item 02F0 - Format 1 - srcBegin = 6C34 - srcEnd = 6C42 - mappingOffset = 18F9 - Mapping = - E2A9 FFFD FFFD DEBC E7B5 FFFD FFFD FFFD - FFFD FFFD DBF0 FFFD EFE2 F1F0 CFB4 -End of Item 02F0 - -Begin of Item 02F1 - Format 1 - srcBegin = 6C4E - srcEnd = 6C9B - mappingOffset = 1908 - Mapping = - DBF1 FFFD E0B1 FFFD FFFD FFFD FFFD DFA5 - FFFD F9D2 FFFD FFFD E7FD FFFD FFFD E6A3 - FBF1 CBB0 F2AE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CDE7 FFFD E8DC FFFD FFFD E7D7 - FFFD FFFD F7C0 FFFD D0E3 FFFD FFFD FFFD - DAA1 FFFD FFFD FFFD CCBD FFFD FFFD D1A9 - DDCC FFFD FFFD E3FE D1AA E8AA FFFD EAB6 - F9FA E6CC F6D8 FFFD FFFD FFFD D4C7 FFFD - FFFD FFFD D9CB FFFD D9D2 D3CB D8F7 DAA9 - F5F8 FFFD FFFD DEDE F2AF F8A9 -End of Item 02F1 - -Begin of Item 02F2 - Format 1 - srcBegin = 6CAB - srcEnd = 6CF3 - mappingOffset = 1956 - Mapping = - D8C8 FFFD FFFD EEC1 FFFD FFFD FFFD FFFD - F9C1 FFFD FFFD FFFD FFFD DDF3 EAFA FFFD - F6BD E1BB CDBF F4D4 E6CD FFFD FCCF FBA2 - FFFD E0DC FFFD FFFD FFFD FFFD F4BB DAD5 - FFFD F9B2 FFFD FFFD FFFD FFFD FFFD FFFD - FBF2 FFFD DBF6 FFFD DEDF FFFD FFFD FFFD - DBF2 FFFD FFFD FFFD FFFD FFFD F8DC F7EE - EBE8 FFFD D2FA FFFD FFFD F1BC FFFD FFFD - FADA FFFD FFFD DAEA DAC6 F7C1 FFFD FFFD - E7B6 -End of Item 02F2 - -Begin of Item 02F3 - Format 1 - srcBegin = 6D0B - srcEnd = 6D41 - mappingOffset = 199F - Mapping = - E5C7 D6AC FFFD FFFD FFFD FFFD DCC7 FFFD - FFFD FFFD FFFD FFFD E1A9 FFFD E2AA FFFD - D5A6 FFFD FFFD D4D7 FFFD FFFD FFFD FFFD - FFFD FFFD F2D0 FFFD EAFB FFFD E0DD FBF3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F1BD - FFFD FFFD E2E7 FDD7 FFFD CEC8 EAB7 FFFD - FCC0 FFFD FDE7 F7EF FFFD FFFD D7B5 -End of Item 02F3 - -Begin of Item 02F4 - Format 1 - srcBegin = 6D59 - srcEnd = 6D95 - mappingOffset = 19D6 - Mapping = - EFBA F1DD FFFD DEB3 FFFD FFFD FFFD FFFD - FFFD FFFD E8CB FFFD FFFD F8DD FFFD FFFD - FBC7 D5C8 FFFD D7DF FFFD DDA9 FFFD FFFD - FFFD FFFD FFFD E9B1 FFFD FFFD FAAD F6D9 - FAF4 FFFD FFFD FFFD FFFD FFFD F8AA FFFD - FFFD FFFD FFFD FFFD E6EE FFFD CCDC E1BC - E0EF FFFD FFFD E9BF FCFD E6CE FFFD FFFD - E1D7 FFFD E6CF FFFD F4F1 -End of Item 02F4 - -Begin of Item 02F5 - Format 1 - srcBegin = 6DAF - srcEnd = 6DFB - mappingOffset = 1A13 - Mapping = - E4F3 FFFD FFFD E4FB FFFD FFFD F9E4 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD EFE3 FFFD FFFD CFEE F6BE E0B2 FCFE - D1AB FFFD FFFD FFFD D7FA FFFD FFFD FFFD - FBC8 FFFD E2D7 FFFD FFFD FFFD FFFD FFFD - FFFD D4A3 F0F8 D7A8 FFFD FFFD FFFD E1E7 - FFFD FFFD D3BF FFFD FFFD FFFD FFFD FFFD - FFFD EFE4 FFFD D7C5 EBE2 FFFD FFFD FCE7 - FFFD FFFD E4A2 FFFD E2E8 FFFD E6D0 FFFD - FBE8 F4E8 E5F4 F4BC F4D5 -End of Item 02F5 - -Begin of Item 02F6 - Format 1 - srcBegin = 6E17 - srcEnd = 6E7A - mappingOffset = 1A60 - Mapping = - DFB6 FFFD FCB9 EEC2 CAF5 FFFD FFFD FFFD - EFE5 CBE2 D4A4 FFFD DEE0 DAFD E4C6 E8BE - FFFD FFFD FFFD FFFD E0DE F6B4 EAD2 FFFD - F9FB FFFD FFFD E0C2 FFFD CAE4 FFFD E7B7 - FFFD EAFD FFFD D9DD FFFD DAB4 EEAA FBE9 - FFFD FFFD FFFD FFFD DBCB DAB5 FFFD FFFD - FFFD FFFD FFFD F1BE FFFD FFFD D3AC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FBC9 - FFFD DFCF FFFD FFFD D3C0 E3D7 FFFD EFE6 - FCD0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E9C0 FFFD FFFD FFFD F5D3 FFFD FFFD ECDC - F7B7 FFFD FFFD EAB8 D1F9 FFFD FFFD FFFD - FFFD FFFD FFFD DCC8 -End of Item 02F6 - -Begin of Item 02F7 - Format 1 - srcBegin = 6E90 - srcEnd = 6ED4 - mappingOffset = 1AC4 - Mapping = - EAB9 FFFD FFFD FFFD FFFD FFFD F1DE FFFD - FFFD FFFD FFFD FFFD D7B6 CFB5 FFFD D9A8 - FFFD FFFD ECEE FFFD FFFD DDAA FFFD FFFD - FFFD FFFD CDA2 E8AE FFFD FFFD FFFD E1BD - FFFD F2D1 FFFD FFFD FFFD FFFD E9C1 FFFD - FFFD FFFD D2FC FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DBB5 FFFD F3E7 D8FE FFFD FFFD - FFFD FCD1 FFFD EDB2 F4AF FFFD FBA3 FFFD - FFFD FCC1 FFFD EEAB D4A5 -End of Item 02F7 - -Begin of Item 02F8 - Format 1 - srcBegin = 6EEF - srcEnd = 6F41 - mappingOffset = 1B09 - Mapping = - F4F2 FFFD FFFD FFFD FFFD EED9 FFFD FFFD - FFFD FBCA FFFD FFFD FFFD FFFD FFFD CDE3 - D8BB FFFD E5DB F8F7 FFFD FFFD FFFD F6D4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D7A9 FFFD CBC9 FFFD FFFD E6D1 F0CC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D8AE FFFD F9D3 D5FE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D8BC F2B0 FFFD FFFD - FFFD FFFD E2AB F3E8 FFFD FFFD FFFD FFFD - FFFD EFC2 FFFD FFFD FFFD FFFD FFFD FFFD - EDEC FFFD E7B8 -End of Item 02F8 - -Begin of Item 02F9 - Format 1 - srcBegin = 6F51 - srcEnd = 6F97 - mappingOffset = 1B5C - Mapping = - DAFE FFFD FFFD CCBE FFFD FFFD F2FC DAEB - FFFD E2D8 EDD6 FFFD FFFD D6D1 E0B3 FFFD - FFFD FCD2 FFFD EBC8 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D3C1 F0CD FFFD CFF7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD EDD2 FFFD D4D8 DCC9 D7F1 FFFD FFFD - DFBB FFFD FFFD F3A5 FFFD FFFD FFFD F4CD - FFFD FFFD FFFD FFFD F1BF F8B1 FFFD E9FA - FFFD FFFD FFFD FBCB FFFD FFFD CAD5 -End of Item 02F9 - -Begin of Item 02FA - Format 1 - srcBegin = 6FA3 - srcEnd = 6FF1 - mappingOffset = 1BA3 - Mapping = - F9D4 F7CA FFFD FFFD D6C8 FFFD FFFD FFFD - FFFD FFFD FFFD FCE8 F3BD FFFD EEFE FFFD - E7FE FFFD FFFD FFFD FFFD FFFD D3C2 FFFD - FFFD FFFD FFFD D3B6 FFFD CCAD F6FA D6B2 - D2D8 FFFD FFFD FFFD FFFD FFFD FFFD E7D8 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E3A5 FFFD FFFD FFFD FFFD E7B9 - FFFD FFFD FFFD FFFD F0AD FBCC EBA1 FFFD - FFFD D4A6 FFFD FFFD FFFD FFFD FBCD FFFD - D5BD F1DF FFFD FFFD F6FB FFFD DEB4 -End of Item 02FA - -Begin of Item 02FB - Format 1 - srcBegin = 6FFE - srcEnd = 703E - mappingOffset = 1BF2 - Mapping = - D5EB FFFD FFFD E5C8 FFFD FFFD FFFD FBA4 - D4B9 FFFD FFFD DEE1 FFFD E4A3 FFFD FFFD - FFFD D7B7 FFFD F8EE FFFD FFFD FFFD DEB5 - FFFD FFFD D6D2 FFFD F9D5 E7BA EBD5 D5F7 - EFE7 E1BE FFFD FFFD FFFD FAAE FFFD FFFD - FFFD D6E9 D6EE FFFD FFFD FFFD FFFD FFFD - FFFD E7BB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD ECCB FFFD FFFD FFFD FFFD FFFD FFFD - D5B3 -End of Item 02FB - -Begin of Item 02FC - Format 1 - srcBegin = 704C - srcEnd = 70B9 - mappingOffset = 1C33 - Mapping = - CEB4 FFFD FFFD FFFD FBA5 E1EE FFFD FFFD - FFFD FFFD FFFD FFFD F7A8 FFFD FFFD FFFD - FFFD FBCE FFFD FFFD FFFD FFFD FFFD D8BD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FBFD - FFFD FFFD FFFD FFFD FCE9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CFB6 FFFD FFFD FFFD - EDC7 EEAC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CCDD FFFD FFFD FFFD FFFD F6A7 FFFD - FFFD FFFD E6FA FFFD FFFD FFFD F5A4 FFFD - FFFD FFFD FFFD FFFD FDDC EDB3 CEC9 FFFD - FFFD FFFD FFFD FFFD FFFD EFE8 FFFD FFFD - E1BF FFFD FFFD FFFD FFFD FFFD FFFD FADB - CBE3 F7A9 FFFD FBA6 FFFD FFFD FFFD DCB9 - FFFD FFFD FFFD F1C0 EDC8 EFC3 -End of Item 02FC - -Begin of Item 02FD - Format 1 - srcBegin = 70C8 - srcEnd = 70DF - mappingOffset = 1CA1 - Mapping = - D6AD FFFD FFFD FDCE FFFD FFFD FFFD E8A1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FBF4 D5A7 FFFD FFFD FFFD F1F6 FFFD E6D3 -End of Item 02FD - -Begin of Item 02FE - Format 1 - srcBegin = 70F1 - srcEnd = 710C - mappingOffset = 1CB9 - Mapping = - CCDE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F8B2 FFFD FFFD FFFD DCEB FFFD FFFD FFFD - FFFD FFFD FFFD FDB6 FFFD FFFD FFFD FFFD - E5EA FFFD FFFD F1E0 -End of Item 02FE - -Begin of Item 02FF - Format 1 - srcBegin = 7119 - srcEnd = 7136 - mappingOffset = 1CD5 - Mapping = - DBCC DDCD FFFD FFFD FFFD D4C8 FFFD FFFD - D9ED FFFD FFFD FFFD FFFD F5A5 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E6FB - FFFD FFFD FFFD FFFD FFFD E6D4 -End of Item 02FF - -Begin of Item 0300 - Format 1 - srcBegin = 7147 - srcEnd = 716E - mappingOffset = 1CF3 - Mapping = - FDC8 FFFD D6A1 FDBF FFFD FCD3 FFFD EFA1 - FFFD E7BC FFFD FFFD FFFD FFFD FFFD D1EE - FFFD FFFD E6D5 FFFD FFFD E9F2 FFFD DFB0 - FFFD FFFD FFFD FFFD FFFD D8E0 FCBA FDAF - F0CE FFFD DBE1 FFFD FFFD E5C9 FFFD EDB4 -End of Item 0300 - -Begin of Item 0301 - Format 1 - srcBegin = 717D - srcEnd = 71EE - mappingOffset = 1D1B - Mapping = - E0C3 FFFD FFFD FFFD FFFD FFFD FFFD E3D8 - FFFD FFFD FFFD FFFD E9FB EAA8 FFFD FFFD - FFFD FFFD FDB7 FFFD FFFD FBA7 FFFD E9C2 - FFFD FFFD FFFD FFFD FDF7 FFFD FFFD FFFD - FFFD FFFD E2D9 FFFD FFFD DCEC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E8A2 - FFFD FFFD FFFD FFFD E6F0 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FDF8 FDF9 FFFD FFFD - FFFD F6BF FFFD FFFD E7A7 FFFD E6D7 FFFD - FFFD FFFD FFFD D4F3 D4C9 FFFD FFFD FFFD - FFFD D6FA FFFD D7F2 FFFD E1C0 FFFD DBE2 - E6D8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E7BD FFFD FFFD FFFD FFFD FFFD - F0CF F3BE E2AC FFFD FFFD FFFD FFFD FFFD - F5B7 E0F0 -End of Item 0301 - -Begin of Item 0302 - Format 1 - srcBegin = 71FB - srcEnd = 721B - mappingOffset = 1D8D - Mapping = - FDB8 E3E8 FFFD D4A7 E8FC FAD2 FFFD FFFD - FFFD FFFD FFFD F8EF FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D6D3 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D5B4 -End of Item 0302 - -Begin of Item 0303 - Format 1 - srcBegin = 722A - srcEnd = 7281 - mappingOffset = 1DAE - Mapping = - F0D0 FFFD F7F0 EEB3 FFFD FFFD EABA FFFD - EAD3 FFFD FFFD EDC9 DDAB FFFD FFFD FFFD - E5AC FDA1 FFFD DFD0 ECB3 FFFD DFD1 FFFD - FFFD FFFD FFFD FFFD EDED F8B8 F7FA FFFD - FFFD FFFD F8AB FFFD FFFD FFFD FFFD FFFD - F4E0 FFFD FFFD FFFD FFFD FFFD D4BA E4B3 - FFFD E9DA FFFD DEB6 FFFD D9BF FFFD D9C0 - D6EF FFFD FFFD FFFD FFFD D9CC FFFD DAAA - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - DFE5 FFFD FFFD FFFD FFFD FFFD FFFD F7E5 - FFFD FFFD FFFD CCB2 FFFD FFFD DFF9 D7E0 -End of Item 0303 - -Begin of Item 0304 - Format 1 - srcBegin = 72A2 - srcEnd = 72AF - mappingOffset = 1E06 - Mapping = - D4BB FFFD FFFD FFFD FFFD FDFA FFFD FFFD - FFFD FFFD CCB3 FFFD FFFD DBF3 -End of Item 0304 - -Begin of Item 0305 - Format 1 - srcBegin = 72C0 - srcEnd = 72E9 - mappingOffset = 1E14 - Mapping = - DFD2 FFFD CECA FFFD EEDA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E4E4 FFFD - FBCF FFFD FFFD FFFD FFFD FFFD FFFD CFB7 - FFFD EEC3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CEEA FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E2AD -End of Item 0305 - -Begin of Item 0306 - Format 1 - srcBegin = 72F8 - srcEnd = 72FD - mappingOffset = 1E3E - Mapping = - D7E1 FAF5 FFFD FFFD D5C9 F8AC -End of Item 0306 - -Begin of Item 0307 - Format 2 - srcBegin = 730A - destBegin = E7D9 -End of Item 0307 - -Begin of Item 0308 - Format 1 - srcBegin = 7316 - srcEnd = 7357 - mappingOffset = 1E44 - Mapping = - F3E9 FFFD FFFD FFFD FFFD D8ED E3C4 F0F1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E8E5 - FFFD FFFD FFFD E0FA EEC4 D9DE FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EBA2 EBA3 FFFD FFFD FFFD FFFD FFFD FFFD - FCC2 EABB FFFD FFFD FFFD FFFD E8AB DEE2 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD EDEF FFFD E8A3 FFFD FFFD FFFD - FFFD CFF1 -End of Item 0308 - -Begin of Item 0309 - Format 1 - srcBegin = 7368 - srcEnd = 746F - mappingOffset = 1E86 - Mapping = - D4BC FFFD FCEA FFFD FFFD FFFD FFFD FFFD - E7BE FFFD FCF2 FFFD FFFD D6B4 FFFD FFFD - E2AE FFFD D3B7 FACC FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FADC FFFD EDB5 E1E3 - FFFD E8AC FFFD E8DD FFFD FFFD EFE9 FFFD - FFFD FFFD FFFD FFFD F4BD FFFD CFB8 E9DB - D1AC FFFD FFFD FFFD FFFD FFFD FFFD DAC7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EBC9 - FFFD E8CC FFFD FFFD FFFD DEB7 FFFD FFFD - FFFD FFFD D6BC D3E5 FFFD FFFD FFFD FFFD - FFFD FADD FFFD FFFD FFFD FFFD FFFD FFFD - DAD6 FFFD CAB1 FFFD FFFD FFFD FFFD FFFD - FFFD DAC8 DFA6 FFFD F9B3 F2D2 FFFD CAC4 - FFFD FFFD FFFD FFFD FFFD FFFD CECB FFFD - FFFD CDF5 FFFD FFFD FFFD FDB0 D5A8 FFFD - F1C1 FFFD FFFD E2E9 DCCA ECB4 FAC0 FFFD - FFFD FBA8 D0A8 FFFD FFFD DAEC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D9EE - FFFD E0FB FFFD FFFD FFFD EFEA FADE FFFD - FFFD E0C4 FFFD CFB9 FFFD D5CA D7E2 E2AF - FFFD D7B8 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E8CD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F6DA FFFD FFFD FFFD FFFD - EFA2 E2DA F6FC FFFD FFFD FBD0 D1AD FFFD - CDE4 FFFD D1AE DCED E8CE FFFD F0F9 CEB5 - E6FC FFFD FFFD D7FB D0D6 DDF5 F7F1 FFFD - F6FD FFFD DBF7 FFFD FFFD FFFD FFFD FBEA - E9DC D9C1 FFFD F5F2 E0C5 FFFD FFFD FFFD - FFFD FFFD FFFD EAD4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F9C2 FFFD EABC - FFFD D2C5 FBD1 E7C0 EBA5 FFFD DFFA E3A2 - D7B9 FFFD E9C3 FFFD E8FD E8AF FFFD FFFD - F2D3 FBA9 D8A5 FFFD FFFD FFFD FFFD D5CB -End of Item 0309 - -Begin of Item 030A - Format 1 - srcBegin = 747E - srcEnd = 748B - mappingOffset = 1F8E - Mapping = - D0C8 FFFD FFFD FFFD D1AF D7E3 FFFD FFFD - FFFD E0C6 FFFD D6A2 FFFD EDF0 -End of Item 030A - -Begin of Item 030B - Format 1 - srcBegin = 7498 - srcEnd = 7504 - mappingOffset = 1F9C - Mapping = - D7F3 FFFD FFFD FFFD FCD4 FFFD DAD7 CCDF - FFFD F2D4 FFFD D1B0 FFFD CCE0 FFFD DBFD - F3BF FFFD F0D1 FFFD FFFD FFFD FFFD FFFD - FCBB FFFD E2B0 FFFD FFFD E6A5 FFFD FFFD - FFFD E2DB FFFD FFFD FFFD DFDE FFFD E0C7 - FFFD FFFD FFFD FFFD FFFD FFFD F2EF FFFD - FFFD FFFD CCE1 FFFD FFFD FFFD FFFD D6EA - FFFD FFFD FFFD FFFD E7C2 FFFD FFFD FFFD - CEB6 FFFD F3C0 FFFD CDFE FFFD FFFD FFFD - FBD2 FFFD F8F8 F7FB FFFD FFFD E8BF FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E8B7 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EDB6 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DCBA FFFD FFFD CCB4 -End of Item 030B - -Begin of Item 030C - Format 1 - srcBegin = 7511 - srcEnd = 753A - mappingOffset = 2009 - Mapping = - F1F7 FFFD FFFD FFFD E8B8 FFFD FFFD CAF6 - FFFD E4A4 F4D6 FFFD FFFD FFFD DFE6 FFFD - FFFD FFFD DFA7 FFFD DFE7 E1C1 FFFD E9C4 - FFFD FFFD DCCB E9C5 FFFD FFFD FFFD EFA3 - EBA6 CBA3 E3E9 FFFD FFFD FFFD D1FB EFA4 - FFFD EFEB -End of Item 030C - -Begin of Item 030D - Format 1 - srcBegin = 7547 - srcEnd = 7591 - mappingOffset = 2033 - Mapping = - D0B4 FFFD FFFD FFFD FFFD CDA3 FFFD FFFD - E8E6 FFFD EFA5 FFFD D3CC DAED FFFD FFFD - FFFD FFFD D7BA FFFD F2D5 F5E5 D9EF FFFD - FFFD FFFD FFFD F9B4 FFFD FFFD D5D4 FDCF - FFFD FFFD FFFD DBE3 FFFD FFFD FFFD FFFD - F1E1 ECB6 FFFD FFFD FFFD FFFD FBFE D3D7 - FFFD D1B1 FFFD CBB1 FFFD FFFD FFFD FFFD - D1B2 FFFD FFFD FFFD FFFD FFFD FFFD CBB2 - F1C2 FFFD FFFD F4E1 F9B5 FFFD FFFD E1C3 - E1C2 FFFD EBF7 -End of Item 030D - -Begin of Item 030E - Format 1 - srcBegin = 759D - srcEnd = 75E2 - mappingOffset = 207E - Mapping = - DFA8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CBCA FFFD FFFD FFFD FFFD FFFD E6B9 FFFD - FFFD FFFD FFFD FFFD F8DE F9AA CAF7 FFFD - EDB7 FFFD FFFD D3B8 F2D6 FFFD FFFD D4D9 - EEC5 F2F0 FFFD FFFD FFFD CAB2 FFFD FFFD - DCBB FFFD F1F8 FFFD FFFD FFFD FFFD FFFD - ECB7 FFFD FFFD FFFD FFFD E5CA FFFD F6C0 - FDDD FFFD FFFD D4E3 CCE2 FFFD F7D4 FFFD - FFFD FFFD FFFD FFFD FFFD D7E5 -End of Item 030E - -Begin of Item 030F - Format 1 - srcBegin = 75F0 - srcEnd = 7600 - mappingOffset = 20C4 - Mapping = - D3C3 FFFD D8A6 FFFD F6C1 FFFD FFFD FFFD - FFFD FFFD DDF6 FFFD CDC0 FFFD FFFD FFFD - E5DC -End of Item 030F - -Begin of Item 0310 - Format 2 - srcBegin = 760D - destBegin = E5CB -End of Item 0310 - -Begin of Item 0311 - Format 1 - srcBegin = 7619 - srcEnd = 7626 - mappingOffset = 20D5 - Mapping = - E1C4 FFFD FFFD FFFD FFFD FFFD E8B0 F4B0 - F3EA DAEE FFFD D7BB FFFD E2B1 -End of Item 0311 - -Begin of Item 0312 - Format 1 - srcBegin = 763B - srcEnd = 7693 - mappingOffset = 20E3 - Mapping = - D7AA FFFD FFFD FFFD FFFD FFFD FFFD D6FB - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E4DF FFFD CAD6 FFFD FFFD FFFD EBA8 - FFFD FFFD FFFD DBFE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F6C2 FFFD - FFFD EFBB FFFD FFFD FFFD FFFD D4FD FFFD - FFFD E0C8 FFFD FFFD FFFD E8B9 FFFD EFA6 - FFFD FFFD FFFD FFFD FFFD CDA4 FFFD FFFD - D4F4 DBA1 DBDC DBDD FFFD FFFD FFFD FFFD - FFFD EEDC FFFD CBCB FCD5 FFFD FFFD FFFD - FFFD FFFD FFFD CEEB FFFD CDC1 FFFD FFFD - FBD3 -End of Item 0312 - -Begin of Item 0313 - Format 2 - srcBegin = 76AE - destBegin = F9AB -End of Item 0313 - -Begin of Item 0314 - Format 1 - srcBegin = 76BA - srcEnd = 770B - mappingOffset = 213C - Mapping = - F5D4 FFFD FFFD FFFD FFFD D9A9 FFFD FFFD - E9DD DBCD FFFD FFFD DDCE FFFD E7C3 FFFD - ECCC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F9EC FFFD FFFD FFFD CBCC FFFD FFFD FFFD - FFFD E0FC D4A8 FFFD EDD3 D8EF FFFD F2D7 - FFFD CAF8 DAEF FFFD FFFD D6D4 FFFD FFFD - FFFD FFFD FFFD FFFD D9CD FFFD FFFD FFFD - D8EE FFFD F2C1 FFFD FFFD FFFD DFD3 FFFD - FFFD FFFD DAF0 FFFD E2EA FFFD FFFD E0FD - FFFD FFFD D8F8 FFFD FFFD FFFD F7AF DAB6 - FFFD CAD7 -End of Item 0314 - -Begin of Item 0315 - Format 1 - srcBegin = 771E - srcEnd = 7729 - mappingOffset = 218E - Mapping = - F2D8 FFFD D8F9 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FADF -End of Item 0315 - -Begin of Item 0316 - Format 1 - srcBegin = 7737 - srcEnd = 7740 - mappingOffset = 219A - Mapping = - CFEF D9C2 FFFD F0D2 FFFD E4D1 FFFD FFFD - FFFD F3B7 -End of Item 0316 - -Begin of Item 0317 - Format 2 - srcBegin = 774D - destBegin = FAE0 -End of Item 0317 - -Begin of Item 0318 - Format 1 - srcBegin = 775B - srcEnd = 776B - mappingOffset = 21A4 - Mapping = - EFEC FFFD FFFD FFFD FFFD FFFD E2B2 FFFD - D4BD FFFD FFFD D9CE FFFD FFFD FFFD FFFD - F4E2 -End of Item 0318 - -Begin of Item 0319 - Format 1 - srcBegin = 7779 - srcEnd = 777F - mappingOffset = 21B5 - Mapping = - D4A9 FFFD FFFD FFFD FFFD CDC2 E7DA -End of Item 0319 - -Begin of Item 031A - Format 1 - srcBegin = 778B - srcEnd = 7791 - mappingOffset = 21BC - Mapping = - F2D9 FFFD FFFD FFFD FFFD FFFD D9AA -End of Item 031A - -Begin of Item 031B - Format 1 - srcBegin = 779E - srcEnd = 77BF - mappingOffset = 21C3 - Mapping = - D8BE FFFD FFFD FFFD FFFD FFFD FFFD DCAD - FFFD FFFD FFFD FFFD FFFD FFFD E2EB D6FC - FFFD FFFD CAF9 FFFD FFFD D4DA FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4D7 CCA1 FFFD - FFFD CFBA -End of Item 031B - -Begin of Item 031C - Format 1 - srcBegin = 77D7 - srcEnd = 77F3 - mappingOffset = 21E5 - Mapping = - F5B8 FFFD FFFD FFFD D9C3 D0E8 FFFD FFFD - FFFD FFFD FFFD E3C5 EBF8 FFFD F2B1 FFFD - FFFD FFFD CFBB FFFD FFFD FFFD D3AD E8E1 - CEEC FFFD FFFD FFFD E0B4 -End of Item 031C - -Begin of Item 031D - Format 2 - srcBegin = 7802 - destBegin = DEE3 -End of Item 031D - -Begin of Item 031E - Format 2 - srcBegin = 7812 - destBegin = DDF7 -End of Item 031E - -Begin of Item 031F - Format 1 - srcBegin = 7825 - srcEnd = 7834 - mappingOffset = 2202 - Mapping = - F2B2 F3F6 F6DB FFFD FFFD FFFD FFFD D7FE - FFFD FFFD FFFD FFFD FFFD F8DF FFFD F7F2 -End of Item 031F - -Begin of Item 0320 - Format 1 - srcBegin = 7845 - srcEnd = 784F - mappingOffset = 2212 - Mapping = - D0A9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E6DA -End of Item 0320 - -Begin of Item 0321 - Format 2 - srcBegin = 785D - destBegin = F5A6 -End of Item 0321 - -Begin of Item 0322 - Format 1 - srcBegin = 786B - srcEnd = 786F - mappingOffset = 221D - Mapping = - D7BC CCE3 FFFD FFFD E6DB -End of Item 0322 - -Begin of Item 0323 - Format 1 - srcBegin = 787C - srcEnd = 7897 - mappingOffset = 2222 - Mapping = - DDDD FFFD FFFD FFFD FFFD D1B3 FFFD FFFD - FFFD FFFD FFFD EFED FFFD FFFD FFFD FFFD - D6DE E4F4 E1EF FFFD FFFD DDF8 FFFD FFFD - FFFD FFFD FFFD E8CF -End of Item 0323 - -Begin of Item 0324 - Format 1 - srcBegin = 78A3 - srcEnd = 78A9 - mappingOffset = 223E - Mapping = - CAE5 FFFD FFFD FFFD DCA1 FFFD E0B5 -End of Item 0324 - -Begin of Item 0325 - Format 1 - srcBegin = 78BA - srcEnd = 78D0 - mappingOffset = 2245 - Mapping = - FCAC FCAD D8A7 FFFD FFFD FFFD FFFD EDB8 - FFFD FFFD FFFD DBB6 FFFD FFFD FFFD FFFD - D6F0 F3AF FFFD FFFD CDA5 FFFD DAF1 -End of Item 0325 - -Begin of Item 0326 - Format 1 - srcBegin = 78E8 - srcEnd = 7901 - mappingOffset = 225C - Mapping = - D8A8 FFFD FFFD FFFD CCE4 FFFD FFFD D1B4 - FFFD FFFD FFFD FFFD FFFD CAD8 FFFD FFFD - FFFD FFFD FFFD DAF2 FFFD FFFD FFFD FFFD - FFFD F5A7 -End of Item 0326 - -Begin of Item 0327 - Format 1 - srcBegin = 790E - srcEnd = 7916 - mappingOffset = 2276 - Mapping = - F5A8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E6A6 -End of Item 0327 - -Begin of Item 0328 - Format 1 - srcBegin = 792A - srcEnd = 792C - mappingOffset = 227F - Mapping = - D5EC D5F8 DAF3 -End of Item 0328 - -Begin of Item 0329 - Format 1 - srcBegin = 793A - srcEnd = 796D - mappingOffset = 2282 - Mapping = - E3C6 FFFD FFFD FFFD DEE4 FFFD DEE5 D1B5 - FFFD FFFD FFFD FFFD FFFD D1B6 D1B7 F2B3 - FFFD FFFD FFFD FFFD FFFD FFFD E9DE FFFD - FFFD FFFD FFFD FFFD F0D3 F2B4 FFFD FFFD - F0D4 CBE4 FBD4 F5E6 E3EA FFFD DEE6 FFFD - FFFD FFFD FFFD DFD4 FFFD FFFD F8F9 FFFD - FFFD FFFD FFFD F0AE -End of Item 0329 - -Begin of Item 032A - Format 1 - srcBegin = 797A - srcEnd = 7981 - mappingOffset = 22B6 - Mapping = - D1B8 FFFD FFFD FFFD FFFD D6DF FFFD D0D7 -End of Item 032A - -Begin of Item 032B - Format 1 - srcBegin = 798D - srcEnd = 7991 - mappingOffset = 22BE - Mapping = - FCA1 EFEE DCD8 FFFD E9DF -End of Item 032B - -Begin of Item 032C - Format 1 - srcBegin = 79A6 - srcEnd = 79E9 - mappingOffset = 22C3 - Mapping = - E5DD FDFB FFFD FFFD E0C9 FFFD FFFD FFFD - D6C9 FFFD FFFD D4AA FFFD E5CC FFFD FFFD - FFFD FFFD FFFD E9E0 FFFD FFFD FFFD D0D8 - FCA2 D4BE E2B3 DEE7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD DCBC D2B6 F5D5 FFFD FFFD - FFFD FFFD FFFD CEA1 F5A9 FFFD FFFD DDF9 - FFFD FFFD DDFA FFFD FFFD FFFD FFFD FFFD - FFFD F0D5 FFFD FFFD FFFD FFFD F6DF FFFD - F2DA E4EB FFFD F2F1 -End of Item 032C - -Begin of Item 032D - Format 1 - srcBegin = 79FB - srcEnd = 7A20 - mappingOffset = 2307 - Mapping = - ECB9 FFFD FFFD FFFD FFFD FDFC FFFD FFFD - FFFD FFFD E1AA FFFD FFFD CAD9 FFFD FFFD - EFEF FFFD F5AA FFFD FFFD FFFD FFFD FFFD - FFFD ECF9 FFFD FFFD F8AD FFFD F2C2 F6C3 - FFFD D7D2 FFFD FFFD F9A2 F0D6 -End of Item 032D - -Begin of Item 032E - Format 1 - srcBegin = 7A2E - srcEnd = 7ACB - mappingOffset = 232D - Mapping = - F0FA FFFD FFFD F6E0 FFFD FFFD FFFD FFFD - E9F3 F2C3 FFFD FFFD FFFD D4AB CAB3 CDA6 - FFFD CDC3 CDDA FFFD FFFD FFFD FFFD FFFD - D9CF FFFD FFFD F6C4 FFFD FFFD FFFD EEDD - E7C4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E2B4 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD DFE2 E7DB FFFD FFFD FFFD - FFFD FFFD FFFD E8B1 FFFD FCAE FFFD FFFD - FFFD FFFD E5CD FFFD FFFD FFFD FAEB FFFD - CFBC FFFD FFFD CFE2 CDF6 FFFD FFFD EFF0 - FFFD F4BE FFFD D4CD FFFD FFFD F3B8 FFFD - FFFD FFFD E9A1 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F2F2 F3EB FFFD F0D7 - FFFD FFFD CFD7 FFFD FFFD FFFD FFFD FFFD - FFFD CFDF FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E8C0 E8C1 FFFD FFFD FFFD - CFE3 E9A2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D0AA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F3C1 D0AB - FFFD D4E4 FFFD FFFD EFBC D8A1 -End of Item 032E - -Begin of Item 032F - Format 1 - srcBegin = 7AD7 - srcEnd = 7AFF - mappingOffset = 23CB - Mapping = - D9DF FFFD F3D7 FFFD FFFD FFFD DCBD FFFD - CCE5 EDF1 FFFD FFFD F1E2 FFFD D4DB FFFD - FFFD FFFD FFFD E2B5 FFFD FFFD CAE6 FFFD - D3AE FFFD FFFD FFFD FFFD FFFD FFFD CCE6 - FFFD FFFD F1D3 F5E7 FFFD FFFD FFFD FFFD - CADA -End of Item 032F - -Begin of Item 0330 - Format 1 - srcBegin = 7B0F - srcEnd = 7B2D - mappingOffset = 23F4 - Mapping = - FBEE FFFD E1C5 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DFE9 FFFD EEDE FFFD FFFD F7C2 - FFFD D8A2 FFFD FFFD FFFD FFFD FFFD DDAC - FFFD FFFD FFFD FFFD FFFD F0AF D6BD -End of Item 0330 - -Begin of Item 0331 - Format 2 - srcBegin = 7B39 - destBegin = E1AB -End of Item 0331 - -Begin of Item 0332 - Format 1 - srcBegin = 7B46 - srcEnd = 7B60 - mappingOffset = 2413 - Mapping = - F9B6 FFFD FFFD D4F5 FFFD D0C9 EFA7 E2EC - FFFD DBEA CECC F5E8 F7D5 FFFD D3CD FFFD - F3FE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D0B5 -End of Item 0332 - -Begin of Item 0333 - Format 1 - srcBegin = 7B6C - srcEnd = 7BA1 - mappingOffset = 242E - Mapping = - E0FE FFFD DFFB FFFD FFFD FFFD FFFD FFFD - FFFD E6DD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E8A4 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD CBCD FFFD FFFD FFFD EFA8 - FFFD FFFD FFFD EEB4 FFFD FFFD FFFD FFFD - DAD8 D1B9 FFFD DFA9 FFFD FFFD F3B0 FFFD - FFFD CCC4 FFFD FFFD FFFD CEB7 -End of Item 0333 - -Begin of Item 0334 - Format 1 - srcBegin = 7BAD - srcEnd = 7BD2 - mappingOffset = 2464 - Mapping = - EFA9 FFFD FFFD FFFD DFD5 FFFD FFFD EDD7 - FFFD FFFD FFFD EEC6 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EFBD FCD6 FFFD FFFD DBF4 - FFFD EFAA F8B9 FFFD F5E9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E3D9 -End of Item 0334 - -Begin of Item 0335 - Format 1 - srcBegin = 7BE0 - srcEnd = 7BE9 - mappingOffset = 248A - Mapping = - E1C6 FFFD FFFD FFFD D4BF FFFD FFFD FFFD - FFFD DEE8 -End of Item 0335 - -Begin of Item 0336 - Format 1 - srcBegin = 7C07 - srcEnd = 7C12 - mappingOffset = 2494 - Mapping = - F0EA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F3C2 -End of Item 0336 - -Begin of Item 0337 - Format 1 - srcBegin = 7C1E - srcEnd = 7C2B - mappingOffset = 24A0 - Mapping = - D3AF FFFD FFFD CADB FFFD FFFD FFFD FFFD - FFFD FCD7 FFFD FFFD EDD8 E1C7 -End of Item 0337 - -Begin of Item 0338 - Format 1 - srcBegin = 7C3D - srcEnd = 7C4D - mappingOffset = 24AE - Mapping = - F4D8 D6B3 DDAD FFFD FFFD FFFD D5BE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F1C3 - EEDF -End of Item 0338 - -Begin of Item 0339 - Format 1 - srcBegin = 7C60 - srcEnd = 7C73 - mappingOffset = 24BF - Mapping = - D6EB FFFD FFFD FFFD F4D9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D7E6 FFFD FFFD FFFD - FFFD FFFD FFFD DAB7 -End of Item 0339 - -Begin of Item 033A - Format 1 - srcBegin = 7C83 - srcEnd = 7CBE - mappingOffset = 24D3 - Mapping = - DDFB FFFD FFFD FFFD FFFD FFFD DDCF FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D8A3 - FFFD FFFD DAD9 FFFD F0D8 EFC4 FFFD FFFD - FFFD FFFD FFFD FFFD E1D8 FFFD FFFD FFFD - FFFD FFFD F1D4 FFFD EDF2 FFFD FFFD FFFD - FFFD FFFD FFFD D5DB FFFD FFFD D5DC F3C4 - CBD7 FFFD FFFD FFFD FFFD FFFD E2B6 FFFD - FFFD FFFD FFFD EFF1 -End of Item 033A - -Begin of Item 033B - Format 2 - srcBegin = 7CCA - destBegin = FBD5 -End of Item 033B - -Begin of Item 033C - Format 1 - srcBegin = 7CD6 - srcEnd = 7CE7 - mappingOffset = 250F - Mapping = - D3D8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - DDD0 F0D9 CBB3 FFFD FFFD FFFD FFFD FFFD - FFFD D5DD -End of Item 033C - -Begin of Item 033D - Format 1 - srcBegin = 7CFB - srcEnd = 7D50 - mappingOffset = 2521 - Mapping = - CDA7 FFFD FFFD D0AC FFFD D1BA FFFD F1C4 - FFFD E5B3 FBF5 E9E1 FDE0 FCBC FFFD DAA2 - DAA3 FFFD D2A1 FFFD FFFD D2EF FFFD FFFD - FFFD E2ED FFFD FFFD DEE9 CEDC F2B5 D0E4 - DDD1 FFFD FFFD FFFD FFFD E1C8 DBB7 DFE3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EDB9 F1C5 FFFD F3CF D7AB E1AC FFFD FFFD - E3EB FFFD EEC7 FFFD FFFD FFFD E1C9 CAFA - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F0FB - FAE1 F0DA CCE7 DAF4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CCBF -End of Item 033D - -Begin of Item 033E - Format 1 - srcBegin = 7D5E - srcEnd = 7D7F - mappingOffset = 2577 - Mapping = - CEED FFFD FFFD D5A9 FAE2 FFFD FFFD FFFD - D0E5 FFFD EBD6 FFFD ECDF FFFD FFFD FFFD - DFFC FFFD FFFD F7D6 DEEA CBB4 FFFD FFFD - EFBE FFFD FFFD CCB5 FFFD FFFD FFFD FFFD - FFFD CFBD -End of Item 033E - -Begin of Item 033F - Format 1 - srcBegin = 7D8E - srcEnd = 7DFB - mappingOffset = 2599 - Mapping = - EFF2 E2B7 FFFD FFFD FFFD CCE8 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F0FC FFFD - FFFD FFFD D6E0 FFFD F1C6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E2B8 EBAB - FFFD FFFD FFFD CBB5 D8D1 FFFD F4CE F3F7 - FFFD FFFD D7C6 FFFD D1BB F7AA FFFD EDCA - D7D3 D8FA FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F6C5 FFFD FFFD D1CC DDFC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - DFFD FFFD F9E5 FFFD E0CA FFFD FFFD F2FD - D3B0 FFFD F4F3 DAC9 FFFD E6DE FFFD FFFD - FFFD FFFD F8BA E8D0 FFFD FFFD D8FB FFFD - FFFD EAD5 FFFD FFFD FFFD FFFD D6A3 FFFD - FFFD FFFD FFFD FFFD FFFD F6C6 -End of Item 033F - -Begin of Item 0340 - Format 1 - srcBegin = 7E09 - srcEnd = 7E9C - mappingOffset = 2607 - Mapping = - F2DB E4FC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E8B2 FFFD FFFD FFFD - FFFD FFFD DADA FFFD F2DC FBD6 E9B2 FFFD - EEAD FFFD FAE3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DCEE FFFD FFFD F5EA E6E0 FFFD - F0FD FFFD FFFD FFFD FFFD FFFD D7AC FFFD - FFFD FFFD FFFD FFFD F5C5 EEE0 FFFD FFFD - DBE5 FFFD DDDE FFFD FFFD D9F0 E9A3 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F1F9 FFFD F2C4 E0CB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E9A4 FFFD FFFD - E2B9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E3B1 FCEB CDA8 FFFD CCB6 FFFD FFFD F0DB - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E6BA FFFD FFFD CDA9 FFFD FFFD FFFD FFFD - FFFD F3C3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E1D9 FFFD FFFD EFAB FFFD - FFFD FFFD E7C5 FFFD FFFD E0E9 FFFD F3C5 - FFFD FFFD D4C0 D5BF -End of Item 0340 - -Begin of Item 0341 - Format 1 - srcBegin = 7F36 - srcEnd = 7F3A - mappingOffset = 269B - Mapping = - DDAE FFFD F9FC FFFD CCC0 -End of Item 0341 - -Begin of Item 0342 - Format 1 - srcBegin = 7F4C - srcEnd = 7F55 - mappingOffset = 26A0 - Mapping = - E5A2 FFFD FFFD FFFD CEB8 FFFD FFFD FFFD - D8D2 F9D6 -End of Item 0342 - -Begin of Item 0343 - Format 1 - srcBegin = 7F6A - srcEnd = 7F79 - mappingOffset = 26AA - Mapping = - F1AA CED1 FFFD FFFD F6C7 FFFD DBEB FFFD - DFFE FFFD FFFD D8E1 FFFD F7F3 FFFD D7E7 -End of Item 0343 - -Begin of Item 0344 - Format 1 - srcBegin = 7F85 - srcEnd = 8018 - mappingOffset = 26BA - Mapping = - D4FE FFFD FFFD D1BC FFFD E5CF FFFD CBB6 - FFFD DAB8 FFFD FFFD FFFD FFFD FFFD CDC4 - FFFD FFFD FFFD FFFD FFFD D6BE FFFD FFFD - FFFD E2BA FFFD FFFD FFFD FFFD FFFD CFD8 - FFFD FFFD FFFD E0CC EBF9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FDFD FFFD FFFD - FFFD FFFD FFFD D7E8 CBD8 FFFD FFFD FFFD - E9E2 FFFD FFFD FFFD E8BA FFFD FFFD FFFD - E3C7 FFFD FFFD FFFD FFFD ECCD FFFD ECCE - FFFD D6BF FFFD FFFD FFFD E3A7 FFFD DFD6 - FDE8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD EEE1 F6A8 DDFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F8BB FFFD E8D1 FFFD - FFFD FFFD FFFD F9D7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CEEE FFFD FFFD ECCF - FFFD FFFD FFFD E9A5 D6D5 FFFD CDC5 FFFD - EDBA D1BD FFFD FFFD CFBE FFFD FFFD ECBB - FFFD FFFD FFFD D2B1 FFFD FFFD FFFD FFFD - CCE9 FFFD D9C4 E9FC -End of Item 0344 - -Begin of Item 0345 - Format 1 - srcBegin = 802D - srcEnd = 804A - mappingOffset = 274E - Mapping = - D1BE FFFD FFFD FFFD FFFD FFFD ECBC FFFD - FFFD E5AD FFFD FFFD FFFD FFFD FFFD FFFD - F7B0 FFFD CCEA FFFD FFFD FFFD D3C4 FFFD - FFFD D6C0 FFFD FFFD FFFD D6FD -End of Item 0345 - -Begin of Item 0346 - Format 1 - srcBegin = 8056 - srcEnd = 805E - mappingOffset = 276C - Mapping = - E1A1 FFFD DEBD FFFD F6A9 FFFD FFFD FFFD - DAA4 -End of Item 0346 - -Begin of Item 0347 - Format 1 - srcBegin = 806F - srcEnd = 80CE - mappingOffset = 2775 - Mapping = - D6A4 F5C6 FFFD E1A2 E9C6 FFFD FFFD FFFD - F2C5 FFFD FFFD FFFD FFFD FFFD F4E9 D6EC - EBD3 FFFD FFFD FFFD FFFD ECBD E2DC DEEB - F0DC FFFD EBBF FFFD D7CE D1BF FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F5AB - FFFD FFFD FFFD FFFD F9FD FFFD CADC FFFD - FFFD FFFD CDC6 F2B6 FFFD FFFD DDFE FFFD - FFFD FFFD CCB7 DBB8 FFFD FFFD FFFD FFFD - D0E9 FFFD CEDD EBC0 FFFD FDA2 FFFD FFFD - FFFD FFFD FFFD F8CB FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD EAD6 F1B0 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD DBCE FFFD F7C3 -End of Item 0347 - -Begin of Item 0348 - Format 1 - srcBegin = 80DA - srcEnd = 80E5 - mappingOffset = 27D5 - Mapping = - DBCF CBA4 FFFD FFFD F8E0 FFFD FFFD FBD7 - FFFD FFFD EBCA E0A1 -End of Item 0348 - -Begin of Item 0349 - Format 1 - srcBegin = 80F1 - srcEnd = 810A - mappingOffset = 27E1 - Mapping = - CECD FFFD FFFD D4DC FFFD FFFD FFFD FDD8 - FFFD FFFD FFFD FFFD D2F6 FFFD FFFD FFFD - FFFD F2B7 FFFD FFFD FAF6 F6AA FAF7 D8E6 - FFFD F4B1 -End of Item 0349 - -Begin of Item 034A - Format 1 - srcBegin = 8118 - srcEnd = 813E - mappingOffset = 27FB - Mapping = - E8D2 FFFD CAC5 CCEB FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E2EE FFFD FFFD FFFD FFFD - FFFD E2BB FFFD F7AD FFFD FFFD FFFD F8E1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F3EC FFFD FFFD FFFD FFFD DEA1 -End of Item 034A - -Begin of Item 034B - Format 1 - srcBegin = 814B - srcEnd = 8155 - mappingOffset = 2822 - Mapping = - E4FD FFFD FFFD E3EC FFFD DDAF DDB0 FFFD - FFFD CBB7 E8D3 -End of Item 034B - -Begin of Item 034C - Format 1 - srcBegin = 8165 - srcEnd = 8247 - mappingOffset = 282D - Mapping = - E1A3 D2E0 FFFD FFFD FFFD FFFD F0FE FFFD - FFFD FFFD FFFD E9A6 CBF2 FFFD FFFD FFFD - FFFD FFFD FFFD EDF3 DCD9 E0CD FFFD FFFD - FFFD FFFD F7DA DBB9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD CCAE FFFD DADB FFFD FFFD - FFFD FFFD CDC7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD DDB1 FFFD D8AF - E3A3 FFFD FFFD CEEF FFFD FFFD F2F3 FFFD - FFFD FFFD FFFD F8B3 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E0CE FFFD - F5FD FFFD FFFD FFFD FFFD EBEC FFFD FFFD - D3C5 FCEC D2DB D4EB FFFD DEA2 FFFD FFFD - FFFD E5E6 FFFD FFFD FFFD FFFD FFFD FFFD - F0B0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D5C4 FFFD FFFD FFFD FFFD - FFFD FFFD EDF4 FFFD FFFD FFFD E3ED FFFD - E8C2 FFFD EDF5 D7FC FFFD EDBB FFFD FFFD - F6AB FFFD FFFD FFFD FFFD FFFD F2B8 F6C8 - FFFD FFFD FFFD FFFD FFFD D3E6 F2DD CFBF - FFFD EBAC FFFD FFFD FFFD FFFD FFFD FFFD - CFC0 FFFD E6A8 FDE9 FFFD CFC1 FFFD E0DF - DEEC FFFD FFFD FFFD FFFD E0A2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F4BF E2EF - FFFD D9F1 F1C7 FFFD CBB8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F9FE DBBA DAF5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F6EC DADC FAE4 FFFD E0CF FFFD FFFD FFFD - FFFD FFFD FFFD DDB2 FFFD FFFD FFFD FFFD - E6A9 FFFD EFF3 -End of Item 034C - -Begin of Item 034D - Format 1 - srcBegin = 8259 - srcEnd = 827E - mappingOffset = 2910 - Mapping = - F3ED FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EBFA FFFD F9E6 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CADD D5DE FFFD - CADE DFE4 FFFD FFFD FFFD E6FD FFFD F5AC - FFFD FFFD FFFD FFFD FFFD E4F5 -End of Item 034D - -Begin of Item 034E - Format 1 - srcBegin = 828B - srcEnd = 82BF - mappingOffset = 2936 - Mapping = - E9E3 FFFD EDCB CFE4 FFFD FFFD FFFD D8D3 - FFFD FFFD FFFD FFFD FFFD FFFD DDB3 D4EC - FFFD FFFD F2B9 FFFD DFB7 FFFD FFFD FFFD - FFFD FFFD CBCE FBD8 FFFD FFFD D0D9 FFFD - FFFD DDD2 F7F4 E7DC E4A5 FFFD FCA3 FFFD - DBBB FFFD FFFD FFFD F2BA E9FD D0CA FFFD - F5D6 D9C5 E4B4 FFFD EDA7 -End of Item 034E - -Begin of Item 034F - Format 1 - srcBegin = 82D1 - srcEnd = 82F1 - mappingOffset = 296B - Mapping = - EABD E6FE FFFD F7C4 F5AD FFFD D9E0 FFFD - FFFD FFFD CAB4 FFFD FFFD F8E2 CFC2 FFFD - ECBE FFFD FFFD FFFD E5B4 CDC8 EEC8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E7C8 -End of Item 034F - -Begin of Item 0350 - Format 1 - srcBegin = 82FD - srcEnd = 8309 - mappingOffset = 298C - Mapping = - CDC9 F9B7 FFFD FFFD F1E8 D9F2 DBF5 CAB5 - D9C6 FFFD FFFD FFFD D8C9 -End of Item 0350 - -Begin of Item 0351 - Format 2 - srcBegin = 8317 - destBegin = D9AB -End of Item 0351 - -Begin of Item 0352 - Format 1 - srcBegin = 8328 - srcEnd = 8352 - mappingOffset = 2999 - Mapping = - EDBC FFFD FFFD D8D4 FFFD FFFD FFFD DCDA - FFFD E2BC FFFD FFFD FCED ECE0 D2FE FFFD - E9C7 E6AA FFFD FFFD FFFD FFFD FFFD FFFD - E2F0 FFFD FFFD FFFD FFFD FFFD FFFD FABB - FFFD F5AE FBAA FFFD FFFD FFFD FFFD ECFB - FFFD ECBF FCD8 -End of Item 0352 - -Begin of Item 0353 - Format 1 - srcBegin = 8373 - srcEnd = 837B - mappingOffset = 29C4 - Mapping = - D4E5 FFFD FFFD FFFD F9C3 FFFD FFFD FFFD - EEE2 -End of Item 0353 - -Begin of Item 0354 - Format 1 - srcBegin = 8389 - srcEnd = 83AB - mappingOffset = 29CD - Mapping = - D7E9 EDF6 FFFD FFFD FFFD DEED FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CCEC FFFD E3EE - FFFD FFFD FFFD FFFD FFFD E8D4 FFFD FFFD - FFFD FAF8 FFFD FFFD FFFD FFFD FFFD FFFD - DDB4 E4B5 D8B0 -End of Item 0354 - -Begin of Item 0355 - Format 1 - srcBegin = 83BD - srcEnd = 83DC - mappingOffset = 29F0 - Mapping = - D8D5 FFFD FFFD FFFD F4EA FFFD FFFD FFFD - CEB9 FFFD FFFD FFFD D6E1 CFD2 FFFD D0B6 - FFFD FFFD FFFD FFFD FFFD FFFD CEA2 FFFD - FFFD F3EE FFFD FFFD FFFD FFFD FFFD F3F8 -End of Item 0355 - -Begin of Item 0356 - Format 1 - srcBegin = 83E9 - srcEnd = 840E - mappingOffset = 2A10 - Mapping = - DCCC FFFD D0CB FFFD FFFD FFFD FCA4 CDCA - D7D4 DEA3 FFFD E4E0 FFFD FFFD FFFD FFFD - EEC9 FFFD FFFD FFFD E2DD FFFD FFFD FFFD - FFFD FFFD F5FE D4AC FFFD FFFD FFFD FFFD - FFFD D5D1 FFFD D8F0 F8C3 EAD7 -End of Item 0356 - -Begin of Item 0357 - Format 1 - srcBegin = 8429 - srcEnd = 843D - mappingOffset = 2A36 - Mapping = - F5D7 FFFD FFFD D8BF FFFD FFFD FFFD FFFD - FDC0 FFFD FFFD FFFD FFFD FFFD FFFD EBAD - FFFD FFFD FFFD FFFD D5AA -End of Item 0357 - -Begin of Item 0358 - Format 2 - srcBegin = 8449 - destBegin = E7A8 -End of Item 0358 - -Begin of Item 0359 - Format 1 - srcBegin = 8457 - srcEnd = 847A - mappingOffset = 2A4B - Mapping = - EECA FFFD FFFD FFFD CAE7 FFFD FFFD FFFD - FFFD FFFD F8E3 FFFD D4DD FFFD FFFD EAD8 - FFFD FFFD FFFD FFFD FBD9 EDF7 FFFD FFFD - E5B5 FFFD FFFD FFFD FFFD FFFD D0AD FFFD - FFFD FFFD FFFD F1F1 -End of Item 0359 - -Begin of Item 035A - Format 1 - srcBegin = 8490 - srcEnd = 84A1 - mappingOffset = 2A6F - Mapping = - E2BD FFFD FFFD FFFD E3C8 FFFD FFFD FFFD - FFFD D9D5 FFFD FFFD DFAA FFFD FFFD FFFD - FFFD DBBC -End of Item 035A - -Begin of Item 035B - Format 1 - srcBegin = 84B2 - srcEnd = 84DA - mappingOffset = 2A81 - Mapping = - F8E4 FFFD FFFD FFFD FFFD FFFD F1FA FFFD - FFFD E5B6 F3EF FFFD FFFD FBDA E1E0 FFFD - D9AC FFFD F5EB FFFD E0B6 FFFD FFFD E9C8 - FFFD CBCF FFFD E3C9 FFFD FFFD FFFD DEEE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E2BE -End of Item 035B - -Begin of Item 035C - Format 1 - srcBegin = 84EC - srcEnd = 84FC - mappingOffset = 2AAA - Mapping = - DCEF FFFD D6A5 FFFD FFFD FFFD FFFD FFFD - E2F1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D6FE -End of Item 035C - -Begin of Item 035D - Format 1 - srcBegin = 8511 - srcEnd = 852F - mappingOffset = 2ABB - Mapping = - D9A1 FFFD D8C0 DCDB FFFD FFFD EDBD DFB8 - FFFD EAA5 FFFD FFFD FFFD D7AD FFFD FFFD - F3F9 FFFD EDF8 FFFD F5C7 FFFD FFFD FFFD - FFFD FFFD FFFD E1CA EBE3 FFFD F2DE -End of Item 035D - -Begin of Item 035E - Format 1 - srcBegin = 853D - srcEnd = 856D - mappingOffset = 2ADA - Mapping = - F8CC FFFD EAD9 FFFD D3C6 FFFD DBE6 FFFD - FFFD FFFD FFFD FFFD F5AF FFFD FFFD FFFD - FFFD CEF0 FFFD FFFD FFFD FFFD E9FE FFFD - FFFD FFFD FFFD FFFD FBB6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E2F2 FFFD - FFFD FFFD FFFD CFF2 F7B9 D9F3 FFFD FFFD - E1CB -End of Item 035E - -Begin of Item 035F - Format 1 - srcBegin = 8584 - srcEnd = 85EA - mappingOffset = 2B0B - Mapping = - DADD FFFD FFFD DAB9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EBFB FFFD CBB9 FFFD FFFD - EDF9 FFFD FFFD FFFD FFFD FFFD FFFD E0E0 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F4C0 FFFD FDBC DFB1 E3EF FFFD - FFFD FFFD FFFD E0A3 FDB9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F0B1 FFFD - FFFD FFFD FFFD FFFD FFFD CDCB FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EDBE FFFD FFFD - FFFD D5C0 E3F0 EDFA FFFD FFFD FFFD FFFD - FFFD E9E4 FFFD FFFD FFFD FFFD FFFD FFFD - D5ED E7DD FFFD FFFD FFFD FFFD FFFD FFFD - D4F6 E5B7 FFFD FFFD FFFD DBE7 E2BF -End of Item 035F - -Begin of Item 0360 - Format 1 - srcBegin = 85F7 - srcEnd = 860A - mappingOffset = 2B72 - Mapping = - EECB FFFD FFFD D7F4 F0DD FFFD FFFD FFFD - CEAB FFFD FFFD E7DE FFFD FFFD FFFD D6D6 - E1CC FFFD FFFD E8B3 -End of Item 0360 - -Begin of Item 0361 - Format 1 - srcBegin = 8616 - srcEnd = 861A - mappingOffset = 2B86 - Mapping = - E5EE DCA2 FFFD FFFD E0D0 -End of Item 0361 - -Begin of Item 0362 - Format 2 - srcBegin = 862D - destBegin = D5B5 -End of Item 0362 - -Begin of Item 0363 - Format 2 - srcBegin = 863F - destBegin = D5A1 -End of Item 0363 - -Begin of Item 0364 - Format 1 - srcBegin = 864E - srcEnd = 8667 - mappingOffset = 2B8B - Mapping = - FBDB FFFD F9CB FFFD FFFD FFFD CBF3 F4A5 - FFFD FFFD FFFD FFFD FFFD FAC8 D6D7 FFFD - E9E5 FBDC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FDD0 -End of Item 0364 - -Begin of Item 0365 - Format 2 - srcBegin = 8679 - destBegin = FBF6 -End of Item 0365 - -Begin of Item 0366 - Format 1 - srcBegin = 868A - srcEnd = 8693 - mappingOffset = 2BA5 - Mapping = - DAA5 FFFD DBBD FFFD FFFD FFFD FFFD FFFD - FFFD ECE2 -End of Item 0366 - -Begin of Item 0367 - Format 1 - srcBegin = 86A3 - srcEnd = 86A9 - mappingOffset = 2BAF - Mapping = - CDF7 F0DE FFFD FFFD FFFD FFFD F6C9 -End of Item 0367 - -Begin of Item 0368 - Format 1 - srcBegin = 86C7 - srcEnd = 86ED - mappingOffset = 2BB6 - Mapping = - DEEF FFFD FFFD FFFD D3B1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FCEE FFFD FFFD - FFFD FFFD E8C3 FFFD F1C8 FFFD FFFD FFFD - CEF1 FFFD FFFD FFFD FFFD F9ED FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F2F4 -End of Item 0368 - -Begin of Item 0369 - Format 1 - srcBegin = 86FE - srcEnd = 8708 - mappingOffset = 2BDD - Mapping = - E4B6 FFFD F5B9 FFFD DCF0 E3F1 FFFD FFFD - FFFD FFFD E8A5 -End of Item 0369 - -Begin of Item 036A - Format 1 - srcBegin = 8718 - srcEnd = 871C - mappingOffset = 2BE8 - Mapping = - F2BB FFFD DEA4 FFFD DACC -End of Item 036A - -Begin of Item 036B - Format 1 - srcBegin = 874E - srcEnd = 8768 - mappingOffset = 2BED - Mapping = - CAE9 FFFD FFFD FFFD FFFD FFFD FFFD E3DA - FFFD FCD9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD EADA FFFD FFFD FFFD FFFD FFFD FFFD - F9C4 FFFD E3A4 -End of Item 036B - -Begin of Item 036C - Format 1 - srcBegin = 8774 - srcEnd = 878D - mappingOffset = 2C08 - Mapping = - FBDD FFFD EFCA FFFD E8C4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D5CC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD EBD7 -End of Item 036C - -Begin of Item 036D - Format 1 - srcBegin = 879F - srcEnd = 87A2 - mappingOffset = 2C22 - Mapping = - D9AD FFFD FFFD FBAB -End of Item 036D - -Begin of Item 036E - Format 1 - srcBegin = 87B3 - srcEnd = 87C4 - mappingOffset = 2C26 - Mapping = - D3D9 FFFD FFFD FFFD FFFD FFFD FFFD D5A2 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F6DE -End of Item 036E - -Begin of Item 036F - Format 2 - srcBegin = 87E0 - destBegin = DAF6 -End of Item 036F - -Begin of Item 0370 - Format 1 - srcBegin = 87EC - srcEnd = 8805 - mappingOffset = 2C38 - Mapping = - E0D1 FFFD FFFD E9A8 FFFD FFFD F5F9 FFFD - FFFD FFFD FFFD FFFD FFFD FAAF FFFD EBFC - FFFD FFFD E0EA FFFD FFFD FFFD FFFD FFFD - FFFD E3B2 -End of Item 0370 - -Begin of Item 0371 - Format 1 - srcBegin = 881F - srcEnd = 8823 - mappingOffset = 2C52 - Mapping = - D5C5 FFFD FFFD F1E3 D5EE -End of Item 0371 - -Begin of Item 0372 - Format 1 - srcBegin = 8831 - srcEnd = 889E - mappingOffset = 2C57 - Mapping = - CDCC FFFD FFFD FFFD FFFD EDD9 FFFD FFFD - FFFD FFFD D8C1 FFFD FFFD FFFD FFFD FAEC - FFFD FFFD FFFD FFFD FFFD F1EB FFFD FFFD - FFFD FFFD FFFD FABC E6E2 FFFD FFFD FFFD - FFFD FAE5 E2FA FFFD FFFD FFFD CAB6 FFFD - E4B7 FFFD EADB FFFD F5FA FFFD FFFD FFFD - FBAC CFC3 EBFD FFFD FFFD FFFD FFFD F8FA - FFFD FFFD DFB9 FFFD FFFD FFFD FFFD E1F1 - FFFD D2A4 FFFD FFFD FFFD FFFD F5FB FFFD - FFFD FFFD FFFD FFFD FFFD D0DA D0DB FFFD - EABE D9B1 FFFD FFFD FFFD FFFD FFFD CAB7 - FFFD FFFD D3E7 FFFD F8E5 FFFD FFFD FFFD - FFFD D3B2 FFFD FFFD FFFD E2C0 F2DF FFFD - FFFD FFFD FFFD FFFD FFFD CDE5 -End of Item 0372 - -Begin of Item 0373 - Format 1 - srcBegin = 88AB - srcEnd = 88B4 - mappingOffset = 2CC5 - Mapping = - F9AC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CDCD -End of Item 0373 - -Begin of Item 0374 - Format 1 - srcBegin = 88C1 - srcEnd = 88C2 - mappingOffset = 2CCF - Mapping = - EEAE D6AE -End of Item 0374 - -Begin of Item 0375 - Format 1 - srcBegin = 88CF - srcEnd = 8919 - mappingOffset = 2CD1 - Mapping = - D7EA FFFD FFFD FFFD FFFD E7E0 EBAE FFFD - FFFD FFFD CFD9 FFFD FFFD DCCD EDFB FFFD - DEF0 FFFD D7EB FFFD FFFD FFFD FFFD FFFD - FFFD DEA5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DFD7 DBD0 DBD1 FFFD - FFFD D5A3 FFFD FFFD FFFD FFFD F0B2 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - DCDC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CAE8 FFFD F8E6 DCCE FFFD FFFD FFFD - FFFD EADC DBD2 -End of Item 0375 - -Begin of Item 0376 - Format 1 - srcBegin = 8925 - srcEnd = 892A - mappingOffset = 2D1C - Mapping = - E9B3 FFFD FFFD FFFD FFFD F7DB -End of Item 0376 - -Begin of Item 0377 - Format 1 - srcBegin = 8936 - srcEnd = 8944 - mappingOffset = 2D22 - Mapping = - E3A8 FFFD D7AE FFFD FFFD E0E1 FFFD FFFD - FFFD FFFD FFFD CBBA FFFD FFFD E5D1 -End of Item 0377 - -Begin of Item 0378 - Format 1 - srcBegin = 895F - srcEnd = 8972 - mappingOffset = 2D31 - Mapping = - D0DC FFFD FFFD FFFD FFFD D5C1 FFFD FFFD - FFFD FFFD FFFD D8CA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E3A9 -End of Item 0378 - -Begin of Item 0379 - Format 1 - srcBegin = 897F - srcEnd = 89C0 - mappingOffset = 2D45 - Mapping = - E0A4 FFFD E9A9 FFFD D3C7 FFFD FFFD DCDD - F8AE FFFD FFFD FFFD CCB8 FFFD FFFD FFFD - D0AE FFFD FFFD FFFD D8F2 FFFD FFFD E3CA - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CCAF FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D4AD F6D1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D0CC FFFD FFFD FFFD FFFD - FFFD FFFD FFFD CAC6 FFFD FFFD D5C2 FFFD - FFFD CEBA -End of Item 0379 - -Begin of Item 037A - Format 2 - srcBegin = 89D2 - destBegin = CAC7 -End of Item 037A - -Begin of Item 037B - Format 2 - srcBegin = 89E3 - destBegin = FAB0 -End of Item 037B - -Begin of Item 037C - Format 1 - srcBegin = 89F4 - srcEnd = 8A3B - mappingOffset = 2D87 - Mapping = - DFD8 FFFD FFFD FFFD F5BA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E5EB FFFD EFF4 DDB5 - FFFD FFFD FFFD FFFD CDAA FFFD E3F2 FFFD - FBF7 FFFD F7D0 FFFD FFFD FFFD FFFD FDBA - FFFD FFFD FDE1 F6FE D1C0 FFFD FFFD E8C5 - FFFD E4B8 FFFD E1E8 FFFD FFFD FFFD CCC1 - FFFD D2ED FFFD FFFD FFFD FFFD DBBE FFFD - FFFD E0E2 FFFD FFFD FFFD FAC9 FFFD FFFD - E1CD FFFD CAB8 FFFD FFFD FFFD F2E0 F1C9 -End of Item 037C - -Begin of Item 037D - Format 1 - srcBegin = 8A50 - srcEnd = 8A79 - mappingOffset = 2DCF - Mapping = - DEF1 FFFD FFFD FFFD F0DF F8C4 FFFD FFFD - FFFD FFFD FFFD EECC FFFD FFFD DEF2 FFFD - E7C9 FFFD E2F3 E7E1 FFFD FFFD E3CB FFFD - FFFD E3CC FFFD FFFD FFFD CFF8 EFAC FFFD - FDFE FCA5 FAB1 DFD9 FFFD E0D2 FFFD FFFD - FFFD F4DA -End of Item 037D - -Begin of Item 037E - Format 1 - srcBegin = 8A85 - srcEnd = 8B9A - mappingOffset = 2DF9 - Mapping = - F1CA FFFD CEA3 FFFD FFFD FFFD FFFD F2BC - ECE3 FFFD FFFD FFFD FFFD FFFD E0A5 FFFD - F7AB FFFD FFFD EBAF FFFD FFFD FFFD FFFD - FFFD E5DE FFFD E1A4 CDAB FFFD D9F4 E8A6 - CDCE E1E9 FFFD FCEF FFFD E0E3 FFFD FFFD - FFFD FFFD FFFD E2C1 FFFD CEA4 FFFD FFFD - FFFD FFFD FFFD FFFD DEA6 FFFD FFFD EBFE - FFFD EBDD F0E0 FFFD FFFD F4DB FFFD E2F4 - FFFD FFFD D3C8 FFFD FFFD FFFD F4EB FFFD - EEB5 FFFD F5D8 FFFD FFFD D5DF FFFD FFFD - FFFD D6E5 FFFD FFFD FFFD FFFD EBB0 F4E3 - FFFD FFFD FFFD FFFD E3CD FFFD FFFD FFFD - FFFD F4F4 FAB2 FFFD FFFD EFF5 CADF FFFD - EBB1 EDBF FFFD FFFD FDC9 FFFD FFFD FFFD - FFFD E4A6 F9A4 F0B3 FFFD E5EC FFFD FFFD - FFFD D1E7 FFFD D9C7 E4D7 EADD FFFD D4F7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DABA FFFD DACD FFFD FFFD FFFD F9CC - FFFD E1DA DBBF FFFD CCC5 ECD0 CBBB FFFD - DEF3 FFFD FFFD E9AA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D9C8 FFFD FFFD EEE3 D7BD - FFFD FFFD FFFD FFFD FFFD FFFD CFC4 FFFD - FFFD FFFD FFFD FFFD D0CD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FCA6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F1FB FFFD FFFD FFFD - FFFD FDD2 D1C1 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E3DB FFFD D3C9 FFFD DCCF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CCED FFFD FFFD FFFD FFFD FFFD DEA7 - FFFD FFFD E6BB ECA1 FFFD FFFD FFFD CCB9 - FFFD FFFD FBDE FFFD FFFD FFFD FFFD FFFD - E7E2 FFFD FFFD D4C1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD DCA8 FFFD FFFD - FFFD FFFD FFFD E2C2 FFFD F3D8 E5D3 FFFD - FFFD F3D9 FFFD FFFD FFFD F3C6 -End of Item 037E - -Begin of Item 037F - Format 1 - srcBegin = 8C37 - srcEnd = 8C6B - mappingOffset = 2F0F - Mapping = - CDDB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CDAC FFFD FCC3 FFFD FFFD FFFD FFFD D4E7 - FFFD D1C2 FFFD F9A5 FFFD E8D5 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E3CE FFFD - FFFD FFFD FFFD D4CA FFFD FFFD FFFD FFFD - FFFD FFFD DFDA FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FBDF E7E3 -End of Item 037F - -Begin of Item 0380 - Format 1 - srcBegin = 8C79 - srcEnd = 8C8C - mappingOffset = 2F44 - Mapping = - F8FB E3CF FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F5B0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D8E7 FFFD D9C9 -End of Item 0380 - -Begin of Item 0381 - Format 1 - srcBegin = 8C9D - srcEnd = 8D16 - mappingOffset = 2F58 - Mapping = - F8AF EFF6 FFFD DDB6 EEAF CDF8 FFFD FFFD - FFFD FFFD DEB8 FCA7 F7FC F7B1 CEBB F4A1 - FFFD FFFD EECD E1AE FFFD FFFD ECC3 CFFE - FFFD F8BF D8E2 D3E8 FFFD FFFD DEA8 F4E4 - ECC2 FFFD D9F5 F9C5 DDD3 D6F1 ECFC FCF0 - FFFD FFFD EDC0 CAB9 FFFD EEE4 FFFD FFFD - FFFD FFFD FFFD FFFD F2E1 FFFD DEB9 FFFD - FFFD FFFD FFFD FFFD FFFD D6F2 FFFD DEF4 - FFFD DFDB FFFD DBD3 FFFD FAE7 D8E3 F4C1 - FFFD DDB7 FFFD FFFD FFFD F2F5 FFFD FFFD - D4AE FFFD FFFD FFFD FFFD FFFD FFFD D6F3 - FFFD FFFD FFFD FFFD FFFD FFFD DDB8 CFC5 - DFDF FFFD FFFD FFFD FFFD FFFD FFFD F2BE - F6A1 FFFD EBCB F1FC FFFD F3C7 FFFD FFFD - E0EB FFFD FFFD FFFD FFFD FFFD EDFC FFFD - FFFD E1DB -End of Item 0381 - -Begin of Item 0382 - Format 1 - srcBegin = 8D64 - srcEnd = 8D77 - mappingOffset = 2FD2 - Mapping = - EEE5 FFFD DEF5 FFFD FFFD FFFD FFFD FAD3 - FFFD FFFD FFFD FFFD F1CB FFFD FFFD D0AF - DDB9 FFFD FFFD D1C3 -End of Item 0382 - -Begin of Item 0383 - Format 1 - srcBegin = 8D85 - srcEnd = 8D8A - mappingOffset = 2FE6 - Mapping = - F5B1 FFFD FFFD FFFD FFFD EAC6 -End of Item 0383 - -Begin of Item 0384 - Format 1 - srcBegin = 8D99 - srcEnd = 8DCF - mappingOffset = 2FEC - Mapping = - F0E1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F6AC FFFD FFFD FFFD FFFD F5D9 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F0EB FFFD FFFD FFFD FFFD FFFD - FFFD DDBA FFFD FFFD FFFD F2BF FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F7C5 FFFD FFFD - FFFD FFFD DBA2 F2F6 FFFD FFFD CABA -End of Item 0384 - -Begin of Item 0385 - Format 1 - srcBegin = 8DDB - srcEnd = 8DF3 - mappingOffset = 3023 - Mapping = - F7F5 FFFD CBE5 FFFD FFFD FFFD EEE6 FFFD - E0D3 FFFD FFFD FFFD FFFD CEA5 FFFD FFFD - FFFD FFFD FFFD FFFD D6D8 FFFD FFFD FFFD - D4AF -End of Item 0385 - -Begin of Item 0386 - Format 1 - srcBegin = 8E0A - srcEnd = 8E10 - mappingOffset = 303C - Mapping = - E9C9 FFFD FFFD FFFD FFFD D3CE F4C2 -End of Item 0386 - -Begin of Item 0387 - Format 2 - srcBegin = 8E1E - destBegin = CBE6 -End of Item 0387 - -Begin of Item 0388 - Format 1 - srcBegin = 8E2A - srcEnd = 8E35 - mappingOffset = 3043 - Mapping = - F1A1 FFFD FFFD FFFD FFFD FFFD EBB2 FFFD - FFFD FFFD FFFD F1A2 -End of Item 0388 - -Begin of Item 0389 - Format 1 - srcBegin = 8E42 - srcEnd = 8E4A - mappingOffset = 304F - Mapping = - EBB3 FFFD F0B4 FFFD FFFD CBF4 D4B0 F3B2 - FBB7 -End of Item 0389 - -Begin of Item 038A - Format 1 - srcBegin = 8E59 - srcEnd = 8E60 - mappingOffset = 3058 - Mapping = - F5EC FFFD FFFD FFFD FFFD FFFD EEE7 F4B2 -End of Item 038A - -Begin of Item 038B - Format 1 - srcBegin = 8E74 - srcEnd = 8E8D - mappingOffset = 3060 - Mapping = - F5ED FFFD CFF3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F0E2 FFFD FFFD - FFFD FFFD FFFD EECE FFFD FFFD F1CC FFFD - FFFD E5B8 -End of Item 038B - -Begin of Item 038C - Format 1 - srcBegin = 8EAA - srcEnd = 8EAC - mappingOffset = 307A - Mapping = - D7F5 E3F3 CFE5 -End of Item 038C - -Begin of Item 038D - Format 1 - srcBegin = 8EC0 - srcEnd = 8ED2 - mappingOffset = 307D - Mapping = - CFC6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F3B3 E4D8 CFF9 CFDA FFFD FFFD - FFFD FFFD FACD -End of Item 038D - -Begin of Item 038E - Format 2 - srcBegin = 8EDF - destBegin = E6E3 -End of Item 038E - -Begin of Item 038F - Format 2 - srcBegin = 8EEB - destBegin = F2E2 -End of Item 038F - -Begin of Item 0390 - Format 1 - srcBegin = 8EF8 - srcEnd = 8F4E - mappingOffset = 3090 - Mapping = - F5EE FFFD FFFD CABB FFFD FFFD E3DC FFFD - FFFD FFFD FFFD CEF2 FFFD D6D9 FFFD FFFD - FFFD EEB0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F4E5 D8C2 DCD0 CCEE FFFD FFFD - FFFD FFFD FFFD D5E0 F6CA FDCA D8D6 F4CF - FFFD FFFD FFFD FFFD FFFD FFFD D6A6 DCBE - FFFD DBD4 D7C7 FFFD FFFD FFFD FFFD F2FE - FFFD FFFD FFFD F1CD FFFD FFFD FFFD FFFD - E2C3 DCDE FFFD DCDF FFFD FFFD EFAD E6AB - FFFD FFFD FFFD FFFD F9DD EABF FFFD FFFD - FFFD EFAE FFFD FFFD FFFD F4D0 CEF3 -End of Item 0390 - -Begin of Item 0391 - Format 1 - srcBegin = 8F5D - srcEnd = 8F62 - mappingOffset = 30E7 - Mapping = - E6AC FFFD CEDE FFFD FFFD D5F9 -End of Item 0391 - -Begin of Item 0392 - Format 1 - srcBegin = 8F9B - srcEnd = 8FB2 - mappingOffset = 30ED - Mapping = - E3F4 CDD0 FFFD FFFD FFFD FFFD FFFD FFFD - D5B8 FFFD FFFD F7FD FFFD DCA9 FFFD FFFD - FFFD FFFD DEF6 FFFD DCAA F2E3 E9B4 D2DC -End of Item 0392 - -Begin of Item 0393 - Format 1 - srcBegin = 8FC2 - srcEnd = 8FD4 - mappingOffset = 3105 - Mapping = - E9E6 FFFD FFFD E3F6 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E7CA FFFD FFFD D0CE - FFFD FFFD DAF7 -End of Item 0393 - -Begin of Item 0394 - Format 1 - srcBegin = 8FE6 - srcEnd = 90CA - mappingOffset = 3118 - Mapping = - CABC FFFD FFFD FFFD EEE8 DADE FFFD F2F7 - FFFD FFFD E2FB FFFD CCA6 FFFD FFFD FFFD - FFFD DABB FFFD EEE9 FFFD FFFD FFFD F5DA - FFFD FFFD F7DC E1EA CEC1 D4B1 FFFD FDB1 - E6BD FFFD FBAD FFFD FFFD F8E7 FFFD E1CE - FFFD F7E2 F5EF CFC7 FFFD FFFD D4B2 CCEF - FFFD D4E8 FFFD EECF F7D7 FFFD FFFD E0A6 - D6C1 E1DC F0E3 F1E4 DCF1 D6A7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F4F5 FFFD FFFD F1CE F2E4 FFFD FFFD D0B0 - FFFD FFFD ECEF FFFD FFFD FFFD F9BA FFFD - EBB5 FFFD FFFD D4ED E2C4 FFFD FFFD FFFD - FFFD E9E7 FFFD FFFD EBB4 EAA1 FFFD F8BC - CEA6 FFFD F9C6 FCDA FFFD D4B3 D3B9 EADE - FFFD FFFD FFFD E9AB FFFD FFFD E1E1 D3CF - F4F6 FFFD EAC0 E1CF FFFD CCBA FFFD FFFD - FFFD FFFD FFFD EEEA FFFD FFFD FFFD F0E4 - F3B4 D4EE FFFD FFFD F2C0 FFFD FFFD F1E5 - FFFD F4C3 E0D4 FFFD EBB6 FFFD D7A1 CBE8 - FFFD F9AD E9AD D8E4 FAB3 E2C5 FCBD FFFD - FFFD ECC4 D8B1 FFFD DCAB FFFD FFFD FFFD - FFFD D5A4 FFFD EBE9 FFFD FFFD FFFD E8BB - FFFD FFFD FFFD D8D7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FBAE D1E1 FFFD FFFD - DBC0 FFFD F5BE FFFD DEF7 FFFD FFFD FFFD - FFFD CAFB F7C6 CFC8 FFFD FFFD FFFD E1D0 - FFFD FFFD EED0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E9F4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CEF4 -End of Item 0394 - -Begin of Item 0395 - Format 1 - srcBegin = 90DE - srcEnd = 9102 - mappingOffset = 31FD - Mapping = - D5CD FFFD FFFD CFDB FFFD FFFD FFFD FFFD - FFFD FFFD DDBB FFFD FFFD FFFD FFFD CEAC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E9E8 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D4B4 - FFFD FFFD FFFD FFFD E4C7 -End of Item 0395 - -Begin of Item 0396 - Format 1 - srcBegin = 9112 - srcEnd = 9119 - mappingOffset = 3222 - Mapping = - F5DB FFFD FFFD FAC1 FFFD FFFD FFFD DEA9 -End of Item 0396 - -Begin of Item 0397 - Format 1 - srcBegin = 9127 - srcEnd = 9132 - mappingOffset = 322A - Mapping = - D4F8 FFFD FFFD FFFD FFFD FFFD EFF7 FFFD - FFFD FFFD FFFD D3B3 -End of Item 0397 - -Begin of Item 0398 - Format 1 - srcBegin = 9149 - srcEnd = 9152 - mappingOffset = 3236 - Mapping = - EBB7 EFF8 F5DC EDCC DBD5 F1CF FFFD FFFD - FFFD F1D0 -End of Item 0398 - -Begin of Item 0399 - Format 1 - srcBegin = 9162 - srcEnd = 9178 - mappingOffset = 3240 - Mapping = - F5B2 FFFD FFFD FFFD FFFD FFFD FFFD D9AE - D5AC FFFD E2C6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FDA3 FFFD FBE5 DFAB -End of Item 0399 - -Begin of Item 039A - Format 1 - srcBegin = 9187 - srcEnd = 919C - mappingOffset = 3257 - Mapping = - E2F5 FFFD F6AD FFFD F5B3 FFFD F0B5 FFFD - FFFD FFFD FFFD E1A5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F5DD -End of Item 039A - -Begin of Item 039B - Format 1 - srcBegin = 91AB - srcEnd = 91F5 - mappingOffset = 326D - Mapping = - ECA2 EDFD FFFD F5B4 FBB8 FFFD DBA3 FFFD - FFFD D6CA CBD9 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E5D4 FFFD FFFD - FFFD FFFD FFFD FFFD F3FA FFFD EBB8 FFFD - E0B7 D7EC F1EC E5AF D5E1 D7ED D1D1 FFFD - FFFD FFFD FFFD FFFD E1F2 EFF9 FFFD FFFD - FFFD DDBC F6DC FFFD FFFD FFFD FFFD FFFD - F0E5 FFFD FFFD FFFD F4C4 FFFD FFFD E9E9 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F3FB -End of Item 039B - -Begin of Item 039C - Format 1 - srcBegin = 920D - srcEnd = 921E - mappingOffset = 32B8 - Mapping = - D4EF FFFD FFFD CCA2 F7FE DFBC FFFD FFFD - FFFD FFFD EBCD FFFD FFFD FFFD FFFD FFFD - FFFD D0B7 -End of Item 039C - -Begin of Item 039D - Format 1 - srcBegin = 9234 - srcEnd = 9249 - mappingOffset = 32CA - Mapping = - D6C2 FFFD FFFD FFFD FFFD FFFD E8AD FFFD - FFFD FFFD FFFD EFAF CBA5 FFFD FFFD FFFD - FFFD CBE9 FFFD FFFD FFFD FAE8 -End of Item 039D - -Begin of Item 039E - Format 1 - srcBegin = 9257 - srcEnd = 9266 - mappingOffset = 32E0 - Mapping = - CCC6 FFFD FFFD FFFD E6E7 FFFD FFFD EAC7 - FFFD FFFD FFFD DBA4 FFFD CFC9 E2FC EFFA -End of Item 039E - -Begin of Item 039F - Format 1 - srcBegin = 9280 - srcEnd = 9285 - mappingOffset = 32F0 - Mapping = - EBDE FFFD FFFD F5C8 FFFD D4DE -End of Item 039F - -Begin of Item 03A0 - Format 1 - srcBegin = 9291 - srcEnd = 929C - mappingOffset = 32F6 - Mapping = - E0D5 FFFD EFB0 FFFD FFFD E2C7 FFFD D9AF - FFFD FFFD FFFD F9E7 -End of Item 03A0 - -Begin of Item 03A1 - Format 1 - srcBegin = 92B3 - srcEnd = 92B9 - mappingOffset = 3302 - Mapping = - E7E5 FFFD FFFD CFCA E1D1 FFFD E2C8 -End of Item 03A1 - -Begin of Item 03A2 - Format 1 - srcBegin = 92CC - srcEnd = 92D2 - mappingOffset = 3309 - Mapping = - EFFB FFFD FFFD FAF9 FFFD FFFD DCF2 -End of Item 03A2 - -Begin of Item 03A3 - Format 1 - srcBegin = 92E4 - srcEnd = 92EA - mappingOffset = 3310 - Mapping = - E0A7 FFFD FFFD FFFD FFFD FFFD F8E8 -End of Item 03A3 - -Begin of Item 03A4 - Format 1 - srcBegin = 92F8 - srcEnd = 9304 - mappingOffset = 3317 - Mapping = - CBEA FFFD FFFD FFFD CBBC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D6E2 -End of Item 03A4 - -Begin of Item 03A5 - Format 1 - srcBegin = 9310 - srcEnd = 932F - mappingOffset = 3324 - Mapping = - F5DE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F5DF FFFD EEB6 FFFD FFFD FFFD E2F6 D3CA - EFFC D1C4 EFB1 FFFD D1C5 FFFD D0DE FFFD - D9E1 FFFD FFFD E0B8 FFFD FFFD CDD1 F3B9 -End of Item 03A5 - -Begin of Item 03A6 - Format 1 - srcBegin = 9348 - srcEnd = 935B - mappingOffset = 3344 - Mapping = - E7CC FFFD D6A8 CEA7 FFFD D4B5 FFFD FFFD - FFFD FFFD FFFD FFFD E4C8 FFFD FFFD FFFD - FFFD FFFD FFFD D3B4 -End of Item 03A6 - -Begin of Item 03A7 - Format 1 - srcBegin = 936E - srcEnd = 937E - mappingOffset = 3358 - Mapping = - EBB9 FFFD FFFD FFFD FFFD FFFD FFFD CBF5 - FFFD FFFD FFFD FFFD FFFD FFFD F6DD FFFD - F1A3 -End of Item 03A7 - -Begin of Item 03A8 - Format 1 - srcBegin = 938C - srcEnd = 93B0 - mappingOffset = 3369 - Mapping = - CCC7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E9CA FFFD E1F0 FFFD FFFD FFFD F5E0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FBAF - FFFD FFFD FFFD CBD1 FFFD FFFD FFFD FFFD - FBE0 F2E5 FFFD FFFD ECF0 -End of Item 03A8 - -Begin of Item 03A9 - Format 2 - srcBegin = 93C3 - destBegin = F0EC -End of Item 03A9 - -Begin of Item 03AA - Format 2 - srcBegin = 93D1 - destBegin = EEEB -End of Item 03AA - -Begin of Item 03AB - Format 1 - srcBegin = 93DE - srcEnd = 93E4 - mappingOffset = 338E - Mapping = - E9CB FFFD FFFD CCF0 FFFD FFFD D7AF -End of Item 03AB - -Begin of Item 03AC - Format 2 - srcBegin = 93F6 - destBegin = F3A1 -End of Item 03AC - -Begin of Item 03AD - Format 2 - srcBegin = 9404 - destBegin = FCF5 -End of Item 03AD - -Begin of Item 03AE - Format 2 - srcBegin = 9418 - destBegin = F1A4 -End of Item 03AE - -Begin of Item 03AF - Format 1 - srcBegin = 9425 - srcEnd = 9438 - mappingOffset = 3395 - Mapping = - E0D6 FFFD FFFD FFFD FFFD FFFD EFB2 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F4D1 FFFD FFFD F7A1 -End of Item 03AF - -Begin of Item 03B0 - Format 2 - srcBegin = 9444 - destBegin = F1D1 -End of Item 03B0 - -Begin of Item 03B1 - Format 1 - srcBegin = 9451 - srcEnd = 945B - mappingOffset = 33A9 - Mapping = - CAFC CAFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CECE -End of Item 03B1 - -Begin of Item 03B2 - Format 1 - srcBegin = 947D - srcEnd = 947F - mappingOffset = 33B4 - Mapping = - F3C8 FFFD F3BA -End of Item 03B2 - -Begin of Item 03B3 - Format 1 - srcBegin = 9577 - srcEnd = 95E2 - mappingOffset = 33B7 - Mapping = - EDFE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DAA6 FFFD FFFD E0EC FFFD FFFD FFFD - FFFD FFFD F8CD FFFD CBD2 FFFD FFFD FFFD - EBCE FFFD F9D8 F9D9 CAE0 DACA FFFD FFFD - FFFD CBA6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CAC8 F9EE DBEC FFFD - FFFD D0B1 FFFD FFFD FFFD FFFD D5EF FFFD - FFFD FFFD E6F3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E7A2 E4D9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E4E1 FFFD FFFD FCC4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F9EF CFF4 F7E6 - FFFD FFFD FFFD FFFD FFFD CEBC FFFD FFFD - FFFD FFFD F4C5 DCA3 -End of Item 03B3 - -Begin of Item 03B4 - Format 1 - srcBegin = 961C - srcEnd = 977A - mappingOffset = 3423 - Mapping = - DDBD FFFD FFFD FFFD FFFD F4C6 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F8A1 FFFD - FFFD FFFD E8D6 FFFD FFFD FFFD DBC1 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F0E6 - FFFD FFFD FFFD E4B9 F6ED FFFD F9AE FFFD - DDBE FFFD FFFD FFFD FFFD FFFD FFFD D7B0 - D8E8 CBBD FFFD FFFD F9DA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F8CE - F9F0 E0ED E3B3 F4B3 FFFD FFFD EAC2 F2E6 - F0B6 FFFD FFFD FFFD FFFD FFFD DBD6 FFFD - FFFD FFFD FFFD FFFD EBE4 FFFD FFFD F2E7 - FFFD D7D5 D4B6 F9E8 D7C1 FFFD FFFD FFFD - FFFD E5D5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E9EA D7CC FFFD FFFD FFFD D3E9 E2C9 - FFFD FCDB CDAD FFFD FFFD FFFD FFFD FFFD - CCB0 EAA2 FFFD FFFD E4F6 D0C0 FFFD F0B7 - EEA1 FFFD FFFD FFFD FFFD FFFD FFFD D7F6 - FFFD FFFD FFFD E2CA E2CB FFFD FACF FFFD - FFFD FFFD FFFD FFFD FFFD EBDF FFFD FFFD - FFFD FFFD FFFD D6CB FFFD FFFD FFFD F4B4 - FFFD FFFD FFFD FFFD EDCD E4D2 FFFD FFFD - EAA9 E4BA F3A2 CDD2 FFFD F6CB FFFD F1E6 - EDC1 E8BC EED1 FFFD FFFD FFFD FFFD FFFD - FFFD F0E7 E2CC FFFD FFFD E4AA FFFD F5E1 - EDDA FFFD FFFD FFFD FFFD FFFD D7EE D1F1 - FFFD FFFD FFFD FFFD E9EB E9EC E0E4 FFFD - FFFD FFFD FFFD DAA7 DDD4 FFFD EAA3 FFFD - FFFD FFFD D6C3 D6F4 FFFD DADF FFFD EFB3 - FFFD FFFD FFFD FFFD E2CD FFFD FFFD FFFD - FFFD FFFD EFFD F2E8 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EFC5 FFFD E7E7 - FFFD FFFD D7FD FFFD FFFD E7CE FFFD FFFD - DFDC FFFD F9C7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D9F6 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DFAC FFFD D6DA FFFD - FFFD FFFD FFFD FFFD FFFD DCA4 FFFD FFFD - FFFD F0B8 FFFD FFFD FFFD FFFD D5FA FFFD - E4F7 FFFD FFFD FFFD D6C4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4EC FFFD FFFD - FFFD FFFD EFFE FFFD FFFD FFFD FFFD FFFD - F0A1 FFFD DEAA FFFD FFFD DABC D8FC FFFD - FFFD FFFD FFFD FFFD FFFD FAD4 FFFD FFFD - FFFD ECE5 FFFD FFFD FFFD FFFD FFFD FFFD - FCA8 FFFD FFFD ECE6 FFFD FFFD D8CB -End of Item 03B4 - -Begin of Item 03B5 - Format 1 - srcBegin = 978B - srcEnd = 978F - mappingOffset = 3582 - Mapping = - FBB9 FFFD E4D3 FFFD CDF9 -End of Item 03B5 - -Begin of Item 03B6 - Format 1 - srcBegin = 97A0 - srcEnd = 97AD - mappingOffset = 3587 - Mapping = - CFD3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CAEA FFFD FFFD CFD4 FFFD F8BD -End of Item 03B6 - -Begin of Item 03B7 - Format 1 - srcBegin = 97C6 - srcEnd = 97DC - mappingOffset = 3595 - Mapping = - F4C7 FFFD FFFD FFFD FFFD EADF FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F9DB FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D4B7 -End of Item 03B7 - -Begin of Item 03B8 - Format 1 - srcBegin = 97F3 - srcEnd = 9818 - mappingOffset = 35AC - Mapping = - EBE5 FFFD FFFD E1D2 FFFD FFFD FFFD FFFD - EAA4 FFFD FFFD FFFD FAC2 FBE1 FAED F0A2 - CCF1 FFFD FAA3 E2F7 FFFD E2CE FFFD E9F5 - FFFD E1EB FFFD FFFD FFFD E7E8 E8D7 DAF8 - D4CB FFFD FFFD FFFD F7F6 D6C5 -End of Item 03B8 - -Begin of Item 03B9 - Format 1 - srcBegin = 982D - srcEnd = 986F - mappingOffset = 35D2 - Mapping = - D4E9 FFFD FFFD FAFA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD CCF2 F7DD FFFD DEBA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CEA8 FFFD FFFD FFFD FFFD FFFD F0B9 - E4FE E4C9 FFFD FFFD FFFD FFFD FFFD E4D4 - FFFD FFFD FFFD EAC3 FFFD EFB4 FFFD FFFD - FFFD D7BE FFFD FFFD FFFD FFFD FFFD FFFD - FBE2 FFFD CDD3 FFFD FFFD FFFD EFB5 FFFD - FFFD FFFD FAE9 -End of Item 03B9 - -Begin of Item 03BA - Format 1 - srcBegin = 98A8 - srcEnd = 98B1 - mappingOffset = 3615 - Mapping = - F9A6 FFFD FFFD FFFD FFFD FFFD FFFD DFBD - FFFD F7C7 -End of Item 03BA - -Begin of Item 03BB - Format 1 - srcBegin = 98C4 - srcEnd = 98C7 - mappingOffset = 361F - Mapping = - F8FD FFFD FFFD F8FC -End of Item 03BB - -Begin of Item 03BC - Format 1 - srcBegin = 98DB - srcEnd = 9928 - mappingOffset = 3623 - Mapping = - DEAB DBE8 FFFD FFFD E3DD FFFD E1E2 D1C6 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F6D0 EBE6 DAF9 FFFD FFFD FFFD - FFFD ECC7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DEF8 F8E9 E3DE FFFD FFFD FFFD FFFD - CEF5 FFFD FFFD FFFD FFFD FFFD FAC3 E5D7 - FFFD ECC8 FFFD FFFD FFFD F3C9 FFFD FFFD - E4BB FFFD FFFD FFFD FFFD E6AE FFFD FFFD - FFFD FFFD FFFD EFB6 FFFD DCBF FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CEBD -End of Item 03BC - -Begin of Item 03BD - Format 1 - srcBegin = 9945 - srcEnd = 9957 - mappingOffset = 3671 - Mapping = - D8C3 FFFD FFFD FFFD D0CF FFFD CFFA F3CA - E0D7 FFFD FFFD FFFD D1C7 E9AE FFFD E8BD - FFFD FFFD FAC4 -End of Item 03BD - -Begin of Item 03BE - Format 1 - srcBegin = 9996 - srcEnd = 99C1 - mappingOffset = 3684 - Mapping = - E2CF FFFD FFFD FAC5 FFFD FFFD FFFD F9B8 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD DCE0 - FFFD FFFD FBB0 FFFD FFFD FFFD D8A9 E5DF - F9A7 FFFD FFFD F6EE FFFD F6CC E2F8 FFFD - FFFD FFFD FFFD ECF1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD DAE0 -End of Item 03BE - -Begin of Item 03BF - Format 1 - srcBegin = 99D0 - srcEnd = 99DF - mappingOffset = 36B0 - Mapping = - F1D2 D2CC CFCB FFFD FFFD CABD FFFD FFFD - FFFD DDBF FFFD FFFD FFFD F6EF FFFD DEF9 -End of Item 03BF - -Begin of Item 03C0 - Format 1 - srcBegin = 99ED - srcEnd = 99F1 - mappingOffset = 36C0 - Mapping = - FAB4 FFFD FFFD FFFD D5AD -End of Item 03C0 - -Begin of Item 03C1 - Format 1 - srcBegin = 99FF - srcEnd = 9A19 - mappingOffset = 36C5 - Mapping = - F1E7 FFFD DEBE FFFD FFFD FFFD FFFD FFFD - FFFD DCC0 FFFD FFFD FFFD FFFD FFFD D1C8 - D1C9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F8BE -End of Item 03C1 - -Begin of Item 03C2 - Format 1 - srcBegin = 9A2B - srcEnd = 9A6A - mappingOffset = 36E0 - Mapping = - CBF6 FFFD FFFD FFFD FFFD D4F9 FFFD FFFD - FFFD FFFD FFFD F5E2 E1D3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D8E9 FFFD FFFD - F8FE FFFD CFCC FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FDA4 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CEF6 FFFD FAD0 FFFD FFFD CCF3 - E6BE FFFD FFFD FFFD F6AE FFFD FFFD D5F0 - FFFD FFFD D1CA FFFD FFFD FFFD FCBE D5F1 -End of Item 03C2 - -Begin of Item 03C3 - Format 2 - srcBegin = 9AA8 - destBegin = CDE9 -End of Item 03C3 - -Begin of Item 03C4 - Format 2 - srcBegin = 9AB8 - destBegin = FAB5 -End of Item 03C4 - -Begin of Item 03C5 - Format 1 - srcBegin = 9AD3 - srcEnd = 9AD8 - mappingOffset = 3720 - Mapping = - E2D0 F4F7 FFFD FFFD FFFD CDD4 -End of Item 03C5 - -Begin of Item 03C6 - Format 1 - srcBegin = 9AE5 - srcEnd = 9AEE - mappingOffset = 3726 - Mapping = - E7A3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DBA5 -End of Item 03C6 - -Begin of Item 03C7 - Format 2 - srcBegin = 9B1A - destBegin = E2D1 -End of Item 03C7 - -Begin of Item 03C8 - Format 1 - srcBegin = 9B27 - srcEnd = 9B5A - mappingOffset = 3730 - Mapping = - D7A2 FFFD FFFD F7E3 FFFD FFFD FFFD FFFD - FFFD FFFD EAA6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D0A1 FFFD FFFD - FFFD FFFD CEDA FBEB DBA6 DBDE D8E5 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EAE0 FFFD FFFD FFFD FFFD D8AA FFFD FFFD - FFFD FFFD FFFD E5E0 -End of Item 03C8 - -Begin of Item 03C9 - Format 2 - srcBegin = 9B6F - destBegin = D6DB -End of Item 03C9 - -Begin of Item 03CA - Format 1 - srcBegin = 9B8E - srcEnd = 9B91 - mappingOffset = 3764 - Mapping = - EFC6 FFFD FFFD F8EA -End of Item 03CA - -Begin of Item 03CB - Format 2 - srcBegin = 9B9F - destBegin = E4D5 -End of Item 03CB - -Begin of Item 03CC - Format 1 - srcBegin = 9BAB - srcEnd = 9BAE - mappingOffset = 3768 - Mapping = - CEF7 FFFD FFFD E0D8 -End of Item 03CC - -Begin of Item 03CD - Format 2 - srcBegin = 9BC9 - destBegin = D7EF -End of Item 03CD - -Begin of Item 03CE - Format 2 - srcBegin = 9BD6 - destBegin = F4ED -End of Item 03CE - -Begin of Item 03CF - Format 1 - srcBegin = 9BE4 - srcEnd = 9BE8 - mappingOffset = 376C - Mapping = - CDE6 FFFD FFFD FFFD CCF4 -End of Item 03CF - -Begin of Item 03D0 - Format 1 - srcBegin = 9C0D - srcEnd = 9C15 - mappingOffset = 3771 - Mapping = - F5E3 FFFD FFFD E4CA FFFD DCE1 FFFD FFFD - F9C8 -End of Item 03D0 - -Begin of Item 03D1 - Format 2 - srcBegin = 9C25 - destBegin = FCBF -End of Item 03D1 - -Begin of Item 03D2 - Format 1 - srcBegin = 9C32 - srcEnd = 9C3B - mappingOffset = 377A - Mapping = - E8A7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D8C4 -End of Item 03D2 - -Begin of Item 03D3 - Format 1 - srcBegin = 9C47 - srcEnd = 9C49 - mappingOffset = 3784 - Mapping = - CBBE FFFD DCAE -End of Item 03D3 - -Begin of Item 03D4 - Format 2 - srcBegin = 9C57 - destBegin = D7F7 -End of Item 03D4 - -Begin of Item 03D5 - Format 1 - srcBegin = 9CE5 - srcEnd = 9CF6 - mappingOffset = 3787 - Mapping = - F0E8 FFFD DDC0 FFFD CFCD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DCF3 D9B0 - FFFD E6E9 -End of Item 03D5 - -Begin of Item 03D6 - Format 2 - srcBegin = 9D09 - destBegin = E4BC -End of Item 03D6 - -Begin of Item 03D7 - Format 1 - srcBegin = 9D1B - srcEnd = 9D28 - mappingOffset = 3799 - Mapping = - EAC4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E4EC FFFD E4E5 -End of Item 03D7 - -Begin of Item 03D8 - Format 2 - srcBegin = 9D3B - destBegin = FBF8 -End of Item 03D8 - -Begin of Item 03D9 - Format 2 - srcBegin = 9D51 - destBegin = CCBB -End of Item 03D9 - -Begin of Item 03DA - Format 1 - srcBegin = 9D5D - srcEnd = 9D72 - mappingOffset = 37A7 - Mapping = - E4BD FFFD FFFD CDDC D9F7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD DDDF - FFFD FFFD FFFD FFFD FFFD EDCE -End of Item 03DA - -Begin of Item 03DB - Format 1 - srcBegin = 9DA9 - srcEnd = 9DB4 - mappingOffset = 37BD - Mapping = - D9D0 FFFD FFFD FFFD FFFD FFFD E5A3 FFFD - FFFD FFFD FFFD F9CD -End of Item 03DB - -Begin of Item 03DC - Format 2 - srcBegin = 9DC4 - destBegin = CDAE -End of Item 03DC - -Begin of Item 03DD - Format 2 - srcBegin = 9DD7 - destBegin = CFCE -End of Item 03DD - -Begin of Item 03DE - Format 1 - srcBegin = 9DF2 - srcEnd = 9DFA - mappingOffset = 37C9 - Mapping = - F6AF FFFD FFFD FFFD FFFD FFFD FDD3 EBED - D6DC -End of Item 03DE - -Begin of Item 03DF - Format 1 - srcBegin = 9E1A - srcEnd = 9E1E - mappingOffset = 37D2 - Mapping = - E5A4 FFFD FFFD FFFD D5B6 -End of Item 03DF - -Begin of Item 03E0 - Format 1 - srcBegin = 9E75 - srcEnd = 9E7F - mappingOffset = 37D7 - Mapping = - D6DD FFFD FFFD FFFD F9E9 FFFD FFFD FFFD - E7A4 FFFD D6E3 -End of Item 03E0 - -Begin of Item 03E1 - Format 1 - srcBegin = 9E92 - srcEnd = 9EA5 - mappingOffset = 37E2 - Mapping = - D1CB D6E4 FFFD FFFD FFFD D5F2 FFFD FFFD - FFFD FFFD FFFD DEFA FFFD D7F8 FFFD FFFD - FFFD FFFD FFFD D8EA -End of Item 03E1 - -Begin of Item 03E2 - Format 1 - srcBegin = 9EB4 - srcEnd = 9EE8 - mappingOffset = 37F6 - Mapping = - CFD5 D8FD FFFD FFFD FFFD FFFD FFFD D8AB - FFFD FFFD FDCB FFFD FFFD FFFD FFFD FCDC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E0A8 D5F3 FFFD FFFD FDD9 FFFD FFFD - CCA3 FFFD FFFD FFFD D9F9 FFFD FFFD D3EA - F5F5 FFFD EFC7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D3DA -End of Item 03E2 - -Begin of Item 03E3 - Format 2 - srcBegin = 9EF4 - destBegin = DABD -End of Item 03E3 - -Begin of Item 03E4 - Format 1 - srcBegin = 9F07 - srcEnd = 9F13 - mappingOffset = 382B - Mapping = - E8A8 DCAF FFFD FFFD FFFD FFFD FFFD F0A3 - FFFD FFFD FFFD FFFD CDD5 -End of Item 03E4 - -Begin of Item 03E5 - Format 2 - srcBegin = 9F20 - destBegin = E0A9 -End of Item 03E5 - -Begin of Item 03E6 - Format 2 - srcBegin = 9F3B - destBegin = DEAC -End of Item 03E6 - -Begin of Item 03E7 - Format 1 - srcBegin = 9F4A - srcEnd = 9F52 - mappingOffset = 3838 - Mapping = - F0BA EEB1 FFFD FFFD EEB2 FFFD FFFD FFFD - F6CD -End of Item 03E7 - -Begin of Item 03E8 - Format 1 - srcBegin = 9F5F - srcEnd = 9F77 - mappingOffset = 3841 - Mapping = - EED2 FFFD D6C6 FFFD FFFD FFFD FFFD FFFD - E0E5 FFFD FFFD F3BB FFFD E5E1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E4CB -End of Item 03E8 - -Begin of Item 03E9 - Format 1 - srcBegin = 9F8D - srcEnd = 9F9C - mappingOffset = 385A - Mapping = - D7A3 FFFD FFFD DBC2 FFFD FFFD FFFD FFFD - CAFE FFFD FFFD FFFD FFFD FFFD FFFD CFCF -End of Item 03E9 - -Begin of Item 03EA - Format 1 - srcBegin = AC00 - srcEnd = AC5C - mappingOffset = 386A - Mapping = - B0A1 B0A2 8141 8142 B0A3 8143 8144 B0A4 - B0A5 B0A6 B0A7 8145 8146 8147 8148 8149 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 814A B0B0 B0B1 B0B2 B0B3 B0B4 814B 814C - B0B5 814D 814E 814F B0B6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B0B7 B0B8 8157 B0B9 - B0BA B0BB 8158 8159 815A 8161 8162 8163 - B0BC B0BD 8164 8165 B0BE 8166 8167 8168 - B0BF FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B0C0 8173 B0C1 FFFD FFFD - FFFD FFFD FFFD FFFD B0C2 817A 8181 8182 - B0C3 8183 8184 8185 B0C4 -End of Item 03EA - -Begin of Item 03EB - Format 1 - srcBegin = AC70 - srcEnd = AD90 - mappingOffset = 38C7 - Mapping = - B0C5 B0C6 8199 819A B0C7 819B 819C B0C8 - B0C9 819D B0CA 819E 819F 81A0 81A1 81A2 - B0CB B0CC 81A3 B0CD B0CE B0CF B0D0 81A4 - 81A5 B0D1 B0D2 B0D3 B0D4 81A6 81A7 81A8 - B0D5 81A9 81AA 81AB B0D6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B0D7 B0D8 81B3 B0D9 - B0DA B0DB FFFD FFFD FFFD FFFD FFFD FFFD - B0DC B0DD B0DE 81BA B0DF 81BB 81BC B0E0 - B0E1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B0E2 B0E3 81C4 B0E4 B0E5 B0E6 81C5 81C6 - 81C7 B0E7 81C8 81C9 B0E8 81CA 81CB 81CC - B0E9 81CD 81CE 81CF B0EA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B0EB 81D8 B0EC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B0ED B0EE 81E1 81E2 B0EF 81E3 81E4 B0F0 - B0F1 81E5 B0F2 81E6 B0F3 81E7 81E8 B0F4 - B0F5 B0F6 81E9 B0F7 81EA B0F8 B0F9 81EB - 81EC 81ED 81EE 81EF B0FA B0FB 81F0 81F1 - B0FC 81F2 81F3 81F4 B0FD 81F5 B0FE 81F6 - 81F7 81F8 81F9 81FA B1A1 B1A2 81FB B1A3 - 81FC B1A4 81FD 81FE 8241 8242 8243 8244 - B1A5 8245 8246 8247 B1A6 8248 8249 824A - B1A7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B1A8 8253 8254 B1A9 B1AA FFFD FFFD - FFFD FFFD FFFD FFFD B1AB B1AC 8261 8262 - B1AD 8263 8264 8265 B1AE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B1AF B1B0 826D B1B1 - 826E B1B2 FFFD FFFD FFFD FFFD FFFD FFFD - B1B3 8275 8276 8277 B1B4 8278 8279 827A - B1B5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B1B6 8289 B1B7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B1B8 B1B9 8292 8293 - B1BA 8294 8295 B1BB B1BC B1BD B1BE 8296 - 8297 8298 8299 B1BF B1C0 B1C1 829A B1C2 - 829B B1C3 B1C4 829C 829D 829E 829F 82A0 - B1C5 B1C6 82A1 82A2 B1C7 82A3 82A4 82A5 - B1C8 -End of Item 03EB - -Begin of Item 03EC - Format 1 - srcBegin = AD9C - srcEnd = ADA4 - mappingOffset = 39E8 - Mapping = - B1C9 B1CA FFFD FFFD FFFD FFFD FFFD FFFD - B1CB -End of Item 03EC - -Begin of Item 03ED - Format 1 - srcBegin = ADB7 - srcEnd = ADE4 - mappingOffset = 39F1 - Mapping = - B1CC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B1CD B1CE 82D1 82D2 B1CF 82D3 82D4 - 82D5 B1D0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B1D1 B1D2 82DD B1D3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B1D4 82E6 82E7 - 82E8 B1D5 82E9 82EA 82EB B1D6 -End of Item 03ED - -Begin of Item 03EE - Format 1 - srcBegin = ADF8 - srcEnd = AE14 - mappingOffset = 3A1F - Mapping = - B1D7 B1D8 8341 8342 B1D9 8343 8344 B1DA - B1DB B1DC FFFD FFFD FFFD FFFD FFFD FFFD - B1DD B1DE 834B B1DF 834C B1E0 FFFD FFFD - FFFD FFFD FFFD FFFD B1E1 -End of Item 03EE - -Begin of Item 03EF - Format 1 - srcBegin = AE30 - srcEnd = AE8C - mappingOffset = 3A3C - Mapping = - B1E2 B1E3 8374 8375 B1E4 8376 8377 B1E5 - B1E6 8378 B1E7 8379 837A 8381 8382 8383 - B1E8 B1E9 8384 B1EA 8385 B1EB B1EC 8386 - 8387 8388 B1ED 8389 B1EE B1EF B1F0 838A - B1F1 838B 838C 838D B1F2 838E B1F3 838F - 8390 8391 8392 8393 B1F4 B1F5 8394 B1F6 - B1F7 B1F8 8395 8396 8397 B1F9 8398 8399 - B1FA B1FB 839A 839B B1FC 839C 839D 839E - B1FD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B1FE B2A1 83A6 B2A2 B2A3 B2A4 FFFD FFFD - FFFD FFFD FFFD FFFD B2A5 B2A6 FFFD FFFD - FFFD FFFD FFFD FFFD B2A7 -End of Item 03EF - -Begin of Item 03F0 - Format 1 - srcBegin = AEBC - srcEnd = AF10 - mappingOffset = 3A99 - Mapping = - B2A8 B2A9 B2AA 83E2 B2AB 83E3 83E4 83E5 - B2AC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B2AD B2AE 83ED B2AF B2B0 B2B1 FFFD FFFD - FFFD FFFD FFFD FFFD B2B2 B2B3 83F4 83F5 - B2B4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8441 8442 B2B5 8443 8444 B2B6 - 8445 B2B7 FFFD FFFD FFFD FFFD FFFD FFFD - B2B8 844C 844D 844E B2B9 844F 8450 8451 - B2BA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8461 B2BB B2BC 8462 8463 8464 - 8465 B2BD 8466 8467 B2BE -End of Item 03F0 - -Begin of Item 03F1 - Format 1 - srcBegin = AF2C - srcEnd = AF50 - mappingOffset = 3AEE - Mapping = - B2BF B2C0 8489 848A B2C1 848B B2C2 848C - B2C3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B2C4 B2C5 8494 B2C6 8495 B2C7 B2C8 B2C9 - 8496 8497 8498 8499 B2CA B2CB FFFD FFFD - FFFD FFFD FFFD FFFD B2CC -End of Item 03F1 - -Begin of Item 03F2 - Format 1 - srcBegin = AF5C - srcEnd = AF65 - mappingOffset = 3B13 - Mapping = - B2CD B2CE FFFD FFFD FFFD FFFD FFFD FFFD - B2CF B2D0 -End of Item 03F2 - -Begin of Item 03F3 - Format 1 - srcBegin = AF79 - srcEnd = AF9C - mappingOffset = 3B1D - Mapping = - B2D1 FFFD FFFD FFFD FFFD FFFD FFFD B2D2 - 84CA 84CB 84CC B2D3 84CD 84CE 84CF B2D4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD B2D5 - B2D6 84D7 84D8 84D9 B2D7 FFFD FFFD FFFD - FFFD FFFD FFFD B2D8 -End of Item 03F3 - -Begin of Item 03F4 - Format 1 - srcBegin = AFB8 - srcEnd = B028 - mappingOffset = 3B41 - Mapping = - B2D9 B2DA 84FB 84FC B2DB 84FD 84FE 8541 - B2DC FFFD FFFD FFFD FFFD FFFD FFFD B2DD - B2DE B2DF 8548 B2E0 8549 B2E1 B2E2 854A - 854B 854C 854D 854E B2E3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B2E4 8556 8557 8558 - 8559 855A FFFD FFFD FFFD FFFD FFFD FFFD - B2E5 B2E6 FFFD FFFD FFFD FFFD FFFD FFFD - B2E7 B2E8 856D 856E B2E9 856F 8570 8571 - B2EA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B2EB B2EC 8579 857A B2ED FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B2EE 8588 8589 858A - B2EF 858B 858C 858D B2F0 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B2F1 B2F2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B2F3 -End of Item 03F4 - -Begin of Item 03F5 - Format 1 - srcBegin = B044 - srcEnd = B05D - mappingOffset = 3BB2 - Mapping = - B2F4 B2F5 85BA 85BB B2F6 85BC B2F7 85BD - B2F8 85BE B2F9 85BF 85C0 85C1 85C2 B2FA - B2FB B2FC 85C3 B2FD 85C4 B2FE 85C5 85C6 - 85C7 B3A1 -End of Item 03F5 - -Begin of Item 03F6 - Format 1 - srcBegin = B07C - srcEnd = B0E5 - mappingOffset = 3BCC - Mapping = - B3A2 B3A3 85E6 85E7 B3A4 85E8 85E9 85EA - B3A5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B3A6 B3A7 85F2 B3A8 85F3 B3A9 FFFD FFFD - FFFD FFFD FFFD FFFD B3AA B3AB B3AC 85FA - B3AD 85FB 85FC B3AE B3AF B3B0 B3B1 85FD - 85FE 8641 8642 8643 B3B2 B3B3 8644 B3B4 - B3B5 B3B6 B3B7 B3B8 8645 B3B9 8646 B3BA - B3BB B3BC 8647 8648 B3BD 8649 864A 864B - B3BE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B3BF B3C0 8653 B3C1 B3C2 B3C3 FFFD FFFD - FFFD FFFD FFFD FFFD B3C4 B3C5 865A 8661 - B3C6 8662 8663 8664 B3C7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B3C8 866C 866D 866E - 866F B3C9 -End of Item 03F6 - -Begin of Item 03F7 - Format 1 - srcBegin = B108 - srcEnd = B160 - mappingOffset = 3C36 - Mapping = - B3CA B3CB 8698 B3CC B3CD 8699 869A 869B - B3CE 869C B3CF B3D0 869D 869E 869F 86A0 - B3D1 B3D2 86A1 B3D3 B3D4 B3D5 86A2 86A3 - 86A4 86A5 86A6 B3D6 B3D7 B3D8 86A7 86A8 - B3D9 86A9 86AA 86AB B3DA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B3DB B3DC 86B3 B3DD - B3DE B3DF FFFD FFFD FFFD FFFD FFFD FFFD - B3E0 B3E1 86BA 86BB B3E2 86BC 86BD 86BE - B3E3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B3E4 B3E5 86C6 86C7 B3E6 B3E7 86C8 86C9 - B3E8 86CA 86CB 86CC B3E9 86CD 86CE 86CF - B3EA -End of Item 03F7 - -Begin of Item 03F8 - Format 1 - srcBegin = B178 - srcEnd = B1A8 - mappingOffset = 3C8F - Mapping = - B3EB B3EC 86E7 86E8 B3ED 86E9 86EA 86EB - B3EE 86EC B3EF 86ED 86EE 86EF 86F0 86F1 - B3F0 B3F1 86F2 B3F2 86F3 B3F3 86F4 86F5 - 86F6 86F7 B3F4 B3F5 B3F6 86F8 86F9 86FA - B3F7 86FB 86FC 86FD B3F8 86FE FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B3F9 -End of Item 03F8 - -Begin of Item 03F9 - Format 1 - srcBegin = B1CC - srcEnd = B220 - mappingOffset = 3CC0 - Mapping = - B3FA 8774 8775 8776 B3FB 8777 8778 8779 - B3FC 877A FFFD FFFD FFFD FFFD FFFD FFFD - B3FD B3FE 8787 B4A1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B4A2 B4A3 8790 8791 - B4A4 8792 8793 8794 B4A5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B4A6 879D B4A7 - 879E B4A8 FFFD FFFD FFFD FFFD FFFD FFFD - B4A9 B4AA 87A5 87A6 B4AB 87A7 87A8 B4AC - B4AD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B4AE B4AF 87B0 B4B0 87B1 B4B1 FFFD FFFD - FFFD FFFD FFFD FFFD B4B2 -End of Item 03F9 - -Begin of Item 03FA - Format 1 - srcBegin = B234 - srcEnd = B23C - mappingOffset = 3D15 - Mapping = - B4B3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B4B4 -End of Item 03FA - -Begin of Item 03FB - Format 1 - srcBegin = B258 - srcEnd = B2B7 - mappingOffset = 3D1E - Mapping = - B4B5 87ED 87EE 87EF B4B6 87F0 87F1 87F2 - B4B7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B4B8 B4B9 87FA 87FB 87FC 87FD 87FE 8841 - 8842 8843 8844 8845 B4BA B4BB FFFD FFFD - FFFD FFFD FFFD FFFD B4BC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B4BD B4BE 8853 8854 - 8855 B4BF 8856 8857 8858 8859 885A 8861 - B4C0 B4C1 8862 8863 B4C2 8864 8865 8866 - B4C3 B4C4 B4C5 8867 8868 8869 886A 886B - B4C6 B4C7 886C B4C8 886D B4C9 B4CA 886E - 886F 8870 B4CB 8871 B4CC 8872 8873 8874 - B4CD 8875 8876 8877 B4CE 8878 8879 887A -End of Item 03FB - -Begin of Item 03FC - Format 1 - srcBegin = B2C8 - srcEnd = B31C - mappingOffset = 3D7E - Mapping = - B4CF B4D0 8891 8892 B4D1 8893 8894 8895 - B4D2 8896 B4D3 8897 8898 8899 889A 889B - B4D4 B4D5 889C B4D6 889D B4D7 889E 889F - 88A0 88A1 B4D8 88A2 B4D9 B4DA B4DB 88A3 - B4DC 88A4 88A5 B4DD B4DE B4DF B4E0 B4E1 - 88A6 88A7 88A8 B4E2 B4E3 B4E4 88A9 B4E5 - B4E6 B4E7 B4E8 B4E9 88AA 88AB 88AC B4EA - B4EB B4EC 88AD 88AE B4ED 88AF 88B0 88B1 - B4EE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B4EF B4F0 88B9 B4F1 B4F2 B4F3 FFFD FFFD - FFFD FFFD FFFD FFFD B4F4 -End of Item 03FC - -Begin of Item 03FD - Format 1 - srcBegin = B354 - srcEnd = B394 - mappingOffset = 3DD3 - Mapping = - B4F5 B4F6 B4F7 88F7 B4F8 88F8 88F9 B4F9 - B4FA 88FA B4FB B4FC 88FB 88FC 88FD 88FE - B4FD B4FE 8941 B5A1 8942 B5A2 8943 B5A3 - 8944 8945 B5A4 8946 B5A5 B5A6 8947 8948 - B5A7 8949 894A 894B B5A8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B5A9 B5AA 8953 B5AB - B5AC B5AD FFFD FFFD FFFD FFFD FFFD FFFD - B5AE 895A 8961 8962 B5AF 8963 8964 8965 - B5B0 -End of Item 03FD - -Begin of Item 03FE - Format 1 - srcBegin = B3A0 - srcEnd = B3AD - mappingOffset = 3E14 - Mapping = - B5B1 B5B2 FFFD FFFD FFFD FFFD FFFD FFFD - B5B3 8977 8978 8979 B5B4 897A -End of Item 03FE - -Begin of Item 03FF - Format 1 - srcBegin = B3C4 - srcEnd = B3E8 - mappingOffset = 3E22 - Mapping = - B5B5 B5B6 8997 8998 B5B7 8999 899A B5B8 - B5B9 899B B5BA 899C B5BB 899D 899E 899F - B5BC B5BD 89A0 B5BE 89A1 B5BF 89A2 B5C0 - 89A3 B5C1 89A4 89A5 B5C2 89A6 89A7 89A8 - B5C3 89A9 89AA 89AB B5C4 -End of Item 03FF - -Begin of Item 0400 - Format 2 - srcBegin = B3FC - destBegin = B5C5 -End of Item 0400 - -Begin of Item 0401 - Format 1 - srcBegin = B410 - srcEnd = B434 - mappingOffset = 3E47 - Mapping = - B5C6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B5C7 89D9 89DA 89DB B5C8 89DC 89DD 89DE - B5C9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B5CA B5CB 89E6 B5CC FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B5CD -End of Item 0401 - -Begin of Item 0402 - Format 1 - srcBegin = B450 - srcEnd = B46C - mappingOffset = 3E6C - Mapping = - B5CE B5CF 8A4C 8A4D B5D0 8A4E 8A4F 8A50 - B5D1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B5D2 B5D3 8A58 B5D4 8A59 B5D5 8A5A 8A61 - 8A62 8A63 8A64 8A65 B5D6 -End of Item 0402 - -Begin of Item 0403 - Format 1 - srcBegin = B480 - srcEnd = B488 - mappingOffset = 3E89 - Mapping = - B5D7 8A79 8A7A 8A81 8A82 8A83 8A84 8A85 - B5D8 -End of Item 0403 - -Begin of Item 0404 - Format 1 - srcBegin = B49D - srcEnd = B4F8 - mappingOffset = 3E92 - Mapping = - B5D9 FFFD FFFD FFFD FFFD FFFD FFFD B5DA - 8AA0 8AA1 8AA2 B5DB 8AA3 8AA4 8AA5 B5DC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B5DD 8AAE B5DE 8AAF B5DF FFFD FFFD FFFD - FFFD FFFD FFFD B5E0 8AB6 8AB7 8AB8 B5E1 - 8AB9 8ABA 8ABB B5E2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B5E3 8AC3 8AC4 8AC5 8AC6 - B5E4 FFFD FFFD FFFD FFFD FFFD FFFD B5E5 - B5E6 8ACD 8ACE B5E7 8ACF 8AD0 B5E8 B5E9 - 8AD1 B5EA 8AD2 8AD3 8AD4 8AD5 8AD6 B5EB - B5EC 8AD7 B5ED 8AD8 B5EE FFFD FFFD FFFD - FFFD FFFD FFFD B5EF -End of Item 0404 - -Begin of Item 0405 - Format 1 - srcBegin = B514 - srcEnd = B561 - mappingOffset = 3EEE - Mapping = - B5F0 B5F1 8AFA 8AFB B5F2 8AFC 8AFD B5F3 - B5F4 8AFE FFFD FFFD FFFD FFFD FFFD FFFD - B5F5 B5F6 8B47 B5F7 B5F8 B5F9 B5FA 8B48 - 8B49 8B4A 8B4B 8B4C B5FB B5FC 8B4D 8B4E - B5FD 8B4F 8B50 8B51 B5FE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B6A1 B6A2 8B59 B6A3 - B6A4 B6A5 8B5A 8B61 8B62 8B63 8B64 B6A6 - B6A7 B6A8 8B65 8B66 B6A9 8B67 8B68 8B69 - B6AA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B6AB B6AC 8B71 B6AD B6AE B6AF -End of Item 0405 - -Begin of Item 0406 - Format 1 - srcBegin = B5A0 - srcEnd = B5D8 - mappingOffset = 3F3C - Mapping = - B6B0 B6B1 8BB6 8BB7 B6B2 8BB8 8BB9 8BBA - B6B3 8BBB B6B4 B6B5 8BBC 8BBD 8BBE 8BBF - B6B6 B6B7 8BC0 B6B8 B6B9 B6BA 8BC1 8BC2 - 8BC3 8BC4 8BC5 B6BB B6BC B6BD 8BC6 8BC7 - B6BE 8BC8 8BC9 8BCA B6BF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B6C0 B6C1 8BD2 B6C2 - B6C3 B6C4 FFFD FFFD FFFD FFFD FFFD FFFD - B6C5 -End of Item 0406 - -Begin of Item 0407 - Format 2 - srcBegin = B5EC - destBegin = B6C6 -End of Item 0407 - -Begin of Item 0408 - Format 1 - srcBegin = B610 - srcEnd = B634 - mappingOffset = 3F75 - Mapping = - B6C7 B6C8 8C51 8C52 B6C9 8C53 8C54 8C55 - B6CA 8C56 8C57 8C58 8C59 8C5A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B6CB FFFD FFFD - FFFD FFFD FFFD FFFD B6CC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B6CD -End of Item 0408 - -Begin of Item 0409 - Format 2 - srcBegin = B648 - destBegin = B6CE -End of Item 0409 - -Begin of Item 040A - Format 1 - srcBegin = B664 - srcEnd = B668 - mappingOffset = 3F9A - Mapping = - B6CF 8CA9 8CAA 8CAB B6D0 -End of Item 040A - -Begin of Item 040B - Format 1 - srcBegin = B69C - srcEnd = B6B1 - mappingOffset = 3F9F - Mapping = - B6D1 B6D2 8CDF 8CE0 B6D3 8CE1 8CE2 8CE3 - B6D4 FFFD FFFD FFFD FFFD FFFD FFFD B6D5 - B6D6 8CEA 8CEB 8CEC 8CED B6D7 -End of Item 040B - -Begin of Item 040C - Format 2 - srcBegin = B6D4 - destBegin = B6D8 -End of Item 040C - -Begin of Item 040D - Format 1 - srcBegin = B6F0 - srcEnd = B705 - mappingOffset = 3FB5 - Mapping = - B6D9 8D73 8D74 8D75 B6DA 8D76 8D77 8D78 - B6DB 8D79 8D7A 8D81 8D82 8D83 8D84 8D85 - B6DC B6DD 8D86 8D87 8D88 B6DE -End of Item 040D - -Begin of Item 040E - Format 1 - srcBegin = B728 - srcEnd = B7C9 - mappingOffset = 3FCB - Mapping = - B6DF B6E0 8DAB 8DAC B6E1 8DAD 8DAE B6E2 - B6E3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B6E4 B6E5 8DB6 B6E6 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B6E7 8DBF 8DC0 8DC1 - B6E8 8DC2 8DC3 8DC4 B6E9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B6EA B6EB FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B6EC 8DD6 8DD7 8DD8 B6ED 8DD9 8DDA 8DDB - B6EE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B6EF B6F0 8DE3 B6F1 8DE4 B6F2 FFFD FFFD - FFFD FFFD FFFD FFFD B6F3 B6F4 8DEB 8DEC - B6F5 8DED 8DEE 8DEF B6F6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B6F7 B6F8 8DF7 B6F9 - B6FA B6FB B6FC 8DF8 8DF9 8DFA B6FD B6FE - B7A1 B7A2 8DFB 8DFC B7A3 8DFD 8DFE 8E41 - B7A4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B7A5 B7A6 8E49 B7A7 B7A8 B7A9 FFFD FFFD - FFFD FFFD FFFD FFFD B7AA B7AB 8E50 8E51 - B7AC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8E61 8E62 8E63 8E64 8E65 B7AD - 8E66 B7AE -End of Item 040E - -Begin of Item 040F - Format 1 - srcBegin = B7EC - srcEnd = B844 - mappingOffset = 406D - Mapping = - B7AF B7B0 8E8F 8E90 B7B1 8E91 8E92 8E93 - B7B2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B7B3 B7B4 8E9B B7B5 B7B6 B7B7 8E9C 8E9D - 8E9E 8E9F 8EA0 B7B8 B7B9 B7BA 8EA1 8EA2 - B7BB 8EA3 8EA4 8EA5 B7BC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B7BD B7BE 8EAD B7BF - 8EAE B7C0 FFFD FFFD FFFD FFFD FFFD FFFD - B7C1 B7C2 8EB5 8EB6 B7C3 8EB7 8EB8 8EB9 - B7C4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B7C5 B7C6 8EC1 B7C7 B7C8 B7C9 FFFD FFFD - FFFD FFFD FFFD FFFD B7CA 8EC8 8EC9 8ECA - B7CB -End of Item 040F - -Begin of Item 0410 - Format 1 - srcBegin = B851 - srcEnd = B87C - mappingOffset = 40C6 - Mapping = - B7CC 8ED7 B7CD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B7CE B7CF 8EE0 8EE1 B7D0 - 8EE2 8EE3 8EE4 B7D1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B7D2 B7D3 8EEC B7D4 8EED - B7D5 FFFD FFFD FFFD FFFD FFFD FFFD B7D6 - 8EF4 8EF5 8EF6 B7D7 -End of Item 0410 - -Begin of Item 0411 - Format 2 - srcBegin = B88D - destBegin = B7D8 -End of Item 0411 - -Begin of Item 0412 - Format 1 - srcBegin = B8A8 - srcEnd = B904 - mappingOffset = 40F2 - Mapping = - B7D9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B7DA 8F70 8F71 8F72 B7DB 8F73 8F74 8F75 - B7DC 8F76 8F77 8F78 8F79 8F7A 8F81 8F82 - B7DD B7DE 8F83 B7DF 8F84 B7E0 FFFD FFFD - FFFD FFFD FFFD FFFD B7E1 8F8B 8F8C 8F8D - B7E2 8F8E 8F8F 8F90 B7E3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B7E4 8F99 B7E5 - 8F9A B7E6 FFFD FFFD FFFD FFFD FFFD FFFD - B7E7 B7E8 8FA1 8FA2 B7E9 8FA3 8FA4 8FA5 - B7EA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B7EB B7EC 8FAD B7ED 8FAE B7EE FFFD FFFD - FFFD FFFD FFFD FFFD B7EF -End of Item 0412 - -Begin of Item 0413 - Format 1 - srcBegin = B918 - srcEnd = B920 - mappingOffset = 414F - Mapping = - B7F0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B7F1 -End of Item 0413 - -Begin of Item 0414 - Format 1 - srcBegin = B93C - srcEnd = B98E - mappingOffset = 4158 - Mapping = - B7F2 B7F3 8FEA 8FEB B7F4 8FEC 8FED 8FEE - B7F5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B7F6 8FF6 8FF7 B7F7 8FF8 B7F8 FFFD FFFD - FFFD FFFD FFFD FFFD B7F9 B7FA 9041 9042 - B7FB 9043 9044 9045 B7FC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B7FD B7FE 904D B8A1 - 904E B8A2 FFFD FFFD FFFD FFFD FFFD FFFD - B8A3 B8A4 9055 9056 B8A5 9057 9058 9059 - B8A6 905A FFFD FFFD FFFD FFFD FFFD FFFD - B8A7 B8A8 9067 B8A9 9068 B8AA B8AB 9069 - 906A B8AC B8AD -End of Item 0414 - -Begin of Item 0415 - Format 1 - srcBegin = B9AC - srcEnd = BA08 - mappingOffset = 41AB - Mapping = - B8AE B8AF 908E 908F B8B0 9090 9091 9092 - B8B1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B8B2 B8B3 909A B8B4 909B B8B5 FFFD FFFD - FFFD FFFD FFFD FFFD B8B6 B8B7 90A2 90A3 - B8B8 90A4 B8B9 B8BA B8BB B8BC B8BD 90A5 - 90A6 90A7 90A8 90A9 B8BE B8BF 90AA B8C0 - 90AB B8C1 B8C2 90AC 90AD B8C3 90AE B8C4 - B8C5 B8C6 90AF 90B0 B8C7 90B1 90B2 90B3 - B8C8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B8C9 B8CA 90BB B8CB B8CC B8CD B8CE 90BC - 90BD 90BE 90BF 90C0 B8CF B8D0 FFFD FFFD - FFFD FFFD FFFD FFFD B8D1 -End of Item 0415 - -Begin of Item 0416 - Format 2 - srcBegin = BA15 - destBegin = B8D2 -End of Item 0416 - -Begin of Item 0417 - Format 1 - srcBegin = BA38 - srcEnd = BA8C - mappingOffset = 4208 - Mapping = - B8D3 B8D4 90F5 90F6 B8D5 90F7 90F8 90F9 - B8D6 90FA B8D7 90FB 90FC 90FD 90FE 9141 - B8D8 B8D9 9142 B8DA 9143 B8DB B8DC 9144 - 9145 9146 9147 B8DD B8DE B8DF 9148 9149 - B8E0 914A 914B 914C B8E1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B8E2 B8E3 9154 B8E4 - B8E5 B8E6 FFFD FFFD FFFD FFFD FFFD FFFD - B8E7 B8E8 9161 9162 B8E9 9163 9164 9165 - B8EA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B8EB B8EC B8ED 9170 B8EE - 9171 9172 9173 9174 B8EF -End of Item 0417 - -Begin of Item 0418 - Format 1 - srcBegin = BAA8 - srcEnd = BAC8 - mappingOffset = 425D - Mapping = - B8F0 B8F1 9196 B8F2 B8F3 9197 9198 9199 - B8F4 919A B8F5 919B 919C 919D 919E 919F - B8F6 B8F7 91A0 B8F8 91A1 B8F9 FFFD FFFD - FFFD FFFD FFFD FFFD B8FA 91A8 91A9 91AA - B8FB -End of Item 0418 - -Begin of Item 0419 - Format 1 - srcBegin = BAD8 - srcEnd = BAD9 - mappingOffset = 427E - Mapping = - B8FC B8FD -End of Item 0419 - -Begin of Item 041A - Format 1 - srcBegin = BAFC - srcEnd = BB71 - mappingOffset = 4280 - Mapping = - B8FE 91DC 91DD 91DE B9A1 91DF 91E0 91E1 - B9A2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B9A3 91EA B9A4 91EB B9A5 FFFD FFFD - FFFD FFFD FFFD FFFD B9A6 91F2 91F3 91F4 - B9A7 91F5 91F6 91F7 B9A8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9241 B9A9 9242 B9AA - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B9AB B9AC B9AD 924B B9AE 924C 924D B9AF - B9B0 B9B1 B9B2 924E 924F 9250 9251 9252 - B9B3 B9B4 9253 B9B5 9254 B9B6 9255 9256 - 9257 B9B7 9258 B9B8 B9B9 9259 925A 9261 - B9BA 9262 9263 9264 B9BB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B9BC 926D B9BD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B9BE 9276 9277 9278 9279 927A -End of Item 041A - -Begin of Item 041B - Format 1 - srcBegin = BB88 - srcEnd = BB90 - mappingOffset = 42F6 - Mapping = - B9BF 9297 9298 9299 B9C0 929A 929B 929C - B9C1 -End of Item 041B - -Begin of Item 041C - Format 1 - srcBegin = BBA4 - srcEnd = BBD3 - mappingOffset = 42FF - Mapping = - B9C2 92B0 92B1 92B2 B9C3 92B3 92B4 92B5 - B9C4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B9C5 92BD 92BE B9C6 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B9C7 92C7 92C8 92C9 - B9C8 92CA 92CB 92CC B9C9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B9CA 92D4 92D5 B9CB -End of Item 041C - -Begin of Item 041D - Format 1 - srcBegin = BBF8 - srcEnd = BC5D - mappingOffset = 432F - Mapping = - B9CC B9CD 92FA 92FB B9CE 92FC 92FD B9CF - B9D0 92FE B9D1 9341 9342 9343 9344 9345 - B9D2 B9D3 9346 B9D4 B9D5 B9D6 9347 B9D7 - 9348 B9D8 9349 934A B9D9 B9DA B9DB B9DC - B9DD 934B 934C B9DE B9DF B9E0 B9E1 B9E2 - 934D 934E 934F 9350 B9E3 B9E4 9351 B9E5 - 9352 B9E6 9353 9354 9355 B9E7 9356 9357 - B9E8 B9E9 9358 9359 B9EA 935A 9361 9362 - B9EB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B9EC B9ED 936A B9EE B9EF B9F0 936B 936C - 936D B9F1 936E 936F B9F2 B9F3 9370 9371 - B9F4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9381 9382 9383 B9F5 -End of Item 041D - -Begin of Item 041E - Format 1 - srcBegin = BC84 - srcEnd = BCDC - mappingOffset = 4395 - Mapping = - B9F6 B9F7 93AA 93AB B9F8 93AC 93AD B9F9 - B9FA 93AE B9FB 93AF 93B0 93B1 93B2 93B3 - B9FC B9FD 93B4 B9FE 93B5 BAA1 BAA2 93B6 - 93B7 93B8 93B9 93BA BAA3 BAA4 93BB 93BC - BAA5 93BD 93BE BAA6 BAA7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BAA8 BAA9 93C6 BAAA - BAAB BAAC FFFD FFFD FFFD FFFD FFFD FFFD - BAAD BAAE 93CD 93CE BAAF 93CF 93D0 93D1 - BAB0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD BAB1 93DA BAB2 BAB3 BAB4 93DB 93DC - 93DD BAB5 93DE 93DF BAB6 93E0 93E1 93E2 - BAB7 -End of Item 041E - -Begin of Item 041F - Format 1 - srcBegin = BCF4 - srcEnd = BD14 - mappingOffset = 43EE - Mapping = - BAB8 BAB9 BABA 93FA BABB 93FB 93FC 93FD - BABC 93FE FFFD FFFD FFFD FFFD FFFD FFFD - BABD BABE 9447 BABF 9448 BAC0 FFFD FFFD - FFFD FFFD FFFD FFFD BAC1 944F 9450 9451 - BAC2 -End of Item 041F - -Begin of Item 0420 - Format 1 - srcBegin = BD24 - srcEnd = BD2C - mappingOffset = 440F - Mapping = - BAC3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BAC4 -End of Item 0420 - -Begin of Item 0421 - Format 1 - srcBegin = BD40 - srcEnd = BD68 - mappingOffset = 4418 - Mapping = - BAC5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BAC6 BAC7 948E 948F BAC8 9490 9491 9492 - BAC9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BACA BACB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BACC 94A4 94A5 94A6 - BACD -End of Item 0421 - -Begin of Item 0422 - Format 1 - srcBegin = BD80 - srcEnd = BDA4 - mappingOffset = 4441 - Mapping = - BACE BACF 94BE 94BF BAD0 94C0 94C1 BAD1 - BAD2 BAD3 BAD4 94C2 94C3 94C4 94C5 94C6 - BAD5 BAD6 94C7 BAD7 94C8 BAD8 94C9 94CA - 94CB BAD9 BADA 94CC BADB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BADC -End of Item 0422 - -Begin of Item 0423 - Format 1 - srcBegin = BDB0 - srcEnd = BDB8 - mappingOffset = 4466 - Mapping = - BADD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BADE -End of Item 0423 - -Begin of Item 0424 - Format 1 - srcBegin = BDD2 - srcEnd = BDDC - mappingOffset = 446F - Mapping = - 9541 9542 BADF BAE0 9543 9544 BAE1 9545 - 9546 9547 BAE2 -End of Item 0424 - -Begin of Item 0425 - Format 1 - srcBegin = BDE9 - srcEnd = BE1F - mappingOffset = 447A - Mapping = - BAE3 FFFD FFFD FFFD FFFD FFFD FFFD BAE4 - 955A 9561 9562 BAE5 9563 9564 9565 BAE6 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BAE7 - 956D 956E BAE8 956F BAE9 FFFD FFFD FFFD - FFFD FFFD FFFD BAEA BAEB 9576 9577 BAEC - 9578 9579 957A BAED FFFD FFFD FFFD FFFD - FFFD FFFD FFFD BAEE BAEF 9588 BAF0 -End of Item 0425 - -Begin of Item 0426 - Format 1 - srcBegin = BE44 - srcEnd = BE99 - mappingOffset = 44B1 - Mapping = - BAF1 BAF2 95AD 95AE BAF3 95AF 95B0 95B1 - BAF4 95B2 BAF5 95B3 95B4 95B5 95B6 95B7 - BAF6 BAF7 95B8 BAF8 95B9 BAF9 BAFA BAFB - 95BA 95BB 95BC 95BD BAFC BAFD 95BE 95BF - BAFE 95C0 95C1 95C2 BBA1 95C3 BBA2 95C4 - 95C5 95C6 95C7 95C8 BBA3 BBA4 95C9 BBA5 - BBA6 BBA7 95CA 95CB 95CC 95CD 95CE BBA8 - BBA9 BBAA 95CF 95D0 BBAB 95D1 95D2 95D3 - BBAC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BBAD BBAE 95DB BBAF BBB0 BBB1 FFFD FFFD - FFFD FFFD FFFD FFFD BBB2 BBB3 -End of Item 0426 - -Begin of Item 0427 - Format 2 - srcBegin = BEA8 - destBegin = BBB4 -End of Item 0427 - -Begin of Item 0428 - Format 1 - srcBegin = BED0 - srcEnd = BEEC - mappingOffset = 4507 - Mapping = - BBB5 BBB6 9659 965A BBB7 9661 9662 BBB8 - BBB9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BBBA 966A 966B BBBB BBBC BBBD FFFD FFFD - FFFD FFFD FFFD FFFD BBBE -End of Item 0428 - -Begin of Item 0429 - Format 1 - srcBegin = BF01 - srcEnd = BF09 - mappingOffset = 4524 - Mapping = - BBBF FFFD FFFD FFFD FFFD FFFD FFFD BBC0 - BBC1 -End of Item 0429 - -Begin of Item 042A - Format 1 - srcBegin = BF18 - srcEnd = BF1D - mappingOffset = 452D - Mapping = - BBC2 BBC3 96A0 BBC4 BBC5 BBC6 -End of Item 042A - -Begin of Item 042B - Format 1 - srcBegin = BF40 - srcEnd = BF55 - mappingOffset = 4533 - Mapping = - BBC7 BBC8 96C3 96C4 BBC9 96C5 96C6 96C7 - BBCA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BBCB BBCC 96CF 96D0 96D1 BBCD -End of Item 042B - -Begin of Item 042C - Format 2 - srcBegin = BF94 - destBegin = BBCE -End of Item 042C - -Begin of Item 042D - Format 2 - srcBegin = BFB0 - destBegin = BBCF -End of Item 042D - -Begin of Item 042E - Format 1 - srcBegin = BFC5 - srcEnd = BFE1 - mappingOffset = 4549 - Mapping = - BBD0 FFFD FFFD FFFD FFFD FFFD FFFD BBD1 - BBD2 9793 9794 BBD3 9795 9796 9797 BBD4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BBD5 - 979F 97A0 BBD6 97A1 BBD7 -End of Item 042E - -Begin of Item 042F - Format 1 - srcBegin = C03C - srcEnd = C03F - mappingOffset = 4566 - Mapping = - BBD8 97FC 97FD 97FE -End of Item 042F - -Begin of Item 0430 - Format 1 - srcBegin = C051 - srcEnd = C069 - mappingOffset = 456A - Mapping = - BBD9 FFFD FFFD FFFD FFFD FFFD FFFD BBDA - 9858 9859 985A BBDB 9861 9862 9863 BBDC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BBDD - BBDE -End of Item 0430 - -Begin of Item 0431 - Format 1 - srcBegin = C090 - srcEnd = C1B0 - mappingOffset = 4583 - Mapping = - BBDF BBE0 9897 9898 BBE1 9899 989A 989B - BBE2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BBE3 BBE4 98A3 BBE5 98A4 BBE6 FFFD FFFD - FFFD FFFD FFFD FFFD BBE7 BBE8 98AB BBE9 - BBEA 98AC 98AD BBEB BBEC BBED BBEE 98AE - 98AF 98B0 98B1 98B2 BBEF BBF0 98B3 BBF1 - BBF2 BBF3 98B4 98B5 98B6 BBF4 98B7 98B8 - BBF5 BBF6 98B9 98BA BBF7 98BB 98BC 98BD - BBF8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BBF9 BBFA 98C5 BBFB BBFC BBFD FFFD FFFD - FFFD FFFD FFFD FFFD BBFE BCA1 98CC 98CD - BCA2 98CE 98CF 98D0 BCA3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BCA4 BCA5 98D8 BCA6 - 98D9 BCA7 FFFD FFFD FFFD FFFD FFFD FFFD - BCA8 98E0 98E1 98E2 BCA9 98E3 98E4 98E5 - BCAA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BCAB 98ED 98EE 98EF 98F0 BCAC FFFD FFFD - FFFD FFFD FFFD FFFD BCAD BCAE BCAF BCB0 - BCB1 98F7 98F8 BCB2 BCB3 98F9 BCB4 BCB5 - 98FA 98FB 98FC 98FD BCB6 BCB7 98FE BCB8 - BCB9 BCBA 9941 9942 9943 9944 BCBB 9945 - BCBC BCBD 9946 9947 BCBE 9948 9949 994A - BCBF FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BCC0 BCC1 9952 BCC2 BCC3 BCC4 FFFD FFFD - FFFD FFFD FFFD FFFD BCC5 BCC6 9959 995A - BCC7 9961 9962 9963 BCC8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BCC9 BCCA 996B BCCB - BCCC BCCD FFFD FFFD FFFD FFFD FFFD FFFD - BCCE 9972 9973 9974 BCCF 9975 9976 9977 - BCD0 9978 9979 997A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BCD1 FFFD FFFD - FFFD FFFD FFFD FFFD BCD2 BCD3 BCD4 9990 - BCD5 9991 9992 9993 BCD6 9994 BCD7 9995 - 9996 9997 9998 9999 BCD8 BCD9 999A BCDA - 999B BCDB 999C 999D 999E BCDC 999F 99A0 - BCDD BCDE 99A1 99A2 BCDF 99A3 99A4 99A5 - BCE0 -End of Item 0431 - -Begin of Item 0432 - Format 1 - srcBegin = C1BD - srcEnd = C234 - mappingOffset = 46A4 - Mapping = - BCE1 FFFD FFFD FFFD FFFD FFFD FFFD BCE2 - 99B8 99B9 99BA BCE3 99BB 99BC 99BD BCE4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BCE5 - 99C5 99C6 BCE6 BCE7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD BCE8 99CE 99CF 99D0 BCE9 - 99D1 99D2 99D3 BCEA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD BCEB BCEC 99DB BCED FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BCEE - BCEF 99E4 99E5 BCF0 99E6 99E7 99E8 BCF1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BCF2 - BCF3 99F0 BCF4 99F1 BCF5 FFFD FFFD FFFD - FFFD FFFD FFFD BCF6 BCF7 99F8 99F9 BCF8 - 99FA 99FB BCF9 BCFA 99FC 99FD 99FE 9A41 - 9A42 9A43 9A44 BCFB BCFC 9A45 BCFD 9A46 - BCFE 9A47 BDA1 9A48 BDA2 BDA3 9A49 BDA4 -End of Item 0432 - -Begin of Item 0433 - Format 1 - srcBegin = C246 - srcEnd = C2B9 - mappingOffset = 471C - Mapping = - 9A61 9A62 BDA5 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD BDA6 BDA7 9A6A 9A6B BDA8 9A6C - 9A6D 9A6E BDA9 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD BDAA 9A76 9A77 9A78 9A79 BDAB - 9A7A 9A81 9A82 9A83 9A84 9A85 BDAC BDAD - 9A86 9A87 BDAE 9A88 9A89 9A8A BDAF FFFD - FFFD FFFD FFFD FFFD FFFD FFFD BDB0 BDB1 - 9A92 BDB2 9A93 BDB3 FFFD FFFD FFFD FFFD - FFFD FFFD BDB4 BDB5 FFFD FFFD FFFD FFFD - FFFD FFFD BDB6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD BDB7 9AA7 9AA8 BDB8 9AA9 BDB9 - FFFD FFFD FFFD FFFD FFFD FFFD BDBA BDBB - 9AB0 9AB1 BDBC 9AB2 9AB3 9AB4 BDBD BDBE - FFFD FFFD FFFD FFFD FFFD FFFD BDBF BDC0 - 9ABB BDC1 9ABC BDC2 -End of Item 0433 - -Begin of Item 0434 - Format 1 - srcBegin = C2DC - srcEnd = C329 - mappingOffset = 4790 - Mapping = - BDC3 BDC4 9ADF 9AE0 BDC5 9AE1 9AE2 BDC6 - BDC7 FFFD FFFD FFFD FFFD FFFD FFFD BDC8 - BDC9 BDCA 9AE9 BDCB 9AEA BDCC 9AEB 9AEC - 9AED 9AEE BDCD 9AEF BDCE BDCF 9AF0 BDD0 - BDD1 9AF1 9AF2 9AF3 BDD2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BDD3 BDD4 9AFB 9AFC - BDD5 BDD6 9AFD 9AFE 9B41 9B42 9B43 BDD7 - BDD8 BDD9 9B44 9B45 BDDA 9B46 9B47 9B48 - BDDB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BDDC BDDD 9B50 9B51 BDDE BDDF -End of Item 0434 - -Begin of Item 0435 - Format 2 - srcBegin = C345 - destBegin = BDE0 -End of Item 0435 - -Begin of Item 0436 - Format 1 - srcBegin = C368 - srcEnd = C38C - mappingOffset = 47DE - Mapping = - BDE1 BDE2 9B9B 9B9C BDE3 9B9D 9B9E 9B9F - BDE4 9BA0 BDE5 9BA1 9BA2 9BA3 9BA4 9BA5 - BDE6 BDE7 9BA6 9BA7 BDE8 BDE9 FFFD FFFD - FFFD FFFD FFFD FFFD BDEA 9BAE 9BAF 9BB0 - BDEB 9BB1 9BB2 9BB3 BDEC -End of Item 0436 - -Begin of Item 0437 - Format 2 - srcBegin = C3C0 - destBegin = BDED -End of Item 0437 - -Begin of Item 0438 - Format 1 - srcBegin = C3D8 - srcEnd = C3F8 - mappingOffset = 4803 - Mapping = - BDEE BDEF 9BFE 9C41 BDF0 9C42 9C43 BDF1 - BDF2 9C44 BDF3 9C45 9C46 9C47 9C48 9C49 - BDF4 BDF5 9C4A 9C4B 9C4C BDF6 FFFD FFFD - FFFD FFFD FFFD FFFD BDF7 BDF8 9C53 9C54 - BDF9 -End of Item 0438 - -Begin of Item 0439 - Format 1 - srcBegin = C408 - srcEnd = C410 - mappingOffset = 4824 - Mapping = - BDFA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BDFB -End of Item 0439 - -Begin of Item 043A - Format 1 - srcBegin = C424 - srcEnd = C448 - mappingOffset = 482D - Mapping = - BDFC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BDFD 9C91 9C92 9C93 BDFE 9C94 9C95 9C96 - BEA1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BEA2 BEA3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BEA4 -End of Item 043A - -Begin of Item 043B - Format 1 - srcBegin = C464 - srcEnd = C480 - mappingOffset = 4852 - Mapping = - BEA5 BEA6 9CC3 9CC4 BEA7 9CC5 9CC6 9CC7 - BEA8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BEA9 BEAA 9CCF 9CD0 9CD1 BEAB FFFD FFFD - FFFD FFFD FFFD FFFD BEAC -End of Item 043B - -Begin of Item 043C - Format 1 - srcBegin = C494 - srcEnd = C49C - mappingOffset = 486F - Mapping = - BEAD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BEAE -End of Item 043C - -Begin of Item 043D - Format 1 - srcBegin = C4B8 - srcEnd = C4BC - mappingOffset = 4878 - Mapping = - BEAF 9D4F 9D50 9D51 BEB0 -End of Item 043D - -Begin of Item 043E - Format 1 - srcBegin = C4E9 - srcEnd = C51C - mappingOffset = 487D - Mapping = - BEB1 FFFD FFFD FFFD FFFD FFFD FFFD BEB2 - BEB3 9D90 9D91 BEB4 9D92 9D93 9D94 BEB5 - 9D95 BEB6 9D96 9D97 9D98 9D99 BEB7 BEB8 - BEB9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD BEBA 9DA4 9DA5 9DA6 BEBB - 9DA7 9DA8 9DA9 BEBC FFFD FFFD FFFD FFFD - FFFD FFFD FFFD BEBD -End of Item 043E - -Begin of Item 043F - Format 1 - srcBegin = C528 - srcEnd = C660 - mappingOffset = 48B1 - Mapping = - BEBE BEBF 9DBC 9DBD BEC0 9DBE 9DBF 9DC0 - BEC1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BEC2 BEC3 9DC8 BEC4 9DC9 BEC5 FFFD FFFD - FFFD FFFD FFFD FFFD BEC6 BEC7 9DD0 9DD1 - BEC8 BEC9 BECA 9DD2 BECB BECC BECD 9DD3 - 9DD4 9DD5 9DD6 BECE BECF BED0 9DD7 BED1 - BED2 BED3 9DD8 9DD9 9DDA BED4 BED5 9DDB - BED6 BED7 9DDC 9DDD BED8 9DDE 9DDF 9DE0 - BED9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BEDA BEDB 9DE8 BEDC BEDD BEDE FFFD FFFD - FFFD FFFD FFFD FFFD BEDF BEE0 9DEF 9DF0 - BEE1 9DF1 9DF2 9DF3 BEE2 9DF4 9DF5 BEE3 - 9DF6 9DF7 9DF8 9DF9 BEE4 BEE5 9DFA BEE6 - 9DFB BEE7 9DFC 9DFD 9DFE BEE8 9E41 BEE9 - BEEA 9E42 9E43 9E44 BEEB 9E45 9E46 9E47 - BEEC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD BEED FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BEEE BEEF 9E5A 9E61 - BEF0 BEF1 9E62 BEF2 BEF3 BEF4 BEF5 9E63 - 9E64 9E65 9E66 9E67 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9E68 BEFD 9E69 BEFE 9E6A - BFA1 BFA2 9E6B 9E6C BFA3 9E6D 9E6E 9E6F - BFA4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BFA5 BFA6 9E77 BFA7 9E78 BFA8 9E79 9E7A - 9E81 9E82 9E83 9E84 BFA9 BFAA BFAB 9E85 - BFAC 9E86 9E87 9E88 BFAD 9E89 BFAE BFAF - 9E8A 9E8B 9E8C 9E8D FFFD FFFD FFFD FFFD - FFFD FFFD 9E8E 9E8F 9E90 BFB6 BFB7 BFB8 - BFB9 9E91 9E92 9E93 BFBA 9E94 9E95 9E96 - BFBB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BFBC BFBD 9E9E BFBE BFBF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BFC0 BFC1 9EA6 9EA7 - BFC2 9EA8 9EA9 9EAA BFC3 BFC4 BFC5 9EAB - BFC6 9EAC 9EAD BFC7 BFC8 BFC9 9EAE BFCA - 9EAF BFCB 9EB0 BFCC 9EB1 9EB2 9EB3 9EB4 - BFCD BFCE 9EB5 9EB6 BFCF 9EB7 9EB8 9EB9 - BFD0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BFD1 BFD2 9EC1 BFD3 BFD4 BFD5 FFFD FFFD - FFFD FFFD FFFD FFFD BFD6 BFD7 9EC8 9EC9 - BFD8 -End of Item 043F - -Begin of Item 0440 - Format 1 - srcBegin = C66C - srcEnd = C7EC - mappingOffset = 49EA - Mapping = - BFD9 9ED5 9ED6 BFDA 9ED7 BFDB FFFD FFFD - FFFD FFFD FFFD FFFD BFDC BFDD 9EDE 9EDF - BFDE 9EE0 9EE1 9EE2 BFDF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BFE0 BFE1 9EEA BFE2 - 9EEB BFE3 FFFD FFFD FFFD FFFD FFFD FFFD - BFE4 BFE5 9EF2 9EF3 BFE6 9EF4 9EF5 9EF6 - BFE7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BFE8 BFE9 9EFE BFEA 9F41 BFEB FFFD FFFD - FFFD FFFD FFFD FFFD BFEC BFED 9F48 9F49 - BFEE 9F4A 9F4B 9F4C BFEF BFF0 BFF1 9F4D - 9F4E 9F4F 9F50 9F51 BFF2 BFF3 9F52 BFF4 - 9F53 BFF5 FFFD FFFD FFFD FFFD FFFD FFFD - BFF6 BFF7 9F5A 9F61 BFF8 9F62 9F63 9F64 - BFF9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BFFA BFFB 9F6C 9F6D BFFC BFFD FFFD FFFD - FFFD FFFD FFFD FFFD BFFE C0A1 9F74 9F75 - C0A2 9F76 9F77 9F78 C0A3 9F79 9F7A 9F81 - 9F82 9F83 9F84 9F85 C0A4 C0A5 9F86 9F87 - 9F88 C0A6 FFFD FFFD FFFD FFFD FFFD FFFD - C0A7 C0A8 9F8F 9F90 C0A9 9F91 9F92 9F93 - C0AA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C0AB C0AC 9F9B C0AD 9F9C C0AE FFFD FFFD - FFFD FFFD FFFD FFFD C0AF C0B0 9FA3 9FA4 - C0B1 9FA5 9FA6 9FA7 C0B2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C0B3 C0B4 9FAF C0B5 - 9FB0 C0B6 9FB1 C0B7 9FB2 9FB3 9FB4 9FB5 - C0B8 C0B9 9FB6 9FB7 C0BA 9FB8 9FB9 9FBA - C0BB 9FBB 9FBC 9FBD 9FBE 9FBF C0BC 9FC0 - C0BD C0BE 9FC1 C0BF 9FC2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9FC3 9FC4 9FC5 - C0C8 9FC6 9FC7 9FC8 C0C9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C0CA 9FD0 9FD1 C0CB - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C0CC C0CD 9FDA 9FDB C0CE 9FDC 9FDD 9FDE - C0CF C0D0 C0D1 9FDF 9FE0 9FE1 9FE2 C0D2 - C0D3 C0D4 9FE3 C0D5 C0D6 C0D7 C0D8 9FE4 - 9FE5 9FE6 C0D9 9FE7 C0DA C0DB 9FE8 9FE9 - C0DC 9FEA C0DD C0DE C0DF 9FEB C0E0 9FEC - 9FED 9FEE 9FEF 9FF0 C0E1 C0E2 9FF1 C0E3 - C0E4 C0E5 C0E6 9FF2 9FF3 9FF4 9FF5 9FF6 - C0E7 C0E8 9FF7 9FF8 C0E9 9FF9 9FFA 9FFB - C0EA 9FFC 9FFD 9FFE A041 A042 A043 A044 - C0EB C0EC A045 C0ED C0EE C0EF FFFD FFFD - FFFD FFFD FFFD FFFD C0F0 C0F1 A04C A04D - C0F2 A04E C0F3 A04F C0F4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C0F5 A057 A058 A059 - A05A C0F6 FFFD FFFD FFFD FFFD FFFD FFFD - C0F7 A067 A068 A069 C0F8 A06A A06B A06C - C0F9 -End of Item 0440 - -Begin of Item 0441 - Format 1 - srcBegin = C7FB - srcEnd = C854 - mappingOffset = 4B6B - Mapping = - A081 A082 A083 A084 A085 C0FA C0FB A086 - A087 C0FC A088 A089 A08A C0FD A08B C0FE - A08C A08D A08E A08F A090 C1A1 C1A2 A091 - C1A3 A092 C1A4 C1A5 A093 A094 A095 A096 - A097 C1A6 C1A7 A098 A099 C1A8 A09A A09B - A09C C1A9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C1AA C1AB A0A4 C1AC A0A5 C1AD FFFD - FFFD FFFD FFFD FFFD FFFD C1AE A0AC A0AD - A0AE C1AF A0AF A0B0 A0B1 C1B0 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C1B1 C1B2 A0B9 - A0BA C1B3 C1B4 FFFD FFFD FFFD FFFD FFFD - FFFD C1B5 -End of Item 0441 - -Begin of Item 0442 - Format 1 - srcBegin = C870 - srcEnd = C8A8 - mappingOffset = 4BC5 - Mapping = - C1B6 C1B7 A0DC A0DD C1B8 A0DE A0DF A0E0 - C1B9 A0E1 C1BA A0E2 A0E3 A0E4 A0E5 A0E6 - C1BB C1BC A0E7 C1BD A0E8 C1BE C1BF C1C0 - A0E9 A0EA A0EB C1C1 C1C2 C1C3 FFFD FFFD - FFFD FFFD FFFD FFFD C1C4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C1C5 A0FA C1C6 - A0FB C1C7 A0FC A0FD A0FE A141 A142 A143 - C1C8 -End of Item 0442 - -Begin of Item 0443 - Format 1 - srcBegin = C8BC - srcEnd = C8E5 - mappingOffset = 4BFE - Mapping = - C1C9 C1CA A157 A158 A159 A15A A161 A162 - C1CB A163 A164 A165 C1CC A166 A167 A168 - C1CD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C1CE C1CF A170 C1D0 A171 C1D1 FFFD FFFD - FFFD FFFD FFFD FFFD C1D2 C1D3 A178 A179 - C1D4 A17A -End of Item 0443 - -Begin of Item 0444 - Format 1 - srcBegin = C8F5 - srcEnd = C918 - mappingOffset = 4C28 - Mapping = - C1D5 FFFD FFFD FFFD FFFD FFFD FFFD C1D6 - C1D7 A196 A197 C1D8 A198 A199 A19A C1D9 - C1DA C1DB A19B A19C A19D A19E A19F C1DC - C1DD A1A0 C1DE A241 C1DF FFFD FFFD FFFD - FFFD FFFD FFFD C1E0 -End of Item 0444 - -Begin of Item 0445 - Format 1 - srcBegin = C92C - srcEnd = C934 - mappingOffset = 4C4C - Mapping = - C1E1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C1E2 -End of Item 0445 - -Begin of Item 0446 - Format 1 - srcBegin = C950 - srcEnd = C97C - mappingOffset = 4C55 - Mapping = - C1E3 C1E4 A289 A28A C1E5 A28B A28C A28D - C1E6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C1E7 C1E8 A295 C1E9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C1EA A29E A29F A2A0 - C1EB A341 A342 A343 C1EC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C1ED -End of Item 0446 - -Begin of Item 0447 - Format 1 - srcBegin = C988 - srcEnd = C99D - mappingOffset = 4C82 - Mapping = - C1EE C1EF A356 A357 C1F0 A358 A359 A35A - C1F1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C1F2 C1F3 A368 C1F4 A369 C1F5 -End of Item 0447 - -Begin of Item 0448 - Format 1 - srcBegin = C9C0 - srcEnd = CA18 - mappingOffset = 4C98 - Mapping = - C1F6 C1F7 A392 A393 C1F8 A394 A395 C1F9 - C1FA A396 C1FB A397 A398 A399 A39A A39B - C1FC C1FD A39C C1FE A39D C2A1 C2A2 A39E - A39F C2A3 C2A4 A3A0 C2A5 C2A6 A441 A442 - C2A7 A443 C2A8 A444 C2A9 A445 A446 C2AA - A447 A448 A449 A44A C2AB C2AC A44B C2AD - C2AE C2AF FFFD FFFD FFFD FFFD FFFD FFFD - C2B0 C2B1 A452 A453 C2B2 A454 A455 A456 - C2B3 A457 A458 A459 A45A A461 A462 A463 - C2B4 C2B5 A464 C2B6 C2B7 C2B8 FFFD FFFD - FFFD FFFD FFFD FFFD C2B9 A46B A46C A46D - C2BA -End of Item 0448 - -Begin of Item 0449 - Format 1 - srcBegin = CA26 - srcEnd = CA29 - mappingOffset = 4CF1 - Mapping = - A481 A482 A483 C2BB -End of Item 0449 - -Begin of Item 044A - Format 1 - srcBegin = CA47 - srcEnd = CA6A - mappingOffset = 4CF5 - Mapping = - A541 A542 A543 A544 A545 C2BC C2BD A546 - A547 C2BE A548 A549 A54A C2BF FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C2C0 C2C1 A552 - C2C2 C2C3 C2C4 FFFD FFFD FFFD FFFD FFFD - FFFD C2C5 A559 A55A -End of Item 044A - -Begin of Item 044B - Format 1 - srcBegin = CA7D - srcEnd = CA86 - mappingOffset = 4D19 - Mapping = - C2C6 FFFD FFFD FFFD FFFD FFFD FFFD C2C7 - A579 A57A -End of Item 044B - -Begin of Item 044C - Format 2 - srcBegin = CA98 - destBegin = C2C8 -End of Item 044C - -Begin of Item 044D - Format 1 - srcBegin = CABC - srcEnd = CAF4 - mappingOffset = 4D23 - Mapping = - C2C9 C2CA A655 A656 C2CB A657 A658 A659 - C2CC A65A FFFD FFFD FFFD FFFD FFFD FFFD - C2CD C2CE A667 C2CF A668 C2D0 A669 C2D1 - A66A A66B A66C A66D C2D2 C2D3 FFFD FFFD - FFFD FFFD FFFD FFFD C2D4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A681 A682 A683 A684 - C2D5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C2D6 -End of Item 044D - -Begin of Item 044E - Format 1 - srcBegin = CB08 - srcEnd = CB21 - mappingOffset = 4D5C - Mapping = - C2D7 A69F A6A0 A741 A742 A743 A744 A745 - C2D8 A746 A747 A748 C2D9 A749 A74A A74B - C2DA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C2DB C2DC -End of Item 044E - -Begin of Item 044F - Format 1 - srcBegin = CB41 - srcEnd = CB64 - mappingOffset = 4D76 - Mapping = - C2DD A778 A779 A77A A781 A782 A783 C2DE - C2DF A784 A785 C2E0 A786 A787 A788 C2E1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C2E2 - C2E3 A790 A791 A792 C2E4 FFFD FFFD FFFD - FFFD FFFD FFFD C2E5 -End of Item 044F - -Begin of Item 0450 - Format 1 - srcBegin = CB78 - srcEnd = CB79 - mappingOffset = 4D9A - Mapping = - C2E6 C2E7 -End of Item 0450 - -Begin of Item 0451 - Format 2 - srcBegin = CB9C - destBegin = C2E8 -End of Item 0451 - -Begin of Item 0452 - Format 2 - srcBegin = CBB8 - destBegin = C2E9 -End of Item 0452 - -Begin of Item 0453 - Format 2 - srcBegin = CBD4 - destBegin = C2EA -End of Item 0453 - -Begin of Item 0454 - Format 1 - srcBegin = CBE0 - srcEnd = CBE9 - mappingOffset = 4D9C - Mapping = - A961 A962 A963 A964 C2EB A965 A966 C2EC - A967 C2ED -End of Item 0454 - -Begin of Item 0455 - Format 1 - srcBegin = CC0C - srcEnd = CC75 - mappingOffset = 4DA6 - Mapping = - C2EE C2EF A990 A991 C2F0 A992 A993 A994 - C2F1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C2F2 C2F3 A99C A99D A99E C2F4 C2F5 A99F - A9A0 AA41 AA42 C2F6 C2F7 C2F8 AA43 AA44 - C2F9 AA45 C2FA AA46 C2FB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C2FC C2FD AA4E C2FE - C3A1 C3A2 C3A3 AA4F AA50 AA51 AA52 AA53 - C3A4 C3A5 AA54 AA55 C3A6 AA56 AA57 AA58 - C3A7 AA59 AA5A AA61 AA62 AA63 AA64 AA65 - C3A8 C3A9 AA66 C3AA C3AB C3AC FFFD FFFD - FFFD FFFD FFFD FFFD C3AD AA6D AA6E AA6F - C3AE AA70 C3AF AA71 C3B0 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C3B1 AA79 AA7A AA81 - AA82 C3B2 -End of Item 0455 - -Begin of Item 0456 - Format 1 - srcBegin = CC94 - srcEnd = CCD4 - mappingOffset = 4E10 - Mapping = - AB41 AB42 AB43 AB44 C3B3 C3B4 AB45 AB46 - C3B5 AB47 AB48 AB49 C3B6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C3B7 C3B8 AB51 C3B9 - C3BA C3BB FFFD FFFD FFFD FFFD FFFD FFFD - C3BC C3BD AB58 AB59 C3BE AB5A AB61 AB62 - C3BF FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C3C0 C3C1 AB6A C3C2 AB6B C3C3 FFFD FFFD - FFFD FFFD FFFD FFFD C3C4 AB72 AB73 AB74 - C3C5 -End of Item 0456 - -Begin of Item 0457 - Format 1 - srcBegin = CCE4 - srcEnd = CCF0 - mappingOffset = 4E51 - Mapping = - C3C6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C3C7 AB91 AB92 AB93 C3C8 -End of Item 0457 - -Begin of Item 0458 - Format 1 - srcBegin = CCFE - srcEnd = CD2C - mappingOffset = 4E5E - Mapping = - AC41 AC42 AC43 C3C9 FFFD FFFD FFFD FFFD - FFFD FFFD C3CA C3CB AC4A AC4B C3CC AC4C - AC4D AC4E C3CD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C3CE C3CF AC56 C3D0 AC57 C3D1 - AC58 AC59 AC5A AC61 AC62 AC63 C3D2 AC64 - AC65 AC66 C3D3 AC67 AC68 AC69 C3D4 -End of Item 0458 - -Begin of Item 0459 - Format 1 - srcBegin = CD39 - srcEnd = CD3E - mappingOffset = 4E8D - Mapping = - C3D5 AC76 AC77 AC78 AC79 AC7A -End of Item 0459 - -Begin of Item 045A - Format 1 - srcBegin = CD5C - srcEnd = CD78 - mappingOffset = 4E93 - Mapping = - C3D6 AC9E AC9F ACA0 C3D7 AD41 AD42 AD43 - C3D8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C3D9 C3DA AD4B C3DB AD4C C3DC FFFD FFFD - FFFD FFFD FFFD FFFD C3DD -End of Item 045A - -Begin of Item 045B - Format 2 - srcBegin = CD88 - destBegin = C3DE -End of Item 045B - -Begin of Item 045C - Format 1 - srcBegin = CD94 - srcEnd = CDB0 - mappingOffset = 4EB0 - Mapping = - C3DF C3E0 AD73 AD74 C3E1 AD75 AD76 AD77 - C3E2 AD78 AD79 AD7A AD81 AD82 AD83 AD84 - C3E3 C3E4 AD85 C3E5 AD86 C3E6 FFFD FFFD - FFFD FFFD FFFD FFFD C3E7 -End of Item 045C - -Begin of Item 045D - Format 1 - srcBegin = CDC4 - srcEnd = CDD0 - mappingOffset = 4ECD - Mapping = - C3E8 ADA0 FFFD FFFD FFFD FFFD FFFD FFFD - C3E9 AE47 AE48 AE49 C3EA -End of Item 045D - -Begin of Item 045E - Format 1 - srcBegin = CDE8 - srcEnd = CE35 - mappingOffset = 4EDA - Mapping = - C3EB AE67 AE68 AE69 C3EC AE6A AE6B AE6C - C3ED FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C3EE C3EF AE74 C3F0 AE75 C3F1 AE76 AE77 - AE78 AE79 AE7A AE81 C3F2 AE82 AE83 AE84 - C3F3 AE85 AE86 AE87 C3F4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C3F5 AE8F AE90 AE91 - AE92 C3F6 FFFD FFFD FFFD FFFD FFFD FFFD - C3F7 C3F8 AE99 AE9A C3F9 AE9B AE9C AE9D - C3FA AE9E AE9F AEA0 AF41 AF42 AF43 AF44 - C3FB C3FC AF45 C3FD AF46 C3FE -End of Item 045E - -Begin of Item 045F - Format 1 - srcBegin = CE58 - srcEnd = CEAD - mappingOffset = 4F28 - Mapping = - C4A1 C4A2 AF6F AF70 C4A3 AF71 AF72 C4A4 - C4A5 C4A6 FFFD FFFD FFFD FFFD FFFD FFFD - C4A7 C4A8 AF79 C4A9 AF7A C4AA FFFD FFFD - FFFD FFFD FFFD FFFD C4AB C4AC AF87 AF88 - C4AD AF89 AF8A AF8B C4AE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C4AF C4B0 AF93 C4B1 - AF94 C4B2 FFFD FFFD FFFD FFFD FFFD FFFD - C4B3 C4B4 AF9B AF9C C4B5 AF9D AF9E AF9F - C4B6 AFA0 FFFD FFFD FFFD FFFD FFFD FFFD - C4B7 C4B8 B047 C4B9 C4BA C4BB FFFD FFFD - FFFD FFFD FFFD FFFD C4BC C4BD -End of Item 045F - -Begin of Item 0460 - Format 2 - srcBegin = CEC1 - destBegin = C4BE -End of Item 0460 - -Begin of Item 0461 - Format 1 - srcBegin = CEE4 - srcEnd = CF38 - mappingOffset = 4F7E - Mapping = - C4BF C4C0 B08F B090 C4C1 B091 B092 C4C2 - C4C3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C4C4 C4C5 B09A C4C6 C4C7 C4C8 FFFD FFFD - FFFD FFFD FFFD FFFD C4C9 C4CA B141 B142 - C4CB B143 B144 B145 C4CC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C4CD C4CE B14D C4CF - B14E C4D0 FFFD FFFD FFFD FFFD FFFD FFFD - C4D1 B155 B156 B157 C4D2 B158 B159 B15A - C4D3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C4D4 C4D5 B168 C4D6 C4D7 C4D8 FFFD FFFD - FFFD FFFD FFFD FFFD C4D9 -End of Item 0461 - -Begin of Item 0462 - Format 1 - srcBegin = CF54 - srcEnd = CF8D - mappingOffset = 4FD3 - Mapping = - C4DA C4DB B190 B191 C4DC B192 B193 B194 - C4DD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C4DE C4DF B19C C4E0 B19D C4E1 B19E B19F - B1A0 B241 B242 B243 C4E2 C4E3 B244 B245 - C4E4 B246 B247 B248 C4E5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C4E6 B250 B251 B252 - B253 C4E7 FFFD FFFD FFFD FFFD FFFD FFFD - C4E8 B25A -End of Item 0462 - -Begin of Item 0463 - Format 1 - srcBegin = CFA1 - srcEnd = CFB0 - mappingOffset = 500D - Mapping = - C4E9 FFFD FFFD FFFD FFFD FFFD FFFD C4EA - B27A FFFD FFFD FFFD FFFD FFFD FFFD C4EB -End of Item 0463 - -Begin of Item 0464 - Format 2 - srcBegin = CFC4 - destBegin = C4EC -End of Item 0464 - -Begin of Item 0465 - Format 1 - srcBegin = CFE0 - srcEnd = D004 - mappingOffset = 501D - Mapping = - C4ED C4EE B355 B356 C4EF B357 B358 B359 - C4F0 B35A FFFD FFFD FFFD FFFD FFFD FFFD - C4F1 C4F2 B367 C4F3 B368 C4F4 FFFD FFFD - FFFD FFFD FFFD FFFD C4F5 B36F B370 B371 - C4F6 B372 B373 B374 C4F7 -End of Item 0465 - -Begin of Item 0466 - Format 1 - srcBegin = D011 - srcEnd = D018 - mappingOffset = 5042 - Mapping = - C4F8 FFFD FFFD FFFD FFFD FFFD FFFD C4F9 -End of Item 0466 - -Begin of Item 0467 - Format 1 - srcBegin = D02D - srcEnd = D060 - mappingOffset = 504A - Mapping = - C4FA FFFD FFFD FFFD FFFD FFFD FFFD C4FB - C4FC B447 B448 C4FD B449 B44A B44B C4FE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C5A1 - C5A2 B453 C5A3 B454 C5A4 FFFD FFFD FFFD - FFFD FFFD FFFD C5A5 B461 B462 B463 C5A6 - B464 B465 B466 C5A7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C5A8 -End of Item 0467 - -Begin of Item 0468 - Format 1 - srcBegin = D06C - srcEnd = D081 - mappingOffset = 507E - Mapping = - C5A9 C5AA B479 B47A C5AB B481 B482 B483 - C5AC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C5AD C5AE B48B B48C B48D C5AF -End of Item 0468 - -Begin of Item 0469 - Format 1 - srcBegin = D0A4 - srcEnd = D0F8 - mappingOffset = 5094 - Mapping = - C5B0 C5B1 B550 B551 C5B2 B552 B553 B554 - C5B3 FFFD FFFD FFFD FFFD FFFD FFFD B561 - C5B4 C5B5 B562 C5B6 B563 C5B7 FFFD FFFD - FFFD FFFD FFFD FFFD C5B8 C5B9 B56A B56B - C5BA B56C B56D B56E C5BB C5BC FFFD FFFD - FFFD FFFD FFFD FFFD C5BD C5BE B575 C5BF - C5C0 C5C1 B576 B577 B578 B579 B57A B581 - C5C2 C5C3 B582 B583 C5C4 B584 B585 B586 - C5C5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C5C6 C5C7 B58E C5C8 C5C9 C5CA FFFD FFFD - FFFD FFFD FFFD FFFD C5CB -End of Item 0469 - -Begin of Item 046A - Format 2 - srcBegin = D10D - destBegin = C5CC -End of Item 046A - -Begin of Item 046B - Format 1 - srcBegin = D130 - srcEnd = D16D - mappingOffset = 50E9 - Mapping = - C5CD C5CE B671 B672 C5CF B673 B674 B675 - C5D0 B676 C5D1 B677 B678 B679 B67A B681 - C5D2 C5D3 B682 C5D4 C5D5 C5D6 FFFD FFFD - FFFD FFFD FFFD FFFD C5D7 C5D8 B689 B68A - C5D9 B68B B68C B68D C5DA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C5DB C5DC B695 C5DD - B696 C5DE FFFD FFFD FFFD FFFD FFFD FFFD - C5DF B69D B69E B69F C5E0 B6A0 -End of Item 046B - -Begin of Item 046C - Format 1 - srcBegin = D17C - srcEnd = D18A - mappingOffset = 5127 - Mapping = - C5E1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C5E2 B756 B757 B758 C5E3 B759 B75A -End of Item 046C - -Begin of Item 046D - Format 1 - srcBegin = D1A0 - srcEnd = D1C0 - mappingOffset = 5136 - Mapping = - C5E4 C5E5 B776 B777 C5E6 B778 B779 B77A - C5E7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C5E8 C5E9 B788 C5EA B789 C5EB B78A B78B - B78C B78D C5EC B78E C5ED B78F B790 B791 - C5EE -End of Item 046D - -Begin of Item 046E - Format 2 - srcBegin = D1D8 - destBegin = C5EF -End of Item 046E - -Begin of Item 046F - Format 1 - srcBegin = D1F4 - srcEnd = D1F8 - mappingOffset = 5157 - Mapping = - C5F0 B86A B86B B86C C5F1 -End of Item 046F - -Begin of Item 0470 - Format 1 - srcBegin = D207 - srcEnd = D210 - mappingOffset = 515C - Mapping = - C5F2 B881 C5F3 FFFD FFFD FFFD FFFD FFFD - FFFD C5F4 -End of Item 0470 - -Begin of Item 0471 - Format 1 - srcBegin = D22A - srcEnd = D24C - mappingOffset = 5166 - Mapping = - B941 B942 C5F5 C5F6 B943 B944 C5F7 B945 - B946 B947 C5F8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C5F9 C5FA B94F C5FB B950 C5FC - FFFD FFFD FFFD FFFD FFFD FFFD C5FD B957 - B958 B959 B95A -End of Item 0471 - -Begin of Item 0472 - Format 1 - srcBegin = D25C - srcEnd = D268 - mappingOffset = 5189 - Mapping = - C5FE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C6A1 B977 B978 B979 B97A -End of Item 0472 - -Begin of Item 0473 - Format 1 - srcBegin = D280 - srcEnd = D349 - mappingOffset = 5196 - Mapping = - C6A2 C6A3 B998 B999 C6A4 B99A B99B B99C - C6A5 B99D B99E B99F B9A0 BA41 BA42 BA43 - C6A6 C6A7 BA44 BA45 BA46 C6A8 FFFD FFFD - FFFD FFFD FFFD FFFD C6A9 BA4D BA4E BA4F - C6AA BA50 BA51 BA52 C6AB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C6AC BA5A BA61 BA62 - BA63 C6AD FFFD FFFD FFFD FFFD FFFD FFFD - C6AE C6AF BA6A BA6B C6B0 BA6C BA6D C6B1 - C6B2 BA6E C6B3 BA6F BA70 BA71 BA72 BA73 - C6B4 C6B5 BA74 C6B6 FFFD FFFD FFFD FFFD - FFFD FFFD BA81 BA82 C6B7 BA83 BA84 BA85 - C6B8 BA86 BA87 BA88 C6B9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C6BA C6BB FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C6BC C6BD BA9A BA9B C6BE BA9C BA9D BA9E - C6BF BA9F BAA0 BB41 BB42 BB43 BB44 BB45 - C6C0 C6C1 BB46 C6C2 BB47 C6C3 FFFD FFFD - FFFD FFFD FFFD FFFD C6C4 C6C5 C6C6 BB4E - C6C7 BB4F BB50 BB51 C6C8 BB52 C6C9 BB53 - BB54 BB55 BB56 BB57 C6CA C6CB BB58 C6CC - C6CD C6CE BB59 BB5A BB61 C6CF BB62 BB63 - C6D0 C6D1 BB64 BB65 C6D2 BB66 BB67 BB68 - C6D3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C6D4 C6D5 BB70 C6D6 C6D7 C6D8 FFFD FFFD - FFFD FFFD FFFD FFFD C6D9 C6DA BB77 BB78 - BB79 BB7A -End of Item 0473 - -Begin of Item 0474 - Format 1 - srcBegin = D37C - srcEnd = D408 - mappingOffset = 5260 - Mapping = - C6DB C6DC BC53 BC54 C6DD BC55 BC56 BC57 - C6DE BC58 BC59 BC5A BC61 BC62 BC63 BC64 - C6DF C6E0 BC65 C6E1 C6E2 C6E3 FFFD FFFD - FFFD FFFD FFFD FFFD C6E4 C6E5 BC6C BC6D - C6E6 BC6E BC6F BC70 C6E7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C6E8 C6E9 BC78 C6EA - BC79 C6EB BC7A BC81 BC82 BC83 BC84 BC85 - C6EC BC86 BC87 BC88 C6ED BC89 BC8A BC8B - C6EE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C6EF C6F0 BC93 BC94 C6F1 C6F2 FFFD FFFD - FFFD FFFD FFFD FFFD C6F3 FFFD FFFD FFFD - FFFD FFFD FFFD BD41 C6F4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C6F5 BD4A C6F6 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C6F7 C6F8 BD53 BD54 C6F9 BD55 BD56 BD57 - C6FA BD58 BD59 BD5A BD61 BD62 BD63 BD64 - C6FB C6FC BD65 C6FD BD66 C6FE FFFD FFFD - FFFD FFFD FFFD FFFD C7A1 -End of Item 0474 - -Begin of Item 0475 - Format 2 - srcBegin = D41D - destBegin = C7A2 -End of Item 0475 - -Begin of Item 0476 - Format 1 - srcBegin = D440 - srcEnd = D444 - mappingOffset = 52ED - Mapping = - C7A3 BE49 BE4A BE4B C7A4 -End of Item 0476 - -Begin of Item 0477 - Format 1 - srcBegin = D45C - srcEnd = D494 - mappingOffset = 52F2 - Mapping = - C7A5 BE69 BE6A BE6B C7A6 BE6C BE6D BE6E - C7A7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C7A8 BE77 C7A9 BE78 BE79 BE7A BE81 - BE82 BE83 BE84 BE85 C7AA C7AB BE86 BE87 - C7AC BE88 BE89 C7AD C7AE BE8A C7AF BE8B - BE8C BE8D BE8E BE8F C7B0 C7B1 BE90 C7B2 - BE91 C7B3 FFFD FFFD FFFD FFFD FFFD FFFD - C7B4 -End of Item 0477 - -Begin of Item 0478 - Format 2 - srcBegin = D4A9 - destBegin = C7B5 -End of Item 0478 - -Begin of Item 0479 - Format 1 - srcBegin = D4CC - srcEnd = D517 - mappingOffset = 532B - Mapping = - C7B6 BF74 BF75 BF76 C7B7 BF77 BF78 BF79 - C7B8 BF7A FFFD FFFD FFFD FFFD FFFD FFFD - C7B9 BF87 BF88 C7BA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C7BB BF91 BF92 BF93 - C7BC BF94 BF95 BF96 C7BD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C7BE BF9E BF9F C7BF - BFA0 C7C0 FFFD FFFD FFFD FFFD FFFD FFFD - C7C1 C047 C048 C049 C7C2 C04A C04B C04C - C7C3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C7C4 C7C5 C054 C7C6 -End of Item 0479 - -Begin of Item 047A - Format 1 - srcBegin = D538 - srcEnd = D590 - mappingOffset = 5377 - Mapping = - C081 C082 C083 C084 C7C7 C7C8 C085 C086 - C7C9 C087 C088 C089 C7CA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C7CB C7CC C091 C7CD - C092 C7CE FFFD FFFD FFFD FFFD FFFD FFFD - C7CF C7D0 C099 C09A C7D1 C09B C09C C09D - C7D2 C09E C09F C0A0 C141 C7D3 C142 C143 - C7D4 C7D5 C144 C7D6 C145 C7D7 FFFD FFFD - FFFD FFFD FFFD FFFD C7D8 C7D9 C14C C14D - C7DA C14E C14F C150 C7DB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C7DC C7DD C158 C7DE - C7DF C7E0 C159 C15A C161 C162 C163 C164 - C7E1 -End of Item 047A - -Begin of Item 047B - Format 1 - srcBegin = D5A5 - srcEnd = D5A7 - mappingOffset = 53D0 - Mapping = - C7E2 C179 C17A -End of Item 047B - -Begin of Item 047C - Format 1 - srcBegin = D5C8 - srcEnd = D674 - mappingOffset = 53D3 - Mapping = - C7E3 C7E4 C241 C242 C7E5 C243 C244 C245 - C7E6 C246 C7E7 C247 C248 C249 C24A C24B - C7E8 C7E9 C24C C7EA C24D C7EB FFFD FFFD - FFFD FFFD FFFD FFFD C7EC C7ED C254 C255 - C7EE C256 C257 C258 C7EF C259 C25A C261 - C262 C263 C264 C265 C7F0 C7F1 C266 C7F2 - C267 C7F3 FFFD FFFD FFFD FFFD FFFD FFFD - C7F4 C7F5 C26E C26F C7F6 C270 C271 C272 - C7F7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C7F8 C7F9 C27A C7FA C7FB C7FC FFFD FFFD - FFFD FFFD FFFD FFFD C7FD C287 C288 C289 - C7FE C28A C28B C28C C8A1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C8A2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C8A3 C8A4 C29F C2A0 C8A5 C341 C342 C343 - C8A6 C344 C345 C346 C347 C8A7 C348 C349 - C8A8 C8A9 C34A C8AA C34B C8AB C34C C34D - C34E C8AC C34F C350 C8AD C8AE C351 C352 - C8AF C353 C354 C355 C8B0 C356 C357 C358 - C359 C35A C361 C362 C363 C364 C365 C8B1 - C366 C8B2 FFFD FFFD FFFD FFFD FFFD FFFD - C8B3 C8B4 C36D C36E C8B5 -End of Item 047C - -Begin of Item 047D - Format 1 - srcBegin = D681 - srcEnd = D704 - mappingOffset = 5480 - Mapping = - C381 C382 C8B6 C383 C8B7 FFFD FFFD FFFD - FFFD FFFD FFFD C8B8 C8B9 C38A C38B C8BA - C38C C38D C38E C8BB FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C8BC C397 C8BD C398 - C8BE FFFD FFFD FFFD FFFD FFFD FFFD C8BF - C39F C3A0 C441 C8C0 C442 C443 C444 C8C1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C8C2 C44D C8C3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C8C4 C8C5 C456 C457 C8C6 - C458 C459 C45A C8C7 C461 C462 C463 C464 - C8C8 C465 C466 C8C9 C467 C468 C8CA C469 - C8CB FFFD FFFD FFFD FFFD FFFD FFFD C8CC - C470 C471 C472 C8CD C473 C474 C475 C8CE - C476 C477 C478 C479 C47A C481 C482 C8CF - C483 C484 C485 C486 C8D0 FFFD FFFD FFFD - FFFD FFFD FFFD C8D1 C8D2 C48D C48E C8D3 - C48F C490 C491 C8D4 -End of Item 047D - -Begin of Item 047E - Format 1 - srcBegin = D711 - srcEnd = D79D - mappingOffset = 5504 - Mapping = - C8D5 C49E C49F C4A0 C541 C542 C543 C8D6 - C8D7 C544 C545 C8D8 C546 C547 C548 C8D9 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C8DA - C8DB C550 C8DC C551 C8DD FFFD FFFD FFFD - FFFD FFFD FFFD C8DE C8DF C558 C559 C8E0 - C55A C561 C562 C8E1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C8E2 C56A C56B C8E3 C56C - C8E4 FFFD FFFD FFFD FFFD FFFD FFFD C8E5 - C8E6 C573 C574 C8E7 C575 C8E8 C8E9 C8EA - C8EB C576 C577 C578 C579 C57A C581 C8EC - C8ED C582 C8EE C583 C8EF C584 C585 C586 - C8F0 C587 C588 C8F1 C589 C58A C58B C8F2 - C58C C58D C58E C8F3 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C8F4 C8F5 C596 C597 C598 - C8F6 FFFD FFFD FFFD FFFD FFFD FFFD C8F7 - C8F8 C59F C5A0 C8F9 C641 C642 C643 C8FA - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C8FB - C8FC C64B C8FD C64C C8FE -End of Item 047E - -Begin of Item 047F - Format 1 - srcBegin = F900 - srcEnd = F932 - mappingOffset = 5591 - Mapping = - CBD0 CBD6 CBE7 CDCF CDE8 CEAD CFFB D0A2 - D0B8 D0D0 D0DD D1D4 D1D5 D1D8 FFFD FFFD - FFFD FFFD FFFD FFFD D1E2 D1E3 D1E4 D1E5 - D1E6 D1E8 D1E9 D1EA D1EB D1ED D1EF D1F0 - D1F2 D1F6 D1FA D1FC D1FD D1FE D2A2 D2A3 - D2A7 D2A8 D2A9 D2AA D2AB D2AD D2B2 D2BE - D2C2 D2C3 D2C4 -End of Item 047F - -Begin of Item 0480 - Format 1 - srcBegin = F944 - srcEnd = F949 - mappingOffset = 55C4 - Mapping = - D2D9 D2DA D2DE D2DF D2E1 D2E2 -End of Item 0480 - -Begin of Item 0481 - Format 1 - srcBegin = F958 - srcEnd = FA0B - mappingOffset = 55CA - Mapping = - D2F7 D2F8 D4E6 D4FC D5A5 D5AB D5AE D6B8 - D6CD D7CB D7E4 DBC5 DBE4 DCA5 DDA5 DDD5 - DDF4 DEFC DEFE DFB3 DFE1 DFE8 E0F1 E1AD - E1ED E3F5 E4A1 E4A9 E5AE E5B1 E5B2 E5B9 - E5BB E5BC E5C4 E5CE E5D0 E5D2 E5D6 E5FA - E5FB E5FC E5FE E6A1 E6A4 E6A7 E6AD E6AF - E6B0 E6B1 E6B3 E6B7 E6B8 E6BC E6C4 E6C6 - E6C7 E6CA E6D2 E6D6 E6D9 E6DC E6DF E6E1 - E6E4 E6E5 E6E6 E6E8 E6EA E6EB E6EC E6EF - E6F1 E6F2 E6F5 E6F6 E6F7 E6F9 E7A1 E7A6 - E7A9 E7AA E7AC E7AD E7B0 E7BF E7C1 E7C6 - E7C7 E7CB E7CD E7CF E7D0 E7D3 E7DF E7E4 - E7E6 E7F7 E8E7 E8E8 E8F0 E8F1 E8F7 E8F9 - E8FB E8FE E9A7 E9AC E9CC E9F7 EAC1 EAE5 - EAF4 EAF7 EAFC EAFE EBA4 EBA7 EBA9 EBAA - EBBA EBBB EBBD EBC1 EBC2 EBC6 EBC7 EBCC - EBCF EBD0 EBD1 EBD2 EBD8 ECA6 ECA7 ECAA - ECAF ECB0 ECB1 ECB2 ECB5 ECB8 ECBA ECC0 - ECC1 ECC5 ECC6 ECC9 ECCA ECD5 ECDD ECDE - ECE1 ECE4 ECE7 ECE8 ECF7 ECF8 ECFA EDA1 - EDA2 EDA3 EDEE EEDB F2BD F2FA F3B1 F4A7 - F4EE F6F4 F6F6 F7B8 F7C8 F7D3 F8DB F8F0 - FAA1 FAA2 FAE6 FCA9 -End of Item 0481 - -Begin of Item 0482 - Format 2 - srcBegin = FF3C - destBegin = A1AC -End of Item 0482 - -Begin of Item 0483 - Format 2 - srcBegin = FF5E - destBegin = A2A6 -End of Item 0483 - -Begin of Item 0484 - Format 1 - srcBegin = FFE0 - srcEnd = FFE6 - mappingOffset = 567E - Mapping = - A1CB A1CC A1FE A3FE FFFD A1CD A3DC -End of Item 0484 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0485, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0126, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0EB5, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0261 */ -/* Total of Format 1 : 0x01D1 */ -/* Total of Format 2 : 0x0053 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x1210, 0x2211, 0x1111, 0x2111, 0x2211, 0x1212, 0x1111, 0x2211, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x2111, -0x1121, 0x1111, 0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1211, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x2111, 0x1111, 0x1111, 0x2112, 0x2111, 0x1111, 0x1221, -0x1121, 0x1111, 0x1111, 0x1111, 0x1121, 0x1111, 0x2111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1121, 0x1111, 0x1112, 0x1111, -0x2211, 0x1121, 0x1111, 0x2111, 0x1111, 0x1111, 0x2211, 0x1111, -0x1111, 0x2111, 0x1111, 0x2211, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1221, 0x1222, 0x1112, 0x1111, 0x1111, 0x1111, -0x2111, 0x2112, 0x2121, 0x1221, 0x1121, 0x1212, 0x1122, 0x1122, -0x2111, 0x1221, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1112, 0x2111, 0x1121, 0x1112, 0x1121, 0x1211, 0x1111, 0x1111, -0x1111, 0x2111, 0x1111, 0x1122, 0x1111, 0x2121, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1112, 0x2221, 0x1111, 0x2111, 0x1111, -0x1112, 0x1112, 0x1211, 0x1211, 0x1111, 0x1121, 0x1112, 0x1111, -0x2211, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0126 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0391, 0x03A1, 0xA5C1, -/* 0002 */ 0x03A3, 0x03A9, 0xA5D2, -/* 0003 */ 0x03B1, 0x03C1, 0xA5E1, -/* 0004 */ 0x03C3, 0x03C9, 0xA5F2, -/* 0005 */ 0x0410, 0x0415, 0xACA1, -/* 0006 */ 0x0416, 0x042F, 0xACA8, -/* 0007 */ 0x0430, 0x0435, 0xACD1, -/* 0008 */ 0x0436, 0x044F, 0xACD8, -/* 0009 */ 0x2160, 0x2169, 0xA5B0, -/* 000A */ 0x2170, 0x2179, 0xA5A1, -/* 000B */ 0x2460, 0x246E, 0xA8E7, -/* 000C */ 0x2474, 0x2482, 0xA9E7, -/* 000D */ 0x249C, 0x24B5, 0xA9CD, -/* 000E */ 0x24D0, 0x24E9, 0xA8CD, -/* 000F */ 0x2543, 0x254A, 0xA6DD, -/* 0010 */ 0x3008, 0x3011, 0xA1B4, -/* 0011 */ 0x3041, 0x3093, 0xAAA1, -/* 0012 */ 0x30A1, 0x30F6, 0xABA1, -/* 0013 */ 0x3131, 0x318E, 0xA4A1, -/* 0014 */ 0x3200, 0x321B, 0xA9B1, -/* 0015 */ 0x3260, 0x327B, 0xA8B1, -/* 0016 */ 0x3399, 0x33A2, 0xA7AB, -/* 0017 */ 0x33B0, 0x33B9, 0xA7BF, -/* 0018 */ 0x33BA, 0x33BF, 0xA7CE, -/* 0019 */ 0xAC10, 0xAC17, 0xB0A8, -/* 001A */ 0xAC25, 0xAC2B, 0x8150, -/* 001B */ 0xAC41, 0xAC4A, 0x8169, -/* 001C */ 0xAC4E, 0xAC53, 0x8174, -/* 001D */ 0xAC5D, 0xAC6F, 0x8186, -/* 001E */ 0xAC95, 0xAC9B, 0x81AC, -/* 001F */ 0xACA2, 0xACA7, 0x81B4, -/* 0020 */ 0xACB1, 0xACB7, 0x81BD, -/* 0021 */ 0xACCD, 0xACD4, 0x81D0, -/* 0022 */ 0xACD8, 0xACDF, 0x81D9, -/* 0023 */ 0xAD21, 0xAD28, 0x824B, -/* 0024 */ 0xAD2E, 0xAD33, 0x8255, -/* 0025 */ 0xAD3D, 0xAD43, 0x8266, -/* 0026 */ 0xAD4A, 0xAD4F, 0x826F, -/* 0027 */ 0xAD59, 0xAD60, 0x8281, -/* 0028 */ 0xAD64, 0xAD6B, 0x828A, -/* 0029 */ 0xAD91, 0xAD9B, 0x82A6, -/* 002A */ 0xAD9E, 0xADA3, 0x82B1, -/* 002B */ 0xADA5, 0xADB6, 0x82B7, -/* 002C */ 0xADB8, 0xADBF, 0x82C9, -/* 002D */ 0xADC9, 0xADCF, 0x82D6, -/* 002E */ 0xADD4, 0xADDB, 0x82DE, -/* 002F */ 0xADE5, 0xADF7, 0x82EC, -/* 0030 */ 0xAE02, 0xAE07, 0x8345, -/* 0031 */ 0xAE0E, 0xAE13, 0x834D, -/* 0032 */ 0xAE15, 0xAE1C, 0x8353, -/* 0033 */ 0xAE1D, 0xAE2F, 0x8361, -/* 0034 */ 0xAE71, 0xAE77, 0x839F, -/* 0035 */ 0xAE7E, 0xAE83, 0x83A7, -/* 0036 */ 0xAE86, 0xAE8B, 0x83AD, -/* 0037 */ 0xAE8D, 0xAEBB, 0x83B3, -/* 0038 */ 0xAEC5, 0xAECB, 0x83E6, -/* 0039 */ 0xAED2, 0xAED7, 0x83EE, -/* 003A */ 0xAEDD, 0xAEE5, 0x83F6, -/* 003B */ 0xAEEE, 0xAEF3, 0x8446, -/* 003C */ 0xAEFD, 0xAF05, 0x8452, -/* 003D */ 0xAF11, 0xAF23, 0x8468, -/* 003E */ 0xAF24, 0xAF2B, 0x8481, -/* 003F */ 0xAF35, 0xAF3B, 0x848D, -/* 0040 */ 0xAF4A, 0xAF4F, 0x849A, -/* 0041 */ 0xAF51, 0xAF5B, 0x84A0, -/* 0042 */ 0xAF5E, 0xAF63, 0x84AB, -/* 0043 */ 0xAF66, 0xAF78, 0x84B1, -/* 0044 */ 0xAF7A, 0xAF7F, 0x84C4, -/* 0045 */ 0xAF89, 0xAF8F, 0x84D0, -/* 0046 */ 0xAF96, 0xAF9B, 0x84DA, -/* 0047 */ 0xAF9D, 0xAFB7, 0x84E0, -/* 0048 */ 0xAFC1, 0xAFC6, 0x8542, -/* 0049 */ 0xAFD5, 0xAFDB, 0x854F, -/* 004A */ 0xAFE2, 0xAFE7, 0x8561, -/* 004B */ 0xAFEA, 0xAFEF, 0x8567, -/* 004C */ 0xAFF9, 0xAFFF, 0x8572, -/* 004D */ 0xB005, 0xB00B, 0x8581, -/* 004E */ 0xB015, 0xB01B, 0x858E, -/* 004F */ 0xB01E, 0xB027, 0x8595, -/* 0050 */ 0xB029, 0xB043, 0x859F, -/* 0051 */ 0xB05E, 0xB07B, 0x85C8, -/* 0052 */ 0xB085, 0xB08B, 0x85EB, -/* 0053 */ 0xB092, 0xB097, 0x85F4, -/* 0054 */ 0xB0BD, 0xB0C3, 0x864C, -/* 0055 */ 0xB0CA, 0xB0CF, 0x8654, -/* 0056 */ 0xB0D9, 0xB0DF, 0x8665, -/* 0057 */ 0xB0E6, 0xB0F0, 0x8670, -/* 0058 */ 0xB0F1, 0xB107, 0x8681, -/* 0059 */ 0xB12D, 0xB133, 0x86AC, -/* 005A */ 0xB13A, 0xB13F, 0x86B4, -/* 005B */ 0xB149, 0xB14F, 0x86BF, -/* 005C */ 0xB161, 0xB177, 0x86D0, -/* 005D */ 0xB19E, 0xB1A7, 0x8741, -/* 005E */ 0xB1A9, 0xB1B8, 0x874B, -/* 005F */ 0xB1B9, 0xB1CB, 0x8761, -/* 0060 */ 0xB1D6, 0xB1DB, 0x8781, -/* 0061 */ 0xB1E0, 0xB1E7, 0x8788, -/* 0062 */ 0xB1F1, 0xB1F8, 0x8795, -/* 0063 */ 0xB1FE, 0xB203, 0x879F, -/* 0064 */ 0xB20D, 0xB213, 0x87A9, -/* 0065 */ 0xB21A, 0xB21F, 0x87B2, -/* 0066 */ 0xB221, 0xB233, 0x87B8, -/* 0067 */ 0xB235, 0xB23B, 0x87CB, -/* 0068 */ 0xB23D, 0xB257, 0x87D2, -/* 0069 */ 0xB261, 0xB267, 0x87F3, -/* 006A */ 0xB276, 0xB27B, 0x8846, -/* 006B */ 0xB27D, 0xB283, 0x884C, -/* 006C */ 0xB2B8, 0xB2C7, 0x8881, -/* 006D */ 0xB309, 0xB30F, 0x88B2, -/* 006E */ 0xB316, 0xB31B, 0x88BA, -/* 006F */ 0xB31D, 0xB353, 0x88C0, -/* 0070 */ 0xB379, 0xB37F, 0x894C, -/* 0071 */ 0xB386, 0xB38B, 0x8954, -/* 0072 */ 0xB395, 0xB39F, 0x8966, -/* 0073 */ 0xB3A2, 0xB3A7, 0x8971, -/* 0074 */ 0xB3AE, 0xB3C3, 0x8981, -/* 0075 */ 0xB3E9, 0xB3FB, 0x89AC, -/* 0076 */ 0xB3FD, 0xB40F, 0x89BF, -/* 0077 */ 0xB411, 0xB417, 0x89D2, -/* 0078 */ 0xB421, 0xB427, 0x89DF, -/* 0079 */ 0xB42C, 0xB433, 0x89E7, -/* 007A */ 0xB435, 0xB444, 0x89EF, -/* 007B */ 0xB445, 0xB44F, 0x8A41, -/* 007C */ 0xB459, 0xB45F, 0x8A51, -/* 007D */ 0xB46D, 0xB47F, 0x8A66, -/* 007E */ 0xB489, 0xB49C, 0x8A86, -/* 007F */ 0xB49E, 0xB4A3, 0x8A9A, -/* 0080 */ 0xB4AD, 0xB4B4, 0x8AA6, -/* 0081 */ 0xB4BA, 0xB4BF, 0x8AB0, -/* 0082 */ 0xB4C9, 0xB4CF, 0x8ABC, -/* 0083 */ 0xB4D6, 0xB4DB, 0x8AC7, -/* 0084 */ 0xB4F2, 0xB4F7, 0x8AD9, -/* 0085 */ 0xB4F9, 0xB513, 0x8ADF, -/* 0086 */ 0xB51E, 0xB523, 0x8B41, -/* 0087 */ 0xB539, 0xB53F, 0x8B52, -/* 0088 */ 0xB555, 0xB55B, 0x8B6A, -/* 0089 */ 0xB562, 0xB56A, 0x8B72, -/* 008A */ 0xB56B, 0xB59F, 0x8B81, -/* 008B */ 0xB5C5, 0xB5CB, 0x8BCB, -/* 008C */ 0xB5D2, 0xB5D7, 0x8BD3, -/* 008D */ 0xB5D9, 0xB5EB, 0x8BD9, -/* 008E */ 0xB5ED, 0xB5FF, 0x8BEC, -/* 008F */ 0xB600, 0xB60F, 0x8C41, -/* 0090 */ 0xB61E, 0xB624, 0x8C61, -/* 0091 */ 0xB626, 0xB62B, 0x8C68, -/* 0092 */ 0xB62D, 0xB633, 0x8C6E, -/* 0093 */ 0xB635, 0xB63A, 0x8C75, -/* 0094 */ 0xB63B, 0xB647, 0x8C81, -/* 0095 */ 0xB649, 0xB663, 0x8C8E, -/* 0096 */ 0xB669, 0xB69B, 0x8CAC, -/* 0097 */ 0xB6A5, 0xB6AA, 0x8CE4, -/* 0098 */ 0xB6B2, 0xB6C2, 0x8CEE, -/* 0099 */ 0xB6C3, 0xB6D3, 0x8D41, -/* 009A */ 0xB6D5, 0xB6DD, 0x8D52, -/* 009B */ 0xB6DE, 0xB6EF, 0x8D61, -/* 009C */ 0xB706, 0xB727, 0x8D89, -/* 009D */ 0xB731, 0xB737, 0x8DAF, -/* 009E */ 0xB73C, 0xB743, 0x8DB7, -/* 009F */ 0xB74D, 0xB753, 0x8DC5, -/* 00A0 */ 0xB756, 0xB75F, 0x8DCC, -/* 00A1 */ 0xB769, 0xB76F, 0x8DDC, -/* 00A2 */ 0xB776, 0xB77B, 0x8DE5, -/* 00A3 */ 0xB785, 0xB78B, 0x8DF0, -/* 00A4 */ 0xB7A1, 0xB7A7, 0x8E42, -/* 00A5 */ 0xB7AE, 0xB7B3, 0x8E4A, -/* 00A6 */ 0xB7B9, 0xB7C1, 0x8E52, -/* 00A7 */ 0xB7CA, 0xB7DD, 0x8E67, -/* 00A8 */ 0xB7DE, 0xB7EB, 0x8E81, -/* 00A9 */ 0xB7F5, 0xB7FB, 0x8E94, -/* 00AA */ 0xB811, 0xB817, 0x8EA6, -/* 00AB */ 0xB81E, 0xB823, 0x8EAF, -/* 00AC */ 0xB82D, 0xB833, 0x8EBA, -/* 00AD */ 0xB83A, 0xB83F, 0x8EC2, -/* 00AE */ 0xB845, 0xB850, 0x8ECB, -/* 00AF */ 0xB854, 0xB85B, 0x8ED8, -/* 00B0 */ 0xB865, 0xB86B, 0x8EE5, -/* 00B1 */ 0xB872, 0xB877, 0x8EEE, -/* 00B2 */ 0xB87D, 0xB884, 0x8EF7, -/* 00B3 */ 0xB885, 0xB88C, 0x8F41, -/* 00B4 */ 0xB88E, 0xB89F, 0x8F49, -/* 00B5 */ 0xB8A0, 0xB8A7, 0x8F61, -/* 00B6 */ 0xB8A9, 0xB8AF, 0x8F69, -/* 00B7 */ 0xB8C6, 0xB8CB, 0x8F85, -/* 00B8 */ 0xB8D5, 0xB8DC, 0x8F91, -/* 00B9 */ 0xB8E2, 0xB8E7, 0x8F9B, -/* 00BA */ 0xB8F1, 0xB8F7, 0x8FA6, -/* 00BB */ 0xB8FE, 0xB903, 0x8FAF, -/* 00BC */ 0xB905, 0xB917, 0x8FB5, -/* 00BD */ 0xB919, 0xB91F, 0x8FC8, -/* 00BE */ 0xB921, 0xB93B, 0x8FCF, -/* 00BF */ 0xB945, 0xB94B, 0x8FEF, -/* 00C0 */ 0xB952, 0xB957, 0x8FF9, -/* 00C1 */ 0xB961, 0xB967, 0x9046, -/* 00C2 */ 0xB96E, 0xB973, 0x904F, -/* 00C3 */ 0xB97E, 0xB983, 0x9061, -/* 00C4 */ 0xB98F, 0xB99E, 0x906B, -/* 00C5 */ 0xB99F, 0xB9AB, 0x9081, -/* 00C6 */ 0xB9B5, 0xB9BB, 0x9093, -/* 00C7 */ 0xB9C2, 0xB9C7, 0x909C, -/* 00C8 */ 0xB9ED, 0xB9F3, 0x90B4, -/* 00C9 */ 0xBA02, 0xBA07, 0x90C1, -/* 00CA */ 0xBA09, 0xBA14, 0x90C7, -/* 00CB */ 0xBA16, 0xBA37, 0x90D3, -/* 00CC */ 0xBA5D, 0xBA63, 0x914D, -/* 00CD */ 0xBA6A, 0xBA6F, 0x9155, -/* 00CE */ 0xBA79, 0xBA82, 0x9166, -/* 00CF */ 0xBA8D, 0xBA92, 0x9175, -/* 00D0 */ 0xBA93, 0xBAA7, 0x9181, -/* 00D1 */ 0xBABE, 0xBAC3, 0x91A2, -/* 00D2 */ 0xBAC9, 0xBAD7, 0x91AB, -/* 00D3 */ 0xBADA, 0xBAFB, 0x91BA, -/* 00D4 */ 0xBB05, 0xBB0C, 0x91E2, -/* 00D5 */ 0xBB12, 0xBB17, 0x91EC, -/* 00D6 */ 0xBB21, 0xBB27, 0x91F8, -/* 00D7 */ 0xBB2C, 0xBB33, 0x9243, -/* 00D8 */ 0xBB59, 0xBB60, 0x9265, -/* 00D9 */ 0xBB64, 0xBB6B, 0x926E, -/* 00DA */ 0xBB72, 0xBB87, 0x9281, -/* 00DB */ 0xBB91, 0xBBA3, 0x929D, -/* 00DC */ 0xBBAD, 0xBBB3, 0x92B6, -/* 00DD */ 0xBBB8, 0xBBBF, 0x92BF, -/* 00DE */ 0xBBC9, 0xBBCF, 0x92CD, -/* 00DF */ 0xBBD4, 0xBBF7, 0x92D6, -/* 00E0 */ 0xBC39, 0xBC3F, 0x9363, -/* 00E1 */ 0xBC51, 0xBC59, 0x9372, -/* 00E2 */ 0xBC5E, 0xBC83, 0x9384, -/* 00E3 */ 0xBCA9, 0xBCAF, 0x93BF, -/* 00E4 */ 0xBCB6, 0xBCBB, 0x93C7, -/* 00E5 */ 0xBCC5, 0xBCCC, 0x93D2, -/* 00E6 */ 0xBCDD, 0xBCF3, 0x93E3, -/* 00E7 */ 0xBCFE, 0xBD03, 0x9441, -/* 00E8 */ 0xBD0A, 0xBD0F, 0x9449, -/* 00E9 */ 0xBD15, 0xBD1D, 0x9452, -/* 00EA */ 0xBD1E, 0xBD23, 0x9461, -/* 00EB */ 0xBD25, 0xBD2B, 0x9467, -/* 00EC */ 0xBD2D, 0xBD39, 0x946E, -/* 00ED */ 0xBD3A, 0xBD3F, 0x9481, -/* 00EE */ 0xBD41, 0xBD47, 0x9487, -/* 00EF */ 0xBD51, 0xBD57, 0x9493, -/* 00F0 */ 0xBD5A, 0xBD63, 0x949A, -/* 00F1 */ 0xBD69, 0xBD7F, 0x94A7, -/* 00F2 */ 0xBD9D, 0xBDA3, 0x94CD, -/* 00F3 */ 0xBDA5, 0xBDAF, 0x94D4, -/* 00F4 */ 0xBDB1, 0xBDB7, 0x94DF, -/* 00F5 */ 0xBDB9, 0xBDD1, 0x94E6, -/* 00F6 */ 0xBDDD, 0xBDE8, 0x9548, -/* 00F7 */ 0xBDEA, 0xBDEF, 0x9554, -/* 00F8 */ 0xBDF9, 0xBDFF, 0x9566, -/* 00F9 */ 0xBE06, 0xBE0B, 0x9570, -/* 00FA */ 0xBE15, 0xBE1B, 0x9581, -/* 00FB */ 0xBE20, 0xBE43, 0x9589, -/* 00FC */ 0xBE85, 0xBE8B, 0x95D4, -/* 00FD */ 0xBE92, 0xBE97, 0x95DC, -/* 00FE */ 0xBE9A, 0xBEA7, 0x95E2, -/* 00FF */ 0xBEA9, 0xBEB7, 0x95F0, -/* 0100 */ 0xBEB8, 0xBECF, 0x9641, -/* 0101 */ 0xBED9, 0xBEDF, 0x9663, -/* 0102 */ 0xBEE6, 0xBEEB, 0x966C, -/* 0103 */ 0xBEED, 0xBEF5, 0x9672, -/* 0104 */ 0xBEF6, 0xBF00, 0x9681, -/* 0105 */ 0xBF02, 0xBF07, 0x968C, -/* 0106 */ 0xBF0A, 0xBF17, 0x9692, -/* 0107 */ 0xBF1E, 0xBF3F, 0x96A1, -/* 0108 */ 0xBF49, 0xBF4F, 0x96C8, -/* 0109 */ 0xBF56, 0xBF82, 0x96D2, -/* 010A */ 0xBF83, 0xBF93, 0x9741, -/* 010B */ 0xBF95, 0xBF9D, 0x9752, -/* 010C */ 0xBF9E, 0xBFAF, 0x9761, -/* 010D */ 0xBFB1, 0xBFB8, 0x9773, -/* 010E */ 0xBFB9, 0xBFC4, 0x9781, -/* 010F */ 0xBFC6, 0xBFCB, 0x978D, -/* 0110 */ 0xBFD5, 0xBFDB, 0x9798, -/* 0111 */ 0xBFE2, 0xC03B, 0x97A2, -/* 0112 */ 0xC040, 0xC050, 0x9841, -/* 0113 */ 0xC052, 0xC057, 0x9852, -/* 0114 */ 0xC061, 0xC067, 0x9864, -/* 0115 */ 0xC06A, 0xC079, 0x986B, -/* 0116 */ 0xC07A, 0xC08F, 0x9881, -/* 0117 */ 0xC099, 0xC09F, 0x989C, -/* 0118 */ 0xC0A6, 0xC0AB, 0x98A5, -/* 0119 */ 0xC0D1, 0xC0D7, 0x98BE, -/* 011A */ 0xC0DE, 0xC0E3, 0x98C6, -/* 011B */ 0xC0ED, 0xC0F3, 0x98D1, -/* 011C */ 0xC0FA, 0xC0FF, 0x98DA, -/* 011D */ 0xC109, 0xC10F, 0x98E6, -/* 011E */ 0xC116, 0xC11B, 0x98F1, -/* 011F */ 0xC141, 0xC147, 0x994B, -/* 0120 */ 0xC14E, 0xC153, 0x9953, -/* 0121 */ 0xC15D, 0xC163, 0x9964, -/* 0122 */ 0xC16A, 0xC16F, 0x996C, -/* 0123 */ 0xC17C, 0xC184, 0x9981, -/* 0124 */ 0xC186, 0xC18B, 0x998A, -/* 0125 */ 0xC1B1, 0xC1BC, 0x99A6, -/* 0126 */ 0xC1BE, 0xC1C3, 0x99B2, -/* 0127 */ 0xC1CD, 0xC1D3, 0x99BE, -/* 0128 */ 0xC1D9, 0xC1DF, 0x99C7, -/* 0129 */ 0xC1E9, 0xC1EF, 0x99D4, -/* 012A */ 0xC1F4, 0xC1FB, 0x99DC, -/* 012B */ 0xC205, 0xC20B, 0x99E9, -/* 012C */ 0xC212, 0xC217, 0x99F2, -/* 012D */ 0xC235, 0xC245, 0x9A4A, -/* 012E */ 0xC249, 0xC24F, 0x9A63, -/* 012F */ 0xC259, 0xC25F, 0x9A6F, -/* 0130 */ 0xC275, 0xC27B, 0x9A8B, -/* 0131 */ 0xC282, 0xC287, 0x9A94, -/* 0132 */ 0xC28A, 0xC28F, 0x9A9A, -/* 0133 */ 0xC291, 0xC297, 0x9AA0, -/* 0134 */ 0xC29E, 0xC2A3, 0x9AAA, -/* 0135 */ 0xC2AE, 0xC2B3, 0x9AB5, -/* 0136 */ 0xC2BA, 0xC2DB, 0x9ABD, -/* 0137 */ 0xC2E5, 0xC2EA, 0x9AE3, -/* 0138 */ 0xC301, 0xC307, 0x9AF4, -/* 0139 */ 0xC31D, 0xC323, 0x9B49, -/* 013A */ 0xC32A, 0xC332, 0x9B52, -/* 013B */ 0xC333, 0xC344, 0x9B61, -/* 013C */ 0xC346, 0xC34D, 0x9B73, -/* 013D */ 0xC34E, 0xC367, 0x9B81, -/* 013E */ 0xC37E, 0xC383, 0x9BA8, -/* 013F */ 0xC38D, 0xC3BF, 0x9BB4, -/* 0140 */ 0xC3C1, 0xC3D7, 0x9BE7, -/* 0141 */ 0xC3EE, 0xC3F3, 0x9C4D, -/* 0142 */ 0xC3F9, 0xC3FE, 0x9C55, -/* 0143 */ 0xC3FF, 0xC407, 0x9C61, -/* 0144 */ 0xC409, 0xC40F, 0x9C6A, -/* 0145 */ 0xC411, 0xC41A, 0x9C71, -/* 0146 */ 0xC41B, 0xC423, 0x9C81, -/* 0147 */ 0xC425, 0xC42B, 0x9C8A, -/* 0148 */ 0xC435, 0xC43B, 0x9C97, -/* 0149 */ 0xC43E, 0xC447, 0x9C9E, -/* 014A */ 0xC449, 0xC463, 0x9CA8, -/* 014B */ 0xC46D, 0xC473, 0x9CC8, -/* 014C */ 0xC47A, 0xC47F, 0x9CD2, -/* 014D */ 0xC481, 0xC493, 0x9CD8, -/* 014E */ 0xC495, 0xC49B, 0x9CEB, -/* 014F */ 0xC49D, 0xC4A9, 0x9CF2, -/* 0150 */ 0xC4AA, 0xC4B7, 0x9D41, -/* 0151 */ 0xC4BD, 0xC4C5, 0x9D52, -/* 0152 */ 0xC4C6, 0xC4DF, 0x9D61, -/* 0153 */ 0xC4E0, 0xC4E8, 0x9D81, -/* 0154 */ 0xC4EA, 0xC4EF, 0x9D8A, -/* 0155 */ 0xC502, 0xC50B, 0x9D9A, -/* 0156 */ 0xC515, 0xC51B, 0x9DAA, -/* 0157 */ 0xC51D, 0xC527, 0x9DB1, -/* 0158 */ 0xC531, 0xC537, 0x9DC1, -/* 0159 */ 0xC53E, 0xC543, 0x9DCA, -/* 015A */ 0xC569, 0xC56F, 0x9DE1, -/* 015B */ 0xC576, 0xC57B, 0x9DE9, -/* 015C */ 0xC5A1, 0xC5A8, 0x9E48, -/* 015D */ 0xC5AA, 0xC5B3, 0x9E50, -/* 015E */ 0xC5C4, 0xC5CA, 0xBEF6, -/* 015F */ 0xC5D9, 0xC5DF, 0x9E70, -/* 0160 */ 0xC5FC, 0xC601, 0xBFB0, -/* 0161 */ 0xC611, 0xC617, 0x9E97, -/* 0162 */ 0xC61D, 0xC623, 0x9E9F, -/* 0163 */ 0xC649, 0xC64F, 0x9EBA, -/* 0164 */ 0xC656, 0xC65B, 0x9EC2, -/* 0165 */ 0xC661, 0xC66B, 0x9ECA, -/* 0166 */ 0xC672, 0xC677, 0x9ED8, -/* 0167 */ 0xC681, 0xC687, 0x9EE3, -/* 0168 */ 0xC68E, 0xC693, 0x9EEC, -/* 0169 */ 0xC69D, 0xC6A3, 0x9EF7, -/* 016A */ 0xC6AA, 0xC6AF, 0x9F42, -/* 016B */ 0xC6C6, 0xC6CB, 0x9F54, -/* 016C */ 0xC6D5, 0xC6DB, 0x9F65, -/* 016D */ 0xC6E2, 0xC6E7, 0x9F6E, -/* 016E */ 0xC6FE, 0xC703, 0x9F89, -/* 016F */ 0xC70D, 0xC713, 0x9F94, -/* 0170 */ 0xC71A, 0xC71F, 0x9F9D, -/* 0171 */ 0xC729, 0xC72F, 0x9FA8, -/* 0172 */ 0xC751, 0xC758, 0xC0C0, -/* 0173 */ 0xC761, 0xC767, 0x9FC9, -/* 0174 */ 0xC76C, 0xC773, 0x9FD2, -/* 0175 */ 0xC7C2, 0xC7C7, 0xA046, -/* 0176 */ 0xC7D1, 0xC7D7, 0xA050, -/* 0177 */ 0xC7DE, 0xC7E3, 0xA061, -/* 0178 */ 0xC7ED, 0xC7FA, 0xA06D, -/* 0179 */ 0xC825, 0xC82B, 0xA09D, -/* 017A */ 0xC832, 0xC837, 0xA0A6, -/* 017B */ 0xC841, 0xC847, 0xA0B2, -/* 017C */ 0xC84E, 0xC853, 0xA0BB, -/* 017D */ 0xC855, 0xC86F, 0xA0C1, -/* 017E */ 0xC88E, 0xC893, 0xA0EC, -/* 017F */ 0xC895, 0xC89C, 0xA0F2, -/* 0180 */ 0xC8A9, 0xC8BB, 0xA144, -/* 0181 */ 0xC8CD, 0xC8D3, 0xA169, -/* 0182 */ 0xC8DA, 0xC8DF, 0xA172, -/* 0183 */ 0xC8E6, 0xC8F4, 0xA181, -/* 0184 */ 0xC8F6, 0xC8FB, 0xA190, -/* 0185 */ 0xC912, 0xC917, 0xA242, -/* 0186 */ 0xC919, 0xC92B, 0xA248, -/* 0187 */ 0xC92D, 0xC933, 0xA261, -/* 0188 */ 0xC935, 0xC947, 0xA268, -/* 0189 */ 0xC948, 0xC94F, 0xA281, -/* 018A */ 0xC959, 0xC95F, 0xA28E, -/* 018B */ 0xC964, 0xC96B, 0xA296, -/* 018C */ 0xC975, 0xC97B, 0xA344, -/* 018D */ 0xC97D, 0xC987, 0xA34B, -/* 018E */ 0xC991, 0xC997, 0xA361, -/* 018F */ 0xC99E, 0xC9AE, 0xA36A, -/* 0190 */ 0xC9AF, 0xC9BF, 0xA381, -/* 0191 */ 0xC9F2, 0xC9F7, 0xA44C, -/* 0192 */ 0xCA0E, 0xCA13, 0xA465, -/* 0193 */ 0xCA19, 0xCA25, 0xA46E, -/* 0194 */ 0xCA2A, 0xCA46, 0xA484, -/* 0195 */ 0xCA55, 0xCA5B, 0xA54B, -/* 0196 */ 0xCA62, 0xCA67, 0xA553, -/* 0197 */ 0xCA6B, 0xCA7C, 0xA561, -/* 0198 */ 0xCA7E, 0xCA83, 0xA573, -/* 0199 */ 0xCA87, 0xCA97, 0xA581, -/* 019A */ 0xCA99, 0xCAA7, 0xA592, -/* 019B */ 0xCAA8, 0xCABB, 0xA641, -/* 019C */ 0xCAC6, 0xCACB, 0xA661, -/* 019D */ 0xCADA, 0xCADF, 0xA66E, -/* 019E */ 0xCAE1, 0xCAE7, 0xA674, -/* 019F */ 0xCAED, 0xCAF3, 0xA685, -/* 01A0 */ 0xCAF5, 0xCB07, 0xA68C, -/* 01A1 */ 0xCB19, 0xCB1F, 0xA74C, -/* 01A2 */ 0xCB22, 0xCB29, 0xA753, -/* 01A3 */ 0xCB2A, 0xCB40, 0xA761, -/* 01A4 */ 0xCB51, 0xCB57, 0xA789, -/* 01A5 */ 0xCB5E, 0xCB63, 0xA793, -/* 01A6 */ 0xCB65, 0xCB6C, 0xA799, -/* 01A7 */ 0xCB6D, 0xCB77, 0xA841, -/* 01A8 */ 0xCB7A, 0xCB88, 0xA84C, -/* 01A9 */ 0xCB89, 0xCB9B, 0xA861, -/* 01AA */ 0xCB9D, 0xCBA3, 0xA874, -/* 01AB */ 0xCBA4, 0xCBB7, 0xA881, -/* 01AC */ 0xCBB9, 0xCBC4, 0xA895, -/* 01AD */ 0xCBC5, 0xCBD3, 0xA941, -/* 01AE */ 0xCBD5, 0xCBDF, 0xA950, -/* 01AF */ 0xCBEA, 0xCBFC, 0xA968, -/* 01B0 */ 0xCBFD, 0xCC0B, 0xA981, -/* 01B1 */ 0xCC15, 0xCC1B, 0xA995, -/* 01B2 */ 0xCC31, 0xCC37, 0xAA47, -/* 01B3 */ 0xCC5A, 0xCC5F, 0xAA67, -/* 01B4 */ 0xCC69, 0xCC6F, 0xAA72, -/* 01B5 */ 0xCC76, 0xCC93, 0xAA83, -/* 01B6 */ 0xCCA1, 0xCCA7, 0xAB4A, -/* 01B7 */ 0xCCAE, 0xCCB3, 0xAB52, -/* 01B8 */ 0xCCBD, 0xCCC3, 0xAB63, -/* 01B9 */ 0xCCCA, 0xCCCF, 0xAB6C, -/* 01BA */ 0xCCD5, 0xCCDA, 0xAB75, -/* 01BB */ 0xCCDB, 0xCCE3, 0xAB81, -/* 01BC */ 0xCCE5, 0xCCEB, 0xAB8A, -/* 01BD */ 0xCCF1, 0xCCFD, 0xAB94, -/* 01BE */ 0xCD02, 0xCD07, 0xAC44, -/* 01BF */ 0xCD11, 0xCD17, 0xAC4F, -/* 01C0 */ 0xCD2D, 0xCD38, 0xAC6A, -/* 01C1 */ 0xCD3F, 0xCD5B, 0xAC81, -/* 01C2 */ 0xCD65, 0xCD6B, 0xAD44, -/* 01C3 */ 0xCD72, 0xCD77, 0xAD4D, -/* 01C4 */ 0xCD79, 0xCD80, 0xAD53, -/* 01C5 */ 0xCD81, 0xCD87, 0xAD61, -/* 01C6 */ 0xCD89, 0xCD93, 0xAD68, -/* 01C7 */ 0xCDAA, 0xCDAF, 0xAD87, -/* 01C8 */ 0xCDB1, 0xCDC3, 0xAD8D, -/* 01C9 */ 0xCDC6, 0xCDCB, 0xAE41, -/* 01CA */ 0xCDD1, 0xCDE1, 0xAE4A, -/* 01CB */ 0xCDE2, 0xCDE7, 0xAE61, -/* 01CC */ 0xCDF1, 0xCDF7, 0xAE6D, -/* 01CD */ 0xCE0D, 0xCE13, 0xAE88, -/* 01CE */ 0xCE1A, 0xCE1F, 0xAE93, -/* 01CF */ 0xCE36, 0xCE49, 0xAF47, -/* 01D0 */ 0xCE4A, 0xCE57, 0xAF61, -/* 01D1 */ 0xCE62, 0xCE67, 0xAF73, -/* 01D2 */ 0xCE6E, 0xCE73, 0xAF81, -/* 01D3 */ 0xCE7D, 0xCE83, 0xAF8C, -/* 01D4 */ 0xCE8A, 0xCE8F, 0xAF95, -/* 01D5 */ 0xCE9A, 0xCE9F, 0xB041, -/* 01D6 */ 0xCEA6, 0xCEAB, 0xB048, -/* 01D7 */ 0xCEAE, 0xCEBA, 0xB04E, -/* 01D8 */ 0xCEBB, 0xCEC0, 0xB061, -/* 01D9 */ 0xCEC2, 0xCED5, 0xB067, -/* 01DA */ 0xCED6, 0xCEE3, 0xB081, -/* 01DB */ 0xCEED, 0xCEF3, 0xB093, -/* 01DC */ 0xCEFA, 0xCEFF, 0xB09B, -/* 01DD */ 0xCF09, 0xCF0F, 0xB146, -/* 01DE */ 0xCF16, 0xCF1B, 0xB14F, -/* 01DF */ 0xCF25, 0xCF2B, 0xB161, -/* 01E0 */ 0xCF32, 0xCF37, 0xB169, -/* 01E1 */ 0xCF39, 0xCF44, 0xB16F, -/* 01E2 */ 0xCF45, 0xCF53, 0xB181, -/* 01E3 */ 0xCF5D, 0xCF63, 0xB195, -/* 01E4 */ 0xCF79, 0xCF7F, 0xB249, -/* 01E5 */ 0xCF86, 0xCF8B, 0xB254, -/* 01E6 */ 0xCF8E, 0xCFA0, 0xB261, -/* 01E7 */ 0xCFA2, 0xCFA7, 0xB274, -/* 01E8 */ 0xCFAA, 0xCFAF, 0xB281, -/* 01E9 */ 0xCFB1, 0xCFC3, 0xB287, -/* 01EA */ 0xCFC5, 0xCFCB, 0xB29A, -/* 01EB */ 0xCFCC, 0xCFDF, 0xB341, -/* 01EC */ 0xCFEA, 0xCFEF, 0xB361, -/* 01ED */ 0xCFF6, 0xCFFB, 0xB369, -/* 01EE */ 0xD005, 0xD00A, 0xB375, -/* 01EF */ 0xD00B, 0xD010, 0xB381, -/* 01F0 */ 0xD012, 0xD017, 0xB387, -/* 01F1 */ 0xD019, 0xD02C, 0xB38D, -/* 01F2 */ 0xD02E, 0xD033, 0xB441, -/* 01F3 */ 0xD03D, 0xD043, 0xB44C, -/* 01F4 */ 0xD04A, 0xD04F, 0xB455, -/* 01F5 */ 0xD059, 0xD05F, 0xB467, -/* 01F6 */ 0xD061, 0xD06B, 0xB46E, -/* 01F7 */ 0xD075, 0xD07B, 0xB484, -/* 01F8 */ 0xD082, 0xD094, 0xB48E, -/* 01F9 */ 0xD095, 0xD0A3, 0xB541, -/* 01FA */ 0xD0AD, 0xD0B2, 0xB555, -/* 01FB */ 0xD0BA, 0xD0BF, 0xB564, -/* 01FC */ 0xD0CA, 0xD0CF, 0xB56F, -/* 01FD */ 0xD0E5, 0xD0EB, 0xB587, -/* 01FE */ 0xD0F2, 0xD0F7, 0xB58F, -/* 01FF */ 0xD0F9, 0xD104, 0xB595, -/* 0200 */ 0xD105, 0xD10C, 0xB641, -/* 0201 */ 0xD10E, 0xD11F, 0xB649, -/* 0202 */ 0xD120, 0xD12F, 0xB661, -/* 0203 */ 0xD146, 0xD14B, 0xB683, -/* 0204 */ 0xD155, 0xD15B, 0xB68E, -/* 0205 */ 0xD162, 0xD167, 0xB697, -/* 0206 */ 0xD16E, 0xD17B, 0xB741, -/* 0207 */ 0xD17D, 0xD183, 0xB74F, -/* 0208 */ 0xD18B, 0xD19F, 0xB761, -/* 0209 */ 0xD1A9, 0xD1AF, 0xB781, -/* 020A */ 0xD1C1, 0xD1CF, 0xB792, -/* 020B */ 0xD1D0, 0xD1D7, 0xB841, -/* 020C */ 0xD1D9, 0xD1EA, 0xB849, -/* 020D */ 0xD1EB, 0xD1F3, 0xB861, -/* 020E */ 0xD1F9, 0xD206, 0xB86D, -/* 020F */ 0xD20A, 0xD20F, 0xB882, -/* 0210 */ 0xD211, 0xD229, 0xB888, -/* 0211 */ 0xD235, 0xD23B, 0xB948, -/* 0212 */ 0xD242, 0xD247, 0xB951, -/* 0213 */ 0xD24D, 0xD25B, 0xB961, -/* 0214 */ 0xD25D, 0xD263, 0xB970, -/* 0215 */ 0xD269, 0xD27F, 0xB981, -/* 0216 */ 0xD296, 0xD29B, 0xBA47, -/* 0217 */ 0xD2A5, 0xD2AB, 0xBA53, -/* 0218 */ 0xD2B2, 0xD2B7, 0xBA64, -/* 0219 */ 0xD2CC, 0xD2D1, 0xBA75, -/* 021A */ 0xD2DD, 0xD2E3, 0xBA89, -/* 021B */ 0xD2E6, 0xD2EF, 0xBA90, -/* 021C */ 0xD306, 0xD30B, 0xBB48, -/* 021D */ 0xD331, 0xD337, 0xBB69, -/* 021E */ 0xD33E, 0xD343, 0xBB71, -/* 021F */ 0xD34A, 0xD369, 0xBB81, -/* 0220 */ 0xD36A, 0xD37B, 0xBC41, -/* 0221 */ 0xD392, 0xD397, 0xBC66, -/* 0222 */ 0xD3A1, 0xD3A7, 0xBC71, -/* 0223 */ 0xD3BD, 0xD3C3, 0xBC8C, -/* 0224 */ 0xD3CA, 0xD3CF, 0xBC95, -/* 0225 */ 0xD3D1, 0xD3D6, 0xBC9B, -/* 0226 */ 0xD3D9, 0xD3E0, 0xBD42, -/* 0227 */ 0xD3E4, 0xD3EB, 0xBD4B, -/* 0228 */ 0xD402, 0xD407, 0xBD67, -/* 0229 */ 0xD409, 0xD416, 0xBD6D, -/* 022A */ 0xD417, 0xD41C, 0xBD81, -/* 022B */ 0xD41E, 0xD437, 0xBD87, -/* 022C */ 0xD438, 0xD43F, 0xBE41, -/* 022D */ 0xD445, 0xD453, 0xBE4C, -/* 022E */ 0xD454, 0xD45B, 0xBE61, -/* 022F */ 0xD465, 0xD46C, 0xBE6F, -/* 0230 */ 0xD48E, 0xD493, 0xBE92, -/* 0231 */ 0xD495, 0xD49D, 0xBE98, -/* 0232 */ 0xD49E, 0xD4A8, 0xBF41, -/* 0233 */ 0xD4AA, 0xD4B8, 0xBF4C, -/* 0234 */ 0xD4B9, 0xD4CB, 0xBF61, -/* 0235 */ 0xD4D6, 0xD4DB, 0xBF81, -/* 0236 */ 0xD4E0, 0xD4E7, 0xBF89, -/* 0237 */ 0xD4F1, 0xD4F7, 0xBF97, -/* 0238 */ 0xD4FE, 0xD503, 0xC041, -/* 0239 */ 0xD50D, 0xD513, 0xC04D, -/* 023A */ 0xD518, 0xD51D, 0xC055, -/* 023B */ 0xD51E, 0xD537, 0xC061, -/* 023C */ 0xD545, 0xD54B, 0xC08A, -/* 023D */ 0xD552, 0xD557, 0xC093, -/* 023E */ 0xD56E, 0xD573, 0xC146, -/* 023F */ 0xD57D, 0xD583, 0xC151, -/* 0240 */ 0xD591, 0xD5A4, 0xC165, -/* 0241 */ 0xD5A8, 0xD5C7, 0xC181, -/* 0242 */ 0xD5DE, 0xD5E3, 0xC24E, -/* 0243 */ 0xD5FA, 0xD5FF, 0xC268, -/* 0244 */ 0xD609, 0xD60F, 0xC273, -/* 0245 */ 0xD616, 0xD61B, 0xC281, -/* 0246 */ 0xD625, 0xD62C, 0xC28D, -/* 0247 */ 0xD62E, 0xD637, 0xC295, -/* 0248 */ 0xD66A, 0xD66F, 0xC367, -/* 0249 */ 0xD675, 0xD680, 0xC36F, -/* 024A */ 0xD686, 0xD68B, 0xC384, -/* 024B */ 0xD695, 0xD69C, 0xC38F, -/* 024C */ 0xD6A2, 0xD6A7, 0xC399, -/* 024D */ 0xD6B1, 0xD6B8, 0xC445, -/* 024E */ 0xD6BC, 0xD6C3, 0xC44E, -/* 024F */ 0xD6DA, 0xD6DF, 0xC46A, -/* 0250 */ 0xD6F6, 0xD6FB, 0xC487, -/* 0251 */ 0xD705, 0xD710, 0xC492, -/* 0252 */ 0xD721, 0xD727, 0xC549, -/* 0253 */ 0xD72E, 0xD733, 0xC552, -/* 0254 */ 0xD73D, 0xD743, 0xC563, -/* 0255 */ 0xD74A, 0xD74F, 0xC56D, -/* 0256 */ 0xD775, 0xD77B, 0xC58F, -/* 0257 */ 0xD782, 0xD787, 0xC599, -/* 0258 */ 0xD791, 0xD797, 0xC644, -/* 0259 */ 0xD79E, 0xD7A3, 0xC64D, -/* 025A */ 0xF90E, 0xF913, 0xD1DB, -/* 025B */ 0xF933, 0xF938, 0xD2C6, -/* 025C */ 0xF939, 0xF943, 0xD2CD, -/* 025D */ 0xF94A, 0xF951, 0xD2E4, -/* 025E */ 0xF952, 0xF957, 0xD2F0, -/* 025F */ 0xFF01, 0xFF3B, 0xA3A1, -/* 0260 */ 0xFF3D, 0xFF5D, 0xA3DD, -/* 0261 */ 0x00A1, 0x00FE, 0x0000, -/* 0262 */ 0x0111, 0x0000, 0xA9A2, -/* 0263 */ 0x0126, 0x0153, 0x005E, -/* 0264 */ 0x0166, 0x0167, 0x008C, -/* 0265 */ 0x02C7, 0x02DD, 0x008E, -/* 0266 */ 0x0401, 0x0000, 0xACA7, -/* 0267 */ 0x0451, 0x0000, 0xACD7, -/* 0268 */ 0x2015, 0x203B, 0x00A5, -/* 0269 */ 0x2074, 0x2084, 0x00CC, -/* 026A */ 0x2103, 0x212B, 0x00DD, -/* 026B */ 0x2153, 0x215E, 0x0106, -/* 026C */ 0x2190, 0x2199, 0x0112, -/* 026D */ 0x21D2, 0x21D4, 0x011C, -/* 026E */ 0x2200, 0x223D, 0x011F, -/* 026F */ 0x2252, 0x0000, 0xA1D6, -/* 0270 */ 0x2260, 0x226B, 0x015D, -/* 0271 */ 0x2282, 0x2287, 0x0169, -/* 0272 */ 0x2299, 0x0000, 0xA2C1, -/* 0273 */ 0x22A5, 0x0000, 0xA1D1, -/* 0274 */ 0x2312, 0x0000, 0xA1D2, -/* 0275 */ 0x2500, 0x254B, 0x016F, -/* 0276 */ 0x2592, 0x0000, 0xA2C6, -/* 0277 */ 0x25A0, 0x25D1, 0x01BB, -/* 0278 */ 0x2605, 0x260F, 0x01ED, -/* 0279 */ 0x261C, 0x261E, 0x01F8, -/* 027A */ 0x2640, 0x2642, 0x01FB, -/* 027B */ 0x2660, 0x266D, 0x01FE, -/* 027C */ 0x3000, 0x3003, 0x020C, -/* 027D */ 0x3013, 0x3015, 0x0210, -/* 027E */ 0x321C, 0x0000, 0xA2DF, -/* 027F */ 0x327F, 0x0000, 0xA2DE, -/* 0280 */ 0x3380, 0x33AF, 0x0213, -/* 0281 */ 0x33C0, 0x33DD, 0x0243, -/* 0282 */ 0x4E00, 0x4E1E, 0x0261, -/* 0283 */ 0x4E2D, 0x4E5F, 0x0280, -/* 0284 */ 0x4E6B, 0x4F11, 0x02B3, -/* 0285 */ 0x4F2F, 0x4F5C, 0x035A, -/* 0286 */ 0x4F69, 0x4F9D, 0x0388, -/* 0287 */ 0x4FAE, 0x4FE1, 0x03BD, -/* 0288 */ 0x4FEE, 0x502D, 0x03F1, -/* 0289 */ 0x503B, 0x5065, 0x0431, -/* 028A */ 0x5074, 0x5099, 0x045C, -/* 028B */ 0x50AC, 0x50ED, 0x0482, -/* 028C */ 0x50F9, 0x5112, 0x04C4, -/* 028D */ 0x511F, 0x51CD, 0x04DE, -/* 028E */ 0x51DC, 0x51E1, 0x058D, -/* 028F */ 0x51F0, 0x52AB, 0x0593, -/* 0290 */ 0x52BE, 0x52E4, 0x064F, -/* 0291 */ 0x52F3, 0x5384, 0x0676, -/* 0292 */ 0x5393, 0x53AD, 0x0708, -/* 0293 */ 0x53BB, 0x5451, 0x0723, -/* 0294 */ 0x5468, 0x5490, 0x07BA, -/* 0295 */ 0x54A4, 0x54C9, 0x07E3, -/* 0296 */ 0x54E1, 0x5510, 0x0809, -/* 0297 */ 0x551C, 0x0000, 0xD8C5, -/* 0298 */ 0x552F, 0x5563, 0x0839, -/* 0299 */ 0x557C, 0x558A, 0x086E, -/* 029A */ 0x5598, 0x55AE, 0x087D, -/* 029B */ 0x55C5, 0x55C7, 0x0894, -/* 029C */ 0x55D4, 0x55E4, 0x0897, -/* 029D */ 0x55FD, 0x5617, 0x08A8, -/* 029E */ 0x562F, 0x5636, 0x08C3, -/* 029F */ 0x5653, 0x0000, 0xFAC6, -/* 02A0 */ 0x5668, 0x5674, 0x08CB, -/* 02A1 */ 0x5686, 0x0000, 0xFCF7, -/* 02A2 */ 0x56A5, 0x56BC, 0x08D8, -/* 02A3 */ 0x56CA, 0x56E0, 0x08F0, -/* 02A4 */ 0x56F0, 0x5751, 0x0907, -/* 02A5 */ 0x5761, 0x5793, 0x0969, -/* 02A6 */ 0x57A0, 0x57A3, 0x099C, -/* 02A7 */ 0x57C3, 0x57CE, 0x09A0, -/* 02A8 */ 0x57DF, 0x57E0, 0x09AC, -/* 02A9 */ 0x57F0, 0x580A, 0x09AE, -/* 02AA */ 0x581E, 0x583A, 0x09C9, -/* 02AB */ 0x584A, 0x5864, 0x09E6, -/* 02AC */ 0x5875, 0x58FD, 0x0A01, -/* 02AD */ 0x590F, 0x5999, 0x0A8A, -/* 02AE */ 0x59A5, 0x59AC, 0x0B15, -/* 02AF */ 0x59B9, 0x5A03, 0x0B1D, -/* 02B0 */ 0x5A11, 0x5A29, 0x0B68, -/* 02B1 */ 0x5A36, 0x5A49, 0x0B81, -/* 02B2 */ 0x5A5A, 0x5A66, 0x0B95, -/* 02B3 */ 0x5A92, 0x5AA4, 0x0BA2, -/* 02B4 */ 0x5AC1, 0x5ACC, 0x0BB5, -/* 02B5 */ 0x5AE1, 0x5AE9, 0x0BC1, -/* 02B6 */ 0x5B05, 0x5B16, 0x0BCA, -/* 02B7 */ 0x5B2A, 0x0000, 0xDEAE, -/* 02B8 */ 0x5B40, 0x5B43, 0x0BDC, -/* 02B9 */ 0x5B50, 0x5C79, 0x0BE0, -/* 02BA */ 0x5C90, 0x5C91, 0x0D0A, -/* 02BB */ 0x5CA1, 0x5CC0, 0x0D0C, -/* 02BC */ 0x5CD9, 0x5D19, 0x0D2C, -/* 02BD */ 0x5D27, 0x5D29, 0x0D6D, -/* 02BE */ 0x5D4B, 0x5D50, 0x0D70, -/* 02BF */ 0x5D69, 0x5D6F, 0x0D76, -/* 02C0 */ 0x5D87, 0x5D8B, 0x0D7D, -/* 02C1 */ 0x5D9D, 0x5DAA, 0x0D82, -/* 02C2 */ 0x5DB8, 0x5DBD, 0x0D90, -/* 02C3 */ 0x5DCD, 0x5E63, 0x0D96, -/* 02C4 */ 0x5E72, 0x5F3C, 0x0E2D, -/* 02C5 */ 0x5F48, 0x5FFF, 0x0EF8, -/* 02C6 */ 0x600F, 0x602F, 0x0FB0, -/* 02C7 */ 0x6041, 0x6070, 0x0FD1, -/* 02C8 */ 0x6085, 0x60E1, 0x1001, -/* 02C9 */ 0x60F0, 0x61CB, 0x105E, -/* 02CA */ 0x61E6, 0x0000, 0xD1D7, -/* 02CB */ 0x61F2, 0x6258, 0x113A, -/* 02CC */ 0x626E, 0x629B, 0x11A1, -/* 02CD */ 0x62AB, 0x62DC, 0x11CF, -/* 02CE */ 0x62EC, 0x6311, 0x1201, -/* 02CF */ 0x632B, 0x6355, 0x1227, -/* 02D0 */ 0x6367, 0x63AA, 0x1252, -/* 02D1 */ 0x63C0, 0x63E1, 0x1296, -/* 02D2 */ 0x63ED, 0x63F7, 0x12B8, -/* 02D3 */ 0x640D, 0x642D, 0x12C3, -/* 02D4 */ 0x643A, 0x643E, 0x12E4, -/* 02D5 */ 0x6458, 0x647A, 0x12E9, -/* 02D6 */ 0x6488, 0x6504, 0x130C, -/* 02D7 */ 0x6518, 0x66C9, 0x1389, -/* 02D8 */ 0x66D6, 0x675F, 0x153B, -/* 02D9 */ 0x676D, 0x679D, 0x15C5, -/* 02DA */ 0x67AF, 0x67DD, 0x15F6, -/* 02DB */ 0x67E9, 0x67FE, 0x1625, -/* 02DC */ 0x6812, 0x6854, 0x163B, -/* 02DD */ 0x686D, 0x68B6, 0x167E, -/* 02DE */ 0x68C4, 0x6912, 0x16C8, -/* 02DF */ 0x6927, 0x6930, 0x1717, -/* 02E0 */ 0x693D, 0x6979, 0x1721, -/* 02E1 */ 0x6995, 0x69D0, 0x175E, -/* 02E2 */ 0x69E8, 0x69EA, 0x179A, -/* 02E3 */ 0x69FB, 0x6A23, 0x179D, -/* 02E4 */ 0x6A35, 0x6A6B, 0x17C6, -/* 02E5 */ 0x6A80, 0x6AA3, 0x17FD, -/* 02E6 */ 0x6AB3, 0x6AC3, 0x1821, -/* 02E7 */ 0x6AD3, 0x6ADB, 0x1832, -/* 02E8 */ 0x6AF6, 0x6B23, 0x183B, -/* 02E9 */ 0x6B32, 0x6B50, 0x1869, -/* 02EA */ 0x6B5F, 0x6B8A, 0x1888, -/* 02EB */ 0x6B96, 0x6B9E, 0x18B4, -/* 02EC */ 0x6BAE, 0x6BDB, 0x18BD, -/* 02ED */ 0x6BEB, 0x6BEC, 0x18EB, -/* 02EE */ 0x6C08, 0x6C13, 0x18ED, -/* 02EF */ 0x6C23, 0x0000, 0xD1A8, -/* 02F0 */ 0x6C34, 0x6C42, 0x18F9, -/* 02F1 */ 0x6C4E, 0x6C9B, 0x1908, -/* 02F2 */ 0x6CAB, 0x6CF3, 0x1956, -/* 02F3 */ 0x6D0B, 0x6D41, 0x199F, -/* 02F4 */ 0x6D59, 0x6D95, 0x19D6, -/* 02F5 */ 0x6DAF, 0x6DFB, 0x1A13, -/* 02F6 */ 0x6E17, 0x6E7A, 0x1A60, -/* 02F7 */ 0x6E90, 0x6ED4, 0x1AC4, -/* 02F8 */ 0x6EEF, 0x6F41, 0x1B09, -/* 02F9 */ 0x6F51, 0x6F97, 0x1B5C, -/* 02FA */ 0x6FA3, 0x6FF1, 0x1BA3, -/* 02FB */ 0x6FFE, 0x703E, 0x1BF2, -/* 02FC */ 0x704C, 0x70B9, 0x1C33, -/* 02FD */ 0x70C8, 0x70DF, 0x1CA1, -/* 02FE */ 0x70F1, 0x710C, 0x1CB9, -/* 02FF */ 0x7119, 0x7136, 0x1CD5, -/* 0300 */ 0x7147, 0x716E, 0x1CF3, -/* 0301 */ 0x717D, 0x71EE, 0x1D1B, -/* 0302 */ 0x71FB, 0x721B, 0x1D8D, -/* 0303 */ 0x722A, 0x7281, 0x1DAE, -/* 0304 */ 0x72A2, 0x72AF, 0x1E06, -/* 0305 */ 0x72C0, 0x72E9, 0x1E14, -/* 0306 */ 0x72F8, 0x72FD, 0x1E3E, -/* 0307 */ 0x730A, 0x0000, 0xE7D9, -/* 0308 */ 0x7316, 0x7357, 0x1E44, -/* 0309 */ 0x7368, 0x746F, 0x1E86, -/* 030A */ 0x747E, 0x748B, 0x1F8E, -/* 030B */ 0x7498, 0x7504, 0x1F9C, -/* 030C */ 0x7511, 0x753A, 0x2009, -/* 030D */ 0x7547, 0x7591, 0x2033, -/* 030E */ 0x759D, 0x75E2, 0x207E, -/* 030F */ 0x75F0, 0x7600, 0x20C4, -/* 0310 */ 0x760D, 0x0000, 0xE5CB, -/* 0311 */ 0x7619, 0x7626, 0x20D5, -/* 0312 */ 0x763B, 0x7693, 0x20E3, -/* 0313 */ 0x76AE, 0x0000, 0xF9AB, -/* 0314 */ 0x76BA, 0x770B, 0x213C, -/* 0315 */ 0x771E, 0x7729, 0x218E, -/* 0316 */ 0x7737, 0x7740, 0x219A, -/* 0317 */ 0x774D, 0x0000, 0xFAE0, -/* 0318 */ 0x775B, 0x776B, 0x21A4, -/* 0319 */ 0x7779, 0x777F, 0x21B5, -/* 031A */ 0x778B, 0x7791, 0x21BC, -/* 031B */ 0x779E, 0x77BF, 0x21C3, -/* 031C */ 0x77D7, 0x77F3, 0x21E5, -/* 031D */ 0x7802, 0x0000, 0xDEE3, -/* 031E */ 0x7812, 0x0000, 0xDDF7, -/* 031F */ 0x7825, 0x7834, 0x2202, -/* 0320 */ 0x7845, 0x784F, 0x2212, -/* 0321 */ 0x785D, 0x0000, 0xF5A6, -/* 0322 */ 0x786B, 0x786F, 0x221D, -/* 0323 */ 0x787C, 0x7897, 0x2222, -/* 0324 */ 0x78A3, 0x78A9, 0x223E, -/* 0325 */ 0x78BA, 0x78D0, 0x2245, -/* 0326 */ 0x78E8, 0x7901, 0x225C, -/* 0327 */ 0x790E, 0x7916, 0x2276, -/* 0328 */ 0x792A, 0x792C, 0x227F, -/* 0329 */ 0x793A, 0x796D, 0x2282, -/* 032A */ 0x797A, 0x7981, 0x22B6, -/* 032B */ 0x798D, 0x7991, 0x22BE, -/* 032C */ 0x79A6, 0x79E9, 0x22C3, -/* 032D */ 0x79FB, 0x7A20, 0x2307, -/* 032E */ 0x7A2E, 0x7ACB, 0x232D, -/* 032F */ 0x7AD7, 0x7AFF, 0x23CB, -/* 0330 */ 0x7B0F, 0x7B2D, 0x23F4, -/* 0331 */ 0x7B39, 0x0000, 0xE1AB, -/* 0332 */ 0x7B46, 0x7B60, 0x2413, -/* 0333 */ 0x7B6C, 0x7BA1, 0x242E, -/* 0334 */ 0x7BAD, 0x7BD2, 0x2464, -/* 0335 */ 0x7BE0, 0x7BE9, 0x248A, -/* 0336 */ 0x7C07, 0x7C12, 0x2494, -/* 0337 */ 0x7C1E, 0x7C2B, 0x24A0, -/* 0338 */ 0x7C3D, 0x7C4D, 0x24AE, -/* 0339 */ 0x7C60, 0x7C73, 0x24BF, -/* 033A */ 0x7C83, 0x7CBE, 0x24D3, -/* 033B */ 0x7CCA, 0x0000, 0xFBD5, -/* 033C */ 0x7CD6, 0x7CE7, 0x250F, -/* 033D */ 0x7CFB, 0x7D50, 0x2521, -/* 033E */ 0x7D5E, 0x7D7F, 0x2577, -/* 033F */ 0x7D8E, 0x7DFB, 0x2599, -/* 0340 */ 0x7E09, 0x7E9C, 0x2607, -/* 0341 */ 0x7F36, 0x7F3A, 0x269B, -/* 0342 */ 0x7F4C, 0x7F55, 0x26A0, -/* 0343 */ 0x7F6A, 0x7F79, 0x26AA, -/* 0344 */ 0x7F85, 0x8018, 0x26BA, -/* 0345 */ 0x802D, 0x804A, 0x274E, -/* 0346 */ 0x8056, 0x805E, 0x276C, -/* 0347 */ 0x806F, 0x80CE, 0x2775, -/* 0348 */ 0x80DA, 0x80E5, 0x27D5, -/* 0349 */ 0x80F1, 0x810A, 0x27E1, -/* 034A */ 0x8118, 0x813E, 0x27FB, -/* 034B */ 0x814B, 0x8155, 0x2822, -/* 034C */ 0x8165, 0x8247, 0x282D, -/* 034D */ 0x8259, 0x827E, 0x2910, -/* 034E */ 0x828B, 0x82BF, 0x2936, -/* 034F */ 0x82D1, 0x82F1, 0x296B, -/* 0350 */ 0x82FD, 0x8309, 0x298C, -/* 0351 */ 0x8317, 0x0000, 0xD9AB, -/* 0352 */ 0x8328, 0x8352, 0x2999, -/* 0353 */ 0x8373, 0x837B, 0x29C4, -/* 0354 */ 0x8389, 0x83AB, 0x29CD, -/* 0355 */ 0x83BD, 0x83DC, 0x29F0, -/* 0356 */ 0x83E9, 0x840E, 0x2A10, -/* 0357 */ 0x8429, 0x843D, 0x2A36, -/* 0358 */ 0x8449, 0x0000, 0xE7A8, -/* 0359 */ 0x8457, 0x847A, 0x2A4B, -/* 035A */ 0x8490, 0x84A1, 0x2A6F, -/* 035B */ 0x84B2, 0x84DA, 0x2A81, -/* 035C */ 0x84EC, 0x84FC, 0x2AAA, -/* 035D */ 0x8511, 0x852F, 0x2ABB, -/* 035E */ 0x853D, 0x856D, 0x2ADA, -/* 035F */ 0x8584, 0x85EA, 0x2B0B, -/* 0360 */ 0x85F7, 0x860A, 0x2B72, -/* 0361 */ 0x8616, 0x861A, 0x2B86, -/* 0362 */ 0x862D, 0x0000, 0xD5B5, -/* 0363 */ 0x863F, 0x0000, 0xD5A1, -/* 0364 */ 0x864E, 0x8667, 0x2B8B, -/* 0365 */ 0x8679, 0x0000, 0xFBF6, -/* 0366 */ 0x868A, 0x8693, 0x2BA5, -/* 0367 */ 0x86A3, 0x86A9, 0x2BAF, -/* 0368 */ 0x86C7, 0x86ED, 0x2BB6, -/* 0369 */ 0x86FE, 0x8708, 0x2BDD, -/* 036A */ 0x8718, 0x871C, 0x2BE8, -/* 036B */ 0x874E, 0x8768, 0x2BED, -/* 036C */ 0x8774, 0x878D, 0x2C08, -/* 036D */ 0x879F, 0x87A2, 0x2C22, -/* 036E */ 0x87B3, 0x87C4, 0x2C26, -/* 036F */ 0x87E0, 0x0000, 0xDAF6, -/* 0370 */ 0x87EC, 0x8805, 0x2C38, -/* 0371 */ 0x881F, 0x8823, 0x2C52, -/* 0372 */ 0x8831, 0x889E, 0x2C57, -/* 0373 */ 0x88AB, 0x88B4, 0x2CC5, -/* 0374 */ 0x88C1, 0x88C2, 0x2CCF, -/* 0375 */ 0x88CF, 0x8919, 0x2CD1, -/* 0376 */ 0x8925, 0x892A, 0x2D1C, -/* 0377 */ 0x8936, 0x8944, 0x2D22, -/* 0378 */ 0x895F, 0x8972, 0x2D31, -/* 0379 */ 0x897F, 0x89C0, 0x2D45, -/* 037A */ 0x89D2, 0x0000, 0xCAC7, -/* 037B */ 0x89E3, 0x0000, 0xFAB0, -/* 037C */ 0x89F4, 0x8A3B, 0x2D87, -/* 037D */ 0x8A50, 0x8A79, 0x2DCF, -/* 037E */ 0x8A85, 0x8B9A, 0x2DF9, -/* 037F */ 0x8C37, 0x8C6B, 0x2F0F, -/* 0380 */ 0x8C79, 0x8C8C, 0x2F44, -/* 0381 */ 0x8C9D, 0x8D16, 0x2F58, -/* 0382 */ 0x8D64, 0x8D77, 0x2FD2, -/* 0383 */ 0x8D85, 0x8D8A, 0x2FE6, -/* 0384 */ 0x8D99, 0x8DCF, 0x2FEC, -/* 0385 */ 0x8DDB, 0x8DF3, 0x3023, -/* 0386 */ 0x8E0A, 0x8E10, 0x303C, -/* 0387 */ 0x8E1E, 0x0000, 0xCBE6, -/* 0388 */ 0x8E2A, 0x8E35, 0x3043, -/* 0389 */ 0x8E42, 0x8E4A, 0x304F, -/* 038A */ 0x8E59, 0x8E60, 0x3058, -/* 038B */ 0x8E74, 0x8E8D, 0x3060, -/* 038C */ 0x8EAA, 0x8EAC, 0x307A, -/* 038D */ 0x8EC0, 0x8ED2, 0x307D, -/* 038E */ 0x8EDF, 0x0000, 0xE6E3, -/* 038F */ 0x8EEB, 0x0000, 0xF2E2, -/* 0390 */ 0x8EF8, 0x8F4E, 0x3090, -/* 0391 */ 0x8F5D, 0x8F62, 0x30E7, -/* 0392 */ 0x8F9B, 0x8FB2, 0x30ED, -/* 0393 */ 0x8FC2, 0x8FD4, 0x3105, -/* 0394 */ 0x8FE6, 0x90CA, 0x3118, -/* 0395 */ 0x90DE, 0x9102, 0x31FD, -/* 0396 */ 0x9112, 0x9119, 0x3222, -/* 0397 */ 0x9127, 0x9132, 0x322A, -/* 0398 */ 0x9149, 0x9152, 0x3236, -/* 0399 */ 0x9162, 0x9178, 0x3240, -/* 039A */ 0x9187, 0x919C, 0x3257, -/* 039B */ 0x91AB, 0x91F5, 0x326D, -/* 039C */ 0x920D, 0x921E, 0x32B8, -/* 039D */ 0x9234, 0x9249, 0x32CA, -/* 039E */ 0x9257, 0x9266, 0x32E0, -/* 039F */ 0x9280, 0x9285, 0x32F0, -/* 03A0 */ 0x9291, 0x929C, 0x32F6, -/* 03A1 */ 0x92B3, 0x92B9, 0x3302, -/* 03A2 */ 0x92CC, 0x92D2, 0x3309, -/* 03A3 */ 0x92E4, 0x92EA, 0x3310, -/* 03A4 */ 0x92F8, 0x9304, 0x3317, -/* 03A5 */ 0x9310, 0x932F, 0x3324, -/* 03A6 */ 0x9348, 0x935B, 0x3344, -/* 03A7 */ 0x936E, 0x937E, 0x3358, -/* 03A8 */ 0x938C, 0x93B0, 0x3369, -/* 03A9 */ 0x93C3, 0x0000, 0xF0EC, -/* 03AA */ 0x93D1, 0x0000, 0xEEEB, -/* 03AB */ 0x93DE, 0x93E4, 0x338E, -/* 03AC */ 0x93F6, 0x0000, 0xF3A1, -/* 03AD */ 0x9404, 0x0000, 0xFCF5, -/* 03AE */ 0x9418, 0x0000, 0xF1A4, -/* 03AF */ 0x9425, 0x9438, 0x3395, -/* 03B0 */ 0x9444, 0x0000, 0xF1D1, -/* 03B1 */ 0x9451, 0x945B, 0x33A9, -/* 03B2 */ 0x947D, 0x947F, 0x33B4, -/* 03B3 */ 0x9577, 0x95E2, 0x33B7, -/* 03B4 */ 0x961C, 0x977A, 0x3423, -/* 03B5 */ 0x978B, 0x978F, 0x3582, -/* 03B6 */ 0x97A0, 0x97AD, 0x3587, -/* 03B7 */ 0x97C6, 0x97DC, 0x3595, -/* 03B8 */ 0x97F3, 0x9818, 0x35AC, -/* 03B9 */ 0x982D, 0x986F, 0x35D2, -/* 03BA */ 0x98A8, 0x98B1, 0x3615, -/* 03BB */ 0x98C4, 0x98C7, 0x361F, -/* 03BC */ 0x98DB, 0x9928, 0x3623, -/* 03BD */ 0x9945, 0x9957, 0x3671, -/* 03BE */ 0x9996, 0x99C1, 0x3684, -/* 03BF */ 0x99D0, 0x99DF, 0x36B0, -/* 03C0 */ 0x99ED, 0x99F1, 0x36C0, -/* 03C1 */ 0x99FF, 0x9A19, 0x36C5, -/* 03C2 */ 0x9A2B, 0x9A6A, 0x36E0, -/* 03C3 */ 0x9AA8, 0x0000, 0xCDE9, -/* 03C4 */ 0x9AB8, 0x0000, 0xFAB5, -/* 03C5 */ 0x9AD3, 0x9AD8, 0x3720, -/* 03C6 */ 0x9AE5, 0x9AEE, 0x3726, -/* 03C7 */ 0x9B1A, 0x0000, 0xE2D1, -/* 03C8 */ 0x9B27, 0x9B5A, 0x3730, -/* 03C9 */ 0x9B6F, 0x0000, 0xD6DB, -/* 03CA */ 0x9B8E, 0x9B91, 0x3764, -/* 03CB */ 0x9B9F, 0x0000, 0xE4D5, -/* 03CC */ 0x9BAB, 0x9BAE, 0x3768, -/* 03CD */ 0x9BC9, 0x0000, 0xD7EF, -/* 03CE */ 0x9BD6, 0x0000, 0xF4ED, -/* 03CF */ 0x9BE4, 0x9BE8, 0x376C, -/* 03D0 */ 0x9C0D, 0x9C15, 0x3771, -/* 03D1 */ 0x9C25, 0x0000, 0xFCBF, -/* 03D2 */ 0x9C32, 0x9C3B, 0x377A, -/* 03D3 */ 0x9C47, 0x9C49, 0x3784, -/* 03D4 */ 0x9C57, 0x0000, 0xD7F7, -/* 03D5 */ 0x9CE5, 0x9CF6, 0x3787, -/* 03D6 */ 0x9D09, 0x0000, 0xE4BC, -/* 03D7 */ 0x9D1B, 0x9D28, 0x3799, -/* 03D8 */ 0x9D3B, 0x0000, 0xFBF8, -/* 03D9 */ 0x9D51, 0x0000, 0xCCBB, -/* 03DA */ 0x9D5D, 0x9D72, 0x37A7, -/* 03DB */ 0x9DA9, 0x9DB4, 0x37BD, -/* 03DC */ 0x9DC4, 0x0000, 0xCDAE, -/* 03DD */ 0x9DD7, 0x0000, 0xCFCE, -/* 03DE */ 0x9DF2, 0x9DFA, 0x37C9, -/* 03DF */ 0x9E1A, 0x9E1E, 0x37D2, -/* 03E0 */ 0x9E75, 0x9E7F, 0x37D7, -/* 03E1 */ 0x9E92, 0x9EA5, 0x37E2, -/* 03E2 */ 0x9EB4, 0x9EE8, 0x37F6, -/* 03E3 */ 0x9EF4, 0x0000, 0xDABD, -/* 03E4 */ 0x9F07, 0x9F13, 0x382B, -/* 03E5 */ 0x9F20, 0x0000, 0xE0A9, -/* 03E6 */ 0x9F3B, 0x0000, 0xDEAC, -/* 03E7 */ 0x9F4A, 0x9F52, 0x3838, -/* 03E8 */ 0x9F5F, 0x9F77, 0x3841, -/* 03E9 */ 0x9F8D, 0x9F9C, 0x385A, -/* 03EA */ 0xAC00, 0xAC5C, 0x386A, -/* 03EB */ 0xAC70, 0xAD90, 0x38C7, -/* 03EC */ 0xAD9C, 0xADA4, 0x39E8, -/* 03ED */ 0xADB7, 0xADE4, 0x39F1, -/* 03EE */ 0xADF8, 0xAE14, 0x3A1F, -/* 03EF */ 0xAE30, 0xAE8C, 0x3A3C, -/* 03F0 */ 0xAEBC, 0xAF10, 0x3A99, -/* 03F1 */ 0xAF2C, 0xAF50, 0x3AEE, -/* 03F2 */ 0xAF5C, 0xAF65, 0x3B13, -/* 03F3 */ 0xAF79, 0xAF9C, 0x3B1D, -/* 03F4 */ 0xAFB8, 0xB028, 0x3B41, -/* 03F5 */ 0xB044, 0xB05D, 0x3BB2, -/* 03F6 */ 0xB07C, 0xB0E5, 0x3BCC, -/* 03F7 */ 0xB108, 0xB160, 0x3C36, -/* 03F8 */ 0xB178, 0xB1A8, 0x3C8F, -/* 03F9 */ 0xB1CC, 0xB220, 0x3CC0, -/* 03FA */ 0xB234, 0xB23C, 0x3D15, -/* 03FB */ 0xB258, 0xB2B7, 0x3D1E, -/* 03FC */ 0xB2C8, 0xB31C, 0x3D7E, -/* 03FD */ 0xB354, 0xB394, 0x3DD3, -/* 03FE */ 0xB3A0, 0xB3AD, 0x3E14, -/* 03FF */ 0xB3C4, 0xB3E8, 0x3E22, -/* 0400 */ 0xB3FC, 0x0000, 0xB5C5, -/* 0401 */ 0xB410, 0xB434, 0x3E47, -/* 0402 */ 0xB450, 0xB46C, 0x3E6C, -/* 0403 */ 0xB480, 0xB488, 0x3E89, -/* 0404 */ 0xB49D, 0xB4F8, 0x3E92, -/* 0405 */ 0xB514, 0xB561, 0x3EEE, -/* 0406 */ 0xB5A0, 0xB5D8, 0x3F3C, -/* 0407 */ 0xB5EC, 0x0000, 0xB6C6, -/* 0408 */ 0xB610, 0xB634, 0x3F75, -/* 0409 */ 0xB648, 0x0000, 0xB6CE, -/* 040A */ 0xB664, 0xB668, 0x3F9A, -/* 040B */ 0xB69C, 0xB6B1, 0x3F9F, -/* 040C */ 0xB6D4, 0x0000, 0xB6D8, -/* 040D */ 0xB6F0, 0xB705, 0x3FB5, -/* 040E */ 0xB728, 0xB7C9, 0x3FCB, -/* 040F */ 0xB7EC, 0xB844, 0x406D, -/* 0410 */ 0xB851, 0xB87C, 0x40C6, -/* 0411 */ 0xB88D, 0x0000, 0xB7D8, -/* 0412 */ 0xB8A8, 0xB904, 0x40F2, -/* 0413 */ 0xB918, 0xB920, 0x414F, -/* 0414 */ 0xB93C, 0xB98E, 0x4158, -/* 0415 */ 0xB9AC, 0xBA08, 0x41AB, -/* 0416 */ 0xBA15, 0x0000, 0xB8D2, -/* 0417 */ 0xBA38, 0xBA8C, 0x4208, -/* 0418 */ 0xBAA8, 0xBAC8, 0x425D, -/* 0419 */ 0xBAD8, 0xBAD9, 0x427E, -/* 041A */ 0xBAFC, 0xBB71, 0x4280, -/* 041B */ 0xBB88, 0xBB90, 0x42F6, -/* 041C */ 0xBBA4, 0xBBD3, 0x42FF, -/* 041D */ 0xBBF8, 0xBC5D, 0x432F, -/* 041E */ 0xBC84, 0xBCDC, 0x4395, -/* 041F */ 0xBCF4, 0xBD14, 0x43EE, -/* 0420 */ 0xBD24, 0xBD2C, 0x440F, -/* 0421 */ 0xBD40, 0xBD68, 0x4418, -/* 0422 */ 0xBD80, 0xBDA4, 0x4441, -/* 0423 */ 0xBDB0, 0xBDB8, 0x4466, -/* 0424 */ 0xBDD2, 0xBDDC, 0x446F, -/* 0425 */ 0xBDE9, 0xBE1F, 0x447A, -/* 0426 */ 0xBE44, 0xBE99, 0x44B1, -/* 0427 */ 0xBEA8, 0x0000, 0xBBB4, -/* 0428 */ 0xBED0, 0xBEEC, 0x4507, -/* 0429 */ 0xBF01, 0xBF09, 0x4524, -/* 042A */ 0xBF18, 0xBF1D, 0x452D, -/* 042B */ 0xBF40, 0xBF55, 0x4533, -/* 042C */ 0xBF94, 0x0000, 0xBBCE, -/* 042D */ 0xBFB0, 0x0000, 0xBBCF, -/* 042E */ 0xBFC5, 0xBFE1, 0x4549, -/* 042F */ 0xC03C, 0xC03F, 0x4566, -/* 0430 */ 0xC051, 0xC069, 0x456A, -/* 0431 */ 0xC090, 0xC1B0, 0x4583, -/* 0432 */ 0xC1BD, 0xC234, 0x46A4, -/* 0433 */ 0xC246, 0xC2B9, 0x471C, -/* 0434 */ 0xC2DC, 0xC329, 0x4790, -/* 0435 */ 0xC345, 0x0000, 0xBDE0, -/* 0436 */ 0xC368, 0xC38C, 0x47DE, -/* 0437 */ 0xC3C0, 0x0000, 0xBDED, -/* 0438 */ 0xC3D8, 0xC3F8, 0x4803, -/* 0439 */ 0xC408, 0xC410, 0x4824, -/* 043A */ 0xC424, 0xC448, 0x482D, -/* 043B */ 0xC464, 0xC480, 0x4852, -/* 043C */ 0xC494, 0xC49C, 0x486F, -/* 043D */ 0xC4B8, 0xC4BC, 0x4878, -/* 043E */ 0xC4E9, 0xC51C, 0x487D, -/* 043F */ 0xC528, 0xC660, 0x48B1, -/* 0440 */ 0xC66C, 0xC7EC, 0x49EA, -/* 0441 */ 0xC7FB, 0xC854, 0x4B6B, -/* 0442 */ 0xC870, 0xC8A8, 0x4BC5, -/* 0443 */ 0xC8BC, 0xC8E5, 0x4BFE, -/* 0444 */ 0xC8F5, 0xC918, 0x4C28, -/* 0445 */ 0xC92C, 0xC934, 0x4C4C, -/* 0446 */ 0xC950, 0xC97C, 0x4C55, -/* 0447 */ 0xC988, 0xC99D, 0x4C82, -/* 0448 */ 0xC9C0, 0xCA18, 0x4C98, -/* 0449 */ 0xCA26, 0xCA29, 0x4CF1, -/* 044A */ 0xCA47, 0xCA6A, 0x4CF5, -/* 044B */ 0xCA7D, 0xCA86, 0x4D19, -/* 044C */ 0xCA98, 0x0000, 0xC2C8, -/* 044D */ 0xCABC, 0xCAF4, 0x4D23, -/* 044E */ 0xCB08, 0xCB21, 0x4D5C, -/* 044F */ 0xCB41, 0xCB64, 0x4D76, -/* 0450 */ 0xCB78, 0xCB79, 0x4D9A, -/* 0451 */ 0xCB9C, 0x0000, 0xC2E8, -/* 0452 */ 0xCBB8, 0x0000, 0xC2E9, -/* 0453 */ 0xCBD4, 0x0000, 0xC2EA, -/* 0454 */ 0xCBE0, 0xCBE9, 0x4D9C, -/* 0455 */ 0xCC0C, 0xCC75, 0x4DA6, -/* 0456 */ 0xCC94, 0xCCD4, 0x4E10, -/* 0457 */ 0xCCE4, 0xCCF0, 0x4E51, -/* 0458 */ 0xCCFE, 0xCD2C, 0x4E5E, -/* 0459 */ 0xCD39, 0xCD3E, 0x4E8D, -/* 045A */ 0xCD5C, 0xCD78, 0x4E93, -/* 045B */ 0xCD88, 0x0000, 0xC3DE, -/* 045C */ 0xCD94, 0xCDB0, 0x4EB0, -/* 045D */ 0xCDC4, 0xCDD0, 0x4ECD, -/* 045E */ 0xCDE8, 0xCE35, 0x4EDA, -/* 045F */ 0xCE58, 0xCEAD, 0x4F28, -/* 0460 */ 0xCEC1, 0x0000, 0xC4BE, -/* 0461 */ 0xCEE4, 0xCF38, 0x4F7E, -/* 0462 */ 0xCF54, 0xCF8D, 0x4FD3, -/* 0463 */ 0xCFA1, 0xCFB0, 0x500D, -/* 0464 */ 0xCFC4, 0x0000, 0xC4EC, -/* 0465 */ 0xCFE0, 0xD004, 0x501D, -/* 0466 */ 0xD011, 0xD018, 0x5042, -/* 0467 */ 0xD02D, 0xD060, 0x504A, -/* 0468 */ 0xD06C, 0xD081, 0x507E, -/* 0469 */ 0xD0A4, 0xD0F8, 0x5094, -/* 046A */ 0xD10D, 0x0000, 0xC5CC, -/* 046B */ 0xD130, 0xD16D, 0x50E9, -/* 046C */ 0xD17C, 0xD18A, 0x5127, -/* 046D */ 0xD1A0, 0xD1C0, 0x5136, -/* 046E */ 0xD1D8, 0x0000, 0xC5EF, -/* 046F */ 0xD1F4, 0xD1F8, 0x5157, -/* 0470 */ 0xD207, 0xD210, 0x515C, -/* 0471 */ 0xD22A, 0xD24C, 0x5166, -/* 0472 */ 0xD25C, 0xD268, 0x5189, -/* 0473 */ 0xD280, 0xD349, 0x5196, -/* 0474 */ 0xD37C, 0xD408, 0x5260, -/* 0475 */ 0xD41D, 0x0000, 0xC7A2, -/* 0476 */ 0xD440, 0xD444, 0x52ED, -/* 0477 */ 0xD45C, 0xD494, 0x52F2, -/* 0478 */ 0xD4A9, 0x0000, 0xC7B5, -/* 0479 */ 0xD4CC, 0xD517, 0x532B, -/* 047A */ 0xD538, 0xD590, 0x5377, -/* 047B */ 0xD5A5, 0xD5A7, 0x53D0, -/* 047C */ 0xD5C8, 0xD674, 0x53D3, -/* 047D */ 0xD681, 0xD704, 0x5480, -/* 047E */ 0xD711, 0xD79D, 0x5504, -/* 047F */ 0xF900, 0xF932, 0x5591, -/* 0480 */ 0xF944, 0xF949, 0x55C4, -/* 0481 */ 0xF958, 0xFA0B, 0x55CA, -/* 0482 */ 0xFF3C, 0x0000, 0xA1AC, -/* 0483 */ 0xFF5E, 0x0000, 0xA2A6, -/* 0484 */ 0xFFE0, 0xFFE6, 0x567E, -/*-------------------------------------------------------*/ -/* Offset=0x0EB5 Start of MappingTable */ - -/* 0000 */ 0xA2AE, 0xFFFD, 0xFFFD, 0xA2B4, 0xFFFD, 0xFFFD, 0xA1D7, 0xA1A7, -/* 0008 */ 0xFFFD, 0xA8A3, 0xFFFD, 0xFFFD, 0xA1A9, 0xFFFD, 0xFFFD, 0xA1C6, -/* 0010 */ 0xA1BE, 0xA9F7, 0xA9F8, 0xA2A5, 0xFFFD, 0xA2D2, 0xA1A4, 0xA2AC, -/* 0018 */ 0xA9F6, 0xA8AC, 0xFFFD, 0xA8F9, 0xA8F6, 0xA8FA, 0xA2AF, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8A1, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8A2, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1BF, 0xA8AA, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8AD, 0xA9AC, 0xFFFD, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA9A1, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA9A3, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1C0, 0xA9AA, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA9AD, 0xA8A4, 0xA9A4, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xA9A5, 0xA8A6, 0xA9A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xA9A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8A8, -/* 0078 */ 0xA9A8, 0xA8A9, 0xA9A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xA9B0, 0xA8AF, 0xA9AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0xA8AB, 0xA9AB, 0xA8AE, 0xA9AE, 0xA2A7, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA2B0, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA2A8, -/* 00A0 */ 0xA2AB, 0xA2AA, 0xA2AD, 0xFFFD, 0xA2A9, 0xA1AA, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xA1AE, 0xA1AF, 0xFFFD, 0xFFFD, 0xA1B0, 0xA1B1, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xA2D3, 0xA2D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1A5, 0xA1A6, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xA2B6, 0xFFFD, 0xA1C7, 0xA1C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA1D8, 0xA9F9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA9FA, -/* 00D8 */ 0xFFFD, 0xA9FB, 0xA9FC, 0xA9FD, 0xA9FE, 0xA1C9, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA2B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA7A4, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xA2E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA2E5, 0xA2E2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0100 */ 0xA7D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1CA, 0xA8F7, 0xA8F8, -/* 0108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8FB, 0xA8FC, -/* 0110 */ 0xA8FD, 0xA8FE, 0xA1E7, 0xA1E8, 0xA1E6, 0xA1E9, 0xA1EA, 0xA2D5, -/* 0118 */ 0xA2D8, 0xA2D6, 0xA2D9, 0xA2D7, 0xA2A1, 0xFFFD, 0xA2A2, 0xA2A3, -/* 0120 */ 0xFFFD, 0xA1D3, 0xA2A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1D4, 0xA1F4, -/* 0128 */ 0xFFFD, 0xFFFD, 0xA1F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xA2B3, 0xFFFD, -/* 0130 */ 0xA2B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0138 */ 0xFFFD, 0xA1EE, 0xFFFD, 0xFFFD, 0xA1F0, 0xA1C4, 0xFFFD, 0xA1D0, -/* 0140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1AB, 0xFFFD, 0xA1FC, 0xA1FD, -/* 0148 */ 0xA1FB, 0xA1FA, 0xA1F2, 0xA1F3, 0xFFFD, 0xA2B1, 0xFFFD, 0xFFFD, -/* 0150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA1C5, 0xA1F1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA1AD, 0xA1EF, 0xA1C1, 0xA1D5, 0xFFFD, -/* 0160 */ 0xFFFD, 0xA1C2, 0xA1C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1EC, -/* 0168 */ 0xA1ED, 0xA1F8, 0xA1F9, 0xFFFD, 0xFFFD, 0xA1F6, 0xA1F7, 0xA6A1, -/* 0170 */ 0xA6AC, 0xA6A2, 0xA6AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA6A3, 0xA6C8, 0xA6C7, 0xA6AE, 0xA6A4, -/* 0180 */ 0xA6C2, 0xA6C1, 0xA6AF, 0xA6A6, 0xA6C6, 0xA6C5, 0xA6B1, 0xA6A5, -/* 0188 */ 0xA6C4, 0xA6C3, 0xA6B0, 0xA6A7, 0xA6BC, 0xA6C9, 0xA6CA, 0xA6B7, -/* 0190 */ 0xA6CB, 0xA6CC, 0xA6B2, 0xA6A9, 0xA6BE, 0xA6CD, 0xA6CE, 0xA6B9, -/* 0198 */ 0xA6CF, 0xA6D0, 0xA6B4, 0xA6A8, 0xA6D1, 0xA6D2, 0xA6B8, 0xA6BD, -/* 01A0 */ 0xA6D3, 0xA6D4, 0xA6B3, 0xA6AA, 0xA6D5, 0xA6D6, 0xA6BA, 0xA6BF, -/* 01A8 */ 0xA6D7, 0xA6D8, 0xA6B5, 0xA6AB, 0xA6D9, 0xA6DA, 0xA6BB, 0xA6DB, -/* 01B0 */ 0xA6DC, 0xA6C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B8 */ 0xFFFD, 0xFFFD, 0xA6B6, 0xA1E1, 0xA1E0, 0xFFFD, 0xA2C3, 0xA2C7, -/* 01C0 */ 0xA2C8, 0xA2CB, 0xA2CA, 0xA2C9, 0xA2CC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1E3, 0xA1E2, 0xFFFD, -/* 01D0 */ 0xFFFD, 0xA2BA, 0xA2B9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1E5, -/* 01D8 */ 0xA1E4, 0xFFFD, 0xFFFD, 0xA2B8, 0xA2B7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E0 */ 0xFFFD, 0xA1DF, 0xA1DE, 0xA2C2, 0xFFFD, 0xFFFD, 0xA1DB, 0xFFFD, -/* 01E8 */ 0xFFFD, 0xA1DD, 0xA1DC, 0xA2C4, 0xA2C5, 0xA1DA, 0xA1D9, 0xFFFD, -/* 01F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA2CF, 0xA2CE, -/* 01F8 */ 0xA2D0, 0xFFFD, 0xA2D1, 0xA1CF, 0xFFFD, 0xA1CE, 0xA2BC, 0xA2BD, -/* 0200 */ 0xFFFD, 0xA2C0, 0xA2BB, 0xA2BE, 0xFFFD, 0xA2BF, 0xA2CD, 0xA2DB, -/* 0208 */ 0xA2DC, 0xFFFD, 0xA2DD, 0xA2DA, 0xA1A1, 0xA1A2, 0xA1A3, 0xA1A8, -/* 0210 */ 0xA1EB, 0xA1B2, 0xA1B3, 0xA7C9, 0xA7CA, 0xA7CB, 0xA7CC, 0xA7CD, -/* 0218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA7BA, 0xA7BB, 0xA7DC, 0xA7DD, 0xA7DE, -/* 0220 */ 0xA7B6, 0xA7B7, 0xA7B8, 0xA7D4, 0xA7D5, 0xA7D6, 0xA7D7, 0xA7D8, -/* 0228 */ 0xA7A1, 0xA7A2, 0xA7A3, 0xA7A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA7A7, 0xA7A8, -/* 0238 */ 0xA7A9, 0xA7AA, 0xA7BD, 0xA7BE, 0xA7E5, 0xA7E6, 0xA7E7, 0xA7E8, -/* 0240 */ 0xA7E1, 0xA7E2, 0xA7E3, 0xA7DA, 0xA7DB, 0xA2E3, 0xA7EC, 0xA7A6, -/* 0248 */ 0xA7E0, 0xA7EF, 0xA2E1, 0xA7BC, 0xA7ED, 0xA7B5, 0xFFFD, 0xFFFD, -/* 0250 */ 0xFFFD, 0xFFFD, 0xA7B9, 0xA7EA, 0xFFFD, 0xFFFD, 0xA7EB, 0xFFFD, -/* 0258 */ 0xFFFD, 0xA7DF, 0xFFFD, 0xA2E4, 0xFFFD, 0xFFFD, 0xA7E4, 0xA7EE, -/* 0260 */ 0xA7E9, 0xECE9, 0xEFCB, 0xFFFD, 0xF6D2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0268 */ 0xD8B2, 0xEDDB, 0xDFB2, 0xDFBE, 0xF9BB, 0xFFFD, 0xDCF4, 0xFFFD, -/* 0270 */ 0xFFFD, 0xFFFD, 0xF5E4, 0xFFFD, 0xFFFD, 0xF3A6, 0xDDE0, 0xE1A6, -/* 0278 */ 0xFFFD, 0xCEF8, 0xDCB0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3AA, -/* 0280 */ 0xF1E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDFA, 0xFFFD, 0xFFFD, -/* 0288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFCAF, 0xD3A1, 0xFFFD, 0xF1AB, 0xFFFD, -/* 0290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7D1, 0xD2AC, 0xFFFD, -/* 0298 */ 0xCEF9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1FD, 0xFFFD, -/* 02A0 */ 0xDEBF, 0xFBBA, 0xF9B9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02A8 */ 0xFFFD, 0xCED2, 0xFFFD, 0xE3AB, 0xEBE0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02B0 */ 0xCEFA, 0xCBF7, 0xE5A5, 0xCAE1, 0xFFFD, 0xD4CC, 0xFFFD, 0xFFFD, -/* 02B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEAE1, 0xFFFD, 0xFFFD, 0xDCE3, 0xDFAD, -/* 02C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBEB, 0xFFFD, -/* 02C8 */ 0xFFFD, 0xFFFD, 0xD5AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6F5, 0xFFFD, -/* 02D0 */ 0xE5F8, 0xFFFD, 0xFFFD, 0xDEC0, 0xECA3, 0xFFFD, 0xE9CD, 0xFFFD, -/* 02D8 */ 0xEAA7, 0xE9F6, 0xFBBB, 0xFFFD, 0xE7E9, 0xEFCC, 0xFFFD, 0xFFFD, -/* 02E0 */ 0xD0E6, 0xFFFD, 0xFFFD, 0xDEC1, 0xFFFD, 0xFFFD, 0xE4AC, 0xFFFD, -/* 02E8 */ 0xFFFD, 0xD8CC, 0xF9F1, 0xFFFD, 0xCEDF, 0xFAA4, 0xE6B2, 0xFFFD, -/* 02F0 */ 0xFAFB, 0xFFFD, 0xFFFD, 0xFABD, 0xCCC8, 0xEFCD, 0xD5D5, 0xFFFD, -/* 02F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3A2, 0xFFFD, -/* 0300 */ 0xFFFD, 0xFFFD, 0xECD1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0308 */ 0xE4A7, 0xECD2, 0xFFFD, 0xFFFD, 0xF6B1, 0xFFFD, 0xFFFD, 0xCEFB, -/* 0310 */ 0xFFFD, 0xFFFD, 0xD0D1, 0xCBBF, 0xFFFD, 0xEDA4, 0xFFFD, 0xFFFD, -/* 0318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDA8, 0xDEC2, 0xF6E2, 0xEDDC, -/* 0320 */ 0xDCF5, 0xE0B9, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4CE, 0xFFFD, 0xF4B5, -/* 0328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD3DB, 0xD6B5, 0xECA4, 0xFFFD, 0xFFFD, -/* 0330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0338 */ 0xE4E6, 0xFFFD, 0xF1EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBEC, 0xCBC0, -/* 0340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xECF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0348 */ 0xFFFD, 0xD0EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0350 */ 0xFFFD, 0xF9F2, 0xECA5, 0xD0DF, 0xFFFD, 0xE7EA, 0xD0EB, 0xDCD1, -/* 0358 */ 0xDBE9, 0xFDCC, 0xDBD7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAE1, -/* 0360 */ 0xFFFD, 0xD6B6, 0xFFFD, 0xE3DF, 0xFFFD, 0xDEC3, 0xFFFD, 0xDEC4, -/* 0368 */ 0xCAA1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEEC, 0xFFFD, -/* 0370 */ 0xFFFD, 0xD3A3, 0xEEB7, 0xF8CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0378 */ 0xEAC8, 0xEEB8, 0xF1AC, 0xF1A5, 0xE9CE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0380 */ 0xF9BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5F9, 0xECEA, 0xDDD6, 0xEDC2, -/* 0388 */ 0xF8A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5BA, 0xDBD8, -/* 0390 */ 0xFFFD, 0xFFFD, 0xCAA2, 0xFFFD, 0xFFFD, 0xD1CD, 0xFFFD, 0xFFFD, -/* 0398 */ 0xFFFD, 0xEEED, 0xFFFD, 0xFFFD, 0xFFFD, 0xECEB, 0xDEC5, 0xFFFD, -/* 03A0 */ 0xE3E0, 0xFFFD, 0xCAC9, 0xF2E9, 0xFFFD, 0xD5CE, 0xFFFD, 0xF6B6, -/* 03A8 */ 0xFFFD, 0xCEC2, 0xD6C7, 0xFFFD, 0xE3B4, 0xFFFD, 0xF1AD, 0xFFFD, -/* 03B0 */ 0xEAE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7C2, 0xFFFD, 0xF3A7, -/* 03B8 */ 0xFFFD, 0xFFFD, 0xCDEA, 0xFFFD, 0xEBEE, 0xD9B2, 0xFDA5, 0xFFFD, -/* 03C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6D5, 0xD5E2, 0xFFFD, 0xFFFD, -/* 03C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8B5, 0xFFFD, -/* 03D0 */ 0xFFFD, 0xCCF5, 0xF5B5, 0xE4AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03D8 */ 0xE7EB, 0xF1D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0BB, 0xFFFD, 0xFFFD, -/* 03E0 */ 0xE9B5, 0xFFFD, 0xCCC9, 0xFAD5, 0xFFFD, 0xFFFD, 0xE1D4, 0xFFFD, -/* 03E8 */ 0xFFFD, 0xD7D6, 0xFFFD, 0xFFFD, 0xDCC1, 0xFFFD, 0xDEC6, 0xFAEF, -/* 03F0 */ 0xE3E1, 0xE1F3, 0xDCF6, 0xFFFD, 0xCEFC, 0xFFFD, 0xDBC4, 0xFFFD, -/* 03F8 */ 0xF8F1, 0xFFFD, 0xFFFD, 0xDCE4, 0xFFFD, 0xE5EF, 0xFFFD, 0xFFFD, -/* 0400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCB1, 0xFFFD, 0xFFFD, -/* 0408 */ 0xFFFD, 0xD5D6, 0xFFFD, 0xFFFD, 0xF3DA, 0xFFFD, 0xCBC1, 0xFFFD, -/* 0410 */ 0xDBC3, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9FA, 0xD3EE, 0xFFFD, 0xFFFD, -/* 0418 */ 0xFFFD, 0xFAB8, 0xFFFD, 0xFFFD, 0xFDA6, 0xEBEF, 0xFFFD, 0xF4A6, -/* 0420 */ 0xFFFD, 0xCCCA, 0xF3A8, 0xFFFD, 0xF3DB, 0xFFFD, 0xDBA7, 0xF6B7, -/* 0428 */ 0xFFFD, 0xCFE6, 0xF0F2, 0xCBDA, 0xFFFD, 0xE7D2, 0xD7C3, 0xF6F0, -/* 0430 */ 0xE8DE, 0xE5A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0438 */ 0xFFFD, 0xE5E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAA3, 0xCCA7, 0xEAC9, -/* 0440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8B6, 0xFFFD, 0xFFFD, -/* 0448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFAA5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0450 */ 0xF1AE, 0xFFFD, 0xEFCE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCBED, 0xF6B0, 0xEFCF, 0xE9CF, 0xFFFD, -/* 0460 */ 0xF7DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0468 */ 0xCED3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCF7, 0xFFFD, 0xFFFD, -/* 0470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBA8, 0xFFFD, 0xFFFD, -/* 0478 */ 0xFFFD, 0xCBF8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0480 */ 0xDFA1, 0xDDE1, 0xF5CA, 0xE9B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0488 */ 0xE7EC, 0xEEEE, 0xFFFD, 0xF3F0, 0xFFFD, 0xDFBF, 0xFFFD, 0xFFFD, -/* 0490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCCB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD0C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4D2, -/* 04A0 */ 0xE0BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFC0, 0xFFFD, 0xCEE0, -/* 04A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDCD2, 0xFDEA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04B0 */ 0xD6F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xEACA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8E9, 0xFFFD, 0xE3AC, 0xFFFD, 0xFFFD, -/* 04C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF3D0, 0xCAA4, 0xFFFD, 0xDBF8, 0xFFFD, -/* 04C8 */ 0xFFFD, 0xFFFD, 0xDEC7, 0xEBF0, 0xF1D6, 0xFFFD, 0xFFFD, 0xE5E2, -/* 04D0 */ 0xFFFD, 0xCCCC, 0xFFFD, 0xFFFD, 0xCBFB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAE3, 0xDFC1, 0xFFFD, -/* 04E0 */ 0xD6ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04E8 */ 0xFFFD, 0xE9D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04F0 */ 0xFFFD, 0xEEB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5E3, 0xFFFD, -/* 04F8 */ 0xFFFD, 0xD1D3, 0xFFFD, 0xE5F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8B4, -/* 0500 */ 0xEBC3, 0xFFFD, 0xEAAA, 0xFAFC, 0xF5F6, 0xF0BC, 0xFDD4, 0xE0BB, -/* 0508 */ 0xCEC3, 0xFFFD, 0xD0BA, 0xF7BA, 0xD8F3, 0xF7CD, 0xFFFD, 0xFFFD, -/* 0510 */ 0xFFFD, 0xE4AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD4DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0520 */ 0xFFFD, 0xD0E7, 0xFFFD, 0xFFFD, 0xECFD, 0xFFFD, 0xD2AE, 0xEEEF, -/* 0528 */ 0xD5D7, 0xEAE4, 0xF8A2, 0xCDEB, 0xD7BF, 0xFBB1, 0xFFFD, 0xFFFD, -/* 0530 */ 0xCDEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCB2, 0xD0EC, 0xCEFD, 0xEEF0, -/* 0538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCCC2, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0ED, -/* 0540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5F7, 0xFFFD, 0xFFFD, -/* 0548 */ 0xFFFD, 0xF3FC, 0xFFFD, 0xFFFD, 0xEEA2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0550 */ 0xFFFD, 0xD9B3, 0xFFFD, 0xFFFD, 0xD8F4, 0xFFFD, 0xE9B7, 0xFFFD, -/* 0558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEAE, -/* 0560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9A2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0568 */ 0xFFFD, 0xD8F1, 0xFFFD, 0xD4CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5A7, 0xD5D2, 0xFFFD, -/* 0578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6A9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF4A2, 0xFFFD, 0xF1D7, 0xFFFD, 0xFFFD, -/* 0588 */ 0xD5D8, 0xFFFD, 0xF0BD, 0xD7D0, 0xD4D0, 0xD7CF, 0xEBEA, 0xFDEB, -/* 0590 */ 0xFFFD, 0xFFFD, 0xDBED, 0xFCC5, 0xCBC2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0598 */ 0xFFFD, 0xFDD5, 0xFFFD, 0xF4C8, 0xE8EA, 0xF5F3, 0xFFFD, 0xFFFD, -/* 05A0 */ 0xF9DE, 0xFFFD, 0xFFFD, 0xD3EF, 0xFFFD, 0xFFFD, 0xECD3, 0xFFFD, -/* 05A8 */ 0xFFFD, 0xDDC2, 0xEFB7, 0xE7D4, 0xFFFD, 0xCACA, 0xFFFD, 0xFFFD, -/* 05B0 */ 0xFFFD, 0xD9FB, 0xFFFD, 0xFFFD, 0xFAFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05B8 */ 0xFFFD, 0xFFFD, 0xD6AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05C0 */ 0xF4F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7F7, -/* 05C8 */ 0xDCAC, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7D7, 0xDFA2, 0xFFFD, 0xFFFD, -/* 05D0 */ 0xFFFD, 0xCEBE, 0xFFFD, 0xD3F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05D8 */ 0xFFFD, 0xF0A4, 0xE1EC, 0xCFE7, 0xF3CB, 0xEDA9, 0xCABE, 0xFFFD, -/* 05E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4EF, 0xFFFD, -/* 05E8 */ 0xFFFD, 0xFFFD, 0xF6CE, 0xFFFD, 0xFFFD, 0xDEFB, 0xD0BB, 0xD5B7, -/* 05F0 */ 0xEEF1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4A8, -/* 05F8 */ 0xFFFD, 0xDCF8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBA7, 0xFFFD, -/* 0600 */ 0xDACE, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0E6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDA5, 0xEEF2, 0xFFFD, 0xFFFD, -/* 0610 */ 0xFFFD, 0xFFFD, 0xDCF9, 0xFFFD, 0xFFFD, 0xF9DC, 0xFFFD, 0xFFFD, -/* 0618 */ 0xF3DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0620 */ 0xF8F2, 0xFFFD, 0xF4F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCF1, 0xFFFD, -/* 0628 */ 0xFFFD, 0xFFFD, 0xD0BC, 0xDBF9, 0xD7B1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0630 */ 0xCBFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0A5, 0xCBFD, 0xFFFD, 0xFFFD, -/* 0638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5F4, 0xFFFD, -/* 0640 */ 0xFFFD, 0xFFFD, 0xCDED, 0xCAA5, 0xFFFD, 0xFFFD, 0xD6AB, 0xD0C2, -/* 0648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0BE, 0xD2BD, 0xCCA4, 0xFAB6, -/* 0650 */ 0xFFFD, 0xFFFD, 0xCCCD, 0xFFFD, 0xDAFA, 0xFFFD, 0xF6CF, 0xFFFD, -/* 0658 */ 0xE9B8, 0xFFFD, 0xD8F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCCE, 0xFFFD, -/* 0660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD7CD, 0xFFFD, 0xFFFD, 0xD4D1, 0xE9ED, -/* 0668 */ 0xFFFD, 0xCAEB, 0xD9E2, 0xFFFD, 0xFDB2, 0xFFFD, 0xE3AD, 0xD6CC, -/* 0670 */ 0xD9B4, 0xFFFD, 0xFFFD, 0xE1A7, 0xEED3, 0xD0C3, 0xFDB3, 0xFFFD, -/* 0678 */ 0xD5E4, 0xFFFD, 0xFFFD, 0xCFE8, 0xFFFD, 0xEDC3, 0xD0B2, 0xFFFD, -/* 0680 */ 0xFFFD, 0xCEFE, 0xDAA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0688 */ 0xF8D0, 0xFFFD, 0xFFFD, 0xFDD6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0690 */ 0xF8D1, 0xFFFD, 0xF8D2, 0xDCD3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0698 */ 0xDDE2, 0xFBF9, 0xDDC1, 0xFFFD, 0xE3B5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEDDD, 0xCEC4, 0xFFFD, 0xCBA1, 0xFFFD, -/* 06A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDE3, 0xFFFD, 0xFFFD, -/* 06B0 */ 0xFFFD, 0xFFFD, 0xFCDD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9AF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06C0 */ 0xFFFD, 0xFFFD, 0xD2FB, 0xCFA1, 0xE4A8, 0xFFFD, 0xF4B6, 0xECFE, -/* 06C8 */ 0xFFFD, 0xFFFD, 0xE3AE, 0xE7ED, 0xFDC1, 0xDAE2, 0xFFFD, 0xFFFD, -/* 06D0 */ 0xD8B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDE4, 0xF0EF, 0xF6F1, 0xFAF0, -/* 06D8 */ 0xFFFD, 0xFFFD, 0xD1F5, 0xFFFD, 0xFFFD, 0xDACF, 0xFFFD, 0xDCD4, -/* 06E0 */ 0xFFFD, 0xDCA6, 0xFFFD, 0xEFBF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06E8 */ 0xFFFD, 0xCECF, 0xFFFD, 0xE0D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06F0 */ 0xFFFD, 0xFFFD, 0xD9D6, 0xECD4, 0xEACB, 0xFFFD, 0xFFFD, 0xCABF, -/* 06F8 */ 0xD5B0, 0xFFFD, 0xCFE9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0700 */ 0xF1ED, 0xFFFD, 0xCCCF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4F8, -/* 0708 */ 0xE4ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7D8, 0xFFFD, 0xFDA7, -/* 0710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAAB, 0xF6B2, 0xFFFD, 0xFFFD, -/* 0718 */ 0xFFFD, 0xFFFD, 0xCFF0, 0xF9BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0720 */ 0xFFFD, 0xFFFD, 0xE6F4, 0xCBDB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF3D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0730 */ 0xE9D1, 0xF3A9, 0xD0E0, 0xE9D2, 0xFFFD, 0xDAE3, 0xFFFD, 0xFFFD, -/* 0738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2D2, 0xFFFD, 0xF6A2, 0xE1F4, -/* 0740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDAE4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0748 */ 0xFFFD, 0xE7D5, 0xF5BF, 0xCFA2, 0xCDAF, 0xCFA3, 0xFFFD, 0xFFFD, -/* 0750 */ 0xFFFD, 0xCDB0, 0xF1FE, 0xD0A3, 0xE1AF, 0xF8A3, 0xFFFD, 0xCAA6, -/* 0758 */ 0xF7BB, 0xF2EA, 0xDEC8, 0xE9D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0760 */ 0xDEC9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFDDE, 0xCAC0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0770 */ 0xF9EA, 0xD1CE, 0xEED4, 0xFFFD, 0xD4D2, 0xD9A3, 0xFDA8, 0xD7D9, -/* 0778 */ 0xF7CE, 0xFABE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCFD6, 0xFFFD, 0xD7F0, 0xFFFD, 0xEBE1, -/* 0788 */ 0xF8C5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCFA, 0xFFFD, -/* 0790 */ 0xFFFD, 0xDDC3, 0xFFFD, 0xF9DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE7EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07A0 */ 0xFDE5, 0xF6A3, 0xFFFD, 0xD9FC, 0xFDA9, 0xFFFD, 0xE7EE, 0xFFFD, -/* 07A8 */ 0xFFFD, 0xFFFD, 0xD5E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07B0 */ 0xEFD0, 0xFFFD, 0xCDB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07B8 */ 0xFFFD, 0xF7A2, 0xF1B2, 0xFFFD, 0xF1B1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCDB2, 0xFFFD, 0xDAAB, 0xFFFD, 0xCAA7, -/* 07C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3E2, 0xFBBC, 0xD9A4, -/* 07D0 */ 0xFFFD, 0xFFFD, 0xEEBA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D8 */ 0xF8D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBFA, 0xFFFD, -/* 07E0 */ 0xCFA4, 0xFFFD, 0xDCFB, 0xF6E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDAA, -/* 07E8 */ 0xFFFD, 0xFFFD, 0xF2A1, 0xCEE1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07F0 */ 0xFFFD, 0xFFFD, 0xFAA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9E0, -/* 07F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECD6, 0xFFFD, 0xFFFD, 0xE4EE, -/* 0800 */ 0xF9A1, 0xFFFD, 0xFFFD, 0xFBEF, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9EB, -/* 0808 */ 0xEEA3, 0xEAAC, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAA8, 0xFFFD, 0xFFFD, -/* 0810 */ 0xF4FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDD6, 0xFCF6, 0xFFFD, -/* 0818 */ 0xFFFD, 0xFFFD, 0xF4C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0820 */ 0xFFFD, 0xFFFD, 0xF8D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8A6, 0xFFFD, 0xDECA, 0xF2C6, -/* 0830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7DA, 0xFFFD, -/* 0838 */ 0xD3D0, 0xEAE6, 0xFFFD, 0xF3DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4DA, -/* 0840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0848 */ 0xF6E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6F2, 0xFFFD, -/* 0850 */ 0xDFC2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0858 */ 0xFFFD, 0xD9FD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCF6, 0xFFFD, 0xFFFD, -/* 0860 */ 0xD3BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0868 */ 0xE4AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9E1, 0xF0A6, 0xFFFD, -/* 0870 */ 0xFFFD, 0xFFFD, 0xCBD3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0BC, 0xFFFD, -/* 0878 */ 0xF4CA, 0xD4FA, 0xFFFD, 0xFDAA, 0xF9E2, 0xF4B7, 0xFDC2, 0xFCB0, -/* 0880 */ 0xFFFD, 0xFDEC, 0xCAE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDBD, 0xFFFD, 0xEAE7, 0xDFC3, -/* 0890 */ 0xD1D2, 0xCEE2, 0xFFFD, 0xD3A4, 0xFDAB, 0xFFFD, 0xDFE0, 0xF2C7, -/* 0898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7F0, 0xFFFD, 0xD0EE, -/* 08A0 */ 0xFFFD, 0xFFFD, 0xF3AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xDECB, 0xF6B8, -/* 08A8 */ 0xE1F5, 0xF1B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08B0 */ 0xFFFD, 0xF7A3, 0xFFFD, 0xFFFD, 0xCAA9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFA5, -/* 08C0 */ 0xFFFD, 0xFFFD, 0xDFC4, 0xE1B0, 0xFFFD, 0xFFFD, 0xF0BF, 0xFFFD, -/* 08C8 */ 0xF6A4, 0xFFFD, 0xE3B6, 0xD0EF, 0xFFFD, 0xFFFD, 0xFDED, 0xFFFD, -/* 08D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDC4, -/* 08D8 */ 0xE6BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEAD, -/* 08E0 */ 0xFFFD, 0xFABF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5F1, -/* 08E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDC4, -/* 08F0 */ 0xD2A5, 0xFFFD, 0xFFFD, 0xFDEE, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5B6, -/* 08F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0900 */ 0xE1F6, 0xDECC, 0xFFFD, 0xFFFD, 0xFCDE, 0xFFFD, 0xECD7, 0xCDDD, -/* 0908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0910 */ 0xD6B7, 0xCDB3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0918 */ 0xFFFD, 0xFFFD, 0xF8D5, 0xE5D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFEA, -/* 0920 */ 0xFFFD, 0xFFFD, 0xCFD0, 0xFFFD, 0xEACC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0928 */ 0xFFFD, 0xEAAE, 0xEAAD, 0xFFFD, 0xFFFD, 0xD3F1, 0xFFFD, 0xD3A5, -/* 0930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7CF, 0xFFFD, -/* 0938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEA4, -/* 0940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0A4, 0xFFFD, 0xFFFD, 0xF2A2, -/* 0948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0950 */ 0xFFFD, 0xFFFD, 0xD0F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2A3, -/* 0958 */ 0xFFFD, 0xF7F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0B3, 0xFFFD, -/* 0960 */ 0xFFFD, 0xDBA9, 0xFFFD, 0xFFFD, 0xD3BB, 0xCAEC, 0xFFFD, 0xF1A6, -/* 0968 */ 0xCBD5, 0xF7E7, 0xFFFD, 0xFFFD, 0xCDDE, 0xFFFD, 0xF7A4, 0xFFFD, -/* 0970 */ 0xFFFD, 0xFFFD, 0xF8C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3DD, 0xFFFD, -/* 0978 */ 0xCCD0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFA6, 0xFFFD, 0xFFFD, -/* 0980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6F3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0988 */ 0xFFFD, 0xFFFD, 0xE1F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0990 */ 0xD3DC, 0xFFFD, 0xFFFD, 0xFAFE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFAA7, 0xEBD9, 0xFFFD, 0xCFA7, 0xEAAF, -/* 09A0 */ 0xE4EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9B9, 0xF1D8, 0xFFFD, 0xFFFD, -/* 09A8 */ 0xD8D8, 0xFFFD, 0xFFFD, 0xE0F2, 0xE6B4, 0xDCFC, 0xF3F1, 0xFFFD, -/* 09B0 */ 0xFFFD, 0xFFFD, 0xE3D0, 0xFFFD, 0xFFFD, 0xF2FB, 0xFFFD, 0xDBC6, -/* 09B8 */ 0xD0F1, 0xFFFD, 0xD0F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFDC, 0xFFFD, -/* 09C0 */ 0xD3D1, 0xFFFD, 0xFFFD, 0xCCB1, 0xF7D8, 0xFFFD, 0xCBA8, 0xEBBC, -/* 09C8 */ 0xE4BE, 0xF4DC, 0xFFFD, 0xFFFD, 0xDCC2, 0xFFFD, 0xFFFD, 0xF0A7, -/* 09D0 */ 0xFFFD, 0xFFFD, 0xE6C0, 0xFFFD, 0xFFFD, 0xCAED, 0xFFFD, 0xFFFD, -/* 09D8 */ 0xFFFD, 0xFFFD, 0xE8EB, 0xE5E8, 0xDCC3, 0xFFFD, 0xFFFD, 0xEDDE, -/* 09E0 */ 0xD3F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCF7, 0xCED4, 0xE7AB, -/* 09E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCBC3, 0xFFFD, 0xE1B1, 0xFFFD, 0xFFFD, -/* 09F0 */ 0xF7B2, 0xFFFD, 0xFFFD, 0xD3F3, 0xD3D2, 0xFFFD, 0xF5C0, 0xFFFD, -/* 09F8 */ 0xFFFD, 0xFFFD, 0xDFDD, 0xFFFD, 0xFFFD, 0xEEF3, 0xE7F1, 0xFFFD, -/* 0A00 */ 0xFDB4, 0xF2C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3D2, 0xFFFD, 0xFFFD, -/* 0A08 */ 0xEEF4, 0xFFFD, 0xE2D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCD1, -/* 0A10 */ 0xFFFD, 0xDFEA, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9BA, 0xFFFD, 0xFFFD, -/* 0A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9D7, -/* 0A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A28 */ 0xF5CD, 0xFFFD, 0xF1F2, 0xFAC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9F8, 0xD4C2, 0xFFFD, 0xFFFD, -/* 0A38 */ 0xFFFD, 0xFFFD, 0xF6E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDC5, -/* 0A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7F2, 0xEDDF, -/* 0A48 */ 0xFFFD, 0xFFFD, 0xCACB, 0xFFFD, 0xFFFD, 0xDBFA, 0xFFFD, 0xFFFD, -/* 0A50 */ 0xFFFD, 0xE8B5, 0xFFFD, 0xD3A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A58 */ 0xFFFD, 0xFFFD, 0xFDB5, 0xFFFD, 0xFFFD, 0xF9C9, 0xFFFD, 0xE4E2, -/* 0A60 */ 0xFFFD, 0xFBBD, 0xFFFD, 0xFFFD, 0xD7A4, 0xCEC5, 0xFFFD, 0xFFFD, -/* 0A68 */ 0xFFFD, 0xFFFD, 0xCED5, 0xD6E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A70 */ 0xE5BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDECD, -/* 0A78 */ 0xECF3, 0xFFFD, 0xFFFD, 0xEDE0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECEC, 0xFBBE, 0xDFEB, -/* 0A88 */ 0xFFFD, 0xE1F8, 0xF9BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0F3, -/* 0A90 */ 0xE0AA, 0xE8E2, 0xFFFD, 0xFFFD, 0xE2D4, 0xD2FD, 0xFFFD, 0xE5A8, -/* 0A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9D3, 0xFFFD, 0xFFFD, -/* 0AA0 */ 0xFFFD, 0xFFFD, 0xD3DE, 0xFFFD, 0xF4B8, 0xF7BC, 0xDCFD, 0xFFFD, -/* 0AA8 */ 0xE8EC, 0xE4E7, 0xFFFD, 0xFFFD, 0xE3F7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AB0 */ 0xFFFD, 0xFFFD, 0xECA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AB8 */ 0xFFFD, 0xFAF1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5F2, -/* 0AC0 */ 0xFFFD, 0xFFFD, 0xD0F4, 0xD2AF, 0xDCE5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AC8 */ 0xFFFD, 0xD0A5, 0xF1B4, 0xFCB1, 0xCCF8, 0xFFFD, 0xFFFD, 0xDDC6, -/* 0AD0 */ 0xFAD1, 0xFFFD, 0xF7DF, 0xFFFD, 0xFFFD, 0xFAA8, 0xFFFD, 0xFFFD, -/* 0AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEEF5, 0xFFFD, 0xDECE, 0xFFFD, 0xFFFD, -/* 0AE0 */ 0xFFFD, 0xFFFD, 0xE7F3, 0xFFFD, 0xFFFD, 0xF7AC, 0xEBC4, 0xEDE1, -/* 0AE8 */ 0xE0AB, 0xDDC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2B3, 0xD2BF, -/* 0AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCACC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AF8 */ 0xFBBF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5FD, 0xDDE5, 0xD8CD, -/* 0B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECF4, 0xFFFD, 0xFFFD, -/* 0B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0F5, 0xFFFD, -/* 0B10 */ 0xFFFD, 0xE8ED, 0xD0D2, 0xFFFD, 0xD9D8, 0xF6E6, 0xFFFD, 0xFFFD, -/* 0B18 */ 0xDBAA, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7E0, 0xD8D9, 0xFFFD, 0xF4A3, -/* 0B20 */ 0xFFFD, 0xFFFD, 0xF4DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFD1, -/* 0B28 */ 0xFFFD, 0xFFFD, 0xD9B5, 0xFFFD, 0xFFFD, 0xEDAB, 0xFFFD, 0xE3B7, -/* 0B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEBB, 0xCDB4, 0xFFFD, 0xE0F3, -/* 0B38 */ 0xEACD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECF5, 0xE8EE, 0xFFFD, -/* 0B40 */ 0xCBA9, 0xF1AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B48 */ 0xFFFD, 0xFFFD, 0xCACD, 0xFFFD, 0xECA9, 0xFFFD, 0xF2EB, 0xFFFD, -/* 0B50 */ 0xFDEF, 0xFFFD, 0xF9F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6C1, 0xFFFD, 0xFFFD, 0xECD8, -/* 0B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEDAC, 0xFFFD, 0xEACE, 0xFFFD, 0xE8DF, -/* 0B68 */ 0xDECF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2A6, -/* 0B70 */ 0xFFFD, 0xFFFD, 0xE7F4, 0xD1D6, 0xFFFD, 0xFFFD, 0xE6C2, 0xE3E3, -/* 0B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4B0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B80 */ 0xD8B4, 0xF6A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3DE, -/* 0B88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7A5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B90 */ 0xFFFD, 0xF7E8, 0xFFFD, 0xFFFD, 0xE8C6, 0xFBE6, 0xFFFD, 0xFFFD, -/* 0B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDE6, 0xFFFD, 0xFFFD, -/* 0BA0 */ 0xFFFD, 0xDCFE, 0xD8DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BA8 */ 0xFFFD, 0xFFFD, 0xDAAC, 0xEAB0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3B8, 0xCAAA, 0xE1F9, 0xFFFD, -/* 0BB8 */ 0xEAB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2EC, 0xFFFD, 0xFFFD, -/* 0BC0 */ 0xFAEE, 0xEED5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9F4, 0xFFFD, -/* 0BC8 */ 0xFFFD, 0xD2EC, 0xFBFB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDF0, 0xFFFD, -/* 0BD0 */ 0xE0BD, 0xCEE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF8C6, 0xDFC5, 0xFFFD, 0xFFFD, 0xE5BE, -/* 0BE0 */ 0xEDAD, 0xFAEA, 0xFFFD, 0xFFFD, 0xCDEE, 0xEDA6, 0xFFFD, 0xEDAE, -/* 0BE8 */ 0xF0ED, 0xFFFD, 0xDDA1, 0xFFFD, 0xEDAF, 0xFCF8, 0xFFFD, 0xD8EB, -/* 0BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCCF9, 0xCDB5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BF8 */ 0xFFFD, 0xFAA9, 0xFFFD, 0xE1DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C00 */ 0xE2D5, 0xEDCF, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDA2, 0xFFFD, 0xFFFD, -/* 0C08 */ 0xF9CA, 0xFFFD, 0xEAE8, 0xFFFD, 0xE5ED, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3EB, 0xFFFD, 0xE9D4, -/* 0C18 */ 0xE1FA, 0xE4CC, 0xFFFD, 0xE1E4, 0xE8C7, 0xFFFD, 0xFFFD, 0xCEDB, -/* 0C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDCD5, 0xFFFD, 0xF7B5, 0xFCF3, 0xF0F3, -/* 0C28 */ 0xCEAF, 0xF1B5, 0xEFD2, 0xE8C8, 0xEBF1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C30 */ 0xFFFD, 0xFFFD, 0xCBD4, 0xE0BE, 0xE3F8, 0xEAE9, 0xFCB2, 0xFFFD, -/* 0C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0F4, 0xFFFD, 0xCFE0, 0xFFFD, -/* 0C40 */ 0xEEA5, 0xFFFD, 0xFFFD, 0xFAAA, 0xE6C3, 0xE1B2, 0xCAAB, 0xFFFD, -/* 0C48 */ 0xE3E4, 0xE9BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2D6, -/* 0C50 */ 0xF3F2, 0xFFFD, 0xEED6, 0xEAB2, 0xD0F6, 0xECD9, 0xDACB, 0xCFA8, -/* 0C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDA3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C60 */ 0xD8DB, 0xFFFD, 0xF9CE, 0xE9D5, 0xE3D1, 0xFFFD, 0xFFFD, 0xD2BC, -/* 0C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8AC, 0xF3CC, -/* 0C70 */ 0xFFFD, 0xCDFB, 0xF6D6, 0xFFFD, 0xE7F5, 0xE8EF, 0xE3F9, 0xD2BB, -/* 0C78 */ 0xF3F3, 0xE3FB, 0xFFFD, 0xDED0, 0xCEB0, 0xFFFD, 0xD6F7, 0xF1D9, -/* 0C80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5C1, 0xDCC4, 0xFFFD, -/* 0C88 */ 0xF5BB, 0xFFFD, 0xDED1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C90 */ 0xFFFD, 0xDCE6, 0xFFFD, 0xFFFD, 0xDED2, 0xFFFD, 0xFFFD, 0xEDE2, -/* 0C98 */ 0xEEF6, 0xEACF, 0xF0EE, 0xE3FC, 0xFFFD, 0xD3DF, 0xD3F4, 0xE1B3, -/* 0CA0 */ 0xFFFD, 0xE1B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4D3, 0xFFFD, -/* 0CA8 */ 0xFFFD, 0xDFC6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9D6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB8 */ 0xDBAB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC0 */ 0xFFFD, 0xF6A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC8 */ 0xE3B9, 0xEBC5, 0xF4A9, 0xCDB6, 0xD2F9, 0xFFFD, 0xDAAD, 0xD2E3, -/* 0CD0 */ 0xCFD1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBDC, 0xCCFA, 0xFFFD, -/* 0CD8 */ 0xCFDD, 0xFFFD, 0xFFFD, 0xE8A9, 0xFFFD, 0xE3BB, 0xE3BA, 0xFFFD, -/* 0CE0 */ 0xFFFD, 0xE0DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEF7, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDCB3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CF0 */ 0xD3F5, 0xFFFD, 0xD7A6, 0xFFFD, 0xF6B5, 0xD7DB, 0xFFFD, 0xFFFD, -/* 0CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1D5, 0xFFFD, 0xFFFD, 0xD4EA, -/* 0D00 */ 0xFFFD, 0xDFA3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D08 */ 0xFFFD, 0xFDDF, 0xD0F7, 0xEDD4, 0xCBAA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4DB, 0xFFFD, 0xE1FB, 0xCBA2, -/* 0D18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3E0, 0xFFFD, 0xE4BF, 0xFFFD, -/* 0D20 */ 0xFBC0, 0xFFFD, 0xDABE, 0xE4CD, 0xFFFD, 0xD6B9, 0xFFFD, 0xFFFD, -/* 0D28 */ 0xFFFD, 0xEFC0, 0xFFFD, 0xE1FC, 0xF6B9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDFC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE4B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D40 */ 0xFFFD, 0xFFFD, 0xDCE7, 0xDCE8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAD6, -/* 0D48 */ 0xFFFD, 0xD3F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1DA, 0xFFFD, -/* 0D50 */ 0xFAF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D58 */ 0xFFFD, 0xFFFD, 0xE2FD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D60 */ 0xD5CF, 0xD0F8, 0xFFFD, 0xFFFD, 0xCDDF, 0xFFFD, 0xFFFD, 0xF5CB, -/* 0D68 */ 0xFFFD, 0xE4F0, 0xCBAB, 0xFFFD, 0xD7C4, 0xE2FE, 0xFFFD, 0xDDDA, -/* 0D70 */ 0xDAAE, 0xCAEE, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5B9, 0xE3A1, 0xFFFD, -/* 0D78 */ 0xFFFD, 0xE8E3, 0xFFFD, 0xFFFD, 0xF3AB, 0xCFA9, 0xFFFD, 0xFFFD, -/* 0D80 */ 0xFFFD, 0xD3F7, 0xD4F1, 0xFFFD, 0xFFFD, 0xCEE4, 0xFFFD, 0xE8F2, -/* 0D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5F5, -/* 0D90 */ 0xE7AE, 0xFFFD, 0xD6BA, 0xFFFD, 0xDFEC, 0xE4C0, 0xE8E4, 0xFFFD, -/* 0D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD8B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4DC, -/* 0DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4B9, 0xF1B6, -/* 0DA8 */ 0xFFFD, 0xFFFD, 0xE2DE, 0xE1B5, 0xFFFD, 0xFFFD, 0xCDEF, 0xF1A7, -/* 0DB0 */ 0xCEE5, 0xCBDD, 0xFFFD, 0xFFFD, 0xD9E3, 0xFFFD, 0xFFFD, 0xF3AC, -/* 0DB8 */ 0xFFFD, 0xFFFD, 0xD0F9, 0xECAB, 0xDED3, 0xF7E9, 0xFFFD, 0xFFFD, -/* 0DC0 */ 0xF9F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1DE, 0xCBEE, -/* 0DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3BC, 0xF8D6, 0xFFFD, 0xFFFD, 0xDBEE, -/* 0DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDF1, 0xFFFD, 0xFFFD, -/* 0DD8 */ 0xFFFD, 0xFFFD, 0xF7B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4DE, -/* 0DE0 */ 0xFFFD, 0xFFFD, 0xF2ED, 0xFFFD, 0xDBD9, 0xFFFD, 0xF0A8, 0xFFFD, -/* 0DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1FD, 0xFFFD, -/* 0DF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDED4, 0xFFFD, 0xE0AC, 0xFFFD, -/* 0DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDE3, 0xFFFD, 0xFFFD, 0xD3E1, -/* 0E00 */ 0xFFFD, 0xDFC8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9B6, 0xFFFD, -/* 0E08 */ 0xFDAC, 0xEFD3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4C1, 0xF8EB, 0xFFFD, -/* 0E10 */ 0xDBAC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCC6, 0xFFFD, 0xFFFD, -/* 0E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8AD, 0xFFFD, -/* 0E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E28 */ 0xF6BA, 0xFFFD, 0xDBDF, 0xD3D3, 0xF8C7, 0xCACE, 0xF8C1, 0xD2B4, -/* 0E30 */ 0xFFFD, 0xFFFD, 0xDCB4, 0xFAB9, 0xCACF, 0xFFFD, 0xFCB3, 0xEAEA, -/* 0E38 */ 0xEAEB, 0xD0FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDE4, -/* 0E40 */ 0xFFFD, 0xFFFD, 0xDDE7, 0xFFFD, 0xFFFD, 0xDFC9, 0xFFFD, 0xFFFD, -/* 0E48 */ 0xFFFD, 0xFFFD, 0xDFED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E50 */ 0xEEBC, 0xFFFD, 0xEFC1, 0xFFFD, 0xFFFD, 0xCCD2, 0xFFFD, 0xDDA4, -/* 0E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDFCA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E60 */ 0xFFFD, 0xD3F8, 0xF1A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDB7, 0xFFFD, -/* 0E68 */ 0xEFD4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E70 */ 0xE4DD, 0xDFEE, 0xCBAC, 0xE9BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E78 */ 0xFFFD, 0xEAEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFCB, 0xFFFD, 0xFFFD, -/* 0E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF9BF, 0xD6AF, 0xD5C6, 0xFFFD, 0xFFFD, -/* 0E88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCFAA, 0xFFFD, 0xFFFD, 0xCEA9, 0xFFFD, -/* 0E90 */ 0xFFFD, 0xD6F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1B7, 0xEEF8, 0xFFFD, -/* 0E98 */ 0xFFFD, 0xFFFD, 0xD9D9, 0xF3DF, 0xFFFD, 0xF8C8, 0xCEC6, 0xFFFD, -/* 0EA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5E6, -/* 0EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4E6, 0xFFFD, -/* 0EB0 */ 0xFFFD, 0xE6C5, 0xEFD5, 0xFFFD, 0xFFFD, 0xCBEF, 0xFCDF, 0xFFFD, -/* 0EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCA7, 0xFFFD, 0xFFFD, 0xD6E7, -/* 0EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8C9, 0xFFFD, 0xFFFD, -/* 0EC8 */ 0xFFFD, 0xFFFD, 0xE3D2, 0xFFFD, 0xE3BD, 0xFFFD, 0xCFE1, 0xF0C0, -/* 0ED0 */ 0xECDA, 0xFFFD, 0xDDD7, 0xFBF0, 0xFFFD, 0xFFFD, 0xECAC, 0xFFFD, -/* 0ED8 */ 0xFFFD, 0xFFFD, 0xF0A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EE0 */ 0xFFFD, 0xFAD7, 0xFBC1, 0xFFFD, 0xD2C0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5B0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EF0 */ 0xEDE5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBAD, 0xFFFD, 0xF9B0, -/* 0EF8 */ 0xF7A5, 0xFFFD, 0xCBAE, 0xFFFD, 0xDAAF, 0xFFFD, 0xD8B6, 0xFFFD, -/* 0F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3A7, 0xFBB2, -/* 0F08 */ 0xFFFD, 0xFDC4, 0xFFFD, 0xECAD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F10 */ 0xFFFD, 0xFFFD, 0xFBA1, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5E9, 0xE9EE, -/* 0F18 */ 0xFFFD, 0xF3F4, 0xF8F3, 0xF0C1, 0xDEAF, 0xF8B0, 0xFFFD, 0xFFFD, -/* 0F20 */ 0xF3E0, 0xE7AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBAD, -/* 0F28 */ 0xFFFD, 0xE6B5, 0xFFFD, 0xFFFD, 0xF9A8, 0xFFFD, 0xFFFD, 0xDDD8, -/* 0F30 */ 0xE8D9, 0xEFD6, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3E2, 0xFFFD, 0xE2DF, -/* 0F38 */ 0xFFFD, 0xFFFD, 0xFCE0, 0xD7C8, 0xFDAD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F40 */ 0xDFEF, 0xCCD3, 0xD3F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4F0, -/* 0F48 */ 0xDBC7, 0xDED5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0F4, 0xFFFD, -/* 0F50 */ 0xD5D0, 0xE5D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F58 */ 0xFCC7, 0xDCD6, 0xE2E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAB0, 0xFFFD, -/* 0F60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3A3, 0xFFFD, 0xD3EC, -/* 0F68 */ 0xFFFD, 0xF4CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDC5, 0xFFFD, 0xFFFD, -/* 0F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3FD, 0xFFFD, 0xF9B1, 0xFFFD, 0xFFFD, -/* 0F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0FB, 0xECDB, 0xFFFD, 0xFFFD, -/* 0F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5BC, 0xF2A4, -/* 0F88 */ 0xD8CE, 0xD8CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F90 */ 0xF5F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF6E1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2B7, 0xFFFD, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBEC, 0xFFFD, 0xDDC8, -/* 0FB0 */ 0xE4E8, 0xFFFD, 0xFFFD, 0xD2C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8D7, -/* 0FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6BB, 0xDED6, 0xFFFD, -/* 0FC0 */ 0xFFFD, 0xF7BD, 0xECAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0E1, 0xFFFD, -/* 0FC8 */ 0xE0F5, 0xEAB3, 0xFFFD, 0xCED6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FD0 */ 0xCCA5, 0xECF6, 0xE2E1, 0xE3BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCC8, 0xFFFD, 0xFFFD, -/* 0FE0 */ 0xCDF0, 0xFFFD, 0xF9F6, 0xFFFD, 0xFFFD, 0xDFF0, 0xFFFD, 0xFFFD, -/* 0FE8 */ 0xFFFD, 0xE5BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEBF, 0xFFFD, 0xFFFD, -/* 0FF0 */ 0xFFFD, 0xFFFD, 0xFCE1, 0xEDB0, 0xFDD1, 0xF6BB, 0xFFFD, 0xFFFD, -/* 0FF8 */ 0xF9CF, 0xEBDA, 0xCAC1, 0xFFFD, 0xD2B8, 0xCDF1, 0xFFFD, 0xE3D3, -/* 1000 */ 0xFDE6, 0xE6ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3FA, 0xFFFD, 0xFFFD, -/* 1008 */ 0xF0AA, 0xF9D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1010 */ 0xFCE2, 0xFFFD, 0xF8A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E5, 0xEEF9, -/* 1018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE7F6, 0xEAED, 0xFFFD, 0xFFFD, 0xFCB4, -/* 1020 */ 0xF5C2, 0xFFFD, 0xFFFD, 0xD7DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0F5, 0xFFFD, 0xDDE8, 0xD3ED, -/* 1030 */ 0xF5FC, 0xFFFD, 0xDABF, 0xFFFD, 0xCCFB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1038 */ 0xD3FA, 0xF4A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1040 */ 0xFFFD, 0xEFD7, 0xFFFD, 0xD4C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBE3, 0xFFFD, 0xFFFD, -/* 1050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBED, 0xFFFD, -/* 1058 */ 0xE0AD, 0xFFFD, 0xFFFD, 0xEAEE, 0xFBB3, 0xE4C2, 0xF6E7, 0xD2DD, -/* 1060 */ 0xFFFD, 0xDFCC, 0xFFFD, 0xFFFD, 0xFCC9, 0xFFFD, 0xFFFD, 0xE5A9, -/* 1068 */ 0xE0F6, 0xF6B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1FE, -/* 1070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBF0, 0xFFFD, 0xEAEF, 0xEAF0, -/* 1078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDAC0, 0xF8B4, 0xEBF2, 0xFFFD, 0xFFFD, -/* 1080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE4C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1088 */ 0xE9D7, 0xE4F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAEF, 0xFFFD, 0xFFFD, -/* 1090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCED7, 0xFFFD, 0xFFFD, -/* 1098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCCA, 0xFFFD, -/* 10A0 */ 0xFFFD, 0xFFFD, 0xF3E1, 0xFFFD, 0xFFFD, 0xCBC4, 0xFFFD, 0xFFFD, -/* 10A8 */ 0xFFFD, 0xFFFD, 0xE3E5, 0xFFFD, 0xCBC5, 0xEAB4, 0xFFFD, 0xFFFD, -/* 10B0 */ 0xE9BD, 0xFFFD, 0xD7C9, 0xFFFD, 0xFFFD, 0xEBDB, 0xEDB1, 0xFFFD, -/* 10B8 */ 0xCCC3, 0xF7BE, 0xFCCB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10C0 */ 0xFFFD, 0xF8F4, 0xFFFD, 0xD9B7, 0xFFFD, 0xFFFD, 0xF3D3, 0xF3D4, -/* 10C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF7E4, 0xFFFD, 0xF7D1, 0xFFFD, 0xFFFD, -/* 10D0 */ 0xD8B7, 0xCEB1, 0xCAC2, 0xFFFD, 0xFFFD, 0xFBB4, 0xCBC6, 0xFFFD, -/* 10D8 */ 0xFFFD, 0xF0F6, 0xFFFD, 0xFFFD, 0xD5E7, 0xFFFD, 0xEAD0, 0xFFFD, -/* 10E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCD4, 0xCBAF, 0xFFFD, 0xFFFD, -/* 10E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF4AA, 0xE9AF, 0xFFFD, 0xFFFD, 0xF5C3, -/* 10F0 */ 0xE9D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10F8 */ 0xDDE9, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1F3, 0xFFFD, 0xD5FB, 0xDEBB, -/* 1100 */ 0xFFFD, 0xFFFD, 0xF4FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDF3, 0xFDF2, -/* 1108 */ 0xF7A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1110 */ 0xFFFD, 0xFFFD, 0xDDC9, 0xFFFD, 0xFFFD, 0xD4D3, 0xFFFD, 0xCCA8, -/* 1118 */ 0xFFFD, 0xDAC1, 0xCCD5, 0xFFFD, 0xD9E4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1120 */ 0xFACA, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5E3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1128 */ 0xD3BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAF0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1130 */ 0xFFFD, 0xD0C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAD0, 0xFAAB, 0xEBEB, -/* 1138 */ 0xE7F8, 0xD9E5, 0xF3A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4FB, 0xFCE3, -/* 1140 */ 0xFAD8, 0xFFFD, 0xF3D5, 0xFFFD, 0xCFAB, 0xFFFD, 0xFFFD, 0xEBF3, -/* 1148 */ 0xD5FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3D4, -/* 1150 */ 0xCDFC, 0xFFFD, 0xD9E6, 0xFFFD, 0xE2F9, 0xE2A1, 0xEBD4, 0xFFFD, -/* 1158 */ 0xE0F7, 0xE4B2, 0xCCFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBE4, 0xFFFD, -/* 1160 */ 0xFFFD, 0xFFFD, 0xF4AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0BD, -/* 1168 */ 0xFFFD, 0xCAF1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1170 */ 0xFFFD, 0xFFFD, 0xEFB8, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7C0, 0xFFFD, -/* 1178 */ 0xEEFA, 0xFDF4, 0xFFFD, 0xFFFD, 0xD3E3, 0xFFFD, 0xFBC2, 0xFFFD, -/* 1180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5E8, 0xDBAE, -/* 1188 */ 0xE1B6, 0xF8B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0BF, -/* 1190 */ 0xFBC3, 0xDDEA, 0xFFFD, 0xE2A2, 0xFFFD, 0xEEA6, 0xFFFD, 0xFFFD, -/* 1198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF6E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11A0 */ 0xF6F5, 0xDDCA, 0xFFFD, 0xFFFD, 0xD0E2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11A8 */ 0xFFFD, 0xDDA6, 0xFFFD, 0xFFFD, 0xDDEB, 0xFFFD, 0xFFFD, 0xE4F9, -/* 11B0 */ 0xFFFD, 0xFFFD, 0xE3AF, 0xD0FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4FC, -/* 11B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCBC, 0xF7EA, 0xFFFD, 0xFFFD, -/* 11C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5E4, 0xDFF1, 0xFFFD, 0xFFFD, -/* 11C8 */ 0xF7E1, 0xFFFD, 0xF9F7, 0xEFB9, 0xFFFD, 0xFFFD, 0xF8D8, 0xF9A9, -/* 11D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8D9, 0xFFFD, 0xFFFD, -/* 11D8 */ 0xFFFD, 0xEEBD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8C6, 0xFFFD, 0xFFFD, -/* 11E0 */ 0xE4E3, 0xF5CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDD9, 0xFFFD, -/* 11E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD9E7, 0xD2B9, 0xD5C3, 0xFFFD, 0xFFFD, -/* 11F0 */ 0xDAE5, 0xDAD0, 0xFFFD, 0xD1D9, 0xCED8, 0xFFFD, 0xCBDE, 0xF4AC, -/* 11F8 */ 0xDAFB, 0xFFFD, 0xF6E9, 0xE8F3, 0xCFAC, 0xF0F0, 0xFFFD, 0xF4FD, -/* 1200 */ 0xDBC8, 0xCEC0, 0xE3D4, 0xD1CF, 0xF1F5, 0xFFFD, 0xCDF2, 0xFFFD, -/* 1208 */ 0xCFEB, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDB8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3A6, 0xD1DA, 0xFFFD, 0xF2A5, 0xFFFD, -/* 1218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2A6, 0xFFFD, 0xE4CE, 0xFFFD, -/* 1220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3FB, 0xF1A9, -/* 1228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF2C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFD8, 0xE6C9, -/* 1238 */ 0xFFFD, 0xD8B8, 0xFAF3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3B5, 0xFFFD, 0xFFFD, -/* 1248 */ 0xF8A4, 0xFFFD, 0xFFFD, 0xD1F3, 0xE6C8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1250 */ 0xFFFD, 0xF8DA, 0xDCE9, 0xDED7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1258 */ 0xFFFD, 0xCBDF, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFEC, 0xFFFD, 0xFFFD, -/* 1260 */ 0xFFFD, 0xFFFD, 0xF4DF, 0xFFFD, 0xFFFD, 0xD1F4, 0xD2BA, 0xFFFD, -/* 1268 */ 0xFFFD, 0xFFFD, 0xDFF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1B7, 0xFFFD, -/* 1270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2A3, 0xD3FC, 0xFFFD, 0xFFFD, 0xEDE6, -/* 1278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBC9, 0xFFFD, 0xFFFD, -/* 1280 */ 0xFFFD, 0xE4FA, 0xFFFD, 0xCFDE, 0xFFFD, 0xFFFD, 0xCED0, 0xFFFD, -/* 1288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD5D3, 0xF3F5, 0xF7AE, 0xFFFD, 0xFFFD, -/* 1290 */ 0xEFC8, 0xFFFD, 0xCDF3, 0xF5CF, 0xE5F3, 0xF0C2, 0xCAD1, 0xFFFD, -/* 1298 */ 0xFFFD, 0xFFFD, 0xEAF1, 0xFFFD, 0xD0A6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9DA, 0xF0AB, 0xFFFD, -/* 12A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBE7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12B0 */ 0xE5C0, 0xFCB5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4C4, -/* 12B8 */ 0xCCA9, 0xFDC6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAB5, -/* 12C0 */ 0xFFFD, 0xE5AA, 0xDFBA, 0xE1DF, 0xFFFD, 0xDAD1, 0xFFFD, 0xFFFD, -/* 12C8 */ 0xFFFD, 0xFFFD, 0xE1B8, 0xFFFD, 0xE8F4, 0xD3FD, 0xFFFD, 0xFFFD, -/* 12D0 */ 0xFFFD, 0xFFFD, 0xE2A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12D8 */ 0xF2CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12E0 */ 0xFFFD, 0xFFFD, 0xDAE6, 0xF7B3, 0xFDCD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12E8 */ 0xF3B6, 0xEED7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12F0 */ 0xFFFD, 0xF5C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12F8 */ 0xFFFD, 0xFFFD, 0xD8A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1300 */ 0xF2A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1308 */ 0xFFFD, 0xD9B8, 0xD9B9, 0xEFC9, 0xD6CE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7CB, 0xDFAE, 0xE8F5, -/* 1318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2B5, 0xFFFD, -/* 1320 */ 0xFFFD, 0xFFFD, 0xD3D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1328 */ 0xF4CC, 0xDAFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9E8, -/* 1330 */ 0xFFFD, 0xF7EB, 0xF5C9, 0xFFFD, 0xF3BC, 0xFFFD, 0xDAD2, 0xFFFD, -/* 1338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3B5, -/* 1340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8B6, 0xFFFD, 0xFFFD, -/* 1348 */ 0xD6CF, 0xF4BA, 0xFFFD, 0xF7C9, 0xFFFD, 0xFFFD, 0xCCAA, 0xFFFD, -/* 1350 */ 0xFFFD, 0xF0C3, 0xCCD6, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0D3, 0xFFFD, -/* 1358 */ 0xD3BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBFB, 0xFFFD, 0xCBE0, 0xFFFD, -/* 1360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3E4, 0xF6F7, 0xFFFD, -/* 1368 */ 0xFFFD, 0xD5BA, 0xF3CD, 0xCBE1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1370 */ 0xEBF4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4AD, 0xFFFD, -/* 1378 */ 0xFCAA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7EC, 0xFFFD, -/* 1380 */ 0xFFFD, 0xFFFD, 0xE8F6, 0xFFFD, 0xDAE7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1388 */ 0xF7CC, 0xE5C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0EE, 0xFFFD, -/* 1390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5FD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCEE6, 0xFCAB, 0xD5BB, 0xFFFD, 0xFFFD, -/* 13A0 */ 0xF2A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2A5, -/* 13A8 */ 0xCDB9, 0xEAF2, 0xCBC7, 0xFFFD, 0xCDF4, 0xFFFD, 0xFFFD, 0xDBAF, -/* 13B0 */ 0xEFD9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDBA, 0xFFFD, -/* 13B8 */ 0xFFFD, 0xFCF9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFF3, 0xCEE7, -/* 13C0 */ 0xDAC2, 0xFFFD, 0xCFAD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7F9, -/* 13C8 */ 0xF8A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3E2, -/* 13D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCAF2, 0xDFA4, 0xFFFD, 0xFFFD, 0xD4C4, -/* 13D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCD7, 0xE5C2, 0xFFFD, -/* 13E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCDBB, 0xFFFD, 0xEFDA, 0xEED8, 0xFFFD, -/* 13E8 */ 0xDDA7, 0xE2A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0C0, -/* 13F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD6B0, 0xF8CA, 0xFFFD, 0xFCFA, 0xFFFD, -/* 13F8 */ 0xD9FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEB0, 0xFFFD, 0xFFFD, -/* 1400 */ 0xFFFD, 0xDDEC, 0xDAE8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1408 */ 0xD4E0, 0xFFFD, 0xD6F9, 0xFFFD, 0xCDD7, 0xDED8, 0xFFFD, 0xFFFD, -/* 1410 */ 0xF2F8, 0xFFFD, 0xE4D6, 0xFFFD, 0xFFFD, 0xD0C5, 0xF4AE, 0xFFFD, -/* 1418 */ 0xDDA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDC5, 0xF3D6, 0xFFFD, 0xFFFD, -/* 1420 */ 0xDED9, 0xE3E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1428 */ 0xD3A8, 0xFFFD, 0xDBB0, 0xFFFD, 0xFFFD, 0xE5DA, 0xE3BF, 0xFFFD, -/* 1430 */ 0xFFFD, 0xFFFD, 0xDBB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5E9, 0xFFFD, -/* 1438 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0C1, 0xEFDB, 0xFFFD, 0xFFFD, -/* 1440 */ 0xF0E9, 0xFFFD, 0xFFFD, 0xD7B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1448 */ 0xD0FD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1450 */ 0xFFFD, 0xD9E9, 0xFFFD, 0xFFFD, 0xD0FE, 0xFFFD, 0xECED, 0xD3A9, -/* 1458 */ 0xFFFD, 0xF2A9, 0xF0C4, 0xFFFD, 0xFFFD, 0xE2E2, 0xE9EF, 0xFFFD, -/* 1460 */ 0xFFFD, 0xFFFD, 0xF9D1, 0xFFFD, 0xFFFD, 0xE9D9, 0xFFFD, 0xFFFD, -/* 1468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8DA, 0xDAC3, 0xDAC4, 0xD4C5, 0xFFFD, -/* 1470 */ 0xE7FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDE0, -/* 1478 */ 0xE3B0, 0xFFFD, 0xDBB2, 0xFBC4, 0xFFFD, 0xF3E3, 0xFFFD, 0xD9A5, -/* 1480 */ 0xFBE7, 0xDDCB, 0xD0D4, 0xFFFD, 0xE6B6, 0xE0AE, 0xFDDA, 0xFFFD, -/* 1488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCB5, -/* 1490 */ 0xE0F8, 0xE7B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5F0, 0xFFFD, -/* 1498 */ 0xD8DC, 0xEDC6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1B9, 0xFFFD, -/* 14A0 */ 0xE3C0, 0xF9C0, 0xE9F0, 0xFFFD, 0xFFFD, 0xD9DB, 0xFFFD, 0xF3E4, -/* 14A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDCB6, 0xE4E9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14B0 */ 0xFFFD, 0xFFFD, 0xF0C5, 0xE3C1, 0xFCCC, 0xFCCD, 0xFFFD, 0xFFFD, -/* 14B8 */ 0xFFFD, 0xFFFD, 0xF2CB, 0xFFFD, 0xF2CC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14C0 */ 0xE4CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14C8 */ 0xFFFD, 0xFFFD, 0xF1DB, 0xFFFD, 0xFAD9, 0xFFFD, 0xF1B8, 0xFDF5, -/* 14D0 */ 0xE0F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7FB, 0xFCB7, 0xFCE4, -/* 14D8 */ 0xFBC5, 0xE3E7, 0xD8B9, 0xFFFD, 0xF6F8, 0xFFFD, 0xFFFD, 0xDCC5, -/* 14E0 */ 0xCCD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0AF, 0xF4E7, 0xFFFD, 0xEFDC, -/* 14E8 */ 0xCFFC, 0xEFDD, 0xFFFD, 0xF2AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDBE, 0xFFFD, 0xFFFD, -/* 14F8 */ 0xCAAC, 0xFDBB, 0xFDC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7B2, -/* 1500 */ 0xFFFD, 0xEAD1, 0xDFF4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1EC, -/* 1508 */ 0xE4DE, 0xE5C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9A6, 0xFFFD, -/* 1510 */ 0xFFFD, 0xCDBC, 0xFFFD, 0xF3E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDD5, 0xFFFD, 0xFFFD, 0xD9BA, -/* 1520 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEDE7, 0xFBB5, 0xF8EC, 0xFFFD, 0xFFFD, -/* 1528 */ 0xFFFD, 0xFFFD, 0xE0E7, 0xFFFD, 0xCCD9, 0xFFFD, 0xFFFD, 0xD4C6, -/* 1530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7A5, 0xFFFD, 0xD5F5, -/* 1538 */ 0xD3BE, 0xFFFD, 0xFCFB, 0xE4F2, 0xFFFD, 0xFFFD, 0xDFF5, 0xFFFD, -/* 1540 */ 0xFFFD, 0xE8F8, 0xF8ED, 0xFFFD, 0xFFFD, 0xCEC7, 0xFFFD, 0xFFFD, -/* 1548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFDF6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8D8, 0xFFFD, 0xCDD8, -/* 1558 */ 0xE7D6, 0xCCDA, 0xFFFD, 0xFFFD, 0xCAE3, 0xDFF6, 0xF0C7, 0xF0C6, -/* 1560 */ 0xFFFD, 0xD8BA, 0xFFFD, 0xF1F4, 0xF4F0, 0xF5CC, 0xFFFD, 0xFFFD, -/* 1568 */ 0xFCE5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAC5, 0xEAF3, 0xFFFD, -/* 1570 */ 0xDDDB, 0xFFFD, 0xDCD7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1578 */ 0xFFFD, 0xDEFD, 0xF2F9, 0xFFFD, 0xD5C7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1580 */ 0xD8D0, 0xFFFD, 0xF0C8, 0xD1A1, 0xD1A2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD9D4, 0xD6E8, 0xD9CA, 0xFFFD, 0xDAB1, -/* 1590 */ 0xD8C7, 0xDCE2, 0xF3CE, 0xF5F4, 0xFFFD, 0xFFFD, 0xF1B9, 0xFFFD, -/* 1598 */ 0xFFFD, 0xDAD3, 0xFFFD, 0xF6EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFF5, -/* 15A0 */ 0xFFFD, 0xFFFD, 0xFDAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCAD2, 0xFFFD, 0xFFFD, 0xDFB4, 0xFFFD, -/* 15B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD7DD, 0xFABA, 0xEEA7, 0xF5BD, 0xFFFD, -/* 15B8 */ 0xF8F5, 0xFFFD, 0xFFFD, 0xEDE8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15C0 */ 0xFFFD, 0xD4E1, 0xFFFD, 0xD1A3, 0xE1D6, 0xF9F8, 0xFFFD, 0xDBCA, -/* 15C8 */ 0xCBF9, 0xD4D4, 0xFFFD, 0xD9DC, 0xFFFD, 0xEEBE, 0xFFFD, 0xF7ED, -/* 15D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD2EE, 0xFFFD, 0xFFFD, 0xE1E6, 0xF7F9, -/* 15D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDED, -/* 15E0 */ 0xFFFD, 0xE8DB, 0xFFFD, 0xDBB3, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1F7, -/* 15E8 */ 0xE0B0, 0xFFFD, 0xFFFD, 0xD4E2, 0xFFFD, 0xF6D7, 0xFFFD, 0xD7F9, -/* 15F0 */ 0xFFFD, 0xFFFD, 0xD8DD, 0xFFFD, 0xCDFD, 0xF2AB, 0xCDBD, 0xF8C2, -/* 15F8 */ 0xFFFD, 0xFFFD, 0xF2AC, 0xFFFD, 0xFFFD, 0xCAAD, 0xCAAE, 0xCFAE, -/* 1600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3C2, 0xFFFD, 0xFFFD, -/* 1608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDCB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBDA, 0xD9BB, -/* 1618 */ 0xCAF3, 0xF6D3, 0xE6F8, 0xEAF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1620 */ 0xFFFD, 0xEAF6, 0xFFFD, 0xFFFD, 0xF6F9, 0xCFAF, 0xFFFD, 0xFFFD, -/* 1628 */ 0xCAD3, 0xFFFD, 0xFFFD, 0xCAAF, 0xD2B0, 0xF1BA, 0xFFFD, 0xD7B3, -/* 1630 */ 0xE3C3, 0xF3FD, 0xDEDA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEDB, -/* 1638 */ 0xFFFD, 0xFFFD, 0xEFDE, 0xE2E3, 0xEEFB, 0xFFFD, 0xFFFD, 0xDFF7, -/* 1640 */ 0xD7CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1648 */ 0xFFFD, 0xFFFD, 0xCEE8, 0xDBDB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF1BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1658 */ 0xE9F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1660 */ 0xFFFD, 0xFAB7, 0xD0C6, 0xFFFD, 0xFFFD, 0xCCAB, 0xEEA8, 0xFFFD, -/* 1668 */ 0xFFFD, 0xCBFA, 0xF9F9, 0xCCFD, 0xD3FE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1670 */ 0xFFFD, 0xE4D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2EE, -/* 1678 */ 0xFFFD, 0xD4D5, 0xDFCD, 0xFFFD, 0xFCB8, 0xD1D0, 0xF2CD, 0xFFFD, -/* 1680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7D2, -/* 1688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1690 */ 0xCAD4, 0xFFFD, 0xD5D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8DE, 0xFFFD, -/* 1698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16A0 */ 0xCDD9, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEA9, 0xF6BC, 0xFFFD, 0xFFFD, -/* 16A8 */ 0xCCDB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0C9, 0xFFFD, -/* 16B0 */ 0xFCFC, 0xFFFD, 0xE8C9, 0xF4FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16B8 */ 0xE7FC, 0xD7DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEDC, 0xFFFD, -/* 16C0 */ 0xF0AC, 0xCCFE, 0xCDE1, 0xFFFD, 0xE1BA, 0xFFFD, 0xDBEF, 0xDAB2, -/* 16C8 */ 0xD1A5, 0xDCB8, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8F6, 0xFFFD, 0xD1A4, -/* 16D0 */ 0xFFFD, 0xCDE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCEA, 0xFFFD, -/* 16D8 */ 0xFFFD, 0xF0F7, 0xFFFD, 0xF0CA, 0xD0BE, 0xFFFD, 0xDDDC, 0xFFFD, -/* 16E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD4D6, 0xD3D6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEDD0, 0xCDA1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16F0 */ 0xFFFD, 0xFFFD, 0xDFB5, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFF8, 0xFFFD, -/* 16F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4A1, 0xCEB2, 0xFFFD, -/* 1700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8CA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1708 */ 0xFFFD, 0xEBF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1710 */ 0xFFFD, 0xE3D5, 0xF5D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5A1, 0xD9A7, -/* 1718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1720 */ 0xE5AB, 0xE6CB, 0xFFFD, 0xF5F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5C5, 0xFFFD, -/* 1730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9A3, -/* 1738 */ 0xE0DB, 0xF6EB, 0xFFFD, 0xCBF1, 0xFFFD, 0xD9EA, 0xF5A2, 0xFFFD, -/* 1740 */ 0xFFFD, 0xFFFD, 0xD7D1, 0xFFFD, 0xD1F8, 0xEAF8, 0xEAF9, 0xDAB3, -/* 1748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFDF, 0xFFFD, 0xFFFD, 0xF1EF, -/* 1750 */ 0xFFFD, 0xE5F6, 0xEEBF, 0xE2E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1758 */ 0xFFFD, 0xD0BF, 0xFFFD, 0xFAAC, 0xF5D1, 0xE7B3, 0xE9BE, 0xFFFD, -/* 1760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2CE, 0xDBB4, 0xFFFD, 0xFFFD, -/* 1768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCCE, 0xFFFD, -/* 1770 */ 0xDDEE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7B4, -/* 1778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7B4, 0xFFFD, 0xFFFD, -/* 1780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7B4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1788 */ 0xFFFD, 0xFFFD, 0xCDBE, 0xFFFD, 0xDAE9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFB0, 0xF7D9, 0xF3E6, 0xFFFD, -/* 1798 */ 0xFFFD, 0xCED9, 0xCEAA, 0xFFFD, 0xCBC8, 0xD0A7, 0xFFFD, 0xF0CB, -/* 17A0 */ 0xFFFD, 0xD0C7, 0xFFFD, 0xFFFD, 0xE4C5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBE0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD5DA, 0xFFFD, 0xD7A7, 0xFFFD, 0xFFFD, -/* 17B8 */ 0xFFFD, 0xEEC0, 0xFFFD, 0xF8F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17C0 */ 0xF5D2, 0xEDE9, 0xFFFD, 0xD9BC, 0xFFFD, 0xE5C6, 0xF5A3, 0xFFFD, -/* 17C8 */ 0xFFFD, 0xDAD4, 0xE2A7, 0xFBFC, 0xFFFD, 0xFFFD, 0xF1DC, 0xFFFD, -/* 17D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAF4, 0xFFFD, 0xFFFD, -/* 17D8 */ 0xFFFD, 0xE8FA, 0xFFFD, 0xFFFD, 0xCEE9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9F8, 0xE2E5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17E8 */ 0xFFFD, 0xD0B9, 0xD4F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F0 */ 0xD1A6, 0xFFFD, 0xDFCE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCF4, 0xD3AA, 0xFFFD, 0xFFFD, -/* 1800 */ 0xFFFD, 0xCCAC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFE0, 0xFFFD, -/* 1808 */ 0xFFFD, 0xFFFD, 0xE5E5, 0xD0D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBFC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1818 */ 0xFFFD, 0xFCE6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBFE, -/* 1820 */ 0xEDEA, 0xDEB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1828 */ 0xFFFD, 0xF9E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1830 */ 0xD4A2, 0xCFF6, 0xD6D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1838 */ 0xFFFD, 0xD5EA, 0xF1EE, 0xFACB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1840 */ 0xE5A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1848 */ 0xFFFD, 0xD5B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFED, -/* 1850 */ 0xFFFD, 0xEDEB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5B2, -/* 1858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD5BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDE2, 0xF3AD, 0xFFFD, -/* 1868 */ 0xFDDB, 0xE9B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1870 */ 0xFFFD, 0xD1A7, 0xFFFD, 0xFFFD, 0xFDE3, 0xCEB3, 0xFFFD, 0xFFFD, -/* 1878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDE4, 0xFACE, 0xFFFD, -/* 1880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCAB0, 0xFFFD, 0xF7A7, 0xFFFD, 0xCFB1, -/* 1888 */ 0xE6A2, 0xFFFD, 0xFCB6, 0xF2AD, 0xEFE1, 0xF3AE, 0xDCC6, 0xD9EB, -/* 1890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE1A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18A0 */ 0xD5F6, 0xCFFD, 0xFFFD, 0xFFFD, 0xDEDD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18A8 */ 0xD9D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4EA, 0xF2CF, 0xFFFD, 0xF7BF, -/* 18B0 */ 0xFFFD, 0xFFFD, 0xE2E6, 0xE2A8, 0xE3D6, 0xFFFD, 0xEDD1, 0xFFFD, -/* 18B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9F9, 0xD6B1, 0xDEB2, 0xFFFD, -/* 18C0 */ 0xFFFD, 0xE0E8, 0xFFFD, 0xFFFD, 0xD3AB, 0xFFFD, 0xEBDC, 0xFFFD, -/* 18C8 */ 0xFFFD, 0xDFAF, 0xFFFD, 0xCAC3, 0xFFFD, 0xFFFD, 0xEEFC, 0xFFFD, -/* 18D0 */ 0xFDC3, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBF6, 0xCFB2, 0xFFFD, 0xFFFD, -/* 18D8 */ 0xFFFD, 0xFFFD, 0xD9EC, 0xFFFD, 0xD9BD, 0xFFFD, 0xD8DF, 0xFFFD, -/* 18E0 */ 0xFFFD, 0xD4B8, 0xEBBE, 0xDDEF, 0xFFFD, 0xDDF0, 0xDDF1, 0xDDF2, -/* 18E8 */ 0xFFFD, 0xFFFD, 0xD9BE, 0xFBC6, 0xCFB3, 0xEEFD, 0xFFFD, 0xFFFD, -/* 18F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4AB, 0xFFFD, 0xDAC5, 0xFFFD, -/* 18F8 */ 0xD8EC, 0xE2A9, 0xFFFD, 0xFFFD, 0xDEBC, 0xE7B5, 0xFFFD, 0xFFFD, -/* 1900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDBF0, 0xFFFD, 0xEFE2, 0xF1F0, 0xCFB4, -/* 1908 */ 0xDBF1, 0xFFFD, 0xE0B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFA5, -/* 1910 */ 0xFFFD, 0xF9D2, 0xFFFD, 0xFFFD, 0xE7FD, 0xFFFD, 0xFFFD, 0xE6A3, -/* 1918 */ 0xFBF1, 0xCBB0, 0xF2AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1920 */ 0xFFFD, 0xFFFD, 0xCDE7, 0xFFFD, 0xE8DC, 0xFFFD, 0xFFFD, 0xE7D7, -/* 1928 */ 0xFFFD, 0xFFFD, 0xF7C0, 0xFFFD, 0xD0E3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1930 */ 0xDAA1, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCBD, 0xFFFD, 0xFFFD, 0xD1A9, -/* 1938 */ 0xDDCC, 0xFFFD, 0xFFFD, 0xE3FE, 0xD1AA, 0xE8AA, 0xFFFD, 0xEAB6, -/* 1940 */ 0xF9FA, 0xE6CC, 0xF6D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4C7, 0xFFFD, -/* 1948 */ 0xFFFD, 0xFFFD, 0xD9CB, 0xFFFD, 0xD9D2, 0xD3CB, 0xD8F7, 0xDAA9, -/* 1950 */ 0xF5F8, 0xFFFD, 0xFFFD, 0xDEDE, 0xF2AF, 0xF8A9, 0xD8C8, 0xFFFD, -/* 1958 */ 0xFFFD, 0xEEC1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9C1, 0xFFFD, -/* 1960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDDF3, 0xEAFA, 0xFFFD, 0xF6BD, 0xE1BB, -/* 1968 */ 0xCDBF, 0xF4D4, 0xE6CD, 0xFFFD, 0xFCCF, 0xFBA2, 0xFFFD, 0xE0DC, -/* 1970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4BB, 0xDAD5, 0xFFFD, 0xF9B2, -/* 1978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBF2, 0xFFFD, -/* 1980 */ 0xDBF6, 0xFFFD, 0xDEDF, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBF2, 0xFFFD, -/* 1988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8DC, 0xF7EE, 0xEBE8, 0xFFFD, -/* 1990 */ 0xD2FA, 0xFFFD, 0xFFFD, 0xF1BC, 0xFFFD, 0xFFFD, 0xFADA, 0xFFFD, -/* 1998 */ 0xFFFD, 0xDAEA, 0xDAC6, 0xF7C1, 0xFFFD, 0xFFFD, 0xE7B6, 0xE5C7, -/* 19A0 */ 0xD6AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCC7, 0xFFFD, 0xFFFD, -/* 19A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE1A9, 0xFFFD, 0xE2AA, 0xFFFD, 0xD5A6, -/* 19B0 */ 0xFFFD, 0xFFFD, 0xD4D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19B8 */ 0xFFFD, 0xF2D0, 0xFFFD, 0xEAFB, 0xFFFD, 0xE0DD, 0xFBF3, 0xFFFD, -/* 19C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1BD, 0xFFFD, -/* 19C8 */ 0xFFFD, 0xE2E7, 0xFDD7, 0xFFFD, 0xCEC8, 0xEAB7, 0xFFFD, 0xFCC0, -/* 19D0 */ 0xFFFD, 0xFDE7, 0xF7EF, 0xFFFD, 0xFFFD, 0xD7B5, 0xEFBA, 0xF1DD, -/* 19D8 */ 0xFFFD, 0xDEB3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19E0 */ 0xE8CB, 0xFFFD, 0xFFFD, 0xF8DD, 0xFFFD, 0xFFFD, 0xFBC7, 0xD5C8, -/* 19E8 */ 0xFFFD, 0xD7DF, 0xFFFD, 0xDDA9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19F0 */ 0xFFFD, 0xE9B1, 0xFFFD, 0xFFFD, 0xFAAD, 0xF6D9, 0xFAF4, 0xFFFD, -/* 19F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8AA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A00 */ 0xFFFD, 0xFFFD, 0xE6EE, 0xFFFD, 0xCCDC, 0xE1BC, 0xE0EF, 0xFFFD, -/* 1A08 */ 0xFFFD, 0xE9BF, 0xFCFD, 0xE6CE, 0xFFFD, 0xFFFD, 0xE1D7, 0xFFFD, -/* 1A10 */ 0xE6CF, 0xFFFD, 0xF4F1, 0xE4F3, 0xFFFD, 0xFFFD, 0xE4FB, 0xFFFD, -/* 1A18 */ 0xFFFD, 0xF9E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFE3, 0xFFFD, 0xFFFD, 0xCFEE, -/* 1A28 */ 0xF6BE, 0xE0B2, 0xFCFE, 0xD1AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7FA, -/* 1A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFBC8, 0xFFFD, 0xE2D7, 0xFFFD, 0xFFFD, -/* 1A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4A3, 0xF0F8, 0xD7A8, 0xFFFD, -/* 1A40 */ 0xFFFD, 0xFFFD, 0xE1E7, 0xFFFD, 0xFFFD, 0xD3BF, 0xFFFD, 0xFFFD, -/* 1A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFE4, 0xFFFD, 0xD7C5, 0xEBE2, -/* 1A50 */ 0xFFFD, 0xFFFD, 0xFCE7, 0xFFFD, 0xFFFD, 0xE4A2, 0xFFFD, 0xE2E8, -/* 1A58 */ 0xFFFD, 0xE6D0, 0xFFFD, 0xFBE8, 0xF4E8, 0xE5F4, 0xF4BC, 0xF4D5, -/* 1A60 */ 0xDFB6, 0xFFFD, 0xFCB9, 0xEEC2, 0xCAF5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A68 */ 0xEFE5, 0xCBE2, 0xD4A4, 0xFFFD, 0xDEE0, 0xDAFD, 0xE4C6, 0xE8BE, -/* 1A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0DE, 0xF6B4, 0xEAD2, 0xFFFD, -/* 1A78 */ 0xF9FB, 0xFFFD, 0xFFFD, 0xE0C2, 0xFFFD, 0xCAE4, 0xFFFD, 0xE7B7, -/* 1A80 */ 0xFFFD, 0xEAFD, 0xFFFD, 0xD9DD, 0xFFFD, 0xDAB4, 0xEEAA, 0xFBE9, -/* 1A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBCB, 0xDAB5, 0xFFFD, 0xFFFD, -/* 1A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF1BE, 0xFFFD, 0xFFFD, 0xD3AC, 0xFFFD, -/* 1A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBC9, -/* 1AA0 */ 0xFFFD, 0xDFCF, 0xFFFD, 0xFFFD, 0xD3C0, 0xE3D7, 0xFFFD, 0xEFE6, -/* 1AA8 */ 0xFCD0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AB0 */ 0xE9C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5D3, 0xFFFD, 0xFFFD, 0xECDC, -/* 1AB8 */ 0xF7B7, 0xFFFD, 0xFFFD, 0xEAB8, 0xD1F9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDCC8, 0xEAB9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC8 */ 0xFFFD, 0xFFFD, 0xF1DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AD0 */ 0xD7B6, 0xCFB5, 0xFFFD, 0xD9A8, 0xFFFD, 0xFFFD, 0xECEE, 0xFFFD, -/* 1AD8 */ 0xFFFD, 0xDDAA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDA2, 0xE8AE, -/* 1AE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE1BD, 0xFFFD, 0xF2D1, 0xFFFD, 0xFFFD, -/* 1AE8 */ 0xFFFD, 0xFFFD, 0xE9C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2FC, 0xFFFD, -/* 1AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBB5, 0xFFFD, -/* 1AF8 */ 0xF3E7, 0xD8FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCD1, 0xFFFD, 0xEDB2, -/* 1B00 */ 0xF4AF, 0xFFFD, 0xFBA3, 0xFFFD, 0xFFFD, 0xFCC1, 0xFFFD, 0xEEAB, -/* 1B08 */ 0xD4A5, 0xF4F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEED9, 0xFFFD, -/* 1B10 */ 0xFFFD, 0xFFFD, 0xFBCA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B18 */ 0xCDE3, 0xD8BB, 0xFFFD, 0xE5DB, 0xF8F7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B20 */ 0xF6D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B28 */ 0xFFFD, 0xD7A9, 0xFFFD, 0xCBC9, 0xFFFD, 0xFFFD, 0xE6D1, 0xF0CC, -/* 1B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B38 */ 0xFFFD, 0xFFFD, 0xD8AE, 0xFFFD, 0xF9D3, 0xD5FE, 0xFFFD, 0xFFFD, -/* 1B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8BC, 0xF2B0, 0xFFFD, -/* 1B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2AB, 0xF3E8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B50 */ 0xFFFD, 0xFFFD, 0xEFC2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B58 */ 0xFFFD, 0xEDEC, 0xFFFD, 0xE7B8, 0xDAFE, 0xFFFD, 0xFFFD, 0xCCBE, -/* 1B60 */ 0xFFFD, 0xFFFD, 0xF2FC, 0xDAEB, 0xFFFD, 0xE2D8, 0xEDD6, 0xFFFD, -/* 1B68 */ 0xFFFD, 0xD6D1, 0xE0B3, 0xFFFD, 0xFFFD, 0xFCD2, 0xFFFD, 0xEBC8, -/* 1B70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B78 */ 0xD3C1, 0xF0CD, 0xFFFD, 0xCFF7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDD2, 0xFFFD, 0xD4D8, -/* 1B88 */ 0xDCC9, 0xD7F1, 0xFFFD, 0xFFFD, 0xDFBB, 0xFFFD, 0xFFFD, 0xF3A5, -/* 1B90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF4CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B98 */ 0xF1BF, 0xF8B1, 0xFFFD, 0xE9FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBCB, -/* 1BA0 */ 0xFFFD, 0xFFFD, 0xCAD5, 0xF9D4, 0xF7CA, 0xFFFD, 0xFFFD, 0xD6C8, -/* 1BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCE8, 0xF3BD, -/* 1BB0 */ 0xFFFD, 0xEEFE, 0xFFFD, 0xE7FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BB8 */ 0xFFFD, 0xD3C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3B6, 0xFFFD, -/* 1BC0 */ 0xCCAD, 0xF6FA, 0xD6B2, 0xD2D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BC8 */ 0xFFFD, 0xFFFD, 0xE7D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3A5, 0xFFFD, 0xFFFD, -/* 1BD8 */ 0xFFFD, 0xFFFD, 0xE7B9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0AD, -/* 1BE0 */ 0xFBCC, 0xEBA1, 0xFFFD, 0xFFFD, 0xD4A6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BE8 */ 0xFFFD, 0xFBCD, 0xFFFD, 0xD5BD, 0xF1DF, 0xFFFD, 0xFFFD, 0xF6FB, -/* 1BF0 */ 0xFFFD, 0xDEB4, 0xD5EB, 0xFFFD, 0xFFFD, 0xE5C8, 0xFFFD, 0xFFFD, -/* 1BF8 */ 0xFFFD, 0xFBA4, 0xD4B9, 0xFFFD, 0xFFFD, 0xDEE1, 0xFFFD, 0xE4A3, -/* 1C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD7B7, 0xFFFD, 0xF8EE, 0xFFFD, 0xFFFD, -/* 1C08 */ 0xFFFD, 0xDEB5, 0xFFFD, 0xFFFD, 0xD6D2, 0xFFFD, 0xF9D5, 0xE7BA, -/* 1C10 */ 0xEBD5, 0xD5F7, 0xEFE7, 0xE1BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAAE, -/* 1C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD6E9, 0xD6EE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE7BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xECCB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C30 */ 0xFFFD, 0xFFFD, 0xD5B3, 0xCEB4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBA5, -/* 1C38 */ 0xE1EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7A8, -/* 1C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBCE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C48 */ 0xFFFD, 0xFFFD, 0xD8BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C50 */ 0xFFFD, 0xFFFD, 0xFBFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCE9, -/* 1C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFB6, -/* 1C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEDC7, 0xEEAC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCDD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C70 */ 0xFFFD, 0xF6A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6FA, 0xFFFD, 0xFFFD, -/* 1C78 */ 0xFFFD, 0xF5A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDDC, -/* 1C80 */ 0xEDB3, 0xCEC9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C88 */ 0xEFE8, 0xFFFD, 0xFFFD, 0xE1BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C90 */ 0xFFFD, 0xFFFD, 0xFADB, 0xCBE3, 0xF7A9, 0xFFFD, 0xFBA6, 0xFFFD, -/* 1C98 */ 0xFFFD, 0xFFFD, 0xDCB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1C0, 0xEDC8, -/* 1CA0 */ 0xEFC3, 0xD6AD, 0xFFFD, 0xFFFD, 0xFDCE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CA8 */ 0xE8A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CB0 */ 0xFFFD, 0xFBF4, 0xD5A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1F6, 0xFFFD, -/* 1CB8 */ 0xE6D3, 0xCCDE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CC0 */ 0xFFFD, 0xF8B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCEB, 0xFFFD, 0xFFFD, -/* 1CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDB6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CD0 */ 0xFFFD, 0xE5EA, 0xFFFD, 0xFFFD, 0xF1E0, 0xDBCC, 0xDDCD, 0xFFFD, -/* 1CD8 */ 0xFFFD, 0xFFFD, 0xD4C8, 0xFFFD, 0xFFFD, 0xD9ED, 0xFFFD, 0xFFFD, -/* 1CE0 */ 0xFFFD, 0xFFFD, 0xF5A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6FB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CF0 */ 0xFFFD, 0xFFFD, 0xE6D4, 0xFDC8, 0xFFFD, 0xD6A1, 0xFDBF, 0xFFFD, -/* 1CF8 */ 0xFCD3, 0xFFFD, 0xEFA1, 0xFFFD, 0xE7BC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D00 */ 0xFFFD, 0xFFFD, 0xD1EE, 0xFFFD, 0xFFFD, 0xE6D5, 0xFFFD, 0xFFFD, -/* 1D08 */ 0xE9F2, 0xFFFD, 0xDFB0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D10 */ 0xD8E0, 0xFCBA, 0xFDAF, 0xF0CE, 0xFFFD, 0xDBE1, 0xFFFD, 0xFFFD, -/* 1D18 */ 0xE5C9, 0xFFFD, 0xEDB4, 0xE0C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D20 */ 0xFFFD, 0xFFFD, 0xE3D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9FB, -/* 1D28 */ 0xEAA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDB7, 0xFFFD, 0xFFFD, -/* 1D30 */ 0xFBA7, 0xFFFD, 0xE9C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDF7, -/* 1D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2D9, 0xFFFD, 0xFFFD, -/* 1D40 */ 0xDCEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D48 */ 0xFFFD, 0xFFFD, 0xE8A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6F0, -/* 1D50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDF8, -/* 1D58 */ 0xFDF9, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6BF, 0xFFFD, 0xFFFD, 0xE7A7, -/* 1D60 */ 0xFFFD, 0xE6D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4F3, 0xD4C9, -/* 1D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6FA, 0xFFFD, 0xD7F2, 0xFFFD, -/* 1D70 */ 0xE1C0, 0xFFFD, 0xDBE2, 0xE6D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7BD, 0xFFFD, 0xFFFD, -/* 1D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF0CF, 0xF3BE, 0xE2AC, 0xFFFD, 0xFFFD, -/* 1D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF5B7, 0xE0F0, 0xFDB8, 0xE3E8, 0xFFFD, -/* 1D90 */ 0xD4A7, 0xE8FC, 0xFAD2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D98 */ 0xF8EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DA0 */ 0xFFFD, 0xFFFD, 0xD6D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5B4, 0xF0D0, 0xFFFD, -/* 1DB0 */ 0xF7F0, 0xEEB3, 0xFFFD, 0xFFFD, 0xEABA, 0xFFFD, 0xEAD3, 0xFFFD, -/* 1DB8 */ 0xFFFD, 0xEDC9, 0xDDAB, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AC, 0xFDA1, -/* 1DC0 */ 0xFFFD, 0xDFD0, 0xECB3, 0xFFFD, 0xDFD1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DC8 */ 0xFFFD, 0xFFFD, 0xEDED, 0xF8B8, 0xF7FA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DD0 */ 0xF8AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4E0, 0xFFFD, -/* 1DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4BA, 0xE4B3, 0xFFFD, 0xE9DA, -/* 1DE0 */ 0xFFFD, 0xDEB6, 0xFFFD, 0xD9BF, 0xFFFD, 0xD9C0, 0xD6EF, 0xFFFD, -/* 1DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD9CC, 0xFFFD, 0xDAAA, 0xFFFD, 0xFFFD, -/* 1DF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFE5, 0xFFFD, -/* 1DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7E5, 0xFFFD, 0xFFFD, -/* 1E00 */ 0xFFFD, 0xCCB2, 0xFFFD, 0xFFFD, 0xDFF9, 0xD7E0, 0xD4BB, 0xFFFD, -/* 1E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFDFA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E10 */ 0xCCB3, 0xFFFD, 0xFFFD, 0xDBF3, 0xDFD2, 0xFFFD, 0xCECA, 0xFFFD, -/* 1E18 */ 0xEEDA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E20 */ 0xFFFD, 0xFFFD, 0xE4E4, 0xFFFD, 0xFBCF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCFB7, 0xFFFD, 0xEEC3, 0xFFFD, 0xFFFD, -/* 1E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEEA, 0xFFFD, 0xFFFD, -/* 1E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2AD, 0xD7E1, 0xFAF5, -/* 1E40 */ 0xFFFD, 0xFFFD, 0xD5C9, 0xF8AC, 0xF3E9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E48 */ 0xFFFD, 0xD8ED, 0xE3C4, 0xF0F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0FA, -/* 1E58 */ 0xEEC4, 0xD9DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBA2, 0xEBA3, 0xFFFD, 0xFFFD, -/* 1E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCC2, 0xEABB, 0xFFFD, 0xFFFD, -/* 1E70 */ 0xFFFD, 0xFFFD, 0xE8AB, 0xDEE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDEF, 0xFFFD, -/* 1E80 */ 0xE8A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFF1, 0xD4BC, 0xFFFD, -/* 1E88 */ 0xFCEA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7BE, 0xFFFD, -/* 1E90 */ 0xFCF2, 0xFFFD, 0xFFFD, 0xD6B4, 0xFFFD, 0xFFFD, 0xE2AE, 0xFFFD, -/* 1E98 */ 0xD3B7, 0xFACC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EA0 */ 0xFFFD, 0xFFFD, 0xFADC, 0xFFFD, 0xEDB5, 0xE1E3, 0xFFFD, 0xE8AC, -/* 1EA8 */ 0xFFFD, 0xE8DD, 0xFFFD, 0xFFFD, 0xEFE9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EB0 */ 0xFFFD, 0xFFFD, 0xF4BD, 0xFFFD, 0xCFB8, 0xE9DB, 0xD1AC, 0xFFFD, -/* 1EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAC7, 0xFFFD, 0xFFFD, -/* 1EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBC9, 0xFFFD, 0xE8CC, -/* 1EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDEB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1ED0 */ 0xD6BC, 0xD3E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFADD, -/* 1ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAD6, 0xFFFD, -/* 1EE0 */ 0xCAB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAC8, -/* 1EE8 */ 0xDFA6, 0xFFFD, 0xF9B3, 0xF2D2, 0xFFFD, 0xCAC4, 0xFFFD, 0xFFFD, -/* 1EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCECB, 0xFFFD, 0xFFFD, 0xCDF5, -/* 1EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFDB0, 0xD5A8, 0xFFFD, 0xF1C1, 0xFFFD, -/* 1F00 */ 0xFFFD, 0xE2E9, 0xDCCA, 0xECB4, 0xFAC0, 0xFFFD, 0xFFFD, 0xFBA8, -/* 1F08 */ 0xD0A8, 0xFFFD, 0xFFFD, 0xDAEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9EE, 0xFFFD, 0xE0FB, -/* 1F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEFEA, 0xFADE, 0xFFFD, 0xFFFD, 0xE0C4, -/* 1F20 */ 0xFFFD, 0xCFB9, 0xFFFD, 0xD5CA, 0xD7E2, 0xE2AF, 0xFFFD, 0xD7B8, -/* 1F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F30 */ 0xFFFD, 0xE8CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F38 */ 0xFFFD, 0xF6DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFA2, 0xE2DA, -/* 1F40 */ 0xF6FC, 0xFFFD, 0xFFFD, 0xFBD0, 0xD1AD, 0xFFFD, 0xCDE4, 0xFFFD, -/* 1F48 */ 0xD1AE, 0xDCED, 0xE8CE, 0xFFFD, 0xF0F9, 0xCEB5, 0xE6FC, 0xFFFD, -/* 1F50 */ 0xFFFD, 0xD7FB, 0xD0D6, 0xDDF5, 0xF7F1, 0xFFFD, 0xF6FD, 0xFFFD, -/* 1F58 */ 0xDBF7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBEA, 0xE9DC, 0xD9C1, -/* 1F60 */ 0xFFFD, 0xF5F2, 0xE0C5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F68 */ 0xFFFD, 0xEAD4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF9C2, 0xFFFD, 0xEABC, 0xFFFD, 0xD2C5, -/* 1F78 */ 0xFBD1, 0xE7C0, 0xEBA5, 0xFFFD, 0xDFFA, 0xE3A2, 0xD7B9, 0xFFFD, -/* 1F80 */ 0xE9C3, 0xFFFD, 0xE8FD, 0xE8AF, 0xFFFD, 0xFFFD, 0xF2D3, 0xFBA9, -/* 1F88 */ 0xD8A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5CB, 0xD0C8, 0xFFFD, -/* 1F90 */ 0xFFFD, 0xFFFD, 0xD1AF, 0xD7E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0C6, -/* 1F98 */ 0xFFFD, 0xD6A2, 0xFFFD, 0xEDF0, 0xD7F3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FA0 */ 0xFCD4, 0xFFFD, 0xDAD7, 0xCCDF, 0xFFFD, 0xF2D4, 0xFFFD, 0xD1B0, -/* 1FA8 */ 0xFFFD, 0xCCE0, 0xFFFD, 0xDBFD, 0xF3BF, 0xFFFD, 0xF0D1, 0xFFFD, -/* 1FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCBB, 0xFFFD, 0xE2B0, 0xFFFD, -/* 1FB8 */ 0xFFFD, 0xE6A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2DB, 0xFFFD, 0xFFFD, -/* 1FC0 */ 0xFFFD, 0xDFDE, 0xFFFD, 0xE0C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC8 */ 0xFFFD, 0xFFFD, 0xF2EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCE1, 0xFFFD, -/* 1FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD6EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FD8 */ 0xE7C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEB6, 0xFFFD, 0xF3C0, 0xFFFD, -/* 1FE0 */ 0xCDFE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBD2, 0xFFFD, 0xF8F8, 0xF7FB, -/* 1FE8 */ 0xFFFD, 0xFFFD, 0xE8BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FF0 */ 0xFFFD, 0xFFFD, 0xE8B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEDB6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCBA, 0xFFFD, 0xFFFD, -/* 2008 */ 0xCCB4, 0xF1F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8B8, 0xFFFD, 0xFFFD, -/* 2010 */ 0xCAF6, 0xFFFD, 0xE4A4, 0xF4D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFE6, -/* 2018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDFA7, 0xFFFD, 0xDFE7, 0xE1C1, 0xFFFD, -/* 2020 */ 0xE9C4, 0xFFFD, 0xFFFD, 0xDCCB, 0xE9C5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2028 */ 0xEFA3, 0xEBA6, 0xCBA3, 0xE3E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1FB, -/* 2030 */ 0xEFA4, 0xFFFD, 0xEFEB, 0xD0B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2038 */ 0xCDA3, 0xFFFD, 0xFFFD, 0xE8E6, 0xFFFD, 0xEFA5, 0xFFFD, 0xD3CC, -/* 2040 */ 0xDAED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7BA, 0xFFFD, 0xF2D5, -/* 2048 */ 0xF5E5, 0xD9EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9B4, 0xFFFD, -/* 2050 */ 0xFFFD, 0xD5D4, 0xFDCF, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBE3, 0xFFFD, -/* 2058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF1E1, 0xECB6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2060 */ 0xFFFD, 0xFBFE, 0xD3D7, 0xFFFD, 0xD1B1, 0xFFFD, 0xCBB1, 0xFFFD, -/* 2068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD1B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2070 */ 0xFFFD, 0xFFFD, 0xCBB2, 0xF1C2, 0xFFFD, 0xFFFD, 0xF4E1, 0xF9B5, -/* 2078 */ 0xFFFD, 0xFFFD, 0xE1C3, 0xE1C2, 0xFFFD, 0xEBF7, 0xDFA8, 0xFFFD, -/* 2080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBCA, 0xFFFD, -/* 2088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6B9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2090 */ 0xFFFD, 0xFFFD, 0xF8DE, 0xF9AA, 0xCAF7, 0xFFFD, 0xEDB7, 0xFFFD, -/* 2098 */ 0xFFFD, 0xD3B8, 0xF2D6, 0xFFFD, 0xFFFD, 0xD4D9, 0xEEC5, 0xF2F0, -/* 20A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCAB2, 0xFFFD, 0xFFFD, 0xDCBB, 0xFFFD, -/* 20A8 */ 0xF1F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECB7, 0xFFFD, -/* 20B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5CA, 0xFFFD, 0xF6C0, 0xFDDD, 0xFFFD, -/* 20B8 */ 0xFFFD, 0xD4E3, 0xCCE2, 0xFFFD, 0xF7D4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD7E5, 0xD3C3, 0xFFFD, 0xD8A6, 0xFFFD, -/* 20C8 */ 0xF6C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDF6, 0xFFFD, -/* 20D0 */ 0xCDC0, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5DC, 0xE1C4, 0xFFFD, 0xFFFD, -/* 20D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8B0, 0xF4B0, 0xF3EA, 0xDAEE, 0xFFFD, -/* 20E0 */ 0xD7BB, 0xFFFD, 0xE2B1, 0xD7AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20E8 */ 0xFFFD, 0xFFFD, 0xD6FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4DF, 0xFFFD, 0xCAD6, 0xFFFD, -/* 20F8 */ 0xFFFD, 0xFFFD, 0xEBA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBFE, 0xFFFD, -/* 2100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2108 */ 0xFFFD, 0xF6C2, 0xFFFD, 0xFFFD, 0xEFBB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2110 */ 0xFFFD, 0xD4FD, 0xFFFD, 0xFFFD, 0xE0C8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2118 */ 0xE8B9, 0xFFFD, 0xEFA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2120 */ 0xCDA4, 0xFFFD, 0xFFFD, 0xD4F4, 0xDBA1, 0xDBDC, 0xDBDD, 0xFFFD, -/* 2128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEDC, 0xFFFD, 0xCBCB, 0xFCD5, -/* 2130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEEB, 0xFFFD, -/* 2138 */ 0xCDC1, 0xFFFD, 0xFFFD, 0xFBD3, 0xF5D4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2140 */ 0xFFFD, 0xD9A9, 0xFFFD, 0xFFFD, 0xE9DD, 0xDBCD, 0xFFFD, 0xFFFD, -/* 2148 */ 0xDDCE, 0xFFFD, 0xE7C3, 0xFFFD, 0xECCC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9EC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2158 */ 0xCBCC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0FC, 0xD4A8, 0xFFFD, -/* 2160 */ 0xEDD3, 0xD8EF, 0xFFFD, 0xF2D7, 0xFFFD, 0xCAF8, 0xDAEF, 0xFFFD, -/* 2168 */ 0xFFFD, 0xD6D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2170 */ 0xD9CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8EE, 0xFFFD, 0xF2C1, 0xFFFD, -/* 2178 */ 0xFFFD, 0xFFFD, 0xDFD3, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAF0, 0xFFFD, -/* 2180 */ 0xE2EA, 0xFFFD, 0xFFFD, 0xE0FD, 0xFFFD, 0xFFFD, 0xD8F8, 0xFFFD, -/* 2188 */ 0xFFFD, 0xFFFD, 0xF7AF, 0xDAB6, 0xFFFD, 0xCAD7, 0xF2D8, 0xFFFD, -/* 2190 */ 0xD8F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2198 */ 0xFFFD, 0xFADF, 0xCFEF, 0xD9C2, 0xFFFD, 0xF0D2, 0xFFFD, 0xE4D1, -/* 21A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF3B7, 0xEFEC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21A8 */ 0xFFFD, 0xFFFD, 0xE2B2, 0xFFFD, 0xD4BD, 0xFFFD, 0xFFFD, 0xD9CE, -/* 21B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4E2, 0xD4A9, 0xFFFD, 0xFFFD, -/* 21B8 */ 0xFFFD, 0xFFFD, 0xCDC2, 0xE7DA, 0xF2D9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21C0 */ 0xFFFD, 0xFFFD, 0xD9AA, 0xD8BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21C8 */ 0xFFFD, 0xFFFD, 0xDCAD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21D0 */ 0xFFFD, 0xE2EB, 0xD6FC, 0xFFFD, 0xFFFD, 0xCAF9, 0xFFFD, 0xFFFD, -/* 21D8 */ 0xD4DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21E0 */ 0xF4D7, 0xCCA1, 0xFFFD, 0xFFFD, 0xCFBA, 0xF5B8, 0xFFFD, 0xFFFD, -/* 21E8 */ 0xFFFD, 0xD9C3, 0xD0E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F0 */ 0xE3C5, 0xEBF8, 0xFFFD, 0xF2B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFBB, -/* 21F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD3AD, 0xE8E1, 0xCEEC, 0xFFFD, 0xFFFD, -/* 2200 */ 0xFFFD, 0xE0B4, 0xF2B2, 0xF3F6, 0xF6DB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2208 */ 0xFFFD, 0xD7FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8DF, -/* 2210 */ 0xFFFD, 0xF7F2, 0xD0A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6DA, 0xD7BC, 0xCCE3, 0xFFFD, -/* 2220 */ 0xFFFD, 0xE6DB, 0xDDDD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1B3, -/* 2228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFED, 0xFFFD, 0xFFFD, -/* 2230 */ 0xFFFD, 0xFFFD, 0xD6DE, 0xE4F4, 0xE1EF, 0xFFFD, 0xFFFD, 0xDDF8, -/* 2238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8CF, 0xCAE5, 0xFFFD, -/* 2240 */ 0xFFFD, 0xFFFD, 0xDCA1, 0xFFFD, 0xE0B5, 0xFCAC, 0xFCAD, 0xD8A7, -/* 2248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDB8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2250 */ 0xDBB6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6F0, 0xF3AF, 0xFFFD, -/* 2258 */ 0xFFFD, 0xCDA5, 0xFFFD, 0xDAF1, 0xD8A8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2260 */ 0xCCE4, 0xFFFD, 0xFFFD, 0xD1B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2268 */ 0xFFFD, 0xCAD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAF2, -/* 2270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5A7, 0xF5A8, 0xFFFD, -/* 2278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6A6, 0xD5EC, -/* 2280 */ 0xD5F8, 0xDAF3, 0xE3C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEE4, 0xFFFD, -/* 2288 */ 0xDEE5, 0xD1B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1B6, -/* 2290 */ 0xD1B7, 0xF2B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2298 */ 0xE9DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0D3, 0xF2B4, -/* 22A0 */ 0xFFFD, 0xFFFD, 0xF0D4, 0xCBE4, 0xFBD4, 0xF5E6, 0xE3EA, 0xFFFD, -/* 22A8 */ 0xDEE6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFD4, 0xFFFD, 0xFFFD, -/* 22B0 */ 0xF8F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0AE, 0xD1B8, 0xFFFD, -/* 22B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD6DF, 0xFFFD, 0xD0D7, 0xFCA1, 0xEFEE, -/* 22C0 */ 0xDCD8, 0xFFFD, 0xE9DF, 0xE5DD, 0xFDFB, 0xFFFD, 0xFFFD, 0xE0C9, -/* 22C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD6C9, 0xFFFD, 0xFFFD, 0xD4AA, 0xFFFD, -/* 22D0 */ 0xE5CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9E0, 0xFFFD, -/* 22D8 */ 0xFFFD, 0xFFFD, 0xD0D8, 0xFCA2, 0xD4BE, 0xE2B3, 0xDEE7, 0xFFFD, -/* 22E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCBC, 0xD2B6, -/* 22E8 */ 0xF5D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEA1, 0xF5A9, -/* 22F0 */ 0xFFFD, 0xFFFD, 0xDDF9, 0xFFFD, 0xFFFD, 0xDDFA, 0xFFFD, 0xFFFD, -/* 22F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2300 */ 0xFFFD, 0xF6DF, 0xFFFD, 0xF2DA, 0xE4EB, 0xFFFD, 0xF2F1, 0xECB9, -/* 2308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDFC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2310 */ 0xFFFD, 0xE1AA, 0xFFFD, 0xFFFD, 0xCAD9, 0xFFFD, 0xFFFD, 0xEFEF, -/* 2318 */ 0xFFFD, 0xF5AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2320 */ 0xECF9, 0xFFFD, 0xFFFD, 0xF8AD, 0xFFFD, 0xF2C2, 0xF6C3, 0xFFFD, -/* 2328 */ 0xD7D2, 0xFFFD, 0xFFFD, 0xF9A2, 0xF0D6, 0xF0FA, 0xFFFD, 0xFFFD, -/* 2330 */ 0xF6E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9F3, 0xF2C3, 0xFFFD, -/* 2338 */ 0xFFFD, 0xFFFD, 0xD4AB, 0xCAB3, 0xCDA6, 0xFFFD, 0xCDC3, 0xCDDA, -/* 2340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9CF, 0xFFFD, 0xFFFD, -/* 2348 */ 0xF6C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEDD, 0xE7C4, 0xFFFD, 0xFFFD, -/* 2350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2B4, 0xFFFD, -/* 2358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2360 */ 0xDFE2, 0xE7DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2368 */ 0xE8B1, 0xFFFD, 0xFCAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5CD, -/* 2370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFAEB, 0xFFFD, 0xCFBC, 0xFFFD, 0xFFFD, -/* 2378 */ 0xCFE2, 0xCDF6, 0xFFFD, 0xFFFD, 0xEFF0, 0xFFFD, 0xF4BE, 0xFFFD, -/* 2380 */ 0xD4CD, 0xFFFD, 0xFFFD, 0xF3B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9A1, -/* 2388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2390 */ 0xFFFD, 0xF2F2, 0xF3EB, 0xFFFD, 0xF0D7, 0xFFFD, 0xFFFD, 0xCFD7, -/* 2398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFDF, 0xFFFD, -/* 23A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23A8 */ 0xE8C0, 0xE8C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFE3, 0xE9A2, 0xFFFD, -/* 23B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23B8 */ 0xFFFD, 0xD0AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF3C1, 0xD0AB, 0xFFFD, 0xD4E4, 0xFFFD, -/* 23C8 */ 0xFFFD, 0xEFBC, 0xD8A1, 0xD9DF, 0xFFFD, 0xF3D7, 0xFFFD, 0xFFFD, -/* 23D0 */ 0xFFFD, 0xDCBD, 0xFFFD, 0xCCE5, 0xEDF1, 0xFFFD, 0xFFFD, 0xF1E2, -/* 23D8 */ 0xFFFD, 0xD4DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2B5, 0xFFFD, -/* 23E0 */ 0xFFFD, 0xCAE6, 0xFFFD, 0xD3AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23E8 */ 0xFFFD, 0xFFFD, 0xCCE6, 0xFFFD, 0xFFFD, 0xF1D3, 0xF5E7, 0xFFFD, -/* 23F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCADA, 0xFBEE, 0xFFFD, 0xE1C5, 0xFFFD, -/* 23F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFE9, 0xFFFD, -/* 2400 */ 0xEEDE, 0xFFFD, 0xFFFD, 0xF7C2, 0xFFFD, 0xD8A2, 0xFFFD, 0xFFFD, -/* 2408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDDAC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2410 */ 0xFFFD, 0xF0AF, 0xD6BD, 0xF9B6, 0xFFFD, 0xFFFD, 0xD4F5, 0xFFFD, -/* 2418 */ 0xD0C9, 0xEFA7, 0xE2EC, 0xFFFD, 0xDBEA, 0xCECC, 0xF5E8, 0xF7D5, -/* 2420 */ 0xFFFD, 0xD3CD, 0xFFFD, 0xF3FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0B5, 0xE0FE, 0xFFFD, -/* 2430 */ 0xDFFB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6DD, -/* 2438 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8A4, -/* 2440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2448 */ 0xFFFD, 0xCBCD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFA8, 0xFFFD, 0xFFFD, -/* 2450 */ 0xFFFD, 0xEEB4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAD8, 0xD1B9, -/* 2458 */ 0xFFFD, 0xDFA9, 0xFFFD, 0xFFFD, 0xF3B0, 0xFFFD, 0xFFFD, 0xCCC4, -/* 2460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCEB7, 0xEFA9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2468 */ 0xDFD5, 0xFFFD, 0xFFFD, 0xEDD7, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEC6, -/* 2470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFBD, -/* 2478 */ 0xFCD6, 0xFFFD, 0xFFFD, 0xDBF4, 0xFFFD, 0xEFAA, 0xF8B9, 0xFFFD, -/* 2480 */ 0xF5E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2488 */ 0xFFFD, 0xE3D9, 0xE1C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4BF, 0xFFFD, -/* 2490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDEE8, 0xF0EA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3C2, -/* 24A0 */ 0xD3AF, 0xFFFD, 0xFFFD, 0xCADB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24A8 */ 0xFFFD, 0xFCD7, 0xFFFD, 0xFFFD, 0xEDD8, 0xE1C7, 0xF4D8, 0xD6B3, -/* 24B0 */ 0xDDAD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5BE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1C3, 0xEEDF, 0xD6EB, -/* 24C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF4D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD7E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24D0 */ 0xFFFD, 0xFFFD, 0xDAB7, 0xDDFB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24D8 */ 0xFFFD, 0xDDCF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24E0 */ 0xFFFD, 0xFFFD, 0xD8A3, 0xFFFD, 0xFFFD, 0xDAD9, 0xFFFD, 0xF0D8, -/* 24E8 */ 0xEFC4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1D8, -/* 24F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1D4, 0xFFFD, 0xEDF2, -/* 24F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5DB, 0xFFFD, -/* 2500 */ 0xFFFD, 0xD5DC, 0xF3C4, 0xCBD7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2508 */ 0xFFFD, 0xE2B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFF1, 0xD3D8, -/* 2510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDD0, -/* 2518 */ 0xF0D9, 0xCBB3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2520 */ 0xD5DD, 0xCDA7, 0xFFFD, 0xFFFD, 0xD0AC, 0xFFFD, 0xD1BA, 0xFFFD, -/* 2528 */ 0xF1C4, 0xFFFD, 0xE5B3, 0xFBF5, 0xE9E1, 0xFDE0, 0xFCBC, 0xFFFD, -/* 2530 */ 0xDAA2, 0xDAA3, 0xFFFD, 0xD2A1, 0xFFFD, 0xFFFD, 0xD2EF, 0xFFFD, -/* 2538 */ 0xFFFD, 0xFFFD, 0xE2ED, 0xFFFD, 0xFFFD, 0xDEE9, 0xCEDC, 0xF2B5, -/* 2540 */ 0xD0E4, 0xDDD1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1C8, 0xDBB7, -/* 2548 */ 0xDFE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2550 */ 0xFFFD, 0xEDB9, 0xF1C5, 0xFFFD, 0xF3CF, 0xD7AB, 0xE1AC, 0xFFFD, -/* 2558 */ 0xFFFD, 0xE3EB, 0xFFFD, 0xEEC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1C9, -/* 2560 */ 0xCAFA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2568 */ 0xF0FB, 0xFAE1, 0xF0DA, 0xCCE7, 0xDAF4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCBF, 0xCEED, -/* 2578 */ 0xFFFD, 0xFFFD, 0xD5A9, 0xFAE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0E5, -/* 2580 */ 0xFFFD, 0xEBD6, 0xFFFD, 0xECDF, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFFC, -/* 2588 */ 0xFFFD, 0xFFFD, 0xF7D6, 0xDEEA, 0xCBB4, 0xFFFD, 0xFFFD, 0xEFBE, -/* 2590 */ 0xFFFD, 0xFFFD, 0xCCB5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2598 */ 0xCFBD, 0xEFF2, 0xE2B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCE8, 0xFFFD, -/* 25A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0FC, -/* 25A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD6E0, 0xFFFD, 0xF1C6, 0xFFFD, 0xFFFD, -/* 25B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2B8, -/* 25B8 */ 0xEBAB, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBB5, 0xD8D1, 0xFFFD, 0xF4CE, -/* 25C0 */ 0xF3F7, 0xFFFD, 0xFFFD, 0xD7C6, 0xFFFD, 0xD1BB, 0xF7AA, 0xFFFD, -/* 25C8 */ 0xEDCA, 0xD7D3, 0xD8FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25D0 */ 0xFFFD, 0xFFFD, 0xF6C5, 0xFFFD, 0xFFFD, 0xD1CC, 0xDDFC, 0xFFFD, -/* 25D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25E0 */ 0xFFFD, 0xDFFD, 0xFFFD, 0xF9E5, 0xFFFD, 0xE0CA, 0xFFFD, 0xFFFD, -/* 25E8 */ 0xF2FD, 0xD3B0, 0xFFFD, 0xF4F3, 0xDAC9, 0xFFFD, 0xE6DE, 0xFFFD, -/* 25F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF8BA, 0xE8D0, 0xFFFD, 0xFFFD, 0xD8FB, -/* 25F8 */ 0xFFFD, 0xFFFD, 0xEAD5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6A3, -/* 2600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6C6, 0xF2DB, -/* 2608 */ 0xE4FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2618 */ 0xFFFD, 0xDADA, 0xFFFD, 0xF2DC, 0xFBD6, 0xE9B2, 0xFFFD, 0xEEAD, -/* 2620 */ 0xFFFD, 0xFAE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2628 */ 0xFFFD, 0xDCEE, 0xFFFD, 0xFFFD, 0xF5EA, 0xE6E0, 0xFFFD, 0xF0FD, -/* 2630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7AC, 0xFFFD, 0xFFFD, -/* 2638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF5C5, 0xEEE0, 0xFFFD, 0xFFFD, 0xDBE5, -/* 2640 */ 0xFFFD, 0xDDDE, 0xFFFD, 0xFFFD, 0xD9F0, 0xE9A3, 0xFFFD, 0xFFFD, -/* 2648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2650 */ 0xF1F9, 0xFFFD, 0xF2C4, 0xE0CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9A4, 0xFFFD, 0xFFFD, 0xE2B9, -/* 2660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3B1, -/* 2668 */ 0xFCEB, 0xCDA8, 0xFFFD, 0xCCB6, 0xFFFD, 0xFFFD, 0xF0DB, 0xFFFD, -/* 2670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6BA, -/* 2678 */ 0xFFFD, 0xFFFD, 0xCDA9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2680 */ 0xF3C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2688 */ 0xFFFD, 0xFFFD, 0xE1D9, 0xFFFD, 0xFFFD, 0xEFAB, 0xFFFD, 0xFFFD, -/* 2690 */ 0xFFFD, 0xE7C5, 0xFFFD, 0xFFFD, 0xE0E9, 0xFFFD, 0xF3C5, 0xFFFD, -/* 2698 */ 0xFFFD, 0xD4C0, 0xD5BF, 0xDDAE, 0xFFFD, 0xF9FC, 0xFFFD, 0xCCC0, -/* 26A0 */ 0xE5A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEB8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26A8 */ 0xD8D2, 0xF9D6, 0xF1AA, 0xCED1, 0xFFFD, 0xFFFD, 0xF6C7, 0xFFFD, -/* 26B0 */ 0xDBEB, 0xFFFD, 0xDFFE, 0xFFFD, 0xFFFD, 0xD8E1, 0xFFFD, 0xF7F3, -/* 26B8 */ 0xFFFD, 0xD7E7, 0xD4FE, 0xFFFD, 0xFFFD, 0xD1BC, 0xFFFD, 0xE5CF, -/* 26C0 */ 0xFFFD, 0xCBB6, 0xFFFD, 0xDAB8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26C8 */ 0xFFFD, 0xCDC4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6BE, -/* 26D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26D8 */ 0xFFFD, 0xCFD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0CC, 0xEBF9, 0xFFFD, -/* 26E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDFD, -/* 26E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7E8, 0xCBD8, 0xFFFD, -/* 26F0 */ 0xFFFD, 0xFFFD, 0xE9E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8BA, 0xFFFD, -/* 26F8 */ 0xFFFD, 0xFFFD, 0xE3C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECCD, -/* 2700 */ 0xFFFD, 0xECCE, 0xFFFD, 0xD6BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3A7, -/* 2708 */ 0xFFFD, 0xDFD6, 0xFDE8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEE1, 0xF6A8, 0xDDFD, 0xFFFD, -/* 2718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8BB, 0xFFFD, -/* 2720 */ 0xE8D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9D7, 0xFFFD, 0xFFFD, -/* 2728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEEE, 0xFFFD, -/* 2730 */ 0xFFFD, 0xECCF, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9A5, 0xD6D5, 0xFFFD, -/* 2738 */ 0xCDC5, 0xFFFD, 0xEDBA, 0xD1BD, 0xFFFD, 0xFFFD, 0xCFBE, 0xFFFD, -/* 2740 */ 0xFFFD, 0xECBB, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2B1, 0xFFFD, 0xFFFD, -/* 2748 */ 0xFFFD, 0xFFFD, 0xCCE9, 0xFFFD, 0xD9C4, 0xE9FC, 0xD1BE, 0xFFFD, -/* 2750 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECBC, 0xFFFD, 0xFFFD, 0xE5AD, -/* 2758 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7B0, 0xFFFD, -/* 2760 */ 0xCCEA, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3C4, 0xFFFD, 0xFFFD, 0xD6C0, -/* 2768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD6FD, 0xE1A1, 0xFFFD, 0xDEBD, 0xFFFD, -/* 2770 */ 0xF6A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAA4, 0xD6A4, 0xF5C6, 0xFFFD, -/* 2778 */ 0xE1A2, 0xE9C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2C5, 0xFFFD, 0xFFFD, -/* 2780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF4E9, 0xD6EC, 0xEBD3, 0xFFFD, 0xFFFD, -/* 2788 */ 0xFFFD, 0xFFFD, 0xECBD, 0xE2DC, 0xDEEB, 0xF0DC, 0xFFFD, 0xEBBF, -/* 2790 */ 0xFFFD, 0xD7CE, 0xD1BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5AB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27A0 */ 0xFFFD, 0xF9FD, 0xFFFD, 0xCADC, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDC6, -/* 27A8 */ 0xF2B6, 0xFFFD, 0xFFFD, 0xDDFE, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCB7, -/* 27B0 */ 0xDBB8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0E9, 0xFFFD, 0xCEDD, -/* 27B8 */ 0xEBC0, 0xFFFD, 0xFDA2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27C0 */ 0xF8CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27C8 */ 0xFFFD, 0xEAD6, 0xF1B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D0 */ 0xFFFD, 0xFFFD, 0xDBCE, 0xFFFD, 0xF7C3, 0xDBCF, 0xCBA4, 0xFFFD, -/* 27D8 */ 0xFFFD, 0xF8E0, 0xFFFD, 0xFFFD, 0xFBD7, 0xFFFD, 0xFFFD, 0xEBCA, -/* 27E0 */ 0xE0A1, 0xCECD, 0xFFFD, 0xFFFD, 0xD4DC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27E8 */ 0xFDD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2F6, 0xFFFD, 0xFFFD, -/* 27F0 */ 0xFFFD, 0xFFFD, 0xF2B7, 0xFFFD, 0xFFFD, 0xFAF6, 0xF6AA, 0xFAF7, -/* 27F8 */ 0xD8E6, 0xFFFD, 0xF4B1, 0xE8D2, 0xFFFD, 0xCAC5, 0xCCEB, 0xFFFD, -/* 2800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2EE, 0xFFFD, -/* 2808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2BB, 0xFFFD, 0xF7AD, 0xFFFD, -/* 2810 */ 0xFFFD, 0xFFFD, 0xF8E1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3EC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2820 */ 0xFFFD, 0xDEA1, 0xE4FD, 0xFFFD, 0xFFFD, 0xE3EC, 0xFFFD, 0xDDAF, -/* 2828 */ 0xDDB0, 0xFFFD, 0xFFFD, 0xCBB7, 0xE8D3, 0xE1A3, 0xD2E0, 0xFFFD, -/* 2830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF0FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2838 */ 0xE9A6, 0xCBF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2840 */ 0xEDF3, 0xDCD9, 0xE0CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7DA, -/* 2848 */ 0xDBB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2850 */ 0xCCAE, 0xFFFD, 0xDADB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDC7, -/* 2858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2860 */ 0xFFFD, 0xFFFD, 0xDDB1, 0xFFFD, 0xD8AF, 0xE3A3, 0xFFFD, 0xFFFD, -/* 2868 */ 0xCEEF, 0xFFFD, 0xFFFD, 0xF2F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2870 */ 0xF8B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0CE, 0xFFFD, 0xF5FD, 0xFFFD, 0xFFFD, -/* 2880 */ 0xFFFD, 0xFFFD, 0xEBEC, 0xFFFD, 0xFFFD, 0xD3C5, 0xFCEC, 0xD2DB, -/* 2888 */ 0xD4EB, 0xFFFD, 0xDEA2, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5E6, 0xFFFD, -/* 2890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0B0, 0xFFFD, 0xFFFD, -/* 2898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28A0 */ 0xD5C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDF4, -/* 28A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3ED, 0xFFFD, 0xE8C2, 0xFFFD, 0xEDF5, -/* 28B0 */ 0xD7FC, 0xFFFD, 0xEDBB, 0xFFFD, 0xFFFD, 0xF6AB, 0xFFFD, 0xFFFD, -/* 28B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF2B8, 0xF6C8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28C0 */ 0xFFFD, 0xFFFD, 0xD3E6, 0xF2DD, 0xCFBF, 0xFFFD, 0xEBAC, 0xFFFD, -/* 28C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFC0, 0xFFFD, 0xE6A8, -/* 28D0 */ 0xFDE9, 0xFFFD, 0xCFC1, 0xFFFD, 0xE0DF, 0xDEEC, 0xFFFD, 0xFFFD, -/* 28D8 */ 0xFFFD, 0xFFFD, 0xE0A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF4BF, 0xE2EF, 0xFFFD, 0xD9F1, 0xF1C7, -/* 28E8 */ 0xFFFD, 0xCBB8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28F0 */ 0xFFFD, 0xFFFD, 0xF9FE, 0xDBBA, 0xDAF5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6EC, 0xDADC, 0xFAE4, -/* 2900 */ 0xFFFD, 0xE0CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2908 */ 0xDDB2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6A9, 0xFFFD, 0xEFF3, -/* 2910 */ 0xF3ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEBFA, 0xFFFD, 0xF9E6, 0xFFFD, 0xFFFD, -/* 2920 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCADD, 0xD5DE, 0xFFFD, -/* 2928 */ 0xCADE, 0xDFE4, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6FD, 0xFFFD, 0xF5AC, -/* 2930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4F5, 0xE9E3, 0xFFFD, -/* 2938 */ 0xEDCB, 0xCFE4, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8D3, 0xFFFD, 0xFFFD, -/* 2940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDB3, 0xD4EC, 0xFFFD, 0xFFFD, -/* 2948 */ 0xF2B9, 0xFFFD, 0xDFB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2950 */ 0xCBCE, 0xFBD8, 0xFFFD, 0xFFFD, 0xD0D9, 0xFFFD, 0xFFFD, 0xDDD2, -/* 2958 */ 0xF7F4, 0xE7DC, 0xE4A5, 0xFFFD, 0xFCA3, 0xFFFD, 0xDBBB, 0xFFFD, -/* 2960 */ 0xFFFD, 0xFFFD, 0xF2BA, 0xE9FD, 0xD0CA, 0xFFFD, 0xF5D6, 0xD9C5, -/* 2968 */ 0xE4B4, 0xFFFD, 0xEDA7, 0xEABD, 0xE6FE, 0xFFFD, 0xF7C4, 0xF5AD, -/* 2970 */ 0xFFFD, 0xD9E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAB4, 0xFFFD, 0xFFFD, -/* 2978 */ 0xF8E2, 0xCFC2, 0xFFFD, 0xECBE, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5B4, -/* 2980 */ 0xCDC8, 0xEEC8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE7C8, 0xCDC9, 0xF9B7, 0xFFFD, 0xFFFD, -/* 2990 */ 0xF1E8, 0xD9F2, 0xDBF5, 0xCAB5, 0xD9C6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2998 */ 0xD8C9, 0xEDBC, 0xFFFD, 0xFFFD, 0xD8D4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29A0 */ 0xDCDA, 0xFFFD, 0xE2BC, 0xFFFD, 0xFFFD, 0xFCED, 0xECE0, 0xD2FE, -/* 29A8 */ 0xFFFD, 0xE9C7, 0xE6AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29B0 */ 0xFFFD, 0xE2F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29B8 */ 0xFABB, 0xFFFD, 0xF5AE, 0xFBAA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29C0 */ 0xECFB, 0xFFFD, 0xECBF, 0xFCD8, 0xD4E5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29C8 */ 0xF9C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEE2, 0xD7E9, 0xEDF6, 0xFFFD, -/* 29D0 */ 0xFFFD, 0xFFFD, 0xDEED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29D8 */ 0xFFFD, 0xFFFD, 0xCCEC, 0xFFFD, 0xE3EE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29E0 */ 0xFFFD, 0xFFFD, 0xE8D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAF8, 0xFFFD, -/* 29E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDB4, 0xE4B5, 0xD8B0, -/* 29F0 */ 0xD8D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4EA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29F8 */ 0xCEB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6E1, 0xCFD2, 0xFFFD, 0xD0B6, -/* 2A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEA2, 0xFFFD, -/* 2A08 */ 0xFFFD, 0xF3EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3F8, -/* 2A10 */ 0xDCCC, 0xFFFD, 0xD0CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCA4, 0xCDCA, -/* 2A18 */ 0xD7D4, 0xDEA3, 0xFFFD, 0xE4E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A20 */ 0xEEC9, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2DD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A28 */ 0xFFFD, 0xFFFD, 0xF5FE, 0xD4AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A30 */ 0xFFFD, 0xD5D1, 0xFFFD, 0xD8F0, 0xF8C3, 0xEAD7, 0xF5D7, 0xFFFD, -/* 2A38 */ 0xFFFD, 0xD8BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDC0, 0xFFFD, -/* 2A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBAD, 0xFFFD, 0xFFFD, -/* 2A48 */ 0xFFFD, 0xFFFD, 0xD5AA, 0xEECA, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAE7, -/* 2A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8E3, 0xFFFD, 0xD4DD, -/* 2A58 */ 0xFFFD, 0xFFFD, 0xEAD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBD9, -/* 2A60 */ 0xEDF7, 0xFFFD, 0xFFFD, 0xE5B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A68 */ 0xFFFD, 0xD0AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1F1, 0xE2BD, -/* 2A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A78 */ 0xD9D5, 0xFFFD, 0xFFFD, 0xDFAA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A80 */ 0xDBBC, 0xF8E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1FA, -/* 2A88 */ 0xFFFD, 0xFFFD, 0xE5B6, 0xF3EF, 0xFFFD, 0xFFFD, 0xFBDA, 0xE1E0, -/* 2A90 */ 0xFFFD, 0xD9AC, 0xFFFD, 0xF5EB, 0xFFFD, 0xE0B6, 0xFFFD, 0xFFFD, -/* 2A98 */ 0xE9C8, 0xFFFD, 0xCBCF, 0xFFFD, 0xE3C9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AA0 */ 0xDEEE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AA8 */ 0xFFFD, 0xE2BE, 0xDCEF, 0xFFFD, 0xD6A5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AB0 */ 0xFFFD, 0xFFFD, 0xE2F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AB8 */ 0xFFFD, 0xFFFD, 0xD6FE, 0xD9A1, 0xFFFD, 0xD8C0, 0xDCDB, 0xFFFD, -/* 2AC0 */ 0xFFFD, 0xEDBD, 0xDFB8, 0xFFFD, 0xEAA5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AC8 */ 0xD7AD, 0xFFFD, 0xFFFD, 0xF3F9, 0xFFFD, 0xEDF8, 0xFFFD, 0xF5C7, -/* 2AD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1CA, 0xEBE3, -/* 2AD8 */ 0xFFFD, 0xF2DE, 0xF8CC, 0xFFFD, 0xEAD9, 0xFFFD, 0xD3C6, 0xFFFD, -/* 2AE0 */ 0xDBE6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5AF, 0xFFFD, -/* 2AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCEF0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AF0 */ 0xE9FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBB6, 0xFFFD, -/* 2AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B00 */ 0xE2F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFF2, 0xF7B9, 0xD9F3, -/* 2B08 */ 0xFFFD, 0xFFFD, 0xE1CB, 0xDADD, 0xFFFD, 0xFFFD, 0xDAB9, 0xFFFD, -/* 2B10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBFB, 0xFFFD, -/* 2B18 */ 0xCBB9, 0xFFFD, 0xFFFD, 0xEDF9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B20 */ 0xFFFD, 0xFFFD, 0xE0E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4C0, 0xFFFD, 0xFDBC, -/* 2B30 */ 0xDFB1, 0xE3EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0A3, 0xFDB9, -/* 2B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B40 */ 0xFFFD, 0xF0B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B48 */ 0xCDCB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B50 */ 0xEDBE, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5C0, 0xE3F0, 0xEDFA, 0xFFFD, -/* 2B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9E4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD5ED, 0xE7DD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD4F6, 0xE5B7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B70 */ 0xDBE7, 0xE2BF, 0xEECB, 0xFFFD, 0xFFFD, 0xD7F4, 0xF0DD, 0xFFFD, -/* 2B78 */ 0xFFFD, 0xFFFD, 0xCEAB, 0xFFFD, 0xFFFD, 0xE7DE, 0xFFFD, 0xFFFD, -/* 2B80 */ 0xFFFD, 0xD6D6, 0xE1CC, 0xFFFD, 0xFFFD, 0xE8B3, 0xE5EE, 0xDCA2, -/* 2B88 */ 0xFFFD, 0xFFFD, 0xE0D0, 0xFBDB, 0xFFFD, 0xF9CB, 0xFFFD, 0xFFFD, -/* 2B90 */ 0xFFFD, 0xCBF3, 0xF4A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B98 */ 0xFAC8, 0xD6D7, 0xFFFD, 0xE9E5, 0xFBDC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDD0, 0xDAA5, 0xFFFD, 0xDBBD, -/* 2BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECE2, 0xCDF7, -/* 2BB0 */ 0xF0DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6C9, 0xDEEF, 0xFFFD, -/* 2BB8 */ 0xFFFD, 0xFFFD, 0xD3B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFCEE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BC8 */ 0xE8C3, 0xFFFD, 0xF1C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEF1, 0xFFFD, -/* 2BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF9ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2F4, 0xE4B6, 0xFFFD, 0xF5B9, -/* 2BE0 */ 0xFFFD, 0xDCF0, 0xE3F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8A5, -/* 2BE8 */ 0xF2BB, 0xFFFD, 0xDEA4, 0xFFFD, 0xDACC, 0xCAE9, 0xFFFD, 0xFFFD, -/* 2BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3DA, 0xFFFD, 0xFCD9, 0xFFFD, -/* 2BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEADA, 0xFFFD, -/* 2C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9C4, 0xFFFD, 0xE3A4, -/* 2C08 */ 0xFBDD, 0xFFFD, 0xEFCA, 0xFFFD, 0xE8C4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5CC, 0xFFFD, -/* 2C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C20 */ 0xFFFD, 0xEBD7, 0xD9AD, 0xFFFD, 0xFFFD, 0xFBAB, 0xD3D9, 0xFFFD, -/* 2C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5A2, 0xFFFD, 0xFFFD, -/* 2C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6DE, -/* 2C38 */ 0xE0D1, 0xFFFD, 0xFFFD, 0xE9A8, 0xFFFD, 0xFFFD, 0xF5F9, 0xFFFD, -/* 2C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAAF, 0xFFFD, 0xEBFC, -/* 2C48 */ 0xFFFD, 0xFFFD, 0xE0EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C50 */ 0xFFFD, 0xE3B2, 0xD5C5, 0xFFFD, 0xFFFD, 0xF1E3, 0xD5EE, 0xCDCC, -/* 2C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDD9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C60 */ 0xFFFD, 0xD8C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAEC, 0xFFFD, -/* 2C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1EB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C70 */ 0xFFFD, 0xFFFD, 0xFABC, 0xE6E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C78 */ 0xFAE5, 0xE2FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAB6, 0xFFFD, 0xE4B7, -/* 2C80 */ 0xFFFD, 0xEADB, 0xFFFD, 0xF5FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBAC, -/* 2C88 */ 0xCFC3, 0xEBFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8FA, 0xFFFD, -/* 2C90 */ 0xFFFD, 0xDFB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1F1, 0xFFFD, -/* 2C98 */ 0xD2A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5FB, 0xFFFD, 0xFFFD, -/* 2CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0DA, 0xD0DB, 0xFFFD, 0xEABE, -/* 2CA8 */ 0xD9B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAB7, 0xFFFD, -/* 2CB0 */ 0xFFFD, 0xD3E7, 0xFFFD, 0xF8E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CB8 */ 0xD3B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C0, 0xF2DF, 0xFFFD, 0xFFFD, -/* 2CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDE5, 0xF9AC, 0xFFFD, 0xFFFD, -/* 2CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDCD, 0xEEAE, -/* 2CD0 */ 0xD6AE, 0xD7EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7E0, 0xEBAE, -/* 2CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCFD9, 0xFFFD, 0xFFFD, 0xDCCD, 0xEDFB, -/* 2CE0 */ 0xFFFD, 0xDEF0, 0xFFFD, 0xD7EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CE8 */ 0xFFFD, 0xFFFD, 0xDEA5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFD7, 0xDBD0, 0xDBD1, -/* 2CF8 */ 0xFFFD, 0xFFFD, 0xD5A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0B2, -/* 2D00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D08 */ 0xFFFD, 0xDCDC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D10 */ 0xFFFD, 0xFFFD, 0xCAE8, 0xFFFD, 0xF8E6, 0xDCCE, 0xFFFD, 0xFFFD, -/* 2D18 */ 0xFFFD, 0xFFFD, 0xEADC, 0xDBD2, 0xE9B3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D20 */ 0xFFFD, 0xF7DB, 0xE3A8, 0xFFFD, 0xD7AE, 0xFFFD, 0xFFFD, 0xE0E1, -/* 2D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBBA, 0xFFFD, 0xFFFD, -/* 2D30 */ 0xE5D1, 0xD0DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5C1, 0xFFFD, -/* 2D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8CA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3A9, 0xE0A4, 0xFFFD, 0xE9A9, -/* 2D48 */ 0xFFFD, 0xD3C7, 0xFFFD, 0xFFFD, 0xDCDD, 0xF8AE, 0xFFFD, 0xFFFD, -/* 2D50 */ 0xFFFD, 0xCCB8, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0AE, 0xFFFD, 0xFFFD, -/* 2D58 */ 0xFFFD, 0xD8F2, 0xFFFD, 0xFFFD, 0xE3CA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCAF, -/* 2D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4AD, -/* 2D70 */ 0xF6D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D78 */ 0xD0CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D80 */ 0xCAC6, 0xFFFD, 0xFFFD, 0xD5C2, 0xFFFD, 0xFFFD, 0xCEBA, 0xDFD8, -/* 2D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF5BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5EB, 0xFFFD, 0xEFF4, 0xDDB5, 0xFFFD, -/* 2D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCDAA, 0xFFFD, 0xE3F2, 0xFFFD, 0xFBF7, -/* 2DA0 */ 0xFFFD, 0xF7D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDBA, 0xFFFD, -/* 2DA8 */ 0xFFFD, 0xFDE1, 0xF6FE, 0xD1C0, 0xFFFD, 0xFFFD, 0xE8C5, 0xFFFD, -/* 2DB0 */ 0xE4B8, 0xFFFD, 0xE1E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCC1, 0xFFFD, -/* 2DB8 */ 0xD2ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBBE, 0xFFFD, 0xFFFD, -/* 2DC0 */ 0xE0E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAC9, 0xFFFD, 0xFFFD, 0xE1CD, -/* 2DC8 */ 0xFFFD, 0xCAB8, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2E0, 0xF1C9, 0xDEF1, -/* 2DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF0DF, 0xF8C4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DD8 */ 0xFFFD, 0xFFFD, 0xEECC, 0xFFFD, 0xFFFD, 0xDEF2, 0xFFFD, 0xE7C9, -/* 2DE0 */ 0xFFFD, 0xE2F3, 0xE7E1, 0xFFFD, 0xFFFD, 0xE3CB, 0xFFFD, 0xFFFD, -/* 2DE8 */ 0xE3CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFF8, 0xEFAC, 0xFFFD, 0xFDFE, -/* 2DF0 */ 0xFCA5, 0xFAB1, 0xDFD9, 0xFFFD, 0xE0D2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DF8 */ 0xF4DA, 0xF1CA, 0xFFFD, 0xCEA3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E00 */ 0xF2BC, 0xECE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0A5, -/* 2E08 */ 0xFFFD, 0xF7AB, 0xFFFD, 0xFFFD, 0xEBAF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E10 */ 0xFFFD, 0xFFFD, 0xE5DE, 0xFFFD, 0xE1A4, 0xCDAB, 0xFFFD, 0xD9F4, -/* 2E18 */ 0xE8A6, 0xCDCE, 0xE1E9, 0xFFFD, 0xFCEF, 0xFFFD, 0xE0E3, 0xFFFD, -/* 2E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C1, 0xFFFD, 0xCEA4, 0xFFFD, -/* 2E28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEA6, 0xFFFD, 0xFFFD, -/* 2E30 */ 0xEBFE, 0xFFFD, 0xEBDD, 0xF0E0, 0xFFFD, 0xFFFD, 0xF4DB, 0xFFFD, -/* 2E38 */ 0xE2F4, 0xFFFD, 0xFFFD, 0xD3C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4EB, -/* 2E40 */ 0xFFFD, 0xEEB5, 0xFFFD, 0xF5D8, 0xFFFD, 0xFFFD, 0xD5DF, 0xFFFD, -/* 2E48 */ 0xFFFD, 0xFFFD, 0xD6E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBB0, -/* 2E50 */ 0xF4E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3CD, 0xFFFD, 0xFFFD, -/* 2E58 */ 0xFFFD, 0xFFFD, 0xF4F4, 0xFAB2, 0xFFFD, 0xFFFD, 0xEFF5, 0xCADF, -/* 2E60 */ 0xFFFD, 0xEBB1, 0xEDBF, 0xFFFD, 0xFFFD, 0xFDC9, 0xFFFD, 0xFFFD, -/* 2E68 */ 0xFFFD, 0xFFFD, 0xE4A6, 0xF9A4, 0xF0B3, 0xFFFD, 0xE5EC, 0xFFFD, -/* 2E70 */ 0xFFFD, 0xFFFD, 0xD1E7, 0xFFFD, 0xD9C7, 0xE4D7, 0xEADD, 0xFFFD, -/* 2E78 */ 0xD4F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E80 */ 0xFFFD, 0xFFFD, 0xDABA, 0xFFFD, 0xDACD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E88 */ 0xF9CC, 0xFFFD, 0xE1DA, 0xDBBF, 0xFFFD, 0xCCC5, 0xECD0, 0xCBBB, -/* 2E90 */ 0xFFFD, 0xDEF3, 0xFFFD, 0xFFFD, 0xE9AA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9C8, 0xFFFD, 0xFFFD, 0xEEE3, -/* 2EA0 */ 0xD7BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFC4, -/* 2EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0CD, 0xFFFD, 0xFFFD, -/* 2EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCA6, 0xFFFD, 0xFFFD, -/* 2EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1FB, 0xFFFD, 0xFFFD, -/* 2EC0 */ 0xFFFD, 0xFFFD, 0xFDD2, 0xD1C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3DB, 0xFFFD, 0xD3C9, 0xFFFD, -/* 2ED0 */ 0xDCCF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2ED8 */ 0xFFFD, 0xFFFD, 0xCCED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EE0 */ 0xDEA7, 0xFFFD, 0xFFFD, 0xE6BB, 0xECA1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EE8 */ 0xCCB9, 0xFFFD, 0xFFFD, 0xFBDE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EF0 */ 0xFFFD, 0xE7E2, 0xFFFD, 0xFFFD, 0xD4C1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCA8, 0xFFFD, -/* 2F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C2, 0xFFFD, 0xF3D8, 0xE5D3, -/* 2F08 */ 0xFFFD, 0xFFFD, 0xF3D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3C6, 0xCDDB, -/* 2F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDAC, -/* 2F18 */ 0xFFFD, 0xFCC3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4E7, 0xFFFD, -/* 2F20 */ 0xD1C2, 0xFFFD, 0xF9A5, 0xFFFD, 0xE8D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3CE, 0xFFFD, 0xFFFD, -/* 2F30 */ 0xFFFD, 0xFFFD, 0xD4CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F38 */ 0xFFFD, 0xDFDA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F40 */ 0xFFFD, 0xFFFD, 0xFBDF, 0xE7E3, 0xF8FB, 0xE3CF, 0xFFFD, 0xFFFD, -/* 2F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5B0, 0xFFFD, 0xFFFD, -/* 2F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8E7, 0xFFFD, 0xD9C9, -/* 2F58 */ 0xF8AF, 0xEFF6, 0xFFFD, 0xDDB6, 0xEEAF, 0xCDF8, 0xFFFD, 0xFFFD, -/* 2F60 */ 0xFFFD, 0xFFFD, 0xDEB8, 0xFCA7, 0xF7FC, 0xF7B1, 0xCEBB, 0xF4A1, -/* 2F68 */ 0xFFFD, 0xFFFD, 0xEECD, 0xE1AE, 0xFFFD, 0xFFFD, 0xECC3, 0xCFFE, -/* 2F70 */ 0xFFFD, 0xF8BF, 0xD8E2, 0xD3E8, 0xFFFD, 0xFFFD, 0xDEA8, 0xF4E4, -/* 2F78 */ 0xECC2, 0xFFFD, 0xD9F5, 0xF9C5, 0xDDD3, 0xD6F1, 0xECFC, 0xFCF0, -/* 2F80 */ 0xFFFD, 0xFFFD, 0xEDC0, 0xCAB9, 0xFFFD, 0xEEE4, 0xFFFD, 0xFFFD, -/* 2F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2E1, 0xFFFD, 0xDEB9, 0xFFFD, -/* 2F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6F2, 0xFFFD, 0xDEF4, -/* 2F98 */ 0xFFFD, 0xDFDB, 0xFFFD, 0xDBD3, 0xFFFD, 0xFAE7, 0xD8E3, 0xF4C1, -/* 2FA0 */ 0xFFFD, 0xDDB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2F5, 0xFFFD, 0xFFFD, -/* 2FA8 */ 0xD4AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6F3, -/* 2FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDB8, 0xCFC5, -/* 2FB8 */ 0xDFDF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2BE, -/* 2FC0 */ 0xF6A1, 0xFFFD, 0xEBCB, 0xF1FC, 0xFFFD, 0xF3C7, 0xFFFD, 0xFFFD, -/* 2FC8 */ 0xE0EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDFC, 0xFFFD, -/* 2FD0 */ 0xFFFD, 0xE1DB, 0xEEE5, 0xFFFD, 0xDEF5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FD8 */ 0xFFFD, 0xFAD3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1CB, 0xFFFD, -/* 2FE0 */ 0xFFFD, 0xD0AF, 0xDDB9, 0xFFFD, 0xFFFD, 0xD1C3, 0xF5B1, 0xFFFD, -/* 2FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEAC6, 0xF0E1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6AC, 0xFFFD, -/* 2FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF5D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0EB, 0xFFFD, -/* 3008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDBA, 0xFFFD, 0xFFFD, -/* 3010 */ 0xFFFD, 0xF2BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3018 */ 0xFFFD, 0xF7C5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBA2, 0xF2F6, -/* 3020 */ 0xFFFD, 0xFFFD, 0xCABA, 0xF7F5, 0xFFFD, 0xCBE5, 0xFFFD, 0xFFFD, -/* 3028 */ 0xFFFD, 0xEEE6, 0xFFFD, 0xE0D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3030 */ 0xCEA5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6D8, -/* 3038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD4AF, 0xE9C9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3040 */ 0xFFFD, 0xD3CE, 0xF4C2, 0xF1A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3048 */ 0xFFFD, 0xEBB2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1A2, 0xEBB3, -/* 3050 */ 0xFFFD, 0xF0B4, 0xFFFD, 0xFFFD, 0xCBF4, 0xD4B0, 0xF3B2, 0xFBB7, -/* 3058 */ 0xF5EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEE7, 0xF4B2, -/* 3060 */ 0xF5ED, 0xFFFD, 0xCFF3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0E2, 0xFFFD, 0xFFFD, -/* 3070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEECE, 0xFFFD, 0xFFFD, 0xF1CC, 0xFFFD, -/* 3078 */ 0xFFFD, 0xE5B8, 0xD7F5, 0xE3F3, 0xCFE5, 0xCFC6, 0xFFFD, 0xFFFD, -/* 3080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3B3, -/* 3088 */ 0xE4D8, 0xCFF9, 0xCFDA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFACD, -/* 3090 */ 0xF5EE, 0xFFFD, 0xFFFD, 0xCABB, 0xFFFD, 0xFFFD, 0xE3DC, 0xFFFD, -/* 3098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCEF2, 0xFFFD, 0xD6D9, 0xFFFD, 0xFFFD, -/* 30A0 */ 0xFFFD, 0xEEB0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30A8 */ 0xFFFD, 0xFFFD, 0xF4E5, 0xD8C2, 0xDCD0, 0xCCEE, 0xFFFD, 0xFFFD, -/* 30B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD5E0, 0xF6CA, 0xFDCA, 0xD8D6, 0xF4CF, -/* 30B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6A6, 0xDCBE, -/* 30C0 */ 0xFFFD, 0xDBD4, 0xD7C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2FE, -/* 30C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF1CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30D0 */ 0xE2C3, 0xDCDE, 0xFFFD, 0xDCDF, 0xFFFD, 0xFFFD, 0xEFAD, 0xE6AB, -/* 30D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9DD, 0xEABF, 0xFFFD, 0xFFFD, -/* 30E0 */ 0xFFFD, 0xEFAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4D0, 0xCEF3, 0xE6AC, -/* 30E8 */ 0xFFFD, 0xCEDE, 0xFFFD, 0xFFFD, 0xD5F9, 0xE3F4, 0xCDD0, 0xFFFD, -/* 30F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5B8, 0xFFFD, 0xFFFD, -/* 30F8 */ 0xF7FD, 0xFFFD, 0xDCA9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEF6, -/* 3100 */ 0xFFFD, 0xDCAA, 0xF2E3, 0xE9B4, 0xD2DC, 0xE9E6, 0xFFFD, 0xFFFD, -/* 3108 */ 0xE3F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3110 */ 0xFFFD, 0xE7CA, 0xFFFD, 0xFFFD, 0xD0CE, 0xFFFD, 0xFFFD, 0xDAF7, -/* 3118 */ 0xCABC, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEE8, 0xDADE, 0xFFFD, 0xF2F7, -/* 3120 */ 0xFFFD, 0xFFFD, 0xE2FB, 0xFFFD, 0xCCA6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3128 */ 0xFFFD, 0xDABB, 0xFFFD, 0xEEE9, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5DA, -/* 3130 */ 0xFFFD, 0xFFFD, 0xF7DC, 0xE1EA, 0xCEC1, 0xD4B1, 0xFFFD, 0xFDB1, -/* 3138 */ 0xE6BD, 0xFFFD, 0xFBAD, 0xFFFD, 0xFFFD, 0xF8E7, 0xFFFD, 0xE1CE, -/* 3140 */ 0xFFFD, 0xF7E2, 0xF5EF, 0xCFC7, 0xFFFD, 0xFFFD, 0xD4B2, 0xCCEF, -/* 3148 */ 0xFFFD, 0xD4E8, 0xFFFD, 0xEECF, 0xF7D7, 0xFFFD, 0xFFFD, 0xE0A6, -/* 3150 */ 0xD6C1, 0xE1DC, 0xF0E3, 0xF1E4, 0xDCF1, 0xD6A7, 0xFFFD, 0xFFFD, -/* 3158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3160 */ 0xF4F5, 0xFFFD, 0xFFFD, 0xF1CE, 0xF2E4, 0xFFFD, 0xFFFD, 0xD0B0, -/* 3168 */ 0xFFFD, 0xFFFD, 0xECEF, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9BA, 0xFFFD, -/* 3170 */ 0xEBB5, 0xFFFD, 0xFFFD, 0xD4ED, 0xE2C4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3178 */ 0xFFFD, 0xE9E7, 0xFFFD, 0xFFFD, 0xEBB4, 0xEAA1, 0xFFFD, 0xF8BC, -/* 3180 */ 0xCEA6, 0xFFFD, 0xF9C6, 0xFCDA, 0xFFFD, 0xD4B3, 0xD3B9, 0xEADE, -/* 3188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9AB, 0xFFFD, 0xFFFD, 0xE1E1, 0xD3CF, -/* 3190 */ 0xF4F6, 0xFFFD, 0xEAC0, 0xE1CF, 0xFFFD, 0xCCBA, 0xFFFD, 0xFFFD, -/* 3198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEEEA, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0E4, -/* 31A0 */ 0xF3B4, 0xD4EE, 0xFFFD, 0xFFFD, 0xF2C0, 0xFFFD, 0xFFFD, 0xF1E5, -/* 31A8 */ 0xFFFD, 0xF4C3, 0xE0D4, 0xFFFD, 0xEBB6, 0xFFFD, 0xD7A1, 0xCBE8, -/* 31B0 */ 0xFFFD, 0xF9AD, 0xE9AD, 0xD8E4, 0xFAB3, 0xE2C5, 0xFCBD, 0xFFFD, -/* 31B8 */ 0xFFFD, 0xECC4, 0xD8B1, 0xFFFD, 0xDCAB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31C0 */ 0xFFFD, 0xD5A4, 0xFFFD, 0xEBE9, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8BB, -/* 31C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD8D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFBAE, 0xD1E1, 0xFFFD, 0xFFFD, -/* 31D8 */ 0xDBC0, 0xFFFD, 0xF5BE, 0xFFFD, 0xDEF7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31E0 */ 0xFFFD, 0xCAFB, 0xF7C6, 0xCFC8, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1D0, -/* 31E8 */ 0xFFFD, 0xFFFD, 0xEED0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEF4, 0xD5CD, 0xFFFD, 0xFFFD, -/* 3200 */ 0xCFDB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDBB, -/* 3208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEAC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9E8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4B4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3220 */ 0xFFFD, 0xE4C7, 0xF5DB, 0xFFFD, 0xFFFD, 0xFAC1, 0xFFFD, 0xFFFD, -/* 3228 */ 0xFFFD, 0xDEA9, 0xD4F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3230 */ 0xEFF7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3B3, 0xEBB7, 0xEFF8, -/* 3238 */ 0xF5DC, 0xEDCC, 0xDBD5, 0xF1CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1D0, -/* 3240 */ 0xF5B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9AE, -/* 3248 */ 0xD5AC, 0xFFFD, 0xE2C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFDA3, 0xFFFD, 0xFBE5, 0xDFAB, 0xE2F5, -/* 3258 */ 0xFFFD, 0xF6AD, 0xFFFD, 0xF5B3, 0xFFFD, 0xF0B5, 0xFFFD, 0xFFFD, -/* 3260 */ 0xFFFD, 0xFFFD, 0xE1A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5DD, 0xECA2, 0xEDFD, 0xFFFD, -/* 3270 */ 0xF5B4, 0xFBB8, 0xFFFD, 0xDBA3, 0xFFFD, 0xFFFD, 0xD6CA, 0xCBD9, -/* 3278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3280 */ 0xFFFD, 0xFFFD, 0xE5D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3288 */ 0xFFFD, 0xF3FA, 0xFFFD, 0xEBB8, 0xFFFD, 0xE0B7, 0xD7EC, 0xF1EC, -/* 3290 */ 0xE5AF, 0xD5E1, 0xD7ED, 0xD1D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3298 */ 0xFFFD, 0xE1F2, 0xEFF9, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDBC, 0xF6DC, -/* 32A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0E5, 0xFFFD, 0xFFFD, -/* 32A8 */ 0xFFFD, 0xF4C4, 0xFFFD, 0xFFFD, 0xE9E9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3FB, -/* 32B8 */ 0xD4EF, 0xFFFD, 0xFFFD, 0xCCA2, 0xF7FE, 0xDFBC, 0xFFFD, 0xFFFD, -/* 32C0 */ 0xFFFD, 0xFFFD, 0xEBCD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32C8 */ 0xFFFD, 0xD0B7, 0xD6C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32D0 */ 0xE8AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFAF, 0xCBA5, 0xFFFD, -/* 32D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCBE9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAE8, -/* 32E0 */ 0xCCC6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E7, 0xFFFD, 0xFFFD, 0xEAC7, -/* 32E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDBA4, 0xFFFD, 0xCFC9, 0xE2FC, 0xEFFA, -/* 32F0 */ 0xEBDE, 0xFFFD, 0xFFFD, 0xF5C8, 0xFFFD, 0xD4DE, 0xE0D5, 0xFFFD, -/* 32F8 */ 0xEFB0, 0xFFFD, 0xFFFD, 0xE2C7, 0xFFFD, 0xD9AF, 0xFFFD, 0xFFFD, -/* 3300 */ 0xFFFD, 0xF9E7, 0xE7E5, 0xFFFD, 0xFFFD, 0xCFCA, 0xE1D1, 0xFFFD, -/* 3308 */ 0xE2C8, 0xEFFB, 0xFFFD, 0xFFFD, 0xFAF9, 0xFFFD, 0xFFFD, 0xDCF2, -/* 3310 */ 0xE0A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8E8, 0xCBEA, -/* 3318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCBBC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD6E2, 0xF5DE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5DF, 0xFFFD, 0xEEB6, 0xFFFD, -/* 3330 */ 0xFFFD, 0xFFFD, 0xE2F6, 0xD3CA, 0xEFFC, 0xD1C4, 0xEFB1, 0xFFFD, -/* 3338 */ 0xD1C5, 0xFFFD, 0xD0DE, 0xFFFD, 0xD9E1, 0xFFFD, 0xFFFD, 0xE0B8, -/* 3340 */ 0xFFFD, 0xFFFD, 0xCDD1, 0xF3B9, 0xE7CC, 0xFFFD, 0xD6A8, 0xCEA7, -/* 3348 */ 0xFFFD, 0xD4B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3350 */ 0xE4C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3B4, -/* 3358 */ 0xEBB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBF5, -/* 3360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6DD, 0xFFFD, -/* 3368 */ 0xF1A3, 0xCCC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3370 */ 0xFFFD, 0xE9CA, 0xFFFD, 0xE1F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5E0, -/* 3378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3380 */ 0xFBAF, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBD1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3388 */ 0xFFFD, 0xFBE0, 0xF2E5, 0xFFFD, 0xFFFD, 0xECF0, 0xE9CB, 0xFFFD, -/* 3390 */ 0xFFFD, 0xCCF0, 0xFFFD, 0xFFFD, 0xD7AF, 0xE0D6, 0xFFFD, 0xFFFD, -/* 3398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEFB2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4D1, 0xFFFD, 0xFFFD, -/* 33A8 */ 0xF7A1, 0xCAFC, 0xCAFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCECE, 0xF3C8, 0xFFFD, 0xF3BA, 0xEDFE, -/* 33B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33C0 */ 0xDAA6, 0xFFFD, 0xFFFD, 0xE0EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33C8 */ 0xFFFD, 0xF8CD, 0xFFFD, 0xCBD2, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBCE, -/* 33D0 */ 0xFFFD, 0xF9D8, 0xF9D9, 0xCAE0, 0xDACA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33D8 */ 0xCBA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCAC8, 0xF9EE, 0xDBEC, 0xFFFD, 0xFFFD, -/* 33E8 */ 0xD0B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5EF, 0xFFFD, 0xFFFD, -/* 33F0 */ 0xFFFD, 0xE6F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE7A2, 0xE4D9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4E1, -/* 3408 */ 0xFFFD, 0xFFFD, 0xFCC4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9EF, 0xCFF4, 0xF7E6, 0xFFFD, -/* 3418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEBC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3420 */ 0xFFFD, 0xF4C5, 0xDCA3, 0xDDBD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3428 */ 0xF4C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3430 */ 0xFFFD, 0xF8A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8D6, 0xFFFD, 0xFFFD, -/* 3438 */ 0xFFFD, 0xDBC1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3440 */ 0xFFFD, 0xFFFD, 0xF0E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4B9, 0xF6ED, -/* 3448 */ 0xFFFD, 0xF9AE, 0xFFFD, 0xDDBE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3450 */ 0xFFFD, 0xFFFD, 0xD7B0, 0xD8E8, 0xCBBD, 0xFFFD, 0xFFFD, 0xF9DA, -/* 3458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3460 */ 0xFFFD, 0xFFFD, 0xF8CE, 0xF9F0, 0xE0ED, 0xE3B3, 0xF4B3, 0xFFFD, -/* 3468 */ 0xFFFD, 0xEAC2, 0xF2E6, 0xF0B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3470 */ 0xFFFD, 0xDBD6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBE4, -/* 3478 */ 0xFFFD, 0xFFFD, 0xF2E7, 0xFFFD, 0xD7D5, 0xD4B6, 0xF9E8, 0xD7C1, -/* 3480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9EA, 0xD7CC, 0xFFFD, 0xFFFD, -/* 3490 */ 0xFFFD, 0xD3E9, 0xE2C9, 0xFFFD, 0xFCDB, 0xCDAD, 0xFFFD, 0xFFFD, -/* 3498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCCB0, 0xEAA2, 0xFFFD, 0xFFFD, 0xE4F6, -/* 34A0 */ 0xD0C0, 0xFFFD, 0xF0B7, 0xEEA1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34A8 */ 0xFFFD, 0xFFFD, 0xD7F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2CA, 0xE2CB, -/* 34B0 */ 0xFFFD, 0xFACF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34B8 */ 0xEBDF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6CB, 0xFFFD, -/* 34C0 */ 0xFFFD, 0xFFFD, 0xF4B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDCD, -/* 34C8 */ 0xE4D2, 0xFFFD, 0xFFFD, 0xEAA9, 0xE4BA, 0xF3A2, 0xCDD2, 0xFFFD, -/* 34D0 */ 0xF6CB, 0xFFFD, 0xF1E6, 0xEDC1, 0xE8BC, 0xEED1, 0xFFFD, 0xFFFD, -/* 34D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0E7, 0xE2CC, 0xFFFD, 0xFFFD, -/* 34E0 */ 0xE4AA, 0xFFFD, 0xF5E1, 0xEDDA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34E8 */ 0xFFFD, 0xD7EE, 0xD1F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9EB, -/* 34F0 */ 0xE9EC, 0xE0E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAA7, 0xDDD4, -/* 34F8 */ 0xFFFD, 0xEAA3, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6C3, 0xD6F4, 0xFFFD, -/* 3500 */ 0xDADF, 0xFFFD, 0xEFB3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2CD, -/* 3508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFFD, 0xF2E8, 0xFFFD, -/* 3510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3518 */ 0xEFC5, 0xFFFD, 0xE7E7, 0xFFFD, 0xFFFD, 0xD7FD, 0xFFFD, 0xFFFD, -/* 3520 */ 0xE7CE, 0xFFFD, 0xFFFD, 0xDFDC, 0xFFFD, 0xF9C7, 0xFFFD, 0xFFFD, -/* 3528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9F6, 0xFFFD, -/* 3530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFAC, -/* 3538 */ 0xFFFD, 0xD6DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3540 */ 0xDCA4, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0B8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3548 */ 0xFFFD, 0xD5FA, 0xFFFD, 0xE4F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6C4, -/* 3550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3558 */ 0xF4EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFFE, 0xFFFD, 0xFFFD, -/* 3560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF0A1, 0xFFFD, 0xDEAA, 0xFFFD, 0xFFFD, -/* 3568 */ 0xDABC, 0xD8FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3570 */ 0xFAD4, 0xFFFD, 0xFFFD, 0xFFFD, 0xECE5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFCA8, 0xFFFD, 0xFFFD, 0xECE6, 0xFFFD, -/* 3580 */ 0xFFFD, 0xD8CB, 0xFBB9, 0xFFFD, 0xE4D3, 0xFFFD, 0xCDF9, 0xCFD3, -/* 3588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAEA, -/* 3590 */ 0xFFFD, 0xFFFD, 0xCFD4, 0xFFFD, 0xF8BD, 0xF4C7, 0xFFFD, 0xFFFD, -/* 3598 */ 0xFFFD, 0xFFFD, 0xEADF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35A0 */ 0xFFFD, 0xFFFD, 0xF9DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD4B7, 0xEBE5, 0xFFFD, 0xFFFD, 0xE1D2, -/* 35B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAA4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35B8 */ 0xFAC2, 0xFBE1, 0xFAED, 0xF0A2, 0xCCF1, 0xFFFD, 0xFAA3, 0xE2F7, -/* 35C0 */ 0xFFFD, 0xE2CE, 0xFFFD, 0xE9F5, 0xFFFD, 0xE1EB, 0xFFFD, 0xFFFD, -/* 35C8 */ 0xFFFD, 0xE7E8, 0xE8D7, 0xDAF8, 0xD4CB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35D0 */ 0xF7F6, 0xD6C5, 0xD4E9, 0xFFFD, 0xFFFD, 0xFAFA, 0xFFFD, 0xFFFD, -/* 35D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCF2, 0xF7DD, 0xFFFD, -/* 35E0 */ 0xDEBA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCEA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35F0 */ 0xFFFD, 0xF0B9, 0xE4FE, 0xE4C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35F8 */ 0xFFFD, 0xE4D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAC3, 0xFFFD, 0xEFB4, -/* 3600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD7BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3608 */ 0xFFFD, 0xFFFD, 0xFBE2, 0xFFFD, 0xCDD3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3610 */ 0xEFB5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFAE9, 0xF9A6, 0xFFFD, 0xFFFD, -/* 3618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFBD, 0xFFFD, 0xF7C7, 0xF8FD, -/* 3620 */ 0xFFFD, 0xFFFD, 0xF8FC, 0xDEAB, 0xDBE8, 0xFFFD, 0xFFFD, 0xE3DD, -/* 3628 */ 0xFFFD, 0xE1E2, 0xD1C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6D0, 0xEBE6, 0xDAF9, -/* 3638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECC7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEF8, 0xF8E9, 0xE3DE, 0xFFFD, -/* 3648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCEF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3650 */ 0xFFFD, 0xFAC3, 0xE5D7, 0xFFFD, 0xECC8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3658 */ 0xF3C9, 0xFFFD, 0xFFFD, 0xE4BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3660 */ 0xE6AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFB6, 0xFFFD, -/* 3668 */ 0xDCBF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3670 */ 0xCEBD, 0xD8C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0CF, 0xFFFD, 0xCFFA, -/* 3678 */ 0xF3CA, 0xE0D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1C7, 0xE9AE, 0xFFFD, -/* 3680 */ 0xE8BD, 0xFFFD, 0xFFFD, 0xFAC4, 0xE2CF, 0xFFFD, 0xFFFD, 0xFAC5, -/* 3688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF9B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDCE0, 0xFFFD, 0xFFFD, 0xFBB0, 0xFFFD, -/* 3698 */ 0xFFFD, 0xFFFD, 0xD8A9, 0xE5DF, 0xF9A7, 0xFFFD, 0xFFFD, 0xF6EE, -/* 36A0 */ 0xFFFD, 0xF6CC, 0xE2F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECF1, -/* 36A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAE0, -/* 36B0 */ 0xF1D2, 0xD2CC, 0xCFCB, 0xFFFD, 0xFFFD, 0xCABD, 0xFFFD, 0xFFFD, -/* 36B8 */ 0xFFFD, 0xDDBF, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6EF, 0xFFFD, 0xDEF9, -/* 36C0 */ 0xFAB4, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5AD, 0xF1E7, 0xFFFD, 0xDEBE, -/* 36C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCC0, 0xFFFD, -/* 36D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1C8, 0xD1C9, 0xFFFD, 0xFFFD, -/* 36D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8BE, -/* 36E0 */ 0xCBF6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4F9, 0xFFFD, 0xFFFD, -/* 36E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF5E2, 0xE1D3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8E9, 0xFFFD, 0xFFFD, -/* 36F8 */ 0xF8FE, 0xFFFD, 0xCFCC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3700 */ 0xFFFD, 0xFFFD, 0xFDA4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3708 */ 0xFFFD, 0xFFFD, 0xCEF6, 0xFFFD, 0xFAD0, 0xFFFD, 0xFFFD, 0xCCF3, -/* 3710 */ 0xE6BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6AE, 0xFFFD, 0xFFFD, 0xD5F0, -/* 3718 */ 0xFFFD, 0xFFFD, 0xD1CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCBE, 0xD5F1, -/* 3720 */ 0xE2D0, 0xF4F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDD4, 0xE7A3, 0xFFFD, -/* 3728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBA5, -/* 3730 */ 0xD7A2, 0xFFFD, 0xFFFD, 0xF7E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3738 */ 0xFFFD, 0xFFFD, 0xEAA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0A1, 0xFFFD, 0xFFFD, -/* 3748 */ 0xFFFD, 0xFFFD, 0xCEDA, 0xFBEB, 0xDBA6, 0xDBDE, 0xD8E5, 0xFFFD, -/* 3750 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3758 */ 0xEAE0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8AA, 0xFFFD, 0xFFFD, -/* 3760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5E0, 0xEFC6, 0xFFFD, 0xFFFD, 0xF8EA, -/* 3768 */ 0xCEF7, 0xFFFD, 0xFFFD, 0xE0D8, 0xCDE6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3770 */ 0xCCF4, 0xF5E3, 0xFFFD, 0xFFFD, 0xE4CA, 0xFFFD, 0xDCE1, 0xFFFD, -/* 3778 */ 0xFFFD, 0xF9C8, 0xE8A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD8C4, 0xCBBE, 0xFFFD, 0xDCAE, 0xF0E8, -/* 3788 */ 0xFFFD, 0xDDC0, 0xFFFD, 0xCFCD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCF3, 0xD9B0, 0xFFFD, -/* 3798 */ 0xE6E9, 0xEAC4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4EC, 0xFFFD, 0xE4E5, 0xE4BD, -/* 37A8 */ 0xFFFD, 0xFFFD, 0xCDDC, 0xD9F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDDF, 0xFFFD, -/* 37B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDCE, 0xD9D0, 0xFFFD, 0xFFFD, -/* 37C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37C8 */ 0xF9CD, 0xF6AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFDD3, -/* 37D0 */ 0xEBED, 0xD6DC, 0xE5A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5B6, 0xD6DD, -/* 37D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF9E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7A4, -/* 37E0 */ 0xFFFD, 0xD6E3, 0xD1CB, 0xD6E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5F2, -/* 37E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEFA, 0xFFFD, 0xD7F8, -/* 37F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8EA, 0xCFD5, 0xD8FD, -/* 37F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8AB, 0xFFFD, 0xFFFD, -/* 3800 */ 0xFDCB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFCDC, 0xFFFD, 0xFFFD, -/* 3808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0A8, -/* 3810 */ 0xD5F3, 0xFFFD, 0xFFFD, 0xFDD9, 0xFFFD, 0xFFFD, 0xCCA3, 0xFFFD, -/* 3818 */ 0xFFFD, 0xFFFD, 0xD9F9, 0xFFFD, 0xFFFD, 0xD3EA, 0xF5F5, 0xFFFD, -/* 3820 */ 0xEFC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3828 */ 0xFFFD, 0xFFFD, 0xD3DA, 0xE8A8, 0xDCAF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3830 */ 0xFFFD, 0xFFFD, 0xF0A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDD5, -/* 3838 */ 0xF0BA, 0xEEB1, 0xFFFD, 0xFFFD, 0xEEB2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3840 */ 0xF6CD, 0xEED2, 0xFFFD, 0xD6C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3848 */ 0xFFFD, 0xE0E5, 0xFFFD, 0xFFFD, 0xF3BB, 0xFFFD, 0xE5E1, 0xFFFD, -/* 3850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3858 */ 0xFFFD, 0xE4CB, 0xD7A3, 0xFFFD, 0xFFFD, 0xDBC2, 0xFFFD, 0xFFFD, -/* 3860 */ 0xFFFD, 0xFFFD, 0xCAFE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3868 */ 0xFFFD, 0xCFCF, 0xB0A1, 0xB0A2, 0x8141, 0x8142, 0xB0A3, 0x8143, -/* 3870 */ 0x8144, 0xB0A4, 0xB0A5, 0xB0A6, 0xB0A7, 0x8145, 0x8146, 0x8147, -/* 3878 */ 0x8148, 0x8149, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3880 */ 0xFFFD, 0xFFFD, 0x814A, 0xB0B0, 0xB0B1, 0xB0B2, 0xB0B3, 0xB0B4, -/* 3888 */ 0x814B, 0x814C, 0xB0B5, 0x814D, 0x814E, 0x814F, 0xB0B6, 0xFFFD, -/* 3890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0B7, 0xB0B8, -/* 3898 */ 0x8157, 0xB0B9, 0xB0BA, 0xB0BB, 0x8158, 0x8159, 0x815A, 0x8161, -/* 38A0 */ 0x8162, 0x8163, 0xB0BC, 0xB0BD, 0x8164, 0x8165, 0xB0BE, 0x8166, -/* 38A8 */ 0x8167, 0x8168, 0xB0BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0C0, 0x8173, 0xB0C1, -/* 38B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0C2, 0x817A, -/* 38C0 */ 0x8181, 0x8182, 0xB0C3, 0x8183, 0x8184, 0x8185, 0xB0C4, 0xB0C5, -/* 38C8 */ 0xB0C6, 0x8199, 0x819A, 0xB0C7, 0x819B, 0x819C, 0xB0C8, 0xB0C9, -/* 38D0 */ 0x819D, 0xB0CA, 0x819E, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0xB0CB, -/* 38D8 */ 0xB0CC, 0x81A3, 0xB0CD, 0xB0CE, 0xB0CF, 0xB0D0, 0x81A4, 0x81A5, -/* 38E0 */ 0xB0D1, 0xB0D2, 0xB0D3, 0xB0D4, 0x81A6, 0x81A7, 0x81A8, 0xB0D5, -/* 38E8 */ 0x81A9, 0x81AA, 0x81AB, 0xB0D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB0D7, 0xB0D8, 0x81B3, 0xB0D9, 0xB0DA, -/* 38F8 */ 0xB0DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0DC, -/* 3900 */ 0xB0DD, 0xB0DE, 0x81BA, 0xB0DF, 0x81BB, 0x81BC, 0xB0E0, 0xB0E1, -/* 3908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0E2, -/* 3910 */ 0xB0E3, 0x81C4, 0xB0E4, 0xB0E5, 0xB0E6, 0x81C5, 0x81C6, 0x81C7, -/* 3918 */ 0xB0E7, 0x81C8, 0x81C9, 0xB0E8, 0x81CA, 0x81CB, 0x81CC, 0xB0E9, -/* 3920 */ 0x81CD, 0x81CE, 0x81CF, 0xB0EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3928 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0EB, 0x81D8, 0xB0EC, 0xFFFD, -/* 3930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0ED, -/* 3938 */ 0xB0EE, 0x81E1, 0x81E2, 0xB0EF, 0x81E3, 0x81E4, 0xB0F0, 0xB0F1, -/* 3940 */ 0x81E5, 0xB0F2, 0x81E6, 0xB0F3, 0x81E7, 0x81E8, 0xB0F4, 0xB0F5, -/* 3948 */ 0xB0F6, 0x81E9, 0xB0F7, 0x81EA, 0xB0F8, 0xB0F9, 0x81EB, 0x81EC, -/* 3950 */ 0x81ED, 0x81EE, 0x81EF, 0xB0FA, 0xB0FB, 0x81F0, 0x81F1, 0xB0FC, -/* 3958 */ 0x81F2, 0x81F3, 0x81F4, 0xB0FD, 0x81F5, 0xB0FE, 0x81F6, 0x81F7, -/* 3960 */ 0x81F8, 0x81F9, 0x81FA, 0xB1A1, 0xB1A2, 0x81FB, 0xB1A3, 0x81FC, -/* 3968 */ 0xB1A4, 0x81FD, 0x81FE, 0x8241, 0x8242, 0x8243, 0x8244, 0xB1A5, -/* 3970 */ 0x8245, 0x8246, 0x8247, 0xB1A6, 0x8248, 0x8249, 0x824A, 0xB1A7, -/* 3978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3980 */ 0xB1A8, 0x8253, 0x8254, 0xB1A9, 0xB1AA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB1AB, 0xB1AC, 0x8261, 0x8262, 0xB1AD, -/* 3990 */ 0x8263, 0x8264, 0x8265, 0xB1AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB1AF, 0xB1B0, 0x826D, 0xB1B1, 0x826E, -/* 39A0 */ 0xB1B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB1B3, -/* 39A8 */ 0x8275, 0x8276, 0x8277, 0xB1B4, 0x8278, 0x8279, 0x827A, 0xB1B5, -/* 39B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39B8 */ 0xB1B6, 0x8289, 0xB1B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB1B8, 0xB1B9, 0x8292, 0x8293, 0xB1BA, -/* 39C8 */ 0x8294, 0x8295, 0xB1BB, 0xB1BC, 0xB1BD, 0xB1BE, 0x8296, 0x8297, -/* 39D0 */ 0x8298, 0x8299, 0xB1BF, 0xB1C0, 0xB1C1, 0x829A, 0xB1C2, 0x829B, -/* 39D8 */ 0xB1C3, 0xB1C4, 0x829C, 0x829D, 0x829E, 0x829F, 0x82A0, 0xB1C5, -/* 39E0 */ 0xB1C6, 0x82A1, 0x82A2, 0xB1C7, 0x82A3, 0x82A4, 0x82A5, 0xB1C8, -/* 39E8 */ 0xB1C9, 0xB1CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39F0 */ 0xB1CB, 0xB1CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39F8 */ 0xFFFD, 0xFFFD, 0xB1CD, 0xB1CE, 0x82D1, 0x82D2, 0xB1CF, 0x82D3, -/* 3A00 */ 0x82D4, 0x82D5, 0xB1D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A08 */ 0xFFFD, 0xFFFD, 0xB1D1, 0xB1D2, 0x82DD, 0xB1D3, 0xFFFD, 0xFFFD, -/* 3A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB1D4, 0x82E6, -/* 3A18 */ 0x82E7, 0x82E8, 0xB1D5, 0x82E9, 0x82EA, 0x82EB, 0xB1D6, 0xB1D7, -/* 3A20 */ 0xB1D8, 0x8341, 0x8342, 0xB1D9, 0x8343, 0x8344, 0xB1DA, 0xB1DB, -/* 3A28 */ 0xB1DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB1DD, -/* 3A30 */ 0xB1DE, 0x834B, 0xB1DF, 0x834C, 0xB1E0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB1E1, 0xB1E2, 0xB1E3, 0x8374, 0x8375, -/* 3A40 */ 0xB1E4, 0x8376, 0x8377, 0xB1E5, 0xB1E6, 0x8378, 0xB1E7, 0x8379, -/* 3A48 */ 0x837A, 0x8381, 0x8382, 0x8383, 0xB1E8, 0xB1E9, 0x8384, 0xB1EA, -/* 3A50 */ 0x8385, 0xB1EB, 0xB1EC, 0x8386, 0x8387, 0x8388, 0xB1ED, 0x8389, -/* 3A58 */ 0xB1EE, 0xB1EF, 0xB1F0, 0x838A, 0xB1F1, 0x838B, 0x838C, 0x838D, -/* 3A60 */ 0xB1F2, 0x838E, 0xB1F3, 0x838F, 0x8390, 0x8391, 0x8392, 0x8393, -/* 3A68 */ 0xB1F4, 0xB1F5, 0x8394, 0xB1F6, 0xB1F7, 0xB1F8, 0x8395, 0x8396, -/* 3A70 */ 0x8397, 0xB1F9, 0x8398, 0x8399, 0xB1FA, 0xB1FB, 0x839A, 0x839B, -/* 3A78 */ 0xB1FC, 0x839C, 0x839D, 0x839E, 0xB1FD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB1FE, 0xB2A1, 0x83A6, 0xB2A2, -/* 3A88 */ 0xB2A3, 0xB2A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A90 */ 0xB2A5, 0xB2A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A98 */ 0xB2A7, 0xB2A8, 0xB2A9, 0xB2AA, 0x83E2, 0xB2AB, 0x83E3, 0x83E4, -/* 3AA0 */ 0x83E5, 0xB2AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AA8 */ 0xFFFD, 0xB2AD, 0xB2AE, 0x83ED, 0xB2AF, 0xB2B0, 0xB2B1, 0xFFFD, -/* 3AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2B2, 0xB2B3, 0x83F4, -/* 3AB8 */ 0x83F5, 0xB2B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8441, 0x8442, 0xB2B5, 0x8443, 0x8444, -/* 3AC8 */ 0xB2B6, 0x8445, 0xB2B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AD0 */ 0xFFFD, 0xB2B8, 0x844C, 0x844D, 0x844E, 0xB2B9, 0x844F, 0x8450, -/* 3AD8 */ 0x8451, 0xB2BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8461, 0xB2BB, 0xB2BC, 0x8462, 0x8463, -/* 3AE8 */ 0x8464, 0x8465, 0xB2BD, 0x8466, 0x8467, 0xB2BE, 0xB2BF, 0xB2C0, -/* 3AF0 */ 0x8489, 0x848A, 0xB2C1, 0x848B, 0xB2C2, 0x848C, 0xB2C3, 0xFFFD, -/* 3AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2C4, 0xB2C5, -/* 3B00 */ 0x8494, 0xB2C6, 0x8495, 0xB2C7, 0xB2C8, 0xB2C9, 0x8496, 0x8497, -/* 3B08 */ 0x8498, 0x8499, 0xB2CA, 0xB2CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B10 */ 0xFFFD, 0xFFFD, 0xB2CC, 0xB2CD, 0xB2CE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB2CF, 0xB2D0, 0xB2D1, 0xFFFD, 0xFFFD, -/* 3B20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2D2, 0x84CA, 0x84CB, 0x84CC, -/* 3B28 */ 0xB2D3, 0x84CD, 0x84CE, 0x84CF, 0xB2D4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2D5, 0xB2D6, 0x84D7, 0x84D8, -/* 3B38 */ 0x84D9, 0xB2D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B40 */ 0xB2D8, 0xB2D9, 0xB2DA, 0x84FB, 0x84FC, 0xB2DB, 0x84FD, 0x84FE, -/* 3B48 */ 0x8541, 0xB2DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B50 */ 0xB2DD, 0xB2DE, 0xB2DF, 0x8548, 0xB2E0, 0x8549, 0xB2E1, 0xB2E2, -/* 3B58 */ 0x854A, 0x854B, 0x854C, 0x854D, 0x854E, 0xB2E3, 0xFFFD, 0xFFFD, -/* 3B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2E4, 0x8556, 0x8557, -/* 3B68 */ 0x8558, 0x8559, 0x855A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B70 */ 0xFFFD, 0xB2E5, 0xB2E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B78 */ 0xFFFD, 0xB2E7, 0xB2E8, 0x856D, 0x856E, 0xB2E9, 0x856F, 0x8570, -/* 3B80 */ 0x8571, 0xB2EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B88 */ 0xFFFD, 0xB2EB, 0xB2EC, 0x8579, 0x857A, 0xB2ED, 0xFFFD, 0xFFFD, -/* 3B90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2EE, 0x8588, 0x8589, -/* 3B98 */ 0x858A, 0xB2EF, 0x858B, 0x858C, 0x858D, 0xB2F0, 0xFFFD, 0xFFFD, -/* 3BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2F1, 0xB2F2, 0xFFFD, -/* 3BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BB0 */ 0xFFFD, 0xB2F3, 0xB2F4, 0xB2F5, 0x85BA, 0x85BB, 0xB2F6, 0x85BC, -/* 3BB8 */ 0xB2F7, 0x85BD, 0xB2F8, 0x85BE, 0xB2F9, 0x85BF, 0x85C0, 0x85C1, -/* 3BC0 */ 0x85C2, 0xB2FA, 0xB2FB, 0xB2FC, 0x85C3, 0xB2FD, 0x85C4, 0xB2FE, -/* 3BC8 */ 0x85C5, 0x85C6, 0x85C7, 0xB3A1, 0xB3A2, 0xB3A3, 0x85E6, 0x85E7, -/* 3BD0 */ 0xB3A4, 0x85E8, 0x85E9, 0x85EA, 0xB3A5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3A6, 0xB3A7, 0x85F2, 0xB3A8, -/* 3BE0 */ 0x85F3, 0xB3A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BE8 */ 0xB3AA, 0xB3AB, 0xB3AC, 0x85FA, 0xB3AD, 0x85FB, 0x85FC, 0xB3AE, -/* 3BF0 */ 0xB3AF, 0xB3B0, 0xB3B1, 0x85FD, 0x85FE, 0x8641, 0x8642, 0x8643, -/* 3BF8 */ 0xB3B2, 0xB3B3, 0x8644, 0xB3B4, 0xB3B5, 0xB3B6, 0xB3B7, 0xB3B8, -/* 3C00 */ 0x8645, 0xB3B9, 0x8646, 0xB3BA, 0xB3BB, 0xB3BC, 0x8647, 0x8648, -/* 3C08 */ 0xB3BD, 0x8649, 0x864A, 0x864B, 0xB3BE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3BF, 0xB3C0, 0x8653, 0xB3C1, -/* 3C18 */ 0xB3C2, 0xB3C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C20 */ 0xB3C4, 0xB3C5, 0x865A, 0x8661, 0xB3C6, 0x8662, 0x8663, 0x8664, -/* 3C28 */ 0xB3C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C30 */ 0xB3C8, 0x866C, 0x866D, 0x866E, 0x866F, 0xB3C9, 0xB3CA, 0xB3CB, -/* 3C38 */ 0x8698, 0xB3CC, 0xB3CD, 0x8699, 0x869A, 0x869B, 0xB3CE, 0x869C, -/* 3C40 */ 0xB3CF, 0xB3D0, 0x869D, 0x869E, 0x869F, 0x86A0, 0xB3D1, 0xB3D2, -/* 3C48 */ 0x86A1, 0xB3D3, 0xB3D4, 0xB3D5, 0x86A2, 0x86A3, 0x86A4, 0x86A5, -/* 3C50 */ 0x86A6, 0xB3D6, 0xB3D7, 0xB3D8, 0x86A7, 0x86A8, 0xB3D9, 0x86A9, -/* 3C58 */ 0x86AA, 0x86AB, 0xB3DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C60 */ 0xFFFD, 0xFFFD, 0xB3DB, 0xB3DC, 0x86B3, 0xB3DD, 0xB3DE, 0xB3DF, -/* 3C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3E0, 0xB3E1, -/* 3C70 */ 0x86BA, 0x86BB, 0xB3E2, 0x86BC, 0x86BD, 0x86BE, 0xB3E3, 0xFFFD, -/* 3C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3E4, 0xB3E5, -/* 3C80 */ 0x86C6, 0x86C7, 0xB3E6, 0xB3E7, 0x86C8, 0x86C9, 0xB3E8, 0x86CA, -/* 3C88 */ 0x86CB, 0x86CC, 0xB3E9, 0x86CD, 0x86CE, 0x86CF, 0xB3EA, 0xB3EB, -/* 3C90 */ 0xB3EC, 0x86E7, 0x86E8, 0xB3ED, 0x86E9, 0x86EA, 0x86EB, 0xB3EE, -/* 3C98 */ 0x86EC, 0xB3EF, 0x86ED, 0x86EE, 0x86EF, 0x86F0, 0x86F1, 0xB3F0, -/* 3CA0 */ 0xB3F1, 0x86F2, 0xB3F2, 0x86F3, 0xB3F3, 0x86F4, 0x86F5, 0x86F6, -/* 3CA8 */ 0x86F7, 0xB3F4, 0xB3F5, 0xB3F6, 0x86F8, 0x86F9, 0x86FA, 0xB3F7, -/* 3CB0 */ 0x86FB, 0x86FC, 0x86FD, 0xB3F8, 0x86FE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3F9, -/* 3CC0 */ 0xB3FA, 0x8774, 0x8775, 0x8776, 0xB3FB, 0x8777, 0x8778, 0x8779, -/* 3CC8 */ 0xB3FC, 0x877A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CD0 */ 0xB3FD, 0xB3FE, 0x8787, 0xB4A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4A2, 0xB4A3, 0x8790, 0x8791, -/* 3CE0 */ 0xB4A4, 0x8792, 0x8793, 0x8794, 0xB4A5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4A6, 0x879D, 0xB4A7, -/* 3CF0 */ 0x879E, 0xB4A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CF8 */ 0xB4A9, 0xB4AA, 0x87A5, 0x87A6, 0xB4AB, 0x87A7, 0x87A8, 0xB4AC, -/* 3D00 */ 0xB4AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D08 */ 0xB4AE, 0xB4AF, 0x87B0, 0xB4B0, 0x87B1, 0xB4B1, 0xFFFD, 0xFFFD, -/* 3D10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4B2, 0xB4B3, 0xFFFD, 0xFFFD, -/* 3D18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4B4, 0xB4B5, 0x87ED, -/* 3D20 */ 0x87EE, 0x87EF, 0xB4B6, 0x87F0, 0x87F1, 0x87F2, 0xB4B7, 0xFFFD, -/* 3D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4B8, 0xB4B9, -/* 3D30 */ 0x87FA, 0x87FB, 0x87FC, 0x87FD, 0x87FE, 0x8841, 0x8842, 0x8843, -/* 3D38 */ 0x8844, 0x8845, 0xB4BA, 0xB4BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D40 */ 0xFFFD, 0xFFFD, 0xB4BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D48 */ 0xFFFD, 0xFFFD, 0xB4BD, 0xB4BE, 0x8853, 0x8854, 0x8855, 0xB4BF, -/* 3D50 */ 0x8856, 0x8857, 0x8858, 0x8859, 0x885A, 0x8861, 0xB4C0, 0xB4C1, -/* 3D58 */ 0x8862, 0x8863, 0xB4C2, 0x8864, 0x8865, 0x8866, 0xB4C3, 0xB4C4, -/* 3D60 */ 0xB4C5, 0x8867, 0x8868, 0x8869, 0x886A, 0x886B, 0xB4C6, 0xB4C7, -/* 3D68 */ 0x886C, 0xB4C8, 0x886D, 0xB4C9, 0xB4CA, 0x886E, 0x886F, 0x8870, -/* 3D70 */ 0xB4CB, 0x8871, 0xB4CC, 0x8872, 0x8873, 0x8874, 0xB4CD, 0x8875, -/* 3D78 */ 0x8876, 0x8877, 0xB4CE, 0x8878, 0x8879, 0x887A, 0xB4CF, 0xB4D0, -/* 3D80 */ 0x8891, 0x8892, 0xB4D1, 0x8893, 0x8894, 0x8895, 0xB4D2, 0x8896, -/* 3D88 */ 0xB4D3, 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, 0xB4D4, 0xB4D5, -/* 3D90 */ 0x889C, 0xB4D6, 0x889D, 0xB4D7, 0x889E, 0x889F, 0x88A0, 0x88A1, -/* 3D98 */ 0xB4D8, 0x88A2, 0xB4D9, 0xB4DA, 0xB4DB, 0x88A3, 0xB4DC, 0x88A4, -/* 3DA0 */ 0x88A5, 0xB4DD, 0xB4DE, 0xB4DF, 0xB4E0, 0xB4E1, 0x88A6, 0x88A7, -/* 3DA8 */ 0x88A8, 0xB4E2, 0xB4E3, 0xB4E4, 0x88A9, 0xB4E5, 0xB4E6, 0xB4E7, -/* 3DB0 */ 0xB4E8, 0xB4E9, 0x88AA, 0x88AB, 0x88AC, 0xB4EA, 0xB4EB, 0xB4EC, -/* 3DB8 */ 0x88AD, 0x88AE, 0xB4ED, 0x88AF, 0x88B0, 0x88B1, 0xB4EE, 0xFFFD, -/* 3DC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4EF, 0xB4F0, -/* 3DC8 */ 0x88B9, 0xB4F1, 0xB4F2, 0xB4F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DD0 */ 0xFFFD, 0xFFFD, 0xB4F4, 0xB4F5, 0xB4F6, 0xB4F7, 0x88F7, 0xB4F8, -/* 3DD8 */ 0x88F8, 0x88F9, 0xB4F9, 0xB4FA, 0x88FA, 0xB4FB, 0xB4FC, 0x88FB, -/* 3DE0 */ 0x88FC, 0x88FD, 0x88FE, 0xB4FD, 0xB4FE, 0x8941, 0xB5A1, 0x8942, -/* 3DE8 */ 0xB5A2, 0x8943, 0xB5A3, 0x8944, 0x8945, 0xB5A4, 0x8946, 0xB5A5, -/* 3DF0 */ 0xB5A6, 0x8947, 0x8948, 0xB5A7, 0x8949, 0x894A, 0x894B, 0xB5A8, -/* 3DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5A9, -/* 3E00 */ 0xB5AA, 0x8953, 0xB5AB, 0xB5AC, 0xB5AD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB5AE, 0x895A, 0x8961, 0x8962, 0xB5AF, -/* 3E10 */ 0x8963, 0x8964, 0x8965, 0xB5B0, 0xB5B1, 0xB5B2, 0xFFFD, 0xFFFD, -/* 3E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5B3, 0x8977, 0x8978, 0x8979, -/* 3E20 */ 0xB5B4, 0x897A, 0xB5B5, 0xB5B6, 0x8997, 0x8998, 0xB5B7, 0x8999, -/* 3E28 */ 0x899A, 0xB5B8, 0xB5B9, 0x899B, 0xB5BA, 0x899C, 0xB5BB, 0x899D, -/* 3E30 */ 0x899E, 0x899F, 0xB5BC, 0xB5BD, 0x89A0, 0xB5BE, 0x89A1, 0xB5BF, -/* 3E38 */ 0x89A2, 0xB5C0, 0x89A3, 0xB5C1, 0x89A4, 0x89A5, 0xB5C2, 0x89A6, -/* 3E40 */ 0x89A7, 0x89A8, 0xB5C3, 0x89A9, 0x89AA, 0x89AB, 0xB5C4, 0xB5C6, -/* 3E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5C7, -/* 3E50 */ 0x89D9, 0x89DA, 0x89DB, 0xB5C8, 0x89DC, 0x89DD, 0x89DE, 0xB5C9, -/* 3E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5CA, -/* 3E60 */ 0xB5CB, 0x89E6, 0xB5CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB5CD, 0xB5CE, 0xB5CF, 0x8A4C, 0x8A4D, -/* 3E70 */ 0xB5D0, 0x8A4E, 0x8A4F, 0x8A50, 0xB5D1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5D2, 0xB5D3, 0x8A58, 0xB5D4, -/* 3E80 */ 0x8A59, 0xB5D5, 0x8A5A, 0x8A61, 0x8A62, 0x8A63, 0x8A64, 0x8A65, -/* 3E88 */ 0xB5D6, 0xB5D7, 0x8A79, 0x8A7A, 0x8A81, 0x8A82, 0x8A83, 0x8A84, -/* 3E90 */ 0x8A85, 0xB5D8, 0xB5D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E98 */ 0xFFFD, 0xB5DA, 0x8AA0, 0x8AA1, 0x8AA2, 0xB5DB, 0x8AA3, 0x8AA4, -/* 3EA0 */ 0x8AA5, 0xB5DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EA8 */ 0xFFFD, 0xFFFD, 0xB5DD, 0x8AAE, 0xB5DE, 0x8AAF, 0xB5DF, 0xFFFD, -/* 3EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5E0, 0x8AB6, 0x8AB7, -/* 3EB8 */ 0x8AB8, 0xB5E1, 0x8AB9, 0x8ABA, 0x8ABB, 0xB5E2, 0xFFFD, 0xFFFD, -/* 3EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5E3, 0x8AC3, 0x8AC4, -/* 3EC8 */ 0x8AC5, 0x8AC6, 0xB5E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3ED0 */ 0xFFFD, 0xB5E5, 0xB5E6, 0x8ACD, 0x8ACE, 0xB5E7, 0x8ACF, 0x8AD0, -/* 3ED8 */ 0xB5E8, 0xB5E9, 0x8AD1, 0xB5EA, 0x8AD2, 0x8AD3, 0x8AD4, 0x8AD5, -/* 3EE0 */ 0x8AD6, 0xB5EB, 0xB5EC, 0x8AD7, 0xB5ED, 0x8AD8, 0xB5EE, 0xFFFD, -/* 3EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5EF, 0xB5F0, 0xB5F1, -/* 3EF0 */ 0x8AFA, 0x8AFB, 0xB5F2, 0x8AFC, 0x8AFD, 0xB5F3, 0xB5F4, 0x8AFE, -/* 3EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5F5, 0xB5F6, -/* 3F00 */ 0x8B47, 0xB5F7, 0xB5F8, 0xB5F9, 0xB5FA, 0x8B48, 0x8B49, 0x8B4A, -/* 3F08 */ 0x8B4B, 0x8B4C, 0xB5FB, 0xB5FC, 0x8B4D, 0x8B4E, 0xB5FD, 0x8B4F, -/* 3F10 */ 0x8B50, 0x8B51, 0xB5FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F18 */ 0xFFFD, 0xFFFD, 0xB6A1, 0xB6A2, 0x8B59, 0xB6A3, 0xB6A4, 0xB6A5, -/* 3F20 */ 0x8B5A, 0x8B61, 0x8B62, 0x8B63, 0x8B64, 0xB6A6, 0xB6A7, 0xB6A8, -/* 3F28 */ 0x8B65, 0x8B66, 0xB6A9, 0x8B67, 0x8B68, 0x8B69, 0xB6AA, 0xFFFD, -/* 3F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6AB, 0xB6AC, -/* 3F38 */ 0x8B71, 0xB6AD, 0xB6AE, 0xB6AF, 0xB6B0, 0xB6B1, 0x8BB6, 0x8BB7, -/* 3F40 */ 0xB6B2, 0x8BB8, 0x8BB9, 0x8BBA, 0xB6B3, 0x8BBB, 0xB6B4, 0xB6B5, -/* 3F48 */ 0x8BBC, 0x8BBD, 0x8BBE, 0x8BBF, 0xB6B6, 0xB6B7, 0x8BC0, 0xB6B8, -/* 3F50 */ 0xB6B9, 0xB6BA, 0x8BC1, 0x8BC2, 0x8BC3, 0x8BC4, 0x8BC5, 0xB6BB, -/* 3F58 */ 0xB6BC, 0xB6BD, 0x8BC6, 0x8BC7, 0xB6BE, 0x8BC8, 0x8BC9, 0x8BCA, -/* 3F60 */ 0xB6BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F68 */ 0xB6C0, 0xB6C1, 0x8BD2, 0xB6C2, 0xB6C3, 0xB6C4, 0xFFFD, 0xFFFD, -/* 3F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6C5, 0xB6C7, 0xB6C8, 0x8C51, -/* 3F78 */ 0x8C52, 0xB6C9, 0x8C53, 0x8C54, 0x8C55, 0xB6CA, 0x8C56, 0x8C57, -/* 3F80 */ 0x8C58, 0x8C59, 0x8C5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F88 */ 0xFFFD, 0xFFFD, 0xB6CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F90 */ 0xFFFD, 0xB6CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F98 */ 0xFFFD, 0xB6CD, 0xB6CF, 0x8CA9, 0x8CAA, 0x8CAB, 0xB6D0, 0xB6D1, -/* 3FA0 */ 0xB6D2, 0x8CDF, 0x8CE0, 0xB6D3, 0x8CE1, 0x8CE2, 0x8CE3, 0xB6D4, -/* 3FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6D5, 0xB6D6, -/* 3FB0 */ 0x8CEA, 0x8CEB, 0x8CEC, 0x8CED, 0xB6D7, 0xB6D9, 0x8D73, 0x8D74, -/* 3FB8 */ 0x8D75, 0xB6DA, 0x8D76, 0x8D77, 0x8D78, 0xB6DB, 0x8D79, 0x8D7A, -/* 3FC0 */ 0x8D81, 0x8D82, 0x8D83, 0x8D84, 0x8D85, 0xB6DC, 0xB6DD, 0x8D86, -/* 3FC8 */ 0x8D87, 0x8D88, 0xB6DE, 0xB6DF, 0xB6E0, 0x8DAB, 0x8DAC, 0xB6E1, -/* 3FD0 */ 0x8DAD, 0x8DAE, 0xB6E2, 0xB6E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB6E4, 0xB6E5, 0x8DB6, 0xB6E6, 0xFFFD, -/* 3FE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6E7, -/* 3FE8 */ 0x8DBF, 0x8DC0, 0x8DC1, 0xB6E8, 0x8DC2, 0x8DC3, 0x8DC4, 0xB6E9, -/* 3FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6EA, -/* 3FF8 */ 0xB6EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB6EC, 0x8DD6, 0x8DD7, 0x8DD8, 0xB6ED, -/* 4008 */ 0x8DD9, 0x8DDA, 0x8DDB, 0xB6EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB6EF, 0xB6F0, 0x8DE3, 0xB6F1, 0x8DE4, -/* 4018 */ 0xB6F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6F3, -/* 4020 */ 0xB6F4, 0x8DEB, 0x8DEC, 0xB6F5, 0x8DED, 0x8DEE, 0x8DEF, 0xB6F6, -/* 4028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6F7, -/* 4030 */ 0xB6F8, 0x8DF7, 0xB6F9, 0xB6FA, 0xB6FB, 0xB6FC, 0x8DF8, 0x8DF9, -/* 4038 */ 0x8DFA, 0xB6FD, 0xB6FE, 0xB7A1, 0xB7A2, 0x8DFB, 0x8DFC, 0xB7A3, -/* 4040 */ 0x8DFD, 0x8DFE, 0x8E41, 0xB7A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB7A5, 0xB7A6, 0x8E49, 0xB7A7, 0xB7A8, -/* 4050 */ 0xB7A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7AA, -/* 4058 */ 0xB7AB, 0x8E50, 0x8E51, 0xB7AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E61, 0x8E62, 0x8E63, -/* 4068 */ 0x8E64, 0x8E65, 0xB7AD, 0x8E66, 0xB7AE, 0xB7AF, 0xB7B0, 0x8E8F, -/* 4070 */ 0x8E90, 0xB7B1, 0x8E91, 0x8E92, 0x8E93, 0xB7B2, 0xFFFD, 0xFFFD, -/* 4078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7B3, 0xB7B4, 0x8E9B, -/* 4080 */ 0xB7B5, 0xB7B6, 0xB7B7, 0x8E9C, 0x8E9D, 0x8E9E, 0x8E9F, 0x8EA0, -/* 4088 */ 0xB7B8, 0xB7B9, 0xB7BA, 0x8EA1, 0x8EA2, 0xB7BB, 0x8EA3, 0x8EA4, -/* 4090 */ 0x8EA5, 0xB7BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4098 */ 0xFFFD, 0xB7BD, 0xB7BE, 0x8EAD, 0xB7BF, 0x8EAE, 0xB7C0, 0xFFFD, -/* 40A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7C1, 0xB7C2, 0x8EB5, -/* 40A8 */ 0x8EB6, 0xB7C3, 0x8EB7, 0x8EB8, 0x8EB9, 0xB7C4, 0xFFFD, 0xFFFD, -/* 40B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7C5, 0xB7C6, 0x8EC1, -/* 40B8 */ 0xB7C7, 0xB7C8, 0xB7C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40C0 */ 0xFFFD, 0xB7CA, 0x8EC8, 0x8EC9, 0x8ECA, 0xB7CB, 0xB7CC, 0x8ED7, -/* 40C8 */ 0xB7CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40D0 */ 0xFFFD, 0xB7CE, 0xB7CF, 0x8EE0, 0x8EE1, 0xB7D0, 0x8EE2, 0x8EE3, -/* 40D8 */ 0x8EE4, 0xB7D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40E0 */ 0xFFFD, 0xB7D2, 0xB7D3, 0x8EEC, 0xB7D4, 0x8EED, 0xB7D5, 0xFFFD, -/* 40E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7D6, 0x8EF4, 0x8EF5, -/* 40F0 */ 0x8EF6, 0xB7D7, 0xB7D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40F8 */ 0xFFFD, 0xFFFD, 0xB7DA, 0x8F70, 0x8F71, 0x8F72, 0xB7DB, 0x8F73, -/* 4100 */ 0x8F74, 0x8F75, 0xB7DC, 0x8F76, 0x8F77, 0x8F78, 0x8F79, 0x8F7A, -/* 4108 */ 0x8F81, 0x8F82, 0xB7DD, 0xB7DE, 0x8F83, 0xB7DF, 0x8F84, 0xB7E0, -/* 4110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7E1, 0x8F8B, -/* 4118 */ 0x8F8C, 0x8F8D, 0xB7E2, 0x8F8E, 0x8F8F, 0x8F90, 0xB7E3, 0xFFFD, -/* 4120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7E4, -/* 4128 */ 0x8F99, 0xB7E5, 0x8F9A, 0xB7E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4130 */ 0xFFFD, 0xFFFD, 0xB7E7, 0xB7E8, 0x8FA1, 0x8FA2, 0xB7E9, 0x8FA3, -/* 4138 */ 0x8FA4, 0x8FA5, 0xB7EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4140 */ 0xFFFD, 0xFFFD, 0xB7EB, 0xB7EC, 0x8FAD, 0xB7ED, 0x8FAE, 0xB7EE, -/* 4148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7EF, 0xB7F0, -/* 4150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7F1, -/* 4158 */ 0xB7F2, 0xB7F3, 0x8FEA, 0x8FEB, 0xB7F4, 0x8FEC, 0x8FED, 0x8FEE, -/* 4160 */ 0xB7F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4168 */ 0xB7F6, 0x8FF6, 0x8FF7, 0xB7F7, 0x8FF8, 0xB7F8, 0xFFFD, 0xFFFD, -/* 4170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7F9, 0xB7FA, 0x9041, 0x9042, -/* 4178 */ 0xB7FB, 0x9043, 0x9044, 0x9045, 0xB7FC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7FD, 0xB7FE, 0x904D, 0xB8A1, -/* 4188 */ 0x904E, 0xB8A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4190 */ 0xB8A3, 0xB8A4, 0x9055, 0x9056, 0xB8A5, 0x9057, 0x9058, 0x9059, -/* 4198 */ 0xB8A6, 0x905A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41A0 */ 0xB8A7, 0xB8A8, 0x9067, 0xB8A9, 0x9068, 0xB8AA, 0xB8AB, 0x9069, -/* 41A8 */ 0x906A, 0xB8AC, 0xB8AD, 0xB8AE, 0xB8AF, 0x908E, 0x908F, 0xB8B0, -/* 41B0 */ 0x9090, 0x9091, 0x9092, 0xB8B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB8B2, 0xB8B3, 0x909A, 0xB8B4, 0x909B, -/* 41C0 */ 0xB8B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8B6, -/* 41C8 */ 0xB8B7, 0x90A2, 0x90A3, 0xB8B8, 0x90A4, 0xB8B9, 0xB8BA, 0xB8BB, -/* 41D0 */ 0xB8BC, 0xB8BD, 0x90A5, 0x90A6, 0x90A7, 0x90A8, 0x90A9, 0xB8BE, -/* 41D8 */ 0xB8BF, 0x90AA, 0xB8C0, 0x90AB, 0xB8C1, 0xB8C2, 0x90AC, 0x90AD, -/* 41E0 */ 0xB8C3, 0x90AE, 0xB8C4, 0xB8C5, 0xB8C6, 0x90AF, 0x90B0, 0xB8C7, -/* 41E8 */ 0x90B1, 0x90B2, 0x90B3, 0xB8C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB8C9, 0xB8CA, 0x90BB, 0xB8CB, 0xB8CC, -/* 41F8 */ 0xB8CD, 0xB8CE, 0x90BC, 0x90BD, 0x90BE, 0x90BF, 0x90C0, 0xB8CF, -/* 4200 */ 0xB8D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8D1, -/* 4208 */ 0xB8D3, 0xB8D4, 0x90F5, 0x90F6, 0xB8D5, 0x90F7, 0x90F8, 0x90F9, -/* 4210 */ 0xB8D6, 0x90FA, 0xB8D7, 0x90FB, 0x90FC, 0x90FD, 0x90FE, 0x9141, -/* 4218 */ 0xB8D8, 0xB8D9, 0x9142, 0xB8DA, 0x9143, 0xB8DB, 0xB8DC, 0x9144, -/* 4220 */ 0x9145, 0x9146, 0x9147, 0xB8DD, 0xB8DE, 0xB8DF, 0x9148, 0x9149, -/* 4228 */ 0xB8E0, 0x914A, 0x914B, 0x914C, 0xB8E1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8E2, 0xB8E3, 0x9154, 0xB8E4, -/* 4238 */ 0xB8E5, 0xB8E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4240 */ 0xB8E7, 0xB8E8, 0x9161, 0x9162, 0xB8E9, 0x9163, 0x9164, 0x9165, -/* 4248 */ 0xB8EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB8EB, 0xB8EC, 0xB8ED, 0x9170, 0xB8EE, -/* 4258 */ 0x9171, 0x9172, 0x9173, 0x9174, 0xB8EF, 0xB8F0, 0xB8F1, 0x9196, -/* 4260 */ 0xB8F2, 0xB8F3, 0x9197, 0x9198, 0x9199, 0xB8F4, 0x919A, 0xB8F5, -/* 4268 */ 0x919B, 0x919C, 0x919D, 0x919E, 0x919F, 0xB8F6, 0xB8F7, 0x91A0, -/* 4270 */ 0xB8F8, 0x91A1, 0xB8F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4278 */ 0xFFFD, 0xB8FA, 0x91A8, 0x91A9, 0x91AA, 0xB8FB, 0xB8FC, 0xB8FD, -/* 4280 */ 0xB8FE, 0x91DC, 0x91DD, 0x91DE, 0xB9A1, 0x91DF, 0x91E0, 0x91E1, -/* 4288 */ 0xB9A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4290 */ 0xFFFD, 0xB9A3, 0x91EA, 0xB9A4, 0x91EB, 0xB9A5, 0xFFFD, 0xFFFD, -/* 4298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9A6, 0x91F2, 0x91F3, 0x91F4, -/* 42A0 */ 0xB9A7, 0x91F5, 0x91F6, 0x91F7, 0xB9A8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9241, 0xB9A9, 0x9242, 0xB9AA, -/* 42B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42B8 */ 0xB9AB, 0xB9AC, 0xB9AD, 0x924B, 0xB9AE, 0x924C, 0x924D, 0xB9AF, -/* 42C0 */ 0xB9B0, 0xB9B1, 0xB9B2, 0x924E, 0x924F, 0x9250, 0x9251, 0x9252, -/* 42C8 */ 0xB9B3, 0xB9B4, 0x9253, 0xB9B5, 0x9254, 0xB9B6, 0x9255, 0x9256, -/* 42D0 */ 0x9257, 0xB9B7, 0x9258, 0xB9B8, 0xB9B9, 0x9259, 0x925A, 0x9261, -/* 42D8 */ 0xB9BA, 0x9262, 0x9263, 0x9264, 0xB9BB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9BC, 0x926D, 0xB9BD, -/* 42E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42F0 */ 0xB9BE, 0x9276, 0x9277, 0x9278, 0x9279, 0x927A, 0xB9BF, 0x9297, -/* 42F8 */ 0x9298, 0x9299, 0xB9C0, 0x929A, 0x929B, 0x929C, 0xB9C1, 0xB9C2, -/* 4300 */ 0x92B0, 0x92B1, 0x92B2, 0xB9C3, 0x92B3, 0x92B4, 0x92B5, 0xB9C4, -/* 4308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9C5, -/* 4310 */ 0x92BD, 0x92BE, 0xB9C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB9C7, 0x92C7, 0x92C8, 0x92C9, 0xB9C8, -/* 4320 */ 0x92CA, 0x92CB, 0x92CC, 0xB9C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB9CA, 0x92D4, 0x92D5, 0xB9CB, 0xB9CC, -/* 4330 */ 0xB9CD, 0x92FA, 0x92FB, 0xB9CE, 0x92FC, 0x92FD, 0xB9CF, 0xB9D0, -/* 4338 */ 0x92FE, 0xB9D1, 0x9341, 0x9342, 0x9343, 0x9344, 0x9345, 0xB9D2, -/* 4340 */ 0xB9D3, 0x9346, 0xB9D4, 0xB9D5, 0xB9D6, 0x9347, 0xB9D7, 0x9348, -/* 4348 */ 0xB9D8, 0x9349, 0x934A, 0xB9D9, 0xB9DA, 0xB9DB, 0xB9DC, 0xB9DD, -/* 4350 */ 0x934B, 0x934C, 0xB9DE, 0xB9DF, 0xB9E0, 0xB9E1, 0xB9E2, 0x934D, -/* 4358 */ 0x934E, 0x934F, 0x9350, 0xB9E3, 0xB9E4, 0x9351, 0xB9E5, 0x9352, -/* 4360 */ 0xB9E6, 0x9353, 0x9354, 0x9355, 0xB9E7, 0x9356, 0x9357, 0xB9E8, -/* 4368 */ 0xB9E9, 0x9358, 0x9359, 0xB9EA, 0x935A, 0x9361, 0x9362, 0xB9EB, -/* 4370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9EC, -/* 4378 */ 0xB9ED, 0x936A, 0xB9EE, 0xB9EF, 0xB9F0, 0x936B, 0x936C, 0x936D, -/* 4380 */ 0xB9F1, 0x936E, 0x936F, 0xB9F2, 0xB9F3, 0x9370, 0x9371, 0xB9F4, -/* 4388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4390 */ 0xFFFD, 0x9381, 0x9382, 0x9383, 0xB9F5, 0xB9F6, 0xB9F7, 0x93AA, -/* 4398 */ 0x93AB, 0xB9F8, 0x93AC, 0x93AD, 0xB9F9, 0xB9FA, 0x93AE, 0xB9FB, -/* 43A0 */ 0x93AF, 0x93B0, 0x93B1, 0x93B2, 0x93B3, 0xB9FC, 0xB9FD, 0x93B4, -/* 43A8 */ 0xB9FE, 0x93B5, 0xBAA1, 0xBAA2, 0x93B6, 0x93B7, 0x93B8, 0x93B9, -/* 43B0 */ 0x93BA, 0xBAA3, 0xBAA4, 0x93BB, 0x93BC, 0xBAA5, 0x93BD, 0x93BE, -/* 43B8 */ 0xBAA6, 0xBAA7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43C0 */ 0xFFFD, 0xBAA8, 0xBAA9, 0x93C6, 0xBAAA, 0xBAAB, 0xBAAC, 0xFFFD, -/* 43C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAAD, 0xBAAE, 0x93CD, -/* 43D0 */ 0x93CE, 0xBAAF, 0x93CF, 0x93D0, 0x93D1, 0xBAB0, 0xFFFD, 0xFFFD, -/* 43D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAB1, 0x93DA, -/* 43E0 */ 0xBAB2, 0xBAB3, 0xBAB4, 0x93DB, 0x93DC, 0x93DD, 0xBAB5, 0x93DE, -/* 43E8 */ 0x93DF, 0xBAB6, 0x93E0, 0x93E1, 0x93E2, 0xBAB7, 0xBAB8, 0xBAB9, -/* 43F0 */ 0xBABA, 0x93FA, 0xBABB, 0x93FB, 0x93FC, 0x93FD, 0xBABC, 0x93FE, -/* 43F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBABD, 0xBABE, -/* 4400 */ 0x9447, 0xBABF, 0x9448, 0xBAC0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4408 */ 0xFFFD, 0xFFFD, 0xBAC1, 0x944F, 0x9450, 0x9451, 0xBAC2, 0xBAC3, -/* 4410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAC4, -/* 4418 */ 0xBAC5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4420 */ 0xBAC6, 0xBAC7, 0x948E, 0x948F, 0xBAC8, 0x9490, 0x9491, 0x9492, -/* 4428 */ 0xBAC9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4430 */ 0xBACA, 0xBACB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4438 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBACC, 0x94A4, 0x94A5, 0x94A6, -/* 4440 */ 0xBACD, 0xBACE, 0xBACF, 0x94BE, 0x94BF, 0xBAD0, 0x94C0, 0x94C1, -/* 4448 */ 0xBAD1, 0xBAD2, 0xBAD3, 0xBAD4, 0x94C2, 0x94C3, 0x94C4, 0x94C5, -/* 4450 */ 0x94C6, 0xBAD5, 0xBAD6, 0x94C7, 0xBAD7, 0x94C8, 0xBAD8, 0x94C9, -/* 4458 */ 0x94CA, 0x94CB, 0xBAD9, 0xBADA, 0x94CC, 0xBADB, 0xFFFD, 0xFFFD, -/* 4460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBADC, 0xBADD, 0xFFFD, -/* 4468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBADE, 0x9541, -/* 4470 */ 0x9542, 0xBADF, 0xBAE0, 0x9543, 0x9544, 0xBAE1, 0x9545, 0x9546, -/* 4478 */ 0x9547, 0xBAE2, 0xBAE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4480 */ 0xFFFD, 0xBAE4, 0x955A, 0x9561, 0x9562, 0xBAE5, 0x9563, 0x9564, -/* 4488 */ 0x9565, 0xBAE6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4490 */ 0xFFFD, 0xBAE7, 0x956D, 0x956E, 0xBAE8, 0x956F, 0xBAE9, 0xFFFD, -/* 4498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAEA, 0xBAEB, 0x9576, -/* 44A0 */ 0x9577, 0xBAEC, 0x9578, 0x9579, 0x957A, 0xBAED, 0xFFFD, 0xFFFD, -/* 44A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAEE, 0xBAEF, 0x9588, -/* 44B0 */ 0xBAF0, 0xBAF1, 0xBAF2, 0x95AD, 0x95AE, 0xBAF3, 0x95AF, 0x95B0, -/* 44B8 */ 0x95B1, 0xBAF4, 0x95B2, 0xBAF5, 0x95B3, 0x95B4, 0x95B5, 0x95B6, -/* 44C0 */ 0x95B7, 0xBAF6, 0xBAF7, 0x95B8, 0xBAF8, 0x95B9, 0xBAF9, 0xBAFA, -/* 44C8 */ 0xBAFB, 0x95BA, 0x95BB, 0x95BC, 0x95BD, 0xBAFC, 0xBAFD, 0x95BE, -/* 44D0 */ 0x95BF, 0xBAFE, 0x95C0, 0x95C1, 0x95C2, 0xBBA1, 0x95C3, 0xBBA2, -/* 44D8 */ 0x95C4, 0x95C5, 0x95C6, 0x95C7, 0x95C8, 0xBBA3, 0xBBA4, 0x95C9, -/* 44E0 */ 0xBBA5, 0xBBA6, 0xBBA7, 0x95CA, 0x95CB, 0x95CC, 0x95CD, 0x95CE, -/* 44E8 */ 0xBBA8, 0xBBA9, 0xBBAA, 0x95CF, 0x95D0, 0xBBAB, 0x95D1, 0x95D2, -/* 44F0 */ 0x95D3, 0xBBAC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44F8 */ 0xFFFD, 0xBBAD, 0xBBAE, 0x95DB, 0xBBAF, 0xBBB0, 0xBBB1, 0xFFFD, -/* 4500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBB2, 0xBBB3, 0xBBB5, -/* 4508 */ 0xBBB6, 0x9659, 0x965A, 0xBBB7, 0x9661, 0x9662, 0xBBB8, 0xBBB9, -/* 4510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBBA, -/* 4518 */ 0x966A, 0x966B, 0xBBBB, 0xBBBC, 0xBBBD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4520 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBBBE, 0xBBBF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBBC0, 0xBBC1, 0xBBC2, 0xBBC3, 0x96A0, -/* 4530 */ 0xBBC4, 0xBBC5, 0xBBC6, 0xBBC7, 0xBBC8, 0x96C3, 0x96C4, 0xBBC9, -/* 4538 */ 0x96C5, 0x96C6, 0x96C7, 0xBBCA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBBCB, 0xBBCC, 0x96CF, 0x96D0, 0x96D1, -/* 4548 */ 0xBBCD, 0xBBD0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4550 */ 0xBBD1, 0xBBD2, 0x9793, 0x9794, 0xBBD3, 0x9795, 0x9796, 0x9797, -/* 4558 */ 0xBBD4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4560 */ 0xBBD5, 0x979F, 0x97A0, 0xBBD6, 0x97A1, 0xBBD7, 0xBBD8, 0x97FC, -/* 4568 */ 0x97FD, 0x97FE, 0xBBD9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4570 */ 0xFFFD, 0xBBDA, 0x9858, 0x9859, 0x985A, 0xBBDB, 0x9861, 0x9862, -/* 4578 */ 0x9863, 0xBBDC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4580 */ 0xFFFD, 0xBBDD, 0xBBDE, 0xBBDF, 0xBBE0, 0x9897, 0x9898, 0xBBE1, -/* 4588 */ 0x9899, 0x989A, 0x989B, 0xBBE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBBE3, 0xBBE4, 0x98A3, 0xBBE5, 0x98A4, -/* 4598 */ 0xBBE6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBE7, -/* 45A0 */ 0xBBE8, 0x98AB, 0xBBE9, 0xBBEA, 0x98AC, 0x98AD, 0xBBEB, 0xBBEC, -/* 45A8 */ 0xBBED, 0xBBEE, 0x98AE, 0x98AF, 0x98B0, 0x98B1, 0x98B2, 0xBBEF, -/* 45B0 */ 0xBBF0, 0x98B3, 0xBBF1, 0xBBF2, 0xBBF3, 0x98B4, 0x98B5, 0x98B6, -/* 45B8 */ 0xBBF4, 0x98B7, 0x98B8, 0xBBF5, 0xBBF6, 0x98B9, 0x98BA, 0xBBF7, -/* 45C0 */ 0x98BB, 0x98BC, 0x98BD, 0xBBF8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 45C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBBF9, 0xBBFA, 0x98C5, 0xBBFB, 0xBBFC, -/* 45D0 */ 0xBBFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBFE, -/* 45D8 */ 0xBCA1, 0x98CC, 0x98CD, 0xBCA2, 0x98CE, 0x98CF, 0x98D0, 0xBCA3, -/* 45E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCA4, -/* 45E8 */ 0xBCA5, 0x98D8, 0xBCA6, 0x98D9, 0xBCA7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 45F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBCA8, 0x98E0, 0x98E1, 0x98E2, 0xBCA9, -/* 45F8 */ 0x98E3, 0x98E4, 0x98E5, 0xBCAA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBCAB, 0x98ED, 0x98EE, 0x98EF, 0x98F0, -/* 4608 */ 0xBCAC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCAD, -/* 4610 */ 0xBCAE, 0xBCAF, 0xBCB0, 0xBCB1, 0x98F7, 0x98F8, 0xBCB2, 0xBCB3, -/* 4618 */ 0x98F9, 0xBCB4, 0xBCB5, 0x98FA, 0x98FB, 0x98FC, 0x98FD, 0xBCB6, -/* 4620 */ 0xBCB7, 0x98FE, 0xBCB8, 0xBCB9, 0xBCBA, 0x9941, 0x9942, 0x9943, -/* 4628 */ 0x9944, 0xBCBB, 0x9945, 0xBCBC, 0xBCBD, 0x9946, 0x9947, 0xBCBE, -/* 4630 */ 0x9948, 0x9949, 0x994A, 0xBCBF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBCC0, 0xBCC1, 0x9952, 0xBCC2, 0xBCC3, -/* 4640 */ 0xBCC4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCC5, -/* 4648 */ 0xBCC6, 0x9959, 0x995A, 0xBCC7, 0x9961, 0x9962, 0x9963, 0xBCC8, -/* 4650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCC9, -/* 4658 */ 0xBCCA, 0x996B, 0xBCCB, 0xBCCC, 0xBCCD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBCCE, 0x9972, 0x9973, 0x9974, 0xBCCF, -/* 4668 */ 0x9975, 0x9976, 0x9977, 0xBCD0, 0x9978, 0x9979, 0x997A, 0xFFFD, -/* 4670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4678 */ 0xBCD1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCD2, -/* 4680 */ 0xBCD3, 0xBCD4, 0x9990, 0xBCD5, 0x9991, 0x9992, 0x9993, 0xBCD6, -/* 4688 */ 0x9994, 0xBCD7, 0x9995, 0x9996, 0x9997, 0x9998, 0x9999, 0xBCD8, -/* 4690 */ 0xBCD9, 0x999A, 0xBCDA, 0x999B, 0xBCDB, 0x999C, 0x999D, 0x999E, -/* 4698 */ 0xBCDC, 0x999F, 0x99A0, 0xBCDD, 0xBCDE, 0x99A1, 0x99A2, 0xBCDF, -/* 46A0 */ 0x99A3, 0x99A4, 0x99A5, 0xBCE0, 0xBCE1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBCE2, 0x99B8, 0x99B9, 0x99BA, 0xBCE3, -/* 46B0 */ 0x99BB, 0x99BC, 0x99BD, 0xBCE4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBCE5, 0x99C5, 0x99C6, 0xBCE6, 0xBCE7, -/* 46C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCE8, -/* 46C8 */ 0x99CE, 0x99CF, 0x99D0, 0xBCE9, 0x99D1, 0x99D2, 0x99D3, 0xBCEA, -/* 46D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCEB, -/* 46D8 */ 0xBCEC, 0x99DB, 0xBCED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBCEE, 0xBCEF, 0x99E4, 0x99E5, 0xBCF0, -/* 46E8 */ 0x99E6, 0x99E7, 0x99E8, 0xBCF1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBCF2, 0xBCF3, 0x99F0, 0xBCF4, 0x99F1, -/* 46F8 */ 0xBCF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCF6, -/* 4700 */ 0xBCF7, 0x99F8, 0x99F9, 0xBCF8, 0x99FA, 0x99FB, 0xBCF9, 0xBCFA, -/* 4708 */ 0x99FC, 0x99FD, 0x99FE, 0x9A41, 0x9A42, 0x9A43, 0x9A44, 0xBCFB, -/* 4710 */ 0xBCFC, 0x9A45, 0xBCFD, 0x9A46, 0xBCFE, 0x9A47, 0xBDA1, 0x9A48, -/* 4718 */ 0xBDA2, 0xBDA3, 0x9A49, 0xBDA4, 0x9A61, 0x9A62, 0xBDA5, 0xFFFD, -/* 4720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDA6, 0xBDA7, -/* 4728 */ 0x9A6A, 0x9A6B, 0xBDA8, 0x9A6C, 0x9A6D, 0x9A6E, 0xBDA9, 0xFFFD, -/* 4730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDAA, 0x9A76, -/* 4738 */ 0x9A77, 0x9A78, 0x9A79, 0xBDAB, 0x9A7A, 0x9A81, 0x9A82, 0x9A83, -/* 4740 */ 0x9A84, 0x9A85, 0xBDAC, 0xBDAD, 0x9A86, 0x9A87, 0xBDAE, 0x9A88, -/* 4748 */ 0x9A89, 0x9A8A, 0xBDAF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4750 */ 0xFFFD, 0xFFFD, 0xBDB0, 0xBDB1, 0x9A92, 0xBDB2, 0x9A93, 0xBDB3, -/* 4758 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDB4, 0xBDB5, -/* 4760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDB6, 0xFFFD, -/* 4768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDB7, 0x9AA7, -/* 4770 */ 0x9AA8, 0xBDB8, 0x9AA9, 0xBDB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4778 */ 0xFFFD, 0xFFFD, 0xBDBA, 0xBDBB, 0x9AB0, 0x9AB1, 0xBDBC, 0x9AB2, -/* 4780 */ 0x9AB3, 0x9AB4, 0xBDBD, 0xBDBE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4788 */ 0xFFFD, 0xFFFD, 0xBDBF, 0xBDC0, 0x9ABB, 0xBDC1, 0x9ABC, 0xBDC2, -/* 4790 */ 0xBDC3, 0xBDC4, 0x9ADF, 0x9AE0, 0xBDC5, 0x9AE1, 0x9AE2, 0xBDC6, -/* 4798 */ 0xBDC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDC8, -/* 47A0 */ 0xBDC9, 0xBDCA, 0x9AE9, 0xBDCB, 0x9AEA, 0xBDCC, 0x9AEB, 0x9AEC, -/* 47A8 */ 0x9AED, 0x9AEE, 0xBDCD, 0x9AEF, 0xBDCE, 0xBDCF, 0x9AF0, 0xBDD0, -/* 47B0 */ 0xBDD1, 0x9AF1, 0x9AF2, 0x9AF3, 0xBDD2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 47B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDD3, 0xBDD4, 0x9AFB, 0x9AFC, -/* 47C0 */ 0xBDD5, 0xBDD6, 0x9AFD, 0x9AFE, 0x9B41, 0x9B42, 0x9B43, 0xBDD7, -/* 47C8 */ 0xBDD8, 0xBDD9, 0x9B44, 0x9B45, 0xBDDA, 0x9B46, 0x9B47, 0x9B48, -/* 47D0 */ 0xBDDB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 47D8 */ 0xBDDC, 0xBDDD, 0x9B50, 0x9B51, 0xBDDE, 0xBDDF, 0xBDE1, 0xBDE2, -/* 47E0 */ 0x9B9B, 0x9B9C, 0xBDE3, 0x9B9D, 0x9B9E, 0x9B9F, 0xBDE4, 0x9BA0, -/* 47E8 */ 0xBDE5, 0x9BA1, 0x9BA2, 0x9BA3, 0x9BA4, 0x9BA5, 0xBDE6, 0xBDE7, -/* 47F0 */ 0x9BA6, 0x9BA7, 0xBDE8, 0xBDE9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 47F8 */ 0xFFFD, 0xFFFD, 0xBDEA, 0x9BAE, 0x9BAF, 0x9BB0, 0xBDEB, 0x9BB1, -/* 4800 */ 0x9BB2, 0x9BB3, 0xBDEC, 0xBDEE, 0xBDEF, 0x9BFE, 0x9C41, 0xBDF0, -/* 4808 */ 0x9C42, 0x9C43, 0xBDF1, 0xBDF2, 0x9C44, 0xBDF3, 0x9C45, 0x9C46, -/* 4810 */ 0x9C47, 0x9C48, 0x9C49, 0xBDF4, 0xBDF5, 0x9C4A, 0x9C4B, 0x9C4C, -/* 4818 */ 0xBDF6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDF7, -/* 4820 */ 0xBDF8, 0x9C53, 0x9C54, 0xBDF9, 0xBDFA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDFB, 0xBDFC, 0xFFFD, 0xFFFD, -/* 4830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDFD, 0x9C91, 0x9C92, -/* 4838 */ 0x9C93, 0xBDFE, 0x9C94, 0x9C95, 0x9C96, 0xBEA1, 0xFFFD, 0xFFFD, -/* 4840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEA2, 0xBEA3, 0xFFFD, -/* 4848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4850 */ 0xFFFD, 0xBEA4, 0xBEA5, 0xBEA6, 0x9CC3, 0x9CC4, 0xBEA7, 0x9CC5, -/* 4858 */ 0x9CC6, 0x9CC7, 0xBEA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4860 */ 0xFFFD, 0xFFFD, 0xBEA9, 0xBEAA, 0x9CCF, 0x9CD0, 0x9CD1, 0xBEAB, -/* 4868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEAC, 0xBEAD, -/* 4870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEAE, -/* 4878 */ 0xBEAF, 0x9D4F, 0x9D50, 0x9D51, 0xBEB0, 0xBEB1, 0xFFFD, 0xFFFD, -/* 4880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEB2, 0xBEB3, 0x9D90, 0x9D91, -/* 4888 */ 0xBEB4, 0x9D92, 0x9D93, 0x9D94, 0xBEB5, 0x9D95, 0xBEB6, 0x9D96, -/* 4890 */ 0x9D97, 0x9D98, 0x9D99, 0xBEB7, 0xBEB8, 0xBEB9, 0xFFFD, 0xFFFD, -/* 4898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 48A0 */ 0xBEBA, 0x9DA4, 0x9DA5, 0x9DA6, 0xBEBB, 0x9DA7, 0x9DA8, 0x9DA9, -/* 48A8 */ 0xBEBC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 48B0 */ 0xBEBD, 0xBEBE, 0xBEBF, 0x9DBC, 0x9DBD, 0xBEC0, 0x9DBE, 0x9DBF, -/* 48B8 */ 0x9DC0, 0xBEC1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 48C0 */ 0xFFFD, 0xBEC2, 0xBEC3, 0x9DC8, 0xBEC4, 0x9DC9, 0xBEC5, 0xFFFD, -/* 48C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEC6, 0xBEC7, 0x9DD0, -/* 48D0 */ 0x9DD1, 0xBEC8, 0xBEC9, 0xBECA, 0x9DD2, 0xBECB, 0xBECC, 0xBECD, -/* 48D8 */ 0x9DD3, 0x9DD4, 0x9DD5, 0x9DD6, 0xBECE, 0xBECF, 0xBED0, 0x9DD7, -/* 48E0 */ 0xBED1, 0xBED2, 0xBED3, 0x9DD8, 0x9DD9, 0x9DDA, 0xBED4, 0xBED5, -/* 48E8 */ 0x9DDB, 0xBED6, 0xBED7, 0x9DDC, 0x9DDD, 0xBED8, 0x9DDE, 0x9DDF, -/* 48F0 */ 0x9DE0, 0xBED9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 48F8 */ 0xFFFD, 0xBEDA, 0xBEDB, 0x9DE8, 0xBEDC, 0xBEDD, 0xBEDE, 0xFFFD, -/* 4900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEDF, 0xBEE0, 0x9DEF, -/* 4908 */ 0x9DF0, 0xBEE1, 0x9DF1, 0x9DF2, 0x9DF3, 0xBEE2, 0x9DF4, 0x9DF5, -/* 4910 */ 0xBEE3, 0x9DF6, 0x9DF7, 0x9DF8, 0x9DF9, 0xBEE4, 0xBEE5, 0x9DFA, -/* 4918 */ 0xBEE6, 0x9DFB, 0xBEE7, 0x9DFC, 0x9DFD, 0x9DFE, 0xBEE8, 0x9E41, -/* 4920 */ 0xBEE9, 0xBEEA, 0x9E42, 0x9E43, 0x9E44, 0xBEEB, 0x9E45, 0x9E46, -/* 4928 */ 0x9E47, 0xBEEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4930 */ 0xFFFD, 0xFFFD, 0xBEED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEEE, 0xBEEF, 0x9E5A, -/* 4940 */ 0x9E61, 0xBEF0, 0xBEF1, 0x9E62, 0xBEF2, 0xBEF3, 0xBEF4, 0xBEF5, -/* 4948 */ 0x9E63, 0x9E64, 0x9E65, 0x9E66, 0x9E67, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E68, 0xBEFD, 0x9E69, 0xBEFE, -/* 4958 */ 0x9E6A, 0xBFA1, 0xBFA2, 0x9E6B, 0x9E6C, 0xBFA3, 0x9E6D, 0x9E6E, -/* 4960 */ 0x9E6F, 0xBFA4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4968 */ 0xFFFD, 0xBFA5, 0xBFA6, 0x9E77, 0xBFA7, 0x9E78, 0xBFA8, 0x9E79, -/* 4970 */ 0x9E7A, 0x9E81, 0x9E82, 0x9E83, 0x9E84, 0xBFA9, 0xBFAA, 0xBFAB, -/* 4978 */ 0x9E85, 0xBFAC, 0x9E86, 0x9E87, 0x9E88, 0xBFAD, 0x9E89, 0xBFAE, -/* 4980 */ 0xBFAF, 0x9E8A, 0x9E8B, 0x9E8C, 0x9E8D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9E8E, 0x9E8F, 0x9E90, 0xBFB6, 0xBFB7, -/* 4990 */ 0xBFB8, 0xBFB9, 0x9E91, 0x9E92, 0x9E93, 0xBFBA, 0x9E94, 0x9E95, -/* 4998 */ 0x9E96, 0xBFBB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 49A0 */ 0xFFFD, 0xBFBC, 0xBFBD, 0x9E9E, 0xBFBE, 0xBFBF, 0xFFFD, 0xFFFD, -/* 49A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFC0, 0xBFC1, 0x9EA6, -/* 49B0 */ 0x9EA7, 0xBFC2, 0x9EA8, 0x9EA9, 0x9EAA, 0xBFC3, 0xBFC4, 0xBFC5, -/* 49B8 */ 0x9EAB, 0xBFC6, 0x9EAC, 0x9EAD, 0xBFC7, 0xBFC8, 0xBFC9, 0x9EAE, -/* 49C0 */ 0xBFCA, 0x9EAF, 0xBFCB, 0x9EB0, 0xBFCC, 0x9EB1, 0x9EB2, 0x9EB3, -/* 49C8 */ 0x9EB4, 0xBFCD, 0xBFCE, 0x9EB5, 0x9EB6, 0xBFCF, 0x9EB7, 0x9EB8, -/* 49D0 */ 0x9EB9, 0xBFD0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 49D8 */ 0xFFFD, 0xBFD1, 0xBFD2, 0x9EC1, 0xBFD3, 0xBFD4, 0xBFD5, 0xFFFD, -/* 49E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFD6, 0xBFD7, 0x9EC8, -/* 49E8 */ 0x9EC9, 0xBFD8, 0xBFD9, 0x9ED5, 0x9ED6, 0xBFDA, 0x9ED7, 0xBFDB, -/* 49F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFDC, 0xBFDD, -/* 49F8 */ 0x9EDE, 0x9EDF, 0xBFDE, 0x9EE0, 0x9EE1, 0x9EE2, 0xBFDF, 0xFFFD, -/* 4A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFE0, 0xBFE1, -/* 4A08 */ 0x9EEA, 0xBFE2, 0x9EEB, 0xBFE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A10 */ 0xFFFD, 0xFFFD, 0xBFE4, 0xBFE5, 0x9EF2, 0x9EF3, 0xBFE6, 0x9EF4, -/* 4A18 */ 0x9EF5, 0x9EF6, 0xBFE7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A20 */ 0xFFFD, 0xFFFD, 0xBFE8, 0xBFE9, 0x9EFE, 0xBFEA, 0x9F41, 0xBFEB, -/* 4A28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFEC, 0xBFED, -/* 4A30 */ 0x9F48, 0x9F49, 0xBFEE, 0x9F4A, 0x9F4B, 0x9F4C, 0xBFEF, 0xBFF0, -/* 4A38 */ 0xBFF1, 0x9F4D, 0x9F4E, 0x9F4F, 0x9F50, 0x9F51, 0xBFF2, 0xBFF3, -/* 4A40 */ 0x9F52, 0xBFF4, 0x9F53, 0xBFF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A48 */ 0xFFFD, 0xFFFD, 0xBFF6, 0xBFF7, 0x9F5A, 0x9F61, 0xBFF8, 0x9F62, -/* 4A50 */ 0x9F63, 0x9F64, 0xBFF9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A58 */ 0xFFFD, 0xFFFD, 0xBFFA, 0xBFFB, 0x9F6C, 0x9F6D, 0xBFFC, 0xBFFD, -/* 4A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFFE, 0xC0A1, -/* 4A68 */ 0x9F74, 0x9F75, 0xC0A2, 0x9F76, 0x9F77, 0x9F78, 0xC0A3, 0x9F79, -/* 4A70 */ 0x9F7A, 0x9F81, 0x9F82, 0x9F83, 0x9F84, 0x9F85, 0xC0A4, 0xC0A5, -/* 4A78 */ 0x9F86, 0x9F87, 0x9F88, 0xC0A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A80 */ 0xFFFD, 0xFFFD, 0xC0A7, 0xC0A8, 0x9F8F, 0x9F90, 0xC0A9, 0x9F91, -/* 4A88 */ 0x9F92, 0x9F93, 0xC0AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A90 */ 0xFFFD, 0xFFFD, 0xC0AB, 0xC0AC, 0x9F9B, 0xC0AD, 0x9F9C, 0xC0AE, -/* 4A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0AF, 0xC0B0, -/* 4AA0 */ 0x9FA3, 0x9FA4, 0xC0B1, 0x9FA5, 0x9FA6, 0x9FA7, 0xC0B2, 0xFFFD, -/* 4AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0B3, 0xC0B4, -/* 4AB0 */ 0x9FAF, 0xC0B5, 0x9FB0, 0xC0B6, 0x9FB1, 0xC0B7, 0x9FB2, 0x9FB3, -/* 4AB8 */ 0x9FB4, 0x9FB5, 0xC0B8, 0xC0B9, 0x9FB6, 0x9FB7, 0xC0BA, 0x9FB8, -/* 4AC0 */ 0x9FB9, 0x9FBA, 0xC0BB, 0x9FBB, 0x9FBC, 0x9FBD, 0x9FBE, 0x9FBF, -/* 4AC8 */ 0xC0BC, 0x9FC0, 0xC0BD, 0xC0BE, 0x9FC1, 0xC0BF, 0x9FC2, 0xFFFD, -/* 4AD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FC3, -/* 4AD8 */ 0x9FC4, 0x9FC5, 0xC0C8, 0x9FC6, 0x9FC7, 0x9FC8, 0xC0C9, 0xFFFD, -/* 4AE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0CA, 0x9FD0, -/* 4AE8 */ 0x9FD1, 0xC0CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4AF0 */ 0xFFFD, 0xFFFD, 0xC0CC, 0xC0CD, 0x9FDA, 0x9FDB, 0xC0CE, 0x9FDC, -/* 4AF8 */ 0x9FDD, 0x9FDE, 0xC0CF, 0xC0D0, 0xC0D1, 0x9FDF, 0x9FE0, 0x9FE1, -/* 4B00 */ 0x9FE2, 0xC0D2, 0xC0D3, 0xC0D4, 0x9FE3, 0xC0D5, 0xC0D6, 0xC0D7, -/* 4B08 */ 0xC0D8, 0x9FE4, 0x9FE5, 0x9FE6, 0xC0D9, 0x9FE7, 0xC0DA, 0xC0DB, -/* 4B10 */ 0x9FE8, 0x9FE9, 0xC0DC, 0x9FEA, 0xC0DD, 0xC0DE, 0xC0DF, 0x9FEB, -/* 4B18 */ 0xC0E0, 0x9FEC, 0x9FED, 0x9FEE, 0x9FEF, 0x9FF0, 0xC0E1, 0xC0E2, -/* 4B20 */ 0x9FF1, 0xC0E3, 0xC0E4, 0xC0E5, 0xC0E6, 0x9FF2, 0x9FF3, 0x9FF4, -/* 4B28 */ 0x9FF5, 0x9FF6, 0xC0E7, 0xC0E8, 0x9FF7, 0x9FF8, 0xC0E9, 0x9FF9, -/* 4B30 */ 0x9FFA, 0x9FFB, 0xC0EA, 0x9FFC, 0x9FFD, 0x9FFE, 0xA041, 0xA042, -/* 4B38 */ 0xA043, 0xA044, 0xC0EB, 0xC0EC, 0xA045, 0xC0ED, 0xC0EE, 0xC0EF, -/* 4B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0F0, 0xC0F1, -/* 4B48 */ 0xA04C, 0xA04D, 0xC0F2, 0xA04E, 0xC0F3, 0xA04F, 0xC0F4, 0xFFFD, -/* 4B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0F5, 0xA057, -/* 4B58 */ 0xA058, 0xA059, 0xA05A, 0xC0F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4B60 */ 0xFFFD, 0xFFFD, 0xC0F7, 0xA067, 0xA068, 0xA069, 0xC0F8, 0xA06A, -/* 4B68 */ 0xA06B, 0xA06C, 0xC0F9, 0xA081, 0xA082, 0xA083, 0xA084, 0xA085, -/* 4B70 */ 0xC0FA, 0xC0FB, 0xA086, 0xA087, 0xC0FC, 0xA088, 0xA089, 0xA08A, -/* 4B78 */ 0xC0FD, 0xA08B, 0xC0FE, 0xA08C, 0xA08D, 0xA08E, 0xA08F, 0xA090, -/* 4B80 */ 0xC1A1, 0xC1A2, 0xA091, 0xC1A3, 0xA092, 0xC1A4, 0xC1A5, 0xA093, -/* 4B88 */ 0xA094, 0xA095, 0xA096, 0xA097, 0xC1A6, 0xC1A7, 0xA098, 0xA099, -/* 4B90 */ 0xC1A8, 0xA09A, 0xA09B, 0xA09C, 0xC1A9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1AA, 0xC1AB, 0xA0A4, 0xC1AC, -/* 4BA0 */ 0xA0A5, 0xC1AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4BA8 */ 0xC1AE, 0xA0AC, 0xA0AD, 0xA0AE, 0xC1AF, 0xA0AF, 0xA0B0, 0xA0B1, -/* 4BB0 */ 0xC1B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4BB8 */ 0xC1B1, 0xC1B2, 0xA0B9, 0xA0BA, 0xC1B3, 0xC1B4, 0xFFFD, 0xFFFD, -/* 4BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1B5, 0xC1B6, 0xC1B7, 0xA0DC, -/* 4BC8 */ 0xA0DD, 0xC1B8, 0xA0DE, 0xA0DF, 0xA0E0, 0xC1B9, 0xA0E1, 0xC1BA, -/* 4BD0 */ 0xA0E2, 0xA0E3, 0xA0E4, 0xA0E5, 0xA0E6, 0xC1BB, 0xC1BC, 0xA0E7, -/* 4BD8 */ 0xC1BD, 0xA0E8, 0xC1BE, 0xC1BF, 0xC1C0, 0xA0E9, 0xA0EA, 0xA0EB, -/* 4BE0 */ 0xC1C1, 0xC1C2, 0xC1C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4BE8 */ 0xFFFD, 0xC1C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4BF0 */ 0xFFFD, 0xFFFD, 0xC1C5, 0xA0FA, 0xC1C6, 0xA0FB, 0xC1C7, 0xA0FC, -/* 4BF8 */ 0xA0FD, 0xA0FE, 0xA141, 0xA142, 0xA143, 0xC1C8, 0xC1C9, 0xC1CA, -/* 4C00 */ 0xA157, 0xA158, 0xA159, 0xA15A, 0xA161, 0xA162, 0xC1CB, 0xA163, -/* 4C08 */ 0xA164, 0xA165, 0xC1CC, 0xA166, 0xA167, 0xA168, 0xC1CD, 0xFFFD, -/* 4C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1CE, 0xC1CF, -/* 4C18 */ 0xA170, 0xC1D0, 0xA171, 0xC1D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C20 */ 0xFFFD, 0xFFFD, 0xC1D2, 0xC1D3, 0xA178, 0xA179, 0xC1D4, 0xA17A, -/* 4C28 */ 0xC1D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1D6, -/* 4C30 */ 0xC1D7, 0xA196, 0xA197, 0xC1D8, 0xA198, 0xA199, 0xA19A, 0xC1D9, -/* 4C38 */ 0xC1DA, 0xC1DB, 0xA19B, 0xA19C, 0xA19D, 0xA19E, 0xA19F, 0xC1DC, -/* 4C40 */ 0xC1DD, 0xA1A0, 0xC1DE, 0xA241, 0xC1DF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC1E0, 0xC1E1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1E2, 0xC1E3, 0xC1E4, 0xA289, -/* 4C58 */ 0xA28A, 0xC1E5, 0xA28B, 0xA28C, 0xA28D, 0xC1E6, 0xFFFD, 0xFFFD, -/* 4C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1E7, 0xC1E8, 0xA295, -/* 4C68 */ 0xC1E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C70 */ 0xFFFD, 0xC1EA, 0xA29E, 0xA29F, 0xA2A0, 0xC1EB, 0xA341, 0xA342, -/* 4C78 */ 0xA343, 0xC1EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C80 */ 0xFFFD, 0xC1ED, 0xC1EE, 0xC1EF, 0xA356, 0xA357, 0xC1F0, 0xA358, -/* 4C88 */ 0xA359, 0xA35A, 0xC1F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C90 */ 0xFFFD, 0xFFFD, 0xC1F2, 0xC1F3, 0xA368, 0xC1F4, 0xA369, 0xC1F5, -/* 4C98 */ 0xC1F6, 0xC1F7, 0xA392, 0xA393, 0xC1F8, 0xA394, 0xA395, 0xC1F9, -/* 4CA0 */ 0xC1FA, 0xA396, 0xC1FB, 0xA397, 0xA398, 0xA399, 0xA39A, 0xA39B, -/* 4CA8 */ 0xC1FC, 0xC1FD, 0xA39C, 0xC1FE, 0xA39D, 0xC2A1, 0xC2A2, 0xA39E, -/* 4CB0 */ 0xA39F, 0xC2A3, 0xC2A4, 0xA3A0, 0xC2A5, 0xC2A6, 0xA441, 0xA442, -/* 4CB8 */ 0xC2A7, 0xA443, 0xC2A8, 0xA444, 0xC2A9, 0xA445, 0xA446, 0xC2AA, -/* 4CC0 */ 0xA447, 0xA448, 0xA449, 0xA44A, 0xC2AB, 0xC2AC, 0xA44B, 0xC2AD, -/* 4CC8 */ 0xC2AE, 0xC2AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4CD0 */ 0xC2B0, 0xC2B1, 0xA452, 0xA453, 0xC2B2, 0xA454, 0xA455, 0xA456, -/* 4CD8 */ 0xC2B3, 0xA457, 0xA458, 0xA459, 0xA45A, 0xA461, 0xA462, 0xA463, -/* 4CE0 */ 0xC2B4, 0xC2B5, 0xA464, 0xC2B6, 0xC2B7, 0xC2B8, 0xFFFD, 0xFFFD, -/* 4CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2B9, 0xA46B, 0xA46C, 0xA46D, -/* 4CF0 */ 0xC2BA, 0xA481, 0xA482, 0xA483, 0xC2BB, 0xA541, 0xA542, 0xA543, -/* 4CF8 */ 0xA544, 0xA545, 0xC2BC, 0xC2BD, 0xA546, 0xA547, 0xC2BE, 0xA548, -/* 4D00 */ 0xA549, 0xA54A, 0xC2BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4D08 */ 0xFFFD, 0xFFFD, 0xC2C0, 0xC2C1, 0xA552, 0xC2C2, 0xC2C3, 0xC2C4, -/* 4D10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2C5, 0xA559, -/* 4D18 */ 0xA55A, 0xC2C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4D20 */ 0xC2C7, 0xA579, 0xA57A, 0xC2C9, 0xC2CA, 0xA655, 0xA656, 0xC2CB, -/* 4D28 */ 0xA657, 0xA658, 0xA659, 0xC2CC, 0xA65A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC2CD, 0xC2CE, 0xA667, 0xC2CF, 0xA668, -/* 4D38 */ 0xC2D0, 0xA669, 0xC2D1, 0xA66A, 0xA66B, 0xA66C, 0xA66D, 0xC2D2, -/* 4D40 */ 0xC2D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2D4, -/* 4D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA681, -/* 4D50 */ 0xA682, 0xA683, 0xA684, 0xC2D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC2D6, 0xC2D7, 0xA69F, 0xA6A0, 0xA741, -/* 4D60 */ 0xA742, 0xA743, 0xA744, 0xA745, 0xC2D8, 0xA746, 0xA747, 0xA748, -/* 4D68 */ 0xC2D9, 0xA749, 0xA74A, 0xA74B, 0xC2DA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2DB, 0xC2DC, 0xC2DD, 0xA778, -/* 4D78 */ 0xA779, 0xA77A, 0xA781, 0xA782, 0xA783, 0xC2DE, 0xC2DF, 0xA784, -/* 4D80 */ 0xA785, 0xC2E0, 0xA786, 0xA787, 0xA788, 0xC2E1, 0xFFFD, 0xFFFD, -/* 4D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2E2, 0xC2E3, 0xA790, -/* 4D90 */ 0xA791, 0xA792, 0xC2E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4D98 */ 0xFFFD, 0xC2E5, 0xC2E6, 0xC2E7, 0xA961, 0xA962, 0xA963, 0xA964, -/* 4DA0 */ 0xC2EB, 0xA965, 0xA966, 0xC2EC, 0xA967, 0xC2ED, 0xC2EE, 0xC2EF, -/* 4DA8 */ 0xA990, 0xA991, 0xC2F0, 0xA992, 0xA993, 0xA994, 0xC2F1, 0xFFFD, -/* 4DB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2F2, 0xC2F3, -/* 4DB8 */ 0xA99C, 0xA99D, 0xA99E, 0xC2F4, 0xC2F5, 0xA99F, 0xA9A0, 0xAA41, -/* 4DC0 */ 0xAA42, 0xC2F6, 0xC2F7, 0xC2F8, 0xAA43, 0xAA44, 0xC2F9, 0xAA45, -/* 4DC8 */ 0xC2FA, 0xAA46, 0xC2FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4DD0 */ 0xFFFD, 0xFFFD, 0xC2FC, 0xC2FD, 0xAA4E, 0xC2FE, 0xC3A1, 0xC3A2, -/* 4DD8 */ 0xC3A3, 0xAA4F, 0xAA50, 0xAA51, 0xAA52, 0xAA53, 0xC3A4, 0xC3A5, -/* 4DE0 */ 0xAA54, 0xAA55, 0xC3A6, 0xAA56, 0xAA57, 0xAA58, 0xC3A7, 0xAA59, -/* 4DE8 */ 0xAA5A, 0xAA61, 0xAA62, 0xAA63, 0xAA64, 0xAA65, 0xC3A8, 0xC3A9, -/* 4DF0 */ 0xAA66, 0xC3AA, 0xC3AB, 0xC3AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4DF8 */ 0xFFFD, 0xFFFD, 0xC3AD, 0xAA6D, 0xAA6E, 0xAA6F, 0xC3AE, 0xAA70, -/* 4E00 */ 0xC3AF, 0xAA71, 0xC3B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4E08 */ 0xFFFD, 0xFFFD, 0xC3B1, 0xAA79, 0xAA7A, 0xAA81, 0xAA82, 0xC3B2, -/* 4E10 */ 0xAB41, 0xAB42, 0xAB43, 0xAB44, 0xC3B3, 0xC3B4, 0xAB45, 0xAB46, -/* 4E18 */ 0xC3B5, 0xAB47, 0xAB48, 0xAB49, 0xC3B6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3B7, 0xC3B8, 0xAB51, 0xC3B9, -/* 4E28 */ 0xC3BA, 0xC3BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4E30 */ 0xC3BC, 0xC3BD, 0xAB58, 0xAB59, 0xC3BE, 0xAB5A, 0xAB61, 0xAB62, -/* 4E38 */ 0xC3BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4E40 */ 0xC3C0, 0xC3C1, 0xAB6A, 0xC3C2, 0xAB6B, 0xC3C3, 0xFFFD, 0xFFFD, -/* 4E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3C4, 0xAB72, 0xAB73, 0xAB74, -/* 4E50 */ 0xC3C5, 0xC3C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4E58 */ 0xFFFD, 0xC3C7, 0xAB91, 0xAB92, 0xAB93, 0xC3C8, 0xAC41, 0xAC42, -/* 4E60 */ 0xAC43, 0xC3C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4E68 */ 0xC3CA, 0xC3CB, 0xAC4A, 0xAC4B, 0xC3CC, 0xAC4C, 0xAC4D, 0xAC4E, -/* 4E70 */ 0xC3CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4E78 */ 0xC3CE, 0xC3CF, 0xAC56, 0xC3D0, 0xAC57, 0xC3D1, 0xAC58, 0xAC59, -/* 4E80 */ 0xAC5A, 0xAC61, 0xAC62, 0xAC63, 0xC3D2, 0xAC64, 0xAC65, 0xAC66, -/* 4E88 */ 0xC3D3, 0xAC67, 0xAC68, 0xAC69, 0xC3D4, 0xC3D5, 0xAC76, 0xAC77, -/* 4E90 */ 0xAC78, 0xAC79, 0xAC7A, 0xC3D6, 0xAC9E, 0xAC9F, 0xACA0, 0xC3D7, -/* 4E98 */ 0xAD41, 0xAD42, 0xAD43, 0xC3D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4EA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC3D9, 0xC3DA, 0xAD4B, 0xC3DB, 0xAD4C, -/* 4EA8 */ 0xC3DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3DD, -/* 4EB0 */ 0xC3DF, 0xC3E0, 0xAD73, 0xAD74, 0xC3E1, 0xAD75, 0xAD76, 0xAD77, -/* 4EB8 */ 0xC3E2, 0xAD78, 0xAD79, 0xAD7A, 0xAD81, 0xAD82, 0xAD83, 0xAD84, -/* 4EC0 */ 0xC3E3, 0xC3E4, 0xAD85, 0xC3E5, 0xAD86, 0xC3E6, 0xFFFD, 0xFFFD, -/* 4EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3E7, 0xC3E8, 0xADA0, 0xFFFD, -/* 4ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3E9, 0xAE47, 0xAE48, -/* 4ED8 */ 0xAE49, 0xC3EA, 0xC3EB, 0xAE67, 0xAE68, 0xAE69, 0xC3EC, 0xAE6A, -/* 4EE0 */ 0xAE6B, 0xAE6C, 0xC3ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4EE8 */ 0xFFFD, 0xFFFD, 0xC3EE, 0xC3EF, 0xAE74, 0xC3F0, 0xAE75, 0xC3F1, -/* 4EF0 */ 0xAE76, 0xAE77, 0xAE78, 0xAE79, 0xAE7A, 0xAE81, 0xC3F2, 0xAE82, -/* 4EF8 */ 0xAE83, 0xAE84, 0xC3F3, 0xAE85, 0xAE86, 0xAE87, 0xC3F4, 0xFFFD, -/* 4F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3F5, 0xAE8F, -/* 4F08 */ 0xAE90, 0xAE91, 0xAE92, 0xC3F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4F10 */ 0xFFFD, 0xFFFD, 0xC3F7, 0xC3F8, 0xAE99, 0xAE9A, 0xC3F9, 0xAE9B, -/* 4F18 */ 0xAE9C, 0xAE9D, 0xC3FA, 0xAE9E, 0xAE9F, 0xAEA0, 0xAF41, 0xAF42, -/* 4F20 */ 0xAF43, 0xAF44, 0xC3FB, 0xC3FC, 0xAF45, 0xC3FD, 0xAF46, 0xC3FE, -/* 4F28 */ 0xC4A1, 0xC4A2, 0xAF6F, 0xAF70, 0xC4A3, 0xAF71, 0xAF72, 0xC4A4, -/* 4F30 */ 0xC4A5, 0xC4A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4F38 */ 0xC4A7, 0xC4A8, 0xAF79, 0xC4A9, 0xAF7A, 0xC4AA, 0xFFFD, 0xFFFD, -/* 4F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4AB, 0xC4AC, 0xAF87, 0xAF88, -/* 4F48 */ 0xC4AD, 0xAF89, 0xAF8A, 0xAF8B, 0xC4AE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4AF, 0xC4B0, 0xAF93, 0xC4B1, -/* 4F58 */ 0xAF94, 0xC4B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4F60 */ 0xC4B3, 0xC4B4, 0xAF9B, 0xAF9C, 0xC4B5, 0xAF9D, 0xAF9E, 0xAF9F, -/* 4F68 */ 0xC4B6, 0xAFA0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4F70 */ 0xC4B7, 0xC4B8, 0xB047, 0xC4B9, 0xC4BA, 0xC4BB, 0xFFFD, 0xFFFD, -/* 4F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4BC, 0xC4BD, 0xC4BF, 0xC4C0, -/* 4F80 */ 0xB08F, 0xB090, 0xC4C1, 0xB091, 0xB092, 0xC4C2, 0xC4C3, 0xFFFD, -/* 4F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4C4, 0xC4C5, -/* 4F90 */ 0xB09A, 0xC4C6, 0xC4C7, 0xC4C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4F98 */ 0xFFFD, 0xFFFD, 0xC4C9, 0xC4CA, 0xB141, 0xB142, 0xC4CB, 0xB143, -/* 4FA0 */ 0xB144, 0xB145, 0xC4CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4FA8 */ 0xFFFD, 0xFFFD, 0xC4CD, 0xC4CE, 0xB14D, 0xC4CF, 0xB14E, 0xC4D0, -/* 4FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4D1, 0xB155, -/* 4FB8 */ 0xB156, 0xB157, 0xC4D2, 0xB158, 0xB159, 0xB15A, 0xC4D3, 0xFFFD, -/* 4FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4D4, 0xC4D5, -/* 4FC8 */ 0xB168, 0xC4D6, 0xC4D7, 0xC4D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4FD0 */ 0xFFFD, 0xFFFD, 0xC4D9, 0xC4DA, 0xC4DB, 0xB190, 0xB191, 0xC4DC, -/* 4FD8 */ 0xB192, 0xB193, 0xB194, 0xC4DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4FE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC4DE, 0xC4DF, 0xB19C, 0xC4E0, 0xB19D, -/* 4FE8 */ 0xC4E1, 0xB19E, 0xB19F, 0xB1A0, 0xB241, 0xB242, 0xB243, 0xC4E2, -/* 4FF0 */ 0xC4E3, 0xB244, 0xB245, 0xC4E4, 0xB246, 0xB247, 0xB248, 0xC4E5, -/* 4FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4E6, -/* 5000 */ 0xB250, 0xB251, 0xB252, 0xB253, 0xC4E7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC4E8, 0xB25A, 0xC4E9, 0xFFFD, 0xFFFD, -/* 5010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4EA, 0xB27A, 0xFFFD, 0xFFFD, -/* 5018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4EB, 0xC4ED, 0xC4EE, 0xB355, -/* 5020 */ 0xB356, 0xC4EF, 0xB357, 0xB358, 0xB359, 0xC4F0, 0xB35A, 0xFFFD, -/* 5028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4F1, 0xC4F2, 0xB367, -/* 5030 */ 0xC4F3, 0xB368, 0xC4F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5038 */ 0xFFFD, 0xC4F5, 0xB36F, 0xB370, 0xB371, 0xC4F6, 0xB372, 0xB373, -/* 5040 */ 0xB374, 0xC4F7, 0xC4F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5048 */ 0xFFFD, 0xC4F9, 0xC4FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5050 */ 0xFFFD, 0xC4FB, 0xC4FC, 0xB447, 0xB448, 0xC4FD, 0xB449, 0xB44A, -/* 5058 */ 0xB44B, 0xC4FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5060 */ 0xFFFD, 0xC5A1, 0xC5A2, 0xB453, 0xC5A3, 0xB454, 0xC5A4, 0xFFFD, -/* 5068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5A5, 0xB461, 0xB462, -/* 5070 */ 0xB463, 0xC5A6, 0xB464, 0xB465, 0xB466, 0xC5A7, 0xFFFD, 0xFFFD, -/* 5078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5A8, 0xC5A9, 0xC5AA, -/* 5080 */ 0xB479, 0xB47A, 0xC5AB, 0xB481, 0xB482, 0xB483, 0xC5AC, 0xFFFD, -/* 5088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5AD, 0xC5AE, -/* 5090 */ 0xB48B, 0xB48C, 0xB48D, 0xC5AF, 0xC5B0, 0xC5B1, 0xB550, 0xB551, -/* 5098 */ 0xC5B2, 0xB552, 0xB553, 0xB554, 0xC5B3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 50A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB561, 0xC5B4, 0xC5B5, 0xB562, 0xC5B6, -/* 50A8 */ 0xB563, 0xC5B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 50B0 */ 0xC5B8, 0xC5B9, 0xB56A, 0xB56B, 0xC5BA, 0xB56C, 0xB56D, 0xB56E, -/* 50B8 */ 0xC5BB, 0xC5BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 50C0 */ 0xC5BD, 0xC5BE, 0xB575, 0xC5BF, 0xC5C0, 0xC5C1, 0xB576, 0xB577, -/* 50C8 */ 0xB578, 0xB579, 0xB57A, 0xB581, 0xC5C2, 0xC5C3, 0xB582, 0xB583, -/* 50D0 */ 0xC5C4, 0xB584, 0xB585, 0xB586, 0xC5C5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 50D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5C6, 0xC5C7, 0xB58E, 0xC5C8, -/* 50E0 */ 0xC5C9, 0xC5CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 50E8 */ 0xC5CB, 0xC5CD, 0xC5CE, 0xB671, 0xB672, 0xC5CF, 0xB673, 0xB674, -/* 50F0 */ 0xB675, 0xC5D0, 0xB676, 0xC5D1, 0xB677, 0xB678, 0xB679, 0xB67A, -/* 50F8 */ 0xB681, 0xC5D2, 0xC5D3, 0xB682, 0xC5D4, 0xC5D5, 0xC5D6, 0xFFFD, -/* 5100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5D7, 0xC5D8, 0xB689, -/* 5108 */ 0xB68A, 0xC5D9, 0xB68B, 0xB68C, 0xB68D, 0xC5DA, 0xFFFD, 0xFFFD, -/* 5110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5DB, 0xC5DC, 0xB695, -/* 5118 */ 0xC5DD, 0xB696, 0xC5DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5120 */ 0xFFFD, 0xC5DF, 0xB69D, 0xB69E, 0xB69F, 0xC5E0, 0xB6A0, 0xC5E1, -/* 5128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5E2, -/* 5130 */ 0xB756, 0xB757, 0xB758, 0xC5E3, 0xB759, 0xB75A, 0xC5E4, 0xC5E5, -/* 5138 */ 0xB776, 0xB777, 0xC5E6, 0xB778, 0xB779, 0xB77A, 0xC5E7, 0xFFFD, -/* 5140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5E8, 0xC5E9, -/* 5148 */ 0xB788, 0xC5EA, 0xB789, 0xC5EB, 0xB78A, 0xB78B, 0xB78C, 0xB78D, -/* 5150 */ 0xC5EC, 0xB78E, 0xC5ED, 0xB78F, 0xB790, 0xB791, 0xC5EE, 0xC5F0, -/* 5158 */ 0xB86A, 0xB86B, 0xB86C, 0xC5F1, 0xC5F2, 0xB881, 0xC5F3, 0xFFFD, -/* 5160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5F4, 0xB941, 0xB942, -/* 5168 */ 0xC5F5, 0xC5F6, 0xB943, 0xB944, 0xC5F7, 0xB945, 0xB946, 0xB947, -/* 5170 */ 0xC5F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5178 */ 0xC5F9, 0xC5FA, 0xB94F, 0xC5FB, 0xB950, 0xC5FC, 0xFFFD, 0xFFFD, -/* 5180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5FD, 0xB957, 0xB958, 0xB959, -/* 5188 */ 0xB95A, 0xC5FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5190 */ 0xFFFD, 0xC6A1, 0xB977, 0xB978, 0xB979, 0xB97A, 0xC6A2, 0xC6A3, -/* 5198 */ 0xB998, 0xB999, 0xC6A4, 0xB99A, 0xB99B, 0xB99C, 0xC6A5, 0xB99D, -/* 51A0 */ 0xB99E, 0xB99F, 0xB9A0, 0xBA41, 0xBA42, 0xBA43, 0xC6A6, 0xC6A7, -/* 51A8 */ 0xBA44, 0xBA45, 0xBA46, 0xC6A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 51B0 */ 0xFFFD, 0xFFFD, 0xC6A9, 0xBA4D, 0xBA4E, 0xBA4F, 0xC6AA, 0xBA50, -/* 51B8 */ 0xBA51, 0xBA52, 0xC6AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 51C0 */ 0xFFFD, 0xFFFD, 0xC6AC, 0xBA5A, 0xBA61, 0xBA62, 0xBA63, 0xC6AD, -/* 51C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6AE, 0xC6AF, -/* 51D0 */ 0xBA6A, 0xBA6B, 0xC6B0, 0xBA6C, 0xBA6D, 0xC6B1, 0xC6B2, 0xBA6E, -/* 51D8 */ 0xC6B3, 0xBA6F, 0xBA70, 0xBA71, 0xBA72, 0xBA73, 0xC6B4, 0xC6B5, -/* 51E0 */ 0xBA74, 0xC6B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 51E8 */ 0xBA81, 0xBA82, 0xC6B7, 0xBA83, 0xBA84, 0xBA85, 0xC6B8, 0xBA86, -/* 51F0 */ 0xBA87, 0xBA88, 0xC6B9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 51F8 */ 0xFFFD, 0xFFFD, 0xC6BA, 0xC6BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6BC, 0xC6BD, -/* 5208 */ 0xBA9A, 0xBA9B, 0xC6BE, 0xBA9C, 0xBA9D, 0xBA9E, 0xC6BF, 0xBA9F, -/* 5210 */ 0xBAA0, 0xBB41, 0xBB42, 0xBB43, 0xBB44, 0xBB45, 0xC6C0, 0xC6C1, -/* 5218 */ 0xBB46, 0xC6C2, 0xBB47, 0xC6C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5220 */ 0xFFFD, 0xFFFD, 0xC6C4, 0xC6C5, 0xC6C6, 0xBB4E, 0xC6C7, 0xBB4F, -/* 5228 */ 0xBB50, 0xBB51, 0xC6C8, 0xBB52, 0xC6C9, 0xBB53, 0xBB54, 0xBB55, -/* 5230 */ 0xBB56, 0xBB57, 0xC6CA, 0xC6CB, 0xBB58, 0xC6CC, 0xC6CD, 0xC6CE, -/* 5238 */ 0xBB59, 0xBB5A, 0xBB61, 0xC6CF, 0xBB62, 0xBB63, 0xC6D0, 0xC6D1, -/* 5240 */ 0xBB64, 0xBB65, 0xC6D2, 0xBB66, 0xBB67, 0xBB68, 0xC6D3, 0xFFFD, -/* 5248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6D4, 0xC6D5, -/* 5250 */ 0xBB70, 0xC6D6, 0xC6D7, 0xC6D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5258 */ 0xFFFD, 0xFFFD, 0xC6D9, 0xC6DA, 0xBB77, 0xBB78, 0xBB79, 0xBB7A, -/* 5260 */ 0xC6DB, 0xC6DC, 0xBC53, 0xBC54, 0xC6DD, 0xBC55, 0xBC56, 0xBC57, -/* 5268 */ 0xC6DE, 0xBC58, 0xBC59, 0xBC5A, 0xBC61, 0xBC62, 0xBC63, 0xBC64, -/* 5270 */ 0xC6DF, 0xC6E0, 0xBC65, 0xC6E1, 0xC6E2, 0xC6E3, 0xFFFD, 0xFFFD, -/* 5278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6E4, 0xC6E5, 0xBC6C, 0xBC6D, -/* 5280 */ 0xC6E6, 0xBC6E, 0xBC6F, 0xBC70, 0xC6E7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6E8, 0xC6E9, 0xBC78, 0xC6EA, -/* 5290 */ 0xBC79, 0xC6EB, 0xBC7A, 0xBC81, 0xBC82, 0xBC83, 0xBC84, 0xBC85, -/* 5298 */ 0xC6EC, 0xBC86, 0xBC87, 0xBC88, 0xC6ED, 0xBC89, 0xBC8A, 0xBC8B, -/* 52A0 */ 0xC6EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 52A8 */ 0xC6EF, 0xC6F0, 0xBC93, 0xBC94, 0xC6F1, 0xC6F2, 0xFFFD, 0xFFFD, -/* 52B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6F3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 52B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBD41, 0xC6F4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 52C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6F5, 0xBD4A, 0xC6F6, -/* 52C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 52D0 */ 0xC6F7, 0xC6F8, 0xBD53, 0xBD54, 0xC6F9, 0xBD55, 0xBD56, 0xBD57, -/* 52D8 */ 0xC6FA, 0xBD58, 0xBD59, 0xBD5A, 0xBD61, 0xBD62, 0xBD63, 0xBD64, -/* 52E0 */ 0xC6FB, 0xC6FC, 0xBD65, 0xC6FD, 0xBD66, 0xC6FE, 0xFFFD, 0xFFFD, -/* 52E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7A1, 0xC7A3, 0xBE49, 0xBE4A, -/* 52F0 */ 0xBE4B, 0xC7A4, 0xC7A5, 0xBE69, 0xBE6A, 0xBE6B, 0xC7A6, 0xBE6C, -/* 52F8 */ 0xBE6D, 0xBE6E, 0xC7A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC7A8, 0xBE77, 0xC7A9, 0xBE78, 0xBE79, -/* 5308 */ 0xBE7A, 0xBE81, 0xBE82, 0xBE83, 0xBE84, 0xBE85, 0xC7AA, 0xC7AB, -/* 5310 */ 0xBE86, 0xBE87, 0xC7AC, 0xBE88, 0xBE89, 0xC7AD, 0xC7AE, 0xBE8A, -/* 5318 */ 0xC7AF, 0xBE8B, 0xBE8C, 0xBE8D, 0xBE8E, 0xBE8F, 0xC7B0, 0xC7B1, -/* 5320 */ 0xBE90, 0xC7B2, 0xBE91, 0xC7B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5328 */ 0xFFFD, 0xFFFD, 0xC7B4, 0xC7B6, 0xBF74, 0xBF75, 0xBF76, 0xC7B7, -/* 5330 */ 0xBF77, 0xBF78, 0xBF79, 0xC7B8, 0xBF7A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC7B9, 0xBF87, 0xBF88, 0xC7BA, 0xFFFD, -/* 5340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7BB, -/* 5348 */ 0xBF91, 0xBF92, 0xBF93, 0xC7BC, 0xBF94, 0xBF95, 0xBF96, 0xC7BD, -/* 5350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7BE, -/* 5358 */ 0xBF9E, 0xBF9F, 0xC7BF, 0xBFA0, 0xC7C0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC7C1, 0xC047, 0xC048, 0xC049, 0xC7C2, -/* 5368 */ 0xC04A, 0xC04B, 0xC04C, 0xC7C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC7C4, 0xC7C5, 0xC054, 0xC7C6, 0xC081, -/* 5378 */ 0xC082, 0xC083, 0xC084, 0xC7C7, 0xC7C8, 0xC085, 0xC086, 0xC7C9, -/* 5380 */ 0xC087, 0xC088, 0xC089, 0xC7CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC7CB, 0xC7CC, 0xC091, 0xC7CD, 0xC092, -/* 5390 */ 0xC7CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7CF, -/* 5398 */ 0xC7D0, 0xC099, 0xC09A, 0xC7D1, 0xC09B, 0xC09C, 0xC09D, 0xC7D2, -/* 53A0 */ 0xC09E, 0xC09F, 0xC0A0, 0xC141, 0xC7D3, 0xC142, 0xC143, 0xC7D4, -/* 53A8 */ 0xC7D5, 0xC144, 0xC7D6, 0xC145, 0xC7D7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 53B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC7D8, 0xC7D9, 0xC14C, 0xC14D, 0xC7DA, -/* 53B8 */ 0xC14E, 0xC14F, 0xC150, 0xC7DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 53C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC7DC, 0xC7DD, 0xC158, 0xC7DE, 0xC7DF, -/* 53C8 */ 0xC7E0, 0xC159, 0xC15A, 0xC161, 0xC162, 0xC163, 0xC164, 0xC7E1, -/* 53D0 */ 0xC7E2, 0xC179, 0xC17A, 0xC7E3, 0xC7E4, 0xC241, 0xC242, 0xC7E5, -/* 53D8 */ 0xC243, 0xC244, 0xC245, 0xC7E6, 0xC246, 0xC7E7, 0xC247, 0xC248, -/* 53E0 */ 0xC249, 0xC24A, 0xC24B, 0xC7E8, 0xC7E9, 0xC24C, 0xC7EA, 0xC24D, -/* 53E8 */ 0xC7EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7EC, -/* 53F0 */ 0xC7ED, 0xC254, 0xC255, 0xC7EE, 0xC256, 0xC257, 0xC258, 0xC7EF, -/* 53F8 */ 0xC259, 0xC25A, 0xC261, 0xC262, 0xC263, 0xC264, 0xC265, 0xC7F0, -/* 5400 */ 0xC7F1, 0xC266, 0xC7F2, 0xC267, 0xC7F3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC7F4, 0xC7F5, 0xC26E, 0xC26F, 0xC7F6, -/* 5410 */ 0xC270, 0xC271, 0xC272, 0xC7F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC7F8, 0xC7F9, 0xC27A, 0xC7FA, 0xC7FB, -/* 5420 */ 0xC7FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7FD, -/* 5428 */ 0xC287, 0xC288, 0xC289, 0xC7FE, 0xC28A, 0xC28B, 0xC28C, 0xC8A1, -/* 5430 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5438 */ 0xC8A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC8A3, 0xC8A4, 0xC29F, 0xC2A0, 0xC8A5, -/* 5448 */ 0xC341, 0xC342, 0xC343, 0xC8A6, 0xC344, 0xC345, 0xC346, 0xC347, -/* 5450 */ 0xC8A7, 0xC348, 0xC349, 0xC8A8, 0xC8A9, 0xC34A, 0xC8AA, 0xC34B, -/* 5458 */ 0xC8AB, 0xC34C, 0xC34D, 0xC34E, 0xC8AC, 0xC34F, 0xC350, 0xC8AD, -/* 5460 */ 0xC8AE, 0xC351, 0xC352, 0xC8AF, 0xC353, 0xC354, 0xC355, 0xC8B0, -/* 5468 */ 0xC356, 0xC357, 0xC358, 0xC359, 0xC35A, 0xC361, 0xC362, 0xC363, -/* 5470 */ 0xC364, 0xC365, 0xC8B1, 0xC366, 0xC8B2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5478 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC8B3, 0xC8B4, 0xC36D, 0xC36E, 0xC8B5, -/* 5480 */ 0xC381, 0xC382, 0xC8B6, 0xC383, 0xC8B7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC8B8, 0xC8B9, 0xC38A, 0xC38B, 0xC8BA, -/* 5490 */ 0xC38C, 0xC38D, 0xC38E, 0xC8BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8BC, 0xC397, 0xC8BD, 0xC398, -/* 54A0 */ 0xC8BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8BF, -/* 54A8 */ 0xC39F, 0xC3A0, 0xC441, 0xC8C0, 0xC442, 0xC443, 0xC444, 0xC8C1, -/* 54B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 54B8 */ 0xC8C2, 0xC44D, 0xC8C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 54C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC8C4, 0xC8C5, 0xC456, 0xC457, 0xC8C6, -/* 54C8 */ 0xC458, 0xC459, 0xC45A, 0xC8C7, 0xC461, 0xC462, 0xC463, 0xC464, -/* 54D0 */ 0xC8C8, 0xC465, 0xC466, 0xC8C9, 0xC467, 0xC468, 0xC8CA, 0xC469, -/* 54D8 */ 0xC8CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8CC, -/* 54E0 */ 0xC470, 0xC471, 0xC472, 0xC8CD, 0xC473, 0xC474, 0xC475, 0xC8CE, -/* 54E8 */ 0xC476, 0xC477, 0xC478, 0xC479, 0xC47A, 0xC481, 0xC482, 0xC8CF, -/* 54F0 */ 0xC483, 0xC484, 0xC485, 0xC486, 0xC8D0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 54F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC8D1, 0xC8D2, 0xC48D, 0xC48E, 0xC8D3, -/* 5500 */ 0xC48F, 0xC490, 0xC491, 0xC8D4, 0xC8D5, 0xC49E, 0xC49F, 0xC4A0, -/* 5508 */ 0xC541, 0xC542, 0xC543, 0xC8D6, 0xC8D7, 0xC544, 0xC545, 0xC8D8, -/* 5510 */ 0xC546, 0xC547, 0xC548, 0xC8D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC8DA, 0xC8DB, 0xC550, 0xC8DC, 0xC551, -/* 5520 */ 0xC8DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8DE, -/* 5528 */ 0xC8DF, 0xC558, 0xC559, 0xC8E0, 0xC55A, 0xC561, 0xC562, 0xC8E1, -/* 5530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8E2, -/* 5538 */ 0xC56A, 0xC56B, 0xC8E3, 0xC56C, 0xC8E4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC8E5, 0xC8E6, 0xC573, 0xC574, 0xC8E7, -/* 5548 */ 0xC575, 0xC8E8, 0xC8E9, 0xC8EA, 0xC8EB, 0xC576, 0xC577, 0xC578, -/* 5550 */ 0xC579, 0xC57A, 0xC581, 0xC8EC, 0xC8ED, 0xC582, 0xC8EE, 0xC583, -/* 5558 */ 0xC8EF, 0xC584, 0xC585, 0xC586, 0xC8F0, 0xC587, 0xC588, 0xC8F1, -/* 5560 */ 0xC589, 0xC58A, 0xC58B, 0xC8F2, 0xC58C, 0xC58D, 0xC58E, 0xC8F3, -/* 5568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8F4, -/* 5570 */ 0xC8F5, 0xC596, 0xC597, 0xC598, 0xC8F6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC8F7, 0xC8F8, 0xC59F, 0xC5A0, 0xC8F9, -/* 5580 */ 0xC641, 0xC642, 0xC643, 0xC8FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 5588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC8FB, 0xC8FC, 0xC64B, 0xC8FD, 0xC64C, -/* 5590 */ 0xC8FE, 0xCBD0, 0xCBD6, 0xCBE7, 0xCDCF, 0xCDE8, 0xCEAD, 0xCFFB, -/* 5598 */ 0xD0A2, 0xD0B8, 0xD0D0, 0xD0DD, 0xD1D4, 0xD1D5, 0xD1D8, 0xFFFD, -/* 55A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1E2, 0xD1E3, 0xD1E4, -/* 55A8 */ 0xD1E5, 0xD1E6, 0xD1E8, 0xD1E9, 0xD1EA, 0xD1EB, 0xD1ED, 0xD1EF, -/* 55B0 */ 0xD1F0, 0xD1F2, 0xD1F6, 0xD1FA, 0xD1FC, 0xD1FD, 0xD1FE, 0xD2A2, -/* 55B8 */ 0xD2A3, 0xD2A7, 0xD2A8, 0xD2A9, 0xD2AA, 0xD2AB, 0xD2AD, 0xD2B2, -/* 55C0 */ 0xD2BE, 0xD2C2, 0xD2C3, 0xD2C4, 0xD2D9, 0xD2DA, 0xD2DE, 0xD2DF, -/* 55C8 */ 0xD2E1, 0xD2E2, 0xD2F7, 0xD2F8, 0xD4E6, 0xD4FC, 0xD5A5, 0xD5AB, -/* 55D0 */ 0xD5AE, 0xD6B8, 0xD6CD, 0xD7CB, 0xD7E4, 0xDBC5, 0xDBE4, 0xDCA5, -/* 55D8 */ 0xDDA5, 0xDDD5, 0xDDF4, 0xDEFC, 0xDEFE, 0xDFB3, 0xDFE1, 0xDFE8, -/* 55E0 */ 0xE0F1, 0xE1AD, 0xE1ED, 0xE3F5, 0xE4A1, 0xE4A9, 0xE5AE, 0xE5B1, -/* 55E8 */ 0xE5B2, 0xE5B9, 0xE5BB, 0xE5BC, 0xE5C4, 0xE5CE, 0xE5D0, 0xE5D2, -/* 55F0 */ 0xE5D6, 0xE5FA, 0xE5FB, 0xE5FC, 0xE5FE, 0xE6A1, 0xE6A4, 0xE6A7, -/* 55F8 */ 0xE6AD, 0xE6AF, 0xE6B0, 0xE6B1, 0xE6B3, 0xE6B7, 0xE6B8, 0xE6BC, -/* 5600 */ 0xE6C4, 0xE6C6, 0xE6C7, 0xE6CA, 0xE6D2, 0xE6D6, 0xE6D9, 0xE6DC, -/* 5608 */ 0xE6DF, 0xE6E1, 0xE6E4, 0xE6E5, 0xE6E6, 0xE6E8, 0xE6EA, 0xE6EB, -/* 5610 */ 0xE6EC, 0xE6EF, 0xE6F1, 0xE6F2, 0xE6F5, 0xE6F6, 0xE6F7, 0xE6F9, -/* 5618 */ 0xE7A1, 0xE7A6, 0xE7A9, 0xE7AA, 0xE7AC, 0xE7AD, 0xE7B0, 0xE7BF, -/* 5620 */ 0xE7C1, 0xE7C6, 0xE7C7, 0xE7CB, 0xE7CD, 0xE7CF, 0xE7D0, 0xE7D3, -/* 5628 */ 0xE7DF, 0xE7E4, 0xE7E6, 0xE7F7, 0xE8E7, 0xE8E8, 0xE8F0, 0xE8F1, -/* 5630 */ 0xE8F7, 0xE8F9, 0xE8FB, 0xE8FE, 0xE9A7, 0xE9AC, 0xE9CC, 0xE9F7, -/* 5638 */ 0xEAC1, 0xEAE5, 0xEAF4, 0xEAF7, 0xEAFC, 0xEAFE, 0xEBA4, 0xEBA7, -/* 5640 */ 0xEBA9, 0xEBAA, 0xEBBA, 0xEBBB, 0xEBBD, 0xEBC1, 0xEBC2, 0xEBC6, -/* 5648 */ 0xEBC7, 0xEBCC, 0xEBCF, 0xEBD0, 0xEBD1, 0xEBD2, 0xEBD8, 0xECA6, -/* 5650 */ 0xECA7, 0xECAA, 0xECAF, 0xECB0, 0xECB1, 0xECB2, 0xECB5, 0xECB8, -/* 5658 */ 0xECBA, 0xECC0, 0xECC1, 0xECC5, 0xECC6, 0xECC9, 0xECCA, 0xECD5, -/* 5660 */ 0xECDD, 0xECDE, 0xECE1, 0xECE4, 0xECE7, 0xECE8, 0xECF7, 0xECF8, -/* 5668 */ 0xECFA, 0xEDA1, 0xEDA2, 0xEDA3, 0xEDEE, 0xEEDB, 0xF2BD, 0xF2FA, -/* 5670 */ 0xF3B1, 0xF4A7, 0xF4EE, 0xF6F4, 0xF6F6, 0xF7B8, 0xF7C8, 0xF7D3, -/* 5678 */ 0xF8DB, 0xF8F0, 0xFAA1, 0xFAA2, 0xFAE6, 0xFCA9, 0xA1CB, 0xA1CC, -/* 5680 */ 0xA1FE, 0xA3FE, 0xFFFD, 0xA1CD, 0xA3DC, -/* End of table Total Length = 0x653A * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/cp950.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/cp950.uf deleted file mode 100644 index 20855e9c56a..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/cp950.uf +++ /dev/null @@ -1,5790 +0,0 @@ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = A344 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = A355 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = A35C -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = A36D -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 2160 - srcEnd = 2169 - destBegin = A2B9 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 2581 - srcEnd = 2588 - destBegin = A262 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 3021 - srcEnd = 3029 - destBegin = A2C3 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 3105 - srcEnd = 310F - destBegin = A374 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 3110 - srcEnd = 3129 - destBegin = A3A1 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = FF10 - srcEnd = FF19 - destBegin = A2AF -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = FF21 - srcEnd = FF3A - destBegin = A2CF -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = FF41 - srcEnd = FF56 - destBegin = A2E9 -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 00A7 - srcEnd = 00B7 - mappingOffset = 0000 - Mapping = - A1B1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - A1C2 A258 A1D3 FFFD FFFD FFFD FFFD FFFD - A150 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 00D7 - destBegin = A1D1 -End of Item 000E - -Begin of Item 000F - Format 2 - srcBegin = 00F7 - destBegin = A1D2 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 02C7 - srcEnd = 02CD - mappingOffset = 0011 - Mapping = - A3BE FFFD A3BC A3BD A3BF FFFD A1C5 -End of Item 0010 - -Begin of Item 0011 - Format 2 - srcBegin = 02D9 - destBegin = A3BB -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = 2013 - srcEnd = 203B - mappingOffset = 0018 - Mapping = - A156 A158 FFFD FFFD FFFD A1A5 A1A6 FFFD - FFFD A1A7 A1A8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD A14C A14B A145 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD A1AC - FFFD FFFD A1AB FFFD FFFD FFFD FFFD FFFD - A1B0 -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 2103 - srcEnd = 2109 - mappingOffset = 0041 - Mapping = - A24A FFFD A1C1 FFFD FFFD FFFD A24B -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 2190 - srcEnd = 2199 - mappingOffset = 0048 - Mapping = - A1F6 A1F4 A1F7 A1F5 FFFD FFFD A1F8 A1F9 - A1FB A1FA -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 2215 - srcEnd = 2235 - mappingOffset = 0052 - Mapping = - A241 FFFD FFFD FFFD FFFD A1D4 FFFD FFFD - FFFD A1DB A1E8 A1E7 FFFD FFFD A1FD FFFD - A1FC FFFD FFFD FFFD A1E4 A1E5 A1EC FFFD - FFFD A1ED FFFD FFFD FFFD FFFD FFFD A1EF - A1EE -End of Item 0015 - -Begin of Item 0016 - Format 2 - srcBegin = 2252 - destBegin = A1DC -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 2260 - srcEnd = 2267 - mappingOffset = 0073 - Mapping = - A1DA A1DD FFFD FFFD FFFD FFFD A1D8 A1D9 -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 2295 - srcEnd = 2299 - mappingOffset = 007B - Mapping = - A1F2 FFFD FFFD FFFD A1F3 -End of Item 0018 - -Begin of Item 0019 - Format 2 - srcBegin = 22A5 - destBegin = A1E6 -End of Item 0019 - -Begin of Item 001A - Format 2 - srcBegin = 22BF - destBegin = A1E9 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 0080 - Mapping = - A277 FFFD A278 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A27A FFFD FFFD FFFD - A27B FFFD FFFD FFFD A27C FFFD FFFD FFFD - A27D FFFD FFFD FFFD A275 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A274 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A273 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A272 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A271 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 2550 - srcEnd = 2574 - mappingOffset = 00BD - Mapping = - F9F9 F9F8 F9E6 F9EF F9DD F9E8 F9F1 F9DF - F9EC F9F5 F9E3 F9EE F9F7 F9E5 F9E9 F9F2 - F9E0 F9EB F9F4 F9E2 F9E7 F9F0 F9DE F9ED - F9F6 F9E4 F9EA F9F3 F9E1 F9FA F9FB F9FD - F9FC A2AC A2AD A2AE A15A -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 2589 - srcEnd = 25A1 - mappingOffset = 00E2 - Mapping = - A270 A26F A26E A26D A26C A26B A26A FFFD - FFFD FFFD F9FE A276 A279 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD A1BD - A1BC -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 25B2 - srcEnd = 25CF - mappingOffset = 00FB - Mapping = - A1B6 A1B5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD A1BF A1BE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A1BB A1BA FFFD FFFD - FFFD A1B3 FFFD FFFD A1B7 A1B4 -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 25E2 - srcEnd = 25E5 - mappingOffset = 0119 - Mapping = - A2A8 A2A9 A2AB A2AA -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 2605 - srcEnd = 2606 - mappingOffset = 011D - Mapping = - A1B9 A1B8 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 011F - Mapping = - A1F0 FFFD A1F1 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 3000 - srcEnd = 301E - mappingOffset = 0122 - Mapping = - A140 A142 A143 A1B2 FFFD FFFD FFFD FFFD - A171 A172 A16D A16E A175 A176 A179 A17A - A169 A16A A245 FFFD A165 A166 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD A1A9 A1AA -End of Item 0022 - -Begin of Item 0023 - Format 2 - srcBegin = 32A3 - destBegin = A1C0 -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 338E - srcEnd = 338F - mappingOffset = 0141 - Mapping = - A255 A256 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 339C - srcEnd = 33A1 - mappingOffset = 0143 - Mapping = - A250 A251 A252 FFFD FFFD A254 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 33C4 - srcEnd = 33D5 - mappingOffset = 0149 - Mapping = - A257 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD A253 FFFD FFFD A1EB A1EA FFFD - FFFD A24F -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 4E00 - srcEnd = 4F9E - mappingOffset = 015B - Mapping = - A440 A442 FFFD A443 FFFD FFFD FFFD C945 - A456 A454 A457 A455 C946 A4A3 C94F C94D - A4A2 A4A1 FFFD FFFD A542 A541 A540 FFFD - A543 A4FE FFFD FFFD FFFD FFFD A5E0 A5E1 - FFFD FFFD FFFD FFFD FFFD FFFD A8C3 FFFD - FFFD FFFD FFFD A458 FFFD A4A4 C950 FFFD - A4A5 C963 A6EA CBB1 FFFD FFFD FFFD FFFD - A459 A4A6 FFFD A544 C964 FFFD FFFD FFFD - FFFD FFFD C940 A444 FFFD A45B FFFD C947 - A45C FFFD FFFD A4A7 FFFD A545 A547 A546 - FFFD FFFD A5E2 A5E3 FFFD FFFD A8C4 FFFD - ADBC A441 FFFD FFFD C941 A445 A45E A45D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD A5E4 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD A8C5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B0AE D44B - FFFD FFFD B6C3 DCB1 DCB2 FFFD A446 FFFD - A4A9 FFFD FFFD A8C6 A447 C948 A45F FFFD - FFFD A4AA A4AC C951 A4AD A4AB FFFD FFFD - FFFD A5E5 FFFD A8C7 FFFD FFFD A8C8 AB45 - FFFD A460 A4AE FFFD A5E6 A5E8 A5E7 FFFD - A6EB FFFD FFFD A8C9 A8CA AB46 AB47 FFFD - FFFD FFFD FFFD ADBD FFFD FFFD DCB3 FFFD - FFFD F6D6 A448 FFFD FFFD FFFD FFFD FFFD - A4B0 A4AF C952 A4B1 A4B7 FFFD A4B2 A4B3 - C954 C953 A4B5 A4B6 FFFD A4B4 FFFD FFFD - FFFD FFFD FFFD FFFD A54A A54B A54C A54D - A549 A550 C96A FFFD C966 C969 A551 A561 - FFFD C968 FFFD A54E A54F A548 FFFD FFFD - C965 C967 FFFD FFFD FFFD FFFD FFFD FFFD - A5F5 C9B0 A5F2 A5F6 C9BA C9AE A5F3 C9B2 - FFFD FFFD FFFD A5F4 FFFD A5F7 FFFD A5E9 - C9B1 A5F8 C9B5 FFFD C9B9 C9B6 FFFD FFFD - C9B3 A5EA A5EC A5F9 FFFD A5EE C9AB A5F1 - A5EF A5F0 C9BB C9B8 C9AF A5ED FFFD FFFD - C9AC A5EB FFFD FFFD FFFD C9B4 FFFD FFFD - FFFD FFFD C9B7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C9AD CA66 FFFD A742 - A6F4 FFFD FFFD CA67 A6F1 FFFD A744 FFFD - A6F9 FFFD A6F8 CA5B A6FC A6F7 CA60 CA68 - FFFD CA64 FFFD A6FA FFFD FFFD A6FD A6EE - A747 CA5D FFFD FFFD CBBD A6EC A743 A6ED - A6F5 A6F6 CA62 CA5E A6FB A6F3 CA5A A6EF - CA65 A745 A748 A6F2 A740 A746 A6F0 CA63 - A741 CA69 CA5C A6FE CA5F FFFD FFFD CA61 - FFFD A8D8 CBBF CBCB A8D0 FFFD CBCC A8CB - A8D5 FFFD FFFD A8CE CBB9 A8D6 CBB8 CBBC - CBC3 CBC1 A8DE A8D9 CBB3 CBB5 A8DB A8CF - CBB6 CBC2 CBC9 A8D4 CBBB CBB4 A8D3 CBB7 - A8D7 CBBA FFFD A8D2 FFFD A8CD FFFD A8DC - CBC4 A8DD CBC8 FFFD CBC6 CBCA A8DA CBBE - CBB2 FFFD CBC0 A8D1 CBC5 A8CC CBC7 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 4FAE - srcEnd = 51E1 - mappingOffset = 02FA - Mapping = - AB56 AB4A FFFD FFFD CDE0 CDE8 FFFD AB49 - AB51 AB5D FFFD CDEE CDEC CDE7 FFFD FFFD - FFFD AB4B CDED CDE3 AB59 AB50 AB58 CDDE - FFFD CDEA FFFD CDE1 AB54 CDE2 FFFD CDDD - AB5B AB4E AB57 AB4D FFFD CDDF CDE4 FFFD - CDEB AB55 AB52 CDE6 AB5A CDE9 CDE5 AB4F - AB5C AB53 AB4C AB48 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD CDEF FFFD - ADD7 ADC1 FFFD ADD1 FFFD ADD6 D0D0 D0CF - D0D4 D0D5 ADC4 FFFD ADCD FFFD FFFD FFFD - ADDA FFFD ADCE FFFD FFFD FFFD FFFD D0C9 - ADC7 D0CA FFFD ADDC FFFD ADD3 ADBE ADBF - D0DD B0BF FFFD ADCC ADCB D0CB ADCF D45B - ADC6 D0D6 ADD5 ADD4 ADCA D0CE D0D7 FFFD - D0C8 ADC9 D0D8 ADD2 D0CC ADC0 FFFD ADC3 - ADC2 D0D9 ADD0 ADC5 ADD9 ADDB D0D3 ADD8 - FFFD D0DB D0CD D0DC FFFD D0D1 FFFD D0DA - FFFD D0D2 FFFD FFFD FFFD FFFD ADC8 FFFD - FFFD FFFD D463 D457 FFFD B0B3 FFFD D45C - D462 B0B2 D455 B0B6 D459 D452 B0B4 D456 - B0B9 B0BE FFFD D467 FFFD D451 FFFD B0BA - FFFD D466 FFFD FFFD B0B5 D458 B0B1 D453 - D44F D45D D450 D44E D45A D460 D461 B0B7 - FFFD FFFD D85B D45E D44D D45F FFFD B0C1 - D464 B0C0 D44C FFFD D454 D465 B0BC B0BB - B0B8 B0BD FFFD FFFD B0AF FFFD FFFD B0B0 - FFFD FFFD B3C8 FFFD D85E D857 FFFD B3C5 - FFFD D85F FFFD FFFD FFFD D855 D858 B3C4 - D859 FFFD FFFD B3C7 D85D FFFD D853 D852 - B3C9 FFFD B3CA B3C6 B3CB D851 D85C D85A - D854 FFFD FFFD FFFD B3C3 D856 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B6CA B6C4 - DCB7 B6CD DCBD DCC0 B6C6 B6C7 DCBA B6C5 - DCC3 B6CB DCC4 FFFD DCBF B6CC FFFD DCB4 - B6C9 DCB5 FFFD DCBE DCBC FFFD DCB8 B6C8 - DCB6 B6CE DCBB DCC2 DCB9 DCC1 FFFD FFFD - B9B6 B9B3 FFFD B9B4 FFFD E0F9 E0F1 B9B2 - B9AF E0F2 FFFD FFFD B9B1 E0F5 FFFD E0F7 - FFFD FFFD E0FE FFFD FFFD E0FD E0F8 B9AE - E0F0 B9AC E0F3 B9B7 E0F6 FFFD E0FA B9B0 - B9AD E0FC E0FB B9B5 FFFD E0F4 FFFD BBF8 - E4EC FFFD E4E9 BBF9 FFFD BBF7 FFFD E4F0 - E4ED E4E6 BBF6 FFFD BBFA E4E7 BBF5 BBFD - E4EA E4EB BBFB BBFC E4F1 E4EE E4EF FFFD - FFFD FFFD BEAA E8F8 BEA7 E8F5 BEA9 BEAB - FFFD E8F6 BEA8 FFFD E8F7 FFFD E8F4 FFFD - FFFD C076 ECBD C077 ECBB FFFD ECBC ECBA - ECB9 FFFD FFFD ECBE C075 FFFD FFFD EFB8 - EFB9 FFFD E4E8 EFB7 C078 C35F F1EB F1EC - FFFD C4D7 C4D8 F5C1 F5C0 C56C C56B F7D0 - FFFD A449 A461 A4B9 FFFD A4B8 A553 A552 - A5FC A5FB A5FD A5FA FFFD A74A A749 A74B - FFFD FFFD FFFD FFFD A8E0 FFFD A8DF A8E1 - FFFD AB5E FFFD A259 D0DE A25A B0C2 A25C - A25B D860 FFFD A25D B9B8 A25E FFFD A44A - FFFD A4BA A5FE A8E2 FFFD A44B A4BD A4BB - A4BC FFFD FFFD A640 FFFD FFFD FFFD A74C - A8E4 A8E3 A8E5 FFFD FFFD FFFD ADDD FFFD - FFFD FFFD BEAC FFFD FFFD FFFD FFFD FFFD - FFFD C94E FFFD A554 A555 FFFD FFFD A641 - FFFD CA6A FFFD AB60 AB5F D0E0 D0DF B0C3 - FFFD A4BE C955 FFFD FFFD FFFD FFFD FFFD - CBCD FFFD AB61 FFFD ADE0 FFFD ADDE ADDF - FFFD FFFD FFFD FFFD BEAD FFFD A556 FFFD - FFFD FFFD A642 C9BC FFFD FFFD FFFD FFFD - A74D A74E FFFD CA6B FFFD FFFD CBCE A8E6 - CBCF FFFD FFFD FFFD FFFD FFFD D0E2 D0E3 - ADE3 FFFD D0E4 FFFD D0E1 ADE4 ADE2 ADE1 - D0E5 FFFD D468 FFFD FFFD FFFD D861 FFFD - FFFD DCC5 E140 FFFD FFFD FFFD BBFE BEAE - E8F9 FFFD A44C A45A -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 51F0 - srcEnd = 52AE - mappingOffset = 052E - Mapping = - B0C4 B3CD FFFD B9B9 FFFD C942 A4BF FFFD - A559 A557 A558 FFFD FFFD A8E7 FFFD FFFD - A44D A44E FFFD A462 FFFD FFFD A4C0 A4C1 - A4C2 C9BE A55A FFFD C96B FFFD A646 FFFD - C9BF A644 A645 C9BD FFFD FFFD A647 A643 - FFFD FFFD FFFD FFFD CA6C AAEC CA6D FFFD - FFFD CA6E FFFD FFFD A750 A74F FFFD FFFD - A753 A751 A752 FFFD FFFD FFFD A8ED FFFD - A8EC CBD4 CBD1 CBD2 FFFD CBD0 A8EE A8EA - A8E9 FFFD A8EB A8E8 FFFD FFFD FFFD FFFD - FFFD A8EF FFFD AB63 CDF0 FFFD CBD3 AB68 - FFFD CDF1 AB64 AB67 AB66 AB65 AB62 FFFD - FFFD FFFD D0E8 FFFD ADE7 D0EB ADE5 FFFD - FFFD FFFD D0E7 ADE8 ADE6 ADE9 D0E9 D0EA - FFFD D0E6 D0EC FFFD FFFD FFFD FFFD FFFD - FFFD B3D1 B0C5 D469 D46B D46A D46C B0C6 - FFFD FFFD B3CE FFFD B3CF B3D0 FFFD B6D0 - DCC7 FFFD DCC6 DCC8 DCC9 B6D1 FFFD B6CF - E141 E142 B9BB B9BA E35A FFFD FFFD BC40 - BC41 BC42 BC44 E4F2 E4F3 BC43 FFFD FFFD - FFFD BEAF FFFD BEB0 FFFD FFFD F1ED F5C3 - F5C2 F7D1 FFFD A44F FFFD FFFD FFFD A55C - A55B FFFD FFFD A648 FFFD FFFD C9C0 FFFD - FFFD A755 A756 A754 A757 CA6F CA70 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 52BB - srcEnd = 5454 - mappingOffset = 05ED - Mapping = - A8F1 CBD5 FFFD A8F0 FFFD CDF2 AB6C CDF3 - AB6B FFFD FFFD FFFD AB69 FFFD AB6A FFFD - FFFD FFFD D0ED FFFD FFFD FFFD FFFD B0C7 - D46E FFFD B0CA D46D B1E5 B0C9 B0C8 FFFD - B3D4 FFFD B3D3 B3D2 B6D2 FFFD FFFD B6D5 - B6D6 B6D4 FFFD B6D3 FFFD FFFD E143 FFFD - E144 FFFD FFFD FFFD E4F5 BC45 E4F4 FFFD - BEB1 ECBF C079 FFFD F1EE C455 FFFD A463 - A4C3 C956 FFFD A4C4 A4C5 FFFD FFFD FFFD - FFFD FFFD A55D A55E FFFD A649 CA71 CBD6 - CBD7 FFFD AB6D D0EE B0CC B0CB D863 D862 - FFFD FFFD A450 A4C6 A55F FFFD B0CD C943 - FFFD C96C A560 FFFD C9C2 A64B A64A C9C1 - A758 FFFD FFFD FFFD FFFD FFFD FFFD ADEA - FFFD FFFD D46F FFFD B6D7 E145 B9BC FFFD - FFFD E8FA FFFD FFFD F3FD FFFD A4C7 FFFD - FFFD CBD8 CDF4 B0D0 B0CE B0CF A451 FFFD - A464 A2CD A4CA FFFD A4C9 A4C8 A563 A562 - FFFD C96D C9C3 FFFD FFFD FFFD A8F5 A8F2 - A8F4 A8F3 FFFD FFFD AB6E FFFD FFFD B3D5 - FFFD A452 FFFD A4CB FFFD A565 A564 FFFD - CA72 FFFD FFFD A8F6 FFFD FFFD FFFD FFFD - FFFD C957 FFFD A567 A566 A64C A64D CA73 - A759 FFFD A75A FFFD A8F7 A8F8 A8F9 FFFD - AB6F CDF5 FFFD FFFD ADEB FFFD FFFD C944 - FFFD A4CC FFFD FFFD FFFD FFFD FFFD C9C4 - FFFD FFFD FFFD CA74 CA75 FFFD FFFD CBD9 - FFFD CBDA FFFD CDF7 CDF6 CDF9 CDF8 AB70 - FFFD D470 ADED D0EF ADEC FFFD FFFD FFFD - FFFD D864 B3D6 FFFD D865 FFFD FFFD FFFD - FFFD E146 B9BD FFFD FFFD FFFD FFFD BC46 - FFFD F1EF FFFD FFFD FFFD FFFD C958 FFFD - A568 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B0D1 FFFD FFFD FFFD FFFD A453 A465 A4CE - A4CD FFFD A4CF FFFD FFFD FFFD FFFD FFFD - FFFD A8FB FFFD A8FA A8FC FFFD FFFD FFFD - AB71 FFFD FFFD FFFD ADEE FFFD E8FB C24F - A466 A56A A579 A574 FFFD A56F A56E A575 - A573 A56C A57A A56D A569 A578 A577 A576 - A56B FFFD A572 FFFD FFFD A571 FFFD FFFD - A57B A570 FFFD FFFD FFFD FFFD A653 FFFD - A659 A655 FFFD A65B C9C5 A658 A64E A651 - A654 A650 A657 A65A A64F A652 A656 A65C - FFFD FFFD FFFD FFFD FFFD CA7E CA7B FFFD - A767 CA7C A75B A75D A775 A770 FFFD FFFD - FFFD CAA5 CA7D A75F A761 CAA4 A768 CA78 - A774 A776 A75C A76D FFFD CA76 A773 FFFD - A764 FFFD A76E A76F CA77 A76C A76A FFFD - A76B A771 CAA1 A75E FFFD A772 CAA3 A766 - A763 FFFD CA7A A762 CAA6 A765 FFFD A769 - FFFD FFFD FFFD A760 CAA2 FFFD FFFD FFFD - FFFD CA79 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 5460 - srcEnd = 551A - mappingOffset = 0787 - Mapping = - CBEB CBEA A94F CBED CBEF CBE4 CBE7 CBEE - A950 FFFD FFFD CBE1 CBE5 FFFD FFFD CBE9 - CE49 A94B CE4D A8FD CBE6 A8FE A94C A945 - A941 FFFD CBE2 A944 A949 A952 CBE3 CBDC - A943 CBDD CBDF FFFD A946 FFFD A948 CBDB - CBE0 FFFD FFFD A951 A94D CBE8 A953 FFFD - A94A CBDE A947 FFFD FFFD A942 A940 FFFD - CBEC FFFD A94E FFFD FFFD FFFD FFFD FFFD - CE48 CDFB CE4B FFFD FFFD CDFD AB78 ABA8 - AB74 ABA7 AB7D ABA4 AB72 CDFC CE43 ABA3 - CE4F ABA5 FFFD AB79 FFFD FFFD CE45 CE42 - AB77 FFFD CDFA ABA6 CE4A AB7C CE4C ABA9 - AB73 AB7E AB7B CE40 ABA1 CE46 CE47 AB7A - ABA2 AB76 FFFD FFFD FFFD FFFD AB75 CDFE - FFFD FFFD FFFD FFFD FFFD FFFD CE44 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD CE4E FFFD - D144 ADFB D0F1 FFFD D0F6 ADF4 AE40 D0F4 - ADEF ADF9 ADFE D0FB FFFD ADFA ADFD FFFD - FFFD D0FE ADF5 D0F5 FFFD FFFD FFFD D142 - D143 FFFD ADF7 D141 ADF3 AE43 FFFD D0F8 - FFFD ADF1 FFFD D146 D0F9 D0FD ADF6 AE42 - D0FA ADFC D140 D147 D4A1 FFFD D145 AE44 - ADF0 D0FC D0F3 FFFD ADF8 FFFD FFFD D0F2 - FFFD FFFD D0F7 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 5526 - srcEnd = 5752 - mappingOffset = 0842 - Mapping = - D0F0 AE41 FFFD FFFD D477 FFFD B0E4 D4A7 - B0E2 B0DF D47C B0DB D4A2 B0E6 D476 D47B - D47A ADF2 B0E1 D4A5 FFFD D4A8 D473 FFFD - B3E8 FFFD D4A9 B0E7 FFFD B0D9 B0D6 D47E - B0D3 FFFD D4A6 FFFD B0DA D4AA FFFD D474 - D4A4 B0DD D475 D478 D47D FFFD FFFD B0DE - B0DC B0E8 FFFD FFFD FFFD FFFD B0E3 FFFD - B0D7 B1D2 FFFD B0D8 D479 B0E5 B0E0 D4A3 - B0D5 FFFD FFFD FFFD B0D4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D471 - D472 D86A FFFD FFFD FFFD B3D7 B3DA D875 - B3EE D878 B3D8 D871 B3DE B3E4 B5BD FFFD - FFFD B3E2 D86E B3EF B3DB B3E3 D876 DCD7 - D87B D86F FFFD D866 D873 D86D B3E1 D879 - FFFD FFFD B3DD B3F1 B3EA FFFD B3DF B3DC - FFFD B3E7 FFFD D87A D86C D872 D874 D868 - D877 B3D9 D867 FFFD B3E0 B3F0 B3EC D869 - B3E6 FFFD FFFD B3ED B3E9 B3E5 FFFD D870 - FFFD FFFD FFFD FFFD FFFD B3EB FFFD FFFD - FFFD DCD5 DCD1 FFFD DCE0 DCCA DCD3 B6E5 - B6E6 B6DE DCDC B6E8 DCCF DCCE DCCC DCDE - B6DC DCD8 DCCD B6DF DCD6 B6DA DCD2 DCD9 - DCDB FFFD FFFD DCDF B6E3 DCCB B6DD DCD0 - FFFD B6D8 FFFD B6E4 DCDA B6E0 B6E1 B6E7 - B6DB A25F B6D9 DCD4 FFFD FFFD FFFD FFFD - FFFD B6E2 FFFD FFFD DCDD FFFD FFFD FFFD - B9CD B9C8 FFFD E155 E151 FFFD E14B B9C2 - B9BE E154 B9BF E14E E150 FFFD E153 FFFD - B9C4 FFFD B9CB B9C5 FFFD FFFD E149 B9C6 - B9C7 E14C B9CC FFFD E14A E14F B9C3 E148 - B9C9 B9C1 FFFD FFFD FFFD B9C0 E14D E152 - FFFD B9CA FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E147 FFFD BC4D E547 FFFD E544 FFFD - BC47 BC53 BC54 FFFD BC4A E542 BC4C E4F9 - BC52 FFFD E546 BC49 E548 BC48 FFFD E543 - E545 BC4B E541 E4FA E4F7 FFFD FFFD D86B - E4FD FFFD E4F6 E4FC E4FB FFFD E4F8 FFFD - BC4F FFFD FFFD FFFD FFFD BC4E FFFD FFFD - FFFD BC50 E4FE BEB2 E540 FFFD FFFD FFFD - E945 FFFD E8FD FFFD BEBE E942 BEB6 BEBA - E941 FFFD BEB9 BEB5 BEB8 BEB3 BEBD E943 - E8FE BEBC E8FC BEBB E944 E940 BC51 FFFD - BEBF E946 BEB7 BEB4 FFFD FFFD FFFD FFFD - ECC6 ECC8 C07B ECC9 ECC7 ECC5 ECC4 C07D - ECC3 C07E FFFD FFFD FFFD FFFD ECC1 ECC2 - C07A C0A1 C07C FFFD FFFD ECC0 FFFD C250 - FFFD EFBC EFBA EFBF EFBD FFFD EFBB EFBE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C360 - F1F2 F1F3 C456 FFFD F1F4 F1F0 F1F5 F1F1 - C251 FFFD FFFD FFFD F3FE F441 C459 F440 - C458 C457 FFFD FFFD FFFD FFFD C45A F5C5 - F5C6 FFFD C4DA C4D9 C4DB F5C4 FFFD F6D8 - F6D7 FFFD C56D C56F C56E F6D9 C5C8 F8A6 - FFFD FFFD FFFD C5F1 FFFD F8A5 F8EE FFFD - FFFD C949 FFFD FFFD A57D A57C FFFD A65F - A65E C9C7 A65D C9C6 FFFD FFFD A779 CAA9 - FFFD CAA8 FFFD FFFD A777 A77A FFFD FFFD - CAA7 FFFD A778 FFFD FFFD FFFD FFFD FFFD - FFFD CBF0 FFFD CBF1 A954 FFFD FFFD FFFD - FFFD ABAA FFFD D148 D149 AE45 AE46 FFFD - FFFD D4AC B0E9 B0EB D4AB B0EA D87C B3F2 - FFFD FFFD FFFD FFFD B6E9 B6EA DCE1 FFFD - B9CF FFFD B9CE FFFD E549 E948 E947 FFFD - F96B A467 C959 FFFD C96E C96F FFFD FFFD - FFFD FFFD A662 A666 C9C9 FFFD A664 A663 - C9C8 A665 A661 FFFD FFFD A660 C9CA FFFD - FFFD FFFD FFFD FFFD FFFD A7A6 FFFD FFFD - A7A3 FFFD A77D CAAA FFFD FFFD FFFD CAAB - FFFD A7A1 FFFD CAAD A77B CAAE CAAC A77E - A7A2 A7A5 A7A4 A77C CAAF -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 5761 - srcEnd = 5CB8 - mappingOffset = 0A6F - Mapping = - A959 CBFE FFFD A95B FFFD A95A FFFD CC40 - A958 A957 CBF5 FFFD CBF4 FFFD CBF2 CBF7 - CBF6 CBF3 CBFC CBFD CBFA CBF8 A956 FFFD - FFFD FFFD CBFB A95C CC41 FFFD FFFD CBF9 - FFFD ABAB A955 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD ABAC CE54 FFFD FFFD CE5A FFFD - FFFD FFFD ABB2 CE58 CE5E FFFD CE55 CE59 - CE5B CE5D CE57 FFFD CE56 CE51 CE52 ABAD - FFFD ABAF ABAE CE53 CE5C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD ABB1 FFFD FFFD - FFFD FFFD FFFD FFFD CE50 D153 FFFD D152 - D157 D14E FFFD D151 D150 FFFD D154 FFFD - D158 AE47 AE4A FFFD FFFD D14F D155 FFFD - FFFD FFFD AE49 D14A FFFD ABB0 D4BA D156 - FFFD D14D FFFD AE48 D14C FFFD FFFD FFFD - FFFD FFFD FFFD D4B1 FFFD FFFD B0EC B0F0 - D4C1 D4AF D4BD B0F1 D4BF FFFD D4C5 FFFD - D4C9 FFFD FFFD D4C0 D4B4 D4BC FFFD D4CA - D4C8 D4BE D4B9 D4B2 D8A6 D4B0 B0F5 D4B7 - B0F6 B0F2 D4AD D4C3 D4B5 FFFD FFFD D4B3 - D4C6 B0F3 FFFD D4CC B0ED B0EF D4BB D4B6 - AE4B B0EE D4B8 D4C7 D4CB D4C2 FFFD D4C4 - FFFD FFFD FFFD D4AE FFFD FFFD FFFD FFFD - D8A1 FFFD D8AA D8A9 B3FA D8A2 FFFD B3FB - B3F9 FFFD D8A4 B3F6 D8A8 FFFD D8A3 D8A5 - D87D B3F4 FFFD D8B2 D8B1 D8AE B3F3 B3F7 - B3F8 D14B D8AB B3F5 B0F4 D8AD D87E D8B0 - D8AF FFFD D8B3 FFFD DCEF FFFD D8AC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D8A7 - DCE7 B6F4 B6F7 B6F2 DCE6 DCEA DCE5 FFFD - B6EC B6F6 DCE2 B6F0 DCE9 FFFD B6EE B6ED - DCEC B6EF DCEE FFFD DCEB B6EB FFFD FFFD - FFFD B6F5 DCF0 DCE4 DCED FFFD FFFD DCE3 - FFFD FFFD B6F1 FFFD B6F3 FFFD DCE8 FFFD - DCF1 FFFD FFFD E15D B9D0 E163 FFFD FFFD - B9D5 E15F E166 E157 B9D7 B9D1 E15C BC55 - E15B E164 B9D2 FFFD B9D6 E15A E160 E165 - E156 B9D4 E15E FFFD FFFD E162 E168 E158 - E161 FFFD B9D3 E167 FFFD FFFD FFFD E159 - FFFD FFFD FFFD BC59 E54B BC57 BC56 E54D - E552 FFFD E54E FFFD E551 BC5C FFFD BEA5 - BC5B FFFD E54A E550 FFFD BC5A E54F FFFD - E54C FFFD BC58 FFFD FFFD FFFD FFFD FFFD - FFFD E94D F9D9 E94F E94A BEC1 E94C FFFD - BEC0 E94E FFFD FFFD BEC3 E950 BEC2 E949 - E94B FFFD FFFD FFFD FFFD C0A5 ECCC FFFD - C0A4 ECCD C0A3 ECCB C0A2 ECCA FFFD C253 - C252 F1F6 F1F8 FFFD F1F7 C361 C362 FFFD - FFFD C363 F442 C45B FFFD FFFD F7D3 F7D2 - C5F2 FFFD A468 A4D0 FFFD FFFD A7A7 FFFD - FFFD FFFD FFFD CE5F FFFD FFFD FFFD FFFD - B3FC B3FD FFFD DCF2 B9D8 E169 E553 FFFD - FFFD FFFD C95A FFFD FFFD CAB0 FFFD FFFD - FFFD FFFD FFFD CC42 CE60 D159 AE4C FFFD - FFFD F1F9 FFFD C4DC A469 A57E C970 FFFD - A667 A668 FFFD A95D FFFD FFFD FFFD B0F7 - FFFD B9DA FFFD B9DB B9D9 FFFD A46A FFFD - A4D1 A4D3 A4D2 C95B A4D4 A5A1 C971 FFFD - A5A2 FFFD FFFD FFFD FFFD FFFD A669 A66A - FFFD FFFD FFFD C9CB FFFD A7A8 FFFD CAB1 - FFFD FFFD FFFD A961 CC43 FFFD A95F A960 - A95E D15A FFFD FFFD FFFD ABB6 ABB5 ABB7 - ABB4 FFFD CE61 A962 ABB3 FFFD AE4D AE4E - FFFD AE4F FFFD D4CD FFFD FFFD FFFD B3FE - D8B4 B0F8 FFFD FFFD FFFD FFFD B6F8 FFFD - B9DD B9DC E16A FFFD BC5D BEC4 FFFD EFC0 - F6DA F7D4 A46B A5A3 FFFD A5A4 C9D1 A66C - A66F FFFD C9CF C9CD A66E C9D0 C9D2 C9CC - A671 A670 A66D A66B C9CE FFFD FFFD FFFD - FFFD A7B3 FFFD FFFD A7B0 CAB6 CAB9 CAB8 - FFFD A7AA A7B2 FFFD FFFD A7AF CAB5 CAB3 - A7AE FFFD FFFD FFFD A7A9 A7AC FFFD CAB4 - CABB CAB7 A7AD A7B1 A7B4 CAB2 CABA A7AB - FFFD FFFD FFFD FFFD FFFD A967 A96F FFFD - CC4F CC48 A970 CC53 CC44 CC4B FFFD FFFD - A966 CC45 A964 CC4C CC50 A963 FFFD CC51 - CC4A FFFD CC4D FFFD A972 A969 CC54 CC52 - FFFD A96E A96C CC49 A96B CC47 CC46 A96A - A968 A971 A96D A965 FFFD CC4E FFFD ABB9 - FFFD ABC0 CE6F ABB8 CE67 CE63 FFFD CE73 - CE62 FFFD ABBB CE6C ABBE ABC1 FFFD ABBC - CE70 ABBF FFFD AE56 CE76 CE64 FFFD FFFD - CE66 CE6D CE71 CE75 CE72 CE6B CE6E FFFD - FFFD CE68 ABC3 CE6A CE69 CE74 ABBA CE65 - ABC2 FFFD ABBD FFFD FFFD FFFD FFFD FFFD - AE5C D162 FFFD AE5B FFFD FFFD D160 FFFD - AE50 FFFD AE55 FFFD D15F D15C D161 AE51 - D15B FFFD AE54 AE52 FFFD D163 AE53 AE57 - FFFD FFFD AE58 FFFD AE5A FFFD FFFD FFFD - AE59 FFFD FFFD FFFD D15D D15E FFFD FFFD - FFFD FFFD D164 FFFD D4D4 B0F9 D8C2 D4D3 - D4E6 FFFD FFFD B140 FFFD D4E4 FFFD B0FE - B0FA D4ED D4DD D4E0 FFFD B143 D4EA D4E2 - B0FB B144 FFFD D4E7 D4E5 FFFD FFFD D4D6 - D4EB D4DF D4DA FFFD D4D0 D4EC D4DC D4CF - FFFD B142 D4E1 D4EE D4DE D4D2 D4D7 D4CE - FFFD B141 FFFD D4DB D4D8 B0FC D4D1 FFFD - D4E9 B0FD FFFD D4D9 D4D5 FFFD FFFD D4E8 - FFFD FFFD FFFD FFFD FFFD FFFD B440 D8BB - FFFD D8B8 D8C9 D8BD D8CA FFFD B442 FFFD - FFFD FFFD D8C6 D8C3 FFFD FFFD FFFD FFFD - FFFD D8C4 D8C7 D8CB FFFD D4E3 D8CD DD47 - FFFD B443 D8CE D8B6 D8C0 FFFD D8C5 FFFD - FFFD B441 B444 D8CC D8CF D8BA D8B7 FFFD - FFFD D8B9 FFFD FFFD D8BE D8BC B445 FFFD - D8C8 FFFD FFFD D8BF FFFD D8C1 D8B5 DCFA - DCF8 B742 B740 DD43 DCF9 DD44 DD40 DCF7 - DD46 DCF6 DCFD B6FE B6FD B6FC DCFB DD41 - B6F9 B741 FFFD DCF4 FFFD DCFE DCF3 DCFC - B6FA DD42 DCF5 B6FB DD45 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E16E B9E2 B9E1 B9E3 - E17A E170 E176 E16B E179 E178 E17C E175 - B9DE E174 B9E4 FFFD E16D B9DF FFFD E17B - B9E0 E16F E172 E177 E171 E16C FFFD FFFD - FFFD FFFD E173 E555 BC61 E558 E557 E55A - E55C F9DC BC5F FFFD E556 FFFD E554 FFFD - E55D E55B E559 FFFD E55F FFFD E55E BC63 - BC5E FFFD BC60 BC62 FFFD FFFD E560 E957 - FFFD FFFD E956 E955 FFFD E958 E951 FFFD - E952 E95A E953 FFFD BEC5 E95C FFFD E95B - E954 FFFD ECD1 C0A8 ECCF ECD4 ECD3 E959 - FFFD C0A7 FFFD ECD2 ECCE ECD6 ECD5 C0A6 - FFFD ECD0 FFFD BEC6 FFFD FFFD FFFD C254 - FFFD FFFD FFFD EFC1 F1FA F1FB F1FC C45C - FFFD FFFD C45D FFFD F443 FFFD F5C8 F5C7 - FFFD FFFD F6DB F6DC F7D5 F8A7 FFFD A46C - A46D FFFD A46E A4D5 A5A5 C9D3 A672 A673 - FFFD A7B7 A7B8 A7B6 A7B5 FFFD A973 FFFD - FFFD CC55 A975 A974 CC56 FFFD FFFD FFFD - ABC4 FFFD AE5D D165 FFFD D4F0 FFFD B145 - B447 D4EF B446 FFFD B9E5 FFFD E17D BEC7 - FFFD C0A9 ECD7 FFFD C45E FFFD C570 FFFD - C972 FFFD A5A6 C973 A676 FFFD A674 A675 - A677 FFFD A7BA A7B9 FFFD CABC A7BB FFFD - FFFD CABD CC57 FFFD CC58 FFFD A976 A978 - A97A A977 A97B A979 FFFD FFFD FFFD FFFD - FFFD ABC8 ABC5 ABC7 ABC9 ABC6 D166 CE77 - FFFD FFFD FFFD D168 D167 AE63 FFFD AE5F - FFFD FFFD AE60 AE62 AE64 AE61 FFFD AE66 - AE65 FFFD FFFD FFFD FFFD FFFD B14A D4F2 - D4F1 B149 FFFD B148 B147 B14B B146 FFFD - FFFD D8D5 D8D2 B449 D8D1 D8D6 FFFD B44B - D8D4 B448 B44A D8D3 FFFD DD48 FFFD DD49 - DD4A FFFD FFFD FFFD FFFD B9E6 B9EE E17E - B9E8 B9EC E1A1 B9ED B9E9 B9EA B9E7 B9EB - BC66 D8D0 BC67 BC65 FFFD BC64 E95D BEC8 - ECD8 ECD9 FFFD FFFD C364 C45F FFFD A46F - FFFD A678 FFFD FFFD FFFD FFFD FFFD FFFD - ABCA FFFD D169 AE67 FFFD FFFD B14E B14D - B14C B44C B44D D8D7 B9EF BEC9 A470 C95C - A4D6 C974 FFFD FFFD C9D4 A679 FFFD FFFD - FFFD A97C FFFD FFFD FFFD FFFD DD4B FFFD - FFFD A471 FFFD A4D7 C9D5 FFFD FFFD CABE - FFFD CABF FFFD A7BC FFFD FFFD FFFD D8D8 - B44E FFFD DD4C FFFD FFFD FFFD C0AA A472 - A4A8 A4D8 C975 A5A7 FFFD A7C0 A7BF A7BD - A7BE FFFD FFFD CC59 A97E A9A1 CC5A A97D - FFFD FFFD ABCE CE78 ABCD ABCB ABCC AE6A - AE68 FFFD FFFD D16B AE69 D16A FFFD AE5E - D4F3 FFFD FFFD B150 B151 FFFD FFFD B14F - FFFD B9F0 E1A2 BC68 BC69 FFFD E561 C0AB - EFC2 EFC3 FFFD C4DD F8A8 C94B A4D9 FFFD - A473 FFFD C977 C976 FFFD FFFD FFFD FFFD - A67A C9D7 C9D8 C9D6 FFFD C9D9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CAC7 FFFD CAC2 - CAC4 CAC6 CAC3 A7C4 CAC0 FFFD CAC1 A7C1 - A7C2 CAC5 CAC8 A7C3 CAC9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CC68 FFFD CC62 CC5D - A9A3 CC65 CC63 CC5C CC69 CC6C CC67 CC60 - A9A5 CC66 A9A6 CC61 CC64 CC5B CC5F CC6B - A9A7 FFFD A9A8 FFFD CC5E CC6A A9A2 A9A4 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 5CC6 - srcEnd = 6072 - mappingOffset = 0FC7 - Mapping = - CEAB CEA4 CEAA CEA3 CEA5 CE7D CE7B FFFD - CEAC CEA9 CE79 FFFD ABD0 CEA7 CEA8 FFFD - CEA6 CE7C CE7A ABCF CEA2 CE7E FFFD FFFD - CEA1 CEAD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD AE6F FFFD AE6E FFFD D16C AE6B - D16E FFFD AE70 D16F FFFD FFFD AE73 FFFD - AE71 D170 CEAE D172 FFFD AE6D FFFD AE6C - FFFD D16D D171 AE72 FFFD FFFD FFFD FFFD - B153 B152 FFFD FFFD FFFD D4F5 D4F9 D4FB - B154 D4FE FFFD B158 D541 FFFD B15A FFFD - B156 B15E FFFD B15B D4F7 B155 FFFD D4F6 - D4F4 D543 D4F8 FFFD B157 D542 B15C D4FD - D4FC B15D D4FA B159 FFFD FFFD FFFD FFFD - D544 FFFD D540 D8E7 D8EE D8E3 B451 D8DF - D8EF D8D9 D8EC D8EA D8E4 FFFD D8ED D8E6 - FFFD D8DE D8F0 D8DC D8E9 D8DA FFFD D8F1 - FFFD B452 FFFD D8EB DD4F D8DD B44F FFFD - D8E1 FFFD B450 D8E0 D8E5 FFFD FFFD D8E2 - FFFD FFFD FFFD D8E8 FFFD FFFD FFFD FFFD - DD53 FFFD FFFD FFFD DD56 DD4E FFFD DD50 - FFFD DD55 DD54 B743 FFFD D8DB DD52 FFFD - FFFD B744 FFFD DD4D DD51 FFFD FFFD FFFD - FFFD E1A9 FFFD E1B0 E1A7 FFFD E1AE E1A5 - E1AD E1B1 E1A4 E1A8 E1A3 FFFD B9F1 FFFD - E1A6 B9F2 E1AC E1AB E1AA FFFD FFFD E1AF - FFFD FFFD FFFD FFFD E565 E567 BC6B E568 - FFFD E563 FFFD E562 E56C FFFD E56A BC6A - E56D E564 E569 E56B E566 FFFD FFFD FFFD - FFFD E961 E966 E960 E965 FFFD E95E E968 - E964 E969 E963 E95F E967 FFFD E96A E962 - FFFD ECDA C0AF FFFD C0AD FFFD C0AC C0AE - FFFD FFFD EFC4 FFFD F172 F1FD FFFD FFFD - F444 F445 FFFD C460 FFFD F5C9 FFFD C4DE - FFFD F5CA FFFD F6DE C572 FFFD C571 F6DD - C5C9 FFFD F7D6 FFFD FFFD FFFD FFFD A474 - A67B C9DA CACA A8B5 B15F FFFD FFFD A475 - A5AA A5A9 A5A8 FFFD FFFD A7C5 FFFD FFFD - AE74 FFFD DD57 A476 A477 A478 A4DA FFFD - FFFD ABD1 FFFD CEAF FFFD FFFD FFFD B453 - A479 C95D FFFD FFFD A5AB A5AC C978 FFFD - A67C FFFD FFFD FFFD CACB FFFD A7C6 FFFD - CACC FFFD FFFD A9AE FFFD FFFD CC6E A9AC - A9AB CC6D A9A9 CC6F A9AA A9AD FFFD ABD2 - FFFD ABD4 CEB3 CEB0 CEB1 CEB2 CEB4 ABD3 - FFFD FFFD D174 D173 FFFD AE76 FFFD AE75 - FFFD FFFD FFFD FFFD FFFD B162 D546 FFFD - B161 B163 B160 FFFD FFFD FFFD FFFD B455 - D545 FFFD B456 D8F3 FFFD B457 D8F2 B454 - FFFD FFFD FFFD FFFD DD5A DD5C B745 DD5B - DD59 DD58 FFFD FFFD FFFD E1B4 B9F7 B9F5 - FFFD B9F6 E1B2 E1B3 FFFD B9F3 E571 E56F - FFFD BC6D E570 BC6E BC6C B9F4 FFFD FFFD - E96D E96B E96C E56E ECDC C0B0 ECDB EFC5 - EFC6 E96E F1FE FFFD A47A A5AD A67E C9DB - A67D FFFD A9AF B746 FFFD A4DB A5AE ABD5 - B458 FFFD C979 FFFD C97A FFFD C9DC FFFD - FFFD A7C8 CAD0 CACE A7C9 CACD CACF CAD1 - FFFD A7C7 FFFD FFFD FFFD FFFD FFFD A9B3 - A9B4 A9B1 FFFD FFFD A9B0 CEB8 A9B2 FFFD - FFFD FFFD ABD6 FFFD CEB7 CEB9 CEB6 CEBA - ABD7 AE79 D175 FFFD D177 AE77 D178 AE78 - D176 FFFD CEB5 D547 D54A D54B D548 B167 - B166 B164 B165 D549 FFFD FFFD FFFD FFFD - B168 FFFD FFFD B45A B45B FFFD B45C DD5D - DD5F DD61 B748 B747 B459 DD60 DD5E FFFD - E1B8 FFFD FFFD E1B6 E1BC B9F8 E1BD E1BA - B9F9 E1B7 E1B5 E1BB BC70 E573 E1B9 BC72 - E574 BC71 BC74 E575 BC6F BC73 FFFD E973 - E971 E970 E972 E96F FFFD FFFD C366 FFFD - F446 F447 FFFD F5CB F6DF C655 FFFD FFFD - A9B5 A7CA FFFD FFFD ABD8 FFFD FFFD FFFD - A47B A4DC FFFD A5AF C9DD FFFD A7CB CAD2 - FFFD CEBB ABD9 FFFD B9FA A47C FFFD FFFD - FFFD A6A1 FFFD FFFD B749 A47D A4DD A4DE - FFFD A5B1 A5B0 FFFD C9DE A6A2 FFFD CAD3 - FFFD A7CC FFFD FFFD CC71 CC72 CC73 FFFD - A9B6 A9B7 CC70 A9B8 FFFD FFFD FFFD ABDA - CEBC FFFD D17A AE7A FFFD D179 FFFD B169 - D54C B16A D54D FFFD FFFD FFFD B45D FFFD - FFFD FFFD DD62 FFFD FFFD E1BF E1BE FFFD - B9FB FFFD BC75 E576 BECA E974 C0B1 FFFD - C573 F7D8 FFFD FFFD FFFD FFFD CC74 FFFD - CEBD B16B D8F4 B74A FFFD FFFD FFFD C255 - FFFD FFFD FFFD FFFD A7CE FFFD A7CD ABDB - FFFD D17B FFFD B16D B343 B16E B16C B45E - FFFD E1C0 B9FC BC76 FFFD C94C C9DF FFFD - CAD5 A7CF CAD4 A7D0 FFFD FFFD A9BC CC77 - CC76 A9BB A9B9 A9BA CC75 FFFD FFFD ABDD - CEBE ABE0 ABDC ABE2 ABDE ABDF ABE1 FFFD - FFFD FFFD AE7D AE7C AE7B FFFD FFFD FFFD - D54F B16F B172 B170 FFFD D54E B175 FFFD - B171 D550 B174 B173 FFFD FFFD FFFD D8F6 - D8F5 FFFD B461 B45F B460 D8F7 B74B DD64 - B74C DD63 FFFD FFFD E577 FFFD FFFD BC78 - E1C1 BC77 FFFD B9FD FFFD ECDE E975 C0B2 - ECDD F240 F448 F449 FFFD A4DF FFFD A5B2 - FFFD FFFD FFFD C97B FFFD FFFD A7D2 A7D4 - FFFD C9E2 CAD8 CAD7 CAD6 FFFD C9E1 C9E0 - A6A4 A7D3 A7D1 A6A3 FFFD FFFD FFFD A9BD - CC78 FFFD A9BE CADD FFFD CADF CADE CC79 - FFFD FFFD CADA FFFD A7D8 A7D6 FFFD CAD9 - CADB CAE1 FFFD A7D5 FFFD CADC CAE5 A9C0 - FFFD CAE2 A7D7 FFFD CAE0 CAE3 FFFD A9BF - FFFD A9C1 CAE4 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD CCAF CCA2 CC7E CCAE CCA9 - ABE7 A9C2 CCAA CCAD ABE3 CCAC A9C3 A9C8 - A9C6 CCA3 FFFD CC7C CCA5 A9CD CCB0 ABE4 - CCA6 FFFD ABE5 A9C9 CCA8 FFFD CECD ABE6 - CC7B A9CA ABE8 A9CB A9C7 A9CC CCA7 CC7A - CCAB A9C4 FFFD FFFD CC7D CCA4 CCA1 A9C5 - FFFD CEBF FFFD CEC0 FFFD FFFD FFFD FFFD - FFFD FFFD CECA D1A1 CECB ABEE CECE CEC4 - ABED CEC6 FFFD CEC7 FFFD FFFD CEC9 ABE9 - FFFD FFFD AEA3 FFFD F9DA CEC5 CEC1 AEA4 - FFFD FFFD CECF AE7E D17D CEC8 FFFD D17C - CEC3 CECC FFFD FFFD ABEC AEA1 ABF2 AEA2 - CED0 D17E ABEB AEA6 ABF1 ABF0 ABEF AEA5 - CED1 AEA7 ABEA FFFD CEC2 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 607F - srcEnd = 6298 - mappingOffset = 1374 - Mapping = - B176 D1A4 D1A6 FFFD D1A8 AEA8 AEAE D553 - D1AC D1A3 B178 D551 FFFD AEAD AEAB D1AE - FFFD D552 FFFD D1A5 FFFD AEAC D1A9 AEAF - D1AB FFFD FFFD AEAA D1AA D1AD D1A7 FFFD - AEA9 B179 FFFD D1A2 B177 FFFD FFFD FFFD - FFFD B17A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D555 D55E B464 FFFD B17C B1A3 B465 - D560 B1AA D8F9 D556 B1A2 B1A5 B17E D554 - D562 D565 D949 FFFD D563 D8FD B1A1 B1A8 - B1AC D55D D8F8 D561 B17B D8FA D564 D8FC - D559 FFFD B462 FFFD D557 D558 B1A7 FFFD - FFFD B1A6 D55B B1AB D55F B1A4 D55C FFFD - B1A9 B466 B463 D8FB FFFD D55A FFFD B17D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B46B B46F D940 B751 B46D D944 B471 - DD65 D946 B753 B469 B46C D947 FFFD D948 - D94E B473 B754 FFFD D94A D94F D943 B75E - FFFD B755 B472 D941 D950 FFFD B75D B470 - B74E D94D FFFD B474 D945 D8FE B46A D942 - FFFD D94B FFFD B74D B752 B467 D94C FFFD - B750 FFFD FFFD FFFD B468 FFFD FFFD FFFD - B75C E1C3 DD70 FFFD DD68 E1C2 FFFD DD6C - DD6E FFFD FFFD DD6B FFFD B75B FFFD DD6A - B75F FFFD FFFD FFFD E1D2 FFFD FFFD B75A - BA40 DD71 E1C4 FFFD FFFD B758 DD69 DD6D - B9FE B74F DD66 DD67 BA41 B757 B759 B756 - DD6F FFFD FFFD E1C8 E1C9 E1CE BC7D E1D5 - FFFD BA47 FFFD BA46 E1D0 FFFD BC7C E1C5 - BA45 FFFD E1D4 BA43 BA44 FFFD E1D1 E5AA - BC7A B46E FFFD E1D3 BCA3 E1CB FFFD BC7B - FFFD BCA2 E1C6 E1CA E1C7 E1CD BA48 BC79 - BA42 FFFD E57A E1CF FFFD BCA1 FFFD BCA4 - FFFD E1CC FFFD BC7E E579 FFFD FFFD FFFD - FFFD FFFD E57E BECE E578 E9A3 E5A9 BCA8 - FFFD BCA6 BECC E5A6 E5A2 BCAC FFFD E978 - FFFD FFFD FFFD BCAA E5A1 FFFD E976 FFFD - E5A5 FFFD E5A8 E57D FFFD BCAB FFFD FFFD - BCA5 E977 BECD E5A7 BCA7 BCA9 E5A4 BCAD - E5A3 E57C E57B BECB E5AB E97A ECE0 BED0 - FFFD E9A2 FFFD E97E FFFD ECE1 FFFD BED1 - E9A1 FFFD E97C C0B4 ECDF FFFD E979 E97B - C0B5 BED3 C0B3 BED2 C0B7 E97D BECF FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EFCF - FFFD EFC7 FFFD FFFD FFFD FFFD FFFD ECE7 - EFC8 ECE3 FFFD FFFD C256 ECE5 ECE4 C0B6 - ECE2 ECE6 EFD0 EFCC EFCE FFFD EFC9 EFCA - FFFD EFCD EFCB C367 FFFD FFFD C36A C369 - C368 C461 F44A C462 F241 C4DF F5CC C4E0 - C574 C5CA F7D9 FFFD F7DA F7DB FFFD FFFD - F9BA A4E0 C97C A5B3 FFFD A6A6 A6A7 A6A5 - FFFD A6A8 A7DA A7D9 FFFD CCB1 A9CF A9CE - FFFD FFFD D1AF B1AD B1AE FFFD FFFD FFFD - B475 DD72 B760 B761 DD74 DD76 DD75 FFFD - E1D7 FFFD E1D6 BA49 E1D8 FFFD E5AC BCAE - FFFD BED4 FFFD C0B8 C257 C0B9 FFFD A4E1 - FFFD FFFD FFFD CAE6 FFFD FFFD CCB2 A9D1 - A9D0 A9D2 ABF3 CED2 CED3 FFFD FFFD D1B0 - AEB0 B1AF B476 D951 A4E2 FFFD A47E A4E3 - FFFD C97D A5B7 A5B6 A5B4 A5B5 FFFD FFFD - FFFD A6AB C9E9 C9EB A6AA C9E3 FFFD C9E4 - FFFD C9EA C9E6 C9E8 A6A9 C9E5 C9EC C9E7 - FFFD FFFD FFFD FFFD FFFD FFFD A7E1 A7EA - A7E8 CAF0 CAED CAF5 A7E6 CAF6 FFFD A7DF - CAF3 FFFD A7E5 CAEF CAEE A7E3 CAF4 A7E4 - A9D3 A7DE CAF1 FFFD CAE7 A7DB FFFD A7EE - CAEC CAF2 A7E0 A7E2 FFFD CAE8 FFFD CAE9 - CAEA FFFD A7ED A7E7 A7EC CAEB A7EB A7DD - A7DC A7E9 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 62A8 - srcEnd = 62DC - mappingOffset = 158E - Mapping = - A9E1 CCBE CCB7 A9DC A9EF CCB3 CCBA CCBC - CCBF A9EA FFFD CCBB CCB4 A9E8 CCB8 FFFD - CCC0 A9D9 FFFD CCBD A9E3 A9E2 CCB6 A9D7 - FFFD FFFD A9D8 FFFD A9D6 FFFD A9EE A9E6 - A9E0 A9D4 CCB9 A9DF A9D5 A9E7 A9F0 CED4 - A9E4 CCB5 A9DA A9DD A9DE FFFD A9EC A9ED - A9EB A9E5 A9E9 A9DB ABF4 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 62EB - srcEnd = 6316 - mappingOffset = 15C3 - Mapping = - CEDA AC41 ABF8 ABFA AC40 CEE6 ABFD D1B1 - AEB1 AC43 CED7 CEDF ABFE CEDE CEDB CEE3 - CEE5 ABF7 ABFB AC42 AEB3 CEE0 ABF9 AC45 - CED9 FFFD FFFD FFFD ABFC AEB2 ABF6 FFFD - CED6 CEDD CED5 CED8 CEDC D1B2 AC44 FFFD - CEE1 CEE2 CEE4 ABF5 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 6328 - srcEnd = 63B1 - mappingOffset = 15EF - Mapping = - AEC1 D1BE AEBF AEC0 D1B4 D1C4 FFFD AEB6 - FFFD FFFD D566 D1C6 D1C0 FFFD D1B7 FFFD - D1C9 D1BA AEBC D57D D1BD AEBE AEB5 FFFD - D1CB D1BF AEB8 D1B8 D1B5 D1B6 AEB9 D1C5 - D1CC AEBB D1BC D1BB AEC3 AEC2 AEB4 AEBA - AEBD D1C8 FFFD FFFD D1C2 AEB7 D1B3 D1CA - D1C1 D1C3 D1C7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D567 FFFD B1B7 - B1CB B1CA FFFD B1BF FFFD D579 D575 D572 - D5A6 B1BA B1B2 FFFD FFFD D577 B4A8 B1B6 - D5A1 FFFD B1CC B1C9 D57B D56A FFFD FFFD - B1C8 D5A3 D569 B1BD B1C1 D5A2 FFFD D573 - B1C2 B1BC D568 FFFD B478 D5A5 D571 B1C7 - D574 D5A4 B1C6 FFFD D952 FFFD B1B3 D56F - B1B8 B1C3 FFFD B1BE D578 D56E D56C D57E - B1B0 B1C4 B1B4 B477 D57C B1B5 FFFD B1B1 - B1C0 B1BB B1B9 D570 B1C5 D56D D57A D576 - D954 D953 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 63BD - srcEnd = 63F9 - mappingOffset = 1679 - Mapping = - D56B D964 FFFD B47A FFFD D96A D959 D967 - DD77 B47D D96B D96E B47C D95C D96D D96C - B47E D955 B479 B4A3 FFFD B4A1 D969 FFFD - D95F B4A5 D970 D968 D971 B4AD B4AB D966 - D965 FFFD D963 D95D B4A4 FFFD B4A2 D1B9 - D956 FFFD DDB7 D957 B47B B4AA DD79 FFFD - B4A6 B4A7 D958 D96F DD78 D960 D95B B4A9 - D961 D95E FFFD FFFD B4AE -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 6406 - srcEnd = 679F - mappingOffset = 16B6 - Mapping = - B770 FFFD FFFD DD7C DDB1 DDB6 DDAA B76C - DDBB B769 DD7A FFFD DD7B B762 B76B DDA4 - B76E B76F DDA5 FFFD DDB2 DDB8 B76A FFFD - B764 DDA3 DD7D DDBA DDA8 DDA9 DD7E DDB4 - DDAB DDB5 DDAD FFFD B765 E1D9 B768 B766 - DDB9 DDB0 DDAC FFFD FFFD DDA1 BA53 DDAF - B76D DDA7 FFFD DDA6 FFFD FFFD FFFD B767 - B763 E1EE DDB3 DDAE FFFD DDA2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E1E9 FFFD E1DA - E1E5 FFFD E1EC BA51 B4AC E1EA BA4C FFFD - FFFD FFFD BA4B E1F1 FFFD E1DB E1E8 E1DC - E1E7 BA4F E1EB D962 FFFD FFFD FFFD E1F2 - E1E3 BA52 E5BA BCAF FFFD E1F0 E1EF BA54 - E5AD BCB0 E5AE FFFD E1DF E1E0 E1DD E1E2 - E1DE E1F3 BA4E BCB1 BA50 BA55 FFFD E1E1 - FFFD E1ED FFFD FFFD E1E6 FFFD FFFD E5B1 - FFFD BA4A BCB4 E9AA E5B6 E5B5 E5B7 FFFD - FFFD E5B4 BCB5 FFFD BCBB BCB8 FFFD BCB9 - E5AF E5B2 E5BC BCC1 BCBF FFFD E5B3 D95A - BCB2 E5B9 E5B0 FFFD BCC2 E5B8 BA4D BCB7 - E1E4 FFFD FFFD BCBA FFFD BCBE BCC0 BCBD - BCBC FFFD BCB6 E5BB BCB3 BCC3 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BED8 BED9 E9A9 - BEE2 BEDF FFFD BED6 BEDD E9AB BEDB BED5 - FFFD BEDC FFFD E9A8 C0BB BED7 FFFD BEDE - C0BA E9A7 E9A6 FFFD BEE0 FFFD BEE1 FFFD - E9A5 E9A4 C0BC E9AE BEDA E9AC FFFD FFFD - FFFD FFFD C0BD FFFD C0C2 ECEA ECEC FFFD - C0BF FFFD ECED ECE9 FFFD ECEB C0C0 C0C3 - FFFD ECE8 C0BE C0C1 C259 E9AD C258 FFFD - FFFD C25E EFD4 FFFD C25C C25D EFD7 EFD3 - C25A EFD1 C36B EFD5 FFFD EFD6 EFD2 FFFD - C25B F242 FFFD F245 FFFD FFFD F246 F244 - F247 C36C F243 FFFD FFFD F44E C464 F44D - F44C F44B C463 C465 FFFD F5CD C4E2 C4E1 - FFFD FFFD F6E1 F6E0 F6E3 C5CB C575 F7DD - F6E2 FFFD FFFD F7DC C5CD C5CC C5F3 F8A9 - F8EF A4E4 FFFD FFFD D972 E9AF FFFD FFFD - A6AC CAF7 A7F1 A7EF FFFD A7F0 FFFD CCC1 - A9F1 AC46 FFFD CEE7 FFFD CEE8 FFFD AC47 - D1CE FFFD AEC4 AEC5 D1CD FFFD FFFD FFFD - FFFD B1D3 FFFD B1CF FFFD D5A7 B1D6 B1D5 - B1CE B1D1 B1D4 B1D0 FFFD FFFD D976 B1CD - B4AF FFFD FFFD FFFD B4B1 B4B2 D975 D978 - B4B0 D973 D977 FFFD D974 FFFD B771 FFFD - FFFD DDBC FFFD FFFD BA56 E1F4 BEE3 BCC4 - E5BD BCC5 BCC6 E5BF E5BE E5C0 E9B1 FFFD - FFFD E9B0 ECEF ECEE C0C4 C0C5 F248 FFFD - FFFD A4E5 FFFD FFFD FFFD FFFD D979 FFFD - FFFD FFFD B4B4 B4B3 DDBD FFFD EFD8 C4E3 - F7DE A4E6 FFFD AEC6 FFFD B1D8 B1D7 D97A - D97B B772 E1F5 BA57 E9B2 FFFD A4E7 A5B8 - FFFD A9F2 CCC2 FFFD CEE9 AC48 B1D9 FFFD - D97C B4B5 B773 FFFD E5C1 E5C2 FFFD FFFD - ECF0 C25F F8F0 A4E8 FFFD CCC3 A9F3 AC49 - FFFD CEEA FFFD AEC7 D1D2 D1D0 D1D1 AEC8 - D1CF FFFD FFFD FFFD FFFD B1DB B1DC D5A8 - B1DD B1DA D97D FFFD D97E DDBE FFFD FFFD - BA59 BA58 FFFD FFFD ECF1 EFD9 FFFD F24A - F249 F44F FFFD C95E AC4A FFFD FFFD A4E9 - A5B9 FFFD A6AE A6AD FFFD FFFD A6AF A6B0 - C9EE C9ED CAF8 A7F2 CAFB CAFA CAF9 CAFC - FFFD FFFD FFFD FFFD A9F4 CCC9 CCC5 CCCE - FFFD FFFD A9FB FFFD A9F9 CCCA CCC6 CCCD - A9F8 AA40 CCC8 CCC4 A9FE CCCB A9F7 CCCC - A9FA A9FC CCD0 CCCF CCC7 A9F6 A9F5 A9FD - FFFD FFFD FFFD FFFD FFFD FFFD CEEF CEF5 - FFFD AC50 AC4D CEEC CEF1 FFFD AC53 AC4B - CEF0 AC4E AC51 FFFD FFFD CEF3 FFFD AC4C - CEF8 AC4F FFFD AC52 CEED CEF2 CEF6 CEEE - CEEB FFFD FFFD CEF7 CEF4 FFFD FFFD FFFD - FFFD FFFD FFFD AED0 AEC9 AECC FFFD AECF - FFFD D1D5 FFFD AECA D1D3 FFFD AECE FFFD - FFFD AECB FFFD D1D6 AECD FFFD FFFD FFFD - FFFD FFFD FFFD D5AC B1DF D5AB D5AD B1DE - B1E3 D1D4 FFFD D5AA D5AE FFFD B1E0 D5A9 - B1E2 FFFD B1E1 FFFD D9A7 FFFD D9A2 FFFD - B4B6 B4BA B4B7 D9A5 D9A8 FFFD B4B8 FFFD - B4B9 B4BE DDC7 D9A6 B4BC D9A3 D9A1 FFFD - B4BD FFFD D9A4 FFFD FFFD FFFD B779 FFFD - DDBF B776 B777 B775 DDC4 DDC3 DDC0 B77B - FFFD FFFD DDC2 B4BB FFFD FFFD DDC6 DDC1 - B778 B774 B77A DDC5 FFFD FFFD FFFD BA5C - FFFD E1F8 E1F7 E1F6 BA5A FFFD FFFD FFFD - FFFD FFFD BA5B E5C5 E5C8 BCC8 FFFD FFFD - BCC7 E5C9 E5C4 BCCA E5C6 FFFD BCC9 E5C3 - FFFD E5C7 BEE9 BEE6 E9BB E9BA FFFD E9B9 - E9B4 FFFD E9B5 FFFD FFFD FFFD BEE7 FFFD - BEE4 BEE8 E9B3 BEE5 E9B6 E9B7 E9BC FFFD - FFFD E9B8 FFFD FFFD ECF2 FFFD FFFD FFFD - C0C7 FFFD EFDC C0C6 EFDA EFDB C260 C36E - F24B FFFD C36D FFFD FFFD F451 F452 FFFD - C466 FFFD F450 C4E4 FFFD F7DF C5CE F8AA - F8AB FFFD A4EA FFFD A6B1 A6B2 A7F3 FFFD - CCD1 AC54 AED1 B1E4 FFFD FFFD B0D2 FFFD - B4BF B4C0 B3CC D9A9 FFFD B77C E1FA E1F9 - FFFD FFFD A4EB A6B3 CCD2 AA42 FFFD AA41 - FFFD CEF9 CEFA FFFD D1D7 D1D8 AED2 AED3 - FFFD AED4 D5AF FFFD FFFD B1E6 FFFD B4C2 - FFFD B4C1 DDC8 DF7A E1FB E9BD FFFD FFFD - C261 C467 A4EC FFFD A5BC A5BD A5BB A5BE - A5BA FFFD FFFD A6B6 FFFD C9F6 A6B5 A6B7 - FFFD FFFD C9F1 C9F0 C9F3 C9F2 C9F5 A6B4 - C9EF C9F4 FFFD FFFD FFFD FFFD FFFD CAFD - A7FD CAFE CB43 A7FC FFFD CB47 CB42 CB45 - A7F5 A7F6 A7F7 A7F8 FFFD A840 FFFD CB41 - A7FA A841 FFFD CB40 CB46 FFFD A7F9 CB44 - A7FB A7F4 A7FE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD AA57 FFFD CCD4 AA43 - FFFD AA4D AA4E AA46 AA58 AA48 CCDC AA53 - CCD7 AA49 CCE6 CCE7 CCDF CCD8 AA56 CCE4 - AA51 AA4F FFFD CCE5 FFFD CCE3 CCDB CCD3 - CCDA AA4A FFFD AA50 FFFD AA44 CCDE CCDD - CCD5 FFFD AA52 CCE1 CCD6 AA55 CCE8 AA45 - FFFD AA4C CCD9 CCE2 AA54 FFFD AA47 AA4B - FFFD CCE0 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 67AE - srcEnd = 67FF - mappingOffset = 1A50 - Mapping = - CF5B AC5C AC69 FFFD CF56 CF4C AC62 CF4A - AC5B CF45 AC65 CF52 CEFE CF41 FFFD FFFD - FFFD FFFD CF44 CEFB CF51 CF61 AC60 CF46 - CF58 FFFD CEFD CF5F CF60 CF63 CF5A CF4B - CF53 AC66 AC59 AC61 AC6D AC56 AC58 FFFD - FFFD FFFD CF43 AC6A AC63 CF5D CF40 AC6C - AC67 CF49 FFFD FFFD AC6B CF50 CF48 AC64 - CF5C CF54 FFFD AC5E CF62 CF47 AC5A CF59 - CF4F AC5F CF55 AC57 CEFC AC68 AEE3 AC5D - CF4E CF4D CF42 FFFD CF5E FFFD CF57 FFFD - FFFD AC55 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 6812 - srcEnd = 6854 - mappingOffset = 1AA2 - Mapping = - D1EC AEEA D1ED FFFD D1E1 AEDF AEEB FFFD - D1DA FFFD D1E3 D1EB FFFD D1D9 D1F4 AED5 - FFFD FFFD FFFD D1F3 D1EE FFFD D1EF AEDD - AEE8 D1E5 FFFD D1E6 D1F0 D1E7 FFFD D1E2 - D1DC D1DD D1EA D1E4 FFFD FFFD AED6 AEDA - D1F2 D1DE AEE6 AEE2 FFFD FFFD AEE5 AEEC - AEDB AEE7 D1E9 AEE9 AED8 FFFD AED7 D1DB - FFFD D1DF AEE0 D1F1 D1E8 D1E0 AEE4 AEE1 - FFFD AED9 AEDC -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 686B - srcEnd = 68B5 - mappingOffset = 1AE5 - Mapping = - D5C4 FFFD D5B4 D5B5 D5B9 FFFD D5C8 D5C5 - FFFD D5BE D5BD B1ED D5C1 D5D0 D5B0 FFFD - D5D1 D5C3 D5D5 D5C9 B1EC D5C7 B1E7 B1FC - B1F2 FFFD B1F6 B1F5 D5B1 FFFD D5CE D5D4 - D5CC D5D3 FFFD FFFD D5C0 D5B2 D5D2 D5C2 - B1EA B1F7 FFFD D5CB B1F0 FFFD FFFD FFFD - D5CA D5B3 B1F8 FFFD B1FA D5CD B1FB B1E9 - D5BA D5CF FFFD FFFD B1EF B1F9 D5BC D5C6 - D5B7 D5BB B1F4 D5B6 B1E8 B1F1 B1EE D5BF - AEDE D9C0 B1EB -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 68C4 - srcEnd = 6917 - mappingOffset = 1B30 - Mapping = - B1F3 FFFD D9C3 D9D9 D9CE B4D6 FFFD B4D1 - D9BD B4D2 D9CD FFFD D9C6 D9D3 B4CE D9AB - D9D5 B4C4 D9B3 B4C7 B4C6 FFFD B4D7 FFFD - D9AD D9CF D9D0 B4C9 B4C5 D9BB FFFD B4D0 - D9B6 FFFD D9D1 B4CC D9C9 D9D6 D9B0 D9B5 - D9AF FFFD B4CB D9C2 DDDE D9B1 B4CF D9BA - D9D2 B4CA D9B7 D9B4 D9C5 B4CD B4C3 B4D9 - D9C8 D9C7 FFFD FFFD FFFD FFFD FFFD FFFD - D9AC B4C8 D9D4 D9BC D9BE FFFD D9CB D9CA - D9AA B4D3 B4D5 D9B2 D9B9 D9C1 B4D4 D9B8 - D9C4 D9D7 FFFD D9CC -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 6925 - srcEnd = 6C9D - mappingOffset = 1B84 - Mapping = - D9D8 FFFD FFFD FFFD FFFD D9AE FFFD FFFD - FFFD FFFD DDF2 B7A6 FFFD DDF0 DDDB DDE0 - DDD9 FFFD DDEC DDCB DDD2 FFFD DDEA DDF4 - DDDC FFFD DDCF DDE2 DDE7 DDD3 FFFD DDE4 - DDD0 FFFD FFFD DDD7 DDD8 B7A8 DDEB DDE9 - FFFD DDCC DDEE FFFD DDEF DDF1 B7AC B7A4 - FFFD D5B8 DDD4 DDE6 DDD5 B7A1 B7B1 DDED - B7AF B7AB DDCA B7A3 FFFD DDCD B7B0 FFFD - DDDD DDC9 FFFD B7A9 DDE1 DDD1 B7AA DDDA - B77E B4D8 DDE3 D9BF DDCE FFFD FFFD DDE8 - B7A5 DDE5 B7A2 DDDF B7AD DDD6 DDF3 FFFD - FFFD FFFD FFFD FFFD FFFD B7A7 DEC6 FFFD - FFFD B7AE FFFD FFFD FFFD FFFD FFFD FFFD - E24A E248 FFFD E25E E246 FFFD E258 B77D - BA5F E242 E25D FFFD E247 E255 BA64 BA5D - FFFD E25B FFFD E240 E25A FFFD BA6F E251 - E261 BA6D E249 BA5E E24B E259 BA67 E244 - BA6B BA61 E24D E243 E1FC FFFD E257 BA68 - E260 E1FD BA65 FFFD E253 FFFD BA66 E245 - E250 E24C E24E FFFD BA60 E25F BA6E E24F - FFFD E262 FFFD FFFD E1FE E254 BA63 BA6C - BA6A E241 E256 BA69 FFFD FFFD BA62 E252 - FFFD FFFD FFFD FFFD E25C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E5D5 FFFD E5D1 - E5CD E5E1 E5DE BCCD FFFD FFFD E5E5 E5D4 - BCD8 E5DB FFFD FFFD E5D0 E5DA BCD5 E5EE - FFFD E5EB E5DD E5CE FFFD FFFD E5E2 E5E4 - BCD1 E5D8 E5D3 E5CA BCCE BCD6 FFFD E5E7 - BCD7 E5CB E5ED E5E0 E5E6 BCD4 FFFD FFFD - E5E3 FFFD E5EA FFFD BCD9 FFFD BCD3 E5DC - E5CF E5EF E5CC E5E8 BCD0 FFFD E5D6 FFFD - E5D7 BCCF BCCC E5D2 BCD2 FFFD BCCB FFFD - E5E9 E5EC E5D9 E9CA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E9C2 FFFD E9BE - BEF6 FFFD FFFD BEEB BEF0 BEEC E9CC E9D7 - BEEA E9C4 E9CD E5DF E9CE FFFD FFFD BEF1 - FFFD E9DD BEF5 BEF8 E9C0 FFFD BEF4 FFFD - E9DB E9DC E9D2 E9D1 E9C9 FFFD FFFD E9D3 - E9DA E9D9 FFFD BEEF BEED E9CB E9C8 FFFD - E9C5 E9D8 BEF7 E9D6 BEF3 BEF2 FFFD E9D0 - FFFD E9BF E9C1 E9C3 E9D5 E9CF BEEE FFFD - E9C6 FFFD E9D4 FFFD FFFD FFFD FFFD FFFD - FFFD E9C7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C0CF ED45 C0C8 ECF5 FFFD ED41 C0CA - ED48 FFFD ECFC FFFD ECF7 FFFD FFFD ED49 - ECF3 ECFE FFFD C0D1 ED44 ED4A ECFD C0C9 - ED40 ECF4 C0D0 FFFD FFFD ED47 ECF9 C0CC - FFFD ECFB ECF8 C0D2 ECFA C0CB C0CE ED43 - ECF6 ED46 FFFD ED42 FFFD FFFD FFFD C263 - EFE7 C268 C269 FFFD FFFD FFFD C262 EFE6 - FFFD EFE3 EFE4 C266 EFDE EFE2 C265 FFFD - EFDF FFFD FFFD FFFD FFFD C267 C264 FFFD - EFDD EFE1 EFE5 FFFD FFFD FFFD F251 F24E - F257 FFFD F256 F254 F24F FFFD C372 FFFD - FFFD FFFD FFFD FFFD F250 C371 C0CD F253 - C370 F258 F252 F24D EFE0 FFFD FFFD FFFD - C36F FFFD F24C F456 FFFD F455 F255 C468 - FFFD F459 F45A F454 F458 FFFD F453 FFFD - FFFD FFFD FFFD F5D1 F457 C4E7 C4E5 F5CF - FFFD FFFD FFFD F5D2 FFFD F5CE F5D0 C4E6 - FFFD FFFD FFFD F6E5 F6E6 C576 F6E4 FFFD - FFFD FFFD F7E2 C5CF F7E0 F7E1 F8AC FFFD - FFFD C656 F8F3 F8F1 F8F2 F8F4 FFFD FFFD - FFFD F9BB FFFD A4ED A6B8 FFFD AA59 FFFD - CCE9 FFFD FFFD CF64 FFFD FFFD FFFD D1F5 - D1F7 FFFD D1F6 FFFD D1F8 B1FD D5D7 D1F9 - FFFD D5D6 D5D8 D5D9 D9DA B4DB D9DB D9DD - B4DC B4DA D9DC FFFD DDFA DDF8 DDF7 FFFD - DDF6 DDF5 B7B2 DDF9 BA70 E263 E265 BA71 - E264 BCDB FFFD BCDA E5F0 FFFD FFFD E9DF - E9DE E9E0 FFFD FFFD BEF9 FFFD ED4B C0D3 - FFFD EFE8 C26A F259 C577 A4EE A5BF A6B9 - A842 AA5A AA5B FFFD FFFD AC6E FFFD FFFD - D1FA FFFD FFFD FFFD FFFD B7B3 FFFD FFFD - FFFD E6D1 BEFA C26B A4EF FFFD A6BA FFFD - FFFD CCEB AA5C CCEA FFFD CF65 AC6F CF66 - FFFD AC70 FFFD D1FC AEEE AEED FFFD D5DE - D5DC D5DD D5DB FFFD D5DA FFFD FFFD D9DE - D9E1 B4DE D9DF B4DD D9E0 FFFD DDFB FFFD - FFFD E266 E267 E268 FFFD E5F3 E5F2 BCDC - E5F1 E5F4 E9E1 FFFD FFFD E9E2 E9E3 FFFD - ED4C C0D4 C26C F25A FFFD C4E8 C95F FFFD - AC71 CF67 AEEF FFFD FFFD B1FE FFFD B4DF - D9E2 FFFD B7B5 B7B4 FFFD FFFD E269 E26A - BCDD BCDE E9E5 E9E4 EFE9 F7E3 A4F0 C960 - A5C0 FFFD A843 CB48 FFFD AC72 B7B6 A4F1 - FFFD CF68 AC73 CF69 FFFD C0D5 A4F2 FFFD - FFFD CCEC FFFD CF6A FFFD D242 D241 D1FE - FFFD D1FD D243 D240 FFFD FFFD B240 B241 - FFFD FFFD B4E0 D9E3 FFFD D9E4 D9E5 FFFD - FFFD FFFD DE41 DE42 DE40 FFFD DDFD DDFE - B7B7 E26B E5F7 E5F6 E5F5 E5F8 E9E7 E9E6 - BEFB E9E8 FFFD C0D6 ED4D FFFD EFEA F25B - F6E7 FFFD A4F3 A5C2 A5C1 FFFD AA5D C961 - C97E A6BB FFFD C9F7 CB49 CB4A AA5E FFFD - CCED FFFD AC74 CF6B CF6C FFFD AEF0 AEF4 - D244 AEF3 AEF1 AEF2 FFFD D5DF B242 B4E3 - FFFD B4E1 B4E2 D9E6 FFFD FFFD BA72 A4F4 - FFFD C9A1 FFFD A5C3 FFFD FFFD C9A4 FFFD - FFFD A5C6 C9A3 A5C5 A5C4 A844 C9A2 FFFD - FFFD C9F8 FFFD FFFD FFFD C9FC C9FE CA40 - A6C5 A6C6 C9FB A6C1 FFFD C9F9 FFFD C9FD - A6C2 FFFD A6BD FFFD A6BE FFFD A6C4 C9FA - A6BC A845 A6BF A6C0 A6C3 FFFD FFFD FFFD - CB5B CB59 CB4C A851 CB53 A84C CB4D FFFD - CB55 FFFD CB52 A84F CB51 A856 CB5A A858 - FFFD A85A FFFD CB4B FFFD A84D CB5C FFFD - A854 A857 FFFD CD45 A847 A85E A855 CB4E - A84A A859 CB56 A848 A849 CD43 CB4F A850 - A85B CB5D CB50 A84E FFFD A853 CCEE A85C - CB57 A852 FFFD A85D A846 CB54 A84B CB58 - CD44 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 6CAB - srcEnd = 6D42 - mappingOffset = 1EFD - Mapping = - AA6A AA7A CCF5 AA71 FFFD CD4B AA62 FFFD - AA65 CD42 FFFD CCF3 CCF7 AA6D AA6F CCFA - AA76 AA68 AA66 AA67 AA75 CD47 AA70 CCF9 - CCFB AA6E AA73 CCFC CD4A FFFD AC75 AA79 - FFFD AA63 CD49 FFFD CD4D CCF8 CD4F CD40 - AA6C CCF4 AA6B AA7D AA72 FFFD CCF2 CF75 - AA78 AA7C CD41 CD46 FFFD AA7E AA77 AA69 - AA5F FFFD AA64 FFFD CCF6 AA60 CD4E FFFD - CCF0 CCEF CCFD CCF1 AA7B AEF5 AA74 CCFE - AA61 FFFD ACA6 FFFD FFFD FFFD CD4C FFFD - FFFD FFFD FFFD FFFD FFFD CF7C CFA1 FFFD - CFA4 CF77 FFFD FFFD CFA7 CFAA CFAC CF74 - AC76 AC7B D249 ACAD CFA5 CFAD CF7B CF73 - FFFD FFFD FFFD D264 AC7E CFA2 CF78 CF7A - ACA5 FFFD CF7D AC7D CF70 CFA8 FFFD CFAB - FFFD FFFD AC7A FFFD ACA8 CF6D ACAA AC78 - ACAE CFA9 CF6F ACAB D25E CD48 AC7C AC77 - CF76 CF6E ACAC ACA4 CFA3 ACA9 ACA7 CF79 - ACA1 CF71 ACA2 ACA3 CF72 CFA6 AC79 CF7E -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 6D58 - srcEnd = 6D98 - mappingOffset = 1F95 - Mapping = - D24C AEFD AF43 FFFD FFFD FFFD D255 D25B - D257 D24A D24D D246 D247 AF4A AEFA D256 - D25F AF45 AEF6 FFFD AF40 D24E AF42 D24F - D259 FFFD FFFD FFFD AF44 D268 D248 AEFC - AEFB AF48 D245 D266 D25A D267 D261 D253 - D262 FFFD D25C D265 D263 AF49 D254 AEF9 - AEF8 AF41 AF47 D260 AF46 D251 B243 FFFD - D269 D250 D24B AEFE AF4B AEF7 FFFD D258 - D25D -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 6DAA - srcEnd = 6E05 - mappingOffset = 1FD6 - Mapping = - B265 D5E1 D5E5 FFFD B252 B250 FFFD FFFD - B247 D5E3 D5E2 B25B FFFD D5E8 B255 FFFD - D5FA D647 B244 D5F7 D5F0 B267 D5E0 FFFD - D5FC FFFD B264 B258 B263 B24E D5EC D5FE - D5F6 B24F B249 D645 FFFD D5FD D640 B251 - B259 D642 D5EA D5FB D5EF D644 B25E B246 - B25C D5F4 D5F2 D5F3 B253 D5EE D5ED B248 - D5E7 D646 B24A D5F1 B268 FFFD B262 D5E6 - B25F B25D B266 D5F8 B261 D252 D5F9 B260 - D641 B245 D5F5 B257 D5E9 B256 FFFD B254 - B24C B24B D9E7 D643 FFFD FFFD D5EB FFFD - FFFD D9FC FFFD B24D -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 6E19 - srcEnd = 6E79 - mappingOffset = 2032 - Mapping = - B541 B25A B4EE D9F6 B4FC FFFD D9EA B4EB - B4E7 DA49 B4ED B4F1 B4EC B4F5 DA4D DA44 - FFFD FFFD D9F1 B4FA B4F4 D9FD B4E4 DA4A - DA43 B4E8 D9F7 B4F7 DA55 DA56 FFFD B4E5 - DA48 B4F9 D9FB D9ED D9EE B4FD D9F2 D9F9 - D9F3 FFFD B4FB B544 D9EF D9E8 D9E9 FFFD - D9EB B4EA D9F8 FFFD B4F8 B542 FFFD FFFD - D9FA DA53 DA4B B4E6 DA51 B4F2 FFFD B4F0 - FFFD DA57 B4EF DA41 D9F4 D9FE B547 DA45 - DA42 D9F0 B543 DA4F DA4C DA54 B4E9 DA40 - B546 FFFD DA47 FFFD FFFD B4F3 B4F6 FFFD - DA46 B545 D9F5 D5E4 FFFD FFFD DA50 DA4E - DA52 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 6E88 - srcEnd = 6EDC - mappingOffset = 2093 - Mapping = - D9EC B540 FFFD FFFD FFFD DE61 DE60 DE46 - B7BD FFFD DE5F DE49 DE4A FFFD B7C7 DE68 - B7C2 DE5E FFFD DE43 B7C8 B7BE DE52 DE48 - DE4B DE63 B7B8 DE6A DE62 B7C1 DE57 B7CC - FFFD FFFD B7CB B7C5 FFFD FFFD DE69 B7B9 - DE55 DE4C DE59 DE65 B7CD FFFD B7BB DE54 - FFFD DE4D B7C4 FFFD B7C3 DE50 DE5A DE64 - DE47 DE51 B7BC DE5B B7C9 B7C0 DE4E B7BF - DE45 DE53 DE67 B4FE BAB0 DE56 E26C DE58 - DE66 B7C6 DE4F B7BA B7CA BCF0 DE44 FFFD - DE5D FFFD FFFD FFFD DE5C -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 6EEB - srcEnd = 7E9C - mappingOffset = 20E8 - Mapping = - E2AA BAAD E27D E2A4 BAA2 FFFD E26E BAAF - FFFD BA77 E26D E2B0 BAB1 E271 E2A3 FFFD - E273 E2B3 E2AF BA75 BAA1 E653 BAAE BA7D - E26F FFFD E2AE BAA3 E2AB E2B8 E275 E27E - FFFD FFFD E2B6 E2AC BA7C FFFD FFFD E27C - BA76 BA74 BAA8 FFFD FFFD E27A E277 E278 - FFFD E2B2 FFFD E2B7 E2B5 BA7A E2B9 BA7E - BAA7 FFFD E270 E5FA E279 FFFD BA78 BAAC - BAA9 BA7B E2A5 E274 BAAA E2A7 BAA4 BAA6 - BA73 FFFD E2A9 E2A1 E272 BAA5 E2B1 E2B4 - E27B E2A8 FFFD BA79 BCDF E2A6 E5F9 FFFD - E2AD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E276 E644 E64E BCE2 E64D - E659 BCE4 E64B FFFD E64F BCEF FFFD E646 - BCE7 FFFD E652 E9F0 BCF3 BCF2 E654 E643 - E65E BCED FFFD BCE3 E657 FFFD E65B E660 - E655 E649 BCE6 BCE9 BCF1 BCEC FFFD E64C - E2A2 FFFD FFFD E648 E65F BCE8 FFFD BCEB - E661 BCE0 E656 E5FB E65C C0DF FFFD E64A - FFFD BCE1 E645 BCE5 E5FC BAAB E641 FFFD - E65A E642 E640 BCEA FFFD E658 FFFD E5FE - E651 E650 E65D E647 BCEE FFFD FFFD FFFD - FFFD FFFD FFFD E9F3 FFFD BF49 BEFE EA40 - E9EB BF41 E9F7 BF48 BF43 E9F5 ED4F E9FB - EA42 E9FA E9E9 E9F8 EA44 EA46 BEFD EA45 - BF44 BF4A FFFD BF47 FFFD E9FE BF46 E9F9 - FFFD E9ED E9F2 FFFD E9FD BF45 BF42 BEFC - BF40 E9F1 FFFD E5FD E9EC E9EF EA41 E9F4 - E9EA ED4E EA43 E9EE E9FC FFFD FFFD FFFD - FFFD ED51 C0E3 FFFD FFFD C0D7 FFFD FFFD - C0DB ED53 ED59 ED57 C0D9 C0DA C0E1 ED5A - ED52 C0DC FFFD ED56 ED55 ED5B C0E2 FFFD - C0DD C0E0 ED54 C0E4 C0DE C0E5 C0D8 ED58 - FFFD ED50 FFFD FFFD EFF7 FFFD FFFD C271 - EFF4 EFF6 FFFD C26F EFF2 EFF3 EFEE FFFD - FFFD E9F6 EFEF C270 EFEB FFFD C26D EFF8 - C26E EFEC EFED EFF1 C273 FFFD C272 FFFD - FFFD EFF0 C378 F25F F265 C379 F25C C376 - C373 F267 C377 FFFD C374 F25E F261 F262 - F263 F266 FFFD EFF5 F25D C375 F264 F268 - F260 FFFD FFFD FFFD F45D C46A F460 C46B - F468 F45F F45C FFFD F45E F462 F465 F464 - F467 F45B FFFD C469 F463 F466 F469 F461 - F5D3 F5D4 F5D8 F5D9 FFFD F5D6 F5D7 F5D5 - FFFD C4E9 FFFD FFFD FFFD FFFD C578 F6EB - FFFD FFFD F6E8 F6E9 F6EA C579 FFFD F7E5 - F7E4 FFFD F8AF C5F4 F8AD F8B0 F8AE F8F5 - C657 C665 F9A3 F96C FFFD F9A2 F9D0 F9D1 - A4F5 FFFD FFFD FFFD FFFD A6C7 CA41 FFFD - FFFD CB5E FFFD A85F FFFD A862 FFFD CB5F - FFFD A860 A861 FFFD FFFD FFFD FFFD CD58 - CD5A CD55 CD52 CD54 FFFD FFFD FFFD AAA4 - FFFD FFFD FFFD AAA2 FFFD FFFD CD56 AAA3 - CD53 CD50 AAA1 CD57 FFFD CD51 AAA5 CD59 - FFFD FFFD FFFD FFFD CFAF FFFD CFB3 FFFD - FFFD ACB7 FFFD FFFD FFFD FFFD CFB6 FFFD - ACAF ACB2 ACB4 ACB6 ACB3 CFB2 CFB1 FFFD - ACB1 CFB4 CFB5 FFFD CFAE ACB5 FFFD ACB0 - FFFD FFFD FFFD CFB0 FFFD FFFD FFFD FFFD - FFFD FFFD D277 D278 D279 AF50 FFFD AF4C - D26E FFFD D276 D27B AF51 FFFD D26C D272 - D26B D275 FFFD FFFD D271 AF4D AF4F D27A - FFFD D26A D26D D273 FFFD D274 D27C D270 - FFFD AF4E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B26D D64E FFFD FFFD - D650 D64C FFFD D658 D64A D657 B269 D648 - DA5B D652 B26C FFFD D653 D656 FFFD D65A - FFFD D64F FFFD D654 FFFD FFFD B26A B26B - D659 D64D D649 D65B FFFD D651 FFFD FFFD - D655 FFFD FFFD FFFD D64B FFFD B548 B549 - DA65 B54F FFFD DA59 DA62 DA58 B54C DA60 - DA5E FFFD DA5F B54A FFFD DA63 FFFD FFFD - FFFD FFFD FFFD DA5C DA5A B54B DA5D DA61 - FFFD FFFD FFFD B54D FFFD FFFD FFFD DA64 - FFFD FFFD FFFD FFFD FFFD FFFD DE70 DE77 - DE79 DEA1 FFFD B7DA DE6B FFFD B7D2 FFFD - DE7A B7D7 DEA2 B7CE FFFD DE7D FFFD DE6D - DE7E DE6C FFFD B7DC FFFD DE78 B7CF DEA3 - FFFD B7D4 DE71 B7D9 DE7C DE6F DE76 DE72 - DE6E B7D1 B7D8 B7D6 B7D3 B7DB B7D0 DE75 - FFFD B7D5 FFFD B54E FFFD DE7B FFFD DE73 - FFFD FFFD FFFD FFFD FFFD DE74 FFFD FFFD - E2C1 FFFD BAB4 FFFD FFFD E2BD E2C3 E2BF - FFFD BAB6 E2BE E2C2 E2BA FFFD E2BC BAB5 - FFFD FFFD FFFD FFFD E2C0 E2BB FFFD BAB7 - FFFD BAB2 FFFD FFFD E2C4 FFFD BAB3 E667 - E664 E670 E66A E66C BCF4 E666 E66E FFFD - FFFD E66D E66B FFFD E671 BCF7 E668 E66F - FFFD BCF5 FFFD FFFD E663 E665 BCF6 E662 - E672 FFFD E669 FFFD FFFD EA4A BF51 FFFD - FFFD EA55 EA53 BF4B EA49 EA4C EA4D EA48 - BF55 BF56 EA47 EA56 EA51 BF4F BF4C EA50 - EA4E FFFD FFFD BF52 EA52 BF4D FFFD BF4E - FFFD EA4F BF50 EA4B FFFD EA54 BF53 EA57 - EA58 BF54 FFFD FFFD C0E7 C0EE ED5C ED62 - FFFD ED60 C0EA C0E9 C0E6 ED5E FFFD FFFD - FFFD C0EC C0EB C0E8 FFFD ED61 ED5D ED5F - FFFD C0ED FFFD FFFD FFFD C277 EFFB FFFD - C274 C275 EFFD C276 EFFA FFFD EFF9 F26C - EFFC FFFD F26D C37A F26B FFFD FFFD F26A - FFFD F269 C37B FFFD FFFD C46C FFFD FFFD - F46A F46B FFFD FFFD FFFD FFFD F5DC F5DB - C4EA FFFD F5DA F6EC F6ED FFFD FFFD F7E6 - F8B1 FFFD FFFD F8F6 F9BC C679 F9C6 A4F6 - FFFD AAA6 AAA7 FFFD FFFD ACB8 FFFD FFFD - FFFD FFFD C0EF A4F7 FFFD AAA8 AF52 B7DD - A4F8 FFFD B26E BAB8 C962 FFFD CFB7 D27D - FFFD E2C5 FFFD C0F0 A4F9 AAA9 CFB8 CFB9 - DA66 B550 FFFD FFFD DEA4 FFFD FFFD B7DE - E2C6 FFFD FFFD BCF8 FFFD C37C A4FA DA67 - A4FB FFFD A6C9 CA42 A6C8 A865 A864 A863 - CB60 FFFD FFFD FFFD AAAA FFFD AAAB CD5B - FFFD CFBA FFFD CFBD ACBA CFBB FFFD ACB9 - CFBC ACBB FFFD D2A2 D2A1 D27E AF53 FFFD - D65D D65E B26F D65C D65F B552 B270 FFFD - FFFD B551 DA6B DA6A FFFD DA68 DA69 FFFD - DA6C DEA6 DEA5 DEA9 FFFD DEA8 DEA7 BAB9 - E2C9 FFFD E2C8 BABA E2C7 E673 FFFD E674 - BCF9 FFFD EA59 EA5A FFFD FFFD F272 C37D - F271 F270 F26E F26F C4EB F46C F6EE F8F7 - FFFD A4FC FFFD C9A5 A5C7 C9A6 FFFD FFFD - FFFD CA43 CA44 FFFD FFFD FFFD FFFD CB66 - FFFD FFFD CB62 FFFD CB61 AAAC CB65 A867 - CB63 A866 CB67 CB64 FFFD FFFD CD5F CFBE - CD5D CD64 FFFD AAAD FFFD AAB0 CD65 CD61 - FFFD CD62 FFFD CD5C AAAF CD5E AAAE CD63 - FFFD CD60 FFFD FFFD CFC2 ACBD ACBE FFFD - CFC5 CFBF FFFD CFC4 FFFD CFC0 ACBC CFC3 - CFC1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D2A8 D2A5 FFFD D2A7 AF58 AF57 AF55 D2A4 - D2A9 AF54 AF56 D2A6 D667 D2A3 D2AA FFFD - FFFD FFFD FFFD FFFD D662 D666 FFFD D665 - DA6E DA79 FFFD FFFD D668 FFFD D663 DA6D - B274 FFFD FFFD B273 D661 D664 B275 FFFD - B272 B271 D660 D669 FFFD FFFD FFFD DA70 - DA77 FFFD B554 DA76 DA73 FFFD B556 FFFD - FFFD FFFD DA75 FFFD FFFD DA6F DA71 DA74 - DA72 B555 DA78 B553 B7DF FFFD FFFD DEAD - DEAC DEAA FFFD B7E2 B7E1 DEAE FFFD DEAB - E2CA BABB B7E0 FFFD FFFD FFFD DEB0 DEAF - FFFD E2CD E2CB BCFA FFFD BABC E2CC E676 - FFFD FFFD FFFD FFFD BCFB E675 E67E E67D - E67B FFFD E67A E677 E678 E679 E67C E6A1 - FFFD FFFD EA5F EA5C EA5D BF57 EA5B EA61 - EA60 EA5E FFFD ED64 ED65 C0F1 FFFD C0F2 - ED63 FFFD C279 EFFE C278 C37E FFFD C3A1 - C46D F46E F46D F5DD F6EF C57A F7E8 F7E7 - F7E9 A5C8 CFC6 AF59 B276 D66A A5C9 C9A7 - A4FD FFFD FFFD CA45 FFFD FFFD FFFD CB6C - CB6A CB6B CB68 A868 CB69 FFFD FFFD FFFD - FFFD FFFD CD6D FFFD AAB3 CD6B CD67 CD6A - FFFD CD66 AAB5 CD69 FFFD AAB2 AAB1 FFFD - AAB4 CD6C CD68 FFFD FFFD FFFD FFFD ACC2 - ACC5 CFCE CFCD CFCC ACBF CFD5 CFCB FFFD - ACC1 D2AF FFFD CFD2 CFD0 ACC4 FFFD CFC8 - CFD3 FFFD CFCA CFD4 CFD1 CFC9 FFFD ACC0 - CFD6 CFC7 ACC3 FFFD FFFD FFFD FFFD D2B4 - D2AB D2B6 FFFD D2AE D2B9 D2BA D2AC D2B8 - D2B5 D2B3 D2B7 AF5F FFFD AF5D FFFD FFFD - D2B1 FFFD D2AD FFFD D2B0 D2BB D2B2 AF5E - CFCF FFFD AF5A AF5C FFFD FFFD FFFD FFFD - FFFD D678 D66D D66B FFFD D66C FFFD D673 - FFFD D674 D670 B27B D675 D672 D66F FFFD - B279 D66E B277 B27A D671 D679 AF5B B278 - D677 D676 B27C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD DA7E FFFD FFFD FFFD DAA1 - B560 FFFD DAA7 FFFD FFFD DAA9 DAA2 B55A - DAA6 DAA5 B55B B561 FFFD B562 DAA8 B558 - DA7D DA7B DAA3 DA7A B55F DA7C DAA4 DAAA - B559 B55E B55C B55D FFFD FFFD FFFD B557 - FFFD FFFD FFFD FFFD B7E9 DEB7 B7E8 DEBB - FFFD DEB1 FFFD DEBC FFFD FFFD FFFD DEB2 - DEB3 FFFD DEBD DEBA DEB8 DEB9 DEB5 DEB4 - FFFD DEBE B7E5 FFFD DEB6 FFFD B7EA B7E4 - B7EB B7EC FFFD B7E7 B7E6 FFFD FFFD E2CE - BABE BABD FFFD FFFD E2D3 FFFD BCFC BABF - FFFD FFFD BAC1 E2D4 B7E3 BAC0 E2D0 E2D2 - E2CF FFFD E2D1 FFFD FFFD FFFD E6AB FFFD - FFFD E6AA E6A7 BD40 EA62 BD41 E6A6 FFFD - BCFE FFFD E6A8 E6A5 E6A2 E6A9 E6A3 E6A4 - BCFD FFFD FFFD FFFD FFFD ED69 FFFD EA66 - FFFD EA65 EA67 FFFD ED66 BF5A FFFD EA63 - FFFD BF58 FFFD BF5C BF5B EA64 EA68 FFFD - BF59 FFFD ED6D C0F5 C27A C0F6 C0F3 ED6A - ED68 FFFD ED6B FFFD ED6E C0F4 ED6C ED67 - FFFD FFFD F042 F045 F275 F040 FFFD F46F - F046 FFFD C3A2 F044 C27B F041 F043 F047 - F276 FFFD F274 FFFD FFFD FFFD FFFD C3A3 - F273 FFFD FFFD FFFD C46E FFFD FFFD FFFD - FFFD C4ED F6F1 C4EC F6F3 F6F0 F6F2 C5D0 - F8B2 A5CA CD6E D2BC D2BD B27D DEBF BF5D - C3A4 C57B F8B3 A5CB FFFD CD6F A260 FFFD - FFFD CFD7 FFFD CFD8 FFFD FFFD FFFD FFFD - FFFD D2BE D2BF B27E B2A1 FFFD FFFD FFFD - DAAB FFFD DEC2 DEC1 DEC0 E2D5 FFFD E2D6 - E2D7 BAC2 FFFD FFFD E6AD E6AC FFFD FFFD - EA69 BF5E BF5F FFFD ED72 ED6F ED70 ED71 - F049 F048 C27C F277 F5DE A5CC FFFD ACC6 - FFFD B2A2 DEC3 FFFD A5CD FFFD D2C0 B2A3 - FFFD FFFD B563 B564 FFFD A5CE A5CF CA46 - A86A A869 ACC7 CFD9 DAAC A5D0 A5D1 A5D2 - A5D3 FFFD FFFD FFFD A86B A86C CB6E CB6D - FFFD FFFD AAB6 CD72 CD70 CD71 FFFD FFFD - FFFD FFFD FFFD FFFD CFDA CFDB FFFD FFFD - ACCB ACC9 FFFD ACCA ACC8 FFFD FFFD FFFD - FFFD AF60 FFFD FFFD FFFD FFFD AF64 AF63 - D2C1 AF62 AF61 FFFD D2C2 FFFD FFFD B2A6 - D67B D67A B2A4 B2A5 FFFD FFFD FFFD B566 - B565 DAAE FFFD FFFD DAAD B2A7 FFFD FFFD - FFFD FFFD FFFD B7ED DEC5 B7EE DEC4 FFFD - FFFD FFFD E2D8 E6AE BD42 EA6A FFFD FFFD - FFFD ED73 FFFD C3A6 C3A5 FFFD FFFD C57C - A5D4 CD73 FFFD FFFD B2A8 E2D9 BAC3 FFFD - FFFD CB6F CB70 FFFD FFFD CD74 AAB8 AAB9 - FFFD FFFD AAB7 FFFD FFFD FFFD FFFD ACCF - ACD0 ACCD ACCE FFFD CFDC FFFD FFFD CFDD - ACCC FFFD FFFD FFFD FFFD D2C3 FFFD AF68 - AF69 FFFD B2AB D2C9 FFFD AF6E AF6C D2CA - D2C5 AF6B AF6A AF65 D2C8 D2C7 D2C4 AF6D - FFFD D2C6 AF66 FFFD AF67 FFFD FFFD B2AC - D6A1 D6A2 B2AD D67C D67E D6A4 D6A3 D67D - FFFD B2A9 B2AA FFFD DAB6 B56B B56A DAB0 - B568 FFFD DAB3 B56C DAB4 B56D DAB1 B567 - B569 DAB5 FFFD DAB2 DAAF FFFD FFFD FFFD - FFFD FFFD DED2 FFFD DEC7 B7F0 B7F3 B7F2 - B7F7 B7F6 DED3 DED1 DECA DECE DECD B7F4 - DED0 DECC DED4 DECB B7F5 B7EF B7F1 FFFD - DEC9 FFFD FFFD FFFD FFFD E2DB BAC7 E2DF - BAC6 E2DC BAC5 FFFD DEC8 DECF E2DE FFFD - BAC8 E2E0 E2DD E2DA FFFD FFFD E6B1 E6B5 - E6B7 E6B3 E6B2 E6B0 BD45 BD43 BD48 BD49 - E6B4 BD46 E6AF BD47 BAC4 E6B6 BD44 FFFD - FFFD FFFD EA6C FFFD EA6B EA73 EA6D EA72 - EA6F BF60 EA71 FFFD FFFD BF61 FFFD BF62 - FFFD EA70 EA6E FFFD FFFD FFFD FFFD C0F8 - ED74 FFFD FFFD C0F7 ED77 ED75 ED76 FFFD - FFFD C0F9 FFFD FFFD FFFD F04D FFFD C2A1 - F04E FFFD FFFD C27D F04F C27E F04C F050 - FFFD F04A FFFD FFFD C3A7 F278 C3A8 C46F - FFFD F04B C470 FFFD FFFD FFFD C4EE F5DF - FFFD C57E F6F4 C57D FFFD F7EA C5F5 C5F6 - FFFD FFFD F9CC FFFD FFFD ACD1 CFDE FFFD - B56E B56F A5D5 A6CA CA47 FFFD CB71 A86D - FFFD AABA FFFD ACD2 ACD3 ACD4 D6A6 D2CB - AF6F FFFD FFFD B2AE D6A5 FFFD FFFD DAB8 - B571 FFFD DAB7 B570 FFFD FFFD DED5 BD4A - E6BB E6B8 E6B9 E6BA FFFD FFFD FFFD FFFD - FFFD ED78 FFFD F051 FFFD FFFD FFFD F471 - F470 FFFD F6F5 A5D6 CD75 AF70 FFFD FFFD - FFFD B572 DED6 FFFD FFFD E2E1 FFFD BD4B - EA74 FFFD F052 F472 A5D7 FFFD FFFD AABB - ACD7 CFDF ACD8 ACD6 FFFD ACD5 D2CC AF71 - FFFD FFFD AF72 AF73 FFFD FFFD FFFD B2B0 - D6A7 B2AF FFFD FFFD FFFD FFFD FFFD DAB9 - B2B1 B573 DED7 B7F8 B7F9 FFFD BAC9 FFFD - BACA BD4C BF64 EA75 BF63 FFFD ED79 C0FA - FFFD F053 F473 A5D8 A86E CD78 CD77 AABC - CD76 AABD CD79 FFFD CFE5 ACDB ACDA CFE7 - CFE6 ACDF FFFD ACDE FFFD FFFD ACD9 FFFD - CFE1 CFE2 CFE3 FFFD ACE0 CFE0 ACDC CFE4 - ACDD FFFD FFFD FFFD FFFD D2CF D2D3 D2D1 - D2D0 FFFD D2D4 FFFD FFFD FFFD D2D5 D2D6 - D2CE FFFD D2CD FFFD AF75 AF76 FFFD D2D7 - D2D2 FFFD D6B0 FFFD D2D8 AF77 AF74 FFFD - FFFD FFFD D6AA FFFD D6A9 FFFD D6AB D6AC - D6AE D6AD D6B2 B2B5 B2B2 B2B6 D6A8 B2B7 - D6B1 B2B4 D6AF B2B3 FFFD FFFD FFFD FFFD - FFFD DABC DABE DABA DABB FFFD FFFD DABF - DAC1 DAC2 DABD DAC0 B574 FFFD FFFD DEDB - FFFD DEE0 DED8 DEDC FFFD FFFD DEE1 DEDD - B7FA B843 FFFD B7FD DED9 DEDA BACE B846 - B7FE FFFD B844 B7FC DEDF B845 DEDE B841 - B7FB B842 DEE2 E2E6 E2E8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B840 FFFD - FFFD E2E3 BACC E2E9 BACD E2E7 E2E2 E2E5 - E2EA BACB E2E4 FFFD BD4E E6BF E6BE FFFD - BD51 BD4F E6BC BD4D E6BD FFFD BD50 FFFD - FFFD FFFD EA7D FFFD EAA1 FFFD EA7E EA76 - EA7A EA79 EA77 BF66 BF67 BF65 EA78 EA7B - EA7C FFFD BF68 FFFD C140 EDA3 FFFD C0FC - ED7B C0FE C141 FFFD FFFD C0FD EDA2 ED7C - C0FB EDA1 ED7A ED7E ED7D FFFD FFFD F055 - C2A4 C2A5 C2A2 FFFD C2A3 FFFD FFFD F054 - FFFD F27B FFFD FFFD C3A9 FFFD F279 F27A - FFFD F474 F477 F475 F476 F5E0 FFFD FFFD - C4EF F7EB F8B4 FFFD C5F7 F8F8 F8F9 C666 - A5D9 ACE1 FFFD DAC3 FFFD DEE3 FFFD A5DA - A86F FFFD AABE FFFD CFE8 CFE9 AF78 FFFD - FFFD DAC4 B575 B847 C142 EDA4 F27C F478 - A5DB FFFD FFFD FFFD CDA1 CD7A CD7C CD7E - CD7D CD7B AABF FFFD FFFD FFFD FFFD ACE2 - CFF2 FFFD CFED CFEA FFFD FFFD CFF1 FFFD - FFFD ACE4 ACE5 CFF0 CFEF CFEE CFEB CFEC - CFF3 ACE3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD AF7C FFFD AFA4 AFA3 D2E1 D2DB - D2D9 FFFD AFA1 D6B9 AF7A D2DE D2E2 D2E4 - D2E0 D2DA AFA2 D2DF D2DD AF79 D2E5 AFA5 - D2E3 AF7D D2DC FFFD AF7E AF7B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B2B9 FFFD D6BA FFFD FFFD D6B3 D6B5 D6B7 - FFFD D6B8 D6B6 B2BA FFFD D6BB FFFD D6B4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DAC8 B576 DAD0 FFFD DAC5 FFFD DAD1 - FFFD DAC6 DAC7 FFFD FFFD DACF DACE DACB - B2B8 B577 DAC9 DACC B578 DACD DACA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DEEE FFFD - DEF2 B84E FFFD E2F0 B851 DEF0 F9D6 FFFD - DEED DEE8 DEEA DEEB DEE4 FFFD B84D FFFD - FFFD B84C FFFD B848 DEE7 FFFD B84F FFFD - B850 DEE6 DEE9 DEF1 B84A B84B DEEF DEE5 - FFFD FFFD FFFD E2F2 BAD0 E2F4 DEEC E2F6 - BAD4 E2F7 E2F3 FFFD BAD1 E2EF BAD3 E2EC - E2F1 E2F5 E2EE FFFD FFFD B849 FFFD E2EB - BAD2 E2ED FFFD FFFD FFFD FFFD FFFD BD54 - E6C1 BD58 FFFD BD56 FFFD FFFD BACF FFFD - E6C8 E6C9 BD53 FFFD FFFD E6C7 E6CA BD55 - BD52 E6C3 E6C0 E6C5 E6C2 BD59 E6C4 FFFD - FFFD E6C6 BD57 FFFD FFFD FFFD FFFD BF6A - EAA8 FFFD EAA2 EAA6 EAAC EAAD EAA9 EAAA - EAA7 FFFD EAA4 FFFD BF6C BF69 EAA3 EAA5 - FFFD BF6B EAAB FFFD C146 FFFD FFFD EDAA - EDA5 C145 FFFD FFFD C143 FFFD EDAC C144 - EDA8 EDA9 EDA6 EDAD F056 FFFD C147 EDA7 - FFFD EDAE EDAB FFFD FFFD FFFD F05A FFFD - FFFD F057 FFFD C2A6 FFFD F05B F05D F05C - F058 F059 FFFD FFFD F2A3 FFFD C3AA FFFD - F27E F2A2 F27D F2A4 FFFD FFFD F2A1 FFFD - F47A F47D F479 C471 F47B F47C F47E C472 - C474 C473 F5E1 FFFD F5E3 FFFD F5E2 FFFD - FFFD FFFD F6F6 FFFD FFFD F8B5 F8FA A5DC - FFFD FFFD CB72 AAC0 CDA3 AAC1 AAC2 CDA2 - FFFD CFF8 CFF7 ACE6 ACE9 ACE8 ACE7 CFF4 - CFF6 CFF5 FFFD FFFD D2E8 AFA7 D2EC D2EB - D2EA D2E6 AFA6 AFAA AFAD FFFD FFFD AFAE - D2E7 D2E9 AFAC AFAB AFA9 AFA8 D6C2 FFFD - D6C0 D6BC B2BB FFFD D6BD B2BC D6BE D6BF - D6C1 FFFD B2BD FFFD FFFD DAD5 FFFD DAD4 - DAD3 DAD2 FFFD FFFD FFFD FFFD DEF6 B852 - FFFD DEF3 DEF5 FFFD B853 FFFD B854 DEF4 - FFFD FFFD FFFD FFFD FFFD E341 FFFD E2F9 - E2FA FFFD BAD7 BAD5 BAD6 E343 FFFD E342 - E2FE E2FD E2FC E2FB E340 E2F8 FFFD E6CB - E6D0 E6CE FFFD FFFD FFFD E6CD E6CC E6CF - FFFD EAAE FFFD BF6D C148 EDB0 FFFD C149 - EDAF F05F F05E C2A7 FFFD F2A5 C3AB F4A1 - C5A1 F6F7 FFFD F8B7 F8B6 C9A8 ACEA ACEB - D6C3 FFFD B856 A5DD A872 A871 A870 FFFD - FFFD FFFD CDA4 FFFD FFFD AAC4 AAC3 FFFD - ACEE FFFD CFFA CFFD CFFB FFFD ACEC ACED - FFFD FFFD CFF9 CFFC FFFD AFB5 FFFD FFFD - FFFD D2F3 D2F5 D2F4 AFB2 D2EF FFFD FFFD - AFB0 AFAF FFFD AFB3 AFB1 FFFD AFB4 D2F2 - D2ED D2EE D2F1 D2F0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D6C6 D6C7 D6C5 FFFD D6C4 - B2BE FFFD FFFD FFFD FFFD B57D FFFD DAD6 - DAD8 DADA B57C FFFD FFFD B57A FFFD DAD7 - B57B DAD9 B579 FFFD FFFD DF41 DEF7 DEFA - DEFE B85A DEFC FFFD DEFB DEF8 DEF9 B858 - DF40 B857 FFFD B85C B85B B859 FFFD DEFD - FFFD FFFD FFFD E349 FFFD E348 FFFD FFFD - E344 FFFD FFFD BAD8 E347 E346 BAD9 FFFD - FFFD FFFD FFFD FFFD BD5E FFFD E6D2 FFFD - BD5F BD5B BD5D FFFD BD5A BD5C FFFD FFFD - FFFD EAAF FFFD BF70 EAB1 EAB0 FFFD E345 - BF72 BF71 BF6E BF6F FFFD FFFD FFFD FFFD - FFFD EDB5 FFFD EDB3 C14A EDB4 FFFD EDB6 - EDB2 EDB1 FFFD FFFD F060 C2AA C2A8 C2A9 - FFFD FFFD FFFD FFFD F2A6 F2A7 C3AD FFFD - C3AC F4A3 F4A4 F4A2 FFFD F6F8 F6F9 FFFD - FFFD A5DE CA48 A873 FFFD CDA5 AAC6 AAC5 - CDA6 FFFD FFFD D040 ACEF CFFE ACF0 FFFD - FFFD AFB6 D2F8 D2F6 D2FC AFB7 D2F7 D2FB - D2F9 D2FA FFFD FFFD D6C8 D6CA FFFD B2BF - FFFD D6C9 B2C0 B5A2 B5A1 B57E DADB FFFD - FFFD FFFD FFFD DF44 B85D B85E FFFD DF43 - DF42 FFFD FFFD FFFD FFFD E34A BADB BADA - E34B E34C FFFD BD61 BD60 FFFD EAB5 E6D3 - E6D5 E6D4 EAB4 EAB2 EAB6 EAB3 FFFD BF73 - FFFD FFFD FFFD EDB7 C14B EDB8 EDB9 FFFD - FFFD C2AB C2AC FFFD C475 FFFD FFFD C5D1 - A5DF FFFD FFFD FFFD FFFD FFFD D041 FFFD - FFFD FFFD FFFD FFFD FFFD D2FD AFB8 FFFD - FFFD FFFD FFFD FFFD B3BA B3B9 FFFD FFFD - B5A4 DADD B5A3 DADC FFFD FFFD FFFD FFFD - DF45 FFFD BADC E34D BADD FFFD FFFD FFFD - FFFD FFFD FFFD C476 F4A5 FFFD A6CB AAC7 - CDA7 FFFD ACF2 FFFD ACF1 D042 D043 FFFD - FFFD D340 D342 AFB9 FFFD D344 D347 D345 - FFFD FFFD FFFD D346 D343 D2FE AFBA D348 - D341 FFFD FFFD FFFD FFFD D6D3 B2C6 D6DC - B2C3 FFFD D6D5 B2C7 FFFD B2C1 FFFD D6D0 - D6DD D6D1 D6CE B2C5 FFFD B2C2 FFFD D6D4 - D6D7 B2C4 D6D8 B2C8 D6D9 D6CF D6D6 D6DA - D6D2 D6CD D6CB FFFD FFFD D6DB FFFD FFFD - DADF FFFD FFFD FFFD FFFD DAE4 FFFD FFFD - FFFD DAE0 DAE6 B5A7 D6CC DAE1 B5A5 DADE - B5AC DAE2 B5AB DAE3 B5AD B5A8 B5AE B5A9 - FFFD B5AA FFFD B5A6 FFFD DAE5 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B861 DF50 FFFD - DF53 DF47 DF4C DF46 B863 FFFD DF4A FFFD - FFFD FFFD DF48 B862 FFFD DF4F DF4E DF4B - DF4D DF49 BAE1 DF52 B85F DF51 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E35D - FFFD BAE8 E358 FFFD BAE7 E34E FFFD E350 - BAE0 E355 E354 E357 BAE5 E352 E351 FFFD - FFFD BAE4 BADF E353 BAE2 E359 E35B FFFD - E356 E34F BAE3 FFFD FFFD BD69 BADE FFFD - FFFD E35C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E6D9 BD62 FFFD E6DB FFFD BD63 FFFD - FFFD BD65 E6DE FFFD E6D6 BAE6 E6DC FFFD - FFFD FFFD FFFD E6D8 FFFD B860 BD68 FFFD - FFFD BD64 FFFD BD66 BD67 FFFD BF76 E6DD - E6D7 BD6A FFFD E6DA FFFD FFFD FFFD FFFD - FFFD EAC0 EABB FFFD FFFD EAC5 BF74 EABD - BF78 EAC3 EABA EAB7 EAC6 C151 BF79 EAC2 - EAB8 BF77 EABC BF7B EAB9 EABE BF7A EAC1 - EAC4 FFFD FFFD FFFD FFFD EDCB EDCC EDBC - EDC3 EDC1 FFFD FFFD C14F EDC8 EABF FFFD - EDBF FFFD EDC9 C14E EDBE EDBD EDC7 EDC4 - EDC6 FFFD EDBA EDCA C14C FFFD EDC5 EDCE - EDC2 C150 C14D EDC0 EDBB EDCD BF75 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F063 FFFD - FFFD F061 F067 C2B0 F065 F064 C2B2 F06A - C2B1 FFFD F06B F068 C2AE F069 F062 C2AF - C2AD F2AB F066 FFFD FFFD F06C FFFD FFFD - F2A8 FFFD FFFD FFFD C3B2 C3B0 F2AA FFFD - F2AC F2A9 C3B1 C3AE C3AF C3B3 FFFD FFFD - C478 FFFD F4AA FFFD F4A9 F4A7 F4A6 F4A8 - FFFD C477 C479 FFFD FFFD C4F0 FFFD FFFD - F5E5 F5E4 FFFD FFFD F6FA FFFD F6FC F6FE - F6FD F6FB FFFD FFFD C5A3 C5A2 FFFD FFFD - C5D3 C5D2 C5D4 F7ED F7EC FFFD F8FB F8B8 - F8FC C658 FFFD C659 F96D FFFD FFFD C67E - A6CC FFFD CDA8 FFFD FFFD D045 D046 D044 - FFFD FFFD ACF3 FFFD D047 D048 D049 FFFD - FFFD D349 D34F FFFD FFFD D34D AFBB D34B - FFFD D34C D34E FFFD FFFD FFFD D34A B2C9 - FFFD D6DE B2CB D6E0 B2CA D6DF FFFD FFFD - FFFD FFFD FFFD DAE8 B5AF FFFD DAEA DAE7 - D6E1 FFFD B5B0 FFFD F9DB DAE9 FFFD FFFD - FFFD FFFD FFFD FFFD DF56 FFFD B864 DF54 - B865 DF55 B866 FFFD FFFD FFFD BAE9 E361 - E35E E360 BAEA BAEB E35F FFFD FFFD FFFD - FFFD FFFD E6DF FFFD FFFD E6E0 FFFD BD6B - E6E2 E6E1 FFFD A261 FFFD EACA EACB EAC7 - FFFD EAC8 BF7C BF7D EAC9 FFFD C157 FFFD - FFFD C153 C158 C154 C156 C152 FFFD C155 - FFFD FFFD FFFD FFFD C2B3 EDCF FFFD F2AE - FFFD F2AD FFFD F4AB C47A C47B F741 F5E6 - FFFD F740 FFFD F8FD F9A4 A6CD FFFD FFFD - A874 FFFD CDA9 AAC8 FFFD ACF6 D04C ACF4 - D04A ACF9 ACF5 ACFA ACF8 D04B ACF7 AFBF - AFBE D35A AFC7 D353 D359 AFC3 D352 D358 - D356 AFC2 AFC4 D355 AFBD D354 AFC8 AFC5 - AFC9 AFC6 D351 D350 D357 AFC0 AFBC AFC1 - FFFD FFFD FFFD FFFD FFFD D6F0 D6E9 FFFD - B5B5 D6E8 FFFD B2CF B2D6 B2D3 B2D9 B2D8 - B2D4 FFFD D6E2 D6E5 FFFD D6E4 B2D0 D6E6 - D6EF B2D1 D6E3 D6EC D6ED B2D2 D6EA B2D7 - B2CD B2D5 D6E7 B2CC D6EB FFFD FFFD D6EE - FFFD FFFD FFFD DAFB DAF2 B5B2 DAF9 DAF6 - DAEE DAF7 B5B4 DAEF FFFD DAEB FFFD FFFD - B86C DAF4 FFFD B5B1 DAFA FFFD B5B8 B5BA - DAED FFFD FFFD B5B9 DAF0 B5B3 DAF8 DAF1 - DAF5 FFFD DAF3 B5B6 DAEC B5BB B2CE B5B7 - B5BC FFFD FFFD FFFD FFFD FFFD B868 DF5D - DF5F DF61 DF65 FFFD DF5B DF59 B86A FFFD - DF60 DF64 DF5C DF58 FFFD DF57 FFFD FFFD - FFFD DF62 DF5A DF5E B86B FFFD B869 DF66 - B867 DF63 FFFD E372 FFFD FFFD FFFD FFFD - FFFD BAEE E36A BD78 E374 BAF1 E378 BAF7 - E365 FFFD FFFD E375 E362 FFFD E377 E366 - FFFD BAFE BAFB E376 E370 BAED BAF5 BAF4 - FFFD BAF3 BAF9 FFFD E363 BAFA E371 BAF6 - BAEC E373 BAEF BAF0 BAF8 E368 E367 E364 - FFFD E36C E369 E36D BAFD FFFD E379 BAF2 - E36E E36F FFFD E36B FFFD FFFD FFFD BAFC - FFFD FFFD FFFD FFFD E6E7 BD70 BD79 BD75 - E6E4 FFFD BD72 BD76 E6F0 BD6C E6E8 FFFD - BD74 FFFD FFFD E6EB E6E6 BD73 BD77 E6E5 - FFFD BD71 FFFD E6EF BD6E E6EE E6ED BD7A - E572 BD6D FFFD E6EC E6E3 FFFD BD7B E6EA - BD6F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E6E9 FFFD FFFD FFFD FFFD BFA2 BFA7 BF7E - EAD8 EACF EADB EAD3 EAD9 BFA8 BFA1 EACC - EAD2 EADC EAD5 EADA EACE FFFD FFFD EAD6 - BFA3 EAD4 BFA6 BFA5 EAD0 EAD1 EACD EAD7 - BFA4 EADE EADD FFFD FFFD FFFD EDDA EDD6 - C15F FFFD EDD0 C159 C169 EDDC C161 C15D - EDD3 C164 C167 EDDE C15C EDD5 C165 EDE0 - EDDD EDD1 C160 C15A C168 EDD8 C163 EDD2 - C15E EDDF C162 C15B EDD9 C166 EDD7 FFFD - FFFD EDDB FFFD FFFD FFFD F06E F074 C2B9 - F077 C2B4 C2B5 F06F F076 F071 C2BA C2B7 - FFFD F06D FFFD C2B6 F073 F075 C2B8 F072 - F070 FFFD FFFD FFFD FFFD F2B8 C3B7 C3B8 - C3B4 FFFD C3B5 FFFD F2B4 F2B2 FFFD F2B6 - C3BA F2B7 F2B0 F2AF F2B3 F2B1 C3B6 F2B5 - F4AC C47E C47D F4AD FFFD F4AF F4AE C4A1 - FFFD FFFD FFFD F5EB F5E8 F5E9 FFFD F5E7 - F5EA C4F2 F5EC FFFD C4F1 FFFD F742 FFFD - C5D5 C5D7 F7EE C5D6 F8B9 F940 F942 F8FE - F941 C66C -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 7F36 - srcEnd = 82C3 - mappingOffset = 309A - Mapping = - A6CE FFFD ACFB D26F AFCA FFFD FFFD B2DA - DAFC DAFD FFFD FFFD FFFD EADF C16A EDE1 - FFFD FFFD C2BB FFFD F2BA F2B9 C4A2 F5ED - FFFD F743 C5F8 CA49 FFFD FFFD AAC9 A875 - FFFD FFFD D04D FFFD FFFD D360 D35B D35F - D35D AFCB D35E D35C FFFD D6F1 FFFD DAFE - DB40 DF69 DF6A B86E B86F DF68 DF6B DF67 - B86D FFFD BB40 FFFD B870 E37A FFFD BD7C - E6F1 BD7D FFFD BFA9 EAE2 EAE0 EAE1 EDE4 - EDE3 EDE2 FFFD FFFD FFFD F2BB FFFD C3B9 - F2BC F744 C5F9 F8BA A6CF AACB AACA D04F - ACFC FFFD FFFD D04E D362 FFFD AFCC D6F2 - D361 FFFD FFFD FFFD B2DC D6F5 D6F3 D6F4 - B2DB FFFD DB42 DB43 DB41 FFFD B873 DF6D - DF6C DF6E B872 B871 FFFD FFFD E6F2 E6F4 - FFFD BD7E E6F3 EAE3 BFAA F079 FFFD F078 - C3BB F2BD C3BD C3BC F4B0 F5EE C4F3 A6D0 - D050 ACFD D365 AFCE D364 D363 FFFD AFCD - FFFD D6FB FFFD D6FD D6F6 D6F7 B2DD D6F8 - B2DE D6FC D6F9 D6FA B2DF FFFD B5BE B5BF - FFFD DB44 FFFD FFFD FFFD DF6F DF70 FFFD - E37E BB43 BB41 BB42 E37B E37C FFFD E37D - E6F9 FFFD E6FA BDA1 E6F7 E6F6 E6F8 E6F5 - BFAD EAE4 BFAB BFAC EDE6 C16B EDE5 EFA8 - FFFD F07A F07B C2BC FFFD C2BD C16C F2BE - F2BF F4B1 C4A3 A6D1 FFFD A6D2 ACFE AACC - AFCF D051 FFFD FFFD FFFD B5C0 A6D3 AD41 - D052 D053 AD40 AD42 A6D4 FFFD D054 AFD1 - D366 AFD3 AFD0 AFD2 FFFD D741 B2E0 FFFD - D740 D6FE FFFD DF71 FFFD FFFD E3A1 FFFD - BDA2 FFFD BFAE EAE6 EAE5 FFFD EDE7 FFFD - FFFD FFFD F5EF FFFD FFFD A6D5 CB73 CDAA - AD43 D055 FFFD D368 FFFD FFFD FFFD AFD4 - D367 AFD5 FFFD FFFD FFFD D743 FFFD FFFD - B2E2 D742 D744 FFFD B2E1 FFFD FFFD FFFD - FFFD DB46 DB47 DB45 B5C1 FFFD FFFD FFFD - B874 FFFD B875 FFFD BB45 FFFD E3A3 E3A2 - BB44 FFFD FFFD FFFD FFFD FFFD E6FB FFFD - FFFD E6FC FFFD FFFD FFFD FFFD EAE7 FFFD - FFFD C170 C16F C16D C16E C171 FFFD F07C - C2BF C2BE F2C0 F4B2 FFFD FFFD FFFD C5A5 - C5A4 A6D6 FFFD FFFD D1FB FFFD B877 B5C2 - B876 BB46 FFFD A6D7 C9A9 A6D8 A6D9 FFFD - FFFD CDAB CB76 FFFD CB77 A877 FFFD CB74 - A876 FFFD A879 CB75 A87B A87A CB78 A878 - FFFD FFFD FFFD AAD1 AACF CDAD FFFD AACE - FFFD FFFD FFFD AAD3 AAD5 AAD2 FFFD CDB0 - CDAC AAD6 FFFD AAD0 A87C FFFD AAD4 CDAF - FFFD FFFD CDAE FFFD AACD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D05B AD47 AD48 D05D - FFFD D057 D05A D063 D061 FFFD AD49 D067 - AD4C D064 D05C D059 FFFD FFFD DB49 D062 - AD44 D065 D056 D05F AD46 AD4B D060 AD4F - AD4D FFFD D058 AD4A FFFD D05E AD4E AD45 - D066 FFFD FFFD FFFD FFFD FFFD FFFD AFDA - FFFD AFE3 AFD8 AFD6 D36A AFDE AFDB D36C - FFFD FFFD AFDD D36B D369 D36E AFE2 AFE0 - DB48 FFFD D36F D36D AFD7 FFFD FFFD AFD9 - AFDC FFFD AFDF FFFD AFE1 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D74E - B2E4 FFFD D745 D747 FFFD D748 FFFD D750 - D74C D74A FFFD D74D D751 B2E5 B2E9 D746 - FFFD D74F FFFD B2E7 FFFD B2E6 D74B D749 - FFFD B2E3 B2E8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B5C8 DB51 FFFD FFFD DB4F - B5CA FFFD FFFD FFFD FFFD DB4A DFA1 FFFD - B5C9 DB4E FFFD FFFD DB4B B5C5 B5CB DB50 - B5C7 DB4D BB47 B5C6 DB4C B5CC B5C4 B5C3 - FFFD FFFD FFFD FFFD FFFD DF77 DF75 FFFD - DF7B FFFD DF73 DFA2 DF78 FFFD DF72 B87B - B8A3 DF7D FFFD DF76 FFFD B87E FFFD FFFD - B87C DF7E B879 B878 DF79 B87D B5CD FFFD - DF7C DF74 B87A B8A1 B8A2 FFFD FFFD FFFD - FFFD BB4C BB48 FFFD BB4D E3A6 FFFD FFFD - E3A5 E3A7 BB4A E3A4 BB4B E3AA E3A9 E3A8 - FFFD BB49 FFFD FFFD FFFD FFFD FFFD E741 - FFFD E744 BDA8 E743 BDA7 BDA3 BDA4 BDA5 - E740 E6FE BDA6 FFFD E742 E6FD FFFD FFFD - EAE9 EAF3 BFB1 BFB0 FFFD EAED EAEF FFFD - EAEA FFFD EAEE EAE8 EAF1 BFAF EAF0 EAEC - FFFD EAF2 FFFD EAEB C174 EDE8 EDEE C178 - C17A C177 C176 FFFD C175 C173 EDE9 EDEC - C172 EDED FFFD C179 EDEB FFFD EDEA C2C0 - FFFD C2C1 F0A1 F07D F07E FFFD FFFD F2C2 - FFFD F2C1 C3BE F4B4 C4A4 F4B3 FFFD F5F0 - F745 C5A6 F943 F944 C5D8 A6DA FFFD AAD7 - DB52 BB4E C17B EDEF A6DB FFFD AFE5 AFE4 - DB53 FFFD FFFD FFFD EAF4 A6DC AD50 FFFD - FFFD DB54 DB55 DB56 BB4F BFB2 A6DD FFFD - AAD8 D068 AFE6 D370 B2EA FFFD DB57 B8A4 - FFFD BB50 BFB3 C17C C2C2 F4B5 A6DE AAD9 - FFFD FFFD AFE7 D752 B5CE FFFD BB51 E3AB - E745 FFFD FFFD FFFD FFFD A6DF B5CF DFA3 - BB52 A6E0 CDB1 D069 AD51 FFFD FFFD D372 - FFFD FFFD AFEA FFFD AFE8 AFE9 AFEB FFFD - FFFD D371 FFFD FFFD D757 D754 D756 B2EB - B2ED B2EC D753 B2EE D755 FFFD DB58 DB59 - FFFD DB5A DFA6 FFFD DFA7 FFFD DFA5 DFA8 - FFFD B8A5 FFFD DFA4 FFFD BB53 FFFD FFFD - E74A E746 E749 E74B E748 E747 FFFD EAF5 - EAF6 EAF7 BFB4 BFB5 EDF1 EDF0 EDF2 FFFD - F0A3 F0A2 FFFD F2C4 FFFD F2C5 F2C3 FFFD - C4A5 FFFD F4B6 F4B7 FFFD F746 F7EF F8BB - A6E1 A87D FFFD C17D A6E2 FFFD D758 DB5B - FFFD C641 CA4A FFFD FFFD FFFD CA4B CA4D - A6E3 CA4E CA4C FFFD FFFD CBA2 CBA3 CB7B - FFFD FFFD FFFD FFFD CBA1 A8A1 FFFD A8A2 - CB7C CB7A CB79 CB7D A87E CB7E D06A FFFD - FFFD FFFD CDB6 AADC CDB5 CDB7 FFFD AADB - CDBC AADF CDB2 CDC0 CDC6 AAE6 CDC3 AAE3 - FFFD CDB9 CDBF CDC1 FFFD CDB4 AAE2 AADD - CDBA AAE4 AAE7 AAE1 FFFD AADA CDBE CDB8 - CDC5 AAE9 AAE5 AAE0 CDBD AFEC CDBB AADE - AAE8 FFFD CDB3 FFFD CDC2 CDC4 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 82D1 - srcEnd = 8356 - mappingOffset = 3428 - Mapping = - AD62 AD5C AD64 AD61 D071 D074 AD5D FFFD - D06B FFFD AD56 AD60 FFFD AD63 AD65 D0A2 - D077 FFFD AD55 D0A1 AD59 AD57 AD52 D06F - FFFD D07E D073 D076 D0A5 FFFD AD66 D07D - AD5E D078 D0A4 D075 D079 D07C FFFD FFFD - D06D D0A3 D07B FFFD FFFD D06C FFFD D070 - AD5F AD5A AD53 AD58 AD54 AD67 D06E D3A5 - AD5B FFFD FFFD D07A CE41 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D3A8 AFFA FFFD - D376 FFFD D3A3 D37D FFFD D3B2 FFFD D3AA - FFFD D37E FFFD D3A9 D378 D37C D3B5 AFFD - D3AD D3A4 AFED D3B3 D374 FFFD D3AC FFFD - AFFC AFF7 D373 AFF5 AFF4 AFF9 D3AB AFF1 - AFF8 D072 DB5C D3A6 FFFD FFFD D37A AFFB - D37B D3A1 AFFE D375 D3AF FFFD D3AE D3B6 - AFF3 AFF0 D3B4 D3B0 D3A7 D3A2 AFF6 AFF2 - D377 AFEE D3B1 AFEF FFFD D379 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 8373 - srcEnd = 83B0 - mappingOffset = 34AE - Mapping = - D75E D760 D765 D779 B2FC B2F2 FFFD D75D - B2FD B2FE D768 D76F D775 FFFD D762 FFFD - D769 FFFD FFFD B340 D777 D772 B2FA B2F8 - D76E D76A D75C B2EF D761 D759 FFFD B2F7 - B2F9 D766 D763 B2F4 D773 B2F1 D764 D77A - D76C FFFD D76B B2F0 FFFD B2FB FFFD B2F3 - D75A D75F D770 D776 B341 D75B D767 D76D - B2F6 FFFD FFFD D778 D771 D774 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 83BD - srcEnd = 84DB - mappingOffset = 34EC - Mapping = - B2F5 FFFD DB6C DB60 B5D7 DB7D DBA7 DBAA - B5D5 DB68 DBA3 DB69 DB77 B5E2 DB73 B5DF - FFFD DB74 DB5D FFFD DBA4 FFFD FFFD B5E8 - DBA1 DB75 DBAC DB70 DFC8 FFFD DBAF B5E6 - DB6E DB7A B5E9 B5D4 DB72 DBAD DB6B DB64 - DB6F FFFD DB63 DB61 B5D0 DBA5 DB6A DBA8 - FFFD DBA9 B5D8 B5DD B5D9 B5E1 DB7E B5DA - DB76 DB66 FFFD B5D2 DB5E DBA2 DBAB DB65 - B5E0 DBB0 DB71 FFFD DB6D FFFD B5D1 B5E5 - FFFD DB7C B5E7 FFFD DB78 B5DC B5D6 B5DE - B5D3 B5E4 DB79 DB67 DB7B DB62 DBA6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DBAE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DB5F FFFD - FFFD FFFD FFFD FFFD DFC7 FFFD DFDD B855 - DFCC FFFD DFCA DFB5 B8A9 DFC5 DFD9 DFC1 - B8B1 DFD8 DFBF B5E3 DFCF DFC0 DFD6 B8B0 - B8A8 FFFD DFAA DFB2 FFFD DFCB DFC3 DFDC - DFC6 B8B6 DFD7 FFFD B8AD FFFD DFC9 DFD1 - DFB6 DFD0 FFFD DFE1 DFB1 DFD2 FFFD DFDF - FFFD DFAB B5DB FFFD DFB9 DFB8 B8AF FFFD - DFBC DFBE DFCD DFDE B8B2 FFFD B8B3 FFFD - DFB0 B8AB DFB4 DFDA B8B4 FFFD B8AC B8AE - B8B5 DFE0 DFD3 DFCE FFFD FFFD DFBB DFBA - B8AA DFAC B8A7 DFC4 DFAD DFC2 FFFD FFFD - DFB7 DFDB FFFD FFFD FFFD B8A6 FFFD FFFD - FFFD DFB3 FFFD FFFD FFFD FFFD FFFD FFFD - DFAF DFD5 DFAE BB60 E3D3 FFFD FFFD E3C2 - FFFD FFFD E3AC E3CA BB58 E3BB E3C5 BB5B - E3BE BB59 E3AF E3CD E3AE E3C1 FFFD E3AD - FFFD FFFD E3BF E3C8 E3C6 E3BA E3B5 E3B3 - FFFD E3B4 E3C7 E3D2 E3BC BB5A FFFD E3B7 - FFFD E3CB FFFD BB5D E3B6 E3B0 E3C0 BB61 - FFFD FFFD BB55 BB5E E3B8 E3B2 FFFD BB57 - DFD4 BB56 E3C3 FFFD BB54 BB63 BB5C E3C4 - E3B9 E3B1 E3CC E3BD BB62 E3D0 BB5F E3CF - FFFD E3C9 E3CE FFFD FFFD FFFD E3D1 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 84E7 - srcEnd = 89C0 - mappingOffset = 360B - Mapping = - E773 E774 E767 E766 E762 BDB4 FFFD BDAC - E776 E775 DFA9 E75F E763 E75D FFFD E770 - E761 FFFD E777 E75A E758 E764 E76E E769 - BDB6 E74F FFFD E76D FFFD FFFD FFFD BDB7 - DFBD E75B E752 E755 E77B E75C E753 E751 - E74E FFFD BDB0 E765 BDAF BDB3 E760 E768 - BDA9 E778 E77C BDAB FFFD E757 E76B E76F - E754 E779 BDB2 FFFD BDB1 E74C BDB5 E772 - E756 E76A E750 E75E E759 BDAD BDAE E76C - E77D E77A E771 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E74D FFFD BDAA EB49 - FFFD EB40 EB43 FFFD BFBB EB45 EAF9 EB41 - EB47 BFB8 BFBC BFB6 FFFD FFFD EAFB EB4C - FFFD FFFD EB46 FFFD EAFC EB55 EB4F EAF8 - EE46 EAFE BFB7 FFFD EB4A FFFD EB54 BFBF - FFFD EB51 EAFD EB44 EB48 EB42 EB56 EB53 - EB50 BFB9 BFBA BFBE EAFA EB57 BFBD EB4D - FFFD FFFD EB4B FFFD FFFD FFFD EB4E EE53 - EE40 EE45 EE52 EE44 EDFB EE41 FFFD C1A2 - FFFD EDF4 EE4D EE4F EDF3 C1A1 EE51 EE49 - C1A8 EE50 EE42 C1AA EDF9 EB52 EE4A EE47 - EDF5 EE55 C1A4 FFFD FFFD C1A5 EDF7 EE48 - FFFD EE54 EE4B EDFD C1A7 C1A3 EE4C EDFE - EE56 EDF8 EE43 EE4E EDFA EDFC FFFD C2CB - EDF6 C1A9 C2C4 C17E FFFD FFFD FFFD FFFD - C1A6 C2C8 F0B3 FFFD F0A9 F0A4 F0AA F0B4 - F0B8 F0B7 C2CA C2C9 FFFD FFFD F0AB F0B9 - F0AE F0A6 FFFD F0A8 F0A7 F0AD F0B2 F0A5 - F0AC F0B1 C2C7 FFFD F0AF FFFD C2C5 F0B0 - C2C3 C2C6 F2D5 F0B5 FFFD FFFD C3C2 FFFD - F2CD F2D1 F2C9 F2CC FFFD F2D4 C3C0 F2D9 - F2D2 FFFD F2CA F2DA F2D3 C3C3 C3C4 F2D7 - FFFD F2CB C3BF C3C1 F2C6 F2CE F2C8 FFFD - F2D8 F2D6 F2C7 F2CF FFFD FFFD FFFD F4BE - C3C5 F2D0 C4A7 C4A9 C4A6 FFFD F4C3 F4BB - F4B9 F4BD F4BA FFFD FFFD F4BF F4C1 C4AA - C4AC FFFD F4C0 C4AD C4AB F4C2 FFFD FFFD - FFFD FFFD C4A8 FFFD FFFD FFFD FFFD FFFD - C4F4 F5F1 F5F7 C4F6 F4BC F5F6 FFFD F5FD - F5F4 F5FB F5FA F4B8 F5F5 F0B6 F5FE F5F3 - F5F8 FFFD F5FC F5F2 FFFD F74A C4F5 F5F9 - FFFD FFFD F7F4 F74B F749 F747 F748 F74C - FFFD C5D9 F7F2 F7F0 F7F5 F7F3 FFFD F7F6 - C5DA F7F1 FFFD FFFD F8BC FFFD FFFD F945 - F946 F947 FFFD FFFD F9C7 F9BD CA4F AAEA - FFFD AD68 FFFD D3B8 D3B7 B040 B342 D77C - FFFD FFFD D77B FFFD B5EA B8B8 FFFD B8B7 - B8B9 FFFD E3D4 E77E EB58 EB5A EB59 FFFD - C1AB EE57 F0BA F9A5 A6E4 FFFD CDC9 CDCA - CDC8 CDC7 AAEB FFFD D0A9 D0A7 FFFD FFFD - D0A6 FFFD AD69 AD6B AD6A D0A8 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D3C4 D3C1 - D3BF FFFD FFFD B041 D3C2 B046 D3BC D3CB - FFFD D3CD D3BD FFFD B043 D3CE D3C9 D3BB - D3C0 D3CA D3C6 D3C3 FFFD B048 D3CC D3BE - FFFD FFFD D3C7 D3B9 B047 B044 D3C5 FFFD - D3C8 D3BA B045 B042 FFFD FFFD FFFD FFFD - B34C D7A5 B34B FFFD D7A8 D7AB B348 B346 - D77E D7A9 D7A7 D7A4 D7AC D7AD D7AF D7B0 - D77D B345 D7A2 D7A1 D7AE B347 D7A3 B349 - B344 D7A6 B34D FFFD B34A D7AA FFFD FFFD - FFFD B5F1 DBBF FFFD DBB4 B5EE FFFD DFE7 - DBBD DBB1 B5EC DBB6 B5EF DBBA DBB8 B5F2 - B5EB FFFD FFFD DBB2 DBB5 B5F0 FFFD DBB3 - FFFD DBBE DBBC DBB7 DBB9 DBBB B5ED FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DFE8 DFEE - DFE4 DFEA B8BA DFE6 B8C0 FFFD FFFD B8BF - FFFD B8BE DFED B8C1 B8C2 DFE3 DFF0 B8C3 - B8BD B8BC DFEC B8C4 DFE2 DFE5 DFEF DFEB - FFFD FFFD E3F4 E3E9 B8BB FFFD FFFD FFFD - FFFD BB6A E3DD E3F2 E3DE BB65 FFFD E3DB - FFFD E3E4 E3DC BB67 E3D6 E3F1 BB68 E3EE - E3EF E3D7 BB6D E3E6 FFFD E3E0 E3E7 E3DA - FFFD E3F3 E3EB E3E5 E3D5 BB69 E3EC FFFD - BB6C E3F0 FFFD E3EA BB66 E3E8 FFFD E3E2 - BB64 E3D9 E3E1 E3ED E3DF FFFD FFFD E3E3 - FFFD FFFD FFFD FFFD FFFD BDC1 DFE9 E7B2 - E7BB E7B1 E7AD E7AA BDC2 E7A8 BB6B E7A1 - BDC0 E7A7 BDBF E7AC E7A9 E7B9 E7B4 E7AE - E7B3 BDBB E7AB E7BE E7A2 E7A3 E7BA BDBC - E7BF BDBE E7C0 E7B0 E3D8 E7B6 E7AF E7B8 - E7B5 FFFD FFFD FFFD E7A6 BDB9 E7BD BDBA - E7A4 BDBD EB64 E7B7 E7BC FFFD FFFD FFFD - FFFD FFFD EB61 BDB8 BFC0 EB6B EB67 FFFD - EB65 EB60 EB6F FFFD FFFD FFFD BFC4 FFFD - EB5C EB68 EB69 EB5F EB5E EB6C FFFD EB62 - EB5D EB63 FFFD EB6E EB5B EB6D EB6A BFC2 - BFC1 FFFD FFFD BFC3 EB66 F0CB FFFD FFFD - FFFD FFFD FFFD EE59 C1B1 EE5D EE5A EE61 - EE67 EE5C FFFD EE70 C1AE EE6A EE5F EE6B - EE66 EE6D EE5E C1B3 C1B2 EE60 EE6E EE58 - EE6C C1AC FFFD EE64 EE63 EE68 EE5B C1B0 - FFFD C1B4 EE62 EE69 C1B5 EE65 FFFD FFFD - FFFD FFFD C1AD C1AF F0C7 F0C5 FFFD FFFD - F0CC F0C9 F0CD FFFD F0BE F0C6 F0D1 EE6F - F0C2 C2CF E7A5 F0BD F0CA F0C4 F0C1 F0BC - F0BB F0D0 FFFD F0C0 F0BF C2CD F0C8 FFFD - C2CC FFFD FFFD C2CE F0C3 F0CF FFFD F2DE - F2DF FFFD C3C9 F2DC C3C6 F2E4 FFFD C3CA - F2E6 F2DB F0CE F2E8 F2DD FFFD C3C7 F2E3 - FFFD F2E5 F2E0 F2E7 F2E2 F2E1 C3C8 FFFD - FFFD F4C5 F4C6 FFFD F4C8 C4AE C4AF F4C9 - F4C7 FFFD F4C4 FFFD F642 F645 F641 FFFD - C4FA F643 C4F9 C4F8 C4F7 F644 F751 F74F - FFFD F74E F640 F750 F646 F74D FFFD F7F9 - F7D7 F7F7 C5DB F7F8 F7FA FFFD F8BF C5FA - F8BE F8BD C5FB FFFD C65A F96E F9A7 F9A6 - F9A8 A6E5 D0AA FFFD D3CF D3D0 FFFD FFFD - FFFD DBC0 FFFD F647 F8C0 A6E6 AD6C D0AB - FFFD FFFD FFFD D7B1 B34E FFFD DBC2 DBC1 - B5F3 FFFD B8C5 E7C1 BDC3 FFFD BDC4 FFFD - FFFD FFFD BFC5 C5FC A6E7 FFFD FFFD FFFD - D0AC AAED D0AE D0AD AD6D FFFD D3D1 FFFD - D3D8 B049 D3D6 D3D4 FFFD D3DB D3D2 D3D3 - B04A FFFD B04E FFFD FFFD D3DC B04D D3DA - D3D7 D3D5 B04B B04C D3D9 FFFD FFFD FFFD - FFFD B350 D7B2 FFFD B355 D7C2 B354 D7C4 - FFFD FFFD D7B8 B352 D7C3 FFFD D7B3 B353 - D7BF D7BB D7BD D7B7 D7BE FFFD FFFD B34F - D7BA FFFD D7B9 D7B5 FFFD D7C0 FFFD FFFD - D7BC D7B4 FFFD D7B6 B351 D7C1 FFFD FFFD - FFFD FFFD B5F6 DBCD FFFD FFFD FFFD DBC9 - DBCB DBC6 DBC5 DBC3 FFFD DBCA DBCC DBC8 - FFFD DBC7 B5F4 B5F5 FFFD FFFD FFFD FFFD - FFFD FFFD DBCF B8CD DFF2 DFF8 DFF3 DFF4 - F9D8 DFF9 FFFD B8CF FFFD B8C7 B8CE DFF1 - DBC4 B8CA B8C8 DFF7 DFF6 B8C9 B8CB DFF5 - B8C6 FFFD B8CC FFFD FFFD FFFD FFFD FFFD - E3F6 BB74 FFFD FFFD E442 E441 FFFD E3FB - BB76 E440 E3F7 E3F8 BB6E BB70 FFFD E3FD - E3F5 BB72 BB71 E3F9 E3FE E3FC BB73 E3FA - FFFD FFFD DBCE BB6F FFFD FFFD E7C2 E7C9 - BDC6 FFFD E7CD BDCA E7C5 E7C3 FFFD E7CC - FFFD BDC5 E7CB BDC7 BDC8 E7C4 BDC9 E7CA - E7C6 E7C7 E7C8 BB75 FFFD FFFD FFFD EB70 - EB7C FFFD BFCA EB77 EB79 FFFD BFC8 EB71 - EB75 FFFD EB78 BFC6 BFC9 EB7B EB73 EB74 - EB7A EB72 EB76 BFC7 EE72 FFFD EE71 C1B7 - EE77 C1B9 FFFD FFFD C1B6 EE73 C1BA EE74 - FFFD FFFD EE75 EE78 FFFD C1B8 FFFD F0D6 - FFFD FFFD F0D9 FFFD F0D3 F0D5 FFFD FFFD - F0D4 F0D7 F0D8 EE76 F0D2 FFFD FFFD C3CD - F2EC F2EF F2F1 F2EA F2EB F2EE F2F0 C3CE - C3CC C3CB F2ED F2E9 F4CA C4B0 FFFD F4CB - FFFD FFFD F649 C4FB F64B C4FC F648 F64A - C5A8 FFFD F752 C5A7 F7FD F7FC FFFD F7FB - FFFD FFFD F948 F949 F94B F94A FFFD CA50 - A6E8 FFFD AD6E D7C5 B5F7 FFFD DFFA C2D0 - FFFD F2F2 FFFD FFFD A8A3 FFFD FFFD FFFD - B357 FFFD FFFD FFFD B356 FFFD DBD0 B5F8 - DBD2 DBD1 FFFD FFFD DFFB B8D0 E443 E446 - E445 FFFD E444 E7CE E7D0 E7CF FFFD BFCC - FFFD FFFD FFFD BFCB FFFD C1BB EE79 EE7B - EE7A FFFD FFFD C2D1 FFFD FFFD FFFD F2F4 - F2F3 FFFD F4CC C4B1 FFFD FFFD C4FD F754 - F753 C65B -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 89D2 - srcEnd = 8B9F - mappingOffset = 3AE5 - Mapping = - A8A4 D0AF AD6F D7C8 D7C6 FFFD FFFD D7C7 - DBD4 DBD5 E043 DBD3 FFFD DFFC E041 E040 - E042 B8D1 DFFE DFFD E044 FFFD E449 E447 - FFFD E448 E7D3 E7D1 FFFD FFFD E7D2 EB7D - EE7C EE7D C2D2 FFFD F2F5 F4CD C4B2 FFFD - F64C F755 C5A9 FFFD F7FE F94C A8A5 FFFD - AD71 AD72 D0B0 FFFD FFFD D0B1 AD70 FFFD - B054 FFFD B052 FFFD B051 B058 B050 B059 - D3DD B056 FFFD B053 B057 B055 B04F FFFD - FFFD B35F FFFD B359 D7CC B35E FFFD FFFD - B360 B35A FFFD B35B FFFD D7CA FFFD FFFD - B358 FFFD D7CB B35D FFFD FFFD D7C9 B35C - FFFD FFFD B644 FFFD B646 FFFD FFFD DBD8 - B645 B5F9 B5FD FFFD B8E4 E049 DBDA B5FE - FFFD FFFD DBDD DBDE B643 FFFD DBE0 FFFD - DBE2 FFFD DBE3 DBD7 DBD6 DBE4 B642 DBE1 - DBDF FFFD B640 B5FB B647 DBDB DBDC DBD9 - FFFD B641 FFFD FFFD B5FC FFFD B5FA E048 - B8DF B8DA FFFD FFFD B8D5 FFFD B8E5 B8D6 - FFFD B8D2 B8E1 B8DE B8E0 FFFD B8D7 B8DC - B8D3 B8D4 E050 E04D E045 E04A FFFD B8E2 - E051 B8E3 B8D9 FFFD FFFD E047 FFFD E04F - E04B E04E E04C B8DD E046 B8D8 FFFD FFFD - FFFD E44C BB78 BB7B FFFD E44E FFFD BBA5 - E44D BB7D FFFD BDCF E44F FFFD BBA4 E44B - BBA6 FFFD FFFD FFFD BB79 FFFD B8DB BB7C - FFFD BB7A BB7E BBA2 BB77 BBA7 BBA3 FFFD - BBA1 E44A FFFD FFFD FFFD FFFD BDD6 FFFD - BDD2 FFFD FFFD FFFD BDD9 FFFD E7D6 BDDA - E7E2 E7DB BDCB E7E3 E7DD BDD5 E7DE FFFD - BDD4 E7E1 BDCE E7DF E7D5 BDCD EBAA BDD3 - FFFD BDD0 FFFD BDD8 FFFD E7D4 FFFD E7D8 - BDCC E7D7 E7D9 E7DA BDD7 E7DC E7E0 E7E4 - FFFD BDDB BFD2 EBA5 EBAB EBA8 EB7E EBAC - EBA1 FFFD EBA7 FFFD BFCD BFD3 EBAD FFFD - FFFD BFCF FFFD BFD9 BFD4 EBAF EBA9 BFD0 - EBA2 BFDA EBA3 EBA4 BFDB BFD8 BDD1 FFFD - BFCE EBB0 BFDC FFFD BFD5 EBAE BFD1 BFD6 - BFD7 FFFD C1C3 EEA4 EEAD EEAA EEAC FFFD - C1C0 EEA5 FFFD EEAB C1BC EEA7 C1C4 EEA3 - EEA8 EEAF EBA6 EEA9 EEA2 C1BD EEA1 C1BE - EEB0 C1BF EEAE C1C2 EE7E FFFD C1C1 FFFD - EEA6 F0DC F0EA F0E5 F0E7 F0DB C2D3 FFFD - F0DA C2D6 C2D5 FFFD F0E9 F0E1 F0DE F0E4 - FFFD F0DD FFFD F0DF F0E8 F0E6 FFFD C2D4 - F0ED F0EB F0E2 F0EC F0E3 FFFD F2F9 C3CF - F341 FFFD FFFD F64F C3D6 F0E0 F2F7 C3D2 - F2F8 F2FD FFFD FFFD C3D4 C3D5 F2F6 F340 - F342 F2FA F2FC F2FE F2FB F343 C3D1 C3D7 - C3D3 FFFD C3D0 F4D0 FFFD C4B7 F4CE FFFD - FFFD F4D2 FFFD F4D3 C4B5 F4D4 F4D1 FFFD - F4CF C4B8 C4B4 F4D5 FFFD C4B6 C4B3 FFFD - FFFD FFFD C4FE FFFD FFFD C540 F64E F64D - F650 F651 FFFD C541 F756 F75B C5AA FFFD - F758 FFFD F757 F75A F759 FFFD F843 FFFD - C5DC F842 F840 FFFD F841 FFFD FFFD FFFD - C5FE C5FD F8C1 F8C2 C640 FFFD F94D F94E - C667 FFFD C66D FFFD F9A9 F9C8 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 8C37 - srcEnd = 8D1B - mappingOffset = 3CB3 - Mapping = - A8A6 FFFD D7CD FFFD D7CE E052 E450 E7E5 - C1C6 FFFD C1C5 F0EE F344 FFFD F844 A8A7 - D3DE B05A B361 E054 E053 BDDC E7E6 BDDD - EEB1 C2D7 FFFD FFFD FFFD C676 A8A8 CDCB - D3DF FFFD FFFD B362 FFFD D7CF D7D0 FFFD - DBE5 FFFD B648 B8E6 FFFD E056 E055 E057 - FFFD E451 E452 BBA8 BFDD BDDE BFDE FFFD - EEB5 EEB2 EEB4 EEB3 C1C7 FFFD F0EF F346 - F345 CBA4 B05C B05B D3E0 FFFD D7D1 FFFD - FFFD DBE7 DBE6 B649 FFFD E059 E05A E058 - FFFD FFFD B8E8 B8E7 FFFD BBAA BBA9 FFFD - E7E7 EBB3 EBB1 EBB2 BFDF EEB7 EEB6 FFFD - F0F2 F0F1 F0F0 F347 FFFD F9AA A8A9 AD73 - FFFD AD74 B05D B05E D3E2 D3E1 D7D2 FFFD - B368 B366 B363 B367 B365 B364 FFFD FFFD - B64A DBEA FFFD B8ED B64C B651 DBEC B653 - B652 B655 DBEB DBE8 B64F B64B B64D DBE9 - B654 B650 B64E B8EF B8EE B8EC B8F0 FFFD - B8EA B8EB FFFD B8E9 FFFD E05B FFFD FFFD - E454 FFFD BBAC BBAD BBAB FFFD E453 FFFD - E455 FFFD E7EA E7EC FFFD BDE7 E7ED BDE0 - E7E9 BDDF BDE9 BDE5 BDE6 BDE2 E7E8 BDE1 - E7EE E7EB FFFD BDE8 FFFD BDE3 BDE4 EBB5 - FFFD EBB7 EBB6 FFFD EBB8 BFE0 EBB4 FFFD - FFFD C1CB EEB8 C1C8 C1CC C1CA C1C9 F0F3 - FFFD F0F6 FFFD F0F5 FFFD F0F4 C2D8 F348 - F349 C3D8 F34A C3D9 FFFD FFFD C4BA FFFD - C4B9 F652 FFFD FFFD C542 F653 F75C C5AB - C5AC FFFD F845 FFFD C642 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 8D64 - srcEnd = 8F64 - mappingOffset = 3D98 - Mapping = - A8AA FFFD B36A B369 E05C E05D FFFD BBAE - EBB9 BDEA EBBA EEB9 A8AB FFFD D0B2 AD76 - AD75 FFFD D3E3 B05F D3E4 D7D5 FFFD D7D4 - FFFD D7D3 FFFD FFFD DBEE B658 FFFD FFFD - DBED B657 FFFD FFFD FFFD DBEF B656 FFFD - E05F E062 E060 E061 E065 E05E E066 E063 - E064 BBB0 E456 FFFD FFFD BBAF FFFD E7F2 - E7F0 FFFD FFFD BDEB E7EF E7F1 FFFD BDEC - FFFD EBBB FFFD EBBC C1CD FFFD F34C F34E - F34B F34D F4D6 F654 FFFD FFFD F96F A8AC - AD77 D3E5 D3E7 D3E6 FFFD D7D8 B36C FFFD - D7D6 FFFD B36B D7D9 FFFD D7DA D7D7 FFFD - FFFD DBFB B660 DBF3 DBF9 FFFD FFFD B65B - B65E DBF2 B659 DBF6 E06C B65D FFFD DBF1 - FFFD DBF7 DBF4 DBFA DBF0 DBF8 B65C B65F - DBF5 B65A FFFD B8F2 E068 B8F1 E06F E06E - B8F8 FFFD B8F9 E070 B8F3 E06D B8F7 E072 - E069 FFFD E06B B8F4 E067 E06A E071 B8F5 - E073 FFFD FFFD FFFD FFFD FFFD B8F6 FFFD - BBB1 E45B E461 E459 E462 FFFD E458 E45D - E463 E460 E45F E45E FFFD E457 E45C FFFD - FFFD E45A FFFD BDF1 BDEE E7FB E841 E843 - E840 E7F8 E7FA E845 E842 E7FC E846 E7F9 - E844 BDEF BDF5 BDF3 E7F3 BDF4 BDF0 E7F4 - E7F6 E7F5 E7FD E7FE FFFD BDF2 FFFD BDED - FFFD FFFD E7F7 FFFD EBC6 BFE2 FFFD EBBD - BFE3 BFE6 EBC2 FFFD EBBF BFE5 FFFD FFFD - EBC3 EBC4 EBBE EBC7 EBC0 EBC5 BFE4 FFFD - BFE1 EBC1 FFFD EEBF C1D0 C1CE C1D1 C1CF - EEBE EEBB EEBA FFFD EEBD FFFD FFFD EEBC - F145 C2DE F0FB F0FA FFFD C2D9 F141 F140 - F0F7 F143 F0FC C2DD F0F9 F142 F0F8 C2DA - C2DC F0FD C2DB F0FE FFFD F144 F352 FFFD - C3DE F34F FFFD F353 FFFD FFFD C3DB F351 - C3E0 FFFD C3DD FFFD F350 FFFD C3DF F354 - C3DA FFFD FFFD FFFD FFFD C4BC C4BE FFFD - F4D9 C4BD F4D7 C3DC F4D8 C4BB C543 C545 - F656 C544 F655 FFFD F761 C5AD F760 C5AE - F75E F75D F762 F763 F846 FFFD F75F FFFD - FFFD F8C6 F8C3 F8C4 F8C5 C65C FFFD F951 - F950 F94F F970 FFFD F9BE F9AB C66E A8AD - B060 FFFD FFFD FFFD FFFD FFFD B8FA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD BDF6 FFFD - FFFD EBC8 FFFD FFFD C2DF FFFD F355 FFFD - FFFD FFFD FFFD FFFD FFFD F9AC A8AE AAEE - AD79 AD78 FFFD B063 FFFD D3E8 B061 D3E9 - B062 FFFD FFFD D7DF D7DB FFFD FFFD B36D - D7DE D7DD D7DC B36E D7E0 D7E1 FFFD FFFD - FFFD DC43 DC41 DC45 DC46 DC4C FFFD DC48 - DC4A FFFD DC42 DBFC FFFD DC49 FFFD FFFD - DC4B DC44 DC47 DBFD B662 DC40 DBFE B661 - B663 FFFD B8FD E075 E077 E076 E07B B8FB - FFFD E078 E074 E079 E07A B8FC B8FE E07C - FFFD E467 E466 FFFD E464 E465 BBB3 BBB5 - BBB2 BBB4 E84D E84E E849 FFFD E84A BDF8 - BDFD BDF7 BDFE BDF9 E84B FFFD FFFD E84C - E848 BE40 BDFB FFFD FFFD BDFA BDFC FFFD - E847 FFFD EBCA BFE8 FFFD FFFD EBCC BFEA - EBCF EBCB EBC9 EBCE BFE9 EBCD FFFD BFE7 - FFFD FFFD C1D3 C1D6 EEC1 FFFD C1D4 EEC0 - C1D2 C1D5 F146 F147 F148 C2E0 FFFD F149 - FFFD C2E1 C3E2 F358 F359 F357 F356 F35A - C3E1 F4DD F4DB F4DC F4DE F4DA F4DF F658 - FFFD F659 F657 C546 F764 C5AF F765 F848 - F847 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 8F9B - srcEnd = 9483 - mappingOffset = 3F99 - Mapping = - A8AF B664 FFFD FFFD B940 FFFD FFFD FFFD - BBB6 FFFD FFFD BFEC FFFD BFEB FFFD FFFD - FFFD FFFD C3E3 C47C C547 A8B0 B064 B941 - FFFD F35B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CBA6 FFFD FFFD A8B1 - FFFD A8B4 A8B3 A8B2 FFFD FFFD CBA5 FFFD - CDCD FFFD CDCF AAEF FFFD FFFD AAF1 CDCC - CDCE AAF0 CDD1 CDD0 CDD2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D0B6 D0B4 AD7C - D0B3 ADA3 AD7E AD7B FFFD ADA4 FFFD AD7D - ADA2 FFFD ADA1 D0B5 FFFD AD7A FFFD FFFD - FFFD B06A D3EB D3F1 B067 B06E FFFD B069 - D3EE D3F0 B06C D3EA D3ED B068 B065 D3EC - B06B D3EF B06D B066 FFFD FFFD FFFD FFFD - D7E3 D7E6 B370 FFFD B37A B376 D7E4 FFFD - FFFD B37E B377 B37C B372 FFFD B36F B371 - B37D D7E5 B375 B378 B374 B379 D7E7 B37B - B373 D7E2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DC4D B665 DC4F FFFD B667 B669 - FFFD DC4E B666 B66A FFFD B668 FFFD FFFD - FFFD B947 E0A3 B94F E07E FFFD B950 B945 - FFFD E0A1 FFFD FFFD B94A FFFD E0A2 B943 - B942 FFFD B94D B94C B94B B949 B94E E07D - B944 B946 B948 FFFD FFFD BBB8 BBBB FFFD - BBBF BBB9 BBBE BBBC FFFD BBB7 FFFD BBBD - BBBA FFFD FFFD FFFD E852 BE43 BE41 FFFD - E853 FFFD BE44 BE42 E851 E850 FFFD BFF0 - E84F BFEE BFED EBD0 BE45 BFEF EBD1 BFF2 - EBD2 BFF1 C1D8 EEC3 C1D7 C1DC C1DA C1DB - C2E3 C1D9 EEC2 EBD3 C2E2 C2E4 FFFD C3E4 - C3E5 FFFD F4E0 FFFD C5DE C5DD A8B6 FFFD - FFFD CA55 B06F FFFD CA52 CA53 CA51 FFFD - CA54 FFFD FFFD CBAA CBA7 CBAC CBA8 A8B7 - A8BA FFFD CBA9 A8B9 CBAB FFFD FFFD A8B8 - FFFD FFFD FFFD FFFD CDD5 CDD7 AAF4 CDD3 - CDD6 CDD4 AAF2 AAF5 FFFD AAF3 FFFD FFFD - FFFD FFFD D0B8 D0BC D0B9 FFFD ADA7 FFFD - ADA8 FFFD D0BB FFFD D0BD D0BF FFFD ADA5 - D0BE FFFD FFFD ADA6 FFFD FFFD FFFD FFFD - FFFD D7EE D0BA D3F2 D3FB D3F9 D3F4 D3F5 - D3FA D3FC B071 FFFD D3F7 D3F3 B070 B072 - D3F6 D3FD D3F8 FFFD FFFD B3A1 D7F1 D7E9 - D7EF D7F0 B3A2 FFFD D7E8 D7EA D0B7 D7EC - D7ED D7EB B66C FFFD FFFD FFFD DC56 EBD4 - DC57 DC54 B3A3 B66E DC53 DC59 DC58 B66B - DC5C DC52 DC5B DC50 DC5A DC55 B66D FFFD - E0AA FFFD E0A5 E0AB E0A6 E0A4 E0A7 B951 - FFFD E0A9 FFFD E0A8 B952 BBC1 BBC0 E46E - E471 E469 E46D BBC2 E46C E46A E470 E46B - E468 E46F FFFD E859 BE48 F14A E856 E857 - E855 DC51 BE47 E85A E854 BE46 BE49 E858 - EBD5 BFF3 EBD6 EBD7 FFFD EEC4 C1DD F14B - F14C FFFD FFFD F14D F35D F35C F4E2 FFFD - F4E1 F65B F65C F65A F766 C5B0 A8BB ADAA - ADA9 B075 B074 D440 D441 D3FE FFFD B073 - D7F5 FFFD D7F6 D7F2 B3A4 D7F3 FFFD D7F4 - FFFD FFFD FFFD FFFD DC5F DC61 DC5D DC60 - B66F DC5E B670 FFFD FFFD DD73 B955 B954 - FFFD B953 FFFD E0AC E0AD FFFD FFFD E473 - E475 BBC6 BBC3 FFFD BBC5 BBC4 E474 E472 - FFFD FFFD FFFD FFFD FFFD E861 E85E E85F - BE4D E860 E85B E85C BE4A FFFD BE4B E85D - BE4C FFFD EBDB FFFD EBDC EBD9 EBDA BFF4 - EBD8 FFFD FFFD FFFD FFFD FFFD EEC8 EEC5 - EEC7 C1E0 EECB C1DF EEC9 EECC EECA EEC6 - C1DE FFFD F14F FFFD F150 F14E FFFD F152 - C2E5 C2E6 F35F C3E7 F151 F35E C3E6 F4E5 - F4E6 C4BF F4E4 FFFD F4E3 FFFD F65D C548 - FFFD F849 F8C8 F8C7 FFFD C643 C65D F8C9 - F971 FFFD C66F A8BC AAF6 FFFD B956 FFFD - C4C0 A8BD ADAB B3A5 B671 C2E7 AAF7 FFFD - D0C1 D0C0 D442 FFFD B078 B076 B07A D444 - FFFD B079 B077 FFFD FFFD FFFD FFFD D443 - B3A8 D7FC FFFD B3A7 B3A9 D842 B3AB D7FE - D840 D7F7 B3AA D843 FFFD FFFD D7F9 FFFD - D7FA D7F8 B3A6 FFFD D841 D7FB D7FD FFFD - FFFD FFFD DC6D FFFD DC6C DC6A DC62 DC71 - DC65 DC6F DC76 DC6E B679 FFFD B675 DC63 - FFFD DC69 B677 FFFD DC68 B678 B67A DC6B - FFFD B672 B673 DC77 DC75 FFFD DC74 DC66 - FFFD DC72 FFFD B676 FFFD FFFD FFFD FFFD - B674 DC73 DC64 DC67 DC70 FFFD FFFD FFFD - FFFD FFFD E4BA E0B7 FFFD E0B0 E0C3 E0CC - E0B3 B961 FFFD E0C0 B957 B959 B965 E0B1 - FFFD FFFD B95A B95C B966 B95B FFFD FFFD - FFFD FFFD B964 E0B9 FFFD E0AE B962 E0B8 - B95E E0CA B963 E0C8 E0BC E0C6 B960 E0AF - E0C9 E0C4 FFFD E0CB B958 FFFD FFFD B967 - B95D FFFD FFFD E0B5 FFFD E0BD E0C1 FFFD - E0C5 B95F E0B4 E0B2 E0BE FFFD FFFD FFFD - FFFD E0BB E0BA FFFD E0BF E0C2 FFFD E0C7 - FFFD FFFD FFFD E478 FFFD BBC7 E4A4 E47A - BBCC BBD0 E4AD E4B5 E4A6 BBC8 FFFD E4AA - E0B6 FFFD BBC9 E4B1 E4B6 E4AE FFFD E4B0 - E4B9 E4B2 E47E E4A9 FFFD FFFD BBD1 FFFD - BBCD E47C E4AB BBCB E4A5 BBCA E4B3 E4A2 - E479 BBCE E4B8 FFFD FFFD E47B E4AF E4AC - E4A7 E477 E476 E4A1 E4B4 BBCF E4B7 E47D - E4A3 BE52 FFFD FFFD FFFD FFFD FFFD BE5A - BE55 E8A4 E8A1 E867 BE50 FFFD F9D7 FFFD - BE4F BE56 FFFD FFFD FFFD E865 BE54 E871 - E863 E864 BE4E E8A3 BE58 E874 E879 E873 - EBEE E86F E877 E875 E868 E862 E87D BE57 - E87E FFFD E878 FFFD E86D E86B E866 FFFD - FFFD FFFD E86E E87B E86A E87A E8A2 FFFD - FFFD BE53 FFFD E876 E87C E872 E86C BE51 - FFFD FFFD FFFD E4A8 E870 BE59 E869 FFFD - FFFD FFFD FFFD FFFD EBF4 BFF7 EBF3 EBF0 - EC44 BFFB FFFD EC41 EBF8 EC43 EBE9 EBF6 - FFFD BFFD FFFD EBE1 FFFD EBDF EC42 FFFD - EC40 EBFE EBED EBEC EBE2 C040 FFFD EBE8 - EBF2 EBFD C043 EC45 FFFD C1E8 C045 BFFE - EBE6 FFFD EBEF EBDE EBE0 BFF5 C042 BFFA - EBE7 EBF7 EBF1 C041 EBDD C1E3 EBF9 EBFC - BFFC FFFD EBEB C044 BFF9 FFFD FFFD FFFD - BFF8 EBF5 EBFB BFF6 FFFD EBE4 EBFA FFFD - FFFD EBE5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EBEA EED2 FFFD EED7 C1E5 - C1E7 EEDD C1E1 EEEC EEE3 EED8 EED9 EEE2 - FFFD C1EE EEE1 EED1 EEE0 EED4 EEED C1ED - C1EB EED5 FFFD EEE8 FFFD EEDA EEE7 FFFD - EEE9 EED0 C1E6 FFFD EEEA FFFD FFFD EEDE - FFFD C1EA EEDB FFFD FFFD C1EC EEE4 FFFD - FFFD FFFD C1E4 EED6 EEE5 FFFD EEDF EBE3 - EEE6 EED3 FFFD C1E9 FFFD EEEB FFFD C1E2 - EECE FFFD FFFD FFFD FFFD F160 F159 C2E9 - FFFD F154 F163 F15B EEDC FFFD F165 F155 - FFFD C2E8 F15F C2EA C2F2 C2F0 F161 C2F1 - F157 FFFD F158 F15D F162 FFFD EECD C2EB - F16A F167 F16B F15E F15A F168 F36A F15C - FFFD C2EE FFFD C2ED EECF C2EF F164 F166 - C2EC F169 F153 FFFD F156 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F373 FFFD F363 - C3EB F371 FFFD FFFD F361 C3EC FFFD F36C - FFFD F368 C3F1 F372 F362 F365 C3E9 F374 - FFFD F36D F370 C3EF C3F4 C3F2 F369 F364 - FFFD C3ED C3EE F360 C3EA FFFD C3E8 C3F0 - F36F C3F3 FFFD F36B F375 C3F5 FFFD FFFD - FFFD F367 FFFD F36E FFFD FFFD FFFD FFFD - FFFD FFFD F4F3 F542 F4F5 F4FC F366 F4FA - F4E9 F540 C4C3 F4ED F4FE F4F4 FFFD FFFD - C4C2 FFFD FFFD F544 F4F6 FFFD F4FB F4FD - F4E7 F541 F4F2 F4F7 F4EB F4EF F543 F4F9 - F4E8 F4EC F4EE F4F8 FFFD C4C1 F4F1 FFFD - FFFD FFFD FFFD FFFD FFFD F4EA FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4F0 F661 F666 - C54F F668 FFFD C549 FFFD F664 F66A C54E - C54A FFFD C54B F660 F667 C54D F665 C54C - F65F F663 F662 FFFD F65E F669 FFFD FFFD - FFFD C5B1 F76D F770 F76C F76E F76F F769 - F76A F767 FFFD FFFD F76B F768 C5B2 C5B3 - FFFD FFFD F84B FFFD F84D FFFD FFFD FFFD - FFFD FFFD F84C F84E FFFD C5E0 FFFD F84A - C5DF C5E1 FFFD FFFD FFFD F8CB F8CC C644 - F8CA FFFD F953 F952 F954 C65F F955 C65E - F956 F972 F975 F974 C668 F973 FFFD FFFD - FFFD C672 C670 C671 C677 F9C0 F9C1 F9BF - F9C9 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 9577 - srcEnd = 95E5 - mappingOffset = 4482 - Mapping = - AAF8 FFFD FFFD D844 DC78 E8A5 F376 FFFD - FFFD AAF9 FFFD ADAC B07B FFFD FFFD D845 - FFFD D846 B3AC FFFD B67D DC7A DC79 B6A3 - B67C DC7B B67E B6A2 B6A1 B67B FFFD FFFD - FFFD B968 FFFD FFFD E0D0 E0CE FFFD E0CF - E0CD FFFD BBD2 FFFD BBD5 BBD7 BBD6 FFFD - FFFD BBD3 BBD4 FFFD E8A7 E8A6 BE5B E8A8 - FFFD E8A9 BE5C FFFD FFFD FFFD EC4D EC4B - EEF3 FFFD EC49 EC4A C046 EC46 EC4E EC48 - EC4C EEEF FFFD FFFD EEF1 FFFD EEF2 C1F3 - EEEE C1F2 EEF0 C1EF C1F0 C1F1 EC47 FFFD - FFFD C2F5 F16E F16C F16D C2F3 C2F6 C2F4 - FFFD FFFD FFFD F377 F378 C3F6 FFFD F545 - F547 F546 C4C4 C550 F66D F66C F66B -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 961C - srcEnd = 9874 - mappingOffset = 44F1 - Mapping = - AAFA FFFD C9AA FFFD CA58 A6E9 CA56 CA59 - CA57 FFFD FFFD FFFD CBAE FFFD A8C1 FFFD - A8C2 CBB0 A8BF CBAF CBAD A8C0 A8BE FFFD - FFFD FFFD FFFD FFFD FFFD CDD8 CDDB AAFD - CDDA CDD9 FFFD AAFC AAFB FFFD AB40 CDDC - AAFE FFFD FFFD FFFD FFFD FFFD D0C6 ADAE - ADAF ADB0 D0C7 D0C3 ADAD D0C4 FFFD D0C5 - D0C2 FFFD FFFD FFFD B0A4 FFFD FFFD B0A1 - D445 B0A2 B0A5 D446 FFFD B07E B07C B07D - B0A3 FFFD FFFD FFFD FFFD FFFD B3AD D849 - B3B5 D848 FFFD D84B B3B1 D84A B6AB B3AF - B3B2 B3AE B3B3 B3B4 B3B0 FFFD FFFD FFFD - D847 B6A7 DC7D FFFD DCA3 FFFD FFFD DCA2 - B6AC B6A8 B6A9 DC7C DC7E DCA1 B6A4 B6A6 - FFFD B6AA B6A5 FFFD FFFD E0D3 E0D1 E0D2 - B96A B96B FFFD E0D4 B969 BBD8 FFFD BBDA - BBD9 FFFD E4BB FFFD FFFD E4BC E8AB FFFD - E8AA FFFD FFFD C047 C048 EC4F C049 FFFD - EEF6 FFFD EEF4 FFFD EEF5 C1F4 FFFD F16F - C3F7 FFFD FFFD FFFD C1F5 AB41 FFFD B0A6 - D447 FFFD FFFD D84C B3B6 B6AD DCA4 DCA6 - B6AF B6AE B6B0 B6B1 DCA5 B96E B96F B96D - BBDB B96C E0D5 FFFD FFFD FFFD BBDC E8AC - EC50 C04A C1F6 F170 F174 C2F9 F171 C2FA - C2F8 F175 C2FB F173 FFFD F379 C2F7 C3F8 - FFFD F8CD FFFD FFFD AB42 B3B8 B3B7 FFFD - FFFD FFFD FFFD B6B2 DCA8 DCA7 B6B3 FFFD - FFFD E0D9 B973 B970 E0D8 B972 E0D6 B971 - FFFD E0D7 FFFD E4BD BBDD FFFD E8AF FFFD - BE5D E8AD BE5E BE5F E8AE BE60 FFFD EC51 - FFFD C04E C04B C050 EC53 C04C EC52 C04F - FFFD FFFD C04D FFFD EEF9 EEFB FFFD FFFD - C1F7 EEFA C1F8 EEF8 EEF7 FFFD F177 F176 - C2FC F178 F37E C3FA F37D F37A C3F9 F37B - F37C FFFD F548 F549 C4C5 FFFD C553 FFFD - FFFD F66E FFFD FFFD C551 C552 F66F FFFD - FFFD C5B4 C5B5 F771 FFFD FFFD C645 F8CF - C647 FFFD F8CE F8D0 C646 F957 FFFD F9AD - FFFD FFFD FFFD FFFD FFFD FFFD AB43 FFFD - FFFD FFFD B974 FFFD E4BE FFFD E8B0 C051 - C052 FFFD AB44 FFFD BE61 C3FB ADB1 FFFD - FFFD FFFD C053 FFFD C5E2 ADB2 D84D FFFD - DCA9 FFFD DCAB FFFD DCAA FFFD E0DD E0DA - B975 FFFD B976 E0DB E0DC FFFD E4C0 E4C5 - BBDE E4BF E4C1 E4C8 E4C3 E4C7 E4C4 E4C2 - E4C6 BBDF FFFD FFFD E8B3 FFFD E8B1 BE63 - FFFD BE62 E8B2 BE64 FFFD FFFD FFFD FFFD - EC56 FFFD FFFD EC55 C054 EC54 EEFC FFFD - EEFE EF41 EF40 FFFD C1F9 EEFD F1A1 C2FD - F17D F1A2 C2FE FFFD F17B FFFD F17E F17C - F179 C340 F17A FFFD FFFD FFFD FFFD F3A1 - FFFD FFFD F3A3 F3A2 FFFD F54A FFFD F54B - FFFD FFFD FFFD F670 FFFD C5B7 FFFD C5B6 - F84F F850 C648 F8D1 FFFD C669 FFFD ADB3 - B6B4 E4CA E4C9 E8B5 E8B4 FFFD FFFD C1FA - EF43 EF42 F1A5 F1A3 F1A6 F1A4 FFFD FFFD - C3FC F3A4 F3A5 F3A6 FFFD F671 FFFD F772 - FFFD F8D2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD ADB4 FFFD FFFD EC57 EF44 FFFD ADB5 - FFFD FFFD BBE0 FFFD EC58 C341 F1A7 C3FD - FFFD F54C F54D C554 F851 ADB6 B3BB B3BC - D84E B6B5 B6B6 DCAC B6B7 FFFD B97A FFFD - B97C E0DF E0E0 E0DE B977 B978 B97B B979 - FFFD FFFD E4CB BBE1 BBE2 FFFD FFFD E8BC - BE67 E8B7 E8B6 FFFD E8BB BE65 FFFD FFFD - C05B FFFD E8B8 E8BD E8BA E8B9 FFFD BE66 - FFFD C059 FFFD EC5A C055 FFFD EC5B FFFD - FFFD EC59 FFFD C058 C056 C05A FFFD C057 - FFFD FFFD FFFD FFFD FFFD EF45 FFFD EF4A - EF46 EF49 C1FB FFFD EDD4 EF48 EF47 FFFD - C344 C342 C345 C343 F1A8 F1A9 F1AA C346 - FFFD FFFD FFFD F3AA C440 F3A8 FFFD C441 - F3A7 F3A9 C3FE F551 F54E FFFD F54F F550 - F672 C556 FFFD C555 FFFD F774 F773 C5B8 - FFFD FFFD FFFD C5E3 C649 C660 F958 F9AE - F9AF -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 98A8 - srcEnd = 98CC - mappingOffset = 474A - Mapping = - ADB7 DCAD FFFD FFFD E0E1 E4CC E4CD BBE3 - FFFD BBE4 E8BE BE68 FFFD FFFD C1FC FFFD - F1AB FFFD C347 F3AD C442 F3AC F3AE F3AB - F675 F552 F553 FFFD C4C6 FFFD F674 FFFD - FFFD F673 FFFD F775 F9B0 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 98DB - srcEnd = 9961 - mappingOffset = 476F - Mapping = - ADB8 FFFD FFFD FFFD ADB9 FFFD FFFD B0A7 - D448 FFFD D84F FFFD B6B8 FFFD B6BB B6B9 - DCAE FFFD B6BD FFFD B6BA FFFD FFFD B6BC - FFFD B97E FFFD E0E2 FFFD FFFD E0E3 E8C0 - FFFD B97D B9A1 B9A2 FFFD E4CF FFFD E4CE - BBE5 FFFD BBE6 FFFD E4D0 E8BF BBE8 BE69 - FFFD BBE7 FFFD FFFD FFFD C05C E8C1 BE6B - BE6A E8C2 E8C5 E8C3 E8C4 BE6C FFFD C061 - C05F FFFD FFFD C05E EC5D FFFD C060 FFFD - FFFD EC5C EF4B FFFD EC5E C05D EC5F EF4E - EF4C EF4D EF52 C34B EF51 EF54 EF53 EF50 - EF4F FFFD C1FD FFFD FFFD FFFD FFFD F1AE - FFFD F1AD C34A C348 C349 FFFD F1AC FFFD - F3B1 FFFD C443 FFFD F3B0 F3AF C444 FFFD - F558 F557 FFFD F555 FFFD F554 C4C8 C4C7 - F559 F776 C5B9 F677 C557 F676 F556 FFFD - F777 C5E4 FFFD C661 F959 FFFD F9B1 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 9996 - srcEnd = 9A6B - mappingOffset = 47F6 - Mapping = - ADBA D850 EF55 ADBB FFFD FFFD E4D2 E4D1 - EC60 FFFD FFFD EF57 FFFD EF56 FFFD C34C - F3B2 F3B3 C4C9 FFFD FFFD F9B2 B0A8 B6BF - B6BE E0E4 E0E6 B9A4 E0E5 B9A3 B9A5 E0E7 - FFFD FFFD FFFD E4D4 E4D6 E4D5 FFFD E4D8 - FFFD FFFD FFFD BBE9 E4D7 E4D3 FFFD FFFD - FFFD E4D9 FFFD E8CC FFFD E8CF E8D1 E8C7 - E8CB E8C8 BE6E BE71 BE73 E8C9 E8CA BE72 - E8CD E8D0 E8CE BE74 FFFD BE70 E8C6 BE6D - FFFD BE6F FFFD FFFD C063 EC66 EC64 EC63 - FFFD EC69 FFFD EC68 EC67 FFFD EC62 C062 - EC61 FFFD EC65 C064 FFFD FFFD EF5A FFFD - EF5E EF5B EF5D EF5C EF59 EF5F EF62 EF60 - EF61 C240 FFFD C1FE EF58 EF63 F1B3 F1B6 - F1B8 F1B7 FFFD F1B1 F1B5 F1B0 FFFD F1B2 - C34D F1AF FFFD F1B4 FFFD FFFD F3C0 F3B5 - C445 FFFD FFFD C446 F3B4 F3B9 F3BF F3B7 - F3BE FFFD F3BB FFFD F3BA F3BD F3B8 F3B6 - FFFD F3BC FFFD F560 F55E C4CA F55D F563 - F561 FFFD C4CB F55C F55A FFFD F55B C4CD - F55F C4CC F562 F678 F67E FFFD FFFD F679 - C55B F6A1 C55A F67D F67C C559 F67B C558 - F67A FFFD F77D F7A1 F77E FFFD F77B C5BB - F778 F77C F7A3 FFFD F7A2 F779 F77A C5BA - F852 C5E7 FFFD F853 C5E5 C5E6 FFFD FFFD - F8D3 C64A F976 FFFD C66A FFFD F9B3 C66B - F9B4 F9B5 F9C3 F9C2 C67A F9CD -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 9AA8 - srcEnd = 9C7A - mappingOffset = 48CC - Mapping = - B0A9 FFFD FFFD E0E9 FFFD E0E8 FFFD BBEA - BBEB E4DA FFFD E8D2 EC6C FFFD FFFD BE75 - C065 EC6A FFFD EC6D C066 FFFD EF64 EC6B - F1B9 C34E F3C1 FFFD FFFD FFFD F566 F564 - FFFD FFFD F565 FFFD FFFD F6A2 FFFD C55C - F7A4 C5EA C5BC C5E8 C5E9 F8D4 C662 FFFD - B0AA FFFD FFFD FFFD F1BA FFFD FFFD D449 - FFFD B9A6 FFFD E4DB FFFD FFFD BBEC E4DC - FFFD FFFD FFFD E8D4 E8D3 C068 BE76 BE77 - FFFD E8D7 E8D6 E8D5 FFFD FFFD EC6E EC71 - FFFD EC70 EC6F C067 EF68 EF66 EF65 FFFD - FFFD EF67 FFFD C34F F1BC F1BD C350 FFFD - F1BB FFFD F3C3 F3C2 F3C5 C447 F3C4 FFFD - F567 F569 F568 FFFD FFFD F6A3 F6A6 F6A4 - F6A5 F7A5 C5BD FFFD FFFD FFFD F854 F855 - F856 FFFD C64B C663 F9B6 B0AB FFFD BE78 - C069 F1BE FFFD F7A6 FFFD FFFD F9C4 D44A - FFFD C67B B0AC EC72 FFFD F1BF FFFD F3C6 - FFFD FFFD F6A7 F7A7 B0AD FFFD E4DD E4DE - FFFD BBED BBEE E8D9 BE7A BE79 E8D8 FFFD - EF69 FFFD F1C0 F1C2 F1C1 C353 C352 C351 - FFFD C55E F6A8 FFFD C55D F7A9 F7A8 FFFD - C64C F8D5 B3BD E0EA FFFD FFFD FFFD E4E1 - E4DF E4E0 FFFD FFFD E8E2 FFFD E8DD E8DA - E8E1 FFFD FFFD FFFD E8E3 FFFD FFFD BE7C - E8E0 E8DC FFFD FFFD E8DB E8DF E8DE BE7B - FFFD FFFD EC7D EC78 EC76 ECA1 EC77 FFFD - EC73 FFFD EC79 FFFD FFFD EC74 EF72 EC75 - ECA2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EC7C C06A EC7B EC7A FFFD EC7E FFFD FFFD - FFFD FFFD EF6A EF6D FFFD FFFD EF6C FFFD - EF74 EF6F EF73 FFFD EF71 EF70 EF6E FFFD - EF6B FFFD C243 C242 FFFD C244 C241 EF75 - FFFD FFFD FFFD FFFD FFFD F1C8 F1CB FFFD - F1C9 F1CD FFFD FFFD FFFD F1CE FFFD F1C6 - C358 F1C7 FFFD F1C5 F1CC FFFD F1C4 F1C3 - C357 C355 C354 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F1CA F3CF F3D5 C44A F3D0 - FFFD F3D3 F3D7 C44B F3D2 FFFD F3CA FFFD - F3C9 F3D6 F3CD FFFD F3CB F3D4 F3CC C449 - C448 FFFD F3C7 F3C8 F3D1 FFFD FFFD FFFD - F3CE FFFD FFFD FFFD FFFD FFFD FFFD F56C - F56F FFFD FFFD FFFD FFFD C356 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F56D F573 F571 - F56B F576 FFFD F56A FFFD C4CF F572 FFFD - FFFD FFFD F56E C4CE F575 FFFD FFFD F574 - FFFD FFFD FFFD FFFD F6AB F6AA FFFD FFFD - FFFD F6B1 FFFD F6AD F6B0 C560 FFFD FFFD - F6AE F6AF FFFD F6A9 F6AC C55F FFFD FFFD - FFFD C5BF F7B4 F7AF F7B3 FFFD F7B6 F7B2 - FFFD F7AE FFFD C5C1 F7B1 F7B5 C5C0 F7AC - F570 F7B0 FFFD FFFD F7AD FFFD F7AA FFFD - F7AB C5BE F85A F85C F85F F85B F860 FFFD - F859 FFFD F857 FFFD C5EB F85D C5ED C5EC - F858 F85E FFFD FFFD FFFD FFFD F8DA C64D - F8DB FFFD F8D9 F8D6 FFFD FFFD F8D8 F8D7 - F95A FFFD FFFD FFFD FFFD F95C F95B FFFD - FFFD F979 FFFD F978 F977 F97A FFFD C673 - C674 F9CA F9CE -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 9CE5 - srcEnd = 9E1E - mappingOffset = 4A9F - Mapping = - B3BE DCAF E0ED FFFD B9A7 E0EB FFFD FFFD - E0EC FFFD FFFD FFFD E4E2 E4E3 BBF1 BBEF - E4E4 BBF0 E8E8 FFFD E8EB E8E5 E8EC E8E4 - E8E6 FFFD E8E7 E8EA FFFD FFFD BEA1 E8EF - E8EE BE7D E8E9 E8ED BE7E FFFD FFFD FFFD - FFFD FFFD FFFD ECAC FFFD C06F FFFD ECA7 - C06B FFFD ECA4 ECAA ECAD FFFD C070 FFFD - ECA9 ECA6 ECAE ECA5 FFFD ECAB C06C FFFD - ECA3 C06D FFFD C06E ECA8 FFFD FFFD FFFD - EFA9 EF7A EF7B EF7E EF7C FFFD EF76 FFFD - FFFD EF79 EFA5 EF7D FFFD FFFD C245 FFFD - EFA7 EFA4 C246 EFA6 EF77 EFA2 EFA3 FFFD - EFA1 FFFD FFFD FFFD FFFD F1D2 F1D4 F1D7 - FFFD FFFD F1D1 FFFD C359 F1D9 F1D0 F1DA - FFFD F1D6 F1D8 F1DC F1D5 F1DD F1D3 F1CF - C35A FFFD F1DB C35B C44D FFFD FFFD FFFD - FFFD FFFD EF78 F3F1 F3E8 C44F F3E4 C450 - FFFD FFFD F3ED F3E7 F3DD C44E F3EA F3E5 - F3E6 FFFD F3D8 F3DF F3EE FFFD F3EB FFFD - F3E3 FFFD F3EF F3DE F3D9 F3EC FFFD F3DB - F3E9 F3E0 F3F0 F3DC C44C F3DA F3E1 F3E2 - FFFD FFFD FFFD F57D FFFD F57B FFFD F5A2 - FFFD F5AE F5A5 F57C F578 F5A7 F57E F5A3 - F57A F5AA F577 F5A1 F5A6 F5A8 F5AB F579 - FFFD F5AF F5B0 F5A9 F5AD F5A4 FFFD F6C1 - F6C4 FFFD C561 FFFD F6C3 F6C8 F6C6 C562 - F6BD F6B3 F6B2 C564 F6BF F6C0 F6BC F6B4 - FFFD F6B9 F5AC FFFD F6B5 C563 F6BB FFFD - F6BA FFFD F6B6 F6C2 FFFD F6B7 F7BB F6C5 - F6C7 F6BE F6B8 F7BC F7BE F7B8 C5C2 FFFD - F7C5 F7C3 C5C3 F7C2 F7C1 F7BA F7B7 F7BD - F7C6 F7B9 F7BF FFFD F869 F86E F864 F867 - C5EE F86B FFFD F872 F7C0 FFFD F865 F86F - F873 F86A F863 F86D FFFD F86C F871 F870 - F7C4 F868 F862 F866 C64E C64F F861 FFFD - F8E6 F8DD F8E5 F8E2 F8E3 F8DC F8DF F8E7 - F8E1 F8E0 F8DE FFFD F8E4 FFFD F95D FFFD - F95E FFFD F960 F95F F962 F961 F97C F97B - F9B7 FFFD F9B8 FFFD F9C5 C678 C67C FFFD - F9CF C67D -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 9E75 - srcEnd = 9F7E - mappingOffset = 4BD9 - Mapping = - B3BF FFFD FFFD FFFD C4D0 F6C9 FFFD C650 - C651 FFFD B3C0 E0EE FFFD B9A8 E8F0 FFFD - FFFD ECB0 ECB1 ECAF EFAB EFAA C247 F1DF - EFAC F1DE FFFD FFFD F3F3 C451 C453 F3F2 - FFFD FFFD C452 FFFD F5B1 F5B3 F5B2 F6CA - C565 FFFD C5EF F8E8 F963 FFFD FFFD F9D2 - B3C1 FFFD E4E5 FFFD BEA2 FFFD FFFD FFFD - ECB3 ECB2 FFFD EFAD FFFD FFFD FFFD C454 - C4D1 F7C7 F9CB FFFD FFFD FFFD B3C2 BBF2 - FFFD BEA3 FFFD F3F4 FFFD F874 B6C0 FFFD - FFFD FFFD FFFD EFAE FFFD FFFD FFFD C664 - B6C1 BEA4 C248 F875 B6C2 FFFD E8F1 C072 - ECB4 ECB5 FFFD C071 FFFD EFAF C24C C24A - C24B C249 F1E0 C35C FFFD FFFD FFFD F5B5 - F5B4 F5B7 F5B6 C4D2 FFFD FFFD F6CB FFFD - F6CD F6CC C566 F7C8 FFFD F876 F877 C5F0 - F964 F97D C675 FFFD DCB0 ECB6 EFB0 F3F5 - E0EF FFFD EFB1 F1E2 F1E1 FFFD FFFD FFFD - FFFD F878 C652 FFFD F965 F97E FFFD FFFD - FFFD B9A9 E8F2 E8F3 FFFD ECB7 B9AA FFFD - C35D F1E3 FFFD F6CF C567 F6D0 F6CE F879 - FFFD F8E9 FFFD B9AB FFFD EFB4 EFB3 EFB2 - F1E4 FFFD FFFD F1E8 F1E7 F1E6 F1E5 C35E - F3F6 F5B9 C4D3 F5B8 F6D1 F7CB F7CA C5C4 - F7C9 F87C F87B F87A FFFD FFFD BBF3 FFFD - ECB8 C24D FFFD F3F7 F3F8 F7CC F87D FFFD - FFFD F8EA F966 F9B9 F9D4 BBF4 C24E F1E9 - F3F9 F6D2 F87E FFFD FFFD BEA6 FFFD EFB5 - F1EA F3FA F3FB F3FC F5BE FFFD F5BA C568 - F5BD F5BC C4D4 F5BB C4D6 FFFD C4D5 F6D4 - F6D3 C569 C56A FFFD FFFD C5C6 F7CD C5C5 - FFFD F8A3 F8A4 F8A2 F8A1 C654 FFFD F8EB - F8EC F8ED C653 F967 F96A F969 F968 FFFD - FFFD F9D3 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 9F8D - srcEnd = 9FA4 - mappingOffset = 4CE3 - Mapping = - C073 FFFD FFFD C365 F5BF F6D5 FFFD C5C7 - F7CE FFFD FFFD F9D5 FFFD FFFD FFFD C074 - FFFD FFFD FFFD EFB6 FFFD F7CF FFFD F9A1 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = FA0C - srcEnd = FA0D - mappingOffset = 4CFB - Mapping = - C94A DDFC -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = FE30 - srcEnd = FE6B - mappingOffset = 4CFD - Mapping = - A14A A157 FFFD A159 A15B A15F A160 A163 - A164 A167 A168 A16B A16C A16F A170 A173 - A174 A177 A178 A17B A17C FFFD FFFD FFFD - FFFD A1C6 A1C7 A1CA A1CB A1C8 A1C9 A15C - A14D A14E A14F FFFD A151 A152 A153 A154 - FFFD A17D A17E A1A1 A1A2 A1A3 A1A4 A1CC - A1CD A1CE A1DE A1DF A1E0 A1E1 A1E2 FFFD - A242 A24C A24D A24E -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = FF01 - srcEnd = FF20 - mappingOffset = 4D39 - Mapping = - A149 FFFD A1AD A243 A248 A1AE FFFD A15D - A15E A1AF A1CF A141 A1D0 A144 A1FE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD A147 A146 A1D5 A1D7 A1D6 A148 A249 -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = FF3C - srcEnd = FF3F - mappingOffset = 4D59 - Mapping = - A240 FFFD FFFD A1C4 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = FF57 - srcEnd = FF5E - mappingOffset = 4D5D - Mapping = - A340 A341 A342 A343 A161 A155 A162 A1E3 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = FFE0 - srcEnd = FFE5 - mappingOffset = 4D65 - Mapping = - A246 A247 FFFD A1C3 FFFD A244 -End of Item 0057 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0058, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x001B, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0123, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x000D */ -/* Total of Format 1 : 0x0044 */ -/* Total of Format 2 : 0x0007 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x2210, 0x1121, 0x1211, 0x1221, 0x1111, -0x2111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x001B Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0391, 0x03A1, 0xA344, -/* 0002 */ 0x03A3, 0x03A9, 0xA355, -/* 0003 */ 0x03B1, 0x03C1, 0xA35C, -/* 0004 */ 0x03C3, 0x03C9, 0xA36D, -/* 0005 */ 0x2160, 0x2169, 0xA2B9, -/* 0006 */ 0x2581, 0x2588, 0xA262, -/* 0007 */ 0x3021, 0x3029, 0xA2C3, -/* 0008 */ 0x3105, 0x310F, 0xA374, -/* 0009 */ 0x3110, 0x3129, 0xA3A1, -/* 000A */ 0xFF10, 0xFF19, 0xA2AF, -/* 000B */ 0xFF21, 0xFF3A, 0xA2CF, -/* 000C */ 0xFF41, 0xFF56, 0xA2E9, -/* 000D */ 0x00A7, 0x00B7, 0x0000, -/* 000E */ 0x00D7, 0x0000, 0xA1D1, -/* 000F */ 0x00F7, 0x0000, 0xA1D2, -/* 0010 */ 0x02C7, 0x02CD, 0x0011, -/* 0011 */ 0x02D9, 0x0000, 0xA3BB, -/* 0012 */ 0x2013, 0x203B, 0x0018, -/* 0013 */ 0x2103, 0x2109, 0x0041, -/* 0014 */ 0x2190, 0x2199, 0x0048, -/* 0015 */ 0x2215, 0x2235, 0x0052, -/* 0016 */ 0x2252, 0x0000, 0xA1DC, -/* 0017 */ 0x2260, 0x2267, 0x0073, -/* 0018 */ 0x2295, 0x2299, 0x007B, -/* 0019 */ 0x22A5, 0x0000, 0xA1E6, -/* 001A */ 0x22BF, 0x0000, 0xA1E9, -/* 001B */ 0x2500, 0x253C, 0x0080, -/* 001C */ 0x2550, 0x2574, 0x00BD, -/* 001D */ 0x2589, 0x25A1, 0x00E2, -/* 001E */ 0x25B2, 0x25CF, 0x00FB, -/* 001F */ 0x25E2, 0x25E5, 0x0119, -/* 0020 */ 0x2605, 0x2606, 0x011D, -/* 0021 */ 0x2640, 0x2642, 0x011F, -/* 0022 */ 0x3000, 0x301E, 0x0122, -/* 0023 */ 0x32A3, 0x0000, 0xA1C0, -/* 0024 */ 0x338E, 0x338F, 0x0141, -/* 0025 */ 0x339C, 0x33A1, 0x0143, -/* 0026 */ 0x33C4, 0x33D5, 0x0149, -/* 0027 */ 0x4E00, 0x4F9E, 0x015B, -/* 0028 */ 0x4FAE, 0x51E1, 0x02FA, -/* 0029 */ 0x51F0, 0x52AE, 0x052E, -/* 002A */ 0x52BB, 0x5454, 0x05ED, -/* 002B */ 0x5460, 0x551A, 0x0787, -/* 002C */ 0x5526, 0x5752, 0x0842, -/* 002D */ 0x5761, 0x5CB8, 0x0A6F, -/* 002E */ 0x5CC6, 0x6072, 0x0FC7, -/* 002F */ 0x607F, 0x6298, 0x1374, -/* 0030 */ 0x62A8, 0x62DC, 0x158E, -/* 0031 */ 0x62EB, 0x6316, 0x15C3, -/* 0032 */ 0x6328, 0x63B1, 0x15EF, -/* 0033 */ 0x63BD, 0x63F9, 0x1679, -/* 0034 */ 0x6406, 0x679F, 0x16B6, -/* 0035 */ 0x67AE, 0x67FF, 0x1A50, -/* 0036 */ 0x6812, 0x6854, 0x1AA2, -/* 0037 */ 0x686B, 0x68B5, 0x1AE5, -/* 0038 */ 0x68C4, 0x6917, 0x1B30, -/* 0039 */ 0x6925, 0x6C9D, 0x1B84, -/* 003A */ 0x6CAB, 0x6D42, 0x1EFD, -/* 003B */ 0x6D58, 0x6D98, 0x1F95, -/* 003C */ 0x6DAA, 0x6E05, 0x1FD6, -/* 003D */ 0x6E19, 0x6E79, 0x2032, -/* 003E */ 0x6E88, 0x6EDC, 0x2093, -/* 003F */ 0x6EEB, 0x7E9C, 0x20E8, -/* 0040 */ 0x7F36, 0x82C3, 0x309A, -/* 0041 */ 0x82D1, 0x8356, 0x3428, -/* 0042 */ 0x8373, 0x83B0, 0x34AE, -/* 0043 */ 0x83BD, 0x84DB, 0x34EC, -/* 0044 */ 0x84E7, 0x89C0, 0x360B, -/* 0045 */ 0x89D2, 0x8B9F, 0x3AE5, -/* 0046 */ 0x8C37, 0x8D1B, 0x3CB3, -/* 0047 */ 0x8D64, 0x8F64, 0x3D98, -/* 0048 */ 0x8F9B, 0x9483, 0x3F99, -/* 0049 */ 0x9577, 0x95E5, 0x4482, -/* 004A */ 0x961C, 0x9874, 0x44F1, -/* 004B */ 0x98A8, 0x98CC, 0x474A, -/* 004C */ 0x98DB, 0x9961, 0x476F, -/* 004D */ 0x9996, 0x9A6B, 0x47F6, -/* 004E */ 0x9AA8, 0x9C7A, 0x48CC, -/* 004F */ 0x9CE5, 0x9E1E, 0x4A9F, -/* 0050 */ 0x9E75, 0x9F7E, 0x4BD9, -/* 0051 */ 0x9F8D, 0x9FA4, 0x4CE3, -/* 0052 */ 0xFA0C, 0xFA0D, 0x4CFB, -/* 0053 */ 0xFE30, 0xFE6B, 0x4CFD, -/* 0054 */ 0xFF01, 0xFF20, 0x4D39, -/* 0055 */ 0xFF3C, 0xFF3F, 0x4D59, -/* 0056 */ 0xFF57, 0xFF5E, 0x4D5D, -/* 0057 */ 0xFFE0, 0xFFE5, 0x4D65, -/*-------------------------------------------------------*/ -/* Offset=0x0123 Start of MappingTable */ - -/* 0000 */ 0xA1B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xA1C2, 0xA258, 0xA1D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0xA150, 0xA3BE, 0xFFFD, 0xA3BC, 0xA3BD, 0xA3BF, 0xFFFD, 0xA1C5, -/* 0018 */ 0xA156, 0xA158, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1A5, 0xA1A6, 0xFFFD, -/* 0020 */ 0xFFFD, 0xA1A7, 0xA1A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0xA14C, 0xA14B, 0xA145, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1AC, -/* 0038 */ 0xFFFD, 0xFFFD, 0xA1AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0xA1B0, 0xA24A, 0xFFFD, 0xA1C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xA24B, -/* 0048 */ 0xA1F6, 0xA1F4, 0xA1F7, 0xA1F5, 0xFFFD, 0xFFFD, 0xA1F8, 0xA1F9, -/* 0050 */ 0xA1FB, 0xA1FA, 0xA241, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1D4, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA1DB, 0xA1E8, 0xA1E7, 0xFFFD, 0xFFFD, -/* 0060 */ 0xA1FD, 0xFFFD, 0xA1FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1E4, 0xA1E5, -/* 0068 */ 0xA1EC, 0xFFFD, 0xFFFD, 0xA1ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xA1EF, 0xA1EE, 0xA1DA, 0xA1DD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xA1D8, 0xA1D9, 0xA1F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1F3, -/* 0080 */ 0xA277, 0xFFFD, 0xA278, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA27A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xA27B, 0xFFFD, 0xFFFD, 0xFFFD, 0xA27C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xA27D, 0xFFFD, 0xFFFD, 0xFFFD, 0xA275, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA274, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA273, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA272, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA271, 0xF9F9, 0xF9F8, 0xF9E6, -/* 00C0 */ 0xF9EF, 0xF9DD, 0xF9E8, 0xF9F1, 0xF9DF, 0xF9EC, 0xF9F5, 0xF9E3, -/* 00C8 */ 0xF9EE, 0xF9F7, 0xF9E5, 0xF9E9, 0xF9F2, 0xF9E0, 0xF9EB, 0xF9F4, -/* 00D0 */ 0xF9E2, 0xF9E7, 0xF9F0, 0xF9DE, 0xF9ED, 0xF9F6, 0xF9E4, 0xF9EA, -/* 00D8 */ 0xF9F3, 0xF9E1, 0xF9FA, 0xF9FB, 0xF9FD, 0xF9FC, 0xA2AC, 0xA2AD, -/* 00E0 */ 0xA2AE, 0xA15A, 0xA270, 0xA26F, 0xA26E, 0xA26D, 0xA26C, 0xA26B, -/* 00E8 */ 0xA26A, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9FE, 0xA276, 0xA279, 0xFFFD, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0xA1BD, 0xA1BC, 0xA1B6, 0xA1B5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1BF, 0xA1BE, 0xFFFD, -/* 0108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1BB, -/* 0110 */ 0xA1BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1B3, 0xFFFD, 0xFFFD, 0xA1B7, -/* 0118 */ 0xA1B4, 0xA2A8, 0xA2A9, 0xA2AB, 0xA2AA, 0xA1B9, 0xA1B8, 0xA1F0, -/* 0120 */ 0xFFFD, 0xA1F1, 0xA140, 0xA142, 0xA143, 0xA1B2, 0xFFFD, 0xFFFD, -/* 0128 */ 0xFFFD, 0xFFFD, 0xA171, 0xA172, 0xA16D, 0xA16E, 0xA175, 0xA176, -/* 0130 */ 0xA179, 0xA17A, 0xA169, 0xA16A, 0xA245, 0xFFFD, 0xA165, 0xA166, -/* 0138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1A9, -/* 0140 */ 0xA1AA, 0xA255, 0xA256, 0xA250, 0xA251, 0xA252, 0xFFFD, 0xFFFD, -/* 0148 */ 0xA254, 0xA257, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA253, 0xFFFD, 0xFFFD, 0xA1EB, 0xA1EA, -/* 0158 */ 0xFFFD, 0xFFFD, 0xA24F, 0xA440, 0xA442, 0xFFFD, 0xA443, 0xFFFD, -/* 0160 */ 0xFFFD, 0xFFFD, 0xC945, 0xA456, 0xA454, 0xA457, 0xA455, 0xC946, -/* 0168 */ 0xA4A3, 0xC94F, 0xC94D, 0xA4A2, 0xA4A1, 0xFFFD, 0xFFFD, 0xA542, -/* 0170 */ 0xA541, 0xA540, 0xFFFD, 0xA543, 0xA4FE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0178 */ 0xFFFD, 0xA5E0, 0xA5E1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0180 */ 0xFFFD, 0xA8C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA458, 0xFFFD, -/* 0188 */ 0xA4A4, 0xC950, 0xFFFD, 0xA4A5, 0xC963, 0xA6EA, 0xCBB1, 0xFFFD, -/* 0190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA459, 0xA4A6, 0xFFFD, 0xA544, 0xC964, -/* 0198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC940, 0xA444, 0xFFFD, -/* 01A0 */ 0xA45B, 0xFFFD, 0xC947, 0xA45C, 0xFFFD, 0xFFFD, 0xA4A7, 0xFFFD, -/* 01A8 */ 0xA545, 0xA547, 0xA546, 0xFFFD, 0xFFFD, 0xA5E2, 0xA5E3, 0xFFFD, -/* 01B0 */ 0xFFFD, 0xA8C4, 0xFFFD, 0xADBC, 0xA441, 0xFFFD, 0xFFFD, 0xC941, -/* 01B8 */ 0xA445, 0xA45E, 0xA45D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA5E4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8C5, 0xFFFD, -/* 01D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01D8 */ 0xFFFD, 0xB0AE, 0xD44B, 0xFFFD, 0xFFFD, 0xB6C3, 0xDCB1, 0xDCB2, -/* 01E0 */ 0xFFFD, 0xA446, 0xFFFD, 0xA4A9, 0xFFFD, 0xFFFD, 0xA8C6, 0xA447, -/* 01E8 */ 0xC948, 0xA45F, 0xFFFD, 0xFFFD, 0xA4AA, 0xA4AC, 0xC951, 0xA4AD, -/* 01F0 */ 0xA4AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xA5E5, 0xFFFD, 0xA8C7, 0xFFFD, -/* 01F8 */ 0xFFFD, 0xA8C8, 0xAB45, 0xFFFD, 0xA460, 0xA4AE, 0xFFFD, 0xA5E6, -/* 0200 */ 0xA5E8, 0xA5E7, 0xFFFD, 0xA6EB, 0xFFFD, 0xFFFD, 0xA8C9, 0xA8CA, -/* 0208 */ 0xAB46, 0xAB47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xADBD, 0xFFFD, -/* 0210 */ 0xFFFD, 0xDCB3, 0xFFFD, 0xFFFD, 0xF6D6, 0xA448, 0xFFFD, 0xFFFD, -/* 0218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA4B0, 0xA4AF, 0xC952, 0xA4B1, 0xA4B7, -/* 0220 */ 0xFFFD, 0xA4B2, 0xA4B3, 0xC954, 0xC953, 0xA4B5, 0xA4B6, 0xFFFD, -/* 0228 */ 0xA4B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA54A, -/* 0230 */ 0xA54B, 0xA54C, 0xA54D, 0xA549, 0xA550, 0xC96A, 0xFFFD, 0xC966, -/* 0238 */ 0xC969, 0xA551, 0xA561, 0xFFFD, 0xC968, 0xFFFD, 0xA54E, 0xA54F, -/* 0240 */ 0xA548, 0xFFFD, 0xFFFD, 0xC965, 0xC967, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA5F5, 0xC9B0, 0xA5F2, 0xA5F6, 0xC9BA, -/* 0250 */ 0xC9AE, 0xA5F3, 0xC9B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xA5F4, 0xFFFD, -/* 0258 */ 0xA5F7, 0xFFFD, 0xA5E9, 0xC9B1, 0xA5F8, 0xC9B5, 0xFFFD, 0xC9B9, -/* 0260 */ 0xC9B6, 0xFFFD, 0xFFFD, 0xC9B3, 0xA5EA, 0xA5EC, 0xA5F9, 0xFFFD, -/* 0268 */ 0xA5EE, 0xC9AB, 0xA5F1, 0xA5EF, 0xA5F0, 0xC9BB, 0xC9B8, 0xC9AF, -/* 0270 */ 0xA5ED, 0xFFFD, 0xFFFD, 0xC9AC, 0xA5EB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0278 */ 0xC9B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC9B7, 0xFFFD, 0xFFFD, -/* 0280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC9AD, -/* 0288 */ 0xCA66, 0xFFFD, 0xA742, 0xA6F4, 0xFFFD, 0xFFFD, 0xCA67, 0xA6F1, -/* 0290 */ 0xFFFD, 0xA744, 0xFFFD, 0xA6F9, 0xFFFD, 0xA6F8, 0xCA5B, 0xA6FC, -/* 0298 */ 0xA6F7, 0xCA60, 0xCA68, 0xFFFD, 0xCA64, 0xFFFD, 0xA6FA, 0xFFFD, -/* 02A0 */ 0xFFFD, 0xA6FD, 0xA6EE, 0xA747, 0xCA5D, 0xFFFD, 0xFFFD, 0xCBBD, -/* 02A8 */ 0xA6EC, 0xA743, 0xA6ED, 0xA6F5, 0xA6F6, 0xCA62, 0xCA5E, 0xA6FB, -/* 02B0 */ 0xA6F3, 0xCA5A, 0xA6EF, 0xCA65, 0xA745, 0xA748, 0xA6F2, 0xA740, -/* 02B8 */ 0xA746, 0xA6F0, 0xCA63, 0xA741, 0xCA69, 0xCA5C, 0xA6FE, 0xCA5F, -/* 02C0 */ 0xFFFD, 0xFFFD, 0xCA61, 0xFFFD, 0xA8D8, 0xCBBF, 0xCBCB, 0xA8D0, -/* 02C8 */ 0xFFFD, 0xCBCC, 0xA8CB, 0xA8D5, 0xFFFD, 0xFFFD, 0xA8CE, 0xCBB9, -/* 02D0 */ 0xA8D6, 0xCBB8, 0xCBBC, 0xCBC3, 0xCBC1, 0xA8DE, 0xA8D9, 0xCBB3, -/* 02D8 */ 0xCBB5, 0xA8DB, 0xA8CF, 0xCBB6, 0xCBC2, 0xCBC9, 0xA8D4, 0xCBBB, -/* 02E0 */ 0xCBB4, 0xA8D3, 0xCBB7, 0xA8D7, 0xCBBA, 0xFFFD, 0xA8D2, 0xFFFD, -/* 02E8 */ 0xA8CD, 0xFFFD, 0xA8DC, 0xCBC4, 0xA8DD, 0xCBC8, 0xFFFD, 0xCBC6, -/* 02F0 */ 0xCBCA, 0xA8DA, 0xCBBE, 0xCBB2, 0xFFFD, 0xCBC0, 0xA8D1, 0xCBC5, -/* 02F8 */ 0xA8CC, 0xCBC7, 0xAB56, 0xAB4A, 0xFFFD, 0xFFFD, 0xCDE0, 0xCDE8, -/* 0300 */ 0xFFFD, 0xAB49, 0xAB51, 0xAB5D, 0xFFFD, 0xCDEE, 0xCDEC, 0xCDE7, -/* 0308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xAB4B, 0xCDED, 0xCDE3, 0xAB59, 0xAB50, -/* 0310 */ 0xAB58, 0xCDDE, 0xFFFD, 0xCDEA, 0xFFFD, 0xCDE1, 0xAB54, 0xCDE2, -/* 0318 */ 0xFFFD, 0xCDDD, 0xAB5B, 0xAB4E, 0xAB57, 0xAB4D, 0xFFFD, 0xCDDF, -/* 0320 */ 0xCDE4, 0xFFFD, 0xCDEB, 0xAB55, 0xAB52, 0xCDE6, 0xAB5A, 0xCDE9, -/* 0328 */ 0xCDE5, 0xAB4F, 0xAB5C, 0xAB53, 0xAB4C, 0xAB48, 0xFFFD, 0xFFFD, -/* 0330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0338 */ 0xCDEF, 0xFFFD, 0xADD7, 0xADC1, 0xFFFD, 0xADD1, 0xFFFD, 0xADD6, -/* 0340 */ 0xD0D0, 0xD0CF, 0xD0D4, 0xD0D5, 0xADC4, 0xFFFD, 0xADCD, 0xFFFD, -/* 0348 */ 0xFFFD, 0xFFFD, 0xADDA, 0xFFFD, 0xADCE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0350 */ 0xFFFD, 0xD0C9, 0xADC7, 0xD0CA, 0xFFFD, 0xADDC, 0xFFFD, 0xADD3, -/* 0358 */ 0xADBE, 0xADBF, 0xD0DD, 0xB0BF, 0xFFFD, 0xADCC, 0xADCB, 0xD0CB, -/* 0360 */ 0xADCF, 0xD45B, 0xADC6, 0xD0D6, 0xADD5, 0xADD4, 0xADCA, 0xD0CE, -/* 0368 */ 0xD0D7, 0xFFFD, 0xD0C8, 0xADC9, 0xD0D8, 0xADD2, 0xD0CC, 0xADC0, -/* 0370 */ 0xFFFD, 0xADC3, 0xADC2, 0xD0D9, 0xADD0, 0xADC5, 0xADD9, 0xADDB, -/* 0378 */ 0xD0D3, 0xADD8, 0xFFFD, 0xD0DB, 0xD0CD, 0xD0DC, 0xFFFD, 0xD0D1, -/* 0380 */ 0xFFFD, 0xD0DA, 0xFFFD, 0xD0D2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0388 */ 0xADC8, 0xFFFD, 0xFFFD, 0xFFFD, 0xD463, 0xD457, 0xFFFD, 0xB0B3, -/* 0390 */ 0xFFFD, 0xD45C, 0xD462, 0xB0B2, 0xD455, 0xB0B6, 0xD459, 0xD452, -/* 0398 */ 0xB0B4, 0xD456, 0xB0B9, 0xB0BE, 0xFFFD, 0xD467, 0xFFFD, 0xD451, -/* 03A0 */ 0xFFFD, 0xB0BA, 0xFFFD, 0xD466, 0xFFFD, 0xFFFD, 0xB0B5, 0xD458, -/* 03A8 */ 0xB0B1, 0xD453, 0xD44F, 0xD45D, 0xD450, 0xD44E, 0xD45A, 0xD460, -/* 03B0 */ 0xD461, 0xB0B7, 0xFFFD, 0xFFFD, 0xD85B, 0xD45E, 0xD44D, 0xD45F, -/* 03B8 */ 0xFFFD, 0xB0C1, 0xD464, 0xB0C0, 0xD44C, 0xFFFD, 0xD454, 0xD465, -/* 03C0 */ 0xB0BC, 0xB0BB, 0xB0B8, 0xB0BD, 0xFFFD, 0xFFFD, 0xB0AF, 0xFFFD, -/* 03C8 */ 0xFFFD, 0xB0B0, 0xFFFD, 0xFFFD, 0xB3C8, 0xFFFD, 0xD85E, 0xD857, -/* 03D0 */ 0xFFFD, 0xB3C5, 0xFFFD, 0xD85F, 0xFFFD, 0xFFFD, 0xFFFD, 0xD855, -/* 03D8 */ 0xD858, 0xB3C4, 0xD859, 0xFFFD, 0xFFFD, 0xB3C7, 0xD85D, 0xFFFD, -/* 03E0 */ 0xD853, 0xD852, 0xB3C9, 0xFFFD, 0xB3CA, 0xB3C6, 0xB3CB, 0xD851, -/* 03E8 */ 0xD85C, 0xD85A, 0xD854, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3C3, 0xD856, -/* 03F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03F8 */ 0xB6CA, 0xB6C4, 0xDCB7, 0xB6CD, 0xDCBD, 0xDCC0, 0xB6C6, 0xB6C7, -/* 0400 */ 0xDCBA, 0xB6C5, 0xDCC3, 0xB6CB, 0xDCC4, 0xFFFD, 0xDCBF, 0xB6CC, -/* 0408 */ 0xFFFD, 0xDCB4, 0xB6C9, 0xDCB5, 0xFFFD, 0xDCBE, 0xDCBC, 0xFFFD, -/* 0410 */ 0xDCB8, 0xB6C8, 0xDCB6, 0xB6CE, 0xDCBB, 0xDCC2, 0xDCB9, 0xDCC1, -/* 0418 */ 0xFFFD, 0xFFFD, 0xB9B6, 0xB9B3, 0xFFFD, 0xB9B4, 0xFFFD, 0xE0F9, -/* 0420 */ 0xE0F1, 0xB9B2, 0xB9AF, 0xE0F2, 0xFFFD, 0xFFFD, 0xB9B1, 0xE0F5, -/* 0428 */ 0xFFFD, 0xE0F7, 0xFFFD, 0xFFFD, 0xE0FE, 0xFFFD, 0xFFFD, 0xE0FD, -/* 0430 */ 0xE0F8, 0xB9AE, 0xE0F0, 0xB9AC, 0xE0F3, 0xB9B7, 0xE0F6, 0xFFFD, -/* 0438 */ 0xE0FA, 0xB9B0, 0xB9AD, 0xE0FC, 0xE0FB, 0xB9B5, 0xFFFD, 0xE0F4, -/* 0440 */ 0xFFFD, 0xBBF8, 0xE4EC, 0xFFFD, 0xE4E9, 0xBBF9, 0xFFFD, 0xBBF7, -/* 0448 */ 0xFFFD, 0xE4F0, 0xE4ED, 0xE4E6, 0xBBF6, 0xFFFD, 0xBBFA, 0xE4E7, -/* 0450 */ 0xBBF5, 0xBBFD, 0xE4EA, 0xE4EB, 0xBBFB, 0xBBFC, 0xE4F1, 0xE4EE, -/* 0458 */ 0xE4EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEAA, 0xE8F8, 0xBEA7, 0xE8F5, -/* 0460 */ 0xBEA9, 0xBEAB, 0xFFFD, 0xE8F6, 0xBEA8, 0xFFFD, 0xE8F7, 0xFFFD, -/* 0468 */ 0xE8F4, 0xFFFD, 0xFFFD, 0xC076, 0xECBD, 0xC077, 0xECBB, 0xFFFD, -/* 0470 */ 0xECBC, 0xECBA, 0xECB9, 0xFFFD, 0xFFFD, 0xECBE, 0xC075, 0xFFFD, -/* 0478 */ 0xFFFD, 0xEFB8, 0xEFB9, 0xFFFD, 0xE4E8, 0xEFB7, 0xC078, 0xC35F, -/* 0480 */ 0xF1EB, 0xF1EC, 0xFFFD, 0xC4D7, 0xC4D8, 0xF5C1, 0xF5C0, 0xC56C, -/* 0488 */ 0xC56B, 0xF7D0, 0xFFFD, 0xA449, 0xA461, 0xA4B9, 0xFFFD, 0xA4B8, -/* 0490 */ 0xA553, 0xA552, 0xA5FC, 0xA5FB, 0xA5FD, 0xA5FA, 0xFFFD, 0xA74A, -/* 0498 */ 0xA749, 0xA74B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8E0, 0xFFFD, -/* 04A0 */ 0xA8DF, 0xA8E1, 0xFFFD, 0xAB5E, 0xFFFD, 0xA259, 0xD0DE, 0xA25A, -/* 04A8 */ 0xB0C2, 0xA25C, 0xA25B, 0xD860, 0xFFFD, 0xA25D, 0xB9B8, 0xA25E, -/* 04B0 */ 0xFFFD, 0xA44A, 0xFFFD, 0xA4BA, 0xA5FE, 0xA8E2, 0xFFFD, 0xA44B, -/* 04B8 */ 0xA4BD, 0xA4BB, 0xA4BC, 0xFFFD, 0xFFFD, 0xA640, 0xFFFD, 0xFFFD, -/* 04C0 */ 0xFFFD, 0xA74C, 0xA8E4, 0xA8E3, 0xA8E5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04C8 */ 0xADDD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEAC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC94E, 0xFFFD, 0xA554, 0xA555, 0xFFFD, -/* 04D8 */ 0xFFFD, 0xA641, 0xFFFD, 0xCA6A, 0xFFFD, 0xAB60, 0xAB5F, 0xD0E0, -/* 04E0 */ 0xD0DF, 0xB0C3, 0xFFFD, 0xA4BE, 0xC955, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04E8 */ 0xFFFD, 0xFFFD, 0xCBCD, 0xFFFD, 0xAB61, 0xFFFD, 0xADE0, 0xFFFD, -/* 04F0 */ 0xADDE, 0xADDF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEAD, 0xFFFD, -/* 04F8 */ 0xA556, 0xFFFD, 0xFFFD, 0xFFFD, 0xA642, 0xC9BC, 0xFFFD, 0xFFFD, -/* 0500 */ 0xFFFD, 0xFFFD, 0xA74D, 0xA74E, 0xFFFD, 0xCA6B, 0xFFFD, 0xFFFD, -/* 0508 */ 0xCBCE, 0xA8E6, 0xCBCF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0510 */ 0xD0E2, 0xD0E3, 0xADE3, 0xFFFD, 0xD0E4, 0xFFFD, 0xD0E1, 0xADE4, -/* 0518 */ 0xADE2, 0xADE1, 0xD0E5, 0xFFFD, 0xD468, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0520 */ 0xD861, 0xFFFD, 0xFFFD, 0xDCC5, 0xE140, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0528 */ 0xBBFE, 0xBEAE, 0xE8F9, 0xFFFD, 0xA44C, 0xA45A, 0xB0C4, 0xB3CD, -/* 0530 */ 0xFFFD, 0xB9B9, 0xFFFD, 0xC942, 0xA4BF, 0xFFFD, 0xA559, 0xA557, -/* 0538 */ 0xA558, 0xFFFD, 0xFFFD, 0xA8E7, 0xFFFD, 0xFFFD, 0xA44D, 0xA44E, -/* 0540 */ 0xFFFD, 0xA462, 0xFFFD, 0xFFFD, 0xA4C0, 0xA4C1, 0xA4C2, 0xC9BE, -/* 0548 */ 0xA55A, 0xFFFD, 0xC96B, 0xFFFD, 0xA646, 0xFFFD, 0xC9BF, 0xA644, -/* 0550 */ 0xA645, 0xC9BD, 0xFFFD, 0xFFFD, 0xA647, 0xA643, 0xFFFD, 0xFFFD, -/* 0558 */ 0xFFFD, 0xFFFD, 0xCA6C, 0xAAEC, 0xCA6D, 0xFFFD, 0xFFFD, 0xCA6E, -/* 0560 */ 0xFFFD, 0xFFFD, 0xA750, 0xA74F, 0xFFFD, 0xFFFD, 0xA753, 0xA751, -/* 0568 */ 0xA752, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8ED, 0xFFFD, 0xA8EC, 0xCBD4, -/* 0570 */ 0xCBD1, 0xCBD2, 0xFFFD, 0xCBD0, 0xA8EE, 0xA8EA, 0xA8E9, 0xFFFD, -/* 0578 */ 0xA8EB, 0xA8E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8EF, -/* 0580 */ 0xFFFD, 0xAB63, 0xCDF0, 0xFFFD, 0xCBD3, 0xAB68, 0xFFFD, 0xCDF1, -/* 0588 */ 0xAB64, 0xAB67, 0xAB66, 0xAB65, 0xAB62, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0590 */ 0xD0E8, 0xFFFD, 0xADE7, 0xD0EB, 0xADE5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0598 */ 0xD0E7, 0xADE8, 0xADE6, 0xADE9, 0xD0E9, 0xD0EA, 0xFFFD, 0xD0E6, -/* 05A0 */ 0xD0EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3D1, -/* 05A8 */ 0xB0C5, 0xD469, 0xD46B, 0xD46A, 0xD46C, 0xB0C6, 0xFFFD, 0xFFFD, -/* 05B0 */ 0xB3CE, 0xFFFD, 0xB3CF, 0xB3D0, 0xFFFD, 0xB6D0, 0xDCC7, 0xFFFD, -/* 05B8 */ 0xDCC6, 0xDCC8, 0xDCC9, 0xB6D1, 0xFFFD, 0xB6CF, 0xE141, 0xE142, -/* 05C0 */ 0xB9BB, 0xB9BA, 0xE35A, 0xFFFD, 0xFFFD, 0xBC40, 0xBC41, 0xBC42, -/* 05C8 */ 0xBC44, 0xE4F2, 0xE4F3, 0xBC43, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEAF, -/* 05D0 */ 0xFFFD, 0xBEB0, 0xFFFD, 0xFFFD, 0xF1ED, 0xF5C3, 0xF5C2, 0xF7D1, -/* 05D8 */ 0xFFFD, 0xA44F, 0xFFFD, 0xFFFD, 0xFFFD, 0xA55C, 0xA55B, 0xFFFD, -/* 05E0 */ 0xFFFD, 0xA648, 0xFFFD, 0xFFFD, 0xC9C0, 0xFFFD, 0xFFFD, 0xA755, -/* 05E8 */ 0xA756, 0xA754, 0xA757, 0xCA6F, 0xCA70, 0xA8F1, 0xCBD5, 0xFFFD, -/* 05F0 */ 0xA8F0, 0xFFFD, 0xCDF2, 0xAB6C, 0xCDF3, 0xAB6B, 0xFFFD, 0xFFFD, -/* 05F8 */ 0xFFFD, 0xAB69, 0xFFFD, 0xAB6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0ED, -/* 0600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0C7, 0xD46E, 0xFFFD, 0xB0CA, -/* 0608 */ 0xD46D, 0xB1E5, 0xB0C9, 0xB0C8, 0xFFFD, 0xB3D4, 0xFFFD, 0xB3D3, -/* 0610 */ 0xB3D2, 0xB6D2, 0xFFFD, 0xFFFD, 0xB6D5, 0xB6D6, 0xB6D4, 0xFFFD, -/* 0618 */ 0xB6D3, 0xFFFD, 0xFFFD, 0xE143, 0xFFFD, 0xE144, 0xFFFD, 0xFFFD, -/* 0620 */ 0xFFFD, 0xE4F5, 0xBC45, 0xE4F4, 0xFFFD, 0xBEB1, 0xECBF, 0xC079, -/* 0628 */ 0xFFFD, 0xF1EE, 0xC455, 0xFFFD, 0xA463, 0xA4C3, 0xC956, 0xFFFD, -/* 0630 */ 0xA4C4, 0xA4C5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA55D, -/* 0638 */ 0xA55E, 0xFFFD, 0xA649, 0xCA71, 0xCBD6, 0xCBD7, 0xFFFD, 0xAB6D, -/* 0640 */ 0xD0EE, 0xB0CC, 0xB0CB, 0xD863, 0xD862, 0xFFFD, 0xFFFD, 0xA450, -/* 0648 */ 0xA4C6, 0xA55F, 0xFFFD, 0xB0CD, 0xC943, 0xFFFD, 0xC96C, 0xA560, -/* 0650 */ 0xFFFD, 0xC9C2, 0xA64B, 0xA64A, 0xC9C1, 0xA758, 0xFFFD, 0xFFFD, -/* 0658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xADEA, 0xFFFD, 0xFFFD, 0xD46F, -/* 0660 */ 0xFFFD, 0xB6D7, 0xE145, 0xB9BC, 0xFFFD, 0xFFFD, 0xE8FA, 0xFFFD, -/* 0668 */ 0xFFFD, 0xF3FD, 0xFFFD, 0xA4C7, 0xFFFD, 0xFFFD, 0xCBD8, 0xCDF4, -/* 0670 */ 0xB0D0, 0xB0CE, 0xB0CF, 0xA451, 0xFFFD, 0xA464, 0xA2CD, 0xA4CA, -/* 0678 */ 0xFFFD, 0xA4C9, 0xA4C8, 0xA563, 0xA562, 0xFFFD, 0xC96D, 0xC9C3, -/* 0680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA8F5, 0xA8F2, 0xA8F4, 0xA8F3, 0xFFFD, -/* 0688 */ 0xFFFD, 0xAB6E, 0xFFFD, 0xFFFD, 0xB3D5, 0xFFFD, 0xA452, 0xFFFD, -/* 0690 */ 0xA4CB, 0xFFFD, 0xA565, 0xA564, 0xFFFD, 0xCA72, 0xFFFD, 0xFFFD, -/* 0698 */ 0xA8F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC957, 0xFFFD, -/* 06A0 */ 0xA567, 0xA566, 0xA64C, 0xA64D, 0xCA73, 0xA759, 0xFFFD, 0xA75A, -/* 06A8 */ 0xFFFD, 0xA8F7, 0xA8F8, 0xA8F9, 0xFFFD, 0xAB6F, 0xCDF5, 0xFFFD, -/* 06B0 */ 0xFFFD, 0xADEB, 0xFFFD, 0xFFFD, 0xC944, 0xFFFD, 0xA4CC, 0xFFFD, -/* 06B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC9C4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06C0 */ 0xCA74, 0xCA75, 0xFFFD, 0xFFFD, 0xCBD9, 0xFFFD, 0xCBDA, 0xFFFD, -/* 06C8 */ 0xCDF7, 0xCDF6, 0xCDF9, 0xCDF8, 0xAB70, 0xFFFD, 0xD470, 0xADED, -/* 06D0 */ 0xD0EF, 0xADEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD864, 0xB3D6, -/* 06D8 */ 0xFFFD, 0xD865, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE146, 0xB9BD, -/* 06E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBC46, 0xFFFD, 0xF1EF, 0xFFFD, -/* 06E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC958, 0xFFFD, 0xA568, 0xFFFD, 0xFFFD, -/* 06F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0D1, 0xFFFD, 0xFFFD, -/* 06F8 */ 0xFFFD, 0xFFFD, 0xA453, 0xA465, 0xA4CE, 0xA4CD, 0xFFFD, 0xA4CF, -/* 0700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8FB, 0xFFFD, -/* 0708 */ 0xA8FA, 0xA8FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xAB71, 0xFFFD, 0xFFFD, -/* 0710 */ 0xFFFD, 0xADEE, 0xFFFD, 0xE8FB, 0xC24F, 0xA466, 0xA56A, 0xA579, -/* 0718 */ 0xA574, 0xFFFD, 0xA56F, 0xA56E, 0xA575, 0xA573, 0xA56C, 0xA57A, -/* 0720 */ 0xA56D, 0xA569, 0xA578, 0xA577, 0xA576, 0xA56B, 0xFFFD, 0xA572, -/* 0728 */ 0xFFFD, 0xFFFD, 0xA571, 0xFFFD, 0xFFFD, 0xA57B, 0xA570, 0xFFFD, -/* 0730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA653, 0xFFFD, 0xA659, 0xA655, 0xFFFD, -/* 0738 */ 0xA65B, 0xC9C5, 0xA658, 0xA64E, 0xA651, 0xA654, 0xA650, 0xA657, -/* 0740 */ 0xA65A, 0xA64F, 0xA652, 0xA656, 0xA65C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0748 */ 0xFFFD, 0xFFFD, 0xCA7E, 0xCA7B, 0xFFFD, 0xA767, 0xCA7C, 0xA75B, -/* 0750 */ 0xA75D, 0xA775, 0xA770, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAA5, 0xCA7D, -/* 0758 */ 0xA75F, 0xA761, 0xCAA4, 0xA768, 0xCA78, 0xA774, 0xA776, 0xA75C, -/* 0760 */ 0xA76D, 0xFFFD, 0xCA76, 0xA773, 0xFFFD, 0xA764, 0xFFFD, 0xA76E, -/* 0768 */ 0xA76F, 0xCA77, 0xA76C, 0xA76A, 0xFFFD, 0xA76B, 0xA771, 0xCAA1, -/* 0770 */ 0xA75E, 0xFFFD, 0xA772, 0xCAA3, 0xA766, 0xA763, 0xFFFD, 0xCA7A, -/* 0778 */ 0xA762, 0xCAA6, 0xA765, 0xFFFD, 0xA769, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0780 */ 0xA760, 0xCAA2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCA79, 0xCBEB, -/* 0788 */ 0xCBEA, 0xA94F, 0xCBED, 0xCBEF, 0xCBE4, 0xCBE7, 0xCBEE, 0xA950, -/* 0790 */ 0xFFFD, 0xFFFD, 0xCBE1, 0xCBE5, 0xFFFD, 0xFFFD, 0xCBE9, 0xCE49, -/* 0798 */ 0xA94B, 0xCE4D, 0xA8FD, 0xCBE6, 0xA8FE, 0xA94C, 0xA945, 0xA941, -/* 07A0 */ 0xFFFD, 0xCBE2, 0xA944, 0xA949, 0xA952, 0xCBE3, 0xCBDC, 0xA943, -/* 07A8 */ 0xCBDD, 0xCBDF, 0xFFFD, 0xA946, 0xFFFD, 0xA948, 0xCBDB, 0xCBE0, -/* 07B0 */ 0xFFFD, 0xFFFD, 0xA951, 0xA94D, 0xCBE8, 0xA953, 0xFFFD, 0xA94A, -/* 07B8 */ 0xCBDE, 0xA947, 0xFFFD, 0xFFFD, 0xA942, 0xA940, 0xFFFD, 0xCBEC, -/* 07C0 */ 0xFFFD, 0xA94E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE48, -/* 07C8 */ 0xCDFB, 0xCE4B, 0xFFFD, 0xFFFD, 0xCDFD, 0xAB78, 0xABA8, 0xAB74, -/* 07D0 */ 0xABA7, 0xAB7D, 0xABA4, 0xAB72, 0xCDFC, 0xCE43, 0xABA3, 0xCE4F, -/* 07D8 */ 0xABA5, 0xFFFD, 0xAB79, 0xFFFD, 0xFFFD, 0xCE45, 0xCE42, 0xAB77, -/* 07E0 */ 0xFFFD, 0xCDFA, 0xABA6, 0xCE4A, 0xAB7C, 0xCE4C, 0xABA9, 0xAB73, -/* 07E8 */ 0xAB7E, 0xAB7B, 0xCE40, 0xABA1, 0xCE46, 0xCE47, 0xAB7A, 0xABA2, -/* 07F0 */ 0xAB76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAB75, 0xCDFE, 0xFFFD, -/* 07F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE44, 0xFFFD, 0xFFFD, -/* 0800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE4E, 0xFFFD, 0xD144, -/* 0808 */ 0xADFB, 0xD0F1, 0xFFFD, 0xD0F6, 0xADF4, 0xAE40, 0xD0F4, 0xADEF, -/* 0810 */ 0xADF9, 0xADFE, 0xD0FB, 0xFFFD, 0xADFA, 0xADFD, 0xFFFD, 0xFFFD, -/* 0818 */ 0xD0FE, 0xADF5, 0xD0F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xD142, 0xD143, -/* 0820 */ 0xFFFD, 0xADF7, 0xD141, 0xADF3, 0xAE43, 0xFFFD, 0xD0F8, 0xFFFD, -/* 0828 */ 0xADF1, 0xFFFD, 0xD146, 0xD0F9, 0xD0FD, 0xADF6, 0xAE42, 0xD0FA, -/* 0830 */ 0xADFC, 0xD140, 0xD147, 0xD4A1, 0xFFFD, 0xD145, 0xAE44, 0xADF0, -/* 0838 */ 0xD0FC, 0xD0F3, 0xFFFD, 0xADF8, 0xFFFD, 0xFFFD, 0xD0F2, 0xFFFD, -/* 0840 */ 0xFFFD, 0xD0F7, 0xD0F0, 0xAE41, 0xFFFD, 0xFFFD, 0xD477, 0xFFFD, -/* 0848 */ 0xB0E4, 0xD4A7, 0xB0E2, 0xB0DF, 0xD47C, 0xB0DB, 0xD4A2, 0xB0E6, -/* 0850 */ 0xD476, 0xD47B, 0xD47A, 0xADF2, 0xB0E1, 0xD4A5, 0xFFFD, 0xD4A8, -/* 0858 */ 0xD473, 0xFFFD, 0xB3E8, 0xFFFD, 0xD4A9, 0xB0E7, 0xFFFD, 0xB0D9, -/* 0860 */ 0xB0D6, 0xD47E, 0xB0D3, 0xFFFD, 0xD4A6, 0xFFFD, 0xB0DA, 0xD4AA, -/* 0868 */ 0xFFFD, 0xD474, 0xD4A4, 0xB0DD, 0xD475, 0xD478, 0xD47D, 0xFFFD, -/* 0870 */ 0xFFFD, 0xB0DE, 0xB0DC, 0xB0E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0878 */ 0xB0E3, 0xFFFD, 0xB0D7, 0xB1D2, 0xFFFD, 0xB0D8, 0xD479, 0xB0E5, -/* 0880 */ 0xB0E0, 0xD4A3, 0xB0D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0D4, 0xFFFD, -/* 0888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0890 */ 0xFFFD, 0xD471, 0xD472, 0xD86A, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3D7, -/* 0898 */ 0xB3DA, 0xD875, 0xB3EE, 0xD878, 0xB3D8, 0xD871, 0xB3DE, 0xB3E4, -/* 08A0 */ 0xB5BD, 0xFFFD, 0xFFFD, 0xB3E2, 0xD86E, 0xB3EF, 0xB3DB, 0xB3E3, -/* 08A8 */ 0xD876, 0xDCD7, 0xD87B, 0xD86F, 0xFFFD, 0xD866, 0xD873, 0xD86D, -/* 08B0 */ 0xB3E1, 0xD879, 0xFFFD, 0xFFFD, 0xB3DD, 0xB3F1, 0xB3EA, 0xFFFD, -/* 08B8 */ 0xB3DF, 0xB3DC, 0xFFFD, 0xB3E7, 0xFFFD, 0xD87A, 0xD86C, 0xD872, -/* 08C0 */ 0xD874, 0xD868, 0xD877, 0xB3D9, 0xD867, 0xFFFD, 0xB3E0, 0xB3F0, -/* 08C8 */ 0xB3EC, 0xD869, 0xB3E6, 0xFFFD, 0xFFFD, 0xB3ED, 0xB3E9, 0xB3E5, -/* 08D0 */ 0xFFFD, 0xD870, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3EB, -/* 08D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDCD5, 0xDCD1, 0xFFFD, 0xDCE0, 0xDCCA, -/* 08E0 */ 0xDCD3, 0xB6E5, 0xB6E6, 0xB6DE, 0xDCDC, 0xB6E8, 0xDCCF, 0xDCCE, -/* 08E8 */ 0xDCCC, 0xDCDE, 0xB6DC, 0xDCD8, 0xDCCD, 0xB6DF, 0xDCD6, 0xB6DA, -/* 08F0 */ 0xDCD2, 0xDCD9, 0xDCDB, 0xFFFD, 0xFFFD, 0xDCDF, 0xB6E3, 0xDCCB, -/* 08F8 */ 0xB6DD, 0xDCD0, 0xFFFD, 0xB6D8, 0xFFFD, 0xB6E4, 0xDCDA, 0xB6E0, -/* 0900 */ 0xB6E1, 0xB6E7, 0xB6DB, 0xA25F, 0xB6D9, 0xDCD4, 0xFFFD, 0xFFFD, -/* 0908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB6E2, 0xFFFD, 0xFFFD, 0xDCDD, 0xFFFD, -/* 0910 */ 0xFFFD, 0xFFFD, 0xB9CD, 0xB9C8, 0xFFFD, 0xE155, 0xE151, 0xFFFD, -/* 0918 */ 0xE14B, 0xB9C2, 0xB9BE, 0xE154, 0xB9BF, 0xE14E, 0xE150, 0xFFFD, -/* 0920 */ 0xE153, 0xFFFD, 0xB9C4, 0xFFFD, 0xB9CB, 0xB9C5, 0xFFFD, 0xFFFD, -/* 0928 */ 0xE149, 0xB9C6, 0xB9C7, 0xE14C, 0xB9CC, 0xFFFD, 0xE14A, 0xE14F, -/* 0930 */ 0xB9C3, 0xE148, 0xB9C9, 0xB9C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9C0, -/* 0938 */ 0xE14D, 0xE152, 0xFFFD, 0xB9CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE147, 0xFFFD, 0xBC4D, 0xE547, 0xFFFD, -/* 0948 */ 0xE544, 0xFFFD, 0xBC47, 0xBC53, 0xBC54, 0xFFFD, 0xBC4A, 0xE542, -/* 0950 */ 0xBC4C, 0xE4F9, 0xBC52, 0xFFFD, 0xE546, 0xBC49, 0xE548, 0xBC48, -/* 0958 */ 0xFFFD, 0xE543, 0xE545, 0xBC4B, 0xE541, 0xE4FA, 0xE4F7, 0xFFFD, -/* 0960 */ 0xFFFD, 0xD86B, 0xE4FD, 0xFFFD, 0xE4F6, 0xE4FC, 0xE4FB, 0xFFFD, -/* 0968 */ 0xE4F8, 0xFFFD, 0xBC4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBC4E, -/* 0970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBC50, 0xE4FE, 0xBEB2, 0xE540, 0xFFFD, -/* 0978 */ 0xFFFD, 0xFFFD, 0xE945, 0xFFFD, 0xE8FD, 0xFFFD, 0xBEBE, 0xE942, -/* 0980 */ 0xBEB6, 0xBEBA, 0xE941, 0xFFFD, 0xBEB9, 0xBEB5, 0xBEB8, 0xBEB3, -/* 0988 */ 0xBEBD, 0xE943, 0xE8FE, 0xBEBC, 0xE8FC, 0xBEBB, 0xE944, 0xE940, -/* 0990 */ 0xBC51, 0xFFFD, 0xBEBF, 0xE946, 0xBEB7, 0xBEB4, 0xFFFD, 0xFFFD, -/* 0998 */ 0xFFFD, 0xFFFD, 0xECC6, 0xECC8, 0xC07B, 0xECC9, 0xECC7, 0xECC5, -/* 09A0 */ 0xECC4, 0xC07D, 0xECC3, 0xC07E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09A8 */ 0xECC1, 0xECC2, 0xC07A, 0xC0A1, 0xC07C, 0xFFFD, 0xFFFD, 0xECC0, -/* 09B0 */ 0xFFFD, 0xC250, 0xFFFD, 0xEFBC, 0xEFBA, 0xEFBF, 0xEFBD, 0xFFFD, -/* 09B8 */ 0xEFBB, 0xEFBE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09C0 */ 0xFFFD, 0xC360, 0xF1F2, 0xF1F3, 0xC456, 0xFFFD, 0xF1F4, 0xF1F0, -/* 09C8 */ 0xF1F5, 0xF1F1, 0xC251, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3FE, 0xF441, -/* 09D0 */ 0xC459, 0xF440, 0xC458, 0xC457, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09D8 */ 0xC45A, 0xF5C5, 0xF5C6, 0xFFFD, 0xC4DA, 0xC4D9, 0xC4DB, 0xF5C4, -/* 09E0 */ 0xFFFD, 0xF6D8, 0xF6D7, 0xFFFD, 0xC56D, 0xC56F, 0xC56E, 0xF6D9, -/* 09E8 */ 0xC5C8, 0xF8A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5F1, 0xFFFD, 0xF8A5, -/* 09F0 */ 0xF8EE, 0xFFFD, 0xFFFD, 0xC949, 0xFFFD, 0xFFFD, 0xA57D, 0xA57C, -/* 09F8 */ 0xFFFD, 0xA65F, 0xA65E, 0xC9C7, 0xA65D, 0xC9C6, 0xFFFD, 0xFFFD, -/* 0A00 */ 0xA779, 0xCAA9, 0xFFFD, 0xCAA8, 0xFFFD, 0xFFFD, 0xA777, 0xA77A, -/* 0A08 */ 0xFFFD, 0xFFFD, 0xCAA7, 0xFFFD, 0xA778, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCBF0, 0xFFFD, 0xCBF1, 0xA954, 0xFFFD, -/* 0A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xABAA, 0xFFFD, 0xD148, 0xD149, 0xAE45, -/* 0A20 */ 0xAE46, 0xFFFD, 0xFFFD, 0xD4AC, 0xB0E9, 0xB0EB, 0xD4AB, 0xB0EA, -/* 0A28 */ 0xD87C, 0xB3F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6E9, 0xB6EA, -/* 0A30 */ 0xDCE1, 0xFFFD, 0xB9CF, 0xFFFD, 0xB9CE, 0xFFFD, 0xE549, 0xE948, -/* 0A38 */ 0xE947, 0xFFFD, 0xF96B, 0xA467, 0xC959, 0xFFFD, 0xC96E, 0xC96F, -/* 0A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA662, 0xA666, 0xC9C9, 0xFFFD, -/* 0A48 */ 0xA664, 0xA663, 0xC9C8, 0xA665, 0xA661, 0xFFFD, 0xFFFD, 0xA660, -/* 0A50 */ 0xC9CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA7A6, -/* 0A58 */ 0xFFFD, 0xFFFD, 0xA7A3, 0xFFFD, 0xA77D, 0xCAAA, 0xFFFD, 0xFFFD, -/* 0A60 */ 0xFFFD, 0xCAAB, 0xFFFD, 0xA7A1, 0xFFFD, 0xCAAD, 0xA77B, 0xCAAE, -/* 0A68 */ 0xCAAC, 0xA77E, 0xA7A2, 0xA7A5, 0xA7A4, 0xA77C, 0xCAAF, 0xA959, -/* 0A70 */ 0xCBFE, 0xFFFD, 0xA95B, 0xFFFD, 0xA95A, 0xFFFD, 0xCC40, 0xA958, -/* 0A78 */ 0xA957, 0xCBF5, 0xFFFD, 0xCBF4, 0xFFFD, 0xCBF2, 0xCBF7, 0xCBF6, -/* 0A80 */ 0xCBF3, 0xCBFC, 0xCBFD, 0xCBFA, 0xCBF8, 0xA956, 0xFFFD, 0xFFFD, -/* 0A88 */ 0xFFFD, 0xCBFB, 0xA95C, 0xCC41, 0xFFFD, 0xFFFD, 0xCBF9, 0xFFFD, -/* 0A90 */ 0xABAB, 0xA955, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A98 */ 0xFFFD, 0xABAC, 0xCE54, 0xFFFD, 0xFFFD, 0xCE5A, 0xFFFD, 0xFFFD, -/* 0AA0 */ 0xFFFD, 0xABB2, 0xCE58, 0xCE5E, 0xFFFD, 0xCE55, 0xCE59, 0xCE5B, -/* 0AA8 */ 0xCE5D, 0xCE57, 0xFFFD, 0xCE56, 0xCE51, 0xCE52, 0xABAD, 0xFFFD, -/* 0AB0 */ 0xABAF, 0xABAE, 0xCE53, 0xCE5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xABB1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCE50, 0xD153, 0xFFFD, 0xD152, 0xD157, -/* 0AC8 */ 0xD14E, 0xFFFD, 0xD151, 0xD150, 0xFFFD, 0xD154, 0xFFFD, 0xD158, -/* 0AD0 */ 0xAE47, 0xAE4A, 0xFFFD, 0xFFFD, 0xD14F, 0xD155, 0xFFFD, 0xFFFD, -/* 0AD8 */ 0xFFFD, 0xAE49, 0xD14A, 0xFFFD, 0xABB0, 0xD4BA, 0xD156, 0xFFFD, -/* 0AE0 */ 0xD14D, 0xFFFD, 0xAE48, 0xD14C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AE8 */ 0xFFFD, 0xFFFD, 0xD4B1, 0xFFFD, 0xFFFD, 0xB0EC, 0xB0F0, 0xD4C1, -/* 0AF0 */ 0xD4AF, 0xD4BD, 0xB0F1, 0xD4BF, 0xFFFD, 0xD4C5, 0xFFFD, 0xD4C9, -/* 0AF8 */ 0xFFFD, 0xFFFD, 0xD4C0, 0xD4B4, 0xD4BC, 0xFFFD, 0xD4CA, 0xD4C8, -/* 0B00 */ 0xD4BE, 0xD4B9, 0xD4B2, 0xD8A6, 0xD4B0, 0xB0F5, 0xD4B7, 0xB0F6, -/* 0B08 */ 0xB0F2, 0xD4AD, 0xD4C3, 0xD4B5, 0xFFFD, 0xFFFD, 0xD4B3, 0xD4C6, -/* 0B10 */ 0xB0F3, 0xFFFD, 0xD4CC, 0xB0ED, 0xB0EF, 0xD4BB, 0xD4B6, 0xAE4B, -/* 0B18 */ 0xB0EE, 0xD4B8, 0xD4C7, 0xD4CB, 0xD4C2, 0xFFFD, 0xD4C4, 0xFFFD, -/* 0B20 */ 0xFFFD, 0xFFFD, 0xD4AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8A1, -/* 0B28 */ 0xFFFD, 0xD8AA, 0xD8A9, 0xB3FA, 0xD8A2, 0xFFFD, 0xB3FB, 0xB3F9, -/* 0B30 */ 0xFFFD, 0xD8A4, 0xB3F6, 0xD8A8, 0xFFFD, 0xD8A3, 0xD8A5, 0xD87D, -/* 0B38 */ 0xB3F4, 0xFFFD, 0xD8B2, 0xD8B1, 0xD8AE, 0xB3F3, 0xB3F7, 0xB3F8, -/* 0B40 */ 0xD14B, 0xD8AB, 0xB3F5, 0xB0F4, 0xD8AD, 0xD87E, 0xD8B0, 0xD8AF, -/* 0B48 */ 0xFFFD, 0xD8B3, 0xFFFD, 0xDCEF, 0xFFFD, 0xD8AC, 0xFFFD, 0xFFFD, -/* 0B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8A7, 0xDCE7, -/* 0B58 */ 0xB6F4, 0xB6F7, 0xB6F2, 0xDCE6, 0xDCEA, 0xDCE5, 0xFFFD, 0xB6EC, -/* 0B60 */ 0xB6F6, 0xDCE2, 0xB6F0, 0xDCE9, 0xFFFD, 0xB6EE, 0xB6ED, 0xDCEC, -/* 0B68 */ 0xB6EF, 0xDCEE, 0xFFFD, 0xDCEB, 0xB6EB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B70 */ 0xB6F5, 0xDCF0, 0xDCE4, 0xDCED, 0xFFFD, 0xFFFD, 0xDCE3, 0xFFFD, -/* 0B78 */ 0xFFFD, 0xB6F1, 0xFFFD, 0xB6F3, 0xFFFD, 0xDCE8, 0xFFFD, 0xDCF1, -/* 0B80 */ 0xFFFD, 0xFFFD, 0xE15D, 0xB9D0, 0xE163, 0xFFFD, 0xFFFD, 0xB9D5, -/* 0B88 */ 0xE15F, 0xE166, 0xE157, 0xB9D7, 0xB9D1, 0xE15C, 0xBC55, 0xE15B, -/* 0B90 */ 0xE164, 0xB9D2, 0xFFFD, 0xB9D6, 0xE15A, 0xE160, 0xE165, 0xE156, -/* 0B98 */ 0xB9D4, 0xE15E, 0xFFFD, 0xFFFD, 0xE162, 0xE168, 0xE158, 0xE161, -/* 0BA0 */ 0xFFFD, 0xB9D3, 0xE167, 0xFFFD, 0xFFFD, 0xFFFD, 0xE159, 0xFFFD, -/* 0BA8 */ 0xFFFD, 0xFFFD, 0xBC59, 0xE54B, 0xBC57, 0xBC56, 0xE54D, 0xE552, -/* 0BB0 */ 0xFFFD, 0xE54E, 0xFFFD, 0xE551, 0xBC5C, 0xFFFD, 0xBEA5, 0xBC5B, -/* 0BB8 */ 0xFFFD, 0xE54A, 0xE550, 0xFFFD, 0xBC5A, 0xE54F, 0xFFFD, 0xE54C, -/* 0BC0 */ 0xFFFD, 0xBC58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BC8 */ 0xE94D, 0xF9D9, 0xE94F, 0xE94A, 0xBEC1, 0xE94C, 0xFFFD, 0xBEC0, -/* 0BD0 */ 0xE94E, 0xFFFD, 0xFFFD, 0xBEC3, 0xE950, 0xBEC2, 0xE949, 0xE94B, -/* 0BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0A5, 0xECCC, 0xFFFD, 0xC0A4, -/* 0BE0 */ 0xECCD, 0xC0A3, 0xECCB, 0xC0A2, 0xECCA, 0xFFFD, 0xC253, 0xC252, -/* 0BE8 */ 0xF1F6, 0xF1F8, 0xFFFD, 0xF1F7, 0xC361, 0xC362, 0xFFFD, 0xFFFD, -/* 0BF0 */ 0xC363, 0xF442, 0xC45B, 0xFFFD, 0xFFFD, 0xF7D3, 0xF7D2, 0xC5F2, -/* 0BF8 */ 0xFFFD, 0xA468, 0xA4D0, 0xFFFD, 0xFFFD, 0xA7A7, 0xFFFD, 0xFFFD, -/* 0C00 */ 0xFFFD, 0xFFFD, 0xCE5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3FC, -/* 0C08 */ 0xB3FD, 0xFFFD, 0xDCF2, 0xB9D8, 0xE169, 0xE553, 0xFFFD, 0xFFFD, -/* 0C10 */ 0xFFFD, 0xC95A, 0xFFFD, 0xFFFD, 0xCAB0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C18 */ 0xFFFD, 0xFFFD, 0xCC42, 0xCE60, 0xD159, 0xAE4C, 0xFFFD, 0xFFFD, -/* 0C20 */ 0xF1F9, 0xFFFD, 0xC4DC, 0xA469, 0xA57E, 0xC970, 0xFFFD, 0xA667, -/* 0C28 */ 0xA668, 0xFFFD, 0xA95D, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0F7, 0xFFFD, -/* 0C30 */ 0xB9DA, 0xFFFD, 0xB9DB, 0xB9D9, 0xFFFD, 0xA46A, 0xFFFD, 0xA4D1, -/* 0C38 */ 0xA4D3, 0xA4D2, 0xC95B, 0xA4D4, 0xA5A1, 0xC971, 0xFFFD, 0xA5A2, -/* 0C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA669, 0xA66A, 0xFFFD, -/* 0C48 */ 0xFFFD, 0xFFFD, 0xC9CB, 0xFFFD, 0xA7A8, 0xFFFD, 0xCAB1, 0xFFFD, -/* 0C50 */ 0xFFFD, 0xFFFD, 0xA961, 0xCC43, 0xFFFD, 0xA95F, 0xA960, 0xA95E, -/* 0C58 */ 0xD15A, 0xFFFD, 0xFFFD, 0xFFFD, 0xABB6, 0xABB5, 0xABB7, 0xABB4, -/* 0C60 */ 0xFFFD, 0xCE61, 0xA962, 0xABB3, 0xFFFD, 0xAE4D, 0xAE4E, 0xFFFD, -/* 0C68 */ 0xAE4F, 0xFFFD, 0xD4CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3FE, 0xD8B4, -/* 0C70 */ 0xB0F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6F8, 0xFFFD, 0xB9DD, -/* 0C78 */ 0xB9DC, 0xE16A, 0xFFFD, 0xBC5D, 0xBEC4, 0xFFFD, 0xEFC0, 0xF6DA, -/* 0C80 */ 0xF7D4, 0xA46B, 0xA5A3, 0xFFFD, 0xA5A4, 0xC9D1, 0xA66C, 0xA66F, -/* 0C88 */ 0xFFFD, 0xC9CF, 0xC9CD, 0xA66E, 0xC9D0, 0xC9D2, 0xC9CC, 0xA671, -/* 0C90 */ 0xA670, 0xA66D, 0xA66B, 0xC9CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C98 */ 0xA7B3, 0xFFFD, 0xFFFD, 0xA7B0, 0xCAB6, 0xCAB9, 0xCAB8, 0xFFFD, -/* 0CA0 */ 0xA7AA, 0xA7B2, 0xFFFD, 0xFFFD, 0xA7AF, 0xCAB5, 0xCAB3, 0xA7AE, -/* 0CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA7A9, 0xA7AC, 0xFFFD, 0xCAB4, 0xCABB, -/* 0CB0 */ 0xCAB7, 0xA7AD, 0xA7B1, 0xA7B4, 0xCAB2, 0xCABA, 0xA7AB, 0xFFFD, -/* 0CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA967, 0xA96F, 0xFFFD, 0xCC4F, -/* 0CC0 */ 0xCC48, 0xA970, 0xCC53, 0xCC44, 0xCC4B, 0xFFFD, 0xFFFD, 0xA966, -/* 0CC8 */ 0xCC45, 0xA964, 0xCC4C, 0xCC50, 0xA963, 0xFFFD, 0xCC51, 0xCC4A, -/* 0CD0 */ 0xFFFD, 0xCC4D, 0xFFFD, 0xA972, 0xA969, 0xCC54, 0xCC52, 0xFFFD, -/* 0CD8 */ 0xA96E, 0xA96C, 0xCC49, 0xA96B, 0xCC47, 0xCC46, 0xA96A, 0xA968, -/* 0CE0 */ 0xA971, 0xA96D, 0xA965, 0xFFFD, 0xCC4E, 0xFFFD, 0xABB9, 0xFFFD, -/* 0CE8 */ 0xABC0, 0xCE6F, 0xABB8, 0xCE67, 0xCE63, 0xFFFD, 0xCE73, 0xCE62, -/* 0CF0 */ 0xFFFD, 0xABBB, 0xCE6C, 0xABBE, 0xABC1, 0xFFFD, 0xABBC, 0xCE70, -/* 0CF8 */ 0xABBF, 0xFFFD, 0xAE56, 0xCE76, 0xCE64, 0xFFFD, 0xFFFD, 0xCE66, -/* 0D00 */ 0xCE6D, 0xCE71, 0xCE75, 0xCE72, 0xCE6B, 0xCE6E, 0xFFFD, 0xFFFD, -/* 0D08 */ 0xCE68, 0xABC3, 0xCE6A, 0xCE69, 0xCE74, 0xABBA, 0xCE65, 0xABC2, -/* 0D10 */ 0xFFFD, 0xABBD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAE5C, -/* 0D18 */ 0xD162, 0xFFFD, 0xAE5B, 0xFFFD, 0xFFFD, 0xD160, 0xFFFD, 0xAE50, -/* 0D20 */ 0xFFFD, 0xAE55, 0xFFFD, 0xD15F, 0xD15C, 0xD161, 0xAE51, 0xD15B, -/* 0D28 */ 0xFFFD, 0xAE54, 0xAE52, 0xFFFD, 0xD163, 0xAE53, 0xAE57, 0xFFFD, -/* 0D30 */ 0xFFFD, 0xAE58, 0xFFFD, 0xAE5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xAE59, -/* 0D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD15D, 0xD15E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D40 */ 0xFFFD, 0xD164, 0xFFFD, 0xD4D4, 0xB0F9, 0xD8C2, 0xD4D3, 0xD4E6, -/* 0D48 */ 0xFFFD, 0xFFFD, 0xB140, 0xFFFD, 0xD4E4, 0xFFFD, 0xB0FE, 0xB0FA, -/* 0D50 */ 0xD4ED, 0xD4DD, 0xD4E0, 0xFFFD, 0xB143, 0xD4EA, 0xD4E2, 0xB0FB, -/* 0D58 */ 0xB144, 0xFFFD, 0xD4E7, 0xD4E5, 0xFFFD, 0xFFFD, 0xD4D6, 0xD4EB, -/* 0D60 */ 0xD4DF, 0xD4DA, 0xFFFD, 0xD4D0, 0xD4EC, 0xD4DC, 0xD4CF, 0xFFFD, -/* 0D68 */ 0xB142, 0xD4E1, 0xD4EE, 0xD4DE, 0xD4D2, 0xD4D7, 0xD4CE, 0xFFFD, -/* 0D70 */ 0xB141, 0xFFFD, 0xD4DB, 0xD4D8, 0xB0FC, 0xD4D1, 0xFFFD, 0xD4E9, -/* 0D78 */ 0xB0FD, 0xFFFD, 0xD4D9, 0xD4D5, 0xFFFD, 0xFFFD, 0xD4E8, 0xFFFD, -/* 0D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB440, 0xD8BB, 0xFFFD, -/* 0D88 */ 0xD8B8, 0xD8C9, 0xD8BD, 0xD8CA, 0xFFFD, 0xB442, 0xFFFD, 0xFFFD, -/* 0D90 */ 0xFFFD, 0xD8C6, 0xD8C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D98 */ 0xD8C4, 0xD8C7, 0xD8CB, 0xFFFD, 0xD4E3, 0xD8CD, 0xDD47, 0xFFFD, -/* 0DA0 */ 0xB443, 0xD8CE, 0xD8B6, 0xD8C0, 0xFFFD, 0xD8C5, 0xFFFD, 0xFFFD, -/* 0DA8 */ 0xB441, 0xB444, 0xD8CC, 0xD8CF, 0xD8BA, 0xD8B7, 0xFFFD, 0xFFFD, -/* 0DB0 */ 0xD8B9, 0xFFFD, 0xFFFD, 0xD8BE, 0xD8BC, 0xB445, 0xFFFD, 0xD8C8, -/* 0DB8 */ 0xFFFD, 0xFFFD, 0xD8BF, 0xFFFD, 0xD8C1, 0xD8B5, 0xDCFA, 0xDCF8, -/* 0DC0 */ 0xB742, 0xB740, 0xDD43, 0xDCF9, 0xDD44, 0xDD40, 0xDCF7, 0xDD46, -/* 0DC8 */ 0xDCF6, 0xDCFD, 0xB6FE, 0xB6FD, 0xB6FC, 0xDCFB, 0xDD41, 0xB6F9, -/* 0DD0 */ 0xB741, 0xFFFD, 0xDCF4, 0xFFFD, 0xDCFE, 0xDCF3, 0xDCFC, 0xB6FA, -/* 0DD8 */ 0xDD42, 0xDCF5, 0xB6FB, 0xDD45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE16E, 0xB9E2, 0xB9E1, 0xB9E3, 0xE17A, -/* 0DE8 */ 0xE170, 0xE176, 0xE16B, 0xE179, 0xE178, 0xE17C, 0xE175, 0xB9DE, -/* 0DF0 */ 0xE174, 0xB9E4, 0xFFFD, 0xE16D, 0xB9DF, 0xFFFD, 0xE17B, 0xB9E0, -/* 0DF8 */ 0xE16F, 0xE172, 0xE177, 0xE171, 0xE16C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E00 */ 0xFFFD, 0xE173, 0xE555, 0xBC61, 0xE558, 0xE557, 0xE55A, 0xE55C, -/* 0E08 */ 0xF9DC, 0xBC5F, 0xFFFD, 0xE556, 0xFFFD, 0xE554, 0xFFFD, 0xE55D, -/* 0E10 */ 0xE55B, 0xE559, 0xFFFD, 0xE55F, 0xFFFD, 0xE55E, 0xBC63, 0xBC5E, -/* 0E18 */ 0xFFFD, 0xBC60, 0xBC62, 0xFFFD, 0xFFFD, 0xE560, 0xE957, 0xFFFD, -/* 0E20 */ 0xFFFD, 0xE956, 0xE955, 0xFFFD, 0xE958, 0xE951, 0xFFFD, 0xE952, -/* 0E28 */ 0xE95A, 0xE953, 0xFFFD, 0xBEC5, 0xE95C, 0xFFFD, 0xE95B, 0xE954, -/* 0E30 */ 0xFFFD, 0xECD1, 0xC0A8, 0xECCF, 0xECD4, 0xECD3, 0xE959, 0xFFFD, -/* 0E38 */ 0xC0A7, 0xFFFD, 0xECD2, 0xECCE, 0xECD6, 0xECD5, 0xC0A6, 0xFFFD, -/* 0E40 */ 0xECD0, 0xFFFD, 0xBEC6, 0xFFFD, 0xFFFD, 0xFFFD, 0xC254, 0xFFFD, -/* 0E48 */ 0xFFFD, 0xFFFD, 0xEFC1, 0xF1FA, 0xF1FB, 0xF1FC, 0xC45C, 0xFFFD, -/* 0E50 */ 0xFFFD, 0xC45D, 0xFFFD, 0xF443, 0xFFFD, 0xF5C8, 0xF5C7, 0xFFFD, -/* 0E58 */ 0xFFFD, 0xF6DB, 0xF6DC, 0xF7D5, 0xF8A7, 0xFFFD, 0xA46C, 0xA46D, -/* 0E60 */ 0xFFFD, 0xA46E, 0xA4D5, 0xA5A5, 0xC9D3, 0xA672, 0xA673, 0xFFFD, -/* 0E68 */ 0xA7B7, 0xA7B8, 0xA7B6, 0xA7B5, 0xFFFD, 0xA973, 0xFFFD, 0xFFFD, -/* 0E70 */ 0xCC55, 0xA975, 0xA974, 0xCC56, 0xFFFD, 0xFFFD, 0xFFFD, 0xABC4, -/* 0E78 */ 0xFFFD, 0xAE5D, 0xD165, 0xFFFD, 0xD4F0, 0xFFFD, 0xB145, 0xB447, -/* 0E80 */ 0xD4EF, 0xB446, 0xFFFD, 0xB9E5, 0xFFFD, 0xE17D, 0xBEC7, 0xFFFD, -/* 0E88 */ 0xC0A9, 0xECD7, 0xFFFD, 0xC45E, 0xFFFD, 0xC570, 0xFFFD, 0xC972, -/* 0E90 */ 0xFFFD, 0xA5A6, 0xC973, 0xA676, 0xFFFD, 0xA674, 0xA675, 0xA677, -/* 0E98 */ 0xFFFD, 0xA7BA, 0xA7B9, 0xFFFD, 0xCABC, 0xA7BB, 0xFFFD, 0xFFFD, -/* 0EA0 */ 0xCABD, 0xCC57, 0xFFFD, 0xCC58, 0xFFFD, 0xA976, 0xA978, 0xA97A, -/* 0EA8 */ 0xA977, 0xA97B, 0xA979, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EB0 */ 0xABC8, 0xABC5, 0xABC7, 0xABC9, 0xABC6, 0xD166, 0xCE77, 0xFFFD, -/* 0EB8 */ 0xFFFD, 0xFFFD, 0xD168, 0xD167, 0xAE63, 0xFFFD, 0xAE5F, 0xFFFD, -/* 0EC0 */ 0xFFFD, 0xAE60, 0xAE62, 0xAE64, 0xAE61, 0xFFFD, 0xAE66, 0xAE65, -/* 0EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB14A, 0xD4F2, 0xD4F1, -/* 0ED0 */ 0xB149, 0xFFFD, 0xB148, 0xB147, 0xB14B, 0xB146, 0xFFFD, 0xFFFD, -/* 0ED8 */ 0xD8D5, 0xD8D2, 0xB449, 0xD8D1, 0xD8D6, 0xFFFD, 0xB44B, 0xD8D4, -/* 0EE0 */ 0xB448, 0xB44A, 0xD8D3, 0xFFFD, 0xDD48, 0xFFFD, 0xDD49, 0xDD4A, -/* 0EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9E6, 0xB9EE, 0xE17E, 0xB9E8, -/* 0EF0 */ 0xB9EC, 0xE1A1, 0xB9ED, 0xB9E9, 0xB9EA, 0xB9E7, 0xB9EB, 0xBC66, -/* 0EF8 */ 0xD8D0, 0xBC67, 0xBC65, 0xFFFD, 0xBC64, 0xE95D, 0xBEC8, 0xECD8, -/* 0F00 */ 0xECD9, 0xFFFD, 0xFFFD, 0xC364, 0xC45F, 0xFFFD, 0xA46F, 0xFFFD, -/* 0F08 */ 0xA678, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xABCA, -/* 0F10 */ 0xFFFD, 0xD169, 0xAE67, 0xFFFD, 0xFFFD, 0xB14E, 0xB14D, 0xB14C, -/* 0F18 */ 0xB44C, 0xB44D, 0xD8D7, 0xB9EF, 0xBEC9, 0xA470, 0xC95C, 0xA4D6, -/* 0F20 */ 0xC974, 0xFFFD, 0xFFFD, 0xC9D4, 0xA679, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F28 */ 0xA97C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDD4B, 0xFFFD, 0xFFFD, -/* 0F30 */ 0xA471, 0xFFFD, 0xA4D7, 0xC9D5, 0xFFFD, 0xFFFD, 0xCABE, 0xFFFD, -/* 0F38 */ 0xCABF, 0xFFFD, 0xA7BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8D8, 0xB44E, -/* 0F40 */ 0xFFFD, 0xDD4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0AA, 0xA472, 0xA4A8, -/* 0F48 */ 0xA4D8, 0xC975, 0xA5A7, 0xFFFD, 0xA7C0, 0xA7BF, 0xA7BD, 0xA7BE, -/* 0F50 */ 0xFFFD, 0xFFFD, 0xCC59, 0xA97E, 0xA9A1, 0xCC5A, 0xA97D, 0xFFFD, -/* 0F58 */ 0xFFFD, 0xABCE, 0xCE78, 0xABCD, 0xABCB, 0xABCC, 0xAE6A, 0xAE68, -/* 0F60 */ 0xFFFD, 0xFFFD, 0xD16B, 0xAE69, 0xD16A, 0xFFFD, 0xAE5E, 0xD4F3, -/* 0F68 */ 0xFFFD, 0xFFFD, 0xB150, 0xB151, 0xFFFD, 0xFFFD, 0xB14F, 0xFFFD, -/* 0F70 */ 0xB9F0, 0xE1A2, 0xBC68, 0xBC69, 0xFFFD, 0xE561, 0xC0AB, 0xEFC2, -/* 0F78 */ 0xEFC3, 0xFFFD, 0xC4DD, 0xF8A8, 0xC94B, 0xA4D9, 0xFFFD, 0xA473, -/* 0F80 */ 0xFFFD, 0xC977, 0xC976, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA67A, -/* 0F88 */ 0xC9D7, 0xC9D8, 0xC9D6, 0xFFFD, 0xC9D9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAC7, 0xFFFD, 0xCAC2, 0xCAC4, -/* 0F98 */ 0xCAC6, 0xCAC3, 0xA7C4, 0xCAC0, 0xFFFD, 0xCAC1, 0xA7C1, 0xA7C2, -/* 0FA0 */ 0xCAC5, 0xCAC8, 0xA7C3, 0xCAC9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCC68, 0xFFFD, 0xCC62, 0xCC5D, 0xA9A3, -/* 0FB0 */ 0xCC65, 0xCC63, 0xCC5C, 0xCC69, 0xCC6C, 0xCC67, 0xCC60, 0xA9A5, -/* 0FB8 */ 0xCC66, 0xA9A6, 0xCC61, 0xCC64, 0xCC5B, 0xCC5F, 0xCC6B, 0xA9A7, -/* 0FC0 */ 0xFFFD, 0xA9A8, 0xFFFD, 0xCC5E, 0xCC6A, 0xA9A2, 0xA9A4, 0xCEAB, -/* 0FC8 */ 0xCEA4, 0xCEAA, 0xCEA3, 0xCEA5, 0xCE7D, 0xCE7B, 0xFFFD, 0xCEAC, -/* 0FD0 */ 0xCEA9, 0xCE79, 0xFFFD, 0xABD0, 0xCEA7, 0xCEA8, 0xFFFD, 0xCEA6, -/* 0FD8 */ 0xCE7C, 0xCE7A, 0xABCF, 0xCEA2, 0xCE7E, 0xFFFD, 0xFFFD, 0xCEA1, -/* 0FE0 */ 0xCEAD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FE8 */ 0xFFFD, 0xAE6F, 0xFFFD, 0xAE6E, 0xFFFD, 0xD16C, 0xAE6B, 0xD16E, -/* 0FF0 */ 0xFFFD, 0xAE70, 0xD16F, 0xFFFD, 0xFFFD, 0xAE73, 0xFFFD, 0xAE71, -/* 0FF8 */ 0xD170, 0xCEAE, 0xD172, 0xFFFD, 0xAE6D, 0xFFFD, 0xAE6C, 0xFFFD, -/* 1000 */ 0xD16D, 0xD171, 0xAE72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB153, -/* 1008 */ 0xB152, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4F5, 0xD4F9, 0xD4FB, 0xB154, -/* 1010 */ 0xD4FE, 0xFFFD, 0xB158, 0xD541, 0xFFFD, 0xB15A, 0xFFFD, 0xB156, -/* 1018 */ 0xB15E, 0xFFFD, 0xB15B, 0xD4F7, 0xB155, 0xFFFD, 0xD4F6, 0xD4F4, -/* 1020 */ 0xD543, 0xD4F8, 0xFFFD, 0xB157, 0xD542, 0xB15C, 0xD4FD, 0xD4FC, -/* 1028 */ 0xB15D, 0xD4FA, 0xB159, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD544, -/* 1030 */ 0xFFFD, 0xD540, 0xD8E7, 0xD8EE, 0xD8E3, 0xB451, 0xD8DF, 0xD8EF, -/* 1038 */ 0xD8D9, 0xD8EC, 0xD8EA, 0xD8E4, 0xFFFD, 0xD8ED, 0xD8E6, 0xFFFD, -/* 1040 */ 0xD8DE, 0xD8F0, 0xD8DC, 0xD8E9, 0xD8DA, 0xFFFD, 0xD8F1, 0xFFFD, -/* 1048 */ 0xB452, 0xFFFD, 0xD8EB, 0xDD4F, 0xD8DD, 0xB44F, 0xFFFD, 0xD8E1, -/* 1050 */ 0xFFFD, 0xB450, 0xD8E0, 0xD8E5, 0xFFFD, 0xFFFD, 0xD8E2, 0xFFFD, -/* 1058 */ 0xFFFD, 0xFFFD, 0xD8E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDD53, -/* 1060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDD56, 0xDD4E, 0xFFFD, 0xDD50, 0xFFFD, -/* 1068 */ 0xDD55, 0xDD54, 0xB743, 0xFFFD, 0xD8DB, 0xDD52, 0xFFFD, 0xFFFD, -/* 1070 */ 0xB744, 0xFFFD, 0xDD4D, 0xDD51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1078 */ 0xE1A9, 0xFFFD, 0xE1B0, 0xE1A7, 0xFFFD, 0xE1AE, 0xE1A5, 0xE1AD, -/* 1080 */ 0xE1B1, 0xE1A4, 0xE1A8, 0xE1A3, 0xFFFD, 0xB9F1, 0xFFFD, 0xE1A6, -/* 1088 */ 0xB9F2, 0xE1AC, 0xE1AB, 0xE1AA, 0xFFFD, 0xFFFD, 0xE1AF, 0xFFFD, -/* 1090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE565, 0xE567, 0xBC6B, 0xE568, 0xFFFD, -/* 1098 */ 0xE563, 0xFFFD, 0xE562, 0xE56C, 0xFFFD, 0xE56A, 0xBC6A, 0xE56D, -/* 10A0 */ 0xE564, 0xE569, 0xE56B, 0xE566, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10A8 */ 0xE961, 0xE966, 0xE960, 0xE965, 0xFFFD, 0xE95E, 0xE968, 0xE964, -/* 10B0 */ 0xE969, 0xE963, 0xE95F, 0xE967, 0xFFFD, 0xE96A, 0xE962, 0xFFFD, -/* 10B8 */ 0xECDA, 0xC0AF, 0xFFFD, 0xC0AD, 0xFFFD, 0xC0AC, 0xC0AE, 0xFFFD, -/* 10C0 */ 0xFFFD, 0xEFC4, 0xFFFD, 0xF172, 0xF1FD, 0xFFFD, 0xFFFD, 0xF444, -/* 10C8 */ 0xF445, 0xFFFD, 0xC460, 0xFFFD, 0xF5C9, 0xFFFD, 0xC4DE, 0xFFFD, -/* 10D0 */ 0xF5CA, 0xFFFD, 0xF6DE, 0xC572, 0xFFFD, 0xC571, 0xF6DD, 0xC5C9, -/* 10D8 */ 0xFFFD, 0xF7D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA474, 0xA67B, -/* 10E0 */ 0xC9DA, 0xCACA, 0xA8B5, 0xB15F, 0xFFFD, 0xFFFD, 0xA475, 0xA5AA, -/* 10E8 */ 0xA5A9, 0xA5A8, 0xFFFD, 0xFFFD, 0xA7C5, 0xFFFD, 0xFFFD, 0xAE74, -/* 10F0 */ 0xFFFD, 0xDD57, 0xA476, 0xA477, 0xA478, 0xA4DA, 0xFFFD, 0xFFFD, -/* 10F8 */ 0xABD1, 0xFFFD, 0xCEAF, 0xFFFD, 0xFFFD, 0xFFFD, 0xB453, 0xA479, -/* 1100 */ 0xC95D, 0xFFFD, 0xFFFD, 0xA5AB, 0xA5AC, 0xC978, 0xFFFD, 0xA67C, -/* 1108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCACB, 0xFFFD, 0xA7C6, 0xFFFD, 0xCACC, -/* 1110 */ 0xFFFD, 0xFFFD, 0xA9AE, 0xFFFD, 0xFFFD, 0xCC6E, 0xA9AC, 0xA9AB, -/* 1118 */ 0xCC6D, 0xA9A9, 0xCC6F, 0xA9AA, 0xA9AD, 0xFFFD, 0xABD2, 0xFFFD, -/* 1120 */ 0xABD4, 0xCEB3, 0xCEB0, 0xCEB1, 0xCEB2, 0xCEB4, 0xABD3, 0xFFFD, -/* 1128 */ 0xFFFD, 0xD174, 0xD173, 0xFFFD, 0xAE76, 0xFFFD, 0xAE75, 0xFFFD, -/* 1130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB162, 0xD546, 0xFFFD, 0xB161, -/* 1138 */ 0xB163, 0xB160, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB455, 0xD545, -/* 1140 */ 0xFFFD, 0xB456, 0xD8F3, 0xFFFD, 0xB457, 0xD8F2, 0xB454, 0xFFFD, -/* 1148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDD5A, 0xDD5C, 0xB745, 0xDD5B, 0xDD59, -/* 1150 */ 0xDD58, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1B4, 0xB9F7, 0xB9F5, 0xFFFD, -/* 1158 */ 0xB9F6, 0xE1B2, 0xE1B3, 0xFFFD, 0xB9F3, 0xE571, 0xE56F, 0xFFFD, -/* 1160 */ 0xBC6D, 0xE570, 0xBC6E, 0xBC6C, 0xB9F4, 0xFFFD, 0xFFFD, 0xE96D, -/* 1168 */ 0xE96B, 0xE96C, 0xE56E, 0xECDC, 0xC0B0, 0xECDB, 0xEFC5, 0xEFC6, -/* 1170 */ 0xE96E, 0xF1FE, 0xFFFD, 0xA47A, 0xA5AD, 0xA67E, 0xC9DB, 0xA67D, -/* 1178 */ 0xFFFD, 0xA9AF, 0xB746, 0xFFFD, 0xA4DB, 0xA5AE, 0xABD5, 0xB458, -/* 1180 */ 0xFFFD, 0xC979, 0xFFFD, 0xC97A, 0xFFFD, 0xC9DC, 0xFFFD, 0xFFFD, -/* 1188 */ 0xA7C8, 0xCAD0, 0xCACE, 0xA7C9, 0xCACD, 0xCACF, 0xCAD1, 0xFFFD, -/* 1190 */ 0xA7C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA9B3, 0xA9B4, -/* 1198 */ 0xA9B1, 0xFFFD, 0xFFFD, 0xA9B0, 0xCEB8, 0xA9B2, 0xFFFD, 0xFFFD, -/* 11A0 */ 0xFFFD, 0xABD6, 0xFFFD, 0xCEB7, 0xCEB9, 0xCEB6, 0xCEBA, 0xABD7, -/* 11A8 */ 0xAE79, 0xD175, 0xFFFD, 0xD177, 0xAE77, 0xD178, 0xAE78, 0xD176, -/* 11B0 */ 0xFFFD, 0xCEB5, 0xD547, 0xD54A, 0xD54B, 0xD548, 0xB167, 0xB166, -/* 11B8 */ 0xB164, 0xB165, 0xD549, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB168, -/* 11C0 */ 0xFFFD, 0xFFFD, 0xB45A, 0xB45B, 0xFFFD, 0xB45C, 0xDD5D, 0xDD5F, -/* 11C8 */ 0xDD61, 0xB748, 0xB747, 0xB459, 0xDD60, 0xDD5E, 0xFFFD, 0xE1B8, -/* 11D0 */ 0xFFFD, 0xFFFD, 0xE1B6, 0xE1BC, 0xB9F8, 0xE1BD, 0xE1BA, 0xB9F9, -/* 11D8 */ 0xE1B7, 0xE1B5, 0xE1BB, 0xBC70, 0xE573, 0xE1B9, 0xBC72, 0xE574, -/* 11E0 */ 0xBC71, 0xBC74, 0xE575, 0xBC6F, 0xBC73, 0xFFFD, 0xE973, 0xE971, -/* 11E8 */ 0xE970, 0xE972, 0xE96F, 0xFFFD, 0xFFFD, 0xC366, 0xFFFD, 0xF446, -/* 11F0 */ 0xF447, 0xFFFD, 0xF5CB, 0xF6DF, 0xC655, 0xFFFD, 0xFFFD, 0xA9B5, -/* 11F8 */ 0xA7CA, 0xFFFD, 0xFFFD, 0xABD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xA47B, -/* 1200 */ 0xA4DC, 0xFFFD, 0xA5AF, 0xC9DD, 0xFFFD, 0xA7CB, 0xCAD2, 0xFFFD, -/* 1208 */ 0xCEBB, 0xABD9, 0xFFFD, 0xB9FA, 0xA47C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1210 */ 0xA6A1, 0xFFFD, 0xFFFD, 0xB749, 0xA47D, 0xA4DD, 0xA4DE, 0xFFFD, -/* 1218 */ 0xA5B1, 0xA5B0, 0xFFFD, 0xC9DE, 0xA6A2, 0xFFFD, 0xCAD3, 0xFFFD, -/* 1220 */ 0xA7CC, 0xFFFD, 0xFFFD, 0xCC71, 0xCC72, 0xCC73, 0xFFFD, 0xA9B6, -/* 1228 */ 0xA9B7, 0xCC70, 0xA9B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xABDA, 0xCEBC, -/* 1230 */ 0xFFFD, 0xD17A, 0xAE7A, 0xFFFD, 0xD179, 0xFFFD, 0xB169, 0xD54C, -/* 1238 */ 0xB16A, 0xD54D, 0xFFFD, 0xFFFD, 0xFFFD, 0xB45D, 0xFFFD, 0xFFFD, -/* 1240 */ 0xFFFD, 0xDD62, 0xFFFD, 0xFFFD, 0xE1BF, 0xE1BE, 0xFFFD, 0xB9FB, -/* 1248 */ 0xFFFD, 0xBC75, 0xE576, 0xBECA, 0xE974, 0xC0B1, 0xFFFD, 0xC573, -/* 1250 */ 0xF7D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCC74, 0xFFFD, 0xCEBD, -/* 1258 */ 0xB16B, 0xD8F4, 0xB74A, 0xFFFD, 0xFFFD, 0xFFFD, 0xC255, 0xFFFD, -/* 1260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA7CE, 0xFFFD, 0xA7CD, 0xABDB, 0xFFFD, -/* 1268 */ 0xD17B, 0xFFFD, 0xB16D, 0xB343, 0xB16E, 0xB16C, 0xB45E, 0xFFFD, -/* 1270 */ 0xE1C0, 0xB9FC, 0xBC76, 0xFFFD, 0xC94C, 0xC9DF, 0xFFFD, 0xCAD5, -/* 1278 */ 0xA7CF, 0xCAD4, 0xA7D0, 0xFFFD, 0xFFFD, 0xA9BC, 0xCC77, 0xCC76, -/* 1280 */ 0xA9BB, 0xA9B9, 0xA9BA, 0xCC75, 0xFFFD, 0xFFFD, 0xABDD, 0xCEBE, -/* 1288 */ 0xABE0, 0xABDC, 0xABE2, 0xABDE, 0xABDF, 0xABE1, 0xFFFD, 0xFFFD, -/* 1290 */ 0xFFFD, 0xAE7D, 0xAE7C, 0xAE7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xD54F, -/* 1298 */ 0xB16F, 0xB172, 0xB170, 0xFFFD, 0xD54E, 0xB175, 0xFFFD, 0xB171, -/* 12A0 */ 0xD550, 0xB174, 0xB173, 0xFFFD, 0xFFFD, 0xFFFD, 0xD8F6, 0xD8F5, -/* 12A8 */ 0xFFFD, 0xB461, 0xB45F, 0xB460, 0xD8F7, 0xB74B, 0xDD64, 0xB74C, -/* 12B0 */ 0xDD63, 0xFFFD, 0xFFFD, 0xE577, 0xFFFD, 0xFFFD, 0xBC78, 0xE1C1, -/* 12B8 */ 0xBC77, 0xFFFD, 0xB9FD, 0xFFFD, 0xECDE, 0xE975, 0xC0B2, 0xECDD, -/* 12C0 */ 0xF240, 0xF448, 0xF449, 0xFFFD, 0xA4DF, 0xFFFD, 0xA5B2, 0xFFFD, -/* 12C8 */ 0xFFFD, 0xFFFD, 0xC97B, 0xFFFD, 0xFFFD, 0xA7D2, 0xA7D4, 0xFFFD, -/* 12D0 */ 0xC9E2, 0xCAD8, 0xCAD7, 0xCAD6, 0xFFFD, 0xC9E1, 0xC9E0, 0xA6A4, -/* 12D8 */ 0xA7D3, 0xA7D1, 0xA6A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xA9BD, 0xCC78, -/* 12E0 */ 0xFFFD, 0xA9BE, 0xCADD, 0xFFFD, 0xCADF, 0xCADE, 0xCC79, 0xFFFD, -/* 12E8 */ 0xFFFD, 0xCADA, 0xFFFD, 0xA7D8, 0xA7D6, 0xFFFD, 0xCAD9, 0xCADB, -/* 12F0 */ 0xCAE1, 0xFFFD, 0xA7D5, 0xFFFD, 0xCADC, 0xCAE5, 0xA9C0, 0xFFFD, -/* 12F8 */ 0xCAE2, 0xA7D7, 0xFFFD, 0xCAE0, 0xCAE3, 0xFFFD, 0xA9BF, 0xFFFD, -/* 1300 */ 0xA9C1, 0xCAE4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1308 */ 0xFFFD, 0xFFFD, 0xCCAF, 0xCCA2, 0xCC7E, 0xCCAE, 0xCCA9, 0xABE7, -/* 1310 */ 0xA9C2, 0xCCAA, 0xCCAD, 0xABE3, 0xCCAC, 0xA9C3, 0xA9C8, 0xA9C6, -/* 1318 */ 0xCCA3, 0xFFFD, 0xCC7C, 0xCCA5, 0xA9CD, 0xCCB0, 0xABE4, 0xCCA6, -/* 1320 */ 0xFFFD, 0xABE5, 0xA9C9, 0xCCA8, 0xFFFD, 0xCECD, 0xABE6, 0xCC7B, -/* 1328 */ 0xA9CA, 0xABE8, 0xA9CB, 0xA9C7, 0xA9CC, 0xCCA7, 0xCC7A, 0xCCAB, -/* 1330 */ 0xA9C4, 0xFFFD, 0xFFFD, 0xCC7D, 0xCCA4, 0xCCA1, 0xA9C5, 0xFFFD, -/* 1338 */ 0xCEBF, 0xFFFD, 0xCEC0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1340 */ 0xFFFD, 0xCECA, 0xD1A1, 0xCECB, 0xABEE, 0xCECE, 0xCEC4, 0xABED, -/* 1348 */ 0xCEC6, 0xFFFD, 0xCEC7, 0xFFFD, 0xFFFD, 0xCEC9, 0xABE9, 0xFFFD, -/* 1350 */ 0xFFFD, 0xAEA3, 0xFFFD, 0xF9DA, 0xCEC5, 0xCEC1, 0xAEA4, 0xFFFD, -/* 1358 */ 0xFFFD, 0xCECF, 0xAE7E, 0xD17D, 0xCEC8, 0xFFFD, 0xD17C, 0xCEC3, -/* 1360 */ 0xCECC, 0xFFFD, 0xFFFD, 0xABEC, 0xAEA1, 0xABF2, 0xAEA2, 0xCED0, -/* 1368 */ 0xD17E, 0xABEB, 0xAEA6, 0xABF1, 0xABF0, 0xABEF, 0xAEA5, 0xCED1, -/* 1370 */ 0xAEA7, 0xABEA, 0xFFFD, 0xCEC2, 0xB176, 0xD1A4, 0xD1A6, 0xFFFD, -/* 1378 */ 0xD1A8, 0xAEA8, 0xAEAE, 0xD553, 0xD1AC, 0xD1A3, 0xB178, 0xD551, -/* 1380 */ 0xFFFD, 0xAEAD, 0xAEAB, 0xD1AE, 0xFFFD, 0xD552, 0xFFFD, 0xD1A5, -/* 1388 */ 0xFFFD, 0xAEAC, 0xD1A9, 0xAEAF, 0xD1AB, 0xFFFD, 0xFFFD, 0xAEAA, -/* 1390 */ 0xD1AA, 0xD1AD, 0xD1A7, 0xFFFD, 0xAEA9, 0xB179, 0xFFFD, 0xD1A2, -/* 1398 */ 0xB177, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB17A, 0xFFFD, 0xFFFD, -/* 13A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD555, 0xD55E, 0xB464, -/* 13A8 */ 0xFFFD, 0xB17C, 0xB1A3, 0xB465, 0xD560, 0xB1AA, 0xD8F9, 0xD556, -/* 13B0 */ 0xB1A2, 0xB1A5, 0xB17E, 0xD554, 0xD562, 0xD565, 0xD949, 0xFFFD, -/* 13B8 */ 0xD563, 0xD8FD, 0xB1A1, 0xB1A8, 0xB1AC, 0xD55D, 0xD8F8, 0xD561, -/* 13C0 */ 0xB17B, 0xD8FA, 0xD564, 0xD8FC, 0xD559, 0xFFFD, 0xB462, 0xFFFD, -/* 13C8 */ 0xD557, 0xD558, 0xB1A7, 0xFFFD, 0xFFFD, 0xB1A6, 0xD55B, 0xB1AB, -/* 13D0 */ 0xD55F, 0xB1A4, 0xD55C, 0xFFFD, 0xB1A9, 0xB466, 0xB463, 0xD8FB, -/* 13D8 */ 0xFFFD, 0xD55A, 0xFFFD, 0xB17D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB46B, 0xB46F, 0xD940, -/* 13E8 */ 0xB751, 0xB46D, 0xD944, 0xB471, 0xDD65, 0xD946, 0xB753, 0xB469, -/* 13F0 */ 0xB46C, 0xD947, 0xFFFD, 0xD948, 0xD94E, 0xB473, 0xB754, 0xFFFD, -/* 13F8 */ 0xD94A, 0xD94F, 0xD943, 0xB75E, 0xFFFD, 0xB755, 0xB472, 0xD941, -/* 1400 */ 0xD950, 0xFFFD, 0xB75D, 0xB470, 0xB74E, 0xD94D, 0xFFFD, 0xB474, -/* 1408 */ 0xD945, 0xD8FE, 0xB46A, 0xD942, 0xFFFD, 0xD94B, 0xFFFD, 0xB74D, -/* 1410 */ 0xB752, 0xB467, 0xD94C, 0xFFFD, 0xB750, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1418 */ 0xB468, 0xFFFD, 0xFFFD, 0xFFFD, 0xB75C, 0xE1C3, 0xDD70, 0xFFFD, -/* 1420 */ 0xDD68, 0xE1C2, 0xFFFD, 0xDD6C, 0xDD6E, 0xFFFD, 0xFFFD, 0xDD6B, -/* 1428 */ 0xFFFD, 0xB75B, 0xFFFD, 0xDD6A, 0xB75F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1430 */ 0xE1D2, 0xFFFD, 0xFFFD, 0xB75A, 0xBA40, 0xDD71, 0xE1C4, 0xFFFD, -/* 1438 */ 0xFFFD, 0xB758, 0xDD69, 0xDD6D, 0xB9FE, 0xB74F, 0xDD66, 0xDD67, -/* 1440 */ 0xBA41, 0xB757, 0xB759, 0xB756, 0xDD6F, 0xFFFD, 0xFFFD, 0xE1C8, -/* 1448 */ 0xE1C9, 0xE1CE, 0xBC7D, 0xE1D5, 0xFFFD, 0xBA47, 0xFFFD, 0xBA46, -/* 1450 */ 0xE1D0, 0xFFFD, 0xBC7C, 0xE1C5, 0xBA45, 0xFFFD, 0xE1D4, 0xBA43, -/* 1458 */ 0xBA44, 0xFFFD, 0xE1D1, 0xE5AA, 0xBC7A, 0xB46E, 0xFFFD, 0xE1D3, -/* 1460 */ 0xBCA3, 0xE1CB, 0xFFFD, 0xBC7B, 0xFFFD, 0xBCA2, 0xE1C6, 0xE1CA, -/* 1468 */ 0xE1C7, 0xE1CD, 0xBA48, 0xBC79, 0xBA42, 0xFFFD, 0xE57A, 0xE1CF, -/* 1470 */ 0xFFFD, 0xBCA1, 0xFFFD, 0xBCA4, 0xFFFD, 0xE1CC, 0xFFFD, 0xBC7E, -/* 1478 */ 0xE579, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE57E, 0xBECE, -/* 1480 */ 0xE578, 0xE9A3, 0xE5A9, 0xBCA8, 0xFFFD, 0xBCA6, 0xBECC, 0xE5A6, -/* 1488 */ 0xE5A2, 0xBCAC, 0xFFFD, 0xE978, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCAA, -/* 1490 */ 0xE5A1, 0xFFFD, 0xE976, 0xFFFD, 0xE5A5, 0xFFFD, 0xE5A8, 0xE57D, -/* 1498 */ 0xFFFD, 0xBCAB, 0xFFFD, 0xFFFD, 0xBCA5, 0xE977, 0xBECD, 0xE5A7, -/* 14A0 */ 0xBCA7, 0xBCA9, 0xE5A4, 0xBCAD, 0xE5A3, 0xE57C, 0xE57B, 0xBECB, -/* 14A8 */ 0xE5AB, 0xE97A, 0xECE0, 0xBED0, 0xFFFD, 0xE9A2, 0xFFFD, 0xE97E, -/* 14B0 */ 0xFFFD, 0xECE1, 0xFFFD, 0xBED1, 0xE9A1, 0xFFFD, 0xE97C, 0xC0B4, -/* 14B8 */ 0xECDF, 0xFFFD, 0xE979, 0xE97B, 0xC0B5, 0xBED3, 0xC0B3, 0xBED2, -/* 14C0 */ 0xC0B7, 0xE97D, 0xBECF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEFCF, 0xFFFD, 0xEFC7, 0xFFFD, 0xFFFD, -/* 14D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xECE7, 0xEFC8, 0xECE3, 0xFFFD, 0xFFFD, -/* 14D8 */ 0xC256, 0xECE5, 0xECE4, 0xC0B6, 0xECE2, 0xECE6, 0xEFD0, 0xEFCC, -/* 14E0 */ 0xEFCE, 0xFFFD, 0xEFC9, 0xEFCA, 0xFFFD, 0xEFCD, 0xEFCB, 0xC367, -/* 14E8 */ 0xFFFD, 0xFFFD, 0xC36A, 0xC369, 0xC368, 0xC461, 0xF44A, 0xC462, -/* 14F0 */ 0xF241, 0xC4DF, 0xF5CC, 0xC4E0, 0xC574, 0xC5CA, 0xF7D9, 0xFFFD, -/* 14F8 */ 0xF7DA, 0xF7DB, 0xFFFD, 0xFFFD, 0xF9BA, 0xA4E0, 0xC97C, 0xA5B3, -/* 1500 */ 0xFFFD, 0xA6A6, 0xA6A7, 0xA6A5, 0xFFFD, 0xA6A8, 0xA7DA, 0xA7D9, -/* 1508 */ 0xFFFD, 0xCCB1, 0xA9CF, 0xA9CE, 0xFFFD, 0xFFFD, 0xD1AF, 0xB1AD, -/* 1510 */ 0xB1AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xB475, 0xDD72, 0xB760, 0xB761, -/* 1518 */ 0xDD74, 0xDD76, 0xDD75, 0xFFFD, 0xE1D7, 0xFFFD, 0xE1D6, 0xBA49, -/* 1520 */ 0xE1D8, 0xFFFD, 0xE5AC, 0xBCAE, 0xFFFD, 0xBED4, 0xFFFD, 0xC0B8, -/* 1528 */ 0xC257, 0xC0B9, 0xFFFD, 0xA4E1, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAE6, -/* 1530 */ 0xFFFD, 0xFFFD, 0xCCB2, 0xA9D1, 0xA9D0, 0xA9D2, 0xABF3, 0xCED2, -/* 1538 */ 0xCED3, 0xFFFD, 0xFFFD, 0xD1B0, 0xAEB0, 0xB1AF, 0xB476, 0xD951, -/* 1540 */ 0xA4E2, 0xFFFD, 0xA47E, 0xA4E3, 0xFFFD, 0xC97D, 0xA5B7, 0xA5B6, -/* 1548 */ 0xA5B4, 0xA5B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xA6AB, 0xC9E9, 0xC9EB, -/* 1550 */ 0xA6AA, 0xC9E3, 0xFFFD, 0xC9E4, 0xFFFD, 0xC9EA, 0xC9E6, 0xC9E8, -/* 1558 */ 0xA6A9, 0xC9E5, 0xC9EC, 0xC9E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1560 */ 0xFFFD, 0xFFFD, 0xA7E1, 0xA7EA, 0xA7E8, 0xCAF0, 0xCAED, 0xCAF5, -/* 1568 */ 0xA7E6, 0xCAF6, 0xFFFD, 0xA7DF, 0xCAF3, 0xFFFD, 0xA7E5, 0xCAEF, -/* 1570 */ 0xCAEE, 0xA7E3, 0xCAF4, 0xA7E4, 0xA9D3, 0xA7DE, 0xCAF1, 0xFFFD, -/* 1578 */ 0xCAE7, 0xA7DB, 0xFFFD, 0xA7EE, 0xCAEC, 0xCAF2, 0xA7E0, 0xA7E2, -/* 1580 */ 0xFFFD, 0xCAE8, 0xFFFD, 0xCAE9, 0xCAEA, 0xFFFD, 0xA7ED, 0xA7E7, -/* 1588 */ 0xA7EC, 0xCAEB, 0xA7EB, 0xA7DD, 0xA7DC, 0xA7E9, 0xA9E1, 0xCCBE, -/* 1590 */ 0xCCB7, 0xA9DC, 0xA9EF, 0xCCB3, 0xCCBA, 0xCCBC, 0xCCBF, 0xA9EA, -/* 1598 */ 0xFFFD, 0xCCBB, 0xCCB4, 0xA9E8, 0xCCB8, 0xFFFD, 0xCCC0, 0xA9D9, -/* 15A0 */ 0xFFFD, 0xCCBD, 0xA9E3, 0xA9E2, 0xCCB6, 0xA9D7, 0xFFFD, 0xFFFD, -/* 15A8 */ 0xA9D8, 0xFFFD, 0xA9D6, 0xFFFD, 0xA9EE, 0xA9E6, 0xA9E0, 0xA9D4, -/* 15B0 */ 0xCCB9, 0xA9DF, 0xA9D5, 0xA9E7, 0xA9F0, 0xCED4, 0xA9E4, 0xCCB5, -/* 15B8 */ 0xA9DA, 0xA9DD, 0xA9DE, 0xFFFD, 0xA9EC, 0xA9ED, 0xA9EB, 0xA9E5, -/* 15C0 */ 0xA9E9, 0xA9DB, 0xABF4, 0xCEDA, 0xAC41, 0xABF8, 0xABFA, 0xAC40, -/* 15C8 */ 0xCEE6, 0xABFD, 0xD1B1, 0xAEB1, 0xAC43, 0xCED7, 0xCEDF, 0xABFE, -/* 15D0 */ 0xCEDE, 0xCEDB, 0xCEE3, 0xCEE5, 0xABF7, 0xABFB, 0xAC42, 0xAEB3, -/* 15D8 */ 0xCEE0, 0xABF9, 0xAC45, 0xCED9, 0xFFFD, 0xFFFD, 0xFFFD, 0xABFC, -/* 15E0 */ 0xAEB2, 0xABF6, 0xFFFD, 0xCED6, 0xCEDD, 0xCED5, 0xCED8, 0xCEDC, -/* 15E8 */ 0xD1B2, 0xAC44, 0xFFFD, 0xCEE1, 0xCEE2, 0xCEE4, 0xABF5, 0xAEC1, -/* 15F0 */ 0xD1BE, 0xAEBF, 0xAEC0, 0xD1B4, 0xD1C4, 0xFFFD, 0xAEB6, 0xFFFD, -/* 15F8 */ 0xFFFD, 0xD566, 0xD1C6, 0xD1C0, 0xFFFD, 0xD1B7, 0xFFFD, 0xD1C9, -/* 1600 */ 0xD1BA, 0xAEBC, 0xD57D, 0xD1BD, 0xAEBE, 0xAEB5, 0xFFFD, 0xD1CB, -/* 1608 */ 0xD1BF, 0xAEB8, 0xD1B8, 0xD1B5, 0xD1B6, 0xAEB9, 0xD1C5, 0xD1CC, -/* 1610 */ 0xAEBB, 0xD1BC, 0xD1BB, 0xAEC3, 0xAEC2, 0xAEB4, 0xAEBA, 0xAEBD, -/* 1618 */ 0xD1C8, 0xFFFD, 0xFFFD, 0xD1C2, 0xAEB7, 0xD1B3, 0xD1CA, 0xD1C1, -/* 1620 */ 0xD1C3, 0xD1C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD567, 0xFFFD, 0xB1B7, 0xB1CB, -/* 1630 */ 0xB1CA, 0xFFFD, 0xB1BF, 0xFFFD, 0xD579, 0xD575, 0xD572, 0xD5A6, -/* 1638 */ 0xB1BA, 0xB1B2, 0xFFFD, 0xFFFD, 0xD577, 0xB4A8, 0xB1B6, 0xD5A1, -/* 1640 */ 0xFFFD, 0xB1CC, 0xB1C9, 0xD57B, 0xD56A, 0xFFFD, 0xFFFD, 0xB1C8, -/* 1648 */ 0xD5A3, 0xD569, 0xB1BD, 0xB1C1, 0xD5A2, 0xFFFD, 0xD573, 0xB1C2, -/* 1650 */ 0xB1BC, 0xD568, 0xFFFD, 0xB478, 0xD5A5, 0xD571, 0xB1C7, 0xD574, -/* 1658 */ 0xD5A4, 0xB1C6, 0xFFFD, 0xD952, 0xFFFD, 0xB1B3, 0xD56F, 0xB1B8, -/* 1660 */ 0xB1C3, 0xFFFD, 0xB1BE, 0xD578, 0xD56E, 0xD56C, 0xD57E, 0xB1B0, -/* 1668 */ 0xB1C4, 0xB1B4, 0xB477, 0xD57C, 0xB1B5, 0xFFFD, 0xB1B1, 0xB1C0, -/* 1670 */ 0xB1BB, 0xB1B9, 0xD570, 0xB1C5, 0xD56D, 0xD57A, 0xD576, 0xD954, -/* 1678 */ 0xD953, 0xD56B, 0xD964, 0xFFFD, 0xB47A, 0xFFFD, 0xD96A, 0xD959, -/* 1680 */ 0xD967, 0xDD77, 0xB47D, 0xD96B, 0xD96E, 0xB47C, 0xD95C, 0xD96D, -/* 1688 */ 0xD96C, 0xB47E, 0xD955, 0xB479, 0xB4A3, 0xFFFD, 0xB4A1, 0xD969, -/* 1690 */ 0xFFFD, 0xD95F, 0xB4A5, 0xD970, 0xD968, 0xD971, 0xB4AD, 0xB4AB, -/* 1698 */ 0xD966, 0xD965, 0xFFFD, 0xD963, 0xD95D, 0xB4A4, 0xFFFD, 0xB4A2, -/* 16A0 */ 0xD1B9, 0xD956, 0xFFFD, 0xDDB7, 0xD957, 0xB47B, 0xB4AA, 0xDD79, -/* 16A8 */ 0xFFFD, 0xB4A6, 0xB4A7, 0xD958, 0xD96F, 0xDD78, 0xD960, 0xD95B, -/* 16B0 */ 0xB4A9, 0xD961, 0xD95E, 0xFFFD, 0xFFFD, 0xB4AE, 0xB770, 0xFFFD, -/* 16B8 */ 0xFFFD, 0xDD7C, 0xDDB1, 0xDDB6, 0xDDAA, 0xB76C, 0xDDBB, 0xB769, -/* 16C0 */ 0xDD7A, 0xFFFD, 0xDD7B, 0xB762, 0xB76B, 0xDDA4, 0xB76E, 0xB76F, -/* 16C8 */ 0xDDA5, 0xFFFD, 0xDDB2, 0xDDB8, 0xB76A, 0xFFFD, 0xB764, 0xDDA3, -/* 16D0 */ 0xDD7D, 0xDDBA, 0xDDA8, 0xDDA9, 0xDD7E, 0xDDB4, 0xDDAB, 0xDDB5, -/* 16D8 */ 0xDDAD, 0xFFFD, 0xB765, 0xE1D9, 0xB768, 0xB766, 0xDDB9, 0xDDB0, -/* 16E0 */ 0xDDAC, 0xFFFD, 0xFFFD, 0xDDA1, 0xBA53, 0xDDAF, 0xB76D, 0xDDA7, -/* 16E8 */ 0xFFFD, 0xDDA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xB767, 0xB763, 0xE1EE, -/* 16F0 */ 0xDDB3, 0xDDAE, 0xFFFD, 0xDDA2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E9, 0xFFFD, 0xE1DA, 0xE1E5, 0xFFFD, -/* 1700 */ 0xE1EC, 0xBA51, 0xB4AC, 0xE1EA, 0xBA4C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1708 */ 0xBA4B, 0xE1F1, 0xFFFD, 0xE1DB, 0xE1E8, 0xE1DC, 0xE1E7, 0xBA4F, -/* 1710 */ 0xE1EB, 0xD962, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1F2, 0xE1E3, 0xBA52, -/* 1718 */ 0xE5BA, 0xBCAF, 0xFFFD, 0xE1F0, 0xE1EF, 0xBA54, 0xE5AD, 0xBCB0, -/* 1720 */ 0xE5AE, 0xFFFD, 0xE1DF, 0xE1E0, 0xE1DD, 0xE1E2, 0xE1DE, 0xE1F3, -/* 1728 */ 0xBA4E, 0xBCB1, 0xBA50, 0xBA55, 0xFFFD, 0xE1E1, 0xFFFD, 0xE1ED, -/* 1730 */ 0xFFFD, 0xFFFD, 0xE1E6, 0xFFFD, 0xFFFD, 0xE5B1, 0xFFFD, 0xBA4A, -/* 1738 */ 0xBCB4, 0xE9AA, 0xE5B6, 0xE5B5, 0xE5B7, 0xFFFD, 0xFFFD, 0xE5B4, -/* 1740 */ 0xBCB5, 0xFFFD, 0xBCBB, 0xBCB8, 0xFFFD, 0xBCB9, 0xE5AF, 0xE5B2, -/* 1748 */ 0xE5BC, 0xBCC1, 0xBCBF, 0xFFFD, 0xE5B3, 0xD95A, 0xBCB2, 0xE5B9, -/* 1750 */ 0xE5B0, 0xFFFD, 0xBCC2, 0xE5B8, 0xBA4D, 0xBCB7, 0xE1E4, 0xFFFD, -/* 1758 */ 0xFFFD, 0xBCBA, 0xFFFD, 0xBCBE, 0xBCC0, 0xBCBD, 0xBCBC, 0xFFFD, -/* 1760 */ 0xBCB6, 0xE5BB, 0xBCB3, 0xBCC3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBED8, 0xBED9, 0xE9A9, 0xBEE2, 0xBEDF, -/* 1770 */ 0xFFFD, 0xBED6, 0xBEDD, 0xE9AB, 0xBEDB, 0xBED5, 0xFFFD, 0xBEDC, -/* 1778 */ 0xFFFD, 0xE9A8, 0xC0BB, 0xBED7, 0xFFFD, 0xBEDE, 0xC0BA, 0xE9A7, -/* 1780 */ 0xE9A6, 0xFFFD, 0xBEE0, 0xFFFD, 0xBEE1, 0xFFFD, 0xE9A5, 0xE9A4, -/* 1788 */ 0xC0BC, 0xE9AE, 0xBEDA, 0xE9AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1790 */ 0xC0BD, 0xFFFD, 0xC0C2, 0xECEA, 0xECEC, 0xFFFD, 0xC0BF, 0xFFFD, -/* 1798 */ 0xECED, 0xECE9, 0xFFFD, 0xECEB, 0xC0C0, 0xC0C3, 0xFFFD, 0xECE8, -/* 17A0 */ 0xC0BE, 0xC0C1, 0xC259, 0xE9AD, 0xC258, 0xFFFD, 0xFFFD, 0xC25E, -/* 17A8 */ 0xEFD4, 0xFFFD, 0xC25C, 0xC25D, 0xEFD7, 0xEFD3, 0xC25A, 0xEFD1, -/* 17B0 */ 0xC36B, 0xEFD5, 0xFFFD, 0xEFD6, 0xEFD2, 0xFFFD, 0xC25B, 0xF242, -/* 17B8 */ 0xFFFD, 0xF245, 0xFFFD, 0xFFFD, 0xF246, 0xF244, 0xF247, 0xC36C, -/* 17C0 */ 0xF243, 0xFFFD, 0xFFFD, 0xF44E, 0xC464, 0xF44D, 0xF44C, 0xF44B, -/* 17C8 */ 0xC463, 0xC465, 0xFFFD, 0xF5CD, 0xC4E2, 0xC4E1, 0xFFFD, 0xFFFD, -/* 17D0 */ 0xF6E1, 0xF6E0, 0xF6E3, 0xC5CB, 0xC575, 0xF7DD, 0xF6E2, 0xFFFD, -/* 17D8 */ 0xFFFD, 0xF7DC, 0xC5CD, 0xC5CC, 0xC5F3, 0xF8A9, 0xF8EF, 0xA4E4, -/* 17E0 */ 0xFFFD, 0xFFFD, 0xD972, 0xE9AF, 0xFFFD, 0xFFFD, 0xA6AC, 0xCAF7, -/* 17E8 */ 0xA7F1, 0xA7EF, 0xFFFD, 0xA7F0, 0xFFFD, 0xCCC1, 0xA9F1, 0xAC46, -/* 17F0 */ 0xFFFD, 0xCEE7, 0xFFFD, 0xCEE8, 0xFFFD, 0xAC47, 0xD1CE, 0xFFFD, -/* 17F8 */ 0xAEC4, 0xAEC5, 0xD1CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB1D3, -/* 1800 */ 0xFFFD, 0xB1CF, 0xFFFD, 0xD5A7, 0xB1D6, 0xB1D5, 0xB1CE, 0xB1D1, -/* 1808 */ 0xB1D4, 0xB1D0, 0xFFFD, 0xFFFD, 0xD976, 0xB1CD, 0xB4AF, 0xFFFD, -/* 1810 */ 0xFFFD, 0xFFFD, 0xB4B1, 0xB4B2, 0xD975, 0xD978, 0xB4B0, 0xD973, -/* 1818 */ 0xD977, 0xFFFD, 0xD974, 0xFFFD, 0xB771, 0xFFFD, 0xFFFD, 0xDDBC, -/* 1820 */ 0xFFFD, 0xFFFD, 0xBA56, 0xE1F4, 0xBEE3, 0xBCC4, 0xE5BD, 0xBCC5, -/* 1828 */ 0xBCC6, 0xE5BF, 0xE5BE, 0xE5C0, 0xE9B1, 0xFFFD, 0xFFFD, 0xE9B0, -/* 1830 */ 0xECEF, 0xECEE, 0xC0C4, 0xC0C5, 0xF248, 0xFFFD, 0xFFFD, 0xA4E5, -/* 1838 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD979, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1840 */ 0xB4B4, 0xB4B3, 0xDDBD, 0xFFFD, 0xEFD8, 0xC4E3, 0xF7DE, 0xA4E6, -/* 1848 */ 0xFFFD, 0xAEC6, 0xFFFD, 0xB1D8, 0xB1D7, 0xD97A, 0xD97B, 0xB772, -/* 1850 */ 0xE1F5, 0xBA57, 0xE9B2, 0xFFFD, 0xA4E7, 0xA5B8, 0xFFFD, 0xA9F2, -/* 1858 */ 0xCCC2, 0xFFFD, 0xCEE9, 0xAC48, 0xB1D9, 0xFFFD, 0xD97C, 0xB4B5, -/* 1860 */ 0xB773, 0xFFFD, 0xE5C1, 0xE5C2, 0xFFFD, 0xFFFD, 0xECF0, 0xC25F, -/* 1868 */ 0xF8F0, 0xA4E8, 0xFFFD, 0xCCC3, 0xA9F3, 0xAC49, 0xFFFD, 0xCEEA, -/* 1870 */ 0xFFFD, 0xAEC7, 0xD1D2, 0xD1D0, 0xD1D1, 0xAEC8, 0xD1CF, 0xFFFD, -/* 1878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB1DB, 0xB1DC, 0xD5A8, 0xB1DD, 0xB1DA, -/* 1880 */ 0xD97D, 0xFFFD, 0xD97E, 0xDDBE, 0xFFFD, 0xFFFD, 0xBA59, 0xBA58, -/* 1888 */ 0xFFFD, 0xFFFD, 0xECF1, 0xEFD9, 0xFFFD, 0xF24A, 0xF249, 0xF44F, -/* 1890 */ 0xFFFD, 0xC95E, 0xAC4A, 0xFFFD, 0xFFFD, 0xA4E9, 0xA5B9, 0xFFFD, -/* 1898 */ 0xA6AE, 0xA6AD, 0xFFFD, 0xFFFD, 0xA6AF, 0xA6B0, 0xC9EE, 0xC9ED, -/* 18A0 */ 0xCAF8, 0xA7F2, 0xCAFB, 0xCAFA, 0xCAF9, 0xCAFC, 0xFFFD, 0xFFFD, -/* 18A8 */ 0xFFFD, 0xFFFD, 0xA9F4, 0xCCC9, 0xCCC5, 0xCCCE, 0xFFFD, 0xFFFD, -/* 18B0 */ 0xA9FB, 0xFFFD, 0xA9F9, 0xCCCA, 0xCCC6, 0xCCCD, 0xA9F8, 0xAA40, -/* 18B8 */ 0xCCC8, 0xCCC4, 0xA9FE, 0xCCCB, 0xA9F7, 0xCCCC, 0xA9FA, 0xA9FC, -/* 18C0 */ 0xCCD0, 0xCCCF, 0xCCC7, 0xA9F6, 0xA9F5, 0xA9FD, 0xFFFD, 0xFFFD, -/* 18C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEEF, 0xCEF5, 0xFFFD, 0xAC50, -/* 18D0 */ 0xAC4D, 0xCEEC, 0xCEF1, 0xFFFD, 0xAC53, 0xAC4B, 0xCEF0, 0xAC4E, -/* 18D8 */ 0xAC51, 0xFFFD, 0xFFFD, 0xCEF3, 0xFFFD, 0xAC4C, 0xCEF8, 0xAC4F, -/* 18E0 */ 0xFFFD, 0xAC52, 0xCEED, 0xCEF2, 0xCEF6, 0xCEEE, 0xCEEB, 0xFFFD, -/* 18E8 */ 0xFFFD, 0xCEF7, 0xCEF4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18F0 */ 0xFFFD, 0xAED0, 0xAEC9, 0xAECC, 0xFFFD, 0xAECF, 0xFFFD, 0xD1D5, -/* 18F8 */ 0xFFFD, 0xAECA, 0xD1D3, 0xFFFD, 0xAECE, 0xFFFD, 0xFFFD, 0xAECB, -/* 1900 */ 0xFFFD, 0xD1D6, 0xAECD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1908 */ 0xFFFD, 0xD5AC, 0xB1DF, 0xD5AB, 0xD5AD, 0xB1DE, 0xB1E3, 0xD1D4, -/* 1910 */ 0xFFFD, 0xD5AA, 0xD5AE, 0xFFFD, 0xB1E0, 0xD5A9, 0xB1E2, 0xFFFD, -/* 1918 */ 0xB1E1, 0xFFFD, 0xD9A7, 0xFFFD, 0xD9A2, 0xFFFD, 0xB4B6, 0xB4BA, -/* 1920 */ 0xB4B7, 0xD9A5, 0xD9A8, 0xFFFD, 0xB4B8, 0xFFFD, 0xB4B9, 0xB4BE, -/* 1928 */ 0xDDC7, 0xD9A6, 0xB4BC, 0xD9A3, 0xD9A1, 0xFFFD, 0xB4BD, 0xFFFD, -/* 1930 */ 0xD9A4, 0xFFFD, 0xFFFD, 0xFFFD, 0xB779, 0xFFFD, 0xDDBF, 0xB776, -/* 1938 */ 0xB777, 0xB775, 0xDDC4, 0xDDC3, 0xDDC0, 0xB77B, 0xFFFD, 0xFFFD, -/* 1940 */ 0xDDC2, 0xB4BB, 0xFFFD, 0xFFFD, 0xDDC6, 0xDDC1, 0xB778, 0xB774, -/* 1948 */ 0xB77A, 0xDDC5, 0xFFFD, 0xFFFD, 0xFFFD, 0xBA5C, 0xFFFD, 0xE1F8, -/* 1950 */ 0xE1F7, 0xE1F6, 0xBA5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1958 */ 0xBA5B, 0xE5C5, 0xE5C8, 0xBCC8, 0xFFFD, 0xFFFD, 0xBCC7, 0xE5C9, -/* 1960 */ 0xE5C4, 0xBCCA, 0xE5C6, 0xFFFD, 0xBCC9, 0xE5C3, 0xFFFD, 0xE5C7, -/* 1968 */ 0xBEE9, 0xBEE6, 0xE9BB, 0xE9BA, 0xFFFD, 0xE9B9, 0xE9B4, 0xFFFD, -/* 1970 */ 0xE9B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEE7, 0xFFFD, 0xBEE4, 0xBEE8, -/* 1978 */ 0xE9B3, 0xBEE5, 0xE9B6, 0xE9B7, 0xE9BC, 0xFFFD, 0xFFFD, 0xE9B8, -/* 1980 */ 0xFFFD, 0xFFFD, 0xECF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0C7, 0xFFFD, -/* 1988 */ 0xEFDC, 0xC0C6, 0xEFDA, 0xEFDB, 0xC260, 0xC36E, 0xF24B, 0xFFFD, -/* 1990 */ 0xC36D, 0xFFFD, 0xFFFD, 0xF451, 0xF452, 0xFFFD, 0xC466, 0xFFFD, -/* 1998 */ 0xF450, 0xC4E4, 0xFFFD, 0xF7DF, 0xC5CE, 0xF8AA, 0xF8AB, 0xFFFD, -/* 19A0 */ 0xA4EA, 0xFFFD, 0xA6B1, 0xA6B2, 0xA7F3, 0xFFFD, 0xCCD1, 0xAC54, -/* 19A8 */ 0xAED1, 0xB1E4, 0xFFFD, 0xFFFD, 0xB0D2, 0xFFFD, 0xB4BF, 0xB4C0, -/* 19B0 */ 0xB3CC, 0xD9A9, 0xFFFD, 0xB77C, 0xE1FA, 0xE1F9, 0xFFFD, 0xFFFD, -/* 19B8 */ 0xA4EB, 0xA6B3, 0xCCD2, 0xAA42, 0xFFFD, 0xAA41, 0xFFFD, 0xCEF9, -/* 19C0 */ 0xCEFA, 0xFFFD, 0xD1D7, 0xD1D8, 0xAED2, 0xAED3, 0xFFFD, 0xAED4, -/* 19C8 */ 0xD5AF, 0xFFFD, 0xFFFD, 0xB1E6, 0xFFFD, 0xB4C2, 0xFFFD, 0xB4C1, -/* 19D0 */ 0xDDC8, 0xDF7A, 0xE1FB, 0xE9BD, 0xFFFD, 0xFFFD, 0xC261, 0xC467, -/* 19D8 */ 0xA4EC, 0xFFFD, 0xA5BC, 0xA5BD, 0xA5BB, 0xA5BE, 0xA5BA, 0xFFFD, -/* 19E0 */ 0xFFFD, 0xA6B6, 0xFFFD, 0xC9F6, 0xA6B5, 0xA6B7, 0xFFFD, 0xFFFD, -/* 19E8 */ 0xC9F1, 0xC9F0, 0xC9F3, 0xC9F2, 0xC9F5, 0xA6B4, 0xC9EF, 0xC9F4, -/* 19F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAFD, 0xA7FD, 0xCAFE, -/* 19F8 */ 0xCB43, 0xA7FC, 0xFFFD, 0xCB47, 0xCB42, 0xCB45, 0xA7F5, 0xA7F6, -/* 1A00 */ 0xA7F7, 0xA7F8, 0xFFFD, 0xA840, 0xFFFD, 0xCB41, 0xA7FA, 0xA841, -/* 1A08 */ 0xFFFD, 0xCB40, 0xCB46, 0xFFFD, 0xA7F9, 0xCB44, 0xA7FB, 0xA7F4, -/* 1A10 */ 0xA7FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A18 */ 0xFFFD, 0xFFFD, 0xAA57, 0xFFFD, 0xCCD4, 0xAA43, 0xFFFD, 0xAA4D, -/* 1A20 */ 0xAA4E, 0xAA46, 0xAA58, 0xAA48, 0xCCDC, 0xAA53, 0xCCD7, 0xAA49, -/* 1A28 */ 0xCCE6, 0xCCE7, 0xCCDF, 0xCCD8, 0xAA56, 0xCCE4, 0xAA51, 0xAA4F, -/* 1A30 */ 0xFFFD, 0xCCE5, 0xFFFD, 0xCCE3, 0xCCDB, 0xCCD3, 0xCCDA, 0xAA4A, -/* 1A38 */ 0xFFFD, 0xAA50, 0xFFFD, 0xAA44, 0xCCDE, 0xCCDD, 0xCCD5, 0xFFFD, -/* 1A40 */ 0xAA52, 0xCCE1, 0xCCD6, 0xAA55, 0xCCE8, 0xAA45, 0xFFFD, 0xAA4C, -/* 1A48 */ 0xCCD9, 0xCCE2, 0xAA54, 0xFFFD, 0xAA47, 0xAA4B, 0xFFFD, 0xCCE0, -/* 1A50 */ 0xCF5B, 0xAC5C, 0xAC69, 0xFFFD, 0xCF56, 0xCF4C, 0xAC62, 0xCF4A, -/* 1A58 */ 0xAC5B, 0xCF45, 0xAC65, 0xCF52, 0xCEFE, 0xCF41, 0xFFFD, 0xFFFD, -/* 1A60 */ 0xFFFD, 0xFFFD, 0xCF44, 0xCEFB, 0xCF51, 0xCF61, 0xAC60, 0xCF46, -/* 1A68 */ 0xCF58, 0xFFFD, 0xCEFD, 0xCF5F, 0xCF60, 0xCF63, 0xCF5A, 0xCF4B, -/* 1A70 */ 0xCF53, 0xAC66, 0xAC59, 0xAC61, 0xAC6D, 0xAC56, 0xAC58, 0xFFFD, -/* 1A78 */ 0xFFFD, 0xFFFD, 0xCF43, 0xAC6A, 0xAC63, 0xCF5D, 0xCF40, 0xAC6C, -/* 1A80 */ 0xAC67, 0xCF49, 0xFFFD, 0xFFFD, 0xAC6B, 0xCF50, 0xCF48, 0xAC64, -/* 1A88 */ 0xCF5C, 0xCF54, 0xFFFD, 0xAC5E, 0xCF62, 0xCF47, 0xAC5A, 0xCF59, -/* 1A90 */ 0xCF4F, 0xAC5F, 0xCF55, 0xAC57, 0xCEFC, 0xAC68, 0xAEE3, 0xAC5D, -/* 1A98 */ 0xCF4E, 0xCF4D, 0xCF42, 0xFFFD, 0xCF5E, 0xFFFD, 0xCF57, 0xFFFD, -/* 1AA0 */ 0xFFFD, 0xAC55, 0xD1EC, 0xAEEA, 0xD1ED, 0xFFFD, 0xD1E1, 0xAEDF, -/* 1AA8 */ 0xAEEB, 0xFFFD, 0xD1DA, 0xFFFD, 0xD1E3, 0xD1EB, 0xFFFD, 0xD1D9, -/* 1AB0 */ 0xD1F4, 0xAED5, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1F3, 0xD1EE, 0xFFFD, -/* 1AB8 */ 0xD1EF, 0xAEDD, 0xAEE8, 0xD1E5, 0xFFFD, 0xD1E6, 0xD1F0, 0xD1E7, -/* 1AC0 */ 0xFFFD, 0xD1E2, 0xD1DC, 0xD1DD, 0xD1EA, 0xD1E4, 0xFFFD, 0xFFFD, -/* 1AC8 */ 0xAED6, 0xAEDA, 0xD1F2, 0xD1DE, 0xAEE6, 0xAEE2, 0xFFFD, 0xFFFD, -/* 1AD0 */ 0xAEE5, 0xAEEC, 0xAEDB, 0xAEE7, 0xD1E9, 0xAEE9, 0xAED8, 0xFFFD, -/* 1AD8 */ 0xAED7, 0xD1DB, 0xFFFD, 0xD1DF, 0xAEE0, 0xD1F1, 0xD1E8, 0xD1E0, -/* 1AE0 */ 0xAEE4, 0xAEE1, 0xFFFD, 0xAED9, 0xAEDC, 0xD5C4, 0xFFFD, 0xD5B4, -/* 1AE8 */ 0xD5B5, 0xD5B9, 0xFFFD, 0xD5C8, 0xD5C5, 0xFFFD, 0xD5BE, 0xD5BD, -/* 1AF0 */ 0xB1ED, 0xD5C1, 0xD5D0, 0xD5B0, 0xFFFD, 0xD5D1, 0xD5C3, 0xD5D5, -/* 1AF8 */ 0xD5C9, 0xB1EC, 0xD5C7, 0xB1E7, 0xB1FC, 0xB1F2, 0xFFFD, 0xB1F6, -/* 1B00 */ 0xB1F5, 0xD5B1, 0xFFFD, 0xD5CE, 0xD5D4, 0xD5CC, 0xD5D3, 0xFFFD, -/* 1B08 */ 0xFFFD, 0xD5C0, 0xD5B2, 0xD5D2, 0xD5C2, 0xB1EA, 0xB1F7, 0xFFFD, -/* 1B10 */ 0xD5CB, 0xB1F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5CA, 0xD5B3, 0xB1F8, -/* 1B18 */ 0xFFFD, 0xB1FA, 0xD5CD, 0xB1FB, 0xB1E9, 0xD5BA, 0xD5CF, 0xFFFD, -/* 1B20 */ 0xFFFD, 0xB1EF, 0xB1F9, 0xD5BC, 0xD5C6, 0xD5B7, 0xD5BB, 0xB1F4, -/* 1B28 */ 0xD5B6, 0xB1E8, 0xB1F1, 0xB1EE, 0xD5BF, 0xAEDE, 0xD9C0, 0xB1EB, -/* 1B30 */ 0xB1F3, 0xFFFD, 0xD9C3, 0xD9D9, 0xD9CE, 0xB4D6, 0xFFFD, 0xB4D1, -/* 1B38 */ 0xD9BD, 0xB4D2, 0xD9CD, 0xFFFD, 0xD9C6, 0xD9D3, 0xB4CE, 0xD9AB, -/* 1B40 */ 0xD9D5, 0xB4C4, 0xD9B3, 0xB4C7, 0xB4C6, 0xFFFD, 0xB4D7, 0xFFFD, -/* 1B48 */ 0xD9AD, 0xD9CF, 0xD9D0, 0xB4C9, 0xB4C5, 0xD9BB, 0xFFFD, 0xB4D0, -/* 1B50 */ 0xD9B6, 0xFFFD, 0xD9D1, 0xB4CC, 0xD9C9, 0xD9D6, 0xD9B0, 0xD9B5, -/* 1B58 */ 0xD9AF, 0xFFFD, 0xB4CB, 0xD9C2, 0xDDDE, 0xD9B1, 0xB4CF, 0xD9BA, -/* 1B60 */ 0xD9D2, 0xB4CA, 0xD9B7, 0xD9B4, 0xD9C5, 0xB4CD, 0xB4C3, 0xB4D9, -/* 1B68 */ 0xD9C8, 0xD9C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B70 */ 0xD9AC, 0xB4C8, 0xD9D4, 0xD9BC, 0xD9BE, 0xFFFD, 0xD9CB, 0xD9CA, -/* 1B78 */ 0xD9AA, 0xB4D3, 0xB4D5, 0xD9B2, 0xD9B9, 0xD9C1, 0xB4D4, 0xD9B8, -/* 1B80 */ 0xD9C4, 0xD9D7, 0xFFFD, 0xD9CC, 0xD9D8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B88 */ 0xFFFD, 0xD9AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDF2, 0xB7A6, -/* 1B90 */ 0xFFFD, 0xDDF0, 0xDDDB, 0xDDE0, 0xDDD9, 0xFFFD, 0xDDEC, 0xDDCB, -/* 1B98 */ 0xDDD2, 0xFFFD, 0xDDEA, 0xDDF4, 0xDDDC, 0xFFFD, 0xDDCF, 0xDDE2, -/* 1BA0 */ 0xDDE7, 0xDDD3, 0xFFFD, 0xDDE4, 0xDDD0, 0xFFFD, 0xFFFD, 0xDDD7, -/* 1BA8 */ 0xDDD8, 0xB7A8, 0xDDEB, 0xDDE9, 0xFFFD, 0xDDCC, 0xDDEE, 0xFFFD, -/* 1BB0 */ 0xDDEF, 0xDDF1, 0xB7AC, 0xB7A4, 0xFFFD, 0xD5B8, 0xDDD4, 0xDDE6, -/* 1BB8 */ 0xDDD5, 0xB7A1, 0xB7B1, 0xDDED, 0xB7AF, 0xB7AB, 0xDDCA, 0xB7A3, -/* 1BC0 */ 0xFFFD, 0xDDCD, 0xB7B0, 0xFFFD, 0xDDDD, 0xDDC9, 0xFFFD, 0xB7A9, -/* 1BC8 */ 0xDDE1, 0xDDD1, 0xB7AA, 0xDDDA, 0xB77E, 0xB4D8, 0xDDE3, 0xD9BF, -/* 1BD0 */ 0xDDCE, 0xFFFD, 0xFFFD, 0xDDE8, 0xB7A5, 0xDDE5, 0xB7A2, 0xDDDF, -/* 1BD8 */ 0xB7AD, 0xDDD6, 0xDDF3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BE0 */ 0xFFFD, 0xB7A7, 0xDEC6, 0xFFFD, 0xFFFD, 0xB7AE, 0xFFFD, 0xFFFD, -/* 1BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE24A, 0xE248, 0xFFFD, 0xE25E, -/* 1BF0 */ 0xE246, 0xFFFD, 0xE258, 0xB77D, 0xBA5F, 0xE242, 0xE25D, 0xFFFD, -/* 1BF8 */ 0xE247, 0xE255, 0xBA64, 0xBA5D, 0xFFFD, 0xE25B, 0xFFFD, 0xE240, -/* 1C00 */ 0xE25A, 0xFFFD, 0xBA6F, 0xE251, 0xE261, 0xBA6D, 0xE249, 0xBA5E, -/* 1C08 */ 0xE24B, 0xE259, 0xBA67, 0xE244, 0xBA6B, 0xBA61, 0xE24D, 0xE243, -/* 1C10 */ 0xE1FC, 0xFFFD, 0xE257, 0xBA68, 0xE260, 0xE1FD, 0xBA65, 0xFFFD, -/* 1C18 */ 0xE253, 0xFFFD, 0xBA66, 0xE245, 0xE250, 0xE24C, 0xE24E, 0xFFFD, -/* 1C20 */ 0xBA60, 0xE25F, 0xBA6E, 0xE24F, 0xFFFD, 0xE262, 0xFFFD, 0xFFFD, -/* 1C28 */ 0xE1FE, 0xE254, 0xBA63, 0xBA6C, 0xBA6A, 0xE241, 0xE256, 0xBA69, -/* 1C30 */ 0xFFFD, 0xFFFD, 0xBA62, 0xE252, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C38 */ 0xE25C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C40 */ 0xFFFD, 0xE5D5, 0xFFFD, 0xE5D1, 0xE5CD, 0xE5E1, 0xE5DE, 0xBCCD, -/* 1C48 */ 0xFFFD, 0xFFFD, 0xE5E5, 0xE5D4, 0xBCD8, 0xE5DB, 0xFFFD, 0xFFFD, -/* 1C50 */ 0xE5D0, 0xE5DA, 0xBCD5, 0xE5EE, 0xFFFD, 0xE5EB, 0xE5DD, 0xE5CE, -/* 1C58 */ 0xFFFD, 0xFFFD, 0xE5E2, 0xE5E4, 0xBCD1, 0xE5D8, 0xE5D3, 0xE5CA, -/* 1C60 */ 0xBCCE, 0xBCD6, 0xFFFD, 0xE5E7, 0xBCD7, 0xE5CB, 0xE5ED, 0xE5E0, -/* 1C68 */ 0xE5E6, 0xBCD4, 0xFFFD, 0xFFFD, 0xE5E3, 0xFFFD, 0xE5EA, 0xFFFD, -/* 1C70 */ 0xBCD9, 0xFFFD, 0xBCD3, 0xE5DC, 0xE5CF, 0xE5EF, 0xE5CC, 0xE5E8, -/* 1C78 */ 0xBCD0, 0xFFFD, 0xE5D6, 0xFFFD, 0xE5D7, 0xBCCF, 0xBCCC, 0xE5D2, -/* 1C80 */ 0xBCD2, 0xFFFD, 0xBCCB, 0xFFFD, 0xE5E9, 0xE5EC, 0xE5D9, 0xE9CA, -/* 1C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C90 */ 0xFFFD, 0xE9C2, 0xFFFD, 0xE9BE, 0xBEF6, 0xFFFD, 0xFFFD, 0xBEEB, -/* 1C98 */ 0xBEF0, 0xBEEC, 0xE9CC, 0xE9D7, 0xBEEA, 0xE9C4, 0xE9CD, 0xE5DF, -/* 1CA0 */ 0xE9CE, 0xFFFD, 0xFFFD, 0xBEF1, 0xFFFD, 0xE9DD, 0xBEF5, 0xBEF8, -/* 1CA8 */ 0xE9C0, 0xFFFD, 0xBEF4, 0xFFFD, 0xE9DB, 0xE9DC, 0xE9D2, 0xE9D1, -/* 1CB0 */ 0xE9C9, 0xFFFD, 0xFFFD, 0xE9D3, 0xE9DA, 0xE9D9, 0xFFFD, 0xBEEF, -/* 1CB8 */ 0xBEED, 0xE9CB, 0xE9C8, 0xFFFD, 0xE9C5, 0xE9D8, 0xBEF7, 0xE9D6, -/* 1CC0 */ 0xBEF3, 0xBEF2, 0xFFFD, 0xE9D0, 0xFFFD, 0xE9BF, 0xE9C1, 0xE9C3, -/* 1CC8 */ 0xE9D5, 0xE9CF, 0xBEEE, 0xFFFD, 0xE9C6, 0xFFFD, 0xE9D4, 0xFFFD, -/* 1CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9C7, 0xFFFD, 0xFFFD, -/* 1CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0CF, 0xED45, 0xC0C8, -/* 1CE0 */ 0xECF5, 0xFFFD, 0xED41, 0xC0CA, 0xED48, 0xFFFD, 0xECFC, 0xFFFD, -/* 1CE8 */ 0xECF7, 0xFFFD, 0xFFFD, 0xED49, 0xECF3, 0xECFE, 0xFFFD, 0xC0D1, -/* 1CF0 */ 0xED44, 0xED4A, 0xECFD, 0xC0C9, 0xED40, 0xECF4, 0xC0D0, 0xFFFD, -/* 1CF8 */ 0xFFFD, 0xED47, 0xECF9, 0xC0CC, 0xFFFD, 0xECFB, 0xECF8, 0xC0D2, -/* 1D00 */ 0xECFA, 0xC0CB, 0xC0CE, 0xED43, 0xECF6, 0xED46, 0xFFFD, 0xED42, -/* 1D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC263, 0xEFE7, 0xC268, 0xC269, 0xFFFD, -/* 1D10 */ 0xFFFD, 0xFFFD, 0xC262, 0xEFE6, 0xFFFD, 0xEFE3, 0xEFE4, 0xC266, -/* 1D18 */ 0xEFDE, 0xEFE2, 0xC265, 0xFFFD, 0xEFDF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D20 */ 0xFFFD, 0xC267, 0xC264, 0xFFFD, 0xEFDD, 0xEFE1, 0xEFE5, 0xFFFD, -/* 1D28 */ 0xFFFD, 0xFFFD, 0xF251, 0xF24E, 0xF257, 0xFFFD, 0xF256, 0xF254, -/* 1D30 */ 0xF24F, 0xFFFD, 0xC372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D38 */ 0xF250, 0xC371, 0xC0CD, 0xF253, 0xC370, 0xF258, 0xF252, 0xF24D, -/* 1D40 */ 0xEFE0, 0xFFFD, 0xFFFD, 0xFFFD, 0xC36F, 0xFFFD, 0xF24C, 0xF456, -/* 1D48 */ 0xFFFD, 0xF455, 0xF255, 0xC468, 0xFFFD, 0xF459, 0xF45A, 0xF454, -/* 1D50 */ 0xF458, 0xFFFD, 0xF453, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5D1, -/* 1D58 */ 0xF457, 0xC4E7, 0xC4E5, 0xF5CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5D2, -/* 1D60 */ 0xFFFD, 0xF5CE, 0xF5D0, 0xC4E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6E5, -/* 1D68 */ 0xF6E6, 0xC576, 0xF6E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7E2, 0xC5CF, -/* 1D70 */ 0xF7E0, 0xF7E1, 0xF8AC, 0xFFFD, 0xFFFD, 0xC656, 0xF8F3, 0xF8F1, -/* 1D78 */ 0xF8F2, 0xF8F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9BB, 0xFFFD, 0xA4ED, -/* 1D80 */ 0xA6B8, 0xFFFD, 0xAA59, 0xFFFD, 0xCCE9, 0xFFFD, 0xFFFD, 0xCF64, -/* 1D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD1F5, 0xD1F7, 0xFFFD, 0xD1F6, 0xFFFD, -/* 1D90 */ 0xD1F8, 0xB1FD, 0xD5D7, 0xD1F9, 0xFFFD, 0xD5D6, 0xD5D8, 0xD5D9, -/* 1D98 */ 0xD9DA, 0xB4DB, 0xD9DB, 0xD9DD, 0xB4DC, 0xB4DA, 0xD9DC, 0xFFFD, -/* 1DA0 */ 0xDDFA, 0xDDF8, 0xDDF7, 0xFFFD, 0xDDF6, 0xDDF5, 0xB7B2, 0xDDF9, -/* 1DA8 */ 0xBA70, 0xE263, 0xE265, 0xBA71, 0xE264, 0xBCDB, 0xFFFD, 0xBCDA, -/* 1DB0 */ 0xE5F0, 0xFFFD, 0xFFFD, 0xE9DF, 0xE9DE, 0xE9E0, 0xFFFD, 0xFFFD, -/* 1DB8 */ 0xBEF9, 0xFFFD, 0xED4B, 0xC0D3, 0xFFFD, 0xEFE8, 0xC26A, 0xF259, -/* 1DC0 */ 0xC577, 0xA4EE, 0xA5BF, 0xA6B9, 0xA842, 0xAA5A, 0xAA5B, 0xFFFD, -/* 1DC8 */ 0xFFFD, 0xAC6E, 0xFFFD, 0xFFFD, 0xD1FA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DD0 */ 0xFFFD, 0xB7B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6D1, 0xBEFA, 0xC26B, -/* 1DD8 */ 0xA4EF, 0xFFFD, 0xA6BA, 0xFFFD, 0xFFFD, 0xCCEB, 0xAA5C, 0xCCEA, -/* 1DE0 */ 0xFFFD, 0xCF65, 0xAC6F, 0xCF66, 0xFFFD, 0xAC70, 0xFFFD, 0xD1FC, -/* 1DE8 */ 0xAEEE, 0xAEED, 0xFFFD, 0xD5DE, 0xD5DC, 0xD5DD, 0xD5DB, 0xFFFD, -/* 1DF0 */ 0xD5DA, 0xFFFD, 0xFFFD, 0xD9DE, 0xD9E1, 0xB4DE, 0xD9DF, 0xB4DD, -/* 1DF8 */ 0xD9E0, 0xFFFD, 0xDDFB, 0xFFFD, 0xFFFD, 0xE266, 0xE267, 0xE268, -/* 1E00 */ 0xFFFD, 0xE5F3, 0xE5F2, 0xBCDC, 0xE5F1, 0xE5F4, 0xE9E1, 0xFFFD, -/* 1E08 */ 0xFFFD, 0xE9E2, 0xE9E3, 0xFFFD, 0xED4C, 0xC0D4, 0xC26C, 0xF25A, -/* 1E10 */ 0xFFFD, 0xC4E8, 0xC95F, 0xFFFD, 0xAC71, 0xCF67, 0xAEEF, 0xFFFD, -/* 1E18 */ 0xFFFD, 0xB1FE, 0xFFFD, 0xB4DF, 0xD9E2, 0xFFFD, 0xB7B5, 0xB7B4, -/* 1E20 */ 0xFFFD, 0xFFFD, 0xE269, 0xE26A, 0xBCDD, 0xBCDE, 0xE9E5, 0xE9E4, -/* 1E28 */ 0xEFE9, 0xF7E3, 0xA4F0, 0xC960, 0xA5C0, 0xFFFD, 0xA843, 0xCB48, -/* 1E30 */ 0xFFFD, 0xAC72, 0xB7B6, 0xA4F1, 0xFFFD, 0xCF68, 0xAC73, 0xCF69, -/* 1E38 */ 0xFFFD, 0xC0D5, 0xA4F2, 0xFFFD, 0xFFFD, 0xCCEC, 0xFFFD, 0xCF6A, -/* 1E40 */ 0xFFFD, 0xD242, 0xD241, 0xD1FE, 0xFFFD, 0xD1FD, 0xD243, 0xD240, -/* 1E48 */ 0xFFFD, 0xFFFD, 0xB240, 0xB241, 0xFFFD, 0xFFFD, 0xB4E0, 0xD9E3, -/* 1E50 */ 0xFFFD, 0xD9E4, 0xD9E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xDE41, 0xDE42, -/* 1E58 */ 0xDE40, 0xFFFD, 0xDDFD, 0xDDFE, 0xB7B7, 0xE26B, 0xE5F7, 0xE5F6, -/* 1E60 */ 0xE5F5, 0xE5F8, 0xE9E7, 0xE9E6, 0xBEFB, 0xE9E8, 0xFFFD, 0xC0D6, -/* 1E68 */ 0xED4D, 0xFFFD, 0xEFEA, 0xF25B, 0xF6E7, 0xFFFD, 0xA4F3, 0xA5C2, -/* 1E70 */ 0xA5C1, 0xFFFD, 0xAA5D, 0xC961, 0xC97E, 0xA6BB, 0xFFFD, 0xC9F7, -/* 1E78 */ 0xCB49, 0xCB4A, 0xAA5E, 0xFFFD, 0xCCED, 0xFFFD, 0xAC74, 0xCF6B, -/* 1E80 */ 0xCF6C, 0xFFFD, 0xAEF0, 0xAEF4, 0xD244, 0xAEF3, 0xAEF1, 0xAEF2, -/* 1E88 */ 0xFFFD, 0xD5DF, 0xB242, 0xB4E3, 0xFFFD, 0xB4E1, 0xB4E2, 0xD9E6, -/* 1E90 */ 0xFFFD, 0xFFFD, 0xBA72, 0xA4F4, 0xFFFD, 0xC9A1, 0xFFFD, 0xA5C3, -/* 1E98 */ 0xFFFD, 0xFFFD, 0xC9A4, 0xFFFD, 0xFFFD, 0xA5C6, 0xC9A3, 0xA5C5, -/* 1EA0 */ 0xA5C4, 0xA844, 0xC9A2, 0xFFFD, 0xFFFD, 0xC9F8, 0xFFFD, 0xFFFD, -/* 1EA8 */ 0xFFFD, 0xC9FC, 0xC9FE, 0xCA40, 0xA6C5, 0xA6C6, 0xC9FB, 0xA6C1, -/* 1EB0 */ 0xFFFD, 0xC9F9, 0xFFFD, 0xC9FD, 0xA6C2, 0xFFFD, 0xA6BD, 0xFFFD, -/* 1EB8 */ 0xA6BE, 0xFFFD, 0xA6C4, 0xC9FA, 0xA6BC, 0xA845, 0xA6BF, 0xA6C0, -/* 1EC0 */ 0xA6C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xCB5B, 0xCB59, 0xCB4C, 0xA851, -/* 1EC8 */ 0xCB53, 0xA84C, 0xCB4D, 0xFFFD, 0xCB55, 0xFFFD, 0xCB52, 0xA84F, -/* 1ED0 */ 0xCB51, 0xA856, 0xCB5A, 0xA858, 0xFFFD, 0xA85A, 0xFFFD, 0xCB4B, -/* 1ED8 */ 0xFFFD, 0xA84D, 0xCB5C, 0xFFFD, 0xA854, 0xA857, 0xFFFD, 0xCD45, -/* 1EE0 */ 0xA847, 0xA85E, 0xA855, 0xCB4E, 0xA84A, 0xA859, 0xCB56, 0xA848, -/* 1EE8 */ 0xA849, 0xCD43, 0xCB4F, 0xA850, 0xA85B, 0xCB5D, 0xCB50, 0xA84E, -/* 1EF0 */ 0xFFFD, 0xA853, 0xCCEE, 0xA85C, 0xCB57, 0xA852, 0xFFFD, 0xA85D, -/* 1EF8 */ 0xA846, 0xCB54, 0xA84B, 0xCB58, 0xCD44, 0xAA6A, 0xAA7A, 0xCCF5, -/* 1F00 */ 0xAA71, 0xFFFD, 0xCD4B, 0xAA62, 0xFFFD, 0xAA65, 0xCD42, 0xFFFD, -/* 1F08 */ 0xCCF3, 0xCCF7, 0xAA6D, 0xAA6F, 0xCCFA, 0xAA76, 0xAA68, 0xAA66, -/* 1F10 */ 0xAA67, 0xAA75, 0xCD47, 0xAA70, 0xCCF9, 0xCCFB, 0xAA6E, 0xAA73, -/* 1F18 */ 0xCCFC, 0xCD4A, 0xFFFD, 0xAC75, 0xAA79, 0xFFFD, 0xAA63, 0xCD49, -/* 1F20 */ 0xFFFD, 0xCD4D, 0xCCF8, 0xCD4F, 0xCD40, 0xAA6C, 0xCCF4, 0xAA6B, -/* 1F28 */ 0xAA7D, 0xAA72, 0xFFFD, 0xCCF2, 0xCF75, 0xAA78, 0xAA7C, 0xCD41, -/* 1F30 */ 0xCD46, 0xFFFD, 0xAA7E, 0xAA77, 0xAA69, 0xAA5F, 0xFFFD, 0xAA64, -/* 1F38 */ 0xFFFD, 0xCCF6, 0xAA60, 0xCD4E, 0xFFFD, 0xCCF0, 0xCCEF, 0xCCFD, -/* 1F40 */ 0xCCF1, 0xAA7B, 0xAEF5, 0xAA74, 0xCCFE, 0xAA61, 0xFFFD, 0xACA6, -/* 1F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCD4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F50 */ 0xFFFD, 0xFFFD, 0xCF7C, 0xCFA1, 0xFFFD, 0xCFA4, 0xCF77, 0xFFFD, -/* 1F58 */ 0xFFFD, 0xCFA7, 0xCFAA, 0xCFAC, 0xCF74, 0xAC76, 0xAC7B, 0xD249, -/* 1F60 */ 0xACAD, 0xCFA5, 0xCFAD, 0xCF7B, 0xCF73, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F68 */ 0xD264, 0xAC7E, 0xCFA2, 0xCF78, 0xCF7A, 0xACA5, 0xFFFD, 0xCF7D, -/* 1F70 */ 0xAC7D, 0xCF70, 0xCFA8, 0xFFFD, 0xCFAB, 0xFFFD, 0xFFFD, 0xAC7A, -/* 1F78 */ 0xFFFD, 0xACA8, 0xCF6D, 0xACAA, 0xAC78, 0xACAE, 0xCFA9, 0xCF6F, -/* 1F80 */ 0xACAB, 0xD25E, 0xCD48, 0xAC7C, 0xAC77, 0xCF76, 0xCF6E, 0xACAC, -/* 1F88 */ 0xACA4, 0xCFA3, 0xACA9, 0xACA7, 0xCF79, 0xACA1, 0xCF71, 0xACA2, -/* 1F90 */ 0xACA3, 0xCF72, 0xCFA6, 0xAC79, 0xCF7E, 0xD24C, 0xAEFD, 0xAF43, -/* 1F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD255, 0xD25B, 0xD257, 0xD24A, 0xD24D, -/* 1FA0 */ 0xD246, 0xD247, 0xAF4A, 0xAEFA, 0xD256, 0xD25F, 0xAF45, 0xAEF6, -/* 1FA8 */ 0xFFFD, 0xAF40, 0xD24E, 0xAF42, 0xD24F, 0xD259, 0xFFFD, 0xFFFD, -/* 1FB0 */ 0xFFFD, 0xAF44, 0xD268, 0xD248, 0xAEFC, 0xAEFB, 0xAF48, 0xD245, -/* 1FB8 */ 0xD266, 0xD25A, 0xD267, 0xD261, 0xD253, 0xD262, 0xFFFD, 0xD25C, -/* 1FC0 */ 0xD265, 0xD263, 0xAF49, 0xD254, 0xAEF9, 0xAEF8, 0xAF41, 0xAF47, -/* 1FC8 */ 0xD260, 0xAF46, 0xD251, 0xB243, 0xFFFD, 0xD269, 0xD250, 0xD24B, -/* 1FD0 */ 0xAEFE, 0xAF4B, 0xAEF7, 0xFFFD, 0xD258, 0xD25D, 0xB265, 0xD5E1, -/* 1FD8 */ 0xD5E5, 0xFFFD, 0xB252, 0xB250, 0xFFFD, 0xFFFD, 0xB247, 0xD5E3, -/* 1FE0 */ 0xD5E2, 0xB25B, 0xFFFD, 0xD5E8, 0xB255, 0xFFFD, 0xD5FA, 0xD647, -/* 1FE8 */ 0xB244, 0xD5F7, 0xD5F0, 0xB267, 0xD5E0, 0xFFFD, 0xD5FC, 0xFFFD, -/* 1FF0 */ 0xB264, 0xB258, 0xB263, 0xB24E, 0xD5EC, 0xD5FE, 0xD5F6, 0xB24F, -/* 1FF8 */ 0xB249, 0xD645, 0xFFFD, 0xD5FD, 0xD640, 0xB251, 0xB259, 0xD642, -/* 2000 */ 0xD5EA, 0xD5FB, 0xD5EF, 0xD644, 0xB25E, 0xB246, 0xB25C, 0xD5F4, -/* 2008 */ 0xD5F2, 0xD5F3, 0xB253, 0xD5EE, 0xD5ED, 0xB248, 0xD5E7, 0xD646, -/* 2010 */ 0xB24A, 0xD5F1, 0xB268, 0xFFFD, 0xB262, 0xD5E6, 0xB25F, 0xB25D, -/* 2018 */ 0xB266, 0xD5F8, 0xB261, 0xD252, 0xD5F9, 0xB260, 0xD641, 0xB245, -/* 2020 */ 0xD5F5, 0xB257, 0xD5E9, 0xB256, 0xFFFD, 0xB254, 0xB24C, 0xB24B, -/* 2028 */ 0xD9E7, 0xD643, 0xFFFD, 0xFFFD, 0xD5EB, 0xFFFD, 0xFFFD, 0xD9FC, -/* 2030 */ 0xFFFD, 0xB24D, 0xB541, 0xB25A, 0xB4EE, 0xD9F6, 0xB4FC, 0xFFFD, -/* 2038 */ 0xD9EA, 0xB4EB, 0xB4E7, 0xDA49, 0xB4ED, 0xB4F1, 0xB4EC, 0xB4F5, -/* 2040 */ 0xDA4D, 0xDA44, 0xFFFD, 0xFFFD, 0xD9F1, 0xB4FA, 0xB4F4, 0xD9FD, -/* 2048 */ 0xB4E4, 0xDA4A, 0xDA43, 0xB4E8, 0xD9F7, 0xB4F7, 0xDA55, 0xDA56, -/* 2050 */ 0xFFFD, 0xB4E5, 0xDA48, 0xB4F9, 0xD9FB, 0xD9ED, 0xD9EE, 0xB4FD, -/* 2058 */ 0xD9F2, 0xD9F9, 0xD9F3, 0xFFFD, 0xB4FB, 0xB544, 0xD9EF, 0xD9E8, -/* 2060 */ 0xD9E9, 0xFFFD, 0xD9EB, 0xB4EA, 0xD9F8, 0xFFFD, 0xB4F8, 0xB542, -/* 2068 */ 0xFFFD, 0xFFFD, 0xD9FA, 0xDA53, 0xDA4B, 0xB4E6, 0xDA51, 0xB4F2, -/* 2070 */ 0xFFFD, 0xB4F0, 0xFFFD, 0xDA57, 0xB4EF, 0xDA41, 0xD9F4, 0xD9FE, -/* 2078 */ 0xB547, 0xDA45, 0xDA42, 0xD9F0, 0xB543, 0xDA4F, 0xDA4C, 0xDA54, -/* 2080 */ 0xB4E9, 0xDA40, 0xB546, 0xFFFD, 0xDA47, 0xFFFD, 0xFFFD, 0xB4F3, -/* 2088 */ 0xB4F6, 0xFFFD, 0xDA46, 0xB545, 0xD9F5, 0xD5E4, 0xFFFD, 0xFFFD, -/* 2090 */ 0xDA50, 0xDA4E, 0xDA52, 0xD9EC, 0xB540, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2098 */ 0xDE61, 0xDE60, 0xDE46, 0xB7BD, 0xFFFD, 0xDE5F, 0xDE49, 0xDE4A, -/* 20A0 */ 0xFFFD, 0xB7C7, 0xDE68, 0xB7C2, 0xDE5E, 0xFFFD, 0xDE43, 0xB7C8, -/* 20A8 */ 0xB7BE, 0xDE52, 0xDE48, 0xDE4B, 0xDE63, 0xB7B8, 0xDE6A, 0xDE62, -/* 20B0 */ 0xB7C1, 0xDE57, 0xB7CC, 0xFFFD, 0xFFFD, 0xB7CB, 0xB7C5, 0xFFFD, -/* 20B8 */ 0xFFFD, 0xDE69, 0xB7B9, 0xDE55, 0xDE4C, 0xDE59, 0xDE65, 0xB7CD, -/* 20C0 */ 0xFFFD, 0xB7BB, 0xDE54, 0xFFFD, 0xDE4D, 0xB7C4, 0xFFFD, 0xB7C3, -/* 20C8 */ 0xDE50, 0xDE5A, 0xDE64, 0xDE47, 0xDE51, 0xB7BC, 0xDE5B, 0xB7C9, -/* 20D0 */ 0xB7C0, 0xDE4E, 0xB7BF, 0xDE45, 0xDE53, 0xDE67, 0xB4FE, 0xBAB0, -/* 20D8 */ 0xDE56, 0xE26C, 0xDE58, 0xDE66, 0xB7C6, 0xDE4F, 0xB7BA, 0xB7CA, -/* 20E0 */ 0xBCF0, 0xDE44, 0xFFFD, 0xDE5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xDE5C, -/* 20E8 */ 0xE2AA, 0xBAAD, 0xE27D, 0xE2A4, 0xBAA2, 0xFFFD, 0xE26E, 0xBAAF, -/* 20F0 */ 0xFFFD, 0xBA77, 0xE26D, 0xE2B0, 0xBAB1, 0xE271, 0xE2A3, 0xFFFD, -/* 20F8 */ 0xE273, 0xE2B3, 0xE2AF, 0xBA75, 0xBAA1, 0xE653, 0xBAAE, 0xBA7D, -/* 2100 */ 0xE26F, 0xFFFD, 0xE2AE, 0xBAA3, 0xE2AB, 0xE2B8, 0xE275, 0xE27E, -/* 2108 */ 0xFFFD, 0xFFFD, 0xE2B6, 0xE2AC, 0xBA7C, 0xFFFD, 0xFFFD, 0xE27C, -/* 2110 */ 0xBA76, 0xBA74, 0xBAA8, 0xFFFD, 0xFFFD, 0xE27A, 0xE277, 0xE278, -/* 2118 */ 0xFFFD, 0xE2B2, 0xFFFD, 0xE2B7, 0xE2B5, 0xBA7A, 0xE2B9, 0xBA7E, -/* 2120 */ 0xBAA7, 0xFFFD, 0xE270, 0xE5FA, 0xE279, 0xFFFD, 0xBA78, 0xBAAC, -/* 2128 */ 0xBAA9, 0xBA7B, 0xE2A5, 0xE274, 0xBAAA, 0xE2A7, 0xBAA4, 0xBAA6, -/* 2130 */ 0xBA73, 0xFFFD, 0xE2A9, 0xE2A1, 0xE272, 0xBAA5, 0xE2B1, 0xE2B4, -/* 2138 */ 0xE27B, 0xE2A8, 0xFFFD, 0xBA79, 0xBCDF, 0xE2A6, 0xE5F9, 0xFFFD, -/* 2140 */ 0xE2AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE276, 0xE644, 0xE64E, 0xBCE2, 0xE64D, -/* 2150 */ 0xE659, 0xBCE4, 0xE64B, 0xFFFD, 0xE64F, 0xBCEF, 0xFFFD, 0xE646, -/* 2158 */ 0xBCE7, 0xFFFD, 0xE652, 0xE9F0, 0xBCF3, 0xBCF2, 0xE654, 0xE643, -/* 2160 */ 0xE65E, 0xBCED, 0xFFFD, 0xBCE3, 0xE657, 0xFFFD, 0xE65B, 0xE660, -/* 2168 */ 0xE655, 0xE649, 0xBCE6, 0xBCE9, 0xBCF1, 0xBCEC, 0xFFFD, 0xE64C, -/* 2170 */ 0xE2A2, 0xFFFD, 0xFFFD, 0xE648, 0xE65F, 0xBCE8, 0xFFFD, 0xBCEB, -/* 2178 */ 0xE661, 0xBCE0, 0xE656, 0xE5FB, 0xE65C, 0xC0DF, 0xFFFD, 0xE64A, -/* 2180 */ 0xFFFD, 0xBCE1, 0xE645, 0xBCE5, 0xE5FC, 0xBAAB, 0xE641, 0xFFFD, -/* 2188 */ 0xE65A, 0xE642, 0xE640, 0xBCEA, 0xFFFD, 0xE658, 0xFFFD, 0xE5FE, -/* 2190 */ 0xE651, 0xE650, 0xE65D, 0xE647, 0xBCEE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9F3, 0xFFFD, 0xBF49, 0xBEFE, 0xEA40, -/* 21A0 */ 0xE9EB, 0xBF41, 0xE9F7, 0xBF48, 0xBF43, 0xE9F5, 0xED4F, 0xE9FB, -/* 21A8 */ 0xEA42, 0xE9FA, 0xE9E9, 0xE9F8, 0xEA44, 0xEA46, 0xBEFD, 0xEA45, -/* 21B0 */ 0xBF44, 0xBF4A, 0xFFFD, 0xBF47, 0xFFFD, 0xE9FE, 0xBF46, 0xE9F9, -/* 21B8 */ 0xFFFD, 0xE9ED, 0xE9F2, 0xFFFD, 0xE9FD, 0xBF45, 0xBF42, 0xBEFC, -/* 21C0 */ 0xBF40, 0xE9F1, 0xFFFD, 0xE5FD, 0xE9EC, 0xE9EF, 0xEA41, 0xE9F4, -/* 21C8 */ 0xE9EA, 0xED4E, 0xEA43, 0xE9EE, 0xE9FC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21D0 */ 0xFFFD, 0xED51, 0xC0E3, 0xFFFD, 0xFFFD, 0xC0D7, 0xFFFD, 0xFFFD, -/* 21D8 */ 0xC0DB, 0xED53, 0xED59, 0xED57, 0xC0D9, 0xC0DA, 0xC0E1, 0xED5A, -/* 21E0 */ 0xED52, 0xC0DC, 0xFFFD, 0xED56, 0xED55, 0xED5B, 0xC0E2, 0xFFFD, -/* 21E8 */ 0xC0DD, 0xC0E0, 0xED54, 0xC0E4, 0xC0DE, 0xC0E5, 0xC0D8, 0xED58, -/* 21F0 */ 0xFFFD, 0xED50, 0xFFFD, 0xFFFD, 0xEFF7, 0xFFFD, 0xFFFD, 0xC271, -/* 21F8 */ 0xEFF4, 0xEFF6, 0xFFFD, 0xC26F, 0xEFF2, 0xEFF3, 0xEFEE, 0xFFFD, -/* 2200 */ 0xFFFD, 0xE9F6, 0xEFEF, 0xC270, 0xEFEB, 0xFFFD, 0xC26D, 0xEFF8, -/* 2208 */ 0xC26E, 0xEFEC, 0xEFED, 0xEFF1, 0xC273, 0xFFFD, 0xC272, 0xFFFD, -/* 2210 */ 0xFFFD, 0xEFF0, 0xC378, 0xF25F, 0xF265, 0xC379, 0xF25C, 0xC376, -/* 2218 */ 0xC373, 0xF267, 0xC377, 0xFFFD, 0xC374, 0xF25E, 0xF261, 0xF262, -/* 2220 */ 0xF263, 0xF266, 0xFFFD, 0xEFF5, 0xF25D, 0xC375, 0xF264, 0xF268, -/* 2228 */ 0xF260, 0xFFFD, 0xFFFD, 0xFFFD, 0xF45D, 0xC46A, 0xF460, 0xC46B, -/* 2230 */ 0xF468, 0xF45F, 0xF45C, 0xFFFD, 0xF45E, 0xF462, 0xF465, 0xF464, -/* 2238 */ 0xF467, 0xF45B, 0xFFFD, 0xC469, 0xF463, 0xF466, 0xF469, 0xF461, -/* 2240 */ 0xF5D3, 0xF5D4, 0xF5D8, 0xF5D9, 0xFFFD, 0xF5D6, 0xF5D7, 0xF5D5, -/* 2248 */ 0xFFFD, 0xC4E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC578, 0xF6EB, -/* 2250 */ 0xFFFD, 0xFFFD, 0xF6E8, 0xF6E9, 0xF6EA, 0xC579, 0xFFFD, 0xF7E5, -/* 2258 */ 0xF7E4, 0xFFFD, 0xF8AF, 0xC5F4, 0xF8AD, 0xF8B0, 0xF8AE, 0xF8F5, -/* 2260 */ 0xC657, 0xC665, 0xF9A3, 0xF96C, 0xFFFD, 0xF9A2, 0xF9D0, 0xF9D1, -/* 2268 */ 0xA4F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA6C7, 0xCA41, 0xFFFD, -/* 2270 */ 0xFFFD, 0xCB5E, 0xFFFD, 0xA85F, 0xFFFD, 0xA862, 0xFFFD, 0xCB5F, -/* 2278 */ 0xFFFD, 0xA860, 0xA861, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCD58, -/* 2280 */ 0xCD5A, 0xCD55, 0xCD52, 0xCD54, 0xFFFD, 0xFFFD, 0xFFFD, 0xAAA4, -/* 2288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xAAA2, 0xFFFD, 0xFFFD, 0xCD56, 0xAAA3, -/* 2290 */ 0xCD53, 0xCD50, 0xAAA1, 0xCD57, 0xFFFD, 0xCD51, 0xAAA5, 0xCD59, -/* 2298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFAF, 0xFFFD, 0xCFB3, 0xFFFD, -/* 22A0 */ 0xFFFD, 0xACB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFB6, 0xFFFD, -/* 22A8 */ 0xACAF, 0xACB2, 0xACB4, 0xACB6, 0xACB3, 0xCFB2, 0xCFB1, 0xFFFD, -/* 22B0 */ 0xACB1, 0xCFB4, 0xCFB5, 0xFFFD, 0xCFAE, 0xACB5, 0xFFFD, 0xACB0, -/* 22B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCFB0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22C0 */ 0xFFFD, 0xFFFD, 0xD277, 0xD278, 0xD279, 0xAF50, 0xFFFD, 0xAF4C, -/* 22C8 */ 0xD26E, 0xFFFD, 0xD276, 0xD27B, 0xAF51, 0xFFFD, 0xD26C, 0xD272, -/* 22D0 */ 0xD26B, 0xD275, 0xFFFD, 0xFFFD, 0xD271, 0xAF4D, 0xAF4F, 0xD27A, -/* 22D8 */ 0xFFFD, 0xD26A, 0xD26D, 0xD273, 0xFFFD, 0xD274, 0xD27C, 0xD270, -/* 22E0 */ 0xFFFD, 0xAF4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB26D, 0xD64E, 0xFFFD, 0xFFFD, -/* 22F0 */ 0xD650, 0xD64C, 0xFFFD, 0xD658, 0xD64A, 0xD657, 0xB269, 0xD648, -/* 22F8 */ 0xDA5B, 0xD652, 0xB26C, 0xFFFD, 0xD653, 0xD656, 0xFFFD, 0xD65A, -/* 2300 */ 0xFFFD, 0xD64F, 0xFFFD, 0xD654, 0xFFFD, 0xFFFD, 0xB26A, 0xB26B, -/* 2308 */ 0xD659, 0xD64D, 0xD649, 0xD65B, 0xFFFD, 0xD651, 0xFFFD, 0xFFFD, -/* 2310 */ 0xD655, 0xFFFD, 0xFFFD, 0xFFFD, 0xD64B, 0xFFFD, 0xB548, 0xB549, -/* 2318 */ 0xDA65, 0xB54F, 0xFFFD, 0xDA59, 0xDA62, 0xDA58, 0xB54C, 0xDA60, -/* 2320 */ 0xDA5E, 0xFFFD, 0xDA5F, 0xB54A, 0xFFFD, 0xDA63, 0xFFFD, 0xFFFD, -/* 2328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDA5C, 0xDA5A, 0xB54B, 0xDA5D, 0xDA61, -/* 2330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB54D, 0xFFFD, 0xFFFD, 0xFFFD, 0xDA64, -/* 2338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDE70, 0xDE77, -/* 2340 */ 0xDE79, 0xDEA1, 0xFFFD, 0xB7DA, 0xDE6B, 0xFFFD, 0xB7D2, 0xFFFD, -/* 2348 */ 0xDE7A, 0xB7D7, 0xDEA2, 0xB7CE, 0xFFFD, 0xDE7D, 0xFFFD, 0xDE6D, -/* 2350 */ 0xDE7E, 0xDE6C, 0xFFFD, 0xB7DC, 0xFFFD, 0xDE78, 0xB7CF, 0xDEA3, -/* 2358 */ 0xFFFD, 0xB7D4, 0xDE71, 0xB7D9, 0xDE7C, 0xDE6F, 0xDE76, 0xDE72, -/* 2360 */ 0xDE6E, 0xB7D1, 0xB7D8, 0xB7D6, 0xB7D3, 0xB7DB, 0xB7D0, 0xDE75, -/* 2368 */ 0xFFFD, 0xB7D5, 0xFFFD, 0xB54E, 0xFFFD, 0xDE7B, 0xFFFD, 0xDE73, -/* 2370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDE74, 0xFFFD, 0xFFFD, -/* 2378 */ 0xE2C1, 0xFFFD, 0xBAB4, 0xFFFD, 0xFFFD, 0xE2BD, 0xE2C3, 0xE2BF, -/* 2380 */ 0xFFFD, 0xBAB6, 0xE2BE, 0xE2C2, 0xE2BA, 0xFFFD, 0xE2BC, 0xBAB5, -/* 2388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C0, 0xE2BB, 0xFFFD, 0xBAB7, -/* 2390 */ 0xFFFD, 0xBAB2, 0xFFFD, 0xFFFD, 0xE2C4, 0xFFFD, 0xBAB3, 0xE667, -/* 2398 */ 0xE664, 0xE670, 0xE66A, 0xE66C, 0xBCF4, 0xE666, 0xE66E, 0xFFFD, -/* 23A0 */ 0xFFFD, 0xE66D, 0xE66B, 0xFFFD, 0xE671, 0xBCF7, 0xE668, 0xE66F, -/* 23A8 */ 0xFFFD, 0xBCF5, 0xFFFD, 0xFFFD, 0xE663, 0xE665, 0xBCF6, 0xE662, -/* 23B0 */ 0xE672, 0xFFFD, 0xE669, 0xFFFD, 0xFFFD, 0xEA4A, 0xBF51, 0xFFFD, -/* 23B8 */ 0xFFFD, 0xEA55, 0xEA53, 0xBF4B, 0xEA49, 0xEA4C, 0xEA4D, 0xEA48, -/* 23C0 */ 0xBF55, 0xBF56, 0xEA47, 0xEA56, 0xEA51, 0xBF4F, 0xBF4C, 0xEA50, -/* 23C8 */ 0xEA4E, 0xFFFD, 0xFFFD, 0xBF52, 0xEA52, 0xBF4D, 0xFFFD, 0xBF4E, -/* 23D0 */ 0xFFFD, 0xEA4F, 0xBF50, 0xEA4B, 0xFFFD, 0xEA54, 0xBF53, 0xEA57, -/* 23D8 */ 0xEA58, 0xBF54, 0xFFFD, 0xFFFD, 0xC0E7, 0xC0EE, 0xED5C, 0xED62, -/* 23E0 */ 0xFFFD, 0xED60, 0xC0EA, 0xC0E9, 0xC0E6, 0xED5E, 0xFFFD, 0xFFFD, -/* 23E8 */ 0xFFFD, 0xC0EC, 0xC0EB, 0xC0E8, 0xFFFD, 0xED61, 0xED5D, 0xED5F, -/* 23F0 */ 0xFFFD, 0xC0ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xC277, 0xEFFB, 0xFFFD, -/* 23F8 */ 0xC274, 0xC275, 0xEFFD, 0xC276, 0xEFFA, 0xFFFD, 0xEFF9, 0xF26C, -/* 2400 */ 0xEFFC, 0xFFFD, 0xF26D, 0xC37A, 0xF26B, 0xFFFD, 0xFFFD, 0xF26A, -/* 2408 */ 0xFFFD, 0xF269, 0xC37B, 0xFFFD, 0xFFFD, 0xC46C, 0xFFFD, 0xFFFD, -/* 2410 */ 0xF46A, 0xF46B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5DC, 0xF5DB, -/* 2418 */ 0xC4EA, 0xFFFD, 0xF5DA, 0xF6EC, 0xF6ED, 0xFFFD, 0xFFFD, 0xF7E6, -/* 2420 */ 0xF8B1, 0xFFFD, 0xFFFD, 0xF8F6, 0xF9BC, 0xC679, 0xF9C6, 0xA4F6, -/* 2428 */ 0xFFFD, 0xAAA6, 0xAAA7, 0xFFFD, 0xFFFD, 0xACB8, 0xFFFD, 0xFFFD, -/* 2430 */ 0xFFFD, 0xFFFD, 0xC0EF, 0xA4F7, 0xFFFD, 0xAAA8, 0xAF52, 0xB7DD, -/* 2438 */ 0xA4F8, 0xFFFD, 0xB26E, 0xBAB8, 0xC962, 0xFFFD, 0xCFB7, 0xD27D, -/* 2440 */ 0xFFFD, 0xE2C5, 0xFFFD, 0xC0F0, 0xA4F9, 0xAAA9, 0xCFB8, 0xCFB9, -/* 2448 */ 0xDA66, 0xB550, 0xFFFD, 0xFFFD, 0xDEA4, 0xFFFD, 0xFFFD, 0xB7DE, -/* 2450 */ 0xE2C6, 0xFFFD, 0xFFFD, 0xBCF8, 0xFFFD, 0xC37C, 0xA4FA, 0xDA67, -/* 2458 */ 0xA4FB, 0xFFFD, 0xA6C9, 0xCA42, 0xA6C8, 0xA865, 0xA864, 0xA863, -/* 2460 */ 0xCB60, 0xFFFD, 0xFFFD, 0xFFFD, 0xAAAA, 0xFFFD, 0xAAAB, 0xCD5B, -/* 2468 */ 0xFFFD, 0xCFBA, 0xFFFD, 0xCFBD, 0xACBA, 0xCFBB, 0xFFFD, 0xACB9, -/* 2470 */ 0xCFBC, 0xACBB, 0xFFFD, 0xD2A2, 0xD2A1, 0xD27E, 0xAF53, 0xFFFD, -/* 2478 */ 0xD65D, 0xD65E, 0xB26F, 0xD65C, 0xD65F, 0xB552, 0xB270, 0xFFFD, -/* 2480 */ 0xFFFD, 0xB551, 0xDA6B, 0xDA6A, 0xFFFD, 0xDA68, 0xDA69, 0xFFFD, -/* 2488 */ 0xDA6C, 0xDEA6, 0xDEA5, 0xDEA9, 0xFFFD, 0xDEA8, 0xDEA7, 0xBAB9, -/* 2490 */ 0xE2C9, 0xFFFD, 0xE2C8, 0xBABA, 0xE2C7, 0xE673, 0xFFFD, 0xE674, -/* 2498 */ 0xBCF9, 0xFFFD, 0xEA59, 0xEA5A, 0xFFFD, 0xFFFD, 0xF272, 0xC37D, -/* 24A0 */ 0xF271, 0xF270, 0xF26E, 0xF26F, 0xC4EB, 0xF46C, 0xF6EE, 0xF8F7, -/* 24A8 */ 0xFFFD, 0xA4FC, 0xFFFD, 0xC9A5, 0xA5C7, 0xC9A6, 0xFFFD, 0xFFFD, -/* 24B0 */ 0xFFFD, 0xCA43, 0xCA44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCB66, -/* 24B8 */ 0xFFFD, 0xFFFD, 0xCB62, 0xFFFD, 0xCB61, 0xAAAC, 0xCB65, 0xA867, -/* 24C0 */ 0xCB63, 0xA866, 0xCB67, 0xCB64, 0xFFFD, 0xFFFD, 0xCD5F, 0xCFBE, -/* 24C8 */ 0xCD5D, 0xCD64, 0xFFFD, 0xAAAD, 0xFFFD, 0xAAB0, 0xCD65, 0xCD61, -/* 24D0 */ 0xFFFD, 0xCD62, 0xFFFD, 0xCD5C, 0xAAAF, 0xCD5E, 0xAAAE, 0xCD63, -/* 24D8 */ 0xFFFD, 0xCD60, 0xFFFD, 0xFFFD, 0xCFC2, 0xACBD, 0xACBE, 0xFFFD, -/* 24E0 */ 0xCFC5, 0xCFBF, 0xFFFD, 0xCFC4, 0xFFFD, 0xCFC0, 0xACBC, 0xCFC3, -/* 24E8 */ 0xCFC1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24F0 */ 0xD2A8, 0xD2A5, 0xFFFD, 0xD2A7, 0xAF58, 0xAF57, 0xAF55, 0xD2A4, -/* 24F8 */ 0xD2A9, 0xAF54, 0xAF56, 0xD2A6, 0xD667, 0xD2A3, 0xD2AA, 0xFFFD, -/* 2500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD662, 0xD666, 0xFFFD, 0xD665, -/* 2508 */ 0xDA6E, 0xDA79, 0xFFFD, 0xFFFD, 0xD668, 0xFFFD, 0xD663, 0xDA6D, -/* 2510 */ 0xB274, 0xFFFD, 0xFFFD, 0xB273, 0xD661, 0xD664, 0xB275, 0xFFFD, -/* 2518 */ 0xB272, 0xB271, 0xD660, 0xD669, 0xFFFD, 0xFFFD, 0xFFFD, 0xDA70, -/* 2520 */ 0xDA77, 0xFFFD, 0xB554, 0xDA76, 0xDA73, 0xFFFD, 0xB556, 0xFFFD, -/* 2528 */ 0xFFFD, 0xFFFD, 0xDA75, 0xFFFD, 0xFFFD, 0xDA6F, 0xDA71, 0xDA74, -/* 2530 */ 0xDA72, 0xB555, 0xDA78, 0xB553, 0xB7DF, 0xFFFD, 0xFFFD, 0xDEAD, -/* 2538 */ 0xDEAC, 0xDEAA, 0xFFFD, 0xB7E2, 0xB7E1, 0xDEAE, 0xFFFD, 0xDEAB, -/* 2540 */ 0xE2CA, 0xBABB, 0xB7E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEB0, 0xDEAF, -/* 2548 */ 0xFFFD, 0xE2CD, 0xE2CB, 0xBCFA, 0xFFFD, 0xBABC, 0xE2CC, 0xE676, -/* 2550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCFB, 0xE675, 0xE67E, 0xE67D, -/* 2558 */ 0xE67B, 0xFFFD, 0xE67A, 0xE677, 0xE678, 0xE679, 0xE67C, 0xE6A1, -/* 2560 */ 0xFFFD, 0xFFFD, 0xEA5F, 0xEA5C, 0xEA5D, 0xBF57, 0xEA5B, 0xEA61, -/* 2568 */ 0xEA60, 0xEA5E, 0xFFFD, 0xED64, 0xED65, 0xC0F1, 0xFFFD, 0xC0F2, -/* 2570 */ 0xED63, 0xFFFD, 0xC279, 0xEFFE, 0xC278, 0xC37E, 0xFFFD, 0xC3A1, -/* 2578 */ 0xC46D, 0xF46E, 0xF46D, 0xF5DD, 0xF6EF, 0xC57A, 0xF7E8, 0xF7E7, -/* 2580 */ 0xF7E9, 0xA5C8, 0xCFC6, 0xAF59, 0xB276, 0xD66A, 0xA5C9, 0xC9A7, -/* 2588 */ 0xA4FD, 0xFFFD, 0xFFFD, 0xCA45, 0xFFFD, 0xFFFD, 0xFFFD, 0xCB6C, -/* 2590 */ 0xCB6A, 0xCB6B, 0xCB68, 0xA868, 0xCB69, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2598 */ 0xFFFD, 0xFFFD, 0xCD6D, 0xFFFD, 0xAAB3, 0xCD6B, 0xCD67, 0xCD6A, -/* 25A0 */ 0xFFFD, 0xCD66, 0xAAB5, 0xCD69, 0xFFFD, 0xAAB2, 0xAAB1, 0xFFFD, -/* 25A8 */ 0xAAB4, 0xCD6C, 0xCD68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xACC2, -/* 25B0 */ 0xACC5, 0xCFCE, 0xCFCD, 0xCFCC, 0xACBF, 0xCFD5, 0xCFCB, 0xFFFD, -/* 25B8 */ 0xACC1, 0xD2AF, 0xFFFD, 0xCFD2, 0xCFD0, 0xACC4, 0xFFFD, 0xCFC8, -/* 25C0 */ 0xCFD3, 0xFFFD, 0xCFCA, 0xCFD4, 0xCFD1, 0xCFC9, 0xFFFD, 0xACC0, -/* 25C8 */ 0xCFD6, 0xCFC7, 0xACC3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2B4, -/* 25D0 */ 0xD2AB, 0xD2B6, 0xFFFD, 0xD2AE, 0xD2B9, 0xD2BA, 0xD2AC, 0xD2B8, -/* 25D8 */ 0xD2B5, 0xD2B3, 0xD2B7, 0xAF5F, 0xFFFD, 0xAF5D, 0xFFFD, 0xFFFD, -/* 25E0 */ 0xD2B1, 0xFFFD, 0xD2AD, 0xFFFD, 0xD2B0, 0xD2BB, 0xD2B2, 0xAF5E, -/* 25E8 */ 0xCFCF, 0xFFFD, 0xAF5A, 0xAF5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25F0 */ 0xFFFD, 0xD678, 0xD66D, 0xD66B, 0xFFFD, 0xD66C, 0xFFFD, 0xD673, -/* 25F8 */ 0xFFFD, 0xD674, 0xD670, 0xB27B, 0xD675, 0xD672, 0xD66F, 0xFFFD, -/* 2600 */ 0xB279, 0xD66E, 0xB277, 0xB27A, 0xD671, 0xD679, 0xAF5B, 0xB278, -/* 2608 */ 0xD677, 0xD676, 0xB27C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDA7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAA1, -/* 2618 */ 0xB560, 0xFFFD, 0xDAA7, 0xFFFD, 0xFFFD, 0xDAA9, 0xDAA2, 0xB55A, -/* 2620 */ 0xDAA6, 0xDAA5, 0xB55B, 0xB561, 0xFFFD, 0xB562, 0xDAA8, 0xB558, -/* 2628 */ 0xDA7D, 0xDA7B, 0xDAA3, 0xDA7A, 0xB55F, 0xDA7C, 0xDAA4, 0xDAAA, -/* 2630 */ 0xB559, 0xB55E, 0xB55C, 0xB55D, 0xFFFD, 0xFFFD, 0xFFFD, 0xB557, -/* 2638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7E9, 0xDEB7, 0xB7E8, 0xDEBB, -/* 2640 */ 0xFFFD, 0xDEB1, 0xFFFD, 0xDEBC, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEB2, -/* 2648 */ 0xDEB3, 0xFFFD, 0xDEBD, 0xDEBA, 0xDEB8, 0xDEB9, 0xDEB5, 0xDEB4, -/* 2650 */ 0xFFFD, 0xDEBE, 0xB7E5, 0xFFFD, 0xDEB6, 0xFFFD, 0xB7EA, 0xB7E4, -/* 2658 */ 0xB7EB, 0xB7EC, 0xFFFD, 0xB7E7, 0xB7E6, 0xFFFD, 0xFFFD, 0xE2CE, -/* 2660 */ 0xBABE, 0xBABD, 0xFFFD, 0xFFFD, 0xE2D3, 0xFFFD, 0xBCFC, 0xBABF, -/* 2668 */ 0xFFFD, 0xFFFD, 0xBAC1, 0xE2D4, 0xB7E3, 0xBAC0, 0xE2D0, 0xE2D2, -/* 2670 */ 0xE2CF, 0xFFFD, 0xE2D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6AB, 0xFFFD, -/* 2678 */ 0xFFFD, 0xE6AA, 0xE6A7, 0xBD40, 0xEA62, 0xBD41, 0xE6A6, 0xFFFD, -/* 2680 */ 0xBCFE, 0xFFFD, 0xE6A8, 0xE6A5, 0xE6A2, 0xE6A9, 0xE6A3, 0xE6A4, -/* 2688 */ 0xBCFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xED69, 0xFFFD, 0xEA66, -/* 2690 */ 0xFFFD, 0xEA65, 0xEA67, 0xFFFD, 0xED66, 0xBF5A, 0xFFFD, 0xEA63, -/* 2698 */ 0xFFFD, 0xBF58, 0xFFFD, 0xBF5C, 0xBF5B, 0xEA64, 0xEA68, 0xFFFD, -/* 26A0 */ 0xBF59, 0xFFFD, 0xED6D, 0xC0F5, 0xC27A, 0xC0F6, 0xC0F3, 0xED6A, -/* 26A8 */ 0xED68, 0xFFFD, 0xED6B, 0xFFFD, 0xED6E, 0xC0F4, 0xED6C, 0xED67, -/* 26B0 */ 0xFFFD, 0xFFFD, 0xF042, 0xF045, 0xF275, 0xF040, 0xFFFD, 0xF46F, -/* 26B8 */ 0xF046, 0xFFFD, 0xC3A2, 0xF044, 0xC27B, 0xF041, 0xF043, 0xF047, -/* 26C0 */ 0xF276, 0xFFFD, 0xF274, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3A3, -/* 26C8 */ 0xF273, 0xFFFD, 0xFFFD, 0xFFFD, 0xC46E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26D0 */ 0xFFFD, 0xC4ED, 0xF6F1, 0xC4EC, 0xF6F3, 0xF6F0, 0xF6F2, 0xC5D0, -/* 26D8 */ 0xF8B2, 0xA5CA, 0xCD6E, 0xD2BC, 0xD2BD, 0xB27D, 0xDEBF, 0xBF5D, -/* 26E0 */ 0xC3A4, 0xC57B, 0xF8B3, 0xA5CB, 0xFFFD, 0xCD6F, 0xA260, 0xFFFD, -/* 26E8 */ 0xFFFD, 0xCFD7, 0xFFFD, 0xCFD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26F0 */ 0xFFFD, 0xD2BE, 0xD2BF, 0xB27E, 0xB2A1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26F8 */ 0xDAAB, 0xFFFD, 0xDEC2, 0xDEC1, 0xDEC0, 0xE2D5, 0xFFFD, 0xE2D6, -/* 2700 */ 0xE2D7, 0xBAC2, 0xFFFD, 0xFFFD, 0xE6AD, 0xE6AC, 0xFFFD, 0xFFFD, -/* 2708 */ 0xEA69, 0xBF5E, 0xBF5F, 0xFFFD, 0xED72, 0xED6F, 0xED70, 0xED71, -/* 2710 */ 0xF049, 0xF048, 0xC27C, 0xF277, 0xF5DE, 0xA5CC, 0xFFFD, 0xACC6, -/* 2718 */ 0xFFFD, 0xB2A2, 0xDEC3, 0xFFFD, 0xA5CD, 0xFFFD, 0xD2C0, 0xB2A3, -/* 2720 */ 0xFFFD, 0xFFFD, 0xB563, 0xB564, 0xFFFD, 0xA5CE, 0xA5CF, 0xCA46, -/* 2728 */ 0xA86A, 0xA869, 0xACC7, 0xCFD9, 0xDAAC, 0xA5D0, 0xA5D1, 0xA5D2, -/* 2730 */ 0xA5D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xA86B, 0xA86C, 0xCB6E, 0xCB6D, -/* 2738 */ 0xFFFD, 0xFFFD, 0xAAB6, 0xCD72, 0xCD70, 0xCD71, 0xFFFD, 0xFFFD, -/* 2740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFDA, 0xCFDB, 0xFFFD, 0xFFFD, -/* 2748 */ 0xACCB, 0xACC9, 0xFFFD, 0xACCA, 0xACC8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2750 */ 0xFFFD, 0xAF60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAF64, 0xAF63, -/* 2758 */ 0xD2C1, 0xAF62, 0xAF61, 0xFFFD, 0xD2C2, 0xFFFD, 0xFFFD, 0xB2A6, -/* 2760 */ 0xD67B, 0xD67A, 0xB2A4, 0xB2A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xB566, -/* 2768 */ 0xB565, 0xDAAE, 0xFFFD, 0xFFFD, 0xDAAD, 0xB2A7, 0xFFFD, 0xFFFD, -/* 2770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB7ED, 0xDEC5, 0xB7EE, 0xDEC4, 0xFFFD, -/* 2778 */ 0xFFFD, 0xFFFD, 0xE2D8, 0xE6AE, 0xBD42, 0xEA6A, 0xFFFD, 0xFFFD, -/* 2780 */ 0xFFFD, 0xED73, 0xFFFD, 0xC3A6, 0xC3A5, 0xFFFD, 0xFFFD, 0xC57C, -/* 2788 */ 0xA5D4, 0xCD73, 0xFFFD, 0xFFFD, 0xB2A8, 0xE2D9, 0xBAC3, 0xFFFD, -/* 2790 */ 0xFFFD, 0xCB6F, 0xCB70, 0xFFFD, 0xFFFD, 0xCD74, 0xAAB8, 0xAAB9, -/* 2798 */ 0xFFFD, 0xFFFD, 0xAAB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xACCF, -/* 27A0 */ 0xACD0, 0xACCD, 0xACCE, 0xFFFD, 0xCFDC, 0xFFFD, 0xFFFD, 0xCFDD, -/* 27A8 */ 0xACCC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2C3, 0xFFFD, 0xAF68, -/* 27B0 */ 0xAF69, 0xFFFD, 0xB2AB, 0xD2C9, 0xFFFD, 0xAF6E, 0xAF6C, 0xD2CA, -/* 27B8 */ 0xD2C5, 0xAF6B, 0xAF6A, 0xAF65, 0xD2C8, 0xD2C7, 0xD2C4, 0xAF6D, -/* 27C0 */ 0xFFFD, 0xD2C6, 0xAF66, 0xFFFD, 0xAF67, 0xFFFD, 0xFFFD, 0xB2AC, -/* 27C8 */ 0xD6A1, 0xD6A2, 0xB2AD, 0xD67C, 0xD67E, 0xD6A4, 0xD6A3, 0xD67D, -/* 27D0 */ 0xFFFD, 0xB2A9, 0xB2AA, 0xFFFD, 0xDAB6, 0xB56B, 0xB56A, 0xDAB0, -/* 27D8 */ 0xB568, 0xFFFD, 0xDAB3, 0xB56C, 0xDAB4, 0xB56D, 0xDAB1, 0xB567, -/* 27E0 */ 0xB569, 0xDAB5, 0xFFFD, 0xDAB2, 0xDAAF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27E8 */ 0xFFFD, 0xFFFD, 0xDED2, 0xFFFD, 0xDEC7, 0xB7F0, 0xB7F3, 0xB7F2, -/* 27F0 */ 0xB7F7, 0xB7F6, 0xDED3, 0xDED1, 0xDECA, 0xDECE, 0xDECD, 0xB7F4, -/* 27F8 */ 0xDED0, 0xDECC, 0xDED4, 0xDECB, 0xB7F5, 0xB7EF, 0xB7F1, 0xFFFD, -/* 2800 */ 0xDEC9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2DB, 0xBAC7, 0xE2DF, -/* 2808 */ 0xBAC6, 0xE2DC, 0xBAC5, 0xFFFD, 0xDEC8, 0xDECF, 0xE2DE, 0xFFFD, -/* 2810 */ 0xBAC8, 0xE2E0, 0xE2DD, 0xE2DA, 0xFFFD, 0xFFFD, 0xE6B1, 0xE6B5, -/* 2818 */ 0xE6B7, 0xE6B3, 0xE6B2, 0xE6B0, 0xBD45, 0xBD43, 0xBD48, 0xBD49, -/* 2820 */ 0xE6B4, 0xBD46, 0xE6AF, 0xBD47, 0xBAC4, 0xE6B6, 0xBD44, 0xFFFD, -/* 2828 */ 0xFFFD, 0xFFFD, 0xEA6C, 0xFFFD, 0xEA6B, 0xEA73, 0xEA6D, 0xEA72, -/* 2830 */ 0xEA6F, 0xBF60, 0xEA71, 0xFFFD, 0xFFFD, 0xBF61, 0xFFFD, 0xBF62, -/* 2838 */ 0xFFFD, 0xEA70, 0xEA6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0F8, -/* 2840 */ 0xED74, 0xFFFD, 0xFFFD, 0xC0F7, 0xED77, 0xED75, 0xED76, 0xFFFD, -/* 2848 */ 0xFFFD, 0xC0F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xF04D, 0xFFFD, 0xC2A1, -/* 2850 */ 0xF04E, 0xFFFD, 0xFFFD, 0xC27D, 0xF04F, 0xC27E, 0xF04C, 0xF050, -/* 2858 */ 0xFFFD, 0xF04A, 0xFFFD, 0xFFFD, 0xC3A7, 0xF278, 0xC3A8, 0xC46F, -/* 2860 */ 0xFFFD, 0xF04B, 0xC470, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4EE, 0xF5DF, -/* 2868 */ 0xFFFD, 0xC57E, 0xF6F4, 0xC57D, 0xFFFD, 0xF7EA, 0xC5F5, 0xC5F6, -/* 2870 */ 0xFFFD, 0xFFFD, 0xF9CC, 0xFFFD, 0xFFFD, 0xACD1, 0xCFDE, 0xFFFD, -/* 2878 */ 0xB56E, 0xB56F, 0xA5D5, 0xA6CA, 0xCA47, 0xFFFD, 0xCB71, 0xA86D, -/* 2880 */ 0xFFFD, 0xAABA, 0xFFFD, 0xACD2, 0xACD3, 0xACD4, 0xD6A6, 0xD2CB, -/* 2888 */ 0xAF6F, 0xFFFD, 0xFFFD, 0xB2AE, 0xD6A5, 0xFFFD, 0xFFFD, 0xDAB8, -/* 2890 */ 0xB571, 0xFFFD, 0xDAB7, 0xB570, 0xFFFD, 0xFFFD, 0xDED5, 0xBD4A, -/* 2898 */ 0xE6BB, 0xE6B8, 0xE6B9, 0xE6BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28A0 */ 0xFFFD, 0xED78, 0xFFFD, 0xF051, 0xFFFD, 0xFFFD, 0xFFFD, 0xF471, -/* 28A8 */ 0xF470, 0xFFFD, 0xF6F5, 0xA5D6, 0xCD75, 0xAF70, 0xFFFD, 0xFFFD, -/* 28B0 */ 0xFFFD, 0xB572, 0xDED6, 0xFFFD, 0xFFFD, 0xE2E1, 0xFFFD, 0xBD4B, -/* 28B8 */ 0xEA74, 0xFFFD, 0xF052, 0xF472, 0xA5D7, 0xFFFD, 0xFFFD, 0xAABB, -/* 28C0 */ 0xACD7, 0xCFDF, 0xACD8, 0xACD6, 0xFFFD, 0xACD5, 0xD2CC, 0xAF71, -/* 28C8 */ 0xFFFD, 0xFFFD, 0xAF72, 0xAF73, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2B0, -/* 28D0 */ 0xD6A7, 0xB2AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAB9, -/* 28D8 */ 0xB2B1, 0xB573, 0xDED7, 0xB7F8, 0xB7F9, 0xFFFD, 0xBAC9, 0xFFFD, -/* 28E0 */ 0xBACA, 0xBD4C, 0xBF64, 0xEA75, 0xBF63, 0xFFFD, 0xED79, 0xC0FA, -/* 28E8 */ 0xFFFD, 0xF053, 0xF473, 0xA5D8, 0xA86E, 0xCD78, 0xCD77, 0xAABC, -/* 28F0 */ 0xCD76, 0xAABD, 0xCD79, 0xFFFD, 0xCFE5, 0xACDB, 0xACDA, 0xCFE7, -/* 28F8 */ 0xCFE6, 0xACDF, 0xFFFD, 0xACDE, 0xFFFD, 0xFFFD, 0xACD9, 0xFFFD, -/* 2900 */ 0xCFE1, 0xCFE2, 0xCFE3, 0xFFFD, 0xACE0, 0xCFE0, 0xACDC, 0xCFE4, -/* 2908 */ 0xACDD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2CF, 0xD2D3, 0xD2D1, -/* 2910 */ 0xD2D0, 0xFFFD, 0xD2D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2D5, 0xD2D6, -/* 2918 */ 0xD2CE, 0xFFFD, 0xD2CD, 0xFFFD, 0xAF75, 0xAF76, 0xFFFD, 0xD2D7, -/* 2920 */ 0xD2D2, 0xFFFD, 0xD6B0, 0xFFFD, 0xD2D8, 0xAF77, 0xAF74, 0xFFFD, -/* 2928 */ 0xFFFD, 0xFFFD, 0xD6AA, 0xFFFD, 0xD6A9, 0xFFFD, 0xD6AB, 0xD6AC, -/* 2930 */ 0xD6AE, 0xD6AD, 0xD6B2, 0xB2B5, 0xB2B2, 0xB2B6, 0xD6A8, 0xB2B7, -/* 2938 */ 0xD6B1, 0xB2B4, 0xD6AF, 0xB2B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2940 */ 0xFFFD, 0xDABC, 0xDABE, 0xDABA, 0xDABB, 0xFFFD, 0xFFFD, 0xDABF, -/* 2948 */ 0xDAC1, 0xDAC2, 0xDABD, 0xDAC0, 0xB574, 0xFFFD, 0xFFFD, 0xDEDB, -/* 2950 */ 0xFFFD, 0xDEE0, 0xDED8, 0xDEDC, 0xFFFD, 0xFFFD, 0xDEE1, 0xDEDD, -/* 2958 */ 0xB7FA, 0xB843, 0xFFFD, 0xB7FD, 0xDED9, 0xDEDA, 0xBACE, 0xB846, -/* 2960 */ 0xB7FE, 0xFFFD, 0xB844, 0xB7FC, 0xDEDF, 0xB845, 0xDEDE, 0xB841, -/* 2968 */ 0xB7FB, 0xB842, 0xDEE2, 0xE2E6, 0xE2E8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB840, 0xFFFD, -/* 2978 */ 0xFFFD, 0xE2E3, 0xBACC, 0xE2E9, 0xBACD, 0xE2E7, 0xE2E2, 0xE2E5, -/* 2980 */ 0xE2EA, 0xBACB, 0xE2E4, 0xFFFD, 0xBD4E, 0xE6BF, 0xE6BE, 0xFFFD, -/* 2988 */ 0xBD51, 0xBD4F, 0xE6BC, 0xBD4D, 0xE6BD, 0xFFFD, 0xBD50, 0xFFFD, -/* 2990 */ 0xFFFD, 0xFFFD, 0xEA7D, 0xFFFD, 0xEAA1, 0xFFFD, 0xEA7E, 0xEA76, -/* 2998 */ 0xEA7A, 0xEA79, 0xEA77, 0xBF66, 0xBF67, 0xBF65, 0xEA78, 0xEA7B, -/* 29A0 */ 0xEA7C, 0xFFFD, 0xBF68, 0xFFFD, 0xC140, 0xEDA3, 0xFFFD, 0xC0FC, -/* 29A8 */ 0xED7B, 0xC0FE, 0xC141, 0xFFFD, 0xFFFD, 0xC0FD, 0xEDA2, 0xED7C, -/* 29B0 */ 0xC0FB, 0xEDA1, 0xED7A, 0xED7E, 0xED7D, 0xFFFD, 0xFFFD, 0xF055, -/* 29B8 */ 0xC2A4, 0xC2A5, 0xC2A2, 0xFFFD, 0xC2A3, 0xFFFD, 0xFFFD, 0xF054, -/* 29C0 */ 0xFFFD, 0xF27B, 0xFFFD, 0xFFFD, 0xC3A9, 0xFFFD, 0xF279, 0xF27A, -/* 29C8 */ 0xFFFD, 0xF474, 0xF477, 0xF475, 0xF476, 0xF5E0, 0xFFFD, 0xFFFD, -/* 29D0 */ 0xC4EF, 0xF7EB, 0xF8B4, 0xFFFD, 0xC5F7, 0xF8F8, 0xF8F9, 0xC666, -/* 29D8 */ 0xA5D9, 0xACE1, 0xFFFD, 0xDAC3, 0xFFFD, 0xDEE3, 0xFFFD, 0xA5DA, -/* 29E0 */ 0xA86F, 0xFFFD, 0xAABE, 0xFFFD, 0xCFE8, 0xCFE9, 0xAF78, 0xFFFD, -/* 29E8 */ 0xFFFD, 0xDAC4, 0xB575, 0xB847, 0xC142, 0xEDA4, 0xF27C, 0xF478, -/* 29F0 */ 0xA5DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDA1, 0xCD7A, 0xCD7C, 0xCD7E, -/* 29F8 */ 0xCD7D, 0xCD7B, 0xAABF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xACE2, -/* 2A00 */ 0xCFF2, 0xFFFD, 0xCFED, 0xCFEA, 0xFFFD, 0xFFFD, 0xCFF1, 0xFFFD, -/* 2A08 */ 0xFFFD, 0xACE4, 0xACE5, 0xCFF0, 0xCFEF, 0xCFEE, 0xCFEB, 0xCFEC, -/* 2A10 */ 0xCFF3, 0xACE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A18 */ 0xFFFD, 0xFFFD, 0xAF7C, 0xFFFD, 0xAFA4, 0xAFA3, 0xD2E1, 0xD2DB, -/* 2A20 */ 0xD2D9, 0xFFFD, 0xAFA1, 0xD6B9, 0xAF7A, 0xD2DE, 0xD2E2, 0xD2E4, -/* 2A28 */ 0xD2E0, 0xD2DA, 0xAFA2, 0xD2DF, 0xD2DD, 0xAF79, 0xD2E5, 0xAFA5, -/* 2A30 */ 0xD2E3, 0xAF7D, 0xD2DC, 0xFFFD, 0xAF7E, 0xAF7B, 0xFFFD, 0xFFFD, -/* 2A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A40 */ 0xB2B9, 0xFFFD, 0xD6BA, 0xFFFD, 0xFFFD, 0xD6B3, 0xD6B5, 0xD6B7, -/* 2A48 */ 0xFFFD, 0xD6B8, 0xD6B6, 0xB2BA, 0xFFFD, 0xD6BB, 0xFFFD, 0xD6B4, -/* 2A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A58 */ 0xFFFD, 0xDAC8, 0xB576, 0xDAD0, 0xFFFD, 0xDAC5, 0xFFFD, 0xDAD1, -/* 2A60 */ 0xFFFD, 0xDAC6, 0xDAC7, 0xFFFD, 0xFFFD, 0xDACF, 0xDACE, 0xDACB, -/* 2A68 */ 0xB2B8, 0xB577, 0xDAC9, 0xDACC, 0xB578, 0xDACD, 0xDACA, 0xFFFD, -/* 2A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEEE, 0xFFFD, -/* 2A78 */ 0xDEF2, 0xB84E, 0xFFFD, 0xE2F0, 0xB851, 0xDEF0, 0xF9D6, 0xFFFD, -/* 2A80 */ 0xDEED, 0xDEE8, 0xDEEA, 0xDEEB, 0xDEE4, 0xFFFD, 0xB84D, 0xFFFD, -/* 2A88 */ 0xFFFD, 0xB84C, 0xFFFD, 0xB848, 0xDEE7, 0xFFFD, 0xB84F, 0xFFFD, -/* 2A90 */ 0xB850, 0xDEE6, 0xDEE9, 0xDEF1, 0xB84A, 0xB84B, 0xDEEF, 0xDEE5, -/* 2A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2F2, 0xBAD0, 0xE2F4, 0xDEEC, 0xE2F6, -/* 2AA0 */ 0xBAD4, 0xE2F7, 0xE2F3, 0xFFFD, 0xBAD1, 0xE2EF, 0xBAD3, 0xE2EC, -/* 2AA8 */ 0xE2F1, 0xE2F5, 0xE2EE, 0xFFFD, 0xFFFD, 0xB849, 0xFFFD, 0xE2EB, -/* 2AB0 */ 0xBAD2, 0xE2ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBD54, -/* 2AB8 */ 0xE6C1, 0xBD58, 0xFFFD, 0xBD56, 0xFFFD, 0xFFFD, 0xBACF, 0xFFFD, -/* 2AC0 */ 0xE6C8, 0xE6C9, 0xBD53, 0xFFFD, 0xFFFD, 0xE6C7, 0xE6CA, 0xBD55, -/* 2AC8 */ 0xBD52, 0xE6C3, 0xE6C0, 0xE6C5, 0xE6C2, 0xBD59, 0xE6C4, 0xFFFD, -/* 2AD0 */ 0xFFFD, 0xE6C6, 0xBD57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBF6A, -/* 2AD8 */ 0xEAA8, 0xFFFD, 0xEAA2, 0xEAA6, 0xEAAC, 0xEAAD, 0xEAA9, 0xEAAA, -/* 2AE0 */ 0xEAA7, 0xFFFD, 0xEAA4, 0xFFFD, 0xBF6C, 0xBF69, 0xEAA3, 0xEAA5, -/* 2AE8 */ 0xFFFD, 0xBF6B, 0xEAAB, 0xFFFD, 0xC146, 0xFFFD, 0xFFFD, 0xEDAA, -/* 2AF0 */ 0xEDA5, 0xC145, 0xFFFD, 0xFFFD, 0xC143, 0xFFFD, 0xEDAC, 0xC144, -/* 2AF8 */ 0xEDA8, 0xEDA9, 0xEDA6, 0xEDAD, 0xF056, 0xFFFD, 0xC147, 0xEDA7, -/* 2B00 */ 0xFFFD, 0xEDAE, 0xEDAB, 0xFFFD, 0xFFFD, 0xFFFD, 0xF05A, 0xFFFD, -/* 2B08 */ 0xFFFD, 0xF057, 0xFFFD, 0xC2A6, 0xFFFD, 0xF05B, 0xF05D, 0xF05C, -/* 2B10 */ 0xF058, 0xF059, 0xFFFD, 0xFFFD, 0xF2A3, 0xFFFD, 0xC3AA, 0xFFFD, -/* 2B18 */ 0xF27E, 0xF2A2, 0xF27D, 0xF2A4, 0xFFFD, 0xFFFD, 0xF2A1, 0xFFFD, -/* 2B20 */ 0xF47A, 0xF47D, 0xF479, 0xC471, 0xF47B, 0xF47C, 0xF47E, 0xC472, -/* 2B28 */ 0xC474, 0xC473, 0xF5E1, 0xFFFD, 0xF5E3, 0xFFFD, 0xF5E2, 0xFFFD, -/* 2B30 */ 0xFFFD, 0xFFFD, 0xF6F6, 0xFFFD, 0xFFFD, 0xF8B5, 0xF8FA, 0xA5DC, -/* 2B38 */ 0xFFFD, 0xFFFD, 0xCB72, 0xAAC0, 0xCDA3, 0xAAC1, 0xAAC2, 0xCDA2, -/* 2B40 */ 0xFFFD, 0xCFF8, 0xCFF7, 0xACE6, 0xACE9, 0xACE8, 0xACE7, 0xCFF4, -/* 2B48 */ 0xCFF6, 0xCFF5, 0xFFFD, 0xFFFD, 0xD2E8, 0xAFA7, 0xD2EC, 0xD2EB, -/* 2B50 */ 0xD2EA, 0xD2E6, 0xAFA6, 0xAFAA, 0xAFAD, 0xFFFD, 0xFFFD, 0xAFAE, -/* 2B58 */ 0xD2E7, 0xD2E9, 0xAFAC, 0xAFAB, 0xAFA9, 0xAFA8, 0xD6C2, 0xFFFD, -/* 2B60 */ 0xD6C0, 0xD6BC, 0xB2BB, 0xFFFD, 0xD6BD, 0xB2BC, 0xD6BE, 0xD6BF, -/* 2B68 */ 0xD6C1, 0xFFFD, 0xB2BD, 0xFFFD, 0xFFFD, 0xDAD5, 0xFFFD, 0xDAD4, -/* 2B70 */ 0xDAD3, 0xDAD2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEF6, 0xB852, -/* 2B78 */ 0xFFFD, 0xDEF3, 0xDEF5, 0xFFFD, 0xB853, 0xFFFD, 0xB854, 0xDEF4, -/* 2B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE341, 0xFFFD, 0xE2F9, -/* 2B88 */ 0xE2FA, 0xFFFD, 0xBAD7, 0xBAD5, 0xBAD6, 0xE343, 0xFFFD, 0xE342, -/* 2B90 */ 0xE2FE, 0xE2FD, 0xE2FC, 0xE2FB, 0xE340, 0xE2F8, 0xFFFD, 0xE6CB, -/* 2B98 */ 0xE6D0, 0xE6CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6CD, 0xE6CC, 0xE6CF, -/* 2BA0 */ 0xFFFD, 0xEAAE, 0xFFFD, 0xBF6D, 0xC148, 0xEDB0, 0xFFFD, 0xC149, -/* 2BA8 */ 0xEDAF, 0xF05F, 0xF05E, 0xC2A7, 0xFFFD, 0xF2A5, 0xC3AB, 0xF4A1, -/* 2BB0 */ 0xC5A1, 0xF6F7, 0xFFFD, 0xF8B7, 0xF8B6, 0xC9A8, 0xACEA, 0xACEB, -/* 2BB8 */ 0xD6C3, 0xFFFD, 0xB856, 0xA5DD, 0xA872, 0xA871, 0xA870, 0xFFFD, -/* 2BC0 */ 0xFFFD, 0xFFFD, 0xCDA4, 0xFFFD, 0xFFFD, 0xAAC4, 0xAAC3, 0xFFFD, -/* 2BC8 */ 0xACEE, 0xFFFD, 0xCFFA, 0xCFFD, 0xCFFB, 0xFFFD, 0xACEC, 0xACED, -/* 2BD0 */ 0xFFFD, 0xFFFD, 0xCFF9, 0xCFFC, 0xFFFD, 0xAFB5, 0xFFFD, 0xFFFD, -/* 2BD8 */ 0xFFFD, 0xD2F3, 0xD2F5, 0xD2F4, 0xAFB2, 0xD2EF, 0xFFFD, 0xFFFD, -/* 2BE0 */ 0xAFB0, 0xAFAF, 0xFFFD, 0xAFB3, 0xAFB1, 0xFFFD, 0xAFB4, 0xD2F2, -/* 2BE8 */ 0xD2ED, 0xD2EE, 0xD2F1, 0xD2F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD6C6, 0xD6C7, 0xD6C5, 0xFFFD, 0xD6C4, -/* 2BF8 */ 0xB2BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB57D, 0xFFFD, 0xDAD6, -/* 2C00 */ 0xDAD8, 0xDADA, 0xB57C, 0xFFFD, 0xFFFD, 0xB57A, 0xFFFD, 0xDAD7, -/* 2C08 */ 0xB57B, 0xDAD9, 0xB579, 0xFFFD, 0xFFFD, 0xDF41, 0xDEF7, 0xDEFA, -/* 2C10 */ 0xDEFE, 0xB85A, 0xDEFC, 0xFFFD, 0xDEFB, 0xDEF8, 0xDEF9, 0xB858, -/* 2C18 */ 0xDF40, 0xB857, 0xFFFD, 0xB85C, 0xB85B, 0xB859, 0xFFFD, 0xDEFD, -/* 2C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE349, 0xFFFD, 0xE348, 0xFFFD, 0xFFFD, -/* 2C28 */ 0xE344, 0xFFFD, 0xFFFD, 0xBAD8, 0xE347, 0xE346, 0xBAD9, 0xFFFD, -/* 2C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBD5E, 0xFFFD, 0xE6D2, 0xFFFD, -/* 2C38 */ 0xBD5F, 0xBD5B, 0xBD5D, 0xFFFD, 0xBD5A, 0xBD5C, 0xFFFD, 0xFFFD, -/* 2C40 */ 0xFFFD, 0xEAAF, 0xFFFD, 0xBF70, 0xEAB1, 0xEAB0, 0xFFFD, 0xE345, -/* 2C48 */ 0xBF72, 0xBF71, 0xBF6E, 0xBF6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C50 */ 0xFFFD, 0xEDB5, 0xFFFD, 0xEDB3, 0xC14A, 0xEDB4, 0xFFFD, 0xEDB6, -/* 2C58 */ 0xEDB2, 0xEDB1, 0xFFFD, 0xFFFD, 0xF060, 0xC2AA, 0xC2A8, 0xC2A9, -/* 2C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2A6, 0xF2A7, 0xC3AD, 0xFFFD, -/* 2C68 */ 0xC3AC, 0xF4A3, 0xF4A4, 0xF4A2, 0xFFFD, 0xF6F8, 0xF6F9, 0xFFFD, -/* 2C70 */ 0xFFFD, 0xA5DE, 0xCA48, 0xA873, 0xFFFD, 0xCDA5, 0xAAC6, 0xAAC5, -/* 2C78 */ 0xCDA6, 0xFFFD, 0xFFFD, 0xD040, 0xACEF, 0xCFFE, 0xACF0, 0xFFFD, -/* 2C80 */ 0xFFFD, 0xAFB6, 0xD2F8, 0xD2F6, 0xD2FC, 0xAFB7, 0xD2F7, 0xD2FB, -/* 2C88 */ 0xD2F9, 0xD2FA, 0xFFFD, 0xFFFD, 0xD6C8, 0xD6CA, 0xFFFD, 0xB2BF, -/* 2C90 */ 0xFFFD, 0xD6C9, 0xB2C0, 0xB5A2, 0xB5A1, 0xB57E, 0xDADB, 0xFFFD, -/* 2C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDF44, 0xB85D, 0xB85E, 0xFFFD, 0xDF43, -/* 2CA0 */ 0xDF42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE34A, 0xBADB, 0xBADA, -/* 2CA8 */ 0xE34B, 0xE34C, 0xFFFD, 0xBD61, 0xBD60, 0xFFFD, 0xEAB5, 0xE6D3, -/* 2CB0 */ 0xE6D5, 0xE6D4, 0xEAB4, 0xEAB2, 0xEAB6, 0xEAB3, 0xFFFD, 0xBF73, -/* 2CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEDB7, 0xC14B, 0xEDB8, 0xEDB9, 0xFFFD, -/* 2CC0 */ 0xFFFD, 0xC2AB, 0xC2AC, 0xFFFD, 0xC475, 0xFFFD, 0xFFFD, 0xC5D1, -/* 2CC8 */ 0xA5DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD041, 0xFFFD, -/* 2CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2FD, 0xAFB8, 0xFFFD, -/* 2CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3BA, 0xB3B9, 0xFFFD, 0xFFFD, -/* 2CE0 */ 0xB5A4, 0xDADD, 0xB5A3, 0xDADC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CE8 */ 0xDF45, 0xFFFD, 0xBADC, 0xE34D, 0xBADD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC476, 0xF4A5, 0xFFFD, 0xA6CB, 0xAAC7, -/* 2CF8 */ 0xCDA7, 0xFFFD, 0xACF2, 0xFFFD, 0xACF1, 0xD042, 0xD043, 0xFFFD, -/* 2D00 */ 0xFFFD, 0xD340, 0xD342, 0xAFB9, 0xFFFD, 0xD344, 0xD347, 0xD345, -/* 2D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD346, 0xD343, 0xD2FE, 0xAFBA, 0xD348, -/* 2D10 */ 0xD341, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6D3, 0xB2C6, 0xD6DC, -/* 2D18 */ 0xB2C3, 0xFFFD, 0xD6D5, 0xB2C7, 0xFFFD, 0xB2C1, 0xFFFD, 0xD6D0, -/* 2D20 */ 0xD6DD, 0xD6D1, 0xD6CE, 0xB2C5, 0xFFFD, 0xB2C2, 0xFFFD, 0xD6D4, -/* 2D28 */ 0xD6D7, 0xB2C4, 0xD6D8, 0xB2C8, 0xD6D9, 0xD6CF, 0xD6D6, 0xD6DA, -/* 2D30 */ 0xD6D2, 0xD6CD, 0xD6CB, 0xFFFD, 0xFFFD, 0xD6DB, 0xFFFD, 0xFFFD, -/* 2D38 */ 0xDADF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAE4, 0xFFFD, 0xFFFD, -/* 2D40 */ 0xFFFD, 0xDAE0, 0xDAE6, 0xB5A7, 0xD6CC, 0xDAE1, 0xB5A5, 0xDADE, -/* 2D48 */ 0xB5AC, 0xDAE2, 0xB5AB, 0xDAE3, 0xB5AD, 0xB5A8, 0xB5AE, 0xB5A9, -/* 2D50 */ 0xFFFD, 0xB5AA, 0xFFFD, 0xB5A6, 0xFFFD, 0xDAE5, 0xFFFD, 0xFFFD, -/* 2D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB861, 0xDF50, 0xFFFD, -/* 2D60 */ 0xDF53, 0xDF47, 0xDF4C, 0xDF46, 0xB863, 0xFFFD, 0xDF4A, 0xFFFD, -/* 2D68 */ 0xFFFD, 0xFFFD, 0xDF48, 0xB862, 0xFFFD, 0xDF4F, 0xDF4E, 0xDF4B, -/* 2D70 */ 0xDF4D, 0xDF49, 0xBAE1, 0xDF52, 0xB85F, 0xDF51, 0xFFFD, 0xFFFD, -/* 2D78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE35D, -/* 2D80 */ 0xFFFD, 0xBAE8, 0xE358, 0xFFFD, 0xBAE7, 0xE34E, 0xFFFD, 0xE350, -/* 2D88 */ 0xBAE0, 0xE355, 0xE354, 0xE357, 0xBAE5, 0xE352, 0xE351, 0xFFFD, -/* 2D90 */ 0xFFFD, 0xBAE4, 0xBADF, 0xE353, 0xBAE2, 0xE359, 0xE35B, 0xFFFD, -/* 2D98 */ 0xE356, 0xE34F, 0xBAE3, 0xFFFD, 0xFFFD, 0xBD69, 0xBADE, 0xFFFD, -/* 2DA0 */ 0xFFFD, 0xE35C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DA8 */ 0xFFFD, 0xE6D9, 0xBD62, 0xFFFD, 0xE6DB, 0xFFFD, 0xBD63, 0xFFFD, -/* 2DB0 */ 0xFFFD, 0xBD65, 0xE6DE, 0xFFFD, 0xE6D6, 0xBAE6, 0xE6DC, 0xFFFD, -/* 2DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE6D8, 0xFFFD, 0xB860, 0xBD68, 0xFFFD, -/* 2DC0 */ 0xFFFD, 0xBD64, 0xFFFD, 0xBD66, 0xBD67, 0xFFFD, 0xBF76, 0xE6DD, -/* 2DC8 */ 0xE6D7, 0xBD6A, 0xFFFD, 0xE6DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DD0 */ 0xFFFD, 0xEAC0, 0xEABB, 0xFFFD, 0xFFFD, 0xEAC5, 0xBF74, 0xEABD, -/* 2DD8 */ 0xBF78, 0xEAC3, 0xEABA, 0xEAB7, 0xEAC6, 0xC151, 0xBF79, 0xEAC2, -/* 2DE0 */ 0xEAB8, 0xBF77, 0xEABC, 0xBF7B, 0xEAB9, 0xEABE, 0xBF7A, 0xEAC1, -/* 2DE8 */ 0xEAC4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDCB, 0xEDCC, 0xEDBC, -/* 2DF0 */ 0xEDC3, 0xEDC1, 0xFFFD, 0xFFFD, 0xC14F, 0xEDC8, 0xEABF, 0xFFFD, -/* 2DF8 */ 0xEDBF, 0xFFFD, 0xEDC9, 0xC14E, 0xEDBE, 0xEDBD, 0xEDC7, 0xEDC4, -/* 2E00 */ 0xEDC6, 0xFFFD, 0xEDBA, 0xEDCA, 0xC14C, 0xFFFD, 0xEDC5, 0xEDCE, -/* 2E08 */ 0xEDC2, 0xC150, 0xC14D, 0xEDC0, 0xEDBB, 0xEDCD, 0xBF75, 0xFFFD, -/* 2E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF063, 0xFFFD, -/* 2E18 */ 0xFFFD, 0xF061, 0xF067, 0xC2B0, 0xF065, 0xF064, 0xC2B2, 0xF06A, -/* 2E20 */ 0xC2B1, 0xFFFD, 0xF06B, 0xF068, 0xC2AE, 0xF069, 0xF062, 0xC2AF, -/* 2E28 */ 0xC2AD, 0xF2AB, 0xF066, 0xFFFD, 0xFFFD, 0xF06C, 0xFFFD, 0xFFFD, -/* 2E30 */ 0xF2A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3B2, 0xC3B0, 0xF2AA, 0xFFFD, -/* 2E38 */ 0xF2AC, 0xF2A9, 0xC3B1, 0xC3AE, 0xC3AF, 0xC3B3, 0xFFFD, 0xFFFD, -/* 2E40 */ 0xC478, 0xFFFD, 0xF4AA, 0xFFFD, 0xF4A9, 0xF4A7, 0xF4A6, 0xF4A8, -/* 2E48 */ 0xFFFD, 0xC477, 0xC479, 0xFFFD, 0xFFFD, 0xC4F0, 0xFFFD, 0xFFFD, -/* 2E50 */ 0xF5E5, 0xF5E4, 0xFFFD, 0xFFFD, 0xF6FA, 0xFFFD, 0xF6FC, 0xF6FE, -/* 2E58 */ 0xF6FD, 0xF6FB, 0xFFFD, 0xFFFD, 0xC5A3, 0xC5A2, 0xFFFD, 0xFFFD, -/* 2E60 */ 0xC5D3, 0xC5D2, 0xC5D4, 0xF7ED, 0xF7EC, 0xFFFD, 0xF8FB, 0xF8B8, -/* 2E68 */ 0xF8FC, 0xC658, 0xFFFD, 0xC659, 0xF96D, 0xFFFD, 0xFFFD, 0xC67E, -/* 2E70 */ 0xA6CC, 0xFFFD, 0xCDA8, 0xFFFD, 0xFFFD, 0xD045, 0xD046, 0xD044, -/* 2E78 */ 0xFFFD, 0xFFFD, 0xACF3, 0xFFFD, 0xD047, 0xD048, 0xD049, 0xFFFD, -/* 2E80 */ 0xFFFD, 0xD349, 0xD34F, 0xFFFD, 0xFFFD, 0xD34D, 0xAFBB, 0xD34B, -/* 2E88 */ 0xFFFD, 0xD34C, 0xD34E, 0xFFFD, 0xFFFD, 0xFFFD, 0xD34A, 0xB2C9, -/* 2E90 */ 0xFFFD, 0xD6DE, 0xB2CB, 0xD6E0, 0xB2CA, 0xD6DF, 0xFFFD, 0xFFFD, -/* 2E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDAE8, 0xB5AF, 0xFFFD, 0xDAEA, 0xDAE7, -/* 2EA0 */ 0xD6E1, 0xFFFD, 0xB5B0, 0xFFFD, 0xF9DB, 0xDAE9, 0xFFFD, 0xFFFD, -/* 2EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDF56, 0xFFFD, 0xB864, 0xDF54, -/* 2EB0 */ 0xB865, 0xDF55, 0xB866, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAE9, 0xE361, -/* 2EB8 */ 0xE35E, 0xE360, 0xBAEA, 0xBAEB, 0xE35F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EC0 */ 0xFFFD, 0xFFFD, 0xE6DF, 0xFFFD, 0xFFFD, 0xE6E0, 0xFFFD, 0xBD6B, -/* 2EC8 */ 0xE6E2, 0xE6E1, 0xFFFD, 0xA261, 0xFFFD, 0xEACA, 0xEACB, 0xEAC7, -/* 2ED0 */ 0xFFFD, 0xEAC8, 0xBF7C, 0xBF7D, 0xEAC9, 0xFFFD, 0xC157, 0xFFFD, -/* 2ED8 */ 0xFFFD, 0xC153, 0xC158, 0xC154, 0xC156, 0xC152, 0xFFFD, 0xC155, -/* 2EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2B3, 0xEDCF, 0xFFFD, 0xF2AE, -/* 2EE8 */ 0xFFFD, 0xF2AD, 0xFFFD, 0xF4AB, 0xC47A, 0xC47B, 0xF741, 0xF5E6, -/* 2EF0 */ 0xFFFD, 0xF740, 0xFFFD, 0xF8FD, 0xF9A4, 0xA6CD, 0xFFFD, 0xFFFD, -/* 2EF8 */ 0xA874, 0xFFFD, 0xCDA9, 0xAAC8, 0xFFFD, 0xACF6, 0xD04C, 0xACF4, -/* 2F00 */ 0xD04A, 0xACF9, 0xACF5, 0xACFA, 0xACF8, 0xD04B, 0xACF7, 0xAFBF, -/* 2F08 */ 0xAFBE, 0xD35A, 0xAFC7, 0xD353, 0xD359, 0xAFC3, 0xD352, 0xD358, -/* 2F10 */ 0xD356, 0xAFC2, 0xAFC4, 0xD355, 0xAFBD, 0xD354, 0xAFC8, 0xAFC5, -/* 2F18 */ 0xAFC9, 0xAFC6, 0xD351, 0xD350, 0xD357, 0xAFC0, 0xAFBC, 0xAFC1, -/* 2F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6F0, 0xD6E9, 0xFFFD, -/* 2F28 */ 0xB5B5, 0xD6E8, 0xFFFD, 0xB2CF, 0xB2D6, 0xB2D3, 0xB2D9, 0xB2D8, -/* 2F30 */ 0xB2D4, 0xFFFD, 0xD6E2, 0xD6E5, 0xFFFD, 0xD6E4, 0xB2D0, 0xD6E6, -/* 2F38 */ 0xD6EF, 0xB2D1, 0xD6E3, 0xD6EC, 0xD6ED, 0xB2D2, 0xD6EA, 0xB2D7, -/* 2F40 */ 0xB2CD, 0xB2D5, 0xD6E7, 0xB2CC, 0xD6EB, 0xFFFD, 0xFFFD, 0xD6EE, -/* 2F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDAFB, 0xDAF2, 0xB5B2, 0xDAF9, 0xDAF6, -/* 2F50 */ 0xDAEE, 0xDAF7, 0xB5B4, 0xDAEF, 0xFFFD, 0xDAEB, 0xFFFD, 0xFFFD, -/* 2F58 */ 0xB86C, 0xDAF4, 0xFFFD, 0xB5B1, 0xDAFA, 0xFFFD, 0xB5B8, 0xB5BA, -/* 2F60 */ 0xDAED, 0xFFFD, 0xFFFD, 0xB5B9, 0xDAF0, 0xB5B3, 0xDAF8, 0xDAF1, -/* 2F68 */ 0xDAF5, 0xFFFD, 0xDAF3, 0xB5B6, 0xDAEC, 0xB5BB, 0xB2CE, 0xB5B7, -/* 2F70 */ 0xB5BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB868, 0xDF5D, -/* 2F78 */ 0xDF5F, 0xDF61, 0xDF65, 0xFFFD, 0xDF5B, 0xDF59, 0xB86A, 0xFFFD, -/* 2F80 */ 0xDF60, 0xDF64, 0xDF5C, 0xDF58, 0xFFFD, 0xDF57, 0xFFFD, 0xFFFD, -/* 2F88 */ 0xFFFD, 0xDF62, 0xDF5A, 0xDF5E, 0xB86B, 0xFFFD, 0xB869, 0xDF66, -/* 2F90 */ 0xB867, 0xDF63, 0xFFFD, 0xE372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F98 */ 0xFFFD, 0xBAEE, 0xE36A, 0xBD78, 0xE374, 0xBAF1, 0xE378, 0xBAF7, -/* 2FA0 */ 0xE365, 0xFFFD, 0xFFFD, 0xE375, 0xE362, 0xFFFD, 0xE377, 0xE366, -/* 2FA8 */ 0xFFFD, 0xBAFE, 0xBAFB, 0xE376, 0xE370, 0xBAED, 0xBAF5, 0xBAF4, -/* 2FB0 */ 0xFFFD, 0xBAF3, 0xBAF9, 0xFFFD, 0xE363, 0xBAFA, 0xE371, 0xBAF6, -/* 2FB8 */ 0xBAEC, 0xE373, 0xBAEF, 0xBAF0, 0xBAF8, 0xE368, 0xE367, 0xE364, -/* 2FC0 */ 0xFFFD, 0xE36C, 0xE369, 0xE36D, 0xBAFD, 0xFFFD, 0xE379, 0xBAF2, -/* 2FC8 */ 0xE36E, 0xE36F, 0xFFFD, 0xE36B, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAFC, -/* 2FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E7, 0xBD70, 0xBD79, 0xBD75, -/* 2FD8 */ 0xE6E4, 0xFFFD, 0xBD72, 0xBD76, 0xE6F0, 0xBD6C, 0xE6E8, 0xFFFD, -/* 2FE0 */ 0xBD74, 0xFFFD, 0xFFFD, 0xE6EB, 0xE6E6, 0xBD73, 0xBD77, 0xE6E5, -/* 2FE8 */ 0xFFFD, 0xBD71, 0xFFFD, 0xE6EF, 0xBD6E, 0xE6EE, 0xE6ED, 0xBD7A, -/* 2FF0 */ 0xE572, 0xBD6D, 0xFFFD, 0xE6EC, 0xE6E3, 0xFFFD, 0xBD7B, 0xE6EA, -/* 2FF8 */ 0xBD6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3000 */ 0xE6E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFA2, 0xBFA7, 0xBF7E, -/* 3008 */ 0xEAD8, 0xEACF, 0xEADB, 0xEAD3, 0xEAD9, 0xBFA8, 0xBFA1, 0xEACC, -/* 3010 */ 0xEAD2, 0xEADC, 0xEAD5, 0xEADA, 0xEACE, 0xFFFD, 0xFFFD, 0xEAD6, -/* 3018 */ 0xBFA3, 0xEAD4, 0xBFA6, 0xBFA5, 0xEAD0, 0xEAD1, 0xEACD, 0xEAD7, -/* 3020 */ 0xBFA4, 0xEADE, 0xEADD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDDA, 0xEDD6, -/* 3028 */ 0xC15F, 0xFFFD, 0xEDD0, 0xC159, 0xC169, 0xEDDC, 0xC161, 0xC15D, -/* 3030 */ 0xEDD3, 0xC164, 0xC167, 0xEDDE, 0xC15C, 0xEDD5, 0xC165, 0xEDE0, -/* 3038 */ 0xEDDD, 0xEDD1, 0xC160, 0xC15A, 0xC168, 0xEDD8, 0xC163, 0xEDD2, -/* 3040 */ 0xC15E, 0xEDDF, 0xC162, 0xC15B, 0xEDD9, 0xC166, 0xEDD7, 0xFFFD, -/* 3048 */ 0xFFFD, 0xEDDB, 0xFFFD, 0xFFFD, 0xFFFD, 0xF06E, 0xF074, 0xC2B9, -/* 3050 */ 0xF077, 0xC2B4, 0xC2B5, 0xF06F, 0xF076, 0xF071, 0xC2BA, 0xC2B7, -/* 3058 */ 0xFFFD, 0xF06D, 0xFFFD, 0xC2B6, 0xF073, 0xF075, 0xC2B8, 0xF072, -/* 3060 */ 0xF070, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2B8, 0xC3B7, 0xC3B8, -/* 3068 */ 0xC3B4, 0xFFFD, 0xC3B5, 0xFFFD, 0xF2B4, 0xF2B2, 0xFFFD, 0xF2B6, -/* 3070 */ 0xC3BA, 0xF2B7, 0xF2B0, 0xF2AF, 0xF2B3, 0xF2B1, 0xC3B6, 0xF2B5, -/* 3078 */ 0xF4AC, 0xC47E, 0xC47D, 0xF4AD, 0xFFFD, 0xF4AF, 0xF4AE, 0xC4A1, -/* 3080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF5EB, 0xF5E8, 0xF5E9, 0xFFFD, 0xF5E7, -/* 3088 */ 0xF5EA, 0xC4F2, 0xF5EC, 0xFFFD, 0xC4F1, 0xFFFD, 0xF742, 0xFFFD, -/* 3090 */ 0xC5D5, 0xC5D7, 0xF7EE, 0xC5D6, 0xF8B9, 0xF940, 0xF942, 0xF8FE, -/* 3098 */ 0xF941, 0xC66C, 0xA6CE, 0xFFFD, 0xACFB, 0xD26F, 0xAFCA, 0xFFFD, -/* 30A0 */ 0xFFFD, 0xB2DA, 0xDAFC, 0xDAFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEADF, -/* 30A8 */ 0xC16A, 0xEDE1, 0xFFFD, 0xFFFD, 0xC2BB, 0xFFFD, 0xF2BA, 0xF2B9, -/* 30B0 */ 0xC4A2, 0xF5ED, 0xFFFD, 0xF743, 0xC5F8, 0xCA49, 0xFFFD, 0xFFFD, -/* 30B8 */ 0xAAC9, 0xA875, 0xFFFD, 0xFFFD, 0xD04D, 0xFFFD, 0xFFFD, 0xD360, -/* 30C0 */ 0xD35B, 0xD35F, 0xD35D, 0xAFCB, 0xD35E, 0xD35C, 0xFFFD, 0xD6F1, -/* 30C8 */ 0xFFFD, 0xDAFE, 0xDB40, 0xDF69, 0xDF6A, 0xB86E, 0xB86F, 0xDF68, -/* 30D0 */ 0xDF6B, 0xDF67, 0xB86D, 0xFFFD, 0xBB40, 0xFFFD, 0xB870, 0xE37A, -/* 30D8 */ 0xFFFD, 0xBD7C, 0xE6F1, 0xBD7D, 0xFFFD, 0xBFA9, 0xEAE2, 0xEAE0, -/* 30E0 */ 0xEAE1, 0xEDE4, 0xEDE3, 0xEDE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xF2BB, -/* 30E8 */ 0xFFFD, 0xC3B9, 0xF2BC, 0xF744, 0xC5F9, 0xF8BA, 0xA6CF, 0xAACB, -/* 30F0 */ 0xAACA, 0xD04F, 0xACFC, 0xFFFD, 0xFFFD, 0xD04E, 0xD362, 0xFFFD, -/* 30F8 */ 0xAFCC, 0xD6F2, 0xD361, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2DC, 0xD6F5, -/* 3100 */ 0xD6F3, 0xD6F4, 0xB2DB, 0xFFFD, 0xDB42, 0xDB43, 0xDB41, 0xFFFD, -/* 3108 */ 0xB873, 0xDF6D, 0xDF6C, 0xDF6E, 0xB872, 0xB871, 0xFFFD, 0xFFFD, -/* 3110 */ 0xE6F2, 0xE6F4, 0xFFFD, 0xBD7E, 0xE6F3, 0xEAE3, 0xBFAA, 0xF079, -/* 3118 */ 0xFFFD, 0xF078, 0xC3BB, 0xF2BD, 0xC3BD, 0xC3BC, 0xF4B0, 0xF5EE, -/* 3120 */ 0xC4F3, 0xA6D0, 0xD050, 0xACFD, 0xD365, 0xAFCE, 0xD364, 0xD363, -/* 3128 */ 0xFFFD, 0xAFCD, 0xFFFD, 0xD6FB, 0xFFFD, 0xD6FD, 0xD6F6, 0xD6F7, -/* 3130 */ 0xB2DD, 0xD6F8, 0xB2DE, 0xD6FC, 0xD6F9, 0xD6FA, 0xB2DF, 0xFFFD, -/* 3138 */ 0xB5BE, 0xB5BF, 0xFFFD, 0xDB44, 0xFFFD, 0xFFFD, 0xFFFD, 0xDF6F, -/* 3140 */ 0xDF70, 0xFFFD, 0xE37E, 0xBB43, 0xBB41, 0xBB42, 0xE37B, 0xE37C, -/* 3148 */ 0xFFFD, 0xE37D, 0xE6F9, 0xFFFD, 0xE6FA, 0xBDA1, 0xE6F7, 0xE6F6, -/* 3150 */ 0xE6F8, 0xE6F5, 0xBFAD, 0xEAE4, 0xBFAB, 0xBFAC, 0xEDE6, 0xC16B, -/* 3158 */ 0xEDE5, 0xEFA8, 0xFFFD, 0xF07A, 0xF07B, 0xC2BC, 0xFFFD, 0xC2BD, -/* 3160 */ 0xC16C, 0xF2BE, 0xF2BF, 0xF4B1, 0xC4A3, 0xA6D1, 0xFFFD, 0xA6D2, -/* 3168 */ 0xACFE, 0xAACC, 0xAFCF, 0xD051, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5C0, -/* 3170 */ 0xA6D3, 0xAD41, 0xD052, 0xD053, 0xAD40, 0xAD42, 0xA6D4, 0xFFFD, -/* 3178 */ 0xD054, 0xAFD1, 0xD366, 0xAFD3, 0xAFD0, 0xAFD2, 0xFFFD, 0xD741, -/* 3180 */ 0xB2E0, 0xFFFD, 0xD740, 0xD6FE, 0xFFFD, 0xDF71, 0xFFFD, 0xFFFD, -/* 3188 */ 0xE3A1, 0xFFFD, 0xBDA2, 0xFFFD, 0xBFAE, 0xEAE6, 0xEAE5, 0xFFFD, -/* 3190 */ 0xEDE7, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5EF, 0xFFFD, 0xFFFD, 0xA6D5, -/* 3198 */ 0xCB73, 0xCDAA, 0xAD43, 0xD055, 0xFFFD, 0xD368, 0xFFFD, 0xFFFD, -/* 31A0 */ 0xFFFD, 0xAFD4, 0xD367, 0xAFD5, 0xFFFD, 0xFFFD, 0xFFFD, 0xD743, -/* 31A8 */ 0xFFFD, 0xFFFD, 0xB2E2, 0xD742, 0xD744, 0xFFFD, 0xB2E1, 0xFFFD, -/* 31B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDB46, 0xDB47, 0xDB45, 0xB5C1, 0xFFFD, -/* 31B8 */ 0xFFFD, 0xFFFD, 0xB874, 0xFFFD, 0xB875, 0xFFFD, 0xBB45, 0xFFFD, -/* 31C0 */ 0xE3A3, 0xE3A2, 0xBB44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31C8 */ 0xE6FB, 0xFFFD, 0xFFFD, 0xE6FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31D0 */ 0xEAE7, 0xFFFD, 0xFFFD, 0xC170, 0xC16F, 0xC16D, 0xC16E, 0xC171, -/* 31D8 */ 0xFFFD, 0xF07C, 0xC2BF, 0xC2BE, 0xF2C0, 0xF4B2, 0xFFFD, 0xFFFD, -/* 31E0 */ 0xFFFD, 0xC5A5, 0xC5A4, 0xA6D6, 0xFFFD, 0xFFFD, 0xD1FB, 0xFFFD, -/* 31E8 */ 0xB877, 0xB5C2, 0xB876, 0xBB46, 0xFFFD, 0xA6D7, 0xC9A9, 0xA6D8, -/* 31F0 */ 0xA6D9, 0xFFFD, 0xFFFD, 0xCDAB, 0xCB76, 0xFFFD, 0xCB77, 0xA877, -/* 31F8 */ 0xFFFD, 0xCB74, 0xA876, 0xFFFD, 0xA879, 0xCB75, 0xA87B, 0xA87A, -/* 3200 */ 0xCB78, 0xA878, 0xFFFD, 0xFFFD, 0xFFFD, 0xAAD1, 0xAACF, 0xCDAD, -/* 3208 */ 0xFFFD, 0xAACE, 0xFFFD, 0xFFFD, 0xFFFD, 0xAAD3, 0xAAD5, 0xAAD2, -/* 3210 */ 0xFFFD, 0xCDB0, 0xCDAC, 0xAAD6, 0xFFFD, 0xAAD0, 0xA87C, 0xFFFD, -/* 3218 */ 0xAAD4, 0xCDAF, 0xFFFD, 0xFFFD, 0xCDAE, 0xFFFD, 0xAACD, 0xFFFD, -/* 3220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD05B, 0xAD47, -/* 3228 */ 0xAD48, 0xD05D, 0xFFFD, 0xD057, 0xD05A, 0xD063, 0xD061, 0xFFFD, -/* 3230 */ 0xAD49, 0xD067, 0xAD4C, 0xD064, 0xD05C, 0xD059, 0xFFFD, 0xFFFD, -/* 3238 */ 0xDB49, 0xD062, 0xAD44, 0xD065, 0xD056, 0xD05F, 0xAD46, 0xAD4B, -/* 3240 */ 0xD060, 0xAD4F, 0xAD4D, 0xFFFD, 0xD058, 0xAD4A, 0xFFFD, 0xD05E, -/* 3248 */ 0xAD4E, 0xAD45, 0xD066, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3250 */ 0xFFFD, 0xAFDA, 0xFFFD, 0xAFE3, 0xAFD8, 0xAFD6, 0xD36A, 0xAFDE, -/* 3258 */ 0xAFDB, 0xD36C, 0xFFFD, 0xFFFD, 0xAFDD, 0xD36B, 0xD369, 0xD36E, -/* 3260 */ 0xAFE2, 0xAFE0, 0xDB48, 0xFFFD, 0xD36F, 0xD36D, 0xAFD7, 0xFFFD, -/* 3268 */ 0xFFFD, 0xAFD9, 0xAFDC, 0xFFFD, 0xAFDF, 0xFFFD, 0xAFE1, 0xFFFD, -/* 3270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3278 */ 0xFFFD, 0xD74E, 0xB2E4, 0xFFFD, 0xD745, 0xD747, 0xFFFD, 0xD748, -/* 3280 */ 0xFFFD, 0xD750, 0xD74C, 0xD74A, 0xFFFD, 0xD74D, 0xD751, 0xB2E5, -/* 3288 */ 0xB2E9, 0xD746, 0xFFFD, 0xD74F, 0xFFFD, 0xB2E7, 0xFFFD, 0xB2E6, -/* 3290 */ 0xD74B, 0xD749, 0xFFFD, 0xB2E3, 0xB2E8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5C8, 0xDB51, 0xFFFD, -/* 32A0 */ 0xFFFD, 0xDB4F, 0xB5CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDB4A, -/* 32A8 */ 0xDFA1, 0xFFFD, 0xB5C9, 0xDB4E, 0xFFFD, 0xFFFD, 0xDB4B, 0xB5C5, -/* 32B0 */ 0xB5CB, 0xDB50, 0xB5C7, 0xDB4D, 0xBB47, 0xB5C6, 0xDB4C, 0xB5CC, -/* 32B8 */ 0xB5C4, 0xB5C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDF77, -/* 32C0 */ 0xDF75, 0xFFFD, 0xDF7B, 0xFFFD, 0xDF73, 0xDFA2, 0xDF78, 0xFFFD, -/* 32C8 */ 0xDF72, 0xB87B, 0xB8A3, 0xDF7D, 0xFFFD, 0xDF76, 0xFFFD, 0xB87E, -/* 32D0 */ 0xFFFD, 0xFFFD, 0xB87C, 0xDF7E, 0xB879, 0xB878, 0xDF79, 0xB87D, -/* 32D8 */ 0xB5CD, 0xFFFD, 0xDF7C, 0xDF74, 0xB87A, 0xB8A1, 0xB8A2, 0xFFFD, -/* 32E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBB4C, 0xBB48, 0xFFFD, 0xBB4D, 0xE3A6, -/* 32E8 */ 0xFFFD, 0xFFFD, 0xE3A5, 0xE3A7, 0xBB4A, 0xE3A4, 0xBB4B, 0xE3AA, -/* 32F0 */ 0xE3A9, 0xE3A8, 0xFFFD, 0xBB49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32F8 */ 0xFFFD, 0xE741, 0xFFFD, 0xE744, 0xBDA8, 0xE743, 0xBDA7, 0xBDA3, -/* 3300 */ 0xBDA4, 0xBDA5, 0xE740, 0xE6FE, 0xBDA6, 0xFFFD, 0xE742, 0xE6FD, -/* 3308 */ 0xFFFD, 0xFFFD, 0xEAE9, 0xEAF3, 0xBFB1, 0xBFB0, 0xFFFD, 0xEAED, -/* 3310 */ 0xEAEF, 0xFFFD, 0xEAEA, 0xFFFD, 0xEAEE, 0xEAE8, 0xEAF1, 0xBFAF, -/* 3318 */ 0xEAF0, 0xEAEC, 0xFFFD, 0xEAF2, 0xFFFD, 0xEAEB, 0xC174, 0xEDE8, -/* 3320 */ 0xEDEE, 0xC178, 0xC17A, 0xC177, 0xC176, 0xFFFD, 0xC175, 0xC173, -/* 3328 */ 0xEDE9, 0xEDEC, 0xC172, 0xEDED, 0xFFFD, 0xC179, 0xEDEB, 0xFFFD, -/* 3330 */ 0xEDEA, 0xC2C0, 0xFFFD, 0xC2C1, 0xF0A1, 0xF07D, 0xF07E, 0xFFFD, -/* 3338 */ 0xFFFD, 0xF2C2, 0xFFFD, 0xF2C1, 0xC3BE, 0xF4B4, 0xC4A4, 0xF4B3, -/* 3340 */ 0xFFFD, 0xF5F0, 0xF745, 0xC5A6, 0xF943, 0xF944, 0xC5D8, 0xA6DA, -/* 3348 */ 0xFFFD, 0xAAD7, 0xDB52, 0xBB4E, 0xC17B, 0xEDEF, 0xA6DB, 0xFFFD, -/* 3350 */ 0xAFE5, 0xAFE4, 0xDB53, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAF4, 0xA6DC, -/* 3358 */ 0xAD50, 0xFFFD, 0xFFFD, 0xDB54, 0xDB55, 0xDB56, 0xBB4F, 0xBFB2, -/* 3360 */ 0xA6DD, 0xFFFD, 0xAAD8, 0xD068, 0xAFE6, 0xD370, 0xB2EA, 0xFFFD, -/* 3368 */ 0xDB57, 0xB8A4, 0xFFFD, 0xBB50, 0xBFB3, 0xC17C, 0xC2C2, 0xF4B5, -/* 3370 */ 0xA6DE, 0xAAD9, 0xFFFD, 0xFFFD, 0xAFE7, 0xD752, 0xB5CE, 0xFFFD, -/* 3378 */ 0xBB51, 0xE3AB, 0xE745, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA6DF, -/* 3380 */ 0xB5CF, 0xDFA3, 0xBB52, 0xA6E0, 0xCDB1, 0xD069, 0xAD51, 0xFFFD, -/* 3388 */ 0xFFFD, 0xD372, 0xFFFD, 0xFFFD, 0xAFEA, 0xFFFD, 0xAFE8, 0xAFE9, -/* 3390 */ 0xAFEB, 0xFFFD, 0xFFFD, 0xD371, 0xFFFD, 0xFFFD, 0xD757, 0xD754, -/* 3398 */ 0xD756, 0xB2EB, 0xB2ED, 0xB2EC, 0xD753, 0xB2EE, 0xD755, 0xFFFD, -/* 33A0 */ 0xDB58, 0xDB59, 0xFFFD, 0xDB5A, 0xDFA6, 0xFFFD, 0xDFA7, 0xFFFD, -/* 33A8 */ 0xDFA5, 0xDFA8, 0xFFFD, 0xB8A5, 0xFFFD, 0xDFA4, 0xFFFD, 0xBB53, -/* 33B0 */ 0xFFFD, 0xFFFD, 0xE74A, 0xE746, 0xE749, 0xE74B, 0xE748, 0xE747, -/* 33B8 */ 0xFFFD, 0xEAF5, 0xEAF6, 0xEAF7, 0xBFB4, 0xBFB5, 0xEDF1, 0xEDF0, -/* 33C0 */ 0xEDF2, 0xFFFD, 0xF0A3, 0xF0A2, 0xFFFD, 0xF2C4, 0xFFFD, 0xF2C5, -/* 33C8 */ 0xF2C3, 0xFFFD, 0xC4A5, 0xFFFD, 0xF4B6, 0xF4B7, 0xFFFD, 0xF746, -/* 33D0 */ 0xF7EF, 0xF8BB, 0xA6E1, 0xA87D, 0xFFFD, 0xC17D, 0xA6E2, 0xFFFD, -/* 33D8 */ 0xD758, 0xDB5B, 0xFFFD, 0xC641, 0xCA4A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33E0 */ 0xCA4B, 0xCA4D, 0xA6E3, 0xCA4E, 0xCA4C, 0xFFFD, 0xFFFD, 0xCBA2, -/* 33E8 */ 0xCBA3, 0xCB7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBA1, 0xA8A1, -/* 33F0 */ 0xFFFD, 0xA8A2, 0xCB7C, 0xCB7A, 0xCB79, 0xCB7D, 0xA87E, 0xCB7E, -/* 33F8 */ 0xD06A, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDB6, 0xAADC, 0xCDB5, 0xCDB7, -/* 3400 */ 0xFFFD, 0xAADB, 0xCDBC, 0xAADF, 0xCDB2, 0xCDC0, 0xCDC6, 0xAAE6, -/* 3408 */ 0xCDC3, 0xAAE3, 0xFFFD, 0xCDB9, 0xCDBF, 0xCDC1, 0xFFFD, 0xCDB4, -/* 3410 */ 0xAAE2, 0xAADD, 0xCDBA, 0xAAE4, 0xAAE7, 0xAAE1, 0xFFFD, 0xAADA, -/* 3418 */ 0xCDBE, 0xCDB8, 0xCDC5, 0xAAE9, 0xAAE5, 0xAAE0, 0xCDBD, 0xAFEC, -/* 3420 */ 0xCDBB, 0xAADE, 0xAAE8, 0xFFFD, 0xCDB3, 0xFFFD, 0xCDC2, 0xCDC4, -/* 3428 */ 0xAD62, 0xAD5C, 0xAD64, 0xAD61, 0xD071, 0xD074, 0xAD5D, 0xFFFD, -/* 3430 */ 0xD06B, 0xFFFD, 0xAD56, 0xAD60, 0xFFFD, 0xAD63, 0xAD65, 0xD0A2, -/* 3438 */ 0xD077, 0xFFFD, 0xAD55, 0xD0A1, 0xAD59, 0xAD57, 0xAD52, 0xD06F, -/* 3440 */ 0xFFFD, 0xD07E, 0xD073, 0xD076, 0xD0A5, 0xFFFD, 0xAD66, 0xD07D, -/* 3448 */ 0xAD5E, 0xD078, 0xD0A4, 0xD075, 0xD079, 0xD07C, 0xFFFD, 0xFFFD, -/* 3450 */ 0xD06D, 0xD0A3, 0xD07B, 0xFFFD, 0xFFFD, 0xD06C, 0xFFFD, 0xD070, -/* 3458 */ 0xAD5F, 0xAD5A, 0xAD53, 0xAD58, 0xAD54, 0xAD67, 0xD06E, 0xD3A5, -/* 3460 */ 0xAD5B, 0xFFFD, 0xFFFD, 0xD07A, 0xCE41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3A8, 0xAFFA, 0xFFFD, -/* 3470 */ 0xD376, 0xFFFD, 0xD3A3, 0xD37D, 0xFFFD, 0xD3B2, 0xFFFD, 0xD3AA, -/* 3478 */ 0xFFFD, 0xD37E, 0xFFFD, 0xD3A9, 0xD378, 0xD37C, 0xD3B5, 0xAFFD, -/* 3480 */ 0xD3AD, 0xD3A4, 0xAFED, 0xD3B3, 0xD374, 0xFFFD, 0xD3AC, 0xFFFD, -/* 3488 */ 0xAFFC, 0xAFF7, 0xD373, 0xAFF5, 0xAFF4, 0xAFF9, 0xD3AB, 0xAFF1, -/* 3490 */ 0xAFF8, 0xD072, 0xDB5C, 0xD3A6, 0xFFFD, 0xFFFD, 0xD37A, 0xAFFB, -/* 3498 */ 0xD37B, 0xD3A1, 0xAFFE, 0xD375, 0xD3AF, 0xFFFD, 0xD3AE, 0xD3B6, -/* 34A0 */ 0xAFF3, 0xAFF0, 0xD3B4, 0xD3B0, 0xD3A7, 0xD3A2, 0xAFF6, 0xAFF2, -/* 34A8 */ 0xD377, 0xAFEE, 0xD3B1, 0xAFEF, 0xFFFD, 0xD379, 0xD75E, 0xD760, -/* 34B0 */ 0xD765, 0xD779, 0xB2FC, 0xB2F2, 0xFFFD, 0xD75D, 0xB2FD, 0xB2FE, -/* 34B8 */ 0xD768, 0xD76F, 0xD775, 0xFFFD, 0xD762, 0xFFFD, 0xD769, 0xFFFD, -/* 34C0 */ 0xFFFD, 0xB340, 0xD777, 0xD772, 0xB2FA, 0xB2F8, 0xD76E, 0xD76A, -/* 34C8 */ 0xD75C, 0xB2EF, 0xD761, 0xD759, 0xFFFD, 0xB2F7, 0xB2F9, 0xD766, -/* 34D0 */ 0xD763, 0xB2F4, 0xD773, 0xB2F1, 0xD764, 0xD77A, 0xD76C, 0xFFFD, -/* 34D8 */ 0xD76B, 0xB2F0, 0xFFFD, 0xB2FB, 0xFFFD, 0xB2F3, 0xD75A, 0xD75F, -/* 34E0 */ 0xD770, 0xD776, 0xB341, 0xD75B, 0xD767, 0xD76D, 0xB2F6, 0xFFFD, -/* 34E8 */ 0xFFFD, 0xD778, 0xD771, 0xD774, 0xB2F5, 0xFFFD, 0xDB6C, 0xDB60, -/* 34F0 */ 0xB5D7, 0xDB7D, 0xDBA7, 0xDBAA, 0xB5D5, 0xDB68, 0xDBA3, 0xDB69, -/* 34F8 */ 0xDB77, 0xB5E2, 0xDB73, 0xB5DF, 0xFFFD, 0xDB74, 0xDB5D, 0xFFFD, -/* 3500 */ 0xDBA4, 0xFFFD, 0xFFFD, 0xB5E8, 0xDBA1, 0xDB75, 0xDBAC, 0xDB70, -/* 3508 */ 0xDFC8, 0xFFFD, 0xDBAF, 0xB5E6, 0xDB6E, 0xDB7A, 0xB5E9, 0xB5D4, -/* 3510 */ 0xDB72, 0xDBAD, 0xDB6B, 0xDB64, 0xDB6F, 0xFFFD, 0xDB63, 0xDB61, -/* 3518 */ 0xB5D0, 0xDBA5, 0xDB6A, 0xDBA8, 0xFFFD, 0xDBA9, 0xB5D8, 0xB5DD, -/* 3520 */ 0xB5D9, 0xB5E1, 0xDB7E, 0xB5DA, 0xDB76, 0xDB66, 0xFFFD, 0xB5D2, -/* 3528 */ 0xDB5E, 0xDBA2, 0xDBAB, 0xDB65, 0xB5E0, 0xDBB0, 0xDB71, 0xFFFD, -/* 3530 */ 0xDB6D, 0xFFFD, 0xB5D1, 0xB5E5, 0xFFFD, 0xDB7C, 0xB5E7, 0xFFFD, -/* 3538 */ 0xDB78, 0xB5DC, 0xB5D6, 0xB5DE, 0xB5D3, 0xB5E4, 0xDB79, 0xDB67, -/* 3540 */ 0xDB7B, 0xDB62, 0xDBA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3548 */ 0xFFFD, 0xFFFD, 0xDBAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3550 */ 0xFFFD, 0xFFFD, 0xDB5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3558 */ 0xDFC7, 0xFFFD, 0xDFDD, 0xB855, 0xDFCC, 0xFFFD, 0xDFCA, 0xDFB5, -/* 3560 */ 0xB8A9, 0xDFC5, 0xDFD9, 0xDFC1, 0xB8B1, 0xDFD8, 0xDFBF, 0xB5E3, -/* 3568 */ 0xDFCF, 0xDFC0, 0xDFD6, 0xB8B0, 0xB8A8, 0xFFFD, 0xDFAA, 0xDFB2, -/* 3570 */ 0xFFFD, 0xDFCB, 0xDFC3, 0xDFDC, 0xDFC6, 0xB8B6, 0xDFD7, 0xFFFD, -/* 3578 */ 0xB8AD, 0xFFFD, 0xDFC9, 0xDFD1, 0xDFB6, 0xDFD0, 0xFFFD, 0xDFE1, -/* 3580 */ 0xDFB1, 0xDFD2, 0xFFFD, 0xDFDF, 0xFFFD, 0xDFAB, 0xB5DB, 0xFFFD, -/* 3588 */ 0xDFB9, 0xDFB8, 0xB8AF, 0xFFFD, 0xDFBC, 0xDFBE, 0xDFCD, 0xDFDE, -/* 3590 */ 0xB8B2, 0xFFFD, 0xB8B3, 0xFFFD, 0xDFB0, 0xB8AB, 0xDFB4, 0xDFDA, -/* 3598 */ 0xB8B4, 0xFFFD, 0xB8AC, 0xB8AE, 0xB8B5, 0xDFE0, 0xDFD3, 0xDFCE, -/* 35A0 */ 0xFFFD, 0xFFFD, 0xDFBB, 0xDFBA, 0xB8AA, 0xDFAC, 0xB8A7, 0xDFC4, -/* 35A8 */ 0xDFAD, 0xDFC2, 0xFFFD, 0xFFFD, 0xDFB7, 0xDFDB, 0xFFFD, 0xFFFD, -/* 35B0 */ 0xFFFD, 0xB8A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFB3, 0xFFFD, 0xFFFD, -/* 35B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDFAF, 0xDFD5, 0xDFAE, 0xBB60, -/* 35C0 */ 0xE3D3, 0xFFFD, 0xFFFD, 0xE3C2, 0xFFFD, 0xFFFD, 0xE3AC, 0xE3CA, -/* 35C8 */ 0xBB58, 0xE3BB, 0xE3C5, 0xBB5B, 0xE3BE, 0xBB59, 0xE3AF, 0xE3CD, -/* 35D0 */ 0xE3AE, 0xE3C1, 0xFFFD, 0xE3AD, 0xFFFD, 0xFFFD, 0xE3BF, 0xE3C8, -/* 35D8 */ 0xE3C6, 0xE3BA, 0xE3B5, 0xE3B3, 0xFFFD, 0xE3B4, 0xE3C7, 0xE3D2, -/* 35E0 */ 0xE3BC, 0xBB5A, 0xFFFD, 0xE3B7, 0xFFFD, 0xE3CB, 0xFFFD, 0xBB5D, -/* 35E8 */ 0xE3B6, 0xE3B0, 0xE3C0, 0xBB61, 0xFFFD, 0xFFFD, 0xBB55, 0xBB5E, -/* 35F0 */ 0xE3B8, 0xE3B2, 0xFFFD, 0xBB57, 0xDFD4, 0xBB56, 0xE3C3, 0xFFFD, -/* 35F8 */ 0xBB54, 0xBB63, 0xBB5C, 0xE3C4, 0xE3B9, 0xE3B1, 0xE3CC, 0xE3BD, -/* 3600 */ 0xBB62, 0xE3D0, 0xBB5F, 0xE3CF, 0xFFFD, 0xE3C9, 0xE3CE, 0xFFFD, -/* 3608 */ 0xFFFD, 0xFFFD, 0xE3D1, 0xE773, 0xE774, 0xE767, 0xE766, 0xE762, -/* 3610 */ 0xBDB4, 0xFFFD, 0xBDAC, 0xE776, 0xE775, 0xDFA9, 0xE75F, 0xE763, -/* 3618 */ 0xE75D, 0xFFFD, 0xE770, 0xE761, 0xFFFD, 0xE777, 0xE75A, 0xE758, -/* 3620 */ 0xE764, 0xE76E, 0xE769, 0xBDB6, 0xE74F, 0xFFFD, 0xE76D, 0xFFFD, -/* 3628 */ 0xFFFD, 0xFFFD, 0xBDB7, 0xDFBD, 0xE75B, 0xE752, 0xE755, 0xE77B, -/* 3630 */ 0xE75C, 0xE753, 0xE751, 0xE74E, 0xFFFD, 0xBDB0, 0xE765, 0xBDAF, -/* 3638 */ 0xBDB3, 0xE760, 0xE768, 0xBDA9, 0xE778, 0xE77C, 0xBDAB, 0xFFFD, -/* 3640 */ 0xE757, 0xE76B, 0xE76F, 0xE754, 0xE779, 0xBDB2, 0xFFFD, 0xBDB1, -/* 3648 */ 0xE74C, 0xBDB5, 0xE772, 0xE756, 0xE76A, 0xE750, 0xE75E, 0xE759, -/* 3650 */ 0xBDAD, 0xBDAE, 0xE76C, 0xE77D, 0xE77A, 0xE771, 0xFFFD, 0xFFFD, -/* 3658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE74D, -/* 3660 */ 0xFFFD, 0xBDAA, 0xEB49, 0xFFFD, 0xEB40, 0xEB43, 0xFFFD, 0xBFBB, -/* 3668 */ 0xEB45, 0xEAF9, 0xEB41, 0xEB47, 0xBFB8, 0xBFBC, 0xBFB6, 0xFFFD, -/* 3670 */ 0xFFFD, 0xEAFB, 0xEB4C, 0xFFFD, 0xFFFD, 0xEB46, 0xFFFD, 0xEAFC, -/* 3678 */ 0xEB55, 0xEB4F, 0xEAF8, 0xEE46, 0xEAFE, 0xBFB7, 0xFFFD, 0xEB4A, -/* 3680 */ 0xFFFD, 0xEB54, 0xBFBF, 0xFFFD, 0xEB51, 0xEAFD, 0xEB44, 0xEB48, -/* 3688 */ 0xEB42, 0xEB56, 0xEB53, 0xEB50, 0xBFB9, 0xBFBA, 0xBFBE, 0xEAFA, -/* 3690 */ 0xEB57, 0xBFBD, 0xEB4D, 0xFFFD, 0xFFFD, 0xEB4B, 0xFFFD, 0xFFFD, -/* 3698 */ 0xFFFD, 0xEB4E, 0xEE53, 0xEE40, 0xEE45, 0xEE52, 0xEE44, 0xEDFB, -/* 36A0 */ 0xEE41, 0xFFFD, 0xC1A2, 0xFFFD, 0xEDF4, 0xEE4D, 0xEE4F, 0xEDF3, -/* 36A8 */ 0xC1A1, 0xEE51, 0xEE49, 0xC1A8, 0xEE50, 0xEE42, 0xC1AA, 0xEDF9, -/* 36B0 */ 0xEB52, 0xEE4A, 0xEE47, 0xEDF5, 0xEE55, 0xC1A4, 0xFFFD, 0xFFFD, -/* 36B8 */ 0xC1A5, 0xEDF7, 0xEE48, 0xFFFD, 0xEE54, 0xEE4B, 0xEDFD, 0xC1A7, -/* 36C0 */ 0xC1A3, 0xEE4C, 0xEDFE, 0xEE56, 0xEDF8, 0xEE43, 0xEE4E, 0xEDFA, -/* 36C8 */ 0xEDFC, 0xFFFD, 0xC2CB, 0xEDF6, 0xC1A9, 0xC2C4, 0xC17E, 0xFFFD, -/* 36D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC1A6, 0xC2C8, 0xF0B3, 0xFFFD, 0xF0A9, -/* 36D8 */ 0xF0A4, 0xF0AA, 0xF0B4, 0xF0B8, 0xF0B7, 0xC2CA, 0xC2C9, 0xFFFD, -/* 36E0 */ 0xFFFD, 0xF0AB, 0xF0B9, 0xF0AE, 0xF0A6, 0xFFFD, 0xF0A8, 0xF0A7, -/* 36E8 */ 0xF0AD, 0xF0B2, 0xF0A5, 0xF0AC, 0xF0B1, 0xC2C7, 0xFFFD, 0xF0AF, -/* 36F0 */ 0xFFFD, 0xC2C5, 0xF0B0, 0xC2C3, 0xC2C6, 0xF2D5, 0xF0B5, 0xFFFD, -/* 36F8 */ 0xFFFD, 0xC3C2, 0xFFFD, 0xF2CD, 0xF2D1, 0xF2C9, 0xF2CC, 0xFFFD, -/* 3700 */ 0xF2D4, 0xC3C0, 0xF2D9, 0xF2D2, 0xFFFD, 0xF2CA, 0xF2DA, 0xF2D3, -/* 3708 */ 0xC3C3, 0xC3C4, 0xF2D7, 0xFFFD, 0xF2CB, 0xC3BF, 0xC3C1, 0xF2C6, -/* 3710 */ 0xF2CE, 0xF2C8, 0xFFFD, 0xF2D8, 0xF2D6, 0xF2C7, 0xF2CF, 0xFFFD, -/* 3718 */ 0xFFFD, 0xFFFD, 0xF4BE, 0xC3C5, 0xF2D0, 0xC4A7, 0xC4A9, 0xC4A6, -/* 3720 */ 0xFFFD, 0xF4C3, 0xF4BB, 0xF4B9, 0xF4BD, 0xF4BA, 0xFFFD, 0xFFFD, -/* 3728 */ 0xF4BF, 0xF4C1, 0xC4AA, 0xC4AC, 0xFFFD, 0xF4C0, 0xC4AD, 0xC4AB, -/* 3730 */ 0xF4C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4A8, 0xFFFD, 0xFFFD, -/* 3738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC4F4, 0xF5F1, 0xF5F7, 0xC4F6, 0xF4BC, -/* 3740 */ 0xF5F6, 0xFFFD, 0xF5FD, 0xF5F4, 0xF5FB, 0xF5FA, 0xF4B8, 0xF5F5, -/* 3748 */ 0xF0B6, 0xF5FE, 0xF5F3, 0xF5F8, 0xFFFD, 0xF5FC, 0xF5F2, 0xFFFD, -/* 3750 */ 0xF74A, 0xC4F5, 0xF5F9, 0xFFFD, 0xFFFD, 0xF7F4, 0xF74B, 0xF749, -/* 3758 */ 0xF747, 0xF748, 0xF74C, 0xFFFD, 0xC5D9, 0xF7F2, 0xF7F0, 0xF7F5, -/* 3760 */ 0xF7F3, 0xFFFD, 0xF7F6, 0xC5DA, 0xF7F1, 0xFFFD, 0xFFFD, 0xF8BC, -/* 3768 */ 0xFFFD, 0xFFFD, 0xF945, 0xF946, 0xF947, 0xFFFD, 0xFFFD, 0xF9C7, -/* 3770 */ 0xF9BD, 0xCA4F, 0xAAEA, 0xFFFD, 0xAD68, 0xFFFD, 0xD3B8, 0xD3B7, -/* 3778 */ 0xB040, 0xB342, 0xD77C, 0xFFFD, 0xFFFD, 0xD77B, 0xFFFD, 0xB5EA, -/* 3780 */ 0xB8B8, 0xFFFD, 0xB8B7, 0xB8B9, 0xFFFD, 0xE3D4, 0xE77E, 0xEB58, -/* 3788 */ 0xEB5A, 0xEB59, 0xFFFD, 0xC1AB, 0xEE57, 0xF0BA, 0xF9A5, 0xA6E4, -/* 3790 */ 0xFFFD, 0xCDC9, 0xCDCA, 0xCDC8, 0xCDC7, 0xAAEB, 0xFFFD, 0xD0A9, -/* 3798 */ 0xD0A7, 0xFFFD, 0xFFFD, 0xD0A6, 0xFFFD, 0xAD69, 0xAD6B, 0xAD6A, -/* 37A0 */ 0xD0A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37A8 */ 0xFFFD, 0xD3C4, 0xD3C1, 0xD3BF, 0xFFFD, 0xFFFD, 0xB041, 0xD3C2, -/* 37B0 */ 0xB046, 0xD3BC, 0xD3CB, 0xFFFD, 0xD3CD, 0xD3BD, 0xFFFD, 0xB043, -/* 37B8 */ 0xD3CE, 0xD3C9, 0xD3BB, 0xD3C0, 0xD3CA, 0xD3C6, 0xD3C3, 0xFFFD, -/* 37C0 */ 0xB048, 0xD3CC, 0xD3BE, 0xFFFD, 0xFFFD, 0xD3C7, 0xD3B9, 0xB047, -/* 37C8 */ 0xB044, 0xD3C5, 0xFFFD, 0xD3C8, 0xD3BA, 0xB045, 0xB042, 0xFFFD, -/* 37D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB34C, 0xD7A5, 0xB34B, 0xFFFD, 0xD7A8, -/* 37D8 */ 0xD7AB, 0xB348, 0xB346, 0xD77E, 0xD7A9, 0xD7A7, 0xD7A4, 0xD7AC, -/* 37E0 */ 0xD7AD, 0xD7AF, 0xD7B0, 0xD77D, 0xB345, 0xD7A2, 0xD7A1, 0xD7AE, -/* 37E8 */ 0xB347, 0xD7A3, 0xB349, 0xB344, 0xD7A6, 0xB34D, 0xFFFD, 0xB34A, -/* 37F0 */ 0xD7AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5F1, 0xDBBF, 0xFFFD, 0xDBB4, -/* 37F8 */ 0xB5EE, 0xFFFD, 0xDFE7, 0xDBBD, 0xDBB1, 0xB5EC, 0xDBB6, 0xB5EF, -/* 3800 */ 0xDBBA, 0xDBB8, 0xB5F2, 0xB5EB, 0xFFFD, 0xFFFD, 0xDBB2, 0xDBB5, -/* 3808 */ 0xB5F0, 0xFFFD, 0xDBB3, 0xFFFD, 0xDBBE, 0xDBBC, 0xDBB7, 0xDBB9, -/* 3810 */ 0xDBBB, 0xB5ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3818 */ 0xFFFD, 0xDFE8, 0xDFEE, 0xDFE4, 0xDFEA, 0xB8BA, 0xDFE6, 0xB8C0, -/* 3820 */ 0xFFFD, 0xFFFD, 0xB8BF, 0xFFFD, 0xB8BE, 0xDFED, 0xB8C1, 0xB8C2, -/* 3828 */ 0xDFE3, 0xDFF0, 0xB8C3, 0xB8BD, 0xB8BC, 0xDFEC, 0xB8C4, 0xDFE2, -/* 3830 */ 0xDFE5, 0xDFEF, 0xDFEB, 0xFFFD, 0xFFFD, 0xE3F4, 0xE3E9, 0xB8BB, -/* 3838 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBB6A, 0xE3DD, 0xE3F2, 0xE3DE, -/* 3840 */ 0xBB65, 0xFFFD, 0xE3DB, 0xFFFD, 0xE3E4, 0xE3DC, 0xBB67, 0xE3D6, -/* 3848 */ 0xE3F1, 0xBB68, 0xE3EE, 0xE3EF, 0xE3D7, 0xBB6D, 0xE3E6, 0xFFFD, -/* 3850 */ 0xE3E0, 0xE3E7, 0xE3DA, 0xFFFD, 0xE3F3, 0xE3EB, 0xE3E5, 0xE3D5, -/* 3858 */ 0xBB69, 0xE3EC, 0xFFFD, 0xBB6C, 0xE3F0, 0xFFFD, 0xE3EA, 0xBB66, -/* 3860 */ 0xE3E8, 0xFFFD, 0xE3E2, 0xBB64, 0xE3D9, 0xE3E1, 0xE3ED, 0xE3DF, -/* 3868 */ 0xFFFD, 0xFFFD, 0xE3E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3870 */ 0xBDC1, 0xDFE9, 0xE7B2, 0xE7BB, 0xE7B1, 0xE7AD, 0xE7AA, 0xBDC2, -/* 3878 */ 0xE7A8, 0xBB6B, 0xE7A1, 0xBDC0, 0xE7A7, 0xBDBF, 0xE7AC, 0xE7A9, -/* 3880 */ 0xE7B9, 0xE7B4, 0xE7AE, 0xE7B3, 0xBDBB, 0xE7AB, 0xE7BE, 0xE7A2, -/* 3888 */ 0xE7A3, 0xE7BA, 0xBDBC, 0xE7BF, 0xBDBE, 0xE7C0, 0xE7B0, 0xE3D8, -/* 3890 */ 0xE7B6, 0xE7AF, 0xE7B8, 0xE7B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7A6, -/* 3898 */ 0xBDB9, 0xE7BD, 0xBDBA, 0xE7A4, 0xBDBD, 0xEB64, 0xE7B7, 0xE7BC, -/* 38A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEB61, 0xBDB8, 0xBFC0, -/* 38A8 */ 0xEB6B, 0xEB67, 0xFFFD, 0xEB65, 0xEB60, 0xEB6F, 0xFFFD, 0xFFFD, -/* 38B0 */ 0xFFFD, 0xBFC4, 0xFFFD, 0xEB5C, 0xEB68, 0xEB69, 0xEB5F, 0xEB5E, -/* 38B8 */ 0xEB6C, 0xFFFD, 0xEB62, 0xEB5D, 0xEB63, 0xFFFD, 0xEB6E, 0xEB5B, -/* 38C0 */ 0xEB6D, 0xEB6A, 0xBFC2, 0xBFC1, 0xFFFD, 0xFFFD, 0xBFC3, 0xEB66, -/* 38C8 */ 0xF0CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEE59, 0xC1B1, -/* 38D0 */ 0xEE5D, 0xEE5A, 0xEE61, 0xEE67, 0xEE5C, 0xFFFD, 0xEE70, 0xC1AE, -/* 38D8 */ 0xEE6A, 0xEE5F, 0xEE6B, 0xEE66, 0xEE6D, 0xEE5E, 0xC1B3, 0xC1B2, -/* 38E0 */ 0xEE60, 0xEE6E, 0xEE58, 0xEE6C, 0xC1AC, 0xFFFD, 0xEE64, 0xEE63, -/* 38E8 */ 0xEE68, 0xEE5B, 0xC1B0, 0xFFFD, 0xC1B4, 0xEE62, 0xEE69, 0xC1B5, -/* 38F0 */ 0xEE65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1AD, 0xC1AF, 0xF0C7, -/* 38F8 */ 0xF0C5, 0xFFFD, 0xFFFD, 0xF0CC, 0xF0C9, 0xF0CD, 0xFFFD, 0xF0BE, -/* 3900 */ 0xF0C6, 0xF0D1, 0xEE6F, 0xF0C2, 0xC2CF, 0xE7A5, 0xF0BD, 0xF0CA, -/* 3908 */ 0xF0C4, 0xF0C1, 0xF0BC, 0xF0BB, 0xF0D0, 0xFFFD, 0xF0C0, 0xF0BF, -/* 3910 */ 0xC2CD, 0xF0C8, 0xFFFD, 0xC2CC, 0xFFFD, 0xFFFD, 0xC2CE, 0xF0C3, -/* 3918 */ 0xF0CF, 0xFFFD, 0xF2DE, 0xF2DF, 0xFFFD, 0xC3C9, 0xF2DC, 0xC3C6, -/* 3920 */ 0xF2E4, 0xFFFD, 0xC3CA, 0xF2E6, 0xF2DB, 0xF0CE, 0xF2E8, 0xF2DD, -/* 3928 */ 0xFFFD, 0xC3C7, 0xF2E3, 0xFFFD, 0xF2E5, 0xF2E0, 0xF2E7, 0xF2E2, -/* 3930 */ 0xF2E1, 0xC3C8, 0xFFFD, 0xFFFD, 0xF4C5, 0xF4C6, 0xFFFD, 0xF4C8, -/* 3938 */ 0xC4AE, 0xC4AF, 0xF4C9, 0xF4C7, 0xFFFD, 0xF4C4, 0xFFFD, 0xF642, -/* 3940 */ 0xF645, 0xF641, 0xFFFD, 0xC4FA, 0xF643, 0xC4F9, 0xC4F8, 0xC4F7, -/* 3948 */ 0xF644, 0xF751, 0xF74F, 0xFFFD, 0xF74E, 0xF640, 0xF750, 0xF646, -/* 3950 */ 0xF74D, 0xFFFD, 0xF7F9, 0xF7D7, 0xF7F7, 0xC5DB, 0xF7F8, 0xF7FA, -/* 3958 */ 0xFFFD, 0xF8BF, 0xC5FA, 0xF8BE, 0xF8BD, 0xC5FB, 0xFFFD, 0xC65A, -/* 3960 */ 0xF96E, 0xF9A7, 0xF9A6, 0xF9A8, 0xA6E5, 0xD0AA, 0xFFFD, 0xD3CF, -/* 3968 */ 0xD3D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBC0, 0xFFFD, 0xF647, 0xF8C0, -/* 3970 */ 0xA6E6, 0xAD6C, 0xD0AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7B1, 0xB34E, -/* 3978 */ 0xFFFD, 0xDBC2, 0xDBC1, 0xB5F3, 0xFFFD, 0xB8C5, 0xE7C1, 0xBDC3, -/* 3980 */ 0xFFFD, 0xBDC4, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFC5, 0xC5FC, 0xA6E7, -/* 3988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD0AC, 0xAAED, 0xD0AE, 0xD0AD, 0xAD6D, -/* 3990 */ 0xFFFD, 0xD3D1, 0xFFFD, 0xD3D8, 0xB049, 0xD3D6, 0xD3D4, 0xFFFD, -/* 3998 */ 0xD3DB, 0xD3D2, 0xD3D3, 0xB04A, 0xFFFD, 0xB04E, 0xFFFD, 0xFFFD, -/* 39A0 */ 0xD3DC, 0xB04D, 0xD3DA, 0xD3D7, 0xD3D5, 0xB04B, 0xB04C, 0xD3D9, -/* 39A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB350, 0xD7B2, 0xFFFD, 0xB355, -/* 39B0 */ 0xD7C2, 0xB354, 0xD7C4, 0xFFFD, 0xFFFD, 0xD7B8, 0xB352, 0xD7C3, -/* 39B8 */ 0xFFFD, 0xD7B3, 0xB353, 0xD7BF, 0xD7BB, 0xD7BD, 0xD7B7, 0xD7BE, -/* 39C0 */ 0xFFFD, 0xFFFD, 0xB34F, 0xD7BA, 0xFFFD, 0xD7B9, 0xD7B5, 0xFFFD, -/* 39C8 */ 0xD7C0, 0xFFFD, 0xFFFD, 0xD7BC, 0xD7B4, 0xFFFD, 0xD7B6, 0xB351, -/* 39D0 */ 0xD7C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5F6, 0xDBCD, 0xFFFD, -/* 39D8 */ 0xFFFD, 0xFFFD, 0xDBC9, 0xDBCB, 0xDBC6, 0xDBC5, 0xDBC3, 0xFFFD, -/* 39E0 */ 0xDBCA, 0xDBCC, 0xDBC8, 0xFFFD, 0xDBC7, 0xB5F4, 0xB5F5, 0xFFFD, -/* 39E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBCF, 0xB8CD, 0xDFF2, -/* 39F0 */ 0xDFF8, 0xDFF3, 0xDFF4, 0xF9D8, 0xDFF9, 0xFFFD, 0xB8CF, 0xFFFD, -/* 39F8 */ 0xB8C7, 0xB8CE, 0xDFF1, 0xDBC4, 0xB8CA, 0xB8C8, 0xDFF7, 0xDFF6, -/* 3A00 */ 0xB8C9, 0xB8CB, 0xDFF5, 0xB8C6, 0xFFFD, 0xB8CC, 0xFFFD, 0xFFFD, -/* 3A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3F6, 0xBB74, 0xFFFD, 0xFFFD, 0xE442, -/* 3A10 */ 0xE441, 0xFFFD, 0xE3FB, 0xBB76, 0xE440, 0xE3F7, 0xE3F8, 0xBB6E, -/* 3A18 */ 0xBB70, 0xFFFD, 0xE3FD, 0xE3F5, 0xBB72, 0xBB71, 0xE3F9, 0xE3FE, -/* 3A20 */ 0xE3FC, 0xBB73, 0xE3FA, 0xFFFD, 0xFFFD, 0xDBCE, 0xBB6F, 0xFFFD, -/* 3A28 */ 0xFFFD, 0xE7C2, 0xE7C9, 0xBDC6, 0xFFFD, 0xE7CD, 0xBDCA, 0xE7C5, -/* 3A30 */ 0xE7C3, 0xFFFD, 0xE7CC, 0xFFFD, 0xBDC5, 0xE7CB, 0xBDC7, 0xBDC8, -/* 3A38 */ 0xE7C4, 0xBDC9, 0xE7CA, 0xE7C6, 0xE7C7, 0xE7C8, 0xBB75, 0xFFFD, -/* 3A40 */ 0xFFFD, 0xFFFD, 0xEB70, 0xEB7C, 0xFFFD, 0xBFCA, 0xEB77, 0xEB79, -/* 3A48 */ 0xFFFD, 0xBFC8, 0xEB71, 0xEB75, 0xFFFD, 0xEB78, 0xBFC6, 0xBFC9, -/* 3A50 */ 0xEB7B, 0xEB73, 0xEB74, 0xEB7A, 0xEB72, 0xEB76, 0xBFC7, 0xEE72, -/* 3A58 */ 0xFFFD, 0xEE71, 0xC1B7, 0xEE77, 0xC1B9, 0xFFFD, 0xFFFD, 0xC1B6, -/* 3A60 */ 0xEE73, 0xC1BA, 0xEE74, 0xFFFD, 0xFFFD, 0xEE75, 0xEE78, 0xFFFD, -/* 3A68 */ 0xC1B8, 0xFFFD, 0xF0D6, 0xFFFD, 0xFFFD, 0xF0D9, 0xFFFD, 0xF0D3, -/* 3A70 */ 0xF0D5, 0xFFFD, 0xFFFD, 0xF0D4, 0xF0D7, 0xF0D8, 0xEE76, 0xF0D2, -/* 3A78 */ 0xFFFD, 0xFFFD, 0xC3CD, 0xF2EC, 0xF2EF, 0xF2F1, 0xF2EA, 0xF2EB, -/* 3A80 */ 0xF2EE, 0xF2F0, 0xC3CE, 0xC3CC, 0xC3CB, 0xF2ED, 0xF2E9, 0xF4CA, -/* 3A88 */ 0xC4B0, 0xFFFD, 0xF4CB, 0xFFFD, 0xFFFD, 0xF649, 0xC4FB, 0xF64B, -/* 3A90 */ 0xC4FC, 0xF648, 0xF64A, 0xC5A8, 0xFFFD, 0xF752, 0xC5A7, 0xF7FD, -/* 3A98 */ 0xF7FC, 0xFFFD, 0xF7FB, 0xFFFD, 0xFFFD, 0xF948, 0xF949, 0xF94B, -/* 3AA0 */ 0xF94A, 0xFFFD, 0xCA50, 0xA6E8, 0xFFFD, 0xAD6E, 0xD7C5, 0xB5F7, -/* 3AA8 */ 0xFFFD, 0xDFFA, 0xC2D0, 0xFFFD, 0xF2F2, 0xFFFD, 0xFFFD, 0xA8A3, -/* 3AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB357, 0xFFFD, 0xFFFD, 0xFFFD, 0xB356, -/* 3AB8 */ 0xFFFD, 0xDBD0, 0xB5F8, 0xDBD2, 0xDBD1, 0xFFFD, 0xFFFD, 0xDFFB, -/* 3AC0 */ 0xB8D0, 0xE443, 0xE446, 0xE445, 0xFFFD, 0xE444, 0xE7CE, 0xE7D0, -/* 3AC8 */ 0xE7CF, 0xFFFD, 0xBFCC, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFCB, 0xFFFD, -/* 3AD0 */ 0xC1BB, 0xEE79, 0xEE7B, 0xEE7A, 0xFFFD, 0xFFFD, 0xC2D1, 0xFFFD, -/* 3AD8 */ 0xFFFD, 0xFFFD, 0xF2F4, 0xF2F3, 0xFFFD, 0xF4CC, 0xC4B1, 0xFFFD, -/* 3AE0 */ 0xFFFD, 0xC4FD, 0xF754, 0xF753, 0xC65B, 0xA8A4, 0xD0AF, 0xAD6F, -/* 3AE8 */ 0xD7C8, 0xD7C6, 0xFFFD, 0xFFFD, 0xD7C7, 0xDBD4, 0xDBD5, 0xE043, -/* 3AF0 */ 0xDBD3, 0xFFFD, 0xDFFC, 0xE041, 0xE040, 0xE042, 0xB8D1, 0xDFFE, -/* 3AF8 */ 0xDFFD, 0xE044, 0xFFFD, 0xE449, 0xE447, 0xFFFD, 0xE448, 0xE7D3, -/* 3B00 */ 0xE7D1, 0xFFFD, 0xFFFD, 0xE7D2, 0xEB7D, 0xEE7C, 0xEE7D, 0xC2D2, -/* 3B08 */ 0xFFFD, 0xF2F5, 0xF4CD, 0xC4B2, 0xFFFD, 0xF64C, 0xF755, 0xC5A9, -/* 3B10 */ 0xFFFD, 0xF7FE, 0xF94C, 0xA8A5, 0xFFFD, 0xAD71, 0xAD72, 0xD0B0, -/* 3B18 */ 0xFFFD, 0xFFFD, 0xD0B1, 0xAD70, 0xFFFD, 0xB054, 0xFFFD, 0xB052, -/* 3B20 */ 0xFFFD, 0xB051, 0xB058, 0xB050, 0xB059, 0xD3DD, 0xB056, 0xFFFD, -/* 3B28 */ 0xB053, 0xB057, 0xB055, 0xB04F, 0xFFFD, 0xFFFD, 0xB35F, 0xFFFD, -/* 3B30 */ 0xB359, 0xD7CC, 0xB35E, 0xFFFD, 0xFFFD, 0xB360, 0xB35A, 0xFFFD, -/* 3B38 */ 0xB35B, 0xFFFD, 0xD7CA, 0xFFFD, 0xFFFD, 0xB358, 0xFFFD, 0xD7CB, -/* 3B40 */ 0xB35D, 0xFFFD, 0xFFFD, 0xD7C9, 0xB35C, 0xFFFD, 0xFFFD, 0xB644, -/* 3B48 */ 0xFFFD, 0xB646, 0xFFFD, 0xFFFD, 0xDBD8, 0xB645, 0xB5F9, 0xB5FD, -/* 3B50 */ 0xFFFD, 0xB8E4, 0xE049, 0xDBDA, 0xB5FE, 0xFFFD, 0xFFFD, 0xDBDD, -/* 3B58 */ 0xDBDE, 0xB643, 0xFFFD, 0xDBE0, 0xFFFD, 0xDBE2, 0xFFFD, 0xDBE3, -/* 3B60 */ 0xDBD7, 0xDBD6, 0xDBE4, 0xB642, 0xDBE1, 0xDBDF, 0xFFFD, 0xB640, -/* 3B68 */ 0xB5FB, 0xB647, 0xDBDB, 0xDBDC, 0xDBD9, 0xFFFD, 0xB641, 0xFFFD, -/* 3B70 */ 0xFFFD, 0xB5FC, 0xFFFD, 0xB5FA, 0xE048, 0xB8DF, 0xB8DA, 0xFFFD, -/* 3B78 */ 0xFFFD, 0xB8D5, 0xFFFD, 0xB8E5, 0xB8D6, 0xFFFD, 0xB8D2, 0xB8E1, -/* 3B80 */ 0xB8DE, 0xB8E0, 0xFFFD, 0xB8D7, 0xB8DC, 0xB8D3, 0xB8D4, 0xE050, -/* 3B88 */ 0xE04D, 0xE045, 0xE04A, 0xFFFD, 0xB8E2, 0xE051, 0xB8E3, 0xB8D9, -/* 3B90 */ 0xFFFD, 0xFFFD, 0xE047, 0xFFFD, 0xE04F, 0xE04B, 0xE04E, 0xE04C, -/* 3B98 */ 0xB8DD, 0xE046, 0xB8D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xE44C, 0xBB78, -/* 3BA0 */ 0xBB7B, 0xFFFD, 0xE44E, 0xFFFD, 0xBBA5, 0xE44D, 0xBB7D, 0xFFFD, -/* 3BA8 */ 0xBDCF, 0xE44F, 0xFFFD, 0xBBA4, 0xE44B, 0xBBA6, 0xFFFD, 0xFFFD, -/* 3BB0 */ 0xFFFD, 0xBB79, 0xFFFD, 0xB8DB, 0xBB7C, 0xFFFD, 0xBB7A, 0xBB7E, -/* 3BB8 */ 0xBBA2, 0xBB77, 0xBBA7, 0xBBA3, 0xFFFD, 0xBBA1, 0xE44A, 0xFFFD, -/* 3BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBDD6, 0xFFFD, 0xBDD2, 0xFFFD, 0xFFFD, -/* 3BC8 */ 0xFFFD, 0xBDD9, 0xFFFD, 0xE7D6, 0xBDDA, 0xE7E2, 0xE7DB, 0xBDCB, -/* 3BD0 */ 0xE7E3, 0xE7DD, 0xBDD5, 0xE7DE, 0xFFFD, 0xBDD4, 0xE7E1, 0xBDCE, -/* 3BD8 */ 0xE7DF, 0xE7D5, 0xBDCD, 0xEBAA, 0xBDD3, 0xFFFD, 0xBDD0, 0xFFFD, -/* 3BE0 */ 0xBDD8, 0xFFFD, 0xE7D4, 0xFFFD, 0xE7D8, 0xBDCC, 0xE7D7, 0xE7D9, -/* 3BE8 */ 0xE7DA, 0xBDD7, 0xE7DC, 0xE7E0, 0xE7E4, 0xFFFD, 0xBDDB, 0xBFD2, -/* 3BF0 */ 0xEBA5, 0xEBAB, 0xEBA8, 0xEB7E, 0xEBAC, 0xEBA1, 0xFFFD, 0xEBA7, -/* 3BF8 */ 0xFFFD, 0xBFCD, 0xBFD3, 0xEBAD, 0xFFFD, 0xFFFD, 0xBFCF, 0xFFFD, -/* 3C00 */ 0xBFD9, 0xBFD4, 0xEBAF, 0xEBA9, 0xBFD0, 0xEBA2, 0xBFDA, 0xEBA3, -/* 3C08 */ 0xEBA4, 0xBFDB, 0xBFD8, 0xBDD1, 0xFFFD, 0xBFCE, 0xEBB0, 0xBFDC, -/* 3C10 */ 0xFFFD, 0xBFD5, 0xEBAE, 0xBFD1, 0xBFD6, 0xBFD7, 0xFFFD, 0xC1C3, -/* 3C18 */ 0xEEA4, 0xEEAD, 0xEEAA, 0xEEAC, 0xFFFD, 0xC1C0, 0xEEA5, 0xFFFD, -/* 3C20 */ 0xEEAB, 0xC1BC, 0xEEA7, 0xC1C4, 0xEEA3, 0xEEA8, 0xEEAF, 0xEBA6, -/* 3C28 */ 0xEEA9, 0xEEA2, 0xC1BD, 0xEEA1, 0xC1BE, 0xEEB0, 0xC1BF, 0xEEAE, -/* 3C30 */ 0xC1C2, 0xEE7E, 0xFFFD, 0xC1C1, 0xFFFD, 0xEEA6, 0xF0DC, 0xF0EA, -/* 3C38 */ 0xF0E5, 0xF0E7, 0xF0DB, 0xC2D3, 0xFFFD, 0xF0DA, 0xC2D6, 0xC2D5, -/* 3C40 */ 0xFFFD, 0xF0E9, 0xF0E1, 0xF0DE, 0xF0E4, 0xFFFD, 0xF0DD, 0xFFFD, -/* 3C48 */ 0xF0DF, 0xF0E8, 0xF0E6, 0xFFFD, 0xC2D4, 0xF0ED, 0xF0EB, 0xF0E2, -/* 3C50 */ 0xF0EC, 0xF0E3, 0xFFFD, 0xF2F9, 0xC3CF, 0xF341, 0xFFFD, 0xFFFD, -/* 3C58 */ 0xF64F, 0xC3D6, 0xF0E0, 0xF2F7, 0xC3D2, 0xF2F8, 0xF2FD, 0xFFFD, -/* 3C60 */ 0xFFFD, 0xC3D4, 0xC3D5, 0xF2F6, 0xF340, 0xF342, 0xF2FA, 0xF2FC, -/* 3C68 */ 0xF2FE, 0xF2FB, 0xF343, 0xC3D1, 0xC3D7, 0xC3D3, 0xFFFD, 0xC3D0, -/* 3C70 */ 0xF4D0, 0xFFFD, 0xC4B7, 0xF4CE, 0xFFFD, 0xFFFD, 0xF4D2, 0xFFFD, -/* 3C78 */ 0xF4D3, 0xC4B5, 0xF4D4, 0xF4D1, 0xFFFD, 0xF4CF, 0xC4B8, 0xC4B4, -/* 3C80 */ 0xF4D5, 0xFFFD, 0xC4B6, 0xC4B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4FE, -/* 3C88 */ 0xFFFD, 0xFFFD, 0xC540, 0xF64E, 0xF64D, 0xF650, 0xF651, 0xFFFD, -/* 3C90 */ 0xC541, 0xF756, 0xF75B, 0xC5AA, 0xFFFD, 0xF758, 0xFFFD, 0xF757, -/* 3C98 */ 0xF75A, 0xF759, 0xFFFD, 0xF843, 0xFFFD, 0xC5DC, 0xF842, 0xF840, -/* 3CA0 */ 0xFFFD, 0xF841, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5FE, 0xC5FD, 0xF8C1, -/* 3CA8 */ 0xF8C2, 0xC640, 0xFFFD, 0xF94D, 0xF94E, 0xC667, 0xFFFD, 0xC66D, -/* 3CB0 */ 0xFFFD, 0xF9A9, 0xF9C8, 0xA8A6, 0xFFFD, 0xD7CD, 0xFFFD, 0xD7CE, -/* 3CB8 */ 0xE052, 0xE450, 0xE7E5, 0xC1C6, 0xFFFD, 0xC1C5, 0xF0EE, 0xF344, -/* 3CC0 */ 0xFFFD, 0xF844, 0xA8A7, 0xD3DE, 0xB05A, 0xB361, 0xE054, 0xE053, -/* 3CC8 */ 0xBDDC, 0xE7E6, 0xBDDD, 0xEEB1, 0xC2D7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CD0 */ 0xC676, 0xA8A8, 0xCDCB, 0xD3DF, 0xFFFD, 0xFFFD, 0xB362, 0xFFFD, -/* 3CD8 */ 0xD7CF, 0xD7D0, 0xFFFD, 0xDBE5, 0xFFFD, 0xB648, 0xB8E6, 0xFFFD, -/* 3CE0 */ 0xE056, 0xE055, 0xE057, 0xFFFD, 0xE451, 0xE452, 0xBBA8, 0xBFDD, -/* 3CE8 */ 0xBDDE, 0xBFDE, 0xFFFD, 0xEEB5, 0xEEB2, 0xEEB4, 0xEEB3, 0xC1C7, -/* 3CF0 */ 0xFFFD, 0xF0EF, 0xF346, 0xF345, 0xCBA4, 0xB05C, 0xB05B, 0xD3E0, -/* 3CF8 */ 0xFFFD, 0xD7D1, 0xFFFD, 0xFFFD, 0xDBE7, 0xDBE6, 0xB649, 0xFFFD, -/* 3D00 */ 0xE059, 0xE05A, 0xE058, 0xFFFD, 0xFFFD, 0xB8E8, 0xB8E7, 0xFFFD, -/* 3D08 */ 0xBBAA, 0xBBA9, 0xFFFD, 0xE7E7, 0xEBB3, 0xEBB1, 0xEBB2, 0xBFDF, -/* 3D10 */ 0xEEB7, 0xEEB6, 0xFFFD, 0xF0F2, 0xF0F1, 0xF0F0, 0xF347, 0xFFFD, -/* 3D18 */ 0xF9AA, 0xA8A9, 0xAD73, 0xFFFD, 0xAD74, 0xB05D, 0xB05E, 0xD3E2, -/* 3D20 */ 0xD3E1, 0xD7D2, 0xFFFD, 0xB368, 0xB366, 0xB363, 0xB367, 0xB365, -/* 3D28 */ 0xB364, 0xFFFD, 0xFFFD, 0xB64A, 0xDBEA, 0xFFFD, 0xB8ED, 0xB64C, -/* 3D30 */ 0xB651, 0xDBEC, 0xB653, 0xB652, 0xB655, 0xDBEB, 0xDBE8, 0xB64F, -/* 3D38 */ 0xB64B, 0xB64D, 0xDBE9, 0xB654, 0xB650, 0xB64E, 0xB8EF, 0xB8EE, -/* 3D40 */ 0xB8EC, 0xB8F0, 0xFFFD, 0xB8EA, 0xB8EB, 0xFFFD, 0xB8E9, 0xFFFD, -/* 3D48 */ 0xE05B, 0xFFFD, 0xFFFD, 0xE454, 0xFFFD, 0xBBAC, 0xBBAD, 0xBBAB, -/* 3D50 */ 0xFFFD, 0xE453, 0xFFFD, 0xE455, 0xFFFD, 0xE7EA, 0xE7EC, 0xFFFD, -/* 3D58 */ 0xBDE7, 0xE7ED, 0xBDE0, 0xE7E9, 0xBDDF, 0xBDE9, 0xBDE5, 0xBDE6, -/* 3D60 */ 0xBDE2, 0xE7E8, 0xBDE1, 0xE7EE, 0xE7EB, 0xFFFD, 0xBDE8, 0xFFFD, -/* 3D68 */ 0xBDE3, 0xBDE4, 0xEBB5, 0xFFFD, 0xEBB7, 0xEBB6, 0xFFFD, 0xEBB8, -/* 3D70 */ 0xBFE0, 0xEBB4, 0xFFFD, 0xFFFD, 0xC1CB, 0xEEB8, 0xC1C8, 0xC1CC, -/* 3D78 */ 0xC1CA, 0xC1C9, 0xF0F3, 0xFFFD, 0xF0F6, 0xFFFD, 0xF0F5, 0xFFFD, -/* 3D80 */ 0xF0F4, 0xC2D8, 0xF348, 0xF349, 0xC3D8, 0xF34A, 0xC3D9, 0xFFFD, -/* 3D88 */ 0xFFFD, 0xC4BA, 0xFFFD, 0xC4B9, 0xF652, 0xFFFD, 0xFFFD, 0xC542, -/* 3D90 */ 0xF653, 0xF75C, 0xC5AB, 0xC5AC, 0xFFFD, 0xF845, 0xFFFD, 0xC642, -/* 3D98 */ 0xA8AA, 0xFFFD, 0xB36A, 0xB369, 0xE05C, 0xE05D, 0xFFFD, 0xBBAE, -/* 3DA0 */ 0xEBB9, 0xBDEA, 0xEBBA, 0xEEB9, 0xA8AB, 0xFFFD, 0xD0B2, 0xAD76, -/* 3DA8 */ 0xAD75, 0xFFFD, 0xD3E3, 0xB05F, 0xD3E4, 0xD7D5, 0xFFFD, 0xD7D4, -/* 3DB0 */ 0xFFFD, 0xD7D3, 0xFFFD, 0xFFFD, 0xDBEE, 0xB658, 0xFFFD, 0xFFFD, -/* 3DB8 */ 0xDBED, 0xB657, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBEF, 0xB656, 0xFFFD, -/* 3DC0 */ 0xE05F, 0xE062, 0xE060, 0xE061, 0xE065, 0xE05E, 0xE066, 0xE063, -/* 3DC8 */ 0xE064, 0xBBB0, 0xE456, 0xFFFD, 0xFFFD, 0xBBAF, 0xFFFD, 0xE7F2, -/* 3DD0 */ 0xE7F0, 0xFFFD, 0xFFFD, 0xBDEB, 0xE7EF, 0xE7F1, 0xFFFD, 0xBDEC, -/* 3DD8 */ 0xFFFD, 0xEBBB, 0xFFFD, 0xEBBC, 0xC1CD, 0xFFFD, 0xF34C, 0xF34E, -/* 3DE0 */ 0xF34B, 0xF34D, 0xF4D6, 0xF654, 0xFFFD, 0xFFFD, 0xF96F, 0xA8AC, -/* 3DE8 */ 0xAD77, 0xD3E5, 0xD3E7, 0xD3E6, 0xFFFD, 0xD7D8, 0xB36C, 0xFFFD, -/* 3DF0 */ 0xD7D6, 0xFFFD, 0xB36B, 0xD7D9, 0xFFFD, 0xD7DA, 0xD7D7, 0xFFFD, -/* 3DF8 */ 0xFFFD, 0xDBFB, 0xB660, 0xDBF3, 0xDBF9, 0xFFFD, 0xFFFD, 0xB65B, -/* 3E00 */ 0xB65E, 0xDBF2, 0xB659, 0xDBF6, 0xE06C, 0xB65D, 0xFFFD, 0xDBF1, -/* 3E08 */ 0xFFFD, 0xDBF7, 0xDBF4, 0xDBFA, 0xDBF0, 0xDBF8, 0xB65C, 0xB65F, -/* 3E10 */ 0xDBF5, 0xB65A, 0xFFFD, 0xB8F2, 0xE068, 0xB8F1, 0xE06F, 0xE06E, -/* 3E18 */ 0xB8F8, 0xFFFD, 0xB8F9, 0xE070, 0xB8F3, 0xE06D, 0xB8F7, 0xE072, -/* 3E20 */ 0xE069, 0xFFFD, 0xE06B, 0xB8F4, 0xE067, 0xE06A, 0xE071, 0xB8F5, -/* 3E28 */ 0xE073, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8F6, 0xFFFD, -/* 3E30 */ 0xBBB1, 0xE45B, 0xE461, 0xE459, 0xE462, 0xFFFD, 0xE458, 0xE45D, -/* 3E38 */ 0xE463, 0xE460, 0xE45F, 0xE45E, 0xFFFD, 0xE457, 0xE45C, 0xFFFD, -/* 3E40 */ 0xFFFD, 0xE45A, 0xFFFD, 0xBDF1, 0xBDEE, 0xE7FB, 0xE841, 0xE843, -/* 3E48 */ 0xE840, 0xE7F8, 0xE7FA, 0xE845, 0xE842, 0xE7FC, 0xE846, 0xE7F9, -/* 3E50 */ 0xE844, 0xBDEF, 0xBDF5, 0xBDF3, 0xE7F3, 0xBDF4, 0xBDF0, 0xE7F4, -/* 3E58 */ 0xE7F6, 0xE7F5, 0xE7FD, 0xE7FE, 0xFFFD, 0xBDF2, 0xFFFD, 0xBDED, -/* 3E60 */ 0xFFFD, 0xFFFD, 0xE7F7, 0xFFFD, 0xEBC6, 0xBFE2, 0xFFFD, 0xEBBD, -/* 3E68 */ 0xBFE3, 0xBFE6, 0xEBC2, 0xFFFD, 0xEBBF, 0xBFE5, 0xFFFD, 0xFFFD, -/* 3E70 */ 0xEBC3, 0xEBC4, 0xEBBE, 0xEBC7, 0xEBC0, 0xEBC5, 0xBFE4, 0xFFFD, -/* 3E78 */ 0xBFE1, 0xEBC1, 0xFFFD, 0xEEBF, 0xC1D0, 0xC1CE, 0xC1D1, 0xC1CF, -/* 3E80 */ 0xEEBE, 0xEEBB, 0xEEBA, 0xFFFD, 0xEEBD, 0xFFFD, 0xFFFD, 0xEEBC, -/* 3E88 */ 0xF145, 0xC2DE, 0xF0FB, 0xF0FA, 0xFFFD, 0xC2D9, 0xF141, 0xF140, -/* 3E90 */ 0xF0F7, 0xF143, 0xF0FC, 0xC2DD, 0xF0F9, 0xF142, 0xF0F8, 0xC2DA, -/* 3E98 */ 0xC2DC, 0xF0FD, 0xC2DB, 0xF0FE, 0xFFFD, 0xF144, 0xF352, 0xFFFD, -/* 3EA0 */ 0xC3DE, 0xF34F, 0xFFFD, 0xF353, 0xFFFD, 0xFFFD, 0xC3DB, 0xF351, -/* 3EA8 */ 0xC3E0, 0xFFFD, 0xC3DD, 0xFFFD, 0xF350, 0xFFFD, 0xC3DF, 0xF354, -/* 3EB0 */ 0xC3DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4BC, 0xC4BE, 0xFFFD, -/* 3EB8 */ 0xF4D9, 0xC4BD, 0xF4D7, 0xC3DC, 0xF4D8, 0xC4BB, 0xC543, 0xC545, -/* 3EC0 */ 0xF656, 0xC544, 0xF655, 0xFFFD, 0xF761, 0xC5AD, 0xF760, 0xC5AE, -/* 3EC8 */ 0xF75E, 0xF75D, 0xF762, 0xF763, 0xF846, 0xFFFD, 0xF75F, 0xFFFD, -/* 3ED0 */ 0xFFFD, 0xF8C6, 0xF8C3, 0xF8C4, 0xF8C5, 0xC65C, 0xFFFD, 0xF951, -/* 3ED8 */ 0xF950, 0xF94F, 0xF970, 0xFFFD, 0xF9BE, 0xF9AB, 0xC66E, 0xA8AD, -/* 3EE0 */ 0xB060, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8FA, 0xFFFD, -/* 3EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDF6, 0xFFFD, -/* 3EF0 */ 0xFFFD, 0xEBC8, 0xFFFD, 0xFFFD, 0xC2DF, 0xFFFD, 0xF355, 0xFFFD, -/* 3EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF9AC, 0xA8AE, 0xAAEE, -/* 3F00 */ 0xAD79, 0xAD78, 0xFFFD, 0xB063, 0xFFFD, 0xD3E8, 0xB061, 0xD3E9, -/* 3F08 */ 0xB062, 0xFFFD, 0xFFFD, 0xD7DF, 0xD7DB, 0xFFFD, 0xFFFD, 0xB36D, -/* 3F10 */ 0xD7DE, 0xD7DD, 0xD7DC, 0xB36E, 0xD7E0, 0xD7E1, 0xFFFD, 0xFFFD, -/* 3F18 */ 0xFFFD, 0xDC43, 0xDC41, 0xDC45, 0xDC46, 0xDC4C, 0xFFFD, 0xDC48, -/* 3F20 */ 0xDC4A, 0xFFFD, 0xDC42, 0xDBFC, 0xFFFD, 0xDC49, 0xFFFD, 0xFFFD, -/* 3F28 */ 0xDC4B, 0xDC44, 0xDC47, 0xDBFD, 0xB662, 0xDC40, 0xDBFE, 0xB661, -/* 3F30 */ 0xB663, 0xFFFD, 0xB8FD, 0xE075, 0xE077, 0xE076, 0xE07B, 0xB8FB, -/* 3F38 */ 0xFFFD, 0xE078, 0xE074, 0xE079, 0xE07A, 0xB8FC, 0xB8FE, 0xE07C, -/* 3F40 */ 0xFFFD, 0xE467, 0xE466, 0xFFFD, 0xE464, 0xE465, 0xBBB3, 0xBBB5, -/* 3F48 */ 0xBBB2, 0xBBB4, 0xE84D, 0xE84E, 0xE849, 0xFFFD, 0xE84A, 0xBDF8, -/* 3F50 */ 0xBDFD, 0xBDF7, 0xBDFE, 0xBDF9, 0xE84B, 0xFFFD, 0xFFFD, 0xE84C, -/* 3F58 */ 0xE848, 0xBE40, 0xBDFB, 0xFFFD, 0xFFFD, 0xBDFA, 0xBDFC, 0xFFFD, -/* 3F60 */ 0xE847, 0xFFFD, 0xEBCA, 0xBFE8, 0xFFFD, 0xFFFD, 0xEBCC, 0xBFEA, -/* 3F68 */ 0xEBCF, 0xEBCB, 0xEBC9, 0xEBCE, 0xBFE9, 0xEBCD, 0xFFFD, 0xBFE7, -/* 3F70 */ 0xFFFD, 0xFFFD, 0xC1D3, 0xC1D6, 0xEEC1, 0xFFFD, 0xC1D4, 0xEEC0, -/* 3F78 */ 0xC1D2, 0xC1D5, 0xF146, 0xF147, 0xF148, 0xC2E0, 0xFFFD, 0xF149, -/* 3F80 */ 0xFFFD, 0xC2E1, 0xC3E2, 0xF358, 0xF359, 0xF357, 0xF356, 0xF35A, -/* 3F88 */ 0xC3E1, 0xF4DD, 0xF4DB, 0xF4DC, 0xF4DE, 0xF4DA, 0xF4DF, 0xF658, -/* 3F90 */ 0xFFFD, 0xF659, 0xF657, 0xC546, 0xF764, 0xC5AF, 0xF765, 0xF848, -/* 3F98 */ 0xF847, 0xA8AF, 0xB664, 0xFFFD, 0xFFFD, 0xB940, 0xFFFD, 0xFFFD, -/* 3FA0 */ 0xFFFD, 0xBBB6, 0xFFFD, 0xFFFD, 0xBFEC, 0xFFFD, 0xBFEB, 0xFFFD, -/* 3FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC3E3, 0xC47C, 0xC547, 0xA8B0, 0xB064, -/* 3FB0 */ 0xB941, 0xFFFD, 0xF35B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBA6, 0xFFFD, 0xFFFD, -/* 3FC0 */ 0xA8B1, 0xFFFD, 0xA8B4, 0xA8B3, 0xA8B2, 0xFFFD, 0xFFFD, 0xCBA5, -/* 3FC8 */ 0xFFFD, 0xCDCD, 0xFFFD, 0xCDCF, 0xAAEF, 0xFFFD, 0xFFFD, 0xAAF1, -/* 3FD0 */ 0xCDCC, 0xCDCE, 0xAAF0, 0xCDD1, 0xCDD0, 0xCDD2, 0xFFFD, 0xFFFD, -/* 3FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0B6, 0xD0B4, -/* 3FE0 */ 0xAD7C, 0xD0B3, 0xADA3, 0xAD7E, 0xAD7B, 0xFFFD, 0xADA4, 0xFFFD, -/* 3FE8 */ 0xAD7D, 0xADA2, 0xFFFD, 0xADA1, 0xD0B5, 0xFFFD, 0xAD7A, 0xFFFD, -/* 3FF0 */ 0xFFFD, 0xFFFD, 0xB06A, 0xD3EB, 0xD3F1, 0xB067, 0xB06E, 0xFFFD, -/* 3FF8 */ 0xB069, 0xD3EE, 0xD3F0, 0xB06C, 0xD3EA, 0xD3ED, 0xB068, 0xB065, -/* 4000 */ 0xD3EC, 0xB06B, 0xD3EF, 0xB06D, 0xB066, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4008 */ 0xFFFD, 0xD7E3, 0xD7E6, 0xB370, 0xFFFD, 0xB37A, 0xB376, 0xD7E4, -/* 4010 */ 0xFFFD, 0xFFFD, 0xB37E, 0xB377, 0xB37C, 0xB372, 0xFFFD, 0xB36F, -/* 4018 */ 0xB371, 0xB37D, 0xD7E5, 0xB375, 0xB378, 0xB374, 0xB379, 0xD7E7, -/* 4020 */ 0xB37B, 0xB373, 0xD7E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDC4D, 0xB665, 0xDC4F, 0xFFFD, 0xB667, -/* 4030 */ 0xB669, 0xFFFD, 0xDC4E, 0xB666, 0xB66A, 0xFFFD, 0xB668, 0xFFFD, -/* 4038 */ 0xFFFD, 0xFFFD, 0xB947, 0xE0A3, 0xB94F, 0xE07E, 0xFFFD, 0xB950, -/* 4040 */ 0xB945, 0xFFFD, 0xE0A1, 0xFFFD, 0xFFFD, 0xB94A, 0xFFFD, 0xE0A2, -/* 4048 */ 0xB943, 0xB942, 0xFFFD, 0xB94D, 0xB94C, 0xB94B, 0xB949, 0xB94E, -/* 4050 */ 0xE07D, 0xB944, 0xB946, 0xB948, 0xFFFD, 0xFFFD, 0xBBB8, 0xBBBB, -/* 4058 */ 0xFFFD, 0xBBBF, 0xBBB9, 0xBBBE, 0xBBBC, 0xFFFD, 0xBBB7, 0xFFFD, -/* 4060 */ 0xBBBD, 0xBBBA, 0xFFFD, 0xFFFD, 0xFFFD, 0xE852, 0xBE43, 0xBE41, -/* 4068 */ 0xFFFD, 0xE853, 0xFFFD, 0xBE44, 0xBE42, 0xE851, 0xE850, 0xFFFD, -/* 4070 */ 0xBFF0, 0xE84F, 0xBFEE, 0xBFED, 0xEBD0, 0xBE45, 0xBFEF, 0xEBD1, -/* 4078 */ 0xBFF2, 0xEBD2, 0xBFF1, 0xC1D8, 0xEEC3, 0xC1D7, 0xC1DC, 0xC1DA, -/* 4080 */ 0xC1DB, 0xC2E3, 0xC1D9, 0xEEC2, 0xEBD3, 0xC2E2, 0xC2E4, 0xFFFD, -/* 4088 */ 0xC3E4, 0xC3E5, 0xFFFD, 0xF4E0, 0xFFFD, 0xC5DE, 0xC5DD, 0xA8B6, -/* 4090 */ 0xFFFD, 0xFFFD, 0xCA55, 0xB06F, 0xFFFD, 0xCA52, 0xCA53, 0xCA51, -/* 4098 */ 0xFFFD, 0xCA54, 0xFFFD, 0xFFFD, 0xCBAA, 0xCBA7, 0xCBAC, 0xCBA8, -/* 40A0 */ 0xA8B7, 0xA8BA, 0xFFFD, 0xCBA9, 0xA8B9, 0xCBAB, 0xFFFD, 0xFFFD, -/* 40A8 */ 0xA8B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDD5, 0xCDD7, 0xAAF4, -/* 40B0 */ 0xCDD3, 0xCDD6, 0xCDD4, 0xAAF2, 0xAAF5, 0xFFFD, 0xAAF3, 0xFFFD, -/* 40B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD0B8, 0xD0BC, 0xD0B9, 0xFFFD, 0xADA7, -/* 40C0 */ 0xFFFD, 0xADA8, 0xFFFD, 0xD0BB, 0xFFFD, 0xD0BD, 0xD0BF, 0xFFFD, -/* 40C8 */ 0xADA5, 0xD0BE, 0xFFFD, 0xFFFD, 0xADA6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40D0 */ 0xFFFD, 0xFFFD, 0xD7EE, 0xD0BA, 0xD3F2, 0xD3FB, 0xD3F9, 0xD3F4, -/* 40D8 */ 0xD3F5, 0xD3FA, 0xD3FC, 0xB071, 0xFFFD, 0xD3F7, 0xD3F3, 0xB070, -/* 40E0 */ 0xB072, 0xD3F6, 0xD3FD, 0xD3F8, 0xFFFD, 0xFFFD, 0xB3A1, 0xD7F1, -/* 40E8 */ 0xD7E9, 0xD7EF, 0xD7F0, 0xB3A2, 0xFFFD, 0xD7E8, 0xD7EA, 0xD0B7, -/* 40F0 */ 0xD7EC, 0xD7ED, 0xD7EB, 0xB66C, 0xFFFD, 0xFFFD, 0xFFFD, 0xDC56, -/* 40F8 */ 0xEBD4, 0xDC57, 0xDC54, 0xB3A3, 0xB66E, 0xDC53, 0xDC59, 0xDC58, -/* 4100 */ 0xB66B, 0xDC5C, 0xDC52, 0xDC5B, 0xDC50, 0xDC5A, 0xDC55, 0xB66D, -/* 4108 */ 0xFFFD, 0xE0AA, 0xFFFD, 0xE0A5, 0xE0AB, 0xE0A6, 0xE0A4, 0xE0A7, -/* 4110 */ 0xB951, 0xFFFD, 0xE0A9, 0xFFFD, 0xE0A8, 0xB952, 0xBBC1, 0xBBC0, -/* 4118 */ 0xE46E, 0xE471, 0xE469, 0xE46D, 0xBBC2, 0xE46C, 0xE46A, 0xE470, -/* 4120 */ 0xE46B, 0xE468, 0xE46F, 0xFFFD, 0xE859, 0xBE48, 0xF14A, 0xE856, -/* 4128 */ 0xE857, 0xE855, 0xDC51, 0xBE47, 0xE85A, 0xE854, 0xBE46, 0xBE49, -/* 4130 */ 0xE858, 0xEBD5, 0xBFF3, 0xEBD6, 0xEBD7, 0xFFFD, 0xEEC4, 0xC1DD, -/* 4138 */ 0xF14B, 0xF14C, 0xFFFD, 0xFFFD, 0xF14D, 0xF35D, 0xF35C, 0xF4E2, -/* 4140 */ 0xFFFD, 0xF4E1, 0xF65B, 0xF65C, 0xF65A, 0xF766, 0xC5B0, 0xA8BB, -/* 4148 */ 0xADAA, 0xADA9, 0xB075, 0xB074, 0xD440, 0xD441, 0xD3FE, 0xFFFD, -/* 4150 */ 0xB073, 0xD7F5, 0xFFFD, 0xD7F6, 0xD7F2, 0xB3A4, 0xD7F3, 0xFFFD, -/* 4158 */ 0xD7F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDC5F, 0xDC61, 0xDC5D, -/* 4160 */ 0xDC60, 0xB66F, 0xDC5E, 0xB670, 0xFFFD, 0xFFFD, 0xDD73, 0xB955, -/* 4168 */ 0xB954, 0xFFFD, 0xB953, 0xFFFD, 0xE0AC, 0xE0AD, 0xFFFD, 0xFFFD, -/* 4170 */ 0xE473, 0xE475, 0xBBC6, 0xBBC3, 0xFFFD, 0xBBC5, 0xBBC4, 0xE474, -/* 4178 */ 0xE472, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE861, 0xE85E, -/* 4180 */ 0xE85F, 0xBE4D, 0xE860, 0xE85B, 0xE85C, 0xBE4A, 0xFFFD, 0xBE4B, -/* 4188 */ 0xE85D, 0xBE4C, 0xFFFD, 0xEBDB, 0xFFFD, 0xEBDC, 0xEBD9, 0xEBDA, -/* 4190 */ 0xBFF4, 0xEBD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEC8, -/* 4198 */ 0xEEC5, 0xEEC7, 0xC1E0, 0xEECB, 0xC1DF, 0xEEC9, 0xEECC, 0xEECA, -/* 41A0 */ 0xEEC6, 0xC1DE, 0xFFFD, 0xF14F, 0xFFFD, 0xF150, 0xF14E, 0xFFFD, -/* 41A8 */ 0xF152, 0xC2E5, 0xC2E6, 0xF35F, 0xC3E7, 0xF151, 0xF35E, 0xC3E6, -/* 41B0 */ 0xF4E5, 0xF4E6, 0xC4BF, 0xF4E4, 0xFFFD, 0xF4E3, 0xFFFD, 0xF65D, -/* 41B8 */ 0xC548, 0xFFFD, 0xF849, 0xF8C8, 0xF8C7, 0xFFFD, 0xC643, 0xC65D, -/* 41C0 */ 0xF8C9, 0xF971, 0xFFFD, 0xC66F, 0xA8BC, 0xAAF6, 0xFFFD, 0xB956, -/* 41C8 */ 0xFFFD, 0xC4C0, 0xA8BD, 0xADAB, 0xB3A5, 0xB671, 0xC2E7, 0xAAF7, -/* 41D0 */ 0xFFFD, 0xD0C1, 0xD0C0, 0xD442, 0xFFFD, 0xB078, 0xB076, 0xB07A, -/* 41D8 */ 0xD444, 0xFFFD, 0xB079, 0xB077, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41E0 */ 0xD443, 0xB3A8, 0xD7FC, 0xFFFD, 0xB3A7, 0xB3A9, 0xD842, 0xB3AB, -/* 41E8 */ 0xD7FE, 0xD840, 0xD7F7, 0xB3AA, 0xD843, 0xFFFD, 0xFFFD, 0xD7F9, -/* 41F0 */ 0xFFFD, 0xD7FA, 0xD7F8, 0xB3A6, 0xFFFD, 0xD841, 0xD7FB, 0xD7FD, -/* 41F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDC6D, 0xFFFD, 0xDC6C, 0xDC6A, 0xDC62, -/* 4200 */ 0xDC71, 0xDC65, 0xDC6F, 0xDC76, 0xDC6E, 0xB679, 0xFFFD, 0xB675, -/* 4208 */ 0xDC63, 0xFFFD, 0xDC69, 0xB677, 0xFFFD, 0xDC68, 0xB678, 0xB67A, -/* 4210 */ 0xDC6B, 0xFFFD, 0xB672, 0xB673, 0xDC77, 0xDC75, 0xFFFD, 0xDC74, -/* 4218 */ 0xDC66, 0xFFFD, 0xDC72, 0xFFFD, 0xB676, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4220 */ 0xFFFD, 0xB674, 0xDC73, 0xDC64, 0xDC67, 0xDC70, 0xFFFD, 0xFFFD, -/* 4228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE4BA, 0xE0B7, 0xFFFD, 0xE0B0, 0xE0C3, -/* 4230 */ 0xE0CC, 0xE0B3, 0xB961, 0xFFFD, 0xE0C0, 0xB957, 0xB959, 0xB965, -/* 4238 */ 0xE0B1, 0xFFFD, 0xFFFD, 0xB95A, 0xB95C, 0xB966, 0xB95B, 0xFFFD, -/* 4240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB964, 0xE0B9, 0xFFFD, 0xE0AE, 0xB962, -/* 4248 */ 0xE0B8, 0xB95E, 0xE0CA, 0xB963, 0xE0C8, 0xE0BC, 0xE0C6, 0xB960, -/* 4250 */ 0xE0AF, 0xE0C9, 0xE0C4, 0xFFFD, 0xE0CB, 0xB958, 0xFFFD, 0xFFFD, -/* 4258 */ 0xB967, 0xB95D, 0xFFFD, 0xFFFD, 0xE0B5, 0xFFFD, 0xE0BD, 0xE0C1, -/* 4260 */ 0xFFFD, 0xE0C5, 0xB95F, 0xE0B4, 0xE0B2, 0xE0BE, 0xFFFD, 0xFFFD, -/* 4268 */ 0xFFFD, 0xFFFD, 0xE0BB, 0xE0BA, 0xFFFD, 0xE0BF, 0xE0C2, 0xFFFD, -/* 4270 */ 0xE0C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE478, 0xFFFD, 0xBBC7, 0xE4A4, -/* 4278 */ 0xE47A, 0xBBCC, 0xBBD0, 0xE4AD, 0xE4B5, 0xE4A6, 0xBBC8, 0xFFFD, -/* 4280 */ 0xE4AA, 0xE0B6, 0xFFFD, 0xBBC9, 0xE4B1, 0xE4B6, 0xE4AE, 0xFFFD, -/* 4288 */ 0xE4B0, 0xE4B9, 0xE4B2, 0xE47E, 0xE4A9, 0xFFFD, 0xFFFD, 0xBBD1, -/* 4290 */ 0xFFFD, 0xBBCD, 0xE47C, 0xE4AB, 0xBBCB, 0xE4A5, 0xBBCA, 0xE4B3, -/* 4298 */ 0xE4A2, 0xE479, 0xBBCE, 0xE4B8, 0xFFFD, 0xFFFD, 0xE47B, 0xE4AF, -/* 42A0 */ 0xE4AC, 0xE4A7, 0xE477, 0xE476, 0xE4A1, 0xE4B4, 0xBBCF, 0xE4B7, -/* 42A8 */ 0xE47D, 0xE4A3, 0xBE52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42B0 */ 0xBE5A, 0xBE55, 0xE8A4, 0xE8A1, 0xE867, 0xBE50, 0xFFFD, 0xF9D7, -/* 42B8 */ 0xFFFD, 0xBE4F, 0xBE56, 0xFFFD, 0xFFFD, 0xFFFD, 0xE865, 0xBE54, -/* 42C0 */ 0xE871, 0xE863, 0xE864, 0xBE4E, 0xE8A3, 0xBE58, 0xE874, 0xE879, -/* 42C8 */ 0xE873, 0xEBEE, 0xE86F, 0xE877, 0xE875, 0xE868, 0xE862, 0xE87D, -/* 42D0 */ 0xBE57, 0xE87E, 0xFFFD, 0xE878, 0xFFFD, 0xE86D, 0xE86B, 0xE866, -/* 42D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE86E, 0xE87B, 0xE86A, 0xE87A, 0xE8A2, -/* 42E0 */ 0xFFFD, 0xFFFD, 0xBE53, 0xFFFD, 0xE876, 0xE87C, 0xE872, 0xE86C, -/* 42E8 */ 0xBE51, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4A8, 0xE870, 0xBE59, 0xE869, -/* 42F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBF4, 0xBFF7, 0xEBF3, -/* 42F8 */ 0xEBF0, 0xEC44, 0xBFFB, 0xFFFD, 0xEC41, 0xEBF8, 0xEC43, 0xEBE9, -/* 4300 */ 0xEBF6, 0xFFFD, 0xBFFD, 0xFFFD, 0xEBE1, 0xFFFD, 0xEBDF, 0xEC42, -/* 4308 */ 0xFFFD, 0xEC40, 0xEBFE, 0xEBED, 0xEBEC, 0xEBE2, 0xC040, 0xFFFD, -/* 4310 */ 0xEBE8, 0xEBF2, 0xEBFD, 0xC043, 0xEC45, 0xFFFD, 0xC1E8, 0xC045, -/* 4318 */ 0xBFFE, 0xEBE6, 0xFFFD, 0xEBEF, 0xEBDE, 0xEBE0, 0xBFF5, 0xC042, -/* 4320 */ 0xBFFA, 0xEBE7, 0xEBF7, 0xEBF1, 0xC041, 0xEBDD, 0xC1E3, 0xEBF9, -/* 4328 */ 0xEBFC, 0xBFFC, 0xFFFD, 0xEBEB, 0xC044, 0xBFF9, 0xFFFD, 0xFFFD, -/* 4330 */ 0xFFFD, 0xBFF8, 0xEBF5, 0xEBFB, 0xBFF6, 0xFFFD, 0xEBE4, 0xEBFA, -/* 4338 */ 0xFFFD, 0xFFFD, 0xEBE5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBEA, 0xEED2, 0xFFFD, 0xEED7, -/* 4348 */ 0xC1E5, 0xC1E7, 0xEEDD, 0xC1E1, 0xEEEC, 0xEEE3, 0xEED8, 0xEED9, -/* 4350 */ 0xEEE2, 0xFFFD, 0xC1EE, 0xEEE1, 0xEED1, 0xEEE0, 0xEED4, 0xEEED, -/* 4358 */ 0xC1ED, 0xC1EB, 0xEED5, 0xFFFD, 0xEEE8, 0xFFFD, 0xEEDA, 0xEEE7, -/* 4360 */ 0xFFFD, 0xEEE9, 0xEED0, 0xC1E6, 0xFFFD, 0xEEEA, 0xFFFD, 0xFFFD, -/* 4368 */ 0xEEDE, 0xFFFD, 0xC1EA, 0xEEDB, 0xFFFD, 0xFFFD, 0xC1EC, 0xEEE4, -/* 4370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC1E4, 0xEED6, 0xEEE5, 0xFFFD, 0xEEDF, -/* 4378 */ 0xEBE3, 0xEEE6, 0xEED3, 0xFFFD, 0xC1E9, 0xFFFD, 0xEEEB, 0xFFFD, -/* 4380 */ 0xC1E2, 0xEECE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF160, 0xF159, -/* 4388 */ 0xC2E9, 0xFFFD, 0xF154, 0xF163, 0xF15B, 0xEEDC, 0xFFFD, 0xF165, -/* 4390 */ 0xF155, 0xFFFD, 0xC2E8, 0xF15F, 0xC2EA, 0xC2F2, 0xC2F0, 0xF161, -/* 4398 */ 0xC2F1, 0xF157, 0xFFFD, 0xF158, 0xF15D, 0xF162, 0xFFFD, 0xEECD, -/* 43A0 */ 0xC2EB, 0xF16A, 0xF167, 0xF16B, 0xF15E, 0xF15A, 0xF168, 0xF36A, -/* 43A8 */ 0xF15C, 0xFFFD, 0xC2EE, 0xFFFD, 0xC2ED, 0xEECF, 0xC2EF, 0xF164, -/* 43B0 */ 0xF166, 0xC2EC, 0xF169, 0xF153, 0xFFFD, 0xF156, 0xFFFD, 0xFFFD, -/* 43B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF373, 0xFFFD, -/* 43C0 */ 0xF363, 0xC3EB, 0xF371, 0xFFFD, 0xFFFD, 0xF361, 0xC3EC, 0xFFFD, -/* 43C8 */ 0xF36C, 0xFFFD, 0xF368, 0xC3F1, 0xF372, 0xF362, 0xF365, 0xC3E9, -/* 43D0 */ 0xF374, 0xFFFD, 0xF36D, 0xF370, 0xC3EF, 0xC3F4, 0xC3F2, 0xF369, -/* 43D8 */ 0xF364, 0xFFFD, 0xC3ED, 0xC3EE, 0xF360, 0xC3EA, 0xFFFD, 0xC3E8, -/* 43E0 */ 0xC3F0, 0xF36F, 0xC3F3, 0xFFFD, 0xF36B, 0xF375, 0xC3F5, 0xFFFD, -/* 43E8 */ 0xFFFD, 0xFFFD, 0xF367, 0xFFFD, 0xF36E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF4F3, 0xF542, 0xF4F5, 0xF4FC, 0xF366, -/* 43F8 */ 0xF4FA, 0xF4E9, 0xF540, 0xC4C3, 0xF4ED, 0xF4FE, 0xF4F4, 0xFFFD, -/* 4400 */ 0xFFFD, 0xC4C2, 0xFFFD, 0xFFFD, 0xF544, 0xF4F6, 0xFFFD, 0xF4FB, -/* 4408 */ 0xF4FD, 0xF4E7, 0xF541, 0xF4F2, 0xF4F7, 0xF4EB, 0xF4EF, 0xF543, -/* 4410 */ 0xF4F9, 0xF4E8, 0xF4EC, 0xF4EE, 0xF4F8, 0xFFFD, 0xC4C1, 0xF4F1, -/* 4418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4EA, 0xFFFD, -/* 4420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4F0, 0xF661, -/* 4428 */ 0xF666, 0xC54F, 0xF668, 0xFFFD, 0xC549, 0xFFFD, 0xF664, 0xF66A, -/* 4430 */ 0xC54E, 0xC54A, 0xFFFD, 0xC54B, 0xF660, 0xF667, 0xC54D, 0xF665, -/* 4438 */ 0xC54C, 0xF65F, 0xF663, 0xF662, 0xFFFD, 0xF65E, 0xF669, 0xFFFD, -/* 4440 */ 0xFFFD, 0xFFFD, 0xC5B1, 0xF76D, 0xF770, 0xF76C, 0xF76E, 0xF76F, -/* 4448 */ 0xF769, 0xF76A, 0xF767, 0xFFFD, 0xFFFD, 0xF76B, 0xF768, 0xC5B2, -/* 4450 */ 0xC5B3, 0xFFFD, 0xFFFD, 0xF84B, 0xFFFD, 0xF84D, 0xFFFD, 0xFFFD, -/* 4458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF84C, 0xF84E, 0xFFFD, 0xC5E0, 0xFFFD, -/* 4460 */ 0xF84A, 0xC5DF, 0xC5E1, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8CB, 0xF8CC, -/* 4468 */ 0xC644, 0xF8CA, 0xFFFD, 0xF953, 0xF952, 0xF954, 0xC65F, 0xF955, -/* 4470 */ 0xC65E, 0xF956, 0xF972, 0xF975, 0xF974, 0xC668, 0xF973, 0xFFFD, -/* 4478 */ 0xFFFD, 0xFFFD, 0xC672, 0xC670, 0xC671, 0xC677, 0xF9C0, 0xF9C1, -/* 4480 */ 0xF9BF, 0xF9C9, 0xAAF8, 0xFFFD, 0xFFFD, 0xD844, 0xDC78, 0xE8A5, -/* 4488 */ 0xF376, 0xFFFD, 0xFFFD, 0xAAF9, 0xFFFD, 0xADAC, 0xB07B, 0xFFFD, -/* 4490 */ 0xFFFD, 0xD845, 0xFFFD, 0xD846, 0xB3AC, 0xFFFD, 0xB67D, 0xDC7A, -/* 4498 */ 0xDC79, 0xB6A3, 0xB67C, 0xDC7B, 0xB67E, 0xB6A2, 0xB6A1, 0xB67B, -/* 44A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB968, 0xFFFD, 0xFFFD, 0xE0D0, 0xE0CE, -/* 44A8 */ 0xFFFD, 0xE0CF, 0xE0CD, 0xFFFD, 0xBBD2, 0xFFFD, 0xBBD5, 0xBBD7, -/* 44B0 */ 0xBBD6, 0xFFFD, 0xFFFD, 0xBBD3, 0xBBD4, 0xFFFD, 0xE8A7, 0xE8A6, -/* 44B8 */ 0xBE5B, 0xE8A8, 0xFFFD, 0xE8A9, 0xBE5C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44C0 */ 0xEC4D, 0xEC4B, 0xEEF3, 0xFFFD, 0xEC49, 0xEC4A, 0xC046, 0xEC46, -/* 44C8 */ 0xEC4E, 0xEC48, 0xEC4C, 0xEEEF, 0xFFFD, 0xFFFD, 0xEEF1, 0xFFFD, -/* 44D0 */ 0xEEF2, 0xC1F3, 0xEEEE, 0xC1F2, 0xEEF0, 0xC1EF, 0xC1F0, 0xC1F1, -/* 44D8 */ 0xEC47, 0xFFFD, 0xFFFD, 0xC2F5, 0xF16E, 0xF16C, 0xF16D, 0xC2F3, -/* 44E0 */ 0xC2F6, 0xC2F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xF377, 0xF378, 0xC3F6, -/* 44E8 */ 0xFFFD, 0xF545, 0xF547, 0xF546, 0xC4C4, 0xC550, 0xF66D, 0xF66C, -/* 44F0 */ 0xF66B, 0xAAFA, 0xFFFD, 0xC9AA, 0xFFFD, 0xCA58, 0xA6E9, 0xCA56, -/* 44F8 */ 0xCA59, 0xCA57, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBAE, 0xFFFD, 0xA8C1, -/* 4500 */ 0xFFFD, 0xA8C2, 0xCBB0, 0xA8BF, 0xCBAF, 0xCBAD, 0xA8C0, 0xA8BE, -/* 4508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDD8, 0xCDDB, -/* 4510 */ 0xAAFD, 0xCDDA, 0xCDD9, 0xFFFD, 0xAAFC, 0xAAFB, 0xFFFD, 0xAB40, -/* 4518 */ 0xCDDC, 0xAAFE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0C6, -/* 4520 */ 0xADAE, 0xADAF, 0xADB0, 0xD0C7, 0xD0C3, 0xADAD, 0xD0C4, 0xFFFD, -/* 4528 */ 0xD0C5, 0xD0C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0A4, 0xFFFD, 0xFFFD, -/* 4530 */ 0xB0A1, 0xD445, 0xB0A2, 0xB0A5, 0xD446, 0xFFFD, 0xB07E, 0xB07C, -/* 4538 */ 0xB07D, 0xB0A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3AD, -/* 4540 */ 0xD849, 0xB3B5, 0xD848, 0xFFFD, 0xD84B, 0xB3B1, 0xD84A, 0xB6AB, -/* 4548 */ 0xB3AF, 0xB3B2, 0xB3AE, 0xB3B3, 0xB3B4, 0xB3B0, 0xFFFD, 0xFFFD, -/* 4550 */ 0xFFFD, 0xD847, 0xB6A7, 0xDC7D, 0xFFFD, 0xDCA3, 0xFFFD, 0xFFFD, -/* 4558 */ 0xDCA2, 0xB6AC, 0xB6A8, 0xB6A9, 0xDC7C, 0xDC7E, 0xDCA1, 0xB6A4, -/* 4560 */ 0xB6A6, 0xFFFD, 0xB6AA, 0xB6A5, 0xFFFD, 0xFFFD, 0xE0D3, 0xE0D1, -/* 4568 */ 0xE0D2, 0xB96A, 0xB96B, 0xFFFD, 0xE0D4, 0xB969, 0xBBD8, 0xFFFD, -/* 4570 */ 0xBBDA, 0xBBD9, 0xFFFD, 0xE4BB, 0xFFFD, 0xFFFD, 0xE4BC, 0xE8AB, -/* 4578 */ 0xFFFD, 0xE8AA, 0xFFFD, 0xFFFD, 0xC047, 0xC048, 0xEC4F, 0xC049, -/* 4580 */ 0xFFFD, 0xEEF6, 0xFFFD, 0xEEF4, 0xFFFD, 0xEEF5, 0xC1F4, 0xFFFD, -/* 4588 */ 0xF16F, 0xC3F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1F5, 0xAB41, 0xFFFD, -/* 4590 */ 0xB0A6, 0xD447, 0xFFFD, 0xFFFD, 0xD84C, 0xB3B6, 0xB6AD, 0xDCA4, -/* 4598 */ 0xDCA6, 0xB6AF, 0xB6AE, 0xB6B0, 0xB6B1, 0xDCA5, 0xB96E, 0xB96F, -/* 45A0 */ 0xB96D, 0xBBDB, 0xB96C, 0xE0D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBDC, -/* 45A8 */ 0xE8AC, 0xEC50, 0xC04A, 0xC1F6, 0xF170, 0xF174, 0xC2F9, 0xF171, -/* 45B0 */ 0xC2FA, 0xC2F8, 0xF175, 0xC2FB, 0xF173, 0xFFFD, 0xF379, 0xC2F7, -/* 45B8 */ 0xC3F8, 0xFFFD, 0xF8CD, 0xFFFD, 0xFFFD, 0xAB42, 0xB3B8, 0xB3B7, -/* 45C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6B2, 0xDCA8, 0xDCA7, 0xB6B3, -/* 45C8 */ 0xFFFD, 0xFFFD, 0xE0D9, 0xB973, 0xB970, 0xE0D8, 0xB972, 0xE0D6, -/* 45D0 */ 0xB971, 0xFFFD, 0xE0D7, 0xFFFD, 0xE4BD, 0xBBDD, 0xFFFD, 0xE8AF, -/* 45D8 */ 0xFFFD, 0xBE5D, 0xE8AD, 0xBE5E, 0xBE5F, 0xE8AE, 0xBE60, 0xFFFD, -/* 45E0 */ 0xEC51, 0xFFFD, 0xC04E, 0xC04B, 0xC050, 0xEC53, 0xC04C, 0xEC52, -/* 45E8 */ 0xC04F, 0xFFFD, 0xFFFD, 0xC04D, 0xFFFD, 0xEEF9, 0xEEFB, 0xFFFD, -/* 45F0 */ 0xFFFD, 0xC1F7, 0xEEFA, 0xC1F8, 0xEEF8, 0xEEF7, 0xFFFD, 0xF177, -/* 45F8 */ 0xF176, 0xC2FC, 0xF178, 0xF37E, 0xC3FA, 0xF37D, 0xF37A, 0xC3F9, -/* 4600 */ 0xF37B, 0xF37C, 0xFFFD, 0xF548, 0xF549, 0xC4C5, 0xFFFD, 0xC553, -/* 4608 */ 0xFFFD, 0xFFFD, 0xF66E, 0xFFFD, 0xFFFD, 0xC551, 0xC552, 0xF66F, -/* 4610 */ 0xFFFD, 0xFFFD, 0xC5B4, 0xC5B5, 0xF771, 0xFFFD, 0xFFFD, 0xC645, -/* 4618 */ 0xF8CF, 0xC647, 0xFFFD, 0xF8CE, 0xF8D0, 0xC646, 0xF957, 0xFFFD, -/* 4620 */ 0xF9AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAB43, -/* 4628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB974, 0xFFFD, 0xE4BE, 0xFFFD, 0xE8B0, -/* 4630 */ 0xC051, 0xC052, 0xFFFD, 0xAB44, 0xFFFD, 0xBE61, 0xC3FB, 0xADB1, -/* 4638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC053, 0xFFFD, 0xC5E2, 0xADB2, 0xD84D, -/* 4640 */ 0xFFFD, 0xDCA9, 0xFFFD, 0xDCAB, 0xFFFD, 0xDCAA, 0xFFFD, 0xE0DD, -/* 4648 */ 0xE0DA, 0xB975, 0xFFFD, 0xB976, 0xE0DB, 0xE0DC, 0xFFFD, 0xE4C0, -/* 4650 */ 0xE4C5, 0xBBDE, 0xE4BF, 0xE4C1, 0xE4C8, 0xE4C3, 0xE4C7, 0xE4C4, -/* 4658 */ 0xE4C2, 0xE4C6, 0xBBDF, 0xFFFD, 0xFFFD, 0xE8B3, 0xFFFD, 0xE8B1, -/* 4660 */ 0xBE63, 0xFFFD, 0xBE62, 0xE8B2, 0xBE64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4668 */ 0xFFFD, 0xEC56, 0xFFFD, 0xFFFD, 0xEC55, 0xC054, 0xEC54, 0xEEFC, -/* 4670 */ 0xFFFD, 0xEEFE, 0xEF41, 0xEF40, 0xFFFD, 0xC1F9, 0xEEFD, 0xF1A1, -/* 4678 */ 0xC2FD, 0xF17D, 0xF1A2, 0xC2FE, 0xFFFD, 0xF17B, 0xFFFD, 0xF17E, -/* 4680 */ 0xF17C, 0xF179, 0xC340, 0xF17A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4688 */ 0xF3A1, 0xFFFD, 0xFFFD, 0xF3A3, 0xF3A2, 0xFFFD, 0xF54A, 0xFFFD, -/* 4690 */ 0xF54B, 0xFFFD, 0xFFFD, 0xFFFD, 0xF670, 0xFFFD, 0xC5B7, 0xFFFD, -/* 4698 */ 0xC5B6, 0xF84F, 0xF850, 0xC648, 0xF8D1, 0xFFFD, 0xC669, 0xFFFD, -/* 46A0 */ 0xADB3, 0xB6B4, 0xE4CA, 0xE4C9, 0xE8B5, 0xE8B4, 0xFFFD, 0xFFFD, -/* 46A8 */ 0xC1FA, 0xEF43, 0xEF42, 0xF1A5, 0xF1A3, 0xF1A6, 0xF1A4, 0xFFFD, -/* 46B0 */ 0xFFFD, 0xC3FC, 0xF3A4, 0xF3A5, 0xF3A6, 0xFFFD, 0xF671, 0xFFFD, -/* 46B8 */ 0xF772, 0xFFFD, 0xF8D2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46C0 */ 0xFFFD, 0xFFFD, 0xADB4, 0xFFFD, 0xFFFD, 0xEC57, 0xEF44, 0xFFFD, -/* 46C8 */ 0xADB5, 0xFFFD, 0xFFFD, 0xBBE0, 0xFFFD, 0xEC58, 0xC341, 0xF1A7, -/* 46D0 */ 0xC3FD, 0xFFFD, 0xF54C, 0xF54D, 0xC554, 0xF851, 0xADB6, 0xB3BB, -/* 46D8 */ 0xB3BC, 0xD84E, 0xB6B5, 0xB6B6, 0xDCAC, 0xB6B7, 0xFFFD, 0xB97A, -/* 46E0 */ 0xFFFD, 0xB97C, 0xE0DF, 0xE0E0, 0xE0DE, 0xB977, 0xB978, 0xB97B, -/* 46E8 */ 0xB979, 0xFFFD, 0xFFFD, 0xE4CB, 0xBBE1, 0xBBE2, 0xFFFD, 0xFFFD, -/* 46F0 */ 0xE8BC, 0xBE67, 0xE8B7, 0xE8B6, 0xFFFD, 0xE8BB, 0xBE65, 0xFFFD, -/* 46F8 */ 0xFFFD, 0xC05B, 0xFFFD, 0xE8B8, 0xE8BD, 0xE8BA, 0xE8B9, 0xFFFD, -/* 4700 */ 0xBE66, 0xFFFD, 0xC059, 0xFFFD, 0xEC5A, 0xC055, 0xFFFD, 0xEC5B, -/* 4708 */ 0xFFFD, 0xFFFD, 0xEC59, 0xFFFD, 0xC058, 0xC056, 0xC05A, 0xFFFD, -/* 4710 */ 0xC057, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEF45, 0xFFFD, -/* 4718 */ 0xEF4A, 0xEF46, 0xEF49, 0xC1FB, 0xFFFD, 0xEDD4, 0xEF48, 0xEF47, -/* 4720 */ 0xFFFD, 0xC344, 0xC342, 0xC345, 0xC343, 0xF1A8, 0xF1A9, 0xF1AA, -/* 4728 */ 0xC346, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3AA, 0xC440, 0xF3A8, 0xFFFD, -/* 4730 */ 0xC441, 0xF3A7, 0xF3A9, 0xC3FE, 0xF551, 0xF54E, 0xFFFD, 0xF54F, -/* 4738 */ 0xF550, 0xF672, 0xC556, 0xFFFD, 0xC555, 0xFFFD, 0xF774, 0xF773, -/* 4740 */ 0xC5B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5E3, 0xC649, 0xC660, 0xF958, -/* 4748 */ 0xF9AE, 0xF9AF, 0xADB7, 0xDCAD, 0xFFFD, 0xFFFD, 0xE0E1, 0xE4CC, -/* 4750 */ 0xE4CD, 0xBBE3, 0xFFFD, 0xBBE4, 0xE8BE, 0xBE68, 0xFFFD, 0xFFFD, -/* 4758 */ 0xC1FC, 0xFFFD, 0xF1AB, 0xFFFD, 0xC347, 0xF3AD, 0xC442, 0xF3AC, -/* 4760 */ 0xF3AE, 0xF3AB, 0xF675, 0xF552, 0xF553, 0xFFFD, 0xC4C6, 0xFFFD, -/* 4768 */ 0xF674, 0xFFFD, 0xFFFD, 0xF673, 0xFFFD, 0xF775, 0xF9B0, 0xADB8, -/* 4770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xADB9, 0xFFFD, 0xFFFD, 0xB0A7, 0xD448, -/* 4778 */ 0xFFFD, 0xD84F, 0xFFFD, 0xB6B8, 0xFFFD, 0xB6BB, 0xB6B9, 0xDCAE, -/* 4780 */ 0xFFFD, 0xB6BD, 0xFFFD, 0xB6BA, 0xFFFD, 0xFFFD, 0xB6BC, 0xFFFD, -/* 4788 */ 0xB97E, 0xFFFD, 0xE0E2, 0xFFFD, 0xFFFD, 0xE0E3, 0xE8C0, 0xFFFD, -/* 4790 */ 0xB97D, 0xB9A1, 0xB9A2, 0xFFFD, 0xE4CF, 0xFFFD, 0xE4CE, 0xBBE5, -/* 4798 */ 0xFFFD, 0xBBE6, 0xFFFD, 0xE4D0, 0xE8BF, 0xBBE8, 0xBE69, 0xFFFD, -/* 47A0 */ 0xBBE7, 0xFFFD, 0xFFFD, 0xFFFD, 0xC05C, 0xE8C1, 0xBE6B, 0xBE6A, -/* 47A8 */ 0xE8C2, 0xE8C5, 0xE8C3, 0xE8C4, 0xBE6C, 0xFFFD, 0xC061, 0xC05F, -/* 47B0 */ 0xFFFD, 0xFFFD, 0xC05E, 0xEC5D, 0xFFFD, 0xC060, 0xFFFD, 0xFFFD, -/* 47B8 */ 0xEC5C, 0xEF4B, 0xFFFD, 0xEC5E, 0xC05D, 0xEC5F, 0xEF4E, 0xEF4C, -/* 47C0 */ 0xEF4D, 0xEF52, 0xC34B, 0xEF51, 0xEF54, 0xEF53, 0xEF50, 0xEF4F, -/* 47C8 */ 0xFFFD, 0xC1FD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1AE, 0xFFFD, -/* 47D0 */ 0xF1AD, 0xC34A, 0xC348, 0xC349, 0xFFFD, 0xF1AC, 0xFFFD, 0xF3B1, -/* 47D8 */ 0xFFFD, 0xC443, 0xFFFD, 0xF3B0, 0xF3AF, 0xC444, 0xFFFD, 0xF558, -/* 47E0 */ 0xF557, 0xFFFD, 0xF555, 0xFFFD, 0xF554, 0xC4C8, 0xC4C7, 0xF559, -/* 47E8 */ 0xF776, 0xC5B9, 0xF677, 0xC557, 0xF676, 0xF556, 0xFFFD, 0xF777, -/* 47F0 */ 0xC5E4, 0xFFFD, 0xC661, 0xF959, 0xFFFD, 0xF9B1, 0xADBA, 0xD850, -/* 47F8 */ 0xEF55, 0xADBB, 0xFFFD, 0xFFFD, 0xE4D2, 0xE4D1, 0xEC60, 0xFFFD, -/* 4800 */ 0xFFFD, 0xEF57, 0xFFFD, 0xEF56, 0xFFFD, 0xC34C, 0xF3B2, 0xF3B3, -/* 4808 */ 0xC4C9, 0xFFFD, 0xFFFD, 0xF9B2, 0xB0A8, 0xB6BF, 0xB6BE, 0xE0E4, -/* 4810 */ 0xE0E6, 0xB9A4, 0xE0E5, 0xB9A3, 0xB9A5, 0xE0E7, 0xFFFD, 0xFFFD, -/* 4818 */ 0xFFFD, 0xE4D4, 0xE4D6, 0xE4D5, 0xFFFD, 0xE4D8, 0xFFFD, 0xFFFD, -/* 4820 */ 0xFFFD, 0xBBE9, 0xE4D7, 0xE4D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4D9, -/* 4828 */ 0xFFFD, 0xE8CC, 0xFFFD, 0xE8CF, 0xE8D1, 0xE8C7, 0xE8CB, 0xE8C8, -/* 4830 */ 0xBE6E, 0xBE71, 0xBE73, 0xE8C9, 0xE8CA, 0xBE72, 0xE8CD, 0xE8D0, -/* 4838 */ 0xE8CE, 0xBE74, 0xFFFD, 0xBE70, 0xE8C6, 0xBE6D, 0xFFFD, 0xBE6F, -/* 4840 */ 0xFFFD, 0xFFFD, 0xC063, 0xEC66, 0xEC64, 0xEC63, 0xFFFD, 0xEC69, -/* 4848 */ 0xFFFD, 0xEC68, 0xEC67, 0xFFFD, 0xEC62, 0xC062, 0xEC61, 0xFFFD, -/* 4850 */ 0xEC65, 0xC064, 0xFFFD, 0xFFFD, 0xEF5A, 0xFFFD, 0xEF5E, 0xEF5B, -/* 4858 */ 0xEF5D, 0xEF5C, 0xEF59, 0xEF5F, 0xEF62, 0xEF60, 0xEF61, 0xC240, -/* 4860 */ 0xFFFD, 0xC1FE, 0xEF58, 0xEF63, 0xF1B3, 0xF1B6, 0xF1B8, 0xF1B7, -/* 4868 */ 0xFFFD, 0xF1B1, 0xF1B5, 0xF1B0, 0xFFFD, 0xF1B2, 0xC34D, 0xF1AF, -/* 4870 */ 0xFFFD, 0xF1B4, 0xFFFD, 0xFFFD, 0xF3C0, 0xF3B5, 0xC445, 0xFFFD, -/* 4878 */ 0xFFFD, 0xC446, 0xF3B4, 0xF3B9, 0xF3BF, 0xF3B7, 0xF3BE, 0xFFFD, -/* 4880 */ 0xF3BB, 0xFFFD, 0xF3BA, 0xF3BD, 0xF3B8, 0xF3B6, 0xFFFD, 0xF3BC, -/* 4888 */ 0xFFFD, 0xF560, 0xF55E, 0xC4CA, 0xF55D, 0xF563, 0xF561, 0xFFFD, -/* 4890 */ 0xC4CB, 0xF55C, 0xF55A, 0xFFFD, 0xF55B, 0xC4CD, 0xF55F, 0xC4CC, -/* 4898 */ 0xF562, 0xF678, 0xF67E, 0xFFFD, 0xFFFD, 0xF679, 0xC55B, 0xF6A1, -/* 48A0 */ 0xC55A, 0xF67D, 0xF67C, 0xC559, 0xF67B, 0xC558, 0xF67A, 0xFFFD, -/* 48A8 */ 0xF77D, 0xF7A1, 0xF77E, 0xFFFD, 0xF77B, 0xC5BB, 0xF778, 0xF77C, -/* 48B0 */ 0xF7A3, 0xFFFD, 0xF7A2, 0xF779, 0xF77A, 0xC5BA, 0xF852, 0xC5E7, -/* 48B8 */ 0xFFFD, 0xF853, 0xC5E5, 0xC5E6, 0xFFFD, 0xFFFD, 0xF8D3, 0xC64A, -/* 48C0 */ 0xF976, 0xFFFD, 0xC66A, 0xFFFD, 0xF9B3, 0xC66B, 0xF9B4, 0xF9B5, -/* 48C8 */ 0xF9C3, 0xF9C2, 0xC67A, 0xF9CD, 0xB0A9, 0xFFFD, 0xFFFD, 0xE0E9, -/* 48D0 */ 0xFFFD, 0xE0E8, 0xFFFD, 0xBBEA, 0xBBEB, 0xE4DA, 0xFFFD, 0xE8D2, -/* 48D8 */ 0xEC6C, 0xFFFD, 0xFFFD, 0xBE75, 0xC065, 0xEC6A, 0xFFFD, 0xEC6D, -/* 48E0 */ 0xC066, 0xFFFD, 0xEF64, 0xEC6B, 0xF1B9, 0xC34E, 0xF3C1, 0xFFFD, -/* 48E8 */ 0xFFFD, 0xFFFD, 0xF566, 0xF564, 0xFFFD, 0xFFFD, 0xF565, 0xFFFD, -/* 48F0 */ 0xFFFD, 0xF6A2, 0xFFFD, 0xC55C, 0xF7A4, 0xC5EA, 0xC5BC, 0xC5E8, -/* 48F8 */ 0xC5E9, 0xF8D4, 0xC662, 0xFFFD, 0xB0AA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4900 */ 0xF1BA, 0xFFFD, 0xFFFD, 0xD449, 0xFFFD, 0xB9A6, 0xFFFD, 0xE4DB, -/* 4908 */ 0xFFFD, 0xFFFD, 0xBBEC, 0xE4DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8D4, -/* 4910 */ 0xE8D3, 0xC068, 0xBE76, 0xBE77, 0xFFFD, 0xE8D7, 0xE8D6, 0xE8D5, -/* 4918 */ 0xFFFD, 0xFFFD, 0xEC6E, 0xEC71, 0xFFFD, 0xEC70, 0xEC6F, 0xC067, -/* 4920 */ 0xEF68, 0xEF66, 0xEF65, 0xFFFD, 0xFFFD, 0xEF67, 0xFFFD, 0xC34F, -/* 4928 */ 0xF1BC, 0xF1BD, 0xC350, 0xFFFD, 0xF1BB, 0xFFFD, 0xF3C3, 0xF3C2, -/* 4930 */ 0xF3C5, 0xC447, 0xF3C4, 0xFFFD, 0xF567, 0xF569, 0xF568, 0xFFFD, -/* 4938 */ 0xFFFD, 0xF6A3, 0xF6A6, 0xF6A4, 0xF6A5, 0xF7A5, 0xC5BD, 0xFFFD, -/* 4940 */ 0xFFFD, 0xFFFD, 0xF854, 0xF855, 0xF856, 0xFFFD, 0xC64B, 0xC663, -/* 4948 */ 0xF9B6, 0xB0AB, 0xFFFD, 0xBE78, 0xC069, 0xF1BE, 0xFFFD, 0xF7A6, -/* 4950 */ 0xFFFD, 0xFFFD, 0xF9C4, 0xD44A, 0xFFFD, 0xC67B, 0xB0AC, 0xEC72, -/* 4958 */ 0xFFFD, 0xF1BF, 0xFFFD, 0xF3C6, 0xFFFD, 0xFFFD, 0xF6A7, 0xF7A7, -/* 4960 */ 0xB0AD, 0xFFFD, 0xE4DD, 0xE4DE, 0xFFFD, 0xBBED, 0xBBEE, 0xE8D9, -/* 4968 */ 0xBE7A, 0xBE79, 0xE8D8, 0xFFFD, 0xEF69, 0xFFFD, 0xF1C0, 0xF1C2, -/* 4970 */ 0xF1C1, 0xC353, 0xC352, 0xC351, 0xFFFD, 0xC55E, 0xF6A8, 0xFFFD, -/* 4978 */ 0xC55D, 0xF7A9, 0xF7A8, 0xFFFD, 0xC64C, 0xF8D5, 0xB3BD, 0xE0EA, -/* 4980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE4E1, 0xE4DF, 0xE4E0, 0xFFFD, 0xFFFD, -/* 4988 */ 0xE8E2, 0xFFFD, 0xE8DD, 0xE8DA, 0xE8E1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4990 */ 0xE8E3, 0xFFFD, 0xFFFD, 0xBE7C, 0xE8E0, 0xE8DC, 0xFFFD, 0xFFFD, -/* 4998 */ 0xE8DB, 0xE8DF, 0xE8DE, 0xBE7B, 0xFFFD, 0xFFFD, 0xEC7D, 0xEC78, -/* 49A0 */ 0xEC76, 0xECA1, 0xEC77, 0xFFFD, 0xEC73, 0xFFFD, 0xEC79, 0xFFFD, -/* 49A8 */ 0xFFFD, 0xEC74, 0xEF72, 0xEC75, 0xECA2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 49B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEC7C, 0xC06A, 0xEC7B, 0xEC7A, -/* 49B8 */ 0xFFFD, 0xEC7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEF6A, 0xEF6D, -/* 49C0 */ 0xFFFD, 0xFFFD, 0xEF6C, 0xFFFD, 0xEF74, 0xEF6F, 0xEF73, 0xFFFD, -/* 49C8 */ 0xEF71, 0xEF70, 0xEF6E, 0xFFFD, 0xEF6B, 0xFFFD, 0xC243, 0xC242, -/* 49D0 */ 0xFFFD, 0xC244, 0xC241, 0xEF75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 49D8 */ 0xFFFD, 0xF1C8, 0xF1CB, 0xFFFD, 0xF1C9, 0xF1CD, 0xFFFD, 0xFFFD, -/* 49E0 */ 0xFFFD, 0xF1CE, 0xFFFD, 0xF1C6, 0xC358, 0xF1C7, 0xFFFD, 0xF1C5, -/* 49E8 */ 0xF1CC, 0xFFFD, 0xF1C4, 0xF1C3, 0xC357, 0xC355, 0xC354, 0xFFFD, -/* 49F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1CA, -/* 49F8 */ 0xF3CF, 0xF3D5, 0xC44A, 0xF3D0, 0xFFFD, 0xF3D3, 0xF3D7, 0xC44B, -/* 4A00 */ 0xF3D2, 0xFFFD, 0xF3CA, 0xFFFD, 0xF3C9, 0xF3D6, 0xF3CD, 0xFFFD, -/* 4A08 */ 0xF3CB, 0xF3D4, 0xF3CC, 0xC449, 0xC448, 0xFFFD, 0xF3C7, 0xF3C8, -/* 4A10 */ 0xF3D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3CE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF56C, 0xF56F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A20 */ 0xFFFD, 0xC356, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A28 */ 0xFFFD, 0xF56D, 0xF573, 0xF571, 0xF56B, 0xF576, 0xFFFD, 0xF56A, -/* 4A30 */ 0xFFFD, 0xC4CF, 0xF572, 0xFFFD, 0xFFFD, 0xFFFD, 0xF56E, 0xC4CE, -/* 4A38 */ 0xF575, 0xFFFD, 0xFFFD, 0xF574, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A40 */ 0xF6AB, 0xF6AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6B1, 0xFFFD, 0xF6AD, -/* 4A48 */ 0xF6B0, 0xC560, 0xFFFD, 0xFFFD, 0xF6AE, 0xF6AF, 0xFFFD, 0xF6A9, -/* 4A50 */ 0xF6AC, 0xC55F, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5BF, 0xF7B4, 0xF7AF, -/* 4A58 */ 0xF7B3, 0xFFFD, 0xF7B6, 0xF7B2, 0xFFFD, 0xF7AE, 0xFFFD, 0xC5C1, -/* 4A60 */ 0xF7B1, 0xF7B5, 0xC5C0, 0xF7AC, 0xF570, 0xF7B0, 0xFFFD, 0xFFFD, -/* 4A68 */ 0xF7AD, 0xFFFD, 0xF7AA, 0xFFFD, 0xF7AB, 0xC5BE, 0xF85A, 0xF85C, -/* 4A70 */ 0xF85F, 0xF85B, 0xF860, 0xFFFD, 0xF859, 0xFFFD, 0xF857, 0xFFFD, -/* 4A78 */ 0xC5EB, 0xF85D, 0xC5ED, 0xC5EC, 0xF858, 0xF85E, 0xFFFD, 0xFFFD, -/* 4A80 */ 0xFFFD, 0xFFFD, 0xF8DA, 0xC64D, 0xF8DB, 0xFFFD, 0xF8D9, 0xF8D6, -/* 4A88 */ 0xFFFD, 0xFFFD, 0xF8D8, 0xF8D7, 0xF95A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4A90 */ 0xFFFD, 0xF95C, 0xF95B, 0xFFFD, 0xFFFD, 0xF979, 0xFFFD, 0xF978, -/* 4A98 */ 0xF977, 0xF97A, 0xFFFD, 0xC673, 0xC674, 0xF9CA, 0xF9CE, 0xB3BE, -/* 4AA0 */ 0xDCAF, 0xE0ED, 0xFFFD, 0xB9A7, 0xE0EB, 0xFFFD, 0xFFFD, 0xE0EC, -/* 4AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE4E2, 0xE4E3, 0xBBF1, 0xBBEF, 0xE4E4, -/* 4AB0 */ 0xBBF0, 0xE8E8, 0xFFFD, 0xE8EB, 0xE8E5, 0xE8EC, 0xE8E4, 0xE8E6, -/* 4AB8 */ 0xFFFD, 0xE8E7, 0xE8EA, 0xFFFD, 0xFFFD, 0xBEA1, 0xE8EF, 0xE8EE, -/* 4AC0 */ 0xBE7D, 0xE8E9, 0xE8ED, 0xBE7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4AC8 */ 0xFFFD, 0xFFFD, 0xECAC, 0xFFFD, 0xC06F, 0xFFFD, 0xECA7, 0xC06B, -/* 4AD0 */ 0xFFFD, 0xECA4, 0xECAA, 0xECAD, 0xFFFD, 0xC070, 0xFFFD, 0xECA9, -/* 4AD8 */ 0xECA6, 0xECAE, 0xECA5, 0xFFFD, 0xECAB, 0xC06C, 0xFFFD, 0xECA3, -/* 4AE0 */ 0xC06D, 0xFFFD, 0xC06E, 0xECA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFA9, -/* 4AE8 */ 0xEF7A, 0xEF7B, 0xEF7E, 0xEF7C, 0xFFFD, 0xEF76, 0xFFFD, 0xFFFD, -/* 4AF0 */ 0xEF79, 0xEFA5, 0xEF7D, 0xFFFD, 0xFFFD, 0xC245, 0xFFFD, 0xEFA7, -/* 4AF8 */ 0xEFA4, 0xC246, 0xEFA6, 0xEF77, 0xEFA2, 0xEFA3, 0xFFFD, 0xEFA1, -/* 4B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1D2, 0xF1D4, 0xF1D7, 0xFFFD, -/* 4B08 */ 0xFFFD, 0xF1D1, 0xFFFD, 0xC359, 0xF1D9, 0xF1D0, 0xF1DA, 0xFFFD, -/* 4B10 */ 0xF1D6, 0xF1D8, 0xF1DC, 0xF1D5, 0xF1DD, 0xF1D3, 0xF1CF, 0xC35A, -/* 4B18 */ 0xFFFD, 0xF1DB, 0xC35B, 0xC44D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4B20 */ 0xFFFD, 0xEF78, 0xF3F1, 0xF3E8, 0xC44F, 0xF3E4, 0xC450, 0xFFFD, -/* 4B28 */ 0xFFFD, 0xF3ED, 0xF3E7, 0xF3DD, 0xC44E, 0xF3EA, 0xF3E5, 0xF3E6, -/* 4B30 */ 0xFFFD, 0xF3D8, 0xF3DF, 0xF3EE, 0xFFFD, 0xF3EB, 0xFFFD, 0xF3E3, -/* 4B38 */ 0xFFFD, 0xF3EF, 0xF3DE, 0xF3D9, 0xF3EC, 0xFFFD, 0xF3DB, 0xF3E9, -/* 4B40 */ 0xF3E0, 0xF3F0, 0xF3DC, 0xC44C, 0xF3DA, 0xF3E1, 0xF3E2, 0xFFFD, -/* 4B48 */ 0xFFFD, 0xFFFD, 0xF57D, 0xFFFD, 0xF57B, 0xFFFD, 0xF5A2, 0xFFFD, -/* 4B50 */ 0xF5AE, 0xF5A5, 0xF57C, 0xF578, 0xF5A7, 0xF57E, 0xF5A3, 0xF57A, -/* 4B58 */ 0xF5AA, 0xF577, 0xF5A1, 0xF5A6, 0xF5A8, 0xF5AB, 0xF579, 0xFFFD, -/* 4B60 */ 0xF5AF, 0xF5B0, 0xF5A9, 0xF5AD, 0xF5A4, 0xFFFD, 0xF6C1, 0xF6C4, -/* 4B68 */ 0xFFFD, 0xC561, 0xFFFD, 0xF6C3, 0xF6C8, 0xF6C6, 0xC562, 0xF6BD, -/* 4B70 */ 0xF6B3, 0xF6B2, 0xC564, 0xF6BF, 0xF6C0, 0xF6BC, 0xF6B4, 0xFFFD, -/* 4B78 */ 0xF6B9, 0xF5AC, 0xFFFD, 0xF6B5, 0xC563, 0xF6BB, 0xFFFD, 0xF6BA, -/* 4B80 */ 0xFFFD, 0xF6B6, 0xF6C2, 0xFFFD, 0xF6B7, 0xF7BB, 0xF6C5, 0xF6C7, -/* 4B88 */ 0xF6BE, 0xF6B8, 0xF7BC, 0xF7BE, 0xF7B8, 0xC5C2, 0xFFFD, 0xF7C5, -/* 4B90 */ 0xF7C3, 0xC5C3, 0xF7C2, 0xF7C1, 0xF7BA, 0xF7B7, 0xF7BD, 0xF7C6, -/* 4B98 */ 0xF7B9, 0xF7BF, 0xFFFD, 0xF869, 0xF86E, 0xF864, 0xF867, 0xC5EE, -/* 4BA0 */ 0xF86B, 0xFFFD, 0xF872, 0xF7C0, 0xFFFD, 0xF865, 0xF86F, 0xF873, -/* 4BA8 */ 0xF86A, 0xF863, 0xF86D, 0xFFFD, 0xF86C, 0xF871, 0xF870, 0xF7C4, -/* 4BB0 */ 0xF868, 0xF862, 0xF866, 0xC64E, 0xC64F, 0xF861, 0xFFFD, 0xF8E6, -/* 4BB8 */ 0xF8DD, 0xF8E5, 0xF8E2, 0xF8E3, 0xF8DC, 0xF8DF, 0xF8E7, 0xF8E1, -/* 4BC0 */ 0xF8E0, 0xF8DE, 0xFFFD, 0xF8E4, 0xFFFD, 0xF95D, 0xFFFD, 0xF95E, -/* 4BC8 */ 0xFFFD, 0xF960, 0xF95F, 0xF962, 0xF961, 0xF97C, 0xF97B, 0xF9B7, -/* 4BD0 */ 0xFFFD, 0xF9B8, 0xFFFD, 0xF9C5, 0xC678, 0xC67C, 0xFFFD, 0xF9CF, -/* 4BD8 */ 0xC67D, 0xB3BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4D0, 0xF6C9, 0xFFFD, -/* 4BE0 */ 0xC650, 0xC651, 0xFFFD, 0xB3C0, 0xE0EE, 0xFFFD, 0xB9A8, 0xE8F0, -/* 4BE8 */ 0xFFFD, 0xFFFD, 0xECB0, 0xECB1, 0xECAF, 0xEFAB, 0xEFAA, 0xC247, -/* 4BF0 */ 0xF1DF, 0xEFAC, 0xF1DE, 0xFFFD, 0xFFFD, 0xF3F3, 0xC451, 0xC453, -/* 4BF8 */ 0xF3F2, 0xFFFD, 0xFFFD, 0xC452, 0xFFFD, 0xF5B1, 0xF5B3, 0xF5B2, -/* 4C00 */ 0xF6CA, 0xC565, 0xFFFD, 0xC5EF, 0xF8E8, 0xF963, 0xFFFD, 0xFFFD, -/* 4C08 */ 0xF9D2, 0xB3C1, 0xFFFD, 0xE4E5, 0xFFFD, 0xBEA2, 0xFFFD, 0xFFFD, -/* 4C10 */ 0xFFFD, 0xECB3, 0xECB2, 0xFFFD, 0xEFAD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C18 */ 0xC454, 0xC4D1, 0xF7C7, 0xF9CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3C2, -/* 4C20 */ 0xBBF2, 0xFFFD, 0xBEA3, 0xFFFD, 0xF3F4, 0xFFFD, 0xF874, 0xB6C0, -/* 4C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFAE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C30 */ 0xC664, 0xB6C1, 0xBEA4, 0xC248, 0xF875, 0xB6C2, 0xFFFD, 0xE8F1, -/* 4C38 */ 0xC072, 0xECB4, 0xECB5, 0xFFFD, 0xC071, 0xFFFD, 0xEFAF, 0xC24C, -/* 4C40 */ 0xC24A, 0xC24B, 0xC249, 0xF1E0, 0xC35C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4C48 */ 0xF5B5, 0xF5B4, 0xF5B7, 0xF5B6, 0xC4D2, 0xFFFD, 0xFFFD, 0xF6CB, -/* 4C50 */ 0xFFFD, 0xF6CD, 0xF6CC, 0xC566, 0xF7C8, 0xFFFD, 0xF876, 0xF877, -/* 4C58 */ 0xC5F0, 0xF964, 0xF97D, 0xC675, 0xFFFD, 0xDCB0, 0xECB6, 0xEFB0, -/* 4C60 */ 0xF3F5, 0xE0EF, 0xFFFD, 0xEFB1, 0xF1E2, 0xF1E1, 0xFFFD, 0xFFFD, -/* 4C68 */ 0xFFFD, 0xFFFD, 0xF878, 0xC652, 0xFFFD, 0xF965, 0xF97E, 0xFFFD, -/* 4C70 */ 0xFFFD, 0xFFFD, 0xB9A9, 0xE8F2, 0xE8F3, 0xFFFD, 0xECB7, 0xB9AA, -/* 4C78 */ 0xFFFD, 0xC35D, 0xF1E3, 0xFFFD, 0xF6CF, 0xC567, 0xF6D0, 0xF6CE, -/* 4C80 */ 0xF879, 0xFFFD, 0xF8E9, 0xFFFD, 0xB9AB, 0xFFFD, 0xEFB4, 0xEFB3, -/* 4C88 */ 0xEFB2, 0xF1E4, 0xFFFD, 0xFFFD, 0xF1E8, 0xF1E7, 0xF1E6, 0xF1E5, -/* 4C90 */ 0xC35E, 0xF3F6, 0xF5B9, 0xC4D3, 0xF5B8, 0xF6D1, 0xF7CB, 0xF7CA, -/* 4C98 */ 0xC5C4, 0xF7C9, 0xF87C, 0xF87B, 0xF87A, 0xFFFD, 0xFFFD, 0xBBF3, -/* 4CA0 */ 0xFFFD, 0xECB8, 0xC24D, 0xFFFD, 0xF3F7, 0xF3F8, 0xF7CC, 0xF87D, -/* 4CA8 */ 0xFFFD, 0xFFFD, 0xF8EA, 0xF966, 0xF9B9, 0xF9D4, 0xBBF4, 0xC24E, -/* 4CB0 */ 0xF1E9, 0xF3F9, 0xF6D2, 0xF87E, 0xFFFD, 0xFFFD, 0xBEA6, 0xFFFD, -/* 4CB8 */ 0xEFB5, 0xF1EA, 0xF3FA, 0xF3FB, 0xF3FC, 0xF5BE, 0xFFFD, 0xF5BA, -/* 4CC0 */ 0xC568, 0xF5BD, 0xF5BC, 0xC4D4, 0xF5BB, 0xC4D6, 0xFFFD, 0xC4D5, -/* 4CC8 */ 0xF6D4, 0xF6D3, 0xC569, 0xC56A, 0xFFFD, 0xFFFD, 0xC5C6, 0xF7CD, -/* 4CD0 */ 0xC5C5, 0xFFFD, 0xF8A3, 0xF8A4, 0xF8A2, 0xF8A1, 0xC654, 0xFFFD, -/* 4CD8 */ 0xF8EB, 0xF8EC, 0xF8ED, 0xC653, 0xF967, 0xF96A, 0xF969, 0xF968, -/* 4CE0 */ 0xFFFD, 0xFFFD, 0xF9D3, 0xC073, 0xFFFD, 0xFFFD, 0xC365, 0xF5BF, -/* 4CE8 */ 0xF6D5, 0xFFFD, 0xC5C7, 0xF7CE, 0xFFFD, 0xFFFD, 0xF9D5, 0xFFFD, -/* 4CF0 */ 0xFFFD, 0xFFFD, 0xC074, 0xFFFD, 0xFFFD, 0xFFFD, 0xEFB6, 0xFFFD, -/* 4CF8 */ 0xF7CF, 0xFFFD, 0xF9A1, 0xC94A, 0xDDFC, 0xA14A, 0xA157, 0xFFFD, -/* 4D00 */ 0xA159, 0xA15B, 0xA15F, 0xA160, 0xA163, 0xA164, 0xA167, 0xA168, -/* 4D08 */ 0xA16B, 0xA16C, 0xA16F, 0xA170, 0xA173, 0xA174, 0xA177, 0xA178, -/* 4D10 */ 0xA17B, 0xA17C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1C6, 0xA1C7, -/* 4D18 */ 0xA1CA, 0xA1CB, 0xA1C8, 0xA1C9, 0xA15C, 0xA14D, 0xA14E, 0xA14F, -/* 4D20 */ 0xFFFD, 0xA151, 0xA152, 0xA153, 0xA154, 0xFFFD, 0xA17D, 0xA17E, -/* 4D28 */ 0xA1A1, 0xA1A2, 0xA1A3, 0xA1A4, 0xA1CC, 0xA1CD, 0xA1CE, 0xA1DE, -/* 4D30 */ 0xA1DF, 0xA1E0, 0xA1E1, 0xA1E2, 0xFFFD, 0xA242, 0xA24C, 0xA24D, -/* 4D38 */ 0xA24E, 0xA149, 0xFFFD, 0xA1AD, 0xA243, 0xA248, 0xA1AE, 0xFFFD, -/* 4D40 */ 0xA15D, 0xA15E, 0xA1AF, 0xA1CF, 0xA141, 0xA1D0, 0xA144, 0xA1FE, -/* 4D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4D50 */ 0xFFFD, 0xFFFD, 0xA147, 0xA146, 0xA1D5, 0xA1D7, 0xA1D6, 0xA148, -/* 4D58 */ 0xA249, 0xA240, 0xFFFD, 0xFFFD, 0xA1C4, 0xA340, 0xA341, 0xA342, -/* 4D60 */ 0xA343, 0xA161, 0xA155, 0xA162, 0xA1E3, 0xA246, 0xA247, 0xFFFD, -/* 4D68 */ 0xA1C3, 0xFFFD, 0xA244, -/* End of table Total Length = 0x4E8E * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/gb12345.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/gb12345.uf deleted file mode 100644 index 4f220ac8f26..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/gb12345.uf +++ /dev/null @@ -1,6275 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = 2621 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = 2632 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = 2641 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = 2652 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0410 - srcEnd = 0415 - destBegin = 2721 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0416 - srcEnd = 042F - destBegin = 2728 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0430 - srcEnd = 0435 - destBegin = 2751 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0436 - srcEnd = 044F - destBegin = 2758 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2160 - srcEnd = 216B - destBegin = 2271 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2460 - srcEnd = 2469 - destBegin = 2259 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2474 - srcEnd = 2487 - destBegin = 2245 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2488 - srcEnd = 249B - destBegin = 2231 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 2500 - srcEnd = 254B - destBegin = 2924 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 3008 - srcEnd = 300F - destBegin = 2134 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = 2421 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 30A1 - srcEnd = 30F6 - destBegin = 2521 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 3105 - srcEnd = 3129 - destBegin = 2845 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 3220 - srcEnd = 3229 - destBegin = 2265 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = FF05 - srcEnd = FF5D - destBegin = 2325 -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 00A4 - srcEnd = 00B1 - mappingOffset = 0000 - Mapping = - 2168 FFFD FFFD 216C 2127 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2163 2140 -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 00D7 - srcEnd = 0101 - mappingOffset = 000E - Mapping = - 2141 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2824 2822 FFFD FFFD FFFD FFFD FFFD - FFFD 2828 2826 283A FFFD 282C 282A FFFD - FFFD FFFD FFFD 2830 282E FFFD FFFD FFFD - 2142 FFFD 2834 2832 FFFD 2839 FFFD FFFD - FFFD FFFD 2821 -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 0113 - srcEnd = 011B - mappingOffset = 0039 - Mapping = - 2825 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2827 -End of Item 0015 - -Begin of Item 0016 - Format 2 - srcBegin = 012B - destBegin = 2829 -End of Item 0016 - -Begin of Item 0017 - Format 2 - srcBegin = 014D - destBegin = 282D -End of Item 0017 - -Begin of Item 0018 - Format 2 - srcBegin = 016B - destBegin = 2831 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 01CE - srcEnd = 01DC - mappingOffset = 0042 - Mapping = - 2823 FFFD 282B FFFD 282F FFFD 2833 FFFD - 2835 FFFD 2836 FFFD 2837 FFFD 2838 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 02C7 - srcEnd = 02C9 - mappingOffset = 0051 - Mapping = - 2126 FFFD 2125 -End of Item 001A - -Begin of Item 001B - Format 2 - srcBegin = 0401 - destBegin = 2727 -End of Item 001B - -Begin of Item 001C - Format 2 - srcBegin = 0451 - destBegin = 2757 -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 2015 - srcEnd = 203B - mappingOffset = 0054 - Mapping = - 212A FFFD FFFD 212E 212F FFFD FFFD 2130 - 2131 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 212D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 216B FFFD 2164 2165 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2179 -End of Item 001D - -Begin of Item 001E - Format 2 - srcBegin = 2103 - destBegin = 2166 -End of Item 001E - -Begin of Item 001F - Format 2 - srcBegin = 2116 - destBegin = 216D -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 2190 - srcEnd = 2193 - mappingOffset = 007B - Mapping = - 217B 217C 217A 217D -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 2208 - srcEnd = 224C - mappingOffset = 007F - Mapping = - 214A FFFD FFFD FFFD FFFD FFFD FFFD 2147 - FFFD 2146 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 214C FFFD FFFD 2158 215E FFFD - 214F FFFD FFFD FFFD FFFD 214E FFFD 2144 - 2145 2149 2148 2152 FFFD FFFD 2153 FFFD - FFFD FFFD FFFD FFFD 2160 215F 2143 214B - FFFD FFFD FFFD FFFD FFFD 2157 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2156 FFFD FFFD FFFD 2155 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 2260 - srcEnd = 226F - mappingOffset = 00C4 - Mapping = - 2159 2154 FFFD FFFD 215C 215D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 215A 215B -End of Item 0022 - -Begin of Item 0023 - Format 2 - srcBegin = 2299 - destBegin = 2151 -End of Item 0023 - -Begin of Item 0024 - Format 2 - srcBegin = 22A5 - destBegin = 214D -End of Item 0024 - -Begin of Item 0025 - Format 2 - srcBegin = 2312 - destBegin = 2150 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 25A0 - srcEnd = 25A1 - mappingOffset = 00D4 - Mapping = - 2176 2175 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 25B2 - srcEnd = 25B3 - mappingOffset = 00D6 - Mapping = - 2178 2177 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 25C6 - srcEnd = 25CF - mappingOffset = 00D8 - Mapping = - 2174 2173 FFFD FFFD FFFD 2170 FFFD FFFD - 2172 2171 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 2605 - srcEnd = 2606 - mappingOffset = 00E2 - Mapping = - 216F 216E -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 00E4 - Mapping = - 2162 FFFD 2161 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 3000 - srcEnd = 3017 - mappingOffset = 00E7 - Mapping = - 2121 2122 2123 2128 FFFD 2129 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 213E 213F FFFD 217E 2132 2133 213C 213D -End of Item 002B - -Begin of Item 002C - Format 2 - srcBegin = 30FB - destBegin = 2124 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 4E00 - srcEnd = 4F22 - mappingOffset = 00FF - Mapping = - 523B 3621 FFFD 465F FFFD FFFD FFFD 7871 - 5549 487D 494F 4F42 5822 323B FFFD FFFD - 5824 7829 FFFD FFFD 4752 5827 4A40 FFFD - 4770 317B FFFD FFFD FFFD FFFD 5829 FFFD - FFFD FFFD 362A FFFD FFFD FFFD FFFD FFFD - 582D FFFD FFFD 513E 635C 5650 FFFD FFFD - 7833 FFFD 342E FFFD FFFD FFFD 583C FFFD - 4D68 3524 FFFD 5677 FFFD FFFD FFFD 582F - FFFD FFFD FFFD 444B FFFD 3E43 FFFD 5831 - 7761 FFFD FFFD 562E FFFD 5527 3A75 3726 - FFFD FFFD 4639 4552 FFFD FFFD 3954 FFFD - 334B 5252 FFFD FFFD 583F 3E45 4672 5232 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5840 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4869 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 472C FFFD - FFFD FFFD 4252 FFFD FFFD FFFD 414B FFFD - 5368 FFFD FFFD 4A42 367E 5821 535A FFFD - FFFD 787D 3B25 5841 4E65 3E2E FFFD FFFD - 5828 FFFD FFFD 5029 FFFD FFFD 5147 583D - 596F 4D76 3F3A FFFD 3D3B 3A25 5260 FFFD - 3A60 FFFD FFFD 4F6D 3E29 4D24 4141 FFFD - FFFD FFFD FFFD 5971 FFFD FFFD FFFD FFFD - FFFD FFFD 484B 5869 FFFD FFFD FFFD FFFD - 4A32 484A 586C 586A 5846 FFFD 785F 3370 - FFFD 586B 3D71 3D69 FFFD 4854 FFFD FFFD - FFFD FFFD FFFD FFFD 5750 4A4B 4B7B 554C - 3836 4F49 FFFD FFFD FFFD 595A 5870 472A - FFFD 586E FFFD 347A 416E 5254 FFFD FFFD - 586D FFFD FFFD 586F FFFD FFFD FFFD FFFD - 5176 FFFD 5659 5872 FFFD 5875 3C7E 7842 - FFFD FFFD FFFD 484E FFFD 375D FFFD 3742 - FFFD 4673 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5878 5241 FFFD FFFD 4E69 3C3F 377C - 3725 505D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3B6F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5873 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 4F2F - srcEnd = 502E - mappingOffset = 0222 - Mapping = - 322E 3940 FFFD 5923 FFFD 3069 FFFD 4166 - FFFD 496C FFFD 4B45 FFFD 4B46 5924 FFFD - FFFD FFFD FFFD FFFD 3568 FFFD FFFD 352B - 5879 FFFD FFFD FFFD FFFD FFFD 4E3B 354D - 5721 5774 5353 FFFD FFFD FFFD 3A4E FFFD - 5922 595C 6245 587D 3770 5777 587E 587A - 5921 4463 FFFD FFFD FFFD 5874 FFFD FFFD - 587B FFFD 4565 FFFD FFFD 4050 FFFD FFFD - 5170 305B FFFD FFFD 3C51 5926 FFFD 5925 - FFFD FFFD FFFD FFFD 592C 592E FFFD 592B - 4A39 FFFD FFFD FFFD 5929 5636 FFFD 4034 - FFFD 335E 5928 FFFD 407D FFFD 4A4C FFFD - 592A FFFD 5927 FFFD FFFD 5930 FFFD 4258 - 3631 FFFD FFFD FFFD 3929 FFFD 5240 FFFD - FFFD FFFD FFFD FFFD 4242 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4E6A - 3A6E FFFD FFFD FFFD FFFD FFFD 4756 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3163 FFFD FFFD 7872 3459 366D 5934 FFFD - FFFD FFFD FFFD 3F21 FFFD FFFD FFFD 595E - 474E 407E 5938 FFFD FFFD FFFD FFFD FFFD - 4B57 377D FFFD 5935 FFFD 5937 3123 5361 - 5939 4F40 5045 FFFD 5936 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 505E - 3829 FFFD 3E63 FFFD 593D FFFD FFFD FFFD - FFFD 593A FFFD 3033 FFFD FFFD FFFD 5942 - FFFD 5876 FFFD FFFD FFFD FFFD FFFD 4129 - FFFD FFFD 3256 FFFD 3876 5944 3136 FFFD - 593F FFFD 4347 3539 FFFD 3E73 FFFD FFFD - FFFD 4C48 3A72 5250 FFFD 5943 FFFD FFFD - 3D68 FFFD 332B FFFD FFFD FFFD 5945 3E6B - FFFD 5946 593B 445F 4257 593E 5941 5940 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 503C - srcEnd = 51E1 - mappingOffset = 0322 - Mapping = - 5635 FFFD FFFD FFFD FFFD FFFD FFFD 5948 - FFFD FFFD FFFD 3C59 594A 4E30 FFFD FFFD - 593C FFFD 594B 462B FFFD FFFD FFFD FFFD - FFFD 5949 FFFD FFFD FFFD FFFD 5776 FFFD - 4D23 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3D21 FFFD FFFD FFFD FFFD FFFD FFFD - 594C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3260 556C 453C 4D35 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3F7E FFFD FFFD FFFD - FFFD 3835 FFFD FFFD 407C FFFD FFFD FFFD - FFFD 3078 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5877 FFFD 4921 3138 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7841 3476 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 345F 5336 FFFD FFFD FFFD FFFD 3041 342B - 5871 552E FFFD 494B FFFD FFFD 5951 4935 - FFFD FFFD 4763 FFFD FFFD FFFD 594D FFFD - FFFD 3D76 FFFD FFFD FFFD 595D FFFD FFFD - FFFD FFFD FFFD 4F71 FFFD 4748 FFFD FFFD - FFFD 464D 5952 FFFD FFFD FFFD 4145 FFFD - FFFD FFFD 4E31 FFFD FFFD FFFD FFFD FFFD - FFFD 3D44 5956 492E 5947 FFFD FFFD FFFD - 5955 5954 5957 FFFD FFFD FFFD FFFD 4B5B - FFFD 3D29 FFFD FFFD FFFD 3C5B FFFD 4627 - FFFD FFFD FFFD FFFD 5247 FFFD 592F FFFD - 525A FFFD 5953 5958 3F6B 3C73 FFFD 5959 - FFFD FFFD FFFD FFFD 594F FFFD 4865 FFFD - 5931 592D FFFD FFFD 7845 FFFD FFFD FFFD - FFFD FFFD FFFD 3325 FFFD 405C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5345 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3422 FFFD - FFFD FFFD FFFD 5933 FFFD FFFD 5950 594E - 5932 FFFD FFFD FFFD 5823 544A FFFD 542A - 5056 3364 5557 FFFD 4F48 3962 FFFD 3F4B - FFFD 4362 FFFD FFFD FFFD 3652 3679 FFFD - 4D43 596E 5970 FFFD FFFD FFFD 782C FFFD - 3635 FFFD FFFD FFFD FFFD FFFD 3E24 FFFD - FFFD 486B FFFD FFFD 482B 413D FFFD 304B - 392B 4179 5962 FFFD FFFD 3932 FFFD FFFD - FFFD 3178 4664 3E5F 3564 5748 FFFD FFFD - 3C66 FFFD FFFD FFFD 3C3D FFFD 5867 FFFD - FFFD 445A FFFD FFFD FFFD 483D FFFD FFFD - 3261 5459 FFFD FFFD FFFD FFFD 4330 FFFD - FFFD 4361 5A22 485F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 395A FFFD 5A23 FFFD - 5429 5A24 FFFD FFFD FFFD FFFD FFFD 597B - 362C FFFD FFFD FFFD 3179 597C 7828 3E76 - FFFD 3F76 5231 4064 FFFD FFFD FFFD FFFD - 597E 597D FFFD FFFD FFFD FFFD FFFD FFFD - 4660 FFFD 7929 5A21 3E3B 4139 FFFD 3572 - 4168 3633 FFFD 3C75 FFFD 3455 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 415D - FFFD 447D FFFD FFFD 7840 3732 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 51ED - srcEnd = 52AD - mappingOffset = 04C8 - Mapping = - 785D FFFD FFFD 3B4B 3F2D FFFD 354A FFFD - 5B49 5057 FFFD 4D39 303C 3376 FFFD 5B4A - 3A2F FFFD FFFD 3536 3573 5856 4850 FFFD - FFFD 3756 4750 5857 FFFD 3F2F FFFD FFFD - FFFD 5858 FFFD FFFD 504C 783B FFFD FFFD - FFFD 6B3E 4150 FFFD FFFD FFFD FFFD FFFD - 3375 FFFD FFFD 493E FFFD FFFD FFFD 4550 - FFFD FFFD FFFD 4559 407B FFFD 3170 FFFD - FFFD 394E FFFD 353D FFFD FFFD 585A FFFD - FFFD 5646 4B22 482F 4932 344C 3F4C FFFD - FFFD FFFD FFFD FFFD 3667 FFFD 4C6A 5859 - FFFD FFFD 5472 FFFD FFFD 4F77 7848 585D - 4730 FFFD FFFD FFFD FFFD FFFD FFFD 4C5E - FFFD 464A FFFD FFFD FFFD FFFD 3855 5860 - FFFD 585E FFFD FFFD 585F FFFD FFFD FFFD - 307E FFFD FFFD FFFD 4A23 3C74 FFFD FFFD - FFFD 3950 3831 FFFD FFFD 386E FFFD 585C - 3434 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5862 FFFD 3D4B FFFD 5864 5863 3B2E FFFD - FFFD FFFD 3E67 457C 4175 3974 FFFD 585B - 3D23 FFFD FFFD 5865 3C41 FFFD 5866 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4126 FFFD - FFFD FFFD 3926 3C53 FFFD FFFD 4153 FFFD - FFFD FFFD FFFD FFFD 567A 452C 3D59 5B3E - 5B3F -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 52BE - srcEnd = 52E4 - mappingOffset = 0589 - Mapping = - 5B40 FFFD FFFD 3E22 FFFD 322A FFFD FFFD - FFFD 5342 FFFD 4363 FFFD FFFD FFFD FFFD - FFFD FFFD 5B42 FFFD 4055 FFFD FFFD 362F - 5B43 FFFD 3F31 4E71 FFFD 512B FFFD 4A24 - 404D 443C FFFD FFFD 4A46 FFFD 475A -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 52F0 - srcEnd = 5384 - mappingOffset = 05B0 - Mapping = - 5B44 5B3D FFFD FFFD FFFD 4078 FFFD FFFD - 4830 5968 4957 FFFD FFFD FFFD 3934 4E70 - 5448 FFFD FFFD FFFD FFFD 307C 3452 FFFD - 5059 FFFD FFFD FFFD FFFD 5969 FFFD 5E4B - 596B FFFD FFFD FFFD FFFD 5830 3B2F 3131 - FFFD 3357 584E FFFD FFFD 5451 FFFD FFFD - 3D33 3F6F FFFD 4F3B FFFD FFFD FFFD FFFD - FFFD FFFD 374B FFFD FFFD 5850 FFFD 3B63 - FFFD 5851 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4625 FFFD FFFD FFFD FFFD 5852 4464 - 4778 4A2E FFFD 4727 FFFD 5826 FFFD 497D - 4E67 3B5C 306B FFFD FFFD FFFD FFFD FFFD - FFFD 3130 5764 573F 502D FFFD FFFD 444F - FFFD FFFD 3229 FFFD 3237 FFFD 3165 5F32 - 553C 3F28 FFFD 5855 FFFD FFFD 5854 4E54 - FFFD 5A60 FFFD FFFD FFFD FFFD 5834 432E - 5321 4E23 FFFD 3C34 4834 4251 FFFD 3E6D - 5036 FFFD 5A61 FFFD FFFD FFFD FFFD 4764 - FFFD FFFD 7827 FFFD 3672 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 5398 - srcEnd = 5454 - mappingOffset = 0645 - Mapping = - 4065 5847 3A71 FFFD FFFD 5848 FFFD 542D - 325E FFFD 4F61 FFFD FFFD 584A 4F43 FFFD - 3378 3E47 FFFD FFFD FFFD 5161 584B FFFD - FFFD FFFD 4077 FFFD 5849 FFFD 5B4C FFFD - FFFD FFFD FFFD 4825 FFFD FFFD FFFD FFFD - FFFD 487E FFFD 324E FFFD FFFD FFFD FFFD - 5356 3266 3C30 5351 FFFD 3734 FFFD FFFD - FFFD FFFD FFFD FFFD 4A65 FFFD 4821 4A5C - FFFD 5070 FFFD 4551 FFFD FFFD FFFD 5B45 - FFFD FFFD 3454 3F5A 3945 3E64 416D FFFD - 5F36 5F35 7923 3D50 5559 3048 3623 3F49 - 786B 5F33 4A37 5352 FFFD 584F 7878 FFFD - 4B3E FFFD FFFD 5F37 3570 FFFD FFFD FFFD - FFFD 5375 FFFD 3354 3877 FFFD 5F3A FFFD - 3A4F 3C2A 3575 FFFD 4D2C 437B 6161 4074 - 4D42 4F72 5F38 FFFD FFFD 4240 5F39 FFFD - FFFD FFFD FFFD 3E7D FFFD 415F 4D4C 5277 - 374D 5F41 FFFD 5F44 FFFD FFFD 3771 3049 - FFFD 3754 FFFD 3A2C FFFD 3F54 4B31 FFFD - FFFD 5628 5F45 FFFD 4E62 3333 FFFD FFFD - 4E7C 3435 FFFD 4E47 3A70 FFFD 4E61 FFFD - 513D FFFD FFFD 5F40 FFFD FFFD 3474 FFFD - 334A FFFD 3866 5F3B FFFD FFFD FFFD FFFD - 4445 FFFD FFFD FFFD 5F3E -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 5462 - srcEnd = 5514 - mappingOffset = 0702 - Mapping = - 4458 FFFD 5F4A FFFD 5F4F FFFD 565C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5F49 - 5F5A 4E36 FFFD 3A47 5F4E 5F48 455E FFFD - FFFD 496B 3A74 437C FFFD FFFD 3E57 FFFD - 5F46 FFFD 5F4D FFFD 4558 FFFD FFFD FFFD - FFFD 5526 3A4D FFFD 3E4C 533D 3840 FFFD - 5664 FFFD 5F47 393E 3F27 FFFD FFFD FFFD - 5F4B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F5B 5F65 FFFD 5F57 5F56 5749 5F63 - 5F64 656B 5227 5F52 FFFD 3F29 FFFD 545B - FFFD 3F48 5F54 FFFD FFFD FFFD 4F4C FFFD - FFFD 5F5D 5F43 514A FFFD 5F5E 3027 4637 - 5F53 FFFD 3A65 FFFD 365F 4D5B 397E 5455 - FFFD FFFD 5F5F FFFD 3025 5F67 5F51 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5F61 FFFD FFFD FFFD 5F68 FFFD FFFD 5431 - FFFD FFFD FFFD 3867 4536 5F6A 495A 4128 - 4444 FFFD FFFD 3F5E 4F78 FFFD FFFD FFFD - 555C 5F6E FFFD FFFD FFFD FFFD FFFD FFFD - 3238 FFFD 3A5F 5F6C FFFD 5B41 FFFD 5164 - FFFD FFFD 5F42 FFFD 4B74 343D FFFD 3026 - FFFD FFFD FFFD FFFD FFFD 5F71 4C46 5F72 - FFFD FFFD 5F6D -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 5523 - srcEnd = 5699 - mappingOffset = 07B5 - Mapping = - 5F70 FFFD FFFD FFFD 5F73 FFFD FFFD 5F74 - FFFD 3B23 FFFD 4A5B 4E28 6027 332A FFFD - 6026 FFFD FFFD FFFD 6021 FFFD FFFD FFFD - FFFD 5F7E FFFD 4D59 5F7C FFFD 5F7A FFFD - 3F50 5744 FFFD 494C FFFD FFFD 5F78 3021 - FFFD FFFD FFFD FFFD 4E4A 5F7D FFFD FFFD - 4674 FFFD 5F7B 6022 FFFD FFFD FFFD FFFD - FFFD 6028 FFFD 5146 FFFD FFFD 3748 FFFD - FFFD 4621 4936 4032 FFFD FFFD FFFD 453E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6023 6024 6025 FFFD FFFD FFFD - 6034 4C64 FFFD 6031 FFFD 3F26 602F 4E39 - 602B 4946 FFFD FFFD 402E 602E 3A6D 3A30 - 6029 FFFD FFFD FFFD 5F76 FFFD 6033 FFFD - FFFD 6038 FFFD FFFD FFFD 342D 6039 3B3D - FFFD 4F32 3A48 FFFD 6030 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 507A FFFD FFFD 4925 - FFFD 4747 FFFD 3525 FFFD FFFD 602C 5334 - 547B FFFD 5F77 FFFD FFFD FFFD 602D FFFD - 5377 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6044 5061 473A 5844 FFFD 603C FFFD - FFFD 6049 604A 4270 FFFD FFFD 603E 602A - 4924 6041 FFFD 6032 FFFD FFFD FFFD 4E58 - FFFD 4A48 6043 FFFD 6035 FFFD 4E4B FFFD - 4B43 604D 6046 6042 FFFD 604B 5F6F 603A - FFFD 6040 FFFD FFFD 6045 FFFD FFFD 6047 - FFFD FFFD 604C 5F59 603B FFFD FFFD FFFD - FFFD FFFD 4B54 6055 FFFD 6056 6052 FFFD - FFFD FFFD FFFD 4C3E FFFD 6050 3C4E FFFD - FFFD 6051 6036 3842 5845 FFFD FFFD FFFD - FFFD 453B FFFD 5F75 3322 506A FFFD FFFD - 426F 5F69 FFFD 604F 603D FFFD FFFD FFFD - 6054 FFFD FFFD FFFD 6057 FFFD 3B29 FFFD - FFFD 605C 6058 5F6B 5025 5F34 FFFD 3330 - FFFD 576C 5F58 4B3B FFFD 5F3C 605A FFFD - 4E7B FFFD FFFD FFFD 3A59 FFFD 7830 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6061 605D 522D FFFD FFFD FFFD FFFD - FFFD 6062 FFFD FFFD 605B 6059 605F FFFD - FFFD FFFD 5F50 FFFD FFFD 5F55 FFFD 605E - FFFD 6064 5F66 5F5C FFFD 4677 582C 546B - 6066 4A49 FFFD FFFD 6048 FFFD 6065 5F60 - FFFD 4567 FFFD 3841 FFFD 3656 782B FFFD - 6067 6068 FFFD FFFD FFFD 5F4C FFFD FFFD - FFFD FFFD 6069 6063 4F45 FFFD FFFD FFFD - FFFD 5F62 FFFD 3A3F 4C67 FFFD FFFD FFFD - 606A FFFD 6060 FFFD FFFD FFFD 4476 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 56A6 - srcEnd = 5751 - mappingOffset = 092C - Mapping = - 5F3F FFFD 417C FFFD FFFD FFFD FFFD FFFD - 7875 606B FFFD FFFD FFFD 6037 514F FFFD - 6053 4842 FFFD FFFD FFFD FFFD 3D40 FFFD - FFFD FFFD 5F79 603F 4F79 FFFD FFFD 5966 - FFFD FFFD 5F3D 7853 4452 FFFD 786A FFFD - FFFD FFFD FFFD 5676 FFFD FFFD 606C FFFD - FFFD 606D FFFD FFFD 4774 4B44 FFFD 606E - 3B58 5836 5272 606F FFFD FFFD 365A FFFD - FFFD FFFD FFFD FFFD FFFD 6071 FFFD FFFD - FFFD FFFD 4027 3451 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6072 394C FFFD FFFD FFFD - FFFD 6073 FFFD FFFD FFFD 4654 6074 FFFD - FFFD 6070 4826 6076 6075 397A FFFD 4E27 - FFFD FFFD FFFD FFFD 5430 5432 FFFD FFFD - 4D3C FFFD 4D45 FFFD FFFD FFFD 6077 FFFD - FFFD 4D41 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 545A 5B57 5B59 FFFD 5B58 3967 - 5B5C 5B5D 3558 FFFD FFFD 5B5A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5B5F FFFD FFFD - 3B78 FFFD 5637 FFFD 5B60 FFFD FFFD FFFD - FFFD 3E79 FFFD FFFD 373B FFFD 5B50 4C2E - 3F32 FFFD 5778 3F53 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 5761 - srcEnd = 5835 - mappingOffset = 09D8 - Mapping = - 4642 FFFD FFFD 4024 FFFD 4C39 FFFD 5B67 - 5B61 463A 5B63 FFFD 5B68 FFFD 4577 FFFD - FFFD FFFD 5B6A FFFD FFFD 5B69 3F40 FFFD - FFFD FFFD 5B66 5B65 FFFD FFFD FFFD FFFD - FFFD 3439 402C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 504D 5B6D FFFD FFFD FFFD FFFD - FFFD FFFD 5B72 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3662 FFFD FFFD FFFD FFFD 5B73 - 5B52 3938 542B 5B6C FFFD FFFD 5B70 FFFD - FFFD FFFD FFFD FFFD FFFD 3F65 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5B79 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3921 3023 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4271 FFFD FFFD 3347 5B6F FFFD - FFFD 5B78 FFFD 4652 5B74 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5B7E FFFD 5372 323A - 5B6B FFFD FFFD 5B7D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5C24 FFFD 5B7B FFFD - FFFD FFFD FFFD 5B7A FFFD FFFD 5634 5B7C - 4560 3B79 FFFD FFFD 5C23 FFFD FFFD 5C25 - FFFD 4C43 FFFD FFFD 3C61 3651 5D40 FFFD - FFFD 5B51 5C21 FFFD 5C22 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5B71 FFFD FFFD - 5C27 FFFD FFFD FFFD 5B76 5C26 FFFD 5C29 - 3124 FFFD FFFD 354C FFFD FFFD FFFD FFFD - FFFD 3F30 FFFD FFFD FFFD FFFD 5222 515F - 3128 FFFD FFFD 3321 3642 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 5844 - srcEnd = 5902 - mappingOffset = 0AAD - Mapping = - 5C28 FFFD FFFD FFFD FFFD FFFD 3F69 5C63 - 4B7A 6B73 FFFD 5B6E FFFD 4B5C 5B75 FFFD - 4B7E FFFD FFFD 4D3F 4C41 FFFD FFFD FFFD - FFFD FFFD 487B FFFD FFFD FFFD 4E6B FFFD - 5B77 5C2A FFFD FFFD FFFD FFFD FFFD 4C6E - 5C2B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 333E FFFD FFFD FFFD 4735 FFFD FFFD - FFFD FFFD 5B53 FFFD 5C2F 5C2C FFFD 3E33 - FFFD 4A7B FFFD FFFD FFFD 5C2D 3566 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 494A 4439 - FFFD FFFD FFFD FFFD FFFD FFFD 5C2E FFFD - 5739 FFFD 5476 5066 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 442B 3655 FFFD FFFD - FFFD FFFD 3669 FFFD FFFD FFFD FFFD 3758 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 473D - 5B54 FFFD 3F51 FFFD FFFD 315A FFFD FFFD - FFFD 5B55 FFFD 4C33 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5B56 FFFD 5139 - FFFD 3A3E FFFD FFFD 405D 5B5B 5B64 FFFD - FFFD FFFD 3B35 4222 5B62 FFFD 5B5E FFFD - 4840 FFFD FFFD FFFD FFFD 3053 FFFD 4A3F - 4849 FFFD FFFD 5733 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 523C 3A78 FFFD - FFFD 4A59 FFFD FFFD FFFD FFFD 623A -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 590F - srcEnd = 59EC - mappingOffset = 0B6C - Mapping = - 4F44 FFFD FFFD FFFD FFFD 5967 4F26 4D62 - FFFD FFFD 596D 3660 FFFD 5239 FFFD FFFD - 393B FFFD FFFD 434E FFFD 6239 6237 FFFD - 3473 FFFD 4C6C 4C2B 3772 FFFD 5832 516B - 3A3B FFFD 4A27 FFFD FFFD FFFD FFFD FFFD - 5244 7849 FFFD FFFD FFFD 5E45 FFFD 3C50 - FFFD FFFD FFFD FFFD FFFD 5159 FFFD FFFD - 4666 444E 376E FFFD FFFD FFFD FFFD 3F7C - 5760 5B3C 4675 FFFD FFFD 313C 5E48 FFFD - 4C57 5E4A FFFD 5E49 FFFD FFFD FFFD FFFD - FFFD 356C FFFD 495D FFFD FFFD 3042 FFFD - FFFD FFFD 5E46 3661 FFFD 3D31 FFFD 375C - FFFD FFFD FFFD FFFD 452E 452B FFFD 444C - FFFD 3C69 4B7D FFFD FFFD FFFD 3A43 FFFD - FFFD FFFD 6579 4867 657A 4D7D FFFD FFFD - FFFD FFFD FFFD 4851 FFFD FFFD 657B FFFD - FFFD FFFD FFFD 364A 3C4B FFFD FFFD 517D - 6621 FFFD 436E FFFD FFFD FFFD 5731 6624 - FFFD FFFD FFFD FFFD 657E 6625 4D57 FFFD - FFFD 3741 FFFD FFFD FFFD FFFD FFFD 445D - 6628 FFFD FFFD 6627 FFFD FFFD FFFD FFFD - FFFD FFFD 4343 FFFD 465E FFFD FFFD 662A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4437 - FFFD FFFD FFFD 6622 4A3C FFFD FFFD FFFD - FFFD 3D63 3943 6626 5055 4E2F FFFD FFFD - 6629 6630 FFFD 5226 FFFD 3D2A 662D FFFD - FFFD FFFD FFFD FFFD 662F FFFD 4051 FFFD - FFFD 524C FFFD FFFD FFFD 3C27 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 59F9 - srcEnd = 5A7F - mappingOffset = 0C4A - Mapping = - 6631 FFFD 5276 FFFD FFFD FFFD 574B FFFD - 4D7E FFFD 4D5E FFFD FFFD FFFD FFFD FFFD - 6633 FFFD FFFD 6632 FFFD FFFD FFFD FFFD - 6636 FFFD 6638 FFFD FFFD FFFD FFFD 446F - FFFD FFFD FFFD 4448 FFFD FFFD 3E6A 496F - FFFD FFFD 6637 FFFD 3670 FFFD FFFD FFFD - 4364 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5369 FFFD FFFD FFFD FFFD 4822 FFFD FFFD - FFFD FFFD FFFD 663D FFFD FFFD FFFD 6639 - 4226 FFFD FFFD FFFD FFFD 4645 FFFD FFFD - 4D71 663B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 663C FFFD FFFD FFFD - FFFD 3B69 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 663E FFFD FFFD FFFD 383E 663A FFFD - FFFD 4037 FFFD FFFD 662B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6643 FFFD - FFFD 6644 FFFD FFFD FFFD FFFD 5076 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 5A92 - srcEnd = 5A9B - mappingOffset = 0CD1 - Mapping = - 433D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4344 6642 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 5AA7 - srcEnd = 5B40 - mappingOffset = 0CDB - Mapping = - 6634 FFFD FFFD 6641 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6647 4F31 FFFD 6B74 FFFD - FFFD 664A FFFD FFFD FFFD FFFD 4268 6645 - FFFD FFFD 3C5E 4929 FFFD FFFD FFFD FFFD - FFFD FFFD 3C35 FFFD FFFD 4F53 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 664E - 657D 6650 FFFD FFFD FFFD 6651 FFFD FFFD - FFFD 664B 3555 FFFD 664C FFFD FFFD 664F - FFFD FFFD 445B FFFD 6646 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 657C FFFD - FFFD FFFD FFFD FFFD 6635 FFFD FFFD FFFD - FFFD 6623 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 662C 6652 FFFD 663F 3D3F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6654 - 6653 FFFD 664D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6648 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6649 FFFD FFFD FFFD FFFD - FFFD 5324 FFFD 6655 FFFD 5978 FFFD FFFD - 6656 4974 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6657 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 5B4C - srcEnd = 5C7A - mappingOffset = 0D75 - Mapping = - 662E FFFD FFFD FFFD 5753 665D FFFD 665E - 3F57 5450 FFFD 5756 3466 FFFD 665A 5843 - 574E 5022 FFFD 434F FFFD FFFD 665F 3C3E - 3942 665B FFFD FFFD FFFD 3A22 FFFD 4B6F - 582B FFFD FFFD FFFD 4A6B 656E FFFD 665C - FFFD 3775 FFFD FFFD 5127 FFFD 4866 FFFD - FFFD 4475 FFFD 424F 6532 FFFD FFFD 4B7C - 6533 552C FFFD 536E 4A58 3032 FFFD 4B4E - 4D6A FFFD FFFD 3A6A FFFD FFFD FFFD 6535 - FFFD 6534 FFFD 575A 3959 5666 3628 4D70 - 524B FFFD FFFD FFFD FFFD FFFD 3F4D 507B - 4A52 6536 3B42 FFFD FFFD FFFD FFFD 392C - FFFD FFFD FFFD FFFD 5457 FFFD FFFD 3A26 - 5167 4F7C 3C52 FFFD 6537 485D FFFD FFFD - FFFD FFFD FFFD 4B5E FFFD FFFD 3C45 FFFD - 3C44 527A 435C 3F5C FFFD FFFD FFFD FFFD - 383B FFFD FFFD FFFD 4342 FFFD 3A2E 5422 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 442F 326C FFFD 3951 475E FFFD - 653B 4148 4A35 447E 552F 4973 FFFD 5034 - 3F6D FFFD 653C FFFD 653E FFFD FFFD FFFD - FFFD 3368 3126 FFFD 3467 FFFD 4B42 FFFD - FFFD FFFD FFFD FFFD FFFD 3762 FFFD FFFD - 4964 FFFD FFFD 3D2B 5728 4E3E 5770 5130 - FFFD 3654 353C 5021 FFFD 4959 FFFD FFFD - FFFD 6658 3C62 FFFD FFFD FFFD 4950 FFFD - 6659 FFFD FFFD FFFD FFFD FFFD 5E4C FFFD - 5348 5E4D FFFD FFFD FFFD FFFD FFFD FFFD - 5E4E FFFD FFFD FFFD FFFD 3E4D FFFD FFFD - FFFD FFFD FFFD 5E4F 4A2C 527C 335F 656A - 4461 FFFD 4E32 4472 3E56 4628 FFFD FFFD - FFFD 3E53 FFFD FFFD 477C 4C6B 3D6C 4E5D - FFFD FFFD 4A3A 4641 656C 503C FFFD FFFD - FFFD 5539 FFFD FFFD FFFD 656D FFFD FFFD - FFFD FFFD FFFD FFFD 4D40 FFFD 4245 656F - 3263 4244 FFFD FFFD 6570 FFFD FFFD FFFD - 4A74 FFFD 6578 4D4D FFFD 493D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5259 6128 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 5C88 - srcEnd = 5CD9 - mappingOffset = 0EA4 - Mapping = - 612C FFFD FFFD FFFD 6127 6129 FFFD FFFD - 612A 612F FFFD FFFD 326D FFFD FFFD FFFD - FFFD 612E FFFD FFFD 6131 FFFD FFFD FFFD - FFFD 3854 6133 6138 FFFD FFFD FFFD FFFD - FFFD 5152 FFFD 6136 6135 FFFD FFFD FFFD - FFFD 6137 FFFD 5440 FFFD 6132 FFFD 613A - 3036 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6139 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 613E FFFD FFFD FFFD FFFD - FFFD FFFD 613C FFFD FFFD FFFD FFFD FFFD - FFFD 5645 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 5CE8 - srcEnd = 5D5B - mappingOffset = 0EF6 - Mapping = - 366B FFFD 5378 FFFD FFFD 474D FFFD FFFD - 3765 FFFD FFFD FFFD 612D FFFD 353A FFFD - FFFD FFFD FFFD 3E7E FFFD 4F3F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6147 3367 - FFFD FFFD FFFD FFFD FFFD 6141 4669 FFFD - FFFD FFFD FFFD FFFD 345E FFFD 5142 385A - FFFD FFFD FFFD 6148 FFFD FFFD 6146 FFFD - FFFD FFFD 613F FFFD 6145 FFFD 6143 6142 - FFFD 3140 FFFD FFFD 6134 FFFD 6144 FFFD - FFFD FFFD FFFD FFFD 614B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 614C 614A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6F7A - FFFD FFFD 6153 6152 4736 FFFD FFFD FFFD - 6130 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 614E -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 5D69 - srcEnd = 5D74 - mappingOffset = 0F6A - Mapping = - 6154 FFFD 6151 614D FFFD FFFD 614F FFFD - FFFD FFFD FFFD 6155 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 5D81 - srcEnd = 5D87 - mappingOffset = 0F76 - Mapping = - 6150 6156 FFFD 5538 FFFD FFFD 612B -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 5D97 - srcEnd = 5DA7 - mappingOffset = 0F7D - Mapping = - 6140 FFFD 6157 FFFD FFFD FFFD 6158 FFFD - FFFD 613D FFFD FFFD FFFD FFFD FFFD FFFD - 613B -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 5DB7 - srcEnd = 5DBC - mappingOffset = 0F8E - Mapping = - 615A 6149 FFFD 416B FFFD 536C -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 5DCB - srcEnd = 6035 - mappingOffset = 0F94 - Mapping = - 3F79 FFFD 4E21 FFFD FFFD FFFD FFFD 424D - FFFD 615B FFFD FFFD FFFD FFFD FFFD FFFD - 675D FFFD 3428 565D FFFD FFFD 5132 3332 - FFFD FFFD 3924 5773 4749 3E5E FFFD FFFD - 4E57 FFFD FFFD 326E FFFD 5B4F 3C3A 5251 - 4B48 304D FFFD FFFD 4F6F FFFD FFFD FFFD - FFFD FFFD 5963 3D6D FFFD FFFD FFFD 4A50 - 323C FFFD FFFD 372B FFFD FFFD FFFD FFFD - FFFD 4F23 FFFD FFFD FFFD FFFD 607B FFFD - FFFD 607A 4541 4C7B FFFD 7850 6079 5663 - 322F FFFD 355B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4B27 FFFD FFFD FFFD FFFD FFFD - 4A26 FFFD 4F2F FFFD FFFD FFFD FFFD FFFD - 554A FFFD FFFD 3478 6121 3323 FFFD FFFD - FFFD FFFD 4331 FFFD FFFD 5621 FFFD 435D - 6078 6122 3779 FFFD FFFD FFFD FFFD FFFD - FFFD 3B4F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6123 443B FFFD 607E 607D FFFD FFFD - 6124 FFFD FFFD 6125 5644 FFFD 6126 3431 - 3152 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 306F 607C FFFD FFFD FFFD FFFD FFFD 7835 - 463D 446A FFFD 3222 FFFD 5052 3849 675B - 3B43 5357 5344 3C38 7838 624F FFFD FFFD - FFFD FFFD FFFD FFFD 3153 FFFD FFFD 3432 - 6251 FFFD FFFD FFFD 5072 FFFD FFFD FFFD - FFFD FFFD 3557 6252 356A FFFD FFFD 387D - FFFD 382E FFFD FFFD FFFD 6254 FFFD FFFD - FFFD FFFD 6253 3648 5779 FFFD FFFD FFFD - 3F62 FFFD 4D25 FFFD FFFD FFFD FFFD FFFD - 6258 FFFD 6256 4A7C 3F35 5339 6255 FFFD - FFFD FFFD FFFD 6257 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 412E 4048 - FFFD FFFD FFFD FFFD FFFD FFFD 625B 625A - 402A FFFD FFFD 414E FFFD FFFD FFFD FFFD - 625C FFFD FFFD FFFD 436D 3327 6250 374F - 3963 FFFD FFFD FFFD FFFD 625D FFFD 625E - FFFD 422E FFFD FFFD FFFD FFFD FFFD FFFD - 4C7C 5B48 FFFD 5153 4D22 FFFD FFFD 3D28 - FFFD FFFD FFFD 5E43 5825 FFFD 5B4D 526C - FFFD 452A FFFD FFFD FFFD 5E44 FFFD 3157 - 5F2E FFFD FFFD FFFD 4A3D FFFD 5F31 FFFD - 392D FFFD 527D FFFD 3825 3A6B FFFD FFFD - 335A FFFD FFFD FFFD 355C FFFD FFFD FFFD - FFFD FFFD FFFD 4F52 3B21 FFFD 6573 FFFD - FFFD FFFD 6574 FFFD FFFD FFFD 4875 FFFD - 6572 FFFD 5545 FFFD FFFD FFFD FFFD 473F - FFFD 6576 FFFD FFFD FFFD 6C30 FFFD FFFD - FFFD FFFD FFFD 7824 FFFD 352F FFFD FFFD - FFFD 4356 FFFD 4D64 FFFD 6566 FFFD FFFD - FFFD FFFD FFFD 6568 6567 6569 783D FFFD - FFFD FFFD 524D FFFD FFFD FFFD 616A 504E - FFFD 4D2E FFFD 5165 FFFD FFFD 324A 316B - FFFD 3172 456D FFFD FFFD 5543 5330 FFFD - 615C FFFD FFFD FFFD 615D FFFD 525B FFFD - FFFD 314B FFFD FFFD FFFD 4D79 5577 615E - FFFD FFFD 347D FFFD 615F 3A5C 6160 3B32 - 4249 3A73 FFFD FFFD FFFD 506C 3E36 4D3D - FFFD FFFD FFFD FFFD 3543 4547 6163 FFFD - FFFD 6164 FFFD 3453 FFFD 6162 5379 FFFD - FFFD FFFD FFFD FFFD FFFD 6165 3834 512D - FFFD FFFD 6166 4E22 FFFD FFFD FFFD FFFD - FFFD FFFD 6167 FFFD 3542 FFFD 3339 FFFD - FFFD 6168 3B55 FFFD FFFD FFFD FFFD FFFD - 5044 6260 3158 FFFD FFFD FFFD 6261 FFFD - FFFD 3C49 484C FFFD FFFD 6C7E 6C7D 5F2F - FFFD FFFD FFFD 6262 563E 4D7C 4326 FFFD - FFFD FFFD 6343 FFFD FFFD 5652 6267 FFFD - FFFD 6268 FFFD FFFD FFFD FFFD FFFD 626C - 3F6C FFFD 626D 6265 FFFD FFFD 3340 FFFD - FFFD FFFD 446E FFFD FFFD 626E FFFD FFFD - 5043 FFFD 3A76 FFFD 375E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6277 - FFFD FFFD 6274 5475 6273 FFFD FFFD 452D - FFFD 557A 4542 3240 FFFD FFFD 626F FFFD - 6272 FFFD 4B3C FFFD FFFD 3521 6279 FFFD - FFFD FFFD 3C31 6271 5054 5439 6275 3956 - 6276 FFFD FFFD FFFD 4753 FFFD FFFD FFFD - FFFD FFFD 6270 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 6041 - srcEnd = 6070 - mappingOffset = 11FF - Mapping = - 6D25 627E 4A51 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3B50 FFFD FFFD 3F56 - FFFD 3A63 FFFD FFFD 4B21 FFFD FFFD FFFD - 6D26 6D23 FFFD FFFD 6D22 FFFD FFFD FFFD - FFFD 3B56 6D27 5074 FFFD FFFD 6D24 3A5E - 3677 6321 3632 4C71 3927 FFFD 4F22 4721 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 607F - srcEnd = 629B - mappingOffset = 122F - Mapping = - 5341 FFFD FFFD FFFD 6327 4744 FFFD FFFD - FFFD FFFD 4F24 FFFD FFFD 6329 3A37 FFFD - FFFD FFFD FFFD 6328 FFFD 3B5A FFFD 6323 - FFFD FFFD FFFD 6324 632A FFFD 6326 FFFD - 4E72 5346 FFFD FFFD 3B3C FFFD FFFD 5443 - FFFD 447A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 632D 312F FFFD 6332 626A 4346 - FFFD 3C42 FFFD FFFD 632C 353F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4769 6330 - FFFD FFFD FFFD FFFD 4D6F FFFD FFFD FFFD - FFFD FFFD 3B73 FFFD FFFD FFFD 4C68 FFFD - FFFD 632F FFFD 6331 FFFD 4F27 632E FFFD - 4E29 3B5D 3671 FFFD FFFD FFFD FFFD 356B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3668 4455 6322 4F6B 6337 FFFD 3B4C - FFFD FFFD 4847 504A 627C FFFD FFFD FFFD - FFFD 6338 336E FFFD FFFD FFFD FFFD 6D29 - FFFD 537A 5364 FFFD FFFD FFFD 6D2A 6339 - 5262 FFFD FFFD FFFD FFFD FFFD 6335 FFFD - FFFD FFFD FFFD 535E 302E 632B FFFD FFFD - 3850 6333 FFFD FFFD 6336 FFFD FFFD FFFD - 4022 FFFD FFFD FFFD 633A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 626B FFFD FFFD - 627D FFFD FFFD FFFD FFFD FFFD FFFD 6269 - 787C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3448 FFFD 633B 4C2C 3B45 FFFD 4977 - FFFD FFFD FFFD FFFD FFFD FFFD 443D FFFD - FFFD 3252 FFFD 3251 FFFD FFFD 6D2B FFFD - 627A FFFD FFFD 427D 395F 6D28 FFFD FFFD - 3B5B 3F2E FFFD 6266 4B4B FFFD FFFD 4247 - FFFD 4E3F FFFD FFFD 6325 FFFD 633C 476C - 3F36 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5347 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3139 316F FFFD FFFD 5477 - FFFD 412F 463E 6334 FFFD 633E FFFD FFFD - FFFD FFFD FFFD 352C FFFD FFFD 6D2D FFFD - FFFD FFFD FFFD FFFD FFFD 375F FFFD FFFD - 633F 3A29 6D2C FFFD 4375 633D FFFD 6264 - FFFD FFFD FFFD 4F5C FFFD FFFD FFFD 5264 - 6340 FFFD FFFD FFFD FFFD FFFD FFFD 3A36 - FFFD FFFD FFFD 362E FFFD FFFD FFFD FFFD - 3F52 5038 5326 3043 6D2E 6278 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6341 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7856 - 6D21 FFFD FFFD FFFD 6D2F FFFD FFFD 4533 - FFFD 627B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 334D FFFD FFFD 6342 4041 - 3B33 507C FFFD 6263 FFFD 3E65 FFFD 4965 - 5C32 4135 FFFD FFFD FFFD FFFD FFFD FFFD - 6D30 386A FFFD 4E6C FFFD 5067 4A79 4856 - FFFD 3349 4E52 3D64 FFFD 6A27 635E 3B72 - FFFD FFFD FFFD 465D 6A29 FFFD FFFD FFFD - 6A2A FFFD 6A2C 6A2B FFFD 6A2E 6A2D FFFD - 6A28 FFFD 6A2F 3D58 FFFD FFFD FFFD 423E - FFFD 553D FFFD 4F37 3441 3477 FFFD FFFD - 3B27 FFFD FFFD FFFD FFFD FFFD 6C66 6C65 - 373F 4B79 3162 FFFD 6C67 FFFD FFFD FFFD - 4948 6C68 6C69 FFFD 4A56 5E50 3245 547A - FFFD FFFD 785E 3047 3472 4853 FFFD FFFD - FFFD 4D50 FFFD FFFD 3F38 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3F5B FFFD FFFD 4724 - FFFD FFFD FFFD FFFD FFFD FFFD 4524 3067 - 3336 FFFD FFFD FFFD 3062 FFFD FFFD 3776 - FFFD FFFD 457A FFFD FFFD 3673 FFFD 5552 - 3350 3C3C FFFD FFFD FFFD 332D FFFD FFFD - FFFD FFFD 3E71 3051 FFFD FFFD FFFD FFFD - FFFD FFFD 5256 4A63 5725 FFFD 4D36 3636 - 3F39 555B FFFD FFFD 4557 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 62A8 - srcEnd = 62DC - mappingOffset = 144C - Mapping = - 456A FFFD FFFD 457B 4C27 FFFD FFFD FFFD - FFFD 3127 FFFD FFFD FFFD 3556 FFFD FFFD - FFFD 4428 FFFD 5E53 513A 3369 FFFD 4372 - FFFD FFFD 3777 FFFD 5674 FFFD 3270 4434 - 4469 402D 5E54 FFFD 3068 4544 4160 FFFD - 3955 FFFD 3E5C 4D58 304E FFFD 4D4F 5E56 - 3E50 573E 5E55 5550 305D -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 62EC - srcEnd = 6316 - mappingOffset = 1481 - Mapping = - 4028 4A43 5E57 557C FFFD 3930 FFFD 482D - 4B29 FFFD 5E59 3F3D FFFD FFFD FFFD FFFD - 4634 5727 4A30 4443 FFFD 3356 3952 FFFD - FFFD FFFD FFFD 5638 6A7C 3034 FFFD FFFD - FFFD FFFD 3F66 FFFD FFFD 4C74 FFFD FFFD - FFFD FFFD 4D5A -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 6328 - srcEnd = 6355 - mappingOffset = 14AC - Mapping = - 3024 FFFD 4532 346C FFFD FFFD FFFD 5571 - FFFD FFFD 6A7D FFFD FFFD FFFD FFFD FFFD - FFFD 5E5A 4D26 FFFD FFFD 4D6C 502E FFFD - FFFD FFFD 4E66 5E5C FFFD 4D31 4026 FFFD - FFFD 573D FFFD 5E5B 3046 3A34 4953 4473 - 3E68 FFFD FFFD FFFD FFFD 3236 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 6367 - srcEnd = 63B0 - mappingOffset = 14DA - Mapping = - 4575 4961 5E66 FFFD 5E51 FFFD 5E63 7846 - FFFD FFFD 5E5F 7847 FFFD FFFD FFFD 3437 - 3D5D FFFD FFFD 5E60 446D FFFD FFFD FFFD - FFFD 4F46 FFFD 3560 4928 4255 FFFD FFFD - 365E 4A5A 3574 5E65 FFFD 5546 FFFD 5E61 - 4C4D 467E FFFD 4545 FFFD FFFD FFFD 5234 - FFFD 3E72 5575 FFFD FFFD FFFD FFFD FFFD - FFFD 4253 FFFD 4C3D 3338 FFFD 3D53 FFFD - 3F58 4D46 515A 346B FFFD 5E64 5E5D 5E67 - FFFD 6A7E -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 63BE - srcEnd = 63F8 - mappingOffset = 1524 - Mapping = - 5E72 FFFD 3C70 FFFD FFFD FFFD 5E6D FFFD - 5E71 FFFD FFFD 4860 FFFD FFFD FFFD 5761 - 5E6F 4368 4C61 FFFD 3265 FFFD FFFD FFFD - 523E FFFD FFFD FFFD 516F 3B3B FFFD FFFD - 5E6E FFFD 5E6B 4E55 FFFD 3427 FFFD FFFD - FFFD FFFD FFFD 3F2B 3E3E FFFD FFFD 3D52 - 3B53 FFFD FFFD FFFD 5E69 FFFD 542E FFFD - 5E5E FFFD 5E6A -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 640B - srcEnd = 66C9 - mappingOffset = 155F - Mapping = - 5E75 5E78 4B70 FFFD 322B 3424 FFFD FFFD - 346A 4926 FFFD FFFD 3537 FFFD FFFD FFFD - 5E76 4B51 FFFD 3863 FFFD 5E77 5E7A FFFD - FFFD FFFD FFFD 5E79 FFFD FFFD FFFD 4C42 - FFFD 3061 346E FFFD FFFD FFFD FFFD FFFD - FFFD 653A FFFD 4740 FFFD FFFD FFFD 502F - FFFD FFFD 326B FFFD 6B21 FFFD 5E74 FFFD - FFFD FFFD FFFD FFFD 5221 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5E62 5E70 - FFFD 4B24 FFFD FFFD FFFD 552A FFFD FFFD - FFFD 5E68 FFFD 5E7B 4227 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 345D FFFD 4426 FFFD - FFFD FFFD 5E7D FFFD 563F FFFD FFFD FFFD - 3F59 FFFD FFFD 5E52 FFFD 437E 4421 5F21 - 3274 FFFD FFFD FFFD FFFD FFFD FFFD 414C - FFFD FFFD 3E6F FFFD 4632 404C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3345 4876 - 4453 FFFD 4B3A 5E7E FFFD FFFD 5F24 FFFD - FFFD FFFD FFFD 5732 5E58 FFFD FFFD FFFD - 3527 3337 3226 FFFD FFFD FFFD 4143 FFFD - 3827 474B 3225 3469 FFFD 572B FFFD 464B - 5E6C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4C22 3A33 FFFD 4E4E 3C71 5F26 5335 405E - FFFD 4230 4943 FFFD 5471 FFFD FFFD 3B77 - 3532 FFFD 3259 4766 FFFD 5F27 FFFD 475C - FFFD 3523 FFFD FFFD 5F28 6B22 FFFD 3E5D - FFFD FFFD FFFD FFFD FFFD 3C37 FFFD 5F2A - FFFD 5F29 FFFD 3241 FFFD FFFD FFFD FFFD - FFFD 4462 FFFD FFFD 3177 4521 3869 5640 - FFFD 4029 FFFD FFFD 5F22 FFFD FFFD 305A - 4B53 5F23 FFFD 4845 FFFD 454A FFFD FFFD - FFFD 5E73 FFFD 446C FFFD FFFD 5F2B FFFD - FFFD FFFD FFFD FFFD 4223 FFFD FFFD FFFD - FFFD 4039 FFFD 5E7C FFFD 4841 3273 FFFD - 5F25 FFFD 4963 FFFD FFFD FFFD FFFD 545C - 424E 4C2F 5F2C FFFD FFFD FFFD FFFD 3D41 - 3E70 403F FFFD 5F2D 5627 FFFD FFFD FFFD - FFFD 6A37 6B36 4A55 FFFD 587C 3844 FFFD - 3925 FFFD FFFD 3745 557E FFFD FFFD FFFD - FFFD FFFD 394A FFFD FFFD 5027 744D FFFD - FFFD FFFD FFFD FFFD 4374 FFFD 3E48 FFFD - FFFD FFFD 6B37 303D 305C FFFD 3D4C FFFD - FFFD FFFD 3156 3328 FFFD FFFD FFFD 3852 - 4922 FFFD FFFD 3658 FFFD FFFD FFFD FFFD - 6B38 3E34 FFFD FFFD FFFD FFFD FFFD 4743 - FFFD 557B 3550 FFFD 3773 4A7D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4132 - 3150 FFFD FFFD FFFD 4E44 FFFD FFFD FFFD - FFFD 3173 FFFD FFFD FFFD 6C33 305F FFFD - FFFD FFFD 6C35 FFFD 782F FFFD 414F FFFD - 757A 5031 FFFD FFFD 5565 FFFD 4E53 FFFD - FFFD 3D6F 3362 FFFD 382B FFFD FFFD FFFD - 6D3D 5536 FFFD FFFD 4B39 5042 FFFD FFFD - FFFD FFFD FFFD FFFD 364F FFFD 373D FFFD - FFFD 6C36 4A29 FFFD FFFD FFFD 4554 FFFD - 6C39 6C38 4243 6C37 FFFD FFFD FFFD FFFD - 507D 6C3A FFFD 6C3B 5765 FFFD FFFD 6C3C - FFFD FFFD FFFD 6C3D 466C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3C48 - FFFD FFFD 4855 3529 FFFD 563C 5467 FFFD - FFFD 512E 5071 6A38 6A39 6A3A 3A35 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4D7A - FFFD FFFD FFFD FFFD FFFD 6A40 FFFD 303A - 6A3E FFFD FFFD 4025 FFFD FFFD FFFD 6A3B - FFFD 327D FFFD 4377 3B68 FFFD FFFD FFFD - 5257 4E74 6A3F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6A43 FFFD 5047 5333 FFFD FFFD - FFFD FFFD 343A FFFD 4341 5772 FFFD FFFD - FFFD FFFD 5551 FFFD 4A47 FFFD 6A45 FFFD - FFFD 6A44 6A47 6A46 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6A4B 4A31 - 3B4E FFFD FFFD FFFD FFFD FFFD 3D7A FFFD - FFFD 494E FFFD FFFD 6A4C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6A4F FFFD FFFD 4D6D - FFFD FFFD 5667 FFFD 6A49 FFFD 6A4E FFFD - FFFD 4E6E FFFD 3B5E FFFD 333F FFFD FFFD - FFFD FFFD FFFD 4655 3E30 4E7A FFFD FFFD - FFFD 4767 FFFD 3E27 6A50 FFFD FFFD 5647 - FFFD FFFD FFFD 4140 FFFD FFFD FFFD FFFD - FFFD 6A51 FFFD FFFD 4F3E 544E 6A4D FFFD - FFFD 6A52 FFFD FFFD FFFD FFFD 4A6E FFFD - FFFD FFFD FFFD 452F 3035 FFFD FFFD FFFD - FFFD FFFD 6A54 FFFD FFFD FFFD FFFD 3329 - FFFD FFFD FFFD FFFD FFFD 745F FFFD FFFD - 545D FFFD FFFD 443A FFFD FFFD FFFD FFFD - FFFD 3129 FFFD FFFD FFFD FFFD 655F FFFD - FFFD FFFD FFFD 6A55 FFFD FFFD FFFD FFFD - FFFD 6A4A FFFD 784F 6A3C FFFD 4F7E -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 66D6 - srcEnd = 679D - mappingOffset = 181E - Mapping = - 6A53 FFFD FFFD 4A6F FFFD 6A56 6A57 4658 - FFFD FFFD 3F75 FFFD FFFD FFFD FFFD FFFD - 6A58 FFFD FFFD 6A59 FFFD FFFD 4939 FFFD - FFFD FFFD 543B FFFD 477A 5237 387C FFFD - FFFD 6A42 4A69 325C FFFD FFFD 427C FFFD - 5478 4C66 576E FFFD FFFD 3B61 FFFD FFFD - FFFD FFFD 5442 5350 6B43 4573 FFFD 377E - FFFD FFFD 6B54 FFFD FFFD FFFD 4B37 6B5E - FFFD 404A FFFD FFFD FFFD 4D7B FFFD 332F - FFFD 465A FFFD FFFD FFFD FFFD FFFD FFFD - 6B7C 6B4A 443E FFFD 4E34 4429 313E 547D - FFFD 7868 FFFD 566C FFFD FFFD 7860 3664 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5060 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 384B FFFD 683E 493C FFFD FFFD 683B FFFD - 406E 5053 3244 3465 FFFD 683C FFFD FFFD - 5548 FFFD FFFD FFFD FFFD FFFD 3645 FFFD - 683D 4A78 385C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6842 FFFD FFFD 3A3C - FFFD 312D 3D5C 362B 6A3D 6843 FFFD 6846 - FFFD 684B FFFD FFFD FFFD FFFD 684C FFFD - 7869 3065 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6841 FFFD 4D77 FFFD 684A FFFD FFFD - FFFD FFFD 4E76 FFFD FFFD FFFD FFFD 556D - FFFD 4156 6844 FFFD 4336 FFFD 397B 5626 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 67AF - srcEnd = 6805 - mappingOffset = 18E6 - Mapping = - 3F5D 6852 FFFD FFFD 6857 FFFD 6855 3C5C - 3C4F 685B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 685E FFFD 685A 317A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3058 4433 384C 4662 483E 4861 FFFD FFFD - FFFD 684F 6854 6856 FFFD FFFD 6858 5775 - FFFD FFFD FFFD 685C FFFD FFFD 3269 FFFD - FFFD FFFD 6851 FFFD FFFD 3C6D FFFD FFFD - 3F42 684D 5679 FFFD 4178 3271 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4A41 6859 FFFD FFFD FFFD FFFD 5524 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 6813 - srcEnd = 6855 - mappingOffset = 193D - Mapping = - 4B28 FFFD FFFD FFFD 4075 FFFD FFFD FFFD - FFFD FFFD 6869 FFFD FFFD FFFD 5023 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6872 566A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6860 - 6861 FFFD FFFD FFFD FFFD 3A4B 3879 FFFD - FFFD 3871 5454 FFFD FFFD 686E 686C 3970 - 4C52 6866 4E26 3F72 FFFD 3038 6871 6870 - FFFD 5740 FFFD 6864 FFFD 4D29 4923 FFFD - 3B38 3D5B 686A -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 686B - srcEnd = 68B5 - mappingOffset = 1980 - Mapping = - 6878 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6875 FFFD 4D30 6876 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 413A FFFD - 6868 FFFD 4337 3070 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6874 FFFD FFFD FFFD - 6877 FFFD FFFD FFFD 3923 6845 FFFD FFFD - FFFD FFFD 4C75 FFFD 6849 FFFD FFFD 4952 - FFFD FFFD FFFD FFFD 4E60 4066 FFFD FFFD - FFFD FFFD 4B73 FFFD 4C5D 5035 FFFD FFFD - 4A61 FFFD 6873 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 68C4 - srcEnd = 6912 - mappingOffset = 19CB - Mapping = - 467A FFFD FFFD FFFD FFFD 435E FFFD 4665 - FFFD 3977 FFFD FFFD FFFD FFFD 3074 FFFD - FFFD 5758 6847 5466 3C2C FFFD 456F FFFD - FFFD FFFD FFFD 3630 4C44 FFFD FFFD 6926 - FFFD FFFD FFFD 553B FFFD FFFD FFFD FFFD - FFFD FFFD 492D FFFD 6922 4062 465C FFFD - FFFD 3F43 FFFD FFFD FFFD 687E 3957 FFFD - 687B FFFD FFFD FFFD FFFD 6924 FFFD FFFD - FFFD 524E FFFD FFFD FFFD FFFD FFFD 6923 - FFFD 5632 5735 6862 6927 FFFD 3D37 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 6930 - srcEnd = 69D4 - mappingOffset = 1A1A - Mapping = - 522C FFFD FFFD FFFD 6932 FFFD FFFD FFFD - FFFD 6929 FFFD FFFD FFFD 342A FFFD 343B - FFFD FFFD 692B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 516E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3763 5028 FFFD FFFD 6925 - FFFD FFFD 337E FFFD FFFD 692C 4063 FFFD - 692A FFFD FFFD 6939 FFFD FFFD 6938 FFFD - 6865 FFFD FFFD 692E FFFD 5235 687A FFFD - FFFD 6928 FFFD FFFD FFFD 3C2B FFFD 3F2C - 6931 693A FFFD FFFD FFFD FFFD FFFD FFFD - 692F FFFD 3845 FFFD FFFD FFFD 535C FFFD - FFFD FFFD FFFD FFFD FFFD 6947 FFFD FFFD - FFFD FFFD FFFD FFFD 4046 6945 FFFD FFFD - 6930 FFFD FFFD 693B 3071 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 693C - 5525 FFFD 683F 693E FFFD 693F 4859 FFFD - FFFD 6941 FFFD FFFD 4171 FFFD FFFD 4836 - FFFD FFFD FFFD 693D FFFD FFFD FFFD 6867 - FFFD 6942 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6943 3939 6933 4739 6936 FFFD - 3B31 FFFD FFFD FFFD 6940 -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 69E7 - srcEnd = 6A65 - mappingOffset = 1ABF - Mapping = - 687D FFFD FFFD FFFD FFFD FFFD 694A FFFD - FFFD FFFD FFFD 694E 3D30 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 325B FFFD - 6948 FFFD 572E 4056 FFFD FFFD 6848 FFFD - FFFD FFFD FFFD 372E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4225 FFFD FFFD FFFD - 694B 694C 316A FFFD FFFD FFFD FFFD 4A60 - 5541 FFFD 4423 FFFD 5179 FFFD FFFD FFFD - FFFD 6958 FFFD 3A61 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6954 FFFD - FFFD 4653 4A77 686B FFFD FFFD 6957 6950 - FFFD FFFD FFFD FFFD FFFD 694F FFFD FFFD - 4741 6863 FFFD FFFD 4745 FFFD FFFD FFFD - FFFD 6952 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6959 3348 FFFD 6953 FFFD FFFD FFFD - 3B7A FFFD 4F70 4D56 FFFD FFFD 694D -End of Item 0053 - -Begin of Item 0054 - Format 2 - srcBegin = 6A71 - destBegin = 3377 -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 6A80 - srcEnd = 6AC3 - mappingOffset = 1B3E - Mapping = - 4C34 FFFD FFFD FFFD 4F2D FFFD FFFD FFFD - FFFD 685F FFFD FFFD FFFD FFFD 6955 FFFD - 695C 695B FFFD FFFD 3535 FFFD FFFD 695E - FFFD FFFD FFFD FFFD 686D FFFD FFFD FFFD - 6951 FFFD 3C6C 6949 FFFD FFFD FFFD FFFD - FFFD 695D FFFD 695F 434A FFFD FFFD 786D - FFFD FFFD FFFD 6944 FFFD FFFD FFFD FFFD - 447B FFFD FFFD 3C77 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3971 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 6AD3 - srcEnd = 6B23 - mappingOffset = 1B82 - Mapping = - 6956 FFFD FFFD FFFD FFFD FFFD FFFD 6935 - 684E FFFD 687C 695A 685D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6946 6853 FFFD 6840 - FFFD 6934 FFFD FFFD FFFD FFFD FFFD FFFD - 6850 FFFD FFFD FFFD FFFD 6937 FFFD FFFD - 5323 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4038 FFFD FFFD FFFD FFFD FFFD 4828 - FFFD FFFD FFFD FFFD 6921 FFFD FFFD 686F - FFFD FFFD FFFD 692D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6879 FFFD 4737 344E FFFD - 5040 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 6B32 - srcEnd = 6BDB - mappingOffset = 1BD3 - Mapping = - 537B FFFD FFFD FFFD FFFD 6C24 FFFD 6C25 - 465B FFFD FFFD 4755 3F6E FFFD FFFD FFFD - FFFD 6C26 FFFD FFFD 6C27 502A FFFD 4738 - FFFD FFFD 3868 FFFD FFFD FFFD 4537 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6C28 - FFFD FFFD FFFD FFFD FFFD 6C23 FFFD 3B36 - 5639 557D 344B 323D 4E64 4667 FFFD FFFD - 4D61 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4B6A FFFD FFFD FFFD FFFD 407A 3969 3475 - FFFD 4B40 FFFD FFFD FFFD FFFD FFFD 6962 - 6963 516A 6965 FFFD 3479 FFFD FFFD 5133 - 4A62 FFFD FFFD 6968 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5633 FFFD 3250 FFFD - FFFD 696A FFFD FFFD 6966 FFFD FFFD FFFD - FFFD FFFD 6964 FFFD FFFD FFFD FFFD FFFD - 696C 6969 FFFD FFFD 6967 696B FFFD FFFD - 3C5F 6C2F FFFD 364E FFFD 5273 FFFD FFFD - 4931 3F47 FFFD FFFD FFFD 356E FFFD 3B59 - FFFD FFFD FFFD 5263 4539 FFFD FFFD FFFD - FFFD 4E63 FFFD 4438 FFFD 433F FFFD FFFD - 363E 5839 3148 FFFD 3151 457E FFFD FFFD - FFFD 432B -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 6BEA - srcEnd = 6CF5 - mappingOffset = 1C7D - Mapping = - 6B24 3A41 FFFD FFFD FFFD 4C3A FFFD FFFD - FFFD 6B25 FFFD FFFD FFFD FFFD FFFD 6B28 - FFFD FFFD FFFD 6B26 FFFD 6B27 FFFD FFFD - FFFD FFFD FFFD 6B29 6B2B FFFD 5531 FFFD - FFFD FFFD 6B2A 6B2C FFFD 4A4F 5835 4371 - FFFD 4325 FFFD 6B2D 444A FFFD 6B2E 6B2F - 6B30 3755 FFFD FFFD FFFD 377A FFFD 6B31 - FFFD 4678 6B33 FFFD 3A24 5175 3031 FFFD - 6B34 4762 6B32 FFFD 352A 4248 4768 FFFD - 6B35 FFFD 4B2E 635F FFFD FFFD 5340 FFFD - FFFD FFFD FFFD 595B FFFD FFFD 4D21 562D - 4773 FFFD FFFD FFFD 5960 FFFD FFFD FFFD - 6362 FFFD FFFD FFFD FFFD FFFD 4F2B FFFD - FFFD FFFD 6360 4947 FFFD 3A39 FFFD FFFD - FFFD 5134 6361 486A 392F 3D2D 3358 4E5B - FFFD FFFD FFFD FFFD FFFD FFFD 6368 6369 - 4D74 FFFD FFFD FFFD FFFD FFFD 4C2D FFFD - 3C33 FFFD 636A FFFD 636B FFFD FFFD 505A - FFFD FFFD FFFD 467B 375A FFFD FFFD 475F - 524A 4E56 FFFD 6364 636C FFFD 4972 3341 - FFFD FFFD 6367 FFFD FFFD 4663 6365 FFFD - FFFD 6D33 6366 FFFD FFFD FFFD FFFD 4933 - FFFD 4566 FFFD FFFD FFFD FFFD FFFD 433B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 442D FFFD 6370 3E5A FFFD FFFD 637B - 6375 3A53 FFFD FFFD FFFD FFFD 3750 534D - FFFD 564E 5553 3941 5534 5158 FFFD FFFD - FFFD FFFD 5039 4776 FFFD FFFD FFFD 482A - 3234 FFFD 435A FFFD FFFD FFFD 636E FFFD - FFFD 637C 636F 3728 6377 6374 FFFD FFFD - FFFD 373A FFFD FFFD FFFD FFFD 6376 455D - 3228 467C FFFD 4460 FFFD FFFD 5722 FFFD - 4061 6379 FFFD FFFD 637A 637D 4C29 6373 - FFFD 533E FFFD 3143 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 6D04 - srcEnd = 6D41 - mappingOffset = 1D89 - Mapping = - 6427 FFFD FFFD 6426 FFFD FFFD FFFD 5173 - 6423 FFFD 6429 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4F34 FFFD 6428 642E 4265 - FFFD FFFD 3634 FFFD FFFD FFFD FFFD FFFD - FFFD 3D72 FFFD 6422 FFFD FFFD 3A69 642A - FFFD FFFD 642C FFFD FFFD 367D 565E 6432 - FFFD 642D FFFD FFFD FFFD 6421 FFFD 3B6E - FFFD 4722 4549 FFFD FFFD 4177 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 6D59 - srcEnd = 6D95 - mappingOffset = 1DC7 - Mapping = - 5563 3F23 FFFD 643A FFFD 6437 FFFD 643B - FFFD FFFD 643D FFFD FFFD 4656 FFFD FFFD - 3A46 404B FFFD FFFD FFFD 3821 6434 FFFD - FFFD FFFD FFFD 5421 FFFD FFFD 3A23 3D7E - 6424 FFFD FFFD 643C FFFD FFFD FFFD FFFD - FFFD 786F FFFD FFFD 4479 FFFD 637E 4F7B - 4966 FFFD FFFD 533F FFFD 4F51 FFFD FFFD - 6433 FFFD 6438 6439 4C69 -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 6DAA - srcEnd = 6E0C - mappingOffset = 1E04 - Mapping = - 3822 644A FFFD FFFD 644C 5144 FFFD FFFD - 523A FFFD FFFD 3A2D FFFD FFFD 3A54 FFFD - FFFD FFFD FFFD FFFD FFFD 6443 782D FFFD - FFFD FFFD 574D 6440 4F7D 643F FFFD FFFD - FFFD 415C 4C4A FFFD FFFD FFFD FFFD 4A67 - FFFD FFFD FFFD FFFD 4457 FFFD 4C54 6448 - FFFD FFFD FFFD 6447 6441 FFFD 6444 352D - FFFD FFFD 5359 FFFD 6446 FFFD FFFD FFFD - 4259 5279 3463 FFFD 3B34 FFFD FFFD 496E - FFFD 343E FFFD 5428 6435 3B6C FFFD 514D - 4733 4C6D 6D35 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4765 FFFD FFFD FFFD FFFD - FFFD FFFD 644B -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 6E19 - srcEnd = 6E5F - mappingOffset = 1E67 - Mapping = - 3B41 643E FFFD FFFD 5365 FFFD FFFD 477E - 3649 FFFD 547C 3233 6457 4E50 FFFD FFFD - 4E42 FFFD 644D 3262 4E3C FFFD 385B FFFD - FFFD 6456 FFFD 3F4A FFFD FFFD FFFD 534E - FFFD 436C FFFD FFFD FFFD 3B6B FFFD FFFD - FFFD FFFD 4548 6458 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4D44 644F FFFD FFFD - FFFD FFFD 6454 6455 FFFD 3A7E FFFD 4F66 - FFFD FFFD 553F FFFD FFFD 6425 6452 -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 6E6B - srcEnd = 6E6F - mappingOffset = 1EAE - Mapping = - 6450 FFFD FFFD 644E 4C40 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 6E86 - srcEnd = 6EDA - mappingOffset = 1EB3 - Mapping = - 6453 FFFD FFFD 3848 FFFD FFFD FFFD FFFD - FFFD 6467 5434 FFFD FFFD FFFD FFFD FFFD - 573C FFFD 645B FFFD FFFD FFFD 416F 3935 - FFFD 6469 FFFD FFFD 5267 FFFD FFFD 645F - FFFD 6460 FFFD FFFD 4F2A FFFD FFFD FFFD - FFFD 4B5D FFFD 645A 6451 FFFD 6465 FFFD - 485C 6463 FFFD FFFD 4467 6462 FFFD 6461 - FFFD FFFD FFFD 337C 6468 FFFD 3257 4370 - FFFD 3561 FFFD FFFD FFFD 574C 3553 FFFD - 5C7E 6466 FFFD 3B2C FFFD 5752 4C4F 6B78 - FFFD FFFD FFFD FFFD 3976 -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 6EEC - srcEnd = 6F41 - mappingOffset = 1F08 - Mapping = - 3B26 FFFD FFFD 564D FFFD FFFD 4978 FFFD - 354E FFFD FFFD 4231 6430 646F FFFD FFFD - FFFD FFFD FFFD 427A FFFD 5366 462F FFFD - FFFD FFFD 4661 FFFD FFFD 6475 FFFD FFFD - FFFD FFFD FFFD 4229 FFFD FFFD FFFD FFFD - 515D 646E FFFD FFFD FFFD FFFD 453D FFFD - FFFD FFFD FFFD FFFD 442E FFFD 3A3A 4130 - 646D FFFD FFFD FFFD FFFD 6476 6474 427E - 5755 645D FFFD 6470 FFFD 4A7E 5547 5544 - FFFD FFFD 6471 FFFD 3D25 FFFD FFFD FFFD - FFFD FFFD 517A 3D2C FFFD 7223 -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 6F51 - srcEnd = 6FC9 - mappingOffset = 1F5E - Mapping = - 4643 FFFD FFFD 3D60 FFFD FFFD FFFD 454B - 636D FFFD 4731 FFFD FFFD 423A FFFD FFFD - FFFD 646A FFFD 4873 FFFD 414A FFFD FFFD - FFFD FFFD FFFD FFFD 4C36 3331 6431 4023 - FFFD 647B FFFD 6473 FFFD FFFD 6464 647A - FFFD 647D FFFD 647C FFFD FFFD 6436 492C - FFFD FFFD FFFD 334E FFFD 3D3D 4054 333A - 6477 FFFD FFFD 6479 6478 456C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3D27 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6445 - 5468 FFFD FFFD 5473 FFFD FFFD 6522 FFFD - 6D34 FFFD FFFD FFFD FFFD 642B FFFD FFFD - 356D FFFD 3044 FFFD FFFD 6524 FFFD FFFD - 6523 FFFD FFFD FFFD FFFD FFFD FFFD 3C24 - 5747 6525 4528 FFFD FFFD FFFD FFFD FFFD - 6521 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 6FD5 - srcEnd = 7099 - mappingOffset = 1FD7 - Mapping = - 4A2A FFFD FFFD 4522 FFFD FFFD 7855 FFFD - FFFD 6528 3C43 6529 6526 FFFD FFFD 4C4E - FFFD FFFD FFFD FFFD FFFD FFFD 4044 FFFD - FFFD 6527 652A 4E2B 3175 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3D26 FFFD 6378 - FFFD 424B FFFD FFFD FFFD FFFD FFFD FFFD - 645E 6442 FFFD FFFD 503A FFFD 6449 FFFD - FFFD FFFD 642F FFFD 4659 FFFD FFFD FFFD - 3174 FFFD FFFD 6372 FFFD 652B 652D FFFD - 4124 FFFD 646C 646B FFFD FFFD 652C FFFD - FFFD FFFD 6371 647E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7858 FFFD 6472 FFFD FFFD - 652F FFFD FFFD FFFD 652E FFFD FFFD FFFD - FFFD 403D FFFD FFFD FFFD FFFD 6363 645C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3960 - FFFD FFFD FFFD FFFD 4877 FFFD FFFD FFFD - 406C FFFD FFFD 4C32 FFFD FFFD FFFD FFFD - 6530 6531 FFFD FFFD FFFD FFFD 4D65 4250 - FFFD FFFD 6459 FFFD FFFD FFFD 3B70 6C61 - FFFD FFFD FFFD 3B52 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3E44 FFFD FFFD FFFD 5746 - FFFD 5456 FFFD FFFD FFFD FFFD FFFD FFFD - 6A41 FFFD FFFD FFFD FFFD 3436 FFFD FFFD - FFFD 5157 FFFD FFFD FFFD 3334 FFFD 4832 - 3F3B 6C40 FFFD FFFD 564B -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 70AB - srcEnd = 70FD - mappingOffset = 209C - Mapping = - 6C45 3E66 4C3F 455A 3E3C FFFD 6C46 FFFD - 317E FFFD FFFD FFFD 6C44 5528 FFFD FFFD - 6C42 FFFD FFFD FFFD FFFD 6C43 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4152 FFFD 6C48 - FFFD FFFD FFFD FFFD 4E5A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3A66 4053 FFFD - FFFD FFFD FFFD FFFD 514C FFFD FFFD FFFD - FFFD 3F3E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4F29 FFFD FFFD FFFD - FFFD 4C7E FFFD FFFD 4D69 FFFD 456B FFFD - FFFD FFFD 3769 -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 7109 - srcEnd = 7136 - mappingOffset = 20EF - Mapping = - 5149 3A38 FFFD FFFD FFFD FFFD FFFD 6C49 - FFFD FFFD 6C4A FFFD FFFD FFFD FFFD FFFD - 313A 3759 FFFD FFFD FFFD FFFD FFFD FFFD - 4E5E FFFD FFFD FFFD FFFD 3D39 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6C4C 5166 - 6C4D FFFD FFFD FFFD FFFD 483B -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 7145 - srcEnd = 72B4 - mappingOffset = 211D - Mapping = - 6C51 FFFD FFFD FFFD 4136 6C53 FFFD 3B4D - FFFD 3C65 FFFD FFFD FFFD 6C3F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6C4F - FFFD 4937 FFFD FFFD FFFD 5C64 FFFD 433A - 3B40 6C63 5555 6C50 3733 FFFD FFFD 6C3E - FFFD 5673 FFFD FFFD FFFD 6C52 6C4E FFFD - FFFD FFFD FFFD 6C54 FFFD 6C55 FFFD FFFD - 493F FFFD FFFD FFFD FFFD FFFD FFFD 4F28 - FFFD FFFD FFFD FFFD FFFD 505C FFFD FFFD - FFFD FFFD 512C FFFD FFFD 532B FFFD 485B - FFFD FFFD 6C41 6C56 4E75 FFFD FFFD FFFD - FFFD FFFD 4A6C 6C5A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6C59 FFFD FFFD FFFD 303E - FFFD FFFD FFFD FFFD 4848 FFFD 6C57 FFFD - 6C58 FFFD FFFD FFFD 6C64 FFFD FFFD FFFD - FFFD 3363 FFFD FFFD 6C47 FFFD 483C FFFD - FFFD FFFD FFFD 3546 FFFD FFFD FFFD FFFD - FFFD 4147 FFFD FFFD FFFD 4955 FFFD 6C5C - 5160 FFFD FFFD FFFD 4C4C FFFD FFFD 6C4B - FFFD FFFD 532A 6C5B FFFD FFFD FFFD FFFD - 546F 3253 6C5D FFFD FFFD FFFD FFFD FFFD - 5672 5B46 FFFD FFFD FFFD FFFD FFFD 3B62 - FFFD FFFD FFFD FFFD 6C5E FFFD FFFD 3D7D - FFFD 6C62 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 312C FFFD FFFD FFFD FFFD FFFD FFFD - 4B38 FFFD FFFD 422F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4043 FFFD - 6C5F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6C60 FFFD 5726 FFFD 4540 - 5579 FFFD FFFD 6B3C FFFD 4E2A FFFD FFFD - 3E74 3838 FFFD 3056 3579 522F 5833 FFFD - 4B2C 367B 635D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 462C 3066 FFFD FFFD FFFD 4546 - FFFD FFFD FFFD FFFD FFFD 6B3A FFFD FFFD - FFFD 6B3B FFFD 6B39 5140 FFFD 4523 FFFD - 6A72 FFFD 4432 FFFD 4435 404E FFFD FFFD - FFFD 6A73 4441 FFFD 4E6F FFFD FFFD FFFD - FFFD 6A70 6A74 FFFD FFFD 497C FFFD FFFD - FFFD FFFD FFFD FFFD 4C58 FFFD FFFD FFFD - 4723 6A75 6A76 4F2C 4067 FFFD FFFD 6A77 - FFFD FFFD FFFD FFFD FFFD FFFD 6A78 FFFD - 6A79 FFFD 6A7A FFFD FFFD 6A7B FFFD FFFD - FFFD 5C7D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6A71 FFFD FFFD 363F FFFD FFFD - FFFD FFFD 4E7E FFFD FFFD FFFD FFFD 482E - 616B FFFD 3738 616C FFFD FFFD FFFD 616D -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 72C0 - srcEnd = 73ED - mappingOffset = 228D - Mapping = - 5734 6171 3F71 6170 3552 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6173 6172 FFFD - 3A7C FFFD 6174 FFFD FFFD FFFD FFFD 3937 - FFFD 3E51 FFFD FFFD FFFD FFFD FFFD FFFD - 3A5D 3D46 FFFD FFFD FFFD FFFD FFFD FFFD - 6175 6177 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 617C 6179 FFFD FFFD 617A - 406A 4F41 617E 6221 4047 3137 FFFD FFFD - FFFD 617B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6225 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6223 FFFD FFFD 327E 6222 - FFFD 5578 FFFD 434D 3242 6227 6226 FFFD - FFFD FFFD 6229 FFFD FFFD 622B FFFD FFFD - FFFD 5049 566D 4328 622C FFFD FFFD FFFD - FFFD 622E FFFD FFFD 3A6F FFFD 534C 6960 - 622D 622A FFFD 6178 FFFD FFFD 3B2B 5433 - FFFD 616F FFFD FFFD 537C 4A28 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6230 FFFD FFFD - 622F FFFD 6961 FFFD FFFD FFFD FFFD 6231 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6232 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3640 FFFD 6176 617D 6233 FFFD FFFD 6234 - 447C FFFD 3B71 FFFD FFFD 4154 FFFD 616E - 4A5E FFFD 4C21 4F57 6228 FFFD 6235 FFFD - 6224 FFFD FFFD FFFD 507E FFFD FFFD 424A - FFFD 5371 FFFD 4D75 FFFD FFFD 6760 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3E41 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6764 - FFFD FFFD 6763 FFFD FFFD FFFD FFFD FFFD - FFFD 4D66 FFFD 4335 FFFD FFFD FFFD FFFD - FFFD FFFD 4161 6769 FFFD FFFD FFFD 6768 - FFFD FFFD FFFD 3223 FFFD FFFD FFFD FFFD - 676A FFFD 6766 FFFD FFFD FFFD FFFD FFFD - 676C 676B 493A FFFD FFFD 5564 FFFD 6765 - 3729 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 676E FFFD FFFD FFFD FFFD 6773 FFFD - 5669 FFFD FFFD FFFD FFFD 676D FFFD 6772 - FFFD 6771 FFFD FFFD FFFD 3060 -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 73FE - srcEnd = 740A - mappingOffset = 23BB - Mapping = - 4F56 FFFD FFFD FFFD FFFD 4772 FFFD 4045 - 406D FFFD FFFD 4170 6770 -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 741A - srcEnd = 7490 - mappingOffset = 23C8 - Mapping = - 6822 6821 FFFD FFFD FFFD FFFD FFFD FFFD - 5741 FFFD FFFD 677A 6779 FFFD 677B FFFD - 6777 FFFD 677E FFFD 677D FFFD 677C FFFD - FFFD 4155 4759 457D 4543 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6775 FFFD 6823 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6762 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6826 FFFD 6825 FFFD 6827 - 3A77 6778 6824 FFFD 4870 492A FFFD FFFD - FFFD 4B76 FFFD FFFD FFFD FFFD FFFD 5328 - 426A FFFD FFFD 6829 FFFD FFFD 3965 FFFD - FFFD FFFD FFFD FFFD 517E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 682A FFFD 682D 682E - FFFD 4127 FFFD FFFD FFFD 682F FFFD 6776 - FFFD 6830 FFFD FFFD FFFD FFFD 6834 -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 749C - srcEnd = 74BD - mappingOffset = 243F - Mapping = - 682B FFFD 6831 FFFD FFFD FFFD FFFD 6761 - FFFD FFFD 6828 6835 6832 6833 FFFD FFFD - FFFD FFFD FFFD FFFD 3B37 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6837 FFFD - FFFD 6774 -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = 74CA - srcEnd = 770B - mappingOffset = 2461 - Mapping = - 476D FFFD FFFD FFFD FFFD 6767 FFFD FFFD - FFFD FFFD 682C FFFD FFFD FFFD FFFD FFFD - 6836 FFFD 394F FFFD 702C FFFD 702D FFFD - 4630 306A 483F FFFD 4D5F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4E4D FFFD FFFD FFFD - FFFD FFFD 6A32 FFFD 463F 3449 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6A33 FFFD FFFD - FFFD FFFD 5567 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6A31 5D79 FFFD 6A34 FFFD 6A35 - FFFD 6A36 FFFD FFFD FFFD FFFD 384A 5F30 - 4975 FFFD 4C70 FFFD FFFD 497A FFFD FFFD - FFFD 327A FFFD 497B FFFD FFFD 5343 4B26 - FFFD 3826 702E 3142 FFFD 6538 4C6F 5349 - 3C57 496A FFFD FFFD FFFD 4450 3569 FFFD - 6E2E FFFD FFFD FFFD 675E FFFD 6E2F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6E32 FFFD - FFFD 6E31 3D67 FFFD 6E30 4E37 FFFD FFFD - FFFD FFFD 454F FFFD FFFD FFFD FFFD 4174 - 5B4E 6E33 5073 4436 FFFD FFFD FFFD FFFD - 314F FFFD FFFD 4254 4668 FFFD FFFD FFFD - 372C 3B2D FFFD FFFD FFFD FFFD FFFD FFFD - 6E34 FFFD FFFD FFFD 3531 FFFD 3B7B 6E35 - FFFD FFFD FFFD FFFD FFFD 675C FFFD FFFD - FFFD 6E36 FFFD FFFD 3D2E 336B FFFD FFFD - 357E 7162 FFFD FFFD FFFD 4A68 FFFD 5249 - 705A FFFD 705B FFFD FFFD FFFD FFFD 386D - 3E4E FFFD FFFD 705E FFFD FFFD FFFD FFFD - FFFD 7060 304C 3D6A FFFD FFFD FFFD FFFD - FFFD 525F FFFD FFFD FFFD FFFD 7066 7065 - 4623 7061 7062 3443 FFFD FFFD 7063 556E - FFFD FFFD 4C5B 3E52 3C32 FFFD FFFD FFFD - 7068 7067 7064 3221 FFFD 7921 FFFD FFFD - 482C FFFD FFFD 706A FFFD FFFD FFFD FFFD - FFFD FFFD 564C 3A5B FFFD FFFD 363B 3E37 - FFFD 4D34 FFFD FFFD 4626 FFFD FFFD FFFD - 4121 706B 706E FFFD 706D 7070 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4C35 7072 - FFFD FFFD 3355 FFFD FFFD FFFD FFFD 3154 - FFFD FFFD 7073 FFFD FFFD 7074 7076 3461 - 7069 7071 FFFD FFFD FFFD FFFD FFFD FFFD - 707A 3768 7078 5171 FFFD FFFD 7075 FFFD - FFFD 3B3E FFFD 707D FFFD FFFD FFFD 707E - FFFD 7121 FFFD FFFD 7079 4E41 7124 342F - 7123 FFFD 4176 707B 4A5D 4531 FFFD 3471 - FFFD FFFD FFFD 7126 FFFD FFFD 7127 FFFD - FFFD 712C 554E 7129 FFFD FFFD 4833 FFFD - FFFD 707C 7122 FFFD FFFD FFFD 7125 FFFD - 4146 712A FFFD FFFD 706C 706F FFFD 7077 - FFFD FFFD 3029 712D FFFD FFFD FFFD FFFD - FFFD FFFD 712F FFFD 7131 FFFD 705D FFFD - FFFD FFFD 7130 FFFD FFFD 3171 FFFD FFFD - 5177 FFFD 705C 5622 FFFD 705F FFFD 712E - FFFD FFFD 5122 7128 712B 7133 5338 4C31 - 7132 FFFD FFFD FFFD FFFD FFFD 396F FFFD - FFFD 3547 3722 3057 3059 FFFD FFFD FFFD - 546D FFFD 3544 FFFD 3D54 3B4A 7027 FFFD - FFFD 385E FFFD FFFD 7028 FFFD FFFD FFFD - FFFD 7029 FFFD FFFD 4D6E FFFD FFFD 702A - 3028 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 702B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4624 FFFD FFFD FFFD - FFFD FFFD 7165 FFFD FFFD FFFD 7164 FFFD - 5665 FFFD FFFD FFFD FFFD 4373 FFFD FFFD - 535B FFFD FFFD 5651 4568 FFFD 532F FFFD - 5266 FFFD FFFD 6E41 303B FFFD FFFD FFFD - 3A50 FFFD 3F78 FFFD FFFD 3541 FFFD FFFD - FFFD 4A22 FFFD FFFD 5535 434B FFFD 3E21 - FFFD 3C60 454C 6E42 FFFD 422C FFFD FFFD - FFFD FFFD FFFD FFFD 443F 3622 FFFD 6D6C - 4324 FFFD 5631 FFFD FFFD FFFD 4F60 6D6F - FFFD FFFD 454E FFFD 365C FFFD FFFD 4A21 - FFFD FFFD 6D6D FFFD FFFD 6D70 6D71 433C - FFFD 3F34 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 7719 - srcEnd = 776C - mappingOffset = 26A3 - Mapping = - 6D74 6D72 FFFD FFFD FFFD FFFD 5566 435F - FFFD 6D73 FFFD FFFD FFFD 6D76 FFFD 5523 - 5123 FFFD FFFD FFFD 6D75 FFFD 4350 FFFD - FFFD FFFD FFFD FFFD 6D77 3F74 3E6C 6D78 - FFFD 4C77 FFFD 515B FFFD FFFD FFFD 5745 - FFFD FFFD 6D7C FFFD FFFD FFFD 6D7B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 784A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6D7D 3E26 5576 FFFD 6D79 FFFD FFFD - 4B2F 6E21 363D FFFD 6E22 4440 FFFD 6D7E - FFFD FFFD 3D5E 3247 -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = 7779 - srcEnd = 786F - mappingOffset = 26F7 - Mapping = - 3643 FFFD FFFD FFFD 6E25 583A 6E23 6E26 - FFFD FFFD FFFD 4369 3372 FFFD FFFD FFFD - FFFD FFFD FFFD 6E27 6E24 4F39 FFFD FFFD - 6E28 FFFD FFFD FFFD FFFD FFFD FFFD 6D6E - FFFD FFFD FFFD FFFD FFFD 4277 6E29 6E2A - FFFD 5E2B FFFD FFFD 4633 FFFD 4746 FFFD - FFFD 3549 FFFD 4B32 7851 FFFD FFFD 6E2B - FFFD FFFD 4D2B FFFD 6E2C FFFD FFFD FFFD - FFFD FFFD 5530 6D7A 6E2D FFFD 7644 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7857 FFFD - FFFD FFFD FFFD FFFD 5B47 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3423 FFFD - FFFD 5675 432C 7166 FFFD FFFD FFFD FFFD - FFFD 4A38 5253 FFFD 562A FFFD 6F72 FFFD - 3E58 FFFD FFFD 6F73 364C 302B 3D43 FFFD - FFFD FFFD 4A2F FFFD FFFD FFFD FFFD 6D37 - FFFD FFFD FFFD FFFD 4E79 FFFD FFFD FFFD - FFFD 4930 FFFD FFFD FFFD FFFD FFFD FFFD - 6D39 FFFD FFFD 4676 3F33 FFFD FFFD FFFD - 6D3C 4578 FFFD 5150 FFFD FFFD FFFD 6D3B - FFFD FFFD FFFD FFFD 6D40 FFFD 6D44 FFFD - FFFD FFFD 6D48 FFFD 6D46 6D4E 5568 FFFD - 6D49 FFFD FFFD 6D47 6D3E FFFD FFFD 4569 - FFFD FFFD FFFD 4646 FFFD FFFD 4969 5452 - 6D41 FFFD FFFD 6D45 FFFD FFFD FFFD FFFD - FFFD FFFD 7927 FFFD 3968 FFFD 6D50 FFFD - FFFD FFFD FFFD 6D51 FFFD 6D4A FFFD 6D4F - FFFD 4E78 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4F75 FFFD FFFD FFFD - FFFD FFFD FFFD 6D4C FFFD FFFD FFFD 6D3A - FFFD 6D52 4172 5332 6D4B 7866 5162 -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 787C - srcEnd = 796D - mappingOffset = 27EE - Mapping = - 4570 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6D56 FFFD 356F FFFD FFFD - 4235 FFFD 4B69 FFFD FFFD 312E FFFD 6D54 - FFFD FFFD FFFD 4D6B 3562 FFFD 6D55 FFFD - FFFD FFFD FFFD 357A FFFD 6D58 FFFD 6D59 - FFFD 6D5C FFFD 314C FFFD 4B36 FFFD FFFD - FFFD 6D38 FFFD FFFD 4576 3C6E 6D5A 4C3C - 326A FFFD FFFD FFFD 6D3F 6D5B 4837 FFFD - 426B FFFD 446B FFFD FFFD 3445 FFFD FFFD - FFFD 3075 FFFD FFFD FFFD 6D5F 405A 3468 - FFFD FFFD FFFD FFFD 454D FFFD FFFD FFFD - 6D5D 3F44 FFFD FFFD FFFD 6D5E 5729 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6D57 - FFFD FFFD FFFD 6D53 4425 FFFD FFFD FFFD - 6D60 FFFD FFFD 6D36 FFFD FFFD 6D61 FFFD - 6D63 FFFD FFFD 4157 FFFD FFFD 3B47 FFFD - FFFD 6D4D FFFD FFFD FFFD 3D38 FFFD FFFD - FFFD 6D62 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3421 FFFD FFFD FFFD FFFD 6D64 - FFFD FFFD FFFD FFFD FFFD 302D FFFD FFFD - FFFD FFFD 6D66 FFFD FFFD FFFD FFFD FFFD - 6D65 FFFD 3F73 FFFD FFFD FFFD 6D42 4079 - 372F FFFD FFFD FFFD FFFD 6D43 FFFD FFFD - 6D67 FFFD FFFD FFFD FFFD FFFD 4A3E 6C6A - FFFD FFFD 4967 FFFD 6C6B 466E FFFD FFFD - FFFD FFFD 6C6C FFFD 466D 6C6D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6C70 - FFFD FFFD 5766 6C73 FFFD FFFD 6C71 6C6E - 6C6F 5723 4971 4B6E 6C74 FFFD FFFD FFFD - FFFD 4F69 FFFD 6C76 4631 FFFD FFFD FFFD - FFFD 3C40 -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = 797A - srcEnd = 799A - mappingOffset = 28E0 - Mapping = - 6C77 FFFD FFFD FFFD FFFD FFFD 5977 3D7B - FFFD FFFD 423B FFFD FFFD FFFD FFFD FFFD - 6C79 FFFD FFFD 3B76 6C75 3823 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6C7A -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = 79A6 - srcEnd = 7A20 - mappingOffset = 2901 - Mapping = - 787A 6C7B FFFD FFFD 6C78 FFFD FFFD FFFD - 4071 FFFD 6C72 353B FFFD 6C7C FFFD FFFD - FFFD FFFD FFFD 536D 582E FFFD FFFD 475D - 3A4C FFFD 5063 4B3D FFFD 4D3A FFFD FFFD - 3851 FFFD FFFD 317C FFFD 476F FFFD 7926 - FFFD FFFD FFFD 3F46 436B FFFD FFFD 6F75 - FFFD FFFD 4358 FFFD FFFD FFFD FFFD FFFD - FFFD 5762 FFFD FFFD FFFD 6F77 3353 FFFD - 4758 516D FFFD 5648 FFFD 6F78 FFFD 6F76 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3D55 FFFD FFFD 5246 FFFD FFFD - FFFD FFFD 4F21 FFFD 6F7C 6F7B FFFD FFFD - 6F79 FFFD FFFD FFFD FFFD 334C FFFD 4954 - 4B30 FFFD FFFD FFFD FFFD FFFD 6F7E FFFD - FFFD 305E FFFD FFFD 5649 FFFD FFFD FFFD - 6F7D FFFD 336D -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = 7A2E - srcEnd = 7ACB - mappingOffset = 297C - Mapping = - 5656 FFFD FFFD 3346 FFFD FFFD FFFD FFFD - FFFD 7022 FFFD 7021 FFFD 353E 3C5A 3B7C - FFFD 3865 7836 FFFD FFFD FFFD FFFD FFFD - 4442 FFFD FFFD FFFD FFFD FFFD 7655 3B7D - 5331 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4B6B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7023 3B60 FFFD FFFD FFFD - FFFD FFFD FFFD 4E48 FFFD 783E FFFD FFFD - FFFD FFFD 7026 FFFD FFFD FFFD 5128 FFFD - 3E3F FFFD 7136 7137 3F55 FFFD FFFD FFFD - FFFD 3429 7138 4D3B FFFD FFFD 552D FFFD - 7139 FFFD 713A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5224 564F FFFD FFFD 713B - 3D51 3430 3E3D FFFD FFFD FFFD FFFD FFFD - FFFD 3F5F 713D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 713F 4E51 4D5D FFFD 713E FFFD - 476E FFFD FFFD FFFD FFFD 7141 FFFD FFFD - 7140 FFFD FFFD FFFD 3F7A FFFD FFFD FFFD - FFFD 417E FFFD FFFD FFFD FFFD 345C 474F - FFFD 713C 546E FFFD 4754 4122 -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 7AD9 - srcEnd = 7B38 - mappingOffset = 2A1A - Mapping = - 553E FFFD FFFD FFFD FFFD FFFD 3E39 5542 - FFFD FFFD 3F22 FFFD 4D2F 7135 FFFD FFFD - FFFD 4A7A FFFD FFFD 3D5F FFFD 364B FFFD - FFFD FFFD FFFD FFFD FFFD 3E3A FFFD FFFD - 5671 7343 FFFD FFFD 7344 FFFD 384D FFFD - FFFD FFFD FFFD 7347 FFFD 304A FFFD 7345 - FFFD 7349 4B71 FFFD FFFD FFFD 734B FFFD - 5026 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 734F FFFD 3551 FFFD FFFD 7357 FFFD 7352 - FFFD FFFD FFFD 7354 7353 377B FFFD 313F - FFFD 734E 734A 355A FFFD 7350 FFFD FFFD - 7351 FFFD 7355 FFFD FFFD FFFD FFFD 734D -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 7B45 - srcEnd = 7BCC - mappingOffset = 2A7A - Mapping = - 735A 314A 734C FFFD 3548 FFFD 3D6E 735C - FFFD FFFD 3724 3F70 7928 4D32 FFFD 3470 - FFFD 325F FFFD 7358 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 735E FFFD 7361 FFFD FFFD - FFFD FFFD 7348 FFFD FFFD FFFD FFFD FFFD - FFFD 735F FFFD FFFD 7363 7362 FFFD FFFD - 735B FFFD 3F6A FFFD FFFD FFFD 7360 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 736B FFFD FFFD FFFD FFFD FFFD 3C63 FFFD - 393F FFFD 735D 7364 FFFD FFFD FFFD 322D - 3B7E FFFD 4B63 FFFD FFFD FFFD FFFD 736D - 7369 FFFD FFFD FFFD 395C 736E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7368 - 3C7D FFFD FFFD FFFD 4F64 FFFD FFFD 7370 - FFFD FFFD FFFD 7367 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3D5A 7372 FFFD FFFD 3736 - FFFD 572D 462A FFFD 567E FFFD 7366 7373 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 7BD9 - srcEnd = 7C0F - mappingOffset = 2B02 - Mapping = - 385D 7375 FFFD FFFD 7374 FFFD FFFD FFFD - 345B FFFD FFFD 7346 7376 7377 FFFD FFFD - 4938 7378 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7359 FFFD FFFD FFFD 4571 FFFD - FFFD FFFD FFFD 737B FFFD 737A FFFD 7365 - FFFD FFFD FFFD FFFD FFFD FFFD 3458 FFFD - FFFD FFFD 737E 7379 4228 FFFD 737C -End of Item 0072 - -Begin of Item 0073 - Format 1 - srcBegin = 7C1E - srcEnd = 7C2B - mappingOffset = 2B39 - Mapping = - 736C 7421 FFFD 3C72 FFFD 7371 FFFD FFFD - 7423 3B49 FFFD FFFD 7422 736F -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = 7C38 - srcEnd = 7C4D - mappingOffset = 2B47 - Mapping = - 7424 FFFD FFFD FFFD FFFD 4729 4131 323E - 7426 FFFD FFFD 403A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 336F 3C2E -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 7C5C - srcEnd = 7C7D - mappingOffset = 2B5D - Mapping = - 736A FFFD FFFD 7425 417D FFFD FFFD FFFD - 7862 FFFD FFFD FFFD FFFD 7356 737D FFFD - 4069 FFFD 4261 FFFD FFFD FFFD 787B 4357 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 744C 5751 -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = 7C89 - srcEnd = 7CA5 - mappingOffset = 2B7F - Mapping = - 375B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 744E 4123 FFFD FFFD 4649 FFFD 3456 5533 - FFFD FFFD FFFD FFFD FFFD 7451 4B5A FFFD - FFFD 7452 FFFD 5441 5660 -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = 7CB1 - srcEnd = 7D50 - mappingOffset = 2B9C - Mapping = - 413B 7453 3E2C FFFD FFFD FFFD FFFD FFFD - 3462 FFFD FFFD 7454 7455 3E2B FFFD FFFD - FFFD FFFD FFFD FFFD 745B FFFD 7457 745A - FFFD 3A7D FFFD 7458 7459 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3862 4C47 745C FFFD - 325A FFFD FFFD 4353 7456 3760 5463 3F37 - FFFD FFFD FFFD FFFD FFFD FFFD 4138 745D - FFFD FFFD FFFD FFFD FFFD FFFD 4534 7870 - FFFD 744F FFFD 5961 FFFD 7450 FFFD 7469 - 6679 FFFD 4F35 FFFD FFFD 3E40 FFFD 3C4D - FFFD 667B FFFD 543C 3A6C 667A 667C 667D - 4852 4E49 4E46 FFFD 4449 FFFD FFFD 4526 - FFFD FFFD 6723 343F 6722 FFFD 4934 FFFD - 563D 3C36 3757 6721 FFFD FFFD FFFD 4B58 - 3744 4B77 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 574F FFFD FFFD FFFD 405B 4F38 - 6726 6725 4970 FFFD FFFD FFFD FFFD FFFD - 495C 6724 FFFD 6728 FFFD FFFD 672A 6729 - FFFD 5655 FFFD 5769 FFFD 306D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 672C FFFD 3D61 -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 7D5D - srcEnd = 7DFB - mappingOffset = 2C3C - Mapping = - 672B 3D4A FFFD FFFD 4267 5124 FFFD FFFD - FFFD 3878 FFFD 485E FFFD FFFD FFFD FFFD - FFFD 5075 FFFD FFFD 4D33 4B3F 672D FFFD - FFFD 3E78 FFFD FFFD 3E6E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3073 FFFD 672F FFFD - FFFD 672E FFFD 6730 5065 FFFD FFFD FFFD - FFFD FFFD 4B67 FFFD FFFD FFFD 3E2D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 575B - FFFD 6736 FFFD FFFD FFFD 3371 6739 FFFD - FFFD 746B FFFD FFFD FFFD FFFD 4F5F 6737 - 4E2C 746C FFFD 673A 3859 4D78 3141 573A - FFFD FFFD FFFD 425A 6738 6732 5540 FFFD - 3442 6731 4360 FFFD FFFD FFFD FFFD 6735 - FFFD FFFD 673B FFFD FFFD 3D74 6733 FFFD - FFFD FFFD FFFD FFFD 424C 5077 FFFD 6734 - FFFD FFFD 673D 3C6A 673C FFFD FFFD FFFD - 3C29 3650 FFFD 355E 6745 FFFD 5435 FFFD - FFFD 6741 FFFD 3160 3B3A FFFD FFFD 4365 - FFFD FFFD 4E33 FFFD 6743 673F FFFD 4137 - FFFD 6742 FFFD FFFD 673E FFFD 7924 -End of Item 0078 - -Begin of Item 0079 - Format 1 - srcBegin = 7E08 - srcEnd = 7E9C - mappingOffset = 2CDB - Mapping = - 5D53 6746 674B 6744 FFFD FFFD FFFD FFFD - 6727 674C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 383F FFFD 6747 6749 6748 - FFFD FFFD FFFD 4F58 FFFD FFFD FFFD 4C50 - FFFD FFFD FFFD 376C FFFD 674A 4B75 FFFD - FFFD 575D 6750 FFFD 7863 674F 746A 4246 - FFFD 674E FFFD 7763 FFFD 575C 3C28 FFFD - FFFD 3731 FFFD FFFD FFFD 6752 6751 746D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6755 FFFD 562F 4949 FFFD FFFD - FFFD FFFD 6754 FFFD FFFD FFFD 4846 FFFD - FFFD FFFD 6740 FFFD FFFD FFFD FFFD FFFD - FFFD 497E 3B66 7873 FFFD 3C6B 6756 6759 - 6758 FFFD FFFD 3D49 FFFD FFFD FFFD FFFD - FFFD 526F FFFD FFFD 3C4C 674D 6757 FFFD - FFFD FFFD 576B FFFD FFFD FFFD FFFD FFFD - 6753 FFFD 667E FFFD 5078 784D FFFD 3278 - FFFD FFFD FFFD 5327 7826 FFFD 4F4B FFFD - 675A FFFD FFFD 746E 4042 -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = 7F36 - srcEnd = 805E - mappingOffset = 2D70 - Mapping = - 733E FFFD 3857 FFFD 4831 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7340 7341 - FFFD FFFD FFFD FFFD FFFD FFFD 733F FFFD - 786E FFFD 395E FFFD FFFD FFFD 5868 3A31 - FFFD FFFD 6E37 FFFD FFFD FFFD FFFD FFFD - FFFD 6E39 FFFD 6E38 FFFD FFFD FFFD FFFD - FFFD FFFD 6E3B 5556 576F FFFD FFFD FFFD - 5643 FFFD 3723 6E3D 4A70 FFFD FFFD FFFD - FFFD 3055 FFFD 6E3E FFFD FFFD FFFD FFFD - 6E40 FFFD FFFD FFFD FFFD FFFD FFFD 425E - 6E3C FFFD 6E3F FFFD 5172 FFFD 473C FFFD - 4340 FFFD FFFD FFFD FFFD FFFD 3861 FFFD - FFFD FFFD FFFD FFFD 4167 FFFD FFFD 7446 - 505F FFFD FFFD 4F5B FFFD FFFD 483A 7447 - FFFD 7448 FFFD 5265 FFFD FFFD FFFD FFFD - FFFD 7449 744A FFFD 744B FFFD FFFD FFFD - FFFD FFFD 597A 387E FFFD FFFD 6571 5370 - FFFD 7460 FFFD 4E4C FFFD FFFD FFFD 3361 - FFFD FFFD FFFD FFFD 7134 FFFD 526E FFFD - 7461 FFFD FFFD FFFD 4F30 FFFD 4F68 7462 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3554 3464 7464 FFFD FFFD FFFD 7463 - 7465 FFFD FFFD 7466 FFFD FFFD FFFD FFFD - 7467 FFFD 3A32 303F FFFD 7468 FFFD FFFD - FFFD FFFD FFFD 474C FFFD 372D 526D FFFD - FFFD FFFD 522B 404F FFFD 3F3C 6B23 555F - 6A48 FFFD FFFD FFFD FFFD 7173 3678 4B23 - FFFD FFFD 444D FFFD 7167 FFFD 7168 387B - 7169 3A44 5445 3052 FFFD FFFD 716A FFFD - FFFD FFFD 716B FFFD FFFD FFFD FFFD 716D - 716E FFFD 7171 7170 4555 FFFD 716F FFFD - 716C FFFD FFFD 7172 FFFD 367A FFFD 7174 - 522E 5E47 FFFD FFFD FFFD 335C FFFD 3522 - FFFD 3922 FFFD FFFD FFFD 7175 FFFD FFFD - 7176 FFFD FFFD FFFD 4144 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7178 FFFD FFFD FFFD - 4A25 FFFD 4638 FFFD 3E5B FFFD FFFD FFFD - 4E45 -End of Item 007A - -Begin of Item 007B - Format 1 - srcBegin = 806F - srcEnd = 811E - mappingOffset = 2E99 - Mapping = - 412A 344F 717A 4979 4B4A FFFD 7179 4474 - 5630 FFFD 7177 FFFD FFFD FFFD 4C7D 417B - 6D32 6D31 FFFD FFFD FFFD 525E 4B60 4B41 - 5558 FFFD 4862 FFFD 405F 3C21 FFFD FFFD - FFFD FFFD FFFD FFFD 6B41 FFFD FFFD 5024 - FFFD 5662 FFFD 3647 3858 6B40 384E FFFD - 6B3F FFFD 3949 562B FFFD FFFD 374A FFFD - FFFD FFFD 3C67 373E 6B46 FFFD 6B47 FFFD - 3F4F FFFD 6B45 537D FFFD 6B48 FFFD FFFD - 6B49 FFFD FFFD 374E FFFD 6B42 6B44 FFFD - FFFD FFFD FFFD 6B4F 4E38 6B50 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3133 6B52 4C25 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4556 - 6B53 FFFD 6B51 455F 6B4E FFFD 6B55 307B - FFFD FFFD 3A7A FFFD FFFD 5837 7163 FFFD - FFFD FFFD 6B4C FFFD FFFD 6640 6B59 FFFD - 3F68 5248 6B57 6B5C 386C 6B58 FFFD FFFD - FFFD 5058 FFFD 3037 FFFD 6B5D 445C FFFD - FFFD FFFD FFFD 562C FFFD FFFD 5032 3460 - FFFD FFFD 4276 3C39 FFFD FFFD FFFD 6B5B - FFFD FFFD FFFD 6B5F FFFD FFFD FFFD 3231 - FFFD 6B64 FFFD 3D45 6B56 FFFD FFFD 6B62 -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = 812C - srcEnd = 831C - mappingOffset = 2F49 - Mapping = - 6B63 FFFD FFFD 382C FFFD 4D51 6B65 FFFD - FFFD FFFD FFFD FFFD FFFD 554D FFFD FFFD - FFFD FFFD 4622 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4C73 FFFD 6B66 FFFD 784C 5238 - 6B67 FFFD 4976 FFFD 382F 382D FFFD 6B68 - 473B 4D73 6B4B FFFD FFFD 6B6A 6B6B FFFD - FFFD FFFD FFFD FFFD 6B6D 6B61 FFFD FFFD - FFFD 5048 4454 6B72 FFFD 6B6E FFFD 5657 - FFFD 6B71 4879 FFFD 517C 6B6C FFFD FFFD - 6B69 FFFD FFFD FFFD 3326 3839 4F59 FFFD - 6B6F 6B70 FFFD 4D48 3072 FFFD 6B76 FFFD - FFFD FFFD FFFD FFFD 6B75 FFFD 3232 FFFD - FFFD FFFD FFFD 3860 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 316C FFFD 3774 4C45 - 4424 4F25 FFFD FFFD 3D3A FFFD FFFD 6B79 - FFFD FFFD 6C22 FFFD 4572 4465 6B7A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4945 - FFFD FFFD FFFD FFFD FFFD FFFD 625F 6B7E - FFFD 3528 6B5A 4527 4D4E 6C21 315B 5337 - FFFD FFFD 525C FFFD FFFD 4133 6B7D FFFD - 6B7B 466A FFFD 6B77 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4030 FFFD 6B4D FFFD - FFFD FFFD FFFD 5460 5975 FFFD FFFD 333C - FFFD FFFD FFFD 6A30 4159 FFFD 5754 FFFD - 742B 3374 FFFD FFFD FFFD FFFD FFFD 5641 - 5642 FFFD FFFD FFFD FFFD FFFD 4C28 5569 - 3E4A FFFD 7427 FFFD 5228 7428 7429 FFFD - 742A 3E4B FFFD 536B 504B 3E59 3E49 FFFD - 4960 7867 FFFD FFFD 7342 FFFD 4A66 FFFD - 4C72 FFFD FFFD FFFD FFFD FFFD FFFD 6236 - 4B34 FFFD 4E68 565B FFFD 742D 742E FFFD - FFFD FFFD FFFD FFFD 7432 FFFD 3A3D 7433 - 3063 7430 FFFD 7431 FFFD FFFD FFFD 7436 - 7437 3666 3230 4F4F 7434 342C FFFD FFFD - FFFD FFFD 7438 FFFD FFFD FFFD FFFD FFFD - 7439 FFFD FFFD 4D27 FFFD 743A FFFD 743B - FFFD FFFD FFFD 743C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4B52 3255 743D FFFD - FFFD FFFD FFFD 743E FFFD FFFD FFFD FFFD - 742F FFFD 3D22 FFFD 743F FFFD FFFD 7435 - FFFD FFFD 745E 413C FFFD 3C68 492B FFFD - 6575 FFFD FFFD 515E FFFD 5C33 FFFD FFFD - FFFD 5C34 302C 5C35 FFFD FFFD FFFD FFFD - 5C39 FFFD FFFD FFFD 5842 FFFD 5C37 5373 - FFFD 4956 5C3A 5C36 FFFD 5C3B 4322 FFFD - FFFD FFFD FFFD FFFD 5C45 5C3D FFFD FFFD - FFFD 5625 FFFD 5C4F FFFD 5C4D FFFD FFFD - 5C52 3D66 FFFD FFFD 5C38 5C4B 5C4E 5C3E - 3752 3045 5C47 503E 5C41 3B28 FFFD 373C - 5C4C FFFD FFFD 5C46 FFFD 475B FFFD 5B3B - FFFD 513F 5C40 FFFD FFFD FFFD FFFD FFFD - 5C50 FFFD FFFD FFFD FFFD FFFD 5C43 FFFD - FFFD FFFD FFFD FFFD FFFD 5437 5C5B 5C5F - 4C26 5C66 FFFD 4367 5C5C FFFD FFFD 3F41 - 5C59 FFFD 307A 3936 5C65 5C53 FFFD 5C44 - 5C56 4874 3F60 5C51 FFFD FFFD FFFD 493B - FFFD FFFD FFFD 313D FFFD 5322 FFFD FFFD - 5C5A FFFD FFFD 5C55 FFFD 785C FFFD 5C5E - FFFD FFFD FFFD FFFD FFFD 5742 432F 7832 - 4751 4329 5C62 5C58 5C6B 5C54 FFFD FFFD - 5C5D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5C78 FFFD FFFD 5C61 5D22 - 5C67 -End of Item 007C - -Begin of Item 007D - Format 1 - srcBegin = 8328 - srcEnd = 8354 - mappingOffset = 313A - Mapping = - 3444 FFFD FFFD 4323 3267 5C7A FFFD 5C72 - FFFD 5C6F FFFD 5C7C 5C6E 5270 3268 FFFD - 4857 4863 5C7B FFFD 5C6D FFFD FFFD FFFD - 5C77 FFFD FFFD 5C75 FFFD FFFD 3E23 5C74 - FFFD 325D FFFD FFFD FFFD FFFD FFFD 5C73 - 7843 5C68 3B44 FFFD 4073 -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = 8377 - srcEnd = 83B0 - mappingOffset = 3167 - Mapping = - 3A49 5D29 FFFD FFFD 5D36 5D31 5D34 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5D30 464E - FFFD FFFD 4072 572F FFFD FFFD FFFD 492F - FFFD FFFD FFFD 5C6C 5D2E FFFD FFFD 3E25 - FFFD 5D37 FFFD FFFD 5C70 5D2F FFFD 5D38 - FFFD 5D2C FFFD 3C54 FFFD FFFD FFFD FFFD - 5C48 5D39 5D33 5D2D 442A FFFD FFFD FFFD - FFFD 5D28 -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = 83BD - srcEnd = 841C - mappingOffset = 31A1 - Mapping = - 4327 FFFD FFFD 5D52 5D3C FFFD FFFD FFFD - 5D51 FFFD 393D FFFD FFFD 3E55 FFFD 3E7A - FFFD FFFD 3A4A FFFD FFFD FFFD FFFD 5D4A - FFFD 5D45 FFFD 5D3F FFFD FFFD FFFD 324B - 5D43 FFFD 5D4B 3224 5D55 FFFD FFFD FFFD - 5D3E FFFD FFFD FFFD 4650 5D50 FFFD FFFD - FFFD FFFD 3B2A 5D54 4162 3746 FFFD FFFD - FFFD FFFD FFFD 5D4E 5D4F FFFD FFFD FFFD - 5D44 FFFD FFFD FFFD 5D3D FFFD 5D4D 4C51 - FFFD 5D49 5C49 FFFD FFFD 4033 5D42 4348 - 463C 4E2E 5D4C FFFD 5D48 FFFD FFFD FFFD - FFFD FFFD FFFD 5D41 FFFD FFFD FFFD 5D46 -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = 842C - srcEnd = 84A1 - mappingOffset = 3201 - Mapping = - 4D72 FFFD FFFD FFFD FFFD 5D66 FFFD FFFD - FFFD 5D2B FFFD FFFD 5D47 FFFD FFFD FFFD - 5D60 4264 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5D61 FFFD FFFD 5236 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5D57 5D26 FFFD - FFFD FFFD FFFD 5678 FFFD 5D59 5D58 3870 - 5D56 FFFD FFFD FFFD FFFD 464F FFFD 362D - 5D27 FFFD 4E2D FFFD FFFD 5D62 FFFD 3A79 - 5461 5D67 FFFD 7877 FFFD 3450 FFFD 5D5A - FFFD 3F7B 5D63 3B67 5D5F FFFD 5D5D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3559 FFFD - FFFD FFFD FFFD FFFD 5D5C FFFD FFFD FFFD - FFFD FFFD 5D65 FFFD FFFD FFFD FFFD 5D3B - 5D2A FFFD FFFD 5D75 FFFD 4349 FFFD FFFD - 4B62 FFFD FFFD FFFD FFFD 5D72 -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = 84AF - srcEnd = 84D6 - mappingOffset = 3277 - Mapping = - 5861 FFFD FFFD 4651 FFFD 5D74 FFFD FFFD - FFFD 5574 5D73 5D70 FFFD 3254 5D6C FFFD - 5D6F 5D25 5D68 FFFD FFFD 506E FFFD FFFD - FFFD FFFD 4858 5D6E 3847 FFFD 5D69 FFFD - FFFD 5D6A 4B72 FFFD 5D6D FFFD FFFD 314D -End of Item 0081 - -Begin of Item 0082 - Format 1 - srcBegin = 84EC - srcEnd = 84F0 - mappingOffset = 329F - Mapping = - 456E FFFD 412B 5C4A 5D7B -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = 84FC - srcEnd = 84FF - mappingOffset = 32A4 - Mapping = - 5E24 5C6A FFFD 5E23 -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = 850C - srcEnd = 863F - mappingOffset = 32A8 - Mapping = - 5D78 FFFD FFFD FFFD FFFD 436F FFFD 427B - 7825 FFFD FFFD 5561 FFFD FFFD 4E35 FFFD - FFFD FFFD 5D64 5D7D FFFD 324C FFFD 3D2F - FFFD FFFD 5C60 FFFD FFFD FFFD FFFD 4468 - 4A5F 5271 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5D7A FFFD FFFD 5E22 - FFFD 314E FFFD FFFD FFFD 5D21 FFFD 5E2C - FFFD FFFD 5D5B FFFD 5E26 3D36 486F FFFD - FFFD FFFD 5C71 FFFD FFFD FFFD 5D24 5C3F - FFFD 5D35 5E21 FFFD 5C69 5E25 FFFD FFFD - FFFD FFFD 5E29 FFFD FFFD FFFD 5D5E FFFD - 5E28 FFFD FFFD FFFD 5E27 3534 4E5F FFFD - FFFD 4F74 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5D77 FFFD 5E33 5E2A 5E2E - FFFD FFFD 4059 FFFD FFFD FFFD FFFD FFFD - 3121 5E36 FFFD 5E31 5C76 FFFD 3C3B FFFD - 5C3C FFFD FFFD 5E32 FFFD 7844 FFFD FFFD - 473E FFFD FFFD FFFD FFFD FFFD FFFD 5126 - 5E35 FFFD FFFD 5D32 FFFD FFFD FFFD FFFD - 5E2F FFFD 3C76 FFFD 5E30 4878 503D FFFD - FFFD FFFD FFFD 4A6D 5E39 FFFD FFFD FFFD - FFFD FFFD FFFD 5E38 FFFD 5E37 5C79 FFFD - FFFD FFFD FFFD FFFD FFFD 5E3B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3D65 FFFD FFFD - FFFD 4036 5D23 3258 436A FFFD FFFD FFFD - FFFD 453A FFFD FFFD FFFD FFFD FFFD FFFD - 5E3C 5255 FFFD FFFD FFFD FFFD FFFD FFFD - 4C59 5229 FFFD FFFD FFFD 372A 5E34 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 544C FFFD 5C42 FFFD FFFD 302A 5D7E 5465 - FFFD FFFD FFFD 5E3D FFFD FFFD FFFD FFFD - 5E2D 5E3F 422B 4B55 FFFD FFFD FFFD 463B - FFFD FFFD FFFD FFFD FFFD 4422 FFFD FFFD - FFFD FFFD 5E41 FFFD FFFD FFFD 5E3A FFFD - FFFD FFFD 5D7C FFFD FFFD FFFD 5C57 FFFD - FFFD FFFD FFFD 5E3E FFFD 5E40 FFFD FFFD - FFFD 403C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 553A FFFD 5D71 FFFD - 5E42 FFFD FFFD 425C -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = 864D - srcEnd = 867C - mappingOffset = 33DC - Mapping = - 722E 3B22 FFFD 4530 FFFD FFFD FFFD 722F - 3426 FFFD FFFD FFFD FFFD 5069 FFFD 4232 - FFFD 535D 3A45 FFFD FFFD 6B3D FFFD FFFD - FFFD FFFD 3F77 FFFD FFFD FFFD FFFD 7230 - FFFD FFFD FFFD FFFD 4A2D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3A67 7233 7235 7234 -End of Item 0085 - -Begin of Item 0086 - Format 1 - srcBegin = 868A - srcEnd = 873F - mappingOffset = 340C - Mapping = - 4E43 7238 3076 7237 FFFD FFFD FFFD FFFD - FFFD 723E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5141 723A FFFD FFFD FFFD FFFD - FFFD 723C 5469 FFFD FFFD 723B 7236 723F - 723D FFFD FFFD FFFD FFFD 7247 7244 7246 - FFFD FFFD 724A 7242 7240 FFFD FFFD FFFD - 7245 FFFD FFFD FFFD FFFD FFFD 567B FFFD - FFFD FFFD 7241 FFFD 4779 495F FFFD 7248 - FFFD 3530 FFFD FFFD FFFD FFFD 7250 7256 - FFFD FFFD 3B57 FFFD FFFD FFFD 7255 4D5C - FFFD 566B FFFD FFFD 7252 7254 FFFD FFFD - FFFD FFFD 3872 FFFD FFFD FFFD FFFD 724B - FFFD FFFD FFFD 724E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7259 533C - 724C FFFD FFFD FFFD 366A FFFD 4A71 FFFD - 3764 7257 FFFD FFFD 7239 7258 725A 725D - 725B FFFD FFFD 725C FFFD FFFD FFFD FFFD - 5151 7251 FFFD 4D49 FFFD FFFD 5629 FFFD - 7263 FFFD 435B FFFD 7260 FFFD FFFD 784B - 726C 725E FFFD 7261 FFFD FFFD FFFD 7268 - FFFD FFFD FFFD FFFD 7262 FFFD FFFD 7267 - FFFD FFFD 7266 FFFD FFFD 7269 FFFD FFFD - FFFD 725F FFFD FFFD 7264 726A -End of Item 0086 - -Begin of Item 0087 - Format 1 - srcBegin = 874C - srcEnd = 8823 - mappingOffset = 34C2 - Mapping = - 7272 FFFD 502B FFFD FFFD FFFD FFFD 7275 - FFFD 4A34 FFFD 3B48 FFFD 7279 FFFD FFFD - FFFD FFFD FFFD FFFD 7270 FFFD FFFD 7276 - 7278 727A 4F3A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7273 FFFD 7271 FFFD FFFD FFFD - 3A7B FFFD 357B FFFD 4E4F FFFD FFFD 726F - FFFD 726D FFFD FFFD FFFD FFFD 726B 7326 - 724F 7323 FFFD FFFD 7322 FFFD FFFD 7274 - FFFD 485A FFFD FFFD FFFD FFFD FFFD 727B - FFFD FFFD FFFD 7325 FFFD FFFD FFFD FFFD - FFFD FFFD 426C 4378 FFFD FFFD 5329 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7327 - 7329 7324 FFFD 727C FFFD FFFD FFFD 732B - FFFD 732A FFFD FFFD FFFD FFFD 425D 7277 - FFFD 732E FFFD FFFD 7330 FFFD FFFD FFFD - 555D FFFD 7321 FFFD 7265 FFFD 7331 732C - FFFD FFFD 727D FFFD FFFD 732F 727E 732D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7332 - FFFD FFFD FFFD FFFD 7334 FFFD FFFD 7231 - FFFD 7328 FFFD FFFD FFFD FFFD 7333 FFFD - 3275 FFFD 7335 724D FFFD FFFD 3366 FFFD - FFFD FFFD 7249 FFFD FFFD 5037 FFFD 524F - FFFD FFFD 7338 FFFD FFFD FFFD FFFD 5979 - FFFD 532C 7232 FFFD FFFD FFFD 7339 FFFD - FFFD FFFD FFFD FFFD 7253 726E FFFD 7337 - FFFD 4864 7336 FFFD FFFD FFFD FFFD 733A - FFFD FFFD FFFD 402F FFFD 733B 3440 7243 -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = 8831 - srcEnd = 8896 - mappingOffset = 359A - Mapping = - 3946 6E43 FFFD FFFD FFFD 324F FFFD FFFD - 733C FFFD 4279 733D FFFD FFFD FFFD 512A - FFFD FFFD FFFD 742C FFFD 565A FFFD FFFD - FFFD 785A FFFD 5050 515C FFFD FFFD FFFD - FFFD FFFD 4A75 FFFD FFFD FFFD 3D56 FFFD - 5143 FFFD 4E40 FFFD 3365 FFFD FFFD FFFD - 3A62 6169 5242 7142 FFFD FFFD FFFD 316D - 7143 FFFD 4940 FFFD FFFD 5972 FFFD 4B25 - FFFD 7144 FFFD FFFD FFFD FFFD 5654 FFFD - 563B FFFD FFFD FFFD 7145 7440 7146 FFFD - 542C 7147 FFFD FFFD FFFD FFFD FFFD 7442 - FFFD FFFD 347C FFFD 455B FFFD FFFD FFFD - FFFD 4C3B FFFD FFFD FFFD 5064 -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = 88A2 - srcEnd = 8947 - mappingOffset = 3600 - Mapping = - 7148 FFFD 5973 FFFD FFFD FFFD FFFD FFFD - FFFD 313B FFFD FFFD FFFD FFFD FFFD 3824 - FFFD FFFD FFFD FFFD FFFD 714A FFFD FFFD - FFFD FFFD 714B FFFD FFFD FFFD FFFD 3243 - 4151 FFFD FFFD FFFD FFFD FFFD FFFD 714C - 7441 FFFD FFFD FFFD 714E 406F FFFD FFFD - 5976 FFFD 5261 5423 FFFD FFFD 7443 4839 - FFFD FFFD 3239 5730 FFFD 7444 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7154 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7156 7151 - FFFD 4951 4561 FFFD FFFD FFFD 4263 397C - FFFD FFFD 7153 7925 7155 FFFD FFFD FFFD - 3953 FFFD FFFD FFFD FFFD 7834 FFFD FFFD - 715B FFFD FFFD FFFD FFFD FFFD 3A56 FFFD - 307D 7159 FFFD FFFD FFFD FFFD FFFD 7158 - 7152 FFFD FFFD FFFD FFFD FFFD FFFD 7157 - FFFD FFFD FFFD 486C FFFD FFFD FFFD FFFD - 4D4A 715D FFFD FFFD FFFD FFFD 653D FFFD - 3F63 714D FFFD FFFD 715E FFFD 715A FFFD - FFFD 5974 FFFD FFFD FFFD FFFD FFFD 715F - FFFD FFFD 4F65 FFFD FFFD 7150 -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = 8956 - srcEnd = 89C0 - mappingOffset = 36A6 - Mapping = - 3040 FFFD FFFD FFFD FFFD FFFD FFFD 714F - 7445 3D73 7149 FFFD FFFD FFFD 715C FFFD - 7160 FFFD FFFD FFFD 4D60 FFFD 7821 FFFD - FFFD 3344 FFFD FFFD 4F2E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7161 FFFD FFFD - FFFD 4E77 FFFD 522A FFFD 717B FFFD FFFD - 3832 FFFD FFFD FFFD FFFD 3C7B FFFD FFFD - FFFD 3966 FFFD FFFD FFFD 4359 FFFD FFFD - 4A53 FFFD 6A68 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6A6A FFFD FFFD FFFD FFFD - 6A6C FFFD FFFD FFFD 4757 FFFD 6A69 FFFD - FFFD 6A6D FFFD FFFD 6A6E FFFD FFFD FFFD - FFFD 6A6F FFFD FFFD 3E75 FFFD FFFD 4040 - FFFD 6A6B 395B -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = 89D2 - srcEnd = 8B9E - mappingOffset = 3711 - Mapping = - 3D47 FFFD FFFD FFFD 757B FFFD FFFD FFFD - 757D FFFD 757E FFFD FFFD FFFD FFFD FFFD - FFFD 3D62 FFFD 7621 FFFD FFFD FFFD FFFD - FFFD 7622 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6C32 757C FFFD 7623 FFFD 3425 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5154 5A25 - 3629 383C FFFD FFFD FFFD 596A 3C46 FFFD - 5136 FFFD 5A27 FFFD 4C56 FFFD 5A26 FFFD - FFFD 5135 FFFD 5A28 467D FFFD 3C47 FFFD - FFFD 366F FFFD 5148 FFFD 4B4F FFFD FFFD - FFFD 3E77 FFFD 5A2B FFFD FFFD FFFD FFFD - 3743 FFFD FFFD 4968 FFFD FFFD FFFD 506D - FFFD FFFD 4B5F FFFD 5A2D FFFD FFFD FFFD - 556F FFFD FFFD FFFD 7624 FFFD FFFD 5A2C - FFFD FFFD FFFD FFFD 5A2E FFFD 6E3A FFFD - FFFD FFFD FFFD FFFD 5A2A FFFD 5529 FFFD - 5A31 FFFD 5A2F 4640 FFFD FFFD 5A30 FFFD - FFFD 5767 FFFD FFFD 344A FFFD FFFD 5A3C - 512F 5268 FFFD FFFD 4A54 FFFD FFFD 4A2B - FFFD 326F 5A38 396E 5A39 FFFD 5A35 3B30 - 3843 4F6A FFFD 5A37 FFFD FFFD FFFD 5532 - FFFD FFFD 5A36 FFFD FFFD 5A34 FFFD FFFD - FFFD FFFD 5A33 566F 5A32 3F64 FFFD FFFD - FFFD FFFD FFFD 484F FFFD FFFD FFFD 5A3F - 5A40 4A44 FFFD 352E FFFD FFFD 5355 FFFD - 5A3D FFFD FFFD FFFD 536F FFFD 334F 3D6B - FFFD 4E5C 4E73 5A3E 4B50 FFFD 3B65 FFFD - FFFD FFFD 4B35 FFFD FFFD FFFD 4B2D FFFD - 3F4E FFFD FFFD FFFD 5A47 FFFD FFFD 374C - FFFD FFFD 526A FFFD FFFD 3577 FFFD FFFD - 5A46 FFFD 573B FFFD FFFD 4C38 FFFD 5A43 - FFFD 476B FFFD 5A3A FFFD 5A41 FFFD 5A42 - 4142 FFFD FFFD FFFD 425B 5A45 FFFD FFFD - FFFD 5A44 357D FFFD 5A52 FFFD FFFD FFFD - 5A3B FFFD 5A4C FFFD 5A50 5033 FFFD FFFD - FFFD 5A49 FFFD 5A4D 5A51 FFFD FFFD 3B64 - FFFD 5A4F FFFD FFFD 5A48 376D 566E FFFD - 5168 FFFD 5A4E FFFD 4535 FFFD 4431 5A4B - 4E3D FFFD 4C5C 565F FFFD 6540 FFFD FFFD - 3B51 FFFD FFFD FFFD 4355 FFFD 5A57 FFFD - FFFD FFFD 5A4A FFFD 5A55 3079 FFFD 472B - 5A56 3D32 FFFD 503B FFFD FFFD FFFD 5225 - FFFD FFFD FFFD FFFD 7625 FFFD 5A53 FFFD - FFFD 5A58 437D 5A59 FFFD FFFD FFFD FFFD - FFFD 5A29 FFFD FFFD FFFD FFFD FFFD 3D77 - FFFD FFFD FFFD FFFD 4321 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5624 - FFFD FFFD FFFD FFFD 5A5C 3C25 FFFD FFFD - FFFD FFFD FFFD FFFD 5A5A FFFD 4A36 5A5B - 4C37 FFFD 4657 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3E2F FFFD FFFD FFFD - FFFD 5A5E 4629 FFFD FFFD 526B 5269 FFFD - FFFD FFFD 4734 FFFD FFFD 3B24 FFFD FFFD - FFFD FFFD FFFD 537E FFFD FFFD 3641 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3164 FFFD FFFD FFFD 7645 FFFD FFFD FFFD - 3277 4843 FFFD 403E 5A5F FFFD FFFD FFFD - FFFD FFFD 5A54 FFFD 5A5D -End of Item 008B - -Begin of Item 008C - Format 1 - srcBegin = 8C37 - srcEnd = 8D1C - mappingOffset = 38DE - Mapping = - 3948 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3B6D FFFD FFFD FFFD FFFD 3639 - 7478 4671 7479 FFFD FFFD 4D63 FFFD FFFD - FFFD 3761 FFFD FFFD FFFD FFFD 7539 FFFD - FFFD FFFD FFFD 6B60 FFFD FFFD FFFD FFFD - FFFD FFFD 4F73 3B3F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3A40 5425 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6159 FFFD FFFD FFFD - FFFD 7574 312A 3272 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7575 FFFD FFFD 7577 FFFD - FFFD FFFD 3A51 7576 FFFD 4332 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7579 FFFD FFFD - FFFD 7578 FFFD FFFD FFFD FFFD 3134 556A - FFFD 383A 3246 3931 FFFD FFFD FFFD FFFD - 4636 3B75 3737 4C30 3961 5470 FFFD FFFD - 567C 6A5B FFFD 6A5F 3721 3973 FFFD 3161 - 4272 347B FFFD 6A5C 3751 4C79 6A5D FFFD - 4333 3A58 6A5A 4238 415E 3B5F 6A60 FFFD - 574A 3C56 FFFD 5474 FFFD FFFD FFFD FFFD - FFFD FFFD 6A62 495E 3176 FFFD 6A64 FFFD - FFFD FFFD FFFD 6A63 FFFD 344D FFFD 494D - FFFD 4562 6259 4F4D 4274 3C7A FFFD 3833 - 6A66 FFFD FFFD 564A 6A65 554B 3644 FFFD - FFFD FFFD FFFD FFFD FFFD 4035 FFFD FFFD - FFFD FFFD FFFD 572C 6A67 393A 487C 5853 - FFFD FFFD FFFD FFFD FFFD 6A5E 5738 FFFD - FFFD 5479 FFFD 545E 584D FFFD 4944 FFFD - 532E 6A61 FFFD FFFD FFFD FFFD FFFD 4A6A - FFFD FFFD FFFD FFFD 3853 545F -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = 8D64 - srcEnd = 8F64 - mappingOffset = 39C4 - Mapping = - 3360 FFFD 4962 7476 FFFD FFFD FFFD 3A55 - FFFD 7477 FFFD FFFD 575F FFFD FFFD 7471 - 3830 FFFD FFFD 4670 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3343 FFFD FFFD - 7472 332C FFFD FFFD FFFD FFFD 543D FFFD - FFFD FFFD FFFD FFFD FFFD 7474 FFFD FFFD - 7473 384F FFFD FFFD FFFD 5554 FFFD FFFD - FFFD FFFD FFFD 4C4B FFFD FFFD FFFD 4824 - FFFD FFFD FFFD FFFD 4777 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7475 5763 - 453F 7540 FFFD FFFD FFFD FFFD 7543 FFFD - 7542 FFFD 563A 7541 FFFD FFFD FFFD FFFD - FFFD FFFD 754C FFFD FFFD FFFD FFFD 304F - 3578 FFFD 7549 754A FFFD 455C FFFD FFFD - FFFD FFFD 7545 7546 FFFD FFFD 7547 754B - FFFD 3E60 FFFD 387A FFFD FFFD FFFD 7550 - 7553 FFFD FFFD FFFD 3F67 FFFD 3972 753C - 754D FFFD FFFD 4237 FFFD FFFD FFFD 4C78 - FFFD FFFD FFFD FFFD FFFD FFFD 3665 FFFD - FFFD 7555 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 753D FFFD FFFD FFFD 7554 FFFD FFFD - FFFD FFFD FFFD 4C24 3C79 FFFD FFFD FFFD - 7556 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7557 3E61 7558 FFFD FFFD 4C5F 755B - FFFD FFFD FFFD FFFD FFFD 3248 5759 FFFD - FFFD FFFD 755A FFFD FFFD 7562 FFFD FFFD - 533B 7560 FFFD FFFD FFFD 755F 755D FFFD - FFFD 7561 FFFD FFFD 755E 7564 7565 FFFD - 4C63 FFFD FFFD 653F 3538 7563 7568 4C23 - 7544 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 754F FFFD FFFD FFFD 753E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7567 - FFFD FFFD 3144 FFFD FFFD 753F FFFD FFFD - 3545 3264 FFFD 756C 7569 FFFD 3657 FFFD - 756D FFFD 756A FFFD FFFD FFFD 754E FFFD - 756B FFFD FFFD FFFD FFFD 546A FFFD FFFD - FFFD 756E FFFD 3379 FFFD 753B 336C 7552 - FFFD 543E FFFD FFFD 7571 755C 7548 7559 - 7570 FFFD FFFD FFFD FFFD FFFD 7551 FFFD - FFFD FFFD 7573 FFFD FFFD 7566 FFFD FFFD - FFFD 345A 7572 FFFD FFFD FFFD 756F 496D - 392A FFFD FFFD FFFD FFFD FFFD 3663 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4C49 FFFD - FFFD FFFD FFFD FFFD 477B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3335 547E - 396C 3E7C 6A26 FFFD FFFD FFFD 5079 FFFD - 696D FFFD FFFD FFFD FFFD FFFD FFFD 696E - FFFD FFFD FFFD 486D FFFD FFFD FFFD FFFD - 6975 FFFD FFFD FFFD FFFD FFFD FFFD 6974 - FFFD FFFD FFFD FFFD FFFD FFFD 696F FFFD - FFFD FFFD FFFD FFFD 5661 6972 6977 6970 - 6973 FFFD 6978 FFFD FFFD FFFD FFFD 3D4F - FFFD 697B FFFD 697A FFFD 5458 6979 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 697C FFFD - 3828 4761 FFFD FFFD FFFD FFFD FFFD 413E - 6A22 3B54 697E 6A21 FFFD FFFD FFFD FFFD - FFFD 3975 697D FFFD FFFD 3132 4256 FFFD - FFFD FFFD FFFD 3C2D FFFD FFFD FFFD 6A23 - FFFD FFFD FFFD FFFD 4A64 FFFD FFFD 3778 - FFFD FFFD 5537 535F FFFD FFFD 6C31 FFFD - 4F3D 542F 6A24 FFFD FFFD 572A FFFD FFFD - FFFD 555E 3D4E FFFD FFFD FFFD FFFD FFFD - 6A25 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3A64 FFFD 604E 6976 FFFD - 6971 -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = 8F9B - srcEnd = 8FB6 - mappingOffset = 3BC5 - Mapping = - 5041 393C FFFD FFFD 3159 FFFD FFFD FFFD - 4031 FFFD FFFD 306C FFFD 3166 FFFD FFFD - FFFD FFFD 3447 3168 3167 333D 4868 4529 - FFFD FFFD FFFD 6541 -End of Item 008E - -Begin of Item 008F - Format 1 - srcBegin = 8FC2 - srcEnd = 8FD5 - mappingOffset = 3BE1 - Mapping = - 5358 FFFD 4679 5138 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 532D FFFD FFFD 3D7C - FFFD 6542 3735 6543 -End of Item 008F - -Begin of Item 0090 - Format 1 - srcBegin = 8FE2 - srcEnd = 9179 - mappingOffset = 3BF5 - Mapping = - 4C76 FFFD 6546 6544 6548 FFFD 654A FFFD - 354F 4648 FFFD 357C 6545 FFFD 4A76 FFFD - FFFD FFFD 783C FFFD FFFD 4354 3145 3C23 - FFFD FFFD FFFD 5737 FFFD FFFD 4D4B 4B4D - FFFD 4C53 654C 654B 4466 FFFD FFFD FFFD - FFFD 654D FFFD 6550 FFFD 4D38 5670 654F - FFFD FFFD 4D3E 6549 6551 363A FFFD 5562 - 4D28 3964 FFFD 4A45 3351 4B59 546C 6552 - 376A 412C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6555 347E 6556 FFFD FFFD - 3D78 FFFD FFFD 6553 6554 FFFD 525D FFFD - FFFD FFFD 3146 FFFD 5362 FFFD FFFD 365D - 4B6C FFFD 6557 FFFD FFFD 5376 FFFD FFFD - FFFD 544B FFFD 3169 397D 3674 655A 6558 - 6559 3540 346F 4E25 FFFD FFFD 655C FFFD - FFFD 655E 5137 FFFD 355D FFFD 5436 FFFD - 655D 4732 FFFD 5223 FFFD FFFD 655B 4A4A - FFFD FFFD FFFD 5462 555A FFFD FFFD FFFD - 3359 FFFD 6560 5771 FFFD 4728 5121 FFFD - 5245 FFFD 4149 6561 FFFD 315C 517B 4275 - 6562 6564 3B39 FFFD FFFD 6547 6563 FFFD - 315F 6565 FFFD FFFD FFFD 425F 654E 5258 - FFFD FFFD FFFD 675F FFFD 5A75 FFFD 5A78 - FFFD 5A76 FFFD FFFD FFFD FFFD FFFD 5A7A - 504F 4447 FFFD FFFD 306E FFFD FFFD FFFD - 5030 FFFD FFFD FFFD FFFD 3A2A 5B22 4771 - FFFD 5A7C 5A7B 495B 5A7D FFFD 5B21 FFFD - FFFD FFFD FFFD FFFD 5B25 FFFD FFFD 7879 - FFFD FFFD 5B27 5B24 FFFD 5B28 FFFD FFFD - 3D3C FFFD FFFD FFFD 4049 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5B2D FFFD FFFD - FFFD 5B2E 5B2C 3A42 FFFD 5B23 FFFD 3F24 - 5B2B FFFD FFFD FFFD FFFD FFFD 323F FFFD - FFFD 5B2F FFFD 3979 FFFD 5B30 FFFD FFFD - FFFD FFFD 333B 534A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 363C 5B31 FFFD FFFD FFFD - 3675 FFFD 5B32 FFFD 5B29 FFFD FFFD 4F67 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 575E FFFD 5A79 FFFD 5447 FFFD FFFD 3149 - FFFD FFFD FFFD FFFD 5B34 FFFD FFFD FFFD - 5B33 5B35 FFFD FFFD FFFD 354B FFFD FFFD - FFFD FFFD FFFD 5623 FFFD 5B37 415A 5B36 - 3526 FFFD 5A7E FFFD 5B26 FFFD FFFD 5B38 - 5A77 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5B39 FFFD FFFD 5B3A FFFD 5B2A 534F - 747A 4775 5743 4564 747C 747D 747B FFFD - 3E46 FFFD FFFD FFFD FFFD 506F FFFD FFFD - 3753 FFFD FFFD FFFD 4C2A FFFD FFFD 7522 - 7521 3A28 747E 4B56 FFFD FFFD FFFD 7524 - 4052 FFFD 336A FFFD 4D2A 7525 7523 FFFD - 7528 FFFD 7529 3D4D 4338 3F61 4B61 752A -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = 9185 - srcEnd = 91E9 - mappingOffset = 3D8D - Mapping = - 752C FFFD 343C FFFD 576D FFFD 3457 752B - 752E FFFD FFFD 752D 752F 5051 FFFD FFFD - FFFD 544D FFFD FFFD FFFD 4351 4829 3373 - FFFD FFFD FFFD FFFD FFFD 7530 7531 FFFD - FFFD FFFD FFFD FFFD FFFD 7532 523D 3D34 - 7533 7534 7535 FFFD FFFD FFFD FFFD 7537 - 7536 FFFD FFFD FFFD FFFD 7538 FFFD FFFD - FFFD FFFD FFFD 4470 5046 FFFD 7527 FFFD - 7526 FFFD 3249 FFFD 5354 FFFD 4A4D 784E - 5658 5230 413F FFFD 3D70 6E44 6E45 6E46 - 6E49 FFFD 6E48 3624 6E47 FFFD FFFD 382A - 556B FFFD FFFD FFFD FFFD FFFD 3576 6E4C - FFFD FFFD 6E4B FFFD 3730 -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = 91F5 - srcEnd = 93E8 - mappingOffset = 3DF2 - Mapping = - 6E4E FFFD 6E4A FFFD 6E4F 4725 FFFD FFFD - FFFD FFFD FFFD 6E59 6E55 FFFD FFFD 6E57 - FFFD FFFD FFFD 6E50 4446 FFFD FFFD FFFD - 365B 3933 FFFD 6E54 6E53 FFFD FFFD 332E - 4525 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3E7B FFFD FFFD FFFD FFFD 3846 FFFD - 6E58 6E51 6E56 FFFD FFFD FFFD FFFD FFFD - FFFD 6E6A FFFD 6E66 FFFD FFFD 6E5D 4165 - FFFD FFFD 6E5C 6E60 6E6B 6E5A FFFD FFFD - 6E5F 534B 6E64 3C58 FFFD FFFD FFFD FFFD - 6E52 FFFD FFFD 6E68 6E67 FFFD FFFD FFFD - 6E69 FFFD FFFD FFFD 322C FFFD FFFD FFFD - 6E5E FFFD 472F FFFD FFFD 432D 4726 FFFD - FFFD 6E61 FFFD FFFD FFFD 3227 FFFD FFFD - FFFD 6E5B FFFD FFFD FFFD FFFD FFFD 6E62 - 6E63 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3D42 FFFD 6E6F 3875 FFFD - FFFD FFFD 6E7E 5278 FFFD FFFD 6F25 FFFD - 4D2D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7646 FFFD FFFD 4F33 FFFD 6E7D FFFD - FFFD 6E79 FFFD 437A FFFD 6F22 FFFD 4F4E - FFFD FFFD FFFD 6E6E FFFD FFFD 6F28 FFFD - 523F 6E77 FFFD 6F27 6E7B 6E70 6F24 6E6D - FFFD FFFD FFFD FFFD 6E76 FFFD FFFD FFFD - FFFD FFFD 4F7A FFFD 5062 FFFD 4C60 6F31 - FFFD FFFD FFFD FFFD 4241 FFFD 6F36 FFFD - 503F FFFD 3135 7648 FFFD FFFD FFFD 6E7A - FFFD FFFD 6E72 FFFD FFFD 3766 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6F32 FFFD 6F37 FFFD FFFD FFFD 6E74 337A - 6F2D 6F38 FFFD 6F30 FFFD 464C FFFD FFFD - 4871 6E71 6F2F 6F2E 6F2B FFFD FFFD FFFD - FFFD 6F33 FFFD 3E62 FFFD FFFD FFFD 3856 - FFFD FFFD FFFD FFFD 6F3E FFFD FFFD FFFD - FFFD 6F3A 6F42 6F43 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5736 FFFD 6F39 FFFD FFFD - 6F3F FFFD FFFD 3438 6F45 6F23 6F3C FFFD - FFFD FFFD 6F44 3627 FFFD 472E FFFD FFFD - FFFD 3D75 FFFD 432A FFFD FFFD 4E7D FFFD - FFFD 6F40 346D FFFD FFFD 423C 434C FFFD - FFFD 7823 FFFD 6F2A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6F3D 4F47 FFFD 6F41 FFFD - FFFD 6E4D 6F47 FFFD FFFD FFFD 3978 FFFD - 3646 FFFD FFFD FFFD FFFD FFFD FFFD 6F49 - FFFD FFFD FFFD 5521 FFFD FFFD 364D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6F4A - 6F46 FFFD FFFD FFFD 6F3B 764A FFFD 4742 - FFFD FFFD FFFD 6F4C FFFD FFFD FFFD FFFD - 3C7C 6F48 FFFD FFFD FFFD 5560 FFFD FFFD - FFFD 6F71 FFFD FFFD FFFD 433E FFFD 6F4D - FFFD FFFD 6F51 FFFD FFFD 3077 FFFD FFFD - FFFD FFFD 764C FFFD FFFD FFFD FFFD FFFD - FFFD 4B78 FFFD 6F53 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4E59 5D76 FFFD - FFFD 6F56 6E78 FFFD 6F21 6F4B FFFD 3864 - FFFD 5572 FFFD 6F57 FFFD FFFD 4478 FFFD - 6F58 FFFD FFFD 6F54 FFFD FFFD FFFD FFFD - FFFD FFFD 6F55 FFFD FFFD FFFD 6F5F FFFD - FFFD FFFD 6F60 4134 FFFD 764B FFFD 6F52 - 6F5D FFFD FFFD FFFD 6F61 FFFD FFFD FFFD - FFFD 7769 6F2C 6F4F FFFD FFFD FFFD 6F5B - 6F5C 6F5E 3279 FFFD 3E35 6F5A FFFD 6F4E - FFFD FFFD FFFD 7649 -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = 93F5 - srcEnd = 9454 - mappingOffset = 3FE6 - Mapping = - 6E7C FFFD 6F64 FFFD 6F6A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6E73 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6F26 FFFD - FFFD FFFD FFFD 414D FFFD 6F29 6F66 6F62 - FFFD FFFD FFFD 5653 6F6B FFFD FFFD FFFD - 6F63 FFFD FFFD 6F68 FFFD FFFD FFFD FFFD - FFFD 6F34 6F35 6F50 FFFD FFFD FFFD FFFD - FFFD 412D FFFD FFFD FFFD 6F6D 4058 FFFD - 4C7A FFFD FFFD 6E6C FFFD 6E75 FFFD FFFD - FFFD 764D 6F6E FFFD FFFD FFFD FFFD 567D - FFFD FFFD FFFD FFFD FFFD 6F6C FFFD 6F59 - FFFD FFFD FFFD FFFD FFFD 3C78 FFFD 6F6F -End of Item 0093 - -Begin of Item 0094 - Format 1 - srcBegin = 9460 - srcEnd = 947F - mappingOffset = 4046 - Mapping = - 6E65 FFFD FFFD 6F70 FFFD 6F65 FFFD FFFD - FFFD FFFD FFFD 764E FFFD 6F67 FFFD FFFD - 543F FFFD 4F62 FFFD FFFD FFFD FFFD 4477 - FFFD 6F69 FFFD FFFD 4260 576A 7647 5464 -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = 9577 - srcEnd = 95E5 - mappingOffset = 4066 - Mapping = - 3324 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4345 FFFD 6345 4941 FFFD FFFD 6346 - FFFD FFFD 3155 FFFD 3F2A 634A FFFD 6348 - 4872 FFFD 4F50 FFFD 3C64 6349 FFFD FFFD - FFFD 5522 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3A52 FFFD 3873 7839 3727 FFFD - FFFD 396B 4376 FFFD 634D 634F 634C FFFD - FFFD FFFD FFFD 5444 FFFD FFFD FFFD 6351 - FFFD FFFD 514B FFFD 5156 6355 6354 6350 - 6353 FFFD FFFD FFFD 6356 FFFD FFFD 7822 - FFFD 6347 FFFD 402B 6357 403B FFFD FFFD - FFFD 6359 FFFD FFFD FFFD 6358 635A 3433 - FFFD FFFD FFFD FFFD FFFD 3958 FFFD 635B - FFFD FFFD 327B 785B FFFD FFFD 634B -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = 961C - srcEnd = 97DE - mappingOffset = 40D5 - Mapping = - 3837 5A62 FFFD FFFD FFFD 5A64 5A63 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5A66 FFFD - FFFD FFFD 486E FFFD FFFD 5A65 3740 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5768 - 5A68 5A67 FFFD 3022 4D53 FFFD 5A69 FFFD - 383D FFFD FFFD FFFD FFFD FFFD FFFD 422A - 4430 3D35 FFFD FFFD 4F5E FFFD FFFD FFFD - 5A6B FFFD FFFD FFFD 5A6A FFFD FFFD 315D - FFFD 4942 FFFD 5A6C FFFD 3638 543A 5573 - 337D FFFD FFFD FFFD FFFD FFFD 4563 FFFD - 5A6E FFFD FFFD FFFD 5275 FFFD 5A6F 3342 - 5A70 416A 4C55 4F5D 423D FFFD FFFD FFFD - FFFD 5174 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5367 4221 FFFD 5A71 5A6D 3653 4B65 - FFFD 5A72 3D57 FFFD FFFD FFFD FFFD FFFD - 3874 5449 FFFD 5A73 302F 4F36 FFFD 3C4A - 554F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4B6D 4B66 FFFD 4F55 FFFD - FFFD FFFD FFFD FFFD 5A74 527E FFFD 6344 - 4224 FFFD FFFD FFFD 4125 763F FFFD 7922 - 7640 7641 FFFD FFFD 4838 5163 FFFD FFFD - 505B 5145 3C2F 394D FFFD 6F74 FFFD FFFD - 3446 533A 7642 FFFD FFFD FFFD 7643 FFFD - FFFD 3571 4B64 FFFD FFFD 4B2B FFFD 337B - 5453 FFFD FFFD FFFD FFFD FFFD 406B 4451 - FFFD FFFD FFFD FFFD 536A 7627 5129 FFFD - FFFD FFFD FFFD 7629 FFFD FFFD 5446 FFFD - FFFD FFFD 4163 4057 FFFD 3122 FFFD 3567 - FFFD FFFD FFFD FFFD 5068 FFFD FFFD FFFD - 4F76 FFFD 762A 5570 762C 4339 FFFD FFFD - FFFD 3B74 762E 762D FFFD FFFD FFFD 445E - FFFD FFFD 4158 FFFD FFFD FFFD FFFD FFFD - 4B2A FFFD 4F3C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4E6D FFFD FFFD 762F FFFD - FFFD FFFD FFFD FFFD 7631 FFFD 4236 FFFD - FFFD FFFD FFFD FFFD 3054 4579 FFFD FFFD - FFFD 762B 7632 FFFD FFFD FFFD 7628 FFFD - 7630 FFFD FFFD FFFD 4169 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4760 FFFD - FFFD FFFD 3E38 FFFD FFFD FFFD 7626 3565 - 3E32 FFFD 3747 FFFD 3F3F 4352 4366 FFFD - FFFD FFFD FFFD FFFD 584C 386F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3D79 - 5125 FFFD 3050 FFFD FFFD FFFD FFFD FFFD - 7730 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7731 FFFD FFFD FFFD FFFD FFFD 502C - FFFD 3030 FFFD 392E FFFD FFFD FFFD FFFD - 7734 FFFD FFFD FFFD 474A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3E4F FFFD FFFD 7737 - FFFD FFFD 7864 FFFD FFFD FFFD FFFD 7736 - FFFD 315E FFFD FFFD FFFD FFFD 7738 FFFD - 7739 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7733 FFFD FFFD FFFD FFFD FFFD 7732 - FFFD FFFD 7861 FFFD FFFD 7735 FFFD 4E24 - 484D FFFD FFFD FFFD FFFD FFFD FFFD 3A2B - FFFD FFFD FFFD FFFD FFFD 6838 FFFD FFFD - 683A FFFD 6839 -End of Item 0096 - -Begin of Item 0097 - Format 1 - srcBegin = 97ED - srcEnd = 9874 - mappingOffset = 4298 - Mapping = - 3E42 FFFD FFFD FFFD FFFD FFFD 5274 FFFD - 544F 4958 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4F6C FFFD 5233 3625 476A FFFD - 4F6E 4B33 717C 506B FFFD 676F FFFD 4B4C - FFFD 717D 717E 5424 4D67 3064 3659 FFFD - FFFD FFFD 4644 416C FFFD FFFD FFFD 7222 - FFFD FFFD FFFD FFFD 7221 FFFD FFFD 5243 - FFFD 7224 FFFD FFFD FFFD FFFD FFFD FFFD - 4D37 FFFD FFFD 3C55 FFFD FFFD FFFD FFFD - FFFD FFFD 7225 3E31 FFFD FFFD 4635 FFFD - 4D47 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3F45 FFFD FFFD FFFD FFFD FFFD 4C62 - 366E 7226 FFFD FFFD FFFD FFFD 7227 5155 - FFFD FFFD FFFD 5438 722A FFFD 355F FFFD - FFFD 4060 FFFD FFFD FFFD 7229 FFFD FFFD - 722B FFFD 394B FFFD FFFD FFFD 327C 722C - FFFD FFFD 4F54 722D 422D FFFD 7228 4827 -End of Item 0097 - -Begin of Item 0098 - Format 1 - srcBegin = 98A8 - srcEnd = 98C8 - mappingOffset = 4320 - Mapping = - 3767 FFFD FFFD FFFD FFFD FFFD 6C29 6C2A - FFFD 786C FFFD 7837 FFFD FFFD 6C2B FFFD - FFFD FFFD FFFD FFFD 6C2C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 462E FFFD 6C2D FFFD - 6C2E -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = 98DB - srcEnd = 9962 - mappingOffset = 4341 - Mapping = - 3749 FFFD FFFD FFFD 4A33 623B FFFD 783F - FFFD FFFD FFFD FFFD 6238 FFFD 623D 623F - 6240 FFFD 6241 FFFD 3739 FFFD FFFD 527B - FFFD 6242 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4B47 3125 4A4E FFFD FFFD FFFD FFFD - 3D48 FFFD 317D FFFD FFFD FFFD 6243 5178 - FFFD 367C FFFD FFFD FFFD 324D 6244 4459 - 3676 FFFD FFFD FFFD FFFD 5360 FFFD FFFD - 6246 FFFD FFFD 3D24 FFFD FFFD 4F5A FFFD - FFFD FFFD FFFD FFFD FFFD 395D FFFD FFFD - FFFD FFFD FFFD 7751 FFFD FFFD FFFD FFFD - 623C FFFD FFFD FFFD 6247 FFFD FFFD FFFD - FFFD 623E FFFD 4173 6248 FFFD FFFD FFFD - 6249 FFFD 4278 FFFD FFFD 624A 624B 624C - 4021 624D FFFD FFFD FFFD FFFD 3C22 4844 - FFFD 7753 7752 FFFD 774F FFFD FFFD FFFD - FFFD 7750 FFFD 3276 FFFD FFFD FFFD 624E -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = 9996 - srcEnd = 9999 - mappingOffset = 43C9 - Mapping = - 4A57 5838 5965 4F63 -End of Item 009A - -Begin of Item 009B - Format 1 - srcBegin = 99A5 - srcEnd = 99B4 - mappingOffset = 43CD - Mapping = - 7025 FFFD FFFD 5C30 FFFD FFFD FFFD 426D - 5426 376B FFFD FFFD 4D54 FFFD 335B 5131 -End of Item 009B - -Begin of Item 009C - Format 2 - srcBegin = 99C1 - destBegin = 3235 -End of Item 009C - -Begin of Item 009D - Format 1 - srcBegin = 99D0 - srcEnd = 99F1 - mappingOffset = 43DD - Mapping = - 5724 6665 3E54 FFFD 6660 3C5D FFFD FFFD - 6666 6662 FFFD 4A3B FFFD 4D55 FFFD 6661 - FFFD 426E 6669 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3A27 FFFD FFFD - FFFD 4266 -End of Item 009D - -Begin of Item 009E - Format 1 - srcBegin = 99FF - srcEnd = 9A19 - mappingOffset = 43FF - Mapping = - 3F25 FFFD 3352 FFFD FFFD FFFD 666D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 666C 466F - 666B FFFD FFFD FFFD FFFD FFFD FFFD 6670 - FFFD FFFD 462D -End of Item 009E - -Begin of Item 009F - Format 1 - srcBegin = 9A2B - srcEnd = 9A6A - mappingOffset = 441A - Mapping = - 6539 FFFD 666F 6672 FFFD 4C5A FFFD FFFD - FFFD FFFD FFFD 6663 4927 6673 FFFD FFFD - FFFD FFFD FFFD 4262 FFFD 5D6B 6671 666E - 6674 6675 477D FFFD FFFD FFFD FFFD 6668 - FFFD FFFD 6667 FFFD 6676 FFFD FFFD FFFD - FFFD FFFD 3D3E FFFD 5169 FFFD FFFD 3E2A - 6664 FFFD FFFD FFFD 5668 FFFD FFFD 423F - FFFD 6678 6677 FFFD FFFD FFFD FFFD 666A -End of Item 009F - -Begin of Item 00A0 - Format 1 - srcBegin = 9AA8 - srcEnd = 9AC2 - mappingOffset = 445A - Mapping = - 3947 FFFD FFFD FFFD FFFD FFFD FFFD 3039 - 773B 773A FFFD FFFD FFFD FFFD 773E 773C - 3A21 FFFD 773F FFFD 7740 FFFD FFFD FFFD - 7742 7741 7744 -End of Item 00A0 - -Begin of Item 00A1 - Format 1 - srcBegin = 9ACF - srcEnd = 9B5A - mappingOffset = 4475 - Mapping = - 7743 FFFD 7747 787E 4B68 4C65 7746 7745 - FFFD 385F FFFD FFFD FFFD FFFD FFFD FFFD - 7754 FFFD 7755 FFFD FFFD FFFD FFFD 7756 - FFFD FFFD FFFD FFFD 7758 FFFD 775A 7831 - 7757 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 775B FFFD 7759 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5757 FFFD FFFD 4B49 - FFFD 775C FFFD FFFD FFFD FFFD 783A FFFD - 775D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7876 FFFD FFFD FFFD FFFD - 775F FFFD FFFD 775E 7760 FFFD 3637 FFFD - 4456 FFFD 6352 FFFD FFFD FFFD FFFD 634E - 5B4B FFFD 5374 582A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6577 396D FFFD FFFD - FFFD FFFD 3F7D 3B6A 7749 4647 7748 FFFD - FFFD 774C FFFD FFFD FFFD FFFD 774D 774B - 4E3A FFFD 774E FFFD FFFD 4427 FFFD FFFD - FFFD 774A FFFD 5363 -End of Item 00A1 - -Begin of Item 00A2 - Format 1 - srcBegin = 9B6F - srcEnd = 9B9E - mappingOffset = 4501 - Mapping = - 4233 FFFD FFFD FFFD FFFD 7650 FFFD FFFD - 764F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7651 FFFD 7652 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7653 - FFFD 7658 312B 7656 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 765A FFFD FFFD 765F 765C -End of Item 00A2 - -Begin of Item 00A3 - Format 1 - srcBegin = 9BAA - srcEnd = 9BAE - mappingOffset = 4531 - Mapping = - 765B 765E FFFD 7659 4F4A -End of Item 00A3 - -Begin of Item 00A4 - Format 1 - srcBegin = 9BC0 - srcEnd = 9C13 - mappingOffset = 4536 - Mapping = - 7667 7661 FFFD FFFD FFFD FFFD FFFD 7669 - FFFD 4070 7668 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7676 FFFD 766B FFFD - FFFD FFFD FFFD 7674 FFFD 7671 FFFD FFFD - FFFD 766E 7672 FFFD 766F FFFD FFFD 7670 - 3E28 FFFD 766C 766D FFFD FFFD FFFD FFFD - 7673 FFFD FFFD FFFD 7675 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 766A FFFD 767D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7678 767C FFFD FFFD FFFD 767A FFFD FFFD - 7679 FFFD 767B 487A -End of Item 00A4 - -Begin of Item 00A5 - Format 1 - srcBegin = 9C20 - srcEnd = 9C7A - mappingOffset = 458A - Mapping = - 767E FFFD FFFD 7665 FFFD 7724 FFFD FFFD - 7723 7725 FFFD FFFD FFFD 7722 FFFD FFFD - FFFD 7663 7721 7726 FFFD 772A FFFD 7666 - FFFD 7664 FFFD 7729 FFFD FFFD 7727 FFFD - FFFD FFFD FFFD FFFD FFFD 772B FFFD FFFD - 7728 316E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 772E FFFD 772D FFFD 772C 415B - 7660 FFFD FFFD FFFD FFFD 7677 FFFD 7657 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 772F - FFFD FFFD FFFD FFFD FFFD 765D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7654 FFFD 7662 -End of Item 00A5 - -Begin of Item 00A6 - Format 1 - srcBegin = 9CE5 - srcEnd = 9CF6 - mappingOffset = 45E5 - Mapping = - 4471 FFFD FFFD FFFD 702F FFFD FFFD 596C - FFFD FFFD FFFD FFFD FFFD FFFD 376F 4379 - FFFD 7030 -End of Item 00A6 - -Begin of Item 00A7 - Format 1 - srcBegin = 9D06 - srcEnd = 9D09 - mappingOffset = 45F7 - Mapping = - 7032 7031 FFFD 513B -End of Item 00A7 - -Begin of Item 00A8 - Format 1 - srcBegin = 9D15 - srcEnd = 9D42 - mappingOffset = 45FB - Mapping = - 4D52 FFFD FFFD FFFD FFFD FFFD 5427 FFFD - 7036 FFFD 7037 FFFD FFFD FFFD 7033 FFFD - FFFD 516C FFFD 513C FFFD FFFD FFFD FFFD - FFFD FFFD 7039 703B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3A68 FFFD - FFFD FFFD 386B FFFD FFFD 703C -End of Item 00A8 - -Begin of Item 00A9 - Format 1 - srcBegin = 9D51 - srcEnd = 9D72 - mappingOffset = 4629 - Mapping = - 3E69 7041 703E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7043 366C FFFD FFFD 7040 - 7044 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7046 FFFD 4574 FFFD FFFD 7047 FFFD - FFFD 4835 -End of Item 00A9 - -Begin of Item 00AA - Format 1 - srcBegin = 9D87 - srcEnd = 9DC4 - mappingOffset = 464B - Mapping = - 7034 FFFD 7048 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7045 FFFD FFFD FFFD - FFFD 7049 FFFD 704A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 704C FFFD - FFFD FFFD 704D FFFD FFFD FFFD FFFD FFFD - 5D3A FFFD FFFD FFFD FFFD 3A57 FFFD FFFD - FFFD FFFD FFFD FFFD 773D 704F FFFD FFFD - FFFD 704B FFFD 704E FFFD 3C26 -End of Item 00AA - -Begin of Item 00AB - Format 1 - srcBegin = 9DD3 - srcEnd = 9DFA - mappingOffset = 4689 - Mapping = - 7051 FFFD FFFD FFFD 4538 FFFD 703A 7052 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7038 7054 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7053 FFFD FFFD 7055 - 7042 FFFD FFFD FFFD FFFD 7056 5325 7058 -End of Item 00AB - -Begin of Item 00AC - Format 1 - srcBegin = 9E0C - srcEnd = 9E1E - mappingOffset = 46B1 - Mapping = - 7057 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7035 FFFD FFFD FFFD FFFD 7050 7059 - FFFD 703F 703D -End of Item 00AC - -Begin of Item 00AD - Format 1 - srcBegin = 9E75 - srcEnd = 9F77 - mappingOffset = 46C4 - Mapping = - 7852 FFFD FFFD FFFD 7874 753A FFFD 3C6F - 514E FFFD 4239 FFFD FFFD 7764 FFFD FFFD - FFFD FFFD 7765 7766 FFFD FFFD 7767 FFFD - FFFD FFFD FFFD FFFD FFFD 7768 4234 FFFD - FFFD FFFD 4076 FFFD FFFD FFFD FFFD FFFD - 776A FFFD 776B FFFD FFFD FFFD FFFD FFFD - 4273 FFFD FFFD FFFD 746F FFFD FFFD FFFD - FFFD FFFD 7865 FFFD FFFD FFFD FFFD 7470 - 7859 FFFD FFFD FFFD FFFD FFFD 4269 FFFD - 4334 7762 FFFD FFFD FFFD FFFD FFFD 3B46 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5964 - 4A72 4068 7024 FFFD 3A5A FFFD FFFD 472D - FFFD FFFD FFFD 442C FFFD FFFD 776C 776D - 776E 3563 7770 776F FFFD 7771 FFFD FFFD - 7774 FFFD 7773 3533 FFFD FFFD FFFD FFFD - FFFD FFFD 7776 FFFD FFFD 7775 FFFD 7854 - FFFD FFFD 7772 FFFD 6D69 FFFD 6D6A 6D6B - 763C FFFD 763D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 763E FFFD FFFD FFFD - FFFD 3626 FFFD 583E FFFD FFFD 3944 FFFD - 782E FFFD 583B FFFD 5C31 FFFD FFFD FFFD - FFFD FFFD FFFD 4A73 FFFD 7777 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7778 - FFFD FFFD 7779 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 777B FFFD 777A FFFD 3147 FFFD - 777C 777D FFFD FFFD FFFD FFFD FFFD 777E - FFFD FFFD FFFD FFFD FFFD 466B 552B FFFD - FFFD FFFD 6C34 FFFD FFFD 335D FFFD 7633 - FFFD FFFD FFFD FFFD 7635 FFFD FFFD 7637 - FFFD FFFD 7634 7636 4164 FFFD 782A FFFD - FFFD 7638 FFFD FFFD FFFD 763A FFFD 7639 - FFFD FFFD FFFD FFFD FFFD 4823 FFFD FFFD - FFFD FFFD 763B -End of Item 00AD - -Begin of Item 00AE - Format 1 - srcBegin = 9F8D - srcEnd = 9FA0 - mappingOffset = 47C7 - Mapping = - 417A FFFD FFFD 4553 FFFD FFFD FFFD 3928 - 6D68 FFFD FFFD FFFD FFFD FFFD FFFD 396A - FFFD FFFD FFFD 595F -End of Item 00AE - -Begin of Item 00AF - Format 1 - srcBegin = FF01 - srcEnd = FF04 - mappingOffset = 47DB - Mapping = - 2321 2322 2323 2167 -End of Item 00AF - -Begin of Item 00B0 - Format 2 - srcBegin = FF5E - destBegin = 212B -End of Item 00B0 - -Begin of Item 00B1 - Format 1 - srcBegin = FFE0 - srcEnd = FFE5 - mappingOffset = 47DF - Mapping = - 2169 216A FFFD 237E FFFD 2324 -End of Item 00B1 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x00B2, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0031, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0247, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0013 */ -/* Total of Format 1 : 0x0091 */ -/* Total of Format 2 : 0x000E */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x2211, 0x2112, 0x2212, -0x2111, 0x1122, 0x1111, 0x1112, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1112, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1112, -0x1111, 0x1111, 0x1111, 0x1111, 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0031 Start of MapCell Array */ -/* 0000 */ 0x0391, 0x03A1, 0x2621, -/* 0001 */ 0x03A3, 0x03A9, 0x2632, -/* 0002 */ 0x03B1, 0x03C1, 0x2641, -/* 0003 */ 0x03C3, 0x03C9, 0x2652, -/* 0004 */ 0x0410, 0x0415, 0x2721, -/* 0005 */ 0x0416, 0x042F, 0x2728, -/* 0006 */ 0x0430, 0x0435, 0x2751, -/* 0007 */ 0x0436, 0x044F, 0x2758, -/* 0008 */ 0x2160, 0x216B, 0x2271, -/* 0009 */ 0x2460, 0x2469, 0x2259, -/* 000A */ 0x2474, 0x2487, 0x2245, -/* 000B */ 0x2488, 0x249B, 0x2231, -/* 000C */ 0x2500, 0x254B, 0x2924, -/* 000D */ 0x3008, 0x300F, 0x2134, -/* 000E */ 0x3041, 0x3093, 0x2421, -/* 000F */ 0x30A1, 0x30F6, 0x2521, -/* 0010 */ 0x3105, 0x3129, 0x2845, -/* 0011 */ 0x3220, 0x3229, 0x2265, -/* 0012 */ 0xFF05, 0xFF5D, 0x2325, -/* 0013 */ 0x00A4, 0x00B1, 0x0000, -/* 0014 */ 0x00D7, 0x0101, 0x000E, -/* 0015 */ 0x0113, 0x011B, 0x0039, -/* 0016 */ 0x012B, 0x0000, 0x2829, -/* 0017 */ 0x014D, 0x0000, 0x282D, -/* 0018 */ 0x016B, 0x0000, 0x2831, -/* 0019 */ 0x01CE, 0x01DC, 0x0042, -/* 001A */ 0x02C7, 0x02C9, 0x0051, -/* 001B */ 0x0401, 0x0000, 0x2727, -/* 001C */ 0x0451, 0x0000, 0x2757, -/* 001D */ 0x2015, 0x203B, 0x0054, -/* 001E */ 0x2103, 0x0000, 0x2166, -/* 001F */ 0x2116, 0x0000, 0x216D, -/* 0020 */ 0x2190, 0x2193, 0x007B, -/* 0021 */ 0x2208, 0x224C, 0x007F, -/* 0022 */ 0x2260, 0x226F, 0x00C4, -/* 0023 */ 0x2299, 0x0000, 0x2151, -/* 0024 */ 0x22A5, 0x0000, 0x214D, -/* 0025 */ 0x2312, 0x0000, 0x2150, -/* 0026 */ 0x25A0, 0x25A1, 0x00D4, -/* 0027 */ 0x25B2, 0x25B3, 0x00D6, -/* 0028 */ 0x25C6, 0x25CF, 0x00D8, -/* 0029 */ 0x2605, 0x2606, 0x00E2, -/* 002A */ 0x2640, 0x2642, 0x00E4, -/* 002B */ 0x3000, 0x3017, 0x00E7, -/* 002C */ 0x30FB, 0x0000, 0x2124, -/* 002D */ 0x4E00, 0x4F22, 0x00FF, -/* 002E */ 0x4F2F, 0x502E, 0x0222, -/* 002F */ 0x503C, 0x51E1, 0x0322, -/* 0030 */ 0x51ED, 0x52AD, 0x04C8, -/* 0031 */ 0x52BE, 0x52E4, 0x0589, -/* 0032 */ 0x52F0, 0x5384, 0x05B0, -/* 0033 */ 0x5398, 0x5454, 0x0645, -/* 0034 */ 0x5462, 0x5514, 0x0702, -/* 0035 */ 0x5523, 0x5699, 0x07B5, -/* 0036 */ 0x56A6, 0x5751, 0x092C, -/* 0037 */ 0x5761, 0x5835, 0x09D8, -/* 0038 */ 0x5844, 0x5902, 0x0AAD, -/* 0039 */ 0x590F, 0x59EC, 0x0B6C, -/* 003A */ 0x59F9, 0x5A7F, 0x0C4A, -/* 003B */ 0x5A92, 0x5A9B, 0x0CD1, -/* 003C */ 0x5AA7, 0x5B40, 0x0CDB, -/* 003D */ 0x5B4C, 0x5C7A, 0x0D75, -/* 003E */ 0x5C88, 0x5CD9, 0x0EA4, -/* 003F */ 0x5CE8, 0x5D5B, 0x0EF6, -/* 0040 */ 0x5D69, 0x5D74, 0x0F6A, -/* 0041 */ 0x5D81, 0x5D87, 0x0F76, -/* 0042 */ 0x5D97, 0x5DA7, 0x0F7D, -/* 0043 */ 0x5DB7, 0x5DBC, 0x0F8E, -/* 0044 */ 0x5DCB, 0x6035, 0x0F94, -/* 0045 */ 0x6041, 0x6070, 0x11FF, -/* 0046 */ 0x607F, 0x629B, 0x122F, -/* 0047 */ 0x62A8, 0x62DC, 0x144C, -/* 0048 */ 0x62EC, 0x6316, 0x1481, -/* 0049 */ 0x6328, 0x6355, 0x14AC, -/* 004A */ 0x6367, 0x63B0, 0x14DA, -/* 004B */ 0x63BE, 0x63F8, 0x1524, -/* 004C */ 0x640B, 0x66C9, 0x155F, -/* 004D */ 0x66D6, 0x679D, 0x181E, -/* 004E */ 0x67AF, 0x6805, 0x18E6, -/* 004F */ 0x6813, 0x6855, 0x193D, -/* 0050 */ 0x686B, 0x68B5, 0x1980, -/* 0051 */ 0x68C4, 0x6912, 0x19CB, -/* 0052 */ 0x6930, 0x69D4, 0x1A1A, -/* 0053 */ 0x69E7, 0x6A65, 0x1ABF, -/* 0054 */ 0x6A71, 0x0000, 0x3377, -/* 0055 */ 0x6A80, 0x6AC3, 0x1B3E, -/* 0056 */ 0x6AD3, 0x6B23, 0x1B82, -/* 0057 */ 0x6B32, 0x6BDB, 0x1BD3, -/* 0058 */ 0x6BEA, 0x6CF5, 0x1C7D, -/* 0059 */ 0x6D04, 0x6D41, 0x1D89, -/* 005A */ 0x6D59, 0x6D95, 0x1DC7, -/* 005B */ 0x6DAA, 0x6E0C, 0x1E04, -/* 005C */ 0x6E19, 0x6E5F, 0x1E67, -/* 005D */ 0x6E6B, 0x6E6F, 0x1EAE, -/* 005E */ 0x6E86, 0x6EDA, 0x1EB3, -/* 005F */ 0x6EEC, 0x6F41, 0x1F08, -/* 0060 */ 0x6F51, 0x6FC9, 0x1F5E, -/* 0061 */ 0x6FD5, 0x7099, 0x1FD7, -/* 0062 */ 0x70AB, 0x70FD, 0x209C, -/* 0063 */ 0x7109, 0x7136, 0x20EF, -/* 0064 */ 0x7145, 0x72B4, 0x211D, -/* 0065 */ 0x72C0, 0x73ED, 0x228D, -/* 0066 */ 0x73FE, 0x740A, 0x23BB, -/* 0067 */ 0x741A, 0x7490, 0x23C8, -/* 0068 */ 0x749C, 0x74BD, 0x243F, -/* 0069 */ 0x74CA, 0x770B, 0x2461, -/* 006A */ 0x7719, 0x776C, 0x26A3, -/* 006B */ 0x7779, 0x786F, 0x26F7, -/* 006C */ 0x787C, 0x796D, 0x27EE, -/* 006D */ 0x797A, 0x799A, 0x28E0, -/* 006E */ 0x79A6, 0x7A20, 0x2901, -/* 006F */ 0x7A2E, 0x7ACB, 0x297C, -/* 0070 */ 0x7AD9, 0x7B38, 0x2A1A, -/* 0071 */ 0x7B45, 0x7BCC, 0x2A7A, -/* 0072 */ 0x7BD9, 0x7C0F, 0x2B02, -/* 0073 */ 0x7C1E, 0x7C2B, 0x2B39, -/* 0074 */ 0x7C38, 0x7C4D, 0x2B47, -/* 0075 */ 0x7C5C, 0x7C7D, 0x2B5D, -/* 0076 */ 0x7C89, 0x7CA5, 0x2B7F, -/* 0077 */ 0x7CB1, 0x7D50, 0x2B9C, -/* 0078 */ 0x7D5D, 0x7DFB, 0x2C3C, -/* 0079 */ 0x7E08, 0x7E9C, 0x2CDB, -/* 007A */ 0x7F36, 0x805E, 0x2D70, -/* 007B */ 0x806F, 0x811E, 0x2E99, -/* 007C */ 0x812C, 0x831C, 0x2F49, -/* 007D */ 0x8328, 0x8354, 0x313A, -/* 007E */ 0x8377, 0x83B0, 0x3167, -/* 007F */ 0x83BD, 0x841C, 0x31A1, -/* 0080 */ 0x842C, 0x84A1, 0x3201, -/* 0081 */ 0x84AF, 0x84D6, 0x3277, -/* 0082 */ 0x84EC, 0x84F0, 0x329F, -/* 0083 */ 0x84FC, 0x84FF, 0x32A4, -/* 0084 */ 0x850C, 0x863F, 0x32A8, -/* 0085 */ 0x864D, 0x867C, 0x33DC, -/* 0086 */ 0x868A, 0x873F, 0x340C, -/* 0087 */ 0x874C, 0x8823, 0x34C2, -/* 0088 */ 0x8831, 0x8896, 0x359A, -/* 0089 */ 0x88A2, 0x8947, 0x3600, -/* 008A */ 0x8956, 0x89C0, 0x36A6, -/* 008B */ 0x89D2, 0x8B9E, 0x3711, -/* 008C */ 0x8C37, 0x8D1C, 0x38DE, -/* 008D */ 0x8D64, 0x8F64, 0x39C4, -/* 008E */ 0x8F9B, 0x8FB6, 0x3BC5, -/* 008F */ 0x8FC2, 0x8FD5, 0x3BE1, -/* 0090 */ 0x8FE2, 0x9179, 0x3BF5, -/* 0091 */ 0x9185, 0x91E9, 0x3D8D, -/* 0092 */ 0x91F5, 0x93E8, 0x3DF2, -/* 0093 */ 0x93F5, 0x9454, 0x3FE6, -/* 0094 */ 0x9460, 0x947F, 0x4046, -/* 0095 */ 0x9577, 0x95E5, 0x4066, -/* 0096 */ 0x961C, 0x97DE, 0x40D5, -/* 0097 */ 0x97ED, 0x9874, 0x4298, -/* 0098 */ 0x98A8, 0x98C8, 0x4320, -/* 0099 */ 0x98DB, 0x9962, 0x4341, -/* 009A */ 0x9996, 0x9999, 0x43C9, -/* 009B */ 0x99A5, 0x99B4, 0x43CD, -/* 009C */ 0x99C1, 0x0000, 0x3235, -/* 009D */ 0x99D0, 0x99F1, 0x43DD, -/* 009E */ 0x99FF, 0x9A19, 0x43FF, -/* 009F */ 0x9A2B, 0x9A6A, 0x441A, -/* 00A0 */ 0x9AA8, 0x9AC2, 0x445A, -/* 00A1 */ 0x9ACF, 0x9B5A, 0x4475, -/* 00A2 */ 0x9B6F, 0x9B9E, 0x4501, -/* 00A3 */ 0x9BAA, 0x9BAE, 0x4531, -/* 00A4 */ 0x9BC0, 0x9C13, 0x4536, -/* 00A5 */ 0x9C20, 0x9C7A, 0x458A, -/* 00A6 */ 0x9CE5, 0x9CF6, 0x45E5, -/* 00A7 */ 0x9D06, 0x9D09, 0x45F7, -/* 00A8 */ 0x9D15, 0x9D42, 0x45FB, -/* 00A9 */ 0x9D51, 0x9D72, 0x4629, -/* 00AA */ 0x9D87, 0x9DC4, 0x464B, -/* 00AB */ 0x9DD3, 0x9DFA, 0x4689, -/* 00AC */ 0x9E0C, 0x9E1E, 0x46B1, -/* 00AD */ 0x9E75, 0x9F77, 0x46C4, -/* 00AE */ 0x9F8D, 0x9FA0, 0x47C7, -/* 00AF */ 0xFF01, 0xFF04, 0x47DB, -/* 00B0 */ 0xFF5E, 0x0000, 0x212B, -/* 00B1 */ 0xFFE0, 0xFFE5, 0x47DF, -/*-------------------------------------------------------*/ -/* Offset=0x0247 Start of MappingTable */ - -/* 0000 */ 0x2168, 0xFFFD, 0xFFFD, 0x216C, 0x2127, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2163, 0x2140, 0x2141, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2824, -/* 0018 */ 0x2822, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2828, -/* 0020 */ 0x2826, 0x283A, 0xFFFD, 0x282C, 0x282A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0x2830, 0x282E, 0xFFFD, 0xFFFD, 0xFFFD, 0x2142, 0xFFFD, -/* 0030 */ 0x2834, 0x2832, 0xFFFD, 0x2839, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0x2821, 0x2825, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0xFFFD, 0x2827, 0x2823, 0xFFFD, 0x282B, 0xFFFD, 0x282F, 0xFFFD, -/* 0048 */ 0x2833, 0xFFFD, 0x2835, 0xFFFD, 0x2836, 0xFFFD, 0x2837, 0xFFFD, -/* 0050 */ 0x2838, 0x2126, 0xFFFD, 0x2125, 0x212A, 0xFFFD, 0xFFFD, 0x212E, -/* 0058 */ 0x212F, 0xFFFD, 0xFFFD, 0x2130, 0x2131, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x212D, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x216B, -/* 0070 */ 0xFFFD, 0x2164, 0x2165, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0x2179, 0x217B, 0x217C, 0x217A, 0x217D, 0x214A, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2147, 0xFFFD, -/* 0088 */ 0x2146, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0x214C, 0xFFFD, 0xFFFD, 0x2158, 0x215E, 0xFFFD, 0x214F, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x214E, 0xFFFD, 0x2144, 0x2145, -/* 00A0 */ 0x2149, 0x2148, 0x2152, 0xFFFD, 0xFFFD, 0x2153, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2160, 0x215F, 0x2143, 0x214B, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2157, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2156, -/* 00C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2155, 0x2159, 0x2154, 0xFFFD, 0xFFFD, -/* 00C8 */ 0x215C, 0x215D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0x215A, 0x215B, 0x2176, 0x2175, 0x2178, 0x2177, -/* 00D8 */ 0x2174, 0x2173, 0xFFFD, 0xFFFD, 0xFFFD, 0x2170, 0xFFFD, 0xFFFD, -/* 00E0 */ 0x2172, 0x2171, 0x216F, 0x216E, 0x2162, 0xFFFD, 0x2161, 0x2121, -/* 00E8 */ 0x2122, 0x2123, 0x2128, 0xFFFD, 0x2129, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x213E, -/* 00F8 */ 0x213F, 0xFFFD, 0x217E, 0x2132, 0x2133, 0x213C, 0x213D, 0x523B, -/* 0100 */ 0x3621, 0xFFFD, 0x465F, 0xFFFD, 0xFFFD, 0xFFFD, 0x7871, 0x5549, -/* 0108 */ 0x487D, 0x494F, 0x4F42, 0x5822, 0x323B, 0xFFFD, 0xFFFD, 0x5824, -/* 0110 */ 0x7829, 0xFFFD, 0xFFFD, 0x4752, 0x5827, 0x4A40, 0xFFFD, 0x4770, -/* 0118 */ 0x317B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5829, 0xFFFD, 0xFFFD, -/* 0120 */ 0xFFFD, 0x362A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x582D, -/* 0128 */ 0xFFFD, 0xFFFD, 0x513E, 0x635C, 0x5650, 0xFFFD, 0xFFFD, 0x7833, -/* 0130 */ 0xFFFD, 0x342E, 0xFFFD, 0xFFFD, 0xFFFD, 0x583C, 0xFFFD, 0x4D68, -/* 0138 */ 0x3524, 0xFFFD, 0x5677, 0xFFFD, 0xFFFD, 0xFFFD, 0x582F, 0xFFFD, -/* 0140 */ 0xFFFD, 0xFFFD, 0x444B, 0xFFFD, 0x3E43, 0xFFFD, 0x5831, 0x7761, -/* 0148 */ 0xFFFD, 0xFFFD, 0x562E, 0xFFFD, 0x5527, 0x3A75, 0x3726, 0xFFFD, -/* 0150 */ 0xFFFD, 0x4639, 0x4552, 0xFFFD, 0xFFFD, 0x3954, 0xFFFD, 0x334B, -/* 0158 */ 0x5252, 0xFFFD, 0xFFFD, 0x583F, 0x3E45, 0x4672, 0x5232, 0xFFFD, -/* 0160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0168 */ 0x5840, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0170 */ 0xFFFD, 0xFFFD, 0x4869, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x472C, 0xFFFD, 0xFFFD, -/* 0180 */ 0xFFFD, 0x4252, 0xFFFD, 0xFFFD, 0xFFFD, 0x414B, 0xFFFD, 0x5368, -/* 0188 */ 0xFFFD, 0xFFFD, 0x4A42, 0x367E, 0x5821, 0x535A, 0xFFFD, 0xFFFD, -/* 0190 */ 0x787D, 0x3B25, 0x5841, 0x4E65, 0x3E2E, 0xFFFD, 0xFFFD, 0x5828, -/* 0198 */ 0xFFFD, 0xFFFD, 0x5029, 0xFFFD, 0xFFFD, 0x5147, 0x583D, 0x596F, -/* 01A0 */ 0x4D76, 0x3F3A, 0xFFFD, 0x3D3B, 0x3A25, 0x5260, 0xFFFD, 0x3A60, -/* 01A8 */ 0xFFFD, 0xFFFD, 0x4F6D, 0x3E29, 0x4D24, 0x4141, 0xFFFD, 0xFFFD, -/* 01B0 */ 0xFFFD, 0xFFFD, 0x5971, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B8 */ 0xFFFD, 0x484B, 0x5869, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A32, -/* 01C0 */ 0x484A, 0x586C, 0x586A, 0x5846, 0xFFFD, 0x785F, 0x3370, 0xFFFD, -/* 01C8 */ 0x586B, 0x3D71, 0x3D69, 0xFFFD, 0x4854, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5750, 0x4A4B, 0x4B7B, 0x554C, 0x3836, -/* 01D8 */ 0x4F49, 0xFFFD, 0xFFFD, 0xFFFD, 0x595A, 0x5870, 0x472A, 0xFFFD, -/* 01E0 */ 0x586E, 0xFFFD, 0x347A, 0x416E, 0x5254, 0xFFFD, 0xFFFD, 0x586D, -/* 01E8 */ 0xFFFD, 0xFFFD, 0x586F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5176, -/* 01F0 */ 0xFFFD, 0x5659, 0x5872, 0xFFFD, 0x5875, 0x3C7E, 0x7842, 0xFFFD, -/* 01F8 */ 0xFFFD, 0xFFFD, 0x484E, 0xFFFD, 0x375D, 0xFFFD, 0x3742, 0xFFFD, -/* 0200 */ 0x4673, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0208 */ 0x5878, 0x5241, 0xFFFD, 0xFFFD, 0x4E69, 0x3C3F, 0x377C, 0x3725, -/* 0210 */ 0x505D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0218 */ 0x3B6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0220 */ 0xFFFD, 0x5873, 0x322E, 0x3940, 0xFFFD, 0x5923, 0xFFFD, 0x3069, -/* 0228 */ 0xFFFD, 0x4166, 0xFFFD, 0x496C, 0xFFFD, 0x4B45, 0xFFFD, 0x4B46, -/* 0230 */ 0x5924, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3568, 0xFFFD, -/* 0238 */ 0xFFFD, 0x352B, 0x5879, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0240 */ 0x4E3B, 0x354D, 0x5721, 0x5774, 0x5353, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0248 */ 0x3A4E, 0xFFFD, 0x5922, 0x595C, 0x6245, 0x587D, 0x3770, 0x5777, -/* 0250 */ 0x587E, 0x587A, 0x5921, 0x4463, 0xFFFD, 0xFFFD, 0xFFFD, 0x5874, -/* 0258 */ 0xFFFD, 0xFFFD, 0x587B, 0xFFFD, 0x4565, 0xFFFD, 0xFFFD, 0x4050, -/* 0260 */ 0xFFFD, 0xFFFD, 0x5170, 0x305B, 0xFFFD, 0xFFFD, 0x3C51, 0x5926, -/* 0268 */ 0xFFFD, 0x5925, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x592C, 0x592E, -/* 0270 */ 0xFFFD, 0x592B, 0x4A39, 0xFFFD, 0xFFFD, 0xFFFD, 0x5929, 0x5636, -/* 0278 */ 0xFFFD, 0x4034, 0xFFFD, 0x335E, 0x5928, 0xFFFD, 0x407D, 0xFFFD, -/* 0280 */ 0x4A4C, 0xFFFD, 0x592A, 0xFFFD, 0x5927, 0xFFFD, 0xFFFD, 0x5930, -/* 0288 */ 0xFFFD, 0x4258, 0x3631, 0xFFFD, 0xFFFD, 0xFFFD, 0x3929, 0xFFFD, -/* 0290 */ 0x5240, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4242, 0xFFFD, -/* 0298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02A0 */ 0xFFFD, 0x4E6A, 0x3A6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02A8 */ 0x4756, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02B0 */ 0xFFFD, 0xFFFD, 0x3163, 0xFFFD, 0xFFFD, 0x7872, 0x3459, 0x366D, -/* 02B8 */ 0x5934, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F21, 0xFFFD, 0xFFFD, -/* 02C0 */ 0xFFFD, 0x595E, 0x474E, 0x407E, 0x5938, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02C8 */ 0xFFFD, 0xFFFD, 0x4B57, 0x377D, 0xFFFD, 0x5935, 0xFFFD, 0x5937, -/* 02D0 */ 0x3123, 0x5361, 0x5939, 0x4F40, 0x5045, 0xFFFD, 0x5936, 0xFFFD, -/* 02D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02E0 */ 0xFFFD, 0x505E, 0x3829, 0xFFFD, 0x3E63, 0xFFFD, 0x593D, 0xFFFD, -/* 02E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x593A, 0xFFFD, 0x3033, 0xFFFD, 0xFFFD, -/* 02F0 */ 0xFFFD, 0x5942, 0xFFFD, 0x5876, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02F8 */ 0xFFFD, 0x4129, 0xFFFD, 0xFFFD, 0x3256, 0xFFFD, 0x3876, 0x5944, -/* 0300 */ 0x3136, 0xFFFD, 0x593F, 0xFFFD, 0x4347, 0x3539, 0xFFFD, 0x3E73, -/* 0308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C48, 0x3A72, 0x5250, 0xFFFD, 0x5943, -/* 0310 */ 0xFFFD, 0xFFFD, 0x3D68, 0xFFFD, 0x332B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0318 */ 0x5945, 0x3E6B, 0xFFFD, 0x5946, 0x593B, 0x445F, 0x4257, 0x593E, -/* 0320 */ 0x5941, 0x5940, 0x5635, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0328 */ 0xFFFD, 0x5948, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C59, 0x594A, 0x4E30, -/* 0330 */ 0xFFFD, 0xFFFD, 0x593C, 0xFFFD, 0x594B, 0x462B, 0xFFFD, 0xFFFD, -/* 0338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5949, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0340 */ 0x5776, 0xFFFD, 0x4D23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0350 */ 0xFFFD, 0xFFFD, 0x594C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0358 */ 0xFFFD, 0xFFFD, 0x3260, 0x556C, 0x453C, 0x4D35, 0xFFFD, 0xFFFD, -/* 0360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F7E, 0xFFFD, -/* 0368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3835, 0xFFFD, 0xFFFD, 0x407C, 0xFFFD, -/* 0370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3078, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5877, 0xFFFD, 0x4921, 0x3138, -/* 0380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0388 */ 0x7841, 0x3476, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0390 */ 0xFFFD, 0xFFFD, 0x345F, 0x5336, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0398 */ 0x3041, 0x342B, 0x5871, 0x552E, 0xFFFD, 0x494B, 0xFFFD, 0xFFFD, -/* 03A0 */ 0x5951, 0x4935, 0xFFFD, 0xFFFD, 0x4763, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03A8 */ 0x594D, 0xFFFD, 0xFFFD, 0x3D76, 0xFFFD, 0xFFFD, 0xFFFD, 0x595D, -/* 03B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F71, 0xFFFD, 0x4748, -/* 03B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x464D, 0x5952, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03C0 */ 0x4145, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E31, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D44, 0x5956, 0x492E, 0x5947, 0xFFFD, -/* 03D0 */ 0xFFFD, 0xFFFD, 0x5955, 0x5954, 0x5957, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03D8 */ 0xFFFD, 0x4B5B, 0xFFFD, 0x3D29, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C5B, -/* 03E0 */ 0xFFFD, 0x4627, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5247, 0xFFFD, -/* 03E8 */ 0x592F, 0xFFFD, 0x525A, 0xFFFD, 0x5953, 0x5958, 0x3F6B, 0x3C73, -/* 03F0 */ 0xFFFD, 0x5959, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x594F, 0xFFFD, -/* 03F8 */ 0x4865, 0xFFFD, 0x5931, 0x592D, 0xFFFD, 0xFFFD, 0x7845, 0xFFFD, -/* 0400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3325, 0xFFFD, 0x405C, -/* 0408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0410 */ 0x5345, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0418 */ 0x3422, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5933, 0xFFFD, 0xFFFD, -/* 0420 */ 0x5950, 0x594E, 0x5932, 0xFFFD, 0xFFFD, 0xFFFD, 0x5823, 0x544A, -/* 0428 */ 0xFFFD, 0x542A, 0x5056, 0x3364, 0x5557, 0xFFFD, 0x4F48, 0x3962, -/* 0430 */ 0xFFFD, 0x3F4B, 0xFFFD, 0x4362, 0xFFFD, 0xFFFD, 0xFFFD, 0x3652, -/* 0438 */ 0x3679, 0xFFFD, 0x4D43, 0x596E, 0x5970, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0440 */ 0x782C, 0xFFFD, 0x3635, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0448 */ 0x3E24, 0xFFFD, 0xFFFD, 0x486B, 0xFFFD, 0xFFFD, 0x482B, 0x413D, -/* 0450 */ 0xFFFD, 0x304B, 0x392B, 0x4179, 0x5962, 0xFFFD, 0xFFFD, 0x3932, -/* 0458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3178, 0x4664, 0x3E5F, 0x3564, 0x5748, -/* 0460 */ 0xFFFD, 0xFFFD, 0x3C66, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C3D, 0xFFFD, -/* 0468 */ 0x5867, 0xFFFD, 0xFFFD, 0x445A, 0xFFFD, 0xFFFD, 0xFFFD, 0x483D, -/* 0470 */ 0xFFFD, 0xFFFD, 0x3261, 0x5459, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0478 */ 0x4330, 0xFFFD, 0xFFFD, 0x4361, 0x5A22, 0x485F, 0xFFFD, 0xFFFD, -/* 0480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x395A, 0xFFFD, -/* 0488 */ 0x5A23, 0xFFFD, 0x5429, 0x5A24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0490 */ 0xFFFD, 0x597B, 0x362C, 0xFFFD, 0xFFFD, 0xFFFD, 0x3179, 0x597C, -/* 0498 */ 0x7828, 0x3E76, 0xFFFD, 0x3F76, 0x5231, 0x4064, 0xFFFD, 0xFFFD, -/* 04A0 */ 0xFFFD, 0xFFFD, 0x597E, 0x597D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04A8 */ 0xFFFD, 0xFFFD, 0x4660, 0xFFFD, 0x7929, 0x5A21, 0x3E3B, 0x4139, -/* 04B0 */ 0xFFFD, 0x3572, 0x4168, 0x3633, 0xFFFD, 0x3C75, 0xFFFD, 0x3455, -/* 04B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04C0 */ 0xFFFD, 0x415D, 0xFFFD, 0x447D, 0xFFFD, 0xFFFD, 0x7840, 0x3732, -/* 04C8 */ 0x785D, 0xFFFD, 0xFFFD, 0x3B4B, 0x3F2D, 0xFFFD, 0x354A, 0xFFFD, -/* 04D0 */ 0x5B49, 0x5057, 0xFFFD, 0x4D39, 0x303C, 0x3376, 0xFFFD, 0x5B4A, -/* 04D8 */ 0x3A2F, 0xFFFD, 0xFFFD, 0x3536, 0x3573, 0x5856, 0x4850, 0xFFFD, -/* 04E0 */ 0xFFFD, 0x3756, 0x4750, 0x5857, 0xFFFD, 0x3F2F, 0xFFFD, 0xFFFD, -/* 04E8 */ 0xFFFD, 0x5858, 0xFFFD, 0xFFFD, 0x504C, 0x783B, 0xFFFD, 0xFFFD, -/* 04F0 */ 0xFFFD, 0x6B3E, 0x4150, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04F8 */ 0x3375, 0xFFFD, 0xFFFD, 0x493E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4550, -/* 0500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4559, 0x407B, 0xFFFD, 0x3170, 0xFFFD, -/* 0508 */ 0xFFFD, 0x394E, 0xFFFD, 0x353D, 0xFFFD, 0xFFFD, 0x585A, 0xFFFD, -/* 0510 */ 0xFFFD, 0x5646, 0x4B22, 0x482F, 0x4932, 0x344C, 0x3F4C, 0xFFFD, -/* 0518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3667, 0xFFFD, 0x4C6A, 0x5859, -/* 0520 */ 0xFFFD, 0xFFFD, 0x5472, 0xFFFD, 0xFFFD, 0x4F77, 0x7848, 0x585D, -/* 0528 */ 0x4730, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C5E, -/* 0530 */ 0xFFFD, 0x464A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3855, 0x5860, -/* 0538 */ 0xFFFD, 0x585E, 0xFFFD, 0xFFFD, 0x585F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0540 */ 0x307E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A23, 0x3C74, 0xFFFD, 0xFFFD, -/* 0548 */ 0xFFFD, 0x3950, 0x3831, 0xFFFD, 0xFFFD, 0x386E, 0xFFFD, 0x585C, -/* 0550 */ 0x3434, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0558 */ 0x5862, 0xFFFD, 0x3D4B, 0xFFFD, 0x5864, 0x5863, 0x3B2E, 0xFFFD, -/* 0560 */ 0xFFFD, 0xFFFD, 0x3E67, 0x457C, 0x4175, 0x3974, 0xFFFD, 0x585B, -/* 0568 */ 0x3D23, 0xFFFD, 0xFFFD, 0x5865, 0x3C41, 0xFFFD, 0x5866, 0xFFFD, -/* 0570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4126, 0xFFFD, -/* 0578 */ 0xFFFD, 0xFFFD, 0x3926, 0x3C53, 0xFFFD, 0xFFFD, 0x4153, 0xFFFD, -/* 0580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x567A, 0x452C, 0x3D59, 0x5B3E, -/* 0588 */ 0x5B3F, 0x5B40, 0xFFFD, 0xFFFD, 0x3E22, 0xFFFD, 0x322A, 0xFFFD, -/* 0590 */ 0xFFFD, 0xFFFD, 0x5342, 0xFFFD, 0x4363, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0598 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B42, 0xFFFD, 0x4055, 0xFFFD, 0xFFFD, -/* 05A0 */ 0x362F, 0x5B43, 0xFFFD, 0x3F31, 0x4E71, 0xFFFD, 0x512B, 0xFFFD, -/* 05A8 */ 0x4A24, 0x404D, 0x443C, 0xFFFD, 0xFFFD, 0x4A46, 0xFFFD, 0x475A, -/* 05B0 */ 0x5B44, 0x5B3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4078, 0xFFFD, 0xFFFD, -/* 05B8 */ 0x4830, 0x5968, 0x4957, 0xFFFD, 0xFFFD, 0xFFFD, 0x3934, 0x4E70, -/* 05C0 */ 0x5448, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x307C, 0x3452, 0xFFFD, -/* 05C8 */ 0x5059, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5969, 0xFFFD, 0x5E4B, -/* 05D0 */ 0x596B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5830, 0x3B2F, 0x3131, -/* 05D8 */ 0xFFFD, 0x3357, 0x584E, 0xFFFD, 0xFFFD, 0x5451, 0xFFFD, 0xFFFD, -/* 05E0 */ 0x3D33, 0x3F6F, 0xFFFD, 0x4F3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05E8 */ 0xFFFD, 0xFFFD, 0x374B, 0xFFFD, 0xFFFD, 0x5850, 0xFFFD, 0x3B63, -/* 05F0 */ 0xFFFD, 0x5851, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05F8 */ 0xFFFD, 0x4625, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5852, 0x4464, -/* 0600 */ 0x4778, 0x4A2E, 0xFFFD, 0x4727, 0xFFFD, 0x5826, 0xFFFD, 0x497D, -/* 0608 */ 0x4E67, 0x3B5C, 0x306B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0610 */ 0xFFFD, 0x3130, 0x5764, 0x573F, 0x502D, 0xFFFD, 0xFFFD, 0x444F, -/* 0618 */ 0xFFFD, 0xFFFD, 0x3229, 0xFFFD, 0x3237, 0xFFFD, 0x3165, 0x5F32, -/* 0620 */ 0x553C, 0x3F28, 0xFFFD, 0x5855, 0xFFFD, 0xFFFD, 0x5854, 0x4E54, -/* 0628 */ 0xFFFD, 0x5A60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5834, 0x432E, -/* 0630 */ 0x5321, 0x4E23, 0xFFFD, 0x3C34, 0x4834, 0x4251, 0xFFFD, 0x3E6D, -/* 0638 */ 0x5036, 0xFFFD, 0x5A61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4764, -/* 0640 */ 0xFFFD, 0xFFFD, 0x7827, 0xFFFD, 0x3672, 0x4065, 0x5847, 0x3A71, -/* 0648 */ 0xFFFD, 0xFFFD, 0x5848, 0xFFFD, 0x542D, 0x325E, 0xFFFD, 0x4F61, -/* 0650 */ 0xFFFD, 0xFFFD, 0x584A, 0x4F43, 0xFFFD, 0x3378, 0x3E47, 0xFFFD, -/* 0658 */ 0xFFFD, 0xFFFD, 0x5161, 0x584B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4077, -/* 0660 */ 0xFFFD, 0x5849, 0xFFFD, 0x5B4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0668 */ 0x4825, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x487E, 0xFFFD, -/* 0670 */ 0x324E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5356, 0x3266, 0x3C30, -/* 0678 */ 0x5351, 0xFFFD, 0x3734, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0680 */ 0xFFFD, 0x4A65, 0xFFFD, 0x4821, 0x4A5C, 0xFFFD, 0x5070, 0xFFFD, -/* 0688 */ 0x4551, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B45, 0xFFFD, 0xFFFD, 0x3454, -/* 0690 */ 0x3F5A, 0x3945, 0x3E64, 0x416D, 0xFFFD, 0x5F36, 0x5F35, 0x7923, -/* 0698 */ 0x3D50, 0x5559, 0x3048, 0x3623, 0x3F49, 0x786B, 0x5F33, 0x4A37, -/* 06A0 */ 0x5352, 0xFFFD, 0x584F, 0x7878, 0xFFFD, 0x4B3E, 0xFFFD, 0xFFFD, -/* 06A8 */ 0x5F37, 0x3570, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5375, 0xFFFD, -/* 06B0 */ 0x3354, 0x3877, 0xFFFD, 0x5F3A, 0xFFFD, 0x3A4F, 0x3C2A, 0x3575, -/* 06B8 */ 0xFFFD, 0x4D2C, 0x437B, 0x6161, 0x4074, 0x4D42, 0x4F72, 0x5F38, -/* 06C0 */ 0xFFFD, 0xFFFD, 0x4240, 0x5F39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06C8 */ 0x3E7D, 0xFFFD, 0x415F, 0x4D4C, 0x5277, 0x374D, 0x5F41, 0xFFFD, -/* 06D0 */ 0x5F44, 0xFFFD, 0xFFFD, 0x3771, 0x3049, 0xFFFD, 0x3754, 0xFFFD, -/* 06D8 */ 0x3A2C, 0xFFFD, 0x3F54, 0x4B31, 0xFFFD, 0xFFFD, 0x5628, 0x5F45, -/* 06E0 */ 0xFFFD, 0x4E62, 0x3333, 0xFFFD, 0xFFFD, 0x4E7C, 0x3435, 0xFFFD, -/* 06E8 */ 0x4E47, 0x3A70, 0xFFFD, 0x4E61, 0xFFFD, 0x513D, 0xFFFD, 0xFFFD, -/* 06F0 */ 0x5F40, 0xFFFD, 0xFFFD, 0x3474, 0xFFFD, 0x334A, 0xFFFD, 0x3866, -/* 06F8 */ 0x5F3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4445, 0xFFFD, 0xFFFD, -/* 0700 */ 0xFFFD, 0x5F3E, 0x4458, 0xFFFD, 0x5F4A, 0xFFFD, 0x5F4F, 0xFFFD, -/* 0708 */ 0x565C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0710 */ 0xFFFD, 0x5F49, 0x5F5A, 0x4E36, 0xFFFD, 0x3A47, 0x5F4E, 0x5F48, -/* 0718 */ 0x455E, 0xFFFD, 0xFFFD, 0x496B, 0x3A74, 0x437C, 0xFFFD, 0xFFFD, -/* 0720 */ 0x3E57, 0xFFFD, 0x5F46, 0xFFFD, 0x5F4D, 0xFFFD, 0x4558, 0xFFFD, -/* 0728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5526, 0x3A4D, 0xFFFD, 0x3E4C, 0x533D, -/* 0730 */ 0x3840, 0xFFFD, 0x5664, 0xFFFD, 0x5F47, 0x393E, 0x3F27, 0xFFFD, -/* 0738 */ 0xFFFD, 0xFFFD, 0x5F4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F5B, 0x5F65, 0xFFFD, 0x5F57, 0x5F56, -/* 0748 */ 0x5749, 0x5F63, 0x5F64, 0x656B, 0x5227, 0x5F52, 0xFFFD, 0x3F29, -/* 0750 */ 0xFFFD, 0x545B, 0xFFFD, 0x3F48, 0x5F54, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0758 */ 0x4F4C, 0xFFFD, 0xFFFD, 0x5F5D, 0x5F43, 0x514A, 0xFFFD, 0x5F5E, -/* 0760 */ 0x3027, 0x4637, 0x5F53, 0xFFFD, 0x3A65, 0xFFFD, 0x365F, 0x4D5B, -/* 0768 */ 0x397E, 0x5455, 0xFFFD, 0xFFFD, 0x5F5F, 0xFFFD, 0x3025, 0x5F67, -/* 0770 */ 0x5F51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0778 */ 0xFFFD, 0xFFFD, 0x5F61, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F68, 0xFFFD, -/* 0780 */ 0xFFFD, 0x5431, 0xFFFD, 0xFFFD, 0xFFFD, 0x3867, 0x4536, 0x5F6A, -/* 0788 */ 0x495A, 0x4128, 0x4444, 0xFFFD, 0xFFFD, 0x3F5E, 0x4F78, 0xFFFD, -/* 0790 */ 0xFFFD, 0xFFFD, 0x555C, 0x5F6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0798 */ 0xFFFD, 0xFFFD, 0x3238, 0xFFFD, 0x3A5F, 0x5F6C, 0xFFFD, 0x5B41, -/* 07A0 */ 0xFFFD, 0x5164, 0xFFFD, 0xFFFD, 0x5F42, 0xFFFD, 0x4B74, 0x343D, -/* 07A8 */ 0xFFFD, 0x3026, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F71, -/* 07B0 */ 0x4C46, 0x5F72, 0xFFFD, 0xFFFD, 0x5F6D, 0x5F70, 0xFFFD, 0xFFFD, -/* 07B8 */ 0xFFFD, 0x5F73, 0xFFFD, 0xFFFD, 0x5F74, 0xFFFD, 0x3B23, 0xFFFD, -/* 07C0 */ 0x4A5B, 0x4E28, 0x6027, 0x332A, 0xFFFD, 0x6026, 0xFFFD, 0xFFFD, -/* 07C8 */ 0xFFFD, 0x6021, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F7E, 0xFFFD, -/* 07D0 */ 0x4D59, 0x5F7C, 0xFFFD, 0x5F7A, 0xFFFD, 0x3F50, 0x5744, 0xFFFD, -/* 07D8 */ 0x494C, 0xFFFD, 0xFFFD, 0x5F78, 0x3021, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07E0 */ 0xFFFD, 0x4E4A, 0x5F7D, 0xFFFD, 0xFFFD, 0x4674, 0xFFFD, 0x5F7B, -/* 07E8 */ 0x6022, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6028, 0xFFFD, -/* 07F0 */ 0x5146, 0xFFFD, 0xFFFD, 0x3748, 0xFFFD, 0xFFFD, 0x4621, 0x4936, -/* 07F8 */ 0x4032, 0xFFFD, 0xFFFD, 0xFFFD, 0x453E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6023, -/* 0808 */ 0x6024, 0x6025, 0xFFFD, 0xFFFD, 0xFFFD, 0x6034, 0x4C64, 0xFFFD, -/* 0810 */ 0x6031, 0xFFFD, 0x3F26, 0x602F, 0x4E39, 0x602B, 0x4946, 0xFFFD, -/* 0818 */ 0xFFFD, 0x402E, 0x602E, 0x3A6D, 0x3A30, 0x6029, 0xFFFD, 0xFFFD, -/* 0820 */ 0xFFFD, 0x5F76, 0xFFFD, 0x6033, 0xFFFD, 0xFFFD, 0x6038, 0xFFFD, -/* 0828 */ 0xFFFD, 0xFFFD, 0x342D, 0x6039, 0x3B3D, 0xFFFD, 0x4F32, 0x3A48, -/* 0830 */ 0xFFFD, 0x6030, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0838 */ 0xFFFD, 0x507A, 0xFFFD, 0xFFFD, 0x4925, 0xFFFD, 0x4747, 0xFFFD, -/* 0840 */ 0x3525, 0xFFFD, 0xFFFD, 0x602C, 0x5334, 0x547B, 0xFFFD, 0x5F77, -/* 0848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x602D, 0xFFFD, 0x5377, 0xFFFD, 0xFFFD, -/* 0850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6044, 0x5061, -/* 0858 */ 0x473A, 0x5844, 0xFFFD, 0x603C, 0xFFFD, 0xFFFD, 0x6049, 0x604A, -/* 0860 */ 0x4270, 0xFFFD, 0xFFFD, 0x603E, 0x602A, 0x4924, 0x6041, 0xFFFD, -/* 0868 */ 0x6032, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E58, 0xFFFD, 0x4A48, 0x6043, -/* 0870 */ 0xFFFD, 0x6035, 0xFFFD, 0x4E4B, 0xFFFD, 0x4B43, 0x604D, 0x6046, -/* 0878 */ 0x6042, 0xFFFD, 0x604B, 0x5F6F, 0x603A, 0xFFFD, 0x6040, 0xFFFD, -/* 0880 */ 0xFFFD, 0x6045, 0xFFFD, 0xFFFD, 0x6047, 0xFFFD, 0xFFFD, 0x604C, -/* 0888 */ 0x5F59, 0x603B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B54, -/* 0890 */ 0x6055, 0xFFFD, 0x6056, 0x6052, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0898 */ 0x4C3E, 0xFFFD, 0x6050, 0x3C4E, 0xFFFD, 0xFFFD, 0x6051, 0x6036, -/* 08A0 */ 0x3842, 0x5845, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x453B, 0xFFFD, -/* 08A8 */ 0x5F75, 0x3322, 0x506A, 0xFFFD, 0xFFFD, 0x426F, 0x5F69, 0xFFFD, -/* 08B0 */ 0x604F, 0x603D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6054, 0xFFFD, 0xFFFD, -/* 08B8 */ 0xFFFD, 0x6057, 0xFFFD, 0x3B29, 0xFFFD, 0xFFFD, 0x605C, 0x6058, -/* 08C0 */ 0x5F6B, 0x5025, 0x5F34, 0xFFFD, 0x3330, 0xFFFD, 0x576C, 0x5F58, -/* 08C8 */ 0x4B3B, 0xFFFD, 0x5F3C, 0x605A, 0xFFFD, 0x4E7B, 0xFFFD, 0xFFFD, -/* 08D0 */ 0xFFFD, 0x3A59, 0xFFFD, 0x7830, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6061, 0x605D, -/* 08E0 */ 0x522D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6062, 0xFFFD, -/* 08E8 */ 0xFFFD, 0x605B, 0x6059, 0x605F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F50, -/* 08F0 */ 0xFFFD, 0xFFFD, 0x5F55, 0xFFFD, 0x605E, 0xFFFD, 0x6064, 0x5F66, -/* 08F8 */ 0x5F5C, 0xFFFD, 0x4677, 0x582C, 0x546B, 0x6066, 0x4A49, 0xFFFD, -/* 0900 */ 0xFFFD, 0x6048, 0xFFFD, 0x6065, 0x5F60, 0xFFFD, 0x4567, 0xFFFD, -/* 0908 */ 0x3841, 0xFFFD, 0x3656, 0x782B, 0xFFFD, 0x6067, 0x6068, 0xFFFD, -/* 0910 */ 0xFFFD, 0xFFFD, 0x5F4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6069, -/* 0918 */ 0x6063, 0x4F45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F62, 0xFFFD, -/* 0920 */ 0x3A3F, 0x4C67, 0xFFFD, 0xFFFD, 0xFFFD, 0x606A, 0xFFFD, 0x6060, -/* 0928 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4476, 0x5F3F, 0xFFFD, 0x417C, 0xFFFD, -/* 0930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7875, 0x606B, 0xFFFD, 0xFFFD, -/* 0938 */ 0xFFFD, 0x6037, 0x514F, 0xFFFD, 0x6053, 0x4842, 0xFFFD, 0xFFFD, -/* 0940 */ 0xFFFD, 0xFFFD, 0x3D40, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F79, 0x603F, -/* 0948 */ 0x4F79, 0xFFFD, 0xFFFD, 0x5966, 0xFFFD, 0xFFFD, 0x5F3D, 0x7853, -/* 0950 */ 0x4452, 0xFFFD, 0x786A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5676, -/* 0958 */ 0xFFFD, 0xFFFD, 0x606C, 0xFFFD, 0xFFFD, 0x606D, 0xFFFD, 0xFFFD, -/* 0960 */ 0x4774, 0x4B44, 0xFFFD, 0x606E, 0x3B58, 0x5836, 0x5272, 0x606F, -/* 0968 */ 0xFFFD, 0xFFFD, 0x365A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0970 */ 0xFFFD, 0x6071, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4027, 0x3451, -/* 0978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6072, -/* 0980 */ 0x394C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6073, 0xFFFD, 0xFFFD, -/* 0988 */ 0xFFFD, 0x4654, 0x6074, 0xFFFD, 0xFFFD, 0x6070, 0x4826, 0x6076, -/* 0990 */ 0x6075, 0x397A, 0xFFFD, 0x4E27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0998 */ 0x5430, 0x5432, 0xFFFD, 0xFFFD, 0x4D3C, 0xFFFD, 0x4D45, 0xFFFD, -/* 09A0 */ 0xFFFD, 0xFFFD, 0x6077, 0xFFFD, 0xFFFD, 0x4D41, 0xFFFD, 0xFFFD, -/* 09A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x545A, 0x5B57, -/* 09B0 */ 0x5B59, 0xFFFD, 0x5B58, 0x3967, 0x5B5C, 0x5B5D, 0x3558, 0xFFFD, -/* 09B8 */ 0xFFFD, 0x5B5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09C0 */ 0xFFFD, 0x5B5F, 0xFFFD, 0xFFFD, 0x3B78, 0xFFFD, 0x5637, 0xFFFD, -/* 09C8 */ 0x5B60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E79, 0xFFFD, 0xFFFD, -/* 09D0 */ 0x373B, 0xFFFD, 0x5B50, 0x4C2E, 0x3F32, 0xFFFD, 0x5778, 0x3F53, -/* 09D8 */ 0x4642, 0xFFFD, 0xFFFD, 0x4024, 0xFFFD, 0x4C39, 0xFFFD, 0x5B67, -/* 09E0 */ 0x5B61, 0x463A, 0x5B63, 0xFFFD, 0x5B68, 0xFFFD, 0x4577, 0xFFFD, -/* 09E8 */ 0xFFFD, 0xFFFD, 0x5B6A, 0xFFFD, 0xFFFD, 0x5B69, 0x3F40, 0xFFFD, -/* 09F0 */ 0xFFFD, 0xFFFD, 0x5B66, 0x5B65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09F8 */ 0xFFFD, 0x3439, 0x402C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A00 */ 0xFFFD, 0xFFFD, 0x504D, 0x5B6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A08 */ 0xFFFD, 0xFFFD, 0x5B72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A10 */ 0xFFFD, 0xFFFD, 0x3662, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B73, -/* 0A18 */ 0x5B52, 0x3938, 0x542B, 0x5B6C, 0xFFFD, 0xFFFD, 0x5B70, 0xFFFD, -/* 0A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F65, 0xFFFD, 0xFFFD, -/* 0A28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B79, -/* 0A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A38 */ 0xFFFD, 0x3921, 0x3023, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A40 */ 0xFFFD, 0xFFFD, 0x4271, 0xFFFD, 0xFFFD, 0x3347, 0x5B6F, 0xFFFD, -/* 0A48 */ 0xFFFD, 0x5B78, 0xFFFD, 0x4652, 0x5B74, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B7E, 0xFFFD, 0x5372, 0x323A, -/* 0A58 */ 0x5B6B, 0xFFFD, 0xFFFD, 0x5B7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C24, 0xFFFD, 0x5B7B, 0xFFFD, -/* 0A68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B7A, 0xFFFD, 0xFFFD, 0x5634, 0x5B7C, -/* 0A70 */ 0x4560, 0x3B79, 0xFFFD, 0xFFFD, 0x5C23, 0xFFFD, 0xFFFD, 0x5C25, -/* 0A78 */ 0xFFFD, 0x4C43, 0xFFFD, 0xFFFD, 0x3C61, 0x3651, 0x5D40, 0xFFFD, -/* 0A80 */ 0xFFFD, 0x5B51, 0x5C21, 0xFFFD, 0x5C22, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B71, 0xFFFD, 0xFFFD, -/* 0A90 */ 0x5C27, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B76, 0x5C26, 0xFFFD, 0x5C29, -/* 0A98 */ 0x3124, 0xFFFD, 0xFFFD, 0x354C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AA0 */ 0xFFFD, 0x3F30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5222, 0x515F, -/* 0AA8 */ 0x3128, 0xFFFD, 0xFFFD, 0x3321, 0x3642, 0x5C28, 0xFFFD, 0xFFFD, -/* 0AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F69, 0x5C63, 0x4B7A, 0x6B73, 0xFFFD, -/* 0AB8 */ 0x5B6E, 0xFFFD, 0x4B5C, 0x5B75, 0xFFFD, 0x4B7E, 0xFFFD, 0xFFFD, -/* 0AC0 */ 0x4D3F, 0x4C41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x487B, -/* 0AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E6B, 0xFFFD, 0x5B77, 0x5C2A, 0xFFFD, -/* 0AD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C6E, 0x5C2B, 0xFFFD, 0xFFFD, -/* 0AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x333E, 0xFFFD, -/* 0AE0 */ 0xFFFD, 0xFFFD, 0x4735, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B53, -/* 0AE8 */ 0xFFFD, 0x5C2F, 0x5C2C, 0xFFFD, 0x3E33, 0xFFFD, 0x4A7B, 0xFFFD, -/* 0AF0 */ 0xFFFD, 0xFFFD, 0x5C2D, 0x3566, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x494A, 0x4439, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C2E, 0xFFFD, 0x5739, 0xFFFD, 0x5476, -/* 0B08 */ 0x5066, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B10 */ 0xFFFD, 0x442B, 0x3655, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3669, -/* 0B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3758, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x473D, 0x5B54, 0xFFFD, 0x3F51, -/* 0B28 */ 0xFFFD, 0xFFFD, 0x315A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B55, 0xFFFD, -/* 0B30 */ 0x4C33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B38 */ 0xFFFD, 0xFFFD, 0x5B56, 0xFFFD, 0x5139, 0xFFFD, 0x3A3E, 0xFFFD, -/* 0B40 */ 0xFFFD, 0x405D, 0x5B5B, 0x5B64, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B35, -/* 0B48 */ 0x4222, 0x5B62, 0xFFFD, 0x5B5E, 0xFFFD, 0x4840, 0xFFFD, 0xFFFD, -/* 0B50 */ 0xFFFD, 0xFFFD, 0x3053, 0xFFFD, 0x4A3F, 0x4849, 0xFFFD, 0xFFFD, -/* 0B58 */ 0x5733, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B60 */ 0xFFFD, 0xFFFD, 0x523C, 0x3A78, 0xFFFD, 0xFFFD, 0x4A59, 0xFFFD, -/* 0B68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x623A, 0x4F44, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B70 */ 0xFFFD, 0x5967, 0x4F26, 0x4D62, 0xFFFD, 0xFFFD, 0x596D, 0x3660, -/* 0B78 */ 0xFFFD, 0x5239, 0xFFFD, 0xFFFD, 0x393B, 0xFFFD, 0xFFFD, 0x434E, -/* 0B80 */ 0xFFFD, 0x6239, 0x6237, 0xFFFD, 0x3473, 0xFFFD, 0x4C6C, 0x4C2B, -/* 0B88 */ 0x3772, 0xFFFD, 0x5832, 0x516B, 0x3A3B, 0xFFFD, 0x4A27, 0xFFFD, -/* 0B90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5244, 0x7849, 0xFFFD, 0xFFFD, -/* 0B98 */ 0xFFFD, 0x5E45, 0xFFFD, 0x3C50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BA0 */ 0xFFFD, 0x5159, 0xFFFD, 0xFFFD, 0x4666, 0x444E, 0x376E, 0xFFFD, -/* 0BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F7C, 0x5760, 0x5B3C, 0x4675, 0xFFFD, -/* 0BB0 */ 0xFFFD, 0x313C, 0x5E48, 0xFFFD, 0x4C57, 0x5E4A, 0xFFFD, 0x5E49, -/* 0BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x356C, 0xFFFD, 0x495D, -/* 0BC0 */ 0xFFFD, 0xFFFD, 0x3042, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E46, 0x3661, -/* 0BC8 */ 0xFFFD, 0x3D31, 0xFFFD, 0x375C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BD0 */ 0x452E, 0x452B, 0xFFFD, 0x444C, 0xFFFD, 0x3C69, 0x4B7D, 0xFFFD, -/* 0BD8 */ 0xFFFD, 0xFFFD, 0x3A43, 0xFFFD, 0xFFFD, 0xFFFD, 0x6579, 0x4867, -/* 0BE0 */ 0x657A, 0x4D7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4851, -/* 0BE8 */ 0xFFFD, 0xFFFD, 0x657B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x364A, -/* 0BF0 */ 0x3C4B, 0xFFFD, 0xFFFD, 0x517D, 0x6621, 0xFFFD, 0x436E, 0xFFFD, -/* 0BF8 */ 0xFFFD, 0xFFFD, 0x5731, 0x6624, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C00 */ 0x657E, 0x6625, 0x4D57, 0xFFFD, 0xFFFD, 0x3741, 0xFFFD, 0xFFFD, -/* 0C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x445D, 0x6628, 0xFFFD, 0xFFFD, 0x6627, -/* 0C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4343, 0xFFFD, -/* 0C18 */ 0x465E, 0xFFFD, 0xFFFD, 0x662A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4437, 0xFFFD, 0xFFFD, 0xFFFD, 0x6622, -/* 0C28 */ 0x4A3C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D63, 0x3943, 0x6626, -/* 0C30 */ 0x5055, 0x4E2F, 0xFFFD, 0xFFFD, 0x6629, 0x6630, 0xFFFD, 0x5226, -/* 0C38 */ 0xFFFD, 0x3D2A, 0x662D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C40 */ 0x662F, 0xFFFD, 0x4051, 0xFFFD, 0xFFFD, 0x524C, 0xFFFD, 0xFFFD, -/* 0C48 */ 0xFFFD, 0x3C27, 0x6631, 0xFFFD, 0x5276, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C50 */ 0x574B, 0xFFFD, 0x4D7E, 0xFFFD, 0x4D5E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C58 */ 0xFFFD, 0xFFFD, 0x6633, 0xFFFD, 0xFFFD, 0x6632, 0xFFFD, 0xFFFD, -/* 0C60 */ 0xFFFD, 0xFFFD, 0x6636, 0xFFFD, 0x6638, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C68 */ 0xFFFD, 0x446F, 0xFFFD, 0xFFFD, 0xFFFD, 0x4448, 0xFFFD, 0xFFFD, -/* 0C70 */ 0x3E6A, 0x496F, 0xFFFD, 0xFFFD, 0x6637, 0xFFFD, 0x3670, 0xFFFD, -/* 0C78 */ 0xFFFD, 0xFFFD, 0x4364, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C80 */ 0xFFFD, 0xFFFD, 0x5369, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4822, -/* 0C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x663D, 0xFFFD, 0xFFFD, -/* 0C90 */ 0xFFFD, 0x6639, 0x4226, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4645, -/* 0C98 */ 0xFFFD, 0xFFFD, 0x4D71, 0x663B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x663C, 0xFFFD, -/* 0CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x663E, 0xFFFD, 0xFFFD, 0xFFFD, 0x383E, -/* 0CB8 */ 0x663A, 0xFFFD, 0xFFFD, 0x4037, 0xFFFD, 0xFFFD, 0x662B, 0xFFFD, -/* 0CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC8 */ 0x6643, 0xFFFD, 0xFFFD, 0x6644, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CD0 */ 0x5076, 0x433D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CD8 */ 0xFFFD, 0x4344, 0x6642, 0x6634, 0xFFFD, 0xFFFD, 0x6641, 0xFFFD, -/* 0CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6647, 0x4F31, -/* 0CE8 */ 0xFFFD, 0x6B74, 0xFFFD, 0xFFFD, 0x664A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CF0 */ 0xFFFD, 0x4268, 0x6645, 0xFFFD, 0xFFFD, 0x3C5E, 0x4929, 0xFFFD, -/* 0CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C35, 0xFFFD, 0xFFFD, -/* 0D00 */ 0x4F53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D08 */ 0xFFFD, 0xFFFD, 0x664E, 0x657D, 0x6650, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D10 */ 0x6651, 0xFFFD, 0xFFFD, 0xFFFD, 0x664B, 0x3555, 0xFFFD, 0x664C, -/* 0D18 */ 0xFFFD, 0xFFFD, 0x664F, 0xFFFD, 0xFFFD, 0x445B, 0xFFFD, 0x6646, -/* 0D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D28 */ 0xFFFD, 0x657C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6635, -/* 0D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6623, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x662C, 0x6652, 0xFFFD, 0x663F, -/* 0D40 */ 0x3D3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D48 */ 0xFFFD, 0xFFFD, 0x6654, 0x6653, 0xFFFD, 0x664D, 0xFFFD, 0xFFFD, -/* 0D50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6648, 0xFFFD, 0xFFFD, -/* 0D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6649, 0xFFFD, -/* 0D60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5324, 0xFFFD, 0x6655, 0xFFFD, -/* 0D68 */ 0x5978, 0xFFFD, 0xFFFD, 0x6656, 0x4974, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6657, 0x662E, 0xFFFD, 0xFFFD, -/* 0D78 */ 0xFFFD, 0x5753, 0x665D, 0xFFFD, 0x665E, 0x3F57, 0x5450, 0xFFFD, -/* 0D80 */ 0x5756, 0x3466, 0xFFFD, 0x665A, 0x5843, 0x574E, 0x5022, 0xFFFD, -/* 0D88 */ 0x434F, 0xFFFD, 0xFFFD, 0x665F, 0x3C3E, 0x3942, 0x665B, 0xFFFD, -/* 0D90 */ 0xFFFD, 0xFFFD, 0x3A22, 0xFFFD, 0x4B6F, 0x582B, 0xFFFD, 0xFFFD, -/* 0D98 */ 0xFFFD, 0x4A6B, 0x656E, 0xFFFD, 0x665C, 0xFFFD, 0x3775, 0xFFFD, -/* 0DA0 */ 0xFFFD, 0x5127, 0xFFFD, 0x4866, 0xFFFD, 0xFFFD, 0x4475, 0xFFFD, -/* 0DA8 */ 0x424F, 0x6532, 0xFFFD, 0xFFFD, 0x4B7C, 0x6533, 0x552C, 0xFFFD, -/* 0DB0 */ 0x536E, 0x4A58, 0x3032, 0xFFFD, 0x4B4E, 0x4D6A, 0xFFFD, 0xFFFD, -/* 0DB8 */ 0x3A6A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6535, 0xFFFD, 0x6534, 0xFFFD, -/* 0DC0 */ 0x575A, 0x3959, 0x5666, 0x3628, 0x4D70, 0x524B, 0xFFFD, 0xFFFD, -/* 0DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F4D, 0x507B, 0x4A52, 0x6536, 0x3B42, -/* 0DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x392C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DD8 */ 0xFFFD, 0x5457, 0xFFFD, 0xFFFD, 0x3A26, 0x5167, 0x4F7C, 0x3C52, -/* 0DE0 */ 0xFFFD, 0x6537, 0x485D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE8 */ 0x4B5E, 0xFFFD, 0xFFFD, 0x3C45, 0xFFFD, 0x3C44, 0x527A, 0x435C, -/* 0DF0 */ 0x3F5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x383B, 0xFFFD, 0xFFFD, -/* 0DF8 */ 0xFFFD, 0x4342, 0xFFFD, 0x3A2E, 0x5422, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x442F, -/* 0E08 */ 0x326C, 0xFFFD, 0x3951, 0x475E, 0xFFFD, 0x653B, 0x4148, 0x4A35, -/* 0E10 */ 0x447E, 0x552F, 0x4973, 0xFFFD, 0x5034, 0x3F6D, 0xFFFD, 0x653C, -/* 0E18 */ 0xFFFD, 0x653E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3368, 0x3126, -/* 0E20 */ 0xFFFD, 0x3467, 0xFFFD, 0x4B42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E28 */ 0xFFFD, 0xFFFD, 0x3762, 0xFFFD, 0xFFFD, 0x4964, 0xFFFD, 0xFFFD, -/* 0E30 */ 0x3D2B, 0x5728, 0x4E3E, 0x5770, 0x5130, 0xFFFD, 0x3654, 0x353C, -/* 0E38 */ 0x5021, 0xFFFD, 0x4959, 0xFFFD, 0xFFFD, 0xFFFD, 0x6658, 0x3C62, -/* 0E40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4950, 0xFFFD, 0x6659, 0xFFFD, 0xFFFD, -/* 0E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E4C, 0xFFFD, 0x5348, 0x5E4D, 0xFFFD, -/* 0E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E4E, 0xFFFD, 0xFFFD, -/* 0E58 */ 0xFFFD, 0xFFFD, 0x3E4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E60 */ 0x5E4F, 0x4A2C, 0x527C, 0x335F, 0x656A, 0x4461, 0xFFFD, 0x4E32, -/* 0E68 */ 0x4472, 0x3E56, 0x4628, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E53, 0xFFFD, -/* 0E70 */ 0xFFFD, 0x477C, 0x4C6B, 0x3D6C, 0x4E5D, 0xFFFD, 0xFFFD, 0x4A3A, -/* 0E78 */ 0x4641, 0x656C, 0x503C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5539, 0xFFFD, -/* 0E80 */ 0xFFFD, 0xFFFD, 0x656D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E88 */ 0xFFFD, 0x4D40, 0xFFFD, 0x4245, 0x656F, 0x3263, 0x4244, 0xFFFD, -/* 0E90 */ 0xFFFD, 0x6570, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A74, 0xFFFD, 0x6578, -/* 0E98 */ 0x4D4D, 0xFFFD, 0x493D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EA0 */ 0xFFFD, 0xFFFD, 0x5259, 0x6128, 0x612C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EA8 */ 0x6127, 0x6129, 0xFFFD, 0xFFFD, 0x612A, 0x612F, 0xFFFD, 0xFFFD, -/* 0EB0 */ 0x326D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x612E, 0xFFFD, 0xFFFD, -/* 0EB8 */ 0x6131, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3854, 0x6133, 0x6138, -/* 0EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5152, 0xFFFD, 0x6136, -/* 0EC8 */ 0x6135, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6137, 0xFFFD, 0x5440, -/* 0ED0 */ 0xFFFD, 0x6132, 0xFFFD, 0x613A, 0x3036, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6139, 0xFFFD, 0xFFFD, -/* 0EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x613E, -/* 0EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x613C, 0xFFFD, -/* 0EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5645, 0x366B, 0xFFFD, -/* 0EF8 */ 0x5378, 0xFFFD, 0xFFFD, 0x474D, 0xFFFD, 0xFFFD, 0x3765, 0xFFFD, -/* 0F00 */ 0xFFFD, 0xFFFD, 0x612D, 0xFFFD, 0x353A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F08 */ 0xFFFD, 0x3E7E, 0xFFFD, 0x4F3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6147, 0x3367, 0xFFFD, 0xFFFD, -/* 0F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6141, 0x4669, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F20 */ 0xFFFD, 0xFFFD, 0x345E, 0xFFFD, 0x5142, 0x385A, 0xFFFD, 0xFFFD, -/* 0F28 */ 0xFFFD, 0x6148, 0xFFFD, 0xFFFD, 0x6146, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F30 */ 0x613F, 0xFFFD, 0x6145, 0xFFFD, 0x6143, 0x6142, 0xFFFD, 0x3140, -/* 0F38 */ 0xFFFD, 0xFFFD, 0x6134, 0xFFFD, 0x6144, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F40 */ 0xFFFD, 0xFFFD, 0x614B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x614C, 0x614A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F7A, 0xFFFD, 0xFFFD, -/* 0F58 */ 0x6153, 0x6152, 0x4736, 0xFFFD, 0xFFFD, 0xFFFD, 0x6130, 0xFFFD, -/* 0F60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F68 */ 0xFFFD, 0x614E, 0x6154, 0xFFFD, 0x6151, 0x614D, 0xFFFD, 0xFFFD, -/* 0F70 */ 0x614F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6155, 0x6150, 0x6156, -/* 0F78 */ 0xFFFD, 0x5538, 0xFFFD, 0xFFFD, 0x612B, 0x6140, 0xFFFD, 0x6157, -/* 0F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6158, 0xFFFD, 0xFFFD, 0x613D, 0xFFFD, -/* 0F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x613B, 0x615A, 0x6149, -/* 0F90 */ 0xFFFD, 0x416B, 0xFFFD, 0x536C, 0x3F79, 0xFFFD, 0x4E21, 0xFFFD, -/* 0F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x424D, 0xFFFD, 0x615B, 0xFFFD, 0xFFFD, -/* 0FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x675D, 0xFFFD, 0x3428, 0x565D, -/* 0FA8 */ 0xFFFD, 0xFFFD, 0x5132, 0x3332, 0xFFFD, 0xFFFD, 0x3924, 0x5773, -/* 0FB0 */ 0x4749, 0x3E5E, 0xFFFD, 0xFFFD, 0x4E57, 0xFFFD, 0xFFFD, 0x326E, -/* 0FB8 */ 0xFFFD, 0x5B4F, 0x3C3A, 0x5251, 0x4B48, 0x304D, 0xFFFD, 0xFFFD, -/* 0FC0 */ 0x4F6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5963, 0x3D6D, -/* 0FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A50, 0x323C, 0xFFFD, 0xFFFD, 0x372B, -/* 0FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F23, 0xFFFD, 0xFFFD, -/* 0FD8 */ 0xFFFD, 0xFFFD, 0x607B, 0xFFFD, 0xFFFD, 0x607A, 0x4541, 0x4C7B, -/* 0FE0 */ 0xFFFD, 0x7850, 0x6079, 0x5663, 0x322F, 0xFFFD, 0x355B, 0xFFFD, -/* 0FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B27, 0xFFFD, -/* 0FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A26, 0xFFFD, 0x4F2F, 0xFFFD, -/* 0FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x554A, 0xFFFD, 0xFFFD, 0x3478, -/* 1000 */ 0x6121, 0x3323, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4331, 0xFFFD, -/* 1008 */ 0xFFFD, 0x5621, 0xFFFD, 0x435D, 0x6078, 0x6122, 0x3779, 0xFFFD, -/* 1010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B4F, 0xFFFD, 0xFFFD, -/* 1018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6123, 0x443B, 0xFFFD, -/* 1020 */ 0x607E, 0x607D, 0xFFFD, 0xFFFD, 0x6124, 0xFFFD, 0xFFFD, 0x6125, -/* 1028 */ 0x5644, 0xFFFD, 0x6126, 0x3431, 0x3152, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x306F, 0x607C, 0xFFFD, 0xFFFD, -/* 1038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7835, 0x463D, 0x446A, 0xFFFD, 0x3222, -/* 1040 */ 0xFFFD, 0x5052, 0x3849, 0x675B, 0x3B43, 0x5357, 0x5344, 0x3C38, -/* 1048 */ 0x7838, 0x624F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1050 */ 0x3153, 0xFFFD, 0xFFFD, 0x3432, 0x6251, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1058 */ 0x5072, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3557, 0x6252, -/* 1060 */ 0x356A, 0xFFFD, 0xFFFD, 0x387D, 0xFFFD, 0x382E, 0xFFFD, 0xFFFD, -/* 1068 */ 0xFFFD, 0x6254, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6253, 0x3648, -/* 1070 */ 0x5779, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F62, 0xFFFD, 0x4D25, 0xFFFD, -/* 1078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6258, 0xFFFD, 0x6256, 0x4A7C, -/* 1080 */ 0x3F35, 0x5339, 0x6255, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6257, -/* 1088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1090 */ 0xFFFD, 0xFFFD, 0x412E, 0x4048, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1098 */ 0xFFFD, 0xFFFD, 0x625B, 0x625A, 0x402A, 0xFFFD, 0xFFFD, 0x414E, -/* 10A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x625C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10A8 */ 0x436D, 0x3327, 0x6250, 0x374F, 0x3963, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10B0 */ 0xFFFD, 0x625D, 0xFFFD, 0x625E, 0xFFFD, 0x422E, 0xFFFD, 0xFFFD, -/* 10B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C7C, 0x5B48, 0xFFFD, 0x5153, -/* 10C0 */ 0x4D22, 0xFFFD, 0xFFFD, 0x3D28, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E43, -/* 10C8 */ 0x5825, 0xFFFD, 0x5B4D, 0x526C, 0xFFFD, 0x452A, 0xFFFD, 0xFFFD, -/* 10D0 */ 0xFFFD, 0x5E44, 0xFFFD, 0x3157, 0x5F2E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10D8 */ 0x4A3D, 0xFFFD, 0x5F31, 0xFFFD, 0x392D, 0xFFFD, 0x527D, 0xFFFD, -/* 10E0 */ 0x3825, 0x3A6B, 0xFFFD, 0xFFFD, 0x335A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10E8 */ 0x355C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F52, -/* 10F0 */ 0x3B21, 0xFFFD, 0x6573, 0xFFFD, 0xFFFD, 0xFFFD, 0x6574, 0xFFFD, -/* 10F8 */ 0xFFFD, 0xFFFD, 0x4875, 0xFFFD, 0x6572, 0xFFFD, 0x5545, 0xFFFD, -/* 1100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x473F, 0xFFFD, 0x6576, 0xFFFD, 0xFFFD, -/* 1108 */ 0xFFFD, 0x6C30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7824, -/* 1110 */ 0xFFFD, 0x352F, 0xFFFD, 0xFFFD, 0xFFFD, 0x4356, 0xFFFD, 0x4D64, -/* 1118 */ 0xFFFD, 0x6566, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6568, -/* 1120 */ 0x6567, 0x6569, 0x783D, 0xFFFD, 0xFFFD, 0xFFFD, 0x524D, 0xFFFD, -/* 1128 */ 0xFFFD, 0xFFFD, 0x616A, 0x504E, 0xFFFD, 0x4D2E, 0xFFFD, 0x5165, -/* 1130 */ 0xFFFD, 0xFFFD, 0x324A, 0x316B, 0xFFFD, 0x3172, 0x456D, 0xFFFD, -/* 1138 */ 0xFFFD, 0x5543, 0x5330, 0xFFFD, 0x615C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1140 */ 0x615D, 0xFFFD, 0x525B, 0xFFFD, 0xFFFD, 0x314B, 0xFFFD, 0xFFFD, -/* 1148 */ 0xFFFD, 0x4D79, 0x5577, 0x615E, 0xFFFD, 0xFFFD, 0x347D, 0xFFFD, -/* 1150 */ 0x615F, 0x3A5C, 0x6160, 0x3B32, 0x4249, 0x3A73, 0xFFFD, 0xFFFD, -/* 1158 */ 0xFFFD, 0x506C, 0x3E36, 0x4D3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1160 */ 0x3543, 0x4547, 0x6163, 0xFFFD, 0xFFFD, 0x6164, 0xFFFD, 0x3453, -/* 1168 */ 0xFFFD, 0x6162, 0x5379, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1170 */ 0xFFFD, 0x6165, 0x3834, 0x512D, 0xFFFD, 0xFFFD, 0x6166, 0x4E22, -/* 1178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6167, 0xFFFD, -/* 1180 */ 0x3542, 0xFFFD, 0x3339, 0xFFFD, 0xFFFD, 0x6168, 0x3B55, 0xFFFD, -/* 1188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5044, 0x6260, 0x3158, 0xFFFD, -/* 1190 */ 0xFFFD, 0xFFFD, 0x6261, 0xFFFD, 0xFFFD, 0x3C49, 0x484C, 0xFFFD, -/* 1198 */ 0xFFFD, 0x6C7E, 0x6C7D, 0x5F2F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6262, -/* 11A0 */ 0x563E, 0x4D7C, 0x4326, 0xFFFD, 0xFFFD, 0xFFFD, 0x6343, 0xFFFD, -/* 11A8 */ 0xFFFD, 0x5652, 0x6267, 0xFFFD, 0xFFFD, 0x6268, 0xFFFD, 0xFFFD, -/* 11B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x626C, 0x3F6C, 0xFFFD, 0x626D, 0x6265, -/* 11B8 */ 0xFFFD, 0xFFFD, 0x3340, 0xFFFD, 0xFFFD, 0xFFFD, 0x446E, 0xFFFD, -/* 11C0 */ 0xFFFD, 0x626E, 0xFFFD, 0xFFFD, 0x5043, 0xFFFD, 0x3A76, 0xFFFD, -/* 11C8 */ 0x375E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6277, 0xFFFD, 0xFFFD, 0x6274, 0x5475, -/* 11D8 */ 0x6273, 0xFFFD, 0xFFFD, 0x452D, 0xFFFD, 0x557A, 0x4542, 0x3240, -/* 11E0 */ 0xFFFD, 0xFFFD, 0x626F, 0xFFFD, 0x6272, 0xFFFD, 0x4B3C, 0xFFFD, -/* 11E8 */ 0xFFFD, 0x3521, 0x6279, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C31, 0x6271, -/* 11F0 */ 0x5054, 0x5439, 0x6275, 0x3956, 0x6276, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11F8 */ 0x4753, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6270, 0x6D25, -/* 1200 */ 0x627E, 0x4A51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B50, 0xFFFD, 0xFFFD, 0x3F56, 0xFFFD, -/* 1210 */ 0x3A63, 0xFFFD, 0xFFFD, 0x4B21, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D26, -/* 1218 */ 0x6D23, 0xFFFD, 0xFFFD, 0x6D22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1220 */ 0x3B56, 0x6D27, 0x5074, 0xFFFD, 0xFFFD, 0x6D24, 0x3A5E, 0x3677, -/* 1228 */ 0x6321, 0x3632, 0x4C71, 0x3927, 0xFFFD, 0x4F22, 0x4721, 0x5341, -/* 1230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6327, 0x4744, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1238 */ 0xFFFD, 0x4F24, 0xFFFD, 0xFFFD, 0x6329, 0x3A37, 0xFFFD, 0xFFFD, -/* 1240 */ 0xFFFD, 0xFFFD, 0x6328, 0xFFFD, 0x3B5A, 0xFFFD, 0x6323, 0xFFFD, -/* 1248 */ 0xFFFD, 0xFFFD, 0x6324, 0x632A, 0xFFFD, 0x6326, 0xFFFD, 0x4E72, -/* 1250 */ 0x5346, 0xFFFD, 0xFFFD, 0x3B3C, 0xFFFD, 0xFFFD, 0x5443, 0xFFFD, -/* 1258 */ 0x447A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1260 */ 0xFFFD, 0x632D, 0x312F, 0xFFFD, 0x6332, 0x626A, 0x4346, 0xFFFD, -/* 1268 */ 0x3C42, 0xFFFD, 0xFFFD, 0x632C, 0x353F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4769, 0x6330, 0xFFFD, -/* 1278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1280 */ 0xFFFD, 0x3B73, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C68, 0xFFFD, 0xFFFD, -/* 1288 */ 0x632F, 0xFFFD, 0x6331, 0xFFFD, 0x4F27, 0x632E, 0xFFFD, 0x4E29, -/* 1290 */ 0x3B5D, 0x3671, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x356B, 0xFFFD, -/* 1298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A0 */ 0x3668, 0x4455, 0x6322, 0x4F6B, 0x6337, 0xFFFD, 0x3B4C, 0xFFFD, -/* 12A8 */ 0xFFFD, 0x4847, 0x504A, 0x627C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12B0 */ 0x6338, 0x336E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D29, 0xFFFD, -/* 12B8 */ 0x537A, 0x5364, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D2A, 0x6339, 0x5262, -/* 12C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6335, 0xFFFD, 0xFFFD, -/* 12C8 */ 0xFFFD, 0xFFFD, 0x535E, 0x302E, 0x632B, 0xFFFD, 0xFFFD, 0x3850, -/* 12D0 */ 0x6333, 0xFFFD, 0xFFFD, 0x6336, 0xFFFD, 0xFFFD, 0xFFFD, 0x4022, -/* 12D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x633A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x626B, 0xFFFD, 0xFFFD, 0x627D, -/* 12E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6269, 0x787C, -/* 12F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12F8 */ 0x3448, 0xFFFD, 0x633B, 0x4C2C, 0x3B45, 0xFFFD, 0x4977, 0xFFFD, -/* 1300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x443D, 0xFFFD, 0xFFFD, -/* 1308 */ 0x3252, 0xFFFD, 0x3251, 0xFFFD, 0xFFFD, 0x6D2B, 0xFFFD, 0x627A, -/* 1310 */ 0xFFFD, 0xFFFD, 0x427D, 0x395F, 0x6D28, 0xFFFD, 0xFFFD, 0x3B5B, -/* 1318 */ 0x3F2E, 0xFFFD, 0x6266, 0x4B4B, 0xFFFD, 0xFFFD, 0x4247, 0xFFFD, -/* 1320 */ 0x4E3F, 0xFFFD, 0xFFFD, 0x6325, 0xFFFD, 0x633C, 0x476C, 0x3F36, -/* 1328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1330 */ 0xFFFD, 0xFFFD, 0x5347, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1338 */ 0xFFFD, 0xFFFD, 0x3139, 0x316F, 0xFFFD, 0xFFFD, 0x5477, 0xFFFD, -/* 1340 */ 0x412F, 0x463E, 0x6334, 0xFFFD, 0x633E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1348 */ 0xFFFD, 0xFFFD, 0x352C, 0xFFFD, 0xFFFD, 0x6D2D, 0xFFFD, 0xFFFD, -/* 1350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x375F, 0xFFFD, 0xFFFD, 0x633F, -/* 1358 */ 0x3A29, 0x6D2C, 0xFFFD, 0x4375, 0x633D, 0xFFFD, 0x6264, 0xFFFD, -/* 1360 */ 0xFFFD, 0xFFFD, 0x4F5C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5264, 0x6340, -/* 1368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A36, 0xFFFD, -/* 1370 */ 0xFFFD, 0xFFFD, 0x362E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F52, -/* 1378 */ 0x5038, 0x5326, 0x3043, 0x6D2E, 0x6278, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6341, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7856, 0x6D21, -/* 1390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D2F, 0xFFFD, 0xFFFD, 0x4533, 0xFFFD, -/* 1398 */ 0x627B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13A0 */ 0xFFFD, 0xFFFD, 0x334D, 0xFFFD, 0xFFFD, 0x6342, 0x4041, 0x3B33, -/* 13A8 */ 0x507C, 0xFFFD, 0x6263, 0xFFFD, 0x3E65, 0xFFFD, 0x4965, 0x5C32, -/* 13B0 */ 0x4135, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D30, -/* 13B8 */ 0x386A, 0xFFFD, 0x4E6C, 0xFFFD, 0x5067, 0x4A79, 0x4856, 0xFFFD, -/* 13C0 */ 0x3349, 0x4E52, 0x3D64, 0xFFFD, 0x6A27, 0x635E, 0x3B72, 0xFFFD, -/* 13C8 */ 0xFFFD, 0xFFFD, 0x465D, 0x6A29, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A2A, -/* 13D0 */ 0xFFFD, 0x6A2C, 0x6A2B, 0xFFFD, 0x6A2E, 0x6A2D, 0xFFFD, 0x6A28, -/* 13D8 */ 0xFFFD, 0x6A2F, 0x3D58, 0xFFFD, 0xFFFD, 0xFFFD, 0x423E, 0xFFFD, -/* 13E0 */ 0x553D, 0xFFFD, 0x4F37, 0x3441, 0x3477, 0xFFFD, 0xFFFD, 0x3B27, -/* 13E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C66, 0x6C65, 0x373F, -/* 13F0 */ 0x4B79, 0x3162, 0xFFFD, 0x6C67, 0xFFFD, 0xFFFD, 0xFFFD, 0x4948, -/* 13F8 */ 0x6C68, 0x6C69, 0xFFFD, 0x4A56, 0x5E50, 0x3245, 0x547A, 0xFFFD, -/* 1400 */ 0xFFFD, 0x785E, 0x3047, 0x3472, 0x4853, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1408 */ 0x4D50, 0xFFFD, 0xFFFD, 0x3F38, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F5B, 0xFFFD, 0xFFFD, 0x4724, 0xFFFD, -/* 1418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4524, 0x3067, 0x3336, -/* 1420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3062, 0xFFFD, 0xFFFD, 0x3776, 0xFFFD, -/* 1428 */ 0xFFFD, 0x457A, 0xFFFD, 0xFFFD, 0x3673, 0xFFFD, 0x5552, 0x3350, -/* 1430 */ 0x3C3C, 0xFFFD, 0xFFFD, 0xFFFD, 0x332D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1438 */ 0xFFFD, 0x3E71, 0x3051, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1440 */ 0xFFFD, 0x5256, 0x4A63, 0x5725, 0xFFFD, 0x4D36, 0x3636, 0x3F39, -/* 1448 */ 0x555B, 0xFFFD, 0xFFFD, 0x4557, 0x456A, 0xFFFD, 0xFFFD, 0x457B, -/* 1450 */ 0x4C27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3127, 0xFFFD, 0xFFFD, -/* 1458 */ 0xFFFD, 0x3556, 0xFFFD, 0xFFFD, 0xFFFD, 0x4428, 0xFFFD, 0x5E53, -/* 1460 */ 0x513A, 0x3369, 0xFFFD, 0x4372, 0xFFFD, 0xFFFD, 0x3777, 0xFFFD, -/* 1468 */ 0x5674, 0xFFFD, 0x3270, 0x4434, 0x4469, 0x402D, 0x5E54, 0xFFFD, -/* 1470 */ 0x3068, 0x4544, 0x4160, 0xFFFD, 0x3955, 0xFFFD, 0x3E5C, 0x4D58, -/* 1478 */ 0x304E, 0xFFFD, 0x4D4F, 0x5E56, 0x3E50, 0x573E, 0x5E55, 0x5550, -/* 1480 */ 0x305D, 0x4028, 0x4A43, 0x5E57, 0x557C, 0xFFFD, 0x3930, 0xFFFD, -/* 1488 */ 0x482D, 0x4B29, 0xFFFD, 0x5E59, 0x3F3D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1490 */ 0xFFFD, 0x4634, 0x5727, 0x4A30, 0x4443, 0xFFFD, 0x3356, 0x3952, -/* 1498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5638, 0x6A7C, 0x3034, 0xFFFD, -/* 14A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F66, 0xFFFD, 0xFFFD, 0x4C74, 0xFFFD, -/* 14A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D5A, 0x3024, 0xFFFD, 0x4532, 0x346C, -/* 14B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5571, 0xFFFD, 0xFFFD, 0x6A7D, 0xFFFD, -/* 14B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E5A, 0x4D26, 0xFFFD, -/* 14C0 */ 0xFFFD, 0x4D6C, 0x502E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E66, 0x5E5C, -/* 14C8 */ 0xFFFD, 0x4D31, 0x4026, 0xFFFD, 0xFFFD, 0x573D, 0xFFFD, 0x5E5B, -/* 14D0 */ 0x3046, 0x3A34, 0x4953, 0x4473, 0x3E68, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14D8 */ 0xFFFD, 0x3236, 0x4575, 0x4961, 0x5E66, 0xFFFD, 0x5E51, 0xFFFD, -/* 14E0 */ 0x5E63, 0x7846, 0xFFFD, 0xFFFD, 0x5E5F, 0x7847, 0xFFFD, 0xFFFD, -/* 14E8 */ 0xFFFD, 0x3437, 0x3D5D, 0xFFFD, 0xFFFD, 0x5E60, 0x446D, 0xFFFD, -/* 14F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F46, 0xFFFD, 0x3560, 0x4928, 0x4255, -/* 14F8 */ 0xFFFD, 0xFFFD, 0x365E, 0x4A5A, 0x3574, 0x5E65, 0xFFFD, 0x5546, -/* 1500 */ 0xFFFD, 0x5E61, 0x4C4D, 0x467E, 0xFFFD, 0x4545, 0xFFFD, 0xFFFD, -/* 1508 */ 0xFFFD, 0x5234, 0xFFFD, 0x3E72, 0x5575, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4253, 0xFFFD, 0x4C3D, 0x3338, 0xFFFD, -/* 1518 */ 0x3D53, 0xFFFD, 0x3F58, 0x4D46, 0x515A, 0x346B, 0xFFFD, 0x5E64, -/* 1520 */ 0x5E5D, 0x5E67, 0xFFFD, 0x6A7E, 0x5E72, 0xFFFD, 0x3C70, 0xFFFD, -/* 1528 */ 0xFFFD, 0xFFFD, 0x5E6D, 0xFFFD, 0x5E71, 0xFFFD, 0xFFFD, 0x4860, -/* 1530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5761, 0x5E6F, 0x4368, 0x4C61, 0xFFFD, -/* 1538 */ 0x3265, 0xFFFD, 0xFFFD, 0xFFFD, 0x523E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1540 */ 0x516F, 0x3B3B, 0xFFFD, 0xFFFD, 0x5E6E, 0xFFFD, 0x5E6B, 0x4E55, -/* 1548 */ 0xFFFD, 0x3427, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F2B, -/* 1550 */ 0x3E3E, 0xFFFD, 0xFFFD, 0x3D52, 0x3B53, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1558 */ 0x5E69, 0xFFFD, 0x542E, 0xFFFD, 0x5E5E, 0xFFFD, 0x5E6A, 0x5E75, -/* 1560 */ 0x5E78, 0x4B70, 0xFFFD, 0x322B, 0x3424, 0xFFFD, 0xFFFD, 0x346A, -/* 1568 */ 0x4926, 0xFFFD, 0xFFFD, 0x3537, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E76, -/* 1570 */ 0x4B51, 0xFFFD, 0x3863, 0xFFFD, 0x5E77, 0x5E7A, 0xFFFD, 0xFFFD, -/* 1578 */ 0xFFFD, 0xFFFD, 0x5E79, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C42, 0xFFFD, -/* 1580 */ 0x3061, 0x346E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1588 */ 0x653A, 0xFFFD, 0x4740, 0xFFFD, 0xFFFD, 0xFFFD, 0x502F, 0xFFFD, -/* 1590 */ 0xFFFD, 0x326B, 0xFFFD, 0x6B21, 0xFFFD, 0x5E74, 0xFFFD, 0xFFFD, -/* 1598 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5221, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E62, 0x5E70, 0xFFFD, -/* 15A8 */ 0x4B24, 0xFFFD, 0xFFFD, 0xFFFD, 0x552A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15B0 */ 0x5E68, 0xFFFD, 0x5E7B, 0x4227, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x345D, 0xFFFD, 0x4426, 0xFFFD, 0xFFFD, -/* 15C0 */ 0xFFFD, 0x5E7D, 0xFFFD, 0x563F, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F59, -/* 15C8 */ 0xFFFD, 0xFFFD, 0x5E52, 0xFFFD, 0x437E, 0x4421, 0x5F21, 0x3274, -/* 15D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x414C, 0xFFFD, -/* 15D8 */ 0xFFFD, 0x3E6F, 0xFFFD, 0x4632, 0x404C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3345, 0x4876, 0x4453, -/* 15E8 */ 0xFFFD, 0x4B3A, 0x5E7E, 0xFFFD, 0xFFFD, 0x5F24, 0xFFFD, 0xFFFD, -/* 15F0 */ 0xFFFD, 0xFFFD, 0x5732, 0x5E58, 0xFFFD, 0xFFFD, 0xFFFD, 0x3527, -/* 15F8 */ 0x3337, 0x3226, 0xFFFD, 0xFFFD, 0xFFFD, 0x4143, 0xFFFD, 0x3827, -/* 1600 */ 0x474B, 0x3225, 0x3469, 0xFFFD, 0x572B, 0xFFFD, 0x464B, 0x5E6C, -/* 1608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C22, -/* 1610 */ 0x3A33, 0xFFFD, 0x4E4E, 0x3C71, 0x5F26, 0x5335, 0x405E, 0xFFFD, -/* 1618 */ 0x4230, 0x4943, 0xFFFD, 0x5471, 0xFFFD, 0xFFFD, 0x3B77, 0x3532, -/* 1620 */ 0xFFFD, 0x3259, 0x4766, 0xFFFD, 0x5F27, 0xFFFD, 0x475C, 0xFFFD, -/* 1628 */ 0x3523, 0xFFFD, 0xFFFD, 0x5F28, 0x6B22, 0xFFFD, 0x3E5D, 0xFFFD, -/* 1630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C37, 0xFFFD, 0x5F2A, 0xFFFD, -/* 1638 */ 0x5F29, 0xFFFD, 0x3241, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1640 */ 0x4462, 0xFFFD, 0xFFFD, 0x3177, 0x4521, 0x3869, 0x5640, 0xFFFD, -/* 1648 */ 0x4029, 0xFFFD, 0xFFFD, 0x5F22, 0xFFFD, 0xFFFD, 0x305A, 0x4B53, -/* 1650 */ 0x5F23, 0xFFFD, 0x4845, 0xFFFD, 0x454A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1658 */ 0x5E73, 0xFFFD, 0x446C, 0xFFFD, 0xFFFD, 0x5F2B, 0xFFFD, 0xFFFD, -/* 1660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4223, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1668 */ 0x4039, 0xFFFD, 0x5E7C, 0xFFFD, 0x4841, 0x3273, 0xFFFD, 0x5F25, -/* 1670 */ 0xFFFD, 0x4963, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x545C, 0x424E, -/* 1678 */ 0x4C2F, 0x5F2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D41, 0x3E70, -/* 1680 */ 0x403F, 0xFFFD, 0x5F2D, 0x5627, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1688 */ 0x6A37, 0x6B36, 0x4A55, 0xFFFD, 0x587C, 0x3844, 0xFFFD, 0x3925, -/* 1690 */ 0xFFFD, 0xFFFD, 0x3745, 0x557E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1698 */ 0xFFFD, 0x394A, 0xFFFD, 0xFFFD, 0x5027, 0x744D, 0xFFFD, 0xFFFD, -/* 16A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4374, 0xFFFD, 0x3E48, 0xFFFD, 0xFFFD, -/* 16A8 */ 0xFFFD, 0x6B37, 0x303D, 0x305C, 0xFFFD, 0x3D4C, 0xFFFD, 0xFFFD, -/* 16B0 */ 0xFFFD, 0x3156, 0x3328, 0xFFFD, 0xFFFD, 0xFFFD, 0x3852, 0x4922, -/* 16B8 */ 0xFFFD, 0xFFFD, 0x3658, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B38, -/* 16C0 */ 0x3E34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4743, 0xFFFD, -/* 16C8 */ 0x557B, 0x3550, 0xFFFD, 0x3773, 0x4A7D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4132, 0x3150, -/* 16D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16E0 */ 0x3173, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C33, 0x305F, 0xFFFD, 0xFFFD, -/* 16E8 */ 0xFFFD, 0x6C35, 0xFFFD, 0x782F, 0xFFFD, 0x414F, 0xFFFD, 0x757A, -/* 16F0 */ 0x5031, 0xFFFD, 0xFFFD, 0x5565, 0xFFFD, 0x4E53, 0xFFFD, 0xFFFD, -/* 16F8 */ 0x3D6F, 0x3362, 0xFFFD, 0x382B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D3D, -/* 1700 */ 0x5536, 0xFFFD, 0xFFFD, 0x4B39, 0x5042, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1708 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x364F, 0xFFFD, 0x373D, 0xFFFD, 0xFFFD, -/* 1710 */ 0x6C36, 0x4A29, 0xFFFD, 0xFFFD, 0xFFFD, 0x4554, 0xFFFD, 0x6C39, -/* 1718 */ 0x6C38, 0x4243, 0x6C37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x507D, -/* 1720 */ 0x6C3A, 0xFFFD, 0x6C3B, 0x5765, 0xFFFD, 0xFFFD, 0x6C3C, 0xFFFD, -/* 1728 */ 0xFFFD, 0xFFFD, 0x6C3D, 0x466C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C48, 0xFFFD, -/* 1738 */ 0xFFFD, 0x4855, 0x3529, 0xFFFD, 0x563C, 0x5467, 0xFFFD, 0xFFFD, -/* 1740 */ 0x512E, 0x5071, 0x6A38, 0x6A39, 0x6A3A, 0x3A35, 0xFFFD, 0xFFFD, -/* 1748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D7A, 0xFFFD, -/* 1750 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A40, 0xFFFD, 0x303A, 0x6A3E, -/* 1758 */ 0xFFFD, 0xFFFD, 0x4025, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A3B, 0xFFFD, -/* 1760 */ 0x327D, 0xFFFD, 0x4377, 0x3B68, 0xFFFD, 0xFFFD, 0xFFFD, 0x5257, -/* 1768 */ 0x4E74, 0x6A3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1770 */ 0xFFFD, 0x6A43, 0xFFFD, 0x5047, 0x5333, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1778 */ 0xFFFD, 0x343A, 0xFFFD, 0x4341, 0x5772, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1780 */ 0xFFFD, 0x5551, 0xFFFD, 0x4A47, 0xFFFD, 0x6A45, 0xFFFD, 0xFFFD, -/* 1788 */ 0x6A44, 0x6A47, 0x6A46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A4B, 0x4A31, 0x3B4E, -/* 1798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D7A, 0xFFFD, 0xFFFD, -/* 17A0 */ 0x494E, 0xFFFD, 0xFFFD, 0x6A4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A4F, 0xFFFD, 0xFFFD, 0x4D6D, 0xFFFD, -/* 17B0 */ 0xFFFD, 0x5667, 0xFFFD, 0x6A49, 0xFFFD, 0x6A4E, 0xFFFD, 0xFFFD, -/* 17B8 */ 0x4E6E, 0xFFFD, 0x3B5E, 0xFFFD, 0x333F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17C0 */ 0xFFFD, 0xFFFD, 0x4655, 0x3E30, 0x4E7A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17C8 */ 0x4767, 0xFFFD, 0x3E27, 0x6A50, 0xFFFD, 0xFFFD, 0x5647, 0xFFFD, -/* 17D0 */ 0xFFFD, 0xFFFD, 0x4140, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17D8 */ 0x6A51, 0xFFFD, 0xFFFD, 0x4F3E, 0x544E, 0x6A4D, 0xFFFD, 0xFFFD, -/* 17E0 */ 0x6A52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A6E, 0xFFFD, 0xFFFD, -/* 17E8 */ 0xFFFD, 0xFFFD, 0x452F, 0x3035, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F0 */ 0xFFFD, 0x6A54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3329, 0xFFFD, -/* 17F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x745F, 0xFFFD, 0xFFFD, 0x545D, -/* 1800 */ 0xFFFD, 0xFFFD, 0x443A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1808 */ 0x3129, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x655F, 0xFFFD, 0xFFFD, -/* 1810 */ 0xFFFD, 0xFFFD, 0x6A55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1818 */ 0x6A4A, 0xFFFD, 0x784F, 0x6A3C, 0xFFFD, 0x4F7E, 0x6A53, 0xFFFD, -/* 1820 */ 0xFFFD, 0x4A6F, 0xFFFD, 0x6A56, 0x6A57, 0x4658, 0xFFFD, 0xFFFD, -/* 1828 */ 0x3F75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A58, 0xFFFD, -/* 1830 */ 0xFFFD, 0x6A59, 0xFFFD, 0xFFFD, 0x4939, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1838 */ 0x543B, 0xFFFD, 0x477A, 0x5237, 0x387C, 0xFFFD, 0xFFFD, 0x6A42, -/* 1840 */ 0x4A69, 0x325C, 0xFFFD, 0xFFFD, 0x427C, 0xFFFD, 0x5478, 0x4C66, -/* 1848 */ 0x576E, 0xFFFD, 0xFFFD, 0x3B61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1850 */ 0x5442, 0x5350, 0x6B43, 0x4573, 0xFFFD, 0x377E, 0xFFFD, 0xFFFD, -/* 1858 */ 0x6B54, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B37, 0x6B5E, 0xFFFD, 0x404A, -/* 1860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D7B, 0xFFFD, 0x332F, 0xFFFD, 0x465A, -/* 1868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B7C, 0x6B4A, -/* 1870 */ 0x443E, 0xFFFD, 0x4E34, 0x4429, 0x313E, 0x547D, 0xFFFD, 0x7868, -/* 1878 */ 0xFFFD, 0x566C, 0xFFFD, 0xFFFD, 0x7860, 0x3664, 0xFFFD, 0xFFFD, -/* 1880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5060, 0xFFFD, 0xFFFD, -/* 1888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x384B, 0xFFFD, -/* 1890 */ 0x683E, 0x493C, 0xFFFD, 0xFFFD, 0x683B, 0xFFFD, 0x406E, 0x5053, -/* 1898 */ 0x3244, 0x3465, 0xFFFD, 0x683C, 0xFFFD, 0xFFFD, 0x5548, 0xFFFD, -/* 18A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3645, 0xFFFD, 0x683D, 0x4A78, -/* 18A8 */ 0x385C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18B0 */ 0xFFFD, 0xFFFD, 0x6842, 0xFFFD, 0xFFFD, 0x3A3C, 0xFFFD, 0x312D, -/* 18B8 */ 0x3D5C, 0x362B, 0x6A3D, 0x6843, 0xFFFD, 0x6846, 0xFFFD, 0x684B, -/* 18C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x684C, 0xFFFD, 0x7869, 0x3065, -/* 18C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6841, -/* 18D0 */ 0xFFFD, 0x4D77, 0xFFFD, 0x684A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18D8 */ 0x4E76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x556D, 0xFFFD, 0x4156, -/* 18E0 */ 0x6844, 0xFFFD, 0x4336, 0xFFFD, 0x397B, 0x5626, 0x3F5D, 0x6852, -/* 18E8 */ 0xFFFD, 0xFFFD, 0x6857, 0xFFFD, 0x6855, 0x3C5C, 0x3C4F, 0x685B, -/* 18F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18F8 */ 0x685E, 0xFFFD, 0x685A, 0x317A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3058, 0x4433, -/* 1908 */ 0x384C, 0x4662, 0x483E, 0x4861, 0xFFFD, 0xFFFD, 0xFFFD, 0x684F, -/* 1910 */ 0x6854, 0x6856, 0xFFFD, 0xFFFD, 0x6858, 0x5775, 0xFFFD, 0xFFFD, -/* 1918 */ 0xFFFD, 0x685C, 0xFFFD, 0xFFFD, 0x3269, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1920 */ 0x6851, 0xFFFD, 0xFFFD, 0x3C6D, 0xFFFD, 0xFFFD, 0x3F42, 0x684D, -/* 1928 */ 0x5679, 0xFFFD, 0x4178, 0x3271, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A41, 0x6859, -/* 1938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5524, 0x4B28, 0xFFFD, 0xFFFD, -/* 1940 */ 0xFFFD, 0x4075, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6869, -/* 1948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5023, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6872, 0x566A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6860, 0x6861, 0xFFFD, 0xFFFD, -/* 1960 */ 0xFFFD, 0xFFFD, 0x3A4B, 0x3879, 0xFFFD, 0xFFFD, 0x3871, 0x5454, -/* 1968 */ 0xFFFD, 0xFFFD, 0x686E, 0x686C, 0x3970, 0x4C52, 0x6866, 0x4E26, -/* 1970 */ 0x3F72, 0xFFFD, 0x3038, 0x6871, 0x6870, 0xFFFD, 0x5740, 0xFFFD, -/* 1978 */ 0x6864, 0xFFFD, 0x4D29, 0x4923, 0xFFFD, 0x3B38, 0x3D5B, 0x686A, -/* 1980 */ 0x6878, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1988 */ 0xFFFD, 0x6875, 0xFFFD, 0x4D30, 0x6876, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x413A, 0xFFFD, -/* 1998 */ 0x6868, 0xFFFD, 0x4337, 0x3070, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6874, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A8 */ 0x6877, 0xFFFD, 0xFFFD, 0xFFFD, 0x3923, 0x6845, 0xFFFD, 0xFFFD, -/* 19B0 */ 0xFFFD, 0xFFFD, 0x4C75, 0xFFFD, 0x6849, 0xFFFD, 0xFFFD, 0x4952, -/* 19B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E60, 0x4066, 0xFFFD, 0xFFFD, -/* 19C0 */ 0xFFFD, 0xFFFD, 0x4B73, 0xFFFD, 0x4C5D, 0x5035, 0xFFFD, 0xFFFD, -/* 19C8 */ 0x4A61, 0xFFFD, 0x6873, 0x467A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19D0 */ 0x435E, 0xFFFD, 0x4665, 0xFFFD, 0x3977, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19D8 */ 0xFFFD, 0x3074, 0xFFFD, 0xFFFD, 0x5758, 0x6847, 0x5466, 0x3C2C, -/* 19E0 */ 0xFFFD, 0x456F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3630, 0x4C44, -/* 19E8 */ 0xFFFD, 0xFFFD, 0x6926, 0xFFFD, 0xFFFD, 0xFFFD, 0x553B, 0xFFFD, -/* 19F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x492D, 0xFFFD, 0x6922, -/* 19F8 */ 0x4062, 0x465C, 0xFFFD, 0xFFFD, 0x3F43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A00 */ 0x687E, 0x3957, 0xFFFD, 0x687B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A08 */ 0x6924, 0xFFFD, 0xFFFD, 0xFFFD, 0x524E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A10 */ 0xFFFD, 0xFFFD, 0x6923, 0xFFFD, 0x5632, 0x5735, 0x6862, 0x6927, -/* 1A18 */ 0xFFFD, 0x3D37, 0x522C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6932, 0xFFFD, -/* 1A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6929, 0xFFFD, 0xFFFD, 0xFFFD, 0x342A, -/* 1A28 */ 0xFFFD, 0x343B, 0xFFFD, 0xFFFD, 0x692B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x516E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3763, 0x5028, 0xFFFD, -/* 1A40 */ 0xFFFD, 0x6925, 0xFFFD, 0xFFFD, 0x337E, 0xFFFD, 0xFFFD, 0x692C, -/* 1A48 */ 0x4063, 0xFFFD, 0x692A, 0xFFFD, 0xFFFD, 0x6939, 0xFFFD, 0xFFFD, -/* 1A50 */ 0x6938, 0xFFFD, 0x6865, 0xFFFD, 0xFFFD, 0x692E, 0xFFFD, 0x5235, -/* 1A58 */ 0x687A, 0xFFFD, 0xFFFD, 0x6928, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C2B, -/* 1A60 */ 0xFFFD, 0x3F2C, 0x6931, 0x693A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A68 */ 0xFFFD, 0xFFFD, 0x692F, 0xFFFD, 0x3845, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A70 */ 0x535C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6947, -/* 1A78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4046, 0x6945, -/* 1A80 */ 0xFFFD, 0xFFFD, 0x6930, 0xFFFD, 0xFFFD, 0x693B, 0x3071, 0xFFFD, -/* 1A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A90 */ 0xFFFD, 0x693C, 0x5525, 0xFFFD, 0x683F, 0x693E, 0xFFFD, 0x693F, -/* 1A98 */ 0x4859, 0xFFFD, 0xFFFD, 0x6941, 0xFFFD, 0xFFFD, 0x4171, 0xFFFD, -/* 1AA0 */ 0xFFFD, 0x4836, 0xFFFD, 0xFFFD, 0xFFFD, 0x693D, 0xFFFD, 0xFFFD, -/* 1AA8 */ 0xFFFD, 0x6867, 0xFFFD, 0x6942, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6943, 0x3939, 0x6933, 0x4739, -/* 1AB8 */ 0x6936, 0xFFFD, 0x3B31, 0xFFFD, 0xFFFD, 0xFFFD, 0x6940, 0x687D, -/* 1AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x694A, 0xFFFD, 0xFFFD, -/* 1AC8 */ 0xFFFD, 0xFFFD, 0x694E, 0x3D30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x325B, 0xFFFD, 0x6948, -/* 1AD8 */ 0xFFFD, 0x572E, 0x4056, 0xFFFD, 0xFFFD, 0x6848, 0xFFFD, 0xFFFD, -/* 1AE0 */ 0xFFFD, 0xFFFD, 0x372E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4225, 0xFFFD, 0xFFFD, 0xFFFD, 0x694B, -/* 1AF0 */ 0x694C, 0x316A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A60, 0x5541, -/* 1AF8 */ 0xFFFD, 0x4423, 0xFFFD, 0x5179, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B00 */ 0x6958, 0xFFFD, 0x3A61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6954, 0xFFFD, 0xFFFD, -/* 1B10 */ 0x4653, 0x4A77, 0x686B, 0xFFFD, 0xFFFD, 0x6957, 0x6950, 0xFFFD, -/* 1B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x694F, 0xFFFD, 0xFFFD, 0x4741, -/* 1B20 */ 0x6863, 0xFFFD, 0xFFFD, 0x4745, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B28 */ 0x6952, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B30 */ 0x6959, 0x3348, 0xFFFD, 0x6953, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B7A, -/* 1B38 */ 0xFFFD, 0x4F70, 0x4D56, 0xFFFD, 0xFFFD, 0x694D, 0x4C34, 0xFFFD, -/* 1B40 */ 0xFFFD, 0xFFFD, 0x4F2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x685F, -/* 1B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6955, 0xFFFD, 0x695C, 0x695B, -/* 1B50 */ 0xFFFD, 0xFFFD, 0x3535, 0xFFFD, 0xFFFD, 0x695E, 0xFFFD, 0xFFFD, -/* 1B58 */ 0xFFFD, 0xFFFD, 0x686D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6951, 0xFFFD, -/* 1B60 */ 0x3C6C, 0x6949, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x695D, -/* 1B68 */ 0xFFFD, 0x695F, 0x434A, 0xFFFD, 0xFFFD, 0x786D, 0xFFFD, 0xFFFD, -/* 1B70 */ 0xFFFD, 0x6944, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x447B, 0xFFFD, -/* 1B78 */ 0xFFFD, 0x3C77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B80 */ 0xFFFD, 0x3971, 0x6956, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B88 */ 0xFFFD, 0x6935, 0x684E, 0xFFFD, 0x687C, 0x695A, 0x685D, 0xFFFD, -/* 1B90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6946, 0x6853, -/* 1B98 */ 0xFFFD, 0x6840, 0xFFFD, 0x6934, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BA0 */ 0xFFFD, 0xFFFD, 0x6850, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6937, -/* 1BA8 */ 0xFFFD, 0xFFFD, 0x5323, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4038, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BB8 */ 0xFFFD, 0x4828, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6921, 0xFFFD, -/* 1BC0 */ 0xFFFD, 0x686F, 0xFFFD, 0xFFFD, 0xFFFD, 0x692D, 0xFFFD, 0xFFFD, -/* 1BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6879, 0xFFFD, 0x4737, -/* 1BD0 */ 0x344E, 0xFFFD, 0x5040, 0x537B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BD8 */ 0x6C24, 0xFFFD, 0x6C25, 0x465B, 0xFFFD, 0xFFFD, 0x4755, 0x3F6E, -/* 1BE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C26, 0xFFFD, 0xFFFD, 0x6C27, -/* 1BE8 */ 0x502A, 0xFFFD, 0x4738, 0xFFFD, 0xFFFD, 0x3868, 0xFFFD, 0xFFFD, -/* 1BF0 */ 0xFFFD, 0x4537, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BF8 */ 0xFFFD, 0xFFFD, 0x6C28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C00 */ 0x6C23, 0xFFFD, 0x3B36, 0x5639, 0x557D, 0x344B, 0x323D, 0x4E64, -/* 1C08 */ 0x4667, 0xFFFD, 0xFFFD, 0x4D61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C18 */ 0x407A, 0x3969, 0x3475, 0xFFFD, 0x4B40, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C20 */ 0xFFFD, 0xFFFD, 0x6962, 0x6963, 0x516A, 0x6965, 0xFFFD, 0x3479, -/* 1C28 */ 0xFFFD, 0xFFFD, 0x5133, 0x4A62, 0xFFFD, 0xFFFD, 0x6968, 0xFFFD, -/* 1C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5633, -/* 1C38 */ 0xFFFD, 0x3250, 0xFFFD, 0xFFFD, 0x696A, 0xFFFD, 0xFFFD, 0x6966, -/* 1C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6964, 0xFFFD, 0xFFFD, -/* 1C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x696C, 0x6969, 0xFFFD, 0xFFFD, 0x6967, -/* 1C50 */ 0x696B, 0xFFFD, 0xFFFD, 0x3C5F, 0x6C2F, 0xFFFD, 0x364E, 0xFFFD, -/* 1C58 */ 0x5273, 0xFFFD, 0xFFFD, 0x4931, 0x3F47, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C60 */ 0x356E, 0xFFFD, 0x3B59, 0xFFFD, 0xFFFD, 0xFFFD, 0x5263, 0x4539, -/* 1C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E63, 0xFFFD, 0x4438, 0xFFFD, -/* 1C70 */ 0x433F, 0xFFFD, 0xFFFD, 0x363E, 0x5839, 0x3148, 0xFFFD, 0x3151, -/* 1C78 */ 0x457E, 0xFFFD, 0xFFFD, 0xFFFD, 0x432B, 0x6B24, 0x3A41, 0xFFFD, -/* 1C80 */ 0xFFFD, 0xFFFD, 0x4C3A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B25, 0xFFFD, -/* 1C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B28, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C90 */ 0x6B26, 0xFFFD, 0x6B27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C98 */ 0x6B29, 0x6B2B, 0xFFFD, 0x5531, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B2A, -/* 1CA0 */ 0x6B2C, 0xFFFD, 0x4A4F, 0x5835, 0x4371, 0xFFFD, 0x4325, 0xFFFD, -/* 1CA8 */ 0x6B2D, 0x444A, 0xFFFD, 0x6B2E, 0x6B2F, 0x6B30, 0x3755, 0xFFFD, -/* 1CB0 */ 0xFFFD, 0xFFFD, 0x377A, 0xFFFD, 0x6B31, 0xFFFD, 0x4678, 0x6B33, -/* 1CB8 */ 0xFFFD, 0x3A24, 0x5175, 0x3031, 0xFFFD, 0x6B34, 0x4762, 0x6B32, -/* 1CC0 */ 0xFFFD, 0x352A, 0x4248, 0x4768, 0xFFFD, 0x6B35, 0xFFFD, 0x4B2E, -/* 1CC8 */ 0x635F, 0xFFFD, 0xFFFD, 0x5340, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CD0 */ 0x595B, 0xFFFD, 0xFFFD, 0x4D21, 0x562D, 0x4773, 0xFFFD, 0xFFFD, -/* 1CD8 */ 0xFFFD, 0x5960, 0xFFFD, 0xFFFD, 0xFFFD, 0x6362, 0xFFFD, 0xFFFD, -/* 1CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F2B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6360, -/* 1CE8 */ 0x4947, 0xFFFD, 0x3A39, 0xFFFD, 0xFFFD, 0xFFFD, 0x5134, 0x6361, -/* 1CF0 */ 0x486A, 0x392F, 0x3D2D, 0x3358, 0x4E5B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6368, 0x6369, 0x4D74, 0xFFFD, 0xFFFD, -/* 1D00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C2D, 0xFFFD, 0x3C33, 0xFFFD, 0x636A, -/* 1D08 */ 0xFFFD, 0x636B, 0xFFFD, 0xFFFD, 0x505A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D10 */ 0x467B, 0x375A, 0xFFFD, 0xFFFD, 0x475F, 0x524A, 0x4E56, 0xFFFD, -/* 1D18 */ 0x6364, 0x636C, 0xFFFD, 0x4972, 0x3341, 0xFFFD, 0xFFFD, 0x6367, -/* 1D20 */ 0xFFFD, 0xFFFD, 0x4663, 0x6365, 0xFFFD, 0xFFFD, 0x6D33, 0x6366, -/* 1D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4933, 0xFFFD, 0x4566, 0xFFFD, -/* 1D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x433B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x442D, 0xFFFD, -/* 1D40 */ 0x6370, 0x3E5A, 0xFFFD, 0xFFFD, 0x637B, 0x6375, 0x3A53, 0xFFFD, -/* 1D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3750, 0x534D, 0xFFFD, 0x564E, 0x5553, -/* 1D50 */ 0x3941, 0x5534, 0x5158, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5039, -/* 1D58 */ 0x4776, 0xFFFD, 0xFFFD, 0xFFFD, 0x482A, 0x3234, 0xFFFD, 0x435A, -/* 1D60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x636E, 0xFFFD, 0xFFFD, 0x637C, 0x636F, -/* 1D68 */ 0x3728, 0x6377, 0x6374, 0xFFFD, 0xFFFD, 0xFFFD, 0x373A, 0xFFFD, -/* 1D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6376, 0x455D, 0x3228, 0x467C, 0xFFFD, -/* 1D78 */ 0x4460, 0xFFFD, 0xFFFD, 0x5722, 0xFFFD, 0x4061, 0x6379, 0xFFFD, -/* 1D80 */ 0xFFFD, 0x637A, 0x637D, 0x4C29, 0x6373, 0xFFFD, 0x533E, 0xFFFD, -/* 1D88 */ 0x3143, 0x6427, 0xFFFD, 0xFFFD, 0x6426, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D90 */ 0x5173, 0x6423, 0xFFFD, 0x6429, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F34, 0xFFFD, 0x6428, 0x642E, -/* 1DA0 */ 0x4265, 0xFFFD, 0xFFFD, 0x3634, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DA8 */ 0xFFFD, 0xFFFD, 0x3D72, 0xFFFD, 0x6422, 0xFFFD, 0xFFFD, 0x3A69, -/* 1DB0 */ 0x642A, 0xFFFD, 0xFFFD, 0x642C, 0xFFFD, 0xFFFD, 0x367D, 0x565E, -/* 1DB8 */ 0x6432, 0xFFFD, 0x642D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6421, 0xFFFD, -/* 1DC0 */ 0x3B6E, 0xFFFD, 0x4722, 0x4549, 0xFFFD, 0xFFFD, 0x4177, 0x5563, -/* 1DC8 */ 0x3F23, 0xFFFD, 0x643A, 0xFFFD, 0x6437, 0xFFFD, 0x643B, 0xFFFD, -/* 1DD0 */ 0xFFFD, 0x643D, 0xFFFD, 0xFFFD, 0x4656, 0xFFFD, 0xFFFD, 0x3A46, -/* 1DD8 */ 0x404B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3821, 0x6434, 0xFFFD, 0xFFFD, -/* 1DE0 */ 0xFFFD, 0xFFFD, 0x5421, 0xFFFD, 0xFFFD, 0x3A23, 0x3D7E, 0x6424, -/* 1DE8 */ 0xFFFD, 0xFFFD, 0x643C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DF0 */ 0x786F, 0xFFFD, 0xFFFD, 0x4479, 0xFFFD, 0x637E, 0x4F7B, 0x4966, -/* 1DF8 */ 0xFFFD, 0xFFFD, 0x533F, 0xFFFD, 0x4F51, 0xFFFD, 0xFFFD, 0x6433, -/* 1E00 */ 0xFFFD, 0x6438, 0x6439, 0x4C69, 0x3822, 0x644A, 0xFFFD, 0xFFFD, -/* 1E08 */ 0x644C, 0x5144, 0xFFFD, 0xFFFD, 0x523A, 0xFFFD, 0xFFFD, 0x3A2D, -/* 1E10 */ 0xFFFD, 0xFFFD, 0x3A54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E18 */ 0xFFFD, 0x6443, 0x782D, 0xFFFD, 0xFFFD, 0xFFFD, 0x574D, 0x6440, -/* 1E20 */ 0x4F7D, 0x643F, 0xFFFD, 0xFFFD, 0xFFFD, 0x415C, 0x4C4A, 0xFFFD, -/* 1E28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E30 */ 0x4457, 0xFFFD, 0x4C54, 0x6448, 0xFFFD, 0xFFFD, 0xFFFD, 0x6447, -/* 1E38 */ 0x6441, 0xFFFD, 0x6444, 0x352D, 0xFFFD, 0xFFFD, 0x5359, 0xFFFD, -/* 1E40 */ 0x6446, 0xFFFD, 0xFFFD, 0xFFFD, 0x4259, 0x5279, 0x3463, 0xFFFD, -/* 1E48 */ 0x3B34, 0xFFFD, 0xFFFD, 0x496E, 0xFFFD, 0x343E, 0xFFFD, 0x5428, -/* 1E50 */ 0x6435, 0x3B6C, 0xFFFD, 0x514D, 0x4733, 0x4C6D, 0x6D35, 0xFFFD, -/* 1E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4765, -/* 1E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x644B, 0x3B41, -/* 1E68 */ 0x643E, 0xFFFD, 0xFFFD, 0x5365, 0xFFFD, 0xFFFD, 0x477E, 0x3649, -/* 1E70 */ 0xFFFD, 0x547C, 0x3233, 0x6457, 0x4E50, 0xFFFD, 0xFFFD, 0x4E42, -/* 1E78 */ 0xFFFD, 0x644D, 0x3262, 0x4E3C, 0xFFFD, 0x385B, 0xFFFD, 0xFFFD, -/* 1E80 */ 0x6456, 0xFFFD, 0x3F4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x534E, 0xFFFD, -/* 1E88 */ 0x436C, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B6B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E90 */ 0xFFFD, 0x4548, 0x6458, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D44, 0x644F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EA0 */ 0xFFFD, 0x6454, 0x6455, 0xFFFD, 0x3A7E, 0xFFFD, 0x4F66, 0xFFFD, -/* 1EA8 */ 0xFFFD, 0x553F, 0xFFFD, 0xFFFD, 0x6425, 0x6452, 0x6450, 0xFFFD, -/* 1EB0 */ 0xFFFD, 0x644E, 0x4C40, 0x6453, 0xFFFD, 0xFFFD, 0x3848, 0xFFFD, -/* 1EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6467, 0x5434, 0xFFFD, 0xFFFD, -/* 1EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x573C, 0xFFFD, 0x645B, 0xFFFD, 0xFFFD, -/* 1EC8 */ 0xFFFD, 0x416F, 0x3935, 0xFFFD, 0x6469, 0xFFFD, 0xFFFD, 0x5267, -/* 1ED0 */ 0xFFFD, 0xFFFD, 0x645F, 0xFFFD, 0x6460, 0xFFFD, 0xFFFD, 0x4F2A, -/* 1ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B5D, 0xFFFD, 0x645A, 0x6451, -/* 1EE0 */ 0xFFFD, 0x6465, 0xFFFD, 0x485C, 0x6463, 0xFFFD, 0xFFFD, 0x4467, -/* 1EE8 */ 0x6462, 0xFFFD, 0x6461, 0xFFFD, 0xFFFD, 0xFFFD, 0x337C, 0x6468, -/* 1EF0 */ 0xFFFD, 0x3257, 0x4370, 0xFFFD, 0x3561, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EF8 */ 0x574C, 0x3553, 0xFFFD, 0x5C7E, 0x6466, 0xFFFD, 0x3B2C, 0xFFFD, -/* 1F00 */ 0x5752, 0x4C4F, 0x6B78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3976, -/* 1F08 */ 0x3B26, 0xFFFD, 0xFFFD, 0x564D, 0xFFFD, 0xFFFD, 0x4978, 0xFFFD, -/* 1F10 */ 0x354E, 0xFFFD, 0xFFFD, 0x4231, 0x6430, 0x646F, 0xFFFD, 0xFFFD, -/* 1F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x427A, 0xFFFD, 0x5366, 0x462F, 0xFFFD, -/* 1F20 */ 0xFFFD, 0xFFFD, 0x4661, 0xFFFD, 0xFFFD, 0x6475, 0xFFFD, 0xFFFD, -/* 1F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4229, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F30 */ 0x515D, 0x646E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x453D, 0xFFFD, -/* 1F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x442E, 0xFFFD, 0x3A3A, 0x4130, -/* 1F40 */ 0x646D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6476, 0x6474, 0x427E, -/* 1F48 */ 0x5755, 0x645D, 0xFFFD, 0x6470, 0xFFFD, 0x4A7E, 0x5547, 0x5544, -/* 1F50 */ 0xFFFD, 0xFFFD, 0x6471, 0xFFFD, 0x3D25, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F58 */ 0xFFFD, 0xFFFD, 0x517A, 0x3D2C, 0xFFFD, 0x7223, 0x4643, 0xFFFD, -/* 1F60 */ 0xFFFD, 0x3D60, 0xFFFD, 0xFFFD, 0xFFFD, 0x454B, 0x636D, 0xFFFD, -/* 1F68 */ 0x4731, 0xFFFD, 0xFFFD, 0x423A, 0xFFFD, 0xFFFD, 0xFFFD, 0x646A, -/* 1F70 */ 0xFFFD, 0x4873, 0xFFFD, 0x414A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F78 */ 0xFFFD, 0xFFFD, 0x4C36, 0x3331, 0x6431, 0x4023, 0xFFFD, 0x647B, -/* 1F80 */ 0xFFFD, 0x6473, 0xFFFD, 0xFFFD, 0x6464, 0x647A, 0xFFFD, 0x647D, -/* 1F88 */ 0xFFFD, 0x647C, 0xFFFD, 0xFFFD, 0x6436, 0x492C, 0xFFFD, 0xFFFD, -/* 1F90 */ 0xFFFD, 0x334E, 0xFFFD, 0x3D3D, 0x4054, 0x333A, 0x6477, 0xFFFD, -/* 1F98 */ 0xFFFD, 0x6479, 0x6478, 0x456C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D27, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6445, 0x5468, 0xFFFD, -/* 1FB0 */ 0xFFFD, 0x5473, 0xFFFD, 0xFFFD, 0x6522, 0xFFFD, 0x6D34, 0xFFFD, -/* 1FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x642B, 0xFFFD, 0xFFFD, 0x356D, 0xFFFD, -/* 1FC0 */ 0x3044, 0xFFFD, 0xFFFD, 0x6524, 0xFFFD, 0xFFFD, 0x6523, 0xFFFD, -/* 1FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C24, 0x5747, 0x6525, -/* 1FD0 */ 0x4528, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6521, 0x4A2A, -/* 1FD8 */ 0xFFFD, 0xFFFD, 0x4522, 0xFFFD, 0xFFFD, 0x7855, 0xFFFD, 0xFFFD, -/* 1FE0 */ 0x6528, 0x3C43, 0x6529, 0x6526, 0xFFFD, 0xFFFD, 0x4C4E, 0xFFFD, -/* 1FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4044, 0xFFFD, 0xFFFD, -/* 1FF0 */ 0x6527, 0x652A, 0x4E2B, 0x3175, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D26, 0xFFFD, 0x6378, 0xFFFD, -/* 2000 */ 0x424B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x645E, -/* 2008 */ 0x6442, 0xFFFD, 0xFFFD, 0x503A, 0xFFFD, 0x6449, 0xFFFD, 0xFFFD, -/* 2010 */ 0xFFFD, 0x642F, 0xFFFD, 0x4659, 0xFFFD, 0xFFFD, 0xFFFD, 0x3174, -/* 2018 */ 0xFFFD, 0xFFFD, 0x6372, 0xFFFD, 0x652B, 0x652D, 0xFFFD, 0x4124, -/* 2020 */ 0xFFFD, 0x646C, 0x646B, 0xFFFD, 0xFFFD, 0x652C, 0xFFFD, 0xFFFD, -/* 2028 */ 0xFFFD, 0x6371, 0x647E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2030 */ 0xFFFD, 0xFFFD, 0x7858, 0xFFFD, 0x6472, 0xFFFD, 0xFFFD, 0x652F, -/* 2038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x652E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2040 */ 0x403D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6363, 0x645C, 0xFFFD, -/* 2048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3960, 0xFFFD, -/* 2050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4877, 0xFFFD, 0xFFFD, 0xFFFD, 0x406C, -/* 2058 */ 0xFFFD, 0xFFFD, 0x4C32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6530, -/* 2060 */ 0x6531, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D65, 0x4250, 0xFFFD, -/* 2068 */ 0xFFFD, 0x6459, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B70, 0x6C61, 0xFFFD, -/* 2070 */ 0xFFFD, 0xFFFD, 0x3B52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2078 */ 0xFFFD, 0xFFFD, 0x3E44, 0xFFFD, 0xFFFD, 0xFFFD, 0x5746, 0xFFFD, -/* 2080 */ 0x5456, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A41, -/* 2088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3436, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2090 */ 0x5157, 0xFFFD, 0xFFFD, 0xFFFD, 0x3334, 0xFFFD, 0x4832, 0x3F3B, -/* 2098 */ 0x6C40, 0xFFFD, 0xFFFD, 0x564B, 0x6C45, 0x3E66, 0x4C3F, 0x455A, -/* 20A0 */ 0x3E3C, 0xFFFD, 0x6C46, 0xFFFD, 0x317E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20A8 */ 0x6C44, 0x5528, 0xFFFD, 0xFFFD, 0x6C42, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20B0 */ 0xFFFD, 0x6C43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20B8 */ 0xFFFD, 0x4152, 0xFFFD, 0x6C48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20C0 */ 0x4E5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20C8 */ 0xFFFD, 0x3A66, 0x4053, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20D0 */ 0x514C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F3E, 0xFFFD, 0xFFFD, -/* 20D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20E0 */ 0x4F29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C7E, 0xFFFD, 0xFFFD, -/* 20E8 */ 0x4D69, 0xFFFD, 0x456B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3769, 0x5149, -/* 20F0 */ 0x3A38, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C49, 0xFFFD, -/* 20F8 */ 0xFFFD, 0x6C4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x313A, -/* 2100 */ 0x3759, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E5E, -/* 2108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D39, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C4C, 0x5166, 0x6C4D, -/* 2118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x483B, 0x6C51, 0xFFFD, 0xFFFD, -/* 2120 */ 0xFFFD, 0x4136, 0x6C53, 0xFFFD, 0x3B4D, 0xFFFD, 0x3C65, 0xFFFD, -/* 2128 */ 0xFFFD, 0xFFFD, 0x6C3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C4F, 0xFFFD, 0x4937, 0xFFFD, -/* 2138 */ 0xFFFD, 0xFFFD, 0x5C64, 0xFFFD, 0x433A, 0x3B40, 0x6C63, 0x5555, -/* 2140 */ 0x6C50, 0x3733, 0xFFFD, 0xFFFD, 0x6C3E, 0xFFFD, 0x5673, 0xFFFD, -/* 2148 */ 0xFFFD, 0xFFFD, 0x6C52, 0x6C4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2150 */ 0x6C54, 0xFFFD, 0x6C55, 0xFFFD, 0xFFFD, 0x493F, 0xFFFD, 0xFFFD, -/* 2158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F28, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2160 */ 0xFFFD, 0xFFFD, 0x505C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x512C, -/* 2168 */ 0xFFFD, 0xFFFD, 0x532B, 0xFFFD, 0x485B, 0xFFFD, 0xFFFD, 0x6C41, -/* 2170 */ 0x6C56, 0x4E75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A6C, -/* 2178 */ 0x6C5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2180 */ 0x6C59, 0xFFFD, 0xFFFD, 0xFFFD, 0x303E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2188 */ 0xFFFD, 0x4848, 0xFFFD, 0x6C57, 0xFFFD, 0x6C58, 0xFFFD, 0xFFFD, -/* 2190 */ 0xFFFD, 0x6C64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3363, 0xFFFD, -/* 2198 */ 0xFFFD, 0x6C47, 0xFFFD, 0x483C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21A0 */ 0x3546, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4147, 0xFFFD, -/* 21A8 */ 0xFFFD, 0xFFFD, 0x4955, 0xFFFD, 0x6C5C, 0x5160, 0xFFFD, 0xFFFD, -/* 21B0 */ 0xFFFD, 0x4C4C, 0xFFFD, 0xFFFD, 0x6C4B, 0xFFFD, 0xFFFD, 0x532A, -/* 21B8 */ 0x6C5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x546F, 0x3253, 0x6C5D, -/* 21C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5672, 0x5B46, 0xFFFD, -/* 21C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B62, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21D0 */ 0xFFFD, 0x6C5E, 0xFFFD, 0xFFFD, 0x3D7D, 0xFFFD, 0x6C62, 0xFFFD, -/* 21D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x312C, 0xFFFD, -/* 21E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B38, 0xFFFD, 0xFFFD, -/* 21E8 */ 0x422F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4043, 0xFFFD, 0x6C5F, 0xFFFD, 0xFFFD, -/* 21F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2200 */ 0x6C60, 0xFFFD, 0x5726, 0xFFFD, 0x4540, 0x5579, 0xFFFD, 0xFFFD, -/* 2208 */ 0x6B3C, 0xFFFD, 0x4E2A, 0xFFFD, 0xFFFD, 0x3E74, 0x3838, 0xFFFD, -/* 2210 */ 0x3056, 0x3579, 0x522F, 0x5833, 0xFFFD, 0x4B2C, 0x367B, 0x635D, -/* 2218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x462C, -/* 2220 */ 0x3066, 0xFFFD, 0xFFFD, 0xFFFD, 0x4546, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2228 */ 0xFFFD, 0xFFFD, 0x6B3A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B3B, 0xFFFD, -/* 2230 */ 0x6B39, 0x5140, 0xFFFD, 0x4523, 0xFFFD, 0x6A72, 0xFFFD, 0x4432, -/* 2238 */ 0xFFFD, 0x4435, 0x404E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A73, 0x4441, -/* 2240 */ 0xFFFD, 0x4E6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A70, 0x6A74, -/* 2248 */ 0xFFFD, 0xFFFD, 0x497C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2250 */ 0xFFFD, 0x4C58, 0xFFFD, 0xFFFD, 0xFFFD, 0x4723, 0x6A75, 0x6A76, -/* 2258 */ 0x4F2C, 0x4067, 0xFFFD, 0xFFFD, 0x6A77, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A78, 0xFFFD, 0x6A79, 0xFFFD, 0x6A7A, -/* 2268 */ 0xFFFD, 0xFFFD, 0x6A7B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C7D, 0xFFFD, -/* 2270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A71, -/* 2278 */ 0xFFFD, 0xFFFD, 0x363F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E7E, -/* 2280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x482E, 0x616B, 0xFFFD, 0x3738, -/* 2288 */ 0x616C, 0xFFFD, 0xFFFD, 0xFFFD, 0x616D, 0x5734, 0x6171, 0x3F71, -/* 2290 */ 0x6170, 0x3552, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2298 */ 0xFFFD, 0xFFFD, 0x6173, 0x6172, 0xFFFD, 0x3A7C, 0xFFFD, 0x6174, -/* 22A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3937, 0xFFFD, 0x3E51, 0xFFFD, -/* 22A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A5D, 0x3D46, 0xFFFD, -/* 22B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6175, 0x6177, 0xFFFD, -/* 22B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22C0 */ 0x617C, 0x6179, 0xFFFD, 0xFFFD, 0x617A, 0x406A, 0x4F41, 0x617E, -/* 22C8 */ 0x6221, 0x4047, 0x3137, 0xFFFD, 0xFFFD, 0xFFFD, 0x617B, 0xFFFD, -/* 22D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6225, -/* 22D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22E0 */ 0x6223, 0xFFFD, 0xFFFD, 0x327E, 0x6222, 0xFFFD, 0x5578, 0xFFFD, -/* 22E8 */ 0x434D, 0x3242, 0x6227, 0x6226, 0xFFFD, 0xFFFD, 0xFFFD, 0x6229, -/* 22F0 */ 0xFFFD, 0xFFFD, 0x622B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5049, 0x566D, -/* 22F8 */ 0x4328, 0x622C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x622E, 0xFFFD, -/* 2300 */ 0xFFFD, 0x3A6F, 0xFFFD, 0x534C, 0x6960, 0x622D, 0x622A, 0xFFFD, -/* 2308 */ 0x6178, 0xFFFD, 0xFFFD, 0x3B2B, 0x5433, 0xFFFD, 0x616F, 0xFFFD, -/* 2310 */ 0xFFFD, 0x537C, 0x4A28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2318 */ 0xFFFD, 0xFFFD, 0x6230, 0xFFFD, 0xFFFD, 0x622F, 0xFFFD, 0x6961, -/* 2320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6231, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6232, 0xFFFD, 0xFFFD, -/* 2330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3640, 0xFFFD, 0x6176, -/* 2338 */ 0x617D, 0x6233, 0xFFFD, 0xFFFD, 0x6234, 0x447C, 0xFFFD, 0x3B71, -/* 2340 */ 0xFFFD, 0xFFFD, 0x4154, 0xFFFD, 0x616E, 0x4A5E, 0xFFFD, 0x4C21, -/* 2348 */ 0x4F57, 0x6228, 0xFFFD, 0x6235, 0xFFFD, 0x6224, 0xFFFD, 0xFFFD, -/* 2350 */ 0xFFFD, 0x507E, 0xFFFD, 0xFFFD, 0x424A, 0xFFFD, 0x5371, 0xFFFD, -/* 2358 */ 0x4D75, 0xFFFD, 0xFFFD, 0x6760, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6764, 0xFFFD, 0xFFFD, 0x6763, -/* 2370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D66, 0xFFFD, -/* 2378 */ 0x4335, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4161, -/* 2380 */ 0x6769, 0xFFFD, 0xFFFD, 0xFFFD, 0x6768, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2388 */ 0x3223, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x676A, 0xFFFD, 0x6766, -/* 2390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x676C, 0x676B, 0x493A, -/* 2398 */ 0xFFFD, 0xFFFD, 0x5564, 0xFFFD, 0x6765, 0x3729, 0xFFFD, 0xFFFD, -/* 23A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x676E, 0xFFFD, -/* 23A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6773, 0xFFFD, 0x5669, 0xFFFD, 0xFFFD, -/* 23B0 */ 0xFFFD, 0xFFFD, 0x676D, 0xFFFD, 0x6772, 0xFFFD, 0x6771, 0xFFFD, -/* 23B8 */ 0xFFFD, 0xFFFD, 0x3060, 0x4F56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23C0 */ 0x4772, 0xFFFD, 0x4045, 0x406D, 0xFFFD, 0xFFFD, 0x4170, 0x6770, -/* 23C8 */ 0x6822, 0x6821, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23D0 */ 0x5741, 0xFFFD, 0xFFFD, 0x677A, 0x6779, 0xFFFD, 0x677B, 0xFFFD, -/* 23D8 */ 0x6777, 0xFFFD, 0x677E, 0xFFFD, 0x677D, 0xFFFD, 0x677C, 0xFFFD, -/* 23E0 */ 0xFFFD, 0x4155, 0x4759, 0x457D, 0x4543, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6775, 0xFFFD, 0x6823, -/* 23F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23F8 */ 0xFFFD, 0x6762, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6826, 0xFFFD, 0x6825, 0xFFFD, 0x6827, -/* 2408 */ 0x3A77, 0x6778, 0x6824, 0xFFFD, 0x4870, 0x492A, 0xFFFD, 0xFFFD, -/* 2410 */ 0xFFFD, 0x4B76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5328, -/* 2418 */ 0x426A, 0xFFFD, 0xFFFD, 0x6829, 0xFFFD, 0xFFFD, 0x3965, 0xFFFD, -/* 2420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x517E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x682A, 0xFFFD, 0x682D, 0x682E, -/* 2430 */ 0xFFFD, 0x4127, 0xFFFD, 0xFFFD, 0xFFFD, 0x682F, 0xFFFD, 0x6776, -/* 2438 */ 0xFFFD, 0x6830, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6834, 0x682B, -/* 2440 */ 0xFFFD, 0x6831, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6761, 0xFFFD, -/* 2448 */ 0xFFFD, 0x6828, 0x6835, 0x6832, 0x6833, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6837, 0xFFFD, 0xFFFD, -/* 2460 */ 0x6774, 0x476D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6767, 0xFFFD, -/* 2468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x682C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2470 */ 0xFFFD, 0x6836, 0xFFFD, 0x394F, 0xFFFD, 0x702C, 0xFFFD, 0x702D, -/* 2478 */ 0xFFFD, 0x4630, 0x306A, 0x483F, 0xFFFD, 0x4D5F, 0xFFFD, 0xFFFD, -/* 2480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E4D, 0xFFFD, 0xFFFD, -/* 2488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A32, 0xFFFD, 0x463F, 0x3449, 0xFFFD, -/* 2490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A33, 0xFFFD, -/* 2498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5567, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A31, 0x5D79, 0xFFFD, 0x6A34, 0xFFFD, -/* 24A8 */ 0x6A35, 0xFFFD, 0x6A36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x384A, -/* 24B0 */ 0x5F30, 0x4975, 0xFFFD, 0x4C70, 0xFFFD, 0xFFFD, 0x497A, 0xFFFD, -/* 24B8 */ 0xFFFD, 0xFFFD, 0x327A, 0xFFFD, 0x497B, 0xFFFD, 0xFFFD, 0x5343, -/* 24C0 */ 0x4B26, 0xFFFD, 0x3826, 0x702E, 0x3142, 0xFFFD, 0x6538, 0x4C6F, -/* 24C8 */ 0x5349, 0x3C57, 0x496A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4450, 0x3569, -/* 24D0 */ 0xFFFD, 0x6E2E, 0xFFFD, 0xFFFD, 0xFFFD, 0x675E, 0xFFFD, 0x6E2F, -/* 24D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E32, -/* 24E0 */ 0xFFFD, 0xFFFD, 0x6E31, 0x3D67, 0xFFFD, 0x6E30, 0x4E37, 0xFFFD, -/* 24E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x454F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24F0 */ 0x4174, 0x5B4E, 0x6E33, 0x5073, 0x4436, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24F8 */ 0xFFFD, 0x314F, 0xFFFD, 0xFFFD, 0x4254, 0x4668, 0xFFFD, 0xFFFD, -/* 2500 */ 0xFFFD, 0x372C, 0x3B2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2508 */ 0xFFFD, 0x6E34, 0xFFFD, 0xFFFD, 0xFFFD, 0x3531, 0xFFFD, 0x3B7B, -/* 2510 */ 0x6E35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x675C, 0xFFFD, -/* 2518 */ 0xFFFD, 0xFFFD, 0x6E36, 0xFFFD, 0xFFFD, 0x3D2E, 0x336B, 0xFFFD, -/* 2520 */ 0xFFFD, 0x357E, 0x7162, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A68, 0xFFFD, -/* 2528 */ 0x5249, 0x705A, 0xFFFD, 0x705B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2530 */ 0x386D, 0x3E4E, 0xFFFD, 0xFFFD, 0x705E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2538 */ 0xFFFD, 0xFFFD, 0x7060, 0x304C, 0x3D6A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2540 */ 0xFFFD, 0xFFFD, 0x525F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7066, -/* 2548 */ 0x7065, 0x4623, 0x7061, 0x7062, 0x3443, 0xFFFD, 0xFFFD, 0x7063, -/* 2550 */ 0x556E, 0xFFFD, 0xFFFD, 0x4C5B, 0x3E52, 0x3C32, 0xFFFD, 0xFFFD, -/* 2558 */ 0xFFFD, 0x7068, 0x7067, 0x7064, 0x3221, 0xFFFD, 0x7921, 0xFFFD, -/* 2560 */ 0xFFFD, 0x482C, 0xFFFD, 0xFFFD, 0x706A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x564C, 0x3A5B, 0xFFFD, 0xFFFD, 0x363B, -/* 2570 */ 0x3E37, 0xFFFD, 0x4D34, 0xFFFD, 0xFFFD, 0x4626, 0xFFFD, 0xFFFD, -/* 2578 */ 0xFFFD, 0x4121, 0x706B, 0x706E, 0xFFFD, 0x706D, 0x7070, 0xFFFD, -/* 2580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C35, -/* 2588 */ 0x7072, 0xFFFD, 0xFFFD, 0x3355, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2590 */ 0x3154, 0xFFFD, 0xFFFD, 0x7073, 0xFFFD, 0xFFFD, 0x7074, 0x7076, -/* 2598 */ 0x3461, 0x7069, 0x7071, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25A0 */ 0xFFFD, 0x707A, 0x3768, 0x7078, 0x5171, 0xFFFD, 0xFFFD, 0x7075, -/* 25A8 */ 0xFFFD, 0xFFFD, 0x3B3E, 0xFFFD, 0x707D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25B0 */ 0x707E, 0xFFFD, 0x7121, 0xFFFD, 0xFFFD, 0x7079, 0x4E41, 0x7124, -/* 25B8 */ 0x342F, 0x7123, 0xFFFD, 0x4176, 0x707B, 0x4A5D, 0x4531, 0xFFFD, -/* 25C0 */ 0x3471, 0xFFFD, 0xFFFD, 0xFFFD, 0x7126, 0xFFFD, 0xFFFD, 0x7127, -/* 25C8 */ 0xFFFD, 0xFFFD, 0x712C, 0x554E, 0x7129, 0xFFFD, 0xFFFD, 0x4833, -/* 25D0 */ 0xFFFD, 0xFFFD, 0x707C, 0x7122, 0xFFFD, 0xFFFD, 0xFFFD, 0x7125, -/* 25D8 */ 0xFFFD, 0x4146, 0x712A, 0xFFFD, 0xFFFD, 0x706C, 0x706F, 0xFFFD, -/* 25E0 */ 0x7077, 0xFFFD, 0xFFFD, 0x3029, 0x712D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x712F, 0xFFFD, 0x7131, 0xFFFD, 0x705D, -/* 25F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7130, 0xFFFD, 0xFFFD, 0x3171, 0xFFFD, -/* 25F8 */ 0xFFFD, 0x5177, 0xFFFD, 0x705C, 0x5622, 0xFFFD, 0x705F, 0xFFFD, -/* 2600 */ 0x712E, 0xFFFD, 0xFFFD, 0x5122, 0x7128, 0x712B, 0x7133, 0x5338, -/* 2608 */ 0x4C31, 0x7132, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x396F, -/* 2610 */ 0xFFFD, 0xFFFD, 0x3547, 0x3722, 0x3057, 0x3059, 0xFFFD, 0xFFFD, -/* 2618 */ 0xFFFD, 0x546D, 0xFFFD, 0x3544, 0xFFFD, 0x3D54, 0x3B4A, 0x7027, -/* 2620 */ 0xFFFD, 0xFFFD, 0x385E, 0xFFFD, 0xFFFD, 0x7028, 0xFFFD, 0xFFFD, -/* 2628 */ 0xFFFD, 0xFFFD, 0x7029, 0xFFFD, 0xFFFD, 0x4D6E, 0xFFFD, 0xFFFD, -/* 2630 */ 0x702A, 0x3028, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x702B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4624, 0xFFFD, 0xFFFD, -/* 2648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7165, 0xFFFD, 0xFFFD, 0xFFFD, 0x7164, -/* 2650 */ 0xFFFD, 0x5665, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4373, 0xFFFD, -/* 2658 */ 0xFFFD, 0x535B, 0xFFFD, 0xFFFD, 0x5651, 0x4568, 0xFFFD, 0x532F, -/* 2660 */ 0xFFFD, 0x5266, 0xFFFD, 0xFFFD, 0x6E41, 0x303B, 0xFFFD, 0xFFFD, -/* 2668 */ 0xFFFD, 0x3A50, 0xFFFD, 0x3F78, 0xFFFD, 0xFFFD, 0x3541, 0xFFFD, -/* 2670 */ 0xFFFD, 0xFFFD, 0x4A22, 0xFFFD, 0xFFFD, 0x5535, 0x434B, 0xFFFD, -/* 2678 */ 0x3E21, 0xFFFD, 0x3C60, 0x454C, 0x6E42, 0xFFFD, 0x422C, 0xFFFD, -/* 2680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x443F, 0x3622, 0xFFFD, -/* 2688 */ 0x6D6C, 0x4324, 0xFFFD, 0x5631, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F60, -/* 2690 */ 0x6D6F, 0xFFFD, 0xFFFD, 0x454E, 0xFFFD, 0x365C, 0xFFFD, 0xFFFD, -/* 2698 */ 0x4A21, 0xFFFD, 0xFFFD, 0x6D6D, 0xFFFD, 0xFFFD, 0x6D70, 0x6D71, -/* 26A0 */ 0x433C, 0xFFFD, 0x3F34, 0x6D74, 0x6D72, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26A8 */ 0xFFFD, 0x5566, 0x435F, 0xFFFD, 0x6D73, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26B0 */ 0x6D76, 0xFFFD, 0x5523, 0x5123, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D75, -/* 26B8 */ 0xFFFD, 0x4350, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D77, -/* 26C0 */ 0x3F74, 0x3E6C, 0x6D78, 0xFFFD, 0x4C77, 0xFFFD, 0x515B, 0xFFFD, -/* 26C8 */ 0xFFFD, 0xFFFD, 0x5745, 0xFFFD, 0xFFFD, 0x6D7C, 0xFFFD, 0xFFFD, -/* 26D0 */ 0xFFFD, 0x6D7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26D8 */ 0xFFFD, 0x784A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D7D, 0x3E26, 0x5576, 0xFFFD, -/* 26E8 */ 0x6D79, 0xFFFD, 0xFFFD, 0x4B2F, 0x6E21, 0x363D, 0xFFFD, 0x6E22, -/* 26F0 */ 0x4440, 0xFFFD, 0x6D7E, 0xFFFD, 0xFFFD, 0x3D5E, 0x3247, 0x3643, -/* 26F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E25, 0x583A, 0x6E23, 0x6E26, 0xFFFD, -/* 2700 */ 0xFFFD, 0xFFFD, 0x4369, 0x3372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2708 */ 0xFFFD, 0xFFFD, 0x6E27, 0x6E24, 0x4F39, 0xFFFD, 0xFFFD, 0x6E28, -/* 2710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D6E, 0xFFFD, -/* 2718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4277, 0x6E29, 0x6E2A, 0xFFFD, -/* 2720 */ 0x5E2B, 0xFFFD, 0xFFFD, 0x4633, 0xFFFD, 0x4746, 0xFFFD, 0xFFFD, -/* 2728 */ 0x3549, 0xFFFD, 0x4B32, 0x7851, 0xFFFD, 0xFFFD, 0x6E2B, 0xFFFD, -/* 2730 */ 0xFFFD, 0x4D2B, 0xFFFD, 0x6E2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2738 */ 0xFFFD, 0x5530, 0x6D7A, 0x6E2D, 0xFFFD, 0x7644, 0xFFFD, 0xFFFD, -/* 2740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7857, 0xFFFD, 0xFFFD, -/* 2748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2750 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3423, 0xFFFD, 0xFFFD, -/* 2758 */ 0x5675, 0x432C, 0x7166, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2760 */ 0x4A38, 0x5253, 0xFFFD, 0x562A, 0xFFFD, 0x6F72, 0xFFFD, 0x3E58, -/* 2768 */ 0xFFFD, 0xFFFD, 0x6F73, 0x364C, 0x302B, 0x3D43, 0xFFFD, 0xFFFD, -/* 2770 */ 0xFFFD, 0x4A2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D37, 0xFFFD, -/* 2778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2780 */ 0x4930, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D39, -/* 2788 */ 0xFFFD, 0xFFFD, 0x4676, 0x3F33, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D3C, -/* 2790 */ 0x4578, 0xFFFD, 0x5150, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D3B, 0xFFFD, -/* 2798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D40, 0xFFFD, 0x6D44, 0xFFFD, 0xFFFD, -/* 27A0 */ 0xFFFD, 0x6D48, 0xFFFD, 0x6D46, 0x6D4E, 0x5568, 0xFFFD, 0x6D49, -/* 27A8 */ 0xFFFD, 0xFFFD, 0x6D47, 0x6D3E, 0xFFFD, 0xFFFD, 0x4569, 0xFFFD, -/* 27B0 */ 0xFFFD, 0xFFFD, 0x4646, 0xFFFD, 0xFFFD, 0x4969, 0x5452, 0x6D41, -/* 27B8 */ 0xFFFD, 0xFFFD, 0x6D45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27C0 */ 0xFFFD, 0x7927, 0xFFFD, 0x3968, 0xFFFD, 0x6D50, 0xFFFD, 0xFFFD, -/* 27C8 */ 0xFFFD, 0xFFFD, 0x6D51, 0xFFFD, 0x6D4A, 0xFFFD, 0x6D4F, 0xFFFD, -/* 27D0 */ 0x4E78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27E0 */ 0xFFFD, 0xFFFD, 0x6D4C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D3A, 0xFFFD, -/* 27E8 */ 0x6D52, 0x4172, 0x5332, 0x6D4B, 0x7866, 0x5162, 0x4570, 0xFFFD, -/* 27F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27F8 */ 0xFFFD, 0x6D56, 0xFFFD, 0x356F, 0xFFFD, 0xFFFD, 0x4235, 0xFFFD, -/* 2800 */ 0x4B69, 0xFFFD, 0xFFFD, 0x312E, 0xFFFD, 0x6D54, 0xFFFD, 0xFFFD, -/* 2808 */ 0xFFFD, 0x4D6B, 0x3562, 0xFFFD, 0x6D55, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2810 */ 0xFFFD, 0x357A, 0xFFFD, 0x6D58, 0xFFFD, 0x6D59, 0xFFFD, 0x6D5C, -/* 2818 */ 0xFFFD, 0x314C, 0xFFFD, 0x4B36, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D38, -/* 2820 */ 0xFFFD, 0xFFFD, 0x4576, 0x3C6E, 0x6D5A, 0x4C3C, 0x326A, 0xFFFD, -/* 2828 */ 0xFFFD, 0xFFFD, 0x6D3F, 0x6D5B, 0x4837, 0xFFFD, 0x426B, 0xFFFD, -/* 2830 */ 0x446B, 0xFFFD, 0xFFFD, 0x3445, 0xFFFD, 0xFFFD, 0xFFFD, 0x3075, -/* 2838 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5F, 0x405A, 0x3468, 0xFFFD, 0xFFFD, -/* 2840 */ 0xFFFD, 0xFFFD, 0x454D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5D, 0x3F44, -/* 2848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5E, 0x5729, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D57, 0xFFFD, 0xFFFD, -/* 2858 */ 0xFFFD, 0x6D53, 0x4425, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D60, 0xFFFD, -/* 2860 */ 0xFFFD, 0x6D36, 0xFFFD, 0xFFFD, 0x6D61, 0xFFFD, 0x6D63, 0xFFFD, -/* 2868 */ 0xFFFD, 0x4157, 0xFFFD, 0xFFFD, 0x3B47, 0xFFFD, 0xFFFD, 0x6D4D, -/* 2870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D38, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D62, -/* 2878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2880 */ 0x3421, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D64, 0xFFFD, 0xFFFD, -/* 2888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x302D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2890 */ 0x6D66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D65, 0xFFFD, -/* 2898 */ 0x3F73, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D42, 0x4079, 0x372F, 0xFFFD, -/* 28A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D43, 0xFFFD, 0xFFFD, 0x6D67, 0xFFFD, -/* 28A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A3E, 0x6C6A, 0xFFFD, 0xFFFD, -/* 28B0 */ 0x4967, 0xFFFD, 0x6C6B, 0x466E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28B8 */ 0x6C6C, 0xFFFD, 0x466D, 0x6C6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C70, 0xFFFD, 0xFFFD, -/* 28C8 */ 0x5766, 0x6C73, 0xFFFD, 0xFFFD, 0x6C71, 0x6C6E, 0x6C6F, 0x5723, -/* 28D0 */ 0x4971, 0x4B6E, 0x6C74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F69, -/* 28D8 */ 0xFFFD, 0x6C76, 0x4631, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C40, -/* 28E0 */ 0x6C77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5977, 0x3D7B, -/* 28E8 */ 0xFFFD, 0xFFFD, 0x423B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28F0 */ 0x6C79, 0xFFFD, 0xFFFD, 0x3B76, 0x6C75, 0x3823, 0xFFFD, 0xFFFD, -/* 28F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2900 */ 0x6C7A, 0x787A, 0x6C7B, 0xFFFD, 0xFFFD, 0x6C78, 0xFFFD, 0xFFFD, -/* 2908 */ 0xFFFD, 0x4071, 0xFFFD, 0x6C72, 0x353B, 0xFFFD, 0x6C7C, 0xFFFD, -/* 2910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x536D, 0x582E, 0xFFFD, 0xFFFD, -/* 2918 */ 0x475D, 0x3A4C, 0xFFFD, 0x5063, 0x4B3D, 0xFFFD, 0x4D3A, 0xFFFD, -/* 2920 */ 0xFFFD, 0x3851, 0xFFFD, 0xFFFD, 0x317C, 0xFFFD, 0x476F, 0xFFFD, -/* 2928 */ 0x7926, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F46, 0x436B, 0xFFFD, 0xFFFD, -/* 2930 */ 0x6F75, 0xFFFD, 0xFFFD, 0x4358, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2938 */ 0xFFFD, 0xFFFD, 0x5762, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F77, 0x3353, -/* 2940 */ 0xFFFD, 0x4758, 0x516D, 0xFFFD, 0x5648, 0xFFFD, 0x6F78, 0xFFFD, -/* 2948 */ 0x6F76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D55, 0xFFFD, 0xFFFD, 0x5246, 0xFFFD, -/* 2958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F21, 0xFFFD, 0x6F7C, 0x6F7B, 0xFFFD, -/* 2960 */ 0xFFFD, 0x6F79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x334C, 0xFFFD, -/* 2968 */ 0x4954, 0x4B30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F7E, -/* 2970 */ 0xFFFD, 0xFFFD, 0x305E, 0xFFFD, 0xFFFD, 0x5649, 0xFFFD, 0xFFFD, -/* 2978 */ 0xFFFD, 0x6F7D, 0xFFFD, 0x336D, 0x5656, 0xFFFD, 0xFFFD, 0x3346, -/* 2980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7022, 0xFFFD, 0x7021, -/* 2988 */ 0xFFFD, 0x353E, 0x3C5A, 0x3B7C, 0xFFFD, 0x3865, 0x7836, 0xFFFD, -/* 2990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4442, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2998 */ 0xFFFD, 0xFFFD, 0x7655, 0x3B7D, 0x5331, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B6B, 0xFFFD, 0xFFFD, -/* 29A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7023, -/* 29B0 */ 0x3B60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E48, -/* 29B8 */ 0xFFFD, 0x783E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7026, 0xFFFD, -/* 29C0 */ 0xFFFD, 0xFFFD, 0x5128, 0xFFFD, 0x3E3F, 0xFFFD, 0x7136, 0x7137, -/* 29C8 */ 0x3F55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3429, 0x7138, 0x4D3B, -/* 29D0 */ 0xFFFD, 0xFFFD, 0x552D, 0xFFFD, 0x7139, 0xFFFD, 0x713A, 0xFFFD, -/* 29D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5224, -/* 29E0 */ 0x564F, 0xFFFD, 0xFFFD, 0x713B, 0x3D51, 0x3430, 0x3E3D, 0xFFFD, -/* 29E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F5F, 0x713D, 0xFFFD, -/* 29F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x713F, 0x4E51, -/* 29F8 */ 0x4D5D, 0xFFFD, 0x713E, 0xFFFD, 0x476E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A00 */ 0xFFFD, 0x7141, 0xFFFD, 0xFFFD, 0x7140, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A08 */ 0x3F7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x417E, 0xFFFD, 0xFFFD, -/* 2A10 */ 0xFFFD, 0xFFFD, 0x345C, 0x474F, 0xFFFD, 0x713C, 0x546E, 0xFFFD, -/* 2A18 */ 0x4754, 0x4122, 0x553E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A20 */ 0x3E39, 0x5542, 0xFFFD, 0xFFFD, 0x3F22, 0xFFFD, 0x4D2F, 0x7135, -/* 2A28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A7A, 0xFFFD, 0xFFFD, 0x3D5F, 0xFFFD, -/* 2A30 */ 0x364B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E3A, -/* 2A38 */ 0xFFFD, 0xFFFD, 0x5671, 0x7343, 0xFFFD, 0xFFFD, 0x7344, 0xFFFD, -/* 2A40 */ 0x384D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7347, 0xFFFD, 0x304A, -/* 2A48 */ 0xFFFD, 0x7345, 0xFFFD, 0x7349, 0x4B71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A50 */ 0x734B, 0xFFFD, 0x5026, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A58 */ 0xFFFD, 0xFFFD, 0x734F, 0xFFFD, 0x3551, 0xFFFD, 0xFFFD, 0x7357, -/* 2A60 */ 0xFFFD, 0x7352, 0xFFFD, 0xFFFD, 0xFFFD, 0x7354, 0x7353, 0x377B, -/* 2A68 */ 0xFFFD, 0x313F, 0xFFFD, 0x734E, 0x734A, 0x355A, 0xFFFD, 0x7350, -/* 2A70 */ 0xFFFD, 0xFFFD, 0x7351, 0xFFFD, 0x7355, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A78 */ 0xFFFD, 0x734D, 0x735A, 0x314A, 0x734C, 0xFFFD, 0x3548, 0xFFFD, -/* 2A80 */ 0x3D6E, 0x735C, 0xFFFD, 0xFFFD, 0x3724, 0x3F70, 0x7928, 0x4D32, -/* 2A88 */ 0xFFFD, 0x3470, 0xFFFD, 0x325F, 0xFFFD, 0x7358, 0xFFFD, 0xFFFD, -/* 2A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x735E, 0xFFFD, 0x7361, -/* 2A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7348, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x735F, 0xFFFD, 0xFFFD, 0x7363, 0x7362, -/* 2AA8 */ 0xFFFD, 0xFFFD, 0x735B, 0xFFFD, 0x3F6A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AB0 */ 0x7360, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AB8 */ 0xFFFD, 0xFFFD, 0x736B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AC0 */ 0x3C63, 0xFFFD, 0x393F, 0xFFFD, 0x735D, 0x7364, 0xFFFD, 0xFFFD, -/* 2AC8 */ 0xFFFD, 0x322D, 0x3B7E, 0xFFFD, 0x4B63, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AD0 */ 0xFFFD, 0x736D, 0x7369, 0xFFFD, 0xFFFD, 0xFFFD, 0x395C, 0x736E, -/* 2AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AE0 */ 0xFFFD, 0x7368, 0x3C7D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F64, 0xFFFD, -/* 2AE8 */ 0xFFFD, 0x7370, 0xFFFD, 0xFFFD, 0xFFFD, 0x7367, 0xFFFD, 0xFFFD, -/* 2AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D5A, 0x7372, 0xFFFD, -/* 2AF8 */ 0xFFFD, 0x3736, 0xFFFD, 0x572D, 0x462A, 0xFFFD, 0x567E, 0xFFFD, -/* 2B00 */ 0x7366, 0x7373, 0x385D, 0x7375, 0xFFFD, 0xFFFD, 0x7374, 0xFFFD, -/* 2B08 */ 0xFFFD, 0xFFFD, 0x345B, 0xFFFD, 0xFFFD, 0x7346, 0x7376, 0x7377, -/* 2B10 */ 0xFFFD, 0xFFFD, 0x4938, 0x7378, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7359, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B20 */ 0x4571, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x737B, 0xFFFD, 0x737A, -/* 2B28 */ 0xFFFD, 0x7365, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B30 */ 0x3458, 0xFFFD, 0xFFFD, 0xFFFD, 0x737E, 0x7379, 0x4228, 0xFFFD, -/* 2B38 */ 0x737C, 0x736C, 0x7421, 0xFFFD, 0x3C72, 0xFFFD, 0x7371, 0xFFFD, -/* 2B40 */ 0xFFFD, 0x7423, 0x3B49, 0xFFFD, 0xFFFD, 0x7422, 0x736F, 0x7424, -/* 2B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4729, 0x4131, 0x323E, 0x7426, -/* 2B50 */ 0xFFFD, 0xFFFD, 0x403A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x336F, 0x3C2E, 0x736A, 0xFFFD, 0xFFFD, -/* 2B60 */ 0x7425, 0x417D, 0xFFFD, 0xFFFD, 0xFFFD, 0x7862, 0xFFFD, 0xFFFD, -/* 2B68 */ 0xFFFD, 0xFFFD, 0x7356, 0x737D, 0xFFFD, 0x4069, 0xFFFD, 0x4261, -/* 2B70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x787B, 0x4357, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x744C, 0x5751, 0x375B, -/* 2B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x744E, -/* 2B88 */ 0x4123, 0xFFFD, 0xFFFD, 0x4649, 0xFFFD, 0x3456, 0x5533, 0xFFFD, -/* 2B90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7451, 0x4B5A, 0xFFFD, 0xFFFD, -/* 2B98 */ 0x7452, 0xFFFD, 0x5441, 0x5660, 0x413B, 0x7453, 0x3E2C, 0xFFFD, -/* 2BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3462, 0xFFFD, 0xFFFD, 0x7454, -/* 2BA8 */ 0x7455, 0x3E2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BB0 */ 0x745B, 0xFFFD, 0x7457, 0x745A, 0xFFFD, 0x3A7D, 0xFFFD, 0x7458, -/* 2BB8 */ 0x7459, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BC0 */ 0x3862, 0x4C47, 0x745C, 0xFFFD, 0x325A, 0xFFFD, 0xFFFD, 0x4353, -/* 2BC8 */ 0x7456, 0x3760, 0x5463, 0x3F37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BD0 */ 0xFFFD, 0xFFFD, 0x4138, 0x745D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BD8 */ 0xFFFD, 0xFFFD, 0x4534, 0x7870, 0xFFFD, 0x744F, 0xFFFD, 0x5961, -/* 2BE0 */ 0xFFFD, 0x7450, 0xFFFD, 0x7469, 0x6679, 0xFFFD, 0x4F35, 0xFFFD, -/* 2BE8 */ 0xFFFD, 0x3E40, 0xFFFD, 0x3C4D, 0xFFFD, 0x667B, 0xFFFD, 0x543C, -/* 2BF0 */ 0x3A6C, 0x667A, 0x667C, 0x667D, 0x4852, 0x4E49, 0x4E46, 0xFFFD, -/* 2BF8 */ 0x4449, 0xFFFD, 0xFFFD, 0x4526, 0xFFFD, 0xFFFD, 0x6723, 0x343F, -/* 2C00 */ 0x6722, 0xFFFD, 0x4934, 0xFFFD, 0x563D, 0x3C36, 0x3757, 0x6721, -/* 2C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B58, 0x3744, 0x4B77, 0xFFFD, 0xFFFD, -/* 2C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x574F, 0xFFFD, -/* 2C18 */ 0xFFFD, 0xFFFD, 0x405B, 0x4F38, 0x6726, 0x6725, 0x4970, 0xFFFD, -/* 2C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x495C, 0x6724, 0xFFFD, 0x6728, -/* 2C28 */ 0xFFFD, 0xFFFD, 0x672A, 0x6729, 0xFFFD, 0x5655, 0xFFFD, 0x5769, -/* 2C30 */ 0xFFFD, 0x306D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C38 */ 0xFFFD, 0x672C, 0xFFFD, 0x3D61, 0x672B, 0x3D4A, 0xFFFD, 0xFFFD, -/* 2C40 */ 0x4267, 0x5124, 0xFFFD, 0xFFFD, 0xFFFD, 0x3878, 0xFFFD, 0x485E, -/* 2C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5075, 0xFFFD, 0xFFFD, -/* 2C50 */ 0x4D33, 0x4B3F, 0x672D, 0xFFFD, 0xFFFD, 0x3E78, 0xFFFD, 0xFFFD, -/* 2C58 */ 0x3E6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C60 */ 0x3073, 0xFFFD, 0x672F, 0xFFFD, 0xFFFD, 0x672E, 0xFFFD, 0x6730, -/* 2C68 */ 0x5065, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B67, 0xFFFD, -/* 2C70 */ 0xFFFD, 0xFFFD, 0x3E2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x575B, 0xFFFD, 0x6736, 0xFFFD, 0xFFFD, -/* 2C80 */ 0xFFFD, 0x3371, 0x6739, 0xFFFD, 0xFFFD, 0x746B, 0xFFFD, 0xFFFD, -/* 2C88 */ 0xFFFD, 0xFFFD, 0x4F5F, 0x6737, 0x4E2C, 0x746C, 0xFFFD, 0x673A, -/* 2C90 */ 0x3859, 0x4D78, 0x3141, 0x573A, 0xFFFD, 0xFFFD, 0xFFFD, 0x425A, -/* 2C98 */ 0x6738, 0x6732, 0x5540, 0xFFFD, 0x3442, 0x6731, 0x4360, 0xFFFD, -/* 2CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6735, 0xFFFD, 0xFFFD, 0x673B, 0xFFFD, -/* 2CA8 */ 0xFFFD, 0x3D74, 0x6733, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CB0 */ 0x424C, 0x5077, 0xFFFD, 0x6734, 0xFFFD, 0xFFFD, 0x673D, 0x3C6A, -/* 2CB8 */ 0x673C, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C29, 0x3650, 0xFFFD, 0x355E, -/* 2CC0 */ 0x6745, 0xFFFD, 0x5435, 0xFFFD, 0xFFFD, 0x6741, 0xFFFD, 0x3160, -/* 2CC8 */ 0x3B3A, 0xFFFD, 0xFFFD, 0x4365, 0xFFFD, 0xFFFD, 0x4E33, 0xFFFD, -/* 2CD0 */ 0x6743, 0x673F, 0xFFFD, 0x4137, 0xFFFD, 0x6742, 0xFFFD, 0xFFFD, -/* 2CD8 */ 0x673E, 0xFFFD, 0x7924, 0x5D53, 0x6746, 0x674B, 0x6744, 0xFFFD, -/* 2CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6727, 0x674C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x383F, 0xFFFD, -/* 2CF0 */ 0x6747, 0x6749, 0x6748, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F58, 0xFFFD, -/* 2CF8 */ 0xFFFD, 0xFFFD, 0x4C50, 0xFFFD, 0xFFFD, 0xFFFD, 0x376C, 0xFFFD, -/* 2D00 */ 0x674A, 0x4B75, 0xFFFD, 0xFFFD, 0x575D, 0x6750, 0xFFFD, 0x7863, -/* 2D08 */ 0x674F, 0x746A, 0x4246, 0xFFFD, 0x674E, 0xFFFD, 0x7763, 0xFFFD, -/* 2D10 */ 0x575C, 0x3C28, 0xFFFD, 0xFFFD, 0x3731, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D18 */ 0x6752, 0x6751, 0x746D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6755, 0xFFFD, 0x562F, -/* 2D28 */ 0x4949, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6754, 0xFFFD, 0xFFFD, -/* 2D30 */ 0xFFFD, 0x4846, 0xFFFD, 0xFFFD, 0xFFFD, 0x6740, 0xFFFD, 0xFFFD, -/* 2D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x497E, 0x3B66, 0x7873, 0xFFFD, -/* 2D40 */ 0x3C6B, 0x6756, 0x6759, 0x6758, 0xFFFD, 0xFFFD, 0x3D49, 0xFFFD, -/* 2D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x526F, 0xFFFD, 0xFFFD, 0x3C4C, -/* 2D50 */ 0x674D, 0x6757, 0xFFFD, 0xFFFD, 0xFFFD, 0x576B, 0xFFFD, 0xFFFD, -/* 2D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6753, 0xFFFD, 0x667E, 0xFFFD, 0x5078, -/* 2D60 */ 0x784D, 0xFFFD, 0x3278, 0xFFFD, 0xFFFD, 0xFFFD, 0x5327, 0x7826, -/* 2D68 */ 0xFFFD, 0x4F4B, 0xFFFD, 0x675A, 0xFFFD, 0xFFFD, 0x746E, 0x4042, -/* 2D70 */ 0x733E, 0xFFFD, 0x3857, 0xFFFD, 0x4831, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7340, 0x7341, -/* 2D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x733F, 0xFFFD, -/* 2D88 */ 0x786E, 0xFFFD, 0x395E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5868, 0x3A31, -/* 2D90 */ 0xFFFD, 0xFFFD, 0x6E37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D98 */ 0xFFFD, 0x6E39, 0xFFFD, 0x6E38, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DA0 */ 0xFFFD, 0xFFFD, 0x6E3B, 0x5556, 0x576F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DA8 */ 0x5643, 0xFFFD, 0x3723, 0x6E3D, 0x4A70, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DB0 */ 0xFFFD, 0x3055, 0xFFFD, 0x6E3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DB8 */ 0x6E40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x425E, -/* 2DC0 */ 0x6E3C, 0xFFFD, 0x6E3F, 0xFFFD, 0x5172, 0xFFFD, 0x473C, 0xFFFD, -/* 2DC8 */ 0x4340, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3861, 0xFFFD, -/* 2DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4167, 0xFFFD, 0xFFFD, 0x7446, -/* 2DD8 */ 0x505F, 0xFFFD, 0xFFFD, 0x4F5B, 0xFFFD, 0xFFFD, 0x483A, 0x7447, -/* 2DE0 */ 0xFFFD, 0x7448, 0xFFFD, 0x5265, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DE8 */ 0xFFFD, 0x7449, 0x744A, 0xFFFD, 0x744B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DF0 */ 0xFFFD, 0xFFFD, 0x597A, 0x387E, 0xFFFD, 0xFFFD, 0x6571, 0x5370, -/* 2DF8 */ 0xFFFD, 0x7460, 0xFFFD, 0x4E4C, 0xFFFD, 0xFFFD, 0xFFFD, 0x3361, -/* 2E00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7134, 0xFFFD, 0x526E, 0xFFFD, -/* 2E08 */ 0x7461, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F30, 0xFFFD, 0x4F68, 0x7462, -/* 2E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E18 */ 0xFFFD, 0x3554, 0x3464, 0x7464, 0xFFFD, 0xFFFD, 0xFFFD, 0x7463, -/* 2E20 */ 0x7465, 0xFFFD, 0xFFFD, 0x7466, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E28 */ 0x7467, 0xFFFD, 0x3A32, 0x303F, 0xFFFD, 0x7468, 0xFFFD, 0xFFFD, -/* 2E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x474C, 0xFFFD, 0x372D, 0x526D, 0xFFFD, -/* 2E38 */ 0xFFFD, 0xFFFD, 0x522B, 0x404F, 0xFFFD, 0x3F3C, 0x6B23, 0x555F, -/* 2E40 */ 0x6A48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7173, 0x3678, 0x4B23, -/* 2E48 */ 0xFFFD, 0xFFFD, 0x444D, 0xFFFD, 0x7167, 0xFFFD, 0x7168, 0x387B, -/* 2E50 */ 0x7169, 0x3A44, 0x5445, 0x3052, 0xFFFD, 0xFFFD, 0x716A, 0xFFFD, -/* 2E58 */ 0xFFFD, 0xFFFD, 0x716B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x716D, -/* 2E60 */ 0x716E, 0xFFFD, 0x7171, 0x7170, 0x4555, 0xFFFD, 0x716F, 0xFFFD, -/* 2E68 */ 0x716C, 0xFFFD, 0xFFFD, 0x7172, 0xFFFD, 0x367A, 0xFFFD, 0x7174, -/* 2E70 */ 0x522E, 0x5E47, 0xFFFD, 0xFFFD, 0xFFFD, 0x335C, 0xFFFD, 0x3522, -/* 2E78 */ 0xFFFD, 0x3922, 0xFFFD, 0xFFFD, 0xFFFD, 0x7175, 0xFFFD, 0xFFFD, -/* 2E80 */ 0x7176, 0xFFFD, 0xFFFD, 0xFFFD, 0x4144, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7178, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E90 */ 0x4A25, 0xFFFD, 0x4638, 0xFFFD, 0x3E5B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E98 */ 0x4E45, 0x412A, 0x344F, 0x717A, 0x4979, 0x4B4A, 0xFFFD, 0x7179, -/* 2EA0 */ 0x4474, 0x5630, 0xFFFD, 0x7177, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C7D, -/* 2EA8 */ 0x417B, 0x6D32, 0x6D31, 0xFFFD, 0xFFFD, 0xFFFD, 0x525E, 0x4B60, -/* 2EB0 */ 0x4B41, 0x5558, 0xFFFD, 0x4862, 0xFFFD, 0x405F, 0x3C21, 0xFFFD, -/* 2EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B41, 0xFFFD, 0xFFFD, -/* 2EC0 */ 0x5024, 0xFFFD, 0x5662, 0xFFFD, 0x3647, 0x3858, 0x6B40, 0x384E, -/* 2EC8 */ 0xFFFD, 0x6B3F, 0xFFFD, 0x3949, 0x562B, 0xFFFD, 0xFFFD, 0x374A, -/* 2ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C67, 0x373E, 0x6B46, 0xFFFD, 0x6B47, -/* 2ED8 */ 0xFFFD, 0x3F4F, 0xFFFD, 0x6B45, 0x537D, 0xFFFD, 0x6B48, 0xFFFD, -/* 2EE0 */ 0xFFFD, 0x6B49, 0xFFFD, 0xFFFD, 0x374E, 0xFFFD, 0x6B42, 0x6B44, -/* 2EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B4F, 0x4E38, 0x6B50, 0xFFFD, -/* 2EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3133, 0x6B52, -/* 2EF8 */ 0x4C25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F00 */ 0x4556, 0x6B53, 0xFFFD, 0x6B51, 0x455F, 0x6B4E, 0xFFFD, 0x6B55, -/* 2F08 */ 0x307B, 0xFFFD, 0xFFFD, 0x3A7A, 0xFFFD, 0xFFFD, 0x5837, 0x7163, -/* 2F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B4C, 0xFFFD, 0xFFFD, 0x6640, 0x6B59, -/* 2F18 */ 0xFFFD, 0x3F68, 0x5248, 0x6B57, 0x6B5C, 0x386C, 0x6B58, 0xFFFD, -/* 2F20 */ 0xFFFD, 0xFFFD, 0x5058, 0xFFFD, 0x3037, 0xFFFD, 0x6B5D, 0x445C, -/* 2F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x562C, 0xFFFD, 0xFFFD, 0x5032, -/* 2F30 */ 0x3460, 0xFFFD, 0xFFFD, 0x4276, 0x3C39, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F38 */ 0x6B5B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B5F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F40 */ 0x3231, 0xFFFD, 0x6B64, 0xFFFD, 0x3D45, 0x6B56, 0xFFFD, 0xFFFD, -/* 2F48 */ 0x6B62, 0x6B63, 0xFFFD, 0xFFFD, 0x382C, 0xFFFD, 0x4D51, 0x6B65, -/* 2F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x554D, 0xFFFD, -/* 2F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4622, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C73, 0xFFFD, 0x6B66, 0xFFFD, 0x784C, -/* 2F68 */ 0x5238, 0x6B67, 0xFFFD, 0x4976, 0xFFFD, 0x382F, 0x382D, 0xFFFD, -/* 2F70 */ 0x6B68, 0x473B, 0x4D73, 0x6B4B, 0xFFFD, 0xFFFD, 0x6B6A, 0x6B6B, -/* 2F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B6D, 0x6B61, 0xFFFD, -/* 2F80 */ 0xFFFD, 0xFFFD, 0x5048, 0x4454, 0x6B72, 0xFFFD, 0x6B6E, 0xFFFD, -/* 2F88 */ 0x5657, 0xFFFD, 0x6B71, 0x4879, 0xFFFD, 0x517C, 0x6B6C, 0xFFFD, -/* 2F90 */ 0xFFFD, 0x6B69, 0xFFFD, 0xFFFD, 0xFFFD, 0x3326, 0x3839, 0x4F59, -/* 2F98 */ 0xFFFD, 0x6B6F, 0x6B70, 0xFFFD, 0x4D48, 0x3072, 0xFFFD, 0x6B76, -/* 2FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B75, 0xFFFD, 0x3232, -/* 2FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3860, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x316C, 0xFFFD, 0x3774, -/* 2FB8 */ 0x4C45, 0x4424, 0x4F25, 0xFFFD, 0xFFFD, 0x3D3A, 0xFFFD, 0xFFFD, -/* 2FC0 */ 0x6B79, 0xFFFD, 0xFFFD, 0x6C22, 0xFFFD, 0x4572, 0x4465, 0x6B7A, -/* 2FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FD0 */ 0x4945, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x625F, -/* 2FD8 */ 0x6B7E, 0xFFFD, 0x3528, 0x6B5A, 0x4527, 0x4D4E, 0x6C21, 0x315B, -/* 2FE0 */ 0x5337, 0xFFFD, 0xFFFD, 0x525C, 0xFFFD, 0xFFFD, 0x4133, 0x6B7D, -/* 2FE8 */ 0xFFFD, 0x6B7B, 0x466A, 0xFFFD, 0x6B77, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4030, 0xFFFD, 0x6B4D, -/* 2FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5460, 0x5975, 0xFFFD, 0xFFFD, -/* 3000 */ 0x333C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A30, 0x4159, 0xFFFD, 0x5754, -/* 3008 */ 0xFFFD, 0x742B, 0x3374, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3010 */ 0x5641, 0x5642, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C28, -/* 3018 */ 0x5569, 0x3E4A, 0xFFFD, 0x7427, 0xFFFD, 0x5228, 0x7428, 0x7429, -/* 3020 */ 0xFFFD, 0x742A, 0x3E4B, 0xFFFD, 0x536B, 0x504B, 0x3E59, 0x3E49, -/* 3028 */ 0xFFFD, 0x4960, 0x7867, 0xFFFD, 0xFFFD, 0x7342, 0xFFFD, 0x4A66, -/* 3030 */ 0xFFFD, 0x4C72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3038 */ 0x6236, 0x4B34, 0xFFFD, 0x4E68, 0x565B, 0xFFFD, 0x742D, 0x742E, -/* 3040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7432, 0xFFFD, 0x3A3D, -/* 3048 */ 0x7433, 0x3063, 0x7430, 0xFFFD, 0x7431, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3050 */ 0x7436, 0x7437, 0x3666, 0x3230, 0x4F4F, 0x7434, 0x342C, 0xFFFD, -/* 3058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7438, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3060 */ 0xFFFD, 0x7439, 0xFFFD, 0xFFFD, 0x4D27, 0xFFFD, 0x743A, 0xFFFD, -/* 3068 */ 0x743B, 0xFFFD, 0xFFFD, 0xFFFD, 0x743C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B52, 0x3255, 0x743D, -/* 3078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x743E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3080 */ 0xFFFD, 0x742F, 0xFFFD, 0x3D22, 0xFFFD, 0x743F, 0xFFFD, 0xFFFD, -/* 3088 */ 0x7435, 0xFFFD, 0xFFFD, 0x745E, 0x413C, 0xFFFD, 0x3C68, 0x492B, -/* 3090 */ 0xFFFD, 0x6575, 0xFFFD, 0xFFFD, 0x515E, 0xFFFD, 0x5C33, 0xFFFD, -/* 3098 */ 0xFFFD, 0xFFFD, 0x5C34, 0x302C, 0x5C35, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30A0 */ 0xFFFD, 0x5C39, 0xFFFD, 0xFFFD, 0xFFFD, 0x5842, 0xFFFD, 0x5C37, -/* 30A8 */ 0x5373, 0xFFFD, 0x4956, 0x5C3A, 0x5C36, 0xFFFD, 0x5C3B, 0x4322, -/* 30B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C45, 0x5C3D, 0xFFFD, -/* 30B8 */ 0xFFFD, 0xFFFD, 0x5625, 0xFFFD, 0x5C4F, 0xFFFD, 0x5C4D, 0xFFFD, -/* 30C0 */ 0xFFFD, 0x5C52, 0x3D66, 0xFFFD, 0xFFFD, 0x5C38, 0x5C4B, 0x5C4E, -/* 30C8 */ 0x5C3E, 0x3752, 0x3045, 0x5C47, 0x503E, 0x5C41, 0x3B28, 0xFFFD, -/* 30D0 */ 0x373C, 0x5C4C, 0xFFFD, 0xFFFD, 0x5C46, 0xFFFD, 0x475B, 0xFFFD, -/* 30D8 */ 0x5B3B, 0xFFFD, 0x513F, 0x5C40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30E0 */ 0xFFFD, 0x5C50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C43, -/* 30E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5437, 0x5C5B, -/* 30F0 */ 0x5C5F, 0x4C26, 0x5C66, 0xFFFD, 0x4367, 0x5C5C, 0xFFFD, 0xFFFD, -/* 30F8 */ 0x3F41, 0x5C59, 0xFFFD, 0x307A, 0x3936, 0x5C65, 0x5C53, 0xFFFD, -/* 3100 */ 0x5C44, 0x5C56, 0x4874, 0x3F60, 0x5C51, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3108 */ 0x493B, 0xFFFD, 0xFFFD, 0xFFFD, 0x313D, 0xFFFD, 0x5322, 0xFFFD, -/* 3110 */ 0xFFFD, 0x5C5A, 0xFFFD, 0xFFFD, 0x5C55, 0xFFFD, 0x785C, 0xFFFD, -/* 3118 */ 0x5C5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5742, 0x432F, -/* 3120 */ 0x7832, 0x4751, 0x4329, 0x5C62, 0x5C58, 0x5C6B, 0x5C54, 0xFFFD, -/* 3128 */ 0xFFFD, 0x5C5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C78, 0xFFFD, 0xFFFD, 0x5C61, -/* 3138 */ 0x5D22, 0x5C67, 0x3444, 0xFFFD, 0xFFFD, 0x4323, 0x3267, 0x5C7A, -/* 3140 */ 0xFFFD, 0x5C72, 0xFFFD, 0x5C6F, 0xFFFD, 0x5C7C, 0x5C6E, 0x5270, -/* 3148 */ 0x3268, 0xFFFD, 0x4857, 0x4863, 0x5C7B, 0xFFFD, 0x5C6D, 0xFFFD, -/* 3150 */ 0xFFFD, 0xFFFD, 0x5C77, 0xFFFD, 0xFFFD, 0x5C75, 0xFFFD, 0xFFFD, -/* 3158 */ 0x3E23, 0x5C74, 0xFFFD, 0x325D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3160 */ 0xFFFD, 0x5C73, 0x7843, 0x5C68, 0x3B44, 0xFFFD, 0x4073, 0x3A49, -/* 3168 */ 0x5D29, 0xFFFD, 0xFFFD, 0x5D36, 0x5D31, 0x5D34, 0xFFFD, 0xFFFD, -/* 3170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D30, 0x464E, 0xFFFD, -/* 3178 */ 0xFFFD, 0x4072, 0x572F, 0xFFFD, 0xFFFD, 0xFFFD, 0x492F, 0xFFFD, -/* 3180 */ 0xFFFD, 0xFFFD, 0x5C6C, 0x5D2E, 0xFFFD, 0xFFFD, 0x3E25, 0xFFFD, -/* 3188 */ 0x5D37, 0xFFFD, 0xFFFD, 0x5C70, 0x5D2F, 0xFFFD, 0x5D38, 0xFFFD, -/* 3190 */ 0x5D2C, 0xFFFD, 0x3C54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C48, -/* 3198 */ 0x5D39, 0x5D33, 0x5D2D, 0x442A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31A0 */ 0x5D28, 0x4327, 0xFFFD, 0xFFFD, 0x5D52, 0x5D3C, 0xFFFD, 0xFFFD, -/* 31A8 */ 0xFFFD, 0x5D51, 0xFFFD, 0x393D, 0xFFFD, 0xFFFD, 0x3E55, 0xFFFD, -/* 31B0 */ 0x3E7A, 0xFFFD, 0xFFFD, 0x3A4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31B8 */ 0x5D4A, 0xFFFD, 0x5D45, 0xFFFD, 0x5D3F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31C0 */ 0x324B, 0x5D43, 0xFFFD, 0x5D4B, 0x3224, 0x5D55, 0xFFFD, 0xFFFD, -/* 31C8 */ 0xFFFD, 0x5D3E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4650, 0x5D50, 0xFFFD, -/* 31D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B2A, 0x5D54, 0x4162, 0x3746, 0xFFFD, -/* 31D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D4E, 0x5D4F, 0xFFFD, 0xFFFD, -/* 31E0 */ 0xFFFD, 0x5D44, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D3D, 0xFFFD, 0x5D4D, -/* 31E8 */ 0x4C51, 0xFFFD, 0x5D49, 0x5C49, 0xFFFD, 0xFFFD, 0x4033, 0x5D42, -/* 31F0 */ 0x4348, 0x463C, 0x4E2E, 0x5D4C, 0xFFFD, 0x5D48, 0xFFFD, 0xFFFD, -/* 31F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3200 */ 0x5D46, 0x4D72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D66, 0xFFFD, -/* 3208 */ 0xFFFD, 0xFFFD, 0x5D2B, 0xFFFD, 0xFFFD, 0x5D47, 0xFFFD, 0xFFFD, -/* 3210 */ 0xFFFD, 0x5D60, 0x4264, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D61, 0xFFFD, 0xFFFD, 0x5236, 0xFFFD, -/* 3220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D57, 0x5D26, -/* 3228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5678, 0xFFFD, 0x5D59, 0x5D58, -/* 3230 */ 0x3870, 0x5D56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x464F, 0xFFFD, -/* 3238 */ 0x362D, 0x5D27, 0xFFFD, 0x4E2D, 0xFFFD, 0xFFFD, 0x5D62, 0xFFFD, -/* 3240 */ 0x3A79, 0x5461, 0x5D67, 0xFFFD, 0x7877, 0xFFFD, 0x3450, 0xFFFD, -/* 3248 */ 0x5D5A, 0xFFFD, 0x3F7B, 0x5D63, 0x3B67, 0x5D5F, 0xFFFD, 0x5D5D, -/* 3250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3559, -/* 3258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D5C, 0xFFFD, 0xFFFD, -/* 3260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3268 */ 0x5D3B, 0x5D2A, 0xFFFD, 0xFFFD, 0x5D75, 0xFFFD, 0x4349, 0xFFFD, -/* 3270 */ 0xFFFD, 0x4B62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D72, 0x5861, -/* 3278 */ 0xFFFD, 0xFFFD, 0x4651, 0xFFFD, 0x5D74, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3280 */ 0x5574, 0x5D73, 0x5D70, 0xFFFD, 0x3254, 0x5D6C, 0xFFFD, 0x5D6F, -/* 3288 */ 0x5D25, 0x5D68, 0xFFFD, 0xFFFD, 0x506E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3290 */ 0xFFFD, 0x4858, 0x5D6E, 0x3847, 0xFFFD, 0x5D69, 0xFFFD, 0xFFFD, -/* 3298 */ 0x5D6A, 0x4B72, 0xFFFD, 0x5D6D, 0xFFFD, 0xFFFD, 0x314D, 0x456E, -/* 32A0 */ 0xFFFD, 0x412B, 0x5C4A, 0x5D7B, 0x5E24, 0x5C6A, 0xFFFD, 0x5E23, -/* 32A8 */ 0x5D78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x436F, 0xFFFD, 0x427B, -/* 32B0 */ 0x7825, 0xFFFD, 0xFFFD, 0x5561, 0xFFFD, 0xFFFD, 0x4E35, 0xFFFD, -/* 32B8 */ 0xFFFD, 0xFFFD, 0x5D64, 0x5D7D, 0xFFFD, 0x324C, 0xFFFD, 0x3D2F, -/* 32C0 */ 0xFFFD, 0xFFFD, 0x5C60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4468, -/* 32C8 */ 0x4A5F, 0x5271, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D7A, 0xFFFD, 0xFFFD, 0x5E22, -/* 32D8 */ 0xFFFD, 0x314E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D21, 0xFFFD, 0x5E2C, -/* 32E0 */ 0xFFFD, 0xFFFD, 0x5D5B, 0xFFFD, 0x5E26, 0x3D36, 0x486F, 0xFFFD, -/* 32E8 */ 0xFFFD, 0xFFFD, 0x5C71, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D24, 0x5C3F, -/* 32F0 */ 0xFFFD, 0x5D35, 0x5E21, 0xFFFD, 0x5C69, 0x5E25, 0xFFFD, 0xFFFD, -/* 32F8 */ 0xFFFD, 0xFFFD, 0x5E29, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D5E, 0xFFFD, -/* 3300 */ 0x5E28, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E27, 0x3534, 0x4E5F, 0xFFFD, -/* 3308 */ 0xFFFD, 0x4F74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D77, 0xFFFD, 0x5E33, 0x5E2A, 0x5E2E, -/* 3318 */ 0xFFFD, 0xFFFD, 0x4059, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3320 */ 0x3121, 0x5E36, 0xFFFD, 0x5E31, 0x5C76, 0xFFFD, 0x3C3B, 0xFFFD, -/* 3328 */ 0x5C3C, 0xFFFD, 0xFFFD, 0x5E32, 0xFFFD, 0x7844, 0xFFFD, 0xFFFD, -/* 3330 */ 0x473E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5126, -/* 3338 */ 0x5E35, 0xFFFD, 0xFFFD, 0x5D32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3340 */ 0x5E2F, 0xFFFD, 0x3C76, 0xFFFD, 0x5E30, 0x4878, 0x503D, 0xFFFD, -/* 3348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A6D, 0x5E39, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E38, 0xFFFD, 0x5E37, 0x5C79, 0xFFFD, -/* 3358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3B, 0xFFFD, 0xFFFD, -/* 3360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D65, 0xFFFD, 0xFFFD, -/* 3368 */ 0xFFFD, 0x4036, 0x5D23, 0x3258, 0x436A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3370 */ 0xFFFD, 0x453A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3378 */ 0x5E3C, 0x5255, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3380 */ 0x4C59, 0x5229, 0xFFFD, 0xFFFD, 0xFFFD, 0x372A, 0x5E34, 0xFFFD, -/* 3388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3390 */ 0x544C, 0xFFFD, 0x5C42, 0xFFFD, 0xFFFD, 0x302A, 0x5D7E, 0x5465, -/* 3398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33A0 */ 0x5E2D, 0x5E3F, 0x422B, 0x4B55, 0xFFFD, 0xFFFD, 0xFFFD, 0x463B, -/* 33A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4422, 0xFFFD, 0xFFFD, -/* 33B0 */ 0xFFFD, 0xFFFD, 0x5E41, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3A, 0xFFFD, -/* 33B8 */ 0xFFFD, 0xFFFD, 0x5D7C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C57, 0xFFFD, -/* 33C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3E, 0xFFFD, 0x5E40, 0xFFFD, 0xFFFD, -/* 33C8 */ 0xFFFD, 0x403C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x553A, 0xFFFD, 0x5D71, 0xFFFD, -/* 33D8 */ 0x5E42, 0xFFFD, 0xFFFD, 0x425C, 0x722E, 0x3B22, 0xFFFD, 0x4530, -/* 33E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x722F, 0x3426, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33E8 */ 0xFFFD, 0x5069, 0xFFFD, 0x4232, 0xFFFD, 0x535D, 0x3A45, 0xFFFD, -/* 33F0 */ 0xFFFD, 0x6B3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F77, 0xFFFD, -/* 33F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7230, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3400 */ 0x4A2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3408 */ 0x3A67, 0x7233, 0x7235, 0x7234, 0x4E43, 0x7238, 0x3076, 0x7237, -/* 3410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x723E, 0xFFFD, 0xFFFD, -/* 3418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5141, 0x723A, -/* 3420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x723C, 0x5469, 0xFFFD, -/* 3428 */ 0xFFFD, 0x723B, 0x7236, 0x723F, 0x723D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3430 */ 0xFFFD, 0x7247, 0x7244, 0x7246, 0xFFFD, 0xFFFD, 0x724A, 0x7242, -/* 3438 */ 0x7240, 0xFFFD, 0xFFFD, 0xFFFD, 0x7245, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3440 */ 0xFFFD, 0xFFFD, 0x567B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7241, 0xFFFD, -/* 3448 */ 0x4779, 0x495F, 0xFFFD, 0x7248, 0xFFFD, 0x3530, 0xFFFD, 0xFFFD, -/* 3450 */ 0xFFFD, 0xFFFD, 0x7250, 0x7256, 0xFFFD, 0xFFFD, 0x3B57, 0xFFFD, -/* 3458 */ 0xFFFD, 0xFFFD, 0x7255, 0x4D5C, 0xFFFD, 0x566B, 0xFFFD, 0xFFFD, -/* 3460 */ 0x7252, 0x7254, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3872, 0xFFFD, -/* 3468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x724B, 0xFFFD, 0xFFFD, 0xFFFD, 0x724E, -/* 3470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3478 */ 0xFFFD, 0xFFFD, 0x7259, 0x533C, 0x724C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3480 */ 0x366A, 0xFFFD, 0x4A71, 0xFFFD, 0x3764, 0x7257, 0xFFFD, 0xFFFD, -/* 3488 */ 0x7239, 0x7258, 0x725A, 0x725D, 0x725B, 0xFFFD, 0xFFFD, 0x725C, -/* 3490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5151, 0x7251, 0xFFFD, 0x4D49, -/* 3498 */ 0xFFFD, 0xFFFD, 0x5629, 0xFFFD, 0x7263, 0xFFFD, 0x435B, 0xFFFD, -/* 34A0 */ 0x7260, 0xFFFD, 0xFFFD, 0x784B, 0x726C, 0x725E, 0xFFFD, 0x7261, -/* 34A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7268, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34B0 */ 0x7262, 0xFFFD, 0xFFFD, 0x7267, 0xFFFD, 0xFFFD, 0x7266, 0xFFFD, -/* 34B8 */ 0xFFFD, 0x7269, 0xFFFD, 0xFFFD, 0xFFFD, 0x725F, 0xFFFD, 0xFFFD, -/* 34C0 */ 0x7264, 0x726A, 0x7272, 0xFFFD, 0x502B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34C8 */ 0xFFFD, 0x7275, 0xFFFD, 0x4A34, 0xFFFD, 0x3B48, 0xFFFD, 0x7279, -/* 34D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7270, 0xFFFD, -/* 34D8 */ 0xFFFD, 0x7276, 0x7278, 0x727A, 0x4F3A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7273, 0xFFFD, 0x7271, 0xFFFD, -/* 34E8 */ 0xFFFD, 0xFFFD, 0x3A7B, 0xFFFD, 0x357B, 0xFFFD, 0x4E4F, 0xFFFD, -/* 34F0 */ 0xFFFD, 0x726F, 0xFFFD, 0x726D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F8 */ 0x726B, 0x7326, 0x724F, 0x7323, 0xFFFD, 0xFFFD, 0x7322, 0xFFFD, -/* 3500 */ 0xFFFD, 0x7274, 0xFFFD, 0x485A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3508 */ 0xFFFD, 0x727B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7325, 0xFFFD, 0xFFFD, -/* 3510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x426C, 0x4378, 0xFFFD, 0xFFFD, -/* 3518 */ 0x5329, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3520 */ 0xFFFD, 0x7327, 0x7329, 0x7324, 0xFFFD, 0x727C, 0xFFFD, 0xFFFD, -/* 3528 */ 0xFFFD, 0x732B, 0xFFFD, 0x732A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3530 */ 0x425D, 0x7277, 0xFFFD, 0x732E, 0xFFFD, 0xFFFD, 0x7330, 0xFFFD, -/* 3538 */ 0xFFFD, 0xFFFD, 0x555D, 0xFFFD, 0x7321, 0xFFFD, 0x7265, 0xFFFD, -/* 3540 */ 0x7331, 0x732C, 0xFFFD, 0xFFFD, 0x727D, 0xFFFD, 0xFFFD, 0x732F, -/* 3548 */ 0x727E, 0x732D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3550 */ 0xFFFD, 0x7332, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7334, 0xFFFD, -/* 3558 */ 0xFFFD, 0x7231, 0xFFFD, 0x7328, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3560 */ 0x7333, 0xFFFD, 0x3275, 0xFFFD, 0x7335, 0x724D, 0xFFFD, 0xFFFD, -/* 3568 */ 0x3366, 0xFFFD, 0xFFFD, 0xFFFD, 0x7249, 0xFFFD, 0xFFFD, 0x5037, -/* 3570 */ 0xFFFD, 0x524F, 0xFFFD, 0xFFFD, 0x7338, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3578 */ 0xFFFD, 0x5979, 0xFFFD, 0x532C, 0x7232, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3580 */ 0x7339, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7253, 0x726E, -/* 3588 */ 0xFFFD, 0x7337, 0xFFFD, 0x4864, 0x7336, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3590 */ 0xFFFD, 0x733A, 0xFFFD, 0xFFFD, 0xFFFD, 0x402F, 0xFFFD, 0x733B, -/* 3598 */ 0x3440, 0x7243, 0x3946, 0x6E43, 0xFFFD, 0xFFFD, 0xFFFD, 0x324F, -/* 35A0 */ 0xFFFD, 0xFFFD, 0x733C, 0xFFFD, 0x4279, 0x733D, 0xFFFD, 0xFFFD, -/* 35A8 */ 0xFFFD, 0x512A, 0xFFFD, 0xFFFD, 0xFFFD, 0x742C, 0xFFFD, 0x565A, -/* 35B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x785A, 0xFFFD, 0x5050, 0x515C, 0xFFFD, -/* 35B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A75, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35C0 */ 0x3D56, 0xFFFD, 0x5143, 0xFFFD, 0x4E40, 0xFFFD, 0x3365, 0xFFFD, -/* 35C8 */ 0xFFFD, 0xFFFD, 0x3A62, 0x6169, 0x5242, 0x7142, 0xFFFD, 0xFFFD, -/* 35D0 */ 0xFFFD, 0x316D, 0x7143, 0xFFFD, 0x4940, 0xFFFD, 0xFFFD, 0x5972, -/* 35D8 */ 0xFFFD, 0x4B25, 0xFFFD, 0x7144, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35E0 */ 0x5654, 0xFFFD, 0x563B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7145, 0x7440, -/* 35E8 */ 0x7146, 0xFFFD, 0x542C, 0x7147, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35F0 */ 0xFFFD, 0x7442, 0xFFFD, 0xFFFD, 0x347C, 0xFFFD, 0x455B, 0xFFFD, -/* 35F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C3B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5064, -/* 3600 */ 0x7148, 0xFFFD, 0x5973, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3608 */ 0xFFFD, 0x313B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3824, -/* 3610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x714A, 0xFFFD, 0xFFFD, -/* 3618 */ 0xFFFD, 0xFFFD, 0x714B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3243, -/* 3620 */ 0x4151, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x714C, -/* 3628 */ 0x7441, 0xFFFD, 0xFFFD, 0xFFFD, 0x714E, 0x406F, 0xFFFD, 0xFFFD, -/* 3630 */ 0x5976, 0xFFFD, 0x5261, 0x5423, 0xFFFD, 0xFFFD, 0x7443, 0x4839, -/* 3638 */ 0xFFFD, 0xFFFD, 0x3239, 0x5730, 0xFFFD, 0x7444, 0xFFFD, 0xFFFD, -/* 3640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7154, 0xFFFD, -/* 3648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7156, 0x7151, -/* 3650 */ 0xFFFD, 0x4951, 0x4561, 0xFFFD, 0xFFFD, 0xFFFD, 0x4263, 0x397C, -/* 3658 */ 0xFFFD, 0xFFFD, 0x7153, 0x7925, 0x7155, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3660 */ 0x3953, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7834, 0xFFFD, 0xFFFD, -/* 3668 */ 0x715B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A56, 0xFFFD, -/* 3670 */ 0x307D, 0x7159, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7158, -/* 3678 */ 0x7152, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7157, -/* 3680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x486C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3688 */ 0x4D4A, 0x715D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x653D, 0xFFFD, -/* 3690 */ 0x3F63, 0x714D, 0xFFFD, 0xFFFD, 0x715E, 0xFFFD, 0x715A, 0xFFFD, -/* 3698 */ 0xFFFD, 0x5974, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x715F, -/* 36A0 */ 0xFFFD, 0xFFFD, 0x4F65, 0xFFFD, 0xFFFD, 0x7150, 0x3040, 0xFFFD, -/* 36A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x714F, 0x7445, 0x3D73, -/* 36B0 */ 0x7149, 0xFFFD, 0xFFFD, 0xFFFD, 0x715C, 0xFFFD, 0x7160, 0xFFFD, -/* 36B8 */ 0xFFFD, 0xFFFD, 0x4D60, 0xFFFD, 0x7821, 0xFFFD, 0xFFFD, 0x3344, -/* 36C0 */ 0xFFFD, 0xFFFD, 0x4F2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7161, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E77, -/* 36D0 */ 0xFFFD, 0x522A, 0xFFFD, 0x717B, 0xFFFD, 0xFFFD, 0x3832, 0xFFFD, -/* 36D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C7B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3966, -/* 36E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4359, 0xFFFD, 0xFFFD, 0x4A53, 0xFFFD, -/* 36E8 */ 0x6A68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36F0 */ 0xFFFD, 0x6A6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A6C, 0xFFFD, -/* 36F8 */ 0xFFFD, 0xFFFD, 0x4757, 0xFFFD, 0x6A69, 0xFFFD, 0xFFFD, 0x6A6D, -/* 3700 */ 0xFFFD, 0xFFFD, 0x6A6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A6F, -/* 3708 */ 0xFFFD, 0xFFFD, 0x3E75, 0xFFFD, 0xFFFD, 0x4040, 0xFFFD, 0x6A6B, -/* 3710 */ 0x395B, 0x3D47, 0xFFFD, 0xFFFD, 0xFFFD, 0x757B, 0xFFFD, 0xFFFD, -/* 3718 */ 0xFFFD, 0x757D, 0xFFFD, 0x757E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3720 */ 0xFFFD, 0xFFFD, 0x3D62, 0xFFFD, 0x7621, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3728 */ 0xFFFD, 0xFFFD, 0x7622, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3730 */ 0xFFFD, 0xFFFD, 0x6C32, 0x757C, 0xFFFD, 0x7623, 0xFFFD, 0x3425, -/* 3738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5154, -/* 3740 */ 0x5A25, 0x3629, 0x383C, 0xFFFD, 0xFFFD, 0xFFFD, 0x596A, 0x3C46, -/* 3748 */ 0xFFFD, 0x5136, 0xFFFD, 0x5A27, 0xFFFD, 0x4C56, 0xFFFD, 0x5A26, -/* 3750 */ 0xFFFD, 0xFFFD, 0x5135, 0xFFFD, 0x5A28, 0x467D, 0xFFFD, 0x3C47, -/* 3758 */ 0xFFFD, 0xFFFD, 0x366F, 0xFFFD, 0x5148, 0xFFFD, 0x4B4F, 0xFFFD, -/* 3760 */ 0xFFFD, 0xFFFD, 0x3E77, 0xFFFD, 0x5A2B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3768 */ 0xFFFD, 0x3743, 0xFFFD, 0xFFFD, 0x4968, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3770 */ 0x506D, 0xFFFD, 0xFFFD, 0x4B5F, 0xFFFD, 0x5A2D, 0xFFFD, 0xFFFD, -/* 3778 */ 0xFFFD, 0x556F, 0xFFFD, 0xFFFD, 0xFFFD, 0x7624, 0xFFFD, 0xFFFD, -/* 3780 */ 0x5A2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A2E, 0xFFFD, 0x6E3A, -/* 3788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A2A, 0xFFFD, 0x5529, -/* 3790 */ 0xFFFD, 0x5A31, 0xFFFD, 0x5A2F, 0x4640, 0xFFFD, 0xFFFD, 0x5A30, -/* 3798 */ 0xFFFD, 0xFFFD, 0x5767, 0xFFFD, 0xFFFD, 0x344A, 0xFFFD, 0xFFFD, -/* 37A0 */ 0x5A3C, 0x512F, 0x5268, 0xFFFD, 0xFFFD, 0x4A54, 0xFFFD, 0xFFFD, -/* 37A8 */ 0x4A2B, 0xFFFD, 0x326F, 0x5A38, 0x396E, 0x5A39, 0xFFFD, 0x5A35, -/* 37B0 */ 0x3B30, 0x3843, 0x4F6A, 0xFFFD, 0x5A37, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37B8 */ 0x5532, 0xFFFD, 0xFFFD, 0x5A36, 0xFFFD, 0xFFFD, 0x5A34, 0xFFFD, -/* 37C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A33, 0x566F, 0x5A32, 0x3F64, 0xFFFD, -/* 37C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x484F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37D0 */ 0x5A3F, 0x5A40, 0x4A44, 0xFFFD, 0x352E, 0xFFFD, 0xFFFD, 0x5355, -/* 37D8 */ 0xFFFD, 0x5A3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x536F, 0xFFFD, 0x334F, -/* 37E0 */ 0x3D6B, 0xFFFD, 0x4E5C, 0x4E73, 0x5A3E, 0x4B50, 0xFFFD, 0x3B65, -/* 37E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B35, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B2D, -/* 37F0 */ 0xFFFD, 0x3F4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A47, 0xFFFD, 0xFFFD, -/* 37F8 */ 0x374C, 0xFFFD, 0xFFFD, 0x526A, 0xFFFD, 0xFFFD, 0x3577, 0xFFFD, -/* 3800 */ 0xFFFD, 0x5A46, 0xFFFD, 0x573B, 0xFFFD, 0xFFFD, 0x4C38, 0xFFFD, -/* 3808 */ 0x5A43, 0xFFFD, 0x476B, 0xFFFD, 0x5A3A, 0xFFFD, 0x5A41, 0xFFFD, -/* 3810 */ 0x5A42, 0x4142, 0xFFFD, 0xFFFD, 0xFFFD, 0x425B, 0x5A45, 0xFFFD, -/* 3818 */ 0xFFFD, 0xFFFD, 0x5A44, 0x357D, 0xFFFD, 0x5A52, 0xFFFD, 0xFFFD, -/* 3820 */ 0xFFFD, 0x5A3B, 0xFFFD, 0x5A4C, 0xFFFD, 0x5A50, 0x5033, 0xFFFD, -/* 3828 */ 0xFFFD, 0xFFFD, 0x5A49, 0xFFFD, 0x5A4D, 0x5A51, 0xFFFD, 0xFFFD, -/* 3830 */ 0x3B64, 0xFFFD, 0x5A4F, 0xFFFD, 0xFFFD, 0x5A48, 0x376D, 0x566E, -/* 3838 */ 0xFFFD, 0x5168, 0xFFFD, 0x5A4E, 0xFFFD, 0x4535, 0xFFFD, 0x4431, -/* 3840 */ 0x5A4B, 0x4E3D, 0xFFFD, 0x4C5C, 0x565F, 0xFFFD, 0x6540, 0xFFFD, -/* 3848 */ 0xFFFD, 0x3B51, 0xFFFD, 0xFFFD, 0xFFFD, 0x4355, 0xFFFD, 0x5A57, -/* 3850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A4A, 0xFFFD, 0x5A55, 0x3079, 0xFFFD, -/* 3858 */ 0x472B, 0x5A56, 0x3D32, 0xFFFD, 0x503B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3860 */ 0x5225, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7625, 0xFFFD, 0x5A53, -/* 3868 */ 0xFFFD, 0xFFFD, 0x5A58, 0x437D, 0x5A59, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3870 */ 0xFFFD, 0xFFFD, 0x5A29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3878 */ 0x3D77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4321, 0xFFFD, 0xFFFD, -/* 3880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3888 */ 0x5624, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A5C, 0x3C25, 0xFFFD, -/* 3890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A5A, 0xFFFD, 0x4A36, -/* 3898 */ 0x5A5B, 0x4C37, 0xFFFD, 0x4657, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E2F, 0xFFFD, 0xFFFD, -/* 38A8 */ 0xFFFD, 0xFFFD, 0x5A5E, 0x4629, 0xFFFD, 0xFFFD, 0x526B, 0x5269, -/* 38B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4734, 0xFFFD, 0xFFFD, 0x3B24, 0xFFFD, -/* 38B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x537E, 0xFFFD, 0xFFFD, 0x3641, -/* 38C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38C8 */ 0xFFFD, 0x3164, 0xFFFD, 0xFFFD, 0xFFFD, 0x7645, 0xFFFD, 0xFFFD, -/* 38D0 */ 0xFFFD, 0x3277, 0x4843, 0xFFFD, 0x403E, 0x5A5F, 0xFFFD, 0xFFFD, -/* 38D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A54, 0xFFFD, 0x5A5D, 0x3948, 0xFFFD, -/* 38E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38E8 */ 0x3B6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3639, 0x7478, 0x4671, -/* 38F0 */ 0x7479, 0xFFFD, 0xFFFD, 0x4D63, 0xFFFD, 0xFFFD, 0xFFFD, 0x3761, -/* 38F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7539, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3900 */ 0xFFFD, 0x6B60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3908 */ 0x4F73, 0x3B3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3910 */ 0xFFFD, 0x3A40, 0x5425, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3918 */ 0xFFFD, 0xFFFD, 0x6159, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7574, -/* 3920 */ 0x312A, 0x3272, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3928 */ 0xFFFD, 0x7575, 0xFFFD, 0xFFFD, 0x7577, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3930 */ 0x3A51, 0x7576, 0xFFFD, 0x4332, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7579, 0xFFFD, 0xFFFD, 0xFFFD, 0x7578, -/* 3940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3134, 0x556A, 0xFFFD, 0x383A, -/* 3948 */ 0x3246, 0x3931, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4636, 0x3B75, -/* 3950 */ 0x3737, 0x4C30, 0x3961, 0x5470, 0xFFFD, 0xFFFD, 0x567C, 0x6A5B, -/* 3958 */ 0xFFFD, 0x6A5F, 0x3721, 0x3973, 0xFFFD, 0x3161, 0x4272, 0x347B, -/* 3960 */ 0xFFFD, 0x6A5C, 0x3751, 0x4C79, 0x6A5D, 0xFFFD, 0x4333, 0x3A58, -/* 3968 */ 0x6A5A, 0x4238, 0x415E, 0x3B5F, 0x6A60, 0xFFFD, 0x574A, 0x3C56, -/* 3970 */ 0xFFFD, 0x5474, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3978 */ 0x6A62, 0x495E, 0x3176, 0xFFFD, 0x6A64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3980 */ 0xFFFD, 0x6A63, 0xFFFD, 0x344D, 0xFFFD, 0x494D, 0xFFFD, 0x4562, -/* 3988 */ 0x6259, 0x4F4D, 0x4274, 0x3C7A, 0xFFFD, 0x3833, 0x6A66, 0xFFFD, -/* 3990 */ 0xFFFD, 0x564A, 0x6A65, 0x554B, 0x3644, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4035, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39A0 */ 0xFFFD, 0x572C, 0x6A67, 0x393A, 0x487C, 0x5853, 0xFFFD, 0xFFFD, -/* 39A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A5E, 0x5738, 0xFFFD, 0xFFFD, 0x5479, -/* 39B0 */ 0xFFFD, 0x545E, 0x584D, 0xFFFD, 0x4944, 0xFFFD, 0x532E, 0x6A61, -/* 39B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A6A, 0xFFFD, 0xFFFD, -/* 39C0 */ 0xFFFD, 0xFFFD, 0x3853, 0x545F, 0x3360, 0xFFFD, 0x4962, 0x7476, -/* 39C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A55, 0xFFFD, 0x7477, 0xFFFD, 0xFFFD, -/* 39D0 */ 0x575F, 0xFFFD, 0xFFFD, 0x7471, 0x3830, 0xFFFD, 0xFFFD, 0x4670, -/* 39D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39E0 */ 0xFFFD, 0x3343, 0xFFFD, 0xFFFD, 0x7472, 0x332C, 0xFFFD, 0xFFFD, -/* 39E8 */ 0xFFFD, 0xFFFD, 0x543D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39F0 */ 0xFFFD, 0x7474, 0xFFFD, 0xFFFD, 0x7473, 0x384F, 0xFFFD, 0xFFFD, -/* 39F8 */ 0xFFFD, 0x5554, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C4B, -/* 3A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4824, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A08 */ 0x4777, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A10 */ 0xFFFD, 0xFFFD, 0x7475, 0x5763, 0x453F, 0x7540, 0xFFFD, 0xFFFD, -/* 3A18 */ 0xFFFD, 0xFFFD, 0x7543, 0xFFFD, 0x7542, 0xFFFD, 0x563A, 0x7541, -/* 3A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x754C, 0xFFFD, -/* 3A28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x304F, 0x3578, 0xFFFD, 0x7549, 0x754A, -/* 3A30 */ 0xFFFD, 0x455C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7545, 0x7546, -/* 3A38 */ 0xFFFD, 0xFFFD, 0x7547, 0x754B, 0xFFFD, 0x3E60, 0xFFFD, 0x387A, -/* 3A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7550, 0x7553, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A48 */ 0x3F67, 0xFFFD, 0x3972, 0x753C, 0x754D, 0xFFFD, 0xFFFD, 0x4237, -/* 3A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A58 */ 0xFFFD, 0xFFFD, 0x3665, 0xFFFD, 0xFFFD, 0x7555, 0xFFFD, 0xFFFD, -/* 3A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x753D, 0xFFFD, 0xFFFD, -/* 3A68 */ 0xFFFD, 0x7554, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C24, -/* 3A70 */ 0x3C79, 0xFFFD, 0xFFFD, 0xFFFD, 0x7556, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7557, 0x3E61, 0x7558, -/* 3A80 */ 0xFFFD, 0xFFFD, 0x4C5F, 0x755B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A88 */ 0xFFFD, 0x3248, 0x5759, 0xFFFD, 0xFFFD, 0xFFFD, 0x755A, 0xFFFD, -/* 3A90 */ 0xFFFD, 0x7562, 0xFFFD, 0xFFFD, 0x533B, 0x7560, 0xFFFD, 0xFFFD, -/* 3A98 */ 0xFFFD, 0x755F, 0x755D, 0xFFFD, 0xFFFD, 0x7561, 0xFFFD, 0xFFFD, -/* 3AA0 */ 0x755E, 0x7564, 0x7565, 0xFFFD, 0x4C63, 0xFFFD, 0xFFFD, 0x653F, -/* 3AA8 */ 0x3538, 0x7563, 0x7568, 0x4C23, 0x7544, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x754F, 0xFFFD, 0xFFFD, -/* 3AB8 */ 0xFFFD, 0x753E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7567, 0xFFFD, 0xFFFD, 0x3144, 0xFFFD, -/* 3AC8 */ 0xFFFD, 0x753F, 0xFFFD, 0xFFFD, 0x3545, 0x3264, 0xFFFD, 0x756C, -/* 3AD0 */ 0x7569, 0xFFFD, 0x3657, 0xFFFD, 0x756D, 0xFFFD, 0x756A, 0xFFFD, -/* 3AD8 */ 0xFFFD, 0xFFFD, 0x754E, 0xFFFD, 0x756B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AE0 */ 0xFFFD, 0x546A, 0xFFFD, 0xFFFD, 0xFFFD, 0x756E, 0xFFFD, 0x3379, -/* 3AE8 */ 0xFFFD, 0x753B, 0x336C, 0x7552, 0xFFFD, 0x543E, 0xFFFD, 0xFFFD, -/* 3AF0 */ 0x7571, 0x755C, 0x7548, 0x7559, 0x7570, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AF8 */ 0xFFFD, 0xFFFD, 0x7551, 0xFFFD, 0xFFFD, 0xFFFD, 0x7573, 0xFFFD, -/* 3B00 */ 0xFFFD, 0x7566, 0xFFFD, 0xFFFD, 0xFFFD, 0x345A, 0x7572, 0xFFFD, -/* 3B08 */ 0xFFFD, 0xFFFD, 0x756F, 0x496D, 0x392A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B10 */ 0xFFFD, 0xFFFD, 0x3663, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B18 */ 0xFFFD, 0xFFFD, 0x4C49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B20 */ 0x477B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B28 */ 0xFFFD, 0xFFFD, 0x3335, 0x547E, 0x396C, 0x3E7C, 0x6A26, 0xFFFD, -/* 3B30 */ 0xFFFD, 0xFFFD, 0x5079, 0xFFFD, 0x696D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x696E, 0xFFFD, 0xFFFD, 0xFFFD, 0x486D, -/* 3B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6975, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6974, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B50 */ 0xFFFD, 0xFFFD, 0x696F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B58 */ 0x5661, 0x6972, 0x6977, 0x6970, 0x6973, 0xFFFD, 0x6978, 0xFFFD, -/* 3B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D4F, 0xFFFD, 0x697B, 0xFFFD, 0x697A, -/* 3B68 */ 0xFFFD, 0x5458, 0x6979, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B70 */ 0xFFFD, 0xFFFD, 0x697C, 0xFFFD, 0x3828, 0x4761, 0xFFFD, 0xFFFD, -/* 3B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x413E, 0x6A22, 0x3B54, 0x697E, 0x6A21, -/* 3B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3975, 0x697D, 0xFFFD, -/* 3B88 */ 0xFFFD, 0x3132, 0x4256, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C2D, -/* 3B90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B98 */ 0x4A64, 0xFFFD, 0xFFFD, 0x3778, 0xFFFD, 0xFFFD, 0x5537, 0x535F, -/* 3BA0 */ 0xFFFD, 0xFFFD, 0x6C31, 0xFFFD, 0x4F3D, 0x542F, 0x6A24, 0xFFFD, -/* 3BA8 */ 0xFFFD, 0x572A, 0xFFFD, 0xFFFD, 0xFFFD, 0x555E, 0x3D4E, 0xFFFD, -/* 3BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A25, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A64, -/* 3BC0 */ 0xFFFD, 0x604E, 0x6976, 0xFFFD, 0x6971, 0x5041, 0x393C, 0xFFFD, -/* 3BC8 */ 0xFFFD, 0x3159, 0xFFFD, 0xFFFD, 0xFFFD, 0x4031, 0xFFFD, 0xFFFD, -/* 3BD0 */ 0x306C, 0xFFFD, 0x3166, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3447, -/* 3BD8 */ 0x3168, 0x3167, 0x333D, 0x4868, 0x4529, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BE0 */ 0x6541, 0x5358, 0xFFFD, 0x4679, 0x5138, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x532D, 0xFFFD, 0xFFFD, -/* 3BF0 */ 0x3D7C, 0xFFFD, 0x6542, 0x3735, 0x6543, 0x4C76, 0xFFFD, 0x6546, -/* 3BF8 */ 0x6544, 0x6548, 0xFFFD, 0x654A, 0xFFFD, 0x354F, 0x4648, 0xFFFD, -/* 3C00 */ 0x357C, 0x6545, 0xFFFD, 0x4A76, 0xFFFD, 0xFFFD, 0xFFFD, 0x783C, -/* 3C08 */ 0xFFFD, 0xFFFD, 0x4354, 0x3145, 0x3C23, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C10 */ 0x5737, 0xFFFD, 0xFFFD, 0x4D4B, 0x4B4D, 0xFFFD, 0x4C53, 0x654C, -/* 3C18 */ 0x654B, 0x4466, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x654D, 0xFFFD, -/* 3C20 */ 0x6550, 0xFFFD, 0x4D38, 0x5670, 0x654F, 0xFFFD, 0xFFFD, 0x4D3E, -/* 3C28 */ 0x6549, 0x6551, 0x363A, 0xFFFD, 0x5562, 0x4D28, 0x3964, 0xFFFD, -/* 3C30 */ 0x4A45, 0x3351, 0x4B59, 0x546C, 0x6552, 0x376A, 0x412C, 0xFFFD, -/* 3C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C40 */ 0x6555, 0x347E, 0x6556, 0xFFFD, 0xFFFD, 0x3D78, 0xFFFD, 0xFFFD, -/* 3C48 */ 0x6553, 0x6554, 0xFFFD, 0x525D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3146, -/* 3C50 */ 0xFFFD, 0x5362, 0xFFFD, 0xFFFD, 0x365D, 0x4B6C, 0xFFFD, 0x6557, -/* 3C58 */ 0xFFFD, 0xFFFD, 0x5376, 0xFFFD, 0xFFFD, 0xFFFD, 0x544B, 0xFFFD, -/* 3C60 */ 0x3169, 0x397D, 0x3674, 0x655A, 0x6558, 0x6559, 0x3540, 0x346F, -/* 3C68 */ 0x4E25, 0xFFFD, 0xFFFD, 0x655C, 0xFFFD, 0xFFFD, 0x655E, 0x5137, -/* 3C70 */ 0xFFFD, 0x355D, 0xFFFD, 0x5436, 0xFFFD, 0x655D, 0x4732, 0xFFFD, -/* 3C78 */ 0x5223, 0xFFFD, 0xFFFD, 0x655B, 0x4A4A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C80 */ 0x5462, 0x555A, 0xFFFD, 0xFFFD, 0xFFFD, 0x3359, 0xFFFD, 0x6560, -/* 3C88 */ 0x5771, 0xFFFD, 0x4728, 0x5121, 0xFFFD, 0x5245, 0xFFFD, 0x4149, -/* 3C90 */ 0x6561, 0xFFFD, 0x315C, 0x517B, 0x4275, 0x6562, 0x6564, 0x3B39, -/* 3C98 */ 0xFFFD, 0xFFFD, 0x6547, 0x6563, 0xFFFD, 0x315F, 0x6565, 0xFFFD, -/* 3CA0 */ 0xFFFD, 0xFFFD, 0x425F, 0x654E, 0x5258, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CA8 */ 0x675F, 0xFFFD, 0x5A75, 0xFFFD, 0x5A78, 0xFFFD, 0x5A76, 0xFFFD, -/* 3CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A7A, 0x504F, 0x4447, 0xFFFD, -/* 3CB8 */ 0xFFFD, 0x306E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5030, 0xFFFD, 0xFFFD, -/* 3CC0 */ 0xFFFD, 0xFFFD, 0x3A2A, 0x5B22, 0x4771, 0xFFFD, 0x5A7C, 0x5A7B, -/* 3CC8 */ 0x495B, 0x5A7D, 0xFFFD, 0x5B21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CD0 */ 0xFFFD, 0x5B25, 0xFFFD, 0xFFFD, 0x7879, 0xFFFD, 0xFFFD, 0x5B27, -/* 3CD8 */ 0x5B24, 0xFFFD, 0x5B28, 0xFFFD, 0xFFFD, 0x3D3C, 0xFFFD, 0xFFFD, -/* 3CE0 */ 0xFFFD, 0x4049, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CE8 */ 0xFFFD, 0xFFFD, 0x5B2D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B2E, 0x5B2C, -/* 3CF0 */ 0x3A42, 0xFFFD, 0x5B23, 0xFFFD, 0x3F24, 0x5B2B, 0xFFFD, 0xFFFD, -/* 3CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x323F, 0xFFFD, 0xFFFD, 0x5B2F, 0xFFFD, -/* 3D00 */ 0x3979, 0xFFFD, 0x5B30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x333B, -/* 3D08 */ 0x534A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D10 */ 0x363C, 0x5B31, 0xFFFD, 0xFFFD, 0xFFFD, 0x3675, 0xFFFD, 0x5B32, -/* 3D18 */ 0xFFFD, 0x5B29, 0xFFFD, 0xFFFD, 0x4F67, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x575E, 0xFFFD, 0x5A79, -/* 3D28 */ 0xFFFD, 0x5447, 0xFFFD, 0xFFFD, 0x3149, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D30 */ 0xFFFD, 0x5B34, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B33, 0x5B35, 0xFFFD, -/* 3D38 */ 0xFFFD, 0xFFFD, 0x354B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D40 */ 0x5623, 0xFFFD, 0x5B37, 0x415A, 0x5B36, 0x3526, 0xFFFD, 0x5A7E, -/* 3D48 */ 0xFFFD, 0x5B26, 0xFFFD, 0xFFFD, 0x5B38, 0x5A77, 0xFFFD, 0xFFFD, -/* 3D50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B39, 0xFFFD, -/* 3D58 */ 0xFFFD, 0x5B3A, 0xFFFD, 0x5B2A, 0x534F, 0x747A, 0x4775, 0x5743, -/* 3D60 */ 0x4564, 0x747C, 0x747D, 0x747B, 0xFFFD, 0x3E46, 0xFFFD, 0xFFFD, -/* 3D68 */ 0xFFFD, 0xFFFD, 0x506F, 0xFFFD, 0xFFFD, 0x3753, 0xFFFD, 0xFFFD, -/* 3D70 */ 0xFFFD, 0x4C2A, 0xFFFD, 0xFFFD, 0x7522, 0x7521, 0x3A28, 0x747E, -/* 3D78 */ 0x4B56, 0xFFFD, 0xFFFD, 0xFFFD, 0x7524, 0x4052, 0xFFFD, 0x336A, -/* 3D80 */ 0xFFFD, 0x4D2A, 0x7525, 0x7523, 0xFFFD, 0x7528, 0xFFFD, 0x7529, -/* 3D88 */ 0x3D4D, 0x4338, 0x3F61, 0x4B61, 0x752A, 0x752C, 0xFFFD, 0x343C, -/* 3D90 */ 0xFFFD, 0x576D, 0xFFFD, 0x3457, 0x752B, 0x752E, 0xFFFD, 0xFFFD, -/* 3D98 */ 0x752D, 0x752F, 0x5051, 0xFFFD, 0xFFFD, 0xFFFD, 0x544D, 0xFFFD, -/* 3DA0 */ 0xFFFD, 0xFFFD, 0x4351, 0x4829, 0x3373, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DA8 */ 0xFFFD, 0xFFFD, 0x7530, 0x7531, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DB0 */ 0xFFFD, 0xFFFD, 0x7532, 0x523D, 0x3D34, 0x7533, 0x7534, 0x7535, -/* 3DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7537, 0x7536, 0xFFFD, 0xFFFD, -/* 3DC0 */ 0xFFFD, 0xFFFD, 0x7538, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DC8 */ 0x4470, 0x5046, 0xFFFD, 0x7527, 0xFFFD, 0x7526, 0xFFFD, 0x3249, -/* 3DD0 */ 0xFFFD, 0x5354, 0xFFFD, 0x4A4D, 0x784E, 0x5658, 0x5230, 0x413F, -/* 3DD8 */ 0xFFFD, 0x3D70, 0x6E44, 0x6E45, 0x6E46, 0x6E49, 0xFFFD, 0x6E48, -/* 3DE0 */ 0x3624, 0x6E47, 0xFFFD, 0xFFFD, 0x382A, 0x556B, 0xFFFD, 0xFFFD, -/* 3DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3576, 0x6E4C, 0xFFFD, 0xFFFD, 0x6E4B, -/* 3DF0 */ 0xFFFD, 0x3730, 0x6E4E, 0xFFFD, 0x6E4A, 0xFFFD, 0x6E4F, 0x4725, -/* 3DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E59, 0x6E55, 0xFFFD, -/* 3E00 */ 0xFFFD, 0x6E57, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E50, 0x4446, 0xFFFD, -/* 3E08 */ 0xFFFD, 0xFFFD, 0x365B, 0x3933, 0xFFFD, 0x6E54, 0x6E53, 0xFFFD, -/* 3E10 */ 0xFFFD, 0x332E, 0x4525, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E20 */ 0x3846, 0xFFFD, 0x6E58, 0x6E51, 0x6E56, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E6A, 0xFFFD, 0x6E66, 0xFFFD, 0xFFFD, -/* 3E30 */ 0x6E5D, 0x4165, 0xFFFD, 0xFFFD, 0x6E5C, 0x6E60, 0x6E6B, 0x6E5A, -/* 3E38 */ 0xFFFD, 0xFFFD, 0x6E5F, 0x534B, 0x6E64, 0x3C58, 0xFFFD, 0xFFFD, -/* 3E40 */ 0xFFFD, 0xFFFD, 0x6E52, 0xFFFD, 0xFFFD, 0x6E68, 0x6E67, 0xFFFD, -/* 3E48 */ 0xFFFD, 0xFFFD, 0x6E69, 0xFFFD, 0xFFFD, 0xFFFD, 0x322C, 0xFFFD, -/* 3E50 */ 0xFFFD, 0xFFFD, 0x6E5E, 0xFFFD, 0x472F, 0xFFFD, 0xFFFD, 0x432D, -/* 3E58 */ 0x4726, 0xFFFD, 0xFFFD, 0x6E61, 0xFFFD, 0xFFFD, 0xFFFD, 0x3227, -/* 3E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E68 */ 0xFFFD, 0x6E62, 0x6E63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D42, 0xFFFD, 0x6E6F, -/* 3E78 */ 0x3875, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E7E, 0x5278, 0xFFFD, 0xFFFD, -/* 3E80 */ 0x6F25, 0xFFFD, 0x4D2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7646, 0xFFFD, 0xFFFD, 0x4F33, 0xFFFD, -/* 3E90 */ 0x6E7D, 0xFFFD, 0xFFFD, 0x6E79, 0xFFFD, 0x437A, 0xFFFD, 0x6F22, -/* 3E98 */ 0xFFFD, 0x4F4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E6E, 0xFFFD, 0xFFFD, -/* 3EA0 */ 0x6F28, 0xFFFD, 0x523F, 0x6E77, 0xFFFD, 0x6F27, 0x6E7B, 0x6E70, -/* 3EA8 */ 0x6F24, 0x6E6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E76, 0xFFFD, -/* 3EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F7A, 0xFFFD, 0x5062, 0xFFFD, -/* 3EB8 */ 0x4C60, 0x6F31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4241, 0xFFFD, -/* 3EC0 */ 0x6F36, 0xFFFD, 0x503F, 0xFFFD, 0x3135, 0x7648, 0xFFFD, 0xFFFD, -/* 3EC8 */ 0xFFFD, 0x6E7A, 0xFFFD, 0xFFFD, 0x6E72, 0xFFFD, 0xFFFD, 0x3766, -/* 3ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3ED8 */ 0xFFFD, 0xFFFD, 0x6F32, 0xFFFD, 0x6F37, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EE0 */ 0x6E74, 0x337A, 0x6F2D, 0x6F38, 0xFFFD, 0x6F30, 0xFFFD, 0x464C, -/* 3EE8 */ 0xFFFD, 0xFFFD, 0x4871, 0x6E71, 0x6F2F, 0x6F2E, 0x6F2B, 0xFFFD, -/* 3EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F33, 0xFFFD, 0x3E62, 0xFFFD, 0xFFFD, -/* 3EF8 */ 0xFFFD, 0x3856, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F3E, 0xFFFD, -/* 3F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F3A, 0x6F42, 0x6F43, 0xFFFD, 0xFFFD, -/* 3F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5736, 0xFFFD, 0x6F39, -/* 3F10 */ 0xFFFD, 0xFFFD, 0x6F3F, 0xFFFD, 0xFFFD, 0x3438, 0x6F45, 0x6F23, -/* 3F18 */ 0x6F3C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F44, 0x3627, 0xFFFD, 0x472E, -/* 3F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D75, 0xFFFD, 0x432A, 0xFFFD, 0xFFFD, -/* 3F28 */ 0x4E7D, 0xFFFD, 0xFFFD, 0x6F40, 0x346D, 0xFFFD, 0xFFFD, 0x423C, -/* 3F30 */ 0x434C, 0xFFFD, 0xFFFD, 0x7823, 0xFFFD, 0x6F2A, 0xFFFD, 0xFFFD, -/* 3F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F3D, 0x4F47, 0xFFFD, -/* 3F40 */ 0x6F41, 0xFFFD, 0xFFFD, 0x6E4D, 0x6F47, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F48 */ 0x3978, 0xFFFD, 0x3646, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F50 */ 0xFFFD, 0x6F49, 0xFFFD, 0xFFFD, 0xFFFD, 0x5521, 0xFFFD, 0xFFFD, -/* 3F58 */ 0x364D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F60 */ 0xFFFD, 0x6F4A, 0x6F46, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F3B, 0x764A, -/* 3F68 */ 0xFFFD, 0x4742, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F4C, 0xFFFD, 0xFFFD, -/* 3F70 */ 0xFFFD, 0xFFFD, 0x3C7C, 0x6F48, 0xFFFD, 0xFFFD, 0xFFFD, 0x5560, -/* 3F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F71, 0xFFFD, 0xFFFD, 0xFFFD, 0x433E, -/* 3F80 */ 0xFFFD, 0x6F4D, 0xFFFD, 0xFFFD, 0x6F51, 0xFFFD, 0xFFFD, 0x3077, -/* 3F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x764C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B78, 0xFFFD, 0x6F53, 0xFFFD, 0xFFFD, -/* 3F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E59, -/* 3FA0 */ 0x5D76, 0xFFFD, 0xFFFD, 0x6F56, 0x6E78, 0xFFFD, 0x6F21, 0x6F4B, -/* 3FA8 */ 0xFFFD, 0x3864, 0xFFFD, 0x5572, 0xFFFD, 0x6F57, 0xFFFD, 0xFFFD, -/* 3FB0 */ 0x4478, 0xFFFD, 0x6F58, 0xFFFD, 0xFFFD, 0x6F54, 0xFFFD, 0xFFFD, -/* 3FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F55, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FC0 */ 0x6F5F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F60, 0x4134, 0xFFFD, 0x764B, -/* 3FC8 */ 0xFFFD, 0x6F52, 0x6F5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F61, 0xFFFD, -/* 3FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7769, 0x6F2C, 0x6F4F, 0xFFFD, 0xFFFD, -/* 3FD8 */ 0xFFFD, 0x6F5B, 0x6F5C, 0x6F5E, 0x3279, 0xFFFD, 0x3E35, 0x6F5A, -/* 3FE0 */ 0xFFFD, 0x6F4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x7649, 0x6E7C, 0xFFFD, -/* 3FE8 */ 0x6F64, 0xFFFD, 0x6F6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E73, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F26, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4000 */ 0xFFFD, 0x414D, 0xFFFD, 0x6F29, 0x6F66, 0x6F62, 0xFFFD, 0xFFFD, -/* 4008 */ 0xFFFD, 0x5653, 0x6F6B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F63, 0xFFFD, -/* 4010 */ 0xFFFD, 0x6F68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F34, -/* 4018 */ 0x6F35, 0x6F50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x412D, -/* 4020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F6D, 0x4058, 0xFFFD, 0x4C7A, 0xFFFD, -/* 4028 */ 0xFFFD, 0x6E6C, 0xFFFD, 0x6E75, 0xFFFD, 0xFFFD, 0xFFFD, 0x764D, -/* 4030 */ 0x6F6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x567D, 0xFFFD, 0xFFFD, -/* 4038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F6C, 0xFFFD, 0x6F59, 0xFFFD, 0xFFFD, -/* 4040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C78, 0xFFFD, 0x6F6F, 0x6E65, 0xFFFD, -/* 4048 */ 0xFFFD, 0x6F70, 0xFFFD, 0x6F65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4050 */ 0xFFFD, 0x764E, 0xFFFD, 0x6F67, 0xFFFD, 0xFFFD, 0x543F, 0xFFFD, -/* 4058 */ 0x4F62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4477, 0xFFFD, 0x6F69, -/* 4060 */ 0xFFFD, 0xFFFD, 0x4260, 0x576A, 0x7647, 0x5464, 0x3324, 0xFFFD, -/* 4068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4345, -/* 4070 */ 0xFFFD, 0x6345, 0x4941, 0xFFFD, 0xFFFD, 0x6346, 0xFFFD, 0xFFFD, -/* 4078 */ 0x3155, 0xFFFD, 0x3F2A, 0x634A, 0xFFFD, 0x6348, 0x4872, 0xFFFD, -/* 4080 */ 0x4F50, 0xFFFD, 0x3C64, 0x6349, 0xFFFD, 0xFFFD, 0xFFFD, 0x5522, -/* 4088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4090 */ 0x3A52, 0xFFFD, 0x3873, 0x7839, 0x3727, 0xFFFD, 0xFFFD, 0x396B, -/* 4098 */ 0x4376, 0xFFFD, 0x634D, 0x634F, 0x634C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40A0 */ 0xFFFD, 0x5444, 0xFFFD, 0xFFFD, 0xFFFD, 0x6351, 0xFFFD, 0xFFFD, -/* 40A8 */ 0x514B, 0xFFFD, 0x5156, 0x6355, 0x6354, 0x6350, 0x6353, 0xFFFD, -/* 40B0 */ 0xFFFD, 0xFFFD, 0x6356, 0xFFFD, 0xFFFD, 0x7822, 0xFFFD, 0x6347, -/* 40B8 */ 0xFFFD, 0x402B, 0x6357, 0x403B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6359, -/* 40C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6358, 0x635A, 0x3433, 0xFFFD, 0xFFFD, -/* 40C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3958, 0xFFFD, 0x635B, 0xFFFD, 0xFFFD, -/* 40D0 */ 0x327B, 0x785B, 0xFFFD, 0xFFFD, 0x634B, 0x3837, 0x5A62, 0xFFFD, -/* 40D8 */ 0xFFFD, 0xFFFD, 0x5A64, 0x5A63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A66, 0xFFFD, 0xFFFD, 0xFFFD, 0x486E, -/* 40E8 */ 0xFFFD, 0xFFFD, 0x5A65, 0x3740, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5768, 0x5A68, 0x5A67, 0xFFFD, -/* 40F8 */ 0x3022, 0x4D53, 0xFFFD, 0x5A69, 0xFFFD, 0x383D, 0xFFFD, 0xFFFD, -/* 4100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x422A, 0x4430, 0x3D35, 0xFFFD, -/* 4108 */ 0xFFFD, 0x4F5E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A6B, 0xFFFD, 0xFFFD, -/* 4110 */ 0xFFFD, 0x5A6A, 0xFFFD, 0xFFFD, 0x315D, 0xFFFD, 0x4942, 0xFFFD, -/* 4118 */ 0x5A6C, 0xFFFD, 0x3638, 0x543A, 0x5573, 0x337D, 0xFFFD, 0xFFFD, -/* 4120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4563, 0xFFFD, 0x5A6E, 0xFFFD, 0xFFFD, -/* 4128 */ 0xFFFD, 0x5275, 0xFFFD, 0x5A6F, 0x3342, 0x5A70, 0x416A, 0x4C55, -/* 4130 */ 0x4F5D, 0x423D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5174, 0xFFFD, -/* 4138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5367, 0x4221, -/* 4140 */ 0xFFFD, 0x5A71, 0x5A6D, 0x3653, 0x4B65, 0xFFFD, 0x5A72, 0x3D57, -/* 4148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3874, 0x5449, 0xFFFD, -/* 4150 */ 0x5A73, 0x302F, 0x4F36, 0xFFFD, 0x3C4A, 0x554F, 0xFFFD, 0xFFFD, -/* 4158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4160 */ 0x4B6D, 0x4B66, 0xFFFD, 0x4F55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4168 */ 0xFFFD, 0x5A74, 0x527E, 0xFFFD, 0x6344, 0x4224, 0xFFFD, 0xFFFD, -/* 4170 */ 0xFFFD, 0x4125, 0x763F, 0xFFFD, 0x7922, 0x7640, 0x7641, 0xFFFD, -/* 4178 */ 0xFFFD, 0x4838, 0x5163, 0xFFFD, 0xFFFD, 0x505B, 0x5145, 0x3C2F, -/* 4180 */ 0x394D, 0xFFFD, 0x6F74, 0xFFFD, 0xFFFD, 0x3446, 0x533A, 0x7642, -/* 4188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7643, 0xFFFD, 0xFFFD, 0x3571, 0x4B64, -/* 4190 */ 0xFFFD, 0xFFFD, 0x4B2B, 0xFFFD, 0x337B, 0x5453, 0xFFFD, 0xFFFD, -/* 4198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x406B, 0x4451, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41A0 */ 0xFFFD, 0x536A, 0x7627, 0x5129, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41A8 */ 0x7629, 0xFFFD, 0xFFFD, 0x5446, 0xFFFD, 0xFFFD, 0xFFFD, 0x4163, -/* 41B0 */ 0x4057, 0xFFFD, 0x3122, 0xFFFD, 0x3567, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41B8 */ 0xFFFD, 0x5068, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F76, 0xFFFD, 0x762A, -/* 41C0 */ 0x5570, 0x762C, 0x4339, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B74, 0x762E, -/* 41C8 */ 0x762D, 0xFFFD, 0xFFFD, 0xFFFD, 0x445E, 0xFFFD, 0xFFFD, 0x4158, -/* 41D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B2A, 0xFFFD, 0x4F3C, -/* 41D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41E0 */ 0x4E6D, 0xFFFD, 0xFFFD, 0x762F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41E8 */ 0xFFFD, 0x7631, 0xFFFD, 0x4236, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41F0 */ 0xFFFD, 0x3054, 0x4579, 0xFFFD, 0xFFFD, 0xFFFD, 0x762B, 0x7632, -/* 41F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7628, 0xFFFD, 0x7630, 0xFFFD, 0xFFFD, -/* 4200 */ 0xFFFD, 0x4169, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4760, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E38, -/* 4210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7626, 0x3565, 0x3E32, 0xFFFD, 0x3747, -/* 4218 */ 0xFFFD, 0x3F3F, 0x4352, 0x4366, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4220 */ 0xFFFD, 0x584C, 0x386F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D79, 0x5125, 0xFFFD, 0x3050, -/* 4230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7730, 0xFFFD, 0xFFFD, -/* 4238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7731, 0xFFFD, -/* 4240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x502C, 0xFFFD, 0x3030, 0xFFFD, -/* 4248 */ 0x392E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7734, 0xFFFD, 0xFFFD, -/* 4250 */ 0xFFFD, 0x474A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4258 */ 0xFFFD, 0x3E4F, 0xFFFD, 0xFFFD, 0x7737, 0xFFFD, 0xFFFD, 0x7864, -/* 4260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7736, 0xFFFD, 0x315E, 0xFFFD, -/* 4268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7738, 0xFFFD, 0x7739, 0xFFFD, 0xFFFD, -/* 4270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7733, 0xFFFD, -/* 4278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7732, 0xFFFD, 0xFFFD, 0x7861, -/* 4280 */ 0xFFFD, 0xFFFD, 0x7735, 0xFFFD, 0x4E24, 0x484D, 0xFFFD, 0xFFFD, -/* 4288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A2B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4290 */ 0xFFFD, 0xFFFD, 0x6838, 0xFFFD, 0xFFFD, 0x683A, 0xFFFD, 0x6839, -/* 4298 */ 0x3E42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5274, 0xFFFD, -/* 42A0 */ 0x544F, 0x4958, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42A8 */ 0xFFFD, 0xFFFD, 0x4F6C, 0xFFFD, 0x5233, 0x3625, 0x476A, 0xFFFD, -/* 42B0 */ 0x4F6E, 0x4B33, 0x717C, 0x506B, 0xFFFD, 0x676F, 0xFFFD, 0x4B4C, -/* 42B8 */ 0xFFFD, 0x717D, 0x717E, 0x5424, 0x4D67, 0x3064, 0x3659, 0xFFFD, -/* 42C0 */ 0xFFFD, 0xFFFD, 0x4644, 0x416C, 0xFFFD, 0xFFFD, 0xFFFD, 0x7222, -/* 42C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7221, 0xFFFD, 0xFFFD, 0x5243, -/* 42D0 */ 0xFFFD, 0x7224, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42D8 */ 0x4D37, 0xFFFD, 0xFFFD, 0x3C55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42E0 */ 0xFFFD, 0xFFFD, 0x7225, 0x3E31, 0xFFFD, 0xFFFD, 0x4635, 0xFFFD, -/* 42E8 */ 0x4D47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42F0 */ 0xFFFD, 0x3F45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C62, -/* 42F8 */ 0x366E, 0x7226, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7227, 0x5155, -/* 4300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5438, 0x722A, 0xFFFD, 0x355F, 0xFFFD, -/* 4308 */ 0xFFFD, 0x4060, 0xFFFD, 0xFFFD, 0xFFFD, 0x7229, 0xFFFD, 0xFFFD, -/* 4310 */ 0x722B, 0xFFFD, 0x394B, 0xFFFD, 0xFFFD, 0xFFFD, 0x327C, 0x722C, -/* 4318 */ 0xFFFD, 0xFFFD, 0x4F54, 0x722D, 0x422D, 0xFFFD, 0x7228, 0x4827, -/* 4320 */ 0x3767, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C29, 0x6C2A, -/* 4328 */ 0xFFFD, 0x786C, 0xFFFD, 0x7837, 0xFFFD, 0xFFFD, 0x6C2B, 0xFFFD, -/* 4330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C2C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x462E, 0xFFFD, 0x6C2D, 0xFFFD, -/* 4340 */ 0x6C2E, 0x3749, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A33, 0x623B, 0xFFFD, -/* 4348 */ 0x783F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6238, 0xFFFD, 0x623D, -/* 4350 */ 0x623F, 0x6240, 0xFFFD, 0x6241, 0xFFFD, 0x3739, 0xFFFD, 0xFFFD, -/* 4358 */ 0x527B, 0xFFFD, 0x6242, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4360 */ 0xFFFD, 0xFFFD, 0x4B47, 0x3125, 0x4A4E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4368 */ 0xFFFD, 0x3D48, 0xFFFD, 0x317D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6243, -/* 4370 */ 0x5178, 0xFFFD, 0x367C, 0xFFFD, 0xFFFD, 0xFFFD, 0x324D, 0x6244, -/* 4378 */ 0x4459, 0x3676, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5360, 0xFFFD, -/* 4380 */ 0xFFFD, 0x6246, 0xFFFD, 0xFFFD, 0x3D24, 0xFFFD, 0xFFFD, 0x4F5A, -/* 4388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x395D, 0xFFFD, -/* 4390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7751, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4398 */ 0xFFFD, 0x623C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6247, 0xFFFD, 0xFFFD, -/* 43A0 */ 0xFFFD, 0xFFFD, 0x623E, 0xFFFD, 0x4173, 0x6248, 0xFFFD, 0xFFFD, -/* 43A8 */ 0xFFFD, 0x6249, 0xFFFD, 0x4278, 0xFFFD, 0xFFFD, 0x624A, 0x624B, -/* 43B0 */ 0x624C, 0x4021, 0x624D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C22, -/* 43B8 */ 0x4844, 0xFFFD, 0x7753, 0x7752, 0xFFFD, 0x774F, 0xFFFD, 0xFFFD, -/* 43C0 */ 0xFFFD, 0xFFFD, 0x7750, 0xFFFD, 0x3276, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43C8 */ 0x624E, 0x4A57, 0x5838, 0x5965, 0x4F63, 0x7025, 0xFFFD, 0xFFFD, -/* 43D0 */ 0x5C30, 0xFFFD, 0xFFFD, 0xFFFD, 0x426D, 0x5426, 0x376B, 0xFFFD, -/* 43D8 */ 0xFFFD, 0x4D54, 0xFFFD, 0x335B, 0x5131, 0x5724, 0x6665, 0x3E54, -/* 43E0 */ 0xFFFD, 0x6660, 0x3C5D, 0xFFFD, 0xFFFD, 0x6666, 0x6662, 0xFFFD, -/* 43E8 */ 0x4A3B, 0xFFFD, 0x4D55, 0xFFFD, 0x6661, 0xFFFD, 0x426E, 0x6669, -/* 43F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43F8 */ 0xFFFD, 0xFFFD, 0x3A27, 0xFFFD, 0xFFFD, 0xFFFD, 0x4266, 0x3F25, -/* 4400 */ 0xFFFD, 0x3352, 0xFFFD, 0xFFFD, 0xFFFD, 0x666D, 0xFFFD, 0xFFFD, -/* 4408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x666C, 0x466F, 0x666B, -/* 4410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6670, 0xFFFD, -/* 4418 */ 0xFFFD, 0x462D, 0x6539, 0xFFFD, 0x666F, 0x6672, 0xFFFD, 0x4C5A, -/* 4420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6663, 0x4927, 0x6673, -/* 4428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4262, 0xFFFD, 0x5D6B, -/* 4430 */ 0x6671, 0x666E, 0x6674, 0x6675, 0x477D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4438 */ 0xFFFD, 0x6668, 0xFFFD, 0xFFFD, 0x6667, 0xFFFD, 0x6676, 0xFFFD, -/* 4440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D3E, 0xFFFD, 0x5169, 0xFFFD, -/* 4448 */ 0xFFFD, 0x3E2A, 0x6664, 0xFFFD, 0xFFFD, 0xFFFD, 0x5668, 0xFFFD, -/* 4450 */ 0xFFFD, 0x423F, 0xFFFD, 0x6678, 0x6677, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4458 */ 0xFFFD, 0x666A, 0x3947, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4460 */ 0xFFFD, 0x3039, 0x773B, 0x773A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4468 */ 0x773E, 0x773C, 0x3A21, 0xFFFD, 0x773F, 0xFFFD, 0x7740, 0xFFFD, -/* 4470 */ 0xFFFD, 0xFFFD, 0x7742, 0x7741, 0x7744, 0x7743, 0xFFFD, 0x7747, -/* 4478 */ 0x787E, 0x4B68, 0x4C65, 0x7746, 0x7745, 0xFFFD, 0x385F, 0xFFFD, -/* 4480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7754, 0xFFFD, 0x7755, -/* 4488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7756, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4490 */ 0xFFFD, 0x7758, 0xFFFD, 0x775A, 0x7831, 0x7757, 0xFFFD, 0xFFFD, -/* 4498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x775B, -/* 44A0 */ 0xFFFD, 0x7759, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44A8 */ 0xFFFD, 0x5757, 0xFFFD, 0xFFFD, 0x4B49, 0xFFFD, 0x775C, 0xFFFD, -/* 44B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x783A, 0xFFFD, 0x775D, 0xFFFD, 0xFFFD, -/* 44B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44C0 */ 0x7876, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x775F, 0xFFFD, 0xFFFD, -/* 44C8 */ 0x775E, 0x7760, 0xFFFD, 0x3637, 0xFFFD, 0x4456, 0xFFFD, 0x6352, -/* 44D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x634E, 0x5B4B, 0xFFFD, 0x5374, -/* 44D8 */ 0x582A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44E0 */ 0xFFFD, 0x6577, 0x396D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F7D, -/* 44E8 */ 0x3B6A, 0x7749, 0x4647, 0x7748, 0xFFFD, 0xFFFD, 0x774C, 0xFFFD, -/* 44F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x774D, 0x774B, 0x4E3A, 0xFFFD, 0x774E, -/* 44F8 */ 0xFFFD, 0xFFFD, 0x4427, 0xFFFD, 0xFFFD, 0xFFFD, 0x774A, 0xFFFD, -/* 4500 */ 0x5363, 0x4233, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7650, 0xFFFD, -/* 4508 */ 0xFFFD, 0x764F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7651, 0xFFFD, 0x7652, 0xFFFD, 0xFFFD, -/* 4518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4520 */ 0x7653, 0xFFFD, 0x7658, 0x312B, 0x7656, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x765A, 0xFFFD, 0xFFFD, 0x765F, -/* 4530 */ 0x765C, 0x765B, 0x765E, 0xFFFD, 0x7659, 0x4F4A, 0x7667, 0x7661, -/* 4538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7669, 0xFFFD, 0x4070, -/* 4540 */ 0x7668, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4548 */ 0xFFFD, 0xFFFD, 0x7676, 0xFFFD, 0x766B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4550 */ 0xFFFD, 0x7674, 0xFFFD, 0x7671, 0xFFFD, 0xFFFD, 0xFFFD, 0x766E, -/* 4558 */ 0x7672, 0xFFFD, 0x766F, 0xFFFD, 0xFFFD, 0x7670, 0x3E28, 0xFFFD, -/* 4560 */ 0x766C, 0x766D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7673, 0xFFFD, -/* 4568 */ 0xFFFD, 0xFFFD, 0x7675, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x766A, 0xFFFD, 0x767D, 0xFFFD, 0xFFFD, -/* 4578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7678, 0x767C, -/* 4580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x767A, 0xFFFD, 0xFFFD, 0x7679, 0xFFFD, -/* 4588 */ 0x767B, 0x487A, 0x767E, 0xFFFD, 0xFFFD, 0x7665, 0xFFFD, 0x7724, -/* 4590 */ 0xFFFD, 0xFFFD, 0x7723, 0x7725, 0xFFFD, 0xFFFD, 0xFFFD, 0x7722, -/* 4598 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7663, 0x7721, 0x7726, 0xFFFD, 0x772A, -/* 45A0 */ 0xFFFD, 0x7666, 0xFFFD, 0x7664, 0xFFFD, 0x7729, 0xFFFD, 0xFFFD, -/* 45A8 */ 0x7727, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x772B, -/* 45B0 */ 0xFFFD, 0xFFFD, 0x7728, 0x316E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 45B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x772E, 0xFFFD, 0x772D, 0xFFFD, -/* 45C0 */ 0x772C, 0x415B, 0x7660, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7677, -/* 45C8 */ 0xFFFD, 0x7657, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 45D0 */ 0xFFFD, 0x772F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x765D, -/* 45D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 45E0 */ 0xFFFD, 0xFFFD, 0x7654, 0xFFFD, 0x7662, 0x4471, 0xFFFD, 0xFFFD, -/* 45E8 */ 0xFFFD, 0x702F, 0xFFFD, 0xFFFD, 0x596C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 45F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x376F, 0x4379, 0xFFFD, 0x7030, 0x7032, -/* 45F8 */ 0x7031, 0xFFFD, 0x513B, 0x4D52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4600 */ 0xFFFD, 0x5427, 0xFFFD, 0x7036, 0xFFFD, 0x7037, 0xFFFD, 0xFFFD, -/* 4608 */ 0xFFFD, 0x7033, 0xFFFD, 0xFFFD, 0x516C, 0xFFFD, 0x513C, 0xFFFD, -/* 4610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7039, 0x703B, 0xFFFD, -/* 4618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4620 */ 0xFFFD, 0x3A68, 0xFFFD, 0xFFFD, 0xFFFD, 0x386B, 0xFFFD, 0xFFFD, -/* 4628 */ 0x703C, 0x3E69, 0x7041, 0x703E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7043, 0x366C, 0xFFFD, 0xFFFD, -/* 4638 */ 0x7040, 0x7044, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4640 */ 0xFFFD, 0xFFFD, 0x7046, 0xFFFD, 0x4574, 0xFFFD, 0xFFFD, 0x7047, -/* 4648 */ 0xFFFD, 0xFFFD, 0x4835, 0x7034, 0xFFFD, 0x7048, 0xFFFD, 0xFFFD, -/* 4650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7045, -/* 4658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7049, 0xFFFD, 0x704A, 0xFFFD, -/* 4660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4668 */ 0xFFFD, 0x704C, 0xFFFD, 0xFFFD, 0xFFFD, 0x704D, 0xFFFD, 0xFFFD, -/* 4670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4678 */ 0x3A57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x773D, -/* 4680 */ 0x704F, 0xFFFD, 0xFFFD, 0xFFFD, 0x704B, 0xFFFD, 0x704E, 0xFFFD, -/* 4688 */ 0x3C26, 0x7051, 0xFFFD, 0xFFFD, 0xFFFD, 0x4538, 0xFFFD, 0x703A, -/* 4690 */ 0x7052, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7038, 0x7054, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7053, 0xFFFD, 0xFFFD, -/* 46A8 */ 0x7055, 0x7042, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7056, 0x5325, -/* 46B0 */ 0x7058, 0x7057, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46B8 */ 0xFFFD, 0xFFFD, 0x7035, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7050, -/* 46C0 */ 0x7059, 0xFFFD, 0x703F, 0x703D, 0x7852, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46C8 */ 0x7874, 0x753A, 0xFFFD, 0x3C6F, 0x514E, 0xFFFD, 0x4239, 0xFFFD, -/* 46D0 */ 0xFFFD, 0x7764, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7765, 0x7766, -/* 46D8 */ 0xFFFD, 0xFFFD, 0x7767, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46E0 */ 0xFFFD, 0x7768, 0x4234, 0xFFFD, 0xFFFD, 0xFFFD, 0x4076, 0xFFFD, -/* 46E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x776A, 0xFFFD, 0x776B, 0xFFFD, -/* 46F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4273, 0xFFFD, 0xFFFD, 0xFFFD, -/* 46F8 */ 0x746F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7865, 0xFFFD, -/* 4700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7470, 0x7859, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4708 */ 0xFFFD, 0xFFFD, 0x4269, 0xFFFD, 0x4334, 0x7762, 0xFFFD, 0xFFFD, -/* 4710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5964, 0x4A72, 0x4068, 0x7024, 0xFFFD, -/* 4720 */ 0x3A5A, 0xFFFD, 0xFFFD, 0x472D, 0xFFFD, 0xFFFD, 0xFFFD, 0x442C, -/* 4728 */ 0xFFFD, 0xFFFD, 0x776C, 0x776D, 0x776E, 0x3563, 0x7770, 0x776F, -/* 4730 */ 0xFFFD, 0x7771, 0xFFFD, 0xFFFD, 0x7774, 0xFFFD, 0x7773, 0x3533, -/* 4738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7776, 0xFFFD, -/* 4740 */ 0xFFFD, 0x7775, 0xFFFD, 0x7854, 0xFFFD, 0xFFFD, 0x7772, 0xFFFD, -/* 4748 */ 0x6D69, 0xFFFD, 0x6D6A, 0x6D6B, 0x763C, 0xFFFD, 0x763D, 0xFFFD, -/* 4750 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4758 */ 0x763E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3626, 0xFFFD, 0x583E, -/* 4760 */ 0xFFFD, 0xFFFD, 0x3944, 0xFFFD, 0x782E, 0xFFFD, 0x583B, 0xFFFD, -/* 4768 */ 0x5C31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A73, -/* 4770 */ 0xFFFD, 0x7777, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7778, 0xFFFD, 0xFFFD, 0x7779, 0xFFFD, -/* 4780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x777B, 0xFFFD, -/* 4788 */ 0x777A, 0xFFFD, 0x3147, 0xFFFD, 0x777C, 0x777D, 0xFFFD, 0xFFFD, -/* 4790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x777E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4798 */ 0xFFFD, 0x466B, 0x552B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C34, 0xFFFD, -/* 47A0 */ 0xFFFD, 0x335D, 0xFFFD, 0x7633, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 47A8 */ 0x7635, 0xFFFD, 0xFFFD, 0x7637, 0xFFFD, 0xFFFD, 0x7634, 0x7636, -/* 47B0 */ 0x4164, 0xFFFD, 0x782A, 0xFFFD, 0xFFFD, 0x7638, 0xFFFD, 0xFFFD, -/* 47B8 */ 0xFFFD, 0x763A, 0xFFFD, 0x7639, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 47C0 */ 0xFFFD, 0x4823, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x763B, 0x417A, -/* 47C8 */ 0xFFFD, 0xFFFD, 0x4553, 0xFFFD, 0xFFFD, 0xFFFD, 0x3928, 0x6D68, -/* 47D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x396A, 0xFFFD, -/* 47D8 */ 0xFFFD, 0xFFFD, 0x595F, 0x2321, 0x2322, 0x2323, 0x2167, 0x2169, -/* 47E0 */ 0x216A, 0xFFFD, 0x237E, 0xFFFD, 0x2324, -/* End of table Total Length = 0x4A2C * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/gb13000.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/gb13000.uf deleted file mode 100644 index 708c6f0f391..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/gb13000.uf +++ /dev/null @@ -1,11053 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = A6A1 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = A6B2 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = A6C1 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = A6D2 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0410 - srcEnd = 0415 - destBegin = A7A1 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0416 - srcEnd = 042F - destBegin = A7A8 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0430 - srcEnd = 0435 - destBegin = A7D1 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0436 - srcEnd = 044F - destBegin = A7D8 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2160 - srcEnd = 216B - destBegin = A2F1 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2170 - srcEnd = 2179 - destBegin = A2A1 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2460 - srcEnd = 2469 - destBegin = A2D9 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2474 - srcEnd = 2487 - destBegin = A2C5 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 2488 - srcEnd = 249B - destBegin = A2B1 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 2500 - srcEnd = 254B - destBegin = A9A4 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 2550 - srcEnd = 2573 - destBegin = A854 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 2581 - srcEnd = 2587 - destBegin = A878 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 2588 - srcEnd = 258F - destBegin = A880 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 3008 - srcEnd = 300F - destBegin = A1B4 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 3021 - srcEnd = 3029 - destBegin = A940 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = A4A1 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 30A1 - srcEnd = 30F6 - destBegin = A5A1 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 3105 - srcEnd = 3129 - destBegin = A8C5 -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 3220 - srcEnd = 3229 - destBegin = A2E5 -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 4E6A - srcEnd = 4E6F - destBegin = 8165 -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 4E74 - srcEnd = 4E7D - destBegin = 816C -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 4E7F - srcEnd = 4E85 - destBegin = 8176 -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = 4F02 - srcEnd = 4F08 - destBegin = 81AC -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = 4F47 - srcEnd = 4F4C - destBegin = 81D0 -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = 4FB6 - srcEnd = 4FBE - destBegin = 8248 -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = 4FFF - srcEnd = 500A - destBegin = 8273 -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = 502F - srcEnd = 5039 - destBegin = 8291 -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = 505D - srcEnd = 5064 - destBegin = 82B3 -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = 5066 - srcEnd = 506B - destBegin = 82BB -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = 506D - srcEnd = 5075 - destBegin = 82C1 -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = 508E - srcEnd = 50A2 - destBegin = 82D9 -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = 50B3 - srcEnd = 50B9 - destBegin = 82F7 -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = 50BD - srcEnd = 50CE - destBegin = 8340 -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = 50D0 - srcEnd = 50D5 - destBegin = 8352 -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = 50DB - srcEnd = 50E5 - destBegin = 835B -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = 50FC - srcEnd = 5105 - destBegin = 8374 -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = 510C - srcEnd = 5111 - destBegin = 8382 -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = 5113 - srcEnd = 5120 - destBegin = 8388 -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = 5122 - srcEnd = 513E - destBegin = 8396 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = 51D2 - srcEnd = 51D7 - destBegin = 83F9 -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = 51E5 - srcEnd = 51EA - destBegin = 8448 -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = 5244 - srcEnd = 5249 - destBegin = 8471 -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = 5273 - srcEnd = 527C - destBegin = 8491 -End of Item 002E - -Begin of Item 002F - Format 0 - srcBegin = 5289 - srcEnd = 528F - destBegin = 84A2 -End of Item 002F - -Begin of Item 0030 - Format 0 - srcBegin = 5294 - srcEnd = 529A - destBegin = 84AB -End of Item 0030 - -Begin of Item 0031 - Format 0 - srcBegin = 52B4 - srcEnd = 52BD - destBegin = 84BA -End of Item 0031 - -Begin of Item 0032 - Format 0 - srcBegin = 52D9 - srcEnd = 52DE - destBegin = 84D5 -End of Item 0032 - -Begin of Item 0033 - Format 0 - srcBegin = 52E5 - srcEnd = 52EF - destBegin = 84DF -End of Item 0033 - -Begin of Item 0034 - Format 0 - srcBegin = 52F1 - srcEnd = 52F8 - destBegin = 84EA -End of Item 0034 - -Begin of Item 0035 - Format 0 - srcBegin = 532F - srcEnd = 5338 - destBegin = 8552 -End of Item 0035 - -Begin of Item 0036 - Format 0 - srcBegin = 53AF - srcEnd = 53B5 - destBegin = 8593 -End of Item 0036 - -Begin of Item 0037 - Format 0 - srcBegin = 5469 - srcEnd = 5470 - destBegin = 85E1 -End of Item 0037 - -Begin of Item 0038 - Format 0 - srcBegin = 54F4 - srcEnd = 54F9 - destBegin = 865D -End of Item 0038 - -Begin of Item 0039 - Format 0 - srcBegin = 5515 - srcEnd = 551A - destBegin = 8672 -End of Item 0039 - -Begin of Item 003A - Format 0 - srcBegin = 556F - srcEnd = 5574 - destBegin = 86A9 -End of Item 003A - -Begin of Item 003B - Format 0 - srcBegin = 55A0 - srcEnd = 55A6 - destBegin = 86C1 -End of Item 003B - -Begin of Item 003C - Format 0 - srcBegin = 55A8 - srcEnd = 55B0 - destBegin = 86C8 -End of Item 003C - -Begin of Item 003D - Format 0 - srcBegin = 5610 - srcEnd = 5617 - destBegin = 8745 -End of Item 003D - -Begin of Item 003E - Format 0 - srcBegin = 5640 - srcEnd = 564B - destBegin = 8765 -End of Item 003E - -Begin of Item 003F - Format 0 - srcBegin = 567D - srcEnd = 5684 - destBegin = 8790 -End of Item 003F - -Begin of Item 0040 - Format 0 - srcBegin = 5687 - srcEnd = 568D - destBegin = 8798 -End of Item 0040 - -Begin of Item 0041 - Format 0 - srcBegin = 5694 - srcEnd = 56A2 - destBegin = 87A2 -End of Item 0041 - -Begin of Item 0042 - Format 0 - srcBegin = 56A4 - srcEnd = 56AE - destBegin = 87B1 -End of Item 0042 - -Begin of Item 0043 - Format 0 - srcBegin = 56B0 - srcEnd = 56B6 - destBegin = 87BC -End of Item 0043 - -Begin of Item 0044 - Format 0 - srcBegin = 56BD - srcEnd = 56C9 - destBegin = 87C7 -End of Item 0044 - -Begin of Item 0045 - Format 0 - srcBegin = 56CB - srcEnd = 56D3 - destBegin = 87D4 -End of Item 0045 - -Begin of Item 0046 - Format 0 - srcBegin = 56E5 - srcEnd = 56EA - destBegin = 87E3 -End of Item 0046 - -Begin of Item 0047 - Format 0 - srcBegin = 570B - srcEnd = 5711 - destBegin = 87F8 -End of Item 0047 - -Begin of Item 0048 - Format 0 - srcBegin = 5712 - srcEnd = 571B - destBegin = 8840 -End of Item 0048 - -Begin of Item 0049 - Format 0 - srcBegin = 5794 - srcEnd = 579A - destBegin = 888A -End of Item 0049 - -Begin of Item 004A - Format 0 - srcBegin = 57B9 - srcEnd = 57C1 - destBegin = 88A0 -End of Item 004A - -Begin of Item 004B - Format 0 - srcBegin = 57C4 - srcEnd = 57CA - destBegin = 88A9 -End of Item 004B - -Begin of Item 004C - Format 0 - srcBegin = 57E5 - srcEnd = 57EC - destBegin = 88BD -End of Item 004C - -Begin of Item 004D - Format 0 - srcBegin = 5836 - srcEnd = 583D - destBegin = 88F7 -End of Item 004D - -Begin of Item 004E - Format 0 - srcBegin = 583E - srcEnd = 5843 - destBegin = 8940 -End of Item 004E - -Begin of Item 004F - Format 0 - srcBegin = 5845 - srcEnd = 584B - destBegin = 8946 -End of Item 004F - -Begin of Item 0050 - Format 0 - srcBegin = 585F - srcEnd = 5864 - destBegin = 895A -End of Item 0050 - -Begin of Item 0051 - Format 0 - srcBegin = 586D - srcEnd = 587D - destBegin = 8965 -End of Item 0051 - -Begin of Item 0052 - Format 0 - srcBegin = 58A0 - srcEnd = 58A7 - destBegin = 898D -End of Item 0052 - -Begin of Item 0053 - Format 0 - srcBegin = 58AA - srcEnd = 58BB - destBegin = 8995 -End of Item 0053 - -Begin of Item 0054 - Format 0 - srcBegin = 58C6 - srcEnd = 58D0 - destBegin = 89AE -End of Item 0054 - -Begin of Item 0055 - Format 0 - srcBegin = 58D6 - srcEnd = 58E3 - destBegin = 89BC -End of Item 0055 - -Begin of Item 0056 - Format 0 - srcBegin = 58E5 - srcEnd = 58EA - destBegin = 89CA -End of Item 0056 - -Begin of Item 0057 - Format 0 - srcBegin = 58FA - srcEnd = 5901 - destBegin = 89D8 -End of Item 0057 - -Begin of Item 0058 - Format 0 - srcBegin = 5966 - srcEnd = 5972 - destBegin = 8A56 -End of Item 0058 - -Begin of Item 0059 - Format 0 - srcBegin = 59B3 - srcEnd = 59B8 - destBegin = 8A85 -End of Item 0059 - -Begin of Item 005A - Format 0 - srcBegin = 59BF - srcEnd = 59C5 - destBegin = 8A8E -End of Item 005A - -Begin of Item 005B - Format 0 - srcBegin = 59ED - srcEnd = 59F8 - destBegin = 8AAB -End of Item 005B - -Begin of Item 005C - Format 0 - srcBegin = 5A2A - srcEnd = 5A30 - destBegin = 8AD3 -End of Item 005C - -Begin of Item 005D - Format 0 - srcBegin = 5A4B - srcEnd = 5A54 - destBegin = 8AEB -End of Item 005D - -Begin of Item 005E - Format 0 - srcBegin = 5A5B - srcEnd = 5A60 - destBegin = 8AF9 -End of Item 005E - -Begin of Item 005F - Format 0 - srcBegin = 5A6B - srcEnd = 5A73 - destBegin = 8B47 -End of Item 005F - -Begin of Item 0060 - Format 0 - srcBegin = 5A80 - srcEnd = 5A91 - destBegin = 8B56 -End of Item 0060 - -Begin of Item 0061 - Format 0 - srcBegin = 5A93 - srcEnd = 5A99 - destBegin = 8B68 -End of Item 0061 - -Begin of Item 0062 - Format 0 - srcBegin = 5A9C - srcEnd = 5AA9 - destBegin = 8B6F -End of Item 0062 - -Begin of Item 0063 - Format 0 - srcBegin = 5AC3 - srcEnd = 5AC8 - destBegin = 8B8F -End of Item 0063 - -Begin of Item 0064 - Format 0 - srcBegin = 5AF2 - srcEnd = 5B08 - destBegin = 8BB0 -End of Item 0064 - -Begin of Item 0065 - Format 0 - srcBegin = 5B0A - srcEnd = 5B15 - destBegin = 8BC7 -End of Item 0065 - -Begin of Item 0066 - Format 0 - srcBegin = 5B18 - srcEnd = 5B31 - destBegin = 8BD3 -End of Item 0066 - -Begin of Item 0067 - Format 0 - srcBegin = 5B38 - srcEnd = 5B3F - destBegin = 8BF0 -End of Item 0067 - -Begin of Item 0068 - Format 0 - srcBegin = 5B41 - srcEnd = 5B47 - destBegin = 8BF8 -End of Item 0068 - -Begin of Item 0069 - Format 0 - srcBegin = 5B48 - srcEnd = 5B4F - destBegin = 8C40 -End of Item 0069 - -Begin of Item 006A - Format 0 - srcBegin = 5BD4 - srcEnd = 5BDC - destBegin = 8C81 -End of Item 006A - -Begin of Item 006B - Format 0 - srcBegin = 5BF1 - srcEnd = 5BF7 - destBegin = 8C95 -End of Item 006B - -Begin of Item 006C - Format 0 - srcBegin = 5C67 - srcEnd = 5C6D - destBegin = 8CD4 -End of Item 006C - -Begin of Item 006D - Format 0 - srcBegin = 5C72 - srcEnd = 5C78 - destBegin = 8CDC -End of Item 006D - -Begin of Item 006E - Format 0 - srcBegin = 5CC5 - srcEnd = 5CCA - destBegin = 8D4F -End of Item 006E - -Begin of Item 006F - Format 0 - srcBegin = 5CCC - srcEnd = 5CD1 - destBegin = 8D55 -End of Item 006F - -Begin of Item 0070 - Format 0 - srcBegin = 5CD3 - srcEnd = 5CD8 - destBegin = 8D5B -End of Item 0070 - -Begin of Item 0071 - Format 0 - srcBegin = 5CDA - srcEnd = 5CE0 - destBegin = 8D61 -End of Item 0071 - -Begin of Item 0072 - Format 0 - srcBegin = 5CF1 - srcEnd = 5CFA - destBegin = 8D70 -End of Item 0072 - -Begin of Item 0073 - Format 0 - srcBegin = 5D08 - srcEnd = 5D0D - destBegin = 8D83 -End of Item 0073 - -Begin of Item 0074 - Format 0 - srcBegin = 5D35 - srcEnd = 5D3C - destBegin = 8DA4 -End of Item 0074 - -Begin of Item 0075 - Format 0 - srcBegin = 5D3F - srcEnd = 5D46 - destBegin = 8DAC -End of Item 0075 - -Begin of Item 0076 - Format 0 - srcBegin = 5D4D - srcEnd = 5D57 - destBegin = 8DB6 -End of Item 0076 - -Begin of Item 0077 - Format 0 - srcBegin = 5D5E - srcEnd = 5D68 - destBegin = 8DC4 -End of Item 0077 - -Begin of Item 0078 - Format 0 - srcBegin = 5D75 - srcEnd = 5D81 - destBegin = 8DD6 -End of Item 0078 - -Begin of Item 0079 - Format 0 - srcBegin = 5D83 - srcEnd = 5D98 - destBegin = 8DE3 -End of Item 0079 - -Begin of Item 007A - Format 0 - srcBegin = 5DA1 - srcEnd = 5DB6 - destBegin = 8E40 -End of Item 007A - -Begin of Item 007B - Format 0 - srcBegin = 5DB8 - srcEnd = 5DC4 - destBegin = 8E56 -End of Item 007B - -Begin of Item 007C - Format 0 - srcBegin = 5DC6 - srcEnd = 5DCC - destBegin = 8E63 -End of Item 007C - -Begin of Item 007D - Format 0 - srcBegin = 5DCE - srcEnd = 5DDA - destBegin = 8E6A -End of Item 007D - -Begin of Item 007E - Format 0 - srcBegin = 5E1E - srcEnd = 5E25 - destBegin = 8E94 -End of Item 007E - -Begin of Item 007F - Format 0 - srcBegin = 5E46 - srcEnd = 5E4B - destBegin = 8EAF -End of Item 007F - -Begin of Item 0080 - Format 0 - srcBegin = 5E4D - srcEnd = 5E53 - destBegin = 8EB5 -End of Item 0080 - -Begin of Item 0081 - Format 0 - srcBegin = 5E63 - srcEnd = 5E71 - destBegin = 8EC5 -End of Item 0081 - -Begin of Item 0082 - Format 0 - srcBegin = 5EBF - srcEnd = 5EC5 - destBegin = 8EF8 -End of Item 0082 - -Begin of Item 0083 - Format 0 - srcBegin = 5ECB - srcEnd = 5ED0 - destBegin = 8F43 -End of Item 0083 - -Begin of Item 0084 - Format 0 - srcBegin = 5EDC - srcEnd = 5EE7 - destBegin = 8F4F -End of Item 0084 - -Begin of Item 0085 - Format 0 - srcBegin = 5EEB - srcEnd = 5EF3 - destBegin = 8F5C -End of Item 0085 - -Begin of Item 0086 - Format 0 - srcBegin = 5F32 - srcEnd = 5F38 - destBegin = 8F85 -End of Item 0086 - -Begin of Item 0087 - Format 0 - srcBegin = 5F41 - srcEnd = 5F4F - destBegin = 8F90 -End of Item 0087 - -Begin of Item 0088 - Format 0 - srcBegin = 5FA2 - srcEnd = 5FA7 - destBegin = 8FC7 -End of Item 0088 - -Begin of Item 0089 - Format 0 - srcBegin = 5FAF - srcEnd = 5FB4 - destBegin = 8FD0 -End of Item 0089 - -Begin of Item 008A - Format 0 - srcBegin = 6044 - srcEnd = 604A - destBegin = 905F -End of Item 008A - -Begin of Item 008B - Format 0 - srcBegin = 60BD - srcEnd = 60C4 - destBegin = 90A2 -End of Item 008B - -Begin of Item 008C - Format 0 - srcBegin = 612C - srcEnd = 613E - destBegin = 90E5 -End of Item 008C - -Begin of Item 008D - Format 0 - srcBegin = 6140 - srcEnd = 6146 - destBegin = 90F8 -End of Item 008D - -Begin of Item 008E - Format 0 - srcBegin = 6156 - srcEnd = 615C - destBegin = 9149 -End of Item 008E - -Begin of Item 008F - Format 0 - srcBegin = 6169 - srcEnd = 616F - destBegin = 9158 -End of Item 008F - -Begin of Item 0090 - Format 0 - srcBegin = 6178 - srcEnd = 618A - destBegin = 9164 -End of Item 0090 - -Begin of Item 0091 - Format 0 - srcBegin = 6196 - srcEnd = 619C - destBegin = 9180 -End of Item 0091 - -Begin of Item 0092 - Format 0 - srcBegin = 619E - srcEnd = 61A6 - destBegin = 9187 -End of Item 0092 - -Begin of Item 0093 - Format 0 - srcBegin = 61AD - srcEnd = 61B6 - destBegin = 9192 -End of Item 0093 - -Begin of Item 0094 - Format 0 - srcBegin = 61B8 - srcEnd = 61BD - destBegin = 919C -End of Item 0094 - -Begin of Item 0095 - Format 0 - srcBegin = 61D5 - srcEnd = 61E5 - destBegin = 91B1 -End of Item 0095 - -Begin of Item 0096 - Format 0 - srcBegin = 61E7 - srcEnd = 61F4 - destBegin = 91C2 -End of Item 0096 - -Begin of Item 0097 - Format 0 - srcBegin = 61F6 - srcEnd = 61FE - destBegin = 91D0 -End of Item 0097 - -Begin of Item 0098 - Format 0 - srcBegin = 6200 - srcEnd = 6205 - destBegin = 91D9 -End of Item 0098 - -Begin of Item 0099 - Format 0 - srcBegin = 625C - srcEnd = 6262 - destBegin = 9247 -End of Item 0099 - -Begin of Item 009A - Format 0 - srcBegin = 628B - srcEnd = 6290 - destBegin = 9261 -End of Item 009A - -Begin of Item 009B - Format 0 - srcBegin = 6333 - srcEnd = 6338 - destBegin = 92AE -End of Item 009B - -Begin of Item 009C - Format 0 - srcBegin = 6356 - srcEnd = 635D - destBegin = 92C2 -End of Item 009C - -Begin of Item 009D - Format 0 - srcBegin = 6399 - srcEnd = 639F - destBegin = 92EA -End of Item 009D - -Begin of Item 009E - Format 0 - srcBegin = 63D7 - srcEnd = 63DD - destBegin = 934D -End of Item 009E - -Begin of Item 009F - Format 0 - srcBegin = 6415 - srcEnd = 641A - destBegin = 9374 -End of Item 009F - -Begin of Item 00A0 - Format 0 - srcBegin = 642E - srcEnd = 6433 - destBegin = 9385 -End of Item 00A0 - -Begin of Item 00A1 - Format 0 - srcBegin = 644B - srcEnd = 6451 - destBegin = 9397 -End of Item 00A1 - -Begin of Item 00A2 - Format 0 - srcBegin = 645F - srcEnd = 6466 - destBegin = 93A7 -End of Item 00A2 - -Begin of Item 00A3 - Format 0 - srcBegin = 646E - srcEnd = 6477 - destBegin = 93B3 -End of Item 00A3 - -Begin of Item 00A4 - Format 0 - srcBegin = 647B - srcEnd = 6481 - destBegin = 93BD -End of Item 00A4 - -Begin of Item 00A5 - Format 0 - srcBegin = 6488 - srcEnd = 6490 - destBegin = 93C6 -End of Item 00A5 - -Begin of Item 00A6 - Format 0 - srcBegin = 64C6 - srcEnd = 64CC - destBegin = 93F0 -End of Item 00A6 - -Begin of Item 00A7 - Format 0 - srcBegin = 64E7 - srcEnd = 64FF - destBegin = 9448 -End of Item 00A7 - -Begin of Item 00A8 - Format 0 - srcBegin = 6501 - srcEnd = 6508 - destBegin = 9461 -End of Item 00A8 - -Begin of Item 00A9 - Format 0 - srcBegin = 650A - srcEnd = 6511 - destBegin = 9469 -End of Item 00A9 - -Begin of Item 00AA - Format 0 - srcBegin = 6519 - srcEnd = 6521 - destBegin = 9476 -End of Item 00AA - -Begin of Item 00AB - Format 0 - srcBegin = 6578 - srcEnd = 6586 - destBegin = 94B5 -End of Item 00AB - -Begin of Item 00AC - Format 0 - srcBegin = 65B1 - srcEnd = 65B8 - destBegin = 94DA -End of Item 00AC - -Begin of Item 00AD - Format 0 - srcBegin = 65D8 - srcEnd = 65DF - destBegin = 94F2 -End of Item 00AD - -Begin of Item 00AE - Format 0 - srcBegin = 6644 - srcEnd = 664A - destBegin = 9573 -End of Item 00AE - -Begin of Item 00AF - Format 0 - srcBegin = 669E - srcEnd = 66A6 - destBegin = 95AF -End of Item 00AF - -Begin of Item 00B0 - Format 0 - srcBegin = 66BF - srcEnd = 66D8 - destBegin = 95CA -End of Item 00B0 - -Begin of Item 00B1 - Format 0 - srcBegin = 66DE - srcEnd = 66E5 - destBegin = 95E5 -End of Item 00B1 - -Begin of Item 00B2 - Format 0 - srcBegin = 66EA - srcEnd = 66EF - destBegin = 95EF -End of Item 00B2 - -Begin of Item 00B3 - Format 0 - srcBegin = 6720 - srcEnd = 6725 - destBegin = 9650 -End of Item 00B3 - -Begin of Item 00B4 - Format 0 - srcBegin = 67B9 - srcEnd = 67C0 - destBegin = 96A2 -End of Item 00B4 - -Begin of Item 00B5 - Format 0 - srcBegin = 67C5 - srcEnd = 67CE - destBegin = 96AB -End of Item 00B5 - -Begin of Item 00B6 - Format 0 - srcBegin = 67F5 - srcEnd = 67FC - destBegin = 96C5 -End of Item 00B6 - -Begin of Item 00B7 - Format 0 - srcBegin = 6822 - srcEnd = 6828 - destBegin = 96E0 -End of Item 00B7 - -Begin of Item 00B8 - Format 0 - srcBegin = 682B - srcEnd = 6831 - destBegin = 96E7 -End of Item 00B8 - -Begin of Item 00B9 - Format 0 - srcBegin = 6856 - srcEnd = 685B - destBegin = 96F9 -End of Item 00B9 - -Begin of Item 00BA - Format 0 - srcBegin = 686C - srcEnd = 6873 - destBegin = 9745 -End of Item 00BA - -Begin of Item 00BB - Format 0 - srcBegin = 6878 - srcEnd = 6880 - destBegin = 974E -End of Item 00BB - -Begin of Item 00BC - Format 0 - srcBegin = 6887 - srcEnd = 688E - destBegin = 9759 -End of Item 00BC - -Begin of Item 00BD - Format 0 - srcBegin = 6898 - srcEnd = 68A1 - destBegin = 9767 -End of Item 00BD - -Begin of Item 00BE - Format 0 - srcBegin = 68B9 - srcEnd = 68BF - destBegin = 9780 -End of Item 00BE - -Begin of Item 00BF - Format 0 - srcBegin = 68C3 - srcEnd = 68C8 - destBegin = 9788 -End of Item 00BF - -Begin of Item 00C0 - Format 0 - srcBegin = 68E4 - srcEnd = 68ED - destBegin = 97A0 -End of Item 00C0 - -Begin of Item 00C1 - Format 0 - srcBegin = 6913 - srcEnd = 691E - destBegin = 97C1 -End of Item 00C1 - -Begin of Item 00C2 - Format 0 - srcBegin = 6925 - srcEnd = 692C - destBegin = 97D0 -End of Item 00C2 - -Begin of Item 00C3 - Format 0 - srcBegin = 6943 - srcEnd = 6953 - destBegin = 97E7 -End of Item 00C3 - -Begin of Item 00C4 - Format 0 - srcBegin = 698E - srcEnd = 6993 - destBegin = 985C -End of Item 00C4 - -Begin of Item 00C5 - Format 0 - srcBegin = 699D - srcEnd = 69A6 - destBegin = 9866 -End of Item 00C5 - -Begin of Item 00C6 - Format 0 - srcBegin = 69C2 - srcEnd = 69C9 - destBegin = 9883 -End of Item 00C6 - -Begin of Item 00C7 - Format 0 - srcBegin = 69D5 - srcEnd = 69DA - destBegin = 9891 -End of Item 00C7 - -Begin of Item 00C8 - Format 0 - srcBegin = 69E1 - srcEnd = 69EC - destBegin = 989A -End of Item 00C8 - -Begin of Item 00C9 - Format 0 - srcBegin = 69F3 - srcEnd = 69FC - destBegin = 98AA -End of Item 00C9 - -Begin of Item 00CA - Format 0 - srcBegin = 6A00 - srcEnd = 6A09 - destBegin = 98B5 -End of Item 00CA - -Begin of Item 00CB - Format 0 - srcBegin = 6A0B - srcEnd = 6A16 - destBegin = 98BF -End of Item 00CB - -Begin of Item 00CC - Format 0 - srcBegin = 6A19 - srcEnd = 6A1E - destBegin = 98CB -End of Item 00CC - -Begin of Item 00CD - Format 0 - srcBegin = 6A22 - srcEnd = 6A27 - destBegin = 98D2 -End of Item 00CD - -Begin of Item 00CE - Format 0 - srcBegin = 6A36 - srcEnd = 6A3C - destBegin = 98E1 -End of Item 00CE - -Begin of Item 00CF - Format 0 - srcBegin = 6A48 - srcEnd = 6A4F - destBegin = 98EF -End of Item 00CF - -Begin of Item 00D0 - Format 0 - srcBegin = 6A51 - srcEnd = 6A57 - destBegin = 98F7 -End of Item 00D0 - -Begin of Item 00D1 - Format 0 - srcBegin = 6A66 - srcEnd = 6A70 - destBegin = 9948 -End of Item 00D1 - -Begin of Item 00D2 - Format 0 - srcBegin = 6A72 - srcEnd = 6A78 - destBegin = 9953 -End of Item 00D2 - -Begin of Item 00D3 - Format 0 - srcBegin = 6A85 - srcEnd = 6A8D - destBegin = 9962 -End of Item 00D3 - -Begin of Item 00D4 - Format 0 - srcBegin = 6A98 - srcEnd = 6A9F - destBegin = 9971 -End of Item 00D4 - -Begin of Item 00D5 - Format 0 - srcBegin = 6AA1 - srcEnd = 6AA6 - destBegin = 9979 -End of Item 00D5 - -Begin of Item 00D6 - Format 0 - srcBegin = 6AAD - srcEnd = 6B1F - destBegin = 9983 -End of Item 00D6 - -Begin of Item 00D7 - Format 0 - srcBegin = 6B28 - srcEnd = 6B2E - destBegin = 99F8 -End of Item 00D7 - -Begin of Item 00D8 - Format 0 - srcBegin = 6B4D - srcEnd = 6B58 - destBegin = 9A54 -End of Item 00D8 - -Begin of Item 00D9 - Format 0 - srcBegin = 6B5A - srcEnd = 6B61 - destBegin = 9A60 -End of Item 00D9 - -Begin of Item 00DA - Format 0 - srcBegin = 6B6B - srcEnd = 6B78 - destBegin = 9A6A -End of Item 00DA - -Begin of Item 00DB - Format 0 - srcBegin = 6BA2 - srcEnd = 6BA9 - destBegin = 9A8F -End of Item 00DB - -Begin of Item 00DC - Format 0 - srcBegin = 6BAB - srcEnd = 6BB2 - destBegin = 9A97 -End of Item 00DC - -Begin of Item 00DD - Format 0 - srcBegin = 6BB8 - srcEnd = 6BBE - destBegin = 9AA0 -End of Item 00DD - -Begin of Item 00DE - Format 0 - srcBegin = 6BE2 - srcEnd = 6BE9 - destBegin = 9ABA -End of Item 00DE - -Begin of Item 00DF - Format 0 - srcBegin = 6BFE - srcEnd = 6C04 - destBegin = 9ACF -End of Item 00DF - -Begin of Item 00E0 - Format 0 - srcBegin = 6D1F - srcEnd = 6D24 - destBegin = 9BA2 -End of Item 00E0 - -Begin of Item 00E1 - Format 0 - srcBegin = 6DB9 - srcEnd = 6DBE - destBegin = 9BF3 -End of Item 00E1 - -Begin of Item 00E2 - Format 0 - srcBegin = 6DFD - srcEnd = 6E04 - destBegin = 9C5D -End of Item 00E2 - -Begin of Item 00E3 - Format 0 - srcBegin = 6E3B - srcEnd = 6E42 - destBegin = 9C83 -End of Item 00E3 - -Begin of Item 00E4 - Format 0 - srcBegin = 6E45 - srcEnd = 6E4C - destBegin = 9C8B -End of Item 00E4 - -Begin of Item 00E5 - Format 0 - srcBegin = 6E60 - srcEnd = 6E6A - destBegin = 9C9E -End of Item 00E5 - -Begin of Item 00E6 - Format 0 - srcBegin = 6E6F - srcEnd = 6E7D - destBegin = 9CAB -End of Item 00E6 - -Begin of Item 00E7 - Format 0 - srcBegin = 6E91 - srcEnd = 6E97 - destBegin = 9CC5 -End of Item 00E7 - -Begin of Item 00E8 - Format 0 - srcBegin = 6EEA - srcEnd = 6EEF - destBegin = 9CF9 -End of Item 00E8 - -Begin of Item 00E9 - Format 0 - srcBegin = 6EFA - srcEnd = 6F01 - destBegin = 9D48 -End of Item 00E9 - -Begin of Item 00EA - Format 0 - srcBegin = 6F16 - srcEnd = 6F1F - destBegin = 9D5D -End of Item 00EA - -Begin of Item 00EB - Format 0 - srcBegin = 6F37 - srcEnd = 6F3D - destBegin = 9D74 -End of Item 00EB - -Begin of Item 00EC - Format 0 - srcBegin = 6F4E - srcEnd = 6F57 - destBegin = 9D87 -End of Item 00EC - -Begin of Item 00ED - Format 0 - srcBegin = 6F67 - srcEnd = 6F6C - destBegin = 9D9B -End of Item 00ED - -Begin of Item 00EE - Format 0 - srcBegin = 6F7D - srcEnd = 6F83 - destBegin = 9DAA -End of Item 00EE - -Begin of Item 00EF - Format 0 - srcBegin = 6F8F - srcEnd = 6F9B - destBegin = 9DB6 -End of Item 00EF - -Begin of Item 00F0 - Format 0 - srcBegin = 6FA8 - srcEnd = 6FB2 - destBegin = 9DCC -End of Item 00F0 - -Begin of Item 00F1 - Format 0 - srcBegin = 6FBA - srcEnd = 6FBF - destBegin = 9DDB -End of Item 00F1 - -Begin of Item 00F2 - Format 0 - srcBegin = 6FC3 - srcEnd = 6FC8 - destBegin = 9DE2 -End of Item 00F2 - -Begin of Item 00F3 - Format 0 - srcBegin = 6FCA - srcEnd = 6FD0 - destBegin = 9DE8 -End of Item 00F3 - -Begin of Item 00F4 - Format 0 - srcBegin = 6FD3 - srcEnd = 6FDD - destBegin = 9DEF -End of Item 00F4 - -Begin of Item 00F5 - Format 0 - srcBegin = 6FE6 - srcEnd = 6FED - destBegin = 9E40 -End of Item 00F5 - -Begin of Item 00F6 - Format 0 - srcBegin = 6FF0 - srcEnd = 7010 - destBegin = 9E48 -End of Item 00F6 - -Begin of Item 00F7 - Format 0 - srcBegin = 7012 - srcEnd = 7019 - destBegin = 9E69 -End of Item 00F7 - -Begin of Item 00F8 - Format 0 - srcBegin = 701C - srcEnd = 7022 - destBegin = 9E71 -End of Item 00F8 - -Begin of Item 00F9 - Format 0 - srcBegin = 7024 - srcEnd = 702A - destBegin = 9E78 -End of Item 00F9 - -Begin of Item 00FA - Format 0 - srcBegin = 702B - srcEnd = 7034 - destBegin = 9E80 -End of Item 00FA - -Begin of Item 00FB - Format 0 - srcBegin = 703A - srcEnd = 704B - destBegin = 9E8D -End of Item 00FB - -Begin of Item 00FC - Format 0 - srcBegin = 7050 - srcEnd = 705D - destBegin = 9EA1 -End of Item 00FC - -Begin of Item 00FD - Format 0 - srcBegin = 705F - srcEnd = 706A - destBegin = 9EAF -End of Item 00FD - -Begin of Item 00FE - Format 0 - srcBegin = 709E - srcEnd = 70AA - destBegin = 9ED7 -End of Item 00FE - -Begin of Item 00FF - Format 0 - srcBegin = 70CB - srcEnd = 70D7 - destBegin = 9EF1 -End of Item 00FF - -Begin of Item 0100 - Format 0 - srcBegin = 70F0 - srcEnd = 70F6 - destBegin = 9F4A -End of Item 0100 - -Begin of Item 0101 - Format 0 - srcBegin = 70FE - srcEnd = 7108 - destBegin = 9F55 -End of Item 0101 - -Begin of Item 0102 - Format 0 - srcBegin = 711B - srcEnd = 7125 - destBegin = 9F69 -End of Item 0102 - -Begin of Item 0103 - Format 0 - srcBegin = 7127 - srcEnd = 712E - destBegin = 9F74 -End of Item 0103 - -Begin of Item 0104 - Format 0 - srcBegin = 7137 - srcEnd = 7144 - destBegin = 9F81 -End of Item 0104 - -Begin of Item 0105 - Format 0 - srcBegin = 714F - srcEnd = 715B - destBegin = 9F95 -End of Item 0105 - -Begin of Item 0106 - Format 0 - srcBegin = 717E - srcEnd = 7183 - destBegin = 9FB8 -End of Item 0106 - -Begin of Item 0107 - Format 0 - srcBegin = 71A1 - srcEnd = 71A7 - destBegin = 9FD3 -End of Item 0107 - -Begin of Item 0108 - Format 0 - srcBegin = 71AD - srcEnd = 71B2 - destBegin = 9FDD -End of Item 0108 - -Begin of Item 0109 - Format 0 - srcBegin = 71BA - srcEnd = 71C2 - destBegin = 9FE7 -End of Item 0109 - -Begin of Item 010A - Format 0 - srcBegin = 71C4 - srcEnd = 71CD - destBegin = 9FF0 -End of Item 010A - -Begin of Item 010B - Format 0 - srcBegin = 71D6 - srcEnd = 71DF - destBegin = A040 -End of Item 010B - -Begin of Item 010C - Format 0 - srcBegin = 71E8 - srcEnd = 71ED - destBegin = A04F -End of Item 010C - -Begin of Item 010D - Format 0 - srcBegin = 71EF - srcEnd = 71F8 - destBegin = A055 -End of Item 010D - -Begin of Item 010E - Format 0 - srcBegin = 71FA - srcEnd = 7205 - destBegin = A05F -End of Item 010E - -Begin of Item 010F - Format 0 - srcBegin = 7207 - srcEnd = 721A - destBegin = A06B -End of Item 010F - -Begin of Item 0110 - Format 0 - srcBegin = 721E - srcEnd = 7227 - destBegin = A082 -End of Item 0110 - -Begin of Item 0111 - Format 0 - srcBegin = 7240 - srcEnd = 7246 - destBegin = A097 -End of Item 0111 - -Begin of Item 0112 - Format 0 - srcBegin = 7293 - srcEnd = 729E - destBegin = A0CB -End of Item 0112 - -Begin of Item 0113 - Format 0 - srcBegin = 72A0 - srcEnd = 72AB - destBegin = A0D7 -End of Item 0113 - -Begin of Item 0114 - Format 0 - srcBegin = 72BA - srcEnd = 72C0 - destBegin = A0E8 -End of Item 0114 - -Begin of Item 0115 - Format 0 - srcBegin = 72E2 - srcEnd = 72E7 - destBegin = AA43 -End of Item 0115 - -Begin of Item 0116 - Format 0 - srcBegin = 7304 - srcEnd = 7309 - destBegin = AA53 -End of Item 0116 - -Begin of Item 0117 - Format 0 - srcBegin = 7340 - srcEnd = 7348 - destBegin = AA76 -End of Item 0117 - -Begin of Item 0118 - Format 0 - srcBegin = 7358 - srcEnd = 735F - destBegin = AA8B -End of Item 0118 - -Begin of Item 0119 - Format 0 - srcBegin = 7361 - srcEnd = 736B - destBegin = AA93 -End of Item 0119 - -Begin of Item 011A - Format 0 - srcBegin = 7372 - srcEnd = 737D - destBegin = AB40 -End of Item 011A - -Begin of Item 011B - Format 0 - srcBegin = 73A3 - srcEnd = 73A8 - destBegin = AB66 -End of Item 011B - -Begin of Item 011C - Format 0 - srcBegin = 73D2 - srcEnd = 73D8 - destBegin = AB83 -End of Item 011C - -Begin of Item 011D - Format 0 - srcBegin = 73F8 - srcEnd = 7402 - destBegin = AC40 -End of Item 011D - -Begin of Item 011E - Format 0 - srcBegin = 7411 - srcEnd = 7419 - destBegin = AC52 -End of Item 011E - -Begin of Item 011F - Format 0 - srcBegin = 741C - srcEnd = 7421 - destBegin = AC5B -End of Item 011F - -Begin of Item 0120 - Format 0 - srcBegin = 7442 - srcEnd = 744D - destBegin = AC73 -End of Item 0120 - -Begin of Item 0121 - Format 0 - srcBegin = 744E - srcEnd = 7454 - destBegin = AC80 -End of Item 0121 - -Begin of Item 0122 - Format 0 - srcBegin = 7460 - srcEnd = 746C - destBegin = AC8A -End of Item 0122 - -Begin of Item 0123 - Format 0 - srcBegin = 7491 - srcEnd = 749B - destBegin = AD4E -End of Item 0123 - -Begin of Item 0124 - Format 0 - srcBegin = 749F - srcEnd = 74A6 - destBegin = AD5A -End of Item 0124 - -Begin of Item 0125 - Format 0 - srcBegin = 74AA - srcEnd = 74B9 - destBegin = AD62 -End of Item 0125 - -Begin of Item 0126 - Format 0 - srcBegin = 74BB - srcEnd = 74C7 - destBegin = AD72 -End of Item 0126 - -Begin of Item 0127 - Format 0 - srcBegin = 74C8 - srcEnd = 74D1 - destBegin = AD80 -End of Item 0127 - -Begin of Item 0128 - Format 0 - srcBegin = 74D3 - srcEnd = 74DB - destBegin = AD8A -End of Item 0128 - -Begin of Item 0129 - Format 0 - srcBegin = 74E7 - srcEnd = 74ED - destBegin = AD97 -End of Item 0129 - -Begin of Item 012A - Format 0 - srcBegin = 74F8 - srcEnd = 74FE - destBegin = AE42 -End of Item 012A - -Begin of Item 012B - Format 0 - srcBegin = 7505 - srcEnd = 750C - destBegin = AE4D -End of Item 012B - -Begin of Item 012C - Format 0 - srcBegin = 755D - srcEnd = 7564 - destBegin = AE80 -End of Item 012C - -Begin of Item 012D - Format 0 - srcBegin = 756B - srcEnd = 7571 - destBegin = AE8B -End of Item 012D - -Begin of Item 012E - Format 0 - srcBegin = 7645 - srcEnd = 764B - destBegin = B040 -End of Item 012E - -Begin of Item 012F - Format 0 - srcBegin = 764E - srcEnd = 7653 - destBegin = B047 -End of Item 012F - -Begin of Item 0130 - Format 0 - srcBegin = 7664 - srcEnd = 766A - destBegin = B058 -End of Item 0130 - -Begin of Item 0131 - Format 0 - srcBegin = 7670 - srcEnd = 7677 - destBegin = B062 -End of Item 0131 - -Begin of Item 0132 - Format 0 - srcBegin = 769C - srcEnd = 76A3 - destBegin = B080 -End of Item 0132 - -Begin of Item 0133 - Format 0 - srcBegin = 76A5 - srcEnd = 76AD - destBegin = B088 -End of Item 0133 - -Begin of Item 0134 - Format 0 - srcBegin = 76B5 - srcEnd = 76BE - destBegin = B094 -End of Item 0134 - -Begin of Item 0135 - Format 0 - srcBegin = 76E6 - srcEnd = 76ED - destBegin = B151 -End of Item 0135 - -Begin of Item 0136 - Format 0 - srcBegin = 770E - srcEnd = 7718 - destBegin = B169 -End of Item 0136 - -Begin of Item 0137 - Format 0 - srcBegin = 7748 - srcEnd = 774F - destBegin = B190 -End of Item 0137 - -Begin of Item 0138 - Format 0 - srcBegin = 7752 - srcEnd = 7759 - destBegin = B198 -End of Item 0138 - -Begin of Item 0139 - Format 0 - srcBegin = 776D - srcEnd = 7778 - destBegin = B248 -End of Item 0139 - -Begin of Item 013A - Format 0 - srcBegin = 7786 - srcEnd = 778B - destBegin = B25A -End of Item 013A - -Begin of Item 013B - Format 0 - srcBegin = 7793 - srcEnd = 779E - destBegin = B262 -End of Item 013B - -Begin of Item 013C - Format 0 - srcBegin = 77C0 - srcEnd = 77CC - destBegin = B282 -End of Item 013C - -Begin of Item 013D - Format 0 - srcBegin = 77CE - srcEnd = 77D6 - destBegin = B28F -End of Item 013D - -Begin of Item 013E - Format 0 - srcBegin = 7803 - srcEnd = 7808 - destBegin = B34E -End of Item 013E - -Begin of Item 013F - Format 0 - srcBegin = 785E - srcEnd = 7869 - destBegin = B382 -End of Item 013F - -Begin of Item 0140 - Format 0 - srcBegin = 786F - srcEnd = 7876 - destBegin = B38E -End of Item 0140 - -Begin of Item 0141 - Format 0 - srcBegin = 787D - srcEnd = 7883 - destBegin = B39A -End of Item 0141 - -Begin of Item 0142 - Format 0 - srcBegin = 78A8 - srcEnd = 78AF - destBegin = B453 -End of Item 0142 - -Begin of Item 0143 - Format 0 - srcBegin = 78DA - srcEnd = 78E3 - destBegin = B475 -End of Item 0143 - -Begin of Item 0144 - Format 0 - srcBegin = 78FB - srcEnd = 7900 - destBegin = B491 -End of Item 0144 - -Begin of Item 0145 - Format 0 - srcBegin = 7906 - srcEnd = 790C - destBegin = B49A -End of Item 0145 - -Begin of Item 0146 - Format 0 - srcBegin = 790D - srcEnd = 7912 - destBegin = B540 -End of Item 0146 - -Begin of Item 0147 - Format 0 - srcBegin = 7914 - srcEnd = 791D - destBegin = B546 -End of Item 0147 - -Begin of Item 0148 - Format 0 - srcBegin = 7925 - srcEnd = 7933 - destBegin = B555 -End of Item 0148 - -Begin of Item 0149 - Format 0 - srcBegin = 794A - srcEnd = 7952 - destBegin = B570 -End of Item 0149 - -Begin of Item 014A - Format 0 - srcBegin = 7970 - srcEnd = 7976 - destBegin = B587 -End of Item 014A - -Begin of Item 014B - Format 0 - srcBegin = 7993 - srcEnd = 7999 - destBegin = B640 -End of Item 014B - -Begin of Item 014C - Format 0 - srcBegin = 799B - srcEnd = 79A6 - destBegin = B647 -End of Item 014C - -Begin of Item 014D - Format 0 - srcBegin = 79A8 - srcEnd = 79B2 - destBegin = B653 -End of Item 014D - -Begin of Item 014E - Format 0 - srcBegin = 79D9 - srcEnd = 79DE - destBegin = B673 -End of Item 014E - -Begin of Item 014F - Format 0 - srcBegin = 79F1 - srcEnd = 79F7 - destBegin = B682 -End of Item 014F - -Begin of Item 0150 - Format 0 - srcBegin = 7A24 - srcEnd = 7A32 - destBegin = B744 -End of Item 0150 - -Begin of Item 0151 - Format 0 - srcBegin = 7A40 - srcEnd = 7A45 - destBegin = B759 -End of Item 0151 - -Begin of Item 0152 - Format 0 - srcBegin = 7A47 - srcEnd = 7A50 - destBegin = B75F -End of Item 0152 - -Begin of Item 0153 - Format 0 - srcBegin = 7A58 - srcEnd = 7A68 - destBegin = B76E -End of Item 0153 - -Begin of Item 0154 - Format 0 - srcBegin = 7A69 - srcEnd = 7A6F - destBegin = B780 -End of Item 0154 - -Begin of Item 0155 - Format 0 - srcBegin = 7AB4 - srcEnd = 7ABE - destBegin = B84B -End of Item 0155 - -Begin of Item 0156 - Format 0 - srcBegin = 7AC0 - srcEnd = 7ACA - destBegin = B856 -End of Item 0156 - -Begin of Item 0157 - Format 0 - srcBegin = 7ACC - srcEnd = 7AD5 - destBegin = B861 -End of Item 0157 - -Begin of Item 0158 - Format 0 - srcBegin = 7AE7 - srcEnd = 7AEC - destBegin = B874 -End of Item 0158 - -Begin of Item 0159 - Format 0 - srcBegin = 7B3F - srcEnd = 7B44 - destBegin = B94A -End of Item 0159 - -Begin of Item 015A - Format 0 - srcBegin = 7B63 - srcEnd = 7B6D - destBegin = B95D -End of Item 015A - -Begin of Item 015B - Format 0 - srcBegin = 7B86 - srcEnd = 7B8C - destBegin = B976 -End of Item 015B - -Begin of Item 015C - Format 0 - srcBegin = 7BB9 - srcEnd = 7BC0 - destBegin = B996 -End of Item 015C - -Begin of Item 015D - Format 0 - srcBegin = 7BFF - srcEnd = 7C06 - destBegin = BA69 -End of Item 015D - -Begin of Item 015E - Format 0 - srcBegin = 7C10 - srcEnd = 7C15 - destBegin = BA76 -End of Item 015E - -Begin of Item 015F - Format 0 - srcBegin = 7C20 - srcEnd = 7C25 - destBegin = BA85 -End of Item 015F - -Begin of Item 0160 - Format 0 - srcBegin = 7C2B - srcEnd = 7C37 - destBegin = BA8D -End of Item 0160 - -Begin of Item 0161 - Format 0 - srcBegin = 7C39 - srcEnd = 7C3E - destBegin = BA9A -End of Item 0161 - -Begin of Item 0162 - Format 0 - srcBegin = 7C43 - srcEnd = 7C4C - destBegin = BB40 -End of Item 0162 - -Begin of Item 0163 - Format 0 - srcBegin = 7C4E - srcEnd = 7C72 - destBegin = BB4A -End of Item 0163 - -Begin of Item 0164 - Format 0 - srcBegin = 7C75 - srcEnd = 7C7A - destBegin = BB6F -End of Item 0164 - -Begin of Item 0165 - Format 0 - srcBegin = 7C7E - srcEnd = 7C87 - destBegin = BB75 -End of Item 0165 - -Begin of Item 0166 - Format 0 - srcBegin = 7C8A - srcEnd = 7C90 - destBegin = BB81 -End of Item 0166 - -Begin of Item 0167 - Format 0 - srcBegin = 7CCE - srcEnd = 7CD4 - destBegin = BC48 -End of Item 0167 - -Begin of Item 0168 - Format 0 - srcBegin = 7CE1 - srcEnd = 7CE7 - destBegin = BC54 -End of Item 0168 - -Begin of Item 0169 - Format 0 - srcBegin = 7CE9 - srcEnd = 7CEE - destBegin = BC5B -End of Item 0169 - -Begin of Item 016A - Format 0 - srcBegin = 7CF0 - srcEnd = 7CF7 - destBegin = BC61 -End of Item 016A - -Begin of Item 016B - Format 0 - srcBegin = 7CFC - srcEnd = 7D09 - destBegin = BC6B -End of Item 016B - -Begin of Item 016C - Format 0 - srcBegin = 7D0B - srcEnd = 7D10 - destBegin = BC79 -End of Item 016C - -Begin of Item 016D - Format 0 - srcBegin = 7D11 - srcEnd = 7D1F - destBegin = BC80 -End of Item 016D - -Begin of Item 016E - Format 0 - srcBegin = 7D30 - srcEnd = 7D36 - destBegin = BC9A -End of Item 016E - -Begin of Item 016F - Format 0 - srcBegin = 7D37 - srcEnd = 7D6D - destBegin = BD40 -End of Item 016F - -Begin of Item 0170 - Format 0 - srcBegin = 7D6F - srcEnd = 7D76 - destBegin = BD77 -End of Item 0170 - -Begin of Item 0171 - Format 0 - srcBegin = 7D78 - srcEnd = 7D98 - destBegin = BD80 -End of Item 0171 - -Begin of Item 0172 - Format 0 - srcBegin = 7D99 - srcEnd = 7DA5 - destBegin = BE40 -End of Item 0172 - -Begin of Item 0173 - Format 0 - srcBegin = 7DA7 - srcEnd = 7DAD - destBegin = BE4D -End of Item 0173 - -Begin of Item 0174 - Format 0 - srcBegin = 7DAF - srcEnd = 7DD9 - destBegin = BE54 -End of Item 0174 - -Begin of Item 0175 - Format 0 - srcBegin = 7DDA - srcEnd = 7DFA - destBegin = BE80 -End of Item 0175 - -Begin of Item 0176 - Format 0 - srcBegin = 7DFB - srcEnd = 7E39 - destBegin = BF40 -End of Item 0176 - -Begin of Item 0177 - Format 0 - srcBegin = 7E48 - srcEnd = 7E5D - destBegin = BF8B -End of Item 0177 - -Begin of Item 0178 - Format 0 - srcBegin = 7E5E - srcEnd = 7E81 - destBegin = C040 -End of Item 0178 - -Begin of Item 0179 - Format 0 - srcBegin = 7E83 - srcEnd = 7E9A - destBegin = C064 -End of Item 0179 - -Begin of Item 017A - Format 0 - srcBegin = 7F21 - srcEnd = 7F27 - destBegin = E7CA -End of Item 017A - -Begin of Item 017B - Format 0 - srcBegin = 7F3B - srcEnd = 7F41 - destBegin = C08D -End of Item 017B - -Begin of Item 017C - Format 0 - srcBegin = 7F46 - srcEnd = 7F4F - destBegin = C095 -End of Item 017C - -Begin of Item 017D - Format 0 - srcBegin = 7F82 - srcEnd = 7F89 - destBegin = C15C -End of Item 017D - -Begin of Item 017E - Format 0 - srcBegin = 7FA8 - srcEnd = 7FAE - destBegin = C177 -End of Item 017E - -Begin of Item 017F - Format 0 - srcBegin = 7FD9 - srcEnd = 7FDE - destBegin = C199 -End of Item 017F - -Begin of Item 0180 - Format 0 - srcBegin = 7FF4 - srcEnd = 7FFA - destBegin = C249 -End of Item 0180 - -Begin of Item 0181 - Format 0 - srcBegin = 802B - srcEnd = 8030 - destBegin = C264 -End of Item 0181 - -Begin of Item 0182 - Format 0 - srcBegin = 805B - srcEnd = 8068 - destBegin = C281 -End of Item 0182 - -Begin of Item 0183 - Format 0 - srcBegin = 806B - srcEnd = 8070 - destBegin = C28F -End of Item 0183 - -Begin of Item 0184 - Format 0 - srcBegin = 8072 - srcEnd = 807D - destBegin = C295 -End of Item 0184 - -Begin of Item 0185 - Format 0 - srcBegin = 808D - srcEnd = 8092 - destBegin = C346 -End of Item 0185 - -Begin of Item 0186 - Format 0 - srcBegin = 80CF - srcEnd = 80D5 - destBegin = C363 -End of Item 0186 - -Begin of Item 0187 - Format 0 - srcBegin = 811F - srcEnd = 812B - destBegin = C387 -End of Item 0187 - -Begin of Item 0188 - Format 0 - srcBegin = 8140 - srcEnd = 8145 - destBegin = C440 -End of Item 0188 - -Begin of Item 0189 - Format 0 - srcBegin = 8192 - srcEnd = 8197 - destBegin = C470 -End of Item 0189 - -Begin of Item 018A - Format 0 - srcBegin = 81AB - srcEnd = 81B2 - destBegin = C482 -End of Item 018A - -Begin of Item 018B - Format 0 - srcBegin = 81B4 - srcEnd = 81B9 - destBegin = C48A -End of Item 018B - -Begin of Item 018C - Format 0 - srcBegin = 81CD - srcEnd = 81D3 - destBegin = C49A -End of Item 018C - -Begin of Item 018D - Format 0 - srcBegin = 81D4 - srcEnd = 81E2 - destBegin = C540 -End of Item 018D - -Begin of Item 018E - Format 0 - srcBegin = 81F5 - srcEnd = 81FA - destBegin = C55A -End of Item 018E - -Begin of Item 018F - Format 0 - srcBegin = 8215 - srcEnd = 821A - destBegin = C56C -End of Item 018F - -Begin of Item 0190 - Format 0 - srcBegin = 8250 - srcEnd = 8257 - destBegin = C58B -End of Item 0190 - -Begin of Item 0191 - Format 0 - srcBegin = 8260 - srcEnd = 8267 - destBegin = C598 -End of Item 0191 - -Begin of Item 0192 - Format 0 - srcBegin = 831D - srcEnd = 8326 - destBegin = C68F -End of Item 0192 - -Begin of Item 0193 - Format 0 - srcBegin = 8370 - srcEnd = 8376 - destBegin = C754 -End of Item 0193 - -Begin of Item 0194 - Format 0 - srcBegin = 837E - srcEnd = 8384 - destBegin = C75D -End of Item 0194 - -Begin of Item 0195 - Format 0 - srcBegin = 83A1 - srcEnd = 83A7 - destBegin = C775 -End of Item 0195 - -Begin of Item 0196 - Format 0 - srcBegin = 8412 - srcEnd = 8417 - destBegin = C854 -End of Item 0196 - -Begin of Item 0197 - Format 0 - srcBegin = 841E - srcEnd = 8423 - destBegin = C85D -End of Item 0197 - -Begin of Item 0198 - Format 0 - srcBegin = 8429 - srcEnd = 8430 - destBegin = C863 -End of Item 0198 - -Begin of Item 0199 - Format 0 - srcBegin = 8432 - srcEnd = 8437 - destBegin = C86B -End of Item 0199 - -Begin of Item 019A - Format 0 - srcBegin = 843E - srcEnd = 8445 - destBegin = C874 -End of Item 019A - -Begin of Item 019B - Format 0 - srcBegin = 844A - srcEnd = 8450 - destBegin = C880 -End of Item 019B - -Begin of Item 019C - Format 0 - srcBegin = 848F - srcEnd = 8496 - destBegin = C94B -End of Item 019C - -Begin of Item 019D - Format 0 - srcBegin = 84A2 - srcEnd = 84AE - destBegin = C95A -End of Item 019D - -Begin of Item 019E - Format 0 - srcBegin = 84F1 - srcEnd = 84FB - destBegin = C991 -End of Item 019E - -Begin of Item 019F - Format 0 - srcBegin = 8503 - srcEnd = 850B - destBegin = CA40 -End of Item 019F - -Begin of Item 01A0 - Format 0 - srcBegin = 8522 - srcEnd = 852A - destBegin = CA58 -End of Item 01A0 - -Begin of Item 01A1 - Format 0 - srcBegin = 852D - srcEnd = 8536 - destBegin = CA61 -End of Item 01A1 - -Begin of Item 01A2 - Format 0 - srcBegin = 854B - srcEnd = 8555 - destBegin = CA74 -End of Item 01A2 - -Begin of Item 01A3 - Format 0 - srcBegin = 8569 - srcEnd = 8571 - destBegin = CA8E -End of Item 01A3 - -Begin of Item 01A4 - Format 0 - srcBegin = 8588 - srcEnd = 858E - destBegin = CB43 -End of Item 01A4 - -Begin of Item 01A5 - Format 0 - srcBegin = 8590 - srcEnd = 859A - destBegin = CB4A -End of Item 01A5 - -Begin of Item 01A6 - Format 0 - srcBegin = 859D - srcEnd = 85A3 - destBegin = CB55 -End of Item 01A6 - -Begin of Item 01A7 - Format 0 - srcBegin = 85B1 - srcEnd = 85B6 - destBegin = CB63 -End of Item 01A7 - -Begin of Item 01A8 - Format 0 - srcBegin = 85BA - srcEnd = 85C0 - destBegin = CB6A -End of Item 01A8 - -Begin of Item 01A9 - Format 0 - srcBegin = 85C2 - srcEnd = 85C8 - destBegin = CB71 -End of Item 01A9 - -Begin of Item 01AA - Format 0 - srcBegin = 85D6 - srcEnd = 85DB - destBegin = CB81 -End of Item 01AA - -Begin of Item 01AB - Format 0 - srcBegin = 85DD - srcEnd = 85E3 - destBegin = CB87 -End of Item 01AB - -Begin of Item 01AC - Format 0 - srcBegin = 85EA - srcEnd = 85F8 - destBegin = CB92 -End of Item 01AC - -Begin of Item 01AD - Format 0 - srcBegin = 8606 - srcEnd = 8610 - destBegin = CC4A -End of Item 01AD - -Begin of Item 01AE - Format 0 - srcBegin = 8617 - srcEnd = 8626 - destBegin = CC59 -End of Item 01AE - -Begin of Item 01AF - Format 0 - srcBegin = 862A - srcEnd = 8637 - destBegin = CC6A -End of Item 01AF - -Begin of Item 01B0 - Format 0 - srcBegin = 8641 - srcEnd = 864C - destBegin = CC80 -End of Item 01B0 - -Begin of Item 01B1 - Format 0 - srcBegin = 8663 - srcEnd = 866A - destBegin = CC99 -End of Item 01B1 - -Begin of Item 01B2 - Format 0 - srcBegin = 8672 - srcEnd = 8678 - destBegin = CD43 -End of Item 01B2 - -Begin of Item 01B3 - Format 0 - srcBegin = 8683 - srcEnd = 8689 - destBegin = CD4A -End of Item 01B3 - -Begin of Item 01B4 - Format 0 - srcBegin = 8696 - srcEnd = 869B - destBegin = CD57 -End of Item 01B4 - -Begin of Item 01B5 - Format 0 - srcBegin = 8740 - srcEnd = 8746 - destBegin = CE58 -End of Item 01B5 - -Begin of Item 01B6 - Format 0 - srcBegin = 875A - srcEnd = 875F - destBegin = CE6A -End of Item 01B6 - -Begin of Item 01B7 - Format 0 - srcBegin = 8766 - srcEnd = 876D - destBegin = CE72 -End of Item 01B7 - -Begin of Item 01B8 - Format 0 - srcBegin = 8798 - srcEnd = 879E - destBegin = CE95 -End of Item 01B8 - -Begin of Item 01B9 - Format 0 - srcBegin = 87D4 - srcEnd = 87DA - destBegin = CF5F -End of Item 01B9 - -Begin of Item 01BA - Format 0 - srcBegin = 87EF - srcEnd = 87F8 - destBegin = CF75 -End of Item 01BA - -Begin of Item 01BB - Format 0 - srcBegin = 8804 - srcEnd = 8809 - destBegin = CF88 -End of Item 01BB - -Begin of Item 01BC - Format 0 - srcBegin = 880B - srcEnd = 8812 - destBegin = CF8E -End of Item 01BC - -Begin of Item 01BD - Format 0 - srcBegin = 8824 - srcEnd = 8831 - destBegin = D040 -End of Item 01BD - -Begin of Item 01BE - Format 0 - srcBegin = 8833 - srcEnd = 8838 - destBegin = D04E -End of Item 01BE - -Begin of Item 01BF - Format 0 - srcBegin = 8846 - srcEnd = 884B - destBegin = D05C -End of Item 01BF - -Begin of Item 01C0 - Format 0 - srcBegin = 884E - srcEnd = 8853 - destBegin = D062 -End of Item 01C0 - -Begin of Item 01C1 - Format 0 - srcBegin = 885A - srcEnd = 8860 - destBegin = D06B -End of Item 01C1 - -Begin of Item 01C2 - Format 0 - srcBegin = 88A5 - srcEnd = 88AA - destBegin = D09B -End of Item 01C2 - -Begin of Item 01C3 - Format 0 - srcBegin = 88E9 - srcEnd = 88EF - destBegin = D168 -End of Item 01C3 - -Begin of Item 01C4 - Format 0 - srcBegin = 8903 - srcEnd = 8908 - destBegin = D179 -End of Item 01C4 - -Begin of Item 01C5 - Format 0 - srcBegin = 8938 - srcEnd = 8940 - destBegin = D240 -End of Item 01C5 - -Begin of Item 01C6 - Format 0 - srcBegin = 8945 - srcEnd = 895D - destBegin = D24B -End of Item 01C6 - -Begin of Item 01C7 - Format 0 - srcBegin = 8960 - srcEnd = 8965 - destBegin = D264 -End of Item 01C7 - -Begin of Item 01C8 - Format 0 - srcBegin = 8967 - srcEnd = 897A - destBegin = D26A -End of Item 01C8 - -Begin of Item 01C9 - Format 0 - srcBegin = 8987 - srcEnd = 89A1 - destBegin = D286 -End of Item 01C9 - -Begin of Item 01CA - Format 0 - srcBegin = 89A2 - srcEnd = 89C0 - destBegin = D340 -End of Item 01CA - -Begin of Item 01CB - Format 0 - srcBegin = 89F4 - srcEnd = 89FA - destBegin = D378 -End of Item 01CB - -Begin of Item 01CC - Format 0 - srcBegin = 8A01 - srcEnd = 8A06 - destBegin = D385 -End of Item 01CC - -Begin of Item 01CD - Format 0 - srcBegin = 8A08 - srcEnd = 8A1D - destBegin = D38B -End of Item 01CD - -Begin of Item 01CE - Format 0 - srcBegin = 8A1E - srcEnd = 8A3D - destBegin = D440 -End of Item 01CE - -Begin of Item 01CF - Format 0 - srcBegin = 8A3F - srcEnd = 8A47 - destBegin = D460 -End of Item 01CF - -Begin of Item 01D0 - Format 0 - srcBegin = 8A49 - srcEnd = 8A5E - destBegin = D469 -End of Item 01D0 - -Begin of Item 01D1 - Format 0 - srcBegin = 8A5F - srcEnd = 8A78 - destBegin = D480 -End of Item 01D1 - -Begin of Item 01D2 - Format 0 - srcBegin = 8A7A - srcEnd = 8A80 - destBegin = D49A -End of Item 01D2 - -Begin of Item 01D3 - Format 0 - srcBegin = 8A81 - srcEnd = 8A88 - destBegin = D540 -End of Item 01D3 - -Begin of Item 01D4 - Format 0 - srcBegin = 8A8B - srcEnd = 8A92 - destBegin = D548 -End of Item 01D4 - -Begin of Item 01D5 - Format 0 - srcBegin = 8A94 - srcEnd = 8AC2 - destBegin = D550 -End of Item 01D5 - -Begin of Item 01D6 - Format 0 - srcBegin = 8AC3 - srcEnd = 8AE3 - destBegin = D580 -End of Item 01D6 - -Begin of Item 01D7 - Format 0 - srcBegin = 8AE4 - srcEnd = 8B06 - destBegin = D640 -End of Item 01D7 - -Begin of Item 01D8 - Format 0 - srcBegin = 8B08 - srcEnd = 8B23 - destBegin = D663 -End of Item 01D8 - -Begin of Item 01D9 - Format 0 - srcBegin = 8B27 - srcEnd = 8B45 - destBegin = D682 -End of Item 01D9 - -Begin of Item 01DA - Format 0 - srcBegin = 8B46 - srcEnd = 8B65 - destBegin = D740 -End of Item 01DA - -Begin of Item 01DB - Format 0 - srcBegin = 8B6D - srcEnd = 8B86 - destBegin = D765 -End of Item 01DB - -Begin of Item 01DC - Format 0 - srcBegin = 8B87 - srcEnd = 8B9F - destBegin = D780 -End of Item 01DC - -Begin of Item 01DD - Format 0 - srcBegin = 8C38 - srcEnd = 8C40 - destBegin = D840 -End of Item 01DD - -Begin of Item 01DE - Format 0 - srcBegin = 8C4D - srcEnd = 8C54 - destBegin = D850 -End of Item 01DE - -Begin of Item 01DF - Format 0 - srcBegin = 8C5B - srcEnd = 8C60 - destBegin = D85C -End of Item 01DF - -Begin of Item 01E0 - Format 0 - srcBegin = 8C63 - srcEnd = 8C69 - destBegin = D862 -End of Item 01E0 - -Begin of Item 01E1 - Format 0 - srcBegin = 8C6C - srcEnd = 8C72 - destBegin = D869 -End of Item 01E1 - -Begin of Item 01E2 - Format 0 - srcBegin = 8C7B - srcEnd = 8C81 - destBegin = D874 -End of Item 01E2 - -Begin of Item 01E3 - Format 0 - srcBegin = 8C8D - srcEnd = 8C93 - destBegin = D882 -End of Item 01E3 - -Begin of Item 01E4 - Format 0 - srcBegin = 8C99 - srcEnd = 8CAD - destBegin = D88C -End of Item 01E4 - -Begin of Item 01E5 - Format 0 - srcBegin = 8CAE - srcEnd = 8CEC - destBegin = D940 -End of Item 01E5 - -Begin of Item 01E6 - Format 0 - srcBegin = 8CED - srcEnd = 8D0D - destBegin = D980 -End of Item 01E6 - -Begin of Item 01E7 - Format 0 - srcBegin = 8D0E - srcEnd = 8D1C - destBegin = DA40 -End of Item 01E7 - -Begin of Item 01E8 - Format 0 - srcBegin = 8D78 - srcEnd = 8D80 - destBegin = DA5D -End of Item 01E8 - -Begin of Item 01E9 - Format 0 - srcBegin = 8D95 - srcEnd = 8D9E - destBegin = DA73 -End of Item 01E9 - -Begin of Item 01EA - Format 0 - srcBegin = 8DA4 - srcEnd = 8DB0 - destBegin = DA81 -End of Item 01EA - -Begin of Item 01EB - Format 0 - srcBegin = 8DFE - srcEnd = 8E04 - destBegin = DB53 -End of Item 01EB - -Begin of Item 01EC - Format 0 - srcBegin = 8E15 - srcEnd = 8E1C - destBegin = DB64 -End of Item 01EC - -Begin of Item 01ED - Format 0 - srcBegin = 8E53 - srcEnd = 8E58 - destBegin = DB89 -End of Item 01ED - -Begin of Item 01EE - Format 0 - srcBegin = 8E5A - srcEnd = 8E65 - destBegin = DB8F -End of Item 01EE - -Begin of Item 01EF - Format 0 - srcBegin = 8E88 - srcEnd = 8E8E - destBegin = DC4E -End of Item 01EF - -Begin of Item 01F0 - Format 0 - srcBegin = 8E95 - srcEnd = 8E9B - destBegin = DC58 -End of Item 01F0 - -Begin of Item 01F1 - Format 0 - srcBegin = 8E9F - srcEnd = 8EAA - destBegin = DC60 -End of Item 01F1 - -Begin of Item 01F2 - Format 0 - srcBegin = 8EB3 - srcEnd = 8EB9 - destBegin = DC70 -End of Item 01F2 - -Begin of Item 01F3 - Format 0 - srcBegin = 8EBB - srcEnd = 8EC2 - destBegin = DC77 -End of Item 01F3 - -Begin of Item 01F4 - Format 0 - srcBegin = 8EC3 - srcEnd = 8ECD - destBegin = DC80 -End of Item 01F4 - -Begin of Item 01F5 - Format 0 - srcBegin = 8ECF - srcEnd = 8EE4 - destBegin = DC8B -End of Item 01F5 - -Begin of Item 01F6 - Format 0 - srcBegin = 8EE5 - srcEnd = 8F23 - destBegin = DD40 -End of Item 01F6 - -Begin of Item 01F7 - Format 0 - srcBegin = 8F24 - srcEnd = 8F44 - destBegin = DD80 -End of Item 01F7 - -Begin of Item 01F8 - Format 0 - srcBegin = 8F45 - srcEnd = 8F65 - destBegin = DE40 -End of Item 01F8 - -Begin of Item 01F9 - Format 0 - srcBegin = 9027 - srcEnd = 902C - destBegin = DF45 -End of Item 01F9 - -Begin of Item 01FA - Format 0 - srcBegin = 905C - srcEnd = 9061 - destBegin = DF64 -End of Item 01FA - -Begin of Item 01FB - Format 0 - srcBegin = 9076 - srcEnd = 907C - destBegin = DF76 -End of Item 01FB - -Begin of Item 01FC - Format 0 - srcBegin = 9105 - srcEnd = 9118 - destBegin = E068 -End of Item 01FC - -Begin of Item 01FD - Format 0 - srcBegin = 9124 - srcEnd = 912E - destBegin = E084 -End of Item 01FD - -Begin of Item 01FE - Format 0 - srcBegin = 9132 - srcEnd = 9138 - destBegin = E090 -End of Item 01FE - -Begin of Item 01FF - Format 0 - srcBegin = 913A - srcEnd = 9142 - destBegin = E097 -End of Item 01FF - -Begin of Item 0200 - Format 0 - srcBegin = 9193 - srcEnd = 9199 - destBegin = E161 -End of Item 0200 - -Begin of Item 0201 - Format 0 - srcBegin = 919C - srcEnd = 91A1 - destBegin = E168 -End of Item 0201 - -Begin of Item 0202 - Format 0 - srcBegin = 91A4 - srcEnd = 91A9 - destBegin = E16E -End of Item 0202 - -Begin of Item 0203 - Format 0 - srcBegin = 91BC - srcEnd = 91C6 - destBegin = E180 -End of Item 0203 - -Begin of Item 0204 - Format 0 - srcBegin = 91D2 - srcEnd = 91DB - destBegin = E18E -End of Item 0204 - -Begin of Item 0205 - Format 0 - srcBegin = 91DD - srcEnd = 91E5 - destBegin = E198 -End of Item 0205 - -Begin of Item 0206 - Format 0 - srcBegin = 91E6 - srcEnd = 9224 - destBegin = E240 -End of Item 0206 - -Begin of Item 0207 - Format 0 - srcBegin = 9225 - srcEnd = 9245 - destBegin = E280 -End of Item 0207 - -Begin of Item 0208 - Format 0 - srcBegin = 9246 - srcEnd = 9273 - destBegin = E340 -End of Item 0208 - -Begin of Item 0209 - Format 0 - srcBegin = 9275 - srcEnd = 9285 - destBegin = E36E -End of Item 0209 - -Begin of Item 020A - Format 0 - srcBegin = 9286 - srcEnd = 928D - destBegin = E380 -End of Item 020A - -Begin of Item 020B - Format 0 - srcBegin = 928F - srcEnd = 92A7 - destBegin = E388 -End of Item 020B - -Begin of Item 020C - Format 0 - srcBegin = 92A8 - srcEnd = 92AD - destBegin = E440 -End of Item 020C - -Begin of Item 020D - Format 0 - srcBegin = 92AF - srcEnd = 92C7 - destBegin = E446 -End of Item 020D - -Begin of Item 020E - Format 0 - srcBegin = 92C9 - srcEnd = 92E8 - destBegin = E45F -End of Item 020E - -Begin of Item 020F - Format 0 - srcBegin = 92E9 - srcEnd = 9309 - destBegin = E480 -End of Item 020F - -Begin of Item 0210 - Format 0 - srcBegin = 930A - srcEnd = 933D - destBegin = E540 -End of Item 0210 - -Begin of Item 0211 - Format 0 - srcBegin = 933F - srcEnd = 9349 - destBegin = E574 -End of Item 0211 - -Begin of Item 0212 - Format 0 - srcBegin = 934A - srcEnd = 9369 - destBegin = E580 -End of Item 0212 - -Begin of Item 0213 - Format 0 - srcBegin = 936C - srcEnd = 938E - destBegin = E640 -End of Item 0213 - -Begin of Item 0214 - Format 0 - srcBegin = 9390 - srcEnd = 93AB - destBegin = E663 -End of Item 0214 - -Begin of Item 0215 - Format 0 - srcBegin = 93AC - srcEnd = 93C9 - destBegin = E680 -End of Item 0215 - -Begin of Item 0216 - Format 0 - srcBegin = 93CE - srcEnd = 93D5 - destBegin = E740 -End of Item 0216 - -Begin of Item 0217 - Format 0 - srcBegin = 93D7 - srcEnd = 940D - destBegin = E748 -End of Item 0217 - -Begin of Item 0218 - Format 0 - srcBegin = 940E - srcEnd = 942E - destBegin = E780 -End of Item 0218 - -Begin of Item 0219 - Format 0 - srcBegin = 942F - srcEnd = 943D - destBegin = E840 -End of Item 0219 - -Begin of Item 021A - Format 0 - srcBegin = 943F - srcEnd = 946A - destBegin = E84F -End of Item 021A - -Begin of Item 021B - Format 0 - srcBegin = 9470 - srcEnd = 9484 - destBegin = E880 -End of Item 021B - -Begin of Item 021C - Format 0 - srcBegin = 94C8 - srcEnd = 94CE - destBegin = EEE6 -End of Item 021C - -Begin of Item 021D - Format 0 - srcBegin = 9564 - srcEnd = 956C - destBegin = EFE4 -End of Item 021D - -Begin of Item 021E - Format 0 - srcBegin = 9577 - srcEnd = 957E - destBegin = E94C -End of Item 021E - -Begin of Item 021F - Format 0 - srcBegin = 9580 - srcEnd = 95AA - destBegin = E954 -End of Item 021F - -Begin of Item 0220 - Format 0 - srcBegin = 95AB - srcEnd = 95CB - destBegin = E980 -End of Item 0220 - -Begin of Item 0221 - Format 0 - srcBegin = 95CC - srcEnd = 95E7 - destBegin = EA40 -End of Item 0221 - -Begin of Item 0222 - Format 0 - srcBegin = 9623 - srcEnd = 9629 - destBegin = EA64 -End of Item 0222 - -Begin of Item 0223 - Format 0 - srcBegin = 9678 - srcEnd = 9684 - destBegin = EA91 -End of Item 0223 - -Begin of Item 0224 - Format 0 - srcBegin = 969D - srcEnd = 96A6 - destBegin = EB49 -End of Item 0224 - -Begin of Item 0225 - Format 0 - srcBegin = 96A8 - srcEnd = 96AF - destBegin = EB53 -End of Item 0225 - -Begin of Item 0226 - Format 0 - srcBegin = 96D6 - srcEnd = 96DF - destBegin = EB6D -End of Item 0226 - -Begin of Item 0227 - Format 0 - srcBegin = 96E1 - srcEnd = 96E7 - destBegin = EB77 -End of Item 0227 - -Begin of Item 0228 - Format 0 - srcBegin = 9721 - srcEnd = 9729 - destBegin = EC40 -End of Item 0228 - -Begin of Item 0229 - Format 0 - srcBegin = 973F - srcEnd = 9751 - destBegin = EC57 -End of Item 0229 - -Begin of Item 022A - Format 0 - srcBegin = 976A - srcEnd = 9771 - destBegin = EC77 -End of Item 022A - -Begin of Item 022B - Format 0 - srcBegin = 977D - srcEnd = 9784 - destBegin = EC87 -End of Item 022B - -Begin of Item 022C - Format 0 - srcBegin = 97A4 - srcEnd = 97AA - destBegin = ED44 -End of Item 022C - -Begin of Item 022D - Format 0 - srcBegin = 97B5 - srcEnd = 97E3 - destBegin = ED50 -End of Item 022D - -Begin of Item 022E - Format 0 - srcBegin = 97F7 - srcEnd = 980E - destBegin = ED89 -End of Item 022E - -Begin of Item 022F - Format 0 - srcBegin = 980F - srcEnd = 984D - destBegin = EE40 -End of Item 022F - -Begin of Item 0230 - Format 0 - srcBegin = 984E - srcEnd = 986E - destBegin = EE80 -End of Item 0230 - -Begin of Item 0231 - Format 0 - srcBegin = 986F - srcEnd = 9874 - destBegin = EF40 -End of Item 0231 - -Begin of Item 0232 - Format 0 - srcBegin = 98A8 - srcEnd = 98CD - destBegin = EF4C -End of Item 0232 - -Begin of Item 0233 - Format 0 - srcBegin = 98E9 - srcEnd = 9907 - destBegin = EF82 -End of Item 0233 - -Begin of Item 0234 - Format 0 - srcBegin = 9911 - srcEnd = 992D - destBegin = F047 -End of Item 0234 - -Begin of Item 0235 - Format 0 - srcBegin = 992F - srcEnd = 9949 - destBegin = F064 -End of Item 0235 - -Begin of Item 0236 - Format 0 - srcBegin = 994A - srcEnd = 9953 - destBegin = F080 -End of Item 0236 - -Begin of Item 0237 - Format 0 - srcBegin = 9956 - srcEnd = 9962 - destBegin = F08A -End of Item 0237 - -Begin of Item 0238 - Format 0 - srcBegin = 9967 - srcEnd = 996C - destBegin = E2BC -End of Item 0238 - -Begin of Item 0239 - Format 0 - srcBegin = 999A - srcEnd = 99A4 - destBegin = F142 -End of Item 0239 - -Begin of Item 023A - Format 0 - srcBegin = 99A9 - srcEnd = 99D8 - destBegin = F14F -End of Item 023A - -Begin of Item 023B - Format 0 - srcBegin = 99D9 - srcEnd = 99F9 - destBegin = F180 -End of Item 023B - -Begin of Item 023C - Format 0 - srcBegin = 99FA - srcEnd = 9A38 - destBegin = F240 -End of Item 023C - -Begin of Item 023D - Format 0 - srcBegin = 9A39 - srcEnd = 9A59 - destBegin = F280 -End of Item 023D - -Begin of Item 023E - Format 0 - srcBegin = 9A5A - srcEnd = 9A6B - destBegin = F340 -End of Item 023E - -Begin of Item 023F - Format 0 - srcBegin = 9AA9 - srcEnd = 9AAF - destBegin = F35B -End of Item 023F - -Begin of Item 0240 - Format 0 - srcBegin = 9AF0 - srcEnd = 9AF8 - destBegin = F38D -End of Item 0240 - -Begin of Item 0241 - Format 0 - srcBegin = 9AFC - srcEnd = 9B02 - destBegin = F397 -End of Item 0241 - -Begin of Item 0242 - Format 0 - srcBegin = 9B09 - srcEnd = 9B0E - destBegin = F441 -End of Item 0242 - -Begin of Item 0243 - Format 0 - srcBegin = 9B14 - srcEnd = 9B1E - destBegin = F44A -End of Item 0243 - -Begin of Item 0244 - Format 0 - srcBegin = 9B24 - srcEnd = 9B2E - destBegin = F458 -End of Item 0244 - -Begin of Item 0245 - Format 0 - srcBegin = 9B33 - srcEnd = 9B3A - destBegin = F465 -End of Item 0245 - -Begin of Item 0246 - Format 0 - srcBegin = 9B55 - srcEnd = 9B5A - destBegin = F479 -End of Item 0246 - -Begin of Item 0247 - Format 0 - srcBegin = 9B5B - srcEnd = 9B7B - destBegin = F480 -End of Item 0247 - -Begin of Item 0248 - Format 0 - srcBegin = 9B7C - srcEnd = 9BBA - destBegin = F540 -End of Item 0248 - -Begin of Item 0249 - Format 0 - srcBegin = 9BBB - srcEnd = 9BDB - destBegin = F580 -End of Item 0249 - -Begin of Item 024A - Format 0 - srcBegin = 9BDC - srcEnd = 9C1A - destBegin = F640 -End of Item 024A - -Begin of Item 024B - Format 0 - srcBegin = 9C1B - srcEnd = 9C3B - destBegin = F680 -End of Item 024B - -Begin of Item 024C - Format 0 - srcBegin = 9C3C - srcEnd = 9C7A - destBegin = F740 -End of Item 024C - -Begin of Item 024D - Format 0 - srcBegin = 9C9E - srcEnd = 9CA3 - destBegin = F6DF -End of Item 024D - -Begin of Item 024E - Format 0 - srcBegin = 9CB0 - srcEnd = 9CB7 - destBegin = F6ED -End of Item 024E - -Begin of Item 024F - Format 0 - srcBegin = 9CE3 - srcEnd = 9D21 - destBegin = F840 -End of Item 024F - -Begin of Item 0250 - Format 0 - srcBegin = 9D22 - srcEnd = 9D42 - destBegin = F880 -End of Item 0250 - -Begin of Item 0251 - Format 0 - srcBegin = 9D43 - srcEnd = 9D81 - destBegin = F940 -End of Item 0251 - -Begin of Item 0252 - Format 0 - srcBegin = 9D82 - srcEnd = 9DA2 - destBegin = F980 -End of Item 0252 - -Begin of Item 0253 - Format 0 - srcBegin = 9DA3 - srcEnd = 9DE1 - destBegin = FA40 -End of Item 0253 - -Begin of Item 0254 - Format 0 - srcBegin = 9DE2 - srcEnd = 9E02 - destBegin = FA80 -End of Item 0254 - -Begin of Item 0255 - Format 0 - srcBegin = 9E03 - srcEnd = 9E1E - destBegin = FB40 -End of Item 0255 - -Begin of Item 0256 - Format 0 - srcBegin = 9E66 - srcEnd = 9E6C - destBegin = F0D0 -End of Item 0256 - -Begin of Item 0257 - Format 0 - srcBegin = 9E74 - srcEnd = 9E7D - destBegin = FB74 -End of Item 0257 - -Begin of Item 0258 - Format 0 - srcBegin = 9E8C - srcEnd = 9E91 - destBegin = FB87 -End of Item 0258 - -Begin of Item 0259 - Format 0 - srcBegin = 9E94 - srcEnd = 9E9C - destBegin = FB8D -End of Item 0259 - -Begin of Item 025A - Format 0 - srcBegin = 9EA0 - srcEnd = 9EA5 - destBegin = FB97 -End of Item 025A - -Begin of Item 025B - Format 0 - srcBegin = 9EAB - srcEnd = 9EB3 - destBegin = FC40 -End of Item 025B - -Begin of Item 025C - Format 0 - srcBegin = 9EF0 - srcEnd = 9EF8 - destBegin = FC6D -End of Item 025C - -Begin of Item 025D - Format 0 - srcBegin = 9EFF - srcEnd = 9F05 - destBegin = FC78 -End of Item 025D - -Begin of Item 025E - Format 0 - srcBegin = 9F1A - srcEnd = 9F1F - destBegin = FC8D -End of Item 025E - -Begin of Item 025F - Format 0 - srcBegin = 9F23 - srcEnd = 9F2B - destBegin = FC94 -End of Item 025F - -Begin of Item 0260 - Format 0 - srcBegin = 9F45 - srcEnd = 9F4F - destBegin = FD4D -End of Item 0260 - -Begin of Item 0261 - Format 0 - srcBegin = 9F52 - srcEnd = 9F78 - destBegin = FD58 -End of Item 0261 - -Begin of Item 0262 - Format 0 - srcBegin = 9F79 - srcEnd = 9F7E - destBegin = FD80 -End of Item 0262 - -Begin of Item 0263 - Format 0 - srcBegin = 9F85 - srcEnd = 9F8A - destBegin = F6B5 -End of Item 0263 - -Begin of Item 0264 - Format 0 - srcBegin = 9F8D - srcEnd = 9F98 - destBegin = FD88 -End of Item 0264 - -Begin of Item 0265 - Format 0 - srcBegin = E7E7 - srcEnd = E7F3 - destBegin = A989 -End of Item 0265 - -Begin of Item 0266 - Format 0 - srcBegin = E815 - srcEnd = E843 - destBegin = FE50 -End of Item 0266 - -Begin of Item 0267 - Format 0 - srcBegin = E844 - srcEnd = E864 - destBegin = FE80 -End of Item 0267 - -Begin of Item 0268 - Format 0 - srcBegin = FE49 - srcEnd = FE52 - destBegin = A968 -End of Item 0268 - -Begin of Item 0269 - Format 0 - srcBegin = FE59 - srcEnd = FE61 - destBegin = A976 -End of Item 0269 - -Begin of Item 026A - Format 0 - srcBegin = FF05 - srcEnd = FF5D - destBegin = A3A5 -End of Item 026A - -Begin of Item 026B - Format 1 - srcBegin = 00A4 - srcEnd = 00B7 - mappingOffset = 0000 - Mapping = - A1E8 FFFD FFFD A1EC A1A7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A1E3 A1C0 FFFD FFFD - FFFD FFFD FFFD A1A4 -End of Item 026B - -Begin of Item 026C - Format 1 - srcBegin = 00D7 - srcEnd = 0101 - mappingOffset = 0014 - Mapping = - A1C1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD A8A4 A8A2 FFFD FFFD FFFD FFFD FFFD - FFFD A8A8 A8A6 A8BA FFFD A8AC A8AA FFFD - FFFD FFFD FFFD A8B0 A8AE FFFD FFFD FFFD - A1C2 FFFD A8B4 A8B2 FFFD A8B9 FFFD FFFD - FFFD FFFD A8A1 -End of Item 026C - -Begin of Item 026D - Format 1 - srcBegin = 0113 - srcEnd = 011B - mappingOffset = 003F - Mapping = - A8A5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - A8A7 -End of Item 026D - -Begin of Item 026E - Format 2 - srcBegin = 012B - destBegin = A8A9 -End of Item 026E - -Begin of Item 026F - Format 1 - srcBegin = 0144 - srcEnd = 014D - mappingOffset = 0048 - Mapping = - A8BD FFFD FFFD FFFD A8BE FFFD FFFD FFFD - FFFD A8AD -End of Item 026F - -Begin of Item 0270 - Format 2 - srcBegin = 016B - destBegin = A8B1 -End of Item 0270 - -Begin of Item 0271 - Format 1 - srcBegin = 01CE - srcEnd = 01DC - mappingOffset = 0052 - Mapping = - A8A3 FFFD A8AB FFFD A8AF FFFD A8B3 FFFD - A8B5 FFFD A8B6 FFFD A8B7 FFFD A8B8 -End of Item 0271 - -Begin of Item 0272 - Format 2 - srcBegin = 0251 - destBegin = A8BB -End of Item 0272 - -Begin of Item 0273 - Format 2 - srcBegin = 0261 - destBegin = A8C0 -End of Item 0273 - -Begin of Item 0274 - Format 1 - srcBegin = 02C7 - srcEnd = 02CB - mappingOffset = 0061 - Mapping = - A1A6 FFFD A1A5 A840 A841 -End of Item 0274 - -Begin of Item 0275 - Format 2 - srcBegin = 02D9 - destBegin = A842 -End of Item 0275 - -Begin of Item 0276 - Format 2 - srcBegin = 0401 - destBegin = A7A7 -End of Item 0276 - -Begin of Item 0277 - Format 2 - srcBegin = 0451 - destBegin = A7D7 -End of Item 0277 - -Begin of Item 0278 - Format 1 - srcBegin = 2010 - srcEnd = 203B - mappingOffset = 0066 - Mapping = - A95C FFFD FFFD A843 A844 A1AA A1AC FFFD - A1AE A1AF FFFD FFFD A1B0 A1B1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD A845 A1AD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - A1EB FFFD A1E4 A1E5 FFFD A846 FFFD FFFD - FFFD FFFD FFFD A1F9 -End of Item 0278 - -Begin of Item 0279 - Format 1 - srcBegin = 2103 - srcEnd = 2109 - mappingOffset = 0092 - Mapping = - A1E6 FFFD A847 FFFD FFFD FFFD A848 -End of Item 0279 - -Begin of Item 027A - Format 1 - srcBegin = 2116 - srcEnd = 2121 - mappingOffset = 0099 - Mapping = - A1ED FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD A959 -End of Item 027A - -Begin of Item 027B - Format 1 - srcBegin = 2190 - srcEnd = 2199 - mappingOffset = 00A5 - Mapping = - A1FB A1FC A1FA A1FD FFFD FFFD A849 A84A - A84B A84C -End of Item 027B - -Begin of Item 027C - Format 1 - srcBegin = 2208 - srcEnd = 2252 - mappingOffset = 00AF - Mapping = - A1CA FFFD FFFD FFFD FFFD FFFD FFFD A1C7 - FFFD A1C6 FFFD FFFD FFFD A84D FFFD FFFD - FFFD FFFD A1CC FFFD FFFD A1D8 A1DE A84E - A1CF FFFD FFFD A84F FFFD A1CE FFFD A1C4 - A1C5 A1C9 A1C8 A1D2 FFFD FFFD A1D3 FFFD - FFFD FFFD FFFD FFFD A1E0 A1DF A1C3 A1CB - FFFD FFFD FFFD FFFD FFFD A1D7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - A1D6 FFFD FFFD FFFD A1D5 FFFD FFFD FFFD - FFFD FFFD A850 -End of Item 027C - -Begin of Item 027D - Format 1 - srcBegin = 2260 - srcEnd = 226F - mappingOffset = 00FA - Mapping = - A1D9 A1D4 FFFD FFFD A1DC A1DD A851 A852 - FFFD FFFD FFFD FFFD FFFD FFFD A1DA A1DB -End of Item 027D - -Begin of Item 027E - Format 1 - srcBegin = 2295 - srcEnd = 2299 - mappingOffset = 010A - Mapping = - A892 FFFD FFFD FFFD A1D1 -End of Item 027E - -Begin of Item 027F - Format 2 - srcBegin = 22A5 - destBegin = A1CD -End of Item 027F - -Begin of Item 0280 - Format 2 - srcBegin = 22BF - destBegin = A853 -End of Item 0280 - -Begin of Item 0281 - Format 2 - srcBegin = 2312 - destBegin = A1D0 -End of Item 0281 - -Begin of Item 0282 - Format 1 - srcBegin = 2593 - srcEnd = 25A1 - mappingOffset = 010F - Mapping = - A888 A889 A88A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD A1F6 A1F5 -End of Item 0282 - -Begin of Item 0283 - Format 1 - srcBegin = 25B2 - srcEnd = 25CF - mappingOffset = 011E - Mapping = - A1F8 A1F7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD A88B A88C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD A1F4 A1F3 FFFD FFFD - FFFD A1F0 FFFD FFFD A1F2 A1F1 -End of Item 0283 - -Begin of Item 0284 - Format 1 - srcBegin = 25E2 - srcEnd = 25E5 - mappingOffset = 013C - Mapping = - A88D A88E A88F A890 -End of Item 0284 - -Begin of Item 0285 - Format 1 - srcBegin = 2605 - srcEnd = 2609 - mappingOffset = 0140 - Mapping = - A1EF A1EE FFFD FFFD A891 -End of Item 0285 - -Begin of Item 0286 - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 0145 - Mapping = - A1E2 FFFD A1E1 -End of Item 0286 - -Begin of Item 0287 - Format 1 - srcBegin = 3000 - srcEnd = 301E - mappingOffset = 0148 - Mapping = - A1A1 A1A2 A1A3 A1A8 FFFD A1A9 A965 A996 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - A1BE A1BF A893 A1FE A1B2 A1B3 A1BC A1BD - FFFD FFFD FFFD FFFD FFFD A894 A895 -End of Item 0287 - -Begin of Item 0288 - Format 1 - srcBegin = 309B - srcEnd = 309E - mappingOffset = 0167 - Mapping = - A961 A962 A966 A967 -End of Item 0288 - -Begin of Item 0289 - Format 1 - srcBegin = 30FC - srcEnd = 30FE - mappingOffset = 016B - Mapping = - A960 A963 A964 -End of Item 0289 - -Begin of Item 028A - Format 2 - srcBegin = 3231 - destBegin = A95A -End of Item 028A - -Begin of Item 028B - Format 2 - srcBegin = 32A3 - destBegin = A949 -End of Item 028B - -Begin of Item 028C - Format 1 - srcBegin = 338E - srcEnd = 338F - mappingOffset = 016E - Mapping = - A94A A94B -End of Item 028C - -Begin of Item 028D - Format 1 - srcBegin = 339C - srcEnd = 33A1 - mappingOffset = 0170 - Mapping = - A94C A94D A94E FFFD FFFD A94F -End of Item 028D - -Begin of Item 028E - Format 1 - srcBegin = 33C4 - srcEnd = 33D5 - mappingOffset = 0176 - Mapping = - A950 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD A951 FFFD FFFD A952 A953 FFFD - FFFD A954 -End of Item 028E - -Begin of Item 028F - Format 1 - srcBegin = 4E00 - srcEnd = 4FFE - mappingOffset = 0188 - Mapping = - D2BB B6A1 8140 C6DF 8141 8142 8143 CDF2 - D5C9 C8FD C9CF CFC2 D8A2 B2BB D3EB 8144 - D8A4 B3F3 8145 D7A8 C7D2 D8A7 CAC0 8146 - C7F0 B1FB D2B5 B4D4 B6AB CBBF D8A9 8147 - 8148 8149 B6AA 814A C1BD D1CF 814B C9A5 - D8AD 814C B8F6 D1BE E3DC D6D0 814D 814E - B7E1 814F B4AE 8150 C1D9 8151 D8BC 8152 - CDE8 B5A4 CEAA D6F7 8153 C0F6 BED9 D8AF - 8154 8155 8156 C4CB 8157 BEC3 8158 D8B1 - C3B4 D2E5 8159 D6AE CEDA D5A7 BAF5 B7A6 - C0D6 815A C6B9 C5D2 C7C7 815B B9D4 815C - B3CB D2D2 815D 815E D8BF BEC5 C6F2 D2B2 - CFB0 CFE7 815F 8160 8161 8162 CAE9 8163 - 8164 D8C0 FFFD FFFD FFFD FFFD FFFD FFFD - C2F2 C2D2 816B C8E9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD C7AC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD C1CB 817D - D3E8 D5F9 817E CAC2 B6FE D8A1 D3DA BFF7 - 8180 D4C6 BBA5 D8C1 CEE5 BEAE 8181 8182 - D8A8 8183 D1C7 D0A9 8184 8185 8186 D8BD - D9EF CDF6 BFBA 8187 BDBB BAA5 D2E0 B2FA - BAE0 C4B6 8188 CFED BEA9 CDA4 C1C1 8189 - 818A 818B C7D7 D9F1 818C D9F4 818D 818E - 818F 8190 C8CB D8E9 8191 8192 8193 D2DA - CAB2 C8CA D8EC D8EA D8C6 BDF6 C6CD B3F0 - 8194 D8EB BDF1 BDE9 8195 C8D4 B4D3 8196 - 8197 C2D8 8198 B2D6 D7D0 CACB CBFB D5CC - B8B6 CFC9 8199 819A 819B D9DA D8F0 C7AA - 819C D8EE 819D B4FA C1EE D2D4 819E 819F - D8ED 81A0 D2C7 D8EF C3C7 81A1 81A2 81A3 - D1F6 81A4 D6D9 D8F2 81A5 D8F5 BCFE BCDB - 81A6 81A7 81A8 C8CE 81A9 B7DD 81AA B7C2 - 81AB C6F3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D8F8 D2C1 81B3 81B4 CEE9 BCBF B7FC - B7A5 D0DD 81B5 81B6 81B7 81B8 81B9 D6DA - D3C5 BBEF BBE1 D8F1 81BA 81BB C9A1 CEB0 - B4AB 81BC D8F3 81BD C9CB D8F6 C2D7 D8F7 - 81BE 81BF CEB1 D8F9 81C0 81C1 81C2 B2AE - B9C0 81C3 D9A3 81C4 B0E9 81C5 C1E6 81C6 - C9EC 81C7 CBC5 81C8 CBC6 D9A4 81C9 81CA - 81CB 81CC 81CD B5E8 81CE 81CF B5AB FFFD - FFFD FFFD FFFD FFFD FFFD CEBB B5CD D7A1 - D7F4 D3D3 81D6 CCE5 81D7 BACE 81D8 D9A2 - D9DC D3E0 D8FD B7F0 D7F7 D8FE D8FA D9A1 - C4E3 81D9 81DA D3B6 D8F4 D9DD 81DB D8FB - 81DC C5E5 81DD 81DE C0D0 81DF 81E0 D1F0 - B0DB 81E1 81E2 BCD1 D9A6 81E3 D9A5 81E4 - 81E5 81E6 81E7 D9AC D9AE 81E8 D9AB CAB9 - 81E9 81EA 81EB D9A9 D6B6 81EC 81ED 81EE - B3DE D9A8 81EF C0FD 81F0 CACC 81F1 D9AA - 81F2 D9A7 81F3 81F4 D9B0 81F5 81F6 B6B1 - 81F7 81F8 81F9 B9A9 81FA D2C0 81FB 81FC - CFC0 81FD 81FE C2C2 8240 BDC4 D5EC B2E0 - C7C8 BFEB D9AD 8241 D9AF 8242 CEEA BAEE - 8243 8244 8245 8246 8247 C7D6 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD B1E3 - 8251 8252 8253 B4D9 B6ED D9B4 8254 8255 - 8256 8257 BFA1 8258 8259 825A D9DE C7CE - C0FE D9B8 825B 825C 825D 825E 825F CBD7 - B7FD 8260 D9B5 8261 D9B7 B1A3 D3E1 D9B9 - 8262 D0C5 8263 D9B6 8264 8265 D9B1 8266 - D9B2 C1A9 D9B3 8267 8268 BCF3 D0DE B8A9 - 8269 BEE3 826A D9BD 826B 826C 826D 826E - D9BA 826F B0B3 8270 8271 8272 D9C2 -End of Item 028F - -Begin of Item 0290 - Format 1 - srcBegin = 500B - srcEnd = 502E - mappingOffset = 0387 - Mapping = - 8280 D9C4 B1B6 8281 D9BF 8282 8283 B5B9 - 8284 BEF3 8285 8286 8287 CCC8 BAF2 D2D0 - 8288 D9C3 8289 828A BDE8 828B B3AB 828C - 828D 828E D9C5 BEEB 828F D9C6 D9BB C4DF - 8290 D9BE D9C1 D9C0 -End of Item 0290 - -Begin of Item 0291 - Format 1 - srcBegin = 503A - srcEnd = 508D - mappingOffset = 03AB - Mapping = - D5AE 829C D6B5 829D C7E3 829E 829F 82A0 - 82A1 D9C8 82A2 82A3 82A4 BCD9 D9CA 82A5 - 82A6 82A7 D9BC 82A8 D9CB C6AB 82A9 82AA - 82AB 82AC 82AD D9C9 82AE 82AF 82B0 82B1 - D7F6 82B2 CDA3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD BDA1 FFFD FFFD FFFD FFFD - FFFD FFFD D9CC FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C5BC CDB5 82CA 82CB - 82CC D9CD 82CD 82CE D9C7 B3A5 BFFE 82CF - 82D0 82D1 82D2 B8B5 82D3 82D4 C0FC 82D5 - 82D6 82D7 82D8 B0F8 -End of Item 0291 - -Begin of Item 0292 - Format 1 - srcBegin = 50A3 - srcEnd = 50BC - mappingOffset = 03FF - Mapping = - B4F6 82EE D9CE 82EF D9CF B4A2 D9D0 82F0 - 82F1 B4DF 82F2 82F3 82F4 82F5 82F6 B0C1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D9D1 - C9B5 82FE -End of Item 0292 - -Begin of Item 0293 - Format 1 - srcBegin = 50CF - srcEnd = 50DA - mappingOffset = 0419 - Mapping = - CFF1 FFFD FFFD FFFD FFFD FFFD FFFD D9D2 - 8358 8359 835A C1C5 -End of Item 0293 - -Begin of Item 0294 - Format 1 - srcBegin = 50E6 - srcEnd = 5112 - mappingOffset = 0425 - Mapping = - D9D6 C9AE 8366 8367 8368 8369 D9D5 D9D4 - D9D7 836A 836B 836C 836D CBDB 836E BDA9 - 836F 8370 8371 8372 8373 C6A7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D9D3 D9D8 837E 8380 8381 D9D9 FFFD FFFD - FFFD FFFD FFFD FFFD C8E5 -End of Item 0294 - -Begin of Item 0295 - Format 2 - srcBegin = 5121 - destBegin = C0DC -End of Item 0295 - -Begin of Item 0296 - Format 1 - srcBegin = 513F - srcEnd = 52E4 - mappingOffset = 0452 - Mapping = - B6F9 D8A3 D4CA 83B3 D4AA D0D6 B3E4 D5D7 - 83B4 CFC8 B9E2 83B5 BFCB 83B6 C3E2 83B7 - 83B8 83B9 B6D2 83BA 83BB CDC3 D9EE D9F0 - 83BC 83BD 83BE B5B3 83BF B6B5 83C0 83C1 - 83C2 83C3 83C4 BEA4 83C5 83C6 C8EB 83C7 - 83C8 C8AB 83C9 83CA B0CB B9AB C1F9 D9E2 - 83CB C0BC B9B2 83CC B9D8 D0CB B1F8 C6E4 - BEDF B5E4 D7C8 83CD D1F8 BCE6 CADE 83CE - 83CF BCBD D9E6 D8E7 83D0 83D1 C4DA 83D2 - 83D3 B8D4 C8BD 83D4 83D5 B2E1 D4D9 83D6 - 83D7 83D8 83D9 C3B0 83DA 83DB C3E1 DAA2 - C8DF 83DC D0B4 83DD BEFC C5A9 83DE 83DF - 83E0 B9DA 83E1 DAA3 83E2 D4A9 DAA4 83E3 - 83E4 83E5 83E6 83E7 D9FB B6AC 83E8 83E9 - B7EB B1F9 D9FC B3E5 BEF6 83EA BFF6 D2B1 - C0E4 83EB 83EC 83ED B6B3 D9FE D9FD 83EE - 83EF BEBB 83F0 83F1 83F2 C6E0 83F3 D7BC - DAA1 83F4 C1B9 83F5 B5F2 C1E8 83F6 83F7 - BCF5 83F8 B4D5 FFFD FFFD FFFD FFFD FFFD - FFFD 8440 8441 8442 C1DD 8443 C4FD 8444 - 8445 BCB8 B7B2 8446 8447 B7EF FFFD FFFD - FFFD FFFD FFFD FFFD D9EC 844E C6BE 844F - BFAD BBCB 8450 8451 B5CA 8452 DBC9 D0D7 - 8453 CDB9 B0BC B3F6 BBF7 DBCA BAAF 8454 - D4E4 B5B6 B5F3 D8D6 C8D0 8455 8456 B7D6 - C7D0 D8D7 8457 BFAF 8458 8459 DBBB D8D8 - 845A 845B D0CC BBAE 845C 845D 845E EBBE - C1D0 C1F5 D4F2 B8D5 B4B4 845F B3F5 8460 - 8461 C9BE 8462 8463 8464 C5D0 8465 8466 - 8467 C5D9 C0FB 8468 B1F0 8469 D8D9 B9CE - 846A B5BD 846B 846C D8DA 846D 846E D6C6 - CBA2 C8AF C9B2 B4CC BFCC 846F B9F4 8470 - D8DB D8DC B6E7 BCC1 CCEA FFFD FFFD FFFD - FFFD FFFD FFFD CFF7 8477 D8DD C7B0 8478 - 8479 B9D0 BDA3 847A 847B CCDE 847C C6CA - 847D 847E 8480 8481 8482 D8E0 8483 D8DE - 8484 8485 D8DF 8486 8487 8488 B0FE 8489 - BEE7 848A CAA3 BCF4 848B 848C 848D 848E - B8B1 848F 8490 B8EE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D8E2 849B - BDCB 849C D8E4 D8E3 849D 849E 849F 84A0 - 84A1 C5FC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D8E5 84A9 84AA D8E6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C1A6 84B2 C8B0 B0EC - B9A6 BCD3 CEF1 DBBD C1D3 84B3 84B4 84B5 - 84B6 B6AF D6FA C5AC BDD9 DBBE DBBF 84B7 - 84B8 84B9 C0F8 BEA2 C0CD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD DBC0 - CAC6 84C4 84C5 84C6 B2AA 84C7 84C8 84C9 - D3C2 84CA C3E3 84CB D1AB 84CC 84CD 84CE - 84CF DBC2 84D0 C0D5 84D1 84D2 84D3 DBC3 - 84D4 BFB1 FFFD FFFD FFFD FFFD FFFD FFFD - C4BC 84DB 84DC 84DD 84DE C7DA -End of Item 0296 - -Begin of Item 0297 - Format 1 - srcBegin = 52F0 - srcEnd = 563F - mappingOffset = 05F8 - Mapping = - DBC4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D9E8 C9D7 84F2 84F3 84F4 B9B4 CEF0 - D4C8 84F5 84F6 84F7 84F8 B0FC B4D2 84F9 - D0D9 84FA 84FB 84FC 84FD D9E9 84FE DECB - D9EB 8540 8541 8542 8543 D8B0 BBAF B1B1 - 8544 B3D7 D8CE 8545 8546 D4D1 8547 8548 - BDB3 BFEF 8549 CFBB 854A 854B D8D0 854C - 854D 854E B7CB 854F 8550 8551 D8D1 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C6A5 C7F8 D2BD 855C 855D D8D2 C4E4 - 855E CAAE 855F C7A7 8560 D8A6 8561 C9FD - CEE7 BBDC B0EB 8562 8563 8564 BBAA D0AD - 8565 B1B0 D7E4 D7BF 8566 B5A5 C2F4 C4CF - 8567 8568 B2A9 8569 B2B7 856A B1E5 DFB2 - D5BC BFA8 C2AC D8D5 C2B1 856B D8D4 CED4 - 856C DAE0 856D CEC0 856E 856F D8B4 C3AE - D3A1 CEA3 8570 BCB4 C8B4 C2D1 8571 BEED - D0B6 8572 DAE1 8573 8574 8575 8576 C7E4 - 8577 8578 B3A7 8579 B6F2 CCFC C0FA 857A - 857B C0F7 857C D1B9 D1E1 D8C7 857D 857E - 8580 8581 8582 8583 8584 B2DE 8585 8586 - C0E5 8587 BAF1 8588 8589 D8C8 858A D4AD - 858B 858C CFE1 D8C9 858D D8CA CFC3 858E - B3F8 BEC7 858F 8590 8591 8592 D8CB FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DBCC 859A - 859B 859C 859D C8A5 859E 859F 85A0 CFD8 - 85A1 C8FE B2CE 85A2 85A3 85A4 85A5 85A6 - D3D6 B2E6 BCB0 D3D1 CBAB B7B4 85A7 85A8 - 85A9 B7A2 85AA 85AB CAE5 85AC C8A1 CADC - B1E4 D0F0 85AD C5D1 85AE 85AF 85B0 DBC5 - B5FE 85B1 85B2 BFDA B9C5 BEE4 C1ED 85B3 - DFB6 DFB5 D6BB BDD0 D5D9 B0C8 B6A3 BFC9 - CCA8 DFB3 CAB7 D3D2 85B4 D8CF D2B6 BAC5 - CBBE CCBE 85B5 DFB7 B5F0 DFB4 85B6 85B7 - 85B8 D3F5 85B9 B3D4 B8F7 85BA DFBA 85BB - BACF BCAA B5F5 85BC CDAC C3FB BAF3 C0F4 - CDC2 CFF2 DFB8 CFC5 85BD C2C0 DFB9 C2F0 - 85BE 85BF 85C0 BEFD 85C1 C1DF CDCC D2F7 - B7CD DFC1 85C2 DFC4 85C3 85C4 B7F1 B0C9 - B6D6 B7D4 85C5 BAAC CCFD BFD4 CBB1 C6F4 - 85C6 D6A8 DFC5 85C7 CEE2 B3B3 85C8 85C9 - CEFC B4B5 85CA CEC7 BAF0 85CB CEE1 85CC - D1BD 85CD 85CE DFC0 85CF 85D0 B4F4 85D1 - B3CA 85D2 B8E6 DFBB 85D3 85D4 85D5 85D6 - C4C5 85D7 DFBC DFBD DFBE C5BB DFBF DFC2 - D4B1 DFC3 85D8 C7BA CED8 85D9 85DA 85DB - 85DC 85DD C4D8 85DE DFCA 85DF DFCF 85E0 - D6DC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DFC9 DFDA CEB6 85E9 BAC7 DFCE DFC8 - C5DE 85EA 85EB C9EB BAF4 C3FC 85EC 85ED - BED7 85EE DFC6 85EF DFCD 85F0 C5D8 85F1 - 85F2 85F3 85F4 D5A6 BACD 85F5 BECC D3BD - B8C0 85F6 D6E4 85F7 DFC7 B9BE BFA7 85F8 - 85F9 C1FC DFCB DFCC 85FA DFD0 85FB 85FC - 85FD 85FE 8640 DFDB DFE5 8641 DFD7 DFD6 - D7C9 DFE3 DFE4 E5EB D2A7 DFD2 8642 BFA9 - 8643 D4DB 8644 BFC8 DFD4 8645 8646 8647 - CFCC 8648 8649 DFDD 864A D1CA 864B DFDE - B0A7 C6B7 DFD3 864C BAE5 864D B6DF CDDB - B9FE D4D5 864E 864F DFDF CFEC B0A5 DFE7 - DFD1 D1C6 DFD5 DFD8 DFD9 DFDC 8650 BBA9 - 8651 DFE0 DFE1 8652 DFE2 DFE6 DFE8 D3B4 - 8653 8654 8655 8656 8657 B8E7 C5B6 DFEA - C9DA C1A8 C4C4 8658 8659 BFDE CFF8 865A - 865B 865C D5DC DFEE FFFD FFFD FFFD FFFD - FFFD FFFD B2B8 8663 BADF DFEC 8664 DBC1 - 8665 D1E4 8666 8667 8668 8669 CBF4 B4BD - 866A B0A6 866B 866C 866D 866E 866F DFF1 - CCC6 DFF2 8670 8671 DFED FFFD FFFD FFFD - FFFD FFFD FFFD DFE9 8678 8679 867A 867B - DFEB 867C DFEF DFF0 BBBD 867D 867E DFF3 - 8680 8681 DFF4 8682 BBA3 8683 CADB CEA8 - E0A7 B3AA 8684 E0A6 8685 8686 8687 E0A1 - 8688 8689 868A 868B DFFE 868C CDD9 DFFC - 868D DFFA 868E BFD0 D7C4 868F C9CC 8690 - 8691 DFF8 B0A1 8692 8693 8694 8695 8696 - DFFD 8697 8698 8699 869A DFFB E0A2 869B - 869C 869D 869E 869F E0A8 86A0 86A1 86A2 - 86A3 B7C8 86A4 86A5 C6A1 C9B6 C0B2 DFF5 - 86A6 86A7 C5BE 86A8 D8C4 DFF9 C4F6 FFFD - FFFD FFFD FFFD FFFD FFFD E0A3 E0A4 E0A5 - D0A5 86AF 86B0 E0B4 CCE4 86B1 E0B1 86B2 - BFA6 E0AF CEB9 E0AB C9C6 86B3 86B4 C0AE - E0AE BAED BAB0 E0A9 86B5 86B6 86B7 DFF6 - 86B8 E0B3 86B9 86BA E0B8 86BB 86BC 86BD - B4AD E0B9 86BE 86BF CFB2 BAC8 86C0 E0B0 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D0FA - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E0AC 86D1 D4FB 86D2 DFF7 86D3 C5E7 - 86D4 E0AD 86D5 D3F7 86D6 E0B6 E0B7 86D7 - 86D8 86D9 86DA 86DB E0C4 D0E1 86DC 86DD - 86DE E0BC 86DF 86E0 E0C9 E0CA 86E1 86E2 - 86E3 E0BE E0AA C9A4 E0C1 86E4 E0B2 86E5 - 86E6 86E7 86E8 86E9 CAC8 E0C3 86EA E0B5 - 86EB CECB 86EC CBC3 E0CD E0C6 E0C2 86ED - E0CB 86EE E0BA E0BF E0C0 86EF 86F0 E0C5 - 86F1 86F2 E0C7 E0C8 86F3 E0CC 86F4 E0BB - 86F5 86F6 86F7 86F8 86F9 CBD4 E0D5 86FA - E0D6 E0D2 86FB 86FC 86FD 86FE 8740 8741 - E0D0 BCCE 8742 8743 E0D1 8744 B8C2 D8C5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D0EA 874D 874E C2EF 874F 8750 E0CF E0BD - 8751 8752 8753 E0D4 E0D3 8754 8755 E0D7 - 8756 8757 8758 8759 E0DC E0D8 875A 875B - 875C D6F6 B3B0 875D D7EC 875E CBBB 875F - 8760 E0DA 8761 CEFB 8762 8763 8764 BAD9 -End of Item 0297 - -Begin of Item 0298 - Format 1 - srcBegin = 564C - srcEnd = 5693 - mappingOffset = 0948 - Mapping = - E0E1 E0DD D2AD 8771 8772 8773 8774 8775 - E0E2 8776 8777 E0DB E0D9 E0DF 8778 8779 - E0E0 877A 877B 877C 877D 877E E0DE 8780 - E0E4 8781 8782 8783 C6F7 D8AC D4EB E0E6 - CAC9 8784 8785 8786 8787 E0E5 8788 8789 - 878A 878B B8C1 878C 878D 878E 878F E0E7 - E0E8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E0E9 E0E3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD BABF CCE7 879F 87A0 87A1 E0EA -End of Item 0298 - -Begin of Item 0299 - Format 2 - srcBegin = 56A3 - destBegin = CFF9 -End of Item 0299 - -Begin of Item 029A - Format 1 - srcBegin = 56AF - srcEnd = 56BC - mappingOffset = 0990 - Mapping = - E0EB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C8C2 87C3 87C4 87C5 87C6 BDC0 -End of Item 029A - -Begin of Item 029B - Format 1 - srcBegin = 56CA - srcEnd = 570A - mappingOffset = 099E - Mapping = - C4D2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E0EC 87DD 87DE E0ED 87DF 87E0 - C7F4 CBC4 87E1 E0EE BBD8 D8B6 D2F2 E0EF - CDC5 87E2 B6DA FFFD FFFD FFFD FFFD FFFD - FFFD E0F1 87E9 D4B0 87EA 87EB C0A7 B4D1 - 87EC 87ED CEA7 E0F0 87EE 87EF 87F0 E0F2 - B9CC 87F1 87F2 B9FA CDBC E0F3 87F3 87F4 - 87F5 C6D4 E0F4 87F6 D4B2 87F7 C8A6 E0F6 - E0F5 -End of Item 029B - -Begin of Item 029C - Format 1 - srcBegin = 571C - srcEnd = 5835 - mappingOffset = 09DF - Mapping = - E0F7 884A 884B CDC1 884C 884D 884E CAA5 - 884F 8850 8851 8852 D4DA DBD7 DBD9 8853 - DBD8 B9E7 DBDC DBDD B5D8 8854 8855 DBDA - 8856 8857 8858 8859 885A DBDB B3A1 DBDF - 885B 885C BBF8 885D D6B7 885E DBE0 885F - 8860 8861 8862 BEF9 8863 8864 B7BB 8865 - DBD0 CCAE BFB2 BBB5 D7F8 BFD3 8866 8867 - 8868 8869 886A BFE9 886B 886C BCE1 CCB3 - DBDE B0D3 CEEB B7D8 D7B9 C6C2 886D 886E - C0A4 886F CCB9 8870 DBE7 DBE1 C6BA DBE3 - 8871 DBE8 8872 C5F7 8873 8874 8875 DBEA - 8876 8877 DBE9 BFC0 8878 8879 887A DBE6 - DBE5 887B 887C 887D 887E 8880 B4B9 C0AC - C2A2 DBE2 DBE4 8881 8882 8883 8884 D0CD - DBED 8885 8886 8887 8888 8889 C0DD DBF2 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD B6E2 - 8891 8892 8893 8894 DBF3 DBD2 B9B8 D4AB - DBEC 8895 BFD1 DBF0 8896 DBD1 8897 B5E6 - 8898 DBEB BFE5 8899 889A 889B DBEE 889C - DBF1 889D 889E 889F DBF9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B9A1 B0A3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C2F1 - 88B0 88B1 B3C7 DBEF 88B2 88B3 DBF8 88B4 - C6D2 DBF4 88B5 88B6 DBF5 DBF7 DBF6 88B7 - 88B8 DBFE 88B9 D3F2 B2BA 88BA 88BB 88BC - DBFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DCA4 88C5 DBFB 88C6 88C7 88C8 88C9 - DBFA 88CA 88CB 88CC DBFC C5E0 BBF9 88CD - 88CE DCA3 88CF 88D0 DCA5 88D1 CCC3 88D2 - 88D3 88D4 B6D1 DDC0 88D5 88D6 88D7 DCA1 - 88D8 DCA2 88D9 88DA 88DB C7B5 88DC 88DD - 88DE B6E9 88DF 88E0 88E1 DCA7 88E2 88E3 - 88E4 88E5 DCA6 88E6 DCA9 B1A4 88E7 88E8 - B5CC 88E9 88EA 88EB 88EC 88ED BFB0 88EE - 88EF 88F0 88F1 88F2 D1DF 88F3 88F4 88F5 - 88F6 B6C2 -End of Item 029C - -Begin of Item 029D - Format 1 - srcBegin = 5844 - srcEnd = 586C - mappingOffset = 0AF9 - Mapping = - DCA8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CBFA EBF3 894D 894E 894F CBDC 8950 8951 - CBFE 8952 8953 8954 CCC1 8955 8956 8957 - 8958 8959 C8FB FFFD FFFD FFFD FFFD FFFD - FFFD DCAA 8960 8961 8962 8963 8964 CCEE - DCAB -End of Item 029D - -Begin of Item 029E - Format 1 - srcBegin = 587E - srcEnd = 58A9 - mappingOffset = 0B22 - Mapping = - DBD3 8976 DCAF DCAC 8977 BEB3 8978 CAFB - 8979 897A 897B DCAD 897C 897D 897E 8980 - 8981 8982 8983 8984 C9CA C4B9 8985 8986 - 8987 8988 8989 C7BD DCAE 898A 898B 898C - D4F6 D0E6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C4AB B6D5 -End of Item 029E - -Begin of Item 029F - Format 1 - srcBegin = 58BC - srcEnd = 58C5 - mappingOffset = 0B4E - Mapping = - DBD4 89A7 89A8 89A9 89AA B1DA 89AB 89AC - 89AD DBD5 -End of Item 029F - -Begin of Item 02A0 - Format 1 - srcBegin = 58D1 - srcEnd = 58D5 - mappingOffset = 0B58 - Mapping = - DBD6 89B9 89BA 89BB BABE -End of Item 02A0 - -Begin of Item 02A1 - Format 1 - srcBegin = 58E4 - srcEnd = 5965 - mappingOffset = 0B5D - Mapping = - C8C0 FFFD FFFD FFFD FFFD FFFD FFFD CABF - C8C9 89D0 D7B3 89D1 C9F9 89D2 89D3 BFC7 - 89D4 89D5 BAF8 89D6 89D7 D2BC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E2BA 89E0 - B4A6 89E1 89E2 B1B8 89E3 89E4 89E5 89E6 - 89E7 B8B4 89E8 CFC4 89E9 89EA 89EB 89EC - D9E7 CFA6 CDE2 89ED 89EE D9ED B6E0 89EF - D2B9 89F0 89F1 B9BB 89F2 89F3 89F4 89F5 - E2B9 E2B7 89F6 B4F3 89F7 CCEC CCAB B7F2 - 89F8 D8B2 D1EB BABB 89F9 CAA7 89FA 89FB - CDB7 89FC 89FD D2C4 BFE4 BCD0 B6E1 89FE - DEC5 8A40 8A41 8A42 8A43 DEC6 DBBC 8A44 - D1D9 8A45 8A46 C6E6 C4CE B7EE 8A47 B7DC - 8A48 8A49 BFFC D7E0 8A4A C6F5 8A4B 8A4C - B1BC DEC8 BDB1 CCD7 DECA 8A4D DEC9 8A4E - 8A4F 8A50 8A51 8A52 B5EC 8A53 C9DD 8A54 - 8A55 B0C2 -End of Item 02A1 - -Begin of Item 02A2 - Format 1 - srcBegin = 5973 - srcEnd = 59EC - mappingOffset = 0BDF - Mapping = - C5AE C5AB 8A63 C4CC 8A64 BCE9 CBFD 8A65 - 8A66 8A67 BAC3 8A68 8A69 8A6A E5F9 C8E7 - E5FA CDFD 8A6B D7B1 B8BE C2E8 8A6C C8D1 - 8A6D 8A6E E5FB 8A6F 8A70 8A71 8A72 B6CA - BCCB 8A73 8A74 D1FD E6A1 8A75 C3EE 8A76 - 8A77 8A78 8A79 E6A4 8A7A 8A7B 8A7C 8A7D - E5FE E6A5 CDD7 8A7E 8A80 B7C1 E5FC E5FD - E6A3 8A81 8A82 C4DD E6A8 8A83 8A84 E6A7 - FFFD FFFD FFFD FFFD FFFD FFFD C3C3 8A8B - C6DE 8A8C 8A8D E6AA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C4B7 8A95 8A96 8A97 E6A2 - CABC 8A98 8A99 8A9A 8A9B BDE3 B9C3 E6A6 - D0D5 CEAF 8A9C 8A9D E6A9 E6B0 8A9E D2A6 - 8A9F BDAA E6AD 8AA0 8AA1 8AA2 8AA3 8AA4 - E6AF 8AA5 C0D1 8AA6 8AA7 D2CC 8AA8 8AA9 - 8AAA BCA7 -End of Item 02A2 - -Begin of Item 02A3 - Format 1 - srcBegin = 59F9 - srcEnd = 5A7F - mappingOffset = 0C59 - Mapping = - E6B1 8AB7 D2F6 8AB8 8AB9 8ABA D7CB 8ABB - CDFE 8ABC CDDE C2A6 E6AB E6AC BDBF E6AE - E6B3 8ABD 8ABE E6B2 8ABF 8AC0 8AC1 8AC2 - E6B6 8AC3 E6B8 8AC4 8AC5 8AC6 8AC7 C4EF - 8AC8 8AC9 8ACA C4C8 8ACB 8ACC BEEA C9EF - 8ACD 8ACE E6B7 8ACF B6F0 8AD0 8AD1 8AD2 - C3E4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D3E9 E6B4 8ADA E6B5 8ADB C8A2 8ADC 8ADD - 8ADE 8ADF 8AE0 E6BD 8AE1 8AE2 8AE3 E6B9 - 8AE4 8AE5 8AE6 8AE7 8AE8 C6C5 8AE9 8AEA - CDF1 E6BB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E6BC 8AF5 8AF6 8AF7 - 8AF8 BBE9 FFFD FFFD FFFD FFFD FFFD FFFD - 8B40 E6BE 8B41 8B42 8B43 8B44 E6BA 8B45 - 8B46 C0B7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D3A4 E6BF C9F4 E6C3 8B50 - 8B51 E6C4 8B52 8B53 8B54 8B55 D0F6 -End of Item 02A3 - -Begin of Item 02A4 - Format 1 - srcBegin = 5A92 - srcEnd = 5A9B - mappingOffset = 0CE0 - Mapping = - C3BD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C3C4 E6C2 -End of Item 02A4 - -Begin of Item 02A5 - Format 1 - srcBegin = 5AAA - srcEnd = 5AF1 - mappingOffset = 0CEA - Mapping = - E6C1 8B7D 8B7E 8B80 8B81 8B82 8B83 8B84 - E6C7 CFB1 8B85 EBF4 8B86 8B87 E6CA 8B88 - 8B89 8B8A 8B8B 8B8C E6C5 8B8D 8B8E BCDE - C9A9 FFFD FFFD FFFD FFFD FFFD FFFD BCB5 - 8B95 8B96 CFD3 8B97 8B98 8B99 8B9A 8B9B - E6C8 8B9C E6C9 8B9D E6CE 8B9E E6D0 8B9F - 8BA0 8BA1 E6D1 8BA2 8BA3 8BA4 E6CB B5D5 - 8BA5 E6CC 8BA6 8BA7 E6CF 8BA8 8BA9 C4DB - 8BAA E6C6 8BAB 8BAC 8BAD 8BAE 8BAF E6CD -End of Item 02A5 - -Begin of Item 02A6 - Format 2 - srcBegin = 5B09 - destBegin = E6D2 -End of Item 02A6 - -Begin of Item 02A7 - Format 1 - srcBegin = 5B16 - srcEnd = 5B17 - mappingOffset = 0D32 - Mapping = - E6D4 E6D3 -End of Item 02A7 - -Begin of Item 02A8 - Format 1 - srcBegin = 5B32 - srcEnd = 5B40 - mappingOffset = 0D34 - Mapping = - E6D5 8BED D9F8 8BEE 8BEF E6D6 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E6D7 -End of Item 02A8 - -Begin of Item 02A9 - Format 1 - srcBegin = 5B50 - srcEnd = 5D4C - mappingOffset = 0D43 - Mapping = - D7D3 E6DD 8C48 E6DE BFD7 D4D0 8C49 D7D6 - B4E6 CBEF E6DA D8C3 D7CE D0A2 8C4A C3CF - 8C4B 8C4C E6DF BCBE B9C2 E6DB D1A7 8C4D - 8C4E BAA2 C2CF 8C4F D8AB 8C50 8C51 8C52 - CAEB E5EE 8C53 E6DC 8C54 B7F5 8C55 8C56 - 8C57 8C58 C8E6 8C59 8C5A C4F5 8C5B 8C5C - E5B2 C4FE 8C5D CBFC E5B3 D5AC 8C5E D3EE - CAD8 B0B2 8C5F CBCE CDEA 8C60 8C61 BAEA - 8C62 8C63 8C64 E5B5 8C65 E5B4 8C66 D7DA - B9D9 D6E6 B6A8 CDF0 D2CB B1A6 CAB5 8C67 - B3E8 C9F3 BFCD D0FB CAD2 E5B6 BBC2 8C68 - 8C69 8C6A CFDC B9AC 8C6B 8C6C 8C6D 8C6E - D4D7 8C6F 8C70 BAA6 D1E7 CFFC BCD2 8C71 - E5B7 C8DD 8C72 8C73 8C74 BFED B1F6 CBDE - 8C75 8C76 BCC5 8C77 BCC4 D2FA C3DC BFDC - 8C78 8C79 8C7A 8C7B B8BB 8C7C 8C7D 8C7E - C3C2 8C80 BAAE D4A2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C7DE C4AF B2EC - 8C8A B9D1 8C8B 8C8C E5BB C1C8 8C8D 8C8E - D5AF 8C8F 8C90 8C91 8C92 8C93 E5BC 8C94 - E5BE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B4E7 B6D4 CBC2 D1B0 B5BC 8C9C 8C9D CAD9 - 8C9E B7E2 8C9F 8CA0 C9E4 8CA1 BDAB 8CA2 - 8CA3 CEBE D7F0 8CA4 8CA5 8CA6 8CA7 D0A1 - 8CA8 C9D9 8CA9 8CAA B6FB E6D8 BCE2 8CAB - B3BE 8CAC C9D0 8CAD E6D9 B3A2 8CAE 8CAF - 8CB0 8CB1 DECC 8CB2 D3C8 DECD 8CB3 D2A2 - 8CB4 8CB5 8CB6 8CB7 DECE 8CB8 8CB9 8CBA - 8CBB BECD 8CBC 8CBD DECF 8CBE 8CBF 8CC0 - CAAC D2FC B3DF E5EA C4E1 BEA1 CEB2 C4F2 - BED6 C6A8 B2E3 8CC1 8CC2 BED3 8CC3 8CC4 - C7FC CCEB BDEC CEDD 8CC5 8CC6 CABA C6C1 - E5EC D0BC 8CC7 8CC8 8CC9 D5B9 8CCA 8CCB - 8CCC E5ED 8CCD 8CCE 8CCF 8CD0 CAF4 8CD1 - CDC0 C2C5 8CD2 E5EF 8CD3 C2C4 E5F0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E5F8 CDCD - 8CDB C9BD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D2D9 E1A8 8CE3 8CE4 8CE5 8CE6 D3EC - 8CE7 CBEA C6F1 8CE8 8CE9 8CEA 8CEB 8CEC - E1AC 8CED 8CEE 8CEF E1A7 E1A9 8CF0 8CF1 - E1AA E1AF 8CF2 8CF3 B2ED 8CF4 E1AB B8DA - E1AD E1AE E1B0 B5BA E1B1 8CF5 8CF6 8CF7 - 8CF8 8CF9 E1B3 E1B8 8CFA 8CFB 8CFC 8CFD - 8CFE D1D2 8D40 E1B6 E1B5 C1EB 8D41 8D42 - 8D43 E1B7 8D44 D4C0 8D45 E1B2 8D46 E1BA - B0B6 8D47 8D48 8D49 8D4A E1B4 8D4B BFF9 - 8D4C E1B9 8D4D 8D4E E1BB FFFD FFFD FFFD - FFFD FFFD FFFD E1BE FFFD FFFD FFFD FFFD - FFFD FFFD E1BC FFFD FFFD FFFD FFFD FFFD - FFFD D6C5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CFBF 8D68 8D69 E1BD E1BF C2CD 8D6A - B6EB 8D6B D3F8 8D6C 8D6D C7CD 8D6E 8D6F - B7E5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD BEFE 8D7A 8D7B 8D7C 8D7D - 8D7E 8D80 E1C0 E1C1 8D81 8D82 E1C7 B3E7 - FFFD FFFD FFFD FFFD FFFD FFFD C6E9 8D89 - 8D8A 8D8B 8D8C 8D8D B4DE 8D8E D1C2 8D8F - 8D90 8D91 8D92 E1C8 8D93 8D94 E1C6 8D95 - 8D96 8D97 8D98 8D99 E1C5 8D9A E1C3 E1C2 - 8D9B B1C0 8D9C 8D9D 8D9E D5B8 E1C4 8D9F - 8DA0 8DA1 8DA2 8DA3 E1CB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E1CC E1CA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EFFA - 8DB4 8DB5 E1D3 E1D2 C7B6 -End of Item 02A9 - -Begin of Item 02AA - Format 1 - srcBegin = 5D58 - srcEnd = 5D5D - mappingOffset = 0F40 - Mapping = - E1C9 8DC1 8DC2 E1CE 8DC3 E1D0 -End of Item 02AA - -Begin of Item 02AB - Format 1 - srcBegin = 5D69 - srcEnd = 5D74 - mappingOffset = 0F46 - Mapping = - E1D4 8DCF E1D1 E1CD 8DD0 8DD1 E1CF 8DD2 - 8DD3 8DD4 8DD5 E1D5 -End of Item 02AB - -Begin of Item 02AC - Format 2 - srcBegin = 5D82 - destBegin = E1D6 -End of Item 02AC - -Begin of Item 02AD - Format 1 - srcBegin = 5D99 - srcEnd = 5DA0 - mappingOffset = 0F52 - Mapping = - E1D7 8DF9 8DFA 8DFB E1D8 8DFC 8DFD 8DFE -End of Item 02AD - -Begin of Item 02AE - Format 2 - srcBegin = 5DB7 - destBegin = E1DA -End of Item 02AE - -Begin of Item 02AF - Format 1 - srcBegin = 5DC5 - srcEnd = 5DCD - mappingOffset = 0F5A - Mapping = - E1DB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CEA1 -End of Item 02AF - -Begin of Item 02B0 - Format 1 - srcBegin = 5DDB - srcEnd = 5E62 - mappingOffset = 0F63 - Mapping = - E7DD 8E77 B4A8 D6DD 8E78 8E79 D1B2 B3B2 - 8E7A 8E7B B9A4 D7F3 C7C9 BEDE B9AE 8E7C - CED7 8E7D 8E7E B2EE DBCF 8E80 BCBA D2D1 - CBC8 B0CD 8E81 8E82 CFEF 8E83 8E84 8E85 - 8E86 8E87 D9E3 BDED 8E88 8E89 B1D2 CAD0 - B2BC 8E8A CBA7 B7AB 8E8B CAA6 8E8C 8E8D - 8E8E CFA3 8E8F 8E90 E0F8 D5CA E0FB 8E91 - 8E92 E0FA C5C1 CCFB 8E93 C1B1 E0F9 D6E3 - B2AF D6C4 B5DB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B4F8 D6A1 8E9C 8E9D 8E9E - 8E9F 8EA0 CFAF B0EF 8EA1 8EA2 E0FC 8EA3 - 8EA4 8EA5 8EA6 8EA7 E1A1 B3A3 8EA8 8EA9 - E0FD E0FE C3B1 8EAA 8EAB 8EAC 8EAD C3DD - 8EAE E1A2 B7F9 FFFD FFFD FFFD FFFD FFFD - FFFD BBCF FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E1A3 C4BB 8EBC 8EBD 8EBE 8EBF 8EC0 - E1A4 8EC1 8EC2 E1A5 8EC3 8EC4 E1A6 B4B1 -End of Item 02B0 - -Begin of Item 02B1 - Format 1 - srcBegin = 5E72 - srcEnd = 5EDB - mappingOffset = 0FEB - Mapping = - B8C9 C6BD C4EA 8ED4 B2A2 8ED5 D0D2 8ED6 - E7DB BBC3 D3D7 D3C4 8ED7 B9E3 E2CF 8ED8 - 8ED9 8EDA D7AF 8EDB C7EC B1D3 8EDC 8EDD - B4B2 E2D1 8EDE 8EDF 8EE0 D0F2 C2AE E2D0 - 8EE1 BFE2 D3A6 B5D7 E2D2 B5EA 8EE2 C3ED - B8FD 8EE3 B8AE 8EE4 C5D3 B7CF E2D4 8EE5 - 8EE6 8EE7 8EE8 E2D3 B6C8 D7F9 8EE9 8EEA - 8EEB 8EEC 8EED CDA5 8EEE 8EEF 8EF0 8EF1 - 8EF2 E2D8 8EF3 E2D6 CAFC BFB5 D3B9 E2D5 - 8EF4 8EF5 8EF6 8EF7 E2D7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8F40 8F41 8F42 C1AE - C0C8 FFFD FFFD FFFD FFFD FFFD FFFD E2DB - E2DA C0AA 8F49 8F4A C1CE 8F4B 8F4C 8F4D - 8F4E E2DC -End of Item 02B1 - -Begin of Item 02B2 - Format 1 - srcBegin = 5EE8 - srcEnd = 5F40 - mappingOffset = 1055 - Mapping = - E2DD 8F5B E2DE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DBC8 8F65 D1D3 CDA2 - 8F66 8F67 BDA8 8F68 8F69 8F6A DEC3 D8A5 - BFAA DBCD D2EC C6FA C5AA 8F6B 8F6C 8F6D - DEC4 8F6E B1D7 DFAE 8F6F 8F70 8F71 CABD - 8F72 DFB1 8F73 B9AD 8F74 D2FD 8F75 B8A5 - BAEB 8F76 8F77 B3DA 8F78 8F79 8F7A B5DC - D5C5 8F7B 8F7C 8F7D 8F7E C3D6 CFD2 BBA1 - 8F80 E5F3 E5F2 8F81 8F82 E5F4 8F83 CDE4 - 8F84 C8F5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B5AF C7BF 8F8C E5F6 8F8D 8F8E 8F8F - ECB0 -End of Item 02B2 - -Begin of Item 02B3 - Format 1 - srcBegin = 5F50 - srcEnd = 612B - mappingOffset = 10AE - Mapping = - E5E6 8F9F B9E9 B5B1 8FA0 C2BC E5E8 E5E7 - E5E9 8FA1 8FA2 8FA3 8FA4 D2CD 8FA5 8FA6 - 8FA7 E1EA D0CE 8FA8 CDAE 8FA9 D1E5 8FAA - 8FAB B2CA B1EB 8FAC B1F2 C5ED 8FAD 8FAE - D5C3 D3B0 8FAF E1DC 8FB0 8FB1 8FB2 E1DD - 8FB3 D2DB 8FB4 B3B9 B1CB 8FB5 8FB6 8FB7 - CDF9 D5F7 E1DE 8FB8 BEB6 B4FD 8FB9 E1DF - BADC E1E0 BBB2 C2C9 E1E1 8FBA 8FBB 8FBC - D0EC 8FBD CDBD 8FBE 8FBF E1E2 8FC0 B5C3 - C5C7 E1E3 8FC1 8FC2 E1E4 8FC3 8FC4 8FC5 - 8FC6 D3F9 FFFD FFFD FFFD FFFD FFFD FFFD - E1E5 8FCD D1AD 8FCE 8FCF E1E6 CEA2 FFFD - FFFD FFFD FFFD FFFD FFFD E1E7 8FD6 B5C2 - 8FD7 8FD8 8FD9 8FDA E1E8 BBD5 8FDB 8FDC - 8FDD 8FDE 8FDF D0C4 E2E0 B1D8 D2E4 8FE0 - 8FE1 E2E1 8FE2 8FE3 BCC9 C8CC 8FE4 E2E3 - ECFE ECFD DFAF 8FE5 8FE6 8FE7 E2E2 D6BE - CDFC C3A6 8FE8 8FE9 8FEA E3C3 8FEB 8FEC - D6D2 E2E7 8FED 8FEE E2E8 8FEF 8FF0 D3C7 - 8FF1 8FF2 E2EC BFEC 8FF3 E2ED E2E5 8FF4 - 8FF5 B3C0 8FF6 8FF7 8FF8 C4EE 8FF9 8FFA - E2EE 8FFB 8FFC D0C3 8FFD BAF6 E2E9 B7DE - BBB3 CCAC CBCB E2E4 E2E6 E2EA E2EB 8FFE - 9040 9041 E2F7 9042 9043 E2F4 D4F5 E2F3 - 9044 9045 C5AD 9046 D5FA C5C2 B2C0 9047 - 9048 E2EF 9049 E2F2 C1AF CBBC 904A 904B - B5A1 E2F9 904C 904D 904E BCB1 E2F1 D0D4 - D4B9 E2F5 B9D6 E2F6 904F 9050 9051 C7D3 - 9052 9053 9054 9055 9056 E2F0 9057 9058 - 9059 905A 905B D7DC EDA1 905C 905D E2F8 - 905E EDA5 E2FE CAD1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C1B5 9066 BBD0 9067 9068 - BFD6 9069 BAE3 906A 906B CBA1 906C 906D - 906E EDA6 EDA3 906F 9070 EDA2 9071 9072 - 9073 9074 BBD6 EDA7 D0F4 9075 9076 EDA4 - BADE B6F7 E3A1 B6B2 CCF1 B9A7 9077 CFA2 - C7A1 9078 9079 BFD2 907A 907B B6F1 907C - E2FA E2FB E2FD E2FC C4D5 E3A2 907D D3C1 - 907E 9080 9081 E3A7 C7C4 9082 9083 9084 - 9085 CFA4 9086 9087 E3A9 BAB7 9088 9089 - 908A 908B E3A8 908C BBDA 908D E3A3 908E - 908F 9090 E3A4 E3AA 9091 E3A6 9092 CEF2 - D3C6 9093 9094 BBBC 9095 9096 D4C3 9097 - C4FA 9098 9099 EDA8 D0FC E3A5 909A C3F5 - 909B E3AD B1AF 909C E3B2 909D 909E 909F - BCC2 90A0 90A1 E3AC B5BF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C7E9 E3B0 90AA - 90AB 90AC BEAA CDEF 90AD 90AE 90AF 90B0 - 90B1 BBF3 90B2 90B3 90B4 CCE8 90B5 90B6 - E3AF 90B7 E3B1 90B8 CFA7 E3AE 90B9 CEA9 - BBDD 90BA 90BB 90BC 90BD 90BE B5EB BEE5 - B2D2 B3CD 90BF B1B9 E3AB B2D1 B5AC B9DF - B6E8 90C0 90C1 CFEB E3B7 90C2 BBCC 90C3 - 90C4 C8C7 D0CA 90C5 90C6 90C7 90C8 90C9 - E3B8 B3EE 90CA 90CB 90CC 90CD EDA9 90CE - D3FA D3E4 90CF 90D0 90D1 EDAA E3B9 D2E2 - 90D2 90D3 90D4 90D5 90D6 E3B5 90D7 90D8 - 90D9 90DA D3DE 90DB 90DC 90DD 90DE B8D0 - E3B3 90DF 90E0 E3B6 B7DF 90E1 E3B4 C0A2 - 90E2 90E3 90E4 E3BA -End of Item 02B3 - -Begin of Item 02B4 - Format 1 - srcBegin = 613F - srcEnd = 6177 - mappingOffset = 128A - Mapping = - D4B8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9140 B4C8 9141 E3BB 9142 BBC5 9143 C9F7 - 9144 9145 C9E5 9146 9147 9148 C4BD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD EDAB 9150 - 9151 9152 9153 C2FD 9154 9155 9156 9157 - BBDB BFAE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CEBF 915F 9160 9161 9162 E3BC 9163 - BFB6 -End of Item 02B4 - -Begin of Item 02B5 - Format 1 - srcBegin = 618B - srcEnd = 61D4 - mappingOffset = 12C3 - Mapping = - B1EF 9177 9178 D4F7 9179 917A 917B 917C - 917D E3BE 917E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD EDAD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E3BF BAA9 EDAC 9190 - 9191 E3BD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E3C0 FFFD FFFD FFFD - FFFD FFFD FFFD BAB6 91A2 91A3 91A4 B6AE - 91A5 91A6 91A7 91A8 91A9 D0B8 91AA B0C3 - EDAE 91AB 91AC 91AD 91AE 91AF EDAF C0C1 - 91B0 E3C1 -End of Item 02B5 - -Begin of Item 02B6 - Format 2 - srcBegin = 61E6 - destBegin = C5B3 -End of Item 02B6 - -Begin of Item 02B7 - Format 1 - srcBegin = 61F5 - srcEnd = 64E6 - mappingOffset = 130D - Mapping = - E3C2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DCB2 FFFD FFFD FFFD FFFD FFFD - FFFD EDB0 91DF B8EA 91E0 CEEC EAA7 D0E7 - CAF9 C8D6 CFB7 B3C9 CED2 BDE4 91E1 91E2 - E3DE BBF2 EAA8 D5BD 91E3 C6DD EAA9 91E4 - 91E5 91E6 EAAA 91E7 EAAC EAAB 91E8 EAAE - EAAD 91E9 91EA 91EB 91EC BDD8 91ED EAAF - 91EE C2BE 91EF 91F0 91F1 91F2 B4C1 B4F7 - 91F3 91F4 BBA7 91F5 91F6 91F7 91F8 91F9 - ECE6 ECE5 B7BF CBF9 B1E2 91FA ECE7 91FB - 91FC 91FD C9C8 ECE8 ECE9 91FE CAD6 DED0 - B2C5 D4FA 9240 9241 C6CB B0C7 B4F2 C8D3 - 9242 9243 9244 CDD0 9245 9246 BFB8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD BFDB 924E - 924F C7A4 D6B4 9250 C0A9 DED1 C9A8 D1EF - C5A4 B0E7 B3B6 C8C5 9251 9252 B0E2 9253 - 9254 B7F6 9255 9256 C5FA 9257 9258 B6F3 - 9259 D5D2 B3D0 BCBC 925A 925B 925C B3AD - 925D 925E 925F 9260 BEF1 B0D1 FFFD FFFD - FFFD FFFD FFFD FFFD D2D6 CAE3 D7A5 9267 - CDB6 B6B6 BFB9 D5DB 9268 B8A7 C5D7 9269 - 926A 926B DED2 BFD9 C2D5 C7C0 926C BBA4 - B1A8 926D 926E C5EA 926F 9270 C5FB CCA7 - 9271 9272 9273 9274 B1A7 9275 9276 9277 - B5D6 9278 9279 927A C4A8 927B DED3 D1BA - B3E9 927C C3F2 927D 927E B7F7 9280 D6F4 - B5A3 B2F0 C4B4 C4E9 C0AD DED4 9281 B0E8 - C5C4 C1E0 9282 B9D5 9283 BEDC CDD8 B0CE - 9284 CDCF DED6 BED0 D7BE DED5 D5D0 B0DD - 9285 9286 C4E2 9287 9288 C2A3 BCF0 9289 - D3B5 C0B9 C5A1 B2A6 D4F1 928A 928B C0A8 - CAC3 DED7 D5FC 928C B9B0 928D C8AD CBA9 - 928E DED9 BFBD 928F 9290 9291 9292 C6B4 - D7A7 CAB0 C4C3 9293 B3D6 B9D2 9294 9295 - 9296 9297 D6B8 EAFC B0B4 9298 9299 929A - 929B BFE6 929C 929D CCF4 929E 929F 92A0 - 92A1 CDDA 92A2 92A3 92A4 D6BF C2CE 92A5 - CECE CCA2 D0AE C4D3 B5B2 DED8 D5F5 BCB7 - BBD3 92A6 92A7 B0A4 92A8 C5B2 B4EC 92A9 - 92AA 92AB D5F1 92AC 92AD EAFD FFFD FFFD - FFFD FFFD FFFD FFFD DEDA CDA6 92B4 92B5 - CDEC 92B6 92B7 92B8 92B9 CEE6 DEDC 92BA - CDB1 C0A6 92BB 92BC D7BD 92BD DEDB B0C6 - BAB4 C9D3 C4F3 BEE8 92BE 92BF 92C0 92C1 - B2B6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C0CC CBF0 92CA BCF1 BBBB B5B7 92CB - 92CC 92CD C5F5 92CE DEE6 92CF 92D0 92D1 - DEE3 BEDD 92D2 92D3 DEDF 92D4 92D5 92D6 - 92D7 B4B7 BDDD 92D8 92D9 DEE0 C4ED 92DA - 92DB 92DC 92DD CFC6 92DE B5E0 92DF 92E0 - 92E1 92E2 B6DE CADA B5F4 DEE5 92E3 D5C6 - 92E4 DEE1 CCCD C6FE 92E5 C5C5 92E6 92E7 - 92E8 D2B4 92E9 BEF2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C2D3 92F1 CCBD B3B8 92F2 - BDD3 92F3 BFD8 CDC6 D1DA B4EB 92F4 DEE4 - DEDD DEE7 92F5 EAFE 92F6 92F7 C2B0 DEE2 - 92F8 92F9 D6C0 B5A7 92FA B2F4 92FB DEE8 - 92FC DEF2 92FD 92FE 9340 9341 9342 DEED - 9343 DEF1 9344 9345 C8E0 9346 9347 9348 - D7E1 DEEF C3E8 CCE1 9349 B2E5 934A 934B - 934C D2BE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DEEE 9354 DEEB CED5 9355 B4A7 9356 - 9357 9358 9359 935A BFAB BEBE 935B 935C - BDD2 935D 935E 935F 9360 DEE9 9361 D4AE - 9362 DEDE 9363 DEEA 9364 9365 9366 9367 - C0BF 9368 DEEC B2F3 B8E9 C2A7 9369 936A - BDC1 936B 936C 936D 936E 936F DEF5 DEF8 - 9370 9371 B2AB B4A4 9372 9373 B4EA C9A6 - FFFD FFFD FFFD FFFD FFFD FFFD DEF6 CBD1 - 937A B8E3 937B DEF7 DEFA 937C 937D 937E - 9380 DEF9 9381 9382 9383 CCC2 9384 B0E1 - B4EE FFFD FFFD FFFD FFFD FFFD FFFD E5BA - 938B 938C 938D 938E 938F D0AF 9390 9391 - B2EB 9392 EBA1 9393 DEF4 9394 9395 C9E3 - DEF3 B0DA D2A1 B1F7 9396 CCAF FFFD FFFD - FFFD FFFD FFFD FFFD FFFD DEF0 939E CBA4 - 939F 93A0 93A1 D5AA 93A2 93A3 93A4 93A5 - 93A6 DEFB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B4DD 93AF C4A6 93B0 93B1 93B2 - DEFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C3FE C4A1 DFA1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C1CC 93C4 DEFC - BEEF 93C5 C6B2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B3C5 C8F6 93CF 93D0 - CBBA DEFE 93D1 93D2 DFA4 93D3 93D4 93D5 - 93D6 D7B2 93D7 93D8 93D9 93DA 93DB B3B7 - 93DC 93DD 93DE 93DF C1C3 93E0 93E1 C7CB - B2A5 B4E9 93E2 D7AB 93E3 93E4 93E5 93E6 - C4EC 93E7 DFA2 DFA3 93E8 DFA5 93E9 BAB3 - 93EA 93EB 93EC DFA6 93ED C0DE 93EE 93EF - C9C3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B2D9 C7E6 93F7 DFA7 93F8 C7DC 93F9 93FA - 93FB 93FC DFA8 EBA2 93FD 93FE 9440 9441 - 9442 CBD3 9443 9444 9445 DFAA 9446 DFA9 - 9447 B2C1 -End of Item 02B7 - -Begin of Item 02B8 - Format 1 - srcBegin = 6500 - srcEnd = 6577 - mappingOffset = 15FF - Mapping = - C5CA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DFAB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D4DC 9471 9472 9473 9474 9475 - C8C1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9480 9481 9482 DFAC 9483 9484 - 9485 9486 9487 BEF0 9488 9489 DFAD D6A7 - 948A 948B 948C 948D EAB7 EBB6 CAD5 948E - D8FC B8C4 948F B9A5 9490 9491 B7C5 D5FE - 9492 9493 9494 9495 9496 B9CA 9497 9498 - D0A7 F4CD 9499 949A B5D0 949B 949C C3F4 - 949D BEC8 949E 949F 94A0 EBB7 B0BD 94A1 - 94A2 BDCC 94A3 C1B2 94A4 B1D6 B3A8 94A5 - 94A6 94A7 B8D2 C9A2 94A8 94A9 B6D8 94AA - 94AB 94AC 94AD EBB8 BEB4 94AE 94AF 94B0 - CAFD 94B1 C7C3 94B2 D5FB 94B3 94B4 B7F3 -End of Item 02B8 - -Begin of Item 02B9 - Format 1 - srcBegin = 6587 - srcEnd = 66BE - mappingOffset = 1677 - Mapping = - CEC4 94C4 94C5 94C6 D5AB B1F3 94C7 94C8 - 94C9 ECB3 B0DF 94CA ECB5 94CB 94CC 94CD - B6B7 94CE C1CF 94CF F5FA D0B1 94D0 94D1 - D5E5 94D2 CED3 94D3 94D4 BDEF B3E2 94D5 - B8AB 94D6 D5B6 94D7 EDBD 94D8 B6CF 94D9 - CBB9 D0C2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B7BD 94E2 94E3 ECB6 CAA9 94E4 - 94E5 94E6 C5D4 94E7 ECB9 ECB8 C2C3 ECB7 - 94E8 94E9 94EA 94EB D0FD ECBA 94EC ECBB - D7E5 94ED 94EE ECBC 94EF 94F0 94F1 ECBD - C6EC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CEDE 94FA BCC8 94FB 94FC C8D5 B5A9 - BEC9 D6BC D4E7 94FD 94FE D1AE D0F1 EAB8 - EAB9 EABA BAB5 9540 9541 9542 9543 CAB1 - BFF5 9544 9545 CDFA 9546 9547 9548 9549 - 954A EAC0 954B B0BA EABE 954C 954D C0A5 - 954E 954F 9550 EABB 9551 B2FD 9552 C3F7 - BBE8 9553 9554 9555 D2D7 CEF4 EABF 9556 - 9557 9558 EABC 9559 955A 955B EAC3 955C - D0C7 D3B3 955D 955E 955F 9560 B4BA 9561 - C3C1 D7F2 9562 9563 9564 9565 D5D1 9566 - CAC7 9567 EAC5 9568 9569 EAC4 EAC7 EAC6 - 956A 956B 956C 956D 956E D6E7 956F CFD4 - 9570 9571 EACB 9572 BBCE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BDFA C9CE 957A 957B - EACC 957C 957D C9B9 CFFE EACA D4CE EACD - EACF 957E 9580 CDED 9581 9582 9583 9584 - EAC9 9585 EACE 9586 9587 CEEE 9588 BBDE - 9589 B3BF 958A 958B 958C 958D 958E C6D5 - BEB0 CEFA 958F 9590 9591 C7E7 9592 BEA7 - EAD0 9593 9594 D6C7 9595 9596 9597 C1C0 - 9598 9599 959A D4DD 959B EAD1 959C 959D - CFBE 959E 959F 95A0 95A1 EAD2 95A2 95A3 - 95A4 95A5 CAEE 95A6 95A7 95A8 95A9 C5AF - B0B5 95AA 95AB 95AC 95AD 95AE EAD4 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EAD3 F4DF 95B8 95B9 95BA 95BB 95BC C4BA - 95BD 95BE 95BF 95C0 95C1 B1A9 95C2 95C3 - 95C4 95C5 E5DF 95C6 95C7 95C8 95C9 EAD5 -End of Item 02B9 - -Begin of Item 02BA - Format 1 - srcBegin = 66D9 - srcEnd = 6912 - mappingOffset = 17AF - Mapping = - CAEF 95E4 EAD6 EAD7 C6D8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EAD8 95ED 95EE - EAD9 FFFD FFFD FFFD FFFD FFFD FFFD D4BB - 95F5 C7FA D2B7 B8FC 95F6 95F7 EAC2 95F8 - B2DC 95F9 95FA C2FC 95FB D4F8 CCE6 D7EE - 95FC 95FD 95FE 9640 9641 9642 9643 D4C2 - D3D0 EBC3 C5F3 9644 B7FE 9645 9646 EBD4 - 9647 9648 9649 CBB7 EBDE 964A C0CA 964B - 964C 964D CDFB 964E B3AF 964F C6DA FFFD - FFFD FFFD FFFD FFFD FFFD EBFC 9656 C4BE - 9657 CEB4 C4A9 B1BE D4FD 9658 CAF5 9659 - D6EC 965A 965B C6D3 B6E4 965C 965D 965E - 965F BBFA 9660 9661 D0E0 9662 9663 C9B1 - 9664 D4D3 C8A8 9665 9666 B8CB 9667 E8BE - C9BC 9668 9669 E8BB 966A C0EE D0D3 B2C4 - B4E5 966B E8BC 966C 966D D5C8 966E 966F - 9670 9671 9672 B6C5 9673 E8BD CAF8 B8DC - CCF5 9674 9675 9676 C0B4 9677 9678 D1EE - E8BF E8C2 9679 967A BABC 967B B1AD BDDC - 967C EABD E8C3 967D E8C6 967E E8CB 9680 - 9681 9682 9683 E8CC 9684 CBC9 B0E5 9685 - BCAB 9686 9687 B9B9 9688 9689 E8C1 968A - CDF7 968B E8CA 968C 968D 968E 968F CEF6 - 9690 9691 9692 9693 D5ED 9694 C1D6 E8C4 - 9695 C3B6 9696 B9FB D6A6 E8C8 9697 9698 - 9699 CAE0 D4E6 969A E8C0 969B E8C5 E8C7 - 969C C7B9 B7E3 969D E8C9 969E BFDD E8D2 - 969F 96A0 E8D7 96A1 E8D5 BCDC BCCF E8DB - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E8DE 96AA E8DA B1FA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B0D8 C4B3 - B8CC C6E2 C8BE C8E1 96B5 96B6 96B7 E8CF - E8D4 E8D6 96B8 B9F1 E8D8 D7F5 96B9 C4FB - 96BA E8DC 96BB 96BC B2E9 96BD 96BE 96BF - E8D1 96C0 96C1 BCED 96C2 96C3 BFC2 E8CD - D6F9 96C4 C1F8 B2F1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E8DF 96CD CAC1 E8D9 - 96CE 96CF 96D0 96D1 D5A4 96D2 B1EA D5BB - E8CE E8D0 B6B0 E8D3 96D3 E8DD C0B8 96D4 - CAF7 96D5 CBA8 96D6 96D7 C6DC C0F5 96D8 - 96D9 96DA 96DB 96DC E8E9 96DD 96DE 96DF - D0A3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E8F2 D6EA FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E8E0 E8E1 96EE 96EF 96F0 D1F9 BACB - B8F9 96F1 96F2 B8F1 D4D4 E8EF 96F3 E8EE - E8EC B9F0 CCD2 E8E6 CEA6 BFF2 96F4 B0B8 - E8F1 E8F0 96F5 D7C0 96F6 E8E4 96F7 CDA9 - C9A3 96F8 BBB8 BDDB E8EA FFFD FFFD FFFD - FFFD FFFD FFFD 9740 9741 9742 9743 E8E2 - E8E3 E8E5 B5B5 E8E7 C7C5 E8EB E8ED BDB0 - D7AE 9744 E8F8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E8F5 974D CDB0 E8F6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C1BA 9757 E8E8 9758 C3B7 B0F0 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E8F4 9761 - 9762 9763 E8F7 9764 9765 9766 B9A3 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C9D2 9771 9772 9773 C3CE CEE0 C0E6 - 9774 9775 9776 9777 CBF3 9778 CCDD D0B5 - 9779 977A CAE1 977B E8F3 977C 977D 977E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BCEC - 9787 E8F9 FFFD FFFD FFFD FFFD FFFD FFFD - C3DE 978E C6E5 978F B9F7 9790 9791 9792 - 9793 B0F4 9794 9795 D7D8 9796 9797 BCAC - 9798 C5EF 9799 979A 979B 979C 979D CCC4 - 979E 979F E9A6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C9AD 97AA E9A2 - C0E2 97AB 97AC 97AD BFC3 97AE 97AF 97B0 - E8FE B9D7 97B1 E8FB 97B2 97B3 97B4 97B5 - E9A4 97B6 97B7 97B8 D2CE 97B9 97BA 97BB - 97BC 97BD E9A3 97BE D6B2 D7B5 97BF E9A7 - 97C0 BDB7 -End of Item 02BA - -Begin of Item 02BB - Format 1 - srcBegin = 691F - srcEnd = 6942 - mappingOffset = 19E9 - Mapping = - E8FC E8FD 97CD 97CE 97CF E9A1 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD CDD6 97D8 - 97D9 D2AC 97DA 97DB 97DC E9B2 97DD 97DE - 97DF 97E0 E9A9 97E1 97E2 97E3 B4AA 97E4 - B4BB 97E5 97E6 E9AB -End of Item 02BB - -Begin of Item 02BC - Format 1 - srcBegin = 6954 - srcEnd = 69E0 - mappingOffset = 1A0D - Mapping = - D0A8 97F8 97F9 E9A5 97FA 97FB B3FE 97FC - 97FD E9AC C0E3 97FE E9AA 9840 9841 E9B9 - 9842 9843 E9B8 9844 9845 9846 9847 E9AE - 9848 9849 E8FA 984A 984B E9A8 984C 984D - 984E 984F 9850 BFAC E9B1 E9BA 9851 9852 - C2A5 9853 9854 9855 E9AF 9856 B8C5 9857 - E9AD 9858 D3DC E9B4 E9B5 E9B7 9859 985A - 985B E9C7 FFFD FFFD FFFD FFFD FFFD FFFD - C0C6 E9C5 9862 9863 E9B0 9864 9865 E9BB - B0F1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E9BC D5A5 9870 9871 E9BE - 9872 E9BF 9873 9874 9875 E9C1 9876 9877 - C1F1 9878 9879 C8B6 987A 987B 987C E9BD - 987D 987E 9880 9881 9882 E9C2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E9C3 988B - E9B3 988C E9B6 988D BBB1 988E 988F 9890 - E9C0 FFFD FFFD FFFD FFFD FFFD FFFD BCF7 - 9897 9898 9899 E9C4 E9C6 -End of Item 02BC - -Begin of Item 02BD - Format 1 - srcBegin = 69ED - srcEnd = 6A0A - mappingOffset = 1A9A - Mapping = - E9CA 98A6 98A7 98A8 98A9 E9CE FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B2DB 98B4 E9C8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B7AE -End of Item 02BD - -Begin of Item 02BE - Format 1 - srcBegin = 6A17 - srcEnd = 6A65 - mappingOffset = 1AB8 - Mapping = - E9CB E9CC FFFD FFFD FFFD FFFD FFFD FFFD - D5C1 98D1 C4A3 FFFD FFFD FFFD FFFD FFFD - FFFD E9D8 98D8 BAE1 98D9 98DA 98DB 98DC - E9C9 98DD D3A3 98DE 98DF 98E0 E9D4 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E9D7 E9D0 - 98E8 98E9 98EA 98EB 98EC E9CF 98ED 98EE - C7C1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E9D2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E9D9 B3C8 98FE E9D3 9940 9941 9942 - 9943 9944 CFF0 9945 9946 9947 E9CD -End of Item 02BE - -Begin of Item 02BF - Format 1 - srcBegin = 6A71 - srcEnd = 6AAC - mappingOffset = 1B07 - Mapping = - B3F7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E9D6 995A 995B E9DA 995C 995D 995E CCB4 - 995F 9960 9961 CFAD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E9D5 996B E9DC - E9DB 996C 996D 996E 996F 9970 E9DE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E9D1 - FFFD FFFD FFFD FFFD FFFD FFFD 9980 9981 - E9DD 9982 E9DF C3CA -End of Item 02BF - -Begin of Item 02C0 - Format 1 - srcBegin = 6B20 - srcEnd = 6B4C - mappingOffset = 1B43 - Mapping = - C7B7 B4CE BBB6 D0C0 ECA3 99F6 99F7 C5B7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9A40 - 9A41 9A42 D3FB 9A43 9A44 9A45 9A46 ECA4 - 9A47 ECA5 C6DB 9A48 9A49 9A4A BFEE 9A4B - 9A4C 9A4D 9A4E ECA6 9A4F 9A50 ECA7 D0AA - 9A51 C7B8 9A52 9A53 B8E8 -End of Item 02C0 - -Begin of Item 02C1 - Format 1 - srcBegin = 6B59 - srcEnd = 6B6A - mappingOffset = 1B70 - Mapping = - ECA8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D6B9 D5FD B4CB B2BD CEE4 C6E7 9A68 - 9A69 CDE1 -End of Item 02C1 - -Begin of Item 02C2 - Format 1 - srcBegin = 6B79 - srcEnd = 6E5F - mappingOffset = 1B82 - Mapping = - B4F5 9A78 CBC0 BCDF 9A79 9A7A 9A7B 9A7C - E9E2 E9E3 D1EA E9E5 9A7D B4F9 E9E4 9A7E - D1B3 CAE2 B2D0 9A80 E9E8 9A81 9A82 9A83 - 9A84 E9E6 E9E7 9A85 9A86 D6B3 9A87 9A88 - 9A89 E9E9 E9EA 9A8A 9A8B 9A8C 9A8D 9A8E - E9EB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E9EC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD ECAF C5B9 B6CE 9A9F D2F3 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B5EE 9AA7 - BBD9 ECB1 9AA8 9AA9 D2E3 9AAA 9AAB 9AAC - 9AAD 9AAE CEE3 9AAF C4B8 9AB0 C3BF 9AB1 - 9AB2 B6BE D8B9 B1C8 B1CF B1D1 C5FE 9AB3 - B1D0 9AB4 C3AB 9AB5 9AB6 9AB7 9AB8 9AB9 - D5B1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD EBA4 BAC1 9AC2 9AC3 9AC4 CCBA 9AC5 - 9AC6 9AC7 EBA5 9AC8 EBA7 9AC9 9ACA 9ACB - EBA8 9ACC 9ACD 9ACE EBA6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD EBA9 EBAB EBAA 9AD6 - 9AD7 9AD8 9AD9 9ADA EBAC 9ADB CACF D8B5 - C3F1 9ADC C3A5 C6F8 EBAD C4CA 9ADD EBAE - EBAF EBB0 B7D5 9ADE 9ADF 9AE0 B7FA 9AE1 - EBB1 C7E2 9AE2 EBB3 9AE3 BAA4 D1F5 B0B1 - EBB2 EBB4 9AE4 9AE5 9AE6 B5AA C2C8 C7E8 - 9AE7 EBB5 9AE8 CBAE E3DF 9AE9 9AEA D3C0 - 9AEB 9AEC 9AED 9AEE D9DB 9AEF 9AF0 CDA1 - D6AD C7F3 9AF1 9AF2 9AF3 D9E0 BBE3 9AF4 - BABA E3E2 9AF5 9AF6 9AF7 9AF8 9AF9 CFAB - 9AFA 9AFB 9AFC E3E0 C9C7 9AFD BAB9 9AFE - 9B40 9B41 D1B4 E3E1 C8EA B9AF BDAD B3D8 - CEDB 9B42 9B43 CCC0 9B44 9B45 9B46 E3E8 - E3E9 CDF4 9B47 9B48 9B49 9B4A 9B4B CCAD - 9B4C BCB3 9B4D E3EA 9B4E E3EB 9B4F 9B50 - D0DA 9B51 9B52 9B53 C6FB B7DA 9B54 9B55 - C7DF D2CA CED6 9B56 E3E4 E3EC 9B57 C9F2 - B3C1 9B58 9B59 E3E7 9B5A 9B5B C6E3 E3E5 - 9B5C 9B5D EDB3 E3E6 9B5E 9B5F 9B60 9B61 - C9B3 9B62 C5E6 9B63 9B64 9B65 B9B5 9B66 - C3BB 9B67 E3E3 C5BD C1A4 C2D9 B2D7 9B68 - E3ED BBA6 C4AD 9B69 E3F0 BEDA 9B6A 9B6B - E3FB E3F5 BAD3 9B6C 9B6D 9B6E 9B6F B7D0 - D3CD 9B70 D6CE D5D3 B9C1 D5B4 D1D8 9B71 - 9B72 9B73 9B74 D0B9 C7F6 9B75 9B76 9B77 - C8AA B2B4 9B78 C3DA 9B79 9B7A 9B7B E3EE - 9B7C 9B7D E3FC E3EF B7A8 E3F7 E3F4 9B7E - 9B80 9B81 B7BA 9B82 9B83 C5A2 9B84 E3F6 - C5DD B2A8 C6FC 9B85 C4E0 9B86 9B87 D7A2 - 9B88 C0E1 E3F9 9B89 9B8A E3FA E3FD CCA9 - E3F3 9B8B D3BE 9B8C B1C3 EDB4 E3F1 E3F2 - 9B8D E3F8 D0BA C6C3 D4F3 E3FE 9B8E 9B8F - BDE0 9B90 9B91 E4A7 9B92 9B93 E4A6 9B94 - 9B95 9B96 D1F3 E4A3 9B97 E4A9 9B98 9B99 - 9B9A C8F7 9B9B 9B9C 9B9D 9B9E CFB4 9B9F - E4A8 E4AE C2E5 9BA0 9BA1 B6B4 FFFD FFFD - FFFD FFFD FFFD FFFD BDF2 9BA8 E4A2 9BA9 - 9BAA BAE9 E4AA 9BAB 9BAC E4AC 9BAD 9BAE - B6FD D6DE E4B2 9BAF E4AD 9BB0 9BB1 9BB2 - E4A1 9BB3 BBEE CDDD C7A2 C5C9 9BB4 9BB5 - C1F7 9BB6 E4A4 9BB7 C7B3 BDAC BDBD E4A5 - 9BB8 D7C7 B2E2 9BB9 E4AB BCC3 E4AF 9BBA - BBEB E4B0 C5A8 E4B1 9BBB 9BBC 9BBD 9BBE - D5E3 BFA3 9BBF E4BA 9BC0 E4B7 9BC1 E4BB - 9BC2 9BC3 E4BD 9BC4 9BC5 C6D6 9BC6 9BC7 - BAC6 C0CB 9BC8 9BC9 9BCA B8A1 E4B4 9BCB - 9BCC 9BCD 9BCE D4A1 9BCF 9BD0 BAA3 BDFE - 9BD1 9BD2 9BD3 E4BC 9BD4 9BD5 9BD6 9BD7 - 9BD8 CDBF 9BD9 9BDA C4F9 9BDB 9BDC CFFB - C9E6 9BDD 9BDE D3BF 9BDF CFD1 9BE0 9BE1 - E4B3 9BE2 E4B8 E4B9 CCE9 9BE3 9BE4 9BE5 - 9BE6 9BE7 CCCE 9BE8 C0D4 E4B5 C1B0 E4B6 - CED0 9BE9 BBC1 B5D3 9BEA C8F3 BDA7 D5C7 - C9AC B8A2 E4CA 9BEB 9BEC E4CC D1C4 9BED - 9BEE D2BA 9BEF 9BF0 BAAD 9BF1 9BF2 BAD4 - FFFD FFFD FFFD FFFD FFFD FFFD E4C3 B5ED - 9BF9 9BFA 9BFB D7CD E4C0 CFFD E4BF 9BFC - 9BFD 9BFE C1DC CCCA 9C40 9C41 9C42 9C43 - CAE7 9C44 9C45 9C46 9C47 C4D7 9C48 CCD4 - E4C8 9C49 9C4A 9C4B E4C7 E4C1 9C4C E4C4 - B5AD 9C4D 9C4E D3D9 9C4F E4C6 9C50 9C51 - 9C52 9C53 D2F9 B4E3 9C54 BBB4 9C55 9C56 - C9EE 9C57 B4BE 9C58 9C59 9C5A BBEC 9C5B - D1CD 9C5C CCED EDB5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C7E5 9C65 9C66 9C67 - 9C68 D4A8 9C69 E4CB D7D5 E4C2 9C6A BDA5 - E4C5 9C6B 9C6C D3E6 9C6D E4C9 C9F8 9C6E - 9C6F E4BE 9C70 9C71 D3E5 9C72 9C73 C7FE - B6C9 9C74 D4FC B2B3 E4D7 9C75 9C76 9C77 - CEC2 9C78 E4CD 9C79 CEBC 9C7A B8DB 9C7B - 9C7C E4D6 9C7D BFCA 9C7E 9C80 9C81 D3CE - 9C82 C3EC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C5C8 E4D8 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CDC4 E4CF 9C93 9C94 - 9C95 9C96 E4D4 E4D5 9C97 BAFE 9C98 CFE6 - 9C99 9C9A D5BF 9C9B 9C9C 9C9D E4D2 -End of Item 02C2 - -Begin of Item 02C3 - Format 1 - srcBegin = 6E6B - srcEnd = 6E6E - mappingOffset = 1E69 - Mapping = - E4D0 9CA9 9CAA E4CE -End of Item 02C3 - -Begin of Item 02C4 - Format 1 - srcBegin = 6E7E - srcEnd = 6F8E - mappingOffset = 1E6D - Mapping = - CDE5 CAAA 9CBA 9CBB 9CBC C0A3 9CBD BDA6 - E4D3 9CBE 9CBF B8C8 9CC0 9CC1 9CC2 9CC3 - 9CC4 E4E7 D4B4 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E4DB 9CCC 9CCD 9CCE C1EF 9CCF - 9CD0 E4E9 9CD1 9CD2 D2E7 9CD3 9CD4 E4DF - 9CD5 E4E0 9CD6 9CD7 CFAA 9CD8 9CD9 9CDA - 9CDB CBDD 9CDC E4DA E4D1 9CDD E4E5 9CDE - C8DC E4E3 9CDF 9CE0 C4E7 E4E2 9CE1 E4E1 - 9CE2 9CE3 9CE4 B3FC E4E8 9CE5 9CE6 9CE7 - 9CE8 B5E1 9CE9 9CEA 9CEB D7CC 9CEC 9CED - 9CEE E4E6 9CEF BBAC 9CF0 D7D2 CCCF EBF8 - 9CF1 E4E4 9CF2 9CF3 B9F6 9CF4 9CF5 9CF6 - D6CD E4D9 E4DC C2FA E4DE 9CF7 C2CB C0C4 - C2D0 9CF8 B1F5 CCB2 FFFD FFFD FFFD FFFD - FFFD FFFD 9D40 9D41 9D42 9D43 B5CE 9D44 - 9D45 9D46 9D47 E4EF FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C6AF 9D50 9D51 9D52 - C6E1 9D53 9D54 E4F5 9D55 9D56 9D57 9D58 - 9D59 C2A9 9D5A 9D5B 9D5C C0EC D1DD E4EE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C4AE 9D67 9D68 9D69 E4ED 9D6A - 9D6B 9D6C 9D6D E4F6 E4F4 C2FE 9D6E E4DD - 9D6F E4F0 9D70 CAFE 9D71 D5C4 9D72 9D73 - E4F1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D1FA 9D7B 9D7C 9D7D 9D7E 9D80 9D81 9D82 - E4EB E4EC 9D83 9D84 9D85 E4F2 9D86 CEAB - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C5CB 9D91 9D92 9D93 C7B1 9D94 - C2BA 9D95 9D96 9D97 E4EA 9D98 9D99 9D9A - C1CA FFFD FFFD FFFD FFFD FFFD FFFD CCB6 - B3B1 9DA1 9DA2 9DA3 E4FB 9DA4 E4F3 9DA5 - 9DA6 9DA7 E4FA 9DA8 E4FD 9DA9 E4FC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B3CE 9DB1 - 9DB2 9DB3 B3BA E4F7 9DB4 9DB5 E4F9 E4F8 - C5EC -End of Item 02C4 - -Begin of Item 02C5 - Format 1 - srcBegin = 6F9C - srcEnd = 6FA7 - mappingOffset = 1F7E - Mapping = - C0BD 9DC3 9DC4 9DC5 9DC6 D4E8 9DC7 9DC8 - 9DC9 9DCA 9DCB E5A2 -End of Item 02C5 - -Begin of Item 02C6 - Format 1 - srcBegin = 6FB3 - srcEnd = 6FD2 - mappingOffset = 1F8A - Mapping = - B0C4 9DD7 9DD8 E5A4 9DD9 9DDA E5A3 FFFD - FFFD FFFD FFFD FFFD FFFD BCA4 9DE1 E5A5 - FFFD FFFD FFFD FFFD FFFD FFFD E5A1 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E4FE B1F4 -End of Item 02C6 - -Begin of Item 02C7 - Format 1 - srcBegin = 6FDE - srcEnd = 6FEF - mappingOffset = 1FAA - Mapping = - E5A8 9DFA E5A9 E5A6 9DFB 9DFC 9DFD 9DFE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E5A7 E5AA -End of Item 02C7 - -Begin of Item 02C8 - Format 1 - srcBegin = 7011 - srcEnd = 7023 - mappingOffset = 1FBC - Mapping = - C6D9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E5AB E5AD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E5AC -End of Item 02C8 - -Begin of Item 02C9 - Format 1 - srcBegin = 7035 - srcEnd = 7039 - mappingOffset = 1FCF - Mapping = - E5AF 9E8A 9E8B 9E8C E5AE -End of Item 02C9 - -Begin of Item 02CA - Format 1 - srcBegin = 704C - srcEnd = 704F - mappingOffset = 1FD4 - Mapping = - B9E0 9E9F 9EA0 E5B0 -End of Item 02CA - -Begin of Item 02CB - Format 2 - srcBegin = 705E - destBegin = E5B1 -End of Item 02CB - -Begin of Item 02CC - Format 1 - srcBegin = 706B - srcEnd = 709D - mappingOffset = 1FD8 - Mapping = - BBF0 ECE1 C3F0 9EBB B5C6 BBD2 9EBC 9EBD - 9EBE 9EBF C1E9 D4EE 9EC0 BEC4 9EC1 9EC2 - 9EC3 D7C6 9EC4 D4D6 B2D3 ECBE 9EC5 9EC6 - 9EC7 9EC8 EAC1 9EC9 9ECA 9ECB C2AF B4B6 - 9ECC 9ECD 9ECE D1D7 9ECF 9ED0 9ED1 B3B4 - 9ED2 C8B2 BFBB ECC0 9ED3 9ED4 D6CB 9ED5 - 9ED6 ECBF ECC1 -End of Item 02CC - -Begin of Item 02CD - Format 1 - srcBegin = 70AB - srcEnd = 70CA - mappingOffset = 200B - Mapping = - ECC5 BEE6 CCBF C5DA BEBC 9EE4 ECC6 9EE5 - B1FE 9EE6 9EE7 9EE8 ECC4 D5A8 B5E3 9EE9 - ECC2 C1B6 B3E3 9EEA 9EEB ECC3 CBB8 C0C3 - CCFE 9EEC 9EED 9EEE 9EEF C1D2 9EF0 ECC8 -End of Item 02CD - -Begin of Item 02CE - Format 1 - srcBegin = 70D8 - srcEnd = 70FD - mappingOffset = 202B - Mapping = - BAE6 C0D3 9EFE D6F2 9F40 9F41 9F42 D1CC - 9F43 9F44 9F45 9F46 BFBE 9F47 B7B3 C9D5 - ECC7 BBE2 9F48 CCCC BDFD C8C8 9F49 CFA9 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD CDE9 - 9F51 C5EB 9F52 9F53 9F54 B7E9 -End of Item 02CE - -Begin of Item 02CF - Format 1 - srcBegin = 7109 - srcEnd = 711A - mappingOffset = 2051 - Mapping = - D1C9 BAB8 9F60 9F61 9F62 9F63 9F64 ECC9 - 9F65 9F66 ECCA 9F67 BBC0 ECCB 9F68 ECE2 - B1BA B7D9 -End of Item 02CF - -Begin of Item 02D0 - Format 1 - srcBegin = 7126 - srcEnd = 7136 - mappingOffset = 2063 - Mapping = - BDB9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD ECCC D1E6 ECCD 9F7C 9F7D 9F7E 9F80 - C8BB -End of Item 02D0 - -Begin of Item 02D1 - Format 1 - srcBegin = 7145 - srcEnd = 714E - mappingOffset = 2074 - Mapping = - ECD1 9F8F 9F90 9F91 9F92 ECD3 9F93 BBCD - 9F94 BCE5 -End of Item 02D1 - -Begin of Item 02D2 - Format 1 - srcBegin = 715C - srcEnd = 71F9 - mappingOffset = 207E - Mapping = - ECCF 9FA2 C9B7 9FA3 9FA4 9FA5 9FA6 9FA7 - C3BA 9FA8 ECE3 D5D5 ECD0 9FA9 9FAA 9FAB - 9FAC 9FAD D6F3 9FAE 9FAF 9FB0 ECD2 ECCE - 9FB1 9FB2 9FB3 9FB4 ECD4 9FB5 ECD5 9FB6 - 9FB7 C9BF FFFD FFFD FFFD FFFD FFFD FFFD - CFA8 9FBE 9FBF 9FC0 9FC1 9FC2 D0DC 9FC3 - 9FC4 9FC5 9FC6 D1AC 9FC7 9FC8 9FC9 9FCA - C8DB 9FCB 9FCC 9FCD ECD6 CEF5 9FCE 9FCF - 9FD0 9FD1 9FD2 CAEC ECDA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD ECD9 9FDA 9FDB 9FDC - B0BE FFFD FFFD FFFD FFFD FFFD FFFD ECD7 - 9FE3 ECD8 9FE4 9FE5 9FE6 ECE4 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C8BC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C1C7 9FFA 9FFB 9FFC 9FFD 9FFE - ECDC D1E0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD ECDB A04A A04B A04C - A04D D4EF A04E ECDD FFFD FFFD FFFD FFFD - FFFD FFFD DBC6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD ECDE -End of Item 02D2 - -Begin of Item 02D3 - Format 2 - srcBegin = 7206 - destBegin = B1AC -End of Item 02D3 - -Begin of Item 02D4 - Format 1 - srcBegin = 721B - srcEnd = 7292 - mappingOffset = 211C - Mapping = - A080 A081 ECDF FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD ECE0 A08C D7A6 - A08D C5C0 A08E A08F A090 EBBC B0AE A091 - A092 A093 BEF4 B8B8 D2AF B0D6 B5F9 A094 - D8B3 A095 CBAC A096 E3DD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C6AC B0E6 A09E A09F - A0A0 C5C6 EBB9 A0A1 A0A2 A0A3 A0A4 EBBA - A0A5 A0A6 A0A7 EBBB A0A8 A0A9 D1C0 A0AA - C5A3 A0AB EAF2 A0AC C4B2 A0AD C4B5 C0CE - A0AE A0AF A0B0 EAF3 C4C1 A0B1 CEEF A0B2 - A0B3 A0B4 A0B5 EAF0 EAF4 A0B6 A0B7 C9FC - A0B8 A0B9 C7A3 A0BA A0BB A0BC CCD8 CEFE - A0BD A0BE A0BF EAF5 EAF6 CFAC C0E7 A0C0 - A0C1 EAF7 A0C2 A0C3 A0C4 A0C5 A0C6 B6BF - EAF8 A0C7 EAF9 A0C8 EAFA A0C9 A0CA EAFB -End of Item 02D4 - -Begin of Item 02D5 - Format 2 - srcBegin = 729F - destBegin = EAF1 -End of Item 02D5 - -Begin of Item 02D6 - Format 1 - srcBegin = 72AC - srcEnd = 7360 - mappingOffset = 2194 - Mapping = - C8AE E1EB A0E3 B7B8 E1EC A0E4 A0E5 A0E6 - E1ED A0E7 D7B4 E1EE E1EF D3CC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E1F1 BFF1 E1F0 - B5D2 A0EF A0F0 A0F1 B1B7 A0F2 A0F3 A0F4 - A0F5 E1F3 E1F2 A0F6 BAFC A0F7 E1F4 A0F8 - A0F9 A0FA A0FB B9B7 A0FC BED1 A0FD A0FE - AA40 AA41 C4FC AA42 BADD BDC6 FFFD FFFD - FFFD FFFD FFFD FFFD E1F5 E1F7 AA49 AA4A - B6C0 CFC1 CAA8 E1F6 D5F8 D3FC E1F8 E1FC - E1F9 AA4B AA4C E1FA C0EA AA4D E1FE E2A1 - C0C7 AA4E AA4F AA50 AA51 E1FB AA52 E1FD - FFFD FFFD FFFD FFFD FFFD FFFD E2A5 AA59 - AA5A AA5B C1D4 AA5C AA5D AA5E AA5F E2A3 - AA60 E2A8 B2FE E2A2 AA61 AA62 AA63 C3CD - B2C2 E2A7 E2A6 AA64 AA65 E2A4 E2A9 AA66 - AA67 E2AB AA68 AA69 AA6A D0C9 D6ED C3A8 - E2AC AA6B CFD7 AA6C AA6D E2AE AA6E AA6F - BAEF AA70 AA71 E9E0 E2AD E2AA AA72 AA73 - AA74 AA75 BBAB D4B3 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD AA80 AA81 AA82 - AA83 E2B0 AA84 AA85 E2AF AA86 E9E1 AA87 - AA88 AA89 AA8A E2B1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E2B2 -End of Item 02D6 - -Begin of Item 02D7 - Format 1 - srcBegin = 736C - srcEnd = 7371 - mappingOffset = 2249 - Mapping = - E2B3 CCA1 AA9E E2B4 AA9F AAA0 -End of Item 02D7 - -Begin of Item 02D8 - Format 1 - srcBegin = 737E - srcEnd = 73F7 - mappingOffset = 224F - Mapping = - E2B5 AB4C AB4D AB4E AB4F AB50 D0FE AB51 - AB52 C2CA AB53 D3F1 AB54 CDF5 AB55 AB56 - E7E0 AB57 AB58 E7E1 AB59 AB5A AB5B AB5C - BEC1 AB5D AB5E AB5F AB60 C2EA AB61 AB62 - AB63 E7E4 AB64 AB65 E7E3 FFFD FFFD FFFD - FFFD FFFD FFFD CDE6 AB6C C3B5 AB6D AB6E - E7E2 BBB7 CFD6 AB6F C1E1 E7E9 AB70 AB71 - AB72 E7E8 AB73 AB74 E7F4 B2A3 AB75 AB76 - AB77 AB78 E7EA AB79 E7E6 AB7A AB7B AB7C - AB7D AB7E E7EC E7EB C9BA AB80 AB81 D5E4 - AB82 E7E5 B7A9 E7E7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E7EE AB8A AB8B AB8C AB8D - E7F3 AB8E D6E9 AB8F AB90 AB91 AB92 E7ED - AB93 E7F2 AB94 E7F1 AB95 AB96 AB97 B0E0 - AB98 AB99 AB9A AB9B E7F5 AB9C AB9D AB9E - AB9F ABA0 -End of Item 02D8 - -Begin of Item 02D9 - Format 1 - srcBegin = 7403 - srcEnd = 7441 - mappingOffset = 22C9 - Mapping = - C7F2 AC4B C0C5 C0ED AC4C AC4D C1F0 E7F0 - AC4E AC4F AC50 AC51 E7F6 CBF6 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E8A2 - E8A1 FFFD FFFD FFFD FFFD FFFD FFFD D7C1 - AC61 AC62 E7FA E7F9 AC63 E7FB AC64 E7F7 - AC65 E7FE AC66 E7FD AC67 E7FC AC68 AC69 - C1D5 C7D9 C5FD C5C3 AC6A AC6B AC6C AC6D - AC6E C7ED AC6F AC70 AC71 AC72 E8A3 -End of Item 02D9 - -Begin of Item 02DA - Format 1 - srcBegin = 7455 - srcEnd = 745F - mappingOffset = 2308 - Mapping = - E8A6 AC87 E8A5 AC88 E8A7 BAF7 E7F8 E8A4 - AC89 C8F0 C9AA -End of Item 02DA - -Begin of Item 02DB - Format 1 - srcBegin = 746D - srcEnd = 7490 - mappingOffset = 2313 - Mapping = - E8A9 AC97 AC98 B9E5 AC99 AC9A AC9B AC9C - AC9D D1FE E8A8 AC9E AC9F ACA0 AD40 AD41 - AD42 E8AA AD43 E8AD E8AE AD44 C1A7 AD45 - AD46 AD47 E8AF AD48 AD49 AD4A E8B0 AD4B - AD4C E8AC AD4D E8B4 -End of Item 02DB - -Begin of Item 02DC - Format 1 - srcBegin = 749C - srcEnd = 74A9 - mappingOffset = 2337 - Mapping = - E8AB AD59 E8B1 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E8B5 E8B2 E8B3 -End of Item 02DC - -Begin of Item 02DD - Format 2 - srcBegin = 74BA - destBegin = E8B7 -End of Item 02DD - -Begin of Item 02DE - Format 1 - srcBegin = 74D2 - srcEnd = 770D - mappingOffset = 2345 - Mapping = - E8B6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B9CF AD93 F0AC AD94 F0AD AD95 - C6B0 B0EA C8BF AD96 CDDF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CECD EAB1 AD9E AD9F - ADA0 AE40 EAB2 AE41 C6BF B4C9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EAB3 AE49 AE4A - AE4B AE4C D5E7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD DDF9 AE55 EAB4 AE56 EAB5 - AE57 EAB6 AE58 AE59 AE5A AE5B B8CA DFB0 - C9F5 AE5C CCF0 AE5D AE5E C9FA AE5F AE60 - AE61 AE62 AE63 C9FB AE64 AE65 D3C3 CBA6 - AE66 B8A6 F0AE B1C2 AE67 E5B8 CCEF D3C9 - BCD7 C9EA AE68 B5E7 AE69 C4D0 B5E9 AE6A - EEAE BBAD AE6B AE6C E7DE AE6D EEAF AE6E - AE6F AE70 AE71 B3A9 AE72 AE73 EEB2 AE74 - AE75 EEB1 BDE7 AE76 EEB0 CEB7 AE77 AE78 - AE79 AE7A C5CF AE7B AE7C AE7D AE7E C1F4 - DBCE EEB3 D0F3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C2D4 C6E8 AE88 AE89 AE8A - B7AC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EEB4 AE92 B3EB AE93 AE94 AE95 BBFB EEB5 - AE96 AE97 AE98 AE99 AE9A E7DC AE9B AE9C - AE9D EEB6 AE9E AE9F BDAE AEA0 AF40 AF41 - AF42 F1E2 AF43 AF44 AF45 CAE8 AF46 D2C9 - F0DA AF47 F0DB AF48 F0DC C1C6 AF49 B8ED - BECE AF4A AF4B F0DE AF4C C5B1 F0DD D1F1 - AF4D F0E0 B0CC BDEA AF4E AF4F AF50 AF51 - AF52 D2DF F0DF AF53 B4AF B7E8 F0E6 F0E5 - C6A3 F0E1 F0E2 B4C3 AF54 AF55 F0E3 D5EE - AF56 AF57 CCDB BED2 BCB2 AF58 AF59 AF5A - F0E8 F0E7 F0E4 B2A1 AF5B D6A2 D3B8 BEB7 - C8AC AF5C AF5D F0EA AF5E AF5F AF60 AF61 - D1F7 AF62 D6CC BADB F0E9 AF63 B6BB AF64 - AF65 CDB4 AF66 AF67 C6A6 AF68 AF69 AF6A - C1A1 F0EB F0EE AF6B F0ED F0F0 F0EC AF6C - BBBE F0EF AF6D AF6E AF6F AF70 CCB5 F0F2 - AF71 AF72 B3D5 AF73 AF74 AF75 AF76 B1D4 - AF77 AF78 F0F3 AF79 AF7A F0F4 F0F6 B4E1 - AF7B F0F1 AF7C F0F7 AF7D AF7E AF80 AF81 - F0FA AF82 F0F8 AF83 AF84 AF85 F0F5 AF86 - AF87 AF88 AF89 F0FD AF8A F0F9 F0FC F0FE - AF8B F1A1 AF8C AF8D AF8E CEC1 F1A4 AF8F - F1A3 AF90 C1F6 F0FB CADD AF91 AF92 B4F1 - B1F1 CCB1 AF93 F1A6 AF94 AF95 F1A7 AF96 - AF97 F1AC D5CE F1A9 AF98 AF99 C8B3 AF9A - AF9B AF9C F1A2 AF9D F1AB F1A8 F1A5 AF9E - AF9F F1AA AFA0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B0A9 F1AD FFFD FFFD FFFD FFFD - FFFD FFFD F1AF B04D F1B1 B04E B04F B050 - B051 B052 F1B0 B053 F1AE B054 B055 B056 - B057 D1A2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F1B2 B05F B060 B061 F1B3 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B9EF B06A - B06B B5C7 B06C B0D7 B0D9 B06D B06E B06F - D4ED B070 B5C4 B071 BDD4 BBCA F0A7 B072 - B073 B8DE B074 B075 F0A8 B076 B077 B0A8 - B078 F0A9 B079 B07A CDEE B07B B07C F0AA - B07D B07E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F0AB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C6A4 B091 B092 D6E5 - F1E4 B093 F1E5 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C3F3 B09E B09F - D3DB B0A0 B140 D6D1 C5E8 B141 D3AF B142 - D2E6 B143 B144 EEC1 B0BB D5B5 D1CE BCE0 - BAD0 B145 BFF8 B146 B8C7 B5C1 C5CC B147 - B148 CAA2 B149 B14A B14B C3CB B14C B14D - B14E B14F B150 EEC2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C4BF B6A2 B159 EDEC - C3A4 B15A D6B1 B15B B15C B15D CFE0 EDEF - B15E B15F C5CE B160 B6DC B161 B162 CAA1 - B163 B164 EDED B165 B166 EDF0 EDF1 C3BC - B167 BFB4 B168 EDEE -End of Item 02DE - -Begin of Item 02DF - Format 1 - srcBegin = 7719 - srcEnd = 776C - mappingOffset = 2581 - Mapping = - EDF4 EDF2 B174 B175 B176 B177 D5E6 C3DF - B178 EDF3 B179 B17A B17B EDF6 B17C D5A3 - D1A3 B17D B17E B180 EDF5 B181 C3D0 B182 - B183 B184 B185 B186 EDF7 BFF4 BEEC EDF8 - B187 CCF7 B188 D1DB B189 B18A B18B D7C5 - D5F6 B18C EDFC B18D B18E B18F EDFB FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EDF9 - EDFA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD EDFD BEA6 B1A0 B240 B241 B242 B243 - CBAF EEA1 B6BD B244 EEA2 C4C0 B245 EDFE - B246 B247 BDDE B2C7 -End of Item 02DF - -Begin of Item 02E0 - Format 1 - srcBegin = 7779 - srcEnd = 7792 - mappingOffset = 25D5 - Mapping = - B6C3 B254 B255 B256 EEA5 D8BA EEA3 EEA6 - B257 B258 B259 C3E9 B3F2 FFFD FFFD FFFD - FFFD FFFD FFFD EEA7 EEA4 CFB9 B260 B261 - EEA8 C2F7 -End of Item 02E0 - -Begin of Item 02E1 - Format 1 - srcBegin = 779F - srcEnd = 77BF - mappingOffset = 25EF - Mapping = - EEA9 EEAA B26E DEAB B26F B270 C6B3 B271 - C7C6 B272 D6F5 B5C9 B273 CBB2 B274 B275 - B276 EEAB B277 B278 CDAB B279 EEAC B27A - B27B B27C B27D B27E D5B0 B280 EEAD B281 - F6C4 -End of Item 02E1 - -Begin of Item 02E2 - Format 1 - srcBegin = 77CD - srcEnd = 785D - mappingOffset = 2610 - Mapping = - DBC7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B4A3 B298 B299 B29A C3AC F1E6 - B29B B29C B29D B29E B29F CAB8 D2D3 B2A0 - D6AA B340 EFF2 B341 BED8 B342 BDC3 EFF3 - B6CC B0AB B343 B344 B345 B346 CAAF B347 - B348 EDB6 B349 EDB7 B34A B34B B34C B34D - CEF9 B7AF BFF3 EDB8 C2EB C9B0 FFFD FFFD - FFFD FFFD FFFD FFFD EDB9 B354 B355 C6F6 - BFB3 B356 B357 B358 EDBC C5F8 B359 D1D0 - B35A D7A9 EDBA EDBB B35B D1E2 B35C EDBF - EDC0 B35D EDC4 B35E B35F B360 EDC8 B361 - EDC6 EDCE D5E8 B362 EDC9 B363 B364 EDC7 - EDBE B365 B366 C5E9 B367 B368 B369 C6C6 - B36A B36B C9E9 D4D2 EDC1 EDC2 EDC3 EDC5 - B36C C0F9 B36D B4A1 B36E B36F B370 B371 - B9E8 B372 EDD0 B373 B374 B375 B376 EDD1 - B377 EDCA B378 EDCF B379 CEF8 B37A B37B - CBB6 EDCC EDCD B37C B37D B37E B380 B381 - CFF5 -End of Item 02E2 - -Begin of Item 02E3 - Format 1 - srcBegin = 786A - srcEnd = 7905 - mappingOffset = 26A1 - Mapping = - EDD2 C1F2 D3B2 EDCB C8B7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BCEF B396 B397 - B398 B399 C5F0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B440 B441 B442 EDD6 B443 B5EF - B444 B445 C2B5 B0AD CBE9 B446 B447 B1AE - B448 EDD4 B449 B44A B44B CDEB B5E2 B44C - EDD5 EDD3 EDD7 B44D B44E B5FA B44F EDD8 - B450 EDD9 B451 EDDC B452 B1CC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD C5F6 BCEE - EDDA CCBC B2EA B45B B45C B45D B45E EDDB - B45F B460 B461 B462 C4EB B463 B464 B4C5 - B465 B466 B467 B0F5 B468 B469 B46A EDDF - C0DA B4E8 B46B B46C B46D B46E C5CD B46F - B470 B471 EDDD BFC4 B472 B473 B474 EDDE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B480 B481 B482 B483 C4A5 B484 - B485 B486 EDE0 B487 B488 B489 B48A B48B - EDE1 B48C EDE3 B48D B48E C1D7 B48F B490 - BBC7 FFFD FFFD FFFD FFFD FFFD FFFD BDB8 - B497 B498 B499 EDE2 -End of Item 02E3 - -Begin of Item 02E4 - Format 1 - srcBegin = 7913 - srcEnd = 7924 - mappingOffset = 273D - Mapping = - EDE4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EDE6 B550 B551 B552 B553 - B554 EDE5 -End of Item 02E4 - -Begin of Item 02E5 - Format 1 - srcBegin = 7934 - srcEnd = 799A - mappingOffset = 274F - Mapping = - EDE7 B564 B565 B566 B567 B568 CABE ECEA - C0F1 B569 C9E7 B56A ECEB C6EE B56B B56C - B56D B56E ECEC B56F C6ED ECED FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD ECF0 - B579 B57A D7E6 ECF3 B57B B57C ECF1 ECEE - ECEF D7A3 C9F1 CBEE ECF4 B57D ECF2 B57E - B580 CFE9 B581 ECF6 C6B1 B582 B583 B584 - B585 BCC0 B586 ECF5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B5BB BBF6 B58E ECF7 B58F - B590 B591 B592 B593 D9F7 BDFB B594 B595 - C2BB ECF8 B596 B597 B598 B599 ECF9 B59A - B59B B59C B59D B8A3 B59E B59F B5A0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD ECFA -End of Item 02E5 - -Begin of Item 02E6 - Format 2 - srcBegin = 79A7 - destBegin = ECFB -End of Item 02E6 - -Begin of Item 02E7 - Format 1 - srcBegin = 79B3 - srcEnd = 7A23 - mappingOffset = 27B6 - Mapping = - ECFC B65E B65F B660 B661 B662 D3ED D8AE - C0EB B663 C7DD BACC B664 D0E3 CBBD B665 - CDBA B666 B667 B8D1 B668 B669 B1FC B66A - C7EF B66B D6D6 B66C B66D B66E BFC6 C3EB - B66F B670 EFF5 B671 B672 C3D8 FFFD FFFD - FFFD FFFD FFFD FFFD D7E2 B679 B67A B67B - EFF7 B3D3 B67C C7D8 D1ED B67D D6C8 B67E - EFF8 B680 EFF6 B681 BBFD B3C6 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BDD5 B689 B68A - D2C6 B68B BBE0 B68C B68D CFA1 B68E EFFC - EFFB B68F B690 EFF9 B691 B692 B693 B694 - B3CC B695 C9D4 CBB0 B696 B697 B698 B699 - B69A EFFE B69B B69C B0DE B69D B69E D6C9 - B69F B6A0 B740 EFFD B741 B3ED B742 B743 - F6D5 -End of Item 02E7 - -Begin of Item 02E8 - Format 1 - srcBegin = 7A33 - srcEnd = 7A57 - mappingOffset = 2827 - Mapping = - CEC8 B753 B754 B755 F0A2 B756 F0A1 B757 - B5BE BCDA BBFC B758 B8E5 FFFD FFFD FFFD - FFFD FFFD FFFD C4C2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F0A3 B769 - B76A B76B B76C B76D CBEB -End of Item 02E8 - -Begin of Item 02E9 - Format 1 - srcBegin = 7A70 - srcEnd = 7AB3 - mappingOffset = 284C - Mapping = - F0A6 B787 B788 B789 D1A8 B78A BEBF C7EE - F1B6 F1B7 BFD5 B78B B78C B78D B78E B4A9 - F1B8 CDBB B78F C7D4 D5AD B790 F1B9 B791 - F1BA B792 B793 B794 B795 C7CF B796 B797 - B798 D2A4 D6CF B799 B79A F1BB BDD1 B4B0 - BEBD B79B B79C B79D B4DC CED1 B79E BFDF - F1BD B79F B7A0 B840 B841 BFFA F1BC B842 - F1BF B843 B844 B845 F1BE F1C0 B846 B847 - B848 B849 B84A F1C1 -End of Item 02E9 - -Begin of Item 02EA - Format 2 - srcBegin = 7ABF - destBegin = C1FE -End of Item 02EA - -Begin of Item 02EB - Format 1 - srcBegin = 7ACB - srcEnd = 7B62 - mappingOffset = 2890 - Mapping = - C1A2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD CAFA B86B B86C D5BE B86D - B86E B86F B870 BEBA BEB9 D5C2 B871 B872 - BFA2 B873 CDAF F1B5 FFFD FFFD FFFD FFFD - FFFD FFFD BDDF B87A B6CB B87B B87C B87D - B87E B880 B881 B882 B883 B884 D6F1 F3C3 - B885 B886 F3C4 B887 B8CD B888 B889 B88A - F3C6 F3C7 B88B B0CA B88C F3C5 B88D F3C9 - CBF1 B88E B88F B890 F3CB B891 D0A6 B892 - B893 B1CA F3C8 B894 B895 B896 F3CF B897 - B5D1 B898 B899 F3D7 B89A F3D2 B89B B89C - B89D F3D4 F3D3 B7FB B89E B1BF B89F F3CE - F3CA B5DA B8A0 F3D0 B940 B941 F3D1 B942 - F3D5 B943 B944 B945 B946 F3CD B947 BCE3 - B948 C1FD B949 F3D6 FFFD FFFD FFFD FFFD - FFFD FFFD F3DA B950 F3CC B951 B5C8 B952 - BDEE F3DC B953 B954 B7A4 BFF0 D6FE CDB2 - B955 B4F0 B956 B2DF B957 F3D8 B958 F3D9 - C9B8 B959 F3DD B95A B95B F3DE B95C F3E1 -End of Item 02EB - -Begin of Item 02EC - Format 1 - srcBegin = 7B6E - srcEnd = 7C2A - mappingOffset = 2928 - Mapping = - F3DF B968 B969 F3E3 F3E2 B96A B96B F3DB - B96C BFEA B96D B3EF B96E F3E0 B96F B970 - C7A9 B971 BCF2 B972 B973 B974 B975 F3EB - FFFD FFFD FFFD FFFD FFFD FFFD FFFD B9BF - B97D B97E F3E4 B980 B981 B982 B2AD BBFE - B983 CBE3 B984 B985 B986 B987 F3ED F3E9 - B988 B989 B98A B9DC F3EE B98B B98C B98D - F3E5 F3E6 F3EA C2E1 F3EC F3EF F3E8 BCFD - B98E B98F B990 CFE4 B991 B992 F3F0 B993 - B994 B995 F3E7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F3F2 B99E B99F B9A0 BA40 - D7AD C6AA BA41 BA42 BA43 BA44 F3F3 BA45 - BA46 BA47 BA48 F3F1 BA49 C2A8 BA4A BA4B - BA4C BA4D BA4E B8DD F3F5 BA4F BA50 F3F4 - BA51 BA52 BA53 B4DB BA54 BA55 BA56 F3F6 - F3F7 BA57 BA58 BA59 F3F8 BA5A BA5B BA5C - C0BA BA5D BA5E C0E9 BA5F BA60 BA61 BA62 - BA63 C5F1 BA64 BA65 BA66 BA67 F3FB BA68 - F3FA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B4D8 BA71 BA72 BA73 F3FE F3F9 BA74 - BA75 F3FC FFFD FFFD FFFD FFFD FFFD FFFD - F3FD BA7C BA7D BA7E BA80 BA81 BA82 BA83 - BA84 F4A1 FFFD FFFD FFFD FFFD FFFD FFFD - F4A3 BBC9 BA8B BA8C F4A2 -End of Item 02EC - -Begin of Item 02ED - Format 1 - srcBegin = 7C38 - srcEnd = 7C4D - mappingOffset = 29E5 - Mapping = - F4A4 FFFD FFFD FFFD FFFD FFFD FFFD B2BE - F4A6 F4A5 BAA0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BCAE -End of Item 02ED - -Begin of Item 02EE - Format 1 - srcBegin = 7C73 - srcEnd = 7CFB - mappingOffset = 29FB - Mapping = - C3D7 D9E1 FFFD FFFD FFFD FFFD FFFD FFFD - C0E0 F4CC D7D1 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BB80 B7DB FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F4CE C1A3 - BB88 BB89 C6C9 BB8A B4D6 D5B3 BB8B BB8C - BB8D F4D0 F4CF F4D1 CBDA BB8E BB8F F4D2 - BB90 D4C1 D6E0 BB91 BB92 BB93 BB94 B7E0 - BB95 BB96 BB97 C1B8 BB98 BB99 C1BB F4D3 - BEAC BB9A BB9B BB9C BB9D BB9E B4E2 BB9F - BBA0 F4D4 F4D5 BEAB BC40 BC41 F4D6 BC42 - BC43 BC44 F4DB BC45 F4D7 F4DA BC46 BAFD - BC47 F4D8 F4D9 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B8E2 CCC7 F4DC BC4F B2DA BC50 - BC51 C3D3 BC52 BC53 D4E3 BFB7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4DD FFFD FFFD - FFFD FFFD FFFD FFFD C5B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4E9 BC69 BC6A - CFB5 -End of Item 02EE - -Begin of Item 02EF - Format 2 - srcBegin = 7D0A - destBegin = CEC9 -End of Item 02EF - -Begin of Item 02F0 - Format 1 - srcBegin = 7D20 - srcEnd = 7D2F - mappingOffset = 2A84 - Mapping = - CBD8 BC8F CBF7 BC90 BC91 BC92 BC93 BDF4 - BC94 BC95 BC96 D7CF BC97 BC98 BC99 C0DB -End of Item 02F0 - -Begin of Item 02F1 - Format 1 - srcBegin = 7D6E - srcEnd = 7D77 - mappingOffset = 2A94 - Mapping = - D0F5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F4EA -End of Item 02F1 - -Begin of Item 02F2 - Format 1 - srcBegin = 7DA6 - srcEnd = 7DAE - mappingOffset = 2A9E - Mapping = - F4EB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - F4EC -End of Item 02F2 - -Begin of Item 02F3 - Format 1 - srcBegin = 7E3A - srcEnd = 7E47 - mappingOffset = 2AA7 - Mapping = - BF80 F7E3 BF81 BF82 BF83 BF84 BF85 B7B1 - BF86 BF87 BF88 BF89 BF8A F4ED -End of Item 02F3 - -Begin of Item 02F4 - Format 2 - srcBegin = 7E82 - destBegin = D7EB -End of Item 02F4 - -Begin of Item 02F5 - Format 1 - srcBegin = 7E9B - srcEnd = 805A - mappingOffset = 2AB5 - Mapping = - F4EE C07C C07D C07E E6F9 BEC0 E6FA BAEC - E6FB CFCB E6FC D4BC BCB6 E6FD E6FE BCCD - C8D2 CEB3 E7A1 C080 B4BF E7A2 C9B4 B8D9 - C4C9 C081 D7DD C2DA B7D7 D6BD CEC6 B7C4 - C082 C083 C5A6 E7A3 CFDF E7A4 E7A5 E7A6 - C1B7 D7E9 C9F0 CFB8 D6AF D6D5 E7A7 B0ED - E7A8 E7A9 C9DC D2EF BEAD E7AA B0F3 C8DE - BDE1 E7AB C8C6 C084 E7AC BBE6 B8F8 D1A4 - E7AD C2E7 BEF8 BDCA CDB3 E7AE E7AF BEEE - D0E5 C085 CBE7 CCD0 BCCC E7B0 BCA8 D0F7 - E7B1 C086 D0F8 E7B2 E7B3 B4C2 E7B4 E7B5 - C9FE CEAC C3E0 E7B7 B1C1 B3F1 C087 E7B8 - E7B9 D7DB D5C0 E7BA C2CC D7BA E7BB E7BC - E7BD BCEA C3E5 C0C2 E7BE E7BF BCA9 C088 - E7C0 E7C1 E7B6 B6D0 E7C2 C089 E7C3 E7C4 - BBBA B5DE C2C6 B1E0 E7C5 D4B5 E7C6 B8BF - E7C8 E7C7 B7EC C08A E7C9 B2F8 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D3A7 CBF5 E7D1 - E7D2 E7D3 E7D4 C9C9 E7D5 E7D6 E7D7 E7D8 - E7D9 BDC9 E7DA F3BE C08B B8D7 C08C C8B1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F3BF - C094 F3C0 F3C1 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B9DE CDF8 C09F - C0A0 D8E8 BAB1 C140 C2DE EEB7 C141 B7A3 - C142 C143 C144 C145 EEB9 C146 EEB8 B0D5 - C147 C148 C149 C14A C14B EEBB D5D6 D7EF - C14C C14D C14E D6C3 C14F C150 EEBD CAF0 - C151 EEBC C152 C153 C154 C155 EEBE C156 - C157 C158 C159 EEC0 C15A C15B EEBF FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D1F2 - C164 C7BC C165 C3C0 C166 C167 C168 C169 - C16A B8E1 C16B C16C C16D C16E C16F C1E7 - C170 C171 F4C6 D0DF F4C7 C172 CFDB C173 - C174 C8BA C175 C176 F4C8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F4C9 F4CA C17E F4CB - C180 C181 C182 C183 C184 D9FA B8FE C185 - C186 E5F1 D3F0 C187 F4E0 C188 CECC C189 - C18A C18B B3E1 C18C C18D C18E C18F F1B4 - C190 D2EE C191 F4E1 C192 C193 C194 C195 - C196 CFE8 F4E2 C197 C198 C7CC FFFD FFFD - FFFD FFFD FFFD FFFD B5D4 B4E4 F4E4 C19F - C1A0 C240 F4E3 F4E5 C241 C242 F4E6 C243 - C244 C245 C246 F4E7 C247 BAB2 B0BF C248 - F4E8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B7AD D2ED C250 C251 C252 D2AB C0CF C253 - BFBC EBA3 D5DF EAC8 C254 C255 C256 C257 - F1F3 B6F8 CBA3 C258 C259 C4CD C25A F1E7 - C25B F1E8 B8FB F1E9 BAC4 D4C5 B0D2 C25C - C25D F1EA C25E C25F C260 F1EB C261 F1EC - C262 C263 F1ED F1EE F1EF F1F1 F1F0 C5D5 - FFFD FFFD FFFD FFFD FFFD FFFD F1F2 C26A - B6FA C26B F1F4 D2AE DEC7 CBCA C26C C26D - B3DC C26E B5A2 C26F B9A2 C270 C271 C4F4 - F1F5 C272 C273 F1F6 C274 C275 C276 C1C4 - C1FB D6B0 F1F7 C277 C278 C279 C27A F1F8 - C27B C1AA C27C C27D C27E C6B8 C280 BEDB -End of Item 02F5 - -Begin of Item 02F6 - Format 1 - srcBegin = 8069 - srcEnd = 8071 - mappingOffset = 2C75 - Mapping = - F1F9 B4CF FFFD FFFD FFFD FFFD FFFD FFFD - F1FA -End of Item 02F6 - -Begin of Item 02F7 - Format 1 - srcBegin = 807E - srcEnd = 811E - mappingOffset = 2C7E - Mapping = - C340 EDB2 EDB1 C341 C342 CBE0 D2DE C343 - CBC1 D5D8 C344 C8E2 C345 C0DF BCA1 FFFD - FFFD FFFD FFFD FFFD FFFD EBC1 C34C C34D - D0A4 C34E D6E2 C34F B6C7 B8D8 EBC0 B8CE - C350 EBBF B3A6 B9C9 D6AB C351 B7F4 B7CA - C352 C353 C354 BCE7 B7BE EBC6 C355 EBC7 - B0B9 BFCF C356 EBC5 D3FD C357 EBC8 C358 - C359 EBC9 C35A C35B B7CE C35C EBC2 EBC4 - C9F6 D6D7 D5CD D0B2 EBCF CEB8 EBD0 C35D - B5A8 C35E C35F C360 C361 C362 B1B3 EBD2 - CCA5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C5D6 EBD3 C36A EBD1 C5DF EBCE CAA4 EBD5 - B0FB C36B C36C BAFA C36D C36E D8B7 F1E3 - C36F EBCA EBCB EBCC EBCD EBD6 E6C0 EBD9 - C370 BFE8 D2C8 EBD7 EBDC B8EC EBD8 C371 - BDBA C372 D0D8 C373 B0B7 C374 EBDD C4DC - C375 C376 C377 C378 D6AC C379 C37A C37B - B4E0 C37C C37D C2F6 BCB9 C37E C380 EBDA - EBDB D4E0 C6EA C4D4 EBDF C5A7 D9F5 C381 - B2B1 C382 EBE4 C383 BDC5 C384 C385 C386 - EBE2 -End of Item 02F7 - -Begin of Item 02F8 - Format 1 - srcBegin = 812C - srcEnd = 81CC - mappingOffset = 2D1F - Mapping = - EBE3 C394 C395 B8AC C396 CDD1 EBE5 C397 - C398 C399 EBE1 C39A C1B3 C39B C39C C39D - C39E C39F C6A2 C3A0 FFFD FFFD FFFD FFFD - FFFD FFFD CCF3 C446 EBE6 C447 C0B0 D2B8 - EBE7 C448 C449 C44A B8AF B8AD C44B EBE8 - C7BB CDF3 C44C C44D C44E EBEA EBEB C44F - C450 C451 C452 C453 EBED C454 C455 C456 - C457 D0C8 C458 EBF2 C459 EBEE C45A C45B - C45C EBF1 C8F9 C45D D1FC EBEC C45E C45F - EBE9 C460 C461 C462 C463 B8B9 CFD9 C4E5 - EBEF EBF0 CCDA CDC8 B0F2 C464 EBF6 C465 - C466 C467 C468 C469 EBF5 C46A B2B2 C46B - C46C C46D C46E B8E0 C46F EBF7 FFFD FFFD - FFFD FFFD FFFD FFFD B1EC C476 C477 CCC5 - C4A4 CFA5 C478 C479 C47A C47B C47C EBF9 - C47D C47E ECA2 C480 C5F2 C481 EBFA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C9C5 - FFFD FFFD FFFD FFFD FFFD FFFD E2DF EBFE - C490 C491 C492 C493 CDCE ECA1 B1DB D3B7 - C494 C495 D2DC C496 C497 C498 EBFD C499 - EBFB -End of Item 02F8 - -Begin of Item 02F9 - Format 1 - srcBegin = 81E3 - srcEnd = 84A1 - mappingOffset = 2DC0 - Mapping = - B3BC C54F C550 C551 EAB0 C552 C553 D7D4 - C554 F4AB B3F4 C555 C556 C557 C558 C559 - D6C1 D6C2 FFFD FFFD FFFD FFFD FFFD FFFD - D5E9 BECA C560 F4A7 C561 D2A8 F4A8 F4A9 - C562 F4AA BECB D3DF C563 C564 C565 C566 - C567 C9E0 C9E1 C568 C569 F3C2 C56A CAE6 - C56B CCF2 FFFD FFFD FFFD FFFD FFFD FFFD - E2B6 CBB4 C572 CEE8 D6DB C573 F4AD F4AE - F4AF C574 C575 C576 C577 F4B2 C578 BABD - F4B3 B0E3 F4B0 C579 F4B1 BDA2 B2D5 C57A - F4B6 F4B7 B6E6 B2B0 CFCF F4B4 B4AC C57B - F4B5 C57C C57D F4B8 C57E C580 C581 C582 - C583 F4B9 C584 C585 CDA7 C586 F4BA C587 - F4BB C588 C589 C58A F4BC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CBD2 C593 F4BD - C594 C595 C596 C597 F4BE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4BF C5A0 C640 - C641 C642 C643 F4DE C1BC BCE8 C644 C9AB - D1DE E5F5 C645 C646 C647 C648 DCB3 D2D5 - C649 C64A DCB4 B0AC DCB5 C64B C64C BDDA - C64D DCB9 C64E C64F C650 D8C2 C651 DCB7 - D3F3 C652 C9D6 DCBA DCB6 C653 DCBB C3A2 - C654 C655 C656 C657 DCBC DCC5 DCBD C658 - C659 CEDF D6A5 C65A DCCF C65B DCCD C65C - C65D DCD2 BDE6 C2AB C65E DCB8 DCCB DCCE - DCBE B7D2 B0C5 DCC7 D0BE DCC1 BBA8 C65F - B7BC DCCC C660 C661 DCC6 DCBF C7DB C662 - C663 C664 D1BF DCC0 C665 C666 DCCA C667 - C668 DCD0 C669 C66A CEAD DCC2 C66B DCC3 - DCC8 DCC9 B2D4 DCD1 CBD5 C66C D4B7 DCDB - DCDF CCA6 DCE6 C66D C3E7 DCDC C66E C66F - BFC1 DCD9 C670 B0FA B9B6 DCE5 DCD3 C671 - DCC4 DCD6 C8F4 BFE0 C672 C673 C674 C675 - C9BB C676 C677 C678 B1BD C679 D3A2 C67A - C67B DCDA C67C C67D DCD5 C67E C6BB C680 - DCDE C681 C682 C683 C684 C685 D7C2 C3AF - B7B6 C7D1 C3A9 DCE2 DCD8 DCEB DCD4 C686 - C687 DCDD C688 BEA5 DCD7 C689 DCE0 C68A - C68B DCE3 DCE4 C68C DCF8 C68D C68E DCE1 - DDA2 DCE7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BCEB B4C4 C699 C69A - C3A3 B2E7 DCFA C69B DCF2 C69C DCEF C69D - DCFC DCEE D2F0 B2E8 C69E C8D7 C8E3 DCFB - C69F DCED C6A0 C740 C741 DCF7 C742 C743 - DCF5 C744 C745 BEA3 DCF4 C746 B2DD C747 - C748 C749 C74A C74B DCF3 BCF6 DCE8 BBC4 - C74C C0F3 C74D C74E C74F C750 C751 BCD4 - DCE9 DCEA C752 DCF1 DCF6 DCF9 B5B4 C753 - C8D9 BBE7 DCFE DCFD D3AB DDA1 DDA3 DDA5 - D2F1 DDA4 DDA6 DDA7 D2A9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BAC9 DDA9 C75B C75C - DDB6 DDB1 DDB4 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DDB0 C6CE C764 C765 C0F2 C766 - C767 C768 C769 C9AF C76A C76B C76C DCEC - DDAE C76D C76E C76F C770 DDB7 C771 C772 - DCF0 DDAF C773 DDB8 C774 DDAC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD DDB9 DDB3 DDAD - C4AA C77C C77D C77E C780 DDA8 C0B3 C1AB - DDAA DDAB C781 DDB2 BBF1 DDB5 D3A8 DDBA - C782 DDBB C3A7 C783 C784 DDD2 DDBC C785 - C786 C787 DDD1 C788 B9BD C789 C78A BED5 - C78B BEFA C78C C78D BACA C78E C78F C790 - C791 DDCA C792 DDC5 C793 DDBF C794 C795 - C796 B2CB DDC3 C797 DDCB B2A4 DDD5 C798 - C799 C79A DDBE C79B C79C C79D C6D0 DDD0 - C79E C79F C7A0 C840 C841 DDD4 C1E2 B7C6 - C842 C843 C844 C845 C846 DDCE DDCF C847 - C848 C849 DDC4 C84A C84B C84C DDBD C84D - DDCD CCD1 C84E DDC9 C84F C850 C851 C852 - DDC2 C3C8 C6BC CEAE DDCC C853 DDC8 FFFD - FFFD FFFD FFFD FFFD FFFD DDC1 C85A C85B - C85C DDC6 C2DC FFFD FFFD FFFD FFFD FFFD - FFFD D3A9 D3AA DDD3 CFF4 C8F8 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DDE6 FFFD - FFFD FFFD FFFD FFFD FFFD DDC7 C871 C872 - C873 DDE0 C2E4 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD DDE1 C87C C87D C87E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DDD7 C887 - C888 C889 C88A C88B D6F8 C88C DDD9 DDD8 - B8F0 DDD6 C88D C88E C88F C890 C6CF C891 - B6AD C892 C893 C894 C895 C896 DDE2 C897 - BAF9 D4E1 DDE7 C898 C899 C89A B4D0 C89B - DDDA C89C BFFB DDE3 C89D DDDF C89E DDDD - C89F C8A0 C940 C941 C942 C943 C944 B5D9 - C945 C946 C947 C948 DDDB DDDC DDDE C949 - BDAF DDE4 C94A DDE5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DDF5 C953 C3C9 C954 - C955 CBE2 C956 C957 C958 C959 DDF2 -End of Item 02F9 - -Begin of Item 02FA - Format 1 - srcBegin = 84AF - srcEnd = 84F0 - mappingOffset = 307F - Mapping = - D8E1 C967 C968 C6D1 C969 DDF4 C96A C96B - C96C D5F4 DDF3 DDF0 C96D C96E DDEC C96F - DDEF C970 DDE8 C971 C972 D0EE C973 C974 - C975 C976 C8D8 DDEE C977 C978 DDE9 C979 - C97A DDEA CBF2 C97B DDED C97C C97D B1CD - C97E C980 C981 C982 C983 C984 C0B6 C985 - BCBB DDF1 C986 C987 DDF7 C988 DDF6 DDEB - C989 C98A C98B C98C C98D C5EE C98E C98F - C990 DDFB -End of Item 02FA - -Begin of Item 02FB - Format 1 - srcBegin = 84FC - srcEnd = 854A - mappingOffset = 30C1 - Mapping = - DEA4 C99C C99D DEA3 C99E C99F C9A0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - DDF8 CA49 CA4A CA4B CA4C C3EF CA4D C2FB - CA4E CA4F CA50 D5E1 CA51 CA52 CEB5 CA53 - CA54 CA55 CA56 DDFD CA57 B2CC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C4E8 - CADF FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C7BE DDFA DDFC DDFE DEA2 - B0AA B1CE CA6B CA6C CA6D CA6E CA6F DEAC - CA70 CA71 CA72 CA73 DEA6 BDB6 C8EF -End of Item 02FB - -Begin of Item 02FC - Format 1 - srcBegin = 8556 - srcEnd = 858F - mappingOffset = 3110 - Mapping = - DEA1 CA80 CA81 DEA5 CA82 CA83 CA84 CA85 - DEA9 CA86 CA87 CA88 CA89 CA8A DEA8 CA8B - CA8C CA8D DEA7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DEAD CA97 D4CC CA98 - CA99 CA9A CA9B DEB3 DEAA DEAE CA9C CA9D - C0D9 CA9E CA9F CAA0 CB40 CB41 B1A1 DEB6 - CB42 DEB1 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DEB2 -End of Item 02FC - -Begin of Item 02FD - Format 1 - srcBegin = 859B - srcEnd = 85E9 - mappingOffset = 314A - Mapping = - D1A6 DEB5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD DEAF CB5C CB5D CB5E DEB0 CB5F D0BD - CB60 CB61 CB62 DEB4 CAED DEB9 FFFD FFFD - FFFD FFFD FFFD FFFD DEB8 CB69 DEB7 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD DEBB FFFD - FFFD FFFD FFFD FFFD FFFD FFFD BDE5 CB78 - CB79 CB7A CB7B CB7C B2D8 C3EA CB7D CB7E - DEBA CB80 C5BA FFFD FFFD FFFD FFFD FFFD - FFFD DEBC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CCD9 CB8E CB8F CB90 CB91 B7AA -End of Item 02FD - -Begin of Item 02FE - Format 1 - srcBegin = 85F9 - srcEnd = 8605 - mappingOffset = 3199 - Mapping = - CC40 CC41 D4E5 CC42 CC43 CC44 DEBD CC45 - CC46 CC47 CC48 CC49 DEBF -End of Item 02FE - -Begin of Item 02FF - Format 1 - srcBegin = 8611 - srcEnd = 8616 - mappingOffset = 31A6 - Mapping = - C4A2 CC55 CC56 CC57 CC58 DEC1 -End of Item 02FF - -Begin of Item 0300 - Format 1 - srcBegin = 8627 - srcEnd = 8629 - mappingOffset = 31AC - Mapping = - DEBE CC69 DEC0 -End of Item 0300 - -Begin of Item 0301 - Format 1 - srcBegin = 8638 - srcEnd = 8640 - mappingOffset = 31AF - Mapping = - D5BA CC78 CC79 CC7A DEC2 CC7B CC7C CC7D - CC7E -End of Item 0301 - -Begin of Item 0302 - Format 1 - srcBegin = 864D - srcEnd = 8823 - mappingOffset = 31B8 - Mapping = - F2AE BBA2 C2B2 C5B0 C2C7 CC8C CC8D F2AF - CC8E CC8F CC90 CC91 CC92 D0E9 CC93 CC94 - CC95 D3DD CC96 CC97 CC98 EBBD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B3E6 F2B0 - CD40 F2B1 CD41 CD42 CAAD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BAE7 F2B3 F2B5 F2B4 - CBE4 CFBA F2B2 CAB4 D2CF C2EC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CEC3 F2B8 B0F6 - F2B7 CD51 CD52 CD53 CD54 CD55 F2BE CD56 - B2CF FFFD FFFD FFFD FFFD FFFD FFFD D1C1 - F2BA CD5D CD5E CD5F CD60 CD61 F2BC D4E9 - CD62 CD63 F2BB F2B6 F2BF F2BD CD64 F2B9 - CD65 CD66 F2C7 F2C4 F2C6 CD67 CD68 F2CA - F2C2 F2C0 CD69 CD6A CD6B F2C5 CD6C CD6D - CD6E CD6F CD70 D6FB CD71 CD72 CD73 F2C1 - CD74 C7F9 C9DF CD75 F2C8 B9C6 B5B0 CD76 - CD77 F2C3 F2C9 F2D0 F2D6 CD78 CD79 BBD7 - CD7A CD7B CD7C F2D5 CDDC CD7D D6EB CD7E - CD80 F2D2 F2D4 CD81 CD82 CD83 CD84 B8F2 - CD85 CD86 CD87 CD88 F2CB CD89 CD8A CD8B - F2CE C2F9 CD8C D5DD F2CC F2CD F2CF F2D3 - CD8D CD8E CD8F F2D9 D3BC CD90 CD91 CD92 - CD93 B6EA CD94 CAF1 CD95 B7E4 F2D7 CD96 - CD97 CD98 F2D8 F2DA F2DD F2DB CD99 CD9A - F2DC CD9B CD9C CD9D CD9E D1D1 F2D1 CD9F - CDC9 CDA0 CECF D6A9 CE40 F2E3 CE41 C3DB - CE42 F2E0 CE43 CE44 C0AF F2EC F2DE CE45 - F2E1 CE46 CE47 CE48 F2E8 CE49 CE4A CE4B - CE4C F2E2 CE4D CE4E F2E7 CE4F CE50 F2E6 - CE51 CE52 F2E9 CE53 CE54 CE55 F2DF CE56 - CE57 F2E4 F2EA FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D3AC F2E5 B2F5 CE5F CE60 F2F2 - CE61 D0AB CE62 CE63 CE64 CE65 F2F5 CE66 - CE67 CE68 BBC8 CE69 F2F9 FFFD FFFD FFFD - FFFD FFFD FFFD F2F0 CE70 CE71 F2F6 F2F8 - F2FA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F2F3 CE7A F2F1 CE7B CE7C CE7D BAFB - CE7E B5FB CE80 CE81 CE82 CE83 F2EF F2F7 - F2ED F2EE CE84 CE85 CE86 F2EB F3A6 CE87 - F3A3 CE88 CE89 F3A2 CE8A CE8B F2F4 CE8C - C8DA CE8D CE8E CE8F CE90 CE91 F2FB CE92 - CE93 CE94 F3A5 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C3F8 CE9C CE9D CE9E CE9F CEA0 - CF40 CF41 CF42 F2FD CF43 CF44 F3A7 F3A9 - F3A4 CF45 F2FC CF46 CF47 CF48 F3AB CF49 - F3AA CF4A CF4B CF4C CF4D C2DD CF4E CF4F - F3AE CF50 CF51 F3B0 CF52 CF53 CF54 CF55 - CF56 F3A1 CF57 CF58 CF59 F3B1 F3AC CF5A - CF5B CF5C CF5D CF5E F3AF F2FE F3AD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F3B2 CF66 - CF67 CF68 CF69 F3B4 CF6A CF6B CF6C CF6D - F3A8 CF6E CF6F CF70 CF71 F3B3 CF72 CF73 - CF74 F3B5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D0B7 CF80 CF81 CF82 - CF83 F3B8 CF84 CF85 CF86 CF87 D9F9 FFFD - FFFD FFFD FFFD FFFD FFFD F3B9 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F3B7 CF96 - C8E4 F3B6 CF97 CF98 CF99 CF9A F3BA CF9B - CF9C CF9D CF9E CF9F F3BB B4C0 CFA0 -End of Item 0302 - -Begin of Item 0303 - Format 1 - srcBegin = 8832 - srcEnd = 8944 - mappingOffset = 338F - Mapping = - EEC3 FFFD FFFD FFFD FFFD FFFD FFFD F3BC - D054 D055 F3BD D056 D057 D058 D1AA D059 - D05A D05B F4AC D0C6 FFFD FFFD FFFD FFFD - FFFD FFFD D0D0 D1DC FFFD FFFD FFFD FFFD - FFFD FFFD CFCE D068 D069 BDD6 D06A D1C3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BAE2 - E1E9 D2C2 F1C2 B2B9 D072 D073 B1ED F1C3 - D074 C9C0 B3C4 D075 D9F2 D076 CBA5 D077 - F1C4 D078 D079 D07A D07B D6D4 D07C D07D - D07E D080 D081 F1C5 F4C0 F1C6 D082 D4AC - F1C7 D083 B0C0 F4C1 D084 D085 F4C2 D086 - D087 B4FC D088 C5DB D089 D08A D08B D08C - CCBB D08D D08E D08F D0E4 D090 D091 D092 - D093 D094 CDE0 D095 D096 D097 D098 D099 - F1C8 D09A D9F3 FFFD FFFD FFFD FFFD FFFD - FFFD B1BB D140 CFAE D141 D142 D143 B8A4 - D144 D145 D146 D147 D148 F1CA D149 D14A - D14B D14C F1CB D14D D14E D14F D150 B2C3 - C1D1 D151 D152 D7B0 F1C9 D153 D154 F1CC - D155 D156 D157 D158 F1CE D159 D15A D15B - D9F6 D15C D2E1 D4A3 D15D D15E F4C3 C8B9 - D15F D160 D161 D162 D163 F4C4 D164 D165 - F1CD F1CF BFE3 F1D0 D166 D167 F1D4 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F1D6 F1D1 - D16F C9D1 C5E1 D170 D171 D172 C2E3 B9FC - D173 D174 F1D3 D175 F1D5 D176 D177 D178 - B9D3 FFFD FFFD FFFD FFFD FFFD FFFD D180 - F1DB D181 D182 D183 D184 D185 BAD6 D186 - B0FD F1D9 D187 D188 D189 D18A D18B F1D8 - F1D2 F1DA D18C D18D D18E D18F D190 F1D7 - D191 D192 D193 C8EC D194 D195 D196 D197 - CDCA F1DD D198 D199 D19A D19B E5BD D19C - D19D D19E F1DC D19F F1DE D1A0 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F1DF - D249 D24A CFE5 -End of Item 0303 - -Begin of Item 0304 - Format 1 - srcBegin = 895E - srcEnd = 8966 - mappingOffset = 34A2 - Mapping = - F4C5 BDF3 FFFD FFFD FFFD FFFD FFFD FFFD - F1E0 -End of Item 0304 - -Begin of Item 0305 - Format 1 - srcBegin = 897B - srcEnd = 8986 - mappingOffset = 34AB - Mapping = - F1E1 D27E D280 D281 CEF7 D282 D2AA D283 - F1FB D284 D285 B8B2 -End of Item 0305 - -Begin of Item 0306 - Format 1 - srcBegin = 89C1 - srcEnd = 8A07 - mappingOffset = 34B7 - Mapping = - BCFB B9DB D35F B9E6 C3D9 CAD3 EAE8 C0C0 - BEF5 EAE9 EAEA EAEB D360 EAEC EAED EAEE - EAEF BDC7 D361 D362 D363 F5FB D364 D365 - D366 F5FD D367 F5FE D368 F5FC D369 D36A - D36B D36C BDE2 D36D F6A1 B4A5 D36E D36F - D370 D371 F6A2 D372 D373 D374 F6A3 D375 - D376 D377 ECB2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D380 D381 D382 D383 D384 D1D4 - FFFD FFFD FFFD FFFD FFFD FFFD D9EA -End of Item 0306 - -Begin of Item 0307 - Format 1 - srcBegin = 8A3E - srcEnd = 8A48 - mappingOffset = 34FE - Mapping = - F6A4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD EEBA -End of Item 0307 - -Begin of Item 0308 - Format 2 - srcBegin = 8A79 - destBegin = D5B2 -End of Item 0308 - -Begin of Item 0309 - Format 1 - srcBegin = 8A89 - srcEnd = 8A93 - mappingOffset = 3509 - Mapping = - D3FE CCDC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CAC4 -End of Item 0309 - -Begin of Item 030A - Format 2 - srcBegin = 8B07 - destBegin = E5C0 -End of Item 030A - -Begin of Item 030B - Format 1 - srcBegin = 8B24 - srcEnd = 8B26 - mappingOffset = 3514 - Mapping = - D680 D681 F6A5 -End of Item 030B - -Begin of Item 030C - Format 1 - srcBegin = 8B66 - srcEnd = 8B6C - mappingOffset = 3517 - Mapping = - BEAF D760 D761 D762 D763 D764 C6A9 -End of Item 030C - -Begin of Item 030D - Format 1 - srcBegin = 8BA0 - srcEnd = 8C98 - mappingOffset = 351E - Mapping = - DAA5 BCC6 B6A9 B8BC C8CF BCA5 DAA6 DAA7 - CCD6 C8C3 DAA8 C6FD D799 D1B5 D2E9 D1B6 - BCC7 D79A BDB2 BBE4 DAA9 DAAA D1C8 DAAB - D0ED B6EF C2DB D79B CBCF B7ED C9E8 B7C3 - BEF7 D6A4 DAAC DAAD C6C0 D7E7 CAB6 D79C - D5A9 CBDF D5EF DAAE D6DF B4CA DAB0 DAAF - D79D D2EB DAB1 DAB2 DAB3 CAD4 DAB4 CAAB - DAB5 DAB6 B3CF D6EF DAB7 BBB0 B5AE DAB8 - DAB9 B9EE D1AF D2E8 DABA B8C3 CFEA B2EF - DABB DABC D79E BDEB CEDC D3EF DABD CEF3 - DABE D3D5 BBE5 DABF CBB5 CBD0 DAC0 C7EB - D6EE DAC1 C5B5 B6C1 DAC2 B7CC BFCE DAC3 - DAC4 CBAD DAC5 B5F7 DAC6 C1C2 D7BB DAC7 - CCB8 D79F D2EA C4B1 DAC8 B5FD BBD1 DAC9 - D0B3 DACA DACB CEBD DACC DACD DACE B2F7 - DAD1 DACF D1E8 DAD0 C3D5 DAD2 D7A0 DAD3 - DAD4 DAD5 D0BB D2A5 B0F9 DAD6 C7AB DAD7 - BDF7 C3A1 DAD8 DAD9 C3FD CCB7 DADA DADB - C0BE C6D7 DADC DADD C7B4 DADE DADF B9C8 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD BBED D849 D84A D84B D84C B6B9 F4F8 - D84D F4F9 D84E D84F CDE3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F5B9 D858 D859 - D85A D85B EBE0 FFFD FFFD FFFD FFFD FFFD - FFFD CFF3 BBBF FFFD FFFD FFFD FFFD FFFD - FFFD FFFD BAC0 D4A5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E1D9 D870 D871 D872 D873 - F5F4 B1AA B2F2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD F5F5 D87B D87C F5F7 D87D D87E - D880 BAD1 F5F6 D881 C3B2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F5F9 D889 D88A D88B - F5F8 -End of Item 030D - -Begin of Item 030E - Format 1 - srcBegin = 8D1D - srcEnd = 8DA3 - mappingOffset = 3617 - Mapping = - B1B4 D5EA B8BA DA4F B9B1 B2C6 D4F0 CFCD - B0DC D5CB BBF5 D6CA B7B7 CCB0 C6B6 B1E1 - B9BA D6FC B9E1 B7A1 BCFA EADA EADB CCF9 - B9F3 EADC B4FB C3B3 B7D1 BAD8 EADD D4F4 - EADE BCD6 BBDF EADF C1DE C2B8 D4DF D7CA - EAE0 EAE1 EAE4 EAE2 EAE3 C9DE B8B3 B6C4 - EAE5 CAEA C9CD B4CD DA50 DA51 E2D9 C5E2 - EAE6 C0B5 DA52 D7B8 EAE7 D7AC C8FC D8D3 - D8CD D4DE DA53 D4F9 C9C4 D3AE B8D3 B3E0 - DA54 C9E2 F4F6 DA55 DA56 DA57 BAD5 DA58 - F4F7 DA59 DA5A D7DF DA5B DA5C F4F1 B8B0 - D5D4 B8CF C6F0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B3C3 DA66 DA67 F4F2 - B3AC DA68 DA69 DA6A DA6B D4BD C7F7 DA6C - DA6D DA6E DA6F DA70 F4F4 DA71 DA72 F4F3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CCCB DA7D DA7E DA80 C8A4 -End of Item 030E - -Begin of Item 030F - Format 1 - srcBegin = 8DB1 - srcEnd = 8E59 - mappingOffset = 369E - Mapping = - F4F5 DA8E D7E3 C5BF F5C0 DA8F DA90 F5BB - DA91 F5C3 DA92 F5C2 DA93 D6BA F5C1 DA94 - DA95 DA96 D4BE F5C4 DA97 F5CC DA98 DA99 - DA9A DA9B B0CF B5F8 DA9C F5C9 F5CA DA9D - C5DC DA9E DA9F DAA0 DB40 F5C5 F5C6 DB41 - DB42 F5C7 F5CB DB43 BEE0 F5C8 B8FA DB44 - DB45 DB46 F5D0 F5D3 DB47 DB48 DB49 BFE7 - DB4A B9F2 F5BC F5CD DB4B DB4C C2B7 DB4D - DB4E DB4F CCF8 DB50 BCF9 DB51 F5CE F5CF - F5D1 B6E5 F5D2 DB52 F5D5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F5BD DB5A DB5B DB5C - F5D4 D3BB DB5D B3EC DB5E DB5F CCA4 DB60 - DB61 DB62 DB63 F5D6 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F5D7 BEE1 F5D8 DB6C - DB6D CCDF F5DB DB6E DB6F DB70 DB71 DB72 - B2C8 D7D9 DB73 F5D9 DB74 F5DA F5DC DB75 - F5E2 DB76 DB77 DB78 F5E0 DB79 DB7A DB7B - F5DF F5DD DB7C DB7D F5E1 DB7E DB80 F5DE - F5E4 F5E5 DB81 CCE3 DB82 DB83 E5BF B5B8 - F5E3 F5E8 CCA3 DB84 DB85 DB86 DB87 DB88 - F5E6 F5E7 FFFD FFFD FFFD FFFD FFFD FFFD - F5BE -End of Item 030F - -Begin of Item 0310 - Format 1 - srcBegin = 8E66 - srcEnd = 8E9E - mappingOffset = 3747 - Mapping = - B1C4 DB9B DB9C F5BF DB9D DB9E B5C5 B2E4 - DB9F F5EC F5E9 DBA0 B6D7 DC40 F5ED DC41 - F5EA DC42 DC43 DC44 DC45 DC46 F5EB DC47 - DC48 B4DA DC49 D4EA DC4A DC4B DC4C F5EE - DC4D B3F9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F5EF F5F1 DC55 DC56 DC57 F5F0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F5F2 DC5F - F5F3 -End of Item 0310 - -Begin of Item 0311 - Format 1 - srcBegin = 8EAB - srcEnd = 8EBA - mappingOffset = 3780 - Mapping = - C9ED B9AA DC6C DC6D C7FB DC6E DC6F B6E3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD CCC9 -End of Item 0311 - -Begin of Item 0312 - Format 2 - srcBegin = 8ECE - destBegin = EAA6 -End of Item 0312 - -Begin of Item 0313 - Format 1 - srcBegin = 8F66 - srcEnd = 9104 - mappingOffset = 3790 - Mapping = - B3B5 D4FE B9EC D0F9 DE61 E9ED D7AA E9EE - C2D6 C8ED BAE4 E9EF E9F0 E9F1 D6E1 E9F2 - E9F3 E9F5 E9F4 E9F6 E9F7 C7E1 E9F8 D4D8 - E9F9 BDCE DE62 E9FA E9FB BDCF E9FC B8A8 - C1BE E9FD B1B2 BBD4 B9F5 E9FE DE63 EAA1 - EAA2 EAA3 B7F8 BCAD DE64 CAE4 E0CE D4AF - CFBD D5B7 EAA4 D5DE EAA5 D0C1 B9BC DE65 - B4C7 B1D9 DE66 DE67 DE68 C0B1 DE69 DE6A - DE6B DE6C B1E6 B1E7 DE6D B1E8 DE6E DE6F - DE70 DE71 B3BD C8E8 DE72 DE73 DE74 DE75 - E5C1 DE76 DE77 B1DF DE78 DE79 DE7A C1C9 - B4EF DE7B DE7C C7A8 D3D8 DE7D C6F9 D1B8 - DE7E B9FD C2F5 DE80 DE81 DE82 DE83 DE84 - D3AD DE85 D4CB BDFC DE86 E5C2 B7B5 E5C3 - DE87 DE88 BBB9 D5E2 DE89 BDF8 D4B6 CEA5 - C1AC B3D9 DE8A DE8B CCF6 DE8C E5C6 E5C4 - E5C8 DE8D E5CA E5C7 B5CF C6C8 DE8E B5FC - E5C5 DE8F CAF6 DE90 DE91 E5C9 DE92 DE93 - DE94 C3D4 B1C5 BCA3 DE95 DE96 DE97 D7B7 - DE98 DE99 CDCB CBCD CACA CCD3 E5CC E5CB - C4E6 DE9A DE9B D1A1 D1B7 E5CD DE9C E5D0 - DE9D CDB8 D6F0 E5CF B5DD DE9E CDBE DE9F - E5D1 B6BA DEA0 DF40 CDA8 B9E4 DF41 CAC5 - B3D1 CBD9 D4EC E5D2 B7EA DF42 DF43 DF44 - E5CE FFFD FFFD FFFD FFFD FFFD FFFD E5D5 - B4FE E5D6 DF4B DF4C DF4D DF4E DF4F E5D3 - E5D4 DF50 D2DD DF51 DF52 C2DF B1C6 DF53 - D3E2 DF54 DF55 B6DD CBEC DF56 E5D7 DF57 - DF58 D3F6 DF59 DF5A DF5B DF5C DF5D B1E9 - DF5E B6F4 E5DA E5D8 E5D9 B5C0 DF5F DF60 - DF61 D2C5 E5DC DF62 DF63 E5DE FFFD FFFD - FFFD FFFD FFFD FFFD E5DD C7B2 DF6A D2A3 - DF6B DF6C E5DB DF6D DF6E DF6F DF70 D4E2 - D5DA DF71 DF72 DF73 DF74 DF75 E5E0 D7F1 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E5E1 - DF7D B1DC D1FB DF7E E5E2 E5E4 DF80 DF81 - DF82 DF83 E5E3 DF84 DF85 E5E5 DF86 DF87 - DF88 DF89 DF8A D2D8 DF8B B5CB DF8C E7DF - DF8D DAF5 DF8E DAF8 DF8F DAF6 DF90 DAF7 - DF91 DF92 DF93 DAFA D0CF C4C7 DF94 DF95 - B0EE DF96 DF97 DF98 D0B0 DF99 DAF9 DF9A - D3CA BAAA DBA2 C7F1 DF9B DAFC DAFB C9DB - DAFD DF9C DBA1 D7DE DAFE C1DA DF9D DF9E - DBA5 DF9F DFA0 D3F4 E040 E041 DBA7 DBA4 - E042 DBA8 E043 E044 BDBC E045 E046 E047 - C0C9 DBA3 DBA6 D6A3 E048 DBA9 E049 E04A - E04B DBAD E04C E04D E04E DBAE DBAC BAC2 - E04F E050 E051 BFA4 DBAB E052 E053 E054 - DBAA D4C7 B2BF E055 E056 DBAF E057 B9F9 - E058 DBB0 E059 E05A E05B E05C B3BB E05D - E05E E05F B5A6 E060 E061 E062 E063 B6BC - DBB1 E064 E065 E066 B6F5 E067 DBB2 -End of Item 0313 - -Begin of Item 0314 - Format 1 - srcBegin = 9119 - srcEnd = 9123 - mappingOffset = 392F - Mapping = - B1C9 E07C E07D E07E E080 DBB4 E081 E082 - E083 DBB3 DBB5 -End of Item 0314 - -Begin of Item 0315 - Format 1 - srcBegin = 912F - srcEnd = 91BB - mappingOffset = 393A - Mapping = - DBB7 E08F DBB6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DBB8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD DBB9 E0A0 E140 DBBA - E141 E142 D3CF F4FA C7F5 D7C3 C5E4 F4FC - F4FD F4FB E143 BEC6 E144 E145 E146 E147 - D0EF E148 E149 B7D3 E14A E14B D4CD CCAA - E14C E14D F5A2 F5A1 BAA8 F4FE CBD6 E14E - E14F E150 F5A4 C0D2 E151 B3EA E152 CDAA - F5A5 F5A3 BDB4 F5A8 E153 F5A9 BDCD C3B8 - BFE1 CBE1 F5AA E154 E155 E156 F5A6 F5A7 - C4F0 E157 E158 E159 E15A E15B F5AC E15C - B4BC E15D D7ED E15E B4D7 F5AB F5AE E15F - E160 F5AD F5AF D0D1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C3D1 C8A9 FFFD FFFD FFFD - FFFD FFFD FFFD F5B0 F5B1 FFFD FFFD FFFD - FFFD FFFD FFFD F5B2 E174 E175 F5B3 F5B4 - F5B5 E176 E177 E178 E179 F5B7 F5B6 E17A - E17B E17C E17D F5B8 E17E -End of Item 0315 - -Begin of Item 0316 - Format 1 - srcBegin = 91C7 - srcEnd = 91DC - mappingOffset = 39C7 - Mapping = - B2C9 E18B D3D4 CACD E18C C0EF D6D8 D2B0 - C1BF E18D BDF0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B8AA -End of Item 0316 - -Begin of Item 0317 - Format 2 - srcBegin = 9274 - destBegin = BCF8 -End of Item 0317 - -Begin of Item 0318 - Format 2 - srcBegin = 928E - destBegin = F6C6 -End of Item 0318 - -Begin of Item 0319 - Format 2 - srcBegin = 92AE - destBegin = F6C7 -End of Item 0319 - -Begin of Item 031A - Format 2 - srcBegin = 92C8 - destBegin = F6C8 -End of Item 031A - -Begin of Item 031B - Format 2 - srcBegin = 933E - destBegin = F6C9 -End of Item 031B - -Begin of Item 031C - Format 1 - srcBegin = 936A - srcEnd = 936B - mappingOffset = 39DD - Mapping = - F6CA E5A0 -End of Item 031C - -Begin of Item 031D - Format 2 - srcBegin = 938F - destBegin = F6CC -End of Item 031D - -Begin of Item 031E - Format 1 - srcBegin = 93CA - srcEnd = 93D6 - mappingOffset = 39DF - Mapping = - F6CB E69E E69F E6A0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F7E9 -End of Item 031E - -Begin of Item 031F - Format 2 - srcBegin = 943E - destBegin = F6CD -End of Item 031F - -Begin of Item 0320 - Format 1 - srcBegin = 946B - srcEnd = 946F - mappingOffset = 39EC - Mapping = - F6CE E87B E87C E87D E87E -End of Item 0320 - -Begin of Item 0321 - Format 1 - srcBegin = 9485 - srcEnd = 957F - mappingOffset = 39F1 - Mapping = - EEC4 EEC5 EEC6 D5EB B6A4 EEC8 EEC7 EEC9 - EECA C7A5 EECB EECC E895 B7B0 B5F6 EECD - EECF E896 EECE E897 B8C6 EED0 EED1 EED2 - B6DB B3AE D6D3 C4C6 B1B5 B8D6 EED3 EED4 - D4BF C7D5 BEFB CED9 B9B3 EED6 EED5 EED8 - EED7 C5A5 EED9 EEDA C7AE EEDB C7AF EEDC - B2A7 EEDD EEDE EEDF EEE0 EEE1 D7EA EEE2 - EEE3 BCD8 EEE4 D3CB CCFA B2AC C1E5 EEE5 - C7A6 C3AD E898 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E899 EEED EEEE EEEF E89A E89B - EEF0 EEF1 EEF2 EEF4 EEF3 E89C EEF5 CDAD - C2C1 EEF6 EEF7 EEF8 D5A1 EEF9 CFB3 EEFA - EEFB E89D EEFC EEFD EFA1 EEFE EFA2 B8F5 - C3FA EFA3 EFA4 BDC2 D2BF B2F9 EFA5 EFA6 - EFA7 D2F8 EFA8 D6FD EFA9 C6CC E89E EFAA - EFAB C1B4 EFAC CFFA CBF8 EFAE EFAD B3FA - B9F8 EFAF EFB0 D0E2 EFB1 EFB2 B7E6 D0BF - EFB3 EFB4 EFB5 C8F1 CCE0 EFB6 EFB7 EFB8 - EFB9 EFBA D5E0 EFBB B4ED C3AA EFBC E89F - EFBD EFBE EFBF E8A0 CEFD EFC0 C2E0 B4B8 - D7B6 BDF5 E940 CFC7 EFC3 EFC1 EFC2 EFC4 - B6A7 BCFC BEE2 C3CC EFC5 EFC6 E941 EFC7 - EFCF EFC8 EFC9 EFCA C7C2 EFF1 B6CD EFCB - E942 EFCC EFCD B6C6 C3BE EFCE E943 EFD0 - EFD1 EFD2 D5F2 E944 EFD3 C4F7 E945 EFD4 - C4F8 EFD5 EFD6 B8E4 B0F7 EFD7 EFD8 EFD9 - E946 EFDA EFDB EFDC EFDD E947 EFDE BEB5 - EFE1 EFDF EFE0 E948 EFE2 EFE3 C1CD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C0D8 E949 EFED C1AD EFEE EFEF EFF0 E94A - E94B CFE2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B3A4 -End of Item 0321 - -Begin of Item 0322 - Format 1 - srcBegin = 95E8 - srcEnd = 9677 - mappingOffset = 3AEC - Mapping = - C3C5 E3C5 C9C1 E3C6 EA5C B1D5 CECA B4B3 - C8F2 E3C7 CFD0 E3C8 BCE4 E3C9 E3CA C3C6 - D5A2 C4D6 B9EB CEC5 E3CB C3F6 E3CC EA5D - B7A7 B8F3 BAD2 E3CD E3CE D4C4 E3CF EA5E - E3D0 D1CB E3D1 E3D2 E3D3 E3D4 D1D6 E3D5 - B2FB C0BB E3D6 EA5F C0AB E3D7 E3D8 E3D9 - EA60 E3DA E3DB EA61 B8B7 DAE2 EA62 B6D3 - EA63 DAE4 DAE3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD DAE6 EA6B EA6C EA6D C8EE EA6E - EA6F DAE5 B7C0 D1F4 D2F5 D5F3 BDD7 EA70 - EA71 EA72 EA73 D7E8 DAE8 DAE7 EA74 B0A2 - CDD3 EA75 DAE9 EA76 B8BD BCCA C2BD C2A4 - B3C2 DAEA EA77 C2AA C4B0 BDB5 EA78 EA79 - CFDE EA7A EA7B EA7C DAEB C9C2 EA7D EA7E - EA80 EA81 EA82 B1DD EA83 EA84 EA85 DAEC - EA86 B6B8 D4BA EA87 B3FD EA88 EA89 DAED - D4C9 CFD5 C5E3 EA8A DAEE EA8B EA8C EA8D - EA8E EA8F DAEF EA90 DAF0 C1EA CCD5 CFDD -End of Item 0322 - -Begin of Item 0323 - Format 1 - srcBegin = 9685 - srcEnd = 973E - mappingOffset = 3B7C - Mapping = - D3E7 C2A1 EA9E DAF1 EA9F EAA0 CBE5 EB40 - DAF2 EB41 CBE6 D2FE EB42 EB43 EB44 B8F4 - EB45 EB46 DAF3 B0AF CFB6 EB47 EB48 D5CF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CBED FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD DAF4 EB5B EB5C E3C4 EB5D - EB5E C1A5 EB5F EB60 F6BF EB61 EB62 F6C0 - F6C1 C4D1 EB63 C8B8 D1E3 EB64 EB65 D0DB - D1C5 BCAF B9CD EB66 EFF4 EB67 EB68 B4C6 - D3BA F6C2 B3FB EB69 EB6A F6C3 EB6B EB6C - B5F1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F6C5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD D3EA F6A7 D1A9 EB7E EB80 - EB81 EB82 F6A9 EB83 EB84 EB85 F6A8 EB86 - EB87 C1E3 C0D7 EB88 B1A2 EB89 EB8A EB8B - EB8C CEED EB8D D0E8 F6AB EB8E EB8F CFF6 - EB90 F6AA D5F0 F6AC C3B9 EB91 EB92 EB93 - BBF4 F6AE F6AD EB94 EB95 EB96 C4DE EB97 - EB98 C1D8 EB99 EB9A EB9B EB9C EB9D CBAA - EB9E CFBC EB9F EBA0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F6AF EC49 EC4A - F6B0 EC4B EC4C F6B1 EC4D C2B6 EC4E EC4F - EC50 EC51 EC52 B0D4 C5F9 EC53 EC54 EC55 - EC56 F6B2 -End of Item 0323 - -Begin of Item 0324 - Format 1 - srcBegin = 9752 - srcEnd = 97B4 - mappingOffset = 3C36 - Mapping = - C7E0 F6A6 EC6A EC6B BEB8 EC6C EC6D BEB2 - EC6E B5E5 EC6F EC70 B7C7 EC71 BFBF C3D2 - C3E6 EC72 EC73 D8CC EC74 EC75 EC76 B8EF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EC80 BDF9 D1A5 EC81 B0D0 EC82 EC83 EC84 - EC85 EC86 F7B0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD F7B1 EC8F EC90 EC91 EC92 - EC93 D0AC EC94 B0B0 EC95 EC96 EC97 F7B2 - F7B3 EC98 F7B4 EC99 EC9A EC9B C7CA EC9C - EC9D EC9E EC9F ECA0 ED40 ED41 BECF ED42 - ED43 F7B7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD F7B6 ED4B B1DE ED4C F7B5 ED4D ED4E - F7B8 ED4F F7B9 -End of Item 0324 - -Begin of Item 0325 - Format 1 - srcBegin = 97E4 - srcEnd = 97F6 - mappingOffset = 3C99 - Mapping = - ED80 ED81 CEA4 C8CD ED82 BAAB E8B8 E8B9 - E8BA BEC2 ED83 ED84 ED85 ED86 ED87 D2F4 - ED88 D4CF C9D8 -End of Item 0325 - -Begin of Item 0326 - Format 1 - srcBegin = 9875 - srcEnd = 98A7 - mappingOffset = 3CAC - Mapping = - D2B3 B6A5 C7EA F1FC CFEE CBB3 D0EB E7EF - CDE7 B9CB B6D9 F1FD B0E4 CBCC F1FE D4A4 - C2AD C1EC C6C4 BEB1 F2A1 BCD5 EF46 F2A2 - F2A3 EF47 F2A4 D2C3 C6B5 EF48 CDC7 F2A5 - EF49 D3B1 BFC5 CCE2 EF4A F2A6 F2A7 D1D5 - B6EE F2A8 F2A9 B5DF F2AA F2AB EF4B B2FC - F2AC F2AD C8A7 -End of Item 0326 - -Begin of Item 0327 - Format 1 - srcBegin = 98CE - srcEnd = 98E8 - mappingOffset = 3CDF - Mapping = - B7E7 EF72 EF73 ECA9 ECAA ECAB EF74 ECAC - EF75 EF76 C6AE ECAD ECAE EF77 EF78 EF79 - B7C9 CAB3 EF7A EF7B EF7C EF7D EF7E EF80 - EF81 E2B8 F7CF -End of Item 0327 - -Begin of Item 0328 - Format 1 - srcBegin = 9908 - srcEnd = 9910 - mappingOffset = 3CFA - Mapping = - F040 F041 F042 F043 F044 F7D0 F045 F046 - B2CD -End of Item 0328 - -Begin of Item 0329 - Format 2 - srcBegin = 992E - destBegin = F7D1 -End of Item 0329 - -Begin of Item 032A - Format 1 - srcBegin = 9954 - srcEnd = 9955 - mappingOffset = 3D03 - Mapping = - F7D3 F7D2 -End of Item 032A - -Begin of Item 032B - Format 1 - srcBegin = 9963 - srcEnd = 9999 - mappingOffset = 3D05 - Mapping = - E2BB F097 BCA2 F098 FFFD FFFD FFFD FFFD - FFFD FFFD B7B9 D2FB BDA4 CACE B1A5 CBC7 - F099 E2C2 B6FC C8C4 E2C3 F09A F09B BDC8 - F09C B1FD E2C4 F09D B6F6 E2C5 C4D9 F09E - F09F E2C6 CFDA B9DD E2C7 C0A1 F0A0 E2C8 - B2F6 F140 E2C9 F141 C1F3 E2CA E2CB C2F8 - E2CC E2CD E2CE CAD7 D8B8 D9E5 CFE3 -End of Item 032B - -Begin of Item 032C - Format 1 - srcBegin = 99A5 - srcEnd = 99A8 - mappingOffset = 3D3C - Mapping = - F0A5 F14D F14E DCB0 -End of Item 032C - -Begin of Item 032D - Format 1 - srcBegin = 9A6C - srcEnd = 9B13 - mappingOffset = 3D40 - Mapping = - C2ED D4A6 CDD4 D1B1 B3DB C7FD F352 B2B5 - C2BF E6E0 CABB E6E1 E6E2 BED4 E6E3 D7A4 - CDD5 E6E5 BCDD E6E4 E6E6 E6E7 C2EE F353 - BDBE E6E8 C2E6 BAA7 E6E9 F354 E6EA B3D2 - D1E9 F355 F356 BFA5 E6EB C6EF E6EC E6ED - F357 F358 E6EE C6AD E6EF F359 C9A7 E6F0 - E6F1 E6F2 E5B9 E6F3 E6F4 C2E2 E6F5 E6F6 - D6E8 E6F7 F35A E6F8 B9C7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD F7BB F7BA F362 F363 - F364 F365 F7BE F7BC BAA1 F366 F7BF F367 - F7C0 F368 F369 F36A F7C2 F7C1 F7C4 F36B - F36C F7C3 F36D F36E F36F F370 F371 F7C5 - F7C6 F372 F373 F374 F375 F7C7 F376 CBE8 - F377 F378 F379 F37A B8DF F37B F37C F37D - F37E F380 F381 F7D4 F382 F7D5 F383 F384 - F385 F386 F7D6 F387 F388 F389 F38A F7D8 - F38B F7DA F38C F7D7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F7DB F396 F7D9 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D7D7 - F39E F39F F3A0 F440 F7DC FFFD FFFD FFFD - FFFD FFFD FFFD F7DD F447 F448 F449 F7DE -End of Item 032D - -Begin of Item 032E - Format 1 - srcBegin = 9B1F - srcEnd = 9B23 - mappingOffset = 3DE8 - Mapping = - F7DF F455 F456 F457 F7E0 -End of Item 032E - -Begin of Item 032F - Format 1 - srcBegin = 9B2F - srcEnd = 9B54 - mappingOffset = 3DED - Mapping = - DBCB F463 F464 D8AA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E5F7 B9ED F46D F46E - F46F F470 BFFD BBEA F7C9 C6C7 F7C8 F471 - F7CA F7CC F7CB F472 F473 F474 F7CD F475 - CEBA F476 F7CE F477 F478 C4A7 -End of Item 032F - -Begin of Item 0330 - Format 1 - srcBegin = 9C7B - srcEnd = 9CE2 - mappingOffset = 3E13 - Mapping = - F780 D3E3 F781 F782 F6CF F783 C2B3 F6D0 - F784 F785 F6D1 F6D2 F6D3 F6D4 F786 F787 - F6D6 F788 B1AB F6D7 F789 F6D8 F6D9 F6DA - F78A F6DB F6DC F78B F78C F78D F78E F6DD - F6DE CFCA F78F FFFD FFFD FFFD FFFD FFFD - FFFD C0F0 F6E5 F6E6 F6E7 F6E8 F6E9 F790 - F6EA F791 F6EB F6EC F792 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BEA8 F793 F6F5 - F6F6 F6F7 F6F8 F794 F795 F796 F797 F798 - C8FA F6F9 F6FA F6FB F6FC F799 F79A F6FD - F6FE F7A1 F7A2 F7A3 F7A4 F7A5 F79B F79C - F7A6 F7A7 F7A8 B1EE F7A9 F7AA F7AB F79D - F79E F7AC F7AD C1DB F7AE F79F F7A0 F7AF -End of Item 0330 - -Begin of Item 0331 - Format 1 - srcBegin = 9E1F - srcEnd = 9F44 - mappingOffset = 3E7B - Mapping = - C4F1 F0AF BCA6 F0B0 C3F9 FB5C C5B8 D1BB - FB5D F0B1 F0B2 F0B3 F0B4 F0B5 D1BC FB5E - D1EC FB5F F0B7 F0B6 D4A7 FB60 CDD2 F0B8 - F0BA F0B9 F0BB F0BC FB61 FB62 B8EB F0BD - BAE8 FB63 F0BE F0BF BEE9 F0C0 B6EC F0C1 - F0C2 F0C3 F0C4 C8B5 F0C5 F0C6 FB64 F0C7 - C5F4 FB65 F0C8 FB66 FB67 FB68 F0C9 FB69 - F0CA F7BD FB6A F0CB F0CC F0CD FB6B F0CE - FB6C FB6D FB6E FB6F F0CF BAD7 FB70 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F0D8 FB71 - FB72 D3A5 F0D7 FB73 F0D9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F5BA - C2B9 FB7E FB80 F7E4 FB81 FB82 FB83 FB84 - F7E5 F7E6 FB85 FB86 F7E7 FFFD FFFD FFFD - FFFD FFFD FFFD F7E8 C2B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD F7EA FB96 - F7EB FFFD FFFD FFFD FFFD FFFD FFFD C2F3 - FB9D FB9E FB9F FBA0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F4F0 FC49 FC4A - FC4B F4EF FC4C FC4D C2E9 FC4E F7E1 F7E2 - FC4F FC50 FC51 FC52 FC53 BBC6 FC54 FC55 - FC56 FC57 D9E4 FC58 FC59 FC5A CAF2 C0E8 - F0A4 FC5B BADA FC5C FC5D C7AD FC5E FC5F - FC60 C4AC FC61 FC62 F7EC F7ED F7EE FC63 - F7F0 F7EF FC64 F7F1 FC65 FC66 F7F4 FC67 - F7F3 FC68 F7F2 F7F5 FC69 FC6A FC6B FC6C - F7F6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD EDE9 FC76 EDEA EDEB FC77 F6BC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FC80 - FC81 FC82 FC83 FC84 F6BD FC85 F6BE B6A6 - FC86 D8BE FC87 FC88 B9C4 FC89 FC8A FC8B - D8BB FC8C DCB1 FFFD FFFD FFFD FFFD FFFD - FFFD CAF3 FC93 F7F7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD F7F8 FC9D FC9E - F7F9 FC9F FCA0 FD40 FD41 FD42 FD43 FD44 - F7FB FD45 F7FA FD46 B1C7 FD47 F7FC F7FD - FD48 FD49 FD4A FD4B FD4C F7FE -End of Item 0331 - -Begin of Item 0332 - Format 1 - srcBegin = 9F50 - srcEnd = 9F51 - mappingOffset = 3FA1 - Mapping = - C6EB ECB4 -End of Item 0332 - -Begin of Item 0333 - Format 1 - srcBegin = 9F7F - srcEnd = 9F8C - mappingOffset = 3FA3 - Mapping = - B3DD F6B3 FD86 FD87 F6B4 C1E4 FFFD FFFD - FFFD FFFD FFFD FFFD C8A3 F6BB -End of Item 0333 - -Begin of Item 0334 - Format 1 - srcBegin = 9F99 - srcEnd = 9FA5 - mappingOffset = 3FB1 - Mapping = - C1FA B9A8 EDE8 FD94 FD95 FD96 B9EA D9DF - FD97 FD98 FD99 FD9A FD9B -End of Item 0334 - -Begin of Item 0335 - Format 1 - srcBegin = E7C7 - srcEnd = E7C8 - mappingOffset = 3FBE - Mapping = - A8BC A8BF -End of Item 0335 - -Begin of Item 0336 - Format 2 - srcBegin = F92C - destBegin = FD9C -End of Item 0336 - -Begin of Item 0337 - Format 2 - srcBegin = F979 - destBegin = FD9D -End of Item 0337 - -Begin of Item 0338 - Format 2 - srcBegin = F995 - destBegin = FD9E -End of Item 0338 - -Begin of Item 0339 - Format 1 - srcBegin = F9E7 - srcEnd = F9F1 - mappingOffset = 3FC0 - Mapping = - FD9F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FDA0 -End of Item 0339 - -Begin of Item 033A - Format 1 - srcBegin = FA0C - srcEnd = FA29 - mappingOffset = 3FCB - Mapping = - FE40 FE41 FE42 FE43 FFFD FE44 FFFD FE45 - FE46 FFFD FFFD FFFD FE47 FFFD FFFD FFFD - FFFD FFFD FFFD FE48 FE49 FE4A FFFD FE4B - FE4C FFFD FFFD FE4D FE4E FE4F -End of Item 033A - -Begin of Item 033B - Format 1 - srcBegin = FE30 - srcEnd = FE44 - mappingOffset = 3FE9 - Mapping = - A955 A6F2 FFFD A6F4 A6F5 A6E0 A6E1 A6F0 - A6F1 A6E2 A6E3 A6EE A6EF A6E6 A6E7 A6E4 - A6E5 A6E8 A6E9 A6EA A6EB -End of Item 033B - -Begin of Item 033C - Format 1 - srcBegin = FE54 - srcEnd = FE6B - mappingOffset = 3FFE - Mapping = - A972 A973 A974 A975 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD A980 A981 - A982 A983 A984 FFFD A985 A986 A987 A988 -End of Item 033C - -Begin of Item 033D - Format 1 - srcBegin = FF01 - srcEnd = FF04 - mappingOffset = 4016 - Mapping = - A3A1 A3A2 A3A3 A1E7 -End of Item 033D - -Begin of Item 033E - Format 2 - srcBegin = FF5E - destBegin = A1AB -End of Item 033E - -Begin of Item 033F - Format 1 - srcBegin = FFE0 - srcEnd = FFE5 - mappingOffset = 401A - Mapping = - A1E9 A1EA A956 A3FE A957 A3A4 -End of Item 033F - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0340, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x00D5, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0A95, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x026B */ -/* Total of Format 1 : 0x00AC */ -/* Total of Format 2 : 0x0029 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x1000, 0x1211, 0x2212, 0x2221, 0x1111, 0x2111, -0x1122, 0x1111, 0x2211, 0x1111, 0x1111, 0x1121, 0x1121, 0x1111, -0x1111, 0x1211, 0x1111, 0x1212, 0x1111, 0x1211, 0x1111, 0x1111, -0x1111, 0x1111, 0x2111, 0x1111, 0x2111, 0x1121, 0x1111, 0x1121, -0x1111, 0x1211, 0x1211, 0x2111, 0x1111, 0x1112, 0x1111, 0x1111, -0x1111, 0x1111, 0x1212, 0x1111, 0x1211, 0x2111, 0x2222, 0x2121, -0x1111, 0x1111, 0x1121, 0x1111, 0x1111, 0x2211, 0x1112, 0x1211, -0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x00D5 Start of MapCell Array */ -/* 0000 */ 0x0391, 0x03A1, 0xA6A1, -/* 0001 */ 0x03A3, 0x03A9, 0xA6B2, -/* 0002 */ 0x03B1, 0x03C1, 0xA6C1, -/* 0003 */ 0x03C3, 0x03C9, 0xA6D2, -/* 0004 */ 0x0410, 0x0415, 0xA7A1, -/* 0005 */ 0x0416, 0x042F, 0xA7A8, -/* 0006 */ 0x0430, 0x0435, 0xA7D1, -/* 0007 */ 0x0436, 0x044F, 0xA7D8, -/* 0008 */ 0x2160, 0x216B, 0xA2F1, -/* 0009 */ 0x2170, 0x2179, 0xA2A1, -/* 000A */ 0x2460, 0x2469, 0xA2D9, -/* 000B */ 0x2474, 0x2487, 0xA2C5, -/* 000C */ 0x2488, 0x249B, 0xA2B1, -/* 000D */ 0x2500, 0x254B, 0xA9A4, -/* 000E */ 0x2550, 0x2573, 0xA854, -/* 000F */ 0x2581, 0x2587, 0xA878, -/* 0010 */ 0x2588, 0x258F, 0xA880, -/* 0011 */ 0x3008, 0x300F, 0xA1B4, -/* 0012 */ 0x3021, 0x3029, 0xA940, -/* 0013 */ 0x3041, 0x3093, 0xA4A1, -/* 0014 */ 0x30A1, 0x30F6, 0xA5A1, -/* 0015 */ 0x3105, 0x3129, 0xA8C5, -/* 0016 */ 0x3220, 0x3229, 0xA2E5, -/* 0017 */ 0x4E6A, 0x4E6F, 0x8165, -/* 0018 */ 0x4E74, 0x4E7D, 0x816C, -/* 0019 */ 0x4E7F, 0x4E85, 0x8176, -/* 001A */ 0x4F02, 0x4F08, 0x81AC, -/* 001B */ 0x4F47, 0x4F4C, 0x81D0, -/* 001C */ 0x4FB6, 0x4FBE, 0x8248, -/* 001D */ 0x4FFF, 0x500A, 0x8273, -/* 001E */ 0x502F, 0x5039, 0x8291, -/* 001F */ 0x505D, 0x5064, 0x82B3, -/* 0020 */ 0x5066, 0x506B, 0x82BB, -/* 0021 */ 0x506D, 0x5075, 0x82C1, -/* 0022 */ 0x508E, 0x50A2, 0x82D9, -/* 0023 */ 0x50B3, 0x50B9, 0x82F7, -/* 0024 */ 0x50BD, 0x50CE, 0x8340, -/* 0025 */ 0x50D0, 0x50D5, 0x8352, -/* 0026 */ 0x50DB, 0x50E5, 0x835B, -/* 0027 */ 0x50FC, 0x5105, 0x8374, -/* 0028 */ 0x510C, 0x5111, 0x8382, -/* 0029 */ 0x5113, 0x5120, 0x8388, -/* 002A */ 0x5122, 0x513E, 0x8396, -/* 002B */ 0x51D2, 0x51D7, 0x83F9, -/* 002C */ 0x51E5, 0x51EA, 0x8448, -/* 002D */ 0x5244, 0x5249, 0x8471, -/* 002E */ 0x5273, 0x527C, 0x8491, -/* 002F */ 0x5289, 0x528F, 0x84A2, -/* 0030 */ 0x5294, 0x529A, 0x84AB, -/* 0031 */ 0x52B4, 0x52BD, 0x84BA, -/* 0032 */ 0x52D9, 0x52DE, 0x84D5, -/* 0033 */ 0x52E5, 0x52EF, 0x84DF, -/* 0034 */ 0x52F1, 0x52F8, 0x84EA, -/* 0035 */ 0x532F, 0x5338, 0x8552, -/* 0036 */ 0x53AF, 0x53B5, 0x8593, -/* 0037 */ 0x5469, 0x5470, 0x85E1, -/* 0038 */ 0x54F4, 0x54F9, 0x865D, -/* 0039 */ 0x5515, 0x551A, 0x8672, -/* 003A */ 0x556F, 0x5574, 0x86A9, -/* 003B */ 0x55A0, 0x55A6, 0x86C1, -/* 003C */ 0x55A8, 0x55B0, 0x86C8, -/* 003D */ 0x5610, 0x5617, 0x8745, -/* 003E */ 0x5640, 0x564B, 0x8765, -/* 003F */ 0x567D, 0x5684, 0x8790, -/* 0040 */ 0x5687, 0x568D, 0x8798, -/* 0041 */ 0x5694, 0x56A2, 0x87A2, -/* 0042 */ 0x56A4, 0x56AE, 0x87B1, -/* 0043 */ 0x56B0, 0x56B6, 0x87BC, -/* 0044 */ 0x56BD, 0x56C9, 0x87C7, -/* 0045 */ 0x56CB, 0x56D3, 0x87D4, -/* 0046 */ 0x56E5, 0x56EA, 0x87E3, -/* 0047 */ 0x570B, 0x5711, 0x87F8, -/* 0048 */ 0x5712, 0x571B, 0x8840, -/* 0049 */ 0x5794, 0x579A, 0x888A, -/* 004A */ 0x57B9, 0x57C1, 0x88A0, -/* 004B */ 0x57C4, 0x57CA, 0x88A9, -/* 004C */ 0x57E5, 0x57EC, 0x88BD, -/* 004D */ 0x5836, 0x583D, 0x88F7, -/* 004E */ 0x583E, 0x5843, 0x8940, -/* 004F */ 0x5845, 0x584B, 0x8946, -/* 0050 */ 0x585F, 0x5864, 0x895A, -/* 0051 */ 0x586D, 0x587D, 0x8965, -/* 0052 */ 0x58A0, 0x58A7, 0x898D, -/* 0053 */ 0x58AA, 0x58BB, 0x8995, -/* 0054 */ 0x58C6, 0x58D0, 0x89AE, -/* 0055 */ 0x58D6, 0x58E3, 0x89BC, -/* 0056 */ 0x58E5, 0x58EA, 0x89CA, -/* 0057 */ 0x58FA, 0x5901, 0x89D8, -/* 0058 */ 0x5966, 0x5972, 0x8A56, -/* 0059 */ 0x59B3, 0x59B8, 0x8A85, -/* 005A */ 0x59BF, 0x59C5, 0x8A8E, -/* 005B */ 0x59ED, 0x59F8, 0x8AAB, -/* 005C */ 0x5A2A, 0x5A30, 0x8AD3, -/* 005D */ 0x5A4B, 0x5A54, 0x8AEB, -/* 005E */ 0x5A5B, 0x5A60, 0x8AF9, -/* 005F */ 0x5A6B, 0x5A73, 0x8B47, -/* 0060 */ 0x5A80, 0x5A91, 0x8B56, -/* 0061 */ 0x5A93, 0x5A99, 0x8B68, -/* 0062 */ 0x5A9C, 0x5AA9, 0x8B6F, -/* 0063 */ 0x5AC3, 0x5AC8, 0x8B8F, -/* 0064 */ 0x5AF2, 0x5B08, 0x8BB0, -/* 0065 */ 0x5B0A, 0x5B15, 0x8BC7, -/* 0066 */ 0x5B18, 0x5B31, 0x8BD3, -/* 0067 */ 0x5B38, 0x5B3F, 0x8BF0, -/* 0068 */ 0x5B41, 0x5B47, 0x8BF8, -/* 0069 */ 0x5B48, 0x5B4F, 0x8C40, -/* 006A */ 0x5BD4, 0x5BDC, 0x8C81, -/* 006B */ 0x5BF1, 0x5BF7, 0x8C95, -/* 006C */ 0x5C67, 0x5C6D, 0x8CD4, -/* 006D */ 0x5C72, 0x5C78, 0x8CDC, -/* 006E */ 0x5CC5, 0x5CCA, 0x8D4F, -/* 006F */ 0x5CCC, 0x5CD1, 0x8D55, -/* 0070 */ 0x5CD3, 0x5CD8, 0x8D5B, -/* 0071 */ 0x5CDA, 0x5CE0, 0x8D61, -/* 0072 */ 0x5CF1, 0x5CFA, 0x8D70, -/* 0073 */ 0x5D08, 0x5D0D, 0x8D83, -/* 0074 */ 0x5D35, 0x5D3C, 0x8DA4, -/* 0075 */ 0x5D3F, 0x5D46, 0x8DAC, -/* 0076 */ 0x5D4D, 0x5D57, 0x8DB6, -/* 0077 */ 0x5D5E, 0x5D68, 0x8DC4, -/* 0078 */ 0x5D75, 0x5D81, 0x8DD6, -/* 0079 */ 0x5D83, 0x5D98, 0x8DE3, -/* 007A */ 0x5DA1, 0x5DB6, 0x8E40, -/* 007B */ 0x5DB8, 0x5DC4, 0x8E56, -/* 007C */ 0x5DC6, 0x5DCC, 0x8E63, -/* 007D */ 0x5DCE, 0x5DDA, 0x8E6A, -/* 007E */ 0x5E1E, 0x5E25, 0x8E94, -/* 007F */ 0x5E46, 0x5E4B, 0x8EAF, -/* 0080 */ 0x5E4D, 0x5E53, 0x8EB5, -/* 0081 */ 0x5E63, 0x5E71, 0x8EC5, -/* 0082 */ 0x5EBF, 0x5EC5, 0x8EF8, -/* 0083 */ 0x5ECB, 0x5ED0, 0x8F43, -/* 0084 */ 0x5EDC, 0x5EE7, 0x8F4F, -/* 0085 */ 0x5EEB, 0x5EF3, 0x8F5C, -/* 0086 */ 0x5F32, 0x5F38, 0x8F85, -/* 0087 */ 0x5F41, 0x5F4F, 0x8F90, -/* 0088 */ 0x5FA2, 0x5FA7, 0x8FC7, -/* 0089 */ 0x5FAF, 0x5FB4, 0x8FD0, -/* 008A */ 0x6044, 0x604A, 0x905F, -/* 008B */ 0x60BD, 0x60C4, 0x90A2, -/* 008C */ 0x612C, 0x613E, 0x90E5, -/* 008D */ 0x6140, 0x6146, 0x90F8, -/* 008E */ 0x6156, 0x615C, 0x9149, -/* 008F */ 0x6169, 0x616F, 0x9158, -/* 0090 */ 0x6178, 0x618A, 0x9164, -/* 0091 */ 0x6196, 0x619C, 0x9180, -/* 0092 */ 0x619E, 0x61A6, 0x9187, -/* 0093 */ 0x61AD, 0x61B6, 0x9192, -/* 0094 */ 0x61B8, 0x61BD, 0x919C, -/* 0095 */ 0x61D5, 0x61E5, 0x91B1, -/* 0096 */ 0x61E7, 0x61F4, 0x91C2, -/* 0097 */ 0x61F6, 0x61FE, 0x91D0, -/* 0098 */ 0x6200, 0x6205, 0x91D9, -/* 0099 */ 0x625C, 0x6262, 0x9247, -/* 009A */ 0x628B, 0x6290, 0x9261, -/* 009B */ 0x6333, 0x6338, 0x92AE, -/* 009C */ 0x6356, 0x635D, 0x92C2, -/* 009D */ 0x6399, 0x639F, 0x92EA, -/* 009E */ 0x63D7, 0x63DD, 0x934D, -/* 009F */ 0x6415, 0x641A, 0x9374, -/* 00A0 */ 0x642E, 0x6433, 0x9385, -/* 00A1 */ 0x644B, 0x6451, 0x9397, -/* 00A2 */ 0x645F, 0x6466, 0x93A7, -/* 00A3 */ 0x646E, 0x6477, 0x93B3, -/* 00A4 */ 0x647B, 0x6481, 0x93BD, -/* 00A5 */ 0x6488, 0x6490, 0x93C6, -/* 00A6 */ 0x64C6, 0x64CC, 0x93F0, -/* 00A7 */ 0x64E7, 0x64FF, 0x9448, -/* 00A8 */ 0x6501, 0x6508, 0x9461, -/* 00A9 */ 0x650A, 0x6511, 0x9469, -/* 00AA */ 0x6519, 0x6521, 0x9476, -/* 00AB */ 0x6578, 0x6586, 0x94B5, -/* 00AC */ 0x65B1, 0x65B8, 0x94DA, -/* 00AD */ 0x65D8, 0x65DF, 0x94F2, -/* 00AE */ 0x6644, 0x664A, 0x9573, -/* 00AF */ 0x669E, 0x66A6, 0x95AF, -/* 00B0 */ 0x66BF, 0x66D8, 0x95CA, -/* 00B1 */ 0x66DE, 0x66E5, 0x95E5, -/* 00B2 */ 0x66EA, 0x66EF, 0x95EF, -/* 00B3 */ 0x6720, 0x6725, 0x9650, -/* 00B4 */ 0x67B9, 0x67C0, 0x96A2, -/* 00B5 */ 0x67C5, 0x67CE, 0x96AB, -/* 00B6 */ 0x67F5, 0x67FC, 0x96C5, -/* 00B7 */ 0x6822, 0x6828, 0x96E0, -/* 00B8 */ 0x682B, 0x6831, 0x96E7, -/* 00B9 */ 0x6856, 0x685B, 0x96F9, -/* 00BA */ 0x686C, 0x6873, 0x9745, -/* 00BB */ 0x6878, 0x6880, 0x974E, -/* 00BC */ 0x6887, 0x688E, 0x9759, -/* 00BD */ 0x6898, 0x68A1, 0x9767, -/* 00BE */ 0x68B9, 0x68BF, 0x9780, -/* 00BF */ 0x68C3, 0x68C8, 0x9788, -/* 00C0 */ 0x68E4, 0x68ED, 0x97A0, -/* 00C1 */ 0x6913, 0x691E, 0x97C1, -/* 00C2 */ 0x6925, 0x692C, 0x97D0, -/* 00C3 */ 0x6943, 0x6953, 0x97E7, -/* 00C4 */ 0x698E, 0x6993, 0x985C, -/* 00C5 */ 0x699D, 0x69A6, 0x9866, -/* 00C6 */ 0x69C2, 0x69C9, 0x9883, -/* 00C7 */ 0x69D5, 0x69DA, 0x9891, -/* 00C8 */ 0x69E1, 0x69EC, 0x989A, -/* 00C9 */ 0x69F3, 0x69FC, 0x98AA, -/* 00CA */ 0x6A00, 0x6A09, 0x98B5, -/* 00CB */ 0x6A0B, 0x6A16, 0x98BF, -/* 00CC */ 0x6A19, 0x6A1E, 0x98CB, -/* 00CD */ 0x6A22, 0x6A27, 0x98D2, -/* 00CE */ 0x6A36, 0x6A3C, 0x98E1, -/* 00CF */ 0x6A48, 0x6A4F, 0x98EF, -/* 00D0 */ 0x6A51, 0x6A57, 0x98F7, -/* 00D1 */ 0x6A66, 0x6A70, 0x9948, -/* 00D2 */ 0x6A72, 0x6A78, 0x9953, -/* 00D3 */ 0x6A85, 0x6A8D, 0x9962, -/* 00D4 */ 0x6A98, 0x6A9F, 0x9971, -/* 00D5 */ 0x6AA1, 0x6AA6, 0x9979, -/* 00D6 */ 0x6AAD, 0x6B1F, 0x9983, -/* 00D7 */ 0x6B28, 0x6B2E, 0x99F8, -/* 00D8 */ 0x6B4D, 0x6B58, 0x9A54, -/* 00D9 */ 0x6B5A, 0x6B61, 0x9A60, -/* 00DA */ 0x6B6B, 0x6B78, 0x9A6A, -/* 00DB */ 0x6BA2, 0x6BA9, 0x9A8F, -/* 00DC */ 0x6BAB, 0x6BB2, 0x9A97, -/* 00DD */ 0x6BB8, 0x6BBE, 0x9AA0, -/* 00DE */ 0x6BE2, 0x6BE9, 0x9ABA, -/* 00DF */ 0x6BFE, 0x6C04, 0x9ACF, -/* 00E0 */ 0x6D1F, 0x6D24, 0x9BA2, -/* 00E1 */ 0x6DB9, 0x6DBE, 0x9BF3, -/* 00E2 */ 0x6DFD, 0x6E04, 0x9C5D, -/* 00E3 */ 0x6E3B, 0x6E42, 0x9C83, -/* 00E4 */ 0x6E45, 0x6E4C, 0x9C8B, -/* 00E5 */ 0x6E60, 0x6E6A, 0x9C9E, -/* 00E6 */ 0x6E6F, 0x6E7D, 0x9CAB, -/* 00E7 */ 0x6E91, 0x6E97, 0x9CC5, -/* 00E8 */ 0x6EEA, 0x6EEF, 0x9CF9, -/* 00E9 */ 0x6EFA, 0x6F01, 0x9D48, -/* 00EA */ 0x6F16, 0x6F1F, 0x9D5D, -/* 00EB */ 0x6F37, 0x6F3D, 0x9D74, -/* 00EC */ 0x6F4E, 0x6F57, 0x9D87, -/* 00ED */ 0x6F67, 0x6F6C, 0x9D9B, -/* 00EE */ 0x6F7D, 0x6F83, 0x9DAA, -/* 00EF */ 0x6F8F, 0x6F9B, 0x9DB6, -/* 00F0 */ 0x6FA8, 0x6FB2, 0x9DCC, -/* 00F1 */ 0x6FBA, 0x6FBF, 0x9DDB, -/* 00F2 */ 0x6FC3, 0x6FC8, 0x9DE2, -/* 00F3 */ 0x6FCA, 0x6FD0, 0x9DE8, -/* 00F4 */ 0x6FD3, 0x6FDD, 0x9DEF, -/* 00F5 */ 0x6FE6, 0x6FED, 0x9E40, -/* 00F6 */ 0x6FF0, 0x7010, 0x9E48, -/* 00F7 */ 0x7012, 0x7019, 0x9E69, -/* 00F8 */ 0x701C, 0x7022, 0x9E71, -/* 00F9 */ 0x7024, 0x702A, 0x9E78, -/* 00FA */ 0x702B, 0x7034, 0x9E80, -/* 00FB */ 0x703A, 0x704B, 0x9E8D, -/* 00FC */ 0x7050, 0x705D, 0x9EA1, -/* 00FD */ 0x705F, 0x706A, 0x9EAF, -/* 00FE */ 0x709E, 0x70AA, 0x9ED7, -/* 00FF */ 0x70CB, 0x70D7, 0x9EF1, -/* 0100 */ 0x70F0, 0x70F6, 0x9F4A, -/* 0101 */ 0x70FE, 0x7108, 0x9F55, -/* 0102 */ 0x711B, 0x7125, 0x9F69, -/* 0103 */ 0x7127, 0x712E, 0x9F74, -/* 0104 */ 0x7137, 0x7144, 0x9F81, -/* 0105 */ 0x714F, 0x715B, 0x9F95, -/* 0106 */ 0x717E, 0x7183, 0x9FB8, -/* 0107 */ 0x71A1, 0x71A7, 0x9FD3, -/* 0108 */ 0x71AD, 0x71B2, 0x9FDD, -/* 0109 */ 0x71BA, 0x71C2, 0x9FE7, -/* 010A */ 0x71C4, 0x71CD, 0x9FF0, -/* 010B */ 0x71D6, 0x71DF, 0xA040, -/* 010C */ 0x71E8, 0x71ED, 0xA04F, -/* 010D */ 0x71EF, 0x71F8, 0xA055, -/* 010E */ 0x71FA, 0x7205, 0xA05F, -/* 010F */ 0x7207, 0x721A, 0xA06B, -/* 0110 */ 0x721E, 0x7227, 0xA082, -/* 0111 */ 0x7240, 0x7246, 0xA097, -/* 0112 */ 0x7293, 0x729E, 0xA0CB, -/* 0113 */ 0x72A0, 0x72AB, 0xA0D7, -/* 0114 */ 0x72BA, 0x72C0, 0xA0E8, -/* 0115 */ 0x72E2, 0x72E7, 0xAA43, -/* 0116 */ 0x7304, 0x7309, 0xAA53, -/* 0117 */ 0x7340, 0x7348, 0xAA76, -/* 0118 */ 0x7358, 0x735F, 0xAA8B, -/* 0119 */ 0x7361, 0x736B, 0xAA93, -/* 011A */ 0x7372, 0x737D, 0xAB40, -/* 011B */ 0x73A3, 0x73A8, 0xAB66, -/* 011C */ 0x73D2, 0x73D8, 0xAB83, -/* 011D */ 0x73F8, 0x7402, 0xAC40, -/* 011E */ 0x7411, 0x7419, 0xAC52, -/* 011F */ 0x741C, 0x7421, 0xAC5B, -/* 0120 */ 0x7442, 0x744D, 0xAC73, -/* 0121 */ 0x744E, 0x7454, 0xAC80, -/* 0122 */ 0x7460, 0x746C, 0xAC8A, -/* 0123 */ 0x7491, 0x749B, 0xAD4E, -/* 0124 */ 0x749F, 0x74A6, 0xAD5A, -/* 0125 */ 0x74AA, 0x74B9, 0xAD62, -/* 0126 */ 0x74BB, 0x74C7, 0xAD72, -/* 0127 */ 0x74C8, 0x74D1, 0xAD80, -/* 0128 */ 0x74D3, 0x74DB, 0xAD8A, -/* 0129 */ 0x74E7, 0x74ED, 0xAD97, -/* 012A */ 0x74F8, 0x74FE, 0xAE42, -/* 012B */ 0x7505, 0x750C, 0xAE4D, -/* 012C */ 0x755D, 0x7564, 0xAE80, -/* 012D */ 0x756B, 0x7571, 0xAE8B, -/* 012E */ 0x7645, 0x764B, 0xB040, -/* 012F */ 0x764E, 0x7653, 0xB047, -/* 0130 */ 0x7664, 0x766A, 0xB058, -/* 0131 */ 0x7670, 0x7677, 0xB062, -/* 0132 */ 0x769C, 0x76A3, 0xB080, -/* 0133 */ 0x76A5, 0x76AD, 0xB088, -/* 0134 */ 0x76B5, 0x76BE, 0xB094, -/* 0135 */ 0x76E6, 0x76ED, 0xB151, -/* 0136 */ 0x770E, 0x7718, 0xB169, -/* 0137 */ 0x7748, 0x774F, 0xB190, -/* 0138 */ 0x7752, 0x7759, 0xB198, -/* 0139 */ 0x776D, 0x7778, 0xB248, -/* 013A */ 0x7786, 0x778B, 0xB25A, -/* 013B */ 0x7793, 0x779E, 0xB262, -/* 013C */ 0x77C0, 0x77CC, 0xB282, -/* 013D */ 0x77CE, 0x77D6, 0xB28F, -/* 013E */ 0x7803, 0x7808, 0xB34E, -/* 013F */ 0x785E, 0x7869, 0xB382, -/* 0140 */ 0x786F, 0x7876, 0xB38E, -/* 0141 */ 0x787D, 0x7883, 0xB39A, -/* 0142 */ 0x78A8, 0x78AF, 0xB453, -/* 0143 */ 0x78DA, 0x78E3, 0xB475, -/* 0144 */ 0x78FB, 0x7900, 0xB491, -/* 0145 */ 0x7906, 0x790C, 0xB49A, -/* 0146 */ 0x790D, 0x7912, 0xB540, -/* 0147 */ 0x7914, 0x791D, 0xB546, -/* 0148 */ 0x7925, 0x7933, 0xB555, -/* 0149 */ 0x794A, 0x7952, 0xB570, -/* 014A */ 0x7970, 0x7976, 0xB587, -/* 014B */ 0x7993, 0x7999, 0xB640, -/* 014C */ 0x799B, 0x79A6, 0xB647, -/* 014D */ 0x79A8, 0x79B2, 0xB653, -/* 014E */ 0x79D9, 0x79DE, 0xB673, -/* 014F */ 0x79F1, 0x79F7, 0xB682, -/* 0150 */ 0x7A24, 0x7A32, 0xB744, -/* 0151 */ 0x7A40, 0x7A45, 0xB759, -/* 0152 */ 0x7A47, 0x7A50, 0xB75F, -/* 0153 */ 0x7A58, 0x7A68, 0xB76E, -/* 0154 */ 0x7A69, 0x7A6F, 0xB780, -/* 0155 */ 0x7AB4, 0x7ABE, 0xB84B, -/* 0156 */ 0x7AC0, 0x7ACA, 0xB856, -/* 0157 */ 0x7ACC, 0x7AD5, 0xB861, -/* 0158 */ 0x7AE7, 0x7AEC, 0xB874, -/* 0159 */ 0x7B3F, 0x7B44, 0xB94A, -/* 015A */ 0x7B63, 0x7B6D, 0xB95D, -/* 015B */ 0x7B86, 0x7B8C, 0xB976, -/* 015C */ 0x7BB9, 0x7BC0, 0xB996, -/* 015D */ 0x7BFF, 0x7C06, 0xBA69, -/* 015E */ 0x7C10, 0x7C15, 0xBA76, -/* 015F */ 0x7C20, 0x7C25, 0xBA85, -/* 0160 */ 0x7C2B, 0x7C37, 0xBA8D, -/* 0161 */ 0x7C39, 0x7C3E, 0xBA9A, -/* 0162 */ 0x7C43, 0x7C4C, 0xBB40, -/* 0163 */ 0x7C4E, 0x7C72, 0xBB4A, -/* 0164 */ 0x7C75, 0x7C7A, 0xBB6F, -/* 0165 */ 0x7C7E, 0x7C87, 0xBB75, -/* 0166 */ 0x7C8A, 0x7C90, 0xBB81, -/* 0167 */ 0x7CCE, 0x7CD4, 0xBC48, -/* 0168 */ 0x7CE1, 0x7CE7, 0xBC54, -/* 0169 */ 0x7CE9, 0x7CEE, 0xBC5B, -/* 016A */ 0x7CF0, 0x7CF7, 0xBC61, -/* 016B */ 0x7CFC, 0x7D09, 0xBC6B, -/* 016C */ 0x7D0B, 0x7D10, 0xBC79, -/* 016D */ 0x7D11, 0x7D1F, 0xBC80, -/* 016E */ 0x7D30, 0x7D36, 0xBC9A, -/* 016F */ 0x7D37, 0x7D6D, 0xBD40, -/* 0170 */ 0x7D6F, 0x7D76, 0xBD77, -/* 0171 */ 0x7D78, 0x7D98, 0xBD80, -/* 0172 */ 0x7D99, 0x7DA5, 0xBE40, -/* 0173 */ 0x7DA7, 0x7DAD, 0xBE4D, -/* 0174 */ 0x7DAF, 0x7DD9, 0xBE54, -/* 0175 */ 0x7DDA, 0x7DFA, 0xBE80, -/* 0176 */ 0x7DFB, 0x7E39, 0xBF40, -/* 0177 */ 0x7E48, 0x7E5D, 0xBF8B, -/* 0178 */ 0x7E5E, 0x7E81, 0xC040, -/* 0179 */ 0x7E83, 0x7E9A, 0xC064, -/* 017A */ 0x7F21, 0x7F27, 0xE7CA, -/* 017B */ 0x7F3B, 0x7F41, 0xC08D, -/* 017C */ 0x7F46, 0x7F4F, 0xC095, -/* 017D */ 0x7F82, 0x7F89, 0xC15C, -/* 017E */ 0x7FA8, 0x7FAE, 0xC177, -/* 017F */ 0x7FD9, 0x7FDE, 0xC199, -/* 0180 */ 0x7FF4, 0x7FFA, 0xC249, -/* 0181 */ 0x802B, 0x8030, 0xC264, -/* 0182 */ 0x805B, 0x8068, 0xC281, -/* 0183 */ 0x806B, 0x8070, 0xC28F, -/* 0184 */ 0x8072, 0x807D, 0xC295, -/* 0185 */ 0x808D, 0x8092, 0xC346, -/* 0186 */ 0x80CF, 0x80D5, 0xC363, -/* 0187 */ 0x811F, 0x812B, 0xC387, -/* 0188 */ 0x8140, 0x8145, 0xC440, -/* 0189 */ 0x8192, 0x8197, 0xC470, -/* 018A */ 0x81AB, 0x81B2, 0xC482, -/* 018B */ 0x81B4, 0x81B9, 0xC48A, -/* 018C */ 0x81CD, 0x81D3, 0xC49A, -/* 018D */ 0x81D4, 0x81E2, 0xC540, -/* 018E */ 0x81F5, 0x81FA, 0xC55A, -/* 018F */ 0x8215, 0x821A, 0xC56C, -/* 0190 */ 0x8250, 0x8257, 0xC58B, -/* 0191 */ 0x8260, 0x8267, 0xC598, -/* 0192 */ 0x831D, 0x8326, 0xC68F, -/* 0193 */ 0x8370, 0x8376, 0xC754, -/* 0194 */ 0x837E, 0x8384, 0xC75D, -/* 0195 */ 0x83A1, 0x83A7, 0xC775, -/* 0196 */ 0x8412, 0x8417, 0xC854, -/* 0197 */ 0x841E, 0x8423, 0xC85D, -/* 0198 */ 0x8429, 0x8430, 0xC863, -/* 0199 */ 0x8432, 0x8437, 0xC86B, -/* 019A */ 0x843E, 0x8445, 0xC874, -/* 019B */ 0x844A, 0x8450, 0xC880, -/* 019C */ 0x848F, 0x8496, 0xC94B, -/* 019D */ 0x84A2, 0x84AE, 0xC95A, -/* 019E */ 0x84F1, 0x84FB, 0xC991, -/* 019F */ 0x8503, 0x850B, 0xCA40, -/* 01A0 */ 0x8522, 0x852A, 0xCA58, -/* 01A1 */ 0x852D, 0x8536, 0xCA61, -/* 01A2 */ 0x854B, 0x8555, 0xCA74, -/* 01A3 */ 0x8569, 0x8571, 0xCA8E, -/* 01A4 */ 0x8588, 0x858E, 0xCB43, -/* 01A5 */ 0x8590, 0x859A, 0xCB4A, -/* 01A6 */ 0x859D, 0x85A3, 0xCB55, -/* 01A7 */ 0x85B1, 0x85B6, 0xCB63, -/* 01A8 */ 0x85BA, 0x85C0, 0xCB6A, -/* 01A9 */ 0x85C2, 0x85C8, 0xCB71, -/* 01AA */ 0x85D6, 0x85DB, 0xCB81, -/* 01AB */ 0x85DD, 0x85E3, 0xCB87, -/* 01AC */ 0x85EA, 0x85F8, 0xCB92, -/* 01AD */ 0x8606, 0x8610, 0xCC4A, -/* 01AE */ 0x8617, 0x8626, 0xCC59, -/* 01AF */ 0x862A, 0x8637, 0xCC6A, -/* 01B0 */ 0x8641, 0x864C, 0xCC80, -/* 01B1 */ 0x8663, 0x866A, 0xCC99, -/* 01B2 */ 0x8672, 0x8678, 0xCD43, -/* 01B3 */ 0x8683, 0x8689, 0xCD4A, -/* 01B4 */ 0x8696, 0x869B, 0xCD57, -/* 01B5 */ 0x8740, 0x8746, 0xCE58, -/* 01B6 */ 0x875A, 0x875F, 0xCE6A, -/* 01B7 */ 0x8766, 0x876D, 0xCE72, -/* 01B8 */ 0x8798, 0x879E, 0xCE95, -/* 01B9 */ 0x87D4, 0x87DA, 0xCF5F, -/* 01BA */ 0x87EF, 0x87F8, 0xCF75, -/* 01BB */ 0x8804, 0x8809, 0xCF88, -/* 01BC */ 0x880B, 0x8812, 0xCF8E, -/* 01BD */ 0x8824, 0x8831, 0xD040, -/* 01BE */ 0x8833, 0x8838, 0xD04E, -/* 01BF */ 0x8846, 0x884B, 0xD05C, -/* 01C0 */ 0x884E, 0x8853, 0xD062, -/* 01C1 */ 0x885A, 0x8860, 0xD06B, -/* 01C2 */ 0x88A5, 0x88AA, 0xD09B, -/* 01C3 */ 0x88E9, 0x88EF, 0xD168, -/* 01C4 */ 0x8903, 0x8908, 0xD179, -/* 01C5 */ 0x8938, 0x8940, 0xD240, -/* 01C6 */ 0x8945, 0x895D, 0xD24B, -/* 01C7 */ 0x8960, 0x8965, 0xD264, -/* 01C8 */ 0x8967, 0x897A, 0xD26A, -/* 01C9 */ 0x8987, 0x89A1, 0xD286, -/* 01CA */ 0x89A2, 0x89C0, 0xD340, -/* 01CB */ 0x89F4, 0x89FA, 0xD378, -/* 01CC */ 0x8A01, 0x8A06, 0xD385, -/* 01CD */ 0x8A08, 0x8A1D, 0xD38B, -/* 01CE */ 0x8A1E, 0x8A3D, 0xD440, -/* 01CF */ 0x8A3F, 0x8A47, 0xD460, -/* 01D0 */ 0x8A49, 0x8A5E, 0xD469, -/* 01D1 */ 0x8A5F, 0x8A78, 0xD480, -/* 01D2 */ 0x8A7A, 0x8A80, 0xD49A, -/* 01D3 */ 0x8A81, 0x8A88, 0xD540, -/* 01D4 */ 0x8A8B, 0x8A92, 0xD548, -/* 01D5 */ 0x8A94, 0x8AC2, 0xD550, -/* 01D6 */ 0x8AC3, 0x8AE3, 0xD580, -/* 01D7 */ 0x8AE4, 0x8B06, 0xD640, -/* 01D8 */ 0x8B08, 0x8B23, 0xD663, -/* 01D9 */ 0x8B27, 0x8B45, 0xD682, -/* 01DA */ 0x8B46, 0x8B65, 0xD740, -/* 01DB */ 0x8B6D, 0x8B86, 0xD765, -/* 01DC */ 0x8B87, 0x8B9F, 0xD780, -/* 01DD */ 0x8C38, 0x8C40, 0xD840, -/* 01DE */ 0x8C4D, 0x8C54, 0xD850, -/* 01DF */ 0x8C5B, 0x8C60, 0xD85C, -/* 01E0 */ 0x8C63, 0x8C69, 0xD862, -/* 01E1 */ 0x8C6C, 0x8C72, 0xD869, -/* 01E2 */ 0x8C7B, 0x8C81, 0xD874, -/* 01E3 */ 0x8C8D, 0x8C93, 0xD882, -/* 01E4 */ 0x8C99, 0x8CAD, 0xD88C, -/* 01E5 */ 0x8CAE, 0x8CEC, 0xD940, -/* 01E6 */ 0x8CED, 0x8D0D, 0xD980, -/* 01E7 */ 0x8D0E, 0x8D1C, 0xDA40, -/* 01E8 */ 0x8D78, 0x8D80, 0xDA5D, -/* 01E9 */ 0x8D95, 0x8D9E, 0xDA73, -/* 01EA */ 0x8DA4, 0x8DB0, 0xDA81, -/* 01EB */ 0x8DFE, 0x8E04, 0xDB53, -/* 01EC */ 0x8E15, 0x8E1C, 0xDB64, -/* 01ED */ 0x8E53, 0x8E58, 0xDB89, -/* 01EE */ 0x8E5A, 0x8E65, 0xDB8F, -/* 01EF */ 0x8E88, 0x8E8E, 0xDC4E, -/* 01F0 */ 0x8E95, 0x8E9B, 0xDC58, -/* 01F1 */ 0x8E9F, 0x8EAA, 0xDC60, -/* 01F2 */ 0x8EB3, 0x8EB9, 0xDC70, -/* 01F3 */ 0x8EBB, 0x8EC2, 0xDC77, -/* 01F4 */ 0x8EC3, 0x8ECD, 0xDC80, -/* 01F5 */ 0x8ECF, 0x8EE4, 0xDC8B, -/* 01F6 */ 0x8EE5, 0x8F23, 0xDD40, -/* 01F7 */ 0x8F24, 0x8F44, 0xDD80, -/* 01F8 */ 0x8F45, 0x8F65, 0xDE40, -/* 01F9 */ 0x9027, 0x902C, 0xDF45, -/* 01FA */ 0x905C, 0x9061, 0xDF64, -/* 01FB */ 0x9076, 0x907C, 0xDF76, -/* 01FC */ 0x9105, 0x9118, 0xE068, -/* 01FD */ 0x9124, 0x912E, 0xE084, -/* 01FE */ 0x9132, 0x9138, 0xE090, -/* 01FF */ 0x913A, 0x9142, 0xE097, -/* 0200 */ 0x9193, 0x9199, 0xE161, -/* 0201 */ 0x919C, 0x91A1, 0xE168, -/* 0202 */ 0x91A4, 0x91A9, 0xE16E, -/* 0203 */ 0x91BC, 0x91C6, 0xE180, -/* 0204 */ 0x91D2, 0x91DB, 0xE18E, -/* 0205 */ 0x91DD, 0x91E5, 0xE198, -/* 0206 */ 0x91E6, 0x9224, 0xE240, -/* 0207 */ 0x9225, 0x9245, 0xE280, -/* 0208 */ 0x9246, 0x9273, 0xE340, -/* 0209 */ 0x9275, 0x9285, 0xE36E, -/* 020A */ 0x9286, 0x928D, 0xE380, -/* 020B */ 0x928F, 0x92A7, 0xE388, -/* 020C */ 0x92A8, 0x92AD, 0xE440, -/* 020D */ 0x92AF, 0x92C7, 0xE446, -/* 020E */ 0x92C9, 0x92E8, 0xE45F, -/* 020F */ 0x92E9, 0x9309, 0xE480, -/* 0210 */ 0x930A, 0x933D, 0xE540, -/* 0211 */ 0x933F, 0x9349, 0xE574, -/* 0212 */ 0x934A, 0x9369, 0xE580, -/* 0213 */ 0x936C, 0x938E, 0xE640, -/* 0214 */ 0x9390, 0x93AB, 0xE663, -/* 0215 */ 0x93AC, 0x93C9, 0xE680, -/* 0216 */ 0x93CE, 0x93D5, 0xE740, -/* 0217 */ 0x93D7, 0x940D, 0xE748, -/* 0218 */ 0x940E, 0x942E, 0xE780, -/* 0219 */ 0x942F, 0x943D, 0xE840, -/* 021A */ 0x943F, 0x946A, 0xE84F, -/* 021B */ 0x9470, 0x9484, 0xE880, -/* 021C */ 0x94C8, 0x94CE, 0xEEE6, -/* 021D */ 0x9564, 0x956C, 0xEFE4, -/* 021E */ 0x9577, 0x957E, 0xE94C, -/* 021F */ 0x9580, 0x95AA, 0xE954, -/* 0220 */ 0x95AB, 0x95CB, 0xE980, -/* 0221 */ 0x95CC, 0x95E7, 0xEA40, -/* 0222 */ 0x9623, 0x9629, 0xEA64, -/* 0223 */ 0x9678, 0x9684, 0xEA91, -/* 0224 */ 0x969D, 0x96A6, 0xEB49, -/* 0225 */ 0x96A8, 0x96AF, 0xEB53, -/* 0226 */ 0x96D6, 0x96DF, 0xEB6D, -/* 0227 */ 0x96E1, 0x96E7, 0xEB77, -/* 0228 */ 0x9721, 0x9729, 0xEC40, -/* 0229 */ 0x973F, 0x9751, 0xEC57, -/* 022A */ 0x976A, 0x9771, 0xEC77, -/* 022B */ 0x977D, 0x9784, 0xEC87, -/* 022C */ 0x97A4, 0x97AA, 0xED44, -/* 022D */ 0x97B5, 0x97E3, 0xED50, -/* 022E */ 0x97F7, 0x980E, 0xED89, -/* 022F */ 0x980F, 0x984D, 0xEE40, -/* 0230 */ 0x984E, 0x986E, 0xEE80, -/* 0231 */ 0x986F, 0x9874, 0xEF40, -/* 0232 */ 0x98A8, 0x98CD, 0xEF4C, -/* 0233 */ 0x98E9, 0x9907, 0xEF82, -/* 0234 */ 0x9911, 0x992D, 0xF047, -/* 0235 */ 0x992F, 0x9949, 0xF064, -/* 0236 */ 0x994A, 0x9953, 0xF080, -/* 0237 */ 0x9956, 0x9962, 0xF08A, -/* 0238 */ 0x9967, 0x996C, 0xE2BC, -/* 0239 */ 0x999A, 0x99A4, 0xF142, -/* 023A */ 0x99A9, 0x99D8, 0xF14F, -/* 023B */ 0x99D9, 0x99F9, 0xF180, -/* 023C */ 0x99FA, 0x9A38, 0xF240, -/* 023D */ 0x9A39, 0x9A59, 0xF280, -/* 023E */ 0x9A5A, 0x9A6B, 0xF340, -/* 023F */ 0x9AA9, 0x9AAF, 0xF35B, -/* 0240 */ 0x9AF0, 0x9AF8, 0xF38D, -/* 0241 */ 0x9AFC, 0x9B02, 0xF397, -/* 0242 */ 0x9B09, 0x9B0E, 0xF441, -/* 0243 */ 0x9B14, 0x9B1E, 0xF44A, -/* 0244 */ 0x9B24, 0x9B2E, 0xF458, -/* 0245 */ 0x9B33, 0x9B3A, 0xF465, -/* 0246 */ 0x9B55, 0x9B5A, 0xF479, -/* 0247 */ 0x9B5B, 0x9B7B, 0xF480, -/* 0248 */ 0x9B7C, 0x9BBA, 0xF540, -/* 0249 */ 0x9BBB, 0x9BDB, 0xF580, -/* 024A */ 0x9BDC, 0x9C1A, 0xF640, -/* 024B */ 0x9C1B, 0x9C3B, 0xF680, -/* 024C */ 0x9C3C, 0x9C7A, 0xF740, -/* 024D */ 0x9C9E, 0x9CA3, 0xF6DF, -/* 024E */ 0x9CB0, 0x9CB7, 0xF6ED, -/* 024F */ 0x9CE3, 0x9D21, 0xF840, -/* 0250 */ 0x9D22, 0x9D42, 0xF880, -/* 0251 */ 0x9D43, 0x9D81, 0xF940, -/* 0252 */ 0x9D82, 0x9DA2, 0xF980, -/* 0253 */ 0x9DA3, 0x9DE1, 0xFA40, -/* 0254 */ 0x9DE2, 0x9E02, 0xFA80, -/* 0255 */ 0x9E03, 0x9E1E, 0xFB40, -/* 0256 */ 0x9E66, 0x9E6C, 0xF0D0, -/* 0257 */ 0x9E74, 0x9E7D, 0xFB74, -/* 0258 */ 0x9E8C, 0x9E91, 0xFB87, -/* 0259 */ 0x9E94, 0x9E9C, 0xFB8D, -/* 025A */ 0x9EA0, 0x9EA5, 0xFB97, -/* 025B */ 0x9EAB, 0x9EB3, 0xFC40, -/* 025C */ 0x9EF0, 0x9EF8, 0xFC6D, -/* 025D */ 0x9EFF, 0x9F05, 0xFC78, -/* 025E */ 0x9F1A, 0x9F1F, 0xFC8D, -/* 025F */ 0x9F23, 0x9F2B, 0xFC94, -/* 0260 */ 0x9F45, 0x9F4F, 0xFD4D, -/* 0261 */ 0x9F52, 0x9F78, 0xFD58, -/* 0262 */ 0x9F79, 0x9F7E, 0xFD80, -/* 0263 */ 0x9F85, 0x9F8A, 0xF6B5, -/* 0264 */ 0x9F8D, 0x9F98, 0xFD88, -/* 0265 */ 0xE7E7, 0xE7F3, 0xA989, -/* 0266 */ 0xE815, 0xE843, 0xFE50, -/* 0267 */ 0xE844, 0xE864, 0xFE80, -/* 0268 */ 0xFE49, 0xFE52, 0xA968, -/* 0269 */ 0xFE59, 0xFE61, 0xA976, -/* 026A */ 0xFF05, 0xFF5D, 0xA3A5, -/* 026B */ 0x00A4, 0x00B7, 0x0000, -/* 026C */ 0x00D7, 0x0101, 0x0014, -/* 026D */ 0x0113, 0x011B, 0x003F, -/* 026E */ 0x012B, 0x0000, 0xA8A9, -/* 026F */ 0x0144, 0x014D, 0x0048, -/* 0270 */ 0x016B, 0x0000, 0xA8B1, -/* 0271 */ 0x01CE, 0x01DC, 0x0052, -/* 0272 */ 0x0251, 0x0000, 0xA8BB, -/* 0273 */ 0x0261, 0x0000, 0xA8C0, -/* 0274 */ 0x02C7, 0x02CB, 0x0061, -/* 0275 */ 0x02D9, 0x0000, 0xA842, -/* 0276 */ 0x0401, 0x0000, 0xA7A7, -/* 0277 */ 0x0451, 0x0000, 0xA7D7, -/* 0278 */ 0x2010, 0x203B, 0x0066, -/* 0279 */ 0x2103, 0x2109, 0x0092, -/* 027A */ 0x2116, 0x2121, 0x0099, -/* 027B */ 0x2190, 0x2199, 0x00A5, -/* 027C */ 0x2208, 0x2252, 0x00AF, -/* 027D */ 0x2260, 0x226F, 0x00FA, -/* 027E */ 0x2295, 0x2299, 0x010A, -/* 027F */ 0x22A5, 0x0000, 0xA1CD, -/* 0280 */ 0x22BF, 0x0000, 0xA853, -/* 0281 */ 0x2312, 0x0000, 0xA1D0, -/* 0282 */ 0x2593, 0x25A1, 0x010F, -/* 0283 */ 0x25B2, 0x25CF, 0x011E, -/* 0284 */ 0x25E2, 0x25E5, 0x013C, -/* 0285 */ 0x2605, 0x2609, 0x0140, -/* 0286 */ 0x2640, 0x2642, 0x0145, -/* 0287 */ 0x3000, 0x301E, 0x0148, -/* 0288 */ 0x309B, 0x309E, 0x0167, -/* 0289 */ 0x30FC, 0x30FE, 0x016B, -/* 028A */ 0x3231, 0x0000, 0xA95A, -/* 028B */ 0x32A3, 0x0000, 0xA949, -/* 028C */ 0x338E, 0x338F, 0x016E, -/* 028D */ 0x339C, 0x33A1, 0x0170, -/* 028E */ 0x33C4, 0x33D5, 0x0176, -/* 028F */ 0x4E00, 0x4FFE, 0x0188, -/* 0290 */ 0x500B, 0x502E, 0x0387, -/* 0291 */ 0x503A, 0x508D, 0x03AB, -/* 0292 */ 0x50A3, 0x50BC, 0x03FF, -/* 0293 */ 0x50CF, 0x50DA, 0x0419, -/* 0294 */ 0x50E6, 0x5112, 0x0425, -/* 0295 */ 0x5121, 0x0000, 0xC0DC, -/* 0296 */ 0x513F, 0x52E4, 0x0452, -/* 0297 */ 0x52F0, 0x563F, 0x05F8, -/* 0298 */ 0x564C, 0x5693, 0x0948, -/* 0299 */ 0x56A3, 0x0000, 0xCFF9, -/* 029A */ 0x56AF, 0x56BC, 0x0990, -/* 029B */ 0x56CA, 0x570A, 0x099E, -/* 029C */ 0x571C, 0x5835, 0x09DF, -/* 029D */ 0x5844, 0x586C, 0x0AF9, -/* 029E */ 0x587E, 0x58A9, 0x0B22, -/* 029F */ 0x58BC, 0x58C5, 0x0B4E, -/* 02A0 */ 0x58D1, 0x58D5, 0x0B58, -/* 02A1 */ 0x58E4, 0x5965, 0x0B5D, -/* 02A2 */ 0x5973, 0x59EC, 0x0BDF, -/* 02A3 */ 0x59F9, 0x5A7F, 0x0C59, -/* 02A4 */ 0x5A92, 0x5A9B, 0x0CE0, -/* 02A5 */ 0x5AAA, 0x5AF1, 0x0CEA, -/* 02A6 */ 0x5B09, 0x0000, 0xE6D2, -/* 02A7 */ 0x5B16, 0x5B17, 0x0D32, -/* 02A8 */ 0x5B32, 0x5B40, 0x0D34, -/* 02A9 */ 0x5B50, 0x5D4C, 0x0D43, -/* 02AA */ 0x5D58, 0x5D5D, 0x0F40, -/* 02AB */ 0x5D69, 0x5D74, 0x0F46, -/* 02AC */ 0x5D82, 0x0000, 0xE1D6, -/* 02AD */ 0x5D99, 0x5DA0, 0x0F52, -/* 02AE */ 0x5DB7, 0x0000, 0xE1DA, -/* 02AF */ 0x5DC5, 0x5DCD, 0x0F5A, -/* 02B0 */ 0x5DDB, 0x5E62, 0x0F63, -/* 02B1 */ 0x5E72, 0x5EDB, 0x0FEB, -/* 02B2 */ 0x5EE8, 0x5F40, 0x1055, -/* 02B3 */ 0x5F50, 0x612B, 0x10AE, -/* 02B4 */ 0x613F, 0x6177, 0x128A, -/* 02B5 */ 0x618B, 0x61D4, 0x12C3, -/* 02B6 */ 0x61E6, 0x0000, 0xC5B3, -/* 02B7 */ 0x61F5, 0x64E6, 0x130D, -/* 02B8 */ 0x6500, 0x6577, 0x15FF, -/* 02B9 */ 0x6587, 0x66BE, 0x1677, -/* 02BA */ 0x66D9, 0x6912, 0x17AF, -/* 02BB */ 0x691F, 0x6942, 0x19E9, -/* 02BC */ 0x6954, 0x69E0, 0x1A0D, -/* 02BD */ 0x69ED, 0x6A0A, 0x1A9A, -/* 02BE */ 0x6A17, 0x6A65, 0x1AB8, -/* 02BF */ 0x6A71, 0x6AAC, 0x1B07, -/* 02C0 */ 0x6B20, 0x6B4C, 0x1B43, -/* 02C1 */ 0x6B59, 0x6B6A, 0x1B70, -/* 02C2 */ 0x6B79, 0x6E5F, 0x1B82, -/* 02C3 */ 0x6E6B, 0x6E6E, 0x1E69, -/* 02C4 */ 0x6E7E, 0x6F8E, 0x1E6D, -/* 02C5 */ 0x6F9C, 0x6FA7, 0x1F7E, -/* 02C6 */ 0x6FB3, 0x6FD2, 0x1F8A, -/* 02C7 */ 0x6FDE, 0x6FEF, 0x1FAA, -/* 02C8 */ 0x7011, 0x7023, 0x1FBC, -/* 02C9 */ 0x7035, 0x7039, 0x1FCF, -/* 02CA */ 0x704C, 0x704F, 0x1FD4, -/* 02CB */ 0x705E, 0x0000, 0xE5B1, -/* 02CC */ 0x706B, 0x709D, 0x1FD8, -/* 02CD */ 0x70AB, 0x70CA, 0x200B, -/* 02CE */ 0x70D8, 0x70FD, 0x202B, -/* 02CF */ 0x7109, 0x711A, 0x2051, -/* 02D0 */ 0x7126, 0x7136, 0x2063, -/* 02D1 */ 0x7145, 0x714E, 0x2074, -/* 02D2 */ 0x715C, 0x71F9, 0x207E, -/* 02D3 */ 0x7206, 0x0000, 0xB1AC, -/* 02D4 */ 0x721B, 0x7292, 0x211C, -/* 02D5 */ 0x729F, 0x0000, 0xEAF1, -/* 02D6 */ 0x72AC, 0x7360, 0x2194, -/* 02D7 */ 0x736C, 0x7371, 0x2249, -/* 02D8 */ 0x737E, 0x73F7, 0x224F, -/* 02D9 */ 0x7403, 0x7441, 0x22C9, -/* 02DA */ 0x7455, 0x745F, 0x2308, -/* 02DB */ 0x746D, 0x7490, 0x2313, -/* 02DC */ 0x749C, 0x74A9, 0x2337, -/* 02DD */ 0x74BA, 0x0000, 0xE8B7, -/* 02DE */ 0x74D2, 0x770D, 0x2345, -/* 02DF */ 0x7719, 0x776C, 0x2581, -/* 02E0 */ 0x7779, 0x7792, 0x25D5, -/* 02E1 */ 0x779F, 0x77BF, 0x25EF, -/* 02E2 */ 0x77CD, 0x785D, 0x2610, -/* 02E3 */ 0x786A, 0x7905, 0x26A1, -/* 02E4 */ 0x7913, 0x7924, 0x273D, -/* 02E5 */ 0x7934, 0x799A, 0x274F, -/* 02E6 */ 0x79A7, 0x0000, 0xECFB, -/* 02E7 */ 0x79B3, 0x7A23, 0x27B6, -/* 02E8 */ 0x7A33, 0x7A57, 0x2827, -/* 02E9 */ 0x7A70, 0x7AB3, 0x284C, -/* 02EA */ 0x7ABF, 0x0000, 0xC1FE, -/* 02EB */ 0x7ACB, 0x7B62, 0x2890, -/* 02EC */ 0x7B6E, 0x7C2A, 0x2928, -/* 02ED */ 0x7C38, 0x7C4D, 0x29E5, -/* 02EE */ 0x7C73, 0x7CFB, 0x29FB, -/* 02EF */ 0x7D0A, 0x0000, 0xCEC9, -/* 02F0 */ 0x7D20, 0x7D2F, 0x2A84, -/* 02F1 */ 0x7D6E, 0x7D77, 0x2A94, -/* 02F2 */ 0x7DA6, 0x7DAE, 0x2A9E, -/* 02F3 */ 0x7E3A, 0x7E47, 0x2AA7, -/* 02F4 */ 0x7E82, 0x0000, 0xD7EB, -/* 02F5 */ 0x7E9B, 0x805A, 0x2AB5, -/* 02F6 */ 0x8069, 0x8071, 0x2C75, -/* 02F7 */ 0x807E, 0x811E, 0x2C7E, -/* 02F8 */ 0x812C, 0x81CC, 0x2D1F, -/* 02F9 */ 0x81E3, 0x84A1, 0x2DC0, -/* 02FA */ 0x84AF, 0x84F0, 0x307F, -/* 02FB */ 0x84FC, 0x854A, 0x30C1, -/* 02FC */ 0x8556, 0x858F, 0x3110, -/* 02FD */ 0x859B, 0x85E9, 0x314A, -/* 02FE */ 0x85F9, 0x8605, 0x3199, -/* 02FF */ 0x8611, 0x8616, 0x31A6, -/* 0300 */ 0x8627, 0x8629, 0x31AC, -/* 0301 */ 0x8638, 0x8640, 0x31AF, -/* 0302 */ 0x864D, 0x8823, 0x31B8, -/* 0303 */ 0x8832, 0x8944, 0x338F, -/* 0304 */ 0x895E, 0x8966, 0x34A2, -/* 0305 */ 0x897B, 0x8986, 0x34AB, -/* 0306 */ 0x89C1, 0x8A07, 0x34B7, -/* 0307 */ 0x8A3E, 0x8A48, 0x34FE, -/* 0308 */ 0x8A79, 0x0000, 0xD5B2, -/* 0309 */ 0x8A89, 0x8A93, 0x3509, -/* 030A */ 0x8B07, 0x0000, 0xE5C0, -/* 030B */ 0x8B24, 0x8B26, 0x3514, -/* 030C */ 0x8B66, 0x8B6C, 0x3517, -/* 030D */ 0x8BA0, 0x8C98, 0x351E, -/* 030E */ 0x8D1D, 0x8DA3, 0x3617, -/* 030F */ 0x8DB1, 0x8E59, 0x369E, -/* 0310 */ 0x8E66, 0x8E9E, 0x3747, -/* 0311 */ 0x8EAB, 0x8EBA, 0x3780, -/* 0312 */ 0x8ECE, 0x0000, 0xEAA6, -/* 0313 */ 0x8F66, 0x9104, 0x3790, -/* 0314 */ 0x9119, 0x9123, 0x392F, -/* 0315 */ 0x912F, 0x91BB, 0x393A, -/* 0316 */ 0x91C7, 0x91DC, 0x39C7, -/* 0317 */ 0x9274, 0x0000, 0xBCF8, -/* 0318 */ 0x928E, 0x0000, 0xF6C6, -/* 0319 */ 0x92AE, 0x0000, 0xF6C7, -/* 031A */ 0x92C8, 0x0000, 0xF6C8, -/* 031B */ 0x933E, 0x0000, 0xF6C9, -/* 031C */ 0x936A, 0x936B, 0x39DD, -/* 031D */ 0x938F, 0x0000, 0xF6CC, -/* 031E */ 0x93CA, 0x93D6, 0x39DF, -/* 031F */ 0x943E, 0x0000, 0xF6CD, -/* 0320 */ 0x946B, 0x946F, 0x39EC, -/* 0321 */ 0x9485, 0x957F, 0x39F1, -/* 0322 */ 0x95E8, 0x9677, 0x3AEC, -/* 0323 */ 0x9685, 0x973E, 0x3B7C, -/* 0324 */ 0x9752, 0x97B4, 0x3C36, -/* 0325 */ 0x97E4, 0x97F6, 0x3C99, -/* 0326 */ 0x9875, 0x98A7, 0x3CAC, -/* 0327 */ 0x98CE, 0x98E8, 0x3CDF, -/* 0328 */ 0x9908, 0x9910, 0x3CFA, -/* 0329 */ 0x992E, 0x0000, 0xF7D1, -/* 032A */ 0x9954, 0x9955, 0x3D03, -/* 032B */ 0x9963, 0x9999, 0x3D05, -/* 032C */ 0x99A5, 0x99A8, 0x3D3C, -/* 032D */ 0x9A6C, 0x9B13, 0x3D40, -/* 032E */ 0x9B1F, 0x9B23, 0x3DE8, -/* 032F */ 0x9B2F, 0x9B54, 0x3DED, -/* 0330 */ 0x9C7B, 0x9CE2, 0x3E13, -/* 0331 */ 0x9E1F, 0x9F44, 0x3E7B, -/* 0332 */ 0x9F50, 0x9F51, 0x3FA1, -/* 0333 */ 0x9F7F, 0x9F8C, 0x3FA3, -/* 0334 */ 0x9F99, 0x9FA5, 0x3FB1, -/* 0335 */ 0xE7C7, 0xE7C8, 0x3FBE, -/* 0336 */ 0xF92C, 0x0000, 0xFD9C, -/* 0337 */ 0xF979, 0x0000, 0xFD9D, -/* 0338 */ 0xF995, 0x0000, 0xFD9E, -/* 0339 */ 0xF9E7, 0xF9F1, 0x3FC0, -/* 033A */ 0xFA0C, 0xFA29, 0x3FCB, -/* 033B */ 0xFE30, 0xFE44, 0x3FE9, -/* 033C */ 0xFE54, 0xFE6B, 0x3FFE, -/* 033D */ 0xFF01, 0xFF04, 0x4016, -/* 033E */ 0xFF5E, 0x0000, 0xA1AB, -/* 033F */ 0xFFE0, 0xFFE5, 0x401A, -/*-------------------------------------------------------*/ -/* Offset=0x0A95 Start of MappingTable */ - -/* 0000 */ 0xA1E8, 0xFFFD, 0xFFFD, 0xA1EC, 0xA1A7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1E3, 0xA1C0, 0xFFFD, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA1A4, 0xA1C1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8A4, 0xA8A2, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8A8, 0xA8A6, 0xA8BA, -/* 0028 */ 0xFFFD, 0xA8AC, 0xA8AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8B0, -/* 0030 */ 0xA8AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1C2, 0xFFFD, 0xA8B4, 0xA8B2, -/* 0038 */ 0xFFFD, 0xA8B9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8A1, 0xA8A5, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8A7, -/* 0048 */ 0xA8BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA8BE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0xA8AD, 0xA8A3, 0xFFFD, 0xA8AB, 0xFFFD, 0xA8AF, 0xFFFD, -/* 0058 */ 0xA8B3, 0xFFFD, 0xA8B5, 0xFFFD, 0xA8B6, 0xFFFD, 0xA8B7, 0xFFFD, -/* 0060 */ 0xA8B8, 0xA1A6, 0xFFFD, 0xA1A5, 0xA840, 0xA841, 0xA95C, 0xFFFD, -/* 0068 */ 0xFFFD, 0xA843, 0xA844, 0xA1AA, 0xA1AC, 0xFFFD, 0xA1AE, 0xA1AF, -/* 0070 */ 0xFFFD, 0xFFFD, 0xA1B0, 0xA1B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA845, 0xA1AD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1EB, 0xFFFD, -/* 0088 */ 0xA1E4, 0xA1E5, 0xFFFD, 0xA846, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0xA1F9, 0xA1E6, 0xFFFD, 0xA847, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xA848, 0xA1ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA959, 0xA1FB, 0xA1FC, 0xA1FA, -/* 00A8 */ 0xA1FD, 0xFFFD, 0xFFFD, 0xA849, 0xA84A, 0xA84B, 0xA84C, 0xA1CA, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1C7, 0xFFFD, -/* 00B8 */ 0xA1C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xA84D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xA1CC, 0xFFFD, 0xFFFD, 0xA1D8, 0xA1DE, 0xA84E, 0xA1CF, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xA84F, 0xFFFD, 0xA1CE, 0xFFFD, 0xA1C4, 0xA1C5, -/* 00D0 */ 0xA1C9, 0xA1C8, 0xA1D2, 0xFFFD, 0xFFFD, 0xA1D3, 0xFFFD, 0xFFFD, -/* 00D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA1E0, 0xA1DF, 0xA1C3, 0xA1CB, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1D7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1D6, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xA1D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0xA850, 0xA1D9, 0xA1D4, 0xFFFD, 0xFFFD, 0xA1DC, 0xA1DD, -/* 0100 */ 0xA851, 0xA852, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0108 */ 0xA1DA, 0xA1DB, 0xA892, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1D1, 0xA888, -/* 0110 */ 0xA889, 0xA88A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1F6, 0xA1F5, 0xA1F8, 0xA1F7, -/* 0120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0128 */ 0xA88B, 0xA88C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0130 */ 0xFFFD, 0xFFFD, 0xA1F4, 0xA1F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xA1F0, -/* 0138 */ 0xFFFD, 0xFFFD, 0xA1F2, 0xA1F1, 0xA88D, 0xA88E, 0xA88F, 0xA890, -/* 0140 */ 0xA1EF, 0xA1EE, 0xFFFD, 0xFFFD, 0xA891, 0xA1E2, 0xFFFD, 0xA1E1, -/* 0148 */ 0xA1A1, 0xA1A2, 0xA1A3, 0xA1A8, 0xFFFD, 0xA1A9, 0xA965, 0xA996, -/* 0150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0158 */ 0xA1BE, 0xA1BF, 0xA893, 0xA1FE, 0xA1B2, 0xA1B3, 0xA1BC, 0xA1BD, -/* 0160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA894, 0xA895, 0xA961, -/* 0168 */ 0xA962, 0xA966, 0xA967, 0xA960, 0xA963, 0xA964, 0xA94A, 0xA94B, -/* 0170 */ 0xA94C, 0xA94D, 0xA94E, 0xFFFD, 0xFFFD, 0xA94F, 0xA950, 0xFFFD, -/* 0178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0180 */ 0xA951, 0xFFFD, 0xFFFD, 0xA952, 0xA953, 0xFFFD, 0xFFFD, 0xA954, -/* 0188 */ 0xD2BB, 0xB6A1, 0x8140, 0xC6DF, 0x8141, 0x8142, 0x8143, 0xCDF2, -/* 0190 */ 0xD5C9, 0xC8FD, 0xC9CF, 0xCFC2, 0xD8A2, 0xB2BB, 0xD3EB, 0x8144, -/* 0198 */ 0xD8A4, 0xB3F3, 0x8145, 0xD7A8, 0xC7D2, 0xD8A7, 0xCAC0, 0x8146, -/* 01A0 */ 0xC7F0, 0xB1FB, 0xD2B5, 0xB4D4, 0xB6AB, 0xCBBF, 0xD8A9, 0x8147, -/* 01A8 */ 0x8148, 0x8149, 0xB6AA, 0x814A, 0xC1BD, 0xD1CF, 0x814B, 0xC9A5, -/* 01B0 */ 0xD8AD, 0x814C, 0xB8F6, 0xD1BE, 0xE3DC, 0xD6D0, 0x814D, 0x814E, -/* 01B8 */ 0xB7E1, 0x814F, 0xB4AE, 0x8150, 0xC1D9, 0x8151, 0xD8BC, 0x8152, -/* 01C0 */ 0xCDE8, 0xB5A4, 0xCEAA, 0xD6F7, 0x8153, 0xC0F6, 0xBED9, 0xD8AF, -/* 01C8 */ 0x8154, 0x8155, 0x8156, 0xC4CB, 0x8157, 0xBEC3, 0x8158, 0xD8B1, -/* 01D0 */ 0xC3B4, 0xD2E5, 0x8159, 0xD6AE, 0xCEDA, 0xD5A7, 0xBAF5, 0xB7A6, -/* 01D8 */ 0xC0D6, 0x815A, 0xC6B9, 0xC5D2, 0xC7C7, 0x815B, 0xB9D4, 0x815C, -/* 01E0 */ 0xB3CB, 0xD2D2, 0x815D, 0x815E, 0xD8BF, 0xBEC5, 0xC6F2, 0xD2B2, -/* 01E8 */ 0xCFB0, 0xCFE7, 0x815F, 0x8160, 0x8161, 0x8162, 0xCAE9, 0x8163, -/* 01F0 */ 0x8164, 0xD8C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01F8 */ 0xC2F2, 0xC2D2, 0x816B, 0xC8E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7AC, 0xFFFD, -/* 0208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1CB, 0x817D, -/* 0210 */ 0xD3E8, 0xD5F9, 0x817E, 0xCAC2, 0xB6FE, 0xD8A1, 0xD3DA, 0xBFF7, -/* 0218 */ 0x8180, 0xD4C6, 0xBBA5, 0xD8C1, 0xCEE5, 0xBEAE, 0x8181, 0x8182, -/* 0220 */ 0xD8A8, 0x8183, 0xD1C7, 0xD0A9, 0x8184, 0x8185, 0x8186, 0xD8BD, -/* 0228 */ 0xD9EF, 0xCDF6, 0xBFBA, 0x8187, 0xBDBB, 0xBAA5, 0xD2E0, 0xB2FA, -/* 0230 */ 0xBAE0, 0xC4B6, 0x8188, 0xCFED, 0xBEA9, 0xCDA4, 0xC1C1, 0x8189, -/* 0238 */ 0x818A, 0x818B, 0xC7D7, 0xD9F1, 0x818C, 0xD9F4, 0x818D, 0x818E, -/* 0240 */ 0x818F, 0x8190, 0xC8CB, 0xD8E9, 0x8191, 0x8192, 0x8193, 0xD2DA, -/* 0248 */ 0xCAB2, 0xC8CA, 0xD8EC, 0xD8EA, 0xD8C6, 0xBDF6, 0xC6CD, 0xB3F0, -/* 0250 */ 0x8194, 0xD8EB, 0xBDF1, 0xBDE9, 0x8195, 0xC8D4, 0xB4D3, 0x8196, -/* 0258 */ 0x8197, 0xC2D8, 0x8198, 0xB2D6, 0xD7D0, 0xCACB, 0xCBFB, 0xD5CC, -/* 0260 */ 0xB8B6, 0xCFC9, 0x8199, 0x819A, 0x819B, 0xD9DA, 0xD8F0, 0xC7AA, -/* 0268 */ 0x819C, 0xD8EE, 0x819D, 0xB4FA, 0xC1EE, 0xD2D4, 0x819E, 0x819F, -/* 0270 */ 0xD8ED, 0x81A0, 0xD2C7, 0xD8EF, 0xC3C7, 0x81A1, 0x81A2, 0x81A3, -/* 0278 */ 0xD1F6, 0x81A4, 0xD6D9, 0xD8F2, 0x81A5, 0xD8F5, 0xBCFE, 0xBCDB, -/* 0280 */ 0x81A6, 0x81A7, 0x81A8, 0xC8CE, 0x81A9, 0xB7DD, 0x81AA, 0xB7C2, -/* 0288 */ 0x81AB, 0xC6F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0290 */ 0xFFFD, 0xD8F8, 0xD2C1, 0x81B3, 0x81B4, 0xCEE9, 0xBCBF, 0xB7FC, -/* 0298 */ 0xB7A5, 0xD0DD, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9, 0xD6DA, -/* 02A0 */ 0xD3C5, 0xBBEF, 0xBBE1, 0xD8F1, 0x81BA, 0x81BB, 0xC9A1, 0xCEB0, -/* 02A8 */ 0xB4AB, 0x81BC, 0xD8F3, 0x81BD, 0xC9CB, 0xD8F6, 0xC2D7, 0xD8F7, -/* 02B0 */ 0x81BE, 0x81BF, 0xCEB1, 0xD8F9, 0x81C0, 0x81C1, 0x81C2, 0xB2AE, -/* 02B8 */ 0xB9C0, 0x81C3, 0xD9A3, 0x81C4, 0xB0E9, 0x81C5, 0xC1E6, 0x81C6, -/* 02C0 */ 0xC9EC, 0x81C7, 0xCBC5, 0x81C8, 0xCBC6, 0xD9A4, 0x81C9, 0x81CA, -/* 02C8 */ 0x81CB, 0x81CC, 0x81CD, 0xB5E8, 0x81CE, 0x81CF, 0xB5AB, 0xFFFD, -/* 02D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEBB, 0xB5CD, 0xD7A1, -/* 02D8 */ 0xD7F4, 0xD3D3, 0x81D6, 0xCCE5, 0x81D7, 0xBACE, 0x81D8, 0xD9A2, -/* 02E0 */ 0xD9DC, 0xD3E0, 0xD8FD, 0xB7F0, 0xD7F7, 0xD8FE, 0xD8FA, 0xD9A1, -/* 02E8 */ 0xC4E3, 0x81D9, 0x81DA, 0xD3B6, 0xD8F4, 0xD9DD, 0x81DB, 0xD8FB, -/* 02F0 */ 0x81DC, 0xC5E5, 0x81DD, 0x81DE, 0xC0D0, 0x81DF, 0x81E0, 0xD1F0, -/* 02F8 */ 0xB0DB, 0x81E1, 0x81E2, 0xBCD1, 0xD9A6, 0x81E3, 0xD9A5, 0x81E4, -/* 0300 */ 0x81E5, 0x81E6, 0x81E7, 0xD9AC, 0xD9AE, 0x81E8, 0xD9AB, 0xCAB9, -/* 0308 */ 0x81E9, 0x81EA, 0x81EB, 0xD9A9, 0xD6B6, 0x81EC, 0x81ED, 0x81EE, -/* 0310 */ 0xB3DE, 0xD9A8, 0x81EF, 0xC0FD, 0x81F0, 0xCACC, 0x81F1, 0xD9AA, -/* 0318 */ 0x81F2, 0xD9A7, 0x81F3, 0x81F4, 0xD9B0, 0x81F5, 0x81F6, 0xB6B1, -/* 0320 */ 0x81F7, 0x81F8, 0x81F9, 0xB9A9, 0x81FA, 0xD2C0, 0x81FB, 0x81FC, -/* 0328 */ 0xCFC0, 0x81FD, 0x81FE, 0xC2C2, 0x8240, 0xBDC4, 0xD5EC, 0xB2E0, -/* 0330 */ 0xC7C8, 0xBFEB, 0xD9AD, 0x8241, 0xD9AF, 0x8242, 0xCEEA, 0xBAEE, -/* 0338 */ 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, 0xC7D6, 0xFFFD, 0xFFFD, -/* 0340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB1E3, -/* 0348 */ 0x8251, 0x8252, 0x8253, 0xB4D9, 0xB6ED, 0xD9B4, 0x8254, 0x8255, -/* 0350 */ 0x8256, 0x8257, 0xBFA1, 0x8258, 0x8259, 0x825A, 0xD9DE, 0xC7CE, -/* 0358 */ 0xC0FE, 0xD9B8, 0x825B, 0x825C, 0x825D, 0x825E, 0x825F, 0xCBD7, -/* 0360 */ 0xB7FD, 0x8260, 0xD9B5, 0x8261, 0xD9B7, 0xB1A3, 0xD3E1, 0xD9B9, -/* 0368 */ 0x8262, 0xD0C5, 0x8263, 0xD9B6, 0x8264, 0x8265, 0xD9B1, 0x8266, -/* 0370 */ 0xD9B2, 0xC1A9, 0xD9B3, 0x8267, 0x8268, 0xBCF3, 0xD0DE, 0xB8A9, -/* 0378 */ 0x8269, 0xBEE3, 0x826A, 0xD9BD, 0x826B, 0x826C, 0x826D, 0x826E, -/* 0380 */ 0xD9BA, 0x826F, 0xB0B3, 0x8270, 0x8271, 0x8272, 0xD9C2, 0x8280, -/* 0388 */ 0xD9C4, 0xB1B6, 0x8281, 0xD9BF, 0x8282, 0x8283, 0xB5B9, 0x8284, -/* 0390 */ 0xBEF3, 0x8285, 0x8286, 0x8287, 0xCCC8, 0xBAF2, 0xD2D0, 0x8288, -/* 0398 */ 0xD9C3, 0x8289, 0x828A, 0xBDE8, 0x828B, 0xB3AB, 0x828C, 0x828D, -/* 03A0 */ 0x828E, 0xD9C5, 0xBEEB, 0x828F, 0xD9C6, 0xD9BB, 0xC4DF, 0x8290, -/* 03A8 */ 0xD9BE, 0xD9C1, 0xD9C0, 0xD5AE, 0x829C, 0xD6B5, 0x829D, 0xC7E3, -/* 03B0 */ 0x829E, 0x829F, 0x82A0, 0x82A1, 0xD9C8, 0x82A2, 0x82A3, 0x82A4, -/* 03B8 */ 0xBCD9, 0xD9CA, 0x82A5, 0x82A6, 0x82A7, 0xD9BC, 0x82A8, 0xD9CB, -/* 03C0 */ 0xC6AB, 0x82A9, 0x82AA, 0x82AB, 0x82AC, 0x82AD, 0xD9C9, 0x82AE, -/* 03C8 */ 0x82AF, 0x82B0, 0x82B1, 0xD7F6, 0x82B2, 0xCDA3, 0xFFFD, 0xFFFD, -/* 03D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDA1, 0xFFFD, -/* 03D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9CC, 0xFFFD, 0xFFFD, -/* 03E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5BC, -/* 03E8 */ 0xCDB5, 0x82CA, 0x82CB, 0x82CC, 0xD9CD, 0x82CD, 0x82CE, 0xD9C7, -/* 03F0 */ 0xB3A5, 0xBFFE, 0x82CF, 0x82D0, 0x82D1, 0x82D2, 0xB8B5, 0x82D3, -/* 03F8 */ 0x82D4, 0xC0FC, 0x82D5, 0x82D6, 0x82D7, 0x82D8, 0xB0F8, 0xB4F6, -/* 0400 */ 0x82EE, 0xD9CE, 0x82EF, 0xD9CF, 0xB4A2, 0xD9D0, 0x82F0, 0x82F1, -/* 0408 */ 0xB4DF, 0x82F2, 0x82F3, 0x82F4, 0x82F5, 0x82F6, 0xB0C1, 0xFFFD, -/* 0410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9D1, 0xC9B5, -/* 0418 */ 0x82FE, 0xCFF1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0420 */ 0xD9D2, 0x8358, 0x8359, 0x835A, 0xC1C5, 0xD9D6, 0xC9AE, 0x8366, -/* 0428 */ 0x8367, 0x8368, 0x8369, 0xD9D5, 0xD9D4, 0xD9D7, 0x836A, 0x836B, -/* 0430 */ 0x836C, 0x836D, 0xCBDB, 0x836E, 0xBDA9, 0x836F, 0x8370, 0x8371, -/* 0438 */ 0x8372, 0x8373, 0xC6A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9D3, 0xD9D8, 0x837E, -/* 0448 */ 0x8380, 0x8381, 0xD9D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0450 */ 0xFFFD, 0xC8E5, 0xB6F9, 0xD8A3, 0xD4CA, 0x83B3, 0xD4AA, 0xD0D6, -/* 0458 */ 0xB3E4, 0xD5D7, 0x83B4, 0xCFC8, 0xB9E2, 0x83B5, 0xBFCB, 0x83B6, -/* 0460 */ 0xC3E2, 0x83B7, 0x83B8, 0x83B9, 0xB6D2, 0x83BA, 0x83BB, 0xCDC3, -/* 0468 */ 0xD9EE, 0xD9F0, 0x83BC, 0x83BD, 0x83BE, 0xB5B3, 0x83BF, 0xB6B5, -/* 0470 */ 0x83C0, 0x83C1, 0x83C2, 0x83C3, 0x83C4, 0xBEA4, 0x83C5, 0x83C6, -/* 0478 */ 0xC8EB, 0x83C7, 0x83C8, 0xC8AB, 0x83C9, 0x83CA, 0xB0CB, 0xB9AB, -/* 0480 */ 0xC1F9, 0xD9E2, 0x83CB, 0xC0BC, 0xB9B2, 0x83CC, 0xB9D8, 0xD0CB, -/* 0488 */ 0xB1F8, 0xC6E4, 0xBEDF, 0xB5E4, 0xD7C8, 0x83CD, 0xD1F8, 0xBCE6, -/* 0490 */ 0xCADE, 0x83CE, 0x83CF, 0xBCBD, 0xD9E6, 0xD8E7, 0x83D0, 0x83D1, -/* 0498 */ 0xC4DA, 0x83D2, 0x83D3, 0xB8D4, 0xC8BD, 0x83D4, 0x83D5, 0xB2E1, -/* 04A0 */ 0xD4D9, 0x83D6, 0x83D7, 0x83D8, 0x83D9, 0xC3B0, 0x83DA, 0x83DB, -/* 04A8 */ 0xC3E1, 0xDAA2, 0xC8DF, 0x83DC, 0xD0B4, 0x83DD, 0xBEFC, 0xC5A9, -/* 04B0 */ 0x83DE, 0x83DF, 0x83E0, 0xB9DA, 0x83E1, 0xDAA3, 0x83E2, 0xD4A9, -/* 04B8 */ 0xDAA4, 0x83E3, 0x83E4, 0x83E5, 0x83E6, 0x83E7, 0xD9FB, 0xB6AC, -/* 04C0 */ 0x83E8, 0x83E9, 0xB7EB, 0xB1F9, 0xD9FC, 0xB3E5, 0xBEF6, 0x83EA, -/* 04C8 */ 0xBFF6, 0xD2B1, 0xC0E4, 0x83EB, 0x83EC, 0x83ED, 0xB6B3, 0xD9FE, -/* 04D0 */ 0xD9FD, 0x83EE, 0x83EF, 0xBEBB, 0x83F0, 0x83F1, 0x83F2, 0xC6E0, -/* 04D8 */ 0x83F3, 0xD7BC, 0xDAA1, 0x83F4, 0xC1B9, 0x83F5, 0xB5F2, 0xC1E8, -/* 04E0 */ 0x83F6, 0x83F7, 0xBCF5, 0x83F8, 0xB4D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8440, 0x8441, 0x8442, 0xC1DD, 0x8443, -/* 04F0 */ 0xC4FD, 0x8444, 0x8445, 0xBCB8, 0xB7B2, 0x8446, 0x8447, 0xB7EF, -/* 04F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9EC, 0x844E, -/* 0500 */ 0xC6BE, 0x844F, 0xBFAD, 0xBBCB, 0x8450, 0x8451, 0xB5CA, 0x8452, -/* 0508 */ 0xDBC9, 0xD0D7, 0x8453, 0xCDB9, 0xB0BC, 0xB3F6, 0xBBF7, 0xDBCA, -/* 0510 */ 0xBAAF, 0x8454, 0xD4E4, 0xB5B6, 0xB5F3, 0xD8D6, 0xC8D0, 0x8455, -/* 0518 */ 0x8456, 0xB7D6, 0xC7D0, 0xD8D7, 0x8457, 0xBFAF, 0x8458, 0x8459, -/* 0520 */ 0xDBBB, 0xD8D8, 0x845A, 0x845B, 0xD0CC, 0xBBAE, 0x845C, 0x845D, -/* 0528 */ 0x845E, 0xEBBE, 0xC1D0, 0xC1F5, 0xD4F2, 0xB8D5, 0xB4B4, 0x845F, -/* 0530 */ 0xB3F5, 0x8460, 0x8461, 0xC9BE, 0x8462, 0x8463, 0x8464, 0xC5D0, -/* 0538 */ 0x8465, 0x8466, 0x8467, 0xC5D9, 0xC0FB, 0x8468, 0xB1F0, 0x8469, -/* 0540 */ 0xD8D9, 0xB9CE, 0x846A, 0xB5BD, 0x846B, 0x846C, 0xD8DA, 0x846D, -/* 0548 */ 0x846E, 0xD6C6, 0xCBA2, 0xC8AF, 0xC9B2, 0xB4CC, 0xBFCC, 0x846F, -/* 0550 */ 0xB9F4, 0x8470, 0xD8DB, 0xD8DC, 0xB6E7, 0xBCC1, 0xCCEA, 0xFFFD, -/* 0558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFF7, 0x8477, 0xD8DD, -/* 0560 */ 0xC7B0, 0x8478, 0x8479, 0xB9D0, 0xBDA3, 0x847A, 0x847B, 0xCCDE, -/* 0568 */ 0x847C, 0xC6CA, 0x847D, 0x847E, 0x8480, 0x8481, 0x8482, 0xD8E0, -/* 0570 */ 0x8483, 0xD8DE, 0x8484, 0x8485, 0xD8DF, 0x8486, 0x8487, 0x8488, -/* 0578 */ 0xB0FE, 0x8489, 0xBEE7, 0x848A, 0xCAA3, 0xBCF4, 0x848B, 0x848C, -/* 0580 */ 0x848D, 0x848E, 0xB8B1, 0x848F, 0x8490, 0xB8EE, 0xFFFD, 0xFFFD, -/* 0588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0590 */ 0xD8E2, 0x849B, 0xBDCB, 0x849C, 0xD8E4, 0xD8E3, 0x849D, 0x849E, -/* 0598 */ 0x849F, 0x84A0, 0x84A1, 0xC5FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD8E5, 0x84A9, 0x84AA, 0xD8E6, 0xFFFD, -/* 05A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1A6, 0x84B2, -/* 05B0 */ 0xC8B0, 0xB0EC, 0xB9A6, 0xBCD3, 0xCEF1, 0xDBBD, 0xC1D3, 0x84B3, -/* 05B8 */ 0x84B4, 0x84B5, 0x84B6, 0xB6AF, 0xD6FA, 0xC5AC, 0xBDD9, 0xDBBE, -/* 05C0 */ 0xDBBF, 0x84B7, 0x84B8, 0x84B9, 0xC0F8, 0xBEA2, 0xC0CD, 0xFFFD, -/* 05C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05D0 */ 0xFFFD, 0xDBC0, 0xCAC6, 0x84C4, 0x84C5, 0x84C6, 0xB2AA, 0x84C7, -/* 05D8 */ 0x84C8, 0x84C9, 0xD3C2, 0x84CA, 0xC3E3, 0x84CB, 0xD1AB, 0x84CC, -/* 05E0 */ 0x84CD, 0x84CE, 0x84CF, 0xDBC2, 0x84D0, 0xC0D5, 0x84D1, 0x84D2, -/* 05E8 */ 0x84D3, 0xDBC3, 0x84D4, 0xBFB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05F0 */ 0xFFFD, 0xFFFD, 0xC4BC, 0x84DB, 0x84DC, 0x84DD, 0x84DE, 0xC7DA, -/* 05F8 */ 0xDBC4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0600 */ 0xFFFD, 0xD9E8, 0xC9D7, 0x84F2, 0x84F3, 0x84F4, 0xB9B4, 0xCEF0, -/* 0608 */ 0xD4C8, 0x84F5, 0x84F6, 0x84F7, 0x84F8, 0xB0FC, 0xB4D2, 0x84F9, -/* 0610 */ 0xD0D9, 0x84FA, 0x84FB, 0x84FC, 0x84FD, 0xD9E9, 0x84FE, 0xDECB, -/* 0618 */ 0xD9EB, 0x8540, 0x8541, 0x8542, 0x8543, 0xD8B0, 0xBBAF, 0xB1B1, -/* 0620 */ 0x8544, 0xB3D7, 0xD8CE, 0x8545, 0x8546, 0xD4D1, 0x8547, 0x8548, -/* 0628 */ 0xBDB3, 0xBFEF, 0x8549, 0xCFBB, 0x854A, 0x854B, 0xD8D0, 0x854C, -/* 0630 */ 0x854D, 0x854E, 0xB7CB, 0x854F, 0x8550, 0x8551, 0xD8D1, 0xFFFD, -/* 0638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0640 */ 0xFFFD, 0xC6A5, 0xC7F8, 0xD2BD, 0x855C, 0x855D, 0xD8D2, 0xC4E4, -/* 0648 */ 0x855E, 0xCAAE, 0x855F, 0xC7A7, 0x8560, 0xD8A6, 0x8561, 0xC9FD, -/* 0650 */ 0xCEE7, 0xBBDC, 0xB0EB, 0x8562, 0x8563, 0x8564, 0xBBAA, 0xD0AD, -/* 0658 */ 0x8565, 0xB1B0, 0xD7E4, 0xD7BF, 0x8566, 0xB5A5, 0xC2F4, 0xC4CF, -/* 0660 */ 0x8567, 0x8568, 0xB2A9, 0x8569, 0xB2B7, 0x856A, 0xB1E5, 0xDFB2, -/* 0668 */ 0xD5BC, 0xBFA8, 0xC2AC, 0xD8D5, 0xC2B1, 0x856B, 0xD8D4, 0xCED4, -/* 0670 */ 0x856C, 0xDAE0, 0x856D, 0xCEC0, 0x856E, 0x856F, 0xD8B4, 0xC3AE, -/* 0678 */ 0xD3A1, 0xCEA3, 0x8570, 0xBCB4, 0xC8B4, 0xC2D1, 0x8571, 0xBEED, -/* 0680 */ 0xD0B6, 0x8572, 0xDAE1, 0x8573, 0x8574, 0x8575, 0x8576, 0xC7E4, -/* 0688 */ 0x8577, 0x8578, 0xB3A7, 0x8579, 0xB6F2, 0xCCFC, 0xC0FA, 0x857A, -/* 0690 */ 0x857B, 0xC0F7, 0x857C, 0xD1B9, 0xD1E1, 0xD8C7, 0x857D, 0x857E, -/* 0698 */ 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0xB2DE, 0x8585, 0x8586, -/* 06A0 */ 0xC0E5, 0x8587, 0xBAF1, 0x8588, 0x8589, 0xD8C8, 0x858A, 0xD4AD, -/* 06A8 */ 0x858B, 0x858C, 0xCFE1, 0xD8C9, 0x858D, 0xD8CA, 0xCFC3, 0x858E, -/* 06B0 */ 0xB3F8, 0xBEC7, 0x858F, 0x8590, 0x8591, 0x8592, 0xD8CB, 0xFFFD, -/* 06B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBCC, 0x859A, -/* 06C0 */ 0x859B, 0x859C, 0x859D, 0xC8A5, 0x859E, 0x859F, 0x85A0, 0xCFD8, -/* 06C8 */ 0x85A1, 0xC8FE, 0xB2CE, 0x85A2, 0x85A3, 0x85A4, 0x85A5, 0x85A6, -/* 06D0 */ 0xD3D6, 0xB2E6, 0xBCB0, 0xD3D1, 0xCBAB, 0xB7B4, 0x85A7, 0x85A8, -/* 06D8 */ 0x85A9, 0xB7A2, 0x85AA, 0x85AB, 0xCAE5, 0x85AC, 0xC8A1, 0xCADC, -/* 06E0 */ 0xB1E4, 0xD0F0, 0x85AD, 0xC5D1, 0x85AE, 0x85AF, 0x85B0, 0xDBC5, -/* 06E8 */ 0xB5FE, 0x85B1, 0x85B2, 0xBFDA, 0xB9C5, 0xBEE4, 0xC1ED, 0x85B3, -/* 06F0 */ 0xDFB6, 0xDFB5, 0xD6BB, 0xBDD0, 0xD5D9, 0xB0C8, 0xB6A3, 0xBFC9, -/* 06F8 */ 0xCCA8, 0xDFB3, 0xCAB7, 0xD3D2, 0x85B4, 0xD8CF, 0xD2B6, 0xBAC5, -/* 0700 */ 0xCBBE, 0xCCBE, 0x85B5, 0xDFB7, 0xB5F0, 0xDFB4, 0x85B6, 0x85B7, -/* 0708 */ 0x85B8, 0xD3F5, 0x85B9, 0xB3D4, 0xB8F7, 0x85BA, 0xDFBA, 0x85BB, -/* 0710 */ 0xBACF, 0xBCAA, 0xB5F5, 0x85BC, 0xCDAC, 0xC3FB, 0xBAF3, 0xC0F4, -/* 0718 */ 0xCDC2, 0xCFF2, 0xDFB8, 0xCFC5, 0x85BD, 0xC2C0, 0xDFB9, 0xC2F0, -/* 0720 */ 0x85BE, 0x85BF, 0x85C0, 0xBEFD, 0x85C1, 0xC1DF, 0xCDCC, 0xD2F7, -/* 0728 */ 0xB7CD, 0xDFC1, 0x85C2, 0xDFC4, 0x85C3, 0x85C4, 0xB7F1, 0xB0C9, -/* 0730 */ 0xB6D6, 0xB7D4, 0x85C5, 0xBAAC, 0xCCFD, 0xBFD4, 0xCBB1, 0xC6F4, -/* 0738 */ 0x85C6, 0xD6A8, 0xDFC5, 0x85C7, 0xCEE2, 0xB3B3, 0x85C8, 0x85C9, -/* 0740 */ 0xCEFC, 0xB4B5, 0x85CA, 0xCEC7, 0xBAF0, 0x85CB, 0xCEE1, 0x85CC, -/* 0748 */ 0xD1BD, 0x85CD, 0x85CE, 0xDFC0, 0x85CF, 0x85D0, 0xB4F4, 0x85D1, -/* 0750 */ 0xB3CA, 0x85D2, 0xB8E6, 0xDFBB, 0x85D3, 0x85D4, 0x85D5, 0x85D6, -/* 0758 */ 0xC4C5, 0x85D7, 0xDFBC, 0xDFBD, 0xDFBE, 0xC5BB, 0xDFBF, 0xDFC2, -/* 0760 */ 0xD4B1, 0xDFC3, 0x85D8, 0xC7BA, 0xCED8, 0x85D9, 0x85DA, 0x85DB, -/* 0768 */ 0x85DC, 0x85DD, 0xC4D8, 0x85DE, 0xDFCA, 0x85DF, 0xDFCF, 0x85E0, -/* 0770 */ 0xD6DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0778 */ 0xFFFD, 0xDFC9, 0xDFDA, 0xCEB6, 0x85E9, 0xBAC7, 0xDFCE, 0xDFC8, -/* 0780 */ 0xC5DE, 0x85EA, 0x85EB, 0xC9EB, 0xBAF4, 0xC3FC, 0x85EC, 0x85ED, -/* 0788 */ 0xBED7, 0x85EE, 0xDFC6, 0x85EF, 0xDFCD, 0x85F0, 0xC5D8, 0x85F1, -/* 0790 */ 0x85F2, 0x85F3, 0x85F4, 0xD5A6, 0xBACD, 0x85F5, 0xBECC, 0xD3BD, -/* 0798 */ 0xB8C0, 0x85F6, 0xD6E4, 0x85F7, 0xDFC7, 0xB9BE, 0xBFA7, 0x85F8, -/* 07A0 */ 0x85F9, 0xC1FC, 0xDFCB, 0xDFCC, 0x85FA, 0xDFD0, 0x85FB, 0x85FC, -/* 07A8 */ 0x85FD, 0x85FE, 0x8640, 0xDFDB, 0xDFE5, 0x8641, 0xDFD7, 0xDFD6, -/* 07B0 */ 0xD7C9, 0xDFE3, 0xDFE4, 0xE5EB, 0xD2A7, 0xDFD2, 0x8642, 0xBFA9, -/* 07B8 */ 0x8643, 0xD4DB, 0x8644, 0xBFC8, 0xDFD4, 0x8645, 0x8646, 0x8647, -/* 07C0 */ 0xCFCC, 0x8648, 0x8649, 0xDFDD, 0x864A, 0xD1CA, 0x864B, 0xDFDE, -/* 07C8 */ 0xB0A7, 0xC6B7, 0xDFD3, 0x864C, 0xBAE5, 0x864D, 0xB6DF, 0xCDDB, -/* 07D0 */ 0xB9FE, 0xD4D5, 0x864E, 0x864F, 0xDFDF, 0xCFEC, 0xB0A5, 0xDFE7, -/* 07D8 */ 0xDFD1, 0xD1C6, 0xDFD5, 0xDFD8, 0xDFD9, 0xDFDC, 0x8650, 0xBBA9, -/* 07E0 */ 0x8651, 0xDFE0, 0xDFE1, 0x8652, 0xDFE2, 0xDFE6, 0xDFE8, 0xD3B4, -/* 07E8 */ 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0xB8E7, 0xC5B6, 0xDFEA, -/* 07F0 */ 0xC9DA, 0xC1A8, 0xC4C4, 0x8658, 0x8659, 0xBFDE, 0xCFF8, 0x865A, -/* 07F8 */ 0x865B, 0x865C, 0xD5DC, 0xDFEE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0800 */ 0xFFFD, 0xFFFD, 0xB2B8, 0x8663, 0xBADF, 0xDFEC, 0x8664, 0xDBC1, -/* 0808 */ 0x8665, 0xD1E4, 0x8666, 0x8667, 0x8668, 0x8669, 0xCBF4, 0xB4BD, -/* 0810 */ 0x866A, 0xB0A6, 0x866B, 0x866C, 0x866D, 0x866E, 0x866F, 0xDFF1, -/* 0818 */ 0xCCC6, 0xDFF2, 0x8670, 0x8671, 0xDFED, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDFE9, 0x8678, 0x8679, 0x867A, 0x867B, -/* 0828 */ 0xDFEB, 0x867C, 0xDFEF, 0xDFF0, 0xBBBD, 0x867D, 0x867E, 0xDFF3, -/* 0830 */ 0x8680, 0x8681, 0xDFF4, 0x8682, 0xBBA3, 0x8683, 0xCADB, 0xCEA8, -/* 0838 */ 0xE0A7, 0xB3AA, 0x8684, 0xE0A6, 0x8685, 0x8686, 0x8687, 0xE0A1, -/* 0840 */ 0x8688, 0x8689, 0x868A, 0x868B, 0xDFFE, 0x868C, 0xCDD9, 0xDFFC, -/* 0848 */ 0x868D, 0xDFFA, 0x868E, 0xBFD0, 0xD7C4, 0x868F, 0xC9CC, 0x8690, -/* 0850 */ 0x8691, 0xDFF8, 0xB0A1, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696, -/* 0858 */ 0xDFFD, 0x8697, 0x8698, 0x8699, 0x869A, 0xDFFB, 0xE0A2, 0x869B, -/* 0860 */ 0x869C, 0x869D, 0x869E, 0x869F, 0xE0A8, 0x86A0, 0x86A1, 0x86A2, -/* 0868 */ 0x86A3, 0xB7C8, 0x86A4, 0x86A5, 0xC6A1, 0xC9B6, 0xC0B2, 0xDFF5, -/* 0870 */ 0x86A6, 0x86A7, 0xC5BE, 0x86A8, 0xD8C4, 0xDFF9, 0xC4F6, 0xFFFD, -/* 0878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0A3, 0xE0A4, 0xE0A5, -/* 0880 */ 0xD0A5, 0x86AF, 0x86B0, 0xE0B4, 0xCCE4, 0x86B1, 0xE0B1, 0x86B2, -/* 0888 */ 0xBFA6, 0xE0AF, 0xCEB9, 0xE0AB, 0xC9C6, 0x86B3, 0x86B4, 0xC0AE, -/* 0890 */ 0xE0AE, 0xBAED, 0xBAB0, 0xE0A9, 0x86B5, 0x86B6, 0x86B7, 0xDFF6, -/* 0898 */ 0x86B8, 0xE0B3, 0x86B9, 0x86BA, 0xE0B8, 0x86BB, 0x86BC, 0x86BD, -/* 08A0 */ 0xB4AD, 0xE0B9, 0x86BE, 0x86BF, 0xCFB2, 0xBAC8, 0x86C0, 0xE0B0, -/* 08A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0FA, -/* 08B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08B8 */ 0xFFFD, 0xE0AC, 0x86D1, 0xD4FB, 0x86D2, 0xDFF7, 0x86D3, 0xC5E7, -/* 08C0 */ 0x86D4, 0xE0AD, 0x86D5, 0xD3F7, 0x86D6, 0xE0B6, 0xE0B7, 0x86D7, -/* 08C8 */ 0x86D8, 0x86D9, 0x86DA, 0x86DB, 0xE0C4, 0xD0E1, 0x86DC, 0x86DD, -/* 08D0 */ 0x86DE, 0xE0BC, 0x86DF, 0x86E0, 0xE0C9, 0xE0CA, 0x86E1, 0x86E2, -/* 08D8 */ 0x86E3, 0xE0BE, 0xE0AA, 0xC9A4, 0xE0C1, 0x86E4, 0xE0B2, 0x86E5, -/* 08E0 */ 0x86E6, 0x86E7, 0x86E8, 0x86E9, 0xCAC8, 0xE0C3, 0x86EA, 0xE0B5, -/* 08E8 */ 0x86EB, 0xCECB, 0x86EC, 0xCBC3, 0xE0CD, 0xE0C6, 0xE0C2, 0x86ED, -/* 08F0 */ 0xE0CB, 0x86EE, 0xE0BA, 0xE0BF, 0xE0C0, 0x86EF, 0x86F0, 0xE0C5, -/* 08F8 */ 0x86F1, 0x86F2, 0xE0C7, 0xE0C8, 0x86F3, 0xE0CC, 0x86F4, 0xE0BB, -/* 0900 */ 0x86F5, 0x86F6, 0x86F7, 0x86F8, 0x86F9, 0xCBD4, 0xE0D5, 0x86FA, -/* 0908 */ 0xE0D6, 0xE0D2, 0x86FB, 0x86FC, 0x86FD, 0x86FE, 0x8740, 0x8741, -/* 0910 */ 0xE0D0, 0xBCCE, 0x8742, 0x8743, 0xE0D1, 0x8744, 0xB8C2, 0xD8C5, -/* 0918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0920 */ 0xD0EA, 0x874D, 0x874E, 0xC2EF, 0x874F, 0x8750, 0xE0CF, 0xE0BD, -/* 0928 */ 0x8751, 0x8752, 0x8753, 0xE0D4, 0xE0D3, 0x8754, 0x8755, 0xE0D7, -/* 0930 */ 0x8756, 0x8757, 0x8758, 0x8759, 0xE0DC, 0xE0D8, 0x875A, 0x875B, -/* 0938 */ 0x875C, 0xD6F6, 0xB3B0, 0x875D, 0xD7EC, 0x875E, 0xCBBB, 0x875F, -/* 0940 */ 0x8760, 0xE0DA, 0x8761, 0xCEFB, 0x8762, 0x8763, 0x8764, 0xBAD9, -/* 0948 */ 0xE0E1, 0xE0DD, 0xD2AD, 0x8771, 0x8772, 0x8773, 0x8774, 0x8775, -/* 0950 */ 0xE0E2, 0x8776, 0x8777, 0xE0DB, 0xE0D9, 0xE0DF, 0x8778, 0x8779, -/* 0958 */ 0xE0E0, 0x877A, 0x877B, 0x877C, 0x877D, 0x877E, 0xE0DE, 0x8780, -/* 0960 */ 0xE0E4, 0x8781, 0x8782, 0x8783, 0xC6F7, 0xD8AC, 0xD4EB, 0xE0E6, -/* 0968 */ 0xCAC9, 0x8784, 0x8785, 0x8786, 0x8787, 0xE0E5, 0x8788, 0x8789, -/* 0970 */ 0x878A, 0x878B, 0xB8C1, 0x878C, 0x878D, 0x878E, 0x878F, 0xE0E7, -/* 0978 */ 0xE0E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0980 */ 0xFFFD, 0xE0E9, 0xE0E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0988 */ 0xFFFD, 0xFFFD, 0xBABF, 0xCCE7, 0x879F, 0x87A0, 0x87A1, 0xE0EA, -/* 0990 */ 0xE0EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0998 */ 0xC8C2, 0x87C3, 0x87C4, 0x87C5, 0x87C6, 0xBDC0, 0xC4D2, 0xFFFD, -/* 09A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09A8 */ 0xE0EC, 0x87DD, 0x87DE, 0xE0ED, 0x87DF, 0x87E0, 0xC7F4, 0xCBC4, -/* 09B0 */ 0x87E1, 0xE0EE, 0xBBD8, 0xD8B6, 0xD2F2, 0xE0EF, 0xCDC5, 0x87E2, -/* 09B8 */ 0xB6DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0F1, -/* 09C0 */ 0x87E9, 0xD4B0, 0x87EA, 0x87EB, 0xC0A7, 0xB4D1, 0x87EC, 0x87ED, -/* 09C8 */ 0xCEA7, 0xE0F0, 0x87EE, 0x87EF, 0x87F0, 0xE0F2, 0xB9CC, 0x87F1, -/* 09D0 */ 0x87F2, 0xB9FA, 0xCDBC, 0xE0F3, 0x87F3, 0x87F4, 0x87F5, 0xC6D4, -/* 09D8 */ 0xE0F4, 0x87F6, 0xD4B2, 0x87F7, 0xC8A6, 0xE0F6, 0xE0F5, 0xE0F7, -/* 09E0 */ 0x884A, 0x884B, 0xCDC1, 0x884C, 0x884D, 0x884E, 0xCAA5, 0x884F, -/* 09E8 */ 0x8850, 0x8851, 0x8852, 0xD4DA, 0xDBD7, 0xDBD9, 0x8853, 0xDBD8, -/* 09F0 */ 0xB9E7, 0xDBDC, 0xDBDD, 0xB5D8, 0x8854, 0x8855, 0xDBDA, 0x8856, -/* 09F8 */ 0x8857, 0x8858, 0x8859, 0x885A, 0xDBDB, 0xB3A1, 0xDBDF, 0x885B, -/* 0A00 */ 0x885C, 0xBBF8, 0x885D, 0xD6B7, 0x885E, 0xDBE0, 0x885F, 0x8860, -/* 0A08 */ 0x8861, 0x8862, 0xBEF9, 0x8863, 0x8864, 0xB7BB, 0x8865, 0xDBD0, -/* 0A10 */ 0xCCAE, 0xBFB2, 0xBBB5, 0xD7F8, 0xBFD3, 0x8866, 0x8867, 0x8868, -/* 0A18 */ 0x8869, 0x886A, 0xBFE9, 0x886B, 0x886C, 0xBCE1, 0xCCB3, 0xDBDE, -/* 0A20 */ 0xB0D3, 0xCEEB, 0xB7D8, 0xD7B9, 0xC6C2, 0x886D, 0x886E, 0xC0A4, -/* 0A28 */ 0x886F, 0xCCB9, 0x8870, 0xDBE7, 0xDBE1, 0xC6BA, 0xDBE3, 0x8871, -/* 0A30 */ 0xDBE8, 0x8872, 0xC5F7, 0x8873, 0x8874, 0x8875, 0xDBEA, 0x8876, -/* 0A38 */ 0x8877, 0xDBE9, 0xBFC0, 0x8878, 0x8879, 0x887A, 0xDBE6, 0xDBE5, -/* 0A40 */ 0x887B, 0x887C, 0x887D, 0x887E, 0x8880, 0xB4B9, 0xC0AC, 0xC2A2, -/* 0A48 */ 0xDBE2, 0xDBE4, 0x8881, 0x8882, 0x8883, 0x8884, 0xD0CD, 0xDBED, -/* 0A50 */ 0x8885, 0x8886, 0x8887, 0x8888, 0x8889, 0xC0DD, 0xDBF2, 0xFFFD, -/* 0A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB6E2, 0x8891, -/* 0A60 */ 0x8892, 0x8893, 0x8894, 0xDBF3, 0xDBD2, 0xB9B8, 0xD4AB, 0xDBEC, -/* 0A68 */ 0x8895, 0xBFD1, 0xDBF0, 0x8896, 0xDBD1, 0x8897, 0xB5E6, 0x8898, -/* 0A70 */ 0xDBEB, 0xBFE5, 0x8899, 0x889A, 0x889B, 0xDBEE, 0x889C, 0xDBF1, -/* 0A78 */ 0x889D, 0x889E, 0x889F, 0xDBF9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9A1, 0xB0A3, 0xFFFD, -/* 0A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2F1, 0x88B0, -/* 0A90 */ 0x88B1, 0xB3C7, 0xDBEF, 0x88B2, 0x88B3, 0xDBF8, 0x88B4, 0xC6D2, -/* 0A98 */ 0xDBF4, 0x88B5, 0x88B6, 0xDBF5, 0xDBF7, 0xDBF6, 0x88B7, 0x88B8, -/* 0AA0 */ 0xDBFE, 0x88B9, 0xD3F2, 0xB2BA, 0x88BA, 0x88BB, 0x88BC, 0xDBFD, -/* 0AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AB0 */ 0xDCA4, 0x88C5, 0xDBFB, 0x88C6, 0x88C7, 0x88C8, 0x88C9, 0xDBFA, -/* 0AB8 */ 0x88CA, 0x88CB, 0x88CC, 0xDBFC, 0xC5E0, 0xBBF9, 0x88CD, 0x88CE, -/* 0AC0 */ 0xDCA3, 0x88CF, 0x88D0, 0xDCA5, 0x88D1, 0xCCC3, 0x88D2, 0x88D3, -/* 0AC8 */ 0x88D4, 0xB6D1, 0xDDC0, 0x88D5, 0x88D6, 0x88D7, 0xDCA1, 0x88D8, -/* 0AD0 */ 0xDCA2, 0x88D9, 0x88DA, 0x88DB, 0xC7B5, 0x88DC, 0x88DD, 0x88DE, -/* 0AD8 */ 0xB6E9, 0x88DF, 0x88E0, 0x88E1, 0xDCA7, 0x88E2, 0x88E3, 0x88E4, -/* 0AE0 */ 0x88E5, 0xDCA6, 0x88E6, 0xDCA9, 0xB1A4, 0x88E7, 0x88E8, 0xB5CC, -/* 0AE8 */ 0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0xBFB0, 0x88EE, 0x88EF, -/* 0AF0 */ 0x88F0, 0x88F1, 0x88F2, 0xD1DF, 0x88F3, 0x88F4, 0x88F5, 0x88F6, -/* 0AF8 */ 0xB6C2, 0xDCA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B00 */ 0xFFFD, 0xCBFA, 0xEBF3, 0x894D, 0x894E, 0x894F, 0xCBDC, 0x8950, -/* 0B08 */ 0x8951, 0xCBFE, 0x8952, 0x8953, 0x8954, 0xCCC1, 0x8955, 0x8956, -/* 0B10 */ 0x8957, 0x8958, 0x8959, 0xC8FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B18 */ 0xFFFD, 0xFFFD, 0xDCAA, 0x8960, 0x8961, 0x8962, 0x8963, 0x8964, -/* 0B20 */ 0xCCEE, 0xDCAB, 0xDBD3, 0x8976, 0xDCAF, 0xDCAC, 0x8977, 0xBEB3, -/* 0B28 */ 0x8978, 0xCAFB, 0x8979, 0x897A, 0x897B, 0xDCAD, 0x897C, 0x897D, -/* 0B30 */ 0x897E, 0x8980, 0x8981, 0x8982, 0x8983, 0x8984, 0xC9CA, 0xC4B9, -/* 0B38 */ 0x8985, 0x8986, 0x8987, 0x8988, 0x8989, 0xC7BD, 0xDCAE, 0x898A, -/* 0B40 */ 0x898B, 0x898C, 0xD4F6, 0xD0E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4AB, 0xB6D5, 0xDBD4, 0x89A7, -/* 0B50 */ 0x89A8, 0x89A9, 0x89AA, 0xB1DA, 0x89AB, 0x89AC, 0x89AD, 0xDBD5, -/* 0B58 */ 0xDBD6, 0x89B9, 0x89BA, 0x89BB, 0xBABE, 0xC8C0, 0xFFFD, 0xFFFD, -/* 0B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCABF, 0xC8C9, 0x89D0, 0xD7B3, -/* 0B68 */ 0x89D1, 0xC9F9, 0x89D2, 0x89D3, 0xBFC7, 0x89D4, 0x89D5, 0xBAF8, -/* 0B70 */ 0x89D6, 0x89D7, 0xD2BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2BA, 0x89E0, 0xB4A6, 0x89E1, 0x89E2, -/* 0B80 */ 0xB1B8, 0x89E3, 0x89E4, 0x89E5, 0x89E6, 0x89E7, 0xB8B4, 0x89E8, -/* 0B88 */ 0xCFC4, 0x89E9, 0x89EA, 0x89EB, 0x89EC, 0xD9E7, 0xCFA6, 0xCDE2, -/* 0B90 */ 0x89ED, 0x89EE, 0xD9ED, 0xB6E0, 0x89EF, 0xD2B9, 0x89F0, 0x89F1, -/* 0B98 */ 0xB9BB, 0x89F2, 0x89F3, 0x89F4, 0x89F5, 0xE2B9, 0xE2B7, 0x89F6, -/* 0BA0 */ 0xB4F3, 0x89F7, 0xCCEC, 0xCCAB, 0xB7F2, 0x89F8, 0xD8B2, 0xD1EB, -/* 0BA8 */ 0xBABB, 0x89F9, 0xCAA7, 0x89FA, 0x89FB, 0xCDB7, 0x89FC, 0x89FD, -/* 0BB0 */ 0xD2C4, 0xBFE4, 0xBCD0, 0xB6E1, 0x89FE, 0xDEC5, 0x8A40, 0x8A41, -/* 0BB8 */ 0x8A42, 0x8A43, 0xDEC6, 0xDBBC, 0x8A44, 0xD1D9, 0x8A45, 0x8A46, -/* 0BC0 */ 0xC6E6, 0xC4CE, 0xB7EE, 0x8A47, 0xB7DC, 0x8A48, 0x8A49, 0xBFFC, -/* 0BC8 */ 0xD7E0, 0x8A4A, 0xC6F5, 0x8A4B, 0x8A4C, 0xB1BC, 0xDEC8, 0xBDB1, -/* 0BD0 */ 0xCCD7, 0xDECA, 0x8A4D, 0xDEC9, 0x8A4E, 0x8A4F, 0x8A50, 0x8A51, -/* 0BD8 */ 0x8A52, 0xB5EC, 0x8A53, 0xC9DD, 0x8A54, 0x8A55, 0xB0C2, 0xC5AE, -/* 0BE0 */ 0xC5AB, 0x8A63, 0xC4CC, 0x8A64, 0xBCE9, 0xCBFD, 0x8A65, 0x8A66, -/* 0BE8 */ 0x8A67, 0xBAC3, 0x8A68, 0x8A69, 0x8A6A, 0xE5F9, 0xC8E7, 0xE5FA, -/* 0BF0 */ 0xCDFD, 0x8A6B, 0xD7B1, 0xB8BE, 0xC2E8, 0x8A6C, 0xC8D1, 0x8A6D, -/* 0BF8 */ 0x8A6E, 0xE5FB, 0x8A6F, 0x8A70, 0x8A71, 0x8A72, 0xB6CA, 0xBCCB, -/* 0C00 */ 0x8A73, 0x8A74, 0xD1FD, 0xE6A1, 0x8A75, 0xC3EE, 0x8A76, 0x8A77, -/* 0C08 */ 0x8A78, 0x8A79, 0xE6A4, 0x8A7A, 0x8A7B, 0x8A7C, 0x8A7D, 0xE5FE, -/* 0C10 */ 0xE6A5, 0xCDD7, 0x8A7E, 0x8A80, 0xB7C1, 0xE5FC, 0xE5FD, 0xE6A3, -/* 0C18 */ 0x8A81, 0x8A82, 0xC4DD, 0xE6A8, 0x8A83, 0x8A84, 0xE6A7, 0xFFFD, -/* 0C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3C3, 0x8A8B, 0xC6DE, -/* 0C28 */ 0x8A8C, 0x8A8D, 0xE6AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C30 */ 0xFFFD, 0xFFFD, 0xC4B7, 0x8A95, 0x8A96, 0x8A97, 0xE6A2, 0xCABC, -/* 0C38 */ 0x8A98, 0x8A99, 0x8A9A, 0x8A9B, 0xBDE3, 0xB9C3, 0xE6A6, 0xD0D5, -/* 0C40 */ 0xCEAF, 0x8A9C, 0x8A9D, 0xE6A9, 0xE6B0, 0x8A9E, 0xD2A6, 0x8A9F, -/* 0C48 */ 0xBDAA, 0xE6AD, 0x8AA0, 0x8AA1, 0x8AA2, 0x8AA3, 0x8AA4, 0xE6AF, -/* 0C50 */ 0x8AA5, 0xC0D1, 0x8AA6, 0x8AA7, 0xD2CC, 0x8AA8, 0x8AA9, 0x8AAA, -/* 0C58 */ 0xBCA7, 0xE6B1, 0x8AB7, 0xD2F6, 0x8AB8, 0x8AB9, 0x8ABA, 0xD7CB, -/* 0C60 */ 0x8ABB, 0xCDFE, 0x8ABC, 0xCDDE, 0xC2A6, 0xE6AB, 0xE6AC, 0xBDBF, -/* 0C68 */ 0xE6AE, 0xE6B3, 0x8ABD, 0x8ABE, 0xE6B2, 0x8ABF, 0x8AC0, 0x8AC1, -/* 0C70 */ 0x8AC2, 0xE6B6, 0x8AC3, 0xE6B8, 0x8AC4, 0x8AC5, 0x8AC6, 0x8AC7, -/* 0C78 */ 0xC4EF, 0x8AC8, 0x8AC9, 0x8ACA, 0xC4C8, 0x8ACB, 0x8ACC, 0xBEEA, -/* 0C80 */ 0xC9EF, 0x8ACD, 0x8ACE, 0xE6B7, 0x8ACF, 0xB6F0, 0x8AD0, 0x8AD1, -/* 0C88 */ 0x8AD2, 0xC3E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C90 */ 0xFFFD, 0xD3E9, 0xE6B4, 0x8ADA, 0xE6B5, 0x8ADB, 0xC8A2, 0x8ADC, -/* 0C98 */ 0x8ADD, 0x8ADE, 0x8ADF, 0x8AE0, 0xE6BD, 0x8AE1, 0x8AE2, 0x8AE3, -/* 0CA0 */ 0xE6B9, 0x8AE4, 0x8AE5, 0x8AE6, 0x8AE7, 0x8AE8, 0xC6C5, 0x8AE9, -/* 0CA8 */ 0x8AEA, 0xCDF1, 0xE6BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6BC, 0x8AF5, 0x8AF6, -/* 0CB8 */ 0x8AF7, 0x8AF8, 0xBBE9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC0 */ 0xFFFD, 0x8B40, 0xE6BE, 0x8B41, 0x8B42, 0x8B43, 0x8B44, 0xE6BA, -/* 0CC8 */ 0x8B45, 0x8B46, 0xC0B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3A4, 0xE6BF, 0xC9F4, 0xE6C3, -/* 0CD8 */ 0x8B50, 0x8B51, 0xE6C4, 0x8B52, 0x8B53, 0x8B54, 0x8B55, 0xD0F6, -/* 0CE0 */ 0xC3BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0xC3C4, 0xE6C2, 0xE6C1, 0x8B7D, 0x8B7E, 0x8B80, 0x8B81, 0x8B82, -/* 0CF0 */ 0x8B83, 0x8B84, 0xE6C7, 0xCFB1, 0x8B85, 0xEBF4, 0x8B86, 0x8B87, -/* 0CF8 */ 0xE6CA, 0x8B88, 0x8B89, 0x8B8A, 0x8B8B, 0x8B8C, 0xE6C5, 0x8B8D, -/* 0D00 */ 0x8B8E, 0xBCDE, 0xC9A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D08 */ 0xFFFD, 0xBCB5, 0x8B95, 0x8B96, 0xCFD3, 0x8B97, 0x8B98, 0x8B99, -/* 0D10 */ 0x8B9A, 0x8B9B, 0xE6C8, 0x8B9C, 0xE6C9, 0x8B9D, 0xE6CE, 0x8B9E, -/* 0D18 */ 0xE6D0, 0x8B9F, 0x8BA0, 0x8BA1, 0xE6D1, 0x8BA2, 0x8BA3, 0x8BA4, -/* 0D20 */ 0xE6CB, 0xB5D5, 0x8BA5, 0xE6CC, 0x8BA6, 0x8BA7, 0xE6CF, 0x8BA8, -/* 0D28 */ 0x8BA9, 0xC4DB, 0x8BAA, 0xE6C6, 0x8BAB, 0x8BAC, 0x8BAD, 0x8BAE, -/* 0D30 */ 0x8BAF, 0xE6CD, 0xE6D4, 0xE6D3, 0xE6D5, 0x8BED, 0xD9F8, 0x8BEE, -/* 0D38 */ 0x8BEF, 0xE6D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D40 */ 0xFFFD, 0xFFFD, 0xE6D7, 0xD7D3, 0xE6DD, 0x8C48, 0xE6DE, 0xBFD7, -/* 0D48 */ 0xD4D0, 0x8C49, 0xD7D6, 0xB4E6, 0xCBEF, 0xE6DA, 0xD8C3, 0xD7CE, -/* 0D50 */ 0xD0A2, 0x8C4A, 0xC3CF, 0x8C4B, 0x8C4C, 0xE6DF, 0xBCBE, 0xB9C2, -/* 0D58 */ 0xE6DB, 0xD1A7, 0x8C4D, 0x8C4E, 0xBAA2, 0xC2CF, 0x8C4F, 0xD8AB, -/* 0D60 */ 0x8C50, 0x8C51, 0x8C52, 0xCAEB, 0xE5EE, 0x8C53, 0xE6DC, 0x8C54, -/* 0D68 */ 0xB7F5, 0x8C55, 0x8C56, 0x8C57, 0x8C58, 0xC8E6, 0x8C59, 0x8C5A, -/* 0D70 */ 0xC4F5, 0x8C5B, 0x8C5C, 0xE5B2, 0xC4FE, 0x8C5D, 0xCBFC, 0xE5B3, -/* 0D78 */ 0xD5AC, 0x8C5E, 0xD3EE, 0xCAD8, 0xB0B2, 0x8C5F, 0xCBCE, 0xCDEA, -/* 0D80 */ 0x8C60, 0x8C61, 0xBAEA, 0x8C62, 0x8C63, 0x8C64, 0xE5B5, 0x8C65, -/* 0D88 */ 0xE5B4, 0x8C66, 0xD7DA, 0xB9D9, 0xD6E6, 0xB6A8, 0xCDF0, 0xD2CB, -/* 0D90 */ 0xB1A6, 0xCAB5, 0x8C67, 0xB3E8, 0xC9F3, 0xBFCD, 0xD0FB, 0xCAD2, -/* 0D98 */ 0xE5B6, 0xBBC2, 0x8C68, 0x8C69, 0x8C6A, 0xCFDC, 0xB9AC, 0x8C6B, -/* 0DA0 */ 0x8C6C, 0x8C6D, 0x8C6E, 0xD4D7, 0x8C6F, 0x8C70, 0xBAA6, 0xD1E7, -/* 0DA8 */ 0xCFFC, 0xBCD2, 0x8C71, 0xE5B7, 0xC8DD, 0x8C72, 0x8C73, 0x8C74, -/* 0DB0 */ 0xBFED, 0xB1F6, 0xCBDE, 0x8C75, 0x8C76, 0xBCC5, 0x8C77, 0xBCC4, -/* 0DB8 */ 0xD2FA, 0xC3DC, 0xBFDC, 0x8C78, 0x8C79, 0x8C7A, 0x8C7B, 0xB8BB, -/* 0DC0 */ 0x8C7C, 0x8C7D, 0x8C7E, 0xC3C2, 0x8C80, 0xBAAE, 0xD4A2, 0xFFFD, -/* 0DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DD0 */ 0xC7DE, 0xC4AF, 0xB2EC, 0x8C8A, 0xB9D1, 0x8C8B, 0x8C8C, 0xE5BB, -/* 0DD8 */ 0xC1C8, 0x8C8D, 0x8C8E, 0xD5AF, 0x8C8F, 0x8C90, 0x8C91, 0x8C92, -/* 0DE0 */ 0x8C93, 0xE5BC, 0x8C94, 0xE5BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB4E7, 0xB6D4, 0xCBC2, 0xD1B0, 0xB5BC, -/* 0DF0 */ 0x8C9C, 0x8C9D, 0xCAD9, 0x8C9E, 0xB7E2, 0x8C9F, 0x8CA0, 0xC9E4, -/* 0DF8 */ 0x8CA1, 0xBDAB, 0x8CA2, 0x8CA3, 0xCEBE, 0xD7F0, 0x8CA4, 0x8CA5, -/* 0E00 */ 0x8CA6, 0x8CA7, 0xD0A1, 0x8CA8, 0xC9D9, 0x8CA9, 0x8CAA, 0xB6FB, -/* 0E08 */ 0xE6D8, 0xBCE2, 0x8CAB, 0xB3BE, 0x8CAC, 0xC9D0, 0x8CAD, 0xE6D9, -/* 0E10 */ 0xB3A2, 0x8CAE, 0x8CAF, 0x8CB0, 0x8CB1, 0xDECC, 0x8CB2, 0xD3C8, -/* 0E18 */ 0xDECD, 0x8CB3, 0xD2A2, 0x8CB4, 0x8CB5, 0x8CB6, 0x8CB7, 0xDECE, -/* 0E20 */ 0x8CB8, 0x8CB9, 0x8CBA, 0x8CBB, 0xBECD, 0x8CBC, 0x8CBD, 0xDECF, -/* 0E28 */ 0x8CBE, 0x8CBF, 0x8CC0, 0xCAAC, 0xD2FC, 0xB3DF, 0xE5EA, 0xC4E1, -/* 0E30 */ 0xBEA1, 0xCEB2, 0xC4F2, 0xBED6, 0xC6A8, 0xB2E3, 0x8CC1, 0x8CC2, -/* 0E38 */ 0xBED3, 0x8CC3, 0x8CC4, 0xC7FC, 0xCCEB, 0xBDEC, 0xCEDD, 0x8CC5, -/* 0E40 */ 0x8CC6, 0xCABA, 0xC6C1, 0xE5EC, 0xD0BC, 0x8CC7, 0x8CC8, 0x8CC9, -/* 0E48 */ 0xD5B9, 0x8CCA, 0x8CCB, 0x8CCC, 0xE5ED, 0x8CCD, 0x8CCE, 0x8CCF, -/* 0E50 */ 0x8CD0, 0xCAF4, 0x8CD1, 0xCDC0, 0xC2C5, 0x8CD2, 0xE5EF, 0x8CD3, -/* 0E58 */ 0xC2C4, 0xE5F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E60 */ 0xFFFD, 0xE5F8, 0xCDCD, 0x8CDB, 0xC9BD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2D9, 0xE1A8, 0x8CE3, 0x8CE4, -/* 0E70 */ 0x8CE5, 0x8CE6, 0xD3EC, 0x8CE7, 0xCBEA, 0xC6F1, 0x8CE8, 0x8CE9, -/* 0E78 */ 0x8CEA, 0x8CEB, 0x8CEC, 0xE1AC, 0x8CED, 0x8CEE, 0x8CEF, 0xE1A7, -/* 0E80 */ 0xE1A9, 0x8CF0, 0x8CF1, 0xE1AA, 0xE1AF, 0x8CF2, 0x8CF3, 0xB2ED, -/* 0E88 */ 0x8CF4, 0xE1AB, 0xB8DA, 0xE1AD, 0xE1AE, 0xE1B0, 0xB5BA, 0xE1B1, -/* 0E90 */ 0x8CF5, 0x8CF6, 0x8CF7, 0x8CF8, 0x8CF9, 0xE1B3, 0xE1B8, 0x8CFA, -/* 0E98 */ 0x8CFB, 0x8CFC, 0x8CFD, 0x8CFE, 0xD1D2, 0x8D40, 0xE1B6, 0xE1B5, -/* 0EA0 */ 0xC1EB, 0x8D41, 0x8D42, 0x8D43, 0xE1B7, 0x8D44, 0xD4C0, 0x8D45, -/* 0EA8 */ 0xE1B2, 0x8D46, 0xE1BA, 0xB0B6, 0x8D47, 0x8D48, 0x8D49, 0x8D4A, -/* 0EB0 */ 0xE1B4, 0x8D4B, 0xBFF9, 0x8D4C, 0xE1B9, 0x8D4D, 0x8D4E, 0xE1BB, -/* 0EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1BE, 0xFFFD, -/* 0EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1BC, 0xFFFD, 0xFFFD, -/* 0EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6C5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFBF, 0x8D68, 0x8D69, 0xE1BD, -/* 0ED8 */ 0xE1BF, 0xC2CD, 0x8D6A, 0xB6EB, 0x8D6B, 0xD3F8, 0x8D6C, 0x8D6D, -/* 0EE0 */ 0xC7CD, 0x8D6E, 0x8D6F, 0xB7E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBEFE, 0x8D7A, -/* 0EF0 */ 0x8D7B, 0x8D7C, 0x8D7D, 0x8D7E, 0x8D80, 0xE1C0, 0xE1C1, 0x8D81, -/* 0EF8 */ 0x8D82, 0xE1C7, 0xB3E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F00 */ 0xFFFD, 0xC6E9, 0x8D89, 0x8D8A, 0x8D8B, 0x8D8C, 0x8D8D, 0xB4DE, -/* 0F08 */ 0x8D8E, 0xD1C2, 0x8D8F, 0x8D90, 0x8D91, 0x8D92, 0xE1C8, 0x8D93, -/* 0F10 */ 0x8D94, 0xE1C6, 0x8D95, 0x8D96, 0x8D97, 0x8D98, 0x8D99, 0xE1C5, -/* 0F18 */ 0x8D9A, 0xE1C3, 0xE1C2, 0x8D9B, 0xB1C0, 0x8D9C, 0x8D9D, 0x8D9E, -/* 0F20 */ 0xD5B8, 0xE1C4, 0x8D9F, 0x8DA0, 0x8DA1, 0x8DA2, 0x8DA3, 0xE1CB, -/* 0F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F30 */ 0xE1CC, 0xE1CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F38 */ 0xFFFD, 0xFFFD, 0xEFFA, 0x8DB4, 0x8DB5, 0xE1D3, 0xE1D2, 0xC7B6, -/* 0F40 */ 0xE1C9, 0x8DC1, 0x8DC2, 0xE1CE, 0x8DC3, 0xE1D0, 0xE1D4, 0x8DCF, -/* 0F48 */ 0xE1D1, 0xE1CD, 0x8DD0, 0x8DD1, 0xE1CF, 0x8DD2, 0x8DD3, 0x8DD4, -/* 0F50 */ 0x8DD5, 0xE1D5, 0xE1D7, 0x8DF9, 0x8DFA, 0x8DFB, 0xE1D8, 0x8DFC, -/* 0F58 */ 0x8DFD, 0x8DFE, 0xE1DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F60 */ 0xFFFD, 0xFFFD, 0xCEA1, 0xE7DD, 0x8E77, 0xB4A8, 0xD6DD, 0x8E78, -/* 0F68 */ 0x8E79, 0xD1B2, 0xB3B2, 0x8E7A, 0x8E7B, 0xB9A4, 0xD7F3, 0xC7C9, -/* 0F70 */ 0xBEDE, 0xB9AE, 0x8E7C, 0xCED7, 0x8E7D, 0x8E7E, 0xB2EE, 0xDBCF, -/* 0F78 */ 0x8E80, 0xBCBA, 0xD2D1, 0xCBC8, 0xB0CD, 0x8E81, 0x8E82, 0xCFEF, -/* 0F80 */ 0x8E83, 0x8E84, 0x8E85, 0x8E86, 0x8E87, 0xD9E3, 0xBDED, 0x8E88, -/* 0F88 */ 0x8E89, 0xB1D2, 0xCAD0, 0xB2BC, 0x8E8A, 0xCBA7, 0xB7AB, 0x8E8B, -/* 0F90 */ 0xCAA6, 0x8E8C, 0x8E8D, 0x8E8E, 0xCFA3, 0x8E8F, 0x8E90, 0xE0F8, -/* 0F98 */ 0xD5CA, 0xE0FB, 0x8E91, 0x8E92, 0xE0FA, 0xC5C1, 0xCCFB, 0x8E93, -/* 0FA0 */ 0xC1B1, 0xE0F9, 0xD6E3, 0xB2AF, 0xD6C4, 0xB5DB, 0xFFFD, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4F8, 0xD6A1, -/* 0FB0 */ 0x8E9C, 0x8E9D, 0x8E9E, 0x8E9F, 0x8EA0, 0xCFAF, 0xB0EF, 0x8EA1, -/* 0FB8 */ 0x8EA2, 0xE0FC, 0x8EA3, 0x8EA4, 0x8EA5, 0x8EA6, 0x8EA7, 0xE1A1, -/* 0FC0 */ 0xB3A3, 0x8EA8, 0x8EA9, 0xE0FD, 0xE0FE, 0xC3B1, 0x8EAA, 0x8EAB, -/* 0FC8 */ 0x8EAC, 0x8EAD, 0xC3DD, 0x8EAE, 0xE1A2, 0xB7F9, 0xFFFD, 0xFFFD, -/* 0FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBCF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1A3, 0xC4BB, 0x8EBC, 0x8EBD, -/* 0FE0 */ 0x8EBE, 0x8EBF, 0x8EC0, 0xE1A4, 0x8EC1, 0x8EC2, 0xE1A5, 0x8EC3, -/* 0FE8 */ 0x8EC4, 0xE1A6, 0xB4B1, 0xB8C9, 0xC6BD, 0xC4EA, 0x8ED4, 0xB2A2, -/* 0FF0 */ 0x8ED5, 0xD0D2, 0x8ED6, 0xE7DB, 0xBBC3, 0xD3D7, 0xD3C4, 0x8ED7, -/* 0FF8 */ 0xB9E3, 0xE2CF, 0x8ED8, 0x8ED9, 0x8EDA, 0xD7AF, 0x8EDB, 0xC7EC, -/* 1000 */ 0xB1D3, 0x8EDC, 0x8EDD, 0xB4B2, 0xE2D1, 0x8EDE, 0x8EDF, 0x8EE0, -/* 1008 */ 0xD0F2, 0xC2AE, 0xE2D0, 0x8EE1, 0xBFE2, 0xD3A6, 0xB5D7, 0xE2D2, -/* 1010 */ 0xB5EA, 0x8EE2, 0xC3ED, 0xB8FD, 0x8EE3, 0xB8AE, 0x8EE4, 0xC5D3, -/* 1018 */ 0xB7CF, 0xE2D4, 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0xE2D3, 0xB6C8, -/* 1020 */ 0xD7F9, 0x8EE9, 0x8EEA, 0x8EEB, 0x8EEC, 0x8EED, 0xCDA5, 0x8EEE, -/* 1028 */ 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF2, 0xE2D8, 0x8EF3, 0xE2D6, 0xCAFC, -/* 1030 */ 0xBFB5, 0xD3B9, 0xE2D5, 0x8EF4, 0x8EF5, 0x8EF6, 0x8EF7, 0xE2D7, -/* 1038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F40, -/* 1040 */ 0x8F41, 0x8F42, 0xC1AE, 0xC0C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1048 */ 0xFFFD, 0xFFFD, 0xE2DB, 0xE2DA, 0xC0AA, 0x8F49, 0x8F4A, 0xC1CE, -/* 1050 */ 0x8F4B, 0x8F4C, 0x8F4D, 0x8F4E, 0xE2DC, 0xE2DD, 0x8F5B, 0xE2DE, -/* 1058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1060 */ 0xFFFD, 0xDBC8, 0x8F65, 0xD1D3, 0xCDA2, 0x8F66, 0x8F67, 0xBDA8, -/* 1068 */ 0x8F68, 0x8F69, 0x8F6A, 0xDEC3, 0xD8A5, 0xBFAA, 0xDBCD, 0xD2EC, -/* 1070 */ 0xC6FA, 0xC5AA, 0x8F6B, 0x8F6C, 0x8F6D, 0xDEC4, 0x8F6E, 0xB1D7, -/* 1078 */ 0xDFAE, 0x8F6F, 0x8F70, 0x8F71, 0xCABD, 0x8F72, 0xDFB1, 0x8F73, -/* 1080 */ 0xB9AD, 0x8F74, 0xD2FD, 0x8F75, 0xB8A5, 0xBAEB, 0x8F76, 0x8F77, -/* 1088 */ 0xB3DA, 0x8F78, 0x8F79, 0x8F7A, 0xB5DC, 0xD5C5, 0x8F7B, 0x8F7C, -/* 1090 */ 0x8F7D, 0x8F7E, 0xC3D6, 0xCFD2, 0xBBA1, 0x8F80, 0xE5F3, 0xE5F2, -/* 1098 */ 0x8F81, 0x8F82, 0xE5F4, 0x8F83, 0xCDE4, 0x8F84, 0xC8F5, 0xFFFD, -/* 10A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5AF, 0xC7BF, -/* 10A8 */ 0x8F8C, 0xE5F6, 0x8F8D, 0x8F8E, 0x8F8F, 0xECB0, 0xE5E6, 0x8F9F, -/* 10B0 */ 0xB9E9, 0xB5B1, 0x8FA0, 0xC2BC, 0xE5E8, 0xE5E7, 0xE5E9, 0x8FA1, -/* 10B8 */ 0x8FA2, 0x8FA3, 0x8FA4, 0xD2CD, 0x8FA5, 0x8FA6, 0x8FA7, 0xE1EA, -/* 10C0 */ 0xD0CE, 0x8FA8, 0xCDAE, 0x8FA9, 0xD1E5, 0x8FAA, 0x8FAB, 0xB2CA, -/* 10C8 */ 0xB1EB, 0x8FAC, 0xB1F2, 0xC5ED, 0x8FAD, 0x8FAE, 0xD5C3, 0xD3B0, -/* 10D0 */ 0x8FAF, 0xE1DC, 0x8FB0, 0x8FB1, 0x8FB2, 0xE1DD, 0x8FB3, 0xD2DB, -/* 10D8 */ 0x8FB4, 0xB3B9, 0xB1CB, 0x8FB5, 0x8FB6, 0x8FB7, 0xCDF9, 0xD5F7, -/* 10E0 */ 0xE1DE, 0x8FB8, 0xBEB6, 0xB4FD, 0x8FB9, 0xE1DF, 0xBADC, 0xE1E0, -/* 10E8 */ 0xBBB2, 0xC2C9, 0xE1E1, 0x8FBA, 0x8FBB, 0x8FBC, 0xD0EC, 0x8FBD, -/* 10F0 */ 0xCDBD, 0x8FBE, 0x8FBF, 0xE1E2, 0x8FC0, 0xB5C3, 0xC5C7, 0xE1E3, -/* 10F8 */ 0x8FC1, 0x8FC2, 0xE1E4, 0x8FC3, 0x8FC4, 0x8FC5, 0x8FC6, 0xD3F9, -/* 1100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E5, 0x8FCD, -/* 1108 */ 0xD1AD, 0x8FCE, 0x8FCF, 0xE1E6, 0xCEA2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E7, 0x8FD6, 0xB5C2, 0x8FD7, 0x8FD8, -/* 1118 */ 0x8FD9, 0x8FDA, 0xE1E8, 0xBBD5, 0x8FDB, 0x8FDC, 0x8FDD, 0x8FDE, -/* 1120 */ 0x8FDF, 0xD0C4, 0xE2E0, 0xB1D8, 0xD2E4, 0x8FE0, 0x8FE1, 0xE2E1, -/* 1128 */ 0x8FE2, 0x8FE3, 0xBCC9, 0xC8CC, 0x8FE4, 0xE2E3, 0xECFE, 0xECFD, -/* 1130 */ 0xDFAF, 0x8FE5, 0x8FE6, 0x8FE7, 0xE2E2, 0xD6BE, 0xCDFC, 0xC3A6, -/* 1138 */ 0x8FE8, 0x8FE9, 0x8FEA, 0xE3C3, 0x8FEB, 0x8FEC, 0xD6D2, 0xE2E7, -/* 1140 */ 0x8FED, 0x8FEE, 0xE2E8, 0x8FEF, 0x8FF0, 0xD3C7, 0x8FF1, 0x8FF2, -/* 1148 */ 0xE2EC, 0xBFEC, 0x8FF3, 0xE2ED, 0xE2E5, 0x8FF4, 0x8FF5, 0xB3C0, -/* 1150 */ 0x8FF6, 0x8FF7, 0x8FF8, 0xC4EE, 0x8FF9, 0x8FFA, 0xE2EE, 0x8FFB, -/* 1158 */ 0x8FFC, 0xD0C3, 0x8FFD, 0xBAF6, 0xE2E9, 0xB7DE, 0xBBB3, 0xCCAC, -/* 1160 */ 0xCBCB, 0xE2E4, 0xE2E6, 0xE2EA, 0xE2EB, 0x8FFE, 0x9040, 0x9041, -/* 1168 */ 0xE2F7, 0x9042, 0x9043, 0xE2F4, 0xD4F5, 0xE2F3, 0x9044, 0x9045, -/* 1170 */ 0xC5AD, 0x9046, 0xD5FA, 0xC5C2, 0xB2C0, 0x9047, 0x9048, 0xE2EF, -/* 1178 */ 0x9049, 0xE2F2, 0xC1AF, 0xCBBC, 0x904A, 0x904B, 0xB5A1, 0xE2F9, -/* 1180 */ 0x904C, 0x904D, 0x904E, 0xBCB1, 0xE2F1, 0xD0D4, 0xD4B9, 0xE2F5, -/* 1188 */ 0xB9D6, 0xE2F6, 0x904F, 0x9050, 0x9051, 0xC7D3, 0x9052, 0x9053, -/* 1190 */ 0x9054, 0x9055, 0x9056, 0xE2F0, 0x9057, 0x9058, 0x9059, 0x905A, -/* 1198 */ 0x905B, 0xD7DC, 0xEDA1, 0x905C, 0x905D, 0xE2F8, 0x905E, 0xEDA5, -/* 11A0 */ 0xE2FE, 0xCAD1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11A8 */ 0xFFFD, 0xC1B5, 0x9066, 0xBBD0, 0x9067, 0x9068, 0xBFD6, 0x9069, -/* 11B0 */ 0xBAE3, 0x906A, 0x906B, 0xCBA1, 0x906C, 0x906D, 0x906E, 0xEDA6, -/* 11B8 */ 0xEDA3, 0x906F, 0x9070, 0xEDA2, 0x9071, 0x9072, 0x9073, 0x9074, -/* 11C0 */ 0xBBD6, 0xEDA7, 0xD0F4, 0x9075, 0x9076, 0xEDA4, 0xBADE, 0xB6F7, -/* 11C8 */ 0xE3A1, 0xB6B2, 0xCCF1, 0xB9A7, 0x9077, 0xCFA2, 0xC7A1, 0x9078, -/* 11D0 */ 0x9079, 0xBFD2, 0x907A, 0x907B, 0xB6F1, 0x907C, 0xE2FA, 0xE2FB, -/* 11D8 */ 0xE2FD, 0xE2FC, 0xC4D5, 0xE3A2, 0x907D, 0xD3C1, 0x907E, 0x9080, -/* 11E0 */ 0x9081, 0xE3A7, 0xC7C4, 0x9082, 0x9083, 0x9084, 0x9085, 0xCFA4, -/* 11E8 */ 0x9086, 0x9087, 0xE3A9, 0xBAB7, 0x9088, 0x9089, 0x908A, 0x908B, -/* 11F0 */ 0xE3A8, 0x908C, 0xBBDA, 0x908D, 0xE3A3, 0x908E, 0x908F, 0x9090, -/* 11F8 */ 0xE3A4, 0xE3AA, 0x9091, 0xE3A6, 0x9092, 0xCEF2, 0xD3C6, 0x9093, -/* 1200 */ 0x9094, 0xBBBC, 0x9095, 0x9096, 0xD4C3, 0x9097, 0xC4FA, 0x9098, -/* 1208 */ 0x9099, 0xEDA8, 0xD0FC, 0xE3A5, 0x909A, 0xC3F5, 0x909B, 0xE3AD, -/* 1210 */ 0xB1AF, 0x909C, 0xE3B2, 0x909D, 0x909E, 0x909F, 0xBCC2, 0x90A0, -/* 1218 */ 0x90A1, 0xE3AC, 0xB5BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC7E9, 0xE3B0, 0x90AA, 0x90AB, 0x90AC, -/* 1228 */ 0xBEAA, 0xCDEF, 0x90AD, 0x90AE, 0x90AF, 0x90B0, 0x90B1, 0xBBF3, -/* 1230 */ 0x90B2, 0x90B3, 0x90B4, 0xCCE8, 0x90B5, 0x90B6, 0xE3AF, 0x90B7, -/* 1238 */ 0xE3B1, 0x90B8, 0xCFA7, 0xE3AE, 0x90B9, 0xCEA9, 0xBBDD, 0x90BA, -/* 1240 */ 0x90BB, 0x90BC, 0x90BD, 0x90BE, 0xB5EB, 0xBEE5, 0xB2D2, 0xB3CD, -/* 1248 */ 0x90BF, 0xB1B9, 0xE3AB, 0xB2D1, 0xB5AC, 0xB9DF, 0xB6E8, 0x90C0, -/* 1250 */ 0x90C1, 0xCFEB, 0xE3B7, 0x90C2, 0xBBCC, 0x90C3, 0x90C4, 0xC8C7, -/* 1258 */ 0xD0CA, 0x90C5, 0x90C6, 0x90C7, 0x90C8, 0x90C9, 0xE3B8, 0xB3EE, -/* 1260 */ 0x90CA, 0x90CB, 0x90CC, 0x90CD, 0xEDA9, 0x90CE, 0xD3FA, 0xD3E4, -/* 1268 */ 0x90CF, 0x90D0, 0x90D1, 0xEDAA, 0xE3B9, 0xD2E2, 0x90D2, 0x90D3, -/* 1270 */ 0x90D4, 0x90D5, 0x90D6, 0xE3B5, 0x90D7, 0x90D8, 0x90D9, 0x90DA, -/* 1278 */ 0xD3DE, 0x90DB, 0x90DC, 0x90DD, 0x90DE, 0xB8D0, 0xE3B3, 0x90DF, -/* 1280 */ 0x90E0, 0xE3B6, 0xB7DF, 0x90E1, 0xE3B4, 0xC0A2, 0x90E2, 0x90E3, -/* 1288 */ 0x90E4, 0xE3BA, 0xD4B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1290 */ 0xFFFD, 0xFFFD, 0x9140, 0xB4C8, 0x9141, 0xE3BB, 0x9142, 0xBBC5, -/* 1298 */ 0x9143, 0xC9F7, 0x9144, 0x9145, 0xC9E5, 0x9146, 0x9147, 0x9148, -/* 12A0 */ 0xC4BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A8 */ 0xEDAB, 0x9150, 0x9151, 0x9152, 0x9153, 0xC2FD, 0x9154, 0x9155, -/* 12B0 */ 0x9156, 0x9157, 0xBBDB, 0xBFAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCEBF, 0x915F, 0x9160, 0x9161, 0x9162, -/* 12C0 */ 0xE3BC, 0x9163, 0xBFB6, 0xB1EF, 0x9177, 0x9178, 0xD4F7, 0x9179, -/* 12C8 */ 0x917A, 0x917B, 0x917C, 0x917D, 0xE3BE, 0x917E, 0xFFFD, 0xFFFD, -/* 12D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDAD, 0xFFFD, 0xFFFD, -/* 12D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3BF, -/* 12E0 */ 0xBAA9, 0xEDAC, 0x9190, 0x9191, 0xE3BD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3C0, -/* 12F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAB6, 0x91A2, -/* 12F8 */ 0x91A3, 0x91A4, 0xB6AE, 0x91A5, 0x91A6, 0x91A7, 0x91A8, 0x91A9, -/* 1300 */ 0xD0B8, 0x91AA, 0xB0C3, 0xEDAE, 0x91AB, 0x91AC, 0x91AD, 0x91AE, -/* 1308 */ 0x91AF, 0xEDAF, 0xC0C1, 0x91B0, 0xE3C1, 0xE3C2, 0xFFFD, 0xFFFD, -/* 1310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDCB2, -/* 1318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDB0, 0x91DF, -/* 1320 */ 0xB8EA, 0x91E0, 0xCEEC, 0xEAA7, 0xD0E7, 0xCAF9, 0xC8D6, 0xCFB7, -/* 1328 */ 0xB3C9, 0xCED2, 0xBDE4, 0x91E1, 0x91E2, 0xE3DE, 0xBBF2, 0xEAA8, -/* 1330 */ 0xD5BD, 0x91E3, 0xC6DD, 0xEAA9, 0x91E4, 0x91E5, 0x91E6, 0xEAAA, -/* 1338 */ 0x91E7, 0xEAAC, 0xEAAB, 0x91E8, 0xEAAE, 0xEAAD, 0x91E9, 0x91EA, -/* 1340 */ 0x91EB, 0x91EC, 0xBDD8, 0x91ED, 0xEAAF, 0x91EE, 0xC2BE, 0x91EF, -/* 1348 */ 0x91F0, 0x91F1, 0x91F2, 0xB4C1, 0xB4F7, 0x91F3, 0x91F4, 0xBBA7, -/* 1350 */ 0x91F5, 0x91F6, 0x91F7, 0x91F8, 0x91F9, 0xECE6, 0xECE5, 0xB7BF, -/* 1358 */ 0xCBF9, 0xB1E2, 0x91FA, 0xECE7, 0x91FB, 0x91FC, 0x91FD, 0xC9C8, -/* 1360 */ 0xECE8, 0xECE9, 0x91FE, 0xCAD6, 0xDED0, 0xB2C5, 0xD4FA, 0x9240, -/* 1368 */ 0x9241, 0xC6CB, 0xB0C7, 0xB4F2, 0xC8D3, 0x9242, 0x9243, 0x9244, -/* 1370 */ 0xCDD0, 0x9245, 0x9246, 0xBFB8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBFDB, 0x924E, 0x924F, 0xC7A4, 0xD6B4, -/* 1380 */ 0x9250, 0xC0A9, 0xDED1, 0xC9A8, 0xD1EF, 0xC5A4, 0xB0E7, 0xB3B6, -/* 1388 */ 0xC8C5, 0x9251, 0x9252, 0xB0E2, 0x9253, 0x9254, 0xB7F6, 0x9255, -/* 1390 */ 0x9256, 0xC5FA, 0x9257, 0x9258, 0xB6F3, 0x9259, 0xD5D2, 0xB3D0, -/* 1398 */ 0xBCBC, 0x925A, 0x925B, 0x925C, 0xB3AD, 0x925D, 0x925E, 0x925F, -/* 13A0 */ 0x9260, 0xBEF1, 0xB0D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13A8 */ 0xFFFD, 0xD2D6, 0xCAE3, 0xD7A5, 0x9267, 0xCDB6, 0xB6B6, 0xBFB9, -/* 13B0 */ 0xD5DB, 0x9268, 0xB8A7, 0xC5D7, 0x9269, 0x926A, 0x926B, 0xDED2, -/* 13B8 */ 0xBFD9, 0xC2D5, 0xC7C0, 0x926C, 0xBBA4, 0xB1A8, 0x926D, 0x926E, -/* 13C0 */ 0xC5EA, 0x926F, 0x9270, 0xC5FB, 0xCCA7, 0x9271, 0x9272, 0x9273, -/* 13C8 */ 0x9274, 0xB1A7, 0x9275, 0x9276, 0x9277, 0xB5D6, 0x9278, 0x9279, -/* 13D0 */ 0x927A, 0xC4A8, 0x927B, 0xDED3, 0xD1BA, 0xB3E9, 0x927C, 0xC3F2, -/* 13D8 */ 0x927D, 0x927E, 0xB7F7, 0x9280, 0xD6F4, 0xB5A3, 0xB2F0, 0xC4B4, -/* 13E0 */ 0xC4E9, 0xC0AD, 0xDED4, 0x9281, 0xB0E8, 0xC5C4, 0xC1E0, 0x9282, -/* 13E8 */ 0xB9D5, 0x9283, 0xBEDC, 0xCDD8, 0xB0CE, 0x9284, 0xCDCF, 0xDED6, -/* 13F0 */ 0xBED0, 0xD7BE, 0xDED5, 0xD5D0, 0xB0DD, 0x9285, 0x9286, 0xC4E2, -/* 13F8 */ 0x9287, 0x9288, 0xC2A3, 0xBCF0, 0x9289, 0xD3B5, 0xC0B9, 0xC5A1, -/* 1400 */ 0xB2A6, 0xD4F1, 0x928A, 0x928B, 0xC0A8, 0xCAC3, 0xDED7, 0xD5FC, -/* 1408 */ 0x928C, 0xB9B0, 0x928D, 0xC8AD, 0xCBA9, 0x928E, 0xDED9, 0xBFBD, -/* 1410 */ 0x928F, 0x9290, 0x9291, 0x9292, 0xC6B4, 0xD7A7, 0xCAB0, 0xC4C3, -/* 1418 */ 0x9293, 0xB3D6, 0xB9D2, 0x9294, 0x9295, 0x9296, 0x9297, 0xD6B8, -/* 1420 */ 0xEAFC, 0xB0B4, 0x9298, 0x9299, 0x929A, 0x929B, 0xBFE6, 0x929C, -/* 1428 */ 0x929D, 0xCCF4, 0x929E, 0x929F, 0x92A0, 0x92A1, 0xCDDA, 0x92A2, -/* 1430 */ 0x92A3, 0x92A4, 0xD6BF, 0xC2CE, 0x92A5, 0xCECE, 0xCCA2, 0xD0AE, -/* 1438 */ 0xC4D3, 0xB5B2, 0xDED8, 0xD5F5, 0xBCB7, 0xBBD3, 0x92A6, 0x92A7, -/* 1440 */ 0xB0A4, 0x92A8, 0xC5B2, 0xB4EC, 0x92A9, 0x92AA, 0x92AB, 0xD5F1, -/* 1448 */ 0x92AC, 0x92AD, 0xEAFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1450 */ 0xFFFD, 0xDEDA, 0xCDA6, 0x92B4, 0x92B5, 0xCDEC, 0x92B6, 0x92B7, -/* 1458 */ 0x92B8, 0x92B9, 0xCEE6, 0xDEDC, 0x92BA, 0xCDB1, 0xC0A6, 0x92BB, -/* 1460 */ 0x92BC, 0xD7BD, 0x92BD, 0xDEDB, 0xB0C6, 0xBAB4, 0xC9D3, 0xC4F3, -/* 1468 */ 0xBEE8, 0x92BE, 0x92BF, 0x92C0, 0x92C1, 0xB2B6, 0xFFFD, 0xFFFD, -/* 1470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0CC, 0xCBF0, -/* 1478 */ 0x92CA, 0xBCF1, 0xBBBB, 0xB5B7, 0x92CB, 0x92CC, 0x92CD, 0xC5F5, -/* 1480 */ 0x92CE, 0xDEE6, 0x92CF, 0x92D0, 0x92D1, 0xDEE3, 0xBEDD, 0x92D2, -/* 1488 */ 0x92D3, 0xDEDF, 0x92D4, 0x92D5, 0x92D6, 0x92D7, 0xB4B7, 0xBDDD, -/* 1490 */ 0x92D8, 0x92D9, 0xDEE0, 0xC4ED, 0x92DA, 0x92DB, 0x92DC, 0x92DD, -/* 1498 */ 0xCFC6, 0x92DE, 0xB5E0, 0x92DF, 0x92E0, 0x92E1, 0x92E2, 0xB6DE, -/* 14A0 */ 0xCADA, 0xB5F4, 0xDEE5, 0x92E3, 0xD5C6, 0x92E4, 0xDEE1, 0xCCCD, -/* 14A8 */ 0xC6FE, 0x92E5, 0xC5C5, 0x92E6, 0x92E7, 0x92E8, 0xD2B4, 0x92E9, -/* 14B0 */ 0xBEF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14B8 */ 0xC2D3, 0x92F1, 0xCCBD, 0xB3B8, 0x92F2, 0xBDD3, 0x92F3, 0xBFD8, -/* 14C0 */ 0xCDC6, 0xD1DA, 0xB4EB, 0x92F4, 0xDEE4, 0xDEDD, 0xDEE7, 0x92F5, -/* 14C8 */ 0xEAFE, 0x92F6, 0x92F7, 0xC2B0, 0xDEE2, 0x92F8, 0x92F9, 0xD6C0, -/* 14D0 */ 0xB5A7, 0x92FA, 0xB2F4, 0x92FB, 0xDEE8, 0x92FC, 0xDEF2, 0x92FD, -/* 14D8 */ 0x92FE, 0x9340, 0x9341, 0x9342, 0xDEED, 0x9343, 0xDEF1, 0x9344, -/* 14E0 */ 0x9345, 0xC8E0, 0x9346, 0x9347, 0x9348, 0xD7E1, 0xDEEF, 0xC3E8, -/* 14E8 */ 0xCCE1, 0x9349, 0xB2E5, 0x934A, 0x934B, 0x934C, 0xD2BE, 0xFFFD, -/* 14F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEEE, 0x9354, -/* 14F8 */ 0xDEEB, 0xCED5, 0x9355, 0xB4A7, 0x9356, 0x9357, 0x9358, 0x9359, -/* 1500 */ 0x935A, 0xBFAB, 0xBEBE, 0x935B, 0x935C, 0xBDD2, 0x935D, 0x935E, -/* 1508 */ 0x935F, 0x9360, 0xDEE9, 0x9361, 0xD4AE, 0x9362, 0xDEDE, 0x9363, -/* 1510 */ 0xDEEA, 0x9364, 0x9365, 0x9366, 0x9367, 0xC0BF, 0x9368, 0xDEEC, -/* 1518 */ 0xB2F3, 0xB8E9, 0xC2A7, 0x9369, 0x936A, 0xBDC1, 0x936B, 0x936C, -/* 1520 */ 0x936D, 0x936E, 0x936F, 0xDEF5, 0xDEF8, 0x9370, 0x9371, 0xB2AB, -/* 1528 */ 0xB4A4, 0x9372, 0x9373, 0xB4EA, 0xC9A6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDEF6, 0xCBD1, 0x937A, 0xB8E3, 0x937B, -/* 1538 */ 0xDEF7, 0xDEFA, 0x937C, 0x937D, 0x937E, 0x9380, 0xDEF9, 0x9381, -/* 1540 */ 0x9382, 0x9383, 0xCCC2, 0x9384, 0xB0E1, 0xB4EE, 0xFFFD, 0xFFFD, -/* 1548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5BA, 0x938B, 0x938C, 0x938D, -/* 1550 */ 0x938E, 0x938F, 0xD0AF, 0x9390, 0x9391, 0xB2EB, 0x9392, 0xEBA1, -/* 1558 */ 0x9393, 0xDEF4, 0x9394, 0x9395, 0xC9E3, 0xDEF3, 0xB0DA, 0xD2A1, -/* 1560 */ 0xB1F7, 0x9396, 0xCCAF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1568 */ 0xFFFD, 0xFFFD, 0xDEF0, 0x939E, 0xCBA4, 0x939F, 0x93A0, 0x93A1, -/* 1570 */ 0xD5AA, 0x93A2, 0x93A3, 0x93A4, 0x93A5, 0x93A6, 0xDEFB, 0xFFFD, -/* 1578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4DD, -/* 1580 */ 0x93AF, 0xC4A6, 0x93B0, 0x93B1, 0x93B2, 0xDEFD, 0xFFFD, 0xFFFD, -/* 1588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1590 */ 0xC3FE, 0xC4A1, 0xDFA1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1598 */ 0xFFFD, 0xFFFD, 0xC1CC, 0x93C4, 0xDEFC, 0xBEEF, 0x93C5, 0xC6B2, -/* 15A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15A8 */ 0xFFFD, 0xB3C5, 0xC8F6, 0x93CF, 0x93D0, 0xCBBA, 0xDEFE, 0x93D1, -/* 15B0 */ 0x93D2, 0xDFA4, 0x93D3, 0x93D4, 0x93D5, 0x93D6, 0xD7B2, 0x93D7, -/* 15B8 */ 0x93D8, 0x93D9, 0x93DA, 0x93DB, 0xB3B7, 0x93DC, 0x93DD, 0x93DE, -/* 15C0 */ 0x93DF, 0xC1C3, 0x93E0, 0x93E1, 0xC7CB, 0xB2A5, 0xB4E9, 0x93E2, -/* 15C8 */ 0xD7AB, 0x93E3, 0x93E4, 0x93E5, 0x93E6, 0xC4EC, 0x93E7, 0xDFA2, -/* 15D0 */ 0xDFA3, 0x93E8, 0xDFA5, 0x93E9, 0xBAB3, 0x93EA, 0x93EB, 0x93EC, -/* 15D8 */ 0xDFA6, 0x93ED, 0xC0DE, 0x93EE, 0x93EF, 0xC9C3, 0xFFFD, 0xFFFD, -/* 15E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2D9, 0xC7E6, 0x93F7, -/* 15E8 */ 0xDFA7, 0x93F8, 0xC7DC, 0x93F9, 0x93FA, 0x93FB, 0x93FC, 0xDFA8, -/* 15F0 */ 0xEBA2, 0x93FD, 0x93FE, 0x9440, 0x9441, 0x9442, 0xCBD3, 0x9443, -/* 15F8 */ 0x9444, 0x9445, 0xDFAA, 0x9446, 0xDFA9, 0x9447, 0xB2C1, 0xC5CA, -/* 1600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1608 */ 0xDFAB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1610 */ 0xFFFD, 0xD4DC, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0xC8C1, -/* 1618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1620 */ 0xFFFD, 0x9480, 0x9481, 0x9482, 0xDFAC, 0x9483, 0x9484, 0x9485, -/* 1628 */ 0x9486, 0x9487, 0xBEF0, 0x9488, 0x9489, 0xDFAD, 0xD6A7, 0x948A, -/* 1630 */ 0x948B, 0x948C, 0x948D, 0xEAB7, 0xEBB6, 0xCAD5, 0x948E, 0xD8FC, -/* 1638 */ 0xB8C4, 0x948F, 0xB9A5, 0x9490, 0x9491, 0xB7C5, 0xD5FE, 0x9492, -/* 1640 */ 0x9493, 0x9494, 0x9495, 0x9496, 0xB9CA, 0x9497, 0x9498, 0xD0A7, -/* 1648 */ 0xF4CD, 0x9499, 0x949A, 0xB5D0, 0x949B, 0x949C, 0xC3F4, 0x949D, -/* 1650 */ 0xBEC8, 0x949E, 0x949F, 0x94A0, 0xEBB7, 0xB0BD, 0x94A1, 0x94A2, -/* 1658 */ 0xBDCC, 0x94A3, 0xC1B2, 0x94A4, 0xB1D6, 0xB3A8, 0x94A5, 0x94A6, -/* 1660 */ 0x94A7, 0xB8D2, 0xC9A2, 0x94A8, 0x94A9, 0xB6D8, 0x94AA, 0x94AB, -/* 1668 */ 0x94AC, 0x94AD, 0xEBB8, 0xBEB4, 0x94AE, 0x94AF, 0x94B0, 0xCAFD, -/* 1670 */ 0x94B1, 0xC7C3, 0x94B2, 0xD5FB, 0x94B3, 0x94B4, 0xB7F3, 0xCEC4, -/* 1678 */ 0x94C4, 0x94C5, 0x94C6, 0xD5AB, 0xB1F3, 0x94C7, 0x94C8, 0x94C9, -/* 1680 */ 0xECB3, 0xB0DF, 0x94CA, 0xECB5, 0x94CB, 0x94CC, 0x94CD, 0xB6B7, -/* 1688 */ 0x94CE, 0xC1CF, 0x94CF, 0xF5FA, 0xD0B1, 0x94D0, 0x94D1, 0xD5E5, -/* 1690 */ 0x94D2, 0xCED3, 0x94D3, 0x94D4, 0xBDEF, 0xB3E2, 0x94D5, 0xB8AB, -/* 1698 */ 0x94D6, 0xD5B6, 0x94D7, 0xEDBD, 0x94D8, 0xB6CF, 0x94D9, 0xCBB9, -/* 16A0 */ 0xD0C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16A8 */ 0xFFFD, 0xB7BD, 0x94E2, 0x94E3, 0xECB6, 0xCAA9, 0x94E4, 0x94E5, -/* 16B0 */ 0x94E6, 0xC5D4, 0x94E7, 0xECB9, 0xECB8, 0xC2C3, 0xECB7, 0x94E8, -/* 16B8 */ 0x94E9, 0x94EA, 0x94EB, 0xD0FD, 0xECBA, 0x94EC, 0xECBB, 0xD7E5, -/* 16C0 */ 0x94ED, 0x94EE, 0xECBC, 0x94EF, 0x94F0, 0x94F1, 0xECBD, 0xC6EC, -/* 16C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16D0 */ 0xCEDE, 0x94FA, 0xBCC8, 0x94FB, 0x94FC, 0xC8D5, 0xB5A9, 0xBEC9, -/* 16D8 */ 0xD6BC, 0xD4E7, 0x94FD, 0x94FE, 0xD1AE, 0xD0F1, 0xEAB8, 0xEAB9, -/* 16E0 */ 0xEABA, 0xBAB5, 0x9540, 0x9541, 0x9542, 0x9543, 0xCAB1, 0xBFF5, -/* 16E8 */ 0x9544, 0x9545, 0xCDFA, 0x9546, 0x9547, 0x9548, 0x9549, 0x954A, -/* 16F0 */ 0xEAC0, 0x954B, 0xB0BA, 0xEABE, 0x954C, 0x954D, 0xC0A5, 0x954E, -/* 16F8 */ 0x954F, 0x9550, 0xEABB, 0x9551, 0xB2FD, 0x9552, 0xC3F7, 0xBBE8, -/* 1700 */ 0x9553, 0x9554, 0x9555, 0xD2D7, 0xCEF4, 0xEABF, 0x9556, 0x9557, -/* 1708 */ 0x9558, 0xEABC, 0x9559, 0x955A, 0x955B, 0xEAC3, 0x955C, 0xD0C7, -/* 1710 */ 0xD3B3, 0x955D, 0x955E, 0x955F, 0x9560, 0xB4BA, 0x9561, 0xC3C1, -/* 1718 */ 0xD7F2, 0x9562, 0x9563, 0x9564, 0x9565, 0xD5D1, 0x9566, 0xCAC7, -/* 1720 */ 0x9567, 0xEAC5, 0x9568, 0x9569, 0xEAC4, 0xEAC7, 0xEAC6, 0x956A, -/* 1728 */ 0x956B, 0x956C, 0x956D, 0x956E, 0xD6E7, 0x956F, 0xCFD4, 0x9570, -/* 1730 */ 0x9571, 0xEACB, 0x9572, 0xBBCE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBDFA, 0xC9CE, 0x957A, 0x957B, 0xEACC, -/* 1740 */ 0x957C, 0x957D, 0xC9B9, 0xCFFE, 0xEACA, 0xD4CE, 0xEACD, 0xEACF, -/* 1748 */ 0x957E, 0x9580, 0xCDED, 0x9581, 0x9582, 0x9583, 0x9584, 0xEAC9, -/* 1750 */ 0x9585, 0xEACE, 0x9586, 0x9587, 0xCEEE, 0x9588, 0xBBDE, 0x9589, -/* 1758 */ 0xB3BF, 0x958A, 0x958B, 0x958C, 0x958D, 0x958E, 0xC6D5, 0xBEB0, -/* 1760 */ 0xCEFA, 0x958F, 0x9590, 0x9591, 0xC7E7, 0x9592, 0xBEA7, 0xEAD0, -/* 1768 */ 0x9593, 0x9594, 0xD6C7, 0x9595, 0x9596, 0x9597, 0xC1C0, 0x9598, -/* 1770 */ 0x9599, 0x959A, 0xD4DD, 0x959B, 0xEAD1, 0x959C, 0x959D, 0xCFBE, -/* 1778 */ 0x959E, 0x959F, 0x95A0, 0x95A1, 0xEAD2, 0x95A2, 0x95A3, 0x95A4, -/* 1780 */ 0x95A5, 0xCAEE, 0x95A6, 0x95A7, 0x95A8, 0x95A9, 0xC5AF, 0xB0B5, -/* 1788 */ 0x95AA, 0x95AB, 0x95AC, 0x95AD, 0x95AE, 0xEAD4, 0xFFFD, 0xFFFD, -/* 1790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAD3, -/* 1798 */ 0xF4DF, 0x95B8, 0x95B9, 0x95BA, 0x95BB, 0x95BC, 0xC4BA, 0x95BD, -/* 17A0 */ 0x95BE, 0x95BF, 0x95C0, 0x95C1, 0xB1A9, 0x95C2, 0x95C3, 0x95C4, -/* 17A8 */ 0x95C5, 0xE5DF, 0x95C6, 0x95C7, 0x95C8, 0x95C9, 0xEAD5, 0xCAEF, -/* 17B0 */ 0x95E4, 0xEAD6, 0xEAD7, 0xC6D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEAD8, 0x95ED, 0x95EE, 0xEAD9, -/* 17C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4BB, 0x95F5, -/* 17C8 */ 0xC7FA, 0xD2B7, 0xB8FC, 0x95F6, 0x95F7, 0xEAC2, 0x95F8, 0xB2DC, -/* 17D0 */ 0x95F9, 0x95FA, 0xC2FC, 0x95FB, 0xD4F8, 0xCCE6, 0xD7EE, 0x95FC, -/* 17D8 */ 0x95FD, 0x95FE, 0x9640, 0x9641, 0x9642, 0x9643, 0xD4C2, 0xD3D0, -/* 17E0 */ 0xEBC3, 0xC5F3, 0x9644, 0xB7FE, 0x9645, 0x9646, 0xEBD4, 0x9647, -/* 17E8 */ 0x9648, 0x9649, 0xCBB7, 0xEBDE, 0x964A, 0xC0CA, 0x964B, 0x964C, -/* 17F0 */ 0x964D, 0xCDFB, 0x964E, 0xB3AF, 0x964F, 0xC6DA, 0xFFFD, 0xFFFD, -/* 17F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBFC, 0x9656, 0xC4BE, 0x9657, -/* 1800 */ 0xCEB4, 0xC4A9, 0xB1BE, 0xD4FD, 0x9658, 0xCAF5, 0x9659, 0xD6EC, -/* 1808 */ 0x965A, 0x965B, 0xC6D3, 0xB6E4, 0x965C, 0x965D, 0x965E, 0x965F, -/* 1810 */ 0xBBFA, 0x9660, 0x9661, 0xD0E0, 0x9662, 0x9663, 0xC9B1, 0x9664, -/* 1818 */ 0xD4D3, 0xC8A8, 0x9665, 0x9666, 0xB8CB, 0x9667, 0xE8BE, 0xC9BC, -/* 1820 */ 0x9668, 0x9669, 0xE8BB, 0x966A, 0xC0EE, 0xD0D3, 0xB2C4, 0xB4E5, -/* 1828 */ 0x966B, 0xE8BC, 0x966C, 0x966D, 0xD5C8, 0x966E, 0x966F, 0x9670, -/* 1830 */ 0x9671, 0x9672, 0xB6C5, 0x9673, 0xE8BD, 0xCAF8, 0xB8DC, 0xCCF5, -/* 1838 */ 0x9674, 0x9675, 0x9676, 0xC0B4, 0x9677, 0x9678, 0xD1EE, 0xE8BF, -/* 1840 */ 0xE8C2, 0x9679, 0x967A, 0xBABC, 0x967B, 0xB1AD, 0xBDDC, 0x967C, -/* 1848 */ 0xEABD, 0xE8C3, 0x967D, 0xE8C6, 0x967E, 0xE8CB, 0x9680, 0x9681, -/* 1850 */ 0x9682, 0x9683, 0xE8CC, 0x9684, 0xCBC9, 0xB0E5, 0x9685, 0xBCAB, -/* 1858 */ 0x9686, 0x9687, 0xB9B9, 0x9688, 0x9689, 0xE8C1, 0x968A, 0xCDF7, -/* 1860 */ 0x968B, 0xE8CA, 0x968C, 0x968D, 0x968E, 0x968F, 0xCEF6, 0x9690, -/* 1868 */ 0x9691, 0x9692, 0x9693, 0xD5ED, 0x9694, 0xC1D6, 0xE8C4, 0x9695, -/* 1870 */ 0xC3B6, 0x9696, 0xB9FB, 0xD6A6, 0xE8C8, 0x9697, 0x9698, 0x9699, -/* 1878 */ 0xCAE0, 0xD4E6, 0x969A, 0xE8C0, 0x969B, 0xE8C5, 0xE8C7, 0x969C, -/* 1880 */ 0xC7B9, 0xB7E3, 0x969D, 0xE8C9, 0x969E, 0xBFDD, 0xE8D2, 0x969F, -/* 1888 */ 0x96A0, 0xE8D7, 0x96A1, 0xE8D5, 0xBCDC, 0xBCCF, 0xE8DB, 0xFFFD, -/* 1890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8DE, -/* 1898 */ 0x96AA, 0xE8DA, 0xB1FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0D8, 0xC4B3, 0xB8CC, -/* 18A8 */ 0xC6E2, 0xC8BE, 0xC8E1, 0x96B5, 0x96B6, 0x96B7, 0xE8CF, 0xE8D4, -/* 18B0 */ 0xE8D6, 0x96B8, 0xB9F1, 0xE8D8, 0xD7F5, 0x96B9, 0xC4FB, 0x96BA, -/* 18B8 */ 0xE8DC, 0x96BB, 0x96BC, 0xB2E9, 0x96BD, 0x96BE, 0x96BF, 0xE8D1, -/* 18C0 */ 0x96C0, 0x96C1, 0xBCED, 0x96C2, 0x96C3, 0xBFC2, 0xE8CD, 0xD6F9, -/* 18C8 */ 0x96C4, 0xC1F8, 0xB2F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8DF, 0x96CD, 0xCAC1, 0xE8D9, 0x96CE, -/* 18D8 */ 0x96CF, 0x96D0, 0x96D1, 0xD5A4, 0x96D2, 0xB1EA, 0xD5BB, 0xE8CE, -/* 18E0 */ 0xE8D0, 0xB6B0, 0xE8D3, 0x96D3, 0xE8DD, 0xC0B8, 0x96D4, 0xCAF7, -/* 18E8 */ 0x96D5, 0xCBA8, 0x96D6, 0x96D7, 0xC6DC, 0xC0F5, 0x96D8, 0x96D9, -/* 18F0 */ 0x96DA, 0x96DB, 0x96DC, 0xE8E9, 0x96DD, 0x96DE, 0x96DF, 0xD0A3, -/* 18F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8F2, -/* 1900 */ 0xD6EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1908 */ 0xE8E0, 0xE8E1, 0x96EE, 0x96EF, 0x96F0, 0xD1F9, 0xBACB, 0xB8F9, -/* 1910 */ 0x96F1, 0x96F2, 0xB8F1, 0xD4D4, 0xE8EF, 0x96F3, 0xE8EE, 0xE8EC, -/* 1918 */ 0xB9F0, 0xCCD2, 0xE8E6, 0xCEA6, 0xBFF2, 0x96F4, 0xB0B8, 0xE8F1, -/* 1920 */ 0xE8F0, 0x96F5, 0xD7C0, 0x96F6, 0xE8E4, 0x96F7, 0xCDA9, 0xC9A3, -/* 1928 */ 0x96F8, 0xBBB8, 0xBDDB, 0xE8EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1930 */ 0xFFFD, 0xFFFD, 0x9740, 0x9741, 0x9742, 0x9743, 0xE8E2, 0xE8E3, -/* 1938 */ 0xE8E5, 0xB5B5, 0xE8E7, 0xC7C5, 0xE8EB, 0xE8ED, 0xBDB0, 0xD7AE, -/* 1940 */ 0x9744, 0xE8F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1948 */ 0xFFFD, 0xFFFD, 0xE8F5, 0x974D, 0xCDB0, 0xE8F6, 0xFFFD, 0xFFFD, -/* 1950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1BA, -/* 1958 */ 0x9757, 0xE8E8, 0x9758, 0xC3B7, 0xB0F0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8F4, 0x9761, 0x9762, -/* 1968 */ 0x9763, 0xE8F7, 0x9764, 0x9765, 0x9766, 0xB9A3, 0xFFFD, 0xFFFD, -/* 1970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1978 */ 0xC9D2, 0x9771, 0x9772, 0x9773, 0xC3CE, 0xCEE0, 0xC0E6, 0x9774, -/* 1980 */ 0x9775, 0x9776, 0x9777, 0xCBF3, 0x9778, 0xCCDD, 0xD0B5, 0x9779, -/* 1988 */ 0x977A, 0xCAE1, 0x977B, 0xE8F3, 0x977C, 0x977D, 0x977E, 0xFFFD, -/* 1990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCEC, 0x9787, -/* 1998 */ 0xE8F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3DE, -/* 19A0 */ 0x978E, 0xC6E5, 0x978F, 0xB9F7, 0x9790, 0x9791, 0x9792, 0x9793, -/* 19A8 */ 0xB0F4, 0x9794, 0x9795, 0xD7D8, 0x9796, 0x9797, 0xBCAC, 0x9798, -/* 19B0 */ 0xC5EF, 0x9799, 0x979A, 0x979B, 0x979C, 0x979D, 0xCCC4, 0x979E, -/* 19B8 */ 0x979F, 0xE9A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC9AD, 0x97AA, 0xE9A2, 0xC0E2, -/* 19C8 */ 0x97AB, 0x97AC, 0x97AD, 0xBFC3, 0x97AE, 0x97AF, 0x97B0, 0xE8FE, -/* 19D0 */ 0xB9D7, 0x97B1, 0xE8FB, 0x97B2, 0x97B3, 0x97B4, 0x97B5, 0xE9A4, -/* 19D8 */ 0x97B6, 0x97B7, 0x97B8, 0xD2CE, 0x97B9, 0x97BA, 0x97BB, 0x97BC, -/* 19E0 */ 0x97BD, 0xE9A3, 0x97BE, 0xD6B2, 0xD7B5, 0x97BF, 0xE9A7, 0x97C0, -/* 19E8 */ 0xBDB7, 0xE8FC, 0xE8FD, 0x97CD, 0x97CE, 0x97CF, 0xE9A1, 0xFFFD, -/* 19F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDD6, -/* 19F8 */ 0x97D8, 0x97D9, 0xD2AC, 0x97DA, 0x97DB, 0x97DC, 0xE9B2, 0x97DD, -/* 1A00 */ 0x97DE, 0x97DF, 0x97E0, 0xE9A9, 0x97E1, 0x97E2, 0x97E3, 0xB4AA, -/* 1A08 */ 0x97E4, 0xB4BB, 0x97E5, 0x97E6, 0xE9AB, 0xD0A8, 0x97F8, 0x97F9, -/* 1A10 */ 0xE9A5, 0x97FA, 0x97FB, 0xB3FE, 0x97FC, 0x97FD, 0xE9AC, 0xC0E3, -/* 1A18 */ 0x97FE, 0xE9AA, 0x9840, 0x9841, 0xE9B9, 0x9842, 0x9843, 0xE9B8, -/* 1A20 */ 0x9844, 0x9845, 0x9846, 0x9847, 0xE9AE, 0x9848, 0x9849, 0xE8FA, -/* 1A28 */ 0x984A, 0x984B, 0xE9A8, 0x984C, 0x984D, 0x984E, 0x984F, 0x9850, -/* 1A30 */ 0xBFAC, 0xE9B1, 0xE9BA, 0x9851, 0x9852, 0xC2A5, 0x9853, 0x9854, -/* 1A38 */ 0x9855, 0xE9AF, 0x9856, 0xB8C5, 0x9857, 0xE9AD, 0x9858, 0xD3DC, -/* 1A40 */ 0xE9B4, 0xE9B5, 0xE9B7, 0x9859, 0x985A, 0x985B, 0xE9C7, 0xFFFD, -/* 1A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0C6, 0xE9C5, 0x9862, -/* 1A50 */ 0x9863, 0xE9B0, 0x9864, 0x9865, 0xE9BB, 0xB0F1, 0xFFFD, 0xFFFD, -/* 1A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A60 */ 0xE9BC, 0xD5A5, 0x9870, 0x9871, 0xE9BE, 0x9872, 0xE9BF, 0x9873, -/* 1A68 */ 0x9874, 0x9875, 0xE9C1, 0x9876, 0x9877, 0xC1F1, 0x9878, 0x9879, -/* 1A70 */ 0xC8B6, 0x987A, 0x987B, 0x987C, 0xE9BD, 0x987D, 0x987E, 0x9880, -/* 1A78 */ 0x9881, 0x9882, 0xE9C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9C3, 0x988B, 0xE9B3, 0x988C, 0xE9B6, -/* 1A88 */ 0x988D, 0xBBB1, 0x988E, 0x988F, 0x9890, 0xE9C0, 0xFFFD, 0xFFFD, -/* 1A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCF7, 0x9897, 0x9898, 0x9899, -/* 1A98 */ 0xE9C4, 0xE9C6, 0xE9CA, 0x98A6, 0x98A7, 0x98A8, 0x98A9, 0xE9CE, -/* 1AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AA8 */ 0xFFFD, 0xFFFD, 0xB2DB, 0x98B4, 0xE9C8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7AE, -/* 1AB8 */ 0xE9CB, 0xE9CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC0 */ 0xD5C1, 0x98D1, 0xC4A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC8 */ 0xFFFD, 0xE9D8, 0x98D8, 0xBAE1, 0x98D9, 0x98DA, 0x98DB, 0x98DC, -/* 1AD0 */ 0xE9C9, 0x98DD, 0xD3A3, 0x98DE, 0x98DF, 0x98E0, 0xE9D4, 0xFFFD, -/* 1AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9D7, 0xE9D0, -/* 1AE0 */ 0x98E8, 0x98E9, 0x98EA, 0x98EB, 0x98EC, 0xE9CF, 0x98ED, 0x98EE, -/* 1AE8 */ 0xC7C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AF0 */ 0xFFFD, 0xE9D2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AF8 */ 0xFFFD, 0xE9D9, 0xB3C8, 0x98FE, 0xE9D3, 0x9940, 0x9941, 0x9942, -/* 1B00 */ 0x9943, 0x9944, 0xCFF0, 0x9945, 0x9946, 0x9947, 0xE9CD, 0xB3F7, -/* 1B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9D6, -/* 1B10 */ 0x995A, 0x995B, 0xE9DA, 0x995C, 0x995D, 0x995E, 0xCCB4, 0x995F, -/* 1B18 */ 0x9960, 0x9961, 0xCFAD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9D5, 0x996B, 0xE9DC, 0xE9DB, -/* 1B28 */ 0x996C, 0x996D, 0x996E, 0x996F, 0x9970, 0xE9DE, 0xFFFD, 0xFFFD, -/* 1B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9D1, 0xFFFD, -/* 1B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9980, 0x9981, 0xE9DD, -/* 1B40 */ 0x9982, 0xE9DF, 0xC3CA, 0xC7B7, 0xB4CE, 0xBBB6, 0xD0C0, 0xECA3, -/* 1B48 */ 0x99F6, 0x99F7, 0xC5B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B50 */ 0xFFFD, 0xFFFD, 0x9A40, 0x9A41, 0x9A42, 0xD3FB, 0x9A43, 0x9A44, -/* 1B58 */ 0x9A45, 0x9A46, 0xECA4, 0x9A47, 0xECA5, 0xC6DB, 0x9A48, 0x9A49, -/* 1B60 */ 0x9A4A, 0xBFEE, 0x9A4B, 0x9A4C, 0x9A4D, 0x9A4E, 0xECA6, 0x9A4F, -/* 1B68 */ 0x9A50, 0xECA7, 0xD0AA, 0x9A51, 0xC7B8, 0x9A52, 0x9A53, 0xB8E8, -/* 1B70 */ 0xECA8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B78 */ 0xFFFD, 0xD6B9, 0xD5FD, 0xB4CB, 0xB2BD, 0xCEE4, 0xC6E7, 0x9A68, -/* 1B80 */ 0x9A69, 0xCDE1, 0xB4F5, 0x9A78, 0xCBC0, 0xBCDF, 0x9A79, 0x9A7A, -/* 1B88 */ 0x9A7B, 0x9A7C, 0xE9E2, 0xE9E3, 0xD1EA, 0xE9E5, 0x9A7D, 0xB4F9, -/* 1B90 */ 0xE9E4, 0x9A7E, 0xD1B3, 0xCAE2, 0xB2D0, 0x9A80, 0xE9E8, 0x9A81, -/* 1B98 */ 0x9A82, 0x9A83, 0x9A84, 0xE9E6, 0xE9E7, 0x9A85, 0x9A86, 0xD6B3, -/* 1BA0 */ 0x9A87, 0x9A88, 0x9A89, 0xE9E9, 0xE9EA, 0x9A8A, 0x9A8B, 0x9A8C, -/* 1BA8 */ 0x9A8D, 0x9A8E, 0xE9EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECAF, 0xC5B9, 0xB6CE, 0x9A9F, -/* 1BC0 */ 0xD2F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BC8 */ 0xB5EE, 0x9AA7, 0xBBD9, 0xECB1, 0x9AA8, 0x9AA9, 0xD2E3, 0x9AAA, -/* 1BD0 */ 0x9AAB, 0x9AAC, 0x9AAD, 0x9AAE, 0xCEE3, 0x9AAF, 0xC4B8, 0x9AB0, -/* 1BD8 */ 0xC3BF, 0x9AB1, 0x9AB2, 0xB6BE, 0xD8B9, 0xB1C8, 0xB1CF, 0xB1D1, -/* 1BE0 */ 0xC5FE, 0x9AB3, 0xB1D0, 0x9AB4, 0xC3AB, 0x9AB5, 0x9AB6, 0x9AB7, -/* 1BE8 */ 0x9AB8, 0x9AB9, 0xD5B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEBA4, 0xBAC1, 0x9AC2, 0x9AC3, 0x9AC4, -/* 1BF8 */ 0xCCBA, 0x9AC5, 0x9AC6, 0x9AC7, 0xEBA5, 0x9AC8, 0xEBA7, 0x9AC9, -/* 1C00 */ 0x9ACA, 0x9ACB, 0xEBA8, 0x9ACC, 0x9ACD, 0x9ACE, 0xEBA6, 0xFFFD, -/* 1C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEBA9, 0xEBAB, -/* 1C10 */ 0xEBAA, 0x9AD6, 0x9AD7, 0x9AD8, 0x9AD9, 0x9ADA, 0xEBAC, 0x9ADB, -/* 1C18 */ 0xCACF, 0xD8B5, 0xC3F1, 0x9ADC, 0xC3A5, 0xC6F8, 0xEBAD, 0xC4CA, -/* 1C20 */ 0x9ADD, 0xEBAE, 0xEBAF, 0xEBB0, 0xB7D5, 0x9ADE, 0x9ADF, 0x9AE0, -/* 1C28 */ 0xB7FA, 0x9AE1, 0xEBB1, 0xC7E2, 0x9AE2, 0xEBB3, 0x9AE3, 0xBAA4, -/* 1C30 */ 0xD1F5, 0xB0B1, 0xEBB2, 0xEBB4, 0x9AE4, 0x9AE5, 0x9AE6, 0xB5AA, -/* 1C38 */ 0xC2C8, 0xC7E8, 0x9AE7, 0xEBB5, 0x9AE8, 0xCBAE, 0xE3DF, 0x9AE9, -/* 1C40 */ 0x9AEA, 0xD3C0, 0x9AEB, 0x9AEC, 0x9AED, 0x9AEE, 0xD9DB, 0x9AEF, -/* 1C48 */ 0x9AF0, 0xCDA1, 0xD6AD, 0xC7F3, 0x9AF1, 0x9AF2, 0x9AF3, 0xD9E0, -/* 1C50 */ 0xBBE3, 0x9AF4, 0xBABA, 0xE3E2, 0x9AF5, 0x9AF6, 0x9AF7, 0x9AF8, -/* 1C58 */ 0x9AF9, 0xCFAB, 0x9AFA, 0x9AFB, 0x9AFC, 0xE3E0, 0xC9C7, 0x9AFD, -/* 1C60 */ 0xBAB9, 0x9AFE, 0x9B40, 0x9B41, 0xD1B4, 0xE3E1, 0xC8EA, 0xB9AF, -/* 1C68 */ 0xBDAD, 0xB3D8, 0xCEDB, 0x9B42, 0x9B43, 0xCCC0, 0x9B44, 0x9B45, -/* 1C70 */ 0x9B46, 0xE3E8, 0xE3E9, 0xCDF4, 0x9B47, 0x9B48, 0x9B49, 0x9B4A, -/* 1C78 */ 0x9B4B, 0xCCAD, 0x9B4C, 0xBCB3, 0x9B4D, 0xE3EA, 0x9B4E, 0xE3EB, -/* 1C80 */ 0x9B4F, 0x9B50, 0xD0DA, 0x9B51, 0x9B52, 0x9B53, 0xC6FB, 0xB7DA, -/* 1C88 */ 0x9B54, 0x9B55, 0xC7DF, 0xD2CA, 0xCED6, 0x9B56, 0xE3E4, 0xE3EC, -/* 1C90 */ 0x9B57, 0xC9F2, 0xB3C1, 0x9B58, 0x9B59, 0xE3E7, 0x9B5A, 0x9B5B, -/* 1C98 */ 0xC6E3, 0xE3E5, 0x9B5C, 0x9B5D, 0xEDB3, 0xE3E6, 0x9B5E, 0x9B5F, -/* 1CA0 */ 0x9B60, 0x9B61, 0xC9B3, 0x9B62, 0xC5E6, 0x9B63, 0x9B64, 0x9B65, -/* 1CA8 */ 0xB9B5, 0x9B66, 0xC3BB, 0x9B67, 0xE3E3, 0xC5BD, 0xC1A4, 0xC2D9, -/* 1CB0 */ 0xB2D7, 0x9B68, 0xE3ED, 0xBBA6, 0xC4AD, 0x9B69, 0xE3F0, 0xBEDA, -/* 1CB8 */ 0x9B6A, 0x9B6B, 0xE3FB, 0xE3F5, 0xBAD3, 0x9B6C, 0x9B6D, 0x9B6E, -/* 1CC0 */ 0x9B6F, 0xB7D0, 0xD3CD, 0x9B70, 0xD6CE, 0xD5D3, 0xB9C1, 0xD5B4, -/* 1CC8 */ 0xD1D8, 0x9B71, 0x9B72, 0x9B73, 0x9B74, 0xD0B9, 0xC7F6, 0x9B75, -/* 1CD0 */ 0x9B76, 0x9B77, 0xC8AA, 0xB2B4, 0x9B78, 0xC3DA, 0x9B79, 0x9B7A, -/* 1CD8 */ 0x9B7B, 0xE3EE, 0x9B7C, 0x9B7D, 0xE3FC, 0xE3EF, 0xB7A8, 0xE3F7, -/* 1CE0 */ 0xE3F4, 0x9B7E, 0x9B80, 0x9B81, 0xB7BA, 0x9B82, 0x9B83, 0xC5A2, -/* 1CE8 */ 0x9B84, 0xE3F6, 0xC5DD, 0xB2A8, 0xC6FC, 0x9B85, 0xC4E0, 0x9B86, -/* 1CF0 */ 0x9B87, 0xD7A2, 0x9B88, 0xC0E1, 0xE3F9, 0x9B89, 0x9B8A, 0xE3FA, -/* 1CF8 */ 0xE3FD, 0xCCA9, 0xE3F3, 0x9B8B, 0xD3BE, 0x9B8C, 0xB1C3, 0xEDB4, -/* 1D00 */ 0xE3F1, 0xE3F2, 0x9B8D, 0xE3F8, 0xD0BA, 0xC6C3, 0xD4F3, 0xE3FE, -/* 1D08 */ 0x9B8E, 0x9B8F, 0xBDE0, 0x9B90, 0x9B91, 0xE4A7, 0x9B92, 0x9B93, -/* 1D10 */ 0xE4A6, 0x9B94, 0x9B95, 0x9B96, 0xD1F3, 0xE4A3, 0x9B97, 0xE4A9, -/* 1D18 */ 0x9B98, 0x9B99, 0x9B9A, 0xC8F7, 0x9B9B, 0x9B9C, 0x9B9D, 0x9B9E, -/* 1D20 */ 0xCFB4, 0x9B9F, 0xE4A8, 0xE4AE, 0xC2E5, 0x9BA0, 0x9BA1, 0xB6B4, -/* 1D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDF2, 0x9BA8, -/* 1D30 */ 0xE4A2, 0x9BA9, 0x9BAA, 0xBAE9, 0xE4AA, 0x9BAB, 0x9BAC, 0xE4AC, -/* 1D38 */ 0x9BAD, 0x9BAE, 0xB6FD, 0xD6DE, 0xE4B2, 0x9BAF, 0xE4AD, 0x9BB0, -/* 1D40 */ 0x9BB1, 0x9BB2, 0xE4A1, 0x9BB3, 0xBBEE, 0xCDDD, 0xC7A2, 0xC5C9, -/* 1D48 */ 0x9BB4, 0x9BB5, 0xC1F7, 0x9BB6, 0xE4A4, 0x9BB7, 0xC7B3, 0xBDAC, -/* 1D50 */ 0xBDBD, 0xE4A5, 0x9BB8, 0xD7C7, 0xB2E2, 0x9BB9, 0xE4AB, 0xBCC3, -/* 1D58 */ 0xE4AF, 0x9BBA, 0xBBEB, 0xE4B0, 0xC5A8, 0xE4B1, 0x9BBB, 0x9BBC, -/* 1D60 */ 0x9BBD, 0x9BBE, 0xD5E3, 0xBFA3, 0x9BBF, 0xE4BA, 0x9BC0, 0xE4B7, -/* 1D68 */ 0x9BC1, 0xE4BB, 0x9BC2, 0x9BC3, 0xE4BD, 0x9BC4, 0x9BC5, 0xC6D6, -/* 1D70 */ 0x9BC6, 0x9BC7, 0xBAC6, 0xC0CB, 0x9BC8, 0x9BC9, 0x9BCA, 0xB8A1, -/* 1D78 */ 0xE4B4, 0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0xD4A1, 0x9BCF, 0x9BD0, -/* 1D80 */ 0xBAA3, 0xBDFE, 0x9BD1, 0x9BD2, 0x9BD3, 0xE4BC, 0x9BD4, 0x9BD5, -/* 1D88 */ 0x9BD6, 0x9BD7, 0x9BD8, 0xCDBF, 0x9BD9, 0x9BDA, 0xC4F9, 0x9BDB, -/* 1D90 */ 0x9BDC, 0xCFFB, 0xC9E6, 0x9BDD, 0x9BDE, 0xD3BF, 0x9BDF, 0xCFD1, -/* 1D98 */ 0x9BE0, 0x9BE1, 0xE4B3, 0x9BE2, 0xE4B8, 0xE4B9, 0xCCE9, 0x9BE3, -/* 1DA0 */ 0x9BE4, 0x9BE5, 0x9BE6, 0x9BE7, 0xCCCE, 0x9BE8, 0xC0D4, 0xE4B5, -/* 1DA8 */ 0xC1B0, 0xE4B6, 0xCED0, 0x9BE9, 0xBBC1, 0xB5D3, 0x9BEA, 0xC8F3, -/* 1DB0 */ 0xBDA7, 0xD5C7, 0xC9AC, 0xB8A2, 0xE4CA, 0x9BEB, 0x9BEC, 0xE4CC, -/* 1DB8 */ 0xD1C4, 0x9BED, 0x9BEE, 0xD2BA, 0x9BEF, 0x9BF0, 0xBAAD, 0x9BF1, -/* 1DC0 */ 0x9BF2, 0xBAD4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DC8 */ 0xE4C3, 0xB5ED, 0x9BF9, 0x9BFA, 0x9BFB, 0xD7CD, 0xE4C0, 0xCFFD, -/* 1DD0 */ 0xE4BF, 0x9BFC, 0x9BFD, 0x9BFE, 0xC1DC, 0xCCCA, 0x9C40, 0x9C41, -/* 1DD8 */ 0x9C42, 0x9C43, 0xCAE7, 0x9C44, 0x9C45, 0x9C46, 0x9C47, 0xC4D7, -/* 1DE0 */ 0x9C48, 0xCCD4, 0xE4C8, 0x9C49, 0x9C4A, 0x9C4B, 0xE4C7, 0xE4C1, -/* 1DE8 */ 0x9C4C, 0xE4C4, 0xB5AD, 0x9C4D, 0x9C4E, 0xD3D9, 0x9C4F, 0xE4C6, -/* 1DF0 */ 0x9C50, 0x9C51, 0x9C52, 0x9C53, 0xD2F9, 0xB4E3, 0x9C54, 0xBBB4, -/* 1DF8 */ 0x9C55, 0x9C56, 0xC9EE, 0x9C57, 0xB4BE, 0x9C58, 0x9C59, 0x9C5A, -/* 1E00 */ 0xBBEC, 0x9C5B, 0xD1CD, 0x9C5C, 0xCCED, 0xEDB5, 0xFFFD, 0xFFFD, -/* 1E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7E5, 0x9C65, -/* 1E10 */ 0x9C66, 0x9C67, 0x9C68, 0xD4A8, 0x9C69, 0xE4CB, 0xD7D5, 0xE4C2, -/* 1E18 */ 0x9C6A, 0xBDA5, 0xE4C5, 0x9C6B, 0x9C6C, 0xD3E6, 0x9C6D, 0xE4C9, -/* 1E20 */ 0xC9F8, 0x9C6E, 0x9C6F, 0xE4BE, 0x9C70, 0x9C71, 0xD3E5, 0x9C72, -/* 1E28 */ 0x9C73, 0xC7FE, 0xB6C9, 0x9C74, 0xD4FC, 0xB2B3, 0xE4D7, 0x9C75, -/* 1E30 */ 0x9C76, 0x9C77, 0xCEC2, 0x9C78, 0xE4CD, 0x9C79, 0xCEBC, 0x9C7A, -/* 1E38 */ 0xB8DB, 0x9C7B, 0x9C7C, 0xE4D6, 0x9C7D, 0xBFCA, 0x9C7E, 0x9C80, -/* 1E40 */ 0x9C81, 0xD3CE, 0x9C82, 0xC3EC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5C8, 0xE4D8, 0xFFFD, 0xFFFD, -/* 1E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDC4, 0xE4CF, -/* 1E58 */ 0x9C93, 0x9C94, 0x9C95, 0x9C96, 0xE4D4, 0xE4D5, 0x9C97, 0xBAFE, -/* 1E60 */ 0x9C98, 0xCFE6, 0x9C99, 0x9C9A, 0xD5BF, 0x9C9B, 0x9C9C, 0x9C9D, -/* 1E68 */ 0xE4D2, 0xE4D0, 0x9CA9, 0x9CAA, 0xE4CE, 0xCDE5, 0xCAAA, 0x9CBA, -/* 1E70 */ 0x9CBB, 0x9CBC, 0xC0A3, 0x9CBD, 0xBDA6, 0xE4D3, 0x9CBE, 0x9CBF, -/* 1E78 */ 0xB8C8, 0x9CC0, 0x9CC1, 0x9CC2, 0x9CC3, 0x9CC4, 0xE4E7, 0xD4B4, -/* 1E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4DB, -/* 1E88 */ 0x9CCC, 0x9CCD, 0x9CCE, 0xC1EF, 0x9CCF, 0x9CD0, 0xE4E9, 0x9CD1, -/* 1E90 */ 0x9CD2, 0xD2E7, 0x9CD3, 0x9CD4, 0xE4DF, 0x9CD5, 0xE4E0, 0x9CD6, -/* 1E98 */ 0x9CD7, 0xCFAA, 0x9CD8, 0x9CD9, 0x9CDA, 0x9CDB, 0xCBDD, 0x9CDC, -/* 1EA0 */ 0xE4DA, 0xE4D1, 0x9CDD, 0xE4E5, 0x9CDE, 0xC8DC, 0xE4E3, 0x9CDF, -/* 1EA8 */ 0x9CE0, 0xC4E7, 0xE4E2, 0x9CE1, 0xE4E1, 0x9CE2, 0x9CE3, 0x9CE4, -/* 1EB0 */ 0xB3FC, 0xE4E8, 0x9CE5, 0x9CE6, 0x9CE7, 0x9CE8, 0xB5E1, 0x9CE9, -/* 1EB8 */ 0x9CEA, 0x9CEB, 0xD7CC, 0x9CEC, 0x9CED, 0x9CEE, 0xE4E6, 0x9CEF, -/* 1EC0 */ 0xBBAC, 0x9CF0, 0xD7D2, 0xCCCF, 0xEBF8, 0x9CF1, 0xE4E4, 0x9CF2, -/* 1EC8 */ 0x9CF3, 0xB9F6, 0x9CF4, 0x9CF5, 0x9CF6, 0xD6CD, 0xE4D9, 0xE4DC, -/* 1ED0 */ 0xC2FA, 0xE4DE, 0x9CF7, 0xC2CB, 0xC0C4, 0xC2D0, 0x9CF8, 0xB1F5, -/* 1ED8 */ 0xCCB2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D40, -/* 1EE0 */ 0x9D41, 0x9D42, 0x9D43, 0xB5CE, 0x9D44, 0x9D45, 0x9D46, 0x9D47, -/* 1EE8 */ 0xE4EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EF0 */ 0xFFFD, 0xC6AF, 0x9D50, 0x9D51, 0x9D52, 0xC6E1, 0x9D53, 0x9D54, -/* 1EF8 */ 0xE4F5, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0xC2A9, 0x9D5A, -/* 1F00 */ 0x9D5B, 0x9D5C, 0xC0EC, 0xD1DD, 0xE4EE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC4AE, -/* 1F10 */ 0x9D67, 0x9D68, 0x9D69, 0xE4ED, 0x9D6A, 0x9D6B, 0x9D6C, 0x9D6D, -/* 1F18 */ 0xE4F6, 0xE4F4, 0xC2FE, 0x9D6E, 0xE4DD, 0x9D6F, 0xE4F0, 0x9D70, -/* 1F20 */ 0xCAFE, 0x9D71, 0xD5C4, 0x9D72, 0x9D73, 0xE4F1, 0xFFFD, 0xFFFD, -/* 1F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1FA, 0x9D7B, 0x9D7C, -/* 1F30 */ 0x9D7D, 0x9D7E, 0x9D80, 0x9D81, 0x9D82, 0xE4EB, 0xE4EC, 0x9D83, -/* 1F38 */ 0x9D84, 0x9D85, 0xE4F2, 0x9D86, 0xCEAB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5CB, -/* 1F48 */ 0x9D91, 0x9D92, 0x9D93, 0xC7B1, 0x9D94, 0xC2BA, 0x9D95, 0x9D96, -/* 1F50 */ 0x9D97, 0xE4EA, 0x9D98, 0x9D99, 0x9D9A, 0xC1CA, 0xFFFD, 0xFFFD, -/* 1F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCB6, 0xB3B1, 0x9DA1, 0x9DA2, -/* 1F60 */ 0x9DA3, 0xE4FB, 0x9DA4, 0xE4F3, 0x9DA5, 0x9DA6, 0x9DA7, 0xE4FA, -/* 1F68 */ 0x9DA8, 0xE4FD, 0x9DA9, 0xE4FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB3CE, 0x9DB1, 0x9DB2, 0x9DB3, 0xB3BA, -/* 1F78 */ 0xE4F7, 0x9DB4, 0x9DB5, 0xE4F9, 0xE4F8, 0xC5EC, 0xC0BD, 0x9DC3, -/* 1F80 */ 0x9DC4, 0x9DC5, 0x9DC6, 0xD4E8, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, -/* 1F88 */ 0x9DCB, 0xE5A2, 0xB0C4, 0x9DD7, 0x9DD8, 0xE5A4, 0x9DD9, 0x9DDA, -/* 1F90 */ 0xE5A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCA4, -/* 1F98 */ 0x9DE1, 0xE5A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FA0 */ 0xE5A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FA8 */ 0xE4FE, 0xB1F4, 0xE5A8, 0x9DFA, 0xE5A9, 0xE5A6, 0x9DFB, 0x9DFC, -/* 1FB0 */ 0x9DFD, 0x9DFE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FB8 */ 0xFFFD, 0xFFFD, 0xE5A7, 0xE5AA, 0xC6D9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AB, 0xE5AD, 0xFFFD, -/* 1FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AC, 0xE5AF, -/* 1FD0 */ 0x9E8A, 0x9E8B, 0x9E8C, 0xE5AE, 0xB9E0, 0x9E9F, 0x9EA0, 0xE5B0, -/* 1FD8 */ 0xBBF0, 0xECE1, 0xC3F0, 0x9EBB, 0xB5C6, 0xBBD2, 0x9EBC, 0x9EBD, -/* 1FE0 */ 0x9EBE, 0x9EBF, 0xC1E9, 0xD4EE, 0x9EC0, 0xBEC4, 0x9EC1, 0x9EC2, -/* 1FE8 */ 0x9EC3, 0xD7C6, 0x9EC4, 0xD4D6, 0xB2D3, 0xECBE, 0x9EC5, 0x9EC6, -/* 1FF0 */ 0x9EC7, 0x9EC8, 0xEAC1, 0x9EC9, 0x9ECA, 0x9ECB, 0xC2AF, 0xB4B6, -/* 1FF8 */ 0x9ECC, 0x9ECD, 0x9ECE, 0xD1D7, 0x9ECF, 0x9ED0, 0x9ED1, 0xB3B4, -/* 2000 */ 0x9ED2, 0xC8B2, 0xBFBB, 0xECC0, 0x9ED3, 0x9ED4, 0xD6CB, 0x9ED5, -/* 2008 */ 0x9ED6, 0xECBF, 0xECC1, 0xECC5, 0xBEE6, 0xCCBF, 0xC5DA, 0xBEBC, -/* 2010 */ 0x9EE4, 0xECC6, 0x9EE5, 0xB1FE, 0x9EE6, 0x9EE7, 0x9EE8, 0xECC4, -/* 2018 */ 0xD5A8, 0xB5E3, 0x9EE9, 0xECC2, 0xC1B6, 0xB3E3, 0x9EEA, 0x9EEB, -/* 2020 */ 0xECC3, 0xCBB8, 0xC0C3, 0xCCFE, 0x9EEC, 0x9EED, 0x9EEE, 0x9EEF, -/* 2028 */ 0xC1D2, 0x9EF0, 0xECC8, 0xBAE6, 0xC0D3, 0x9EFE, 0xD6F2, 0x9F40, -/* 2030 */ 0x9F41, 0x9F42, 0xD1CC, 0x9F43, 0x9F44, 0x9F45, 0x9F46, 0xBFBE, -/* 2038 */ 0x9F47, 0xB7B3, 0xC9D5, 0xECC7, 0xBBE2, 0x9F48, 0xCCCC, 0xBDFD, -/* 2040 */ 0xC8C8, 0x9F49, 0xCFA9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2048 */ 0xFFFD, 0xFFFD, 0xCDE9, 0x9F51, 0xC5EB, 0x9F52, 0x9F53, 0x9F54, -/* 2050 */ 0xB7E9, 0xD1C9, 0xBAB8, 0x9F60, 0x9F61, 0x9F62, 0x9F63, 0x9F64, -/* 2058 */ 0xECC9, 0x9F65, 0x9F66, 0xECCA, 0x9F67, 0xBBC0, 0xECCB, 0x9F68, -/* 2060 */ 0xECE2, 0xB1BA, 0xB7D9, 0xBDB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECCC, 0xD1E6, 0xECCD, 0x9F7C, -/* 2070 */ 0x9F7D, 0x9F7E, 0x9F80, 0xC8BB, 0xECD1, 0x9F8F, 0x9F90, 0x9F91, -/* 2078 */ 0x9F92, 0xECD3, 0x9F93, 0xBBCD, 0x9F94, 0xBCE5, 0xECCF, 0x9FA2, -/* 2080 */ 0xC9B7, 0x9FA3, 0x9FA4, 0x9FA5, 0x9FA6, 0x9FA7, 0xC3BA, 0x9FA8, -/* 2088 */ 0xECE3, 0xD5D5, 0xECD0, 0x9FA9, 0x9FAA, 0x9FAB, 0x9FAC, 0x9FAD, -/* 2090 */ 0xD6F3, 0x9FAE, 0x9FAF, 0x9FB0, 0xECD2, 0xECCE, 0x9FB1, 0x9FB2, -/* 2098 */ 0x9FB3, 0x9FB4, 0xECD4, 0x9FB5, 0xECD5, 0x9FB6, 0x9FB7, 0xC9BF, -/* 20A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFA8, 0x9FBE, -/* 20A8 */ 0x9FBF, 0x9FC0, 0x9FC1, 0x9FC2, 0xD0DC, 0x9FC3, 0x9FC4, 0x9FC5, -/* 20B0 */ 0x9FC6, 0xD1AC, 0x9FC7, 0x9FC8, 0x9FC9, 0x9FCA, 0xC8DB, 0x9FCB, -/* 20B8 */ 0x9FCC, 0x9FCD, 0xECD6, 0xCEF5, 0x9FCE, 0x9FCF, 0x9FD0, 0x9FD1, -/* 20C0 */ 0x9FD2, 0xCAEC, 0xECDA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20C8 */ 0xFFFD, 0xFFFD, 0xECD9, 0x9FDA, 0x9FDB, 0x9FDC, 0xB0BE, 0xFFFD, -/* 20D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECD7, 0x9FE3, 0xECD8, -/* 20D8 */ 0x9FE4, 0x9FE5, 0x9FE6, 0xECE4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8BC, 0xFFFD, 0xFFFD, -/* 20E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20F0 */ 0xC1C7, 0x9FFA, 0x9FFB, 0x9FFC, 0x9FFD, 0x9FFE, 0xECDC, 0xD1E0, -/* 20F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2100 */ 0xFFFD, 0xFFFD, 0xECDB, 0xA04A, 0xA04B, 0xA04C, 0xA04D, 0xD4EF, -/* 2108 */ 0xA04E, 0xECDD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2110 */ 0xDBC6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xECDE, 0xA080, 0xA081, 0xECDF, 0xFFFD, -/* 2120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2128 */ 0xFFFD, 0xECE0, 0xA08C, 0xD7A6, 0xA08D, 0xC5C0, 0xA08E, 0xA08F, -/* 2130 */ 0xA090, 0xEBBC, 0xB0AE, 0xA091, 0xA092, 0xA093, 0xBEF4, 0xB8B8, -/* 2138 */ 0xD2AF, 0xB0D6, 0xB5F9, 0xA094, 0xD8B3, 0xA095, 0xCBAC, 0xA096, -/* 2140 */ 0xE3DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2148 */ 0xC6AC, 0xB0E6, 0xA09E, 0xA09F, 0xA0A0, 0xC5C6, 0xEBB9, 0xA0A1, -/* 2150 */ 0xA0A2, 0xA0A3, 0xA0A4, 0xEBBA, 0xA0A5, 0xA0A6, 0xA0A7, 0xEBBB, -/* 2158 */ 0xA0A8, 0xA0A9, 0xD1C0, 0xA0AA, 0xC5A3, 0xA0AB, 0xEAF2, 0xA0AC, -/* 2160 */ 0xC4B2, 0xA0AD, 0xC4B5, 0xC0CE, 0xA0AE, 0xA0AF, 0xA0B0, 0xEAF3, -/* 2168 */ 0xC4C1, 0xA0B1, 0xCEEF, 0xA0B2, 0xA0B3, 0xA0B4, 0xA0B5, 0xEAF0, -/* 2170 */ 0xEAF4, 0xA0B6, 0xA0B7, 0xC9FC, 0xA0B8, 0xA0B9, 0xC7A3, 0xA0BA, -/* 2178 */ 0xA0BB, 0xA0BC, 0xCCD8, 0xCEFE, 0xA0BD, 0xA0BE, 0xA0BF, 0xEAF5, -/* 2180 */ 0xEAF6, 0xCFAC, 0xC0E7, 0xA0C0, 0xA0C1, 0xEAF7, 0xA0C2, 0xA0C3, -/* 2188 */ 0xA0C4, 0xA0C5, 0xA0C6, 0xB6BF, 0xEAF8, 0xA0C7, 0xEAF9, 0xA0C8, -/* 2190 */ 0xEAFA, 0xA0C9, 0xA0CA, 0xEAFB, 0xC8AE, 0xE1EB, 0xA0E3, 0xB7B8, -/* 2198 */ 0xE1EC, 0xA0E4, 0xA0E5, 0xA0E6, 0xE1ED, 0xA0E7, 0xD7B4, 0xE1EE, -/* 21A0 */ 0xE1EF, 0xD3CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21A8 */ 0xFFFD, 0xE1F1, 0xBFF1, 0xE1F0, 0xB5D2, 0xA0EF, 0xA0F0, 0xA0F1, -/* 21B0 */ 0xB1B7, 0xA0F2, 0xA0F3, 0xA0F4, 0xA0F5, 0xE1F3, 0xE1F2, 0xA0F6, -/* 21B8 */ 0xBAFC, 0xA0F7, 0xE1F4, 0xA0F8, 0xA0F9, 0xA0FA, 0xA0FB, 0xB9B7, -/* 21C0 */ 0xA0FC, 0xBED1, 0xA0FD, 0xA0FE, 0xAA40, 0xAA41, 0xC4FC, 0xAA42, -/* 21C8 */ 0xBADD, 0xBDC6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21D0 */ 0xE1F5, 0xE1F7, 0xAA49, 0xAA4A, 0xB6C0, 0xCFC1, 0xCAA8, 0xE1F6, -/* 21D8 */ 0xD5F8, 0xD3FC, 0xE1F8, 0xE1FC, 0xE1F9, 0xAA4B, 0xAA4C, 0xE1FA, -/* 21E0 */ 0xC0EA, 0xAA4D, 0xE1FE, 0xE2A1, 0xC0C7, 0xAA4E, 0xAA4F, 0xAA50, -/* 21E8 */ 0xAA51, 0xE1FB, 0xAA52, 0xE1FD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F0 */ 0xFFFD, 0xFFFD, 0xE2A5, 0xAA59, 0xAA5A, 0xAA5B, 0xC1D4, 0xAA5C, -/* 21F8 */ 0xAA5D, 0xAA5E, 0xAA5F, 0xE2A3, 0xAA60, 0xE2A8, 0xB2FE, 0xE2A2, -/* 2200 */ 0xAA61, 0xAA62, 0xAA63, 0xC3CD, 0xB2C2, 0xE2A7, 0xE2A6, 0xAA64, -/* 2208 */ 0xAA65, 0xE2A4, 0xE2A9, 0xAA66, 0xAA67, 0xE2AB, 0xAA68, 0xAA69, -/* 2210 */ 0xAA6A, 0xD0C9, 0xD6ED, 0xC3A8, 0xE2AC, 0xAA6B, 0xCFD7, 0xAA6C, -/* 2218 */ 0xAA6D, 0xE2AE, 0xAA6E, 0xAA6F, 0xBAEF, 0xAA70, 0xAA71, 0xE9E0, -/* 2220 */ 0xE2AD, 0xE2AA, 0xAA72, 0xAA73, 0xAA74, 0xAA75, 0xBBAB, 0xD4B3, -/* 2228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2230 */ 0xFFFD, 0xAA80, 0xAA81, 0xAA82, 0xAA83, 0xE2B0, 0xAA84, 0xAA85, -/* 2238 */ 0xE2AF, 0xAA86, 0xE9E1, 0xAA87, 0xAA88, 0xAA89, 0xAA8A, 0xE2B1, -/* 2240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2248 */ 0xE2B2, 0xE2B3, 0xCCA1, 0xAA9E, 0xE2B4, 0xAA9F, 0xAAA0, 0xE2B5, -/* 2250 */ 0xAB4C, 0xAB4D, 0xAB4E, 0xAB4F, 0xAB50, 0xD0FE, 0xAB51, 0xAB52, -/* 2258 */ 0xC2CA, 0xAB53, 0xD3F1, 0xAB54, 0xCDF5, 0xAB55, 0xAB56, 0xE7E0, -/* 2260 */ 0xAB57, 0xAB58, 0xE7E1, 0xAB59, 0xAB5A, 0xAB5B, 0xAB5C, 0xBEC1, -/* 2268 */ 0xAB5D, 0xAB5E, 0xAB5F, 0xAB60, 0xC2EA, 0xAB61, 0xAB62, 0xAB63, -/* 2270 */ 0xE7E4, 0xAB64, 0xAB65, 0xE7E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2278 */ 0xFFFD, 0xFFFD, 0xCDE6, 0xAB6C, 0xC3B5, 0xAB6D, 0xAB6E, 0xE7E2, -/* 2280 */ 0xBBB7, 0xCFD6, 0xAB6F, 0xC1E1, 0xE7E9, 0xAB70, 0xAB71, 0xAB72, -/* 2288 */ 0xE7E8, 0xAB73, 0xAB74, 0xE7F4, 0xB2A3, 0xAB75, 0xAB76, 0xAB77, -/* 2290 */ 0xAB78, 0xE7EA, 0xAB79, 0xE7E6, 0xAB7A, 0xAB7B, 0xAB7C, 0xAB7D, -/* 2298 */ 0xAB7E, 0xE7EC, 0xE7EB, 0xC9BA, 0xAB80, 0xAB81, 0xD5E4, 0xAB82, -/* 22A0 */ 0xE7E5, 0xB7A9, 0xE7E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22A8 */ 0xFFFD, 0xFFFD, 0xE7EE, 0xAB8A, 0xAB8B, 0xAB8C, 0xAB8D, 0xE7F3, -/* 22B0 */ 0xAB8E, 0xD6E9, 0xAB8F, 0xAB90, 0xAB91, 0xAB92, 0xE7ED, 0xAB93, -/* 22B8 */ 0xE7F2, 0xAB94, 0xE7F1, 0xAB95, 0xAB96, 0xAB97, 0xB0E0, 0xAB98, -/* 22C0 */ 0xAB99, 0xAB9A, 0xAB9B, 0xE7F5, 0xAB9C, 0xAB9D, 0xAB9E, 0xAB9F, -/* 22C8 */ 0xABA0, 0xC7F2, 0xAC4B, 0xC0C5, 0xC0ED, 0xAC4C, 0xAC4D, 0xC1F0, -/* 22D0 */ 0xE7F0, 0xAC4E, 0xAC4F, 0xAC50, 0xAC51, 0xE7F6, 0xCBF6, 0xFFFD, -/* 22D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22E0 */ 0xE8A2, 0xE8A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22E8 */ 0xD7C1, 0xAC61, 0xAC62, 0xE7FA, 0xE7F9, 0xAC63, 0xE7FB, 0xAC64, -/* 22F0 */ 0xE7F7, 0xAC65, 0xE7FE, 0xAC66, 0xE7FD, 0xAC67, 0xE7FC, 0xAC68, -/* 22F8 */ 0xAC69, 0xC1D5, 0xC7D9, 0xC5FD, 0xC5C3, 0xAC6A, 0xAC6B, 0xAC6C, -/* 2300 */ 0xAC6D, 0xAC6E, 0xC7ED, 0xAC6F, 0xAC70, 0xAC71, 0xAC72, 0xE8A3, -/* 2308 */ 0xE8A6, 0xAC87, 0xE8A5, 0xAC88, 0xE8A7, 0xBAF7, 0xE7F8, 0xE8A4, -/* 2310 */ 0xAC89, 0xC8F0, 0xC9AA, 0xE8A9, 0xAC97, 0xAC98, 0xB9E5, 0xAC99, -/* 2318 */ 0xAC9A, 0xAC9B, 0xAC9C, 0xAC9D, 0xD1FE, 0xE8A8, 0xAC9E, 0xAC9F, -/* 2320 */ 0xACA0, 0xAD40, 0xAD41, 0xAD42, 0xE8AA, 0xAD43, 0xE8AD, 0xE8AE, -/* 2328 */ 0xAD44, 0xC1A7, 0xAD45, 0xAD46, 0xAD47, 0xE8AF, 0xAD48, 0xAD49, -/* 2330 */ 0xAD4A, 0xE8B0, 0xAD4B, 0xAD4C, 0xE8AC, 0xAD4D, 0xE8B4, 0xE8AB, -/* 2338 */ 0xAD59, 0xE8B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2340 */ 0xFFFD, 0xFFFD, 0xE8B5, 0xE8B2, 0xE8B3, 0xE8B6, 0xFFFD, 0xFFFD, -/* 2348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9CF, -/* 2350 */ 0xAD93, 0xF0AC, 0xAD94, 0xF0AD, 0xAD95, 0xC6B0, 0xB0EA, 0xC8BF, -/* 2358 */ 0xAD96, 0xCDDF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2360 */ 0xFFFD, 0xCECD, 0xEAB1, 0xAD9E, 0xAD9F, 0xADA0, 0xAE40, 0xEAB2, -/* 2368 */ 0xAE41, 0xC6BF, 0xB4C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2370 */ 0xFFFD, 0xFFFD, 0xEAB3, 0xAE49, 0xAE4A, 0xAE4B, 0xAE4C, 0xD5E7, -/* 2378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2380 */ 0xDDF9, 0xAE55, 0xEAB4, 0xAE56, 0xEAB5, 0xAE57, 0xEAB6, 0xAE58, -/* 2388 */ 0xAE59, 0xAE5A, 0xAE5B, 0xB8CA, 0xDFB0, 0xC9F5, 0xAE5C, 0xCCF0, -/* 2390 */ 0xAE5D, 0xAE5E, 0xC9FA, 0xAE5F, 0xAE60, 0xAE61, 0xAE62, 0xAE63, -/* 2398 */ 0xC9FB, 0xAE64, 0xAE65, 0xD3C3, 0xCBA6, 0xAE66, 0xB8A6, 0xF0AE, -/* 23A0 */ 0xB1C2, 0xAE67, 0xE5B8, 0xCCEF, 0xD3C9, 0xBCD7, 0xC9EA, 0xAE68, -/* 23A8 */ 0xB5E7, 0xAE69, 0xC4D0, 0xB5E9, 0xAE6A, 0xEEAE, 0xBBAD, 0xAE6B, -/* 23B0 */ 0xAE6C, 0xE7DE, 0xAE6D, 0xEEAF, 0xAE6E, 0xAE6F, 0xAE70, 0xAE71, -/* 23B8 */ 0xB3A9, 0xAE72, 0xAE73, 0xEEB2, 0xAE74, 0xAE75, 0xEEB1, 0xBDE7, -/* 23C0 */ 0xAE76, 0xEEB0, 0xCEB7, 0xAE77, 0xAE78, 0xAE79, 0xAE7A, 0xC5CF, -/* 23C8 */ 0xAE7B, 0xAE7C, 0xAE7D, 0xAE7E, 0xC1F4, 0xDBCE, 0xEEB3, 0xD0F3, -/* 23D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23D8 */ 0xC2D4, 0xC6E8, 0xAE88, 0xAE89, 0xAE8A, 0xB7AC, 0xFFFD, 0xFFFD, -/* 23E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEEB4, 0xAE92, 0xB3EB, -/* 23E8 */ 0xAE93, 0xAE94, 0xAE95, 0xBBFB, 0xEEB5, 0xAE96, 0xAE97, 0xAE98, -/* 23F0 */ 0xAE99, 0xAE9A, 0xE7DC, 0xAE9B, 0xAE9C, 0xAE9D, 0xEEB6, 0xAE9E, -/* 23F8 */ 0xAE9F, 0xBDAE, 0xAEA0, 0xAF40, 0xAF41, 0xAF42, 0xF1E2, 0xAF43, -/* 2400 */ 0xAF44, 0xAF45, 0xCAE8, 0xAF46, 0xD2C9, 0xF0DA, 0xAF47, 0xF0DB, -/* 2408 */ 0xAF48, 0xF0DC, 0xC1C6, 0xAF49, 0xB8ED, 0xBECE, 0xAF4A, 0xAF4B, -/* 2410 */ 0xF0DE, 0xAF4C, 0xC5B1, 0xF0DD, 0xD1F1, 0xAF4D, 0xF0E0, 0xB0CC, -/* 2418 */ 0xBDEA, 0xAF4E, 0xAF4F, 0xAF50, 0xAF51, 0xAF52, 0xD2DF, 0xF0DF, -/* 2420 */ 0xAF53, 0xB4AF, 0xB7E8, 0xF0E6, 0xF0E5, 0xC6A3, 0xF0E1, 0xF0E2, -/* 2428 */ 0xB4C3, 0xAF54, 0xAF55, 0xF0E3, 0xD5EE, 0xAF56, 0xAF57, 0xCCDB, -/* 2430 */ 0xBED2, 0xBCB2, 0xAF58, 0xAF59, 0xAF5A, 0xF0E8, 0xF0E7, 0xF0E4, -/* 2438 */ 0xB2A1, 0xAF5B, 0xD6A2, 0xD3B8, 0xBEB7, 0xC8AC, 0xAF5C, 0xAF5D, -/* 2440 */ 0xF0EA, 0xAF5E, 0xAF5F, 0xAF60, 0xAF61, 0xD1F7, 0xAF62, 0xD6CC, -/* 2448 */ 0xBADB, 0xF0E9, 0xAF63, 0xB6BB, 0xAF64, 0xAF65, 0xCDB4, 0xAF66, -/* 2450 */ 0xAF67, 0xC6A6, 0xAF68, 0xAF69, 0xAF6A, 0xC1A1, 0xF0EB, 0xF0EE, -/* 2458 */ 0xAF6B, 0xF0ED, 0xF0F0, 0xF0EC, 0xAF6C, 0xBBBE, 0xF0EF, 0xAF6D, -/* 2460 */ 0xAF6E, 0xAF6F, 0xAF70, 0xCCB5, 0xF0F2, 0xAF71, 0xAF72, 0xB3D5, -/* 2468 */ 0xAF73, 0xAF74, 0xAF75, 0xAF76, 0xB1D4, 0xAF77, 0xAF78, 0xF0F3, -/* 2470 */ 0xAF79, 0xAF7A, 0xF0F4, 0xF0F6, 0xB4E1, 0xAF7B, 0xF0F1, 0xAF7C, -/* 2478 */ 0xF0F7, 0xAF7D, 0xAF7E, 0xAF80, 0xAF81, 0xF0FA, 0xAF82, 0xF0F8, -/* 2480 */ 0xAF83, 0xAF84, 0xAF85, 0xF0F5, 0xAF86, 0xAF87, 0xAF88, 0xAF89, -/* 2488 */ 0xF0FD, 0xAF8A, 0xF0F9, 0xF0FC, 0xF0FE, 0xAF8B, 0xF1A1, 0xAF8C, -/* 2490 */ 0xAF8D, 0xAF8E, 0xCEC1, 0xF1A4, 0xAF8F, 0xF1A3, 0xAF90, 0xC1F6, -/* 2498 */ 0xF0FB, 0xCADD, 0xAF91, 0xAF92, 0xB4F1, 0xB1F1, 0xCCB1, 0xAF93, -/* 24A0 */ 0xF1A6, 0xAF94, 0xAF95, 0xF1A7, 0xAF96, 0xAF97, 0xF1AC, 0xD5CE, -/* 24A8 */ 0xF1A9, 0xAF98, 0xAF99, 0xC8B3, 0xAF9A, 0xAF9B, 0xAF9C, 0xF1A2, -/* 24B0 */ 0xAF9D, 0xF1AB, 0xF1A8, 0xF1A5, 0xAF9E, 0xAF9F, 0xF1AA, 0xAFA0, -/* 24B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0A9, -/* 24C0 */ 0xF1AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1AF, -/* 24C8 */ 0xB04D, 0xF1B1, 0xB04E, 0xB04F, 0xB050, 0xB051, 0xB052, 0xF1B0, -/* 24D0 */ 0xB053, 0xF1AE, 0xB054, 0xB055, 0xB056, 0xB057, 0xD1A2, 0xFFFD, -/* 24D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1B2, 0xB05F, -/* 24E0 */ 0xB060, 0xB061, 0xF1B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB9EF, 0xB06A, 0xB06B, 0xB5C7, 0xB06C, -/* 24F0 */ 0xB0D7, 0xB0D9, 0xB06D, 0xB06E, 0xB06F, 0xD4ED, 0xB070, 0xB5C4, -/* 24F8 */ 0xB071, 0xBDD4, 0xBBCA, 0xF0A7, 0xB072, 0xB073, 0xB8DE, 0xB074, -/* 2500 */ 0xB075, 0xF0A8, 0xB076, 0xB077, 0xB0A8, 0xB078, 0xF0A9, 0xB079, -/* 2508 */ 0xB07A, 0xCDEE, 0xB07B, 0xB07C, 0xF0AA, 0xB07D, 0xB07E, 0xFFFD, -/* 2510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0AB, -/* 2518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2520 */ 0xFFFD, 0xC6A4, 0xB091, 0xB092, 0xD6E5, 0xF1E4, 0xB093, 0xF1E5, -/* 2528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2530 */ 0xFFFD, 0xFFFD, 0xC3F3, 0xB09E, 0xB09F, 0xD3DB, 0xB0A0, 0xB140, -/* 2538 */ 0xD6D1, 0xC5E8, 0xB141, 0xD3AF, 0xB142, 0xD2E6, 0xB143, 0xB144, -/* 2540 */ 0xEEC1, 0xB0BB, 0xD5B5, 0xD1CE, 0xBCE0, 0xBAD0, 0xB145, 0xBFF8, -/* 2548 */ 0xB146, 0xB8C7, 0xB5C1, 0xC5CC, 0xB147, 0xB148, 0xCAA2, 0xB149, -/* 2550 */ 0xB14A, 0xB14B, 0xC3CB, 0xB14C, 0xB14D, 0xB14E, 0xB14F, 0xB150, -/* 2558 */ 0xEEC2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2560 */ 0xFFFD, 0xC4BF, 0xB6A2, 0xB159, 0xEDEC, 0xC3A4, 0xB15A, 0xD6B1, -/* 2568 */ 0xB15B, 0xB15C, 0xB15D, 0xCFE0, 0xEDEF, 0xB15E, 0xB15F, 0xC5CE, -/* 2570 */ 0xB160, 0xB6DC, 0xB161, 0xB162, 0xCAA1, 0xB163, 0xB164, 0xEDED, -/* 2578 */ 0xB165, 0xB166, 0xEDF0, 0xEDF1, 0xC3BC, 0xB167, 0xBFB4, 0xB168, -/* 2580 */ 0xEDEE, 0xEDF4, 0xEDF2, 0xB174, 0xB175, 0xB176, 0xB177, 0xD5E6, -/* 2588 */ 0xC3DF, 0xB178, 0xEDF3, 0xB179, 0xB17A, 0xB17B, 0xEDF6, 0xB17C, -/* 2590 */ 0xD5A3, 0xD1A3, 0xB17D, 0xB17E, 0xB180, 0xEDF5, 0xB181, 0xC3D0, -/* 2598 */ 0xB182, 0xB183, 0xB184, 0xB185, 0xB186, 0xEDF7, 0xBFF4, 0xBEEC, -/* 25A0 */ 0xEDF8, 0xB187, 0xCCF7, 0xB188, 0xD1DB, 0xB189, 0xB18A, 0xB18B, -/* 25A8 */ 0xD7C5, 0xD5F6, 0xB18C, 0xEDFC, 0xB18D, 0xB18E, 0xB18F, 0xEDFB, -/* 25B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25B8 */ 0xEDF9, 0xEDFA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25C0 */ 0xFFFD, 0xFFFD, 0xEDFD, 0xBEA6, 0xB1A0, 0xB240, 0xB241, 0xB242, -/* 25C8 */ 0xB243, 0xCBAF, 0xEEA1, 0xB6BD, 0xB244, 0xEEA2, 0xC4C0, 0xB245, -/* 25D0 */ 0xEDFE, 0xB246, 0xB247, 0xBDDE, 0xB2C7, 0xB6C3, 0xB254, 0xB255, -/* 25D8 */ 0xB256, 0xEEA5, 0xD8BA, 0xEEA3, 0xEEA6, 0xB257, 0xB258, 0xB259, -/* 25E0 */ 0xC3E9, 0xB3F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25E8 */ 0xEEA7, 0xEEA4, 0xCFB9, 0xB260, 0xB261, 0xEEA8, 0xC2F7, 0xEEA9, -/* 25F0 */ 0xEEAA, 0xB26E, 0xDEAB, 0xB26F, 0xB270, 0xC6B3, 0xB271, 0xC7C6, -/* 25F8 */ 0xB272, 0xD6F5, 0xB5C9, 0xB273, 0xCBB2, 0xB274, 0xB275, 0xB276, -/* 2600 */ 0xEEAB, 0xB277, 0xB278, 0xCDAB, 0xB279, 0xEEAC, 0xB27A, 0xB27B, -/* 2608 */ 0xB27C, 0xB27D, 0xB27E, 0xD5B0, 0xB280, 0xEEAD, 0xB281, 0xF6C4, -/* 2610 */ 0xDBC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2618 */ 0xFFFD, 0xFFFD, 0xB4A3, 0xB298, 0xB299, 0xB29A, 0xC3AC, 0xF1E6, -/* 2620 */ 0xB29B, 0xB29C, 0xB29D, 0xB29E, 0xB29F, 0xCAB8, 0xD2D3, 0xB2A0, -/* 2628 */ 0xD6AA, 0xB340, 0xEFF2, 0xB341, 0xBED8, 0xB342, 0xBDC3, 0xEFF3, -/* 2630 */ 0xB6CC, 0xB0AB, 0xB343, 0xB344, 0xB345, 0xB346, 0xCAAF, 0xB347, -/* 2638 */ 0xB348, 0xEDB6, 0xB349, 0xEDB7, 0xB34A, 0xB34B, 0xB34C, 0xB34D, -/* 2640 */ 0xCEF9, 0xB7AF, 0xBFF3, 0xEDB8, 0xC2EB, 0xC9B0, 0xFFFD, 0xFFFD, -/* 2648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDB9, 0xB354, 0xB355, 0xC6F6, -/* 2650 */ 0xBFB3, 0xB356, 0xB357, 0xB358, 0xEDBC, 0xC5F8, 0xB359, 0xD1D0, -/* 2658 */ 0xB35A, 0xD7A9, 0xEDBA, 0xEDBB, 0xB35B, 0xD1E2, 0xB35C, 0xEDBF, -/* 2660 */ 0xEDC0, 0xB35D, 0xEDC4, 0xB35E, 0xB35F, 0xB360, 0xEDC8, 0xB361, -/* 2668 */ 0xEDC6, 0xEDCE, 0xD5E8, 0xB362, 0xEDC9, 0xB363, 0xB364, 0xEDC7, -/* 2670 */ 0xEDBE, 0xB365, 0xB366, 0xC5E9, 0xB367, 0xB368, 0xB369, 0xC6C6, -/* 2678 */ 0xB36A, 0xB36B, 0xC9E9, 0xD4D2, 0xEDC1, 0xEDC2, 0xEDC3, 0xEDC5, -/* 2680 */ 0xB36C, 0xC0F9, 0xB36D, 0xB4A1, 0xB36E, 0xB36F, 0xB370, 0xB371, -/* 2688 */ 0xB9E8, 0xB372, 0xEDD0, 0xB373, 0xB374, 0xB375, 0xB376, 0xEDD1, -/* 2690 */ 0xB377, 0xEDCA, 0xB378, 0xEDCF, 0xB379, 0xCEF8, 0xB37A, 0xB37B, -/* 2698 */ 0xCBB6, 0xEDCC, 0xEDCD, 0xB37C, 0xB37D, 0xB37E, 0xB380, 0xB381, -/* 26A0 */ 0xCFF5, 0xEDD2, 0xC1F2, 0xD3B2, 0xEDCB, 0xC8B7, 0xFFFD, 0xFFFD, -/* 26A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCEF, 0xB396, -/* 26B0 */ 0xB397, 0xB398, 0xB399, 0xC5F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB440, 0xB441, 0xB442, 0xEDD6, 0xB443, -/* 26C0 */ 0xB5EF, 0xB444, 0xB445, 0xC2B5, 0xB0AD, 0xCBE9, 0xB446, 0xB447, -/* 26C8 */ 0xB1AE, 0xB448, 0xEDD4, 0xB449, 0xB44A, 0xB44B, 0xCDEB, 0xB5E2, -/* 26D0 */ 0xB44C, 0xEDD5, 0xEDD3, 0xEDD7, 0xB44D, 0xB44E, 0xB5FA, 0xB44F, -/* 26D8 */ 0xEDD8, 0xB450, 0xEDD9, 0xB451, 0xEDDC, 0xB452, 0xB1CC, 0xFFFD, -/* 26E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5F6, -/* 26E8 */ 0xBCEE, 0xEDDA, 0xCCBC, 0xB2EA, 0xB45B, 0xB45C, 0xB45D, 0xB45E, -/* 26F0 */ 0xEDDB, 0xB45F, 0xB460, 0xB461, 0xB462, 0xC4EB, 0xB463, 0xB464, -/* 26F8 */ 0xB4C5, 0xB465, 0xB466, 0xB467, 0xB0F5, 0xB468, 0xB469, 0xB46A, -/* 2700 */ 0xEDDF, 0xC0DA, 0xB4E8, 0xB46B, 0xB46C, 0xB46D, 0xB46E, 0xC5CD, -/* 2708 */ 0xB46F, 0xB470, 0xB471, 0xEDDD, 0xBFC4, 0xB472, 0xB473, 0xB474, -/* 2710 */ 0xEDDE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB480, 0xB481, 0xB482, 0xB483, 0xC4A5, -/* 2720 */ 0xB484, 0xB485, 0xB486, 0xEDE0, 0xB487, 0xB488, 0xB489, 0xB48A, -/* 2728 */ 0xB48B, 0xEDE1, 0xB48C, 0xEDE3, 0xB48D, 0xB48E, 0xC1D7, 0xB48F, -/* 2730 */ 0xB490, 0xBBC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2738 */ 0xBDB8, 0xB497, 0xB498, 0xB499, 0xEDE2, 0xEDE4, 0xFFFD, 0xFFFD, -/* 2740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2748 */ 0xEDE6, 0xB550, 0xB551, 0xB552, 0xB553, 0xB554, 0xEDE5, 0xEDE7, -/* 2750 */ 0xB564, 0xB565, 0xB566, 0xB567, 0xB568, 0xCABE, 0xECEA, 0xC0F1, -/* 2758 */ 0xB569, 0xC9E7, 0xB56A, 0xECEB, 0xC6EE, 0xB56B, 0xB56C, 0xB56D, -/* 2760 */ 0xB56E, 0xECEC, 0xB56F, 0xC6ED, 0xECED, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECF0, 0xB579, -/* 2770 */ 0xB57A, 0xD7E6, 0xECF3, 0xB57B, 0xB57C, 0xECF1, 0xECEE, 0xECEF, -/* 2778 */ 0xD7A3, 0xC9F1, 0xCBEE, 0xECF4, 0xB57D, 0xECF2, 0xB57E, 0xB580, -/* 2780 */ 0xCFE9, 0xB581, 0xECF6, 0xC6B1, 0xB582, 0xB583, 0xB584, 0xB585, -/* 2788 */ 0xBCC0, 0xB586, 0xECF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2790 */ 0xFFFD, 0xFFFD, 0xB5BB, 0xBBF6, 0xB58E, 0xECF7, 0xB58F, 0xB590, -/* 2798 */ 0xB591, 0xB592, 0xB593, 0xD9F7, 0xBDFB, 0xB594, 0xB595, 0xC2BB, -/* 27A0 */ 0xECF8, 0xB596, 0xB597, 0xB598, 0xB599, 0xECF9, 0xB59A, 0xB59B, -/* 27A8 */ 0xB59C, 0xB59D, 0xB8A3, 0xB59E, 0xB59F, 0xB5A0, 0xFFFD, 0xFFFD, -/* 27B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xECFA, 0xECFC, 0xB65E, -/* 27B8 */ 0xB65F, 0xB660, 0xB661, 0xB662, 0xD3ED, 0xD8AE, 0xC0EB, 0xB663, -/* 27C0 */ 0xC7DD, 0xBACC, 0xB664, 0xD0E3, 0xCBBD, 0xB665, 0xCDBA, 0xB666, -/* 27C8 */ 0xB667, 0xB8D1, 0xB668, 0xB669, 0xB1FC, 0xB66A, 0xC7EF, 0xB66B, -/* 27D0 */ 0xD6D6, 0xB66C, 0xB66D, 0xB66E, 0xBFC6, 0xC3EB, 0xB66F, 0xB670, -/* 27D8 */ 0xEFF5, 0xB671, 0xB672, 0xC3D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27E0 */ 0xFFFD, 0xFFFD, 0xD7E2, 0xB679, 0xB67A, 0xB67B, 0xEFF7, 0xB3D3, -/* 27E8 */ 0xB67C, 0xC7D8, 0xD1ED, 0xB67D, 0xD6C8, 0xB67E, 0xEFF8, 0xB680, -/* 27F0 */ 0xEFF6, 0xB681, 0xBBFD, 0xB3C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBDD5, 0xB689, 0xB68A, 0xD2C6, 0xB68B, -/* 2800 */ 0xBBE0, 0xB68C, 0xB68D, 0xCFA1, 0xB68E, 0xEFFC, 0xEFFB, 0xB68F, -/* 2808 */ 0xB690, 0xEFF9, 0xB691, 0xB692, 0xB693, 0xB694, 0xB3CC, 0xB695, -/* 2810 */ 0xC9D4, 0xCBB0, 0xB696, 0xB697, 0xB698, 0xB699, 0xB69A, 0xEFFE, -/* 2818 */ 0xB69B, 0xB69C, 0xB0DE, 0xB69D, 0xB69E, 0xD6C9, 0xB69F, 0xB6A0, -/* 2820 */ 0xB740, 0xEFFD, 0xB741, 0xB3ED, 0xB742, 0xB743, 0xF6D5, 0xCEC8, -/* 2828 */ 0xB753, 0xB754, 0xB755, 0xF0A2, 0xB756, 0xF0A1, 0xB757, 0xB5BE, -/* 2830 */ 0xBCDA, 0xBBFC, 0xB758, 0xB8E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2838 */ 0xFFFD, 0xFFFD, 0xC4C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF0A3, 0xB769, 0xB76A, -/* 2848 */ 0xB76B, 0xB76C, 0xB76D, 0xCBEB, 0xF0A6, 0xB787, 0xB788, 0xB789, -/* 2850 */ 0xD1A8, 0xB78A, 0xBEBF, 0xC7EE, 0xF1B6, 0xF1B7, 0xBFD5, 0xB78B, -/* 2858 */ 0xB78C, 0xB78D, 0xB78E, 0xB4A9, 0xF1B8, 0xCDBB, 0xB78F, 0xC7D4, -/* 2860 */ 0xD5AD, 0xB790, 0xF1B9, 0xB791, 0xF1BA, 0xB792, 0xB793, 0xB794, -/* 2868 */ 0xB795, 0xC7CF, 0xB796, 0xB797, 0xB798, 0xD2A4, 0xD6CF, 0xB799, -/* 2870 */ 0xB79A, 0xF1BB, 0xBDD1, 0xB4B0, 0xBEBD, 0xB79B, 0xB79C, 0xB79D, -/* 2878 */ 0xB4DC, 0xCED1, 0xB79E, 0xBFDF, 0xF1BD, 0xB79F, 0xB7A0, 0xB840, -/* 2880 */ 0xB841, 0xBFFA, 0xF1BC, 0xB842, 0xF1BF, 0xB843, 0xB844, 0xB845, -/* 2888 */ 0xF1BE, 0xF1C0, 0xB846, 0xB847, 0xB848, 0xB849, 0xB84A, 0xF1C1, -/* 2890 */ 0xC1A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCAFA, 0xB86B, 0xB86C, 0xD5BE, 0xB86D, -/* 28A0 */ 0xB86E, 0xB86F, 0xB870, 0xBEBA, 0xBEB9, 0xD5C2, 0xB871, 0xB872, -/* 28A8 */ 0xBFA2, 0xB873, 0xCDAF, 0xF1B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28B0 */ 0xFFFD, 0xFFFD, 0xBDDF, 0xB87A, 0xB6CB, 0xB87B, 0xB87C, 0xB87D, -/* 28B8 */ 0xB87E, 0xB880, 0xB881, 0xB882, 0xB883, 0xB884, 0xD6F1, 0xF3C3, -/* 28C0 */ 0xB885, 0xB886, 0xF3C4, 0xB887, 0xB8CD, 0xB888, 0xB889, 0xB88A, -/* 28C8 */ 0xF3C6, 0xF3C7, 0xB88B, 0xB0CA, 0xB88C, 0xF3C5, 0xB88D, 0xF3C9, -/* 28D0 */ 0xCBF1, 0xB88E, 0xB88F, 0xB890, 0xF3CB, 0xB891, 0xD0A6, 0xB892, -/* 28D8 */ 0xB893, 0xB1CA, 0xF3C8, 0xB894, 0xB895, 0xB896, 0xF3CF, 0xB897, -/* 28E0 */ 0xB5D1, 0xB898, 0xB899, 0xF3D7, 0xB89A, 0xF3D2, 0xB89B, 0xB89C, -/* 28E8 */ 0xB89D, 0xF3D4, 0xF3D3, 0xB7FB, 0xB89E, 0xB1BF, 0xB89F, 0xF3CE, -/* 28F0 */ 0xF3CA, 0xB5DA, 0xB8A0, 0xF3D0, 0xB940, 0xB941, 0xF3D1, 0xB942, -/* 28F8 */ 0xF3D5, 0xB943, 0xB944, 0xB945, 0xB946, 0xF3CD, 0xB947, 0xBCE3, -/* 2900 */ 0xB948, 0xC1FD, 0xB949, 0xF3D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2908 */ 0xFFFD, 0xFFFD, 0xF3DA, 0xB950, 0xF3CC, 0xB951, 0xB5C8, 0xB952, -/* 2910 */ 0xBDEE, 0xF3DC, 0xB953, 0xB954, 0xB7A4, 0xBFF0, 0xD6FE, 0xCDB2, -/* 2918 */ 0xB955, 0xB4F0, 0xB956, 0xB2DF, 0xB957, 0xF3D8, 0xB958, 0xF3D9, -/* 2920 */ 0xC9B8, 0xB959, 0xF3DD, 0xB95A, 0xB95B, 0xF3DE, 0xB95C, 0xF3E1, -/* 2928 */ 0xF3DF, 0xB968, 0xB969, 0xF3E3, 0xF3E2, 0xB96A, 0xB96B, 0xF3DB, -/* 2930 */ 0xB96C, 0xBFEA, 0xB96D, 0xB3EF, 0xB96E, 0xF3E0, 0xB96F, 0xB970, -/* 2938 */ 0xC7A9, 0xB971, 0xBCF2, 0xB972, 0xB973, 0xB974, 0xB975, 0xF3EB, -/* 2940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB9BF, -/* 2948 */ 0xB97D, 0xB97E, 0xF3E4, 0xB980, 0xB981, 0xB982, 0xB2AD, 0xBBFE, -/* 2950 */ 0xB983, 0xCBE3, 0xB984, 0xB985, 0xB986, 0xB987, 0xF3ED, 0xF3E9, -/* 2958 */ 0xB988, 0xB989, 0xB98A, 0xB9DC, 0xF3EE, 0xB98B, 0xB98C, 0xB98D, -/* 2960 */ 0xF3E5, 0xF3E6, 0xF3EA, 0xC2E1, 0xF3EC, 0xF3EF, 0xF3E8, 0xBCFD, -/* 2968 */ 0xB98E, 0xB98F, 0xB990, 0xCFE4, 0xB991, 0xB992, 0xF3F0, 0xB993, -/* 2970 */ 0xB994, 0xB995, 0xF3E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF3F2, 0xB99E, 0xB99F, 0xB9A0, 0xBA40, -/* 2980 */ 0xD7AD, 0xC6AA, 0xBA41, 0xBA42, 0xBA43, 0xBA44, 0xF3F3, 0xBA45, -/* 2988 */ 0xBA46, 0xBA47, 0xBA48, 0xF3F1, 0xBA49, 0xC2A8, 0xBA4A, 0xBA4B, -/* 2990 */ 0xBA4C, 0xBA4D, 0xBA4E, 0xB8DD, 0xF3F5, 0xBA4F, 0xBA50, 0xF3F4, -/* 2998 */ 0xBA51, 0xBA52, 0xBA53, 0xB4DB, 0xBA54, 0xBA55, 0xBA56, 0xF3F6, -/* 29A0 */ 0xF3F7, 0xBA57, 0xBA58, 0xBA59, 0xF3F8, 0xBA5A, 0xBA5B, 0xBA5C, -/* 29A8 */ 0xC0BA, 0xBA5D, 0xBA5E, 0xC0E9, 0xBA5F, 0xBA60, 0xBA61, 0xBA62, -/* 29B0 */ 0xBA63, 0xC5F1, 0xBA64, 0xBA65, 0xBA66, 0xBA67, 0xF3FB, 0xBA68, -/* 29B8 */ 0xF3FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29C0 */ 0xFFFD, 0xB4D8, 0xBA71, 0xBA72, 0xBA73, 0xF3FE, 0xF3F9, 0xBA74, -/* 29C8 */ 0xBA75, 0xF3FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29D0 */ 0xF3FD, 0xBA7C, 0xBA7D, 0xBA7E, 0xBA80, 0xBA81, 0xBA82, 0xBA83, -/* 29D8 */ 0xBA84, 0xF4A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29E0 */ 0xF4A3, 0xBBC9, 0xBA8B, 0xBA8C, 0xF4A2, 0xF4A4, 0xFFFD, 0xFFFD, -/* 29E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB2BE, 0xF4A6, 0xF4A5, 0xBAA0, -/* 29F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29F8 */ 0xFFFD, 0xFFFD, 0xBCAE, 0xC3D7, 0xD9E1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC0E0, 0xF4CC, 0xD7D1, 0xFFFD, 0xFFFD, -/* 2A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A10 */ 0xBB80, 0xB7DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A18 */ 0xFFFD, 0xF4CE, 0xC1A3, 0xBB88, 0xBB89, 0xC6C9, 0xBB8A, 0xB4D6, -/* 2A20 */ 0xD5B3, 0xBB8B, 0xBB8C, 0xBB8D, 0xF4D0, 0xF4CF, 0xF4D1, 0xCBDA, -/* 2A28 */ 0xBB8E, 0xBB8F, 0xF4D2, 0xBB90, 0xD4C1, 0xD6E0, 0xBB91, 0xBB92, -/* 2A30 */ 0xBB93, 0xBB94, 0xB7E0, 0xBB95, 0xBB96, 0xBB97, 0xC1B8, 0xBB98, -/* 2A38 */ 0xBB99, 0xC1BB, 0xF4D3, 0xBEAC, 0xBB9A, 0xBB9B, 0xBB9C, 0xBB9D, -/* 2A40 */ 0xBB9E, 0xB4E2, 0xBB9F, 0xBBA0, 0xF4D4, 0xF4D5, 0xBEAB, 0xBC40, -/* 2A48 */ 0xBC41, 0xF4D6, 0xBC42, 0xBC43, 0xBC44, 0xF4DB, 0xBC45, 0xF4D7, -/* 2A50 */ 0xF4DA, 0xBC46, 0xBAFD, 0xBC47, 0xF4D8, 0xF4D9, 0xFFFD, 0xFFFD, -/* 2A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8E2, 0xCCC7, 0xF4DC, -/* 2A60 */ 0xBC4F, 0xB2DA, 0xBC50, 0xBC51, 0xC3D3, 0xBC52, 0xBC53, 0xD4E3, -/* 2A68 */ 0xBFB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A70 */ 0xF4DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5B4, -/* 2A78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A80 */ 0xF4E9, 0xBC69, 0xBC6A, 0xCFB5, 0xCBD8, 0xBC8F, 0xCBF7, 0xBC90, -/* 2A88 */ 0xBC91, 0xBC92, 0xBC93, 0xBDF4, 0xBC94, 0xBC95, 0xBC96, 0xD7CF, -/* 2A90 */ 0xBC97, 0xBC98, 0xBC99, 0xC0DB, 0xD0F5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4EA, 0xF4EB, 0xFFFD, -/* 2AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4EC, 0xBF80, -/* 2AA8 */ 0xF7E3, 0xBF81, 0xBF82, 0xBF83, 0xBF84, 0xBF85, 0xB7B1, 0xBF86, -/* 2AB0 */ 0xBF87, 0xBF88, 0xBF89, 0xBF8A, 0xF4ED, 0xF4EE, 0xC07C, 0xC07D, -/* 2AB8 */ 0xC07E, 0xE6F9, 0xBEC0, 0xE6FA, 0xBAEC, 0xE6FB, 0xCFCB, 0xE6FC, -/* 2AC0 */ 0xD4BC, 0xBCB6, 0xE6FD, 0xE6FE, 0xBCCD, 0xC8D2, 0xCEB3, 0xE7A1, -/* 2AC8 */ 0xC080, 0xB4BF, 0xE7A2, 0xC9B4, 0xB8D9, 0xC4C9, 0xC081, 0xD7DD, -/* 2AD0 */ 0xC2DA, 0xB7D7, 0xD6BD, 0xCEC6, 0xB7C4, 0xC082, 0xC083, 0xC5A6, -/* 2AD8 */ 0xE7A3, 0xCFDF, 0xE7A4, 0xE7A5, 0xE7A6, 0xC1B7, 0xD7E9, 0xC9F0, -/* 2AE0 */ 0xCFB8, 0xD6AF, 0xD6D5, 0xE7A7, 0xB0ED, 0xE7A8, 0xE7A9, 0xC9DC, -/* 2AE8 */ 0xD2EF, 0xBEAD, 0xE7AA, 0xB0F3, 0xC8DE, 0xBDE1, 0xE7AB, 0xC8C6, -/* 2AF0 */ 0xC084, 0xE7AC, 0xBBE6, 0xB8F8, 0xD1A4, 0xE7AD, 0xC2E7, 0xBEF8, -/* 2AF8 */ 0xBDCA, 0xCDB3, 0xE7AE, 0xE7AF, 0xBEEE, 0xD0E5, 0xC085, 0xCBE7, -/* 2B00 */ 0xCCD0, 0xBCCC, 0xE7B0, 0xBCA8, 0xD0F7, 0xE7B1, 0xC086, 0xD0F8, -/* 2B08 */ 0xE7B2, 0xE7B3, 0xB4C2, 0xE7B4, 0xE7B5, 0xC9FE, 0xCEAC, 0xC3E0, -/* 2B10 */ 0xE7B7, 0xB1C1, 0xB3F1, 0xC087, 0xE7B8, 0xE7B9, 0xD7DB, 0xD5C0, -/* 2B18 */ 0xE7BA, 0xC2CC, 0xD7BA, 0xE7BB, 0xE7BC, 0xE7BD, 0xBCEA, 0xC3E5, -/* 2B20 */ 0xC0C2, 0xE7BE, 0xE7BF, 0xBCA9, 0xC088, 0xE7C0, 0xE7C1, 0xE7B6, -/* 2B28 */ 0xB6D0, 0xE7C2, 0xC089, 0xE7C3, 0xE7C4, 0xBBBA, 0xB5DE, 0xC2C6, -/* 2B30 */ 0xB1E0, 0xE7C5, 0xD4B5, 0xE7C6, 0xB8BF, 0xE7C8, 0xE7C7, 0xB7EC, -/* 2B38 */ 0xC08A, 0xE7C9, 0xB2F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B40 */ 0xFFFD, 0xFFFD, 0xD3A7, 0xCBF5, 0xE7D1, 0xE7D2, 0xE7D3, 0xE7D4, -/* 2B48 */ 0xC9C9, 0xE7D5, 0xE7D6, 0xE7D7, 0xE7D8, 0xE7D9, 0xBDC9, 0xE7DA, -/* 2B50 */ 0xF3BE, 0xC08B, 0xB8D7, 0xC08C, 0xC8B1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3BF, 0xC094, 0xF3C0, 0xF3C1, -/* 2B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B68 */ 0xFFFD, 0xFFFD, 0xB9DE, 0xCDF8, 0xC09F, 0xC0A0, 0xD8E8, 0xBAB1, -/* 2B70 */ 0xC140, 0xC2DE, 0xEEB7, 0xC141, 0xB7A3, 0xC142, 0xC143, 0xC144, -/* 2B78 */ 0xC145, 0xEEB9, 0xC146, 0xEEB8, 0xB0D5, 0xC147, 0xC148, 0xC149, -/* 2B80 */ 0xC14A, 0xC14B, 0xEEBB, 0xD5D6, 0xD7EF, 0xC14C, 0xC14D, 0xC14E, -/* 2B88 */ 0xD6C3, 0xC14F, 0xC150, 0xEEBD, 0xCAF0, 0xC151, 0xEEBC, 0xC152, -/* 2B90 */ 0xC153, 0xC154, 0xC155, 0xEEBE, 0xC156, 0xC157, 0xC158, 0xC159, -/* 2B98 */ 0xEEC0, 0xC15A, 0xC15B, 0xEEBF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1F2, 0xC164, 0xC7BC, 0xC165, -/* 2BA8 */ 0xC3C0, 0xC166, 0xC167, 0xC168, 0xC169, 0xC16A, 0xB8E1, 0xC16B, -/* 2BB0 */ 0xC16C, 0xC16D, 0xC16E, 0xC16F, 0xC1E7, 0xC170, 0xC171, 0xF4C6, -/* 2BB8 */ 0xD0DF, 0xF4C7, 0xC172, 0xCFDB, 0xC173, 0xC174, 0xC8BA, 0xC175, -/* 2BC0 */ 0xC176, 0xF4C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BC8 */ 0xFFFD, 0xF4C9, 0xF4CA, 0xC17E, 0xF4CB, 0xC180, 0xC181, 0xC182, -/* 2BD0 */ 0xC183, 0xC184, 0xD9FA, 0xB8FE, 0xC185, 0xC186, 0xE5F1, 0xD3F0, -/* 2BD8 */ 0xC187, 0xF4E0, 0xC188, 0xCECC, 0xC189, 0xC18A, 0xC18B, 0xB3E1, -/* 2BE0 */ 0xC18C, 0xC18D, 0xC18E, 0xC18F, 0xF1B4, 0xC190, 0xD2EE, 0xC191, -/* 2BE8 */ 0xF4E1, 0xC192, 0xC193, 0xC194, 0xC195, 0xC196, 0xCFE8, 0xF4E2, -/* 2BF0 */ 0xC197, 0xC198, 0xC7CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BF8 */ 0xFFFD, 0xB5D4, 0xB4E4, 0xF4E4, 0xC19F, 0xC1A0, 0xC240, 0xF4E3, -/* 2C00 */ 0xF4E5, 0xC241, 0xC242, 0xF4E6, 0xC243, 0xC244, 0xC245, 0xC246, -/* 2C08 */ 0xF4E7, 0xC247, 0xBAB2, 0xB0BF, 0xC248, 0xF4E8, 0xFFFD, 0xFFFD, -/* 2C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7AD, 0xD2ED, 0xC250, -/* 2C18 */ 0xC251, 0xC252, 0xD2AB, 0xC0CF, 0xC253, 0xBFBC, 0xEBA3, 0xD5DF, -/* 2C20 */ 0xEAC8, 0xC254, 0xC255, 0xC256, 0xC257, 0xF1F3, 0xB6F8, 0xCBA3, -/* 2C28 */ 0xC258, 0xC259, 0xC4CD, 0xC25A, 0xF1E7, 0xC25B, 0xF1E8, 0xB8FB, -/* 2C30 */ 0xF1E9, 0xBAC4, 0xD4C5, 0xB0D2, 0xC25C, 0xC25D, 0xF1EA, 0xC25E, -/* 2C38 */ 0xC25F, 0xC260, 0xF1EB, 0xC261, 0xF1EC, 0xC262, 0xC263, 0xF1ED, -/* 2C40 */ 0xF1EE, 0xF1EF, 0xF1F1, 0xF1F0, 0xC5D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF1F2, 0xC26A, 0xB6FA, 0xC26B, 0xF1F4, -/* 2C50 */ 0xD2AE, 0xDEC7, 0xCBCA, 0xC26C, 0xC26D, 0xB3DC, 0xC26E, 0xB5A2, -/* 2C58 */ 0xC26F, 0xB9A2, 0xC270, 0xC271, 0xC4F4, 0xF1F5, 0xC272, 0xC273, -/* 2C60 */ 0xF1F6, 0xC274, 0xC275, 0xC276, 0xC1C4, 0xC1FB, 0xD6B0, 0xF1F7, -/* 2C68 */ 0xC277, 0xC278, 0xC279, 0xC27A, 0xF1F8, 0xC27B, 0xC1AA, 0xC27C, -/* 2C70 */ 0xC27D, 0xC27E, 0xC6B8, 0xC280, 0xBEDB, 0xF1F9, 0xB4CF, 0xFFFD, -/* 2C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1FA, 0xC340, 0xEDB2, -/* 2C80 */ 0xEDB1, 0xC341, 0xC342, 0xCBE0, 0xD2DE, 0xC343, 0xCBC1, 0xD5D8, -/* 2C88 */ 0xC344, 0xC8E2, 0xC345, 0xC0DF, 0xBCA1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEBC1, 0xC34C, 0xC34D, 0xD0A4, 0xC34E, -/* 2C98 */ 0xD6E2, 0xC34F, 0xB6C7, 0xB8D8, 0xEBC0, 0xB8CE, 0xC350, 0xEBBF, -/* 2CA0 */ 0xB3A6, 0xB9C9, 0xD6AB, 0xC351, 0xB7F4, 0xB7CA, 0xC352, 0xC353, -/* 2CA8 */ 0xC354, 0xBCE7, 0xB7BE, 0xEBC6, 0xC355, 0xEBC7, 0xB0B9, 0xBFCF, -/* 2CB0 */ 0xC356, 0xEBC5, 0xD3FD, 0xC357, 0xEBC8, 0xC358, 0xC359, 0xEBC9, -/* 2CB8 */ 0xC35A, 0xC35B, 0xB7CE, 0xC35C, 0xEBC2, 0xEBC4, 0xC9F6, 0xD6D7, -/* 2CC0 */ 0xD5CD, 0xD0B2, 0xEBCF, 0xCEB8, 0xEBD0, 0xC35D, 0xB5A8, 0xC35E, -/* 2CC8 */ 0xC35F, 0xC360, 0xC361, 0xC362, 0xB1B3, 0xEBD2, 0xCCA5, 0xFFFD, -/* 2CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC5D6, 0xEBD3, -/* 2CD8 */ 0xC36A, 0xEBD1, 0xC5DF, 0xEBCE, 0xCAA4, 0xEBD5, 0xB0FB, 0xC36B, -/* 2CE0 */ 0xC36C, 0xBAFA, 0xC36D, 0xC36E, 0xD8B7, 0xF1E3, 0xC36F, 0xEBCA, -/* 2CE8 */ 0xEBCB, 0xEBCC, 0xEBCD, 0xEBD6, 0xE6C0, 0xEBD9, 0xC370, 0xBFE8, -/* 2CF0 */ 0xD2C8, 0xEBD7, 0xEBDC, 0xB8EC, 0xEBD8, 0xC371, 0xBDBA, 0xC372, -/* 2CF8 */ 0xD0D8, 0xC373, 0xB0B7, 0xC374, 0xEBDD, 0xC4DC, 0xC375, 0xC376, -/* 2D00 */ 0xC377, 0xC378, 0xD6AC, 0xC379, 0xC37A, 0xC37B, 0xB4E0, 0xC37C, -/* 2D08 */ 0xC37D, 0xC2F6, 0xBCB9, 0xC37E, 0xC380, 0xEBDA, 0xEBDB, 0xD4E0, -/* 2D10 */ 0xC6EA, 0xC4D4, 0xEBDF, 0xC5A7, 0xD9F5, 0xC381, 0xB2B1, 0xC382, -/* 2D18 */ 0xEBE4, 0xC383, 0xBDC5, 0xC384, 0xC385, 0xC386, 0xEBE2, 0xEBE3, -/* 2D20 */ 0xC394, 0xC395, 0xB8AC, 0xC396, 0xCDD1, 0xEBE5, 0xC397, 0xC398, -/* 2D28 */ 0xC399, 0xEBE1, 0xC39A, 0xC1B3, 0xC39B, 0xC39C, 0xC39D, 0xC39E, -/* 2D30 */ 0xC39F, 0xC6A2, 0xC3A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D38 */ 0xFFFD, 0xCCF3, 0xC446, 0xEBE6, 0xC447, 0xC0B0, 0xD2B8, 0xEBE7, -/* 2D40 */ 0xC448, 0xC449, 0xC44A, 0xB8AF, 0xB8AD, 0xC44B, 0xEBE8, 0xC7BB, -/* 2D48 */ 0xCDF3, 0xC44C, 0xC44D, 0xC44E, 0xEBEA, 0xEBEB, 0xC44F, 0xC450, -/* 2D50 */ 0xC451, 0xC452, 0xC453, 0xEBED, 0xC454, 0xC455, 0xC456, 0xC457, -/* 2D58 */ 0xD0C8, 0xC458, 0xEBF2, 0xC459, 0xEBEE, 0xC45A, 0xC45B, 0xC45C, -/* 2D60 */ 0xEBF1, 0xC8F9, 0xC45D, 0xD1FC, 0xEBEC, 0xC45E, 0xC45F, 0xEBE9, -/* 2D68 */ 0xC460, 0xC461, 0xC462, 0xC463, 0xB8B9, 0xCFD9, 0xC4E5, 0xEBEF, -/* 2D70 */ 0xEBF0, 0xCCDA, 0xCDC8, 0xB0F2, 0xC464, 0xEBF6, 0xC465, 0xC466, -/* 2D78 */ 0xC467, 0xC468, 0xC469, 0xEBF5, 0xC46A, 0xB2B2, 0xC46B, 0xC46C, -/* 2D80 */ 0xC46D, 0xC46E, 0xB8E0, 0xC46F, 0xEBF7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB1EC, 0xC476, 0xC477, 0xCCC5, 0xC4A4, -/* 2D90 */ 0xCFA5, 0xC478, 0xC479, 0xC47A, 0xC47B, 0xC47C, 0xEBF9, 0xC47D, -/* 2D98 */ 0xC47E, 0xECA2, 0xC480, 0xC5F2, 0xC481, 0xEBFA, 0xFFFD, 0xFFFD, -/* 2DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC9C5, 0xFFFD, -/* 2DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2DF, 0xEBFE, 0xC490, -/* 2DB0 */ 0xC491, 0xC492, 0xC493, 0xCDCE, 0xECA1, 0xB1DB, 0xD3B7, 0xC494, -/* 2DB8 */ 0xC495, 0xD2DC, 0xC496, 0xC497, 0xC498, 0xEBFD, 0xC499, 0xEBFB, -/* 2DC0 */ 0xB3BC, 0xC54F, 0xC550, 0xC551, 0xEAB0, 0xC552, 0xC553, 0xD7D4, -/* 2DC8 */ 0xC554, 0xF4AB, 0xB3F4, 0xC555, 0xC556, 0xC557, 0xC558, 0xC559, -/* 2DD0 */ 0xD6C1, 0xD6C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DD8 */ 0xD5E9, 0xBECA, 0xC560, 0xF4A7, 0xC561, 0xD2A8, 0xF4A8, 0xF4A9, -/* 2DE0 */ 0xC562, 0xF4AA, 0xBECB, 0xD3DF, 0xC563, 0xC564, 0xC565, 0xC566, -/* 2DE8 */ 0xC567, 0xC9E0, 0xC9E1, 0xC568, 0xC569, 0xF3C2, 0xC56A, 0xCAE6, -/* 2DF0 */ 0xC56B, 0xCCF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DF8 */ 0xE2B6, 0xCBB4, 0xC572, 0xCEE8, 0xD6DB, 0xC573, 0xF4AD, 0xF4AE, -/* 2E00 */ 0xF4AF, 0xC574, 0xC575, 0xC576, 0xC577, 0xF4B2, 0xC578, 0xBABD, -/* 2E08 */ 0xF4B3, 0xB0E3, 0xF4B0, 0xC579, 0xF4B1, 0xBDA2, 0xB2D5, 0xC57A, -/* 2E10 */ 0xF4B6, 0xF4B7, 0xB6E6, 0xB2B0, 0xCFCF, 0xF4B4, 0xB4AC, 0xC57B, -/* 2E18 */ 0xF4B5, 0xC57C, 0xC57D, 0xF4B8, 0xC57E, 0xC580, 0xC581, 0xC582, -/* 2E20 */ 0xC583, 0xF4B9, 0xC584, 0xC585, 0xCDA7, 0xC586, 0xF4BA, 0xC587, -/* 2E28 */ 0xF4BB, 0xC588, 0xC589, 0xC58A, 0xF4BC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBD2, 0xC593, 0xF4BD, -/* 2E38 */ 0xC594, 0xC595, 0xC596, 0xC597, 0xF4BE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF4BF, 0xC5A0, 0xC640, -/* 2E48 */ 0xC641, 0xC642, 0xC643, 0xF4DE, 0xC1BC, 0xBCE8, 0xC644, 0xC9AB, -/* 2E50 */ 0xD1DE, 0xE5F5, 0xC645, 0xC646, 0xC647, 0xC648, 0xDCB3, 0xD2D5, -/* 2E58 */ 0xC649, 0xC64A, 0xDCB4, 0xB0AC, 0xDCB5, 0xC64B, 0xC64C, 0xBDDA, -/* 2E60 */ 0xC64D, 0xDCB9, 0xC64E, 0xC64F, 0xC650, 0xD8C2, 0xC651, 0xDCB7, -/* 2E68 */ 0xD3F3, 0xC652, 0xC9D6, 0xDCBA, 0xDCB6, 0xC653, 0xDCBB, 0xC3A2, -/* 2E70 */ 0xC654, 0xC655, 0xC656, 0xC657, 0xDCBC, 0xDCC5, 0xDCBD, 0xC658, -/* 2E78 */ 0xC659, 0xCEDF, 0xD6A5, 0xC65A, 0xDCCF, 0xC65B, 0xDCCD, 0xC65C, -/* 2E80 */ 0xC65D, 0xDCD2, 0xBDE6, 0xC2AB, 0xC65E, 0xDCB8, 0xDCCB, 0xDCCE, -/* 2E88 */ 0xDCBE, 0xB7D2, 0xB0C5, 0xDCC7, 0xD0BE, 0xDCC1, 0xBBA8, 0xC65F, -/* 2E90 */ 0xB7BC, 0xDCCC, 0xC660, 0xC661, 0xDCC6, 0xDCBF, 0xC7DB, 0xC662, -/* 2E98 */ 0xC663, 0xC664, 0xD1BF, 0xDCC0, 0xC665, 0xC666, 0xDCCA, 0xC667, -/* 2EA0 */ 0xC668, 0xDCD0, 0xC669, 0xC66A, 0xCEAD, 0xDCC2, 0xC66B, 0xDCC3, -/* 2EA8 */ 0xDCC8, 0xDCC9, 0xB2D4, 0xDCD1, 0xCBD5, 0xC66C, 0xD4B7, 0xDCDB, -/* 2EB0 */ 0xDCDF, 0xCCA6, 0xDCE6, 0xC66D, 0xC3E7, 0xDCDC, 0xC66E, 0xC66F, -/* 2EB8 */ 0xBFC1, 0xDCD9, 0xC670, 0xB0FA, 0xB9B6, 0xDCE5, 0xDCD3, 0xC671, -/* 2EC0 */ 0xDCC4, 0xDCD6, 0xC8F4, 0xBFE0, 0xC672, 0xC673, 0xC674, 0xC675, -/* 2EC8 */ 0xC9BB, 0xC676, 0xC677, 0xC678, 0xB1BD, 0xC679, 0xD3A2, 0xC67A, -/* 2ED0 */ 0xC67B, 0xDCDA, 0xC67C, 0xC67D, 0xDCD5, 0xC67E, 0xC6BB, 0xC680, -/* 2ED8 */ 0xDCDE, 0xC681, 0xC682, 0xC683, 0xC684, 0xC685, 0xD7C2, 0xC3AF, -/* 2EE0 */ 0xB7B6, 0xC7D1, 0xC3A9, 0xDCE2, 0xDCD8, 0xDCEB, 0xDCD4, 0xC686, -/* 2EE8 */ 0xC687, 0xDCDD, 0xC688, 0xBEA5, 0xDCD7, 0xC689, 0xDCE0, 0xC68A, -/* 2EF0 */ 0xC68B, 0xDCE3, 0xDCE4, 0xC68C, 0xDCF8, 0xC68D, 0xC68E, 0xDCE1, -/* 2EF8 */ 0xDDA2, 0xDCE7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCEB, 0xB4C4, 0xC699, 0xC69A, -/* 2F08 */ 0xC3A3, 0xB2E7, 0xDCFA, 0xC69B, 0xDCF2, 0xC69C, 0xDCEF, 0xC69D, -/* 2F10 */ 0xDCFC, 0xDCEE, 0xD2F0, 0xB2E8, 0xC69E, 0xC8D7, 0xC8E3, 0xDCFB, -/* 2F18 */ 0xC69F, 0xDCED, 0xC6A0, 0xC740, 0xC741, 0xDCF7, 0xC742, 0xC743, -/* 2F20 */ 0xDCF5, 0xC744, 0xC745, 0xBEA3, 0xDCF4, 0xC746, 0xB2DD, 0xC747, -/* 2F28 */ 0xC748, 0xC749, 0xC74A, 0xC74B, 0xDCF3, 0xBCF6, 0xDCE8, 0xBBC4, -/* 2F30 */ 0xC74C, 0xC0F3, 0xC74D, 0xC74E, 0xC74F, 0xC750, 0xC751, 0xBCD4, -/* 2F38 */ 0xDCE9, 0xDCEA, 0xC752, 0xDCF1, 0xDCF6, 0xDCF9, 0xB5B4, 0xC753, -/* 2F40 */ 0xC8D9, 0xBBE7, 0xDCFE, 0xDCFD, 0xD3AB, 0xDDA1, 0xDDA3, 0xDDA5, -/* 2F48 */ 0xD2F1, 0xDDA4, 0xDDA6, 0xDDA7, 0xD2A9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAC9, 0xDDA9, 0xC75B, 0xC75C, -/* 2F58 */ 0xDDB6, 0xDDB1, 0xDDB4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F60 */ 0xFFFD, 0xFFFD, 0xDDB0, 0xC6CE, 0xC764, 0xC765, 0xC0F2, 0xC766, -/* 2F68 */ 0xC767, 0xC768, 0xC769, 0xC9AF, 0xC76A, 0xC76B, 0xC76C, 0xDCEC, -/* 2F70 */ 0xDDAE, 0xC76D, 0xC76E, 0xC76F, 0xC770, 0xDDB7, 0xC771, 0xC772, -/* 2F78 */ 0xDCF0, 0xDDAF, 0xC773, 0xDDB8, 0xC774, 0xDDAC, 0xFFFD, 0xFFFD, -/* 2F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDB9, 0xDDB3, 0xDDAD, -/* 2F88 */ 0xC4AA, 0xC77C, 0xC77D, 0xC77E, 0xC780, 0xDDA8, 0xC0B3, 0xC1AB, -/* 2F90 */ 0xDDAA, 0xDDAB, 0xC781, 0xDDB2, 0xBBF1, 0xDDB5, 0xD3A8, 0xDDBA, -/* 2F98 */ 0xC782, 0xDDBB, 0xC3A7, 0xC783, 0xC784, 0xDDD2, 0xDDBC, 0xC785, -/* 2FA0 */ 0xC786, 0xC787, 0xDDD1, 0xC788, 0xB9BD, 0xC789, 0xC78A, 0xBED5, -/* 2FA8 */ 0xC78B, 0xBEFA, 0xC78C, 0xC78D, 0xBACA, 0xC78E, 0xC78F, 0xC790, -/* 2FB0 */ 0xC791, 0xDDCA, 0xC792, 0xDDC5, 0xC793, 0xDDBF, 0xC794, 0xC795, -/* 2FB8 */ 0xC796, 0xB2CB, 0xDDC3, 0xC797, 0xDDCB, 0xB2A4, 0xDDD5, 0xC798, -/* 2FC0 */ 0xC799, 0xC79A, 0xDDBE, 0xC79B, 0xC79C, 0xC79D, 0xC6D0, 0xDDD0, -/* 2FC8 */ 0xC79E, 0xC79F, 0xC7A0, 0xC840, 0xC841, 0xDDD4, 0xC1E2, 0xB7C6, -/* 2FD0 */ 0xC842, 0xC843, 0xC844, 0xC845, 0xC846, 0xDDCE, 0xDDCF, 0xC847, -/* 2FD8 */ 0xC848, 0xC849, 0xDDC4, 0xC84A, 0xC84B, 0xC84C, 0xDDBD, 0xC84D, -/* 2FE0 */ 0xDDCD, 0xCCD1, 0xC84E, 0xDDC9, 0xC84F, 0xC850, 0xC851, 0xC852, -/* 2FE8 */ 0xDDC2, 0xC3C8, 0xC6BC, 0xCEAE, 0xDDCC, 0xC853, 0xDDC8, 0xFFFD, -/* 2FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDC1, 0xC85A, 0xC85B, -/* 2FF8 */ 0xC85C, 0xDDC6, 0xC2DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3000 */ 0xFFFD, 0xD3A9, 0xD3AA, 0xDDD3, 0xCFF4, 0xC8F8, 0xFFFD, 0xFFFD, -/* 3008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDE6, 0xFFFD, -/* 3010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDC7, 0xC871, 0xC872, -/* 3018 */ 0xC873, 0xDDE0, 0xC2E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDDE1, 0xC87C, 0xC87D, 0xC87E, 0xFFFD, -/* 3028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDD7, 0xC887, -/* 3030 */ 0xC888, 0xC889, 0xC88A, 0xC88B, 0xD6F8, 0xC88C, 0xDDD9, 0xDDD8, -/* 3038 */ 0xB8F0, 0xDDD6, 0xC88D, 0xC88E, 0xC88F, 0xC890, 0xC6CF, 0xC891, -/* 3040 */ 0xB6AD, 0xC892, 0xC893, 0xC894, 0xC895, 0xC896, 0xDDE2, 0xC897, -/* 3048 */ 0xBAF9, 0xD4E1, 0xDDE7, 0xC898, 0xC899, 0xC89A, 0xB4D0, 0xC89B, -/* 3050 */ 0xDDDA, 0xC89C, 0xBFFB, 0xDDE3, 0xC89D, 0xDDDF, 0xC89E, 0xDDDD, -/* 3058 */ 0xC89F, 0xC8A0, 0xC940, 0xC941, 0xC942, 0xC943, 0xC944, 0xB5D9, -/* 3060 */ 0xC945, 0xC946, 0xC947, 0xC948, 0xDDDB, 0xDDDC, 0xDDDE, 0xC949, -/* 3068 */ 0xBDAF, 0xDDE4, 0xC94A, 0xDDE5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDDF5, 0xC953, 0xC3C9, 0xC954, -/* 3078 */ 0xC955, 0xCBE2, 0xC956, 0xC957, 0xC958, 0xC959, 0xDDF2, 0xD8E1, -/* 3080 */ 0xC967, 0xC968, 0xC6D1, 0xC969, 0xDDF4, 0xC96A, 0xC96B, 0xC96C, -/* 3088 */ 0xD5F4, 0xDDF3, 0xDDF0, 0xC96D, 0xC96E, 0xDDEC, 0xC96F, 0xDDEF, -/* 3090 */ 0xC970, 0xDDE8, 0xC971, 0xC972, 0xD0EE, 0xC973, 0xC974, 0xC975, -/* 3098 */ 0xC976, 0xC8D8, 0xDDEE, 0xC977, 0xC978, 0xDDE9, 0xC979, 0xC97A, -/* 30A0 */ 0xDDEA, 0xCBF2, 0xC97B, 0xDDED, 0xC97C, 0xC97D, 0xB1CD, 0xC97E, -/* 30A8 */ 0xC980, 0xC981, 0xC982, 0xC983, 0xC984, 0xC0B6, 0xC985, 0xBCBB, -/* 30B0 */ 0xDDF1, 0xC986, 0xC987, 0xDDF7, 0xC988, 0xDDF6, 0xDDEB, 0xC989, -/* 30B8 */ 0xC98A, 0xC98B, 0xC98C, 0xC98D, 0xC5EE, 0xC98E, 0xC98F, 0xC990, -/* 30C0 */ 0xDDFB, 0xDEA4, 0xC99C, 0xC99D, 0xDEA3, 0xC99E, 0xC99F, 0xC9A0, -/* 30C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30D0 */ 0xFFFD, 0xDDF8, 0xCA49, 0xCA4A, 0xCA4B, 0xCA4C, 0xC3EF, 0xCA4D, -/* 30D8 */ 0xC2FB, 0xCA4E, 0xCA4F, 0xCA50, 0xD5E1, 0xCA51, 0xCA52, 0xCEB5, -/* 30E0 */ 0xCA53, 0xCA54, 0xCA55, 0xCA56, 0xDDFD, 0xCA57, 0xB2CC, 0xFFFD, -/* 30E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30F0 */ 0xC4E8, 0xCADF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7BE, 0xDDFA, 0xDDFC, 0xDDFE, -/* 3100 */ 0xDEA2, 0xB0AA, 0xB1CE, 0xCA6B, 0xCA6C, 0xCA6D, 0xCA6E, 0xCA6F, -/* 3108 */ 0xDEAC, 0xCA70, 0xCA71, 0xCA72, 0xCA73, 0xDEA6, 0xBDB6, 0xC8EF, -/* 3110 */ 0xDEA1, 0xCA80, 0xCA81, 0xDEA5, 0xCA82, 0xCA83, 0xCA84, 0xCA85, -/* 3118 */ 0xDEA9, 0xCA86, 0xCA87, 0xCA88, 0xCA89, 0xCA8A, 0xDEA8, 0xCA8B, -/* 3120 */ 0xCA8C, 0xCA8D, 0xDEA7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEAD, 0xCA97, 0xD4CC, 0xCA98, -/* 3130 */ 0xCA99, 0xCA9A, 0xCA9B, 0xDEB3, 0xDEAA, 0xDEAE, 0xCA9C, 0xCA9D, -/* 3138 */ 0xC0D9, 0xCA9E, 0xCA9F, 0xCAA0, 0xCB40, 0xCB41, 0xB1A1, 0xDEB6, -/* 3140 */ 0xCB42, 0xDEB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3148 */ 0xFFFD, 0xDEB2, 0xD1A6, 0xDEB5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDEAF, 0xCB5C, 0xCB5D, 0xCB5E, 0xDEB0, -/* 3158 */ 0xCB5F, 0xD0BD, 0xCB60, 0xCB61, 0xCB62, 0xDEB4, 0xCAED, 0xDEB9, -/* 3160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDEB8, 0xCB69, -/* 3168 */ 0xDEB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3170 */ 0xDEBB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3178 */ 0xBDE5, 0xCB78, 0xCB79, 0xCB7A, 0xCB7B, 0xCB7C, 0xB2D8, 0xC3EA, -/* 3180 */ 0xCB7D, 0xCB7E, 0xDEBA, 0xCB80, 0xC5BA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xDEBC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCCD9, 0xCB8E, 0xCB8F, 0xCB90, 0xCB91, -/* 3198 */ 0xB7AA, 0xCC40, 0xCC41, 0xD4E5, 0xCC42, 0xCC43, 0xCC44, 0xDEBD, -/* 31A0 */ 0xCC45, 0xCC46, 0xCC47, 0xCC48, 0xCC49, 0xDEBF, 0xC4A2, 0xCC55, -/* 31A8 */ 0xCC56, 0xCC57, 0xCC58, 0xDEC1, 0xDEBE, 0xCC69, 0xDEC0, 0xD5BA, -/* 31B0 */ 0xCC78, 0xCC79, 0xCC7A, 0xDEC2, 0xCC7B, 0xCC7C, 0xCC7D, 0xCC7E, -/* 31B8 */ 0xF2AE, 0xBBA2, 0xC2B2, 0xC5B0, 0xC2C7, 0xCC8C, 0xCC8D, 0xF2AF, -/* 31C0 */ 0xCC8E, 0xCC8F, 0xCC90, 0xCC91, 0xCC92, 0xD0E9, 0xCC93, 0xCC94, -/* 31C8 */ 0xCC95, 0xD3DD, 0xCC96, 0xCC97, 0xCC98, 0xEBBD, 0xFFFD, 0xFFFD, -/* 31D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB3E6, 0xF2B0, -/* 31D8 */ 0xCD40, 0xF2B1, 0xCD41, 0xCD42, 0xCAAD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAE7, 0xF2B3, 0xF2B5, 0xF2B4, -/* 31E8 */ 0xCBE4, 0xCFBA, 0xF2B2, 0xCAB4, 0xD2CF, 0xC2EC, 0xFFFD, 0xFFFD, -/* 31F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEC3, 0xF2B8, 0xB0F6, -/* 31F8 */ 0xF2B7, 0xCD51, 0xCD52, 0xCD53, 0xCD54, 0xCD55, 0xF2BE, 0xCD56, -/* 3200 */ 0xB2CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD1C1, -/* 3208 */ 0xF2BA, 0xCD5D, 0xCD5E, 0xCD5F, 0xCD60, 0xCD61, 0xF2BC, 0xD4E9, -/* 3210 */ 0xCD62, 0xCD63, 0xF2BB, 0xF2B6, 0xF2BF, 0xF2BD, 0xCD64, 0xF2B9, -/* 3218 */ 0xCD65, 0xCD66, 0xF2C7, 0xF2C4, 0xF2C6, 0xCD67, 0xCD68, 0xF2CA, -/* 3220 */ 0xF2C2, 0xF2C0, 0xCD69, 0xCD6A, 0xCD6B, 0xF2C5, 0xCD6C, 0xCD6D, -/* 3228 */ 0xCD6E, 0xCD6F, 0xCD70, 0xD6FB, 0xCD71, 0xCD72, 0xCD73, 0xF2C1, -/* 3230 */ 0xCD74, 0xC7F9, 0xC9DF, 0xCD75, 0xF2C8, 0xB9C6, 0xB5B0, 0xCD76, -/* 3238 */ 0xCD77, 0xF2C3, 0xF2C9, 0xF2D0, 0xF2D6, 0xCD78, 0xCD79, 0xBBD7, -/* 3240 */ 0xCD7A, 0xCD7B, 0xCD7C, 0xF2D5, 0xCDDC, 0xCD7D, 0xD6EB, 0xCD7E, -/* 3248 */ 0xCD80, 0xF2D2, 0xF2D4, 0xCD81, 0xCD82, 0xCD83, 0xCD84, 0xB8F2, -/* 3250 */ 0xCD85, 0xCD86, 0xCD87, 0xCD88, 0xF2CB, 0xCD89, 0xCD8A, 0xCD8B, -/* 3258 */ 0xF2CE, 0xC2F9, 0xCD8C, 0xD5DD, 0xF2CC, 0xF2CD, 0xF2CF, 0xF2D3, -/* 3260 */ 0xCD8D, 0xCD8E, 0xCD8F, 0xF2D9, 0xD3BC, 0xCD90, 0xCD91, 0xCD92, -/* 3268 */ 0xCD93, 0xB6EA, 0xCD94, 0xCAF1, 0xCD95, 0xB7E4, 0xF2D7, 0xCD96, -/* 3270 */ 0xCD97, 0xCD98, 0xF2D8, 0xF2DA, 0xF2DD, 0xF2DB, 0xCD99, 0xCD9A, -/* 3278 */ 0xF2DC, 0xCD9B, 0xCD9C, 0xCD9D, 0xCD9E, 0xD1D1, 0xF2D1, 0xCD9F, -/* 3280 */ 0xCDC9, 0xCDA0, 0xCECF, 0xD6A9, 0xCE40, 0xF2E3, 0xCE41, 0xC3DB, -/* 3288 */ 0xCE42, 0xF2E0, 0xCE43, 0xCE44, 0xC0AF, 0xF2EC, 0xF2DE, 0xCE45, -/* 3290 */ 0xF2E1, 0xCE46, 0xCE47, 0xCE48, 0xF2E8, 0xCE49, 0xCE4A, 0xCE4B, -/* 3298 */ 0xCE4C, 0xF2E2, 0xCE4D, 0xCE4E, 0xF2E7, 0xCE4F, 0xCE50, 0xF2E6, -/* 32A0 */ 0xCE51, 0xCE52, 0xF2E9, 0xCE53, 0xCE54, 0xCE55, 0xF2DF, 0xCE56, -/* 32A8 */ 0xCE57, 0xF2E4, 0xF2EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32B0 */ 0xFFFD, 0xFFFD, 0xD3AC, 0xF2E5, 0xB2F5, 0xCE5F, 0xCE60, 0xF2F2, -/* 32B8 */ 0xCE61, 0xD0AB, 0xCE62, 0xCE63, 0xCE64, 0xCE65, 0xF2F5, 0xCE66, -/* 32C0 */ 0xCE67, 0xCE68, 0xBBC8, 0xCE69, 0xF2F9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF2F0, 0xCE70, 0xCE71, 0xF2F6, 0xF2F8, -/* 32D0 */ 0xF2FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32D8 */ 0xFFFD, 0xF2F3, 0xCE7A, 0xF2F1, 0xCE7B, 0xCE7C, 0xCE7D, 0xBAFB, -/* 32E0 */ 0xCE7E, 0xB5FB, 0xCE80, 0xCE81, 0xCE82, 0xCE83, 0xF2EF, 0xF2F7, -/* 32E8 */ 0xF2ED, 0xF2EE, 0xCE84, 0xCE85, 0xCE86, 0xF2EB, 0xF3A6, 0xCE87, -/* 32F0 */ 0xF3A3, 0xCE88, 0xCE89, 0xF3A2, 0xCE8A, 0xCE8B, 0xF2F4, 0xCE8C, -/* 32F8 */ 0xC8DA, 0xCE8D, 0xCE8E, 0xCE8F, 0xCE90, 0xCE91, 0xF2FB, 0xCE92, -/* 3300 */ 0xCE93, 0xCE94, 0xF3A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3308 */ 0xFFFD, 0xFFFD, 0xC3F8, 0xCE9C, 0xCE9D, 0xCE9E, 0xCE9F, 0xCEA0, -/* 3310 */ 0xCF40, 0xCF41, 0xCF42, 0xF2FD, 0xCF43, 0xCF44, 0xF3A7, 0xF3A9, -/* 3318 */ 0xF3A4, 0xCF45, 0xF2FC, 0xCF46, 0xCF47, 0xCF48, 0xF3AB, 0xCF49, -/* 3320 */ 0xF3AA, 0xCF4A, 0xCF4B, 0xCF4C, 0xCF4D, 0xC2DD, 0xCF4E, 0xCF4F, -/* 3328 */ 0xF3AE, 0xCF50, 0xCF51, 0xF3B0, 0xCF52, 0xCF53, 0xCF54, 0xCF55, -/* 3330 */ 0xCF56, 0xF3A1, 0xCF57, 0xCF58, 0xCF59, 0xF3B1, 0xF3AC, 0xCF5A, -/* 3338 */ 0xCF5B, 0xCF5C, 0xCF5D, 0xCF5E, 0xF3AF, 0xF2FE, 0xF3AD, 0xFFFD, -/* 3340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3B2, 0xCF66, -/* 3348 */ 0xCF67, 0xCF68, 0xCF69, 0xF3B4, 0xCF6A, 0xCF6B, 0xCF6C, 0xCF6D, -/* 3350 */ 0xF3A8, 0xCF6E, 0xCF6F, 0xCF70, 0xCF71, 0xF3B3, 0xCF72, 0xCF73, -/* 3358 */ 0xCF74, 0xF3B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0B7, 0xCF80, 0xCF81, 0xCF82, -/* 3368 */ 0xCF83, 0xF3B8, 0xCF84, 0xCF85, 0xCF86, 0xCF87, 0xD9F9, 0xFFFD, -/* 3370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3B9, 0xFFFD, 0xFFFD, -/* 3378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3B7, 0xCF96, -/* 3380 */ 0xC8E4, 0xF3B6, 0xCF97, 0xCF98, 0xCF99, 0xCF9A, 0xF3BA, 0xCF9B, -/* 3388 */ 0xCF9C, 0xCF9D, 0xCF9E, 0xCF9F, 0xF3BB, 0xB4C0, 0xCFA0, 0xEEC3, -/* 3390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF3BC, 0xD054, -/* 3398 */ 0xD055, 0xF3BD, 0xD056, 0xD057, 0xD058, 0xD1AA, 0xD059, 0xD05A, -/* 33A0 */ 0xD05B, 0xF4AC, 0xD0C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33A8 */ 0xFFFD, 0xD0D0, 0xD1DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33B0 */ 0xFFFD, 0xCFCE, 0xD068, 0xD069, 0xBDD6, 0xD06A, 0xD1C3, 0xFFFD, -/* 33B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBAE2, 0xE1E9, -/* 33C0 */ 0xD2C2, 0xF1C2, 0xB2B9, 0xD072, 0xD073, 0xB1ED, 0xF1C3, 0xD074, -/* 33C8 */ 0xC9C0, 0xB3C4, 0xD075, 0xD9F2, 0xD076, 0xCBA5, 0xD077, 0xF1C4, -/* 33D0 */ 0xD078, 0xD079, 0xD07A, 0xD07B, 0xD6D4, 0xD07C, 0xD07D, 0xD07E, -/* 33D8 */ 0xD080, 0xD081, 0xF1C5, 0xF4C0, 0xF1C6, 0xD082, 0xD4AC, 0xF1C7, -/* 33E0 */ 0xD083, 0xB0C0, 0xF4C1, 0xD084, 0xD085, 0xF4C2, 0xD086, 0xD087, -/* 33E8 */ 0xB4FC, 0xD088, 0xC5DB, 0xD089, 0xD08A, 0xD08B, 0xD08C, 0xCCBB, -/* 33F0 */ 0xD08D, 0xD08E, 0xD08F, 0xD0E4, 0xD090, 0xD091, 0xD092, 0xD093, -/* 33F8 */ 0xD094, 0xCDE0, 0xD095, 0xD096, 0xD097, 0xD098, 0xD099, 0xF1C8, -/* 3400 */ 0xD09A, 0xD9F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3408 */ 0xB1BB, 0xD140, 0xCFAE, 0xD141, 0xD142, 0xD143, 0xB8A4, 0xD144, -/* 3410 */ 0xD145, 0xD146, 0xD147, 0xD148, 0xF1CA, 0xD149, 0xD14A, 0xD14B, -/* 3418 */ 0xD14C, 0xF1CB, 0xD14D, 0xD14E, 0xD14F, 0xD150, 0xB2C3, 0xC1D1, -/* 3420 */ 0xD151, 0xD152, 0xD7B0, 0xF1C9, 0xD153, 0xD154, 0xF1CC, 0xD155, -/* 3428 */ 0xD156, 0xD157, 0xD158, 0xF1CE, 0xD159, 0xD15A, 0xD15B, 0xD9F6, -/* 3430 */ 0xD15C, 0xD2E1, 0xD4A3, 0xD15D, 0xD15E, 0xF4C3, 0xC8B9, 0xD15F, -/* 3438 */ 0xD160, 0xD161, 0xD162, 0xD163, 0xF4C4, 0xD164, 0xD165, 0xF1CD, -/* 3440 */ 0xF1CF, 0xBFE3, 0xF1D0, 0xD166, 0xD167, 0xF1D4, 0xFFFD, 0xFFFD, -/* 3448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1D6, 0xF1D1, 0xD16F, -/* 3450 */ 0xC9D1, 0xC5E1, 0xD170, 0xD171, 0xD172, 0xC2E3, 0xB9FC, 0xD173, -/* 3458 */ 0xD174, 0xF1D3, 0xD175, 0xF1D5, 0xD176, 0xD177, 0xD178, 0xB9D3, -/* 3460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD180, 0xF1DB, -/* 3468 */ 0xD181, 0xD182, 0xD183, 0xD184, 0xD185, 0xBAD6, 0xD186, 0xB0FD, -/* 3470 */ 0xF1D9, 0xD187, 0xD188, 0xD189, 0xD18A, 0xD18B, 0xF1D8, 0xF1D2, -/* 3478 */ 0xF1DA, 0xD18C, 0xD18D, 0xD18E, 0xD18F, 0xD190, 0xF1D7, 0xD191, -/* 3480 */ 0xD192, 0xD193, 0xC8EC, 0xD194, 0xD195, 0xD196, 0xD197, 0xCDCA, -/* 3488 */ 0xF1DD, 0xD198, 0xD199, 0xD19A, 0xD19B, 0xE5BD, 0xD19C, 0xD19D, -/* 3490 */ 0xD19E, 0xF1DC, 0xD19F, 0xF1DE, 0xD1A0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF1DF, 0xD249, -/* 34A0 */ 0xD24A, 0xCFE5, 0xF4C5, 0xBDF3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34A8 */ 0xFFFD, 0xFFFD, 0xF1E0, 0xF1E1, 0xD27E, 0xD280, 0xD281, 0xCEF7, -/* 34B0 */ 0xD282, 0xD2AA, 0xD283, 0xF1FB, 0xD284, 0xD285, 0xB8B2, 0xBCFB, -/* 34B8 */ 0xB9DB, 0xD35F, 0xB9E6, 0xC3D9, 0xCAD3, 0xEAE8, 0xC0C0, 0xBEF5, -/* 34C0 */ 0xEAE9, 0xEAEA, 0xEAEB, 0xD360, 0xEAEC, 0xEAED, 0xEAEE, 0xEAEF, -/* 34C8 */ 0xBDC7, 0xD361, 0xD362, 0xD363, 0xF5FB, 0xD364, 0xD365, 0xD366, -/* 34D0 */ 0xF5FD, 0xD367, 0xF5FE, 0xD368, 0xF5FC, 0xD369, 0xD36A, 0xD36B, -/* 34D8 */ 0xD36C, 0xBDE2, 0xD36D, 0xF6A1, 0xB4A5, 0xD36E, 0xD36F, 0xD370, -/* 34E0 */ 0xD371, 0xF6A2, 0xD372, 0xD373, 0xD374, 0xF6A3, 0xD375, 0xD376, -/* 34E8 */ 0xD377, 0xECB2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F0 */ 0xFFFD, 0xD380, 0xD381, 0xD382, 0xD383, 0xD384, 0xD1D4, 0xFFFD, -/* 34F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD9EA, 0xF6A4, 0xFFFD, -/* 3500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3508 */ 0xEEBA, 0xD3FE, 0xCCDC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCAC4, 0xD680, 0xD681, 0xF6A5, 0xBEAF, -/* 3518 */ 0xD760, 0xD761, 0xD762, 0xD763, 0xD764, 0xC6A9, 0xDAA5, 0xBCC6, -/* 3520 */ 0xB6A9, 0xB8BC, 0xC8CF, 0xBCA5, 0xDAA6, 0xDAA7, 0xCCD6, 0xC8C3, -/* 3528 */ 0xDAA8, 0xC6FD, 0xD799, 0xD1B5, 0xD2E9, 0xD1B6, 0xBCC7, 0xD79A, -/* 3530 */ 0xBDB2, 0xBBE4, 0xDAA9, 0xDAAA, 0xD1C8, 0xDAAB, 0xD0ED, 0xB6EF, -/* 3538 */ 0xC2DB, 0xD79B, 0xCBCF, 0xB7ED, 0xC9E8, 0xB7C3, 0xBEF7, 0xD6A4, -/* 3540 */ 0xDAAC, 0xDAAD, 0xC6C0, 0xD7E7, 0xCAB6, 0xD79C, 0xD5A9, 0xCBDF, -/* 3548 */ 0xD5EF, 0xDAAE, 0xD6DF, 0xB4CA, 0xDAB0, 0xDAAF, 0xD79D, 0xD2EB, -/* 3550 */ 0xDAB1, 0xDAB2, 0xDAB3, 0xCAD4, 0xDAB4, 0xCAAB, 0xDAB5, 0xDAB6, -/* 3558 */ 0xB3CF, 0xD6EF, 0xDAB7, 0xBBB0, 0xB5AE, 0xDAB8, 0xDAB9, 0xB9EE, -/* 3560 */ 0xD1AF, 0xD2E8, 0xDABA, 0xB8C3, 0xCFEA, 0xB2EF, 0xDABB, 0xDABC, -/* 3568 */ 0xD79E, 0xBDEB, 0xCEDC, 0xD3EF, 0xDABD, 0xCEF3, 0xDABE, 0xD3D5, -/* 3570 */ 0xBBE5, 0xDABF, 0xCBB5, 0xCBD0, 0xDAC0, 0xC7EB, 0xD6EE, 0xDAC1, -/* 3578 */ 0xC5B5, 0xB6C1, 0xDAC2, 0xB7CC, 0xBFCE, 0xDAC3, 0xDAC4, 0xCBAD, -/* 3580 */ 0xDAC5, 0xB5F7, 0xDAC6, 0xC1C2, 0xD7BB, 0xDAC7, 0xCCB8, 0xD79F, -/* 3588 */ 0xD2EA, 0xC4B1, 0xDAC8, 0xB5FD, 0xBBD1, 0xDAC9, 0xD0B3, 0xDACA, -/* 3590 */ 0xDACB, 0xCEBD, 0xDACC, 0xDACD, 0xDACE, 0xB2F7, 0xDAD1, 0xDACF, -/* 3598 */ 0xD1E8, 0xDAD0, 0xC3D5, 0xDAD2, 0xD7A0, 0xDAD3, 0xDAD4, 0xDAD5, -/* 35A0 */ 0xD0BB, 0xD2A5, 0xB0F9, 0xDAD6, 0xC7AB, 0xDAD7, 0xBDF7, 0xC3A1, -/* 35A8 */ 0xDAD8, 0xDAD9, 0xC3FD, 0xCCB7, 0xDADA, 0xDADB, 0xC0BE, 0xC6D7, -/* 35B0 */ 0xDADC, 0xDADD, 0xC7B4, 0xDADE, 0xDADF, 0xB9C8, 0xFFFD, 0xFFFD, -/* 35B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBED, -/* 35C0 */ 0xD849, 0xD84A, 0xD84B, 0xD84C, 0xB6B9, 0xF4F8, 0xD84D, 0xF4F9, -/* 35C8 */ 0xD84E, 0xD84F, 0xCDE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF5B9, 0xD858, 0xD859, 0xD85A, 0xD85B, -/* 35D8 */ 0xEBE0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCFF3, -/* 35E0 */ 0xBBBF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35E8 */ 0xBAC0, 0xD4A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35F0 */ 0xFFFD, 0xE1D9, 0xD870, 0xD871, 0xD872, 0xD873, 0xF5F4, 0xB1AA, -/* 35F8 */ 0xB2F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3600 */ 0xF5F5, 0xD87B, 0xD87C, 0xF5F7, 0xD87D, 0xD87E, 0xD880, 0xBAD1, -/* 3608 */ 0xF5F6, 0xD881, 0xC3B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3610 */ 0xFFFD, 0xFFFD, 0xF5F9, 0xD889, 0xD88A, 0xD88B, 0xF5F8, 0xB1B4, -/* 3618 */ 0xD5EA, 0xB8BA, 0xDA4F, 0xB9B1, 0xB2C6, 0xD4F0, 0xCFCD, 0xB0DC, -/* 3620 */ 0xD5CB, 0xBBF5, 0xD6CA, 0xB7B7, 0xCCB0, 0xC6B6, 0xB1E1, 0xB9BA, -/* 3628 */ 0xD6FC, 0xB9E1, 0xB7A1, 0xBCFA, 0xEADA, 0xEADB, 0xCCF9, 0xB9F3, -/* 3630 */ 0xEADC, 0xB4FB, 0xC3B3, 0xB7D1, 0xBAD8, 0xEADD, 0xD4F4, 0xEADE, -/* 3638 */ 0xBCD6, 0xBBDF, 0xEADF, 0xC1DE, 0xC2B8, 0xD4DF, 0xD7CA, 0xEAE0, -/* 3640 */ 0xEAE1, 0xEAE4, 0xEAE2, 0xEAE3, 0xC9DE, 0xB8B3, 0xB6C4, 0xEAE5, -/* 3648 */ 0xCAEA, 0xC9CD, 0xB4CD, 0xDA50, 0xDA51, 0xE2D9, 0xC5E2, 0xEAE6, -/* 3650 */ 0xC0B5, 0xDA52, 0xD7B8, 0xEAE7, 0xD7AC, 0xC8FC, 0xD8D3, 0xD8CD, -/* 3658 */ 0xD4DE, 0xDA53, 0xD4F9, 0xC9C4, 0xD3AE, 0xB8D3, 0xB3E0, 0xDA54, -/* 3660 */ 0xC9E2, 0xF4F6, 0xDA55, 0xDA56, 0xDA57, 0xBAD5, 0xDA58, 0xF4F7, -/* 3668 */ 0xDA59, 0xDA5A, 0xD7DF, 0xDA5B, 0xDA5C, 0xF4F1, 0xB8B0, 0xD5D4, -/* 3670 */ 0xB8CF, 0xC6F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB3C3, 0xDA66, 0xDA67, 0xF4F2, 0xB3AC, -/* 3680 */ 0xDA68, 0xDA69, 0xDA6A, 0xDA6B, 0xD4BD, 0xC7F7, 0xDA6C, 0xDA6D, -/* 3688 */ 0xDA6E, 0xDA6F, 0xDA70, 0xF4F4, 0xDA71, 0xDA72, 0xF4F3, 0xFFFD, -/* 3690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3698 */ 0xFFFD, 0xCCCB, 0xDA7D, 0xDA7E, 0xDA80, 0xC8A4, 0xF4F5, 0xDA8E, -/* 36A0 */ 0xD7E3, 0xC5BF, 0xF5C0, 0xDA8F, 0xDA90, 0xF5BB, 0xDA91, 0xF5C3, -/* 36A8 */ 0xDA92, 0xF5C2, 0xDA93, 0xD6BA, 0xF5C1, 0xDA94, 0xDA95, 0xDA96, -/* 36B0 */ 0xD4BE, 0xF5C4, 0xDA97, 0xF5CC, 0xDA98, 0xDA99, 0xDA9A, 0xDA9B, -/* 36B8 */ 0xB0CF, 0xB5F8, 0xDA9C, 0xF5C9, 0xF5CA, 0xDA9D, 0xC5DC, 0xDA9E, -/* 36C0 */ 0xDA9F, 0xDAA0, 0xDB40, 0xF5C5, 0xF5C6, 0xDB41, 0xDB42, 0xF5C7, -/* 36C8 */ 0xF5CB, 0xDB43, 0xBEE0, 0xF5C8, 0xB8FA, 0xDB44, 0xDB45, 0xDB46, -/* 36D0 */ 0xF5D0, 0xF5D3, 0xDB47, 0xDB48, 0xDB49, 0xBFE7, 0xDB4A, 0xB9F2, -/* 36D8 */ 0xF5BC, 0xF5CD, 0xDB4B, 0xDB4C, 0xC2B7, 0xDB4D, 0xDB4E, 0xDB4F, -/* 36E0 */ 0xCCF8, 0xDB50, 0xBCF9, 0xDB51, 0xF5CE, 0xF5CF, 0xF5D1, 0xB6E5, -/* 36E8 */ 0xF5D2, 0xDB52, 0xF5D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36F0 */ 0xFFFD, 0xFFFD, 0xF5BD, 0xDB5A, 0xDB5B, 0xDB5C, 0xF5D4, 0xD3BB, -/* 36F8 */ 0xDB5D, 0xB3EC, 0xDB5E, 0xDB5F, 0xCCA4, 0xDB60, 0xDB61, 0xDB62, -/* 3700 */ 0xDB63, 0xF5D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3708 */ 0xFFFD, 0xFFFD, 0xF5D7, 0xBEE1, 0xF5D8, 0xDB6C, 0xDB6D, 0xCCDF, -/* 3710 */ 0xF5DB, 0xDB6E, 0xDB6F, 0xDB70, 0xDB71, 0xDB72, 0xB2C8, 0xD7D9, -/* 3718 */ 0xDB73, 0xF5D9, 0xDB74, 0xF5DA, 0xF5DC, 0xDB75, 0xF5E2, 0xDB76, -/* 3720 */ 0xDB77, 0xDB78, 0xF5E0, 0xDB79, 0xDB7A, 0xDB7B, 0xF5DF, 0xF5DD, -/* 3728 */ 0xDB7C, 0xDB7D, 0xF5E1, 0xDB7E, 0xDB80, 0xF5DE, 0xF5E4, 0xF5E5, -/* 3730 */ 0xDB81, 0xCCE3, 0xDB82, 0xDB83, 0xE5BF, 0xB5B8, 0xF5E3, 0xF5E8, -/* 3738 */ 0xCCA3, 0xDB84, 0xDB85, 0xDB86, 0xDB87, 0xDB88, 0xF5E6, 0xF5E7, -/* 3740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5BE, 0xB1C4, -/* 3748 */ 0xDB9B, 0xDB9C, 0xF5BF, 0xDB9D, 0xDB9E, 0xB5C5, 0xB2E4, 0xDB9F, -/* 3750 */ 0xF5EC, 0xF5E9, 0xDBA0, 0xB6D7, 0xDC40, 0xF5ED, 0xDC41, 0xF5EA, -/* 3758 */ 0xDC42, 0xDC43, 0xDC44, 0xDC45, 0xDC46, 0xF5EB, 0xDC47, 0xDC48, -/* 3760 */ 0xB4DA, 0xDC49, 0xD4EA, 0xDC4A, 0xDC4B, 0xDC4C, 0xF5EE, 0xDC4D, -/* 3768 */ 0xB3F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3770 */ 0xF5EF, 0xF5F1, 0xDC55, 0xDC56, 0xDC57, 0xF5F0, 0xFFFD, 0xFFFD, -/* 3778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5F2, 0xDC5F, 0xF5F3, -/* 3780 */ 0xC9ED, 0xB9AA, 0xDC6C, 0xDC6D, 0xC7FB, 0xDC6E, 0xDC6F, 0xB6E3, -/* 3788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCC9, -/* 3790 */ 0xB3B5, 0xD4FE, 0xB9EC, 0xD0F9, 0xDE61, 0xE9ED, 0xD7AA, 0xE9EE, -/* 3798 */ 0xC2D6, 0xC8ED, 0xBAE4, 0xE9EF, 0xE9F0, 0xE9F1, 0xD6E1, 0xE9F2, -/* 37A0 */ 0xE9F3, 0xE9F5, 0xE9F4, 0xE9F6, 0xE9F7, 0xC7E1, 0xE9F8, 0xD4D8, -/* 37A8 */ 0xE9F9, 0xBDCE, 0xDE62, 0xE9FA, 0xE9FB, 0xBDCF, 0xE9FC, 0xB8A8, -/* 37B0 */ 0xC1BE, 0xE9FD, 0xB1B2, 0xBBD4, 0xB9F5, 0xE9FE, 0xDE63, 0xEAA1, -/* 37B8 */ 0xEAA2, 0xEAA3, 0xB7F8, 0xBCAD, 0xDE64, 0xCAE4, 0xE0CE, 0xD4AF, -/* 37C0 */ 0xCFBD, 0xD5B7, 0xEAA4, 0xD5DE, 0xEAA5, 0xD0C1, 0xB9BC, 0xDE65, -/* 37C8 */ 0xB4C7, 0xB1D9, 0xDE66, 0xDE67, 0xDE68, 0xC0B1, 0xDE69, 0xDE6A, -/* 37D0 */ 0xDE6B, 0xDE6C, 0xB1E6, 0xB1E7, 0xDE6D, 0xB1E8, 0xDE6E, 0xDE6F, -/* 37D8 */ 0xDE70, 0xDE71, 0xB3BD, 0xC8E8, 0xDE72, 0xDE73, 0xDE74, 0xDE75, -/* 37E0 */ 0xE5C1, 0xDE76, 0xDE77, 0xB1DF, 0xDE78, 0xDE79, 0xDE7A, 0xC1C9, -/* 37E8 */ 0xB4EF, 0xDE7B, 0xDE7C, 0xC7A8, 0xD3D8, 0xDE7D, 0xC6F9, 0xD1B8, -/* 37F0 */ 0xDE7E, 0xB9FD, 0xC2F5, 0xDE80, 0xDE81, 0xDE82, 0xDE83, 0xDE84, -/* 37F8 */ 0xD3AD, 0xDE85, 0xD4CB, 0xBDFC, 0xDE86, 0xE5C2, 0xB7B5, 0xE5C3, -/* 3800 */ 0xDE87, 0xDE88, 0xBBB9, 0xD5E2, 0xDE89, 0xBDF8, 0xD4B6, 0xCEA5, -/* 3808 */ 0xC1AC, 0xB3D9, 0xDE8A, 0xDE8B, 0xCCF6, 0xDE8C, 0xE5C6, 0xE5C4, -/* 3810 */ 0xE5C8, 0xDE8D, 0xE5CA, 0xE5C7, 0xB5CF, 0xC6C8, 0xDE8E, 0xB5FC, -/* 3818 */ 0xE5C5, 0xDE8F, 0xCAF6, 0xDE90, 0xDE91, 0xE5C9, 0xDE92, 0xDE93, -/* 3820 */ 0xDE94, 0xC3D4, 0xB1C5, 0xBCA3, 0xDE95, 0xDE96, 0xDE97, 0xD7B7, -/* 3828 */ 0xDE98, 0xDE99, 0xCDCB, 0xCBCD, 0xCACA, 0xCCD3, 0xE5CC, 0xE5CB, -/* 3830 */ 0xC4E6, 0xDE9A, 0xDE9B, 0xD1A1, 0xD1B7, 0xE5CD, 0xDE9C, 0xE5D0, -/* 3838 */ 0xDE9D, 0xCDB8, 0xD6F0, 0xE5CF, 0xB5DD, 0xDE9E, 0xCDBE, 0xDE9F, -/* 3840 */ 0xE5D1, 0xB6BA, 0xDEA0, 0xDF40, 0xCDA8, 0xB9E4, 0xDF41, 0xCAC5, -/* 3848 */ 0xB3D1, 0xCBD9, 0xD4EC, 0xE5D2, 0xB7EA, 0xDF42, 0xDF43, 0xDF44, -/* 3850 */ 0xE5CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5D5, -/* 3858 */ 0xB4FE, 0xE5D6, 0xDF4B, 0xDF4C, 0xDF4D, 0xDF4E, 0xDF4F, 0xE5D3, -/* 3860 */ 0xE5D4, 0xDF50, 0xD2DD, 0xDF51, 0xDF52, 0xC2DF, 0xB1C6, 0xDF53, -/* 3868 */ 0xD3E2, 0xDF54, 0xDF55, 0xB6DD, 0xCBEC, 0xDF56, 0xE5D7, 0xDF57, -/* 3870 */ 0xDF58, 0xD3F6, 0xDF59, 0xDF5A, 0xDF5B, 0xDF5C, 0xDF5D, 0xB1E9, -/* 3878 */ 0xDF5E, 0xB6F4, 0xE5DA, 0xE5D8, 0xE5D9, 0xB5C0, 0xDF5F, 0xDF60, -/* 3880 */ 0xDF61, 0xD2C5, 0xE5DC, 0xDF62, 0xDF63, 0xE5DE, 0xFFFD, 0xFFFD, -/* 3888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5DD, 0xC7B2, 0xDF6A, 0xD2A3, -/* 3890 */ 0xDF6B, 0xDF6C, 0xE5DB, 0xDF6D, 0xDF6E, 0xDF6F, 0xDF70, 0xD4E2, -/* 3898 */ 0xD5DA, 0xDF71, 0xDF72, 0xDF73, 0xDF74, 0xDF75, 0xE5E0, 0xD7F1, -/* 38A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5E1, -/* 38A8 */ 0xDF7D, 0xB1DC, 0xD1FB, 0xDF7E, 0xE5E2, 0xE5E4, 0xDF80, 0xDF81, -/* 38B0 */ 0xDF82, 0xDF83, 0xE5E3, 0xDF84, 0xDF85, 0xE5E5, 0xDF86, 0xDF87, -/* 38B8 */ 0xDF88, 0xDF89, 0xDF8A, 0xD2D8, 0xDF8B, 0xB5CB, 0xDF8C, 0xE7DF, -/* 38C0 */ 0xDF8D, 0xDAF5, 0xDF8E, 0xDAF8, 0xDF8F, 0xDAF6, 0xDF90, 0xDAF7, -/* 38C8 */ 0xDF91, 0xDF92, 0xDF93, 0xDAFA, 0xD0CF, 0xC4C7, 0xDF94, 0xDF95, -/* 38D0 */ 0xB0EE, 0xDF96, 0xDF97, 0xDF98, 0xD0B0, 0xDF99, 0xDAF9, 0xDF9A, -/* 38D8 */ 0xD3CA, 0xBAAA, 0xDBA2, 0xC7F1, 0xDF9B, 0xDAFC, 0xDAFB, 0xC9DB, -/* 38E0 */ 0xDAFD, 0xDF9C, 0xDBA1, 0xD7DE, 0xDAFE, 0xC1DA, 0xDF9D, 0xDF9E, -/* 38E8 */ 0xDBA5, 0xDF9F, 0xDFA0, 0xD3F4, 0xE040, 0xE041, 0xDBA7, 0xDBA4, -/* 38F0 */ 0xE042, 0xDBA8, 0xE043, 0xE044, 0xBDBC, 0xE045, 0xE046, 0xE047, -/* 38F8 */ 0xC0C9, 0xDBA3, 0xDBA6, 0xD6A3, 0xE048, 0xDBA9, 0xE049, 0xE04A, -/* 3900 */ 0xE04B, 0xDBAD, 0xE04C, 0xE04D, 0xE04E, 0xDBAE, 0xDBAC, 0xBAC2, -/* 3908 */ 0xE04F, 0xE050, 0xE051, 0xBFA4, 0xDBAB, 0xE052, 0xE053, 0xE054, -/* 3910 */ 0xDBAA, 0xD4C7, 0xB2BF, 0xE055, 0xE056, 0xDBAF, 0xE057, 0xB9F9, -/* 3918 */ 0xE058, 0xDBB0, 0xE059, 0xE05A, 0xE05B, 0xE05C, 0xB3BB, 0xE05D, -/* 3920 */ 0xE05E, 0xE05F, 0xB5A6, 0xE060, 0xE061, 0xE062, 0xE063, 0xB6BC, -/* 3928 */ 0xDBB1, 0xE064, 0xE065, 0xE066, 0xB6F5, 0xE067, 0xDBB2, 0xB1C9, -/* 3930 */ 0xE07C, 0xE07D, 0xE07E, 0xE080, 0xDBB4, 0xE081, 0xE082, 0xE083, -/* 3938 */ 0xDBB3, 0xDBB5, 0xDBB7, 0xE08F, 0xDBB6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBB8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDBB9, 0xE0A0, -/* 3950 */ 0xE140, 0xDBBA, 0xE141, 0xE142, 0xD3CF, 0xF4FA, 0xC7F5, 0xD7C3, -/* 3958 */ 0xC5E4, 0xF4FC, 0xF4FD, 0xF4FB, 0xE143, 0xBEC6, 0xE144, 0xE145, -/* 3960 */ 0xE146, 0xE147, 0xD0EF, 0xE148, 0xE149, 0xB7D3, 0xE14A, 0xE14B, -/* 3968 */ 0xD4CD, 0xCCAA, 0xE14C, 0xE14D, 0xF5A2, 0xF5A1, 0xBAA8, 0xF4FE, -/* 3970 */ 0xCBD6, 0xE14E, 0xE14F, 0xE150, 0xF5A4, 0xC0D2, 0xE151, 0xB3EA, -/* 3978 */ 0xE152, 0xCDAA, 0xF5A5, 0xF5A3, 0xBDB4, 0xF5A8, 0xE153, 0xF5A9, -/* 3980 */ 0xBDCD, 0xC3B8, 0xBFE1, 0xCBE1, 0xF5AA, 0xE154, 0xE155, 0xE156, -/* 3988 */ 0xF5A6, 0xF5A7, 0xC4F0, 0xE157, 0xE158, 0xE159, 0xE15A, 0xE15B, -/* 3990 */ 0xF5AC, 0xE15C, 0xB4BC, 0xE15D, 0xD7ED, 0xE15E, 0xB4D7, 0xF5AB, -/* 3998 */ 0xF5AE, 0xE15F, 0xE160, 0xF5AD, 0xF5AF, 0xD0D1, 0xFFFD, 0xFFFD, -/* 39A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3D1, 0xC8A9, 0xFFFD, -/* 39A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5B0, 0xF5B1, 0xFFFD, -/* 39B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF5B2, 0xE174, 0xE175, -/* 39B8 */ 0xF5B3, 0xF5B4, 0xF5B5, 0xE176, 0xE177, 0xE178, 0xE179, 0xF5B7, -/* 39C0 */ 0xF5B6, 0xE17A, 0xE17B, 0xE17C, 0xE17D, 0xF5B8, 0xE17E, 0xB2C9, -/* 39C8 */ 0xE18B, 0xD3D4, 0xCACD, 0xE18C, 0xC0EF, 0xD6D8, 0xD2B0, 0xC1BF, -/* 39D0 */ 0xE18D, 0xBDF0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8AA, 0xF6CA, 0xE5A0, 0xF6CB, -/* 39E0 */ 0xE69E, 0xE69F, 0xE6A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF7E9, 0xF6CE, 0xE87B, 0xE87C, 0xE87D, -/* 39F0 */ 0xE87E, 0xEEC4, 0xEEC5, 0xEEC6, 0xD5EB, 0xB6A4, 0xEEC8, 0xEEC7, -/* 39F8 */ 0xEEC9, 0xEECA, 0xC7A5, 0xEECB, 0xEECC, 0xE895, 0xB7B0, 0xB5F6, -/* 3A00 */ 0xEECD, 0xEECF, 0xE896, 0xEECE, 0xE897, 0xB8C6, 0xEED0, 0xEED1, -/* 3A08 */ 0xEED2, 0xB6DB, 0xB3AE, 0xD6D3, 0xC4C6, 0xB1B5, 0xB8D6, 0xEED3, -/* 3A10 */ 0xEED4, 0xD4BF, 0xC7D5, 0xBEFB, 0xCED9, 0xB9B3, 0xEED6, 0xEED5, -/* 3A18 */ 0xEED8, 0xEED7, 0xC5A5, 0xEED9, 0xEEDA, 0xC7AE, 0xEEDB, 0xC7AF, -/* 3A20 */ 0xEEDC, 0xB2A7, 0xEEDD, 0xEEDE, 0xEEDF, 0xEEE0, 0xEEE1, 0xD7EA, -/* 3A28 */ 0xEEE2, 0xEEE3, 0xBCD8, 0xEEE4, 0xD3CB, 0xCCFA, 0xB2AC, 0xC1E5, -/* 3A30 */ 0xEEE5, 0xC7A6, 0xC3AD, 0xE898, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE899, 0xEEED, 0xEEEE, 0xEEEF, 0xE89A, -/* 3A40 */ 0xE89B, 0xEEF0, 0xEEF1, 0xEEF2, 0xEEF4, 0xEEF3, 0xE89C, 0xEEF5, -/* 3A48 */ 0xCDAD, 0xC2C1, 0xEEF6, 0xEEF7, 0xEEF8, 0xD5A1, 0xEEF9, 0xCFB3, -/* 3A50 */ 0xEEFA, 0xEEFB, 0xE89D, 0xEEFC, 0xEEFD, 0xEFA1, 0xEEFE, 0xEFA2, -/* 3A58 */ 0xB8F5, 0xC3FA, 0xEFA3, 0xEFA4, 0xBDC2, 0xD2BF, 0xB2F9, 0xEFA5, -/* 3A60 */ 0xEFA6, 0xEFA7, 0xD2F8, 0xEFA8, 0xD6FD, 0xEFA9, 0xC6CC, 0xE89E, -/* 3A68 */ 0xEFAA, 0xEFAB, 0xC1B4, 0xEFAC, 0xCFFA, 0xCBF8, 0xEFAE, 0xEFAD, -/* 3A70 */ 0xB3FA, 0xB9F8, 0xEFAF, 0xEFB0, 0xD0E2, 0xEFB1, 0xEFB2, 0xB7E6, -/* 3A78 */ 0xD0BF, 0xEFB3, 0xEFB4, 0xEFB5, 0xC8F1, 0xCCE0, 0xEFB6, 0xEFB7, -/* 3A80 */ 0xEFB8, 0xEFB9, 0xEFBA, 0xD5E0, 0xEFBB, 0xB4ED, 0xC3AA, 0xEFBC, -/* 3A88 */ 0xE89F, 0xEFBD, 0xEFBE, 0xEFBF, 0xE8A0, 0xCEFD, 0xEFC0, 0xC2E0, -/* 3A90 */ 0xB4B8, 0xD7B6, 0xBDF5, 0xE940, 0xCFC7, 0xEFC3, 0xEFC1, 0xEFC2, -/* 3A98 */ 0xEFC4, 0xB6A7, 0xBCFC, 0xBEE2, 0xC3CC, 0xEFC5, 0xEFC6, 0xE941, -/* 3AA0 */ 0xEFC7, 0xEFCF, 0xEFC8, 0xEFC9, 0xEFCA, 0xC7C2, 0xEFF1, 0xB6CD, -/* 3AA8 */ 0xEFCB, 0xE942, 0xEFCC, 0xEFCD, 0xB6C6, 0xC3BE, 0xEFCE, 0xE943, -/* 3AB0 */ 0xEFD0, 0xEFD1, 0xEFD2, 0xD5F2, 0xE944, 0xEFD3, 0xC4F7, 0xE945, -/* 3AB8 */ 0xEFD4, 0xC4F8, 0xEFD5, 0xEFD6, 0xB8E4, 0xB0F7, 0xEFD7, 0xEFD8, -/* 3AC0 */ 0xEFD9, 0xE946, 0xEFDA, 0xEFDB, 0xEFDC, 0xEFDD, 0xE947, 0xEFDE, -/* 3AC8 */ 0xBEB5, 0xEFE1, 0xEFDF, 0xEFE0, 0xE948, 0xEFE2, 0xEFE3, 0xC1CD, -/* 3AD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AD8 */ 0xFFFD, 0xC0D8, 0xE949, 0xEFED, 0xC1AD, 0xEFEE, 0xEFEF, 0xEFF0, -/* 3AE0 */ 0xE94A, 0xE94B, 0xCFE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB3A4, 0xC3C5, 0xE3C5, 0xC9C1, 0xE3C6, -/* 3AF0 */ 0xEA5C, 0xB1D5, 0xCECA, 0xB4B3, 0xC8F2, 0xE3C7, 0xCFD0, 0xE3C8, -/* 3AF8 */ 0xBCE4, 0xE3C9, 0xE3CA, 0xC3C6, 0xD5A2, 0xC4D6, 0xB9EB, 0xCEC5, -/* 3B00 */ 0xE3CB, 0xC3F6, 0xE3CC, 0xEA5D, 0xB7A7, 0xB8F3, 0xBAD2, 0xE3CD, -/* 3B08 */ 0xE3CE, 0xD4C4, 0xE3CF, 0xEA5E, 0xE3D0, 0xD1CB, 0xE3D1, 0xE3D2, -/* 3B10 */ 0xE3D3, 0xE3D4, 0xD1D6, 0xE3D5, 0xB2FB, 0xC0BB, 0xE3D6, 0xEA5F, -/* 3B18 */ 0xC0AB, 0xE3D7, 0xE3D8, 0xE3D9, 0xEA60, 0xE3DA, 0xE3DB, 0xEA61, -/* 3B20 */ 0xB8B7, 0xDAE2, 0xEA62, 0xB6D3, 0xEA63, 0xDAE4, 0xDAE3, 0xFFFD, -/* 3B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAE6, 0xEA6B, -/* 3B30 */ 0xEA6C, 0xEA6D, 0xC8EE, 0xEA6E, 0xEA6F, 0xDAE5, 0xB7C0, 0xD1F4, -/* 3B38 */ 0xD2F5, 0xD5F3, 0xBDD7, 0xEA70, 0xEA71, 0xEA72, 0xEA73, 0xD7E8, -/* 3B40 */ 0xDAE8, 0xDAE7, 0xEA74, 0xB0A2, 0xCDD3, 0xEA75, 0xDAE9, 0xEA76, -/* 3B48 */ 0xB8BD, 0xBCCA, 0xC2BD, 0xC2A4, 0xB3C2, 0xDAEA, 0xEA77, 0xC2AA, -/* 3B50 */ 0xC4B0, 0xBDB5, 0xEA78, 0xEA79, 0xCFDE, 0xEA7A, 0xEA7B, 0xEA7C, -/* 3B58 */ 0xDAEB, 0xC9C2, 0xEA7D, 0xEA7E, 0xEA80, 0xEA81, 0xEA82, 0xB1DD, -/* 3B60 */ 0xEA83, 0xEA84, 0xEA85, 0xDAEC, 0xEA86, 0xB6B8, 0xD4BA, 0xEA87, -/* 3B68 */ 0xB3FD, 0xEA88, 0xEA89, 0xDAED, 0xD4C9, 0xCFD5, 0xC5E3, 0xEA8A, -/* 3B70 */ 0xDAEE, 0xEA8B, 0xEA8C, 0xEA8D, 0xEA8E, 0xEA8F, 0xDAEF, 0xEA90, -/* 3B78 */ 0xDAF0, 0xC1EA, 0xCCD5, 0xCFDD, 0xD3E7, 0xC2A1, 0xEA9E, 0xDAF1, -/* 3B80 */ 0xEA9F, 0xEAA0, 0xCBE5, 0xEB40, 0xDAF2, 0xEB41, 0xCBE6, 0xD2FE, -/* 3B88 */ 0xEB42, 0xEB43, 0xEB44, 0xB8F4, 0xEB45, 0xEB46, 0xDAF3, 0xB0AF, -/* 3B90 */ 0xCFB6, 0xEB47, 0xEB48, 0xD5CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCBED, 0xFFFD, -/* 3BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xDAF4, -/* 3BA8 */ 0xEB5B, 0xEB5C, 0xE3C4, 0xEB5D, 0xEB5E, 0xC1A5, 0xEB5F, 0xEB60, -/* 3BB0 */ 0xF6BF, 0xEB61, 0xEB62, 0xF6C0, 0xF6C1, 0xC4D1, 0xEB63, 0xC8B8, -/* 3BB8 */ 0xD1E3, 0xEB64, 0xEB65, 0xD0DB, 0xD1C5, 0xBCAF, 0xB9CD, 0xEB66, -/* 3BC0 */ 0xEFF4, 0xEB67, 0xEB68, 0xB4C6, 0xD3BA, 0xF6C2, 0xB3FB, 0xEB69, -/* 3BC8 */ 0xEB6A, 0xF6C3, 0xEB6B, 0xEB6C, 0xB5F1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF6C5, -/* 3BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3EA, -/* 3BE0 */ 0xF6A7, 0xD1A9, 0xEB7E, 0xEB80, 0xEB81, 0xEB82, 0xF6A9, 0xEB83, -/* 3BE8 */ 0xEB84, 0xEB85, 0xF6A8, 0xEB86, 0xEB87, 0xC1E3, 0xC0D7, 0xEB88, -/* 3BF0 */ 0xB1A2, 0xEB89, 0xEB8A, 0xEB8B, 0xEB8C, 0xCEED, 0xEB8D, 0xD0E8, -/* 3BF8 */ 0xF6AB, 0xEB8E, 0xEB8F, 0xCFF6, 0xEB90, 0xF6AA, 0xD5F0, 0xF6AC, -/* 3C00 */ 0xC3B9, 0xEB91, 0xEB92, 0xEB93, 0xBBF4, 0xF6AE, 0xF6AD, 0xEB94, -/* 3C08 */ 0xEB95, 0xEB96, 0xC4DE, 0xEB97, 0xEB98, 0xC1D8, 0xEB99, 0xEB9A, -/* 3C10 */ 0xEB9B, 0xEB9C, 0xEB9D, 0xCBAA, 0xEB9E, 0xCFBC, 0xEB9F, 0xEBA0, -/* 3C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C20 */ 0xFFFD, 0xF6AF, 0xEC49, 0xEC4A, 0xF6B0, 0xEC4B, 0xEC4C, 0xF6B1, -/* 3C28 */ 0xEC4D, 0xC2B6, 0xEC4E, 0xEC4F, 0xEC50, 0xEC51, 0xEC52, 0xB0D4, -/* 3C30 */ 0xC5F9, 0xEC53, 0xEC54, 0xEC55, 0xEC56, 0xF6B2, 0xC7E0, 0xF6A6, -/* 3C38 */ 0xEC6A, 0xEC6B, 0xBEB8, 0xEC6C, 0xEC6D, 0xBEB2, 0xEC6E, 0xB5E5, -/* 3C40 */ 0xEC6F, 0xEC70, 0xB7C7, 0xEC71, 0xBFBF, 0xC3D2, 0xC3E6, 0xEC72, -/* 3C48 */ 0xEC73, 0xD8CC, 0xEC74, 0xEC75, 0xEC76, 0xB8EF, 0xFFFD, 0xFFFD, -/* 3C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEC80, 0xBDF9, -/* 3C58 */ 0xD1A5, 0xEC81, 0xB0D0, 0xEC82, 0xEC83, 0xEC84, 0xEC85, 0xEC86, -/* 3C60 */ 0xF7B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C68 */ 0xFFFD, 0xF7B1, 0xEC8F, 0xEC90, 0xEC91, 0xEC92, 0xEC93, 0xD0AC, -/* 3C70 */ 0xEC94, 0xB0B0, 0xEC95, 0xEC96, 0xEC97, 0xF7B2, 0xF7B3, 0xEC98, -/* 3C78 */ 0xF7B4, 0xEC99, 0xEC9A, 0xEC9B, 0xC7CA, 0xEC9C, 0xEC9D, 0xEC9E, -/* 3C80 */ 0xEC9F, 0xECA0, 0xED40, 0xED41, 0xBECF, 0xED42, 0xED43, 0xF7B7, -/* 3C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7B6, -/* 3C90 */ 0xED4B, 0xB1DE, 0xED4C, 0xF7B5, 0xED4D, 0xED4E, 0xF7B8, 0xED4F, -/* 3C98 */ 0xF7B9, 0xED80, 0xED81, 0xCEA4, 0xC8CD, 0xED82, 0xBAAB, 0xE8B8, -/* 3CA0 */ 0xE8B9, 0xE8BA, 0xBEC2, 0xED83, 0xED84, 0xED85, 0xED86, 0xED87, -/* 3CA8 */ 0xD2F4, 0xED88, 0xD4CF, 0xC9D8, 0xD2B3, 0xB6A5, 0xC7EA, 0xF1FC, -/* 3CB0 */ 0xCFEE, 0xCBB3, 0xD0EB, 0xE7EF, 0xCDE7, 0xB9CB, 0xB6D9, 0xF1FD, -/* 3CB8 */ 0xB0E4, 0xCBCC, 0xF1FE, 0xD4A4, 0xC2AD, 0xC1EC, 0xC6C4, 0xBEB1, -/* 3CC0 */ 0xF2A1, 0xBCD5, 0xEF46, 0xF2A2, 0xF2A3, 0xEF47, 0xF2A4, 0xD2C3, -/* 3CC8 */ 0xC6B5, 0xEF48, 0xCDC7, 0xF2A5, 0xEF49, 0xD3B1, 0xBFC5, 0xCCE2, -/* 3CD0 */ 0xEF4A, 0xF2A6, 0xF2A7, 0xD1D5, 0xB6EE, 0xF2A8, 0xF2A9, 0xB5DF, -/* 3CD8 */ 0xF2AA, 0xF2AB, 0xEF4B, 0xB2FC, 0xF2AC, 0xF2AD, 0xC8A7, 0xB7E7, -/* 3CE0 */ 0xEF72, 0xEF73, 0xECA9, 0xECAA, 0xECAB, 0xEF74, 0xECAC, 0xEF75, -/* 3CE8 */ 0xEF76, 0xC6AE, 0xECAD, 0xECAE, 0xEF77, 0xEF78, 0xEF79, 0xB7C9, -/* 3CF0 */ 0xCAB3, 0xEF7A, 0xEF7B, 0xEF7C, 0xEF7D, 0xEF7E, 0xEF80, 0xEF81, -/* 3CF8 */ 0xE2B8, 0xF7CF, 0xF040, 0xF041, 0xF042, 0xF043, 0xF044, 0xF7D0, -/* 3D00 */ 0xF045, 0xF046, 0xB2CD, 0xF7D3, 0xF7D2, 0xE2BB, 0xF097, 0xBCA2, -/* 3D08 */ 0xF098, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7B9, -/* 3D10 */ 0xD2FB, 0xBDA4, 0xCACE, 0xB1A5, 0xCBC7, 0xF099, 0xE2C2, 0xB6FC, -/* 3D18 */ 0xC8C4, 0xE2C3, 0xF09A, 0xF09B, 0xBDC8, 0xF09C, 0xB1FD, 0xE2C4, -/* 3D20 */ 0xF09D, 0xB6F6, 0xE2C5, 0xC4D9, 0xF09E, 0xF09F, 0xE2C6, 0xCFDA, -/* 3D28 */ 0xB9DD, 0xE2C7, 0xC0A1, 0xF0A0, 0xE2C8, 0xB2F6, 0xF140, 0xE2C9, -/* 3D30 */ 0xF141, 0xC1F3, 0xE2CA, 0xE2CB, 0xC2F8, 0xE2CC, 0xE2CD, 0xE2CE, -/* 3D38 */ 0xCAD7, 0xD8B8, 0xD9E5, 0xCFE3, 0xF0A5, 0xF14D, 0xF14E, 0xDCB0, -/* 3D40 */ 0xC2ED, 0xD4A6, 0xCDD4, 0xD1B1, 0xB3DB, 0xC7FD, 0xF352, 0xB2B5, -/* 3D48 */ 0xC2BF, 0xE6E0, 0xCABB, 0xE6E1, 0xE6E2, 0xBED4, 0xE6E3, 0xD7A4, -/* 3D50 */ 0xCDD5, 0xE6E5, 0xBCDD, 0xE6E4, 0xE6E6, 0xE6E7, 0xC2EE, 0xF353, -/* 3D58 */ 0xBDBE, 0xE6E8, 0xC2E6, 0xBAA7, 0xE6E9, 0xF354, 0xE6EA, 0xB3D2, -/* 3D60 */ 0xD1E9, 0xF355, 0xF356, 0xBFA5, 0xE6EB, 0xC6EF, 0xE6EC, 0xE6ED, -/* 3D68 */ 0xF357, 0xF358, 0xE6EE, 0xC6AD, 0xE6EF, 0xF359, 0xC9A7, 0xE6F0, -/* 3D70 */ 0xE6F1, 0xE6F2, 0xE5B9, 0xE6F3, 0xE6F4, 0xC2E2, 0xE6F5, 0xE6F6, -/* 3D78 */ 0xD6E8, 0xE6F7, 0xF35A, 0xE6F8, 0xB9C7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7BB, 0xF7BA, 0xF362, 0xF363, -/* 3D88 */ 0xF364, 0xF365, 0xF7BE, 0xF7BC, 0xBAA1, 0xF366, 0xF7BF, 0xF367, -/* 3D90 */ 0xF7C0, 0xF368, 0xF369, 0xF36A, 0xF7C2, 0xF7C1, 0xF7C4, 0xF36B, -/* 3D98 */ 0xF36C, 0xF7C3, 0xF36D, 0xF36E, 0xF36F, 0xF370, 0xF371, 0xF7C5, -/* 3DA0 */ 0xF7C6, 0xF372, 0xF373, 0xF374, 0xF375, 0xF7C7, 0xF376, 0xCBE8, -/* 3DA8 */ 0xF377, 0xF378, 0xF379, 0xF37A, 0xB8DF, 0xF37B, 0xF37C, 0xF37D, -/* 3DB0 */ 0xF37E, 0xF380, 0xF381, 0xF7D4, 0xF382, 0xF7D5, 0xF383, 0xF384, -/* 3DB8 */ 0xF385, 0xF386, 0xF7D6, 0xF387, 0xF388, 0xF389, 0xF38A, 0xF7D8, -/* 3DC0 */ 0xF38B, 0xF7DA, 0xF38C, 0xF7D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7DB, 0xF396, 0xF7D9, -/* 3DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD7D7, -/* 3DD8 */ 0xF39E, 0xF39F, 0xF3A0, 0xF440, 0xF7DC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xF7DD, 0xF447, 0xF448, 0xF449, 0xF7DE, -/* 3DE8 */ 0xF7DF, 0xF455, 0xF456, 0xF457, 0xF7E0, 0xDBCB, 0xF463, 0xF464, -/* 3DF0 */ 0xD8AA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DF8 */ 0xFFFD, 0xE5F7, 0xB9ED, 0xF46D, 0xF46E, 0xF46F, 0xF470, 0xBFFD, -/* 3E00 */ 0xBBEA, 0xF7C9, 0xC6C7, 0xF7C8, 0xF471, 0xF7CA, 0xF7CC, 0xF7CB, -/* 3E08 */ 0xF472, 0xF473, 0xF474, 0xF7CD, 0xF475, 0xCEBA, 0xF476, 0xF7CE, -/* 3E10 */ 0xF477, 0xF478, 0xC4A7, 0xF780, 0xD3E3, 0xF781, 0xF782, 0xF6CF, -/* 3E18 */ 0xF783, 0xC2B3, 0xF6D0, 0xF784, 0xF785, 0xF6D1, 0xF6D2, 0xF6D3, -/* 3E20 */ 0xF6D4, 0xF786, 0xF787, 0xF6D6, 0xF788, 0xB1AB, 0xF6D7, 0xF789, -/* 3E28 */ 0xF6D8, 0xF6D9, 0xF6DA, 0xF78A, 0xF6DB, 0xF6DC, 0xF78B, 0xF78C, -/* 3E30 */ 0xF78D, 0xF78E, 0xF6DD, 0xF6DE, 0xCFCA, 0xF78F, 0xFFFD, 0xFFFD, -/* 3E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0F0, 0xF6E5, 0xF6E6, 0xF6E7, -/* 3E40 */ 0xF6E8, 0xF6E9, 0xF790, 0xF6EA, 0xF791, 0xF6EB, 0xF6EC, 0xF792, -/* 3E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E50 */ 0xBEA8, 0xF793, 0xF6F5, 0xF6F6, 0xF6F7, 0xF6F8, 0xF794, 0xF795, -/* 3E58 */ 0xF796, 0xF797, 0xF798, 0xC8FA, 0xF6F9, 0xF6FA, 0xF6FB, 0xF6FC, -/* 3E60 */ 0xF799, 0xF79A, 0xF6FD, 0xF6FE, 0xF7A1, 0xF7A2, 0xF7A3, 0xF7A4, -/* 3E68 */ 0xF7A5, 0xF79B, 0xF79C, 0xF7A6, 0xF7A7, 0xF7A8, 0xB1EE, 0xF7A9, -/* 3E70 */ 0xF7AA, 0xF7AB, 0xF79D, 0xF79E, 0xF7AC, 0xF7AD, 0xC1DB, 0xF7AE, -/* 3E78 */ 0xF79F, 0xF7A0, 0xF7AF, 0xC4F1, 0xF0AF, 0xBCA6, 0xF0B0, 0xC3F9, -/* 3E80 */ 0xFB5C, 0xC5B8, 0xD1BB, 0xFB5D, 0xF0B1, 0xF0B2, 0xF0B3, 0xF0B4, -/* 3E88 */ 0xF0B5, 0xD1BC, 0xFB5E, 0xD1EC, 0xFB5F, 0xF0B7, 0xF0B6, 0xD4A7, -/* 3E90 */ 0xFB60, 0xCDD2, 0xF0B8, 0xF0BA, 0xF0B9, 0xF0BB, 0xF0BC, 0xFB61, -/* 3E98 */ 0xFB62, 0xB8EB, 0xF0BD, 0xBAE8, 0xFB63, 0xF0BE, 0xF0BF, 0xBEE9, -/* 3EA0 */ 0xF0C0, 0xB6EC, 0xF0C1, 0xF0C2, 0xF0C3, 0xF0C4, 0xC8B5, 0xF0C5, -/* 3EA8 */ 0xF0C6, 0xFB64, 0xF0C7, 0xC5F4, 0xFB65, 0xF0C8, 0xFB66, 0xFB67, -/* 3EB0 */ 0xFB68, 0xF0C9, 0xFB69, 0xF0CA, 0xF7BD, 0xFB6A, 0xF0CB, 0xF0CC, -/* 3EB8 */ 0xF0CD, 0xFB6B, 0xF0CE, 0xFB6C, 0xFB6D, 0xFB6E, 0xFB6F, 0xF0CF, -/* 3EC0 */ 0xBAD7, 0xFB70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EC8 */ 0xFFFD, 0xF0D8, 0xFB71, 0xFB72, 0xD3A5, 0xF0D7, 0xFB73, 0xF0D9, -/* 3ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3ED8 */ 0xFFFD, 0xFFFD, 0xF5BA, 0xC2B9, 0xFB7E, 0xFB80, 0xF7E4, 0xFB81, -/* 3EE0 */ 0xFB82, 0xFB83, 0xFB84, 0xF7E5, 0xF7E6, 0xFB85, 0xFB86, 0xF7E7, -/* 3EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF7E8, 0xC2B4, -/* 3EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EF8 */ 0xFFFD, 0xF7EA, 0xFB96, 0xF7EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F00 */ 0xFFFD, 0xFFFD, 0xC2F3, 0xFB9D, 0xFB9E, 0xFB9F, 0xFBA0, 0xFFFD, -/* 3F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F10 */ 0xF4F0, 0xFC49, 0xFC4A, 0xFC4B, 0xF4EF, 0xFC4C, 0xFC4D, 0xC2E9, -/* 3F18 */ 0xFC4E, 0xF7E1, 0xF7E2, 0xFC4F, 0xFC50, 0xFC51, 0xFC52, 0xFC53, -/* 3F20 */ 0xBBC6, 0xFC54, 0xFC55, 0xFC56, 0xFC57, 0xD9E4, 0xFC58, 0xFC59, -/* 3F28 */ 0xFC5A, 0xCAF2, 0xC0E8, 0xF0A4, 0xFC5B, 0xBADA, 0xFC5C, 0xFC5D, -/* 3F30 */ 0xC7AD, 0xFC5E, 0xFC5F, 0xFC60, 0xC4AC, 0xFC61, 0xFC62, 0xF7EC, -/* 3F38 */ 0xF7ED, 0xF7EE, 0xFC63, 0xF7F0, 0xF7EF, 0xFC64, 0xF7F1, 0xFC65, -/* 3F40 */ 0xFC66, 0xF7F4, 0xFC67, 0xF7F3, 0xFC68, 0xF7F2, 0xF7F5, 0xFC69, -/* 3F48 */ 0xFC6A, 0xFC6B, 0xFC6C, 0xF7F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEDE9, 0xFC76, 0xEDEA, -/* 3F58 */ 0xEDEB, 0xFC77, 0xF6BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F60 */ 0xFFFD, 0xFFFD, 0xFC80, 0xFC81, 0xFC82, 0xFC83, 0xFC84, 0xF6BD, -/* 3F68 */ 0xFC85, 0xF6BE, 0xB6A6, 0xFC86, 0xD8BE, 0xFC87, 0xFC88, 0xB9C4, -/* 3F70 */ 0xFC89, 0xFC8A, 0xFC8B, 0xD8BB, 0xFC8C, 0xDCB1, 0xFFFD, 0xFFFD, -/* 3F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCAF3, 0xFC93, 0xF7F7, 0xFFFD, -/* 3F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F88 */ 0xF7F8, 0xFC9D, 0xFC9E, 0xF7F9, 0xFC9F, 0xFCA0, 0xFD40, 0xFD41, -/* 3F90 */ 0xFD42, 0xFD43, 0xFD44, 0xF7FB, 0xFD45, 0xF7FA, 0xFD46, 0xB1C7, -/* 3F98 */ 0xFD47, 0xF7FC, 0xF7FD, 0xFD48, 0xFD49, 0xFD4A, 0xFD4B, 0xFD4C, -/* 3FA0 */ 0xF7FE, 0xC6EB, 0xECB4, 0xB3DD, 0xF6B3, 0xFD86, 0xFD87, 0xF6B4, -/* 3FA8 */ 0xC1E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8A3, -/* 3FB0 */ 0xF6BB, 0xC1FA, 0xB9A8, 0xEDE8, 0xFD94, 0xFD95, 0xFD96, 0xB9EA, -/* 3FB8 */ 0xD9DF, 0xFD97, 0xFD98, 0xFD99, 0xFD9A, 0xFD9B, 0xA8BC, 0xA8BF, -/* 3FC0 */ 0xFD9F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FC8 */ 0xFFFD, 0xFFFD, 0xFDA0, 0xFE40, 0xFE41, 0xFE42, 0xFE43, 0xFFFD, -/* 3FD0 */ 0xFE44, 0xFFFD, 0xFE45, 0xFE46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFE47, -/* 3FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFE48, 0xFE49, -/* 3FE0 */ 0xFE4A, 0xFFFD, 0xFE4B, 0xFE4C, 0xFFFD, 0xFFFD, 0xFE4D, 0xFE4E, -/* 3FE8 */ 0xFE4F, 0xA955, 0xA6F2, 0xFFFD, 0xA6F4, 0xA6F5, 0xA6E0, 0xA6E1, -/* 3FF0 */ 0xA6F0, 0xA6F1, 0xA6E2, 0xA6E3, 0xA6EE, 0xA6EF, 0xA6E6, 0xA6E7, -/* 3FF8 */ 0xA6E4, 0xA6E5, 0xA6E8, 0xA6E9, 0xA6EA, 0xA6EB, 0xA972, 0xA973, -/* 4000 */ 0xA974, 0xA975, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xA980, 0xA981, 0xA982, 0xA983, -/* 4010 */ 0xA984, 0xFFFD, 0xA985, 0xA986, 0xA987, 0xA988, 0xA3A1, 0xA3A2, -/* 4018 */ 0xA3A3, 0xA1E7, 0xA1E9, 0xA1EA, 0xA956, 0xA3FE, 0xA957, 0xA3A4, -/* End of table Total Length = 0x4AB5 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/gb2312.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/gb2312.uf deleted file mode 100644 index 10d140f3962..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/gb2312.uf +++ /dev/null @@ -1,6133 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = 2621 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = 2632 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = 2641 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = 2652 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0410 - srcEnd = 0415 - destBegin = 2721 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0416 - srcEnd = 042F - destBegin = 2728 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0430 - srcEnd = 0435 - destBegin = 2751 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0436 - srcEnd = 044F - destBegin = 2758 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2160 - srcEnd = 216B - destBegin = 2271 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2460 - srcEnd = 2469 - destBegin = 2259 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2474 - srcEnd = 2487 - destBegin = 2245 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2488 - srcEnd = 249B - destBegin = 2231 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 2500 - srcEnd = 254B - destBegin = 2924 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 3008 - srcEnd = 300F - destBegin = 2134 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = 2421 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 30A1 - srcEnd = 30F6 - destBegin = 2521 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 3105 - srcEnd = 3129 - destBegin = 2845 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 3220 - srcEnd = 3229 - destBegin = 2265 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 7F21 - srcEnd = 7F27 - destBegin = 674A -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 94C8 - srcEnd = 94CE - destBegin = 6E66 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 9564 - srcEnd = 956C - destBegin = 6F64 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 9967 - srcEnd = 996C - destBegin = 623C -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 9C9E - srcEnd = 9CA3 - destBegin = 765F -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 9CB0 - srcEnd = 9CB7 - destBegin = 766D -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 9E66 - srcEnd = 9E6C - destBegin = 7050 -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 9F85 - srcEnd = 9F8A - destBegin = 7635 -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = FF05 - srcEnd = FF5D - destBegin = 2325 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 00A4 - srcEnd = 00B1 - mappingOffset = 0000 - Mapping = - 2168 FFFD FFFD 216C 2127 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2163 2140 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 00D7 - srcEnd = 0101 - mappingOffset = 000E - Mapping = - 2141 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2824 2822 FFFD FFFD FFFD FFFD FFFD - FFFD 2828 2826 283A FFFD 282C 282A FFFD - FFFD FFFD FFFD 2830 282E FFFD FFFD FFFD - 2142 FFFD 2834 2832 FFFD 2839 FFFD FFFD - FFFD FFFD 2821 -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 0113 - srcEnd = 011B - mappingOffset = 0039 - Mapping = - 2825 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2827 -End of Item 001D - -Begin of Item 001E - Format 2 - srcBegin = 012B - destBegin = 2829 -End of Item 001E - -Begin of Item 001F - Format 2 - srcBegin = 014D - destBegin = 282D -End of Item 001F - -Begin of Item 0020 - Format 2 - srcBegin = 016B - destBegin = 2831 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 01CE - srcEnd = 01DC - mappingOffset = 0042 - Mapping = - 2823 FFFD 282B FFFD 282F FFFD 2833 FFFD - 2835 FFFD 2836 FFFD 2837 FFFD 2838 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 02C7 - srcEnd = 02C9 - mappingOffset = 0051 - Mapping = - 2126 FFFD 2125 -End of Item 0022 - -Begin of Item 0023 - Format 2 - srcBegin = 0401 - destBegin = 2727 -End of Item 0023 - -Begin of Item 0024 - Format 2 - srcBegin = 0451 - destBegin = 2757 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 2015 - srcEnd = 203B - mappingOffset = 0054 - Mapping = - 212A FFFD FFFD 212E 212F FFFD FFFD 2130 - 2131 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 212D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 216B FFFD 2164 2165 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2179 -End of Item 0025 - -Begin of Item 0026 - Format 2 - srcBegin = 2103 - destBegin = 2166 -End of Item 0026 - -Begin of Item 0027 - Format 2 - srcBegin = 2116 - destBegin = 216D -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 2190 - srcEnd = 2193 - mappingOffset = 007B - Mapping = - 217B 217C 217A 217D -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 2208 - srcEnd = 224C - mappingOffset = 007F - Mapping = - 214A FFFD FFFD FFFD FFFD FFFD FFFD 2147 - FFFD 2146 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 214C FFFD FFFD 2158 215E FFFD - 214F FFFD FFFD FFFD FFFD 214E FFFD 2144 - 2145 2149 2148 2152 FFFD FFFD 2153 FFFD - FFFD FFFD FFFD FFFD 2160 215F 2143 214B - FFFD FFFD FFFD FFFD FFFD 2157 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2156 FFFD FFFD FFFD 2155 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 2260 - srcEnd = 226F - mappingOffset = 00C4 - Mapping = - 2159 2154 FFFD FFFD 215C 215D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 215A 215B -End of Item 002A - -Begin of Item 002B - Format 2 - srcBegin = 2299 - destBegin = 2151 -End of Item 002B - -Begin of Item 002C - Format 2 - srcBegin = 22A5 - destBegin = 214D -End of Item 002C - -Begin of Item 002D - Format 2 - srcBegin = 2312 - destBegin = 2150 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 25A0 - srcEnd = 25A1 - mappingOffset = 00D4 - Mapping = - 2176 2175 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 25B2 - srcEnd = 25B3 - mappingOffset = 00D6 - Mapping = - 2178 2177 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 25C6 - srcEnd = 25CF - mappingOffset = 00D8 - Mapping = - 2174 2173 FFFD FFFD FFFD 2170 FFFD FFFD - 2172 2171 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 2605 - srcEnd = 2606 - mappingOffset = 00E2 - Mapping = - 216F 216E -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 00E4 - Mapping = - 2162 FFFD 2161 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 3000 - srcEnd = 3017 - mappingOffset = 00E7 - Mapping = - 2121 2122 2123 2128 FFFD 2129 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 213E 213F FFFD 217E 2132 2133 213C 213D -End of Item 0033 - -Begin of Item 0034 - Format 2 - srcBegin = 30FB - destBegin = 2124 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 4E00 - srcEnd = 4FFE - mappingOffset = 00FF - Mapping = - 523B 3621 FFFD 465F FFFD FFFD FFFD 4D72 - 5549 487D 494F 4F42 5822 323B 536B FFFD - 5824 3373 FFFD 5728 4752 5827 4A40 FFFD - 4770 317B 5235 3454 362B 4B3F 5829 FFFD - FFFD FFFD 362A FFFD 413D 514F FFFD 4925 - 582D FFFD 3876 513E 635C 5650 FFFD FFFD - 3761 FFFD 342E FFFD 4159 FFFD 583C FFFD - 4D68 3524 4E2A 5677 FFFD 4076 3E59 582F - FFFD FFFD FFFD 444B FFFD 3E43 FFFD 5831 - 4334 5265 FFFD 562E 4E5A 5527 3A75 3726 - 4056 FFFD 4639 4552 4747 FFFD 3954 FFFD - 334B 5252 FFFD FFFD 583F 3E45 4672 5232 - 4F30 4F67 FFFD FFFD FFFD FFFD 4A69 FFFD - FFFD 5840 FFFD FFFD FFFD FFFD FFFD FFFD - 4272 4252 FFFD 4869 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 472C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 414B FFFD - 5368 5579 FFFD 4A42 367E 5821 535A 3F77 - FFFD 5446 3B25 5841 4E65 3E2E FFFD FFFD - 5828 FFFD 5147 5029 FFFD FFFD FFFD 583D - 596F 4D76 3F3A FFFD 3D3B 3A25 5260 327A - 3A60 4436 FFFD 4F6D 3E29 4D24 4141 FFFD - FFFD FFFD 4757 5971 FFFD 5974 FFFD FFFD - FFFD FFFD 484B 5869 FFFD FFFD FFFD 525A - 4A32 484A 586C 586A 5846 3D76 464D 3370 - FFFD 586B 3D71 3D69 FFFD 4854 3453 FFFD - FFFD 4258 FFFD 3256 5750 4A4B 4B7B 554C - 3836 4F49 FFFD FFFD FFFD 595A 5870 472A - FFFD 586E FFFD 347A 416E 5254 FFFD FFFD - 586D FFFD 5247 586F 4347 FFFD FFFD FFFD - 5176 FFFD 5659 5872 FFFD 5875 3C7E 3C5B - FFFD FFFD FFFD 484E FFFD 375D FFFD 3742 - FFFD 4673 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5878 5241 FFFD FFFD 4E69 3C3F 377C - 3725 505D FFFD FFFD FFFD FFFD FFFD 565A - 5345 3B6F 3B61 5871 FFFD FFFD 4921 4E30 - 342B FFFD 5873 FFFD 494B 5876 4257 5877 - FFFD FFFD 4E31 5879 FFFD FFFD FFFD 322E - 3940 FFFD 5923 FFFD 3069 FFFD 4166 FFFD - 496C FFFD 4B45 FFFD 4B46 5924 FFFD FFFD - FFFD FFFD FFFD 3568 FFFD FFFD 352B FFFD - FFFD FFFD FFFD FFFD FFFD 4E3B 354D 5721 - 5774 5353 FFFD 4C65 FFFD 3A4E FFFD 5922 - 595C 5360 587D 3770 5777 587E 587A 5921 - 4463 FFFD FFFD 5336 5874 595D FFFD 587B - FFFD 4565 FFFD FFFD 4050 FFFD FFFD 5170 - 305B FFFD FFFD 3C51 5926 FFFD 5925 FFFD - FFFD FFFD FFFD 592C 592E FFFD 592B 4A39 - FFFD FFFD FFFD 5929 5636 FFFD FFFD FFFD - 335E 5928 FFFD 407D FFFD 4A4C FFFD 592A - FFFD 5927 FFFD FFFD 5930 FFFD FFFD 3631 - FFFD FFFD FFFD 3929 FFFD 5240 FFFD FFFD - 4F40 FFFD FFFD 4242 FFFD 3D44 556C 3260 - 4748 3F6B 592D FFFD 592F FFFD 4E6A 3A6E - FFFD FFFD FFFD FFFD FFFD 4756 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3163 - FFFD FFFD FFFD 3459 366D 5934 FFFD FFFD - FFFD FFFD 3F21 FFFD FFFD FFFD 595E 474E - 407E 5938 FFFD FFFD FFFD FFFD FFFD 4B57 - 377D FFFD 5935 FFFD 5937 3123 5361 5939 - FFFD 5045 FFFD 5936 FFFD FFFD 5931 FFFD - 5932 4129 5933 FFFD FFFD 3C73 505E 3829 - FFFD 3E63 FFFD 593D FFFD FFFD FFFD FFFD - 593A FFFD 3033 FFFD FFFD FFFD 5942 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 500C - srcEnd = 502E - mappingOffset = 02FE - Mapping = - 5944 3136 FFFD 593F FFFD FFFD 3539 FFFD - 3E73 FFFD FFFD FFFD 4C48 3A72 5250 FFFD - 5943 FFFD FFFD 3D68 FFFD 332B FFFD FFFD - FFFD 5945 3E6B FFFD 5946 593B 445F FFFD - 593E 5941 5940 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 503A - srcEnd = 508D - mappingOffset = 0321 - Mapping = - 552E FFFD 5635 FFFD 4763 FFFD FFFD FFFD - FFFD 5948 FFFD FFFD FFFD 3C59 594A FFFD - FFFD FFFD 593C FFFD 594B 462B FFFD FFFD - FFFD FFFD FFFD 5949 FFFD FFFD FFFD FFFD - 5776 FFFD 4D23 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3D21 FFFD FFFD FFFD FFFD - FFFD FFFD 594C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 453C 4D35 FFFD FFFD - FFFD 594D FFFD FFFD 5947 3325 3F7E FFFD - FFFD FFFD FFFD 3835 FFFD FFFD 407C FFFD - FFFD FFFD FFFD 3078 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 50A3 - srcEnd = 50BB - mappingOffset = 0375 - Mapping = - 3476 FFFD 594E FFFD 594F 3422 5950 FFFD - FFFD 345F FFFD FFFD FFFD FFFD FFFD 3041 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5951 - 4935 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 50CF - srcEnd = 50DA - mappingOffset = 038E - Mapping = - 4F71 FFFD FFFD FFFD FFFD FFFD FFFD 5952 - FFFD FFFD FFFD 4145 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 50E6 - srcEnd = 5112 - mappingOffset = 039A - Mapping = - 5956 492E FFFD FFFD FFFD FFFD 5955 5954 - 5957 FFFD FFFD FFFD FFFD 4B5B FFFD 3D29 - FFFD FFFD FFFD FFFD FFFD 4627 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5953 5958 FFFD FFFD FFFD 5959 FFFD FFFD - FFFD FFFD FFFD FFFD 4865 -End of Item 003A - -Begin of Item 003B - Format 2 - srcBegin = 5121 - destBegin = 405C -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 513F - srcEnd = 52E4 - mappingOffset = 03C7 - Mapping = - 3679 5823 544A FFFD 542A 5056 3364 5557 - FFFD 4F48 3962 FFFD 3F4B FFFD 4362 FFFD - FFFD FFFD 3652 FFFD FFFD 4D43 596E 5970 - FFFD FFFD FFFD 3533 FFFD 3635 FFFD FFFD - FFFD FFFD FFFD 3E24 FFFD FFFD 486B FFFD - FFFD 482B FFFD FFFD 304B 392B 4179 5962 - FFFD 403C 3932 FFFD 3958 504B 3178 4664 - 3E5F 3564 5748 FFFD 5178 3C66 4A5E FFFD - FFFD 3C3D 5966 5867 FFFD FFFD 445A FFFD - FFFD 3854 483D FFFD FFFD 3261 5459 FFFD - FFFD FFFD FFFD 4330 FFFD FFFD 4361 5A22 - 485F FFFD 5034 FFFD 3E7C 4529 FFFD FFFD - FFFD 395A FFFD 5A23 FFFD 5429 5A24 FFFD - FFFD FFFD FFFD FFFD 597B 362C FFFD FFFD - 376B 3179 597C 3365 3E76 FFFD 3F76 5231 - 4064 FFFD FFFD FFFD 3633 597E 597D FFFD - FFFD 3E3B FFFD FFFD FFFD 4660 FFFD 573C - 5A21 FFFD 4139 FFFD 3572 4168 FFFD FFFD - 3C75 FFFD 3455 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 415D FFFD 447D FFFD - FFFD 3C38 3732 FFFD FFFD 376F FFFD FFFD - FFFD FFFD FFFD FFFD 596C FFFD 463E FFFD - 3F2D 3B4B FFFD FFFD 354A FFFD 5B49 5057 - FFFD 4D39 303C 3376 3B77 5B4A 3A2F FFFD - 5464 3536 3573 5856 4850 FFFD FFFD 3756 - 4750 5857 FFFD 3F2F FFFD FFFD 5B3B 5858 - FFFD FFFD 504C 3B2E FFFD FFFD FFFD 6B3E - 4150 4175 5472 3855 3434 FFFD 3375 FFFD - FFFD 493E FFFD FFFD FFFD 4550 FFFD FFFD - FFFD 4559 407B FFFD 3170 FFFD 5859 394E - FFFD 353D FFFD FFFD 585A FFFD FFFD 5646 - 4B22 482F 4932 344C 3F4C FFFD 3974 FFFD - 585B 585C 3667 3C41 4C6A FFFD FFFD FFFD - FFFD FFFD FFFD 4F77 FFFD 585D 4730 FFFD - FFFD 3950 3D23 FFFD FFFD 4C5E FFFD 464A - FFFD FFFD FFFD FFFD FFFD 5860 FFFD 585E - FFFD FFFD 585F FFFD FFFD FFFD 307E FFFD - 3E67 FFFD 4A23 3C74 FFFD FFFD FFFD FFFD - 3831 FFFD FFFD 386E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5862 FFFD - 3D4B FFFD 5864 5863 FFFD FFFD FFFD FFFD - FFFD 457C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5865 FFFD FFFD 5866 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4126 FFFD 4830 306C - 3926 3C53 4E71 5B3D 4153 FFFD FFFD FFFD - FFFD 362F 567A 452C 3D59 5B3E 5B3F FFFD - FFFD FFFD 4078 3E22 404D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5B40 - 4A46 FFFD FFFD FFFD 322A FFFD FFFD FFFD - 5342 FFFD 4363 FFFD 512B FFFD FFFD FFFD - FFFD 5B42 FFFD 4055 FFFD FFFD FFFD 5B43 - FFFD 3F31 FFFD FFFD FFFD FFFD FFFD FFFD - 443C FFFD FFFD FFFD FFFD 475A -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 52F0 - srcEnd = 563F - mappingOffset = 056D - Mapping = - 5B44 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5968 4957 FFFD FFFD FFFD 3934 4E70 - 5448 FFFD FFFD FFFD FFFD 307C 3452 FFFD - 5059 FFFD FFFD FFFD FFFD 5969 FFFD 5E4B - 596B FFFD FFFD FFFD FFFD 5830 3B2F 3131 - FFFD 3357 584E FFFD FFFD 5451 FFFD FFFD - 3D33 3F6F FFFD 4F3B FFFD FFFD 5850 FFFD - FFFD FFFD 374B FFFD FFFD FFFD 5851 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4625 4778 523D FFFD FFFD 5852 4464 - FFFD 4A2E FFFD 4727 FFFD 5826 FFFD 497D - 4E67 3B5C 306B FFFD FFFD FFFD 3B2A 502D - FFFD 3130 5764 573F FFFD 3525 4274 444F - FFFD FFFD 3229 FFFD 3237 FFFD 3165 5F32 - 553C 3F28 422C 5855 4231 FFFD 5854 4E54 - FFFD 5A60 FFFD 4E40 FFFD FFFD 5834 432E - 5321 4E23 FFFD 3C34 4834 4251 FFFD 3E6D - 5036 FFFD 5A61 FFFD FFFD FFFD FFFD 4764 - FFFD FFFD 3327 FFFD 3672 4C7C 407A FFFD - FFFD 4077 FFFD 5139 5161 5847 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 325E FFFD FFFD - 4065 FFFD 3A71 FFFD FFFD 5848 FFFD 542D - FFFD FFFD 4F61 5849 FFFD 584A 4F43 FFFD - 3378 3E47 FFFD FFFD FFFD FFFD 584B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5B4C FFFD - FFFD FFFD FFFD 4825 FFFD FFFD FFFD 4F58 - FFFD 487E 324E FFFD FFFD FFFD FFFD FFFD - 5356 3266 3C30 5351 4B2B 3734 FFFD FFFD - FFFD 3722 FFFD FFFD 4A65 FFFD 4821 4A5C - 3164 5070 FFFD 4551 FFFD FFFD FFFD 5B45 - 357E FFFD FFFD 3F5A 3945 3E64 416D FFFD - 5F36 5F35 563B 3D50 5559 3048 3623 3F49 - 4C28 5F33 4A37 5352 FFFD 584F 5236 3A45 - 4B3E 4C3E FFFD 5F37 3570 5F34 FFFD FFFD - FFFD 5375 FFFD 3354 3877 FFFD 5F3A FFFD - 3A4F 3C2A 3575 FFFD 4D2C 437B 3A73 4074 - 4D42 4F72 5F38 4F45 FFFD 4240 5F39 4270 - FFFD FFFD FFFD 3E7D FFFD 415F 4D4C 5277 - 374D 5F41 FFFD 5F44 FFFD FFFD 3771 3049 - 3656 3754 FFFD 3A2C 4C7D 3F54 4B31 4674 - FFFD 5628 5F45 FFFD 4E62 3333 FFFD FFFD - 4E7C 3435 FFFD 4E47 3A70 FFFD 4E61 FFFD - 513D FFFD FFFD 5F40 FFFD FFFD 3474 FFFD - 334A FFFD 3866 5F3B FFFD FFFD FFFD FFFD - 4445 FFFD 5F3C 5F3D 5F3E 453B 5F3F 5F42 - 5431 5F43 FFFD 473A 4E58 FFFD FFFD FFFD - FFFD FFFD 4458 FFFD 5F4A FFFD 5F4F FFFD - 565C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F49 5F5A 4E36 FFFD 3A47 5F4E 5F48 - 455E FFFD FFFD 496B 3A74 437C FFFD FFFD - 3E57 FFFD 5F46 FFFD 5F4D FFFD 4558 FFFD - FFFD FFFD FFFD 5526 3A4D FFFD 3E4C 533D - 3840 FFFD 5664 FFFD 5F47 393E 3F27 FFFD - FFFD 417C 5F4B 5F4C FFFD 5F50 FFFD FFFD - FFFD FFFD FFFD 5F5B 5F65 FFFD 5F57 5F56 - 5749 5F63 5F64 656B 5227 5F52 FFFD 3F29 - FFFD 545B FFFD 3F48 5F54 FFFD FFFD FFFD - 4F4C FFFD FFFD 5F5D FFFD 514A FFFD 5F5E - 3027 4637 5F53 FFFD 3A65 FFFD 365F 4D5B - 397E 5455 FFFD FFFD 5F5F 4F6C 3025 5F67 - 5F51 5146 5F55 5F58 5F59 5F5C FFFD 3B29 - FFFD 5F60 5F61 FFFD 5F62 5F66 5F68 5334 - FFFD FFFD FFFD FFFD FFFD 3867 4536 5F6A - 495A 4128 4444 FFFD FFFD 3F5E 4F78 FFFD - FFFD FFFD 555C 5F6E FFFD FFFD FFFD FFFD - FFFD FFFD 3238 FFFD 3A5F 5F6C FFFD 5B41 - FFFD 5164 FFFD FFFD FFFD FFFD 4B74 343D - FFFD 3026 FFFD FFFD FFFD FFFD FFFD 5F71 - 4C46 5F72 FFFD FFFD 5F6D FFFD FFFD FFFD - FFFD FFFD FFFD 5F69 FFFD FFFD FFFD FFFD - 5F6B FFFD 5F6F 5F70 3B3D FFFD FFFD 5F73 - FFFD FFFD 5F74 FFFD 3B23 FFFD 4A5B 4E28 - 6027 332A FFFD 6026 FFFD FFFD FFFD 6021 - FFFD FFFD FFFD FFFD 5F7E FFFD 4D59 5F7C - FFFD 5F7A FFFD 3F50 5744 FFFD 494C FFFD - FFFD 5F78 3021 FFFD FFFD FFFD FFFD FFFD - 5F7D FFFD FFFD FFFD FFFD 5F7B 6022 FFFD - FFFD FFFD FFFD FFFD 6028 FFFD FFFD FFFD - FFFD 3748 FFFD FFFD 4621 4936 4032 5F75 - FFFD FFFD 453E FFFD 5844 5F79 4476 FFFD - FFFD FFFD FFFD FFFD FFFD 6023 6024 6025 - 5025 FFFD FFFD 6034 4C64 FFFD 6031 FFFD - 3F26 602F 4E39 602B 4946 FFFD FFFD 402E - 602E 3A6D 3A30 6029 FFFD FFFD FFFD 5F76 - FFFD 6033 FFFD FFFD 6038 FFFD FFFD FFFD - 342D 6039 FFFD FFFD 4F32 3A48 FFFD 6030 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 507A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 602C FFFD 547B FFFD 5F77 FFFD 4567 - FFFD 602D FFFD 5377 FFFD 6036 6037 FFFD - FFFD FFFD FFFD FFFD 6044 5061 FFFD FFFD - FFFD 603C FFFD FFFD 6049 604A FFFD FFFD - FFFD 603E 602A 4924 6041 FFFD 6032 FFFD - FFFD FFFD FFFD FFFD 4A48 6043 FFFD 6035 - FFFD 4E4B FFFD 4B43 604D 6046 6042 FFFD - 604B FFFD 603A 603F 6040 FFFD FFFD 6045 - FFFD FFFD 6047 6048 FFFD 604C FFFD 603B - FFFD FFFD FFFD FFFD FFFD 4B54 6055 FFFD - 6056 6052 FFFD FFFD FFFD FFFD FFFD FFFD - 6050 3C4E FFFD FFFD 6051 FFFD 3842 5845 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 506A FFFD FFFD 426F FFFD FFFD 604F 603D - FFFD FFFD FFFD 6054 6053 FFFD FFFD 6057 - FFFD FFFD FFFD FFFD 605C 6058 FFFD FFFD - FFFD 5676 3330 FFFD 576C FFFD 4B3B FFFD - FFFD 605A FFFD 4E7B FFFD FFFD FFFD 3A59 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 564C - srcEnd = 5693 - mappingOffset = 08BD - Mapping = - 6061 605D 522D FFFD FFFD FFFD FFFD FFFD - 6062 FFFD FFFD 605B 6059 605F FFFD FFFD - 6060 FFFD FFFD FFFD FFFD FFFD 605E FFFD - 6064 FFFD FFFD FFFD 4677 582C 546B 6066 - 4A49 FFFD FFFD FFFD FFFD 6065 FFFD FFFD - FFFD FFFD 3841 FFFD FFFD FFFD FFFD 6067 - 6068 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6069 6063 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3A3F 4C67 FFFD FFFD FFFD 606A -End of Item 003E - -Begin of Item 003F - Format 2 - srcBegin = 56A3 - destBegin = 4F79 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 56AF - srcEnd = 56BC - mappingOffset = 0905 - Mapping = - 606B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4842 FFFD FFFD FFFD FFFD 3D40 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 56CA - srcEnd = 570A - mappingOffset = 0913 - Mapping = - 4452 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 606C FFFD FFFD 606D FFFD FFFD - 4774 4B44 FFFD 606E 3B58 5836 5272 606F - 4D45 FFFD 365A FFFD FFFD FFFD FFFD FFFD - FFFD 6071 FFFD 5430 FFFD FFFD 4027 3451 - FFFD FFFD 4E27 6070 FFFD FFFD FFFD 6072 - 394C FFFD FFFD 397A 4D3C 6073 FFFD FFFD - FFFD 4654 6074 FFFD 5432 FFFD 4826 6076 - 6075 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 571C - srcEnd = 5835 - mappingOffset = 0954 - Mapping = - 6077 FFFD FFFD 4D41 FFFD FFFD FFFD 4A25 - FFFD FFFD FFFD FFFD 545A 5B57 5B59 FFFD - 5B58 3967 5B5C 5B5D 3558 FFFD FFFD 5B5A - FFFD FFFD FFFD FFFD FFFD 5B5B 3321 5B5F - FFFD FFFD 3B78 FFFD 5637 FFFD 5B60 FFFD - FFFD FFFD FFFD 3E79 FFFD FFFD 373B FFFD - 5B50 4C2E 3F32 3B35 5778 3F53 FFFD FFFD - FFFD FFFD FFFD 3F69 FFFD FFFD 3C61 4C33 - 5B5E 3053 4E6B 3758 5739 4642 FFFD FFFD - 4024 FFFD 4C39 FFFD 5B67 5B61 463A 5B63 - FFFD 5B68 FFFD 4577 FFFD FFFD FFFD 5B6A - FFFD FFFD 5B69 3F40 FFFD FFFD FFFD 5B66 - 5B65 FFFD FFFD FFFD FFFD FFFD 3439 402C - 4222 5B62 5B64 FFFD FFFD FFFD FFFD 504D - 5B6D FFFD FFFD FFFD FFFD FFFD 405D 5B72 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3662 - FFFD FFFD FFFD FFFD 5B73 5B52 3938 542B - 5B6C FFFD 3F51 5B70 FFFD 5B51 FFFD 3566 - FFFD 5B6B 3F65 FFFD FFFD FFFD 5B6E FFFD - 5B71 FFFD FFFD FFFD 5B79 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3921 3023 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4271 - FFFD FFFD 3347 5B6F FFFD FFFD 5B78 FFFD - 4652 5B74 FFFD FFFD 5B75 5B77 5B76 FFFD - FFFD 5B7E FFFD 5372 323A FFFD FFFD FFFD - 5B7D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5C24 FFFD 5B7B FFFD FFFD FFFD FFFD - 5B7A FFFD FFFD FFFD 5B7C 4560 3B79 FFFD - FFFD 5C23 FFFD FFFD 5C25 FFFD 4C43 FFFD - FFFD FFFD 3651 5D40 FFFD FFFD FFFD 5C21 - FFFD 5C22 FFFD FFFD FFFD 4735 FFFD FFFD - FFFD 3669 FFFD FFFD FFFD 5C27 FFFD FFFD - FFFD FFFD 5C26 FFFD 5C29 3124 FFFD FFFD - 354C FFFD FFFD FFFD FFFD FFFD 3F30 FFFD - FFFD FFFD FFFD FFFD 515F FFFD FFFD FFFD - FFFD 3642 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 5844 - srcEnd = 586C - mappingOffset = 0A6E - Mapping = - 5C28 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4B7A 6B73 FFFD FFFD FFFD 4B5C FFFD FFFD - 4B7E FFFD FFFD FFFD 4C41 FFFD FFFD FFFD - FFFD FFFD 487B FFFD FFFD FFFD FFFD FFFD - FFFD 5C2A FFFD FFFD FFFD FFFD FFFD 4C6E - 5C2B -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 587E - srcEnd = 58A9 - mappingOffset = 0A97 - Mapping = - 5B53 FFFD 5C2F 5C2C FFFD 3E33 FFFD 4A7B - FFFD FFFD FFFD 5C2D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 494A 4439 FFFD FFFD - FFFD FFFD FFFD 473D 5C2E FFFD FFFD FFFD - 5476 5066 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 442B 3655 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 58BC - srcEnd = 58C5 - mappingOffset = 0AC3 - Mapping = - 5B54 FFFD FFFD FFFD FFFD 315A FFFD FFFD - FFFD 5B55 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 58D1 - srcEnd = 58D5 - mappingOffset = 0ACD - Mapping = - 5B56 FFFD FFFD FFFD 3A3E -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 58E4 - srcEnd = 5965 - mappingOffset = 0AD2 - Mapping = - 4840 FFFD FFFD FFFD FFFD FFFD FFFD 4A3F - 4849 FFFD 5733 FFFD 4979 FFFD FFFD 3F47 - FFFD FFFD 3A78 FFFD FFFD 523C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 623A FFFD - 3426 FFFD FFFD 3138 FFFD FFFD FFFD FFFD - FFFD 3834 FFFD 4F44 FFFD FFFD FFFD FFFD - 5967 4F26 4D62 FFFD FFFD 596D 3660 FFFD - 5239 FFFD FFFD 393B FFFD FFFD FFFD FFFD - 6239 6237 FFFD 3473 FFFD 4C6C 4C2B 3772 - FFFD 5832 516B 3A3B FFFD 4A27 FFFD FFFD - 4D37 FFFD FFFD 5244 3F64 3C50 3661 FFFD - 5E45 FFFD FFFD FFFD FFFD 5E46 5B3C FFFD - 5159 FFFD FFFD 4666 444E 376E FFFD 375C - FFFD FFFD 3F7C 5760 FFFD 4675 FFFD FFFD - 313C 5E48 3D31 4C57 5E4A FFFD 5E49 FFFD - FFFD FFFD FFFD FFFD 356C FFFD 495D FFFD - FFFD 3042 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 5973 - srcEnd = 59EC - mappingOffset = 0B54 - Mapping = - 452E 452B FFFD 444C FFFD 3C69 4B7D FFFD - FFFD FFFD 3A43 FFFD FFFD FFFD 6579 4867 - 657A 4D7D FFFD 5731 383E 4268 FFFD 4851 - FFFD FFFD 657B FFFD FFFD FFFD FFFD 364A - 3C4B FFFD FFFD 517D 6621 FFFD 436E FFFD - FFFD FFFD FFFD 6624 FFFD FFFD FFFD FFFD - 657E 6625 4D57 FFFD FFFD 3741 657C 657D - 6623 FFFD FFFD 445D 6628 FFFD FFFD 6627 - FFFD FFFD FFFD FFFD FFFD FFFD 4343 FFFD - 465E FFFD FFFD 662A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4437 FFFD FFFD FFFD 6622 - 4A3C FFFD FFFD FFFD FFFD 3D63 3943 6626 - 5055 4E2F FFFD FFFD 6629 6630 FFFD 5226 - FFFD 3D2A 662D FFFD FFFD FFFD FFFD FFFD - 662F FFFD 4051 FFFD FFFD 524C FFFD FFFD - FFFD 3C27 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 59F9 - srcEnd = 5A7F - mappingOffset = 0BCE - Mapping = - 6631 FFFD 5276 FFFD FFFD FFFD 574B FFFD - 4D7E FFFD 4D5E 4226 662B 662C 3D3F 662E - 6633 FFFD FFFD 6632 FFFD FFFD FFFD FFFD - 6636 FFFD 6638 FFFD FFFD FFFD FFFD 446F - FFFD FFFD FFFD 4448 FFFD FFFD 3E6A 496F - FFFD FFFD 6637 FFFD 3670 FFFD FFFD FFFD - 4364 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5369 6634 FFFD 6635 FFFD 4822 FFFD FFFD - FFFD FFFD FFFD 663D FFFD FFFD FFFD 6639 - FFFD FFFD FFFD FFFD FFFD 4645 FFFD FFFD - 4D71 663B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 663C FFFD FFFD FFFD - FFFD 3B69 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 663E FFFD FFFD FFFD FFFD 663A FFFD - FFFD 4037 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5324 663F 4974 6643 FFFD - FFFD 6644 FFFD FFFD FFFD FFFD 5076 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 5A92 - srcEnd = 5A9B - mappingOffset = 0C55 - Mapping = - 433D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4344 6642 -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 5AAA - srcEnd = 5AF1 - mappingOffset = 0C5F - Mapping = - 6641 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6647 4F31 FFFD 6B74 FFFD FFFD 664A FFFD - FFFD FFFD FFFD FFFD 6645 FFFD FFFD 3C5E - 4929 FFFD FFFD FFFD FFFD FFFD FFFD 3C35 - FFFD FFFD 4F53 FFFD FFFD FFFD FFFD FFFD - 6648 FFFD 6649 FFFD 664E FFFD 6650 FFFD - FFFD FFFD 6651 FFFD FFFD FFFD 664B 3555 - FFFD 664C FFFD FFFD 664F FFFD FFFD 445B - FFFD 6646 FFFD FFFD FFFD FFFD FFFD 664D -End of Item 004B - -Begin of Item 004C - Format 2 - srcBegin = 5B09 - destBegin = 6652 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 5B16 - srcEnd = 5B17 - mappingOffset = 0CA7 - Mapping = - 6654 6653 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 5B32 - srcEnd = 5B40 - mappingOffset = 0CA9 - Mapping = - 6655 FFFD 5978 FFFD FFFD 6656 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6657 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 5B50 - srcEnd = 5D4C - mappingOffset = 0CB8 - Mapping = - 5753 665D FFFD 665E 3F57 5450 FFFD 5756 - 3466 4B6F 665A 5843 574E 5022 FFFD 434F - FFFD FFFD 665F 3C3E 3942 665B 5127 FFFD - FFFD 3A22 424F FFFD 582B FFFD FFFD FFFD - 4A6B 656E FFFD 665C FFFD 3775 FFFD FFFD - FFFD FFFD 4866 FFFD FFFD 4475 FFFD FFFD - 6532 447E FFFD 4B7C 6533 552C FFFD 536E - 4A58 3032 FFFD 4B4E 4D6A FFFD FFFD 3A6A - FFFD FFFD FFFD 6535 FFFD 6534 FFFD 575A - 3959 5666 3628 4D70 524B 3126 4A35 FFFD - 3368 4973 3F4D 507B 4A52 6536 3B42 FFFD - FFFD FFFD 4F5C 392C FFFD FFFD FFFD FFFD - 5457 FFFD FFFD 3A26 5167 4F7C 3C52 FFFD - 6537 485D FFFD FFFD FFFD 3F6D 3176 4B5E - FFFD FFFD 3C45 FFFD 3C44 527A 435C 3F5C - FFFD FFFD FFFD FFFD 383B FFFD FFFD FFFD - 4342 FFFD 3A2E 5422 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 475E 442F 326C - FFFD 3951 FFFD FFFD 653B 4148 FFFD FFFD - 552F FFFD FFFD FFFD FFFD FFFD 653C FFFD - 653E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3467 3654 4B42 5130 353C FFFD FFFD 4A59 - FFFD 3762 FFFD FFFD 4964 FFFD 3D2B FFFD - FFFD 4E3E 5770 FFFD FFFD FFFD FFFD 5021 - FFFD 4959 FFFD FFFD 367B 6658 3C62 FFFD - 333E FFFD 4950 FFFD 6659 3322 FFFD FFFD - FFFD FFFD 5E4C FFFD 5348 5E4D FFFD 5222 - FFFD FFFD FFFD FFFD 5E4E FFFD FFFD FFFD - FFFD 3E4D FFFD FFFD 5E4F FFFD FFFD FFFD - 4A2C 527C 335F 656A 4461 3E21 4E32 4472 - 3E56 4628 3263 FFFD FFFD 3E53 FFFD FFFD - 477C 4C6B 3D6C 4E5D FFFD FFFD 4A3A 4641 - 656C 503C FFFD FFFD FFFD 5539 FFFD FFFD - FFFD 656D FFFD FFFD FFFD FFFD 4A74 FFFD - 4D40 4245 FFFD 656F FFFD 4244 6570 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6578 4D4D - FFFD 493D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5259 6128 FFFD FFFD FFFD FFFD 536C - FFFD 4B6A 4671 FFFD FFFD FFFD FFFD FFFD - 612C FFFD FFFD FFFD 6127 6129 FFFD FFFD - 612A 612F FFFD FFFD 326D FFFD 612B 385A - 612D 612E 6130 353A 6131 FFFD FFFD FFFD - FFFD FFFD 6133 6138 FFFD FFFD FFFD FFFD - FFFD 5152 FFFD 6136 6135 416B FFFD FFFD - FFFD 6137 FFFD 5440 FFFD 6132 FFFD 613A - 3036 FFFD FFFD FFFD FFFD 6134 FFFD 3F79 - FFFD 6139 FFFD FFFD 613B FFFD FFFD FFFD - FFFD FFFD FFFD 613E FFFD FFFD FFFD FFFD - FFFD FFFD 613C FFFD FFFD FFFD FFFD FFFD - FFFD 5645 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4F3F FFFD FFFD 613D 613F 424D FFFD - 366B FFFD 5378 FFFD FFFD 474D FFFD FFFD - 3765 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3E7E FFFD FFFD FFFD FFFD - FFFD FFFD 6140 6141 FFFD FFFD 6147 3367 - FFFD FFFD FFFD FFFD FFFD FFFD 4669 FFFD - FFFD FFFD FFFD FFFD 345E FFFD 5142 FFFD - FFFD FFFD FFFD 6148 FFFD FFFD 6146 FFFD - FFFD FFFD FFFD FFFD 6145 FFFD 6143 6142 - FFFD 3140 FFFD FFFD FFFD 5538 6144 FFFD - FFFD FFFD FFFD FFFD 614B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 614C 614A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6F7A - FFFD FFFD 6153 6152 4736 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 5D58 - srcEnd = 5D5D - mappingOffset = 0EB5 - Mapping = - 6149 FFFD FFFD 614E FFFD 6150 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 5D69 - srcEnd = 5D74 - mappingOffset = 0EBB - Mapping = - 6154 FFFD 6151 614D FFFD FFFD 614F FFFD - FFFD FFFD FFFD 6155 -End of Item 0051 - -Begin of Item 0052 - Format 2 - srcBegin = 5D82 - destBegin = 6156 -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 5D99 - srcEnd = 5D9D - mappingOffset = 0EC7 - Mapping = - 6157 FFFD FFFD FFFD 6158 -End of Item 0053 - -Begin of Item 0054 - Format 2 - srcBegin = 5DB7 - destBegin = 615A -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 5DC5 - srcEnd = 5DCD - mappingOffset = 0ECC - Mapping = - 615B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4E21 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 5DDB - srcEnd = 5E62 - mappingOffset = 0ED5 - Mapping = - 675D FFFD 3428 565D FFFD FFFD 5132 3332 - FFFD FFFD 3924 5773 4749 3E5E 392E FFFD - 4E57 FFFD FFFD 326E 5B4F FFFD 3C3A 5251 - 4B48 304D FFFD FFFD 4F6F FFFD FFFD FFFD - FFFD FFFD 5963 3D6D FFFD FFFD 3152 4A50 - 323C FFFD 4B27 372B FFFD 4A26 FFFD FFFD - FFFD 4F23 FFFD FFFD 6078 554A 607B FFFD - FFFD 607A 4541 4C7B FFFD 4131 6079 5663 - 322F 5644 355B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3478 5621 FFFD FFFD FFFD - FFFD FFFD 4F2F 306F FFFD FFFD 607C FFFD - FFFD FFFD FFFD FFFD 6121 3323 FFFD FFFD - 607D 607E 4331 FFFD FFFD FFFD FFFD 435D - FFFD 6122 3779 FFFD FFFD FFFD FFFD FFFD - FFFD 3B4F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6123 443B FFFD FFFD FFFD FFFD FFFD - 6124 FFFD FFFD 6125 FFFD FFFD 6126 3431 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 5E72 - srcEnd = 5EDB - mappingOffset = 0F5D - Mapping = - 3849 463D 446A FFFD 3222 FFFD 5052 FFFD - 675B 3B43 5357 5344 FFFD 3963 624F FFFD - FFFD FFFD 572F FFFD 476C 3153 FFFD FFFD - 3432 6251 FFFD FFFD FFFD 5072 422E 6250 - FFFD 3F62 5326 3557 6252 356A FFFD 436D - 387D FFFD 382E FFFD 4553 374F 6254 FFFD - FFFD FFFD FFFD 6253 3648 5779 FFFD FFFD - FFFD FFFD FFFD 4D25 FFFD FFFD FFFD FFFD - FFFD 6258 FFFD 6256 4A7C 3F35 5339 6255 - FFFD FFFD FFFD FFFD 6257 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 412E - 4048 FFFD FFFD FFFD FFFD FFFD FFFD 625B - 625A 402A FFFD FFFD 414E FFFD FFFD FFFD - FFFD 625C -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 5EE8 - srcEnd = 5F40 - mappingOffset = 0FC7 - Mapping = - 625D FFFD 625E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5B48 FFFD 5153 4D22 - FFFD FFFD 3D28 FFFD FFFD FFFD 5E43 5825 - 3F2A 5B4D 526C 467A 452A FFFD FFFD FFFD - 5E44 FFFD 3157 5F2E FFFD FFFD FFFD 4A3D - FFFD 5F31 FFFD 392D FFFD 527D FFFD 3825 - 3A6B FFFD FFFD 335A FFFD FFFD FFFD 355C - 5545 FFFD FFFD FFFD FFFD 4356 4F52 3B21 - FFFD 6573 6572 FFFD FFFD 6574 FFFD 4D64 - FFFD 4875 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 352F 473F FFFD 6576 FFFD FFFD FFFD - 6C30 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 5F50 - srcEnd = 612B - mappingOffset = 1020 - Mapping = - 6566 FFFD 3969 3531 FFFD 423C 6568 6567 - 6569 FFFD FFFD FFFD FFFD 524D FFFD FFFD - FFFD 616A 504E FFFD 4D2E FFFD 5165 FFFD - FFFD 324A 316B FFFD 3172 456D FFFD FFFD - 5543 5330 FFFD 615C FFFD FFFD FFFD 615D - FFFD 525B FFFD 3339 314B FFFD FFFD FFFD - 4D79 5577 615E FFFD 3E36 347D FFFD 615F - 3A5C 6160 3B32 4249 6161 FFFD FFFD FFFD - 506C FFFD 4D3D FFFD FFFD 6162 FFFD 3543 - 4547 6163 FFFD FFFD 6164 FFFD FFFD FFFD - FFFD 5379 FFFD FFFD FFFD FFFD FFFD FFFD - 6165 FFFD 512D FFFD FFFD 6166 4E22 FFFD - FFFD FFFD FFFD FFFD FFFD 6167 FFFD 3542 - FFFD FFFD FFFD FFFD 6168 3B55 FFFD FFFD - FFFD FFFD FFFD 5044 6260 3158 5264 FFFD - FFFD 6261 FFFD FFFD 3C49 484C FFFD 6263 - 6C7E 6C7D 5F2F FFFD FFFD FFFD 6262 563E - 4D7C 4326 FFFD FFFD FFFD 6343 FFFD FFFD - 5652 6267 FFFD FFFD 6268 FFFD FFFD 5347 - FFFD FFFD 626C 3F6C FFFD 626D 6265 FFFD - FFFD 3340 FFFD FFFD FFFD 446E FFFD FFFD - 626E FFFD FFFD 5043 FFFD 3A76 6269 375E - 3B33 4C2C 4B4B 6264 6266 626A 626B FFFD - FFFD FFFD 6277 FFFD FFFD 6274 5475 6273 - FFFD FFFD 452D FFFD 557A 4542 3240 FFFD - FFFD 626F FFFD 6272 412F 4B3C FFFD FFFD - 3521 6279 FFFD FFFD FFFD 3C31 6271 5054 - 5439 6275 3956 6276 FFFD FFFD FFFD 4753 - FFFD FFFD FFFD FFFD FFFD 6270 FFFD FFFD - FFFD FFFD FFFD 575C 6D21 FFFD FFFD 6278 - FFFD 6D25 627E 4A51 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4135 FFFD 3B50 FFFD FFFD - 3F56 FFFD 3A63 FFFD FFFD 4B21 FFFD FFFD - FFFD 6D26 6D23 FFFD FFFD 6D22 FFFD FFFD - FFFD FFFD 3B56 6D27 5074 FFFD FFFD 6D24 - 3A5E 3677 6321 3632 4C71 3927 FFFD 4F22 - 4721 FFFD FFFD 3F52 FFFD FFFD 3671 FFFD - 627A 627B 627D 627C 4455 6322 FFFD 5341 - FFFD FFFD FFFD 6327 4744 FFFD FFFD FFFD - FFFD 4F24 FFFD FFFD 6329 3A37 FFFD FFFD - FFFD FFFD 6328 FFFD 3B5A FFFD 6323 FFFD - FFFD FFFD 6324 632A FFFD 6326 FFFD 4E72 - 5346 FFFD FFFD 3B3C FFFD FFFD 5443 FFFD - 447A FFFD FFFD 6D28 507C 6325 FFFD 4375 - FFFD 632D 312F FFFD 6332 FFFD FFFD FFFD - 3C42 FFFD FFFD 632C 353F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4769 6330 FFFD - FFFD FFFD 3E2A 4D6F FFFD FFFD FFFD FFFD - FFFD 3B73 FFFD FFFD FFFD 4C68 FFFD FFFD - 632F FFFD 6331 FFFD 4F27 632E FFFD 4E29 - 3B5D FFFD FFFD FFFD FFFD FFFD 356B 3E65 - 3252 334D FFFD 3139 632B 3251 352C 395F - 3668 FFFD FFFD 4F6B 6337 FFFD 3B4C FFFD - FFFD 4847 504A FFFD FFFD FFFD FFFD FFFD - 6338 336E FFFD FFFD FFFD FFFD 6D29 FFFD - 537A 5364 FFFD FFFD FFFD 6D2A 6339 5262 - FFFD FFFD FFFD FFFD FFFD 6335 FFFD FFFD - FFFD FFFD 535E FFFD FFFD FFFD FFFD 3850 - 6333 FFFD FFFD 6336 375F FFFD 6334 4022 - FFFD FFFD FFFD 633A -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 613F - srcEnd = 6177 - mappingOffset = 11FC - Mapping = - 5438 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3448 FFFD 633B FFFD 3B45 FFFD 4977 - FFFD FFFD 4965 FFFD FFFD FFFD 443D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6D2B FFFD - FFFD FFFD FFFD 427D FFFD FFFD FFFD FFFD - 3B5B 3F2E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4E3F FFFD FFFD FFFD FFFD 633C FFFD - 3F36 -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 618B - srcEnd = 61D4 - mappingOffset = 1235 - Mapping = - 316F FFFD FFFD 5477 FFFD FFFD FFFD FFFD - FFFD 633E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6D2D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 633F 3A29 6D2C FFFD - FFFD 633D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6340 FFFD FFFD FFFD - FFFD FFFD FFFD 3A36 FFFD FFFD FFFD 362E - FFFD FFFD FFFD FFFD FFFD 5038 FFFD 3043 - 6D2E FFFD FFFD FFFD FFFD FFFD 6D2F 4041 - FFFD 6341 -End of Item 005B - -Begin of Item 005C - Format 2 - srcBegin = 61E6 - destBegin = 4533 -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 61F5 - srcEnd = 64E6 - mappingOffset = 127F - Mapping = - 6342 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5C32 FFFD FFFD FFFD FFFD FFFD - FFFD 6D30 FFFD 386A FFFD 4E6C 6A27 5067 - 4A79 4856 4F37 3349 4E52 3D64 FFFD FFFD - 635E 3B72 6A28 553D FFFD 465D 6A29 FFFD - FFFD FFFD 6A2A FFFD 6A2C 6A2B FFFD 6A2E - 6A2D FFFD FFFD FFFD FFFD 3D58 FFFD 6A2F - FFFD 423E FFFD FFFD FFFD FFFD 3441 3477 - FFFD FFFD 3B27 FFFD FFFD FFFD FFFD FFFD - 6C66 6C65 373F 4B79 3162 FFFD 6C67 FFFD - FFFD FFFD 4948 6C68 6C69 FFFD 4A56 5E50 - 3245 547A FFFD FFFD 464B 3047 3472 4853 - FFFD FFFD FFFD 4D50 FFFD FFFD 3F38 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3F5B FFFD - FFFD 4724 5634 FFFD 4029 5E51 4928 516F - 4524 3067 3336 4845 FFFD FFFD 3062 FFFD - FFFD 3776 FFFD FFFD 457A FFFD FFFD 3673 - FFFD 5552 3350 3C3C FFFD FFFD FFFD 332D - FFFD FFFD FFFD FFFD 3E71 3051 FFFD FFFD - FFFD FFFD FFFD FFFD 5256 4A63 5725 FFFD - 4D36 3636 3F39 555B FFFD 3827 4557 FFFD - FFFD FFFD 5E52 3F59 4255 4740 FFFD 3B24 - 3128 FFFD FFFD 456A FFFD FFFD 457B 4C27 - FFFD FFFD FFFD FFFD 3127 FFFD FFFD FFFD - 3556 FFFD FFFD FFFD 4428 FFFD 5E53 513A - 3369 FFFD 4372 FFFD FFFD 3777 FFFD 5674 - 3523 3270 4434 4469 402D 5E54 FFFD 3068 - 4544 4160 FFFD 3955 FFFD 3E5C 4D58 304E - FFFD 4D4F 5E56 3E50 573E 5E55 5550 305D - FFFD FFFD 4462 FFFD FFFD 4223 3C70 FFFD - 5335 4039 4521 3226 5471 FFFD FFFD 4028 - 4A43 5E57 557C FFFD 3930 FFFD 482D 4B29 - FFFD 5E59 3F3D FFFD FFFD FFFD FFFD 4634 - 5727 4A30 4443 FFFD 3356 3952 FFFD FFFD - FFFD FFFD 5638 6A7C 3034 FFFD FFFD FFFD - FFFD 3F66 FFFD FFFD 4C74 FFFD FFFD FFFD - FFFD 4D5A FFFD FFFD FFFD 563F 424E FFFD - 4E4E 4C22 502E 4453 3532 5E58 5575 3C37 - 3B53 FFFD FFFD 3024 FFFD 4532 346C FFFD - FFFD FFFD 5571 FFFD FFFD 6A7D FFFD FFFD - FFFD FFFD FFFD FFFD 5E5A 4D26 FFFD FFFD - 4D6C FFFD FFFD FFFD FFFD 4E66 5E5C FFFD - 4D31 4026 FFFD FFFD 573D FFFD 5E5B 3046 - 3A34 4953 4473 3E68 FFFD FFFD FFFD FFFD - 3236 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 404C 4B70 FFFD 3C71 3B3B 3537 FFFD - FFFD FFFD 4575 FFFD 5E66 FFFD FFFD FFFD - 5E63 3E5D FFFD FFFD 5E5F FFFD FFFD FFFD - FFFD 3437 3D5D FFFD FFFD 5E60 446D FFFD - FFFD FFFD FFFD 4F46 FFFD 3560 FFFD FFFD - FFFD FFFD 365E 4A5A 3574 5E65 FFFD 5546 - FFFD 5E61 4C4D 467E FFFD 4545 FFFD FFFD - FFFD 5234 FFFD 3E72 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4253 FFFD 4C3D 3338 FFFD - 3D53 FFFD 3F58 4D46 515A 346B FFFD 5E64 - 5E5D 5E67 FFFD 6A7E FFFD FFFD 4230 5E62 - FFFD FFFD 5640 3527 FFFD 3274 FFFD 5E68 - FFFD 5E72 FFFD FFFD FFFD FFFD FFFD 5E6D - FFFD 5E71 FFFD FFFD 4860 FFFD FFFD FFFD - 5761 5E6F 4368 4C61 FFFD 3265 FFFD FFFD - FFFD 523E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5E6E FFFD 5E6B 4E55 FFFD 3427 FFFD - FFFD FFFD FFFD FFFD 3F2B 3E3E FFFD FFFD - 3D52 FFFD FFFD FFFD FFFD 5E69 FFFD 542E - FFFD 5E5E FFFD 5E6A FFFD FFFD FFFD FFFD - 403F FFFD 5E6C 3273 3869 4227 FFFD FFFD - 3D41 FFFD FFFD FFFD FFFD FFFD 5E75 5E78 - FFFD FFFD 322B 3424 FFFD FFFD 346A 4926 - FFFD FFFD FFFD FFFD FFFD FFFD 5E76 4B51 - FFFD 3863 FFFD 5E77 5E7A FFFD FFFD FFFD - FFFD 5E79 FFFD FFFD FFFD 4C42 FFFD 3061 - 346E FFFD FFFD FFFD FFFD FFFD FFFD 653A - FFFD FFFD FFFD FFFD FFFD 502F FFFD FFFD - 326B FFFD 6B21 FFFD 5E74 FFFD FFFD 4963 - 5E73 305A 5221 3177 FFFD 4C2F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5E70 FFFD 4B24 - FFFD FFFD FFFD 552A FFFD FFFD FFFD FFFD - FFFD 5E7B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 345D FFFD 4426 FFFD FFFD FFFD - 5E7D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 437E 4421 5F21 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 414C FFFD 5E7C - 3E6F FFFD 4632 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3345 4876 FFFD FFFD - 4B3A 5E7E FFFD FFFD 5F24 FFFD FFFD FFFD - FFFD 5732 FFFD FFFD FFFD FFFD FFFD 3337 - FFFD FFFD FFFD FFFD 4143 FFFD FFFD 474B - 3225 3469 FFFD 572B FFFD FFFD FFFD FFFD - 446C FFFD 5F22 5F23 FFFD 5F25 FFFD 3A33 - FFFD FFFD FFFD 5F26 FFFD 405E FFFD FFFD - 4943 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3259 4766 FFFD 5F27 FFFD 475C FFFD FFFD - FFFD FFFD 5F28 6B22 FFFD FFFD FFFD FFFD - FFFD 4B53 FFFD FFFD FFFD 5F2A FFFD 5F29 - FFFD 3241 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 6500 - srcEnd = 6518 - mappingOffset = 1571 - Mapping = - 454A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F2B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 545C FFFD FFFD FFFD FFFD FFFD - 4841 -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 6525 - srcEnd = 6577 - mappingOffset = 158A - Mapping = - 5F2C FFFD FFFD FFFD FFFD FFFD 3E70 FFFD - FFFD 5F2D 5627 FFFD FFFD FFFD FFFD 6A37 - 6B36 4A55 FFFD 587C 3844 FFFD 3925 FFFD - FFFD 3745 557E FFFD FFFD FFFD FFFD FFFD - 394A FFFD FFFD 5027 744D FFFD FFFD 3550 - FFFD FFFD 4374 FFFD 3E48 FFFD FFFD FFFD - 6B37 303D FFFD FFFD 3D4C FFFD 4132 FFFD - 3156 3328 FFFD FFFD FFFD 3852 4922 FFFD - FFFD 3658 FFFD FFFD FFFD FFFD 6B38 3E34 - FFFD FFFD FFFD 4A7D FFFD 4743 FFFD 557B - FFFD FFFD 3773 -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 6587 - srcEnd = 66BE - mappingOffset = 15DD - Mapping = - 4E44 FFFD FFFD FFFD 552B 3173 FFFD FFFD - FFFD 6C33 305F FFFD 6C35 FFFD FFFD FFFD - 3637 FFFD 414F FFFD 757A 5031 FFFD FFFD - 5565 FFFD 4E53 FFFD FFFD 3D6F 3362 FFFD - 382B FFFD 5536 FFFD 6D3D FFFD 364F FFFD - 4B39 5042 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 373D FFFD FFFD 6C36 4A29 FFFD - FFFD FFFD 4554 FFFD 6C39 6C38 4243 6C37 - FFFD FFFD FFFD FFFD 507D 6C3A FFFD 6C3B - 5765 FFFD FFFD 6C3C FFFD FFFD FFFD 6C3D - 466C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4E5E FFFD 3C48 FFFD FFFD 4855 3529 - 3E49 563C 5467 FFFD FFFD 512E 5071 6A38 - 6A39 6A3A 3A35 FFFD FFFD FFFD FFFD 4A31 - 3F75 FFFD FFFD 4D7A FFFD FFFD FFFD FFFD - FFFD 6A40 FFFD 303A 6A3E FFFD FFFD 4025 - FFFD FFFD FFFD 6A3B FFFD 327D FFFD 4377 - 3B68 FFFD FFFD FFFD 5257 4E74 6A3F FFFD - FFFD FFFD 6A3C FFFD FFFD FFFD 6A43 FFFD - 5047 5333 FFFD FFFD FFFD FFFD 343A FFFD - 4341 5772 FFFD FFFD FFFD FFFD 5551 FFFD - 4A47 FFFD 6A45 FFFD FFFD 6A44 6A47 6A46 - FFFD FFFD FFFD FFFD FFFD 5667 FFFD 4F54 - FFFD FFFD 6A4B FFFD 3B4E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3D7A 494E FFFD FFFD - 6A4C FFFD FFFD 4939 4F7E 6A4A 544E 6A4D - 6A4F FFFD FFFD 4D6D FFFD FFFD FFFD FFFD - 6A49 FFFD 6A4E FFFD FFFD 4E6E FFFD 3B5E - FFFD 333F FFFD FFFD FFFD FFFD FFFD 4655 - 3E30 4E7A FFFD FFFD FFFD 4767 FFFD 3E27 - 6A50 FFFD FFFD 5647 FFFD FFFD FFFD 4140 - FFFD FFFD FFFD 545D FFFD 6A51 FFFD FFFD - 4F3E FFFD FFFD FFFD FFFD 6A52 FFFD FFFD - FFFD FFFD 4A6E FFFD FFFD FFFD FFFD 452F - 3035 FFFD FFFD FFFD FFFD FFFD 6A54 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6A53 745F FFFD FFFD FFFD FFFD FFFD 443A - FFFD FFFD FFFD FFFD FFFD 3129 FFFD FFFD - FFFD FFFD 655F FFFD FFFD FFFD FFFD 6A55 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 66D9 - srcEnd = 6912 - mappingOffset = 1715 - Mapping = - 4A6F FFFD 6A56 6A57 4658 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6A58 FFFD FFFD - 6A59 FFFD FFFD FFFD FFFD FFFD FFFD 543B - FFFD 477A 5237 387C FFFD FFFD 6A42 FFFD - 325C FFFD FFFD 427C FFFD 5478 4C66 576E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5442 - 5350 6B43 4573 FFFD 377E FFFD FFFD 6B54 - FFFD FFFD FFFD 4B37 6B5E FFFD 404A FFFD - FFFD FFFD 4D7B FFFD 332F FFFD 465A FFFD - FFFD FFFD FFFD FFFD FFFD 6B7C FFFD 443E - FFFD 4E34 4429 313E 547D FFFD 4A75 FFFD - 566C FFFD FFFD 4653 3664 FFFD FFFD FFFD - FFFD 3B7A FFFD FFFD 5060 FFFD FFFD 4931 - FFFD 5453 4828 FFFD FFFD 384B FFFD 683E - 493C FFFD FFFD 683B FFFD 406E 5053 3244 - 3465 FFFD 683C FFFD FFFD 5548 FFFD FFFD - FFFD FFFD FFFD 3645 FFFD 683D 4A78 385C - 4C75 FFFD FFFD FFFD 4034 FFFD FFFD 516E - 683F 6842 FFFD FFFD 3A3C FFFD 312D 3D5C - FFFD 6A3D 6843 FFFD 6846 FFFD 684B FFFD - FFFD FFFD FFFD 684C FFFD 4B49 3065 FFFD - 3C2B FFFD FFFD 3939 FFFD FFFD 6841 FFFD - 4D77 FFFD 684A FFFD FFFD FFFD FFFD 4E76 - FFFD FFFD FFFD FFFD 556D FFFD 4156 6844 - FFFD 4336 FFFD 397B 5626 6848 FFFD FFFD - FFFD 4A60 5466 FFFD 6840 FFFD 6845 6847 - FFFD 4739 3763 FFFD 6849 FFFD 3F5D 6852 - FFFD FFFD 6857 FFFD 6855 3C5C 3C4F 685B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 685E FFFD 685A 317A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3058 4433 - 384C 4662 483E 4861 FFFD FFFD FFFD 684F - 6854 6856 FFFD 3971 6858 5775 FFFD 447B - FFFD 685C FFFD FFFD 3269 FFFD FFFD FFFD - 6851 FFFD FFFD 3C6D FFFD FFFD 3F42 684D - 5679 FFFD 4178 3271 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 685F FFFD 4A41 6859 - FFFD FFFD FFFD FFFD 5524 FFFD 316A 553B - 684E 6850 3630 6853 FFFD 685D 4038 FFFD - 4A77 FFFD 4B28 FFFD FFFD 465C 4075 FFFD - FFFD FFFD FFFD FFFD 6869 FFFD FFFD FFFD - 5023 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6872 566A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6860 6861 FFFD FFFD FFFD 5179 3A4B - 3879 FFFD FFFD 3871 5454 686F FFFD 686E - 686C 3970 4C52 6866 4E26 3F72 FFFD 3038 - 6871 6870 FFFD 5740 FFFD 6864 FFFD 4D29 - 4923 FFFD 3B38 3D5B 686A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6862 - 6863 6865 3535 6867 4745 686B 686D 3D30 - 572E FFFD 6878 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6875 FFFD 4D30 6876 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 413A FFFD 6868 FFFD 4337 3070 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6874 FFFD - FFFD FFFD 6877 FFFD FFFD FFFD 3923 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4952 FFFD FFFD FFFD 434E 4E60 4066 - FFFD FFFD FFFD FFFD 4B73 FFFD 4C5D 5035 - FFFD FFFD 4A61 FFFD 6873 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3C6C - FFFD 6879 FFFD FFFD FFFD FFFD FFFD FFFD - 435E FFFD 4665 FFFD 3977 FFFD FFFD FFFD - FFFD 3074 FFFD FFFD 5758 FFFD FFFD 3C2C - FFFD 456F FFFD FFFD FFFD FFFD FFFD 4C44 - FFFD FFFD 6926 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 492D FFFD 6922 - 4062 FFFD FFFD FFFD 3F43 FFFD FFFD FFFD - 687E 3957 FFFD 687B FFFD FFFD FFFD FFFD - 6924 FFFD FFFD FFFD 524E FFFD FFFD FFFD - FFFD FFFD 6923 FFFD 5632 5735 FFFD 6927 - FFFD 3D37 -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 691F - srcEnd = 6942 - mappingOffset = 194F - Mapping = - 687C 687D FFFD FFFD FFFD 6921 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4D56 FFFD - FFFD 522C FFFD FFFD FFFD 6932 FFFD FFFD - FFFD FFFD 6929 FFFD FFFD FFFD 342A FFFD - 343B FFFD FFFD 692B -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 6954 - srcEnd = 69E0 - mappingOffset = 1973 - Mapping = - 5028 FFFD FFFD 6925 FFFD FFFD 337E FFFD - FFFD 692C 4063 FFFD 692A FFFD FFFD 6939 - FFFD FFFD 6938 FFFD FFFD FFFD FFFD 692E - FFFD FFFD 687A FFFD FFFD 6928 FFFD FFFD - FFFD FFFD FFFD 3F2C 6931 693A FFFD FFFD - 4225 FFFD FFFD FFFD 692F FFFD 3845 FFFD - 692D FFFD 535C 6934 6935 6937 FFFD FFFD - FFFD 6947 FFFD FFFD FFFD FFFD FFFD FFFD - 4046 6945 FFFD FFFD 6930 FFFD FFFD 693B - 3071 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 693C 5525 FFFD FFFD 693E - FFFD 693F FFFD FFFD FFFD 6941 FFFD FFFD - 4171 FFFD FFFD 4836 FFFD FFFD FFFD 693D - FFFD FFFD FFFD FFFD FFFD 6942 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6943 FFFD - 6933 FFFD 6936 FFFD 3B31 FFFD FFFD FFFD - 6940 FFFD FFFD FFFD FFFD FFFD FFFD 3C77 - FFFD FFFD FFFD 6944 6946 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 69ED - srcEnd = 6A0A - mappingOffset = 1A00 - Mapping = - 694A FFFD FFFD FFFD FFFD 694E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 325B FFFD 6948 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 372E -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 6A17 - srcEnd = 6A65 - mappingOffset = 1A1E - Mapping = - 694B 694C FFFD FFFD FFFD FFFD FFFD FFFD - 5541 FFFD 4423 FFFD FFFD FFFD FFFD FFFD - FFFD 6958 FFFD 3A61 FFFD FFFD FFFD FFFD - 6949 FFFD 5323 FFFD FFFD FFFD 6954 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6957 6950 - FFFD FFFD FFFD FFFD FFFD 694F FFFD FFFD - 4741 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6952 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6959 3348 FFFD 6953 FFFD FFFD FFFD - FFFD FFFD 4F70 FFFD FFFD FFFD 694D -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 6A71 - srcEnd = 6AAC - mappingOffset = 1A6D - Mapping = - 3377 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6956 FFFD FFFD 695A FFFD FFFD FFFD 4C34 - FFFD FFFD FFFD 4F2D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6955 FFFD 695C - 695B FFFD FFFD FFFD FFFD FFFD 695E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6951 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 695D FFFD 695F 434A -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 6B20 - srcEnd = 6B4C - mappingOffset = 1AA9 - Mapping = - 4737 344E 3B36 5040 6C23 FFFD FFFD 4537 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 537B FFFD FFFD FFFD FFFD 6C24 - FFFD 6C25 465B FFFD FFFD FFFD 3F6E FFFD - FFFD FFFD FFFD 6C26 FFFD FFFD 6C27 502A - FFFD 4738 FFFD FFFD 3868 -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 6B59 - srcEnd = 6B6A - mappingOffset = 1AD6 - Mapping = - 6C28 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5639 557D 344B 323D 4E64 4667 FFFD - FFFD 4D61 -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = 6B79 - srcEnd = 6E5F - mappingOffset = 1AE8 - Mapping = - 3475 FFFD 4B40 3C5F FFFD FFFD FFFD FFFD - 6962 6963 516A 6965 FFFD 3479 6964 FFFD - 5133 4A62 3250 FFFD 6968 FFFD FFFD FFFD - FFFD 6966 6967 FFFD FFFD 5633 FFFD FFFD - FFFD 6969 696A FFFD FFFD FFFD FFFD FFFD - 696B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 696C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6C2F 4539 364E FFFD 5273 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 356E FFFD - 3B59 6C31 FFFD FFFD 5263 FFFD FFFD FFFD - FFFD FFFD 4E63 FFFD 4438 FFFD 433F FFFD - FFFD 363E 5839 3148 314F 3151 457E FFFD - 3150 FFFD 432B FFFD FFFD FFFD FFFD FFFD - 5531 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6B24 3A41 FFFD FFFD FFFD 4C3A FFFD - FFFD FFFD 6B25 FFFD 6B27 FFFD FFFD FFFD - 6B28 FFFD FFFD FFFD 6B26 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6B29 6B2B 6B2A FFFD - FFFD FFFD FFFD FFFD 6B2C FFFD 4A4F 5835 - 4371 FFFD 4325 4678 6B2D 444A FFFD 6B2E - 6B2F 6B30 3755 FFFD FFFD FFFD 377A FFFD - 6B31 4762 FFFD 6B33 FFFD 3A24 5175 3031 - 6B32 6B34 FFFD FFFD FFFD 352A 4248 4768 - FFFD 6B35 FFFD 4B2E 635F FFFD FFFD 5340 - FFFD FFFD FFFD FFFD 595B FFFD FFFD 4D21 - 562D 4773 FFFD FFFD FFFD 5960 3B63 FFFD - 3A3A 6362 FFFD FFFD FFFD FFFD FFFD 4F2B - FFFD FFFD FFFD 6360 4947 FFFD 3A39 FFFD - FFFD FFFD 5134 6361 486A 392F 3D2D 3358 - 4E5B FFFD FFFD 4C40 FFFD FFFD FFFD 6368 - 6369 4D74 FFFD FFFD FFFD FFFD FFFD 4C2D - FFFD 3C33 FFFD 636A FFFD 636B FFFD FFFD - 505A FFFD FFFD FFFD 467B 375A FFFD FFFD - 475F 524A 4E56 FFFD 6364 636C FFFD 4972 - 3341 FFFD FFFD 6367 FFFD FFFD 4663 6365 - FFFD FFFD 6D33 6366 FFFD FFFD FFFD FFFD - 4933 FFFD 4566 FFFD FFFD FFFD 3935 FFFD - 433B FFFD 6363 453D 4124 4259 3257 FFFD - 636D 3B26 442D FFFD 6370 3E5A FFFD FFFD - 637B 6375 3A53 FFFD FFFD FFFD FFFD 3750 - 534D FFFD 564E 5553 3941 5534 5158 FFFD - FFFD FFFD FFFD 5039 4776 FFFD FFFD FFFD - 482A 3234 FFFD 435A FFFD FFFD FFFD 636E - FFFD FFFD 637C 636F 3728 6377 6374 FFFD - FFFD FFFD 373A FFFD FFFD 4522 FFFD 6376 - 455D 3228 467C FFFD 4460 FFFD FFFD 5722 - FFFD 4061 6379 FFFD FFFD 637A 637D 4C29 - 6373 FFFD 533E FFFD 3143 6D34 6371 6372 - FFFD 6378 503A 4643 5473 637E FFFD FFFD - 3D60 FFFD FFFD 6427 FFFD FFFD 6426 FFFD - FFFD FFFD 5173 6423 FFFD 6429 FFFD FFFD - FFFD 4877 FFFD FFFD FFFD FFFD 4F34 FFFD - 6428 642E 4265 FFFD FFFD 3634 FFFD FFFD - FFFD FFFD FFFD FFFD 3D72 FFFD 6422 FFFD - FFFD 3A69 642A FFFD FFFD 642C FFFD FFFD - 367D 565E 6432 FFFD 642D FFFD FFFD FFFD - 6421 FFFD 3B6E 4D5D 4722 4549 FFFD FFFD - 4177 FFFD 6424 FFFD 4733 3D2C 3D3D 6425 - FFFD 5747 3262 FFFD 642B 3C43 642F FFFD - 3B6B 6430 4528 6431 FFFD FFFD FFFD FFFD - 5563 3F23 FFFD 643A FFFD 6437 FFFD 643B - FFFD FFFD 643D FFFD FFFD 4656 FFFD FFFD - 3A46 404B FFFD FFFD FFFD 3821 6434 FFFD - FFFD FFFD FFFD 5421 FFFD FFFD 3A23 3D7E - FFFD FFFD FFFD 643C FFFD FFFD FFFD FFFD - FFFD 4D3F FFFD FFFD 4479 FFFD FFFD 4F7B - 4966 FFFD FFFD 533F FFFD 4F51 FFFD FFFD - 6433 FFFD 6438 6439 4C69 FFFD FFFD FFFD - FFFD FFFD 4C4E FFFD 4054 6435 4130 6436 - 4E50 FFFD 3B41 3553 FFFD 4873 3D27 5547 - 492C 3822 644A FFFD FFFD 644C 5144 FFFD - FFFD 523A FFFD FFFD 3A2D FFFD FFFD 3A54 - FFFD FFFD FFFD FFFD FFFD FFFD 6443 356D - FFFD FFFD FFFD 574D 6440 4F7D 643F FFFD - FFFD FFFD 415C 4C4A FFFD FFFD FFFD FFFD - 4A67 FFFD FFFD FFFD FFFD 4457 FFFD 4C54 - 6448 FFFD FFFD FFFD 6447 6441 FFFD 6444 - 352D FFFD FFFD 5359 FFFD 6446 FFFD FFFD - FFFD FFFD 5279 3463 FFFD 3B34 FFFD FFFD - 496E FFFD 343E FFFD FFFD FFFD 3B6C FFFD - 514D FFFD 4C6D 6D35 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4765 FFFD FFFD FFFD - FFFD 5428 FFFD 644B 5755 6442 FFFD 3D25 - 6445 FFFD FFFD 5366 FFFD 6449 4978 FFFD - FFFD 643E FFFD FFFD 5365 FFFD FFFD 477E - 3649 FFFD 547C 3233 6457 FFFD FFFD FFFD - 4E42 FFFD 644D FFFD 4E3C FFFD 385B FFFD - FFFD 6456 FFFD 3F4A FFFD FFFD FFFD 534E - FFFD 436C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4548 6458 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4D44 644F FFFD FFFD - FFFD FFFD 6454 6455 FFFD 3A7E FFFD 4F66 - FFFD FFFD 553F FFFD FFFD FFFD 6452 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 6E6B - srcEnd = 6E6E - mappingOffset = 1DCF - Mapping = - 6450 FFFD FFFD 644E -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = 6E7E - srcEnd = 6F8E - mappingOffset = 1DD3 - Mapping = - 4D65 4A2A FFFD FFFD FFFD 4023 FFFD 3D26 - 6453 FFFD FFFD 3848 FFFD FFFD FFFD FFFD - FFFD 6467 5434 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 645B FFFD FFFD FFFD 416F FFFD - FFFD 6469 FFFD FFFD 5267 FFFD FFFD 645F - FFFD 6460 FFFD FFFD 4F2A FFFD FFFD FFFD - FFFD 4B5D FFFD 645A 6451 FFFD 6465 FFFD - 485C 6463 FFFD FFFD 4467 6462 FFFD 6461 - FFFD FFFD FFFD 337C 6468 FFFD FFFD FFFD - FFFD 3561 FFFD FFFD FFFD 574C FFFD FFFD - FFFD 6466 FFFD 3B2C FFFD 5752 4C4F 6B78 - FFFD 6464 FFFD FFFD 3976 FFFD FFFD FFFD - 564D 6459 645C 427A 645E FFFD 424B 4044 - 4250 FFFD 3175 4C32 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 354E FFFD - FFFD FFFD FFFD 646F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 462F FFFD FFFD FFFD - 4661 FFFD FFFD 6475 FFFD FFFD FFFD FFFD - FFFD 4229 FFFD FFFD FFFD 406C 515D 646E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 442E FFFD FFFD FFFD 646D FFFD - FFFD FFFD FFFD 6476 6474 427E FFFD 645D - FFFD 6470 FFFD 4A7E FFFD 5544 FFFD FFFD - 6471 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 517A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 646B 646C FFFD FFFD FFFD 6472 FFFD 4E2B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 454B FFFD FFFD FFFD 4731 FFFD - 423A FFFD FFFD FFFD 646A FFFD FFFD FFFD - 414A FFFD FFFD FFFD FFFD FFFD FFFD 4C36 - 3331 FFFD FFFD FFFD 647B FFFD 6473 FFFD - FFFD FFFD 647A FFFD 647D FFFD 647C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 334E FFFD - FFFD FFFD 333A 6477 FFFD FFFD 6479 6478 - 456C -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 6F9C - srcEnd = 6FA7 - mappingOffset = 1EE4 - Mapping = - 403D FFFD FFFD FFFD FFFD 5468 FFFD FFFD - FFFD FFFD FFFD 6522 -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = 6FB3 - srcEnd = 6FD2 - mappingOffset = 1EF0 - Mapping = - 3044 FFFD FFFD 6524 FFFD FFFD 6523 FFFD - FFFD FFFD FFFD FFFD FFFD 3C24 FFFD 6525 - FFFD FFFD FFFD FFFD FFFD FFFD 6521 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 647E 3174 -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = 6FDE - srcEnd = 6FE1 - mappingOffset = 1F10 - Mapping = - 6528 FFFD 6529 6526 -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = 6FEE - srcEnd = 6FEF - mappingOffset = 1F14 - Mapping = - 6527 652A -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 7011 - srcEnd = 7023 - mappingOffset = 1F16 - Mapping = - 4659 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 652B 652D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 652C -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 7035 - srcEnd = 7039 - mappingOffset = 1F29 - Mapping = - 652F FFFD FFFD FFFD 652E -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 704C - srcEnd = 704F - mappingOffset = 1F2E - Mapping = - 3960 FFFD FFFD 6530 -End of Item 0072 - -Begin of Item 0073 - Format 2 - srcBegin = 705E - destBegin = 6531 -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = 706B - srcEnd = 709D - mappingOffset = 1F32 - Mapping = - 3B70 6C61 4370 FFFD 3546 3B52 FFFD FFFD - FFFD FFFD 4169 546E FFFD 3E44 FFFD FFFD - FFFD 5746 FFFD 5456 3253 6C3E FFFD FFFD - FFFD FFFD 6A41 FFFD FFFD FFFD 422F 3436 - FFFD FFFD FFFD 5157 FFFD FFFD FFFD 3334 - FFFD 4832 3F3B 6C40 FFFD FFFD 564B FFFD - FFFD 6C3F 6C41 -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 70AB - srcEnd = 70CA - mappingOffset = 1F65 - Mapping = - 6C45 3E66 4C3F 455A 3E3C FFFD 6C46 FFFD - 317E FFFD FFFD FFFD 6C44 5528 3563 FFFD - 6C42 4136 3363 FFFD FFFD 6C43 4B38 4043 - 4C7E FFFD FFFD FFFD FFFD 4152 FFFD 6C48 -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = 70D8 - srcEnd = 70FD - mappingOffset = 1F85 - Mapping = - 3A66 4053 FFFD 5672 FFFD FFFD FFFD 514C - FFFD FFFD FFFD FFFD 3F3E FFFD 3733 4955 - 6C47 3B62 FFFD 4C4C 3D7D 4848 FFFD 4F29 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4D69 - FFFD 456B FFFD FFFD FFFD 3769 -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = 7109 - srcEnd = 711A - mappingOffset = 1FAB - Mapping = - 5149 3A38 FFFD FFFD FFFD FFFD FFFD 6C49 - FFFD FFFD 6C4A FFFD 3B40 6C4B FFFD 6C62 - 313A 3759 -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 7126 - srcEnd = 7136 - mappingOffset = 1FBD - Mapping = - 3D39 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6C4C 5166 6C4D FFFD FFFD FFFD FFFD - 483B -End of Item 0078 - -Begin of Item 0079 - Format 1 - srcBegin = 7145 - srcEnd = 714E - mappingOffset = 1FCE - Mapping = - 6C51 FFFD FFFD FFFD FFFD 6C53 FFFD 3B4D - FFFD 3C65 -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = 715C - srcEnd = 71F9 - mappingOffset = 1FD8 - Mapping = - 6C4F FFFD 4937 FFFD FFFD FFFD FFFD FFFD - 433A FFFD 6C63 5555 6C50 FFFD FFFD FFFD - FFFD FFFD 5673 FFFD FFFD FFFD 6C52 6C4E - FFFD FFFD FFFD FFFD 6C54 FFFD 6C55 FFFD - FFFD 493F FFFD FFFD FFFD FFFD FFFD FFFD - 4F28 FFFD FFFD FFFD FFFD FFFD 505C FFFD - FFFD FFFD FFFD 512C FFFD FFFD FFFD FFFD - 485B FFFD FFFD FFFD 6C56 4E75 FFFD FFFD - FFFD FFFD FFFD 4A6C 6C5A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6C59 FFFD FFFD FFFD - 303E FFFD FFFD FFFD FFFD FFFD FFFD 6C57 - FFFD 6C58 FFFD FFFD FFFD 6C64 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 483C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4147 FFFD FFFD FFFD FFFD FFFD - 6C5C 5160 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6C5B FFFD FFFD FFFD - FFFD 546F FFFD 6C5D FFFD FFFD FFFD FFFD - FFFD FFFD 5B46 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6C5E -End of Item 007A - -Begin of Item 007B - Format 2 - srcBegin = 7206 - destBegin = 312C -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = 721D - srcEnd = 7292 - mappingOffset = 2076 - Mapping = - 6C5F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6C60 FFFD 5726 FFFD 4540 - FFFD FFFD FFFD 6B3C 302E FFFD FFFD FFFD - 3E74 3838 522F 3056 3579 FFFD 5833 FFFD - 4B2C FFFD 635D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 462C 3066 FFFD FFFD FFFD 4546 - 6B39 FFFD FFFD FFFD FFFD 6B3A FFFD FFFD - FFFD 6B3B FFFD FFFD 5140 FFFD 4523 FFFD - 6A72 FFFD 4432 FFFD 4435 404E FFFD FFFD - FFFD 6A73 4441 FFFD 4E6F FFFD FFFD FFFD - FFFD 6A70 6A74 FFFD FFFD 497C FFFD FFFD - 4723 FFFD FFFD FFFD 4C58 4E7E FFFD FFFD - FFFD 6A75 6A76 4F2C 4067 FFFD FFFD 6A77 - FFFD FFFD FFFD FFFD FFFD 363F 6A78 FFFD - 6A79 FFFD 6A7A FFFD FFFD 6A7B -End of Item 007C - -Begin of Item 007D - Format 2 - srcBegin = 729F - destBegin = 6A71 -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = 72AC - srcEnd = 733F - mappingOffset = 20EC - Mapping = - 482E 616B FFFD 3738 616C FFFD FFFD FFFD - 616D FFFD 5734 616E 616F 534C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6171 3F71 6170 - 3552 FFFD FFFD FFFD 3137 FFFD FFFD FFFD - FFFD 6173 6172 FFFD 3A7C FFFD 6174 FFFD - FFFD FFFD FFFD 3937 FFFD 3E51 FFFD FFFD - FFFD FFFD 447C FFFD 3A5D 3D46 FFFD FFFD - FFFD FFFD FFFD FFFD 6175 6177 FFFD FFFD - 3640 4F41 4A28 6176 5578 537C 6178 617C - 6179 FFFD FFFD 617A 406A FFFD 617E 6221 - 4047 FFFD FFFD FFFD FFFD 617B FFFD 617D - FFFD FFFD FFFD FFFD FFFD FFFD 6225 FFFD - FFFD FFFD 4154 FFFD FFFD FFFD FFFD 6223 - FFFD 6228 327E 6222 FFFD FFFD FFFD 434D - 3242 6227 6226 FFFD FFFD 6224 6229 FFFD - FFFD 622B FFFD FFFD FFFD 5049 566D 4328 - 622C FFFD 4F57 FFFD FFFD 622E FFFD FFFD - 3A6F FFFD FFFD 6960 622D 622A FFFD FFFD - FFFD FFFD 3B2B 5433 -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = 734D - srcEnd = 7360 - mappingOffset = 2180 - Mapping = - 6230 FFFD FFFD 622F FFFD 6961 FFFD FFFD - FFFD FFFD 6231 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6232 -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = 736C - srcEnd = 736F - mappingOffset = 2194 - Mapping = - 6233 4C21 FFFD 6234 -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = 737E - srcEnd = 73F2 - mappingOffset = 2198 - Mapping = - 6235 FFFD FFFD FFFD FFFD FFFD 507E FFFD - FFFD 424A FFFD 5371 FFFD 4D75 FFFD FFFD - 6760 FFFD FFFD 6761 FFFD FFFD FFFD FFFD - 3E41 FFFD FFFD FFFD FFFD 426A FFFD FFFD - FFFD 6764 FFFD FFFD 6763 FFFD FFFD FFFD - FFFD FFFD FFFD 4D66 FFFD 4335 FFFD FFFD - 6762 3B37 4F56 FFFD 4161 6769 FFFD FFFD - FFFD 6768 FFFD FFFD 6774 3223 FFFD FFFD - FFFD FFFD 676A FFFD 6766 FFFD FFFD FFFD - FFFD FFFD 676C 676B 493A FFFD FFFD 5564 - FFFD 6765 3729 6767 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 676E FFFD FFFD FFFD FFFD - 6773 FFFD 5669 FFFD FFFD FFFD FFFD 676D - FFFD 6772 FFFD 6771 FFFD FFFD FFFD 3060 - FFFD FFFD FFFD FFFD 6775 -End of Item 0081 - -Begin of Item 0082 - Format 1 - srcBegin = 7403 - srcEnd = 7441 - mappingOffset = 220D - Mapping = - 4772 FFFD 4045 406D FFFD FFFD 4170 6770 - FFFD FFFD FFFD FFFD 6776 4B76 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6822 - 6821 FFFD FFFD FFFD FFFD FFFD FFFD 5741 - FFFD FFFD 677A 6779 FFFD 677B FFFD 6777 - FFFD 677E FFFD 677D FFFD 677C FFFD FFFD - 4155 4759 457D 4543 FFFD FFFD FFFD FFFD - FFFD 476D FFFD FFFD FFFD FFFD 6823 -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = 7455 - srcEnd = 745F - mappingOffset = 224C - Mapping = - 6826 FFFD 6825 FFFD 6827 3A77 6778 6824 - FFFD 4870 492A -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = 746D - srcEnd = 7490 - mappingOffset = 2257 - Mapping = - 6829 FFFD FFFD 3965 FFFD FFFD FFFD FFFD - FFFD 517E 6828 FFFD FFFD FFFD FFFD FFFD - FFFD 682A FFFD 682D 682E FFFD 4127 FFFD - FFFD FFFD 682F FFFD FFFD FFFD 6830 FFFD - FFFD 682C FFFD 6834 -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = 749C - srcEnd = 74A9 - mappingOffset = 227B - Mapping = - 682B FFFD 6831 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6835 6832 6833 -End of Item 0085 - -Begin of Item 0086 - Format 2 - srcBegin = 74BA - destBegin = 6837 -End of Item 0086 - -Begin of Item 0087 - Format 1 - srcBegin = 74D2 - srcEnd = 770D - mappingOffset = 2289 - Mapping = - 6836 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 394F FFFD 702C FFFD 702D FFFD - 4630 306A 483F FFFD 4D5F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4E4D 6A31 FFFD FFFD - FFFD FFFD 6A32 FFFD 463F 3449 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6A33 FFFD FFFD - FFFD FFFD 5567 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5D79 FFFD 6A34 FFFD 6A35 - FFFD 6A36 FFFD FFFD FFFD FFFD 384A 5F30 - 4975 FFFD 4C70 FFFD FFFD 497A FFFD FFFD - FFFD FFFD FFFD 497B FFFD FFFD 5343 4B26 - FFFD 3826 702E 3142 FFFD 6538 4C6F 5349 - 3C57 496A FFFD 3567 FFFD 4450 3569 FFFD - 6E2E 3B2D FFFD FFFD 675E FFFD 6E2F FFFD - FFFD FFFD FFFD 3329 FFFD FFFD 6E32 FFFD - FFFD 6E31 3D67 FFFD 6E30 4E37 FFFD FFFD - FFFD FFFD 454F FFFD FFFD FFFD FFFD 4174 - 5B4E 6E33 5073 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4254 4668 FFFD FFFD FFFD - 372C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6E34 FFFD 336B FFFD FFFD FFFD 3B7B 6E35 - FFFD FFFD FFFD FFFD FFFD 675C FFFD FFFD - FFFD 6E36 FFFD FFFD 3D2E FFFD FFFD FFFD - FFFD 7162 FFFD FFFD FFFD 4A68 FFFD 5249 - 705A FFFD 705B FFFD 705C 4146 FFFD 386D - 3E4E FFFD FFFD 705E FFFD 4531 705D 5171 - FFFD 7060 304C 3D6A FFFD FFFD FFFD FFFD - FFFD 525F 705F FFFD 342F 3768 7066 7065 - 4623 7061 7062 3443 FFFD FFFD 7063 556E - FFFD FFFD 4C5B 3E52 3C32 FFFD FFFD FFFD - 7068 7067 7064 3221 FFFD 5622 5338 3E37 - 482C FFFD FFFD 706A FFFD FFFD FFFD FFFD - 5177 FFFD 564C 3A5B 7069 FFFD 363B FFFD - FFFD 4D34 FFFD FFFD 4626 FFFD FFFD FFFD - 4121 706B 706E FFFD 706D 7070 706C FFFD - 3B3E 706F FFFD FFFD FFFD FFFD 4C35 7072 - FFFD FFFD 3355 FFFD FFFD FFFD FFFD 3154 - FFFD FFFD 7073 FFFD FFFD 7074 7076 3461 - FFFD 7071 FFFD 7077 FFFD FFFD FFFD FFFD - 707A FFFD 7078 FFFD FFFD FFFD 7075 FFFD - FFFD FFFD FFFD 707D FFFD 7079 707C 707E - FFFD 7121 FFFD FFFD FFFD 4E41 7124 FFFD - 7123 FFFD 4176 707B 4A5D FFFD FFFD 3471 - 3171 4C31 FFFD 7126 FFFD FFFD 7127 FFFD - FFFD 712C 554E 7129 FFFD FFFD 4833 FFFD - FFFD FFFD 7122 FFFD 712B 7128 7125 FFFD - FFFD 712A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3029 712D FFFD FFFD FFFD FFFD - FFFD FFFD 712F FFFD 7131 FFFD FFFD FFFD - FFFD FFFD 7130 FFFD 712E FFFD FFFD FFFD - FFFD 5122 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7132 FFFD FFFD FFFD 7133 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 396F FFFD - FFFD 3547 FFFD 3057 3059 FFFD FFFD FFFD - 546D FFFD 3544 FFFD 3D54 3B4A 7027 FFFD - FFFD 385E FFFD FFFD 7028 FFFD FFFD 3028 - FFFD 7029 FFFD FFFD 4D6E FFFD FFFD 702A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 702B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4624 FFFD FFFD 5665 - 7164 FFFD 7165 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4373 FFFD FFFD - 535B FFFD FFFD 5651 4568 FFFD 532F FFFD - 5266 FFFD FFFD 6E41 303B 5535 514E 3C60 - 3A50 FFFD 3F78 FFFD 3847 3541 454C FFFD - FFFD 4A22 FFFD FFFD FFFD 434B FFFD FFFD - FFFD FFFD FFFD 6E42 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 443F 3622 FFFD 6D6C - 4324 FFFD 5631 FFFD FFFD FFFD 4F60 6D6F - FFFD FFFD 454E FFFD 365C FFFD FFFD 4A21 - FFFD FFFD 6D6D FFFD FFFD 6D70 6D71 433C - FFFD 3F34 FFFD 6D6E -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = 7719 - srcEnd = 776C - mappingOffset = 24C5 - Mapping = - 6D74 6D72 FFFD FFFD FFFD FFFD 5566 435F - FFFD 6D73 FFFD FFFD FFFD 6D76 FFFD 5523 - 5123 FFFD FFFD FFFD 6D75 FFFD 4350 FFFD - FFFD FFFD FFFD FFFD 6D77 3F74 3E6C 6D78 - FFFD 4C77 FFFD 515B FFFD FFFD FFFD 5745 - 5576 FFFD 6D7C FFFD FFFD FFFD 6D7B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6D79 - 6D7A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6D7D 3E26 FFFD FFFD FFFD FFFD FFFD - 4B2F 6E21 363D FFFD 6E22 4440 FFFD 6D7E - FFFD FFFD 3D5E 3247 -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = 7779 - srcEnd = 7792 - mappingOffset = 2519 - Mapping = - 3643 FFFD FFFD FFFD 6E25 583A 6E23 6E26 - FFFD FFFD FFFD 4369 3372 FFFD FFFD FFFD - FFFD FFFD FFFD 6E27 6E24 4F39 FFFD FFFD - 6E28 4277 -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = 779F - srcEnd = 77BF - mappingOffset = 2533 - Mapping = - 6E29 6E2A FFFD 5E2B FFFD FFFD 4633 FFFD - 4746 FFFD 5675 3549 FFFD 4B32 FFFD FFFD - FFFD 6E2B FFFD FFFD 4D2B FFFD 6E2C FFFD - FFFD FFFD FFFD FFFD 5530 FFFD 6E2D FFFD - 7644 -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = 77CD - srcEnd = 785D - mappingOffset = 2554 - Mapping = - 5B47 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3423 FFFD FFFD FFFD 432C 7166 - FFFD FFFD FFFD FFFD FFFD 4A38 5253 FFFD - 562A FFFD 6F72 FFFD 3E58 FFFD 3D43 6F73 - 364C 302B FFFD FFFD FFFD FFFD 4A2F FFFD - FFFD 6D36 FFFD 6D37 FFFD FFFD FFFD FFFD - 4E79 372F 3F73 6D38 426B 4930 FFFD FFFD - FFFD FFFD FFFD FFFD 6D39 FFFD FFFD 4676 - 3F33 FFFD FFFD FFFD 6D3C 4578 FFFD 5150 - FFFD 5729 6D3A 6D3B FFFD 5162 FFFD 6D3F - 6D40 FFFD 6D44 FFFD FFFD FFFD 6D48 FFFD - 6D46 6D4E 5568 FFFD 6D49 FFFD FFFD 6D47 - 6D3E FFFD FFFD 4569 FFFD FFFD FFFD 4646 - FFFD FFFD 4969 5452 6D41 6D42 6D43 6D45 - FFFD 4079 FFFD 3421 FFFD FFFD FFFD FFFD - 3968 FFFD 6D50 FFFD FFFD FFFD FFFD 6D51 - FFFD 6D4A FFFD 6D4F FFFD 4E78 FFFD FFFD - 4B36 6D4C 6D4D FFFD FFFD FFFD FFFD FFFD - 4F75 -End of Item 008B - -Begin of Item 008C - Format 1 - srcBegin = 786A - srcEnd = 78D9 - mappingOffset = 25E5 - Mapping = - 6D52 4172 5332 6D4B 4837 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3C6F FFFD FFFD - FFFD FFFD 4570 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6D56 FFFD 356F - FFFD FFFD 4235 302D 4B69 FFFD FFFD 312E - FFFD 6D54 FFFD FFFD FFFD 4D6B 3562 FFFD - 6D55 6D53 6D57 FFFD FFFD 357A FFFD 6D58 - FFFD 6D59 FFFD 6D5C FFFD 314C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4576 3C6E - 6D5A 4C3C 326A FFFD FFFD FFFD FFFD 6D5B - FFFD FFFD FFFD FFFD 446B FFFD FFFD 3445 - FFFD FFFD FFFD 3075 FFFD FFFD FFFD 6D5F - 405A 3468 FFFD FFFD FFFD FFFD 454D FFFD - FFFD FFFD 6D5D 3F44 FFFD FFFD FFFD 6D5E -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = 78E8 - srcEnd = 7905 - mappingOffset = 2655 - Mapping = - 4425 FFFD FFFD FFFD 6D60 FFFD FFFD FFFD - FFFD FFFD 6D61 FFFD 6D63 FFFD FFFD 4157 - FFFD FFFD 3B47 FFFD FFFD FFFD FFFD FFFD - FFFD 3D38 FFFD FFFD FFFD 6D62 -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = 7913 - srcEnd = 7924 - mappingOffset = 2673 - Mapping = - 6D64 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6D66 FFFD FFFD FFFD FFFD - FFFD 6D65 -End of Item 008E - -Begin of Item 008F - Format 1 - srcBegin = 7934 - srcEnd = 799A - mappingOffset = 2685 - Mapping = - 6D67 FFFD FFFD FFFD FFFD FFFD 4A3E 6C6A - 4071 FFFD 4967 FFFD 6C6B 466E FFFD FFFD - FFFD FFFD 6C6C FFFD 466D 6C6D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6C70 - FFFD FFFD 5766 6C73 FFFD FFFD 6C71 6C6E - 6C6F 5723 4971 4B6E 6C74 FFFD 6C72 FFFD - FFFD 4F69 FFFD 6C76 4631 FFFD FFFD FFFD - FFFD 3C40 FFFD 6C75 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 353B 3B76 FFFD 6C77 FFFD - FFFD FFFD FFFD FFFD 5977 3D7B FFFD FFFD - 423B 6C78 FFFD FFFD FFFD FFFD 6C79 FFFD - FFFD FFFD FFFD 3823 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6C7A -End of Item 008F - -Begin of Item 0090 - Format 2 - srcBegin = 79A7 - destBegin = 6C7B -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = 79B3 - srcEnd = 7A23 - mappingOffset = 26EC - Mapping = - 6C7C FFFD FFFD FFFD FFFD FFFD 536D 582E - 406B FFFD 475D 3A4C FFFD 5063 4B3D FFFD - 4D3A FFFD FFFD 3851 FFFD FFFD 317C FFFD - 476F FFFD 5656 FFFD FFFD FFFD 3F46 436B - FFFD FFFD 6F75 FFFD FFFD 4358 FFFD FFFD - FFFD FFFD FFFD FFFD 5762 FFFD FFFD FFFD - 6F77 3353 FFFD 4758 516D FFFD 5648 FFFD - 6F78 FFFD 6F76 FFFD 3B7D 3346 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3D55 FFFD FFFD - 5246 FFFD 3B60 FFFD FFFD 4F21 FFFD 6F7C - 6F7B FFFD FFFD 6F79 FFFD FFFD FFFD FFFD - 334C FFFD 4954 4B30 FFFD FFFD FFFD FFFD - FFFD 6F7E FFFD FFFD 305E FFFD FFFD 5649 - FFFD FFFD FFFD 6F7D FFFD 336D FFFD FFFD - 7655 -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = 7A33 - srcEnd = 7A57 - mappingOffset = 275D - Mapping = - 4E48 FFFD FFFD FFFD 7022 FFFD 7021 FFFD - 353E 3C5A 3B7C FFFD 3865 FFFD FFFD FFFD - FFFD FFFD FFFD 4442 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7023 FFFD - FFFD FFFD FFFD FFFD 4B6B -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = 7A70 - srcEnd = 7AB3 - mappingOffset = 2782 - Mapping = - 7026 FFFD FFFD FFFD 5128 FFFD 3E3F 476E - 7136 7137 3F55 FFFD FFFD FFFD FFFD 3429 - 7138 4D3B FFFD 4754 552D FFFD 7139 FFFD - 713A FFFD FFFD FFFD FFFD 474F FFFD FFFD - FFFD 5224 564F FFFD FFFD 713B 3D51 3430 - 3E3D FFFD FFFD FFFD 345C 4E51 FFFD 3F5F - 713D FFFD FFFD FFFD FFFD 3F7A 713C FFFD - 713F FFFD FFFD FFFD 713E 7140 FFFD FFFD - FFFD FFFD FFFD 7141 -End of Item 0093 - -Begin of Item 0094 - Format 2 - srcBegin = 7ABF - destBegin = 417E -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = 7ACB - srcEnd = 7B62 - mappingOffset = 27C6 - Mapping = - 4122 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4A7A FFFD FFFD 553E FFFD - FFFD FFFD FFFD 3E3A 3E39 5542 FFFD FFFD - 3F22 FFFD 4D2F 7135 FFFD FFFD FFFD FFFD - FFFD FFFD 3D5F FFFD 364B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5671 7343 - FFFD FFFD 7344 FFFD 384D FFFD FFFD FFFD - 7346 7347 FFFD 304A FFFD 7345 FFFD 7349 - 4B71 FFFD FFFD FFFD 734B FFFD 5026 FFFD - FFFD 314A 7348 FFFD FFFD FFFD 734F FFFD - 3551 FFFD FFFD 7357 FFFD 7352 FFFD FFFD - FFFD 7354 7353 377B FFFD 313F FFFD 734E - 734A 355A FFFD 7350 FFFD FFFD 7351 FFFD - 7355 FFFD FFFD FFFD FFFD 734D FFFD 3C63 - FFFD 417D FFFD 7356 FFFD FFFD FFFD FFFD - FFFD FFFD 735A FFFD 734C FFFD 3548 FFFD - 3D6E 735C FFFD FFFD 3724 3F70 567E 4D32 - FFFD 3470 FFFD 325F FFFD 7358 FFFD 7359 - 4938 FFFD 735D FFFD FFFD 735E FFFD 7361 -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = 7B6E - srcEnd = 7C2A - mappingOffset = 285E - Mapping = - 735F FFFD FFFD 7363 7362 FFFD FFFD 735B - FFFD 3F6A FFFD 336F FFFD 7360 FFFD FFFD - 4729 FFFD 3C72 FFFD FFFD FFFD FFFD 736B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 393F - FFFD FFFD 7364 FFFD FFFD FFFD 322D 3B7E - FFFD 4B63 FFFD FFFD FFFD FFFD 736D 7369 - FFFD FFFD FFFD 395C 736E FFFD FFFD FFFD - 7365 7366 736A 4261 736C 736F 7368 3C7D - FFFD FFFD FFFD 4F64 FFFD FFFD 7370 FFFD - FFFD FFFD 7367 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7372 FFFD FFFD FFFD FFFD - 572D 462A FFFD FFFD FFFD FFFD 7373 FFFD - FFFD FFFD FFFD 7371 FFFD 4228 FFFD FFFD - FFFD FFFD FFFD 385D 7375 FFFD FFFD 7374 - FFFD FFFD FFFD 345B FFFD FFFD FFFD 7376 - 7377 FFFD FFFD FFFD 7378 FFFD FFFD FFFD - 403A FFFD FFFD 4069 FFFD FFFD FFFD FFFD - FFFD 4571 FFFD FFFD FFFD FFFD 737B FFFD - 737A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3458 FFFD FFFD FFFD 737E 7379 FFFD - FFFD 737C FFFD FFFD FFFD FFFD FFFD FFFD - 737D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7421 FFFD FFFD FFFD FFFD FFFD FFFD - 7423 3B49 FFFD FFFD 7422 -End of Item 0096 - -Begin of Item 0097 - Format 1 - srcBegin = 7C38 - srcEnd = 7C41 - mappingOffset = 291B - Mapping = - 7424 FFFD FFFD FFFD FFFD FFFD FFFD 323E - 7426 7425 -End of Item 0097 - -Begin of Item 0098 - Format 2 - srcBegin = 7C4D - destBegin = 3C2E -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = 7C73 - srcEnd = 7C7D - mappingOffset = 2925 - Mapping = - 4357 5961 FFFD FFFD FFFD FFFD FFFD FFFD - 4060 744C 5751 -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = 7C89 - srcEnd = 7CFB - mappingOffset = 2930 - Mapping = - 375B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 744E 4123 FFFD FFFD 4649 FFFD 3456 5533 - FFFD FFFD FFFD 7450 744F 7451 4B5A FFFD - FFFD 7452 FFFD 5441 5660 FFFD FFFD FFFD - FFFD 3760 FFFD FFFD FFFD 4138 FFFD FFFD - 413B 7453 3E2C FFFD FFFD FFFD FFFD FFFD - 3462 FFFD FFFD 7454 7455 3E2B FFFD FFFD - 7456 FFFD FFFD FFFD 745B FFFD 7457 745A - FFFD 3A7D FFFD 7458 7459 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3862 4C47 745C FFFD - 325A FFFD FFFD 4353 FFFD FFFD 5463 3F37 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 745D - FFFD FFFD FFFD FFFD FFFD FFFD 4534 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7469 - FFFD FFFD 4F35 -End of Item 009A - -Begin of Item 009B - Format 2 - srcBegin = 7D0A - destBegin = 4E49 -End of Item 009B - -Begin of Item 009C - Format 1 - srcBegin = 7D20 - srcEnd = 7D2F - mappingOffset = 29A3 - Mapping = - 4B58 FFFD 4B77 FFFD FFFD FFFD FFFD 3D74 - FFFD FFFD FFFD 574F FFFD FFFD FFFD 405B -End of Item 009C - -Begin of Item 009D - Format 1 - srcBegin = 7D6E - srcEnd = 7D77 - mappingOffset = 29B3 - Mapping = - 5075 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 746A -End of Item 009D - -Begin of Item 009E - Format 1 - srcBegin = 7DA6 - srcEnd = 7DAE - mappingOffset = 29BD - Mapping = - 746B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 746C -End of Item 009E - -Begin of Item 009F - Format 1 - srcBegin = 7E3B - srcEnd = 7E47 - mappingOffset = 29C6 - Mapping = - 7763 FFFD FFFD FFFD FFFD FFFD 3731 FFFD - FFFD FFFD FFFD FFFD 746D -End of Item 009F - -Begin of Item 00A0 - Format 2 - srcBegin = 7E82 - destBegin = 576B -End of Item 00A0 - -Begin of Item 00A1 - Format 1 - srcBegin = 7E9B - srcEnd = 805A - mappingOffset = 29D3 - Mapping = - 746E FFFD FFFD FFFD 6679 3E40 667A 3A6C - 667B 4F4B 667C 543C 3C36 667D 667E 3C4D - 4852 4E33 6721 FFFD 343F 6722 4934 3859 - 4449 FFFD 575D 425A 3757 563D 4E46 3744 - FFFD FFFD 4526 6723 4F5F 6724 6725 6726 - 4137 5769 4970 4F38 562F 5655 6727 306D - 6728 6729 495C 526F 3E2D 672A 3073 485E - 3D61 672B 4846 FFFD 672C 3B66 3878 5124 - 672D 4267 3E78 3D4A 4D33 672E 672F 3E6E - 5065 FFFD 4B67 4C50 3C4C 6730 3C28 5077 - 6731 FFFD 5078 6732 6733 3442 6734 6735 - 497E 4E2C 4360 6737 3141 3371 FFFD 6738 - 6739 575B 5540 673A 424C 573A 673B 673C - 673D 3C6A 4365 4042 673E 673F 3C29 FFFD - 6740 6741 6736 3650 6742 FFFD 6743 6744 - 3B3A 355E 4246 3160 6745 5435 6746 383F - 6748 6747 376C FFFD 6749 3278 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5327 4B75 6751 - 6752 6753 6754 4949 6755 6756 6757 6758 - 6759 3D49 675A 733E FFFD 3857 FFFD 4831 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 733F - FFFD 7340 7341 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 395E 4D78 FFFD - FFFD 5868 3A31 FFFD 425E 6E37 FFFD 3723 - FFFD FFFD FFFD FFFD 6E39 FFFD 6E38 3055 - FFFD FFFD FFFD FFFD FFFD 6E3B 5556 576F - FFFD FFFD FFFD 5643 FFFD FFFD 6E3D 4A70 - FFFD 6E3C FFFD FFFD FFFD FFFD 6E3E FFFD - FFFD FFFD FFFD 6E40 FFFD FFFD 6E3F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5172 - FFFD 473C FFFD 4340 FFFD FFFD FFFD FFFD - FFFD 3861 FFFD FFFD FFFD FFFD FFFD 4167 - FFFD FFFD 7446 505F 7447 FFFD 4F5B FFFD - FFFD 483A FFFD FFFD 7448 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7449 744A FFFD 744B - FFFD FFFD FFFD FFFD FFFD 597A 387E FFFD - FFFD 6571 5370 FFFD 7460 FFFD 4E4C FFFD - FFFD FFFD 3361 FFFD FFFD FFFD FFFD 7134 - FFFD 526E FFFD 7461 FFFD FFFD FFFD FFFD - FFFD 4F68 7462 FFFD FFFD 474C FFFD FFFD - FFFD FFFD FFFD FFFD 3554 3464 7464 FFFD - FFFD FFFD 7463 7465 FFFD FFFD 7466 FFFD - FFFD FFFD FFFD 7467 FFFD 3A32 303F FFFD - 7468 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 372D 526D FFFD FFFD FFFD 522B 404F FFFD - 3F3C 6B23 555F 6A48 FFFD FFFD FFFD FFFD - 7173 3678 4B23 FFFD FFFD 444D FFFD 7167 - FFFD 7168 387B 7169 3A44 5445 3052 FFFD - FFFD 716A FFFD FFFD FFFD 716B FFFD 716C - FFFD FFFD 716D 716E 716F 7171 7170 4555 - FFFD FFFD FFFD FFFD FFFD FFFD 7172 FFFD - 367A FFFD 7174 522E 5E47 4B4A FFFD FFFD - 335C FFFD 3522 FFFD 3922 FFFD FFFD 4474 - 7175 FFFD FFFD 7176 FFFD FFFD FFFD 4144 - 417B 5630 7177 FFFD FFFD FFFD FFFD 7178 - FFFD 412A FFFD FFFD FFFD 4638 FFFD 3E5B -End of Item 00A1 - -Begin of Item 00A2 - Format 1 - srcBegin = 8069 - srcEnd = 8071 - mappingOffset = 2B93 - Mapping = - 7179 344F FFFD FFFD FFFD FFFD FFFD FFFD - 717A -End of Item 00A2 - -Begin of Item 00A3 - Format 1 - srcBegin = 807F - srcEnd = 811E - mappingOffset = 2B9C - Mapping = - 6D32 6D31 FFFD FFFD 4B60 525E FFFD 4B41 - 5558 FFFD 4862 FFFD 405F 3C21 FFFD FFFD - FFFD FFFD FFFD FFFD 6B41 FFFD FFFD 5024 - FFFD 5662 FFFD 3647 3858 6B40 384E FFFD - 6B3F 3326 3949 562B FFFD 3774 374A FFFD - FFFD FFFD 3C67 373E 6B46 FFFD 6B47 3039 - 3F4F FFFD 6B45 537D FFFD 6B48 FFFD FFFD - 6B49 FFFD FFFD 374E FFFD 6B42 6B44 4976 - 5657 554D 5032 6B4F 4E38 6B50 FFFD 3528 - FFFD FFFD FFFD FFFD FFFD 3133 6B52 4C25 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4556 - 6B53 FFFD 6B51 455F 6B4E 4A24 6B55 307B - FFFD FFFD 3A7A FFFD FFFD 5837 7163 FFFD - 6B4A 6B4B 6B4C 6B4D 6B56 6640 6B59 FFFD - 3F68 5248 6B57 6B5C 386C 6B58 FFFD 3D3A - FFFD 5058 FFFD 3037 FFFD 6B5D 445C FFFD - FFFD FFFD FFFD 562C FFFD FFFD FFFD 3460 - FFFD FFFD 4276 3C39 FFFD FFFD 6B5A 6B5B - 5460 466A 4454 6B5F 4527 5975 FFFD 3231 - FFFD 6B64 FFFD 3D45 FFFD FFFD FFFD 6B62 -End of Item 00A3 - -Begin of Item 00A4 - Format 1 - srcBegin = 812C - srcEnd = 81CC - mappingOffset = 2C3C - Mapping = - 6B63 FFFD FFFD 382C FFFD 4D51 6B65 FFFD - FFFD FFFD 6B61 FFFD 4133 FFFD FFFD FFFD - FFFD FFFD 4622 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4C73 FFFD 6B66 FFFD 4030 5238 - 6B67 FFFD FFFD FFFD 382F 382D FFFD 6B68 - 473B 4D73 FFFD FFFD FFFD 6B6A 6B6B FFFD - FFFD FFFD FFFD FFFD 6B6D FFFD FFFD FFFD - FFFD 5048 FFFD 6B72 FFFD 6B6E FFFD FFFD - FFFD 6B71 4879 FFFD 517C 6B6C FFFD FFFD - 6B69 FFFD FFFD FFFD FFFD 3839 4F59 4465 - 6B6F 6B70 4C5A 4D48 3072 FFFD 6B76 FFFD - FFFD FFFD FFFD FFFD 6B75 FFFD 3232 FFFD - FFFD FFFD FFFD 3860 FFFD 6B77 FFFD FFFD - FFFD FFFD FFFD FFFD 316C FFFD FFFD 4C45 - 4424 4F25 FFFD FFFD FFFD FFFD FFFD 6B79 - FFFD FFFD 6C22 FFFD 4572 FFFD 6B7A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4945 - FFFD FFFD FFFD FFFD FFFD FFFD 625F 6B7E - FFFD FFFD FFFD FFFD 4D4E 6C21 315B 5337 - FFFD FFFD 525C FFFD FFFD FFFD 6B7D FFFD - 6B7B -End of Item 00A4 - -Begin of Item 00A5 - Format 1 - srcBegin = 81E3 - srcEnd = 84A1 - mappingOffset = 2CDD - Mapping = - 333C FFFD FFFD FFFD 6A30 FFFD FFFD 5754 - FFFD 742B 3374 FFFD FFFD FFFD FFFD FFFD - 5641 5642 FFFD FFFD FFFD FFFD FFFD FFFD - 5569 3E4A FFFD 7427 FFFD 5228 7428 7429 - FFFD 742A 3E4B 535F FFFD FFFD FFFD FFFD - FFFD 4960 4961 FFFD FFFD 7342 FFFD 4A66 - FFFD 4C72 FFFD FFFD FFFD FFFD FFFD FFFD - 6236 4B34 FFFD 4E68 565B FFFD 742D 742E - 742F FFFD FFFD FFFD FFFD 7432 FFFD 3A3D - 7433 3063 7430 FFFD 7431 3D22 3255 FFFD - 7436 7437 3666 3230 4F4F 7434 342C FFFD - 7435 FFFD FFFD 7438 FFFD FFFD FFFD FFFD - FFFD 7439 FFFD FFFD 4D27 FFFD 743A FFFD - 743B FFFD FFFD FFFD 743C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4B52 FFFD 743D - FFFD FFFD FFFD FFFD 743E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 743F FFFD FFFD - FFFD FFFD FFFD 745E 413C 3C68 FFFD 492B - 515E 6575 FFFD FFFD FFFD FFFD 5C33 5255 - FFFD FFFD 5C34 302C 5C35 FFFD FFFD 3D5A - FFFD 5C39 FFFD FFFD FFFD 5842 FFFD 5C37 - 5373 FFFD 4956 5C3A 5C36 FFFD 5C3B 4322 - FFFD FFFD FFFD FFFD 5C3C 5C45 5C3D FFFD - FFFD 4E5F 5625 FFFD 5C4F FFFD 5C4D FFFD - FFFD 5C52 3D66 422B FFFD 5C38 5C4B 5C4E - 5C3E 3752 3045 5C47 503E 5C41 3B28 FFFD - 373C 5C4C FFFD FFFD 5C46 5C3F 475B FFFD - FFFD FFFD 513F 5C40 FFFD FFFD 5C4A FFFD - FFFD 5C50 FFFD FFFD 4E2D 5C42 FFFD 5C43 - 5C48 5C49 3254 5C51 4B55 FFFD 5437 5C5B - 5C5F 4C26 5C66 FFFD 4367 5C5C FFFD FFFD - 3F41 5C59 FFFD 307A 3936 5C65 5C53 FFFD - 5C44 5C56 4874 3F60 FFFD FFFD FFFD FFFD - 493B FFFD FFFD FFFD 313D FFFD 5322 FFFD - FFFD 5C5A FFFD FFFD 5C55 FFFD 463B FFFD - 5C5E FFFD FFFD FFFD FFFD FFFD 5742 432F - 3736 4751 4329 5C62 5C58 5C6B 5C54 FFFD - FFFD 5C5D FFFD 3E25 5C57 FFFD 5C60 FFFD - FFFD 5C63 5C64 FFFD 5C78 FFFD FFFD 5C61 - 5D22 5C67 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3C6B 3444 FFFD FFFD - 4323 3267 5C7A FFFD 5C72 FFFD 5C6F FFFD - 5C7C 5C6E 5270 3268 FFFD 4857 4863 5C7B - FFFD 5C6D FFFD FFFD FFFD 5C77 FFFD FFFD - 5C75 FFFD FFFD 3E23 5C74 FFFD 325D FFFD - FFFD FFFD FFFD FFFD 5C73 3C76 5C68 3B44 - FFFD 4073 FFFD FFFD FFFD FFFD FFFD 3C54 - 5C69 5C6A FFFD 5C71 5C76 5C79 3534 FFFD - 4859 3B67 5C7E 5C7D 532B 5D21 5D23 5D25 - 5271 5D24 5D26 5D27 5229 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3A49 5D29 FFFD FFFD - 5D36 5D31 5D34 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5D30 464E FFFD FFFD 4072 FFFD - FFFD FFFD FFFD 492F FFFD FFFD FFFD 5C6C - 5D2E FFFD FFFD FFFD FFFD 5D37 FFFD FFFD - 5C70 5D2F FFFD 5D38 FFFD 5D2C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5D39 5D33 5D2D - 442A FFFD FFFD FFFD FFFD 5D28 4033 412B - 5D2A 5D2B FFFD 5D32 3B71 5D35 5328 5D3A - FFFD 5D3B 4327 FFFD FFFD 5D52 5D3C FFFD - FFFD FFFD 5D51 FFFD 393D FFFD FFFD 3E55 - FFFD 3E7A FFFD FFFD 3A4A FFFD FFFD FFFD - FFFD 5D4A FFFD 5D45 FFFD 5D3F FFFD FFFD - FFFD 324B 5D43 FFFD 5D4B 3224 5D55 FFFD - FFFD FFFD 5D3E FFFD FFFD FFFD 4650 5D50 - FFFD FFFD FFFD FFFD FFFD 5D54 4162 3746 - FFFD FFFD FFFD FFFD FFFD 5D4E 5D4F FFFD - FFFD FFFD 5D44 FFFD FFFD FFFD 5D3D FFFD - 5D4D 4C51 FFFD 5D49 FFFD FFFD FFFD FFFD - 5D42 4348 463C 4E2E 5D4C FFFD 5D48 FFFD - FFFD FFFD FFFD FFFD FFFD 5D41 FFFD FFFD - FFFD 5D46 425C FFFD FFFD FFFD FFFD FFFD - FFFD 5329 532A 5D53 4F74 4878 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5D66 FFFD - FFFD FFFD FFFD FFFD FFFD 5D47 FFFD FFFD - FFFD 5D60 4264 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5D61 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5D57 FFFD - FFFD FFFD FFFD FFFD 5678 FFFD 5D59 5D58 - 3870 5D56 FFFD FFFD FFFD FFFD 464F FFFD - 362D FFFD FFFD FFFD FFFD FFFD 5D62 FFFD - 3A79 5461 5D67 FFFD FFFD FFFD 3450 FFFD - 5D5A FFFD 3F7B 5D63 FFFD 5D5F FFFD 5D5D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3559 - FFFD FFFD FFFD FFFD 5D5B 5D5C 5D5E FFFD - 3D2F 5D64 FFFD 5D65 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5D75 FFFD 4349 FFFD - FFFD 4B62 FFFD FFFD FFFD FFFD 5D72 -End of Item 00A5 - -Begin of Item 00A6 - Format 1 - srcBegin = 84AF - srcEnd = 84F0 - mappingOffset = 2F9C - Mapping = - 5861 FFFD FFFD 4651 FFFD 5D74 FFFD FFFD - FFFD 5574 5D73 5D70 FFFD FFFD 5D6C FFFD - 5D6F FFFD 5D68 FFFD FFFD 506E FFFD FFFD - FFFD FFFD 4858 5D6E FFFD FFFD 5D69 FFFD - FFFD 5D6A 4B72 FFFD 5D6D FFFD FFFD 314D - FFFD FFFD FFFD FFFD FFFD FFFD 4036 FFFD - 3C3B 5D71 FFFD FFFD 5D77 FFFD 5D76 5D6B - FFFD FFFD FFFD FFFD FFFD 456E FFFD FFFD - FFFD 5D7B -End of Item 00A6 - -Begin of Item 00A7 - Format 1 - srcBegin = 84FC - srcEnd = 84FF - mappingOffset = 2FDE - Mapping = - 5E24 FFFD FFFD 5E23 -End of Item 00A7 - -Begin of Item 00A8 - Format 1 - srcBegin = 850C - srcEnd = 854A - mappingOffset = 2FE2 - Mapping = - 5D78 FFFD FFFD FFFD FFFD 436F FFFD 427B - FFFD FFFD FFFD 5561 FFFD FFFD 4E35 FFFD - FFFD FFFD FFFD 5D7D FFFD 324C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4468 - 4A5F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 473E 5D7A 5D7C 5D7E 5E22 - 302A 314E FFFD FFFD FFFD FFFD FFFD 5E2C - FFFD FFFD FFFD FFFD 5E26 3D36 486F -End of Item 00A8 - -Begin of Item 00A9 - Format 1 - srcBegin = 8556 - srcEnd = 858F - mappingOffset = 3021 - Mapping = - 5E21 FFFD FFFD 5E25 FFFD FFFD FFFD FFFD - 5E29 FFFD FFFD FFFD FFFD FFFD 5E28 FFFD - FFFD FFFD 5E27 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5E2D FFFD 544C FFFD - FFFD FFFD FFFD 5E33 5E2A 5E2E FFFD FFFD - 4059 FFFD FFFD FFFD FFFD FFFD 3121 5E36 - FFFD 5E31 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5E32 -End of Item 00A9 - -Begin of Item 00AA - Format 1 - srcBegin = 859B - srcEnd = 85E9 - mappingOffset = 305B - Mapping = - 5126 5E35 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5E2F FFFD FFFD FFFD 5E30 FFFD 503D - FFFD FFFD FFFD 5E34 4A6D 5E39 FFFD FFFD - FFFD FFFD FFFD FFFD 5E38 FFFD 5E37 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5E3B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3D65 FFFD - FFFD FFFD FFFD FFFD 3258 436A FFFD FFFD - 5E3A FFFD 453A FFFD FFFD FFFD FFFD FFFD - FFFD 5E3C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4C59 FFFD FFFD FFFD FFFD 372A -End of Item 00AA - -Begin of Item 00AB - Format 1 - srcBegin = 85FB - srcEnd = 8605 - mappingOffset = 30AA - Mapping = - 5465 FFFD FFFD FFFD 5E3D FFFD FFFD FFFD - FFFD FFFD 5E3F -End of Item 00AB - -Begin of Item 00AC - Format 1 - srcBegin = 8611 - srcEnd = 8616 - mappingOffset = 30B5 - Mapping = - 4422 FFFD FFFD FFFD FFFD 5E41 -End of Item 00AC - -Begin of Item 00AD - Format 1 - srcBegin = 8627 - srcEnd = 8629 - mappingOffset = 30BB - Mapping = - 5E3E FFFD 5E40 -End of Item 00AD - -Begin of Item 00AE - Format 1 - srcBegin = 8638 - srcEnd = 863C - mappingOffset = 30BE - Mapping = - 553A FFFD FFFD FFFD 5E42 -End of Item 00AE - -Begin of Item 00AF - Format 1 - srcBegin = 864D - srcEnd = 8822 - mappingOffset = 30C3 - Mapping = - 722E 3B22 4232 4530 4247 FFFD FFFD 722F - FFFD FFFD FFFD FFFD FFFD 5069 FFFD FFFD - FFFD 535D FFFD FFFD FFFD 6B3D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3366 7230 - FFFD 7231 FFFD FFFD 4A2D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3A67 7233 7235 7234 - 4B64 4F3A 7232 4A34 524F 426C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4E43 7238 3076 - 7237 FFFD FFFD FFFD FFFD FFFD 723E FFFD - 324F FFFD FFFD FFFD FFFD FFFD FFFD 5141 - 723A FFFD FFFD FFFD FFFD FFFD 723C 5469 - FFFD FFFD 723B 7236 723F 723D FFFD 7239 - FFFD FFFD 7247 7244 7246 FFFD FFFD 724A - 7242 7240 FFFD FFFD FFFD 7245 FFFD FFFD - FFFD FFFD FFFD 567B FFFD FFFD FFFD 7241 - FFFD 4779 495F FFFD 7248 3946 3530 FFFD - FFFD 7243 7249 7250 7256 FFFD FFFD 3B57 - FFFD FFFD FFFD 7255 4D5C FFFD 566B FFFD - FFFD 7252 7254 FFFD FFFD FFFD FFFD 3872 - FFFD FFFD FFFD FFFD 724B FFFD FFFD FFFD - 724E 4279 FFFD 555D 724C 724D 724F 7253 - FFFD FFFD FFFD 7259 533C FFFD FFFD FFFD - FFFD 366A FFFD 4A71 FFFD 3764 7257 FFFD - FFFD FFFD 7258 725A 725D 725B FFFD FFFD - 725C FFFD FFFD FFFD FFFD 5151 7251 FFFD - 4D49 FFFD 4E4F 5629 FFFD 7263 FFFD 435B - FFFD 7260 FFFD FFFD 402F 726C 725E FFFD - 7261 FFFD FFFD FFFD 7268 FFFD FFFD FFFD - FFFD 7262 FFFD FFFD 7267 FFFD FFFD 7266 - FFFD FFFD 7269 FFFD FFFD FFFD 725F FFFD - FFFD 7264 726A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 532C 7265 3275 FFFD FFFD 7272 - FFFD 502B FFFD FFFD FFFD FFFD 7275 FFFD - FFFD FFFD 3B48 FFFD 7279 FFFD FFFD FFFD - FFFD FFFD FFFD 7270 FFFD FFFD 7276 7278 - 727A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7273 FFFD 7271 FFFD FFFD FFFD 3A7B - FFFD 357B FFFD FFFD FFFD FFFD 726F 7277 - 726D 726E FFFD FFFD FFFD 726B 7326 FFFD - 7323 FFFD FFFD 7322 FFFD FFFD 7274 FFFD - 485A FFFD FFFD FFFD FFFD FFFD 727B FFFD - FFFD FFFD 7325 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4378 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 727D FFFD FFFD 7327 7329 - 7324 FFFD 727C FFFD FFFD FFFD 732B FFFD - 732A FFFD FFFD FFFD FFFD 425D FFFD FFFD - 732E FFFD FFFD 7330 FFFD FFFD FFFD FFFD - FFFD 7321 FFFD FFFD FFFD 7331 732C FFFD - FFFD FFFD FFFD FFFD 732F 727E 732D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7332 FFFD - FFFD FFFD FFFD 7334 FFFD FFFD FFFD FFFD - 7328 FFFD FFFD FFFD FFFD 7333 FFFD FFFD - FFFD 7335 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5037 FFFD FFFD FFFD - FFFD 7338 FFFD FFFD FFFD FFFD 5979 FFFD - FFFD FFFD FFFD FFFD FFFD 7339 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7337 FFFD - 4864 7336 FFFD FFFD FFFD FFFD 733A FFFD - FFFD FFFD FFFD FFFD 733B 3440 -End of Item 00AF - -Begin of Item 00B0 - Format 1 - srcBegin = 8832 - srcEnd = 8944 - mappingOffset = 3299 - Mapping = - 6E43 FFFD FFFD FFFD FFFD FFFD FFFD 733C - FFFD FFFD 733D FFFD FFFD FFFD 512A FFFD - FFFD FFFD 742C 5046 FFFD FFFD FFFD FFFD - FFFD FFFD 5050 515C FFFD FFFD FFFD FFFD - FFFD FFFD 4F4E FFFD FFFD 3D56 FFFD 5143 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3A62 - 6169 5242 7142 3239 FFFD FFFD 316D 7143 - FFFD 4940 3344 FFFD 5972 FFFD 4B25 FFFD - 7144 FFFD FFFD FFFD FFFD 5654 FFFD FFFD - FFFD FFFD FFFD 7145 7440 7146 FFFD 542C - 7147 FFFD 3040 7441 FFFD FFFD 7442 FFFD - FFFD 347C FFFD 455B FFFD FFFD FFFD FFFD - 4C3B FFFD FFFD FFFD 5064 FFFD FFFD FFFD - FFFD FFFD 4D60 FFFD FFFD FFFD FFFD FFFD - 7148 FFFD 5973 FFFD FFFD FFFD FFFD FFFD - FFFD 313B FFFD 4F2E FFFD FFFD FFFD 3824 - FFFD FFFD FFFD FFFD FFFD 714A FFFD FFFD - FFFD FFFD 714B FFFD FFFD FFFD FFFD 3243 - 4151 FFFD FFFD 5730 7149 FFFD FFFD 714C - FFFD FFFD FFFD FFFD 714E FFFD FFFD FFFD - 5976 FFFD 5261 5423 FFFD FFFD 7443 4839 - FFFD FFFD FFFD FFFD FFFD 7444 FFFD FFFD - 714D 714F 3F63 7150 FFFD FFFD 7154 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7156 7151 - FFFD 4951 4561 FFFD FFFD FFFD 4263 397C - FFFD FFFD 7153 FFFD 7155 FFFD FFFD FFFD - 3953 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 715B FFFD FFFD FFFD FFFD FFFD 3A56 FFFD - 307D 7159 FFFD FFFD FFFD FFFD FFFD 7158 - 7152 715A FFFD FFFD FFFD FFFD FFFD 7157 - FFFD FFFD FFFD 486C FFFD FFFD FFFD FFFD - 4D4A 715D FFFD FFFD FFFD FFFD 653D FFFD - FFFD FFFD 715C FFFD 715E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 715F - FFFD FFFD 4F65 -End of Item 00B0 - -Begin of Item 00B1 - Format 1 - srcBegin = 895E - srcEnd = 8966 - mappingOffset = 33AC - Mapping = - 7445 3D73 FFFD FFFD FFFD FFFD FFFD FFFD - 7160 -End of Item 00B1 - -Begin of Item 00B2 - Format 1 - srcBegin = 897B - srcEnd = 8986 - mappingOffset = 33B5 - Mapping = - 7161 FFFD FFFD FFFD 4E77 FFFD 522A FFFD - 717B FFFD FFFD 3832 -End of Item 00B2 - -Begin of Item 00B3 - Format 1 - srcBegin = 89C1 - srcEnd = 89F3 - mappingOffset = 33C1 - Mapping = - 3C7B 395B FFFD 3966 4359 4A53 6A68 4040 - 3E75 6A69 6A6A 6A6B FFFD 6A6C 6A6D 6A6E - 6A6F 3D47 FFFD FFFD FFFD 757B FFFD FFFD - FFFD 757D FFFD 757E FFFD 757C FFFD FFFD - FFFD FFFD 3D62 FFFD 7621 3425 FFFD FFFD - FFFD FFFD 7622 FFFD FFFD FFFD 7623 FFFD - FFFD FFFD 6C32 -End of Item 00B3 - -Begin of Item 00B4 - Format 1 - srcBegin = 8A00 - srcEnd = 8A07 - mappingOffset = 33F4 - Mapping = - 5154 FFFD FFFD FFFD FFFD FFFD FFFD 596A -End of Item 00B4 - -Begin of Item 00B5 - Format 1 - srcBegin = 8A3E - srcEnd = 8A48 - mappingOffset = 33FC - Mapping = - 7624 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6E3A -End of Item 00B5 - -Begin of Item 00B6 - Format 2 - srcBegin = 8A79 - destBegin = 5532 -End of Item 00B6 - -Begin of Item 00B7 - Format 1 - srcBegin = 8A89 - srcEnd = 8A93 - mappingOffset = 3407 - Mapping = - 537E 4C5C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4A44 -End of Item 00B7 - -Begin of Item 00B8 - Format 2 - srcBegin = 8B07 - destBegin = 6540 -End of Item 00B8 - -Begin of Item 00B9 - Format 2 - srcBegin = 8B26 - destBegin = 7625 -End of Item 00B9 - -Begin of Item 00BA - Format 1 - srcBegin = 8B66 - srcEnd = 8B6C - mappingOffset = 3412 - Mapping = - 3E2F FFFD FFFD FFFD FFFD FFFD 4629 -End of Item 00BA - -Begin of Item 00BB - Format 1 - srcBegin = 8BA0 - srcEnd = 8C98 - mappingOffset = 3419 - Mapping = - 5A25 3C46 3629 383C 484F 3C25 5A26 5A27 - 4C56 4843 5A28 467D FFFD 5135 5269 5136 - 3C47 FFFD 3D32 3B64 5A29 5A2A 5148 5A2B - 506D 366F 425B FFFD 4B4F 376D 4968 3743 - 3E77 5624 5A2C 5A2D 4640 5767 4A36 FFFD - 5529 4B5F 556F 5A2E 565F 344A 5A30 5A2F - FFFD 526B 5A31 5A32 5A33 4A54 5A34 4A2B - 5A35 5A36 334F 566F 5A37 3B30 352E 5A38 - 5A39 396E 512F 5268 5A3A 3843 4F6A 326F - 5A3B 5A3C FFFD 3D6B 4E5C 536F 5A3D 4E73 - 5A3E 5355 3B65 5A3F 4B35 4B50 5A40 476B - 566E 5A41 4535 3641 5A42 374C 3F4E 5A43 - 5A44 4B2D 5A45 3577 5A46 4142 573B 5A47 - 4C38 FFFD 526A 4431 5A48 357D 3B51 5A49 - 5033 5A4A 5A4B 4E3D 5A4C 5A4D 5A4E 3277 - 5A51 5A4F 5168 5A50 4355 5A52 FFFD 5A53 - 5A54 5A55 503B 5225 3079 5A56 472B 5A57 - 3D77 4321 5A58 5A59 437D 4C37 5A5A 5A5B - 403E 4657 5A5C 5A5D 4734 5A5E 5A5F 3948 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3B6D FFFD FFFD FFFD FFFD 3639 7478 - FFFD 7479 FFFD FFFD 4D63 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7539 FFFD FFFD - FFFD FFFD 6B60 FFFD FFFD FFFD FFFD FFFD - FFFD 4F73 3B3F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3A40 5425 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6159 FFFD FFFD FFFD FFFD - 7574 312A 3272 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7575 FFFD FFFD 7577 FFFD FFFD - FFFD 3A51 7576 FFFD 4332 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7579 FFFD FFFD FFFD - 7578 -End of Item 00BB - -Begin of Item 00BC - Format 1 - srcBegin = 8D1D - srcEnd = 8DA3 - mappingOffset = 3512 - Mapping = - 3134 556A 383A FFFD 3931 3246 5470 4F4D - 305C 554B 3B75 564A 3737 4C30 4636 3161 - 393A 567C 3961 3721 3C7A 6A5A 6A5B 4C79 - 3973 6A5C 347B 4333 3751 3A58 6A5D 5474 - 6A5E 3C56 3B5F 6A5F 415E 4238 545F 574A - 6A60 6A61 6A64 6A62 6A63 495E 3833 3644 - 6A65 4A6A 494D 344D FFFD FFFD 6259 4562 - 6A66 4035 FFFD 5738 6A67 572C 487C 5853 - 584D 545E FFFD 5479 4944 532E 3853 3360 - FFFD 4962 7476 FFFD FFFD FFFD 3A55 FFFD - 7477 FFFD FFFD 575F FFFD FFFD 7471 3830 - 5554 384F 4670 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3343 FFFD FFFD 7472 - 332C FFFD FFFD FFFD FFFD 543D 4777 FFFD - FFFD FFFD FFFD FFFD 7474 FFFD FFFD 7473 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4C4B FFFD FFFD FFFD 4824 -End of Item 00BC - -Begin of Item 00BD - Format 1 - srcBegin = 8DB1 - srcEnd = 8E59 - mappingOffset = 3599 - Mapping = - 7475 FFFD 5763 453F 7540 FFFD FFFD 753B - FFFD 7543 FFFD 7542 FFFD 563A 7541 FFFD - FFFD FFFD 543E 7544 FFFD 754C FFFD FFFD - FFFD FFFD 304F 3578 FFFD 7549 754A FFFD - 455C FFFD FFFD FFFD FFFD 7545 7546 FFFD - FFFD 7547 754B FFFD 3E60 7548 387A FFFD - FFFD FFFD 7550 7553 FFFD FFFD FFFD 3F67 - FFFD 3972 753C 754D FFFD FFFD 4237 FFFD - FFFD FFFD 4C78 FFFD 3C79 FFFD 754E 754F - 7551 3665 7552 FFFD 7555 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 753D FFFD FFFD FFFD - 7554 533B FFFD 336C FFFD FFFD 4C24 FFFD - FFFD FFFD FFFD 7556 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7557 3E61 7558 FFFD - FFFD 4C5F 755B FFFD FFFD FFFD FFFD FFFD - 3248 5759 FFFD 7559 FFFD 755A 755C FFFD - 7562 FFFD FFFD FFFD 7560 FFFD FFFD FFFD - 755F 755D FFFD FFFD 7561 FFFD FFFD 755E - 7564 7565 FFFD 4C63 FFFD FFFD 653F 3538 - 7563 7568 4C23 FFFD FFFD FFFD FFFD FFFD - 7566 7567 FFFD FFFD FFFD FFFD FFFD FFFD - 753E -End of Item 00BD - -Begin of Item 00BE - Format 1 - srcBegin = 8E66 - srcEnd = 8E9E - mappingOffset = 3642 - Mapping = - 3144 FFFD FFFD 753F FFFD FFFD 3545 3264 - FFFD 756C 7569 FFFD 3657 FFFD 756D FFFD - 756A FFFD FFFD FFFD FFFD FFFD 756B FFFD - FFFD 345A FFFD 546A FFFD FFFD FFFD 756E - FFFD 3379 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 756F 7571 FFFD FFFD FFFD 7570 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7572 FFFD - 7573 -End of Item 00BE - -Begin of Item 00BF - Format 1 - srcBegin = 8EAB - srcEnd = 8EBA - mappingOffset = 367B - Mapping = - 496D 392A FFFD FFFD 477B FFFD FFFD 3663 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4C49 -End of Item 00BF - -Begin of Item 00C0 - Format 2 - srcBegin = 8ECE - destBegin = 6A26 -End of Item 00C0 - -Begin of Item 00C1 - Format 1 - srcBegin = 8F66 - srcEnd = 9104 - mappingOffset = 368B - Mapping = - 3335 547E 396C 5079 FFFD 696D 572A 696E - 4256 486D 3A64 696F 6970 6971 5661 6972 - 6973 6975 6974 6976 6977 4761 6978 5458 - 6979 3D4E FFFD 697A 697B 3D4F 697C 3828 - 413E 697D 3132 3B54 3975 697E FFFD 6A21 - 6A22 6A23 3778 3C2D FFFD 4A64 604E 542F - 4F3D 5537 6A24 555E 6A25 5041 393C FFFD - 3447 3159 FFFD FFFD FFFD 4031 FFFD FFFD - FFFD FFFD 3166 3167 FFFD 3168 FFFD FFFD - FFFD FFFD 333D 4868 FFFD FFFD FFFD FFFD - 6541 FFFD FFFD 315F FFFD FFFD FFFD 4149 - 346F FFFD FFFD 4728 5358 FFFD 4679 5138 - FFFD 397D 4275 FFFD FFFD FFFD FFFD FFFD - 532D FFFD 544B 3D7C FFFD 6542 3735 6543 - FFFD FFFD 3B39 5562 FFFD 3D78 5436 4E25 - 412C 3359 FFFD FFFD 4C76 FFFD 6546 6544 - 6548 FFFD 654A 6547 354F 4648 FFFD 357C - 6545 FFFD 4A76 FFFD FFFD 6549 FFFD FFFD - FFFD 4354 3145 3C23 FFFD FFFD FFFD 5737 - FFFD FFFD 4D4B 4B4D 4A4A 4C53 654C 654B - 4466 FFFD FFFD 5121 5137 654D FFFD 6550 - FFFD 4D38 5670 654F 355D FFFD 4D3E FFFD - 6551 363A FFFD FFFD 4D28 3964 FFFD 4A45 - 3351 4B59 546C 6552 376A FFFD FFFD FFFD - 654E FFFD FFFD FFFD FFFD FFFD FFFD 6555 - 347E 6556 FFFD FFFD FFFD FFFD FFFD 6553 - 6554 FFFD 525D FFFD FFFD 425F 3146 FFFD - 5362 FFFD FFFD 365D 4B6C FFFD 6557 FFFD - FFFD 5376 FFFD FFFD FFFD FFFD FFFD 3169 - FFFD 3674 655A 6558 6559 3540 FFFD FFFD - FFFD 5245 655C FFFD FFFD 655E FFFD FFFD - FFFD FFFD FFFD FFFD 655D 4732 FFFD 5223 - FFFD FFFD 655B FFFD FFFD FFFD FFFD 5462 - 555A FFFD FFFD FFFD FFFD FFFD 6560 5771 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6561 - FFFD 315C 517B FFFD 6562 6564 FFFD FFFD - FFFD FFFD 6563 FFFD FFFD 6565 FFFD FFFD - FFFD FFFD FFFD 5258 FFFD 354B FFFD 675F - FFFD 5A75 FFFD 5A78 FFFD 5A76 FFFD 5A77 - FFFD FFFD FFFD 5A7A 504F 4447 FFFD FFFD - 306E FFFD FFFD FFFD 5030 FFFD 5A79 FFFD - 534A 3A2A 5B22 4771 FFFD 5A7C 5A7B 495B - 5A7D FFFD 5B21 575E 5A7E 415A FFFD FFFD - 5B25 FFFD FFFD 5374 FFFD FFFD 5B27 5B24 - FFFD 5B28 FFFD FFFD 3D3C FFFD FFFD FFFD - 4049 5B23 5B26 5623 FFFD 5B29 FFFD FFFD - FFFD 5B2D FFFD FFFD FFFD 5B2E 5B2C 3A42 - FFFD FFFD FFFD 3F24 5B2B FFFD FFFD FFFD - 5B2A 5447 323F FFFD FFFD 5B2F FFFD 3979 - FFFD 5B30 FFFD FFFD FFFD FFFD 333B FFFD - FFFD FFFD 3526 FFFD FFFD FFFD FFFD 363C - 5B31 FFFD FFFD FFFD 3675 FFFD 5B32 -End of Item 00C1 - -Begin of Item 00C2 - Format 1 - srcBegin = 9119 - srcEnd = 9123 - mappingOffset = 382A - Mapping = - 3149 FFFD FFFD FFFD FFFD 5B34 FFFD FFFD - FFFD 5B33 5B35 -End of Item 00C2 - -Begin of Item 00C3 - Format 1 - srcBegin = 912F - srcEnd = 91BA - mappingOffset = 3835 - Mapping = - 5B37 FFFD 5B36 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5B38 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5B39 FFFD FFFD 5B3A - FFFD FFFD 534F 747A 4775 5743 4564 747C - 747D 747B FFFD 3E46 FFFD FFFD FFFD FFFD - 506F FFFD FFFD 3753 FFFD FFFD 544D 4C2A - FFFD FFFD 7522 7521 3A28 747E 4B56 FFFD - FFFD FFFD 7524 4052 FFFD 336A FFFD 4D2A - 7525 7523 3D34 7528 FFFD 7529 3D4D 4338 - 3F61 4B61 752A FFFD FFFD FFFD 7526 7527 - 4470 FFFD FFFD FFFD FFFD FFFD 752C FFFD - 343C FFFD 576D FFFD 3457 752B 752E FFFD - FFFD 752D 752F 5051 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4351 4829 FFFD FFFD FFFD - FFFD FFFD FFFD 7530 7531 FFFD FFFD FFFD - FFFD FFFD FFFD 7532 FFFD FFFD 7533 7534 - 7535 FFFD FFFD FFFD FFFD 7537 7536 FFFD - FFFD FFFD FFFD 7538 -End of Item 00C3 - -Begin of Item 00C4 - Format 1 - srcBegin = 91C7 - srcEnd = 91DC - mappingOffset = 38C1 - Mapping = - 3249 FFFD 5354 4A4D FFFD 406F 5658 5230 - 413F FFFD 3D70 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 382A -End of Item 00C4 - -Begin of Item 00C5 - Format 2 - srcBegin = 9274 - destBegin = 3C78 -End of Item 00C5 - -Begin of Item 00C6 - Format 2 - srcBegin = 928E - destBegin = 7646 -End of Item 00C6 - -Begin of Item 00C7 - Format 2 - srcBegin = 92AE - destBegin = 7647 -End of Item 00C7 - -Begin of Item 00C8 - Format 2 - srcBegin = 92C8 - destBegin = 7648 -End of Item 00C8 - -Begin of Item 00C9 - Format 2 - srcBegin = 933E - destBegin = 7649 -End of Item 00C9 - -Begin of Item 00CA - Format 2 - srcBegin = 936A - destBegin = 764A -End of Item 00CA - -Begin of Item 00CB - Format 2 - srcBegin = 938F - destBegin = 764C -End of Item 00CB - -Begin of Item 00CC - Format 2 - srcBegin = 93CA - destBegin = 764B -End of Item 00CC - -Begin of Item 00CD - Format 2 - srcBegin = 93D6 - destBegin = 7769 -End of Item 00CD - -Begin of Item 00CE - Format 2 - srcBegin = 943E - destBegin = 764D -End of Item 00CE - -Begin of Item 00CF - Format 2 - srcBegin = 946B - destBegin = 764E -End of Item 00CF - -Begin of Item 00D0 - Format 1 - srcBegin = 9485 - srcEnd = 957F - mappingOffset = 38D7 - Mapping = - 6E44 6E45 6E46 556B 3624 6E48 6E47 6E49 - 6E4A 4725 6E4B 6E4C FFFD 3730 3576 6E4D - 6E4F FFFD 6E4E FFFD 3846 6E50 6E51 6E52 - 365B 332E 5653 4446 3135 3856 6E53 6E54 - 543F 4755 3E7B 4E59 3933 6E56 6E55 6E58 - 6E57 4525 6E59 6E5A 472E 6E5B 472F 6E5C - 3227 6E5D 6E5E 6E5F 6E60 6E61 576A 6E62 - 6E63 3C58 6E64 534B 4C7A 322C 4165 6E65 - 4726 432D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6E6D 6E6E 6E6F FFFD FFFD - 6E70 6E71 6E72 6E74 6E73 FFFD 6E75 4D2D - 4241 6E76 6E77 6E78 5521 6E79 4F33 6E7A - 6E7B FFFD 6E7C 6E7D 6F21 6E7E 6F22 3875 - 437A 6F23 6F24 3D42 523F 3279 6F25 6F26 - 6F27 5278 6F28 567D 6F29 464C FFFD 6F2A - 6F2B 4134 6F2C 4F7A 4B78 6F2E 6F2D 337A - 3978 6F2F 6F30 5062 6F31 6F32 3766 503F - 6F33 6F34 6F35 4871 4C60 6F36 6F37 6F38 - 6F39 6F3A 5560 6F3B 346D 432A 6F3C FFFD - 6F3D 6F3E 6F3F FFFD 4E7D 6F40 4260 3438 - 5736 3D75 FFFD 4F47 6F43 6F41 6F42 6F44 - 3627 3C7C 3E62 434C 6F45 6F46 FFFD 6F47 - 6F4F 6F48 6F49 6F4A 4742 6F71 364D 6F4B - FFFD 6F4C 6F4D 3646 433E 6F4E FFFD 6F50 - 6F51 6F52 5572 FFFD 6F53 4477 FFFD 6F54 - 4478 6F55 6F56 3864 3077 6F57 6F58 6F59 - FFFD 6F5A 6F5B 6F5C 6F5D FFFD 6F5E 3E35 - 6F61 6F5F 6F60 FFFD 6F62 6F63 414D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4058 FFFD 6F6D 412D 6F6E 6F6F 6F70 FFFD - FFFD 4F62 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3324 -End of Item 00D0 - -Begin of Item 00D1 - Format 1 - srcBegin = 95E8 - srcEnd = 9677 - mappingOffset = 39D2 - Mapping = - 4345 6345 4941 6346 FFFD 3155 4E4A 3433 - 4872 6347 4F50 6348 3C64 6349 634A 4346 - 5522 4456 396B 4E45 634B 4376 634C FFFD - 3727 3873 3A52 634D 634E 5444 634F FFFD - 6350 514B 6351 6352 6353 6354 5156 6355 - 327B 403B 6356 FFFD 402B 6357 6358 6359 - FFFD 635A 635B FFFD 3837 5A62 FFFD 3653 - FFFD 5A64 5A63 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5A66 FFFD FFFD FFFD 486E FFFD - FFFD 5A65 3740 5174 5275 5573 3D57 FFFD - FFFD FFFD FFFD 5768 5A68 5A67 FFFD 3022 - 4D53 FFFD 5A69 FFFD 383D 3C4A 423D 4224 - 3342 5A6A FFFD 422A 4430 3D35 FFFD FFFD - 4F5E FFFD FFFD FFFD 5A6B 4942 FFFD FFFD - FFFD FFFD FFFD 315D FFFD FFFD FFFD 5A6C - FFFD 3638 543A FFFD 337D FFFD FFFD 5A6D - 5449 4F55 4563 FFFD 5A6E FFFD FFFD FFFD - FFFD FFFD 5A6F FFFD 5A70 416A 4C55 4F5D -End of Item 00D1 - -Begin of Item 00D2 - Format 1 - srcBegin = 9685 - srcEnd = 971E - mappingOffset = 3A62 - Mapping = - 5367 4221 FFFD 5A71 FFFD FFFD 4B65 FFFD - 5A72 FFFD 4B66 527E FFFD FFFD FFFD 3874 - FFFD FFFD 5A73 302F 4F36 FFFD FFFD 554F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4B6D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5A74 FFFD FFFD 6344 FFFD - FFFD 4125 FFFD FFFD 763F FFFD FFFD 7640 - 7641 4451 FFFD 4838 5163 FFFD FFFD 505B - 5145 3C2F 394D FFFD 6F74 FFFD FFFD 3446 - 533A 7642 337B FFFD FFFD 7643 FFFD FFFD - 3571 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7645 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 536A 7627 5129 FFFD FFFD - FFFD FFFD 7629 FFFD FFFD FFFD 7628 FFFD - FFFD 4163 4057 FFFD 3122 FFFD FFFD FFFD - FFFD 4E6D FFFD 5068 762B FFFD FFFD 4F76 - FFFD 762A 5570 762C 4339 FFFD FFFD FFFD - 3B74 762E 762D FFFD FFFD FFFD 445E FFFD - FFFD 4158 FFFD FFFD FFFD FFFD FFFD 4B2A - FFFD 4F3C -End of Item 00D2 - -Begin of Item 00D3 - Format 1 - srcBegin = 972A - srcEnd = 973E - mappingOffset = 3AFC - Mapping = - 762F FFFD FFFD 7630 FFFD FFFD 7631 FFFD - 4236 FFFD FFFD FFFD FFFD FFFD 3054 4579 - FFFD FFFD FFFD FFFD 7632 -End of Item 00D3 - -Begin of Item 00D4 - Format 1 - srcBegin = 9752 - srcEnd = 97B4 - mappingOffset = 3B11 - Mapping = - 4760 7626 FFFD FFFD 3E38 FFFD FFFD 3E32 - FFFD 3565 FFFD FFFD 3747 FFFD 3F3F 4352 - 4366 FFFD FFFD 584C FFFD FFFD FFFD 386F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3D79 5125 FFFD 3050 FFFD FFFD FFFD - FFFD FFFD 7730 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7731 FFFD FFFD FFFD FFFD - FFFD 502C FFFD 3030 FFFD FFFD FFFD 7732 - 7733 FFFD 7734 FFFD FFFD FFFD 474A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3E4F FFFD - FFFD 7737 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7736 FFFD 315E FFFD 7735 FFFD FFFD - 7738 FFFD 7739 -End of Item 00D4 - -Begin of Item 00D5 - Format 1 - srcBegin = 97E6 - srcEnd = 97F6 - mappingOffset = 3B74 - Mapping = - 4E24 484D FFFD 3A2B 6838 6839 683A 3E42 - FFFD FFFD FFFD FFFD FFFD 5274 FFFD 544F - 4958 -End of Item 00D5 - -Begin of Item 00D6 - Format 1 - srcBegin = 9875 - srcEnd = 98A7 - mappingOffset = 3B85 - Mapping = - 5233 3625 476A 717C 4F6E 4B33 506B 676F - 4D67 394B 3659 717D 3064 4B4C 717E 5424 - 422D 416C 4644 3E31 7221 3C55 FFFD 7222 - 7223 FFFD 7224 5243 4635 FFFD 4D47 7225 - FFFD 5331 3F45 4C62 FFFD 7226 7227 5155 - 366E 7228 7229 355F 722A 722B FFFD 327C - 722C 722D 4827 -End of Item 00D6 - -Begin of Item 00D7 - Format 1 - srcBegin = 98CE - srcEnd = 98E8 - mappingOffset = 3BB8 - Mapping = - 3767 FFFD FFFD 6C29 6C2A 6C2B FFFD 6C2C - FFFD FFFD 462E 6C2D 6C2E FFFD FFFD FFFD - 3749 4A33 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6238 774F -End of Item 00D7 - -Begin of Item 00D8 - Format 1 - srcBegin = 990D - srcEnd = 9910 - mappingOffset = 3BD3 - Mapping = - 7750 FFFD FFFD 324D -End of Item 00D8 - -Begin of Item 00D9 - Format 2 - srcBegin = 992E - destBegin = 7751 -End of Item 00D9 - -Begin of Item 00DA - Format 1 - srcBegin = 9954 - srcEnd = 9955 - mappingOffset = 3BD7 - Mapping = - 7753 7752 -End of Item 00DA - -Begin of Item 00DB - Format 1 - srcBegin = 9963 - srcEnd = 9999 - mappingOffset = 3BD9 - Mapping = - 623B FFFD 3C22 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3739 527B 3D24 4A4E 3125 4B47 - FFFD 6242 367C 4844 6243 FFFD FFFD 3D48 - FFFD 317D 6244 FFFD 3676 6245 4459 FFFD - FFFD 6246 4F5A 395D 6247 4021 FFFD 6248 - 3276 FFFD 6249 FFFD 4173 624A 624B 4278 - 624C 624D 624E 4A57 5838 5965 4F63 -End of Item 00DB - -Begin of Item 00DC - Format 1 - srcBegin = 99A5 - srcEnd = 99A8 - mappingOffset = 3C10 - Mapping = - 7025 FFFD FFFD 5C30 -End of Item 00DC - -Begin of Item 00DD - Format 1 - srcBegin = 9A6C - srcEnd = 9B13 - mappingOffset = 3C14 - Mapping = - 426D 5426 4D54 5131 335B 477D FFFD 3235 - 423F 6660 4A3B 6661 6662 3E54 6663 5724 - 4D55 6665 3C5D 6664 6666 6667 426E FFFD - 3D3E 6668 4266 3A27 6669 FFFD 666A 3352 - 5169 FFFD FFFD 3F25 666B 466F 666C 666D - FFFD FFFD 666E 462D 666F FFFD 4927 6670 - 6671 6672 6539 6673 6674 4262 6675 6676 - 5668 6677 FFFD 6678 3947 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 773B 773A FFFD FFFD - FFFD FFFD 773E 773C 3A21 FFFD 773F FFFD - 7740 FFFD FFFD FFFD 7742 7741 7744 FFFD - FFFD 7743 FFFD FFFD FFFD FFFD FFFD 7745 - 7746 FFFD FFFD FFFD FFFD 7747 FFFD 4B68 - FFFD FFFD FFFD FFFD 385F FFFD FFFD FFFD - FFFD FFFD FFFD 7754 FFFD 7755 FFFD FFFD - FFFD FFFD 7756 FFFD FFFD FFFD FFFD 7758 - FFFD 775A FFFD 7757 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 775B FFFD 7759 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5757 - FFFD FFFD FFFD FFFD 775C FFFD FFFD FFFD - FFFD FFFD FFFD 775D FFFD FFFD FFFD 775E -End of Item 00DD - -Begin of Item 00DE - Format 1 - srcBegin = 9B1F - srcEnd = 9B23 - mappingOffset = 3CBC - Mapping = - 775F FFFD FFFD FFFD 7760 -End of Item 00DE - -Begin of Item 00DF - Format 1 - srcBegin = 9B2F - srcEnd = 9B54 - mappingOffset = 3CC1 - Mapping = - 5B4B FFFD FFFD 582A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6577 396D FFFD FFFD - FFFD FFFD 3F7D 3B6A 7749 4647 7748 FFFD - 774A 774C 774B FFFD FFFD FFFD 774D FFFD - 4E3A FFFD 774E FFFD FFFD 4427 -End of Item 00DF - -Begin of Item 00E0 - Format 1 - srcBegin = 9C7C - srcEnd = 9CE2 - mappingOffset = 3CE7 - Mapping = - 5363 FFFD FFFD 764F FFFD 4233 7650 FFFD - FFFD 7651 7652 7653 7654 FFFD FFFD 7656 - FFFD 312B 7657 FFFD 7658 7659 765A FFFD - 765B 765C FFFD FFFD FFFD FFFD 765D 765E - 4F4A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4070 7665 7666 7667 7668 7669 FFFD 766A - FFFD 766B 766C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3E28 FFFD 7675 7676 - 7677 7678 FFFD FFFD FFFD FFFD FFFD 487A - 7679 767A 767B 767C FFFD FFFD 767D 767E - 7721 7722 7723 7724 7725 FFFD FFFD 7726 - 7727 7728 316E 7729 772A 772B FFFD FFFD - 772C 772D 415B 772E FFFD FFFD 772F -End of Item 00E0 - -Begin of Item 00E1 - Format 1 - srcBegin = 9E1F - srcEnd = 9EA6 - mappingOffset = 3D4E - Mapping = - 4471 702F 3C26 7030 4379 FFFD 4538 513B - FFFD 7031 7032 7033 7034 7035 513C FFFD - 516C FFFD 7037 7036 5427 FFFD 4D52 7038 - 703A 7039 703B 703C FFFD FFFD 386B 703D - 3A68 FFFD 703E 703F 3E69 7040 366C 7041 - 7042 7043 7044 4835 7045 7046 FFFD 7047 - 4574 FFFD 7048 FFFD FFFD FFFD 7049 FFFD - 704A 773D FFFD 704B 704C 704D FFFD 704E - FFFD FFFD FFFD FFFD 704F 3A57 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7058 FFFD - FFFD 5325 7057 FFFD 7059 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 753A - 4239 FFFD FFFD 7764 FFFD FFFD FFFD FFFD - 7765 7766 FFFD FFFD 7767 FFFD FFFD FFFD - FFFD FFFD FFFD 7768 4234 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 776A FFFD - 776B FFFD FFFD FFFD FFFD FFFD FFFD 4273 -End of Item 00E1 - -Begin of Item 00E2 - Format 1 - srcBegin = 9EB4 - srcEnd = 9EFE - mappingOffset = 3DD6 - Mapping = - 7470 FFFD FFFD FFFD 746F FFFD FFFD 4269 - FFFD 7761 7762 FFFD FFFD FFFD FFFD FFFD - 3B46 FFFD FFFD FFFD FFFD 5964 FFFD FFFD - FFFD 4A72 4068 7024 FFFD 3A5A FFFD FFFD - 472D FFFD FFFD FFFD 442C FFFD FFFD 776C - 776D 776E FFFD 7770 776F FFFD 7771 FFFD - FFFD 7774 FFFD 7773 FFFD 7772 7775 FFFD - FFFD FFFD FFFD 7776 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6D69 FFFD 6D6A - 6D6B FFFD 763C -End of Item 00E2 - -Begin of Item 00E3 - Format 1 - srcBegin = 9F0B - srcEnd = 9F44 - mappingOffset = 3E21 - Mapping = - 763D FFFD 763E 3626 FFFD 583E FFFD FFFD - 3944 FFFD FFFD FFFD 583B FFFD 5C31 FFFD - FFFD FFFD FFFD FFFD FFFD 4A73 FFFD 7777 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7778 FFFD FFFD 7779 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 777B FFFD 777A FFFD - 3147 FFFD 777C 777D FFFD FFFD FFFD FFFD - FFFD 777E -End of Item 00E3 - -Begin of Item 00E4 - Format 1 - srcBegin = 9F50 - srcEnd = 9F51 - mappingOffset = 3E5B - Mapping = - 466B 6C34 -End of Item 00E4 - -Begin of Item 00E5 - Format 1 - srcBegin = 9F7F - srcEnd = 9F8C - mappingOffset = 3E5D - Mapping = - 335D 7633 FFFD FFFD 7634 4164 FFFD FFFD - FFFD FFFD FFFD FFFD 4823 763B -End of Item 00E5 - -Begin of Item 00E6 - Format 1 - srcBegin = 9F99 - srcEnd = 9FA0 - mappingOffset = 3E6B - Mapping = - 417A 3928 6D68 FFFD FFFD FFFD 396A 595F -End of Item 00E6 - -Begin of Item 00E7 - Format 1 - srcBegin = FF01 - srcEnd = FF04 - mappingOffset = 3E73 - Mapping = - 2321 2322 2323 2167 -End of Item 00E7 - -Begin of Item 00E8 - Format 2 - srcBegin = FF5E - destBegin = 212B -End of Item 00E8 - -Begin of Item 00E9 - Format 1 - srcBegin = FFE0 - srcEnd = FFE5 - mappingOffset = 3E77 - Mapping = - 2169 216A FFFD 237E FFFD 2324 -End of Item 00E9 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x00EA, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x003F, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x02FD, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x001B */ -/* Total of Format 1 : 0x00A4 */ -/* Total of Format 2 : 0x002B */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x2211, -0x2112, 0x2212, 0x2111, 0x1122, 0x1111, 0x1112, 0x2111, 0x2111, -0x1111, 0x1111, 0x1111, 0x1112, 0x1211, 0x1112, 0x1111, 0x1112, -0x1111, 0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x2111, 0x1121, -0x1111, 0x1211, 0x1111, 0x1111, 0x1112, 0x1112, 0x2112, 0x1111, -0x1112, 0x1111, 0x1111, 0x1111, 0x1111, 0x1211, 0x1122, 0x1111, -0x1112, 0x2221, 0x2222, 0x2222, 0x1111, 0x1111, 0x1121, 0x1111, -0x1111, 0x1111, 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x003F Start of MapCell Array */ -/* 0000 */ 0x0391, 0x03A1, 0x2621, -/* 0001 */ 0x03A3, 0x03A9, 0x2632, -/* 0002 */ 0x03B1, 0x03C1, 0x2641, -/* 0003 */ 0x03C3, 0x03C9, 0x2652, -/* 0004 */ 0x0410, 0x0415, 0x2721, -/* 0005 */ 0x0416, 0x042F, 0x2728, -/* 0006 */ 0x0430, 0x0435, 0x2751, -/* 0007 */ 0x0436, 0x044F, 0x2758, -/* 0008 */ 0x2160, 0x216B, 0x2271, -/* 0009 */ 0x2460, 0x2469, 0x2259, -/* 000A */ 0x2474, 0x2487, 0x2245, -/* 000B */ 0x2488, 0x249B, 0x2231, -/* 000C */ 0x2500, 0x254B, 0x2924, -/* 000D */ 0x3008, 0x300F, 0x2134, -/* 000E */ 0x3041, 0x3093, 0x2421, -/* 000F */ 0x30A1, 0x30F6, 0x2521, -/* 0010 */ 0x3105, 0x3129, 0x2845, -/* 0011 */ 0x3220, 0x3229, 0x2265, -/* 0012 */ 0x7F21, 0x7F27, 0x674A, -/* 0013 */ 0x94C8, 0x94CE, 0x6E66, -/* 0014 */ 0x9564, 0x956C, 0x6F64, -/* 0015 */ 0x9967, 0x996C, 0x623C, -/* 0016 */ 0x9C9E, 0x9CA3, 0x765F, -/* 0017 */ 0x9CB0, 0x9CB7, 0x766D, -/* 0018 */ 0x9E66, 0x9E6C, 0x7050, -/* 0019 */ 0x9F85, 0x9F8A, 0x7635, -/* 001A */ 0xFF05, 0xFF5D, 0x2325, -/* 001B */ 0x00A4, 0x00B1, 0x0000, -/* 001C */ 0x00D7, 0x0101, 0x000E, -/* 001D */ 0x0113, 0x011B, 0x0039, -/* 001E */ 0x012B, 0x0000, 0x2829, -/* 001F */ 0x014D, 0x0000, 0x282D, -/* 0020 */ 0x016B, 0x0000, 0x2831, -/* 0021 */ 0x01CE, 0x01DC, 0x0042, -/* 0022 */ 0x02C7, 0x02C9, 0x0051, -/* 0023 */ 0x0401, 0x0000, 0x2727, -/* 0024 */ 0x0451, 0x0000, 0x2757, -/* 0025 */ 0x2015, 0x203B, 0x0054, -/* 0026 */ 0x2103, 0x0000, 0x2166, -/* 0027 */ 0x2116, 0x0000, 0x216D, -/* 0028 */ 0x2190, 0x2193, 0x007B, -/* 0029 */ 0x2208, 0x224C, 0x007F, -/* 002A */ 0x2260, 0x226F, 0x00C4, -/* 002B */ 0x2299, 0x0000, 0x2151, -/* 002C */ 0x22A5, 0x0000, 0x214D, -/* 002D */ 0x2312, 0x0000, 0x2150, -/* 002E */ 0x25A0, 0x25A1, 0x00D4, -/* 002F */ 0x25B2, 0x25B3, 0x00D6, -/* 0030 */ 0x25C6, 0x25CF, 0x00D8, -/* 0031 */ 0x2605, 0x2606, 0x00E2, -/* 0032 */ 0x2640, 0x2642, 0x00E4, -/* 0033 */ 0x3000, 0x3017, 0x00E7, -/* 0034 */ 0x30FB, 0x0000, 0x2124, -/* 0035 */ 0x4E00, 0x4FFE, 0x00FF, -/* 0036 */ 0x500C, 0x502E, 0x02FE, -/* 0037 */ 0x503A, 0x508D, 0x0321, -/* 0038 */ 0x50A3, 0x50BB, 0x0375, -/* 0039 */ 0x50CF, 0x50DA, 0x038E, -/* 003A */ 0x50E6, 0x5112, 0x039A, -/* 003B */ 0x5121, 0x0000, 0x405C, -/* 003C */ 0x513F, 0x52E4, 0x03C7, -/* 003D */ 0x52F0, 0x563F, 0x056D, -/* 003E */ 0x564C, 0x5693, 0x08BD, -/* 003F */ 0x56A3, 0x0000, 0x4F79, -/* 0040 */ 0x56AF, 0x56BC, 0x0905, -/* 0041 */ 0x56CA, 0x570A, 0x0913, -/* 0042 */ 0x571C, 0x5835, 0x0954, -/* 0043 */ 0x5844, 0x586C, 0x0A6E, -/* 0044 */ 0x587E, 0x58A9, 0x0A97, -/* 0045 */ 0x58BC, 0x58C5, 0x0AC3, -/* 0046 */ 0x58D1, 0x58D5, 0x0ACD, -/* 0047 */ 0x58E4, 0x5965, 0x0AD2, -/* 0048 */ 0x5973, 0x59EC, 0x0B54, -/* 0049 */ 0x59F9, 0x5A7F, 0x0BCE, -/* 004A */ 0x5A92, 0x5A9B, 0x0C55, -/* 004B */ 0x5AAA, 0x5AF1, 0x0C5F, -/* 004C */ 0x5B09, 0x0000, 0x6652, -/* 004D */ 0x5B16, 0x5B17, 0x0CA7, -/* 004E */ 0x5B32, 0x5B40, 0x0CA9, -/* 004F */ 0x5B50, 0x5D4C, 0x0CB8, -/* 0050 */ 0x5D58, 0x5D5D, 0x0EB5, -/* 0051 */ 0x5D69, 0x5D74, 0x0EBB, -/* 0052 */ 0x5D82, 0x0000, 0x6156, -/* 0053 */ 0x5D99, 0x5D9D, 0x0EC7, -/* 0054 */ 0x5DB7, 0x0000, 0x615A, -/* 0055 */ 0x5DC5, 0x5DCD, 0x0ECC, -/* 0056 */ 0x5DDB, 0x5E62, 0x0ED5, -/* 0057 */ 0x5E72, 0x5EDB, 0x0F5D, -/* 0058 */ 0x5EE8, 0x5F40, 0x0FC7, -/* 0059 */ 0x5F50, 0x612B, 0x1020, -/* 005A */ 0x613F, 0x6177, 0x11FC, -/* 005B */ 0x618B, 0x61D4, 0x1235, -/* 005C */ 0x61E6, 0x0000, 0x4533, -/* 005D */ 0x61F5, 0x64E6, 0x127F, -/* 005E */ 0x6500, 0x6518, 0x1571, -/* 005F */ 0x6525, 0x6577, 0x158A, -/* 0060 */ 0x6587, 0x66BE, 0x15DD, -/* 0061 */ 0x66D9, 0x6912, 0x1715, -/* 0062 */ 0x691F, 0x6942, 0x194F, -/* 0063 */ 0x6954, 0x69E0, 0x1973, -/* 0064 */ 0x69ED, 0x6A0A, 0x1A00, -/* 0065 */ 0x6A17, 0x6A65, 0x1A1E, -/* 0066 */ 0x6A71, 0x6AAC, 0x1A6D, -/* 0067 */ 0x6B20, 0x6B4C, 0x1AA9, -/* 0068 */ 0x6B59, 0x6B6A, 0x1AD6, -/* 0069 */ 0x6B79, 0x6E5F, 0x1AE8, -/* 006A */ 0x6E6B, 0x6E6E, 0x1DCF, -/* 006B */ 0x6E7E, 0x6F8E, 0x1DD3, -/* 006C */ 0x6F9C, 0x6FA7, 0x1EE4, -/* 006D */ 0x6FB3, 0x6FD2, 0x1EF0, -/* 006E */ 0x6FDE, 0x6FE1, 0x1F10, -/* 006F */ 0x6FEE, 0x6FEF, 0x1F14, -/* 0070 */ 0x7011, 0x7023, 0x1F16, -/* 0071 */ 0x7035, 0x7039, 0x1F29, -/* 0072 */ 0x704C, 0x704F, 0x1F2E, -/* 0073 */ 0x705E, 0x0000, 0x6531, -/* 0074 */ 0x706B, 0x709D, 0x1F32, -/* 0075 */ 0x70AB, 0x70CA, 0x1F65, -/* 0076 */ 0x70D8, 0x70FD, 0x1F85, -/* 0077 */ 0x7109, 0x711A, 0x1FAB, -/* 0078 */ 0x7126, 0x7136, 0x1FBD, -/* 0079 */ 0x7145, 0x714E, 0x1FCE, -/* 007A */ 0x715C, 0x71F9, 0x1FD8, -/* 007B */ 0x7206, 0x0000, 0x312C, -/* 007C */ 0x721D, 0x7292, 0x2076, -/* 007D */ 0x729F, 0x0000, 0x6A71, -/* 007E */ 0x72AC, 0x733F, 0x20EC, -/* 007F */ 0x734D, 0x7360, 0x2180, -/* 0080 */ 0x736C, 0x736F, 0x2194, -/* 0081 */ 0x737E, 0x73F2, 0x2198, -/* 0082 */ 0x7403, 0x7441, 0x220D, -/* 0083 */ 0x7455, 0x745F, 0x224C, -/* 0084 */ 0x746D, 0x7490, 0x2257, -/* 0085 */ 0x749C, 0x74A9, 0x227B, -/* 0086 */ 0x74BA, 0x0000, 0x6837, -/* 0087 */ 0x74D2, 0x770D, 0x2289, -/* 0088 */ 0x7719, 0x776C, 0x24C5, -/* 0089 */ 0x7779, 0x7792, 0x2519, -/* 008A */ 0x779F, 0x77BF, 0x2533, -/* 008B */ 0x77CD, 0x785D, 0x2554, -/* 008C */ 0x786A, 0x78D9, 0x25E5, -/* 008D */ 0x78E8, 0x7905, 0x2655, -/* 008E */ 0x7913, 0x7924, 0x2673, -/* 008F */ 0x7934, 0x799A, 0x2685, -/* 0090 */ 0x79A7, 0x0000, 0x6C7B, -/* 0091 */ 0x79B3, 0x7A23, 0x26EC, -/* 0092 */ 0x7A33, 0x7A57, 0x275D, -/* 0093 */ 0x7A70, 0x7AB3, 0x2782, -/* 0094 */ 0x7ABF, 0x0000, 0x417E, -/* 0095 */ 0x7ACB, 0x7B62, 0x27C6, -/* 0096 */ 0x7B6E, 0x7C2A, 0x285E, -/* 0097 */ 0x7C38, 0x7C41, 0x291B, -/* 0098 */ 0x7C4D, 0x0000, 0x3C2E, -/* 0099 */ 0x7C73, 0x7C7D, 0x2925, -/* 009A */ 0x7C89, 0x7CFB, 0x2930, -/* 009B */ 0x7D0A, 0x0000, 0x4E49, -/* 009C */ 0x7D20, 0x7D2F, 0x29A3, -/* 009D */ 0x7D6E, 0x7D77, 0x29B3, -/* 009E */ 0x7DA6, 0x7DAE, 0x29BD, -/* 009F */ 0x7E3B, 0x7E47, 0x29C6, -/* 00A0 */ 0x7E82, 0x0000, 0x576B, -/* 00A1 */ 0x7E9B, 0x805A, 0x29D3, -/* 00A2 */ 0x8069, 0x8071, 0x2B93, -/* 00A3 */ 0x807F, 0x811E, 0x2B9C, -/* 00A4 */ 0x812C, 0x81CC, 0x2C3C, -/* 00A5 */ 0x81E3, 0x84A1, 0x2CDD, -/* 00A6 */ 0x84AF, 0x84F0, 0x2F9C, -/* 00A7 */ 0x84FC, 0x84FF, 0x2FDE, -/* 00A8 */ 0x850C, 0x854A, 0x2FE2, -/* 00A9 */ 0x8556, 0x858F, 0x3021, -/* 00AA */ 0x859B, 0x85E9, 0x305B, -/* 00AB */ 0x85FB, 0x8605, 0x30AA, -/* 00AC */ 0x8611, 0x8616, 0x30B5, -/* 00AD */ 0x8627, 0x8629, 0x30BB, -/* 00AE */ 0x8638, 0x863C, 0x30BE, -/* 00AF */ 0x864D, 0x8822, 0x30C3, -/* 00B0 */ 0x8832, 0x8944, 0x3299, -/* 00B1 */ 0x895E, 0x8966, 0x33AC, -/* 00B2 */ 0x897B, 0x8986, 0x33B5, -/* 00B3 */ 0x89C1, 0x89F3, 0x33C1, -/* 00B4 */ 0x8A00, 0x8A07, 0x33F4, -/* 00B5 */ 0x8A3E, 0x8A48, 0x33FC, -/* 00B6 */ 0x8A79, 0x0000, 0x5532, -/* 00B7 */ 0x8A89, 0x8A93, 0x3407, -/* 00B8 */ 0x8B07, 0x0000, 0x6540, -/* 00B9 */ 0x8B26, 0x0000, 0x7625, -/* 00BA */ 0x8B66, 0x8B6C, 0x3412, -/* 00BB */ 0x8BA0, 0x8C98, 0x3419, -/* 00BC */ 0x8D1D, 0x8DA3, 0x3512, -/* 00BD */ 0x8DB1, 0x8E59, 0x3599, -/* 00BE */ 0x8E66, 0x8E9E, 0x3642, -/* 00BF */ 0x8EAB, 0x8EBA, 0x367B, -/* 00C0 */ 0x8ECE, 0x0000, 0x6A26, -/* 00C1 */ 0x8F66, 0x9104, 0x368B, -/* 00C2 */ 0x9119, 0x9123, 0x382A, -/* 00C3 */ 0x912F, 0x91BA, 0x3835, -/* 00C4 */ 0x91C7, 0x91DC, 0x38C1, -/* 00C5 */ 0x9274, 0x0000, 0x3C78, -/* 00C6 */ 0x928E, 0x0000, 0x7646, -/* 00C7 */ 0x92AE, 0x0000, 0x7647, -/* 00C8 */ 0x92C8, 0x0000, 0x7648, -/* 00C9 */ 0x933E, 0x0000, 0x7649, -/* 00CA */ 0x936A, 0x0000, 0x764A, -/* 00CB */ 0x938F, 0x0000, 0x764C, -/* 00CC */ 0x93CA, 0x0000, 0x764B, -/* 00CD */ 0x93D6, 0x0000, 0x7769, -/* 00CE */ 0x943E, 0x0000, 0x764D, -/* 00CF */ 0x946B, 0x0000, 0x764E, -/* 00D0 */ 0x9485, 0x957F, 0x38D7, -/* 00D1 */ 0x95E8, 0x9677, 0x39D2, -/* 00D2 */ 0x9685, 0x971E, 0x3A62, -/* 00D3 */ 0x972A, 0x973E, 0x3AFC, -/* 00D4 */ 0x9752, 0x97B4, 0x3B11, -/* 00D5 */ 0x97E6, 0x97F6, 0x3B74, -/* 00D6 */ 0x9875, 0x98A7, 0x3B85, -/* 00D7 */ 0x98CE, 0x98E8, 0x3BB8, -/* 00D8 */ 0x990D, 0x9910, 0x3BD3, -/* 00D9 */ 0x992E, 0x0000, 0x7751, -/* 00DA */ 0x9954, 0x9955, 0x3BD7, -/* 00DB */ 0x9963, 0x9999, 0x3BD9, -/* 00DC */ 0x99A5, 0x99A8, 0x3C10, -/* 00DD */ 0x9A6C, 0x9B13, 0x3C14, -/* 00DE */ 0x9B1F, 0x9B23, 0x3CBC, -/* 00DF */ 0x9B2F, 0x9B54, 0x3CC1, -/* 00E0 */ 0x9C7C, 0x9CE2, 0x3CE7, -/* 00E1 */ 0x9E1F, 0x9EA6, 0x3D4E, -/* 00E2 */ 0x9EB4, 0x9EFE, 0x3DD6, -/* 00E3 */ 0x9F0B, 0x9F44, 0x3E21, -/* 00E4 */ 0x9F50, 0x9F51, 0x3E5B, -/* 00E5 */ 0x9F7F, 0x9F8C, 0x3E5D, -/* 00E6 */ 0x9F99, 0x9FA0, 0x3E6B, -/* 00E7 */ 0xFF01, 0xFF04, 0x3E73, -/* 00E8 */ 0xFF5E, 0x0000, 0x212B, -/* 00E9 */ 0xFFE0, 0xFFE5, 0x3E77, -/*-------------------------------------------------------*/ -/* Offset=0x02FD Start of MappingTable */ - -/* 0000 */ 0x2168, 0xFFFD, 0xFFFD, 0x216C, 0x2127, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2163, 0x2140, 0x2141, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2824, -/* 0018 */ 0x2822, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2828, -/* 0020 */ 0x2826, 0x283A, 0xFFFD, 0x282C, 0x282A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0x2830, 0x282E, 0xFFFD, 0xFFFD, 0xFFFD, 0x2142, 0xFFFD, -/* 0030 */ 0x2834, 0x2832, 0xFFFD, 0x2839, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0x2821, 0x2825, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0xFFFD, 0x2827, 0x2823, 0xFFFD, 0x282B, 0xFFFD, 0x282F, 0xFFFD, -/* 0048 */ 0x2833, 0xFFFD, 0x2835, 0xFFFD, 0x2836, 0xFFFD, 0x2837, 0xFFFD, -/* 0050 */ 0x2838, 0x2126, 0xFFFD, 0x2125, 0x212A, 0xFFFD, 0xFFFD, 0x212E, -/* 0058 */ 0x212F, 0xFFFD, 0xFFFD, 0x2130, 0x2131, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x212D, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x216B, -/* 0070 */ 0xFFFD, 0x2164, 0x2165, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0x2179, 0x217B, 0x217C, 0x217A, 0x217D, 0x214A, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2147, 0xFFFD, -/* 0088 */ 0x2146, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0x214C, 0xFFFD, 0xFFFD, 0x2158, 0x215E, 0xFFFD, 0x214F, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x214E, 0xFFFD, 0x2144, 0x2145, -/* 00A0 */ 0x2149, 0x2148, 0x2152, 0xFFFD, 0xFFFD, 0x2153, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2160, 0x215F, 0x2143, 0x214B, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2157, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2156, -/* 00C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2155, 0x2159, 0x2154, 0xFFFD, 0xFFFD, -/* 00C8 */ 0x215C, 0x215D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0x215A, 0x215B, 0x2176, 0x2175, 0x2178, 0x2177, -/* 00D8 */ 0x2174, 0x2173, 0xFFFD, 0xFFFD, 0xFFFD, 0x2170, 0xFFFD, 0xFFFD, -/* 00E0 */ 0x2172, 0x2171, 0x216F, 0x216E, 0x2162, 0xFFFD, 0x2161, 0x2121, -/* 00E8 */ 0x2122, 0x2123, 0x2128, 0xFFFD, 0x2129, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x213E, -/* 00F8 */ 0x213F, 0xFFFD, 0x217E, 0x2132, 0x2133, 0x213C, 0x213D, 0x523B, -/* 0100 */ 0x3621, 0xFFFD, 0x465F, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D72, 0x5549, -/* 0108 */ 0x487D, 0x494F, 0x4F42, 0x5822, 0x323B, 0x536B, 0xFFFD, 0x5824, -/* 0110 */ 0x3373, 0xFFFD, 0x5728, 0x4752, 0x5827, 0x4A40, 0xFFFD, 0x4770, -/* 0118 */ 0x317B, 0x5235, 0x3454, 0x362B, 0x4B3F, 0x5829, 0xFFFD, 0xFFFD, -/* 0120 */ 0xFFFD, 0x362A, 0xFFFD, 0x413D, 0x514F, 0xFFFD, 0x4925, 0x582D, -/* 0128 */ 0xFFFD, 0x3876, 0x513E, 0x635C, 0x5650, 0xFFFD, 0xFFFD, 0x3761, -/* 0130 */ 0xFFFD, 0x342E, 0xFFFD, 0x4159, 0xFFFD, 0x583C, 0xFFFD, 0x4D68, -/* 0138 */ 0x3524, 0x4E2A, 0x5677, 0xFFFD, 0x4076, 0x3E59, 0x582F, 0xFFFD, -/* 0140 */ 0xFFFD, 0xFFFD, 0x444B, 0xFFFD, 0x3E43, 0xFFFD, 0x5831, 0x4334, -/* 0148 */ 0x5265, 0xFFFD, 0x562E, 0x4E5A, 0x5527, 0x3A75, 0x3726, 0x4056, -/* 0150 */ 0xFFFD, 0x4639, 0x4552, 0x4747, 0xFFFD, 0x3954, 0xFFFD, 0x334B, -/* 0158 */ 0x5252, 0xFFFD, 0xFFFD, 0x583F, 0x3E45, 0x4672, 0x5232, 0x4F30, -/* 0160 */ 0x4F67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A69, 0xFFFD, 0xFFFD, -/* 0168 */ 0x5840, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4272, -/* 0170 */ 0x4252, 0xFFFD, 0x4869, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x472C, 0xFFFD, 0xFFFD, -/* 0180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x414B, 0xFFFD, 0x5368, -/* 0188 */ 0x5579, 0xFFFD, 0x4A42, 0x367E, 0x5821, 0x535A, 0x3F77, 0xFFFD, -/* 0190 */ 0x5446, 0x3B25, 0x5841, 0x4E65, 0x3E2E, 0xFFFD, 0xFFFD, 0x5828, -/* 0198 */ 0xFFFD, 0x5147, 0x5029, 0xFFFD, 0xFFFD, 0xFFFD, 0x583D, 0x596F, -/* 01A0 */ 0x4D76, 0x3F3A, 0xFFFD, 0x3D3B, 0x3A25, 0x5260, 0x327A, 0x3A60, -/* 01A8 */ 0x4436, 0xFFFD, 0x4F6D, 0x3E29, 0x4D24, 0x4141, 0xFFFD, 0xFFFD, -/* 01B0 */ 0xFFFD, 0x4757, 0x5971, 0xFFFD, 0x5974, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B8 */ 0xFFFD, 0x484B, 0x5869, 0xFFFD, 0xFFFD, 0xFFFD, 0x525A, 0x4A32, -/* 01C0 */ 0x484A, 0x586C, 0x586A, 0x5846, 0x3D76, 0x464D, 0x3370, 0xFFFD, -/* 01C8 */ 0x586B, 0x3D71, 0x3D69, 0xFFFD, 0x4854, 0x3453, 0xFFFD, 0xFFFD, -/* 01D0 */ 0x4258, 0xFFFD, 0x3256, 0x5750, 0x4A4B, 0x4B7B, 0x554C, 0x3836, -/* 01D8 */ 0x4F49, 0xFFFD, 0xFFFD, 0xFFFD, 0x595A, 0x5870, 0x472A, 0xFFFD, -/* 01E0 */ 0x586E, 0xFFFD, 0x347A, 0x416E, 0x5254, 0xFFFD, 0xFFFD, 0x586D, -/* 01E8 */ 0xFFFD, 0x5247, 0x586F, 0x4347, 0xFFFD, 0xFFFD, 0xFFFD, 0x5176, -/* 01F0 */ 0xFFFD, 0x5659, 0x5872, 0xFFFD, 0x5875, 0x3C7E, 0x3C5B, 0xFFFD, -/* 01F8 */ 0xFFFD, 0xFFFD, 0x484E, 0xFFFD, 0x375D, 0xFFFD, 0x3742, 0xFFFD, -/* 0200 */ 0x4673, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0208 */ 0x5878, 0x5241, 0xFFFD, 0xFFFD, 0x4E69, 0x3C3F, 0x377C, 0x3725, -/* 0210 */ 0x505D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x565A, 0x5345, -/* 0218 */ 0x3B6F, 0x3B61, 0x5871, 0xFFFD, 0xFFFD, 0x4921, 0x4E30, 0x342B, -/* 0220 */ 0xFFFD, 0x5873, 0xFFFD, 0x494B, 0x5876, 0x4257, 0x5877, 0xFFFD, -/* 0228 */ 0xFFFD, 0x4E31, 0x5879, 0xFFFD, 0xFFFD, 0xFFFD, 0x322E, 0x3940, -/* 0230 */ 0xFFFD, 0x5923, 0xFFFD, 0x3069, 0xFFFD, 0x4166, 0xFFFD, 0x496C, -/* 0238 */ 0xFFFD, 0x4B45, 0xFFFD, 0x4B46, 0x5924, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0240 */ 0xFFFD, 0xFFFD, 0x3568, 0xFFFD, 0xFFFD, 0x352B, 0xFFFD, 0xFFFD, -/* 0248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E3B, 0x354D, 0x5721, 0x5774, -/* 0250 */ 0x5353, 0xFFFD, 0x4C65, 0xFFFD, 0x3A4E, 0xFFFD, 0x5922, 0x595C, -/* 0258 */ 0x5360, 0x587D, 0x3770, 0x5777, 0x587E, 0x587A, 0x5921, 0x4463, -/* 0260 */ 0xFFFD, 0xFFFD, 0x5336, 0x5874, 0x595D, 0xFFFD, 0x587B, 0xFFFD, -/* 0268 */ 0x4565, 0xFFFD, 0xFFFD, 0x4050, 0xFFFD, 0xFFFD, 0x5170, 0x305B, -/* 0270 */ 0xFFFD, 0xFFFD, 0x3C51, 0x5926, 0xFFFD, 0x5925, 0xFFFD, 0xFFFD, -/* 0278 */ 0xFFFD, 0xFFFD, 0x592C, 0x592E, 0xFFFD, 0x592B, 0x4A39, 0xFFFD, -/* 0280 */ 0xFFFD, 0xFFFD, 0x5929, 0x5636, 0xFFFD, 0xFFFD, 0xFFFD, 0x335E, -/* 0288 */ 0x5928, 0xFFFD, 0x407D, 0xFFFD, 0x4A4C, 0xFFFD, 0x592A, 0xFFFD, -/* 0290 */ 0x5927, 0xFFFD, 0xFFFD, 0x5930, 0xFFFD, 0xFFFD, 0x3631, 0xFFFD, -/* 0298 */ 0xFFFD, 0xFFFD, 0x3929, 0xFFFD, 0x5240, 0xFFFD, 0xFFFD, 0x4F40, -/* 02A0 */ 0xFFFD, 0xFFFD, 0x4242, 0xFFFD, 0x3D44, 0x556C, 0x3260, 0x4748, -/* 02A8 */ 0x3F6B, 0x592D, 0xFFFD, 0x592F, 0xFFFD, 0x4E6A, 0x3A6E, 0xFFFD, -/* 02B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4756, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3163, 0xFFFD, -/* 02C0 */ 0xFFFD, 0xFFFD, 0x3459, 0x366D, 0x5934, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02C8 */ 0xFFFD, 0x3F21, 0xFFFD, 0xFFFD, 0xFFFD, 0x595E, 0x474E, 0x407E, -/* 02D0 */ 0x5938, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B57, 0x377D, -/* 02D8 */ 0xFFFD, 0x5935, 0xFFFD, 0x5937, 0x3123, 0x5361, 0x5939, 0xFFFD, -/* 02E0 */ 0x5045, 0xFFFD, 0x5936, 0xFFFD, 0xFFFD, 0x5931, 0xFFFD, 0x5932, -/* 02E8 */ 0x4129, 0x5933, 0xFFFD, 0xFFFD, 0x3C73, 0x505E, 0x3829, 0xFFFD, -/* 02F0 */ 0x3E63, 0xFFFD, 0x593D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x593A, -/* 02F8 */ 0xFFFD, 0x3033, 0xFFFD, 0xFFFD, 0xFFFD, 0x5942, 0x5944, 0x3136, -/* 0300 */ 0xFFFD, 0x593F, 0xFFFD, 0xFFFD, 0x3539, 0xFFFD, 0x3E73, 0xFFFD, -/* 0308 */ 0xFFFD, 0xFFFD, 0x4C48, 0x3A72, 0x5250, 0xFFFD, 0x5943, 0xFFFD, -/* 0310 */ 0xFFFD, 0x3D68, 0xFFFD, 0x332B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5945, -/* 0318 */ 0x3E6B, 0xFFFD, 0x5946, 0x593B, 0x445F, 0xFFFD, 0x593E, 0x5941, -/* 0320 */ 0x5940, 0x552E, 0xFFFD, 0x5635, 0xFFFD, 0x4763, 0xFFFD, 0xFFFD, -/* 0328 */ 0xFFFD, 0xFFFD, 0x5948, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C59, 0x594A, -/* 0330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x593C, 0xFFFD, 0x594B, 0x462B, 0xFFFD, -/* 0338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5949, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0340 */ 0xFFFD, 0x5776, 0xFFFD, 0x4D23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D21, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x594C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x453C, 0x4D35, 0xFFFD, -/* 0360 */ 0xFFFD, 0xFFFD, 0x594D, 0xFFFD, 0xFFFD, 0x5947, 0x3325, 0x3F7E, -/* 0368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3835, 0xFFFD, 0xFFFD, 0x407C, -/* 0370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3078, 0x3476, 0xFFFD, 0x594E, -/* 0378 */ 0xFFFD, 0x594F, 0x3422, 0x5950, 0xFFFD, 0xFFFD, 0x345F, 0xFFFD, -/* 0380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3041, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5951, 0x4935, 0x4F71, 0xFFFD, -/* 0390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5952, 0xFFFD, 0xFFFD, -/* 0398 */ 0xFFFD, 0x4145, 0x5956, 0x492E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03A0 */ 0x5955, 0x5954, 0x5957, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B5B, -/* 03A8 */ 0xFFFD, 0x3D29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4627, -/* 03B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03B8 */ 0xFFFD, 0xFFFD, 0x5953, 0x5958, 0xFFFD, 0xFFFD, 0xFFFD, 0x5959, -/* 03C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4865, 0x3679, -/* 03C8 */ 0x5823, 0x544A, 0xFFFD, 0x542A, 0x5056, 0x3364, 0x5557, 0xFFFD, -/* 03D0 */ 0x4F48, 0x3962, 0xFFFD, 0x3F4B, 0xFFFD, 0x4362, 0xFFFD, 0xFFFD, -/* 03D8 */ 0xFFFD, 0x3652, 0xFFFD, 0xFFFD, 0x4D43, 0x596E, 0x5970, 0xFFFD, -/* 03E0 */ 0xFFFD, 0xFFFD, 0x3533, 0xFFFD, 0x3635, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03E8 */ 0xFFFD, 0xFFFD, 0x3E24, 0xFFFD, 0xFFFD, 0x486B, 0xFFFD, 0xFFFD, -/* 03F0 */ 0x482B, 0xFFFD, 0xFFFD, 0x304B, 0x392B, 0x4179, 0x5962, 0xFFFD, -/* 03F8 */ 0x403C, 0x3932, 0xFFFD, 0x3958, 0x504B, 0x3178, 0x4664, 0x3E5F, -/* 0400 */ 0x3564, 0x5748, 0xFFFD, 0x5178, 0x3C66, 0x4A5E, 0xFFFD, 0xFFFD, -/* 0408 */ 0x3C3D, 0x5966, 0x5867, 0xFFFD, 0xFFFD, 0x445A, 0xFFFD, 0xFFFD, -/* 0410 */ 0x3854, 0x483D, 0xFFFD, 0xFFFD, 0x3261, 0x5459, 0xFFFD, 0xFFFD, -/* 0418 */ 0xFFFD, 0xFFFD, 0x4330, 0xFFFD, 0xFFFD, 0x4361, 0x5A22, 0x485F, -/* 0420 */ 0xFFFD, 0x5034, 0xFFFD, 0x3E7C, 0x4529, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0428 */ 0x395A, 0xFFFD, 0x5A23, 0xFFFD, 0x5429, 0x5A24, 0xFFFD, 0xFFFD, -/* 0430 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x597B, 0x362C, 0xFFFD, 0xFFFD, 0x376B, -/* 0438 */ 0x3179, 0x597C, 0x3365, 0x3E76, 0xFFFD, 0x3F76, 0x5231, 0x4064, -/* 0440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3633, 0x597E, 0x597D, 0xFFFD, 0xFFFD, -/* 0448 */ 0x3E3B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4660, 0xFFFD, 0x573C, 0x5A21, -/* 0450 */ 0xFFFD, 0x4139, 0xFFFD, 0x3572, 0x4168, 0xFFFD, 0xFFFD, 0x3C75, -/* 0458 */ 0xFFFD, 0x3455, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x415D, 0xFFFD, 0x447D, 0xFFFD, 0xFFFD, -/* 0468 */ 0x3C38, 0x3732, 0xFFFD, 0xFFFD, 0x376F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x596C, 0xFFFD, 0x463E, 0xFFFD, 0x3F2D, -/* 0478 */ 0x3B4B, 0xFFFD, 0xFFFD, 0x354A, 0xFFFD, 0x5B49, 0x5057, 0xFFFD, -/* 0480 */ 0x4D39, 0x303C, 0x3376, 0x3B77, 0x5B4A, 0x3A2F, 0xFFFD, 0x5464, -/* 0488 */ 0x3536, 0x3573, 0x5856, 0x4850, 0xFFFD, 0xFFFD, 0x3756, 0x4750, -/* 0490 */ 0x5857, 0xFFFD, 0x3F2F, 0xFFFD, 0xFFFD, 0x5B3B, 0x5858, 0xFFFD, -/* 0498 */ 0xFFFD, 0x504C, 0x3B2E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B3E, 0x4150, -/* 04A0 */ 0x4175, 0x5472, 0x3855, 0x3434, 0xFFFD, 0x3375, 0xFFFD, 0xFFFD, -/* 04A8 */ 0x493E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4550, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04B0 */ 0x4559, 0x407B, 0xFFFD, 0x3170, 0xFFFD, 0x5859, 0x394E, 0xFFFD, -/* 04B8 */ 0x353D, 0xFFFD, 0xFFFD, 0x585A, 0xFFFD, 0xFFFD, 0x5646, 0x4B22, -/* 04C0 */ 0x482F, 0x4932, 0x344C, 0x3F4C, 0xFFFD, 0x3974, 0xFFFD, 0x585B, -/* 04C8 */ 0x585C, 0x3667, 0x3C41, 0x4C6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04D0 */ 0xFFFD, 0xFFFD, 0x4F77, 0xFFFD, 0x585D, 0x4730, 0xFFFD, 0xFFFD, -/* 04D8 */ 0x3950, 0x3D23, 0xFFFD, 0xFFFD, 0x4C5E, 0xFFFD, 0x464A, 0xFFFD, -/* 04E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5860, 0xFFFD, 0x585E, 0xFFFD, -/* 04E8 */ 0xFFFD, 0x585F, 0xFFFD, 0xFFFD, 0xFFFD, 0x307E, 0xFFFD, 0x3E67, -/* 04F0 */ 0xFFFD, 0x4A23, 0x3C74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3831, -/* 04F8 */ 0xFFFD, 0xFFFD, 0x386E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5862, 0xFFFD, 0x3D4B, -/* 0508 */ 0xFFFD, 0x5864, 0x5863, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0510 */ 0x457C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0518 */ 0x5865, 0xFFFD, 0xFFFD, 0x5866, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0520 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4126, 0xFFFD, 0x4830, 0x306C, 0x3926, -/* 0528 */ 0x3C53, 0x4E71, 0x5B3D, 0x4153, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0530 */ 0x362F, 0x567A, 0x452C, 0x3D59, 0x5B3E, 0x5B3F, 0xFFFD, 0xFFFD, -/* 0538 */ 0xFFFD, 0x4078, 0x3E22, 0x404D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B40, 0x4A46, -/* 0548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x322A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5342, -/* 0550 */ 0xFFFD, 0x4363, 0xFFFD, 0x512B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0558 */ 0x5B42, 0xFFFD, 0x4055, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B43, 0xFFFD, -/* 0560 */ 0x3F31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x443C, -/* 0568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x475A, 0x5B44, 0xFFFD, 0xFFFD, -/* 0570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5968, 0x4957, -/* 0578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3934, 0x4E70, 0x5448, 0xFFFD, 0xFFFD, -/* 0580 */ 0xFFFD, 0xFFFD, 0x307C, 0x3452, 0xFFFD, 0x5059, 0xFFFD, 0xFFFD, -/* 0588 */ 0xFFFD, 0xFFFD, 0x5969, 0xFFFD, 0x5E4B, 0x596B, 0xFFFD, 0xFFFD, -/* 0590 */ 0xFFFD, 0xFFFD, 0x5830, 0x3B2F, 0x3131, 0xFFFD, 0x3357, 0x584E, -/* 0598 */ 0xFFFD, 0xFFFD, 0x5451, 0xFFFD, 0xFFFD, 0x3D33, 0x3F6F, 0xFFFD, -/* 05A0 */ 0x4F3B, 0xFFFD, 0xFFFD, 0x5850, 0xFFFD, 0xFFFD, 0xFFFD, 0x374B, -/* 05A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5851, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4625, 0x4778, -/* 05B8 */ 0x523D, 0xFFFD, 0xFFFD, 0x5852, 0x4464, 0xFFFD, 0x4A2E, 0xFFFD, -/* 05C0 */ 0x4727, 0xFFFD, 0x5826, 0xFFFD, 0x497D, 0x4E67, 0x3B5C, 0x306B, -/* 05C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B2A, 0x502D, 0xFFFD, 0x3130, 0x5764, -/* 05D0 */ 0x573F, 0xFFFD, 0x3525, 0x4274, 0x444F, 0xFFFD, 0xFFFD, 0x3229, -/* 05D8 */ 0xFFFD, 0x3237, 0xFFFD, 0x3165, 0x5F32, 0x553C, 0x3F28, 0x422C, -/* 05E0 */ 0x5855, 0x4231, 0xFFFD, 0x5854, 0x4E54, 0xFFFD, 0x5A60, 0xFFFD, -/* 05E8 */ 0x4E40, 0xFFFD, 0xFFFD, 0x5834, 0x432E, 0x5321, 0x4E23, 0xFFFD, -/* 05F0 */ 0x3C34, 0x4834, 0x4251, 0xFFFD, 0x3E6D, 0x5036, 0xFFFD, 0x5A61, -/* 05F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4764, 0xFFFD, 0xFFFD, 0x3327, -/* 0600 */ 0xFFFD, 0x3672, 0x4C7C, 0x407A, 0xFFFD, 0xFFFD, 0x4077, 0xFFFD, -/* 0608 */ 0x5139, 0x5161, 0x5847, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0610 */ 0xFFFD, 0xFFFD, 0x325E, 0xFFFD, 0xFFFD, 0x4065, 0xFFFD, 0x3A71, -/* 0618 */ 0xFFFD, 0xFFFD, 0x5848, 0xFFFD, 0x542D, 0xFFFD, 0xFFFD, 0x4F61, -/* 0620 */ 0x5849, 0xFFFD, 0x584A, 0x4F43, 0xFFFD, 0x3378, 0x3E47, 0xFFFD, -/* 0628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x584B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0638 */ 0x4825, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F58, 0xFFFD, 0x487E, 0x324E, -/* 0640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5356, 0x3266, 0x3C30, -/* 0648 */ 0x5351, 0x4B2B, 0x3734, 0xFFFD, 0xFFFD, 0xFFFD, 0x3722, 0xFFFD, -/* 0650 */ 0xFFFD, 0x4A65, 0xFFFD, 0x4821, 0x4A5C, 0x3164, 0x5070, 0xFFFD, -/* 0658 */ 0x4551, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B45, 0x357E, 0xFFFD, 0xFFFD, -/* 0660 */ 0x3F5A, 0x3945, 0x3E64, 0x416D, 0xFFFD, 0x5F36, 0x5F35, 0x563B, -/* 0668 */ 0x3D50, 0x5559, 0x3048, 0x3623, 0x3F49, 0x4C28, 0x5F33, 0x4A37, -/* 0670 */ 0x5352, 0xFFFD, 0x584F, 0x5236, 0x3A45, 0x4B3E, 0x4C3E, 0xFFFD, -/* 0678 */ 0x5F37, 0x3570, 0x5F34, 0xFFFD, 0xFFFD, 0xFFFD, 0x5375, 0xFFFD, -/* 0680 */ 0x3354, 0x3877, 0xFFFD, 0x5F3A, 0xFFFD, 0x3A4F, 0x3C2A, 0x3575, -/* 0688 */ 0xFFFD, 0x4D2C, 0x437B, 0x3A73, 0x4074, 0x4D42, 0x4F72, 0x5F38, -/* 0690 */ 0x4F45, 0xFFFD, 0x4240, 0x5F39, 0x4270, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0698 */ 0x3E7D, 0xFFFD, 0x415F, 0x4D4C, 0x5277, 0x374D, 0x5F41, 0xFFFD, -/* 06A0 */ 0x5F44, 0xFFFD, 0xFFFD, 0x3771, 0x3049, 0x3656, 0x3754, 0xFFFD, -/* 06A8 */ 0x3A2C, 0x4C7D, 0x3F54, 0x4B31, 0x4674, 0xFFFD, 0x5628, 0x5F45, -/* 06B0 */ 0xFFFD, 0x4E62, 0x3333, 0xFFFD, 0xFFFD, 0x4E7C, 0x3435, 0xFFFD, -/* 06B8 */ 0x4E47, 0x3A70, 0xFFFD, 0x4E61, 0xFFFD, 0x513D, 0xFFFD, 0xFFFD, -/* 06C0 */ 0x5F40, 0xFFFD, 0xFFFD, 0x3474, 0xFFFD, 0x334A, 0xFFFD, 0x3866, -/* 06C8 */ 0x5F3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4445, 0xFFFD, 0x5F3C, -/* 06D0 */ 0x5F3D, 0x5F3E, 0x453B, 0x5F3F, 0x5F42, 0x5431, 0x5F43, 0xFFFD, -/* 06D8 */ 0x473A, 0x4E58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4458, -/* 06E0 */ 0xFFFD, 0x5F4A, 0xFFFD, 0x5F4F, 0xFFFD, 0x565C, 0xFFFD, 0xFFFD, -/* 06E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F49, 0x5F5A, -/* 06F0 */ 0x4E36, 0xFFFD, 0x3A47, 0x5F4E, 0x5F48, 0x455E, 0xFFFD, 0xFFFD, -/* 06F8 */ 0x496B, 0x3A74, 0x437C, 0xFFFD, 0xFFFD, 0x3E57, 0xFFFD, 0x5F46, -/* 0700 */ 0xFFFD, 0x5F4D, 0xFFFD, 0x4558, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0708 */ 0x5526, 0x3A4D, 0xFFFD, 0x3E4C, 0x533D, 0x3840, 0xFFFD, 0x5664, -/* 0710 */ 0xFFFD, 0x5F47, 0x393E, 0x3F27, 0xFFFD, 0xFFFD, 0x417C, 0x5F4B, -/* 0718 */ 0x5F4C, 0xFFFD, 0x5F50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0720 */ 0x5F5B, 0x5F65, 0xFFFD, 0x5F57, 0x5F56, 0x5749, 0x5F63, 0x5F64, -/* 0728 */ 0x656B, 0x5227, 0x5F52, 0xFFFD, 0x3F29, 0xFFFD, 0x545B, 0xFFFD, -/* 0730 */ 0x3F48, 0x5F54, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F4C, 0xFFFD, 0xFFFD, -/* 0738 */ 0x5F5D, 0xFFFD, 0x514A, 0xFFFD, 0x5F5E, 0x3027, 0x4637, 0x5F53, -/* 0740 */ 0xFFFD, 0x3A65, 0xFFFD, 0x365F, 0x4D5B, 0x397E, 0x5455, 0xFFFD, -/* 0748 */ 0xFFFD, 0x5F5F, 0x4F6C, 0x3025, 0x5F67, 0x5F51, 0x5146, 0x5F55, -/* 0750 */ 0x5F58, 0x5F59, 0x5F5C, 0xFFFD, 0x3B29, 0xFFFD, 0x5F60, 0x5F61, -/* 0758 */ 0xFFFD, 0x5F62, 0x5F66, 0x5F68, 0x5334, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0760 */ 0xFFFD, 0xFFFD, 0x3867, 0x4536, 0x5F6A, 0x495A, 0x4128, 0x4444, -/* 0768 */ 0xFFFD, 0xFFFD, 0x3F5E, 0x4F78, 0xFFFD, 0xFFFD, 0xFFFD, 0x555C, -/* 0770 */ 0x5F6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3238, -/* 0778 */ 0xFFFD, 0x3A5F, 0x5F6C, 0xFFFD, 0x5B41, 0xFFFD, 0x5164, 0xFFFD, -/* 0780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B74, 0x343D, 0xFFFD, 0x3026, 0xFFFD, -/* 0788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F71, 0x4C46, 0x5F72, 0xFFFD, -/* 0790 */ 0xFFFD, 0x5F6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0798 */ 0x5F69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F6B, 0xFFFD, 0x5F6F, -/* 07A0 */ 0x5F70, 0x3B3D, 0xFFFD, 0xFFFD, 0x5F73, 0xFFFD, 0xFFFD, 0x5F74, -/* 07A8 */ 0xFFFD, 0x3B23, 0xFFFD, 0x4A5B, 0x4E28, 0x6027, 0x332A, 0xFFFD, -/* 07B0 */ 0x6026, 0xFFFD, 0xFFFD, 0xFFFD, 0x6021, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07B8 */ 0xFFFD, 0x5F7E, 0xFFFD, 0x4D59, 0x5F7C, 0xFFFD, 0x5F7A, 0xFFFD, -/* 07C0 */ 0x3F50, 0x5744, 0xFFFD, 0x494C, 0xFFFD, 0xFFFD, 0x5F78, 0x3021, -/* 07C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F7D, 0xFFFD, 0xFFFD, -/* 07D0 */ 0xFFFD, 0xFFFD, 0x5F7B, 0x6022, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D8 */ 0xFFFD, 0x6028, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3748, 0xFFFD, -/* 07E0 */ 0xFFFD, 0x4621, 0x4936, 0x4032, 0x5F75, 0xFFFD, 0xFFFD, 0x453E, -/* 07E8 */ 0xFFFD, 0x5844, 0x5F79, 0x4476, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07F0 */ 0xFFFD, 0xFFFD, 0x6023, 0x6024, 0x6025, 0x5025, 0xFFFD, 0xFFFD, -/* 07F8 */ 0x6034, 0x4C64, 0xFFFD, 0x6031, 0xFFFD, 0x3F26, 0x602F, 0x4E39, -/* 0800 */ 0x602B, 0x4946, 0xFFFD, 0xFFFD, 0x402E, 0x602E, 0x3A6D, 0x3A30, -/* 0808 */ 0x6029, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F76, 0xFFFD, 0x6033, 0xFFFD, -/* 0810 */ 0xFFFD, 0x6038, 0xFFFD, 0xFFFD, 0xFFFD, 0x342D, 0x6039, 0xFFFD, -/* 0818 */ 0xFFFD, 0x4F32, 0x3A48, 0xFFFD, 0x6030, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x507A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x602C, 0xFFFD, -/* 0830 */ 0x547B, 0xFFFD, 0x5F77, 0xFFFD, 0x4567, 0xFFFD, 0x602D, 0xFFFD, -/* 0838 */ 0x5377, 0xFFFD, 0x6036, 0x6037, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0840 */ 0xFFFD, 0x6044, 0x5061, 0xFFFD, 0xFFFD, 0xFFFD, 0x603C, 0xFFFD, -/* 0848 */ 0xFFFD, 0x6049, 0x604A, 0xFFFD, 0xFFFD, 0xFFFD, 0x603E, 0x602A, -/* 0850 */ 0x4924, 0x6041, 0xFFFD, 0x6032, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0858 */ 0xFFFD, 0x4A48, 0x6043, 0xFFFD, 0x6035, 0xFFFD, 0x4E4B, 0xFFFD, -/* 0860 */ 0x4B43, 0x604D, 0x6046, 0x6042, 0xFFFD, 0x604B, 0xFFFD, 0x603A, -/* 0868 */ 0x603F, 0x6040, 0xFFFD, 0xFFFD, 0x6045, 0xFFFD, 0xFFFD, 0x6047, -/* 0870 */ 0x6048, 0xFFFD, 0x604C, 0xFFFD, 0x603B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0878 */ 0xFFFD, 0xFFFD, 0x4B54, 0x6055, 0xFFFD, 0x6056, 0x6052, 0xFFFD, -/* 0880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6050, 0x3C4E, 0xFFFD, -/* 0888 */ 0xFFFD, 0x6051, 0xFFFD, 0x3842, 0x5845, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x506A, 0xFFFD, 0xFFFD, -/* 0898 */ 0x426F, 0xFFFD, 0xFFFD, 0x604F, 0x603D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08A0 */ 0x6054, 0x6053, 0xFFFD, 0xFFFD, 0x6057, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08A8 */ 0xFFFD, 0x605C, 0x6058, 0xFFFD, 0xFFFD, 0xFFFD, 0x5676, 0x3330, -/* 08B0 */ 0xFFFD, 0x576C, 0xFFFD, 0x4B3B, 0xFFFD, 0xFFFD, 0x605A, 0xFFFD, -/* 08B8 */ 0x4E7B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A59, 0x6061, 0x605D, 0x522D, -/* 08C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6062, 0xFFFD, 0xFFFD, -/* 08C8 */ 0x605B, 0x6059, 0x605F, 0xFFFD, 0xFFFD, 0x6060, 0xFFFD, 0xFFFD, -/* 08D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x605E, 0xFFFD, 0x6064, 0xFFFD, 0xFFFD, -/* 08D8 */ 0xFFFD, 0x4677, 0x582C, 0x546B, 0x6066, 0x4A49, 0xFFFD, 0xFFFD, -/* 08E0 */ 0xFFFD, 0xFFFD, 0x6065, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3841, -/* 08E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6067, 0x6068, 0xFFFD, 0xFFFD, -/* 08F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6069, 0x6063, -/* 08F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A3F, -/* 0900 */ 0x4C67, 0xFFFD, 0xFFFD, 0xFFFD, 0x606A, 0x606B, 0xFFFD, 0xFFFD, -/* 0908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4842, 0xFFFD, 0xFFFD, -/* 0910 */ 0xFFFD, 0xFFFD, 0x3D40, 0x4452, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x606C, 0xFFFD, 0xFFFD, -/* 0920 */ 0x606D, 0xFFFD, 0xFFFD, 0x4774, 0x4B44, 0xFFFD, 0x606E, 0x3B58, -/* 0928 */ 0x5836, 0x5272, 0x606F, 0x4D45, 0xFFFD, 0x365A, 0xFFFD, 0xFFFD, -/* 0930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6071, 0xFFFD, 0x5430, 0xFFFD, -/* 0938 */ 0xFFFD, 0x4027, 0x3451, 0xFFFD, 0xFFFD, 0x4E27, 0x6070, 0xFFFD, -/* 0940 */ 0xFFFD, 0xFFFD, 0x6072, 0x394C, 0xFFFD, 0xFFFD, 0x397A, 0x4D3C, -/* 0948 */ 0x6073, 0xFFFD, 0xFFFD, 0xFFFD, 0x4654, 0x6074, 0xFFFD, 0x5432, -/* 0950 */ 0xFFFD, 0x4826, 0x6076, 0x6075, 0x6077, 0xFFFD, 0xFFFD, 0x4D41, -/* 0958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0960 */ 0x545A, 0x5B57, 0x5B59, 0xFFFD, 0x5B58, 0x3967, 0x5B5C, 0x5B5D, -/* 0968 */ 0x3558, 0xFFFD, 0xFFFD, 0x5B5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0970 */ 0xFFFD, 0x5B5B, 0x3321, 0x5B5F, 0xFFFD, 0xFFFD, 0x3B78, 0xFFFD, -/* 0978 */ 0x5637, 0xFFFD, 0x5B60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E79, -/* 0980 */ 0xFFFD, 0xFFFD, 0x373B, 0xFFFD, 0x5B50, 0x4C2E, 0x3F32, 0x3B35, -/* 0988 */ 0x5778, 0x3F53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F69, -/* 0990 */ 0xFFFD, 0xFFFD, 0x3C61, 0x4C33, 0x5B5E, 0x3053, 0x4E6B, 0x3758, -/* 0998 */ 0x5739, 0x4642, 0xFFFD, 0xFFFD, 0x4024, 0xFFFD, 0x4C39, 0xFFFD, -/* 09A0 */ 0x5B67, 0x5B61, 0x463A, 0x5B63, 0xFFFD, 0x5B68, 0xFFFD, 0x4577, -/* 09A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B6A, 0xFFFD, 0xFFFD, 0x5B69, 0x3F40, -/* 09B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B66, 0x5B65, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09B8 */ 0xFFFD, 0xFFFD, 0x3439, 0x402C, 0x4222, 0x5B62, 0x5B64, 0xFFFD, -/* 09C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x504D, 0x5B6D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09C8 */ 0xFFFD, 0xFFFD, 0x405D, 0x5B72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3662, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09D8 */ 0x5B73, 0x5B52, 0x3938, 0x542B, 0x5B6C, 0xFFFD, 0x3F51, 0x5B70, -/* 09E0 */ 0xFFFD, 0x5B51, 0xFFFD, 0x3566, 0xFFFD, 0x5B6B, 0x3F65, 0xFFFD, -/* 09E8 */ 0xFFFD, 0xFFFD, 0x5B6E, 0xFFFD, 0x5B71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09F0 */ 0x5B79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09F8 */ 0xFFFD, 0xFFFD, 0x3921, 0x3023, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4271, 0xFFFD, 0xFFFD, 0x3347, 0x5B6F, -/* 0A08 */ 0xFFFD, 0xFFFD, 0x5B78, 0xFFFD, 0x4652, 0x5B74, 0xFFFD, 0xFFFD, -/* 0A10 */ 0x5B75, 0x5B77, 0x5B76, 0xFFFD, 0xFFFD, 0x5B7E, 0xFFFD, 0x5372, -/* 0A18 */ 0x323A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B7D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C24, 0xFFFD, 0x5B7B, -/* 0A28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B7A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A30 */ 0x5B7C, 0x4560, 0x3B79, 0xFFFD, 0xFFFD, 0x5C23, 0xFFFD, 0xFFFD, -/* 0A38 */ 0x5C25, 0xFFFD, 0x4C43, 0xFFFD, 0xFFFD, 0xFFFD, 0x3651, 0x5D40, -/* 0A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C21, 0xFFFD, 0x5C22, 0xFFFD, 0xFFFD, -/* 0A48 */ 0xFFFD, 0x4735, 0xFFFD, 0xFFFD, 0xFFFD, 0x3669, 0xFFFD, 0xFFFD, -/* 0A50 */ 0xFFFD, 0x5C27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C26, 0xFFFD, -/* 0A58 */ 0x5C29, 0x3124, 0xFFFD, 0xFFFD, 0x354C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A60 */ 0xFFFD, 0xFFFD, 0x3F30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A68 */ 0x515F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3642, 0x5C28, 0xFFFD, -/* 0A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B7A, 0x6B73, -/* 0A78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B5C, 0xFFFD, 0xFFFD, 0x4B7E, 0xFFFD, -/* 0A80 */ 0xFFFD, 0xFFFD, 0x4C41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A88 */ 0x487B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C2A, -/* 0A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C6E, 0x5C2B, 0x5B53, -/* 0A98 */ 0xFFFD, 0x5C2F, 0x5C2C, 0xFFFD, 0x3E33, 0xFFFD, 0x4A7B, 0xFFFD, -/* 0AA0 */ 0xFFFD, 0xFFFD, 0x5C2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x494A, 0x4439, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AB0 */ 0xFFFD, 0xFFFD, 0x473D, 0x5C2E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5476, -/* 0AB8 */ 0x5066, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AC0 */ 0xFFFD, 0x442B, 0x3655, 0x5B54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AC8 */ 0x315A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B55, 0x5B56, 0xFFFD, 0xFFFD, -/* 0AD0 */ 0xFFFD, 0x3A3E, 0x4840, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AD8 */ 0xFFFD, 0x4A3F, 0x4849, 0xFFFD, 0x5733, 0xFFFD, 0x4979, 0xFFFD, -/* 0AE0 */ 0xFFFD, 0x3F47, 0xFFFD, 0xFFFD, 0x3A78, 0xFFFD, 0xFFFD, 0x523C, -/* 0AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AF0 */ 0x623A, 0xFFFD, 0x3426, 0xFFFD, 0xFFFD, 0x3138, 0xFFFD, 0xFFFD, -/* 0AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3834, 0xFFFD, 0x4F44, 0xFFFD, 0xFFFD, -/* 0B00 */ 0xFFFD, 0xFFFD, 0x5967, 0x4F26, 0x4D62, 0xFFFD, 0xFFFD, 0x596D, -/* 0B08 */ 0x3660, 0xFFFD, 0x5239, 0xFFFD, 0xFFFD, 0x393B, 0xFFFD, 0xFFFD, -/* 0B10 */ 0xFFFD, 0xFFFD, 0x6239, 0x6237, 0xFFFD, 0x3473, 0xFFFD, 0x4C6C, -/* 0B18 */ 0x4C2B, 0x3772, 0xFFFD, 0x5832, 0x516B, 0x3A3B, 0xFFFD, 0x4A27, -/* 0B20 */ 0xFFFD, 0xFFFD, 0x4D37, 0xFFFD, 0xFFFD, 0x5244, 0x3F64, 0x3C50, -/* 0B28 */ 0x3661, 0xFFFD, 0x5E45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E46, -/* 0B30 */ 0x5B3C, 0xFFFD, 0x5159, 0xFFFD, 0xFFFD, 0x4666, 0x444E, 0x376E, -/* 0B38 */ 0xFFFD, 0x375C, 0xFFFD, 0xFFFD, 0x3F7C, 0x5760, 0xFFFD, 0x4675, -/* 0B40 */ 0xFFFD, 0xFFFD, 0x313C, 0x5E48, 0x3D31, 0x4C57, 0x5E4A, 0xFFFD, -/* 0B48 */ 0x5E49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x356C, 0xFFFD, -/* 0B50 */ 0x495D, 0xFFFD, 0xFFFD, 0x3042, 0x452E, 0x452B, 0xFFFD, 0x444C, -/* 0B58 */ 0xFFFD, 0x3C69, 0x4B7D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A43, 0xFFFD, -/* 0B60 */ 0xFFFD, 0xFFFD, 0x6579, 0x4867, 0x657A, 0x4D7D, 0xFFFD, 0x5731, -/* 0B68 */ 0x383E, 0x4268, 0xFFFD, 0x4851, 0xFFFD, 0xFFFD, 0x657B, 0xFFFD, -/* 0B70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x364A, 0x3C4B, 0xFFFD, 0xFFFD, 0x517D, -/* 0B78 */ 0x6621, 0xFFFD, 0x436E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6624, -/* 0B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x657E, 0x6625, 0x4D57, 0xFFFD, -/* 0B88 */ 0xFFFD, 0x3741, 0x657C, 0x657D, 0x6623, 0xFFFD, 0xFFFD, 0x445D, -/* 0B90 */ 0x6628, 0xFFFD, 0xFFFD, 0x6627, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B98 */ 0xFFFD, 0xFFFD, 0x4343, 0xFFFD, 0x465E, 0xFFFD, 0xFFFD, 0x662A, -/* 0BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4437, -/* 0BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6622, 0x4A3C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BB0 */ 0xFFFD, 0x3D63, 0x3943, 0x6626, 0x5055, 0x4E2F, 0xFFFD, 0xFFFD, -/* 0BB8 */ 0x6629, 0x6630, 0xFFFD, 0x5226, 0xFFFD, 0x3D2A, 0x662D, 0xFFFD, -/* 0BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x662F, 0xFFFD, 0x4051, 0xFFFD, -/* 0BC8 */ 0xFFFD, 0x524C, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C27, 0x6631, 0xFFFD, -/* 0BD0 */ 0x5276, 0xFFFD, 0xFFFD, 0xFFFD, 0x574B, 0xFFFD, 0x4D7E, 0xFFFD, -/* 0BD8 */ 0x4D5E, 0x4226, 0x662B, 0x662C, 0x3D3F, 0x662E, 0x6633, 0xFFFD, -/* 0BE0 */ 0xFFFD, 0x6632, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6636, 0xFFFD, -/* 0BE8 */ 0x6638, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x446F, 0xFFFD, 0xFFFD, -/* 0BF0 */ 0xFFFD, 0x4448, 0xFFFD, 0xFFFD, 0x3E6A, 0x496F, 0xFFFD, 0xFFFD, -/* 0BF8 */ 0x6637, 0xFFFD, 0x3670, 0xFFFD, 0xFFFD, 0xFFFD, 0x4364, 0xFFFD, -/* 0C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5369, 0x6634, -/* 0C08 */ 0xFFFD, 0x6635, 0xFFFD, 0x4822, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C10 */ 0xFFFD, 0x663D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6639, 0xFFFD, 0xFFFD, -/* 0C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4645, 0xFFFD, 0xFFFD, 0x4D71, 0x663B, -/* 0C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C28 */ 0xFFFD, 0xFFFD, 0x663C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B69, -/* 0C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x663E, -/* 0C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x663A, 0xFFFD, 0xFFFD, 0x4037, -/* 0C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C48 */ 0xFFFD, 0x5324, 0x663F, 0x4974, 0x6643, 0xFFFD, 0xFFFD, 0x6644, -/* 0C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5076, 0x433D, 0xFFFD, 0xFFFD, -/* 0C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4344, 0x6642, 0x6641, -/* 0C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6647, -/* 0C68 */ 0x4F31, 0xFFFD, 0x6B74, 0xFFFD, 0xFFFD, 0x664A, 0xFFFD, 0xFFFD, -/* 0C70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6645, 0xFFFD, 0xFFFD, 0x3C5E, 0x4929, -/* 0C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C35, 0xFFFD, -/* 0C80 */ 0xFFFD, 0x4F53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6648, -/* 0C88 */ 0xFFFD, 0x6649, 0xFFFD, 0x664E, 0xFFFD, 0x6650, 0xFFFD, 0xFFFD, -/* 0C90 */ 0xFFFD, 0x6651, 0xFFFD, 0xFFFD, 0xFFFD, 0x664B, 0x3555, 0xFFFD, -/* 0C98 */ 0x664C, 0xFFFD, 0xFFFD, 0x664F, 0xFFFD, 0xFFFD, 0x445B, 0xFFFD, -/* 0CA0 */ 0x6646, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x664D, 0x6654, -/* 0CA8 */ 0x6653, 0x6655, 0xFFFD, 0x5978, 0xFFFD, 0xFFFD, 0x6656, 0xFFFD, -/* 0CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6657, -/* 0CB8 */ 0x5753, 0x665D, 0xFFFD, 0x665E, 0x3F57, 0x5450, 0xFFFD, 0x5756, -/* 0CC0 */ 0x3466, 0x4B6F, 0x665A, 0x5843, 0x574E, 0x5022, 0xFFFD, 0x434F, -/* 0CC8 */ 0xFFFD, 0xFFFD, 0x665F, 0x3C3E, 0x3942, 0x665B, 0x5127, 0xFFFD, -/* 0CD0 */ 0xFFFD, 0x3A22, 0x424F, 0xFFFD, 0x582B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CD8 */ 0x4A6B, 0x656E, 0xFFFD, 0x665C, 0xFFFD, 0x3775, 0xFFFD, 0xFFFD, -/* 0CE0 */ 0xFFFD, 0xFFFD, 0x4866, 0xFFFD, 0xFFFD, 0x4475, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0x6532, 0x447E, 0xFFFD, 0x4B7C, 0x6533, 0x552C, 0xFFFD, 0x536E, -/* 0CF0 */ 0x4A58, 0x3032, 0xFFFD, 0x4B4E, 0x4D6A, 0xFFFD, 0xFFFD, 0x3A6A, -/* 0CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6535, 0xFFFD, 0x6534, 0xFFFD, 0x575A, -/* 0D00 */ 0x3959, 0x5666, 0x3628, 0x4D70, 0x524B, 0x3126, 0x4A35, 0xFFFD, -/* 0D08 */ 0x3368, 0x4973, 0x3F4D, 0x507B, 0x4A52, 0x6536, 0x3B42, 0xFFFD, -/* 0D10 */ 0xFFFD, 0xFFFD, 0x4F5C, 0x392C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D18 */ 0x5457, 0xFFFD, 0xFFFD, 0x3A26, 0x5167, 0x4F7C, 0x3C52, 0xFFFD, -/* 0D20 */ 0x6537, 0x485D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F6D, 0x3176, 0x4B5E, -/* 0D28 */ 0xFFFD, 0xFFFD, 0x3C45, 0xFFFD, 0x3C44, 0x527A, 0x435C, 0x3F5C, -/* 0D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x383B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D38 */ 0x4342, 0xFFFD, 0x3A2E, 0x5422, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x475E, 0x442F, 0x326C, -/* 0D48 */ 0xFFFD, 0x3951, 0xFFFD, 0xFFFD, 0x653B, 0x4148, 0xFFFD, 0xFFFD, -/* 0D50 */ 0x552F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x653C, 0xFFFD, -/* 0D58 */ 0x653E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D60 */ 0x3467, 0x3654, 0x4B42, 0x5130, 0x353C, 0xFFFD, 0xFFFD, 0x4A59, -/* 0D68 */ 0xFFFD, 0x3762, 0xFFFD, 0xFFFD, 0x4964, 0xFFFD, 0x3D2B, 0xFFFD, -/* 0D70 */ 0xFFFD, 0x4E3E, 0x5770, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5021, -/* 0D78 */ 0xFFFD, 0x4959, 0xFFFD, 0xFFFD, 0x367B, 0x6658, 0x3C62, 0xFFFD, -/* 0D80 */ 0x333E, 0xFFFD, 0x4950, 0xFFFD, 0x6659, 0x3322, 0xFFFD, 0xFFFD, -/* 0D88 */ 0xFFFD, 0xFFFD, 0x5E4C, 0xFFFD, 0x5348, 0x5E4D, 0xFFFD, 0x5222, -/* 0D90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E4E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D98 */ 0xFFFD, 0x3E4D, 0xFFFD, 0xFFFD, 0x5E4F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DA0 */ 0x4A2C, 0x527C, 0x335F, 0x656A, 0x4461, 0x3E21, 0x4E32, 0x4472, -/* 0DA8 */ 0x3E56, 0x4628, 0x3263, 0xFFFD, 0xFFFD, 0x3E53, 0xFFFD, 0xFFFD, -/* 0DB0 */ 0x477C, 0x4C6B, 0x3D6C, 0x4E5D, 0xFFFD, 0xFFFD, 0x4A3A, 0x4641, -/* 0DB8 */ 0x656C, 0x503C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5539, 0xFFFD, 0xFFFD, -/* 0DC0 */ 0xFFFD, 0x656D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A74, 0xFFFD, -/* 0DC8 */ 0x4D40, 0x4245, 0xFFFD, 0x656F, 0xFFFD, 0x4244, 0x6570, 0xFFFD, -/* 0DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6578, 0x4D4D, -/* 0DD8 */ 0xFFFD, 0x493D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE0 */ 0xFFFD, 0x5259, 0x6128, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x536C, -/* 0DE8 */ 0xFFFD, 0x4B6A, 0x4671, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DF0 */ 0x612C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6127, 0x6129, 0xFFFD, 0xFFFD, -/* 0DF8 */ 0x612A, 0x612F, 0xFFFD, 0xFFFD, 0x326D, 0xFFFD, 0x612B, 0x385A, -/* 0E00 */ 0x612D, 0x612E, 0x6130, 0x353A, 0x6131, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E08 */ 0xFFFD, 0xFFFD, 0x6133, 0x6138, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E10 */ 0xFFFD, 0x5152, 0xFFFD, 0x6136, 0x6135, 0x416B, 0xFFFD, 0xFFFD, -/* 0E18 */ 0xFFFD, 0x6137, 0xFFFD, 0x5440, 0xFFFD, 0x6132, 0xFFFD, 0x613A, -/* 0E20 */ 0x3036, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6134, 0xFFFD, 0x3F79, -/* 0E28 */ 0xFFFD, 0x6139, 0xFFFD, 0xFFFD, 0x613B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x613E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E38 */ 0xFFFD, 0xFFFD, 0x613C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E40 */ 0xFFFD, 0x5645, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E48 */ 0xFFFD, 0x4F3F, 0xFFFD, 0xFFFD, 0x613D, 0x613F, 0x424D, 0xFFFD, -/* 0E50 */ 0x366B, 0xFFFD, 0x5378, 0xFFFD, 0xFFFD, 0x474D, 0xFFFD, 0xFFFD, -/* 0E58 */ 0x3765, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E68 */ 0xFFFD, 0xFFFD, 0x6140, 0x6141, 0xFFFD, 0xFFFD, 0x6147, 0x3367, -/* 0E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4669, 0xFFFD, -/* 0E78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x345E, 0xFFFD, 0x5142, 0xFFFD, -/* 0E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6148, 0xFFFD, 0xFFFD, 0x6146, 0xFFFD, -/* 0E88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6145, 0xFFFD, 0x6143, 0x6142, -/* 0E90 */ 0xFFFD, 0x3140, 0xFFFD, 0xFFFD, 0xFFFD, 0x5538, 0x6144, 0xFFFD, -/* 0E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x614B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x614C, 0x614A, 0xFFFD, -/* 0EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F7A, -/* 0EB0 */ 0xFFFD, 0xFFFD, 0x6153, 0x6152, 0x4736, 0x6149, 0xFFFD, 0xFFFD, -/* 0EB8 */ 0x614E, 0xFFFD, 0x6150, 0x6154, 0xFFFD, 0x6151, 0x614D, 0xFFFD, -/* 0EC0 */ 0xFFFD, 0x614F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6155, 0x6157, -/* 0EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6158, 0x615B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E21, 0x675D, 0xFFFD, 0x3428, -/* 0ED8 */ 0x565D, 0xFFFD, 0xFFFD, 0x5132, 0x3332, 0xFFFD, 0xFFFD, 0x3924, -/* 0EE0 */ 0x5773, 0x4749, 0x3E5E, 0x392E, 0xFFFD, 0x4E57, 0xFFFD, 0xFFFD, -/* 0EE8 */ 0x326E, 0x5B4F, 0xFFFD, 0x3C3A, 0x5251, 0x4B48, 0x304D, 0xFFFD, -/* 0EF0 */ 0xFFFD, 0x4F6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5963, -/* 0EF8 */ 0x3D6D, 0xFFFD, 0xFFFD, 0x3152, 0x4A50, 0x323C, 0xFFFD, 0x4B27, -/* 0F00 */ 0x372B, 0xFFFD, 0x4A26, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F23, 0xFFFD, -/* 0F08 */ 0xFFFD, 0x6078, 0x554A, 0x607B, 0xFFFD, 0xFFFD, 0x607A, 0x4541, -/* 0F10 */ 0x4C7B, 0xFFFD, 0x4131, 0x6079, 0x5663, 0x322F, 0x5644, 0x355B, -/* 0F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F20 */ 0x3478, 0x5621, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F2F, -/* 0F28 */ 0x306F, 0xFFFD, 0xFFFD, 0x607C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F30 */ 0xFFFD, 0x6121, 0x3323, 0xFFFD, 0xFFFD, 0x607D, 0x607E, 0x4331, -/* 0F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x435D, 0xFFFD, 0x6122, 0x3779, -/* 0F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B4F, 0xFFFD, -/* 0F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6123, 0x443B, -/* 0F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6124, 0xFFFD, 0xFFFD, -/* 0F58 */ 0x6125, 0xFFFD, 0xFFFD, 0x6126, 0x3431, 0x3849, 0x463D, 0x446A, -/* 0F60 */ 0xFFFD, 0x3222, 0xFFFD, 0x5052, 0xFFFD, 0x675B, 0x3B43, 0x5357, -/* 0F68 */ 0x5344, 0xFFFD, 0x3963, 0x624F, 0xFFFD, 0xFFFD, 0xFFFD, 0x572F, -/* 0F70 */ 0xFFFD, 0x476C, 0x3153, 0xFFFD, 0xFFFD, 0x3432, 0x6251, 0xFFFD, -/* 0F78 */ 0xFFFD, 0xFFFD, 0x5072, 0x422E, 0x6250, 0xFFFD, 0x3F62, 0x5326, -/* 0F80 */ 0x3557, 0x6252, 0x356A, 0xFFFD, 0x436D, 0x387D, 0xFFFD, 0x382E, -/* 0F88 */ 0xFFFD, 0x4553, 0x374F, 0x6254, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F90 */ 0x6253, 0x3648, 0x5779, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F98 */ 0x4D25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6258, 0xFFFD, -/* 0FA0 */ 0x6256, 0x4A7C, 0x3F35, 0x5339, 0x6255, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0x6257, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x412E, 0x4048, 0xFFFD, 0xFFFD, -/* 0FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x625B, 0x625A, 0x402A, 0xFFFD, -/* 0FC0 */ 0xFFFD, 0x414E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x625C, 0x625D, -/* 0FC8 */ 0xFFFD, 0x625E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B48, 0xFFFD, 0x5153, 0x4D22, 0xFFFD, -/* 0FD8 */ 0xFFFD, 0x3D28, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E43, 0x5825, 0x3F2A, -/* 0FE0 */ 0x5B4D, 0x526C, 0x467A, 0x452A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E44, -/* 0FE8 */ 0xFFFD, 0x3157, 0x5F2E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A3D, 0xFFFD, -/* 0FF0 */ 0x5F31, 0xFFFD, 0x392D, 0xFFFD, 0x527D, 0xFFFD, 0x3825, 0x3A6B, -/* 0FF8 */ 0xFFFD, 0xFFFD, 0x335A, 0xFFFD, 0xFFFD, 0xFFFD, 0x355C, 0x5545, -/* 1000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4356, 0x4F52, 0x3B21, 0xFFFD, -/* 1008 */ 0x6573, 0x6572, 0xFFFD, 0xFFFD, 0x6574, 0xFFFD, 0x4D64, 0xFFFD, -/* 1010 */ 0x4875, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1018 */ 0x352F, 0x473F, 0xFFFD, 0x6576, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C30, -/* 1020 */ 0x6566, 0xFFFD, 0x3969, 0x3531, 0xFFFD, 0x423C, 0x6568, 0x6567, -/* 1028 */ 0x6569, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x524D, 0xFFFD, 0xFFFD, -/* 1030 */ 0xFFFD, 0x616A, 0x504E, 0xFFFD, 0x4D2E, 0xFFFD, 0x5165, 0xFFFD, -/* 1038 */ 0xFFFD, 0x324A, 0x316B, 0xFFFD, 0x3172, 0x456D, 0xFFFD, 0xFFFD, -/* 1040 */ 0x5543, 0x5330, 0xFFFD, 0x615C, 0xFFFD, 0xFFFD, 0xFFFD, 0x615D, -/* 1048 */ 0xFFFD, 0x525B, 0xFFFD, 0x3339, 0x314B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1050 */ 0x4D79, 0x5577, 0x615E, 0xFFFD, 0x3E36, 0x347D, 0xFFFD, 0x615F, -/* 1058 */ 0x3A5C, 0x6160, 0x3B32, 0x4249, 0x6161, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1060 */ 0x506C, 0xFFFD, 0x4D3D, 0xFFFD, 0xFFFD, 0x6162, 0xFFFD, 0x3543, -/* 1068 */ 0x4547, 0x6163, 0xFFFD, 0xFFFD, 0x6164, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1070 */ 0xFFFD, 0x5379, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1078 */ 0x6165, 0xFFFD, 0x512D, 0xFFFD, 0xFFFD, 0x6166, 0x4E22, 0xFFFD, -/* 1080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6167, 0xFFFD, 0x3542, -/* 1088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6168, 0x3B55, 0xFFFD, 0xFFFD, -/* 1090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5044, 0x6260, 0x3158, 0x5264, 0xFFFD, -/* 1098 */ 0xFFFD, 0x6261, 0xFFFD, 0xFFFD, 0x3C49, 0x484C, 0xFFFD, 0x6263, -/* 10A0 */ 0x6C7E, 0x6C7D, 0x5F2F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6262, 0x563E, -/* 10A8 */ 0x4D7C, 0x4326, 0xFFFD, 0xFFFD, 0xFFFD, 0x6343, 0xFFFD, 0xFFFD, -/* 10B0 */ 0x5652, 0x6267, 0xFFFD, 0xFFFD, 0x6268, 0xFFFD, 0xFFFD, 0x5347, -/* 10B8 */ 0xFFFD, 0xFFFD, 0x626C, 0x3F6C, 0xFFFD, 0x626D, 0x6265, 0xFFFD, -/* 10C0 */ 0xFFFD, 0x3340, 0xFFFD, 0xFFFD, 0xFFFD, 0x446E, 0xFFFD, 0xFFFD, -/* 10C8 */ 0x626E, 0xFFFD, 0xFFFD, 0x5043, 0xFFFD, 0x3A76, 0x6269, 0x375E, -/* 10D0 */ 0x3B33, 0x4C2C, 0x4B4B, 0x6264, 0x6266, 0x626A, 0x626B, 0xFFFD, -/* 10D8 */ 0xFFFD, 0xFFFD, 0x6277, 0xFFFD, 0xFFFD, 0x6274, 0x5475, 0x6273, -/* 10E0 */ 0xFFFD, 0xFFFD, 0x452D, 0xFFFD, 0x557A, 0x4542, 0x3240, 0xFFFD, -/* 10E8 */ 0xFFFD, 0x626F, 0xFFFD, 0x6272, 0x412F, 0x4B3C, 0xFFFD, 0xFFFD, -/* 10F0 */ 0x3521, 0x6279, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C31, 0x6271, 0x5054, -/* 10F8 */ 0x5439, 0x6275, 0x3956, 0x6276, 0xFFFD, 0xFFFD, 0xFFFD, 0x4753, -/* 1100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6270, 0xFFFD, 0xFFFD, -/* 1108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x575C, 0x6D21, 0xFFFD, 0xFFFD, 0x6278, -/* 1110 */ 0xFFFD, 0x6D25, 0x627E, 0x4A51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4135, 0xFFFD, 0x3B50, 0xFFFD, 0xFFFD, -/* 1120 */ 0x3F56, 0xFFFD, 0x3A63, 0xFFFD, 0xFFFD, 0x4B21, 0xFFFD, 0xFFFD, -/* 1128 */ 0xFFFD, 0x6D26, 0x6D23, 0xFFFD, 0xFFFD, 0x6D22, 0xFFFD, 0xFFFD, -/* 1130 */ 0xFFFD, 0xFFFD, 0x3B56, 0x6D27, 0x5074, 0xFFFD, 0xFFFD, 0x6D24, -/* 1138 */ 0x3A5E, 0x3677, 0x6321, 0x3632, 0x4C71, 0x3927, 0xFFFD, 0x4F22, -/* 1140 */ 0x4721, 0xFFFD, 0xFFFD, 0x3F52, 0xFFFD, 0xFFFD, 0x3671, 0xFFFD, -/* 1148 */ 0x627A, 0x627B, 0x627D, 0x627C, 0x4455, 0x6322, 0xFFFD, 0x5341, -/* 1150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6327, 0x4744, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1158 */ 0xFFFD, 0x4F24, 0xFFFD, 0xFFFD, 0x6329, 0x3A37, 0xFFFD, 0xFFFD, -/* 1160 */ 0xFFFD, 0xFFFD, 0x6328, 0xFFFD, 0x3B5A, 0xFFFD, 0x6323, 0xFFFD, -/* 1168 */ 0xFFFD, 0xFFFD, 0x6324, 0x632A, 0xFFFD, 0x6326, 0xFFFD, 0x4E72, -/* 1170 */ 0x5346, 0xFFFD, 0xFFFD, 0x3B3C, 0xFFFD, 0xFFFD, 0x5443, 0xFFFD, -/* 1178 */ 0x447A, 0xFFFD, 0xFFFD, 0x6D28, 0x507C, 0x6325, 0xFFFD, 0x4375, -/* 1180 */ 0xFFFD, 0x632D, 0x312F, 0xFFFD, 0x6332, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1188 */ 0x3C42, 0xFFFD, 0xFFFD, 0x632C, 0x353F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4769, 0x6330, 0xFFFD, -/* 1198 */ 0xFFFD, 0xFFFD, 0x3E2A, 0x4D6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11A0 */ 0xFFFD, 0x3B73, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C68, 0xFFFD, 0xFFFD, -/* 11A8 */ 0x632F, 0xFFFD, 0x6331, 0xFFFD, 0x4F27, 0x632E, 0xFFFD, 0x4E29, -/* 11B0 */ 0x3B5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x356B, 0x3E65, -/* 11B8 */ 0x3252, 0x334D, 0xFFFD, 0x3139, 0x632B, 0x3251, 0x352C, 0x395F, -/* 11C0 */ 0x3668, 0xFFFD, 0xFFFD, 0x4F6B, 0x6337, 0xFFFD, 0x3B4C, 0xFFFD, -/* 11C8 */ 0xFFFD, 0x4847, 0x504A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11D0 */ 0x6338, 0x336E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D29, 0xFFFD, -/* 11D8 */ 0x537A, 0x5364, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D2A, 0x6339, 0x5262, -/* 11E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6335, 0xFFFD, 0xFFFD, -/* 11E8 */ 0xFFFD, 0xFFFD, 0x535E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3850, -/* 11F0 */ 0x6333, 0xFFFD, 0xFFFD, 0x6336, 0x375F, 0xFFFD, 0x6334, 0x4022, -/* 11F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x633A, 0x5438, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3448, 0xFFFD, 0x633B, -/* 1208 */ 0xFFFD, 0x3B45, 0xFFFD, 0x4977, 0xFFFD, 0xFFFD, 0x4965, 0xFFFD, -/* 1210 */ 0xFFFD, 0xFFFD, 0x443D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1218 */ 0xFFFD, 0xFFFD, 0x6D2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x427D, -/* 1220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B5B, 0x3F2E, 0xFFFD, 0xFFFD, -/* 1228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E3F, 0xFFFD, 0xFFFD, -/* 1230 */ 0xFFFD, 0xFFFD, 0x633C, 0xFFFD, 0x3F36, 0x316F, 0xFFFD, 0xFFFD, -/* 1238 */ 0x5477, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x633E, 0xFFFD, -/* 1240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D2D, -/* 1248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1250 */ 0xFFFD, 0x633F, 0x3A29, 0x6D2C, 0xFFFD, 0xFFFD, 0x633D, 0xFFFD, -/* 1258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1260 */ 0xFFFD, 0x6340, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1268 */ 0x3A36, 0xFFFD, 0xFFFD, 0xFFFD, 0x362E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1270 */ 0xFFFD, 0xFFFD, 0x5038, 0xFFFD, 0x3043, 0x6D2E, 0xFFFD, 0xFFFD, -/* 1278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D2F, 0x4041, 0xFFFD, 0x6341, 0x6342, -/* 1280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1288 */ 0xFFFD, 0x5C32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1290 */ 0x6D30, 0xFFFD, 0x386A, 0xFFFD, 0x4E6C, 0x6A27, 0x5067, 0x4A79, -/* 1298 */ 0x4856, 0x4F37, 0x3349, 0x4E52, 0x3D64, 0xFFFD, 0xFFFD, 0x635E, -/* 12A0 */ 0x3B72, 0x6A28, 0x553D, 0xFFFD, 0x465D, 0x6A29, 0xFFFD, 0xFFFD, -/* 12A8 */ 0xFFFD, 0x6A2A, 0xFFFD, 0x6A2C, 0x6A2B, 0xFFFD, 0x6A2E, 0x6A2D, -/* 12B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D58, 0xFFFD, 0x6A2F, 0xFFFD, -/* 12B8 */ 0x423E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3441, 0x3477, 0xFFFD, -/* 12C0 */ 0xFFFD, 0x3B27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C66, -/* 12C8 */ 0x6C65, 0x373F, 0x4B79, 0x3162, 0xFFFD, 0x6C67, 0xFFFD, 0xFFFD, -/* 12D0 */ 0xFFFD, 0x4948, 0x6C68, 0x6C69, 0xFFFD, 0x4A56, 0x5E50, 0x3245, -/* 12D8 */ 0x547A, 0xFFFD, 0xFFFD, 0x464B, 0x3047, 0x3472, 0x4853, 0xFFFD, -/* 12E0 */ 0xFFFD, 0xFFFD, 0x4D50, 0xFFFD, 0xFFFD, 0x3F38, 0xFFFD, 0xFFFD, -/* 12E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F5B, 0xFFFD, 0xFFFD, -/* 12F0 */ 0x4724, 0x5634, 0xFFFD, 0x4029, 0x5E51, 0x4928, 0x516F, 0x4524, -/* 12F8 */ 0x3067, 0x3336, 0x4845, 0xFFFD, 0xFFFD, 0x3062, 0xFFFD, 0xFFFD, -/* 1300 */ 0x3776, 0xFFFD, 0xFFFD, 0x457A, 0xFFFD, 0xFFFD, 0x3673, 0xFFFD, -/* 1308 */ 0x5552, 0x3350, 0x3C3C, 0xFFFD, 0xFFFD, 0xFFFD, 0x332D, 0xFFFD, -/* 1310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E71, 0x3051, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5256, 0x4A63, 0x5725, 0xFFFD, 0x4D36, -/* 1320 */ 0x3636, 0x3F39, 0x555B, 0xFFFD, 0x3827, 0x4557, 0xFFFD, 0xFFFD, -/* 1328 */ 0xFFFD, 0x5E52, 0x3F59, 0x4255, 0x4740, 0xFFFD, 0x3B24, 0x3128, -/* 1330 */ 0xFFFD, 0xFFFD, 0x456A, 0xFFFD, 0xFFFD, 0x457B, 0x4C27, 0xFFFD, -/* 1338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3127, 0xFFFD, 0xFFFD, 0xFFFD, 0x3556, -/* 1340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4428, 0xFFFD, 0x5E53, 0x513A, 0x3369, -/* 1348 */ 0xFFFD, 0x4372, 0xFFFD, 0xFFFD, 0x3777, 0xFFFD, 0x5674, 0x3523, -/* 1350 */ 0x3270, 0x4434, 0x4469, 0x402D, 0x5E54, 0xFFFD, 0x3068, 0x4544, -/* 1358 */ 0x4160, 0xFFFD, 0x3955, 0xFFFD, 0x3E5C, 0x4D58, 0x304E, 0xFFFD, -/* 1360 */ 0x4D4F, 0x5E56, 0x3E50, 0x573E, 0x5E55, 0x5550, 0x305D, 0xFFFD, -/* 1368 */ 0xFFFD, 0x4462, 0xFFFD, 0xFFFD, 0x4223, 0x3C70, 0xFFFD, 0x5335, -/* 1370 */ 0x4039, 0x4521, 0x3226, 0x5471, 0xFFFD, 0xFFFD, 0x4028, 0x4A43, -/* 1378 */ 0x5E57, 0x557C, 0xFFFD, 0x3930, 0xFFFD, 0x482D, 0x4B29, 0xFFFD, -/* 1380 */ 0x5E59, 0x3F3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4634, 0x5727, -/* 1388 */ 0x4A30, 0x4443, 0xFFFD, 0x3356, 0x3952, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1390 */ 0xFFFD, 0x5638, 0x6A7C, 0x3034, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1398 */ 0x3F66, 0xFFFD, 0xFFFD, 0x4C74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13A0 */ 0x4D5A, 0xFFFD, 0xFFFD, 0xFFFD, 0x563F, 0x424E, 0xFFFD, 0x4E4E, -/* 13A8 */ 0x4C22, 0x502E, 0x4453, 0x3532, 0x5E58, 0x5575, 0x3C37, 0x3B53, -/* 13B0 */ 0xFFFD, 0xFFFD, 0x3024, 0xFFFD, 0x4532, 0x346C, 0xFFFD, 0xFFFD, -/* 13B8 */ 0xFFFD, 0x5571, 0xFFFD, 0xFFFD, 0x6A7D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E5A, 0x4D26, 0xFFFD, 0xFFFD, 0x4D6C, -/* 13C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E66, 0x5E5C, 0xFFFD, 0x4D31, -/* 13D0 */ 0x4026, 0xFFFD, 0xFFFD, 0x573D, 0xFFFD, 0x5E5B, 0x3046, 0x3A34, -/* 13D8 */ 0x4953, 0x4473, 0x3E68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3236, -/* 13E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13E8 */ 0x404C, 0x4B70, 0xFFFD, 0x3C71, 0x3B3B, 0x3537, 0xFFFD, 0xFFFD, -/* 13F0 */ 0xFFFD, 0x4575, 0xFFFD, 0x5E66, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E63, -/* 13F8 */ 0x3E5D, 0xFFFD, 0xFFFD, 0x5E5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1400 */ 0x3437, 0x3D5D, 0xFFFD, 0xFFFD, 0x5E60, 0x446D, 0xFFFD, 0xFFFD, -/* 1408 */ 0xFFFD, 0xFFFD, 0x4F46, 0xFFFD, 0x3560, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1410 */ 0xFFFD, 0x365E, 0x4A5A, 0x3574, 0x5E65, 0xFFFD, 0x5546, 0xFFFD, -/* 1418 */ 0x5E61, 0x4C4D, 0x467E, 0xFFFD, 0x4545, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1420 */ 0x5234, 0xFFFD, 0x3E72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1428 */ 0xFFFD, 0xFFFD, 0x4253, 0xFFFD, 0x4C3D, 0x3338, 0xFFFD, 0x3D53, -/* 1430 */ 0xFFFD, 0x3F58, 0x4D46, 0x515A, 0x346B, 0xFFFD, 0x5E64, 0x5E5D, -/* 1438 */ 0x5E67, 0xFFFD, 0x6A7E, 0xFFFD, 0xFFFD, 0x4230, 0x5E62, 0xFFFD, -/* 1440 */ 0xFFFD, 0x5640, 0x3527, 0xFFFD, 0x3274, 0xFFFD, 0x5E68, 0xFFFD, -/* 1448 */ 0x5E72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E6D, 0xFFFD, -/* 1450 */ 0x5E71, 0xFFFD, 0xFFFD, 0x4860, 0xFFFD, 0xFFFD, 0xFFFD, 0x5761, -/* 1458 */ 0x5E6F, 0x4368, 0x4C61, 0xFFFD, 0x3265, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1460 */ 0x523E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1468 */ 0x5E6E, 0xFFFD, 0x5E6B, 0x4E55, 0xFFFD, 0x3427, 0xFFFD, 0xFFFD, -/* 1470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F2B, 0x3E3E, 0xFFFD, 0xFFFD, 0x3D52, -/* 1478 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E69, 0xFFFD, 0x542E, 0xFFFD, -/* 1480 */ 0x5E5E, 0xFFFD, 0x5E6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x403F, -/* 1488 */ 0xFFFD, 0x5E6C, 0x3273, 0x3869, 0x4227, 0xFFFD, 0xFFFD, 0x3D41, -/* 1490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E75, 0x5E78, 0xFFFD, -/* 1498 */ 0xFFFD, 0x322B, 0x3424, 0xFFFD, 0xFFFD, 0x346A, 0x4926, 0xFFFD, -/* 14A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E76, 0x4B51, 0xFFFD, -/* 14A8 */ 0x3863, 0xFFFD, 0x5E77, 0x5E7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14B0 */ 0x5E79, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C42, 0xFFFD, 0x3061, 0x346E, -/* 14B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x653A, 0xFFFD, -/* 14C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x502F, 0xFFFD, 0xFFFD, 0x326B, -/* 14C8 */ 0xFFFD, 0x6B21, 0xFFFD, 0x5E74, 0xFFFD, 0xFFFD, 0x4963, 0x5E73, -/* 14D0 */ 0x305A, 0x5221, 0x3177, 0xFFFD, 0x4C2F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E70, 0xFFFD, 0x4B24, 0xFFFD, -/* 14E0 */ 0xFFFD, 0xFFFD, 0x552A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14E8 */ 0x5E7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14F0 */ 0xFFFD, 0x345D, 0xFFFD, 0x4426, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E7D, -/* 14F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1500 */ 0xFFFD, 0xFFFD, 0x437E, 0x4421, 0x5F21, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x414C, 0xFFFD, 0x5E7C, 0x3E6F, -/* 1510 */ 0xFFFD, 0x4632, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3345, 0x4876, 0xFFFD, 0xFFFD, 0x4B3A, -/* 1520 */ 0x5E7E, 0xFFFD, 0xFFFD, 0x5F24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1528 */ 0x5732, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3337, 0xFFFD, -/* 1530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4143, 0xFFFD, 0xFFFD, 0x474B, 0x3225, -/* 1538 */ 0x3469, 0xFFFD, 0x572B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x446C, -/* 1540 */ 0xFFFD, 0x5F22, 0x5F23, 0xFFFD, 0x5F25, 0xFFFD, 0x3A33, 0xFFFD, -/* 1548 */ 0xFFFD, 0xFFFD, 0x5F26, 0xFFFD, 0x405E, 0xFFFD, 0xFFFD, 0x4943, -/* 1550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3259, -/* 1558 */ 0x4766, 0xFFFD, 0x5F27, 0xFFFD, 0x475C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1560 */ 0xFFFD, 0x5F28, 0x6B22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1568 */ 0x4B53, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F2A, 0xFFFD, 0x5F29, 0xFFFD, -/* 1570 */ 0x3241, 0x454A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1578 */ 0xFFFD, 0xFFFD, 0x5F2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x545C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1588 */ 0xFFFD, 0x4841, 0x5F2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1590 */ 0x3E70, 0xFFFD, 0xFFFD, 0x5F2D, 0x5627, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1598 */ 0xFFFD, 0x6A37, 0x6B36, 0x4A55, 0xFFFD, 0x587C, 0x3844, 0xFFFD, -/* 15A0 */ 0x3925, 0xFFFD, 0xFFFD, 0x3745, 0x557E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15A8 */ 0xFFFD, 0xFFFD, 0x394A, 0xFFFD, 0xFFFD, 0x5027, 0x744D, 0xFFFD, -/* 15B0 */ 0xFFFD, 0x3550, 0xFFFD, 0xFFFD, 0x4374, 0xFFFD, 0x3E48, 0xFFFD, -/* 15B8 */ 0xFFFD, 0xFFFD, 0x6B37, 0x303D, 0xFFFD, 0xFFFD, 0x3D4C, 0xFFFD, -/* 15C0 */ 0x4132, 0xFFFD, 0x3156, 0x3328, 0xFFFD, 0xFFFD, 0xFFFD, 0x3852, -/* 15C8 */ 0x4922, 0xFFFD, 0xFFFD, 0x3658, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15D0 */ 0x6B38, 0x3E34, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A7D, 0xFFFD, 0x4743, -/* 15D8 */ 0xFFFD, 0x557B, 0xFFFD, 0xFFFD, 0x3773, 0x4E44, 0xFFFD, 0xFFFD, -/* 15E0 */ 0xFFFD, 0x552B, 0x3173, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C33, 0x305F, -/* 15E8 */ 0xFFFD, 0x6C35, 0xFFFD, 0xFFFD, 0xFFFD, 0x3637, 0xFFFD, 0x414F, -/* 15F0 */ 0xFFFD, 0x757A, 0x5031, 0xFFFD, 0xFFFD, 0x5565, 0xFFFD, 0x4E53, -/* 15F8 */ 0xFFFD, 0xFFFD, 0x3D6F, 0x3362, 0xFFFD, 0x382B, 0xFFFD, 0x5536, -/* 1600 */ 0xFFFD, 0x6D3D, 0xFFFD, 0x364F, 0xFFFD, 0x4B39, 0x5042, 0xFFFD, -/* 1608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x373D, -/* 1610 */ 0xFFFD, 0xFFFD, 0x6C36, 0x4A29, 0xFFFD, 0xFFFD, 0xFFFD, 0x4554, -/* 1618 */ 0xFFFD, 0x6C39, 0x6C38, 0x4243, 0x6C37, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1620 */ 0xFFFD, 0x507D, 0x6C3A, 0xFFFD, 0x6C3B, 0x5765, 0xFFFD, 0xFFFD, -/* 1628 */ 0x6C3C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C3D, 0x466C, 0xFFFD, 0xFFFD, -/* 1630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E5E, 0xFFFD, -/* 1638 */ 0x3C48, 0xFFFD, 0xFFFD, 0x4855, 0x3529, 0x3E49, 0x563C, 0x5467, -/* 1640 */ 0xFFFD, 0xFFFD, 0x512E, 0x5071, 0x6A38, 0x6A39, 0x6A3A, 0x3A35, -/* 1648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A31, 0x3F75, 0xFFFD, 0xFFFD, -/* 1650 */ 0x4D7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A40, 0xFFFD, -/* 1658 */ 0x303A, 0x6A3E, 0xFFFD, 0xFFFD, 0x4025, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1660 */ 0x6A3B, 0xFFFD, 0x327D, 0xFFFD, 0x4377, 0x3B68, 0xFFFD, 0xFFFD, -/* 1668 */ 0xFFFD, 0x5257, 0x4E74, 0x6A3F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A3C, -/* 1670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A43, 0xFFFD, 0x5047, 0x5333, 0xFFFD, -/* 1678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x343A, 0xFFFD, 0x4341, 0x5772, 0xFFFD, -/* 1680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5551, 0xFFFD, 0x4A47, 0xFFFD, 0x6A45, -/* 1688 */ 0xFFFD, 0xFFFD, 0x6A44, 0x6A47, 0x6A46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1690 */ 0xFFFD, 0xFFFD, 0x5667, 0xFFFD, 0x4F54, 0xFFFD, 0xFFFD, 0x6A4B, -/* 1698 */ 0xFFFD, 0x3B4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16A0 */ 0xFFFD, 0x3D7A, 0x494E, 0xFFFD, 0xFFFD, 0x6A4C, 0xFFFD, 0xFFFD, -/* 16A8 */ 0x4939, 0x4F7E, 0x6A4A, 0x544E, 0x6A4D, 0x6A4F, 0xFFFD, 0xFFFD, -/* 16B0 */ 0x4D6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A49, 0xFFFD, 0x6A4E, -/* 16B8 */ 0xFFFD, 0xFFFD, 0x4E6E, 0xFFFD, 0x3B5E, 0xFFFD, 0x333F, 0xFFFD, -/* 16C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4655, 0x3E30, 0x4E7A, 0xFFFD, -/* 16C8 */ 0xFFFD, 0xFFFD, 0x4767, 0xFFFD, 0x3E27, 0x6A50, 0xFFFD, 0xFFFD, -/* 16D0 */ 0x5647, 0xFFFD, 0xFFFD, 0xFFFD, 0x4140, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16D8 */ 0x545D, 0xFFFD, 0x6A51, 0xFFFD, 0xFFFD, 0x4F3E, 0xFFFD, 0xFFFD, -/* 16E0 */ 0xFFFD, 0xFFFD, 0x6A52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A6E, -/* 16E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x452F, 0x3035, 0xFFFD, 0xFFFD, -/* 16F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A53, 0x745F, 0xFFFD, -/* 1700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x443A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1708 */ 0xFFFD, 0xFFFD, 0x3129, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x655F, -/* 1710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A55, 0x4A6F, 0xFFFD, 0x6A56, -/* 1718 */ 0x6A57, 0x4658, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1720 */ 0xFFFD, 0xFFFD, 0x6A58, 0xFFFD, 0xFFFD, 0x6A59, 0xFFFD, 0xFFFD, -/* 1728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x543B, 0xFFFD, 0x477A, 0x5237, -/* 1730 */ 0x387C, 0xFFFD, 0xFFFD, 0x6A42, 0xFFFD, 0x325C, 0xFFFD, 0xFFFD, -/* 1738 */ 0x427C, 0xFFFD, 0x5478, 0x4C66, 0x576E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5442, 0x5350, 0x6B43, 0x4573, -/* 1748 */ 0xFFFD, 0x377E, 0xFFFD, 0xFFFD, 0x6B54, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1750 */ 0x4B37, 0x6B5E, 0xFFFD, 0x404A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D7B, -/* 1758 */ 0xFFFD, 0x332F, 0xFFFD, 0x465A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1760 */ 0xFFFD, 0xFFFD, 0x6B7C, 0xFFFD, 0x443E, 0xFFFD, 0x4E34, 0x4429, -/* 1768 */ 0x313E, 0x547D, 0xFFFD, 0x4A75, 0xFFFD, 0x566C, 0xFFFD, 0xFFFD, -/* 1770 */ 0x4653, 0x3664, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B7A, 0xFFFD, -/* 1778 */ 0xFFFD, 0x5060, 0xFFFD, 0xFFFD, 0x4931, 0xFFFD, 0x5453, 0x4828, -/* 1780 */ 0xFFFD, 0xFFFD, 0x384B, 0xFFFD, 0x683E, 0x493C, 0xFFFD, 0xFFFD, -/* 1788 */ 0x683B, 0xFFFD, 0x406E, 0x5053, 0x3244, 0x3465, 0xFFFD, 0x683C, -/* 1790 */ 0xFFFD, 0xFFFD, 0x5548, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1798 */ 0x3645, 0xFFFD, 0x683D, 0x4A78, 0x385C, 0x4C75, 0xFFFD, 0xFFFD, -/* 17A0 */ 0xFFFD, 0x4034, 0xFFFD, 0xFFFD, 0x516E, 0x683F, 0x6842, 0xFFFD, -/* 17A8 */ 0xFFFD, 0x3A3C, 0xFFFD, 0x312D, 0x3D5C, 0xFFFD, 0x6A3D, 0x6843, -/* 17B0 */ 0xFFFD, 0x6846, 0xFFFD, 0x684B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17B8 */ 0x684C, 0xFFFD, 0x4B49, 0x3065, 0xFFFD, 0x3C2B, 0xFFFD, 0xFFFD, -/* 17C0 */ 0x3939, 0xFFFD, 0xFFFD, 0x6841, 0xFFFD, 0x4D77, 0xFFFD, 0x684A, -/* 17C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E76, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17D0 */ 0xFFFD, 0x556D, 0xFFFD, 0x4156, 0x6844, 0xFFFD, 0x4336, 0xFFFD, -/* 17D8 */ 0x397B, 0x5626, 0x6848, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A60, 0x5466, -/* 17E0 */ 0xFFFD, 0x6840, 0xFFFD, 0x6845, 0x6847, 0xFFFD, 0x4739, 0x3763, -/* 17E8 */ 0xFFFD, 0x6849, 0xFFFD, 0x3F5D, 0x6852, 0xFFFD, 0xFFFD, 0x6857, -/* 17F0 */ 0xFFFD, 0x6855, 0x3C5C, 0x3C4F, 0x685B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x685E, 0xFFFD, 0x685A, -/* 1800 */ 0x317A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3058, 0x4433, 0x384C, 0x4662, 0x483E, -/* 1810 */ 0x4861, 0xFFFD, 0xFFFD, 0xFFFD, 0x684F, 0x6854, 0x6856, 0xFFFD, -/* 1818 */ 0x3971, 0x6858, 0x5775, 0xFFFD, 0x447B, 0xFFFD, 0x685C, 0xFFFD, -/* 1820 */ 0xFFFD, 0x3269, 0xFFFD, 0xFFFD, 0xFFFD, 0x6851, 0xFFFD, 0xFFFD, -/* 1828 */ 0x3C6D, 0xFFFD, 0xFFFD, 0x3F42, 0x684D, 0x5679, 0xFFFD, 0x4178, -/* 1830 */ 0x3271, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1838 */ 0xFFFD, 0x685F, 0xFFFD, 0x4A41, 0x6859, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1840 */ 0xFFFD, 0x5524, 0xFFFD, 0x316A, 0x553B, 0x684E, 0x6850, 0x3630, -/* 1848 */ 0x6853, 0xFFFD, 0x685D, 0x4038, 0xFFFD, 0x4A77, 0xFFFD, 0x4B28, -/* 1850 */ 0xFFFD, 0xFFFD, 0x465C, 0x4075, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1858 */ 0xFFFD, 0x6869, 0xFFFD, 0xFFFD, 0xFFFD, 0x5023, 0xFFFD, 0xFFFD, -/* 1860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6872, 0x566A, 0xFFFD, -/* 1868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6860, 0x6861, -/* 1870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5179, 0x3A4B, 0x3879, 0xFFFD, 0xFFFD, -/* 1878 */ 0x3871, 0x5454, 0x686F, 0xFFFD, 0x686E, 0x686C, 0x3970, 0x4C52, -/* 1880 */ 0x6866, 0x4E26, 0x3F72, 0xFFFD, 0x3038, 0x6871, 0x6870, 0xFFFD, -/* 1888 */ 0x5740, 0xFFFD, 0x6864, 0xFFFD, 0x4D29, 0x4923, 0xFFFD, 0x3B38, -/* 1890 */ 0x3D5B, 0x686A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6862, 0x6863, 0x6865, 0x3535, -/* 18A0 */ 0x6867, 0x4745, 0x686B, 0x686D, 0x3D30, 0x572E, 0xFFFD, 0x6878, -/* 18A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18B0 */ 0x6875, 0xFFFD, 0x4D30, 0x6876, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x413A, 0xFFFD, 0x6868, -/* 18C0 */ 0xFFFD, 0x4337, 0x3070, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6874, 0xFFFD, 0xFFFD, 0xFFFD, 0x6877, -/* 18D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3923, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4952, 0xFFFD, -/* 18E0 */ 0xFFFD, 0xFFFD, 0x434E, 0x4E60, 0x4066, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18E8 */ 0xFFFD, 0x4B73, 0xFFFD, 0x4C5D, 0x5035, 0xFFFD, 0xFFFD, 0x4A61, -/* 18F0 */ 0xFFFD, 0x6873, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C6C, 0xFFFD, 0x6879, 0xFFFD, -/* 1900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x435E, 0xFFFD, 0x4665, -/* 1908 */ 0xFFFD, 0x3977, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3074, 0xFFFD, -/* 1910 */ 0xFFFD, 0x5758, 0xFFFD, 0xFFFD, 0x3C2C, 0xFFFD, 0x456F, 0xFFFD, -/* 1918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C44, 0xFFFD, 0xFFFD, 0x6926, -/* 1920 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1928 */ 0xFFFD, 0xFFFD, 0x492D, 0xFFFD, 0x6922, 0x4062, 0xFFFD, 0xFFFD, -/* 1930 */ 0xFFFD, 0x3F43, 0xFFFD, 0xFFFD, 0xFFFD, 0x687E, 0x3957, 0xFFFD, -/* 1938 */ 0x687B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6924, 0xFFFD, 0xFFFD, -/* 1940 */ 0xFFFD, 0x524E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6923, -/* 1948 */ 0xFFFD, 0x5632, 0x5735, 0xFFFD, 0x6927, 0xFFFD, 0x3D37, 0x687C, -/* 1950 */ 0x687D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6921, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D56, 0xFFFD, 0xFFFD, -/* 1960 */ 0x522C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6932, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1968 */ 0xFFFD, 0x6929, 0xFFFD, 0xFFFD, 0xFFFD, 0x342A, 0xFFFD, 0x343B, -/* 1970 */ 0xFFFD, 0xFFFD, 0x692B, 0x5028, 0xFFFD, 0xFFFD, 0x6925, 0xFFFD, -/* 1978 */ 0xFFFD, 0x337E, 0xFFFD, 0xFFFD, 0x692C, 0x4063, 0xFFFD, 0x692A, -/* 1980 */ 0xFFFD, 0xFFFD, 0x6939, 0xFFFD, 0xFFFD, 0x6938, 0xFFFD, 0xFFFD, -/* 1988 */ 0xFFFD, 0xFFFD, 0x692E, 0xFFFD, 0xFFFD, 0x687A, 0xFFFD, 0xFFFD, -/* 1990 */ 0x6928, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F2C, 0x6931, -/* 1998 */ 0x693A, 0xFFFD, 0xFFFD, 0x4225, 0xFFFD, 0xFFFD, 0xFFFD, 0x692F, -/* 19A0 */ 0xFFFD, 0x3845, 0xFFFD, 0x692D, 0xFFFD, 0x535C, 0x6934, 0x6935, -/* 19A8 */ 0x6937, 0xFFFD, 0xFFFD, 0xFFFD, 0x6947, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4046, 0x6945, 0xFFFD, 0xFFFD, 0x6930, -/* 19B8 */ 0xFFFD, 0xFFFD, 0x693B, 0x3071, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x693C, 0x5525, -/* 19C8 */ 0xFFFD, 0xFFFD, 0x693E, 0xFFFD, 0x693F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19D0 */ 0x6941, 0xFFFD, 0xFFFD, 0x4171, 0xFFFD, 0xFFFD, 0x4836, 0xFFFD, -/* 19D8 */ 0xFFFD, 0xFFFD, 0x693D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19E0 */ 0x6942, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19E8 */ 0xFFFD, 0x6943, 0xFFFD, 0x6933, 0xFFFD, 0x6936, 0xFFFD, 0x3B31, -/* 19F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6940, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19F8 */ 0xFFFD, 0xFFFD, 0x3C77, 0xFFFD, 0xFFFD, 0xFFFD, 0x6944, 0x6946, -/* 1A00 */ 0x694A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x694E, 0xFFFD, 0xFFFD, -/* 1A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A10 */ 0x325B, 0xFFFD, 0x6948, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x372E, 0x694B, 0x694C, -/* 1A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5541, 0xFFFD, -/* 1A28 */ 0x4423, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6958, -/* 1A30 */ 0xFFFD, 0x3A61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6949, 0xFFFD, -/* 1A38 */ 0x5323, 0xFFFD, 0xFFFD, 0xFFFD, 0x6954, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6957, 0x6950, 0xFFFD, 0xFFFD, -/* 1A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x694F, 0xFFFD, 0xFFFD, 0x4741, 0xFFFD, -/* 1A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6952, -/* 1A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6959, -/* 1A60 */ 0x3348, 0xFFFD, 0x6953, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A68 */ 0x4F70, 0xFFFD, 0xFFFD, 0xFFFD, 0x694D, 0x3377, 0xFFFD, 0xFFFD, -/* 1A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6956, 0xFFFD, 0xFFFD, -/* 1A78 */ 0x695A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C34, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A80 */ 0x4F2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A88 */ 0xFFFD, 0xFFFD, 0x6955, 0xFFFD, 0x695C, 0x695B, 0xFFFD, 0xFFFD, -/* 1A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x695E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6951, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x695D, 0xFFFD, 0x695F, -/* 1AA8 */ 0x434A, 0x4737, 0x344E, 0x3B36, 0x5040, 0x6C23, 0xFFFD, 0xFFFD, -/* 1AB0 */ 0x4537, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x537B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC0 */ 0x6C24, 0xFFFD, 0x6C25, 0x465B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F6E, -/* 1AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C26, 0xFFFD, 0xFFFD, 0x6C27, -/* 1AD0 */ 0x502A, 0xFFFD, 0x4738, 0xFFFD, 0xFFFD, 0x3868, 0x6C28, 0xFFFD, -/* 1AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5639, -/* 1AE0 */ 0x557D, 0x344B, 0x323D, 0x4E64, 0x4667, 0xFFFD, 0xFFFD, 0x4D61, -/* 1AE8 */ 0x3475, 0xFFFD, 0x4B40, 0x3C5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AF0 */ 0x6962, 0x6963, 0x516A, 0x6965, 0xFFFD, 0x3479, 0x6964, 0xFFFD, -/* 1AF8 */ 0x5133, 0x4A62, 0x3250, 0xFFFD, 0x6968, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B00 */ 0xFFFD, 0x6966, 0x6967, 0xFFFD, 0xFFFD, 0x5633, 0xFFFD, 0xFFFD, -/* 1B08 */ 0xFFFD, 0x6969, 0x696A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B10 */ 0x696B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B18 */ 0xFFFD, 0x696C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B20 */ 0xFFFD, 0xFFFD, 0x6C2F, 0x4539, 0x364E, 0xFFFD, 0x5273, 0xFFFD, -/* 1B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x356E, 0xFFFD, -/* 1B30 */ 0x3B59, 0x6C31, 0xFFFD, 0xFFFD, 0x5263, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B38 */ 0xFFFD, 0xFFFD, 0x4E63, 0xFFFD, 0x4438, 0xFFFD, 0x433F, 0xFFFD, -/* 1B40 */ 0xFFFD, 0x363E, 0x5839, 0x3148, 0x314F, 0x3151, 0x457E, 0xFFFD, -/* 1B48 */ 0x3150, 0xFFFD, 0x432B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B50 */ 0x5531, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B58 */ 0xFFFD, 0x6B24, 0x3A41, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C3A, 0xFFFD, -/* 1B60 */ 0xFFFD, 0xFFFD, 0x6B25, 0xFFFD, 0x6B27, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B68 */ 0x6B28, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B26, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B29, 0x6B2B, 0x6B2A, 0xFFFD, -/* 1B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B2C, 0xFFFD, 0x4A4F, 0x5835, -/* 1B80 */ 0x4371, 0xFFFD, 0x4325, 0x4678, 0x6B2D, 0x444A, 0xFFFD, 0x6B2E, -/* 1B88 */ 0x6B2F, 0x6B30, 0x3755, 0xFFFD, 0xFFFD, 0xFFFD, 0x377A, 0xFFFD, -/* 1B90 */ 0x6B31, 0x4762, 0xFFFD, 0x6B33, 0xFFFD, 0x3A24, 0x5175, 0x3031, -/* 1B98 */ 0x6B32, 0x6B34, 0xFFFD, 0xFFFD, 0xFFFD, 0x352A, 0x4248, 0x4768, -/* 1BA0 */ 0xFFFD, 0x6B35, 0xFFFD, 0x4B2E, 0x635F, 0xFFFD, 0xFFFD, 0x5340, -/* 1BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x595B, 0xFFFD, 0xFFFD, 0x4D21, -/* 1BB0 */ 0x562D, 0x4773, 0xFFFD, 0xFFFD, 0xFFFD, 0x5960, 0x3B63, 0xFFFD, -/* 1BB8 */ 0x3A3A, 0x6362, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F2B, -/* 1BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6360, 0x4947, 0xFFFD, 0x3A39, 0xFFFD, -/* 1BC8 */ 0xFFFD, 0xFFFD, 0x5134, 0x6361, 0x486A, 0x392F, 0x3D2D, 0x3358, -/* 1BD0 */ 0x4E5B, 0xFFFD, 0xFFFD, 0x4C40, 0xFFFD, 0xFFFD, 0xFFFD, 0x6368, -/* 1BD8 */ 0x6369, 0x4D74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C2D, -/* 1BE0 */ 0xFFFD, 0x3C33, 0xFFFD, 0x636A, 0xFFFD, 0x636B, 0xFFFD, 0xFFFD, -/* 1BE8 */ 0x505A, 0xFFFD, 0xFFFD, 0xFFFD, 0x467B, 0x375A, 0xFFFD, 0xFFFD, -/* 1BF0 */ 0x475F, 0x524A, 0x4E56, 0xFFFD, 0x6364, 0x636C, 0xFFFD, 0x4972, -/* 1BF8 */ 0x3341, 0xFFFD, 0xFFFD, 0x6367, 0xFFFD, 0xFFFD, 0x4663, 0x6365, -/* 1C00 */ 0xFFFD, 0xFFFD, 0x6D33, 0x6366, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C08 */ 0x4933, 0xFFFD, 0x4566, 0xFFFD, 0xFFFD, 0xFFFD, 0x3935, 0xFFFD, -/* 1C10 */ 0x433B, 0xFFFD, 0x6363, 0x453D, 0x4124, 0x4259, 0x3257, 0xFFFD, -/* 1C18 */ 0x636D, 0x3B26, 0x442D, 0xFFFD, 0x6370, 0x3E5A, 0xFFFD, 0xFFFD, -/* 1C20 */ 0x637B, 0x6375, 0x3A53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3750, -/* 1C28 */ 0x534D, 0xFFFD, 0x564E, 0x5553, 0x3941, 0x5534, 0x5158, 0xFFFD, -/* 1C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5039, 0x4776, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C38 */ 0x482A, 0x3234, 0xFFFD, 0x435A, 0xFFFD, 0xFFFD, 0xFFFD, 0x636E, -/* 1C40 */ 0xFFFD, 0xFFFD, 0x637C, 0x636F, 0x3728, 0x6377, 0x6374, 0xFFFD, -/* 1C48 */ 0xFFFD, 0xFFFD, 0x373A, 0xFFFD, 0xFFFD, 0x4522, 0xFFFD, 0x6376, -/* 1C50 */ 0x455D, 0x3228, 0x467C, 0xFFFD, 0x4460, 0xFFFD, 0xFFFD, 0x5722, -/* 1C58 */ 0xFFFD, 0x4061, 0x6379, 0xFFFD, 0xFFFD, 0x637A, 0x637D, 0x4C29, -/* 1C60 */ 0x6373, 0xFFFD, 0x533E, 0xFFFD, 0x3143, 0x6D34, 0x6371, 0x6372, -/* 1C68 */ 0xFFFD, 0x6378, 0x503A, 0x4643, 0x5473, 0x637E, 0xFFFD, 0xFFFD, -/* 1C70 */ 0x3D60, 0xFFFD, 0xFFFD, 0x6427, 0xFFFD, 0xFFFD, 0x6426, 0xFFFD, -/* 1C78 */ 0xFFFD, 0xFFFD, 0x5173, 0x6423, 0xFFFD, 0x6429, 0xFFFD, 0xFFFD, -/* 1C80 */ 0xFFFD, 0x4877, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F34, 0xFFFD, -/* 1C88 */ 0x6428, 0x642E, 0x4265, 0xFFFD, 0xFFFD, 0x3634, 0xFFFD, 0xFFFD, -/* 1C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D72, 0xFFFD, 0x6422, 0xFFFD, -/* 1C98 */ 0xFFFD, 0x3A69, 0x642A, 0xFFFD, 0xFFFD, 0x642C, 0xFFFD, 0xFFFD, -/* 1CA0 */ 0x367D, 0x565E, 0x6432, 0xFFFD, 0x642D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CA8 */ 0x6421, 0xFFFD, 0x3B6E, 0x4D5D, 0x4722, 0x4549, 0xFFFD, 0xFFFD, -/* 1CB0 */ 0x4177, 0xFFFD, 0x6424, 0xFFFD, 0x4733, 0x3D2C, 0x3D3D, 0x6425, -/* 1CB8 */ 0xFFFD, 0x5747, 0x3262, 0xFFFD, 0x642B, 0x3C43, 0x642F, 0xFFFD, -/* 1CC0 */ 0x3B6B, 0x6430, 0x4528, 0x6431, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CC8 */ 0x5563, 0x3F23, 0xFFFD, 0x643A, 0xFFFD, 0x6437, 0xFFFD, 0x643B, -/* 1CD0 */ 0xFFFD, 0xFFFD, 0x643D, 0xFFFD, 0xFFFD, 0x4656, 0xFFFD, 0xFFFD, -/* 1CD8 */ 0x3A46, 0x404B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3821, 0x6434, 0xFFFD, -/* 1CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5421, 0xFFFD, 0xFFFD, 0x3A23, 0x3D7E, -/* 1CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x643C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CF0 */ 0xFFFD, 0x4D3F, 0xFFFD, 0xFFFD, 0x4479, 0xFFFD, 0xFFFD, 0x4F7B, -/* 1CF8 */ 0x4966, 0xFFFD, 0xFFFD, 0x533F, 0xFFFD, 0x4F51, 0xFFFD, 0xFFFD, -/* 1D00 */ 0x6433, 0xFFFD, 0x6438, 0x6439, 0x4C69, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D08 */ 0xFFFD, 0xFFFD, 0x4C4E, 0xFFFD, 0x4054, 0x6435, 0x4130, 0x6436, -/* 1D10 */ 0x4E50, 0xFFFD, 0x3B41, 0x3553, 0xFFFD, 0x4873, 0x3D27, 0x5547, -/* 1D18 */ 0x492C, 0x3822, 0x644A, 0xFFFD, 0xFFFD, 0x644C, 0x5144, 0xFFFD, -/* 1D20 */ 0xFFFD, 0x523A, 0xFFFD, 0xFFFD, 0x3A2D, 0xFFFD, 0xFFFD, 0x3A54, -/* 1D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6443, 0x356D, -/* 1D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x574D, 0x6440, 0x4F7D, 0x643F, 0xFFFD, -/* 1D38 */ 0xFFFD, 0xFFFD, 0x415C, 0x4C4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D40 */ 0x4A67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4457, 0xFFFD, 0x4C54, -/* 1D48 */ 0x6448, 0xFFFD, 0xFFFD, 0xFFFD, 0x6447, 0x6441, 0xFFFD, 0x6444, -/* 1D50 */ 0x352D, 0xFFFD, 0xFFFD, 0x5359, 0xFFFD, 0x6446, 0xFFFD, 0xFFFD, -/* 1D58 */ 0xFFFD, 0xFFFD, 0x5279, 0x3463, 0xFFFD, 0x3B34, 0xFFFD, 0xFFFD, -/* 1D60 */ 0x496E, 0xFFFD, 0x343E, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B6C, 0xFFFD, -/* 1D68 */ 0x514D, 0xFFFD, 0x4C6D, 0x6D35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4765, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D78 */ 0xFFFD, 0x5428, 0xFFFD, 0x644B, 0x5755, 0x6442, 0xFFFD, 0x3D25, -/* 1D80 */ 0x6445, 0xFFFD, 0xFFFD, 0x5366, 0xFFFD, 0x6449, 0x4978, 0xFFFD, -/* 1D88 */ 0xFFFD, 0x643E, 0xFFFD, 0xFFFD, 0x5365, 0xFFFD, 0xFFFD, 0x477E, -/* 1D90 */ 0x3649, 0xFFFD, 0x547C, 0x3233, 0x6457, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D98 */ 0x4E42, 0xFFFD, 0x644D, 0xFFFD, 0x4E3C, 0xFFFD, 0x385B, 0xFFFD, -/* 1DA0 */ 0xFFFD, 0x6456, 0xFFFD, 0x3F4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x534E, -/* 1DA8 */ 0xFFFD, 0x436C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DB0 */ 0xFFFD, 0xFFFD, 0x4548, 0x6458, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D44, 0x644F, 0xFFFD, 0xFFFD, -/* 1DC0 */ 0xFFFD, 0xFFFD, 0x6454, 0x6455, 0xFFFD, 0x3A7E, 0xFFFD, 0x4F66, -/* 1DC8 */ 0xFFFD, 0xFFFD, 0x553F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6452, 0x6450, -/* 1DD0 */ 0xFFFD, 0xFFFD, 0x644E, 0x4D65, 0x4A2A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DD8 */ 0x4023, 0xFFFD, 0x3D26, 0x6453, 0xFFFD, 0xFFFD, 0x3848, 0xFFFD, -/* 1DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6467, 0x5434, 0xFFFD, 0xFFFD, -/* 1DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x645B, 0xFFFD, 0xFFFD, -/* 1DF0 */ 0xFFFD, 0x416F, 0xFFFD, 0xFFFD, 0x6469, 0xFFFD, 0xFFFD, 0x5267, -/* 1DF8 */ 0xFFFD, 0xFFFD, 0x645F, 0xFFFD, 0x6460, 0xFFFD, 0xFFFD, 0x4F2A, -/* 1E00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B5D, 0xFFFD, 0x645A, 0x6451, -/* 1E08 */ 0xFFFD, 0x6465, 0xFFFD, 0x485C, 0x6463, 0xFFFD, 0xFFFD, 0x4467, -/* 1E10 */ 0x6462, 0xFFFD, 0x6461, 0xFFFD, 0xFFFD, 0xFFFD, 0x337C, 0x6468, -/* 1E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3561, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E20 */ 0x574C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6466, 0xFFFD, 0x3B2C, 0xFFFD, -/* 1E28 */ 0x5752, 0x4C4F, 0x6B78, 0xFFFD, 0x6464, 0xFFFD, 0xFFFD, 0x3976, -/* 1E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x564D, 0x6459, 0x645C, 0x427A, 0x645E, -/* 1E38 */ 0xFFFD, 0x424B, 0x4044, 0x4250, 0xFFFD, 0x3175, 0x4C32, 0xFFFD, -/* 1E40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E48 */ 0xFFFD, 0x354E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x646F, 0xFFFD, -/* 1E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x462F, -/* 1E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4661, 0xFFFD, 0xFFFD, 0x6475, 0xFFFD, -/* 1E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4229, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E68 */ 0x406C, 0x515D, 0x646E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x442E, 0xFFFD, 0xFFFD, -/* 1E78 */ 0xFFFD, 0x646D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6476, 0x6474, -/* 1E80 */ 0x427E, 0xFFFD, 0x645D, 0xFFFD, 0x6470, 0xFFFD, 0x4A7E, 0xFFFD, -/* 1E88 */ 0x5544, 0xFFFD, 0xFFFD, 0x6471, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x517A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x646B, 0x646C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EA0 */ 0x6472, 0xFFFD, 0x4E2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x454B, 0xFFFD, 0xFFFD, -/* 1EB0 */ 0xFFFD, 0x4731, 0xFFFD, 0x423A, 0xFFFD, 0xFFFD, 0xFFFD, 0x646A, -/* 1EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x414A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EC0 */ 0xFFFD, 0xFFFD, 0x4C36, 0x3331, 0xFFFD, 0xFFFD, 0xFFFD, 0x647B, -/* 1EC8 */ 0xFFFD, 0x6473, 0xFFFD, 0xFFFD, 0xFFFD, 0x647A, 0xFFFD, 0x647D, -/* 1ED0 */ 0xFFFD, 0x647C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1ED8 */ 0xFFFD, 0x334E, 0xFFFD, 0xFFFD, 0xFFFD, 0x333A, 0x6477, 0xFFFD, -/* 1EE0 */ 0xFFFD, 0x6479, 0x6478, 0x456C, 0x403D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EE8 */ 0xFFFD, 0x5468, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6522, -/* 1EF0 */ 0x3044, 0xFFFD, 0xFFFD, 0x6524, 0xFFFD, 0xFFFD, 0x6523, 0xFFFD, -/* 1EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C24, 0xFFFD, 0x6525, -/* 1F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6521, 0xFFFD, -/* 1F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x647E, 0x3174, -/* 1F10 */ 0x6528, 0xFFFD, 0x6529, 0x6526, 0x6527, 0x652A, 0x4659, 0xFFFD, -/* 1F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x652B, -/* 1F20 */ 0x652D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F28 */ 0x652C, 0x652F, 0xFFFD, 0xFFFD, 0xFFFD, 0x652E, 0x3960, 0xFFFD, -/* 1F30 */ 0xFFFD, 0x6530, 0x3B70, 0x6C61, 0x4370, 0xFFFD, 0x3546, 0x3B52, -/* 1F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4169, 0x546E, 0xFFFD, 0x3E44, -/* 1F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5746, 0xFFFD, 0x5456, 0x3253, 0x6C3E, -/* 1F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F50 */ 0x422F, 0x3436, 0xFFFD, 0xFFFD, 0xFFFD, 0x5157, 0xFFFD, 0xFFFD, -/* 1F58 */ 0xFFFD, 0x3334, 0xFFFD, 0x4832, 0x3F3B, 0x6C40, 0xFFFD, 0xFFFD, -/* 1F60 */ 0x564B, 0xFFFD, 0xFFFD, 0x6C3F, 0x6C41, 0x6C45, 0x3E66, 0x4C3F, -/* 1F68 */ 0x455A, 0x3E3C, 0xFFFD, 0x6C46, 0xFFFD, 0x317E, 0xFFFD, 0xFFFD, -/* 1F70 */ 0xFFFD, 0x6C44, 0x5528, 0x3563, 0xFFFD, 0x6C42, 0x4136, 0x3363, -/* 1F78 */ 0xFFFD, 0xFFFD, 0x6C43, 0x4B38, 0x4043, 0x4C7E, 0xFFFD, 0xFFFD, -/* 1F80 */ 0xFFFD, 0xFFFD, 0x4152, 0xFFFD, 0x6C48, 0x3A66, 0x4053, 0xFFFD, -/* 1F88 */ 0x5672, 0xFFFD, 0xFFFD, 0xFFFD, 0x514C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F90 */ 0xFFFD, 0x3F3E, 0xFFFD, 0x3733, 0x4955, 0x6C47, 0x3B62, 0xFFFD, -/* 1F98 */ 0x4C4C, 0x3D7D, 0x4848, 0xFFFD, 0x4F29, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D69, 0xFFFD, 0x456B, 0xFFFD, -/* 1FA8 */ 0xFFFD, 0xFFFD, 0x3769, 0x5149, 0x3A38, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FB0 */ 0xFFFD, 0xFFFD, 0x6C49, 0xFFFD, 0xFFFD, 0x6C4A, 0xFFFD, 0x3B40, -/* 1FB8 */ 0x6C4B, 0xFFFD, 0x6C62, 0x313A, 0x3759, 0x3D39, 0xFFFD, 0xFFFD, -/* 1FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C4C, 0x5166, -/* 1FC8 */ 0x6C4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x483B, 0x6C51, 0xFFFD, -/* 1FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C53, 0xFFFD, 0x3B4D, 0xFFFD, 0x3C65, -/* 1FD8 */ 0x6C4F, 0xFFFD, 0x4937, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FE0 */ 0x433A, 0xFFFD, 0x6C63, 0x5555, 0x6C50, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FE8 */ 0xFFFD, 0xFFFD, 0x5673, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C52, 0x6C4E, -/* 1FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C54, 0xFFFD, 0x6C55, 0xFFFD, -/* 1FF8 */ 0xFFFD, 0x493F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2000 */ 0x4F28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x505C, 0xFFFD, -/* 2008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x512C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2010 */ 0x485B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C56, 0x4E75, 0xFFFD, 0xFFFD, -/* 2018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A6C, 0x6C5A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C59, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2028 */ 0x303E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C57, -/* 2030 */ 0xFFFD, 0x6C58, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C64, 0xFFFD, 0xFFFD, -/* 2038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x483C, -/* 2040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2048 */ 0xFFFD, 0xFFFD, 0x4147, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2050 */ 0x6C5C, 0x5160, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C5B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2060 */ 0xFFFD, 0x546F, 0xFFFD, 0x6C5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2068 */ 0xFFFD, 0xFFFD, 0x5B46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C5E, 0x6C5F, 0xFFFD, -/* 2078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2080 */ 0xFFFD, 0x6C60, 0xFFFD, 0x5726, 0xFFFD, 0x4540, 0xFFFD, 0xFFFD, -/* 2088 */ 0xFFFD, 0x6B3C, 0x302E, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E74, 0x3838, -/* 2090 */ 0x522F, 0x3056, 0x3579, 0xFFFD, 0x5833, 0xFFFD, 0x4B2C, 0xFFFD, -/* 2098 */ 0x635D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20A0 */ 0x462C, 0x3066, 0xFFFD, 0xFFFD, 0xFFFD, 0x4546, 0x6B39, 0xFFFD, -/* 20A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B3A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B3B, -/* 20B0 */ 0xFFFD, 0xFFFD, 0x5140, 0xFFFD, 0x4523, 0xFFFD, 0x6A72, 0xFFFD, -/* 20B8 */ 0x4432, 0xFFFD, 0x4435, 0x404E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A73, -/* 20C0 */ 0x4441, 0xFFFD, 0x4E6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A70, -/* 20C8 */ 0x6A74, 0xFFFD, 0xFFFD, 0x497C, 0xFFFD, 0xFFFD, 0x4723, 0xFFFD, -/* 20D0 */ 0xFFFD, 0xFFFD, 0x4C58, 0x4E7E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A75, -/* 20D8 */ 0x6A76, 0x4F2C, 0x4067, 0xFFFD, 0xFFFD, 0x6A77, 0xFFFD, 0xFFFD, -/* 20E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x363F, 0x6A78, 0xFFFD, 0x6A79, 0xFFFD, -/* 20E8 */ 0x6A7A, 0xFFFD, 0xFFFD, 0x6A7B, 0x482E, 0x616B, 0xFFFD, 0x3738, -/* 20F0 */ 0x616C, 0xFFFD, 0xFFFD, 0xFFFD, 0x616D, 0xFFFD, 0x5734, 0x616E, -/* 20F8 */ 0x616F, 0x534C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2100 */ 0xFFFD, 0x6171, 0x3F71, 0x6170, 0x3552, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2108 */ 0x3137, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6173, 0x6172, 0xFFFD, -/* 2110 */ 0x3A7C, 0xFFFD, 0x6174, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3937, -/* 2118 */ 0xFFFD, 0x3E51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x447C, 0xFFFD, -/* 2120 */ 0x3A5D, 0x3D46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2128 */ 0x6175, 0x6177, 0xFFFD, 0xFFFD, 0x3640, 0x4F41, 0x4A28, 0x6176, -/* 2130 */ 0x5578, 0x537C, 0x6178, 0x617C, 0x6179, 0xFFFD, 0xFFFD, 0x617A, -/* 2138 */ 0x406A, 0xFFFD, 0x617E, 0x6221, 0x4047, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2140 */ 0xFFFD, 0x617B, 0xFFFD, 0x617D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2148 */ 0xFFFD, 0xFFFD, 0x6225, 0xFFFD, 0xFFFD, 0xFFFD, 0x4154, 0xFFFD, -/* 2150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6223, 0xFFFD, 0x6228, 0x327E, 0x6222, -/* 2158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x434D, 0x3242, 0x6227, 0x6226, 0xFFFD, -/* 2160 */ 0xFFFD, 0x6224, 0x6229, 0xFFFD, 0xFFFD, 0x622B, 0xFFFD, 0xFFFD, -/* 2168 */ 0xFFFD, 0x5049, 0x566D, 0x4328, 0x622C, 0xFFFD, 0x4F57, 0xFFFD, -/* 2170 */ 0xFFFD, 0x622E, 0xFFFD, 0xFFFD, 0x3A6F, 0xFFFD, 0xFFFD, 0x6960, -/* 2178 */ 0x622D, 0x622A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B2B, 0x5433, -/* 2180 */ 0x6230, 0xFFFD, 0xFFFD, 0x622F, 0xFFFD, 0x6961, 0xFFFD, 0xFFFD, -/* 2188 */ 0xFFFD, 0xFFFD, 0x6231, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6232, 0x6233, 0x4C21, 0xFFFD, 0x6234, -/* 2198 */ 0x6235, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x507E, 0xFFFD, -/* 21A0 */ 0xFFFD, 0x424A, 0xFFFD, 0x5371, 0xFFFD, 0x4D75, 0xFFFD, 0xFFFD, -/* 21A8 */ 0x6760, 0xFFFD, 0xFFFD, 0x6761, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21B0 */ 0x3E41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x426A, 0xFFFD, 0xFFFD, -/* 21B8 */ 0xFFFD, 0x6764, 0xFFFD, 0xFFFD, 0x6763, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D66, 0xFFFD, 0x4335, 0xFFFD, 0xFFFD, -/* 21C8 */ 0x6762, 0x3B37, 0x4F56, 0xFFFD, 0x4161, 0x6769, 0xFFFD, 0xFFFD, -/* 21D0 */ 0xFFFD, 0x6768, 0xFFFD, 0xFFFD, 0x6774, 0x3223, 0xFFFD, 0xFFFD, -/* 21D8 */ 0xFFFD, 0xFFFD, 0x676A, 0xFFFD, 0x6766, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21E0 */ 0xFFFD, 0xFFFD, 0x676C, 0x676B, 0x493A, 0xFFFD, 0xFFFD, 0x5564, -/* 21E8 */ 0xFFFD, 0x6765, 0x3729, 0x6767, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x676E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F8 */ 0x6773, 0xFFFD, 0x5669, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x676D, -/* 2200 */ 0xFFFD, 0x6772, 0xFFFD, 0x6771, 0xFFFD, 0xFFFD, 0xFFFD, 0x3060, -/* 2208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6775, 0x4772, 0xFFFD, 0x4045, -/* 2210 */ 0x406D, 0xFFFD, 0xFFFD, 0x4170, 0x6770, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2218 */ 0xFFFD, 0x6776, 0x4B76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6822, 0x6821, 0xFFFD, 0xFFFD, -/* 2228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5741, 0xFFFD, 0xFFFD, 0x677A, -/* 2230 */ 0x6779, 0xFFFD, 0x677B, 0xFFFD, 0x6777, 0xFFFD, 0x677E, 0xFFFD, -/* 2238 */ 0x677D, 0xFFFD, 0x677C, 0xFFFD, 0xFFFD, 0x4155, 0x4759, 0x457D, -/* 2240 */ 0x4543, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x476D, 0xFFFD, -/* 2248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6823, 0x6826, 0xFFFD, 0x6825, 0xFFFD, -/* 2250 */ 0x6827, 0x3A77, 0x6778, 0x6824, 0xFFFD, 0x4870, 0x492A, 0x6829, -/* 2258 */ 0xFFFD, 0xFFFD, 0x3965, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2260 */ 0x517E, 0x6828, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2268 */ 0x682A, 0xFFFD, 0x682D, 0x682E, 0xFFFD, 0x4127, 0xFFFD, 0xFFFD, -/* 2270 */ 0xFFFD, 0x682F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6830, 0xFFFD, 0xFFFD, -/* 2278 */ 0x682C, 0xFFFD, 0x6834, 0x682B, 0xFFFD, 0x6831, 0xFFFD, 0xFFFD, -/* 2280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6835, 0x6832, -/* 2288 */ 0x6833, 0x6836, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x394F, 0xFFFD, 0x702C, 0xFFFD, 0x702D, -/* 2298 */ 0xFFFD, 0x4630, 0x306A, 0x483F, 0xFFFD, 0x4D5F, 0xFFFD, 0xFFFD, -/* 22A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E4D, 0x6A31, 0xFFFD, -/* 22A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A32, 0xFFFD, 0x463F, 0x3449, 0xFFFD, -/* 22B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A33, 0xFFFD, -/* 22B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5567, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D79, 0xFFFD, 0x6A34, 0xFFFD, -/* 22C8 */ 0x6A35, 0xFFFD, 0x6A36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x384A, -/* 22D0 */ 0x5F30, 0x4975, 0xFFFD, 0x4C70, 0xFFFD, 0xFFFD, 0x497A, 0xFFFD, -/* 22D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x497B, 0xFFFD, 0xFFFD, 0x5343, -/* 22E0 */ 0x4B26, 0xFFFD, 0x3826, 0x702E, 0x3142, 0xFFFD, 0x6538, 0x4C6F, -/* 22E8 */ 0x5349, 0x3C57, 0x496A, 0xFFFD, 0x3567, 0xFFFD, 0x4450, 0x3569, -/* 22F0 */ 0xFFFD, 0x6E2E, 0x3B2D, 0xFFFD, 0xFFFD, 0x675E, 0xFFFD, 0x6E2F, -/* 22F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3329, 0xFFFD, 0xFFFD, 0x6E32, -/* 2300 */ 0xFFFD, 0xFFFD, 0x6E31, 0x3D67, 0xFFFD, 0x6E30, 0x4E37, 0xFFFD, -/* 2308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x454F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2310 */ 0x4174, 0x5B4E, 0x6E33, 0x5073, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4254, 0x4668, 0xFFFD, 0xFFFD, -/* 2320 */ 0xFFFD, 0x372C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2328 */ 0xFFFD, 0x6E34, 0xFFFD, 0x336B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B7B, -/* 2330 */ 0x6E35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x675C, 0xFFFD, -/* 2338 */ 0xFFFD, 0xFFFD, 0x6E36, 0xFFFD, 0xFFFD, 0x3D2E, 0xFFFD, 0xFFFD, -/* 2340 */ 0xFFFD, 0xFFFD, 0x7162, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A68, 0xFFFD, -/* 2348 */ 0x5249, 0x705A, 0xFFFD, 0x705B, 0xFFFD, 0x705C, 0x4146, 0xFFFD, -/* 2350 */ 0x386D, 0x3E4E, 0xFFFD, 0xFFFD, 0x705E, 0xFFFD, 0x4531, 0x705D, -/* 2358 */ 0x5171, 0xFFFD, 0x7060, 0x304C, 0x3D6A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2360 */ 0xFFFD, 0xFFFD, 0x525F, 0x705F, 0xFFFD, 0x342F, 0x3768, 0x7066, -/* 2368 */ 0x7065, 0x4623, 0x7061, 0x7062, 0x3443, 0xFFFD, 0xFFFD, 0x7063, -/* 2370 */ 0x556E, 0xFFFD, 0xFFFD, 0x4C5B, 0x3E52, 0x3C32, 0xFFFD, 0xFFFD, -/* 2378 */ 0xFFFD, 0x7068, 0x7067, 0x7064, 0x3221, 0xFFFD, 0x5622, 0x5338, -/* 2380 */ 0x3E37, 0x482C, 0xFFFD, 0xFFFD, 0x706A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2388 */ 0xFFFD, 0x5177, 0xFFFD, 0x564C, 0x3A5B, 0x7069, 0xFFFD, 0x363B, -/* 2390 */ 0xFFFD, 0xFFFD, 0x4D34, 0xFFFD, 0xFFFD, 0x4626, 0xFFFD, 0xFFFD, -/* 2398 */ 0xFFFD, 0x4121, 0x706B, 0x706E, 0xFFFD, 0x706D, 0x7070, 0x706C, -/* 23A0 */ 0xFFFD, 0x3B3E, 0x706F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C35, -/* 23A8 */ 0x7072, 0xFFFD, 0xFFFD, 0x3355, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23B0 */ 0x3154, 0xFFFD, 0xFFFD, 0x7073, 0xFFFD, 0xFFFD, 0x7074, 0x7076, -/* 23B8 */ 0x3461, 0xFFFD, 0x7071, 0xFFFD, 0x7077, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23C0 */ 0xFFFD, 0x707A, 0xFFFD, 0x7078, 0xFFFD, 0xFFFD, 0xFFFD, 0x7075, -/* 23C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x707D, 0xFFFD, 0x7079, 0x707C, -/* 23D0 */ 0x707E, 0xFFFD, 0x7121, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E41, 0x7124, -/* 23D8 */ 0xFFFD, 0x7123, 0xFFFD, 0x4176, 0x707B, 0x4A5D, 0xFFFD, 0xFFFD, -/* 23E0 */ 0x3471, 0x3171, 0x4C31, 0xFFFD, 0x7126, 0xFFFD, 0xFFFD, 0x7127, -/* 23E8 */ 0xFFFD, 0xFFFD, 0x712C, 0x554E, 0x7129, 0xFFFD, 0xFFFD, 0x4833, -/* 23F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7122, 0xFFFD, 0x712B, 0x7128, 0x7125, -/* 23F8 */ 0xFFFD, 0xFFFD, 0x712A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3029, 0x712D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x712F, 0xFFFD, 0x7131, 0xFFFD, 0xFFFD, -/* 2410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7130, 0xFFFD, 0x712E, 0xFFFD, 0xFFFD, -/* 2418 */ 0xFFFD, 0xFFFD, 0x5122, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2420 */ 0xFFFD, 0xFFFD, 0x7132, 0xFFFD, 0xFFFD, 0xFFFD, 0x7133, 0xFFFD, -/* 2428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x396F, -/* 2430 */ 0xFFFD, 0xFFFD, 0x3547, 0xFFFD, 0x3057, 0x3059, 0xFFFD, 0xFFFD, -/* 2438 */ 0xFFFD, 0x546D, 0xFFFD, 0x3544, 0xFFFD, 0x3D54, 0x3B4A, 0x7027, -/* 2440 */ 0xFFFD, 0xFFFD, 0x385E, 0xFFFD, 0xFFFD, 0x7028, 0xFFFD, 0xFFFD, -/* 2448 */ 0x3028, 0xFFFD, 0x7029, 0xFFFD, 0xFFFD, 0x4D6E, 0xFFFD, 0xFFFD, -/* 2450 */ 0x702A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x702B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4624, 0xFFFD, 0xFFFD, -/* 2468 */ 0x5665, 0x7164, 0xFFFD, 0x7165, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4373, 0xFFFD, -/* 2478 */ 0xFFFD, 0x535B, 0xFFFD, 0xFFFD, 0x5651, 0x4568, 0xFFFD, 0x532F, -/* 2480 */ 0xFFFD, 0x5266, 0xFFFD, 0xFFFD, 0x6E41, 0x303B, 0x5535, 0x514E, -/* 2488 */ 0x3C60, 0x3A50, 0xFFFD, 0x3F78, 0xFFFD, 0x3847, 0x3541, 0x454C, -/* 2490 */ 0xFFFD, 0xFFFD, 0x4A22, 0xFFFD, 0xFFFD, 0xFFFD, 0x434B, 0xFFFD, -/* 2498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E42, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x443F, 0x3622, 0xFFFD, -/* 24A8 */ 0x6D6C, 0x4324, 0xFFFD, 0x5631, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F60, -/* 24B0 */ 0x6D6F, 0xFFFD, 0xFFFD, 0x454E, 0xFFFD, 0x365C, 0xFFFD, 0xFFFD, -/* 24B8 */ 0x4A21, 0xFFFD, 0xFFFD, 0x6D6D, 0xFFFD, 0xFFFD, 0x6D70, 0x6D71, -/* 24C0 */ 0x433C, 0xFFFD, 0x3F34, 0xFFFD, 0x6D6E, 0x6D74, 0x6D72, 0xFFFD, -/* 24C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5566, 0x435F, 0xFFFD, 0x6D73, 0xFFFD, -/* 24D0 */ 0xFFFD, 0xFFFD, 0x6D76, 0xFFFD, 0x5523, 0x5123, 0xFFFD, 0xFFFD, -/* 24D8 */ 0xFFFD, 0x6D75, 0xFFFD, 0x4350, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24E0 */ 0xFFFD, 0x6D77, 0x3F74, 0x3E6C, 0x6D78, 0xFFFD, 0x4C77, 0xFFFD, -/* 24E8 */ 0x515B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5745, 0x5576, 0xFFFD, 0x6D7C, -/* 24F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D79, 0x6D7A, 0xFFFD, 0xFFFD, -/* 2500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D7D, 0x3E26, -/* 2508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B2F, 0x6E21, 0x363D, -/* 2510 */ 0xFFFD, 0x6E22, 0x4440, 0xFFFD, 0x6D7E, 0xFFFD, 0xFFFD, 0x3D5E, -/* 2518 */ 0x3247, 0x3643, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E25, 0x583A, 0x6E23, -/* 2520 */ 0x6E26, 0xFFFD, 0xFFFD, 0xFFFD, 0x4369, 0x3372, 0xFFFD, 0xFFFD, -/* 2528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E27, 0x6E24, 0x4F39, 0xFFFD, -/* 2530 */ 0xFFFD, 0x6E28, 0x4277, 0x6E29, 0x6E2A, 0xFFFD, 0x5E2B, 0xFFFD, -/* 2538 */ 0xFFFD, 0x4633, 0xFFFD, 0x4746, 0xFFFD, 0x5675, 0x3549, 0xFFFD, -/* 2540 */ 0x4B32, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E2B, 0xFFFD, 0xFFFD, 0x4D2B, -/* 2548 */ 0xFFFD, 0x6E2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5530, -/* 2550 */ 0xFFFD, 0x6E2D, 0xFFFD, 0x7644, 0x5B47, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3423, 0xFFFD, -/* 2560 */ 0xFFFD, 0xFFFD, 0x432C, 0x7166, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2568 */ 0xFFFD, 0x4A38, 0x5253, 0xFFFD, 0x562A, 0xFFFD, 0x6F72, 0xFFFD, -/* 2570 */ 0x3E58, 0xFFFD, 0x3D43, 0x6F73, 0x364C, 0x302B, 0xFFFD, 0xFFFD, -/* 2578 */ 0xFFFD, 0xFFFD, 0x4A2F, 0xFFFD, 0xFFFD, 0x6D36, 0xFFFD, 0x6D37, -/* 2580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E79, 0x372F, 0x3F73, 0x6D38, -/* 2588 */ 0x426B, 0x4930, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2590 */ 0x6D39, 0xFFFD, 0xFFFD, 0x4676, 0x3F33, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2598 */ 0x6D3C, 0x4578, 0xFFFD, 0x5150, 0xFFFD, 0x5729, 0x6D3A, 0x6D3B, -/* 25A0 */ 0xFFFD, 0x5162, 0xFFFD, 0x6D3F, 0x6D40, 0xFFFD, 0x6D44, 0xFFFD, -/* 25A8 */ 0xFFFD, 0xFFFD, 0x6D48, 0xFFFD, 0x6D46, 0x6D4E, 0x5568, 0xFFFD, -/* 25B0 */ 0x6D49, 0xFFFD, 0xFFFD, 0x6D47, 0x6D3E, 0xFFFD, 0xFFFD, 0x4569, -/* 25B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4646, 0xFFFD, 0xFFFD, 0x4969, 0x5452, -/* 25C0 */ 0x6D41, 0x6D42, 0x6D43, 0x6D45, 0xFFFD, 0x4079, 0xFFFD, 0x3421, -/* 25C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3968, 0xFFFD, 0x6D50, 0xFFFD, -/* 25D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D51, 0xFFFD, 0x6D4A, 0xFFFD, 0x6D4F, -/* 25D8 */ 0xFFFD, 0x4E78, 0xFFFD, 0xFFFD, 0x4B36, 0x6D4C, 0x6D4D, 0xFFFD, -/* 25E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F75, 0x6D52, 0x4172, 0x5332, -/* 25E8 */ 0x6D4B, 0x4837, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25F0 */ 0xFFFD, 0xFFFD, 0x3C6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4570, -/* 25F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2600 */ 0xFFFD, 0xFFFD, 0x6D56, 0xFFFD, 0x356F, 0xFFFD, 0xFFFD, 0x4235, -/* 2608 */ 0x302D, 0x4B69, 0xFFFD, 0xFFFD, 0x312E, 0xFFFD, 0x6D54, 0xFFFD, -/* 2610 */ 0xFFFD, 0xFFFD, 0x4D6B, 0x3562, 0xFFFD, 0x6D55, 0x6D53, 0x6D57, -/* 2618 */ 0xFFFD, 0xFFFD, 0x357A, 0xFFFD, 0x6D58, 0xFFFD, 0x6D59, 0xFFFD, -/* 2620 */ 0x6D5C, 0xFFFD, 0x314C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4576, 0x3C6E, 0x6D5A, 0x4C3C, 0x326A, -/* 2630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2638 */ 0xFFFD, 0x446B, 0xFFFD, 0xFFFD, 0x3445, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2640 */ 0x3075, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5F, 0x405A, 0x3468, 0xFFFD, -/* 2648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x454D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5D, -/* 2650 */ 0x3F44, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5E, 0x4425, 0xFFFD, 0xFFFD, -/* 2658 */ 0xFFFD, 0x6D60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D61, -/* 2660 */ 0xFFFD, 0x6D63, 0xFFFD, 0xFFFD, 0x4157, 0xFFFD, 0xFFFD, 0x3B47, -/* 2668 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D38, 0xFFFD, -/* 2670 */ 0xFFFD, 0xFFFD, 0x6D62, 0x6D64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D66, 0xFFFD, -/* 2680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D65, 0x6D67, 0xFFFD, 0xFFFD, -/* 2688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A3E, 0x6C6A, 0x4071, 0xFFFD, 0x4967, -/* 2690 */ 0xFFFD, 0x6C6B, 0x466E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C6C, -/* 2698 */ 0xFFFD, 0x466D, 0x6C6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C70, 0xFFFD, 0xFFFD, 0x5766, -/* 26A8 */ 0x6C73, 0xFFFD, 0xFFFD, 0x6C71, 0x6C6E, 0x6C6F, 0x5723, 0x4971, -/* 26B0 */ 0x4B6E, 0x6C74, 0xFFFD, 0x6C72, 0xFFFD, 0xFFFD, 0x4F69, 0xFFFD, -/* 26B8 */ 0x6C76, 0x4631, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C40, 0xFFFD, -/* 26C0 */ 0x6C75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26C8 */ 0x353B, 0x3B76, 0xFFFD, 0x6C77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26D0 */ 0xFFFD, 0x5977, 0x3D7B, 0xFFFD, 0xFFFD, 0x423B, 0x6C78, 0xFFFD, -/* 26D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26E0 */ 0x3823, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C7A, 0x6C7C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26F0 */ 0xFFFD, 0xFFFD, 0x536D, 0x582E, 0x406B, 0xFFFD, 0x475D, 0x3A4C, -/* 26F8 */ 0xFFFD, 0x5063, 0x4B3D, 0xFFFD, 0x4D3A, 0xFFFD, 0xFFFD, 0x3851, -/* 2700 */ 0xFFFD, 0xFFFD, 0x317C, 0xFFFD, 0x476F, 0xFFFD, 0x5656, 0xFFFD, -/* 2708 */ 0xFFFD, 0xFFFD, 0x3F46, 0x436B, 0xFFFD, 0xFFFD, 0x6F75, 0xFFFD, -/* 2710 */ 0xFFFD, 0x4358, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2718 */ 0x5762, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F77, 0x3353, 0xFFFD, 0x4758, -/* 2720 */ 0x516D, 0xFFFD, 0x5648, 0xFFFD, 0x6F78, 0xFFFD, 0x6F76, 0xFFFD, -/* 2728 */ 0x3B7D, 0x3346, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2730 */ 0xFFFD, 0x3D55, 0xFFFD, 0xFFFD, 0x5246, 0xFFFD, 0x3B60, 0xFFFD, -/* 2738 */ 0xFFFD, 0x4F21, 0xFFFD, 0x6F7C, 0x6F7B, 0xFFFD, 0xFFFD, 0x6F79, -/* 2740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x334C, 0xFFFD, 0x4954, 0x4B30, -/* 2748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F7E, 0xFFFD, 0xFFFD, -/* 2750 */ 0x305E, 0xFFFD, 0xFFFD, 0x5649, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F7D, -/* 2758 */ 0xFFFD, 0x336D, 0xFFFD, 0xFFFD, 0x7655, 0x4E48, 0xFFFD, 0xFFFD, -/* 2760 */ 0xFFFD, 0x7022, 0xFFFD, 0x7021, 0xFFFD, 0x353E, 0x3C5A, 0x3B7C, -/* 2768 */ 0xFFFD, 0x3865, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2770 */ 0x4442, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7023, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2780 */ 0xFFFD, 0x4B6B, 0x7026, 0xFFFD, 0xFFFD, 0xFFFD, 0x5128, 0xFFFD, -/* 2788 */ 0x3E3F, 0x476E, 0x7136, 0x7137, 0x3F55, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2790 */ 0xFFFD, 0x3429, 0x7138, 0x4D3B, 0xFFFD, 0x4754, 0x552D, 0xFFFD, -/* 2798 */ 0x7139, 0xFFFD, 0x713A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x474F, -/* 27A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5224, 0x564F, 0xFFFD, 0xFFFD, 0x713B, -/* 27A8 */ 0x3D51, 0x3430, 0x3E3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x345C, 0x4E51, -/* 27B0 */ 0xFFFD, 0x3F5F, 0x713D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F7A, -/* 27B8 */ 0x713C, 0xFFFD, 0x713F, 0xFFFD, 0xFFFD, 0xFFFD, 0x713E, 0x7140, -/* 27C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7141, 0x4122, 0xFFFD, -/* 27C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D0 */ 0xFFFD, 0x4A7A, 0xFFFD, 0xFFFD, 0x553E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D8 */ 0xFFFD, 0x3E3A, 0x3E39, 0x5542, 0xFFFD, 0xFFFD, 0x3F22, 0xFFFD, -/* 27E0 */ 0x4D2F, 0x7135, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27E8 */ 0x3D5F, 0xFFFD, 0x364B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5671, 0x7343, 0xFFFD, 0xFFFD, -/* 27F8 */ 0x7344, 0xFFFD, 0x384D, 0xFFFD, 0xFFFD, 0xFFFD, 0x7346, 0x7347, -/* 2800 */ 0xFFFD, 0x304A, 0xFFFD, 0x7345, 0xFFFD, 0x7349, 0x4B71, 0xFFFD, -/* 2808 */ 0xFFFD, 0xFFFD, 0x734B, 0xFFFD, 0x5026, 0xFFFD, 0xFFFD, 0x314A, -/* 2810 */ 0x7348, 0xFFFD, 0xFFFD, 0xFFFD, 0x734F, 0xFFFD, 0x3551, 0xFFFD, -/* 2818 */ 0xFFFD, 0x7357, 0xFFFD, 0x7352, 0xFFFD, 0xFFFD, 0xFFFD, 0x7354, -/* 2820 */ 0x7353, 0x377B, 0xFFFD, 0x313F, 0xFFFD, 0x734E, 0x734A, 0x355A, -/* 2828 */ 0xFFFD, 0x7350, 0xFFFD, 0xFFFD, 0x7351, 0xFFFD, 0x7355, 0xFFFD, -/* 2830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x734D, 0xFFFD, 0x3C63, 0xFFFD, 0x417D, -/* 2838 */ 0xFFFD, 0x7356, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2840 */ 0x735A, 0xFFFD, 0x734C, 0xFFFD, 0x3548, 0xFFFD, 0x3D6E, 0x735C, -/* 2848 */ 0xFFFD, 0xFFFD, 0x3724, 0x3F70, 0x567E, 0x4D32, 0xFFFD, 0x3470, -/* 2850 */ 0xFFFD, 0x325F, 0xFFFD, 0x7358, 0xFFFD, 0x7359, 0x4938, 0xFFFD, -/* 2858 */ 0x735D, 0xFFFD, 0xFFFD, 0x735E, 0xFFFD, 0x7361, 0x735F, 0xFFFD, -/* 2860 */ 0xFFFD, 0x7363, 0x7362, 0xFFFD, 0xFFFD, 0x735B, 0xFFFD, 0x3F6A, -/* 2868 */ 0xFFFD, 0x336F, 0xFFFD, 0x7360, 0xFFFD, 0xFFFD, 0x4729, 0xFFFD, -/* 2870 */ 0x3C72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x736B, 0xFFFD, 0xFFFD, -/* 2878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x393F, 0xFFFD, 0xFFFD, -/* 2880 */ 0x7364, 0xFFFD, 0xFFFD, 0xFFFD, 0x322D, 0x3B7E, 0xFFFD, 0x4B63, -/* 2888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x736D, 0x7369, 0xFFFD, 0xFFFD, -/* 2890 */ 0xFFFD, 0x395C, 0x736E, 0xFFFD, 0xFFFD, 0xFFFD, 0x7365, 0x7366, -/* 2898 */ 0x736A, 0x4261, 0x736C, 0x736F, 0x7368, 0x3C7D, 0xFFFD, 0xFFFD, -/* 28A0 */ 0xFFFD, 0x4F64, 0xFFFD, 0xFFFD, 0x7370, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28A8 */ 0x7367, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28B0 */ 0xFFFD, 0x7372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x572D, 0x462A, -/* 28B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7373, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28C0 */ 0xFFFD, 0x7371, 0xFFFD, 0x4228, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28C8 */ 0xFFFD, 0x385D, 0x7375, 0xFFFD, 0xFFFD, 0x7374, 0xFFFD, 0xFFFD, -/* 28D0 */ 0xFFFD, 0x345B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7376, 0x7377, 0xFFFD, -/* 28D8 */ 0xFFFD, 0xFFFD, 0x7378, 0xFFFD, 0xFFFD, 0xFFFD, 0x403A, 0xFFFD, -/* 28E0 */ 0xFFFD, 0x4069, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4571, -/* 28E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x737B, 0xFFFD, 0x737A, 0xFFFD, -/* 28F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3458, -/* 28F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x737E, 0x7379, 0xFFFD, 0xFFFD, 0x737C, -/* 2900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x737D, 0xFFFD, -/* 2908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7421, -/* 2910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7423, 0x3B49, -/* 2918 */ 0xFFFD, 0xFFFD, 0x7422, 0x7424, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2920 */ 0xFFFD, 0xFFFD, 0x323E, 0x7426, 0x7425, 0x4357, 0x5961, 0xFFFD, -/* 2928 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4060, 0x744C, 0x5751, -/* 2930 */ 0x375B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2938 */ 0x744E, 0x4123, 0xFFFD, 0xFFFD, 0x4649, 0xFFFD, 0x3456, 0x5533, -/* 2940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7450, 0x744F, 0x7451, 0x4B5A, 0xFFFD, -/* 2948 */ 0xFFFD, 0x7452, 0xFFFD, 0x5441, 0x5660, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2950 */ 0xFFFD, 0x3760, 0xFFFD, 0xFFFD, 0xFFFD, 0x4138, 0xFFFD, 0xFFFD, -/* 2958 */ 0x413B, 0x7453, 0x3E2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2960 */ 0x3462, 0xFFFD, 0xFFFD, 0x7454, 0x7455, 0x3E2B, 0xFFFD, 0xFFFD, -/* 2968 */ 0x7456, 0xFFFD, 0xFFFD, 0xFFFD, 0x745B, 0xFFFD, 0x7457, 0x745A, -/* 2970 */ 0xFFFD, 0x3A7D, 0xFFFD, 0x7458, 0x7459, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3862, 0x4C47, 0x745C, 0xFFFD, -/* 2980 */ 0x325A, 0xFFFD, 0xFFFD, 0x4353, 0xFFFD, 0xFFFD, 0x5463, 0x3F37, -/* 2988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x745D, -/* 2990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4534, 0xFFFD, -/* 2998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7469, -/* 29A0 */ 0xFFFD, 0xFFFD, 0x4F35, 0x4B58, 0xFFFD, 0x4B77, 0xFFFD, 0xFFFD, -/* 29A8 */ 0xFFFD, 0xFFFD, 0x3D74, 0xFFFD, 0xFFFD, 0xFFFD, 0x574F, 0xFFFD, -/* 29B0 */ 0xFFFD, 0xFFFD, 0x405B, 0x5075, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x746A, 0x746B, 0xFFFD, 0xFFFD, -/* 29C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x746C, 0x7763, 0xFFFD, -/* 29C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3731, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29D0 */ 0xFFFD, 0xFFFD, 0x746D, 0x746E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6679, -/* 29D8 */ 0x3E40, 0x667A, 0x3A6C, 0x667B, 0x4F4B, 0x667C, 0x543C, 0x3C36, -/* 29E0 */ 0x667D, 0x667E, 0x3C4D, 0x4852, 0x4E33, 0x6721, 0xFFFD, 0x343F, -/* 29E8 */ 0x6722, 0x4934, 0x3859, 0x4449, 0xFFFD, 0x575D, 0x425A, 0x3757, -/* 29F0 */ 0x563D, 0x4E46, 0x3744, 0xFFFD, 0xFFFD, 0x4526, 0x6723, 0x4F5F, -/* 29F8 */ 0x6724, 0x6725, 0x6726, 0x4137, 0x5769, 0x4970, 0x4F38, 0x562F, -/* 2A00 */ 0x5655, 0x6727, 0x306D, 0x6728, 0x6729, 0x495C, 0x526F, 0x3E2D, -/* 2A08 */ 0x672A, 0x3073, 0x485E, 0x3D61, 0x672B, 0x4846, 0xFFFD, 0x672C, -/* 2A10 */ 0x3B66, 0x3878, 0x5124, 0x672D, 0x4267, 0x3E78, 0x3D4A, 0x4D33, -/* 2A18 */ 0x672E, 0x672F, 0x3E6E, 0x5065, 0xFFFD, 0x4B67, 0x4C50, 0x3C4C, -/* 2A20 */ 0x6730, 0x3C28, 0x5077, 0x6731, 0xFFFD, 0x5078, 0x6732, 0x6733, -/* 2A28 */ 0x3442, 0x6734, 0x6735, 0x497E, 0x4E2C, 0x4360, 0x6737, 0x3141, -/* 2A30 */ 0x3371, 0xFFFD, 0x6738, 0x6739, 0x575B, 0x5540, 0x673A, 0x424C, -/* 2A38 */ 0x573A, 0x673B, 0x673C, 0x673D, 0x3C6A, 0x4365, 0x4042, 0x673E, -/* 2A40 */ 0x673F, 0x3C29, 0xFFFD, 0x6740, 0x6741, 0x6736, 0x3650, 0x6742, -/* 2A48 */ 0xFFFD, 0x6743, 0x6744, 0x3B3A, 0x355E, 0x4246, 0x3160, 0x6745, -/* 2A50 */ 0x5435, 0x6746, 0x383F, 0x6748, 0x6747, 0x376C, 0xFFFD, 0x6749, -/* 2A58 */ 0x3278, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A60 */ 0x5327, 0x4B75, 0x6751, 0x6752, 0x6753, 0x6754, 0x4949, 0x6755, -/* 2A68 */ 0x6756, 0x6757, 0x6758, 0x6759, 0x3D49, 0x675A, 0x733E, 0xFFFD, -/* 2A70 */ 0x3857, 0xFFFD, 0x4831, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A78 */ 0xFFFD, 0xFFFD, 0x733F, 0xFFFD, 0x7340, 0x7341, 0xFFFD, 0xFFFD, -/* 2A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A88 */ 0x395E, 0x4D78, 0xFFFD, 0xFFFD, 0x5868, 0x3A31, 0xFFFD, 0x425E, -/* 2A90 */ 0x6E37, 0xFFFD, 0x3723, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E39, -/* 2A98 */ 0xFFFD, 0x6E38, 0x3055, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AA0 */ 0x6E3B, 0x5556, 0x576F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5643, 0xFFFD, -/* 2AA8 */ 0xFFFD, 0x6E3D, 0x4A70, 0xFFFD, 0x6E3C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AB0 */ 0xFFFD, 0x6E3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E40, 0xFFFD, -/* 2AB8 */ 0xFFFD, 0x6E3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AC0 */ 0xFFFD, 0xFFFD, 0x5172, 0xFFFD, 0x473C, 0xFFFD, 0x4340, 0xFFFD, -/* 2AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3861, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AD0 */ 0xFFFD, 0xFFFD, 0x4167, 0xFFFD, 0xFFFD, 0x7446, 0x505F, 0x7447, -/* 2AD8 */ 0xFFFD, 0x4F5B, 0xFFFD, 0xFFFD, 0x483A, 0xFFFD, 0xFFFD, 0x7448, -/* 2AE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7449, -/* 2AE8 */ 0x744A, 0xFFFD, 0x744B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AF0 */ 0x597A, 0x387E, 0xFFFD, 0xFFFD, 0x6571, 0x5370, 0xFFFD, 0x7460, -/* 2AF8 */ 0xFFFD, 0x4E4C, 0xFFFD, 0xFFFD, 0xFFFD, 0x3361, 0xFFFD, 0xFFFD, -/* 2B00 */ 0xFFFD, 0xFFFD, 0x7134, 0xFFFD, 0x526E, 0xFFFD, 0x7461, 0xFFFD, -/* 2B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F68, 0x7462, 0xFFFD, 0xFFFD, -/* 2B10 */ 0x474C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3554, -/* 2B18 */ 0x3464, 0x7464, 0xFFFD, 0xFFFD, 0xFFFD, 0x7463, 0x7465, 0xFFFD, -/* 2B20 */ 0xFFFD, 0x7466, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7467, 0xFFFD, -/* 2B28 */ 0x3A32, 0x303F, 0xFFFD, 0x7468, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x372D, 0x526D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B38 */ 0x522B, 0x404F, 0xFFFD, 0x3F3C, 0x6B23, 0x555F, 0x6A48, 0xFFFD, -/* 2B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7173, 0x3678, 0x4B23, 0xFFFD, 0xFFFD, -/* 2B48 */ 0x444D, 0xFFFD, 0x7167, 0xFFFD, 0x7168, 0x387B, 0x7169, 0x3A44, -/* 2B50 */ 0x5445, 0x3052, 0xFFFD, 0xFFFD, 0x716A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B58 */ 0x716B, 0xFFFD, 0x716C, 0xFFFD, 0xFFFD, 0x716D, 0x716E, 0x716F, -/* 2B60 */ 0x7171, 0x7170, 0x4555, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B68 */ 0xFFFD, 0x7172, 0xFFFD, 0x367A, 0xFFFD, 0x7174, 0x522E, 0x5E47, -/* 2B70 */ 0x4B4A, 0xFFFD, 0xFFFD, 0x335C, 0xFFFD, 0x3522, 0xFFFD, 0x3922, -/* 2B78 */ 0xFFFD, 0xFFFD, 0x4474, 0x7175, 0xFFFD, 0xFFFD, 0x7176, 0xFFFD, -/* 2B80 */ 0xFFFD, 0xFFFD, 0x4144, 0x417B, 0x5630, 0x7177, 0xFFFD, 0xFFFD, -/* 2B88 */ 0xFFFD, 0xFFFD, 0x7178, 0xFFFD, 0x412A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B90 */ 0x4638, 0xFFFD, 0x3E5B, 0x7179, 0x344F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x717A, 0x6D32, 0x6D31, 0xFFFD, 0xFFFD, -/* 2BA0 */ 0x4B60, 0x525E, 0xFFFD, 0x4B41, 0x5558, 0xFFFD, 0x4862, 0xFFFD, -/* 2BA8 */ 0x405F, 0x3C21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BB0 */ 0x6B41, 0xFFFD, 0xFFFD, 0x5024, 0xFFFD, 0x5662, 0xFFFD, 0x3647, -/* 2BB8 */ 0x3858, 0x6B40, 0x384E, 0xFFFD, 0x6B3F, 0x3326, 0x3949, 0x562B, -/* 2BC0 */ 0xFFFD, 0x3774, 0x374A, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C67, 0x373E, -/* 2BC8 */ 0x6B46, 0xFFFD, 0x6B47, 0x3039, 0x3F4F, 0xFFFD, 0x6B45, 0x537D, -/* 2BD0 */ 0xFFFD, 0x6B48, 0xFFFD, 0xFFFD, 0x6B49, 0xFFFD, 0xFFFD, 0x374E, -/* 2BD8 */ 0xFFFD, 0x6B42, 0x6B44, 0x4976, 0x5657, 0x554D, 0x5032, 0x6B4F, -/* 2BE0 */ 0x4E38, 0x6B50, 0xFFFD, 0x3528, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BE8 */ 0xFFFD, 0x3133, 0x6B52, 0x4C25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4556, 0x6B53, 0xFFFD, 0x6B51, 0x455F, -/* 2BF8 */ 0x6B4E, 0x4A24, 0x6B55, 0x307B, 0xFFFD, 0xFFFD, 0x3A7A, 0xFFFD, -/* 2C00 */ 0xFFFD, 0x5837, 0x7163, 0xFFFD, 0x6B4A, 0x6B4B, 0x6B4C, 0x6B4D, -/* 2C08 */ 0x6B56, 0x6640, 0x6B59, 0xFFFD, 0x3F68, 0x5248, 0x6B57, 0x6B5C, -/* 2C10 */ 0x386C, 0x6B58, 0xFFFD, 0x3D3A, 0xFFFD, 0x5058, 0xFFFD, 0x3037, -/* 2C18 */ 0xFFFD, 0x6B5D, 0x445C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x562C, -/* 2C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3460, 0xFFFD, 0xFFFD, 0x4276, 0x3C39, -/* 2C28 */ 0xFFFD, 0xFFFD, 0x6B5A, 0x6B5B, 0x5460, 0x466A, 0x4454, 0x6B5F, -/* 2C30 */ 0x4527, 0x5975, 0xFFFD, 0x3231, 0xFFFD, 0x6B64, 0xFFFD, 0x3D45, -/* 2C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B62, 0x6B63, 0xFFFD, 0xFFFD, 0x382C, -/* 2C40 */ 0xFFFD, 0x4D51, 0x6B65, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B61, 0xFFFD, -/* 2C48 */ 0x4133, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4622, 0xFFFD, -/* 2C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C73, 0xFFFD, -/* 2C58 */ 0x6B66, 0xFFFD, 0x4030, 0x5238, 0x6B67, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C60 */ 0x382F, 0x382D, 0xFFFD, 0x6B68, 0x473B, 0x4D73, 0xFFFD, 0xFFFD, -/* 2C68 */ 0xFFFD, 0x6B6A, 0x6B6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C70 */ 0x6B6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5048, 0xFFFD, 0x6B72, -/* 2C78 */ 0xFFFD, 0x6B6E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B71, 0x4879, 0xFFFD, -/* 2C80 */ 0x517C, 0x6B6C, 0xFFFD, 0xFFFD, 0x6B69, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C88 */ 0xFFFD, 0x3839, 0x4F59, 0x4465, 0x6B6F, 0x6B70, 0x4C5A, 0x4D48, -/* 2C90 */ 0x3072, 0xFFFD, 0x6B76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C98 */ 0x6B75, 0xFFFD, 0x3232, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3860, -/* 2CA0 */ 0xFFFD, 0x6B77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CA8 */ 0x316C, 0xFFFD, 0xFFFD, 0x4C45, 0x4424, 0x4F25, 0xFFFD, 0xFFFD, -/* 2CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B79, 0xFFFD, 0xFFFD, 0x6C22, 0xFFFD, -/* 2CB8 */ 0x4572, 0xFFFD, 0x6B7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4945, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CC8 */ 0xFFFD, 0xFFFD, 0x625F, 0x6B7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CD0 */ 0x4D4E, 0x6C21, 0x315B, 0x5337, 0xFFFD, 0xFFFD, 0x525C, 0xFFFD, -/* 2CD8 */ 0xFFFD, 0xFFFD, 0x6B7D, 0xFFFD, 0x6B7B, 0x333C, 0xFFFD, 0xFFFD, -/* 2CE0 */ 0xFFFD, 0x6A30, 0xFFFD, 0xFFFD, 0x5754, 0xFFFD, 0x742B, 0x3374, -/* 2CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5641, 0x5642, 0xFFFD, -/* 2CF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5569, 0x3E4A, 0xFFFD, -/* 2CF8 */ 0x7427, 0xFFFD, 0x5228, 0x7428, 0x7429, 0xFFFD, 0x742A, 0x3E4B, -/* 2D00 */ 0x535F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4960, 0x4961, -/* 2D08 */ 0xFFFD, 0xFFFD, 0x7342, 0xFFFD, 0x4A66, 0xFFFD, 0x4C72, 0xFFFD, -/* 2D10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6236, 0x4B34, 0xFFFD, -/* 2D18 */ 0x4E68, 0x565B, 0xFFFD, 0x742D, 0x742E, 0x742F, 0xFFFD, 0xFFFD, -/* 2D20 */ 0xFFFD, 0xFFFD, 0x7432, 0xFFFD, 0x3A3D, 0x7433, 0x3063, 0x7430, -/* 2D28 */ 0xFFFD, 0x7431, 0x3D22, 0x3255, 0xFFFD, 0x7436, 0x7437, 0x3666, -/* 2D30 */ 0x3230, 0x4F4F, 0x7434, 0x342C, 0xFFFD, 0x7435, 0xFFFD, 0xFFFD, -/* 2D38 */ 0x7438, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7439, 0xFFFD, -/* 2D40 */ 0xFFFD, 0x4D27, 0xFFFD, 0x743A, 0xFFFD, 0x743B, 0xFFFD, 0xFFFD, -/* 2D48 */ 0xFFFD, 0x743C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D50 */ 0xFFFD, 0xFFFD, 0x4B52, 0xFFFD, 0x743D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D58 */ 0xFFFD, 0x743E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D60 */ 0xFFFD, 0xFFFD, 0x743F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D68 */ 0x745E, 0x413C, 0x3C68, 0xFFFD, 0x492B, 0x515E, 0x6575, 0xFFFD, -/* 2D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C33, 0x5255, 0xFFFD, 0xFFFD, 0x5C34, -/* 2D78 */ 0x302C, 0x5C35, 0xFFFD, 0xFFFD, 0x3D5A, 0xFFFD, 0x5C39, 0xFFFD, -/* 2D80 */ 0xFFFD, 0xFFFD, 0x5842, 0xFFFD, 0x5C37, 0x5373, 0xFFFD, 0x4956, -/* 2D88 */ 0x5C3A, 0x5C36, 0xFFFD, 0x5C3B, 0x4322, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D90 */ 0xFFFD, 0x5C3C, 0x5C45, 0x5C3D, 0xFFFD, 0xFFFD, 0x4E5F, 0x5625, -/* 2D98 */ 0xFFFD, 0x5C4F, 0xFFFD, 0x5C4D, 0xFFFD, 0xFFFD, 0x5C52, 0x3D66, -/* 2DA0 */ 0x422B, 0xFFFD, 0x5C38, 0x5C4B, 0x5C4E, 0x5C3E, 0x3752, 0x3045, -/* 2DA8 */ 0x5C47, 0x503E, 0x5C41, 0x3B28, 0xFFFD, 0x373C, 0x5C4C, 0xFFFD, -/* 2DB0 */ 0xFFFD, 0x5C46, 0x5C3F, 0x475B, 0xFFFD, 0xFFFD, 0xFFFD, 0x513F, -/* 2DB8 */ 0x5C40, 0xFFFD, 0xFFFD, 0x5C4A, 0xFFFD, 0xFFFD, 0x5C50, 0xFFFD, -/* 2DC0 */ 0xFFFD, 0x4E2D, 0x5C42, 0xFFFD, 0x5C43, 0x5C48, 0x5C49, 0x3254, -/* 2DC8 */ 0x5C51, 0x4B55, 0xFFFD, 0x5437, 0x5C5B, 0x5C5F, 0x4C26, 0x5C66, -/* 2DD0 */ 0xFFFD, 0x4367, 0x5C5C, 0xFFFD, 0xFFFD, 0x3F41, 0x5C59, 0xFFFD, -/* 2DD8 */ 0x307A, 0x3936, 0x5C65, 0x5C53, 0xFFFD, 0x5C44, 0x5C56, 0x4874, -/* 2DE0 */ 0x3F60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x493B, 0xFFFD, 0xFFFD, -/* 2DE8 */ 0xFFFD, 0x313D, 0xFFFD, 0x5322, 0xFFFD, 0xFFFD, 0x5C5A, 0xFFFD, -/* 2DF0 */ 0xFFFD, 0x5C55, 0xFFFD, 0x463B, 0xFFFD, 0x5C5E, 0xFFFD, 0xFFFD, -/* 2DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5742, 0x432F, 0x3736, 0x4751, 0x4329, -/* 2E00 */ 0x5C62, 0x5C58, 0x5C6B, 0x5C54, 0xFFFD, 0xFFFD, 0x5C5D, 0xFFFD, -/* 2E08 */ 0x3E25, 0x5C57, 0xFFFD, 0x5C60, 0xFFFD, 0xFFFD, 0x5C63, 0x5C64, -/* 2E10 */ 0xFFFD, 0x5C78, 0xFFFD, 0xFFFD, 0x5C61, 0x5D22, 0x5C67, 0xFFFD, -/* 2E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E20 */ 0xFFFD, 0x3C6B, 0x3444, 0xFFFD, 0xFFFD, 0x4323, 0x3267, 0x5C7A, -/* 2E28 */ 0xFFFD, 0x5C72, 0xFFFD, 0x5C6F, 0xFFFD, 0x5C7C, 0x5C6E, 0x5270, -/* 2E30 */ 0x3268, 0xFFFD, 0x4857, 0x4863, 0x5C7B, 0xFFFD, 0x5C6D, 0xFFFD, -/* 2E38 */ 0xFFFD, 0xFFFD, 0x5C77, 0xFFFD, 0xFFFD, 0x5C75, 0xFFFD, 0xFFFD, -/* 2E40 */ 0x3E23, 0x5C74, 0xFFFD, 0x325D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E48 */ 0xFFFD, 0x5C73, 0x3C76, 0x5C68, 0x3B44, 0xFFFD, 0x4073, 0xFFFD, -/* 2E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C54, 0x5C69, 0x5C6A, 0xFFFD, -/* 2E58 */ 0x5C71, 0x5C76, 0x5C79, 0x3534, 0xFFFD, 0x4859, 0x3B67, 0x5C7E, -/* 2E60 */ 0x5C7D, 0x532B, 0x5D21, 0x5D23, 0x5D25, 0x5271, 0x5D24, 0x5D26, -/* 2E68 */ 0x5D27, 0x5229, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E70 */ 0xFFFD, 0x3A49, 0x5D29, 0xFFFD, 0xFFFD, 0x5D36, 0x5D31, 0x5D34, -/* 2E78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D30, -/* 2E80 */ 0x464E, 0xFFFD, 0xFFFD, 0x4072, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E88 */ 0x492F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C6C, 0x5D2E, 0xFFFD, 0xFFFD, -/* 2E90 */ 0xFFFD, 0xFFFD, 0x5D37, 0xFFFD, 0xFFFD, 0x5C70, 0x5D2F, 0xFFFD, -/* 2E98 */ 0x5D38, 0xFFFD, 0x5D2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EA0 */ 0xFFFD, 0xFFFD, 0x5D39, 0x5D33, 0x5D2D, 0x442A, 0xFFFD, 0xFFFD, -/* 2EA8 */ 0xFFFD, 0xFFFD, 0x5D28, 0x4033, 0x412B, 0x5D2A, 0x5D2B, 0xFFFD, -/* 2EB0 */ 0x5D32, 0x3B71, 0x5D35, 0x5328, 0x5D3A, 0xFFFD, 0x5D3B, 0x4327, -/* 2EB8 */ 0xFFFD, 0xFFFD, 0x5D52, 0x5D3C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D51, -/* 2EC0 */ 0xFFFD, 0x393D, 0xFFFD, 0xFFFD, 0x3E55, 0xFFFD, 0x3E7A, 0xFFFD, -/* 2EC8 */ 0xFFFD, 0x3A4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D4A, 0xFFFD, -/* 2ED0 */ 0x5D45, 0xFFFD, 0x5D3F, 0xFFFD, 0xFFFD, 0xFFFD, 0x324B, 0x5D43, -/* 2ED8 */ 0xFFFD, 0x5D4B, 0x3224, 0x5D55, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D3E, -/* 2EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4650, 0x5D50, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EE8 */ 0xFFFD, 0xFFFD, 0x5D54, 0x4162, 0x3746, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EF0 */ 0xFFFD, 0xFFFD, 0x5D4E, 0x5D4F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D44, -/* 2EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D3D, 0xFFFD, 0x5D4D, 0x4C51, 0xFFFD, -/* 2F00 */ 0x5D49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D42, 0x4348, 0x463C, -/* 2F08 */ 0x4E2E, 0x5D4C, 0xFFFD, 0x5D48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F10 */ 0xFFFD, 0xFFFD, 0x5D41, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D46, 0x425C, -/* 2F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5329, 0x532A, -/* 2F20 */ 0x5D53, 0x4F74, 0x4878, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F30 */ 0xFFFD, 0xFFFD, 0x5D47, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D60, 0x4264, -/* 2F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F40 */ 0x5D61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F50 */ 0xFFFD, 0x5678, 0xFFFD, 0x5D59, 0x5D58, 0x3870, 0x5D56, 0xFFFD, -/* 2F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x464F, 0xFFFD, 0x362D, 0xFFFD, 0xFFFD, -/* 2F60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D62, 0xFFFD, 0x3A79, 0x5461, 0x5D67, -/* 2F68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3450, 0xFFFD, 0x5D5A, 0xFFFD, 0x3F7B, -/* 2F70 */ 0x5D63, 0xFFFD, 0x5D5F, 0xFFFD, 0x5D5D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3559, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F80 */ 0xFFFD, 0x5D5B, 0x5D5C, 0x5D5E, 0xFFFD, 0x3D2F, 0x5D64, 0xFFFD, -/* 2F88 */ 0x5D65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F90 */ 0xFFFD, 0x5D75, 0xFFFD, 0x4349, 0xFFFD, 0xFFFD, 0x4B62, 0xFFFD, -/* 2F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D72, 0x5861, 0xFFFD, 0xFFFD, 0x4651, -/* 2FA0 */ 0xFFFD, 0x5D74, 0xFFFD, 0xFFFD, 0xFFFD, 0x5574, 0x5D73, 0x5D70, -/* 2FA8 */ 0xFFFD, 0xFFFD, 0x5D6C, 0xFFFD, 0x5D6F, 0xFFFD, 0x5D68, 0xFFFD, -/* 2FB0 */ 0xFFFD, 0x506E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4858, 0x5D6E, -/* 2FB8 */ 0xFFFD, 0xFFFD, 0x5D69, 0xFFFD, 0xFFFD, 0x5D6A, 0x4B72, 0xFFFD, -/* 2FC0 */ 0x5D6D, 0xFFFD, 0xFFFD, 0x314D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FC8 */ 0xFFFD, 0xFFFD, 0x4036, 0xFFFD, 0x3C3B, 0x5D71, 0xFFFD, 0xFFFD, -/* 2FD0 */ 0x5D77, 0xFFFD, 0x5D76, 0x5D6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FD8 */ 0xFFFD, 0x456E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D7B, 0x5E24, 0xFFFD, -/* 2FE0 */ 0xFFFD, 0x5E23, 0x5D78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x436F, -/* 2FE8 */ 0xFFFD, 0x427B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5561, 0xFFFD, 0xFFFD, -/* 2FF0 */ 0x4E35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D7D, 0xFFFD, 0x324C, -/* 2FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3000 */ 0xFFFD, 0x4468, 0x4A5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x473E, 0x5D7A, 0x5D7C, -/* 3010 */ 0x5D7E, 0x5E22, 0x302A, 0x314E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3018 */ 0xFFFD, 0x5E2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E26, 0x3D36, -/* 3020 */ 0x486F, 0x5E21, 0xFFFD, 0xFFFD, 0x5E25, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3028 */ 0xFFFD, 0x5E29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E28, -/* 3030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E2D, 0xFFFD, 0x544C, -/* 3040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E33, 0x5E2A, 0x5E2E, 0xFFFD, -/* 3048 */ 0xFFFD, 0x4059, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3121, -/* 3050 */ 0x5E36, 0xFFFD, 0x5E31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3058 */ 0xFFFD, 0xFFFD, 0x5E32, 0x5126, 0x5E35, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E2F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3068 */ 0x5E30, 0xFFFD, 0x503D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E34, 0x4A6D, -/* 3070 */ 0x5E39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E38, -/* 3078 */ 0xFFFD, 0x5E37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3080 */ 0xFFFD, 0x5E3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3088 */ 0xFFFD, 0x3D65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3258, -/* 3090 */ 0x436A, 0xFFFD, 0xFFFD, 0x5E3A, 0xFFFD, 0x453A, 0xFFFD, 0xFFFD, -/* 3098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C59, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30A8 */ 0xFFFD, 0x372A, 0x5465, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3D, 0xFFFD, -/* 30B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3F, 0x4422, 0xFFFD, 0xFFFD, -/* 30B8 */ 0xFFFD, 0xFFFD, 0x5E41, 0x5E3E, 0xFFFD, 0x5E40, 0x553A, 0xFFFD, -/* 30C0 */ 0xFFFD, 0xFFFD, 0x5E42, 0x722E, 0x3B22, 0x4232, 0x4530, 0x4247, -/* 30C8 */ 0xFFFD, 0xFFFD, 0x722F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30D0 */ 0x5069, 0xFFFD, 0xFFFD, 0xFFFD, 0x535D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30D8 */ 0x6B3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30E0 */ 0xFFFD, 0x3366, 0x7230, 0xFFFD, 0x7231, 0xFFFD, 0xFFFD, 0x4A2D, -/* 30E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A67, -/* 30F0 */ 0x7233, 0x7235, 0x7234, 0x4B64, 0x4F3A, 0x7232, 0x4A34, 0x524F, -/* 30F8 */ 0x426C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3100 */ 0x4E43, 0x7238, 0x3076, 0x7237, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3108 */ 0xFFFD, 0x723E, 0xFFFD, 0x324F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3110 */ 0xFFFD, 0xFFFD, 0x5141, 0x723A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3118 */ 0xFFFD, 0x723C, 0x5469, 0xFFFD, 0xFFFD, 0x723B, 0x7236, 0x723F, -/* 3120 */ 0x723D, 0xFFFD, 0x7239, 0xFFFD, 0xFFFD, 0x7247, 0x7244, 0x7246, -/* 3128 */ 0xFFFD, 0xFFFD, 0x724A, 0x7242, 0x7240, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3130 */ 0x7245, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x567B, 0xFFFD, -/* 3138 */ 0xFFFD, 0xFFFD, 0x7241, 0xFFFD, 0x4779, 0x495F, 0xFFFD, 0x7248, -/* 3140 */ 0x3946, 0x3530, 0xFFFD, 0xFFFD, 0x7243, 0x7249, 0x7250, 0x7256, -/* 3148 */ 0xFFFD, 0xFFFD, 0x3B57, 0xFFFD, 0xFFFD, 0xFFFD, 0x7255, 0x4D5C, -/* 3150 */ 0xFFFD, 0x566B, 0xFFFD, 0xFFFD, 0x7252, 0x7254, 0xFFFD, 0xFFFD, -/* 3158 */ 0xFFFD, 0xFFFD, 0x3872, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x724B, -/* 3160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x724E, 0x4279, 0xFFFD, 0x555D, 0x724C, -/* 3168 */ 0x724D, 0x724F, 0x7253, 0xFFFD, 0xFFFD, 0xFFFD, 0x7259, 0x533C, -/* 3170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x366A, 0xFFFD, 0x4A71, 0xFFFD, -/* 3178 */ 0x3764, 0x7257, 0xFFFD, 0xFFFD, 0xFFFD, 0x7258, 0x725A, 0x725D, -/* 3180 */ 0x725B, 0xFFFD, 0xFFFD, 0x725C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3188 */ 0x5151, 0x7251, 0xFFFD, 0x4D49, 0xFFFD, 0x4E4F, 0x5629, 0xFFFD, -/* 3190 */ 0x7263, 0xFFFD, 0x435B, 0xFFFD, 0x7260, 0xFFFD, 0xFFFD, 0x402F, -/* 3198 */ 0x726C, 0x725E, 0xFFFD, 0x7261, 0xFFFD, 0xFFFD, 0xFFFD, 0x7268, -/* 31A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7262, 0xFFFD, 0xFFFD, 0x7267, -/* 31A8 */ 0xFFFD, 0xFFFD, 0x7266, 0xFFFD, 0xFFFD, 0x7269, 0xFFFD, 0xFFFD, -/* 31B0 */ 0xFFFD, 0x725F, 0xFFFD, 0xFFFD, 0x7264, 0x726A, 0xFFFD, 0xFFFD, -/* 31B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x532C, 0x7265, 0x3275, -/* 31C0 */ 0xFFFD, 0xFFFD, 0x7272, 0xFFFD, 0x502B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31C8 */ 0xFFFD, 0x7275, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B48, 0xFFFD, 0x7279, -/* 31D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7270, 0xFFFD, -/* 31D8 */ 0xFFFD, 0x7276, 0x7278, 0x727A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7273, 0xFFFD, 0x7271, 0xFFFD, -/* 31E8 */ 0xFFFD, 0xFFFD, 0x3A7B, 0xFFFD, 0x357B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F0 */ 0xFFFD, 0x726F, 0x7277, 0x726D, 0x726E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F8 */ 0x726B, 0x7326, 0xFFFD, 0x7323, 0xFFFD, 0xFFFD, 0x7322, 0xFFFD, -/* 3200 */ 0xFFFD, 0x7274, 0xFFFD, 0x485A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3208 */ 0xFFFD, 0x727B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7325, 0xFFFD, 0xFFFD, -/* 3210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4378, 0xFFFD, 0xFFFD, -/* 3218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x727D, 0xFFFD, -/* 3220 */ 0xFFFD, 0x7327, 0x7329, 0x7324, 0xFFFD, 0x727C, 0xFFFD, 0xFFFD, -/* 3228 */ 0xFFFD, 0x732B, 0xFFFD, 0x732A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3230 */ 0x425D, 0xFFFD, 0xFFFD, 0x732E, 0xFFFD, 0xFFFD, 0x7330, 0xFFFD, -/* 3238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7321, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3240 */ 0x7331, 0x732C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x732F, -/* 3248 */ 0x727E, 0x732D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3250 */ 0xFFFD, 0x7332, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7334, 0xFFFD, -/* 3258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7328, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3260 */ 0x7333, 0xFFFD, 0xFFFD, 0xFFFD, 0x7335, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5037, -/* 3270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7338, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3278 */ 0xFFFD, 0x5979, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3280 */ 0x7339, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3288 */ 0xFFFD, 0x7337, 0xFFFD, 0x4864, 0x7336, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3290 */ 0xFFFD, 0x733A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x733B, -/* 3298 */ 0x3440, 0x6E43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32A0 */ 0x733C, 0xFFFD, 0xFFFD, 0x733D, 0xFFFD, 0xFFFD, 0xFFFD, 0x512A, -/* 32A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x742C, 0x5046, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5050, 0x515C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F4E, 0xFFFD, 0xFFFD, 0x3D56, 0xFFFD, -/* 32C0 */ 0x5143, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32C8 */ 0x3A62, 0x6169, 0x5242, 0x7142, 0x3239, 0xFFFD, 0xFFFD, 0x316D, -/* 32D0 */ 0x7143, 0xFFFD, 0x4940, 0x3344, 0xFFFD, 0x5972, 0xFFFD, 0x4B25, -/* 32D8 */ 0xFFFD, 0x7144, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5654, 0xFFFD, -/* 32E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7145, 0x7440, 0x7146, 0xFFFD, -/* 32E8 */ 0x542C, 0x7147, 0xFFFD, 0x3040, 0x7441, 0xFFFD, 0xFFFD, 0x7442, -/* 32F0 */ 0xFFFD, 0xFFFD, 0x347C, 0xFFFD, 0x455B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32F8 */ 0xFFFD, 0x4C3B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5064, 0xFFFD, 0xFFFD, -/* 3300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3308 */ 0xFFFD, 0x7148, 0xFFFD, 0x5973, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3310 */ 0xFFFD, 0xFFFD, 0x313B, 0xFFFD, 0x4F2E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3318 */ 0x3824, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x714A, 0xFFFD, -/* 3320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x714B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3328 */ 0x3243, 0x4151, 0xFFFD, 0xFFFD, 0x5730, 0x7149, 0xFFFD, 0xFFFD, -/* 3330 */ 0x714C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x714E, 0xFFFD, 0xFFFD, -/* 3338 */ 0xFFFD, 0x5976, 0xFFFD, 0x5261, 0x5423, 0xFFFD, 0xFFFD, 0x7443, -/* 3340 */ 0x4839, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7444, 0xFFFD, -/* 3348 */ 0xFFFD, 0x714D, 0x714F, 0x3F63, 0x7150, 0xFFFD, 0xFFFD, 0x7154, -/* 3350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7156, -/* 3358 */ 0x7151, 0xFFFD, 0x4951, 0x4561, 0xFFFD, 0xFFFD, 0xFFFD, 0x4263, -/* 3360 */ 0x397C, 0xFFFD, 0xFFFD, 0x7153, 0xFFFD, 0x7155, 0xFFFD, 0xFFFD, -/* 3368 */ 0xFFFD, 0x3953, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3370 */ 0xFFFD, 0x715B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A56, -/* 3378 */ 0xFFFD, 0x307D, 0x7159, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3380 */ 0x7158, 0x7152, 0x715A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3388 */ 0x7157, 0xFFFD, 0xFFFD, 0xFFFD, 0x486C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3390 */ 0xFFFD, 0x4D4A, 0x715D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x653D, -/* 3398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x715C, 0xFFFD, 0x715E, 0xFFFD, 0xFFFD, -/* 33A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33A8 */ 0x715F, 0xFFFD, 0xFFFD, 0x4F65, 0x7445, 0x3D73, 0xFFFD, 0xFFFD, -/* 33B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7160, 0x7161, 0xFFFD, 0xFFFD, -/* 33B8 */ 0xFFFD, 0x4E77, 0xFFFD, 0x522A, 0xFFFD, 0x717B, 0xFFFD, 0xFFFD, -/* 33C0 */ 0x3832, 0x3C7B, 0x395B, 0xFFFD, 0x3966, 0x4359, 0x4A53, 0x6A68, -/* 33C8 */ 0x4040, 0x3E75, 0x6A69, 0x6A6A, 0x6A6B, 0xFFFD, 0x6A6C, 0x6A6D, -/* 33D0 */ 0x6A6E, 0x6A6F, 0x3D47, 0xFFFD, 0xFFFD, 0xFFFD, 0x757B, 0xFFFD, -/* 33D8 */ 0xFFFD, 0xFFFD, 0x757D, 0xFFFD, 0x757E, 0xFFFD, 0x757C, 0xFFFD, -/* 33E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D62, 0xFFFD, 0x7621, 0x3425, 0xFFFD, -/* 33E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7622, 0xFFFD, 0xFFFD, 0xFFFD, 0x7623, -/* 33F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C32, 0x5154, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x596A, 0x7624, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E3A, 0x537E, -/* 3408 */ 0x4C5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3410 */ 0xFFFD, 0x4A44, 0x3E2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3418 */ 0x4629, 0x5A25, 0x3C46, 0x3629, 0x383C, 0x484F, 0x3C25, 0x5A26, -/* 3420 */ 0x5A27, 0x4C56, 0x4843, 0x5A28, 0x467D, 0xFFFD, 0x5135, 0x5269, -/* 3428 */ 0x5136, 0x3C47, 0xFFFD, 0x3D32, 0x3B64, 0x5A29, 0x5A2A, 0x5148, -/* 3430 */ 0x5A2B, 0x506D, 0x366F, 0x425B, 0xFFFD, 0x4B4F, 0x376D, 0x4968, -/* 3438 */ 0x3743, 0x3E77, 0x5624, 0x5A2C, 0x5A2D, 0x4640, 0x5767, 0x4A36, -/* 3440 */ 0xFFFD, 0x5529, 0x4B5F, 0x556F, 0x5A2E, 0x565F, 0x344A, 0x5A30, -/* 3448 */ 0x5A2F, 0xFFFD, 0x526B, 0x5A31, 0x5A32, 0x5A33, 0x4A54, 0x5A34, -/* 3450 */ 0x4A2B, 0x5A35, 0x5A36, 0x334F, 0x566F, 0x5A37, 0x3B30, 0x352E, -/* 3458 */ 0x5A38, 0x5A39, 0x396E, 0x512F, 0x5268, 0x5A3A, 0x3843, 0x4F6A, -/* 3460 */ 0x326F, 0x5A3B, 0x5A3C, 0xFFFD, 0x3D6B, 0x4E5C, 0x536F, 0x5A3D, -/* 3468 */ 0x4E73, 0x5A3E, 0x5355, 0x3B65, 0x5A3F, 0x4B35, 0x4B50, 0x5A40, -/* 3470 */ 0x476B, 0x566E, 0x5A41, 0x4535, 0x3641, 0x5A42, 0x374C, 0x3F4E, -/* 3478 */ 0x5A43, 0x5A44, 0x4B2D, 0x5A45, 0x3577, 0x5A46, 0x4142, 0x573B, -/* 3480 */ 0x5A47, 0x4C38, 0xFFFD, 0x526A, 0x4431, 0x5A48, 0x357D, 0x3B51, -/* 3488 */ 0x5A49, 0x5033, 0x5A4A, 0x5A4B, 0x4E3D, 0x5A4C, 0x5A4D, 0x5A4E, -/* 3490 */ 0x3277, 0x5A51, 0x5A4F, 0x5168, 0x5A50, 0x4355, 0x5A52, 0xFFFD, -/* 3498 */ 0x5A53, 0x5A54, 0x5A55, 0x503B, 0x5225, 0x3079, 0x5A56, 0x472B, -/* 34A0 */ 0x5A57, 0x3D77, 0x4321, 0x5A58, 0x5A59, 0x437D, 0x4C37, 0x5A5A, -/* 34A8 */ 0x5A5B, 0x403E, 0x4657, 0x5A5C, 0x5A5D, 0x4734, 0x5A5E, 0x5A5F, -/* 34B0 */ 0x3948, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34B8 */ 0xFFFD, 0xFFFD, 0x3B6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3639, -/* 34C0 */ 0x7478, 0xFFFD, 0x7479, 0xFFFD, 0xFFFD, 0x4D63, 0xFFFD, 0xFFFD, -/* 34C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7539, 0xFFFD, -/* 34D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34D8 */ 0xFFFD, 0xFFFD, 0x4F73, 0x3B3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A40, 0x5425, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6159, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F0 */ 0xFFFD, 0x7574, 0x312A, 0x3272, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7575, 0xFFFD, 0xFFFD, 0x7577, 0xFFFD, -/* 3500 */ 0xFFFD, 0xFFFD, 0x3A51, 0x7576, 0xFFFD, 0x4332, 0xFFFD, 0xFFFD, -/* 3508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7579, 0xFFFD, 0xFFFD, -/* 3510 */ 0xFFFD, 0x7578, 0x3134, 0x556A, 0x383A, 0xFFFD, 0x3931, 0x3246, -/* 3518 */ 0x5470, 0x4F4D, 0x305C, 0x554B, 0x3B75, 0x564A, 0x3737, 0x4C30, -/* 3520 */ 0x4636, 0x3161, 0x393A, 0x567C, 0x3961, 0x3721, 0x3C7A, 0x6A5A, -/* 3528 */ 0x6A5B, 0x4C79, 0x3973, 0x6A5C, 0x347B, 0x4333, 0x3751, 0x3A58, -/* 3530 */ 0x6A5D, 0x5474, 0x6A5E, 0x3C56, 0x3B5F, 0x6A5F, 0x415E, 0x4238, -/* 3538 */ 0x545F, 0x574A, 0x6A60, 0x6A61, 0x6A64, 0x6A62, 0x6A63, 0x495E, -/* 3540 */ 0x3833, 0x3644, 0x6A65, 0x4A6A, 0x494D, 0x344D, 0xFFFD, 0xFFFD, -/* 3548 */ 0x6259, 0x4562, 0x6A66, 0x4035, 0xFFFD, 0x5738, 0x6A67, 0x572C, -/* 3550 */ 0x487C, 0x5853, 0x584D, 0x545E, 0xFFFD, 0x5479, 0x4944, 0x532E, -/* 3558 */ 0x3853, 0x3360, 0xFFFD, 0x4962, 0x7476, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3560 */ 0x3A55, 0xFFFD, 0x7477, 0xFFFD, 0xFFFD, 0x575F, 0xFFFD, 0xFFFD, -/* 3568 */ 0x7471, 0x3830, 0x5554, 0x384F, 0x4670, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3343, 0xFFFD, -/* 3578 */ 0xFFFD, 0x7472, 0x332C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x543D, -/* 3580 */ 0x4777, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7474, 0xFFFD, -/* 3588 */ 0xFFFD, 0x7473, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C4B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3598 */ 0x4824, 0x7475, 0xFFFD, 0x5763, 0x453F, 0x7540, 0xFFFD, 0xFFFD, -/* 35A0 */ 0x753B, 0xFFFD, 0x7543, 0xFFFD, 0x7542, 0xFFFD, 0x563A, 0x7541, -/* 35A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x543E, 0x7544, 0xFFFD, 0x754C, 0xFFFD, -/* 35B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x304F, 0x3578, 0xFFFD, 0x7549, 0x754A, -/* 35B8 */ 0xFFFD, 0x455C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7545, 0x7546, -/* 35C0 */ 0xFFFD, 0xFFFD, 0x7547, 0x754B, 0xFFFD, 0x3E60, 0x7548, 0x387A, -/* 35C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7550, 0x7553, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35D0 */ 0x3F67, 0xFFFD, 0x3972, 0x753C, 0x754D, 0xFFFD, 0xFFFD, 0x4237, -/* 35D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C78, 0xFFFD, 0x3C79, 0xFFFD, 0x754E, -/* 35E0 */ 0x754F, 0x7551, 0x3665, 0x7552, 0xFFFD, 0x7555, 0xFFFD, 0xFFFD, -/* 35E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x753D, 0xFFFD, 0xFFFD, -/* 35F0 */ 0xFFFD, 0x7554, 0x533B, 0xFFFD, 0x336C, 0xFFFD, 0xFFFD, 0x4C24, -/* 35F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7556, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7557, 0x3E61, 0x7558, -/* 3608 */ 0xFFFD, 0xFFFD, 0x4C5F, 0x755B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3610 */ 0xFFFD, 0x3248, 0x5759, 0xFFFD, 0x7559, 0xFFFD, 0x755A, 0x755C, -/* 3618 */ 0xFFFD, 0x7562, 0xFFFD, 0xFFFD, 0xFFFD, 0x7560, 0xFFFD, 0xFFFD, -/* 3620 */ 0xFFFD, 0x755F, 0x755D, 0xFFFD, 0xFFFD, 0x7561, 0xFFFD, 0xFFFD, -/* 3628 */ 0x755E, 0x7564, 0x7565, 0xFFFD, 0x4C63, 0xFFFD, 0xFFFD, 0x653F, -/* 3630 */ 0x3538, 0x7563, 0x7568, 0x4C23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3638 */ 0xFFFD, 0x7566, 0x7567, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3640 */ 0xFFFD, 0x753E, 0x3144, 0xFFFD, 0xFFFD, 0x753F, 0xFFFD, 0xFFFD, -/* 3648 */ 0x3545, 0x3264, 0xFFFD, 0x756C, 0x7569, 0xFFFD, 0x3657, 0xFFFD, -/* 3650 */ 0x756D, 0xFFFD, 0x756A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3658 */ 0x756B, 0xFFFD, 0xFFFD, 0x345A, 0xFFFD, 0x546A, 0xFFFD, 0xFFFD, -/* 3660 */ 0xFFFD, 0x756E, 0xFFFD, 0x3379, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3668 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x756F, 0x7571, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3670 */ 0x7570, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3678 */ 0x7572, 0xFFFD, 0x7573, 0x496D, 0x392A, 0xFFFD, 0xFFFD, 0x477B, -/* 3680 */ 0xFFFD, 0xFFFD, 0x3663, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3688 */ 0xFFFD, 0xFFFD, 0x4C49, 0x3335, 0x547E, 0x396C, 0x5079, 0xFFFD, -/* 3690 */ 0x696D, 0x572A, 0x696E, 0x4256, 0x486D, 0x3A64, 0x696F, 0x6970, -/* 3698 */ 0x6971, 0x5661, 0x6972, 0x6973, 0x6975, 0x6974, 0x6976, 0x6977, -/* 36A0 */ 0x4761, 0x6978, 0x5458, 0x6979, 0x3D4E, 0xFFFD, 0x697A, 0x697B, -/* 36A8 */ 0x3D4F, 0x697C, 0x3828, 0x413E, 0x697D, 0x3132, 0x3B54, 0x3975, -/* 36B0 */ 0x697E, 0xFFFD, 0x6A21, 0x6A22, 0x6A23, 0x3778, 0x3C2D, 0xFFFD, -/* 36B8 */ 0x4A64, 0x604E, 0x542F, 0x4F3D, 0x5537, 0x6A24, 0x555E, 0x6A25, -/* 36C0 */ 0x5041, 0x393C, 0xFFFD, 0x3447, 0x3159, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36C8 */ 0x4031, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3166, 0x3167, 0xFFFD, -/* 36D0 */ 0x3168, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x333D, 0x4868, 0xFFFD, -/* 36D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6541, 0xFFFD, 0xFFFD, 0x315F, 0xFFFD, -/* 36E0 */ 0xFFFD, 0xFFFD, 0x4149, 0x346F, 0xFFFD, 0xFFFD, 0x4728, 0x5358, -/* 36E8 */ 0xFFFD, 0x4679, 0x5138, 0xFFFD, 0x397D, 0x4275, 0xFFFD, 0xFFFD, -/* 36F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x532D, 0xFFFD, 0x544B, 0x3D7C, 0xFFFD, -/* 36F8 */ 0x6542, 0x3735, 0x6543, 0xFFFD, 0xFFFD, 0x3B39, 0x5562, 0xFFFD, -/* 3700 */ 0x3D78, 0x5436, 0x4E25, 0x412C, 0x3359, 0xFFFD, 0xFFFD, 0x4C76, -/* 3708 */ 0xFFFD, 0x6546, 0x6544, 0x6548, 0xFFFD, 0x654A, 0x6547, 0x354F, -/* 3710 */ 0x4648, 0xFFFD, 0x357C, 0x6545, 0xFFFD, 0x4A76, 0xFFFD, 0xFFFD, -/* 3718 */ 0x6549, 0xFFFD, 0xFFFD, 0xFFFD, 0x4354, 0x3145, 0x3C23, 0xFFFD, -/* 3720 */ 0xFFFD, 0xFFFD, 0x5737, 0xFFFD, 0xFFFD, 0x4D4B, 0x4B4D, 0x4A4A, -/* 3728 */ 0x4C53, 0x654C, 0x654B, 0x4466, 0xFFFD, 0xFFFD, 0x5121, 0x5137, -/* 3730 */ 0x654D, 0xFFFD, 0x6550, 0xFFFD, 0x4D38, 0x5670, 0x654F, 0x355D, -/* 3738 */ 0xFFFD, 0x4D3E, 0xFFFD, 0x6551, 0x363A, 0xFFFD, 0xFFFD, 0x4D28, -/* 3740 */ 0x3964, 0xFFFD, 0x4A45, 0x3351, 0x4B59, 0x546C, 0x6552, 0x376A, -/* 3748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x654E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3750 */ 0xFFFD, 0xFFFD, 0x6555, 0x347E, 0x6556, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3758 */ 0xFFFD, 0xFFFD, 0x6553, 0x6554, 0xFFFD, 0x525D, 0xFFFD, 0xFFFD, -/* 3760 */ 0x425F, 0x3146, 0xFFFD, 0x5362, 0xFFFD, 0xFFFD, 0x365D, 0x4B6C, -/* 3768 */ 0xFFFD, 0x6557, 0xFFFD, 0xFFFD, 0x5376, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3770 */ 0xFFFD, 0xFFFD, 0x3169, 0xFFFD, 0x3674, 0x655A, 0x6558, 0x6559, -/* 3778 */ 0x3540, 0xFFFD, 0xFFFD, 0xFFFD, 0x5245, 0x655C, 0xFFFD, 0xFFFD, -/* 3780 */ 0x655E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x655D, -/* 3788 */ 0x4732, 0xFFFD, 0x5223, 0xFFFD, 0xFFFD, 0x655B, 0xFFFD, 0xFFFD, -/* 3790 */ 0xFFFD, 0xFFFD, 0x5462, 0x555A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3798 */ 0xFFFD, 0x6560, 0x5771, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37A0 */ 0xFFFD, 0xFFFD, 0x6561, 0xFFFD, 0x315C, 0x517B, 0xFFFD, 0x6562, -/* 37A8 */ 0x6564, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6563, 0xFFFD, 0xFFFD, -/* 37B0 */ 0x6565, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5258, 0xFFFD, -/* 37B8 */ 0x354B, 0xFFFD, 0x675F, 0xFFFD, 0x5A75, 0xFFFD, 0x5A78, 0xFFFD, -/* 37C0 */ 0x5A76, 0xFFFD, 0x5A77, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A7A, 0x504F, -/* 37C8 */ 0x4447, 0xFFFD, 0xFFFD, 0x306E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5030, -/* 37D0 */ 0xFFFD, 0x5A79, 0xFFFD, 0x534A, 0x3A2A, 0x5B22, 0x4771, 0xFFFD, -/* 37D8 */ 0x5A7C, 0x5A7B, 0x495B, 0x5A7D, 0xFFFD, 0x5B21, 0x575E, 0x5A7E, -/* 37E0 */ 0x415A, 0xFFFD, 0xFFFD, 0x5B25, 0xFFFD, 0xFFFD, 0x5374, 0xFFFD, -/* 37E8 */ 0xFFFD, 0x5B27, 0x5B24, 0xFFFD, 0x5B28, 0xFFFD, 0xFFFD, 0x3D3C, -/* 37F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4049, 0x5B23, 0x5B26, 0x5623, 0xFFFD, -/* 37F8 */ 0x5B29, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B2D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3800 */ 0x5B2E, 0x5B2C, 0x3A42, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F24, 0x5B2B, -/* 3808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B2A, 0x5447, 0x323F, 0xFFFD, 0xFFFD, -/* 3810 */ 0x5B2F, 0xFFFD, 0x3979, 0xFFFD, 0x5B30, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3818 */ 0xFFFD, 0x333B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3526, 0xFFFD, 0xFFFD, -/* 3820 */ 0xFFFD, 0xFFFD, 0x363C, 0x5B31, 0xFFFD, 0xFFFD, 0xFFFD, 0x3675, -/* 3828 */ 0xFFFD, 0x5B32, 0x3149, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B34, -/* 3830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B33, 0x5B35, 0x5B37, 0xFFFD, 0x5B36, -/* 3838 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B38, -/* 3840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3848 */ 0xFFFD, 0x5B39, 0xFFFD, 0xFFFD, 0x5B3A, 0xFFFD, 0xFFFD, 0x534F, -/* 3850 */ 0x747A, 0x4775, 0x5743, 0x4564, 0x747C, 0x747D, 0x747B, 0xFFFD, -/* 3858 */ 0x3E46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x506F, 0xFFFD, 0xFFFD, -/* 3860 */ 0x3753, 0xFFFD, 0xFFFD, 0x544D, 0x4C2A, 0xFFFD, 0xFFFD, 0x7522, -/* 3868 */ 0x7521, 0x3A28, 0x747E, 0x4B56, 0xFFFD, 0xFFFD, 0xFFFD, 0x7524, -/* 3870 */ 0x4052, 0xFFFD, 0x336A, 0xFFFD, 0x4D2A, 0x7525, 0x7523, 0x3D34, -/* 3878 */ 0x7528, 0xFFFD, 0x7529, 0x3D4D, 0x4338, 0x3F61, 0x4B61, 0x752A, -/* 3880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7526, 0x7527, 0x4470, 0xFFFD, 0xFFFD, -/* 3888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x752C, 0xFFFD, 0x343C, 0xFFFD, 0x576D, -/* 3890 */ 0xFFFD, 0x3457, 0x752B, 0x752E, 0xFFFD, 0xFFFD, 0x752D, 0x752F, -/* 3898 */ 0x5051, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38A0 */ 0x4351, 0x4829, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38A8 */ 0x7530, 0x7531, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38B0 */ 0x7532, 0xFFFD, 0xFFFD, 0x7533, 0x7534, 0x7535, 0xFFFD, 0xFFFD, -/* 38B8 */ 0xFFFD, 0xFFFD, 0x7537, 0x7536, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38C0 */ 0x7538, 0x3249, 0xFFFD, 0x5354, 0x4A4D, 0xFFFD, 0x406F, 0x5658, -/* 38C8 */ 0x5230, 0x413F, 0xFFFD, 0x3D70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x382A, 0x6E44, -/* 38D8 */ 0x6E45, 0x6E46, 0x556B, 0x3624, 0x6E48, 0x6E47, 0x6E49, 0x6E4A, -/* 38E0 */ 0x4725, 0x6E4B, 0x6E4C, 0xFFFD, 0x3730, 0x3576, 0x6E4D, 0x6E4F, -/* 38E8 */ 0xFFFD, 0x6E4E, 0xFFFD, 0x3846, 0x6E50, 0x6E51, 0x6E52, 0x365B, -/* 38F0 */ 0x332E, 0x5653, 0x4446, 0x3135, 0x3856, 0x6E53, 0x6E54, 0x543F, -/* 38F8 */ 0x4755, 0x3E7B, 0x4E59, 0x3933, 0x6E56, 0x6E55, 0x6E58, 0x6E57, -/* 3900 */ 0x4525, 0x6E59, 0x6E5A, 0x472E, 0x6E5B, 0x472F, 0x6E5C, 0x3227, -/* 3908 */ 0x6E5D, 0x6E5E, 0x6E5F, 0x6E60, 0x6E61, 0x576A, 0x6E62, 0x6E63, -/* 3910 */ 0x3C58, 0x6E64, 0x534B, 0x4C7A, 0x322C, 0x4165, 0x6E65, 0x4726, -/* 3918 */ 0x432D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3920 */ 0xFFFD, 0xFFFD, 0x6E6D, 0x6E6E, 0x6E6F, 0xFFFD, 0xFFFD, 0x6E70, -/* 3928 */ 0x6E71, 0x6E72, 0x6E74, 0x6E73, 0xFFFD, 0x6E75, 0x4D2D, 0x4241, -/* 3930 */ 0x6E76, 0x6E77, 0x6E78, 0x5521, 0x6E79, 0x4F33, 0x6E7A, 0x6E7B, -/* 3938 */ 0xFFFD, 0x6E7C, 0x6E7D, 0x6F21, 0x6E7E, 0x6F22, 0x3875, 0x437A, -/* 3940 */ 0x6F23, 0x6F24, 0x3D42, 0x523F, 0x3279, 0x6F25, 0x6F26, 0x6F27, -/* 3948 */ 0x5278, 0x6F28, 0x567D, 0x6F29, 0x464C, 0xFFFD, 0x6F2A, 0x6F2B, -/* 3950 */ 0x4134, 0x6F2C, 0x4F7A, 0x4B78, 0x6F2E, 0x6F2D, 0x337A, 0x3978, -/* 3958 */ 0x6F2F, 0x6F30, 0x5062, 0x6F31, 0x6F32, 0x3766, 0x503F, 0x6F33, -/* 3960 */ 0x6F34, 0x6F35, 0x4871, 0x4C60, 0x6F36, 0x6F37, 0x6F38, 0x6F39, -/* 3968 */ 0x6F3A, 0x5560, 0x6F3B, 0x346D, 0x432A, 0x6F3C, 0xFFFD, 0x6F3D, -/* 3970 */ 0x6F3E, 0x6F3F, 0xFFFD, 0x4E7D, 0x6F40, 0x4260, 0x3438, 0x5736, -/* 3978 */ 0x3D75, 0xFFFD, 0x4F47, 0x6F43, 0x6F41, 0x6F42, 0x6F44, 0x3627, -/* 3980 */ 0x3C7C, 0x3E62, 0x434C, 0x6F45, 0x6F46, 0xFFFD, 0x6F47, 0x6F4F, -/* 3988 */ 0x6F48, 0x6F49, 0x6F4A, 0x4742, 0x6F71, 0x364D, 0x6F4B, 0xFFFD, -/* 3990 */ 0x6F4C, 0x6F4D, 0x3646, 0x433E, 0x6F4E, 0xFFFD, 0x6F50, 0x6F51, -/* 3998 */ 0x6F52, 0x5572, 0xFFFD, 0x6F53, 0x4477, 0xFFFD, 0x6F54, 0x4478, -/* 39A0 */ 0x6F55, 0x6F56, 0x3864, 0x3077, 0x6F57, 0x6F58, 0x6F59, 0xFFFD, -/* 39A8 */ 0x6F5A, 0x6F5B, 0x6F5C, 0x6F5D, 0xFFFD, 0x6F5E, 0x3E35, 0x6F61, -/* 39B0 */ 0x6F5F, 0x6F60, 0xFFFD, 0x6F62, 0x6F63, 0x414D, 0xFFFD, 0xFFFD, -/* 39B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4058, -/* 39C0 */ 0xFFFD, 0x6F6D, 0x412D, 0x6F6E, 0x6F6F, 0x6F70, 0xFFFD, 0xFFFD, -/* 39C8 */ 0x4F62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39D0 */ 0xFFFD, 0x3324, 0x4345, 0x6345, 0x4941, 0x6346, 0xFFFD, 0x3155, -/* 39D8 */ 0x4E4A, 0x3433, 0x4872, 0x6347, 0x4F50, 0x6348, 0x3C64, 0x6349, -/* 39E0 */ 0x634A, 0x4346, 0x5522, 0x4456, 0x396B, 0x4E45, 0x634B, 0x4376, -/* 39E8 */ 0x634C, 0xFFFD, 0x3727, 0x3873, 0x3A52, 0x634D, 0x634E, 0x5444, -/* 39F0 */ 0x634F, 0xFFFD, 0x6350, 0x514B, 0x6351, 0x6352, 0x6353, 0x6354, -/* 39F8 */ 0x5156, 0x6355, 0x327B, 0x403B, 0x6356, 0xFFFD, 0x402B, 0x6357, -/* 3A00 */ 0x6358, 0x6359, 0xFFFD, 0x635A, 0x635B, 0xFFFD, 0x3837, 0x5A62, -/* 3A08 */ 0xFFFD, 0x3653, 0xFFFD, 0x5A64, 0x5A63, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A66, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A18 */ 0x486E, 0xFFFD, 0xFFFD, 0x5A65, 0x3740, 0x5174, 0x5275, 0x5573, -/* 3A20 */ 0x3D57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5768, 0x5A68, 0x5A67, -/* 3A28 */ 0xFFFD, 0x3022, 0x4D53, 0xFFFD, 0x5A69, 0xFFFD, 0x383D, 0x3C4A, -/* 3A30 */ 0x423D, 0x4224, 0x3342, 0x5A6A, 0xFFFD, 0x422A, 0x4430, 0x3D35, -/* 3A38 */ 0xFFFD, 0xFFFD, 0x4F5E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A6B, 0x4942, -/* 3A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x315D, 0xFFFD, 0xFFFD, -/* 3A48 */ 0xFFFD, 0x5A6C, 0xFFFD, 0x3638, 0x543A, 0xFFFD, 0x337D, 0xFFFD, -/* 3A50 */ 0xFFFD, 0x5A6D, 0x5449, 0x4F55, 0x4563, 0xFFFD, 0x5A6E, 0xFFFD, -/* 3A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A6F, 0xFFFD, 0x5A70, 0x416A, -/* 3A60 */ 0x4C55, 0x4F5D, 0x5367, 0x4221, 0xFFFD, 0x5A71, 0xFFFD, 0xFFFD, -/* 3A68 */ 0x4B65, 0xFFFD, 0x5A72, 0xFFFD, 0x4B66, 0x527E, 0xFFFD, 0xFFFD, -/* 3A70 */ 0xFFFD, 0x3874, 0xFFFD, 0xFFFD, 0x5A73, 0x302F, 0x4F36, 0xFFFD, -/* 3A78 */ 0xFFFD, 0x554F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B6D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A74, 0xFFFD, 0xFFFD, -/* 3A90 */ 0x6344, 0xFFFD, 0xFFFD, 0x4125, 0xFFFD, 0xFFFD, 0x763F, 0xFFFD, -/* 3A98 */ 0xFFFD, 0x7640, 0x7641, 0x4451, 0xFFFD, 0x4838, 0x5163, 0xFFFD, -/* 3AA0 */ 0xFFFD, 0x505B, 0x5145, 0x3C2F, 0x394D, 0xFFFD, 0x6F74, 0xFFFD, -/* 3AA8 */ 0xFFFD, 0x3446, 0x533A, 0x7642, 0x337B, 0xFFFD, 0xFFFD, 0x7643, -/* 3AB0 */ 0xFFFD, 0xFFFD, 0x3571, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7645, 0xFFFD, 0xFFFD, -/* 3AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x536A, 0x7627, 0x5129, -/* 3AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7629, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AD0 */ 0x7628, 0xFFFD, 0xFFFD, 0x4163, 0x4057, 0xFFFD, 0x3122, 0xFFFD, -/* 3AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E6D, 0xFFFD, 0x5068, 0x762B, 0xFFFD, -/* 3AE0 */ 0xFFFD, 0x4F76, 0xFFFD, 0x762A, 0x5570, 0x762C, 0x4339, 0xFFFD, -/* 3AE8 */ 0xFFFD, 0xFFFD, 0x3B74, 0x762E, 0x762D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AF0 */ 0x445E, 0xFFFD, 0xFFFD, 0x4158, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AF8 */ 0xFFFD, 0x4B2A, 0xFFFD, 0x4F3C, 0x762F, 0xFFFD, 0xFFFD, 0x7630, -/* 3B00 */ 0xFFFD, 0xFFFD, 0x7631, 0xFFFD, 0x4236, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B08 */ 0xFFFD, 0xFFFD, 0x3054, 0x4579, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B10 */ 0x7632, 0x4760, 0x7626, 0xFFFD, 0xFFFD, 0x3E38, 0xFFFD, 0xFFFD, -/* 3B18 */ 0x3E32, 0xFFFD, 0x3565, 0xFFFD, 0xFFFD, 0x3747, 0xFFFD, 0x3F3F, -/* 3B20 */ 0x4352, 0x4366, 0xFFFD, 0xFFFD, 0x584C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B28 */ 0x386F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B30 */ 0xFFFD, 0xFFFD, 0x3D79, 0x5125, 0xFFFD, 0x3050, 0xFFFD, 0xFFFD, -/* 3B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7730, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7731, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B48 */ 0xFFFD, 0xFFFD, 0x502C, 0xFFFD, 0x3030, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B50 */ 0x7732, 0x7733, 0xFFFD, 0x7734, 0xFFFD, 0xFFFD, 0xFFFD, 0x474A, -/* 3B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E4F, -/* 3B60 */ 0xFFFD, 0xFFFD, 0x7737, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B68 */ 0xFFFD, 0xFFFD, 0x7736, 0xFFFD, 0x315E, 0xFFFD, 0x7735, 0xFFFD, -/* 3B70 */ 0xFFFD, 0x7738, 0xFFFD, 0x7739, 0x4E24, 0x484D, 0xFFFD, 0x3A2B, -/* 3B78 */ 0x6838, 0x6839, 0x683A, 0x3E42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B80 */ 0xFFFD, 0x5274, 0xFFFD, 0x544F, 0x4958, 0x5233, 0x3625, 0x476A, -/* 3B88 */ 0x717C, 0x4F6E, 0x4B33, 0x506B, 0x676F, 0x4D67, 0x394B, 0x3659, -/* 3B90 */ 0x717D, 0x3064, 0x4B4C, 0x717E, 0x5424, 0x422D, 0x416C, 0x4644, -/* 3B98 */ 0x3E31, 0x7221, 0x3C55, 0xFFFD, 0x7222, 0x7223, 0xFFFD, 0x7224, -/* 3BA0 */ 0x5243, 0x4635, 0xFFFD, 0x4D47, 0x7225, 0xFFFD, 0x5331, 0x3F45, -/* 3BA8 */ 0x4C62, 0xFFFD, 0x7226, 0x7227, 0x5155, 0x366E, 0x7228, 0x7229, -/* 3BB0 */ 0x355F, 0x722A, 0x722B, 0xFFFD, 0x327C, 0x722C, 0x722D, 0x4827, -/* 3BB8 */ 0x3767, 0xFFFD, 0xFFFD, 0x6C29, 0x6C2A, 0x6C2B, 0xFFFD, 0x6C2C, -/* 3BC0 */ 0xFFFD, 0xFFFD, 0x462E, 0x6C2D, 0x6C2E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BC8 */ 0x3749, 0x4A33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BD0 */ 0xFFFD, 0x6238, 0x774F, 0x7750, 0xFFFD, 0xFFFD, 0x324D, 0x7753, -/* 3BD8 */ 0x7752, 0x623B, 0xFFFD, 0x3C22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3739, 0x527B, 0x3D24, 0x4A4E, 0x3125, -/* 3BE8 */ 0x4B47, 0xFFFD, 0x6242, 0x367C, 0x4844, 0x6243, 0xFFFD, 0xFFFD, -/* 3BF0 */ 0x3D48, 0xFFFD, 0x317D, 0x6244, 0xFFFD, 0x3676, 0x6245, 0x4459, -/* 3BF8 */ 0xFFFD, 0xFFFD, 0x6246, 0x4F5A, 0x395D, 0x6247, 0x4021, 0xFFFD, -/* 3C00 */ 0x6248, 0x3276, 0xFFFD, 0x6249, 0xFFFD, 0x4173, 0x624A, 0x624B, -/* 3C08 */ 0x4278, 0x624C, 0x624D, 0x624E, 0x4A57, 0x5838, 0x5965, 0x4F63, -/* 3C10 */ 0x7025, 0xFFFD, 0xFFFD, 0x5C30, 0x426D, 0x5426, 0x4D54, 0x5131, -/* 3C18 */ 0x335B, 0x477D, 0xFFFD, 0x3235, 0x423F, 0x6660, 0x4A3B, 0x6661, -/* 3C20 */ 0x6662, 0x3E54, 0x6663, 0x5724, 0x4D55, 0x6665, 0x3C5D, 0x6664, -/* 3C28 */ 0x6666, 0x6667, 0x426E, 0xFFFD, 0x3D3E, 0x6668, 0x4266, 0x3A27, -/* 3C30 */ 0x6669, 0xFFFD, 0x666A, 0x3352, 0x5169, 0xFFFD, 0xFFFD, 0x3F25, -/* 3C38 */ 0x666B, 0x466F, 0x666C, 0x666D, 0xFFFD, 0xFFFD, 0x666E, 0x462D, -/* 3C40 */ 0x666F, 0xFFFD, 0x4927, 0x6670, 0x6671, 0x6672, 0x6539, 0x6673, -/* 3C48 */ 0x6674, 0x4262, 0x6675, 0x6676, 0x5668, 0x6677, 0xFFFD, 0x6678, -/* 3C50 */ 0x3947, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C58 */ 0x773B, 0x773A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x773E, 0x773C, -/* 3C60 */ 0x3A21, 0xFFFD, 0x773F, 0xFFFD, 0x7740, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C68 */ 0x7742, 0x7741, 0x7744, 0xFFFD, 0xFFFD, 0x7743, 0xFFFD, 0xFFFD, -/* 3C70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7745, 0x7746, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C78 */ 0xFFFD, 0x7747, 0xFFFD, 0x4B68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C80 */ 0x385F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7754, -/* 3C88 */ 0xFFFD, 0x7755, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7756, 0xFFFD, -/* 3C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7758, 0xFFFD, 0x775A, 0xFFFD, 0x7757, -/* 3C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CA0 */ 0xFFFD, 0x775B, 0xFFFD, 0x7759, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5757, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CB0 */ 0x775C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x775D, -/* 3CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x775E, 0x775F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CC0 */ 0x7760, 0x5B4B, 0xFFFD, 0xFFFD, 0x582A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6577, 0x396D, 0xFFFD, -/* 3CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F7D, 0x3B6A, 0x7749, 0x4647, 0x7748, -/* 3CD8 */ 0xFFFD, 0x774A, 0x774C, 0x774B, 0xFFFD, 0xFFFD, 0xFFFD, 0x774D, -/* 3CE0 */ 0xFFFD, 0x4E3A, 0xFFFD, 0x774E, 0xFFFD, 0xFFFD, 0x4427, 0x5363, -/* 3CE8 */ 0xFFFD, 0xFFFD, 0x764F, 0xFFFD, 0x4233, 0x7650, 0xFFFD, 0xFFFD, -/* 3CF0 */ 0x7651, 0x7652, 0x7653, 0x7654, 0xFFFD, 0xFFFD, 0x7656, 0xFFFD, -/* 3CF8 */ 0x312B, 0x7657, 0xFFFD, 0x7658, 0x7659, 0x765A, 0xFFFD, 0x765B, -/* 3D00 */ 0x765C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x765D, 0x765E, 0x4F4A, -/* 3D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4070, -/* 3D10 */ 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0xFFFD, 0x766A, 0xFFFD, -/* 3D18 */ 0x766B, 0x766C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E28, 0xFFFD, 0x7675, 0x7676, 0x7677, -/* 3D28 */ 0x7678, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x487A, 0x7679, -/* 3D30 */ 0x767A, 0x767B, 0x767C, 0xFFFD, 0xFFFD, 0x767D, 0x767E, 0x7721, -/* 3D38 */ 0x7722, 0x7723, 0x7724, 0x7725, 0xFFFD, 0xFFFD, 0x7726, 0x7727, -/* 3D40 */ 0x7728, 0x316E, 0x7729, 0x772A, 0x772B, 0xFFFD, 0xFFFD, 0x772C, -/* 3D48 */ 0x772D, 0x415B, 0x772E, 0xFFFD, 0xFFFD, 0x772F, 0x4471, 0x702F, -/* 3D50 */ 0x3C26, 0x7030, 0x4379, 0xFFFD, 0x4538, 0x513B, 0xFFFD, 0x7031, -/* 3D58 */ 0x7032, 0x7033, 0x7034, 0x7035, 0x513C, 0xFFFD, 0x516C, 0xFFFD, -/* 3D60 */ 0x7037, 0x7036, 0x5427, 0xFFFD, 0x4D52, 0x7038, 0x703A, 0x7039, -/* 3D68 */ 0x703B, 0x703C, 0xFFFD, 0xFFFD, 0x386B, 0x703D, 0x3A68, 0xFFFD, -/* 3D70 */ 0x703E, 0x703F, 0x3E69, 0x7040, 0x366C, 0x7041, 0x7042, 0x7043, -/* 3D78 */ 0x7044, 0x4835, 0x7045, 0x7046, 0xFFFD, 0x7047, 0x4574, 0xFFFD, -/* 3D80 */ 0x7048, 0xFFFD, 0xFFFD, 0xFFFD, 0x7049, 0xFFFD, 0x704A, 0x773D, -/* 3D88 */ 0xFFFD, 0x704B, 0x704C, 0x704D, 0xFFFD, 0x704E, 0xFFFD, 0xFFFD, -/* 3D90 */ 0xFFFD, 0xFFFD, 0x704F, 0x3A57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7058, 0xFFFD, 0xFFFD, 0x5325, -/* 3DA0 */ 0x7057, 0xFFFD, 0x7059, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x753A, 0x4239, 0xFFFD, -/* 3DB0 */ 0xFFFD, 0x7764, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7765, 0x7766, -/* 3DB8 */ 0xFFFD, 0xFFFD, 0x7767, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DC0 */ 0xFFFD, 0x7768, 0x4234, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x776A, 0xFFFD, 0x776B, 0xFFFD, -/* 3DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4273, 0x7470, 0xFFFD, -/* 3DD8 */ 0xFFFD, 0xFFFD, 0x746F, 0xFFFD, 0xFFFD, 0x4269, 0xFFFD, 0x7761, -/* 3DE0 */ 0x7762, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B46, 0xFFFD, -/* 3DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5964, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A72, -/* 3DF0 */ 0x4068, 0x7024, 0xFFFD, 0x3A5A, 0xFFFD, 0xFFFD, 0x472D, 0xFFFD, -/* 3DF8 */ 0xFFFD, 0xFFFD, 0x442C, 0xFFFD, 0xFFFD, 0x776C, 0x776D, 0x776E, -/* 3E00 */ 0xFFFD, 0x7770, 0x776F, 0xFFFD, 0x7771, 0xFFFD, 0xFFFD, 0x7774, -/* 3E08 */ 0xFFFD, 0x7773, 0xFFFD, 0x7772, 0x7775, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E10 */ 0xFFFD, 0x7776, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D69, 0xFFFD, 0x6D6A, 0x6D6B, 0xFFFD, -/* 3E20 */ 0x763C, 0x763D, 0xFFFD, 0x763E, 0x3626, 0xFFFD, 0x583E, 0xFFFD, -/* 3E28 */ 0xFFFD, 0x3944, 0xFFFD, 0xFFFD, 0xFFFD, 0x583B, 0xFFFD, 0x5C31, -/* 3E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A73, 0xFFFD, -/* 3E38 */ 0x7777, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E40 */ 0xFFFD, 0xFFFD, 0x7778, 0xFFFD, 0xFFFD, 0x7779, 0xFFFD, 0xFFFD, -/* 3E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x777B, 0xFFFD, 0x777A, -/* 3E50 */ 0xFFFD, 0x3147, 0xFFFD, 0x777C, 0x777D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E58 */ 0xFFFD, 0xFFFD, 0x777E, 0x466B, 0x6C34, 0x335D, 0x7633, 0xFFFD, -/* 3E60 */ 0xFFFD, 0x7634, 0x4164, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E68 */ 0xFFFD, 0x4823, 0x763B, 0x417A, 0x3928, 0x6D68, 0xFFFD, 0xFFFD, -/* 3E70 */ 0xFFFD, 0x396A, 0x595F, 0x2321, 0x2322, 0x2323, 0x2167, 0x2169, -/* 3E78 */ 0x216A, 0xFFFD, 0x237E, 0xFFFD, 0x2324, -/* End of table Total Length = 0x417A * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/jis0201.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/jis0201.uf deleted file mode 100644 index ee00d96e19e..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/jis0201.uf +++ /dev/null @@ -1,94 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 005B - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 005D - srcEnd = 007D - destBegin = 005D -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = FF61 - srcEnd = FF9F - destBegin = 00A1 -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 00A5 - destBegin = 005C -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 203E - destBegin = 007E -End of Item 0004 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0000 */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x2000, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x005D, 0x007D, 0x005D, -/* 0002 */ 0xFF61, 0xFF9F, 0x00A1, -/* 0003 */ 0x00A5, 0x0000, 0x005C, -/* 0004 */ 0x203E, 0x0000, 0x007E, -/*-------------------------------------------------------*/ -/* Offset=0x0015 Start of MappingTable */ - -/* End of table Total Length = 0x0015 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/jis0208.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/jis0208.uf deleted file mode 100644 index 4e57682f4cb..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/jis0208.uf +++ /dev/null @@ -1,6544 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = 2621 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = 2632 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = 2641 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = 2652 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0410 - srcEnd = 0415 - destBegin = 2721 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0416 - srcEnd = 042F - destBegin = 2728 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0430 - srcEnd = 0435 - destBegin = 2751 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0436 - srcEnd = 044F - destBegin = 2758 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 3008 - srcEnd = 3011 - destBegin = 2152 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = 2421 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 30A1 - srcEnd = 30F6 - destBegin = 2521 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = FF10 - srcEnd = FF19 - destBegin = 2330 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = FF21 - srcEnd = FF3A - destBegin = 2341 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = FF41 - srcEnd = FF5A - destBegin = 2361 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 005C - destBegin = 2140 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 00A2 - srcEnd = 00B6 - mappingOffset = 0000 - Mapping = - 2171 2172 FFFD FFFD FFFD 2178 212F FFFD - FFFD FFFD 224C FFFD FFFD FFFD 216B 215E - FFFD FFFD 212D FFFD 2279 -End of Item 000F - -Begin of Item 0010 - Format 2 - srcBegin = 00D7 - destBegin = 215F -End of Item 0010 - -Begin of Item 0011 - Format 2 - srcBegin = 00F7 - destBegin = 2160 -End of Item 0011 - -Begin of Item 0012 - Format 2 - srcBegin = 0401 - destBegin = 2727 -End of Item 0012 - -Begin of Item 0013 - Format 2 - srcBegin = 0451 - destBegin = 2757 -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 2010 - srcEnd = 203B - mappingOffset = 0015 - Mapping = - 213E FFFD FFFD FFFD FFFD 213D 2142 FFFD - 2146 2147 FFFD FFFD 2148 2149 FFFD FFFD - 2277 2278 FFFD FFFD FFFD 2145 2144 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2273 FFFD 216C 216D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2228 -End of Item 0014 - -Begin of Item 0015 - Format 2 - srcBegin = 2103 - destBegin = 216E -End of Item 0015 - -Begin of Item 0016 - Format 2 - srcBegin = 212B - destBegin = 2272 -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 2190 - srcEnd = 2193 - mappingOffset = 0041 - Mapping = - 222B 222C 222A 222D -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 21D2 - srcEnd = 21D4 - mappingOffset = 0045 - Mapping = - 224D FFFD 224E -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 2200 - srcEnd = 223D - mappingOffset = 0048 - Mapping = - 224F FFFD 225F 2250 FFFD FFFD FFFD 2260 - 223A FFFD FFFD 223B FFFD FFFD FFFD FFFD - FFFD FFFD 215D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2265 FFFD FFFD 2267 2167 FFFD - 225C FFFD FFFD FFFD FFFD FFFD FFFD 224A - 224B 2241 2240 2269 226A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2168 2268 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2266 -End of Item 0019 - -Begin of Item 001A - Format 2 - srcBegin = 2252 - destBegin = 2262 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 2260 - srcEnd = 226B - mappingOffset = 0086 - Mapping = - 2162 2261 FFFD FFFD FFFD FFFD 2165 2166 - FFFD FFFD 2263 2264 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 2282 - srcEnd = 2287 - mappingOffset = 0092 - Mapping = - 223E 223F FFFD FFFD 223C 223D -End of Item 001C - -Begin of Item 001D - Format 2 - srcBegin = 22A5 - destBegin = 225D -End of Item 001D - -Begin of Item 001E - Format 2 - srcBegin = 2312 - destBegin = 225E -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 2500 - srcEnd = 254B - mappingOffset = 0098 - Mapping = - 2821 282C 2822 282D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2823 FFFD FFFD 282E - 2824 FFFD FFFD 282F 2826 FFFD FFFD 2831 - 2825 FFFD FFFD 2830 2827 283C FFFD FFFD - 2837 FFFD FFFD 2832 2829 283E FFFD FFFD - 2839 FFFD FFFD 2834 2828 FFFD FFFD 2838 - 283D FFFD FFFD 2833 282A FFFD FFFD 283A - 283F FFFD FFFD 2835 282B FFFD FFFD 283B - FFFD FFFD 2840 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2836 -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 25A0 - srcEnd = 25A1 - mappingOffset = 00E4 - Mapping = - 2223 2222 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 25B2 - srcEnd = 25CF - mappingOffset = 00E6 - Mapping = - 2225 2224 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2227 2226 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2221 217E FFFD FFFD - FFFD 217B FFFD FFFD 217D 217C -End of Item 0021 - -Begin of Item 0022 - Format 2 - srcBegin = 25EF - destBegin = 227E -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 2605 - srcEnd = 2606 - mappingOffset = 0104 - Mapping = - 217A 2179 -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 0106 - Mapping = - 216A FFFD 2169 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 266A - srcEnd = 266F - mappingOffset = 0109 - Mapping = - 2276 FFFD FFFD 2275 FFFD 2274 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 3000 - srcEnd = 301C - mappingOffset = 010F - Mapping = - 2121 2122 2123 2137 FFFD 2139 213A 213B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2229 222E 214C 214D FFFD FFFD - FFFD FFFD FFFD FFFD 2141 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 309B - srcEnd = 309E - mappingOffset = 012C - Mapping = - 212B 212C 2135 2136 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 30FB - srcEnd = 30FE - mappingOffset = 0130 - Mapping = - 2126 213C 2133 2134 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 4E00 - srcEnd = 4E62 - mappingOffset = 0134 - Mapping = - 306C 437A FFFD 3C37 FFFD FFFD FFFD 4B7C - 3E66 3B30 3E65 323C FFFD 4954 4D3F FFFD - 5022 312F FFFD FFFD 336E 5023 4024 5242 - 3556 4A3A FFFD FFFD FFFD FFFD 3E67 FFFD - FFFD 4E3E FFFD FFFD FFFD FFFD 4A42 FFFD - FFFD FFFD 5024 FFFD FFFD 4366 FFFD FFFD - FFFD 5025 367A FFFD FFFD FFFD 5026 FFFD - 345D 4330 FFFD 3C67 5027 FFFD FFFD 5028 - FFFD FFFD 5029 4735 FFFD 3557 FFFD FFFD - FFFD FFFD FFFD 4737 FFFD 4663 3843 4B33 - FFFD FFFD FFFD FFFD FFFD 6949 502A 3E68 - 502B 3235 FFFD FFFD FFFD 3665 3870 4C69 - FFFD FFFD 5626 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 4E71 - srcEnd = 4F1D - mappingOffset = 0197 - Mapping = - 4D70 FFFD 467D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3425 FFFD 3535 - FFFD 502C FFFD FFFD 502D 4E3B FFFD 4D3D - 4168 502F 3B76 4673 FFFD 5032 FFFD FFFD - 313E 385F FFFD 385E 3066 FFFD FFFD 4F4B - 4F4A FFFD 3A33 3021 FFFD 5033 5034 5035 - 4B34 5036 FFFD 3872 3067 4B72 FFFD 357C - FFFD FFFD 357D 357E 4462 4E3C FFFD 5037 - FFFD FFFD 5038 FFFD FFFD 5039 FFFD FFFD - FFFD 3F4D FFFD FFFD FFFD FFFD FFFD 3D3A - 3F4E 503E FFFD 503C FFFD 503D 3558 FFFD - FFFD 3A23 3270 FFFD 503B 503A 4A29 FFFD - FFFD FFFD FFFD 3B46 3B45 423E 503F 4955 - 4067 FFFD FFFD FFFD 2138 5040 5042 FFFD - FFFD FFFD 4265 4E61 304A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5041 323E FFFD 3644 - FFFD 4367 FFFD FFFD FFFD 376F 5043 FFFD - FFFD FFFD 4724 FFFD FFFD FFFD FFFD FFFD - 346B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5044 304B FFFD FFFD 3860 346C 497A 4832 - 3559 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3271 FFFD 5067 4541 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 4F2F - srcEnd = 509A - mappingOffset = 0244 - Mapping = - 476C 5046 FFFD FFFD FFFD 483C FFFD 4E62 - FFFD 3F2D FFFD 3B47 FFFD 3B77 3240 FFFD - FFFD FFFD FFFD FFFD 4451 FFFD FFFD 4322 - 504A FFFD FFFD FFFD FFFD FFFD 304C 4463 - 3D3B 3A34 4D24 FFFD 424E FFFD 323F FFFD - 5049 FFFD 4D3E 5045 5047 3A6E 5048 5524 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5050 FFFD FFFD FFFD FFFD FFFD - 5053 5051 FFFD FFFD 3242 FFFD 4A3B 504B - FFFD FFFD FFFD FFFD 504F 3873 FFFD FFFD - 3B48 FFFD FFFD FFFD 3426 FFFD FFFD 5054 - FFFD 504C FFFD FFFD 4E63 FFFD 3B78 FFFD - 504D FFFD 5052 FFFD FFFD FFFD FFFD 5055 - FFFD 504E FFFD FFFD 3621 FFFD 304D FFFD - FFFD 3622 3241 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5525 FFFD 4B79 496E - 3874 FFFD FFFD FFFD FFFD FFFD 3F2F 4E37 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4A58 FFFD FFFD 3738 4225 3264 FFFD FFFD - FFFD FFFD FFFD 3D53 FFFD FFFD FFFD 5059 - FFFD 505E 505C FFFD FFFD 5057 FFFD FFFD - 422F 505A FFFD 505D 505B FFFD 4A5D FFFD - 5058 FFFD 3F2E FFFD 4B73 505F 5060 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3D24 - 506D FFFD FFFD FFFD 4750 FFFD 4936 5068 - FFFD 4A70 FFFD 3236 FFFD FFFD FFFD 506C - FFFD FFFD FFFD FFFD FFFD FFFD 5066 506F - FFFD FFFD 4152 FFFD 3844 FFFD 475C FFFD - 6047 FFFD 506E 455D FFFD 5063 FFFD 3876 - FFFD FFFD 3875 5061 FFFD FFFD FFFD FFFD - 3C5A FFFD 5069 FFFD 4A6F 434D 5065 3771 - FFFD 5062 506A 5064 4E51 506B 4F41 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3666 - FFFD FFFD 3770 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5070 FFFD FFFD FFFD - 5071 5075 304E FFFD FFFD FFFD FFFD FFFD - 4A50 5074 FFFD FFFD FFFD FFFD 5073 5077 - FFFD FFFD FFFD 5076 FFFD 4464 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3772 FFFD - FFFD FFFD FFFD FFFD FFFD 5078 FFFD FFFD - FFFD FFFD FFFD 3C45 FFFD 4226 4465 3676 - FFFD 5079 FFFD FFFD FFFD FFFD 3536 FFFD - FFFD 507A FFFD FFFD FFFD FFFD 507C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4B35 FFFD - FFFD FFFD 3766 FFFD FFFD FFFD FFFD FFFD - FFFD 3B31 4877 507B -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 50AC - srcEnd = 5384 - mappingOffset = 03B0 - Mapping = - 3A45 4D43 FFFD FFFD FFFD FFFD 507E 5123 - 507D 3A44 FFFD 3D7D FFFD FFFD FFFD FFFD - FFFD FFFD 3739 FFFD FFFD FFFD 5124 FFFD - FFFD 364F FFFD FFFD FFFD 5121 5122 FFFD - FFFD 462F FFFD 417C FFFD 3623 FFFD FFFD - FFFD 4B4D 5125 FFFD FFFD FFFD 4E3D FFFD - FFFD FFFD 5126 FFFD FFFD FFFD FFFD 5129 - FFFD 5127 FFFD 414E FFFD FFFD FFFD FFFD - FFFD 5128 512A FFFD FFFD FFFD FFFD FFFD - FFFD 512C FFFD FFFD FFFD 512B FFFD 4A48 - FFFD FFFD FFFD FFFD 3537 512E 512F FFFD - 322F FFFD FFFD FFFD FFFD 512D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3C74 FFFD - 5132 5131 5130 FFFD 5056 FFFD 5133 FFFD - FFFD FFFD FFFD 3D7E FFFD 5134 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4D25 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4C59 FFFD - FFFD FFFD FFFD 5136 FFFD FFFD 5135 5138 - 5137 FFFD FFFD 5139 513A 3074 FFFD 3835 - 373B 3D3C 437B 3624 4068 3877 FFFD 396E - 513C 4C48 4546 FFFD 3B79 FFFD 513B FFFD - 513D FFFD FFFD FFFD FFFD FFFD 455E FFFD - 3375 FFFD FFFD FFFD FFFD FFFD 513E FFFD - FFFD 467E FFFD FFFD 4134 5140 5141 482C - 3878 4F3B 5142 FFFD FFFD 3626 FFFD FFFD - FFFD 4A3C 4236 3671 4535 FFFD FFFD FFFD - 3773 FFFD FFFD FFFD 5143 FFFD 5144 FFFD - FFFD 4662 315F FFFD FFFD 5147 3A7D FFFD - 5146 3A46 FFFD 5148 666E 5149 4B41 514A - FFFD 514B 514C 3E69 FFFD 3C4C FFFD FFFD - FFFD FFFD FFFD FFFD 3427 FFFD 514F FFFD - 514D 4C3D 514E FFFD 495A 5150 5151 5152 - 455F FFFD FFFD FFFD 5156 5154 5155 5153 - 3A63 5157 4C6A 4E64 FFFD FFFD FFFD FFFD - FFFD 5158 FFFD FFFD FFFD FFFD FFFD FFFD - 4028 5159 3D5A FFFD FFFD 515A FFFD 437C - 4E3F 4560 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5245 FFFD FFFD FFFD FFFD 515B - 7425 3645 FFFD FFFD 515C 4B5E FFFD FFFD - FFFD FFFD 3D68 427C FFFD 515E 4664 FFFD - FFFD 515F FFFD FFFD 5160 332E FFFD FFFD - FFFD 5161 3627 FFFD 464C 317A 3D50 FFFD - FFFD 4821 5162 FFFD 4561 FFFD FFFD 3F4F - 5163 FFFD 4A2C 405A 3422 FFFD 3429 5164 - FFFD FFFD 5166 FFFD FFFD 373A FFFD FFFD - 5165 FFFD FFFD 4E73 FFFD FFFD FFFD FFFD - FFFD 3D69 FFFD FFFD FFFD FFFD FFFD FFFD - 483D 4A4C FFFD 5167 FFFD 4D78 5168 FFFD - FFFD FFFD 5169 FFFD 457E FFFD FFFD 516A - FFFD FFFD 4029 3A7E 3774 516B 3B49 396F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4466 - 516D FFFD FFFD 4227 FFFD FFFD 3A6F 516E - 516F 4130 FFFD 516C FFFD FFFD FFFD FFFD - 5171 FFFD 4B36 FFFD FFFD FFFD FFFD 3964 - FFFD FFFD 5170 FFFD FFFD FFFD FFFD 3775 - 3A5E 476D FFFD FFFD FFFD 5174 5172 FFFD - FFFD FFFD FFFD 497B 3E6A 517B 3364 5175 - 5173 414F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5177 FFFD 5176 FFFD FFFD FFFD 3344 - FFFD FFFD FFFD 3760 517C 4E2D FFFD FFFD - FFFD 5178 FFFD FFFD FFFD 517D 517A FFFD - 5179 FFFD FFFD FFFD FFFD FFFD FFFD 4E4F - FFFD FFFD FFFD 3879 3243 FFFD FFFD 4E74 - FFFD FFFD FFFD FFFD FFFD 3D75 4558 3965 - 5222 5223 FFFD FFFD FFFD 4E65 FFFD FFFD - 4F2B 5225 FFFD FFFD FFFD 387A FFFD FFFD - 5224 FFFD 332F FFFD FFFD 5226 FFFD 4B56 - FFFD 443C FFFD 4D26 FFFD 4A59 FFFD FFFD - FFFD 5227 FFFD FFFD FFFD FFFD 7055 FFFD - FFFD 4630 FFFD 5228 342A 4C33 FFFD FFFD - FFFD 3E21 5229 4A67 522D FFFD 402A 522A - 3650 FFFD 522B 342B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 372E 522E - FFFD 522F FFFD FFFD 5230 5231 3C5B FFFD - FFFD FFFD 387B 4C5E FFFD 4C68 4677 FFFD - FFFD 4A71 5232 FFFD 5233 FFFD FFFD FFFD - FFFD 5235 FFFD 5237 5236 FFFD FFFD FFFD - FFFD 5238 323D 4B4C FFFD 3A7C 5239 FFFD - FFFD 4159 FFFD FFFD 3E22 3629 FFFD 523A - FFFD FFFD FFFD FFFD FFFD FFFD 485B FFFD - FFFD FFFD FFFD 523B FFFD 523C FFFD 523D - FFFD FFFD FFFD FFFD 523E 4924 3668 3065 - FFFD FFFD FFFD 463F 523F 3D3D FFFD 4069 - FFFD 5241 5240 3E23 3861 5243 483E FFFD - FFFD 5244 FFFD FFFD FFFD 485C 4234 426E - 3628 FFFD FFFD 466E 4331 FFFD 476E FFFD - 4B4E FFFD 5246 FFFD 406A FFFD FFFD FFFD - FFFD FFFD 3735 FFFD FFFD 5247 FFFD FFFD - FFFD FFFD 5248 312C 3075 346D FFFD 4228 - 3551 4D71 FFFD 524B 3237 FFFD FFFD 524A - FFFD FFFD FFFD 362A FFFD FFFD 524C FFFD - 4C71 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 5396 - srcEnd = 5451 - mappingOffset = 0689 - Mapping = - 524D FFFD 4E52 FFFD 387C FFFD FFFD FFFD - FFFD 3836 524E FFFD FFFD FFFD FFFD 5250 - 524F FFFD 3F5F 3139 FFFD FFFD FFFD 315E - 5251 FFFD 5252 FFFD FFFD 3837 FFFD FFFD - 5253 FFFD FFFD FFFD FFFD 356E FFFD FFFD - FFFD FFFD FFFD FFFD 3B32 5254 FFFD FFFD - FFFD FFFD 4B74 3A35 355A 4D27 4150 483F - 3C7D FFFD FFFD FFFD FFFD FFFD 3D47 FFFD - 3C68 3C75 FFFD 3D76 FFFD 4840 FFFD FFFD - FFFD 5257 FFFD 3143 4151 387D 3845 3667 - FFFD FFFD 525B 4321 427E 362B 3E24 525C - 525A 3244 4266 3C38 3B4B 3126 FFFD FFFD - 3370 3966 3B4A FFFD 525D FFFD FFFD FFFD - FFFD FFFD FFFD 525E FFFD 3549 3346 FFFD - FFFD FFFD 3967 3548 445F 3125 4631 4C3E - 3921 4D79 4547 387E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 372F FFFD 5267 - FFFD 3663 4B4A FFFD FFFD FFFD FFFD FFFD - 485D FFFD FFFD 5266 FFFD 345E 5261 5262 - 5264 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5265 FFFD 355B 3F61 FFFD 4A2D 5263 525F - 3863 FFFD 5260 FFFD 4F24 FFFD FFFD FFFD - 4A72 FFFD 4468 3862 3970 FFFD FFFD FFFD - 5268 FFFD FFFD 465D -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 545F - srcEnd = 5492 - mappingOffset = 0745 - Mapping = - 526C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3C7E FFFD 3C76 FFFD FFFD FFFD FFFD - FFFD 526F 526D FFFD 4C23 FFFD 526A 5273 - 526E FFFD FFFD FFFD 5271 3846 4C3F FFFD - FFFD 5272 FFFD FFFD FFFD 5274 FFFD 5276 - FFFD FFFD FFFD FFFD 3A70 4F42 FFFD 526B - 5269 5275 FFFD 5270 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 54A2 - srcEnd = 54C9 - mappingOffset = 0779 - Mapping = - 5278 FFFD 5323 527A FFFD FFFD 527E FFFD - FFFD 5321 527B FFFD FFFD 533E FFFD FFFD - 3A69 3331 FFFD FFFD FFFD FFFD 5279 FFFD - FFFD FFFD 5325 3076 5324 FFFD 3025 494A - 5322 FFFD 527C FFFD FFFD 5277 527D 3A48 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 54D8 - srcEnd = 5516 - mappingOffset = 07A1 - Mapping = - 5326 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3077 532F FFFD FFFD 5327 5328 FFFD - 3E25 4B69 FFFD FFFD FFFD 532D 532C FFFD - FFFD FFFD 452F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 532E FFFD FFFD 532B FFFD FFFD - FFFD FFFD FFFD FFFD 3134 FFFD 3A36 3F30 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5329 - 4562 FFFD FFFD FFFD 532A FFFD 3022 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 552E - srcEnd = 5563 - mappingOffset = 07E0 - Mapping = - 5334 4D23 FFFD 3E27 FFFD 533A FFFD FFFD - FFFD FFFD 5339 5330 FFFD FFFD FFFD FFFD - 4243 FFFD 5331 FFFD FFFD FFFD 426F 5336 - 3E26 FFFD FFFD FFFD FFFD FFFD 5333 FFFD - FFFD 4C64 FFFD FFFD FFFD 373C FFFD FFFD - 5337 5338 FFFD FFFD FFFD FFFD 5335 533B - FFFD FFFD FFFD FFFD FFFD 5332 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 557B - srcEnd = 558B - mappingOffset = 0816 - Mapping = - 5341 5346 FFFD 5342 FFFD 533D FFFD FFFD - 5347 4131 FFFD FFFD 5349 FFFD 3922 533F - 437D -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 5598 - srcEnd = 55B6 - mappingOffset = 0827 - Mapping = - 5343 533C 342D FFFD 346E 3365 5344 5340 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3776 - 534A 5348 4153 354A 362C FFFD 5345 FFFD - 3674 FFFD FFFD FFFD FFFD FFFD 3144 -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 55C4 - srcEnd = 55C7 - mappingOffset = 0846 - Mapping = - 534E 534C FFFD 5427 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 55D4 - srcEnd = 55E4 - mappingOffset = 084A - Mapping = - 5351 FFFD FFFD FFFD FFFD FFFD 534B FFFD - 534F FFFD FFFD 534D FFFD FFFD FFFD 3B4C - 5350 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 55F7 - srcEnd = 561B - mappingOffset = 085B - Mapping = - 5353 FFFD 5358 FFFD FFFD FFFD 5356 5355 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4332 - FFFD FFFD 3245 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5352 FFFD 5354 - 3E28 3133 FFFD FFFD 5357 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 5629 - srcEnd = 5694 - mappingOffset = 0880 - Mapping = - 325E FFFD FFFD FFFD FFFD FFFD 5362 FFFD - 3E7C 535E FFFD 535C FFFD 535D FFFD 535F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 313D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4139 FFFD 5359 FFFD 535A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 337A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5361 FFFD FFFD FFFD 346F - FFFD 5364 5360 5363 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4A2E FFFD FFFD FFFD 4655 - FFFD 4838 FFFD FFFD FFFD FFFD FFFD 5366 - FFFD FFFD FFFD FFFD FFFD 5365 3345 FFFD - FFFD 5367 FFFD FFFD FFFD FFFD 536A FFFD - FFFD FFFD FFFD 5369 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 56A0 - srcEnd = 5751 - mappingOffset = 08EC - Mapping = - 5368 FFFD 4739 FFFD FFFD 536B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 536C FFFD - FFFD FFFD FFFD FFFD 536E FFFD 536D FFFD - FFFD FFFD FFFD FFFD 5370 FFFD FFFD FFFD - 5373 5371 536F 5372 FFFD FFFD FFFD FFFD - 5374 FFFD FFFD FFFD FFFD FFFD 5375 FFFD - FFFD 5376 FFFD 5377 FFFD FFFD FFFD 5378 - 5145 FFFD 3C7C 3B4D FFFD FFFD 3273 FFFD - 3078 FFFD FFFD 4344 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5379 FFFD - 3A24 FFFD 304F 3F5E FFFD FFFD FFFD FFFD - FFFD 537A 3847 FFFD FFFD 3971 FFFD 537C - 537B FFFD FFFD 4A60 537D FFFD FFFD FFFD - 5421 537E FFFD 5422 FFFD 5423 FFFD 3777 - FFFD FFFD 3160 5424 FFFD FFFD 5426 FFFD - 5425 FFFD FFFD FFFD 5428 FFFD FFFD 455A - FFFD FFFD FFFD FFFD FFFD FFFD 5429 3035 - 3A5F FFFD FFFD FFFD FFFD 373D FFFD FFFD - 434F FFFD FFFD FFFD FFFD FFFD FFFD 542A - 542B FFFD FFFD 542D FFFD FFFD FFFD FFFD - 542E FFFD 3A64 FFFD FFFD FFFD FFFD 3651 - FFFD FFFD 4B37 FFFD FFFD FFFD 542C 542F - 3A41 3923 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 5761 - srcEnd = 576A - mappingOffset = 099E - Mapping = - 5433 FFFD FFFD 3A25 FFFD 4333 FFFD FFFD - 5430 445A -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 577F - srcEnd = 5793 - mappingOffset = 09A8 - Mapping = - 5434 FFFD FFFD 3F62 FFFD FFFD FFFD FFFD - FFFD 5432 5435 FFFD 373F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5436 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 57A0 - srcEnd = 57B3 - mappingOffset = 09BD - Mapping = - 5437 FFFD 3924 3340 5439 FFFD FFFD FFFD - FFFD FFFD 543A FFFD FFFD FFFD FFFD FFFD - 543B FFFD FFFD 5438 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 57C0 - srcEnd = 57E3 - mappingOffset = 09D1 - Mapping = - 5431 FFFD FFFD 543C FFFD FFFD 543D FFFD - FFFD FFFD FFFD 4B64 FFFD FFFD 3E6B FFFD - FFFD FFFD 543F 5440 543E FFFD 5442 FFFD - FFFD FFFD FFFD FFFD 4738 FFFD FFFD 3068 - 4956 FFFD FFFD 5443 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 57F4 - srcEnd = 5885 - mappingOffset = 09F5 - Mapping = - 3E7D FFFD FFFD 3C39 FFFD 475D 3470 FFFD - 3A6B FFFD FFFD FFFD 4B59 FFFD 4632 FFFD - FFFD 3778 424F FFFD FFFD FFFD 5441 5444 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4244 FFFD FFFD FFFD 5445 FFFD FFFD - FFFD 5446 FFFD FFFD FFFD 5448 FFFD FFFD - 4469 FFFD FFFD FFFD FFFD FFFD 342E FFFD - FFFD FFFD FFFD 7421 3161 4A73 FFFD FFFD - 3E6C 4548 FFFD FFFD FFFD FFFD 3A66 FFFD - FFFD 544E FFFD FFFD 4A3D 4E5D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3274 544A - FFFD FFFD FFFD FFFD FFFD 413A 544D FFFD - 4563 FFFD FFFD 4549 4564 4839 444D FFFD - FFFD FFFD 3A49 FFFD FFFD FFFD 5449 FFFD - FFFD FFFD FFFD FFFD FFFD 3176 FFFD 4536 - FFFD FFFD FFFD FFFD 544B FFFD 5447 FFFD - FFFD 3F50 FFFD FFFD FFFD 544F FFFD FFFD - FFFD FFFD 3D4E FFFD FFFD FFFD FFFD 362D - FFFD 5450 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 5893 - srcEnd = 5A49 - mappingOffset = 0A87 - Mapping = - 4A68 FFFD FFFD FFFD 417D FFFD FFFD FFFD - FFFD 4446 FFFD FFFD 5452 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4B4F FFFD FFFD - 5453 FFFD FFFD 5458 FFFD FFFD FFFD FFFD - 4A2F FFFD FFFD FFFD FFFD 5457 5451 5454 - 5456 FFFD FFFD 3A26 FFFD FFFD 4A49 FFFD - FFFD FFFD 5459 FFFD 4345 FFFD FFFD 3275 - FFFD 3E6D FFFD FFFD FFFD FFFD 545B FFFD - 545A FFFD 3968 FFFD 545C 545E 545D FFFD - FFFD 5460 FFFD 5455 5462 FFFD FFFD FFFD - FFFD 5461 545F FFFD FFFD FFFD FFFD FFFD - 3B4E 3F51 FFFD 4154 5463 403C 306D 4764 - FFFD FFFD FFFD FFFD 445B FFFD 5465 5464 - 5466 5467 5468 FFFD FFFD FFFD FFFD 5469 - FFFD FFFD FFFD FFFD FFFD FFFD 4A51 546A - FFFD FFFD FFFD FFFD 3246 546B FFFD FFFD - FFFD FFFD 4D3C 3330 FFFD 5249 3D48 423F - 546C 4C6B FFFD FFFD FFFD FFFD FFFD 4C34 - FFFD FFFD 546E FFFD 4267 FFFD 4537 4240 - 4957 546F 5470 317B FFFD FFFD 3C3A 5471 - FFFD FFFD FFFD FFFD 3050 5472 FFFD FFFD - FFFD FFFD FFFD 5473 FFFD FFFD FFFD FFFD - FFFD 3162 FFFD FFFD 3471 4660 4A74 FFFD - FFFD FFFD FFFD 5477 4155 5476 3740 FFFD - FFFD 4B5B 5475 FFFD 4565 5479 FFFD 5478 - FFFD FFFD FFFD FFFD FFFD 547B FFFD 547A - FFFD FFFD 317C FFFD 547C 3E29 547E 4325 - FFFD 547D FFFD 4A33 FFFD FFFD FFFD FFFD - 3D77 455B FFFD FFFD FFFD 5521 FFFD FFFD - FFFD FFFD 3925 FFFD FFFD FFFD 5522 4721 - 485E 4C51 FFFD FFFD FFFD FFFD FFFD 4725 - FFFD FFFD 552B FFFD FFFD FFFD FFFD FFFD - 3538 FFFD FFFD 4D45 FFFD FFFD 4C2F FFFD - 562C FFFD 5523 FFFD FFFD FFFD FFFD FFFD - 5526 FFFD 4245 FFFD FFFD 4B38 FFFD FFFD - FFFD 454A FFFD FFFD FFFD FFFD FFFD 5527 - FFFD FFFD FFFD FFFD FFFD FFFD 4B65 FFFD - 3A4A FFFD FFFD 3E2A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5528 FFFD FFFD 3B50 FFFD - 3B4F FFFD FFFD FFFD FFFD 3039 3848 FFFD - 402B 3051 FFFD FFFD FFFD FFFD 552C 552D - FFFD 552A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3138 342F FFFD 5529 FFFD 4C45 - 4931 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3028 FFFD FFFD FFFD FFFD - 3079 FFFD FFFD FFFD 3B51 FFFD 3052 FFFD - 3023 FFFD FFFD FFFD FFFD FFFD 5532 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5530 FFFD - FFFD FFFD FFFD FFFD FFFD 4C3C FFFD 5533 - FFFD 5531 FFFD FFFD 552F 3F31 FFFD FFFD - FFFD FFFD 552E FFFD FFFD FFFD 4A5A FFFD - FFFD FFFD FFFD FFFD 3864 FFFD FFFD FFFD - FFFD FFFD 5537 5538 FFFD FFFD FFFD FFFD - FFFD 3E2B FFFD FFFD FFFD 5534 4F2C FFFD - FFFD FFFD FFFD 474C FFFD FFFD 5536 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 5A5A - srcEnd = 5A6C - mappingOffset = 0C3E - Mapping = - 3A27 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5539 FFFD FFFD FFFD 4958 FFFD FFFD FFFD - 553A FFFD 5535 -End of Item 003F - -Begin of Item 0040 - Format 2 - srcBegin = 5A7F - destBegin = 4C3B -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 5A92 - srcEnd = 5A9B - mappingOffset = 0C51 - Mapping = - 475E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 553B 4932 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 5ABC - srcEnd = 5AE9 - mappingOffset = 0C5B - Mapping = - 553C 5540 553D FFFD FFFD 3247 553F FFFD - FFFD FFFD FFFD FFFD FFFD 3C3B FFFD 553E - 3779 FFFD FFFD FFFD 554C FFFD FFFD FFFD - FFFD FFFD 5545 5542 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4364 FFFD 5541 - FFFD FFFD 5543 FFFD FFFD 5544 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 5AFA - srcEnd = 5AFB - mappingOffset = 0C89 - Mapping = - 5546 5547 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 5B09 - srcEnd = 5B16 - mappingOffset = 0C8B - Mapping = - 3472 FFFD 5549 5548 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 554A -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 5B22 - srcEnd = 5C79 - mappingOffset = 0C99 - Mapping = - 3E6E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 554D FFFD 445C FFFD FFFD FFFD 3145 FFFD - 554B FFFD FFFD FFFD 554E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 554F FFFD 5552 FFFD - FFFD 5550 FFFD 5551 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3B52 5553 - FFFD FFFD 3926 5554 FFFD 3B7A 4238 FFFD - 5555 5556 3B5A 3927 FFFD 4C52 FFFD FFFD - FFFD 3528 3849 5557 3358 FFFD FFFD 5558 - FFFD 4239 FFFD FFFD FFFD FFFD 5559 5623 - FFFD 555A FFFD 555B FFFD FFFD 555C FFFD - 555E FFFD FFFD FFFD FFFD FFFD 555F FFFD - FFFD 5560 FFFD 4270 FFFD 3127 3C69 3042 - FFFD 4157 3430 3C35 FFFD 3928 FFFD FFFD - FFFD FFFD FFFD 4566 FFFD 3D21 3431 4368 - 446A 3038 3539 4A75 FFFD 3C42 FFFD FFFD - 3552 406B 3C3C 4D28 5561 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 355C FFFD 3A4B FFFD - FFFD 3332 3163 3E2C 3248 FFFD 5562 4D46 - FFFD FFFD FFFD FFFD FFFD 3D49 FFFD FFFD - 3C64 5563 3473 4652 4C29 5564 FFFD 5565 - FFFD FFFD 4959 FFFD FFFD FFFD 5567 FFFD - 3428 3677 5566 FFFD FFFD FFFD FFFD FFFD - FFFD 3432 FFFD 3F32 556B 3B21 FFFD 3249 - 556A FFFD 5568 556C 5569 472B 5C4D 3F33 - FFFD 556D FFFD FFFD 4E40 FFFD 556E FFFD - FFFD 5570 FFFD 437E 556F FFFD 4023 FFFD - 3B7B FFFD FFFD FFFD 4250 3C77 FFFD 4975 - 406C FFFD 3C4D 5571 3E2D 5572 5573 3053 - 423A 3F52 FFFD 5574 4633 3E2E FFFD 3E2F - FFFD 5575 FFFD FFFD 406D FFFD FFFD FFFD - 3E30 FFFD FFFD FFFD FFFD FFFD 5576 FFFD - 5577 FFFD 4C60 FFFD FFFD FFFD 5578 FFFD - FFFD FFFD FFFD 3646 FFFD FFFD FFFD 3D22 - FFFD FFFD FFFD FFFD FFFD FFFD 5579 557A - 3C5C 3F2C 4674 3F54 4878 4722 3649 557B - FFFD FFFD FFFD 356F 557C FFFD 367E FFFD - 464F 3230 FFFD 3B53 557D 5622 5621 367D - FFFD 557E FFFD 4538 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4230 FFFD 454B 3C48 - FFFD FFFD 4158 4D7A FFFD FFFD FFFD FFFD - FFFD FFFD 5624 FFFD 5625 4656 FFFD 3B33 - FFFD FFFD FFFD FFFD 5627 FFFD FFFD 5628 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 5C8C - srcEnd = 5C94 - mappingOffset = 0DF1 - Mapping = - 5629 FFFD FFFD FFFD 3474 562A FFFD FFFD - 562B -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 5CA1 - srcEnd = 5CC7 - mappingOffset = 0DFA - Mapping = - 322C FFFD FFFD FFFD FFFD FFFD FFFD 413B - 3464 FFFD 562D 4C28 FFFD FFFD FFFD FFFD - 4252 FFFD 3359 FFFD FFFD 562F 5631 345F - FFFD FFFD 562E 5630 FFFD 5633 FFFD FFFD - FFFD FFFD FFFD FFFD 5632 FFFD 5634 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 5CD9 - srcEnd = 5D29 - mappingOffset = 0E21 - Mapping = - 5635 FFFD FFFD FFFD FFFD FFFD FFFD 463D - 362E FFFD FFFD FFFD FFFD FFFD FFFD 3265 - 5636 563B FFFD FFFD 5639 FFFD 4A77 4A76 - FFFD FFFD FFFD FFFD FFFD 4567 FFFD FFFD - FFFD 5638 3D54 FFFD 5637 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3F72 FFFD - FFFD FFFD 563C FFFD FFFD 3A6A FFFD FFFD - 5642 FFFD FFFD 5643 563D 3333 563E 5647 - 5646 5645 5641 FFFD FFFD FFFD 5640 FFFD - FFFD 5644 FFFD FFFD FFFD FFFD FFFD FFFD - 4A78 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 5D4B - srcEnd = 5D5C - mappingOffset = 0E72 - Mapping = - 564B 5648 FFFD 564A FFFD 4D72 FFFD 5649 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 563F -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 5D69 - srcEnd = 5D76 - mappingOffset = 0E84 - Mapping = - 3F73 FFFD FFFD 564C FFFD FFFD 3A37 FFFD - FFFD FFFD 564D FFFD FFFD 564E -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 5D82 - srcEnd = 5D90 - mappingOffset = 0E92 - Mapping = - 5651 FFFD 5650 FFFD FFFD 564F FFFD FFFD - FFFD 4568 563A FFFD FFFD FFFD 5657 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 5D9D - srcEnd = 5DBD - mappingOffset = 0EA1 - Mapping = - 5653 FFFD FFFD FFFD FFFD 5652 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5654 - FFFD 5655 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5658 FFFD FFFD 4E66 FFFD 5659 - 5656 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 5DC9 - srcEnd = 5E64 - mappingOffset = 0EC2 - Mapping = - 565A FFFD FFFD 3460 565B FFFD FFFD FFFD - FFFD 565D 565C FFFD FFFD 565E FFFD FFFD - FFFD FFFD 565F FFFD 406E 3D23 FFFD FFFD - 3D64 FFFD 4163 FFFD 3929 3A38 392A 3570 - FFFD FFFD 5660 FFFD FFFD 3A39 FFFD FFFD - 384A 5661 4C26 4743 5662 FFFD 392B FFFD - FFFD FFFD 342C FFFD 4327 3652 FFFD FFFD - FFFD 3B54 495B FFFD FFFD 4841 FFFD FFFD - FFFD FFFD 5663 3475 FFFD FFFD FFFD FFFD - 5666 FFFD FFFD FFFD FFFD 4421 FFFD FFFD - 5665 5664 5667 FFFD 446B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3F63 FFFD FFFD FFFD - FFFD FFFD 3B55 FFFD 404A FFFD 4253 3522 - FFFD FFFD 4422 FFFD FFFD 5668 5669 3E6F - FFFD FFFD FFFD FFFD 4B39 FFFD FFFD 566C - FFFD FFFD 566B 566A 497D FFFD 5673 FFFD - FFFD FFFD FFFD 4B5A FFFD 566D FFFD FFFD - FFFD FFFD FFFD 566F 4B6B FFFD 566E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5670 FFFD - 4828 5671 4A3E 5672 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 5E72 - srcEnd = 5FFF - mappingOffset = 0F5E - Mapping = - 3433 4A3F 472F 5674 5675 FFFD 392C 3434 - 5676 3838 4D44 4D29 3476 5678 FFFD 4423 - FFFD 392D 3E31 FFFD FFFD 485F FFFD FFFD - 3E32 FFFD FFFD FFFD FFFD 3D78 FFFD FFFD - FFFD FFFD FFFD 446C 4A79 4539 FFFD FFFD - 392E FFFD 495C FFFD FFFD FFFD 5679 FFFD - FFFD FFFD FFFD FFFD 4559 3A42 FFFD FFFD - FFFD 384B FFFD 446D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3043 3D6E 392F 4D47 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 567A - 567B 4751 FFFD FFFD FFFD FFFD 567C 4E77 - 4F2D FFFD FFFD FFFD FFFD 567E 567D FFFD - FFFD 3347 FFFD FFFD 5721 FFFD FFFD FFFD - 5724 5725 FFFD 5723 FFFD 4940 3E33 5727 - 5726 5722 FFFD FFFD FFFD FFFD 5728 5729 - FFFD FFFD 572A FFFD FFFD FFFD 572D 572B - FFFD 572C 572E FFFD 3164 446E 572F FFFD - 377A 3276 4736 FFFD 5730 467B FFFD 4A5B - FFFD 5731 4F2E FFFD FFFD FFFD FFFD 5732 - 4A40 5735 5021 5031 FFFD 3C30 4675 5736 - FFFD 355D 4424 307A 5737 4A26 3930 FFFD - FFFD 4350 FFFD FFFD FFFD 446F FFFD FFFD - FFFD FFFD FFFD 4C6F 3839 384C FFFD 5738 - FFFD FFFD FFFD 5739 FFFD 573F FFFD 3C65 - FFFD FFFD FFFD 4425 FFFD 362F 573A FFFD - FFFD FFFD 492B FFFD 4346 FFFD FFFD 573B - FFFD FFFD FFFD FFFD FFFD FFFD 573C FFFD - 3630 FFFD 573D FFFD 573E FFFD FFFD 5740 - FFFD 4576 FFFD FFFD 5741 5742 FFFD 5743 - FFFD FFFD 5734 5733 FFFD FFFD FFFD 5744 - 3741 FFFD FFFD FFFD 4927 FFFD FFFD 3A4C - 4937 4426 494B 5745 FFFD FFFD 3E34 3146 - FFFD 5746 FFFD FFFD FFFD 5747 FFFD 4C72 - FFFD FFFD 4860 FFFD FFFD 574A 317D 402C - 5749 5748 3742 4254 FFFD 574E 574C FFFD - 574B 4E27 3865 FFFD FFFD FFFD 3D79 574D - 454C 3D3E FFFD FFFD FFFD 4640 5751 5750 - FFFD FFFD FFFD FFFD 574F FFFD 5752 3866 - FFFD FFFD FFFD FFFD FFFD FFFD 5753 497C - 3D5B FFFD FFFD 5754 4879 FFFD FFFD FFFD - FFFD 4641 4427 FFFD FFFD FFFD FFFD 4530 - FFFD FFFD 5755 352B FFFD FFFD FFFD FFFD - FFFD 3F34 FFFD 492C FFFD FFFD FFFD FFFD - FFFD FFFD 3477 4726 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5756 3B56 4B3A 4B3B - FFFD FFFD 317E 575B FFFD FFFD 4369 FFFD - FFFD FFFD 5758 FFFD FFFD FFFD FFFD FFFD - FFFD 3277 FFFD FFFD FFFD FFFD 582D 575A - FFFD FFFD FFFD 4730 FFFD FFFD 5759 FFFD - FFFD 5757 FFFD 397A FFFD 575D -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 600E - srcEnd = 61D0 - mappingOffset = 10EC - Mapping = - 5763 5769 5761 FFFD 455C FFFD FFFD 5766 - 495D FFFD FFFD 5760 FFFD 5765 4E67 3B57 - FFFD FFFD 4255 575E FFFD FFFD FFFD 355E - 5768 402D 3165 5762 3278 5767 FFFD FFFD - FFFD 3631 FFFD 5764 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 576A FFFD FFFD FFFD - FFFD FFFD FFFD 576C 5776 5774 FFFD FFFD - 5771 FFFD FFFD FFFD 5770 4E78 FFFD 5772 - FFFD FFFD 3632 FFFD 3931 FFFD FFFD 3D7A - FFFD FFFD FFFD 5779 576B FFFD FFFD FFFD - FFFD 576F 575F FFFD 327A 5773 5775 4351 - FFFD FFFD 3A28 3238 576D 5778 5777 3633 - FFFD 4229 3366 FFFD FFFD FFFD FFFD 3743 - FFFD 576E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 577A FFFD 577D 5821 FFFD - FFFD FFFD FFFD 3C3D FFFD 5827 4470 577B - FFFD FFFD FFFD FFFD 5825 FFFD 3279 FFFD - 5823 5824 FFFD FFFD 577E 5822 FFFD FFFD - FFFD 3867 4D2A FFFD FFFD 3435 FFFD FFFD - 3159 5826 FFFD 473A 302D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4861 575C 582C 5830 - 4C65 FFFD 5829 FFFD FFFD FFFD 4569 582E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3E70 - 582F 4657 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4F47 FFFD 582B FFFD FFFD - FFFD FFFD 5831 FFFD 397B FFFD 404B FFFD - FFFD 3054 582A 5828 FFFD 415A FFFD FFFD - FFFD 577C 3B34 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4246 583D FFFD 415B 5838 FFFD - 5835 5836 FFFD 3C66 5839 583C FFFD FFFD - FFFD FFFD 5837 3D25 FFFD 583A FFFD FFFD - 5834 FFFD 4C7C 4C7B FFFD FFFD FFFD 583E - 583F 3055 FFFD FFFD FFFD FFFD FFFD 5833 - FFFD FFFD FFFD FFFD 3672 3026 FFFD FFFD - FFFD 3436 FFFD 583B FFFD FFFD FFFD FFFD - FFFD 5843 5842 FFFD FFFD FFFD 5847 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5848 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5846 5849 - 5841 5845 FFFD FFFD 584A FFFD 584B FFFD - FFFD 5840 3B7C FFFD 5844 4256 3932 5832 - 3F35 FFFD FFFD FFFD FFFD 5858 FFFD 4A69 - FFFD FFFD 584E 584F 5850 FFFD FFFD 5857 - FFFD 5856 FFFD FFFD 4B7D 3437 FFFD 5854 - FFFD 3745 3334 FFFD FFFD 5851 FFFD FFFD - 4E38 5853 3056 5855 FFFD 584C 5852 5859 - 3744 584D FFFD FFFD FFFD FFFD FFFD FFFD - 4D5D FFFD FFFD FFFD 4D2B FFFD FFFD FFFD - FFFD 585C FFFD FFFD 5860 FFFD FFFD FFFD - 417E FFFD 4E79 5861 FFFD FFFD 585E FFFD - 585B FFFD FFFD 585A 585F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4A30 FFFD - FFFD 4634 FFFD 3746 FFFD 5862 585D FFFD - 5863 FFFD FFFD FFFD 377B FFFD FFFD FFFD - 3231 FFFD FFFD FFFD 586B FFFD FFFD FFFD - 3438 FFFD FFFD FFFD FFFD 5869 FFFD FFFD - 586A 3A29 5868 5866 5865 586C 5864 586E - FFFD FFFD 327B -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 61E3 - srcEnd = 61E6 - mappingOffset = 12AF - Mapping = - 5870 FFFD FFFD 586F -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 61F2 - srcEnd = 629E - mappingOffset = 12B3 - Mapping = - 4428 FFFD 5873 FFFD 5871 5867 377C FFFD - 5872 FFFD 5876 5875 5877 5874 5878 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5879 587A - 4A6A FFFD 587C 587B 3D3F FFFD 402E 3266 - 327C FFFD 587D FFFD 303F FFFD FFFD FFFD - 404C 587E FFFD 6C43 5921 3761 FFFD 5922 - FFFD FFFD FFFD FFFD 406F FFFD FFFD FFFD - 5923 FFFD FFFD FFFD 5924 353A 5925 FFFD - 5926 5927 4257 FFFD FFFD FFFD 384D FFFD - FFFD 4C61 FFFD FFFD FFFD 4B3C 3D6A 5928 - FFFD FFFD FFFD FFFD FFFD 4070 6E3D 4862 - FFFD 3C6A FFFD 3A4D 5929 FFFD FFFD FFFD - FFFD 4247 FFFD 4A27 FFFD FFFD 4271 FFFD - FFFD 592C FFFD FFFD 592A FFFD 592D FFFD - FFFD 592B FFFD FFFD FFFD FFFD 592E FFFD - FFFD FFFD FFFD FFFD 4A31 FFFD FFFD 3037 - FFFD FFFD FFFD FFFD 495E FFFD FFFD 4863 - FFFD FFFD 592F FFFD 5932 3E35 353B FFFD - 5930 5937 3E36 FFFD FFFD FFFD FFFD 5931 - 4744 FFFD FFFD FFFD FFFD FFFD FFFD 4D5E - 5933 5934 5938 456A 5935 3933 405E FFFD - FFFD 5946 4834 FFFD 4272 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 62AB - srcEnd = 63FA - mappingOffset = 1360 - Mapping = - 4864 5A2D FFFD FFFD FFFD FFFD 4A7A FFFD - FFFD FFFD 4471 FFFD FFFD FFFD 4B75 FFFD - 593B 3221 436A FFFD FFFD FFFD FFFD 5944 - FFFD FFFD 4334 593E 5945 5940 5947 5943 - FFFD 5942 476F FFFD 593C 327D 593A 3571 - 4273 5936 FFFD FFFD 5939 3934 405B FFFD - 3E37 5941 4752 FFFD FFFD 3572 3348 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3367 3F21 5949 594E FFFD 594A FFFD - 377D FFFD 594F 3B22 3969 FFFD FFFD FFFD - FFFD FFFD FFFD 3D26 593D FFFD 3B7D 594C - FFFD FFFD FFFD FFFD 3B58 594D 3044 FFFD - FFFD 5948 FFFD FFFD FFFD FFFD 4429 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3573 FFFD - FFFD FFFD FFFD FFFD 3634 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 594B 3027 FFFD FFFD - 3A43 FFFD FFFD FFFD 3F36 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4472 - FFFD FFFD 4854 5951 415E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 422A FFFD - FFFD 3B2B 5952 FFFD 5954 5950 FFFD FFFD - FFFD FFFD 4A61 FFFD 443D FFFD FFFD FFFD - FFFD 415C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4A7B 3C4E 5960 FFFD - 595F FFFD FFFD 3F78 FFFD FFFD FFFD 377E - FFFD FFFD FFFD 5959 3E39 FFFD FFFD 4668 - 4731 FFFD FFFD FFFD FFFD 5957 FFFD FFFD - 415D FFFD FFFD FFFD FFFD 3C78 595C FFFD - FFFD 3E38 FFFD 5956 595B FFFD FFFD 4753 - FFFD FFFD FFFD 5955 FFFD 3721 FFFD FFFD - 335D FFFD FFFD FFFD 595D 4E2B 3A4E 4335 - 595A FFFD 405C FFFD 3935 3F64 3166 413C - 5958 3545 FFFD FFFD FFFD FFFD FFFD 3747 - FFFD 444F 595E FFFD FFFD FFFD FFFD FFFD - 415F FFFD FFFD 5961 FFFD 5963 FFFD FFFD - 4237 5969 FFFD 5964 FFFD FFFD 5966 FFFD - FFFD FFFD FFFD FFFD 4941 4473 FFFD 5967 - FFFD FFFD FFFD 4D2C FFFD FFFD FFFD 4D48 - 3439 FFFD FFFD FFFD FFFD FFFD 302E FFFD - 5965 FFFD FFFD FFFD FFFD FFFD 5962 FFFD - FFFD FFFD FFFD 3478 FFFD FFFD FFFD FFFD - FFFD 3167 FFFD 5968 FFFD FFFD FFFD 4D49 -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 6406 - srcEnd = 6442 - mappingOffset = 14B0 - Mapping = - 596C FFFD FFFD FFFD FFFD FFFD FFFD 423B - FFFD 5973 FFFD FFFD FFFD 596D FFFD FFFD - 596A 5971 FFFD FFFD FFFD FFFD 5953 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 596E FFFD 5972 FFFD FFFD FFFD 4842 456B - FFFD FFFD FFFD FFFD FFFD FFFD 596B FFFD - 596F FFFD FFFD FFFD 3748 FFFD FFFD FFFD - 3A71 FFFD FFFD FFFD 405D -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 644E - srcEnd = 6458 - mappingOffset = 14ED - Mapping = - 5977 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4526 -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 6467 - srcEnd = 6505 - mappingOffset = 14F8 - Mapping = - 5974 FFFD 4B60 FFFD FFFD FFFD FFFD FFFD - 5975 FFFD FFFD FFFD FFFD FFFD FFFD 5976 - FFFD 4C4E FFFD 4022 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3762 FFFD FFFD FFFD - FFFD 597D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3B35 597A FFFD 5979 FFFD - FFFD FFFD FFFD 4732 FFFD FFFD FFFD 4635 - FFFD FFFD FFFD FFFD FFFD 4531 597B FFFD - FFFD FFFD 597C FFFD 496F FFFD 4745 3B23 - FFFD 4071 FFFD 4B50 FFFD FFFD FFFD FFFD - FFFD FFFD 3349 FFFD 5A25 597E FFFD FFFD - FFFD FFFD 4D4A 5A27 FFFD FFFD 5A23 FFFD - 5A24 FFFD FFFD FFFD FFFD FFFD 4160 FFFD - FFFD FFFD FFFD 5A22 FFFD 593F FFFD FFFD - FFFD 5A26 FFFD 5A21 FFFD FFFD FFFD FFFD - FFFD 5A2B 5A2C 4527 5A2E FFFD FFFD 3B24 - 5A29 FFFD FFFD FFFD FFFD 353C FFFD FFFD - 5A2F FFFD 5A28 5A33 FFFD 5A32 FFFD 5A31 - FFFD FFFD FFFD 5A34 FFFD FFFD 5A36 3E71 - FFFD 5A35 FFFD FFFD FFFD FFFD 5A39 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 6518 - srcEnd = 66C9 - mappingOffset = 1597 - Mapping = - 5A37 FFFD FFFD FFFD 5A38 5970 FFFD FFFD - FFFD FFFD FFFD 5A3B 5A3A FFFD FFFD FFFD - FFFD FFFD 5978 5A3C 5A30 FFFD FFFD 3B59 - FFFD FFFD FFFD FFFD 5A3D 5A3E 5A40 5A3F - 5A41 327E FFFD 3936 FFFD FFFD 4A7C 402F - FFFD FFFD FFFD FFFD FFFD 384E FFFD FFFD - 5A43 FFFD FFFD FFFD FFFD 5A46 FFFD 4952 - FFFD 355F FFFD FFFD FFFD 5A45 5A44 4754 - 5A47 3635 FFFD FFFD FFFD 5A49 5A48 FFFD - FFFD FFFD 343A 3B36 FFFD FFFD 4658 FFFD - FFFD FFFD FFFD FFFD 3749 FFFD FFFD FFFD - 3F74 FFFD 5A4A FFFD 4030 4528 FFFD 495F - 5A4B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5A4C 5A4D FFFD FFFD FFFD 4A38 - 555D 4046 FFFD FFFD 494C FFFD 3A58 FFFD - 4865 4843 FFFD FFFD FFFD FFFD FFFD 454D - FFFD 4E41 FFFD 5A4F 3C50 FFFD FFFD 5A50 - FFFD 3036 FFFD FFFD 3654 404D FFFD 4960 - FFFD FFFD FFFD 5A51 3B42 4347 FFFD 3B5B - 3F37 FFFD FFFD FFFD FFFD FFFD FFFD 5A52 - FFFD 4A7D FFFD FFFD 3177 3B5C FFFD FFFD - FFFD 5A55 FFFD 5A53 5A56 4E39 5A54 FFFD - FFFD FFFD FFFD 407B 5A57 FFFD FFFD 4232 - FFFD FFFD 5A58 FFFD FFFD FFFD FFFD 347A - FFFD 5A5A FFFD 5A59 FFFD FFFD FFFD FFFD - 5A5B 5A5C 347B FFFD FFFD 467C 4336 356C - 3B5D 4161 FFFD FFFD 3D5C 3030 FFFD FFFD - FFFD 5A5D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3222 5A61 FFFD FFFD FFFD FFFD - FFFD FFFD 3937 5A60 FFFD FFFD 3A2B 3E3A - FFFD FFFD 5A5F FFFD 3E3B FFFD 4C40 3A2A - FFFD FFFD FFFD 3057 404E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5A66 FFFD FFFD 4031 - 3147 FFFD FFFD FFFD FFFD 3D55 FFFD 4B66 - 3A72 FFFD FFFD FFFD FFFD 3E3C FFFD 4027 - FFFD FFFD FFFD FFFD 5A65 5A63 5A64 FFFD - FFFD FFFD FFFD FFFD 436B FFFD FFFD 5B26 - FFFD 5A6A 3B7E 3938 5A68 FFFD FFFD FFFD - FFFD 5A69 FFFD 3F38 FFFD FFFD FFFD 5A67 - FFFD FFFD 3B2F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5A6C 5A6B 5A70 - FFFD FFFD 5A71 FFFD 5A6D FFFD 3322 5A6E - 5A6F 4855 FFFD FFFD FFFD FFFD 4961 374A - 5A72 FFFD FFFD FFFD 4032 FFFD 3E3D FFFD - FFFD FFFD 4352 FFFD FFFD FFFD FFFD FFFD - FFFD 3647 FFFD 5A73 5A77 FFFD FFFD 324B - 5A74 5A76 FFFD FFFD FFFD FFFD 5A75 FFFD - FFFD 3D6B FFFD FFFD FFFD FFFD 4348 3045 - 5A78 FFFD FFFD FFFD FFFD 5A79 FFFD FFFD - FFFD FFFD 442A FFFD FFFD FFFD 4E71 FFFD - FFFD FFFD FFFD 3B43 FFFD FFFD 4A6B FFFD - FFFD FFFD FFFD FFFD 4B3D FFFD FFFD FFFD - 5B22 5A7B FFFD FFFD 5A7E FFFD 5A7D FFFD - FFFD 5A7A FFFD FFFD 5B21 FFFD FFFD 465E - FFFD 5A7C -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 66D6 - srcEnd = 6804 - mappingOffset = 1749 - Mapping = - 5B23 FFFD FFFD 3D6C 5B24 FFFD 4D4B 4778 - FFFD FFFD 5B25 FFFD FFFD FFFD FFFD FFFD - 5B27 FFFD FFFD 5B28 FFFD FFFD FFFD FFFD - FFFD FFFD 5B29 FFFD 364A 3148 3939 5B2A - FFFD 5B2B 3D71 4162 FFFD FFFD 5258 413E - 413D 4258 3A47 FFFD FFFD 5072 FFFD FFFD - FFFD FFFD 376E 4D2D FFFD 4A7E FFFD 497E - FFFD 5B2C FFFD FFFD FFFD FFFD 3A73 443F - 5B2D 4F2F FFFD FFFD FFFD 4B3E FFFD 442B - 5B2E 347C FFFD FFFD FFFD FFFD FFFD FFFD - 5B2F 5B30 4C5A FFFD 4C24 4B76 4B5C 3B25 - 5B32 FFFD FFFD 3C6B FFFD FFFD 4B51 FFFD - 5B34 5B37 5B36 FFFD 3479 FFFD FFFD 3560 - FFFD 5B33 FFFD 5B35 FFFD FFFD FFFD FFFD - 5B38 FFFD FFFD 3F79 FFFD FFFD FFFD FFFD - 4D7B 3049 3A60 423C FFFD 3C5D FFFD FFFD - 3E73 FFFD FFFD 5B3B FFFD FFFD 454E FFFD - 5B39 422B 5B3A 3E72 4C5D 5B3C 5B3D 4D68 - FFFD FFFD FFFD FFFD 5B42 FFFD FFFD 393A - FFFD 4755 5B3F 456C 5A5E 5A62 FFFD 354F - FFFD 4747 FFFD FFFD FFFD FFFD 5B41 FFFD - 3E3E 4844 FFFD FFFD FFFD FFFD FFFD 5B47 - FFFD 487A FFFD 5B3E FFFD 5B44 5B43 FFFD - FFFD FFFD 404F FFFD FFFD FFFD FFFD 4B6D - FFFD 4E53 FFFD FFFD 4B67 FFFD 324C 3B5E - FFFD FFFD 4F48 5B46 3F75 FFFD FFFD FFFD - 5B45 FFFD FFFD 5B40 FFFD FFFD FFFD FFFD - FFFD 384F FFFD FFFD FFFD 5B4C 5B4A FFFD - 324D 5B48 5B4E 5B54 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4248 FFFD FFFD 4A41 FFFD - 5B56 FFFD FFFD FFFD 4922 FFFD FFFD FFFD - 5B55 4770 4B3F 343B FFFD 4077 3D40 FFFD - FFFD FFFD 4453 FFFD 4D2E FFFD FFFD 5B51 - 5B50 FFFD FFFD FFFD 5B52 FFFD 5B4F FFFD - FFFD 5B57 FFFD 5B4D FFFD FFFD 5B4B FFFD - 5B53 5B49 FFFD 436C FFFD 4C78 3C46 3A74 - FFFD FFFD FFFD FFFD FFFD 3A3A FFFD FFFD - 4B6F 3341 FFFD FFFD 444E 464A 3149 -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 6813 - srcEnd = 6867 - mappingOffset = 1878 - Mapping = - 4072 FFFD FFFD 4034 372A FFFD FFFD FFFD - FFFD FFFD FFFD 5B59 FFFD FFFD 393B 337C - FFFD FFFD FFFD FFFD FFFD FFFD 5B5B 3374 - 5B61 FFFD FFFD FFFD FFFD FFFD FFFD 5B5E - FFFD 4073 FFFD FFFD FFFD 334B 3A2C FFFD - FFFD 334A 3A4F FFFD FFFD 5B5C 3765 374B - 456D FFFD FFFD 5B5A FFFD 3046 FFFD FFFD - FFFD FFFD 5B5D 5B5F FFFD 364D 372C FFFD - 343C 354B FFFD FFFD FFFD FFFD 5B62 FFFD - FFFD 3A79 4B71 FFFD 3B37 FFFD FFFD FFFD - 5B63 FFFD FFFD FFFD 4930 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 6874 - srcEnd = 6A4B - mappingOffset = 18CD - Mapping = - 5B6F FFFD 3233 5B64 FFFD FFFD FFFD FFFD - FFFD FFFD 5B75 5B65 FFFD 4E42 FFFD 5B6C - FFFD 475F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5B74 FFFD 5B67 FFFD FFFD FFFD 3034 - 5B69 FFFD FFFD 393C FFFD FFFD FFFD 5B6B - FFFD 5B6A FFFD 5B66 5B71 FFFD 3E3F FFFD - FFFD FFFD 546D 3868 4D7C FFFD FFFD FFFD - FFFD 5B68 FFFD 4474 3323 3A2D FFFD 5B60 - FFFD 5B70 3361 FFFD FFFD 5B6E 5B72 FFFD - 456E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 347E FFFD 5C32 FFFD FFFD 4C49 5B77 347D - FFFD 5B7E FFFD FFFD FFFD FFFD 4B40 FFFD - 5C21 5C23 FFFD 5C27 5B79 FFFD 432A FFFD - FFFD FFFD FFFD 456F 5C2B 5B7C FFFD 5C28 - FFFD FFFD FFFD 5C22 FFFD FFFD FFFD FFFD - FFFD FFFD 3F39 5C2C FFFD FFFD 4033 FFFD - FFFD FFFD FFFD FFFD FFFD 5C2A 343D FFFD - FFFD FFFD FFFD FFFD 4F50 5B76 FFFD FFFD - 5C26 3058 FFFD FFFD 5B78 FFFD FFFD 4C3A - 5B7D 3F22 4447 5B73 FFFD FFFD 5C25 FFFD - FFFD FFFD FFFD FFFD FFFD 3F7A 5C2F 3371 - 3821 FFFD FFFD FFFD FFFD 5C31 5B7A 5C30 - FFFD 5C29 5B7B FFFD 5C2D FFFD 5C2E FFFD - FFFD FFFD FFFD FFFD 5C3F FFFD FFFD FFFD - 464E FFFD 5C24 FFFD FFFD 5C3B FFFD FFFD - FFFD 5C3D FFFD 4458 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4D4C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4976 - 5C38 424A FFFD FFFD FFFD 5C3E 413F FFFD - 5C35 5C42 5C41 FFFD 466F 5C40 466A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5C44 5C37 - FFFD 3648 5C3A 3D5D FFFD FFFD FFFD 4760 - 5C3C 364B FFFD 5C34 5C36 5C33 FFFD FFFD - 4F30 335A 5C39 FFFD FFFD 5C43 3335 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3A67 FFFD - FFFD FFFD 315D FFFD FFFD 5C54 FFFD FFFD - 4F31 5C57 FFFD FFFD FFFD FFFD FFFD 3F3A - 5C56 FFFD FFFD FFFD 5C55 FFFD FFFD FFFD - FFFD FFFD FFFD 5C52 FFFD FFFD FFFD FFFD - FFFD FFFD 5C46 FFFD FFFD 5C63 5C45 FFFD - 5C58 FFFD FFFD FFFD FFFD FFFD FFFD 5C50 - FFFD FFFD 5C4B 5C48 FFFD 5C49 FFFD 5C51 - FFFD FFFD FFFD 7422 FFFD FFFD 5C4E 393D - 4448 4164 5C4C FFFD 5C47 FFFD FFFD 5C4A - FFFD FFFD FFFD FFFD 4D4D 4B6A FFFD FFFD - FFFD 5C4F 5C59 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5C61 5C5A FFFD FFFD 5C67 - FFFD 5C65 FFFD FFFD FFFD FFFD 5C60 FFFD - FFFD FFFD FFFD FFFD FFFD 5C5F FFFD 4450 - FFFD 4165 FFFD 5C5D FFFD FFFD 5C5B FFFD - FFFD 5C62 FFFD FFFD FFFD FFFD 5C68 4875 - 5C6E FFFD FFFD FFFD FFFD FFFD 5C69 5C6C - 5C66 FFFD FFFD 4374 FFFD 4938 FFFD 5C5C - FFFD FFFD 5C64 3E40 FFFD 4C4F 5C78 5C6B - FFFD FFFD FFFD FFFD FFFD 3822 3223 335F - FFFD FFFD 5C53 FFFD FFFD FFFD FFFD FFFD - FFFD 3E41 5C70 FFFD 5C77 3C79 3372 FFFD - FFFD 432E FFFD FFFD FFFD FFFD FFFD FFFD - 5C6D FFFD FFFD 5C72 5C76 FFFD FFFD 3636 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 6A58 - srcEnd = 6A66 - mappingOffset = 1AA5 - Mapping = - 354C 5C74 FFFD FFFD FFFD FFFD FFFD 3521 - FFFD 464B 5C73 FFFD FFFD FFFD 5C75 -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 6A72 - srcEnd = 6AC3 - mappingOffset = 1AB4 - Mapping = - 5C6F FFFD FFFD FFFD FFFD FFFD 5C71 FFFD - FFFD FFFD FFFD FFFD FFFD 3360 4349 FFFD - FFFD FFFD 5C7C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5C7A 3869 FFFD 5C79 FFFD - FFFD FFFD FFFD FFFD FFFD 5D21 FFFD FFFD - FFFD FFFD 5B58 FFFD FFFD FFFD 5C7B FFFD - 5C7D 5C7E FFFD FFFD FFFD FFFD FFFD FFFD - 5D2C FFFD 5D28 FFFD 5B6D FFFD FFFD FFFD - FFFD 5D27 FFFD FFFD FFFD FFFD 5D26 FFFD - FFFD 5D23 FFFD FFFD FFFD FFFD FFFD 5C6A - 5D25 5D24 -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 6AD1 - srcEnd = 6AEA - mappingOffset = 1B06 - Mapping = - 5D2A FFFD 4F26 FFFD FFFD FFFD FFFD FFFD - FFFD 5D2D 367B FFFD FFFD 5D29 5D2B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4827 - FFFD 5D2E -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 6AFA - srcEnd = 6BDF - mappingOffset = 1B20 - Mapping = - 5D32 5D2F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4D73 5D30 FFFD FFFD FFFD FFFD - 5C5E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5D33 FFFD FFFD FFFD 5D34 FFFD FFFD FFFD - FFFD FFFD FFFD 3135 FFFD 5D36 3767 3C21 - FFFD 3655 FFFD FFFD FFFD 3224 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4D5F FFFD FFFD FFFD FFFD 5D38 5D37 5D3A - 353D FFFD FFFD 3656 343E FFFD FFFD FFFD - FFFD 5D3D FFFD FFFD FFFD 5D3C FFFD 5D3E - FFFD FFFD 324E FFFD 4337 FFFD 5D3F FFFD - FFFD 343F 5D41 FFFD FFFD FFFD FFFD 5D40 - FFFD 5D42 FFFD FFFD FFFD 5D43 FFFD 5D44 - 3B5F 4035 3A21 FFFD 4970 FFFD FFFD 4A62 - 4F44 FFFD FFFD FFFD FFFD 3B75 FFFD FFFD - FFFD 3A50 4E72 FFFD FFFD FFFD 5D45 5D46 - FFFD 3B60 FFFD FFFD FFFD 5D47 5D48 FFFD - FFFD 5D4A 5D49 FFFD 4B58 FFFD FFFD 3D5E - 3C6C 3B44 FFFD 5D4B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5D4D 3F23 FFFD 5D4C FFFD - FFFD FFFD FFFD FFFD 5D4E FFFD FFFD FFFD - FFFD FFFD 5D4F FFFD FFFD FFFD FFFD FFFD - 5D50 5D51 FFFD FFFD FFFD 5D52 FFFD 5D54 - 5D53 5D55 3225 434A FFFD 5D56 FFFD FFFD - 3B26 334C 5D57 FFFD FFFD 4542 544C FFFD - FFFD FFFD FFFD 3523 5D58 FFFD FFFD FFFD - FFFD 5D59 FFFD 4A6C 4B68 FFFD FFFD FFFD - 4647 5D5A 4866 FFFD FFFD FFFD 487B FFFD - FFFD 4C53 FFFD FFFD FFFD 5D5B -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 6BEB - srcEnd = 6BF3 - mappingOffset = 1C06 - Mapping = - 5D5D 5D5C FFFD FFFD 5D5F FFFD FFFD FFFD - 5D5E -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 6C08 - srcEnd = 6C24 - mappingOffset = 1C0F - Mapping = - 5D61 FFFD FFFD FFFD FFFD FFFD FFFD 3B61 - FFFD 4C31 FFFD 5D62 5D63 FFFD FFFD 3524 - FFFD FFFD FFFD 5D64 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5D66 5D65 -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 6C34 - srcEnd = 6C42 - mappingOffset = 1C2C - Mapping = - 3F65 FFFD FFFD 4939 314A FFFD FFFD FFFD - FFFD FFFD 4845 FFFD 4475 3D41 3561 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 6C4E - srcEnd = 6CF3 - mappingOffset = 1C3B - Mapping = - 4846 FFFD 3C2E FFFD FFFD FFFD FFFD 5D68 - FFFD 3440 FFFD FFFD 3178 FFFD FFFD 4672 - 5D67 393E 4353 FFFD 5D69 FFFD FFFD FFFD - FFFD FFFD 5D71 FFFD 5D6A FFFD FFFD FFFD - FFFD FFFD 4241 FFFD 3562 5D72 FFFD FFFD - FFFD FFFD FFFD FFFD 3768 FFFD FFFD 3525 - 5D70 FFFD FFFD 5D6E 5D6B 4D60 FFFD FFFD - FFFD FFFD 4440 FFFD FFFD FFFD 4659 5D6C - FFFD FFFD 5D74 FFFD 5D73 3723 FFFD FFFD - 322D FFFD FFFD 3A3B 5D6D 5D6F FFFD FFFD - FFFD FFFD FFFD 4B57 4274 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4B77 FFFD FFFD - 5D7C FFFD FFFD 5D7D FFFD 324F FFFD FFFD - FFFD FFFD 4A28 4C7D 5E21 3C23 3E42 5D78 - 5D7E 3168 FFFD 3637 FFFD FFFD 5D75 5D7A - FFFD FFFD FFFD 4074 4771 FFFD 4867 FFFD - FFFD FFFD FFFD FFFD FFFD 5D77 FFFD 4B21 - FFFD 5D79 FFFD 5E24 FFFD 5E22 FFFD 5D7B - FFFD FFFD FFFD 4B22 4748 3563 FFFD 4525 - FFFD FFFD 436D FFFD 5E25 FFFD FFFD FFFD - FFFD 5E23 4259 5D76 FFFD 314B -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 6D0B - srcEnd = 6D45 - mappingOffset = 1CE1 - Mapping = - 4D4E 5E30 FFFD FFFD FFFD FFFD FFFD 5E2F - FFFD FFFD FFFD FFFD 4076 FFFD 5E2C FFFD - 4D6C FFFD FFFD 4636 5E26 FFFD FFFD FFFD - FFFD FFFD 4445 FFFD FFFD FFFD 314C 393F - 5E29 FFFD FFFD FFFD FFFD FFFD FFFD 3D27 - 5E2E FFFD 5E2D 5E28 FFFD 5E2B FFFD FFFD - 3368 FFFD 5E2A 4749 FFFD FFFD 4E2E FFFD - FFFD 3E74 4075 -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 6D59 - srcEnd = 6D79 - mappingOffset = 1D1C - Mapping = - 5E36 5E34 FFFD 494D FFFD FFFD FFFD FFFD - FFFD FFFD 5E31 5E33 FFFD 313A FFFD FFFD - 3940 4F32 FFFD 333D FFFD 4962 FFFD FFFD - FFFD FFFD FFFD 4D61 FFFD FFFD 3324 3F3B - 5E35 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 6D85 - srcEnd = 6D9C - mappingOffset = 1D3D - Mapping = - 5E3A FFFD FFFD 3E43 FFFD FFFD FFFD 4D30 - FFFD 5E37 FFFD FFFD FFFD FFFD 5E32 FFFD - 5E38 FFFD FFFD FFFD 4E5E FFFD 4573 4642 -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 6DAF - srcEnd = 6EDE - mappingOffset = 1D55 - Mapping = - 3336 FFFD FFFD 3155 FFFD FFFD 5E3E FFFD - FFFD 5E41 FFFD FFFD FFFD 4E43 FFFD FFFD - FFFD 4D64 FFFD FFFD FFFD FFFD 5E48 5E42 - 5E3F FFFD FFFD FFFD 4E54 5E45 FFFD FFFD - FFFD FFFD 3D4A 5E47 FFFD FFFD 5E4C FFFD - FFFD 4571 5E4A FFFD FFFD FFFD FFFD 5E44 - FFFD FFFD 4338 FFFD FFFD 5E4B FFFD 5E40 - FFFD 5E46 FFFD 5E4D 307C 5E43 FFFD 5E4E - FFFD FFFD 3F3C FFFD 3D5F FFFD 4A25 FFFD - 3A2E FFFD 5E3B 5E49 453A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4036 FFFD - 3369 3A51 3E44 5E3D 3D42 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 374C FFFD 5E3C FFFD - FFFD FFFD 5E52 3D6D 383A FFFD 5E61 FFFD - 5E5B 3574 454F FFFD 5E56 5E5F 302F 3132 - FFFD FFFD 3239 FFFD 5E58 422C 5E4F 5E51 - 3941 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5E62 FFFD 5E5D FFFD FFFD FFFD 5E55 - FFFD FFFD FFFD FFFD 5E5C FFFD FFFD FFFD - FFFD FFFD FFFD 4C2B FFFD FFFD 5E5A 5E5E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3850 - FFFD 3E45 FFFD FFFD 4339 FFFD FFFD FFFD - 5E54 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4D2F FFFD FFFD FFFD 5E57 FFFD FFFD 5E50 - 4572 FFFD FFFD 5E53 FFFD FFFD FFFD 5E59 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4F51 - 3C3E 4B7E FFFD 5E63 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 482E FFFD FFFD - 5E6F 383B FFFD FFFD FFFD FFFD FFFD 3D60 - FFFD 5E65 FFFD FFFD FFFD 4E2F 3942 FFFD - 5E72 FFFD FFFD 306E FFFD FFFD 5E70 FFFD - FFFD FFFD FFFD 5E64 FFFD FFFD FFFD FFFD - 5E6A FFFD FFFD 5E6C FFFD FFFD FFFD 4D4F - 5E67 FFFD FFFD 452E FFFD FFFD 5E69 FFFD - FFFD FFFD FFFD 5E71 FFFD 5E6B 4C47 FFFD - FFFD FFFD 5E66 FFFD 3C22 5E7E FFFD FFFD - FFFD FFFD 336A FFFD 5E68 5E6D 5E6E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 426C 425A -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 6EEC - srcEnd = 6F45 - mappingOffset = 1E85 - Mapping = - 5E76 FFFD FFFD 5E7C FFFD FFFD 5E7A FFFD - 4529 FFFD FFFD 5F23 5E77 FFFD FFFD FFFD - FFFD FFFD 5E78 5E60 FFFD 3579 493A FFFD - FFFD FFFD 3C3F FFFD FFFD 3977 FFFD FFFD - FFFD FFFD FFFD 4F33 FFFD 5E74 FFFD 5F22 - 3169 4166 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4779 FFFD 3441 4E7A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4C21 - 4452 FFFD FFFD FFFD FFFD 5E7B 5E7D FFFD - FFFD FFFD FFFD FFFD 4132 FFFD FFFD FFFD - FFFD FFFD 5F21 5E79 FFFD 5E73 FFFD FFFD - FFFD 3443 -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 6F54 - srcEnd = 6FC6 - mappingOffset = 1EDF - Mapping = - 3769 FFFD FFFD FFFD 5F2F FFFD FFFD 5F2A - 4078 FFFD FFFD 3363 FFFD FFFD FFFD FFFD - 3D61 FFFD 5F33 FFFD FFFD FFFD FFFD FFFD - FFFD 5F2C 442C 5F29 4459 FFFD FFFD FFFD - 5F4C FFFD FFFD FFFD 5F26 FFFD 5F25 FFFD - 5F2E FFFD FFFD FFFD 5F28 5F27 5F2D FFFD - 4021 FFFD 5F24 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5F30 FFFD FFFD 5F31 FFFD FFFD - FFFD FFFD FFFD 3442 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5F36 FFFD 5F35 - 5F37 FFFD FFFD FFFD FFFD FFFD 5F3A FFFD - FFFD FFFD FFFD FFFD FFFD 4543 FFFD 5F34 - FFFD FFFD FFFD FFFD FFFD 5F38 FFFD FFFD - FFFD FFFD FFFD FFFD 3763 4279 5F32 473B - FFFD FFFD 5F39 -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 6FD4 - srcEnd = 7032 - mappingOffset = 1F52 - Mapping = - 5F3E 5F3C FFFD FFFD 5F3F FFFD FFFD 5F42 - FFFD FFFD FFFD 5F3B 396A 4728 FFFD FFFD - 5E39 FFFD FFFD FFFD FFFD FFFD FFFD 4D74 - 5F3D FFFD 5F41 4275 FFFD 5F40 FFFD 5F2B - FFFD FFFD 6F69 FFFD FFFD FFFD 5F45 FFFD - FFFD FFFD 5F49 FFFD FFFD 5F47 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5F43 FFFD 5F44 - FFFD FFFD FFFD 5F48 FFFD 5F46 FFFD FFFD - FFFD 494E FFFD FFFD 5F4E FFFD 5F4B 5F4A - FFFD 5F4D 4654 5F4F FFFD FFFD FFFD FFFD - FFFD FFFD 4375 426D FFFD FFFD FFFD FFFD - 4025 FFFD FFFD FFFD 5F50 FFFD 5F52 -End of Item 0068 - -Begin of Item 0069 - Format 2 - srcBegin = 703E - destBegin = 5F51 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 704C - srcEnd = 707D - mappingOffset = 1FB1 - Mapping = - 5E75 FFFD FFFD FFFD FFFD 5F53 FFFD FFFD - FFFD FFFD FFFD FFFD 4667 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5F54 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3250 - FFFD FFFD FFFD 4574 3325 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3564 FFFD FFFD FFFD - 3C5E 3A52 -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = 7089 - srcEnd = 7099 - mappingOffset = 1FE3 - Mapping = - 4F27 3F66 FFFD FFFD FFFD 316A FFFD FFFD - FFFD 5F56 FFFD FFFD FFFD FFFD FFFD FFFD - 5F55 -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 70AC - srcEnd = 70BA - mappingOffset = 1FF4 - Mapping = - 5F59 433A 5F5C 5F57 FFFD FFFD FFFD 5F5B - FFFD FFFD FFFD FFFD 5F5A 4540 3059 -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = 70C8 - srcEnd = 70DF - mappingOffset = 2003 - Mapping = - 4E75 FFFD FFFD 5F5E FFFD FFFD FFFD 3128 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F60 FFFD FFFD FFFD 5F5F FFFD 5F5D -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = 70F1 - srcEnd = 70FD - mappingOffset = 201B - Mapping = - 5F58 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4B23 FFFD FFFD FFFD 5F62 -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = 7109 - srcEnd = 7126 - mappingOffset = 2028 - Mapping = - 5F61 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 316B FFFD FFFD FFFD FFFD - 5F64 4A32 FFFD 5F63 FFFD FFFD FFFD FFFD - 4C35 FFFD FFFD FFFD FFFD 3E47 -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 7136 - srcEnd = 713C - mappingOffset = 2046 - Mapping = - 4133 FFFD FFFD FFFD FFFD FFFD 3E46 -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 7149 - srcEnd = 716E - mappingOffset = 204D - Mapping = - 4E7B FFFD FFFD 5F6A FFFD 4079 FFFD FFFD - FFFD FFFD FFFD FFFD 5F66 5F6B FFFD FFFD - 316C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F69 FFFD 4761 5F65 5F68 3E48 FFFD - 4851 FFFD FFFD 5F6C FFFD 3C51 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 717D - srcEnd = 721B - mappingOffset = 2073 - Mapping = - 407A FFFD FFFD FFFD FFFD FFFD FFFD 5F6F - FFFD FFFD FFFD 5F67 FFFD 3727 FFFD FFFD - FFFD FFFD 5F6D FFFD FFFD FFFD FFFD 4D50 - 5F70 FFFD FFFD FFFD 7426 FFFD FFFD FFFD - FFFD FFFD 3D4F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5F71 FFFD FFFD FFFD 5F72 - FFFD FFFD FFFD FFFD 472E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5F74 FFFD FFFD FFFD - FFFD 5F75 FFFD FFFD FFFD FFFD 4733 FFFD - FFFD FFFD FFFD 4575 5F77 FFFD FFFD FFFD - FFFD 5F79 FFFD 4E55 FFFD 5F76 FFFD 5F78 - 316D FFFD 5F73 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 535B 5F7A FFFD FFFD FFFD FFFD - 4167 3B38 5F7C FFFD FFFD FFFD FFFD 5F7B - 3F24 5259 FFFD FFFD FFFD FFFD FFFD FFFD - 5F7D FFFD FFFD FFFD 6021 FFFD 5F6E 5F7E - FFFD FFFD 6022 FFFD FFFD FFFD FFFD FFFD - FFFD 477A FFFD FFFD FFFD FFFD FFFD FFFD - 6023 FFFD FFFD 6024 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6025 -End of Item 0072 - -Begin of Item 0073 - Format 1 - srcBegin = 7228 - srcEnd = 72FD - mappingOffset = 2112 - Mapping = - 6026 FFFD 445E FFFD 6028 6027 FFFD FFFD - 6029 FFFD 602A FFFD FFFD 3C5F 4963 FFFD - FFFD FFFD 4C6C 602B 602C 4156 3C24 602D - 602E FFFD FFFD FFFD FFFD FFFD 602F 4A52 - 4847 FFFD FFFD 6030 4757 FFFD FFFD FFFD - FFFD FFFD 442D FFFD FFFD FFFD FFFD FFFD - 6031 3267 FFFD 356D FFFD 4C46 FFFD 4C36 - FFFD 3234 4F34 FFFD FFFD FFFD FFFD 4B52 - FFFD 4A2A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4037 FFFD 6032 FFFD FFFD FFFD - FFFD 4643 FFFD FFFD FFFD 3823 6033 FFFD - 3A54 6035 6034 FFFD FFFD FFFD FFFD 6036 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6037 FFFD FFFD FFFD 6038 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 353E FFFD 6039 FFFD FFFD FFFD FFFD 603A - FFFD FFFD FFFD FFFD 3824 FFFD FFFD 4848 - FFFD FFFD 603C FFFD FFFD FFFD 3E75 FFFD - FFFD 603B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3638 603D 603F FFFD 603E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6040 FFFD - 3851 FFFD 6041 FFFD FFFD FFFD FFFD 3669 - FFFD 4140 FFFD 397D FFFD FFFD FFFD FFFD - 6043 6044 6042 FFFD FFFD FFFD FFFD FFFD - FFFD 3C6D FFFD FFFD 4648 3639 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6046 - 432C 6045 FFFD FFFD 4F35 4762 -End of Item 0073 - -Begin of Item 0074 - Format 2 - srcBegin = 730A - destBegin = 6049 -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 7316 - srcEnd = 7357 - mappingOffset = 21E8 - Mapping = - 604B 6048 FFFD FFFD FFFD 4C54 604A 604C - FFFD 4E44 FFFD FFFD FFFD FFFD FFFD 6050 - FFFD FFFD FFFD 604F 4376 472D FFFD FFFD - 3825 604E FFFD FFFD FFFD FFFD 604D FFFD - 4D31 4D32 FFFD FFFD FFFD FFFD FFFD FFFD - 6051 316E FFFD FFFD FFFD FFFD 3976 3B62 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6052 6053 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6055 -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = 7363 - srcEnd = 7396 - mappingOffset = 222A - Mapping = - 3D43 FFFD FFFD FFFD FFFD 6057 FFFD 6056 - FFFD FFFD FFFD FFFD FFFD 6058 FFFD 334D - FFFD FFFD 605A FFFD FFFD 6059 FFFD 605C - 605B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 383C FFFD FFFD 4E28 FFFD 364C FFFD - 3226 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 366A -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = 73A9 - srcEnd = 73CE - mappingOffset = 225E - Mapping = - 3461 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4E68 605E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6060 FFFD FFFD FFFD FFFD 6061 - FFFD 3251 FFFD FFFD FFFD FFFD FFFD 605D - FFFD 3B39 FFFD FFFD 4441 605F -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 73DE - srcEnd = 7409 - mappingOffset = 2284 - Mapping = - 6064 FFFD 3C6E FFFD FFFD FFFD FFFD 6062 - FFFD FFFD FFFD FFFD 373E FFFD FFFD 4849 - 6063 FFFD FFFD 607E FFFD FFFD FFFD FFFD - FFFD FFFD 6069 FFFD FFFD FFFD FFFD FFFD - 383D FFFD FFFD FFFD FFFD 3565 FFFD 6066 - 4D7D FFFD FFFD 4E30 -End of Item 0078 - -Begin of Item 0079 - Format 1 - srcBegin = 7422 - srcEnd = 7425 - mappingOffset = 22B0 - Mapping = - 4276 FFFD FFFD 6068 -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = 7432 - srcEnd = 7441 - mappingOffset = 22B4 - Mapping = - 606A 4E56 3657 487C 474A FFFD FFFD FFFD - 606B FFFD FFFD FFFD FFFD 606D FFFD 6070 -End of Item 007A - -Begin of Item 007B - Format 1 - srcBegin = 7455 - srcEnd = 748B - mappingOffset = 22C4 - Mapping = - 606C FFFD FFFD FFFD 606F 386A 314D 6071 - FFFD 3F70 606E 4E5C FFFD FFFD 6074 7424 - FFFD FFFD FFFD FFFD 6072 6075 FFFD FFFD - FFFD FFFD 6067 6073 FFFD FFFD 3A3C FFFD - FFFD 6076 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6077 FFFD FFFD FFFD FFFD 4D7E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6078 -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = 749E - srcEnd = 74B0 - mappingOffset = 22FB - Mapping = - 6079 FFFD FFFD FFFD 6065 FFFD FFFD FFFD - FFFD 607A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3444 -End of Item 007C - -Begin of Item 007D - Format 2 - srcBegin = 74BD - destBegin = 3C25 -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = 74CA - srcEnd = 760D - mappingOffset = 230E - Mapping = - 607B FFFD FFFD FFFD FFFD 607C FFFD FFFD - FFFD FFFD 607D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 313B FFFD FFFD FFFD 6121 FFFD - 493B 6122 FFFD FFFD 3424 6123 FFFD 6124 - FFFD FFFD FFFD FFFD 6125 FFFD 6127 6128 - 6126 FFFD FFFD FFFD 4953 612A 6129 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 612C 612B 612D FFFD FFFD FFFD FFFD - FFFD FFFD 612E 6130 612F FFFD FFFD 3979 - FFFD 6132 FFFD 6131 FFFD FFFD 3445 FFFD - 3F53 FFFD 453C FFFD 6133 4038 FFFD FFFD - FFFD 3B3A FFFD 3179 6134 FFFD 4D51 FFFD - FFFD 4A63 6135 FFFD FFFD FFFD 4544 4D33 - 3943 3F3D FFFD FFFD FFFD 434B 5234 FFFD - 442E 3268 6136 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6137 FFFD 613C FFFD FFFD 613A - 6139 5A42 3326 6138 FFFD 305A FFFD 482A - FFFD FFFD 484A FFFD FFFD FFFD FFFD 4E31 - 613D 613B 435C 4026 FFFD FFFD 482B FFFD - 492D FFFD 613F 4E2C 374D 6140 FFFD 613E - 4856 6141 FFFD 6142 FFFD FFFD 305B FFFD - FFFD 3E76 6147 FFFD 6144 466D 6143 FFFD - FFFD FFFD FFFD FFFD FFFD 3526 FFFD FFFD - 614A FFFD FFFD FFFD 6145 6146 FFFD 6149 - 6148 4925 FFFD FFFD 4142 4141 FFFD 353F - FFFD FFFD 614B FFFD FFFD FFFD FFFD FFFD - 614C FFFD FFFD 614D FFFD FFFD FFFD FFFD - FFFD 614F FFFD 614E FFFD FFFD FFFD FFFD - FFFD 3156 FFFD FFFD FFFD FFFD FFFD 6157 - 4868 6151 FFFD 6153 FFFD FFFD 6155 3F3E - FFFD FFFD 6156 6154 3C40 FFFD FFFD FFFD - 6150 6152 FFFD 4942 FFFD 3E49 FFFD FFFD - 6159 FFFD FFFD 6158 FFFD FFFD FFFD FFFD - 615A FFFD 3C26 3A2F FFFD FFFD 4577 615B - FFFD 444B FFFD FFFD 615D FFFD FFFD FFFD - 4E21 615C FFFD FFFD FFFD FFFD FFFD 4169 - FFFD FFFD FFFD FFFD FFFD FFFD 6162 FFFD - 6164 6165 4354 FFFD FFFD FFFD FFFD FFFD - 6163 FFFD 6160 FFFD 615E 615F FFFD 6161 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6168 - FFFD 6166 FFFD 6167 -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = 761F - srcEnd = 769A - mappingOffset = 2452 - Mapping = - 6169 616B 616C 616D FFFD 616E FFFD FFFD - 616A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6170 FFFD FFFD FFFD 616F FFFD FFFD - FFFD FFFD FFFD FFFD 6171 FFFD FFFD FFFD - FFFD FFFD FFFD 4E45 FFFD FFFD FFFD 6174 - 6172 6173 FFFD FFFD FFFD 3462 FFFD FFFD - FFFD FFFD FFFD 4C7E FFFD FFFD FFFD 4A4A - FFFD 6176 FFFD FFFD FFFD 6175 FFFD FFFD - FFFD FFFD 6177 6178 FFFD FFFD FFFD FFFD - 617C 6179 617A 617B FFFD 617D FFFD FFFD - FFFD 617E FFFD 6221 FFFD FFFD FFFD 6222 - FFFD 6223 FFFD 482F 4550 6224 4772 4934 - FFFD 6225 FFFD FFFD 6226 452A FFFD 3327 - 3944 6227 FFFD FFFD 6228 FFFD FFFD 6229 - FFFD 3B29 FFFD FFFD 622B FFFD FFFD 622A - FFFD FFFD 622C 622D -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = 76AE - srcEnd = 770C - mappingOffset = 24CE - Mapping = - 4869 FFFD 622E FFFD FFFD FFFD 622F FFFD - FFFD 7369 6230 6231 6232 FFFD FFFD FFFD - FFFD 3B2E FFFD FFFD 6233 4756 FFFD FFFD - 4B5F FFFD 314E FFFD 3157 FFFD FFFD 6234 - FFFD FFFD FFFD FFFD 6236 FFFD FFFD FFFD - 6235 4570 FFFD FFFD FFFD 4039 5D39 FFFD - 6237 4C41 FFFD 6238 FFFD 3446 4857 6239 - FFFD 623A FFFD FFFD 623B FFFD FFFD FFFD - 4C5C FFFD FFFD FFFD 4C55 FFFD 443E FFFD - FFFD FFFD 416A FFFD FFFD 623D FFFD FFFD - 3D62 FFFD FFFD 3E4A FFFD FFFD 6240 FFFD - FFFD 623F 623E 487D FFFD 3447 3829 -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = 771B - srcEnd = 7729 - mappingOffset = 252D - Mapping = - 6246 FFFD FFFD 6243 3F3F 4C32 FFFD FFFD - FFFD 6242 6244 6245 FFFD FFFD 6241 -End of Item 0081 - -Begin of Item 0082 - Format 1 - srcBegin = 7737 - srcEnd = 7747 - mappingOffset = 253C - Mapping = - 6247 6248 FFFD 442F FFFD 3463 FFFD FFFD - FFFD 4365 FFFD FFFD FFFD FFFD FFFD FFFD - 6249 -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = 775A - srcEnd = 776B - mappingOffset = 254D - Mapping = - 624A 624D FFFD FFFD FFFD FFFD FFFD 3F67 - FFFD 4644 FFFD 624E 4B53 FFFD 624B FFFD - FFFD 624C -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = 7779 - srcEnd = 777F - mappingOffset = 255F - Mapping = - 6251 FFFD FFFD FFFD FFFD 6250 624F -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = 778B - srcEnd = 7791 - mappingOffset = 2566 - Mapping = - 6253 FFFD FFFD 6252 FFFD FFFD 6254 -End of Item 0085 - -Begin of Item 0086 - Format 1 - srcBegin = 779E - srcEnd = 7845 - mappingOffset = 256D - Mapping = - 6256 FFFD 6255 FFFD FFFD FFFD FFFD 4A4D - FFFD FFFD FFFD FFFD FFFD FFFD 3D56 4E46 - FFFD FFFD 6257 FFFD FFFD 4637 FFFD FFFD - 6258 FFFD FFFD 6259 FFFD 625D 625B 625C - FFFD 625A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 625E FFFD FFFD FFFD FFFD FFFD 625F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6260 FFFD FFFD 6261 4C37 6262 FFFD - FFFD FFFD FFFD FFFD 4C70 6263 FFFD 434E - FFFD 476A FFFD 366B FFFD FFFD FFFD 433B - 6264 363A FFFD FFFD FFFD 4050 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6265 FFFD - FFFD FFFD FFFD FFFD 3A3D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6266 FFFD - FFFD FFFD FFFD FFFD 6267 FFFD 3826 3A55 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6269 FFFD FFFD FFFD FFFD 4556 - 3A56 354E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4B24 FFFD 474B FFFD - FFFD FFFD FFFD FFFD 4557 FFFD FFFD FFFD - FFFD 395C FFFD FFFD FFFD FFFD FFFD 626B -End of Item 0086 - -Begin of Item 0087 - Format 2 - srcBegin = 785D - destBegin = 3E4B -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = 786B - srcEnd = 78DA - mappingOffset = 2615 - Mapping = - 4E32 3945 FFFD FFFD 3827 FFFD FFFD 4823 - FFFD 626D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 626F FFFD FFFD FFFD FFFD 386B FFFD - FFFD FFFD FFFD 626E 4476 FFFD FFFD FFFD - FFFD 6271 3337 626C FFFD FFFD 486A FFFD - 3130 FFFD 3A6C FFFD 4F52 FFFD FFFD 6270 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6272 FFFD FFFD FFFD 4A4B FFFD 4059 6274 - FFFD FFFD FFFD FFFD 6275 FFFD FFFD FFFD - FFFD FFFD 6273 FFFD FFFD FFFD FFFD 334E - FFFD 627B FFFD 627A FFFD FFFD 3C27 FFFD - FFFD FFFD 627C 6277 FFFD FFFD FFFD 627D - 6278 FFFD FFFD FFFD FFFD 4858 6276 FFFD - FFFD 6279 FFFD FFFD FFFD FFFD FFFD 6322 -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = 78E7 - srcEnd = 7919 - mappingOffset = 2685 - Mapping = - 6321 4B61 FFFD FFFD FFFD 627E FFFD FFFD - 306B FFFD FFFD FFFD FFFD 6324 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6323 FFFD - FFFD FFFD 3E4C FFFD FFFD FFFD FFFD FFFD - 6325 FFFD FFFD FFFD FFFD FFFD FFFD 4143 - FFFD FFFD 6327 6326 FFFD FFFD FFFD FFFD - FFFD FFFD 6328 -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = 7926 - srcEnd = 792C - mappingOffset = 26B8 - Mapping = - 6268 FFFD FFFD FFFD 626A 632A 6329 -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = 793A - srcEnd = 798F - mappingOffset = 26BF - Mapping = - 3C28 FFFD 4E69 FFFD 3C52 FFFD 632B 3737 - FFFD FFFD FFFD FFFD FFFD 3540 3527 3B63 - FFFD FFFD FFFD FFFD FFFD FFFD 4D34 FFFD - FFFD 6331 FFFD 6330 4144 632D FFFD FFFD - 632F FFFD FFFD 3D4B 3F40 632E 632C FFFD - 472A FFFD FFFD 3E4D FFFD FFFD 493C FFFD - FFFD FFFD FFFD 3A57 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4578 FFFD FFFD - 6332 FFFD FFFD FFFD FFFD 6333 6349 3658 - FFFD FFFD 4F3D 4135 FFFD FFFD FFFD FFFD - 6334 FFFD FFFD 3252 4477 4A21 -End of Item 008B - -Begin of Item 008C - Format 1 - srcBegin = 799D - srcEnd = 7A20 - mappingOffset = 2715 - Mapping = - 6335 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 357A 6336 FFFD FFFD 6338 FFFD FFFD - FFFD 6339 FFFD 4729 FFFD FFFD 633A FFFD - FFFD FFFD FFFD FFFD 633B 633C FFFD FFFD - 3659 3253 4645 3D28 3B64 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 633D FFFD 3D29 FFFD - FFFD FFFD FFFD FFFD 324A 4943 FFFD FFFD - 633E FFFD FFFD 486B FFFD FFFD FFFD FFFD - FFFD FFFD 4145 FFFD 6341 FFFD 6342 4769 - FFFD 3F41 633F FFFD 4361 FFFD FFFD 6340 - FFFD FFFD FFFD 3E4E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 305C FFFD - FFFD FFFD FFFD 3529 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6343 FFFD FFFD 4478 FFFD - 6344 4047 FFFD FFFD FFFD FFFD FFFD 4C2D - FFFD FFFD 4923 6345 6346 4355 FFFD 4E47 - FFFD FFFD 6348 6347 -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = 7A2E - srcEnd = 7B39 - mappingOffset = 2799 - Mapping = - 3C6F FFFD FFFD 634A 3070 FFFD FFFD FFFD - FFFD 634D FFFD FFFD FFFD 634B 3254 374E - 634C 3946 3972 FFFD 4A66 634E FFFD FFFD - 4B54 FFFD FFFD 6350 FFFD FFFD FFFD 4051 - 314F 323A 302C FFFD FFFD FFFD FFFD FFFD - FFFD 634F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6351 6352 3E77 FFFD FFFD - FFFD FFFD FFFD 6353 FFFD 334F FFFD FFFD - FFFD FFFD 6355 FFFD FFFD FFFD 376A FFFD - 3566 FFFD FFFD 6356 3675 FFFD FFFD 6357 - FFFD 407C FFFD 464D FFFD 4060 3A75 FFFD - FFFD FFFD 6358 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4362 416B FFFD 635A - 635C 6359 635B FFFD FFFD FFFD FFFD FFFD - FFFD 3722 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 635D 3726 FFFD FFFD FFFD - 3567 4D52 635F FFFD FFFD FFFD FFFD FFFD - 6360 FFFD FFFD FFFD 312E FFFD FFFD FFFD - FFFD 6363 FFFD FFFD FFFD 3376 6362 6361 - FFFD 6365 635E FFFD 6366 4E29 FFFD 6367 - FFFD 6368 FFFD FFFD 5474 636A FFFD 6369 - FFFD FFFD FFFD 636B 636C FFFD 4E35 636D - FFFD 706F 3E4F 636E 636F 3D57 FFFD 4638 - 6370 FFFD FFFD FFFD 4328 FFFD FFFD 6371 - FFFD 433C 6372 FFFD FFFD FFFD FFFD FFFD - 3625 FFFD 513F 435D 3C33 FFFD FFFD FFFD - FFFD 3448 FFFD FFFD 6373 FFFD 6422 FFFD - 6376 FFFD 3568 FFFD 6375 6424 FFFD FFFD - FFFD 6374 FFFD 3E50 FFFD FFFD FFFD FFFD - FFFD FFFD 6378 6379 FFFD 452B FFFD FFFD - 637A FFFD 335E FFFD FFFD FFFD FFFD 3F5A - 4964 FFFD 637C FFFD FFFD FFFD 4268 FFFD - FFFD FFFD FFFD FFFD FFFD 6377 FFFD 637B - 637D FFFD FFFD 3A7B -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = 7B45 - srcEnd = 7B7A - mappingOffset = 28A5 - Mapping = - 6426 492E FFFD 4826 4579 FFFD 365A 6425 - 6423 FFFD 4835 637E 435E 457B FFFD 457A - FFFD 3A76 FFFD FFFD FFFD FFFD FFFD FFFD - 6438 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6428 FFFD 642A FFFD FFFD FFFD FFFD 642D - FFFD 642E FFFD 642B 642C FFFD FFFD 6429 - 6427 FFFD FFFD FFFD FFFD 6421 -End of Item 008E - -Begin of Item 008F - Format 1 - srcBegin = 7B86 - srcEnd = 7BCF - mappingOffset = 28DB - Mapping = - 4A4F 3255 FFFD FFFD FFFD 6435 FFFD 6432 - FFFD 6437 FFFD FFFD 6436 FFFD 4773 4C27 - FFFD 3B3B 6430 6439 6434 FFFD 6433 642F - FFFD 6431 FFFD 3449 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 433D FFFD FFFD 407D - FFFD FFFD FFFD 4822 FFFD FFFD 643E FFFD - FFFD FFFD 4824 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4061 643B FFFD FFFD 484F FFFD - 643F 4A53 FFFD 435B FFFD 643A 643C FFFD - FFFD 643D -End of Item 008F - -Begin of Item 0090 - Format 1 - srcBegin = 7BDD - srcEnd = 7C2B - mappingOffset = 2925 - Mapping = - 6440 FFFD FFFD 3C44 FFFD FFFD FFFD 4646 - 6445 6444 FFFD FFFD 6441 FFFD FFFD FFFD - 4F36 FFFD FFFD FFFD FFFD FFFD 644A FFFD - FFFD 644E 644B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6447 FFFD FFFD FFFD FFFD - FFFD FFFD 6448 FFFD FFFD FFFD FFFD FFFD - 644D FFFD FFFD FFFD 6442 5255 6449 6443 - FFFD FFFD 644C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6452 FFFD 344A FFFD 644F FFFD - FFFD FFFD 6450 FFFD FFFD 6451 6454 -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = 7C37 - srcEnd = 7D7D - mappingOffset = 2974 - Mapping = - 6453 4876 FFFD FFFD FFFD FFFD 6455 4E7C - 4A6D 645A FFFD FFFD 6457 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6456 4052 FFFD - 6459 645B FFFD FFFD FFFD 6458 FFFD 645F - FFFD 645C FFFD FFFD FFFD FFFD FFFD FFFD - 645D 6446 FFFD FFFD FFFD 645E 6460 FFFD - FFFD FFFD FFFD FFFD FFFD 6461 FFFD FFFD - FFFD FFFD FFFD FFFD 4A46 FFFD 6462 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4C62 - FFFD FFFD 364E 3729 6463 FFFD FFFD FFFD - FFFD FFFD 4A34 FFFD 3F68 FFFD 4C30 FFFD - FFFD 6464 FFFD 4E33 FFFD FFFD 4774 FFFD - 4146 4734 FFFD FFFD 3D4D FFFD FFFD FFFD - 3040 FFFD 6469 6467 FFFD 6465 3421 FFFD - 3E51 646A FFFD FFFD 6468 FFFD 6466 646E - FFFD FFFD 646D 646C 646B FFFD FFFD FFFD - FFFD FFFD 646F FFFD FFFD FFFD 6470 403A - FFFD 6471 FFFD 6473 FFFD FFFD 6472 FFFD - FFFD FFFD FFFD 3852 FFFD FFFD FFFD 4138 - FFFD FFFD FFFD 6475 FFFD FFFD FFFD 457C - FFFD 6474 FFFD FFFD FFFD 6476 FFFD 4A35 - 416C 3947 FFFD 6477 FFFD FFFD FFFD FFFD - 4E48 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6479 FFFD FFFD 647A FFFD 647B FFFD 647C - FFFD 3B65 FFFD 647D 374F FFFD FFFD 356A - FFFD 352A FFFD 6521 FFFD 4C73 3948 647E - FFFD FFFD FFFD 6524 4C66 FFFD 473C FFFD - FFFD 4933 FFFD FFFD FFFD 3D63 6523 FFFD - 3C53 3949 3B66 3569 4A36 6522 FFFD FFFD - FFFD 4147 4B42 3A77 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3B67 445D FFFD 6527 - 4E5F 3A59 FFFD 6528 3F42 FFFD 652A FFFD - FFFD FFFD 3E52 3A30 FFFD FFFD FFFD FFFD - 6529 FFFD FFFD 3D2A 383E 4148 6525 652B - FFFD FFFD FFFD FFFD 6526 3750 FFFD 652E - 6532 376B FFFD FFFD FFFD FFFD FFFD 652D - FFFD FFFD FFFD FFFD 6536 FFFD FFFD 394A - FFFD FFFD 4D6D 303C 6533 FFFD FFFD 356B - FFFD 6530 FFFD FFFD FFFD FFFD FFFD 6531 - FFFD FFFD 457D 652F 652C FFFD 3328 4064 - FFFD FFFD 3828 FFFD FFFD FFFD 6538 -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = 7D89 - srcEnd = 7E9C - mappingOffset = 2ABB - Mapping = - 6535 FFFD FFFD FFFD FFFD FFFD 6537 FFFD - FFFD FFFD 6534 FFFD FFFD FFFD FFFD FFFD - 3751 4233 6539 416E FFFD FFFD 6546 FFFD - FFFD 6542 653C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6540 3C7A 305D 653B 6543 6547 - 394B 4C56 FFFD 4456 653D FFFD FFFD 6545 - FFFD 653A 433E FFFD 653F 303D 4C4A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 653E FFFD - FFFD 365B 486C FFFD FFFD FFFD 416D FFFD - 4E50 3D6F FFFD FFFD 656E FFFD FFFD 6548 - FFFD 407E FFFD 6544 6549 654B FFFD 4479 - 654E FFFD FFFD 654A FFFD FFFD FFFD 4A54 - 344B FFFD FFFD 4C4B FFFD FFFD 305E FFFD - FFFD 654D FFFD 4E7D FFFD FFFD FFFD FFFD - FFFD FFFD 654C FFFD FFFD FFFD FFFD FFFD - 316F FFFD FFFD 466C 654F FFFD FFFD FFFD - 6556 6550 6557 FFFD FFFD FFFD FFFD FFFD - FFFD 6553 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 477B FFFD FFFD 3C4A 6555 FFFD - 6552 6558 6551 FFFD FFFD 3D44 FFFD FFFD - FFFD FFFD 4B25 FFFD FFFD 3D4C FFFD FFFD - 6554 6560 FFFD FFFD 655C FFFD 655F FFFD - 655D 6561 655B FFFD 6541 4053 FFFD FFFD - 484B FFFD 655E FFFD FFFD 6559 FFFD FFFD - FFFD 4121 3752 FFFD 3D2B FFFD FFFD FFFD - FFFD FFFD FFFD 3F25 4136 6564 FFFD FFFD - 6566 6567 FFFD FFFD 6563 6565 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 655A 6562 FFFD - 656A 6569 FFFD FFFD 4B7A FFFD FFFD 372B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6568 FFFD 656C 656B 656F FFFD 6571 FFFD - FFFD 3B3C 656D FFFD FFFD FFFD FFFD 6572 - 6573 FFFD FFFD 6574 FFFD 657A 453B 6576 - FFFD 6575 6577 6578 FFFD 6579 FFFD FFFD - FFFD FFFD 657B 657C -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = 7F36 - srcEnd = 810A - mappingOffset = 2BCF - Mapping = - 344C FFFD 657D FFFD 657E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6621 - FFFD FFFD FFFD FFFD FFFD FFFD 6622 6623 - 6624 FFFD 6625 6626 FFFD FFFD 6628 6627 - FFFD FFFD 6629 FFFD FFFD FFFD FFFD FFFD - FFFD 662A 662B FFFD FFFD FFFD FFFD FFFD - FFFD 662E 662C 662D 3A61 3753 FFFD FFFD - 4356 FFFD 4833 FFFD 3D70 FFFD FFFD 474D - FFFD 486D 662F 586D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6630 6632 FFFD 4D65 - 6631 6634 6633 FFFD 4D53 FFFD 6635 FFFD - 487E FFFD FFFD FFFD FFFD FFFD 6636 FFFD - FFFD FFFD FFFD FFFD 6639 FFFD FFFD 6638 - 6637 FFFD FFFD FFFD FFFD 663A 3732 FFFD - FFFD FFFD 4122 3541 FFFD FFFD FFFD FFFD - 663E 663B FFFD FFFD 663C FFFD FFFD FFFD - 663F FFFD 6640 663D FFFD FFFD FFFD 3129 - FFFD FFFD FFFD 3227 FFFD FFFD FFFD 6642 - 6643 FFFD FFFD FFFD 6644 FFFD 4D62 FFFD - FFFD FFFD FFFD FFFD 3D2C FFFD 6646 6645 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3F69 6647 FFFD FFFD FFFD FFFD - 6648 FFFD FFFD 6649 FFFD 3465 FFFD FFFD - FFFD FFFD 344D FFFD FFFD 664A FFFD FFFD - FFFD FFFD FFFD 664B FFFD 4B5D 4D63 FFFD - FFFD FFFD 4D54 4F37 FFFD 394D 664E 3C54 - 664D FFFD FFFD FFFD FFFD 664F 3C29 FFFD - FFFD FFFD 4251 FFFD 6650 FFFD FFFD 394C - FFFD 4C57 6651 6652 FFFD FFFD 6653 FFFD - FFFD FFFD FFFD 6654 FFFD FFFD FFFD FFFD - FFFD FFFD 6655 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3C2A FFFD FFFD - 4C6D FFFD FFFD FFFD FFFD 6657 FFFD 433F - FFFD 6656 FFFD FFFD FFFD FFFD FFFD FFFD - 6659 FFFD FFFD FFFD 6658 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 665A FFFD FFFD FFFD - 403B FFFD 665B FFFD 665C FFFD FFFD FFFD - 4A39 665D FFFD 416F 665E FFFD FFFD FFFD - FFFD FFFD 665F FFFD FFFD FFFD FFFD FFFD - FFFD 4E7E 6662 FFFD 6661 6660 4430 FFFD - 6663 3F26 FFFD 6664 FFFD FFFD FFFD 6665 - 4F38 6666 FFFD FFFD FFFD FFFD 6667 6669 - 6668 4825 FFFD 4679 FFFD 4F3E 4829 FFFD - FFFD FFFD FFFD FFFD FFFD 666B FFFD FFFD - 3E53 FFFD 492A FFFD 666C 666A FFFD 344E - FFFD FFFD FFFD 3854 3B68 FFFD FFFD 486E - FFFD FFFD FFFD 382A 4B43 FFFD 666F 666D - FFFD 394E FFFD 394F 3069 FFFD 3A68 FFFD - FFFD FFFD FFFD FFFD 4759 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 305F 6674 FFFD - 4340 FFFD FFFD FFFD FFFD FFFD 4758 FFFD - 425B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6676 FFFD FFFD 6672 6675 6670 FFFD 6673 - 4B26 FFFD FFFD 3855 FFFD FFFD 307D 6671 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6678 FFFD 6679 FFFD FFFD 4639 FFFD - FFFD FFFD 363B FFFD FFFD FFFD 6726 473D - FFFD FFFD FFFD FFFD 3B69 FFFD FFFD 363C - 4048 4F46 4C2E 6677 4054 -End of Item 0093 - -Begin of Item 0094 - Format 1 - srcBegin = 811A - srcEnd = 8247 - mappingOffset = 2DA4 - Mapping = - 3553 667A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 667C FFFD FFFD FFFD FFFD FFFD 667B - FFFD FFFD FFFD FFFD FFFD 667D FFFD 4326 - FFFD 473E FFFD FFFD FFFD FFFD FFFD 4431 - FFFD FFFD FFFD FFFD 6723 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6722 FFFD FFFD FFFD - FFFD 667E FFFD FFFD 3F55 FFFD 4965 6725 - FFFD 6724 3950 4F53 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6735 FFFD FFFD - FFFD FFFD FFFD 6729 672A FFFD FFFD FFFD - FFFD 3C70 FFFD FFFD 6728 FFFD 3978 6727 - FFFD FFFD 672B FFFD FFFD FFFD 4432 4A22 - 4123 FFFD FFFD FFFD FFFD 425C 672F FFFD - 6730 672C FFFD FFFD FFFD FFFD 672D FFFD - 672E FFFD FFFD FFFD FFFD 3951 FFFD FFFD - FFFD 6736 FFFD 6732 FFFD FFFD FFFD FFFD - 4966 FFFD 4B6C 4928 FFFD FFFD 6731 FFFD - FFFD 6734 6733 FFFD FFFD FFFD 4B44 6737 - FFFD FFFD FFFD FFFD FFFD FFFD 6738 FFFD - FFFD 4137 FFFD 6739 FFFD FFFD 673B FFFD - 673F FFFD FFFD 673C 673A 473F 673D FFFD - 673E FFFD FFFD FFFD 3232 FFFD 6745 6740 - FFFD FFFD FFFD 6741 FFFD FFFD FFFD 6742 - FFFD 4221 FFFD FFFD FFFD FFFD 6744 6743 - 6746 FFFD FFFD FFFD FFFD 6747 6748 FFFD - FFFD 3F43 FFFD 3269 FFFD 6749 4E57 FFFD - 3C2B FFFD FFFD 3D2D FFFD FFFD FFFD FFFD - FFFD 3B6A 4357 FFFD FFFD FFFD FFFD FFFD - 674A 674B 3131 FFFD 674C FFFD FFFD 674D - 674E FFFD FFFD 674F FFFD 6750 363D 5A2A - 6751 FFFD 4065 6752 3C4B FFFD 6753 FFFD - 5030 FFFD FFFD FFFD 6754 4A5E 345C FFFD - FFFD 4124 3D58 FFFD 4971 3D2E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6755 - 3952 6756 484C FFFD 6764 FFFD FFFD FFFD - FFFD 6758 FFFD 4249 4775 383F 6757 4125 - FFFD FFFD FFFD FFFD FFFD FFFD 6759 FFFD - FFFD FFFD FFFD FFFD FFFD 447A -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = 8258 - srcEnd = 827E - mappingOffset = 2ED2 - Mapping = - 675B 675A 675D FFFD FFFD 675C FFFD 675E - FFFD FFFD 6760 FFFD 675F FFFD 344F FFFD - 6761 FFFD 6762 6763 FFFD FFFD 3A31 4E49 - FFFD 6765 3F27 FFFD FFFD FFFD 3170 6766 - 6767 FFFD FFFD FFFD FFFD FFFD 6768 -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = 828B - srcEnd = 82C5 - mappingOffset = 2EF9 - Mapping = - 3072 FFFD 6769 FFFD FFFD FFFD FFFD 676A - FFFD FFFD FFFD FFFD FFFD FFFD 4967 FFFD - FFFD FFFD 3C47 FFFD 676C FFFD FFFD FFFD - FFFD FFFD 3329 3032 FFFD FFFD FFFD FFFD - 676B 676E 474E FFFD 3F44 FFFD 3256 FFFD - 4B27 FFFD FFFD FFFD FFFD 375D 365C FFFD - 676D FFFD 326A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3423 -End of Item 0096 - -Begin of Item 0097 - Format 1 - srcBegin = 82D1 - srcEnd = 8358 - mappingOffset = 2F34 - Mapping = - 3171 6772 4E6A 425D FFFD FFFD 4944 FFFD - 677E FFFD 3257 677C FFFD 677A 6771 FFFD - 676F FFFD 6770 FFFD 3C63 366C 4377 FFFD - FFFD FFFD 4651 FFFD FFFD FFFD FFFD FFFD - 3151 FFFD 6774 6773 FFFD FFFD FFFD FFFD - 6779 6775 6778 FFFD FFFD FFFD FFFD FFFD - FFFD 4C50 6777 3258 337D 677B FFFD FFFD - 677D FFFD FFFD FFFD FFFD 3754 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6823 682C 682D - FFFD FFFD FFFD 302B FFFD FFFD FFFD FFFD - FFFD FFFD 6834 FFFD FFFD FFFD FFFD 3071 - FFFD FFFD 682B FFFD FFFD FFFD 682A FFFD - 6825 6824 FFFD 6822 6821 4363 FFFD 427B - 6827 FFFD FFFD FFFD FFFD FFFD FFFD 6826 - FFFD FFFD FFFD FFFD 6829 FFFD FFFD FFFD - 4170 3755 FFFD FFFD FFFD FFFD 3141 6828 - FFFD 3953 FFFD FFFD FFFD FFFD FFFD 4171 -End of Item 0097 - -Begin of Item 0098 - Format 1 - srcBegin = 8373 - srcEnd = 8413 - mappingOffset = 2FBC - Mapping = - 683A FFFD 683B FFFD 3259 FFFD FFFD FFFD - 322E 6838 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 682E FFFD 6836 FFFD 683D 6837 - FFFD FFFD FFFD 6835 FFFD FFFD FFFD FFFD - 6776 FFFD FFFD 6833 FFFD FFFD FFFD 682F - FFFD FFFD FFFD 3450 6831 683C FFFD 6832 - FFFD FFFD FFFD FFFD FFFD 683E FFFD 6830 - 477C FFFD FFFD FFFD FFFD FFFD 4D69 FFFD - FFFD FFFD 6839 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 684F FFFD FFFD FFFD 6847 FFFD - FFFD FFFD 3F7B FFFD FFFD FFFD FFFD 3546 - FFFD 365D FFFD 6842 FFFD FFFD FFFD FFFD - 325B FFFD FFFD 3E54 FFFD 6845 FFFD FFFD - FFFD 3A5A FFFD FFFD 4551 684A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4A6E FFFD - 6841 FFFD FFFD FFFD 325A 3856 4929 684B - FFFD 683F FFFD FFFD 6848 FFFD FFFD FFFD - 6852 FFFD 6843 FFFD FFFD FFFD FFFD FFFD - 6844 463A FFFD FFFD 6849 FFFD FFFD FFFD - 6846 4B28 684C 3060 FFFD FFFD FFFD FFFD - 6840 -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = 8420 - srcEnd = 84A1 - mappingOffset = 305D - Mapping = - 684E FFFD 684D FFFD FFFD FFFD FFFD FFFD - FFFD 476B 6854 FFFD 685F FFFD FFFD FFFD - FFFD 337E FFFD FFFD FFFD 6862 FFFD FFFD - 6850 FFFD FFFD FFFD 6855 4D6E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 685E FFFD - FFFD 4D55 FFFD FFFD FFFD FFFD 4E2A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4378 - FFFD FFFD FFFD 336B FFFD FFFD FFFD FFFD - FFFD 4972 6864 4621 FFFD FFFD 3031 FFFD - FFFD 685D FFFD 6859 4172 6853 685B 6860 - FFFD 472C FFFD FFFD FFFD 302A FFFD 6858 - FFFD 6861 4978 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 685C FFFD 6857 FFFD FFFD FFFD - FFFD FFFD FFFD 3E55 FFFD FFFD FFFD FFFD - 3D2F FFFD FFFD FFFD 3C2C FFFD FFFD FFFD - FFFD 4C58 FFFD FFFD 4947 FFFD FFFD 6867 - FFFD 6870 -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = 84AD - srcEnd = 84DA - mappingOffset = 30DF - Mapping = - 685A FFFD FFFD FFFD FFFD 3377 FFFD FFFD - FFFD FFFD FFFD 3E78 6865 FFFD 686A 4173 - FFFD FFFD 6866 FFFD 686D FFFD FFFD 435F - FFFD 686E FFFD FFFD 4D56 6863 3338 FFFD - 6869 FFFD FFFD 686C 4C2C FFFD FFFD FFFD - FFFD 686F FFFD FFFD 6868 686B -End of Item 009A - -Begin of Item 009B - Format 1 - srcBegin = 84EC - srcEnd = 85EA - mappingOffset = 310D - Mapping = - 4B29 FFFD 4F21 FFFD FFFD FFFD FFFD FFFD - 6873 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 687A FFFD FFFD 6872 3C43 FFFD FFFD FFFD - FFFD FFFD 6851 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4A4E FFFD 4C22 - 6879 6878 FFFD 6874 6875 FFFD 3136 FFFD - FFFD FFFD FFFD 6877 FFFD 6871 FFFD FFFD - FFFD FFFD 4455 FFFD FFFD FFFD FFFD FFFD - 6876 307E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4222 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4A43 FFFD FFFD 687B 6921 FFFD 4859 - FFFD FFFD FFFD FFFD 687E 3E56 3C49 6923 - FFFD FFFD 363E FFFD FFFD FFFD FFFD FFFD - FFFD 6924 FFFD 4979 687D FFFD 6856 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 687C - FFFD FFFD FFFD FFFD 4F4F 4622 4973 FFFD - FFFD 692B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6931 FFFD FFFD FFFD FFFD - FFFD FFFD 6932 FFFD 6925 FFFD FFFD FFFD - 4776 FFFD FFFD 692F 6927 FFFD 6929 FFFD - FFFD FFFD FFFD FFFD 6933 6928 FFFD FFFD - 692C FFFD FFFD 3172 FFFD 4665 FFFD 692D - 6930 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6926 FFFD 4126 FFFD 692A 3B27 3F45 3730 - 4C74 FFFD 4C79 3D72 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6937 6935 FFFD - FFFD FFFD FFFD FFFD FFFD 4F4E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6934 FFFD FFFD - FFFD 4D75 FFFD 6936 6938 FFFD FFFD FFFD - FFFD 6939 FFFD FFFD FFFD FFFD FFFD FFFD - 693C 693A FFFD FFFD FFFD FFFD FFFD FFFD - 4623 693B FFFD FFFD FFFD 484D 692E -End of Item 009B - -Begin of Item 009C - Format 1 - srcBegin = 85F7 - srcEnd = 8630 - mappingOffset = 320C - Mapping = - 3D73 FFFD 693D 6942 4174 FFFD FFFD 6941 - FFFD FFFD FFFD 6922 FFFD FFFD FFFD 6943 - 4149 FFFD FFFD 693E 6940 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 693F FFFD FFFD 5D31 - 5D22 FFFD FFFD 6945 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6944 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4D76 FFFD - 623C 6946 -End of Item 009C - -Begin of Item 009D - Format 2 - srcBegin = 863F - destBegin = 6947 -End of Item 009D - -Begin of Item 009E - Format 1 - srcBegin = 864D - srcEnd = 867B - mappingOffset = 3246 - Mapping = - 6948 3857 FFFD 3554 FFFD FFFD FFFD 694A - 515D FFFD FFFD FFFD FFFD 3575 FFFD 4E3A - FFFD 3673 694B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 694C FFFD FFFD FFFD 436E FFFD - FFFD FFFD FFFD FFFD 694D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 467A FFFD 303A -End of Item 009E - -Begin of Item 009F - Format 1 - srcBegin = 868A - srcEnd = 8695 - mappingOffset = 3275 - Mapping = - 3263 6952 6953 FFFD FFFD FFFD FFFD FFFD - FFFD 694E FFFD 3B3D -End of Item 009F - -Begin of Item 00A0 - Format 1 - srcBegin = 86A3 - srcEnd = 86B6 - mappingOffset = 3281 - Mapping = - 694F 4742 FFFD FFFD FFFD FFFD 6950 6951 - 695B FFFD FFFD FFFD 6955 6958 FFFD FFFD - FFFD FFFD FFFD 6954 -End of Item 00A0 - -Begin of Item 00A1 - Format 1 - srcBegin = 86C4 - srcEnd = 878D - mappingOffset = 3295 - Mapping = - 6956 FFFD 6957 3C58 FFFD 6959 FFFD 4341 - FFFD 3756 3342 FFFD FFFD FFFD FFFD FFFD - 695C FFFD FFFD FFFD FFFD 333F FFFD 6961 - FFFD FFFD 695D 6960 FFFD FFFD FFFD FFFD - 483A FFFD FFFD FFFD FFFD 695E FFFD FFFD - 695F 4948 485A 6962 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 427D 696C FFFD 6968 - FFFD FFFD 326B FFFD 6966 FFFD 4B2A 6967 - FFFD FFFD 6964 FFFD 6965 696A 696D FFFD - FFFD 696B FFFD FFFD FFFD 6969 6963 FFFD - FFFD FFFD FFFD FFFD 4358 FFFD 6974 FFFD - 4C2A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6972 FFFD FFFD FFFD 6973 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 696E FFFD FFFD 6970 FFFD FFFD FFFD 6971 - FFFD FFFD FFFD 696F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4066 FFFD 4F39 - 6978 FFFD 6979 FFFD FFFD FFFD FFFD 6A21 - FFFD 3F2A FFFD 697B FFFD 697E FFFD FFFD - FFFD FFFD FFFD 6976 6975 FFFD FFFD 6A22 - FFFD FFFD 325C FFFD 697C FFFD 6A23 FFFD - FFFD FFFD 697D FFFD FFFD FFFD FFFD FFFD - 697A FFFD 4433 FFFD 6977 FFFD FFFD FFFD - FFFD FFFD FFFD 4768 FFFD FFFD 6A27 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4D3B -End of Item 00A1 - -Begin of Item 00A2 - Format 1 - srcBegin = 879F - srcEnd = 87D2 - mappingOffset = 335F - Mapping = - 6A26 FFFD FFFD 6A25 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6A2E FFFD FFFD FFFD - 6A28 FFFD FFFD FFFD 6A30 FFFD FFFD FFFD - FFFD FFFD FFFD 4D66 6A33 FFFD 6A2A FFFD - FFFD 6A2B FFFD FFFD FFFD 6A2F FFFD 6A32 - 6A31 FFFD FFFD FFFD 6A29 FFFD FFFD FFFD - FFFD 6A2C FFFD 6A3D -End of Item 00A2 - -Begin of Item 00A3 - Format 2 - srcBegin = 87E0 - destBegin = 6A36 -End of Item 00A3 - -Begin of Item 00A4 - Format 1 - srcBegin = 87EF - srcEnd = 89C0 - mappingOffset = 3393 - Mapping = - 6A34 FFFD FFFD 6A35 FFFD FFFD FFFD 6A3A - 6A3B FFFD 332A FFFD 3542 FFFD FFFD 6A39 - FFFD FFFD FFFD FFFD FFFD FFFD 6A24 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6A38 6A3C - 6A37 FFFD 6A3E FFFD FFFD FFFD 6A40 6A3F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6A42 6A41 695A FFFD FFFD FFFD - 6A46 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6A43 FFFD FFFD FFFD FFFD 6A44 - FFFD FFFD 6A45 FFFD 6A47 FFFD FFFD FFFD - FFFD 376C FFFD 6A49 FFFD 6A48 FFFD 3D30 - FFFD FFFD FFFD FFFD FFFD 3954 5E27 FFFD - FFFD FFFD FFFD 6A4A 3D51 FFFD FFFD FFFD - 3339 FFFD 6A4B FFFD 3152 FFFD 3E57 6A4C - FFFD FFFD 3955 6A4D 3061 FFFD FFFD FFFD - FFFD 493D FFFD FFFD 6A4E FFFD FFFD FFFD - FFFD 3F6A FFFD 6A55 FFFD FFFD 6A52 FFFD - 436F FFFD FFFD FFFD FFFD FFFD 6A53 6A50 - 365E FFFD 6A4F 6A56 FFFD FFFD FFFD FFFD - FFFD 3736 FFFD FFFD 425E FFFD 6A5C FFFD - FFFD FFFD FFFD 6A58 FFFD FFFD FFFD 4235 - 6A57 FFFD 6A5A FFFD FFFD FFFD FFFD 6A51 - FFFD FFFD FFFD 6A5B FFFD 6A5D FFFD FFFD - FFFD FFFD FFFD FFFD 486F FFFD FFFD 6A59 - FFFD 6A5E 6A60 FFFD FFFD 3853 6A54 FFFD - 3041 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6A5F FFFD 3A5B 4E76 6A61 6A62 4175 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4E22 FFFD FFFD FFFD FFFD 6A63 4D35 FFFD - FFFD 6A64 6A65 FFFD FFFD 4A64 6A66 FFFD - 3A40 FFFD 4E23 FFFD FFFD FFFD FFFD FFFD - FFFD 6A6B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6A6C 3E58 6A6A FFFD FFFD - FFFD 4D67 6A67 FFFD FFFD 6A69 403D 3F7E - FFFD FFFD FFFD 6A68 FFFD 6A6D FFFD FFFD - 4A23 FFFD FFFD 6A6F FFFD 6A6E FFFD FFFD - FFFD 336C FFFD 4B2B 6A70 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6A7C 6A72 - FFFD FFFD FFFD FFFD FFFD FFFD 6A73 FFFD - FFFD FFFD FFFD 6A74 6A75 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6A79 - FFFD 6A7A FFFD FFFD 6A78 FFFD FFFD FFFD - FFFD FFFD 6A76 FFFD 6A71 6A77 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6A7B 7037 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3228 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6A7E - 365F 6A7D FFFD FFFD FFFD 6B22 FFFD 6B21 - FFFD FFFD FFFD 6B24 FFFD FFFD 6B23 FFFD - 6B25 FFFD FFFD 3D31 FFFD 6B26 FFFD FFFD - 6B27 FFFD FFFD FFFD FFFD FFFD FFFD 6B28 - 403E FFFD 4D57 FFFD 6B29 FFFD FFFD 4A24 - 4746 6B2A FFFD 6B2B 382B FFFD FFFD FFFD - 352C FFFD FFFD FFFD 6B2C FFFD FFFD 3B6B - 4741 6B2D FFFD 3350 FFFD FFFD FFFD FFFD - FFFD FFFD 6B2E FFFD FFFD FFFD FFFD 6B30 - 4D77 FFFD 6B2F 3F46 FFFD 6B31 FFFD FFFD - 6B32 FFFD FFFD 6B33 3451 FFFD FFFD FFFD - FFFD FFFD FFFD 6B34 FFFD FFFD 6B35 FFFD - 6B36 6B37 -End of Item 00A4 - -Begin of Item 00A5 - Format 1 - srcBegin = 89D2 - srcEnd = 89E7 - mappingOffset = 3565 - Mapping = - 3351 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6B38 FFFD 6B39 6B3A FFFD FFFD FFFD FFFD - FFFD 3272 FFFD FFFD 3F28 6B3B -End of Item 00A5 - -Begin of Item 00A6 - Format 1 - srcBegin = 89F4 - srcEnd = 8B9A - mappingOffset = 357B - Mapping = - 6B3C FFFD FFFD FFFD 6B3D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3840 FFFD 447B 6B3E - FFFD FFFD FFFD FFFD 3757 FFFD 3F56 FFFD - 6B41 FFFD 4624 FFFD 6B40 FFFD FFFD 3731 - FFFD FFFD 6B3F 4277 352D FFFD FFFD 6B42 - FFFD 6B43 FFFD 3E59 FFFD FFFD FFFD 376D - FFFD 6B44 FFFD FFFD FFFD FFFD 4B2C FFFD - FFFD 405F FFFD FFFD FFFD 3576 FFFD 4C75 - 414A FFFD 6B45 FFFD FFFD FFFD 3F47 4370 - 3E5A FFFD FFFD FFFD FFFD 6B46 FFFD FFFD - FFFD FFFD 6B49 FFFD 6B4A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3A3E 4242 6B48 FFFD - 3E5B 493E FFFD FFFD FFFD FFFD FFFD 6B47 - FFFD FFFD 3B6C FFFD 3153 FFFD 6B4E 3758 - FFFD FFFD 3B6E FFFD FFFD 3B6D FFFD 4F4D - 6B4D 6B4C 4127 FFFD 354D 4F43 333A 3E5C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6B4B FFFD FFFD FFFD FFFD FFFD 6B50 FFFD - 6B51 6B4F FFFD 3858 FFFD 4D40 FFFD FFFD - 3B6F 4727 FFFD FFFD FFFD 6B54 FFFD 4040 - FFFD 4342 FFFD FFFD 4D36 FFFD 6B57 FFFD - FFFD FFFD 386C FFFD 403F 6B53 FFFD 6B58 - 386D 6B55 6B56 FFFD 6B52 FFFD FFFD FFFD - 4062 4649 FFFD FFFD 432F FFFD 325D FFFD - FFFD FFFD FFFD FFFD FFFD 4870 FFFD FFFD - 3543 FFFD FFFD 4434 FFFD FFFD 6B5B FFFD - 6B59 FFFD FFFD 434C FFFD FFFD FFFD 4041 - 3452 6B5A FFFD 3F5B FFFD FFFD 4E4A FFFD - FFFD FFFD 4F40 FFFD FFFD FFFD 6B5C 6B67 - 4435 FFFD 6B66 FFFD 6B63 6B6B 6B64 FFFD - 6B60 FFFD 447C 6B5F FFFD FFFD FFFD 6B5D - FFFD 4D21 3B70 FFFD FFFD 6B61 FFFD 6B5E - FFFD FFFD FFFD 6B65 3D74 FFFD 3841 FFFD - FFFD FFFD 427A FFFD 4B45 315A 3062 FFFD - 4625 FFFD FFFD 6B69 FFFD FFFD FFFD FFFD - 6B68 FFFD 4666 FFFD 6B6D FFFD FFFD FFFD - 6B62 FFFD 6B6C 6B6E FFFD 382C 6B6A 3956 - FFFD 3C55 FFFD FFFD 6B6F 4D58 FFFD FFFD - FFFD FFFD 6B72 FFFD 6B75 FFFD FFFD 6B73 - 4935 FFFD FFFD FFFD FFFD FFFD FFFD 6B70 - FFFD FFFD FFFD FFFD FFFD 3660 FFFD FFFD - FFFD FFFD 6B74 FFFD FFFD 6B76 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6B7A FFFD FFFD - 6B77 FFFD 6B79 6B78 FFFD FFFD FFFD FFFD - FFFD FFFD 6B7B FFFD 3C31 FFFD 6B7D 6B7C - 4968 FFFD FFFD 6C21 FFFD FFFD FFFD FFFD - FFFD FFFD 3759 FFFD FFFD FFFD FFFD 6B7E - 6C22 FFFD FFFD 6C23 3544 6641 3E79 FFFD - 6C24 FFFD FFFD 386E FFFD FFFD FFFD FFFD - FFFD 6C25 FFFD FFFD 6C26 FFFD FFFD 3B3E - FFFD FFFD FFFD FFFD FFFD FFFD 5A4E FFFD - 6C27 FFFD 6C28 FFFD 3D32 FFFD 6C29 6C2A - FFFD FFFD 6C2B FFFD FFFD 6C2C 6C2D -End of Item 00A6 - -Begin of Item 00A7 - Format 1 - srcBegin = 8C37 - srcEnd = 8C6C - mappingOffset = 3722 - Mapping = - 432B FFFD FFFD 6C2E FFFD FFFD FFFD FFFD - 6C30 FFFD 6C2F FFFD FFFD FFFD FFFD 4626 - FFFD 6C31 FFFD 4B2D FFFD 6C32 FFFD 6C33 - FFFD 6C34 FFFD FFFD FFFD FFFD 6C35 FFFD - FFFD FFFD FFFD 465A FFFD FFFD FFFD FFFD - FFFD FFFD 3E5D 6C36 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 396B 502E 6C37 -End of Item 00A7 - -Begin of Item 00A8 - Format 1 - srcBegin = 8C78 - srcEnd = 8CED - mappingOffset = 3758 - Mapping = - 6C38 493F 6C39 FFFD 6C41 FFFD FFFD FFFD - FFFD FFFD 6C3A FFFD FFFD 6C3C FFFD FFFD - FFFD 6C3B 6C3D FFFD 4B46 6C3E 6C3F FFFD - FFFD FFFD FFFD FFFD 6C40 FFFD FFFD FFFD - 6C42 FFFD FFFD FFFD FFFD 332D 4467 FFFD - 4969 3A62 3957 FFFD FFFD FFFD FFFD 494F - 325F 484E 6C45 3453 4055 6C44 6C49 4379 - 4C63 FFFD 6C47 6C48 352E FFFD 6C4A 4763 - 425F FFFD FFFD 4871 453D 6C46 FFFD 4B47 - 326C 6C4C 4F28 4442 4F45 FFFD FFFD 3B71 - 6C4B FFFD 4231 FFFD FFFD 6C5C 4128 FFFD - FFFD 4678 FFFD 4950 FFFD FFFD FFFD FFFD - FFFD FFFD 6C4F 3B3F 3B72 FFFD 3E5E FFFD - 4765 FFFD 382D 6C4E 6C4D FFFD 496A FFFD - FFFD FFFD 3C41 FFFD FFFD 4552 -End of Item 00A8 - -Begin of Item 00A9 - Format 1 - srcBegin = 8CFA - srcEnd = 8D16 - mappingOffset = 37CE - Mapping = - 6C51 6C52 3958 6C50 FFFD FFFD FFFD FFFD - FFFD FFFD 6C53 6C54 FFFD 6C56 4223 FFFD - 6C55 3466 FFFD 6C58 FFFD 6C57 6C59 FFFD - FFFD 6C5B 6C5D FFFD 6C5E -End of Item 00A9 - -Begin of Item 00AA - Format 1 - srcBegin = 8D64 - srcEnd = 8D8A - mappingOffset = 37EB - Mapping = - 4056 FFFD 3C4F 6C5F FFFD FFFD FFFD 3352 - FFFD 6C60 FFFD FFFD 4176 6C61 FFFD 6C62 - 496B FFFD FFFD 352F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6C63 FFFD FFFD - FFFD 4436 FFFD FFFD FFFD FFFD 315B -End of Item 00AA - -Begin of Item 00AB - Format 1 - srcBegin = 8D99 - srcEnd = 8E10 - mappingOffset = 3812 - Mapping = - 6C64 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3C71 FFFD FFFD FFFD FFFD 3F76 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 422D FFFD FFFD FFFD FFFD FFFD - FFFD 6C67 FFFD FFFD FFFD 6C66 FFFD FFFD - FFFD 6C65 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6C6D 6C6B FFFD FFFD 6C68 FFFD - FFFD FFFD FFFD FFFD FFFD 6C6A FFFD FFFD - FFFD 6C69 6C6C FFFD 3577 FFFD 6C70 FFFD - 4057 FFFD 6C71 FFFD FFFD FFFD FFFD 3859 - FFFD 6C6E 6C6F FFFD FFFD FFFD 4F29 FFFD - FFFD FFFD 4437 FFFD 4129 FFFD FFFD FFFD - FFFD FFFD FFFD 6C72 FFFD FFFD 6C75 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6C73 - 6C74 4D59 FFFD FFFD FFFD FFFD 4627 6C78 -End of Item 00AB - -Begin of Item 00AC - Format 1 - srcBegin = 8E1D - srcEnd = 8E35 - mappingOffset = 388A - Mapping = - 6C76 6C77 6C79 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6D29 FFFD FFFD - FFFD FFFD FFFD 6C7C FFFD FFFD FFFD 6C7D - 6C7B -End of Item 00AC - -Begin of Item 00AD - Format 1 - srcBegin = 8E42 - srcEnd = 8E64 - mappingOffset = 38A3 - Mapping = - 6C7A FFFD 447D FFFD FFFD 6D21 6D25 6D22 - 6C7E FFFD 6D23 FFFD FFFD FFFD 6D24 FFFD - FFFD FFFD FFFD 6D2B FFFD FFFD FFFD 6D26 - FFFD FFFD FFFD FFFD FFFD 4058 6D28 FFFD - FFFD 6D2A 6D27 -End of Item 00AD - -Begin of Item 00AE - Format 1 - srcBegin = 8E72 - srcEnd = 8EB1 - mappingOffset = 38C6 - Mapping = - 6D2D FFFD 3D33 FFFD 6D2C FFFD FFFD FFFD - FFFD FFFD 6D2E FFFD FFFD FFFD FFFD 6D2F - FFFD FFFD 6D32 6D31 FFFD 6D30 FFFD FFFD - 6D34 6D33 FFFD 4C76 FFFD FFFD FFFD 6D36 - FFFD 6D35 6D37 FFFD FFFD FFFD FFFD 6D38 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6D3A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6D39 3F48 6D3B FFFD FFFD 366D 6D3C 6D3E -End of Item 00AE - -Begin of Item 00AF - Format 1 - srcBegin = 8EBE - srcEnd = 8EEB - mappingOffset = 3906 - Mapping = - 6D3F FFFD FFFD FFFD FFFD FFFD FFFD 6D40 - 6D3D FFFD 6D41 FFFD 3C56 6D42 3530 3733 - FFFD FFFD FFFD FFFD 382E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6D43 FFFD FFFD - FFFD 4670 FFFD FFFD 453E 6D44 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6D47 -End of Item 00AF - -Begin of Item 00B0 - Format 1 - srcBegin = 8EF8 - srcEnd = 8F64 - mappingOffset = 3934 - Mapping = - 3C34 FFFD FFFD 6D46 6D45 375A 6D48 FFFD - FFFD FFFD FFFD 3353 FFFD 6D4A FFFD FFFD - FFFD 3A5C 6D49 FFFD 6D52 FFFD FFFD FFFD - FFFD FFFD 6D4C 6D4E 4A65 6D4B FFFD FFFD - FFFD 6D4D FFFD 6D51 6D4F 3531 FFFD 6D50 - FFFD FFFD FFFD FFFD FFFD FFFD 6D53 FFFD - FFFD 475A 4E58 FFFD FFFD FFFD FFFD 3D34 - FFFD FFFD FFFD 6D54 FFFD FFFD FFFD FFFD - 4D22 6D56 FFFD 6D55 FFFD FFFD 6D59 4D41 - FFFD FFFD 6D58 FFFD 336D 6D57 6D5C FFFD - FFFD 6D5B FFFD FFFD 6D5A 4532 6D5D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6D5E - FFFD FFFD FFFD FFFD 6D5F FFFD FFFD 396C - FFFD 3725 6D60 6D61 6D62 -End of Item 00B0 - -Begin of Item 00B1 - Format 1 - srcBegin = 8F9B - srcEnd = 9091 - mappingOffset = 39A1 - Mapping = - 3F49 6D63 FFFD 3C2D 6D64 FFFD FFFD FFFD - 6D65 FFFD FFFD FFFD 5221 517E FFFD FFFD - FFFD FFFD 6D66 6570 6D67 4324 3F2B 4740 - FFFD FFFD FFFD FFFD 6D68 FFFD FFFD 4A55 - 4454 397E FFFD FFFD 4329 FFFD FFFD 312A - FFFD 4B78 3F57 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 375E FFFD FFFD 3661 FFFD - FFFD 4A56 FFFD FFFD FFFD FFFD FFFD 6D69 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6D6B - FFFD FFFD 6D6A 3260 FFFD FFFD 4676 6D6C - 4777 FFFD 4533 FFFD 6D6D 3D52 FFFD FFFD - FFFD 6D6F FFFD FFFD 4C42 6D7E 6D71 6D72 - FFFD FFFD 4449 FFFD FFFD 4260 4177 FFFD - 4628 FFFD 6D70 3555 FFFD FFFD FFFD FFFD - 6D79 FFFD 6D76 6E25 4629 4360 6D73 FFFD - 447E 4553 6D74 6D78 3F60 FFFD 4767 444C - FFFD FFFD 4042 6D77 422E 4224 6D75 3029 - 4F22 FFFD FFFD FFFD 6D7A FFFD FFFD FFFD - FFFD FFFD FFFD 4261 FFFD FFFD 3D35 3F4A - FFFD FFFD 6D7C 6D7B FFFD 306F 6D7D FFFD - FFFD 492F FFFD 6E27 FFFD FFFD 465B 3F6B - FFFD FFFD 4359 FFFD 3678 FFFD 6E26 4D37 - 313F FFFD 4A57 3261 6E21 6E22 6E23 6E24 - 463B 4323 3063 6E28 FFFD 6E29 7423 FFFD - FFFD 423D FFFD 6E2A FFFD 3173 414C FFFD - 382F FFFD 4D5A FFFD FFFD 6E2B 452C FFFD - FFFD FFFD 4178 3C57 6E2C FFFD FFFD 6E2F - FFFD FFFD 3D65 6E2D 412B 412A FFFD 3064 - FFFD 4E4B 6E31 FFFD 4872 6E33 6E32 6E30 - 6364 3454 FFFD FFFD 6D6E FFFD 6E35 6E34 - FFFD FFFD FFFD FFFD 6E36 FFFD 4D38 -End of Item 00B1 - -Begin of Item 00B2 - Format 1 - srcBegin = 90A3 - srcEnd = 90CE - mappingOffset = 3A98 - Mapping = - 4661 FFFD FFFD 4B2E FFFD 6E37 FFFD 3C59 - FFFD FFFD FFFD FFFD 6E38 FFFD 6E39 FFFD - FFFD FFFD 6E3A FFFD FFFD 4521 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 306A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3959 - FFFD FFFD FFFD 4F3A -End of Item 00B2 - -Begin of Item 00B3 - Format 1 - srcBegin = 90DB - srcEnd = 9102 - mappingOffset = 3AC4 - Mapping = - 6E3E FFFD FFFD FFFD FFFD FFFD 3734 6E3B - FFFD 6E3C FFFD FFFD FFFD 4974 FFFD FFFD - FFFD FFFD 3354 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4D39 FFFD 363F FFFD FFFD FFFD - FFFD FFFD 4554 FFFD FFFD FFFD FFFD 6E3F -End of Item 00B3 - -Begin of Item 00B4 - Format 1 - srcBegin = 9112 - srcEnd = 9119 - mappingOffset = 3AEC - Mapping = - 6E40 FFFD FFFD FFFD FFFD FFFD FFFD 6E41 -End of Item 00B4 - -Begin of Item 00B5 - Format 1 - srcBegin = 912D - srcEnd = 9132 - mappingOffset = 3AF4 - Mapping = - 4522 FFFD FFFD 6E43 FFFD 6E42 -End of Item 00B5 - -Begin of Item 00B6 - Format 1 - srcBegin = 9149 - srcEnd = 91E7 - mappingOffset = 3AFA - Mapping = - 4653 6E44 3D36 3C60 475B 4371 FFFD FFFD - FFFD 3C72 FFFD 3F6C FFFD 6E45 FFFD 6E46 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3F5D 6E47 FFFD 6E48 FFFD FFFD FFFD - 6E49 4D6F FFFD 3D37 FFFD FFFD FFFD FFFD - FFFD 6E4B 6E4A FFFD 395A FFFD 3973 3B40 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6E4E FFFD FFFD FFFD FFFD 3D66 FFFD - 6E4D FFFD 6E4C FFFD 4269 FFFD FFFD 386F - FFFD 4043 FFFD FFFD FFFD FFFD 4830 FFFD - FFFD FFFD FFFD 3D39 FFFD FFFD FFFD FFFD - FFFD 6E4F FFFD 3E5F FFFD FFFD FFFD FFFD - FFFD 6E52 6E50 FFFD FFFD FFFD 6E51 FFFD - FFFD FFFD FFFD 6E54 6E53 FFFD FFFD 3E7A - FFFD 6E55 FFFD FFFD FFFD FFFD FFFD 6E56 - 6E57 FFFD FFFD FFFD FFFD 4850 3A53 3C61 - 6E58 FFFD 6E59 4E24 3D45 4C6E 4E4C 6E5A - 3662 FFFD FFFD FFFD FFFD 6E5B FFFD 4523 - FFFD FFFD 6E5E 3378 3F4B FFFD 6E5C FFFD - 6E5D FFFD 4460 FFFD FFFD 4B55 367C -End of Item 00B6 - -Begin of Item 00B7 - Format 1 - srcBegin = 91F5 - srcEnd = 91FF - mappingOffset = 3B99 - Mapping = - 6E60 6E61 FFFD FFFD FFFD FFFD FFFD 6E5F - FFFD FFFD 6E63 -End of Item 00B7 - -Begin of Item 00B8 - Format 1 - srcBegin = 920D - srcEnd = 9271 - mappingOffset = 3BA4 - Mapping = - 465F 3343 FFFD FFFD 6E67 FFFD FFFD 6E64 - 6E66 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6E62 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6F4F FFFD FFFD 6E65 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4E6B - FFFD FFFD 385A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6E6F FFFD FFFD FFFD FFFD 4534 - 6E6A FFFD FFFD 6E6D 6E6B FFFD 6E70 FFFD - FFFD FFFD FFFD 6E71 FFFD FFFD FFFD FFFD - FFFD FFFD 6E69 FFFD FFFD 6E76 3174 FFFD - FFFD 6E68 FFFD FFFD FFFD 482D FFFD 6E6C - FFFD 3E60 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 395B -End of Item 00B8 - -Begin of Item 00B9 - Format 1 - srcBegin = 927E - srcEnd = 9285 - mappingOffset = 3C09 - Mapping = - 4B48 FFFD 3664 FFFD FFFD 3D46 FFFD 463C -End of Item 00B9 - -Begin of Item 00BA - Format 1 - srcBegin = 9291 - srcEnd = 929C - mappingOffset = 3C11 - Mapping = - 412D FFFD 6E74 FFFD 6E6E 6E73 FFFD 4C43 - FFFD 4438 6E75 6E72 -End of Item 00BA - -Begin of Item 00BB - Format 1 - srcBegin = 92AD - srcEnd = 92B9 - mappingOffset = 3C1D - Mapping = - 412C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6E79 FFFD 6E78 -End of Item 00BB - -Begin of Item 00BC - Format 1 - srcBegin = 92CF - srcEnd = 92D2 - mappingOffset = 3C2A - Mapping = - 6E77 FFFD FFFD 4B2F -End of Item 00BC - -Begin of Item 00BD - Format 1 - srcBegin = 92E4 - srcEnd = 9360 - mappingOffset = 3C2E - Mapping = - 3D7B FFFD FFFD FFFD FFFD 6E7A 4A5F FFFD - FFFD 3154 FFFD FFFD FFFD FFFD 4946 4372 - FFFD FFFD FFFD FFFD 3578 FFFD 6E7C FFFD - 395D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3B2C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6E7B 3F6D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3F6E 6F21 6F23 FFFD - FFFD FFFD FFFD FFFD 3E7B FFFD 6F22 6F24 - FFFD FFFD 3653 FFFD 4945 FFFD FFFD 3C62 - 4F23 FFFD 6E7E 3A78 FFFD FFFD 4F3F FFFD - FFFD 6F26 FFFD FFFD FFFD FFFD 6F25 6F27 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6E7D FFFD FFFD FFFD FFFD FFFD FFFD 4669 - FFFD 4555 FFFD FFFD FFFD FFFD FFFD FFFD - 4457 FFFD 6F2C FFFD FFFD FFFD FFFD 4343 - 6F28 FFFD FFFD FFFD 6F29 -End of Item 00BD - -Begin of Item 00BE - Format 1 - srcBegin = 936C - srcEnd = 937E - mappingOffset = 3CAB - Mapping = - 372D FFFD 6F2B FFFD FFFD FFFD FFFD FFFD - FFFD 3830 FFFD FFFD FFFD FFFD FFFD FFFD - 6F2A FFFD 3E61 -End of Item 00BE - -Begin of Item 00BF - Format 1 - srcBegin = 938C - srcEnd = 939A - mappingOffset = 3CBE - Mapping = - 3379 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6F30 FFFD 3A3F 4179 FFFD FFFD 444A -End of Item 00BF - -Begin of Item 00C0 - Format 1 - srcBegin = 93A7 - srcEnd = 93E8 - mappingOffset = 3CCD - Mapping = - 333B FFFD FFFD FFFD FFFD 6F2E 6F2F 4443 - FFFD 6F2D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6F31 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6F37 FFFD FFFD FFFD - FFFD 6F3A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6F39 452D FFFD FFFD FFFD FFFD 6F32 - 6F33 6F36 FFFD FFFD FFFD FFFD 6F38 FFFD - FFFD FFFD 3640 FFFD FFFD 6F3B 6F35 FFFD - FFFD 6F34 -End of Item 00C0 - -Begin of Item 00C1 - Format 1 - srcBegin = 9403 - srcEnd = 9444 - mappingOffset = 3D0F - Mapping = - 6F3F FFFD FFFD FFFD 6F40 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6F41 FFFD FFFD - 6F3E 6F3D FFFD FFFD FFFD 3E62 462A 6F3C - FFFD FFFD FFFD FFFD FFFD FFFD 6F45 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6F43 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6F44 6F42 FFFD 4278 FFFD 6F46 - FFFD FFFD FFFD FFFD FFFD FFFD 6F47 FFFD - FFFD 6F49 -End of Item 00C1 - -Begin of Item 00C2 - Format 1 - srcBegin = 9451 - srcEnd = 9481 - mappingOffset = 3D51 - Mapping = - 3455 6F48 4C7A FFFD FFFD FFFD FFFD FFFD - FFFD 6F54 6F4A FFFD FFFD 6F4D FFFD 6F4B - FFFD 6F4C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6F4E FFFD FFFD FFFD FFFD FFFD 6F50 - FFFD FFFD FFFD FFFD 6F51 FFFD 6F52 FFFD - FFFD FFFD FFFD 6F55 6F53 6F56 6F58 FFFD - 6F57 -End of Item 00C2 - -Begin of Item 00C3 - Format 1 - srcBegin = 9577 - srcEnd = 95E5 - mappingOffset = 3D82 - Mapping = - 4439 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4C67 FFFD 6F59 412E FFFD FFFD FFFD - 6F5A FFFD 4A44 6F5B 332B FFFD FFFD FFFD - 313C FFFD 3457 FFFD 3456 6F5C FFFD 6F5D - FFFD 6F5E 6F5F FFFD FFFD FFFD FFFD FFFD - FFFD 6F60 FFFD 3458 3355 395E 4836 FFFD - 6F62 6F61 FFFD FFFD FFFD FFFD 6F63 FFFD - FFFD FFFD FFFD 315C FFFD FFFD FFFD FFFD - FFFD FFFD 6F66 FFFD 6F65 6F64 FFFD 6F67 - FFFD FFFD FFFD FFFD 6F6A FFFD FFFD FFFD - 3047 FFFD FFFD 6F68 FFFD 6F6C 6F6B FFFD - FFFD FFFD FFFD FFFD FFFD 6F6E 6F6D 6F6F - FFFD 462E FFFD FFFD FFFD 6F70 FFFD FFFD - FFFD FFFD 6F71 6F73 FFFD FFFD 6F72 -End of Item 00C3 - -Begin of Item 00C4 - Format 1 - srcBegin = 961C - srcEnd = 97B4 - mappingOffset = 3DF1 - Mapping = - 496C FFFD FFFD FFFD FFFD 6F74 FFFD FFFD - FFFD FFFD FFFD FFFD 6F75 FFFD 3A65 FFFD - FFFD FFFD 6F76 6F77 FFFD FFFD 4B49 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 414B - FFFD FFFD FFFD 3024 424B FFFD 6F78 FFFD - 496D FFFD FFFD FFFD FFFD FFFD FFFD 6F7B - 6F79 395F FFFD 6F7A 3842 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4A45 - 6F7D 7021 6F7E 7022 FFFD FFFD 3121 3F58 - 3D7C 3459 7023 FFFD FFFD FFFD 4766 FFFD - 7025 FFFD FFFD FFFD 3122 FFFD 7024 4444 - FFFD 4E4D 462B 6F7C 4E26 FFFD 3831 FFFD - FFFD 4D5B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3679 4E34 FFFD 3728 FFFD 4262 6721 - FFFD 7026 332C 3F6F FFFD FFFD FFFD FFFD - 3356 7028 FFFD 7029 7027 3764 FFFD 3A5D - 3E63 FFFD FFFD FFFD 3123 FFFD FFFD 4E59 - FFFD FFFD FFFD 702B 6E2E FFFD 702A FFFD - FFFD FFFD FFFD FFFD 702E 702C 702D FFFD - 702F FFFD 7030 4E6C 7031 7032 FFFD 4049 - 483B FFFD FFFD FFFD 3F7D 3467 FFFD FFFD - 4D3A 326D 3D38 385B FFFD 7035 FFFD 7034 - 3B73 7036 7033 FFFD FFFD 3B28 FFFD FFFD - FFFD 703A 6A2D FFFD FFFD 5256 FFFD 3F77 - 7038 FFFD FFFD FFFD FFFD FFFD 4E25 4671 - FFFD FFFD FFFD FFFD 312B FFFD 4063 3C36 - FFFD FFFD FFFD FFFD 4A37 FFFD 3140 FFFD - FFFD FFFD 4E6D 4D6B FFFD 703B FFFD 4545 - FFFD FFFD FFFD FFFD 3C7B FFFD FFFD FFFD - 703C FFFD 703D 3F4C 703E FFFD 4E6E FFFD - FFFD 7039 7040 7042 FFFD 7041 FFFD 703F - FFFD FFFD 7043 FFFD FFFD 7044 FFFD FFFD - 417A FFFD 3262 FFFD FFFD FFFD FFFD FFFD - 7045 FFFD FFFD 4C38 FFFD FFFD 7046 FFFD - FFFD FFFD FFFD FFFD 7047 FFFD 4F2A FFFD - FFFD FFFD FFFD FFFD 5B31 7048 FFFD FFFD - FFFD 7049 704A FFFD FFFD FFFD 704E FFFD - 704B FFFD 704C FFFD 704D 704F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4044 FFFD - FFFD FFFD 4C77 FFFD FFFD 4045 FFFD FFFD - 7050 FFFD 4873 FFFD 7051 7353 4C4C FFFD - 7052 FFFD 7053 FFFD 7054 3357 FFFD 7056 - FFFD 3F59 FFFD FFFD FFFD 7057 FFFD FFFD - 3724 FFFD FFFD FFFD FFFD 7058 705C FFFD - 705A FFFD FFFD FFFD FFFD 705B FFFD FFFD - 3373 7059 705D FFFD FFFD FFFD FFFD 705E - FFFD 3048 FFFD 705F 7060 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3E64 FFFD FFFD FFFD - 7061 FFFD FFFD FFFD 3547 FFFD FFFD 7064 - FFFD FFFD 7063 FFFD 7062 FFFD FFFD 6B71 - FFFD 4A5C FFFD FFFD FFFD FFFD FFFD 7065 - 7066 -End of Item 00C4 - -Begin of Item 00C5 - Format 1 - srcBegin = 97C3 - srcEnd = 97DC - mappingOffset = 3F8A - Mapping = - 7067 FFFD FFFD 7068 FFFD 7069 FFFD FFFD - 706A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 345A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 706B -End of Item 00C5 - -Begin of Item 00C6 - Format 1 - srcBegin = 97ED - srcEnd = 9874 - mappingOffset = 3FA4 - Mapping = - 706C 4723 FFFD FFFD FFFD 706E 323B FFFD - 7071 7070 FFFD FFFD FFFD FFFD 3124 FFFD - FFFD FFFD 3641 FFFD 4A47 443A 3A22 FFFD - 3960 3D67 FFFD 3F5C FFFD FFFD FFFD 7073 - FFFD FFFD 7072 4D42 3468 4852 465C FFFD - FFFD FFFD 3F7C 4E4E FFFD 375B FFFD FFFD - FFFD FFFD FFFD FFFD 7076 FFFD FFFD 7075 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4B4B - 462C FFFD FFFD FFFD FFFD FFFD FFFD 3150 - FFFD FFFD 7077 7074 FFFD FFFD 4951 4D6A - 7078 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7079 FFFD FFFD FFFD FFFD 707B 426A - 335B 335C 707A FFFD FFFD FFFD FFFD 3469 - 3832 FFFD FFFD 346A FFFD FFFD 453F FFFD - FFFD 4E60 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 385C FFFD FFFD FFFD 707C FFFD - FFFD FFFD 707D 707E 7121 FFFD 7123 7122 -End of Item 00C6 - -Begin of Item 00C7 - Format 1 - srcBegin = 98A8 - srcEnd = 98B6 - mappingOffset = 402C - Mapping = - 4977 FFFD 7124 FFFD FFFD FFFD FFFD 7125 - FFFD 7126 FFFD FFFD FFFD FFFD 7127 -End of Item 00C7 - -Begin of Item 00C8 - Format 1 - srcBegin = 98C3 - srcEnd = 98C6 - mappingOffset = 403B - Mapping = - 7129 7128 FFFD 712A -End of Item 00C8 - -Begin of Item 00C9 - Format 1 - srcBegin = 98DB - srcEnd = 992E - mappingOffset = 403F - Mapping = - 4874 664C FFFD FFFD 3F29 FFFD FFFD 3532 - FFFD FFFD FFFD FFFD FFFD FFFD 712B FFFD - 712C FFFD 522C 5D3B 4853 FFFD FFFD 307B - FFFD 303B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3B74 4B30 3E7E FFFD FFFD FFFD FFFD - 712D FFFD 4C5F FFFD FFFD FFFD 712E 4D5C - FFFD 3142 FFFD FFFD FFFD 3B41 FFFD 712F - 326E 7130 FFFD FFFD FFFD 7131 FFFD FFFD - FFFD FFFD 7133 7134 FFFD 7136 7132 FFFD - FFFD 7135 FFFD FFFD FFFD 345B FFFD FFFD - FFFD 7137 FFFD 7138 -End of Item 00C9 - -Begin of Item 00CA - Format 1 - srcBegin = 993D - srcEnd = 9957 - mappingOffset = 4093 - Mapping = - 7139 713A FFFD FFFD FFFD 713B FFFD FFFD - 713D FFFD FFFD FFFD 713C FFFD 713F 7142 - FFFD FFFD FFFD 713E 7140 7141 FFFD FFFD - 7143 FFFD 3642 -End of Item 00CA - -Begin of Item 00CB - Format 1 - srcBegin = 9996 - srcEnd = 9999 - mappingOffset = 40AE - Mapping = - 3C73 7144 7145 3961 -End of Item 00CB - -Begin of Item 00CC - Format 1 - srcBegin = 99A5 - srcEnd = 9A19 - mappingOffset = 40B2 - Mapping = - 7146 FFFD FFFD 333E FFFD FFFD FFFD 474F - 7147 7148 FFFD FFFD FFFD FFFD 435A 466B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7149 - FFFD FFFD FFFD FFFD 477D FFFD FFFD 424C - 3158 366E FFFD 366F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4373 714E 3670 FFFD FFFD - 326F FFFD FFFD 714D FFFD FFFD 714B FFFD - 714C FFFD 714A FFFD FFFD 7158 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 714F 7150 FFFD FFFD 7151 7152 FFFD FFFD - FFFD FFFD FFFD 7154 FFFD FFFD 7153 FFFD - FFFD FFFD 3D59 FFFD 7155 FFFD FFFD FFFD - 7157 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3533 7156 FFFD FFFD 417B 3833 FFFD - FFFD FFFD FFFD FFFD 7159 -End of Item 00CC - -Begin of Item 00CD - Format 1 - srcBegin = 9A28 - srcEnd = 9A6B - mappingOffset = 4127 - Mapping = - 424D FFFD FFFD 715A FFFD FFFD FFFD FFFD - 462D FFFD FFFD FFFD FFFD FFFD FFFD 715B - FFFD FFFD FFFD FFFD FFFD FFFD 7160 FFFD - 715E FFFD 715D 715F FFFD 715C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7162 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7161 FFFD 7164 - FFFD FFFD 3643 7163 FFFD FFFD FFFD 7165 - FFFD FFFD 7166 FFFD 7168 7167 FFFD FFFD - FFFD 7169 716B 716A -End of Item 00CD - -Begin of Item 00CE - Format 1 - srcBegin = 9AA8 - srcEnd = 9B06 - mappingOffset = 416B - Mapping = - 397C FFFD FFFD FFFD FFFD 716C FFFD FFFD - 716D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 333C FFFD FFFD FFFD 716E FFFD FFFD FFFD - 716F FFFD FFFD FFFD 3F71 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7170 - FFFD 7171 FFFD 7172 7173 FFFD FFFD FFFD - 3962 FFFD FFFD FFFD FFFD FFFD 7174 7175 - FFFD FFFD 7176 7177 FFFD FFFD 7178 FFFD - FFFD FFFD 4831 717A FFFD 4926 717B 7179 - FFFD 717D FFFD FFFD 717C FFFD FFFD 717E - FFFD FFFD FFFD 7221 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7222 -End of Item 00CE - -Begin of Item 00CF - Format 1 - srcBegin = 9B18 - srcEnd = 9B5A - mappingOffset = 41CA - Mapping = - 7223 FFFD 7224 FFFD FFFD FFFD FFFD 7225 - FFFD FFFD 7226 7227 FFFD 7228 FFFD 7229 - 722A 722B 722C FFFD FFFD FFFD 722D 722E - FFFD 5D35 722F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6478 3534 FFFD FFFD FFFD - FFFD 3321 3A32 7231 7230 4C25 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7233 7234 7232 - FFFD 7235 FFFD FFFD 4B62 FFFD FFFD FFFD - 7236 FFFD 357B -End of Item 00CF - -Begin of Item 00D0 - Format 1 - srcBegin = 9B6F - srcEnd = 9B74 - mappingOffset = 420D - Mapping = - 4F25 FFFD FFFD FFFD FFFD 7237 -End of Item 00D0 - -Begin of Item 00D1 - Format 1 - srcBegin = 9B83 - srcEnd = 9BF5 - mappingOffset = 4213 - Mapping = - 7239 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 303E FFFD FFFD 723A 4A2B - 7238 FFFD FFFD 723B 723C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 723D 723E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 723F FFFD 4B6E - 3B2D FFFD 3A7A 412F FFFD FFFD FFFD FFFD - FFFD 7240 FFFD FFFD FFFD FFFD 7243 FFFD - FFFD FFFD FFFD FFFD FFFD 7241 FFFD FFFD - FFFD FFFD FFFD 7244 FFFD FFFD 3871 7242 - FFFD FFFD FFFD FFFD 7245 FFFD 7246 7247 - FFFD 724B FFFD 3B2A FFFD FFFD FFFD FFFD - 4264 FFFD FFFD FFFD FFFD FFFD 724C 7249 - 7248 724A FFFD FFFD FFFD 375F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7250 724F 724E - FFFD FFFD 3033 -End of Item 00D1 - -Begin of Item 00D2 - Format 1 - srcBegin = 9C04 - srcEnd = 9C67 - mappingOffset = 4286 - Mapping = - 725A FFFD 7256 FFFD 7257 7253 7259 FFFD - 7255 3362 FFFD FFFD 4F4C FFFD 7258 7254 - 7252 7251 FFFD FFFD FFFD FFFD FFFD 725C - FFFD FFFD FFFD FFFD FFFD 725F FFFD FFFD - 725E 725D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4949 725B 3073 7260 FFFD 7262 FFFD - FFFD FFFD FFFD FFFD FFFD 336F 724D 3137 - FFFD FFFD 7264 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7263 7261 432D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4B70 FFFD - FFFD FFFD FFFD 4E5A FFFD FFFD 7265 FFFD - FFFD FFFD FFFD FFFD 7266 FFFD FFFD FFFD - FFFD FFFD FFFD 7267 -End of Item 00D2 - -Begin of Item 00D3 - Format 1 - srcBegin = 9C76 - srcEnd = 9C78 - mappingOffset = 42EA - Mapping = - 7268 FFFD 7269 -End of Item 00D3 - -Begin of Item 00D4 - Format 1 - srcBegin = 9CE5 - srcEnd = 9CF6 - mappingOffset = 42ED - Mapping = - 443B FFFD 726A FFFD 4837 FFFD 726F 726B - FFFD FFFD FFFD 726C FFFD FFFD 4B31 4C44 - FFFD 4650 -End of Item 00D4 - -Begin of Item 00D5 - Format 1 - srcBegin = 9D03 - srcEnd = 9D2C - mappingOffset = 42FF - Mapping = - 7270 FFFD FFFD 7271 463E 726E 726D FFFD - FFFD FFFD FFFD 322A FFFD FFFD FFFD 7279 - FFFD FFFD 7278 FFFD FFFD FFFD FFFD FFFD - 3175 FFFD FFFD FFFD 7276 FFFD FFFD FFFD - 7275 FFFD FFFD 7273 FFFD 337B FFFD 7272 - 3C32 3229 -End of Item 00D5 - -Begin of Item 00D6 - Format 1 - srcBegin = 9D3B - srcEnd = 9D7A - mappingOffset = 4329 - Mapping = - 3963 FFFD FFFD 727C 727B FFFD 727A FFFD - FFFD 7277 FFFD 727D FFFD 727E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7325 7324 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7326 FFFD - FFFD 312D 7321 7322 FFFD 3974 4C39 FFFD - FFFD 7323 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4B32 FFFD FFFD 732B FFFD FFFD 7327 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 732C -End of Item 00D6 - -Begin of Item 00D7 - Format 1 - srcBegin = 9D87 - srcEnd = 9DD9 - mappingOffset = 4369 - Mapping = - 7329 FFFD 7328 FFFD FFFD FFFD FFFD FFFD - 375C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 732D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 732E FFFD FFFD - FFFD FFFD 732F FFFD 732A FFFD FFFD FFFD - 7274 FFFD FFFD 7330 FFFD 4461 FFFD FFFD - FFFD 7334 FFFD 7335 7333 FFFD FFFD FFFD - FFFD FFFD 7332 7338 FFFD 7331 FFFD 7336 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7337 FFFD FFFD FFFD 733A FFFD FFFD FFFD - FFFD FFFD 7339 -End of Item 00D7 - -Begin of Item 00D8 - Format 1 - srcBegin = 9DE6 - srcEnd = 9DFD - mappingOffset = 43BC - Mapping = - 733C FFFD FFFD FFFD FFFD FFFD FFFD 733D - FFFD 733E FFFD FFFD 4F49 FFFD FFFD FFFD - FFFD FFFD 733B 426B 3A6D FFFD FFFD 733F -End of Item 00D8 - -Begin of Item 00D9 - Format 1 - srcBegin = 9E1A - srcEnd = 9E1E - mappingOffset = 43D4 - Mapping = - 7340 7341 FFFD FFFD 7342 -End of Item 00D9 - -Begin of Item 00DA - Format 1 - srcBegin = 9E75 - srcEnd = 9F2C - mappingOffset = 43D9 - Mapping = - 7343 FFFD FFFD 3834 7344 FFFD FFFD FFFD - 7345 FFFD 3C2F FFFD 7346 FFFD FFFD FFFD - FFFD FFFD FFFD 7347 FFFD FFFD 7348 7349 - FFFD FFFD FFFD FFFD 734C 734A 4F3C FFFD - 734B FFFD 4E6F FFFD FFFD FFFD FFFD FFFD - 734D FFFD 4E5B FFFD FFFD FFFD FFFD FFFD - 734E 477E FFFD FFFD 734F 7351 FFFD FFFD - 7352 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7350 396D 4C4D 4B63 5677 - FFFD 5D60 4B7B FFFD FFFD FFFD FFFD 322B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7354 - 3550 7355 7356 7357 FFFD 3975 FFFD 7358 - FFFD FFFD FFFD 6054 4C5B FFFD 4263 7359 - 735B 735A FFFD 735C FFFD FFFD FFFD FFFD - 735D FFFD FFFD 735E FFFD FFFD FFFD FFFD - FFFD FFFD 735F FFFD FFFD FFFD FFFD 7360 - FFFD 7361 7362 FFFD 7363 FFFD 7364 7365 - 7366 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7367 7368 FFFD FFFD FFFD FFFD - FFFD 4524 FFFD FFFD FFFD FFFD 385D FFFD - 736A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 414D 736B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 736C -End of Item 00DA - -Begin of Item 00DB - Format 1 - srcBegin = 9F3B - srcEnd = 9F3E - mappingOffset = 4491 - Mapping = - 4921 FFFD FFFD 736D -End of Item 00DB - -Begin of Item 00DC - Format 1 - srcBegin = 9F4A - srcEnd = 9F77 - mappingOffset = 4495 - Mapping = - 736E 6337 FFFD FFFD 6C5A 706D FFFD FFFD - 736F FFFD 7370 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7372 7373 7374 - 4E70 7371 FFFD FFFD 7375 7376 FFFD FFFD - 7378 FFFD 7377 FFFD FFFD FFFD FFFD FFFD - 737A FFFD FFFD FFFD 737B 7379 -End of Item 00DC - -Begin of Item 00DD - Format 1 - srcBegin = 9F8D - srcEnd = 9FA0 - mappingOffset = 44C3 - Mapping = - 4E36 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 737C FFFD FFFD FFFD FFFD FFFD FFFD 737D - 6354 FFFD FFFD 737E -End of Item 00DD - -Begin of Item 00DE - Format 1 - srcBegin = FF01 - srcEnd = FF20 - mappingOffset = 44D7 - Mapping = - 212A FFFD 2174 2170 2173 2175 FFFD 214A - 214B 2176 215C 2124 FFFD 2125 213F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 2127 2128 2163 2161 2164 2129 2177 -End of Item 00DE - -Begin of Item 00DF - Format 1 - srcBegin = FF3B - srcEnd = FF40 - mappingOffset = 44F7 - Mapping = - 214E FFFD 214F 2130 2132 212E -End of Item 00DF - -Begin of Item 00E0 - Format 1 - srcBegin = FF5B - srcEnd = FF5D - mappingOffset = 44FD - Mapping = - 2150 2143 2151 -End of Item 00E0 - -Begin of Item 00E1 - Format 1 - srcBegin = FFE3 - srcEnd = FFE5 - mappingOffset = 4500 - Mapping = - 2131 FFFD 216F -End of Item 00E1 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x00E2, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x003D, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x02E3, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x000E */ -/* Total of Format 1 : 0x00C2 */ -/* Total of Format 2 : 0x0012 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x1200, 0x2222, 0x1221, 0x1211, 0x1221, -0x1211, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1112, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1121, 0x1111, 0x1111, 0x1112, 0x1111, 0x1121, -0x1111, 0x2111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1121, -0x2111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x003D Start of MapCell Array */ -/* 0000 */ 0x0391, 0x03A1, 0x2621, -/* 0001 */ 0x03A3, 0x03A9, 0x2632, -/* 0002 */ 0x03B1, 0x03C1, 0x2641, -/* 0003 */ 0x03C3, 0x03C9, 0x2652, -/* 0004 */ 0x0410, 0x0415, 0x2721, -/* 0005 */ 0x0416, 0x042F, 0x2728, -/* 0006 */ 0x0430, 0x0435, 0x2751, -/* 0007 */ 0x0436, 0x044F, 0x2758, -/* 0008 */ 0x3008, 0x3011, 0x2152, -/* 0009 */ 0x3041, 0x3093, 0x2421, -/* 000A */ 0x30A1, 0x30F6, 0x2521, -/* 000B */ 0xFF10, 0xFF19, 0x2330, -/* 000C */ 0xFF21, 0xFF3A, 0x2341, -/* 000D */ 0xFF41, 0xFF5A, 0x2361, -/* 000E */ 0x005C, 0x0000, 0x2140, -/* 000F */ 0x00A2, 0x00B6, 0x0000, -/* 0010 */ 0x00D7, 0x0000, 0x215F, -/* 0011 */ 0x00F7, 0x0000, 0x2160, -/* 0012 */ 0x0401, 0x0000, 0x2727, -/* 0013 */ 0x0451, 0x0000, 0x2757, -/* 0014 */ 0x2010, 0x203B, 0x0015, -/* 0015 */ 0x2103, 0x0000, 0x216E, -/* 0016 */ 0x212B, 0x0000, 0x2272, -/* 0017 */ 0x2190, 0x2193, 0x0041, -/* 0018 */ 0x21D2, 0x21D4, 0x0045, -/* 0019 */ 0x2200, 0x223D, 0x0048, -/* 001A */ 0x2252, 0x0000, 0x2262, -/* 001B */ 0x2260, 0x226B, 0x0086, -/* 001C */ 0x2282, 0x2287, 0x0092, -/* 001D */ 0x22A5, 0x0000, 0x225D, -/* 001E */ 0x2312, 0x0000, 0x225E, -/* 001F */ 0x2500, 0x254B, 0x0098, -/* 0020 */ 0x25A0, 0x25A1, 0x00E4, -/* 0021 */ 0x25B2, 0x25CF, 0x00E6, -/* 0022 */ 0x25EF, 0x0000, 0x227E, -/* 0023 */ 0x2605, 0x2606, 0x0104, -/* 0024 */ 0x2640, 0x2642, 0x0106, -/* 0025 */ 0x266A, 0x266F, 0x0109, -/* 0026 */ 0x3000, 0x301C, 0x010F, -/* 0027 */ 0x309B, 0x309E, 0x012C, -/* 0028 */ 0x30FB, 0x30FE, 0x0130, -/* 0029 */ 0x4E00, 0x4E62, 0x0134, -/* 002A */ 0x4E71, 0x4F1D, 0x0197, -/* 002B */ 0x4F2F, 0x509A, 0x0244, -/* 002C */ 0x50AC, 0x5384, 0x03B0, -/* 002D */ 0x5396, 0x5451, 0x0689, -/* 002E */ 0x545F, 0x5492, 0x0745, -/* 002F */ 0x54A2, 0x54C9, 0x0779, -/* 0030 */ 0x54D8, 0x5516, 0x07A1, -/* 0031 */ 0x552E, 0x5563, 0x07E0, -/* 0032 */ 0x557B, 0x558B, 0x0816, -/* 0033 */ 0x5598, 0x55B6, 0x0827, -/* 0034 */ 0x55C4, 0x55C7, 0x0846, -/* 0035 */ 0x55D4, 0x55E4, 0x084A, -/* 0036 */ 0x55F7, 0x561B, 0x085B, -/* 0037 */ 0x5629, 0x5694, 0x0880, -/* 0038 */ 0x56A0, 0x5751, 0x08EC, -/* 0039 */ 0x5761, 0x576A, 0x099E, -/* 003A */ 0x577F, 0x5793, 0x09A8, -/* 003B */ 0x57A0, 0x57B3, 0x09BD, -/* 003C */ 0x57C0, 0x57E3, 0x09D1, -/* 003D */ 0x57F4, 0x5885, 0x09F5, -/* 003E */ 0x5893, 0x5A49, 0x0A87, -/* 003F */ 0x5A5A, 0x5A6C, 0x0C3E, -/* 0040 */ 0x5A7F, 0x0000, 0x4C3B, -/* 0041 */ 0x5A92, 0x5A9B, 0x0C51, -/* 0042 */ 0x5ABC, 0x5AE9, 0x0C5B, -/* 0043 */ 0x5AFA, 0x5AFB, 0x0C89, -/* 0044 */ 0x5B09, 0x5B16, 0x0C8B, -/* 0045 */ 0x5B22, 0x5C79, 0x0C99, -/* 0046 */ 0x5C8C, 0x5C94, 0x0DF1, -/* 0047 */ 0x5CA1, 0x5CC7, 0x0DFA, -/* 0048 */ 0x5CD9, 0x5D29, 0x0E21, -/* 0049 */ 0x5D4B, 0x5D5C, 0x0E72, -/* 004A */ 0x5D69, 0x5D76, 0x0E84, -/* 004B */ 0x5D82, 0x5D90, 0x0E92, -/* 004C */ 0x5D9D, 0x5DBD, 0x0EA1, -/* 004D */ 0x5DC9, 0x5E64, 0x0EC2, -/* 004E */ 0x5E72, 0x5FFF, 0x0F5E, -/* 004F */ 0x600E, 0x61D0, 0x10EC, -/* 0050 */ 0x61E3, 0x61E6, 0x12AF, -/* 0051 */ 0x61F2, 0x629E, 0x12B3, -/* 0052 */ 0x62AB, 0x63FA, 0x1360, -/* 0053 */ 0x6406, 0x6442, 0x14B0, -/* 0054 */ 0x644E, 0x6458, 0x14ED, -/* 0055 */ 0x6467, 0x6505, 0x14F8, -/* 0056 */ 0x6518, 0x66C9, 0x1597, -/* 0057 */ 0x66D6, 0x6804, 0x1749, -/* 0058 */ 0x6813, 0x6867, 0x1878, -/* 0059 */ 0x6874, 0x6A4B, 0x18CD, -/* 005A */ 0x6A58, 0x6A66, 0x1AA5, -/* 005B */ 0x6A72, 0x6AC3, 0x1AB4, -/* 005C */ 0x6AD1, 0x6AEA, 0x1B06, -/* 005D */ 0x6AFA, 0x6BDF, 0x1B20, -/* 005E */ 0x6BEB, 0x6BF3, 0x1C06, -/* 005F */ 0x6C08, 0x6C24, 0x1C0F, -/* 0060 */ 0x6C34, 0x6C42, 0x1C2C, -/* 0061 */ 0x6C4E, 0x6CF3, 0x1C3B, -/* 0062 */ 0x6D0B, 0x6D45, 0x1CE1, -/* 0063 */ 0x6D59, 0x6D79, 0x1D1C, -/* 0064 */ 0x6D85, 0x6D9C, 0x1D3D, -/* 0065 */ 0x6DAF, 0x6EDE, 0x1D55, -/* 0066 */ 0x6EEC, 0x6F45, 0x1E85, -/* 0067 */ 0x6F54, 0x6FC6, 0x1EDF, -/* 0068 */ 0x6FD4, 0x7032, 0x1F52, -/* 0069 */ 0x703E, 0x0000, 0x5F51, -/* 006A */ 0x704C, 0x707D, 0x1FB1, -/* 006B */ 0x7089, 0x7099, 0x1FE3, -/* 006C */ 0x70AC, 0x70BA, 0x1FF4, -/* 006D */ 0x70C8, 0x70DF, 0x2003, -/* 006E */ 0x70F1, 0x70FD, 0x201B, -/* 006F */ 0x7109, 0x7126, 0x2028, -/* 0070 */ 0x7136, 0x713C, 0x2046, -/* 0071 */ 0x7149, 0x716E, 0x204D, -/* 0072 */ 0x717D, 0x721B, 0x2073, -/* 0073 */ 0x7228, 0x72FD, 0x2112, -/* 0074 */ 0x730A, 0x0000, 0x6049, -/* 0075 */ 0x7316, 0x7357, 0x21E8, -/* 0076 */ 0x7363, 0x7396, 0x222A, -/* 0077 */ 0x73A9, 0x73CE, 0x225E, -/* 0078 */ 0x73DE, 0x7409, 0x2284, -/* 0079 */ 0x7422, 0x7425, 0x22B0, -/* 007A */ 0x7432, 0x7441, 0x22B4, -/* 007B */ 0x7455, 0x748B, 0x22C4, -/* 007C */ 0x749E, 0x74B0, 0x22FB, -/* 007D */ 0x74BD, 0x0000, 0x3C25, -/* 007E */ 0x74CA, 0x760D, 0x230E, -/* 007F */ 0x761F, 0x769A, 0x2452, -/* 0080 */ 0x76AE, 0x770C, 0x24CE, -/* 0081 */ 0x771B, 0x7729, 0x252D, -/* 0082 */ 0x7737, 0x7747, 0x253C, -/* 0083 */ 0x775A, 0x776B, 0x254D, -/* 0084 */ 0x7779, 0x777F, 0x255F, -/* 0085 */ 0x778B, 0x7791, 0x2566, -/* 0086 */ 0x779E, 0x7845, 0x256D, -/* 0087 */ 0x785D, 0x0000, 0x3E4B, -/* 0088 */ 0x786B, 0x78DA, 0x2615, -/* 0089 */ 0x78E7, 0x7919, 0x2685, -/* 008A */ 0x7926, 0x792C, 0x26B8, -/* 008B */ 0x793A, 0x798F, 0x26BF, -/* 008C */ 0x799D, 0x7A20, 0x2715, -/* 008D */ 0x7A2E, 0x7B39, 0x2799, -/* 008E */ 0x7B45, 0x7B7A, 0x28A5, -/* 008F */ 0x7B86, 0x7BCF, 0x28DB, -/* 0090 */ 0x7BDD, 0x7C2B, 0x2925, -/* 0091 */ 0x7C37, 0x7D7D, 0x2974, -/* 0092 */ 0x7D89, 0x7E9C, 0x2ABB, -/* 0093 */ 0x7F36, 0x810A, 0x2BCF, -/* 0094 */ 0x811A, 0x8247, 0x2DA4, -/* 0095 */ 0x8258, 0x827E, 0x2ED2, -/* 0096 */ 0x828B, 0x82C5, 0x2EF9, -/* 0097 */ 0x82D1, 0x8358, 0x2F34, -/* 0098 */ 0x8373, 0x8413, 0x2FBC, -/* 0099 */ 0x8420, 0x84A1, 0x305D, -/* 009A */ 0x84AD, 0x84DA, 0x30DF, -/* 009B */ 0x84EC, 0x85EA, 0x310D, -/* 009C */ 0x85F7, 0x8630, 0x320C, -/* 009D */ 0x863F, 0x0000, 0x6947, -/* 009E */ 0x864D, 0x867B, 0x3246, -/* 009F */ 0x868A, 0x8695, 0x3275, -/* 00A0 */ 0x86A3, 0x86B6, 0x3281, -/* 00A1 */ 0x86C4, 0x878D, 0x3295, -/* 00A2 */ 0x879F, 0x87D2, 0x335F, -/* 00A3 */ 0x87E0, 0x0000, 0x6A36, -/* 00A4 */ 0x87EF, 0x89C0, 0x3393, -/* 00A5 */ 0x89D2, 0x89E7, 0x3565, -/* 00A6 */ 0x89F4, 0x8B9A, 0x357B, -/* 00A7 */ 0x8C37, 0x8C6C, 0x3722, -/* 00A8 */ 0x8C78, 0x8CED, 0x3758, -/* 00A9 */ 0x8CFA, 0x8D16, 0x37CE, -/* 00AA */ 0x8D64, 0x8D8A, 0x37EB, -/* 00AB */ 0x8D99, 0x8E10, 0x3812, -/* 00AC */ 0x8E1D, 0x8E35, 0x388A, -/* 00AD */ 0x8E42, 0x8E64, 0x38A3, -/* 00AE */ 0x8E72, 0x8EB1, 0x38C6, -/* 00AF */ 0x8EBE, 0x8EEB, 0x3906, -/* 00B0 */ 0x8EF8, 0x8F64, 0x3934, -/* 00B1 */ 0x8F9B, 0x9091, 0x39A1, -/* 00B2 */ 0x90A3, 0x90CE, 0x3A98, -/* 00B3 */ 0x90DB, 0x9102, 0x3AC4, -/* 00B4 */ 0x9112, 0x9119, 0x3AEC, -/* 00B5 */ 0x912D, 0x9132, 0x3AF4, -/* 00B6 */ 0x9149, 0x91E7, 0x3AFA, -/* 00B7 */ 0x91F5, 0x91FF, 0x3B99, -/* 00B8 */ 0x920D, 0x9271, 0x3BA4, -/* 00B9 */ 0x927E, 0x9285, 0x3C09, -/* 00BA */ 0x9291, 0x929C, 0x3C11, -/* 00BB */ 0x92AD, 0x92B9, 0x3C1D, -/* 00BC */ 0x92CF, 0x92D2, 0x3C2A, -/* 00BD */ 0x92E4, 0x9360, 0x3C2E, -/* 00BE */ 0x936C, 0x937E, 0x3CAB, -/* 00BF */ 0x938C, 0x939A, 0x3CBE, -/* 00C0 */ 0x93A7, 0x93E8, 0x3CCD, -/* 00C1 */ 0x9403, 0x9444, 0x3D0F, -/* 00C2 */ 0x9451, 0x9481, 0x3D51, -/* 00C3 */ 0x9577, 0x95E5, 0x3D82, -/* 00C4 */ 0x961C, 0x97B4, 0x3DF1, -/* 00C5 */ 0x97C3, 0x97DC, 0x3F8A, -/* 00C6 */ 0x97ED, 0x9874, 0x3FA4, -/* 00C7 */ 0x98A8, 0x98B6, 0x402C, -/* 00C8 */ 0x98C3, 0x98C6, 0x403B, -/* 00C9 */ 0x98DB, 0x992E, 0x403F, -/* 00CA */ 0x993D, 0x9957, 0x4093, -/* 00CB */ 0x9996, 0x9999, 0x40AE, -/* 00CC */ 0x99A5, 0x9A19, 0x40B2, -/* 00CD */ 0x9A28, 0x9A6B, 0x4127, -/* 00CE */ 0x9AA8, 0x9B06, 0x416B, -/* 00CF */ 0x9B18, 0x9B5A, 0x41CA, -/* 00D0 */ 0x9B6F, 0x9B74, 0x420D, -/* 00D1 */ 0x9B83, 0x9BF5, 0x4213, -/* 00D2 */ 0x9C04, 0x9C67, 0x4286, -/* 00D3 */ 0x9C76, 0x9C78, 0x42EA, -/* 00D4 */ 0x9CE5, 0x9CF6, 0x42ED, -/* 00D5 */ 0x9D03, 0x9D2C, 0x42FF, -/* 00D6 */ 0x9D3B, 0x9D7A, 0x4329, -/* 00D7 */ 0x9D87, 0x9DD9, 0x4369, -/* 00D8 */ 0x9DE6, 0x9DFD, 0x43BC, -/* 00D9 */ 0x9E1A, 0x9E1E, 0x43D4, -/* 00DA */ 0x9E75, 0x9F2C, 0x43D9, -/* 00DB */ 0x9F3B, 0x9F3E, 0x4491, -/* 00DC */ 0x9F4A, 0x9F77, 0x4495, -/* 00DD */ 0x9F8D, 0x9FA0, 0x44C3, -/* 00DE */ 0xFF01, 0xFF20, 0x44D7, -/* 00DF */ 0xFF3B, 0xFF40, 0x44F7, -/* 00E0 */ 0xFF5B, 0xFF5D, 0x44FD, -/* 00E1 */ 0xFFE3, 0xFFE5, 0x4500, -/*-------------------------------------------------------*/ -/* Offset=0x02E3 Start of MappingTable */ - -/* 0000 */ 0x2171, 0x2172, 0xFFFD, 0xFFFD, 0xFFFD, 0x2178, 0x212F, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0x224C, 0xFFFD, 0xFFFD, 0xFFFD, 0x216B, 0x215E, -/* 0010 */ 0xFFFD, 0xFFFD, 0x212D, 0xFFFD, 0x2279, 0x213E, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0x213D, 0x2142, 0xFFFD, 0x2146, 0x2147, 0xFFFD, -/* 0020 */ 0xFFFD, 0x2148, 0x2149, 0xFFFD, 0xFFFD, 0x2277, 0x2278, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0x2145, 0x2144, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2273, 0xFFFD, 0x216C, -/* 0038 */ 0x216D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0x2228, 0x222B, 0x222C, 0x222A, 0x222D, 0x224D, 0xFFFD, 0x224E, -/* 0048 */ 0x224F, 0xFFFD, 0x225F, 0x2250, 0xFFFD, 0xFFFD, 0xFFFD, 0x2260, -/* 0050 */ 0x223A, 0xFFFD, 0xFFFD, 0x223B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0x215D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0x2265, 0xFFFD, 0xFFFD, 0x2267, 0x2167, 0xFFFD, -/* 0068 */ 0x225C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x224A, -/* 0070 */ 0x224B, 0x2241, 0x2240, 0x2269, 0x226A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2168, 0x2268, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2266, 0x2162, 0x2261, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2165, 0x2166, 0xFFFD, 0xFFFD, -/* 0090 */ 0x2263, 0x2264, 0x223E, 0x223F, 0xFFFD, 0xFFFD, 0x223C, 0x223D, -/* 0098 */ 0x2821, 0x282C, 0x2822, 0x282D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2823, 0xFFFD, 0xFFFD, 0x282E, -/* 00A8 */ 0x2824, 0xFFFD, 0xFFFD, 0x282F, 0x2826, 0xFFFD, 0xFFFD, 0x2831, -/* 00B0 */ 0x2825, 0xFFFD, 0xFFFD, 0x2830, 0x2827, 0x283C, 0xFFFD, 0xFFFD, -/* 00B8 */ 0x2837, 0xFFFD, 0xFFFD, 0x2832, 0x2829, 0x283E, 0xFFFD, 0xFFFD, -/* 00C0 */ 0x2839, 0xFFFD, 0xFFFD, 0x2834, 0x2828, 0xFFFD, 0xFFFD, 0x2838, -/* 00C8 */ 0x283D, 0xFFFD, 0xFFFD, 0x2833, 0x282A, 0xFFFD, 0xFFFD, 0x283A, -/* 00D0 */ 0x283F, 0xFFFD, 0xFFFD, 0x2835, 0x282B, 0xFFFD, 0xFFFD, 0x283B, -/* 00D8 */ 0xFFFD, 0xFFFD, 0x2840, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2836, 0x2223, 0x2222, 0x2225, 0x2224, -/* 00E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F0 */ 0x2227, 0x2226, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0xFFFD, 0x2221, 0x217E, 0xFFFD, 0xFFFD, 0xFFFD, 0x217B, -/* 0100 */ 0xFFFD, 0xFFFD, 0x217D, 0x217C, 0x217A, 0x2179, 0x216A, 0xFFFD, -/* 0108 */ 0x2169, 0x2276, 0xFFFD, 0xFFFD, 0x2275, 0xFFFD, 0x2274, 0x2121, -/* 0110 */ 0x2122, 0x2123, 0x2137, 0xFFFD, 0x2139, 0x213A, 0x213B, 0xFFFD, -/* 0118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0120 */ 0xFFFD, 0x2229, 0x222E, 0x214C, 0x214D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2141, 0x212B, 0x212C, 0x2135, 0x2136, -/* 0130 */ 0x2126, 0x213C, 0x2133, 0x2134, 0x306C, 0x437A, 0xFFFD, 0x3C37, -/* 0138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B7C, 0x3E66, 0x3B30, 0x3E65, 0x323C, -/* 0140 */ 0xFFFD, 0x4954, 0x4D3F, 0xFFFD, 0x5022, 0x312F, 0xFFFD, 0xFFFD, -/* 0148 */ 0x336E, 0x5023, 0x4024, 0x5242, 0x3556, 0x4A3A, 0xFFFD, 0xFFFD, -/* 0150 */ 0xFFFD, 0xFFFD, 0x3E67, 0xFFFD, 0xFFFD, 0x4E3E, 0xFFFD, 0xFFFD, -/* 0158 */ 0xFFFD, 0xFFFD, 0x4A42, 0xFFFD, 0xFFFD, 0xFFFD, 0x5024, 0xFFFD, -/* 0160 */ 0xFFFD, 0x4366, 0xFFFD, 0xFFFD, 0xFFFD, 0x5025, 0x367A, 0xFFFD, -/* 0168 */ 0xFFFD, 0xFFFD, 0x5026, 0xFFFD, 0x345D, 0x4330, 0xFFFD, 0x3C67, -/* 0170 */ 0x5027, 0xFFFD, 0xFFFD, 0x5028, 0xFFFD, 0xFFFD, 0x5029, 0x4735, -/* 0178 */ 0xFFFD, 0x3557, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4737, -/* 0180 */ 0xFFFD, 0x4663, 0x3843, 0x4B33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0188 */ 0xFFFD, 0x6949, 0x502A, 0x3E68, 0x502B, 0x3235, 0xFFFD, 0xFFFD, -/* 0190 */ 0xFFFD, 0x3665, 0x3870, 0x4C69, 0xFFFD, 0xFFFD, 0x5626, 0x4D70, -/* 0198 */ 0xFFFD, 0x467D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3425, 0xFFFD, 0x3535, 0xFFFD, -/* 01A8 */ 0x502C, 0xFFFD, 0xFFFD, 0x502D, 0x4E3B, 0xFFFD, 0x4D3D, 0x4168, -/* 01B0 */ 0x502F, 0x3B76, 0x4673, 0xFFFD, 0x5032, 0xFFFD, 0xFFFD, 0x313E, -/* 01B8 */ 0x385F, 0xFFFD, 0x385E, 0x3066, 0xFFFD, 0xFFFD, 0x4F4B, 0x4F4A, -/* 01C0 */ 0xFFFD, 0x3A33, 0x3021, 0xFFFD, 0x5033, 0x5034, 0x5035, 0x4B34, -/* 01C8 */ 0x5036, 0xFFFD, 0x3872, 0x3067, 0x4B72, 0xFFFD, 0x357C, 0xFFFD, -/* 01D0 */ 0xFFFD, 0x357D, 0x357E, 0x4462, 0x4E3C, 0xFFFD, 0x5037, 0xFFFD, -/* 01D8 */ 0xFFFD, 0x5038, 0xFFFD, 0xFFFD, 0x5039, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E0 */ 0x3F4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D3A, 0x3F4E, -/* 01E8 */ 0x503E, 0xFFFD, 0x503C, 0xFFFD, 0x503D, 0x3558, 0xFFFD, 0xFFFD, -/* 01F0 */ 0x3A23, 0x3270, 0xFFFD, 0x503B, 0x503A, 0x4A29, 0xFFFD, 0xFFFD, -/* 01F8 */ 0xFFFD, 0xFFFD, 0x3B46, 0x3B45, 0x423E, 0x503F, 0x4955, 0x4067, -/* 0200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2138, 0x5040, 0x5042, 0xFFFD, 0xFFFD, -/* 0208 */ 0xFFFD, 0x4265, 0x4E61, 0x304A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5041, 0x323E, 0xFFFD, 0x3644, 0xFFFD, -/* 0218 */ 0x4367, 0xFFFD, 0xFFFD, 0xFFFD, 0x376F, 0x5043, 0xFFFD, 0xFFFD, -/* 0220 */ 0xFFFD, 0x4724, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x346B, -/* 0228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5044, -/* 0230 */ 0x304B, 0xFFFD, 0xFFFD, 0x3860, 0x346C, 0x497A, 0x4832, 0x3559, -/* 0238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0240 */ 0x3271, 0xFFFD, 0x5067, 0x4541, 0x476C, 0x5046, 0xFFFD, 0xFFFD, -/* 0248 */ 0xFFFD, 0x483C, 0xFFFD, 0x4E62, 0xFFFD, 0x3F2D, 0xFFFD, 0x3B47, -/* 0250 */ 0xFFFD, 0x3B77, 0x3240, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0258 */ 0x4451, 0xFFFD, 0xFFFD, 0x4322, 0x504A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0260 */ 0xFFFD, 0xFFFD, 0x304C, 0x4463, 0x3D3B, 0x3A34, 0x4D24, 0xFFFD, -/* 0268 */ 0x424E, 0xFFFD, 0x323F, 0xFFFD, 0x5049, 0xFFFD, 0x4D3E, 0x5045, -/* 0270 */ 0x5047, 0x3A6E, 0x5048, 0x5524, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5050, 0xFFFD, -/* 0280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5053, 0x5051, 0xFFFD, 0xFFFD, -/* 0288 */ 0x3242, 0xFFFD, 0x4A3B, 0x504B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0290 */ 0x504F, 0x3873, 0xFFFD, 0xFFFD, 0x3B48, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0298 */ 0x3426, 0xFFFD, 0xFFFD, 0x5054, 0xFFFD, 0x504C, 0xFFFD, 0xFFFD, -/* 02A0 */ 0x4E63, 0xFFFD, 0x3B78, 0xFFFD, 0x504D, 0xFFFD, 0x5052, 0xFFFD, -/* 02A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5055, 0xFFFD, 0x504E, 0xFFFD, 0xFFFD, -/* 02B0 */ 0x3621, 0xFFFD, 0x304D, 0xFFFD, 0xFFFD, 0x3622, 0x3241, 0xFFFD, -/* 02B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02C0 */ 0x5525, 0xFFFD, 0x4B79, 0x496E, 0x3874, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02C8 */ 0xFFFD, 0xFFFD, 0x3F2F, 0x4E37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A58, 0xFFFD, 0xFFFD, 0x3738, -/* 02D8 */ 0x4225, 0x3264, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D53, -/* 02E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5059, 0xFFFD, 0x505E, 0x505C, 0xFFFD, -/* 02E8 */ 0xFFFD, 0x5057, 0xFFFD, 0xFFFD, 0x422F, 0x505A, 0xFFFD, 0x505D, -/* 02F0 */ 0x505B, 0xFFFD, 0x4A5D, 0xFFFD, 0x5058, 0xFFFD, 0x3F2E, 0xFFFD, -/* 02F8 */ 0x4B73, 0x505F, 0x5060, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D24, 0x506D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0308 */ 0x4750, 0xFFFD, 0x4936, 0x5068, 0xFFFD, 0x4A70, 0xFFFD, 0x3236, -/* 0310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x506C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0318 */ 0xFFFD, 0xFFFD, 0x5066, 0x506F, 0xFFFD, 0xFFFD, 0x4152, 0xFFFD, -/* 0320 */ 0x3844, 0xFFFD, 0x475C, 0xFFFD, 0x6047, 0xFFFD, 0x506E, 0x455D, -/* 0328 */ 0xFFFD, 0x5063, 0xFFFD, 0x3876, 0xFFFD, 0xFFFD, 0x3875, 0x5061, -/* 0330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C5A, 0xFFFD, 0x5069, 0xFFFD, -/* 0338 */ 0x4A6F, 0x434D, 0x5065, 0x3771, 0xFFFD, 0x5062, 0x506A, 0x5064, -/* 0340 */ 0x4E51, 0x506B, 0x4F41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3666, 0xFFFD, 0xFFFD, 0x3770, 0xFFFD, -/* 0350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0358 */ 0x5070, 0xFFFD, 0xFFFD, 0xFFFD, 0x5071, 0x5075, 0x304E, 0xFFFD, -/* 0360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A50, 0x5074, 0xFFFD, 0xFFFD, -/* 0368 */ 0xFFFD, 0xFFFD, 0x5073, 0x5077, 0xFFFD, 0xFFFD, 0xFFFD, 0x5076, -/* 0370 */ 0xFFFD, 0x4464, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0378 */ 0xFFFD, 0xFFFD, 0x3772, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0380 */ 0xFFFD, 0x5078, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C45, -/* 0388 */ 0xFFFD, 0x4226, 0x4465, 0x3676, 0xFFFD, 0x5079, 0xFFFD, 0xFFFD, -/* 0390 */ 0xFFFD, 0xFFFD, 0x3536, 0xFFFD, 0xFFFD, 0x507A, 0xFFFD, 0xFFFD, -/* 0398 */ 0xFFFD, 0xFFFD, 0x507C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03A0 */ 0xFFFD, 0xFFFD, 0x4B35, 0xFFFD, 0xFFFD, 0xFFFD, 0x3766, 0xFFFD, -/* 03A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B31, 0x4877, 0x507B, -/* 03B0 */ 0x3A45, 0x4D43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x507E, 0x5123, -/* 03B8 */ 0x507D, 0x3A44, 0xFFFD, 0x3D7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03C0 */ 0xFFFD, 0xFFFD, 0x3739, 0xFFFD, 0xFFFD, 0xFFFD, 0x5124, 0xFFFD, -/* 03C8 */ 0xFFFD, 0x364F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5121, 0x5122, 0xFFFD, -/* 03D0 */ 0xFFFD, 0x462F, 0xFFFD, 0x417C, 0xFFFD, 0x3623, 0xFFFD, 0xFFFD, -/* 03D8 */ 0xFFFD, 0x4B4D, 0x5125, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E3D, 0xFFFD, -/* 03E0 */ 0xFFFD, 0xFFFD, 0x5126, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5129, -/* 03E8 */ 0xFFFD, 0x5127, 0xFFFD, 0x414E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03F0 */ 0xFFFD, 0x5128, 0x512A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03F8 */ 0xFFFD, 0x512C, 0xFFFD, 0xFFFD, 0xFFFD, 0x512B, 0xFFFD, 0x4A48, -/* 0400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3537, 0x512E, 0x512F, 0xFFFD, -/* 0408 */ 0x322F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x512D, 0xFFFD, 0xFFFD, -/* 0410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C74, 0xFFFD, -/* 0418 */ 0x5132, 0x5131, 0x5130, 0xFFFD, 0x5056, 0xFFFD, 0x5133, 0xFFFD, -/* 0420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D7E, 0xFFFD, 0x5134, 0xFFFD, 0xFFFD, -/* 0428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D25, 0xFFFD, -/* 0430 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C59, 0xFFFD, -/* 0438 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5136, 0xFFFD, 0xFFFD, 0x5135, 0x5138, -/* 0440 */ 0x5137, 0xFFFD, 0xFFFD, 0x5139, 0x513A, 0x3074, 0xFFFD, 0x3835, -/* 0448 */ 0x373B, 0x3D3C, 0x437B, 0x3624, 0x4068, 0x3877, 0xFFFD, 0x396E, -/* 0450 */ 0x513C, 0x4C48, 0x4546, 0xFFFD, 0x3B79, 0xFFFD, 0x513B, 0xFFFD, -/* 0458 */ 0x513D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x455E, 0xFFFD, -/* 0460 */ 0x3375, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x513E, 0xFFFD, -/* 0468 */ 0xFFFD, 0x467E, 0xFFFD, 0xFFFD, 0x4134, 0x5140, 0x5141, 0x482C, -/* 0470 */ 0x3878, 0x4F3B, 0x5142, 0xFFFD, 0xFFFD, 0x3626, 0xFFFD, 0xFFFD, -/* 0478 */ 0xFFFD, 0x4A3C, 0x4236, 0x3671, 0x4535, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0480 */ 0x3773, 0xFFFD, 0xFFFD, 0xFFFD, 0x5143, 0xFFFD, 0x5144, 0xFFFD, -/* 0488 */ 0xFFFD, 0x4662, 0x315F, 0xFFFD, 0xFFFD, 0x5147, 0x3A7D, 0xFFFD, -/* 0490 */ 0x5146, 0x3A46, 0xFFFD, 0x5148, 0x666E, 0x5149, 0x4B41, 0x514A, -/* 0498 */ 0xFFFD, 0x514B, 0x514C, 0x3E69, 0xFFFD, 0x3C4C, 0xFFFD, 0xFFFD, -/* 04A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3427, 0xFFFD, 0x514F, 0xFFFD, -/* 04A8 */ 0x514D, 0x4C3D, 0x514E, 0xFFFD, 0x495A, 0x5150, 0x5151, 0x5152, -/* 04B0 */ 0x455F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5156, 0x5154, 0x5155, 0x5153, -/* 04B8 */ 0x3A63, 0x5157, 0x4C6A, 0x4E64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04C0 */ 0xFFFD, 0x5158, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04C8 */ 0x4028, 0x5159, 0x3D5A, 0xFFFD, 0xFFFD, 0x515A, 0xFFFD, 0x437C, -/* 04D0 */ 0x4E3F, 0x4560, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04D8 */ 0xFFFD, 0xFFFD, 0x5245, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x515B, -/* 04E0 */ 0x7425, 0x3645, 0xFFFD, 0xFFFD, 0x515C, 0x4B5E, 0xFFFD, 0xFFFD, -/* 04E8 */ 0xFFFD, 0xFFFD, 0x3D68, 0x427C, 0xFFFD, 0x515E, 0x4664, 0xFFFD, -/* 04F0 */ 0xFFFD, 0x515F, 0xFFFD, 0xFFFD, 0x5160, 0x332E, 0xFFFD, 0xFFFD, -/* 04F8 */ 0xFFFD, 0x5161, 0x3627, 0xFFFD, 0x464C, 0x317A, 0x3D50, 0xFFFD, -/* 0500 */ 0xFFFD, 0x4821, 0x5162, 0xFFFD, 0x4561, 0xFFFD, 0xFFFD, 0x3F4F, -/* 0508 */ 0x5163, 0xFFFD, 0x4A2C, 0x405A, 0x3422, 0xFFFD, 0x3429, 0x5164, -/* 0510 */ 0xFFFD, 0xFFFD, 0x5166, 0xFFFD, 0xFFFD, 0x373A, 0xFFFD, 0xFFFD, -/* 0518 */ 0x5165, 0xFFFD, 0xFFFD, 0x4E73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0520 */ 0xFFFD, 0x3D69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0528 */ 0x483D, 0x4A4C, 0xFFFD, 0x5167, 0xFFFD, 0x4D78, 0x5168, 0xFFFD, -/* 0530 */ 0xFFFD, 0xFFFD, 0x5169, 0xFFFD, 0x457E, 0xFFFD, 0xFFFD, 0x516A, -/* 0538 */ 0xFFFD, 0xFFFD, 0x4029, 0x3A7E, 0x3774, 0x516B, 0x3B49, 0x396F, -/* 0540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4466, -/* 0548 */ 0x516D, 0xFFFD, 0xFFFD, 0x4227, 0xFFFD, 0xFFFD, 0x3A6F, 0x516E, -/* 0550 */ 0x516F, 0x4130, 0xFFFD, 0x516C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0558 */ 0x5171, 0xFFFD, 0x4B36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3964, -/* 0560 */ 0xFFFD, 0xFFFD, 0x5170, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3775, -/* 0568 */ 0x3A5E, 0x476D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5174, 0x5172, 0xFFFD, -/* 0570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x497B, 0x3E6A, 0x517B, 0x3364, 0x5175, -/* 0578 */ 0x5173, 0x414F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0580 */ 0xFFFD, 0x5177, 0xFFFD, 0x5176, 0xFFFD, 0xFFFD, 0xFFFD, 0x3344, -/* 0588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3760, 0x517C, 0x4E2D, 0xFFFD, 0xFFFD, -/* 0590 */ 0xFFFD, 0x5178, 0xFFFD, 0xFFFD, 0xFFFD, 0x517D, 0x517A, 0xFFFD, -/* 0598 */ 0x5179, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E4F, -/* 05A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3879, 0x3243, 0xFFFD, 0xFFFD, 0x4E74, -/* 05A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D75, 0x4558, 0x3965, -/* 05B0 */ 0x5222, 0x5223, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E65, 0xFFFD, 0xFFFD, -/* 05B8 */ 0x4F2B, 0x5225, 0xFFFD, 0xFFFD, 0xFFFD, 0x387A, 0xFFFD, 0xFFFD, -/* 05C0 */ 0x5224, 0xFFFD, 0x332F, 0xFFFD, 0xFFFD, 0x5226, 0xFFFD, 0x4B56, -/* 05C8 */ 0xFFFD, 0x443C, 0xFFFD, 0x4D26, 0xFFFD, 0x4A59, 0xFFFD, 0xFFFD, -/* 05D0 */ 0xFFFD, 0x5227, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7055, 0xFFFD, -/* 05D8 */ 0xFFFD, 0x4630, 0xFFFD, 0x5228, 0x342A, 0x4C33, 0xFFFD, 0xFFFD, -/* 05E0 */ 0xFFFD, 0x3E21, 0x5229, 0x4A67, 0x522D, 0xFFFD, 0x402A, 0x522A, -/* 05E8 */ 0x3650, 0xFFFD, 0x522B, 0x342B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x372E, 0x522E, -/* 05F8 */ 0xFFFD, 0x522F, 0xFFFD, 0xFFFD, 0x5230, 0x5231, 0x3C5B, 0xFFFD, -/* 0600 */ 0xFFFD, 0xFFFD, 0x387B, 0x4C5E, 0xFFFD, 0x4C68, 0x4677, 0xFFFD, -/* 0608 */ 0xFFFD, 0x4A71, 0x5232, 0xFFFD, 0x5233, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0610 */ 0xFFFD, 0x5235, 0xFFFD, 0x5237, 0x5236, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0618 */ 0xFFFD, 0x5238, 0x323D, 0x4B4C, 0xFFFD, 0x3A7C, 0x5239, 0xFFFD, -/* 0620 */ 0xFFFD, 0x4159, 0xFFFD, 0xFFFD, 0x3E22, 0x3629, 0xFFFD, 0x523A, -/* 0628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x485B, 0xFFFD, -/* 0630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x523B, 0xFFFD, 0x523C, 0xFFFD, 0x523D, -/* 0638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x523E, 0x4924, 0x3668, 0x3065, -/* 0640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x463F, 0x523F, 0x3D3D, 0xFFFD, 0x4069, -/* 0648 */ 0xFFFD, 0x5241, 0x5240, 0x3E23, 0x3861, 0x5243, 0x483E, 0xFFFD, -/* 0650 */ 0xFFFD, 0x5244, 0xFFFD, 0xFFFD, 0xFFFD, 0x485C, 0x4234, 0x426E, -/* 0658 */ 0x3628, 0xFFFD, 0xFFFD, 0x466E, 0x4331, 0xFFFD, 0x476E, 0xFFFD, -/* 0660 */ 0x4B4E, 0xFFFD, 0x5246, 0xFFFD, 0x406A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0668 */ 0xFFFD, 0xFFFD, 0x3735, 0xFFFD, 0xFFFD, 0x5247, 0xFFFD, 0xFFFD, -/* 0670 */ 0xFFFD, 0xFFFD, 0x5248, 0x312C, 0x3075, 0x346D, 0xFFFD, 0x4228, -/* 0678 */ 0x3551, 0x4D71, 0xFFFD, 0x524B, 0x3237, 0xFFFD, 0xFFFD, 0x524A, -/* 0680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x362A, 0xFFFD, 0xFFFD, 0x524C, 0xFFFD, -/* 0688 */ 0x4C71, 0x524D, 0xFFFD, 0x4E52, 0xFFFD, 0x387C, 0xFFFD, 0xFFFD, -/* 0690 */ 0xFFFD, 0xFFFD, 0x3836, 0x524E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0698 */ 0x5250, 0x524F, 0xFFFD, 0x3F5F, 0x3139, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06A0 */ 0x315E, 0x5251, 0xFFFD, 0x5252, 0xFFFD, 0xFFFD, 0x3837, 0xFFFD, -/* 06A8 */ 0xFFFD, 0x5253, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x356E, 0xFFFD, -/* 06B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B32, 0x5254, 0xFFFD, -/* 06B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B74, 0x3A35, 0x355A, 0x4D27, 0x4150, -/* 06C0 */ 0x483F, 0x3C7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D47, -/* 06C8 */ 0xFFFD, 0x3C68, 0x3C75, 0xFFFD, 0x3D76, 0xFFFD, 0x4840, 0xFFFD, -/* 06D0 */ 0xFFFD, 0xFFFD, 0x5257, 0xFFFD, 0x3143, 0x4151, 0x387D, 0x3845, -/* 06D8 */ 0x3667, 0xFFFD, 0xFFFD, 0x525B, 0x4321, 0x427E, 0x362B, 0x3E24, -/* 06E0 */ 0x525C, 0x525A, 0x3244, 0x4266, 0x3C38, 0x3B4B, 0x3126, 0xFFFD, -/* 06E8 */ 0xFFFD, 0x3370, 0x3966, 0x3B4A, 0xFFFD, 0x525D, 0xFFFD, 0xFFFD, -/* 06F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x525E, 0xFFFD, 0x3549, 0x3346, -/* 06F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3967, 0x3548, 0x445F, 0x3125, 0x4631, -/* 0700 */ 0x4C3E, 0x3921, 0x4D79, 0x4547, 0x387E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0708 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x372F, 0xFFFD, -/* 0710 */ 0x5267, 0xFFFD, 0x3663, 0x4B4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0718 */ 0xFFFD, 0x485D, 0xFFFD, 0xFFFD, 0x5266, 0xFFFD, 0x345E, 0x5261, -/* 0720 */ 0x5262, 0x5264, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0728 */ 0xFFFD, 0x5265, 0xFFFD, 0x355B, 0x3F61, 0xFFFD, 0x4A2D, 0x5263, -/* 0730 */ 0x525F, 0x3863, 0xFFFD, 0x5260, 0xFFFD, 0x4F24, 0xFFFD, 0xFFFD, -/* 0738 */ 0xFFFD, 0x4A72, 0xFFFD, 0x4468, 0x3862, 0x3970, 0xFFFD, 0xFFFD, -/* 0740 */ 0xFFFD, 0x5268, 0xFFFD, 0xFFFD, 0x465D, 0x526C, 0xFFFD, 0xFFFD, -/* 0748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C7E, 0xFFFD, -/* 0750 */ 0x3C76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x526F, 0x526D, -/* 0758 */ 0xFFFD, 0x4C23, 0xFFFD, 0x526A, 0x5273, 0x526E, 0xFFFD, 0xFFFD, -/* 0760 */ 0xFFFD, 0x5271, 0x3846, 0x4C3F, 0xFFFD, 0xFFFD, 0x5272, 0xFFFD, -/* 0768 */ 0xFFFD, 0xFFFD, 0x5274, 0xFFFD, 0x5276, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0770 */ 0xFFFD, 0x3A70, 0x4F42, 0xFFFD, 0x526B, 0x5269, 0x5275, 0xFFFD, -/* 0778 */ 0x5270, 0x5278, 0xFFFD, 0x5323, 0x527A, 0xFFFD, 0xFFFD, 0x527E, -/* 0780 */ 0xFFFD, 0xFFFD, 0x5321, 0x527B, 0xFFFD, 0xFFFD, 0x533E, 0xFFFD, -/* 0788 */ 0xFFFD, 0x3A69, 0x3331, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5279, -/* 0790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5325, 0x3076, 0x5324, 0xFFFD, 0x3025, -/* 0798 */ 0x494A, 0x5322, 0xFFFD, 0x527C, 0xFFFD, 0xFFFD, 0x5277, 0x527D, -/* 07A0 */ 0x3A48, 0x5326, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07A8 */ 0xFFFD, 0xFFFD, 0x3077, 0x532F, 0xFFFD, 0xFFFD, 0x5327, 0x5328, -/* 07B0 */ 0xFFFD, 0x3E25, 0x4B69, 0xFFFD, 0xFFFD, 0xFFFD, 0x532D, 0x532C, -/* 07B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x452F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x532E, 0xFFFD, 0xFFFD, 0x532B, 0xFFFD, -/* 07C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3134, 0xFFFD, 0x3A36, -/* 07D0 */ 0x3F30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D8 */ 0x5329, 0x4562, 0xFFFD, 0xFFFD, 0xFFFD, 0x532A, 0xFFFD, 0x3022, -/* 07E0 */ 0x5334, 0x4D23, 0xFFFD, 0x3E27, 0xFFFD, 0x533A, 0xFFFD, 0xFFFD, -/* 07E8 */ 0xFFFD, 0xFFFD, 0x5339, 0x5330, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07F0 */ 0x4243, 0xFFFD, 0x5331, 0xFFFD, 0xFFFD, 0xFFFD, 0x426F, 0x5336, -/* 07F8 */ 0x3E26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5333, 0xFFFD, -/* 0800 */ 0xFFFD, 0x4C64, 0xFFFD, 0xFFFD, 0xFFFD, 0x373C, 0xFFFD, 0xFFFD, -/* 0808 */ 0x5337, 0x5338, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5335, 0x533B, -/* 0810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5332, 0x5341, 0x5346, -/* 0818 */ 0xFFFD, 0x5342, 0xFFFD, 0x533D, 0xFFFD, 0xFFFD, 0x5347, 0x4131, -/* 0820 */ 0xFFFD, 0xFFFD, 0x5349, 0xFFFD, 0x3922, 0x533F, 0x437D, 0x5343, -/* 0828 */ 0x533C, 0x342D, 0xFFFD, 0x346E, 0x3365, 0x5344, 0x5340, 0xFFFD, -/* 0830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3776, 0x534A, -/* 0838 */ 0x5348, 0x4153, 0x354A, 0x362C, 0xFFFD, 0x5345, 0xFFFD, 0x3674, -/* 0840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3144, 0x534E, 0x534C, -/* 0848 */ 0xFFFD, 0x5427, 0x5351, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0850 */ 0x534B, 0xFFFD, 0x534F, 0xFFFD, 0xFFFD, 0x534D, 0xFFFD, 0xFFFD, -/* 0858 */ 0xFFFD, 0x3B4C, 0x5350, 0x5353, 0xFFFD, 0x5358, 0xFFFD, 0xFFFD, -/* 0860 */ 0xFFFD, 0x5356, 0x5355, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0868 */ 0xFFFD, 0xFFFD, 0x4332, 0xFFFD, 0xFFFD, 0x3245, 0xFFFD, 0xFFFD, -/* 0870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0878 */ 0x5352, 0xFFFD, 0x5354, 0x3E28, 0x3133, 0xFFFD, 0xFFFD, 0x5357, -/* 0880 */ 0x325E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5362, 0xFFFD, -/* 0888 */ 0x3E7C, 0x535E, 0xFFFD, 0x535C, 0xFFFD, 0x535D, 0xFFFD, 0x535F, -/* 0890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0898 */ 0xFFFD, 0x313D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4139, 0xFFFD, 0x5359, 0xFFFD, 0x535A, -/* 08A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08B0 */ 0xFFFD, 0xFFFD, 0x337A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5361, 0xFFFD, 0xFFFD, 0xFFFD, 0x346F, -/* 08C0 */ 0xFFFD, 0x5364, 0x5360, 0x5363, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A2E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4655, -/* 08D0 */ 0xFFFD, 0x4838, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5366, -/* 08D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5365, 0x3345, 0xFFFD, -/* 08E0 */ 0xFFFD, 0x5367, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x536A, 0xFFFD, -/* 08E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5369, 0x5368, 0xFFFD, 0x4739, 0xFFFD, -/* 08F0 */ 0xFFFD, 0x536B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08F8 */ 0xFFFD, 0xFFFD, 0x536C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0900 */ 0x536E, 0xFFFD, 0x536D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0908 */ 0x5370, 0xFFFD, 0xFFFD, 0xFFFD, 0x5373, 0x5371, 0x536F, 0x5372, -/* 0910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5374, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0918 */ 0xFFFD, 0xFFFD, 0x5375, 0xFFFD, 0xFFFD, 0x5376, 0xFFFD, 0x5377, -/* 0920 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5378, 0x5145, 0xFFFD, 0x3C7C, 0x3B4D, -/* 0928 */ 0xFFFD, 0xFFFD, 0x3273, 0xFFFD, 0x3078, 0xFFFD, 0xFFFD, 0x4344, -/* 0930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0938 */ 0xFFFD, 0xFFFD, 0x5379, 0xFFFD, 0x3A24, 0xFFFD, 0x304F, 0x3F5E, -/* 0940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x537A, 0x3847, 0xFFFD, -/* 0948 */ 0xFFFD, 0x3971, 0xFFFD, 0x537C, 0x537B, 0xFFFD, 0xFFFD, 0x4A60, -/* 0950 */ 0x537D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5421, 0x537E, 0xFFFD, 0x5422, -/* 0958 */ 0xFFFD, 0x5423, 0xFFFD, 0x3777, 0xFFFD, 0xFFFD, 0x3160, 0x5424, -/* 0960 */ 0xFFFD, 0xFFFD, 0x5426, 0xFFFD, 0x5425, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0968 */ 0x5428, 0xFFFD, 0xFFFD, 0x455A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0970 */ 0xFFFD, 0xFFFD, 0x5429, 0x3035, 0x3A5F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0978 */ 0xFFFD, 0x373D, 0xFFFD, 0xFFFD, 0x434F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x542A, 0x542B, 0xFFFD, 0xFFFD, 0x542D, -/* 0988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x542E, 0xFFFD, 0x3A64, 0xFFFD, -/* 0990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3651, 0xFFFD, 0xFFFD, 0x4B37, 0xFFFD, -/* 0998 */ 0xFFFD, 0xFFFD, 0x542C, 0x542F, 0x3A41, 0x3923, 0x5433, 0xFFFD, -/* 09A0 */ 0xFFFD, 0x3A25, 0xFFFD, 0x4333, 0xFFFD, 0xFFFD, 0x5430, 0x445A, -/* 09A8 */ 0x5434, 0xFFFD, 0xFFFD, 0x3F62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09B0 */ 0xFFFD, 0x5432, 0x5435, 0xFFFD, 0x373F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5436, 0x5437, 0xFFFD, 0x3924, -/* 09C0 */ 0x3340, 0x5439, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x543A, -/* 09C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x543B, 0xFFFD, 0xFFFD, -/* 09D0 */ 0x5438, 0x5431, 0xFFFD, 0xFFFD, 0x543C, 0xFFFD, 0xFFFD, 0x543D, -/* 09D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B64, 0xFFFD, 0xFFFD, 0x3E6B, -/* 09E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x543F, 0x5440, 0x543E, 0xFFFD, 0x5442, -/* 09E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4738, 0xFFFD, 0xFFFD, -/* 09F0 */ 0x3068, 0x4956, 0xFFFD, 0xFFFD, 0x5443, 0x3E7D, 0xFFFD, 0xFFFD, -/* 09F8 */ 0x3C39, 0xFFFD, 0x475D, 0x3470, 0xFFFD, 0x3A6B, 0xFFFD, 0xFFFD, -/* 0A00 */ 0xFFFD, 0x4B59, 0xFFFD, 0x4632, 0xFFFD, 0xFFFD, 0x3778, 0x424F, -/* 0A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5441, 0x5444, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4244, 0xFFFD, -/* 0A18 */ 0xFFFD, 0xFFFD, 0x5445, 0xFFFD, 0xFFFD, 0xFFFD, 0x5446, 0xFFFD, -/* 0A20 */ 0xFFFD, 0xFFFD, 0x5448, 0xFFFD, 0xFFFD, 0x4469, 0xFFFD, 0xFFFD, -/* 0A28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x342E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A30 */ 0x7421, 0x3161, 0x4A73, 0xFFFD, 0xFFFD, 0x3E6C, 0x4548, 0xFFFD, -/* 0A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A66, 0xFFFD, 0xFFFD, 0x544E, 0xFFFD, -/* 0A40 */ 0xFFFD, 0x4A3D, 0x4E5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3274, 0x544A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A50 */ 0xFFFD, 0xFFFD, 0x413A, 0x544D, 0xFFFD, 0x4563, 0xFFFD, 0xFFFD, -/* 0A58 */ 0x4549, 0x4564, 0x4839, 0x444D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A49, -/* 0A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5449, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A68 */ 0xFFFD, 0xFFFD, 0x3176, 0xFFFD, 0x4536, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A70 */ 0xFFFD, 0x544B, 0xFFFD, 0x5447, 0xFFFD, 0xFFFD, 0x3F50, 0xFFFD, -/* 0A78 */ 0xFFFD, 0xFFFD, 0x544F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D4E, -/* 0A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x362D, 0xFFFD, 0x5450, 0x4A68, -/* 0A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x417D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A90 */ 0x4446, 0xFFFD, 0xFFFD, 0x5452, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B4F, 0xFFFD, 0xFFFD, 0x5453, -/* 0AA0 */ 0xFFFD, 0xFFFD, 0x5458, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A2F, -/* 0AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5457, 0x5451, 0x5454, 0x5456, -/* 0AB0 */ 0xFFFD, 0xFFFD, 0x3A26, 0xFFFD, 0xFFFD, 0x4A49, 0xFFFD, 0xFFFD, -/* 0AB8 */ 0xFFFD, 0x5459, 0xFFFD, 0x4345, 0xFFFD, 0xFFFD, 0x3275, 0xFFFD, -/* 0AC0 */ 0x3E6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x545B, 0xFFFD, 0x545A, -/* 0AC8 */ 0xFFFD, 0x3968, 0xFFFD, 0x545C, 0x545E, 0x545D, 0xFFFD, 0xFFFD, -/* 0AD0 */ 0x5460, 0xFFFD, 0x5455, 0x5462, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AD8 */ 0x5461, 0x545F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B4E, -/* 0AE0 */ 0x3F51, 0xFFFD, 0x4154, 0x5463, 0x403C, 0x306D, 0x4764, 0xFFFD, -/* 0AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x445B, 0xFFFD, 0x5465, 0x5464, 0x5466, -/* 0AF0 */ 0x5467, 0x5468, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5469, 0xFFFD, -/* 0AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A51, 0x546A, 0xFFFD, -/* 0B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3246, 0x546B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B08 */ 0xFFFD, 0x4D3C, 0x3330, 0xFFFD, 0x5249, 0x3D48, 0x423F, 0x546C, -/* 0B10 */ 0x4C6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C34, 0xFFFD, -/* 0B18 */ 0xFFFD, 0x546E, 0xFFFD, 0x4267, 0xFFFD, 0x4537, 0x4240, 0x4957, -/* 0B20 */ 0x546F, 0x5470, 0x317B, 0xFFFD, 0xFFFD, 0x3C3A, 0x5471, 0xFFFD, -/* 0B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3050, 0x5472, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B30 */ 0xFFFD, 0xFFFD, 0x5473, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B38 */ 0x3162, 0xFFFD, 0xFFFD, 0x3471, 0x4660, 0x4A74, 0xFFFD, 0xFFFD, -/* 0B40 */ 0xFFFD, 0xFFFD, 0x5477, 0x4155, 0x5476, 0x3740, 0xFFFD, 0xFFFD, -/* 0B48 */ 0x4B5B, 0x5475, 0xFFFD, 0x4565, 0x5479, 0xFFFD, 0x5478, 0xFFFD, -/* 0B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x547B, 0xFFFD, 0x547A, 0xFFFD, -/* 0B58 */ 0xFFFD, 0x317C, 0xFFFD, 0x547C, 0x3E29, 0x547E, 0x4325, 0xFFFD, -/* 0B60 */ 0x547D, 0xFFFD, 0x4A33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D77, -/* 0B68 */ 0x455B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5521, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B70 */ 0xFFFD, 0x3925, 0xFFFD, 0xFFFD, 0xFFFD, 0x5522, 0x4721, 0x485E, -/* 0B78 */ 0x4C51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4725, 0xFFFD, -/* 0B80 */ 0xFFFD, 0x552B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3538, -/* 0B88 */ 0xFFFD, 0xFFFD, 0x4D45, 0xFFFD, 0xFFFD, 0x4C2F, 0xFFFD, 0x562C, -/* 0B90 */ 0xFFFD, 0x5523, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5526, -/* 0B98 */ 0xFFFD, 0x4245, 0xFFFD, 0xFFFD, 0x4B38, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BA0 */ 0x454A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5527, 0xFFFD, -/* 0BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B65, 0xFFFD, 0x3A4A, -/* 0BB0 */ 0xFFFD, 0xFFFD, 0x3E2A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BB8 */ 0xFFFD, 0xFFFD, 0x5528, 0xFFFD, 0xFFFD, 0x3B50, 0xFFFD, 0x3B4F, -/* 0BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3039, 0x3848, 0xFFFD, 0x402B, -/* 0BC8 */ 0x3051, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x552C, 0x552D, 0xFFFD, -/* 0BD0 */ 0x552A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BD8 */ 0xFFFD, 0x3138, 0x342F, 0xFFFD, 0x5529, 0xFFFD, 0x4C45, 0x4931, -/* 0BE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BE8 */ 0xFFFD, 0xFFFD, 0x3028, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3079, -/* 0BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B51, 0xFFFD, 0x3052, 0xFFFD, 0x3023, -/* 0BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5532, 0xFFFD, 0xFFFD, -/* 0C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5530, 0xFFFD, 0xFFFD, -/* 0C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C3C, 0xFFFD, 0x5533, 0xFFFD, -/* 0C10 */ 0x5531, 0xFFFD, 0xFFFD, 0x552F, 0x3F31, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C18 */ 0xFFFD, 0x552E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A5A, 0xFFFD, 0xFFFD, -/* 0C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3864, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C28 */ 0xFFFD, 0x5537, 0x5538, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C30 */ 0x3E2B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5534, 0x4F2C, 0xFFFD, 0xFFFD, -/* 0C38 */ 0xFFFD, 0xFFFD, 0x474C, 0xFFFD, 0xFFFD, 0x5536, 0x3A27, 0xFFFD, -/* 0C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5539, 0xFFFD, -/* 0C48 */ 0xFFFD, 0xFFFD, 0x4958, 0xFFFD, 0xFFFD, 0xFFFD, 0x553A, 0xFFFD, -/* 0C50 */ 0x5535, 0x475E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C58 */ 0xFFFD, 0x553B, 0x4932, 0x553C, 0x5540, 0x553D, 0xFFFD, 0xFFFD, -/* 0C60 */ 0x3247, 0x553F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C68 */ 0x3C3B, 0xFFFD, 0x553E, 0x3779, 0xFFFD, 0xFFFD, 0xFFFD, 0x554C, -/* 0C70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5545, 0x5542, 0xFFFD, -/* 0C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C80 */ 0x4364, 0xFFFD, 0x5541, 0xFFFD, 0xFFFD, 0x5543, 0xFFFD, 0xFFFD, -/* 0C88 */ 0x5544, 0x5546, 0x5547, 0x3472, 0xFFFD, 0x5549, 0x5548, 0xFFFD, -/* 0C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C98 */ 0x554A, 0x3E6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CA0 */ 0xFFFD, 0x554D, 0xFFFD, 0x445C, 0xFFFD, 0xFFFD, 0xFFFD, 0x3145, -/* 0CA8 */ 0xFFFD, 0x554B, 0xFFFD, 0xFFFD, 0xFFFD, 0x554E, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x554F, 0xFFFD, 0x5552, -/* 0CB8 */ 0xFFFD, 0xFFFD, 0x5550, 0xFFFD, 0x5551, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B52, -/* 0CC8 */ 0x5553, 0xFFFD, 0xFFFD, 0x3926, 0x5554, 0xFFFD, 0x3B7A, 0x4238, -/* 0CD0 */ 0xFFFD, 0x5555, 0x5556, 0x3B5A, 0x3927, 0xFFFD, 0x4C52, 0xFFFD, -/* 0CD8 */ 0xFFFD, 0xFFFD, 0x3528, 0x3849, 0x5557, 0x3358, 0xFFFD, 0xFFFD, -/* 0CE0 */ 0x5558, 0xFFFD, 0x4239, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5559, -/* 0CE8 */ 0x5623, 0xFFFD, 0x555A, 0xFFFD, 0x555B, 0xFFFD, 0xFFFD, 0x555C, -/* 0CF0 */ 0xFFFD, 0x555E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x555F, -/* 0CF8 */ 0xFFFD, 0xFFFD, 0x5560, 0xFFFD, 0x4270, 0xFFFD, 0x3127, 0x3C69, -/* 0D00 */ 0x3042, 0xFFFD, 0x4157, 0x3430, 0x3C35, 0xFFFD, 0x3928, 0xFFFD, -/* 0D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4566, 0xFFFD, 0x3D21, 0x3431, -/* 0D10 */ 0x4368, 0x446A, 0x3038, 0x3539, 0x4A75, 0xFFFD, 0x3C42, 0xFFFD, -/* 0D18 */ 0xFFFD, 0x3552, 0x406B, 0x3C3C, 0x4D28, 0x5561, 0xFFFD, 0xFFFD, -/* 0D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x355C, 0xFFFD, 0x3A4B, -/* 0D28 */ 0xFFFD, 0xFFFD, 0x3332, 0x3163, 0x3E2C, 0x3248, 0xFFFD, 0x5562, -/* 0D30 */ 0x4D46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D49, 0xFFFD, -/* 0D38 */ 0xFFFD, 0x3C64, 0x5563, 0x3473, 0x4652, 0x4C29, 0x5564, 0xFFFD, -/* 0D40 */ 0x5565, 0xFFFD, 0xFFFD, 0x4959, 0xFFFD, 0xFFFD, 0xFFFD, 0x5567, -/* 0D48 */ 0xFFFD, 0x3428, 0x3677, 0x5566, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D50 */ 0xFFFD, 0xFFFD, 0x3432, 0xFFFD, 0x3F32, 0x556B, 0x3B21, 0xFFFD, -/* 0D58 */ 0x3249, 0x556A, 0xFFFD, 0x5568, 0x556C, 0x5569, 0x472B, 0x5C4D, -/* 0D60 */ 0x3F33, 0xFFFD, 0x556D, 0xFFFD, 0xFFFD, 0x4E40, 0xFFFD, 0x556E, -/* 0D68 */ 0xFFFD, 0xFFFD, 0x5570, 0xFFFD, 0x437E, 0x556F, 0xFFFD, 0x4023, -/* 0D70 */ 0xFFFD, 0x3B7B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4250, 0x3C77, 0xFFFD, -/* 0D78 */ 0x4975, 0x406C, 0xFFFD, 0x3C4D, 0x5571, 0x3E2D, 0x5572, 0x5573, -/* 0D80 */ 0x3053, 0x423A, 0x3F52, 0xFFFD, 0x5574, 0x4633, 0x3E2E, 0xFFFD, -/* 0D88 */ 0x3E2F, 0xFFFD, 0x5575, 0xFFFD, 0xFFFD, 0x406D, 0xFFFD, 0xFFFD, -/* 0D90 */ 0xFFFD, 0x3E30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5576, -/* 0D98 */ 0xFFFD, 0x5577, 0xFFFD, 0x4C60, 0xFFFD, 0xFFFD, 0xFFFD, 0x5578, -/* 0DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3646, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DA8 */ 0x3D22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5579, -/* 0DB0 */ 0x557A, 0x3C5C, 0x3F2C, 0x4674, 0x3F54, 0x4878, 0x4722, 0x3649, -/* 0DB8 */ 0x557B, 0xFFFD, 0xFFFD, 0xFFFD, 0x356F, 0x557C, 0xFFFD, 0x367E, -/* 0DC0 */ 0xFFFD, 0x464F, 0x3230, 0xFFFD, 0x3B53, 0x557D, 0x5622, 0x5621, -/* 0DC8 */ 0x367D, 0xFFFD, 0x557E, 0xFFFD, 0x4538, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4230, 0xFFFD, 0x454B, -/* 0DD8 */ 0x3C48, 0xFFFD, 0xFFFD, 0x4158, 0x4D7A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5624, 0xFFFD, 0x5625, 0x4656, 0xFFFD, -/* 0DE8 */ 0x3B33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5627, 0xFFFD, 0xFFFD, -/* 0DF0 */ 0x5628, 0x5629, 0xFFFD, 0xFFFD, 0xFFFD, 0x3474, 0x562A, 0xFFFD, -/* 0DF8 */ 0xFFFD, 0x562B, 0x322C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E00 */ 0xFFFD, 0x413B, 0x3464, 0xFFFD, 0x562D, 0x4C28, 0xFFFD, 0xFFFD, -/* 0E08 */ 0xFFFD, 0xFFFD, 0x4252, 0xFFFD, 0x3359, 0xFFFD, 0xFFFD, 0x562F, -/* 0E10 */ 0x5631, 0x345F, 0xFFFD, 0xFFFD, 0x562E, 0x5630, 0xFFFD, 0x5633, -/* 0E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5632, 0xFFFD, -/* 0E20 */ 0x5634, 0x5635, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E28 */ 0x463D, 0x362E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E30 */ 0x3265, 0x5636, 0x563B, 0xFFFD, 0xFFFD, 0x5639, 0xFFFD, 0x4A77, -/* 0E38 */ 0x4A76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4567, 0xFFFD, -/* 0E40 */ 0xFFFD, 0xFFFD, 0x5638, 0x3D54, 0xFFFD, 0x5637, 0xFFFD, 0xFFFD, -/* 0E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F72, -/* 0E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x563C, 0xFFFD, 0xFFFD, 0x3A6A, 0xFFFD, -/* 0E58 */ 0xFFFD, 0x5642, 0xFFFD, 0xFFFD, 0x5643, 0x563D, 0x3333, 0x563E, -/* 0E60 */ 0x5647, 0x5646, 0x5645, 0x5641, 0xFFFD, 0xFFFD, 0xFFFD, 0x5640, -/* 0E68 */ 0xFFFD, 0xFFFD, 0x5644, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E70 */ 0xFFFD, 0x4A78, 0x564B, 0x5648, 0xFFFD, 0x564A, 0xFFFD, 0x4D72, -/* 0E78 */ 0xFFFD, 0x5649, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x563F, 0x3F73, 0xFFFD, 0xFFFD, 0x564C, -/* 0E88 */ 0xFFFD, 0xFFFD, 0x3A37, 0xFFFD, 0xFFFD, 0xFFFD, 0x564D, 0xFFFD, -/* 0E90 */ 0xFFFD, 0x564E, 0x5651, 0xFFFD, 0x5650, 0xFFFD, 0xFFFD, 0x564F, -/* 0E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4568, 0x563A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EA0 */ 0x5657, 0x5653, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5652, 0xFFFD, -/* 0EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EB0 */ 0x5654, 0xFFFD, 0x5655, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5658, 0xFFFD, 0xFFFD, 0x4E66, 0xFFFD, -/* 0EC0 */ 0x5659, 0x5656, 0x565A, 0xFFFD, 0xFFFD, 0x3460, 0x565B, 0xFFFD, -/* 0EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x565D, 0x565C, 0xFFFD, 0xFFFD, 0x565E, -/* 0ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x565F, 0xFFFD, 0x406E, 0x3D23, -/* 0ED8 */ 0xFFFD, 0xFFFD, 0x3D64, 0xFFFD, 0x4163, 0xFFFD, 0x3929, 0x3A38, -/* 0EE0 */ 0x392A, 0x3570, 0xFFFD, 0xFFFD, 0x5660, 0xFFFD, 0xFFFD, 0x3A39, -/* 0EE8 */ 0xFFFD, 0xFFFD, 0x384A, 0x5661, 0x4C26, 0x4743, 0x5662, 0xFFFD, -/* 0EF0 */ 0x392B, 0xFFFD, 0xFFFD, 0xFFFD, 0x342C, 0xFFFD, 0x4327, 0x3652, -/* 0EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B54, 0x495B, 0xFFFD, 0xFFFD, 0x4841, -/* 0F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5663, 0x3475, 0xFFFD, 0xFFFD, -/* 0F08 */ 0xFFFD, 0xFFFD, 0x5666, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4421, -/* 0F10 */ 0xFFFD, 0xFFFD, 0x5665, 0x5664, 0x5667, 0xFFFD, 0x446B, 0xFFFD, -/* 0F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F63, 0xFFFD, -/* 0F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B55, 0xFFFD, 0x404A, 0xFFFD, -/* 0F28 */ 0x4253, 0x3522, 0xFFFD, 0xFFFD, 0x4422, 0xFFFD, 0xFFFD, 0x5668, -/* 0F30 */ 0x5669, 0x3E6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B39, 0xFFFD, -/* 0F38 */ 0xFFFD, 0x566C, 0xFFFD, 0xFFFD, 0x566B, 0x566A, 0x497D, 0xFFFD, -/* 0F40 */ 0x5673, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B5A, 0xFFFD, 0x566D, -/* 0F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x566F, 0x4B6B, 0xFFFD, -/* 0F50 */ 0x566E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F58 */ 0x5670, 0xFFFD, 0x4828, 0x5671, 0x4A3E, 0x5672, 0x3433, 0x4A3F, -/* 0F60 */ 0x472F, 0x5674, 0x5675, 0xFFFD, 0x392C, 0x3434, 0x5676, 0x3838, -/* 0F68 */ 0x4D44, 0x4D29, 0x3476, 0x5678, 0xFFFD, 0x4423, 0xFFFD, 0x392D, -/* 0F70 */ 0x3E31, 0xFFFD, 0xFFFD, 0x485F, 0xFFFD, 0xFFFD, 0x3E32, 0xFFFD, -/* 0F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F80 */ 0xFFFD, 0x446C, 0x4A79, 0x4539, 0xFFFD, 0xFFFD, 0x392E, 0xFFFD, -/* 0F88 */ 0x495C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5679, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F90 */ 0xFFFD, 0xFFFD, 0x4559, 0x3A42, 0xFFFD, 0xFFFD, 0xFFFD, 0x384B, -/* 0F98 */ 0xFFFD, 0x446D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FA0 */ 0xFFFD, 0x3043, 0x3D6E, 0x392F, 0x4D47, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x567A, 0x567B, 0x4751, -/* 0FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x567C, 0x4E77, 0x4F2D, 0xFFFD, -/* 0FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x567E, 0x567D, 0xFFFD, 0xFFFD, 0x3347, -/* 0FC0 */ 0xFFFD, 0xFFFD, 0x5721, 0xFFFD, 0xFFFD, 0xFFFD, 0x5724, 0x5725, -/* 0FC8 */ 0xFFFD, 0x5723, 0xFFFD, 0x4940, 0x3E33, 0x5727, 0x5726, 0x5722, -/* 0FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5728, 0x5729, 0xFFFD, 0xFFFD, -/* 0FD8 */ 0x572A, 0xFFFD, 0xFFFD, 0xFFFD, 0x572D, 0x572B, 0xFFFD, 0x572C, -/* 0FE0 */ 0x572E, 0xFFFD, 0x3164, 0x446E, 0x572F, 0xFFFD, 0x377A, 0x3276, -/* 0FE8 */ 0x4736, 0xFFFD, 0x5730, 0x467B, 0xFFFD, 0x4A5B, 0xFFFD, 0x5731, -/* 0FF0 */ 0x4F2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5732, 0x4A40, 0x5735, -/* 0FF8 */ 0x5021, 0x5031, 0xFFFD, 0x3C30, 0x4675, 0x5736, 0xFFFD, 0x355D, -/* 1000 */ 0x4424, 0x307A, 0x5737, 0x4A26, 0x3930, 0xFFFD, 0xFFFD, 0x4350, -/* 1008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x446F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1010 */ 0xFFFD, 0x4C6F, 0x3839, 0x384C, 0xFFFD, 0x5738, 0xFFFD, 0xFFFD, -/* 1018 */ 0xFFFD, 0x5739, 0xFFFD, 0x573F, 0xFFFD, 0x3C65, 0xFFFD, 0xFFFD, -/* 1020 */ 0xFFFD, 0x4425, 0xFFFD, 0x362F, 0x573A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1028 */ 0x492B, 0xFFFD, 0x4346, 0xFFFD, 0xFFFD, 0x573B, 0xFFFD, 0xFFFD, -/* 1030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x573C, 0xFFFD, 0x3630, 0xFFFD, -/* 1038 */ 0x573D, 0xFFFD, 0x573E, 0xFFFD, 0xFFFD, 0x5740, 0xFFFD, 0x4576, -/* 1040 */ 0xFFFD, 0xFFFD, 0x5741, 0x5742, 0xFFFD, 0x5743, 0xFFFD, 0xFFFD, -/* 1048 */ 0x5734, 0x5733, 0xFFFD, 0xFFFD, 0xFFFD, 0x5744, 0x3741, 0xFFFD, -/* 1050 */ 0xFFFD, 0xFFFD, 0x4927, 0xFFFD, 0xFFFD, 0x3A4C, 0x4937, 0x4426, -/* 1058 */ 0x494B, 0x5745, 0xFFFD, 0xFFFD, 0x3E34, 0x3146, 0xFFFD, 0x5746, -/* 1060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5747, 0xFFFD, 0x4C72, 0xFFFD, 0xFFFD, -/* 1068 */ 0x4860, 0xFFFD, 0xFFFD, 0x574A, 0x317D, 0x402C, 0x5749, 0x5748, -/* 1070 */ 0x3742, 0x4254, 0xFFFD, 0x574E, 0x574C, 0xFFFD, 0x574B, 0x4E27, -/* 1078 */ 0x3865, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D79, 0x574D, 0x454C, 0x3D3E, -/* 1080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4640, 0x5751, 0x5750, 0xFFFD, 0xFFFD, -/* 1088 */ 0xFFFD, 0xFFFD, 0x574F, 0xFFFD, 0x5752, 0x3866, 0xFFFD, 0xFFFD, -/* 1090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5753, 0x497C, 0x3D5B, 0xFFFD, -/* 1098 */ 0xFFFD, 0x5754, 0x4879, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4641, -/* 10A0 */ 0x4427, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4530, 0xFFFD, 0xFFFD, -/* 10A8 */ 0x5755, 0x352B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F34, -/* 10B0 */ 0xFFFD, 0x492C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10B8 */ 0x3477, 0x4726, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10C0 */ 0xFFFD, 0xFFFD, 0x5756, 0x3B56, 0x4B3A, 0x4B3B, 0xFFFD, 0xFFFD, -/* 10C8 */ 0x317E, 0x575B, 0xFFFD, 0xFFFD, 0x4369, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10D0 */ 0x5758, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3277, -/* 10D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x582D, 0x575A, 0xFFFD, 0xFFFD, -/* 10E0 */ 0xFFFD, 0x4730, 0xFFFD, 0xFFFD, 0x5759, 0xFFFD, 0xFFFD, 0x5757, -/* 10E8 */ 0xFFFD, 0x397A, 0xFFFD, 0x575D, 0x5763, 0x5769, 0x5761, 0xFFFD, -/* 10F0 */ 0x455C, 0xFFFD, 0xFFFD, 0x5766, 0x495D, 0xFFFD, 0xFFFD, 0x5760, -/* 10F8 */ 0xFFFD, 0x5765, 0x4E67, 0x3B57, 0xFFFD, 0xFFFD, 0x4255, 0x575E, -/* 1100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x355E, 0x5768, 0x402D, 0x3165, 0x5762, -/* 1108 */ 0x3278, 0x5767, 0xFFFD, 0xFFFD, 0xFFFD, 0x3631, 0xFFFD, 0x5764, -/* 1110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1118 */ 0x576A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x576C, -/* 1120 */ 0x5776, 0x5774, 0xFFFD, 0xFFFD, 0x5771, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1128 */ 0x5770, 0x4E78, 0xFFFD, 0x5772, 0xFFFD, 0xFFFD, 0x3632, 0xFFFD, -/* 1130 */ 0x3931, 0xFFFD, 0xFFFD, 0x3D7A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5779, -/* 1138 */ 0x576B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x576F, 0x575F, 0xFFFD, -/* 1140 */ 0x327A, 0x5773, 0x5775, 0x4351, 0xFFFD, 0xFFFD, 0x3A28, 0x3238, -/* 1148 */ 0x576D, 0x5778, 0x5777, 0x3633, 0xFFFD, 0x4229, 0x3366, 0xFFFD, -/* 1150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3743, 0xFFFD, 0x576E, 0xFFFD, 0xFFFD, -/* 1158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x577A, -/* 1160 */ 0xFFFD, 0x577D, 0x5821, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C3D, -/* 1168 */ 0xFFFD, 0x5827, 0x4470, 0x577B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1170 */ 0x5825, 0xFFFD, 0x3279, 0xFFFD, 0x5823, 0x5824, 0xFFFD, 0xFFFD, -/* 1178 */ 0x577E, 0x5822, 0xFFFD, 0xFFFD, 0xFFFD, 0x3867, 0x4D2A, 0xFFFD, -/* 1180 */ 0xFFFD, 0x3435, 0xFFFD, 0xFFFD, 0x3159, 0x5826, 0xFFFD, 0x473A, -/* 1188 */ 0x302D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1190 */ 0x4861, 0x575C, 0x582C, 0x5830, 0x4C65, 0xFFFD, 0x5829, 0xFFFD, -/* 1198 */ 0xFFFD, 0xFFFD, 0x4569, 0x582E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E70, 0x582F, 0x4657, 0xFFFD, 0xFFFD, -/* 11A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F47, -/* 11B0 */ 0xFFFD, 0x582B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5831, 0xFFFD, -/* 11B8 */ 0x397B, 0xFFFD, 0x404B, 0xFFFD, 0xFFFD, 0x3054, 0x582A, 0x5828, -/* 11C0 */ 0xFFFD, 0x415A, 0xFFFD, 0xFFFD, 0xFFFD, 0x577C, 0x3B34, 0xFFFD, -/* 11C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4246, 0x583D, -/* 11D0 */ 0xFFFD, 0x415B, 0x5838, 0xFFFD, 0x5835, 0x5836, 0xFFFD, 0x3C66, -/* 11D8 */ 0x5839, 0x583C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5837, 0x3D25, -/* 11E0 */ 0xFFFD, 0x583A, 0xFFFD, 0xFFFD, 0x5834, 0xFFFD, 0x4C7C, 0x4C7B, -/* 11E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x583E, 0x583F, 0x3055, 0xFFFD, 0xFFFD, -/* 11F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5833, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11F8 */ 0x3672, 0x3026, 0xFFFD, 0xFFFD, 0xFFFD, 0x3436, 0xFFFD, 0x583B, -/* 1200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5843, 0x5842, 0xFFFD, -/* 1208 */ 0xFFFD, 0xFFFD, 0x5847, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1210 */ 0xFFFD, 0xFFFD, 0x5848, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1218 */ 0xFFFD, 0xFFFD, 0x5846, 0x5849, 0x5841, 0x5845, 0xFFFD, 0xFFFD, -/* 1220 */ 0x584A, 0xFFFD, 0x584B, 0xFFFD, 0xFFFD, 0x5840, 0x3B7C, 0xFFFD, -/* 1228 */ 0x5844, 0x4256, 0x3932, 0x5832, 0x3F35, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1230 */ 0xFFFD, 0x5858, 0xFFFD, 0x4A69, 0xFFFD, 0xFFFD, 0x584E, 0x584F, -/* 1238 */ 0x5850, 0xFFFD, 0xFFFD, 0x5857, 0xFFFD, 0x5856, 0xFFFD, 0xFFFD, -/* 1240 */ 0x4B7D, 0x3437, 0xFFFD, 0x5854, 0xFFFD, 0x3745, 0x3334, 0xFFFD, -/* 1248 */ 0xFFFD, 0x5851, 0xFFFD, 0xFFFD, 0x4E38, 0x5853, 0x3056, 0x5855, -/* 1250 */ 0xFFFD, 0x584C, 0x5852, 0x5859, 0x3744, 0x584D, 0xFFFD, 0xFFFD, -/* 1258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D5D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1260 */ 0x4D2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x585C, 0xFFFD, 0xFFFD, -/* 1268 */ 0x5860, 0xFFFD, 0xFFFD, 0xFFFD, 0x417E, 0xFFFD, 0x4E79, 0x5861, -/* 1270 */ 0xFFFD, 0xFFFD, 0x585E, 0xFFFD, 0x585B, 0xFFFD, 0xFFFD, 0x585A, -/* 1278 */ 0x585F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1280 */ 0xFFFD, 0xFFFD, 0x4A30, 0xFFFD, 0xFFFD, 0x4634, 0xFFFD, 0x3746, -/* 1288 */ 0xFFFD, 0x5862, 0x585D, 0xFFFD, 0x5863, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1290 */ 0x377B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3231, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1298 */ 0x586B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3438, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A0 */ 0xFFFD, 0x5869, 0xFFFD, 0xFFFD, 0x586A, 0x3A29, 0x5868, 0x5866, -/* 12A8 */ 0x5865, 0x586C, 0x5864, 0x586E, 0xFFFD, 0xFFFD, 0x327B, 0x5870, -/* 12B0 */ 0xFFFD, 0xFFFD, 0x586F, 0x4428, 0xFFFD, 0x5873, 0xFFFD, 0x5871, -/* 12B8 */ 0x5867, 0x377C, 0xFFFD, 0x5872, 0xFFFD, 0x5876, 0x5875, 0x5877, -/* 12C0 */ 0x5874, 0x5878, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12C8 */ 0xFFFD, 0x5879, 0x587A, 0x4A6A, 0xFFFD, 0x587C, 0x587B, 0x3D3F, -/* 12D0 */ 0xFFFD, 0x402E, 0x3266, 0x327C, 0xFFFD, 0x587D, 0xFFFD, 0x303F, -/* 12D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x404C, 0x587E, 0xFFFD, 0x6C43, 0x5921, -/* 12E0 */ 0x3761, 0xFFFD, 0x5922, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x406F, -/* 12E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5923, 0xFFFD, 0xFFFD, 0xFFFD, 0x5924, -/* 12F0 */ 0x353A, 0x5925, 0xFFFD, 0x5926, 0x5927, 0x4257, 0xFFFD, 0xFFFD, -/* 12F8 */ 0xFFFD, 0x384D, 0xFFFD, 0xFFFD, 0x4C61, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1300 */ 0x4B3C, 0x3D6A, 0x5928, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1308 */ 0x4070, 0x6E3D, 0x4862, 0xFFFD, 0x3C6A, 0xFFFD, 0x3A4D, 0x5929, -/* 1310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4247, 0xFFFD, 0x4A27, 0xFFFD, -/* 1318 */ 0xFFFD, 0x4271, 0xFFFD, 0xFFFD, 0x592C, 0xFFFD, 0xFFFD, 0x592A, -/* 1320 */ 0xFFFD, 0x592D, 0xFFFD, 0xFFFD, 0x592B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1328 */ 0xFFFD, 0x592E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A31, -/* 1330 */ 0xFFFD, 0xFFFD, 0x3037, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x495E, -/* 1338 */ 0xFFFD, 0xFFFD, 0x4863, 0xFFFD, 0xFFFD, 0x592F, 0xFFFD, 0x5932, -/* 1340 */ 0x3E35, 0x353B, 0xFFFD, 0x5930, 0x5937, 0x3E36, 0xFFFD, 0xFFFD, -/* 1348 */ 0xFFFD, 0xFFFD, 0x5931, 0x4744, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1350 */ 0xFFFD, 0xFFFD, 0x4D5E, 0x5933, 0x5934, 0x5938, 0x456A, 0x5935, -/* 1358 */ 0x3933, 0x405E, 0xFFFD, 0xFFFD, 0x5946, 0x4834, 0xFFFD, 0x4272, -/* 1360 */ 0x4864, 0x5A2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A7A, 0xFFFD, -/* 1368 */ 0xFFFD, 0xFFFD, 0x4471, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B75, 0xFFFD, -/* 1370 */ 0x593B, 0x3221, 0x436A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5944, -/* 1378 */ 0xFFFD, 0xFFFD, 0x4334, 0x593E, 0x5945, 0x5940, 0x5947, 0x5943, -/* 1380 */ 0xFFFD, 0x5942, 0x476F, 0xFFFD, 0x593C, 0x327D, 0x593A, 0x3571, -/* 1388 */ 0x4273, 0x5936, 0xFFFD, 0xFFFD, 0x5939, 0x3934, 0x405B, 0xFFFD, -/* 1390 */ 0x3E37, 0x5941, 0x4752, 0xFFFD, 0xFFFD, 0x3572, 0x3348, 0xFFFD, -/* 1398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13A0 */ 0xFFFD, 0x3367, 0x3F21, 0x5949, 0x594E, 0xFFFD, 0x594A, 0xFFFD, -/* 13A8 */ 0x377D, 0xFFFD, 0x594F, 0x3B22, 0x3969, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D26, 0x593D, 0xFFFD, 0x3B7D, 0x594C, -/* 13B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B58, 0x594D, 0x3044, 0xFFFD, -/* 13C0 */ 0xFFFD, 0x5948, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4429, 0xFFFD, -/* 13C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3573, 0xFFFD, -/* 13D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3634, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x594B, 0x3027, 0xFFFD, 0xFFFD, -/* 13E0 */ 0x3A43, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F36, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4472, -/* 13F0 */ 0xFFFD, 0xFFFD, 0x4854, 0x5951, 0x415E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x422A, 0xFFFD, -/* 1400 */ 0xFFFD, 0x3B2B, 0x5952, 0xFFFD, 0x5954, 0x5950, 0xFFFD, 0xFFFD, -/* 1408 */ 0xFFFD, 0xFFFD, 0x4A61, 0xFFFD, 0x443D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1410 */ 0xFFFD, 0x415C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A7B, 0x3C4E, 0x5960, 0xFFFD, -/* 1420 */ 0x595F, 0xFFFD, 0xFFFD, 0x3F78, 0xFFFD, 0xFFFD, 0xFFFD, 0x377E, -/* 1428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5959, 0x3E39, 0xFFFD, 0xFFFD, 0x4668, -/* 1430 */ 0x4731, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5957, 0xFFFD, 0xFFFD, -/* 1438 */ 0x415D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C78, 0x595C, 0xFFFD, -/* 1440 */ 0xFFFD, 0x3E38, 0xFFFD, 0x5956, 0x595B, 0xFFFD, 0xFFFD, 0x4753, -/* 1448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5955, 0xFFFD, 0x3721, 0xFFFD, 0xFFFD, -/* 1450 */ 0x335D, 0xFFFD, 0xFFFD, 0xFFFD, 0x595D, 0x4E2B, 0x3A4E, 0x4335, -/* 1458 */ 0x595A, 0xFFFD, 0x405C, 0xFFFD, 0x3935, 0x3F64, 0x3166, 0x413C, -/* 1460 */ 0x5958, 0x3545, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3747, -/* 1468 */ 0xFFFD, 0x444F, 0x595E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1470 */ 0x415F, 0xFFFD, 0xFFFD, 0x5961, 0xFFFD, 0x5963, 0xFFFD, 0xFFFD, -/* 1478 */ 0x4237, 0x5969, 0xFFFD, 0x5964, 0xFFFD, 0xFFFD, 0x5966, 0xFFFD, -/* 1480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4941, 0x4473, 0xFFFD, 0x5967, -/* 1488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D2C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D48, -/* 1490 */ 0x3439, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x302E, 0xFFFD, -/* 1498 */ 0x5965, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5962, 0xFFFD, -/* 14A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3478, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14A8 */ 0xFFFD, 0x3167, 0xFFFD, 0x5968, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D49, -/* 14B0 */ 0x596C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x423B, -/* 14B8 */ 0xFFFD, 0x5973, 0xFFFD, 0xFFFD, 0xFFFD, 0x596D, 0xFFFD, 0xFFFD, -/* 14C0 */ 0x596A, 0x5971, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5953, 0xFFFD, -/* 14C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14D0 */ 0x596E, 0xFFFD, 0x5972, 0xFFFD, 0xFFFD, 0xFFFD, 0x4842, 0x456B, -/* 14D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x596B, 0xFFFD, -/* 14E0 */ 0x596F, 0xFFFD, 0xFFFD, 0xFFFD, 0x3748, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14E8 */ 0x3A71, 0xFFFD, 0xFFFD, 0xFFFD, 0x405D, 0x5977, 0xFFFD, 0xFFFD, -/* 14F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4526, -/* 14F8 */ 0x5974, 0xFFFD, 0x4B60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1500 */ 0x5975, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5976, -/* 1508 */ 0xFFFD, 0x4C4E, 0xFFFD, 0x4022, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3762, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1518 */ 0xFFFD, 0x597D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1520 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B35, 0x597A, 0xFFFD, 0x5979, 0xFFFD, -/* 1528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4732, 0xFFFD, 0xFFFD, 0xFFFD, 0x4635, -/* 1530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4531, 0x597B, 0xFFFD, -/* 1538 */ 0xFFFD, 0xFFFD, 0x597C, 0xFFFD, 0x496F, 0xFFFD, 0x4745, 0x3B23, -/* 1540 */ 0xFFFD, 0x4071, 0xFFFD, 0x4B50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1548 */ 0xFFFD, 0xFFFD, 0x3349, 0xFFFD, 0x5A25, 0x597E, 0xFFFD, 0xFFFD, -/* 1550 */ 0xFFFD, 0xFFFD, 0x4D4A, 0x5A27, 0xFFFD, 0xFFFD, 0x5A23, 0xFFFD, -/* 1558 */ 0x5A24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4160, 0xFFFD, -/* 1560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A22, 0xFFFD, 0x593F, 0xFFFD, 0xFFFD, -/* 1568 */ 0xFFFD, 0x5A26, 0xFFFD, 0x5A21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1570 */ 0xFFFD, 0x5A2B, 0x5A2C, 0x4527, 0x5A2E, 0xFFFD, 0xFFFD, 0x3B24, -/* 1578 */ 0x5A29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x353C, 0xFFFD, 0xFFFD, -/* 1580 */ 0x5A2F, 0xFFFD, 0x5A28, 0x5A33, 0xFFFD, 0x5A32, 0xFFFD, 0x5A31, -/* 1588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A34, 0xFFFD, 0xFFFD, 0x5A36, 0x3E71, -/* 1590 */ 0xFFFD, 0x5A35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A39, 0x5A37, -/* 1598 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A38, 0x5970, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15A0 */ 0xFFFD, 0xFFFD, 0x5A3B, 0x5A3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15A8 */ 0xFFFD, 0x5978, 0x5A3C, 0x5A30, 0xFFFD, 0xFFFD, 0x3B59, 0xFFFD, -/* 15B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A3D, 0x5A3E, 0x5A40, 0x5A3F, 0x5A41, -/* 15B8 */ 0x327E, 0xFFFD, 0x3936, 0xFFFD, 0xFFFD, 0x4A7C, 0x402F, 0xFFFD, -/* 15C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x384E, 0xFFFD, 0xFFFD, 0x5A43, -/* 15C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A46, 0xFFFD, 0x4952, 0xFFFD, -/* 15D0 */ 0x355F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A45, 0x5A44, 0x4754, 0x5A47, -/* 15D8 */ 0x3635, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A49, 0x5A48, 0xFFFD, 0xFFFD, -/* 15E0 */ 0xFFFD, 0x343A, 0x3B36, 0xFFFD, 0xFFFD, 0x4658, 0xFFFD, 0xFFFD, -/* 15E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3749, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F74, -/* 15F0 */ 0xFFFD, 0x5A4A, 0xFFFD, 0x4030, 0x4528, 0xFFFD, 0x495F, 0x5A4B, -/* 15F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1600 */ 0xFFFD, 0x5A4C, 0x5A4D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A38, 0x555D, -/* 1608 */ 0x4046, 0xFFFD, 0xFFFD, 0x494C, 0xFFFD, 0x3A58, 0xFFFD, 0x4865, -/* 1610 */ 0x4843, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x454D, 0xFFFD, -/* 1618 */ 0x4E41, 0xFFFD, 0x5A4F, 0x3C50, 0xFFFD, 0xFFFD, 0x5A50, 0xFFFD, -/* 1620 */ 0x3036, 0xFFFD, 0xFFFD, 0x3654, 0x404D, 0xFFFD, 0x4960, 0xFFFD, -/* 1628 */ 0xFFFD, 0xFFFD, 0x5A51, 0x3B42, 0x4347, 0xFFFD, 0x3B5B, 0x3F37, -/* 1630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A52, 0xFFFD, -/* 1638 */ 0x4A7D, 0xFFFD, 0xFFFD, 0x3177, 0x3B5C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1640 */ 0x5A55, 0xFFFD, 0x5A53, 0x5A56, 0x4E39, 0x5A54, 0xFFFD, 0xFFFD, -/* 1648 */ 0xFFFD, 0xFFFD, 0x407B, 0x5A57, 0xFFFD, 0xFFFD, 0x4232, 0xFFFD, -/* 1650 */ 0xFFFD, 0x5A58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x347A, 0xFFFD, -/* 1658 */ 0x5A5A, 0xFFFD, 0x5A59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A5B, -/* 1660 */ 0x5A5C, 0x347B, 0xFFFD, 0xFFFD, 0x467C, 0x4336, 0x356C, 0x3B5D, -/* 1668 */ 0x4161, 0xFFFD, 0xFFFD, 0x3D5C, 0x3030, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1670 */ 0x5A5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1678 */ 0xFFFD, 0x3222, 0x5A61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1680 */ 0xFFFD, 0x3937, 0x5A60, 0xFFFD, 0xFFFD, 0x3A2B, 0x3E3A, 0xFFFD, -/* 1688 */ 0xFFFD, 0x5A5F, 0xFFFD, 0x3E3B, 0xFFFD, 0x4C40, 0x3A2A, 0xFFFD, -/* 1690 */ 0xFFFD, 0xFFFD, 0x3057, 0x404E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A66, 0xFFFD, 0xFFFD, 0x4031, 0x3147, -/* 16A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D55, 0xFFFD, 0x4B66, 0x3A72, -/* 16A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E3C, 0xFFFD, 0x4027, 0xFFFD, -/* 16B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A65, 0x5A63, 0x5A64, 0xFFFD, 0xFFFD, -/* 16B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x436B, 0xFFFD, 0xFFFD, 0x5B26, 0xFFFD, -/* 16C0 */ 0x5A6A, 0x3B7E, 0x3938, 0x5A68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16C8 */ 0x5A69, 0xFFFD, 0x3F38, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A67, 0xFFFD, -/* 16D0 */ 0xFFFD, 0x3B2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A6C, 0x5A6B, 0x5A70, 0xFFFD, -/* 16E0 */ 0xFFFD, 0x5A71, 0xFFFD, 0x5A6D, 0xFFFD, 0x3322, 0x5A6E, 0x5A6F, -/* 16E8 */ 0x4855, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4961, 0x374A, 0x5A72, -/* 16F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4032, 0xFFFD, 0x3E3D, 0xFFFD, 0xFFFD, -/* 16F8 */ 0xFFFD, 0x4352, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1700 */ 0x3647, 0xFFFD, 0x5A73, 0x5A77, 0xFFFD, 0xFFFD, 0x324B, 0x5A74, -/* 1708 */ 0x5A76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A75, 0xFFFD, 0xFFFD, -/* 1710 */ 0x3D6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4348, 0x3045, 0x5A78, -/* 1718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A79, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1720 */ 0xFFFD, 0x442A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E71, 0xFFFD, 0xFFFD, -/* 1728 */ 0xFFFD, 0xFFFD, 0x3B43, 0xFFFD, 0xFFFD, 0x4A6B, 0xFFFD, 0xFFFD, -/* 1730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B22, -/* 1738 */ 0x5A7B, 0xFFFD, 0xFFFD, 0x5A7E, 0xFFFD, 0x5A7D, 0xFFFD, 0xFFFD, -/* 1740 */ 0x5A7A, 0xFFFD, 0xFFFD, 0x5B21, 0xFFFD, 0xFFFD, 0x465E, 0xFFFD, -/* 1748 */ 0x5A7C, 0x5B23, 0xFFFD, 0xFFFD, 0x3D6C, 0x5B24, 0xFFFD, 0x4D4B, -/* 1750 */ 0x4778, 0xFFFD, 0xFFFD, 0x5B25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1758 */ 0xFFFD, 0x5B27, 0xFFFD, 0xFFFD, 0x5B28, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B29, 0xFFFD, 0x364A, 0x3148, 0x3939, -/* 1768 */ 0x5B2A, 0xFFFD, 0x5B2B, 0x3D71, 0x4162, 0xFFFD, 0xFFFD, 0x5258, -/* 1770 */ 0x413E, 0x413D, 0x4258, 0x3A47, 0xFFFD, 0xFFFD, 0x5072, 0xFFFD, -/* 1778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x376E, 0x4D2D, 0xFFFD, 0x4A7E, 0xFFFD, -/* 1780 */ 0x497E, 0xFFFD, 0x5B2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A73, -/* 1788 */ 0x443F, 0x5B2D, 0x4F2F, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B3E, 0xFFFD, -/* 1790 */ 0x442B, 0x5B2E, 0x347C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1798 */ 0xFFFD, 0x5B2F, 0x5B30, 0x4C5A, 0xFFFD, 0x4C24, 0x4B76, 0x4B5C, -/* 17A0 */ 0x3B25, 0x5B32, 0xFFFD, 0xFFFD, 0x3C6B, 0xFFFD, 0xFFFD, 0x4B51, -/* 17A8 */ 0xFFFD, 0x5B34, 0x5B37, 0x5B36, 0xFFFD, 0x3479, 0xFFFD, 0xFFFD, -/* 17B0 */ 0x3560, 0xFFFD, 0x5B33, 0xFFFD, 0x5B35, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17B8 */ 0xFFFD, 0x5B38, 0xFFFD, 0xFFFD, 0x3F79, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17C0 */ 0xFFFD, 0x4D7B, 0x3049, 0x3A60, 0x423C, 0xFFFD, 0x3C5D, 0xFFFD, -/* 17C8 */ 0xFFFD, 0x3E73, 0xFFFD, 0xFFFD, 0x5B3B, 0xFFFD, 0xFFFD, 0x454E, -/* 17D0 */ 0xFFFD, 0x5B39, 0x422B, 0x5B3A, 0x3E72, 0x4C5D, 0x5B3C, 0x5B3D, -/* 17D8 */ 0x4D68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B42, 0xFFFD, 0xFFFD, -/* 17E0 */ 0x393A, 0xFFFD, 0x4755, 0x5B3F, 0x456C, 0x5A5E, 0x5A62, 0xFFFD, -/* 17E8 */ 0x354F, 0xFFFD, 0x4747, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B41, -/* 17F0 */ 0xFFFD, 0x3E3E, 0x4844, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F8 */ 0x5B47, 0xFFFD, 0x487A, 0xFFFD, 0x5B3E, 0xFFFD, 0x5B44, 0x5B43, -/* 1800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x404F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1808 */ 0x4B6D, 0xFFFD, 0x4E53, 0xFFFD, 0xFFFD, 0x4B67, 0xFFFD, 0x324C, -/* 1810 */ 0x3B5E, 0xFFFD, 0xFFFD, 0x4F48, 0x5B46, 0x3F75, 0xFFFD, 0xFFFD, -/* 1818 */ 0xFFFD, 0x5B45, 0xFFFD, 0xFFFD, 0x5B40, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1820 */ 0xFFFD, 0xFFFD, 0x384F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B4C, 0x5B4A, -/* 1828 */ 0xFFFD, 0x324D, 0x5B48, 0x5B4E, 0x5B54, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4248, 0xFFFD, 0xFFFD, 0x4A41, -/* 1838 */ 0xFFFD, 0x5B56, 0xFFFD, 0xFFFD, 0xFFFD, 0x4922, 0xFFFD, 0xFFFD, -/* 1840 */ 0xFFFD, 0x5B55, 0x4770, 0x4B3F, 0x343B, 0xFFFD, 0x4077, 0x3D40, -/* 1848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4453, 0xFFFD, 0x4D2E, 0xFFFD, 0xFFFD, -/* 1850 */ 0x5B51, 0x5B50, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B52, 0xFFFD, 0x5B4F, -/* 1858 */ 0xFFFD, 0xFFFD, 0x5B57, 0xFFFD, 0x5B4D, 0xFFFD, 0xFFFD, 0x5B4B, -/* 1860 */ 0xFFFD, 0x5B53, 0x5B49, 0xFFFD, 0x436C, 0xFFFD, 0x4C78, 0x3C46, -/* 1868 */ 0x3A74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A3A, 0xFFFD, -/* 1870 */ 0xFFFD, 0x4B6F, 0x3341, 0xFFFD, 0xFFFD, 0x444E, 0x464A, 0x3149, -/* 1878 */ 0x4072, 0xFFFD, 0xFFFD, 0x4034, 0x372A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B59, 0xFFFD, 0xFFFD, 0x393B, 0x337C, -/* 1888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B5B, 0x3374, -/* 1890 */ 0x5B61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B5E, -/* 1898 */ 0xFFFD, 0x4073, 0xFFFD, 0xFFFD, 0xFFFD, 0x334B, 0x3A2C, 0xFFFD, -/* 18A0 */ 0xFFFD, 0x334A, 0x3A4F, 0xFFFD, 0xFFFD, 0x5B5C, 0x3765, 0x374B, -/* 18A8 */ 0x456D, 0xFFFD, 0xFFFD, 0x5B5A, 0xFFFD, 0x3046, 0xFFFD, 0xFFFD, -/* 18B0 */ 0xFFFD, 0xFFFD, 0x5B5D, 0x5B5F, 0xFFFD, 0x364D, 0x372C, 0xFFFD, -/* 18B8 */ 0x343C, 0x354B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B62, 0xFFFD, -/* 18C0 */ 0xFFFD, 0x3A79, 0x4B71, 0xFFFD, 0x3B37, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18C8 */ 0x5B63, 0xFFFD, 0xFFFD, 0xFFFD, 0x4930, 0x5B6F, 0xFFFD, 0x3233, -/* 18D0 */ 0x5B64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B75, -/* 18D8 */ 0x5B65, 0xFFFD, 0x4E42, 0xFFFD, 0x5B6C, 0xFFFD, 0x475F, 0xFFFD, -/* 18E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B74, 0xFFFD, -/* 18E8 */ 0x5B67, 0xFFFD, 0xFFFD, 0xFFFD, 0x3034, 0x5B69, 0xFFFD, 0xFFFD, -/* 18F0 */ 0x393C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B6B, 0xFFFD, 0x5B6A, 0xFFFD, -/* 18F8 */ 0x5B66, 0x5B71, 0xFFFD, 0x3E3F, 0xFFFD, 0xFFFD, 0xFFFD, 0x546D, -/* 1900 */ 0x3868, 0x4D7C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B68, 0xFFFD, -/* 1908 */ 0x4474, 0x3323, 0x3A2D, 0xFFFD, 0x5B60, 0xFFFD, 0x5B70, 0x3361, -/* 1910 */ 0xFFFD, 0xFFFD, 0x5B6E, 0x5B72, 0xFFFD, 0x456E, 0xFFFD, 0xFFFD, -/* 1918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x347E, 0xFFFD, 0x5C32, -/* 1920 */ 0xFFFD, 0xFFFD, 0x4C49, 0x5B77, 0x347D, 0xFFFD, 0x5B7E, 0xFFFD, -/* 1928 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B40, 0xFFFD, 0x5C21, 0x5C23, 0xFFFD, -/* 1930 */ 0x5C27, 0x5B79, 0xFFFD, 0x432A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1938 */ 0x456F, 0x5C2B, 0x5B7C, 0xFFFD, 0x5C28, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1940 */ 0x5C22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F39, -/* 1948 */ 0x5C2C, 0xFFFD, 0xFFFD, 0x4033, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1950 */ 0xFFFD, 0xFFFD, 0x5C2A, 0x343D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1958 */ 0xFFFD, 0x4F50, 0x5B76, 0xFFFD, 0xFFFD, 0x5C26, 0x3058, 0xFFFD, -/* 1960 */ 0xFFFD, 0x5B78, 0xFFFD, 0xFFFD, 0x4C3A, 0x5B7D, 0x3F22, 0x4447, -/* 1968 */ 0x5B73, 0xFFFD, 0xFFFD, 0x5C25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1970 */ 0xFFFD, 0xFFFD, 0x3F7A, 0x5C2F, 0x3371, 0x3821, 0xFFFD, 0xFFFD, -/* 1978 */ 0xFFFD, 0xFFFD, 0x5C31, 0x5B7A, 0x5C30, 0xFFFD, 0x5C29, 0x5B7B, -/* 1980 */ 0xFFFD, 0x5C2D, 0xFFFD, 0x5C2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1988 */ 0xFFFD, 0x5C3F, 0xFFFD, 0xFFFD, 0xFFFD, 0x464E, 0xFFFD, 0x5C24, -/* 1990 */ 0xFFFD, 0xFFFD, 0x5C3B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C3D, 0xFFFD, -/* 1998 */ 0x4458, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4976, 0x5C38, 0x424A, 0xFFFD, -/* 19B0 */ 0xFFFD, 0xFFFD, 0x5C3E, 0x413F, 0xFFFD, 0x5C35, 0x5C42, 0x5C41, -/* 19B8 */ 0xFFFD, 0x466F, 0x5C40, 0x466A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C44, 0x5C37, 0xFFFD, 0x3648, 0x5C3A, -/* 19C8 */ 0x3D5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4760, 0x5C3C, 0x364B, 0xFFFD, -/* 19D0 */ 0x5C34, 0x5C36, 0x5C33, 0xFFFD, 0xFFFD, 0x4F30, 0x335A, 0x5C39, -/* 19D8 */ 0xFFFD, 0xFFFD, 0x5C43, 0x3335, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A67, 0xFFFD, 0xFFFD, 0xFFFD, 0x315D, -/* 19E8 */ 0xFFFD, 0xFFFD, 0x5C54, 0xFFFD, 0xFFFD, 0x4F31, 0x5C57, 0xFFFD, -/* 19F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F3A, 0x5C56, 0xFFFD, 0xFFFD, -/* 19F8 */ 0xFFFD, 0x5C55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A00 */ 0x5C52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C46, -/* 1A08 */ 0xFFFD, 0xFFFD, 0x5C63, 0x5C45, 0xFFFD, 0x5C58, 0xFFFD, 0xFFFD, -/* 1A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C50, 0xFFFD, 0xFFFD, 0x5C4B, -/* 1A18 */ 0x5C48, 0xFFFD, 0x5C49, 0xFFFD, 0x5C51, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A20 */ 0x7422, 0xFFFD, 0xFFFD, 0x5C4E, 0x393D, 0x4448, 0x4164, 0x5C4C, -/* 1A28 */ 0xFFFD, 0x5C47, 0xFFFD, 0xFFFD, 0x5C4A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A30 */ 0xFFFD, 0x4D4D, 0x4B6A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C4F, 0x5C59, -/* 1A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A40 */ 0x5C61, 0x5C5A, 0xFFFD, 0xFFFD, 0x5C67, 0xFFFD, 0x5C65, 0xFFFD, -/* 1A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A50 */ 0xFFFD, 0xFFFD, 0x5C5F, 0xFFFD, 0x4450, 0xFFFD, 0x4165, 0xFFFD, -/* 1A58 */ 0x5C5D, 0xFFFD, 0xFFFD, 0x5C5B, 0xFFFD, 0xFFFD, 0x5C62, 0xFFFD, -/* 1A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C68, 0x4875, 0x5C6E, 0xFFFD, 0xFFFD, -/* 1A68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C69, 0x5C6C, 0x5C66, 0xFFFD, 0xFFFD, -/* 1A70 */ 0x4374, 0xFFFD, 0x4938, 0xFFFD, 0x5C5C, 0xFFFD, 0xFFFD, 0x5C64, -/* 1A78 */ 0x3E40, 0xFFFD, 0x4C4F, 0x5C78, 0x5C6B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A80 */ 0xFFFD, 0xFFFD, 0x3822, 0x3223, 0x335F, 0xFFFD, 0xFFFD, 0x5C53, -/* 1A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E41, 0x5C70, -/* 1A90 */ 0xFFFD, 0x5C77, 0x3C79, 0x3372, 0xFFFD, 0xFFFD, 0x432E, 0xFFFD, -/* 1A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C6D, 0xFFFD, 0xFFFD, -/* 1AA0 */ 0x5C72, 0x5C76, 0xFFFD, 0xFFFD, 0x3636, 0x354C, 0x5C74, 0xFFFD, -/* 1AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3521, 0xFFFD, 0x464B, 0x5C73, -/* 1AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C75, 0x5C6F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AB8 */ 0xFFFD, 0xFFFD, 0x5C71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC0 */ 0xFFFD, 0x3360, 0x4349, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C7C, 0xFFFD, -/* 1AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C7A, -/* 1AD0 */ 0x3869, 0xFFFD, 0x5C79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AD8 */ 0xFFFD, 0x5D21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B58, 0xFFFD, -/* 1AE0 */ 0xFFFD, 0xFFFD, 0x5C7B, 0xFFFD, 0x5C7D, 0x5C7E, 0xFFFD, 0xFFFD, -/* 1AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D2C, 0xFFFD, 0x5D28, 0xFFFD, -/* 1AF0 */ 0x5B6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D27, 0xFFFD, 0xFFFD, -/* 1AF8 */ 0xFFFD, 0xFFFD, 0x5D26, 0xFFFD, 0xFFFD, 0x5D23, 0xFFFD, 0xFFFD, -/* 1B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C6A, 0x5D25, 0x5D24, 0x5D2A, 0xFFFD, -/* 1B08 */ 0x4F26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D2D, -/* 1B10 */ 0x367B, 0xFFFD, 0xFFFD, 0x5D29, 0x5D2B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4827, 0xFFFD, 0x5D2E, -/* 1B20 */ 0x5D32, 0x5D2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B28 */ 0xFFFD, 0xFFFD, 0x4D73, 0x5D30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B30 */ 0x5C5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B38 */ 0x5D33, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D34, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3135, 0xFFFD, 0x5D36, 0x3767, 0x3C21, -/* 1B48 */ 0xFFFD, 0x3655, 0xFFFD, 0xFFFD, 0xFFFD, 0x3224, 0xFFFD, 0xFFFD, -/* 1B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B58 */ 0x4D5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D38, 0x5D37, 0x5D3A, -/* 1B60 */ 0x353D, 0xFFFD, 0xFFFD, 0x3656, 0x343E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B68 */ 0xFFFD, 0x5D3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D3C, 0xFFFD, 0x5D3E, -/* 1B70 */ 0xFFFD, 0xFFFD, 0x324E, 0xFFFD, 0x4337, 0xFFFD, 0x5D3F, 0xFFFD, -/* 1B78 */ 0xFFFD, 0x343F, 0x5D41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D40, -/* 1B80 */ 0xFFFD, 0x5D42, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D43, 0xFFFD, 0x5D44, -/* 1B88 */ 0x3B5F, 0x4035, 0x3A21, 0xFFFD, 0x4970, 0xFFFD, 0xFFFD, 0x4A62, -/* 1B90 */ 0x4F44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B75, 0xFFFD, 0xFFFD, -/* 1B98 */ 0xFFFD, 0x3A50, 0x4E72, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D45, 0x5D46, -/* 1BA0 */ 0xFFFD, 0x3B60, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D47, 0x5D48, 0xFFFD, -/* 1BA8 */ 0xFFFD, 0x5D4A, 0x5D49, 0xFFFD, 0x4B58, 0xFFFD, 0xFFFD, 0x3D5E, -/* 1BB0 */ 0x3C6C, 0x3B44, 0xFFFD, 0x5D4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D4D, 0x3F23, 0xFFFD, 0x5D4C, 0xFFFD, -/* 1BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D4E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BC8 */ 0xFFFD, 0xFFFD, 0x5D4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BD0 */ 0x5D50, 0x5D51, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D52, 0xFFFD, 0x5D54, -/* 1BD8 */ 0x5D53, 0x5D55, 0x3225, 0x434A, 0xFFFD, 0x5D56, 0xFFFD, 0xFFFD, -/* 1BE0 */ 0x3B26, 0x334C, 0x5D57, 0xFFFD, 0xFFFD, 0x4542, 0x544C, 0xFFFD, -/* 1BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3523, 0x5D58, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BF0 */ 0xFFFD, 0x5D59, 0xFFFD, 0x4A6C, 0x4B68, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BF8 */ 0x4647, 0x5D5A, 0x4866, 0xFFFD, 0xFFFD, 0xFFFD, 0x487B, 0xFFFD, -/* 1C00 */ 0xFFFD, 0x4C53, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D5B, 0x5D5D, 0x5D5C, -/* 1C08 */ 0xFFFD, 0xFFFD, 0x5D5F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D5E, 0x5D61, -/* 1C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B61, 0xFFFD, -/* 1C18 */ 0x4C31, 0xFFFD, 0x5D62, 0x5D63, 0xFFFD, 0xFFFD, 0x3524, 0xFFFD, -/* 1C20 */ 0xFFFD, 0xFFFD, 0x5D64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C28 */ 0xFFFD, 0xFFFD, 0x5D66, 0x5D65, 0x3F65, 0xFFFD, 0xFFFD, 0x4939, -/* 1C30 */ 0x314A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4845, 0xFFFD, -/* 1C38 */ 0x4475, 0x3D41, 0x3561, 0x4846, 0xFFFD, 0x3C2E, 0xFFFD, 0xFFFD, -/* 1C40 */ 0xFFFD, 0xFFFD, 0x5D68, 0xFFFD, 0x3440, 0xFFFD, 0xFFFD, 0x3178, -/* 1C48 */ 0xFFFD, 0xFFFD, 0x4672, 0x5D67, 0x393E, 0x4353, 0xFFFD, 0x5D69, -/* 1C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D71, 0xFFFD, 0x5D6A, -/* 1C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4241, 0xFFFD, 0x3562, -/* 1C60 */ 0x5D72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3768, -/* 1C68 */ 0xFFFD, 0xFFFD, 0x3525, 0x5D70, 0xFFFD, 0xFFFD, 0x5D6E, 0x5D6B, -/* 1C70 */ 0x4D60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4440, 0xFFFD, 0xFFFD, -/* 1C78 */ 0xFFFD, 0x4659, 0x5D6C, 0xFFFD, 0xFFFD, 0x5D74, 0xFFFD, 0x5D73, -/* 1C80 */ 0x3723, 0xFFFD, 0xFFFD, 0x322D, 0xFFFD, 0xFFFD, 0x3A3B, 0x5D6D, -/* 1C88 */ 0x5D6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B57, 0x4274, -/* 1C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C98 */ 0x4B77, 0xFFFD, 0xFFFD, 0x5D7C, 0xFFFD, 0xFFFD, 0x5D7D, 0xFFFD, -/* 1CA0 */ 0x324F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A28, 0x4C7D, 0x5E21, -/* 1CA8 */ 0x3C23, 0x3E42, 0x5D78, 0x5D7E, 0x3168, 0xFFFD, 0x3637, 0xFFFD, -/* 1CB0 */ 0xFFFD, 0x5D75, 0x5D7A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4074, 0x4771, -/* 1CB8 */ 0xFFFD, 0x4867, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CC0 */ 0x5D77, 0xFFFD, 0x4B21, 0xFFFD, 0x5D79, 0xFFFD, 0x5E24, 0xFFFD, -/* 1CC8 */ 0x5E22, 0xFFFD, 0x5D7B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B22, 0x4748, -/* 1CD0 */ 0x3563, 0xFFFD, 0x4525, 0xFFFD, 0xFFFD, 0x436D, 0xFFFD, 0x5E25, -/* 1CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E23, 0x4259, 0x5D76, 0xFFFD, -/* 1CE0 */ 0x314B, 0x4D4E, 0x5E30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CE8 */ 0x5E2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4076, 0xFFFD, 0x5E2C, -/* 1CF0 */ 0xFFFD, 0x4D6C, 0xFFFD, 0xFFFD, 0x4636, 0x5E26, 0xFFFD, 0xFFFD, -/* 1CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4445, 0xFFFD, 0xFFFD, 0xFFFD, 0x314C, -/* 1D00 */ 0x393F, 0x5E29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D08 */ 0x3D27, 0x5E2E, 0xFFFD, 0x5E2D, 0x5E28, 0xFFFD, 0x5E2B, 0xFFFD, -/* 1D10 */ 0xFFFD, 0x3368, 0xFFFD, 0x5E2A, 0x4749, 0xFFFD, 0xFFFD, 0x4E2E, -/* 1D18 */ 0xFFFD, 0xFFFD, 0x3E74, 0x4075, 0x5E36, 0x5E34, 0xFFFD, 0x494D, -/* 1D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E31, 0x5E33, -/* 1D28 */ 0xFFFD, 0x313A, 0xFFFD, 0xFFFD, 0x3940, 0x4F32, 0xFFFD, 0x333D, -/* 1D30 */ 0xFFFD, 0x4962, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D61, -/* 1D38 */ 0xFFFD, 0xFFFD, 0x3324, 0x3F3B, 0x5E35, 0x5E3A, 0xFFFD, 0xFFFD, -/* 1D40 */ 0x3E43, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D30, 0xFFFD, 0x5E37, 0xFFFD, -/* 1D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E32, 0xFFFD, 0x5E38, 0xFFFD, 0xFFFD, -/* 1D50 */ 0xFFFD, 0x4E5E, 0xFFFD, 0x4573, 0x4642, 0x3336, 0xFFFD, 0xFFFD, -/* 1D58 */ 0x3155, 0xFFFD, 0xFFFD, 0x5E3E, 0xFFFD, 0xFFFD, 0x5E41, 0xFFFD, -/* 1D60 */ 0xFFFD, 0xFFFD, 0x4E43, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D64, 0xFFFD, -/* 1D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E48, 0x5E42, 0x5E3F, 0xFFFD, 0xFFFD, -/* 1D70 */ 0xFFFD, 0x4E54, 0x5E45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D4A, -/* 1D78 */ 0x5E47, 0xFFFD, 0xFFFD, 0x5E4C, 0xFFFD, 0xFFFD, 0x4571, 0x5E4A, -/* 1D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E44, 0xFFFD, 0xFFFD, 0x4338, -/* 1D88 */ 0xFFFD, 0xFFFD, 0x5E4B, 0xFFFD, 0x5E40, 0xFFFD, 0x5E46, 0xFFFD, -/* 1D90 */ 0x5E4D, 0x307C, 0x5E43, 0xFFFD, 0x5E4E, 0xFFFD, 0xFFFD, 0x3F3C, -/* 1D98 */ 0xFFFD, 0x3D5F, 0xFFFD, 0x4A25, 0xFFFD, 0x3A2E, 0xFFFD, 0x5E3B, -/* 1DA0 */ 0x5E49, 0x453A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4036, 0xFFFD, 0x3369, 0x3A51, 0x3E44, -/* 1DB0 */ 0x5E3D, 0x3D42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DB8 */ 0xFFFD, 0x374C, 0xFFFD, 0x5E3C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E52, -/* 1DC0 */ 0x3D6D, 0x383A, 0xFFFD, 0x5E61, 0xFFFD, 0x5E5B, 0x3574, 0x454F, -/* 1DC8 */ 0xFFFD, 0x5E56, 0x5E5F, 0x302F, 0x3132, 0xFFFD, 0xFFFD, 0x3239, -/* 1DD0 */ 0xFFFD, 0x5E58, 0x422C, 0x5E4F, 0x5E51, 0x3941, 0xFFFD, 0xFFFD, -/* 1DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E62, 0xFFFD, -/* 1DE0 */ 0x5E5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E55, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DE8 */ 0xFFFD, 0x5E5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DF0 */ 0x4C2B, 0xFFFD, 0xFFFD, 0x5E5A, 0x5E5E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3850, 0xFFFD, 0x3E45, 0xFFFD, -/* 1E00 */ 0xFFFD, 0x4339, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E54, 0xFFFD, 0xFFFD, -/* 1E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D2F, 0xFFFD, 0xFFFD, -/* 1E10 */ 0xFFFD, 0x5E57, 0xFFFD, 0xFFFD, 0x5E50, 0x4572, 0xFFFD, 0xFFFD, -/* 1E18 */ 0x5E53, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E59, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F51, 0x3C3E, 0x4B7E, 0xFFFD, -/* 1E28 */ 0x5E63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E30 */ 0xFFFD, 0xFFFD, 0x482E, 0xFFFD, 0xFFFD, 0x5E6F, 0x383B, 0xFFFD, -/* 1E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D60, 0xFFFD, 0x5E65, 0xFFFD, -/* 1E40 */ 0xFFFD, 0xFFFD, 0x4E2F, 0x3942, 0xFFFD, 0x5E72, 0xFFFD, 0xFFFD, -/* 1E48 */ 0x306E, 0xFFFD, 0xFFFD, 0x5E70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E50 */ 0x5E64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E6A, 0xFFFD, 0xFFFD, -/* 1E58 */ 0x5E6C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D4F, 0x5E67, 0xFFFD, 0xFFFD, -/* 1E60 */ 0x452E, 0xFFFD, 0xFFFD, 0x5E69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E68 */ 0x5E71, 0xFFFD, 0x5E6B, 0x4C47, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E66, -/* 1E70 */ 0xFFFD, 0x3C22, 0x5E7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x336A, -/* 1E78 */ 0xFFFD, 0x5E68, 0x5E6D, 0x5E6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x426C, 0x425A, 0x5E76, 0xFFFD, 0xFFFD, -/* 1E88 */ 0x5E7C, 0xFFFD, 0xFFFD, 0x5E7A, 0xFFFD, 0x4529, 0xFFFD, 0xFFFD, -/* 1E90 */ 0x5F23, 0x5E77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E78, -/* 1E98 */ 0x5E60, 0xFFFD, 0x3579, 0x493A, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C3F, -/* 1EA0 */ 0xFFFD, 0xFFFD, 0x3977, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EA8 */ 0x4F33, 0xFFFD, 0x5E74, 0xFFFD, 0x5F22, 0x3169, 0x4166, 0xFFFD, -/* 1EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EB8 */ 0xFFFD, 0x4779, 0xFFFD, 0x3441, 0x4E7A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C21, 0x4452, 0xFFFD, 0xFFFD, -/* 1EC8 */ 0xFFFD, 0xFFFD, 0x5E7B, 0x5E7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1ED0 */ 0xFFFD, 0x4132, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F21, -/* 1ED8 */ 0x5E79, 0xFFFD, 0x5E73, 0xFFFD, 0xFFFD, 0xFFFD, 0x3443, 0x3769, -/* 1EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F2F, 0xFFFD, 0xFFFD, 0x5F2A, 0x4078, -/* 1EE8 */ 0xFFFD, 0xFFFD, 0x3363, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D61, -/* 1EF0 */ 0xFFFD, 0x5F33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EF8 */ 0x5F2C, 0x442C, 0x5F29, 0x4459, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F4C, -/* 1F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F26, 0xFFFD, 0x5F25, 0xFFFD, 0x5F2E, -/* 1F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F28, 0x5F27, 0x5F2D, 0xFFFD, 0x4021, -/* 1F10 */ 0xFFFD, 0x5F24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F18 */ 0xFFFD, 0x5F30, 0xFFFD, 0xFFFD, 0x5F31, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F20 */ 0xFFFD, 0xFFFD, 0x3442, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F36, 0xFFFD, 0x5F35, 0x5F37, -/* 1F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F3A, 0xFFFD, 0xFFFD, -/* 1F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4543, 0xFFFD, 0x5F34, 0xFFFD, -/* 1F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F38, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3763, 0x4279, 0x5F32, 0x473B, 0xFFFD, -/* 1F50 */ 0xFFFD, 0x5F39, 0x5F3E, 0x5F3C, 0xFFFD, 0xFFFD, 0x5F3F, 0xFFFD, -/* 1F58 */ 0xFFFD, 0x5F42, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F3B, 0x396A, 0x4728, -/* 1F60 */ 0xFFFD, 0xFFFD, 0x5E39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F68 */ 0xFFFD, 0x4D74, 0x5F3D, 0xFFFD, 0x5F41, 0x4275, 0xFFFD, 0x5F40, -/* 1F70 */ 0xFFFD, 0x5F2B, 0xFFFD, 0xFFFD, 0x6F69, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F78 */ 0x5F45, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F49, 0xFFFD, 0xFFFD, 0x5F47, -/* 1F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F43, -/* 1F88 */ 0xFFFD, 0x5F44, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F48, 0xFFFD, 0x5F46, -/* 1F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x494E, 0xFFFD, 0xFFFD, 0x5F4E, 0xFFFD, -/* 1F98 */ 0x5F4B, 0x5F4A, 0xFFFD, 0x5F4D, 0x4654, 0x5F4F, 0xFFFD, 0xFFFD, -/* 1FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4375, 0x426D, 0xFFFD, 0xFFFD, -/* 1FA8 */ 0xFFFD, 0xFFFD, 0x4025, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F50, 0xFFFD, -/* 1FB0 */ 0x5F52, 0x5E75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F53, 0xFFFD, -/* 1FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4667, 0xFFFD, 0xFFFD, -/* 1FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC8 */ 0x5F54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FD0 */ 0x3250, 0xFFFD, 0xFFFD, 0xFFFD, 0x4574, 0x3325, 0xFFFD, 0xFFFD, -/* 1FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3564, 0xFFFD, 0xFFFD, -/* 1FE0 */ 0xFFFD, 0x3C5E, 0x3A52, 0x4F27, 0x3F66, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FE8 */ 0x316A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F56, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F55, 0x5F59, 0x433A, 0x5F5C, 0x5F57, -/* 1FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2000 */ 0x5F5A, 0x4540, 0x3059, 0x4E75, 0xFFFD, 0xFFFD, 0x5F5E, 0xFFFD, -/* 2008 */ 0xFFFD, 0xFFFD, 0x3128, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F60, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2018 */ 0x5F5F, 0xFFFD, 0x5F5D, 0x5F58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B23, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F62, -/* 2028 */ 0x5F61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x316B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2038 */ 0x5F64, 0x4A32, 0xFFFD, 0x5F63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2040 */ 0x4C35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E47, 0x4133, 0xFFFD, -/* 2048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E46, 0x4E7B, 0xFFFD, 0xFFFD, -/* 2050 */ 0x5F6A, 0xFFFD, 0x4079, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2058 */ 0xFFFD, 0x5F66, 0x5F6B, 0xFFFD, 0xFFFD, 0x316C, 0xFFFD, 0xFFFD, -/* 2060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F69, 0xFFFD, -/* 2068 */ 0x4761, 0x5F65, 0x5F68, 0x3E48, 0xFFFD, 0x4851, 0xFFFD, 0xFFFD, -/* 2070 */ 0x5F6C, 0xFFFD, 0x3C51, 0x407A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2078 */ 0xFFFD, 0xFFFD, 0x5F6F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F67, 0xFFFD, -/* 2080 */ 0x3727, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F6D, 0xFFFD, 0xFFFD, -/* 2088 */ 0xFFFD, 0xFFFD, 0x4D50, 0x5F70, 0xFFFD, 0xFFFD, 0xFFFD, 0x7426, -/* 2090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D4F, 0xFFFD, 0xFFFD, -/* 2098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F71, 0xFFFD, -/* 20A0 */ 0xFFFD, 0xFFFD, 0x5F72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x472E, -/* 20A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F74, -/* 20B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F75, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20B8 */ 0xFFFD, 0x4733, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4575, 0x5F77, -/* 20C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F79, 0xFFFD, 0x4E55, 0xFFFD, -/* 20C8 */ 0x5F76, 0xFFFD, 0x5F78, 0x316D, 0xFFFD, 0x5F73, 0xFFFD, 0xFFFD, -/* 20D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x535B, 0x5F7A, 0xFFFD, -/* 20D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4167, 0x3B38, 0x5F7C, 0xFFFD, 0xFFFD, -/* 20E0 */ 0xFFFD, 0xFFFD, 0x5F7B, 0x3F24, 0x5259, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F7D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6021, -/* 20F0 */ 0xFFFD, 0x5F6E, 0x5F7E, 0xFFFD, 0xFFFD, 0x6022, 0xFFFD, 0xFFFD, -/* 20F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x477A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6023, 0xFFFD, 0xFFFD, 0x6024, 0xFFFD, -/* 2108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2110 */ 0xFFFD, 0x6025, 0x6026, 0xFFFD, 0x445E, 0xFFFD, 0x6028, 0x6027, -/* 2118 */ 0xFFFD, 0xFFFD, 0x6029, 0xFFFD, 0x602A, 0xFFFD, 0xFFFD, 0x3C5F, -/* 2120 */ 0x4963, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C6C, 0x602B, 0x602C, 0x4156, -/* 2128 */ 0x3C24, 0x602D, 0x602E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2130 */ 0x602F, 0x4A52, 0x4847, 0xFFFD, 0xFFFD, 0x6030, 0x4757, 0xFFFD, -/* 2138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x442D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2140 */ 0xFFFD, 0xFFFD, 0x6031, 0x3267, 0xFFFD, 0x356D, 0xFFFD, 0x4C46, -/* 2148 */ 0xFFFD, 0x4C36, 0xFFFD, 0x3234, 0x4F34, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2150 */ 0xFFFD, 0x4B52, 0xFFFD, 0x4A2A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4037, 0xFFFD, 0x6032, 0xFFFD, -/* 2160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4643, 0xFFFD, 0xFFFD, 0xFFFD, 0x3823, -/* 2168 */ 0x6033, 0xFFFD, 0x3A54, 0x6035, 0x6034, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2170 */ 0xFFFD, 0x6036, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6037, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2180 */ 0x6038, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2188 */ 0xFFFD, 0xFFFD, 0x353E, 0xFFFD, 0x6039, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2190 */ 0xFFFD, 0x603A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3824, 0xFFFD, -/* 2198 */ 0xFFFD, 0x4848, 0xFFFD, 0xFFFD, 0x603C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21A0 */ 0x3E75, 0xFFFD, 0xFFFD, 0x603B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3638, 0x603D, 0x603F, 0xFFFD, -/* 21B0 */ 0x603E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21B8 */ 0x6040, 0xFFFD, 0x3851, 0xFFFD, 0x6041, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21C0 */ 0xFFFD, 0x3669, 0xFFFD, 0x4140, 0xFFFD, 0x397D, 0xFFFD, 0xFFFD, -/* 21C8 */ 0xFFFD, 0xFFFD, 0x6043, 0x6044, 0x6042, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C6D, 0xFFFD, 0xFFFD, 0x4648, 0x3639, -/* 21D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21E0 */ 0xFFFD, 0x6046, 0x432C, 0x6045, 0xFFFD, 0xFFFD, 0x4F35, 0x4762, -/* 21E8 */ 0x604B, 0x6048, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C54, 0x604A, 0x604C, -/* 21F0 */ 0xFFFD, 0x4E44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6050, -/* 21F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x604F, 0x4376, 0x472D, 0xFFFD, 0xFFFD, -/* 2200 */ 0x3825, 0x604E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x604D, 0xFFFD, -/* 2208 */ 0x4D31, 0x4D32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2210 */ 0x6051, 0x316E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3976, 0x3B62, -/* 2218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2220 */ 0x6052, 0x6053, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2228 */ 0xFFFD, 0x6055, 0x3D43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6057, -/* 2230 */ 0xFFFD, 0x6056, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6058, -/* 2238 */ 0xFFFD, 0x334D, 0xFFFD, 0xFFFD, 0x605A, 0xFFFD, 0xFFFD, 0x6059, -/* 2240 */ 0xFFFD, 0x605C, 0x605B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x383C, 0xFFFD, 0xFFFD, 0x4E28, 0xFFFD, -/* 2250 */ 0x364C, 0xFFFD, 0x3226, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x366A, 0x3461, 0xFFFD, -/* 2260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E68, -/* 2268 */ 0x605E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2270 */ 0x6060, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6061, 0xFFFD, 0x3251, -/* 2278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x605D, 0xFFFD, 0x3B39, -/* 2280 */ 0xFFFD, 0xFFFD, 0x4441, 0x605F, 0x6064, 0xFFFD, 0x3C6E, 0xFFFD, -/* 2288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6062, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2290 */ 0x373E, 0xFFFD, 0xFFFD, 0x4849, 0x6063, 0xFFFD, 0xFFFD, 0x607E, -/* 2298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6069, 0xFFFD, -/* 22A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x383D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22A8 */ 0xFFFD, 0x3565, 0xFFFD, 0x6066, 0x4D7D, 0xFFFD, 0xFFFD, 0x4E30, -/* 22B0 */ 0x4276, 0xFFFD, 0xFFFD, 0x6068, 0x606A, 0x4E56, 0x3657, 0x487C, -/* 22B8 */ 0x474A, 0xFFFD, 0xFFFD, 0xFFFD, 0x606B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22C0 */ 0xFFFD, 0x606D, 0xFFFD, 0x6070, 0x606C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22C8 */ 0x606F, 0x386A, 0x314D, 0x6071, 0xFFFD, 0x3F70, 0x606E, 0x4E5C, -/* 22D0 */ 0xFFFD, 0xFFFD, 0x6074, 0x7424, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22D8 */ 0x6072, 0x6075, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6067, 0x6073, -/* 22E0 */ 0xFFFD, 0xFFFD, 0x3A3C, 0xFFFD, 0xFFFD, 0x6076, 0xFFFD, 0xFFFD, -/* 22E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6077, 0xFFFD, 0xFFFD, -/* 22F0 */ 0xFFFD, 0xFFFD, 0x4D7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22F8 */ 0xFFFD, 0xFFFD, 0x6078, 0x6079, 0xFFFD, 0xFFFD, 0xFFFD, 0x6065, -/* 2300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x607A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3444, 0x607B, 0xFFFD, -/* 2310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x607C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2318 */ 0x607D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2320 */ 0x313B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6121, 0xFFFD, 0x493B, 0x6122, -/* 2328 */ 0xFFFD, 0xFFFD, 0x3424, 0x6123, 0xFFFD, 0x6124, 0xFFFD, 0xFFFD, -/* 2330 */ 0xFFFD, 0xFFFD, 0x6125, 0xFFFD, 0x6127, 0x6128, 0x6126, 0xFFFD, -/* 2338 */ 0xFFFD, 0xFFFD, 0x4953, 0x612A, 0x6129, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x612C, -/* 2348 */ 0x612B, 0x612D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2350 */ 0x612E, 0x6130, 0x612F, 0xFFFD, 0xFFFD, 0x3979, 0xFFFD, 0x6132, -/* 2358 */ 0xFFFD, 0x6131, 0xFFFD, 0xFFFD, 0x3445, 0xFFFD, 0x3F53, 0xFFFD, -/* 2360 */ 0x453C, 0xFFFD, 0x6133, 0x4038, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B3A, -/* 2368 */ 0xFFFD, 0x3179, 0x6134, 0xFFFD, 0x4D51, 0xFFFD, 0xFFFD, 0x4A63, -/* 2370 */ 0x6135, 0xFFFD, 0xFFFD, 0xFFFD, 0x4544, 0x4D33, 0x3943, 0x3F3D, -/* 2378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x434B, 0x5234, 0xFFFD, 0x442E, 0x3268, -/* 2380 */ 0x6136, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2388 */ 0x6137, 0xFFFD, 0x613C, 0xFFFD, 0xFFFD, 0x613A, 0x6139, 0x5A42, -/* 2390 */ 0x3326, 0x6138, 0xFFFD, 0x305A, 0xFFFD, 0x482A, 0xFFFD, 0xFFFD, -/* 2398 */ 0x484A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E31, 0x613D, 0x613B, -/* 23A0 */ 0x435C, 0x4026, 0xFFFD, 0xFFFD, 0x482B, 0xFFFD, 0x492D, 0xFFFD, -/* 23A8 */ 0x613F, 0x4E2C, 0x374D, 0x6140, 0xFFFD, 0x613E, 0x4856, 0x6141, -/* 23B0 */ 0xFFFD, 0x6142, 0xFFFD, 0xFFFD, 0x305B, 0xFFFD, 0xFFFD, 0x3E76, -/* 23B8 */ 0x6147, 0xFFFD, 0x6144, 0x466D, 0x6143, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3526, 0xFFFD, 0xFFFD, 0x614A, 0xFFFD, -/* 23C8 */ 0xFFFD, 0xFFFD, 0x6145, 0x6146, 0xFFFD, 0x6149, 0x6148, 0x4925, -/* 23D0 */ 0xFFFD, 0xFFFD, 0x4142, 0x4141, 0xFFFD, 0x353F, 0xFFFD, 0xFFFD, -/* 23D8 */ 0x614B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x614C, 0xFFFD, -/* 23E0 */ 0xFFFD, 0x614D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x614F, -/* 23E8 */ 0xFFFD, 0x614E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3156, -/* 23F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6157, 0x4868, 0x6151, -/* 23F8 */ 0xFFFD, 0x6153, 0xFFFD, 0xFFFD, 0x6155, 0x3F3E, 0xFFFD, 0xFFFD, -/* 2400 */ 0x6156, 0x6154, 0x3C40, 0xFFFD, 0xFFFD, 0xFFFD, 0x6150, 0x6152, -/* 2408 */ 0xFFFD, 0x4942, 0xFFFD, 0x3E49, 0xFFFD, 0xFFFD, 0x6159, 0xFFFD, -/* 2410 */ 0xFFFD, 0x6158, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x615A, 0xFFFD, -/* 2418 */ 0x3C26, 0x3A2F, 0xFFFD, 0xFFFD, 0x4577, 0x615B, 0xFFFD, 0x444B, -/* 2420 */ 0xFFFD, 0xFFFD, 0x615D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E21, 0x615C, -/* 2428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4169, 0xFFFD, 0xFFFD, -/* 2430 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6162, 0xFFFD, 0x6164, 0x6165, -/* 2438 */ 0x4354, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6163, 0xFFFD, -/* 2440 */ 0x6160, 0xFFFD, 0x615E, 0x615F, 0xFFFD, 0x6161, 0xFFFD, 0xFFFD, -/* 2448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6168, 0xFFFD, 0x6166, -/* 2450 */ 0xFFFD, 0x6167, 0x6169, 0x616B, 0x616C, 0x616D, 0xFFFD, 0x616E, -/* 2458 */ 0xFFFD, 0xFFFD, 0x616A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6170, 0xFFFD, 0xFFFD, 0xFFFD, 0x616F, -/* 2468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6171, 0xFFFD, -/* 2470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E45, 0xFFFD, 0xFFFD, -/* 2478 */ 0xFFFD, 0x6174, 0x6172, 0x6173, 0xFFFD, 0xFFFD, 0xFFFD, 0x3462, -/* 2480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C7E, 0xFFFD, 0xFFFD, -/* 2488 */ 0xFFFD, 0x4A4A, 0xFFFD, 0x6176, 0xFFFD, 0xFFFD, 0xFFFD, 0x6175, -/* 2490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6177, 0x6178, 0xFFFD, 0xFFFD, -/* 2498 */ 0xFFFD, 0xFFFD, 0x617C, 0x6179, 0x617A, 0x617B, 0xFFFD, 0x617D, -/* 24A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x617E, 0xFFFD, 0x6221, 0xFFFD, 0xFFFD, -/* 24A8 */ 0xFFFD, 0x6222, 0xFFFD, 0x6223, 0xFFFD, 0x482F, 0x4550, 0x6224, -/* 24B0 */ 0x4772, 0x4934, 0xFFFD, 0x6225, 0xFFFD, 0xFFFD, 0x6226, 0x452A, -/* 24B8 */ 0xFFFD, 0x3327, 0x3944, 0x6227, 0xFFFD, 0xFFFD, 0x6228, 0xFFFD, -/* 24C0 */ 0xFFFD, 0x6229, 0xFFFD, 0x3B29, 0xFFFD, 0xFFFD, 0x622B, 0xFFFD, -/* 24C8 */ 0xFFFD, 0x622A, 0xFFFD, 0xFFFD, 0x622C, 0x622D, 0x4869, 0xFFFD, -/* 24D0 */ 0x622E, 0xFFFD, 0xFFFD, 0xFFFD, 0x622F, 0xFFFD, 0xFFFD, 0x7369, -/* 24D8 */ 0x6230, 0x6231, 0x6232, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B2E, -/* 24E0 */ 0xFFFD, 0xFFFD, 0x6233, 0x4756, 0xFFFD, 0xFFFD, 0x4B5F, 0xFFFD, -/* 24E8 */ 0x314E, 0xFFFD, 0x3157, 0xFFFD, 0xFFFD, 0x6234, 0xFFFD, 0xFFFD, -/* 24F0 */ 0xFFFD, 0xFFFD, 0x6236, 0xFFFD, 0xFFFD, 0xFFFD, 0x6235, 0x4570, -/* 24F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4039, 0x5D39, 0xFFFD, 0x6237, 0x4C41, -/* 2500 */ 0xFFFD, 0x6238, 0xFFFD, 0x3446, 0x4857, 0x6239, 0xFFFD, 0x623A, -/* 2508 */ 0xFFFD, 0xFFFD, 0x623B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C5C, 0xFFFD, -/* 2510 */ 0xFFFD, 0xFFFD, 0x4C55, 0xFFFD, 0x443E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2518 */ 0x416A, 0xFFFD, 0xFFFD, 0x623D, 0xFFFD, 0xFFFD, 0x3D62, 0xFFFD, -/* 2520 */ 0xFFFD, 0x3E4A, 0xFFFD, 0xFFFD, 0x6240, 0xFFFD, 0xFFFD, 0x623F, -/* 2528 */ 0x623E, 0x487D, 0xFFFD, 0x3447, 0x3829, 0x6246, 0xFFFD, 0xFFFD, -/* 2530 */ 0x6243, 0x3F3F, 0x4C32, 0xFFFD, 0xFFFD, 0xFFFD, 0x6242, 0x6244, -/* 2538 */ 0x6245, 0xFFFD, 0xFFFD, 0x6241, 0x6247, 0x6248, 0xFFFD, 0x442F, -/* 2540 */ 0xFFFD, 0x3463, 0xFFFD, 0xFFFD, 0xFFFD, 0x4365, 0xFFFD, 0xFFFD, -/* 2548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6249, 0x624A, 0x624D, 0xFFFD, -/* 2550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F67, 0xFFFD, 0x4644, 0xFFFD, -/* 2558 */ 0x624E, 0x4B53, 0xFFFD, 0x624B, 0xFFFD, 0xFFFD, 0x624C, 0x6251, -/* 2560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6250, 0x624F, 0x6253, 0xFFFD, -/* 2568 */ 0xFFFD, 0x6252, 0xFFFD, 0xFFFD, 0x6254, 0x6256, 0xFFFD, 0x6255, -/* 2570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A4D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D56, 0x4E46, 0xFFFD, 0xFFFD, 0x6257, -/* 2580 */ 0xFFFD, 0xFFFD, 0x4637, 0xFFFD, 0xFFFD, 0x6258, 0xFFFD, 0xFFFD, -/* 2588 */ 0x6259, 0xFFFD, 0x625D, 0x625B, 0x625C, 0xFFFD, 0x625A, 0xFFFD, -/* 2590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x625E, 0xFFFD, -/* 2598 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x625F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6260, 0xFFFD, -/* 25A8 */ 0xFFFD, 0x6261, 0x4C37, 0x6262, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25B0 */ 0xFFFD, 0x4C70, 0x6263, 0xFFFD, 0x434E, 0xFFFD, 0x476A, 0xFFFD, -/* 25B8 */ 0x366B, 0xFFFD, 0xFFFD, 0xFFFD, 0x433B, 0x6264, 0x363A, 0xFFFD, -/* 25C0 */ 0xFFFD, 0xFFFD, 0x4050, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6265, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25D0 */ 0xFFFD, 0x3A3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6266, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25E0 */ 0xFFFD, 0x6267, 0xFFFD, 0x3826, 0x3A55, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6269, -/* 25F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4556, 0x3A56, 0x354E, 0xFFFD, -/* 25F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2600 */ 0xFFFD, 0x4B24, 0xFFFD, 0x474B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2608 */ 0xFFFD, 0x4557, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x395C, 0xFFFD, -/* 2610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x626B, 0x4E32, 0x3945, 0xFFFD, -/* 2618 */ 0xFFFD, 0x3827, 0xFFFD, 0xFFFD, 0x4823, 0xFFFD, 0x626D, 0xFFFD, -/* 2620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x626F, 0xFFFD, -/* 2628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x386B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2630 */ 0x626E, 0x4476, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6271, 0x3337, -/* 2638 */ 0x626C, 0xFFFD, 0xFFFD, 0x486A, 0xFFFD, 0x3130, 0xFFFD, 0x3A6C, -/* 2640 */ 0xFFFD, 0x4F52, 0xFFFD, 0xFFFD, 0x6270, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6272, 0xFFFD, 0xFFFD, -/* 2650 */ 0xFFFD, 0x4A4B, 0xFFFD, 0x4059, 0x6274, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2658 */ 0xFFFD, 0x6275, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6273, -/* 2660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x334E, 0xFFFD, 0x627B, 0xFFFD, -/* 2668 */ 0x627A, 0xFFFD, 0xFFFD, 0x3C27, 0xFFFD, 0xFFFD, 0xFFFD, 0x627C, -/* 2670 */ 0x6277, 0xFFFD, 0xFFFD, 0xFFFD, 0x627D, 0x6278, 0xFFFD, 0xFFFD, -/* 2678 */ 0xFFFD, 0xFFFD, 0x4858, 0x6276, 0xFFFD, 0xFFFD, 0x6279, 0xFFFD, -/* 2680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6322, 0x6321, 0x4B61, 0xFFFD, -/* 2688 */ 0xFFFD, 0xFFFD, 0x627E, 0xFFFD, 0xFFFD, 0x306B, 0xFFFD, 0xFFFD, -/* 2690 */ 0xFFFD, 0xFFFD, 0x6324, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6323, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E4C, -/* 26A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6325, 0xFFFD, 0xFFFD, -/* 26A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4143, 0xFFFD, 0xFFFD, 0x6327, -/* 26B0 */ 0x6326, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6328, -/* 26B8 */ 0x6268, 0xFFFD, 0xFFFD, 0xFFFD, 0x626A, 0x632A, 0x6329, 0x3C28, -/* 26C0 */ 0xFFFD, 0x4E69, 0xFFFD, 0x3C52, 0xFFFD, 0x632B, 0x3737, 0xFFFD, -/* 26C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3540, 0x3527, 0x3B63, 0xFFFD, -/* 26D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D34, 0xFFFD, 0xFFFD, -/* 26D8 */ 0x6331, 0xFFFD, 0x6330, 0x4144, 0x632D, 0xFFFD, 0xFFFD, 0x632F, -/* 26E0 */ 0xFFFD, 0xFFFD, 0x3D4B, 0x3F40, 0x632E, 0x632C, 0xFFFD, 0x472A, -/* 26E8 */ 0xFFFD, 0xFFFD, 0x3E4D, 0xFFFD, 0xFFFD, 0x493C, 0xFFFD, 0xFFFD, -/* 26F0 */ 0xFFFD, 0xFFFD, 0x3A57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4578, 0xFFFD, 0xFFFD, 0x6332, -/* 2700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6333, 0x6349, 0x3658, 0xFFFD, -/* 2708 */ 0xFFFD, 0x4F3D, 0x4135, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6334, -/* 2710 */ 0xFFFD, 0xFFFD, 0x3252, 0x4477, 0x4A21, 0x6335, 0xFFFD, 0xFFFD, -/* 2718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x357A, 0x6336, -/* 2720 */ 0xFFFD, 0xFFFD, 0x6338, 0xFFFD, 0xFFFD, 0xFFFD, 0x6339, 0xFFFD, -/* 2728 */ 0x4729, 0xFFFD, 0xFFFD, 0x633A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2730 */ 0xFFFD, 0x633B, 0x633C, 0xFFFD, 0xFFFD, 0x3659, 0x3253, 0x4645, -/* 2738 */ 0x3D28, 0x3B64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2740 */ 0xFFFD, 0x633D, 0xFFFD, 0x3D29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2748 */ 0xFFFD, 0x324A, 0x4943, 0xFFFD, 0xFFFD, 0x633E, 0xFFFD, 0xFFFD, -/* 2750 */ 0x486B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4145, -/* 2758 */ 0xFFFD, 0x6341, 0xFFFD, 0x6342, 0x4769, 0xFFFD, 0x3F41, 0x633F, -/* 2760 */ 0xFFFD, 0x4361, 0xFFFD, 0xFFFD, 0x6340, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2768 */ 0x3E4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x305C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2778 */ 0x3529, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2780 */ 0x6343, 0xFFFD, 0xFFFD, 0x4478, 0xFFFD, 0x6344, 0x4047, 0xFFFD, -/* 2788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C2D, 0xFFFD, 0xFFFD, 0x4923, -/* 2790 */ 0x6345, 0x6346, 0x4355, 0xFFFD, 0x4E47, 0xFFFD, 0xFFFD, 0x6348, -/* 2798 */ 0x6347, 0x3C6F, 0xFFFD, 0xFFFD, 0x634A, 0x3070, 0xFFFD, 0xFFFD, -/* 27A0 */ 0xFFFD, 0xFFFD, 0x634D, 0xFFFD, 0xFFFD, 0xFFFD, 0x634B, 0x3254, -/* 27A8 */ 0x374E, 0x634C, 0x3946, 0x3972, 0xFFFD, 0x4A66, 0x634E, 0xFFFD, -/* 27B0 */ 0xFFFD, 0x4B54, 0xFFFD, 0xFFFD, 0x6350, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27B8 */ 0x4051, 0x314F, 0x323A, 0x302C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27C0 */ 0xFFFD, 0xFFFD, 0x634F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6351, 0x6352, 0x3E77, 0xFFFD, -/* 27D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6353, 0xFFFD, 0x334F, 0xFFFD, -/* 27D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6355, 0xFFFD, 0xFFFD, 0xFFFD, 0x376A, -/* 27E0 */ 0xFFFD, 0x3566, 0xFFFD, 0xFFFD, 0x6356, 0x3675, 0xFFFD, 0xFFFD, -/* 27E8 */ 0x6357, 0xFFFD, 0x407C, 0xFFFD, 0x464D, 0xFFFD, 0x4060, 0x3A75, -/* 27F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6358, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4362, 0x416B, 0xFFFD, -/* 2800 */ 0x635A, 0x635C, 0x6359, 0x635B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2808 */ 0xFFFD, 0xFFFD, 0x3722, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x635D, 0x3726, 0xFFFD, 0xFFFD, -/* 2818 */ 0xFFFD, 0x3567, 0x4D52, 0x635F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2820 */ 0xFFFD, 0x6360, 0xFFFD, 0xFFFD, 0xFFFD, 0x312E, 0xFFFD, 0xFFFD, -/* 2828 */ 0xFFFD, 0xFFFD, 0x6363, 0xFFFD, 0xFFFD, 0xFFFD, 0x3376, 0x6362, -/* 2830 */ 0x6361, 0xFFFD, 0x6365, 0x635E, 0xFFFD, 0x6366, 0x4E29, 0xFFFD, -/* 2838 */ 0x6367, 0xFFFD, 0x6368, 0xFFFD, 0xFFFD, 0x5474, 0x636A, 0xFFFD, -/* 2840 */ 0x6369, 0xFFFD, 0xFFFD, 0xFFFD, 0x636B, 0x636C, 0xFFFD, 0x4E35, -/* 2848 */ 0x636D, 0xFFFD, 0x706F, 0x3E4F, 0x636E, 0x636F, 0x3D57, 0xFFFD, -/* 2850 */ 0x4638, 0x6370, 0xFFFD, 0xFFFD, 0xFFFD, 0x4328, 0xFFFD, 0xFFFD, -/* 2858 */ 0x6371, 0xFFFD, 0x433C, 0x6372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2860 */ 0xFFFD, 0x3625, 0xFFFD, 0x513F, 0x435D, 0x3C33, 0xFFFD, 0xFFFD, -/* 2868 */ 0xFFFD, 0xFFFD, 0x3448, 0xFFFD, 0xFFFD, 0x6373, 0xFFFD, 0x6422, -/* 2870 */ 0xFFFD, 0x6376, 0xFFFD, 0x3568, 0xFFFD, 0x6375, 0x6424, 0xFFFD, -/* 2878 */ 0xFFFD, 0xFFFD, 0x6374, 0xFFFD, 0x3E50, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6378, 0x6379, 0xFFFD, 0x452B, 0xFFFD, -/* 2888 */ 0xFFFD, 0x637A, 0xFFFD, 0x335E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2890 */ 0x3F5A, 0x4964, 0xFFFD, 0x637C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4268, -/* 2898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6377, 0xFFFD, -/* 28A0 */ 0x637B, 0x637D, 0xFFFD, 0xFFFD, 0x3A7B, 0x6426, 0x492E, 0xFFFD, -/* 28A8 */ 0x4826, 0x4579, 0xFFFD, 0x365A, 0x6425, 0x6423, 0xFFFD, 0x4835, -/* 28B0 */ 0x637E, 0x435E, 0x457B, 0xFFFD, 0x457A, 0xFFFD, 0x3A76, 0xFFFD, -/* 28B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6438, 0xFFFD, 0xFFFD, -/* 28C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6428, 0xFFFD, 0x642A, -/* 28C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x642D, 0xFFFD, 0x642E, 0xFFFD, -/* 28D0 */ 0x642B, 0x642C, 0xFFFD, 0xFFFD, 0x6429, 0x6427, 0xFFFD, 0xFFFD, -/* 28D8 */ 0xFFFD, 0xFFFD, 0x6421, 0x4A4F, 0x3255, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28E0 */ 0x6435, 0xFFFD, 0x6432, 0xFFFD, 0x6437, 0xFFFD, 0xFFFD, 0x6436, -/* 28E8 */ 0xFFFD, 0x4773, 0x4C27, 0xFFFD, 0x3B3B, 0x6430, 0x6439, 0x6434, -/* 28F0 */ 0xFFFD, 0x6433, 0x642F, 0xFFFD, 0x6431, 0xFFFD, 0x3449, 0xFFFD, -/* 28F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x433D, -/* 2900 */ 0xFFFD, 0xFFFD, 0x407D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4822, 0xFFFD, -/* 2908 */ 0xFFFD, 0x643E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4824, 0xFFFD, 0xFFFD, -/* 2910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4061, 0x643B, 0xFFFD, -/* 2918 */ 0xFFFD, 0x484F, 0xFFFD, 0x643F, 0x4A53, 0xFFFD, 0x435B, 0xFFFD, -/* 2920 */ 0x643A, 0x643C, 0xFFFD, 0xFFFD, 0x643D, 0x6440, 0xFFFD, 0xFFFD, -/* 2928 */ 0x3C44, 0xFFFD, 0xFFFD, 0xFFFD, 0x4646, 0x6445, 0x6444, 0xFFFD, -/* 2930 */ 0xFFFD, 0x6441, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F36, 0xFFFD, 0xFFFD, -/* 2938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x644A, 0xFFFD, 0xFFFD, 0x644E, 0x644B, -/* 2940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2948 */ 0x6447, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6448, -/* 2950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x644D, 0xFFFD, 0xFFFD, -/* 2958 */ 0xFFFD, 0x6442, 0x5255, 0x6449, 0x6443, 0xFFFD, 0xFFFD, 0x644C, -/* 2960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6452, -/* 2968 */ 0xFFFD, 0x344A, 0xFFFD, 0x644F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6450, -/* 2970 */ 0xFFFD, 0xFFFD, 0x6451, 0x6454, 0x6453, 0x4876, 0xFFFD, 0xFFFD, -/* 2978 */ 0xFFFD, 0xFFFD, 0x6455, 0x4E7C, 0x4A6D, 0x645A, 0xFFFD, 0xFFFD, -/* 2980 */ 0x6457, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2988 */ 0xFFFD, 0x6456, 0x4052, 0xFFFD, 0x6459, 0x645B, 0xFFFD, 0xFFFD, -/* 2990 */ 0xFFFD, 0x6458, 0xFFFD, 0x645F, 0xFFFD, 0x645C, 0xFFFD, 0xFFFD, -/* 2998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x645D, 0x6446, 0xFFFD, 0xFFFD, -/* 29A0 */ 0xFFFD, 0x645E, 0x6460, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29A8 */ 0xFFFD, 0x6461, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29B0 */ 0x4A46, 0xFFFD, 0x6462, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C62, 0xFFFD, 0xFFFD, 0x364E, 0x3729, -/* 29C0 */ 0x6463, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A34, 0xFFFD, -/* 29C8 */ 0x3F68, 0xFFFD, 0x4C30, 0xFFFD, 0xFFFD, 0x6464, 0xFFFD, 0x4E33, -/* 29D0 */ 0xFFFD, 0xFFFD, 0x4774, 0xFFFD, 0x4146, 0x4734, 0xFFFD, 0xFFFD, -/* 29D8 */ 0x3D4D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3040, 0xFFFD, 0x6469, 0x6467, -/* 29E0 */ 0xFFFD, 0x6465, 0x3421, 0xFFFD, 0x3E51, 0x646A, 0xFFFD, 0xFFFD, -/* 29E8 */ 0x6468, 0xFFFD, 0x6466, 0x646E, 0xFFFD, 0xFFFD, 0x646D, 0x646C, -/* 29F0 */ 0x646B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x646F, 0xFFFD, -/* 29F8 */ 0xFFFD, 0xFFFD, 0x6470, 0x403A, 0xFFFD, 0x6471, 0xFFFD, 0x6473, -/* 2A00 */ 0xFFFD, 0xFFFD, 0x6472, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3852, -/* 2A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4138, 0xFFFD, 0xFFFD, 0xFFFD, 0x6475, -/* 2A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x457C, 0xFFFD, 0x6474, 0xFFFD, 0xFFFD, -/* 2A18 */ 0xFFFD, 0x6476, 0xFFFD, 0x4A35, 0x416C, 0x3947, 0xFFFD, 0x6477, -/* 2A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E48, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6479, 0xFFFD, 0xFFFD, 0x647A, -/* 2A30 */ 0xFFFD, 0x647B, 0xFFFD, 0x647C, 0xFFFD, 0x3B65, 0xFFFD, 0x647D, -/* 2A38 */ 0x374F, 0xFFFD, 0xFFFD, 0x356A, 0xFFFD, 0x352A, 0xFFFD, 0x6521, -/* 2A40 */ 0xFFFD, 0x4C73, 0x3948, 0x647E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6524, -/* 2A48 */ 0x4C66, 0xFFFD, 0x473C, 0xFFFD, 0xFFFD, 0x4933, 0xFFFD, 0xFFFD, -/* 2A50 */ 0xFFFD, 0x3D63, 0x6523, 0xFFFD, 0x3C53, 0x3949, 0x3B66, 0x3569, -/* 2A58 */ 0x4A36, 0x6522, 0xFFFD, 0xFFFD, 0xFFFD, 0x4147, 0x4B42, 0x3A77, -/* 2A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A68 */ 0x3B67, 0x445D, 0xFFFD, 0x6527, 0x4E5F, 0x3A59, 0xFFFD, 0x6528, -/* 2A70 */ 0x3F42, 0xFFFD, 0x652A, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E52, 0x3A30, -/* 2A78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6529, 0xFFFD, 0xFFFD, 0x3D2A, -/* 2A80 */ 0x383E, 0x4148, 0x6525, 0x652B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A88 */ 0x6526, 0x3750, 0xFFFD, 0x652E, 0x6532, 0x376B, 0xFFFD, 0xFFFD, -/* 2A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x652D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A98 */ 0x6536, 0xFFFD, 0xFFFD, 0x394A, 0xFFFD, 0xFFFD, 0x4D6D, 0x303C, -/* 2AA0 */ 0x6533, 0xFFFD, 0xFFFD, 0x356B, 0xFFFD, 0x6530, 0xFFFD, 0xFFFD, -/* 2AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6531, 0xFFFD, 0xFFFD, 0x457D, 0x652F, -/* 2AB0 */ 0x652C, 0xFFFD, 0x3328, 0x4064, 0xFFFD, 0xFFFD, 0x3828, 0xFFFD, -/* 2AB8 */ 0xFFFD, 0xFFFD, 0x6538, 0x6535, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AC0 */ 0xFFFD, 0x6537, 0xFFFD, 0xFFFD, 0xFFFD, 0x6534, 0xFFFD, 0xFFFD, -/* 2AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3751, 0x4233, 0x6539, 0x416E, 0xFFFD, -/* 2AD0 */ 0xFFFD, 0x6546, 0xFFFD, 0xFFFD, 0x6542, 0x653C, 0xFFFD, 0xFFFD, -/* 2AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6540, 0x3C7A, 0x305D, -/* 2AE0 */ 0x653B, 0x6543, 0x6547, 0x394B, 0x4C56, 0xFFFD, 0x4456, 0x653D, -/* 2AE8 */ 0xFFFD, 0xFFFD, 0x6545, 0xFFFD, 0x653A, 0x433E, 0xFFFD, 0x653F, -/* 2AF0 */ 0x303D, 0x4C4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AF8 */ 0xFFFD, 0x653E, 0xFFFD, 0xFFFD, 0x365B, 0x486C, 0xFFFD, 0xFFFD, -/* 2B00 */ 0xFFFD, 0x416D, 0xFFFD, 0x4E50, 0x3D6F, 0xFFFD, 0xFFFD, 0x656E, -/* 2B08 */ 0xFFFD, 0xFFFD, 0x6548, 0xFFFD, 0x407E, 0xFFFD, 0x6544, 0x6549, -/* 2B10 */ 0x654B, 0xFFFD, 0x4479, 0x654E, 0xFFFD, 0xFFFD, 0x654A, 0xFFFD, -/* 2B18 */ 0xFFFD, 0xFFFD, 0x4A54, 0x344B, 0xFFFD, 0xFFFD, 0x4C4B, 0xFFFD, -/* 2B20 */ 0xFFFD, 0x305E, 0xFFFD, 0xFFFD, 0x654D, 0xFFFD, 0x4E7D, 0xFFFD, -/* 2B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x654C, 0xFFFD, 0xFFFD, -/* 2B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x316F, 0xFFFD, 0xFFFD, 0x466C, 0x654F, -/* 2B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6556, 0x6550, 0x6557, 0xFFFD, 0xFFFD, -/* 2B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6553, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x477B, 0xFFFD, 0xFFFD, -/* 2B50 */ 0x3C4A, 0x6555, 0xFFFD, 0x6552, 0x6558, 0x6551, 0xFFFD, 0xFFFD, -/* 2B58 */ 0x3D44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B25, 0xFFFD, 0xFFFD, -/* 2B60 */ 0x3D4C, 0xFFFD, 0xFFFD, 0x6554, 0x6560, 0xFFFD, 0xFFFD, 0x655C, -/* 2B68 */ 0xFFFD, 0x655F, 0xFFFD, 0x655D, 0x6561, 0x655B, 0xFFFD, 0x6541, -/* 2B70 */ 0x4053, 0xFFFD, 0xFFFD, 0x484B, 0xFFFD, 0x655E, 0xFFFD, 0xFFFD, -/* 2B78 */ 0x6559, 0xFFFD, 0xFFFD, 0xFFFD, 0x4121, 0x3752, 0xFFFD, 0x3D2B, -/* 2B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F25, 0x4136, -/* 2B88 */ 0x6564, 0xFFFD, 0xFFFD, 0x6566, 0x6567, 0xFFFD, 0xFFFD, 0x6563, -/* 2B90 */ 0x6565, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B98 */ 0x655A, 0x6562, 0xFFFD, 0x656A, 0x6569, 0xFFFD, 0xFFFD, 0x4B7A, -/* 2BA0 */ 0xFFFD, 0xFFFD, 0x372B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6568, 0xFFFD, 0x656C, 0x656B, 0x656F, -/* 2BB0 */ 0xFFFD, 0x6571, 0xFFFD, 0xFFFD, 0x3B3C, 0x656D, 0xFFFD, 0xFFFD, -/* 2BB8 */ 0xFFFD, 0xFFFD, 0x6572, 0x6573, 0xFFFD, 0xFFFD, 0x6574, 0xFFFD, -/* 2BC0 */ 0x657A, 0x453B, 0x6576, 0xFFFD, 0x6575, 0x6577, 0x6578, 0xFFFD, -/* 2BC8 */ 0x6579, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x657B, 0x657C, 0x344C, -/* 2BD0 */ 0xFFFD, 0x657D, 0xFFFD, 0x657E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6621, 0xFFFD, -/* 2BE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6622, 0x6623, 0x6624, -/* 2BE8 */ 0xFFFD, 0x6625, 0x6626, 0xFFFD, 0xFFFD, 0x6628, 0x6627, 0xFFFD, -/* 2BF0 */ 0xFFFD, 0x6629, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BF8 */ 0x662A, 0x662B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C00 */ 0x662E, 0x662C, 0x662D, 0x3A61, 0x3753, 0xFFFD, 0xFFFD, 0x4356, -/* 2C08 */ 0xFFFD, 0x4833, 0xFFFD, 0x3D70, 0xFFFD, 0xFFFD, 0x474D, 0xFFFD, -/* 2C10 */ 0x486D, 0x662F, 0x586D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6630, 0x6632, 0xFFFD, 0x4D65, 0x6631, -/* 2C20 */ 0x6634, 0x6633, 0xFFFD, 0x4D53, 0xFFFD, 0x6635, 0xFFFD, 0x487E, -/* 2C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6636, 0xFFFD, 0xFFFD, -/* 2C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6639, 0xFFFD, 0xFFFD, 0x6638, 0x6637, -/* 2C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x663A, 0x3732, 0xFFFD, 0xFFFD, -/* 2C40 */ 0xFFFD, 0x4122, 0x3541, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x663E, -/* 2C48 */ 0x663B, 0xFFFD, 0xFFFD, 0x663C, 0xFFFD, 0xFFFD, 0xFFFD, 0x663F, -/* 2C50 */ 0xFFFD, 0x6640, 0x663D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3129, 0xFFFD, -/* 2C58 */ 0xFFFD, 0xFFFD, 0x3227, 0xFFFD, 0xFFFD, 0xFFFD, 0x6642, 0x6643, -/* 2C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6644, 0xFFFD, 0x4D62, 0xFFFD, 0xFFFD, -/* 2C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D2C, 0xFFFD, 0x6646, 0x6645, 0xFFFD, -/* 2C70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C78 */ 0xFFFD, 0x3F69, 0x6647, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6648, -/* 2C80 */ 0xFFFD, 0xFFFD, 0x6649, 0xFFFD, 0x3465, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C88 */ 0xFFFD, 0x344D, 0xFFFD, 0xFFFD, 0x664A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C90 */ 0xFFFD, 0xFFFD, 0x664B, 0xFFFD, 0x4B5D, 0x4D63, 0xFFFD, 0xFFFD, -/* 2C98 */ 0xFFFD, 0x4D54, 0x4F37, 0xFFFD, 0x394D, 0x664E, 0x3C54, 0x664D, -/* 2CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x664F, 0x3C29, 0xFFFD, 0xFFFD, -/* 2CA8 */ 0xFFFD, 0x4251, 0xFFFD, 0x6650, 0xFFFD, 0xFFFD, 0x394C, 0xFFFD, -/* 2CB0 */ 0x4C57, 0x6651, 0x6652, 0xFFFD, 0xFFFD, 0x6653, 0xFFFD, 0xFFFD, -/* 2CB8 */ 0xFFFD, 0xFFFD, 0x6654, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CC0 */ 0xFFFD, 0x6655, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C2A, 0xFFFD, 0xFFFD, 0x4C6D, -/* 2CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6657, 0xFFFD, 0x433F, 0xFFFD, -/* 2CD8 */ 0x6656, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6659, -/* 2CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6658, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x665A, 0xFFFD, 0xFFFD, 0xFFFD, 0x403B, -/* 2CF0 */ 0xFFFD, 0x665B, 0xFFFD, 0x665C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A39, -/* 2CF8 */ 0x665D, 0xFFFD, 0x416F, 0x665E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D00 */ 0xFFFD, 0x665F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D08 */ 0x4E7E, 0x6662, 0xFFFD, 0x6661, 0x6660, 0x4430, 0xFFFD, 0x6663, -/* 2D10 */ 0x3F26, 0xFFFD, 0x6664, 0xFFFD, 0xFFFD, 0xFFFD, 0x6665, 0x4F38, -/* 2D18 */ 0x6666, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6667, 0x6669, 0x6668, -/* 2D20 */ 0x4825, 0xFFFD, 0x4679, 0xFFFD, 0x4F3E, 0x4829, 0xFFFD, 0xFFFD, -/* 2D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x666B, 0xFFFD, 0xFFFD, 0x3E53, -/* 2D30 */ 0xFFFD, 0x492A, 0xFFFD, 0x666C, 0x666A, 0xFFFD, 0x344E, 0xFFFD, -/* 2D38 */ 0xFFFD, 0xFFFD, 0x3854, 0x3B68, 0xFFFD, 0xFFFD, 0x486E, 0xFFFD, -/* 2D40 */ 0xFFFD, 0xFFFD, 0x382A, 0x4B43, 0xFFFD, 0x666F, 0x666D, 0xFFFD, -/* 2D48 */ 0x394E, 0xFFFD, 0x394F, 0x3069, 0xFFFD, 0x3A68, 0xFFFD, 0xFFFD, -/* 2D50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4759, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x305F, 0x6674, 0xFFFD, 0x4340, -/* 2D60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4758, 0xFFFD, 0x425B, -/* 2D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6676, -/* 2D70 */ 0xFFFD, 0xFFFD, 0x6672, 0x6675, 0x6670, 0xFFFD, 0x6673, 0x4B26, -/* 2D78 */ 0xFFFD, 0xFFFD, 0x3855, 0xFFFD, 0xFFFD, 0x307D, 0x6671, 0xFFFD, -/* 2D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D88 */ 0x6678, 0xFFFD, 0x6679, 0xFFFD, 0xFFFD, 0x4639, 0xFFFD, 0xFFFD, -/* 2D90 */ 0xFFFD, 0x363B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6726, 0x473D, 0xFFFD, -/* 2D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B69, 0xFFFD, 0xFFFD, 0x363C, 0x4048, -/* 2DA0 */ 0x4F46, 0x4C2E, 0x6677, 0x4054, 0x3553, 0x667A, 0xFFFD, 0xFFFD, -/* 2DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x667C, 0xFFFD, 0xFFFD, -/* 2DB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x667B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DB8 */ 0xFFFD, 0x667D, 0xFFFD, 0x4326, 0xFFFD, 0x473E, 0xFFFD, 0xFFFD, -/* 2DC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4431, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DC8 */ 0x6723, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DD0 */ 0x6722, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x667E, 0xFFFD, 0xFFFD, -/* 2DD8 */ 0x3F55, 0xFFFD, 0x4965, 0x6725, 0xFFFD, 0x6724, 0x3950, 0x4F53, -/* 2DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DE8 */ 0xFFFD, 0x6735, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6729, -/* 2DF0 */ 0x672A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C70, 0xFFFD, 0xFFFD, -/* 2DF8 */ 0x6728, 0xFFFD, 0x3978, 0x6727, 0xFFFD, 0xFFFD, 0x672B, 0xFFFD, -/* 2E00 */ 0xFFFD, 0xFFFD, 0x4432, 0x4A22, 0x4123, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E08 */ 0xFFFD, 0x425C, 0x672F, 0xFFFD, 0x6730, 0x672C, 0xFFFD, 0xFFFD, -/* 2E10 */ 0xFFFD, 0xFFFD, 0x672D, 0xFFFD, 0x672E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E18 */ 0xFFFD, 0x3951, 0xFFFD, 0xFFFD, 0xFFFD, 0x6736, 0xFFFD, 0x6732, -/* 2E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4966, 0xFFFD, 0x4B6C, 0x4928, -/* 2E28 */ 0xFFFD, 0xFFFD, 0x6731, 0xFFFD, 0xFFFD, 0x6734, 0x6733, 0xFFFD, -/* 2E30 */ 0xFFFD, 0xFFFD, 0x4B44, 0x6737, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E38 */ 0xFFFD, 0xFFFD, 0x6738, 0xFFFD, 0xFFFD, 0x4137, 0xFFFD, 0x6739, -/* 2E40 */ 0xFFFD, 0xFFFD, 0x673B, 0xFFFD, 0x673F, 0xFFFD, 0xFFFD, 0x673C, -/* 2E48 */ 0x673A, 0x473F, 0x673D, 0xFFFD, 0x673E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E50 */ 0x3232, 0xFFFD, 0x6745, 0x6740, 0xFFFD, 0xFFFD, 0xFFFD, 0x6741, -/* 2E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6742, 0xFFFD, 0x4221, 0xFFFD, 0xFFFD, -/* 2E60 */ 0xFFFD, 0xFFFD, 0x6744, 0x6743, 0x6746, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E68 */ 0xFFFD, 0x6747, 0x6748, 0xFFFD, 0xFFFD, 0x3F43, 0xFFFD, 0x3269, -/* 2E70 */ 0xFFFD, 0x6749, 0x4E57, 0xFFFD, 0x3C2B, 0xFFFD, 0xFFFD, 0x3D2D, -/* 2E78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B6A, 0x4357, 0xFFFD, -/* 2E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x674A, 0x674B, 0x3131, 0xFFFD, -/* 2E88 */ 0x674C, 0xFFFD, 0xFFFD, 0x674D, 0x674E, 0xFFFD, 0xFFFD, 0x674F, -/* 2E90 */ 0xFFFD, 0x6750, 0x363D, 0x5A2A, 0x6751, 0xFFFD, 0x4065, 0x6752, -/* 2E98 */ 0x3C4B, 0xFFFD, 0x6753, 0xFFFD, 0x5030, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EA0 */ 0x6754, 0x4A5E, 0x345C, 0xFFFD, 0xFFFD, 0x4124, 0x3D58, 0xFFFD, -/* 2EA8 */ 0x4971, 0x3D2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6755, 0x3952, 0x6756, 0x484C, 0xFFFD, -/* 2EB8 */ 0x6764, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6758, 0xFFFD, 0x4249, -/* 2EC0 */ 0x4775, 0x383F, 0x6757, 0x4125, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EC8 */ 0xFFFD, 0xFFFD, 0x6759, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2ED0 */ 0xFFFD, 0x447A, 0x675B, 0x675A, 0x675D, 0xFFFD, 0xFFFD, 0x675C, -/* 2ED8 */ 0xFFFD, 0x675E, 0xFFFD, 0xFFFD, 0x6760, 0xFFFD, 0x675F, 0xFFFD, -/* 2EE0 */ 0x344F, 0xFFFD, 0x6761, 0xFFFD, 0x6762, 0x6763, 0xFFFD, 0xFFFD, -/* 2EE8 */ 0x3A31, 0x4E49, 0xFFFD, 0x6765, 0x3F27, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EF0 */ 0x3170, 0x6766, 0x6767, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EF8 */ 0x6768, 0x3072, 0xFFFD, 0x6769, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F00 */ 0x676A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4967, -/* 2F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C47, 0xFFFD, 0x676C, 0xFFFD, 0xFFFD, -/* 2F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3329, 0x3032, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F18 */ 0xFFFD, 0x676B, 0x676E, 0x474E, 0xFFFD, 0x3F44, 0xFFFD, 0x3256, -/* 2F20 */ 0xFFFD, 0x4B27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x375D, 0x365C, -/* 2F28 */ 0xFFFD, 0x676D, 0xFFFD, 0x326A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3423, 0x3171, 0x6772, 0x4E6A, 0x425D, -/* 2F38 */ 0xFFFD, 0xFFFD, 0x4944, 0xFFFD, 0x677E, 0xFFFD, 0x3257, 0x677C, -/* 2F40 */ 0xFFFD, 0x677A, 0x6771, 0xFFFD, 0x676F, 0xFFFD, 0x6770, 0xFFFD, -/* 2F48 */ 0x3C63, 0x366C, 0x4377, 0xFFFD, 0xFFFD, 0xFFFD, 0x4651, 0xFFFD, -/* 2F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3151, 0xFFFD, 0x6774, 0x6773, -/* 2F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6779, 0x6775, 0x6778, 0xFFFD, -/* 2F60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C50, 0x6777, 0x3258, -/* 2F68 */ 0x337D, 0x677B, 0xFFFD, 0xFFFD, 0x677D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F70 */ 0xFFFD, 0x3754, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F78 */ 0xFFFD, 0x6823, 0x682C, 0x682D, 0xFFFD, 0xFFFD, 0xFFFD, 0x302B, -/* 2F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6834, 0xFFFD, -/* 2F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3071, 0xFFFD, 0xFFFD, 0x682B, 0xFFFD, -/* 2F90 */ 0xFFFD, 0xFFFD, 0x682A, 0xFFFD, 0x6825, 0x6824, 0xFFFD, 0x6822, -/* 2F98 */ 0x6821, 0x4363, 0xFFFD, 0x427B, 0x6827, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6826, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FA8 */ 0x6829, 0xFFFD, 0xFFFD, 0xFFFD, 0x4170, 0x3755, 0xFFFD, 0xFFFD, -/* 2FB0 */ 0xFFFD, 0xFFFD, 0x3141, 0x6828, 0xFFFD, 0x3953, 0xFFFD, 0xFFFD, -/* 2FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4171, 0x683A, 0xFFFD, 0x683B, 0xFFFD, -/* 2FC0 */ 0x3259, 0xFFFD, 0xFFFD, 0xFFFD, 0x322E, 0x6838, 0xFFFD, 0xFFFD, -/* 2FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x682E, 0xFFFD, -/* 2FD0 */ 0x6836, 0xFFFD, 0x683D, 0x6837, 0xFFFD, 0xFFFD, 0xFFFD, 0x6835, -/* 2FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6776, 0xFFFD, 0xFFFD, 0x6833, -/* 2FE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x682F, 0xFFFD, 0xFFFD, 0xFFFD, 0x3450, -/* 2FE8 */ 0x6831, 0x683C, 0xFFFD, 0x6832, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF0 */ 0xFFFD, 0x683E, 0xFFFD, 0x6830, 0x477C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF8 */ 0xFFFD, 0xFFFD, 0x4D69, 0xFFFD, 0xFFFD, 0xFFFD, 0x6839, 0xFFFD, -/* 3000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x684F, 0xFFFD, -/* 3008 */ 0xFFFD, 0xFFFD, 0x6847, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F7B, 0xFFFD, -/* 3010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3546, 0xFFFD, 0x365D, 0xFFFD, 0x6842, -/* 3018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x325B, 0xFFFD, 0xFFFD, 0x3E54, -/* 3020 */ 0xFFFD, 0x6845, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A5A, 0xFFFD, 0xFFFD, -/* 3028 */ 0x4551, 0x684A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3030 */ 0xFFFD, 0xFFFD, 0x4A6E, 0xFFFD, 0x6841, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3038 */ 0x325A, 0x3856, 0x4929, 0x684B, 0xFFFD, 0x683F, 0xFFFD, 0xFFFD, -/* 3040 */ 0x6848, 0xFFFD, 0xFFFD, 0xFFFD, 0x6852, 0xFFFD, 0x6843, 0xFFFD, -/* 3048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6844, 0x463A, 0xFFFD, 0xFFFD, -/* 3050 */ 0x6849, 0xFFFD, 0xFFFD, 0xFFFD, 0x6846, 0x4B28, 0x684C, 0x3060, -/* 3058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6840, 0x684E, 0xFFFD, 0x684D, -/* 3060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x476B, 0x6854, -/* 3068 */ 0xFFFD, 0x685F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x337E, 0xFFFD, -/* 3070 */ 0xFFFD, 0xFFFD, 0x6862, 0xFFFD, 0xFFFD, 0x6850, 0xFFFD, 0xFFFD, -/* 3078 */ 0xFFFD, 0x6855, 0x4D6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x685E, 0xFFFD, 0xFFFD, 0x4D55, 0xFFFD, -/* 3088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E2A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4378, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3098 */ 0x336B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4972, 0x6864, -/* 30A0 */ 0x4621, 0xFFFD, 0xFFFD, 0x3031, 0xFFFD, 0xFFFD, 0x685D, 0xFFFD, -/* 30A8 */ 0x6859, 0x4172, 0x6853, 0x685B, 0x6860, 0xFFFD, 0x472C, 0xFFFD, -/* 30B0 */ 0xFFFD, 0xFFFD, 0x302A, 0xFFFD, 0x6858, 0xFFFD, 0x6861, 0x4978, -/* 30B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x685C, -/* 30C0 */ 0xFFFD, 0x6857, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30C8 */ 0x3E55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D2F, 0xFFFD, 0xFFFD, -/* 30D0 */ 0xFFFD, 0x3C2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C58, 0xFFFD, -/* 30D8 */ 0xFFFD, 0x4947, 0xFFFD, 0xFFFD, 0x6867, 0xFFFD, 0x6870, 0x685A, -/* 30E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3377, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30E8 */ 0xFFFD, 0xFFFD, 0x3E78, 0x6865, 0xFFFD, 0x686A, 0x4173, 0xFFFD, -/* 30F0 */ 0xFFFD, 0x6866, 0xFFFD, 0x686D, 0xFFFD, 0xFFFD, 0x435F, 0xFFFD, -/* 30F8 */ 0x686E, 0xFFFD, 0xFFFD, 0x4D56, 0x6863, 0x3338, 0xFFFD, 0x6869, -/* 3100 */ 0xFFFD, 0xFFFD, 0x686C, 0x4C2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3108 */ 0x686F, 0xFFFD, 0xFFFD, 0x6868, 0x686B, 0x4B29, 0xFFFD, 0x4F21, -/* 3110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6873, 0xFFFD, 0xFFFD, -/* 3118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x687A, 0xFFFD, 0xFFFD, -/* 3120 */ 0x6872, 0x3C43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6851, -/* 3128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3130 */ 0xFFFD, 0xFFFD, 0x4A4E, 0xFFFD, 0x4C22, 0x6879, 0x6878, 0xFFFD, -/* 3138 */ 0x6874, 0x6875, 0xFFFD, 0x3136, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3140 */ 0x6877, 0xFFFD, 0x6871, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4455, -/* 3148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6876, 0x307E, 0xFFFD, -/* 3150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4222, 0xFFFD, -/* 3158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A43, 0xFFFD, -/* 3160 */ 0xFFFD, 0x687B, 0x6921, 0xFFFD, 0x4859, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3168 */ 0xFFFD, 0x687E, 0x3E56, 0x3C49, 0x6923, 0xFFFD, 0xFFFD, 0x363E, -/* 3170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6924, 0xFFFD, -/* 3178 */ 0x4979, 0x687D, 0xFFFD, 0x6856, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x687C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3188 */ 0xFFFD, 0x4F4F, 0x4622, 0x4973, 0xFFFD, 0xFFFD, 0x692B, 0xFFFD, -/* 3190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3198 */ 0x6931, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6932, -/* 31A0 */ 0xFFFD, 0x6925, 0xFFFD, 0xFFFD, 0xFFFD, 0x4776, 0xFFFD, 0xFFFD, -/* 31A8 */ 0x692F, 0x6927, 0xFFFD, 0x6929, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31B0 */ 0xFFFD, 0x6933, 0x6928, 0xFFFD, 0xFFFD, 0x692C, 0xFFFD, 0xFFFD, -/* 31B8 */ 0x3172, 0xFFFD, 0x4665, 0xFFFD, 0x692D, 0x6930, 0xFFFD, 0xFFFD, -/* 31C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6926, 0xFFFD, 0x4126, -/* 31C8 */ 0xFFFD, 0x692A, 0x3B27, 0x3F45, 0x3730, 0x4C74, 0xFFFD, 0x4C79, -/* 31D0 */ 0x3D72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31D8 */ 0xFFFD, 0xFFFD, 0x6937, 0x6935, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31E0 */ 0xFFFD, 0xFFFD, 0x4F4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31E8 */ 0xFFFD, 0xFFFD, 0x6934, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D75, 0xFFFD, -/* 31F0 */ 0x6936, 0x6938, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6939, 0xFFFD, -/* 31F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x693C, 0x693A, 0xFFFD, -/* 3200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4623, 0x693B, 0xFFFD, -/* 3208 */ 0xFFFD, 0xFFFD, 0x484D, 0x692E, 0x3D73, 0xFFFD, 0x693D, 0x6942, -/* 3210 */ 0x4174, 0xFFFD, 0xFFFD, 0x6941, 0xFFFD, 0xFFFD, 0xFFFD, 0x6922, -/* 3218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6943, 0x4149, 0xFFFD, 0xFFFD, 0x693E, -/* 3220 */ 0x6940, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3228 */ 0x693F, 0xFFFD, 0xFFFD, 0x5D31, 0x5D22, 0xFFFD, 0xFFFD, 0x6945, -/* 3230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6944, -/* 3238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3240 */ 0xFFFD, 0xFFFD, 0x4D76, 0xFFFD, 0x623C, 0x6946, 0x6948, 0x3857, -/* 3248 */ 0xFFFD, 0x3554, 0xFFFD, 0xFFFD, 0xFFFD, 0x694A, 0x515D, 0xFFFD, -/* 3250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3575, 0xFFFD, 0x4E3A, 0xFFFD, 0x3673, -/* 3258 */ 0x694B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3260 */ 0x694C, 0xFFFD, 0xFFFD, 0xFFFD, 0x436E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3268 */ 0xFFFD, 0xFFFD, 0x694D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3270 */ 0xFFFD, 0xFFFD, 0x467A, 0xFFFD, 0x303A, 0x3263, 0x6952, 0x6953, -/* 3278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x694E, 0xFFFD, -/* 3280 */ 0x3B3D, 0x694F, 0x4742, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6950, -/* 3288 */ 0x6951, 0x695B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6955, 0x6958, 0xFFFD, -/* 3290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6954, 0x6956, 0xFFFD, 0x6957, -/* 3298 */ 0x3C58, 0xFFFD, 0x6959, 0xFFFD, 0x4341, 0xFFFD, 0x3756, 0x3342, -/* 32A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x695C, 0xFFFD, 0xFFFD, -/* 32A8 */ 0xFFFD, 0xFFFD, 0x333F, 0xFFFD, 0x6961, 0xFFFD, 0xFFFD, 0x695D, -/* 32B0 */ 0x6960, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x483A, 0xFFFD, 0xFFFD, -/* 32B8 */ 0xFFFD, 0xFFFD, 0x695E, 0xFFFD, 0xFFFD, 0x695F, 0x4948, 0x485A, -/* 32C0 */ 0x6962, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32C8 */ 0xFFFD, 0x427D, 0x696C, 0xFFFD, 0x6968, 0xFFFD, 0xFFFD, 0x326B, -/* 32D0 */ 0xFFFD, 0x6966, 0xFFFD, 0x4B2A, 0x6967, 0xFFFD, 0xFFFD, 0x6964, -/* 32D8 */ 0xFFFD, 0x6965, 0x696A, 0x696D, 0xFFFD, 0xFFFD, 0x696B, 0xFFFD, -/* 32E0 */ 0xFFFD, 0xFFFD, 0x6969, 0x6963, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32E8 */ 0xFFFD, 0x4358, 0xFFFD, 0x6974, 0xFFFD, 0x4C2A, 0xFFFD, 0xFFFD, -/* 32F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6972, 0xFFFD, -/* 32F8 */ 0xFFFD, 0xFFFD, 0x6973, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x696E, 0xFFFD, 0xFFFD, -/* 3308 */ 0x6970, 0xFFFD, 0xFFFD, 0xFFFD, 0x6971, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3310 */ 0x696F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3318 */ 0xFFFD, 0xFFFD, 0x4066, 0xFFFD, 0x4F39, 0x6978, 0xFFFD, 0x6979, -/* 3320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A21, 0xFFFD, 0x3F2A, 0xFFFD, -/* 3328 */ 0x697B, 0xFFFD, 0x697E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3330 */ 0x6976, 0x6975, 0xFFFD, 0xFFFD, 0x6A22, 0xFFFD, 0xFFFD, 0x325C, -/* 3338 */ 0xFFFD, 0x697C, 0xFFFD, 0x6A23, 0xFFFD, 0xFFFD, 0xFFFD, 0x697D, -/* 3340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x697A, 0xFFFD, 0x4433, -/* 3348 */ 0xFFFD, 0x6977, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3350 */ 0x4768, 0xFFFD, 0xFFFD, 0x6A27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D3B, 0x6A26, -/* 3360 */ 0xFFFD, 0xFFFD, 0x6A25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A2E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A28, -/* 3370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3378 */ 0xFFFD, 0xFFFD, 0x4D66, 0x6A33, 0xFFFD, 0x6A2A, 0xFFFD, 0xFFFD, -/* 3380 */ 0x6A2B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A2F, 0xFFFD, 0x6A32, 0x6A31, -/* 3388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3390 */ 0x6A2C, 0xFFFD, 0x6A3D, 0x6A34, 0xFFFD, 0xFFFD, 0x6A35, 0xFFFD, -/* 3398 */ 0xFFFD, 0xFFFD, 0x6A3A, 0x6A3B, 0xFFFD, 0x332A, 0xFFFD, 0x3542, -/* 33A0 */ 0xFFFD, 0xFFFD, 0x6A39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33A8 */ 0xFFFD, 0x6A24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33B0 */ 0xFFFD, 0x6A38, 0x6A3C, 0x6A37, 0xFFFD, 0x6A3E, 0xFFFD, 0xFFFD, -/* 33B8 */ 0xFFFD, 0x6A40, 0x6A3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A42, 0x6A41, 0x695A, -/* 33C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A43, 0xFFFD, 0xFFFD, -/* 33D8 */ 0xFFFD, 0xFFFD, 0x6A44, 0xFFFD, 0xFFFD, 0x6A45, 0xFFFD, 0x6A47, -/* 33E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x376C, 0xFFFD, 0x6A49, 0xFFFD, -/* 33E8 */ 0x6A48, 0xFFFD, 0x3D30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33F0 */ 0x3954, 0x5E27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A4A, 0x3D51, -/* 33F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3339, 0xFFFD, 0x6A4B, 0xFFFD, 0x3152, -/* 3400 */ 0xFFFD, 0x3E57, 0x6A4C, 0xFFFD, 0xFFFD, 0x3955, 0x6A4D, 0x3061, -/* 3408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x493D, 0xFFFD, 0xFFFD, 0x6A4E, -/* 3410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F6A, 0xFFFD, 0x6A55, 0xFFFD, -/* 3418 */ 0xFFFD, 0x6A52, 0xFFFD, 0x436F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3420 */ 0xFFFD, 0x6A53, 0x6A50, 0x365E, 0xFFFD, 0x6A4F, 0x6A56, 0xFFFD, -/* 3428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3736, 0xFFFD, 0xFFFD, 0x425E, -/* 3430 */ 0xFFFD, 0x6A5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A58, 0xFFFD, -/* 3438 */ 0xFFFD, 0xFFFD, 0x4235, 0x6A57, 0xFFFD, 0x6A5A, 0xFFFD, 0xFFFD, -/* 3440 */ 0xFFFD, 0xFFFD, 0x6A51, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A5B, 0xFFFD, -/* 3448 */ 0x6A5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x486F, -/* 3450 */ 0xFFFD, 0xFFFD, 0x6A59, 0xFFFD, 0x6A5E, 0x6A60, 0xFFFD, 0xFFFD, -/* 3458 */ 0x3853, 0x6A54, 0xFFFD, 0x3041, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A5F, 0xFFFD, 0x3A5B, 0x4E76, 0x6A61, -/* 3468 */ 0x6A62, 0x4175, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3478 */ 0x6A63, 0x4D35, 0xFFFD, 0xFFFD, 0x6A64, 0x6A65, 0xFFFD, 0xFFFD, -/* 3480 */ 0x4A64, 0x6A66, 0xFFFD, 0x3A40, 0xFFFD, 0x4E23, 0xFFFD, 0xFFFD, -/* 3488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A6B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A6C, 0x3E58, -/* 3498 */ 0x6A6A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D67, 0x6A67, 0xFFFD, 0xFFFD, -/* 34A0 */ 0x6A69, 0x403D, 0x3F7E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A68, 0xFFFD, -/* 34A8 */ 0x6A6D, 0xFFFD, 0xFFFD, 0x4A23, 0xFFFD, 0xFFFD, 0x6A6F, 0xFFFD, -/* 34B0 */ 0x6A6E, 0xFFFD, 0xFFFD, 0xFFFD, 0x336C, 0xFFFD, 0x4B2B, 0x6A70, -/* 34B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34C0 */ 0xFFFD, 0x6A7C, 0x6A72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34C8 */ 0xFFFD, 0x6A73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A74, 0x6A75, -/* 34D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34D8 */ 0xFFFD, 0xFFFD, 0x6A79, 0xFFFD, 0x6A7A, 0xFFFD, 0xFFFD, 0x6A78, -/* 34E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A76, 0xFFFD, 0x6A71, -/* 34E8 */ 0x6A77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F0 */ 0x6A7B, 0x7037, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F8 */ 0xFFFD, 0xFFFD, 0x3228, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3500 */ 0xFFFD, 0xFFFD, 0x6A7E, 0x365F, 0x6A7D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3508 */ 0x6B22, 0xFFFD, 0x6B21, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B24, 0xFFFD, -/* 3510 */ 0xFFFD, 0x6B23, 0xFFFD, 0x6B25, 0xFFFD, 0xFFFD, 0x3D31, 0xFFFD, -/* 3518 */ 0x6B26, 0xFFFD, 0xFFFD, 0x6B27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3520 */ 0xFFFD, 0xFFFD, 0x6B28, 0x403E, 0xFFFD, 0x4D57, 0xFFFD, 0x6B29, -/* 3528 */ 0xFFFD, 0xFFFD, 0x4A24, 0x4746, 0x6B2A, 0xFFFD, 0x6B2B, 0x382B, -/* 3530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x352C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B2C, -/* 3538 */ 0xFFFD, 0xFFFD, 0x3B6B, 0x4741, 0x6B2D, 0xFFFD, 0x3350, 0xFFFD, -/* 3540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B2E, 0xFFFD, 0xFFFD, -/* 3548 */ 0xFFFD, 0xFFFD, 0x6B30, 0x4D77, 0xFFFD, 0x6B2F, 0x3F46, 0xFFFD, -/* 3550 */ 0x6B31, 0xFFFD, 0xFFFD, 0x6B32, 0xFFFD, 0xFFFD, 0x6B33, 0x3451, -/* 3558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B34, 0xFFFD, -/* 3560 */ 0xFFFD, 0x6B35, 0xFFFD, 0x6B36, 0x6B37, 0x3351, 0xFFFD, 0xFFFD, -/* 3568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B38, 0xFFFD, 0x6B39, -/* 3570 */ 0x6B3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3272, 0xFFFD, -/* 3578 */ 0xFFFD, 0x3F28, 0x6B3B, 0x6B3C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B3D, -/* 3580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3840, -/* 3588 */ 0xFFFD, 0x447B, 0x6B3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3757, -/* 3590 */ 0xFFFD, 0x3F56, 0xFFFD, 0x6B41, 0xFFFD, 0x4624, 0xFFFD, 0x6B40, -/* 3598 */ 0xFFFD, 0xFFFD, 0x3731, 0xFFFD, 0xFFFD, 0x6B3F, 0x4277, 0x352D, -/* 35A0 */ 0xFFFD, 0xFFFD, 0x6B42, 0xFFFD, 0x6B43, 0xFFFD, 0x3E59, 0xFFFD, -/* 35A8 */ 0xFFFD, 0xFFFD, 0x376D, 0xFFFD, 0x6B44, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35B0 */ 0xFFFD, 0x4B2C, 0xFFFD, 0xFFFD, 0x405F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35B8 */ 0x3576, 0xFFFD, 0x4C75, 0x414A, 0xFFFD, 0x6B45, 0xFFFD, 0xFFFD, -/* 35C0 */ 0xFFFD, 0x3F47, 0x4370, 0x3E5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35C8 */ 0x6B46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B49, 0xFFFD, 0x6B4A, -/* 35D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A3E, -/* 35D8 */ 0x4242, 0x6B48, 0xFFFD, 0x3E5B, 0x493E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35E0 */ 0xFFFD, 0xFFFD, 0x6B47, 0xFFFD, 0xFFFD, 0x3B6C, 0xFFFD, 0x3153, -/* 35E8 */ 0xFFFD, 0x6B4E, 0x3758, 0xFFFD, 0xFFFD, 0x3B6E, 0xFFFD, 0xFFFD, -/* 35F0 */ 0x3B6D, 0xFFFD, 0x4F4D, 0x6B4D, 0x6B4C, 0x4127, 0xFFFD, 0x354D, -/* 35F8 */ 0x4F43, 0x333A, 0x3E5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3608 */ 0xFFFD, 0x6B50, 0xFFFD, 0x6B51, 0x6B4F, 0xFFFD, 0x3858, 0xFFFD, -/* 3610 */ 0x4D40, 0xFFFD, 0xFFFD, 0x3B6F, 0x4727, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3618 */ 0x6B54, 0xFFFD, 0x4040, 0xFFFD, 0x4342, 0xFFFD, 0xFFFD, 0x4D36, -/* 3620 */ 0xFFFD, 0x6B57, 0xFFFD, 0xFFFD, 0xFFFD, 0x386C, 0xFFFD, 0x403F, -/* 3628 */ 0x6B53, 0xFFFD, 0x6B58, 0x386D, 0x6B55, 0x6B56, 0xFFFD, 0x6B52, -/* 3630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4062, 0x4649, 0xFFFD, 0xFFFD, 0x432F, -/* 3638 */ 0xFFFD, 0x325D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3640 */ 0x4870, 0xFFFD, 0xFFFD, 0x3543, 0xFFFD, 0xFFFD, 0x4434, 0xFFFD, -/* 3648 */ 0xFFFD, 0x6B5B, 0xFFFD, 0x6B59, 0xFFFD, 0xFFFD, 0x434C, 0xFFFD, -/* 3650 */ 0xFFFD, 0xFFFD, 0x4041, 0x3452, 0x6B5A, 0xFFFD, 0x3F5B, 0xFFFD, -/* 3658 */ 0xFFFD, 0x4E4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F40, 0xFFFD, 0xFFFD, -/* 3660 */ 0xFFFD, 0x6B5C, 0x6B67, 0x4435, 0xFFFD, 0x6B66, 0xFFFD, 0x6B63, -/* 3668 */ 0x6B6B, 0x6B64, 0xFFFD, 0x6B60, 0xFFFD, 0x447C, 0x6B5F, 0xFFFD, -/* 3670 */ 0xFFFD, 0xFFFD, 0x6B5D, 0xFFFD, 0x4D21, 0x3B70, 0xFFFD, 0xFFFD, -/* 3678 */ 0x6B61, 0xFFFD, 0x6B5E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B65, 0x3D74, -/* 3680 */ 0xFFFD, 0x3841, 0xFFFD, 0xFFFD, 0xFFFD, 0x427A, 0xFFFD, 0x4B45, -/* 3688 */ 0x315A, 0x3062, 0xFFFD, 0x4625, 0xFFFD, 0xFFFD, 0x6B69, 0xFFFD, -/* 3690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B68, 0xFFFD, 0x4666, 0xFFFD, 0x6B6D, -/* 3698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B62, 0xFFFD, 0x6B6C, 0x6B6E, 0xFFFD, -/* 36A0 */ 0x382C, 0x6B6A, 0x3956, 0xFFFD, 0x3C55, 0xFFFD, 0xFFFD, 0x6B6F, -/* 36A8 */ 0x4D58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B72, 0xFFFD, 0x6B75, -/* 36B0 */ 0xFFFD, 0xFFFD, 0x6B73, 0x4935, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36B8 */ 0xFFFD, 0xFFFD, 0x6B70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36C0 */ 0x3660, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B74, 0xFFFD, 0xFFFD, -/* 36C8 */ 0x6B76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36D0 */ 0x6B7A, 0xFFFD, 0xFFFD, 0x6B77, 0xFFFD, 0x6B79, 0x6B78, 0xFFFD, -/* 36D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B7B, 0xFFFD, 0x3C31, -/* 36E0 */ 0xFFFD, 0x6B7D, 0x6B7C, 0x4968, 0xFFFD, 0xFFFD, 0x6C21, 0xFFFD, -/* 36E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3759, 0xFFFD, 0xFFFD, -/* 36F0 */ 0xFFFD, 0xFFFD, 0x6B7E, 0x6C22, 0xFFFD, 0xFFFD, 0x6C23, 0x3544, -/* 36F8 */ 0x6641, 0x3E79, 0xFFFD, 0x6C24, 0xFFFD, 0xFFFD, 0x386E, 0xFFFD, -/* 3700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C25, 0xFFFD, 0xFFFD, 0x6C26, -/* 3708 */ 0xFFFD, 0xFFFD, 0x3B3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3710 */ 0xFFFD, 0x5A4E, 0xFFFD, 0x6C27, 0xFFFD, 0x6C28, 0xFFFD, 0x3D32, -/* 3718 */ 0xFFFD, 0x6C29, 0x6C2A, 0xFFFD, 0xFFFD, 0x6C2B, 0xFFFD, 0xFFFD, -/* 3720 */ 0x6C2C, 0x6C2D, 0x432B, 0xFFFD, 0xFFFD, 0x6C2E, 0xFFFD, 0xFFFD, -/* 3728 */ 0xFFFD, 0xFFFD, 0x6C30, 0xFFFD, 0x6C2F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3730 */ 0xFFFD, 0x4626, 0xFFFD, 0x6C31, 0xFFFD, 0x4B2D, 0xFFFD, 0x6C32, -/* 3738 */ 0xFFFD, 0x6C33, 0xFFFD, 0x6C34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3740 */ 0x6C35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x465A, 0xFFFD, 0xFFFD, -/* 3748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E5D, 0x6C36, 0xFFFD, 0xFFFD, -/* 3750 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x396B, 0x502E, 0x6C37, -/* 3758 */ 0x6C38, 0x493F, 0x6C39, 0xFFFD, 0x6C41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3760 */ 0xFFFD, 0xFFFD, 0x6C3A, 0xFFFD, 0xFFFD, 0x6C3C, 0xFFFD, 0xFFFD, -/* 3768 */ 0xFFFD, 0x6C3B, 0x6C3D, 0xFFFD, 0x4B46, 0x6C3E, 0x6C3F, 0xFFFD, -/* 3770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C40, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3778 */ 0x6C42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x332D, 0x4467, 0xFFFD, -/* 3780 */ 0x4969, 0x3A62, 0x3957, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x494F, -/* 3788 */ 0x325F, 0x484E, 0x6C45, 0x3453, 0x4055, 0x6C44, 0x6C49, 0x4379, -/* 3790 */ 0x4C63, 0xFFFD, 0x6C47, 0x6C48, 0x352E, 0xFFFD, 0x6C4A, 0x4763, -/* 3798 */ 0x425F, 0xFFFD, 0xFFFD, 0x4871, 0x453D, 0x6C46, 0xFFFD, 0x4B47, -/* 37A0 */ 0x326C, 0x6C4C, 0x4F28, 0x4442, 0x4F45, 0xFFFD, 0xFFFD, 0x3B71, -/* 37A8 */ 0x6C4B, 0xFFFD, 0x4231, 0xFFFD, 0xFFFD, 0x6C5C, 0x4128, 0xFFFD, -/* 37B0 */ 0xFFFD, 0x4678, 0xFFFD, 0x4950, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37B8 */ 0xFFFD, 0xFFFD, 0x6C4F, 0x3B3F, 0x3B72, 0xFFFD, 0x3E5E, 0xFFFD, -/* 37C0 */ 0x4765, 0xFFFD, 0x382D, 0x6C4E, 0x6C4D, 0xFFFD, 0x496A, 0xFFFD, -/* 37C8 */ 0xFFFD, 0xFFFD, 0x3C41, 0xFFFD, 0xFFFD, 0x4552, 0x6C51, 0x6C52, -/* 37D0 */ 0x3958, 0x6C50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37D8 */ 0x6C53, 0x6C54, 0xFFFD, 0x6C56, 0x4223, 0xFFFD, 0x6C55, 0x3466, -/* 37E0 */ 0xFFFD, 0x6C58, 0xFFFD, 0x6C57, 0x6C59, 0xFFFD, 0xFFFD, 0x6C5B, -/* 37E8 */ 0x6C5D, 0xFFFD, 0x6C5E, 0x4056, 0xFFFD, 0x3C4F, 0x6C5F, 0xFFFD, -/* 37F0 */ 0xFFFD, 0xFFFD, 0x3352, 0xFFFD, 0x6C60, 0xFFFD, 0xFFFD, 0x4176, -/* 37F8 */ 0x6C61, 0xFFFD, 0x6C62, 0x496B, 0xFFFD, 0xFFFD, 0x352F, 0xFFFD, -/* 3800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3808 */ 0x6C63, 0xFFFD, 0xFFFD, 0xFFFD, 0x4436, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3810 */ 0xFFFD, 0x315B, 0x6C64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3820 */ 0xFFFD, 0x3F76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x422D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C67, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C66, -/* 3838 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C6D, 0x6C6B, 0xFFFD, 0xFFFD, -/* 3848 */ 0x6C68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C6A, -/* 3850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C69, 0x6C6C, 0xFFFD, 0x3577, 0xFFFD, -/* 3858 */ 0x6C70, 0xFFFD, 0x4057, 0xFFFD, 0x6C71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3860 */ 0xFFFD, 0x3859, 0xFFFD, 0x6C6E, 0x6C6F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3868 */ 0x4F29, 0xFFFD, 0xFFFD, 0xFFFD, 0x4437, 0xFFFD, 0x4129, 0xFFFD, -/* 3870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C72, 0xFFFD, 0xFFFD, -/* 3878 */ 0x6C75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3880 */ 0xFFFD, 0x6C73, 0x6C74, 0x4D59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3888 */ 0x4627, 0x6C78, 0x6C76, 0x6C77, 0x6C79, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D29, -/* 3898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C7C, 0xFFFD, 0xFFFD, -/* 38A0 */ 0xFFFD, 0x6C7D, 0x6C7B, 0x6C7A, 0xFFFD, 0x447D, 0xFFFD, 0xFFFD, -/* 38A8 */ 0x6D21, 0x6D25, 0x6D22, 0x6C7E, 0xFFFD, 0x6D23, 0xFFFD, 0xFFFD, -/* 38B0 */ 0xFFFD, 0x6D24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D2B, 0xFFFD, -/* 38B8 */ 0xFFFD, 0xFFFD, 0x6D26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38C0 */ 0x4058, 0x6D28, 0xFFFD, 0xFFFD, 0x6D2A, 0x6D27, 0x6D2D, 0xFFFD, -/* 38C8 */ 0x3D33, 0xFFFD, 0x6D2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38D0 */ 0x6D2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D2F, 0xFFFD, 0xFFFD, -/* 38D8 */ 0x6D32, 0x6D31, 0xFFFD, 0x6D30, 0xFFFD, 0xFFFD, 0x6D34, 0x6D33, -/* 38E0 */ 0xFFFD, 0x4C76, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D36, 0xFFFD, 0x6D35, -/* 38E8 */ 0x6D37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D38, 0xFFFD, 0xFFFD, -/* 38F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D3A, 0xFFFD, 0xFFFD, -/* 38F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D39, 0x3F48, -/* 3900 */ 0x6D3B, 0xFFFD, 0xFFFD, 0x366D, 0x6D3C, 0x6D3E, 0x6D3F, 0xFFFD, -/* 3908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D40, 0x6D3D, 0xFFFD, -/* 3910 */ 0x6D41, 0xFFFD, 0x3C56, 0x6D42, 0x3530, 0x3733, 0xFFFD, 0xFFFD, -/* 3918 */ 0xFFFD, 0xFFFD, 0x382E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3920 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D43, 0xFFFD, 0xFFFD, 0xFFFD, 0x4670, -/* 3928 */ 0xFFFD, 0xFFFD, 0x453E, 0x6D44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D47, 0x3C34, 0xFFFD, 0xFFFD, 0x6D46, -/* 3938 */ 0x6D45, 0x375A, 0x6D48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3353, -/* 3940 */ 0xFFFD, 0x6D4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A5C, 0x6D49, 0xFFFD, -/* 3948 */ 0x6D52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D4C, 0x6D4E, -/* 3950 */ 0x4A65, 0x6D4B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D4D, 0xFFFD, 0x6D51, -/* 3958 */ 0x6D4F, 0x3531, 0xFFFD, 0x6D50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3960 */ 0xFFFD, 0xFFFD, 0x6D53, 0xFFFD, 0xFFFD, 0x475A, 0x4E58, 0xFFFD, -/* 3968 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D34, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D54, -/* 3970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D22, 0x6D56, 0xFFFD, 0x6D55, -/* 3978 */ 0xFFFD, 0xFFFD, 0x6D59, 0x4D41, 0xFFFD, 0xFFFD, 0x6D58, 0xFFFD, -/* 3980 */ 0x336D, 0x6D57, 0x6D5C, 0xFFFD, 0xFFFD, 0x6D5B, 0xFFFD, 0xFFFD, -/* 3988 */ 0x6D5A, 0x4532, 0x6D5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3998 */ 0x6D5F, 0xFFFD, 0xFFFD, 0x396C, 0xFFFD, 0x3725, 0x6D60, 0x6D61, -/* 39A0 */ 0x6D62, 0x3F49, 0x6D63, 0xFFFD, 0x3C2D, 0x6D64, 0xFFFD, 0xFFFD, -/* 39A8 */ 0xFFFD, 0x6D65, 0xFFFD, 0xFFFD, 0xFFFD, 0x5221, 0x517E, 0xFFFD, -/* 39B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D66, 0x6570, 0x6D67, 0x4324, 0x3F2B, -/* 39B8 */ 0x4740, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D68, 0xFFFD, 0xFFFD, -/* 39C0 */ 0x4A55, 0x4454, 0x397E, 0xFFFD, 0xFFFD, 0x4329, 0xFFFD, 0xFFFD, -/* 39C8 */ 0x312A, 0xFFFD, 0x4B78, 0x3F57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x375E, 0xFFFD, 0xFFFD, 0x3661, -/* 39D8 */ 0xFFFD, 0xFFFD, 0x4A56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39E0 */ 0x6D69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39E8 */ 0x6D6B, 0xFFFD, 0xFFFD, 0x6D6A, 0x3260, 0xFFFD, 0xFFFD, 0x4676, -/* 39F0 */ 0x6D6C, 0x4777, 0xFFFD, 0x4533, 0xFFFD, 0x6D6D, 0x3D52, 0xFFFD, -/* 39F8 */ 0xFFFD, 0xFFFD, 0x6D6F, 0xFFFD, 0xFFFD, 0x4C42, 0x6D7E, 0x6D71, -/* 3A00 */ 0x6D72, 0xFFFD, 0xFFFD, 0x4449, 0xFFFD, 0xFFFD, 0x4260, 0x4177, -/* 3A08 */ 0xFFFD, 0x4628, 0xFFFD, 0x6D70, 0x3555, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A10 */ 0xFFFD, 0x6D79, 0xFFFD, 0x6D76, 0x6E25, 0x4629, 0x4360, 0x6D73, -/* 3A18 */ 0xFFFD, 0x447E, 0x4553, 0x6D74, 0x6D78, 0x3F60, 0xFFFD, 0x4767, -/* 3A20 */ 0x444C, 0xFFFD, 0xFFFD, 0x4042, 0x6D77, 0x422E, 0x4224, 0x6D75, -/* 3A28 */ 0x3029, 0x4F22, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D7A, 0xFFFD, 0xFFFD, -/* 3A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4261, 0xFFFD, 0xFFFD, 0x3D35, -/* 3A38 */ 0x3F4A, 0xFFFD, 0xFFFD, 0x6D7C, 0x6D7B, 0xFFFD, 0x306F, 0x6D7D, -/* 3A40 */ 0xFFFD, 0xFFFD, 0x492F, 0xFFFD, 0x6E27, 0xFFFD, 0xFFFD, 0x465B, -/* 3A48 */ 0x3F6B, 0xFFFD, 0xFFFD, 0x4359, 0xFFFD, 0x3678, 0xFFFD, 0x6E26, -/* 3A50 */ 0x4D37, 0x313F, 0xFFFD, 0x4A57, 0x3261, 0x6E21, 0x6E22, 0x6E23, -/* 3A58 */ 0x6E24, 0x463B, 0x4323, 0x3063, 0x6E28, 0xFFFD, 0x6E29, 0x7423, -/* 3A60 */ 0xFFFD, 0xFFFD, 0x423D, 0xFFFD, 0x6E2A, 0xFFFD, 0x3173, 0x414C, -/* 3A68 */ 0xFFFD, 0x382F, 0xFFFD, 0x4D5A, 0xFFFD, 0xFFFD, 0x6E2B, 0x452C, -/* 3A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4178, 0x3C57, 0x6E2C, 0xFFFD, 0xFFFD, -/* 3A78 */ 0x6E2F, 0xFFFD, 0xFFFD, 0x3D65, 0x6E2D, 0x412B, 0x412A, 0xFFFD, -/* 3A80 */ 0x3064, 0xFFFD, 0x4E4B, 0x6E31, 0xFFFD, 0x4872, 0x6E33, 0x6E32, -/* 3A88 */ 0x6E30, 0x6364, 0x3454, 0xFFFD, 0xFFFD, 0x6D6E, 0xFFFD, 0x6E35, -/* 3A90 */ 0x6E34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E36, 0xFFFD, 0x4D38, -/* 3A98 */ 0x4661, 0xFFFD, 0xFFFD, 0x4B2E, 0xFFFD, 0x6E37, 0xFFFD, 0x3C59, -/* 3AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E38, 0xFFFD, 0x6E39, 0xFFFD, -/* 3AA8 */ 0xFFFD, 0xFFFD, 0x6E3A, 0xFFFD, 0xFFFD, 0x4521, 0xFFFD, 0xFFFD, -/* 3AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x306A, 0xFFFD, -/* 3AB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3959, -/* 3AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F3A, 0x6E3E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AC8 */ 0xFFFD, 0xFFFD, 0x3734, 0x6E3B, 0xFFFD, 0x6E3C, 0xFFFD, 0xFFFD, -/* 3AD0 */ 0xFFFD, 0x4974, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3354, 0xFFFD, -/* 3AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D39, 0xFFFD, -/* 3AE0 */ 0x363F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4554, 0xFFFD, -/* 3AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E3F, 0x6E40, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E41, 0x4522, 0xFFFD, 0xFFFD, 0x6E43, -/* 3AF8 */ 0xFFFD, 0x6E42, 0x4653, 0x6E44, 0x3D36, 0x3C60, 0x475B, 0x4371, -/* 3B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C72, 0xFFFD, 0x3F6C, 0xFFFD, 0x6E45, -/* 3B08 */ 0xFFFD, 0x6E46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F5D, 0x6E47, 0xFFFD, 0x6E48, 0xFFFD, -/* 3B18 */ 0xFFFD, 0xFFFD, 0x6E49, 0x4D6F, 0xFFFD, 0x3D37, 0xFFFD, 0xFFFD, -/* 3B20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E4B, 0x6E4A, 0xFFFD, 0x395A, 0xFFFD, -/* 3B28 */ 0x3973, 0x3B40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B38 */ 0x3D66, 0xFFFD, 0x6E4D, 0xFFFD, 0x6E4C, 0xFFFD, 0x4269, 0xFFFD, -/* 3B40 */ 0xFFFD, 0x386F, 0xFFFD, 0x4043, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B48 */ 0x4830, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D39, 0xFFFD, 0xFFFD, -/* 3B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E4F, 0xFFFD, 0x3E5F, 0xFFFD, 0xFFFD, -/* 3B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E52, 0x6E50, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B60 */ 0x6E51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E54, 0x6E53, 0xFFFD, -/* 3B68 */ 0xFFFD, 0x3E7A, 0xFFFD, 0x6E55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B70 */ 0xFFFD, 0x6E56, 0x6E57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4850, -/* 3B78 */ 0x3A53, 0x3C61, 0x6E58, 0xFFFD, 0x6E59, 0x4E24, 0x3D45, 0x4C6E, -/* 3B80 */ 0x4E4C, 0x6E5A, 0x3662, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E5B, -/* 3B88 */ 0xFFFD, 0x4523, 0xFFFD, 0xFFFD, 0x6E5E, 0x3378, 0x3F4B, 0xFFFD, -/* 3B90 */ 0x6E5C, 0xFFFD, 0x6E5D, 0xFFFD, 0x4460, 0xFFFD, 0xFFFD, 0x4B55, -/* 3B98 */ 0x367C, 0x6E60, 0x6E61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BA0 */ 0x6E5F, 0xFFFD, 0xFFFD, 0x6E63, 0x465F, 0x3343, 0xFFFD, 0xFFFD, -/* 3BA8 */ 0x6E67, 0xFFFD, 0xFFFD, 0x6E64, 0x6E66, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E62, 0xFFFD, 0xFFFD, -/* 3BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BC0 */ 0x6F4F, 0xFFFD, 0xFFFD, 0x6E65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E6B, 0xFFFD, 0xFFFD, 0x385A, 0xFFFD, -/* 3BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E6F, 0xFFFD, -/* 3BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4534, 0x6E6A, 0xFFFD, 0xFFFD, 0x6E6D, -/* 3BE0 */ 0x6E6B, 0xFFFD, 0x6E70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E71, -/* 3BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E69, 0xFFFD, -/* 3BF0 */ 0xFFFD, 0x6E76, 0x3174, 0xFFFD, 0xFFFD, 0x6E68, 0xFFFD, 0xFFFD, -/* 3BF8 */ 0xFFFD, 0x482D, 0xFFFD, 0x6E6C, 0xFFFD, 0x3E60, 0xFFFD, 0xFFFD, -/* 3C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C08 */ 0x395B, 0x4B48, 0xFFFD, 0x3664, 0xFFFD, 0xFFFD, 0x3D46, 0xFFFD, -/* 3C10 */ 0x463C, 0x412D, 0xFFFD, 0x6E74, 0xFFFD, 0x6E6E, 0x6E73, 0xFFFD, -/* 3C18 */ 0x4C43, 0xFFFD, 0x4438, 0x6E75, 0x6E72, 0x412C, 0xFFFD, 0xFFFD, -/* 3C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E79, -/* 3C28 */ 0xFFFD, 0x6E78, 0x6E77, 0xFFFD, 0xFFFD, 0x4B2F, 0x3D7B, 0xFFFD, -/* 3C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E7A, 0x4A5F, 0xFFFD, 0xFFFD, 0x3154, -/* 3C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4946, 0x4372, 0xFFFD, 0xFFFD, -/* 3C40 */ 0xFFFD, 0xFFFD, 0x3578, 0xFFFD, 0x6E7C, 0xFFFD, 0x395D, 0xFFFD, -/* 3C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C50 */ 0x3B2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C58 */ 0xFFFD, 0x6E7B, 0x3F6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C60 */ 0xFFFD, 0xFFFD, 0x3F6E, 0x6F21, 0x6F23, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C68 */ 0xFFFD, 0xFFFD, 0x3E7B, 0xFFFD, 0x6F22, 0x6F24, 0xFFFD, 0xFFFD, -/* 3C70 */ 0x3653, 0xFFFD, 0x4945, 0xFFFD, 0xFFFD, 0x3C62, 0x4F23, 0xFFFD, -/* 3C78 */ 0x6E7E, 0x3A78, 0xFFFD, 0xFFFD, 0x4F3F, 0xFFFD, 0xFFFD, 0x6F26, -/* 3C80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F25, 0x6F27, 0xFFFD, 0xFFFD, -/* 3C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E7D, 0xFFFD, -/* 3C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4669, 0xFFFD, 0x4555, -/* 3C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4457, 0xFFFD, -/* 3CA0 */ 0x6F2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4343, 0x6F28, 0xFFFD, -/* 3CA8 */ 0xFFFD, 0xFFFD, 0x6F29, 0x372D, 0xFFFD, 0x6F2B, 0xFFFD, 0xFFFD, -/* 3CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3830, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F2A, 0xFFFD, 0x3E61, 0x3379, 0xFFFD, -/* 3CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F30, 0xFFFD, -/* 3CC8 */ 0x3A3F, 0x4179, 0xFFFD, 0xFFFD, 0x444A, 0x333B, 0xFFFD, 0xFFFD, -/* 3CD0 */ 0xFFFD, 0xFFFD, 0x6F2E, 0x6F2F, 0x4443, 0xFFFD, 0x6F2D, 0xFFFD, -/* 3CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F31, -/* 3CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CE8 */ 0xFFFD, 0x6F37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F3A, 0xFFFD, -/* 3CF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F39, 0x452D, -/* 3CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F32, 0x6F33, 0x6F36, 0xFFFD, -/* 3D00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F38, 0xFFFD, 0xFFFD, 0xFFFD, 0x3640, -/* 3D08 */ 0xFFFD, 0xFFFD, 0x6F3B, 0x6F35, 0xFFFD, 0xFFFD, 0x6F34, 0x6F3F, -/* 3D10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F41, 0xFFFD, 0xFFFD, 0x6F3E, -/* 3D20 */ 0x6F3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E62, 0x462A, 0x6F3C, 0xFFFD, -/* 3D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F45, 0xFFFD, 0xFFFD, -/* 3D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F43, -/* 3D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D40 */ 0xFFFD, 0x6F44, 0x6F42, 0xFFFD, 0x4278, 0xFFFD, 0x6F46, 0xFFFD, -/* 3D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F47, 0xFFFD, 0xFFFD, -/* 3D50 */ 0x6F49, 0x3455, 0x6F48, 0x4C7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D58 */ 0xFFFD, 0xFFFD, 0x6F54, 0x6F4A, 0xFFFD, 0xFFFD, 0x6F4D, 0xFFFD, -/* 3D60 */ 0x6F4B, 0xFFFD, 0x6F4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D68 */ 0xFFFD, 0xFFFD, 0x6F4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D70 */ 0x6F50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F51, 0xFFFD, 0x6F52, -/* 3D78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F55, 0x6F53, 0x6F56, 0x6F58, -/* 3D80 */ 0xFFFD, 0x6F57, 0x4439, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C67, 0xFFFD, 0x6F59, 0x412E, 0xFFFD, -/* 3D90 */ 0xFFFD, 0xFFFD, 0x6F5A, 0xFFFD, 0x4A44, 0x6F5B, 0x332B, 0xFFFD, -/* 3D98 */ 0xFFFD, 0xFFFD, 0x313C, 0xFFFD, 0x3457, 0xFFFD, 0x3456, 0x6F5C, -/* 3DA0 */ 0xFFFD, 0x6F5D, 0xFFFD, 0x6F5E, 0x6F5F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F60, 0xFFFD, 0x3458, 0x3355, 0x395E, -/* 3DB0 */ 0x4836, 0xFFFD, 0x6F62, 0x6F61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DB8 */ 0x6F63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x315C, 0xFFFD, 0xFFFD, -/* 3DC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F66, 0xFFFD, 0x6F65, 0x6F64, -/* 3DC8 */ 0xFFFD, 0x6F67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F6A, 0xFFFD, -/* 3DD0 */ 0xFFFD, 0xFFFD, 0x3047, 0xFFFD, 0xFFFD, 0x6F68, 0xFFFD, 0x6F6C, -/* 3DD8 */ 0x6F6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F6E, -/* 3DE0 */ 0x6F6D, 0x6F6F, 0xFFFD, 0x462E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F70, -/* 3DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F71, 0x6F73, 0xFFFD, 0xFFFD, -/* 3DF0 */ 0x6F72, 0x496C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F74, 0xFFFD, -/* 3DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F75, 0xFFFD, 0x3A65, -/* 3E00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F76, 0x6F77, 0xFFFD, 0xFFFD, 0x4B49, -/* 3E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E10 */ 0x414B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3024, 0x424B, 0xFFFD, 0x6F78, -/* 3E18 */ 0xFFFD, 0x496D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E20 */ 0x6F7B, 0x6F79, 0x395F, 0xFFFD, 0x6F7A, 0x3842, 0xFFFD, 0xFFFD, -/* 3E28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E30 */ 0x4A45, 0x6F7D, 0x7021, 0x6F7E, 0x7022, 0xFFFD, 0xFFFD, 0x3121, -/* 3E38 */ 0x3F58, 0x3D7C, 0x3459, 0x7023, 0xFFFD, 0xFFFD, 0xFFFD, 0x4766, -/* 3E40 */ 0xFFFD, 0x7025, 0xFFFD, 0xFFFD, 0xFFFD, 0x3122, 0xFFFD, 0x7024, -/* 3E48 */ 0x4444, 0xFFFD, 0x4E4D, 0x462B, 0x6F7C, 0x4E26, 0xFFFD, 0x3831, -/* 3E50 */ 0xFFFD, 0xFFFD, 0x4D5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E58 */ 0xFFFD, 0xFFFD, 0x3679, 0x4E34, 0xFFFD, 0x3728, 0xFFFD, 0x4262, -/* 3E60 */ 0x6721, 0xFFFD, 0x7026, 0x332C, 0x3F6F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E68 */ 0xFFFD, 0x3356, 0x7028, 0xFFFD, 0x7029, 0x7027, 0x3764, 0xFFFD, -/* 3E70 */ 0x3A5D, 0x3E63, 0xFFFD, 0xFFFD, 0xFFFD, 0x3123, 0xFFFD, 0xFFFD, -/* 3E78 */ 0x4E59, 0xFFFD, 0xFFFD, 0xFFFD, 0x702B, 0x6E2E, 0xFFFD, 0x702A, -/* 3E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x702E, 0x702C, 0x702D, -/* 3E88 */ 0xFFFD, 0x702F, 0xFFFD, 0x7030, 0x4E6C, 0x7031, 0x7032, 0xFFFD, -/* 3E90 */ 0x4049, 0x483B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F7D, 0x3467, 0xFFFD, -/* 3E98 */ 0xFFFD, 0x4D3A, 0x326D, 0x3D38, 0x385B, 0xFFFD, 0x7035, 0xFFFD, -/* 3EA0 */ 0x7034, 0x3B73, 0x7036, 0x7033, 0xFFFD, 0xFFFD, 0x3B28, 0xFFFD, -/* 3EA8 */ 0xFFFD, 0xFFFD, 0x703A, 0x6A2D, 0xFFFD, 0xFFFD, 0x5256, 0xFFFD, -/* 3EB0 */ 0x3F77, 0x7038, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E25, -/* 3EB8 */ 0x4671, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x312B, 0xFFFD, 0x4063, -/* 3EC0 */ 0x3C36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A37, 0xFFFD, 0x3140, -/* 3EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E6D, 0x4D6B, 0xFFFD, 0x703B, 0xFFFD, -/* 3ED0 */ 0x4545, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C7B, 0xFFFD, 0xFFFD, -/* 3ED8 */ 0xFFFD, 0x703C, 0xFFFD, 0x703D, 0x3F4C, 0x703E, 0xFFFD, 0x4E6E, -/* 3EE0 */ 0xFFFD, 0xFFFD, 0x7039, 0x7040, 0x7042, 0xFFFD, 0x7041, 0xFFFD, -/* 3EE8 */ 0x703F, 0xFFFD, 0xFFFD, 0x7043, 0xFFFD, 0xFFFD, 0x7044, 0xFFFD, -/* 3EF0 */ 0xFFFD, 0x417A, 0xFFFD, 0x3262, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EF8 */ 0xFFFD, 0x7045, 0xFFFD, 0xFFFD, 0x4C38, 0xFFFD, 0xFFFD, 0x7046, -/* 3F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7047, 0xFFFD, 0x4F2A, -/* 3F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B31, 0x7048, 0xFFFD, -/* 3F10 */ 0xFFFD, 0xFFFD, 0x7049, 0x704A, 0xFFFD, 0xFFFD, 0xFFFD, 0x704E, -/* 3F18 */ 0xFFFD, 0x704B, 0xFFFD, 0x704C, 0xFFFD, 0x704D, 0x704F, 0xFFFD, -/* 3F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4044, -/* 3F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C77, 0xFFFD, 0xFFFD, 0x4045, 0xFFFD, -/* 3F30 */ 0xFFFD, 0x7050, 0xFFFD, 0x4873, 0xFFFD, 0x7051, 0x7353, 0x4C4C, -/* 3F38 */ 0xFFFD, 0x7052, 0xFFFD, 0x7053, 0xFFFD, 0x7054, 0x3357, 0xFFFD, -/* 3F40 */ 0x7056, 0xFFFD, 0x3F59, 0xFFFD, 0xFFFD, 0xFFFD, 0x7057, 0xFFFD, -/* 3F48 */ 0xFFFD, 0x3724, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7058, 0x705C, -/* 3F50 */ 0xFFFD, 0x705A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x705B, 0xFFFD, -/* 3F58 */ 0xFFFD, 0x3373, 0x7059, 0x705D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F60 */ 0x705E, 0xFFFD, 0x3048, 0xFFFD, 0x705F, 0x7060, 0xFFFD, 0xFFFD, -/* 3F68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E64, 0xFFFD, 0xFFFD, -/* 3F70 */ 0xFFFD, 0x7061, 0xFFFD, 0xFFFD, 0xFFFD, 0x3547, 0xFFFD, 0xFFFD, -/* 3F78 */ 0x7064, 0xFFFD, 0xFFFD, 0x7063, 0xFFFD, 0x7062, 0xFFFD, 0xFFFD, -/* 3F80 */ 0x6B71, 0xFFFD, 0x4A5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F88 */ 0x7065, 0x7066, 0x7067, 0xFFFD, 0xFFFD, 0x7068, 0xFFFD, 0x7069, -/* 3F90 */ 0xFFFD, 0xFFFD, 0x706A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F98 */ 0xFFFD, 0xFFFD, 0x345A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x706B, 0x706C, 0x4723, 0xFFFD, 0xFFFD, -/* 3FA8 */ 0xFFFD, 0x706E, 0x323B, 0xFFFD, 0x7071, 0x7070, 0xFFFD, 0xFFFD, -/* 3FB0 */ 0xFFFD, 0xFFFD, 0x3124, 0xFFFD, 0xFFFD, 0xFFFD, 0x3641, 0xFFFD, -/* 3FB8 */ 0x4A47, 0x443A, 0x3A22, 0xFFFD, 0x3960, 0x3D67, 0xFFFD, 0x3F5C, -/* 3FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7073, 0xFFFD, 0xFFFD, 0x7072, 0x4D42, -/* 3FC8 */ 0x3468, 0x4852, 0x465C, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F7C, 0x4E4E, -/* 3FD0 */ 0xFFFD, 0x375B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FD8 */ 0x7076, 0xFFFD, 0xFFFD, 0x7075, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B4B, 0x462C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3150, 0xFFFD, 0xFFFD, 0x7077, 0x7074, -/* 3FF0 */ 0xFFFD, 0xFFFD, 0x4951, 0x4D6A, 0x7078, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7079, 0xFFFD, 0xFFFD, -/* 4000 */ 0xFFFD, 0xFFFD, 0x707B, 0x426A, 0x335B, 0x335C, 0x707A, 0xFFFD, -/* 4008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3469, 0x3832, 0xFFFD, 0xFFFD, 0x346A, -/* 4010 */ 0xFFFD, 0xFFFD, 0x453F, 0xFFFD, 0xFFFD, 0x4E60, 0xFFFD, 0xFFFD, -/* 4018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x385C, 0xFFFD, -/* 4020 */ 0xFFFD, 0xFFFD, 0x707C, 0xFFFD, 0xFFFD, 0xFFFD, 0x707D, 0x707E, -/* 4028 */ 0x7121, 0xFFFD, 0x7123, 0x7122, 0x4977, 0xFFFD, 0x7124, 0xFFFD, -/* 4030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7125, 0xFFFD, 0x7126, 0xFFFD, 0xFFFD, -/* 4038 */ 0xFFFD, 0xFFFD, 0x7127, 0x7129, 0x7128, 0xFFFD, 0x712A, 0x4874, -/* 4040 */ 0x664C, 0xFFFD, 0xFFFD, 0x3F29, 0xFFFD, 0xFFFD, 0x3532, 0xFFFD, -/* 4048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x712B, 0xFFFD, 0x712C, -/* 4050 */ 0xFFFD, 0x522C, 0x5D3B, 0x4853, 0xFFFD, 0xFFFD, 0x307B, 0xFFFD, -/* 4058 */ 0x303B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4060 */ 0x3B74, 0x4B30, 0x3E7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x712D, -/* 4068 */ 0xFFFD, 0x4C5F, 0xFFFD, 0xFFFD, 0xFFFD, 0x712E, 0x4D5C, 0xFFFD, -/* 4070 */ 0x3142, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B41, 0xFFFD, 0x712F, 0x326E, -/* 4078 */ 0x7130, 0xFFFD, 0xFFFD, 0xFFFD, 0x7131, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4080 */ 0xFFFD, 0x7133, 0x7134, 0xFFFD, 0x7136, 0x7132, 0xFFFD, 0xFFFD, -/* 4088 */ 0x7135, 0xFFFD, 0xFFFD, 0xFFFD, 0x345B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4090 */ 0x7137, 0xFFFD, 0x7138, 0x7139, 0x713A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4098 */ 0x713B, 0xFFFD, 0xFFFD, 0x713D, 0xFFFD, 0xFFFD, 0xFFFD, 0x713C, -/* 40A0 */ 0xFFFD, 0x713F, 0x7142, 0xFFFD, 0xFFFD, 0xFFFD, 0x713E, 0x7140, -/* 40A8 */ 0x7141, 0xFFFD, 0xFFFD, 0x7143, 0xFFFD, 0x3642, 0x3C73, 0x7144, -/* 40B0 */ 0x7145, 0x3961, 0x7146, 0xFFFD, 0xFFFD, 0x333E, 0xFFFD, 0xFFFD, -/* 40B8 */ 0xFFFD, 0x474F, 0x7147, 0x7148, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40C0 */ 0x435A, 0x466B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40C8 */ 0xFFFD, 0x7149, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x477D, 0xFFFD, -/* 40D0 */ 0xFFFD, 0x424C, 0x3158, 0x366E, 0xFFFD, 0x366F, 0xFFFD, 0xFFFD, -/* 40D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4373, 0x714E, 0x3670, -/* 40E0 */ 0xFFFD, 0xFFFD, 0x326F, 0xFFFD, 0xFFFD, 0x714D, 0xFFFD, 0xFFFD, -/* 40E8 */ 0x714B, 0xFFFD, 0x714C, 0xFFFD, 0x714A, 0xFFFD, 0xFFFD, 0x7158, -/* 40F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40F8 */ 0xFFFD, 0xFFFD, 0x714F, 0x7150, 0xFFFD, 0xFFFD, 0x7151, 0x7152, -/* 4100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7154, 0xFFFD, 0xFFFD, -/* 4108 */ 0x7153, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D59, 0xFFFD, 0x7155, 0xFFFD, -/* 4110 */ 0xFFFD, 0xFFFD, 0x7157, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3533, 0x7156, 0xFFFD, 0xFFFD, 0x417B, -/* 4120 */ 0x3833, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7159, 0x424D, -/* 4128 */ 0xFFFD, 0xFFFD, 0x715A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x462D, -/* 4130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x715B, 0xFFFD, -/* 4138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7160, 0xFFFD, 0x715E, -/* 4140 */ 0xFFFD, 0x715D, 0x715F, 0xFFFD, 0x715C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7162, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7161, 0xFFFD, 0x7164, 0xFFFD, -/* 4158 */ 0xFFFD, 0x3643, 0x7163, 0xFFFD, 0xFFFD, 0xFFFD, 0x7165, 0xFFFD, -/* 4160 */ 0xFFFD, 0x7166, 0xFFFD, 0x7168, 0x7167, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4168 */ 0x7169, 0x716B, 0x716A, 0x397C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4170 */ 0x716C, 0xFFFD, 0xFFFD, 0x716D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x333C, 0xFFFD, 0xFFFD, 0xFFFD, 0x716E, -/* 4180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x716F, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F71, -/* 4188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4190 */ 0xFFFD, 0xFFFD, 0x7170, 0xFFFD, 0x7171, 0xFFFD, 0x7172, 0x7173, -/* 4198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3962, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41A0 */ 0xFFFD, 0x7174, 0x7175, 0xFFFD, 0xFFFD, 0x7176, 0x7177, 0xFFFD, -/* 41A8 */ 0xFFFD, 0x7178, 0xFFFD, 0xFFFD, 0xFFFD, 0x4831, 0x717A, 0xFFFD, -/* 41B0 */ 0x4926, 0x717B, 0x7179, 0xFFFD, 0x717D, 0xFFFD, 0xFFFD, 0x717C, -/* 41B8 */ 0xFFFD, 0xFFFD, 0x717E, 0xFFFD, 0xFFFD, 0xFFFD, 0x7221, 0xFFFD, -/* 41C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41C8 */ 0xFFFD, 0x7222, 0x7223, 0xFFFD, 0x7224, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41D0 */ 0xFFFD, 0x7225, 0xFFFD, 0xFFFD, 0x7226, 0x7227, 0xFFFD, 0x7228, -/* 41D8 */ 0xFFFD, 0x7229, 0x722A, 0x722B, 0x722C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41E0 */ 0x722D, 0x722E, 0xFFFD, 0x5D35, 0x722F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6478, 0x3534, 0xFFFD, -/* 41F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3321, 0x3A32, 0x7231, 0x7230, 0x4C25, -/* 41F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7233, -/* 4200 */ 0x7234, 0x7232, 0xFFFD, 0x7235, 0xFFFD, 0xFFFD, 0x4B62, 0xFFFD, -/* 4208 */ 0xFFFD, 0xFFFD, 0x7236, 0xFFFD, 0x357B, 0x4F25, 0xFFFD, 0xFFFD, -/* 4210 */ 0xFFFD, 0xFFFD, 0x7237, 0x7239, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x303E, 0xFFFD, -/* 4220 */ 0xFFFD, 0x723A, 0x4A2B, 0x7238, 0xFFFD, 0xFFFD, 0x723B, 0x723C, -/* 4228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x723D, -/* 4230 */ 0x723E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4238 */ 0x723F, 0xFFFD, 0x4B6E, 0x3B2D, 0xFFFD, 0x3A7A, 0x412F, 0xFFFD, -/* 4240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7240, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4248 */ 0xFFFD, 0x7243, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4250 */ 0x7241, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7244, 0xFFFD, -/* 4258 */ 0xFFFD, 0x3871, 0x7242, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7245, -/* 4260 */ 0xFFFD, 0x7246, 0x7247, 0xFFFD, 0x724B, 0xFFFD, 0x3B2A, 0xFFFD, -/* 4268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4264, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4270 */ 0xFFFD, 0x724C, 0x7249, 0x7248, 0x724A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4278 */ 0x375F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4280 */ 0x7250, 0x724F, 0x724E, 0xFFFD, 0xFFFD, 0x3033, 0x725A, 0xFFFD, -/* 4288 */ 0x7256, 0xFFFD, 0x7257, 0x7253, 0x7259, 0xFFFD, 0x7255, 0x3362, -/* 4290 */ 0xFFFD, 0xFFFD, 0x4F4C, 0xFFFD, 0x7258, 0x7254, 0x7252, 0x7251, -/* 4298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x725C, 0xFFFD, 0xFFFD, -/* 42A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x725F, 0xFFFD, 0xFFFD, 0x725E, 0x725D, -/* 42A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4949, -/* 42B0 */ 0x725B, 0x3073, 0x7260, 0xFFFD, 0x7262, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x336F, 0x724D, 0x3137, 0xFFFD, 0xFFFD, -/* 42C0 */ 0x7264, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42C8 */ 0x7263, 0x7261, 0x432D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B70, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42D8 */ 0xFFFD, 0x4E5A, 0xFFFD, 0xFFFD, 0x7265, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42E0 */ 0xFFFD, 0xFFFD, 0x7266, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42E8 */ 0xFFFD, 0x7267, 0x7268, 0xFFFD, 0x7269, 0x443B, 0xFFFD, 0x726A, -/* 42F0 */ 0xFFFD, 0x4837, 0xFFFD, 0x726F, 0x726B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42F8 */ 0x726C, 0xFFFD, 0xFFFD, 0x4B31, 0x4C44, 0xFFFD, 0x4650, 0x7270, -/* 4300 */ 0xFFFD, 0xFFFD, 0x7271, 0x463E, 0x726E, 0x726D, 0xFFFD, 0xFFFD, -/* 4308 */ 0xFFFD, 0xFFFD, 0x322A, 0xFFFD, 0xFFFD, 0xFFFD, 0x7279, 0xFFFD, -/* 4310 */ 0xFFFD, 0x7278, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3175, -/* 4318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7276, 0xFFFD, 0xFFFD, 0xFFFD, 0x7275, -/* 4320 */ 0xFFFD, 0xFFFD, 0x7273, 0xFFFD, 0x337B, 0xFFFD, 0x7272, 0x3C32, -/* 4328 */ 0x3229, 0x3963, 0xFFFD, 0xFFFD, 0x727C, 0x727B, 0xFFFD, 0x727A, -/* 4330 */ 0xFFFD, 0xFFFD, 0x7277, 0xFFFD, 0x727D, 0xFFFD, 0x727E, 0xFFFD, -/* 4338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7325, 0x7324, -/* 4340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7326, -/* 4348 */ 0xFFFD, 0xFFFD, 0x312D, 0x7321, 0x7322, 0xFFFD, 0x3974, 0x4C39, -/* 4350 */ 0xFFFD, 0xFFFD, 0x7323, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4358 */ 0xFFFD, 0xFFFD, 0x4B32, 0xFFFD, 0xFFFD, 0x732B, 0xFFFD, 0xFFFD, -/* 4360 */ 0x7327, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4368 */ 0x732C, 0x7329, 0xFFFD, 0x7328, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4370 */ 0xFFFD, 0x375C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x732D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x732E, 0xFFFD, -/* 4388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x732F, 0xFFFD, 0x732A, 0xFFFD, 0xFFFD, -/* 4390 */ 0xFFFD, 0x7274, 0xFFFD, 0xFFFD, 0x7330, 0xFFFD, 0x4461, 0xFFFD, -/* 4398 */ 0xFFFD, 0xFFFD, 0x7334, 0xFFFD, 0x7335, 0x7333, 0xFFFD, 0xFFFD, -/* 43A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7332, 0x7338, 0xFFFD, 0x7331, 0xFFFD, -/* 43A8 */ 0x7336, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43B0 */ 0xFFFD, 0x7337, 0xFFFD, 0xFFFD, 0xFFFD, 0x733A, 0xFFFD, 0xFFFD, -/* 43B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7339, 0x733C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x733D, 0xFFFD, 0x733E, 0xFFFD, 0xFFFD, -/* 43C8 */ 0x4F49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x733B, 0x426B, -/* 43D0 */ 0x3A6D, 0xFFFD, 0xFFFD, 0x733F, 0x7340, 0x7341, 0xFFFD, 0xFFFD, -/* 43D8 */ 0x7342, 0x7343, 0xFFFD, 0xFFFD, 0x3834, 0x7344, 0xFFFD, 0xFFFD, -/* 43E0 */ 0xFFFD, 0x7345, 0xFFFD, 0x3C2F, 0xFFFD, 0x7346, 0xFFFD, 0xFFFD, -/* 43E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7347, 0xFFFD, 0xFFFD, 0x7348, -/* 43F0 */ 0x7349, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x734C, 0x734A, 0x4F3C, -/* 43F8 */ 0xFFFD, 0x734B, 0xFFFD, 0x4E6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4400 */ 0xFFFD, 0x734D, 0xFFFD, 0x4E5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4408 */ 0xFFFD, 0x734E, 0x477E, 0xFFFD, 0xFFFD, 0x734F, 0x7351, 0xFFFD, -/* 4410 */ 0xFFFD, 0x7352, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7350, 0x396D, 0x4C4D, 0x4B63, -/* 4420 */ 0x5677, 0xFFFD, 0x5D60, 0x4B7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4428 */ 0x322B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4430 */ 0x7354, 0x3550, 0x7355, 0x7356, 0x7357, 0xFFFD, 0x3975, 0xFFFD, -/* 4438 */ 0x7358, 0xFFFD, 0xFFFD, 0xFFFD, 0x6054, 0x4C5B, 0xFFFD, 0x4263, -/* 4440 */ 0x7359, 0x735B, 0x735A, 0xFFFD, 0x735C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4448 */ 0xFFFD, 0x735D, 0xFFFD, 0xFFFD, 0x735E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x735F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4458 */ 0x7360, 0xFFFD, 0x7361, 0x7362, 0xFFFD, 0x7363, 0xFFFD, 0x7364, -/* 4460 */ 0x7365, 0x7366, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7367, 0x7368, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4470 */ 0xFFFD, 0xFFFD, 0x4524, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x385D, -/* 4478 */ 0xFFFD, 0x736A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x414D, 0x736B, 0xFFFD, 0xFFFD, -/* 4488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4490 */ 0x736C, 0x4921, 0xFFFD, 0xFFFD, 0x736D, 0x736E, 0x6337, 0xFFFD, -/* 4498 */ 0xFFFD, 0x6C5A, 0x706D, 0xFFFD, 0xFFFD, 0x736F, 0xFFFD, 0x7370, -/* 44A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44A8 */ 0xFFFD, 0xFFFD, 0x7372, 0x7373, 0x7374, 0x4E70, 0x7371, 0xFFFD, -/* 44B0 */ 0xFFFD, 0x7375, 0x7376, 0xFFFD, 0xFFFD, 0x7378, 0xFFFD, 0x7377, -/* 44B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x737A, 0xFFFD, 0xFFFD, -/* 44C0 */ 0xFFFD, 0x737B, 0x7379, 0x4E36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x737C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44D0 */ 0xFFFD, 0xFFFD, 0x737D, 0x6354, 0xFFFD, 0xFFFD, 0x737E, 0x212A, -/* 44D8 */ 0xFFFD, 0x2174, 0x2170, 0x2173, 0x2175, 0xFFFD, 0x214A, 0x214B, -/* 44E0 */ 0x2176, 0x215C, 0x2124, 0xFFFD, 0x2125, 0x213F, 0xFFFD, 0xFFFD, -/* 44E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44F0 */ 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129, 0x2177, 0x214E, -/* 44F8 */ 0xFFFD, 0x214F, 0x2130, 0x2132, 0x212E, 0x2150, 0x2143, 0x2151, -/* 4500 */ 0x2131, 0xFFFD, 0x216F, -/* End of table Total Length = 0x47E6 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/jis0212.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/jis0212.uf deleted file mode 100644 index d19c66bc3c4..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/jis0212.uf +++ /dev/null @@ -1,6426 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0402 - srcEnd = 040C - destBegin = 2742 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0452 - srcEnd = 045C - destBegin = 2772 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 560D - srcEnd = 5612 - destBegin = 362D -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 7428 - srcEnd = 7431 - destBegin = 4C2C -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 7579 - srcEnd = 757E - destBegin = 4D3D -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 76A2 - srcEnd = 76A8 - destBegin = 4E3F -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 7C59 - srcEnd = 7C5E - destBegin = 5279 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 855C - srcEnd = 8562 - destBegin = 5949 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 8783 - srcEnd = 8789 - destBegin = 5B38 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 91EC - srcEnd = 91F1 - destBegin = 632E -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 007E - destBegin = 2237 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 00A1 - srcEnd = 017E - mappingOffset = 0000 - Mapping = - 2242 FFFD FFFD 2270 FFFD 2243 FFFD FFFD - 226D 226C FFFD FFFD FFFD 226E 2234 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2231 - FFFD 226B FFFD FFFD FFFD FFFD 2244 2A22 - 2A21 2A24 2A2A 2A23 2A29 2921 2A2E 2A32 - 2A31 2A34 2A33 2A40 2A3F 2A42 2A41 FFFD - 2A50 2A52 2A51 2A54 2A58 2A53 FFFD 292C - 2A63 2A62 2A65 2A64 2A72 2930 294E 2B22 - 2B21 2B24 2B2A 2B23 2B29 2941 2B2E 2B32 - 2B31 2B34 2B33 2B40 2B3F 2B42 2B41 2943 - 2B50 2B52 2B51 2B54 2B58 2B53 FFFD 294C - 2B63 2B62 2B65 2B64 2B72 2950 2B73 2A27 - 2B27 2A25 2B25 2A28 2B28 2A2B 2B2B 2A2C - 2B2C 2A2F 2B2F 2A2D 2B2D 2A30 2B30 2922 - 2942 2A37 2B37 FFFD FFFD 2A36 2B36 2A38 - 2B38 2A35 2B35 2A3A 2B3A 2A3B 2B3B 2A3D - 2B3D 2A3C FFFD 2A3E 2B3E 2924 2944 2A47 - 2B47 2A45 2B45 FFFD FFFD 2A46 2B46 2A44 - 2945 2926 2946 2A48 2B48 2A49 2B49 2947 - 2A4A 2B4A 2A4C 2B4C 2A4B 2B4B 2929 2949 - 2928 2948 2A4D 2B4D 2A4F 2B4F 2A4E 2B4E - 294A 292B 294B 2A57 2B57 FFFD FFFD 2A56 - 2B56 292D 294D 2A59 2B59 2A5B 2B5B 2A5A - 2B5A 2A5C 2B5C 2A5D 2B5D 2A5F 2B5F 2A5E - 2B5E 2A61 2B61 2A60 2B60 292F 294F 2A6C - 2B6C 2A69 2B69 2A66 2B66 2A6B 2B6B 2A68 - 2B68 2A6A 2B6A 2A71 2B71 2A74 2B74 2A73 - 2A75 2B75 2A77 2B77 2A76 2B76 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 01CD - srcEnd = 01DC - mappingOffset = 00DE - Mapping = - 2A26 2B26 2A43 2B43 2A55 2B55 2A67 2B67 - 2A70 2B70 2A6D 2B6D 2A6F 2B6F 2A6E 2B6E -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 01F5 - destBegin = 2B39 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 02C7 - destBegin = 2230 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 00EE - Mapping = - 222F 2232 2236 2235 FFFD 2233 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 0384 - srcEnd = 0390 - mappingOffset = 00F4 - Mapping = - 2238 2239 2661 FFFD 2662 2663 2664 FFFD - 2667 FFFD 2669 266C 2676 -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 03AA - srcEnd = 03B0 - mappingOffset = 0101 - Mapping = - 2665 266A 2671 2672 2673 2674 267B -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = 03C2 - srcEnd = 03CE - mappingOffset = 0108 - Mapping = - 2678 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2675 267A 2677 2679 267C -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 040E - srcEnd = 040F - mappingOffset = 0115 - Mapping = - 274D 274E -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 045E - srcEnd = 045F - mappingOffset = 0117 - Mapping = - 277D 277E -End of Item 0014 - -Begin of Item 0015 - Format 2 - srcBegin = 2116 - destBegin = 2271 -End of Item 0015 - -Begin of Item 0016 - Format 2 - srcBegin = 2122 - destBegin = 226F -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 4E02 - srcEnd = 4E12 - mappingOffset = 0119 - Mapping = - 3021 FFFD 3022 3023 FFFD FFFD FFFD FFFD - FFFD FFFD 3024 FFFD FFFD FFFD FFFD FFFD - 3025 -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 4E1F - srcEnd = 4E7F - mappingOffset = 012A - Mapping = - 3026 FFFD FFFD FFFD 3027 3028 FFFD FFFD - FFFD 3029 FFFD FFFD 302A FFFD FFFD 302B - 302C 302D FFFD FFFD FFFD FFFD 302E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 302F 3030 FFFD FFFD 3031 FFFD FFFD - 3032 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3033 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3034 FFFD 3035 FFFD FFFD - FFFD FFFD FFFD FFFD 3036 FFFD FFFD FFFD - FFFD 3037 3038 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3039 303A FFFD - FFFD FFFD 303B FFFD FFFD FFFD FFFD FFFD - 303C -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 4E8D - srcEnd = 4E9D - mappingOffset = 018B - Mapping = - 303D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 303E 303F FFFD FFFD FFFD FFFD FFFD - 3040 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 4EAF - srcEnd = 4EC3 - mappingOffset = 019C - Mapping = - 3041 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3042 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3043 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 4ED0 - srcEnd = 4F19 - mappingOffset = 01B1 - Mapping = - 3044 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3045 3046 FFFD FFFD FFFD FFFD - 3047 3048 3049 FFFD FFFD FFFD FFFD FFFD - 304A FFFD FFFD FFFD FFFD FFFD FFFD 304B - FFFD 304C FFFD 304D FFFD 304E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 304F 3050 3051 - 3052 FFFD 3053 3054 FFFD FFFD FFFD FFFD - 3055 FFFD FFFD 3056 3057 FFFD FFFD FFFD - FFFD FFFD 3058 FFFD FFFD 3059 305A 305B - FFFD 305C -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 4F2E - srcEnd = 4F9F - mappingOffset = 01FB - Mapping = - 305D FFFD FFFD 305E FFFD 3060 FFFD 3061 - FFFD 3062 FFFD 3063 FFFD 3064 FFFD FFFD - 3065 FFFD 3066 FFFD 3067 FFFD FFFD FFFD - FFFD FFFD 3068 3069 FFFD 306A 306B FFFD - FFFD FFFD FFFD FFFD 306C FFFD 306D FFFD - 306E FFFD 306F FFFD FFFD FFFD FFFD FFFD - FFFD 3070 305F FFFD FFFD 3071 FFFD FFFD - FFFD FFFD FFFD FFFD 3072 FFFD 3073 FFFD - 3074 FFFD FFFD 3075 FFFD FFFD FFFD FFFD - FFFD 3076 3077 3078 3079 FFFD FFFD 307A - 307B FFFD FFFD 307C 307D FFFD 307E 3121 - FFFD FFFD FFFD 3122 3123 FFFD 3124 FFFD - 3125 FFFD 3126 FFFD 3127 3128 3129 FFFD - FFFD 312A FFFD 312B 312C FFFD FFFD FFFD - 312D 312E -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 4FB2 - srcEnd = 4FE2 - mappingOffset = 026D - Mapping = - 312F FFFD FFFD FFFD FFFD 3130 FFFD 3131 - FFFD 3132 3133 3134 3135 FFFD 3136 3137 - FFFD FFFD FFFD 3138 3139 FFFD 313A 313B - FFFD 313C 313D 313E FFFD 313F FFFD FFFD - 3140 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3141 FFFD FFFD FFFD 3142 FFFD - 3143 -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 4FF0 - srcEnd = 5071 - mappingOffset = 029E - Mapping = - 3144 FFFD 3145 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3146 3147 FFFD 3148 - 3149 314A FFFD FFFD 314B FFFD FFFD 314C - FFFD FFFD 314D FFFD 314E FFFD 314F FFFD - 3150 FFFD FFFD 3151 FFFD FFFD FFFD 3152 - 3153 FFFD FFFD 3154 3155 3156 3157 FFFD - FFFD FFFD 3158 FFFD FFFD FFFD FFFD 3159 - FFFD FFFD FFFD FFFD FFFD FFFD 315A FFFD - 315B FFFD 315C 315D FFFD 315E FFFD FFFD - FFFD FFFD FFFD 3176 FFFD FFFD FFFD FFFD - 315F 3160 3161 FFFD FFFD 3162 3163 FFFD - FFFD FFFD 3164 FFFD 3165 FFFD 3166 FFFD - FFFD 3167 3168 3169 FFFD FFFD FFFD 316A - FFFD 316B FFFD FFFD FFFD FFFD FFFD 316C - 316D FFFD 316E 316F FFFD FFFD 3170 3171 - FFFD FFFD 3172 FFFD FFFD 3173 FFFD FFFD - 3174 3175 -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 5081 - srcEnd = 5166 - mappingOffset = 0320 - Mapping = - 3177 FFFD 3178 3179 FFFD 317A FFFD FFFD - FFFD 317B FFFD FFFD FFFD 317C 317D 317E - FFFD 3221 3222 3223 FFFD 3224 FFFD FFFD - FFFD FFFD 3225 3226 FFFD 3227 3228 3229 - 322A 322B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 322C FFFD FFFD FFFD FFFD 322D 322E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 322F 3230 FFFD FFFD 3231 FFFD FFFD 3232 - FFFD FFFD 3233 3234 FFFD FFFD 3235 FFFD - FFFD FFFD FFFD 3236 FFFD 3237 FFFD 3238 - FFFD FFFD 3239 323A FFFD FFFD FFFD 323B - FFFD FFFD FFFD 323C 323D FFFD 323E FFFD - FFFD 323F FFFD 3240 FFFD 3241 FFFD 3242 - 3243 FFFD FFFD FFFD FFFD FFFD 3244 FFFD - 3245 3251 FFFD FFFD FFFD 3246 FFFD FFFD - FFFD 3247 FFFD FFFD FFFD 3248 FFFD FFFD - FFFD FFFD 3249 FFFD FFFD 324A 324B 324C - FFFD FFFD 324D 324E 324F 3250 FFFD 3252 - FFFD FFFD FFFD FFFD FFFD FFFD 3253 FFFD - 3254 FFFD 3255 3256 3257 3258 FFFD FFFD - FFFD FFFD 3259 FFFD FFFD FFFD 325A 325B - FFFD FFFD FFFD 325C 325D FFFD 325E FFFD - 325F FFFD 3260 3261 3262 FFFD FFFD 3263 - 3264 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3265 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3266 FFFD FFFD FFFD FFFD 3267 FFFD - FFFD FFFD 3268 FFFD 3269 FFFD 326A 326B - FFFD FFFD FFFD FFFD FFFD FFFD 326C FFFD - FFFD FFFD FFFD 326D FFFD 326E -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 517E - srcEnd = 5205 - mappingOffset = 0406 - Mapping = - 326F FFFD FFFD FFFD FFFD 3270 3271 FFFD - FFFD FFFD FFFD FFFD FFFD 3272 FFFD FFFD - 3273 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3274 FFFD FFFD FFFD FFFD 3275 - FFFD FFFD FFFD 3276 FFFD 3277 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3278 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3279 FFFD 327A FFFD 327B FFFD - 327C 327D FFFD FFFD 327E FFFD FFFD FFFD - FFFD FFFD 3321 FFFD FFFD FFFD FFFD FFFD - FFFD 3322 FFFD 3323 3324 3325 FFFD 3326 - FFFD FFFD 3327 FFFD FFFD FFFD FFFD FFFD - 3328 FFFD FFFD FFFD 3329 FFFD FFFD 332A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 332B FFFD FFFD FFFD 332C 332D 332E FFFD - FFFD 332F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3330 3331 FFFD FFFD 3332 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 5212 - srcEnd = 5249 - mappingOffset = 048E - Mapping = - 3333 3334 FFFD 3335 3336 FFFD 3337 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3338 FFFD FFFD FFFD FFFD FFFD 3339 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 333A - 333B FFFD FFFD 333C FFFD FFFD FFFD FFFD - FFFD FFFD 333D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 333E FFFD FFFD FFFD 333F -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 5255 - srcEnd = 534C - mappingOffset = 04C6 - Mapping = - 3340 FFFD 3341 3342 FFFD 3343 FFFD 3344 - FFFD FFFD 3345 3346 3347 FFFD FFFD FFFD - FFFD 3348 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3349 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 334A 334B 334C FFFD FFFD FFFD - FFFD FFFD FFFD 334D FFFD 334E FFFD FFFD - 334F FFFD FFFD FFFD FFFD 3350 FFFD 3351 - FFFD FFFD FFFD FFFD FFFD FFFD 3352 FFFD - 3353 3354 3355 3356 FFFD 3357 FFFD 3358 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3359 - 335A 335B 335C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 335D 335E FFFD FFFD FFFD FFFD - FFFD 335F 3360 3361 FFFD 3362 3363 FFFD - 3364 FFFD FFFD 3365 FFFD FFFD FFFD 3366 - FFFD 3367 FFFD 3368 FFFD FFFD FFFD 3369 - FFFD FFFD 336A FFFD 336B FFFD FFFD 336C - FFFD 336D FFFD FFFD FFFD FFFD 336E 336F - FFFD FFFD FFFD FFFD 3370 FFFD FFFD FFFD - 3371 FFFD FFFD 3372 3373 3374 FFFD 3375 - FFFD FFFD FFFD 3376 3377 FFFD FFFD 3378 - FFFD 3379 337A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 337B FFFD FFFD 337C FFFD - FFFD FFFD FFFD FFFD FFFD 337D 337E 3421 - FFFD FFFD FFFD FFFD 3422 FFFD 3423 FFFD - FFFD FFFD FFFD 3424 FFFD FFFD 3425 3426 - FFFD 3427 3428 FFFD FFFD FFFD FFFD FFFD - 3429 FFFD 342A 342B 342C FFFD 342D 342E - 342F FFFD FFFD 3430 FFFD 3431 FFFD FFFD - 3432 FFFD FFFD FFFD FFFD FFFD FFFD 3433 - 3434 3435 FFFD FFFD FFFD 3436 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3438 3437 -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 5359 - srcEnd = 53E7 - mappingOffset = 05BE - Mapping = - 3439 FFFD 343A FFFD FFFD FFFD FFFD FFFD - 343B FFFD 343C FFFD 343D FFFD FFFD FFFD - FFFD FFFD FFFD 343E 343F FFFD FFFD FFFD - FFFD 3440 FFFD FFFD FFFD FFFD FFFD FFFD - 3441 FFFD FFFD FFFD FFFD 3442 FFFD FFFD - FFFD FFFD 3443 FFFD FFFD FFFD 3444 3445 - FFFD FFFD FFFD FFFD FFFD 3446 FFFD FFFD - FFFD FFFD 3447 3448 FFFD FFFD FFFD FFFD - 3449 FFFD FFFD FFFD 344A FFFD FFFD FFFD - 344B FFFD FFFD 344C FFFD FFFD FFFD FFFD - FFFD 344D 344E FFFD FFFD FFFD 344F FFFD - FFFD 3450 FFFD 3451 3452 FFFD 3453 3454 - FFFD 3455 FFFD FFFD 3456 FFFD FFFD 3457 - FFFD FFFD FFFD FFFD 3458 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3459 FFFD - FFFD 345A 345B FFFD 345C FFFD FFFD FFFD - FFFD 345D FFFD FFFD 345E 345F FFFD 3460 - FFFD FFFD FFFD FFFD FFFD 3461 3462 -End of Item 0023 - -Begin of Item 0024 - Format 2 - srcBegin = 53F5 - destBegin = 3463 -End of Item 0024 - -Begin of Item 0025 - Format 2 - srcBegin = 5402 - destBegin = 3464 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 5413 - srcEnd = 5435 - mappingOffset = 064D - Mapping = - 3465 FFFD FFFD FFFD FFFD FFFD FFFD 3466 - FFFD FFFD FFFD FFFD FFFD FFFD 3467 FFFD - FFFD FFFD FFFD FFFD 3468 3469 FFFD 346A - FFFD FFFD FFFD FFFD 346B FFFD 346C FFFD - FFFD 346D 346E -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 5443 - srcEnd = 544F - mappingOffset = 0670 - Mapping = - 346F 3470 FFFD FFFD 3471 FFFD FFFD FFFD - FFFD FFFD 3472 FFFD 3473 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 545E - srcEnd = 54CE - mappingOffset = 067D - Mapping = - 3474 FFFD FFFD FFFD 3475 FFFD 3476 FFFD - 3477 3478 FFFD 3479 FFFD 347A FFFD 347B - 347C FFFD FFFD FFFD FFFD FFFD 347D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 347E FFFD 3521 FFFD 3522 FFFD 3523 - FFFD FFFD 3524 3525 FFFD FFFD FFFD 3526 - FFFD FFFD FFFD 3527 FFFD FFFD FFFD 3528 - 3529 FFFD FFFD FFFD FFFD FFFD 352A FFFD - FFFD 352B FFFD 352C FFFD FFFD FFFD FFFD - 352D 352E FFFD 352F 3530 FFFD FFFD 3531 - 3532 FFFD FFFD 3533 FFFD FFFD FFFD FFFD - FFFD 3534 FFFD 3535 3536 3537 FFFD FFFD - FFFD 3538 FFFD FFFD FFFD FFFD FFFD FFFD - 3539 FFFD FFFD FFFD 353A FFFD FFFD 353B - 353C -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 54E0 - srcEnd = 5515 - mappingOffset = 06EE - Mapping = - 353D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 353E FFFD 353F FFFD FFFD 3540 - FFFD FFFD FFFD FFFD FFFD FFFD 3541 FFFD - FFFD FFFD FFFD FFFD 3542 FFFD 3543 3544 - 3545 3546 FFFD FFFD FFFD 3547 FFFD FFFD - 3548 3549 FFFD FFFD 354A 354B 354C FFFD - FFFD FFFD FFFD FFFD FFFD 354D -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 552A - srcEnd = 5566 - mappingOffset = 0724 - Mapping = - 354E 354F FFFD FFFD FFFD FFFD FFFD FFFD - 3550 FFFD FFFD 3551 3552 FFFD FFFD FFFD - FFFD 3553 3554 3555 FFFD FFFD FFFD 3556 - FFFD FFFD FFFD FFFD FFFD 3557 FFFD 3558 - 3559 FFFD FFFD 355A FFFD FFFD 355B 355C - FFFD FFFD FFFD FFFD FFFD FFFD 355D FFFD - 355E 355F FFFD FFFD 3560 FFFD 3561 3562 - FFFD FFFD 3563 FFFD 3564 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 557F - srcEnd = 5597 - mappingOffset = 0761 - Mapping = - 3565 FFFD 3566 3567 FFFD FFFD FFFD 3568 - FFFD 3569 FFFD FFFD FFFD FFFD FFFD 356A - 356B FFFD 356C 356D 356E 356F FFFD FFFD - 3570 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 55A3 - srcEnd = 55B2 - mappingOffset = 077A - Mapping = - 3571 3572 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3573 FFFD FFFD FFFD FFFD 3574 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 55BF - srcEnd = 55E9 - mappingOffset = 078A - Mapping = - 3575 FFFD 3576 FFFD 3577 FFFD FFFD 3578 - FFFD FFFD 3579 FFFD 357A 357B FFFD 357C - FFFD FFFD 357D 357E 3621 FFFD FFFD FFFD - 3622 3623 FFFD FFFD 3624 FFFD FFFD 3625 - FFFD FFFD FFFD 3626 FFFD FFFD FFFD FFFD - FFFD FFFD 3627 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 55F6 - srcEnd = 560A - mappingOffset = 07B5 - Mapping = - 3628 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3629 FFFD FFFD FFFD FFFD FFFD 362A - FFFD FFFD 362B FFFD 362C -End of Item 002E - -Begin of Item 002F - Format 2 - srcBegin = 5619 - destBegin = 3633 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 562C - srcEnd = 5675 - mappingOffset = 07CA - Mapping = - 3634 FFFD FFFD FFFD 3635 FFFD FFFD 3636 - FFFD 3637 FFFD 3638 FFFD 3639 FFFD 363A - 363B 363C FFFD 363D 363E 363F FFFD 3640 - 3641 FFFD 3642 FFFD FFFD 3643 FFFD 3644 - FFFD 3645 FFFD 3646 FFFD FFFD FFFD FFFD - 3647 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3648 FFFD 3649 364A 364B 364C - FFFD FFFD 364D FFFD FFFD 364E FFFD FFFD - FFFD 364F FFFD 3650 FFFD 3651 3652 FFFD - FFFD 3653 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 5684 - srcEnd = 5752 - mappingOffset = 0814 - Mapping = - 3654 3655 FFFD FFFD 3656 FFFD FFFD 3657 - 3658 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3659 FFFD FFFD FFFD 365A 365B FFFD - FFFD 365C 365D 365E FFFD FFFD FFFD FFFD - FFFD FFFD 365F 3660 3661 3662 FFFD 3663 - 3664 3665 FFFD FFFD FFFD 3666 FFFD 3667 - FFFD FFFD FFFD 3668 FFFD FFFD FFFD FFFD - FFFD FFFD 3669 FFFD FFFD FFFD FFFD FFFD - FFFD 366A FFFD FFFD FFFD 366B 366C 366D - 3670 3671 FFFD 366E 366F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3672 FFFD FFFD - 3673 3674 FFFD 3675 FFFD 3676 FFFD FFFD - 3677 3678 3679 367A 367B FFFD FFFD 367D - FFFD 367E FFFD FFFD FFFD 367C FFFD FFFD - FFFD FFFD 3721 3722 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3723 3724 FFFD - FFFD FFFD FFFD 3725 FFFD FFFD 3726 FFFD - 3727 FFFD FFFD FFFD FFFD 3728 FFFD FFFD - FFFD 3729 FFFD FFFD FFFD FFFD 372A 372B - FFFD 372C FFFD FFFD 372D FFFD 372E 372F - 3730 3731 FFFD FFFD FFFD 3732 3733 FFFD - 3734 FFFD 3735 3736 FFFD FFFD FFFD 3737 - 3738 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3739 373A 373B FFFD FFFD FFFD FFFD - FFFD 373C 373D FFFD FFFD FFFD FFFD FFFD - 373E 373F FFFD FFFD FFFD FFFD 3740 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 5762 - srcEnd = 57AC - mappingOffset = 08E3 - Mapping = - 3741 FFFD FFFD 3742 FFFD 3743 3744 FFFD - FFFD 3745 FFFD 3746 3747 3748 3749 374A - FFFD 374B 374C 374D FFFD 374E FFFD 374F - 3750 3751 3752 FFFD 3753 FFFD FFFD 3754 - FFFD 3755 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3756 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3757 3760 FFFD 3758 FFFD 3759 - 375A FFFD 375B 375C 375D 375E FFFD 375F - FFFD FFFD FFFD FFFD FFFD 3761 3762 3763 - FFFD FFFD 3764 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 57B8 - srcEnd = 580D - mappingOffset = 092E - Mapping = - 3765 FFFD FFFD FFFD FFFD 3766 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3767 - 3768 FFFD FFFD FFFD 3769 FFFD FFFD 376A - FFFD FFFD FFFD FFFD FFFD 376B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 376C 376D FFFD - FFFD 377E FFFD FFFD 376E FFFD 376F 3770 - FFFD 3771 FFFD FFFD FFFD 3772 FFFD FFFD - 3773 FFFD FFFD FFFD FFFD 3774 3775 FFFD - 3776 FFFD FFFD FFFD FFFD 3777 3778 3779 - FFFD FFFD FFFD 377A 377B FFFD FFFD FFFD - 377C 377D FFFD FFFD 3821 3822 -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 581B - srcEnd = 5868 - mappingOffset = 0984 - Mapping = - 3823 FFFD FFFD 3824 3825 3826 FFFD FFFD - FFFD FFFD FFFD 3827 3828 FFFD FFFD FFFD - FFFD FFFD 3829 FFFD FFFD FFFD FFFD 382A - FFFD FFFD FFFD FFFD FFFD FFFD 382B FFFD - FFFD FFFD FFFD FFFD 382C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 382D FFFD - FFFD 382E 382F FFFD 3830 3831 FFFD FFFD - FFFD FFFD 3832 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3833 FFFD 3834 FFFD - FFFD 3835 FFFD FFFD 3836 3837 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 5878 - srcEnd = 58F3 - mappingOffset = 09D2 - Mapping = - 3838 FFFD FFFD FFFD 3839 FFFD FFFD 383A - 383B 383C FFFD FFFD FFFD FFFD FFFD 383D - 383E 383F 3840 FFFD 3841 3842 FFFD 3843 - 3844 FFFD FFFD FFFD 3845 FFFD 3846 FFFD - FFFD FFFD FFFD FFFD FFFD 3847 FFFD FFFD - 3848 3849 384A FFFD FFFD FFFD 384B FFFD - FFFD 384C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 384D 384E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3850 FFFD FFFD FFFD - FFFD FFFD 3851 FFFD 384F FFFD FFFD FFFD - 3852 FFFD FFFD FFFD FFFD 3853 3854 FFFD - 3855 FFFD 3856 FFFD 3857 FFFD 3858 FFFD - FFFD FFFD 3859 FFFD FFFD 385A FFFD FFFD - FFFD 385B 385C FFFD FFFD FFFD FFFD FFFD - FFFD 385D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 385E -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 5905 - srcEnd = 5946 - mappingOffset = 0A4E - Mapping = - 385F 3860 FFFD FFFD FFFD FFFD 3861 3862 - FFFD FFFD FFFD FFFD FFFD 3863 3864 3865 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3867 FFFD FFFD FFFD 3868 FFFD 3869 386A - FFFD FFFD FFFD 386B FFFD FFFD FFFD FFFD - FFFD FFFD 386C 386D FFFD FFFD 386E FFFD - 386F 3870 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3871 FFFD FFFD FFFD 3872 FFFD - FFFD 3873 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 5952 - srcEnd = 597C - mappingOffset = 0A90 - Mapping = - 3874 3875 FFFD FFFD FFFD FFFD FFFD 3876 - FFFD 3877 FFFD 3878 3879 387A FFFD 387B - FFFD 387C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 387D FFFD 387E FFFD 3921 FFFD FFFD - 3922 FFFD FFFD 3923 3924 FFFD FFFD 3925 - FFFD 3926 3927 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 598B - srcEnd = 5A30 - mappingOffset = 0ABB - Mapping = - 3928 3929 FFFD 392A FFFD FFFD FFFD 392B - FFFD FFFD 392C FFFD 392D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 392E FFFD FFFD FFFD - FFFD 392F FFFD FFFD 3930 FFFD FFFD FFFD - FFFD FFFD 3931 3932 3933 3934 FFFD FFFD - 3935 FFFD FFFD FFFD 3936 FFFD FFFD 3937 - FFFD 3938 FFFD FFFD FFFD FFFD 3939 FFFD - 393A 393B FFFD FFFD FFFD 393C FFFD 393D - FFFD FFFD 393E FFFD FFFD FFFD FFFD 393F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3940 3941 3942 FFFD FFFD FFFD - 3943 3944 FFFD FFFD 3945 FFFD FFFD FFFD - FFFD FFFD FFFD 3946 3947 FFFD 3948 3949 - FFFD 394A FFFD FFFD 394B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 394C FFFD FFFD - FFFD 394D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 394E 394F 3950 FFFD FFFD FFFD 3951 - 3952 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3953 FFFD FFFD FFFD FFFD - 3954 3955 FFFD FFFD 3956 3957 FFFD 3958 - FFFD FFFD 3959 FFFD FFFD 395A -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 5A44 - srcEnd = 5A7E - mappingOffset = 0B61 - Mapping = - 395B 395C FFFD 395D 395E FFFD FFFD FFFD - 395F FFFD FFFD FFFD 3960 FFFD FFFD FFFD - FFFD 3961 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3962 FFFD FFFD FFFD FFFD 3963 - FFFD 3964 FFFD 3965 FFFD FFFD FFFD FFFD - FFFD 3966 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3967 FFFD FFFD 3968 3969 - FFFD FFFD 396A -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 5A8B - srcEnd = 5B08 - mappingOffset = 0B9C - Mapping = - 396B FFFD FFFD FFFD FFFD 396C FFFD FFFD - 396D FFFD FFFD 396E FFFD FFFD 396F FFFD - FFFD 3970 FFFD 3971 3972 3973 FFFD 3974 - FFFD FFFD FFFD FFFD 3975 FFFD FFFD FFFD - FFFD 3976 FFFD FFFD FFFD FFFD 3977 3978 - 3979 FFFD 397A FFFD FFFD 397B FFFD 397C - 397D FFFD FFFD FFFD 397E FFFD FFFD FFFD - FFFD 3A21 FFFD 3A22 FFFD 3A23 FFFD FFFD - FFFD FFFD FFFD FFFD 3A24 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3A25 - FFFD 3A26 FFFD FFFD FFFD 3A27 FFFD FFFD - FFFD FFFD 3A28 FFFD FFFD FFFD FFFD 3A29 - FFFD FFFD FFFD 3A2A FFFD FFFD FFFD FFFD - FFFD FFFD 3A2B 3A2C FFFD FFFD FFFD FFFD - FFFD FFFD 3A2D FFFD FFFD 3A2E 3A2F FFFD - FFFD FFFD FFFD FFFD FFFD 3A30 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 5B17 - srcEnd = 5B6F - mappingOffset = 0C1A - Mapping = - 3A31 FFFD 3A33 FFFD 3A34 FFFD 3A35 FFFD - FFFD FFFD 3A36 FFFD FFFD FFFD 3A37 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3A38 FFFD - FFFD FFFD FFFD FFFD FFFD 3A32 FFFD FFFD - FFFD 3A39 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3A3A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3A3B 3A3C FFFD FFFD - FFFD FFFD FFFD 3A3D FFFD FFFD FFFD 3A3E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3A3F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3A40 FFFD FFFD FFFD FFFD FFFD 3A41 - 3A42 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 5B7C - srcEnd = 5B96 - mappingOffset = 0C73 - Mapping = - 3A43 3A44 3A45 3A46 FFFD 3A47 FFFD FFFD - 3A48 FFFD 3A49 FFFD FFFD FFFD 3A4A FFFD - FFFD FFFD 3A4B FFFD 3A4C 3A4D FFFD 3A4E - 3A4F FFFD 3A50 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 5BA8 - srcEnd = 5BC1 - mappingOffset = 0C8E - Mapping = - 3A51 3A52 FFFD FFFD 3A53 3A54 FFFD 3A55 - FFFD 3A56 3A57 FFFD FFFD FFFD FFFD 3A58 - FFFD FFFD 3A59 FFFD 3A5A FFFD FFFD FFFD - 3A5B 3A5C -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 5BCD - srcEnd = 5BE0 - mappingOffset = 0CA8 - Mapping = - 3A5D FFFD 3A5E FFFD FFFD FFFD FFFD FFFD - FFFD 3A5F 3A60 3A61 3A62 3A63 FFFD FFFD - FFFD FFFD FFFD 3A64 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 5BEF - srcEnd = 5BFD - mappingOffset = 0CBC - Mapping = - 3A65 FFFD 3A66 FFFD FFFD 3A67 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3A68 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 5C0C - srcEnd = 5C36 - mappingOffset = 0CCB - Mapping = - 3A69 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3A6A FFFD FFFD FFFD FFFD - FFFD FFFD 3A6B 3A6C FFFD FFFD FFFD 3A6D - FFFD FFFD 3A6E FFFD FFFD 3A6F FFFD 3A70 - 3A71 FFFD 3A72 FFFD 3A73 FFFD 3A74 FFFD - FFFD 3A75 3A76 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 5C59 - srcEnd = 5CBA - mappingOffset = 0CF6 - Mapping = - 3A77 3A78 FFFD 3A79 FFFD FFFD FFFD FFFD - FFFD 3A7A 3A7B FFFD FFFD FFFD 3A7C 3A7D - 3A7E FFFD FFFD FFFD 3B21 FFFD FFFD 3B22 - FFFD FFFD FFFD 3B23 3B24 FFFD FFFD FFFD - FFFD 3B25 3B26 3B27 3B28 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3B29 3B2A - FFFD 3B2B FFFD FFFD FFFD FFFD 3B2C FFFD - FFFD 3B2D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3B2E FFFD 3B2F 3B30 - FFFD 3B31 3B32 FFFD FFFD 3B33 FFFD FFFD - FFFD 3B34 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3B35 FFFD 3B36 3B37 FFFD FFFD FFFD - FFFD 3B38 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 5CC9 - srcEnd = 5CDD - mappingOffset = 0D58 - Mapping = - 3B39 FFFD 3B3A FFFD FFFD FFFD FFFD FFFD - FFFD 3B3B FFFD FFFD FFFD FFFD 3B3D FFFD - FFFD FFFD FFFD FFFD 3B3C -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 5CEE - srcEnd = 5CF4 - mappingOffset = 0D6D - Mapping = - 3B3E FFFD FFFD 3B3F 3B40 FFFD 3B41 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 5D01 - srcEnd = 5D12 - mappingOffset = 0D74 - Mapping = - 3B42 FFFD FFFD FFFD FFFD 3B43 FFFD FFFD - FFFD FFFD FFFD FFFD 3B44 FFFD FFFD FFFD - FFFD 3B45 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 5D23 - srcEnd = 5DE9 - mappingOffset = 0D86 - Mapping = - 3B47 3B48 FFFD 3B49 3B4A FFFD FFFD FFFD - 3B46 FFFD FFFD FFFD FFFD FFFD 3B4B FFFD - FFFD 3B4C FFFD FFFD FFFD FFFD 3B4D FFFD - FFFD FFFD 3B4E FFFD 3B4F FFFD FFFD 3B50 - 3B51 FFFD FFFD 3B52 FFFD 3B53 FFFD 3B57 - FFFD FFFD FFFD FFFD FFFD FFFD 3B55 FFFD - FFFD FFFD 3B54 FFFD FFFD FFFD 3B56 FFFD - FFFD FFFD FFFD FFFD 3B58 3B59 3B5A 3B5B - FFFD 3B5C FFFD FFFD FFFD FFFD FFFD 3B5D - FFFD FFFD 3B5E FFFD FFFD 3B5F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3B60 3B61 - FFFD FFFD FFFD 3B62 3B63 FFFD 3B64 FFFD - 3B65 FFFD FFFD FFFD FFFD 3B66 FFFD 3B67 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3B68 - 3B69 3B6A 3B6B FFFD FFFD FFFD 3B6C FFFD - 3B6D FFFD FFFD FFFD 3B6E 3B6F FFFD FFFD - FFFD FFFD FFFD FFFD 3B70 FFFD FFFD FFFD - 3B71 FFFD FFFD FFFD FFFD 3B72 FFFD 6674 - FFFD 3B73 FFFD FFFD FFFD 3B74 3B75 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3B76 FFFD FFFD FFFD 3B77 FFFD FFFD FFFD - 3B78 FFFD FFFD 3B7A FFFD 3B79 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3B7B 3B7C FFFD - FFFD FFFD FFFD FFFD FFFD 3B7D FFFD FFFD - FFFD 3B7E FFFD FFFD FFFD FFFD 3C21 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 5DF8 - srcEnd = 5E70 - mappingOffset = 0E4D - Mapping = - 3C22 3C23 FFFD FFFD FFFD FFFD FFFD FFFD - 3C24 FFFD FFFD FFFD FFFD FFFD FFFD 3C25 - FFFD FFFD FFFD FFFD FFFD 3C26 FFFD FFFD - FFFD FFFD 3C27 FFFD 3C28 3C29 FFFD FFFD - 3C2A FFFD FFFD FFFD FFFD FFFD FFFD 3C2B - 3C2C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3C2E FFFD FFFD FFFD FFFD FFFD 3C2D FFFD - FFFD FFFD 3C2F FFFD FFFD 3C30 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 3C31 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3C34 FFFD 3C32 FFFD FFFD FFFD FFFD - 3C33 3C35 FFFD FFFD FFFD FFFD 3C36 FFFD - 3C37 FFFD FFFD 3C38 3C39 FFFD 3C3A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3C3B FFFD 3C3C 3C3D 3C3E 3C3F 3C40 FFFD - 3C41 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 5E80 - srcEnd = 5E8E - mappingOffset = 0EC6 - Mapping = - 3C42 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3C43 FFFD FFFD 3C44 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 5EA2 - srcEnd = 5EEB - mappingOffset = 0ED5 - Mapping = - 3C45 FFFD 3C46 3C47 FFFD FFFD 3C48 FFFD - 3C49 FFFD 3C4A FFFD FFFD FFFD FFFD 3C4B - FFFD 3C4C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3C4D 3C4E 3C4F FFFD FFFD - FFFD FFFD FFFD FFFD 3C50 FFFD FFFD FFFD - FFFD 3C52 3C51 FFFD 3C53 FFFD FFFD 3C54 - 3C55 FFFD 3C56 3C57 FFFD FFFD FFFD FFFD - FFFD FFFD 3C58 FFFD 3C59 FFFD FFFD FFFD - FFFD FFFD FFFD 3C5A FFFD FFFD FFFD FFFD - FFFD 3C5B -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 5F02 - srcEnd = 5FB8 - mappingOffset = 0F1F - Mapping = - 3C5C FFFD FFFD FFFD 3C5D 3C5E 3C5F FFFD - FFFD FFFD FFFD FFFD 3C60 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3C61 - FFFD FFFD 3C62 3C63 FFFD FFFD FFFD 3C64 - 3C65 3C66 3C67 FFFD FFFD FFFD 3C68 FFFD - FFFD 3C69 3C6A FFFD 3C6B FFFD 3C6C FFFD - FFFD FFFD 3C6D FFFD 3C6E FFFD FFFD FFFD - FFFD 3C6F FFFD 3C70 FFFD 3C71 3C72 FFFD - FFFD FFFD 3C73 3C74 FFFD 3C75 FFFD FFFD - FFFD FFFD FFFD 3C76 FFFD FFFD 3C77 FFFD - FFFD FFFD 3C78 FFFD FFFD FFFD 3C79 FFFD - FFFD 3C7A FFFD FFFD FFFD FFFD 3C7B FFFD - FFFD 3C7C 3C7D FFFD FFFD 3C7E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3D21 FFFD FFFD - 3D22 FFFD 3D23 3D24 FFFD FFFD 3D25 FFFD - 3D26 FFFD FFFD 3D27 3D28 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3D29 - FFFD FFFD FFFD 3D2A FFFD 3D2B FFFD FFFD - FFFD FFFD FFFD FFFD 3D2C FFFD FFFD FFFD - FFFD FFFD 3D2D 3D2E FFFD FFFD FFFD FFFD - 3D2F FFFD 3D32 FFFD FFFD 3D30 FFFD FFFD - FFFD 3D31 3D33 FFFD FFFD 3D34 3D35 3D36 - FFFD FFFD FFFD FFFD FFFD FFFD 3D37 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 5FC4 - srcEnd = 6071 - mappingOffset = 0FD6 - Mapping = - 3D38 FFFD FFFD 3D39 3D3A 3D3B FFFD 3D3C - FFFD FFFD FFFD FFFD 3D3D 3D3E 3D3F 3D40 - 3D41 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3D42 FFFD FFFD 3D43 3D44 FFFD - FFFD FFFD FFFD FFFD 3D45 3D46 3D47 FFFD - 3D48 3D49 3D4A 3D4B FFFD FFFD 3D4C 3D4D - FFFD FFFD 3D4E FFFD FFFD FFFD 3D4F FFFD - 3D50 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3D51 FFFD FFFD 3D52 FFFD - FFFD 3D53 FFFD FFFD FFFD FFFD FFFD 3D54 - 3D55 FFFD FFFD 3D56 3D57 FFFD 3D58 FFFD - FFFD FFFD FFFD 3D59 FFFD FFFD FFFD FFFD - 3D5A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 3D5B FFFD FFFD FFFD FFFD FFFD 3D5C - FFFD 3D5D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3D5E FFFD FFFD FFFD - FFFD FFFD FFFD 3D5F 3D60 3D61 FFFD FFFD - 3D62 FFFD FFFD FFFD FFFD 3D63 FFFD FFFD - 3D64 FFFD 3D65 3D66 FFFD FFFD FFFD FFFD - FFFD 3D67 FFFD FFFD FFFD 3D68 FFFD FFFD - FFFD FFFD FFFD 3D69 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3D6A -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 607E - srcEnd = 60E5 - mappingOffset = 1084 - Mapping = - 3D6B 3D6C FFFD FFFD 3D6D FFFD FFFD FFFD - 3D6E FFFD 3D6F FFFD 3D70 FFFD FFFD FFFD - 3D71 FFFD FFFD 3D72 FFFD 3D73 FFFD 3D74 - FFFD FFFD 3D75 FFFD FFFD FFFD FFFD 3D76 - 3D77 FFFD FFFD FFFD 3D78 FFFD 3D79 3D7A - FFFD FFFD 3D7B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3D7C 3D7D FFFD FFFD FFFD FFFD - FFFD 3D7E FFFD FFFD FFFD 3E21 FFFD FFFD - 3E22 FFFD FFFD FFFD 3E23 FFFD 3E24 FFFD - FFFD FFFD 3E25 3E26 3E27 3E28 FFFD FFFD - 3E29 3E2A FFFD FFFD FFFD FFFD 3E2B 3E2C - FFFD FFFD FFFD 3E2D FFFD 3E2E FFFD 3E2F - 3E30 FFFD FFFD FFFD 3E31 FFFD FFFD 3E32 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 60F2 - srcEnd = 6149 - mappingOffset = 10EC - Mapping = - 3E33 FFFD FFFD 3E34 FFFD FFFD 3E35 FFFD - FFFD FFFD 3E36 3E37 FFFD FFFD FFFD FFFD - 3E38 FFFD FFFD FFFD FFFD 3E39 FFFD FFFD - 3E3A FFFD 3E3B FFFD FFFD FFFD 3E3C 3E3D - 3E3E 3E3F 3E40 FFFD 3E41 3E42 FFFD 3E43 - FFFD FFFD 3E44 FFFD 3E45 FFFD FFFD FFFD - 3E46 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3E47 3E48 FFFD FFFD FFFD FFFD 3E49 3E4A - FFFD FFFD FFFD 3E4B 3E4C 3E4D FFFD 3E4E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 3E4F - FFFD FFFD FFFD 3E50 3E51 FFFD FFFD 3E52 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 615E - srcEnd = 6160 - mappingOffset = 1144 - Mapping = - 3E53 FFFD 3E54 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 616C - srcEnd = 61C2 - mappingOffset = 1147 - Mapping = - 3E55 FFFD FFFD FFFD FFFD FFFD 3E56 FFFD - FFFD FFFD FFFD FFFD 3E57 FFFD FFFD 3E58 - 3E59 FFFD FFFD 3E5A 3E5B 3E5C FFFD 3E5D - 3E5E FFFD FFFD FFFD FFFD FFFD FFFD 3E5F - FFFD 3E60 FFFD FFFD FFFD FFFD 3E61 3E62 - FFFD FFFD FFFD 3E63 3E64 FFFD FFFD FFFD - 3E65 3E66 FFFD 3E67 3E68 FFFD FFFD FFFD - FFFD 3E69 FFFD FFFD 3E6A FFFD 3E6B FFFD - FFFD 3E6C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3E6D 3E6E FFFD FFFD - 3E6F FFFD FFFD FFFD 3E70 3E71 3E72 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 61CE - srcEnd = 61EF - mappingOffset = 119E - Mapping = - 3E73 3E74 FFFD FFFD FFFD FFFD FFFD 3E75 - FFFD FFFD FFFD FFFD FFFD FFFD 3E76 3E77 - 3E78 3E79 FFFD 3E7A 3E7B FFFD FFFD 3E7E - FFFD 3E7C FFFD 3E7D FFFD FFFD 3F21 3F22 - FFFD 3F23 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 6201 - srcEnd = 6207 - mappingOffset = 11C0 - Mapping = - 3F24 FFFD 3F25 3F26 FFFD FFFD 3F27 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 6213 - srcEnd = 622B - mappingOffset = 11C7 - Mapping = - 3F28 FFFD 3F29 FFFD FFFD FFFD FFFD FFFD - FFFD 3F2A FFFD FFFD FFFD 3F2B FFFD 3F2C - 3F2D FFFD FFFD FFFD 3F2E FFFD 3F2F FFFD - 3F30 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 6239 - srcEnd = 627D - mappingOffset = 11E0 - Mapping = - 3F31 FFFD FFFD FFFD 3F32 FFFD FFFD FFFD - FFFD 3F33 3F34 3F35 FFFD 3F36 FFFD FFFD - FFFD FFFD FFFD 3F37 FFFD FFFD FFFD 3F38 - 3F39 3F3A FFFD 3F3B FFFD 3F3C FFFD FFFD - FFFD 3F3D FFFD 3F3E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3F3F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3F40 FFFD 3F41 FFFD - FFFD FFFD 3F42 FFFD FFFD FFFD FFFD FFFD - FFFD 3F43 FFFD FFFD 3F44 -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 628D - srcEnd = 6290 - mappingOffset = 1225 - Mapping = - 3F45 3F46 3F47 3F48 -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 62A6 - srcEnd = 62DA - mappingOffset = 1229 - Mapping = - 3F49 FFFD 3F4A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 3F4B FFFD FFFD - 3F4C 3F4D FFFD FFFD 3F4E FFFD FFFD FFFD - 3F4F 3F50 FFFD FFFD FFFD FFFD 3F51 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3F52 FFFD FFFD FFFD FFFD FFFD FFFD 3F53 - 3F54 FFFD FFFD FFFD 3F55 -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 62EA - srcEnd = 6318 - mappingOffset = 125E - Mapping = - 3F56 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3F57 FFFD 3F58 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 3F59 3F5A FFFD FFFD FFFD FFFD - FFFD 3F5B 3F5C FFFD FFFD FFFD FFFD FFFD - 3F5D 3F5E FFFD 3F5F FFFD FFFD 3F60 FFFD - FFFD 3F61 FFFD FFFD 3F62 FFFD 3F63 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 6329 - srcEnd = 63AF - mappingOffset = 128D - Mapping = - 3F64 3F65 FFFD FFFD 3F66 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3F67 3F68 FFFD FFFD - 3F69 FFFD FFFD 3F6A FFFD FFFD FFFD FFFD - 3F6B 3F6C 3F6D 3F6E FFFD 3F6F FFFD FFFD - FFFD 3F70 3F71 FFFD FFFD 3F72 FFFD FFFD - FFFD 3F73 3F74 3F75 FFFD FFFD FFFD 3F76 - FFFD FFFD 3F77 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 3F78 3F79 FFFD FFFD - FFFD FFFD FFFD 3F7A 3F7B FFFD FFFD FFFD - 3F7C FFFD FFFD 3F7D 3F7E FFFD FFFD 4021 - FFFD FFFD FFFD 4022 4023 FFFD 4024 FFFD - FFFD 4025 FFFD 4026 FFFD FFFD 4027 FFFD - FFFD 4028 FFFD FFFD FFFD FFFD FFFD 4029 - FFFD FFFD FFFD 402A 402B FFFD FFFD FFFD - 402C 402D FFFD FFFD FFFD 402E FFFD FFFD - FFFD FFFD FFFD 402F FFFD 4030 FFFD FFFD - FFFD FFFD FFFD FFFD 4031 4032 4033 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 63BD - srcEnd = 63F9 - mappingOffset = 1314 - Mapping = - 4034 FFFD FFFD FFFD 4035 FFFD FFFD FFFD - 4036 FFFD FFFD 4037 FFFD FFFD FFFD FFFD - FFFD 4038 FFFD FFFD 4039 FFFD 403A 403B - 403C FFFD FFFD FFFD FFFD FFFD FFFD 403D - FFFD FFFD FFFD 403E FFFD FFFD FFFD FFFD - 403F FFFD FFFD FFFD FFFD 4040 FFFD 4041 - FFFD FFFD FFFD FFFD FFFD 4042 4043 FFFD - 4044 FFFD FFFD 4045 4046 -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 6409 - srcEnd = 643F - mappingOffset = 1351 - Mapping = - 4047 4048 FFFD FFFD FFFD FFFD FFFD 4049 - FFFD 404A FFFD 404B FFFD FFFD FFFD 404C - FFFD FFFD FFFD FFFD FFFD 404D FFFD 404E - FFFD 404F FFFD 4050 4051 FFFD FFFD FFFD - 4052 4053 FFFD FFFD FFFD FFFD 4054 4055 - FFFD FFFD FFFD FFFD 4056 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4057 FFFD 4058 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 644B - srcEnd = 64D7 - mappingOffset = 1388 - Mapping = - 4059 FFFD FFFD FFFD 405A FFFD 405B 405C - 405D 405E FFFD FFFD FFFD FFFD FFFD 405F - 4060 4061 4062 FFFD 4063 4064 4065 FFFD - 4066 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4067 FFFD FFFD FFFD FFFD FFFD - 4068 4069 FFFD FFFD FFFD FFFD FFFD FFFD - 406A FFFD 406B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 406C FFFD 406D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 406E 406F 4070 FFFD - FFFD FFFD FFFD FFFD FFFD 4071 4072 FFFD - 4073 FFFD 4074 FFFD 4075 FFFD 4076 FFFD - 4077 FFFD FFFD 4078 FFFD 4079 FFFD FFFD - FFFD 407A FFFD FFFD FFFD FFFD FFFD FFFD - 407B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 407C 407D 407E FFFD FFFD FFFD - FFFD 4121 FFFD FFFD FFFD FFFD 4122 4123 - 4124 4125 FFFD 4126 FFFD 4127 4128 FFFD - FFFD FFFD 4129 FFFD 412A -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 64E4 - srcEnd = 656B - mappingOffset = 1415 - Mapping = - 412B 412C FFFD FFFD FFFD 412D 412E FFFD - FFFD 412F FFFD FFFD 4130 FFFD FFFD FFFD - FFFD 4131 FFFD 4132 FFFD FFFD FFFD 4133 - FFFD FFFD FFFD 4134 FFFD 4135 FFFD FFFD - 4136 FFFD FFFD FFFD 4137 4138 4139 FFFD - FFFD FFFD FFFD 413A FFFD FFFD FFFD 413B - 413C FFFD 413D FFFD FFFD 413E FFFD 413F - FFFD FFFD 4140 4141 FFFD FFFD 4142 FFFD - FFFD FFFD 4143 FFFD FFFD 4144 FFFD FFFD - FFFD FFFD 4145 FFFD FFFD 4146 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4147 FFFD - 4148 4149 FFFD FFFD FFFD FFFD FFFD 414A - FFFD FFFD FFFD 414B FFFD 414C FFFD FFFD - FFFD FFFD FFFD FFFD 414D FFFD 414E FFFD - 414F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4150 4151 FFFD FFFD FFFD - FFFD FFFD FFFD 4152 FFFD FFFD FFFD 4153 -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 657A - srcEnd = 65DF - mappingOffset = 149D - Mapping = - 4154 FFFD FFFD 4155 FFFD FFFD FFFD 4156 - FFFD FFFD FFFD 4157 FFFD FFFD FFFD FFFD - 4158 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4159 FFFD FFFD 415A FFFD FFFD 415B FFFD - FFFD FFFD FFFD 415C FFFD FFFD 415D FFFD - FFFD 415E FFFD FFFD 415F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4160 FFFD FFFD FFFD - 4161 4162 4163 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4164 FFFD FFFD - 4165 FFFD FFFD FFFD FFFD FFFD 4166 4167 - FFFD FFFD FFFD FFFD 4168 FFFD 4169 FFFD - FFFD FFFD 416A FFFD 416B FFFD 416C FFFD - FFFD FFFD FFFD FFFD FFFD 416D -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 65F0 - srcEnd = 66EE - mappingOffset = 1503 - Mapping = - 416E FFFD 416F FFFD 4170 4171 FFFD FFFD - FFFD 4172 FFFD FFFD FFFD FFFD 4173 4174 - 4175 FFFD FFFD FFFD 4176 FFFD FFFD FFFD - 4177 4178 FFFD FFFD FFFD 4179 FFFD FFFD - FFFD 417A 417B FFFD FFFD 417C 417D FFFD - FFFD FFFD FFFD FFFD FFFD 417E 4221 FFFD - FFFD 4222 4223 4224 4225 FFFD 4226 FFFD - FFFD 4227 4228 4229 422A FFFD 422B FFFD - 422C 422D FFFD 422E FFFD FFFD FFFD 4230 - FFFD 422F FFFD FFFD FFFD FFFD FFFD FFFD - 4231 FFFD FFFD FFFD FFFD 4232 4233 FFFD - FFFD FFFD 4234 FFFD 4235 FFFD 4237 FFFD - FFFD 4236 FFFD FFFD FFFD FFFD FFFD 4238 - 4239 423A FFFD 423B 423C FFFD FFFD FFFD - 423D 423E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4240 4241 4242 FFFD FFFD FFFD - FFFD FFFD FFFD 4244 FFFD 4245 FFFD 4247 - 4248 4249 FFFD 424A 424C FFFD 4243 4246 - 424B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 424D 424E 424F FFFD FFFD - 4250 FFFD 4251 FFFD FFFD FFFD FFFD FFFD - FFFD 4252 4253 4254 4255 FFFD FFFD 4256 - 4257 FFFD FFFD FFFD 4258 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4259 FFFD FFFD - FFFD 425A 425B FFFD FFFD 425C FFFD FFFD - FFFD FFFD FFFD 425D FFFD FFFD FFFD 425E - 425F FFFD 4260 4261 FFFD FFFD FFFD FFFD - 4262 FFFD FFFD FFFD 4263 FFFD 4264 4265 - FFFD FFFD FFFD FFFD 4266 FFFD FFFD FFFD - FFFD FFFD FFFD 4267 FFFD FFFD FFFD 4268 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4269 FFFD FFFD 426A 426B FFFD 426C -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 66FA - srcEnd = 6722 - mappingOffset = 1602 - Mapping = - 426D 423F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 426E FFFD 426F FFFD FFFD - FFFD FFFD FFFD FFFD 4270 FFFD FFFD FFFD - FFFD 4271 FFFD FFFD FFFD FFFD FFFD 4272 - FFFD FFFD 4273 FFFD FFFD FFFD 4274 FFFD - 4275 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 6733 - srcEnd = 679B - mappingOffset = 162B - Mapping = - 4276 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4277 FFFD FFFD FFFD FFFD - FFFD FFFD 4278 FFFD 4279 427A FFFD FFFD - FFFD 427B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 427C 427D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 427E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4321 FFFD FFFD FFFD FFFD - FFFD 4322 FFFD 4323 FFFD FFFD FFFD FFFD - FFFD 4324 FFFD 4325 FFFD FFFD FFFD FFFD - 4326 FFFD FFFD FFFD FFFD FFFD 4327 FFFD - FFFD 4328 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4329 432A FFFD 432B FFFD - 432C FFFD FFFD 432D FFFD 432E 432F FFFD - 4330 -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 67B0 - srcEnd = 67F9 - mappingOffset = 1694 - Mapping = - 4331 4332 4333 FFFD FFFD 4334 FFFD FFFD - FFFD FFFD FFFD 4335 4336 4337 FFFD FFFD - 4339 FFFD 433A 433B FFFD 433C FFFD FFFD - 433D 433E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 433F FFFD FFFD FFFD FFFD 4340 - FFFD 4341 FFFD FFFD 4342 FFFD FFFD FFFD - FFFD 4343 FFFD FFFD FFFD FFFD 4344 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4345 FFFD 4346 FFFD FFFD FFFD 4347 4348 - FFFD 4338 -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 6814 - srcEnd = 685B - mappingOffset = 16DE - Mapping = - 434A FFFD FFFD FFFD FFFD 434B FFFD FFFD - FFFD 434C FFFD 434D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 434F 434E FFFD FFFD FFFD - 4350 4351 FFFD 4352 4353 4354 FFFD 4355 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4356 - FFFD FFFD FFFD 4357 FFFD FFFD FFFD FFFD - 4358 4359 FFFD FFFD FFFD FFFD 435A FFFD - 435B FFFD FFFD FFFD FFFD FFFD 4349 FFFD - FFFD 435C FFFD 435D 435E FFFD FFFD 435F -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 686B - srcEnd = 6888 - mappingOffset = 1726 - Mapping = - 4360 FFFD FFFD 4361 4362 4363 4364 4365 - FFFD FFFD 4366 FFFD FFFD FFFD 4367 4368 - 4369 436A FFFD FFFD FFFD FFFD FFFD 436B - FFFD 436C FFFD 436D FFFD 436E -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 6896 - srcEnd = 6917 - mappingOffset = 1744 - Mapping = - 436F FFFD 4370 FFFD 4371 FFFD 4372 FFFD - FFFD FFFD FFFD 4373 FFFD 4374 FFFD 4375 - FFFD FFFD FFFD 4376 4377 FFFD FFFD FFFD - 4378 FFFD FFFD FFFD 4379 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 437A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 437B - FFFD FFFD 437C FFFD FFFD FFFD 437D FFFD - FFFD 437E 4421 4422 FFFD 4423 FFFD FFFD - 4424 FFFD FFFD 4425 FFFD FFFD 4426 4427 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4428 - FFFD FFFD 4429 FFFD 442A 442B 442C 442D - FFFD FFFD 442E 442F FFFD FFFD FFFD 4430 - 4431 FFFD FFFD FFFD FFFD 4432 4433 4434 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4435 FFFD FFFD 4436 4437 FFFD FFFD FFFD - FFFD FFFD 4438 4439 FFFD 443A FFFD FFFD - 443B 443C -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 6931 - srcEnd = 6980 - mappingOffset = 17C6 - Mapping = - 443D FFFD 443E FFFD 443F FFFD FFFD 4440 - FFFD FFFD 4441 FFFD FFFD FFFD FFFD FFFD - FFFD 4442 FFFD FFFD 4443 FFFD FFFD FFFD - 4444 FFFD FFFD FFFD FFFD 4445 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4446 FFFD - FFFD FFFD 4447 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4448 4449 444A 444B FFFD 444C - 444D FFFD FFFD 444E FFFD FFFD FFFD 444F - 4450 4451 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4452 4453 FFFD FFFD FFFD 4454 4455 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 698D - srcEnd = 6A03 - mappingOffset = 1816 - Mapping = - 4456 FFFD FFFD FFFD FFFD 4457 FFFD FFFD - FFFD 4458 FFFD 4459 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 445A FFFD FFFD FFFD - 445B 445C FFFD 445D FFFD FFFD 445E FFFD - 445F FFFD 4460 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4461 4462 FFFD 4463 FFFD 4464 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4465 FFFD FFFD 4466 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4467 FFFD FFFD FFFD - FFFD 4468 4469 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 446A FFFD FFFD - 446B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 446C 446D FFFD 446E FFFD 446F FFFD - 4470 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4471 FFFD 4472 4473 FFFD 4474 -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 6A0F - srcEnd = 6B85 - mappingOffset = 188D - Mapping = - 4475 FFFD 4476 FFFD FFFD FFFD 4477 FFFD - FFFD FFFD FFFD 4478 FFFD FFFD 4479 FFFD - FFFD 447A FFFD FFFD FFFD 447B FFFD FFFD - FFFD 447C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 447D FFFD 447E FFFD 4521 FFFD FFFD - 4522 FFFD FFFD FFFD 4523 FFFD FFFD 4524 - 4525 FFFD FFFD FFFD FFFD FFFD 4526 4527 - FFFD FFFD 4528 4529 FFFD FFFD FFFD 452A - FFFD 452B 452C 452D FFFD FFFD 452E 452F - FFFD FFFD FFFD FFFD 4530 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4531 FFFD FFFD - 4532 FFFD FFFD 4533 FFFD FFFD FFFD FFFD - FFFD FFFD 4534 FFFD 4535 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4536 - FFFD FFFD 4537 FFFD 4538 FFFD FFFD 4539 - 453A FFFD 453B FFFD 453C FFFD FFFD FFFD - FFFD FFFD 453D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 453E FFFD 453F 4540 - 4541 FFFD FFFD FFFD FFFD FFFD 4542 FFFD - FFFD FFFD FFFD FFFD 4543 FFFD FFFD FFFD - 4544 4545 4546 FFFD FFFD 4547 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4548 4549 - 454A FFFD FFFD FFFD FFFD FFFD FFFD 454B - FFFD 454D 454C FFFD FFFD 454E FFFD FFFD - FFFD 454F FFFD FFFD FFFD 4550 4551 4552 - FFFD FFFD FFFD FFFD FFFD 4553 4554 FFFD - FFFD FFFD FFFD FFFD FFFD 4555 FFFD FFFD - 4556 FFFD FFFD FFFD FFFD 4557 FFFD FFFD - FFFD 4558 4559 455A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 455B 455C FFFD - FFFD FFFD FFFD 455D 455E FFFD FFFD 455F - 4560 FFFD 4561 FFFD FFFD FFFD FFFD FFFD - 4562 4563 4564 FFFD FFFD FFFD FFFD FFFD - 4565 FFFD FFFD FFFD 4566 FFFD FFFD 4567 - FFFD FFFD FFFD FFFD FFFD 4568 FFFD FFFD - FFFD 4569 FFFD FFFD 456A 456B FFFD FFFD - 456C FFFD FFFD FFFD FFFD FFFD 456D 456E - FFFD FFFD FFFD FFFD 456F FFFD FFFD FFFD - 4570 FFFD FFFD FFFD FFFD FFFD FFFD 4571 - FFFD FFFD FFFD 4572 FFFD FFFD 4573 FFFD - FFFD FFFD FFFD 4574 FFFD FFFD FFFD 4575 - FFFD 4576 FFFD FFFD FFFD FFFD 4577 FFFD - FFFD 4578 FFFD FFFD FFFD FFFD FFFD FFFD - 4579 FFFD FFFD FFFD 457A FFFD FFFD 457B - FFFD 457C FFFD FFFD FFFD FFFD 457D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 457E 4621 - FFFD FFFD FFFD 4622 FFFD FFFD 4623 -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 6B97 - srcEnd = 6C9F - mappingOffset = 1A04 - Mapping = - 4624 FFFD FFFD FFFD 4625 FFFD FFFD FFFD - 4626 4627 FFFD 4628 4629 FFFD FFFD FFFD - FFFD 462A 462B FFFD FFFD 462C 462D 462E - FFFD 462F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4630 4631 FFFD FFFD FFFD 4632 4633 - FFFD FFFD FFFD FFFD 4634 4635 FFFD FFFD - FFFD FFFD 4636 FFFD FFFD 4637 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4638 - FFFD FFFD FFFD 4639 FFFD FFFD FFFD FFFD - FFFD FFFD 463A FFFD 463B FFFD FFFD 463C - 463D FFFD FFFD FFFD FFFD FFFD FFFD 463E - FFFD FFFD 463F FFFD FFFD FFFD FFFD FFFD - 4640 FFFD 4641 FFFD FFFD FFFD FFFD FFFD - 4642 FFFD FFFD 4643 FFFD 4644 4645 FFFD - FFFD FFFD 4646 FFFD FFFD FFFD 4647 4648 - FFFD 4649 FFFD 464A FFFD FFFD FFFD FFFD - FFFD FFFD 464B FFFD FFFD FFFD FFFD FFFD - 464C FFFD FFFD FFFD FFFD FFFD FFFD 464D - 464E 464F FFFD FFFD FFFD 4650 FFFD 4651 - FFFD FFFD FFFD FFFD 4652 FFFD 4653 4654 - FFFD FFFD FFFD 4655 4656 FFFD FFFD FFFD - 4657 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4658 4659 FFFD 465A FFFD - 465B FFFD FFFD 465C FFFD 465D FFFD FFFD - FFFD FFFD 465E FFFD 465F 4660 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4736 FFFD FFFD FFFD 4661 FFFD 4662 FFFD - 4663 FFFD FFFD FFFD FFFD 4664 FFFD 4665 - FFFD 4666 4667 FFFD 4668 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4669 466A - 466B FFFD 466C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 466D 466E FFFD - 466F 4670 FFFD FFFD FFFD 4671 FFFD FFFD - 4672 -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 6CB0 - srcEnd = 6CB4 - mappingOffset = 1B0D - Mapping = - 4673 FFFD 4674 FFFD 4675 -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 6CC2 - srcEnd = 6CF4 - mappingOffset = 1B12 - Mapping = - 4676 FFFD FFFD FFFD 4677 FFFD FFFD FFFD - FFFD FFFD FFFD 4678 FFFD 4679 467A 467B - 467C FFFD 467D FFFD 467E FFFD FFFD FFFD - 4721 FFFD 4722 FFFD FFFD FFFD 4723 FFFD - FFFD FFFD FFFD FFFD FFFD 4724 FFFD 4725 - FFFD 4726 4727 FFFD 4728 FFFD FFFD FFFD - 4729 FFFD 472A -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = 6D04 - srcEnd = 6D1A - mappingOffset = 1B45 - Mapping = - 472B FFFD FFFD 472C FFFD FFFD 472D FFFD - FFFD FFFD 472E 472F FFFD 4730 FFFD 4731 - FFFD FFFD FFFD FFFD FFFD FFFD 4732 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 6D26 - srcEnd = 6D3F - mappingOffset = 1B5C - Mapping = - 4733 4734 4735 FFFD FFFD FFFD FFFD FFFD - 4737 4738 FFFD 4739 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 473A FFFD FFFD 473B FFFD - FFFD 473C -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = 6D57 - srcEnd = 6D70 - mappingOffset = 1B76 - Mapping = - 473D FFFD FFFD FFFD FFFD FFFD FFFD 473E - 473F FFFD 4740 FFFD FFFD FFFD 4741 FFFD - 4742 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4743 4744 -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 6D7C - srcEnd = 6D98 - mappingOffset = 1B90 - Mapping = - 4745 FFFD FFFD FFFD FFFD FFFD 4746 FFFD - FFFD FFFD FFFD 4747 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4748 4749 FFFD - 474A FFFD 474B 474C 474D -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = 6DAA - srcEnd = 6E04 - mappingOffset = 1BAD - Mapping = - 474E FFFD 474F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4750 FFFD FFFD 4751 FFFD 4752 - FFFD FFFD FFFD 4753 FFFD 4754 FFFD FFFD - FFFD FFFD 4755 FFFD FFFD FFFD 4756 FFFD - 4757 FFFD FFFD FFFD 4758 4759 FFFD FFFD - FFFD FFFD FFFD FFFD 475A FFFD FFFD FFFD - FFFD 475B FFFD 475C FFFD 475D 475E FFFD - 475F FFFD FFFD 4760 FFFD FFFD FFFD 4761 - FFFD FFFD FFFD FFFD FFFD 4762 4763 FFFD - FFFD FFFD 4764 FFFD 4765 FFFD FFFD FFFD - FFFD FFFD 4766 FFFD FFFD FFFD 4767 FFFD - FFFD FFFD 4768 -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = 6E1E - srcEnd = 6E7D - mappingOffset = 1C08 - Mapping = - 4769 FFFD FFFD FFFD 476A FFFD FFFD FFFD - FFFD 476B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 476C FFFD FFFD FFFD - 476D FFFD FFFD 476E FFFD 476F 4770 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4771 4772 - FFFD FFFD 4773 4774 FFFD 4775 FFFD FFFD - FFFD 4776 FFFD 4777 4778 4779 477A FFFD - FFFD 477B FFFD FFFD FFFD FFFD 477C 477D - 477E FFFD FFFD FFFD 4821 4822 FFFD FFFD - FFFD FFFD 4823 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4824 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4825 FFFD 4826 -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = 6E8D - srcEnd = 6ECF - mappingOffset = 1C68 - Mapping = - 4827 FFFD FFFD FFFD FFFD FFFD 4828 FFFD - FFFD FFFD FFFD FFFD 4829 FFFD FFFD FFFD - FFFD FFFD FFFD 482A FFFD FFFD FFFD FFFD - FFFD FFFD 482B FFFD FFFD FFFD FFFD FFFD - 482C 482D FFFD FFFD 482E FFFD 482F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4830 FFFD - FFFD FFFD 4831 4832 4833 FFFD 4834 FFFD - FFFD FFFD 4835 4836 FFFD 4837 FFFD FFFD - 4838 4839 483A -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 6EEB - srcEnd = 6F3C - mappingOffset = 1CAB - Mapping = - 483B FFFD 483C 483D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 483E FFFD - 483F FFFD 4840 FFFD FFFD FFFD FFFD FFFD - FFFD 4841 FFFD FFFD FFFD 4842 FFFD 4843 - FFFD 4844 4845 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4846 FFFD 4847 FFFD 4848 - 4849 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 484A FFFD FFFD 484B 484C - FFFD FFFD 4853 FFFD 484D 484E FFFD FFFD - 484F FFFD FFFD 4850 FFFD FFFD FFFD FFFD - 4851 4852 -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 6F4F - srcEnd = 6F6C - mappingOffset = 1CFD - Mapping = - 4854 FFFD 4855 4856 4857 FFFD FFFD FFFD - 4858 FFFD 4859 485A FFFD FFFD 485B 485C - FFFD FFFD 485D 485E FFFD FFFD FFFD FFFD - FFFD 485F FFFD FFFD FFFD 4860 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 6F7D - srcEnd = 6FCA - mappingOffset = 1D1B - Mapping = - 4861 4862 FFFD FFFD FFFD FFFD 4863 FFFD - FFFD FFFD 4864 4865 FFFD FFFD 4866 4867 - 4868 FFFD FFFD 4869 FFFD 486A 486B 486C - FFFD 486D FFFD FFFD FFFD 486E FFFD FFFD - FFFD FFFD 486F 4870 FFFD FFFD FFFD FFFD - 4871 4872 4873 4874 FFFD FFFD FFFD FFFD - FFFD 4875 4876 4877 FFFD FFFD FFFD FFFD - 4878 4879 FFFD FFFD FFFD FFFD FFFD 487A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 487B FFFD 487C 487D FFFD 487E -End of Item 0072 - -Begin of Item 0073 - Format 1 - srcBegin = 6FDA - srcEnd = 7023 - mappingOffset = 1D69 - Mapping = - 4921 FFFD FFFD FFFD 4922 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4923 4924 - FFFD FFFD FFFD FFFD FFFD FFFD 4925 FFFD - FFFD FFFD FFFD 4926 FFFD FFFD FFFD 4927 - FFFD FFFD 4928 4929 FFFD FFFD 492A FFFD - FFFD FFFD FFFD 492B 492C 492D FFFD FFFD - FFFD FFFD FFFD 492E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 492F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4930 FFFD - FFFD 4931 -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = 702F - srcEnd = 7086 - mappingOffset = 1DB3 - Mapping = - 4932 FFFD FFFD FFFD FFFD 4933 FFFD FFFD - 4934 FFFD 4935 FFFD FFFD 4936 FFFD FFFD - FFFD FFFD FFFD FFFD 4937 4938 FFFD FFFD - FFFD 4939 493A 493B 493C FFFD FFFD 4941 - FFFD FFFD FFFD FFFD FFFD 493D 493E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 493F 4940 - FFFD FFFD FFFD FFFD FFFD 4942 4943 FFFD - FFFD FFFD FFFD FFFD FFFD 4944 FFFD 4945 - FFFD FFFD FFFD FFFD FFFD FFFD 4946 4947 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4948 - FFFD FFFD 4949 FFFD FFFD FFFD 494A 494B -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 7094 - srcEnd = 70B7 - mappingOffset = 1E0B - Mapping = - 494C 494D 494E 494F 4950 FFFD FFFD 4951 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4952 FFFD FFFD FFFD FFFD FFFD FFFD 4953 - FFFD FFFD FFFD FFFD 4954 4955 FFFD FFFD - 4956 FFFD FFFD 4957 -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = 70CA - srcEnd = 70E4 - mappingOffset = 1E2F - Mapping = - 4958 FFFD FFFD FFFD FFFD FFFD FFFD 4959 - FFFD 495A 495B 495C 495D FFFD 495E FFFD - FFFD FFFD 495F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4960 -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = 70FA - srcEnd = 710F - mappingOffset = 1E4A - Mapping = - 4961 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4962 4963 4964 4965 4966 FFFD FFFD - FFFD 4967 4968 FFFD FFFD 4969 -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 711E - srcEnd = 7168 - mappingOffset = 1E60 - Mapping = - 496A FFFD 496B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 496C FFFD 496D - FFFD 496E 496F 4970 FFFD FFFD FFFD FFFD - FFFD FFFD 4971 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4972 FFFD FFFD FFFD 4973 - 4974 4975 FFFD FFFD 4976 4977 FFFD FFFD - FFFD FFFD 4978 FFFD 4979 FFFD FFFD FFFD - FFFD 497A FFFD FFFD 497B FFFD 497C FFFD - 497D FFFD 497E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4A21 -End of Item 0078 - -Begin of Item 0079 - Format 1 - srcBegin = 7179 - srcEnd = 71A2 - mappingOffset = 1EAB - Mapping = - 4A22 FFFD FFFD FFFD FFFD FFFD FFFD 4A23 - FFFD FFFD FFFD FFFD 4A24 FFFD 4A25 FFFD - FFFD FFFD FFFD 4A26 FFFD FFFD FFFD FFFD - FFFD 4A27 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4A28 4A29 FFFD FFFD FFFD FFFD 4A2A - FFFD 4A2B -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = 71AF - srcEnd = 71DC - mappingOffset = 1ED5 - Mapping = - 4A2C 4A2D FFFD 4A2E 4A2F FFFD FFFD FFFD - FFFD FFFD FFFD 4A30 FFFD FFFD FFFD FFFD - 4A31 4A32 4A33 FFFD FFFD 4A34 FFFD FFFD - FFFD FFFD FFFD FFFD 4A35 4A36 FFFD FFFD - FFFD FFFD FFFD FFFD 4A37 FFFD FFFD 4A38 - FFFD FFFD 4A39 4A3A FFFD 4A3B -End of Item 007A - -Begin of Item 007B - Format 1 - srcBegin = 71F8 - srcEnd = 729B - mappingOffset = 1F03 - Mapping = - 4A3C FFFD FFFD FFFD FFFD FFFD 4A3D FFFD - 4A3E FFFD FFFD FFFD FFFD FFFD FFFD 4A3F - 4A40 4A41 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4A42 FFFD FFFD FFFD 4A43 - FFFD FFFD 4A44 FFFD FFFD 4A45 FFFD 4A46 - FFFD FFFD FFFD FFFD 4A47 FFFD FFFD FFFD - FFFD FFFD FFFD 4A48 FFFD FFFD FFFD 4A49 - FFFD FFFD FFFD FFFD 4A4A FFFD FFFD FFFD - 4A4B 4A4C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4A4D 4A4E 4A4F FFFD 4A50 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4A51 4A52 - 4A53 FFFD FFFD 4A54 FFFD 4A55 4A56 FFFD - FFFD FFFD 4A57 FFFD 4A58 FFFD 4A59 FFFD - 4A5A FFFD FFFD 4A5B FFFD FFFD FFFD FFFD - 4A5C FFFD FFFD 4A5D FFFD FFFD 4A5E 4A5F - FFFD 4A60 FFFD FFFD FFFD FFFD FFFD 4A61 - 4A62 FFFD FFFD 4A63 4A64 FFFD FFFD 4A65 - FFFD FFFD FFFD FFFD 4A66 FFFD FFFD FFFD - FFFD 4A67 FFFD FFFD FFFD 4A68 4A69 FFFD - FFFD FFFD FFFD 4A6A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4A6B -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = 72A8 - srcEnd = 72E5 - mappingOffset = 1FA7 - Mapping = - 4A6C FFFD FFFD FFFD FFFD 4A6D 4A6E FFFD - FFFD 4A6F FFFD FFFD 4A70 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4A71 FFFD - FFFD 4A72 FFFD FFFD FFFD FFFD FFFD 4A73 - FFFD 4A74 FFFD FFFD 4A75 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4A76 4A77 FFFD - 4A78 FFFD FFFD FFFD FFFD FFFD FFFD 4A79 - FFFD FFFD FFFD FFFD FFFD 4A7A -End of Item 007C - -Begin of Item 007D - Format 1 - srcBegin = 72F3 - srcEnd = 7426 - mappingOffset = 1FE5 - Mapping = - 4A7B 4A7C FFFD FFFD FFFD FFFD FFFD 4A7D - 4A7E FFFD FFFD 4B21 FFFD FFFD FFFD 4B22 - FFFD 4B23 4B24 FFFD 4B25 FFFD FFFD FFFD - 4B26 FFFD 4B27 FFFD FFFD FFFD FFFD 4B28 - 4B29 FFFD FFFD FFFD FFFD 4B2A 4B2B FFFD - FFFD FFFD FFFD 4B2C FFFD FFFD FFFD 4B2D - FFFD 4B2E FFFD FFFD 4B2F 4B30 FFFD FFFD - FFFD 4B31 FFFD FFFD FFFD FFFD 4B32 4B33 - FFFD FFFD 4B34 FFFD FFFD FFFD FFFD 4B35 - 4B36 FFFD 4B37 FFFD FFFD FFFD FFFD FFFD - 4B38 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4B39 FFFD FFFD 4B3A FFFD 4B3B - FFFD FFFD FFFD 4B3C FFFD 4B3D FFFD FFFD - FFFD FFFD 4B3E 4B3F 4B40 4B41 FFFD FFFD - FFFD FFFD FFFD 4B42 4B43 FFFD 4B44 FFFD - 4B45 4B46 FFFD 4B47 4B48 FFFD 4B49 FFFD - FFFD FFFD FFFD FFFD 4B4A FFFD 4B4B FFFD - FFFD 4B4C FFFD FFFD FFFD 4B4D 4B4E FFFD - 4B4F FFFD 4B50 4B51 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4B52 FFFD 4B53 FFFD FFFD - 4B54 FFFD 4B55 FFFD 4B56 4B57 FFFD FFFD - FFFD 4B58 FFFD 4B59 4B5A 4B5B FFFD 4B5C - FFFD FFFD 4B5D 4B5E FFFD FFFD FFFD 4B5F - 4B60 FFFD 4B61 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4B62 FFFD 4B63 FFFD 4B64 FFFD - FFFD 4B65 4B66 FFFD 4B67 FFFD FFFD FFFD - FFFD FFFD 4B68 4B69 FFFD FFFD 4B6A FFFD - 4B6B 4B6C FFFD FFFD 4B6D FFFD FFFD 4B6E - 4B6F FFFD FFFD 4B70 FFFD FFFD 4B71 FFFD - FFFD FFFD 4B72 FFFD FFFD FFFD 4B73 FFFD - 4B74 FFFD FFFD 4B75 4B76 FFFD 4B77 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4B78 4B79 FFFD 4B7A FFFD 4B7B 4B7C - 4B7D FFFD 4B7E FFFD 4C21 4C22 4C23 FFFD - FFFD 4C24 FFFD FFFD 4C25 FFFD FFFD 4C26 - FFFD FFFD FFFD FFFD FFFD FFFD 4C27 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4C28 - 4C29 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4C2A FFFD 4C2B -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = 7439 - srcEnd = 7472 - mappingOffset = 2119 - Mapping = - 4C36 FFFD FFFD FFFD FFFD FFFD FFFD 4C37 - FFFD FFFD 4C38 4C39 FFFD 4C3A 4C3B FFFD - FFFD FFFD 4C3C FFFD 4C3D FFFD FFFD FFFD - 4C3E 4C3F FFFD FFFD FFFD FFFD 4C40 FFFD - FFFD FFFD FFFD FFFD 4C41 FFFD FFFD FFFD - FFFD 4C42 FFFD FFFD FFFD 4C43 4C44 4C45 - FFFD FFFD 4C46 FFFD 4C47 4C48 FFFD FFFD - 4C49 4C4A -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = 7480 - srcEnd = 7506 - mappingOffset = 2153 - Mapping = - 4C4B 4C4C FFFD FFFD FFFD 4C4D 4C4E 4C4F - FFFD 4C50 FFFD FFFD FFFD FFFD FFFD 4C51 - 4C52 4C53 4C54 FFFD FFFD FFFD FFFD FFFD - 4C55 4C56 4C57 FFFD 4C58 FFFD FFFD 4C59 - 4C5A 4C5B FFFD 4C5C FFFD FFFD 4C5D FFFD - 4C5E 4C5F 4C60 4C61 FFFD FFFD 4C62 4C63 - FFFD 4C64 4C65 FFFD FFFD 4C66 FFFD FFFD - FFFD 4C67 FFFD 4C68 FFFD FFFD FFFD 4C69 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4C6A 4C6B FFFD FFFD 4C6C FFFD FFFD FFFD - 4C6D FFFD FFFD 4C6E FFFD FFFD FFFD FFFD - 4C6F FFFD 4C70 4C71 FFFD FFFD 4C72 4C73 - FFFD FFFD FFFD FFFD 4C74 FFFD FFFD FFFD - 4C75 FFFD 4C76 4C77 FFFD FFFD FFFD 4C78 - FFFD FFFD FFFD FFFD 4C79 FFFD FFFD FFFD - FFFD FFFD 4C7A 4C7B 4C7C FFFD FFFD 4C7D - FFFD FFFD FFFD FFFD FFFD FFFD 4C7E -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = 7512 - srcEnd = 7561 - mappingOffset = 21DA - Mapping = - 4D21 FFFD FFFD FFFD 4D22 4D23 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4D24 4D25 - FFFD FFFD 4D26 FFFD FFFD 4D27 FFFD 4D28 - 4D29 FFFD FFFD FFFD FFFD 4D2A FFFD FFFD - FFFD FFFD FFFD FFFD 4D2B FFFD FFFD 4D2C - FFFD FFFD FFFD 4D2D 4D2E 4D2F 4D30 FFFD - FFFD 4D31 FFFD FFFD FFFD 4D32 4D33 FFFD - FFFD FFFD FFFD FFFD 4D34 FFFD 4D35 FFFD - 4D36 FFFD FFFD FFFD FFFD 4D37 FFFD FFFD - FFFD FFFD FFFD FFFD 4D38 4D39 FFFD 4D3A -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = 756F - srcEnd = 7571 - mappingOffset = 222A - Mapping = - 4D3B FFFD 4D3C -End of Item 0081 - -Begin of Item 0082 - Format 1 - srcBegin = 7581 - srcEnd = 75A4 - mappingOffset = 222D - Mapping = - 4D43 FFFD FFFD FFFD 4D44 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4D45 - FFFD 4D46 4D47 FFFD 4D48 FFFD FFFD FFFD - 4D49 FFFD FFFD 4D4A FFFD FFFD FFFD FFFD - FFFD 4D4B FFFD 4D4C -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = 75B4 - srcEnd = 7674 - mappingOffset = 2251 - Mapping = - 4D4D FFFD FFFD FFFD FFFD FFFD 4D4E FFFD - FFFD FFFD FFFD 4D4F 4D50 4D51 FFFD FFFD - 4D52 FFFD 4D53 FFFD FFFD FFFD FFFD FFFD - 4D54 FFFD 4D55 4D56 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4D57 FFFD FFFD FFFD FFFD - 4D58 FFFD FFFD 4D59 4D5A 4D5B FFFD FFFD - 4D5C FFFD FFFD 4D5D FFFD FFFD FFFD FFFD - 4D5E FFFD 4D5F 4D60 FFFD 4D61 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4D62 FFFD FFFD - FFFD FFFD FFFD FFFD 4D63 FFFD 4D64 4D65 - 4D66 FFFD FFFD 4D67 4D68 FFFD 4D69 FFFD - 4D6A FFFD FFFD 4D6B FFFD FFFD 4D6C 4D6D - FFFD 4D6E 4D6F FFFD FFFD 4D70 FFFD 4D71 - 4D72 4D73 4D74 FFFD FFFD FFFD FFFD 4D75 - FFFD 4D76 4D77 FFFD FFFD 4D78 FFFD FFFD - FFFD 4D79 FFFD FFFD FFFD FFFD 4D7A 4D7B - FFFD 4D7C FFFD FFFD 4D7D 4D7E 4E21 FFFD - 4E22 FFFD FFFD FFFD 4E24 4E25 FFFD 4E26 - 4E27 4E28 FFFD FFFD FFFD 4E29 4E23 4E2A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4E2B FFFD FFFD FFFD 4E2C FFFD FFFD - FFFD FFFD FFFD 4E2D FFFD FFFD FFFD FFFD - 4E2E 4E2F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4E30 4E31 4E32 FFFD 4E33 FFFD FFFD - 4E34 -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = 7681 - srcEnd = 76AD - mappingOffset = 2312 - Mapping = - 4E35 FFFD FFFD FFFD 4E36 FFFD FFFD FFFD - FFFD FFFD FFFD 4E37 4E38 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4E39 FFFD FFFD FFFD - FFFD FFFD 4E3A 4E3B 4E3C FFFD 4E3D 4E3E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4E46 FFFD FFFD 4E47 -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = 76BD - srcEnd = 7811 - mappingOffset = 233F - Mapping = - 4E48 FFFD FFFD FFFD 4E49 FFFD FFFD FFFD - 4E4A FFFD FFFD FFFD 4E4B FFFD 4E4C 4E4D - FFFD 4E4E FFFD FFFD FFFD FFFD FFFD 4E4F - FFFD FFFD FFFD FFFD 4E50 FFFD FFFD FFFD - FFFD FFFD FFFD 4E51 FFFD FFFD FFFD FFFD - FFFD 4E52 FFFD 4E53 FFFD FFFD FFFD 4E54 - FFFD FFFD FFFD 4E55 4E56 FFFD FFFD FFFD - FFFD 4E57 FFFD FFFD 4E58 FFFD FFFD 4E59 - FFFD FFFD FFFD 4E5A FFFD FFFD FFFD FFFD - FFFD 4E5B FFFD FFFD FFFD 4E5C FFFD FFFD - FFFD 4E5D FFFD FFFD FFFD 4E5E FFFD 4E5F - 4E60 FFFD 4E61 FFFD 4E62 4E63 FFFD 4E64 - FFFD FFFD FFFD FFFD FFFD 4E65 FFFD FFFD - FFFD FFFD FFFD 4E66 FFFD FFFD FFFD FFFD - 4E67 4E68 4E69 FFFD FFFD FFFD FFFD 4E6A - 4E6B 4E6C FFFD FFFD 4E6D FFFD FFFD FFFD - 4E6E 4E6F FFFD FFFD FFFD 4E70 FFFD FFFD - 4E71 4E72 FFFD FFFD FFFD 4E73 FFFD FFFD - 4E74 4E75 4E76 FFFD FFFD 4E77 FFFD FFFD - FFFD 4E78 4E79 FFFD FFFD FFFD FFFD 4E7A - FFFD 4E7B 4E7C 4E7D FFFD 4E7E FFFD 4F21 - FFFD FFFD 4F22 FFFD FFFD 4F23 FFFD 4F24 - FFFD FFFD FFFD 4F25 FFFD 4F26 4F27 4F28 - FFFD FFFD FFFD FFFD FFFD 4F29 FFFD FFFD - 4F2A FFFD FFFD 4F2B FFFD FFFD FFFD 4F2C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4F2D - 4F2E FFFD FFFD FFFD FFFD FFFD FFFD 4F2F - 4F30 4F31 FFFD FFFD FFFD 4F32 FFFD FFFD - FFFD FFFD 4F33 FFFD FFFD 4F34 FFFD FFFD - FFFD FFFD 4F35 FFFD FFFD 4F36 FFFD FFFD - FFFD 4F37 4F38 FFFD 4F39 FFFD FFFD FFFD - 4F3A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4F3B FFFD FFFD FFFD FFFD 4F3C FFFD - FFFD FFFD FFFD FFFD 4F3D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4F3E 4F3F FFFD FFFD - 4F40 FFFD FFFD FFFD 4F41 FFFD FFFD FFFD - FFFD 4F42 4F43 4F44 FFFD FFFD FFFD 4F45 - FFFD 4F46 FFFD FFFD FFFD 4F47 FFFD 4F48 - FFFD FFFD FFFD 4F49 4F4A FFFD FFFD 4F4B - FFFD FFFD FFFD 4F4C FFFD FFFD 4F4D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4F4E 4F4F FFFD FFFD 4F50 FFFD FFFD FFFD - 4F51 4F52 FFFD FFFD 4F53 -End of Item 0085 - -Begin of Item 0086 - Format 1 - srcBegin = 781D - srcEnd = 7837 - mappingOffset = 2494 - Mapping = - 4F54 FFFD FFFD FFFD 4F55 4F56 4F57 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4F58 4F59 FFFD 4F5A FFFD FFFD FFFD FFFD - 4F5B FFFD 4F5C -End of Item 0086 - -Begin of Item 0087 - Format 1 - srcBegin = 7843 - srcEnd = 786E - mappingOffset = 24AF - Mapping = - 4F5D 4F5E FFFD FFFD 4F5F 4F60 FFFD FFFD - FFFD 4F61 FFFD 4F62 FFFD FFFD FFFD 4F63 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4F64 FFFD 4F65 FFFD 4F66 4F67 FFFD - 4F68 4F69 FFFD FFFD FFFD 4F6A FFFD 4F6B - FFFD FFFD FFFD 4F6C -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = 787A - srcEnd = 787E - mappingOffset = 24DB - Mapping = - 4F6D FFFD FFFD FFFD 4F6E -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = 788A - srcEnd = 797E - mappingOffset = 24E0 - Mapping = - 4F6F FFFD FFFD FFFD FFFD 4F70 FFFD FFFD - FFFD FFFD 4F71 FFFD FFFD FFFD 4F72 FFFD - FFFD FFFD FFFD 4F74 4F75 4F76 FFFD 4F73 - FFFD FFFD 4F77 FFFD FFFD FFFD 4F78 FFFD - FFFD FFFD 4F79 4F7A FFFD FFFD 4F7B 4F7C - 4F7D 4F7E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5021 FFFD 5022 FFFD 5023 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5024 5025 5026 - FFFD FFFD 5027 FFFD 5028 FFFD FFFD FFFD - 5029 502A FFFD 502B 502C FFFD FFFD FFFD - FFFD 502E FFFD FFFD FFFD 502F 5030 5031 - FFFD FFFD 502D FFFD 5032 FFFD FFFD FFFD - 5033 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5034 5035 FFFD FFFD 5037 5038 FFFD FFFD - 5039 503A FFFD FFFD FFFD 503B 5036 FFFD - FFFD FFFD FFFD FFFD 503C FFFD FFFD FFFD - FFFD FFFD 503D FFFD FFFD FFFD 503E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 503F FFFD 5040 FFFD 5041 5042 5043 FFFD - FFFD FFFD FFFD 5044 FFFD 5045 FFFD 5046 - FFFD FFFD FFFD 5047 FFFD FFFD FFFD 5048 - FFFD FFFD 5049 504A FFFD FFFD FFFD FFFD - FFFD 504B FFFD 504C FFFD 504D FFFD FFFD - FFFD FFFD 504E 504F 5050 FFFD FFFD FFFD - 5051 5052 FFFD FFFD FFFD 5053 FFFD 5054 - FFFD FFFD 5055 FFFD FFFD FFFD 5056 FFFD - FFFD 5057 5058 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5059 FFFD 505A - FFFD 505B FFFD FFFD FFFD FFFD FFFD FFFD - 505C FFFD FFFD FFFD FFFD FFFD FFFD 505D - FFFD 505E 505F FFFD 5060 -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = 798B - srcEnd = 7ADB - mappingOffset = 25D5 - Mapping = - 5061 5062 FFFD FFFD FFFD FFFD 5063 FFFD - 5064 5065 5066 5067 FFFD 5068 FFFD FFFD - 5069 506A FFFD FFFD FFFD FFFD 506B FFFD - FFFD FFFD FFFD FFFD FFFD 506C 506D FFFD - 506E FFFD FFFD FFFD 506F FFFD 5070 FFFD - FFFD 5071 FFFD FFFD FFFD 5072 FFFD FFFD - 5073 FFFD FFFD FFFD FFFD FFFD FFFD 5074 - FFFD 5075 FFFD FFFD 5076 5077 FFFD 5078 - FFFD FFFD FFFD FFFD 5079 FFFD FFFD FFFD - FFFD 507A FFFD 507B FFFD FFFD FFFD 507C - FFFD FFFD 507D 507E FFFD 5121 FFFD 5122 - FFFD FFFD 5123 FFFD FFFD FFFD FFFD 5124 - 5125 FFFD 5126 FFFD FFFD FFFD 5127 FFFD - FFFD FFFD FFFD FFFD FFFD 5128 FFFD FFFD - FFFD 5129 FFFD FFFD FFFD FFFD FFFD 512A - 512B FFFD FFFD FFFD 512C FFFD 512D 512E - FFFD 512F FFFD FFFD FFFD FFFD 5130 FFFD - FFFD FFFD 5131 FFFD FFFD FFFD FFFD FFFD - 5132 FFFD FFFD 5133 FFFD FFFD 5134 FFFD - FFFD FFFD FFFD FFFD 5135 FFFD FFFD FFFD - 5136 FFFD 5137 FFFD 5138 5139 FFFD FFFD - FFFD 513A 513B FFFD FFFD 513C 513D 513E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 513F 5140 FFFD 5141 5142 FFFD FFFD - FFFD 5143 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5144 5145 FFFD FFFD 5146 FFFD - FFFD 5147 5148 FFFD 5149 514A FFFD FFFD - FFFD FFFD 514B FFFD 514C FFFD FFFD 514D - FFFD FFFD 514E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 514F FFFD FFFD 5150 FFFD FFFD - FFFD FFFD FFFD 5151 FFFD 5152 FFFD 5153 - FFFD FFFD 5154 5155 FFFD FFFD FFFD 5156 - 5157 FFFD FFFD FFFD FFFD 5158 5159 FFFD - FFFD 515A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 515B FFFD 515C FFFD FFFD - 515D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 515E FFFD FFFD FFFD FFFD FFFD FFFD - 515F FFFD 5160 FFFD FFFD FFFD 5161 FFFD - 5162 5163 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5164 FFFD FFFD 5165 FFFD - FFFD 5166 FFFD 5167 FFFD FFFD 5168 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5169 -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = 7AE8 - srcEnd = 7B07 - mappingOffset = 2726 - Mapping = - 516A 516B FFFD 516C 516D FFFD FFFD FFFD - FFFD 516E FFFD FFFD 516F FFFD FFFD FFFD - FFFD FFFD FFFD 5170 FFFD 5171 5172 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5173 -End of Item 008B - -Begin of Item 008C - Format 1 - srcBegin = 7B14 - srcEnd = 7B77 - mappingOffset = 2746 - Mapping = - 5174 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5175 FFFD FFFD FFFD 5176 - FFFD FFFD FFFD 5177 FFFD 5178 5179 517A - FFFD 517B 517C 517D 517E 5221 FFFD FFFD - 5222 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5223 FFFD 5224 5225 5226 FFFD FFFD - FFFD FFFD FFFD 5227 FFFD FFFD FFFD FFFD - FFFD FFFD 5228 FFFD FFFD FFFD FFFD FFFD - FFFD 5229 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 522A FFFD FFFD FFFD - 522B FFFD 522C FFFD FFFD 522D 522E FFFD - FFFD 522F FFFD 5230 FFFD FFFD 5231 5232 - FFFD FFFD FFFD 5233 -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = 7B84 - srcEnd = 7BDB - mappingOffset = 27AA - Mapping = - 5234 FFFD FFFD FFFD FFFD 5235 FFFD FFFD - FFFD FFFD 5236 FFFD 5237 5238 FFFD FFFD - FFFD FFFD 5239 FFFD FFFD FFFD FFFD 523A - FFFD FFFD 523B FFFD 523C FFFD FFFD FFFD - FFFD 523D FFFD FFFD FFFD FFFD FFFD FFFD - 523E FFFD FFFD 523F 5240 FFFD 5241 FFFD - FFFD 5242 5243 FFFD FFFD FFFD 5244 5245 - 5246 5247 FFFD FFFD FFFD FFFD 5248 FFFD - FFFD 5249 FFFD FFFD 524A FFFD 524B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 524C FFFD 524D 524E FFFD 524F 5250 5251 -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = 7BE8 - srcEnd = 7C3A - mappingOffset = 2802 - Mapping = - 5252 FFFD 5253 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5254 FFFD 5255 5256 FFFD FFFD - 5257 5258 5259 FFFD 525A FFFD 525B FFFD - FFFD 525C 525D 525E 525F FFFD 5260 FFFD - FFFD 5261 FFFD 5262 5263 FFFD 5264 5265 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5266 FFFD 5267 FFFD FFFD FFFD FFFD - 5268 FFFD FFFD FFFD FFFD 5269 526A FFFD - 526B FFFD FFFD FFFD 526C FFFD FFFD FFFD - FFFD 526D FFFD 526E 526F FFFD 5270 FFFD - FFFD 5271 5272 -End of Item 008E - -Begin of Item 008F - Format 1 - srcBegin = 7C46 - srcEnd = 7C55 - mappingOffset = 2855 - Mapping = - 5273 FFFD FFFD FFFD 5274 FFFD FFFD FFFD - FFFD FFFD FFFD 5276 5277 5278 FFFD 5275 -End of Item 008F - -Begin of Item 0090 - Format 1 - srcBegin = 7C61 - srcEnd = 7CF5 - mappingOffset = 2865 - Mapping = - 5321 FFFD 5322 FFFD FFFD FFFD 5323 FFFD - 5324 FFFD FFFD FFFD 5325 5326 FFFD 5327 - FFFD 5328 FFFD FFFD FFFD FFFD FFFD FFFD - 5329 FFFD FFFD 532A 532B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 532C 532D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 532E FFFD - FFFD FFFD FFFD 532F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5330 FFFD 5331 - FFFD FFFD FFFD FFFD FFFD 5332 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5333 - FFFD FFFD FFFD FFFD FFFD 5334 5335 FFFD - FFFD 5336 5337 5338 FFFD FFFD 5339 FFFD - FFFD FFFD FFFD 533A FFFD FFFD 533B 533C - 533D FFFD FFFD FFFD 533E FFFD 533F FFFD - FFFD FFFD 5340 5341 5342 FFFD 5343 FFFD - 5344 5345 FFFD FFFD 5346 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5347 FFFD FFFD - 5348 FFFD 5349 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 534A -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = 7D03 - srcEnd = 7E9E - mappingOffset = 28FA - Mapping = - 534B FFFD FFFD FFFD 534C 534D 534E FFFD - FFFD FFFD FFFD FFFD 534F FFFD 5350 5351 - 5352 FFFD FFFD 5353 FFFD FFFD FFFD FFFD - FFFD FFFD 5354 5355 FFFD FFFD FFFD FFFD - 5356 FFFD FFFD 5357 FFFD FFFD FFFD 5358 - FFFD FFFD 5359 FFFD FFFD FFFD 535A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 535B 535C 535D FFFD 535E 535F FFFD - FFFD FFFD FFFD FFFD 5360 5361 FFFD FFFD - FFFD FFFD 5362 FFFD FFFD FFFD 5363 FFFD - 5364 FFFD FFFD FFFD 5365 FFFD 5366 5367 - FFFD 5368 5369 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 536A FFFD 536B FFFD FFFD 536C - FFFD FFFD FFFD FFFD FFFD 536D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 536E FFFD 536F - 5370 FFFD FFFD FFFD 5371 FFFD 5372 5373 - 5374 FFFD 5375 5376 FFFD 5377 FFFD FFFD - 5378 5379 537A FFFD FFFD FFFD 537B FFFD - FFFD FFFD FFFD 537C 537D FFFD FFFD FFFD - FFFD FFFD 537E 5421 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5422 5423 FFFD FFFD 5424 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5425 FFFD FFFD 5426 5427 FFFD 5428 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5429 - 542A 542B 542C 542D FFFD FFFD FFFD FFFD - FFFD 542E 542F 5430 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5431 FFFD 5432 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5434 - FFFD FFFD 5435 5436 FFFD FFFD FFFD 5437 - 5438 FFFD 5439 FFFD FFFD FFFD 543A FFFD - FFFD FFFD 543B 543C FFFD FFFD 543D 543E - FFFD FFFD FFFD FFFD FFFD 5433 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 543F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5440 5441 FFFD - FFFD FFFD 5442 FFFD 5443 FFFD FFFD FFFD - FFFD 5444 5445 FFFD FFFD 5446 FFFD FFFD - FFFD FFFD FFFD FFFD 5447 5448 FFFD FFFD - FFFD 5449 544A FFFD 544B FFFD FFFD FFFD - 544C FFFD FFFD 544D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 544E FFFD FFFD FFFD - FFFD 544F 5450 FFFD 5451 FFFD FFFD FFFD - FFFD FFFD FFFD 5452 FFFD 5453 FFFD 5454 - FFFD FFFD FFFD FFFD FFFD 5455 FFFD FFFD - FFFD FFFD FFFD FFFD 5456 FFFD 5457 5458 - FFFD FFFD 5459 FFFD FFFD FFFD FFFD FFFD - 545A FFFD FFFD 545B 545C FFFD FFFD FFFD - 545D FFFD FFFD FFFD FFFD 545E FFFD FFFD - FFFD FFFD FFFD 545F FFFD FFFD 5460 FFFD - FFFD FFFD FFFD 5461 5462 FFFD FFFD 5463 - FFFD FFFD 5464 FFFD FFFD FFFD 5465 FFFD - FFFD FFFD 5466 FFFD FFFD 5467 FFFD 5468 - FFFD FFFD 5469 546A -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = 7F3B - srcEnd = 7F71 - mappingOffset = 2A96 - Mapping = - 546C 546B 546D 546E 546F FFFD FFFD FFFD - 5470 5471 FFFD FFFD 5472 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5473 FFFD FFFD 5474 - 5475 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5476 5477 5478 FFFD FFFD FFFD 5479 FFFD - 547A 547B 547C 547D FFFD FFFD FFFD FFFD - FFFD FFFD 547E FFFD FFFD FFFD 5521 -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = 7F7D - srcEnd = 7FCF - mappingOffset = 2ACD - Mapping = - 5522 5523 5524 5525 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5526 FFFD - 5527 FFFD 5528 5529 552A FFFD FFFD FFFD - FFFD 552B 552C FFFD FFFD FFFD FFFD 552D - FFFD FFFD FFFD FFFD 552E 552F FFFD FFFD - FFFD 5530 FFFD FFFD FFFD 5531 FFFD FFFD - 5532 FFFD FFFD FFFD FFFD FFFD FFFD 5533 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5534 - FFFD FFFD 5535 5536 FFFD FFFD 5537 FFFD - FFFD FFFD FFFD 5538 FFFD FFFD FFFD FFFD - FFFD 5539 553A -End of Item 0093 - -Begin of Item 0094 - Format 1 - srcBegin = 7FDB - srcEnd = 8044 - mappingOffset = 2B20 - Mapping = - 553B FFFD FFFD FFFD 553C FFFD FFFD FFFD - 553D FFFD 553E FFFD FFFD 553F FFFD FFFD - FFFD 5540 FFFD 5541 5542 FFFD FFFD 5543 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5544 - FFFD FFFD 5545 5546 5547 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5548 5549 FFFD 554A - FFFD FFFD 554B 554C 554D FFFD 554E FFFD - 554F 5550 FFFD 5551 FFFD FFFD FFFD FFFD - FFFD FFFD 5552 5553 5554 5555 FFFD FFFD - FFFD 5556 FFFD 5557 FFFD FFFD FFFD FFFD - FFFD 5558 FFFD 5559 FFFD 555A FFFD FFFD - FFFD 555B 555C FFFD 555D FFFD 555E 555F - FFFD 5560 FFFD 5561 FFFD 5562 FFFD FFFD - FFFD 5563 -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = 8060 - srcEnd = 8075 - mappingOffset = 2B8A - Mapping = - 5564 FFFD FFFD FFFD 5565 FFFD 5566 FFFD - FFFD FFFD FFFD FFFD FFFD 5567 FFFD FFFD - FFFD 5568 FFFD FFFD FFFD 5569 -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = 8081 - srcEnd = 808E - mappingOffset = 2BA0 - Mapping = - 556A FFFD FFFD FFFD FFFD FFFD FFFD 556B - FFFD FFFD FFFD FFFD FFFD 556C -End of Item 0096 - -Begin of Item 0097 - Format 1 - srcBegin = 809C - srcEnd = 80AB - mappingOffset = 2BAE - Mapping = - 556D FFFD 556E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 556F 5570 FFFD FFFD FFFD 5571 -End of Item 0097 - -Begin of Item 0098 - Format 1 - srcBegin = 80B8 - srcEnd = 80B9 - mappingOffset = 2BBE - Mapping = - 5572 5573 -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = 80C8 - srcEnd = 80E0 - mappingOffset = 2BC0 - Mapping = - 5574 FFFD FFFD FFFD FFFD 5575 FFFD 5576 - FFFD FFFD 5577 FFFD 5578 5579 FFFD 557A - 557B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 557C -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = 80ED - srcEnd = 81A2 - mappingOffset = 2BD9 - Mapping = - 557D 557E FFFD 5621 FFFD 5622 5623 FFFD - FFFD 5624 FFFD FFFD 5625 5626 FFFD FFFD - FFFD 5627 FFFD FFFD FFFD FFFD 5628 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5629 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 562A 562B 562C FFFD FFFD FFFD 562D - FFFD 562E FFFD 562F FFFD FFFD FFFD 5630 - FFFD FFFD 5631 FFFD FFFD FFFD FFFD 5632 - FFFD FFFD FFFD 5633 FFFD FFFD FFFD FFFD - 5634 FFFD FFFD FFFD FFFD 5635 FFFD 5636 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5637 FFFD 5638 FFFD FFFD 5639 FFFD 563A - FFFD FFFD FFFD FFFD FFFD 563B FFFD FFFD - FFFD FFFD 563C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 563D 563E FFFD FFFD FFFD - FFFD FFFD 563F 5640 5641 FFFD FFFD FFFD - 5642 FFFD 5643 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5644 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5645 FFFD FFFD 5647 - 5648 5649 FFFD FFFD FFFD FFFD 564A FFFD - FFFD 564B FFFD 5646 FFFD FFFD FFFD FFFD - FFFD 564C FFFD 564D FFFD FFFD 564E FFFD - FFFD 564F FFFD FFFD FFFD 5650 -End of Item 009A - -Begin of Item 009B - Format 1 - srcBegin = 81AE - srcEnd = 8203 - mappingOffset = 2C8F - Mapping = - 5651 FFFD FFFD FFFD 5652 FFFD 5653 FFFD - FFFD FFFD FFFD FFFD FFFD 5654 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5656 FFFD 5657 - FFFD FFFD FFFD FFFD 5658 5655 FFFD FFFD - 5659 565A FFFD FFFD FFFD FFFD FFFD 565B - FFFD 565C FFFD FFFD FFFD 565D FFFD 565E - 565F FFFD FFFD 5660 FFFD FFFD 5661 FFFD - FFFD FFFD FFFD FFFD FFFD 5662 5663 FFFD - FFFD FFFD 5664 5665 5666 FFFD FFFD 5667 - 5668 FFFD 5669 566A FFFD FFFD FFFD 566B - FFFD 566C 566D FFFD FFFD 566E -End of Item 009B - -Begin of Item 009C - Format 1 - srcBegin = 820F - srcEnd = 830B - mappingOffset = 2CE5 - Mapping = - 566F FFFD FFFD FFFD 5670 5671 FFFD FFFD - FFFD FFFD 5672 5673 FFFD FFFD 5674 FFFD - FFFD FFFD 5675 5676 FFFD FFFD FFFD FFFD - FFFD 5677 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5678 FFFD 5679 FFFD FFFD - FFFD FFFD FFFD 567A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 567B 567C 567D 567E - FFFD FFFD FFFD FFFD 5721 FFFD FFFD 5722 - 5723 FFFD 5724 FFFD FFFD FFFD FFFD 5725 - FFFD FFFD FFFD FFFD FFFD 5726 FFFD FFFD - FFFD 5727 FFFD FFFD 5728 FFFD FFFD FFFD - 5729 FFFD FFFD FFFD FFFD FFFD 572A FFFD - FFFD FFFD FFFD FFFD FFFD 572B FFFD FFFD - FFFD FFFD FFFD FFFD 572C FFFD 572D FFFD - 572E 572F 5730 FFFD 5731 5732 FFFD FFFD - 5733 FFFD 5734 5735 FFFD FFFD FFFD 5736 - FFFD FFFD 5737 FFFD FFFD 5738 FFFD 5739 - FFFD 573A FFFD 573B 573C FFFD FFFD FFFD - FFFD 573D 573E FFFD 573F 5740 FFFD FFFD - 5741 5742 5743 5744 FFFD FFFD FFFD 5745 - FFFD 5746 FFFD 5747 FFFD 5748 FFFD FFFD - 5749 FFFD FFFD 574A FFFD 574B FFFD 574C - 574D FFFD FFFD FFFD FFFD FFFD FFFD 574E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 574F FFFD FFFD FFFD FFFD 5750 FFFD - FFFD FFFD FFFD 5751 FFFD FFFD FFFD FFFD - FFFD 5752 FFFD 5753 FFFD 5754 FFFD FFFD - FFFD 5755 FFFD 5756 FFFD FFFD 5757 FFFD - 5758 FFFD FFFD FFFD FFFD FFFD FFFD 5759 - 575A FFFD FFFD FFFD FFFD FFFD 575B 575C - FFFD 575D 575E FFFD FFFD FFFD FFFD FFFD - 575F 5760 FFFD 5761 5762 -End of Item 009C - -Begin of Item 009D - Format 1 - srcBegin = 831B - srcEnd = 8357 - mappingOffset = 2DE2 - Mapping = - 5764 FFFD 5765 5766 5767 FFFD 5768 5769 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 576A 576B 576C FFFD 576D FFFD FFFD - 576E FFFD FFFD FFFD 576F FFFD FFFD 5770 - FFFD 5771 5772 FFFD FFFD FFFD FFFD 5773 - 5774 5775 FFFD FFFD 5776 FFFD FFFD FFFD - FFFD FFFD 5777 5778 FFFD FFFD 5779 FFFD - 583E 5763 577A 577B 577C -End of Item 009D - -Begin of Item 009E - Format 1 - srcBegin = 8370 - srcEnd = 83AD - mappingOffset = 2E1F - Mapping = - 577D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 577E FFFD FFFD FFFD FFFD 5821 FFFD 5822 - 5823 FFFD 5824 FFFD 5825 FFFD 5826 FFFD - FFFD FFFD FFFD FFFD FFFD 5827 FFFD FFFD - FFFD FFFD 5828 FFFD 5829 582A FFFD FFFD - 582B 582C FFFD 582D 582E 582F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5830 5831 - FFFD 5832 FFFD FFFD 5833 584C -End of Item 009E - -Begin of Item 009F - Format 1 - srcBegin = 83BE - srcEnd = 83EA - mappingOffset = 2E5D - Mapping = - 5834 5835 5836 FFFD FFFD FFFD FFFD FFFD - FFFD 5837 FFFD 5838 FFFD FFFD FFFD FFFD - FFFD 5839 583A 583B FFFD FFFD 583C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 583D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 583F FFFD 5840 -End of Item 009F - -Begin of Item 00A0 - Format 1 - srcBegin = 83F6 - srcEnd = 8419 - mappingOffset = 2E8A - Mapping = - 5841 FFFD 5842 5843 FFFD FFFD 5844 FFFD - FFFD FFFD FFFD 5845 FFFD FFFD FFFD FFFD - 5846 FFFD FFFD FFFD 5847 FFFD FFFD FFFD - FFFD 5848 FFFD 5849 FFFD FFFD FFFD 584A - FFFD FFFD FFFD 584B -End of Item 00A0 - -Begin of Item 00A1 - Format 1 - srcBegin = 842F - srcEnd = 8439 - mappingOffset = 2EAE - Mapping = - 584D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 584E -End of Item 00A1 - -Begin of Item 00A2 - Format 1 - srcBegin = 8445 - srcEnd = 8485 - mappingOffset = 2EB9 - Mapping = - 584F FFFD 5850 5851 FFFD 5852 FFFD FFFD - 5853 FFFD 5854 FFFD 5855 5856 FFFD FFFD - FFFD 5857 FFFD 5858 5859 585A FFFD 585B - FFFD FFFD FFFD 585C FFFD FFFD FFFD 585D - 585E FFFD 585F FFFD FFFD 5860 FFFD FFFD - FFFD FFFD FFFD 5861 FFFD FFFD 5862 5863 - FFFD 5864 FFFD 5865 FFFD FFFD FFFD 5866 - 5867 FFFD FFFD FFFD 5868 FFFD FFFD FFFD - 5869 -End of Item 00A2 - -Begin of Item 00A3 - Format 1 - srcBegin = 8492 - srcEnd = 8510 - mappingOffset = 2EFA - Mapping = - 586A 586B FFFD 586C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 586D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 586E FFFD 586F 5870 - 5871 FFFD FFFD FFFD FFFD 5872 FFFD 5873 - FFFD FFFD 5874 FFFD FFFD FFFD FFFD FFFD - 5875 FFFD FFFD 5876 5877 FFFD 5878 FFFD - 5879 FFFD FFFD FFFD FFFD 587A 587B FFFD - FFFD FFFD 587C FFFD FFFD 587D FFFD FFFD - FFFD 587E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5921 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5922 FFFD FFFD - 5923 FFFD FFFD FFFD FFFD 5924 5925 5926 - 5927 FFFD FFFD FFFD FFFD 5928 FFFD FFFD - 592A 592B FFFD 592C FFFD FFFD FFFD FFFD - 592D 592E FFFD FFFD FFFD 592F FFFD FFFD - FFFD FFFD 5930 FFFD 5931 FFFD 5932 -End of Item 00A3 - -Begin of Item 00A4 - Format 1 - srcBegin = 851C - srcEnd = 8629 - mappingOffset = 2F79 - Mapping = - 5933 FFFD 5934 FFFD FFFD FFFD 5935 5936 - 5937 5938 FFFD 5939 FFFD FFFD 593A 593B - FFFD FFFD FFFD 593C FFFD FFFD 5929 593D - 593E FFFD 593F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5940 FFFD FFFD FFFD FFFD - FFFD FFFD 5941 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5942 5943 5944 5945 5946 - FFFD FFFD 5947 FFFD FFFD 5948 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5950 FFFD FFFD FFFD FFFD FFFD FFFD 5951 - FFFD FFFD FFFD 5952 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5953 5954 5955 - FFFD 5956 FFFD 5957 FFFD 5958 FFFD FFFD - FFFD 5959 595A FFFD FFFD 595B FFFD 595C - 595D FFFD FFFD 595E FFFD FFFD FFFD 595F - FFFD FFFD FFFD FFFD 5960 FFFD FFFD FFFD - FFFD 5961 FFFD 5962 5963 FFFD 5964 FFFD - FFFD 5965 FFFD 5966 FFFD FFFD FFFD FFFD - FFFD 5974 FFFD FFFD FFFD FFFD FFFD FFFD - 5967 FFFD 5968 5969 596A FFFD FFFD FFFD - 596B 596C 596D 596E FFFD FFFD 596F FFFD - FFFD FFFD FFFD 5970 FFFD FFFD 5971 5972 - FFFD FFFD 5973 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5975 FFFD 5976 FFFD - FFFD FFFD FFFD 5977 5978 FFFD FFFD FFFD - FFFD FFFD 5979 FFFD 597A FFFD FFFD FFFD - FFFD 597B FFFD FFFD FFFD FFFD FFFD 597C - FFFD FFFD 597D FFFD FFFD FFFD FFFD FFFD - 597E FFFD FFFD 5A21 5A22 FFFD FFFD FFFD - 5A23 5A24 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5A25 5A26 FFFD 5A27 5A28 5A29 FFFD - FFFD FFFD FFFD FFFD 5A2A 5A2B FFFD 5A2C - FFFD FFFD 5A2D FFFD FFFD 5A2E FFFD FFFD - FFFD FFFD FFFD 5A2F FFFD 5A30 -End of Item 00A4 - -Begin of Item 00A5 - Format 1 - srcBegin = 8636 - srcEnd = 8646 - mappingOffset = 3087 - Mapping = - 5A31 FFFD 5A32 FFFD 5A33 FFFD 5A34 5A35 - FFFD FFFD 5A36 3866 5A37 FFFD FFFD FFFD - 5A38 -End of Item 00A5 - -Begin of Item 00A6 - Format 1 - srcBegin = 8652 - srcEnd = 867A - mappingOffset = 3098 - Mapping = - 5A39 5A3A FFFD FFFD 5A3B 5A3C 5A3D 5A3E - FFFD FFFD FFFD 5A3F FFFD FFFD 5A40 5A41 - 5A42 5A43 5A44 FFFD FFFD FFFD FFFD 5A45 - FFFD FFFD 5A46 FFFD FFFD 5A47 FFFD FFFD - FFFD FFFD FFFD 5A48 5A49 5A4A FFFD FFFD - 5A4B -End of Item 00A6 - -Begin of Item 00A7 - Format 1 - srcBegin = 8688 - srcEnd = 86C5 - mappingOffset = 30C1 - Mapping = - 5A6D FFFD FFFD FFFD FFFD 5A4C FFFD FFFD - FFFD 5A4D FFFD FFFD FFFD FFFD 5A4E FFFD - 5A4F FFFD 5A50 FFFD 5A51 FFFD FFFD FFFD - FFFD 5A52 FFFD FFFD FFFD FFFD 5A53 5A54 - 5A55 FFFD FFFD FFFD FFFD 5A56 FFFD FFFD - FFFD 5A57 FFFD 5A58 5A59 5A5A FFFD 5A5B - 5A5C 5A5D FFFD FFFD FFFD FFFD FFFD 5A5E - 5A5F 5A60 FFFD 5A61 FFFD 5A62 -End of Item 00A7 - -Begin of Item 00A8 - Format 1 - srcBegin = 86D1 - srcEnd = 86E7 - mappingOffset = 30FF - Mapping = - 5A63 5A64 FFFD FFFD 5A65 FFFD 5A66 FFFD - FFFD 5A67 FFFD 5A68 FFFD FFFD FFFD 5A69 - FFFD FFFD 5A6A FFFD 5A6B FFFD 5A6C -End of Item 00A8 - -Begin of Item 00A9 - Format 1 - srcBegin = 86FA - srcEnd = 877B - mappingOffset = 3116 - Mapping = - 5A6E FFFD 5A6F 5A70 FFFD FFFD FFFD FFFD - FFFD FFFD 5A71 5A72 FFFD 5A73 FFFD FFFD - FFFD 5A74 FFFD FFFD 5A75 5A76 5A77 FFFD - FFFD 5A78 5A79 FFFD FFFD FFFD FFFD 5A7A - FFFD FFFD FFFD FFFD 5A7B 5A7C FFFD 5A7D - FFFD 5A7E FFFD FFFD FFFD FFFD 5B21 FFFD - FFFD FFFD FFFD FFFD 5B22 5B23 FFFD 5B24 - 5B25 FFFD FFFD FFFD FFFD FFFD FFFD 5B26 - 5B27 FFFD 5B28 5B29 5B2A FFFD 5B2B FFFD - FFFD 5B2C FFFD 5B2D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5B2E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5B2F FFFD - FFFD FFFD FFFD 5B30 FFFD FFFD FFFD 5B31 - FFFD FFFD 5B32 5B33 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5B34 FFFD 5B35 - 5B36 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5B37 -End of Item 00A9 - -Begin of Item 00AA - Format 1 - srcBegin = 878B - srcEnd = 8880 - mappingOffset = 3198 - Mapping = - 5B3F 5B40 FFFD FFFD FFFD 5B41 FFFD FFFD - 5B42 FFFD 5B43 FFFD 5B44 5B45 5B46 FFFD - FFFD FFFD FFFD 5B47 FFFD 5B48 FFFD FFFD - 5B49 FFFD FFFD FFFD 5B4A FFFD FFFD FFFD - FFFD 5B4B 5B4C 5B4D FFFD FFFD 5B4E FFFD - FFFD FFFD 5B4F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5B50 5B51 FFFD 5B52 FFFD - FFFD FFFD FFFD FFFD FFFD 5B53 5B54 5B55 - FFFD FFFD FFFD 5B56 FFFD FFFD FFFD FFFD - FFFD FFFD 5B57 5B58 FFFD FFFD 5B59 5B5A - FFFD 5B5B FFFD FFFD 5B5C FFFD FFFD 5B5D - 5B5E 5B5F FFFD FFFD FFFD FFFD FFFD 5B60 - 5B61 FFFD 5B62 FFFD FFFD FFFD 5B63 FFFD - 5B64 FFFD FFFD FFFD FFFD 5B65 FFFD 5B66 - FFFD FFFD FFFD FFFD 5B67 FFFD 5B68 FFFD - 5B69 FFFD FFFD 5B6A FFFD FFFD 5B6B 5B6C - 5B6D FFFD FFFD FFFD FFFD 5B6E FFFD 5B70 - 5B71 5B72 FFFD FFFD FFFD 5B73 5B6F 5B74 - 5B75 5B76 FFFD 5B77 5B78 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5B79 FFFD FFFD - FFFD FFFD 5B7A 5B7B FFFD 5B7C FFFD 5B7D - FFFD FFFD 5B7E FFFD FFFD FFFD FFFD 5C21 - FFFD 5C22 FFFD FFFD FFFD FFFD 5C23 FFFD - 5C24 FFFD 5C25 FFFD FFFD 5C26 5C27 5C28 - 5C29 FFFD FFFD 5C2A FFFD FFFD 5C2B FFFD - FFFD FFFD 5C2C 5C2D FFFD 5C2E FFFD 5C2F - FFFD 5C30 FFFD FFFD 5C31 5C32 FFFD FFFD - FFFD 5C33 FFFD FFFD FFFD FFFD 5C34 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5C35 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5C36 FFFD - 5C37 FFFD FFFD FFFD FFFD 5C38 -End of Item 00AA - -Begin of Item 00AB - Format 1 - srcBegin = 8898 - srcEnd = 88AA - mappingOffset = 328E - Mapping = - 5C39 FFFD 5C3A 5C3B 5C3C FFFD FFFD 5C3D - 5C3E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5C3F FFFD 5C40 -End of Item 00AB - -Begin of Item 00AC - Format 1 - srcBegin = 88BA - srcEnd = 897D - mappingOffset = 32A1 - Mapping = - 5C41 FFFD FFFD 5C42 5C43 FFFD 5C44 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5C45 5C46 5C47 5C48 5C49 FFFD FFFD 5C4A - 5C4B 5C4C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5C4D FFFD FFFD 5C4E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5C4F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5C50 5C51 5C52 - FFFD FFFD FFFD 5C53 FFFD 5C54 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5C55 - FFFD FFFD FFFD FFFD 5C56 FFFD FFFD FFFD - FFFD FFFD FFFD 5C57 5C58 5C59 FFFD FFFD - FFFD FFFD FFFD 5C5A 5C5B FFFD 5C5C 5C5D - 5C5E FFFD 5C5F FFFD FFFD FFFD 5C60 FFFD - FFFD FFFD FFFD FFFD 5C61 5C62 5C63 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5C64 5C65 - 5C66 FFFD FFFD 5C67 FFFD FFFD FFFD 5C68 - 5C69 FFFD FFFD FFFD 5C6A FFFD 5C6B FFFD - 5C6C FFFD FFFD 5C6D 5C6E FFFD FFFD 5C6F - FFFD FFFD FFFD FFFD FFFD 5C70 FFFD FFFD - 5C71 FFFD FFFD FFFD FFFD 5C72 FFFD FFFD - 5C73 5C74 5C75 FFFD FFFD FFFD FFFD 5C76 - 5C77 5C78 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5C79 FFFD FFFD 5C7A FFFD 5C7B FFFD - FFFD 5C7C FFFD 5C7D FFFD FFFD FFFD FFFD - 5C7E 5D21 5D22 5D23 -End of Item 00AC - -Begin of Item 00AD - Format 1 - srcBegin = 8989 - srcEnd = 89BC - mappingOffset = 3365 - Mapping = - 5D24 FFFD FFFD FFFD 5D25 FFFD FFFD 5D26 - FFFD FFFD FFFD 5D27 5D28 FFFD FFFD FFFD - FFFD FFFD 5D29 5D2A FFFD FFFD 5D2B 5D2C - FFFD FFFD FFFD FFFD 5D2D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5D2E - FFFD FFFD FFFD 5D2F 5D30 5D31 5D32 FFFD - FFFD FFFD FFFD 5D33 -End of Item 00AD - -Begin of Item 00AE - Format 1 - srcBegin = 89D4 - srcEnd = 89D8 - mappingOffset = 3399 - Mapping = - 5D34 5D35 5D36 5D37 5D38 -End of Item 00AE - -Begin of Item 00AF - Format 1 - srcBegin = 89E5 - srcEnd = 8A67 - mappingOffset = 339E - Mapping = - 5D39 FFFD FFFD FFFD 5D3A FFFD 5D3B FFFD - 5D3C FFFD FFFD FFFD 5D3D FFFD 5D3E FFFD - FFFD 5D3F FFFD FFFD 5D40 FFFD FFFD FFFD - 5D41 FFFD 5D42 FFFD FFFD FFFD FFFD 5D43 - 5D44 FFFD 5D45 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5D46 FFFD 5D47 5D48 FFFD 5D49 - 5D4A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5D4B FFFD 5D4C FFFD 5D4D FFFD 5D4E - FFFD 5D4F FFFD FFFD FFFD FFFD 5D50 5D51 - FFFD FFFD 5D52 FFFD FFFD FFFD FFFD FFFD - 5D53 FFFD 5D54 FFFD FFFD FFFD FFFD FFFD - 5D55 5D56 FFFD 5D57 FFFD FFFD 5D58 FFFD - 5D59 FFFD 5D5A FFFD 5D5B FFFD FFFD FFFD - 5D5C 5D5D FFFD FFFD FFFD FFFD 5D5E FFFD - FFFD 5D5F 5D60 5D61 FFFD FFFD FFFD 5D62 - 5D63 FFFD FFFD FFFD 5D64 FFFD FFFD FFFD - 5D65 FFFD 5D66 -End of Item 00AF - -Begin of Item 00B0 - Format 1 - srcBegin = 8A75 - srcEnd = 8ADF - mappingOffset = 3421 - Mapping = - 5D67 5D68 5D69 FFFD 5D6A 5D6B 5D6C FFFD - FFFD 5D6D 5D6E 5D6F FFFD FFFD 5D70 FFFD - FFFD 5D71 FFFD FFFD FFFD FFFD 5D72 FFFD - FFFD FFFD 5D73 5D74 FFFD 5D75 FFFD FFFD - FFFD 5D76 5D77 FFFD 5D78 FFFD FFFD FFFD - FFFD FFFD 5D79 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5D7A FFFD 5D7B FFFD FFFD FFFD - FFFD 5D7C 5D7D FFFD FFFD FFFD 5D7E FFFD - FFFD 5E21 5E22 FFFD FFFD FFFD 5E23 FFFD - FFFD 5E24 FFFD FFFD FFFD FFFD 5E25 FFFD - FFFD 5E26 FFFD 5E27 5E28 5E29 FFFD FFFD - FFFD FFFD FFFD FFFD 5E2A FFFD 5E2B 5E2C - 5E2D FFFD 5E2E FFFD FFFD FFFD FFFD FFFD - 5E2F FFFD 5E30 -End of Item 00B0 - -Begin of Item 00B1 - Format 1 - srcBegin = 8AEC - srcEnd = 8B1F - mappingOffset = 348C - Mapping = - 5E31 FFFD FFFD FFFD 5E32 FFFD FFFD FFFD - 5E33 5E34 5E35 FFFD FFFD FFFD FFFD FFFD - 5E36 FFFD FFFD 5E37 FFFD FFFD FFFD FFFD - FFFD 5E38 5E39 FFFD FFFD FFFD 5E3F 5E3A - FFFD FFFD FFFD FFFD FFFD 5E3B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5E3C FFFD 5E3D 5E3E -End of Item 00B1 - -Begin of Item 00B2 - Format 1 - srcBegin = 8B2D - srcEnd = 8B9F - mappingOffset = 34C0 - Mapping = - 5E40 FFFD FFFD 5E41 FFFD FFFD FFFD FFFD - FFFD FFFD 5E42 FFFD FFFD FFFD FFFD 5E43 - FFFD FFFD FFFD FFFD FFFD 5E44 5E45 5E46 - 5E47 5E48 FFFD 5E49 FFFD FFFD FFFD FFFD - 5E4E FFFD FFFD FFFD FFFD 5E4A 5E4B 5E4C - FFFD FFFD FFFD FFFD 5E4D FFFD FFFD FFFD - FFFD 5E4F FFFD FFFD FFFD FFFD 5E50 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5E51 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5E52 FFFD 5E53 5E54 FFFD FFFD 5E55 - FFFD 5E56 FFFD FFFD 5E57 FFFD FFFD 5E58 - 5E59 FFFD FFFD FFFD FFFD FFFD 5E5A FFFD - 5E5B FFFD 5E5C FFFD FFFD FFFD FFFD 5E5D - 5E5E FFFD FFFD FFFD FFFD FFFD FFFD 5E5F - FFFD 5E60 5E61 -End of Item 00B2 - -Begin of Item 00B3 - Format 1 - srcBegin = 8C38 - srcEnd = 8CA4 - mappingOffset = 3533 - Mapping = - 5E62 5E63 FFFD FFFD FFFD 5E64 5E65 FFFD - FFFD FFFD FFFD FFFD FFFD 5E66 FFFD 5E67 - FFFD 5E68 FFFD 5E69 FFFD FFFD FFFD 5E6A - FFFD 5E6B FFFD 5E6C 5E6D FFFD FFFD 5E6E - 5E6F 5E72 FFFD 5E70 FFFD 5E71 FFFD FFFD - FFFD FFFD FFFD 5E73 5E74 FFFD 5E75 FFFD - 5E76 5E77 FFFD FFFD FFFD 5E78 FFFD FFFD - FFFD FFFD FFFD 5E79 FFFD 5E7A 5E7B FFFD - FFFD FFFD FFFD 5E7C FFFD FFFD 5E7D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5E7E 5F21 - FFFD FFFD FFFD 5F22 FFFD FFFD FFFD FFFD - 5F23 FFFD 5F24 5F25 FFFD FFFD FFFD FFFD - FFFD 5F26 FFFD 5F27 5F28 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5F29 -End of Item 00B3 - -Begin of Item 00B4 - Format 1 - srcBegin = 8CB9 - srcEnd = 8D1B - mappingOffset = 35A0 - Mapping = - 5F2A 5F2B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5F2C 5F2D FFFD FFFD - 5F2E FFFD 5F2F FFFD FFFD FFFD 5F30 FFFD - FFFD FFFD FFFD FFFD 5F32 5F31 FFFD FFFD - 5F33 FFFD FFFD FFFD 5F34 FFFD FFFD FFFD - 5F35 FFFD FFFD FFFD FFFD FFFD FFFD 5F36 - FFFD FFFD FFFD 5F37 FFFD FFFD 5F38 5F39 - FFFD 5F3A FFFD FFFD 5F3B FFFD 5F3C 5F3D - FFFD FFFD FFFD FFFD FFFD 5F3E 5F3F FFFD - 5F40 FFFD 5F41 FFFD FFFD FFFD FFFD FFFD - 5F42 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F43 FFFD FFFD FFFD FFFD 5F44 FFFD - FFFD FFFD 5F45 -End of Item 00B4 - -Begin of Item 00B5 - Format 1 - srcBegin = 8D65 - srcEnd = 8D6E - mappingOffset = 3603 - Mapping = - 5F46 FFFD FFFD FFFD 5F47 FFFD FFFD 5F48 - FFFD 5F49 -End of Item 00B5 - -Begin of Item 00B6 - Format 1 - srcBegin = 8D7F - srcEnd = 8EDC - mappingOffset = 360D - Mapping = - 5F4A FFFD FFFD 5F4B FFFD 5F4C FFFD FFFD - FFFD 5F4D FFFD FFFD FFFD FFFD 5F4E FFFD - FFFD 5F4F 5F50 FFFD FFFD FFFD 5F51 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5F52 - 5F53 5F54 FFFD FFFD FFFD FFFD FFFD 5F55 - FFFD FFFD FFFD FFFD 5F56 5F57 FFFD FFFD - 5F58 FFFD FFFD 5F59 FFFD FFFD 5F5A FFFD - 5F5B FFFD 5F5C FFFD 5F5D 5F6F FFFD FFFD - FFFD 5F5E FFFD FFFD FFFD FFFD 5F5F 5F60 - 5F61 5F62 FFFD 5F63 FFFD FFFD FFFD 5F64 - FFFD FFFD 5F65 FFFD FFFD 5F66 5F67 FFFD - 5F68 FFFD 5F69 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5F6A 5F6B FFFD - 5F6C FFFD FFFD FFFD FFFD 5F6D FFFD FFFD - FFFD 5F6E 5F70 5F71 FFFD 5F72 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5F73 FFFD - FFFD FFFD 5F74 FFFD FFFD 5F75 5F76 5F77 - FFFD FFFD FFFD FFFD 5F78 FFFD FFFD FFFD - FFFD FFFD 5F79 FFFD FFFD 5F7A FFFD 5F7B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F7C 5F7D 5F7E 6021 FFFD FFFD 6022 - 6023 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6024 FFFD 6025 FFFD FFFD 6026 - 6027 6028 6029 FFFD FFFD FFFD 602A FFFD - FFFD 602B 602C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 602D FFFD 602E 602F - 6030 FFFD FFFD FFFD FFFD 6031 FFFD FFFD - FFFD FFFD FFFD FFFD 6032 6033 6034 6035 - FFFD FFFD 6036 6037 FFFD FFFD FFFD FFFD - FFFD FFFD 6038 FFFD FFFD 6039 603A FFFD - 603B 603C 603D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 603E 603F 6040 FFFD FFFD FFFD - FFFD FFFD FFFD 6041 6042 FFFD FFFD FFFD - FFFD FFFD 6043 FFFD FFFD FFFD FFFD FFFD - FFFD 6044 FFFD 6045 FFFD FFFD 6046 FFFD - FFFD FFFD FFFD 6047 6048 FFFD 6049 604A - FFFD FFFD FFFD 604B FFFD FFFD FFFD FFFD - 604C FFFD 604D FFFD FFFD FFFD 604E 604F - FFFD FFFD FFFD FFFD 6050 FFFD 6051 FFFD - FFFD FFFD FFFD 6052 6053 FFFD FFFD FFFD - FFFD 6054 6055 FFFD 6056 6057 FFFD FFFD - 6058 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6059 FFFD 605A FFFD FFFD 605B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 605C -End of Item 00B6 - -Begin of Item 00B7 - Format 1 - srcBegin = 8EE8 - srcEnd = 8F65 - mappingOffset = 376B - Mapping = - 605D FFFD FFFD FFFD FFFD 6064 605E FFFD - 605F 6060 FFFD FFFD FFFD FFFD FFFD 6061 - FFFD 6062 6063 FFFD FFFD FFFD FFFD FFFD - 6065 FFFD 6066 FFFD FFFD FFFD FFFD 6067 - 6068 FFFD FFFD FFFD FFFD FFFD FFFD 6069 - 606A FFFD FFFD FFFD FFFD FFFD 606B 606C - 606D FFFD FFFD FFFD FFFD FFFD 606E FFFD - 606F 6070 FFFD 6071 FFFD 6072 FFFD 6073 - 6074 FFFD FFFD FFFD 6075 6076 6077 FFFD - FFFD FFFD FFFD FFFD 6078 6079 607A 607B - FFFD FFFD 607C FFFD FFFD FFFD FFFD FFFD - 607D 607E FFFD 6121 FFFD FFFD FFFD 6122 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6123 - FFFD 6124 6125 6126 6127 6128 FFFD FFFD - 6129 FFFD FFFD FFFD FFFD 612A 612B FFFD - FFFD FFFD FFFD FFFD FFFD 612C -End of Item 00B7 - -Begin of Item 00B8 - Format 1 - srcBegin = 8F9D - srcEnd = 8FA6 - mappingOffset = 37E9 - Mapping = - 612D FFFD FFFD 612E 612F FFFD FFFD 6130 - 6131 6132 -End of Item 00B8 - -Begin of Item 00B9 - Format 1 - srcBegin = 8FB5 - srcEnd = 900C - mappingOffset = 37F3 - Mapping = - 6133 6134 FFFD 6135 FFFD FFFD FFFD FFFD - FFFD 6136 FFFD 6137 6138 FFFD FFFD FFFD - FFFD 6139 FFFD FFFD FFFD 613A 613B FFFD - 613C FFFD FFFD 613D FFFD 613E 613F FFFD - 6140 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6141 FFFD FFFD 6142 6143 - FFFD FFFD FFFD 6144 FFFD FFFD FFFD FFFD - FFFD 6145 FFFD FFFD 6146 FFFD FFFD FFFD - 6147 6148 FFFD FFFD FFFD FFFD 6149 FFFD - FFFD 614A FFFD FFFD FFFD 614B FFFD 614C - FFFD FFFD FFFD 614D FFFD FFFD FFFD 614E -End of Item 00B9 - -Begin of Item 00BA - Format 1 - srcBegin = 9018 - srcEnd = 901B - mappingOffset = 384B - Mapping = - 614F FFFD FFFD 6150 -End of Item 00BA - -Begin of Item 00BB - Format 1 - srcBegin = 9028 - srcEnd = 904C - mappingOffset = 384F - Mapping = - 6151 6152 6154 FFFD 6155 6156 FFFD 6153 - FFFD FFFD FFFD 6157 6158 FFFD FFFD 6159 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 615A - FFFD FFFD FFFD 615B 615C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 615D -End of Item 00BB - -Begin of Item 00BC - Format 1 - srcBegin = 905B - srcEnd = 9079 - mappingOffset = 3874 - Mapping = - 615E FFFD 615F FFFD FFFD FFFD FFFD 6160 - FFFD FFFD FFFD 6161 6162 FFFD FFFD FFFD - FFFD 6163 FFFD FFFD FFFD 6164 FFFD FFFD - FFFD 6165 FFFD FFFD FFFD FFFD 6166 -End of Item 00BC - -Begin of Item 00BD - Format 1 - srcBegin = 9085 - srcEnd = 91C5 - mappingOffset = 3893 - Mapping = - 6167 FFFD FFFD 6168 FFFD FFFD 6169 616A - FFFD 616B FFFD 616C FFFD FFFD FFFD FFFD - 616D FFFD 616E 616F 6170 FFFD 6171 FFFD - FFFD FFFD FFFD 6172 6173 6174 FFFD FFFD - 6175 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6176 FFFD 6177 6178 6179 - FFFD 617A FFFD FFFD FFFD FFFD FFFD FFFD - 617B 617D FFFD FFFD FFFD FFFD 617E 6221 - 6222 FFFD 6223 6224 FFFD FFFD FFFD 617C - FFFD FFFD FFFD FFFD FFFD 622D FFFD FFFD - 6225 FFFD 6226 6227 6228 FFFD FFFD 6229 - 622A FFFD 622B FFFD FFFD FFFD FFFD FFFD - 622C FFFD FFFD FFFD FFFD FFFD 622F FFFD - FFFD FFFD 6230 6231 FFFD FFFD FFFD 6232 - FFFD 622E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6233 6234 6235 FFFD FFFD FFFD 6236 - 6237 6238 FFFD 6239 FFFD FFFD FFFD FFFD - 623A FFFD FFFD 623B FFFD FFFD FFFD 623C - FFFD 623D 623E 623F FFFD 6240 FFFD 6241 - FFFD 6242 FFFD 6243 FFFD 6245 6246 FFFD - 6244 FFFD 6247 FFFD 6248 FFFD FFFD FFFD - FFFD 6249 624A FFFD 624B FFFD FFFD 624C - FFFD 624D 624E FFFD 624F 6250 FFFD 6251 - 6252 FFFD FFFD FFFD FFFD FFFD 6253 FFFD - FFFD FFFD 6254 6255 FFFD FFFD FFFD FFFD - FFFD FFFD 6256 FFFD FFFD FFFD 6257 FFFD - FFFD FFFD 6258 FFFD 6259 625A 625B FFFD - FFFD FFFD FFFD FFFD 625C FFFD FFFD 625D - FFFD FFFD 625E FFFD FFFD FFFD FFFD FFFD - 625F FFFD FFFD FFFD FFFD FFFD FFFD 6260 - FFFD FFFD FFFD FFFD 6261 6262 6263 FFFD - FFFD FFFD FFFD FFFD 6264 FFFD 6265 FFFD - 6266 6267 FFFD FFFD FFFD 6268 FFFD FFFD - FFFD 6269 FFFD FFFD 626A FFFD 626B 626C - 626D FFFD FFFD 626E FFFD FFFD FFFD FFFD - FFFD 626F FFFD FFFD 6270 FFFD FFFD FFFD - FFFD 6271 FFFD 6272 FFFD FFFD FFFD 6273 - 6274 6275 FFFD 6276 6277 6278 6279 FFFD - FFFD 627A FFFD FFFD FFFD FFFD 627B 627C - 627D FFFD 627E FFFD FFFD 6321 6322 FFFD - 6323 -End of Item 00BD - -Begin of Item 00BE - Format 1 - srcBegin = 91D3 - srcEnd = 91EA - mappingOffset = 39D4 - Mapping = - 6324 6325 FFFD FFFD 6326 FFFD 6327 6328 - FFFD FFFD FFFD 6329 FFFD FFFD FFFD FFFD - FFFD 632A 632B FFFD FFFD FFFD 632C 632D -End of Item 00BE - -Begin of Item 00BF - Format 1 - srcBegin = 91F7 - srcEnd = 9337 - mappingOffset = 39EC - Mapping = - 6334 FFFD 6335 FFFD 6336 FFFD 6337 FFFD - FFFD 6338 6339 FFFD FFFD 633A 633B 633C - 633D FFFD 633E 633F FFFD 6340 FFFD FFFD - FFFD 6341 FFFD 6342 6343 FFFD FFFD 6344 - FFFD 6345 FFFD FFFD FFFD 6346 6347 FFFD - FFFD FFFD FFFD FFFD 6348 6349 634A 634B - FFFD 634C FFFD FFFD FFFD FFFD FFFD 634D - 634E 634F FFFD FFFD 6350 FFFD 6351 6352 - FFFD 6353 6354 6355 FFFD 6356 FFFD 6357 - FFFD 6358 FFFD 6359 635A FFFD FFFD 635B - 635C FFFD FFFD 635D FFFD FFFD 635E 635F - 6360 FFFD 6361 FFFD FFFD FFFD FFFD FFFD - FFFD 6362 6363 FFFD FFFD 6364 6365 FFFD - FFFD 6366 6367 FFFD FFFD FFFD 6368 FFFD - 6369 636A 636B FFFD FFFD FFFD FFFD 636C - 636D 636E FFFD FFFD FFFD FFFD 636F 6370 - 6371 6372 6373 FFFD 6374 6375 6376 FFFD - 6377 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6378 6379 637A FFFD FFFD 637B 637C - FFFD FFFD FFFD 637D FFFD FFFD FFFD FFFD - 637E FFFD 6421 FFFD FFFD FFFD FFFD FFFD - 6422 6423 FFFD FFFD FFFD 6424 6425 FFFD - 6426 6427 FFFD FFFD 6428 FFFD FFFD FFFD - 6429 FFFD FFFD 642A FFFD FFFD FFFD 642B - FFFD 642C FFFD 642D 642E 642F 6430 FFFD - 6431 6432 6433 6434 6435 FFFD 6436 6437 - 6438 6439 FFFD FFFD 643A 643B 643C 643D - FFFD 643E FFFD FFFD 643F FFFD 6440 FFFD - 6441 6442 6443 FFFD FFFD 6444 6445 FFFD - 6446 6447 6448 FFFD 6449 FFFD 644A FFFD - 644B 644C FFFD FFFD FFFD 644D FFFD 644E - FFFD 644F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6450 FFFD 6451 FFFD FFFD FFFD - 6452 6453 FFFD 6454 FFFD FFFD FFFD FFFD - FFFD 6455 FFFD FFFD FFFD FFFD 6456 FFFD - FFFD FFFD 6457 FFFD FFFD 6458 6459 FFFD - FFFD FFFD FFFD FFFD FFFD 645A 645B 645C - 645D FFFD 645E FFFD FFFD 645F 6460 FFFD - 6461 FFFD 6462 6463 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6464 6465 FFFD 6466 - 6467 -End of Item 00BF - -Begin of Item 00C0 - Format 1 - srcBegin = 9347 - srcEnd = 93E7 - mappingOffset = 3B2D - Mapping = - 6468 6469 646A FFFD FFFD FFFD FFFD FFFD - FFFD 646B 646C 646D FFFD FFFD 646E FFFD - 646F 6470 FFFD 6471 FFFD FFFD FFFD 6472 - FFFD FFFD FFFD FFFD FFFD 6473 6474 FFFD - 6475 FFFD 6476 6477 FFFD FFFD 6478 FFFD - 6479 647A 647B FFFD 647C 647D FFFD 647E - FFFD FFFD FFFD 6521 FFFD FFFD 6522 FFFD - 6523 6524 6525 6526 FFFD FFFD FFFD FFFD - FFFD 6527 FFFD 6528 6529 FFFD 652A FFFD - 652B FFFD FFFD 652C FFFD FFFD 652D FFFD - FFFD 652E FFFD FFFD 652F FFFD FFFD 6530 - FFFD FFFD 6531 FFFD 6532 6533 FFFD 6534 - FFFD 6535 653B FFFD 6536 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6537 6538 6539 - FFFD FFFD FFFD 653A FFFD FFFD FFFD FFFD - FFFD FFFD 653C FFFD FFFD 653D 653E 653F - 6540 FFFD 6541 6542 6543 6544 6545 FFFD - FFFD FFFD FFFD FFFD 6546 FFFD FFFD FFFD - FFFD FFFD 6547 FFFD FFFD 6548 FFFD 6549 - 654A FFFD FFFD 654B FFFD FFFD FFFD 654C - 654D -End of Item 00C0 - -Begin of Item 00C1 - Format 1 - srcBegin = 93F7 - srcEnd = 941F - mappingOffset = 3BCE - Mapping = - 654F 6550 654E 6551 6552 FFFD 6553 FFFD - FFFD FFFD 6554 6555 FFFD 6556 FFFD FFFD - FFFD 6557 6558 FFFD FFFD FFFD 6559 655A - 655B FFFD FFFD FFFD FFFD FFFD 655C 655D - 655E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 655F -End of Item 00C1 - -Begin of Item 00C2 - Format 1 - srcBegin = 942E - srcEnd = 9472 - mappingOffset = 3BF7 - Mapping = - 6560 6561 FFFD 6562 6563 6564 6565 FFFD - FFFD FFFD FFFD FFFD FFFD 6566 FFFD 6568 - FFFD 6567 FFFD FFFD FFFD 6569 FFFD 656A - FFFD FFFD 656B FFFD 656C FFFD 656D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 656E - FFFD FFFD FFFD 656F FFFD FFFD 6570 FFFD - FFFD 6571 FFFD 6572 FFFD 6573 FFFD FFFD - FFFD FFFD 6574 FFFD FFFD 6575 FFFD 6576 - 6577 6578 FFFD 6579 657A -End of Item 00C2 - -Begin of Item 00C3 - Format 1 - srcBegin = 9483 - srcEnd = 9484 - mappingOffset = 3C3C - Mapping = - 657C 657B -End of Item 00C3 - -Begin of Item 00C4 - Format 1 - srcBegin = 9578 - srcEnd = 958E - mappingOffset = 3C3E - Mapping = - 657D 657E FFFD FFFD FFFD FFFD 6621 FFFD - FFFD FFFD FFFD FFFD 6622 FFFD FFFD FFFD - 6623 FFFD FFFD FFFD 6624 6625 6626 -End of Item 00C4 - -Begin of Item 00C5 - Format 1 - srcBegin = 959D - srcEnd = 95E6 - mappingOffset = 3C55 - Mapping = - 6627 6628 6629 FFFD 662A FFFD FFFD FFFD - FFFD 662B FFFD FFFD 662C FFFD 662D 662E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 662F - FFFD 6630 FFFD FFFD FFFD 6631 FFFD FFFD - 6632 FFFD 6633 FFFD FFFD FFFD FFFD FFFD - FFFD 6634 FFFD 6635 6636 FFFD 6637 FFFD - FFFD FFFD FFFD 6638 6639 663A 663B FFFD - FFFD FFFD FFFD FFFD 663C 663D FFFD FFFD - 663E 663F 6640 6641 FFFD FFFD FFFD 6642 - FFFD 6643 -End of Item 00C5 - -Begin of Item 00C6 - Format 1 - srcBegin = 961D - srcEnd = 9641 - mappingOffset = 3C9F - Mapping = - 6644 6645 FFFD FFFD FFFD 6646 FFFD 6647 - 6648 6649 FFFD FFFD FFFD FFFD FFFD 664A - FFFD FFFD FFFD FFFD 664B FFFD 664C FFFD - FFFD FFFD 664D 664E 664F 6650 FFFD 6651 - 6652 FFFD FFFD FFFD 6653 -End of Item 00C6 - -Begin of Item 00C7 - Format 1 - srcBegin = 9652 - srcEnd = 9661 - mappingOffset = 3CC4 - Mapping = - 6654 FFFD 6655 FFFD 6656 6657 6658 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6659 -End of Item 00C7 - -Begin of Item 00C8 - Format 1 - srcBegin = 966E - srcEnd = 96BA - mappingOffset = 3CD4 - Mapping = - 665A FFFD FFFD FFFD FFFD FFFD 665B FFFD - FFFD FFFD FFFD FFFD FFFD 665C 665D FFFD - 665E 665F FFFD 6660 6661 6662 6663 FFFD - FFFD FFFD FFFD 6664 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6665 FFFD FFFD FFFD FFFD - 6666 FFFD FFFD FFFD 6667 FFFD FFFD 6668 - FFFD 6669 FFFD FFFD FFFD FFFD 666A 666B - 666C FFFD FFFD 666D FFFD FFFD FFFD FFFD - 666E 666F FFFD FFFD FFFD 6670 FFFD FFFD - FFFD FFFD FFFD FFFD 6671 -End of Item 00C8 - -Begin of Item 00C9 - Format 1 - srcBegin = 96CA - srcEnd = 9709 - mappingOffset = 3D21 - Mapping = - 6672 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6673 FFFD FFFD FFFD FFFD FFFD 6675 FFFD - 6676 FFFD FFFD 6677 6678 6679 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 667A - FFFD FFFD FFFD FFFD FFFD 667B FFFD 667C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 667D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 667E 6721 FFFD 6722 FFFD FFFD FFFD 6723 -End of Item 00C9 - -Begin of Item 00CA - Format 1 - srcBegin = 971A - srcEnd = 9733 - mappingOffset = 3D61 - Mapping = - 6724 6725 FFFD 6726 FFFD FFFD FFFD 6727 - 6728 6729 FFFD FFFD FFFD FFFD 672A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 672B - FFFD 672C -End of Item 00CA - -Begin of Item 00CB - Format 1 - srcBegin = 9741 - srcEnd = 9789 - mappingOffset = 3D7B - Mapping = - 672D FFFD 672E FFFD FFFD FFFD FFFD FFFD - FFFD 672F FFFD FFFD FFFD 6730 6731 FFFD - FFFD FFFD FFFD FFFD 6732 FFFD 6733 6734 - FFFD 6735 6736 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6737 FFFD FFFD FFFD 6738 FFFD - FFFD 6739 FFFD FFFD FFFD 673A FFFD FFFD - FFFD FFFD 673B FFFD FFFD 673C 673D 673E - FFFD FFFD 673F FFFD 6740 FFFD 6741 6742 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6743 -End of Item 00CB - -Begin of Item 00CC - Format 1 - srcBegin = 9795 - srcEnd = 97FA - mappingOffset = 3DC4 - Mapping = - 6744 6745 6746 FFFD 6747 6748 FFFD FFFD - FFFD 6749 674A FFFD FFFD 674B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 674C - FFFD 674D FFFD FFFD 674E 674F FFFD FFFD - 6750 6751 FFFD 6752 6753 6754 FFFD 6755 - FFFD 6756 6757 FFFD 6758 FFFD FFFD 6759 - 675A FFFD 675B FFFD 675C 675D FFFD 675E - 675F 6760 FFFD 6761 6762 FFFD FFFD 6763 - FFFD FFFD 6764 6765 6766 FFFD 676A FFFD - 6767 6768 FFFD 6769 676B FFFD FFFD 676C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 676D FFFD 676E FFFD FFFD 676F - FFFD FFFD 6770 6771 FFFD 6772 -End of Item 00CC - -Begin of Item 00CD - Format 1 - srcBegin = 9807 - srcEnd = 986C - mappingOffset = 3E2A - Mapping = - 6773 FFFD FFFD 6774 FFFD FFFD 6776 6777 - FFFD FFFD FFFD FFFD FFFD 6778 FFFD 6779 - FFFD FFFD 6775 FFFD FFFD 677A FFFD 677B - FFFD 677C FFFD FFFD 677D FFFD 6828 677E - FFFD FFFD FFFD FFFD 6821 FFFD FFFD 6822 - 6823 6824 FFFD 6825 6826 FFFD 6827 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6829 - FFFD FFFD FFFD FFFD FFFD 682A FFFD FFFD - 682B FFFD FFFD 682C FFFD FFFD FFFD FFFD - FFFD FFFD 682D 682E 682F FFFD FFFD 6830 - 6831 FFFD 6832 6833 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6834 6835 FFFD 6836 6837 - FFFD FFFD FFFD 6838 FFFD 6839 -End of Item 00CD - -Begin of Item 00CE - Format 1 - srcBegin = 98AB - srcEnd = 98CC - mappingOffset = 3E90 - Mapping = - 683A FFFD 683B 683C FFFD 683D FFFD FFFD - FFFD 683E FFFD FFFD 683F 6840 FFFD 6841 - 6842 FFFD FFFD FFFD 6843 FFFD FFFD 6844 - FFFD FFFD 6845 FFFD FFFD 6846 FFFD FFFD - FFFD 6847 -End of Item 00CE - -Begin of Item 00CF - Format 1 - srcBegin = 98E1 - srcEnd = 98F6 - mappingOffset = 3EB2 - Mapping = - 6848 FFFD 6849 FFFD 684A 684B 684C FFFD - FFFD 684D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 684E FFFD FFFD 684F -End of Item 00CF - -Begin of Item 00D0 - Format 1 - srcBegin = 9902 - srcEnd = 9960 - mappingOffset = 3EC8 - Mapping = - 6850 FFFD FFFD FFFD FFFD 6851 6852 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6853 - FFFD FFFD FFFD 6854 6855 6856 FFFD FFFD - 6857 6858 6859 FFFD FFFD 685A FFFD FFFD - 685B FFFD FFFD FFFD 685C 685D FFFD FFFD - FFFD 685E FFFD FFFD FFFD FFFD FFFD 685F - 6860 6861 6862 6863 FFFD FFFD FFFD 6864 - 6865 6866 6867 FFFD FFFD FFFD 6868 6869 - FFFD FFFD FFFD FFFD 686A 686B 686C FFFD - FFFD FFFD FFFD 686D 686E FFFD FFFD FFFD - FFFD FFFD 686F FFFD FFFD FFFD 6870 6871 - FFFD 6872 6873 FFFD 6874 6875 6876 -End of Item 00D0 - -Begin of Item 00D1 - Format 1 - srcBegin = 999B - srcEnd = 9A5D - mappingOffset = 3F27 - Mapping = - 6877 FFFD 6878 FFFD 6879 FFFD FFFD FFFD - FFFD FFFD FFFD 687A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 687B 687C 687D - FFFD FFFD 687E FFFD FFFD FFFD 6921 6922 - FFFD FFFD 6923 FFFD 6924 FFFD FFFD FFFD - 6925 FFFD FFFD FFFD FFFD FFFD 6926 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6927 6928 FFFD FFFD FFFD FFFD 6929 692A - FFFD 692B FFFD 692C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 692D FFFD FFFD 692E - 692F 6930 FFFD FFFD FFFD 6931 FFFD FFFD - FFFD 6932 6933 FFFD FFFD FFFD 6934 FFFD - FFFD FFFD 6935 6936 FFFD FFFD FFFD 6937 - 6938 6939 FFFD FFFD FFFD FFFD FFFD FFFD - 693A 693B FFFD FFFD FFFD 693C 693D FFFD - FFFD FFFD FFFD 693E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 693F FFFD 6940 FFFD 6941 - 6942 6943 FFFD FFFD 6944 FFFD FFFD FFFD - FFFD FFFD 6945 6946 FFFD FFFD FFFD FFFD - 6947 FFFD 6948 6949 FFFD 694A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 694C FFFD - FFFD 694D FFFD FFFD 694B FFFD FFFD 694E - 694F 6950 FFFD 6951 FFFD FFFD 6952 FFFD - FFFD 6953 FFFD 6954 FFFD FFFD FFFD FFFD - FFFD FFFD 6955 -End of Item 00D1 - -Begin of Item 00D2 - Format 1 - srcBegin = 9AAA - srcEnd = 9C7B - mappingOffset = 3FEA - Mapping = - 6956 FFFD 6957 FFFD 6958 6959 FFFD FFFD - 695A FFFD 695B 695C 695D FFFD FFFD 695E - FFFD 695F FFFD FFFD 6960 6961 FFFD 6962 - FFFD 6963 FFFD FFFD 6964 FFFD 6965 FFFD - FFFD FFFD FFFD FFFD 6966 FFFD 6967 FFFD - 6968 FFFD FFFD 6969 696A 696B FFFD FFFD - FFFD 696C 696D FFFD FFFD FFFD 696E FFFD - FFFD FFFD 696F 6970 FFFD 6971 FFFD 6972 - FFFD FFFD 6973 FFFD FFFD FFFD FFFD FFFD - 6974 6975 FFFD 6976 FFFD FFFD FFFD 6977 - 6978 FFFD FFFD 6979 FFFD 697A 697B 697C - 697D 697E 6A21 6A22 FFFD FFFD 6A23 6A24 - FFFD 6A25 6A26 6A27 6A28 FFFD 6A29 FFFD - 6A2A FFFD FFFD FFFD 6A2B FFFD FFFD 6A2C - FFFD 6A2D 6A2E FFFD FFFD FFFD 6A2F FFFD - FFFD FFFD FFFD FFFD 6A30 FFFD FFFD FFFD - FFFD 6A31 FFFD 6A32 FFFD FFFD FFFD FFFD - FFFD 6A33 6A34 6A35 FFFD 6A36 FFFD 6A37 - 6A38 FFFD FFFD 6A39 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6A3A FFFD - FFFD 6A3B 6A3C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6A3D 6A3E 6A3F FFFD FFFD - FFFD 6A40 FFFD FFFD 6A41 FFFD FFFD 6A42 - FFFD 6A43 FFFD 6A44 6A45 FFFD 6A46 FFFD - 6A47 6A48 6A49 6A4A 6A4B FFFD FFFD FFFD - FFFD 6A4C FFFD 6A4D FFFD 6A4E 6A4F 6A50 - FFFD FFFD FFFD FFFD FFFD 6A51 6A52 FFFD - FFFD FFFD 6A53 6A54 6A55 6A56 FFFD 6A57 - 6A58 6A59 FFFD 6A5A FFFD 6A5B 6A5C FFFD - FFFD FFFD 6A5D FFFD FFFD FFFD FFFD FFFD - 6A5E FFFD FFFD 6A5F 6A60 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6A61 6A62 FFFD 6A63 - FFFD FFFD 6A64 FFFD FFFD FFFD 6A65 6A66 - 6A67 FFFD FFFD FFFD FFFD 6A68 6A69 FFFD - FFFD 6A6A 6A6B FFFD 6A6C 6A6D FFFD 6A6E - FFFD FFFD FFFD FFFD FFFD 6A6F 6A70 FFFD - FFFD FFFD FFFD FFFD 6A71 FFFD 6A72 FFFD - FFFD FFFD FFFD FFFD FFFD 6A73 6A74 FFFD - FFFD FFFD FFFD 6A75 FFFD 6A76 FFFD FFFD - FFFD FFFD FFFD 6A77 FFFD 6A78 FFFD FFFD - 6A79 6A7A FFFD FFFD FFFD 6A7B FFFD FFFD - FFFD 6A7C FFFD FFFD FFFD 6A7D 6A7E 6B21 - 6B22 FFFD FFFD 6B23 FFFD 6B24 6B25 FFFD - 6B26 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6B27 FFFD FFFD FFFD 6B28 FFFD 6B29 - FFFD FFFD FFFD FFFD 6B2A FFFD 6B2B 6B2C - 6B2D FFFD 6B2E FFFD 6B2F FFFD FFFD FFFD - 6B30 6B31 FFFD FFFD 6B32 6B33 6B34 6B35 - 6B36 FFFD FFFD FFFD FFFD FFFD FFFD 6B37 - FFFD FFFD FFFD 6B38 6B39 6B3A FFFD FFFD - FFFD FFFD FFFD 6B3B FFFD FFFD FFFD 6B3C - FFFD 6B3D 6B3E 6B3F FFFD FFFD FFFD 6B40 - 6B41 FFFD FFFD FFFD 6B42 6B43 6B44 FFFD - FFFD 6B45 6B46 FFFD 6B47 FFFD 6B48 FFFD - FFFD 6B49 6B50 6B4A 6B4B 6B4C FFFD FFFD - FFFD 6B4D FFFD FFFD FFFD FFFD 6B52 6B4E - 6B4F 6B51 FFFD FFFD 6B53 FFFD 6B54 FFFD - 6B55 FFFD FFFD 6B56 FFFD 6B57 FFFD FFFD - FFFD 6B58 -End of Item 00D2 - -Begin of Item 00D3 - Format 2 - srcBegin = 9CE6 - destBegin = 6B59 -End of Item 00D3 - -Begin of Item 00D4 - Format 1 - srcBegin = 9CF2 - srcEnd = 9D1E - mappingOffset = 41BC - Mapping = - 6B5A FFFD FFFD FFFD FFFD 6B5B FFFD 6B5C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6B5E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6B5D FFFD FFFD FFFD FFFD FFFD 6B5F - FFFD FFFD FFFD FFFD FFFD 6B60 6B61 FFFD - FFFD FFFD 6B62 6B63 6B64 -End of Item 00D4 - -Begin of Item 00D5 - Format 1 - srcBegin = 9D2F - srcEnd = 9E1D - mappingOffset = 41E9 - Mapping = - 6B65 6B66 FFFD 6B67 6B68 6B69 FFFD FFFD - FFFD FFFD FFFD 6B6A FFFD 6B6B 6B6D FFFD - FFFD FFFD FFFD 6B6E 6B6F FFFD 6B6C FFFD - 6B70 FFFD FFFD 6B71 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6B72 6B73 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6B74 FFFD FFFD 6B76 6B75 FFFD 6B77 FFFD - FFFD FFFD 6B78 6B79 6B7A FFFD FFFD FFFD - FFFD 6B7B FFFD FFFD FFFD FFFD FFFD 6B7C - 6B7D FFFD FFFD FFFD 6B7E 6C21 FFFD 6C22 - FFFD FFFD FFFD FFFD 6C23 6C24 FFFD 6C25 - FFFD FFFD FFFD 6C26 FFFD FFFD 6C27 6C28 - FFFD FFFD FFFD 6C29 6C2A FFFD 6C2B 6C2C - 6C2D 6C2E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6C2F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6C30 FFFD 6C31 FFFD 6C32 - FFFD FFFD 6C33 FFFD FFFD FFFD 6C34 FFFD - FFFD FFFD 6C35 FFFD FFFD 6C36 FFFD FFFD - 6C37 FFFD FFFD FFFD 6C38 FFFD FFFD FFFD - 6C39 FFFD 6C3A 6C3B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6C3C 6C3D 6C3E - 6C3F FFFD FFFD 6C40 FFFD FFFD FFFD 6C41 - 6C42 6C43 FFFD FFFD FFFD FFFD 6C44 FFFD - 6C45 FFFD 6C46 FFFD 6C47 FFFD FFFD 6C48 - FFFD 6C49 FFFD FFFD 6C4A 6C4B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6C4C - FFFD FFFD FFFD 6C4E FFFD FFFD FFFD FFFD - 6C4F FFFD FFFD 6C4D FFFD FFFD FFFD 6C50 - FFFD 6C51 6C52 6C53 FFFD FFFD 6C54 6C55 - FFFD FFFD 6C56 FFFD FFFD 6C57 6C58 -End of Item 00D5 - -Begin of Item 00D6 - Format 1 - srcBegin = 9E7A - srcEnd = 9EB5 - mappingOffset = 42D8 - Mapping = - 6C59 6C5A 6C5B FFFD FFFD FFFD 6C5C FFFD - 6C5D 6C5E 6C5F 6C60 FFFD 6C61 FFFD FFFD - FFFD FFFD FFFD FFFD 6C62 6C63 FFFD FFFD - FFFD FFFD FFFD FFFD 6C64 FFFD 6C65 FFFD - FFFD 6C66 FFFD FFFD 6C67 FFFD FFFD FFFD - FFFD FFFD 6C68 FFFD FFFD FFFD 6C69 FFFD - FFFD FFFD 6C6A FFFD 6C6B 6C6C 6C6D FFFD - FFFD 6C6E 6C6F 6C70 -End of Item 00D6 - -Begin of Item 00D7 - Format 1 - srcBegin = 9EC6 - srcEnd = 9F47 - mappingOffset = 4314 - Mapping = - 6C71 FFFD 6C72 FFFD FFFD 6C73 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6C74 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6C75 FFFD FFFD FFFD FFFD 6C76 FFFD - FFFD 6C77 FFFD FFFD FFFD FFFD 6C78 6C79 - 6C7A FFFD 6C7B 6C7C 6C7D FFFD FFFD 6C7E - FFFD FFFD 6D21 FFFD FFFD FFFD FFFD FFFD - FFFD 6D22 FFFD FFFD 6D23 6D24 FFFD FFFD - FFFD FFFD FFFD 6D25 FFFD FFFD FFFD FFFD - FFFD 6D26 6D27 6D28 6D29 FFFD 6D2A FFFD - 6D2B 6D2C FFFD 6D2D 6D2E 6D2F FFFD FFFD - FFFD 6D30 FFFD FFFD 6D31 FFFD FFFD FFFD - 6D32 FFFD FFFD FFFD 6D33 6D34 FFFD FFFD - FFFD 6D35 FFFD 6D36 6D37 FFFD 6D38 FFFD - FFFD 6D39 FFFD 6D3A 6D3B FFFD 6D3C 6D3D - FFFD 6D3E FFFD 6D3F FFFD 6D40 6D41 6D42 - 6D43 6D44 -End of Item 00D7 - -Begin of Item 00D8 - Format 1 - srcBegin = 9F53 - srcEnd = 9F7D - mappingOffset = 4396 - Mapping = - 6D45 FFFD 6D46 6D47 6D48 6D49 FFFD 6D4A - FFFD FFFD 6D4B 6D4C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6D4D 6D4E FFFD - FFFD FFFD 6D4F 6D50 6D51 6D52 6D53 FFFD - 6D54 FFFD 6D55 FFFD FFFD FFFD FFFD 6D56 - FFFD FFFD 6D57 -End of Item 00D8 - -Begin of Item 00D9 - Format 1 - srcBegin = 9F8F - srcEnd = 9FA5 - mappingOffset = 43C1 - Mapping = - 6D58 6D59 6D5A 6D5B FFFD 6D5C FFFD 6D5D - 6D5E FFFD FFFD FFFD FFFD FFFD FFFD 6D5F - FFFD FFFD 6D60 6D61 6D62 FFFD 6D63 -End of Item 00D9 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x00DA, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x003B, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x02C9, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x000A */ -/* Total of Format 1 : 0x00C7 */ -/* Total of Format 2 : 0x0009 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x1200, 0x1221, 0x1111, 0x1221, 0x1111, 0x1111, -0x1111, 0x1122, 0x1111, 0x2111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x003B Start of MapCell Array */ -/* 0000 */ 0x0402, 0x040C, 0x2742, -/* 0001 */ 0x0452, 0x045C, 0x2772, -/* 0002 */ 0x560D, 0x5612, 0x362D, -/* 0003 */ 0x7428, 0x7431, 0x4C2C, -/* 0004 */ 0x7579, 0x757E, 0x4D3D, -/* 0005 */ 0x76A2, 0x76A8, 0x4E3F, -/* 0006 */ 0x7C59, 0x7C5E, 0x5279, -/* 0007 */ 0x855C, 0x8562, 0x5949, -/* 0008 */ 0x8783, 0x8789, 0x5B38, -/* 0009 */ 0x91EC, 0x91F1, 0x632E, -/* 000A */ 0x007E, 0x0000, 0x2237, -/* 000B */ 0x00A1, 0x017E, 0x0000, -/* 000C */ 0x01CD, 0x01DC, 0x00DE, -/* 000D */ 0x01F5, 0x0000, 0x2B39, -/* 000E */ 0x02C7, 0x0000, 0x2230, -/* 000F */ 0x02D8, 0x02DD, 0x00EE, -/* 0010 */ 0x0384, 0x0390, 0x00F4, -/* 0011 */ 0x03AA, 0x03B0, 0x0101, -/* 0012 */ 0x03C2, 0x03CE, 0x0108, -/* 0013 */ 0x040E, 0x040F, 0x0115, -/* 0014 */ 0x045E, 0x045F, 0x0117, -/* 0015 */ 0x2116, 0x0000, 0x2271, -/* 0016 */ 0x2122, 0x0000, 0x226F, -/* 0017 */ 0x4E02, 0x4E12, 0x0119, -/* 0018 */ 0x4E1F, 0x4E7F, 0x012A, -/* 0019 */ 0x4E8D, 0x4E9D, 0x018B, -/* 001A */ 0x4EAF, 0x4EC3, 0x019C, -/* 001B */ 0x4ED0, 0x4F19, 0x01B1, -/* 001C */ 0x4F2E, 0x4F9F, 0x01FB, -/* 001D */ 0x4FB2, 0x4FE2, 0x026D, -/* 001E */ 0x4FF0, 0x5071, 0x029E, -/* 001F */ 0x5081, 0x5166, 0x0320, -/* 0020 */ 0x517E, 0x5205, 0x0406, -/* 0021 */ 0x5212, 0x5249, 0x048E, -/* 0022 */ 0x5255, 0x534C, 0x04C6, -/* 0023 */ 0x5359, 0x53E7, 0x05BE, -/* 0024 */ 0x53F5, 0x0000, 0x3463, -/* 0025 */ 0x5402, 0x0000, 0x3464, -/* 0026 */ 0x5413, 0x5435, 0x064D, -/* 0027 */ 0x5443, 0x544F, 0x0670, -/* 0028 */ 0x545E, 0x54CE, 0x067D, -/* 0029 */ 0x54E0, 0x5515, 0x06EE, -/* 002A */ 0x552A, 0x5566, 0x0724, -/* 002B */ 0x557F, 0x5597, 0x0761, -/* 002C */ 0x55A3, 0x55B2, 0x077A, -/* 002D */ 0x55BF, 0x55E9, 0x078A, -/* 002E */ 0x55F6, 0x560A, 0x07B5, -/* 002F */ 0x5619, 0x0000, 0x3633, -/* 0030 */ 0x562C, 0x5675, 0x07CA, -/* 0031 */ 0x5684, 0x5752, 0x0814, -/* 0032 */ 0x5762, 0x57AC, 0x08E3, -/* 0033 */ 0x57B8, 0x580D, 0x092E, -/* 0034 */ 0x581B, 0x5868, 0x0984, -/* 0035 */ 0x5878, 0x58F3, 0x09D2, -/* 0036 */ 0x5905, 0x5946, 0x0A4E, -/* 0037 */ 0x5952, 0x597C, 0x0A90, -/* 0038 */ 0x598B, 0x5A30, 0x0ABB, -/* 0039 */ 0x5A44, 0x5A7E, 0x0B61, -/* 003A */ 0x5A8B, 0x5B08, 0x0B9C, -/* 003B */ 0x5B17, 0x5B6F, 0x0C1A, -/* 003C */ 0x5B7C, 0x5B96, 0x0C73, -/* 003D */ 0x5BA8, 0x5BC1, 0x0C8E, -/* 003E */ 0x5BCD, 0x5BE0, 0x0CA8, -/* 003F */ 0x5BEF, 0x5BFD, 0x0CBC, -/* 0040 */ 0x5C0C, 0x5C36, 0x0CCB, -/* 0041 */ 0x5C59, 0x5CBA, 0x0CF6, -/* 0042 */ 0x5CC9, 0x5CDD, 0x0D58, -/* 0043 */ 0x5CEE, 0x5CF4, 0x0D6D, -/* 0044 */ 0x5D01, 0x5D12, 0x0D74, -/* 0045 */ 0x5D23, 0x5DE9, 0x0D86, -/* 0046 */ 0x5DF8, 0x5E70, 0x0E4D, -/* 0047 */ 0x5E80, 0x5E8E, 0x0EC6, -/* 0048 */ 0x5EA2, 0x5EEB, 0x0ED5, -/* 0049 */ 0x5F02, 0x5FB8, 0x0F1F, -/* 004A */ 0x5FC4, 0x6071, 0x0FD6, -/* 004B */ 0x607E, 0x60E5, 0x1084, -/* 004C */ 0x60F2, 0x6149, 0x10EC, -/* 004D */ 0x615E, 0x6160, 0x1144, -/* 004E */ 0x616C, 0x61C2, 0x1147, -/* 004F */ 0x61CE, 0x61EF, 0x119E, -/* 0050 */ 0x6201, 0x6207, 0x11C0, -/* 0051 */ 0x6213, 0x622B, 0x11C7, -/* 0052 */ 0x6239, 0x627D, 0x11E0, -/* 0053 */ 0x628D, 0x6290, 0x1225, -/* 0054 */ 0x62A6, 0x62DA, 0x1229, -/* 0055 */ 0x62EA, 0x6318, 0x125E, -/* 0056 */ 0x6329, 0x63AF, 0x128D, -/* 0057 */ 0x63BD, 0x63F9, 0x1314, -/* 0058 */ 0x6409, 0x643F, 0x1351, -/* 0059 */ 0x644B, 0x64D7, 0x1388, -/* 005A */ 0x64E4, 0x656B, 0x1415, -/* 005B */ 0x657A, 0x65DF, 0x149D, -/* 005C */ 0x65F0, 0x66EE, 0x1503, -/* 005D */ 0x66FA, 0x6722, 0x1602, -/* 005E */ 0x6733, 0x679B, 0x162B, -/* 005F */ 0x67B0, 0x67F9, 0x1694, -/* 0060 */ 0x6814, 0x685B, 0x16DE, -/* 0061 */ 0x686B, 0x6888, 0x1726, -/* 0062 */ 0x6896, 0x6917, 0x1744, -/* 0063 */ 0x6931, 0x6980, 0x17C6, -/* 0064 */ 0x698D, 0x6A03, 0x1816, -/* 0065 */ 0x6A0F, 0x6B85, 0x188D, -/* 0066 */ 0x6B97, 0x6C9F, 0x1A04, -/* 0067 */ 0x6CB0, 0x6CB4, 0x1B0D, -/* 0068 */ 0x6CC2, 0x6CF4, 0x1B12, -/* 0069 */ 0x6D04, 0x6D1A, 0x1B45, -/* 006A */ 0x6D26, 0x6D3F, 0x1B5C, -/* 006B */ 0x6D57, 0x6D70, 0x1B76, -/* 006C */ 0x6D7C, 0x6D98, 0x1B90, -/* 006D */ 0x6DAA, 0x6E04, 0x1BAD, -/* 006E */ 0x6E1E, 0x6E7D, 0x1C08, -/* 006F */ 0x6E8D, 0x6ECF, 0x1C68, -/* 0070 */ 0x6EEB, 0x6F3C, 0x1CAB, -/* 0071 */ 0x6F4F, 0x6F6C, 0x1CFD, -/* 0072 */ 0x6F7D, 0x6FCA, 0x1D1B, -/* 0073 */ 0x6FDA, 0x7023, 0x1D69, -/* 0074 */ 0x702F, 0x7086, 0x1DB3, -/* 0075 */ 0x7094, 0x70B7, 0x1E0B, -/* 0076 */ 0x70CA, 0x70E4, 0x1E2F, -/* 0077 */ 0x70FA, 0x710F, 0x1E4A, -/* 0078 */ 0x711E, 0x7168, 0x1E60, -/* 0079 */ 0x7179, 0x71A2, 0x1EAB, -/* 007A */ 0x71AF, 0x71DC, 0x1ED5, -/* 007B */ 0x71F8, 0x729B, 0x1F03, -/* 007C */ 0x72A8, 0x72E5, 0x1FA7, -/* 007D */ 0x72F3, 0x7426, 0x1FE5, -/* 007E */ 0x7439, 0x7472, 0x2119, -/* 007F */ 0x7480, 0x7506, 0x2153, -/* 0080 */ 0x7512, 0x7561, 0x21DA, -/* 0081 */ 0x756F, 0x7571, 0x222A, -/* 0082 */ 0x7581, 0x75A4, 0x222D, -/* 0083 */ 0x75B4, 0x7674, 0x2251, -/* 0084 */ 0x7681, 0x76AD, 0x2312, -/* 0085 */ 0x76BD, 0x7811, 0x233F, -/* 0086 */ 0x781D, 0x7837, 0x2494, -/* 0087 */ 0x7843, 0x786E, 0x24AF, -/* 0088 */ 0x787A, 0x787E, 0x24DB, -/* 0089 */ 0x788A, 0x797E, 0x24E0, -/* 008A */ 0x798B, 0x7ADB, 0x25D5, -/* 008B */ 0x7AE8, 0x7B07, 0x2726, -/* 008C */ 0x7B14, 0x7B77, 0x2746, -/* 008D */ 0x7B84, 0x7BDB, 0x27AA, -/* 008E */ 0x7BE8, 0x7C3A, 0x2802, -/* 008F */ 0x7C46, 0x7C55, 0x2855, -/* 0090 */ 0x7C61, 0x7CF5, 0x2865, -/* 0091 */ 0x7D03, 0x7E9E, 0x28FA, -/* 0092 */ 0x7F3B, 0x7F71, 0x2A96, -/* 0093 */ 0x7F7D, 0x7FCF, 0x2ACD, -/* 0094 */ 0x7FDB, 0x8044, 0x2B20, -/* 0095 */ 0x8060, 0x8075, 0x2B8A, -/* 0096 */ 0x8081, 0x808E, 0x2BA0, -/* 0097 */ 0x809C, 0x80AB, 0x2BAE, -/* 0098 */ 0x80B8, 0x80B9, 0x2BBE, -/* 0099 */ 0x80C8, 0x80E0, 0x2BC0, -/* 009A */ 0x80ED, 0x81A2, 0x2BD9, -/* 009B */ 0x81AE, 0x8203, 0x2C8F, -/* 009C */ 0x820F, 0x830B, 0x2CE5, -/* 009D */ 0x831B, 0x8357, 0x2DE2, -/* 009E */ 0x8370, 0x83AD, 0x2E1F, -/* 009F */ 0x83BE, 0x83EA, 0x2E5D, -/* 00A0 */ 0x83F6, 0x8419, 0x2E8A, -/* 00A1 */ 0x842F, 0x8439, 0x2EAE, -/* 00A2 */ 0x8445, 0x8485, 0x2EB9, -/* 00A3 */ 0x8492, 0x8510, 0x2EFA, -/* 00A4 */ 0x851C, 0x8629, 0x2F79, -/* 00A5 */ 0x8636, 0x8646, 0x3087, -/* 00A6 */ 0x8652, 0x867A, 0x3098, -/* 00A7 */ 0x8688, 0x86C5, 0x30C1, -/* 00A8 */ 0x86D1, 0x86E7, 0x30FF, -/* 00A9 */ 0x86FA, 0x877B, 0x3116, -/* 00AA */ 0x878B, 0x8880, 0x3198, -/* 00AB */ 0x8898, 0x88AA, 0x328E, -/* 00AC */ 0x88BA, 0x897D, 0x32A1, -/* 00AD */ 0x8989, 0x89BC, 0x3365, -/* 00AE */ 0x89D4, 0x89D8, 0x3399, -/* 00AF */ 0x89E5, 0x8A67, 0x339E, -/* 00B0 */ 0x8A75, 0x8ADF, 0x3421, -/* 00B1 */ 0x8AEC, 0x8B1F, 0x348C, -/* 00B2 */ 0x8B2D, 0x8B9F, 0x34C0, -/* 00B3 */ 0x8C38, 0x8CA4, 0x3533, -/* 00B4 */ 0x8CB9, 0x8D1B, 0x35A0, -/* 00B5 */ 0x8D65, 0x8D6E, 0x3603, -/* 00B6 */ 0x8D7F, 0x8EDC, 0x360D, -/* 00B7 */ 0x8EE8, 0x8F65, 0x376B, -/* 00B8 */ 0x8F9D, 0x8FA6, 0x37E9, -/* 00B9 */ 0x8FB5, 0x900C, 0x37F3, -/* 00BA */ 0x9018, 0x901B, 0x384B, -/* 00BB */ 0x9028, 0x904C, 0x384F, -/* 00BC */ 0x905B, 0x9079, 0x3874, -/* 00BD */ 0x9085, 0x91C5, 0x3893, -/* 00BE */ 0x91D3, 0x91EA, 0x39D4, -/* 00BF */ 0x91F7, 0x9337, 0x39EC, -/* 00C0 */ 0x9347, 0x93E7, 0x3B2D, -/* 00C1 */ 0x93F7, 0x941F, 0x3BCE, -/* 00C2 */ 0x942E, 0x9472, 0x3BF7, -/* 00C3 */ 0x9483, 0x9484, 0x3C3C, -/* 00C4 */ 0x9578, 0x958E, 0x3C3E, -/* 00C5 */ 0x959D, 0x95E6, 0x3C55, -/* 00C6 */ 0x961D, 0x9641, 0x3C9F, -/* 00C7 */ 0x9652, 0x9661, 0x3CC4, -/* 00C8 */ 0x966E, 0x96BA, 0x3CD4, -/* 00C9 */ 0x96CA, 0x9709, 0x3D21, -/* 00CA */ 0x971A, 0x9733, 0x3D61, -/* 00CB */ 0x9741, 0x9789, 0x3D7B, -/* 00CC */ 0x9795, 0x97FA, 0x3DC4, -/* 00CD */ 0x9807, 0x986C, 0x3E2A, -/* 00CE */ 0x98AB, 0x98CC, 0x3E90, -/* 00CF */ 0x98E1, 0x98F6, 0x3EB2, -/* 00D0 */ 0x9902, 0x9960, 0x3EC8, -/* 00D1 */ 0x999B, 0x9A5D, 0x3F27, -/* 00D2 */ 0x9AAA, 0x9C7B, 0x3FEA, -/* 00D3 */ 0x9CE6, 0x0000, 0x6B59, -/* 00D4 */ 0x9CF2, 0x9D1E, 0x41BC, -/* 00D5 */ 0x9D2F, 0x9E1D, 0x41E9, -/* 00D6 */ 0x9E7A, 0x9EB5, 0x42D8, -/* 00D7 */ 0x9EC6, 0x9F47, 0x4314, -/* 00D8 */ 0x9F53, 0x9F7D, 0x4396, -/* 00D9 */ 0x9F8F, 0x9FA5, 0x43C1, -/*-------------------------------------------------------*/ -/* Offset=0x02C9 Start of MappingTable */ - -/* 0000 */ 0x2242, 0xFFFD, 0xFFFD, 0x2270, 0xFFFD, 0x2243, 0xFFFD, 0xFFFD, -/* 0008 */ 0x226D, 0x226C, 0xFFFD, 0xFFFD, 0xFFFD, 0x226E, 0x2234, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2231, -/* 0018 */ 0xFFFD, 0x226B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2244, 0x2A22, -/* 0020 */ 0x2A21, 0x2A24, 0x2A2A, 0x2A23, 0x2A29, 0x2921, 0x2A2E, 0x2A32, -/* 0028 */ 0x2A31, 0x2A34, 0x2A33, 0x2A40, 0x2A3F, 0x2A42, 0x2A41, 0xFFFD, -/* 0030 */ 0x2A50, 0x2A52, 0x2A51, 0x2A54, 0x2A58, 0x2A53, 0xFFFD, 0x292C, -/* 0038 */ 0x2A63, 0x2A62, 0x2A65, 0x2A64, 0x2A72, 0x2930, 0x294E, 0x2B22, -/* 0040 */ 0x2B21, 0x2B24, 0x2B2A, 0x2B23, 0x2B29, 0x2941, 0x2B2E, 0x2B32, -/* 0048 */ 0x2B31, 0x2B34, 0x2B33, 0x2B40, 0x2B3F, 0x2B42, 0x2B41, 0x2943, -/* 0050 */ 0x2B50, 0x2B52, 0x2B51, 0x2B54, 0x2B58, 0x2B53, 0xFFFD, 0x294C, -/* 0058 */ 0x2B63, 0x2B62, 0x2B65, 0x2B64, 0x2B72, 0x2950, 0x2B73, 0x2A27, -/* 0060 */ 0x2B27, 0x2A25, 0x2B25, 0x2A28, 0x2B28, 0x2A2B, 0x2B2B, 0x2A2C, -/* 0068 */ 0x2B2C, 0x2A2F, 0x2B2F, 0x2A2D, 0x2B2D, 0x2A30, 0x2B30, 0x2922, -/* 0070 */ 0x2942, 0x2A37, 0x2B37, 0xFFFD, 0xFFFD, 0x2A36, 0x2B36, 0x2A38, -/* 0078 */ 0x2B38, 0x2A35, 0x2B35, 0x2A3A, 0x2B3A, 0x2A3B, 0x2B3B, 0x2A3D, -/* 0080 */ 0x2B3D, 0x2A3C, 0xFFFD, 0x2A3E, 0x2B3E, 0x2924, 0x2944, 0x2A47, -/* 0088 */ 0x2B47, 0x2A45, 0x2B45, 0xFFFD, 0xFFFD, 0x2A46, 0x2B46, 0x2A44, -/* 0090 */ 0x2945, 0x2926, 0x2946, 0x2A48, 0x2B48, 0x2A49, 0x2B49, 0x2947, -/* 0098 */ 0x2A4A, 0x2B4A, 0x2A4C, 0x2B4C, 0x2A4B, 0x2B4B, 0x2929, 0x2949, -/* 00A0 */ 0x2928, 0x2948, 0x2A4D, 0x2B4D, 0x2A4F, 0x2B4F, 0x2A4E, 0x2B4E, -/* 00A8 */ 0x294A, 0x292B, 0x294B, 0x2A57, 0x2B57, 0xFFFD, 0xFFFD, 0x2A56, -/* 00B0 */ 0x2B56, 0x292D, 0x294D, 0x2A59, 0x2B59, 0x2A5B, 0x2B5B, 0x2A5A, -/* 00B8 */ 0x2B5A, 0x2A5C, 0x2B5C, 0x2A5D, 0x2B5D, 0x2A5F, 0x2B5F, 0x2A5E, -/* 00C0 */ 0x2B5E, 0x2A61, 0x2B61, 0x2A60, 0x2B60, 0x292F, 0x294F, 0x2A6C, -/* 00C8 */ 0x2B6C, 0x2A69, 0x2B69, 0x2A66, 0x2B66, 0x2A6B, 0x2B6B, 0x2A68, -/* 00D0 */ 0x2B68, 0x2A6A, 0x2B6A, 0x2A71, 0x2B71, 0x2A74, 0x2B74, 0x2A73, -/* 00D8 */ 0x2A75, 0x2B75, 0x2A77, 0x2B77, 0x2A76, 0x2B76, 0x2A26, 0x2B26, -/* 00E0 */ 0x2A43, 0x2B43, 0x2A55, 0x2B55, 0x2A67, 0x2B67, 0x2A70, 0x2B70, -/* 00E8 */ 0x2A6D, 0x2B6D, 0x2A6F, 0x2B6F, 0x2A6E, 0x2B6E, 0x222F, 0x2232, -/* 00F0 */ 0x2236, 0x2235, 0xFFFD, 0x2233, 0x2238, 0x2239, 0x2661, 0xFFFD, -/* 00F8 */ 0x2662, 0x2663, 0x2664, 0xFFFD, 0x2667, 0xFFFD, 0x2669, 0x266C, -/* 0100 */ 0x2676, 0x2665, 0x266A, 0x2671, 0x2672, 0x2673, 0x2674, 0x267B, -/* 0108 */ 0x2678, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0110 */ 0x2675, 0x267A, 0x2677, 0x2679, 0x267C, 0x274D, 0x274E, 0x277D, -/* 0118 */ 0x277E, 0x3021, 0xFFFD, 0x3022, 0x3023, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3024, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0128 */ 0xFFFD, 0x3025, 0x3026, 0xFFFD, 0xFFFD, 0xFFFD, 0x3027, 0x3028, -/* 0130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3029, 0xFFFD, 0xFFFD, 0x302A, 0xFFFD, -/* 0138 */ 0xFFFD, 0x302B, 0x302C, 0x302D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0140 */ 0x302E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x302F, 0x3030, 0xFFFD, 0xFFFD, 0x3031, -/* 0150 */ 0xFFFD, 0xFFFD, 0x3032, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3033, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3034, 0xFFFD, 0x3035, -/* 0168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3036, 0xFFFD, -/* 0170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3037, 0x3038, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3039, -/* 0180 */ 0x303A, 0xFFFD, 0xFFFD, 0xFFFD, 0x303B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0188 */ 0xFFFD, 0xFFFD, 0x303C, 0x303D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x303E, 0x303F, 0xFFFD, 0xFFFD, -/* 0198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3040, 0x3041, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3042, 0xFFFD, -/* 01A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B0 */ 0x3043, 0x3044, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3045, 0x3046, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01C0 */ 0xFFFD, 0x3047, 0x3048, 0x3049, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01C8 */ 0xFFFD, 0x304A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01D0 */ 0x304B, 0xFFFD, 0x304C, 0xFFFD, 0x304D, 0xFFFD, 0x304E, 0xFFFD, -/* 01D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x304F, 0x3050, -/* 01E0 */ 0x3051, 0x3052, 0xFFFD, 0x3053, 0x3054, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E8 */ 0xFFFD, 0x3055, 0xFFFD, 0xFFFD, 0x3056, 0x3057, 0xFFFD, 0xFFFD, -/* 01F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3058, 0xFFFD, 0xFFFD, 0x3059, 0x305A, -/* 01F8 */ 0x305B, 0xFFFD, 0x305C, 0x305D, 0xFFFD, 0xFFFD, 0x305E, 0xFFFD, -/* 0200 */ 0x3060, 0xFFFD, 0x3061, 0xFFFD, 0x3062, 0xFFFD, 0x3063, 0xFFFD, -/* 0208 */ 0x3064, 0xFFFD, 0xFFFD, 0x3065, 0xFFFD, 0x3066, 0xFFFD, 0x3067, -/* 0210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3068, 0x3069, 0xFFFD, -/* 0218 */ 0x306A, 0x306B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x306C, -/* 0220 */ 0xFFFD, 0x306D, 0xFFFD, 0x306E, 0xFFFD, 0x306F, 0xFFFD, 0xFFFD, -/* 0228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3070, 0x305F, 0xFFFD, 0xFFFD, -/* 0230 */ 0x3071, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3072, -/* 0238 */ 0xFFFD, 0x3073, 0xFFFD, 0x3074, 0xFFFD, 0xFFFD, 0x3075, 0xFFFD, -/* 0240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3076, 0x3077, 0x3078, 0x3079, -/* 0248 */ 0xFFFD, 0xFFFD, 0x307A, 0x307B, 0xFFFD, 0xFFFD, 0x307C, 0x307D, -/* 0250 */ 0xFFFD, 0x307E, 0x3121, 0xFFFD, 0xFFFD, 0xFFFD, 0x3122, 0x3123, -/* 0258 */ 0xFFFD, 0x3124, 0xFFFD, 0x3125, 0xFFFD, 0x3126, 0xFFFD, 0x3127, -/* 0260 */ 0x3128, 0x3129, 0xFFFD, 0xFFFD, 0x312A, 0xFFFD, 0x312B, 0x312C, -/* 0268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x312D, 0x312E, 0x312F, 0xFFFD, 0xFFFD, -/* 0270 */ 0xFFFD, 0xFFFD, 0x3130, 0xFFFD, 0x3131, 0xFFFD, 0x3132, 0x3133, -/* 0278 */ 0x3134, 0x3135, 0xFFFD, 0x3136, 0x3137, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0280 */ 0x3138, 0x3139, 0xFFFD, 0x313A, 0x313B, 0xFFFD, 0x313C, 0x313D, -/* 0288 */ 0x313E, 0xFFFD, 0x313F, 0xFFFD, 0xFFFD, 0x3140, 0xFFFD, 0xFFFD, -/* 0290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3141, -/* 0298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3142, 0xFFFD, 0x3143, 0x3144, 0xFFFD, -/* 02A0 */ 0x3145, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02A8 */ 0xFFFD, 0xFFFD, 0x3146, 0x3147, 0xFFFD, 0x3148, 0x3149, 0x314A, -/* 02B0 */ 0xFFFD, 0xFFFD, 0x314B, 0xFFFD, 0xFFFD, 0x314C, 0xFFFD, 0xFFFD, -/* 02B8 */ 0x314D, 0xFFFD, 0x314E, 0xFFFD, 0x314F, 0xFFFD, 0x3150, 0xFFFD, -/* 02C0 */ 0xFFFD, 0x3151, 0xFFFD, 0xFFFD, 0xFFFD, 0x3152, 0x3153, 0xFFFD, -/* 02C8 */ 0xFFFD, 0x3154, 0x3155, 0x3156, 0x3157, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02D0 */ 0x3158, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3159, 0xFFFD, 0xFFFD, -/* 02D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x315A, 0xFFFD, 0x315B, 0xFFFD, -/* 02E0 */ 0x315C, 0x315D, 0xFFFD, 0x315E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02E8 */ 0xFFFD, 0x3176, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x315F, 0x3160, -/* 02F0 */ 0x3161, 0xFFFD, 0xFFFD, 0x3162, 0x3163, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02F8 */ 0x3164, 0xFFFD, 0x3165, 0xFFFD, 0x3166, 0xFFFD, 0xFFFD, 0x3167, -/* 0300 */ 0x3168, 0x3169, 0xFFFD, 0xFFFD, 0xFFFD, 0x316A, 0xFFFD, 0x316B, -/* 0308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x316C, 0x316D, 0xFFFD, -/* 0310 */ 0x316E, 0x316F, 0xFFFD, 0xFFFD, 0x3170, 0x3171, 0xFFFD, 0xFFFD, -/* 0318 */ 0x3172, 0xFFFD, 0xFFFD, 0x3173, 0xFFFD, 0xFFFD, 0x3174, 0x3175, -/* 0320 */ 0x3177, 0xFFFD, 0x3178, 0x3179, 0xFFFD, 0x317A, 0xFFFD, 0xFFFD, -/* 0328 */ 0xFFFD, 0x317B, 0xFFFD, 0xFFFD, 0xFFFD, 0x317C, 0x317D, 0x317E, -/* 0330 */ 0xFFFD, 0x3221, 0x3222, 0x3223, 0xFFFD, 0x3224, 0xFFFD, 0xFFFD, -/* 0338 */ 0xFFFD, 0xFFFD, 0x3225, 0x3226, 0xFFFD, 0x3227, 0x3228, 0x3229, -/* 0340 */ 0x322A, 0x322B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0348 */ 0xFFFD, 0x322C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x322D, 0x322E, -/* 0350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0358 */ 0x322F, 0x3230, 0xFFFD, 0xFFFD, 0x3231, 0xFFFD, 0xFFFD, 0x3232, -/* 0360 */ 0xFFFD, 0xFFFD, 0x3233, 0x3234, 0xFFFD, 0xFFFD, 0x3235, 0xFFFD, -/* 0368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3236, 0xFFFD, 0x3237, 0xFFFD, 0x3238, -/* 0370 */ 0xFFFD, 0xFFFD, 0x3239, 0x323A, 0xFFFD, 0xFFFD, 0xFFFD, 0x323B, -/* 0378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x323C, 0x323D, 0xFFFD, 0x323E, 0xFFFD, -/* 0380 */ 0xFFFD, 0x323F, 0xFFFD, 0x3240, 0xFFFD, 0x3241, 0xFFFD, 0x3242, -/* 0388 */ 0x3243, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3244, 0xFFFD, -/* 0390 */ 0x3245, 0x3251, 0xFFFD, 0xFFFD, 0xFFFD, 0x3246, 0xFFFD, 0xFFFD, -/* 0398 */ 0xFFFD, 0x3247, 0xFFFD, 0xFFFD, 0xFFFD, 0x3248, 0xFFFD, 0xFFFD, -/* 03A0 */ 0xFFFD, 0xFFFD, 0x3249, 0xFFFD, 0xFFFD, 0x324A, 0x324B, 0x324C, -/* 03A8 */ 0xFFFD, 0xFFFD, 0x324D, 0x324E, 0x324F, 0x3250, 0xFFFD, 0x3252, -/* 03B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3253, 0xFFFD, -/* 03B8 */ 0x3254, 0xFFFD, 0x3255, 0x3256, 0x3257, 0x3258, 0xFFFD, 0xFFFD, -/* 03C0 */ 0xFFFD, 0xFFFD, 0x3259, 0xFFFD, 0xFFFD, 0xFFFD, 0x325A, 0x325B, -/* 03C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x325C, 0x325D, 0xFFFD, 0x325E, 0xFFFD, -/* 03D0 */ 0x325F, 0xFFFD, 0x3260, 0x3261, 0x3262, 0xFFFD, 0xFFFD, 0x3263, -/* 03D8 */ 0x3264, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03E0 */ 0xFFFD, 0x3265, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03E8 */ 0xFFFD, 0x3266, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3267, 0xFFFD, -/* 03F0 */ 0xFFFD, 0xFFFD, 0x3268, 0xFFFD, 0x3269, 0xFFFD, 0x326A, 0x326B, -/* 03F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x326C, 0xFFFD, -/* 0400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x326D, 0xFFFD, 0x326E, 0x326F, 0xFFFD, -/* 0408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3270, 0x3271, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3272, 0xFFFD, 0xFFFD, 0x3273, 0xFFFD, -/* 0418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0420 */ 0x3274, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3275, 0xFFFD, 0xFFFD, -/* 0428 */ 0xFFFD, 0x3276, 0xFFFD, 0x3277, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0430 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3278, 0xFFFD, 0xFFFD, -/* 0438 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0440 */ 0x3279, 0xFFFD, 0x327A, 0xFFFD, 0x327B, 0xFFFD, 0x327C, 0x327D, -/* 0448 */ 0xFFFD, 0xFFFD, 0x327E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0450 */ 0x3321, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3322, -/* 0458 */ 0xFFFD, 0x3323, 0x3324, 0x3325, 0xFFFD, 0x3326, 0xFFFD, 0xFFFD, -/* 0460 */ 0x3327, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3328, 0xFFFD, -/* 0468 */ 0xFFFD, 0xFFFD, 0x3329, 0xFFFD, 0xFFFD, 0x332A, 0xFFFD, 0xFFFD, -/* 0470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x332B, 0xFFFD, -/* 0478 */ 0xFFFD, 0xFFFD, 0x332C, 0x332D, 0x332E, 0xFFFD, 0xFFFD, 0x332F, -/* 0480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0488 */ 0xFFFD, 0x3330, 0x3331, 0xFFFD, 0xFFFD, 0x3332, 0x3333, 0x3334, -/* 0490 */ 0xFFFD, 0x3335, 0x3336, 0xFFFD, 0x3337, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3338, 0xFFFD, -/* 04A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3339, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x333A, 0x333B, 0xFFFD, -/* 04B0 */ 0xFFFD, 0x333C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04B8 */ 0x333D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04C0 */ 0xFFFD, 0x333E, 0xFFFD, 0xFFFD, 0xFFFD, 0x333F, 0x3340, 0xFFFD, -/* 04C8 */ 0x3341, 0x3342, 0xFFFD, 0x3343, 0xFFFD, 0x3344, 0xFFFD, 0xFFFD, -/* 04D0 */ 0x3345, 0x3346, 0x3347, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3348, -/* 04D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3349, -/* 04E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04E8 */ 0x334A, 0x334B, 0x334C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04F0 */ 0xFFFD, 0x334D, 0xFFFD, 0x334E, 0xFFFD, 0xFFFD, 0x334F, 0xFFFD, -/* 04F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3350, 0xFFFD, 0x3351, 0xFFFD, 0xFFFD, -/* 0500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3352, 0xFFFD, 0x3353, 0x3354, -/* 0508 */ 0x3355, 0x3356, 0xFFFD, 0x3357, 0xFFFD, 0x3358, 0xFFFD, 0xFFFD, -/* 0510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3359, 0x335A, 0x335B, -/* 0518 */ 0x335C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0520 */ 0x335D, 0x335E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x335F, -/* 0528 */ 0x3360, 0x3361, 0xFFFD, 0x3362, 0x3363, 0xFFFD, 0x3364, 0xFFFD, -/* 0530 */ 0xFFFD, 0x3365, 0xFFFD, 0xFFFD, 0xFFFD, 0x3366, 0xFFFD, 0x3367, -/* 0538 */ 0xFFFD, 0x3368, 0xFFFD, 0xFFFD, 0xFFFD, 0x3369, 0xFFFD, 0xFFFD, -/* 0540 */ 0x336A, 0xFFFD, 0x336B, 0xFFFD, 0xFFFD, 0x336C, 0xFFFD, 0x336D, -/* 0548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x336E, 0x336F, 0xFFFD, 0xFFFD, -/* 0550 */ 0xFFFD, 0xFFFD, 0x3370, 0xFFFD, 0xFFFD, 0xFFFD, 0x3371, 0xFFFD, -/* 0558 */ 0xFFFD, 0x3372, 0x3373, 0x3374, 0xFFFD, 0x3375, 0xFFFD, 0xFFFD, -/* 0560 */ 0xFFFD, 0x3376, 0x3377, 0xFFFD, 0xFFFD, 0x3378, 0xFFFD, 0x3379, -/* 0568 */ 0x337A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0570 */ 0xFFFD, 0x337B, 0xFFFD, 0xFFFD, 0x337C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x337D, 0x337E, 0x3421, 0xFFFD, 0xFFFD, -/* 0580 */ 0xFFFD, 0xFFFD, 0x3422, 0xFFFD, 0x3423, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0588 */ 0xFFFD, 0x3424, 0xFFFD, 0xFFFD, 0x3425, 0x3426, 0xFFFD, 0x3427, -/* 0590 */ 0x3428, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3429, 0xFFFD, -/* 0598 */ 0x342A, 0x342B, 0x342C, 0xFFFD, 0x342D, 0x342E, 0x342F, 0xFFFD, -/* 05A0 */ 0xFFFD, 0x3430, 0xFFFD, 0x3431, 0xFFFD, 0xFFFD, 0x3432, 0xFFFD, -/* 05A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3433, 0x3434, 0x3435, -/* 05B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3436, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3438, 0x3437, 0x3439, 0xFFFD, -/* 05C0 */ 0x343A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x343B, 0xFFFD, -/* 05C8 */ 0x343C, 0xFFFD, 0x343D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05D0 */ 0xFFFD, 0x343E, 0x343F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3440, -/* 05D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3441, 0xFFFD, -/* 05E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3442, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05E8 */ 0x3443, 0xFFFD, 0xFFFD, 0xFFFD, 0x3444, 0x3445, 0xFFFD, 0xFFFD, -/* 05F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3446, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05F8 */ 0x3447, 0x3448, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3449, 0xFFFD, -/* 0600 */ 0xFFFD, 0xFFFD, 0x344A, 0xFFFD, 0xFFFD, 0xFFFD, 0x344B, 0xFFFD, -/* 0608 */ 0xFFFD, 0x344C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x344D, -/* 0610 */ 0x344E, 0xFFFD, 0xFFFD, 0xFFFD, 0x344F, 0xFFFD, 0xFFFD, 0x3450, -/* 0618 */ 0xFFFD, 0x3451, 0x3452, 0xFFFD, 0x3453, 0x3454, 0xFFFD, 0x3455, -/* 0620 */ 0xFFFD, 0xFFFD, 0x3456, 0xFFFD, 0xFFFD, 0x3457, 0xFFFD, 0xFFFD, -/* 0628 */ 0xFFFD, 0xFFFD, 0x3458, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3459, 0xFFFD, 0xFFFD, 0x345A, -/* 0638 */ 0x345B, 0xFFFD, 0x345C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x345D, -/* 0640 */ 0xFFFD, 0xFFFD, 0x345E, 0x345F, 0xFFFD, 0x3460, 0xFFFD, 0xFFFD, -/* 0648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3461, 0x3462, 0x3465, 0xFFFD, 0xFFFD, -/* 0650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3466, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3467, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0660 */ 0xFFFD, 0x3468, 0x3469, 0xFFFD, 0x346A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0668 */ 0xFFFD, 0x346B, 0xFFFD, 0x346C, 0xFFFD, 0xFFFD, 0x346D, 0x346E, -/* 0670 */ 0x346F, 0x3470, 0xFFFD, 0xFFFD, 0x3471, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0678 */ 0xFFFD, 0xFFFD, 0x3472, 0xFFFD, 0x3473, 0x3474, 0xFFFD, 0xFFFD, -/* 0680 */ 0xFFFD, 0x3475, 0xFFFD, 0x3476, 0xFFFD, 0x3477, 0x3478, 0xFFFD, -/* 0688 */ 0x3479, 0xFFFD, 0x347A, 0xFFFD, 0x347B, 0x347C, 0xFFFD, 0xFFFD, -/* 0690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x347D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x347E, 0xFFFD, -/* 06A0 */ 0x3521, 0xFFFD, 0x3522, 0xFFFD, 0x3523, 0xFFFD, 0xFFFD, 0x3524, -/* 06A8 */ 0x3525, 0xFFFD, 0xFFFD, 0xFFFD, 0x3526, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06B0 */ 0x3527, 0xFFFD, 0xFFFD, 0xFFFD, 0x3528, 0x3529, 0xFFFD, 0xFFFD, -/* 06B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x352A, 0xFFFD, 0xFFFD, 0x352B, 0xFFFD, -/* 06C0 */ 0x352C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x352D, 0x352E, 0xFFFD, -/* 06C8 */ 0x352F, 0x3530, 0xFFFD, 0xFFFD, 0x3531, 0x3532, 0xFFFD, 0xFFFD, -/* 06D0 */ 0x3533, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3534, 0xFFFD, -/* 06D8 */ 0x3535, 0x3536, 0x3537, 0xFFFD, 0xFFFD, 0xFFFD, 0x3538, 0xFFFD, -/* 06E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3539, 0xFFFD, 0xFFFD, -/* 06E8 */ 0xFFFD, 0x353A, 0xFFFD, 0xFFFD, 0x353B, 0x353C, 0x353D, 0xFFFD, -/* 06F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06F8 */ 0x353E, 0xFFFD, 0x353F, 0xFFFD, 0xFFFD, 0x3540, 0xFFFD, 0xFFFD, -/* 0700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3541, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0708 */ 0xFFFD, 0xFFFD, 0x3542, 0xFFFD, 0x3543, 0x3544, 0x3545, 0x3546, -/* 0710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3547, 0xFFFD, 0xFFFD, 0x3548, 0x3549, -/* 0718 */ 0xFFFD, 0xFFFD, 0x354A, 0x354B, 0x354C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x354D, 0x354E, 0x354F, 0xFFFD, 0xFFFD, -/* 0728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3550, 0xFFFD, 0xFFFD, 0x3551, -/* 0730 */ 0x3552, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3553, 0x3554, 0x3555, -/* 0738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3556, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0740 */ 0xFFFD, 0x3557, 0xFFFD, 0x3558, 0x3559, 0xFFFD, 0xFFFD, 0x355A, -/* 0748 */ 0xFFFD, 0xFFFD, 0x355B, 0x355C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0750 */ 0xFFFD, 0xFFFD, 0x355D, 0xFFFD, 0x355E, 0x355F, 0xFFFD, 0xFFFD, -/* 0758 */ 0x3560, 0xFFFD, 0x3561, 0x3562, 0xFFFD, 0xFFFD, 0x3563, 0xFFFD, -/* 0760 */ 0x3564, 0x3565, 0xFFFD, 0x3566, 0x3567, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0768 */ 0x3568, 0xFFFD, 0x3569, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0770 */ 0x356A, 0x356B, 0xFFFD, 0x356C, 0x356D, 0x356E, 0x356F, 0xFFFD, -/* 0778 */ 0xFFFD, 0x3570, 0x3571, 0x3572, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3573, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0788 */ 0xFFFD, 0x3574, 0x3575, 0xFFFD, 0x3576, 0xFFFD, 0x3577, 0xFFFD, -/* 0790 */ 0xFFFD, 0x3578, 0xFFFD, 0xFFFD, 0x3579, 0xFFFD, 0x357A, 0x357B, -/* 0798 */ 0xFFFD, 0x357C, 0xFFFD, 0xFFFD, 0x357D, 0x357E, 0x3621, 0xFFFD, -/* 07A0 */ 0xFFFD, 0xFFFD, 0x3622, 0x3623, 0xFFFD, 0xFFFD, 0x3624, 0xFFFD, -/* 07A8 */ 0xFFFD, 0x3625, 0xFFFD, 0xFFFD, 0xFFFD, 0x3626, 0xFFFD, 0xFFFD, -/* 07B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3627, 0x3628, 0xFFFD, 0xFFFD, -/* 07B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3629, 0xFFFD, -/* 07C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x362A, 0xFFFD, 0xFFFD, 0x362B, -/* 07C8 */ 0xFFFD, 0x362C, 0x3634, 0xFFFD, 0xFFFD, 0xFFFD, 0x3635, 0xFFFD, -/* 07D0 */ 0xFFFD, 0x3636, 0xFFFD, 0x3637, 0xFFFD, 0x3638, 0xFFFD, 0x3639, -/* 07D8 */ 0xFFFD, 0x363A, 0x363B, 0x363C, 0xFFFD, 0x363D, 0x363E, 0x363F, -/* 07E0 */ 0xFFFD, 0x3640, 0x3641, 0xFFFD, 0x3642, 0xFFFD, 0xFFFD, 0x3643, -/* 07E8 */ 0xFFFD, 0x3644, 0xFFFD, 0x3645, 0xFFFD, 0x3646, 0xFFFD, 0xFFFD, -/* 07F0 */ 0xFFFD, 0xFFFD, 0x3647, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3648, 0xFFFD, 0x3649, 0x364A, -/* 0800 */ 0x364B, 0x364C, 0xFFFD, 0xFFFD, 0x364D, 0xFFFD, 0xFFFD, 0x364E, -/* 0808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x364F, 0xFFFD, 0x3650, 0xFFFD, 0x3651, -/* 0810 */ 0x3652, 0xFFFD, 0xFFFD, 0x3653, 0x3654, 0x3655, 0xFFFD, 0xFFFD, -/* 0818 */ 0x3656, 0xFFFD, 0xFFFD, 0x3657, 0x3658, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3659, 0xFFFD, 0xFFFD, -/* 0828 */ 0xFFFD, 0x365A, 0x365B, 0xFFFD, 0xFFFD, 0x365C, 0x365D, 0x365E, -/* 0830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x365F, 0x3660, -/* 0838 */ 0x3661, 0x3662, 0xFFFD, 0x3663, 0x3664, 0x3665, 0xFFFD, 0xFFFD, -/* 0840 */ 0xFFFD, 0x3666, 0xFFFD, 0x3667, 0xFFFD, 0xFFFD, 0xFFFD, 0x3668, -/* 0848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3669, 0xFFFD, -/* 0850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x366A, 0xFFFD, 0xFFFD, -/* 0858 */ 0xFFFD, 0x366B, 0x366C, 0x366D, 0x3670, 0x3671, 0xFFFD, 0x366E, -/* 0860 */ 0x366F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0868 */ 0xFFFD, 0x3672, 0xFFFD, 0xFFFD, 0x3673, 0x3674, 0xFFFD, 0x3675, -/* 0870 */ 0xFFFD, 0x3676, 0xFFFD, 0xFFFD, 0x3677, 0x3678, 0x3679, 0x367A, -/* 0878 */ 0x367B, 0xFFFD, 0xFFFD, 0x367D, 0xFFFD, 0x367E, 0xFFFD, 0xFFFD, -/* 0880 */ 0xFFFD, 0x367C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3721, 0x3722, -/* 0888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0890 */ 0xFFFD, 0x3723, 0x3724, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3725, -/* 0898 */ 0xFFFD, 0xFFFD, 0x3726, 0xFFFD, 0x3727, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08A0 */ 0xFFFD, 0x3728, 0xFFFD, 0xFFFD, 0xFFFD, 0x3729, 0xFFFD, 0xFFFD, -/* 08A8 */ 0xFFFD, 0xFFFD, 0x372A, 0x372B, 0xFFFD, 0x372C, 0xFFFD, 0xFFFD, -/* 08B0 */ 0x372D, 0xFFFD, 0x372E, 0x372F, 0x3730, 0x3731, 0xFFFD, 0xFFFD, -/* 08B8 */ 0xFFFD, 0x3732, 0x3733, 0xFFFD, 0x3734, 0xFFFD, 0x3735, 0x3736, -/* 08C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3737, 0x3738, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3739, 0x373A, 0x373B, -/* 08D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x373C, 0x373D, 0xFFFD, -/* 08D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x373E, 0x373F, 0xFFFD, 0xFFFD, -/* 08E0 */ 0xFFFD, 0xFFFD, 0x3740, 0x3741, 0xFFFD, 0xFFFD, 0x3742, 0xFFFD, -/* 08E8 */ 0x3743, 0x3744, 0xFFFD, 0xFFFD, 0x3745, 0xFFFD, 0x3746, 0x3747, -/* 08F0 */ 0x3748, 0x3749, 0x374A, 0xFFFD, 0x374B, 0x374C, 0x374D, 0xFFFD, -/* 08F8 */ 0x374E, 0xFFFD, 0x374F, 0x3750, 0x3751, 0x3752, 0xFFFD, 0x3753, -/* 0900 */ 0xFFFD, 0xFFFD, 0x3754, 0xFFFD, 0x3755, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3756, 0xFFFD, 0xFFFD, -/* 0910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3757, 0x3760, 0xFFFD, -/* 0918 */ 0x3758, 0xFFFD, 0x3759, 0x375A, 0xFFFD, 0x375B, 0x375C, 0x375D, -/* 0920 */ 0x375E, 0xFFFD, 0x375F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0928 */ 0x3761, 0x3762, 0x3763, 0xFFFD, 0xFFFD, 0x3764, 0x3765, 0xFFFD, -/* 0930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3766, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3767, 0x3768, 0xFFFD, -/* 0940 */ 0xFFFD, 0xFFFD, 0x3769, 0xFFFD, 0xFFFD, 0x376A, 0xFFFD, 0xFFFD, -/* 0948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x376B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x376C, 0x376D, 0xFFFD, 0xFFFD, 0x377E, -/* 0958 */ 0xFFFD, 0xFFFD, 0x376E, 0xFFFD, 0x376F, 0x3770, 0xFFFD, 0x3771, -/* 0960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3772, 0xFFFD, 0xFFFD, 0x3773, 0xFFFD, -/* 0968 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3774, 0x3775, 0xFFFD, 0x3776, 0xFFFD, -/* 0970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3777, 0x3778, 0x3779, 0xFFFD, 0xFFFD, -/* 0978 */ 0xFFFD, 0x377A, 0x377B, 0xFFFD, 0xFFFD, 0xFFFD, 0x377C, 0x377D, -/* 0980 */ 0xFFFD, 0xFFFD, 0x3821, 0x3822, 0x3823, 0xFFFD, 0xFFFD, 0x3824, -/* 0988 */ 0x3825, 0x3826, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3827, -/* 0990 */ 0x3828, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3829, 0xFFFD, -/* 0998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x382A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09A0 */ 0xFFFD, 0xFFFD, 0x382B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09A8 */ 0x382C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09B0 */ 0xFFFD, 0xFFFD, 0x382D, 0xFFFD, 0xFFFD, 0x382E, 0x382F, 0xFFFD, -/* 09B8 */ 0x3830, 0x3831, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3832, 0xFFFD, -/* 09C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09C8 */ 0x3833, 0xFFFD, 0x3834, 0xFFFD, 0xFFFD, 0x3835, 0xFFFD, 0xFFFD, -/* 09D0 */ 0x3836, 0x3837, 0x3838, 0xFFFD, 0xFFFD, 0xFFFD, 0x3839, 0xFFFD, -/* 09D8 */ 0xFFFD, 0x383A, 0x383B, 0x383C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09E0 */ 0xFFFD, 0x383D, 0x383E, 0x383F, 0x3840, 0xFFFD, 0x3841, 0x3842, -/* 09E8 */ 0xFFFD, 0x3843, 0x3844, 0xFFFD, 0xFFFD, 0xFFFD, 0x3845, 0xFFFD, -/* 09F0 */ 0x3846, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3847, -/* 09F8 */ 0xFFFD, 0xFFFD, 0x3848, 0x3849, 0x384A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A00 */ 0x384B, 0xFFFD, 0xFFFD, 0x384C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x384D, 0x384E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3850, 0xFFFD, -/* 0A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3851, 0xFFFD, 0x384F, 0xFFFD, -/* 0A20 */ 0xFFFD, 0xFFFD, 0x3852, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3853, -/* 0A28 */ 0x3854, 0xFFFD, 0x3855, 0xFFFD, 0x3856, 0xFFFD, 0x3857, 0xFFFD, -/* 0A30 */ 0x3858, 0xFFFD, 0xFFFD, 0xFFFD, 0x3859, 0xFFFD, 0xFFFD, 0x385A, -/* 0A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x385B, 0x385C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x385D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x385E, 0x385F, 0x3860, -/* 0A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3861, 0x3862, 0xFFFD, 0xFFFD, -/* 0A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3863, 0x3864, 0x3865, 0xFFFD, 0xFFFD, -/* 0A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3867, 0xFFFD, -/* 0A68 */ 0xFFFD, 0xFFFD, 0x3868, 0xFFFD, 0x3869, 0x386A, 0xFFFD, 0xFFFD, -/* 0A70 */ 0xFFFD, 0x386B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A78 */ 0x386C, 0x386D, 0xFFFD, 0xFFFD, 0x386E, 0xFFFD, 0x386F, 0x3870, -/* 0A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A88 */ 0x3871, 0xFFFD, 0xFFFD, 0xFFFD, 0x3872, 0xFFFD, 0xFFFD, 0x3873, -/* 0A90 */ 0x3874, 0x3875, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3876, -/* 0A98 */ 0xFFFD, 0x3877, 0xFFFD, 0x3878, 0x3879, 0x387A, 0xFFFD, 0x387B, -/* 0AA0 */ 0xFFFD, 0x387C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AA8 */ 0xFFFD, 0x387D, 0xFFFD, 0x387E, 0xFFFD, 0x3921, 0xFFFD, 0xFFFD, -/* 0AB0 */ 0x3922, 0xFFFD, 0xFFFD, 0x3923, 0x3924, 0xFFFD, 0xFFFD, 0x3925, -/* 0AB8 */ 0xFFFD, 0x3926, 0x3927, 0x3928, 0x3929, 0xFFFD, 0x392A, 0xFFFD, -/* 0AC0 */ 0xFFFD, 0xFFFD, 0x392B, 0xFFFD, 0xFFFD, 0x392C, 0xFFFD, 0x392D, -/* 0AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x392E, -/* 0AD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x392F, 0xFFFD, 0xFFFD, 0x3930, -/* 0AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3931, 0x3932, 0x3933, -/* 0AE0 */ 0x3934, 0xFFFD, 0xFFFD, 0x3935, 0xFFFD, 0xFFFD, 0xFFFD, 0x3936, -/* 0AE8 */ 0xFFFD, 0xFFFD, 0x3937, 0xFFFD, 0x3938, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AF0 */ 0xFFFD, 0x3939, 0xFFFD, 0x393A, 0x393B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AF8 */ 0x393C, 0xFFFD, 0x393D, 0xFFFD, 0xFFFD, 0x393E, 0xFFFD, 0xFFFD, -/* 0B00 */ 0xFFFD, 0xFFFD, 0x393F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3940, 0x3941, 0x3942, -/* 0B10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3943, 0x3944, 0xFFFD, 0xFFFD, 0x3945, -/* 0B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3946, 0x3947, -/* 0B20 */ 0xFFFD, 0x3948, 0x3949, 0xFFFD, 0x394A, 0xFFFD, 0xFFFD, 0x394B, -/* 0B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B30 */ 0x394C, 0xFFFD, 0xFFFD, 0xFFFD, 0x394D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x394E, 0x394F, 0x3950, 0xFFFD, -/* 0B40 */ 0xFFFD, 0xFFFD, 0x3951, 0x3952, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3953, 0xFFFD, -/* 0B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3954, 0x3955, 0xFFFD, 0xFFFD, 0x3956, -/* 0B58 */ 0x3957, 0xFFFD, 0x3958, 0xFFFD, 0xFFFD, 0x3959, 0xFFFD, 0xFFFD, -/* 0B60 */ 0x395A, 0x395B, 0x395C, 0xFFFD, 0x395D, 0x395E, 0xFFFD, 0xFFFD, -/* 0B68 */ 0xFFFD, 0x395F, 0xFFFD, 0xFFFD, 0xFFFD, 0x3960, 0xFFFD, 0xFFFD, -/* 0B70 */ 0xFFFD, 0xFFFD, 0x3961, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3962, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B80 */ 0x3963, 0xFFFD, 0x3964, 0xFFFD, 0x3965, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B88 */ 0xFFFD, 0xFFFD, 0x3966, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3967, 0xFFFD, 0xFFFD, 0x3968, -/* 0B98 */ 0x3969, 0xFFFD, 0xFFFD, 0x396A, 0x396B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BA0 */ 0xFFFD, 0x396C, 0xFFFD, 0xFFFD, 0x396D, 0xFFFD, 0xFFFD, 0x396E, -/* 0BA8 */ 0xFFFD, 0xFFFD, 0x396F, 0xFFFD, 0xFFFD, 0x3970, 0xFFFD, 0x3971, -/* 0BB0 */ 0x3972, 0x3973, 0xFFFD, 0x3974, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BB8 */ 0x3975, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3976, 0xFFFD, 0xFFFD, -/* 0BC0 */ 0xFFFD, 0xFFFD, 0x3977, 0x3978, 0x3979, 0xFFFD, 0x397A, 0xFFFD, -/* 0BC8 */ 0xFFFD, 0x397B, 0xFFFD, 0x397C, 0x397D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BD0 */ 0x397E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A21, 0xFFFD, 0x3A22, -/* 0BD8 */ 0xFFFD, 0x3A23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BE0 */ 0x3A24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A25, 0xFFFD, 0x3A26, 0xFFFD, 0xFFFD, -/* 0BF0 */ 0xFFFD, 0x3A27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A28, 0xFFFD, -/* 0BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A29, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A2A, -/* 0C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A2B, 0x3A2C, -/* 0C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A2D, 0xFFFD, -/* 0C10 */ 0xFFFD, 0x3A2E, 0x3A2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C18 */ 0xFFFD, 0x3A30, 0x3A31, 0xFFFD, 0x3A33, 0xFFFD, 0x3A34, 0xFFFD, -/* 0C20 */ 0x3A35, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A36, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C28 */ 0x3A37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C30 */ 0x3A38, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A32, -/* 0C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A3A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A3B, 0x3A3C, -/* 0C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A3D, 0xFFFD, 0xFFFD, -/* 0C58 */ 0xFFFD, 0x3A3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C60 */ 0xFFFD, 0x3A3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C70 */ 0xFFFD, 0x3A41, 0x3A42, 0x3A43, 0x3A44, 0x3A45, 0x3A46, 0xFFFD, -/* 0C78 */ 0x3A47, 0xFFFD, 0xFFFD, 0x3A48, 0xFFFD, 0x3A49, 0xFFFD, 0xFFFD, -/* 0C80 */ 0xFFFD, 0x3A4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A4B, 0xFFFD, 0x3A4C, -/* 0C88 */ 0x3A4D, 0xFFFD, 0x3A4E, 0x3A4F, 0xFFFD, 0x3A50, 0x3A51, 0x3A52, -/* 0C90 */ 0xFFFD, 0xFFFD, 0x3A53, 0x3A54, 0xFFFD, 0x3A55, 0xFFFD, 0x3A56, -/* 0C98 */ 0x3A57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A58, 0xFFFD, 0xFFFD, -/* 0CA0 */ 0x3A59, 0xFFFD, 0x3A5A, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A5B, 0x3A5C, -/* 0CA8 */ 0x3A5D, 0xFFFD, 0x3A5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0xFFFD, 0x3A5F, 0x3A60, 0x3A61, 0x3A62, 0x3A63, 0xFFFD, 0xFFFD, -/* 0CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3A64, 0x3A65, 0xFFFD, 0x3A66, 0xFFFD, -/* 0CC0 */ 0xFFFD, 0x3A67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC8 */ 0xFFFD, 0xFFFD, 0x3A68, 0x3A69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A6A, 0xFFFD, -/* 0CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A6B, 0x3A6C, 0xFFFD, -/* 0CE0 */ 0xFFFD, 0xFFFD, 0x3A6D, 0xFFFD, 0xFFFD, 0x3A6E, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0x3A6F, 0xFFFD, 0x3A70, 0x3A71, 0xFFFD, 0x3A72, 0xFFFD, 0x3A73, -/* 0CF0 */ 0xFFFD, 0x3A74, 0xFFFD, 0xFFFD, 0x3A75, 0x3A76, 0x3A77, 0x3A78, -/* 0CF8 */ 0xFFFD, 0x3A79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A7A, -/* 0D00 */ 0x3A7B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3A7C, 0x3A7D, 0x3A7E, 0xFFFD, -/* 0D08 */ 0xFFFD, 0xFFFD, 0x3B21, 0xFFFD, 0xFFFD, 0x3B22, 0xFFFD, 0xFFFD, -/* 0D10 */ 0xFFFD, 0x3B23, 0x3B24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B25, -/* 0D18 */ 0x3B26, 0x3B27, 0x3B28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B29, 0x3B2A, 0xFFFD, 0x3B2B, -/* 0D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B2C, 0xFFFD, 0xFFFD, 0x3B2D, -/* 0D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D38 */ 0xFFFD, 0xFFFD, 0x3B2E, 0xFFFD, 0x3B2F, 0x3B30, 0xFFFD, 0x3B31, -/* 0D40 */ 0x3B32, 0xFFFD, 0xFFFD, 0x3B33, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B34, -/* 0D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B35, -/* 0D50 */ 0xFFFD, 0x3B36, 0x3B37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B38, -/* 0D58 */ 0x3B39, 0xFFFD, 0x3B3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D60 */ 0xFFFD, 0x3B3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B3D, 0xFFFD, -/* 0D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B3C, 0x3B3E, 0xFFFD, 0xFFFD, -/* 0D70 */ 0x3B3F, 0x3B40, 0xFFFD, 0x3B41, 0x3B42, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D78 */ 0xFFFD, 0x3B43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D80 */ 0x3B44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B45, 0x3B47, 0x3B48, -/* 0D88 */ 0xFFFD, 0x3B49, 0x3B4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B46, 0xFFFD, -/* 0D90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B4B, 0xFFFD, 0xFFFD, 0x3B4C, -/* 0D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B4D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DA0 */ 0x3B4E, 0xFFFD, 0x3B4F, 0xFFFD, 0xFFFD, 0x3B50, 0x3B51, 0xFFFD, -/* 0DA8 */ 0xFFFD, 0x3B52, 0xFFFD, 0x3B53, 0xFFFD, 0x3B57, 0xFFFD, 0xFFFD, -/* 0DB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B55, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DB8 */ 0x3B54, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B56, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DC0 */ 0xFFFD, 0xFFFD, 0x3B58, 0x3B59, 0x3B5A, 0x3B5B, 0xFFFD, 0x3B5C, -/* 0DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B5D, 0xFFFD, 0xFFFD, -/* 0DD0 */ 0x3B5E, 0xFFFD, 0xFFFD, 0x3B5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B60, 0x3B61, 0xFFFD, 0xFFFD, -/* 0DE0 */ 0xFFFD, 0x3B62, 0x3B63, 0xFFFD, 0x3B64, 0xFFFD, 0x3B65, 0xFFFD, -/* 0DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B66, 0xFFFD, 0x3B67, 0xFFFD, 0xFFFD, -/* 0DF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B68, 0x3B69, 0x3B6A, -/* 0DF8 */ 0x3B6B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B6C, 0xFFFD, 0x3B6D, 0xFFFD, -/* 0E00 */ 0xFFFD, 0xFFFD, 0x3B6E, 0x3B6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E08 */ 0xFFFD, 0xFFFD, 0x3B70, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B71, 0xFFFD, -/* 0E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B72, 0xFFFD, 0x6674, 0xFFFD, 0x3B73, -/* 0E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B74, 0x3B75, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B76, 0xFFFD, -/* 0E28 */ 0xFFFD, 0xFFFD, 0x3B77, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B78, 0xFFFD, -/* 0E30 */ 0xFFFD, 0x3B7A, 0xFFFD, 0x3B79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B7B, 0x3B7C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3B7D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3B7E, -/* 0E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C21, 0x3C22, 0x3C23, 0xFFFD, -/* 0E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C24, 0xFFFD, 0xFFFD, -/* 0E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C25, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E60 */ 0xFFFD, 0xFFFD, 0x3C26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C27, -/* 0E68 */ 0xFFFD, 0x3C28, 0x3C29, 0xFFFD, 0xFFFD, 0x3C2A, 0xFFFD, 0xFFFD, -/* 0E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C2B, 0x3C2C, 0xFFFD, 0xFFFD, -/* 0E78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C2E, 0xFFFD, 0xFFFD, -/* 0E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C2D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C2F, -/* 0E88 */ 0xFFFD, 0xFFFD, 0x3C30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C34, 0xFFFD, -/* 0EA0 */ 0x3C32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C33, 0x3C35, 0xFFFD, -/* 0EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C36, 0xFFFD, 0x3C37, 0xFFFD, 0xFFFD, -/* 0EB0 */ 0x3C38, 0x3C39, 0xFFFD, 0x3C3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C3B, 0xFFFD, 0x3C3C, -/* 0EC0 */ 0x3C3D, 0x3C3E, 0x3C3F, 0x3C40, 0xFFFD, 0x3C41, 0x3C42, 0xFFFD, -/* 0EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0ED0 */ 0xFFFD, 0x3C43, 0xFFFD, 0xFFFD, 0x3C44, 0x3C45, 0xFFFD, 0x3C46, -/* 0ED8 */ 0x3C47, 0xFFFD, 0xFFFD, 0x3C48, 0xFFFD, 0x3C49, 0xFFFD, 0x3C4A, -/* 0EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C4B, 0xFFFD, 0x3C4C, 0xFFFD, -/* 0EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EF0 */ 0x3C4D, 0x3C4E, 0x3C4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EF8 */ 0xFFFD, 0x3C50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C52, 0x3C51, -/* 0F00 */ 0xFFFD, 0x3C53, 0xFFFD, 0xFFFD, 0x3C54, 0x3C55, 0xFFFD, 0x3C56, -/* 0F08 */ 0x3C57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C58, -/* 0F10 */ 0xFFFD, 0x3C59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F18 */ 0x3C5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C5B, 0x3C5C, -/* 0F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C5D, 0x3C5E, 0x3C5F, 0xFFFD, 0xFFFD, -/* 0F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3C60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C61, 0xFFFD, -/* 0F38 */ 0xFFFD, 0x3C62, 0x3C63, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C64, 0x3C65, -/* 0F40 */ 0x3C66, 0x3C67, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C68, 0xFFFD, 0xFFFD, -/* 0F48 */ 0x3C69, 0x3C6A, 0xFFFD, 0x3C6B, 0xFFFD, 0x3C6C, 0xFFFD, 0xFFFD, -/* 0F50 */ 0xFFFD, 0x3C6D, 0xFFFD, 0x3C6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F58 */ 0x3C6F, 0xFFFD, 0x3C70, 0xFFFD, 0x3C71, 0x3C72, 0xFFFD, 0xFFFD, -/* 0F60 */ 0xFFFD, 0x3C73, 0x3C74, 0xFFFD, 0x3C75, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F68 */ 0xFFFD, 0xFFFD, 0x3C76, 0xFFFD, 0xFFFD, 0x3C77, 0xFFFD, 0xFFFD, -/* 0F70 */ 0xFFFD, 0x3C78, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C79, 0xFFFD, 0xFFFD, -/* 0F78 */ 0x3C7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3C7B, 0xFFFD, 0xFFFD, -/* 0F80 */ 0x3C7C, 0x3C7D, 0xFFFD, 0xFFFD, 0x3C7E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D21, 0xFFFD, 0xFFFD, 0x3D22, -/* 0F90 */ 0xFFFD, 0x3D23, 0x3D24, 0xFFFD, 0xFFFD, 0x3D25, 0xFFFD, 0x3D26, -/* 0F98 */ 0xFFFD, 0xFFFD, 0x3D27, 0x3D28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D29, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0xFFFD, 0x3D2A, 0xFFFD, 0x3D2B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FB8 */ 0xFFFD, 0x3D2D, 0x3D2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D2F, -/* 0FC0 */ 0xFFFD, 0x3D32, 0xFFFD, 0xFFFD, 0x3D30, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FC8 */ 0x3D31, 0x3D33, 0xFFFD, 0xFFFD, 0x3D34, 0x3D35, 0x3D36, 0xFFFD, -/* 0FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D37, 0x3D38, 0xFFFD, -/* 0FD8 */ 0xFFFD, 0x3D39, 0x3D3A, 0x3D3B, 0xFFFD, 0x3D3C, 0xFFFD, 0xFFFD, -/* 0FE0 */ 0xFFFD, 0xFFFD, 0x3D3D, 0x3D3E, 0x3D3F, 0x3D40, 0x3D41, 0xFFFD, -/* 0FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FF0 */ 0x3D42, 0xFFFD, 0xFFFD, 0x3D43, 0x3D44, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FF8 */ 0xFFFD, 0xFFFD, 0x3D45, 0x3D46, 0x3D47, 0xFFFD, 0x3D48, 0x3D49, -/* 1000 */ 0x3D4A, 0x3D4B, 0xFFFD, 0xFFFD, 0x3D4C, 0x3D4D, 0xFFFD, 0xFFFD, -/* 1008 */ 0x3D4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D4F, 0xFFFD, 0x3D50, 0xFFFD, -/* 1010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1018 */ 0xFFFD, 0x3D51, 0xFFFD, 0xFFFD, 0x3D52, 0xFFFD, 0xFFFD, 0x3D53, -/* 1020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D54, 0x3D55, 0xFFFD, -/* 1028 */ 0xFFFD, 0x3D56, 0x3D57, 0xFFFD, 0x3D58, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1030 */ 0xFFFD, 0x3D59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D5A, 0xFFFD, -/* 1038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D5B, -/* 1040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D5C, 0xFFFD, 0x3D5D, -/* 1048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1050 */ 0xFFFD, 0xFFFD, 0x3D5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1058 */ 0xFFFD, 0x3D5F, 0x3D60, 0x3D61, 0xFFFD, 0xFFFD, 0x3D62, 0xFFFD, -/* 1060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D63, 0xFFFD, 0xFFFD, 0x3D64, 0xFFFD, -/* 1068 */ 0x3D65, 0x3D66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D67, -/* 1070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1078 */ 0xFFFD, 0x3D69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D6A, 0x3D6B, 0x3D6C, 0xFFFD, 0xFFFD, -/* 1088 */ 0x3D6D, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D6E, 0xFFFD, 0x3D6F, 0xFFFD, -/* 1090 */ 0x3D70, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D71, 0xFFFD, 0xFFFD, 0x3D72, -/* 1098 */ 0xFFFD, 0x3D73, 0xFFFD, 0x3D74, 0xFFFD, 0xFFFD, 0x3D75, 0xFFFD, -/* 10A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3D76, 0x3D77, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10A8 */ 0x3D78, 0xFFFD, 0x3D79, 0x3D7A, 0xFFFD, 0xFFFD, 0x3D7B, 0xFFFD, -/* 10B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D7C, 0x3D7D, -/* 10B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3D7E, 0xFFFD, 0xFFFD, -/* 10C0 */ 0xFFFD, 0x3E21, 0xFFFD, 0xFFFD, 0x3E22, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10C8 */ 0x3E23, 0xFFFD, 0x3E24, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E25, 0x3E26, -/* 10D0 */ 0x3E27, 0x3E28, 0xFFFD, 0xFFFD, 0x3E29, 0x3E2A, 0xFFFD, 0xFFFD, -/* 10D8 */ 0xFFFD, 0xFFFD, 0x3E2B, 0x3E2C, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E2D, -/* 10E0 */ 0xFFFD, 0x3E2E, 0xFFFD, 0x3E2F, 0x3E30, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10E8 */ 0x3E31, 0xFFFD, 0xFFFD, 0x3E32, 0x3E33, 0xFFFD, 0xFFFD, 0x3E34, -/* 10F0 */ 0xFFFD, 0xFFFD, 0x3E35, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E36, 0x3E37, -/* 10F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E38, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1100 */ 0xFFFD, 0x3E39, 0xFFFD, 0xFFFD, 0x3E3A, 0xFFFD, 0x3E3B, 0xFFFD, -/* 1108 */ 0xFFFD, 0xFFFD, 0x3E3C, 0x3E3D, 0x3E3E, 0x3E3F, 0x3E40, 0xFFFD, -/* 1110 */ 0x3E41, 0x3E42, 0xFFFD, 0x3E43, 0xFFFD, 0xFFFD, 0x3E44, 0xFFFD, -/* 1118 */ 0x3E45, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E47, 0x3E48, 0xFFFD, 0xFFFD, -/* 1128 */ 0xFFFD, 0xFFFD, 0x3E49, 0x3E4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E4B, -/* 1130 */ 0x3E4C, 0x3E4D, 0xFFFD, 0x3E4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E4F, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E50, -/* 1140 */ 0x3E51, 0xFFFD, 0xFFFD, 0x3E52, 0x3E53, 0xFFFD, 0x3E54, 0x3E55, -/* 1148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E56, 0xFFFD, 0xFFFD, -/* 1150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E57, 0xFFFD, 0xFFFD, 0x3E58, 0x3E59, -/* 1158 */ 0xFFFD, 0xFFFD, 0x3E5A, 0x3E5B, 0x3E5C, 0xFFFD, 0x3E5D, 0x3E5E, -/* 1160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E5F, 0xFFFD, -/* 1168 */ 0x3E60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E61, 0x3E62, 0xFFFD, -/* 1170 */ 0xFFFD, 0xFFFD, 0x3E63, 0x3E64, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E65, -/* 1178 */ 0x3E66, 0xFFFD, 0x3E67, 0x3E68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1180 */ 0x3E69, 0xFFFD, 0xFFFD, 0x3E6A, 0xFFFD, 0x3E6B, 0xFFFD, 0xFFFD, -/* 1188 */ 0x3E6C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E6D, 0x3E6E, 0xFFFD, 0xFFFD, 0x3E6F, -/* 1198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3E70, 0x3E71, 0x3E72, 0x3E73, 0x3E74, -/* 11A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E75, 0xFFFD, 0xFFFD, -/* 11A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3E76, 0x3E77, 0x3E78, 0x3E79, -/* 11B0 */ 0xFFFD, 0x3E7A, 0x3E7B, 0xFFFD, 0xFFFD, 0x3E7E, 0xFFFD, 0x3E7C, -/* 11B8 */ 0xFFFD, 0x3E7D, 0xFFFD, 0xFFFD, 0x3F21, 0x3F22, 0xFFFD, 0x3F23, -/* 11C0 */ 0x3F24, 0xFFFD, 0x3F25, 0x3F26, 0xFFFD, 0xFFFD, 0x3F27, 0x3F28, -/* 11C8 */ 0xFFFD, 0x3F29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11D0 */ 0x3F2A, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F2B, 0xFFFD, 0x3F2C, 0x3F2D, -/* 11D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F2E, 0xFFFD, 0x3F2F, 0xFFFD, 0x3F30, -/* 11E0 */ 0x3F31, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F32, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11E8 */ 0xFFFD, 0x3F33, 0x3F34, 0x3F35, 0xFFFD, 0x3F36, 0xFFFD, 0xFFFD, -/* 11F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F37, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F38, -/* 11F8 */ 0x3F39, 0x3F3A, 0xFFFD, 0x3F3B, 0xFFFD, 0x3F3C, 0xFFFD, 0xFFFD, -/* 1200 */ 0xFFFD, 0x3F3D, 0xFFFD, 0x3F3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3F3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F40, 0xFFFD, 0x3F41, 0xFFFD, -/* 1218 */ 0xFFFD, 0xFFFD, 0x3F42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1220 */ 0xFFFD, 0x3F43, 0xFFFD, 0xFFFD, 0x3F44, 0x3F45, 0x3F46, 0x3F47, -/* 1228 */ 0x3F48, 0x3F49, 0xFFFD, 0x3F4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F4B, 0xFFFD, -/* 1238 */ 0xFFFD, 0x3F4C, 0x3F4D, 0xFFFD, 0xFFFD, 0x3F4E, 0xFFFD, 0xFFFD, -/* 1240 */ 0xFFFD, 0x3F4F, 0x3F50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F51, -/* 1248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1250 */ 0xFFFD, 0x3F52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1258 */ 0x3F53, 0x3F54, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F55, 0x3F56, 0xFFFD, -/* 1260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F57, 0xFFFD, -/* 1268 */ 0x3F58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1270 */ 0x3F59, 0x3F5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F5B, -/* 1278 */ 0x3F5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F5D, 0x3F5E, -/* 1280 */ 0xFFFD, 0x3F5F, 0xFFFD, 0xFFFD, 0x3F60, 0xFFFD, 0xFFFD, 0x3F61, -/* 1288 */ 0xFFFD, 0xFFFD, 0x3F62, 0xFFFD, 0x3F63, 0x3F64, 0x3F65, 0xFFFD, -/* 1290 */ 0xFFFD, 0x3F66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1298 */ 0xFFFD, 0x3F67, 0x3F68, 0xFFFD, 0xFFFD, 0x3F69, 0xFFFD, 0xFFFD, -/* 12A0 */ 0x3F6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F6B, 0x3F6C, 0x3F6D, -/* 12A8 */ 0x3F6E, 0xFFFD, 0x3F6F, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F70, 0x3F71, -/* 12B0 */ 0xFFFD, 0xFFFD, 0x3F72, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F73, 0x3F74, -/* 12B8 */ 0x3F75, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F76, 0xFFFD, 0xFFFD, 0x3F77, -/* 12C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12C8 */ 0xFFFD, 0x3F78, 0x3F79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12D0 */ 0x3F7A, 0x3F7B, 0xFFFD, 0xFFFD, 0xFFFD, 0x3F7C, 0xFFFD, 0xFFFD, -/* 12D8 */ 0x3F7D, 0x3F7E, 0xFFFD, 0xFFFD, 0x4021, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12E0 */ 0x4022, 0x4023, 0xFFFD, 0x4024, 0xFFFD, 0xFFFD, 0x4025, 0xFFFD, -/* 12E8 */ 0x4026, 0xFFFD, 0xFFFD, 0x4027, 0xFFFD, 0xFFFD, 0x4028, 0xFFFD, -/* 12F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4029, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12F8 */ 0x402A, 0x402B, 0xFFFD, 0xFFFD, 0xFFFD, 0x402C, 0x402D, 0xFFFD, -/* 1300 */ 0xFFFD, 0xFFFD, 0x402E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1308 */ 0x402F, 0xFFFD, 0x4030, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1310 */ 0xFFFD, 0x4031, 0x4032, 0x4033, 0x4034, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1318 */ 0x4035, 0xFFFD, 0xFFFD, 0xFFFD, 0x4036, 0xFFFD, 0xFFFD, 0x4037, -/* 1320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4038, 0xFFFD, 0xFFFD, -/* 1328 */ 0x4039, 0xFFFD, 0x403A, 0x403B, 0x403C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x403D, 0xFFFD, 0xFFFD, 0xFFFD, 0x403E, -/* 1338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x403F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1340 */ 0xFFFD, 0x4040, 0xFFFD, 0x4041, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1348 */ 0xFFFD, 0x4042, 0x4043, 0xFFFD, 0x4044, 0xFFFD, 0xFFFD, 0x4045, -/* 1350 */ 0x4046, 0x4047, 0x4048, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1358 */ 0x4049, 0xFFFD, 0x404A, 0xFFFD, 0x404B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1360 */ 0x404C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x404D, 0xFFFD, -/* 1368 */ 0x404E, 0xFFFD, 0x404F, 0xFFFD, 0x4050, 0x4051, 0xFFFD, 0xFFFD, -/* 1370 */ 0xFFFD, 0x4052, 0x4053, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4054, -/* 1378 */ 0x4055, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4056, 0xFFFD, 0xFFFD, -/* 1380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4057, 0xFFFD, 0x4058, -/* 1388 */ 0x4059, 0xFFFD, 0xFFFD, 0xFFFD, 0x405A, 0xFFFD, 0x405B, 0x405C, -/* 1390 */ 0x405D, 0x405E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x405F, -/* 1398 */ 0x4060, 0x4061, 0x4062, 0xFFFD, 0x4063, 0x4064, 0x4065, 0xFFFD, -/* 13A0 */ 0x4066, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13A8 */ 0xFFFD, 0xFFFD, 0x4067, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13B0 */ 0x4068, 0x4069, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13B8 */ 0x406A, 0xFFFD, 0x406B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13C0 */ 0xFFFD, 0xFFFD, 0x406C, 0xFFFD, 0x406D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x406E, 0x406F, 0x4070, 0xFFFD, -/* 13D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4071, 0x4072, 0xFFFD, -/* 13D8 */ 0x4073, 0xFFFD, 0x4074, 0xFFFD, 0x4075, 0xFFFD, 0x4076, 0xFFFD, -/* 13E0 */ 0x4077, 0xFFFD, 0xFFFD, 0x4078, 0xFFFD, 0x4079, 0xFFFD, 0xFFFD, -/* 13E8 */ 0xFFFD, 0x407A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13F0 */ 0x407B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13F8 */ 0xFFFD, 0xFFFD, 0x407C, 0x407D, 0x407E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1400 */ 0xFFFD, 0x4121, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4122, 0x4123, -/* 1408 */ 0x4124, 0x4125, 0xFFFD, 0x4126, 0xFFFD, 0x4127, 0x4128, 0xFFFD, -/* 1410 */ 0xFFFD, 0xFFFD, 0x4129, 0xFFFD, 0x412A, 0x412B, 0x412C, 0xFFFD, -/* 1418 */ 0xFFFD, 0xFFFD, 0x412D, 0x412E, 0xFFFD, 0xFFFD, 0x412F, 0xFFFD, -/* 1420 */ 0xFFFD, 0x4130, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4131, 0xFFFD, -/* 1428 */ 0x4132, 0xFFFD, 0xFFFD, 0xFFFD, 0x4133, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1430 */ 0x4134, 0xFFFD, 0x4135, 0xFFFD, 0xFFFD, 0x4136, 0xFFFD, 0xFFFD, -/* 1438 */ 0xFFFD, 0x4137, 0x4138, 0x4139, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1440 */ 0x413A, 0xFFFD, 0xFFFD, 0xFFFD, 0x413B, 0x413C, 0xFFFD, 0x413D, -/* 1448 */ 0xFFFD, 0xFFFD, 0x413E, 0xFFFD, 0x413F, 0xFFFD, 0xFFFD, 0x4140, -/* 1450 */ 0x4141, 0xFFFD, 0xFFFD, 0x4142, 0xFFFD, 0xFFFD, 0xFFFD, 0x4143, -/* 1458 */ 0xFFFD, 0xFFFD, 0x4144, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4145, -/* 1460 */ 0xFFFD, 0xFFFD, 0x4146, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4147, 0xFFFD, 0x4148, 0x4149, 0xFFFD, -/* 1470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x414A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1478 */ 0x414B, 0xFFFD, 0x414C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1480 */ 0xFFFD, 0x414D, 0xFFFD, 0x414E, 0xFFFD, 0x414F, 0xFFFD, 0xFFFD, -/* 1488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1490 */ 0x4150, 0x4151, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1498 */ 0x4152, 0xFFFD, 0xFFFD, 0xFFFD, 0x4153, 0x4154, 0xFFFD, 0xFFFD, -/* 14A0 */ 0x4155, 0xFFFD, 0xFFFD, 0xFFFD, 0x4156, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14A8 */ 0x4157, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4158, 0xFFFD, 0xFFFD, -/* 14B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4159, 0xFFFD, 0xFFFD, -/* 14B8 */ 0x415A, 0xFFFD, 0xFFFD, 0x415B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14C0 */ 0x415C, 0xFFFD, 0xFFFD, 0x415D, 0xFFFD, 0xFFFD, 0x415E, 0xFFFD, -/* 14C8 */ 0xFFFD, 0x415F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14D0 */ 0xFFFD, 0x4160, 0xFFFD, 0xFFFD, 0xFFFD, 0x4161, 0x4162, 0x4163, -/* 14D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14E0 */ 0xFFFD, 0xFFFD, 0x4164, 0xFFFD, 0xFFFD, 0x4165, 0xFFFD, 0xFFFD, -/* 14E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4166, 0x4167, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14F0 */ 0xFFFD, 0x4168, 0xFFFD, 0x4169, 0xFFFD, 0xFFFD, 0xFFFD, 0x416A, -/* 14F8 */ 0xFFFD, 0x416B, 0xFFFD, 0x416C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1500 */ 0xFFFD, 0xFFFD, 0x416D, 0x416E, 0xFFFD, 0x416F, 0xFFFD, 0x4170, -/* 1508 */ 0x4171, 0xFFFD, 0xFFFD, 0xFFFD, 0x4172, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1510 */ 0xFFFD, 0x4173, 0x4174, 0x4175, 0xFFFD, 0xFFFD, 0xFFFD, 0x4176, -/* 1518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4177, 0x4178, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1520 */ 0x4179, 0xFFFD, 0xFFFD, 0xFFFD, 0x417A, 0x417B, 0xFFFD, 0xFFFD, -/* 1528 */ 0x417C, 0x417D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1530 */ 0x417E, 0x4221, 0xFFFD, 0xFFFD, 0x4222, 0x4223, 0x4224, 0x4225, -/* 1538 */ 0xFFFD, 0x4226, 0xFFFD, 0xFFFD, 0x4227, 0x4228, 0x4229, 0x422A, -/* 1540 */ 0xFFFD, 0x422B, 0xFFFD, 0x422C, 0x422D, 0xFFFD, 0x422E, 0xFFFD, -/* 1548 */ 0xFFFD, 0xFFFD, 0x4230, 0xFFFD, 0x422F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4231, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1558 */ 0x4232, 0x4233, 0xFFFD, 0xFFFD, 0xFFFD, 0x4234, 0xFFFD, 0x4235, -/* 1560 */ 0xFFFD, 0x4237, 0xFFFD, 0xFFFD, 0x4236, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1568 */ 0xFFFD, 0xFFFD, 0x4238, 0x4239, 0x423A, 0xFFFD, 0x423B, 0x423C, -/* 1570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x423D, 0x423E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4240, 0x4241, 0x4242, -/* 1580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4244, 0xFFFD, -/* 1588 */ 0x4245, 0xFFFD, 0x4247, 0x4248, 0x4249, 0xFFFD, 0x424A, 0x424C, -/* 1590 */ 0xFFFD, 0x4243, 0x4246, 0x424B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1598 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x424D, 0x424E, -/* 15A0 */ 0x424F, 0xFFFD, 0xFFFD, 0x4250, 0xFFFD, 0x4251, 0xFFFD, 0xFFFD, -/* 15A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4252, 0x4253, 0x4254, 0x4255, -/* 15B0 */ 0xFFFD, 0xFFFD, 0x4256, 0x4257, 0xFFFD, 0xFFFD, 0xFFFD, 0x4258, -/* 15B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15C0 */ 0x4259, 0xFFFD, 0xFFFD, 0xFFFD, 0x425A, 0x425B, 0xFFFD, 0xFFFD, -/* 15C8 */ 0x425C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x425D, 0xFFFD, -/* 15D0 */ 0xFFFD, 0xFFFD, 0x425E, 0x425F, 0xFFFD, 0x4260, 0x4261, 0xFFFD, -/* 15D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4262, 0xFFFD, 0xFFFD, 0xFFFD, 0x4263, -/* 15E0 */ 0xFFFD, 0x4264, 0x4265, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4266, -/* 15E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4267, 0xFFFD, -/* 15F0 */ 0xFFFD, 0xFFFD, 0x4268, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4269, 0xFFFD, 0xFFFD, 0x426A, 0x426B, -/* 1600 */ 0xFFFD, 0x426C, 0x426D, 0x423F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x426E, 0xFFFD, 0x426F, -/* 1610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4270, 0xFFFD, -/* 1618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4271, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1620 */ 0xFFFD, 0x4272, 0xFFFD, 0xFFFD, 0x4273, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1628 */ 0x4274, 0xFFFD, 0x4275, 0x4276, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4277, 0xFFFD, -/* 1638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4278, 0xFFFD, 0x4279, -/* 1640 */ 0x427A, 0xFFFD, 0xFFFD, 0xFFFD, 0x427B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x427C, 0x427D, 0xFFFD, 0xFFFD, -/* 1650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x427E, 0xFFFD, 0xFFFD, -/* 1658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4321, 0xFFFD, -/* 1660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4322, 0xFFFD, 0x4323, 0xFFFD, -/* 1668 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4324, 0xFFFD, 0x4325, 0xFFFD, -/* 1670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4326, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1678 */ 0xFFFD, 0x4327, 0xFFFD, 0xFFFD, 0x4328, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4329, 0x432A, -/* 1688 */ 0xFFFD, 0x432B, 0xFFFD, 0x432C, 0xFFFD, 0xFFFD, 0x432D, 0xFFFD, -/* 1690 */ 0x432E, 0x432F, 0xFFFD, 0x4330, 0x4331, 0x4332, 0x4333, 0xFFFD, -/* 1698 */ 0xFFFD, 0x4334, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4335, -/* 16A0 */ 0x4336, 0x4337, 0xFFFD, 0xFFFD, 0x4339, 0xFFFD, 0x433A, 0x433B, -/* 16A8 */ 0xFFFD, 0x433C, 0xFFFD, 0xFFFD, 0x433D, 0x433E, 0xFFFD, 0xFFFD, -/* 16B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x433F, 0xFFFD, -/* 16B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4340, 0xFFFD, 0x4341, 0xFFFD, 0xFFFD, -/* 16C0 */ 0x4342, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4343, 0xFFFD, 0xFFFD, -/* 16C8 */ 0xFFFD, 0xFFFD, 0x4344, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4345, 0xFFFD, 0x4346, 0xFFFD, -/* 16D8 */ 0xFFFD, 0xFFFD, 0x4347, 0x4348, 0xFFFD, 0x4338, 0x434A, 0xFFFD, -/* 16E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x434B, 0xFFFD, 0xFFFD, 0xFFFD, 0x434C, -/* 16E8 */ 0xFFFD, 0x434D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16F0 */ 0xFFFD, 0x434F, 0x434E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4350, 0x4351, -/* 16F8 */ 0xFFFD, 0x4352, 0x4353, 0x4354, 0xFFFD, 0x4355, 0xFFFD, 0xFFFD, -/* 1700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4356, 0xFFFD, 0xFFFD, -/* 1708 */ 0xFFFD, 0x4357, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4358, 0x4359, -/* 1710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x435A, 0xFFFD, 0x435B, 0xFFFD, -/* 1718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4349, 0xFFFD, 0xFFFD, 0x435C, -/* 1720 */ 0xFFFD, 0x435D, 0x435E, 0xFFFD, 0xFFFD, 0x435F, 0x4360, 0xFFFD, -/* 1728 */ 0xFFFD, 0x4361, 0x4362, 0x4363, 0x4364, 0x4365, 0xFFFD, 0xFFFD, -/* 1730 */ 0x4366, 0xFFFD, 0xFFFD, 0xFFFD, 0x4367, 0x4368, 0x4369, 0x436A, -/* 1738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x436B, 0xFFFD, 0x436C, -/* 1740 */ 0xFFFD, 0x436D, 0xFFFD, 0x436E, 0x436F, 0xFFFD, 0x4370, 0xFFFD, -/* 1748 */ 0x4371, 0xFFFD, 0x4372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4373, -/* 1750 */ 0xFFFD, 0x4374, 0xFFFD, 0x4375, 0xFFFD, 0xFFFD, 0xFFFD, 0x4376, -/* 1758 */ 0x4377, 0xFFFD, 0xFFFD, 0xFFFD, 0x4378, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1760 */ 0x4379, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1768 */ 0xFFFD, 0x437A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x437B, 0xFFFD, 0xFFFD, 0x437C, 0xFFFD, -/* 1778 */ 0xFFFD, 0xFFFD, 0x437D, 0xFFFD, 0xFFFD, 0x437E, 0x4421, 0x4422, -/* 1780 */ 0xFFFD, 0x4423, 0xFFFD, 0xFFFD, 0x4424, 0xFFFD, 0xFFFD, 0x4425, -/* 1788 */ 0xFFFD, 0xFFFD, 0x4426, 0x4427, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4428, 0xFFFD, 0xFFFD, 0x4429, 0xFFFD, -/* 1798 */ 0x442A, 0x442B, 0x442C, 0x442D, 0xFFFD, 0xFFFD, 0x442E, 0x442F, -/* 17A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4430, 0x4431, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17A8 */ 0xFFFD, 0x4432, 0x4433, 0x4434, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4435, 0xFFFD, 0xFFFD, 0x4436, -/* 17B8 */ 0x4437, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4438, 0x4439, -/* 17C0 */ 0xFFFD, 0x443A, 0xFFFD, 0xFFFD, 0x443B, 0x443C, 0x443D, 0xFFFD, -/* 17C8 */ 0x443E, 0xFFFD, 0x443F, 0xFFFD, 0xFFFD, 0x4440, 0xFFFD, 0xFFFD, -/* 17D0 */ 0x4441, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4442, -/* 17D8 */ 0xFFFD, 0xFFFD, 0x4443, 0xFFFD, 0xFFFD, 0xFFFD, 0x4444, 0xFFFD, -/* 17E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4445, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4446, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F0 */ 0x4447, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F8 */ 0x4448, 0x4449, 0x444A, 0x444B, 0xFFFD, 0x444C, 0x444D, 0xFFFD, -/* 1800 */ 0xFFFD, 0x444E, 0xFFFD, 0xFFFD, 0xFFFD, 0x444F, 0x4450, 0x4451, -/* 1808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4452, -/* 1810 */ 0x4453, 0xFFFD, 0xFFFD, 0xFFFD, 0x4454, 0x4455, 0x4456, 0xFFFD, -/* 1818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4457, 0xFFFD, 0xFFFD, 0xFFFD, 0x4458, -/* 1820 */ 0xFFFD, 0x4459, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1828 */ 0xFFFD, 0xFFFD, 0x445A, 0xFFFD, 0xFFFD, 0xFFFD, 0x445B, 0x445C, -/* 1830 */ 0xFFFD, 0x445D, 0xFFFD, 0xFFFD, 0x445E, 0xFFFD, 0x445F, 0xFFFD, -/* 1838 */ 0x4460, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1840 */ 0x4461, 0x4462, 0xFFFD, 0x4463, 0xFFFD, 0x4464, 0xFFFD, 0xFFFD, -/* 1848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4465, 0xFFFD, -/* 1850 */ 0xFFFD, 0x4466, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1858 */ 0xFFFD, 0xFFFD, 0x4467, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4468, -/* 1860 */ 0x4469, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x446A, 0xFFFD, 0xFFFD, 0x446B, 0xFFFD, -/* 1870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x446C, -/* 1878 */ 0x446D, 0xFFFD, 0x446E, 0xFFFD, 0x446F, 0xFFFD, 0x4470, 0xFFFD, -/* 1880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4471, -/* 1888 */ 0xFFFD, 0x4472, 0x4473, 0xFFFD, 0x4474, 0x4475, 0xFFFD, 0x4476, -/* 1890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4477, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1898 */ 0x4478, 0xFFFD, 0xFFFD, 0x4479, 0xFFFD, 0xFFFD, 0x447A, 0xFFFD, -/* 18A0 */ 0xFFFD, 0xFFFD, 0x447B, 0xFFFD, 0xFFFD, 0xFFFD, 0x447C, 0xFFFD, -/* 18A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x447D, 0xFFFD, -/* 18B0 */ 0x447E, 0xFFFD, 0x4521, 0xFFFD, 0xFFFD, 0x4522, 0xFFFD, 0xFFFD, -/* 18B8 */ 0xFFFD, 0x4523, 0xFFFD, 0xFFFD, 0x4524, 0x4525, 0xFFFD, 0xFFFD, -/* 18C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4526, 0x4527, 0xFFFD, 0xFFFD, 0x4528, -/* 18C8 */ 0x4529, 0xFFFD, 0xFFFD, 0xFFFD, 0x452A, 0xFFFD, 0x452B, 0x452C, -/* 18D0 */ 0x452D, 0xFFFD, 0xFFFD, 0x452E, 0x452F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18D8 */ 0xFFFD, 0x4530, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18E0 */ 0xFFFD, 0xFFFD, 0x4531, 0xFFFD, 0xFFFD, 0x4532, 0xFFFD, 0xFFFD, -/* 18E8 */ 0x4533, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4534, -/* 18F0 */ 0xFFFD, 0x4535, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4536, 0xFFFD, 0xFFFD, 0x4537, -/* 1900 */ 0xFFFD, 0x4538, 0xFFFD, 0xFFFD, 0x4539, 0x453A, 0xFFFD, 0x453B, -/* 1908 */ 0xFFFD, 0x453C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x453D, -/* 1910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1918 */ 0xFFFD, 0x453E, 0xFFFD, 0x453F, 0x4540, 0x4541, 0xFFFD, 0xFFFD, -/* 1920 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4542, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1928 */ 0xFFFD, 0x4543, 0xFFFD, 0xFFFD, 0xFFFD, 0x4544, 0x4545, 0x4546, -/* 1930 */ 0xFFFD, 0xFFFD, 0x4547, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4548, 0x4549, 0x454A, 0xFFFD, 0xFFFD, -/* 1940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x454B, 0xFFFD, 0x454D, 0x454C, -/* 1948 */ 0xFFFD, 0xFFFD, 0x454E, 0xFFFD, 0xFFFD, 0xFFFD, 0x454F, 0xFFFD, -/* 1950 */ 0xFFFD, 0xFFFD, 0x4550, 0x4551, 0x4552, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1958 */ 0xFFFD, 0xFFFD, 0x4553, 0x4554, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1960 */ 0xFFFD, 0xFFFD, 0x4555, 0xFFFD, 0xFFFD, 0x4556, 0xFFFD, 0xFFFD, -/* 1968 */ 0xFFFD, 0xFFFD, 0x4557, 0xFFFD, 0xFFFD, 0xFFFD, 0x4558, 0x4559, -/* 1970 */ 0x455A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1978 */ 0xFFFD, 0xFFFD, 0x455B, 0x455C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1980 */ 0x455D, 0x455E, 0xFFFD, 0xFFFD, 0x455F, 0x4560, 0xFFFD, 0x4561, -/* 1988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4562, 0x4563, 0x4564, -/* 1990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4565, 0xFFFD, 0xFFFD, -/* 1998 */ 0xFFFD, 0x4566, 0xFFFD, 0xFFFD, 0x4567, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A0 */ 0xFFFD, 0xFFFD, 0x4568, 0xFFFD, 0xFFFD, 0xFFFD, 0x4569, 0xFFFD, -/* 19A8 */ 0xFFFD, 0x456A, 0x456B, 0xFFFD, 0xFFFD, 0x456C, 0xFFFD, 0xFFFD, -/* 19B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x456D, 0x456E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19B8 */ 0xFFFD, 0x456F, 0xFFFD, 0xFFFD, 0xFFFD, 0x4570, 0xFFFD, 0xFFFD, -/* 19C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4571, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19C8 */ 0x4572, 0xFFFD, 0xFFFD, 0x4573, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19D0 */ 0x4574, 0xFFFD, 0xFFFD, 0xFFFD, 0x4575, 0xFFFD, 0x4576, 0xFFFD, -/* 19D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4577, 0xFFFD, 0xFFFD, 0x4578, 0xFFFD, -/* 19E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4579, 0xFFFD, 0xFFFD, -/* 19E8 */ 0xFFFD, 0x457A, 0xFFFD, 0xFFFD, 0x457B, 0xFFFD, 0x457C, 0xFFFD, -/* 19F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x457D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x457E, 0x4621, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A00 */ 0x4622, 0xFFFD, 0xFFFD, 0x4623, 0x4624, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A08 */ 0x4625, 0xFFFD, 0xFFFD, 0xFFFD, 0x4626, 0x4627, 0xFFFD, 0x4628, -/* 1A10 */ 0x4629, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x462A, 0x462B, 0xFFFD, -/* 1A18 */ 0xFFFD, 0x462C, 0x462D, 0x462E, 0xFFFD, 0x462F, 0xFFFD, 0xFFFD, -/* 1A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4630, 0x4631, 0xFFFD, -/* 1A28 */ 0xFFFD, 0xFFFD, 0x4632, 0x4633, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A30 */ 0x4634, 0x4635, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4636, 0xFFFD, -/* 1A38 */ 0xFFFD, 0x4637, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4638, 0xFFFD, 0xFFFD, 0xFFFD, 0x4639, -/* 1A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x463A, 0xFFFD, -/* 1A50 */ 0x463B, 0xFFFD, 0xFFFD, 0x463C, 0x463D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x463E, 0xFFFD, 0xFFFD, 0x463F, 0xFFFD, -/* 1A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4640, 0xFFFD, 0x4641, 0xFFFD, -/* 1A68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4642, 0xFFFD, 0xFFFD, 0x4643, -/* 1A70 */ 0xFFFD, 0x4644, 0x4645, 0xFFFD, 0xFFFD, 0xFFFD, 0x4646, 0xFFFD, -/* 1A78 */ 0xFFFD, 0xFFFD, 0x4647, 0x4648, 0xFFFD, 0x4649, 0xFFFD, 0x464A, -/* 1A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x464B, 0xFFFD, -/* 1A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x464C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x464D, 0x464E, 0x464F, 0xFFFD, 0xFFFD, -/* 1A98 */ 0xFFFD, 0x4650, 0xFFFD, 0x4651, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AA0 */ 0x4652, 0xFFFD, 0x4653, 0x4654, 0xFFFD, 0xFFFD, 0xFFFD, 0x4655, -/* 1AA8 */ 0x4656, 0xFFFD, 0xFFFD, 0xFFFD, 0x4657, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4658, -/* 1AB8 */ 0x4659, 0xFFFD, 0x465A, 0xFFFD, 0x465B, 0xFFFD, 0xFFFD, 0x465C, -/* 1AC0 */ 0xFFFD, 0x465D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x465E, 0xFFFD, -/* 1AC8 */ 0x465F, 0x4660, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4736, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AD8 */ 0x4661, 0xFFFD, 0x4662, 0xFFFD, 0x4663, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AE0 */ 0xFFFD, 0x4664, 0xFFFD, 0x4665, 0xFFFD, 0x4666, 0x4667, 0xFFFD, -/* 1AE8 */ 0x4668, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AF0 */ 0xFFFD, 0xFFFD, 0x4669, 0x466A, 0x466B, 0xFFFD, 0x466C, 0xFFFD, -/* 1AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B00 */ 0xFFFD, 0x466D, 0x466E, 0xFFFD, 0x466F, 0x4670, 0xFFFD, 0xFFFD, -/* 1B08 */ 0xFFFD, 0x4671, 0xFFFD, 0xFFFD, 0x4672, 0x4673, 0xFFFD, 0x4674, -/* 1B10 */ 0xFFFD, 0x4675, 0x4676, 0xFFFD, 0xFFFD, 0xFFFD, 0x4677, 0xFFFD, -/* 1B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4678, 0xFFFD, 0x4679, -/* 1B20 */ 0x467A, 0x467B, 0x467C, 0xFFFD, 0x467D, 0xFFFD, 0x467E, 0xFFFD, -/* 1B28 */ 0xFFFD, 0xFFFD, 0x4721, 0xFFFD, 0x4722, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B30 */ 0x4723, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4724, -/* 1B38 */ 0xFFFD, 0x4725, 0xFFFD, 0x4726, 0x4727, 0xFFFD, 0x4728, 0xFFFD, -/* 1B40 */ 0xFFFD, 0xFFFD, 0x4729, 0xFFFD, 0x472A, 0x472B, 0xFFFD, 0xFFFD, -/* 1B48 */ 0x472C, 0xFFFD, 0xFFFD, 0x472D, 0xFFFD, 0xFFFD, 0xFFFD, 0x472E, -/* 1B50 */ 0x472F, 0xFFFD, 0x4730, 0xFFFD, 0x4731, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4732, 0x4733, 0x4734, 0x4735, 0xFFFD, -/* 1B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4737, 0x4738, 0xFFFD, 0x4739, -/* 1B68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x473A, -/* 1B70 */ 0xFFFD, 0xFFFD, 0x473B, 0xFFFD, 0xFFFD, 0x473C, 0x473D, 0xFFFD, -/* 1B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x473E, 0x473F, 0xFFFD, -/* 1B80 */ 0x4740, 0xFFFD, 0xFFFD, 0xFFFD, 0x4741, 0xFFFD, 0x4742, 0xFFFD, -/* 1B88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4743, 0x4744, -/* 1B90 */ 0x4745, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4746, 0xFFFD, -/* 1B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4747, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4748, 0x4749, 0xFFFD, -/* 1BA8 */ 0x474A, 0xFFFD, 0x474B, 0x474C, 0x474D, 0x474E, 0xFFFD, 0x474F, -/* 1BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4750, -/* 1BB8 */ 0xFFFD, 0xFFFD, 0x4751, 0xFFFD, 0x4752, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BC0 */ 0x4753, 0xFFFD, 0x4754, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4755, -/* 1BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4756, 0xFFFD, 0x4757, 0xFFFD, 0xFFFD, -/* 1BD0 */ 0xFFFD, 0x4758, 0x4759, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BD8 */ 0xFFFD, 0x475A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x475B, 0xFFFD, -/* 1BE0 */ 0x475C, 0xFFFD, 0x475D, 0x475E, 0xFFFD, 0x475F, 0xFFFD, 0xFFFD, -/* 1BE8 */ 0x4760, 0xFFFD, 0xFFFD, 0xFFFD, 0x4761, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BF0 */ 0xFFFD, 0xFFFD, 0x4762, 0x4763, 0xFFFD, 0xFFFD, 0xFFFD, 0x4764, -/* 1BF8 */ 0xFFFD, 0x4765, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4766, -/* 1C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4767, 0xFFFD, 0xFFFD, 0xFFFD, 0x4768, -/* 1C08 */ 0x4769, 0xFFFD, 0xFFFD, 0xFFFD, 0x476A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C10 */ 0xFFFD, 0x476B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x476C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C20 */ 0x476D, 0xFFFD, 0xFFFD, 0x476E, 0xFFFD, 0x476F, 0x4770, 0xFFFD, -/* 1C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4771, 0x4772, -/* 1C30 */ 0xFFFD, 0xFFFD, 0x4773, 0x4774, 0xFFFD, 0x4775, 0xFFFD, 0xFFFD, -/* 1C38 */ 0xFFFD, 0x4776, 0xFFFD, 0x4777, 0x4778, 0x4779, 0x477A, 0xFFFD, -/* 1C40 */ 0xFFFD, 0x477B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x477C, 0x477D, -/* 1C48 */ 0x477E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4821, 0x4822, 0xFFFD, 0xFFFD, -/* 1C50 */ 0xFFFD, 0xFFFD, 0x4823, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4824, 0xFFFD, 0xFFFD, -/* 1C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4825, 0xFFFD, 0x4826, -/* 1C68 */ 0x4827, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4828, 0xFFFD, -/* 1C70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4829, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x482A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C80 */ 0xFFFD, 0xFFFD, 0x482B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C88 */ 0x482C, 0x482D, 0xFFFD, 0xFFFD, 0x482E, 0xFFFD, 0x482F, 0xFFFD, -/* 1C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4830, 0xFFFD, -/* 1C98 */ 0xFFFD, 0xFFFD, 0x4831, 0x4832, 0x4833, 0xFFFD, 0x4834, 0xFFFD, -/* 1CA0 */ 0xFFFD, 0xFFFD, 0x4835, 0x4836, 0xFFFD, 0x4837, 0xFFFD, 0xFFFD, -/* 1CA8 */ 0x4838, 0x4839, 0x483A, 0x483B, 0xFFFD, 0x483C, 0x483D, 0xFFFD, -/* 1CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CB8 */ 0xFFFD, 0x483E, 0xFFFD, 0x483F, 0xFFFD, 0x4840, 0xFFFD, 0xFFFD, -/* 1CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4841, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CC8 */ 0x4842, 0xFFFD, 0x4843, 0xFFFD, 0x4844, 0x4845, 0xFFFD, 0xFFFD, -/* 1CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4846, 0xFFFD, -/* 1CD8 */ 0x4847, 0xFFFD, 0x4848, 0x4849, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x484A, 0xFFFD, -/* 1CE8 */ 0xFFFD, 0x484B, 0x484C, 0xFFFD, 0xFFFD, 0x4853, 0xFFFD, 0x484D, -/* 1CF0 */ 0x484E, 0xFFFD, 0xFFFD, 0x484F, 0xFFFD, 0xFFFD, 0x4850, 0xFFFD, -/* 1CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4851, 0x4852, 0x4854, 0xFFFD, 0x4855, -/* 1D00 */ 0x4856, 0x4857, 0xFFFD, 0xFFFD, 0xFFFD, 0x4858, 0xFFFD, 0x4859, -/* 1D08 */ 0x485A, 0xFFFD, 0xFFFD, 0x485B, 0x485C, 0xFFFD, 0xFFFD, 0x485D, -/* 1D10 */ 0x485E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x485F, 0xFFFD, -/* 1D18 */ 0xFFFD, 0xFFFD, 0x4860, 0x4861, 0x4862, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D20 */ 0xFFFD, 0x4863, 0xFFFD, 0xFFFD, 0xFFFD, 0x4864, 0x4865, 0xFFFD, -/* 1D28 */ 0xFFFD, 0x4866, 0x4867, 0x4868, 0xFFFD, 0xFFFD, 0x4869, 0xFFFD, -/* 1D30 */ 0x486A, 0x486B, 0x486C, 0xFFFD, 0x486D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D38 */ 0x486E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x486F, 0x4870, 0xFFFD, -/* 1D40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4871, 0x4872, 0x4873, 0x4874, 0xFFFD, -/* 1D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4875, 0x4876, 0x4877, 0xFFFD, -/* 1D50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4878, 0x4879, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D58 */ 0xFFFD, 0xFFFD, 0x487A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x487B, 0xFFFD, 0x487C, 0x487D, 0xFFFD, -/* 1D68 */ 0x487E, 0x4921, 0xFFFD, 0xFFFD, 0xFFFD, 0x4922, 0xFFFD, 0xFFFD, -/* 1D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4923, -/* 1D78 */ 0x4924, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4925, -/* 1D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4926, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D88 */ 0x4927, 0xFFFD, 0xFFFD, 0x4928, 0x4929, 0xFFFD, 0xFFFD, 0x492A, -/* 1D90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x492B, 0x492C, 0x492D, 0xFFFD, -/* 1D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x492E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x492F, 0xFFFD, -/* 1DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4930, -/* 1DB0 */ 0xFFFD, 0xFFFD, 0x4931, 0x4932, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DB8 */ 0x4933, 0xFFFD, 0xFFFD, 0x4934, 0xFFFD, 0x4935, 0xFFFD, 0xFFFD, -/* 1DC0 */ 0x4936, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4937, -/* 1DC8 */ 0x4938, 0xFFFD, 0xFFFD, 0xFFFD, 0x4939, 0x493A, 0x493B, 0x493C, -/* 1DD0 */ 0xFFFD, 0xFFFD, 0x4941, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DD8 */ 0x493D, 0x493E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DE0 */ 0xFFFD, 0x493F, 0x4940, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DE8 */ 0x4942, 0x4943, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DF0 */ 0x4944, 0xFFFD, 0x4945, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DF8 */ 0xFFFD, 0x4946, 0x4947, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E00 */ 0xFFFD, 0xFFFD, 0x4948, 0xFFFD, 0xFFFD, 0x4949, 0xFFFD, 0xFFFD, -/* 1E08 */ 0xFFFD, 0x494A, 0x494B, 0x494C, 0x494D, 0x494E, 0x494F, 0x4950, -/* 1E10 */ 0xFFFD, 0xFFFD, 0x4951, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4952, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E20 */ 0xFFFD, 0xFFFD, 0x4953, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4954, -/* 1E28 */ 0x4955, 0xFFFD, 0xFFFD, 0x4956, 0xFFFD, 0xFFFD, 0x4957, 0x4958, -/* 1E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4959, 0xFFFD, -/* 1E38 */ 0x495A, 0x495B, 0x495C, 0x495D, 0xFFFD, 0x495E, 0xFFFD, 0xFFFD, -/* 1E40 */ 0xFFFD, 0x495F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E48 */ 0xFFFD, 0x4960, 0x4961, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, -/* 1E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4967, 0x4968, 0xFFFD, 0xFFFD, 0x4969, -/* 1E60 */ 0x496A, 0xFFFD, 0x496B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x496C, 0xFFFD, 0x496D, -/* 1E70 */ 0xFFFD, 0x496E, 0x496F, 0x4970, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E78 */ 0xFFFD, 0xFFFD, 0x4971, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4972, 0xFFFD, 0xFFFD, 0xFFFD, 0x4973, -/* 1E88 */ 0x4974, 0x4975, 0xFFFD, 0xFFFD, 0x4976, 0x4977, 0xFFFD, 0xFFFD, -/* 1E90 */ 0xFFFD, 0xFFFD, 0x4978, 0xFFFD, 0x4979, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E98 */ 0xFFFD, 0x497A, 0xFFFD, 0xFFFD, 0x497B, 0xFFFD, 0x497C, 0xFFFD, -/* 1EA0 */ 0x497D, 0xFFFD, 0x497E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EA8 */ 0xFFFD, 0xFFFD, 0x4A21, 0x4A22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EB0 */ 0xFFFD, 0xFFFD, 0x4A23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A24, -/* 1EB8 */ 0xFFFD, 0x4A25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A26, 0xFFFD, -/* 1EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A27, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A28, 0x4A29, 0xFFFD, 0xFFFD, -/* 1ED0 */ 0xFFFD, 0xFFFD, 0x4A2A, 0xFFFD, 0x4A2B, 0x4A2C, 0x4A2D, 0xFFFD, -/* 1ED8 */ 0x4A2E, 0x4A2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EE0 */ 0x4A30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A31, 0x4A32, 0x4A33, -/* 1EE8 */ 0xFFFD, 0xFFFD, 0x4A34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EF0 */ 0xFFFD, 0x4A35, 0x4A36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EF8 */ 0xFFFD, 0x4A37, 0xFFFD, 0xFFFD, 0x4A38, 0xFFFD, 0xFFFD, 0x4A39, -/* 1F00 */ 0x4A3A, 0xFFFD, 0x4A3B, 0x4A3C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F08 */ 0xFFFD, 0x4A3D, 0xFFFD, 0x4A3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F10 */ 0xFFFD, 0xFFFD, 0x4A3F, 0x4A40, 0x4A41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A42, 0xFFFD, -/* 1F20 */ 0xFFFD, 0xFFFD, 0x4A43, 0xFFFD, 0xFFFD, 0x4A44, 0xFFFD, 0xFFFD, -/* 1F28 */ 0x4A45, 0xFFFD, 0x4A46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A47, -/* 1F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A48, 0xFFFD, -/* 1F38 */ 0xFFFD, 0xFFFD, 0x4A49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A4A, -/* 1F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A4B, 0x4A4C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A4D, 0x4A4E, 0x4A4F, 0xFFFD, -/* 1F50 */ 0x4A50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F58 */ 0xFFFD, 0x4A51, 0x4A52, 0x4A53, 0xFFFD, 0xFFFD, 0x4A54, 0xFFFD, -/* 1F60 */ 0x4A55, 0x4A56, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A57, 0xFFFD, 0x4A58, -/* 1F68 */ 0xFFFD, 0x4A59, 0xFFFD, 0x4A5A, 0xFFFD, 0xFFFD, 0x4A5B, 0xFFFD, -/* 1F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A5C, 0xFFFD, 0xFFFD, 0x4A5D, 0xFFFD, -/* 1F78 */ 0xFFFD, 0x4A5E, 0x4A5F, 0xFFFD, 0x4A60, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F80 */ 0xFFFD, 0xFFFD, 0x4A61, 0x4A62, 0xFFFD, 0xFFFD, 0x4A63, 0x4A64, -/* 1F88 */ 0xFFFD, 0xFFFD, 0x4A65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A66, -/* 1F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A67, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F98 */ 0x4A68, 0x4A69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A6A, 0xFFFD, -/* 1FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A6B, 0x4A6C, -/* 1FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A6D, 0x4A6E, 0xFFFD, 0xFFFD, -/* 1FB0 */ 0x4A6F, 0xFFFD, 0xFFFD, 0x4A70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A71, 0xFFFD, 0xFFFD, -/* 1FC0 */ 0x4A72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A73, 0xFFFD, -/* 1FC8 */ 0x4A74, 0xFFFD, 0xFFFD, 0x4A75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A76, 0x4A77, 0xFFFD, 0x4A78, -/* 1FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A79, 0xFFFD, -/* 1FE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A7A, 0x4A7B, 0x4A7C, 0xFFFD, -/* 1FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A7D, 0x4A7E, 0xFFFD, 0xFFFD, -/* 1FF0 */ 0x4B21, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B22, 0xFFFD, 0x4B23, 0x4B24, -/* 1FF8 */ 0xFFFD, 0x4B25, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B26, 0xFFFD, 0x4B27, -/* 2000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B28, 0x4B29, 0xFFFD, 0xFFFD, -/* 2008 */ 0xFFFD, 0xFFFD, 0x4B2A, 0x4B2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2010 */ 0x4B2C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B2D, 0xFFFD, 0x4B2E, 0xFFFD, -/* 2018 */ 0xFFFD, 0x4B2F, 0x4B30, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B31, 0xFFFD, -/* 2020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B32, 0x4B33, 0xFFFD, 0xFFFD, 0x4B34, -/* 2028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B35, 0x4B36, 0xFFFD, 0x4B37, -/* 2030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B38, 0xFFFD, 0xFFFD, -/* 2038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B39, -/* 2040 */ 0xFFFD, 0xFFFD, 0x4B3A, 0xFFFD, 0x4B3B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2048 */ 0x4B3C, 0xFFFD, 0x4B3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B3E, -/* 2050 */ 0x4B3F, 0x4B40, 0x4B41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2058 */ 0x4B42, 0x4B43, 0xFFFD, 0x4B44, 0xFFFD, 0x4B45, 0x4B46, 0xFFFD, -/* 2060 */ 0x4B47, 0x4B48, 0xFFFD, 0x4B49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2068 */ 0xFFFD, 0x4B4A, 0xFFFD, 0x4B4B, 0xFFFD, 0xFFFD, 0x4B4C, 0xFFFD, -/* 2070 */ 0xFFFD, 0xFFFD, 0x4B4D, 0x4B4E, 0xFFFD, 0x4B4F, 0xFFFD, 0x4B50, -/* 2078 */ 0x4B51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2080 */ 0x4B52, 0xFFFD, 0x4B53, 0xFFFD, 0xFFFD, 0x4B54, 0xFFFD, 0x4B55, -/* 2088 */ 0xFFFD, 0x4B56, 0x4B57, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B58, 0xFFFD, -/* 2090 */ 0x4B59, 0x4B5A, 0x4B5B, 0xFFFD, 0x4B5C, 0xFFFD, 0xFFFD, 0x4B5D, -/* 2098 */ 0x4B5E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B5F, 0x4B60, 0xFFFD, 0x4B61, -/* 20A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B62, -/* 20A8 */ 0xFFFD, 0x4B63, 0xFFFD, 0x4B64, 0xFFFD, 0xFFFD, 0x4B65, 0x4B66, -/* 20B0 */ 0xFFFD, 0x4B67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B68, -/* 20B8 */ 0x4B69, 0xFFFD, 0xFFFD, 0x4B6A, 0xFFFD, 0x4B6B, 0x4B6C, 0xFFFD, -/* 20C0 */ 0xFFFD, 0x4B6D, 0xFFFD, 0xFFFD, 0x4B6E, 0x4B6F, 0xFFFD, 0xFFFD, -/* 20C8 */ 0x4B70, 0xFFFD, 0xFFFD, 0x4B71, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B72, -/* 20D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B73, 0xFFFD, 0x4B74, 0xFFFD, 0xFFFD, -/* 20D8 */ 0x4B75, 0x4B76, 0xFFFD, 0x4B77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B78, 0x4B79, -/* 20E8 */ 0xFFFD, 0x4B7A, 0xFFFD, 0x4B7B, 0x4B7C, 0x4B7D, 0xFFFD, 0x4B7E, -/* 20F0 */ 0xFFFD, 0x4C21, 0x4C22, 0x4C23, 0xFFFD, 0xFFFD, 0x4C24, 0xFFFD, -/* 20F8 */ 0xFFFD, 0x4C25, 0xFFFD, 0xFFFD, 0x4C26, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C28, 0x4C29, 0xFFFD, 0xFFFD, -/* 2110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C2A, 0xFFFD, -/* 2118 */ 0x4C2B, 0x4C36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2120 */ 0x4C37, 0xFFFD, 0xFFFD, 0x4C38, 0x4C39, 0xFFFD, 0x4C3A, 0x4C3B, -/* 2128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C3C, 0xFFFD, 0x4C3D, 0xFFFD, 0xFFFD, -/* 2130 */ 0xFFFD, 0x4C3E, 0x4C3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C40, -/* 2138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C41, 0xFFFD, 0xFFFD, -/* 2140 */ 0xFFFD, 0xFFFD, 0x4C42, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C43, 0x4C44, -/* 2148 */ 0x4C45, 0xFFFD, 0xFFFD, 0x4C46, 0xFFFD, 0x4C47, 0x4C48, 0xFFFD, -/* 2150 */ 0xFFFD, 0x4C49, 0x4C4A, 0x4C4B, 0x4C4C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2158 */ 0x4C4D, 0x4C4E, 0x4C4F, 0xFFFD, 0x4C50, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2160 */ 0xFFFD, 0xFFFD, 0x4C51, 0x4C52, 0x4C53, 0x4C54, 0xFFFD, 0xFFFD, -/* 2168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C55, 0x4C56, 0x4C57, 0xFFFD, 0x4C58, -/* 2170 */ 0xFFFD, 0xFFFD, 0x4C59, 0x4C5A, 0x4C5B, 0xFFFD, 0x4C5C, 0xFFFD, -/* 2178 */ 0xFFFD, 0x4C5D, 0xFFFD, 0x4C5E, 0x4C5F, 0x4C60, 0x4C61, 0xFFFD, -/* 2180 */ 0xFFFD, 0x4C62, 0x4C63, 0xFFFD, 0x4C64, 0x4C65, 0xFFFD, 0xFFFD, -/* 2188 */ 0x4C66, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C67, 0xFFFD, 0x4C68, 0xFFFD, -/* 2190 */ 0xFFFD, 0xFFFD, 0x4C69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C6A, 0x4C6B, 0xFFFD, 0xFFFD, 0x4C6C, -/* 21A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C6D, 0xFFFD, 0xFFFD, 0x4C6E, 0xFFFD, -/* 21A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C6F, 0xFFFD, 0x4C70, 0x4C71, 0xFFFD, -/* 21B0 */ 0xFFFD, 0x4C72, 0x4C73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C74, -/* 21B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C75, 0xFFFD, 0x4C76, 0x4C77, 0xFFFD, -/* 21C0 */ 0xFFFD, 0xFFFD, 0x4C78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C79, -/* 21C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C7A, 0x4C7B, 0x4C7C, -/* 21D0 */ 0xFFFD, 0xFFFD, 0x4C7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21D8 */ 0xFFFD, 0x4C7E, 0x4D21, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D22, 0x4D23, -/* 21E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21E8 */ 0x4D24, 0x4D25, 0xFFFD, 0xFFFD, 0x4D26, 0xFFFD, 0xFFFD, 0x4D27, -/* 21F0 */ 0xFFFD, 0x4D28, 0x4D29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D2A, -/* 21F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D2B, 0xFFFD, -/* 2200 */ 0xFFFD, 0x4D2C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D2D, 0x4D2E, 0x4D2F, -/* 2208 */ 0x4D30, 0xFFFD, 0xFFFD, 0x4D31, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D32, -/* 2210 */ 0x4D33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D34, 0xFFFD, -/* 2218 */ 0x4D35, 0xFFFD, 0x4D36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D37, -/* 2220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D38, 0x4D39, -/* 2228 */ 0xFFFD, 0x4D3A, 0x4D3B, 0xFFFD, 0x4D3C, 0x4D43, 0xFFFD, 0xFFFD, -/* 2230 */ 0xFFFD, 0x4D44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D45, 0xFFFD, 0x4D46, 0x4D47, -/* 2240 */ 0xFFFD, 0x4D48, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D49, 0xFFFD, 0xFFFD, -/* 2248 */ 0x4D4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D4B, 0xFFFD, -/* 2250 */ 0x4D4C, 0x4D4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D4E, -/* 2258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D4F, 0x4D50, 0x4D51, 0xFFFD, -/* 2260 */ 0xFFFD, 0x4D52, 0xFFFD, 0x4D53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2268 */ 0xFFFD, 0x4D54, 0xFFFD, 0x4D55, 0x4D56, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D57, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2278 */ 0xFFFD, 0x4D58, 0xFFFD, 0xFFFD, 0x4D59, 0x4D5A, 0x4D5B, 0xFFFD, -/* 2280 */ 0xFFFD, 0x4D5C, 0xFFFD, 0xFFFD, 0x4D5D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2288 */ 0xFFFD, 0x4D5E, 0xFFFD, 0x4D5F, 0x4D60, 0xFFFD, 0x4D61, 0xFFFD, -/* 2290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D62, 0xFFFD, -/* 2298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D63, 0xFFFD, 0x4D64, -/* 22A0 */ 0x4D65, 0x4D66, 0xFFFD, 0xFFFD, 0x4D67, 0x4D68, 0xFFFD, 0x4D69, -/* 22A8 */ 0xFFFD, 0x4D6A, 0xFFFD, 0xFFFD, 0x4D6B, 0xFFFD, 0xFFFD, 0x4D6C, -/* 22B0 */ 0x4D6D, 0xFFFD, 0x4D6E, 0x4D6F, 0xFFFD, 0xFFFD, 0x4D70, 0xFFFD, -/* 22B8 */ 0x4D71, 0x4D72, 0x4D73, 0x4D74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22C0 */ 0x4D75, 0xFFFD, 0x4D76, 0x4D77, 0xFFFD, 0xFFFD, 0x4D78, 0xFFFD, -/* 22C8 */ 0xFFFD, 0xFFFD, 0x4D79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D7A, -/* 22D0 */ 0x4D7B, 0xFFFD, 0x4D7C, 0xFFFD, 0xFFFD, 0x4D7D, 0x4D7E, 0x4E21, -/* 22D8 */ 0xFFFD, 0x4E22, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E24, 0x4E25, 0xFFFD, -/* 22E0 */ 0x4E26, 0x4E27, 0x4E28, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E29, 0x4E23, -/* 22E8 */ 0x4E2A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22F0 */ 0xFFFD, 0xFFFD, 0x4E2B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E2C, 0xFFFD, -/* 22F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E2D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2300 */ 0xFFFD, 0x4E2E, 0x4E2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2308 */ 0xFFFD, 0xFFFD, 0x4E30, 0x4E31, 0x4E32, 0xFFFD, 0x4E33, 0xFFFD, -/* 2310 */ 0xFFFD, 0x4E34, 0x4E35, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E36, 0xFFFD, -/* 2318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E37, 0x4E38, 0xFFFD, -/* 2320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E39, 0xFFFD, -/* 2328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E3A, 0x4E3B, 0x4E3C, 0xFFFD, -/* 2330 */ 0x4E3D, 0x4E3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E46, 0xFFFD, 0xFFFD, 0x4E47, 0x4E48, -/* 2340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E49, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E4A, -/* 2348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E4B, 0xFFFD, 0x4E4C, 0x4E4D, 0xFFFD, -/* 2350 */ 0x4E4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E4F, 0xFFFD, -/* 2358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2360 */ 0xFFFD, 0xFFFD, 0x4E51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2368 */ 0x4E52, 0xFFFD, 0x4E53, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E54, 0xFFFD, -/* 2370 */ 0xFFFD, 0xFFFD, 0x4E55, 0x4E56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2378 */ 0x4E57, 0xFFFD, 0xFFFD, 0x4E58, 0xFFFD, 0xFFFD, 0x4E59, 0xFFFD, -/* 2380 */ 0xFFFD, 0xFFFD, 0x4E5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2388 */ 0x4E5B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E5C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2390 */ 0x4E5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E5E, 0xFFFD, 0x4E5F, 0x4E60, -/* 2398 */ 0xFFFD, 0x4E61, 0xFFFD, 0x4E62, 0x4E63, 0xFFFD, 0x4E64, 0xFFFD, -/* 23A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E65, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23A8 */ 0xFFFD, 0xFFFD, 0x4E66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E67, -/* 23B0 */ 0x4E68, 0x4E69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E6A, 0x4E6B, -/* 23B8 */ 0x4E6C, 0xFFFD, 0xFFFD, 0x4E6D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E6E, -/* 23C0 */ 0x4E6F, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E70, 0xFFFD, 0xFFFD, 0x4E71, -/* 23C8 */ 0x4E72, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E73, 0xFFFD, 0xFFFD, 0x4E74, -/* 23D0 */ 0x4E75, 0x4E76, 0xFFFD, 0xFFFD, 0x4E77, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23D8 */ 0x4E78, 0x4E79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E7A, 0xFFFD, -/* 23E0 */ 0x4E7B, 0x4E7C, 0x4E7D, 0xFFFD, 0x4E7E, 0xFFFD, 0x4F21, 0xFFFD, -/* 23E8 */ 0xFFFD, 0x4F22, 0xFFFD, 0xFFFD, 0x4F23, 0xFFFD, 0x4F24, 0xFFFD, -/* 23F0 */ 0xFFFD, 0xFFFD, 0x4F25, 0xFFFD, 0x4F26, 0x4F27, 0x4F28, 0xFFFD, -/* 23F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F29, 0xFFFD, 0xFFFD, 0x4F2A, -/* 2400 */ 0xFFFD, 0xFFFD, 0x4F2B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F2C, 0xFFFD, -/* 2408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F2D, 0x4F2E, -/* 2410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F2F, 0x4F30, -/* 2418 */ 0x4F31, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F32, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2420 */ 0xFFFD, 0x4F33, 0xFFFD, 0xFFFD, 0x4F34, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2428 */ 0xFFFD, 0x4F35, 0xFFFD, 0xFFFD, 0x4F36, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2430 */ 0x4F37, 0x4F38, 0xFFFD, 0x4F39, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F3A, -/* 2438 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2440 */ 0x4F3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F3C, 0xFFFD, 0xFFFD, -/* 2448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F3E, 0x4F3F, 0xFFFD, 0xFFFD, 0x4F40, -/* 2458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2460 */ 0x4F42, 0x4F43, 0x4F44, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F45, 0xFFFD, -/* 2468 */ 0x4F46, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F47, 0xFFFD, 0x4F48, 0xFFFD, -/* 2470 */ 0xFFFD, 0xFFFD, 0x4F49, 0x4F4A, 0xFFFD, 0xFFFD, 0x4F4B, 0xFFFD, -/* 2478 */ 0xFFFD, 0xFFFD, 0x4F4C, 0xFFFD, 0xFFFD, 0x4F4D, 0xFFFD, 0xFFFD, -/* 2480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F4E, -/* 2488 */ 0x4F4F, 0xFFFD, 0xFFFD, 0x4F50, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F51, -/* 2490 */ 0x4F52, 0xFFFD, 0xFFFD, 0x4F53, 0x4F54, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2498 */ 0x4F55, 0x4F56, 0x4F57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F58, 0x4F59, 0xFFFD, 0x4F5A, -/* 24A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F5B, 0xFFFD, 0x4F5C, 0x4F5D, -/* 24B0 */ 0x4F5E, 0xFFFD, 0xFFFD, 0x4F5F, 0x4F60, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24B8 */ 0x4F61, 0xFFFD, 0x4F62, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F63, 0xFFFD, -/* 24C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24C8 */ 0x4F64, 0xFFFD, 0x4F65, 0xFFFD, 0x4F66, 0x4F67, 0xFFFD, 0x4F68, -/* 24D0 */ 0x4F69, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F6A, 0xFFFD, 0x4F6B, 0xFFFD, -/* 24D8 */ 0xFFFD, 0xFFFD, 0x4F6C, 0x4F6D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F6E, -/* 24E0 */ 0x4F6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F70, 0xFFFD, 0xFFFD, -/* 24E8 */ 0xFFFD, 0xFFFD, 0x4F71, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F72, 0xFFFD, -/* 24F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F74, 0x4F75, 0x4F76, 0xFFFD, 0x4F73, -/* 24F8 */ 0xFFFD, 0xFFFD, 0x4F77, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F78, 0xFFFD, -/* 2500 */ 0xFFFD, 0xFFFD, 0x4F79, 0x4F7A, 0xFFFD, 0xFFFD, 0x4F7B, 0x4F7C, -/* 2508 */ 0x4F7D, 0x4F7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2510 */ 0xFFFD, 0x5021, 0xFFFD, 0x5022, 0xFFFD, 0x5023, 0xFFFD, 0xFFFD, -/* 2518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5024, 0x5025, 0x5026, -/* 2520 */ 0xFFFD, 0xFFFD, 0x5027, 0xFFFD, 0x5028, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2528 */ 0x5029, 0x502A, 0xFFFD, 0x502B, 0x502C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2530 */ 0xFFFD, 0x502E, 0xFFFD, 0xFFFD, 0xFFFD, 0x502F, 0x5030, 0x5031, -/* 2538 */ 0xFFFD, 0xFFFD, 0x502D, 0xFFFD, 0x5032, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2540 */ 0x5033, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2548 */ 0x5034, 0x5035, 0xFFFD, 0xFFFD, 0x5037, 0x5038, 0xFFFD, 0xFFFD, -/* 2550 */ 0x5039, 0x503A, 0xFFFD, 0xFFFD, 0xFFFD, 0x503B, 0x5036, 0xFFFD, -/* 2558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x503C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2560 */ 0xFFFD, 0xFFFD, 0x503D, 0xFFFD, 0xFFFD, 0xFFFD, 0x503E, 0xFFFD, -/* 2568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2570 */ 0x503F, 0xFFFD, 0x5040, 0xFFFD, 0x5041, 0x5042, 0x5043, 0xFFFD, -/* 2578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5044, 0xFFFD, 0x5045, 0xFFFD, 0x5046, -/* 2580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5047, 0xFFFD, 0xFFFD, 0xFFFD, 0x5048, -/* 2588 */ 0xFFFD, 0xFFFD, 0x5049, 0x504A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2590 */ 0xFFFD, 0x504B, 0xFFFD, 0x504C, 0xFFFD, 0x504D, 0xFFFD, 0xFFFD, -/* 2598 */ 0xFFFD, 0xFFFD, 0x504E, 0x504F, 0x5050, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25A0 */ 0x5051, 0x5052, 0xFFFD, 0xFFFD, 0xFFFD, 0x5053, 0xFFFD, 0x5054, -/* 25A8 */ 0xFFFD, 0xFFFD, 0x5055, 0xFFFD, 0xFFFD, 0xFFFD, 0x5056, 0xFFFD, -/* 25B0 */ 0xFFFD, 0x5057, 0x5058, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5059, 0xFFFD, 0x505A, -/* 25C0 */ 0xFFFD, 0x505B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25C8 */ 0x505C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x505D, -/* 25D0 */ 0xFFFD, 0x505E, 0x505F, 0xFFFD, 0x5060, 0x5061, 0x5062, 0xFFFD, -/* 25D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5063, 0xFFFD, 0x5064, 0x5065, 0x5066, -/* 25E0 */ 0x5067, 0xFFFD, 0x5068, 0xFFFD, 0xFFFD, 0x5069, 0x506A, 0xFFFD, -/* 25E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x506B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25F0 */ 0xFFFD, 0xFFFD, 0x506C, 0x506D, 0xFFFD, 0x506E, 0xFFFD, 0xFFFD, -/* 25F8 */ 0xFFFD, 0x506F, 0xFFFD, 0x5070, 0xFFFD, 0xFFFD, 0x5071, 0xFFFD, -/* 2600 */ 0xFFFD, 0xFFFD, 0x5072, 0xFFFD, 0xFFFD, 0x5073, 0xFFFD, 0xFFFD, -/* 2608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5074, 0xFFFD, 0x5075, 0xFFFD, -/* 2610 */ 0xFFFD, 0x5076, 0x5077, 0xFFFD, 0x5078, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2618 */ 0xFFFD, 0x5079, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x507A, 0xFFFD, -/* 2620 */ 0x507B, 0xFFFD, 0xFFFD, 0xFFFD, 0x507C, 0xFFFD, 0xFFFD, 0x507D, -/* 2628 */ 0x507E, 0xFFFD, 0x5121, 0xFFFD, 0x5122, 0xFFFD, 0xFFFD, 0x5123, -/* 2630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5124, 0x5125, 0xFFFD, 0x5126, -/* 2638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5127, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2640 */ 0xFFFD, 0xFFFD, 0x5128, 0xFFFD, 0xFFFD, 0xFFFD, 0x5129, 0xFFFD, -/* 2648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x512A, 0x512B, 0xFFFD, 0xFFFD, -/* 2650 */ 0xFFFD, 0x512C, 0xFFFD, 0x512D, 0x512E, 0xFFFD, 0x512F, 0xFFFD, -/* 2658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5130, 0xFFFD, 0xFFFD, 0xFFFD, 0x5131, -/* 2660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5132, 0xFFFD, 0xFFFD, -/* 2668 */ 0x5133, 0xFFFD, 0xFFFD, 0x5134, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2670 */ 0xFFFD, 0x5135, 0xFFFD, 0xFFFD, 0xFFFD, 0x5136, 0xFFFD, 0x5137, -/* 2678 */ 0xFFFD, 0x5138, 0x5139, 0xFFFD, 0xFFFD, 0xFFFD, 0x513A, 0x513B, -/* 2680 */ 0xFFFD, 0xFFFD, 0x513C, 0x513D, 0x513E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x513F, 0x5140, -/* 2690 */ 0xFFFD, 0x5141, 0x5142, 0xFFFD, 0xFFFD, 0xFFFD, 0x5143, 0xFFFD, -/* 2698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5144, -/* 26A0 */ 0x5145, 0xFFFD, 0xFFFD, 0x5146, 0xFFFD, 0xFFFD, 0x5147, 0x5148, -/* 26A8 */ 0xFFFD, 0x5149, 0x514A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x514B, -/* 26B0 */ 0xFFFD, 0x514C, 0xFFFD, 0xFFFD, 0x514D, 0xFFFD, 0xFFFD, 0x514E, -/* 26B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x514F, -/* 26C0 */ 0xFFFD, 0xFFFD, 0x5150, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26C8 */ 0x5151, 0xFFFD, 0x5152, 0xFFFD, 0x5153, 0xFFFD, 0xFFFD, 0x5154, -/* 26D0 */ 0x5155, 0xFFFD, 0xFFFD, 0xFFFD, 0x5156, 0x5157, 0xFFFD, 0xFFFD, -/* 26D8 */ 0xFFFD, 0xFFFD, 0x5158, 0x5159, 0xFFFD, 0xFFFD, 0x515A, 0xFFFD, -/* 26E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26E8 */ 0x515B, 0xFFFD, 0x515C, 0xFFFD, 0xFFFD, 0x515D, 0xFFFD, 0xFFFD, -/* 26F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x515E, 0xFFFD, -/* 26F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x515F, 0xFFFD, 0x5160, -/* 2700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5161, 0xFFFD, 0x5162, 0x5163, 0xFFFD, -/* 2708 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2710 */ 0x5164, 0xFFFD, 0xFFFD, 0x5165, 0xFFFD, 0xFFFD, 0x5166, 0xFFFD, -/* 2718 */ 0x5167, 0xFFFD, 0xFFFD, 0x5168, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5169, 0x516A, 0x516B, -/* 2728 */ 0xFFFD, 0x516C, 0x516D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x516E, -/* 2730 */ 0xFFFD, 0xFFFD, 0x516F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2738 */ 0xFFFD, 0x5170, 0xFFFD, 0x5171, 0x5172, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5173, 0x5174, 0xFFFD, -/* 2748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2750 */ 0xFFFD, 0x5175, 0xFFFD, 0xFFFD, 0xFFFD, 0x5176, 0xFFFD, 0xFFFD, -/* 2758 */ 0xFFFD, 0x5177, 0xFFFD, 0x5178, 0x5179, 0x517A, 0xFFFD, 0x517B, -/* 2760 */ 0x517C, 0x517D, 0x517E, 0x5221, 0xFFFD, 0xFFFD, 0x5222, 0xFFFD, -/* 2768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5223, -/* 2770 */ 0xFFFD, 0x5224, 0x5225, 0x5226, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2778 */ 0xFFFD, 0x5227, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2780 */ 0x5228, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5229, -/* 2788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2790 */ 0xFFFD, 0xFFFD, 0x522A, 0xFFFD, 0xFFFD, 0xFFFD, 0x522B, 0xFFFD, -/* 2798 */ 0x522C, 0xFFFD, 0xFFFD, 0x522D, 0x522E, 0xFFFD, 0xFFFD, 0x522F, -/* 27A0 */ 0xFFFD, 0x5230, 0xFFFD, 0xFFFD, 0x5231, 0x5232, 0xFFFD, 0xFFFD, -/* 27A8 */ 0xFFFD, 0x5233, 0x5234, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5235, -/* 27B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5236, 0xFFFD, 0x5237, 0x5238, -/* 27B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5239, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27C0 */ 0xFFFD, 0x523A, 0xFFFD, 0xFFFD, 0x523B, 0xFFFD, 0x523C, 0xFFFD, -/* 27C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x523D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D0 */ 0xFFFD, 0xFFFD, 0x523E, 0xFFFD, 0xFFFD, 0x523F, 0x5240, 0xFFFD, -/* 27D8 */ 0x5241, 0xFFFD, 0xFFFD, 0x5242, 0x5243, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27E0 */ 0x5244, 0x5245, 0x5246, 0x5247, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27E8 */ 0x5248, 0xFFFD, 0xFFFD, 0x5249, 0xFFFD, 0xFFFD, 0x524A, 0xFFFD, -/* 27F0 */ 0x524B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27F8 */ 0xFFFD, 0xFFFD, 0x524C, 0xFFFD, 0x524D, 0x524E, 0xFFFD, 0x524F, -/* 2800 */ 0x5250, 0x5251, 0x5252, 0xFFFD, 0x5253, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5254, 0xFFFD, 0x5255, 0x5256, -/* 2810 */ 0xFFFD, 0xFFFD, 0x5257, 0x5258, 0x5259, 0xFFFD, 0x525A, 0xFFFD, -/* 2818 */ 0x525B, 0xFFFD, 0xFFFD, 0x525C, 0x525D, 0x525E, 0x525F, 0xFFFD, -/* 2820 */ 0x5260, 0xFFFD, 0xFFFD, 0x5261, 0xFFFD, 0x5262, 0x5263, 0xFFFD, -/* 2828 */ 0x5264, 0x5265, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5266, 0xFFFD, 0x5267, 0xFFFD, 0xFFFD, -/* 2838 */ 0xFFFD, 0xFFFD, 0x5268, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5269, -/* 2840 */ 0x526A, 0xFFFD, 0x526B, 0xFFFD, 0xFFFD, 0xFFFD, 0x526C, 0xFFFD, -/* 2848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x526D, 0xFFFD, 0x526E, 0x526F, 0xFFFD, -/* 2850 */ 0x5270, 0xFFFD, 0xFFFD, 0x5271, 0x5272, 0x5273, 0xFFFD, 0xFFFD, -/* 2858 */ 0xFFFD, 0x5274, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2860 */ 0x5276, 0x5277, 0x5278, 0xFFFD, 0x5275, 0x5321, 0xFFFD, 0x5322, -/* 2868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5323, 0xFFFD, 0x5324, 0xFFFD, 0xFFFD, -/* 2870 */ 0xFFFD, 0x5325, 0x5326, 0xFFFD, 0x5327, 0xFFFD, 0x5328, 0xFFFD, -/* 2878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5329, 0xFFFD, 0xFFFD, -/* 2880 */ 0x532A, 0x532B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2888 */ 0xFFFD, 0xFFFD, 0x532C, 0x532D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x532E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2898 */ 0x532F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28A0 */ 0xFFFD, 0xFFFD, 0x5330, 0xFFFD, 0x5331, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28A8 */ 0xFFFD, 0xFFFD, 0x5332, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5333, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28B8 */ 0xFFFD, 0xFFFD, 0x5334, 0x5335, 0xFFFD, 0xFFFD, 0x5336, 0x5337, -/* 28C0 */ 0x5338, 0xFFFD, 0xFFFD, 0x5339, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28C8 */ 0x533A, 0xFFFD, 0xFFFD, 0x533B, 0x533C, 0x533D, 0xFFFD, 0xFFFD, -/* 28D0 */ 0xFFFD, 0x533E, 0xFFFD, 0x533F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5340, -/* 28D8 */ 0x5341, 0x5342, 0xFFFD, 0x5343, 0xFFFD, 0x5344, 0x5345, 0xFFFD, -/* 28E0 */ 0xFFFD, 0x5346, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28E8 */ 0xFFFD, 0xFFFD, 0x5347, 0xFFFD, 0xFFFD, 0x5348, 0xFFFD, 0x5349, -/* 28F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28F8 */ 0xFFFD, 0x534A, 0x534B, 0xFFFD, 0xFFFD, 0xFFFD, 0x534C, 0x534D, -/* 2900 */ 0x534E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x534F, 0xFFFD, -/* 2908 */ 0x5350, 0x5351, 0x5352, 0xFFFD, 0xFFFD, 0x5353, 0xFFFD, 0xFFFD, -/* 2910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5354, 0x5355, 0xFFFD, 0xFFFD, -/* 2918 */ 0xFFFD, 0xFFFD, 0x5356, 0xFFFD, 0xFFFD, 0x5357, 0xFFFD, 0xFFFD, -/* 2920 */ 0xFFFD, 0x5358, 0xFFFD, 0xFFFD, 0x5359, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2928 */ 0x535A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x535B, 0x535C, 0x535D, 0xFFFD, 0x535E, -/* 2938 */ 0x535F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5360, 0x5361, -/* 2940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5362, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2948 */ 0x5363, 0xFFFD, 0x5364, 0xFFFD, 0xFFFD, 0xFFFD, 0x5365, 0xFFFD, -/* 2950 */ 0x5366, 0x5367, 0xFFFD, 0x5368, 0x5369, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x536A, 0xFFFD, 0x536B, 0xFFFD, -/* 2960 */ 0xFFFD, 0x536C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x536D, -/* 2968 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x536E, -/* 2970 */ 0xFFFD, 0x536F, 0x5370, 0xFFFD, 0xFFFD, 0xFFFD, 0x5371, 0xFFFD, -/* 2978 */ 0x5372, 0x5373, 0x5374, 0xFFFD, 0x5375, 0x5376, 0xFFFD, 0x5377, -/* 2980 */ 0xFFFD, 0xFFFD, 0x5378, 0x5379, 0x537A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2988 */ 0x537B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x537C, 0x537D, 0xFFFD, -/* 2990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x537E, 0x5421, 0xFFFD, 0xFFFD, -/* 2998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5422, 0x5423, 0xFFFD, -/* 29A0 */ 0xFFFD, 0x5424, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29A8 */ 0xFFFD, 0xFFFD, 0x5425, 0xFFFD, 0xFFFD, 0x5426, 0x5427, 0xFFFD, -/* 29B0 */ 0x5428, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29B8 */ 0xFFFD, 0x5429, 0x542A, 0x542B, 0x542C, 0x542D, 0xFFFD, 0xFFFD, -/* 29C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x542E, 0x542F, 0x5430, 0xFFFD, 0xFFFD, -/* 29C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5431, 0xFFFD, -/* 29D0 */ 0x5432, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29D8 */ 0xFFFD, 0x5434, 0xFFFD, 0xFFFD, 0x5435, 0x5436, 0xFFFD, 0xFFFD, -/* 29E0 */ 0xFFFD, 0x5437, 0x5438, 0xFFFD, 0x5439, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29E8 */ 0x543A, 0xFFFD, 0xFFFD, 0xFFFD, 0x543B, 0x543C, 0xFFFD, 0xFFFD, -/* 29F0 */ 0x543D, 0x543E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5433, -/* 29F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x543F, -/* 2A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5440, -/* 2A08 */ 0x5441, 0xFFFD, 0xFFFD, 0xFFFD, 0x5442, 0xFFFD, 0x5443, 0xFFFD, -/* 2A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5444, 0x5445, 0xFFFD, 0xFFFD, 0x5446, -/* 2A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5447, 0x5448, -/* 2A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5449, 0x544A, 0xFFFD, 0x544B, 0xFFFD, -/* 2A28 */ 0xFFFD, 0xFFFD, 0x544C, 0xFFFD, 0xFFFD, 0x544D, 0xFFFD, 0xFFFD, -/* 2A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x544E, 0xFFFD, -/* 2A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x544F, 0x5450, 0xFFFD, 0x5451, 0xFFFD, -/* 2A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5452, 0xFFFD, 0x5453, -/* 2A48 */ 0xFFFD, 0x5454, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5455, -/* 2A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5456, 0xFFFD, -/* 2A58 */ 0x5457, 0x5458, 0xFFFD, 0xFFFD, 0x5459, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A60 */ 0xFFFD, 0xFFFD, 0x545A, 0xFFFD, 0xFFFD, 0x545B, 0x545C, 0xFFFD, -/* 2A68 */ 0xFFFD, 0xFFFD, 0x545D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x545E, -/* 2A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x545F, 0xFFFD, 0xFFFD, -/* 2A78 */ 0x5460, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5461, 0x5462, 0xFFFD, -/* 2A80 */ 0xFFFD, 0x5463, 0xFFFD, 0xFFFD, 0x5464, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A88 */ 0x5465, 0xFFFD, 0xFFFD, 0xFFFD, 0x5466, 0xFFFD, 0xFFFD, 0x5467, -/* 2A90 */ 0xFFFD, 0x5468, 0xFFFD, 0xFFFD, 0x5469, 0x546A, 0x546C, 0x546B, -/* 2A98 */ 0x546D, 0x546E, 0x546F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5470, 0x5471, -/* 2AA0 */ 0xFFFD, 0xFFFD, 0x5472, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AA8 */ 0xFFFD, 0xFFFD, 0x5473, 0xFFFD, 0xFFFD, 0x5474, 0x5475, 0xFFFD, -/* 2AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5476, 0x5477, -/* 2AB8 */ 0x5478, 0xFFFD, 0xFFFD, 0xFFFD, 0x5479, 0xFFFD, 0x547A, 0x547B, -/* 2AC0 */ 0x547C, 0x547D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AC8 */ 0x547E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5521, 0x5522, 0x5523, 0x5524, -/* 2AD0 */ 0x5525, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5526, 0xFFFD, 0x5527, 0xFFFD, 0x5528, -/* 2AE0 */ 0x5529, 0x552A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x552B, 0x552C, -/* 2AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x552D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AF0 */ 0xFFFD, 0x552E, 0x552F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5530, 0xFFFD, -/* 2AF8 */ 0xFFFD, 0xFFFD, 0x5531, 0xFFFD, 0xFFFD, 0x5532, 0xFFFD, 0xFFFD, -/* 2B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5533, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5534, 0xFFFD, 0xFFFD, 0x5535, -/* 2B10 */ 0x5536, 0xFFFD, 0xFFFD, 0x5537, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B18 */ 0x5538, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5539, 0x553A, -/* 2B20 */ 0x553B, 0xFFFD, 0xFFFD, 0xFFFD, 0x553C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B28 */ 0x553D, 0xFFFD, 0x553E, 0xFFFD, 0xFFFD, 0x553F, 0xFFFD, 0xFFFD, -/* 2B30 */ 0xFFFD, 0x5540, 0xFFFD, 0x5541, 0x5542, 0xFFFD, 0xFFFD, 0x5543, -/* 2B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5544, -/* 2B40 */ 0xFFFD, 0xFFFD, 0x5545, 0x5546, 0x5547, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5548, 0x5549, 0xFFFD, 0x554A, -/* 2B50 */ 0xFFFD, 0xFFFD, 0x554B, 0x554C, 0x554D, 0xFFFD, 0x554E, 0xFFFD, -/* 2B58 */ 0x554F, 0x5550, 0xFFFD, 0x5551, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B60 */ 0xFFFD, 0xFFFD, 0x5552, 0x5553, 0x5554, 0x5555, 0xFFFD, 0xFFFD, -/* 2B68 */ 0xFFFD, 0x5556, 0xFFFD, 0x5557, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B70 */ 0xFFFD, 0x5558, 0xFFFD, 0x5559, 0xFFFD, 0x555A, 0xFFFD, 0xFFFD, -/* 2B78 */ 0xFFFD, 0x555B, 0x555C, 0xFFFD, 0x555D, 0xFFFD, 0x555E, 0x555F, -/* 2B80 */ 0xFFFD, 0x5560, 0xFFFD, 0x5561, 0xFFFD, 0x5562, 0xFFFD, 0xFFFD, -/* 2B88 */ 0xFFFD, 0x5563, 0x5564, 0xFFFD, 0xFFFD, 0xFFFD, 0x5565, 0xFFFD, -/* 2B90 */ 0x5566, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5567, -/* 2B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5568, 0xFFFD, 0xFFFD, 0xFFFD, 0x5569, -/* 2BA0 */ 0x556A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x556B, -/* 2BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x556C, 0x556D, 0xFFFD, -/* 2BB0 */ 0x556E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BB8 */ 0x556F, 0x5570, 0xFFFD, 0xFFFD, 0xFFFD, 0x5571, 0x5572, 0x5573, -/* 2BC0 */ 0x5574, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5575, 0xFFFD, 0x5576, -/* 2BC8 */ 0xFFFD, 0xFFFD, 0x5577, 0xFFFD, 0x5578, 0x5579, 0xFFFD, 0x557A, -/* 2BD0 */ 0x557B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BD8 */ 0x557C, 0x557D, 0x557E, 0xFFFD, 0x5621, 0xFFFD, 0x5622, 0x5623, -/* 2BE0 */ 0xFFFD, 0xFFFD, 0x5624, 0xFFFD, 0xFFFD, 0x5625, 0x5626, 0xFFFD, -/* 2BE8 */ 0xFFFD, 0xFFFD, 0x5627, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5628, -/* 2BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5629, -/* 2BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C00 */ 0xFFFD, 0xFFFD, 0x562A, 0x562B, 0x562C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C08 */ 0x562D, 0xFFFD, 0x562E, 0xFFFD, 0x562F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C10 */ 0x5630, 0xFFFD, 0xFFFD, 0x5631, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C18 */ 0x5632, 0xFFFD, 0xFFFD, 0xFFFD, 0x5633, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C20 */ 0xFFFD, 0x5634, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5635, 0xFFFD, -/* 2C28 */ 0x5636, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C30 */ 0xFFFD, 0x5637, 0xFFFD, 0x5638, 0xFFFD, 0xFFFD, 0x5639, 0xFFFD, -/* 2C38 */ 0x563A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x563B, 0xFFFD, -/* 2C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x563C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x563D, 0x563E, 0xFFFD, 0xFFFD, -/* 2C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x563F, 0x5640, 0x5641, 0xFFFD, 0xFFFD, -/* 2C58 */ 0xFFFD, 0x5642, 0xFFFD, 0x5643, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5644, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5645, 0xFFFD, 0xFFFD, -/* 2C70 */ 0x5647, 0x5648, 0x5649, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x564A, -/* 2C78 */ 0xFFFD, 0xFFFD, 0x564B, 0xFFFD, 0x5646, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C80 */ 0xFFFD, 0xFFFD, 0x564C, 0xFFFD, 0x564D, 0xFFFD, 0xFFFD, 0x564E, -/* 2C88 */ 0xFFFD, 0xFFFD, 0x564F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5650, 0x5651, -/* 2C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5652, 0xFFFD, 0x5653, 0xFFFD, 0xFFFD, -/* 2C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5654, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5656, 0xFFFD, 0x5657, 0xFFFD, -/* 2CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5658, 0x5655, 0xFFFD, 0xFFFD, 0x5659, -/* 2CB0 */ 0x565A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x565B, 0xFFFD, -/* 2CB8 */ 0x565C, 0xFFFD, 0xFFFD, 0xFFFD, 0x565D, 0xFFFD, 0x565E, 0x565F, -/* 2CC0 */ 0xFFFD, 0xFFFD, 0x5660, 0xFFFD, 0xFFFD, 0x5661, 0xFFFD, 0xFFFD, -/* 2CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5662, 0x5663, 0xFFFD, 0xFFFD, -/* 2CD0 */ 0xFFFD, 0x5664, 0x5665, 0x5666, 0xFFFD, 0xFFFD, 0x5667, 0x5668, -/* 2CD8 */ 0xFFFD, 0x5669, 0x566A, 0xFFFD, 0xFFFD, 0xFFFD, 0x566B, 0xFFFD, -/* 2CE0 */ 0x566C, 0x566D, 0xFFFD, 0xFFFD, 0x566E, 0x566F, 0xFFFD, 0xFFFD, -/* 2CE8 */ 0xFFFD, 0x5670, 0x5671, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5672, -/* 2CF0 */ 0x5673, 0xFFFD, 0xFFFD, 0x5674, 0xFFFD, 0xFFFD, 0xFFFD, 0x5675, -/* 2CF8 */ 0x5676, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5677, 0xFFFD, -/* 2D00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D08 */ 0x5678, 0xFFFD, 0x5679, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D10 */ 0x567A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D18 */ 0xFFFD, 0x567B, 0x567C, 0x567D, 0x567E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D20 */ 0xFFFD, 0x5721, 0xFFFD, 0xFFFD, 0x5722, 0x5723, 0xFFFD, 0x5724, -/* 2D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5725, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D30 */ 0xFFFD, 0xFFFD, 0x5726, 0xFFFD, 0xFFFD, 0xFFFD, 0x5727, 0xFFFD, -/* 2D38 */ 0xFFFD, 0x5728, 0xFFFD, 0xFFFD, 0xFFFD, 0x5729, 0xFFFD, 0xFFFD, -/* 2D40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x572A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D48 */ 0xFFFD, 0xFFFD, 0x572B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D50 */ 0xFFFD, 0x572C, 0xFFFD, 0x572D, 0xFFFD, 0x572E, 0x572F, 0x5730, -/* 2D58 */ 0xFFFD, 0x5731, 0x5732, 0xFFFD, 0xFFFD, 0x5733, 0xFFFD, 0x5734, -/* 2D60 */ 0x5735, 0xFFFD, 0xFFFD, 0xFFFD, 0x5736, 0xFFFD, 0xFFFD, 0x5737, -/* 2D68 */ 0xFFFD, 0xFFFD, 0x5738, 0xFFFD, 0x5739, 0xFFFD, 0x573A, 0xFFFD, -/* 2D70 */ 0x573B, 0x573C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x573D, 0x573E, -/* 2D78 */ 0xFFFD, 0x573F, 0x5740, 0xFFFD, 0xFFFD, 0x5741, 0x5742, 0x5743, -/* 2D80 */ 0x5744, 0xFFFD, 0xFFFD, 0xFFFD, 0x5745, 0xFFFD, 0x5746, 0xFFFD, -/* 2D88 */ 0x5747, 0xFFFD, 0x5748, 0xFFFD, 0xFFFD, 0x5749, 0xFFFD, 0xFFFD, -/* 2D90 */ 0x574A, 0xFFFD, 0x574B, 0xFFFD, 0x574C, 0x574D, 0xFFFD, 0xFFFD, -/* 2D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x574E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x574F, 0xFFFD, -/* 2DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5750, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DB0 */ 0x5751, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5752, 0xFFFD, -/* 2DB8 */ 0x5753, 0xFFFD, 0x5754, 0xFFFD, 0xFFFD, 0xFFFD, 0x5755, 0xFFFD, -/* 2DC0 */ 0x5756, 0xFFFD, 0xFFFD, 0x5757, 0xFFFD, 0x5758, 0xFFFD, 0xFFFD, -/* 2DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5759, 0x575A, 0xFFFD, 0xFFFD, -/* 2DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x575B, 0x575C, 0xFFFD, 0x575D, 0x575E, -/* 2DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x575F, 0x5760, 0xFFFD, -/* 2DE0 */ 0x5761, 0x5762, 0x5764, 0xFFFD, 0x5765, 0x5766, 0x5767, 0xFFFD, -/* 2DE8 */ 0x5768, 0x5769, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x576A, 0x576B, 0x576C, 0xFFFD, 0x576D, -/* 2DF8 */ 0xFFFD, 0xFFFD, 0x576E, 0xFFFD, 0xFFFD, 0xFFFD, 0x576F, 0xFFFD, -/* 2E00 */ 0xFFFD, 0x5770, 0xFFFD, 0x5771, 0x5772, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E08 */ 0xFFFD, 0x5773, 0x5774, 0x5775, 0xFFFD, 0xFFFD, 0x5776, 0xFFFD, -/* 2E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5777, 0x5778, 0xFFFD, 0xFFFD, -/* 2E18 */ 0x5779, 0xFFFD, 0x583E, 0x5763, 0x577A, 0x577B, 0x577C, 0x577D, -/* 2E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x577E, -/* 2E28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5821, 0xFFFD, 0x5822, 0x5823, -/* 2E30 */ 0xFFFD, 0x5824, 0xFFFD, 0x5825, 0xFFFD, 0x5826, 0xFFFD, 0xFFFD, -/* 2E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5827, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E40 */ 0xFFFD, 0x5828, 0xFFFD, 0x5829, 0x582A, 0xFFFD, 0xFFFD, 0x582B, -/* 2E48 */ 0x582C, 0xFFFD, 0x582D, 0x582E, 0x582F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5830, 0x5831, 0xFFFD, -/* 2E58 */ 0x5832, 0xFFFD, 0xFFFD, 0x5833, 0x584C, 0x5834, 0x5835, 0x5836, -/* 2E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5837, 0xFFFD, -/* 2E68 */ 0x5838, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5839, 0x583A, -/* 2E70 */ 0x583B, 0xFFFD, 0xFFFD, 0x583C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x583D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x583F, -/* 2E88 */ 0xFFFD, 0x5840, 0x5841, 0xFFFD, 0x5842, 0x5843, 0xFFFD, 0xFFFD, -/* 2E90 */ 0x5844, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5845, 0xFFFD, 0xFFFD, -/* 2E98 */ 0xFFFD, 0xFFFD, 0x5846, 0xFFFD, 0xFFFD, 0xFFFD, 0x5847, 0xFFFD, -/* 2EA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5848, 0xFFFD, 0x5849, 0xFFFD, 0xFFFD, -/* 2EA8 */ 0xFFFD, 0x584A, 0xFFFD, 0xFFFD, 0xFFFD, 0x584B, 0x584D, 0xFFFD, -/* 2EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EB8 */ 0x584E, 0x584F, 0xFFFD, 0x5850, 0x5851, 0xFFFD, 0x5852, 0xFFFD, -/* 2EC0 */ 0xFFFD, 0x5853, 0xFFFD, 0x5854, 0xFFFD, 0x5855, 0x5856, 0xFFFD, -/* 2EC8 */ 0xFFFD, 0xFFFD, 0x5857, 0xFFFD, 0x5858, 0x5859, 0x585A, 0xFFFD, -/* 2ED0 */ 0x585B, 0xFFFD, 0xFFFD, 0xFFFD, 0x585C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2ED8 */ 0x585D, 0x585E, 0xFFFD, 0x585F, 0xFFFD, 0xFFFD, 0x5860, 0xFFFD, -/* 2EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5861, 0xFFFD, 0xFFFD, 0x5862, -/* 2EE8 */ 0x5863, 0xFFFD, 0x5864, 0xFFFD, 0x5865, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EF0 */ 0x5866, 0x5867, 0xFFFD, 0xFFFD, 0xFFFD, 0x5868, 0xFFFD, 0xFFFD, -/* 2EF8 */ 0xFFFD, 0x5869, 0x586A, 0x586B, 0xFFFD, 0x586C, 0xFFFD, 0xFFFD, -/* 2F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x586D, 0xFFFD, -/* 2F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x586E, 0xFFFD, -/* 2F10 */ 0x586F, 0x5870, 0x5871, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5872, -/* 2F18 */ 0xFFFD, 0x5873, 0xFFFD, 0xFFFD, 0x5874, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F20 */ 0xFFFD, 0xFFFD, 0x5875, 0xFFFD, 0xFFFD, 0x5876, 0x5877, 0xFFFD, -/* 2F28 */ 0x5878, 0xFFFD, 0x5879, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x587A, -/* 2F30 */ 0x587B, 0xFFFD, 0xFFFD, 0xFFFD, 0x587C, 0xFFFD, 0xFFFD, 0x587D, -/* 2F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x587E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5921, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5922, -/* 2F50 */ 0xFFFD, 0xFFFD, 0x5923, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5924, -/* 2F58 */ 0x5925, 0x5926, 0x5927, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5928, -/* 2F60 */ 0xFFFD, 0xFFFD, 0x592A, 0x592B, 0xFFFD, 0x592C, 0xFFFD, 0xFFFD, -/* 2F68 */ 0xFFFD, 0xFFFD, 0x592D, 0x592E, 0xFFFD, 0xFFFD, 0xFFFD, 0x592F, -/* 2F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5930, 0xFFFD, 0x5931, 0xFFFD, -/* 2F78 */ 0x5932, 0x5933, 0xFFFD, 0x5934, 0xFFFD, 0xFFFD, 0xFFFD, 0x5935, -/* 2F80 */ 0x5936, 0x5937, 0x5938, 0xFFFD, 0x5939, 0xFFFD, 0xFFFD, 0x593A, -/* 2F88 */ 0x593B, 0xFFFD, 0xFFFD, 0xFFFD, 0x593C, 0xFFFD, 0xFFFD, 0x5929, -/* 2F90 */ 0x593D, 0x593E, 0xFFFD, 0x593F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5940, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5941, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5942, 0x5943, 0x5944, 0x5945, -/* 2FB0 */ 0x5946, 0xFFFD, 0xFFFD, 0x5947, 0xFFFD, 0xFFFD, 0x5948, 0xFFFD, -/* 2FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FC0 */ 0xFFFD, 0x5950, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FC8 */ 0x5951, 0xFFFD, 0xFFFD, 0xFFFD, 0x5952, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5953, 0x5954, -/* 2FD8 */ 0x5955, 0xFFFD, 0x5956, 0xFFFD, 0x5957, 0xFFFD, 0x5958, 0xFFFD, -/* 2FE0 */ 0xFFFD, 0xFFFD, 0x5959, 0x595A, 0xFFFD, 0xFFFD, 0x595B, 0xFFFD, -/* 2FE8 */ 0x595C, 0x595D, 0xFFFD, 0xFFFD, 0x595E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF0 */ 0x595F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5960, 0xFFFD, 0xFFFD, -/* 2FF8 */ 0xFFFD, 0xFFFD, 0x5961, 0xFFFD, 0x5962, 0x5963, 0xFFFD, 0x5964, -/* 3000 */ 0xFFFD, 0xFFFD, 0x5965, 0xFFFD, 0x5966, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3008 */ 0xFFFD, 0xFFFD, 0x5974, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3010 */ 0xFFFD, 0x5967, 0xFFFD, 0x5968, 0x5969, 0x596A, 0xFFFD, 0xFFFD, -/* 3018 */ 0xFFFD, 0x596B, 0x596C, 0x596D, 0x596E, 0xFFFD, 0xFFFD, 0x596F, -/* 3020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5970, 0xFFFD, 0xFFFD, 0x5971, -/* 3028 */ 0x5972, 0xFFFD, 0xFFFD, 0x5973, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5975, 0xFFFD, 0x5976, -/* 3038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5977, 0x5978, 0xFFFD, 0xFFFD, -/* 3040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5979, 0xFFFD, 0x597A, 0xFFFD, 0xFFFD, -/* 3048 */ 0xFFFD, 0xFFFD, 0x597B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3050 */ 0x597C, 0xFFFD, 0xFFFD, 0x597D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3058 */ 0xFFFD, 0x597E, 0xFFFD, 0xFFFD, 0x5A21, 0x5A22, 0xFFFD, 0xFFFD, -/* 3060 */ 0xFFFD, 0x5A23, 0x5A24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3068 */ 0xFFFD, 0xFFFD, 0x5A25, 0x5A26, 0xFFFD, 0x5A27, 0x5A28, 0x5A29, -/* 3070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A2A, 0x5A2B, 0xFFFD, -/* 3078 */ 0x5A2C, 0xFFFD, 0xFFFD, 0x5A2D, 0xFFFD, 0xFFFD, 0x5A2E, 0xFFFD, -/* 3080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A2F, 0xFFFD, 0x5A30, 0x5A31, -/* 3088 */ 0xFFFD, 0x5A32, 0xFFFD, 0x5A33, 0xFFFD, 0x5A34, 0x5A35, 0xFFFD, -/* 3090 */ 0xFFFD, 0x5A36, 0x3866, 0x5A37, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A38, -/* 3098 */ 0x5A39, 0x5A3A, 0xFFFD, 0xFFFD, 0x5A3B, 0x5A3C, 0x5A3D, 0x5A3E, -/* 30A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A3F, 0xFFFD, 0xFFFD, 0x5A40, 0x5A41, -/* 30A8 */ 0x5A42, 0x5A43, 0x5A44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A45, -/* 30B0 */ 0xFFFD, 0xFFFD, 0x5A46, 0xFFFD, 0xFFFD, 0x5A47, 0xFFFD, 0xFFFD, -/* 30B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A48, 0x5A49, 0x5A4A, 0xFFFD, 0xFFFD, -/* 30C0 */ 0x5A4B, 0x5A6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A4C, 0xFFFD, -/* 30C8 */ 0xFFFD, 0xFFFD, 0x5A4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A4E, -/* 30D0 */ 0xFFFD, 0x5A4F, 0xFFFD, 0x5A50, 0xFFFD, 0x5A51, 0xFFFD, 0xFFFD, -/* 30D8 */ 0xFFFD, 0xFFFD, 0x5A52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A53, -/* 30E0 */ 0x5A54, 0x5A55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A56, 0xFFFD, -/* 30E8 */ 0xFFFD, 0xFFFD, 0x5A57, 0xFFFD, 0x5A58, 0x5A59, 0x5A5A, 0xFFFD, -/* 30F0 */ 0x5A5B, 0x5A5C, 0x5A5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30F8 */ 0x5A5E, 0x5A5F, 0x5A60, 0xFFFD, 0x5A61, 0xFFFD, 0x5A62, 0x5A63, -/* 3100 */ 0x5A64, 0xFFFD, 0xFFFD, 0x5A65, 0xFFFD, 0x5A66, 0xFFFD, 0xFFFD, -/* 3108 */ 0x5A67, 0xFFFD, 0x5A68, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A69, 0xFFFD, -/* 3110 */ 0xFFFD, 0x5A6A, 0xFFFD, 0x5A6B, 0xFFFD, 0x5A6C, 0x5A6E, 0xFFFD, -/* 3118 */ 0x5A6F, 0x5A70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3120 */ 0x5A71, 0x5A72, 0xFFFD, 0x5A73, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A74, -/* 3128 */ 0xFFFD, 0xFFFD, 0x5A75, 0x5A76, 0x5A77, 0xFFFD, 0xFFFD, 0x5A78, -/* 3130 */ 0x5A79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A7A, 0xFFFD, 0xFFFD, -/* 3138 */ 0xFFFD, 0xFFFD, 0x5A7B, 0x5A7C, 0xFFFD, 0x5A7D, 0xFFFD, 0x5A7E, -/* 3140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B21, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3148 */ 0xFFFD, 0xFFFD, 0x5B22, 0x5B23, 0xFFFD, 0x5B24, 0x5B25, 0xFFFD, -/* 3150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B26, 0x5B27, 0xFFFD, -/* 3158 */ 0x5B28, 0x5B29, 0x5B2A, 0xFFFD, 0x5B2B, 0xFFFD, 0xFFFD, 0x5B2C, -/* 3160 */ 0xFFFD, 0x5B2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3168 */ 0xFFFD, 0x5B2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B2F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3178 */ 0xFFFD, 0x5B30, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B31, 0xFFFD, 0xFFFD, -/* 3180 */ 0x5B32, 0x5B33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B34, 0xFFFD, 0x5B35, 0x5B36, 0xFFFD, -/* 3190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B37, -/* 3198 */ 0x5B3F, 0x5B40, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B41, 0xFFFD, 0xFFFD, -/* 31A0 */ 0x5B42, 0xFFFD, 0x5B43, 0xFFFD, 0x5B44, 0x5B45, 0x5B46, 0xFFFD, -/* 31A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B47, 0xFFFD, 0x5B48, 0xFFFD, 0xFFFD, -/* 31B0 */ 0x5B49, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B4A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31B8 */ 0xFFFD, 0x5B4B, 0x5B4C, 0x5B4D, 0xFFFD, 0xFFFD, 0x5B4E, 0xFFFD, -/* 31C0 */ 0xFFFD, 0xFFFD, 0x5B4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B50, 0x5B51, 0xFFFD, 0x5B52, 0xFFFD, -/* 31D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B53, 0x5B54, 0x5B55, -/* 31D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31E0 */ 0xFFFD, 0xFFFD, 0x5B57, 0x5B58, 0xFFFD, 0xFFFD, 0x5B59, 0x5B5A, -/* 31E8 */ 0xFFFD, 0x5B5B, 0xFFFD, 0xFFFD, 0x5B5C, 0xFFFD, 0xFFFD, 0x5B5D, -/* 31F0 */ 0x5B5E, 0x5B5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B60, -/* 31F8 */ 0x5B61, 0xFFFD, 0x5B62, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B63, 0xFFFD, -/* 3200 */ 0x5B64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B65, 0xFFFD, 0x5B66, -/* 3208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B67, 0xFFFD, 0x5B68, 0xFFFD, -/* 3210 */ 0x5B69, 0xFFFD, 0xFFFD, 0x5B6A, 0xFFFD, 0xFFFD, 0x5B6B, 0x5B6C, -/* 3218 */ 0x5B6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B6E, 0xFFFD, 0x5B70, -/* 3220 */ 0x5B71, 0x5B72, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B73, 0x5B6F, 0x5B74, -/* 3228 */ 0x5B75, 0x5B76, 0xFFFD, 0x5B77, 0x5B78, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B79, 0xFFFD, 0xFFFD, -/* 3238 */ 0xFFFD, 0xFFFD, 0x5B7A, 0x5B7B, 0xFFFD, 0x5B7C, 0xFFFD, 0x5B7D, -/* 3240 */ 0xFFFD, 0xFFFD, 0x5B7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C21, -/* 3248 */ 0xFFFD, 0x5C22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C23, 0xFFFD, -/* 3250 */ 0x5C24, 0xFFFD, 0x5C25, 0xFFFD, 0xFFFD, 0x5C26, 0x5C27, 0x5C28, -/* 3258 */ 0x5C29, 0xFFFD, 0xFFFD, 0x5C2A, 0xFFFD, 0xFFFD, 0x5C2B, 0xFFFD, -/* 3260 */ 0xFFFD, 0xFFFD, 0x5C2C, 0x5C2D, 0xFFFD, 0x5C2E, 0xFFFD, 0x5C2F, -/* 3268 */ 0xFFFD, 0x5C30, 0xFFFD, 0xFFFD, 0x5C31, 0x5C32, 0xFFFD, 0xFFFD, -/* 3270 */ 0xFFFD, 0x5C33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C34, 0xFFFD, -/* 3278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C35, 0xFFFD, -/* 3280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C36, 0xFFFD, -/* 3288 */ 0x5C37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C38, 0x5C39, 0xFFFD, -/* 3290 */ 0x5C3A, 0x5C3B, 0x5C3C, 0xFFFD, 0xFFFD, 0x5C3D, 0x5C3E, 0xFFFD, -/* 3298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C3F, 0xFFFD, -/* 32A0 */ 0x5C40, 0x5C41, 0xFFFD, 0xFFFD, 0x5C42, 0x5C43, 0xFFFD, 0x5C44, -/* 32A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32B0 */ 0xFFFD, 0x5C45, 0x5C46, 0x5C47, 0x5C48, 0x5C49, 0xFFFD, 0xFFFD, -/* 32B8 */ 0x5C4A, 0x5C4B, 0x5C4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32C0 */ 0xFFFD, 0xFFFD, 0x5C4D, 0xFFFD, 0xFFFD, 0x5C4E, 0xFFFD, 0xFFFD, -/* 32C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C4F, 0xFFFD, -/* 32D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C50, 0x5C51, -/* 32D8 */ 0x5C52, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C53, 0xFFFD, 0x5C54, 0xFFFD, -/* 32E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32E8 */ 0x5C55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C56, 0xFFFD, 0xFFFD, -/* 32F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C57, 0x5C58, 0x5C59, 0xFFFD, -/* 32F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C5A, 0x5C5B, 0xFFFD, 0x5C5C, -/* 3300 */ 0x5C5D, 0x5C5E, 0xFFFD, 0x5C5F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C60, -/* 3308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C61, 0x5C62, 0x5C63, -/* 3310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C64, -/* 3318 */ 0x5C65, 0x5C66, 0xFFFD, 0xFFFD, 0x5C67, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3320 */ 0x5C68, 0x5C69, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C6A, 0xFFFD, 0x5C6B, -/* 3328 */ 0xFFFD, 0x5C6C, 0xFFFD, 0xFFFD, 0x5C6D, 0x5C6E, 0xFFFD, 0xFFFD, -/* 3330 */ 0x5C6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C70, 0xFFFD, -/* 3338 */ 0xFFFD, 0x5C71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C72, 0xFFFD, -/* 3340 */ 0xFFFD, 0x5C73, 0x5C74, 0x5C75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3348 */ 0x5C76, 0x5C77, 0x5C78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3350 */ 0xFFFD, 0xFFFD, 0x5C79, 0xFFFD, 0xFFFD, 0x5C7A, 0xFFFD, 0x5C7B, -/* 3358 */ 0xFFFD, 0xFFFD, 0x5C7C, 0xFFFD, 0x5C7D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3360 */ 0xFFFD, 0x5C7E, 0x5D21, 0x5D22, 0x5D23, 0x5D24, 0xFFFD, 0xFFFD, -/* 3368 */ 0xFFFD, 0x5D25, 0xFFFD, 0xFFFD, 0x5D26, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3370 */ 0x5D27, 0x5D28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D29, -/* 3378 */ 0x5D2A, 0xFFFD, 0xFFFD, 0x5D2B, 0x5D2C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3380 */ 0xFFFD, 0x5D2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D2E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3390 */ 0x5D2F, 0x5D30, 0x5D31, 0x5D32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3398 */ 0x5D33, 0x5D34, 0x5D35, 0x5D36, 0x5D37, 0x5D38, 0x5D39, 0xFFFD, -/* 33A0 */ 0xFFFD, 0xFFFD, 0x5D3A, 0xFFFD, 0x5D3B, 0xFFFD, 0x5D3C, 0xFFFD, -/* 33A8 */ 0xFFFD, 0xFFFD, 0x5D3D, 0xFFFD, 0x5D3E, 0xFFFD, 0xFFFD, 0x5D3F, -/* 33B0 */ 0xFFFD, 0xFFFD, 0x5D40, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D41, 0xFFFD, -/* 33B8 */ 0x5D42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D43, 0x5D44, 0xFFFD, -/* 33C0 */ 0x5D45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33C8 */ 0x5D46, 0xFFFD, 0x5D47, 0x5D48, 0xFFFD, 0x5D49, 0x5D4A, 0xFFFD, -/* 33D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D4B, -/* 33D8 */ 0xFFFD, 0x5D4C, 0xFFFD, 0x5D4D, 0xFFFD, 0x5D4E, 0xFFFD, 0x5D4F, -/* 33E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D50, 0x5D51, 0xFFFD, 0xFFFD, -/* 33E8 */ 0x5D52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D53, 0xFFFD, -/* 33F0 */ 0x5D54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D55, 0x5D56, -/* 33F8 */ 0xFFFD, 0x5D57, 0xFFFD, 0xFFFD, 0x5D58, 0xFFFD, 0x5D59, 0xFFFD, -/* 3400 */ 0x5D5A, 0xFFFD, 0x5D5B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D5C, 0x5D5D, -/* 3408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D5E, 0xFFFD, 0xFFFD, 0x5D5F, -/* 3410 */ 0x5D60, 0x5D61, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D62, 0x5D63, 0xFFFD, -/* 3418 */ 0xFFFD, 0xFFFD, 0x5D64, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D65, 0xFFFD, -/* 3420 */ 0x5D66, 0x5D67, 0x5D68, 0x5D69, 0xFFFD, 0x5D6A, 0x5D6B, 0x5D6C, -/* 3428 */ 0xFFFD, 0xFFFD, 0x5D6D, 0x5D6E, 0x5D6F, 0xFFFD, 0xFFFD, 0x5D70, -/* 3430 */ 0xFFFD, 0xFFFD, 0x5D71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D72, -/* 3438 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D73, 0x5D74, 0xFFFD, 0x5D75, 0xFFFD, -/* 3440 */ 0xFFFD, 0xFFFD, 0x5D76, 0x5D77, 0xFFFD, 0x5D78, 0xFFFD, 0xFFFD, -/* 3448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D7A, 0xFFFD, 0x5D7B, 0xFFFD, 0xFFFD, -/* 3458 */ 0xFFFD, 0xFFFD, 0x5D7C, 0x5D7D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D7E, -/* 3460 */ 0xFFFD, 0xFFFD, 0x5E21, 0x5E22, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E23, -/* 3468 */ 0xFFFD, 0xFFFD, 0x5E24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E25, -/* 3470 */ 0xFFFD, 0xFFFD, 0x5E26, 0xFFFD, 0x5E27, 0x5E28, 0x5E29, 0xFFFD, -/* 3478 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E2A, 0xFFFD, 0x5E2B, -/* 3480 */ 0x5E2C, 0x5E2D, 0xFFFD, 0x5E2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3488 */ 0xFFFD, 0x5E2F, 0xFFFD, 0x5E30, 0x5E31, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3490 */ 0x5E32, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E33, 0x5E34, 0x5E35, 0xFFFD, -/* 3498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E36, 0xFFFD, 0xFFFD, 0x5E37, -/* 34A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E38, 0x5E39, 0xFFFD, -/* 34A8 */ 0xFFFD, 0xFFFD, 0x5E3F, 0x5E3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34B0 */ 0xFFFD, 0x5E3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E3C, 0xFFFD, 0x5E3D, 0x5E3E, -/* 34C0 */ 0x5E40, 0xFFFD, 0xFFFD, 0x5E41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34C8 */ 0xFFFD, 0xFFFD, 0x5E42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E43, -/* 34D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E44, 0x5E45, 0x5E46, -/* 34D8 */ 0x5E47, 0x5E48, 0xFFFD, 0x5E49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34E0 */ 0x5E4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E4A, 0x5E4B, 0x5E4C, -/* 34E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E4D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F0 */ 0xFFFD, 0x5E4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E50, 0xFFFD, -/* 34F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3500 */ 0x5E51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3508 */ 0xFFFD, 0x5E52, 0xFFFD, 0x5E53, 0x5E54, 0xFFFD, 0xFFFD, 0x5E55, -/* 3510 */ 0xFFFD, 0x5E56, 0xFFFD, 0xFFFD, 0x5E57, 0xFFFD, 0xFFFD, 0x5E58, -/* 3518 */ 0x5E59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E5A, 0xFFFD, -/* 3520 */ 0x5E5B, 0xFFFD, 0x5E5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E5D, -/* 3528 */ 0x5E5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E5F, -/* 3530 */ 0xFFFD, 0x5E60, 0x5E61, 0x5E62, 0x5E63, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3538 */ 0x5E64, 0x5E65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3540 */ 0x5E66, 0xFFFD, 0x5E67, 0xFFFD, 0x5E68, 0xFFFD, 0x5E69, 0xFFFD, -/* 3548 */ 0xFFFD, 0xFFFD, 0x5E6A, 0xFFFD, 0x5E6B, 0xFFFD, 0x5E6C, 0x5E6D, -/* 3550 */ 0xFFFD, 0xFFFD, 0x5E6E, 0x5E6F, 0x5E72, 0xFFFD, 0x5E70, 0xFFFD, -/* 3558 */ 0x5E71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E73, 0x5E74, -/* 3560 */ 0xFFFD, 0x5E75, 0xFFFD, 0x5E76, 0x5E77, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3568 */ 0x5E78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E79, 0xFFFD, -/* 3570 */ 0x5E7A, 0x5E7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E7C, 0xFFFD, -/* 3578 */ 0xFFFD, 0x5E7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3580 */ 0xFFFD, 0x5E7E, 0x5F21, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F22, 0xFFFD, -/* 3588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F23, 0xFFFD, 0x5F24, 0x5F25, 0xFFFD, -/* 3590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F26, 0xFFFD, 0x5F27, 0x5F28, -/* 3598 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F29, -/* 35A0 */ 0x5F2A, 0x5F2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F2C, 0x5F2D, 0xFFFD, 0xFFFD, -/* 35B0 */ 0x5F2E, 0xFFFD, 0x5F2F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F30, 0xFFFD, -/* 35B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F32, 0x5F31, 0xFFFD, 0xFFFD, -/* 35C0 */ 0x5F33, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F34, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35C8 */ 0x5F35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F36, -/* 35D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F37, 0xFFFD, 0xFFFD, 0x5F38, 0x5F39, -/* 35D8 */ 0xFFFD, 0x5F3A, 0xFFFD, 0xFFFD, 0x5F3B, 0xFFFD, 0x5F3C, 0x5F3D, -/* 35E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F3E, 0x5F3F, 0xFFFD, -/* 35E8 */ 0x5F40, 0xFFFD, 0x5F41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35F0 */ 0x5F42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35F8 */ 0xFFFD, 0x5F43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F44, 0xFFFD, -/* 3600 */ 0xFFFD, 0xFFFD, 0x5F45, 0x5F46, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F47, -/* 3608 */ 0xFFFD, 0xFFFD, 0x5F48, 0xFFFD, 0x5F49, 0x5F4A, 0xFFFD, 0xFFFD, -/* 3610 */ 0x5F4B, 0xFFFD, 0x5F4C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F4D, 0xFFFD, -/* 3618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F4E, 0xFFFD, 0xFFFD, 0x5F4F, 0x5F50, -/* 3620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F52, 0x5F53, 0x5F54, 0xFFFD, -/* 3630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F55, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3638 */ 0xFFFD, 0x5F56, 0x5F57, 0xFFFD, 0xFFFD, 0x5F58, 0xFFFD, 0xFFFD, -/* 3640 */ 0x5F59, 0xFFFD, 0xFFFD, 0x5F5A, 0xFFFD, 0x5F5B, 0xFFFD, 0x5F5C, -/* 3648 */ 0xFFFD, 0x5F5D, 0x5F6F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F5E, 0xFFFD, -/* 3650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F5F, 0x5F60, 0x5F61, 0x5F62, 0xFFFD, -/* 3658 */ 0x5F63, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F64, 0xFFFD, 0xFFFD, 0x5F65, -/* 3660 */ 0xFFFD, 0xFFFD, 0x5F66, 0x5F67, 0xFFFD, 0x5F68, 0xFFFD, 0x5F69, -/* 3668 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3670 */ 0xFFFD, 0xFFFD, 0x5F6A, 0x5F6B, 0xFFFD, 0x5F6C, 0xFFFD, 0xFFFD, -/* 3678 */ 0xFFFD, 0xFFFD, 0x5F6D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F6E, 0x5F70, -/* 3680 */ 0x5F71, 0xFFFD, 0x5F72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F73, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F74, -/* 3690 */ 0xFFFD, 0xFFFD, 0x5F75, 0x5F76, 0x5F77, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3698 */ 0xFFFD, 0x5F78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F79, -/* 36A0 */ 0xFFFD, 0xFFFD, 0x5F7A, 0xFFFD, 0x5F7B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F7C, 0x5F7D, -/* 36B0 */ 0x5F7E, 0x6021, 0xFFFD, 0xFFFD, 0x6022, 0x6023, 0xFFFD, 0xFFFD, -/* 36B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6024, -/* 36C0 */ 0xFFFD, 0x6025, 0xFFFD, 0xFFFD, 0x6026, 0x6027, 0x6028, 0x6029, -/* 36C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x602A, 0xFFFD, 0xFFFD, 0x602B, 0x602C, -/* 36D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36D8 */ 0xFFFD, 0x602D, 0xFFFD, 0x602E, 0x602F, 0x6030, 0xFFFD, 0xFFFD, -/* 36E0 */ 0xFFFD, 0xFFFD, 0x6031, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36E8 */ 0xFFFD, 0x6032, 0x6033, 0x6034, 0x6035, 0xFFFD, 0xFFFD, 0x6036, -/* 36F0 */ 0x6037, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6038, -/* 36F8 */ 0xFFFD, 0xFFFD, 0x6039, 0x603A, 0xFFFD, 0x603B, 0x603C, 0x603D, -/* 3700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x603E, -/* 3708 */ 0x603F, 0x6040, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3710 */ 0x6041, 0x6042, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6043, -/* 3718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6044, 0xFFFD, -/* 3720 */ 0x6045, 0xFFFD, 0xFFFD, 0x6046, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3728 */ 0x6047, 0x6048, 0xFFFD, 0x6049, 0x604A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3730 */ 0x604B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x604C, 0xFFFD, 0x604D, -/* 3738 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x604E, 0x604F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3740 */ 0xFFFD, 0x6050, 0xFFFD, 0x6051, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3748 */ 0x6052, 0x6053, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6054, 0x6055, -/* 3750 */ 0xFFFD, 0x6056, 0x6057, 0xFFFD, 0xFFFD, 0x6058, 0xFFFD, 0xFFFD, -/* 3758 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6059, 0xFFFD, 0x605A, -/* 3760 */ 0xFFFD, 0xFFFD, 0x605B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3768 */ 0xFFFD, 0xFFFD, 0x605C, 0x605D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3770 */ 0x6064, 0x605E, 0xFFFD, 0x605F, 0x6060, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3778 */ 0xFFFD, 0xFFFD, 0x6061, 0xFFFD, 0x6062, 0x6063, 0xFFFD, 0xFFFD, -/* 3780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6065, 0xFFFD, 0x6066, 0xFFFD, 0xFFFD, -/* 3788 */ 0xFFFD, 0xFFFD, 0x6067, 0x6068, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3790 */ 0xFFFD, 0xFFFD, 0x6069, 0x606A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3798 */ 0xFFFD, 0x606B, 0x606C, 0x606D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37A0 */ 0xFFFD, 0x606E, 0xFFFD, 0x606F, 0x6070, 0xFFFD, 0x6071, 0xFFFD, -/* 37A8 */ 0x6072, 0xFFFD, 0x6073, 0x6074, 0xFFFD, 0xFFFD, 0xFFFD, 0x6075, -/* 37B0 */ 0x6076, 0x6077, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6078, -/* 37B8 */ 0x6079, 0x607A, 0x607B, 0xFFFD, 0xFFFD, 0x607C, 0xFFFD, 0xFFFD, -/* 37C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x607D, 0x607E, 0xFFFD, 0x6121, 0xFFFD, -/* 37C8 */ 0xFFFD, 0xFFFD, 0x6122, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37D0 */ 0xFFFD, 0xFFFD, 0x6123, 0xFFFD, 0x6124, 0x6125, 0x6126, 0x6127, -/* 37D8 */ 0x6128, 0xFFFD, 0xFFFD, 0x6129, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37E0 */ 0x612A, 0x612B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37E8 */ 0x612C, 0x612D, 0xFFFD, 0xFFFD, 0x612E, 0x612F, 0xFFFD, 0xFFFD, -/* 37F0 */ 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0xFFFD, 0x6135, 0xFFFD, -/* 37F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6136, 0xFFFD, 0x6137, 0x6138, -/* 3800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6139, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3808 */ 0x613A, 0x613B, 0xFFFD, 0x613C, 0xFFFD, 0xFFFD, 0x613D, 0xFFFD, -/* 3810 */ 0x613E, 0x613F, 0xFFFD, 0x6140, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6141, 0xFFFD, -/* 3820 */ 0xFFFD, 0x6142, 0x6143, 0xFFFD, 0xFFFD, 0xFFFD, 0x6144, 0xFFFD, -/* 3828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6145, 0xFFFD, 0xFFFD, 0x6146, -/* 3830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6147, 0x6148, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3838 */ 0xFFFD, 0x6149, 0xFFFD, 0xFFFD, 0x614A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3840 */ 0x614B, 0xFFFD, 0x614C, 0xFFFD, 0xFFFD, 0xFFFD, 0x614D, 0xFFFD, -/* 3848 */ 0xFFFD, 0xFFFD, 0x614E, 0x614F, 0xFFFD, 0xFFFD, 0x6150, 0x6151, -/* 3850 */ 0x6152, 0x6154, 0xFFFD, 0x6155, 0x6156, 0xFFFD, 0x6153, 0xFFFD, -/* 3858 */ 0xFFFD, 0xFFFD, 0x6157, 0x6158, 0xFFFD, 0xFFFD, 0x6159, 0xFFFD, -/* 3860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x615A, 0xFFFD, -/* 3868 */ 0xFFFD, 0xFFFD, 0x615B, 0x615C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x615D, 0x615E, 0xFFFD, 0x615F, 0xFFFD, -/* 3878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6160, 0xFFFD, 0xFFFD, 0xFFFD, 0x6161, -/* 3880 */ 0x6162, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6163, 0xFFFD, 0xFFFD, -/* 3888 */ 0xFFFD, 0x6164, 0xFFFD, 0xFFFD, 0xFFFD, 0x6165, 0xFFFD, 0xFFFD, -/* 3890 */ 0xFFFD, 0xFFFD, 0x6166, 0x6167, 0xFFFD, 0xFFFD, 0x6168, 0xFFFD, -/* 3898 */ 0xFFFD, 0x6169, 0x616A, 0xFFFD, 0x616B, 0xFFFD, 0x616C, 0xFFFD, -/* 38A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x616D, 0xFFFD, 0x616E, 0x616F, 0x6170, -/* 38A8 */ 0xFFFD, 0x6171, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6172, 0x6173, -/* 38B0 */ 0x6174, 0xFFFD, 0xFFFD, 0x6175, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6176, 0xFFFD, -/* 38C0 */ 0x6177, 0x6178, 0x6179, 0xFFFD, 0x617A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x617B, 0x617D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38D0 */ 0xFFFD, 0x617E, 0x6221, 0x6222, 0xFFFD, 0x6223, 0x6224, 0xFFFD, -/* 38D8 */ 0xFFFD, 0xFFFD, 0x617C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38E0 */ 0x622D, 0xFFFD, 0xFFFD, 0x6225, 0xFFFD, 0x6226, 0x6227, 0x6228, -/* 38E8 */ 0xFFFD, 0xFFFD, 0x6229, 0x622A, 0xFFFD, 0x622B, 0xFFFD, 0xFFFD, -/* 38F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x622C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38F8 */ 0xFFFD, 0x622F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6230, 0x6231, 0xFFFD, -/* 3900 */ 0xFFFD, 0xFFFD, 0x6232, 0xFFFD, 0x622E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6233, 0x6234, 0x6235, 0xFFFD, -/* 3910 */ 0xFFFD, 0xFFFD, 0x6236, 0x6237, 0x6238, 0xFFFD, 0x6239, 0xFFFD, -/* 3918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x623A, 0xFFFD, 0xFFFD, 0x623B, 0xFFFD, -/* 3920 */ 0xFFFD, 0xFFFD, 0x623C, 0xFFFD, 0x623D, 0x623E, 0x623F, 0xFFFD, -/* 3928 */ 0x6240, 0xFFFD, 0x6241, 0xFFFD, 0x6242, 0xFFFD, 0x6243, 0xFFFD, -/* 3930 */ 0x6245, 0x6246, 0xFFFD, 0x6244, 0xFFFD, 0x6247, 0xFFFD, 0x6248, -/* 3938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6249, 0x624A, 0xFFFD, 0x624B, -/* 3940 */ 0xFFFD, 0xFFFD, 0x624C, 0xFFFD, 0x624D, 0x624E, 0xFFFD, 0x624F, -/* 3948 */ 0x6250, 0xFFFD, 0x6251, 0x6252, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3950 */ 0xFFFD, 0x6253, 0xFFFD, 0xFFFD, 0xFFFD, 0x6254, 0x6255, 0xFFFD, -/* 3958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6256, 0xFFFD, 0xFFFD, -/* 3960 */ 0xFFFD, 0x6257, 0xFFFD, 0xFFFD, 0xFFFD, 0x6258, 0xFFFD, 0x6259, -/* 3968 */ 0x625A, 0x625B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x625C, -/* 3970 */ 0xFFFD, 0xFFFD, 0x625D, 0xFFFD, 0xFFFD, 0x625E, 0xFFFD, 0xFFFD, -/* 3978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x625F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3980 */ 0xFFFD, 0xFFFD, 0x6260, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6261, -/* 3988 */ 0x6262, 0x6263, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6264, -/* 3990 */ 0xFFFD, 0x6265, 0xFFFD, 0x6266, 0x6267, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3998 */ 0x6268, 0xFFFD, 0xFFFD, 0xFFFD, 0x6269, 0xFFFD, 0xFFFD, 0x626A, -/* 39A0 */ 0xFFFD, 0x626B, 0x626C, 0x626D, 0xFFFD, 0xFFFD, 0x626E, 0xFFFD, -/* 39A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x626F, 0xFFFD, 0xFFFD, 0x6270, -/* 39B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6271, 0xFFFD, 0x6272, 0xFFFD, -/* 39B8 */ 0xFFFD, 0xFFFD, 0x6273, 0x6274, 0x6275, 0xFFFD, 0x6276, 0x6277, -/* 39C0 */ 0x6278, 0x6279, 0xFFFD, 0xFFFD, 0x627A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39C8 */ 0xFFFD, 0x627B, 0x627C, 0x627D, 0xFFFD, 0x627E, 0xFFFD, 0xFFFD, -/* 39D0 */ 0x6321, 0x6322, 0xFFFD, 0x6323, 0x6324, 0x6325, 0xFFFD, 0xFFFD, -/* 39D8 */ 0x6326, 0xFFFD, 0x6327, 0x6328, 0xFFFD, 0xFFFD, 0xFFFD, 0x6329, -/* 39E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x632A, 0x632B, 0xFFFD, -/* 39E8 */ 0xFFFD, 0xFFFD, 0x632C, 0x632D, 0x6334, 0xFFFD, 0x6335, 0xFFFD, -/* 39F0 */ 0x6336, 0xFFFD, 0x6337, 0xFFFD, 0xFFFD, 0x6338, 0x6339, 0xFFFD, -/* 39F8 */ 0xFFFD, 0x633A, 0x633B, 0x633C, 0x633D, 0xFFFD, 0x633E, 0x633F, -/* 3A00 */ 0xFFFD, 0x6340, 0xFFFD, 0xFFFD, 0xFFFD, 0x6341, 0xFFFD, 0x6342, -/* 3A08 */ 0x6343, 0xFFFD, 0xFFFD, 0x6344, 0xFFFD, 0x6345, 0xFFFD, 0xFFFD, -/* 3A10 */ 0xFFFD, 0x6346, 0x6347, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A18 */ 0x6348, 0x6349, 0x634A, 0x634B, 0xFFFD, 0x634C, 0xFFFD, 0xFFFD, -/* 3A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x634D, 0x634E, 0x634F, 0xFFFD, 0xFFFD, -/* 3A28 */ 0x6350, 0xFFFD, 0x6351, 0x6352, 0xFFFD, 0x6353, 0x6354, 0x6355, -/* 3A30 */ 0xFFFD, 0x6356, 0xFFFD, 0x6357, 0xFFFD, 0x6358, 0xFFFD, 0x6359, -/* 3A38 */ 0x635A, 0xFFFD, 0xFFFD, 0x635B, 0x635C, 0xFFFD, 0xFFFD, 0x635D, -/* 3A40 */ 0xFFFD, 0xFFFD, 0x635E, 0x635F, 0x6360, 0xFFFD, 0x6361, 0xFFFD, -/* 3A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6362, 0x6363, 0xFFFD, -/* 3A50 */ 0xFFFD, 0x6364, 0x6365, 0xFFFD, 0xFFFD, 0x6366, 0x6367, 0xFFFD, -/* 3A58 */ 0xFFFD, 0xFFFD, 0x6368, 0xFFFD, 0x6369, 0x636A, 0x636B, 0xFFFD, -/* 3A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x636C, 0x636D, 0x636E, 0xFFFD, 0xFFFD, -/* 3A68 */ 0xFFFD, 0xFFFD, 0x636F, 0x6370, 0x6371, 0x6372, 0x6373, 0xFFFD, -/* 3A70 */ 0x6374, 0x6375, 0x6376, 0xFFFD, 0x6377, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6378, 0x6379, 0x637A, -/* 3A80 */ 0xFFFD, 0xFFFD, 0x637B, 0x637C, 0xFFFD, 0xFFFD, 0xFFFD, 0x637D, -/* 3A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x637E, 0xFFFD, 0x6421, 0xFFFD, -/* 3A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6422, 0x6423, 0xFFFD, 0xFFFD, -/* 3A98 */ 0xFFFD, 0x6424, 0x6425, 0xFFFD, 0x6426, 0x6427, 0xFFFD, 0xFFFD, -/* 3AA0 */ 0x6428, 0xFFFD, 0xFFFD, 0xFFFD, 0x6429, 0xFFFD, 0xFFFD, 0x642A, -/* 3AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x642B, 0xFFFD, 0x642C, 0xFFFD, 0x642D, -/* 3AB0 */ 0x642E, 0x642F, 0x6430, 0xFFFD, 0x6431, 0x6432, 0x6433, 0x6434, -/* 3AB8 */ 0x6435, 0xFFFD, 0x6436, 0x6437, 0x6438, 0x6439, 0xFFFD, 0xFFFD, -/* 3AC0 */ 0x643A, 0x643B, 0x643C, 0x643D, 0xFFFD, 0x643E, 0xFFFD, 0xFFFD, -/* 3AC8 */ 0x643F, 0xFFFD, 0x6440, 0xFFFD, 0x6441, 0x6442, 0x6443, 0xFFFD, -/* 3AD0 */ 0xFFFD, 0x6444, 0x6445, 0xFFFD, 0x6446, 0x6447, 0x6448, 0xFFFD, -/* 3AD8 */ 0x6449, 0xFFFD, 0x644A, 0xFFFD, 0x644B, 0x644C, 0xFFFD, 0xFFFD, -/* 3AE0 */ 0xFFFD, 0x644D, 0xFFFD, 0x644E, 0xFFFD, 0x644F, 0xFFFD, 0xFFFD, -/* 3AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6450, 0xFFFD, -/* 3AF0 */ 0x6451, 0xFFFD, 0xFFFD, 0xFFFD, 0x6452, 0x6453, 0xFFFD, 0x6454, -/* 3AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6455, 0xFFFD, 0xFFFD, -/* 3B00 */ 0xFFFD, 0xFFFD, 0x6456, 0xFFFD, 0xFFFD, 0xFFFD, 0x6457, 0xFFFD, -/* 3B08 */ 0xFFFD, 0x6458, 0x6459, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B10 */ 0xFFFD, 0x645A, 0x645B, 0x645C, 0x645D, 0xFFFD, 0x645E, 0xFFFD, -/* 3B18 */ 0xFFFD, 0x645F, 0x6460, 0xFFFD, 0x6461, 0xFFFD, 0x6462, 0x6463, -/* 3B20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B28 */ 0x6464, 0x6465, 0xFFFD, 0x6466, 0x6467, 0x6468, 0x6469, 0x646A, -/* 3B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x646B, 0x646C, -/* 3B38 */ 0x646D, 0xFFFD, 0xFFFD, 0x646E, 0xFFFD, 0x646F, 0x6470, 0xFFFD, -/* 3B40 */ 0x6471, 0xFFFD, 0xFFFD, 0xFFFD, 0x6472, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B48 */ 0xFFFD, 0xFFFD, 0x6473, 0x6474, 0xFFFD, 0x6475, 0xFFFD, 0x6476, -/* 3B50 */ 0x6477, 0xFFFD, 0xFFFD, 0x6478, 0xFFFD, 0x6479, 0x647A, 0x647B, -/* 3B58 */ 0xFFFD, 0x647C, 0x647D, 0xFFFD, 0x647E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B60 */ 0x6521, 0xFFFD, 0xFFFD, 0x6522, 0xFFFD, 0x6523, 0x6524, 0x6525, -/* 3B68 */ 0x6526, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6527, 0xFFFD, -/* 3B70 */ 0x6528, 0x6529, 0xFFFD, 0x652A, 0xFFFD, 0x652B, 0xFFFD, 0xFFFD, -/* 3B78 */ 0x652C, 0xFFFD, 0xFFFD, 0x652D, 0xFFFD, 0xFFFD, 0x652E, 0xFFFD, -/* 3B80 */ 0xFFFD, 0x652F, 0xFFFD, 0xFFFD, 0x6530, 0xFFFD, 0xFFFD, 0x6531, -/* 3B88 */ 0xFFFD, 0x6532, 0x6533, 0xFFFD, 0x6534, 0xFFFD, 0x6535, 0x653B, -/* 3B90 */ 0xFFFD, 0x6536, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B98 */ 0xFFFD, 0xFFFD, 0x6537, 0x6538, 0x6539, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BA0 */ 0x653A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x653C, -/* 3BA8 */ 0xFFFD, 0xFFFD, 0x653D, 0x653E, 0x653F, 0x6540, 0xFFFD, 0x6541, -/* 3BB0 */ 0x6542, 0x6543, 0x6544, 0x6545, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BB8 */ 0xFFFD, 0x6546, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6547, -/* 3BC0 */ 0xFFFD, 0xFFFD, 0x6548, 0xFFFD, 0x6549, 0x654A, 0xFFFD, 0xFFFD, -/* 3BC8 */ 0x654B, 0xFFFD, 0xFFFD, 0xFFFD, 0x654C, 0x654D, 0x654F, 0x6550, -/* 3BD0 */ 0x654E, 0x6551, 0x6552, 0xFFFD, 0x6553, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BD8 */ 0x6554, 0x6555, 0xFFFD, 0x6556, 0xFFFD, 0xFFFD, 0xFFFD, 0x6557, -/* 3BE0 */ 0x6558, 0xFFFD, 0xFFFD, 0xFFFD, 0x6559, 0x655A, 0x655B, 0xFFFD, -/* 3BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x655C, 0x655D, 0x655E, 0xFFFD, -/* 3BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x655F, 0x6560, -/* 3BF8 */ 0x6561, 0xFFFD, 0x6562, 0x6563, 0x6564, 0x6565, 0xFFFD, 0xFFFD, -/* 3C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6566, 0xFFFD, 0x6568, 0xFFFD, -/* 3C08 */ 0x6567, 0xFFFD, 0xFFFD, 0xFFFD, 0x6569, 0xFFFD, 0x656A, 0xFFFD, -/* 3C10 */ 0xFFFD, 0x656B, 0xFFFD, 0x656C, 0xFFFD, 0x656D, 0xFFFD, 0xFFFD, -/* 3C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x656E, 0xFFFD, -/* 3C20 */ 0xFFFD, 0xFFFD, 0x656F, 0xFFFD, 0xFFFD, 0x6570, 0xFFFD, 0xFFFD, -/* 3C28 */ 0x6571, 0xFFFD, 0x6572, 0xFFFD, 0x6573, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C30 */ 0xFFFD, 0x6574, 0xFFFD, 0xFFFD, 0x6575, 0xFFFD, 0x6576, 0x6577, -/* 3C38 */ 0x6578, 0xFFFD, 0x6579, 0x657A, 0x657C, 0x657B, 0x657D, 0x657E, -/* 3C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6621, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C48 */ 0xFFFD, 0xFFFD, 0x6622, 0xFFFD, 0xFFFD, 0xFFFD, 0x6623, 0xFFFD, -/* 3C50 */ 0xFFFD, 0xFFFD, 0x6624, 0x6625, 0x6626, 0x6627, 0x6628, 0x6629, -/* 3C58 */ 0xFFFD, 0x662A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x662B, 0xFFFD, -/* 3C60 */ 0xFFFD, 0x662C, 0xFFFD, 0x662D, 0x662E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x662F, 0xFFFD, 0x6630, 0xFFFD, -/* 3C70 */ 0xFFFD, 0xFFFD, 0x6631, 0xFFFD, 0xFFFD, 0x6632, 0xFFFD, 0x6633, -/* 3C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6634, 0xFFFD, -/* 3C80 */ 0x6635, 0x6636, 0xFFFD, 0x6637, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C88 */ 0x6638, 0x6639, 0x663A, 0x663B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C90 */ 0xFFFD, 0x663C, 0x663D, 0xFFFD, 0xFFFD, 0x663E, 0x663F, 0x6640, -/* 3C98 */ 0x6641, 0xFFFD, 0xFFFD, 0xFFFD, 0x6642, 0xFFFD, 0x6643, 0x6644, -/* 3CA0 */ 0x6645, 0xFFFD, 0xFFFD, 0xFFFD, 0x6646, 0xFFFD, 0x6647, 0x6648, -/* 3CA8 */ 0x6649, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x664A, 0xFFFD, -/* 3CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x664B, 0xFFFD, 0x664C, 0xFFFD, 0xFFFD, -/* 3CB8 */ 0xFFFD, 0x664D, 0x664E, 0x664F, 0x6650, 0xFFFD, 0x6651, 0x6652, -/* 3CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6653, 0x6654, 0xFFFD, 0x6655, 0xFFFD, -/* 3CC8 */ 0x6656, 0x6657, 0x6658, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6659, 0x665A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CD8 */ 0xFFFD, 0xFFFD, 0x665B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CE0 */ 0xFFFD, 0x665C, 0x665D, 0xFFFD, 0x665E, 0x665F, 0xFFFD, 0x6660, -/* 3CE8 */ 0x6661, 0x6662, 0x6663, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6664, -/* 3CF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6665, -/* 3CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6666, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D00 */ 0x6667, 0xFFFD, 0xFFFD, 0x6668, 0xFFFD, 0x6669, 0xFFFD, 0xFFFD, -/* 3D08 */ 0xFFFD, 0xFFFD, 0x666A, 0x666B, 0x666C, 0xFFFD, 0xFFFD, 0x666D, -/* 3D10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x666E, 0x666F, 0xFFFD, 0xFFFD, -/* 3D18 */ 0xFFFD, 0x6670, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D20 */ 0x6671, 0x6672, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D28 */ 0xFFFD, 0x6673, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6675, -/* 3D30 */ 0xFFFD, 0x6676, 0xFFFD, 0xFFFD, 0x6677, 0x6678, 0x6679, 0xFFFD, -/* 3D38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D40 */ 0x667A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x667B, 0xFFFD, -/* 3D48 */ 0x667C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D50 */ 0xFFFD, 0x667D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D58 */ 0xFFFD, 0x667E, 0x6721, 0xFFFD, 0x6722, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D60 */ 0x6723, 0x6724, 0x6725, 0xFFFD, 0x6726, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D68 */ 0x6727, 0x6728, 0x6729, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x672A, -/* 3D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D78 */ 0x672B, 0xFFFD, 0x672C, 0x672D, 0xFFFD, 0x672E, 0xFFFD, 0xFFFD, -/* 3D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x672F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D88 */ 0x6730, 0x6731, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6732, -/* 3D90 */ 0xFFFD, 0x6733, 0x6734, 0xFFFD, 0x6735, 0x6736, 0xFFFD, 0xFFFD, -/* 3D98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6737, 0xFFFD, 0xFFFD, -/* 3DA0 */ 0xFFFD, 0x6738, 0xFFFD, 0xFFFD, 0x6739, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DA8 */ 0x673A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x673B, 0xFFFD, 0xFFFD, -/* 3DB0 */ 0x673C, 0x673D, 0x673E, 0xFFFD, 0xFFFD, 0x673F, 0xFFFD, 0x6740, -/* 3DB8 */ 0xFFFD, 0x6741, 0x6742, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6743, 0x6744, 0x6745, 0x6746, 0xFFFD, -/* 3DC8 */ 0x6747, 0x6748, 0xFFFD, 0xFFFD, 0xFFFD, 0x6749, 0x674A, 0xFFFD, -/* 3DD0 */ 0xFFFD, 0x674B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x674C, 0xFFFD, 0x674D, 0xFFFD, 0xFFFD, -/* 3DE0 */ 0x674E, 0x674F, 0xFFFD, 0xFFFD, 0x6750, 0x6751, 0xFFFD, 0x6752, -/* 3DE8 */ 0x6753, 0x6754, 0xFFFD, 0x6755, 0xFFFD, 0x6756, 0x6757, 0xFFFD, -/* 3DF0 */ 0x6758, 0xFFFD, 0xFFFD, 0x6759, 0x675A, 0xFFFD, 0x675B, 0xFFFD, -/* 3DF8 */ 0x675C, 0x675D, 0xFFFD, 0x675E, 0x675F, 0x6760, 0xFFFD, 0x6761, -/* 3E00 */ 0x6762, 0xFFFD, 0xFFFD, 0x6763, 0xFFFD, 0xFFFD, 0x6764, 0x6765, -/* 3E08 */ 0x6766, 0xFFFD, 0x676A, 0xFFFD, 0x6767, 0x6768, 0xFFFD, 0x6769, -/* 3E10 */ 0x676B, 0xFFFD, 0xFFFD, 0x676C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x676D, 0xFFFD, -/* 3E20 */ 0x676E, 0xFFFD, 0xFFFD, 0x676F, 0xFFFD, 0xFFFD, 0x6770, 0x6771, -/* 3E28 */ 0xFFFD, 0x6772, 0x6773, 0xFFFD, 0xFFFD, 0x6774, 0xFFFD, 0xFFFD, -/* 3E30 */ 0x6776, 0x6777, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6778, -/* 3E38 */ 0xFFFD, 0x6779, 0xFFFD, 0xFFFD, 0x6775, 0xFFFD, 0xFFFD, 0x677A, -/* 3E40 */ 0xFFFD, 0x677B, 0xFFFD, 0x677C, 0xFFFD, 0xFFFD, 0x677D, 0xFFFD, -/* 3E48 */ 0x6828, 0x677E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6821, 0xFFFD, -/* 3E50 */ 0xFFFD, 0x6822, 0x6823, 0x6824, 0xFFFD, 0x6825, 0x6826, 0xFFFD, -/* 3E58 */ 0x6827, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E60 */ 0xFFFD, 0x6829, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x682A, -/* 3E68 */ 0xFFFD, 0xFFFD, 0x682B, 0xFFFD, 0xFFFD, 0x682C, 0xFFFD, 0xFFFD, -/* 3E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x682D, 0x682E, 0x682F, 0xFFFD, -/* 3E78 */ 0xFFFD, 0x6830, 0x6831, 0xFFFD, 0x6832, 0x6833, 0xFFFD, 0xFFFD, -/* 3E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6834, 0x6835, 0xFFFD, -/* 3E88 */ 0x6836, 0x6837, 0xFFFD, 0xFFFD, 0xFFFD, 0x6838, 0xFFFD, 0x6839, -/* 3E90 */ 0x683A, 0xFFFD, 0x683B, 0x683C, 0xFFFD, 0x683D, 0xFFFD, 0xFFFD, -/* 3E98 */ 0xFFFD, 0x683E, 0xFFFD, 0xFFFD, 0x683F, 0x6840, 0xFFFD, 0x6841, -/* 3EA0 */ 0x6842, 0xFFFD, 0xFFFD, 0xFFFD, 0x6843, 0xFFFD, 0xFFFD, 0x6844, -/* 3EA8 */ 0xFFFD, 0xFFFD, 0x6845, 0xFFFD, 0xFFFD, 0x6846, 0xFFFD, 0xFFFD, -/* 3EB0 */ 0xFFFD, 0x6847, 0x6848, 0xFFFD, 0x6849, 0xFFFD, 0x684A, 0x684B, -/* 3EB8 */ 0x684C, 0xFFFD, 0xFFFD, 0x684D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x684E, 0xFFFD, 0xFFFD, 0x684F, -/* 3EC8 */ 0x6850, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6851, 0x6852, 0xFFFD, -/* 3ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6853, -/* 3ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6854, 0x6855, 0x6856, 0xFFFD, 0xFFFD, -/* 3EE0 */ 0x6857, 0x6858, 0x6859, 0xFFFD, 0xFFFD, 0x685A, 0xFFFD, 0xFFFD, -/* 3EE8 */ 0x685B, 0xFFFD, 0xFFFD, 0xFFFD, 0x685C, 0x685D, 0xFFFD, 0xFFFD, -/* 3EF0 */ 0xFFFD, 0x685E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x685F, -/* 3EF8 */ 0x6860, 0x6861, 0x6862, 0x6863, 0xFFFD, 0xFFFD, 0xFFFD, 0x6864, -/* 3F00 */ 0x6865, 0x6866, 0x6867, 0xFFFD, 0xFFFD, 0xFFFD, 0x6868, 0x6869, -/* 3F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x686A, 0x686B, 0x686C, 0xFFFD, -/* 3F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x686D, 0x686E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F18 */ 0xFFFD, 0xFFFD, 0x686F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6870, 0x6871, -/* 3F20 */ 0xFFFD, 0x6872, 0x6873, 0xFFFD, 0x6874, 0x6875, 0x6876, 0x6877, -/* 3F28 */ 0xFFFD, 0x6878, 0xFFFD, 0x6879, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F30 */ 0xFFFD, 0xFFFD, 0x687A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x687B, 0x687C, 0x687D, 0xFFFD, -/* 3F40 */ 0xFFFD, 0x687E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6921, 0x6922, 0xFFFD, -/* 3F48 */ 0xFFFD, 0x6923, 0xFFFD, 0x6924, 0xFFFD, 0xFFFD, 0xFFFD, 0x6925, -/* 3F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6926, 0xFFFD, 0xFFFD, -/* 3F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6927, -/* 3F60 */ 0x6928, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6929, 0x692A, 0xFFFD, -/* 3F68 */ 0x692B, 0xFFFD, 0x692C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x692D, 0xFFFD, 0xFFFD, 0x692E, 0x692F, -/* 3F78 */ 0x6930, 0xFFFD, 0xFFFD, 0xFFFD, 0x6931, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F80 */ 0x6932, 0x6933, 0xFFFD, 0xFFFD, 0xFFFD, 0x6934, 0xFFFD, 0xFFFD, -/* 3F88 */ 0xFFFD, 0x6935, 0x6936, 0xFFFD, 0xFFFD, 0xFFFD, 0x6937, 0x6938, -/* 3F90 */ 0x6939, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x693A, -/* 3F98 */ 0x693B, 0xFFFD, 0xFFFD, 0xFFFD, 0x693C, 0x693D, 0xFFFD, 0xFFFD, -/* 3FA0 */ 0xFFFD, 0xFFFD, 0x693E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FA8 */ 0xFFFD, 0xFFFD, 0x693F, 0xFFFD, 0x6940, 0xFFFD, 0x6941, 0x6942, -/* 3FB0 */ 0x6943, 0xFFFD, 0xFFFD, 0x6944, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FB8 */ 0xFFFD, 0x6945, 0x6946, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6947, -/* 3FC0 */ 0xFFFD, 0x6948, 0x6949, 0xFFFD, 0x694A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x694C, 0xFFFD, 0xFFFD, -/* 3FD0 */ 0x694D, 0xFFFD, 0xFFFD, 0x694B, 0xFFFD, 0xFFFD, 0x694E, 0x694F, -/* 3FD8 */ 0x6950, 0xFFFD, 0x6951, 0xFFFD, 0xFFFD, 0x6952, 0xFFFD, 0xFFFD, -/* 3FE0 */ 0x6953, 0xFFFD, 0x6954, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FE8 */ 0xFFFD, 0x6955, 0x6956, 0xFFFD, 0x6957, 0xFFFD, 0x6958, 0x6959, -/* 3FF0 */ 0xFFFD, 0xFFFD, 0x695A, 0xFFFD, 0x695B, 0x695C, 0x695D, 0xFFFD, -/* 3FF8 */ 0xFFFD, 0x695E, 0xFFFD, 0x695F, 0xFFFD, 0xFFFD, 0x6960, 0x6961, -/* 4000 */ 0xFFFD, 0x6962, 0xFFFD, 0x6963, 0xFFFD, 0xFFFD, 0x6964, 0xFFFD, -/* 4008 */ 0x6965, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6966, 0xFFFD, -/* 4010 */ 0x6967, 0xFFFD, 0x6968, 0xFFFD, 0xFFFD, 0x6969, 0x696A, 0x696B, -/* 4018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x696C, 0x696D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4020 */ 0x696E, 0xFFFD, 0xFFFD, 0xFFFD, 0x696F, 0x6970, 0xFFFD, 0x6971, -/* 4028 */ 0xFFFD, 0x6972, 0xFFFD, 0xFFFD, 0x6973, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4030 */ 0xFFFD, 0xFFFD, 0x6974, 0x6975, 0xFFFD, 0x6976, 0xFFFD, 0xFFFD, -/* 4038 */ 0xFFFD, 0x6977, 0x6978, 0xFFFD, 0xFFFD, 0x6979, 0xFFFD, 0x697A, -/* 4040 */ 0x697B, 0x697C, 0x697D, 0x697E, 0x6A21, 0x6A22, 0xFFFD, 0xFFFD, -/* 4048 */ 0x6A23, 0x6A24, 0xFFFD, 0x6A25, 0x6A26, 0x6A27, 0x6A28, 0xFFFD, -/* 4050 */ 0x6A29, 0xFFFD, 0x6A2A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A2B, 0xFFFD, -/* 4058 */ 0xFFFD, 0x6A2C, 0xFFFD, 0x6A2D, 0x6A2E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4060 */ 0x6A2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A30, 0xFFFD, -/* 4068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A31, 0xFFFD, 0x6A32, 0xFFFD, 0xFFFD, -/* 4070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A33, 0x6A34, 0x6A35, 0xFFFD, 0x6A36, -/* 4078 */ 0xFFFD, 0x6A37, 0x6A38, 0xFFFD, 0xFFFD, 0x6A39, 0xFFFD, 0xFFFD, -/* 4080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4088 */ 0x6A3A, 0xFFFD, 0xFFFD, 0x6A3B, 0x6A3C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A3D, 0x6A3E, 0x6A3F, -/* 4098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A40, 0xFFFD, 0xFFFD, 0x6A41, 0xFFFD, -/* 40A0 */ 0xFFFD, 0x6A42, 0xFFFD, 0x6A43, 0xFFFD, 0x6A44, 0x6A45, 0xFFFD, -/* 40A8 */ 0x6A46, 0xFFFD, 0x6A47, 0x6A48, 0x6A49, 0x6A4A, 0x6A4B, 0xFFFD, -/* 40B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A4C, 0xFFFD, 0x6A4D, 0xFFFD, 0x6A4E, -/* 40B8 */ 0x6A4F, 0x6A50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A51, -/* 40C0 */ 0x6A52, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A53, 0x6A54, 0x6A55, 0x6A56, -/* 40C8 */ 0xFFFD, 0x6A57, 0x6A58, 0x6A59, 0xFFFD, 0x6A5A, 0xFFFD, 0x6A5B, -/* 40D0 */ 0x6A5C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A5D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40D8 */ 0xFFFD, 0xFFFD, 0x6A5E, 0xFFFD, 0xFFFD, 0x6A5F, 0x6A60, 0xFFFD, -/* 40E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A61, 0x6A62, -/* 40E8 */ 0xFFFD, 0x6A63, 0xFFFD, 0xFFFD, 0x6A64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40F0 */ 0x6A65, 0x6A66, 0x6A67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A68, -/* 40F8 */ 0x6A69, 0xFFFD, 0xFFFD, 0x6A6A, 0x6A6B, 0xFFFD, 0x6A6C, 0x6A6D, -/* 4100 */ 0xFFFD, 0x6A6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A6F, -/* 4108 */ 0x6A70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A71, 0xFFFD, -/* 4110 */ 0x6A72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A73, -/* 4118 */ 0x6A74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A75, 0xFFFD, 0x6A76, -/* 4120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A77, 0xFFFD, 0x6A78, -/* 4128 */ 0xFFFD, 0xFFFD, 0x6A79, 0x6A7A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A7B, -/* 4130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A7C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A7D, -/* 4138 */ 0x6A7E, 0x6B21, 0x6B22, 0xFFFD, 0xFFFD, 0x6B23, 0xFFFD, 0x6B24, -/* 4140 */ 0x6B25, 0xFFFD, 0x6B26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B27, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B28, -/* 4150 */ 0xFFFD, 0x6B29, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B2A, 0xFFFD, -/* 4158 */ 0x6B2B, 0x6B2C, 0x6B2D, 0xFFFD, 0x6B2E, 0xFFFD, 0x6B2F, 0xFFFD, -/* 4160 */ 0xFFFD, 0xFFFD, 0x6B30, 0x6B31, 0xFFFD, 0xFFFD, 0x6B32, 0x6B33, -/* 4168 */ 0x6B34, 0x6B35, 0x6B36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4170 */ 0xFFFD, 0x6B37, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B38, 0x6B39, 0x6B3A, -/* 4178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B3B, 0xFFFD, 0xFFFD, -/* 4180 */ 0xFFFD, 0x6B3C, 0xFFFD, 0x6B3D, 0x6B3E, 0x6B3F, 0xFFFD, 0xFFFD, -/* 4188 */ 0xFFFD, 0x6B40, 0x6B41, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B42, 0x6B43, -/* 4190 */ 0x6B44, 0xFFFD, 0xFFFD, 0x6B45, 0x6B46, 0xFFFD, 0x6B47, 0xFFFD, -/* 4198 */ 0x6B48, 0xFFFD, 0xFFFD, 0x6B49, 0x6B50, 0x6B4A, 0x6B4B, 0x6B4C, -/* 41A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41A8 */ 0x6B52, 0x6B4E, 0x6B4F, 0x6B51, 0xFFFD, 0xFFFD, 0x6B53, 0xFFFD, -/* 41B0 */ 0x6B54, 0xFFFD, 0x6B55, 0xFFFD, 0xFFFD, 0x6B56, 0xFFFD, 0x6B57, -/* 41B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B58, 0x6B5A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41C0 */ 0xFFFD, 0x6B5B, 0xFFFD, 0x6B5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B5E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B5D, 0xFFFD, 0xFFFD, -/* 41D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41E0 */ 0xFFFD, 0x6B60, 0x6B61, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B62, 0x6B63, -/* 41E8 */ 0x6B64, 0x6B65, 0x6B66, 0xFFFD, 0x6B67, 0x6B68, 0x6B69, 0xFFFD, -/* 41F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B6A, 0xFFFD, 0x6B6B, 0x6B6D, -/* 41F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B6E, 0x6B6F, 0xFFFD, 0x6B6C, -/* 4200 */ 0xFFFD, 0x6B70, 0xFFFD, 0xFFFD, 0x6B71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B72, 0x6B73, 0xFFFD, -/* 4210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4218 */ 0xFFFD, 0x6B74, 0xFFFD, 0xFFFD, 0x6B76, 0x6B75, 0xFFFD, 0x6B77, -/* 4220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B78, 0x6B79, 0x6B7A, 0xFFFD, 0xFFFD, -/* 4228 */ 0xFFFD, 0xFFFD, 0x6B7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4230 */ 0x6B7C, 0x6B7D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B7E, 0x6C21, 0xFFFD, -/* 4238 */ 0x6C22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C23, 0x6C24, 0xFFFD, -/* 4240 */ 0x6C25, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C26, 0xFFFD, 0xFFFD, 0x6C27, -/* 4248 */ 0x6C28, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C29, 0x6C2A, 0xFFFD, 0x6C2B, -/* 4250 */ 0x6C2C, 0x6C2D, 0x6C2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C30, 0xFFFD, 0x6C31, 0xFFFD, -/* 4268 */ 0x6C32, 0xFFFD, 0xFFFD, 0x6C33, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C34, -/* 4270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C35, 0xFFFD, 0xFFFD, 0x6C36, 0xFFFD, -/* 4278 */ 0xFFFD, 0x6C37, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C38, 0xFFFD, 0xFFFD, -/* 4280 */ 0xFFFD, 0x6C39, 0xFFFD, 0x6C3A, 0x6C3B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C3C, 0x6C3D, -/* 4290 */ 0x6C3E, 0x6C3F, 0xFFFD, 0xFFFD, 0x6C40, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4298 */ 0x6C41, 0x6C42, 0x6C43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C44, -/* 42A0 */ 0xFFFD, 0x6C45, 0xFFFD, 0x6C46, 0xFFFD, 0x6C47, 0xFFFD, 0xFFFD, -/* 42A8 */ 0x6C48, 0xFFFD, 0x6C49, 0xFFFD, 0xFFFD, 0x6C4A, 0x6C4B, 0xFFFD, -/* 42B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42B8 */ 0x6C4C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C4E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42C0 */ 0xFFFD, 0x6C4F, 0xFFFD, 0xFFFD, 0x6C4D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42C8 */ 0x6C50, 0xFFFD, 0x6C51, 0x6C52, 0x6C53, 0xFFFD, 0xFFFD, 0x6C54, -/* 42D0 */ 0x6C55, 0xFFFD, 0xFFFD, 0x6C56, 0xFFFD, 0xFFFD, 0x6C57, 0x6C58, -/* 42D8 */ 0x6C59, 0x6C5A, 0x6C5B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C5C, 0xFFFD, -/* 42E0 */ 0x6C5D, 0x6C5E, 0x6C5F, 0x6C60, 0xFFFD, 0x6C61, 0xFFFD, 0xFFFD, -/* 42E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C62, 0x6C63, 0xFFFD, 0xFFFD, -/* 42F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C64, 0xFFFD, 0x6C65, 0xFFFD, -/* 42F8 */ 0xFFFD, 0x6C66, 0xFFFD, 0xFFFD, 0x6C67, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4300 */ 0xFFFD, 0xFFFD, 0x6C68, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C69, 0xFFFD, -/* 4308 */ 0xFFFD, 0xFFFD, 0x6C6A, 0xFFFD, 0x6C6B, 0x6C6C, 0x6C6D, 0xFFFD, -/* 4310 */ 0xFFFD, 0x6C6E, 0x6C6F, 0x6C70, 0x6C71, 0xFFFD, 0x6C72, 0xFFFD, -/* 4318 */ 0xFFFD, 0x6C73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C75, 0xFFFD, 0xFFFD, -/* 4330 */ 0xFFFD, 0xFFFD, 0x6C76, 0xFFFD, 0xFFFD, 0x6C77, 0xFFFD, 0xFFFD, -/* 4338 */ 0xFFFD, 0xFFFD, 0x6C78, 0x6C79, 0x6C7A, 0xFFFD, 0x6C7B, 0x6C7C, -/* 4340 */ 0x6C7D, 0xFFFD, 0xFFFD, 0x6C7E, 0xFFFD, 0xFFFD, 0x6D21, 0xFFFD, -/* 4348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D22, 0xFFFD, 0xFFFD, -/* 4350 */ 0x6D23, 0x6D24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D25, -/* 4358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D26, 0x6D27, 0x6D28, -/* 4360 */ 0x6D29, 0xFFFD, 0x6D2A, 0xFFFD, 0x6D2B, 0x6D2C, 0xFFFD, 0x6D2D, -/* 4368 */ 0x6D2E, 0x6D2F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D30, 0xFFFD, 0xFFFD, -/* 4370 */ 0x6D31, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D32, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4378 */ 0x6D33, 0x6D34, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D35, 0xFFFD, 0x6D36, -/* 4380 */ 0x6D37, 0xFFFD, 0x6D38, 0xFFFD, 0xFFFD, 0x6D39, 0xFFFD, 0x6D3A, -/* 4388 */ 0x6D3B, 0xFFFD, 0x6D3C, 0x6D3D, 0xFFFD, 0x6D3E, 0xFFFD, 0x6D3F, -/* 4390 */ 0xFFFD, 0x6D40, 0x6D41, 0x6D42, 0x6D43, 0x6D44, 0x6D45, 0xFFFD, -/* 4398 */ 0x6D46, 0x6D47, 0x6D48, 0x6D49, 0xFFFD, 0x6D4A, 0xFFFD, 0xFFFD, -/* 43A0 */ 0x6D4B, 0x6D4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D4D, 0x6D4E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43B0 */ 0x6D4F, 0x6D50, 0x6D51, 0x6D52, 0x6D53, 0xFFFD, 0x6D54, 0xFFFD, -/* 43B8 */ 0x6D55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D56, 0xFFFD, 0xFFFD, -/* 43C0 */ 0x6D57, 0x6D58, 0x6D59, 0x6D5A, 0x6D5B, 0xFFFD, 0x6D5C, 0xFFFD, -/* 43C8 */ 0x6D5D, 0x6D5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43D0 */ 0x6D5F, 0xFFFD, 0xFFFD, 0x6D60, 0x6D61, 0x6D62, 0xFFFD, 0x6D63, -/* End of table Total Length = 0x46A1 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/koi8r.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/koi8r.uf deleted file mode 100755 index 4fab3f3c1a4..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/koi8r.uf +++ /dev/null @@ -1,246 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0418 - srcEnd = 041F - destBegin = 00E9 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0438 - srcEnd = 043F - destBegin = 00C9 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 2553 - srcEnd = 2561 - destBegin = 00A4 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 2562 - srcEnd = 256C - destBegin = 00B4 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00A0 - srcEnd = 00B7 - mappingOffset = 0000 - Mapping = - 009A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00BF FFFD FFFD FFFD FFFD FFFD FFFD - 009C FFFD 009D FFFD FFFD FFFD FFFD 009E -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 00F7 - destBegin = 009F -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 0401 - destBegin = 00B3 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 0410 - srcEnd = 0451 - mappingOffset = 0018 - Mapping = - 00E1 00E2 00F7 00E7 00E4 00E5 00F6 00FA - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00F2 00F3 00F4 00F5 00E6 00E8 00E3 00FE - 00FB 00FD 00FF 00F9 00F8 00FC 00E0 00F1 - 00C1 00C2 00D7 00C7 00C4 00C5 00D6 00DA - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00D2 00D3 00D4 00D5 00C6 00C8 00C3 00DE - 00DB 00DD 00DF 00D9 00D8 00DC 00C0 00D1 - FFFD 00A3 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 2219 - srcEnd = 221A - mappingOffset = 005A - Mapping = - 0095 0096 -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 2248 - destBegin = 0097 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2264 - srcEnd = 2265 - mappingOffset = 005C - Mapping = - 0098 0099 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2320 - srcEnd = 2321 - mappingOffset = 005E - Mapping = - 0093 009B -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 0060 - Mapping = - 0080 FFFD 0081 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0082 FFFD FFFD FFFD - 0083 FFFD FFFD FFFD 0084 FFFD FFFD FFFD - 0085 FFFD FFFD FFFD 0086 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0087 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0088 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0089 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 008A -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 2550 - srcEnd = 2552 - mappingOffset = 009D - Mapping = - 00A0 00A1 00A2 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 00A0 - Mapping = - 008B FFFD FFFD FFFD 008C FFFD FFFD FFFD - 008D FFFD FFFD FFFD 008E FFFD FFFD FFFD - 008F 0090 0091 0092 -End of Item 000F - -Begin of Item 0010 - Format 2 - srcBegin = 25A0 - destBegin = 0094 -End of Item 0010 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x003C, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0005 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x0004 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x2210, 0x1211, 0x1111, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0418, 0x041F, 0x00E9, -/* 0002 */ 0x0438, 0x043F, 0x00C9, -/* 0003 */ 0x2553, 0x2561, 0x00A4, -/* 0004 */ 0x2562, 0x256C, 0x00B4, -/* 0005 */ 0x00A0, 0x00B7, 0x0000, -/* 0006 */ 0x00F7, 0x0000, 0x009F, -/* 0007 */ 0x0401, 0x0000, 0x00B3, -/* 0008 */ 0x0410, 0x0451, 0x0018, -/* 0009 */ 0x2219, 0x221A, 0x005A, -/* 000A */ 0x2248, 0x0000, 0x0097, -/* 000B */ 0x2264, 0x2265, 0x005C, -/* 000C */ 0x2320, 0x2321, 0x005E, -/* 000D */ 0x2500, 0x253C, 0x0060, -/* 000E */ 0x2550, 0x2552, 0x009D, -/* 000F */ 0x2580, 0x2593, 0x00A0, -/* 0010 */ 0x25A0, 0x0000, 0x0094, -/*-------------------------------------------------------*/ -/* Offset=0x003C Start of MappingTable */ - -/* 0000 */ 0x009A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x009C, 0xFFFD, 0x009D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x009E, -/* 0018 */ 0x00E1, 0x00E2, 0x00F7, 0x00E7, 0x00E4, 0x00E5, 0x00F6, 0x00FA, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00E6, 0x00E8, 0x00E3, 0x00FE, -/* 0030 */ 0x00FB, 0x00FD, 0x00FF, 0x00F9, 0x00F8, 0x00FC, 0x00E0, 0x00F1, -/* 0038 */ 0x00C1, 0x00C2, 0x00D7, 0x00C7, 0x00C4, 0x00C5, 0x00D6, 0x00DA, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0048 */ 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00C6, 0x00C8, 0x00C3, 0x00DE, -/* 0050 */ 0x00DB, 0x00DD, 0x00DF, 0x00D9, 0x00D8, 0x00DC, 0x00C0, 0x00D1, -/* 0058 */ 0xFFFD, 0x00A3, 0x0095, 0x0096, 0x0098, 0x0099, 0x0093, 0x009B, -/* 0060 */ 0x0080, 0xFFFD, 0x0081, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0082, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0x0083, 0xFFFD, 0xFFFD, 0xFFFD, 0x0084, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0x0085, 0xFFFD, 0xFFFD, 0xFFFD, 0x0086, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0087, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0088, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0089, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008A, 0x00A0, 0x00A1, 0x00A2, -/* 00A0 */ 0x008B, 0xFFFD, 0xFFFD, 0xFFFD, 0x008C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0x008D, 0xFFFD, 0xFFFD, 0xFFFD, 0x008E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0x008F, 0x0090, 0x0091, 0x0092, -/* End of table Total Length = 0x00F0 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/koi8u.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/koi8u.uf deleted file mode 100644 index 37ad99d1f38..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/koi8u.uf +++ /dev/null @@ -1,244 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0418 - srcEnd = 041F - destBegin = 00E9 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0438 - srcEnd = 043F - destBegin = 00C9 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00B7 - mappingOffset = 0000 - Mapping = - 009A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00BF FFFD FFFD FFFD FFFD FFFD FFFD - 009C FFFD 009D FFFD FFFD FFFD FFFD 009E -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 00F7 - destBegin = 009F -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 0401 - srcEnd = 0457 - mappingOffset = 0018 - Mapping = - 00B3 FFFD FFFD 00B4 FFFD 00B6 00B7 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 00E1 - 00E2 00F7 00E7 00E4 00E5 00F6 00FA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 00F2 - 00F3 00F4 00F5 00E6 00E8 00E3 00FE 00FB - 00FD 00FF 00F9 00F8 00FC 00E0 00F1 00C1 - 00C2 00D7 00C7 00C4 00C5 00D6 00DA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 00D2 - 00D3 00D4 00D5 00C6 00C8 00C3 00DE 00DB - 00DD 00DF 00D9 00D8 00DC 00C0 00D1 FFFD - 00A3 FFFD FFFD 00A4 FFFD 00A6 00A7 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 0490 - srcEnd = 0491 - mappingOffset = 006F - Mapping = - 00BD 00AD -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 2219 - srcEnd = 221A - mappingOffset = 0071 - Mapping = - 0095 0096 -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 2248 - destBegin = 0097 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 2264 - srcEnd = 2265 - mappingOffset = 0073 - Mapping = - 0098 0099 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2320 - srcEnd = 2321 - mappingOffset = 0075 - Mapping = - 0093 009B -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2500 - srcEnd = 253C - mappingOffset = 0077 - Mapping = - 0080 FFFD 0081 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0082 FFFD FFFD FFFD - 0083 FFFD FFFD FFFD 0084 FFFD FFFD FFFD - 0085 FFFD FFFD FFFD 0086 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0087 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0088 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0089 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 008A -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2550 - srcEnd = 256C - mappingOffset = 00B4 - Mapping = - 00A0 00A1 00A2 FFFD 00A5 FFFD FFFD 00A8 - 00A9 00AA 00AB 00AC FFFD 00AE 00AF 00B0 - 00B1 00B2 FFFD 00B5 FFFD FFFD 00B8 00B9 - 00BA 00BB 00BC FFFD 00BE -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2580 - srcEnd = 2593 - mappingOffset = 00D1 - Mapping = - 008B FFFD FFFD FFFD 008C FFFD FFFD FFFD - 008D FFFD FFFD FFFD 008E FFFD FFFD FFFD - 008F 0090 0091 0092 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 25A0 - destBegin = 0094 -End of Item 000E - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000F, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0035, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0009 */ -/* Total of Format 2 : 0x0003 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x1112, 0x1112, 0x0211, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0418, 0x041F, 0x00E9, -/* 0002 */ 0x0438, 0x043F, 0x00C9, -/* 0003 */ 0x00A0, 0x00B7, 0x0000, -/* 0004 */ 0x00F7, 0x0000, 0x009F, -/* 0005 */ 0x0401, 0x0457, 0x0018, -/* 0006 */ 0x0490, 0x0491, 0x006F, -/* 0007 */ 0x2219, 0x221A, 0x0071, -/* 0008 */ 0x2248, 0x0000, 0x0097, -/* 0009 */ 0x2264, 0x2265, 0x0073, -/* 000A */ 0x2320, 0x2321, 0x0075, -/* 000B */ 0x2500, 0x253C, 0x0077, -/* 000C */ 0x2550, 0x256C, 0x00B4, -/* 000D */ 0x2580, 0x2593, 0x00D1, -/* 000E */ 0x25A0, 0x0000, 0x0094, -/*-------------------------------------------------------*/ -/* Offset=0x0035 Start of MappingTable */ - -/* 0000 */ 0x009A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0x00BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x009C, 0xFFFD, 0x009D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x009E, -/* 0018 */ 0x00B3, 0xFFFD, 0xFFFD, 0x00B4, 0xFFFD, 0x00B6, 0x00B7, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E1, -/* 0028 */ 0x00E2, 0x00F7, 0x00E7, 0x00E4, 0x00E5, 0x00F6, 0x00FA, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00F2, -/* 0038 */ 0x00F3, 0x00F4, 0x00F5, 0x00E6, 0x00E8, 0x00E3, 0x00FE, 0x00FB, -/* 0040 */ 0x00FD, 0x00FF, 0x00F9, 0x00F8, 0x00FC, 0x00E0, 0x00F1, 0x00C1, -/* 0048 */ 0x00C2, 0x00D7, 0x00C7, 0x00C4, 0x00C5, 0x00D6, 0x00DA, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D2, -/* 0058 */ 0x00D3, 0x00D4, 0x00D5, 0x00C6, 0x00C8, 0x00C3, 0x00DE, 0x00DB, -/* 0060 */ 0x00DD, 0x00DF, 0x00D9, 0x00D8, 0x00DC, 0x00C0, 0x00D1, 0xFFFD, -/* 0068 */ 0x00A3, 0xFFFD, 0xFFFD, 0x00A4, 0xFFFD, 0x00A6, 0x00A7, 0x00BD, -/* 0070 */ 0x00AD, 0x0095, 0x0096, 0x0098, 0x0099, 0x0093, 0x009B, 0x0080, -/* 0078 */ 0xFFFD, 0x0081, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0082, 0xFFFD, 0xFFFD, 0xFFFD, 0x0083, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0084, 0xFFFD, 0xFFFD, 0xFFFD, 0x0085, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0086, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0087, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0088, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0089, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x008A, 0x00A0, 0x00A1, 0x00A2, 0xFFFD, -/* 00B8 */ 0x00A5, 0xFFFD, 0xFFFD, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, -/* 00C0 */ 0xFFFD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0xFFFD, 0x00B5, -/* 00C8 */ 0xFFFD, 0xFFFD, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0xFFFD, -/* 00D0 */ 0x00BE, 0x008B, 0xFFFD, 0xFFFD, 0xFFFD, 0x008C, 0xFFFD, 0xFFFD, -/* 00D8 */ 0xFFFD, 0x008D, 0xFFFD, 0xFFFD, 0xFFFD, 0x008E, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0x008F, 0x0090, 0x0091, 0x0092, -/* End of table Total Length = 0x011A * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/ksc5601.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/ksc5601.uf deleted file mode 100644 index 2e524b4a16e..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/ksc5601.uf +++ /dev/null @@ -1,7816 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = 2541 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = 2552 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = 2561 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = 2572 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0410 - srcEnd = 0415 - destBegin = 2C21 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0416 - srcEnd = 042F - destBegin = 2C28 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0430 - srcEnd = 0435 - destBegin = 2C51 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0436 - srcEnd = 044F - destBegin = 2C58 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2160 - srcEnd = 2169 - destBegin = 2530 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2170 - srcEnd = 2179 - destBegin = 2521 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2460 - srcEnd = 246E - destBegin = 2867 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2474 - srcEnd = 2482 - destBegin = 2967 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 249C - srcEnd = 24B5 - destBegin = 294D -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 24D0 - srcEnd = 24E9 - destBegin = 284D -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 2543 - srcEnd = 254A - destBegin = 265D -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 3008 - srcEnd = 3011 - destBegin = 2134 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = 2A21 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 30A1 - srcEnd = 30F6 - destBegin = 2B21 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 3131 - srcEnd = 318E - destBegin = 2421 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 3200 - srcEnd = 321B - destBegin = 2931 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 3260 - srcEnd = 327B - destBegin = 2831 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 3399 - srcEnd = 33A2 - destBegin = 272B -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 33B0 - srcEnd = 33B9 - destBegin = 273F -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 33BA - srcEnd = 33BF - destBegin = 274E -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 3400 - srcEnd = 345D - destBegin = 3021 -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 345E - srcEnd = 34BB - destBegin = 3121 -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = 34BC - srcEnd = 3519 - destBegin = 3221 -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = 351A - srcEnd = 3577 - destBegin = 3321 -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = 3578 - srcEnd = 35D5 - destBegin = 3421 -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = 35D6 - srcEnd = 3633 - destBegin = 3521 -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = 3634 - srcEnd = 3691 - destBegin = 3621 -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = 3692 - srcEnd = 36EF - destBegin = 3721 -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = 36F0 - srcEnd = 374D - destBegin = 3821 -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = 374E - srcEnd = 37AB - destBegin = 3921 -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = 37AC - srcEnd = 3809 - destBegin = 3A21 -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = 380A - srcEnd = 3867 - destBegin = 3B21 -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = 3868 - srcEnd = 38C5 - destBegin = 3C21 -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = 38C6 - srcEnd = 3923 - destBegin = 3D21 -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = 3924 - srcEnd = 3981 - destBegin = 3E21 -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = 3982 - srcEnd = 39DF - destBegin = 3F21 -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = 39E0 - srcEnd = 3A3D - destBegin = 4021 -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = 3A3E - srcEnd = 3A9B - destBegin = 4121 -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = 3A9C - srcEnd = 3AF9 - destBegin = 4221 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = 3AFA - srcEnd = 3B57 - destBegin = 4321 -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = 3B58 - srcEnd = 3BB5 - destBegin = 4421 -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = 3BB6 - srcEnd = 3C13 - destBegin = 4521 -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = 3C14 - srcEnd = 3C71 - destBegin = 4621 -End of Item 002E - -Begin of Item 002F - Format 0 - srcBegin = 3C72 - srcEnd = 3CCF - destBegin = 4721 -End of Item 002F - -Begin of Item 0030 - Format 0 - srcBegin = 3CD0 - srcEnd = 3D2D - destBegin = 4821 -End of Item 0030 - -Begin of Item 0031 - Format 0 - srcBegin = F90E - srcEnd = F913 - destBegin = 515B -End of Item 0031 - -Begin of Item 0032 - Format 0 - srcBegin = F933 - srcEnd = F938 - destBegin = 5246 -End of Item 0032 - -Begin of Item 0033 - Format 0 - srcBegin = F939 - srcEnd = F943 - destBegin = 524D -End of Item 0033 - -Begin of Item 0034 - Format 0 - srcBegin = F94A - srcEnd = F951 - destBegin = 5264 -End of Item 0034 - -Begin of Item 0035 - Format 0 - srcBegin = F952 - srcEnd = F957 - destBegin = 5270 -End of Item 0035 - -Begin of Item 0036 - Format 0 - srcBegin = FF01 - srcEnd = FF3B - destBegin = 2321 -End of Item 0036 - -Begin of Item 0037 - Format 0 - srcBegin = FF3D - srcEnd = FF5D - destBegin = 235D -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 00A1 - srcEnd = 00FE - mappingOffset = 0000 - Mapping = - 222E FFFD FFFD 2234 FFFD FFFD 2157 2127 - FFFD 2823 216C FFFD FFFD FFFD FFFD 2146 - 213E 2977 2978 2225 FFFD 2252 FFFD 222C - 2976 282C 216D 2879 2876 287A 222F FFFD - FFFD FFFD FFFD FFFD FFFD 2821 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2822 - FFFD FFFD FFFD FFFD FFFD FFFD 213F 282A - FFFD FFFD FFFD FFFD FFFD 282D 292C FFFD - FFFD FFFD FFFD FFFD FFFD 2921 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 2923 - FFFD FFFD FFFD FFFD FFFD FFFD 2140 292A - FFFD FFFD FFFD FFFD FFFD 292D -End of Item 0038 - -Begin of Item 0039 - Format 2 - srcBegin = 0111 - destBegin = 2922 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 0126 - srcEnd = 0153 - mappingOffset = 005E - Mapping = - 2824 2924 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2925 2826 2926 FFFD FFFD - FFFD FFFD 2927 FFFD FFFD FFFD FFFD FFFD - FFFD 2828 2928 2829 2929 FFFD FFFD FFFD - FFFD FFFD FFFD 2930 282F 292F FFFD FFFD - FFFD FFFD FFFD FFFD 282B 292B -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 0166 - srcEnd = 0167 - mappingOffset = 008C - Mapping = - 282E 292E -End of Item 003B - -Begin of Item 003C - Format 2 - srcBegin = 02C7 - destBegin = 2227 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 008E - Mapping = - 2228 222B 222A 222D 2226 2229 -End of Item 003D - -Begin of Item 003E - Format 2 - srcBegin = 0401 - destBegin = 2C27 -End of Item 003E - -Begin of Item 003F - Format 2 - srcBegin = 0451 - destBegin = 2C57 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 2013 - srcEnd = 203B - mappingOffset = 0094 - Mapping = - 2129 212A FFFD 212B FFFD 212E 212F FFFD - FFFD 2130 2131 FFFD FFFD 2253 2254 FFFD - FFFD FFFD 2125 2126 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 2236 FFFD 2147 - 2148 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2158 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 2074 - srcEnd = 2084 - mappingOffset = 00BD - Mapping = - 2979 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 297A FFFD 297B 297C 297D - 297E -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 2103 - srcEnd = 212B - mappingOffset = 00CE - Mapping = - 2149 FFFD FFFD FFFD FFFD FFFD 2235 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2724 FFFD FFFD 2260 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 2265 2262 - FFFD FFFD FFFD 2759 FFFD FFFD FFFD FFFD - 214A -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 2153 - srcEnd = 215E - mappingOffset = 00F7 - Mapping = - 2877 2878 FFFD FFFD FFFD FFFD FFFD FFFD - 287B 287C 287D 287E -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 2190 - srcEnd = 2199 - mappingOffset = 0103 - Mapping = - 2167 2168 2166 2169 216A 2255 2258 2256 - 2259 2257 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 21D2 - srcEnd = 21D4 - mappingOffset = 010D - Mapping = - 2221 FFFD 2222 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 2200 - srcEnd = 223D - mappingOffset = 0110 - Mapping = - 2223 FFFD 2153 2224 FFFD FFFD FFFD 2154 - 2174 FFFD FFFD 2175 FFFD FFFD FFFD 2233 - FFFD 2232 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 216E FFFD FFFD 2170 2144 FFFD - 2150 FFFD FFFD FFFD FFFD FFFD FFFD 217C - 217D 217B 217A 2172 2173 FFFD 2231 FFFD - FFFD FFFD FFFD FFFD 2145 2171 2230 FFFD - FFFD FFFD FFFD FFFD FFFD 216F -End of Item 0046 - -Begin of Item 0047 - Format 2 - srcBegin = 2252 - destBegin = 2156 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 014E - Mapping = - 2141 2155 FFFD FFFD 2142 2143 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 2282 - srcEnd = 2287 - mappingOffset = 0154 - Mapping = - 2178 2179 FFFD FFFD 2176 2177 -End of Item 0049 - -Begin of Item 004A - Format 2 - srcBegin = 22A5 - destBegin = 2151 -End of Item 004A - -Begin of Item 004B - Format 2 - srcBegin = 2312 - destBegin = 2152 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 2500 - srcEnd = 254B - mappingOffset = 015A - Mapping = - 2621 262C 2622 262D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 2623 2648 2647 262E - 2624 2642 2641 262F 2626 2646 2645 2631 - 2625 2644 2643 2630 2627 263C 2649 264A - 2637 264B 264C 2632 2629 263E 264D 264E - 2639 264F 2650 2634 2628 2651 2652 2638 - 263D 2653 2654 2633 262A 2655 2656 263A - 263F 2657 2658 2635 262B 2659 265A 263B - 265B 265C 2640 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2636 -End of Item 004C - -Begin of Item 004D - Format 2 - srcBegin = 2592 - destBegin = 2246 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 25A0 - srcEnd = 25D1 - mappingOffset = 01A6 - Mapping = - 2161 2160 FFFD 2243 2247 2248 224B 224A - 2249 224C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 2163 2162 FFFD FFFD 223A 2239 - FFFD FFFD FFFD FFFD 2165 2164 FFFD FFFD - 2238 2237 FFFD FFFD FFFD FFFD 215F 215E - 2242 2241 FFFD 215B FFFD FFFD 215D 215C - 2244 2245 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 2605 - srcEnd = 260F - mappingOffset = 01D8 - Mapping = - 215A 2159 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 224F 224E -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 261C - srcEnd = 261E - mappingOffset = 01E3 - Mapping = - 2250 FFFD 2251 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 01E6 - Mapping = - 214F FFFD 214E -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 2660 - srcEnd = 266D - mappingOffset = 01E9 - Mapping = - 223C 223D FFFD 2240 223B 223E FFFD 223F - 224D 225B 225C FFFD 225D 225A -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 3000 - srcEnd = 3003 - mappingOffset = 01F7 - Mapping = - 2121 2122 2123 2128 -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 3013 - srcEnd = 3015 - mappingOffset = 01FB - Mapping = - 216B 2132 2133 -End of Item 0054 - -Begin of Item 0055 - Format 2 - srcBegin = 30FB - destBegin = 2124 -End of Item 0055 - -Begin of Item 0056 - Format 2 - srcBegin = 321C - destBegin = 225F -End of Item 0056 - -Begin of Item 0057 - Format 2 - srcBegin = 327F - destBegin = 225E -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 3380 - srcEnd = 33AF - mappingOffset = 01FE - Mapping = - 2749 274A 274B 274C 274D FFFD FFFD FFFD - 273A 273B 275C 275D 275E 2736 2737 2738 - 2754 2755 2756 2757 2758 2721 2722 2723 - 2725 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 2727 2728 2729 272A 273D - 273E 2765 2766 2767 2768 2761 2762 2763 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 33C0 - srcEnd = 33DD - mappingOffset = 022E - Mapping = - 275A 275B 2263 276C 2726 2760 276F 2261 - 273C 276D 2735 FFFD FFFD FFFD FFFD 2739 - 276A FFFD FFFD 276B FFFD FFFD 275F FFFD - 2264 FFFD FFFD 2764 276E 2769 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 4E00 - srcEnd = 4E1E - mappingOffset = 024C - Mapping = - 6C69 6F4B FFFD 7652 FFFD FFFD FFFD 5832 - 6D5B 5F32 5F3E 793B FFFD 5C74 FFFD FFFD - FFFD 7564 FFFD FFFD 7326 5D60 6126 FFFD - 4E78 5C30 FFFD FFFD FFFD FFFD 632A -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 4E2D - srcEnd = 4E5F - mappingOffset = 026B - Mapping = - 7169 FFFD FFFD FFFD FFFD 4D7A FFFD FFFD - FFFD FFFD FFFD 7C2F 5321 FFFD 712B FFFD - FFFD FFFD FFFD FFFD FFFD 6751 522C FFFD - 4E79 FFFD FFFD FFFD FFFD FFFD 717D FFFD - 5E3F 7B3A 7939 FFFD FFFD FFFD FFFD FFFD - FFFD 4E52 FFFD 632B 6B60 FFFD FFFD FFFD - 4E7A 4B77 6525 -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 4E6B - srcEnd = 4F11 - mappingOffset = 029E - Mapping = - 4A61 FFFD 544C FFFD FFFD FFFD FFFD FFFD - 6A61 FFFD FFFD 5C63 5F2D FFFD FFFD FFFD - FFFD FFFD FFFD 4B6B FFFD FFFD FFFD 552F - FFFD FFFD FFFD 5675 FFFD 6578 FFFD FFFD - 5E40 6C23 FFFD 694D FFFD 6A27 6976 7B3B - FFFD 6769 6F4C FFFD FFFD 5066 FFFD FFFD - 5E41 FFFD FFFD 642C FFFD FFFD 584C 7971 - FFFD 4E5F 7A24 6632 FFFD 7A7B FFFD FFFD - 7A3D 4C48 6F4D 5555 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5322 FFFD FFFD FFFD 6C51 - FFFD FFFD FFFD FFFD FFFD 6427 6C52 FFFD - FFFD 7631 FFFD FFFD 4E7B FFFD FFFD 5051 - 4B3F FFFD 6D24 FFFD FFFD FFFD FFFD FFFD - FFFD 6D28 5E42 7662 6D5C 5C75 6039 FFFD - FFFD FFFD 544E FFFD 7435 FFFD FFFD FFFD - 535B 5635 6C24 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6466 FFFD 716A - FFFD FFFD FFFD 4B6C 4B40 FFFD FFFD FFFD - 6C72 FFFD FFFD FFFD FFFD FFFD 506A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7972 6C25 - 505F FFFD 676A 506B 5C51 5B69 7D4C -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 4F2F - srcEnd = 4F5C - mappingOffset = 0345 - Mapping = - 5B57 FFFD FFFD FFFD FFFD 5A61 FFFD 5636 - FFFD 635F FFFD 5E43 FFFD 5E44 4A21 FFFD - FFFD FFFD FFFD FFFD 6E6C FFFD FFFD 5323 - 6E37 784F FFFD FFFD FFFD FFFD 6A48 6E38 - 712C 7125 694E FFFD FFFD FFFD 793C FFFD - FFFD FFFD 6579 6C6A 5D56 6D42 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 4F69 - srcEnd = 4F9D - mappingOffset = 0373 - Mapping = - 7825 FFFD FFFD FFFD FFFD FFFD 653A 5B58 - FFFD FFFD 4A22 FFFD FFFD 514D FFFD FFFD - FFFD 6E6D FFFD FFFD FFFD 6C6B 5E45 FFFD - 6360 FFFD 4A49 7269 FFFD 554E FFFD 7636 - FFFD 4E42 5647 FFFD 6334 FFFD 712D FFFD - 6A62 FFFD FFFD FFFD FFFD 5742 FFFD 7327 - FFFD FFFD 4D6A FFFD 6B6E -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 4FAE - srcEnd = 4FE1 - mappingOffset = 03A8 - Mapping = - 5932 7D25 FFFD FFFD FFFD FFFD FFFD 7655 - 5562 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7835 FFFD FFFD 4C75 7535 642D FFFD - FFFD FFFD FFFD 676B 7155 FFFD FFFD FFFD - 703B FFFD FFFD 6935 FFFD 4C49 7A55 FFFD - FFFD 6154 FFFD FFFD 5756 FFFD FFFD 5C41 - FFFD 5E46 7A6F 6361 -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 4FEE - srcEnd = 502D - mappingOffset = 03DC - Mapping = - 6173 5C76 FFFD 4E7C FFFD 5B44 FFFD 7871 - FFFD FFFD 5C64 FFFD 656F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5C31 FFFD FFFD FFFD - 5556 FFFD FFFD 735A FFFD 4B41 FFFD 5B43 - FFFD FFFD FFFD 597A 536E FFFD FFFD FFFD - 7A38 FFFD FFFD 7D26 6B6F FFFD 7426 FFFD - 4C4A 7328 FFFD 735B FFFD 5B27 7637 FFFD - 4F66 7072 4B5A FFFD 6752 5743 7670 685E -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 503B - srcEnd = 5065 - mappingOffset = 041C - Mapping = - 6526 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6567 FFFD FFFD FFFD 4A23 4C27 6A49 FFFD - FFFD FFFD FFFD FFFD 7836 FFFD FFFD FFFD - FFFD FFFD 7A25 FFFD FFFD FFFD FFFD 712E - FFFD 6F4E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4B6D -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 5074 - srcEnd = 5099 - mappingOffset = 0447 - Mapping = - 7630 6F4F 694F FFFD 775E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4E53 FFFD FFFD FFFD - FFFD 5C77 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5B28 FFFD FFFD FFFD 4B78 FFFD FFFD - FFFD FFFD FFFD FFFD 5F21 5D61 -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 50AC - srcEnd = 50ED - mappingOffset = 046D - Mapping = - 754A 6936 FFFD FFFD FFFD FFFD 676C 6E6E - FFFD 7370 FFFD 5F3F FFFD FFFD FFFD FFFD - FFFD FFFD 4C4B FFFD FFFD FFFD FFFD FFFD - FFFD 5041 FFFD FFFD FFFD 7452 603A FFFD - FFFD FFFD FFFD 5F40 FFFD 4E60 FFFD FFFD - FFFD 5C52 7D6A FFFD FFFD FFFD 5676 FFFD - FFFD FFFD 6A4A FFFD FFFD FFFD FFFD FFFD - FFFD 6869 FFFD 632C FFFD FFFD FFFD FFFD - FFFD 7350 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 50F9 - srcEnd = 5112 - mappingOffset = 04AF - Mapping = - 4A24 FFFD 5B78 FFFD FFFD FFFD 5E47 6B70 - 7156 FFFD FFFD 6562 FFFD 4C4C FFFD FFFD - 4B7B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6A63 -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 511F - srcEnd = 51CD - mappingOffset = 04C9 - Mapping = - 5F41 FFFD 566D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6950 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6E39 FFFD FFFD FFFD FFFD - 5563 FFFD FFFD 5153 FFFD 6570 FFFD FFFD - FFFD 6834 6B43 FFFD 6A2A 7A7C 7576 703C - 7D54 603B 4E43 FFFD 503A 773A 5873 774D - FFFD FFFD FFFD 642E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 545F FFFD FFFD - FFFD FFFD FFFD 5067 FFFD FFFD 6C7D FFFD - 522E 6E6F 5557 6A64 7822 4D6B 573F 7B31 - FFFD FFFD 4D6C FFFD FFFD FFFD 5C32 506C - 4E7D 6E70 FFFD FFFD FFFD 4C42 FFFD FFFD - FFFD 506D FFFD FFFD FFFD FFFD FFFD 6577 - FFFD FFFD FFFD 737C FFFD FFFD 6E22 FFFD - FFFD FFFD FFFD 5933 FFFD FFFD 5874 FFFD - 6937 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4E2E FFFD FFFD FFFD FFFD 5922 FFFD - FFFD FFFD FFFD 5871 FFFD 544F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6527 - 5552 FFFD FFFD FFFD FFFD FFFD 5629 FFFD - FFFD FFFD FFFD FFFD FFFD 7422 FFFD 7157 - FFFD FFFD 5558 FFFD 703D 5750 5450 -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 51DC - srcEnd = 51E1 - mappingOffset = 0578 - Mapping = - 574F 6B6A 7D6B FFFD FFFD 5B6D -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 51F0 - srcEnd = 52AB - mappingOffset = 057E - Mapping = - 7C45 4B42 FFFD FFFD FFFD FFFD 7D55 FFFD - 7448 686A 7573 FFFD FFFD 795E FFFD FFFD - 536F FFFD FFFD 6C53 FFFD FFFD 5D42 6F37 - 6754 FFFD 4A4A FFFD FFFD FFFD 597B FFFD - FFFD 7A7D FFFD FFFD FFFD FFFD FFFD 562A - FFFD FFFD FFFD FFFD FFFD 7478 FFFD FFFD - FFFD FFFD FFFD FFFD 7777 5C2C FFFD FFFD - FFFD 5757 5F22 FFFD FFFD FFFD 4E3E FFFD - 5370 FFFD FFFD FFFD FFFD FFFD 7024 616C - 4F67 734B 6D29 4A3E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 746F FFFD FFFD FFFD 764E - FFFD FFFD 5E7B 503B 5537 6E71 FFFD FFFD - FFFD FFFD FFFD FFFD 7428 FFFD 5C78 FFFD - FFFD FFFD FFFD 4B27 FFFD 5A4E FFFD FFFD - FFFD 6066 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6D25 6E72 FFFD FFFD FFFD FFFD 5C79 - FFFD FFFD 795C FFFD FFFD 735C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7872 FFFD 7479 - FFFD FFFD FFFD 7C71 FFFD FFFD FFFD 503C - 5B79 5731 FFFD FFFD FFFD 4B7C FFFD FFFD - FFFD 7025 4B7D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5574 FFFD FFFD FFFD 4D6D - 4A25 FFFD FFFD 562B 5042 FFFD FFFD FFFD - FFFD 703E 523D 4C24 -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 52BE - srcEnd = 52E4 - mappingOffset = 063A - Mapping = - 7A36 FFFD FFFD 4C4D FFFD 5A7A FFFD 764F - FFFD 6938 FFFD 5875 FFFD FFFD FFFD 4C4E - FFFD FFFD FFFD FFFD 574D FFFD FFFD 5451 - 696D FFFD 4A6B 5962 FFFD 7D32 FFFD 632D - 564C 5934 FFFD FFFD 6127 6E53 5043 -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = 52F3 - srcEnd = 5384 - mappingOffset = 0661 - Mapping = - 7D33 FFFD 5564 FFFD FFFD 4F68 FFFD 6D43 - 5032 FFFD FFFD 4E7E 5A28 FFFD FFFD FFFD - FFFD FFFD 7850 FFFD FFFD 7D56 FFFD FFFD - FFFD FFFD 7851 FFFD 7852 5C53 FFFD FFFD - FFFD FFFD 5D62 7B79 5D41 FFFD 6335 FFFD - FFFD FFFD FFFD FFFD FFFD 6D5D 4E44 FFFD - 4B21 FFFD FFFD FFFD FFFD FFFD FFFD 5D63 - FFFD FFFD FFFD FFFD 7C5D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 792F FFFD - FFFD FFFD FFFD FFFD 527B 4F21 6428 FFFD - 7436 6C7E FFFD FFFD 632E 676D 7D41 5A62 - FFFD FFFD 5833 FFFD FFFD FFFD 5D64 706F - 7671 7A70 FFFD FFFD 5175 FFFD FFFD 5A4F - FFFD 5C54 FFFD 5C26 FFFD 6F3F FFFD FFFD - FFFD FFFD FFFD 4E4F FFFD 6059 FFFD FFFD - FFFD FFFD FFFD FFFD 5956 6C54 6A4B FFFD - FFFD 4A3F 5530 FFFD 4F69 FFFD FFFD FFFD - FFFD FFFD 716D FFFD 4C4F FFFD FFFD FFFD - FFFD 6478 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 5393 - srcEnd = 53AD - mappingOffset = 06F3 - Mapping = - 646D FFFD FFFD FFFD FFFD 5758 FFFD 7D27 - FFFD FFFD FFFD FFFD 6A2B 7632 FFFD FFFD - FFFD FFFD 4F70 793D FFFD FFFD FFFD FFFD - FFFD FFFD 6674 -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = 53BB - srcEnd = 5451 - mappingOffset = 070E - Mapping = - 4B5B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7351 FFFD FFFD FFFD FFFD 6951 7329 5060 - 6952 FFFD 5A63 FFFD FFFD FFFD FFFD FFFD - FFFD 6252 FFFD 7622 6174 FFFD FFFD FFFD - 5A64 FFFD FFFD FFFD FFFD FFFD 6755 753F - 4F22 4D2F 4F23 FFFD FFFD FFFD 4D30 717E - 5023 612F 7823 FFFD 4A26 773B 726A 5E48 - 6953 FFFD FFFD FFFD FFFD 5E49 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7D5E 4A40 FFFD FFFD FFFD 796A 514E 6E54 - FFFD 5452 5923 7D28 5759 774E 7A3E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4F56 FFFD 5770 FFFD 6B61 7845 FFFD FFFD - FFFD FFFD FFFD 5C7A FFFD FFFD 5D43 FFFD - 795F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 676F FFFD FFFD FFFD FFFD 7D65 7623 FFFD - 597C 7D29 FFFD 676E FFFD FFFD FFFD 5565 - FFFD FFFD FFFD FFFD FFFD 6F50 FFFD 4D31 - FFFD FFFD FFFD FFFD FFFD FFFD 7722 -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 5468 - srcEnd = 5490 - mappingOffset = 07A5 - Mapping = - 7132 FFFD 7131 FFFD FFFD FFFD FFFD FFFD - FFFD 4D32 FFFD 5A2B FFFD 4A27 FFFD FFFD - FFFD FFFD FFFD 6362 7B3C 5924 FFFD FFFD - 6E3A FFFD FFFD FFFD FFFD FFFD 7853 FFFD - FFFD FFFD FFFD FFFD 7B7A FFFD 4F24 FFFD - 5C7B -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = 54A4 - srcEnd = 54C9 - mappingOffset = 07CE - Mapping = - 7663 FFFD FFFD FFFD 6D2A FFFD FFFD 7221 - 4E61 FFFD FFFD FFFD FFFD FFFD FFFD 7A26 - FFFD FFFD FFFD FFFD 7960 FFFD FFFD FFFD - FFFD 6C56 FFFD FFFD 646E 7921 FFFD FFFD - 7B6F FFFD FFFD FFFD 796B 6E23 -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = 54E1 - srcEnd = 5510 - mappingOffset = 07F4 - Mapping = - 6A2C FFFD FFFD FFFD 4A28 FFFD FFFD 747A - FFFD FFFD FFFD FFFD 4D56 7C76 FFFD FFFD - FFFD 7449 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7854 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7826 FFFD 5E4A 7246 FFFD - FFFD FFFD FFFD FFFD FFFD 575A FFFD 5350 -End of Item 006E - -Begin of Item 006F - Format 2 - srcBegin = 551C - destBegin = 5845 -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 552F - srcEnd = 5563 - mappingOffset = 0824 - Mapping = - 6A66 FFFD 735D FFFD FFFD FFFD 645A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7664 - FFFD FFFD FFFD FFFD FFFD 7672 FFFD 5F42 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 597D FFFD FFFD FFFD 4C76 FFFD FFFD 533A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 642F - FFFD FFFD FFFD FFFD 7961 -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 557C - srcEnd = 558A - mappingOffset = 0859 - Mapping = - 7026 FFFD FFFD FFFD 4B53 FFFD FFFD FFFD - 603C FFFD 744A 547A FFFD 7D2A 7962 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 5598 - srcEnd = 55AE - mappingOffset = 0868 - Mapping = - 7437 7D42 7C30 FFFD 7D6C 4A62 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7D3D - FFFD 6A67 5F43 5152 4E62 FFFD 5324 -End of Item 0072 - -Begin of Item 0073 - Format 1 - srcBegin = 55C5 - srcEnd = 55C7 - mappingOffset = 087F - Mapping = - 7D2B FFFD 5F60 -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = 55D4 - srcEnd = 55E4 - mappingOffset = 0882 - Mapping = - 7247 FFFD FFFD FFFD FFFD FFFD 6770 FFFD - 506E FFFD FFFD 732A FFFD FFFD FFFD 5E4B - 7638 -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 55FD - srcEnd = 5617 - mappingOffset = 0893 - Mapping = - 6175 7133 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7723 FFFD FFFD 4A29 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4F25 - FFFD FFFD 5F44 -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = 562F - srcEnd = 5636 - mappingOffset = 08AE - Mapping = - 6130 FFFD FFFD 703F FFFD 7624 FFFD 6336 -End of Item 0076 - -Begin of Item 0077 - Format 2 - srcBegin = 5653 - destBegin = 7A46 -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 5668 - srcEnd = 5674 - mappingOffset = 08B6 - Mapping = - 506F FFFD FFFD 7D6D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5D44 -End of Item 0078 - -Begin of Item 0079 - Format 2 - srcBegin = 5686 - destBegin = 7C77 -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = 56A5 - srcEnd = 56BC - mappingOffset = 08C3 - Mapping = - 663F FFFD FFFD FFFD FFFD FFFD FFFD 5E2D - FFFD 7A3F FFFD FFFD FFFD FFFD FFFD 6571 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6D44 -End of Item 007A - -Begin of Item 007B - Format 1 - srcBegin = 56CA - srcEnd = 56E0 - mappingOffset = 08DB - Mapping = - 5225 FFFD FFFD 7D6E FFFD FFFD FFFD 7536 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6176 5E4C FFFD FFFD 7C5E FFFD 6C57 -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = 56F0 - srcEnd = 5751 - mappingOffset = 08F2 - Mapping = - 4D5D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5637 4D33 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7855 6558 FFFD FFFD FFFD - 4F6A FFFD FFFD 4F50 FFFD 6A4C FFFD FFFD - FFFD FFFD 6A2E 6A2D FFFD FFFD 5371 FFFD - 5325 FFFD FFFD FFFD FFFD FFFD FFFD 774F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6E24 FFFD FFFD FFFD FFFD 5024 FFFD FFFD - 7222 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5070 FFFD FFFD FFFD FFFD - 7223 FFFD 7778 FFFD FFFD FFFD FFFD 5033 - FFFD FFFD 5B29 FFFD FFFD 533B 4A6C FFFD - 7126 4B55 -End of Item 007C - -Begin of Item 007D - Format 1 - srcBegin = 5761 - srcEnd = 5793 - mappingOffset = 0954 - Mapping = - 7767 FFFD FFFD 4D5E FFFD 7724 FFFD FFFD - FFFD 7840 FFFD FFFD FFFD 535D FFFD 4C50 - FFFD FFFD FFFD FFFD 4F26 FFFD FFFD FFFD - FFFD FFFD FFFD 7673 FFFD FFFD FFFD FFFD - FFFD 6177 FFFD FFFD FFFD FFFD FFFD 535C - FFFD FFFD 7A7E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7A27 -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = 57A0 - srcEnd = 57A3 - mappingOffset = 0987 - Mapping = - 6B59 FFFD 4F27 6A2F -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = 57C3 - srcEnd = 57CE - mappingOffset = 098B - Mapping = - 646F FFFD FFFD FFFD 6939 7158 FFFD FFFD - 5858 FFFD FFFD 6072 -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = 57DF - srcEnd = 57E0 - mappingOffset = 0997 - Mapping = - 6634 5C7C -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = 57F0 - srcEnd = 580A - mappingOffset = 0999 - Mapping = - 7371 FFFD FFFD FFFD 6350 FFFD FFFD 727B - FFFD 5B46 5071 FFFD 5072 FFFD FFFD FFFD - 4F5C FFFD 5351 FFFD FFFD 4C31 7758 FFFD - 4B28 6B3C 643E -End of Item 0081 - -Begin of Item 0082 - Format 1 - srcBegin = 581E - srcEnd = 583A - mappingOffset = 09B4 - Mapping = - 745C FFFD FFFD 5C42 FFFD FFFD 7027 FFFD - FFFD 6640 FFFD FFFD 4A6D FFFD FFFD FFFD - FFFD 686B 6568 5C43 FFFD FFFD 6D5E 5372 - FFFD FFFD FFFD FFFD 4C77 -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = 584A - srcEnd = 5864 - mappingOffset = 09D1 - Mapping = - 4E54 672B FFFD FFFD FFFD 4B43 FFFD 6131 - FFFD FFFD 7732 FFFD FFFD 5373 5352 FFFD - 7540 FFFD FFFD FFFD 5F5D FFFD FFFD 6E73 - 6771 FFFD 7D34 -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = 5875 - srcEnd = 58FD - mappingOffset = 09EC - Mapping = - 7248 FFFD FFFD FFFD 7352 FFFD FFFD 6E74 - FFFD 6253 FFFD FFFD FFFD FFFD 4C51 FFFD - 5F6A FFFD FFFD FFFD 693A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5957 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 754D - FFFD 7172 7A47 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5978 5442 FFFD FFFD FFFD - FFFD 7665 FFFD FFFD FFFD FFFD 5D45 FFFD - FFFD FFFD FFFD FFFD FFFD 6772 6D5F FFFD - FFFD 4A4B FFFD FFFD 5B7A FFFD FFFD FFFD - 6835 FFFD 5326 FFFD FFFD FFFD FFFD FFFD - FFFD 7D35 FFFD FFFD 7949 FFFD 6462 FFFD - 7B3D FFFD FFFD 5724 4E45 FFFD FFFD FFFD - FFFD 4E55 5666 FFFD FFFD FFFD FFFD 653D - FFFD FFFD FFFD FFFD FFFD FFFD 5E4D 6C73 - FFFD FFFD 6D60 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6C6C 7B3E 5F6B FFFD - 6178 -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = 590F - srcEnd = 5999 - mappingOffset = 0A75 - Mapping = - 793E FFFD FFFD FFFD FFFD 5073 602A 6862 - FFFD FFFD 6254 527D FFFD 6528 FFFD FFFD - FFFD FFFD FFFD 5953 FFFD FFFD FFFD FFFD - 535E FFFD 7438 773C 5C7D FFFD 686C 6467 - FFFD FFFD 6377 FFFD FFFD FFFD FFFD FFFD - 6C28 FFFD FFFD FFFD FFFD FFFD FFFD 7A71 - FFFD FFFD FFFD FFFD FFFD 6572 FFFD FFFD - 5074 522F 5C65 FFFD FFFD FFFD FFFD 5025 - 7134 7C31 4C78 FFFD FFFD 5D46 7A51 FFFD - 775F FFFD FFFD 7A28 FFFD FFFD FFFD FFFD - FFFD 6E75 FFFD 5E4E FFFD FFFD FFFD FFFD - 6773 FFFD FFFD 772C 6B44 6D61 602B 5D47 - FFFD FFFD FFFD FFFD 5233 523F FFFD FFFD - FFFD 4A4C FFFD FFFD FFFD FFFD 7B3F FFFD - FFFD FFFD FFFD 657D 5D65 584D FFFD FFFD - FFFD FFFD FFFD 6C74 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5075 FFFD FFFD 686D - 5052 FFFD 5958 -End of Item 0085 - -Begin of Item 0086 - Format 1 - srcBegin = 59A5 - srcEnd = 59AC - mappingOffset = 0B00 - Mapping = - 7666 FFFD FFFD 5B2A FFFD FFFD FFFD 7760 -End of Item 0086 - -Begin of Item 0087 - Format 1 - srcBegin = 59B9 - srcEnd = 5A03 - mappingOffset = 0B08 - Mapping = - 5859 FFFD 7423 FFFD FFFD 745D FFFD FFFD - FFFD FFFD 6F51 FFFD FFFD 5935 FFFD FFFD - 6D2B FFFD 6337 FFFD FFFD FFFD FFFD 6E3B - 4D34 FFFD 6073 6A4D FFFD FFFD FFFD FFFD - 6C75 686E FFFD 4B29 712F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4A4D FFFD 6C29 - FFFD 726B FFFD 7D6F FFFD 7973 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6641 - FFFD FFFD 6C58 FFFD FFFD FFFD 6D2C FFFD - 6A4E FFFD 685F -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = 5A11 - srcEnd = 5A29 - mappingOffset = 0B53 - Mapping = - 5E4F FFFD FFFD FFFD FFFD FFFD FFFD 5226 - FFFD FFFD 6774 5156 FFFD FFFD 6642 6363 - FFFD FFFD FFFD FFFD 6430 FFFD FFFD FFFD - 5834 -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = 5A36 - srcEnd = 5A49 - mappingOffset = 0B6C - Mapping = - 7625 FFFD FFFD FFFD FFFD FFFD 735E FFFD - FFFD FFFD FFFD 5725 FFFD FFFD FFFD FFFD - 7768 FFFD FFFD 6846 -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = 5A5A - srcEnd = 5A66 - mappingOffset = 0B80 - Mapping = - 7B66 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5D66 FFFD FFFD FFFD 5C7E -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = 5A92 - srcEnd = 5AA4 - mappingOffset = 0B8D - Mapping = - 585A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5A2C 6A30 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6338 -End of Item 008B - -Begin of Item 008C - Format 1 - srcBegin = 5AC1 - srcEnd = 5ACC - mappingOffset = 0BA0 - Mapping = - 4A2A 6179 FFFD 6A31 FFFD FFFD FFFD FFFD - 726C FFFD FFFD 7A6E -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = 5AE1 - srcEnd = 5AE9 - mappingOffset = 0BAC - Mapping = - 6E55 FFFD FFFD FFFD FFFD 7974 FFFD FFFD - 526C -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = 5B05 - srcEnd = 5B16 - mappingOffset = 0BB5 - Mapping = - 7B7B FFFD FFFD FFFD 7D70 FFFD 603D 4E63 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7846 -End of Item 008E - -Begin of Item 008F - Format 2 - srcBegin = 5B2A - destBegin = 5E2E -End of Item 008F - -Begin of Item 0090 - Format 1 - srcBegin = 5B40 - srcEnd = 5B43 - mappingOffset = 0BC7 - Mapping = - 5F45 FFFD FFFD 653E -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = 5B50 - srcEnd = 5C79 - mappingOffset = 0BCB - Mapping = - 6D2D 7A6A FFFD FFFD 4D6E 6D26 FFFD 6D2E - 706D FFFD 5D21 FFFD 6D2F 7C78 FFFD 586B - FFFD FFFD FFFD 4C79 4D35 FFFD FFFD FFFD - FFFD 7A29 FFFD 615D FFFD FFFD FFFD FFFD - 6255 6D4F FFFD FFFD FFFD 5D22 FFFD FFFD - 794A FFFD 6A68 FFFD 656D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 536B FFFD 6954 - 617A 644C FFFD 6164 6847 FFFD FFFD 4E5B - FFFD FFFD FFFD 5C55 FFFD 7735 7C73 7073 - 4E2F 7135 6F52 6848 6B71 FFFD FFFD FFFD - FFFD FFFD 4B54 603E 6378 6A69 7C32 FFFD - FFFD FFFD FFFD FFFD 6074 FFFD 4F60 FFFD - 6E25 FFFD FFFD 7A2A 6643 6132 4A2B FFFD - 6364 693B FFFD FFFD FFFD FFFD FFFD 6256 - 7372 FFFD 6E56 6A32 5076 6C59 5A4B 4F28 - FFFD FFFD FFFD FFFD 5D23 FFFD FFFD FFFD - 585B FFFD 794E 6955 6351 FFFD FFFD 523C - FFFD FFFD FFFD FFFD FFFD FFFD 582C 734C - FFFD 4D7B 7656 FFFD 6775 686F 6379 523B - 7373 637B FFFD 5E50 4E30 FFFD 5677 7159 - FFFD FFFD FFFD FFFD FFFD 7541 5C44 FFFD - 753B FFFD 5E51 FFFD FFFD FFFD FFFD FFFD - FFFD 5C66 FFFD FFFD 5E52 FFFD FFFD 6D62 - 6E76 6A4F 706E 637C FFFD 535F 5374 6133 - FFFD 6134 FFFD FFFD FFFD FFFD 7453 FFFD - FFFD 5F46 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6956 FFFD FFFD FFFD - 5B2B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7626 FFFD FFFD FFFD FFFD FFFD FFFD - 6339 6B45 7429 4D36 5279 FFFD 5A2D 5263 - 4F51 FFFD FFFD FFFD FFFD 4B5C 4C7A FFFD - 4F5D FFFD FFFD 6829 FFFD 633B 633A FFFD - FFFD 605A FFFD FFFD FFFD 6E77 FFFD FFFD - FFFD FFFD FFFD 5C33 FFFD FFFD FFFD FFFD - 5375 FFFD 5726 FFFD 7635 575B FFFD FFFD - FFFD FFFD FFFD FFFD 6155 FFFD FFFD 546A - FFFD 5F23 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7D5F -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = 5C90 - srcEnd = 5C91 - mappingOffset = 0CF5 - Mapping = - 5077 6D54 -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = 5CA1 - srcEnd = 5CC0 - mappingOffset = 0CF7 - Mapping = - 4B2A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 645B FFFD 617B 4B22 FFFD FFFD FFFD FFFD - 5360 FFFD 643F FFFD 7B40 FFFD 5A3E 644D - FFFD 5639 FFFD FFFD FFFD 6F40 FFFD 617C -End of Item 0093 - -Begin of Item 0094 - Format 1 - srcBegin = 5CD9 - srcEnd = 5D19 - mappingOffset = 0D17 - Mapping = - 7639 FFFD FFFD FFFD FFFD FFFD FFFD 5F47 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6431 - FFFD FFFD FFFD FFFD FFFD FFFD 5C67 5C68 - FFFD FFFD FFFD 7A56 FFFD 5376 FFFD FFFD - FFFD FFFD 715A FFFD 7A72 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 627D FFFD - FFFD FFFD FFFD FFFD 554F 5078 FFFD FFFD - 4D5F FFFD FFFD 754B FFFD 6470 4B2B FFFD - 5744 -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = 5D27 - srcEnd = 5D29 - mappingOffset = 0D58 - Mapping = - 627E FFFD 5D5A -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = 5D4B - srcEnd = 5D50 - mappingOffset = 0D5B - Mapping = - 5A2E 4A6E FFFD FFFD FFFD 5539 -End of Item 0096 - -Begin of Item 0097 - Format 1 - srcBegin = 5D69 - srcEnd = 5D6F - mappingOffset = 0D61 - Mapping = - 6321 FFFD FFFD 6863 FFFD FFFD 732B -End of Item 0097 - -Begin of Item 0098 - Format 1 - srcBegin = 5D87 - srcEnd = 5D8B - mappingOffset = 0D68 - Mapping = - 4F29 FFFD FFFD FFFD 5377 -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = 5D9D - srcEnd = 5DAA - mappingOffset = 0D6D - Mapping = - 5471 FFFD FFFD 4E64 FFFD 6872 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6575 -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = 5DB8 - srcEnd = 5DBD - mappingOffset = 0D7B - Mapping = - 672E FFFD 563A FFFD 5F6C 6440 -End of Item 009A - -Begin of Item 009B - Format 1 - srcBegin = 5DCD - srcEnd = 5E63 - mappingOffset = 0D81 - Mapping = - 6864 FFFD FFFD FFFD FFFD 5835 FFFD FFFD - FFFD 645C FFFD FFFD FFFD FFFD FFFD FFFD - 7439 7136 FFFD FFFD 625E 6135 FFFD FFFD - 4D6F 7127 4E65 4B5D FFFD FFFD 5963 FFFD - FFFD 732C FFFD FFFD 5079 6C2B 5E53 7769 - FFFD FFFD 7975 FFFD FFFD FFFD FFFD FFFD - 615E 4B6E FFFD FFFD FFFD 633C 7856 FFFD - FFFD 5B6E FFFD FFFD FFFD FFFD FFFD 7D71 - FFFD FFFD FFFD FFFD 7736 FFFD FFFD FFFD - FFFD 745E FFFD FFFD 726D FFFD 5B59 FFFD - 7028 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 617D FFFD FFFD FFFD FFFD FFFD 5E54 FFFD - 602C FFFD FFFD FFFD FFFD FFFD 6D63 FFFD - FFFD 5361 FFFD 5F48 FFFD FFFD FFFD FFFD - 5936 FFFD 7D2C 6F53 FFFD FFFD FFFD 6441 - 786B FFFD 5B2C FFFD FFFD FFFD FFFD 7C46 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 582D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 763A FFFD 5B5F 5353 7847 -End of Item 009B - -Begin of Item 009C - Format 1 - srcBegin = 5E72 - srcEnd = 5F3C - mappingOffset = 0E18 - Mapping = - 4A4E 7841 5234 FFFD FFFD 5C34 7A39 4A4F - FFFD 7C33 6A6A 6A6B 507A FFFD FFFD FFFD - FFFD FFFD 6D64 FFFD FFFD 5D67 FFFD FFFD - 5F49 FFFD FFFD FFFD FFFD 5F6D FFFD FFFD - FFFD FFFD FFFD 6E3C FFFD 6F41 FFFD FFFD - 4C52 FFFD 5D24 FFFD FFFD FFFD 5F4A FFFD - FFFD FFFD FFFD FFFD 5378 7128 FFFD FFFD - FFFD 4D37 FFFD 6F54 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 645D 5F6E 4B2C 693C FFFD - FFFD FFFD FFFD FFFD 6A6C FFFD FFFD FFFD - 5F4B FFFD FFFD FFFD FFFD FFFD 793F 562F - 5546 FFFD FFFD FFFD FFFD FFFD 4F2A FFFD - FFFD 4E29 FFFD FFFD 5678 FFFD FFFD FFFD - 7137 6E78 FFFD FFFD FFFD 5959 735F FFFD - 7848 4E46 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5566 FFFD FFFD FFFD FFFD FFFD - FFFD 7466 FFFD FFFD 6645 6F55 FFFD FFFD - 4B6F 7C5F FFFD FFFD FFFD FFFD FFFD 5C27 - FFFD FFFD 5667 FFFD FFFD FFFD FFFD FFFD - 7849 FFFD FFFD FFFD FFFD 6352 FFFD 633D - FFFD 4F61 7040 6C5A FFFD 5D57 7B70 FFFD - FFFD 6C2C FFFD FFFD FFFD 7029 FFFD FFFD - FFFD FFFD FFFD FFFD 7A57 7B41 FFFD 5240 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6530 - FFFD FFFD FFFD 6D65 FFFD FFFD FFFD FFFD - 4B2D FFFD 7930 -End of Item 009C - -Begin of Item 009D - Format 1 - srcBegin = 5F48 - srcEnd = 5FFF - mappingOffset = 0EE3 - Mapping = - 7725 FFFD 4B2E FFFD 5A2F FFFD 5836 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5327 7B32 - FFFD 7D44 FFFD 6C2D FFFD FFFD FFFD FFFD - FFFD FFFD 7B21 FFFD FFFD FFFD 6569 696E - FFFD 7374 7873 7041 5E2F 7830 FFFD FFFD - 7360 672F FFFD FFFD FFFD FFFD FFFD 5B2D - FFFD 6635 FFFD FFFD 7928 FFFD FFFD 5D58 - 6859 6F56 FFFD FFFD FFFD 5362 FFFD 625F - FFFD FFFD 7C60 5748 7D2D FFFD FFFD FFFD - 5F6F 4C53 5379 FFFD FFFD FFFD FFFD 5470 - 5B47 5E55 FFFD FFFD FFFD FFFD 7074 FFFD - 5550 6559 FFFD FFFD FFFD FFFD FFFD FFFD - 7C47 5C56 6260 FFFD FFFD FFFD 5A30 FFFD - FFFD FFFD FFFD FFFD FFFD 7323 FFFD 536C - FFFD 744B FFFD FFFD FFFD 7D45 FFFD FFFD - FFFD FFFD FFFD 637D FFFD 7931 FFFD FFFD - FFFD FFFD FFFD FFFD 507B 6C5B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 753C 7224 - 584E 584F FFFD FFFD FFFD FFFD FFFD FFFD - 7577 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7661 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5237 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7B6C FFFD 5D48 -End of Item 009D - -Begin of Item 009E - Format 1 - srcBegin = 600F - srcEnd = 602F - mappingOffset = 0F9B - Mapping = - 6468 FFFD FFFD 5241 FFFD FFFD FFFD 7857 - FFFD FFFD FFFD FFFD FFFD 563B 5E56 FFFD - FFFD 773D 6C2E FFFD FFFD FFFD 5061 FFFD - 6075 6A33 FFFD 4E56 FFFD FFFD FFFD FFFD - 4C25 -End of Item 009E - -Begin of Item 009F - Format 1 - srcBegin = 6041 - srcEnd = 6070 - mappingOffset = 0FBC - Mapping = - 6C76 6261 633E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7C48 FFFD FFFD 4D70 - FFFD 7976 FFFD FFFD 5F70 FFFD FFFD FFFD - 653F FFFD FFFD FFFD 4E3F FFFD FFFD FFFD - FFFD 7C61 6D30 7D51 763B FFFD FFFD 794F - 6B5A 4A41 FFFD 5238 4D71 FFFD 6353 7D66 -End of Item 009F - -Begin of Item 00A0 - Format 1 - srcBegin = 6085 - srcEnd = 60E1 - mappingOffset = 0FEC - Mapping = - 666D FFFD FFFD FFFD 637A FFFD FFFD 702A - 7950 FFFD FFFD FFFD FFFD FFFD FFFD 7C62 - FFFD 7827 FFFD FFFD FFFD 6165 6E79 FFFD - FFFD FFFD 6776 6A6D FFFD FFFD 7C34 7542 - FFFD FFFD 575C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7075 FFFD 5D68 536D 757C - FFFD 5A3F FFFD 4C7B FFFD FFFD FFFD 537A - 7424 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6F57 FFFD 5443 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7B63 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7B6D FFFD 602D - FFFD FFFD 6A6E 7B33 6442 -End of Item 00A0 - -Begin of Item 00A1 - Format 1 - srcBegin = 60F0 - srcEnd = 61CB - mappingOffset = 1049 - Mapping = - 7667 525D FFFD 5F4C FFFD FFFD 7C49 FFFD - FFFD 6529 6076 7633 FFFD FFFD FFFD FFFD - FFFD 617E FFFD FFFD FFFD FFFD 4B70 FFFD - 6A6F 6A70 FFFD FFFD FFFD 5A40 7834 6B72 - FFFD FFFD FFFD FFFD FFFD 6443 FFFD FFFD - FFFD FFFD 6957 6471 FFFD FFFD FFFD 4A6F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4E57 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7C4A FFFD FFFD FFFD 7361 FFFD FFFD 4B44 - FFFD FFFD FFFD FFFD 6365 FFFD 4B45 6A34 - FFFD FFFD 693D FFFD 5749 FFFD FFFD 6B5B - 6D31 FFFD 4C43 773E 7C4B FFFD FFFD FFFD - FFFD FFFD FFFD 7874 FFFD 5937 FFFD FFFD - 7353 7354 FFFD FFFD FFFD 7764 FFFD 7751 - FFFD FFFD 5837 4E31 4A42 FFFD FFFD 7B34 - 4B46 FFFD FFFD 7076 FFFD FFFD 5567 FFFD - 6A50 FFFD FFFD FFFD FFFD FFFD 4C54 4B2F - FFFD FFFD FFFD FFFD FFFD 742A 692F FFFD - FFFD 7543 6958 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5D69 FFFD FFFD FFFD 7173 FFFD - 557B 5E3B FFFD FFFD 747B FFFD FFFD FFFD - 7D73 7D72 7726 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5D49 FFFD FFFD 5453 - FFFD 4C28 FFFD 5A41 4C55 FFFD 5964 FFFD - FFFD FFFD 7A4A FFFD FFFD FFFD 6563 FFFD - FFFD FFFD 533C FFFD FFFD FFFD 4A70 FFFD - FFFD FFFD FFFD 5044 FFFD FFFD FFFD 4A50 - 7A2B 6B6B 6778 5965 -End of Item 00A1 - -Begin of Item 00A2 - Format 2 - srcBegin = 61E6 - destBegin = 5157 -End of Item 00A2 - -Begin of Item 00A3 - Format 1 - srcBegin = 61F2 - srcEnd = 6258 - mappingOffset = 1125 - Mapping = - 7324 FFFD FFFD FFFD 547B 7C63 7A58 FFFD - 7355 FFFD 4F2B FFFD FFFD 6B73 557C FFFD - FFFD FFFD FFFD FFFD FFFD 5354 4D7C FFFD - 5966 FFFD 6279 6221 6B54 FFFD 6077 6432 - 4C7C FFFD FFFD FFFD 7B64 FFFD FFFD FFFD - 742B FFFD FFFD FFFD FFFD 503D FFFD 4A71 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6F38 FFFD FFFD FFFD 5740 FFFD 6E7A 7D74 - FFFD FFFD 5363 FFFD 7B42 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5568 5B2E 6136 7837 - FFFD FFFD FFFD FFFD FFFD 603F 7B43 5D6A - FFFD 6222 FFFD 6E26 FFFD FFFD FFFD FFFD - FFFD 7668 FFFD FFFD FFFD FFFD 7675 -End of Item 00A3 - -Begin of Item 00A4 - Format 1 - srcBegin = 626E - srcEnd = 629B - mappingOffset = 118C - Mapping = - 5D4A FFFD FFFD 5062 FFFD FFFD FFFD FFFD - 5D26 FFFD FFFD 5D6B FFFD FFFD 6479 FFFD - FFFD 632F 507C FFFD FFFD FFFD 747C FFFD - FFFD FFFD FFFD 4C3C 776A FFFD FFFD FFFD - FFFD FFFD FFFD 6564 5F71 FFFD FFFD 7761 - FFFD 7977 6F39 FFFD FFFD 7858 -End of Item 00A4 - -Begin of Item 00A5 - Format 1 - srcBegin = 62AB - srcEnd = 62DC - mappingOffset = 11BA - Mapping = - 7929 FFFD FFFD FFFD FFFD FFFD 7859 FFFD - FFFD FFFD 6E3D FFFD FFFD FFFD 5846 FFFD - FFFD 6463 754E FFFD FFFD FFFD FFFD 5D59 - FFFD FFFD FFFD FFFD 5967 5239 5543 FFFD - FFFD 5A65 5A50 FFFD 5159 4E58 FFFD 4B5E - 742C 5A7B FFFD 7669 6873 4F2C 7070 FFFD - 747D 5B48 -End of Item 00A5 - -Begin of Item 00A6 - Format 1 - srcBegin = 62EC - srcEnd = 6311 - mappingOffset = 11EC - Mapping = - 4E40 6354 514F 7175 FFFD 4D72 FFFD 4F6B - FFFD FFFD FFFD 4D38 FFFD FFFD FFFD FFFD - FFFD FFFD 6326 515A FFFD 7225 FFFD FFFD - FFFD FFFD FFFD 7226 FFFD 644E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 537B -End of Item 00A6 - -Begin of Item 00A7 - Format 1 - srcBegin = 632B - srcEnd = 6355 - mappingOffset = 1212 - Mapping = - 7129 FFFD FFFD FFFD 7249 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6F58 - 6649 FFFD 5838 7A73 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7335 FFFD - FFFD 7824 FFFD FFFD 5173 6648 FFFD FFFD - FFFD FFFD 785A -End of Item 00A7 - -Begin of Item 00A8 - Format 1 - srcBegin = 6367 - srcEnd = 63AA - mappingOffset = 123D - Mapping = - 5C69 5E57 FFFD FFFD FFFD FFFD FFFD 4B5F - FFFD FFFD FFFD 4F6C FFFD FFFD FFFD FFFD - 745F FFFD FFFD 5174 523A FFFD FFFD FFFD - 5F72 FFFD FFFD FFFD 6137 FFFD FFFD FFFD - FFFD 6223 537C FFFD FFFD 6D66 FFFD FFFD - FFFD FFFD FFFD 5B49 FFFD FFFD FFFD 647A - FFFD 4F5E FFFD FFFD 4E50 FFFD FFFD FFFD - FFFD 5553 7375 772E FFFD FFFD 6F48 FFFD - 4D73 754F 6573 7042 -End of Item 00A8 - -Begin of Item 00A9 - Format 1 - srcBegin = 63C0 - srcEnd = 63E1 - mappingOffset = 1281 - Mapping = - 4A51 FFFD FFFD FFFD 6A71 FFFD 5026 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 595A - 702B FFFD FFFD FFFD FFFD FFFD 6B67 FFFD - FFFD FFFD 6540 7C35 FFFD FFFD FFFD FFFD - FFFD 6444 -End of Item 00A9 - -Begin of Item 00AA - Format 1 - srcBegin = 63ED - srcEnd = 63F7 - mappingOffset = 12A3 - Mapping = - 4C29 7D46 FFFD FFFD FFFD FFFD FFFD 6A35 - FFFD 652A 5F3A -End of Item 00AA - -Begin of Item 00AB - Format 1 - srcBegin = 640D - srcEnd = 642D - mappingOffset = 12AE - Mapping = - 615F FFFD 5A51 FFFD FFFD FFFD FFFD 6138 - FFFD 6874 537D FFFD FFFD FFFD FFFD 6224 - FFFD FFFD FFFD FFFD FFFD 724A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5A66 - 7733 -End of Item 00AB - -Begin of Item 00AC - Format 1 - srcBegin = 643A - srcEnd = 643E - mappingOffset = 12CF - Mapping = - 7D4D FFFD FFFD FFFD 7336 -End of Item 00AC - -Begin of Item 00AD - Format 1 - srcBegin = 6458 - srcEnd = 647A - mappingOffset = 12D4 - Mapping = - 6E57 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7544 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5824 FFFD FFFD FFFD FFFD FFFD 7227 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5938 5939 6F49 -End of Item 00AD - -Begin of Item 00AE - Format 1 - srcBegin = 6488 - srcEnd = 6504 - mappingOffset = 12F7 - Mapping = - 564E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 774B 5F2E 6875 FFFD FFFD FFFD FFFD - FFFD FFFD 5235 FFFD FFFD FFFD 5355 FFFD - FFFD FFFD FFFD FFFD 744C 5A7C FFFD FFFD - FFFD FFFD FFFD 5968 FFFD 776B 7549 FFFD - 733C FFFD 5A52 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5335 FFFD FFFD FFFD FFFD - FFFD 6836 FFFD FFFD 564F 743A FFFD 7749 - FFFD FFFD 4C2A FFFD FFFD 7043 4C56 FFFD - FFFD FFFD 5053 FFFD 533D FFFD FFFD FFFD - 5B7B FFFD 4B60 FFFD FFFD FFFD FFFD FFFD - FFFD 5364 7677 FFFD FFFD 553A 734D 4B61 - FFFD FFFD FFFD FFFD 6B74 FFFD FFFD FFFD - FFFD FFFD 742D FFFD 7C2A FFFD FFFD FFFD - FFFD FFFD 776C FFFD FFFD FFFD 6876 FFFD - 5A67 FFFD FFFD FFFD 774C -End of Item 00AE - -Begin of Item 00AF - Format 1 - srcBegin = 6518 - srcEnd = 66C9 - mappingOffset = 1374 - Mapping = - 6541 FFFD FFFD FFFD FFFD 606E FFFD FFFD - FFFD FFFD FFFD 557D FFFD FFFD FFFD FFFD - FFFD FFFD 4E66 7C2B 553B FFFD FFFD 7228 - FFFD FFFD FFFD FFFD FFFD FFFD 6225 4D39 - 6A72 4B47 FFFD 4D74 FFFD FFFD 5B2F 6F59 - FFFD FFFD FFFD FFFD FFFD 4D3A FFFD FFFD - 7C79 FFFD FFFD FFFD FFFD 5F73 4E67 5A42 - FFFD 4F2D FFFD FFFD FFFD FFFD 6779 7828 - FFFD FFFD FFFD FFFD FFFD FFFD 7362 FFFD - FFFD FFFD 4A72 5F24 FFFD FFFD 5444 FFFD - FFFD FFFD FFFD FFFD 4C57 6542 FFFD FFFD - FFFD FFFD 4D3B FFFD 6F5A 6E58 FFFD 5D27 - 6226 FFFD FFFD FFFD FFFD FFFD 6040 FFFD - FFFD FFFD 5630 784A FFFD 7C7A FFFD 597E - FFFD FFFD FFFD FFFD 5E30 FFFD FFFD FFFD - 5D6C 5A68 FFFD FFFD FFFD FFFD FFFD 5460 - FFFD 5679 FFFD 4D57 5E58 FFFD FFFD 7278 - FFFD 6456 FFFD FFFD 5045 742E FFFD 5D28 - FFFD FFFD FFFD 6D45 7356 FFFD FFFD 5E59 - 6366 FFFD FFFD FFFD FFFD FFFD FFFD 5328 - FFFD 5B30 FFFD FFFD 655A 633F FFFD FFFD - FFFD 5B31 FFFD FFFD FFFD 5569 FFFD FFFD - FFFD FFFD FFFD 6041 6F5B FFFD FFFD 7069 - FFFD FFFD 5732 FFFD FFFD FFFD FFFD 507D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5969 FFFD FFFD 507E FFFD 6C6D 5329 FFFD - 7229 7044 FFFD FFFD 6262 696F FFFD FFFD - FFFD 7951 FFFD FFFD 6959 FFFD FFFD FFFD - FFFD FFFD 685A 5A43 5A44 5445 FFFD 677A - FFFD FFFD FFFD FFFD FFFD FFFD 4D60 6330 - FFFD 5B32 7B44 FFFD 7363 FFFD 5925 7B67 - 5D4B 5054 FFFD 6636 602E 7D5A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5C35 6078 - 6731 FFFD FFFD FFFD FFFD 7570 FFFD 585C - 6D46 FFFD FFFD FFFD FFFD 6139 FFFD 6340 - 7940 6970 FFFD FFFD 595B FFFD 7364 FFFD - FFFD FFFD 5C36 6469 FFFD FFFD FFFD FFFD - FFFD 7045 6341 7C4C 7C4D FFFD FFFD FFFD - FFFD 724B FFFD 724C FFFD FFFD FFFD 644F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 715B FFFD 7A59 FFFD 7138 7D75 6079 - FFFD FFFD FFFD FFFD 677B 7C37 7C64 7B45 - 6367 5839 FFFD 7678 FFFD FFFD 5C45 4C58 - FFFD FFFD FFFD 602F 7467 FFFD 6F5C 4F7C - 6F5D FFFD 722A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7D3E FFFD FFFD 4A2C - 7D3B 7D47 FFFD FFFD FFFD FFFD 6732 FFFD - 6A51 5F74 FFFD FFFD FFFD FFFD 516C 645E - 6543 FFFD FFFD FFFD FFFD 5926 FFFD FFFD - 4D3C FFFD 7365 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6D55 FFFD FFFD 593A FFFD - FFFD FFFD 6D67 7B35 786C FFFD FFFD FFFD - FFFD 6067 FFFD 4C59 FFFD FFFD 5446 FFFD - FFFD FFFD FFFD FFFD 6725 FFFD 5575 533E - FFFD 7C7B -End of Item 00AF - -Begin of Item 00B0 - Format 1 - srcBegin = 66D6 - srcEnd = 675F - mappingOffset = 1526 - Mapping = - 6472 FFFD FFFD 5F75 FFFD FFFD 6878 786D - FFFD FFFD 4E47 FFFD FFFD FFFD FFFD FFFD - 7D76 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6858 FFFD 4D58 6756 4C5A FFFD - FFFD 4A63 5F76 7047 7046 FFFD 583A FFFD - 7174 7470 754C FFFD FFFD 7C65 FFFD FFFD - FFFD FFFD 6A45 6A73 FFFD 5D5B FFFD 5C57 - FFFD FFFD FFFD FFFD FFFD FFFD 5E7D 7279 - FFFD 5547 FFFD FFFD FFFD 5850 FFFD 7048 - 5121 5122 FFFD FFFD FFFD FFFD FFFD FFFD - 5954 5668 594A FFFD 5A31 5847 5C62 734E - 7574 FFFD FFFD 7139 FFFD FFFD 5A53 FFFD - 766A FFFD FFFD FFFD 4F75 FFFD FFFD 7D2E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4A52 FFFD FFFD 5F34 FFFD FFFD FFFD FFFD - 575D 7A3A 6E27 753D FFFD 7875 FFFD FFFD - 6D68 FFFD FFFD FFFD FFFD FFFD 5461 FFFD - 5123 6156 -End of Item 00B0 - -Begin of Item 00B1 - Format 1 - srcBegin = 676D - srcEnd = 679D - mappingOffset = 15B0 - Mapping = - 7978 FFFD 5B4A 4B79 5454 FFFD 595C FFFD - 6E3E FFFD 776D FFFD FFFD FFFD 526E FFFD - FFFD 6166 7779 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5D6D FFFD 685B FFFD 5B33 FFFD - FFFD FFFD 5177 6030 FFFD FFFD 5462 FFFD - 7657 FFFD 5779 FFFD FFFD 585D FFFD 4D7D - 722B -End of Item 00B1 - -Begin of Item 00B2 - Format 1 - srcBegin = 67AF - srcEnd = 67DD - mappingOffset = 15E1 - Mapping = - 4D3D 7842 FFFD FFFD 722C FFFD FFFD 4A2D - 4A2E 4F2E FFFD FFFD FFFD FFFD FFFD 6342 - FFFD FFFD FFFD FFFD FFFD 5C37 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5B5A 593B 4A73 7653 6678 6A75 FFFD FFFD - FFFD FFFD FFFD 6A76 FFFD FFFD 7679 -End of Item 00B2 - -Begin of Item 00B3 - Format 1 - srcBegin = 67E9 - srcEnd = 67FE - mappingOffset = 1610 - Mapping = - 4F2F FFFD FFFD 4A53 FFFD FFFD 4A2F 5230 - 713A FFFD 5733 6343 737D 5E5A FFFD FFFD - FFFD FFFD 5E5B FFFD FFFD 6F5E -End of Item 00B3 - -Begin of Item 00B4 - Format 1 - srcBegin = 6812 - srcEnd = 6854 - mappingOffset = 1626 - Mapping = - 6263 6E7B FFFD FFFD 5F77 574A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 4E68 - 5B5B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 713B FFFD FFFD FFFD FFFD 6971 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7A37 5046 - FFFD FFFD 4C2B 6E28 FFFD FFFD 4B7A 7979 - 4C7D 537E FFFD FFFD FFFD FFFD 6450 FFFD - FFFD FFFD FFFD FFFD 726E FFFD 5455 5F4D - FFFD 7C38 5150 -End of Item 00B4 - -Begin of Item 00B5 - Format 1 - srcBegin = 686D - srcEnd = 68B6 - mappingOffset = 1669 - Mapping = - 724D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7752 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4A54 FFFD 5559 FFFD FFFD FFFD - 585E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4D59 FFFD FFFD FFFD 6E29 763C - FFFD FFFD 4C5B FFFD FFFD FFFD FFFD FFFD - 7049 FFFD 7C7C FFFD 6849 747E FFFD FFFD - FFFD FFFD 677C 575E FFFD FFFD FFFD FFFD - 5E5C FFFD 702C 4C7E 4D61 FFFD 613A FFFD - 5B6F 5A32 -End of Item 00B5 - -Begin of Item 00B6 - Format 1 - srcBegin = 68C4 - srcEnd = 6912 - mappingOffset = 16B3 - Mapping = - 5125 5C38 FFFD FFFD FFFD 5876 FFFD 5124 - FFFD 4D62 FFFD FFFD FFFD FFFD 5C6A FFFD - FFFD 7077 FFFD 704A 503E FFFD 5D5C FFFD - FFFD FFFD FFFD 5456 5356 FFFD FFFD FFFD - FFFD FFFD FFFD 6D50 4D21 FFFD FFFD FFFD - FFFD FFFD 5F35 FFFD FFFD FFFD 5F78 FFFD - FFFD FFFD FFFD FFFD FFFD 5421 4E32 FFFD - FFFD FFFD FFFD FFFD 684A FFFD FFFD FFFD - FFFD 6B75 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6355 7550 FFFD FFFD FFFD 7521 -End of Item 00B6 - -Begin of Item 00B7 - Format 1 - srcBegin = 6927 - srcEnd = 6930 - mappingOffset = 1702 - Mapping = - 5927 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 652B -End of Item 00B7 - -Begin of Item 00B8 - Format 1 - srcBegin = 693D - srcEnd = 6979 - mappingOffset = 170C - Mapping = - 664B FFFD 7571 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6545 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7923 605B - 766B FFFD 4B71 FFFD 596A 7522 FFFD FFFD - FFFD 5751 FFFD 5178 6A78 6A79 5A33 FFFD - FFFD FFFD FFFD 6F5F FFFD FFFD 716F FFFD - 6576 6E3F 6264 FFFD FFFD FFFD FFFD FFFD - 503F FFFD 7A2C 7551 6733 -End of Item 00B8 - -Begin of Item 00B9 - Format 1 - srcBegin = 6995 - srcEnd = 69D0 - mappingOffset = 1749 - Mapping = - 693E FFFD FFFD FFFD FFFD FFFD 724E 5B34 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7C4E FFFD 5D6E FFFD FFFD FFFD FFFD FFFD - FFFD 6734 FFFD FFFD FFFD FFFD FFFD 5734 - FFFD FFFD FFFD FFFD FFFD FFFD 7734 FFFD - FFFD FFFD FFFD FFFD 4D3E FFFD 5A69 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4F30 7759 - 7366 FFFD FFFD 4E59 -End of Item 00B9 - -Begin of Item 00BA - Format 1 - srcBegin = 69E8 - srcEnd = 69EA - mappingOffset = 1785 - Mapping = - 4E2A FFFD 4B48 -End of Item 00BA - -Begin of Item 00BB - Format 1 - srcBegin = 69FB - srcEnd = 6A23 - mappingOffset = 1788 - Mapping = - 5027 FFFD 704B FFFD 5047 FFFD FFFD 6445 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5B60 - FFFD FFFD FFFD FFFD FFFD FFFD 555A FFFD - 5727 FFFD FFFD FFFD 6E40 FFFD 7876 FFFD - FFFD FFFD FFFD 7552 6D69 FFFD 593C FFFD - 6546 -End of Item 00BB - -Begin of Item 00BC - Format 1 - srcBegin = 6A35 - srcEnd = 6A6B - mappingOffset = 17B1 - Mapping = - 7523 FFFD FFFD 5A54 6227 7B7C FFFD FFFD - 715C FFFD FFFD FFFD FFFD FFFD FFFD 4A74 - FFFD FFFD FFFD 687A FFFD FFFD 4E69 FFFD - FFFD FFFD FFFD FFFD FFFD 6978 6265 FFFD - FFFD FFFD FFFD 5039 5472 FFFD FFFD FFFD - FFFD FFFD 5126 FFFD 5F4E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7C74 -End of Item 00BC - -Begin of Item 00BD - Format 1 - srcBegin = 6A80 - srcEnd = 6AA3 - mappingOffset = 17E8 - Mapping = - 532A FFFD FFFD FFFD 4C2C FFFD FFFD FFFD - FFFD 6F60 FFFD FFFD FFFD 6565 5055 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5B7C - FFFD FFFD FFFD FFFD 7C66 FFFD FFFD FFFD - FFFD FFFD 4B7E 6D6A -End of Item 00BD - -Begin of Item 00BE - Format 1 - srcBegin = 6AB3 - srcEnd = 6AC3 - mappingOffset = 180C - Mapping = - 5E31 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7963 FFFD FFFD FFFD FFFD FFFD FFFD 5422 - 4F76 -End of Item 00BE - -Begin of Item 00BF - Format 1 - srcBegin = 6AD3 - srcEnd = 6ADB - mappingOffset = 181D - Mapping = - 5650 FFFD FFFD FFFD FFFD FFFD FFFD 556A - 716E -End of Item 00BF - -Begin of Item 00C0 - Format 1 - srcBegin = 6AF6 - srcEnd = 6B23 - mappingOffset = 1826 - Mapping = - 7A4B FFFD FFFD FFFD FFFD 6521 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5531 FFFD - FFFD FFFD FFFD FFFD 4F6D FFFD 6D6B FFFD - FFFD FFFD FFFD FFFD 5532 FFFD FFFD FFFD - 553C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7D62 732D FFFD 7D5B -End of Item 00C0 - -Begin of Item 00C1 - Format 1 - srcBegin = 6B32 - srcEnd = 6B50 - mappingOffset = 1854 - Mapping = - 6930 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5127 FFFD FFFD 7D63 4E33 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7D64 7A4E FFFD FFFD - FFFD FFFD 4A30 FFFD 7727 FFFD 4F31 -End of Item 00C1 - -Begin of Item 00C2 - Format 1 - srcBegin = 6B5F - srcEnd = 6B8A - mappingOffset = 1873 - Mapping = - 6622 FFFD 7C36 722D 6F61 732E 5C46 596B - FFFD FFFD FFFD 6860 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6128 FFFD FFFD FFFD FFFD - 5576 4F7D FFFD FFFD 5E5D FFFD FFFD FFFD - 5951 FFFD FFFD FFFD 646A 724F FFFD 773F - FFFD FFFD 6266 6228 -End of Item 00C2 - -Begin of Item 00C3 - Format 1 - srcBegin = 6B96 - srcEnd = 6B9E - mappingOffset = 189F - Mapping = - 6356 FFFD 6D51 FFFD FFFD FFFD FFFD FFFD - 6979 -End of Item 00C3 - -Begin of Item 00C4 - Format 1 - srcBegin = 6BAE - srcEnd = 6BDB - mappingOffset = 18A8 - Mapping = - 5631 5E32 FFFD FFFD 6068 FFFD FFFD 532B - FFFD 6B5C FFFD FFFD 5F2F FFFD 4A43 FFFD - FFFD 6E7C FFFD 7D43 FFFD FFFD FFFD 6B76 - 4F32 FFFD FFFD FFFD FFFD 596C FFFD 593D - FFFD 585F FFFD FFFD 5438 6B3E 5D6F FFFD - 5D70 5D71 5D72 FFFD FFFD 593E -End of Item 00C4 - -Begin of Item 00C5 - Format 1 - srcBegin = 6BEB - srcEnd = 6BEC - mappingOffset = 18D6 - Mapping = - 7B46 4F33 -End of Item 00C5 - -Begin of Item 00C6 - Format 1 - srcBegin = 6C08 - srcEnd = 6C13 - mappingOffset = 18D8 - Mapping = - 6E7D FFFD FFFD FFFD FFFD FFFD FFFD 642B - FFFD 5A45 FFFD 586C -End of Item 00C6 - -Begin of Item 00C7 - Format 2 - srcBegin = 6C23 - destBegin = 5128 -End of Item 00C7 - -Begin of Item 00C8 - Format 1 - srcBegin = 6C34 - srcEnd = 6C42 - mappingOffset = 18E4 - Mapping = - 6229 FFFD FFFD 5E3C 6735 FFFD FFFD FFFD - FFFD FFFD 5B70 FFFD 6F62 7170 4F34 -End of Item 00C8 - -Begin of Item 00C9 - Format 1 - srcBegin = 6C4E - srcEnd = 6C9B - mappingOffset = 18F3 - Mapping = - 5B71 FFFD 6031 FFFD FFFD FFFD FFFD 5F25 - FFFD 7952 FFFD FFFD 677D FFFD FFFD 6623 - 7B71 4B30 722E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4D67 FFFD 685C FFFD FFFD 6757 - FFFD FFFD 7740 FFFD 5063 FFFD FFFD FFFD - 5A21 FFFD FFFD FFFD 4C3D FFFD FFFD 5129 - 5D4C FFFD FFFD 637E 512A 682A FFFD 6A36 - 797A 664C 7658 FFFD FFFD FFFD 5447 FFFD - FFFD FFFD 594B FFFD 5952 534B 5877 5A29 - 7578 FFFD FFFD 5E5E 722F 7829 -End of Item 00C9 - -Begin of Item 00CA - Format 1 - srcBegin = 6CAB - srcEnd = 6CF3 - mappingOffset = 1941 - Mapping = - 5848 FFFD FFFD 6E41 FFFD FFFD FFFD FFFD - 7941 FFFD FFFD FFFD FFFD 5D73 6A7A FFFD - 763D 613B 4D3F 7454 664D FFFD 7C4F 7B22 - FFFD 605C FFFD FFFD FFFD FFFD 743B 5A55 - FFFD 7932 FFFD FFFD FFFD FFFD FFFD FFFD - 7B72 FFFD 5B76 FFFD 5E5F FFFD FFFD FFFD - 5B72 FFFD FFFD FFFD FFFD FFFD 785C 776E - 6B68 FFFD 527A FFFD FFFD 713C FFFD FFFD - 7A5A FFFD FFFD 5A6A 5A46 7741 FFFD FFFD - 6736 -End of Item 00CA - -Begin of Item 00CB - Format 1 - srcBegin = 6D0B - srcEnd = 6D41 - mappingOffset = 198A - Mapping = - 6547 562C FFFD FFFD FFFD FFFD 5C47 FFFD - FFFD FFFD FFFD FFFD 6129 FFFD 622A FFFD - 5526 FFFD FFFD 5457 FFFD FFFD FFFD FFFD - FFFD FFFD 7250 FFFD 6A7B FFFD 605D 7B73 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 713D - FFFD FFFD 6267 7D57 FFFD 4E48 6A37 FFFD - 7C40 FFFD 7D67 776F FFFD FFFD 5735 -End of Item 00CB - -Begin of Item 00CC - Format 1 - srcBegin = 6D59 - srcEnd = 6D95 - mappingOffset = 19C1 - Mapping = - 6F3A 715D FFFD 5E33 FFFD FFFD FFFD FFFD - FFFD FFFD 684B FFFD FFFD 785D FFFD FFFD - 7B47 5548 FFFD 575F FFFD 5D29 FFFD FFFD - FFFD FFFD FFFD 6931 FFFD FFFD 7A2D 7659 - 7A74 FFFD FFFD FFFD FFFD FFFD 782A FFFD - FFFD FFFD FFFD FFFD 666E FFFD 4C5C 613C - 606F FFFD FFFD 693F 7C7D 664E FFFD FFFD - 6157 FFFD 664F FFFD 7471 -End of Item 00CC - -Begin of Item 00CD - Format 1 - srcBegin = 6DAF - srcEnd = 6DFB - mappingOffset = 19FE - Mapping = - 6473 FFFD FFFD 647B FFFD FFFD 7964 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6F63 FFFD FFFD 4F6E 763E 6032 7C7E - 512B FFFD FFFD FFFD 577A FFFD FFFD FFFD - 7B48 FFFD 6257 FFFD FFFD FFFD FFFD FFFD - FFFD 5423 7078 5728 FFFD FFFD FFFD 6167 - FFFD FFFD 533F FFFD FFFD FFFD FFFD FFFD - FFFD 6F64 FFFD 5745 6B62 FFFD FFFD 7C67 - FFFD FFFD 6422 FFFD 6268 FFFD 6650 FFFD - 7B68 7468 6574 743C 7455 -End of Item 00CD - -Begin of Item 00CE - Format 1 - srcBegin = 6E17 - srcEnd = 6E7A - mappingOffset = 1A4B - Mapping = - 5F36 FFFD 7C39 6E42 4A75 FFFD FFFD FFFD - 6F65 4B62 5424 FFFD 5E60 5A7D 6446 683E - FFFD FFFD FFFD FFFD 605E 7634 6A52 FFFD - 797B FFFD FFFD 6042 FFFD 4A64 FFFD 6737 - FFFD 6A7D FFFD 595D FFFD 5A34 6E2A 7B69 - FFFD FFFD FFFD FFFD 5B4B 5A35 FFFD FFFD - FFFD FFFD FFFD 713E FFFD FFFD 532C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7B49 - FFFD 5F4F FFFD FFFD 5340 6357 FFFD 6F66 - 7C50 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6940 FFFD FFFD FFFD 7553 FFFD FFFD 6C5C - 7737 FFFD FFFD 6A38 5179 FFFD FFFD FFFD - FFFD FFFD FFFD 5C48 -End of Item 00CE - -Begin of Item 00CF - Format 1 - srcBegin = 6E90 - srcEnd = 6ED4 - mappingOffset = 1AAF - Mapping = - 6A39 FFFD FFFD FFFD FFFD FFFD 715E FFFD - FFFD FFFD FFFD FFFD 5736 4F35 FFFD 5928 - FFFD FFFD 6C6E FFFD FFFD 5D2A FFFD FFFD - FFFD FFFD 4D22 682E FFFD FFFD FFFD 613D - FFFD 7251 FFFD FFFD FFFD FFFD 6941 FFFD - FFFD FFFD 527C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5B35 FFFD 7367 587E FFFD FFFD - FFFD 7C51 FFFD 6D32 742F FFFD 7B23 FFFD - FFFD 7C41 FFFD 6E2B 5425 -End of Item 00CF - -Begin of Item 00D0 - Format 1 - srcBegin = 6EEF - srcEnd = 6F41 - mappingOffset = 1AF4 - Mapping = - 7472 FFFD FFFD FFFD FFFD 6E59 FFFD FFFD - FFFD 7B4A FFFD FFFD FFFD FFFD FFFD 4D63 - 583B FFFD 655B 7877 FFFD FFFD FFFD 7654 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5729 FFFD 4B49 FFFD FFFD 6651 704C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 582E FFFD 7953 557E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 583C 7230 FFFD FFFD - FFFD FFFD 622B 7368 FFFD FFFD FFFD FFFD - FFFD 6F42 FFFD FFFD FFFD FFFD FFFD FFFD - 6D6C FFFD 6738 -End of Item 00D0 - -Begin of Item 00D1 - Format 1 - srcBegin = 6F51 - srcEnd = 6F97 - mappingOffset = 1B47 - Mapping = - 5A7E FFFD FFFD 4C3E FFFD FFFD 727C 5A6B - FFFD 6258 6D56 FFFD FFFD 5651 6033 FFFD - FFFD 7C52 FFFD 6B48 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5341 704D FFFD 4F77 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6D52 FFFD 5458 5C49 5771 FFFD FFFD - 5F3B FFFD FFFD 7325 FFFD FFFD FFFD 744D - FFFD FFFD FFFD FFFD 713F 7831 FFFD 697A - FFFD FFFD FFFD 7B4B FFFD FFFD 4A55 -End of Item 00D1 - -Begin of Item 00D2 - Format 1 - srcBegin = 6FA3 - srcEnd = 6FF1 - mappingOffset = 1B8E - Mapping = - 7954 774A FFFD FFFD 5648 FFFD FFFD FFFD - FFFD FFFD FFFD 7C68 733D FFFD 6E7E FFFD - 677E FFFD FFFD FFFD FFFD FFFD 5342 FFFD - FFFD FFFD FFFD 5336 FFFD 4C2D 767A 5632 - 5258 FFFD FFFD FFFD FFFD FFFD FFFD 6758 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6325 FFFD FFFD FFFD FFFD 6739 - FFFD FFFD FFFD FFFD 702D 7B4C 6B21 FFFD - FFFD 5426 FFFD FFFD FFFD FFFD 7B4D FFFD - 553D 715F FFFD FFFD 767B FFFD 5E34 -End of Item 00D2 - -Begin of Item 00D3 - Format 1 - srcBegin = 6FFE - srcEnd = 703E - mappingOffset = 1BDD - Mapping = - 556B FFFD FFFD 6548 FFFD FFFD FFFD 7B24 - 5439 FFFD FFFD 5E61 FFFD 6423 FFFD FFFD - FFFD 5737 FFFD 786E FFFD FFFD FFFD 5E35 - FFFD FFFD 5652 FFFD 7955 673A 6B55 5577 - 6F67 613E FFFD FFFD FFFD 7A2E FFFD FFFD - FFFD 5669 566E FFFD FFFD FFFD FFFD FFFD - FFFD 673B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6C4B FFFD FFFD FFFD FFFD FFFD FFFD - 5533 -End of Item 00D3 - -Begin of Item 00D4 - Format 1 - srcBegin = 704C - srcEnd = 70B9 - mappingOffset = 1C1E - Mapping = - 4E34 FFFD FFFD FFFD 7B25 616E FFFD FFFD - FFFD FFFD FFFD FFFD 7728 FFFD FFFD FFFD - FFFD 7B4E FFFD FFFD FFFD FFFD FFFD 583D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7B7D - FFFD FFFD FFFD FFFD 7C69 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4F36 FFFD FFFD FFFD - 6D47 6E2C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4C5D FFFD FFFD FFFD FFFD 7627 FFFD - FFFD FFFD 667A FFFD FFFD FFFD 7524 FFFD - FFFD FFFD FFFD FFFD 7D5C 6D33 4E49 FFFD - FFFD FFFD FFFD FFFD FFFD 6F68 FFFD FFFD - 613F FFFD FFFD FFFD FFFD FFFD FFFD 7A5B - 4B63 7729 FFFD 7B26 FFFD FFFD FFFD 5C39 - FFFD FFFD FFFD 7140 6D48 6F43 -End of Item 00D4 - -Begin of Item 00D5 - Format 1 - srcBegin = 70C8 - srcEnd = 70DF - mappingOffset = 1C8C - Mapping = - 562D FFFD FFFD 7D4E FFFD FFFD FFFD 6821 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7B74 5527 FFFD FFFD FFFD 7176 FFFD 6653 -End of Item 00D5 - -Begin of Item 00D6 - Format 1 - srcBegin = 70F1 - srcEnd = 710C - mappingOffset = 1CA4 - Mapping = - 4C5E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7832 FFFD FFFD FFFD 5C6B FFFD FFFD FFFD - FFFD FFFD FFFD 7D36 FFFD FFFD FFFD FFFD - 656A FFFD FFFD 7160 -End of Item 00D6 - -Begin of Item 00D7 - Format 1 - srcBegin = 7119 - srcEnd = 7136 - mappingOffset = 1CC0 - Mapping = - 5B4C 5D4D FFFD FFFD FFFD 5448 FFFD FFFD - 596D FFFD FFFD FFFD FFFD 7525 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 667B - FFFD FFFD FFFD FFFD FFFD 6654 -End of Item 00D7 - -Begin of Item 00D8 - Format 1 - srcBegin = 7147 - srcEnd = 716E - mappingOffset = 1CDE - Mapping = - 7D48 FFFD 5621 7D3F FFFD 7C53 FFFD 6F21 - FFFD 673C FFFD FFFD FFFD FFFD FFFD 516E - FFFD FFFD 6655 FFFD FFFD 6972 FFFD 5F30 - FFFD FFFD FFFD FFFD FFFD 5860 7C3A 7D2F - 704E FFFD 5B61 FFFD FFFD 6549 FFFD 6D34 -End of Item 00D8 - -Begin of Item 00D9 - Format 1 - srcBegin = 717D - srcEnd = 71EE - mappingOffset = 1D06 - Mapping = - 6043 FFFD FFFD FFFD FFFD FFFD FFFD 6358 - FFFD FFFD FFFD FFFD 697B 6A28 FFFD FFFD - FFFD FFFD 7D37 FFFD FFFD 7B27 FFFD 6942 - FFFD FFFD FFFD FFFD 7D77 FFFD FFFD FFFD - FFFD FFFD 6259 FFFD FFFD 5C6C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6822 - FFFD FFFD FFFD FFFD 6670 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7D78 7D79 FFFD FFFD - FFFD 763F FFFD FFFD 6727 FFFD 6657 FFFD - FFFD FFFD FFFD 5473 5449 FFFD FFFD FFFD - FFFD 567A FFFD 5772 FFFD 6140 FFFD 5B62 - 6658 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 673D FFFD FFFD FFFD FFFD FFFD - 704F 733E 622C FFFD FFFD FFFD FFFD FFFD - 7537 6070 -End of Item 00D9 - -Begin of Item 00DA - Format 1 - srcBegin = 71FB - srcEnd = 721B - mappingOffset = 1D78 - Mapping = - 7D38 6368 FFFD 5427 687C 7A52 FFFD FFFD - FFFD FFFD FFFD 786F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5653 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5534 -End of Item 00DA - -Begin of Item 00DB - Format 1 - srcBegin = 722A - srcEnd = 7281 - mappingOffset = 1D99 - Mapping = - 7050 FFFD 7770 6E33 FFFD FFFD 6A3A FFFD - 6A53 FFFD FFFD 6D49 5D2B FFFD FFFD FFFD - 652C 7D21 FFFD 5F50 6C33 FFFD 5F51 FFFD - FFFD FFFD FFFD FFFD 6D6D 7838 777A FFFD - FFFD FFFD 782B FFFD FFFD FFFD FFFD FFFD - 7460 FFFD FFFD FFFD FFFD FFFD 543A 6433 - FFFD 695A FFFD 5E36 FFFD 593F FFFD 5940 - 566F FFFD FFFD FFFD FFFD 594C FFFD 5A2A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5F65 FFFD FFFD FFFD FFFD FFFD FFFD 7765 - FFFD FFFD FFFD 4C32 FFFD FFFD 5F79 5760 -End of Item 00DB - -Begin of Item 00DC - Format 1 - srcBegin = 72A2 - srcEnd = 72AF - mappingOffset = 1DF1 - Mapping = - 543B FFFD FFFD FFFD FFFD 7D7A FFFD FFFD - FFFD FFFD 4C33 FFFD FFFD 5B73 -End of Item 00DC - -Begin of Item 00DD - Format 1 - srcBegin = 72C0 - srcEnd = 72E9 - mappingOffset = 1DFF - Mapping = - 5F52 FFFD 4E4A FFFD 6E5A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6464 FFFD - 7B4F FFFD FFFD FFFD FFFD FFFD FFFD 4F37 - FFFD 6E43 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4E6A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 622D -End of Item 00DD - -Begin of Item 00DE - Format 1 - srcBegin = 72F8 - srcEnd = 72FD - mappingOffset = 1E29 - Mapping = - 5761 7A75 FFFD FFFD 5549 782C -End of Item 00DE - -Begin of Item 00DF - Format 2 - srcBegin = 730A - destBegin = 6759 -End of Item 00DF - -Begin of Item 00E0 - Format 1 - srcBegin = 7316 - srcEnd = 7357 - mappingOffset = 1E2F - Mapping = - 7369 FFFD FFFD FFFD FFFD 586D 6344 7071 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6865 - FFFD FFFD FFFD 607A 6E44 595E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6B22 6B23 FFFD FFFD FFFD FFFD FFFD FFFD - 7C42 6A3B FFFD FFFD FFFD FFFD 682B 5E62 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6D6F FFFD 6823 FFFD FFFD FFFD - FFFD 4F71 -End of Item 00E0 - -Begin of Item 00E1 - Format 1 - srcBegin = 7368 - srcEnd = 746F - mappingOffset = 1E71 - Mapping = - 543C FFFD 7C6A FFFD FFFD FFFD FFFD FFFD - 673E FFFD 7C72 FFFD FFFD 5634 FFFD FFFD - 622E FFFD 5337 7A4C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7A5C FFFD 6D35 6163 - FFFD 682C FFFD 685D FFFD FFFD 6F69 FFFD - FFFD FFFD FFFD FFFD 743D FFFD 4F38 695B - 512C FFFD FFFD FFFD FFFD FFFD FFFD 5A47 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6B49 - FFFD 684C FFFD FFFD FFFD 5E37 FFFD FFFD - FFFD FFFD 563C 5365 FFFD FFFD FFFD FFFD - FFFD 7A5D FFFD FFFD FFFD FFFD FFFD FFFD - 5A56 FFFD 4A31 FFFD FFFD FFFD FFFD FFFD - FFFD 5A48 5F26 FFFD 7933 7252 FFFD 4A44 - FFFD FFFD FFFD FFFD FFFD FFFD 4E4B FFFD - FFFD 4D75 FFFD FFFD FFFD 7D30 5528 FFFD - 7141 FFFD FFFD 6269 5C4A 6C34 7A40 FFFD - FFFD 7B28 5028 FFFD FFFD 5A6C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 596E - FFFD 607B FFFD FFFD FFFD 6F6A 7A5E FFFD - FFFD 6044 FFFD 4F39 FFFD 554A 5762 622F - FFFD 5738 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 684D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 765A FFFD FFFD FFFD FFFD - 6F22 625A 767C FFFD FFFD 7B50 512D FFFD - 4D64 FFFD 512E 5C6D 684E FFFD 7079 4E35 - 667C FFFD FFFD 577B 5056 5D75 7771 FFFD - 767D FFFD 5B77 FFFD FFFD FFFD FFFD 7B6A - 695C 5941 FFFD 7572 6045 FFFD FFFD FFFD - FFFD FFFD FFFD 6A54 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7942 FFFD 6A3C - FFFD 5245 7B51 6740 6B25 FFFD 5F7A 6322 - 5739 FFFD 6943 FFFD 687D 682F FFFD FFFD - 7253 7B29 5825 FFFD FFFD FFFD FFFD 554B -End of Item 00E1 - -Begin of Item 00E2 - Format 1 - srcBegin = 747E - srcEnd = 748B - mappingOffset = 1F79 - Mapping = - 5048 FFFD FFFD FFFD 512F 5763 FFFD FFFD - FFFD 6046 FFFD 5622 FFFD 6D70 -End of Item 00E2 - -Begin of Item 00E3 - Format 1 - srcBegin = 7498 - srcEnd = 7504 - mappingOffset = 1F87 - Mapping = - 5773 FFFD FFFD FFFD 7C54 FFFD 5A57 4C5F - FFFD 7254 FFFD 5130 FFFD 4C60 FFFD 5B7D - 733F FFFD 7051 FFFD FFFD FFFD FFFD FFFD - 7C3B FFFD 6230 FFFD FFFD 6625 FFFD FFFD - FFFD 625B FFFD FFFD FFFD 5F5E FFFD 6047 - FFFD FFFD FFFD FFFD FFFD FFFD 726F FFFD - FFFD FFFD 4C61 FFFD FFFD FFFD FFFD 566A - FFFD FFFD FFFD FFFD 6742 FFFD FFFD FFFD - 4E36 FFFD 7340 FFFD 4D7E FFFD FFFD FFFD - 7B52 FFFD 7878 777B FFFD FFFD 683F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6837 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6D36 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5C3A FFFD FFFD 4C34 -End of Item 00E3 - -Begin of Item 00E4 - Format 1 - srcBegin = 7511 - srcEnd = 753A - mappingOffset = 1FF4 - Mapping = - 7177 FFFD FFFD FFFD 6838 FFFD FFFD 4A76 - FFFD 6424 7456 FFFD FFFD FFFD 5F66 FFFD - FFFD FFFD 5F27 FFFD 5F67 6141 FFFD 6944 - FFFD FFFD 5C4B 6945 FFFD FFFD FFFD 6F23 - 6B26 4B23 6369 FFFD FFFD FFFD 517B 6F24 - FFFD 6F6B -End of Item 00E4 - -Begin of Item 00E5 - Format 1 - srcBegin = 7547 - srcEnd = 7591 - mappingOffset = 201E - Mapping = - 5034 FFFD FFFD FFFD FFFD 4D23 FFFD FFFD - 6866 FFFD 6F25 FFFD 534C 5A6D FFFD FFFD - FFFD FFFD 573A FFFD 7255 7565 596F FFFD - FFFD FFFD FFFD 7934 FFFD FFFD 5554 7D4F - FFFD FFFD FFFD 5B63 FFFD FFFD FFFD FFFD - 7161 6C36 FFFD FFFD FFFD FFFD 7B7E 5357 - FFFD 5131 FFFD 4B31 FFFD FFFD FFFD FFFD - 5132 FFFD FFFD FFFD FFFD FFFD FFFD 4B32 - 7142 FFFD FFFD 7461 7935 FFFD FFFD 6143 - 6142 FFFD 6B77 -End of Item 00E5 - -Begin of Item 00E6 - Format 1 - srcBegin = 759D - srcEnd = 75E2 - mappingOffset = 2069 - Mapping = - 5F28 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4B4A FFFD FFFD FFFD FFFD FFFD 6639 FFFD - FFFD FFFD FFFD FFFD 785E 792A 4A77 FFFD - 6D37 FFFD FFFD 5338 7256 FFFD FFFD 5459 - 6E45 7270 FFFD FFFD FFFD 4A32 FFFD FFFD - 5C3B FFFD 7178 FFFD FFFD FFFD FFFD FFFD - 6C37 FFFD FFFD FFFD FFFD 654A FFFD 7640 - 7D5D FFFD FFFD 5463 4C62 FFFD 7754 FFFD - FFFD FFFD FFFD FFFD FFFD 5765 -End of Item 00E6 - -Begin of Item 00E7 - Format 1 - srcBegin = 75F0 - srcEnd = 7600 - mappingOffset = 20AF - Mapping = - 5343 FFFD 5826 FFFD 7641 FFFD FFFD FFFD - FFFD FFFD 5D76 FFFD 4D40 FFFD FFFD FFFD - 655C -End of Item 00E7 - -Begin of Item 00E8 - Format 2 - srcBegin = 760D - destBegin = 654B -End of Item 00E8 - -Begin of Item 00E9 - Format 1 - srcBegin = 7619 - srcEnd = 7626 - mappingOffset = 20C0 - Mapping = - 6144 FFFD FFFD FFFD FFFD FFFD 6830 7430 - 736A 5A6E FFFD 573B FFFD 6231 -End of Item 00E9 - -Begin of Item 00EA - Format 1 - srcBegin = 763B - srcEnd = 7693 - mappingOffset = 20CE - Mapping = - 572A FFFD FFFD FFFD FFFD FFFD FFFD 567B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 645F FFFD 4A56 FFFD FFFD FFFD 6B28 - FFFD FFFD FFFD 5B7E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7642 FFFD - FFFD 6F3B FFFD FFFD FFFD FFFD 547D FFFD - FFFD 6048 FFFD FFFD FFFD 6839 FFFD 6F26 - FFFD FFFD FFFD FFFD FFFD 4D24 FFFD FFFD - 5474 5B21 5B5C 5B5D FFFD FFFD FFFD FFFD - FFFD 6E5C FFFD 4B4B 7C55 FFFD FFFD FFFD - FFFD FFFD FFFD 4E6B FFFD 4D41 FFFD FFFD - 7B53 -End of Item 00EA - -Begin of Item 00EB - Format 2 - srcBegin = 76AE - destBegin = 792B -End of Item 00EB - -Begin of Item 00EC - Format 1 - srcBegin = 76BA - srcEnd = 770B - mappingOffset = 2127 - Mapping = - 7554 FFFD FFFD FFFD FFFD 5929 FFFD FFFD - 695D 5B4D FFFD FFFD 5D4E FFFD 6743 FFFD - 6C4C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 796C FFFD FFFD FFFD 4B4C FFFD FFFD FFFD - FFFD 607C 5428 FFFD 6D53 586F FFFD 7257 - FFFD 4A78 5A6F FFFD FFFD 5654 FFFD FFFD - FFFD FFFD FFFD FFFD 594D FFFD FFFD FFFD - 586E FFFD 7241 FFFD FFFD FFFD 5F53 FFFD - FFFD FFFD 5A70 FFFD 626A FFFD FFFD 607D - FFFD FFFD 5878 FFFD FFFD FFFD 772F 5A36 - FFFD 4A57 -End of Item 00EC - -Begin of Item 00ED - Format 1 - srcBegin = 771E - srcEnd = 7729 - mappingOffset = 2179 - Mapping = - 7258 FFFD 5879 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7A5F -End of Item 00ED - -Begin of Item 00EE - Format 1 - srcBegin = 7737 - srcEnd = 7740 - mappingOffset = 2185 - Mapping = - 4F6F 5942 FFFD 7052 FFFD 6451 FFFD FFFD - FFFD 7337 -End of Item 00EE - -Begin of Item 00EF - Format 2 - srcBegin = 774D - destBegin = 7A60 -End of Item 00EF - -Begin of Item 00F0 - Format 1 - srcBegin = 775B - srcEnd = 776B - mappingOffset = 218F - Mapping = - 6F6C FFFD FFFD FFFD FFFD FFFD 6232 FFFD - 543D FFFD FFFD 594E FFFD FFFD FFFD FFFD - 7462 -End of Item 00F0 - -Begin of Item 00F1 - Format 1 - srcBegin = 7779 - srcEnd = 777F - mappingOffset = 21A0 - Mapping = - 5429 FFFD FFFD FFFD FFFD 4D42 675A -End of Item 00F1 - -Begin of Item 00F2 - Format 1 - srcBegin = 778B - srcEnd = 7791 - mappingOffset = 21A7 - Mapping = - 7259 FFFD FFFD FFFD FFFD FFFD 592A -End of Item 00F2 - -Begin of Item 00F3 - Format 1 - srcBegin = 779E - srcEnd = 77BF - mappingOffset = 21AE - Mapping = - 583E FFFD FFFD FFFD FFFD FFFD FFFD 5C2D - FFFD FFFD FFFD FFFD FFFD FFFD 626B 567C - FFFD FFFD 4A79 FFFD FFFD 545A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7457 4C21 FFFD - FFFD 4F3A -End of Item 00F3 - -Begin of Item 00F4 - Format 1 - srcBegin = 77D7 - srcEnd = 77F3 - mappingOffset = 21D0 - Mapping = - 7538 FFFD FFFD FFFD 5943 5068 FFFD FFFD - FFFD FFFD FFFD 6345 6B78 FFFD 7231 FFFD - FFFD FFFD 4F3B FFFD FFFD FFFD 532D 6861 - 4E6C FFFD FFFD FFFD 6034 -End of Item 00F4 - -Begin of Item 00F5 - Format 2 - srcBegin = 7802 - destBegin = 5E63 -End of Item 00F5 - -Begin of Item 00F6 - Format 2 - srcBegin = 7812 - destBegin = 5D77 -End of Item 00F6 - -Begin of Item 00F7 - Format 1 - srcBegin = 7825 - srcEnd = 7834 - mappingOffset = 21ED - Mapping = - 7232 7376 765B FFFD FFFD FFFD FFFD 577E - FFFD FFFD FFFD FFFD FFFD 785F FFFD 7772 -End of Item 00F7 - -Begin of Item 00F8 - Format 1 - srcBegin = 7845 - srcEnd = 784F - mappingOffset = 21FD - Mapping = - 5029 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 665A -End of Item 00F8 - -Begin of Item 00F9 - Format 2 - srcBegin = 785D - destBegin = 7526 -End of Item 00F9 - -Begin of Item 00FA - Format 1 - srcBegin = 786B - srcEnd = 786F - mappingOffset = 2208 - Mapping = - 573C 4C63 FFFD FFFD 665B -End of Item 00FA - -Begin of Item 00FB - Format 1 - srcBegin = 787C - srcEnd = 7897 - mappingOffset = 220D - Mapping = - 5D5D FFFD FFFD FFFD FFFD 5133 FFFD FFFD - FFFD FFFD FFFD 6F6D FFFD FFFD FFFD FFFD - 565E 6474 616F FFFD FFFD 5D78 FFFD FFFD - FFFD FFFD FFFD 684F -End of Item 00FB - -Begin of Item 00FC - Format 1 - srcBegin = 78A3 - srcEnd = 78A9 - mappingOffset = 2229 - Mapping = - 4A65 FFFD FFFD FFFD 5C21 FFFD 6035 -End of Item 00FC - -Begin of Item 00FD - Format 1 - srcBegin = 78BA - srcEnd = 78D0 - mappingOffset = 2230 - Mapping = - 7C2C 7C2D 5827 FFFD FFFD FFFD FFFD 6D38 - FFFD FFFD FFFD 5B36 FFFD FFFD FFFD FFFD - 5670 732F FFFD FFFD 4D25 FFFD 5A71 -End of Item 00FD - -Begin of Item 00FE - Format 1 - srcBegin = 78E8 - srcEnd = 7901 - mappingOffset = 2247 - Mapping = - 5828 FFFD FFFD FFFD 4C64 FFFD FFFD 5134 - FFFD FFFD FFFD FFFD FFFD 4A58 FFFD FFFD - FFFD FFFD FFFD 5A72 FFFD FFFD FFFD FFFD - FFFD 7527 -End of Item 00FE - -Begin of Item 00FF - Format 1 - srcBegin = 790E - srcEnd = 7916 - mappingOffset = 2261 - Mapping = - 7528 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6626 -End of Item 00FF - -Begin of Item 0100 - Format 1 - srcBegin = 792A - srcEnd = 792C - mappingOffset = 226A - Mapping = - 556C 5578 5A73 -End of Item 0100 - -Begin of Item 0101 - Format 1 - srcBegin = 793A - srcEnd = 796D - mappingOffset = 226D - Mapping = - 6346 FFFD FFFD FFFD 5E64 FFFD 5E65 5135 - FFFD FFFD FFFD FFFD FFFD 5136 5137 7233 - FFFD FFFD FFFD FFFD FFFD FFFD 695E FFFD - FFFD FFFD FFFD FFFD 7053 7234 FFFD FFFD - 7054 4B64 7B54 7566 636A FFFD 5E66 FFFD - FFFD FFFD FFFD 5F54 FFFD FFFD 7879 FFFD - FFFD FFFD FFFD 702E -End of Item 0101 - -Begin of Item 0102 - Format 1 - srcBegin = 797A - srcEnd = 7981 - mappingOffset = 22A1 - Mapping = - 5138 FFFD FFFD FFFD FFFD 565F FFFD 5057 -End of Item 0102 - -Begin of Item 0103 - Format 1 - srcBegin = 798D - srcEnd = 7991 - mappingOffset = 22A9 - Mapping = - 7C21 6F6E 5C58 FFFD 695F -End of Item 0103 - -Begin of Item 0104 - Format 1 - srcBegin = 79A6 - srcEnd = 79E9 - mappingOffset = 22AE - Mapping = - 655D 7D7B FFFD FFFD 6049 FFFD FFFD FFFD - 5649 FFFD FFFD 542A FFFD 654C FFFD FFFD - FFFD FFFD FFFD 6960 FFFD FFFD FFFD 5058 - 7C22 543E 6233 5E67 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5C3C 5236 7555 FFFD FFFD - FFFD FFFD FFFD 4E21 7529 FFFD FFFD 5D79 - FFFD FFFD 5D7A FFFD FFFD FFFD FFFD FFFD - FFFD 7055 FFFD FFFD FFFD FFFD 765F FFFD - 725A 646B FFFD 7271 -End of Item 0104 - -Begin of Item 0105 - Format 1 - srcBegin = 79FB - srcEnd = 7A20 - mappingOffset = 22F2 - Mapping = - 6C39 FFFD FFFD FFFD FFFD 7D7C FFFD FFFD - FFFD FFFD 612A FFFD FFFD 4A59 FFFD FFFD - 6F6F FFFD 752A FFFD FFFD FFFD FFFD FFFD - FFFD 6C79 FFFD FFFD 782D FFFD 7242 7643 - FFFD 5752 FFFD FFFD 7922 7056 -End of Item 0105 - -Begin of Item 0106 - Format 1 - srcBegin = 7A2E - srcEnd = 7ACB - mappingOffset = 2318 - Mapping = - 707A FFFD FFFD 7660 FFFD FFFD FFFD FFFD - 6973 7243 FFFD FFFD FFFD 542B 4A33 4D26 - FFFD 4D43 4D5A FFFD FFFD FFFD FFFD FFFD - 594F FFFD FFFD 7644 FFFD FFFD FFFD 6E5D - 6744 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6234 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5F62 675B FFFD FFFD FFFD - FFFD FFFD FFFD 6831 FFFD 7C2E FFFD FFFD - FFFD FFFD 654D FFFD FFFD FFFD 7A6B FFFD - 4F3C FFFD FFFD 4F62 4D76 FFFD FFFD 6F70 - FFFD 743E FFFD 544D FFFD FFFD 7338 FFFD - FFFD FFFD 6921 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7272 736B FFFD 7057 - FFFD FFFD 4F57 FFFD FFFD FFFD FFFD FFFD - FFFD 4F5F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6840 6841 FFFD FFFD FFFD - 4F63 6922 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 502A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7341 502B - FFFD 5464 FFFD FFFD 6F3C 5821 -End of Item 0106 - -Begin of Item 0107 - Format 1 - srcBegin = 7AD7 - srcEnd = 7AFF - mappingOffset = 23B6 - Mapping = - 595F FFFD 7357 FFFD FFFD FFFD 5C3D FFFD - 4C65 6D71 FFFD FFFD 7162 FFFD 545B FFFD - FFFD FFFD FFFD 6235 FFFD FFFD 4A66 FFFD - 532E FFFD FFFD FFFD FFFD FFFD FFFD 4C66 - FFFD FFFD 7153 7567 FFFD FFFD FFFD FFFD - 4A5A -End of Item 0107 - -Begin of Item 0108 - Format 1 - srcBegin = 7B0F - srcEnd = 7B2D - mappingOffset = 23DF - Mapping = - 7B6E FFFD 6145 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5F69 FFFD 6E5E FFFD FFFD 7742 - FFFD 5822 FFFD FFFD FFFD FFFD FFFD 5D2C - FFFD FFFD FFFD FFFD FFFD 702F 563D -End of Item 0108 - -Begin of Item 0109 - Format 2 - srcBegin = 7B39 - destBegin = 612B -End of Item 0109 - -Begin of Item 010A - Format 1 - srcBegin = 7B46 - srcEnd = 7B60 - mappingOffset = 23FE - Mapping = - 7936 FFFD FFFD 5475 FFFD 5049 6F27 626C - FFFD 5B6A 4E4C 7568 7755 FFFD 534D FFFD - 737E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5035 -End of Item 010A - -Begin of Item 010B - Format 1 - srcBegin = 7B6C - srcEnd = 7BA1 - mappingOffset = 2419 - Mapping = - 607E FFFD 5F7B FFFD FFFD FFFD FFFD FFFD - FFFD 665D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6824 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4B4D FFFD FFFD FFFD 6F28 - FFFD FFFD FFFD 6E34 FFFD FFFD FFFD FFFD - 5A58 5139 FFFD 5F29 FFFD FFFD 7330 FFFD - FFFD 4C44 FFFD FFFD FFFD 4E37 -End of Item 010B - -Begin of Item 010C - Format 1 - srcBegin = 7BAD - srcEnd = 7BD2 - mappingOffset = 244F - Mapping = - 6F29 FFFD FFFD FFFD 5F55 FFFD FFFD 6D57 - FFFD FFFD FFFD 6E46 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6F3D 7C56 FFFD FFFD 5B74 - FFFD 6F2A 7839 FFFD 7569 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6359 -End of Item 010C - -Begin of Item 010D - Format 1 - srcBegin = 7BE0 - srcEnd = 7BE9 - mappingOffset = 2475 - Mapping = - 6146 FFFD FFFD FFFD 543F FFFD FFFD FFFD - FFFD 5E68 -End of Item 010D - -Begin of Item 010E - Format 1 - srcBegin = 7C07 - srcEnd = 7C12 - mappingOffset = 247F - Mapping = - 706A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7342 -End of Item 010E - -Begin of Item 010F - Format 1 - srcBegin = 7C1E - srcEnd = 7C2B - mappingOffset = 248B - Mapping = - 532F FFFD FFFD 4A5B FFFD FFFD FFFD FFFD - FFFD 7C57 FFFD FFFD 6D58 6147 -End of Item 010F - -Begin of Item 0110 - Format 1 - srcBegin = 7C3D - srcEnd = 7C4D - mappingOffset = 2499 - Mapping = - 7458 5633 5D2D FFFD FFFD FFFD 553E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7143 - 6E5F -End of Item 0110 - -Begin of Item 0111 - Format 1 - srcBegin = 7C60 - srcEnd = 7C73 - mappingOffset = 24AA - Mapping = - 566B FFFD FFFD FFFD 7459 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5766 FFFD FFFD FFFD - FFFD FFFD FFFD 5A37 -End of Item 0111 - -Begin of Item 0112 - Format 1 - srcBegin = 7C83 - srcEnd = 7CBE - mappingOffset = 24BE - Mapping = - 5D7B FFFD FFFD FFFD FFFD FFFD 5D4F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5823 - FFFD FFFD 5A59 FFFD 7058 6F44 FFFD FFFD - FFFD FFFD FFFD FFFD 6158 FFFD FFFD FFFD - FFFD FFFD 7154 FFFD 6D72 FFFD FFFD FFFD - FFFD FFFD FFFD 555B FFFD FFFD 555C 7344 - 4B57 FFFD FFFD FFFD FFFD FFFD 6236 FFFD - FFFD FFFD FFFD 6F71 -End of Item 0112 - -Begin of Item 0113 - Format 2 - srcBegin = 7CCA - destBegin = 7B55 -End of Item 0113 - -Begin of Item 0114 - Format 1 - srcBegin = 7CD6 - srcEnd = 7CE7 - mappingOffset = 24FA - Mapping = - 5358 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5D50 7059 4B33 FFFD FFFD FFFD FFFD FFFD - FFFD 555D -End of Item 0114 - -Begin of Item 0115 - Format 1 - srcBegin = 7CFB - srcEnd = 7D50 - mappingOffset = 250C - Mapping = - 4D27 FFFD FFFD 502C FFFD 513A FFFD 7144 - FFFD 6533 7B75 6961 7D60 7C3C FFFD 5A22 - 5A23 FFFD 5221 FFFD FFFD 526F FFFD FFFD - FFFD 626D FFFD FFFD 5E69 4E5C 7235 5064 - 5D51 FFFD FFFD FFFD FFFD 6148 5B37 5F63 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6D39 7145 FFFD 734F 572B 612C FFFD FFFD - 636B FFFD 6E47 FFFD FFFD FFFD 6149 4A7A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 707B - 7A61 705A 4C67 5A74 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4C3F -End of Item 0115 - -Begin of Item 0116 - Format 1 - srcBegin = 7D5E - srcEnd = 7D7F - mappingOffset = 2562 - Mapping = - 4E6D FFFD FFFD 5529 7A62 FFFD FFFD FFFD - 5065 FFFD 6B56 FFFD 6C5F FFFD FFFD FFFD - 5F7C FFFD FFFD 7756 5E6A 4B34 FFFD FFFD - 6F3E FFFD FFFD 4C35 FFFD FFFD FFFD FFFD - FFFD 4F3D -End of Item 0116 - -Begin of Item 0117 - Format 1 - srcBegin = 7D8E - srcEnd = 7DFB - mappingOffset = 2584 - Mapping = - 6F72 6237 FFFD FFFD FFFD 4C68 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 707C FFFD - FFFD FFFD 5660 FFFD 7146 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6238 6B2B - FFFD FFFD FFFD 4B35 5851 FFFD 744E 7377 - FFFD FFFD 5746 FFFD 513B 772A FFFD 6D4A - 5753 587A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7645 FFFD FFFD 514C 5D7C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5F7D FFFD 7965 FFFD 604A FFFD FFFD 727D - 5330 FFFD 7473 5A49 FFFD 665E FFFD FFFD - FFFD FFFD 783A 6850 FFFD FFFD 587B FFFD - FFFD 6A55 FFFD FFFD FFFD FFFD 5623 FFFD - FFFD FFFD FFFD FFFD FFFD 7646 -End of Item 0117 - -Begin of Item 0118 - Format 1 - srcBegin = 7E09 - srcEnd = 7E9C - mappingOffset = 25F2 - Mapping = - 725B 647C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6832 FFFD FFFD FFFD - FFFD FFFD 5A5A FFFD 725C 7B56 6932 FFFD - 6E2D FFFD 7A63 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5C6E FFFD FFFD 756A 6660 FFFD - 707D FFFD FFFD FFFD FFFD FFFD 572C FFFD - FFFD FFFD FFFD FFFD 7545 6E60 FFFD FFFD - 5B65 FFFD 5D5E FFFD FFFD 5970 6923 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7179 FFFD 7244 604B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6924 FFFD FFFD - 6239 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6331 7C6B 4D28 FFFD 4C36 FFFD FFFD 705B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 663A FFFD FFFD 4D29 FFFD FFFD FFFD FFFD - FFFD 7343 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6159 FFFD FFFD 6F2B FFFD - FFFD FFFD 6745 FFFD FFFD 6069 FFFD 7345 - FFFD FFFD 5440 553F -End of Item 0118 - -Begin of Item 0119 - Format 1 - srcBegin = 7F36 - srcEnd = 7F3A - mappingOffset = 2686 - Mapping = - 5D2E FFFD 797C FFFD 4C40 -End of Item 0119 - -Begin of Item 011A - Format 1 - srcBegin = 7F4C - srcEnd = 7F55 - mappingOffset = 268B - Mapping = - 6522 FFFD FFFD FFFD 4E38 FFFD FFFD FFFD - 5852 7956 -End of Item 011A - -Begin of Item 011B - Format 1 - srcBegin = 7F6A - srcEnd = 7F79 - mappingOffset = 2695 - Mapping = - 712A 4E51 FFFD FFFD 7647 FFFD 5B6B FFFD - 5F7E FFFD FFFD 5861 FFFD 7773 FFFD 5767 -End of Item 011B - -Begin of Item 011C - Format 1 - srcBegin = 7F85 - srcEnd = 8018 - mappingOffset = 26A5 - Mapping = - 547E FFFD FFFD 513C FFFD 654F FFFD 4B36 - FFFD 5A38 FFFD FFFD FFFD FFFD FFFD 4D44 - FFFD FFFD FFFD FFFD FFFD 563E FFFD FFFD - FFFD 623A FFFD FFFD FFFD FFFD FFFD 4F58 - FFFD FFFD FFFD 604C 6B79 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7D7D FFFD FFFD - FFFD FFFD FFFD 5768 4B58 FFFD FFFD FFFD - 6962 FFFD FFFD FFFD 683A FFFD FFFD FFFD - 6347 FFFD FFFD FFFD FFFD 6C4D FFFD 6C4E - FFFD 563F FFFD FFFD FFFD 6327 FFFD 5F56 - 7D68 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6E61 7628 5D7D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 783B FFFD 6851 FFFD - FFFD FFFD FFFD 7957 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4E6E FFFD FFFD 6C4F - FFFD FFFD FFFD 6925 5655 FFFD 4D45 FFFD - 6D3A 513D FFFD FFFD 4F3E FFFD FFFD 6C3B - FFFD FFFD FFFD 5231 FFFD FFFD FFFD FFFD - 4C69 FFFD 5944 697C -End of Item 011C - -Begin of Item 011D - Format 1 - srcBegin = 802D - srcEnd = 804A - mappingOffset = 2739 - Mapping = - 513E FFFD FFFD FFFD FFFD FFFD 6C3C FFFD - FFFD 652D FFFD FFFD FFFD FFFD FFFD FFFD - 7730 FFFD 4C6A FFFD FFFD FFFD 5344 FFFD - FFFD 5640 FFFD FFFD FFFD 567D -End of Item 011D - -Begin of Item 011E - Format 1 - srcBegin = 8056 - srcEnd = 805E - mappingOffset = 2757 - Mapping = - 6121 FFFD 5E3D FFFD 7629 FFFD FFFD FFFD - 5A24 -End of Item 011E - -Begin of Item 011F - Format 1 - srcBegin = 806F - srcEnd = 80CE - mappingOffset = 2760 - Mapping = - 5624 7546 FFFD 6122 6946 FFFD FFFD FFFD - 7245 FFFD FFFD FFFD FFFD FFFD 7469 566C - 6B53 FFFD FFFD FFFD FFFD 6C3D 625C 5E6B - 705C FFFD 6B3F FFFD 574E 513F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 752B - FFFD FFFD FFFD FFFD 797D FFFD 4A5C FFFD - FFFD FFFD 4D46 7236 FFFD FFFD 5D7E FFFD - FFFD FFFD 4C37 5B38 FFFD FFFD FFFD FFFD - 5069 FFFD 4E5D 6B40 FFFD 7D22 FFFD FFFD - FFFD FFFD FFFD 784B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6A56 7130 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5B4E FFFD 7743 -End of Item 011F - -Begin of Item 0120 - Format 1 - srcBegin = 80DA - srcEnd = 80E5 - mappingOffset = 27C0 - Mapping = - 5B4F 4B24 FFFD FFFD 7860 FFFD FFFD 7B57 - FFFD FFFD 6B4A 6021 -End of Item 0120 - -Begin of Item 0121 - Format 1 - srcBegin = 80F1 - srcEnd = 810A - mappingOffset = 27CC - Mapping = - 4E4D FFFD FFFD 545C FFFD FFFD FFFD 7D58 - FFFD FFFD FFFD FFFD 5276 FFFD FFFD FFFD - FFFD 7237 FFFD FFFD 7A76 762A 7A77 5866 - FFFD 7431 -End of Item 0121 - -Begin of Item 0122 - Format 1 - srcBegin = 8118 - srcEnd = 813E - mappingOffset = 27E6 - Mapping = - 6852 FFFD 4A45 4C6B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 626E FFFD FFFD FFFD FFFD - FFFD 623B FFFD 772D FFFD FFFD FFFD 7861 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 736C FFFD FFFD FFFD FFFD 5E21 -End of Item 0122 - -Begin of Item 0123 - Format 1 - srcBegin = 814B - srcEnd = 8155 - mappingOffset = 280D - Mapping = - 647D FFFD FFFD 636C FFFD 5D2F 5D30 FFFD - FFFD 4B37 6853 -End of Item 0123 - -Begin of Item 0124 - Format 1 - srcBegin = 8165 - srcEnd = 8247 - mappingOffset = 2818 - Mapping = - 6123 5260 FFFD FFFD FFFD FFFD 707E FFFD - FFFD FFFD FFFD 6926 4B72 FFFD FFFD FFFD - FFFD FFFD FFFD 6D73 5C59 604D FFFD FFFD - FFFD FFFD 775A 5B39 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4C2E FFFD 5A5B FFFD FFFD - FFFD FFFD 4D47 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5D31 FFFD 582F - 6323 FFFD FFFD 4E6F FFFD FFFD 7273 FFFD - FFFD FFFD FFFD 7833 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 604E FFFD - 757D FFFD FFFD FFFD FFFD 6B6C FFFD FFFD - 5345 7C6C 525B 546B FFFD 5E22 FFFD FFFD - FFFD 6566 FFFD FFFD FFFD FFFD FFFD FFFD - 7030 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5544 FFFD FFFD FFFD FFFD - FFFD FFFD 6D74 FFFD FFFD FFFD 636D FFFD - 6842 FFFD 6D75 577C FFFD 6D3B FFFD FFFD - 762B FFFD FFFD FFFD FFFD FFFD 7238 7648 - FFFD FFFD FFFD FFFD FFFD 5366 725D 4F3F - FFFD 6B2C FFFD FFFD FFFD FFFD FFFD FFFD - 4F40 FFFD 6628 7D69 FFFD 4F41 FFFD 605F - 5E6C FFFD FFFD FFFD FFFD 6022 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 743F 626F - FFFD 5971 7147 FFFD 4B38 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 797E 5B3A 5A75 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 766C 5A5C 7A64 FFFD 604F FFFD FFFD FFFD - FFFD FFFD FFFD 5D32 FFFD FFFD FFFD FFFD - 6629 FFFD 6F73 -End of Item 0124 - -Begin of Item 0125 - Format 1 - srcBegin = 8259 - srcEnd = 827E - mappingOffset = 28FB - Mapping = - 736D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6B7A FFFD 7966 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4A5D 555E FFFD - 4A5E 5F64 FFFD FFFD FFFD 667D FFFD 752C - FFFD FFFD FFFD FFFD FFFD 6475 -End of Item 0125 - -Begin of Item 0126 - Format 1 - srcBegin = 828B - srcEnd = 82BF - mappingOffset = 2921 - Mapping = - 6963 FFFD 6D4B 4F64 FFFD FFFD FFFD 5853 - FFFD FFFD FFFD FFFD FFFD FFFD 5D33 546C - FFFD FFFD 7239 FFFD 5F37 FFFD FFFD FFFD - FFFD FFFD 4B4E 7B58 FFFD FFFD 5059 FFFD - FFFD 5D52 7774 675C 6425 FFFD 7C23 FFFD - 5B3B FFFD FFFD FFFD 723A 697D 504A FFFD - 7556 5945 6434 FFFD 6D27 -End of Item 0126 - -Begin of Item 0127 - Format 1 - srcBegin = 82D1 - srcEnd = 82F1 - mappingOffset = 2956 - Mapping = - 6A3D 667E FFFD 7744 752D FFFD 5960 FFFD - FFFD FFFD 4A34 FFFD FFFD 7862 4F42 FFFD - 6C3E FFFD FFFD FFFD 6534 4D48 6E48 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6748 -End of Item 0127 - -Begin of Item 0128 - Format 1 - srcBegin = 82FD - srcEnd = 8309 - mappingOffset = 2977 - Mapping = - 4D49 7937 FFFD FFFD 7168 5972 5B75 4A35 - 5946 FFFD FFFD FFFD 5849 -End of Item 0128 - -Begin of Item 0129 - Format 2 - srcBegin = 8317 - destBegin = 592B -End of Item 0129 - -Begin of Item 012A - Format 1 - srcBegin = 8328 - srcEnd = 8352 - mappingOffset = 2984 - Mapping = - 6D3C FFFD FFFD 5854 FFFD FFFD FFFD 5C5A - FFFD 623C FFFD FFFD 7C6D 6C60 527E FFFD - 6947 662A FFFD FFFD FFFD FFFD FFFD FFFD - 6270 FFFD FFFD FFFD FFFD FFFD FFFD 7A3B - FFFD 752E 7B2A FFFD FFFD FFFD FFFD 6C7B - FFFD 6C3F 7C58 -End of Item 012A - -Begin of Item 012B - Format 1 - srcBegin = 8373 - srcEnd = 837B - mappingOffset = 29AF - Mapping = - 5465 FFFD FFFD FFFD 7943 FFFD FFFD FFFD - 6E62 -End of Item 012B - -Begin of Item 012C - Format 1 - srcBegin = 8389 - srcEnd = 83AB - mappingOffset = 29B8 - Mapping = - 5769 6D76 FFFD FFFD FFFD 5E6D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4C6C FFFD 636E - FFFD FFFD FFFD FFFD FFFD 6854 FFFD FFFD - FFFD 7A78 FFFD FFFD FFFD FFFD FFFD FFFD - 5D34 6435 5830 -End of Item 012C - -Begin of Item 012D - Format 1 - srcBegin = 83BD - srcEnd = 83DC - mappingOffset = 29DB - Mapping = - 5855 FFFD FFFD FFFD 746A FFFD FFFD FFFD - 4E39 FFFD FFFD FFFD 5661 4F52 FFFD 5036 - FFFD FFFD FFFD FFFD FFFD FFFD 4E22 FFFD - FFFD 736E FFFD FFFD FFFD FFFD FFFD 7378 -End of Item 012D - -Begin of Item 012E - Format 1 - srcBegin = 83E9 - srcEnd = 840E - mappingOffset = 29FB - Mapping = - 5C4C FFFD 504B FFFD FFFD FFFD 7C24 4D4A - 5754 5E23 FFFD 6460 FFFD FFFD FFFD FFFD - 6E49 FFFD FFFD FFFD 625D FFFD FFFD FFFD - FFFD FFFD 757E 542C FFFD FFFD FFFD FFFD - FFFD 5551 FFFD 5870 7843 6A57 -End of Item 012E - -Begin of Item 012F - Format 1 - srcBegin = 8429 - srcEnd = 843D - mappingOffset = 2A21 - Mapping = - 7557 FFFD FFFD 583F FFFD FFFD FFFD FFFD - 7D40 FFFD FFFD FFFD FFFD FFFD FFFD 6B2D - FFFD FFFD FFFD FFFD 552A -End of Item 012F - -Begin of Item 0130 - Format 2 - srcBegin = 8449 - destBegin = 6728 -End of Item 0130 - -Begin of Item 0131 - Format 1 - srcBegin = 8457 - srcEnd = 847A - mappingOffset = 2A36 - Mapping = - 6E4A FFFD FFFD FFFD 4A67 FFFD FFFD FFFD - FFFD FFFD 7863 FFFD 545D FFFD FFFD 6A58 - FFFD FFFD FFFD FFFD 7B59 6D77 FFFD FFFD - 6535 FFFD FFFD FFFD FFFD FFFD 502D FFFD - FFFD FFFD FFFD 7171 -End of Item 0131 - -Begin of Item 0132 - Format 1 - srcBegin = 8490 - srcEnd = 84A1 - mappingOffset = 2A5A - Mapping = - 623D FFFD FFFD FFFD 6348 FFFD FFFD FFFD - FFFD 5955 FFFD FFFD 5F2A FFFD FFFD FFFD - FFFD 5B3C -End of Item 0132 - -Begin of Item 0133 - Format 1 - srcBegin = 84B2 - srcEnd = 84DA - mappingOffset = 2A6C - Mapping = - 7864 FFFD FFFD FFFD FFFD FFFD 717A FFFD - FFFD 6536 736F FFFD FFFD 7B5A 6160 FFFD - 592C FFFD 756B FFFD 6036 FFFD FFFD 6948 - FFFD 4B4F FFFD 6349 FFFD FFFD FFFD 5E6E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 623E -End of Item 0133 - -Begin of Item 0134 - Format 1 - srcBegin = 84EC - srcEnd = 84FC - mappingOffset = 2A95 - Mapping = - 5C6F FFFD 5625 FFFD FFFD FFFD FFFD FFFD - 6271 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 567E -End of Item 0134 - -Begin of Item 0135 - Format 1 - srcBegin = 8511 - srcEnd = 852F - mappingOffset = 2AA6 - Mapping = - 5921 FFFD 5840 5C5B FFFD FFFD 6D3D 5F38 - FFFD 6A25 FFFD FFFD FFFD 572D FFFD FFFD - 7379 FFFD 6D78 FFFD 7547 FFFD FFFD FFFD - FFFD FFFD FFFD 614A 6B63 FFFD 725E -End of Item 0135 - -Begin of Item 0136 - Format 1 - srcBegin = 853D - srcEnd = 856D - mappingOffset = 2AC5 - Mapping = - 784C FFFD 6A59 FFFD 5346 FFFD 5B66 FFFD - FFFD FFFD FFFD FFFD 752F FFFD FFFD FFFD - FFFD 4E70 FFFD FFFD FFFD FFFD 697E FFFD - FFFD FFFD FFFD FFFD 7B36 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6272 FFFD - FFFD FFFD FFFD 4F72 7739 5973 FFFD FFFD - 614B -End of Item 0136 - -Begin of Item 0137 - Format 1 - srcBegin = 8584 - srcEnd = 85EA - mappingOffset = 2AF6 - Mapping = - 5A5D FFFD FFFD 5A39 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6B7B FFFD 4B39 FFFD FFFD - 6D79 FFFD FFFD FFFD FFFD FFFD FFFD 6060 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7440 FFFD 7D3C 5F31 636F FFFD - FFFD FFFD FFFD 6023 7D39 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7031 FFFD - FFFD FFFD FFFD FFFD FFFD 4D4B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6D3E FFFD FFFD - FFFD 5540 6370 6D7A FFFD FFFD FFFD FFFD - FFFD 6964 FFFD FFFD FFFD FFFD FFFD FFFD - 556D 675D FFFD FFFD FFFD FFFD FFFD FFFD - 5476 6537 FFFD FFFD FFFD 5B67 623F -End of Item 0137 - -Begin of Item 0138 - Format 1 - srcBegin = 85F7 - srcEnd = 860A - mappingOffset = 2B5D - Mapping = - 6E4B FFFD FFFD 5774 705D FFFD FFFD FFFD - 4E2B FFFD FFFD 675E FFFD FFFD FFFD 5656 - 614C FFFD FFFD 6833 -End of Item 0138 - -Begin of Item 0139 - Format 1 - srcBegin = 8616 - srcEnd = 861A - mappingOffset = 2B71 - Mapping = - 656E 5C22 FFFD FFFD 6050 -End of Item 0139 - -Begin of Item 013A - Format 2 - srcBegin = 862D - destBegin = 5535 -End of Item 013A - -Begin of Item 013B - Format 2 - srcBegin = 863F - destBegin = 5521 -End of Item 013B - -Begin of Item 013C - Format 1 - srcBegin = 864E - srcEnd = 8667 - mappingOffset = 2B76 - Mapping = - 7B5B FFFD 794B FFFD FFFD FFFD 4B73 7425 - FFFD FFFD FFFD FFFD FFFD 7A48 5657 FFFD - 6965 7B5C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7D50 -End of Item 013C - -Begin of Item 013D - Format 2 - srcBegin = 8679 - destBegin = 7B76 -End of Item 013D - -Begin of Item 013E - Format 1 - srcBegin = 868A - srcEnd = 8693 - mappingOffset = 2B90 - Mapping = - 5A25 FFFD 5B3D FFFD FFFD FFFD FFFD FFFD - FFFD 6C62 -End of Item 013E - -Begin of Item 013F - Format 1 - srcBegin = 86A3 - srcEnd = 86A9 - mappingOffset = 2B9A - Mapping = - 4D77 705E FFFD FFFD FFFD FFFD 7649 -End of Item 013F - -Begin of Item 0140 - Format 1 - srcBegin = 86C7 - srcEnd = 86ED - mappingOffset = 2BA1 - Mapping = - 5E6F FFFD FFFD FFFD 5331 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7C6E FFFD FFFD - FFFD FFFD 6843 FFFD 7148 FFFD FFFD FFFD - 4E71 FFFD FFFD FFFD FFFD 796D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7274 -End of Item 0140 - -Begin of Item 0141 - Format 1 - srcBegin = 86FE - srcEnd = 8708 - mappingOffset = 2BC8 - Mapping = - 6436 FFFD 7539 FFFD 5C70 6371 FFFD FFFD - FFFD FFFD 6825 -End of Item 0141 - -Begin of Item 0142 - Format 1 - srcBegin = 8718 - srcEnd = 871C - mappingOffset = 2BD3 - Mapping = - 723B FFFD 5E24 FFFD 5A4C -End of Item 0142 - -Begin of Item 0143 - Format 1 - srcBegin = 874E - srcEnd = 8768 - mappingOffset = 2BD8 - Mapping = - 4A69 FFFD FFFD FFFD FFFD FFFD FFFD 635A - FFFD 7C59 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6A5A FFFD FFFD FFFD FFFD FFFD FFFD - 7944 FFFD 6324 -End of Item 0143 - -Begin of Item 0144 - Format 1 - srcBegin = 8774 - srcEnd = 878D - mappingOffset = 2BF3 - Mapping = - 7B5D FFFD 6F4A FFFD 6844 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 554C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6B57 -End of Item 0144 - -Begin of Item 0145 - Format 1 - srcBegin = 879F - srcEnd = 87A2 - mappingOffset = 2C0D - Mapping = - 592D FFFD FFFD 7B2B -End of Item 0145 - -Begin of Item 0146 - Format 1 - srcBegin = 87B3 - srcEnd = 87C4 - mappingOffset = 2C11 - Mapping = - 5359 FFFD FFFD FFFD FFFD FFFD FFFD 5522 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 765E -End of Item 0146 - -Begin of Item 0147 - Format 2 - srcBegin = 87E0 - destBegin = 5A76 -End of Item 0147 - -Begin of Item 0148 - Format 1 - srcBegin = 87EC - srcEnd = 8805 - mappingOffset = 2C23 - Mapping = - 6051 FFFD FFFD 6928 FFFD FFFD 7579 FFFD - FFFD FFFD FFFD FFFD FFFD 7A2F FFFD 6B7C - FFFD FFFD 606A FFFD FFFD FFFD FFFD FFFD - FFFD 6332 -End of Item 0148 - -Begin of Item 0149 - Format 1 - srcBegin = 881F - srcEnd = 8823 - mappingOffset = 2C3D - Mapping = - 5545 FFFD FFFD 7163 556E -End of Item 0149 - -Begin of Item 014A - Format 1 - srcBegin = 8831 - srcEnd = 889E - mappingOffset = 2C42 - Mapping = - 4D4C FFFD FFFD FFFD FFFD 6D59 FFFD FFFD - FFFD FFFD 5841 FFFD FFFD FFFD FFFD 7A6C - FFFD FFFD FFFD FFFD FFFD 716B FFFD FFFD - FFFD FFFD FFFD 7A3C 6662 FFFD FFFD FFFD - FFFD 7A65 627A FFFD FFFD FFFD 4A36 FFFD - 6437 FFFD 6A5B FFFD 757A FFFD FFFD FFFD - 7B2C 4F43 6B7D FFFD FFFD FFFD FFFD 787A - FFFD FFFD 5F39 FFFD FFFD FFFD FFFD 6171 - FFFD 5224 FFFD FFFD FFFD FFFD 757B FFFD - FFFD FFFD FFFD FFFD FFFD 505A 505B FFFD - 6A3E 5931 FFFD FFFD FFFD FFFD FFFD 4A37 - FFFD FFFD 5367 FFFD 7865 FFFD FFFD FFFD - FFFD 5332 FFFD FFFD FFFD 6240 725F FFFD - FFFD FFFD FFFD FFFD FFFD 4D65 -End of Item 014A - -Begin of Item 014B - Format 1 - srcBegin = 88AB - srcEnd = 88B4 - mappingOffset = 2CB0 - Mapping = - 792C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4D4D -End of Item 014B - -Begin of Item 014C - Format 1 - srcBegin = 88C1 - srcEnd = 88C2 - mappingOffset = 2CBA - Mapping = - 6E2E 562E -End of Item 014C - -Begin of Item 014D - Format 1 - srcBegin = 88CF - srcEnd = 8919 - mappingOffset = 2CBC - Mapping = - 576A FFFD FFFD FFFD FFFD 6760 6B2E FFFD - FFFD FFFD 4F59 FFFD FFFD 5C4D 6D7B FFFD - 5E70 FFFD 576B FFFD FFFD FFFD FFFD FFFD - FFFD 5E25 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5F57 5B50 5B51 FFFD - FFFD 5523 FFFD FFFD FFFD FFFD 7032 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5C5C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4A68 FFFD 7866 5C4E FFFD FFFD FFFD - FFFD 6A5C 5B52 -End of Item 014D - -Begin of Item 014E - Format 1 - srcBegin = 8925 - srcEnd = 892A - mappingOffset = 2D07 - Mapping = - 6933 FFFD FFFD FFFD FFFD 775B -End of Item 014E - -Begin of Item 014F - Format 1 - srcBegin = 8936 - srcEnd = 8944 - mappingOffset = 2D0D - Mapping = - 6328 FFFD 572E FFFD FFFD 6061 FFFD FFFD - FFFD FFFD FFFD 4B3A FFFD FFFD 6551 -End of Item 014F - -Begin of Item 0150 - Format 1 - srcBegin = 895F - srcEnd = 8972 - mappingOffset = 2D1C - Mapping = - 505C FFFD FFFD FFFD FFFD 5541 FFFD FFFD - FFFD FFFD FFFD 584A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6329 -End of Item 0150 - -Begin of Item 0151 - Format 1 - srcBegin = 897F - srcEnd = 89C0 - mappingOffset = 2D30 - Mapping = - 6024 FFFD 6929 FFFD 5347 FFFD FFFD 5C5D - 782E FFFD FFFD FFFD 4C38 FFFD FFFD FFFD - 502E FFFD FFFD FFFD 5872 FFFD FFFD 634A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4C2F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 542D 7651 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 504C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4A46 FFFD FFFD 5542 FFFD - FFFD 4E3A -End of Item 0151 - -Begin of Item 0152 - Format 2 - srcBegin = 89D2 - destBegin = 4A47 -End of Item 0152 - -Begin of Item 0153 - Format 2 - srcBegin = 89E3 - destBegin = 7A30 -End of Item 0153 - -Begin of Item 0154 - Format 1 - srcBegin = 89F4 - srcEnd = 8A3B - mappingOffset = 2D72 - Mapping = - 5F58 FFFD FFFD FFFD 753A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 656B FFFD 6F74 5D35 - FFFD FFFD FFFD FFFD 4D2A FFFD 6372 FFFD - 7B77 FFFD 7750 FFFD FFFD FFFD FFFD 7D3A - FFFD FFFD 7D61 767E 5140 FFFD FFFD 6845 - FFFD 6438 FFFD 6168 FFFD FFFD FFFD 4C41 - FFFD 526D FFFD FFFD FFFD FFFD 5B3E FFFD - FFFD 6062 FFFD FFFD FFFD 7A49 FFFD FFFD - 614D FFFD 4A38 FFFD FFFD FFFD 7260 7149 -End of Item 0154 - -Begin of Item 0155 - Format 1 - srcBegin = 8A50 - srcEnd = 8A79 - mappingOffset = 2DBA - Mapping = - 5E71 FFFD FFFD FFFD 705F 7844 FFFD FFFD - FFFD FFFD FFFD 6E4C FFFD FFFD 5E72 FFFD - 6749 FFFD 6273 6761 FFFD FFFD 634B FFFD - FFFD 634C FFFD FFFD FFFD 4F78 6F2C FFFD - 7D7E 7C25 7A31 5F59 FFFD 6052 FFFD FFFD - FFFD 745A -End of Item 0155 - -Begin of Item 0156 - Format 1 - srcBegin = 8A85 - srcEnd = 8B9A - mappingOffset = 2DE4 - Mapping = - 714A FFFD 4E23 FFFD FFFD FFFD FFFD 723C - 6C63 FFFD FFFD FFFD FFFD FFFD 6025 FFFD - 772B FFFD FFFD 6B2F FFFD FFFD FFFD FFFD - FFFD 655E FFFD 6124 4D2B FFFD 5974 6826 - 4D4E 6169 FFFD 7C6F FFFD 6063 FFFD FFFD - FFFD FFFD FFFD 6241 FFFD 4E24 FFFD FFFD - FFFD FFFD FFFD FFFD 5E26 FFFD FFFD 6B7E - FFFD 6B5D 7060 FFFD FFFD 745B FFFD 6274 - FFFD FFFD 5348 FFFD FFFD FFFD 746B FFFD - 6E35 FFFD 7558 FFFD FFFD 555F FFFD FFFD - FFFD 5665 FFFD FFFD FFFD FFFD 6B30 7463 - FFFD FFFD FFFD FFFD 634D FFFD FFFD FFFD - FFFD 7474 7A32 FFFD FFFD 6F75 4A5F FFFD - 6B31 6D3F FFFD FFFD 7D49 FFFD FFFD FFFD - FFFD 6426 7924 7033 FFFD 656C FFFD FFFD - FFFD 5167 FFFD 5947 6457 6A5D FFFD 5477 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5A3A FFFD 5A4D FFFD FFFD FFFD 794C - FFFD 615A 5B3F FFFD 4C45 6C50 4B3B FFFD - 5E73 FFFD FFFD 692A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5948 FFFD FFFD 6E63 573D - FFFD FFFD FFFD FFFD FFFD FFFD 4F44 FFFD - FFFD FFFD FFFD FFFD 504D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7C26 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 717B FFFD FFFD FFFD - FFFD 7D52 5141 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 635B FFFD 5349 FFFD 5C4F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4C6D FFFD FFFD FFFD FFFD FFFD 5E27 - FFFD FFFD 663B 6C21 FFFD FFFD FFFD 4C39 - FFFD FFFD 7B5E FFFD FFFD FFFD FFFD FFFD - 6762 FFFD FFFD 5441 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5C28 FFFD FFFD - FFFD FFFD FFFD 6242 FFFD 7358 6553 FFFD - FFFD 7359 FFFD FFFD FFFD 7346 -End of Item 0156 - -Begin of Item 0157 - Format 1 - srcBegin = 8C37 - srcEnd = 8C6B - mappingOffset = 2EFA - Mapping = - 4D5B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4D2C FFFD 7C43 FFFD FFFD FFFD FFFD 5467 - FFFD 5142 FFFD 7925 FFFD 6855 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 634E FFFD - FFFD FFFD FFFD 544A FFFD FFFD FFFD FFFD - FFFD FFFD 5F5A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7B5F 6763 -End of Item 0157 - -Begin of Item 0158 - Format 1 - srcBegin = 8C79 - srcEnd = 8C8C - mappingOffset = 2F2F - Mapping = - 787B 634F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7530 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5867 FFFD 5949 -End of Item 0158 - -Begin of Item 0159 - Format 1 - srcBegin = 8C9D - srcEnd = 8D16 - mappingOffset = 2F43 - Mapping = - 782F 6F76 FFFD 5D36 6E2F 4D78 FFFD FFFD - FFFD FFFD 5E38 7C27 777C 7731 4E3B 7421 - FFFD FFFD 6E4D 612E FFFD FFFD 6C43 4F7E - FFFD 783F 5862 5368 FFFD FFFD 5E28 7464 - 6C42 FFFD 5975 7945 5D53 5671 6C7C 7C70 - FFFD FFFD 6D40 4A39 FFFD 6E64 FFFD FFFD - FFFD FFFD FFFD FFFD 7261 FFFD 5E39 FFFD - FFFD FFFD FFFD FFFD FFFD 5672 FFFD 5E74 - FFFD 5F5B FFFD 5B53 FFFD 7A67 5863 7441 - FFFD 5D37 FFFD FFFD FFFD 7275 FFFD FFFD - 542E FFFD FFFD FFFD FFFD FFFD FFFD 5673 - FFFD FFFD FFFD FFFD FFFD FFFD 5D38 4F45 - 5F5F FFFD FFFD FFFD FFFD FFFD FFFD 723E - 7621 FFFD 6B4B 717C FFFD 7347 FFFD FFFD - 606B FFFD FFFD FFFD FFFD FFFD 6D7C FFFD - FFFD 615B -End of Item 0159 - -Begin of Item 015A - Format 1 - srcBegin = 8D64 - srcEnd = 8D77 - mappingOffset = 2FBD - Mapping = - 6E65 FFFD 5E75 FFFD FFFD FFFD FFFD 7A53 - FFFD FFFD FFFD FFFD 714B FFFD FFFD 502F - 5D39 FFFD FFFD 5143 -End of Item 015A - -Begin of Item 015B - Format 1 - srcBegin = 8D85 - srcEnd = 8D8A - mappingOffset = 2FD1 - Mapping = - 7531 FFFD FFFD FFFD FFFD 6A46 -End of Item 015B - -Begin of Item 015C - Format 1 - srcBegin = 8D99 - srcEnd = 8DCF - mappingOffset = 2FD7 - Mapping = - 7061 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 762C FFFD FFFD FFFD FFFD 7559 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 706B FFFD FFFD FFFD FFFD FFFD - FFFD 5D3A FFFD FFFD FFFD 723F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7745 FFFD FFFD - FFFD FFFD 5B22 7276 FFFD FFFD 4A3A -End of Item 015C - -Begin of Item 015D - Format 1 - srcBegin = 8DDB - srcEnd = 8DF3 - mappingOffset = 300E - Mapping = - 7775 FFFD 4B65 FFFD FFFD FFFD 6E66 FFFD - 6053 FFFD FFFD FFFD FFFD 4E25 FFFD FFFD - FFFD FFFD FFFD FFFD 5658 FFFD FFFD FFFD - 542F -End of Item 015D - -Begin of Item 015E - Format 1 - srcBegin = 8E0A - srcEnd = 8E10 - mappingOffset = 3027 - Mapping = - 6949 FFFD FFFD FFFD FFFD 534E 7442 -End of Item 015E - -Begin of Item 015F - Format 2 - srcBegin = 8E1E - destBegin = 4B66 -End of Item 015F - -Begin of Item 0160 - Format 1 - srcBegin = 8E2A - srcEnd = 8E35 - mappingOffset = 302E - Mapping = - 7121 FFFD FFFD FFFD FFFD FFFD 6B32 FFFD - FFFD FFFD FFFD 7122 -End of Item 0160 - -Begin of Item 0161 - Format 1 - srcBegin = 8E42 - srcEnd = 8E4A - mappingOffset = 303A - Mapping = - 6B33 FFFD 7034 FFFD FFFD 4B74 5430 7332 - 7B37 -End of Item 0161 - -Begin of Item 0162 - Format 1 - srcBegin = 8E59 - srcEnd = 8E60 - mappingOffset = 3043 - Mapping = - 756C FFFD FFFD FFFD FFFD FFFD 6E67 7432 -End of Item 0162 - -Begin of Item 0163 - Format 1 - srcBegin = 8E74 - srcEnd = 8E8D - mappingOffset = 304B - Mapping = - 756D FFFD 4F73 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7062 FFFD FFFD - FFFD FFFD FFFD 6E4E FFFD FFFD 714C FFFD - FFFD 6538 -End of Item 0163 - -Begin of Item 0164 - Format 1 - srcBegin = 8EAA - srcEnd = 8EAC - mappingOffset = 3065 - Mapping = - 5775 6373 4F65 -End of Item 0164 - -Begin of Item 0165 - Format 1 - srcBegin = 8EC0 - srcEnd = 8ED2 - mappingOffset = 3068 - Mapping = - 4F46 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7333 6458 4F79 4F5A FFFD FFFD - FFFD FFFD 7A4D -End of Item 0165 - -Begin of Item 0166 - Format 2 - srcBegin = 8EDF - destBegin = 6663 -End of Item 0166 - -Begin of Item 0167 - Format 2 - srcBegin = 8EEB - destBegin = 7262 -End of Item 0167 - -Begin of Item 0168 - Format 1 - srcBegin = 8EF8 - srcEnd = 8F4E - mappingOffset = 307B - Mapping = - 756E FFFD FFFD 4A3B FFFD FFFD 635C FFFD - FFFD FFFD FFFD 4E72 FFFD 5659 FFFD FFFD - FFFD 6E30 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7465 5842 5C50 4C6E FFFD FFFD - FFFD FFFD FFFD 5560 764A 7D4A 5856 744F - FFFD FFFD FFFD FFFD FFFD FFFD 5626 5C3E - FFFD 5B54 5747 FFFD FFFD FFFD FFFD 727E - FFFD FFFD FFFD 714D FFFD FFFD FFFD FFFD - 6243 5C5E FFFD 5C5F FFFD FFFD 6F2D 662B - FFFD FFFD FFFD FFFD 795D 6A3F FFFD FFFD - FFFD 6F2E FFFD FFFD FFFD 7450 4E73 -End of Item 0168 - -Begin of Item 0169 - Format 1 - srcBegin = 8F5D - srcEnd = 8F62 - mappingOffset = 30D2 - Mapping = - 662C FFFD 4E5E FFFD FFFD 5579 -End of Item 0169 - -Begin of Item 016A - Format 1 - srcBegin = 8F9B - srcEnd = 8FB2 - mappingOffset = 30D8 - Mapping = - 6374 4D50 FFFD FFFD FFFD FFFD FFFD FFFD - 5538 FFFD FFFD 777D FFFD 5C29 FFFD FFFD - FFFD FFFD 5E76 FFFD 5C2A 7263 6934 525C -End of Item 016A - -Begin of Item 016B - Format 1 - srcBegin = 8FC2 - srcEnd = 8FD4 - mappingOffset = 30F0 - Mapping = - 6966 FFFD FFFD 6376 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 674A FFFD FFFD 504E - FFFD FFFD 5A77 -End of Item 016B - -Begin of Item 016C - Format 1 - srcBegin = 8FE6 - srcEnd = 90CA - mappingOffset = 3103 - Mapping = - 4A3C FFFD FFFD FFFD 6E68 5A5E FFFD 7277 - FFFD FFFD 627B FFFD 4C26 FFFD FFFD FFFD - FFFD 5A3B FFFD 6E69 FFFD FFFD FFFD 755A - FFFD FFFD 775C 616A 4E41 5431 FFFD 7D31 - 663D FFFD 7B2D FFFD FFFD 7867 FFFD 614E - FFFD 7762 756F 4F47 FFFD FFFD 5432 4C6F - FFFD 5468 FFFD 6E4F 7757 FFFD FFFD 6026 - 5641 615C 7063 7164 5C71 5627 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7475 FFFD FFFD 714E 7264 FFFD FFFD 5030 - FFFD FFFD 6C6F FFFD FFFD FFFD 793A FFFD - 6B35 FFFD FFFD 546D 6244 FFFD FFFD FFFD - FFFD 6967 FFFD FFFD 6B34 6A21 FFFD 783C - 4E26 FFFD 7946 7C5A FFFD 5433 5339 6A5E - FFFD FFFD FFFD 692B FFFD FFFD 6161 534F - 7476 FFFD 6A40 614F FFFD 4C3A FFFD FFFD - FFFD FFFD FFFD 6E6A FFFD FFFD FFFD 7064 - 7334 546E FFFD FFFD 7240 FFFD FFFD 7165 - FFFD 7443 6054 FFFD 6B36 FFFD 5721 4B68 - FFFD 792D 692D 5864 7A33 6245 7C3D FFFD - FFFD 6C44 5831 FFFD 5C2B FFFD FFFD FFFD - FFFD 5524 FFFD 6B69 FFFD FFFD FFFD 683B - FFFD FFFD FFFD 5857 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7B2E 5161 FFFD FFFD - 5B40 FFFD 753E FFFD 5E77 FFFD FFFD FFFD - FFFD 4A7B 7746 4F48 FFFD FFFD FFFD 6150 - FFFD FFFD 6E50 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6974 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4E74 -End of Item 016C - -Begin of Item 016D - Format 1 - srcBegin = 90DE - srcEnd = 9102 - mappingOffset = 31E8 - Mapping = - 554D FFFD FFFD 4F5B FFFD FFFD FFFD FFFD - FFFD FFFD 5D3B FFFD FFFD FFFD FFFD 4E2C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6968 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5434 - FFFD FFFD FFFD FFFD 6447 -End of Item 016D - -Begin of Item 016E - Format 1 - srcBegin = 9112 - srcEnd = 9119 - mappingOffset = 320D - Mapping = - 755B FFFD FFFD 7A41 FFFD FFFD FFFD 5E29 -End of Item 016E - -Begin of Item 016F - Format 1 - srcBegin = 9127 - srcEnd = 9132 - mappingOffset = 3215 - Mapping = - 5478 FFFD FFFD FFFD FFFD FFFD 6F77 FFFD - FFFD FFFD FFFD 5333 -End of Item 016F - -Begin of Item 0170 - Format 1 - srcBegin = 9149 - srcEnd = 9152 - mappingOffset = 3221 - Mapping = - 6B37 6F78 755C 6D4C 5B55 714F FFFD FFFD - FFFD 7150 -End of Item 0170 - -Begin of Item 0171 - Format 1 - srcBegin = 9162 - srcEnd = 9178 - mappingOffset = 322B - Mapping = - 7532 FFFD FFFD FFFD FFFD FFFD FFFD 592E - 552C FFFD 6246 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7D23 FFFD 7B65 5F2B -End of Item 0171 - -Begin of Item 0172 - Format 1 - srcBegin = 9187 - srcEnd = 919C - mappingOffset = 3242 - Mapping = - 6275 FFFD 762D FFFD 7533 FFFD 7035 FFFD - FFFD FFFD FFFD 6125 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 755D -End of Item 0172 - -Begin of Item 0173 - Format 1 - srcBegin = 91AB - srcEnd = 91F5 - mappingOffset = 3258 - Mapping = - 6C22 6D7D FFFD 7534 7B38 FFFD 5B23 FFFD - FFFD 564A 4B59 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6554 FFFD FFFD - FFFD FFFD FFFD FFFD 737A FFFD 6B38 FFFD - 6037 576C 716C 652F 5561 576D 5151 FFFD - FFFD FFFD FFFD FFFD 6172 6F79 FFFD FFFD - FFFD 5D3C 765C FFFD FFFD FFFD FFFD FFFD - 7065 FFFD FFFD FFFD 7444 FFFD FFFD 6969 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 737B -End of Item 0173 - -Begin of Item 0174 - Format 1 - srcBegin = 920D - srcEnd = 921E - mappingOffset = 32A3 - Mapping = - 546F FFFD FFFD 4C22 777E 5F3C FFFD FFFD - FFFD FFFD 6B4D FFFD FFFD FFFD FFFD FFFD - FFFD 5037 -End of Item 0174 - -Begin of Item 0175 - Format 1 - srcBegin = 9234 - srcEnd = 9249 - mappingOffset = 32B5 - Mapping = - 5642 FFFD FFFD FFFD FFFD FFFD 682D FFFD - FFFD FFFD FFFD 6F2F 4B25 FFFD FFFD FFFD - FFFD 4B69 FFFD FFFD FFFD 7A68 -End of Item 0175 - -Begin of Item 0176 - Format 1 - srcBegin = 9257 - srcEnd = 9266 - mappingOffset = 32CB - Mapping = - 4C46 FFFD FFFD FFFD 6667 FFFD FFFD 6A47 - FFFD FFFD FFFD 5B24 FFFD 4F49 627C 6F7A -End of Item 0176 - -Begin of Item 0177 - Format 1 - srcBegin = 9280 - srcEnd = 9285 - mappingOffset = 32DB - Mapping = - 6B5E FFFD FFFD 7548 FFFD 545E -End of Item 0177 - -Begin of Item 0178 - Format 1 - srcBegin = 9291 - srcEnd = 929C - mappingOffset = 32E1 - Mapping = - 6055 FFFD 6F30 FFFD FFFD 6247 FFFD 592F - FFFD FFFD FFFD 7967 -End of Item 0178 - -Begin of Item 0179 - Format 1 - srcBegin = 92B3 - srcEnd = 92B9 - mappingOffset = 32ED - Mapping = - 6765 FFFD FFFD 4F4A 6151 FFFD 6248 -End of Item 0179 - -Begin of Item 017A - Format 1 - srcBegin = 92CC - srcEnd = 92D2 - mappingOffset = 32F4 - Mapping = - 6F7B FFFD FFFD 7A79 FFFD FFFD 5C72 -End of Item 017A - -Begin of Item 017B - Format 1 - srcBegin = 92E4 - srcEnd = 92EA - mappingOffset = 32FB - Mapping = - 6027 FFFD FFFD FFFD FFFD FFFD 7868 -End of Item 017B - -Begin of Item 017C - Format 1 - srcBegin = 92F8 - srcEnd = 9304 - mappingOffset = 3302 - Mapping = - 4B6A FFFD FFFD FFFD 4B3C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5662 -End of Item 017C - -Begin of Item 017D - Format 1 - srcBegin = 9310 - srcEnd = 932F - mappingOffset = 330F - Mapping = - 755E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 755F FFFD 6E36 FFFD FFFD FFFD 6276 534A - 6F7C 5144 6F31 FFFD 5145 FFFD 505E FFFD - 5961 FFFD FFFD 6038 FFFD FFFD 4D51 7339 -End of Item 017D - -Begin of Item 017E - Format 1 - srcBegin = 9348 - srcEnd = 935B - mappingOffset = 332F - Mapping = - 674C FFFD 5628 4E27 FFFD 5435 FFFD FFFD - FFFD FFFD FFFD FFFD 6448 FFFD FFFD FFFD - FFFD FFFD FFFD 5334 -End of Item 017E - -Begin of Item 017F - Format 1 - srcBegin = 936E - srcEnd = 937E - mappingOffset = 3343 - Mapping = - 6B39 FFFD FFFD FFFD FFFD FFFD FFFD 4B75 - FFFD FFFD FFFD FFFD FFFD FFFD 765D FFFD - 7123 -End of Item 017F - -Begin of Item 0180 - Format 1 - srcBegin = 938C - srcEnd = 93B0 - mappingOffset = 3354 - Mapping = - 4C47 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 694A FFFD 6170 FFFD FFFD FFFD 7560 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7B2F - FFFD FFFD FFFD 4B51 FFFD FFFD FFFD FFFD - 7B60 7265 FFFD FFFD 6C70 -End of Item 0180 - -Begin of Item 0181 - Format 2 - srcBegin = 93C3 - destBegin = 706C -End of Item 0181 - -Begin of Item 0182 - Format 2 - srcBegin = 93D1 - destBegin = 6E6B -End of Item 0182 - -Begin of Item 0183 - Format 1 - srcBegin = 93DE - srcEnd = 93E4 - mappingOffset = 3379 - Mapping = - 694B FFFD FFFD 4C70 FFFD FFFD 572F -End of Item 0183 - -Begin of Item 0184 - Format 2 - srcBegin = 93F6 - destBegin = 7321 -End of Item 0184 - -Begin of Item 0185 - Format 2 - srcBegin = 9404 - destBegin = 7C75 -End of Item 0185 - -Begin of Item 0186 - Format 2 - srcBegin = 9418 - destBegin = 7124 -End of Item 0186 - -Begin of Item 0187 - Format 1 - srcBegin = 9425 - srcEnd = 9438 - mappingOffset = 3380 - Mapping = - 6056 FFFD FFFD FFFD FFFD FFFD 6F32 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7451 FFFD FFFD 7721 -End of Item 0187 - -Begin of Item 0188 - Format 2 - srcBegin = 9444 - destBegin = 7151 -End of Item 0188 - -Begin of Item 0189 - Format 1 - srcBegin = 9451 - srcEnd = 945B - mappingOffset = 3394 - Mapping = - 4A7C 4A7D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4E4E -End of Item 0189 - -Begin of Item 018A - Format 1 - srcBegin = 947D - srcEnd = 947F - mappingOffset = 339F - Mapping = - 7348 FFFD 733A -End of Item 018A - -Begin of Item 018B - Format 1 - srcBegin = 9577 - srcEnd = 95E2 - mappingOffset = 33A2 - Mapping = - 6D7E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5A26 FFFD FFFD 606C FFFD FFFD FFFD - FFFD FFFD 784D FFFD 4B52 FFFD FFFD FFFD - 6B4E FFFD 7958 7959 4A60 5A4A FFFD FFFD - FFFD 4B26 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 4A48 796E 5B6C FFFD - FFFD 5031 FFFD FFFD FFFD FFFD 556F FFFD - FFFD FFFD 6673 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6722 6459 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6461 FFFD FFFD 7C44 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 796F 4F74 7766 - FFFD FFFD FFFD FFFD FFFD 4E3C FFFD FFFD - FFFD FFFD 7445 5C23 -End of Item 018B - -Begin of Item 018C - Format 1 - srcBegin = 961C - srcEnd = 977A - mappingOffset = 340E - Mapping = - 5D3D FFFD FFFD FFFD FFFD 7446 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7821 FFFD - FFFD FFFD 6856 FFFD FFFD FFFD 5B41 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7066 - FFFD FFFD FFFD 6439 766D FFFD 792E FFFD - 5D3E FFFD FFFD FFFD FFFD FFFD FFFD 5730 - 5868 4B3D FFFD FFFD 795A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 784E - 7970 606D 6333 7433 FFFD FFFD 6A42 7266 - 7036 FFFD FFFD FFFD FFFD FFFD 5B56 FFFD - FFFD FFFD FFFD FFFD 6B64 FFFD FFFD 7267 - FFFD 5755 5436 7968 5741 FFFD FFFD FFFD - FFFD 6555 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 696A 574C FFFD FFFD FFFD 5369 6249 - FFFD 7C5B 4D2D FFFD FFFD FFFD FFFD FFFD - 4C30 6A22 FFFD FFFD 6476 5040 FFFD 7037 - 6E21 FFFD FFFD FFFD FFFD FFFD FFFD 5776 - FFFD FFFD FFFD 624A 624B FFFD 7A4F FFFD - FFFD FFFD FFFD FFFD FFFD 6B5F FFFD FFFD - FFFD FFFD FFFD 564B FFFD FFFD FFFD 7434 - FFFD FFFD FFFD FFFD 6D4D 6452 FFFD FFFD - 6A29 643A 7322 4D52 FFFD 764B FFFD 7166 - 6D41 683C 6E51 FFFD FFFD FFFD FFFD FFFD - FFFD 7067 624C FFFD FFFD 642A FFFD 7561 - 6D5A FFFD FFFD FFFD FFFD FFFD 576E 5171 - FFFD FFFD FFFD FFFD 696B 696C 6064 FFFD - FFFD FFFD FFFD 5A27 5D54 FFFD 6A23 FFFD - FFFD FFFD 5643 5674 FFFD 5A5F FFFD 6F33 - FFFD FFFD FFFD FFFD 624D FFFD FFFD FFFD - FFFD FFFD 6F7D 7268 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6F45 FFFD 6767 - FFFD FFFD 577D FFFD FFFD 674E FFFD FFFD - 5F5C FFFD 7947 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5976 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5F2C FFFD 565A FFFD - FFFD FFFD FFFD FFFD FFFD 5C24 FFFD FFFD - FFFD 7038 FFFD FFFD FFFD FFFD 557A FFFD - 6477 FFFD FFFD FFFD 5644 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 746C FFFD FFFD - FFFD FFFD 6F7E FFFD FFFD FFFD FFFD FFFD - 7021 FFFD 5E2A FFFD FFFD 5A3C 587C FFFD - FFFD FFFD FFFD FFFD FFFD 7A54 FFFD FFFD - FFFD 6C65 FFFD FFFD FFFD FFFD FFFD FFFD - 7C28 FFFD FFFD 6C66 FFFD FFFD 584B -End of Item 018C - -Begin of Item 018D - Format 1 - srcBegin = 978B - srcEnd = 978F - mappingOffset = 356D - Mapping = - 7B39 FFFD 6453 FFFD 4D79 -End of Item 018D - -Begin of Item 018E - Format 1 - srcBegin = 97A0 - srcEnd = 97AD - mappingOffset = 3572 - Mapping = - 4F53 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 4A6A FFFD FFFD 4F54 FFFD 783D -End of Item 018E - -Begin of Item 018F - Format 1 - srcBegin = 97C6 - srcEnd = 97DC - mappingOffset = 3580 - Mapping = - 7447 FFFD FFFD FFFD FFFD 6A5F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 795B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5437 -End of Item 018F - -Begin of Item 0190 - Format 1 - srcBegin = 97F3 - srcEnd = 9818 - mappingOffset = 3597 - Mapping = - 6B65 FFFD FFFD 6152 FFFD FFFD FFFD FFFD - 6A24 FFFD FFFD FFFD 7A42 7B61 7A6D 7022 - 4C71 FFFD 7A23 6277 FFFD 624E FFFD 6975 - FFFD 616B FFFD FFFD FFFD 6768 6857 5A78 - 544B FFFD FFFD FFFD 7776 5645 -End of Item 0190 - -Begin of Item 0191 - Format 1 - srcBegin = 982D - srcEnd = 986F - mappingOffset = 35BD - Mapping = - 5469 FFFD FFFD 7A7A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 4C72 775D FFFD 5E3A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4E28 FFFD FFFD FFFD FFFD FFFD 7039 - 647E 6449 FFFD FFFD FFFD FFFD FFFD 6454 - FFFD FFFD FFFD 6A43 FFFD 6F34 FFFD FFFD - FFFD 573E FFFD FFFD FFFD FFFD FFFD FFFD - 7B62 FFFD 4D53 FFFD FFFD FFFD 6F35 FFFD - FFFD FFFD 7A69 -End of Item 0191 - -Begin of Item 0192 - Format 1 - srcBegin = 98A8 - srcEnd = 98B1 - mappingOffset = 3600 - Mapping = - 7926 FFFD FFFD FFFD FFFD FFFD FFFD 5F3D - FFFD 7747 -End of Item 0192 - -Begin of Item 0193 - Format 1 - srcBegin = 98C4 - srcEnd = 98C7 - mappingOffset = 360A - Mapping = - 787D FFFD FFFD 787C -End of Item 0193 - -Begin of Item 0194 - Format 1 - srcBegin = 98DB - srcEnd = 9928 - mappingOffset = 360E - Mapping = - 5E2B 5B68 FFFD FFFD 635D FFFD 6162 5146 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7650 6B66 5A79 FFFD FFFD FFFD - FFFD 6C47 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5E78 7869 635E FFFD FFFD FFFD FFFD - 4E75 FFFD FFFD FFFD FFFD FFFD 7A43 6557 - FFFD 6C48 FFFD FFFD FFFD 7349 FFFD FFFD - 643B FFFD FFFD FFFD FFFD 662E FFFD FFFD - FFFD FFFD FFFD 6F36 FFFD 5C3F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 4E3D -End of Item 0194 - -Begin of Item 0195 - Format 1 - srcBegin = 9945 - srcEnd = 9957 - mappingOffset = 365C - Mapping = - 5843 FFFD FFFD FFFD 504F FFFD 4F7A 734A - 6057 FFFD FFFD FFFD 5147 692E FFFD 683D - FFFD FFFD 7A44 -End of Item 0195 - -Begin of Item 0196 - Format 1 - srcBegin = 9996 - srcEnd = 99C1 - mappingOffset = 366F - Mapping = - 624F FFFD FFFD 7A45 FFFD FFFD FFFD 7938 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5C60 - FFFD FFFD 7B30 FFFD FFFD FFFD 5829 655F - 7927 FFFD FFFD 766E FFFD 764C 6278 FFFD - FFFD FFFD FFFD 6C71 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5A60 -End of Item 0196 - -Begin of Item 0197 - Format 1 - srcBegin = 99D0 - srcEnd = 99DF - mappingOffset = 369B - Mapping = - 7152 524C 4F4B FFFD FFFD 4A3D FFFD FFFD - FFFD 5D3F FFFD FFFD FFFD 766F FFFD 5E79 -End of Item 0197 - -Begin of Item 0198 - Format 1 - srcBegin = 99ED - srcEnd = 99F1 - mappingOffset = 36AB - Mapping = - 7A34 FFFD FFFD FFFD 552D -End of Item 0198 - -Begin of Item 0199 - Format 1 - srcBegin = 99FF - srcEnd = 9A19 - mappingOffset = 36B0 - Mapping = - 7167 FFFD 5E3E FFFD FFFD FFFD FFFD FFFD - FFFD 5C40 FFFD FFFD FFFD FFFD FFFD 5148 - 5149 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 783E -End of Item 0199 - -Begin of Item 019A - Format 1 - srcBegin = 9A2B - srcEnd = 9A6A - mappingOffset = 36CB - Mapping = - 4B76 FFFD FFFD FFFD FFFD 5479 FFFD FFFD - FFFD FFFD FFFD 7562 6153 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5869 FFFD FFFD - 787E FFFD 4F4C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7D24 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 4E76 FFFD 7A50 FFFD FFFD 4C73 - 663E FFFD FFFD FFFD 762E FFFD FFFD 5570 - FFFD FFFD 514A FFFD FFFD FFFD 7C3E 5571 -End of Item 019A - -Begin of Item 019B - Format 2 - srcBegin = 9AA8 - destBegin = 4D69 -End of Item 019B - -Begin of Item 019C - Format 2 - srcBegin = 9AB8 - destBegin = 7A35 -End of Item 019C - -Begin of Item 019D - Format 1 - srcBegin = 9AD3 - srcEnd = 9AD8 - mappingOffset = 370B - Mapping = - 6250 7477 FFFD FFFD FFFD 4D54 -End of Item 019D - -Begin of Item 019E - Format 1 - srcBegin = 9AE5 - srcEnd = 9AEE - mappingOffset = 3711 - Mapping = - 6723 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5B25 -End of Item 019E - -Begin of Item 019F - Format 2 - srcBegin = 9B1A - destBegin = 6251 -End of Item 019F - -Begin of Item 01A0 - Format 1 - srcBegin = 9B27 - srcEnd = 9B5A - mappingOffset = 371B - Mapping = - 5722 FFFD FFFD 7763 FFFD FFFD FFFD FFFD - FFFD FFFD 6A26 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5021 FFFD FFFD - FFFD FFFD 4E5A 7B6B 5B26 5B5E 5865 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6A60 FFFD FFFD FFFD FFFD 582A FFFD FFFD - FFFD FFFD FFFD 6560 -End of Item 01A0 - -Begin of Item 01A1 - Format 2 - srcBegin = 9B6F - destBegin = 565B -End of Item 01A1 - -Begin of Item 01A2 - Format 1 - srcBegin = 9B8E - srcEnd = 9B91 - mappingOffset = 374F - Mapping = - 6F46 FFFD FFFD 786A -End of Item 01A2 - -Begin of Item 01A3 - Format 2 - srcBegin = 9B9F - destBegin = 6455 -End of Item 01A3 - -Begin of Item 01A4 - Format 1 - srcBegin = 9BAB - srcEnd = 9BAE - mappingOffset = 3753 - Mapping = - 4E77 FFFD FFFD 6058 -End of Item 01A4 - -Begin of Item 01A5 - Format 2 - srcBegin = 9BC9 - destBegin = 576F -End of Item 01A5 - -Begin of Item 01A6 - Format 2 - srcBegin = 9BD6 - destBegin = 746D -End of Item 01A6 - -Begin of Item 01A7 - Format 1 - srcBegin = 9BE4 - srcEnd = 9BE8 - mappingOffset = 3757 - Mapping = - 4D66 FFFD FFFD FFFD 4C74 -End of Item 01A7 - -Begin of Item 01A8 - Format 1 - srcBegin = 9C0D - srcEnd = 9C15 - mappingOffset = 375C - Mapping = - 7563 FFFD FFFD 644A FFFD 5C61 FFFD FFFD - 7948 -End of Item 01A8 - -Begin of Item 01A9 - Format 2 - srcBegin = 9C25 - destBegin = 7C3F -End of Item 01A9 - -Begin of Item 01AA - Format 1 - srcBegin = 9C32 - srcEnd = 9C3B - mappingOffset = 3765 - Mapping = - 6827 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5844 -End of Item 01AA - -Begin of Item 01AB - Format 1 - srcBegin = 9C47 - srcEnd = 9C49 - mappingOffset = 376F - Mapping = - 4B3E FFFD 5C2E -End of Item 01AB - -Begin of Item 01AC - Format 2 - srcBegin = 9C57 - destBegin = 5777 -End of Item 01AC - -Begin of Item 01AD - Format 1 - srcBegin = 9CE5 - srcEnd = 9CF6 - mappingOffset = 3772 - Mapping = - 7068 FFFD 5D40 FFFD 4F4D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5C73 5930 - FFFD 6669 -End of Item 01AD - -Begin of Item 01AE - Format 2 - srcBegin = 9D09 - destBegin = 643C -End of Item 01AE - -Begin of Item 01AF - Format 1 - srcBegin = 9D1B - srcEnd = 9D28 - mappingOffset = 3784 - Mapping = - 6A44 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 646C FFFD 6465 -End of Item 01AF - -Begin of Item 01B0 - Format 2 - srcBegin = 9D3B - destBegin = 7B78 -End of Item 01B0 - -Begin of Item 01B1 - Format 2 - srcBegin = 9D51 - destBegin = 4C3B -End of Item 01B1 - -Begin of Item 01B2 - Format 1 - srcBegin = 9D5D - srcEnd = 9D72 - mappingOffset = 3792 - Mapping = - 643D FFFD FFFD 4D5C 5977 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 5D5F - FFFD FFFD FFFD FFFD FFFD 6D4E -End of Item 01B2 - -Begin of Item 01B3 - Format 1 - srcBegin = 9DA9 - srcEnd = 9DB4 - mappingOffset = 37A8 - Mapping = - 5950 FFFD FFFD FFFD FFFD FFFD 6523 FFFD - FFFD FFFD FFFD 794D -End of Item 01B3 - -Begin of Item 01B4 - Format 2 - srcBegin = 9DC4 - destBegin = 4D2E -End of Item 01B4 - -Begin of Item 01B5 - Format 2 - srcBegin = 9DD7 - destBegin = 4F4E -End of Item 01B5 - -Begin of Item 01B6 - Format 1 - srcBegin = 9DF2 - srcEnd = 9DFA - mappingOffset = 37B4 - Mapping = - 762F FFFD FFFD FFFD FFFD FFFD 7D53 6B6D - 565C -End of Item 01B6 - -Begin of Item 01B7 - Format 1 - srcBegin = 9E1A - srcEnd = 9E1E - mappingOffset = 37BD - Mapping = - 6524 FFFD FFFD FFFD 5536 -End of Item 01B7 - -Begin of Item 01B8 - Format 1 - srcBegin = 9E75 - srcEnd = 9E7F - mappingOffset = 37C2 - Mapping = - 565D FFFD FFFD FFFD 7969 FFFD FFFD FFFD - 6724 FFFD 5663 -End of Item 01B8 - -Begin of Item 01B9 - Format 1 - srcBegin = 9E92 - srcEnd = 9EA5 - mappingOffset = 37CD - Mapping = - 514B 5664 FFFD FFFD FFFD 5572 FFFD FFFD - FFFD FFFD FFFD 5E7A FFFD 5778 FFFD FFFD - FFFD FFFD FFFD 586A -End of Item 01B9 - -Begin of Item 01BA - Format 1 - srcBegin = 9EB4 - srcEnd = 9EE8 - mappingOffset = 37E1 - Mapping = - 4F55 587D FFFD FFFD FFFD FFFD FFFD 582B - FFFD FFFD 7D4B FFFD FFFD FFFD FFFD 7C5C - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6028 5573 FFFD FFFD 7D59 FFFD FFFD - 4C23 FFFD FFFD FFFD 5979 FFFD FFFD 536A - 7575 FFFD 6F47 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 535A -End of Item 01BA - -Begin of Item 01BB - Format 2 - srcBegin = 9EF4 - destBegin = 5A3D -End of Item 01BB - -Begin of Item 01BC - Format 1 - srcBegin = 9F07 - srcEnd = 9F13 - mappingOffset = 3816 - Mapping = - 6828 5C2F FFFD FFFD FFFD FFFD FFFD 7023 - FFFD FFFD FFFD FFFD 4D55 -End of Item 01BC - -Begin of Item 01BD - Format 2 - srcBegin = 9F20 - destBegin = 6029 -End of Item 01BD - -Begin of Item 01BE - Format 2 - srcBegin = 9F3B - destBegin = 5E2C -End of Item 01BE - -Begin of Item 01BF - Format 1 - srcBegin = 9F4A - srcEnd = 9F52 - mappingOffset = 3823 - Mapping = - 703A 6E31 FFFD FFFD 6E32 FFFD FFFD FFFD - 764D -End of Item 01BF - -Begin of Item 01C0 - Format 1 - srcBegin = 9F5F - srcEnd = 9F77 - mappingOffset = 382C - Mapping = - 6E52 FFFD 5646 FFFD FFFD FFFD FFFD FFFD - 6065 FFFD FFFD 733B FFFD 6561 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 644B -End of Item 01C0 - -Begin of Item 01C1 - Format 1 - srcBegin = 9F8D - srcEnd = 9F9C - mappingOffset = 3845 - Mapping = - 5723 FFFD FFFD 5B42 FFFD FFFD FFFD FFFD - 4A7E FFFD FFFD FFFD FFFD FFFD FFFD 4F4F -End of Item 01C1 - -Begin of Item 01C2 - Format 1 - srcBegin = F900 - srcEnd = F932 - mappingOffset = 3855 - Mapping = - 4B50 4B56 4B67 4D4F 4D68 4E2D 4F7B 5022 - 5038 5050 505D 5154 5155 5158 FFFD FFFD - FFFD FFFD FFFD FFFD 5162 5163 5164 5165 - 5166 5168 5169 516A 516B 516D 516F 5170 - 5172 5176 517A 517C 517D 517E 5222 5223 - 5227 5228 5229 522A 522B 522D 5232 523E - 5242 5243 5244 -End of Item 01C2 - -Begin of Item 01C3 - Format 1 - srcBegin = F944 - srcEnd = F949 - mappingOffset = 3888 - Mapping = - 5259 525A 525E 525F 5261 5262 -End of Item 01C3 - -Begin of Item 01C4 - Format 1 - srcBegin = F958 - srcEnd = FA0B - mappingOffset = 388E - Mapping = - 5277 5278 5466 547C 5525 552B 552E 5638 - 564D 574B 5764 5B45 5B64 5C25 5D25 5D55 - 5D74 5E7C 5E7E 5F33 5F61 5F68 6071 612D - 616D 6375 6421 6429 652E 6531 6532 6539 - 653B 653C 6544 654E 6550 6552 6556 657A - 657B 657C 657E 6621 6624 6627 662D 662F - 6630 6631 6633 6637 6638 663C 6644 6646 - 6647 664A 6652 6656 6659 665C 665F 6661 - 6664 6665 6666 6668 666A 666B 666C 666F - 6671 6672 6675 6676 6677 6679 6721 6726 - 6729 672A 672C 672D 6730 673F 6741 6746 - 6747 674B 674D 674F 6750 6753 675F 6764 - 6766 6777 6867 6868 6870 6871 6877 6879 - 687B 687E 6927 692C 694C 6977 6A41 6A65 - 6A74 6A77 6A7C 6A7E 6B24 6B27 6B29 6B2A - 6B3A 6B3B 6B3D 6B41 6B42 6B46 6B47 6B4C - 6B4F 6B50 6B51 6B52 6B58 6C26 6C27 6C2A - 6C2F 6C30 6C31 6C32 6C35 6C38 6C3A 6C40 - 6C41 6C45 6C46 6C49 6C4A 6C55 6C5D 6C5E - 6C61 6C64 6C67 6C68 6C77 6C78 6C7A 6D21 - 6D22 6D23 6D6E 6E5B 723D 727A 7331 7427 - 746E 7674 7676 7738 7748 7753 785B 7870 - 7A21 7A22 7A66 7C29 -End of Item 01C4 - -Begin of Item 01C5 - Format 2 - srcBegin = FF3C - destBegin = 212C -End of Item 01C5 - -Begin of Item 01C6 - Format 2 - srcBegin = FF5E - destBegin = 212D -End of Item 01C6 - -Begin of Item 01C7 - Format 1 - srcBegin = FFE0 - srcEnd = FFE6 - mappingOffset = 3942 - Mapping = - 214B 214C 217E 237E FFFD 214D 235C -End of Item 01C7 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x01C8, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0077, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x05CF, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0038 */ -/* Total of Format 1 : 0x0152 */ -/* Total of Format 2 : 0x003E */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1121, 0x2212, -0x1111, 0x2111, 0x2211, 0x1121, 0x1111, 0x2221, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x2111, 0x1121, 0x1111, -0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1211, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x2111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x2111, -0x1111, 0x1111, 0x2112, 0x2111, 0x1111, 0x1221, 0x1121, 0x1111, -0x1111, 0x1111, 0x1121, 0x1111, 0x2111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1121, 0x1111, 0x1112, 0x1111, 0x2211, 0x1121, -0x1111, 0x2111, 0x1111, 0x1111, 0x2211, 0x1111, 0x1111, 0x2111, -0x1111, 0x2211, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1221, 0x1222, 0x1112, 0x1111, 0x1111, 0x1111, 0x2111, 0x2112, -0x2121, 0x1221, 0x1121, 0x1212, 0x1122, 0x1122, 0x2111, 0x1221, -0x1111, 0x1221, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0077 Start of MapCell Array */ -/* 0000 */ 0x0391, 0x03A1, 0x2541, -/* 0001 */ 0x03A3, 0x03A9, 0x2552, -/* 0002 */ 0x03B1, 0x03C1, 0x2561, -/* 0003 */ 0x03C3, 0x03C9, 0x2572, -/* 0004 */ 0x0410, 0x0415, 0x2C21, -/* 0005 */ 0x0416, 0x042F, 0x2C28, -/* 0006 */ 0x0430, 0x0435, 0x2C51, -/* 0007 */ 0x0436, 0x044F, 0x2C58, -/* 0008 */ 0x2160, 0x2169, 0x2530, -/* 0009 */ 0x2170, 0x2179, 0x2521, -/* 000A */ 0x2460, 0x246E, 0x2867, -/* 000B */ 0x2474, 0x2482, 0x2967, -/* 000C */ 0x249C, 0x24B5, 0x294D, -/* 000D */ 0x24D0, 0x24E9, 0x284D, -/* 000E */ 0x2543, 0x254A, 0x265D, -/* 000F */ 0x3008, 0x3011, 0x2134, -/* 0010 */ 0x3041, 0x3093, 0x2A21, -/* 0011 */ 0x30A1, 0x30F6, 0x2B21, -/* 0012 */ 0x3131, 0x318E, 0x2421, -/* 0013 */ 0x3200, 0x321B, 0x2931, -/* 0014 */ 0x3260, 0x327B, 0x2831, -/* 0015 */ 0x3399, 0x33A2, 0x272B, -/* 0016 */ 0x33B0, 0x33B9, 0x273F, -/* 0017 */ 0x33BA, 0x33BF, 0x274E, -/* 0018 */ 0x3400, 0x345D, 0x3021, -/* 0019 */ 0x345E, 0x34BB, 0x3121, -/* 001A */ 0x34BC, 0x3519, 0x3221, -/* 001B */ 0x351A, 0x3577, 0x3321, -/* 001C */ 0x3578, 0x35D5, 0x3421, -/* 001D */ 0x35D6, 0x3633, 0x3521, -/* 001E */ 0x3634, 0x3691, 0x3621, -/* 001F */ 0x3692, 0x36EF, 0x3721, -/* 0020 */ 0x36F0, 0x374D, 0x3821, -/* 0021 */ 0x374E, 0x37AB, 0x3921, -/* 0022 */ 0x37AC, 0x3809, 0x3A21, -/* 0023 */ 0x380A, 0x3867, 0x3B21, -/* 0024 */ 0x3868, 0x38C5, 0x3C21, -/* 0025 */ 0x38C6, 0x3923, 0x3D21, -/* 0026 */ 0x3924, 0x3981, 0x3E21, -/* 0027 */ 0x3982, 0x39DF, 0x3F21, -/* 0028 */ 0x39E0, 0x3A3D, 0x4021, -/* 0029 */ 0x3A3E, 0x3A9B, 0x4121, -/* 002A */ 0x3A9C, 0x3AF9, 0x4221, -/* 002B */ 0x3AFA, 0x3B57, 0x4321, -/* 002C */ 0x3B58, 0x3BB5, 0x4421, -/* 002D */ 0x3BB6, 0x3C13, 0x4521, -/* 002E */ 0x3C14, 0x3C71, 0x4621, -/* 002F */ 0x3C72, 0x3CCF, 0x4721, -/* 0030 */ 0x3CD0, 0x3D2D, 0x4821, -/* 0031 */ 0xF90E, 0xF913, 0x515B, -/* 0032 */ 0xF933, 0xF938, 0x5246, -/* 0033 */ 0xF939, 0xF943, 0x524D, -/* 0034 */ 0xF94A, 0xF951, 0x5264, -/* 0035 */ 0xF952, 0xF957, 0x5270, -/* 0036 */ 0xFF01, 0xFF3B, 0x2321, -/* 0037 */ 0xFF3D, 0xFF5D, 0x235D, -/* 0038 */ 0x00A1, 0x00FE, 0x0000, -/* 0039 */ 0x0111, 0x0000, 0x2922, -/* 003A */ 0x0126, 0x0153, 0x005E, -/* 003B */ 0x0166, 0x0167, 0x008C, -/* 003C */ 0x02C7, 0x0000, 0x2227, -/* 003D */ 0x02D8, 0x02DD, 0x008E, -/* 003E */ 0x0401, 0x0000, 0x2C27, -/* 003F */ 0x0451, 0x0000, 0x2C57, -/* 0040 */ 0x2013, 0x203B, 0x0094, -/* 0041 */ 0x2074, 0x2084, 0x00BD, -/* 0042 */ 0x2103, 0x212B, 0x00CE, -/* 0043 */ 0x2153, 0x215E, 0x00F7, -/* 0044 */ 0x2190, 0x2199, 0x0103, -/* 0045 */ 0x21D2, 0x21D4, 0x010D, -/* 0046 */ 0x2200, 0x223D, 0x0110, -/* 0047 */ 0x2252, 0x0000, 0x2156, -/* 0048 */ 0x2260, 0x2265, 0x014E, -/* 0049 */ 0x2282, 0x2287, 0x0154, -/* 004A */ 0x22A5, 0x0000, 0x2151, -/* 004B */ 0x2312, 0x0000, 0x2152, -/* 004C */ 0x2500, 0x254B, 0x015A, -/* 004D */ 0x2592, 0x0000, 0x2246, -/* 004E */ 0x25A0, 0x25D1, 0x01A6, -/* 004F */ 0x2605, 0x260F, 0x01D8, -/* 0050 */ 0x261C, 0x261E, 0x01E3, -/* 0051 */ 0x2640, 0x2642, 0x01E6, -/* 0052 */ 0x2660, 0x266D, 0x01E9, -/* 0053 */ 0x3000, 0x3003, 0x01F7, -/* 0054 */ 0x3013, 0x3015, 0x01FB, -/* 0055 */ 0x30FB, 0x0000, 0x2124, -/* 0056 */ 0x321C, 0x0000, 0x225F, -/* 0057 */ 0x327F, 0x0000, 0x225E, -/* 0058 */ 0x3380, 0x33AF, 0x01FE, -/* 0059 */ 0x33C0, 0x33DD, 0x022E, -/* 005A */ 0x4E00, 0x4E1E, 0x024C, -/* 005B */ 0x4E2D, 0x4E5F, 0x026B, -/* 005C */ 0x4E6B, 0x4F11, 0x029E, -/* 005D */ 0x4F2F, 0x4F5C, 0x0345, -/* 005E */ 0x4F69, 0x4F9D, 0x0373, -/* 005F */ 0x4FAE, 0x4FE1, 0x03A8, -/* 0060 */ 0x4FEE, 0x502D, 0x03DC, -/* 0061 */ 0x503B, 0x5065, 0x041C, -/* 0062 */ 0x5074, 0x5099, 0x0447, -/* 0063 */ 0x50AC, 0x50ED, 0x046D, -/* 0064 */ 0x50F9, 0x5112, 0x04AF, -/* 0065 */ 0x511F, 0x51CD, 0x04C9, -/* 0066 */ 0x51DC, 0x51E1, 0x0578, -/* 0067 */ 0x51F0, 0x52AB, 0x057E, -/* 0068 */ 0x52BE, 0x52E4, 0x063A, -/* 0069 */ 0x52F3, 0x5384, 0x0661, -/* 006A */ 0x5393, 0x53AD, 0x06F3, -/* 006B */ 0x53BB, 0x5451, 0x070E, -/* 006C */ 0x5468, 0x5490, 0x07A5, -/* 006D */ 0x54A4, 0x54C9, 0x07CE, -/* 006E */ 0x54E1, 0x5510, 0x07F4, -/* 006F */ 0x551C, 0x0000, 0x5845, -/* 0070 */ 0x552F, 0x5563, 0x0824, -/* 0071 */ 0x557C, 0x558A, 0x0859, -/* 0072 */ 0x5598, 0x55AE, 0x0868, -/* 0073 */ 0x55C5, 0x55C7, 0x087F, -/* 0074 */ 0x55D4, 0x55E4, 0x0882, -/* 0075 */ 0x55FD, 0x5617, 0x0893, -/* 0076 */ 0x562F, 0x5636, 0x08AE, -/* 0077 */ 0x5653, 0x0000, 0x7A46, -/* 0078 */ 0x5668, 0x5674, 0x08B6, -/* 0079 */ 0x5686, 0x0000, 0x7C77, -/* 007A */ 0x56A5, 0x56BC, 0x08C3, -/* 007B */ 0x56CA, 0x56E0, 0x08DB, -/* 007C */ 0x56F0, 0x5751, 0x08F2, -/* 007D */ 0x5761, 0x5793, 0x0954, -/* 007E */ 0x57A0, 0x57A3, 0x0987, -/* 007F */ 0x57C3, 0x57CE, 0x098B, -/* 0080 */ 0x57DF, 0x57E0, 0x0997, -/* 0081 */ 0x57F0, 0x580A, 0x0999, -/* 0082 */ 0x581E, 0x583A, 0x09B4, -/* 0083 */ 0x584A, 0x5864, 0x09D1, -/* 0084 */ 0x5875, 0x58FD, 0x09EC, -/* 0085 */ 0x590F, 0x5999, 0x0A75, -/* 0086 */ 0x59A5, 0x59AC, 0x0B00, -/* 0087 */ 0x59B9, 0x5A03, 0x0B08, -/* 0088 */ 0x5A11, 0x5A29, 0x0B53, -/* 0089 */ 0x5A36, 0x5A49, 0x0B6C, -/* 008A */ 0x5A5A, 0x5A66, 0x0B80, -/* 008B */ 0x5A92, 0x5AA4, 0x0B8D, -/* 008C */ 0x5AC1, 0x5ACC, 0x0BA0, -/* 008D */ 0x5AE1, 0x5AE9, 0x0BAC, -/* 008E */ 0x5B05, 0x5B16, 0x0BB5, -/* 008F */ 0x5B2A, 0x0000, 0x5E2E, -/* 0090 */ 0x5B40, 0x5B43, 0x0BC7, -/* 0091 */ 0x5B50, 0x5C79, 0x0BCB, -/* 0092 */ 0x5C90, 0x5C91, 0x0CF5, -/* 0093 */ 0x5CA1, 0x5CC0, 0x0CF7, -/* 0094 */ 0x5CD9, 0x5D19, 0x0D17, -/* 0095 */ 0x5D27, 0x5D29, 0x0D58, -/* 0096 */ 0x5D4B, 0x5D50, 0x0D5B, -/* 0097 */ 0x5D69, 0x5D6F, 0x0D61, -/* 0098 */ 0x5D87, 0x5D8B, 0x0D68, -/* 0099 */ 0x5D9D, 0x5DAA, 0x0D6D, -/* 009A */ 0x5DB8, 0x5DBD, 0x0D7B, -/* 009B */ 0x5DCD, 0x5E63, 0x0D81, -/* 009C */ 0x5E72, 0x5F3C, 0x0E18, -/* 009D */ 0x5F48, 0x5FFF, 0x0EE3, -/* 009E */ 0x600F, 0x602F, 0x0F9B, -/* 009F */ 0x6041, 0x6070, 0x0FBC, -/* 00A0 */ 0x6085, 0x60E1, 0x0FEC, -/* 00A1 */ 0x60F0, 0x61CB, 0x1049, -/* 00A2 */ 0x61E6, 0x0000, 0x5157, -/* 00A3 */ 0x61F2, 0x6258, 0x1125, -/* 00A4 */ 0x626E, 0x629B, 0x118C, -/* 00A5 */ 0x62AB, 0x62DC, 0x11BA, -/* 00A6 */ 0x62EC, 0x6311, 0x11EC, -/* 00A7 */ 0x632B, 0x6355, 0x1212, -/* 00A8 */ 0x6367, 0x63AA, 0x123D, -/* 00A9 */ 0x63C0, 0x63E1, 0x1281, -/* 00AA */ 0x63ED, 0x63F7, 0x12A3, -/* 00AB */ 0x640D, 0x642D, 0x12AE, -/* 00AC */ 0x643A, 0x643E, 0x12CF, -/* 00AD */ 0x6458, 0x647A, 0x12D4, -/* 00AE */ 0x6488, 0x6504, 0x12F7, -/* 00AF */ 0x6518, 0x66C9, 0x1374, -/* 00B0 */ 0x66D6, 0x675F, 0x1526, -/* 00B1 */ 0x676D, 0x679D, 0x15B0, -/* 00B2 */ 0x67AF, 0x67DD, 0x15E1, -/* 00B3 */ 0x67E9, 0x67FE, 0x1610, -/* 00B4 */ 0x6812, 0x6854, 0x1626, -/* 00B5 */ 0x686D, 0x68B6, 0x1669, -/* 00B6 */ 0x68C4, 0x6912, 0x16B3, -/* 00B7 */ 0x6927, 0x6930, 0x1702, -/* 00B8 */ 0x693D, 0x6979, 0x170C, -/* 00B9 */ 0x6995, 0x69D0, 0x1749, -/* 00BA */ 0x69E8, 0x69EA, 0x1785, -/* 00BB */ 0x69FB, 0x6A23, 0x1788, -/* 00BC */ 0x6A35, 0x6A6B, 0x17B1, -/* 00BD */ 0x6A80, 0x6AA3, 0x17E8, -/* 00BE */ 0x6AB3, 0x6AC3, 0x180C, -/* 00BF */ 0x6AD3, 0x6ADB, 0x181D, -/* 00C0 */ 0x6AF6, 0x6B23, 0x1826, -/* 00C1 */ 0x6B32, 0x6B50, 0x1854, -/* 00C2 */ 0x6B5F, 0x6B8A, 0x1873, -/* 00C3 */ 0x6B96, 0x6B9E, 0x189F, -/* 00C4 */ 0x6BAE, 0x6BDB, 0x18A8, -/* 00C5 */ 0x6BEB, 0x6BEC, 0x18D6, -/* 00C6 */ 0x6C08, 0x6C13, 0x18D8, -/* 00C7 */ 0x6C23, 0x0000, 0x5128, -/* 00C8 */ 0x6C34, 0x6C42, 0x18E4, -/* 00C9 */ 0x6C4E, 0x6C9B, 0x18F3, -/* 00CA */ 0x6CAB, 0x6CF3, 0x1941, -/* 00CB */ 0x6D0B, 0x6D41, 0x198A, -/* 00CC */ 0x6D59, 0x6D95, 0x19C1, -/* 00CD */ 0x6DAF, 0x6DFB, 0x19FE, -/* 00CE */ 0x6E17, 0x6E7A, 0x1A4B, -/* 00CF */ 0x6E90, 0x6ED4, 0x1AAF, -/* 00D0 */ 0x6EEF, 0x6F41, 0x1AF4, -/* 00D1 */ 0x6F51, 0x6F97, 0x1B47, -/* 00D2 */ 0x6FA3, 0x6FF1, 0x1B8E, -/* 00D3 */ 0x6FFE, 0x703E, 0x1BDD, -/* 00D4 */ 0x704C, 0x70B9, 0x1C1E, -/* 00D5 */ 0x70C8, 0x70DF, 0x1C8C, -/* 00D6 */ 0x70F1, 0x710C, 0x1CA4, -/* 00D7 */ 0x7119, 0x7136, 0x1CC0, -/* 00D8 */ 0x7147, 0x716E, 0x1CDE, -/* 00D9 */ 0x717D, 0x71EE, 0x1D06, -/* 00DA */ 0x71FB, 0x721B, 0x1D78, -/* 00DB */ 0x722A, 0x7281, 0x1D99, -/* 00DC */ 0x72A2, 0x72AF, 0x1DF1, -/* 00DD */ 0x72C0, 0x72E9, 0x1DFF, -/* 00DE */ 0x72F8, 0x72FD, 0x1E29, -/* 00DF */ 0x730A, 0x0000, 0x6759, -/* 00E0 */ 0x7316, 0x7357, 0x1E2F, -/* 00E1 */ 0x7368, 0x746F, 0x1E71, -/* 00E2 */ 0x747E, 0x748B, 0x1F79, -/* 00E3 */ 0x7498, 0x7504, 0x1F87, -/* 00E4 */ 0x7511, 0x753A, 0x1FF4, -/* 00E5 */ 0x7547, 0x7591, 0x201E, -/* 00E6 */ 0x759D, 0x75E2, 0x2069, -/* 00E7 */ 0x75F0, 0x7600, 0x20AF, -/* 00E8 */ 0x760D, 0x0000, 0x654B, -/* 00E9 */ 0x7619, 0x7626, 0x20C0, -/* 00EA */ 0x763B, 0x7693, 0x20CE, -/* 00EB */ 0x76AE, 0x0000, 0x792B, -/* 00EC */ 0x76BA, 0x770B, 0x2127, -/* 00ED */ 0x771E, 0x7729, 0x2179, -/* 00EE */ 0x7737, 0x7740, 0x2185, -/* 00EF */ 0x774D, 0x0000, 0x7A60, -/* 00F0 */ 0x775B, 0x776B, 0x218F, -/* 00F1 */ 0x7779, 0x777F, 0x21A0, -/* 00F2 */ 0x778B, 0x7791, 0x21A7, -/* 00F3 */ 0x779E, 0x77BF, 0x21AE, -/* 00F4 */ 0x77D7, 0x77F3, 0x21D0, -/* 00F5 */ 0x7802, 0x0000, 0x5E63, -/* 00F6 */ 0x7812, 0x0000, 0x5D77, -/* 00F7 */ 0x7825, 0x7834, 0x21ED, -/* 00F8 */ 0x7845, 0x784F, 0x21FD, -/* 00F9 */ 0x785D, 0x0000, 0x7526, -/* 00FA */ 0x786B, 0x786F, 0x2208, -/* 00FB */ 0x787C, 0x7897, 0x220D, -/* 00FC */ 0x78A3, 0x78A9, 0x2229, -/* 00FD */ 0x78BA, 0x78D0, 0x2230, -/* 00FE */ 0x78E8, 0x7901, 0x2247, -/* 00FF */ 0x790E, 0x7916, 0x2261, -/* 0100 */ 0x792A, 0x792C, 0x226A, -/* 0101 */ 0x793A, 0x796D, 0x226D, -/* 0102 */ 0x797A, 0x7981, 0x22A1, -/* 0103 */ 0x798D, 0x7991, 0x22A9, -/* 0104 */ 0x79A6, 0x79E9, 0x22AE, -/* 0105 */ 0x79FB, 0x7A20, 0x22F2, -/* 0106 */ 0x7A2E, 0x7ACB, 0x2318, -/* 0107 */ 0x7AD7, 0x7AFF, 0x23B6, -/* 0108 */ 0x7B0F, 0x7B2D, 0x23DF, -/* 0109 */ 0x7B39, 0x0000, 0x612B, -/* 010A */ 0x7B46, 0x7B60, 0x23FE, -/* 010B */ 0x7B6C, 0x7BA1, 0x2419, -/* 010C */ 0x7BAD, 0x7BD2, 0x244F, -/* 010D */ 0x7BE0, 0x7BE9, 0x2475, -/* 010E */ 0x7C07, 0x7C12, 0x247F, -/* 010F */ 0x7C1E, 0x7C2B, 0x248B, -/* 0110 */ 0x7C3D, 0x7C4D, 0x2499, -/* 0111 */ 0x7C60, 0x7C73, 0x24AA, -/* 0112 */ 0x7C83, 0x7CBE, 0x24BE, -/* 0113 */ 0x7CCA, 0x0000, 0x7B55, -/* 0114 */ 0x7CD6, 0x7CE7, 0x24FA, -/* 0115 */ 0x7CFB, 0x7D50, 0x250C, -/* 0116 */ 0x7D5E, 0x7D7F, 0x2562, -/* 0117 */ 0x7D8E, 0x7DFB, 0x2584, -/* 0118 */ 0x7E09, 0x7E9C, 0x25F2, -/* 0119 */ 0x7F36, 0x7F3A, 0x2686, -/* 011A */ 0x7F4C, 0x7F55, 0x268B, -/* 011B */ 0x7F6A, 0x7F79, 0x2695, -/* 011C */ 0x7F85, 0x8018, 0x26A5, -/* 011D */ 0x802D, 0x804A, 0x2739, -/* 011E */ 0x8056, 0x805E, 0x2757, -/* 011F */ 0x806F, 0x80CE, 0x2760, -/* 0120 */ 0x80DA, 0x80E5, 0x27C0, -/* 0121 */ 0x80F1, 0x810A, 0x27CC, -/* 0122 */ 0x8118, 0x813E, 0x27E6, -/* 0123 */ 0x814B, 0x8155, 0x280D, -/* 0124 */ 0x8165, 0x8247, 0x2818, -/* 0125 */ 0x8259, 0x827E, 0x28FB, -/* 0126 */ 0x828B, 0x82BF, 0x2921, -/* 0127 */ 0x82D1, 0x82F1, 0x2956, -/* 0128 */ 0x82FD, 0x8309, 0x2977, -/* 0129 */ 0x8317, 0x0000, 0x592B, -/* 012A */ 0x8328, 0x8352, 0x2984, -/* 012B */ 0x8373, 0x837B, 0x29AF, -/* 012C */ 0x8389, 0x83AB, 0x29B8, -/* 012D */ 0x83BD, 0x83DC, 0x29DB, -/* 012E */ 0x83E9, 0x840E, 0x29FB, -/* 012F */ 0x8429, 0x843D, 0x2A21, -/* 0130 */ 0x8449, 0x0000, 0x6728, -/* 0131 */ 0x8457, 0x847A, 0x2A36, -/* 0132 */ 0x8490, 0x84A1, 0x2A5A, -/* 0133 */ 0x84B2, 0x84DA, 0x2A6C, -/* 0134 */ 0x84EC, 0x84FC, 0x2A95, -/* 0135 */ 0x8511, 0x852F, 0x2AA6, -/* 0136 */ 0x853D, 0x856D, 0x2AC5, -/* 0137 */ 0x8584, 0x85EA, 0x2AF6, -/* 0138 */ 0x85F7, 0x860A, 0x2B5D, -/* 0139 */ 0x8616, 0x861A, 0x2B71, -/* 013A */ 0x862D, 0x0000, 0x5535, -/* 013B */ 0x863F, 0x0000, 0x5521, -/* 013C */ 0x864E, 0x8667, 0x2B76, -/* 013D */ 0x8679, 0x0000, 0x7B76, -/* 013E */ 0x868A, 0x8693, 0x2B90, -/* 013F */ 0x86A3, 0x86A9, 0x2B9A, -/* 0140 */ 0x86C7, 0x86ED, 0x2BA1, -/* 0141 */ 0x86FE, 0x8708, 0x2BC8, -/* 0142 */ 0x8718, 0x871C, 0x2BD3, -/* 0143 */ 0x874E, 0x8768, 0x2BD8, -/* 0144 */ 0x8774, 0x878D, 0x2BF3, -/* 0145 */ 0x879F, 0x87A2, 0x2C0D, -/* 0146 */ 0x87B3, 0x87C4, 0x2C11, -/* 0147 */ 0x87E0, 0x0000, 0x5A76, -/* 0148 */ 0x87EC, 0x8805, 0x2C23, -/* 0149 */ 0x881F, 0x8823, 0x2C3D, -/* 014A */ 0x8831, 0x889E, 0x2C42, -/* 014B */ 0x88AB, 0x88B4, 0x2CB0, -/* 014C */ 0x88C1, 0x88C2, 0x2CBA, -/* 014D */ 0x88CF, 0x8919, 0x2CBC, -/* 014E */ 0x8925, 0x892A, 0x2D07, -/* 014F */ 0x8936, 0x8944, 0x2D0D, -/* 0150 */ 0x895F, 0x8972, 0x2D1C, -/* 0151 */ 0x897F, 0x89C0, 0x2D30, -/* 0152 */ 0x89D2, 0x0000, 0x4A47, -/* 0153 */ 0x89E3, 0x0000, 0x7A30, -/* 0154 */ 0x89F4, 0x8A3B, 0x2D72, -/* 0155 */ 0x8A50, 0x8A79, 0x2DBA, -/* 0156 */ 0x8A85, 0x8B9A, 0x2DE4, -/* 0157 */ 0x8C37, 0x8C6B, 0x2EFA, -/* 0158 */ 0x8C79, 0x8C8C, 0x2F2F, -/* 0159 */ 0x8C9D, 0x8D16, 0x2F43, -/* 015A */ 0x8D64, 0x8D77, 0x2FBD, -/* 015B */ 0x8D85, 0x8D8A, 0x2FD1, -/* 015C */ 0x8D99, 0x8DCF, 0x2FD7, -/* 015D */ 0x8DDB, 0x8DF3, 0x300E, -/* 015E */ 0x8E0A, 0x8E10, 0x3027, -/* 015F */ 0x8E1E, 0x0000, 0x4B66, -/* 0160 */ 0x8E2A, 0x8E35, 0x302E, -/* 0161 */ 0x8E42, 0x8E4A, 0x303A, -/* 0162 */ 0x8E59, 0x8E60, 0x3043, -/* 0163 */ 0x8E74, 0x8E8D, 0x304B, -/* 0164 */ 0x8EAA, 0x8EAC, 0x3065, -/* 0165 */ 0x8EC0, 0x8ED2, 0x3068, -/* 0166 */ 0x8EDF, 0x0000, 0x6663, -/* 0167 */ 0x8EEB, 0x0000, 0x7262, -/* 0168 */ 0x8EF8, 0x8F4E, 0x307B, -/* 0169 */ 0x8F5D, 0x8F62, 0x30D2, -/* 016A */ 0x8F9B, 0x8FB2, 0x30D8, -/* 016B */ 0x8FC2, 0x8FD4, 0x30F0, -/* 016C */ 0x8FE6, 0x90CA, 0x3103, -/* 016D */ 0x90DE, 0x9102, 0x31E8, -/* 016E */ 0x9112, 0x9119, 0x320D, -/* 016F */ 0x9127, 0x9132, 0x3215, -/* 0170 */ 0x9149, 0x9152, 0x3221, -/* 0171 */ 0x9162, 0x9178, 0x322B, -/* 0172 */ 0x9187, 0x919C, 0x3242, -/* 0173 */ 0x91AB, 0x91F5, 0x3258, -/* 0174 */ 0x920D, 0x921E, 0x32A3, -/* 0175 */ 0x9234, 0x9249, 0x32B5, -/* 0176 */ 0x9257, 0x9266, 0x32CB, -/* 0177 */ 0x9280, 0x9285, 0x32DB, -/* 0178 */ 0x9291, 0x929C, 0x32E1, -/* 0179 */ 0x92B3, 0x92B9, 0x32ED, -/* 017A */ 0x92CC, 0x92D2, 0x32F4, -/* 017B */ 0x92E4, 0x92EA, 0x32FB, -/* 017C */ 0x92F8, 0x9304, 0x3302, -/* 017D */ 0x9310, 0x932F, 0x330F, -/* 017E */ 0x9348, 0x935B, 0x332F, -/* 017F */ 0x936E, 0x937E, 0x3343, -/* 0180 */ 0x938C, 0x93B0, 0x3354, -/* 0181 */ 0x93C3, 0x0000, 0x706C, -/* 0182 */ 0x93D1, 0x0000, 0x6E6B, -/* 0183 */ 0x93DE, 0x93E4, 0x3379, -/* 0184 */ 0x93F6, 0x0000, 0x7321, -/* 0185 */ 0x9404, 0x0000, 0x7C75, -/* 0186 */ 0x9418, 0x0000, 0x7124, -/* 0187 */ 0x9425, 0x9438, 0x3380, -/* 0188 */ 0x9444, 0x0000, 0x7151, -/* 0189 */ 0x9451, 0x945B, 0x3394, -/* 018A */ 0x947D, 0x947F, 0x339F, -/* 018B */ 0x9577, 0x95E2, 0x33A2, -/* 018C */ 0x961C, 0x977A, 0x340E, -/* 018D */ 0x978B, 0x978F, 0x356D, -/* 018E */ 0x97A0, 0x97AD, 0x3572, -/* 018F */ 0x97C6, 0x97DC, 0x3580, -/* 0190 */ 0x97F3, 0x9818, 0x3597, -/* 0191 */ 0x982D, 0x986F, 0x35BD, -/* 0192 */ 0x98A8, 0x98B1, 0x3600, -/* 0193 */ 0x98C4, 0x98C7, 0x360A, -/* 0194 */ 0x98DB, 0x9928, 0x360E, -/* 0195 */ 0x9945, 0x9957, 0x365C, -/* 0196 */ 0x9996, 0x99C1, 0x366F, -/* 0197 */ 0x99D0, 0x99DF, 0x369B, -/* 0198 */ 0x99ED, 0x99F1, 0x36AB, -/* 0199 */ 0x99FF, 0x9A19, 0x36B0, -/* 019A */ 0x9A2B, 0x9A6A, 0x36CB, -/* 019B */ 0x9AA8, 0x0000, 0x4D69, -/* 019C */ 0x9AB8, 0x0000, 0x7A35, -/* 019D */ 0x9AD3, 0x9AD8, 0x370B, -/* 019E */ 0x9AE5, 0x9AEE, 0x3711, -/* 019F */ 0x9B1A, 0x0000, 0x6251, -/* 01A0 */ 0x9B27, 0x9B5A, 0x371B, -/* 01A1 */ 0x9B6F, 0x0000, 0x565B, -/* 01A2 */ 0x9B8E, 0x9B91, 0x374F, -/* 01A3 */ 0x9B9F, 0x0000, 0x6455, -/* 01A4 */ 0x9BAB, 0x9BAE, 0x3753, -/* 01A5 */ 0x9BC9, 0x0000, 0x576F, -/* 01A6 */ 0x9BD6, 0x0000, 0x746D, -/* 01A7 */ 0x9BE4, 0x9BE8, 0x3757, -/* 01A8 */ 0x9C0D, 0x9C15, 0x375C, -/* 01A9 */ 0x9C25, 0x0000, 0x7C3F, -/* 01AA */ 0x9C32, 0x9C3B, 0x3765, -/* 01AB */ 0x9C47, 0x9C49, 0x376F, -/* 01AC */ 0x9C57, 0x0000, 0x5777, -/* 01AD */ 0x9CE5, 0x9CF6, 0x3772, -/* 01AE */ 0x9D09, 0x0000, 0x643C, -/* 01AF */ 0x9D1B, 0x9D28, 0x3784, -/* 01B0 */ 0x9D3B, 0x0000, 0x7B78, -/* 01B1 */ 0x9D51, 0x0000, 0x4C3B, -/* 01B2 */ 0x9D5D, 0x9D72, 0x3792, -/* 01B3 */ 0x9DA9, 0x9DB4, 0x37A8, -/* 01B4 */ 0x9DC4, 0x0000, 0x4D2E, -/* 01B5 */ 0x9DD7, 0x0000, 0x4F4E, -/* 01B6 */ 0x9DF2, 0x9DFA, 0x37B4, -/* 01B7 */ 0x9E1A, 0x9E1E, 0x37BD, -/* 01B8 */ 0x9E75, 0x9E7F, 0x37C2, -/* 01B9 */ 0x9E92, 0x9EA5, 0x37CD, -/* 01BA */ 0x9EB4, 0x9EE8, 0x37E1, -/* 01BB */ 0x9EF4, 0x0000, 0x5A3D, -/* 01BC */ 0x9F07, 0x9F13, 0x3816, -/* 01BD */ 0x9F20, 0x0000, 0x6029, -/* 01BE */ 0x9F3B, 0x0000, 0x5E2C, -/* 01BF */ 0x9F4A, 0x9F52, 0x3823, -/* 01C0 */ 0x9F5F, 0x9F77, 0x382C, -/* 01C1 */ 0x9F8D, 0x9F9C, 0x3845, -/* 01C2 */ 0xF900, 0xF932, 0x3855, -/* 01C3 */ 0xF944, 0xF949, 0x3888, -/* 01C4 */ 0xF958, 0xFA0B, 0x388E, -/* 01C5 */ 0xFF3C, 0x0000, 0x212C, -/* 01C6 */ 0xFF5E, 0x0000, 0x212D, -/* 01C7 */ 0xFFE0, 0xFFE6, 0x3942, -/*-------------------------------------------------------*/ -/* Offset=0x05CF Start of MappingTable */ - -/* 0000 */ 0x222E, 0xFFFD, 0xFFFD, 0x2234, 0xFFFD, 0xFFFD, 0x2157, 0x2127, -/* 0008 */ 0xFFFD, 0x2823, 0x216C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2146, -/* 0010 */ 0x213E, 0x2977, 0x2978, 0x2225, 0xFFFD, 0x2252, 0xFFFD, 0x222C, -/* 0018 */ 0x2976, 0x282C, 0x216D, 0x2879, 0x2876, 0x287A, 0x222F, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2821, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2822, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x213F, 0x282A, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x282D, 0x292C, 0xFFFD, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2921, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2923, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2140, 0x292A, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x292D, 0x2824, 0x2924, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0x2925, 0x2826, 0x2926, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0x2927, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2828, -/* 0078 */ 0x2928, 0x2829, 0x2929, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0x2930, 0x282F, 0x292F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0x282B, 0x292B, 0x282E, 0x292E, 0x2228, 0x222B, -/* 0090 */ 0x222A, 0x222D, 0x2226, 0x2229, 0x2129, 0x212A, 0xFFFD, 0x212B, -/* 0098 */ 0xFFFD, 0x212E, 0x212F, 0xFFFD, 0xFFFD, 0x2130, 0x2131, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x2253, 0x2254, 0xFFFD, 0xFFFD, 0xFFFD, 0x2125, 0x2126, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0x2236, 0xFFFD, 0x2147, 0x2148, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2158, 0x2979, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0x297A, 0xFFFD, 0x297B, 0x297C, 0x297D, 0x297E, 0x2149, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2235, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2724, 0xFFFD, -/* 00E0 */ 0xFFFD, 0x2260, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2265, 0x2262, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xFFFD, 0x2759, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x214A, 0x2877, -/* 00F8 */ 0x2878, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x287B, -/* 0100 */ 0x287C, 0x287D, 0x287E, 0x2167, 0x2168, 0x2166, 0x2169, 0x216A, -/* 0108 */ 0x2255, 0x2258, 0x2256, 0x2259, 0x2257, 0x2221, 0xFFFD, 0x2222, -/* 0110 */ 0x2223, 0xFFFD, 0x2153, 0x2224, 0xFFFD, 0xFFFD, 0xFFFD, 0x2154, -/* 0118 */ 0x2174, 0xFFFD, 0xFFFD, 0x2175, 0xFFFD, 0xFFFD, 0xFFFD, 0x2233, -/* 0120 */ 0xFFFD, 0x2232, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0128 */ 0xFFFD, 0xFFFD, 0x216E, 0xFFFD, 0xFFFD, 0x2170, 0x2144, 0xFFFD, -/* 0130 */ 0x2150, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x217C, -/* 0138 */ 0x217D, 0x217B, 0x217A, 0x2172, 0x2173, 0xFFFD, 0x2231, 0xFFFD, -/* 0140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2145, 0x2171, 0x2230, 0xFFFD, -/* 0148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x216F, 0x2141, 0x2155, -/* 0150 */ 0xFFFD, 0xFFFD, 0x2142, 0x2143, 0x2178, 0x2179, 0xFFFD, 0xFFFD, -/* 0158 */ 0x2176, 0x2177, 0x2621, 0x262C, 0x2622, 0x262D, 0xFFFD, 0xFFFD, -/* 0160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2623, 0x2648, -/* 0168 */ 0x2647, 0x262E, 0x2624, 0x2642, 0x2641, 0x262F, 0x2626, 0x2646, -/* 0170 */ 0x2645, 0x2631, 0x2625, 0x2644, 0x2643, 0x2630, 0x2627, 0x263C, -/* 0178 */ 0x2649, 0x264A, 0x2637, 0x264B, 0x264C, 0x2632, 0x2629, 0x263E, -/* 0180 */ 0x264D, 0x264E, 0x2639, 0x264F, 0x2650, 0x2634, 0x2628, 0x2651, -/* 0188 */ 0x2652, 0x2638, 0x263D, 0x2653, 0x2654, 0x2633, 0x262A, 0x2655, -/* 0190 */ 0x2656, 0x263A, 0x263F, 0x2657, 0x2658, 0x2635, 0x262B, 0x2659, -/* 0198 */ 0x265A, 0x263B, 0x265B, 0x265C, 0x2640, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2636, 0x2161, 0x2160, -/* 01A8 */ 0xFFFD, 0x2243, 0x2247, 0x2248, 0x224B, 0x224A, 0x2249, 0x224C, -/* 01B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01B8 */ 0x2163, 0x2162, 0xFFFD, 0xFFFD, 0x223A, 0x2239, 0xFFFD, 0xFFFD, -/* 01C0 */ 0xFFFD, 0xFFFD, 0x2165, 0x2164, 0xFFFD, 0xFFFD, 0x2238, 0x2237, -/* 01C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x215F, 0x215E, 0x2242, 0x2241, -/* 01D0 */ 0xFFFD, 0x215B, 0xFFFD, 0xFFFD, 0x215D, 0x215C, 0x2244, 0x2245, -/* 01D8 */ 0x215A, 0x2159, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E0 */ 0xFFFD, 0x224F, 0x224E, 0x2250, 0xFFFD, 0x2251, 0x214F, 0xFFFD, -/* 01E8 */ 0x214E, 0x223C, 0x223D, 0xFFFD, 0x2240, 0x223B, 0x223E, 0xFFFD, -/* 01F0 */ 0x223F, 0x224D, 0x225B, 0x225C, 0xFFFD, 0x225D, 0x225A, 0x2121, -/* 01F8 */ 0x2122, 0x2123, 0x2128, 0x216B, 0x2132, 0x2133, 0x2749, 0x274A, -/* 0200 */ 0x274B, 0x274C, 0x274D, 0xFFFD, 0xFFFD, 0xFFFD, 0x273A, 0x273B, -/* 0208 */ 0x275C, 0x275D, 0x275E, 0x2736, 0x2737, 0x2738, 0x2754, 0x2755, -/* 0210 */ 0x2756, 0x2757, 0x2758, 0x2721, 0x2722, 0x2723, 0x2725, 0xFFFD, -/* 0218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0220 */ 0xFFFD, 0x2727, 0x2728, 0x2729, 0x272A, 0x273D, 0x273E, 0x2765, -/* 0228 */ 0x2766, 0x2767, 0x2768, 0x2761, 0x2762, 0x2763, 0x275A, 0x275B, -/* 0230 */ 0x2263, 0x276C, 0x2726, 0x2760, 0x276F, 0x2261, 0x273C, 0x276D, -/* 0238 */ 0x2735, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2739, 0x276A, 0xFFFD, -/* 0240 */ 0xFFFD, 0x276B, 0xFFFD, 0xFFFD, 0x275F, 0xFFFD, 0x2264, 0xFFFD, -/* 0248 */ 0xFFFD, 0x2764, 0x276E, 0x2769, 0x6C69, 0x6F4B, 0xFFFD, 0x7652, -/* 0250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5832, 0x6D5B, 0x5F32, 0x5F3E, 0x793B, -/* 0258 */ 0xFFFD, 0x5C74, 0xFFFD, 0xFFFD, 0xFFFD, 0x7564, 0xFFFD, 0xFFFD, -/* 0260 */ 0x7326, 0x5D60, 0x6126, 0xFFFD, 0x4E78, 0x5C30, 0xFFFD, 0xFFFD, -/* 0268 */ 0xFFFD, 0xFFFD, 0x632A, 0x7169, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0270 */ 0x4D7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C2F, 0x5321, -/* 0278 */ 0xFFFD, 0x712B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0280 */ 0x6751, 0x522C, 0xFFFD, 0x4E79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0288 */ 0xFFFD, 0x717D, 0xFFFD, 0x5E3F, 0x7B3A, 0x7939, 0xFFFD, 0xFFFD, -/* 0290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E52, 0xFFFD, 0x632B, 0x6B60, -/* 0298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E7A, 0x4B77, 0x6525, 0x4A61, 0xFFFD, -/* 02A0 */ 0x544C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A61, 0xFFFD, -/* 02A8 */ 0xFFFD, 0x5C63, 0x5F2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02B0 */ 0xFFFD, 0x4B6B, 0xFFFD, 0xFFFD, 0xFFFD, 0x552F, 0xFFFD, 0xFFFD, -/* 02B8 */ 0xFFFD, 0x5675, 0xFFFD, 0x6578, 0xFFFD, 0xFFFD, 0x5E40, 0x6C23, -/* 02C0 */ 0xFFFD, 0x694D, 0xFFFD, 0x6A27, 0x6976, 0x7B3B, 0xFFFD, 0x6769, -/* 02C8 */ 0x6F4C, 0xFFFD, 0xFFFD, 0x5066, 0xFFFD, 0xFFFD, 0x5E41, 0xFFFD, -/* 02D0 */ 0xFFFD, 0x642C, 0xFFFD, 0xFFFD, 0x584C, 0x7971, 0xFFFD, 0x4E5F, -/* 02D8 */ 0x7A24, 0x6632, 0xFFFD, 0x7A7B, 0xFFFD, 0xFFFD, 0x7A3D, 0x4C48, -/* 02E0 */ 0x6F4D, 0x5555, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02E8 */ 0xFFFD, 0x5322, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C51, 0xFFFD, 0xFFFD, -/* 02F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6427, 0x6C52, 0xFFFD, 0xFFFD, 0x7631, -/* 02F8 */ 0xFFFD, 0xFFFD, 0x4E7B, 0xFFFD, 0xFFFD, 0x5051, 0x4B3F, 0xFFFD, -/* 0300 */ 0x6D24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D28, -/* 0308 */ 0x5E42, 0x7662, 0x6D5C, 0x5C75, 0x6039, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0310 */ 0x544E, 0xFFFD, 0x7435, 0xFFFD, 0xFFFD, 0xFFFD, 0x535B, 0x5635, -/* 0318 */ 0x6C24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6466, 0xFFFD, 0x716A, 0xFFFD, 0xFFFD, -/* 0328 */ 0xFFFD, 0x4B6C, 0x4B40, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C72, 0xFFFD, -/* 0330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x506A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7972, 0x6C25, 0x505F, 0xFFFD, -/* 0340 */ 0x676A, 0x506B, 0x5C51, 0x5B69, 0x7D4C, 0x5B57, 0xFFFD, 0xFFFD, -/* 0348 */ 0xFFFD, 0xFFFD, 0x5A61, 0xFFFD, 0x5636, 0xFFFD, 0x635F, 0xFFFD, -/* 0350 */ 0x5E43, 0xFFFD, 0x5E44, 0x4A21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0358 */ 0xFFFD, 0x6E6C, 0xFFFD, 0xFFFD, 0x5323, 0x6E37, 0x784F, 0xFFFD, -/* 0360 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A48, 0x6E38, 0x712C, 0x7125, 0x694E, -/* 0368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x793C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6579, -/* 0370 */ 0x6C6A, 0x5D56, 0x6D42, 0x7825, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0378 */ 0xFFFD, 0x653A, 0x5B58, 0xFFFD, 0xFFFD, 0x4A22, 0xFFFD, 0xFFFD, -/* 0380 */ 0x514D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E6D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0388 */ 0x6C6B, 0x5E45, 0xFFFD, 0x6360, 0xFFFD, 0x4A49, 0x7269, 0xFFFD, -/* 0390 */ 0x554E, 0xFFFD, 0x7636, 0xFFFD, 0x4E42, 0x5647, 0xFFFD, 0x6334, -/* 0398 */ 0xFFFD, 0x712D, 0xFFFD, 0x6A62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03A0 */ 0x5742, 0xFFFD, 0x7327, 0xFFFD, 0xFFFD, 0x4D6A, 0xFFFD, 0x6B6E, -/* 03A8 */ 0x5932, 0x7D25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7655, -/* 03B0 */ 0x5562, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03B8 */ 0xFFFD, 0x7835, 0xFFFD, 0xFFFD, 0x4C75, 0x7535, 0x642D, 0xFFFD, -/* 03C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x676B, 0x7155, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03C8 */ 0x703B, 0xFFFD, 0xFFFD, 0x6935, 0xFFFD, 0x4C49, 0x7A55, 0xFFFD, -/* 03D0 */ 0xFFFD, 0x6154, 0xFFFD, 0xFFFD, 0x5756, 0xFFFD, 0xFFFD, 0x5C41, -/* 03D8 */ 0xFFFD, 0x5E46, 0x7A6F, 0x6361, 0x6173, 0x5C76, 0xFFFD, 0x4E7C, -/* 03E0 */ 0xFFFD, 0x5B44, 0xFFFD, 0x7871, 0xFFFD, 0xFFFD, 0x5C64, 0xFFFD, -/* 03E8 */ 0x656F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03F0 */ 0x5C31, 0xFFFD, 0xFFFD, 0xFFFD, 0x5556, 0xFFFD, 0xFFFD, 0x735A, -/* 03F8 */ 0xFFFD, 0x4B41, 0xFFFD, 0x5B43, 0xFFFD, 0xFFFD, 0xFFFD, 0x597A, -/* 0400 */ 0x536E, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A38, 0xFFFD, 0xFFFD, 0x7D26, -/* 0408 */ 0x6B6F, 0xFFFD, 0x7426, 0xFFFD, 0x4C4A, 0x7328, 0xFFFD, 0x735B, -/* 0410 */ 0xFFFD, 0x5B27, 0x7637, 0xFFFD, 0x4F66, 0x7072, 0x4B5A, 0xFFFD, -/* 0418 */ 0x6752, 0x5743, 0x7670, 0x685E, 0x6526, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6567, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0428 */ 0x4A23, 0x4C27, 0x6A49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0430 */ 0x7836, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A25, 0xFFFD, -/* 0438 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x712E, 0xFFFD, 0x6F4E, 0xFFFD, 0xFFFD, -/* 0440 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B6D, 0x7630, -/* 0448 */ 0x6F4F, 0x694F, 0xFFFD, 0x775E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0458 */ 0x5C77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0460 */ 0x5B28, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B78, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F21, 0x5D61, 0x754A, 0x6936, 0xFFFD, -/* 0470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x676C, 0x6E6E, 0xFFFD, 0x7370, 0xFFFD, -/* 0478 */ 0x5F3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C4B, -/* 0480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5041, 0xFFFD, -/* 0488 */ 0xFFFD, 0xFFFD, 0x7452, 0x603A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0490 */ 0x5F40, 0xFFFD, 0x4E60, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C52, 0x7D6A, -/* 0498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5676, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A4A, -/* 04A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6869, 0xFFFD, -/* 04A8 */ 0x632C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7350, 0x4A24, -/* 04B0 */ 0xFFFD, 0x5B78, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E47, 0x6B70, 0x7156, -/* 04B8 */ 0xFFFD, 0xFFFD, 0x6562, 0xFFFD, 0x4C4C, 0xFFFD, 0xFFFD, 0x4B7B, -/* 04C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04C8 */ 0x6A63, 0x5F41, 0xFFFD, 0x566D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6950, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E39, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04E0 */ 0xFFFD, 0x5563, 0xFFFD, 0xFFFD, 0x5153, 0xFFFD, 0x6570, 0xFFFD, -/* 04E8 */ 0xFFFD, 0xFFFD, 0x6834, 0x6B43, 0xFFFD, 0x6A2A, 0x7A7C, 0x7576, -/* 04F0 */ 0x703C, 0x7D54, 0x603B, 0x4E43, 0xFFFD, 0x503A, 0x773A, 0x5873, -/* 04F8 */ 0x774D, 0xFFFD, 0xFFFD, 0xFFFD, 0x642E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x545F, 0xFFFD, -/* 0508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5067, 0xFFFD, 0xFFFD, 0x6C7D, -/* 0510 */ 0xFFFD, 0x522E, 0x6E6F, 0x5557, 0x6A64, 0x7822, 0x4D6B, 0x573F, -/* 0518 */ 0x7B31, 0xFFFD, 0xFFFD, 0x4D6C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C32, -/* 0520 */ 0x506C, 0x4E7D, 0x6E70, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C42, 0xFFFD, -/* 0528 */ 0xFFFD, 0xFFFD, 0x506D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0530 */ 0x6577, 0xFFFD, 0xFFFD, 0xFFFD, 0x737C, 0xFFFD, 0xFFFD, 0x6E22, -/* 0538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5933, 0xFFFD, 0xFFFD, 0x5874, -/* 0540 */ 0xFFFD, 0x6937, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0548 */ 0xFFFD, 0xFFFD, 0x4E2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5922, -/* 0550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5871, 0xFFFD, 0x544F, 0xFFFD, -/* 0558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0560 */ 0x6527, 0x5552, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5629, -/* 0568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7422, 0xFFFD, -/* 0570 */ 0x7157, 0xFFFD, 0xFFFD, 0x5558, 0xFFFD, 0x703D, 0x5750, 0x5450, -/* 0578 */ 0x574F, 0x6B6A, 0x7D6B, 0xFFFD, 0xFFFD, 0x5B6D, 0x7C45, 0x4B42, -/* 0580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D55, 0xFFFD, 0x7448, 0x686A, -/* 0588 */ 0x7573, 0xFFFD, 0xFFFD, 0x795E, 0xFFFD, 0xFFFD, 0x536F, 0xFFFD, -/* 0590 */ 0xFFFD, 0x6C53, 0xFFFD, 0xFFFD, 0x5D42, 0x6F37, 0x6754, 0xFFFD, -/* 0598 */ 0x4A4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x597B, 0xFFFD, 0xFFFD, 0x7A7D, -/* 05A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x562A, 0xFFFD, 0xFFFD, -/* 05A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7478, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05B0 */ 0xFFFD, 0xFFFD, 0x7777, 0x5C2C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5757, -/* 05B8 */ 0x5F22, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E3E, 0xFFFD, 0x5370, 0xFFFD, -/* 05C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7024, 0x616C, 0x4F67, 0x734B, -/* 05C8 */ 0x6D29, 0x4A3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05D0 */ 0xFFFD, 0x746F, 0xFFFD, 0xFFFD, 0xFFFD, 0x764E, 0xFFFD, 0xFFFD, -/* 05D8 */ 0x5E7B, 0x503B, 0x5537, 0x6E71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05E0 */ 0xFFFD, 0xFFFD, 0x7428, 0xFFFD, 0x5C78, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05E8 */ 0xFFFD, 0x4B27, 0xFFFD, 0x5A4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x6066, -/* 05F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D25, -/* 05F8 */ 0x6E72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C79, 0xFFFD, 0xFFFD, -/* 0600 */ 0x795C, 0xFFFD, 0xFFFD, 0x735C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7872, 0xFFFD, 0x7479, 0xFFFD, 0xFFFD, -/* 0610 */ 0xFFFD, 0x7C71, 0xFFFD, 0xFFFD, 0xFFFD, 0x503C, 0x5B79, 0x5731, -/* 0618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B7C, 0xFFFD, 0xFFFD, 0xFFFD, 0x7025, -/* 0620 */ 0x4B7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0628 */ 0xFFFD, 0x5574, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D6D, 0x4A25, 0xFFFD, -/* 0630 */ 0xFFFD, 0x562B, 0x5042, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x703E, -/* 0638 */ 0x523D, 0x4C24, 0x7A36, 0xFFFD, 0xFFFD, 0x4C4D, 0xFFFD, 0x5A7A, -/* 0640 */ 0xFFFD, 0x764F, 0xFFFD, 0x6938, 0xFFFD, 0x5875, 0xFFFD, 0xFFFD, -/* 0648 */ 0xFFFD, 0x4C4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x574D, 0xFFFD, -/* 0650 */ 0xFFFD, 0x5451, 0x696D, 0xFFFD, 0x4A6B, 0x5962, 0xFFFD, 0x7D32, -/* 0658 */ 0xFFFD, 0x632D, 0x564C, 0x5934, 0xFFFD, 0xFFFD, 0x6127, 0x6E53, -/* 0660 */ 0x5043, 0x7D33, 0xFFFD, 0x5564, 0xFFFD, 0xFFFD, 0x4F68, 0xFFFD, -/* 0668 */ 0x6D43, 0x5032, 0xFFFD, 0xFFFD, 0x4E7E, 0x5A28, 0xFFFD, 0xFFFD, -/* 0670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7850, 0xFFFD, 0xFFFD, 0x7D56, 0xFFFD, -/* 0678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7851, 0xFFFD, 0x7852, 0x5C53, 0xFFFD, -/* 0680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D62, 0x7B79, 0x5D41, 0xFFFD, 0x6335, -/* 0688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D5D, 0x4E44, -/* 0690 */ 0xFFFD, 0x4B21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0698 */ 0x5D63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C5D, 0xFFFD, 0xFFFD, -/* 06A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x792F, -/* 06A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x527B, 0x4F21, 0x6428, -/* 06B0 */ 0xFFFD, 0x7436, 0x6C7E, 0xFFFD, 0xFFFD, 0x632E, 0x676D, 0x7D41, -/* 06B8 */ 0x5A62, 0xFFFD, 0xFFFD, 0x5833, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D64, -/* 06C0 */ 0x706F, 0x7671, 0x7A70, 0xFFFD, 0xFFFD, 0x5175, 0xFFFD, 0xFFFD, -/* 06C8 */ 0x5A4F, 0xFFFD, 0x5C54, 0xFFFD, 0x5C26, 0xFFFD, 0x6F3F, 0xFFFD, -/* 06D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E4F, 0xFFFD, 0x6059, 0xFFFD, -/* 06D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5956, 0x6C54, 0x6A4B, -/* 06E0 */ 0xFFFD, 0xFFFD, 0x4A3F, 0x5530, 0xFFFD, 0x4F69, 0xFFFD, 0xFFFD, -/* 06E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x716D, 0xFFFD, 0x4C4F, 0xFFFD, 0xFFFD, -/* 06F0 */ 0xFFFD, 0xFFFD, 0x6478, 0x646D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06F8 */ 0x5758, 0xFFFD, 0x7D27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A2B, -/* 0700 */ 0x7632, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F70, 0x793D, 0xFFFD, -/* 0708 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6674, 0x4B5B, 0xFFFD, -/* 0710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7351, 0xFFFD, -/* 0718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6951, 0x7329, 0x5060, 0x6952, 0xFFFD, -/* 0720 */ 0x5A63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6252, -/* 0728 */ 0xFFFD, 0x7622, 0x6174, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A64, 0xFFFD, -/* 0730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6755, 0x753F, 0x4F22, 0x4D2F, -/* 0738 */ 0x4F23, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D30, 0x717E, 0x5023, 0x612F, -/* 0740 */ 0x7823, 0xFFFD, 0x4A26, 0x773B, 0x726A, 0x5E48, 0x6953, 0xFFFD, -/* 0748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0750 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D5E, 0x4A40, -/* 0758 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x796A, 0x514E, 0x6E54, 0xFFFD, 0x5452, -/* 0760 */ 0x5923, 0x7D28, 0x5759, 0x774E, 0x7A3E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F56, 0xFFFD, -/* 0770 */ 0x5770, 0xFFFD, 0x6B61, 0x7845, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0778 */ 0xFFFD, 0x5C7A, 0xFFFD, 0xFFFD, 0x5D43, 0xFFFD, 0x795F, 0xFFFD, -/* 0780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x676F, 0xFFFD, -/* 0788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7D65, 0x7623, 0xFFFD, 0x597C, 0x7D29, -/* 0790 */ 0xFFFD, 0x676E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5565, 0xFFFD, 0xFFFD, -/* 0798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F50, 0xFFFD, 0x4D31, 0xFFFD, 0xFFFD, -/* 07A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7722, 0x7132, 0xFFFD, 0x7131, -/* 07A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D32, 0xFFFD, -/* 07B0 */ 0x5A2B, 0xFFFD, 0x4A27, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07B8 */ 0x6362, 0x7B3C, 0x5924, 0xFFFD, 0xFFFD, 0x6E3A, 0xFFFD, 0xFFFD, -/* 07C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7853, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07C8 */ 0xFFFD, 0x7B7A, 0xFFFD, 0x4F24, 0xFFFD, 0x5C7B, 0x7663, 0xFFFD, -/* 07D0 */ 0xFFFD, 0xFFFD, 0x6D2A, 0xFFFD, 0xFFFD, 0x7221, 0x4E61, 0xFFFD, -/* 07D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A26, 0xFFFD, 0xFFFD, -/* 07E0 */ 0xFFFD, 0xFFFD, 0x7960, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C56, -/* 07E8 */ 0xFFFD, 0xFFFD, 0x646E, 0x7921, 0xFFFD, 0xFFFD, 0x7B6F, 0xFFFD, -/* 07F0 */ 0xFFFD, 0xFFFD, 0x796B, 0x6E23, 0x6A2C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07F8 */ 0x4A28, 0xFFFD, 0xFFFD, 0x747A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0800 */ 0x4D56, 0x7C76, 0xFFFD, 0xFFFD, 0xFFFD, 0x7449, 0xFFFD, 0xFFFD, -/* 0808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7854, 0xFFFD, 0xFFFD, -/* 0810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7826, -/* 0818 */ 0xFFFD, 0x5E4A, 0x7246, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0820 */ 0xFFFD, 0x575A, 0xFFFD, 0x5350, 0x6A66, 0xFFFD, 0x735D, 0xFFFD, -/* 0828 */ 0xFFFD, 0xFFFD, 0x645A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7664, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0838 */ 0xFFFD, 0x7672, 0xFFFD, 0x5F42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x597D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0848 */ 0x4C76, 0xFFFD, 0xFFFD, 0x533A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x642F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0858 */ 0x7961, 0x7026, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B53, 0xFFFD, 0xFFFD, -/* 0860 */ 0xFFFD, 0x603C, 0xFFFD, 0x744A, 0x547A, 0xFFFD, 0x7D2A, 0x7962, -/* 0868 */ 0x7437, 0x7D42, 0x7C30, 0xFFFD, 0x7D6C, 0x4A62, 0xFFFD, 0xFFFD, -/* 0870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D3D, -/* 0878 */ 0xFFFD, 0x6A67, 0x5F43, 0x5152, 0x4E62, 0xFFFD, 0x5324, 0x7D2B, -/* 0880 */ 0xFFFD, 0x5F60, 0x7247, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0888 */ 0x6770, 0xFFFD, 0x506E, 0xFFFD, 0xFFFD, 0x732A, 0xFFFD, 0xFFFD, -/* 0890 */ 0xFFFD, 0x5E4B, 0x7638, 0x6175, 0x7133, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7723, 0xFFFD, 0xFFFD, 0x4A29, -/* 08A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08A8 */ 0xFFFD, 0xFFFD, 0x4F25, 0xFFFD, 0xFFFD, 0x5F44, 0x6130, 0xFFFD, -/* 08B0 */ 0xFFFD, 0x703F, 0xFFFD, 0x7624, 0xFFFD, 0x6336, 0x506F, 0xFFFD, -/* 08B8 */ 0xFFFD, 0x7D6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08C0 */ 0xFFFD, 0xFFFD, 0x5D44, 0x663F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08C8 */ 0xFFFD, 0xFFFD, 0x5E2D, 0xFFFD, 0x7A3F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08D0 */ 0xFFFD, 0xFFFD, 0x6571, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08D8 */ 0xFFFD, 0xFFFD, 0x6D44, 0x5225, 0xFFFD, 0xFFFD, 0x7D6E, 0xFFFD, -/* 08E0 */ 0xFFFD, 0xFFFD, 0x7536, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6176, 0x5E4C, 0xFFFD, 0xFFFD, 0x7C5E, -/* 08F0 */ 0xFFFD, 0x6C57, 0x4D5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5637, 0x4D33, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7855, 0x6558, 0xFFFD, -/* 0908 */ 0xFFFD, 0xFFFD, 0x4F6A, 0xFFFD, 0xFFFD, 0x4F50, 0xFFFD, 0x6A4C, -/* 0910 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A2E, 0x6A2D, 0xFFFD, 0xFFFD, -/* 0918 */ 0x5371, 0xFFFD, 0x5325, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0920 */ 0xFFFD, 0x774F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0928 */ 0xFFFD, 0xFFFD, 0x6E24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5024, -/* 0930 */ 0xFFFD, 0xFFFD, 0x7222, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5070, 0xFFFD, 0xFFFD, -/* 0940 */ 0xFFFD, 0xFFFD, 0x7223, 0xFFFD, 0x7778, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0948 */ 0xFFFD, 0x5033, 0xFFFD, 0xFFFD, 0x5B29, 0xFFFD, 0xFFFD, 0x533B, -/* 0950 */ 0x4A6C, 0xFFFD, 0x7126, 0x4B55, 0x7767, 0xFFFD, 0xFFFD, 0x4D5E, -/* 0958 */ 0xFFFD, 0x7724, 0xFFFD, 0xFFFD, 0xFFFD, 0x7840, 0xFFFD, 0xFFFD, -/* 0960 */ 0xFFFD, 0x535D, 0xFFFD, 0x4C50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0968 */ 0x4F26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7673, -/* 0970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6177, 0xFFFD, 0xFFFD, -/* 0978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x535C, 0xFFFD, 0xFFFD, 0x7A7E, 0xFFFD, -/* 0980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A27, 0x6B59, -/* 0988 */ 0xFFFD, 0x4F27, 0x6A2F, 0x646F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6939, -/* 0990 */ 0x7158, 0xFFFD, 0xFFFD, 0x5858, 0xFFFD, 0xFFFD, 0x6072, 0x6634, -/* 0998 */ 0x5C7C, 0x7371, 0xFFFD, 0xFFFD, 0xFFFD, 0x6350, 0xFFFD, 0xFFFD, -/* 09A0 */ 0x727B, 0xFFFD, 0x5B46, 0x5071, 0xFFFD, 0x5072, 0xFFFD, 0xFFFD, -/* 09A8 */ 0xFFFD, 0x4F5C, 0xFFFD, 0x5351, 0xFFFD, 0xFFFD, 0x4C31, 0x7758, -/* 09B0 */ 0xFFFD, 0x4B28, 0x6B3C, 0x643E, 0x745C, 0xFFFD, 0xFFFD, 0x5C42, -/* 09B8 */ 0xFFFD, 0xFFFD, 0x7027, 0xFFFD, 0xFFFD, 0x6640, 0xFFFD, 0xFFFD, -/* 09C0 */ 0x4A6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x686B, 0x6568, 0x5C43, -/* 09C8 */ 0xFFFD, 0xFFFD, 0x6D5E, 0x5372, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09D0 */ 0x4C77, 0x4E54, 0x672B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B43, 0xFFFD, -/* 09D8 */ 0x6131, 0xFFFD, 0xFFFD, 0x7732, 0xFFFD, 0xFFFD, 0x5373, 0x5352, -/* 09E0 */ 0xFFFD, 0x7540, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F5D, 0xFFFD, 0xFFFD, -/* 09E8 */ 0x6E73, 0x6771, 0xFFFD, 0x7D34, 0x7248, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09F0 */ 0x7352, 0xFFFD, 0xFFFD, 0x6E74, 0xFFFD, 0x6253, 0xFFFD, 0xFFFD, -/* 09F8 */ 0xFFFD, 0xFFFD, 0x4C51, 0xFFFD, 0x5F6A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A00 */ 0x693A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A08 */ 0xFFFD, 0xFFFD, 0x5957, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x754D, 0xFFFD, 0x7172, 0x7A47, 0xFFFD, -/* 0A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5978, -/* 0A20 */ 0x5442, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7665, 0xFFFD, 0xFFFD, -/* 0A28 */ 0xFFFD, 0xFFFD, 0x5D45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A30 */ 0xFFFD, 0x6772, 0x6D5F, 0xFFFD, 0xFFFD, 0x4A4B, 0xFFFD, 0xFFFD, -/* 0A38 */ 0x5B7A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6835, 0xFFFD, 0x5326, 0xFFFD, -/* 0A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D35, 0xFFFD, 0xFFFD, -/* 0A48 */ 0x7949, 0xFFFD, 0x6462, 0xFFFD, 0x7B3D, 0xFFFD, 0xFFFD, 0x5724, -/* 0A50 */ 0x4E45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E55, 0x5666, 0xFFFD, -/* 0A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x653D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A60 */ 0xFFFD, 0xFFFD, 0x5E4D, 0x6C73, 0xFFFD, 0xFFFD, 0x6D60, 0xFFFD, -/* 0A68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A70 */ 0x6C6C, 0x7B3E, 0x5F6B, 0xFFFD, 0x6178, 0x793E, 0xFFFD, 0xFFFD, -/* 0A78 */ 0xFFFD, 0xFFFD, 0x5073, 0x602A, 0x6862, 0xFFFD, 0xFFFD, 0x6254, -/* 0A80 */ 0x527D, 0xFFFD, 0x6528, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A88 */ 0x5953, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x535E, 0xFFFD, 0x7438, -/* 0A90 */ 0x773C, 0x5C7D, 0xFFFD, 0x686C, 0x6467, 0xFFFD, 0xFFFD, 0x6377, -/* 0A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C28, 0xFFFD, 0xFFFD, -/* 0AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AA8 */ 0xFFFD, 0xFFFD, 0x6572, 0xFFFD, 0xFFFD, 0x5074, 0x522F, 0x5C65, -/* 0AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5025, 0x7134, 0x7C31, 0x4C78, -/* 0AB8 */ 0xFFFD, 0xFFFD, 0x5D46, 0x7A51, 0xFFFD, 0x775F, 0xFFFD, 0xFFFD, -/* 0AC0 */ 0x7A28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E75, 0xFFFD, -/* 0AC8 */ 0x5E4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6773, 0xFFFD, 0xFFFD, -/* 0AD0 */ 0x772C, 0x6B44, 0x6D61, 0x602B, 0x5D47, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AD8 */ 0xFFFD, 0x5233, 0x523F, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A4C, 0xFFFD, -/* 0AE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7B3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AE8 */ 0x657D, 0x5D65, 0x584D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AF0 */ 0x6C74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AF8 */ 0xFFFD, 0x5075, 0xFFFD, 0xFFFD, 0x686D, 0x5052, 0xFFFD, 0x5958, -/* 0B00 */ 0x7666, 0xFFFD, 0xFFFD, 0x5B2A, 0xFFFD, 0xFFFD, 0xFFFD, 0x7760, -/* 0B08 */ 0x5859, 0xFFFD, 0x7423, 0xFFFD, 0xFFFD, 0x745D, 0xFFFD, 0xFFFD, -/* 0B10 */ 0xFFFD, 0xFFFD, 0x6F51, 0xFFFD, 0xFFFD, 0x5935, 0xFFFD, 0xFFFD, -/* 0B18 */ 0x6D2B, 0xFFFD, 0x6337, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E3B, -/* 0B20 */ 0x4D34, 0xFFFD, 0x6073, 0x6A4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B28 */ 0x6C75, 0x686E, 0xFFFD, 0x4B29, 0x712F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A4D, 0xFFFD, 0x6C29, -/* 0B38 */ 0xFFFD, 0x726B, 0xFFFD, 0x7D6F, 0xFFFD, 0x7973, 0xFFFD, 0xFFFD, -/* 0B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6641, -/* 0B48 */ 0xFFFD, 0xFFFD, 0x6C58, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D2C, 0xFFFD, -/* 0B50 */ 0x6A4E, 0xFFFD, 0x685F, 0x5E4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B58 */ 0xFFFD, 0xFFFD, 0x5226, 0xFFFD, 0xFFFD, 0x6774, 0x5156, 0xFFFD, -/* 0B60 */ 0xFFFD, 0x6642, 0x6363, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6430, -/* 0B68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5834, 0x7625, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B70 */ 0xFFFD, 0xFFFD, 0x735E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5725, -/* 0B78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7768, 0xFFFD, 0xFFFD, 0x6846, -/* 0B80 */ 0x7B66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B88 */ 0x5D66, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C7E, 0x585A, 0xFFFD, 0xFFFD, -/* 0B90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A2C, 0x6A30, 0xFFFD, -/* 0B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6338, -/* 0BA0 */ 0x4A2A, 0x6179, 0xFFFD, 0x6A31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BA8 */ 0x726C, 0xFFFD, 0xFFFD, 0x7A6E, 0x6E55, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BB0 */ 0xFFFD, 0x7974, 0xFFFD, 0xFFFD, 0x526C, 0x7B7B, 0xFFFD, 0xFFFD, -/* 0BB8 */ 0xFFFD, 0x7D70, 0xFFFD, 0x603D, 0x4E63, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7846, 0x5F45, -/* 0BC8 */ 0xFFFD, 0xFFFD, 0x653E, 0x6D2D, 0x7A6A, 0xFFFD, 0xFFFD, 0x4D6E, -/* 0BD0 */ 0x6D26, 0xFFFD, 0x6D2E, 0x706D, 0xFFFD, 0x5D21, 0xFFFD, 0x6D2F, -/* 0BD8 */ 0x7C78, 0xFFFD, 0x586B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C79, 0x4D35, -/* 0BE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A29, 0xFFFD, 0x615D, 0xFFFD, -/* 0BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6255, 0x6D4F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BF0 */ 0x5D22, 0xFFFD, 0xFFFD, 0x794A, 0xFFFD, 0x6A68, 0xFFFD, 0x656D, -/* 0BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C00 */ 0x536B, 0xFFFD, 0x6954, 0x617A, 0x644C, 0xFFFD, 0x6164, 0x6847, -/* 0C08 */ 0xFFFD, 0xFFFD, 0x4E5B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C55, 0xFFFD, -/* 0C10 */ 0x7735, 0x7C73, 0x7073, 0x4E2F, 0x7135, 0x6F52, 0x6848, 0x6B71, -/* 0C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B54, 0x603E, 0x6378, -/* 0C20 */ 0x6A69, 0x7C32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6074, -/* 0C28 */ 0xFFFD, 0x4F60, 0xFFFD, 0x6E25, 0xFFFD, 0xFFFD, 0x7A2A, 0x6643, -/* 0C30 */ 0x6132, 0x4A2B, 0xFFFD, 0x6364, 0x693B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C38 */ 0xFFFD, 0xFFFD, 0x6256, 0x7372, 0xFFFD, 0x6E56, 0x6A32, 0x5076, -/* 0C40 */ 0x6C59, 0x5A4B, 0x4F28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D23, -/* 0C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x585B, 0xFFFD, 0x794E, 0x6955, 0x6351, -/* 0C50 */ 0xFFFD, 0xFFFD, 0x523C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C58 */ 0xFFFD, 0x582C, 0x734C, 0xFFFD, 0x4D7B, 0x7656, 0xFFFD, 0x6775, -/* 0C60 */ 0x686F, 0x6379, 0x523B, 0x7373, 0x637B, 0xFFFD, 0x5E50, 0x4E30, -/* 0C68 */ 0xFFFD, 0x5677, 0x7159, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C70 */ 0x7541, 0x5C44, 0xFFFD, 0x753B, 0xFFFD, 0x5E51, 0xFFFD, 0xFFFD, -/* 0C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C66, 0xFFFD, 0xFFFD, 0x5E52, -/* 0C80 */ 0xFFFD, 0xFFFD, 0x6D62, 0x6E76, 0x6A4F, 0x706E, 0x637C, 0xFFFD, -/* 0C88 */ 0x535F, 0x5374, 0x6133, 0xFFFD, 0x6134, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C90 */ 0xFFFD, 0x7453, 0xFFFD, 0xFFFD, 0x5F46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6956, -/* 0CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B2B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7626, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6339, 0x6B45, 0x7429, 0x4D36, 0x5279, -/* 0CB8 */ 0xFFFD, 0x5A2D, 0x5263, 0x4F51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC0 */ 0x4B5C, 0x4C7A, 0xFFFD, 0x4F5D, 0xFFFD, 0xFFFD, 0x6829, 0xFFFD, -/* 0CC8 */ 0x633B, 0x633A, 0xFFFD, 0xFFFD, 0x605A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CD0 */ 0x6E77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C33, 0xFFFD, -/* 0CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5375, 0xFFFD, 0x5726, 0xFFFD, 0x7635, -/* 0CE0 */ 0x575B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6155, -/* 0CE8 */ 0xFFFD, 0xFFFD, 0x546A, 0xFFFD, 0x5F23, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D5F, 0x5077, 0x6D54, 0x4B2A, -/* 0CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x645B, -/* 0D00 */ 0xFFFD, 0x617B, 0x4B22, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5360, -/* 0D08 */ 0xFFFD, 0x643F, 0xFFFD, 0x7B40, 0xFFFD, 0x5A3E, 0x644D, 0xFFFD, -/* 0D10 */ 0x5639, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F40, 0xFFFD, 0x617C, 0x7639, -/* 0D18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F47, 0xFFFD, -/* 0D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6431, 0xFFFD, -/* 0D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C67, 0x5C68, 0xFFFD, -/* 0D30 */ 0xFFFD, 0xFFFD, 0x7A56, 0xFFFD, 0x5376, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D38 */ 0xFFFD, 0x715A, 0xFFFD, 0x7A72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x627D, 0xFFFD, 0xFFFD, -/* 0D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x554F, 0x5078, 0xFFFD, 0xFFFD, 0x4D5F, -/* 0D50 */ 0xFFFD, 0xFFFD, 0x754B, 0xFFFD, 0x6470, 0x4B2B, 0xFFFD, 0x5744, -/* 0D58 */ 0x627E, 0xFFFD, 0x5D5A, 0x5A2E, 0x4A6E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D60 */ 0x5539, 0x6321, 0xFFFD, 0xFFFD, 0x6863, 0xFFFD, 0xFFFD, 0x732B, -/* 0D68 */ 0x4F29, 0xFFFD, 0xFFFD, 0xFFFD, 0x5377, 0x5471, 0xFFFD, 0xFFFD, -/* 0D70 */ 0x4E64, 0xFFFD, 0x6872, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D78 */ 0xFFFD, 0xFFFD, 0x6575, 0x672E, 0xFFFD, 0x563A, 0xFFFD, 0x5F6C, -/* 0D80 */ 0x6440, 0x6864, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5835, 0xFFFD, -/* 0D88 */ 0xFFFD, 0xFFFD, 0x645C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D90 */ 0xFFFD, 0x7439, 0x7136, 0xFFFD, 0xFFFD, 0x625E, 0x6135, 0xFFFD, -/* 0D98 */ 0xFFFD, 0x4D6F, 0x7127, 0x4E65, 0x4B5D, 0xFFFD, 0xFFFD, 0x5963, -/* 0DA0 */ 0xFFFD, 0xFFFD, 0x732C, 0xFFFD, 0xFFFD, 0x5079, 0x6C2B, 0x5E53, -/* 0DA8 */ 0x7769, 0xFFFD, 0xFFFD, 0x7975, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DB0 */ 0xFFFD, 0x615E, 0x4B6E, 0xFFFD, 0xFFFD, 0xFFFD, 0x633C, 0x7856, -/* 0DB8 */ 0xFFFD, 0xFFFD, 0x5B6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DC0 */ 0x7D71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7736, 0xFFFD, 0xFFFD, -/* 0DC8 */ 0xFFFD, 0xFFFD, 0x745E, 0xFFFD, 0xFFFD, 0x726D, 0xFFFD, 0x5B59, -/* 0DD0 */ 0xFFFD, 0x7028, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DD8 */ 0xFFFD, 0x617D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E54, -/* 0DE0 */ 0xFFFD, 0x602C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D63, -/* 0DE8 */ 0xFFFD, 0xFFFD, 0x5361, 0xFFFD, 0x5F48, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DF0 */ 0xFFFD, 0x5936, 0xFFFD, 0x7D2C, 0x6F53, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DF8 */ 0x6441, 0x786B, 0xFFFD, 0x5B2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E00 */ 0x7C46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E08 */ 0xFFFD, 0x582D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x763A, 0xFFFD, 0x5B5F, 0x5353, 0x7847, -/* 0E18 */ 0x4A4E, 0x7841, 0x5234, 0xFFFD, 0xFFFD, 0x5C34, 0x7A39, 0x4A4F, -/* 0E20 */ 0xFFFD, 0x7C33, 0x6A6A, 0x6A6B, 0x507A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E28 */ 0xFFFD, 0xFFFD, 0x6D64, 0xFFFD, 0xFFFD, 0x5D67, 0xFFFD, 0xFFFD, -/* 0E30 */ 0x5F49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F6D, 0xFFFD, 0xFFFD, -/* 0E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E3C, 0xFFFD, 0x6F41, 0xFFFD, 0xFFFD, -/* 0E40 */ 0x4C52, 0xFFFD, 0x5D24, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F4A, 0xFFFD, -/* 0E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5378, 0x7128, 0xFFFD, 0xFFFD, -/* 0E50 */ 0xFFFD, 0x4D37, 0xFFFD, 0x6F54, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x645D, 0x5F6E, 0x4B2C, 0x693C, 0xFFFD, -/* 0E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A6C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E68 */ 0x5F4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x793F, 0x562F, -/* 0E70 */ 0x5546, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F2A, 0xFFFD, -/* 0E78 */ 0xFFFD, 0x4E29, 0xFFFD, 0xFFFD, 0x5678, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E80 */ 0x7137, 0x6E78, 0xFFFD, 0xFFFD, 0xFFFD, 0x5959, 0x735F, 0xFFFD, -/* 0E88 */ 0x7848, 0x4E46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E90 */ 0xFFFD, 0xFFFD, 0x5566, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E98 */ 0xFFFD, 0x7466, 0xFFFD, 0xFFFD, 0x6645, 0x6F55, 0xFFFD, 0xFFFD, -/* 0EA0 */ 0x4B6F, 0x7C5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C27, -/* 0EA8 */ 0xFFFD, 0xFFFD, 0x5667, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EB0 */ 0x7849, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6352, 0xFFFD, 0x633D, -/* 0EB8 */ 0xFFFD, 0x4F61, 0x7040, 0x6C5A, 0xFFFD, 0x5D57, 0x7B70, 0xFFFD, -/* 0EC0 */ 0xFFFD, 0x6C2C, 0xFFFD, 0xFFFD, 0xFFFD, 0x7029, 0xFFFD, 0xFFFD, -/* 0EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A57, 0x7B41, 0xFFFD, 0x5240, -/* 0ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6530, -/* 0ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EE0 */ 0x4B2D, 0xFFFD, 0x7930, 0x7725, 0xFFFD, 0x4B2E, 0xFFFD, 0x5A2F, -/* 0EE8 */ 0xFFFD, 0x5836, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EF0 */ 0xFFFD, 0x5327, 0x7B32, 0xFFFD, 0x7D44, 0xFFFD, 0x6C2D, 0xFFFD, -/* 0EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B21, 0xFFFD, 0xFFFD, -/* 0F00 */ 0xFFFD, 0x6569, 0x696E, 0xFFFD, 0x7374, 0x7873, 0x7041, 0x5E2F, -/* 0F08 */ 0x7830, 0xFFFD, 0xFFFD, 0x7360, 0x672F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F10 */ 0xFFFD, 0xFFFD, 0x5B2D, 0xFFFD, 0x6635, 0xFFFD, 0xFFFD, 0x7928, -/* 0F18 */ 0xFFFD, 0xFFFD, 0x5D58, 0x6859, 0x6F56, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F20 */ 0x5362, 0xFFFD, 0x625F, 0xFFFD, 0xFFFD, 0x7C60, 0x5748, 0x7D2D, -/* 0F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F6F, 0x4C53, 0x5379, 0xFFFD, 0xFFFD, -/* 0F30 */ 0xFFFD, 0xFFFD, 0x5470, 0x5B47, 0x5E55, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F38 */ 0xFFFD, 0x7074, 0xFFFD, 0x5550, 0x6559, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7C47, 0x5C56, 0x6260, 0xFFFD, 0xFFFD, -/* 0F48 */ 0xFFFD, 0x5A30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F50 */ 0x7323, 0xFFFD, 0x536C, 0xFFFD, 0x744B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F58 */ 0x7D45, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x637D, 0xFFFD, -/* 0F60 */ 0x7931, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x507B, -/* 0F68 */ 0x6C5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F70 */ 0xFFFD, 0x753C, 0x7224, 0x584E, 0x584F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7577, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7661, 0xFFFD, -/* 0F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F90 */ 0x5237, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F98 */ 0x7B6C, 0xFFFD, 0x5D48, 0x6468, 0xFFFD, 0xFFFD, 0x5241, 0xFFFD, -/* 0FA0 */ 0xFFFD, 0xFFFD, 0x7857, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FA8 */ 0x563B, 0x5E56, 0xFFFD, 0xFFFD, 0x773D, 0x6C2E, 0xFFFD, 0xFFFD, -/* 0FB0 */ 0xFFFD, 0x5061, 0xFFFD, 0x6075, 0x6A33, 0xFFFD, 0x4E56, 0xFFFD, -/* 0FB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C25, 0x6C76, 0x6261, 0x633E, 0xFFFD, -/* 0FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FC8 */ 0x7C48, 0xFFFD, 0xFFFD, 0x4D70, 0xFFFD, 0x7976, 0xFFFD, 0xFFFD, -/* 0FD0 */ 0x5F70, 0xFFFD, 0xFFFD, 0xFFFD, 0x653F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FD8 */ 0x4E3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C61, 0x6D30, 0x7D51, -/* 0FE0 */ 0x763B, 0xFFFD, 0xFFFD, 0x794F, 0x6B5A, 0x4A41, 0xFFFD, 0x5238, -/* 0FE8 */ 0x4D71, 0xFFFD, 0x6353, 0x7D66, 0x666D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FF0 */ 0x637A, 0xFFFD, 0xFFFD, 0x702A, 0x7950, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7C62, 0xFFFD, 0x7827, 0xFFFD, 0xFFFD, -/* 1000 */ 0xFFFD, 0x6165, 0x6E79, 0xFFFD, 0xFFFD, 0xFFFD, 0x6776, 0x6A6D, -/* 1008 */ 0xFFFD, 0xFFFD, 0x7C34, 0x7542, 0xFFFD, 0xFFFD, 0x575C, 0xFFFD, -/* 1010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7075, -/* 1018 */ 0xFFFD, 0x5D68, 0x536D, 0x757C, 0xFFFD, 0x5A3F, 0xFFFD, 0x4C7B, -/* 1020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x537A, 0x7424, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F57, 0xFFFD, 0x5443, 0xFFFD, -/* 1030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1038 */ 0x7B63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1040 */ 0xFFFD, 0x7B6D, 0xFFFD, 0x602D, 0xFFFD, 0xFFFD, 0x6A6E, 0x7B33, -/* 1048 */ 0x6442, 0x7667, 0x525D, 0xFFFD, 0x5F4C, 0xFFFD, 0xFFFD, 0x7C49, -/* 1050 */ 0xFFFD, 0xFFFD, 0x6529, 0x6076, 0x7633, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1058 */ 0xFFFD, 0xFFFD, 0x617E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B70, -/* 1060 */ 0xFFFD, 0x6A6F, 0x6A70, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A40, 0x7834, -/* 1068 */ 0x6B72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6443, 0xFFFD, -/* 1070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6957, 0x6471, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1078 */ 0x4A6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1080 */ 0x4E57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1088 */ 0xFFFD, 0x7C4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x7361, 0xFFFD, 0xFFFD, -/* 1090 */ 0x4B44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6365, 0xFFFD, 0x4B45, -/* 1098 */ 0x6A34, 0xFFFD, 0xFFFD, 0x693D, 0xFFFD, 0x5749, 0xFFFD, 0xFFFD, -/* 10A0 */ 0x6B5B, 0x6D31, 0xFFFD, 0x4C43, 0x773E, 0x7C4B, 0xFFFD, 0xFFFD, -/* 10A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7874, 0xFFFD, 0x5937, 0xFFFD, -/* 10B0 */ 0xFFFD, 0x7353, 0x7354, 0xFFFD, 0xFFFD, 0xFFFD, 0x7764, 0xFFFD, -/* 10B8 */ 0x7751, 0xFFFD, 0xFFFD, 0x5837, 0x4E31, 0x4A42, 0xFFFD, 0xFFFD, -/* 10C0 */ 0x7B34, 0x4B46, 0xFFFD, 0xFFFD, 0x7076, 0xFFFD, 0xFFFD, 0x5567, -/* 10C8 */ 0xFFFD, 0x6A50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C54, -/* 10D0 */ 0x4B2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x742A, 0x692F, -/* 10D8 */ 0xFFFD, 0xFFFD, 0x7543, 0x6958, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D69, 0xFFFD, 0xFFFD, 0xFFFD, 0x7173, -/* 10E8 */ 0xFFFD, 0x557B, 0x5E3B, 0xFFFD, 0xFFFD, 0x747B, 0xFFFD, 0xFFFD, -/* 10F0 */ 0xFFFD, 0x7D73, 0x7D72, 0x7726, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D49, 0xFFFD, 0xFFFD, -/* 1100 */ 0x5453, 0xFFFD, 0x4C28, 0xFFFD, 0x5A41, 0x4C55, 0xFFFD, 0x5964, -/* 1108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6563, -/* 1110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x533C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A70, -/* 1118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5044, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1120 */ 0x4A50, 0x7A2B, 0x6B6B, 0x6778, 0x5965, 0x7324, 0xFFFD, 0xFFFD, -/* 1128 */ 0xFFFD, 0x547B, 0x7C63, 0x7A58, 0xFFFD, 0x7355, 0xFFFD, 0x4F2B, -/* 1130 */ 0xFFFD, 0xFFFD, 0x6B73, 0x557C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1138 */ 0xFFFD, 0xFFFD, 0x5354, 0x4D7C, 0xFFFD, 0x5966, 0xFFFD, 0x6279, -/* 1140 */ 0x6221, 0x6B54, 0xFFFD, 0x6077, 0x6432, 0x4C7C, 0xFFFD, 0xFFFD, -/* 1148 */ 0xFFFD, 0x7B64, 0xFFFD, 0xFFFD, 0xFFFD, 0x742B, 0xFFFD, 0xFFFD, -/* 1150 */ 0xFFFD, 0xFFFD, 0x503D, 0xFFFD, 0x4A71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F38, 0xFFFD, 0xFFFD, -/* 1160 */ 0xFFFD, 0x5740, 0xFFFD, 0x6E7A, 0x7D74, 0xFFFD, 0xFFFD, 0x5363, -/* 1168 */ 0xFFFD, 0x7B42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1170 */ 0xFFFD, 0x5568, 0x5B2E, 0x6136, 0x7837, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1178 */ 0xFFFD, 0xFFFD, 0x603F, 0x7B43, 0x5D6A, 0xFFFD, 0x6222, 0xFFFD, -/* 1180 */ 0x6E26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7668, 0xFFFD, -/* 1188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7675, 0x5D4A, 0xFFFD, 0xFFFD, 0x5062, -/* 1190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D26, 0xFFFD, 0xFFFD, 0x5D6B, -/* 1198 */ 0xFFFD, 0xFFFD, 0x6479, 0xFFFD, 0xFFFD, 0x632F, 0x507C, 0xFFFD, -/* 11A0 */ 0xFFFD, 0xFFFD, 0x747C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C3C, -/* 11A8 */ 0x776A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6564, -/* 11B0 */ 0x5F71, 0xFFFD, 0xFFFD, 0x7761, 0xFFFD, 0x7977, 0x6F39, 0xFFFD, -/* 11B8 */ 0xFFFD, 0x7858, 0x7929, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11C0 */ 0x7859, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E3D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11C8 */ 0x5846, 0xFFFD, 0xFFFD, 0x6463, 0x754E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11D0 */ 0xFFFD, 0x5D59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5967, 0x5239, -/* 11D8 */ 0x5543, 0xFFFD, 0xFFFD, 0x5A65, 0x5A50, 0xFFFD, 0x5159, 0x4E58, -/* 11E0 */ 0xFFFD, 0x4B5E, 0x742C, 0x5A7B, 0xFFFD, 0x7669, 0x6873, 0x4F2C, -/* 11E8 */ 0x7070, 0xFFFD, 0x747D, 0x5B48, 0x4E40, 0x6354, 0x514F, 0x7175, -/* 11F0 */ 0xFFFD, 0x4D72, 0xFFFD, 0x4F6B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D38, -/* 11F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6326, 0x515A, -/* 1200 */ 0xFFFD, 0x7225, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7226, -/* 1208 */ 0xFFFD, 0x644E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1210 */ 0xFFFD, 0x537B, 0x7129, 0xFFFD, 0xFFFD, 0xFFFD, 0x7249, 0xFFFD, -/* 1218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1220 */ 0xFFFD, 0x6F58, 0x6649, 0xFFFD, 0x5838, 0x7A73, 0xFFFD, 0xFFFD, -/* 1228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1230 */ 0x7335, 0xFFFD, 0xFFFD, 0x7824, 0xFFFD, 0xFFFD, 0x5173, 0x6648, -/* 1238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x785A, 0x5C69, 0x5E57, 0xFFFD, -/* 1240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B5F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1248 */ 0x4F6C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x745F, 0xFFFD, 0xFFFD, -/* 1250 */ 0x5174, 0x523A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F72, 0xFFFD, 0xFFFD, -/* 1258 */ 0xFFFD, 0x6137, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6223, 0x537C, -/* 1260 */ 0xFFFD, 0xFFFD, 0x6D66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1268 */ 0x5B49, 0xFFFD, 0xFFFD, 0xFFFD, 0x647A, 0xFFFD, 0x4F5E, 0xFFFD, -/* 1270 */ 0xFFFD, 0x4E50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5553, 0x7375, -/* 1278 */ 0x772E, 0xFFFD, 0xFFFD, 0x6F48, 0xFFFD, 0x4D73, 0x754F, 0x6573, -/* 1280 */ 0x7042, 0x4A51, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A71, 0xFFFD, 0x5026, -/* 1288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1290 */ 0x595A, 0x702B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B67, -/* 1298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6540, 0x7C35, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A0 */ 0xFFFD, 0xFFFD, 0x6444, 0x4C29, 0x7D46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A8 */ 0xFFFD, 0xFFFD, 0x6A35, 0xFFFD, 0x652A, 0x5F3A, 0x615F, 0xFFFD, -/* 12B0 */ 0x5A51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6138, 0xFFFD, 0x6874, -/* 12B8 */ 0x537D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6224, 0xFFFD, 0xFFFD, -/* 12C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x724A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A66, 0x7733, 0x7D4D, -/* 12D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7336, 0x6E57, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7544, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5824, 0xFFFD, 0xFFFD, -/* 12E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7227, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5938, 0x5939, 0x6F49, 0x564E, -/* 12F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1300 */ 0x774B, 0x5F2E, 0x6875, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1308 */ 0xFFFD, 0x5235, 0xFFFD, 0xFFFD, 0xFFFD, 0x5355, 0xFFFD, 0xFFFD, -/* 1310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x744C, 0x5A7C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1318 */ 0xFFFD, 0xFFFD, 0x5968, 0xFFFD, 0x776B, 0x7549, 0xFFFD, 0x733C, -/* 1320 */ 0xFFFD, 0x5A52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1328 */ 0xFFFD, 0xFFFD, 0x5335, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1330 */ 0x6836, 0xFFFD, 0xFFFD, 0x564F, 0x743A, 0xFFFD, 0x7749, 0xFFFD, -/* 1338 */ 0xFFFD, 0x4C2A, 0xFFFD, 0xFFFD, 0x7043, 0x4C56, 0xFFFD, 0xFFFD, -/* 1340 */ 0xFFFD, 0x5053, 0xFFFD, 0x533D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B7B, -/* 1348 */ 0xFFFD, 0x4B60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1350 */ 0x5364, 0x7677, 0xFFFD, 0xFFFD, 0x553A, 0x734D, 0x4B61, 0xFFFD, -/* 1358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1360 */ 0xFFFD, 0x742D, 0xFFFD, 0x7C2A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1368 */ 0xFFFD, 0x776C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6876, 0xFFFD, 0x5A67, -/* 1370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x774C, 0x6541, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1378 */ 0xFFFD, 0x606E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x557D, -/* 1380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E66, 0x7C2B, -/* 1388 */ 0x553B, 0xFFFD, 0xFFFD, 0x7228, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1390 */ 0xFFFD, 0xFFFD, 0x6225, 0x4D39, 0x6A72, 0x4B47, 0xFFFD, 0x4D74, -/* 1398 */ 0xFFFD, 0xFFFD, 0x5B2F, 0x6F59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13A0 */ 0xFFFD, 0x4D3A, 0xFFFD, 0xFFFD, 0x7C79, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13A8 */ 0xFFFD, 0x5F73, 0x4E67, 0x5A42, 0xFFFD, 0x4F2D, 0xFFFD, 0xFFFD, -/* 13B0 */ 0xFFFD, 0xFFFD, 0x6779, 0x7828, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13B8 */ 0xFFFD, 0xFFFD, 0x7362, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A72, 0x5F24, -/* 13C0 */ 0xFFFD, 0xFFFD, 0x5444, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13C8 */ 0x4C57, 0x6542, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D3B, 0xFFFD, -/* 13D0 */ 0x6F5A, 0x6E58, 0xFFFD, 0x5D27, 0x6226, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13D8 */ 0xFFFD, 0xFFFD, 0x6040, 0xFFFD, 0xFFFD, 0xFFFD, 0x5630, 0x784A, -/* 13E0 */ 0xFFFD, 0x7C7A, 0xFFFD, 0x597E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13E8 */ 0x5E30, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D6C, 0x5A68, 0xFFFD, 0xFFFD, -/* 13F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5460, 0xFFFD, 0x5679, 0xFFFD, 0x4D57, -/* 13F8 */ 0x5E58, 0xFFFD, 0xFFFD, 0x7278, 0xFFFD, 0x6456, 0xFFFD, 0xFFFD, -/* 1400 */ 0x5045, 0x742E, 0xFFFD, 0x5D28, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D45, -/* 1408 */ 0x7356, 0xFFFD, 0xFFFD, 0x5E59, 0x6366, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5328, 0xFFFD, 0x5B30, 0xFFFD, 0xFFFD, -/* 1418 */ 0x655A, 0x633F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B31, 0xFFFD, 0xFFFD, -/* 1420 */ 0xFFFD, 0x5569, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6041, -/* 1428 */ 0x6F5B, 0xFFFD, 0xFFFD, 0x7069, 0xFFFD, 0xFFFD, 0x5732, 0xFFFD, -/* 1430 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x507D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1438 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5969, 0xFFFD, 0xFFFD, 0x507E, -/* 1440 */ 0xFFFD, 0x6C6D, 0x5329, 0xFFFD, 0x7229, 0x7044, 0xFFFD, 0xFFFD, -/* 1448 */ 0x6262, 0x696F, 0xFFFD, 0xFFFD, 0xFFFD, 0x7951, 0xFFFD, 0xFFFD, -/* 1450 */ 0x6959, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x685A, 0x5A43, -/* 1458 */ 0x5A44, 0x5445, 0xFFFD, 0x677A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1460 */ 0xFFFD, 0xFFFD, 0x4D60, 0x6330, 0xFFFD, 0x5B32, 0x7B44, 0xFFFD, -/* 1468 */ 0x7363, 0xFFFD, 0x5925, 0x7B67, 0x5D4B, 0x5054, 0xFFFD, 0x6636, -/* 1470 */ 0x602E, 0x7D5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1478 */ 0xFFFD, 0xFFFD, 0x5C35, 0x6078, 0x6731, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1480 */ 0xFFFD, 0x7570, 0xFFFD, 0x585C, 0x6D46, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1488 */ 0xFFFD, 0x6139, 0xFFFD, 0x6340, 0x7940, 0x6970, 0xFFFD, 0xFFFD, -/* 1490 */ 0x595B, 0xFFFD, 0x7364, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C36, 0x6469, -/* 1498 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7045, 0x6341, 0x7C4C, -/* 14A0 */ 0x7C4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x724B, 0xFFFD, 0x724C, -/* 14A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x644F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x715B, 0xFFFD, 0x7A59, -/* 14B8 */ 0xFFFD, 0x7138, 0x7D75, 0x6079, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14C0 */ 0x677B, 0x7C37, 0x7C64, 0x7B45, 0x6367, 0x5839, 0xFFFD, 0x7678, -/* 14C8 */ 0xFFFD, 0xFFFD, 0x5C45, 0x4C58, 0xFFFD, 0xFFFD, 0xFFFD, 0x602F, -/* 14D0 */ 0x7467, 0xFFFD, 0x6F5C, 0x4F7C, 0x6F5D, 0xFFFD, 0x722A, 0xFFFD, -/* 14D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14E0 */ 0x7D3E, 0xFFFD, 0xFFFD, 0x4A2C, 0x7D3B, 0x7D47, 0xFFFD, 0xFFFD, -/* 14E8 */ 0xFFFD, 0xFFFD, 0x6732, 0xFFFD, 0x6A51, 0x5F74, 0xFFFD, 0xFFFD, -/* 14F0 */ 0xFFFD, 0xFFFD, 0x516C, 0x645E, 0x6543, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14F8 */ 0xFFFD, 0x5926, 0xFFFD, 0xFFFD, 0x4D3C, 0xFFFD, 0x7365, 0xFFFD, -/* 1500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D55, -/* 1508 */ 0xFFFD, 0xFFFD, 0x593A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D67, 0x7B35, -/* 1510 */ 0x786C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6067, 0xFFFD, 0x4C59, -/* 1518 */ 0xFFFD, 0xFFFD, 0x5446, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1520 */ 0x6725, 0xFFFD, 0x5575, 0x533E, 0xFFFD, 0x7C7B, 0x6472, 0xFFFD, -/* 1528 */ 0xFFFD, 0x5F75, 0xFFFD, 0xFFFD, 0x6878, 0x786D, 0xFFFD, 0xFFFD, -/* 1530 */ 0x4E47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D76, 0xFFFD, -/* 1538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1540 */ 0x6858, 0xFFFD, 0x4D58, 0x6756, 0x4C5A, 0xFFFD, 0xFFFD, 0x4A63, -/* 1548 */ 0x5F76, 0x7047, 0x7046, 0xFFFD, 0x583A, 0xFFFD, 0x7174, 0x7470, -/* 1550 */ 0x754C, 0xFFFD, 0xFFFD, 0x7C65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1558 */ 0x6A45, 0x6A73, 0xFFFD, 0x5D5B, 0xFFFD, 0x5C57, 0xFFFD, 0xFFFD, -/* 1560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E7D, 0x7279, 0xFFFD, 0x5547, -/* 1568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5850, 0xFFFD, 0x7048, 0x5121, 0x5122, -/* 1570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5954, 0x5668, -/* 1578 */ 0x594A, 0xFFFD, 0x5A31, 0x5847, 0x5C62, 0x734E, 0x7574, 0xFFFD, -/* 1580 */ 0xFFFD, 0x7139, 0xFFFD, 0xFFFD, 0x5A53, 0xFFFD, 0x766A, 0xFFFD, -/* 1588 */ 0xFFFD, 0xFFFD, 0x4F75, 0xFFFD, 0xFFFD, 0x7D2E, 0xFFFD, 0xFFFD, -/* 1590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A52, 0xFFFD, -/* 1598 */ 0xFFFD, 0x5F34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x575D, 0x7A3A, -/* 15A0 */ 0x6E27, 0x753D, 0xFFFD, 0x7875, 0xFFFD, 0xFFFD, 0x6D68, 0xFFFD, -/* 15A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5461, 0xFFFD, 0x5123, 0x6156, -/* 15B0 */ 0x7978, 0xFFFD, 0x5B4A, 0x4B79, 0x5454, 0xFFFD, 0x595C, 0xFFFD, -/* 15B8 */ 0x6E3E, 0xFFFD, 0x776D, 0xFFFD, 0xFFFD, 0xFFFD, 0x526E, 0xFFFD, -/* 15C0 */ 0xFFFD, 0x6166, 0x7779, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15C8 */ 0xFFFD, 0xFFFD, 0x5D6D, 0xFFFD, 0x685B, 0xFFFD, 0x5B33, 0xFFFD, -/* 15D0 */ 0xFFFD, 0xFFFD, 0x5177, 0x6030, 0xFFFD, 0xFFFD, 0x5462, 0xFFFD, -/* 15D8 */ 0x7657, 0xFFFD, 0x5779, 0xFFFD, 0xFFFD, 0x585D, 0xFFFD, 0x4D7D, -/* 15E0 */ 0x722B, 0x4D3D, 0x7842, 0xFFFD, 0xFFFD, 0x722C, 0xFFFD, 0xFFFD, -/* 15E8 */ 0x4A2D, 0x4A2E, 0x4F2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15F0 */ 0x6342, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C37, 0xFFFD, -/* 15F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1600 */ 0xFFFD, 0x5B5A, 0x593B, 0x4A73, 0x7653, 0x6678, 0x6A75, 0xFFFD, -/* 1608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A76, 0xFFFD, 0xFFFD, 0x7679, -/* 1610 */ 0x4F2F, 0xFFFD, 0xFFFD, 0x4A53, 0xFFFD, 0xFFFD, 0x4A2F, 0x5230, -/* 1618 */ 0x713A, 0xFFFD, 0x5733, 0x6343, 0x737D, 0x5E5A, 0xFFFD, 0xFFFD, -/* 1620 */ 0xFFFD, 0xFFFD, 0x5E5B, 0xFFFD, 0xFFFD, 0x6F5E, 0x6263, 0x6E7B, -/* 1628 */ 0xFFFD, 0xFFFD, 0x5F77, 0x574A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E68, 0x5B5B, 0xFFFD, -/* 1638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x713B, 0xFFFD, -/* 1640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6971, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A37, 0x5046, 0xFFFD, 0xFFFD, -/* 1650 */ 0x4C2B, 0x6E28, 0xFFFD, 0xFFFD, 0x4B7A, 0x7979, 0x4C7D, 0x537E, -/* 1658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6450, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1660 */ 0xFFFD, 0xFFFD, 0x726E, 0xFFFD, 0x5455, 0x5F4D, 0xFFFD, 0x7C38, -/* 1668 */ 0x5150, 0x724D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1670 */ 0xFFFD, 0xFFFD, 0x7752, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A54, 0xFFFD, 0x5559, 0xFFFD, 0xFFFD, -/* 1680 */ 0xFFFD, 0x585E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D59, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E29, -/* 1690 */ 0x763C, 0xFFFD, 0xFFFD, 0x4C5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1698 */ 0xFFFD, 0x7049, 0xFFFD, 0x7C7C, 0xFFFD, 0x6849, 0x747E, 0xFFFD, -/* 16A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x677C, 0x575E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16A8 */ 0xFFFD, 0x5E5C, 0xFFFD, 0x702C, 0x4C7E, 0x4D61, 0xFFFD, 0x613A, -/* 16B0 */ 0xFFFD, 0x5B6F, 0x5A32, 0x5125, 0x5C38, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16B8 */ 0x5876, 0xFFFD, 0x5124, 0xFFFD, 0x4D62, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16C0 */ 0xFFFD, 0x5C6A, 0xFFFD, 0xFFFD, 0x7077, 0xFFFD, 0x704A, 0x503E, -/* 16C8 */ 0xFFFD, 0x5D5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5456, 0x5356, -/* 16D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D50, 0x4D21, -/* 16D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F35, 0xFFFD, 0xFFFD, -/* 16E0 */ 0xFFFD, 0x5F78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16E8 */ 0x5421, 0x4E32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x684A, -/* 16F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B75, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6355, 0x7550, 0xFFFD, 0xFFFD, -/* 1700 */ 0xFFFD, 0x7521, 0x5927, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1708 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x652B, 0x664B, 0xFFFD, 0x7571, 0xFFFD, -/* 1710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1718 */ 0xFFFD, 0x6545, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1720 */ 0xFFFD, 0xFFFD, 0x7923, 0x605B, 0x766B, 0xFFFD, 0x4B71, 0xFFFD, -/* 1728 */ 0x596A, 0x7522, 0xFFFD, 0xFFFD, 0xFFFD, 0x5751, 0xFFFD, 0x5178, -/* 1730 */ 0x6A78, 0x6A79, 0x5A33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F5F, -/* 1738 */ 0xFFFD, 0xFFFD, 0x716F, 0xFFFD, 0x6576, 0x6E3F, 0x6264, 0xFFFD, -/* 1740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x503F, 0xFFFD, 0x7A2C, 0x7551, -/* 1748 */ 0x6733, 0x693E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x724E, -/* 1750 */ 0x5B34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1758 */ 0xFFFD, 0x7C4E, 0xFFFD, 0x5D6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1760 */ 0xFFFD, 0xFFFD, 0x6734, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1768 */ 0x5734, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7734, -/* 1770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D3E, 0xFFFD, 0x5A69, -/* 1778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F30, -/* 1780 */ 0x7759, 0x7366, 0xFFFD, 0xFFFD, 0x4E59, 0x4E2A, 0xFFFD, 0x4B48, -/* 1788 */ 0x5027, 0xFFFD, 0x704B, 0xFFFD, 0x5047, 0xFFFD, 0xFFFD, 0x6445, -/* 1790 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B60, -/* 1798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x555A, 0xFFFD, -/* 17A0 */ 0x5727, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E40, 0xFFFD, 0x7876, 0xFFFD, -/* 17A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7552, 0x6D69, 0xFFFD, 0x593C, 0xFFFD, -/* 17B0 */ 0x6546, 0x7523, 0xFFFD, 0xFFFD, 0x5A54, 0x6227, 0x7B7C, 0xFFFD, -/* 17B8 */ 0xFFFD, 0x715C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17C0 */ 0x4A74, 0xFFFD, 0xFFFD, 0xFFFD, 0x687A, 0xFFFD, 0xFFFD, 0x4E69, -/* 17C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6978, 0x6265, -/* 17D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5039, 0x5472, 0xFFFD, 0xFFFD, -/* 17D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5126, 0xFFFD, 0x5F4E, 0xFFFD, 0xFFFD, -/* 17E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C74, -/* 17E8 */ 0x532A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C2C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F0 */ 0xFFFD, 0x6F60, 0xFFFD, 0xFFFD, 0xFFFD, 0x6565, 0x5055, 0xFFFD, -/* 17F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B7C, -/* 1800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C66, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1808 */ 0xFFFD, 0xFFFD, 0x4B7E, 0x6D6A, 0x5E31, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7963, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5422, 0x4F76, 0x5650, 0xFFFD, 0xFFFD, -/* 1820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x556A, 0x716E, 0x7A4B, 0xFFFD, -/* 1828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6521, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5531, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1838 */ 0xFFFD, 0xFFFD, 0x4F6D, 0xFFFD, 0x6D6B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1840 */ 0xFFFD, 0xFFFD, 0x5532, 0xFFFD, 0xFFFD, 0xFFFD, 0x553C, 0xFFFD, -/* 1848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1850 */ 0x7D62, 0x732D, 0xFFFD, 0x7D5B, 0x6930, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5127, 0xFFFD, 0xFFFD, 0x7D63, -/* 1860 */ 0x4E33, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1868 */ 0x7D64, 0x7A4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A30, 0xFFFD, -/* 1870 */ 0x7727, 0xFFFD, 0x4F31, 0x6622, 0xFFFD, 0x7C36, 0x722D, 0x6F61, -/* 1878 */ 0x732E, 0x5C46, 0x596B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6860, 0xFFFD, -/* 1880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6128, 0xFFFD, -/* 1888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5576, 0x4F7D, 0xFFFD, 0xFFFD, 0x5E5D, -/* 1890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5951, 0xFFFD, 0xFFFD, 0xFFFD, 0x646A, -/* 1898 */ 0x724F, 0xFFFD, 0x773F, 0xFFFD, 0xFFFD, 0x6266, 0x6228, 0x6356, -/* 18A0 */ 0xFFFD, 0x6D51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6979, -/* 18A8 */ 0x5631, 0x5E32, 0xFFFD, 0xFFFD, 0x6068, 0xFFFD, 0xFFFD, 0x532B, -/* 18B0 */ 0xFFFD, 0x6B5C, 0xFFFD, 0xFFFD, 0x5F2F, 0xFFFD, 0x4A43, 0xFFFD, -/* 18B8 */ 0xFFFD, 0x6E7C, 0xFFFD, 0x7D43, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B76, -/* 18C0 */ 0x4F32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x596C, 0xFFFD, 0x593D, -/* 18C8 */ 0xFFFD, 0x585F, 0xFFFD, 0xFFFD, 0x5438, 0x6B3E, 0x5D6F, 0xFFFD, -/* 18D0 */ 0x5D70, 0x5D71, 0x5D72, 0xFFFD, 0xFFFD, 0x593E, 0x7B46, 0x4F33, -/* 18D8 */ 0x6E7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x642B, -/* 18E0 */ 0xFFFD, 0x5A45, 0xFFFD, 0x586C, 0x6229, 0xFFFD, 0xFFFD, 0x5E3C, -/* 18E8 */ 0x6735, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B70, 0xFFFD, -/* 18F0 */ 0x6F62, 0x7170, 0x4F34, 0x5B71, 0xFFFD, 0x6031, 0xFFFD, 0xFFFD, -/* 18F8 */ 0xFFFD, 0xFFFD, 0x5F25, 0xFFFD, 0x7952, 0xFFFD, 0xFFFD, 0x677D, -/* 1900 */ 0xFFFD, 0xFFFD, 0x6623, 0x7B71, 0x4B30, 0x722E, 0xFFFD, 0xFFFD, -/* 1908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D67, 0xFFFD, 0x685C, -/* 1910 */ 0xFFFD, 0xFFFD, 0x6757, 0xFFFD, 0xFFFD, 0x7740, 0xFFFD, 0x5063, -/* 1918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A21, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C3D, -/* 1920 */ 0xFFFD, 0xFFFD, 0x5129, 0x5D4C, 0xFFFD, 0xFFFD, 0x637E, 0x512A, -/* 1928 */ 0x682A, 0xFFFD, 0x6A36, 0x797A, 0x664C, 0x7658, 0xFFFD, 0xFFFD, -/* 1930 */ 0xFFFD, 0x5447, 0xFFFD, 0xFFFD, 0xFFFD, 0x594B, 0xFFFD, 0x5952, -/* 1938 */ 0x534B, 0x5877, 0x5A29, 0x7578, 0xFFFD, 0xFFFD, 0x5E5E, 0x722F, -/* 1940 */ 0x7829, 0x5848, 0xFFFD, 0xFFFD, 0x6E41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1948 */ 0xFFFD, 0x7941, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D73, 0x6A7A, -/* 1950 */ 0xFFFD, 0x763D, 0x613B, 0x4D3F, 0x7454, 0x664D, 0xFFFD, 0x7C4F, -/* 1958 */ 0x7B22, 0xFFFD, 0x605C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x743B, -/* 1960 */ 0x5A55, 0xFFFD, 0x7932, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1968 */ 0xFFFD, 0x7B72, 0xFFFD, 0x5B76, 0xFFFD, 0x5E5F, 0xFFFD, 0xFFFD, -/* 1970 */ 0xFFFD, 0x5B72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x785C, -/* 1978 */ 0x776E, 0x6B68, 0xFFFD, 0x527A, 0xFFFD, 0xFFFD, 0x713C, 0xFFFD, -/* 1980 */ 0xFFFD, 0x7A5A, 0xFFFD, 0xFFFD, 0x5A6A, 0x5A46, 0x7741, 0xFFFD, -/* 1988 */ 0xFFFD, 0x6736, 0x6547, 0x562C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1990 */ 0x5C47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6129, 0xFFFD, -/* 1998 */ 0x622A, 0xFFFD, 0x5526, 0xFFFD, 0xFFFD, 0x5457, 0xFFFD, 0xFFFD, -/* 19A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7250, 0xFFFD, 0x6A7B, 0xFFFD, -/* 19A8 */ 0x605D, 0x7B73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19B0 */ 0xFFFD, 0x713D, 0xFFFD, 0xFFFD, 0x6267, 0x7D57, 0xFFFD, 0x4E48, -/* 19B8 */ 0x6A37, 0xFFFD, 0x7C40, 0xFFFD, 0x7D67, 0x776F, 0xFFFD, 0xFFFD, -/* 19C0 */ 0x5735, 0x6F3A, 0x715D, 0xFFFD, 0x5E33, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x684B, 0xFFFD, 0xFFFD, 0x785D, 0xFFFD, -/* 19D0 */ 0xFFFD, 0x7B47, 0x5548, 0xFFFD, 0x575F, 0xFFFD, 0x5D29, 0xFFFD, -/* 19D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6931, 0xFFFD, 0xFFFD, 0x7A2D, -/* 19E0 */ 0x7659, 0x7A74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x782A, -/* 19E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x666E, 0xFFFD, 0x4C5C, -/* 19F0 */ 0x613C, 0x606F, 0xFFFD, 0xFFFD, 0x693F, 0x7C7D, 0x664E, 0xFFFD, -/* 19F8 */ 0xFFFD, 0x6157, 0xFFFD, 0x664F, 0xFFFD, 0x7471, 0x6473, 0xFFFD, -/* 1A00 */ 0xFFFD, 0x647B, 0xFFFD, 0xFFFD, 0x7964, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F63, -/* 1A10 */ 0xFFFD, 0xFFFD, 0x4F6E, 0x763E, 0x6032, 0x7C7E, 0x512B, 0xFFFD, -/* 1A18 */ 0xFFFD, 0xFFFD, 0x577A, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B48, 0xFFFD, -/* 1A20 */ 0x6257, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5423, -/* 1A28 */ 0x7078, 0x5728, 0xFFFD, 0xFFFD, 0xFFFD, 0x6167, 0xFFFD, 0xFFFD, -/* 1A30 */ 0x533F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F64, -/* 1A38 */ 0xFFFD, 0x5745, 0x6B62, 0xFFFD, 0xFFFD, 0x7C67, 0xFFFD, 0xFFFD, -/* 1A40 */ 0x6422, 0xFFFD, 0x6268, 0xFFFD, 0x6650, 0xFFFD, 0x7B68, 0x7468, -/* 1A48 */ 0x6574, 0x743C, 0x7455, 0x5F36, 0xFFFD, 0x7C39, 0x6E42, 0x4A75, -/* 1A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F65, 0x4B62, 0x5424, 0xFFFD, 0x5E60, -/* 1A58 */ 0x5A7D, 0x6446, 0x683E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x605E, -/* 1A60 */ 0x7634, 0x6A52, 0xFFFD, 0x797B, 0xFFFD, 0xFFFD, 0x6042, 0xFFFD, -/* 1A68 */ 0x4A64, 0xFFFD, 0x6737, 0xFFFD, 0x6A7D, 0xFFFD, 0x595D, 0xFFFD, -/* 1A70 */ 0x5A34, 0x6E2A, 0x7B69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B4B, -/* 1A78 */ 0x5A35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x713E, 0xFFFD, -/* 1A80 */ 0xFFFD, 0x532C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A88 */ 0xFFFD, 0xFFFD, 0x7B49, 0xFFFD, 0x5F4F, 0xFFFD, 0xFFFD, 0x5340, -/* 1A90 */ 0x6357, 0xFFFD, 0x6F66, 0x7C50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6940, 0xFFFD, 0xFFFD, 0xFFFD, 0x7553, -/* 1AA0 */ 0xFFFD, 0xFFFD, 0x6C5C, 0x7737, 0xFFFD, 0xFFFD, 0x6A38, 0x5179, -/* 1AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C48, 0x6A39, -/* 1AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x715E, 0xFFFD, 0xFFFD, -/* 1AB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5736, 0x4F35, 0xFFFD, 0x5928, 0xFFFD, -/* 1AC0 */ 0xFFFD, 0x6C6E, 0xFFFD, 0xFFFD, 0x5D2A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC8 */ 0xFFFD, 0x4D22, 0x682E, 0xFFFD, 0xFFFD, 0xFFFD, 0x613D, 0xFFFD, -/* 1AD0 */ 0x7251, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6941, 0xFFFD, 0xFFFD, -/* 1AD8 */ 0xFFFD, 0x527C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AE0 */ 0xFFFD, 0x5B35, 0xFFFD, 0x7367, 0x587E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AE8 */ 0x7C51, 0xFFFD, 0x6D32, 0x742F, 0xFFFD, 0x7B23, 0xFFFD, 0xFFFD, -/* 1AF0 */ 0x7C41, 0xFFFD, 0x6E2B, 0x5425, 0x7472, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AF8 */ 0xFFFD, 0x6E59, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B4A, 0xFFFD, 0xFFFD, -/* 1B00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D63, 0x583B, 0xFFFD, 0x655B, 0x7877, -/* 1B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7654, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5729, 0xFFFD, 0x4B49, 0xFFFD, -/* 1B18 */ 0xFFFD, 0x6651, 0x704C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x582E, 0xFFFD, 0x7953, -/* 1B28 */ 0x557E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B30 */ 0x583C, 0x7230, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x622B, 0x7368, -/* 1B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F42, 0xFFFD, 0xFFFD, -/* 1B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D6C, 0xFFFD, 0x6738, 0x5A7E, -/* 1B48 */ 0xFFFD, 0xFFFD, 0x4C3E, 0xFFFD, 0xFFFD, 0x727C, 0x5A6B, 0xFFFD, -/* 1B50 */ 0x6258, 0x6D56, 0xFFFD, 0xFFFD, 0x5651, 0x6033, 0xFFFD, 0xFFFD, -/* 1B58 */ 0x7C52, 0xFFFD, 0x6B48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5341, 0x704D, 0xFFFD, 0x4F77, 0xFFFD, -/* 1B68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B70 */ 0x6D52, 0xFFFD, 0x5458, 0x5C49, 0x5771, 0xFFFD, 0xFFFD, 0x5F3B, -/* 1B78 */ 0xFFFD, 0xFFFD, 0x7325, 0xFFFD, 0xFFFD, 0xFFFD, 0x744D, 0xFFFD, -/* 1B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x713F, 0x7831, 0xFFFD, 0x697A, 0xFFFD, -/* 1B88 */ 0xFFFD, 0xFFFD, 0x7B4B, 0xFFFD, 0xFFFD, 0x4A55, 0x7954, 0x774A, -/* 1B90 */ 0xFFFD, 0xFFFD, 0x5648, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B98 */ 0xFFFD, 0x7C68, 0x733D, 0xFFFD, 0x6E7E, 0xFFFD, 0x677E, 0xFFFD, -/* 1BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5342, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BA8 */ 0xFFFD, 0x5336, 0xFFFD, 0x4C2D, 0x767A, 0x5632, 0x5258, 0xFFFD, -/* 1BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6758, 0xFFFD, 0xFFFD, -/* 1BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BC0 */ 0x6325, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6739, 0xFFFD, 0xFFFD, -/* 1BC8 */ 0xFFFD, 0xFFFD, 0x702D, 0x7B4C, 0x6B21, 0xFFFD, 0xFFFD, 0x5426, -/* 1BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B4D, 0xFFFD, 0x553D, 0x715F, -/* 1BD8 */ 0xFFFD, 0xFFFD, 0x767B, 0xFFFD, 0x5E34, 0x556B, 0xFFFD, 0xFFFD, -/* 1BE0 */ 0x6548, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B24, 0x5439, 0xFFFD, 0xFFFD, -/* 1BE8 */ 0x5E61, 0xFFFD, 0x6423, 0xFFFD, 0xFFFD, 0xFFFD, 0x5737, 0xFFFD, -/* 1BF0 */ 0x786E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E35, 0xFFFD, 0xFFFD, 0x5652, -/* 1BF8 */ 0xFFFD, 0x7955, 0x673A, 0x6B55, 0x5577, 0x6F67, 0x613E, 0xFFFD, -/* 1C00 */ 0xFFFD, 0xFFFD, 0x7A2E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5669, 0x566E, -/* 1C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x673B, 0xFFFD, -/* 1C10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C4B, 0xFFFD, -/* 1C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5533, 0x4E34, 0xFFFD, -/* 1C20 */ 0xFFFD, 0xFFFD, 0x7B25, 0x616E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C28 */ 0xFFFD, 0xFFFD, 0x7728, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B4E, -/* 1C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x583D, 0xFFFD, 0xFFFD, -/* 1C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B7D, 0xFFFD, 0xFFFD, -/* 1C40 */ 0xFFFD, 0xFFFD, 0x7C69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C48 */ 0xFFFD, 0xFFFD, 0x4F36, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D47, 0x6E2C, -/* 1C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C5D, -/* 1C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7627, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C60 */ 0x667A, 0xFFFD, 0xFFFD, 0xFFFD, 0x7524, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C68 */ 0xFFFD, 0xFFFD, 0x7D5C, 0x6D33, 0x4E49, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F68, 0xFFFD, 0xFFFD, 0x613F, 0xFFFD, -/* 1C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A5B, 0x4B63, 0x7729, -/* 1C80 */ 0xFFFD, 0x7B26, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C39, 0xFFFD, 0xFFFD, -/* 1C88 */ 0xFFFD, 0x7140, 0x6D48, 0x6F43, 0x562D, 0xFFFD, 0xFFFD, 0x7D4E, -/* 1C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6821, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B74, 0x5527, 0xFFFD, 0xFFFD, -/* 1CA0 */ 0xFFFD, 0x7176, 0xFFFD, 0x6653, 0x4C5E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7832, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CB0 */ 0x5C6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D36, -/* 1CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x656A, 0xFFFD, 0xFFFD, 0x7160, -/* 1CC0 */ 0x5B4C, 0x5D4D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5448, 0xFFFD, 0xFFFD, -/* 1CC8 */ 0x596D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7525, 0xFFFD, 0xFFFD, -/* 1CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x667B, -/* 1CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6654, 0x7D48, 0xFFFD, -/* 1CE0 */ 0x5621, 0x7D3F, 0xFFFD, 0x7C53, 0xFFFD, 0x6F21, 0xFFFD, 0x673C, -/* 1CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x516E, 0xFFFD, 0xFFFD, -/* 1CF0 */ 0x6655, 0xFFFD, 0xFFFD, 0x6972, 0xFFFD, 0x5F30, 0xFFFD, 0xFFFD, -/* 1CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5860, 0x7C3A, 0x7D2F, 0x704E, 0xFFFD, -/* 1D00 */ 0x5B61, 0xFFFD, 0xFFFD, 0x6549, 0xFFFD, 0x6D34, 0x6043, 0xFFFD, -/* 1D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6358, 0xFFFD, 0xFFFD, -/* 1D10 */ 0xFFFD, 0xFFFD, 0x697B, 0x6A28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D18 */ 0x7D37, 0xFFFD, 0xFFFD, 0x7B27, 0xFFFD, 0x6942, 0xFFFD, 0xFFFD, -/* 1D20 */ 0xFFFD, 0xFFFD, 0x7D77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D28 */ 0x6259, 0xFFFD, 0xFFFD, 0x5C6C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6822, 0xFFFD, 0xFFFD, -/* 1D38 */ 0xFFFD, 0xFFFD, 0x6670, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D40 */ 0xFFFD, 0xFFFD, 0x7D78, 0x7D79, 0xFFFD, 0xFFFD, 0xFFFD, 0x763F, -/* 1D48 */ 0xFFFD, 0xFFFD, 0x6727, 0xFFFD, 0x6657, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D50 */ 0xFFFD, 0x5473, 0x5449, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x567A, -/* 1D58 */ 0xFFFD, 0x5772, 0xFFFD, 0x6140, 0xFFFD, 0x5B62, 0x6658, 0xFFFD, -/* 1D60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D68 */ 0x673D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x704F, 0x733E, -/* 1D70 */ 0x622C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7537, 0x6070, -/* 1D78 */ 0x7D38, 0x6368, 0xFFFD, 0x5427, 0x687C, 0x7A52, 0xFFFD, 0xFFFD, -/* 1D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x786F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5653, 0xFFFD, 0xFFFD, -/* 1D90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D98 */ 0x5534, 0x7050, 0xFFFD, 0x7770, 0x6E33, 0xFFFD, 0xFFFD, 0x6A3A, -/* 1DA0 */ 0xFFFD, 0x6A53, 0xFFFD, 0xFFFD, 0x6D49, 0x5D2B, 0xFFFD, 0xFFFD, -/* 1DA8 */ 0xFFFD, 0x652C, 0x7D21, 0xFFFD, 0x5F50, 0x6C33, 0xFFFD, 0x5F51, -/* 1DB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D6D, 0x7838, 0x777A, -/* 1DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x782B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DC0 */ 0xFFFD, 0x7460, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x543A, -/* 1DC8 */ 0x6433, 0xFFFD, 0x695A, 0xFFFD, 0x5E36, 0xFFFD, 0x593F, 0xFFFD, -/* 1DD0 */ 0x5940, 0x566F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x594C, 0xFFFD, -/* 1DD8 */ 0x5A2A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DE0 */ 0xFFFD, 0x5F65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DE8 */ 0x7765, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C32, 0xFFFD, 0xFFFD, 0x5F79, -/* 1DF0 */ 0x5760, 0x543B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D7A, 0xFFFD, -/* 1DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C33, 0xFFFD, 0xFFFD, 0x5B73, 0x5F52, -/* 1E00 */ 0xFFFD, 0x4E4A, 0xFFFD, 0x6E5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6464, 0xFFFD, 0x7B4F, -/* 1E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F37, 0xFFFD, -/* 1E18 */ 0x6E43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E20 */ 0x4E6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E28 */ 0x622D, 0x5761, 0x7A75, 0xFFFD, 0xFFFD, 0x5549, 0x782C, 0x7369, -/* 1E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x586D, 0x6344, 0x7071, 0xFFFD, -/* 1E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6865, 0xFFFD, -/* 1E40 */ 0xFFFD, 0xFFFD, 0x607A, 0x6E44, 0x595E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B22, -/* 1E50 */ 0x6B23, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C42, -/* 1E58 */ 0x6A3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x682B, 0x5E62, 0xFFFD, -/* 1E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E68 */ 0xFFFD, 0x6D6F, 0xFFFD, 0x6823, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E70 */ 0x4F71, 0x543C, 0xFFFD, 0x7C6A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E78 */ 0xFFFD, 0x673E, 0xFFFD, 0x7C72, 0xFFFD, 0xFFFD, 0x5634, 0xFFFD, -/* 1E80 */ 0xFFFD, 0x622E, 0xFFFD, 0x5337, 0x7A4C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A5C, 0xFFFD, 0x6D35, -/* 1E90 */ 0x6163, 0xFFFD, 0x682C, 0xFFFD, 0x685D, 0xFFFD, 0xFFFD, 0x6F69, -/* 1E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x743D, 0xFFFD, 0x4F38, -/* 1EA0 */ 0x695B, 0x512C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EA8 */ 0x5A47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EB0 */ 0x6B49, 0xFFFD, 0x684C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E37, 0xFFFD, -/* 1EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x563C, 0x5365, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EC0 */ 0xFFFD, 0xFFFD, 0x7A5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EC8 */ 0xFFFD, 0x5A56, 0xFFFD, 0x4A31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1ED0 */ 0xFFFD, 0xFFFD, 0x5A48, 0x5F26, 0xFFFD, 0x7933, 0x7252, 0xFFFD, -/* 1ED8 */ 0x4A44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E4B, -/* 1EE0 */ 0xFFFD, 0xFFFD, 0x4D75, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D30, 0x5528, -/* 1EE8 */ 0xFFFD, 0x7141, 0xFFFD, 0xFFFD, 0x6269, 0x5C4A, 0x6C34, 0x7A40, -/* 1EF0 */ 0xFFFD, 0xFFFD, 0x7B28, 0x5028, 0xFFFD, 0xFFFD, 0x5A6C, 0xFFFD, -/* 1EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F00 */ 0x596E, 0xFFFD, 0x607B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F6A, 0x7A5E, -/* 1F08 */ 0xFFFD, 0xFFFD, 0x6044, 0xFFFD, 0x4F39, 0xFFFD, 0x554A, 0x5762, -/* 1F10 */ 0x622F, 0xFFFD, 0x5738, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x684D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x765A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F28 */ 0xFFFD, 0x6F22, 0x625A, 0x767C, 0xFFFD, 0xFFFD, 0x7B50, 0x512D, -/* 1F30 */ 0xFFFD, 0x4D64, 0xFFFD, 0x512E, 0x5C6D, 0x684E, 0xFFFD, 0x7079, -/* 1F38 */ 0x4E35, 0x667C, 0xFFFD, 0xFFFD, 0x577B, 0x5056, 0x5D75, 0x7771, -/* 1F40 */ 0xFFFD, 0x767D, 0xFFFD, 0x5B77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F48 */ 0x7B6A, 0x695C, 0x5941, 0xFFFD, 0x7572, 0x6045, 0xFFFD, 0xFFFD, -/* 1F50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A54, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7942, 0xFFFD, -/* 1F60 */ 0x6A3C, 0xFFFD, 0x5245, 0x7B51, 0x6740, 0x6B25, 0xFFFD, 0x5F7A, -/* 1F68 */ 0x6322, 0x5739, 0xFFFD, 0x6943, 0xFFFD, 0x687D, 0x682F, 0xFFFD, -/* 1F70 */ 0xFFFD, 0x7253, 0x7B29, 0x5825, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F78 */ 0x554B, 0x5048, 0xFFFD, 0xFFFD, 0xFFFD, 0x512F, 0x5763, 0xFFFD, -/* 1F80 */ 0xFFFD, 0xFFFD, 0x6046, 0xFFFD, 0x5622, 0xFFFD, 0x6D70, 0x5773, -/* 1F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7C54, 0xFFFD, 0x5A57, 0x4C5F, 0xFFFD, -/* 1F90 */ 0x7254, 0xFFFD, 0x5130, 0xFFFD, 0x4C60, 0xFFFD, 0x5B7D, 0x733F, -/* 1F98 */ 0xFFFD, 0x7051, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C3B, -/* 1FA0 */ 0xFFFD, 0x6230, 0xFFFD, 0xFFFD, 0x6625, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FA8 */ 0x625B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F5E, 0xFFFD, 0x6047, 0xFFFD, -/* 1FB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x726F, 0xFFFD, 0xFFFD, -/* 1FB8 */ 0xFFFD, 0x4C61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x566A, 0xFFFD, -/* 1FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6742, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E36, -/* 1FC8 */ 0xFFFD, 0x7340, 0xFFFD, 0x4D7E, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B52, -/* 1FD0 */ 0xFFFD, 0x7878, 0x777B, 0xFFFD, 0xFFFD, 0x683F, 0xFFFD, 0xFFFD, -/* 1FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6837, 0xFFFD, 0xFFFD, -/* 1FE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D36, 0xFFFD, -/* 1FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FF0 */ 0x5C3A, 0xFFFD, 0xFFFD, 0x4C34, 0x7177, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FF8 */ 0x6838, 0xFFFD, 0xFFFD, 0x4A76, 0xFFFD, 0x6424, 0x7456, 0xFFFD, -/* 2000 */ 0xFFFD, 0xFFFD, 0x5F66, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F27, 0xFFFD, -/* 2008 */ 0x5F67, 0x6141, 0xFFFD, 0x6944, 0xFFFD, 0xFFFD, 0x5C4B, 0x6945, -/* 2010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F23, 0x6B26, 0x4B23, 0x6369, 0xFFFD, -/* 2018 */ 0xFFFD, 0xFFFD, 0x517B, 0x6F24, 0xFFFD, 0x6F6B, 0x5034, 0xFFFD, -/* 2020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D23, 0xFFFD, 0xFFFD, 0x6866, 0xFFFD, -/* 2028 */ 0x6F25, 0xFFFD, 0x534C, 0x5A6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2030 */ 0x573A, 0xFFFD, 0x7255, 0x7565, 0x596F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2038 */ 0xFFFD, 0x7934, 0xFFFD, 0xFFFD, 0x5554, 0x7D4F, 0xFFFD, 0xFFFD, -/* 2040 */ 0xFFFD, 0x5B63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7161, 0x6C36, -/* 2048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B7E, 0x5357, 0xFFFD, 0x5131, -/* 2050 */ 0xFFFD, 0x4B31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5132, 0xFFFD, -/* 2058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B32, 0x7142, 0xFFFD, -/* 2060 */ 0xFFFD, 0x7461, 0x7935, 0xFFFD, 0xFFFD, 0x6143, 0x6142, 0xFFFD, -/* 2068 */ 0x6B77, 0x5F28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2070 */ 0xFFFD, 0x4B4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6639, -/* 2078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x785E, 0x792A, 0x4A77, -/* 2080 */ 0xFFFD, 0x6D37, 0xFFFD, 0xFFFD, 0x5338, 0x7256, 0xFFFD, 0xFFFD, -/* 2088 */ 0x5459, 0x6E45, 0x7270, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A32, 0xFFFD, -/* 2090 */ 0xFFFD, 0x5C3B, 0xFFFD, 0x7178, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2098 */ 0xFFFD, 0x6C37, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x654A, 0xFFFD, -/* 20A0 */ 0x7640, 0x7D5D, 0xFFFD, 0xFFFD, 0x5463, 0x4C62, 0xFFFD, 0x7754, -/* 20A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5765, 0x5343, -/* 20B0 */ 0xFFFD, 0x5826, 0xFFFD, 0x7641, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20B8 */ 0xFFFD, 0x5D76, 0xFFFD, 0x4D40, 0xFFFD, 0xFFFD, 0xFFFD, 0x655C, -/* 20C0 */ 0x6144, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6830, 0x7430, -/* 20C8 */ 0x736A, 0x5A6E, 0xFFFD, 0x573B, 0xFFFD, 0x6231, 0x572A, 0xFFFD, -/* 20D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x567B, 0xFFFD, 0xFFFD, -/* 20D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x645F, -/* 20E0 */ 0xFFFD, 0x4A56, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B28, 0xFFFD, 0xFFFD, -/* 20E8 */ 0xFFFD, 0x5B7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7642, 0xFFFD, 0xFFFD, 0x6F3B, -/* 20F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x547D, 0xFFFD, 0xFFFD, 0x6048, -/* 2100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6839, 0xFFFD, 0x6F26, 0xFFFD, 0xFFFD, -/* 2108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D24, 0xFFFD, 0xFFFD, 0x5474, 0x5B21, -/* 2110 */ 0x5B5C, 0x5B5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E5C, -/* 2118 */ 0xFFFD, 0x4B4B, 0x7C55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2120 */ 0xFFFD, 0x4E6B, 0xFFFD, 0x4D41, 0xFFFD, 0xFFFD, 0x7B53, 0x7554, -/* 2128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5929, 0xFFFD, 0xFFFD, 0x695D, -/* 2130 */ 0x5B4D, 0xFFFD, 0xFFFD, 0x5D4E, 0xFFFD, 0x6743, 0xFFFD, 0x6C4C, -/* 2138 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x796C, -/* 2140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2148 */ 0x607C, 0x5428, 0xFFFD, 0x6D53, 0x586F, 0xFFFD, 0x7257, 0xFFFD, -/* 2150 */ 0x4A78, 0x5A6F, 0xFFFD, 0xFFFD, 0x5654, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x594D, 0xFFFD, 0xFFFD, 0xFFFD, 0x586E, -/* 2160 */ 0xFFFD, 0x7241, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F53, 0xFFFD, 0xFFFD, -/* 2168 */ 0xFFFD, 0x5A70, 0xFFFD, 0x626A, 0xFFFD, 0xFFFD, 0x607D, 0xFFFD, -/* 2170 */ 0xFFFD, 0x5878, 0xFFFD, 0xFFFD, 0xFFFD, 0x772F, 0x5A36, 0xFFFD, -/* 2178 */ 0x4A57, 0x7258, 0xFFFD, 0x5879, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A5F, 0x4F6F, 0x5942, 0xFFFD, -/* 2188 */ 0x7052, 0xFFFD, 0x6451, 0xFFFD, 0xFFFD, 0xFFFD, 0x7337, 0x6F6C, -/* 2190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6232, 0xFFFD, 0x543D, -/* 2198 */ 0xFFFD, 0xFFFD, 0x594E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7462, -/* 21A0 */ 0x5429, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D42, 0x675A, 0x7259, -/* 21A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x592A, 0x583E, 0xFFFD, -/* 21B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C2D, 0xFFFD, 0xFFFD, -/* 21B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x626B, 0x567C, 0xFFFD, 0xFFFD, -/* 21C0 */ 0x4A79, 0xFFFD, 0xFFFD, 0x545A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7457, 0x4C21, 0xFFFD, 0xFFFD, 0x4F3A, -/* 21D0 */ 0x7538, 0xFFFD, 0xFFFD, 0xFFFD, 0x5943, 0x5068, 0xFFFD, 0xFFFD, -/* 21D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6345, 0x6B78, 0xFFFD, 0x7231, 0xFFFD, -/* 21E0 */ 0xFFFD, 0xFFFD, 0x4F3B, 0xFFFD, 0xFFFD, 0xFFFD, 0x532D, 0x6861, -/* 21E8 */ 0x4E6C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6034, 0x7232, 0x7376, 0x765B, -/* 21F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x577E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F8 */ 0xFFFD, 0xFFFD, 0x785F, 0xFFFD, 0x7772, 0x5029, 0xFFFD, 0xFFFD, -/* 2200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x665A, -/* 2208 */ 0x573C, 0x4C63, 0xFFFD, 0xFFFD, 0x665B, 0x5D5D, 0xFFFD, 0xFFFD, -/* 2210 */ 0xFFFD, 0xFFFD, 0x5133, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2218 */ 0x6F6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x565E, 0x6474, 0x616F, -/* 2220 */ 0xFFFD, 0xFFFD, 0x5D78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2228 */ 0x684F, 0x4A65, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C21, 0xFFFD, 0x6035, -/* 2230 */ 0x7C2C, 0x7C2D, 0x5827, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D38, -/* 2238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2240 */ 0x5670, 0x732F, 0xFFFD, 0xFFFD, 0x4D25, 0xFFFD, 0x5A71, 0x5828, -/* 2248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C64, 0xFFFD, 0xFFFD, 0x5134, 0xFFFD, -/* 2250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A58, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2258 */ 0xFFFD, 0xFFFD, 0x5A72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2260 */ 0x7527, 0x7528, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2268 */ 0xFFFD, 0x6626, 0x556C, 0x5578, 0x5A73, 0x6346, 0xFFFD, 0xFFFD, -/* 2270 */ 0xFFFD, 0x5E64, 0xFFFD, 0x5E65, 0x5135, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2278 */ 0xFFFD, 0xFFFD, 0x5136, 0x5137, 0x7233, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x695E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2288 */ 0xFFFD, 0x7053, 0x7234, 0xFFFD, 0xFFFD, 0x7054, 0x4B64, 0x7B54, -/* 2290 */ 0x7566, 0x636A, 0xFFFD, 0x5E66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2298 */ 0x5F54, 0xFFFD, 0xFFFD, 0x7879, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22A0 */ 0x702E, 0x5138, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x565F, 0xFFFD, -/* 22A8 */ 0x5057, 0x7C21, 0x6F6E, 0x5C58, 0xFFFD, 0x695F, 0x655D, 0x7D7B, -/* 22B0 */ 0xFFFD, 0xFFFD, 0x6049, 0xFFFD, 0xFFFD, 0xFFFD, 0x5649, 0xFFFD, -/* 22B8 */ 0xFFFD, 0x542A, 0xFFFD, 0x654C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22C0 */ 0xFFFD, 0x6960, 0xFFFD, 0xFFFD, 0xFFFD, 0x5058, 0x7C22, 0x543E, -/* 22C8 */ 0x6233, 0x5E67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22D0 */ 0xFFFD, 0x5C3C, 0x5236, 0x7555, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22D8 */ 0xFFFD, 0x4E21, 0x7529, 0xFFFD, 0xFFFD, 0x5D79, 0xFFFD, 0xFFFD, -/* 22E0 */ 0x5D7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7055, -/* 22E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x765F, 0xFFFD, 0x725A, 0x646B, -/* 22F0 */ 0xFFFD, 0x7271, 0x6C39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D7C, -/* 22F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x612A, 0xFFFD, 0xFFFD, 0x4A59, -/* 2300 */ 0xFFFD, 0xFFFD, 0x6F6F, 0xFFFD, 0x752A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C79, 0xFFFD, 0xFFFD, 0x782D, 0xFFFD, -/* 2310 */ 0x7242, 0x7643, 0xFFFD, 0x5752, 0xFFFD, 0xFFFD, 0x7922, 0x7056, -/* 2318 */ 0x707A, 0xFFFD, 0xFFFD, 0x7660, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2320 */ 0x6973, 0x7243, 0xFFFD, 0xFFFD, 0xFFFD, 0x542B, 0x4A33, 0x4D26, -/* 2328 */ 0xFFFD, 0x4D43, 0x4D5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2330 */ 0x594F, 0xFFFD, 0xFFFD, 0x7644, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E5D, -/* 2338 */ 0x6744, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2340 */ 0xFFFD, 0x6234, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F62, 0x675B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6831, 0xFFFD, 0x7C2E, 0xFFFD, 0xFFFD, -/* 2358 */ 0xFFFD, 0xFFFD, 0x654D, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A6B, 0xFFFD, -/* 2360 */ 0x4F3C, 0xFFFD, 0xFFFD, 0x4F62, 0x4D76, 0xFFFD, 0xFFFD, 0x6F70, -/* 2368 */ 0xFFFD, 0x743E, 0xFFFD, 0x544D, 0xFFFD, 0xFFFD, 0x7338, 0xFFFD, -/* 2370 */ 0xFFFD, 0xFFFD, 0x6921, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7272, 0x736B, 0xFFFD, 0x7057, -/* 2380 */ 0xFFFD, 0xFFFD, 0x4F57, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2388 */ 0xFFFD, 0x4F5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6840, 0x6841, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2398 */ 0x4F63, 0x6922, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x502A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7341, 0x502B, -/* 23B0 */ 0xFFFD, 0x5464, 0xFFFD, 0xFFFD, 0x6F3C, 0x5821, 0x595F, 0xFFFD, -/* 23B8 */ 0x7357, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C3D, 0xFFFD, 0x4C65, 0x6D71, -/* 23C0 */ 0xFFFD, 0xFFFD, 0x7162, 0xFFFD, 0x545B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23C8 */ 0xFFFD, 0x6235, 0xFFFD, 0xFFFD, 0x4A66, 0xFFFD, 0x532E, 0xFFFD, -/* 23D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C66, 0xFFFD, 0xFFFD, -/* 23D8 */ 0x7153, 0x7567, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A5A, 0x7B6E, -/* 23E0 */ 0xFFFD, 0x6145, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23E8 */ 0xFFFD, 0x5F69, 0xFFFD, 0x6E5E, 0xFFFD, 0xFFFD, 0x7742, 0xFFFD, -/* 23F0 */ 0x5822, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D2C, 0xFFFD, -/* 23F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x702F, 0x563D, 0x7936, 0xFFFD, -/* 2400 */ 0xFFFD, 0x5475, 0xFFFD, 0x5049, 0x6F27, 0x626C, 0xFFFD, 0x5B6A, -/* 2408 */ 0x4E4C, 0x7568, 0x7755, 0xFFFD, 0x534D, 0xFFFD, 0x737E, 0xFFFD, -/* 2410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2418 */ 0x5035, 0x607E, 0xFFFD, 0x5F7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2420 */ 0xFFFD, 0xFFFD, 0x665D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2428 */ 0xFFFD, 0xFFFD, 0x6824, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2430 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B4D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2438 */ 0x6F28, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E34, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2440 */ 0xFFFD, 0x5A58, 0x5139, 0xFFFD, 0x5F29, 0xFFFD, 0xFFFD, 0x7330, -/* 2448 */ 0xFFFD, 0xFFFD, 0x4C44, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E37, 0x6F29, -/* 2450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5F55, 0xFFFD, 0xFFFD, 0x6D57, 0xFFFD, -/* 2458 */ 0xFFFD, 0xFFFD, 0x6E46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2460 */ 0xFFFD, 0xFFFD, 0x6F3D, 0x7C56, 0xFFFD, 0xFFFD, 0x5B74, 0xFFFD, -/* 2468 */ 0x6F2A, 0x7839, 0xFFFD, 0x7569, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6359, 0x6146, 0xFFFD, 0xFFFD, -/* 2478 */ 0xFFFD, 0x543F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E68, 0x706A, -/* 2480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2488 */ 0xFFFD, 0xFFFD, 0x7342, 0x532F, 0xFFFD, 0xFFFD, 0x4A5B, 0xFFFD, -/* 2490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C57, 0xFFFD, 0xFFFD, 0x6D58, -/* 2498 */ 0x6147, 0x7458, 0x5633, 0x5D2D, 0xFFFD, 0xFFFD, 0xFFFD, 0x553E, -/* 24A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24A8 */ 0x7143, 0x6E5F, 0x566B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7459, 0xFFFD, -/* 24B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5766, 0xFFFD, -/* 24B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A37, 0x5D7B, 0xFFFD, -/* 24C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D4F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5823, 0xFFFD, 0xFFFD, -/* 24D0 */ 0x5A59, 0xFFFD, 0x7058, 0x6F44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24D8 */ 0xFFFD, 0xFFFD, 0x6158, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24E0 */ 0x7154, 0xFFFD, 0x6D72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24E8 */ 0xFFFD, 0x555B, 0xFFFD, 0xFFFD, 0x555C, 0x7344, 0x4B57, 0xFFFD, -/* 24F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6236, 0xFFFD, 0xFFFD, 0xFFFD, -/* 24F8 */ 0xFFFD, 0x6F71, 0x5358, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2500 */ 0xFFFD, 0xFFFD, 0x5D50, 0x7059, 0x4B33, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x555D, 0x4D27, 0xFFFD, 0xFFFD, 0x502C, -/* 2510 */ 0xFFFD, 0x513A, 0xFFFD, 0x7144, 0xFFFD, 0x6533, 0x7B75, 0x6961, -/* 2518 */ 0x7D60, 0x7C3C, 0xFFFD, 0x5A22, 0x5A23, 0xFFFD, 0x5221, 0xFFFD, -/* 2520 */ 0xFFFD, 0x526F, 0xFFFD, 0xFFFD, 0xFFFD, 0x626D, 0xFFFD, 0xFFFD, -/* 2528 */ 0x5E69, 0x4E5C, 0x7235, 0x5064, 0x5D51, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2530 */ 0xFFFD, 0x6148, 0x5B37, 0x5F63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D39, 0x7145, 0xFFFD, 0x734F, -/* 2540 */ 0x572B, 0x612C, 0xFFFD, 0xFFFD, 0x636B, 0xFFFD, 0x6E47, 0xFFFD, -/* 2548 */ 0xFFFD, 0xFFFD, 0x6149, 0x4A7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x707B, 0x7A61, 0x705A, 0x4C67, 0x5A74, -/* 2558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2560 */ 0xFFFD, 0x4C3F, 0x4E6D, 0xFFFD, 0xFFFD, 0x5529, 0x7A62, 0xFFFD, -/* 2568 */ 0xFFFD, 0xFFFD, 0x5065, 0xFFFD, 0x6B56, 0xFFFD, 0x6C5F, 0xFFFD, -/* 2570 */ 0xFFFD, 0xFFFD, 0x5F7C, 0xFFFD, 0xFFFD, 0x7756, 0x5E6A, 0x4B34, -/* 2578 */ 0xFFFD, 0xFFFD, 0x6F3E, 0xFFFD, 0xFFFD, 0x4C35, 0xFFFD, 0xFFFD, -/* 2580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4F3D, 0x6F72, 0x6237, 0xFFFD, 0xFFFD, -/* 2588 */ 0xFFFD, 0x4C68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2590 */ 0xFFFD, 0xFFFD, 0x707C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5660, 0xFFFD, -/* 2598 */ 0x7146, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25A0 */ 0xFFFD, 0xFFFD, 0x6238, 0x6B2B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B35, -/* 25A8 */ 0x5851, 0xFFFD, 0x744E, 0x7377, 0xFFFD, 0xFFFD, 0x5746, 0xFFFD, -/* 25B0 */ 0x513B, 0x772A, 0xFFFD, 0x6D4A, 0x5753, 0x587A, 0xFFFD, 0xFFFD, -/* 25B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7645, 0xFFFD, 0xFFFD, -/* 25C0 */ 0x514C, 0x5D7C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F7D, 0xFFFD, 0x7965, 0xFFFD, -/* 25D0 */ 0x604A, 0xFFFD, 0xFFFD, 0x727D, 0x5330, 0xFFFD, 0x7473, 0x5A49, -/* 25D8 */ 0xFFFD, 0x665E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x783A, 0x6850, -/* 25E0 */ 0xFFFD, 0xFFFD, 0x587B, 0xFFFD, 0xFFFD, 0x6A55, 0xFFFD, 0xFFFD, -/* 25E8 */ 0xFFFD, 0xFFFD, 0x5623, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25F0 */ 0xFFFD, 0x7646, 0x725B, 0x647C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6832, 0xFFFD, -/* 2600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A5A, 0xFFFD, 0x725C, 0x7B56, -/* 2608 */ 0x6932, 0xFFFD, 0x6E2D, 0xFFFD, 0x7A63, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C6E, 0xFFFD, 0xFFFD, 0x756A, -/* 2618 */ 0x6660, 0xFFFD, 0x707D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2620 */ 0x572C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7545, 0x6E60, -/* 2628 */ 0xFFFD, 0xFFFD, 0x5B65, 0xFFFD, 0x5D5E, 0xFFFD, 0xFFFD, 0x5970, -/* 2630 */ 0x6923, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7179, 0xFFFD, 0x7244, 0x604B, 0xFFFD, -/* 2640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6924, -/* 2648 */ 0xFFFD, 0xFFFD, 0x6239, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2650 */ 0xFFFD, 0xFFFD, 0x6331, 0x7C6B, 0x4D28, 0xFFFD, 0x4C36, 0xFFFD, -/* 2658 */ 0xFFFD, 0x705B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2660 */ 0xFFFD, 0xFFFD, 0x663A, 0xFFFD, 0xFFFD, 0x4D29, 0xFFFD, 0xFFFD, -/* 2668 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7343, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6159, 0xFFFD, 0xFFFD, -/* 2678 */ 0x6F2B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6745, 0xFFFD, 0xFFFD, 0x6069, -/* 2680 */ 0xFFFD, 0x7345, 0xFFFD, 0xFFFD, 0x5440, 0x553F, 0x5D2E, 0xFFFD, -/* 2688 */ 0x797C, 0xFFFD, 0x4C40, 0x6522, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E38, -/* 2690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5852, 0x7956, 0x712A, 0x4E51, 0xFFFD, -/* 2698 */ 0xFFFD, 0x7647, 0xFFFD, 0x5B6B, 0xFFFD, 0x5F7E, 0xFFFD, 0xFFFD, -/* 26A0 */ 0x5861, 0xFFFD, 0x7773, 0xFFFD, 0x5767, 0x547E, 0xFFFD, 0xFFFD, -/* 26A8 */ 0x513C, 0xFFFD, 0x654F, 0xFFFD, 0x4B36, 0xFFFD, 0x5A38, 0xFFFD, -/* 26B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D44, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26B8 */ 0xFFFD, 0xFFFD, 0x563E, 0xFFFD, 0xFFFD, 0xFFFD, 0x623A, 0xFFFD, -/* 26C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F58, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26C8 */ 0x604C, 0x6B79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26D0 */ 0xFFFD, 0xFFFD, 0x7D7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26D8 */ 0x5768, 0x4B58, 0xFFFD, 0xFFFD, 0xFFFD, 0x6962, 0xFFFD, 0xFFFD, -/* 26E0 */ 0xFFFD, 0x683A, 0xFFFD, 0xFFFD, 0xFFFD, 0x6347, 0xFFFD, 0xFFFD, -/* 26E8 */ 0xFFFD, 0xFFFD, 0x6C4D, 0xFFFD, 0x6C4E, 0xFFFD, 0x563F, 0xFFFD, -/* 26F0 */ 0xFFFD, 0xFFFD, 0x6327, 0xFFFD, 0x5F56, 0x7D68, 0xFFFD, 0xFFFD, -/* 26F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E61, -/* 2700 */ 0x7628, 0x5D7D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2708 */ 0xFFFD, 0x783B, 0xFFFD, 0x6851, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2710 */ 0x7957, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2718 */ 0xFFFD, 0x4E6E, 0xFFFD, 0xFFFD, 0x6C4F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2720 */ 0x6925, 0x5655, 0xFFFD, 0x4D45, 0xFFFD, 0x6D3A, 0x513D, 0xFFFD, -/* 2728 */ 0xFFFD, 0x4F3E, 0xFFFD, 0xFFFD, 0x6C3B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2730 */ 0x5231, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C69, 0xFFFD, 0x5944, -/* 2738 */ 0x697C, 0x513E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C3C, -/* 2740 */ 0xFFFD, 0xFFFD, 0x652D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2748 */ 0xFFFD, 0x7730, 0xFFFD, 0x4C6A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5344, -/* 2750 */ 0xFFFD, 0xFFFD, 0x5640, 0xFFFD, 0xFFFD, 0xFFFD, 0x567D, 0x6121, -/* 2758 */ 0xFFFD, 0x5E3D, 0xFFFD, 0x7629, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A24, -/* 2760 */ 0x5624, 0x7546, 0xFFFD, 0x6122, 0x6946, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2768 */ 0x7245, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7469, 0x566C, -/* 2770 */ 0x6B53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C3D, 0x625C, 0x5E6B, -/* 2778 */ 0x705C, 0xFFFD, 0x6B3F, 0xFFFD, 0x574E, 0x513F, 0xFFFD, 0xFFFD, -/* 2780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x752B, -/* 2788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x797D, 0xFFFD, 0x4A5C, 0xFFFD, -/* 2790 */ 0xFFFD, 0xFFFD, 0x4D46, 0x7236, 0xFFFD, 0xFFFD, 0x5D7E, 0xFFFD, -/* 2798 */ 0xFFFD, 0xFFFD, 0x4C37, 0x5B38, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27A0 */ 0x5069, 0xFFFD, 0x4E5D, 0x6B40, 0xFFFD, 0x7D22, 0xFFFD, 0xFFFD, -/* 27A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x784B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A56, 0x7130, 0xFFFD, 0xFFFD, -/* 27B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B4E, 0xFFFD, 0x7743, -/* 27C0 */ 0x5B4F, 0x4B24, 0xFFFD, 0xFFFD, 0x7860, 0xFFFD, 0xFFFD, 0x7B57, -/* 27C8 */ 0xFFFD, 0xFFFD, 0x6B4A, 0x6021, 0x4E4D, 0xFFFD, 0xFFFD, 0x545C, -/* 27D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7D58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27D8 */ 0x5276, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7237, 0xFFFD, 0xFFFD, -/* 27E0 */ 0x7A76, 0x762A, 0x7A77, 0x5866, 0xFFFD, 0x7431, 0x6852, 0xFFFD, -/* 27E8 */ 0x4A45, 0x4C6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 27F0 */ 0xFFFD, 0x626E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x623B, -/* 27F8 */ 0xFFFD, 0x772D, 0xFFFD, 0xFFFD, 0xFFFD, 0x7861, 0xFFFD, 0xFFFD, -/* 2800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x736C, -/* 2808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E21, 0x647D, 0xFFFD, 0xFFFD, -/* 2810 */ 0x636C, 0xFFFD, 0x5D2F, 0x5D30, 0xFFFD, 0xFFFD, 0x4B37, 0x6853, -/* 2818 */ 0x6123, 0x5260, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x707E, 0xFFFD, -/* 2820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6926, 0x4B72, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D73, 0x5C59, 0x604D, 0xFFFD, 0xFFFD, -/* 2830 */ 0xFFFD, 0xFFFD, 0x775A, 0x5B39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2838 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C2E, 0xFFFD, 0x5A5B, 0xFFFD, 0xFFFD, -/* 2840 */ 0xFFFD, 0xFFFD, 0x4D47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2848 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D31, 0xFFFD, 0x582F, -/* 2850 */ 0x6323, 0xFFFD, 0xFFFD, 0x4E6F, 0xFFFD, 0xFFFD, 0x7273, 0xFFFD, -/* 2858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7833, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x604E, 0xFFFD, -/* 2868 */ 0x757D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B6C, 0xFFFD, 0xFFFD, -/* 2870 */ 0x5345, 0x7C6C, 0x525B, 0x546B, 0xFFFD, 0x5E22, 0xFFFD, 0xFFFD, -/* 2878 */ 0xFFFD, 0x6566, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2880 */ 0x7030, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5544, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2890 */ 0xFFFD, 0xFFFD, 0x6D74, 0xFFFD, 0xFFFD, 0xFFFD, 0x636D, 0xFFFD, -/* 2898 */ 0x6842, 0xFFFD, 0x6D75, 0x577C, 0xFFFD, 0x6D3B, 0xFFFD, 0xFFFD, -/* 28A0 */ 0x762B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7238, 0x7648, -/* 28A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5366, 0x725D, 0x4F3F, -/* 28B0 */ 0xFFFD, 0x6B2C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28B8 */ 0x4F40, 0xFFFD, 0x6628, 0x7D69, 0xFFFD, 0x4F41, 0xFFFD, 0x605F, -/* 28C0 */ 0x5E6C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6022, 0xFFFD, 0xFFFD, -/* 28C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x743F, 0x626F, -/* 28D0 */ 0xFFFD, 0x5971, 0x7147, 0xFFFD, 0x4B38, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x797E, 0x5B3A, 0x5A75, -/* 28E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28E8 */ 0x766C, 0x5A5C, 0x7A64, 0xFFFD, 0x604F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5D32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28F8 */ 0x6629, 0xFFFD, 0x6F73, 0x736D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B7A, 0xFFFD, -/* 2908 */ 0x7966, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2910 */ 0x4A5D, 0x555E, 0xFFFD, 0x4A5E, 0x5F64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2918 */ 0x667D, 0xFFFD, 0x752C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2920 */ 0x6475, 0x6963, 0xFFFD, 0x6D4B, 0x4F64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2928 */ 0x5853, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D33, -/* 2930 */ 0x546C, 0xFFFD, 0xFFFD, 0x7239, 0xFFFD, 0x5F37, 0xFFFD, 0xFFFD, -/* 2938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B4E, 0x7B58, 0xFFFD, 0xFFFD, 0x5059, -/* 2940 */ 0xFFFD, 0xFFFD, 0x5D52, 0x7774, 0x675C, 0x6425, 0xFFFD, 0x7C23, -/* 2948 */ 0xFFFD, 0x5B3B, 0xFFFD, 0xFFFD, 0xFFFD, 0x723A, 0x697D, 0x504A, -/* 2950 */ 0xFFFD, 0x7556, 0x5945, 0x6434, 0xFFFD, 0x6D27, 0x6A3D, 0x667E, -/* 2958 */ 0xFFFD, 0x7744, 0x752D, 0xFFFD, 0x5960, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2960 */ 0x4A34, 0xFFFD, 0xFFFD, 0x7862, 0x4F42, 0xFFFD, 0x6C3E, 0xFFFD, -/* 2968 */ 0xFFFD, 0xFFFD, 0x6534, 0x4D48, 0x6E48, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6748, 0x4D49, -/* 2978 */ 0x7937, 0xFFFD, 0xFFFD, 0x7168, 0x5972, 0x5B75, 0x4A35, 0x5946, -/* 2980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5849, 0x6D3C, 0xFFFD, 0xFFFD, 0x5854, -/* 2988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C5A, 0xFFFD, 0x623C, 0xFFFD, 0xFFFD, -/* 2990 */ 0x7C6D, 0x6C60, 0x527E, 0xFFFD, 0x6947, 0x662A, 0xFFFD, 0xFFFD, -/* 2998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6270, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A3B, 0xFFFD, 0x752E, 0x7B2A, 0xFFFD, -/* 29A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C7B, 0xFFFD, 0x6C3F, 0x7C58, 0x5465, -/* 29B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7943, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E62, -/* 29B8 */ 0x5769, 0x6D76, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E6D, 0xFFFD, 0xFFFD, -/* 29C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C6C, 0xFFFD, 0x636E, -/* 29C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6854, 0xFFFD, 0xFFFD, -/* 29D0 */ 0xFFFD, 0x7A78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29D8 */ 0x5D34, 0x6435, 0x5830, 0x5855, 0xFFFD, 0xFFFD, 0xFFFD, 0x746A, -/* 29E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E39, 0xFFFD, 0xFFFD, 0xFFFD, 0x5661, -/* 29E8 */ 0x4F52, 0xFFFD, 0x5036, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29F0 */ 0xFFFD, 0x4E22, 0xFFFD, 0xFFFD, 0x736E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29F8 */ 0xFFFD, 0xFFFD, 0x7378, 0x5C4C, 0xFFFD, 0x504B, 0xFFFD, 0xFFFD, -/* 2A00 */ 0xFFFD, 0x7C24, 0x4D4A, 0x5754, 0x5E23, 0xFFFD, 0x6460, 0xFFFD, -/* 2A08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6E49, 0xFFFD, 0xFFFD, 0xFFFD, 0x625D, -/* 2A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x757E, 0x542C, 0xFFFD, -/* 2A18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5551, 0xFFFD, 0x5870, 0x7843, -/* 2A20 */ 0x6A57, 0x7557, 0xFFFD, 0xFFFD, 0x583F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A28 */ 0xFFFD, 0x7D40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A30 */ 0x6B2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x552A, 0x6E4A, 0xFFFD, -/* 2A38 */ 0xFFFD, 0xFFFD, 0x4A67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A40 */ 0x7863, 0xFFFD, 0x545D, 0xFFFD, 0xFFFD, 0x6A58, 0xFFFD, 0xFFFD, -/* 2A48 */ 0xFFFD, 0xFFFD, 0x7B59, 0x6D77, 0xFFFD, 0xFFFD, 0x6535, 0xFFFD, -/* 2A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x502D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A58 */ 0xFFFD, 0x7171, 0x623D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6348, 0xFFFD, -/* 2A60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5955, 0xFFFD, 0xFFFD, 0x5F2A, 0xFFFD, -/* 2A68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B3C, 0x7864, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A70 */ 0xFFFD, 0xFFFD, 0x717A, 0xFFFD, 0xFFFD, 0x6536, 0x736F, 0xFFFD, -/* 2A78 */ 0xFFFD, 0x7B5A, 0x6160, 0xFFFD, 0x592C, 0xFFFD, 0x756B, 0xFFFD, -/* 2A80 */ 0x6036, 0xFFFD, 0xFFFD, 0x6948, 0xFFFD, 0x4B4F, 0xFFFD, 0x6349, -/* 2A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x623E, 0x5C6F, 0xFFFD, 0x5625, -/* 2A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6271, 0xFFFD, 0xFFFD, -/* 2AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x567E, 0x5921, 0xFFFD, -/* 2AA8 */ 0x5840, 0x5C5B, 0xFFFD, 0xFFFD, 0x6D3D, 0x5F38, 0xFFFD, 0x6A25, -/* 2AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x572D, 0xFFFD, 0xFFFD, 0x7379, 0xFFFD, -/* 2AB8 */ 0x6D78, 0xFFFD, 0x7547, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AC0 */ 0xFFFD, 0x614A, 0x6B63, 0xFFFD, 0x725E, 0x784C, 0xFFFD, 0x6A59, -/* 2AC8 */ 0xFFFD, 0x5346, 0xFFFD, 0x5B66, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AD0 */ 0xFFFD, 0x752F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E70, 0xFFFD, -/* 2AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x697E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AE0 */ 0xFFFD, 0x7B36, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6272, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AF0 */ 0x4F72, 0x7739, 0x5973, 0xFFFD, 0xFFFD, 0x614B, 0x5A5D, 0xFFFD, -/* 2AF8 */ 0xFFFD, 0x5A39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B00 */ 0xFFFD, 0x6B7B, 0xFFFD, 0x4B39, 0xFFFD, 0xFFFD, 0x6D79, 0xFFFD, -/* 2B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6060, 0xFFFD, 0xFFFD, -/* 2B10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B18 */ 0x7440, 0xFFFD, 0x7D3C, 0x5F31, 0x636F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B20 */ 0xFFFD, 0x6023, 0x7D39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7031, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4D4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6D3E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5540, -/* 2B40 */ 0x6370, 0x6D7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6964, -/* 2B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x556D, 0x675D, -/* 2B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5476, 0x6537, -/* 2B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5B67, 0x623F, 0x6E4B, 0xFFFD, 0xFFFD, -/* 2B60 */ 0x5774, 0x705D, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E2B, 0xFFFD, 0xFFFD, -/* 2B68 */ 0x675E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5656, 0x614C, 0xFFFD, 0xFFFD, -/* 2B70 */ 0x6833, 0x656E, 0x5C22, 0xFFFD, 0xFFFD, 0x6050, 0x7B5B, 0xFFFD, -/* 2B78 */ 0x794B, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B73, 0x7425, 0xFFFD, 0xFFFD, -/* 2B80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A48, 0x5657, 0xFFFD, 0x6965, 0x7B5C, -/* 2B88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D50, -/* 2B90 */ 0x5A25, 0xFFFD, 0x5B3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B98 */ 0xFFFD, 0x6C62, 0x4D77, 0x705E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BA0 */ 0x7649, 0x5E6F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5331, 0xFFFD, 0xFFFD, -/* 2BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C6E, 0xFFFD, -/* 2BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6843, 0xFFFD, 0x7148, 0xFFFD, 0xFFFD, -/* 2BB8 */ 0xFFFD, 0x4E71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x796D, 0xFFFD, -/* 2BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7274, -/* 2BC8 */ 0x6436, 0xFFFD, 0x7539, 0xFFFD, 0x5C70, 0x6371, 0xFFFD, 0xFFFD, -/* 2BD0 */ 0xFFFD, 0xFFFD, 0x6825, 0x723B, 0xFFFD, 0x5E24, 0xFFFD, 0x5A4C, -/* 2BD8 */ 0x4A69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x635A, -/* 2BE0 */ 0xFFFD, 0x7C59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BE8 */ 0xFFFD, 0x6A5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BF0 */ 0x7944, 0xFFFD, 0x6324, 0x7B5D, 0xFFFD, 0x6F4A, 0xFFFD, 0x6844, -/* 2BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C00 */ 0xFFFD, 0x554C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B57, 0x592D, 0xFFFD, 0xFFFD, -/* 2C10 */ 0x7B2B, 0x5359, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C18 */ 0x5522, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C20 */ 0xFFFD, 0xFFFD, 0x765E, 0x6051, 0xFFFD, 0xFFFD, 0x6928, 0xFFFD, -/* 2C28 */ 0xFFFD, 0x7579, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C30 */ 0x7A2F, 0xFFFD, 0x6B7C, 0xFFFD, 0xFFFD, 0x606A, 0xFFFD, 0xFFFD, -/* 2C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6332, 0x5545, 0xFFFD, 0xFFFD, -/* 2C40 */ 0x7163, 0x556E, 0x4D4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D59, -/* 2C48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5841, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C50 */ 0xFFFD, 0x7A6C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x716B, -/* 2C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A3C, 0x6662, 0xFFFD, -/* 2C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A65, 0x627A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C68 */ 0x4A36, 0xFFFD, 0x6437, 0xFFFD, 0x6A5B, 0xFFFD, 0x757A, 0xFFFD, -/* 2C70 */ 0xFFFD, 0xFFFD, 0x7B2C, 0x4F43, 0x6B7D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C78 */ 0xFFFD, 0x787A, 0xFFFD, 0xFFFD, 0x5F39, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C80 */ 0xFFFD, 0x6171, 0xFFFD, 0x5224, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C88 */ 0x757B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x505A, -/* 2C90 */ 0x505B, 0xFFFD, 0x6A3E, 0x5931, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C98 */ 0xFFFD, 0x4A37, 0xFFFD, 0xFFFD, 0x5367, 0xFFFD, 0x7865, 0xFFFD, -/* 2CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5332, 0xFFFD, 0xFFFD, 0xFFFD, 0x6240, -/* 2CA8 */ 0x725F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D65, -/* 2CB0 */ 0x792C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CB8 */ 0xFFFD, 0x4D4D, 0x6E2E, 0x562E, 0x576A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CC0 */ 0xFFFD, 0x6760, 0x6B2E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F59, 0xFFFD, -/* 2CC8 */ 0xFFFD, 0x5C4D, 0x6D7B, 0xFFFD, 0x5E70, 0xFFFD, 0x576B, 0xFFFD, -/* 2CD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E25, 0xFFFD, 0xFFFD, -/* 2CD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CE0 */ 0x5F57, 0x5B50, 0x5B51, 0xFFFD, 0xFFFD, 0x5523, 0xFFFD, 0xFFFD, -/* 2CE8 */ 0xFFFD, 0xFFFD, 0x7032, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C5C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A68, 0xFFFD, 0x7866, -/* 2D00 */ 0x5C4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A5C, 0x5B52, 0x6933, -/* 2D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x775B, 0x6328, 0xFFFD, 0x572E, -/* 2D10 */ 0xFFFD, 0xFFFD, 0x6061, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D18 */ 0x4B3A, 0xFFFD, 0xFFFD, 0x6551, 0x505C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D20 */ 0xFFFD, 0x5541, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x584A, -/* 2D28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6329, -/* 2D30 */ 0x6024, 0xFFFD, 0x6929, 0xFFFD, 0x5347, 0xFFFD, 0xFFFD, 0x5C5D, -/* 2D38 */ 0x782E, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C38, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D40 */ 0x502E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5872, 0xFFFD, 0xFFFD, 0x634A, -/* 2D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D50 */ 0xFFFD, 0xFFFD, 0x4C2F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D58 */ 0xFFFD, 0xFFFD, 0x542D, 0x7651, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x504C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4A46, 0xFFFD, 0xFFFD, 0x5542, 0xFFFD, -/* 2D70 */ 0xFFFD, 0x4E3A, 0x5F58, 0xFFFD, 0xFFFD, 0xFFFD, 0x753A, 0xFFFD, -/* 2D78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x656B, 0xFFFD, -/* 2D80 */ 0x6F74, 0x5D35, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4D2A, 0xFFFD, -/* 2D88 */ 0x6372, 0xFFFD, 0x7B77, 0xFFFD, 0x7750, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D90 */ 0xFFFD, 0x7D3A, 0xFFFD, 0xFFFD, 0x7D61, 0x767E, 0x5140, 0xFFFD, -/* 2D98 */ 0xFFFD, 0x6845, 0xFFFD, 0x6438, 0xFFFD, 0x6168, 0xFFFD, 0xFFFD, -/* 2DA0 */ 0xFFFD, 0x4C41, 0xFFFD, 0x526D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DA8 */ 0x5B3E, 0xFFFD, 0xFFFD, 0x6062, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A49, -/* 2DB0 */ 0xFFFD, 0xFFFD, 0x614D, 0xFFFD, 0x4A38, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DB8 */ 0x7260, 0x7149, 0x5E71, 0xFFFD, 0xFFFD, 0xFFFD, 0x705F, 0x7844, -/* 2DC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E4C, 0xFFFD, 0xFFFD, -/* 2DC8 */ 0x5E72, 0xFFFD, 0x6749, 0xFFFD, 0x6273, 0x6761, 0xFFFD, 0xFFFD, -/* 2DD0 */ 0x634B, 0xFFFD, 0xFFFD, 0x634C, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F78, -/* 2DD8 */ 0x6F2C, 0xFFFD, 0x7D7E, 0x7C25, 0x7A31, 0x5F59, 0xFFFD, 0x6052, -/* 2DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x745A, 0x714A, 0xFFFD, 0x4E23, 0xFFFD, -/* 2DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x723C, 0x6C63, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DF0 */ 0xFFFD, 0xFFFD, 0x6025, 0xFFFD, 0x772B, 0xFFFD, 0xFFFD, 0x6B2F, -/* 2DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x655E, 0xFFFD, 0x6124, -/* 2E00 */ 0x4D2B, 0xFFFD, 0x5974, 0x6826, 0x4D4E, 0x6169, 0xFFFD, 0x7C6F, -/* 2E08 */ 0xFFFD, 0x6063, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6241, -/* 2E10 */ 0xFFFD, 0x4E24, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E18 */ 0x5E26, 0xFFFD, 0xFFFD, 0x6B7E, 0xFFFD, 0x6B5D, 0x7060, 0xFFFD, -/* 2E20 */ 0xFFFD, 0x745B, 0xFFFD, 0x6274, 0xFFFD, 0xFFFD, 0x5348, 0xFFFD, -/* 2E28 */ 0xFFFD, 0xFFFD, 0x746B, 0xFFFD, 0x6E35, 0xFFFD, 0x7558, 0xFFFD, -/* 2E30 */ 0xFFFD, 0x555F, 0xFFFD, 0xFFFD, 0xFFFD, 0x5665, 0xFFFD, 0xFFFD, -/* 2E38 */ 0xFFFD, 0xFFFD, 0x6B30, 0x7463, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E40 */ 0x634D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7474, 0x7A32, 0xFFFD, -/* 2E48 */ 0xFFFD, 0x6F75, 0x4A5F, 0xFFFD, 0x6B31, 0x6D3F, 0xFFFD, 0xFFFD, -/* 2E50 */ 0x7D49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6426, 0x7924, 0x7033, -/* 2E58 */ 0xFFFD, 0x656C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5167, 0xFFFD, 0x5947, -/* 2E60 */ 0x6457, 0x6A5D, 0xFFFD, 0x5477, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A3A, 0xFFFD, 0x5A4D, -/* 2E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x794C, 0xFFFD, 0x615A, 0x5B3F, 0xFFFD, -/* 2E78 */ 0x4C45, 0x6C50, 0x4B3B, 0xFFFD, 0x5E73, 0xFFFD, 0xFFFD, 0x692A, -/* 2E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5948, -/* 2E88 */ 0xFFFD, 0xFFFD, 0x6E63, 0x573D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E90 */ 0xFFFD, 0xFFFD, 0x4F44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E98 */ 0x504D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EA0 */ 0x7C26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EA8 */ 0x717B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D52, 0x5141, 0xFFFD, -/* 2EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x635B, -/* 2EB8 */ 0xFFFD, 0x5349, 0xFFFD, 0x5C4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C6D, 0xFFFD, 0xFFFD, -/* 2EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5E27, 0xFFFD, 0xFFFD, 0x663B, 0x6C21, -/* 2ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C39, 0xFFFD, 0xFFFD, 0x7B5E, 0xFFFD, -/* 2ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6762, 0xFFFD, 0xFFFD, 0x5441, -/* 2EE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EE8 */ 0xFFFD, 0x5C28, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6242, -/* 2EF0 */ 0xFFFD, 0x7358, 0x6553, 0xFFFD, 0xFFFD, 0x7359, 0xFFFD, 0xFFFD, -/* 2EF8 */ 0xFFFD, 0x7346, 0x4D5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F00 */ 0xFFFD, 0xFFFD, 0x4D2C, 0xFFFD, 0x7C43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F08 */ 0xFFFD, 0x5467, 0xFFFD, 0x5142, 0xFFFD, 0x7925, 0xFFFD, 0x6855, -/* 2F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F18 */ 0x634E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x544A, 0xFFFD, 0xFFFD, -/* 2F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F5A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B5F, 0x6763, 0x787B, -/* 2F30 */ 0x634F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F38 */ 0x7530, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F40 */ 0x5867, 0xFFFD, 0x5949, 0x782F, 0x6F76, 0xFFFD, 0x5D36, 0x6E2F, -/* 2F48 */ 0x4D78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E38, 0x7C27, 0x777C, -/* 2F50 */ 0x7731, 0x4E3B, 0x7421, 0xFFFD, 0xFFFD, 0x6E4D, 0x612E, 0xFFFD, -/* 2F58 */ 0xFFFD, 0x6C43, 0x4F7E, 0xFFFD, 0x783F, 0x5862, 0x5368, 0xFFFD, -/* 2F60 */ 0xFFFD, 0x5E28, 0x7464, 0x6C42, 0xFFFD, 0x5975, 0x7945, 0x5D53, -/* 2F68 */ 0x5671, 0x6C7C, 0x7C70, 0xFFFD, 0xFFFD, 0x6D40, 0x4A39, 0xFFFD, -/* 2F70 */ 0x6E64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7261, -/* 2F78 */ 0xFFFD, 0x5E39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F80 */ 0x5672, 0xFFFD, 0x5E74, 0xFFFD, 0x5F5B, 0xFFFD, 0x5B53, 0xFFFD, -/* 2F88 */ 0x7A67, 0x5863, 0x7441, 0xFFFD, 0x5D37, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F90 */ 0x7275, 0xFFFD, 0xFFFD, 0x542E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F98 */ 0xFFFD, 0xFFFD, 0x5673, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FA0 */ 0xFFFD, 0x5D38, 0x4F45, 0x5F5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FA8 */ 0xFFFD, 0xFFFD, 0x723E, 0x7621, 0xFFFD, 0x6B4B, 0x717C, 0xFFFD, -/* 2FB0 */ 0x7347, 0xFFFD, 0xFFFD, 0x606B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FB8 */ 0xFFFD, 0x6D7C, 0xFFFD, 0xFFFD, 0x615B, 0x6E65, 0xFFFD, 0x5E75, -/* 2FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A53, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FC8 */ 0xFFFD, 0x714B, 0xFFFD, 0xFFFD, 0x502F, 0x5D39, 0xFFFD, 0xFFFD, -/* 2FD0 */ 0x5143, 0x7531, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A46, 0x7061, -/* 2FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FE0 */ 0xFFFD, 0x762C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7559, 0xFFFD, -/* 2FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF0 */ 0xFFFD, 0x706B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FF8 */ 0x5D3A, 0xFFFD, 0xFFFD, 0xFFFD, 0x723F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7745, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3008 */ 0xFFFD, 0x5B22, 0x7276, 0xFFFD, 0xFFFD, 0x4A3A, 0x7775, 0xFFFD, -/* 3010 */ 0x4B65, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E66, 0xFFFD, 0x6053, 0xFFFD, -/* 3018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3020 */ 0xFFFD, 0xFFFD, 0x5658, 0xFFFD, 0xFFFD, 0xFFFD, 0x542F, 0x6949, -/* 3028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x534E, 0x7442, 0x7121, 0xFFFD, -/* 3030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B32, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3038 */ 0xFFFD, 0x7122, 0x6B33, 0xFFFD, 0x7034, 0xFFFD, 0xFFFD, 0x4B74, -/* 3040 */ 0x5430, 0x7332, 0x7B37, 0x756C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3048 */ 0xFFFD, 0x6E67, 0x7432, 0x756D, 0xFFFD, 0x4F73, 0xFFFD, 0xFFFD, -/* 3050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3058 */ 0x7062, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E4E, 0xFFFD, -/* 3060 */ 0xFFFD, 0x714C, 0xFFFD, 0xFFFD, 0x6538, 0x5775, 0x6373, 0x4F65, -/* 3068 */ 0x4F46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3070 */ 0xFFFD, 0xFFFD, 0x7333, 0x6458, 0x4F79, 0x4F5A, 0xFFFD, 0xFFFD, -/* 3078 */ 0xFFFD, 0xFFFD, 0x7A4D, 0x756E, 0xFFFD, 0xFFFD, 0x4A3B, 0xFFFD, -/* 3080 */ 0xFFFD, 0x635C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E72, 0xFFFD, -/* 3088 */ 0x5659, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E30, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7465, 0x5842, 0x5C50, -/* 3098 */ 0x4C6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5560, 0x764A, -/* 30A0 */ 0x7D4A, 0x5856, 0x744F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30A8 */ 0xFFFD, 0x5626, 0x5C3E, 0xFFFD, 0x5B54, 0x5747, 0xFFFD, 0xFFFD, -/* 30B0 */ 0xFFFD, 0xFFFD, 0x727E, 0xFFFD, 0xFFFD, 0xFFFD, 0x714D, 0xFFFD, -/* 30B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6243, 0x5C5E, 0xFFFD, 0x5C5F, 0xFFFD, -/* 30C0 */ 0xFFFD, 0x6F2D, 0x662B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x795D, -/* 30C8 */ 0x6A3F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F2E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30D0 */ 0x7450, 0x4E73, 0x662C, 0xFFFD, 0x4E5E, 0xFFFD, 0xFFFD, 0x5579, -/* 30D8 */ 0x6374, 0x4D50, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30E0 */ 0x5538, 0xFFFD, 0xFFFD, 0x777D, 0xFFFD, 0x5C29, 0xFFFD, 0xFFFD, -/* 30E8 */ 0xFFFD, 0xFFFD, 0x5E76, 0xFFFD, 0x5C2A, 0x7263, 0x6934, 0x525C, -/* 30F0 */ 0x6966, 0xFFFD, 0xFFFD, 0x6376, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x674A, 0xFFFD, 0xFFFD, 0x504E, -/* 3100 */ 0xFFFD, 0xFFFD, 0x5A77, 0x4A3C, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E68, -/* 3108 */ 0x5A5E, 0xFFFD, 0x7277, 0xFFFD, 0xFFFD, 0x627B, 0xFFFD, 0x4C26, -/* 3110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A3B, 0xFFFD, 0x6E69, 0xFFFD, -/* 3118 */ 0xFFFD, 0xFFFD, 0x755A, 0xFFFD, 0xFFFD, 0x775C, 0x616A, 0x4E41, -/* 3120 */ 0x5431, 0xFFFD, 0x7D31, 0x663D, 0xFFFD, 0x7B2D, 0xFFFD, 0xFFFD, -/* 3128 */ 0x7867, 0xFFFD, 0x614E, 0xFFFD, 0x7762, 0x756F, 0x4F47, 0xFFFD, -/* 3130 */ 0xFFFD, 0x5432, 0x4C6F, 0xFFFD, 0x5468, 0xFFFD, 0x6E4F, 0x7757, -/* 3138 */ 0xFFFD, 0xFFFD, 0x6026, 0x5641, 0x615C, 0x7063, 0x7164, 0x5C71, -/* 3140 */ 0x5627, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7475, 0xFFFD, 0xFFFD, 0x714E, 0x7264, -/* 3150 */ 0xFFFD, 0xFFFD, 0x5030, 0xFFFD, 0xFFFD, 0x6C6F, 0xFFFD, 0xFFFD, -/* 3158 */ 0xFFFD, 0x793A, 0xFFFD, 0x6B35, 0xFFFD, 0xFFFD, 0x546D, 0x6244, -/* 3160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6967, 0xFFFD, 0xFFFD, 0x6B34, -/* 3168 */ 0x6A21, 0xFFFD, 0x783C, 0x4E26, 0xFFFD, 0x7946, 0x7C5A, 0xFFFD, -/* 3170 */ 0x5433, 0x5339, 0x6A5E, 0xFFFD, 0xFFFD, 0xFFFD, 0x692B, 0xFFFD, -/* 3178 */ 0xFFFD, 0x6161, 0x534F, 0x7476, 0xFFFD, 0x6A40, 0x614F, 0xFFFD, -/* 3180 */ 0x4C3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E6A, 0xFFFD, -/* 3188 */ 0xFFFD, 0xFFFD, 0x7064, 0x7334, 0x546E, 0xFFFD, 0xFFFD, 0x7240, -/* 3190 */ 0xFFFD, 0xFFFD, 0x7165, 0xFFFD, 0x7443, 0x6054, 0xFFFD, 0x6B36, -/* 3198 */ 0xFFFD, 0x5721, 0x4B68, 0xFFFD, 0x792D, 0x692D, 0x5864, 0x7A33, -/* 31A0 */ 0x6245, 0x7C3D, 0xFFFD, 0xFFFD, 0x6C44, 0x5831, 0xFFFD, 0x5C2B, -/* 31A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5524, 0xFFFD, 0x6B69, 0xFFFD, -/* 31B0 */ 0xFFFD, 0xFFFD, 0x683B, 0xFFFD, 0xFFFD, 0xFFFD, 0x5857, 0xFFFD, -/* 31B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B2E, -/* 31C0 */ 0x5161, 0xFFFD, 0xFFFD, 0x5B40, 0xFFFD, 0x753E, 0xFFFD, 0x5E77, -/* 31C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A7B, 0x7746, 0x4F48, 0xFFFD, -/* 31D0 */ 0xFFFD, 0xFFFD, 0x6150, 0xFFFD, 0xFFFD, 0x6E50, 0xFFFD, 0xFFFD, -/* 31D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6974, 0xFFFD, -/* 31E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E74, -/* 31E8 */ 0x554D, 0xFFFD, 0xFFFD, 0x4F5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F0 */ 0xFFFD, 0xFFFD, 0x5D3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E2C, -/* 31F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6968, -/* 3200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5434, -/* 3208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6447, 0x755B, 0xFFFD, 0xFFFD, -/* 3210 */ 0x7A41, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E29, 0x5478, 0xFFFD, 0xFFFD, -/* 3218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3220 */ 0x5333, 0x6B37, 0x6F78, 0x755C, 0x6D4C, 0x5B55, 0x714F, 0xFFFD, -/* 3228 */ 0xFFFD, 0xFFFD, 0x7150, 0x7532, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3230 */ 0xFFFD, 0xFFFD, 0x592E, 0x552C, 0xFFFD, 0x6246, 0xFFFD, 0xFFFD, -/* 3238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D23, 0xFFFD, -/* 3240 */ 0x7B65, 0x5F2B, 0x6275, 0xFFFD, 0x762D, 0xFFFD, 0x7533, 0xFFFD, -/* 3248 */ 0x7035, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6125, 0xFFFD, 0xFFFD, -/* 3250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x755D, -/* 3258 */ 0x6C22, 0x6D7D, 0xFFFD, 0x7534, 0x7B38, 0xFFFD, 0x5B23, 0xFFFD, -/* 3260 */ 0xFFFD, 0x564A, 0x4B59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6554, 0xFFFD, 0xFFFD, -/* 3270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x737A, 0xFFFD, 0x6B38, 0xFFFD, -/* 3278 */ 0x6037, 0x576C, 0x716C, 0x652F, 0x5561, 0x576D, 0x5151, 0xFFFD, -/* 3280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6172, 0x6F79, 0xFFFD, 0xFFFD, -/* 3288 */ 0xFFFD, 0x5D3C, 0x765C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3290 */ 0x7065, 0xFFFD, 0xFFFD, 0xFFFD, 0x7444, 0xFFFD, 0xFFFD, 0x6969, -/* 3298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32A0 */ 0xFFFD, 0xFFFD, 0x737B, 0x546F, 0xFFFD, 0xFFFD, 0x4C22, 0x777E, -/* 32A8 */ 0x5F3C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6B4D, 0xFFFD, 0xFFFD, -/* 32B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5037, 0x5642, 0xFFFD, 0xFFFD, -/* 32B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x682D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32C0 */ 0x6F2F, 0x4B25, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B69, 0xFFFD, -/* 32C8 */ 0xFFFD, 0xFFFD, 0x7A68, 0x4C46, 0xFFFD, 0xFFFD, 0xFFFD, 0x6667, -/* 32D0 */ 0xFFFD, 0xFFFD, 0x6A47, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B24, 0xFFFD, -/* 32D8 */ 0x4F49, 0x627C, 0x6F7A, 0x6B5E, 0xFFFD, 0xFFFD, 0x7548, 0xFFFD, -/* 32E0 */ 0x545E, 0x6055, 0xFFFD, 0x6F30, 0xFFFD, 0xFFFD, 0x6247, 0xFFFD, -/* 32E8 */ 0x592F, 0xFFFD, 0xFFFD, 0xFFFD, 0x7967, 0x6765, 0xFFFD, 0xFFFD, -/* 32F0 */ 0x4F4A, 0x6151, 0xFFFD, 0x6248, 0x6F7B, 0xFFFD, 0xFFFD, 0x7A79, -/* 32F8 */ 0xFFFD, 0xFFFD, 0x5C72, 0x6027, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3300 */ 0xFFFD, 0x7868, 0x4B6A, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B3C, 0xFFFD, -/* 3308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5662, 0x755E, -/* 3310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x755F, -/* 3318 */ 0xFFFD, 0x6E36, 0xFFFD, 0xFFFD, 0xFFFD, 0x6276, 0x534A, 0x6F7C, -/* 3320 */ 0x5144, 0x6F31, 0xFFFD, 0x5145, 0xFFFD, 0x505E, 0xFFFD, 0x5961, -/* 3328 */ 0xFFFD, 0xFFFD, 0x6038, 0xFFFD, 0xFFFD, 0x4D51, 0x7339, 0x674C, -/* 3330 */ 0xFFFD, 0x5628, 0x4E27, 0xFFFD, 0x5435, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3338 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6448, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3340 */ 0xFFFD, 0xFFFD, 0x5334, 0x6B39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3348 */ 0xFFFD, 0xFFFD, 0x4B75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3350 */ 0xFFFD, 0x765D, 0xFFFD, 0x7123, 0x4C47, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x694A, 0xFFFD, 0x6170, 0xFFFD, -/* 3360 */ 0xFFFD, 0xFFFD, 0x7560, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7B2F, 0xFFFD, 0xFFFD, 0xFFFD, 0x4B51, -/* 3370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B60, 0x7265, 0xFFFD, 0xFFFD, -/* 3378 */ 0x6C70, 0x694B, 0xFFFD, 0xFFFD, 0x4C70, 0xFFFD, 0xFFFD, 0x572F, -/* 3380 */ 0x6056, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F32, 0xFFFD, -/* 3388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3390 */ 0x7451, 0xFFFD, 0xFFFD, 0x7721, 0x4A7C, 0x4A7D, 0xFFFD, 0xFFFD, -/* 3398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E4E, 0x7348, -/* 33A0 */ 0xFFFD, 0x733A, 0x6D7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A26, 0xFFFD, 0xFFFD, 0x606C, 0xFFFD, -/* 33B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x784D, 0xFFFD, 0x4B52, 0xFFFD, -/* 33B8 */ 0xFFFD, 0xFFFD, 0x6B4E, 0xFFFD, 0x7958, 0x7959, 0x4A60, 0x5A4A, -/* 33C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4B26, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A48, 0x796E, -/* 33D0 */ 0x5B6C, 0xFFFD, 0xFFFD, 0x5031, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33D8 */ 0x556F, 0xFFFD, 0xFFFD, 0xFFFD, 0x6673, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6722, 0x6459, -/* 33E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33F0 */ 0xFFFD, 0xFFFD, 0x6461, 0xFFFD, 0xFFFD, 0x7C44, 0xFFFD, 0xFFFD, -/* 33F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x796F, -/* 3400 */ 0x4F74, 0x7766, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E3C, -/* 3408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7445, 0x5C23, 0x5D3D, 0xFFFD, -/* 3410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7446, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7821, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3420 */ 0x6856, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B41, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7066, 0xFFFD, 0xFFFD, -/* 3430 */ 0xFFFD, 0x6439, 0x766D, 0xFFFD, 0x792E, 0xFFFD, 0x5D3E, 0xFFFD, -/* 3438 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5730, 0x5868, 0x4B3D, -/* 3440 */ 0xFFFD, 0xFFFD, 0x795A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x784E, 0x7970, 0x606D, -/* 3450 */ 0x6333, 0x7433, 0xFFFD, 0xFFFD, 0x6A42, 0x7266, 0x7036, 0xFFFD, -/* 3458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5B56, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3460 */ 0xFFFD, 0xFFFD, 0x6B64, 0xFFFD, 0xFFFD, 0x7267, 0xFFFD, 0x5755, -/* 3468 */ 0x5436, 0x7968, 0x5741, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6555, -/* 3470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x696A, -/* 3478 */ 0x574C, 0xFFFD, 0xFFFD, 0xFFFD, 0x5369, 0x6249, 0xFFFD, 0x7C5B, -/* 3480 */ 0x4D2D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4C30, 0x6A22, -/* 3488 */ 0xFFFD, 0xFFFD, 0x6476, 0x5040, 0xFFFD, 0x7037, 0x6E21, 0xFFFD, -/* 3490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5776, 0xFFFD, 0xFFFD, -/* 3498 */ 0xFFFD, 0x624A, 0x624B, 0xFFFD, 0x7A4F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6B5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34A8 */ 0xFFFD, 0x564B, 0xFFFD, 0xFFFD, 0xFFFD, 0x7434, 0xFFFD, 0xFFFD, -/* 34B0 */ 0xFFFD, 0xFFFD, 0x6D4D, 0x6452, 0xFFFD, 0xFFFD, 0x6A29, 0x643A, -/* 34B8 */ 0x7322, 0x4D52, 0xFFFD, 0x764B, 0xFFFD, 0x7166, 0x6D41, 0x683C, -/* 34C0 */ 0x6E51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7067, -/* 34C8 */ 0x624C, 0xFFFD, 0xFFFD, 0x642A, 0xFFFD, 0x7561, 0x6D5A, 0xFFFD, -/* 34D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x576E, 0x5171, 0xFFFD, 0xFFFD, -/* 34D8 */ 0xFFFD, 0xFFFD, 0x696B, 0x696C, 0x6064, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34E0 */ 0xFFFD, 0x5A27, 0x5D54, 0xFFFD, 0x6A23, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34E8 */ 0x5643, 0x5674, 0xFFFD, 0x5A5F, 0xFFFD, 0x6F33, 0xFFFD, 0xFFFD, -/* 34F0 */ 0xFFFD, 0xFFFD, 0x624D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F8 */ 0x6F7D, 0x7268, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F45, 0xFFFD, 0x6767, 0xFFFD, 0xFFFD, -/* 3508 */ 0x577D, 0xFFFD, 0xFFFD, 0x674E, 0xFFFD, 0xFFFD, 0x5F5C, 0xFFFD, -/* 3510 */ 0x7947, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3518 */ 0xFFFD, 0x5976, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3520 */ 0xFFFD, 0xFFFD, 0x5F2C, 0xFFFD, 0x565A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5C24, 0xFFFD, 0xFFFD, 0xFFFD, 0x7038, -/* 3530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x557A, 0xFFFD, 0x6477, 0xFFFD, -/* 3538 */ 0xFFFD, 0xFFFD, 0x5644, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x746C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3548 */ 0x6F7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7021, 0xFFFD, -/* 3550 */ 0x5E2A, 0xFFFD, 0xFFFD, 0x5A3C, 0x587C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A54, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C65, -/* 3560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C28, 0xFFFD, -/* 3568 */ 0xFFFD, 0x6C66, 0xFFFD, 0xFFFD, 0x584B, 0x7B39, 0xFFFD, 0x6453, -/* 3570 */ 0xFFFD, 0x4D79, 0x4F53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3578 */ 0xFFFD, 0xFFFD, 0x4A6A, 0xFFFD, 0xFFFD, 0x4F54, 0xFFFD, 0x783D, -/* 3580 */ 0x7447, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A5F, 0xFFFD, 0xFFFD, -/* 3588 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x795B, 0xFFFD, 0xFFFD, -/* 3590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5437, 0x6B65, -/* 3598 */ 0xFFFD, 0xFFFD, 0x6152, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A24, -/* 35A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7A42, 0x7B61, 0x7A6D, 0x7022, 0x4C71, -/* 35A8 */ 0xFFFD, 0x7A23, 0x6277, 0xFFFD, 0x624E, 0xFFFD, 0x6975, 0xFFFD, -/* 35B0 */ 0x616B, 0xFFFD, 0xFFFD, 0xFFFD, 0x6768, 0x6857, 0x5A78, 0x544B, -/* 35B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7776, 0x5645, 0x5469, 0xFFFD, 0xFFFD, -/* 35C0 */ 0x7A7A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35C8 */ 0x4C72, 0x775D, 0xFFFD, 0x5E3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E28, 0xFFFD, -/* 35D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7039, 0x647E, 0x6449, 0xFFFD, -/* 35E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6454, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35E8 */ 0x6A43, 0xFFFD, 0x6F34, 0xFFFD, 0xFFFD, 0xFFFD, 0x573E, 0xFFFD, -/* 35F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B62, 0xFFFD, 0x4D53, -/* 35F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F35, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A69, -/* 3600 */ 0x7926, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5F3D, -/* 3608 */ 0xFFFD, 0x7747, 0x787D, 0xFFFD, 0xFFFD, 0x787C, 0x5E2B, 0x5B68, -/* 3610 */ 0xFFFD, 0xFFFD, 0x635D, 0xFFFD, 0x6162, 0x5146, 0xFFFD, 0xFFFD, -/* 3618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3620 */ 0x7650, 0x6B66, 0x5A79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C47, -/* 3628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5E78, -/* 3630 */ 0x7869, 0x635E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E75, 0xFFFD, -/* 3638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7A43, 0x6557, 0xFFFD, 0x6C48, -/* 3640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7349, 0xFFFD, 0xFFFD, 0x643B, 0xFFFD, -/* 3648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x662E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3650 */ 0xFFFD, 0x6F36, 0xFFFD, 0x5C3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E3D, 0x5843, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3660 */ 0x504F, 0xFFFD, 0x4F7A, 0x734A, 0x6057, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3668 */ 0x5147, 0x692E, 0xFFFD, 0x683D, 0xFFFD, 0xFFFD, 0x7A44, 0x624F, -/* 3670 */ 0xFFFD, 0xFFFD, 0x7A45, 0xFFFD, 0xFFFD, 0xFFFD, 0x7938, 0xFFFD, -/* 3678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C60, 0xFFFD, -/* 3680 */ 0xFFFD, 0x7B30, 0xFFFD, 0xFFFD, 0xFFFD, 0x5829, 0x655F, 0x7927, -/* 3688 */ 0xFFFD, 0xFFFD, 0x766E, 0xFFFD, 0x764C, 0x6278, 0xFFFD, 0xFFFD, -/* 3690 */ 0xFFFD, 0xFFFD, 0x6C71, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3698 */ 0xFFFD, 0xFFFD, 0x5A60, 0x7152, 0x524C, 0x4F4B, 0xFFFD, 0xFFFD, -/* 36A0 */ 0x4A3D, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D3F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36A8 */ 0x766F, 0xFFFD, 0x5E79, 0x7A34, 0xFFFD, 0xFFFD, 0xFFFD, 0x552D, -/* 36B0 */ 0x7167, 0xFFFD, 0x5E3E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36B8 */ 0xFFFD, 0x5C40, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5148, -/* 36C0 */ 0x5149, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36C8 */ 0xFFFD, 0xFFFD, 0x783E, 0x4B76, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36D0 */ 0x5479, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7562, 0x6153, -/* 36D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36E0 */ 0x5869, 0xFFFD, 0xFFFD, 0x787E, 0xFFFD, 0x4F4C, 0xFFFD, 0xFFFD, -/* 36E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D24, 0xFFFD, 0xFFFD, -/* 36F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E76, 0xFFFD, 0x7A50, -/* 36F8 */ 0xFFFD, 0xFFFD, 0x4C73, 0x663E, 0xFFFD, 0xFFFD, 0xFFFD, 0x762E, -/* 3700 */ 0xFFFD, 0xFFFD, 0x5570, 0xFFFD, 0xFFFD, 0x514A, 0xFFFD, 0xFFFD, -/* 3708 */ 0xFFFD, 0x7C3E, 0x5571, 0x6250, 0x7477, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3710 */ 0x4D54, 0x6723, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3718 */ 0xFFFD, 0xFFFD, 0x5B25, 0x5722, 0xFFFD, 0xFFFD, 0x7763, 0xFFFD, -/* 3720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A26, 0xFFFD, 0xFFFD, -/* 3728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3730 */ 0x5021, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4E5A, 0x7B6B, 0x5B26, -/* 3738 */ 0x5B5E, 0x5865, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6A60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3748 */ 0x582A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6560, 0x6F46, -/* 3750 */ 0xFFFD, 0xFFFD, 0x786A, 0x4E77, 0xFFFD, 0xFFFD, 0x6058, 0x4D66, -/* 3758 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4C74, 0x7563, 0xFFFD, 0xFFFD, 0x644A, -/* 3760 */ 0xFFFD, 0x5C61, 0xFFFD, 0xFFFD, 0x7948, 0x6827, 0xFFFD, 0xFFFD, -/* 3768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5844, 0x4B3E, -/* 3770 */ 0xFFFD, 0x5C2E, 0x7068, 0xFFFD, 0x5D40, 0xFFFD, 0x4F4D, 0xFFFD, -/* 3778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3780 */ 0x5C73, 0x5930, 0xFFFD, 0x6669, 0x6A44, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x646C, -/* 3790 */ 0xFFFD, 0x6465, 0x643D, 0xFFFD, 0xFFFD, 0x4D5C, 0x5977, 0xFFFD, -/* 3798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37A0 */ 0xFFFD, 0x5D5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D4E, -/* 37A8 */ 0x5950, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6523, 0xFFFD, -/* 37B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x794D, 0x762F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37B8 */ 0xFFFD, 0xFFFD, 0x7D53, 0x6B6D, 0x565C, 0x6524, 0xFFFD, 0xFFFD, -/* 37C0 */ 0xFFFD, 0x5536, 0x565D, 0xFFFD, 0xFFFD, 0xFFFD, 0x7969, 0xFFFD, -/* 37C8 */ 0xFFFD, 0xFFFD, 0x6724, 0xFFFD, 0x5663, 0x514B, 0x5664, 0xFFFD, -/* 37D0 */ 0xFFFD, 0xFFFD, 0x5572, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37D8 */ 0x5E7A, 0xFFFD, 0x5778, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37E0 */ 0x586A, 0x4F55, 0x587D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37E8 */ 0x582B, 0xFFFD, 0xFFFD, 0x7D4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37F0 */ 0x7C5C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37F8 */ 0xFFFD, 0xFFFD, 0x6028, 0x5573, 0xFFFD, 0xFFFD, 0x7D59, 0xFFFD, -/* 3800 */ 0xFFFD, 0x4C23, 0xFFFD, 0xFFFD, 0xFFFD, 0x5979, 0xFFFD, 0xFFFD, -/* 3808 */ 0x536A, 0x7575, 0xFFFD, 0x6F47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x535A, 0x6828, 0x5C2F, -/* 3818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7023, 0xFFFD, 0xFFFD, -/* 3820 */ 0xFFFD, 0xFFFD, 0x4D55, 0x703A, 0x6E31, 0xFFFD, 0xFFFD, 0x6E32, -/* 3828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x764D, 0x6E52, 0xFFFD, 0x5646, 0xFFFD, -/* 3830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6065, 0xFFFD, 0xFFFD, 0x733B, -/* 3838 */ 0xFFFD, 0x6561, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x644B, 0x5723, 0xFFFD, 0xFFFD, -/* 3848 */ 0x5B42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4A7E, 0xFFFD, 0xFFFD, -/* 3850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F4F, 0x4B50, 0x4B56, 0x4B67, -/* 3858 */ 0x4D4F, 0x4D68, 0x4E2D, 0x4F7B, 0x5022, 0x5038, 0x5050, 0x505D, -/* 3860 */ 0x5154, 0x5155, 0x5158, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3868 */ 0xFFFD, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166, 0x5168, 0x5169, -/* 3870 */ 0x516A, 0x516B, 0x516D, 0x516F, 0x5170, 0x5172, 0x5176, 0x517A, -/* 3878 */ 0x517C, 0x517D, 0x517E, 0x5222, 0x5223, 0x5227, 0x5228, 0x5229, -/* 3880 */ 0x522A, 0x522B, 0x522D, 0x5232, 0x523E, 0x5242, 0x5243, 0x5244, -/* 3888 */ 0x5259, 0x525A, 0x525E, 0x525F, 0x5261, 0x5262, 0x5277, 0x5278, -/* 3890 */ 0x5466, 0x547C, 0x5525, 0x552B, 0x552E, 0x5638, 0x564D, 0x574B, -/* 3898 */ 0x5764, 0x5B45, 0x5B64, 0x5C25, 0x5D25, 0x5D55, 0x5D74, 0x5E7C, -/* 38A0 */ 0x5E7E, 0x5F33, 0x5F61, 0x5F68, 0x6071, 0x612D, 0x616D, 0x6375, -/* 38A8 */ 0x6421, 0x6429, 0x652E, 0x6531, 0x6532, 0x6539, 0x653B, 0x653C, -/* 38B0 */ 0x6544, 0x654E, 0x6550, 0x6552, 0x6556, 0x657A, 0x657B, 0x657C, -/* 38B8 */ 0x657E, 0x6621, 0x6624, 0x6627, 0x662D, 0x662F, 0x6630, 0x6631, -/* 38C0 */ 0x6633, 0x6637, 0x6638, 0x663C, 0x6644, 0x6646, 0x6647, 0x664A, -/* 38C8 */ 0x6652, 0x6656, 0x6659, 0x665C, 0x665F, 0x6661, 0x6664, 0x6665, -/* 38D0 */ 0x6666, 0x6668, 0x666A, 0x666B, 0x666C, 0x666F, 0x6671, 0x6672, -/* 38D8 */ 0x6675, 0x6676, 0x6677, 0x6679, 0x6721, 0x6726, 0x6729, 0x672A, -/* 38E0 */ 0x672C, 0x672D, 0x6730, 0x673F, 0x6741, 0x6746, 0x6747, 0x674B, -/* 38E8 */ 0x674D, 0x674F, 0x6750, 0x6753, 0x675F, 0x6764, 0x6766, 0x6777, -/* 38F0 */ 0x6867, 0x6868, 0x6870, 0x6871, 0x6877, 0x6879, 0x687B, 0x687E, -/* 38F8 */ 0x6927, 0x692C, 0x694C, 0x6977, 0x6A41, 0x6A65, 0x6A74, 0x6A77, -/* 3900 */ 0x6A7C, 0x6A7E, 0x6B24, 0x6B27, 0x6B29, 0x6B2A, 0x6B3A, 0x6B3B, -/* 3908 */ 0x6B3D, 0x6B41, 0x6B42, 0x6B46, 0x6B47, 0x6B4C, 0x6B4F, 0x6B50, -/* 3910 */ 0x6B51, 0x6B52, 0x6B58, 0x6C26, 0x6C27, 0x6C2A, 0x6C2F, 0x6C30, -/* 3918 */ 0x6C31, 0x6C32, 0x6C35, 0x6C38, 0x6C3A, 0x6C40, 0x6C41, 0x6C45, -/* 3920 */ 0x6C46, 0x6C49, 0x6C4A, 0x6C55, 0x6C5D, 0x6C5E, 0x6C61, 0x6C64, -/* 3928 */ 0x6C67, 0x6C68, 0x6C77, 0x6C78, 0x6C7A, 0x6D21, 0x6D22, 0x6D23, -/* 3930 */ 0x6D6E, 0x6E5B, 0x723D, 0x727A, 0x7331, 0x7427, 0x746E, 0x7674, -/* 3938 */ 0x7676, 0x7738, 0x7748, 0x7753, 0x785B, 0x7870, 0x7A21, 0x7A22, -/* 3940 */ 0x7A66, 0x7C29, 0x214B, 0x214C, 0x217E, 0x237E, 0xFFFD, 0x214D, -/* 3948 */ 0x235C, -/* End of table Total Length = 0x3F18 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/macce.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/macce.uf deleted file mode 100644 index febc0a25540..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/macce.uf +++ /dev/null @@ -1,202 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 017E - mappingOffset = 0000 - Mapping = - 00CA FFFD FFFD 00A3 FFFD FFFD FFFD 00A4 - 00AC 00A9 FFFD 00C7 00C2 FFFD 00A8 FFFD - 00A1 FFFD FFFD FFFD FFFD FFFD 00A6 FFFD - FFFD FFFD FFFD 00C8 FFFD FFFD FFFD FFFD - FFFD 00E7 FFFD FFFD 0080 FFFD FFFD FFFD - FFFD 0083 FFFD FFFD FFFD 00EA FFFD FFFD - FFFD FFFD FFFD 00EE 00EF 00CD 0085 FFFD - FFFD FFFD 00F2 FFFD 0086 00F8 FFFD 00A7 - FFFD 0087 FFFD FFFD 008A FFFD FFFD FFFD - FFFD 008E FFFD FFFD FFFD 0092 FFFD FFFD - FFFD FFFD FFFD 0097 0099 009B 009A 00D6 - FFFD FFFD 009C FFFD 009F 00F9 FFFD FFFD - 0081 0082 FFFD FFFD 0084 0088 008C 008D - FFFD FFFD FFFD FFFD 0089 008B 0091 0093 - FFFD FFFD 0094 0095 FFFD FFFD 0096 0098 - 00A2 00AB 009D 009E FFFD FFFD FFFD FFFD - FFFD FFFD 00FE 00AE FFFD FFFD FFFD FFFD - FFFD FFFD 00B1 00B4 FFFD FFFD 00AF 00B0 - FFFD FFFD FFFD FFFD FFFD FFFD 00B5 00FA - FFFD 00BD 00BE 00B9 00BA 00BB 00BC FFFD - FFFD 00FC 00B8 00C1 00C4 00BF 00C0 00C5 - 00CB FFFD FFFD FFFD 00CF 00D8 FFFD FFFD - 00CC 00CE FFFD FFFD 00D9 00DA 00DF 00E0 - 00DB 00DE 00E5 00E6 FFFD FFFD FFFD FFFD - 00E1 00E4 FFFD FFFD 00E8 00E9 FFFD FFFD - FFFD FFFD 00ED 00F0 FFFD FFFD 00F1 00F3 - 00F4 00F5 00F6 00F7 FFFD FFFD FFFD FFFD - FFFD 008F 0090 00FB 00FD 00EB 00EC -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 02C7 - destBegin = 00FF -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 2013 - srcEnd = 2026 - mappingOffset = 00DF - Mapping = - 00D0 00D1 FFFD FFFD FFFD 00D4 00D5 00E2 - FFFD 00D2 00D3 00E3 FFFD 00A0 FFFD 00A5 - FFFD FFFD FFFD 00C9 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 2039 - srcEnd = 203A - mappingOffset = 00F3 - Mapping = - 00DC 00DD -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 2122 - destBegin = 00AA -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2202 - srcEnd = 221A - mappingOffset = 00F5 - Mapping = - 00B6 FFFD FFFD FFFD 00C6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 00B7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00C3 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 010E - Mapping = - 00AD FFFD FFFD FFFD 00B2 00B3 -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 25CA - destBegin = 00D7 -End of Item 0008 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0005 */ -/* Total of Format 2 : 0x0003 */ -/* Total of Format 3 : 0x0000 */ - -0x1210, 0x1121, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A0, 0x017E, 0x0000, -/* 0002 */ 0x02C7, 0x0000, 0x00FF, -/* 0003 */ 0x2013, 0x2026, 0x00DF, -/* 0004 */ 0x2039, 0x203A, 0x00F3, -/* 0005 */ 0x2122, 0x0000, 0x00AA, -/* 0006 */ 0x2202, 0x221A, 0x00F5, -/* 0007 */ 0x2260, 0x2265, 0x010E, -/* 0008 */ 0x25CA, 0x0000, 0x00D7, -/*-------------------------------------------------------*/ -/* Offset=0x0022 Start of MappingTable */ - -/* 0000 */ 0x00CA, 0xFFFD, 0xFFFD, 0x00A3, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A4, -/* 0008 */ 0x00AC, 0x00A9, 0xFFFD, 0x00C7, 0x00C2, 0xFFFD, 0x00A8, 0xFFFD, -/* 0010 */ 0x00A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A6, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0xFFFD, 0x00E7, 0xFFFD, 0xFFFD, 0x0080, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0x0083, 0xFFFD, 0xFFFD, 0xFFFD, 0x00EA, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00EE, 0x00EF, 0x00CD, 0x0085, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0x00F2, 0xFFFD, 0x0086, 0x00F8, 0xFFFD, 0x00A7, -/* 0040 */ 0xFFFD, 0x0087, 0xFFFD, 0xFFFD, 0x008A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0x008E, 0xFFFD, 0xFFFD, 0xFFFD, 0x0092, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0097, 0x0099, 0x009B, 0x009A, 0x00D6, -/* 0058 */ 0xFFFD, 0xFFFD, 0x009C, 0xFFFD, 0x009F, 0x00F9, 0xFFFD, 0xFFFD, -/* 0060 */ 0x0081, 0x0082, 0xFFFD, 0xFFFD, 0x0084, 0x0088, 0x008C, 0x008D, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0089, 0x008B, 0x0091, 0x0093, -/* 0070 */ 0xFFFD, 0xFFFD, 0x0094, 0x0095, 0xFFFD, 0xFFFD, 0x0096, 0x0098, -/* 0078 */ 0x00A2, 0x00AB, 0x009D, 0x009E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0x00FE, 0x00AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00B1, 0x00B4, 0xFFFD, 0xFFFD, 0x00AF, 0x00B0, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B5, 0x00FA, -/* 0098 */ 0xFFFD, 0x00BD, 0x00BE, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00FC, 0x00B8, 0x00C1, 0x00C4, 0x00BF, 0x00C0, 0x00C5, -/* 00A8 */ 0x00CB, 0xFFFD, 0xFFFD, 0xFFFD, 0x00CF, 0x00D8, 0xFFFD, 0xFFFD, -/* 00B0 */ 0x00CC, 0x00CE, 0xFFFD, 0xFFFD, 0x00D9, 0x00DA, 0x00DF, 0x00E0, -/* 00B8 */ 0x00DB, 0x00DE, 0x00E5, 0x00E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0x00E1, 0x00E4, 0xFFFD, 0xFFFD, 0x00E8, 0x00E9, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0x00ED, 0x00F0, 0xFFFD, 0xFFFD, 0x00F1, 0x00F3, -/* 00D0 */ 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D8 */ 0xFFFD, 0x008F, 0x0090, 0x00FB, 0x00FD, 0x00EB, 0x00EC, 0x00D0, -/* 00E0 */ 0x00D1, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D4, 0x00D5, 0x00E2, 0xFFFD, -/* 00E8 */ 0x00D2, 0x00D3, 0x00E3, 0xFFFD, 0x00A0, 0xFFFD, 0x00A5, 0xFFFD, -/* 00F0 */ 0xFFFD, 0xFFFD, 0x00C9, 0x00DC, 0x00DD, 0x00B6, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0x00C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, 0x00AD, 0xFFFD, -/* 0110 */ 0xFFFD, 0xFFFD, 0x00B2, 0x00B3, -/* End of table Total Length = 0x0136 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/maccorp.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/maccorp.uf deleted file mode 100644 index c142e8bfb5c..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/maccorp.uf +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 2 - srcBegin = 0000 - destBegin = F8FF -End of Item 0000 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0000 */ -/* Total of Format 1 : 0x0000 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x0000, 0xF8FF, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MappingTable */ - -/* End of table Total Length = 0x0008 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/maccroat.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/maccroat.uf deleted file mode 100644 index c62c0561bbb..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/maccroat.uf +++ /dev/null @@ -1,263 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 0111 - mappingOffset = 0000 - Mapping = - 00CA 00C1 00A2 00A3 00DB FFFD FFFD 00A4 - 00AC 00D9 00BB 00C7 00C2 FFFD 00A8 00F8 - 00A1 00B1 FFFD FFFD 00AB 00B5 00A6 00E1 - 00FC FFFD 00BC 00DF FFFD FFFD FFFD 00C0 - 00CB 00E7 00E5 00CC 0080 0081 00DE 0082 - 00E9 0083 00FD 00FA 00ED 00EA 00EB 00EC - FFFD 0084 00F1 00EE 00EF 00CD 0085 FFFD - 00AF 00F4 00F2 00F3 0086 FFFD FFFD 00A7 - 0088 0087 0089 008B 008A 008C 00FE 008D - 008F 008E 0090 0091 0093 0092 0094 0095 - FFFD 0096 0098 0097 0099 009B 009A 00D6 - 00BF 009D 009C 009E 009F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 00C6 00E6 - FFFD FFFD FFFD FFFD 00C8 00E8 FFFD FFFD - 00D0 00F0 -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 0131 - destBegin = 00F5 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0152 - srcEnd = 0153 - mappingOffset = 0072 - Mapping = - 00CE 00CF -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0160 - srcEnd = 0161 - mappingOffset = 0074 - Mapping = - 00A9 00B9 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 017D - srcEnd = 017E - mappingOffset = 0076 - Mapping = - 00AE 00BE -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 0192 - destBegin = 00C4 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 02C6 - srcEnd = 02C7 - mappingOffset = 0078 - Mapping = - 00F6 00FF -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 02DA - srcEnd = 02DC - mappingOffset = 007A - Mapping = - 00FB FFFD 00F7 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 03C0 - destBegin = 00F9 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2013 - srcEnd = 2044 - mappingOffset = 007D - Mapping = - 00E0 00D1 FFFD FFFD FFFD 00D4 00D5 00E2 - FFFD 00D2 00D3 00E3 FFFD 00A0 FFFD 00A5 - FFFD FFFD FFFD 00C9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00E4 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 00DC 00DD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00DA -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2122 - srcEnd = 2126 - mappingOffset = 00AF - Mapping = - 00AA FFFD FFFD FFFD 00BD -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2202 - srcEnd = 221E - mappingOffset = 00B4 - Mapping = - 00B6 FFFD FFFD FFFD 00B4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00B8 FFFD 00B7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00C3 FFFD FFFD FFFD 00B0 -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 222B - destBegin = 00BA -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 2248 - destBegin = 00C5 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 00D1 - Mapping = - 00AD FFFD FFFD FFFD 00B2 00B3 -End of Item 000F - -Begin of Item 0010 - Format 2 - srcBegin = 25CA - destBegin = 00D7 -End of Item 0010 - -Begin of Item 0011 - Format 2 - srcBegin = F8FF - destBegin = 00D8 -End of Item 0011 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x003F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x000A */ -/* Total of Format 2 : 0x0007 */ -/* Total of Format 3 : 0x0000 */ - -0x1210, 0x1211, 0x1121, 0x1221, 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A0, 0x0111, 0x0000, -/* 0002 */ 0x0131, 0x0000, 0x00F5, -/* 0003 */ 0x0152, 0x0153, 0x0072, -/* 0004 */ 0x0160, 0x0161, 0x0074, -/* 0005 */ 0x017D, 0x017E, 0x0076, -/* 0006 */ 0x0192, 0x0000, 0x00C4, -/* 0007 */ 0x02C6, 0x02C7, 0x0078, -/* 0008 */ 0x02DA, 0x02DC, 0x007A, -/* 0009 */ 0x03C0, 0x0000, 0x00F9, -/* 000A */ 0x2013, 0x2044, 0x007D, -/* 000B */ 0x2122, 0x2126, 0x00AF, -/* 000C */ 0x2202, 0x221E, 0x00B4, -/* 000D */ 0x222B, 0x0000, 0x00BA, -/* 000E */ 0x2248, 0x0000, 0x00C5, -/* 000F */ 0x2260, 0x2265, 0x00D1, -/* 0010 */ 0x25CA, 0x0000, 0x00D7, -/* 0011 */ 0xF8FF, 0x0000, 0x00D8, -/*-------------------------------------------------------*/ -/* Offset=0x003F Start of MappingTable */ - -/* 0000 */ 0x00CA, 0x00C1, 0x00A2, 0x00A3, 0x00DB, 0xFFFD, 0xFFFD, 0x00A4, -/* 0008 */ 0x00AC, 0x00D9, 0x00BB, 0x00C7, 0x00C2, 0xFFFD, 0x00A8, 0x00F8, -/* 0010 */ 0x00A1, 0x00B1, 0xFFFD, 0xFFFD, 0x00AB, 0x00B5, 0x00A6, 0x00E1, -/* 0018 */ 0x00FC, 0xFFFD, 0x00BC, 0x00DF, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, -/* 0020 */ 0x00CB, 0x00E7, 0x00E5, 0x00CC, 0x0080, 0x0081, 0x00DE, 0x0082, -/* 0028 */ 0x00E9, 0x0083, 0x00FD, 0x00FA, 0x00ED, 0x00EA, 0x00EB, 0x00EC, -/* 0030 */ 0xFFFD, 0x0084, 0x00F1, 0x00EE, 0x00EF, 0x00CD, 0x0085, 0xFFFD, -/* 0038 */ 0x00AF, 0x00F4, 0x00F2, 0x00F3, 0x0086, 0xFFFD, 0xFFFD, 0x00A7, -/* 0040 */ 0x0088, 0x0087, 0x0089, 0x008B, 0x008A, 0x008C, 0x00FE, 0x008D, -/* 0048 */ 0x008F, 0x008E, 0x0090, 0x0091, 0x0093, 0x0092, 0x0094, 0x0095, -/* 0050 */ 0xFFFD, 0x0096, 0x0098, 0x0097, 0x0099, 0x009B, 0x009A, 0x00D6, -/* 0058 */ 0x00BF, 0x009D, 0x009C, 0x009E, 0x009F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C6, 0x00E6, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C8, 0x00E8, 0xFFFD, 0xFFFD, -/* 0070 */ 0x00D0, 0x00F0, 0x00CE, 0x00CF, 0x00A9, 0x00B9, 0x00AE, 0x00BE, -/* 0078 */ 0x00F6, 0x00FF, 0x00FB, 0xFFFD, 0x00F7, 0x00E0, 0x00D1, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0x00D4, 0x00D5, 0x00E2, 0xFFFD, 0x00D2, 0x00D3, -/* 0088 */ 0x00E3, 0xFFFD, 0x00A0, 0xFFFD, 0x00A5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0x00C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0x00E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, 0x00DD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DA, 0x00AA, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00BD, 0x00B6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0x00B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0x00B8, 0xFFFD, 0x00B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0x00B0, 0x00AD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B2, 0x00B3, -/* End of table Total Length = 0x0116 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/maccyril.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/maccyril.uf deleted file mode 100644 index 5d327e2e1d3..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/maccyril.uf +++ /dev/null @@ -1,205 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0410 - srcEnd = 042F - destBegin = 0080 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0430 - srcEnd = 044E - destBegin = 00E0 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00BB - mappingOffset = 0000 - Mapping = - 00CA FFFD 00A2 00A3 00FF FFFD FFFD 00A4 - FFFD 00A9 FFFD 00C7 00C2 FFFD 00A8 FFFD - 00A1 00B1 FFFD FFFD FFFD 00B5 00A6 FFFD - FFFD FFFD FFFD 00C8 -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 00F7 - destBegin = 00D6 -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 0192 - destBegin = 00C4 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 0401 - srcEnd = 040F - mappingOffset = 001C - Mapping = - 00DD 00AB 00AE 00B8 00C1 00A7 00BA 00B7 - 00BC 00BE 00CB 00CD FFFD 00D8 00DA -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 044F - srcEnd = 045F - mappingOffset = 002B - Mapping = - 00DF FFFD 00DE 00AC 00AF 00B9 00CF 00B4 - 00BB 00C0 00BD 00BF 00CC 00CE FFFD 00D9 - 00DB -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 2013 - srcEnd = 2026 - mappingOffset = 003C - Mapping = - 00D0 00D1 FFFD FFFD FFFD 00D4 00D5 FFFD - FFFD 00D2 00D3 00D7 FFFD 00A0 FFFD 00A5 - FFFD FFFD FFFD 00C9 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 2116 - destBegin = 00DC -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 2122 - destBegin = 00AA -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2202 - srcEnd = 2206 - mappingOffset = 0050 - Mapping = - 00B6 FFFD FFFD FFFD 00C6 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 221A - srcEnd = 221E - mappingOffset = 0055 - Mapping = - 00C3 FFFD FFFD FFFD 00B0 -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 2248 - destBegin = 00C5 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 005A - Mapping = - 00AD FFFD FFFD FFFD 00B2 00B3 -End of Item 000E - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000F, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0035, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0007 */ -/* Total of Format 2 : 0x0005 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x1122, 0x1221, 0x0121, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0410, 0x042F, 0x0080, -/* 0002 */ 0x0430, 0x044E, 0x00E0, -/* 0003 */ 0x00A0, 0x00BB, 0x0000, -/* 0004 */ 0x00F7, 0x0000, 0x00D6, -/* 0005 */ 0x0192, 0x0000, 0x00C4, -/* 0006 */ 0x0401, 0x040F, 0x001C, -/* 0007 */ 0x044F, 0x045F, 0x002B, -/* 0008 */ 0x2013, 0x2026, 0x003C, -/* 0009 */ 0x2116, 0x0000, 0x00DC, -/* 000A */ 0x2122, 0x0000, 0x00AA, -/* 000B */ 0x2202, 0x2206, 0x0050, -/* 000C */ 0x221A, 0x221E, 0x0055, -/* 000D */ 0x2248, 0x0000, 0x00C5, -/* 000E */ 0x2260, 0x2265, 0x005A, -/*-------------------------------------------------------*/ -/* Offset=0x0035 Start of MappingTable */ - -/* 0000 */ 0x00CA, 0xFFFD, 0x00A2, 0x00A3, 0x00FF, 0xFFFD, 0xFFFD, 0x00A4, -/* 0008 */ 0xFFFD, 0x00A9, 0xFFFD, 0x00C7, 0x00C2, 0xFFFD, 0x00A8, 0xFFFD, -/* 0010 */ 0x00A1, 0x00B1, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B5, 0x00A6, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00C8, 0x00DD, 0x00AB, 0x00AE, 0x00B8, -/* 0020 */ 0x00C1, 0x00A7, 0x00BA, 0x00B7, 0x00BC, 0x00BE, 0x00CB, 0x00CD, -/* 0028 */ 0xFFFD, 0x00D8, 0x00DA, 0x00DF, 0xFFFD, 0x00DE, 0x00AC, 0x00AF, -/* 0030 */ 0x00B9, 0x00CF, 0x00B4, 0x00BB, 0x00C0, 0x00BD, 0x00BF, 0x00CC, -/* 0038 */ 0x00CE, 0xFFFD, 0x00D9, 0x00DB, 0x00D0, 0x00D1, 0xFFFD, 0xFFFD, -/* 0040 */ 0xFFFD, 0x00D4, 0x00D5, 0xFFFD, 0xFFFD, 0x00D2, 0x00D3, 0x00D7, -/* 0048 */ 0xFFFD, 0x00A0, 0xFFFD, 0x00A5, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C9, -/* 0050 */ 0x00B6, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C6, 0x00C3, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0x00B0, 0x00AD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B2, 0x00B3, -/* End of table Total Length = 0x0095 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/macdingb.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/macdingb.uf deleted file mode 100644 index 2a4d1061482..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/macdingb.uf +++ /dev/null @@ -1,230 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 2460 - srcEnd = 2469 - destBegin = 00AC -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 270C - srcEnd = 2727 - destBegin = 002C -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 2729 - srcEnd = 274B - destBegin = 0049 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 2758 - srcEnd = 275E - destBegin = 0078 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 2761 - srcEnd = 2767 - destBegin = 00A1 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 2776 - srcEnd = 2794 - destBegin = 00B6 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 2798 - srcEnd = 27AF - destBegin = 00D8 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 27B1 - srcEnd = 27BE - destBegin = 00F1 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = F8D7 - srcEnd = F8E4 - destBegin = 0080 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 0020 - destBegin = 0020 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2192 - srcEnd = 2195 - mappingOffset = 0000 - Mapping = - 00D5 FFFD 00D6 00D7 -End of Item 000A - -Begin of Item 000B - Format 2 - srcBegin = 25A0 - destBegin = 006E -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 25B2 - srcEnd = 25D7 - mappingOffset = 0004 - Mapping = - 0073 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 0074 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 0075 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 006C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 0077 -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2605 - srcEnd = 260E - mappingOffset = 002A - Mapping = - 0048 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 0025 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 261B - srcEnd = 261E - mappingOffset = 0034 - Mapping = - 002A FFFD FFFD 002B -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 2660 - srcEnd = 2666 - mappingOffset = 0038 - Mapping = - 00AB FFFD FFFD 00A8 FFFD 00AA 00A9 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 2701 - srcEnd = 2709 - mappingOffset = 003F - Mapping = - 0021 0022 0023 0024 FFFD 0026 0027 0028 - 0029 -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 274D - srcEnd = 2756 - mappingOffset = 0048 - Mapping = - 006D FFFD 006F 0070 0071 0072 FFFD FFFD - FFFD 0076 -End of Item 0011 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x003F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0009 */ -/* Total of Format 1 : 0x0007 */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x2120, 0x1111, 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x2460, 0x2469, 0x00AC, -/* 0001 */ 0x270C, 0x2727, 0x002C, -/* 0002 */ 0x2729, 0x274B, 0x0049, -/* 0003 */ 0x2758, 0x275E, 0x0078, -/* 0004 */ 0x2761, 0x2767, 0x00A1, -/* 0005 */ 0x2776, 0x2794, 0x00B6, -/* 0006 */ 0x2798, 0x27AF, 0x00D8, -/* 0007 */ 0x27B1, 0x27BE, 0x00F1, -/* 0008 */ 0xF8D7, 0xF8E4, 0x0080, -/* 0009 */ 0x0020, 0x0000, 0x0020, -/* 000A */ 0x2192, 0x2195, 0x0000, -/* 000B */ 0x25A0, 0x0000, 0x006E, -/* 000C */ 0x25B2, 0x25D7, 0x0004, -/* 000D */ 0x2605, 0x260E, 0x002A, -/* 000E */ 0x261B, 0x261E, 0x0034, -/* 000F */ 0x2660, 0x2666, 0x0038, -/* 0010 */ 0x2701, 0x2709, 0x003F, -/* 0011 */ 0x274D, 0x2756, 0x0048, -/*-------------------------------------------------------*/ -/* Offset=0x003F Start of MappingTable */ - -/* 0000 */ 0x00D5, 0xFFFD, 0x00D6, 0x00D7, 0x0073, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0074, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0x0075, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0xFFFD, 0x006C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0x0077, 0x0048, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0025, 0x002A, 0xFFFD, 0xFFFD, 0x002B, -/* 0038 */ 0x00AB, 0xFFFD, 0xFFFD, 0x00A8, 0xFFFD, 0x00AA, 0x00A9, 0x0021, -/* 0040 */ 0x0022, 0x0023, 0x0024, 0xFFFD, 0x0026, 0x0027, 0x0028, 0x0029, -/* 0048 */ 0x006D, 0xFFFD, 0x006F, 0x0070, 0x0071, 0x0072, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0x0076, -/* End of table Total Length = 0x0091 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/macgreek.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/macgreek.uf deleted file mode 100644 index 92ed23b25d2..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/macgreek.uf +++ /dev/null @@ -1,187 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00C9 - mappingOffset = 0000 - Mapping = - 00CA FFFD FFFD 0092 FFFD 00B4 009B 00AC - 008C 00A9 FFFD 00C7 00C2 009C 00A8 FFFD - 00AE 00B1 0082 0084 FFFD FFFD FFFD FFFD - FFFD 0081 FFFD 00C8 FFFD 0097 FFFD FFFD - FFFD FFFD FFFD FFFD 0080 FFFD FFFD FFFD - FFFD 0083 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 00D6 - srcEnd = 00FC - mappingOffset = 002A - Mapping = - 0085 FFFD FFFD FFFD FFFD FFFD 0086 FFFD - FFFD 00A7 0088 FFFD 0089 FFFD 008A FFFD - FFFD 008D 008F 008E 0090 0091 FFFD FFFD - 0094 0095 FFFD FFFD FFFD FFFD 0099 FFFD - 009A 00D6 FFFD 009D FFFD 009E 009F -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 0153 - destBegin = 00CF -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0384 - srcEnd = 03CE - mappingOffset = 0051 - Mapping = - 008B 0087 00CD 00AF 00CE 00D7 00D8 FFFD - 00D9 FFFD 00DA 00DF 00FD 00B0 00B5 00A1 - 00A2 00B6 00B7 00B8 00A3 00B9 00BA 00A4 - 00BB 00C1 00A5 00C3 00A6 00C4 FFFD 00AA - 00C6 00CB 00BC 00CC 00BE 00BF 00AB 00BD - 00C0 00DB 00DC 00DD 00FE 00E1 00E2 00E7 - 00E4 00E5 00FA 00E8 00F5 00E9 00EB 00EC - 00ED 00EE 00EA 00EF 00F0 00F2 00F7 00F3 - 00F4 00F9 00E6 00F8 00E3 00F6 00FB 00FC - 00DE 00E0 00F1 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 2013 - srcEnd = 2030 - mappingOffset = 009C - Mapping = - 00D0 FFFD 00D1 FFFD FFFD 00D4 00D5 FFFD - FFFD 00D2 00D3 FFFD FFFD 00A0 FFFD 0096 - FFFD FFFD FFFD 00C9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 0098 -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 2122 - destBegin = 0093 -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 2248 - destBegin = 00C5 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 00BA - Mapping = - 00AD FFFD FFFD FFFD 00B2 00B3 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = F8A0 - destBegin = 00FF -End of Item 0009 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0025, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0005 */ -/* Total of Format 2 : 0x0004 */ -/* Total of Format 3 : 0x0000 */ - -0x2110, 0x2211, 0x0021, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A0, 0x00C9, 0x0000, -/* 0002 */ 0x00D6, 0x00FC, 0x002A, -/* 0003 */ 0x0153, 0x0000, 0x00CF, -/* 0004 */ 0x0384, 0x03CE, 0x0051, -/* 0005 */ 0x2013, 0x2030, 0x009C, -/* 0006 */ 0x2122, 0x0000, 0x0093, -/* 0007 */ 0x2248, 0x0000, 0x00C5, -/* 0008 */ 0x2260, 0x2265, 0x00BA, -/* 0009 */ 0xF8A0, 0x0000, 0x00FF, -/*-------------------------------------------------------*/ -/* Offset=0x0025 Start of MappingTable */ - -/* 0000 */ 0x00CA, 0xFFFD, 0xFFFD, 0x0092, 0xFFFD, 0x00B4, 0x009B, 0x00AC, -/* 0008 */ 0x008C, 0x00A9, 0xFFFD, 0x00C7, 0x00C2, 0x009C, 0x00A8, 0xFFFD, -/* 0010 */ 0x00AE, 0x00B1, 0x0082, 0x0084, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0x0081, 0xFFFD, 0x00C8, 0xFFFD, 0x0097, 0xFFFD, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0080, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0x0083, 0x0085, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0x0086, 0xFFFD, 0xFFFD, 0x00A7, 0x0088, 0xFFFD, 0x0089, 0xFFFD, -/* 0038 */ 0x008A, 0xFFFD, 0xFFFD, 0x008D, 0x008F, 0x008E, 0x0090, 0x0091, -/* 0040 */ 0xFFFD, 0xFFFD, 0x0094, 0x0095, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0048 */ 0x0099, 0xFFFD, 0x009A, 0x00D6, 0xFFFD, 0x009D, 0xFFFD, 0x009E, -/* 0050 */ 0x009F, 0x008B, 0x0087, 0x00CD, 0x00AF, 0x00CE, 0x00D7, 0x00D8, -/* 0058 */ 0xFFFD, 0x00D9, 0xFFFD, 0x00DA, 0x00DF, 0x00FD, 0x00B0, 0x00B5, -/* 0060 */ 0x00A1, 0x00A2, 0x00B6, 0x00B7, 0x00B8, 0x00A3, 0x00B9, 0x00BA, -/* 0068 */ 0x00A4, 0x00BB, 0x00C1, 0x00A5, 0x00C3, 0x00A6, 0x00C4, 0xFFFD, -/* 0070 */ 0x00AA, 0x00C6, 0x00CB, 0x00BC, 0x00CC, 0x00BE, 0x00BF, 0x00AB, -/* 0078 */ 0x00BD, 0x00C0, 0x00DB, 0x00DC, 0x00DD, 0x00FE, 0x00E1, 0x00E2, -/* 0080 */ 0x00E7, 0x00E4, 0x00E5, 0x00FA, 0x00E8, 0x00F5, 0x00E9, 0x00EB, -/* 0088 */ 0x00EC, 0x00ED, 0x00EE, 0x00EA, 0x00EF, 0x00F0, 0x00F2, 0x00F7, -/* 0090 */ 0x00F3, 0x00F4, 0x00F9, 0x00E6, 0x00F8, 0x00E3, 0x00F6, 0x00FB, -/* 0098 */ 0x00FC, 0x00DE, 0x00E0, 0x00F1, 0x00D0, 0xFFFD, 0x00D1, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00D4, 0x00D5, 0xFFFD, 0xFFFD, 0x00D2, 0x00D3, 0xFFFD, -/* 00A8 */ 0xFFFD, 0x00A0, 0xFFFD, 0x0096, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C9, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0x0098, 0x00AD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B2, 0x00B3, -/* End of table Total Length = 0x00E5 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/macicela.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/macicela.uf deleted file mode 100644 index 7f272fcf02b..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/macicela.uf +++ /dev/null @@ -1,253 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007E - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00CA 00C1 00A2 00A3 FFFD 00B4 FFFD 00A4 - 00AC 00A9 00BB 00C7 00C2 FFFD 00A8 00F8 - 00A1 00B1 FFFD FFFD 00AB 00B5 00A6 00E1 - 00FC FFFD 00BC 00C8 FFFD FFFD FFFD 00C0 - 00CB 00E7 00E5 00CC 0080 0081 00AE 0082 - 00E9 0083 00E6 00E8 00ED 00EA 00EB 00EC - 00DC 0084 00F1 00EE 00EF 00CD 0085 FFFD - 00AF 00F4 00F2 00F3 0086 00A0 00DE 00A7 - 0088 0087 0089 008B 008A 008C 00BE 008D - 008F 008E 0090 0091 0093 0092 0094 0095 - 00DD 0096 0098 0097 0099 009B 009A 00D6 - 00BF 009D 009C 009E 009F 00E0 00DF 00D8 -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 0131 - destBegin = 00F5 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0152 - srcEnd = 0153 - mappingOffset = 0060 - Mapping = - 00CE 00CF -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 0178 - destBegin = 00D9 -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 0192 - destBegin = 00C4 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 02C6 - srcEnd = 02C7 - mappingOffset = 0062 - Mapping = - 00F6 00FF -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 0064 - Mapping = - 00F9 00FA 00FB 00FE 00F7 00FD -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 03C0 - destBegin = 00B9 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 2013 - srcEnd = 2030 - mappingOffset = 006A - Mapping = - 00D0 00D1 FFFD FFFD FFFD 00D4 00D5 00E2 - FFFD 00D2 00D3 00E3 FFFD FFFD FFFD 00A5 - FFFD FFFD FFFD 00C9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00E4 -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 2044 - destBegin = 00DA -End of Item 000A - -Begin of Item 000B - Format 2 - srcBegin = 20AC - destBegin = 00DB -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2122 - srcEnd = 2126 - mappingOffset = 0088 - Mapping = - 00AA FFFD FFFD FFFD 00BD -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2202 - srcEnd = 221E - mappingOffset = 008D - Mapping = - 00B6 FFFD FFFD FFFD 00C6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00B8 FFFD 00B7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00C3 FFFD FFFD FFFD 00B0 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 222B - destBegin = 00BA -End of Item 000E - -Begin of Item 000F - Format 2 - srcBegin = 2248 - destBegin = 00C5 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 00AA - Mapping = - 00AD FFFD FFFD FFFD 00B2 00B3 -End of Item 0010 - -Begin of Item 0011 - Format 2 - srcBegin = 25CA - destBegin = 00D7 -End of Item 0011 - -Begin of Item 0012 - Format 2 - srcBegin = F8FF - destBegin = 00F0 -End of Item 0012 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0013, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0042, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x000A */ -/* Total of Format 3 : 0x0000 */ - -0x1210, 0x1122, 0x2212, 0x2211, 0x0221, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007E, 0x0000, -/* 0001 */ 0x00A0, 0x00FF, 0x0000, -/* 0002 */ 0x0131, 0x0000, 0x00F5, -/* 0003 */ 0x0152, 0x0153, 0x0060, -/* 0004 */ 0x0178, 0x0000, 0x00D9, -/* 0005 */ 0x0192, 0x0000, 0x00C4, -/* 0006 */ 0x02C6, 0x02C7, 0x0062, -/* 0007 */ 0x02D8, 0x02DD, 0x0064, -/* 0008 */ 0x03C0, 0x0000, 0x00B9, -/* 0009 */ 0x2013, 0x2030, 0x006A, -/* 000A */ 0x2044, 0x0000, 0x00DA, -/* 000B */ 0x20AC, 0x0000, 0x00DB, -/* 000C */ 0x2122, 0x2126, 0x0088, -/* 000D */ 0x2202, 0x221E, 0x008D, -/* 000E */ 0x222B, 0x0000, 0x00BA, -/* 000F */ 0x2248, 0x0000, 0x00C5, -/* 0010 */ 0x2260, 0x2265, 0x00AA, -/* 0011 */ 0x25CA, 0x0000, 0x00D7, -/* 0012 */ 0xF8FF, 0x0000, 0x00F0, -/*-------------------------------------------------------*/ -/* Offset=0x0042 Start of MappingTable */ - -/* 0000 */ 0x00CA, 0x00C1, 0x00A2, 0x00A3, 0xFFFD, 0x00B4, 0xFFFD, 0x00A4, -/* 0008 */ 0x00AC, 0x00A9, 0x00BB, 0x00C7, 0x00C2, 0xFFFD, 0x00A8, 0x00F8, -/* 0010 */ 0x00A1, 0x00B1, 0xFFFD, 0xFFFD, 0x00AB, 0x00B5, 0x00A6, 0x00E1, -/* 0018 */ 0x00FC, 0xFFFD, 0x00BC, 0x00C8, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, -/* 0020 */ 0x00CB, 0x00E7, 0x00E5, 0x00CC, 0x0080, 0x0081, 0x00AE, 0x0082, -/* 0028 */ 0x00E9, 0x0083, 0x00E6, 0x00E8, 0x00ED, 0x00EA, 0x00EB, 0x00EC, -/* 0030 */ 0x00DC, 0x0084, 0x00F1, 0x00EE, 0x00EF, 0x00CD, 0x0085, 0xFFFD, -/* 0038 */ 0x00AF, 0x00F4, 0x00F2, 0x00F3, 0x0086, 0x00A0, 0x00DE, 0x00A7, -/* 0040 */ 0x0088, 0x0087, 0x0089, 0x008B, 0x008A, 0x008C, 0x00BE, 0x008D, -/* 0048 */ 0x008F, 0x008E, 0x0090, 0x0091, 0x0093, 0x0092, 0x0094, 0x0095, -/* 0050 */ 0x00DD, 0x0096, 0x0098, 0x0097, 0x0099, 0x009B, 0x009A, 0x00D6, -/* 0058 */ 0x00BF, 0x009D, 0x009C, 0x009E, 0x009F, 0x00E0, 0x00DF, 0x00D8, -/* 0060 */ 0x00CE, 0x00CF, 0x00F6, 0x00FF, 0x00F9, 0x00FA, 0x00FB, 0x00FE, -/* 0068 */ 0x00F7, 0x00FD, 0x00D0, 0x00D1, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D4, -/* 0070 */ 0x00D5, 0x00E2, 0xFFFD, 0x00D2, 0x00D3, 0x00E3, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0x00A5, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C9, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E4, -/* 0088 */ 0x00AA, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BD, 0x00B6, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0x00C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0x00B8, 0xFFFD, 0x00B7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0x00B0, 0x00AD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B2, 0x00B3, -/* End of table Total Length = 0x00F2 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/macro.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/macro.uf deleted file mode 100644 index 37d570a2df3..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/macro.uf +++ /dev/null @@ -1,250 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 0103 - mappingOffset = 0000 - Mapping = - 00CA 00C1 00A2 00A3 00DB 00B4 FFFD 00A4 - 00AC 00A9 00BB 00C7 00C2 FFFD 00A8 00F8 - 00A1 00B1 FFFD FFFD 00AB 00B5 00A6 00E1 - 00FC FFFD 00BC 00C8 FFFD FFFD FFFD 00C0 - 00CB 00E7 00E5 00CC 0080 0081 FFFD 0082 - 00E9 0083 00E6 00E8 00ED 00EA 00EB 00EC - FFFD 0084 00F1 00EE 00EF 00CD 0085 FFFD - FFFD 00F4 00F2 00F3 0086 FFFD FFFD 00A7 - 0088 0087 0089 008B 008A 008C FFFD 008D - 008F 008E 0090 0091 0093 0092 0094 0095 - FFFD 0096 0098 0097 0099 009B 009A 00D6 - FFFD 009D 009C 009E 009F FFFD FFFD 00D8 - FFFD FFFD 00AE 00BE -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 0131 - destBegin = 00F5 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0152 - srcEnd = 0163 - mappingOffset = 0064 - Mapping = - 00CE 00CF FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00AF 00BF FFFD FFFD - 00DE 00DF -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 0178 - destBegin = 00D9 -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 0192 - destBegin = 00C4 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 02C6 - srcEnd = 02C7 - mappingOffset = 0076 - Mapping = - 00F6 00FF -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 0078 - Mapping = - 00F9 00FA 00FB 00FE 00F7 00FD -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 03C0 - destBegin = 00B9 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 2013 - srcEnd = 2044 - mappingOffset = 007E - Mapping = - 00D0 00D1 FFFD FFFD FFFD 00D4 00D5 00E2 - FFFD 00D2 00D3 00E3 FFFD 00A0 00E0 00A5 - FFFD FFFD FFFD 00C9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00E4 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 00DC 00DD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00DA -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2122 - srcEnd = 2126 - mappingOffset = 00B0 - Mapping = - 00AA FFFD FFFD FFFD 00BD -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2202 - srcEnd = 221E - mappingOffset = 00B5 - Mapping = - 00B6 FFFD FFFD FFFD 00C6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00B8 FFFD 00B7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00C3 FFFD FFFD FFFD 00B0 -End of Item 000B - -Begin of Item 000C - Format 2 - srcBegin = 222B - destBegin = 00BA -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 2248 - destBegin = 00C5 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 00D2 - Mapping = - 00AD FFFD FFFD FFFD 00B2 00B3 -End of Item 000E - -Begin of Item 000F - Format 2 - srcBegin = 25CA - destBegin = 00D7 -End of Item 000F - -Begin of Item 0010 - Format 2 - srcBegin = F8FF - destBegin = 00F0 -End of Item 0010 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x003C, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x0008 */ -/* Total of Format 3 : 0x0000 */ - -0x1210, 0x1122, 0x1112, 0x2122, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A0, 0x0103, 0x0000, -/* 0002 */ 0x0131, 0x0000, 0x00F5, -/* 0003 */ 0x0152, 0x0163, 0x0064, -/* 0004 */ 0x0178, 0x0000, 0x00D9, -/* 0005 */ 0x0192, 0x0000, 0x00C4, -/* 0006 */ 0x02C6, 0x02C7, 0x0076, -/* 0007 */ 0x02D8, 0x02DD, 0x0078, -/* 0008 */ 0x03C0, 0x0000, 0x00B9, -/* 0009 */ 0x2013, 0x2044, 0x007E, -/* 000A */ 0x2122, 0x2126, 0x00B0, -/* 000B */ 0x2202, 0x221E, 0x00B5, -/* 000C */ 0x222B, 0x0000, 0x00BA, -/* 000D */ 0x2248, 0x0000, 0x00C5, -/* 000E */ 0x2260, 0x2265, 0x00D2, -/* 000F */ 0x25CA, 0x0000, 0x00D7, -/* 0010 */ 0xF8FF, 0x0000, 0x00F0, -/*-------------------------------------------------------*/ -/* Offset=0x003C Start of MappingTable */ - -/* 0000 */ 0x00CA, 0x00C1, 0x00A2, 0x00A3, 0x00DB, 0x00B4, 0xFFFD, 0x00A4, -/* 0008 */ 0x00AC, 0x00A9, 0x00BB, 0x00C7, 0x00C2, 0xFFFD, 0x00A8, 0x00F8, -/* 0010 */ 0x00A1, 0x00B1, 0xFFFD, 0xFFFD, 0x00AB, 0x00B5, 0x00A6, 0x00E1, -/* 0018 */ 0x00FC, 0xFFFD, 0x00BC, 0x00C8, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, -/* 0020 */ 0x00CB, 0x00E7, 0x00E5, 0x00CC, 0x0080, 0x0081, 0xFFFD, 0x0082, -/* 0028 */ 0x00E9, 0x0083, 0x00E6, 0x00E8, 0x00ED, 0x00EA, 0x00EB, 0x00EC, -/* 0030 */ 0xFFFD, 0x0084, 0x00F1, 0x00EE, 0x00EF, 0x00CD, 0x0085, 0xFFFD, -/* 0038 */ 0xFFFD, 0x00F4, 0x00F2, 0x00F3, 0x0086, 0xFFFD, 0xFFFD, 0x00A7, -/* 0040 */ 0x0088, 0x0087, 0x0089, 0x008B, 0x008A, 0x008C, 0xFFFD, 0x008D, -/* 0048 */ 0x008F, 0x008E, 0x0090, 0x0091, 0x0093, 0x0092, 0x0094, 0x0095, -/* 0050 */ 0xFFFD, 0x0096, 0x0098, 0x0097, 0x0099, 0x009B, 0x009A, 0x00D6, -/* 0058 */ 0xFFFD, 0x009D, 0x009C, 0x009E, 0x009F, 0xFFFD, 0xFFFD, 0x00D8, -/* 0060 */ 0xFFFD, 0xFFFD, 0x00AE, 0x00BE, 0x00CE, 0x00CF, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0x00AF, 0x00BF, 0xFFFD, 0xFFFD, 0x00DE, 0x00DF, 0x00F6, 0x00FF, -/* 0078 */ 0x00F9, 0x00FA, 0x00FB, 0x00FE, 0x00F7, 0x00FD, 0x00D0, 0x00D1, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00D4, 0x00D5, 0x00E2, 0xFFFD, 0x00D2, -/* 0088 */ 0x00D3, 0x00E3, 0xFFFD, 0x00A0, 0x00E0, 0x00A5, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0x00C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DC, 0x00DD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DA, -/* 00B0 */ 0x00AA, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BD, 0x00B6, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0x00C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0x00B8, 0xFFFD, 0x00B7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0x00B0, 0x00AD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B2, 0x00B3, -/* End of table Total Length = 0x0114 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/macroman.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/macroman.uf deleted file mode 100644 index 9fdb05c6e84..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/macroman.uf +++ /dev/null @@ -1,262 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007E - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00CA 00C1 00A2 00A3 FFFD 00B4 FFFD 00A4 - 00AC 00A9 00BB 00C7 00C2 FFFD 00A8 00F8 - 00A1 00B1 FFFD FFFD 00AB 00B5 00A6 00E1 - 00FC FFFD 00BC 00C8 FFFD FFFD FFFD 00C0 - 00CB 00E7 00E5 00CC 0080 0081 00AE 0082 - 00E9 0083 00E6 00E8 00ED 00EA 00EB 00EC - FFFD 0084 00F1 00EE 00EF 00CD 0085 FFFD - 00AF 00F4 00F2 00F3 0086 FFFD FFFD 00A7 - 0088 0087 0089 008B 008A 008C 00BE 008D - 008F 008E 0090 0091 0093 0092 0094 0095 - FFFD 0096 0098 0097 0099 009B 009A 00D6 - 00BF 009D 009C 009E 009F FFFD FFFD 00D8 -End of Item 0001 - -Begin of Item 0002 - Format 2 - srcBegin = 0131 - destBegin = 00F5 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0152 - srcEnd = 0153 - mappingOffset = 0060 - Mapping = - 00CE 00CF -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 0178 - destBegin = 00D9 -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 0192 - destBegin = 00C4 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 02C6 - srcEnd = 02C7 - mappingOffset = 0062 - Mapping = - 00F6 00FF -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 0064 - Mapping = - 00F9 00FA 00FB 00FE 00F7 00FD -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 03C0 - destBegin = 00B9 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 2013 - srcEnd = 2044 - mappingOffset = 006A - Mapping = - 00D0 00D1 FFFD FFFD FFFD 00D4 00D5 00E2 - FFFD 00D2 00D3 00E3 FFFD 00A0 00E0 00A5 - FFFD FFFD FFFD 00C9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00E4 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 00DC 00DD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00DA -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 20AC - destBegin = 00DB -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2122 - srcEnd = 2126 - mappingOffset = 009C - Mapping = - 00AA FFFD FFFD FFFD 00BD -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2202 - srcEnd = 221E - mappingOffset = 00A1 - Mapping = - 00B6 FFFD FFFD FFFD 00C6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00B8 FFFD 00B7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00C3 FFFD FFFD FFFD 00B0 -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 222B - destBegin = 00BA -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 2248 - destBegin = 00C5 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 00BE - Mapping = - 00AD FFFD FFFD FFFD 00B2 00B3 -End of Item 000F - -Begin of Item 0010 - Format 2 - srcBegin = 25CA - destBegin = 00D7 -End of Item 0010 - -Begin of Item 0011 - Format 2 - srcBegin = F8FF - destBegin = 00F0 -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = FB01 - srcEnd = FB02 - mappingOffset = 00C4 - Mapping = - 00DE 00DF -End of Item 0012 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0013, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0042, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0009 */ -/* Total of Format 2 : 0x0009 */ -/* Total of Format 3 : 0x0000 */ - -0x1210, 0x1122, 0x1212, 0x1221, 0x0122, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007E, 0x0000, -/* 0001 */ 0x00A0, 0x00FF, 0x0000, -/* 0002 */ 0x0131, 0x0000, 0x00F5, -/* 0003 */ 0x0152, 0x0153, 0x0060, -/* 0004 */ 0x0178, 0x0000, 0x00D9, -/* 0005 */ 0x0192, 0x0000, 0x00C4, -/* 0006 */ 0x02C6, 0x02C7, 0x0062, -/* 0007 */ 0x02D8, 0x02DD, 0x0064, -/* 0008 */ 0x03C0, 0x0000, 0x00B9, -/* 0009 */ 0x2013, 0x2044, 0x006A, -/* 000A */ 0x20AC, 0x0000, 0x00DB, -/* 000B */ 0x2122, 0x2126, 0x009C, -/* 000C */ 0x2202, 0x221E, 0x00A1, -/* 000D */ 0x222B, 0x0000, 0x00BA, -/* 000E */ 0x2248, 0x0000, 0x00C5, -/* 000F */ 0x2260, 0x2265, 0x00BE, -/* 0010 */ 0x25CA, 0x0000, 0x00D7, -/* 0011 */ 0xF8FF, 0x0000, 0x00F0, -/* 0012 */ 0xFB01, 0xFB02, 0x00C4, -/*-------------------------------------------------------*/ -/* Offset=0x0042 Start of MappingTable */ - -/* 0000 */ 0x00CA, 0x00C1, 0x00A2, 0x00A3, 0xFFFD, 0x00B4, 0xFFFD, 0x00A4, -/* 0008 */ 0x00AC, 0x00A9, 0x00BB, 0x00C7, 0x00C2, 0xFFFD, 0x00A8, 0x00F8, -/* 0010 */ 0x00A1, 0x00B1, 0xFFFD, 0xFFFD, 0x00AB, 0x00B5, 0x00A6, 0x00E1, -/* 0018 */ 0x00FC, 0xFFFD, 0x00BC, 0x00C8, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, -/* 0020 */ 0x00CB, 0x00E7, 0x00E5, 0x00CC, 0x0080, 0x0081, 0x00AE, 0x0082, -/* 0028 */ 0x00E9, 0x0083, 0x00E6, 0x00E8, 0x00ED, 0x00EA, 0x00EB, 0x00EC, -/* 0030 */ 0xFFFD, 0x0084, 0x00F1, 0x00EE, 0x00EF, 0x00CD, 0x0085, 0xFFFD, -/* 0038 */ 0x00AF, 0x00F4, 0x00F2, 0x00F3, 0x0086, 0xFFFD, 0xFFFD, 0x00A7, -/* 0040 */ 0x0088, 0x0087, 0x0089, 0x008B, 0x008A, 0x008C, 0x00BE, 0x008D, -/* 0048 */ 0x008F, 0x008E, 0x0090, 0x0091, 0x0093, 0x0092, 0x0094, 0x0095, -/* 0050 */ 0xFFFD, 0x0096, 0x0098, 0x0097, 0x0099, 0x009B, 0x009A, 0x00D6, -/* 0058 */ 0x00BF, 0x009D, 0x009C, 0x009E, 0x009F, 0xFFFD, 0xFFFD, 0x00D8, -/* 0060 */ 0x00CE, 0x00CF, 0x00F6, 0x00FF, 0x00F9, 0x00FA, 0x00FB, 0x00FE, -/* 0068 */ 0x00F7, 0x00FD, 0x00D0, 0x00D1, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D4, -/* 0070 */ 0x00D5, 0x00E2, 0xFFFD, 0x00D2, 0x00D3, 0x00E3, 0xFFFD, 0x00A0, -/* 0078 */ 0x00E0, 0x00A5, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C9, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E4, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0090 */ 0x00DC, 0x00DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00DA, 0x00AA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A0 */ 0x00BD, 0x00B6, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C6, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B8, 0xFFFD, -/* 00B0 */ 0x00B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B0, 0x00AD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0x00B2, 0x00B3, 0x00DE, 0x00DF, -/* End of table Total Length = 0x0108 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/macsymbo.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/macsymbo.uf deleted file mode 100644 index dd699deca04..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/macsymbo.uf +++ /dev/null @@ -1,368 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 002E - srcEnd = 003F - destBegin = 002E -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = F8EB - srcEnd = F8F4 - destBegin = 00E6 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = F8F6 - srcEnd = F8FE - destBegin = 00F6 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0020 - srcEnd = 002C - mappingOffset = 0000 - Mapping = - 0020 0021 FFFD 0023 FFFD 0025 0026 FFFD - 0028 0029 FFFD 002B 002C -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 005B - srcEnd = 005F - mappingOffset = 000D - Mapping = - 005B FFFD 005D FFFD 005F -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 007B - srcEnd = 007D - mappingOffset = 0012 - Mapping = - 007B 007C 007D -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 00A9 - srcEnd = 00B1 - mappingOffset = 0015 - Mapping = - 00D3 FFFD FFFD 00D8 FFFD 00D2 FFFD 00B0 - 00B1 -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 00D7 - destBegin = 00B4 -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 00F7 - destBegin = 00B8 -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 0192 - destBegin = 00A6 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 0391 - srcEnd = 03D6 - mappingOffset = 001E - Mapping = - 0041 0042 0047 0044 0045 005A 0048 0051 - 0049 004B 004C 004D 004E 0058 004F 0050 - 0052 FFFD 0053 0054 0055 0046 0043 0059 - 0057 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 0061 0062 0067 0064 0065 007A 0068 0071 - 0069 006B 006C 006D 006E 0078 006F 0070 - 0072 0056 0073 0074 0075 0066 0063 0079 - 0077 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 004A 00A1 FFFD FFFD 006A 0076 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2022 - srcEnd = 2026 - mappingOffset = 0064 - Mapping = - 00B7 FFFD FFFD FFFD 00BC -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2032 - srcEnd = 2033 - mappingOffset = 0069 - Mapping = - 00A2 00B2 -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 2044 - destBegin = 00A4 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 2111 - srcEnd = 2122 - mappingOffset = 006B - Mapping = - 00C1 FFFD FFFD FFFD FFFD FFFD FFFD 00C3 - FFFD FFFD FFFD 00C2 FFFD FFFD FFFD FFFD - FFFD 00D4 -End of Item 000E - -Begin of Item 000F - Format 2 - srcBegin = 2135 - destBegin = 00C0 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 2190 - srcEnd = 2194 - mappingOffset = 007D - Mapping = - 00AC 00AD 00AE 00AF 00AB -End of Item 0010 - -Begin of Item 0011 - Format 2 - srcBegin = 21B5 - destBegin = 00BF -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = 21D0 - srcEnd = 21D4 - mappingOffset = 0082 - Mapping = - 00DC 00DD 00DE 00DF 00DB -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 2200 - srcEnd = 2248 - mappingOffset = 0087 - Mapping = - 0022 FFFD 00B6 0024 FFFD 00C6 FFFD 00D1 - 00CE 00CF FFFD FFFD FFFD 0027 FFFD 00D5 - FFFD 00E5 002D FFFD FFFD FFFD FFFD 002A - FFFD FFFD 00D6 FFFD FFFD 00B5 00A5 FFFD - 00D0 FFFD FFFD FFFD FFFD FFFD FFFD 00D9 - 00DA 00C7 00C8 00F2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 005C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 007E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 0040 FFFD FFFD - 00BB -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 00D0 - Mapping = - 00B9 00BA FFFD FFFD 00A3 00B3 -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 2282 - srcEnd = 2287 - mappingOffset = 00D6 - Mapping = - 00CC 00C9 00CB FFFD 00CD 00CA -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = 2295 - srcEnd = 2297 - mappingOffset = 00DC - Mapping = - 00C5 FFFD 00C4 -End of Item 0016 - -Begin of Item 0017 - Format 2 - srcBegin = 22A5 - destBegin = 005E -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 22C4 - srcEnd = 22C5 - mappingOffset = 00DF - Mapping = - 00E0 00D7 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 2320 - srcEnd = 232A - mappingOffset = 00E1 - Mapping = - 00F3 00F5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00E1 00F1 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 2660 - srcEnd = 2666 - mappingOffset = 00EC - Mapping = - 00AA FFFD FFFD 00A7 FFFD 00A9 00A8 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = F8E5 - srcEnd = F8FF - mappingOffset = 00F3 - Mapping = - 0060 00BD 00BE 00E2 00E3 00E4 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00F4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00F0 -End of Item 001B - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x001C, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x000C, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0060, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0012 */ -/* Total of Format 2 : 0x0007 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x2111, 0x1122, 0x2121, 0x1121, 0x2111, 0x1111, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000C Start of MapCell Array */ -/* 0000 */ 0x002E, 0x003F, 0x002E, -/* 0001 */ 0xF8EB, 0xF8F4, 0x00E6, -/* 0002 */ 0xF8F6, 0xF8FE, 0x00F6, -/* 0003 */ 0x0020, 0x002C, 0x0000, -/* 0004 */ 0x005B, 0x005F, 0x000D, -/* 0005 */ 0x007B, 0x007D, 0x0012, -/* 0006 */ 0x00A9, 0x00B1, 0x0015, -/* 0007 */ 0x00D7, 0x0000, 0x00B4, -/* 0008 */ 0x00F7, 0x0000, 0x00B8, -/* 0009 */ 0x0192, 0x0000, 0x00A6, -/* 000A */ 0x0391, 0x03D6, 0x001E, -/* 000B */ 0x2022, 0x2026, 0x0064, -/* 000C */ 0x2032, 0x2033, 0x0069, -/* 000D */ 0x2044, 0x0000, 0x00A4, -/* 000E */ 0x2111, 0x2122, 0x006B, -/* 000F */ 0x2135, 0x0000, 0x00C0, -/* 0010 */ 0x2190, 0x2194, 0x007D, -/* 0011 */ 0x21B5, 0x0000, 0x00BF, -/* 0012 */ 0x21D0, 0x21D4, 0x0082, -/* 0013 */ 0x2200, 0x2248, 0x0087, -/* 0014 */ 0x2260, 0x2265, 0x00D0, -/* 0015 */ 0x2282, 0x2287, 0x00D6, -/* 0016 */ 0x2295, 0x2297, 0x00DC, -/* 0017 */ 0x22A5, 0x0000, 0x005E, -/* 0018 */ 0x22C4, 0x22C5, 0x00DF, -/* 0019 */ 0x2320, 0x232A, 0x00E1, -/* 001A */ 0x2660, 0x2666, 0x00EC, -/* 001B */ 0xF8E5, 0xF8FF, 0x00F3, -/*-------------------------------------------------------*/ -/* Offset=0x0060 Start of MappingTable */ - -/* 0000 */ 0x0020, 0x0021, 0xFFFD, 0x0023, 0xFFFD, 0x0025, 0x0026, 0xFFFD, -/* 0008 */ 0x0028, 0x0029, 0xFFFD, 0x002B, 0x002C, 0x005B, 0xFFFD, 0x005D, -/* 0010 */ 0xFFFD, 0x005F, 0x007B, 0x007C, 0x007D, 0x00D3, 0xFFFD, 0xFFFD, -/* 0018 */ 0x00D8, 0xFFFD, 0x00D2, 0xFFFD, 0x00B0, 0x00B1, 0x0041, 0x0042, -/* 0020 */ 0x0047, 0x0044, 0x0045, 0x005A, 0x0048, 0x0051, 0x0049, 0x004B, -/* 0028 */ 0x004C, 0x004D, 0x004E, 0x0058, 0x004F, 0x0050, 0x0052, 0xFFFD, -/* 0030 */ 0x0053, 0x0054, 0x0055, 0x0046, 0x0043, 0x0059, 0x0057, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0061, 0x0062, -/* 0040 */ 0x0067, 0x0064, 0x0065, 0x007A, 0x0068, 0x0071, 0x0069, 0x006B, -/* 0048 */ 0x006C, 0x006D, 0x006E, 0x0078, 0x006F, 0x0070, 0x0072, 0x0056, -/* 0050 */ 0x0073, 0x0074, 0x0075, 0x0066, 0x0063, 0x0079, 0x0077, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x004A, 0x00A1, -/* 0060 */ 0xFFFD, 0xFFFD, 0x006A, 0x0076, 0x00B7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0x00BC, 0x00A2, 0x00B2, 0x00C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C2, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D4, 0x00AC, 0x00AD, 0x00AE, -/* 0080 */ 0x00AF, 0x00AB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, 0x00DB, 0x0022, -/* 0088 */ 0xFFFD, 0x00B6, 0x0024, 0xFFFD, 0x00C6, 0xFFFD, 0x00D1, 0x00CE, -/* 0090 */ 0x00CF, 0xFFFD, 0xFFFD, 0xFFFD, 0x0027, 0xFFFD, 0x00D5, 0xFFFD, -/* 0098 */ 0x00E5, 0x002D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x002A, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00D6, 0xFFFD, 0xFFFD, 0x00B5, 0x00A5, 0xFFFD, 0x00D0, -/* 00A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, 0x00DA, -/* 00B0 */ 0x00C7, 0x00C8, 0x00F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x005C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x007E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0040, 0xFFFD, 0xFFFD, 0x00BB, -/* 00D0 */ 0x00B9, 0x00BA, 0xFFFD, 0xFFFD, 0x00A3, 0x00B3, 0x00CC, 0x00C9, -/* 00D8 */ 0x00CB, 0xFFFD, 0x00CD, 0x00CA, 0x00C5, 0xFFFD, 0x00C4, 0x00E0, -/* 00E0 */ 0x00D7, 0x00F3, 0x00F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E8 */ 0xFFFD, 0xFFFD, 0x00E1, 0x00F1, 0x00AA, 0xFFFD, 0xFFFD, 0x00A7, -/* 00F0 */ 0xFFFD, 0x00A9, 0x00A8, 0x0060, 0x00BD, 0x00BE, 0x00E2, 0x00E3, -/* 00F8 */ 0x00E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00F0, -/* End of table Total Length = 0x016E * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/macthai.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/macthai.uf deleted file mode 100644 index 7e2e5584e01..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/macthai.uf +++ /dev/null @@ -1,139 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0E01 - srcEnd = 0E3A - destBegin = 00A1 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0E3F - srcEnd = 0E4D - destBegin = 00DF -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 0E4F - srcEnd = 0E59 - destBegin = 00EF -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00A0 - srcEnd = 00AE - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00FB FFFD 0080 FFFD FFFD 00FA -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 00BB - destBegin = 0081 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 200B - srcEnd = 2026 - mappingOffset = 000F - Mapping = - 00DC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00DD 00DE FFFD FFFD FFFD 009D 009E FFFD - FFFD 008D 008E FFFD FFFD FFFD FFFD 0091 - FFFD FFFD FFFD 0082 -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 2122 - destBegin = 00EE -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = FEFF - destBegin = 00DB -End of Item 0008 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0003 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x2121, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0E01, 0x0E3A, 0x00A1, -/* 0002 */ 0x0E3F, 0x0E4D, 0x00DF, -/* 0003 */ 0x0E4F, 0x0E59, 0x00EF, -/* 0004 */ 0x00A0, 0x00AE, 0x0000, -/* 0005 */ 0x00BB, 0x0000, 0x0081, -/* 0006 */ 0x200B, 0x2026, 0x000F, -/* 0007 */ 0x2122, 0x0000, 0x00EE, -/* 0008 */ 0xFEFF, 0x0000, 0x00DB, -/*-------------------------------------------------------*/ -/* Offset=0x0022 Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0x00FB, 0xFFFD, 0x0080, 0xFFFD, 0xFFFD, 0x00FA, 0x00DC, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DD, -/* 0018 */ 0x00DE, 0xFFFD, 0xFFFD, 0xFFFD, 0x009D, 0x009E, 0xFFFD, 0xFFFD, -/* 0020 */ 0x008D, 0x008E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0091, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0x0082, -/* End of table Total Length = 0x004D * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/macturki.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/macturki.uf deleted file mode 100644 index c0b33009939..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/macturki.uf +++ /dev/null @@ -1,262 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00CA 00C1 00A2 00A3 FFFD 00B4 FFFD 00A4 - 00AC 00A9 00BB 00C7 00C2 FFFD 00A8 00F8 - 00A1 00B1 FFFD FFFD 00AB 00B5 00A6 00E1 - 00FC FFFD 00BC 00C8 FFFD FFFD FFFD 00C0 - 00CB 00E7 00E5 00CC 0080 0081 00AE 0082 - 00E9 0083 00E6 00E8 00ED 00EA 00EB 00EC - FFFD 0084 00F1 00EE 00EF 00CD 0085 FFFD - 00AF 00F4 00F2 00F3 0086 FFFD FFFD 00A7 - 0088 0087 0089 008B 008A 008C 00BE 008D - 008F 008E 0090 0091 0093 0092 0094 0095 - FFFD 0096 0098 0097 0099 009B 009A 00D6 - 00BF 009D 009C 009E 009F FFFD FFFD 00D8 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 011E - srcEnd = 011F - mappingOffset = 0060 - Mapping = - 00DA 00DB -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0130 - srcEnd = 0131 - mappingOffset = 0062 - Mapping = - 00DC 00DD -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0152 - srcEnd = 015F - mappingOffset = 0064 - Mapping = - 00CE 00CF FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 00DE 00DF -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 0178 - destBegin = 00D9 -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 0192 - destBegin = 00C4 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 02C6 - srcEnd = 02C7 - mappingOffset = 0072 - Mapping = - 00F6 00FF -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 0074 - Mapping = - 00F9 00FA 00FB 00FE 00F7 00FD -End of Item 0008 - -Begin of Item 0009 - Format 2 - srcBegin = 03C0 - destBegin = 00B9 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2013 - srcEnd = 2030 - mappingOffset = 007A - Mapping = - 00D0 00D1 FFFD FFFD FFFD 00D4 00D5 00E2 - FFFD 00D2 00D3 00E3 FFFD 00A0 00E0 00A5 - FFFD FFFD FFFD 00C9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00E4 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2122 - srcEnd = 2126 - mappingOffset = 0098 - Mapping = - 00AA FFFD FFFD FFFD 00BD -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2202 - srcEnd = 221E - mappingOffset = 009D - Mapping = - 00B6 FFFD FFFD FFFD 00C6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00B8 FFFD 00B7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00C3 FFFD FFFD FFFD 00B0 -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = 222B - destBegin = 00BA -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 2248 - destBegin = 00C5 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 00BA - Mapping = - 00AD FFFD FFFD FFFD 00B2 00B3 -End of Item 000F - -Begin of Item 0010 - Format 2 - srcBegin = 25CA - destBegin = 00D7 -End of Item 0010 - -Begin of Item 0011 - Format 2 - srcBegin = F8A0 - destBegin = 00F5 -End of Item 0011 - -Begin of Item 0012 - Format 2 - srcBegin = F8FF - destBegin = 00F0 -End of Item 0012 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0013, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0042, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x000A */ -/* Total of Format 2 : 0x0008 */ -/* Total of Format 3 : 0x0000 */ - -0x1110, 0x1221, 0x1121, 0x1221, 0x0222, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A0, 0x00FF, 0x0000, -/* 0002 */ 0x011E, 0x011F, 0x0060, -/* 0003 */ 0x0130, 0x0131, 0x0062, -/* 0004 */ 0x0152, 0x015F, 0x0064, -/* 0005 */ 0x0178, 0x0000, 0x00D9, -/* 0006 */ 0x0192, 0x0000, 0x00C4, -/* 0007 */ 0x02C6, 0x02C7, 0x0072, -/* 0008 */ 0x02D8, 0x02DD, 0x0074, -/* 0009 */ 0x03C0, 0x0000, 0x00B9, -/* 000A */ 0x2013, 0x2030, 0x007A, -/* 000B */ 0x2122, 0x2126, 0x0098, -/* 000C */ 0x2202, 0x221E, 0x009D, -/* 000D */ 0x222B, 0x0000, 0x00BA, -/* 000E */ 0x2248, 0x0000, 0x00C5, -/* 000F */ 0x2260, 0x2265, 0x00BA, -/* 0010 */ 0x25CA, 0x0000, 0x00D7, -/* 0011 */ 0xF8A0, 0x0000, 0x00F5, -/* 0012 */ 0xF8FF, 0x0000, 0x00F0, -/*-------------------------------------------------------*/ -/* Offset=0x0042 Start of MappingTable */ - -/* 0000 */ 0x00CA, 0x00C1, 0x00A2, 0x00A3, 0xFFFD, 0x00B4, 0xFFFD, 0x00A4, -/* 0008 */ 0x00AC, 0x00A9, 0x00BB, 0x00C7, 0x00C2, 0xFFFD, 0x00A8, 0x00F8, -/* 0010 */ 0x00A1, 0x00B1, 0xFFFD, 0xFFFD, 0x00AB, 0x00B5, 0x00A6, 0x00E1, -/* 0018 */ 0x00FC, 0xFFFD, 0x00BC, 0x00C8, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, -/* 0020 */ 0x00CB, 0x00E7, 0x00E5, 0x00CC, 0x0080, 0x0081, 0x00AE, 0x0082, -/* 0028 */ 0x00E9, 0x0083, 0x00E6, 0x00E8, 0x00ED, 0x00EA, 0x00EB, 0x00EC, -/* 0030 */ 0xFFFD, 0x0084, 0x00F1, 0x00EE, 0x00EF, 0x00CD, 0x0085, 0xFFFD, -/* 0038 */ 0x00AF, 0x00F4, 0x00F2, 0x00F3, 0x0086, 0xFFFD, 0xFFFD, 0x00A7, -/* 0040 */ 0x0088, 0x0087, 0x0089, 0x008B, 0x008A, 0x008C, 0x00BE, 0x008D, -/* 0048 */ 0x008F, 0x008E, 0x0090, 0x0091, 0x0093, 0x0092, 0x0094, 0x0095, -/* 0050 */ 0xFFFD, 0x0096, 0x0098, 0x0097, 0x0099, 0x009B, 0x009A, 0x00D6, -/* 0058 */ 0x00BF, 0x009D, 0x009C, 0x009E, 0x009F, 0xFFFD, 0xFFFD, 0x00D8, -/* 0060 */ 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00CE, 0x00CF, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0x00DE, 0x00DF, 0x00F6, 0x00FF, 0x00F9, 0x00FA, 0x00FB, 0x00FE, -/* 0078 */ 0x00F7, 0x00FD, 0x00D0, 0x00D1, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D4, -/* 0080 */ 0x00D5, 0x00E2, 0xFFFD, 0x00D2, 0x00D3, 0x00E3, 0xFFFD, 0x00A0, -/* 0088 */ 0x00E0, 0x00A5, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C9, 0xFFFD, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E4, -/* 0098 */ 0x00AA, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BD, 0x00B6, 0xFFFD, 0xFFFD, -/* 00A0 */ 0xFFFD, 0x00C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0x00B8, 0xFFFD, 0x00B7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0x00B0, 0x00AD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B2, 0x00B3, -/* End of table Total Length = 0x0102 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/macukrai.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/macukrai.uf deleted file mode 100644 index ee5ad48077d..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/macukrai.uf +++ /dev/null @@ -1,212 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0410 - srcEnd = 042F - destBegin = 0080 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0430 - srcEnd = 044E - destBegin = 00E0 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00BB - mappingOffset = 0000 - Mapping = - 00CA FFFD FFFD 00A3 00FF FFFD FFFD 00A4 - FFFD 00A9 FFFD 00C7 00C2 FFFD 00A8 FFFD - 00A1 00B1 FFFD FFFD FFFD 00B5 00A6 FFFD - FFFD FFFD FFFD 00C8 -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 00F7 - destBegin = 00D6 -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 0192 - destBegin = 00C4 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 0401 - srcEnd = 040F - mappingOffset = 001C - Mapping = - 00DD 00AB 00AE 00B8 00C1 00A7 00BA 00B7 - 00BC 00BE 00CB 00CD FFFD 00D8 00DA -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 044F - srcEnd = 045F - mappingOffset = 002B - Mapping = - 00DF FFFD 00DE 00AC 00AF 00B9 00CF 00B4 - 00BB 00C0 00BD 00BF 00CC 00CE FFFD 00D9 - 00DB -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 0490 - srcEnd = 0491 - mappingOffset = 003C - Mapping = - 00A2 00B6 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 2013 - srcEnd = 2026 - mappingOffset = 003E - Mapping = - 00D0 00D1 FFFD FFFD FFFD 00D4 00D5 FFFD - FFFD 00D2 00D3 00D7 FFFD 00A0 FFFD 00A5 - FFFD FFFD FFFD 00C9 -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 2116 - destBegin = 00DC -End of Item 000A - -Begin of Item 000B - Format 2 - srcBegin = 2122 - destBegin = 00AA -End of Item 000B - -Begin of Item 000C - Format 2 - srcBegin = 2206 - destBegin = 00C6 -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 221A - srcEnd = 221E - mappingOffset = 0052 - Mapping = - 00C3 FFFD FFFD FFFD 00B0 -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 2248 - destBegin = 00C5 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 0057 - Mapping = - 00AD FFFD FFFD FFFD 00B2 00B3 -End of Item 000F - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0039, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0007 */ -/* Total of Format 2 : 0x0006 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x1122, 0x2211, 0x1212, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0410, 0x042F, 0x0080, -/* 0002 */ 0x0430, 0x044E, 0x00E0, -/* 0003 */ 0x00A0, 0x00BB, 0x0000, -/* 0004 */ 0x00F7, 0x0000, 0x00D6, -/* 0005 */ 0x0192, 0x0000, 0x00C4, -/* 0006 */ 0x0401, 0x040F, 0x001C, -/* 0007 */ 0x044F, 0x045F, 0x002B, -/* 0008 */ 0x0490, 0x0491, 0x003C, -/* 0009 */ 0x2013, 0x2026, 0x003E, -/* 000A */ 0x2116, 0x0000, 0x00DC, -/* 000B */ 0x2122, 0x0000, 0x00AA, -/* 000C */ 0x2206, 0x0000, 0x00C6, -/* 000D */ 0x221A, 0x221E, 0x0052, -/* 000E */ 0x2248, 0x0000, 0x00C5, -/* 000F */ 0x2260, 0x2265, 0x0057, -/*-------------------------------------------------------*/ -/* Offset=0x0039 Start of MappingTable */ - -/* 0000 */ 0x00CA, 0xFFFD, 0xFFFD, 0x00A3, 0x00FF, 0xFFFD, 0xFFFD, 0x00A4, -/* 0008 */ 0xFFFD, 0x00A9, 0xFFFD, 0x00C7, 0x00C2, 0xFFFD, 0x00A8, 0xFFFD, -/* 0010 */ 0x00A1, 0x00B1, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B5, 0x00A6, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00C8, 0x00DD, 0x00AB, 0x00AE, 0x00B8, -/* 0020 */ 0x00C1, 0x00A7, 0x00BA, 0x00B7, 0x00BC, 0x00BE, 0x00CB, 0x00CD, -/* 0028 */ 0xFFFD, 0x00D8, 0x00DA, 0x00DF, 0xFFFD, 0x00DE, 0x00AC, 0x00AF, -/* 0030 */ 0x00B9, 0x00CF, 0x00B4, 0x00BB, 0x00C0, 0x00BD, 0x00BF, 0x00CC, -/* 0038 */ 0x00CE, 0xFFFD, 0x00D9, 0x00DB, 0x00A2, 0x00B6, 0x00D0, 0x00D1, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00D4, 0x00D5, 0xFFFD, 0xFFFD, 0x00D2, -/* 0048 */ 0x00D3, 0x00D7, 0xFFFD, 0x00A0, 0xFFFD, 0x00A5, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0x00C9, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B0, 0x00AD, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00B2, 0x00B3, -/* End of table Total Length = 0x0096 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/makefile.win b/mozilla/lib/libi18n/unicode/ufrmtbl/makefile.win deleted file mode 100644 index 040f30cfe77..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/makefile.win +++ /dev/null @@ -1,20 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - - - -!include <$(DEPTH)\config\rules.mak> diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/rename.sh b/mozilla/lib/libi18n/unicode/ufrmtbl/rename.sh deleted file mode 100644 index fa62dedaf2b..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/rename.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/sh -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -mv 8859-1.txt.uf 8859-1.uf -mv 8859-2.txt.uf 8859-2.uf -mv 8859-3.txt.uf 8859-3.uf -mv 8859-4.txt.uf 8859-4.uf -mv 8859-5.txt.uf 8859-5.uf -mv 8859-6.txt.uf 8859-6.uf -mv 8859-7.txt.uf 8859-7.uf -mv 8859-8.txt.uf 8859-8.uf -mv 8859-9.txt.uf 8859-9.uf -mv CNS11643_1.uf cns_1.uf -mv CNS11643_14.uf cns_14.uf -mv CNS11643_2.uf cns_2.uf -mv CP037.X.uf cp037.uf -mv CP1026.X.uf cp1026.uf -mv CP437.X.uf cp437.uf -mv CP500.X.uf cp500.uf -mv CP737.X.uf cp737.uf -mv CP775.X.uf cp775.uf -mv CP850.X.uf cp850.uf -mv CP852.X.uf cp852.uf -mv CP855.X.uf cp855.uf -mv CP857.X.uf cp857.uf -mv CP860.X.uf cp860.uf -mv CP861.X.uf cp861.uf -mv CP862.X.uf cp862.uf -mv CP863.X.uf cp863.uf -mv CP864.X.uf cp864.uf -mv CP865.X.uf cp865.uf -mv CP866.X.uf cp866.uf -mv CP869.X.uf cp869.uf -mv CP874.X.uf cp874.uf -mv CP875.X.uf cp875.uf -mv GB12345.uf gb12345.uf -mv GB2312.uf gb2312.uf -mv JIS0201.uf jis0201.uf -mv JIS0208.uf jis0208.uf -mv JIS0212.uf jis0212.uf -mv KSC5601.uf ksc5601.uf -mv MacOS_CentralEuro.txt.uf macce.uf -mv MacOS_CorpChars.txt.uf maccorp.uf -mv MacOS_Croatian.txt.uf maccroat.uf -mv MacOS_Cyrillic.txt.uf maccyril.uf -mv MacOS_Dingbats.txt.uf macdingb.uf -mv MacOS_Greek.txt.uf macgreek.uf -mv MacOS_Icelandic.txt.uf macicela.uf -mv MacOS_Roman.txt.uf macroman.uf -mv MacOS_Romanian.txt.uf macro.uf -mv MacOS_Symbol.txt.uf macsymbo.uf -mv MacOS_Turkish.txt.uf macturki.uf -mv MacOS_Ukrainian.txt.uf macukrai.uf -mv cp1250.x.uf cp1250.uf -mv cp1251.x.uf cp1251.uf -mv cp1252.x.uf cp1252.uf -mv cp1253.x.uf cp1253.uf -mv cp1254.x.uf cp1254.uf -mv cp1255.x.uf cp1255.uf -mv cp1256.x.uf cp1256.uf -mv cp1257.x.uf cp1257.uf -mv Shift-JIS.uf sjis.uf -mv Big5.uf big5.uf diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/sjis.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/sjis.uf deleted file mode 100644 index 8008e55db37..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/sjis.uf +++ /dev/null @@ -1,6584 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 005B - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 005D - srcEnd = 007D - destBegin = 005D -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = 839F -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = 83B0 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = 83BF -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = 83D0 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0410 - srcEnd = 0415 - destBegin = 8440 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0416 - srcEnd = 042F - destBegin = 8447 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 0430 - srcEnd = 0435 - destBegin = 8470 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 0436 - srcEnd = 043D - destBegin = 8477 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 043E - srcEnd = 044F - destBegin = 8480 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 3008 - srcEnd = 3011 - destBegin = 8171 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = 829F -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 30A1 - srcEnd = 30DF - destBegin = 8340 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 30E0 - srcEnd = 30F6 - destBegin = 8380 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = FF10 - srcEnd = FF19 - destBegin = 824F -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = FF21 - srcEnd = FF3A - destBegin = 8260 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = FF41 - srcEnd = FF5A - destBegin = 8281 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = FF61 - srcEnd = FF9F - destBegin = 00A1 -End of Item 0012 - -Begin of Item 0013 - Format 2 - srcBegin = 005C - destBegin = 815F -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 00A2 - srcEnd = 00B6 - mappingOffset = 0000 - Mapping = - 8191 8192 FFFD 005C FFFD 8198 814E FFFD - FFFD FFFD 81CA FFFD FFFD FFFD 818B 817D - FFFD FFFD 814C FFFD 81F7 -End of Item 0014 - -Begin of Item 0015 - Format 2 - srcBegin = 00D7 - destBegin = 817E -End of Item 0015 - -Begin of Item 0016 - Format 2 - srcBegin = 00F7 - destBegin = 8180 -End of Item 0016 - -Begin of Item 0017 - Format 2 - srcBegin = 0401 - destBegin = 8446 -End of Item 0017 - -Begin of Item 0018 - Format 2 - srcBegin = 0451 - destBegin = 8476 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 2010 - srcEnd = 203E - mappingOffset = 0015 - Mapping = - 815D FFFD FFFD FFFD FFFD 815C 8161 FFFD - 8165 8166 FFFD FFFD 8167 8168 FFFD FFFD - 81F5 81F6 FFFD FFFD FFFD 8164 8163 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 81F1 FFFD 818C 818D FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 81A6 FFFD FFFD 007E -End of Item 0019 - -Begin of Item 001A - Format 2 - srcBegin = 2103 - destBegin = 818E -End of Item 001A - -Begin of Item 001B - Format 2 - srcBegin = 212B - destBegin = 81F0 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 2190 - srcEnd = 2193 - mappingOffset = 0044 - Mapping = - 81A9 81AA 81A8 81AB -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 21D2 - srcEnd = 21D4 - mappingOffset = 0048 - Mapping = - 81CB FFFD 81CC -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 2200 - srcEnd = 223D - mappingOffset = 004B - Mapping = - 81CD FFFD 81DD 81CE FFFD FFFD FFFD 81DE - 81B8 FFFD FFFD 81B9 FFFD FFFD FFFD FFFD - FFFD FFFD 817C FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 81E3 FFFD FFFD 81E5 8187 FFFD - 81DA FFFD FFFD FFFD FFFD FFFD FFFD 81C8 - 81C9 81BF 81BE 81E7 81E8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8188 81E6 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 81E4 -End of Item 001E - -Begin of Item 001F - Format 2 - srcBegin = 2252 - destBegin = 81E0 -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 2260 - srcEnd = 226B - mappingOffset = 0089 - Mapping = - 8182 81DF FFFD FFFD FFFD FFFD 8185 8186 - FFFD FFFD 81E1 81E2 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 2282 - srcEnd = 2287 - mappingOffset = 0095 - Mapping = - 81BC 81BD FFFD FFFD 81BA 81BB -End of Item 0021 - -Begin of Item 0022 - Format 2 - srcBegin = 22A5 - destBegin = 81DB -End of Item 0022 - -Begin of Item 0023 - Format 2 - srcBegin = 2312 - destBegin = 81DC -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 2500 - srcEnd = 254B - mappingOffset = 009B - Mapping = - 849F 84AA 84A0 84AB FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 84A1 FFFD FFFD 84AC - 84A2 FFFD FFFD 84AD 84A4 FFFD FFFD 84AF - 84A3 FFFD FFFD 84AE 84A5 84BA FFFD FFFD - 84B5 FFFD FFFD 84B0 84A7 84BC FFFD FFFD - 84B7 FFFD FFFD 84B2 84A6 FFFD FFFD 84B6 - 84BB FFFD FFFD 84B1 84A8 FFFD FFFD 84B8 - 84BD FFFD FFFD 84B3 84A9 FFFD FFFD 84B9 - FFFD FFFD 84BE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 84B4 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 25A0 - srcEnd = 25A1 - mappingOffset = 00E7 - Mapping = - 81A1 81A0 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 25B2 - srcEnd = 25CF - mappingOffset = 00E9 - Mapping = - 81A3 81A2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 81A5 81A4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 819F 819E FFFD FFFD - FFFD 819B FFFD FFFD 819D 819C -End of Item 0026 - -Begin of Item 0027 - Format 2 - srcBegin = 25EF - destBegin = 81FC -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 2605 - srcEnd = 2606 - mappingOffset = 0107 - Mapping = - 819A 8199 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 0109 - Mapping = - 818A FFFD 8189 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 266A - srcEnd = 266F - mappingOffset = 010C - Mapping = - 81F4 FFFD FFFD 81F3 FFFD 81F2 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 3000 - srcEnd = 301C - mappingOffset = 0112 - Mapping = - 8140 8141 8142 8156 FFFD 8158 8159 815A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 81A7 81AC 816B 816C FFFD FFFD - FFFD FFFD FFFD FFFD 8160 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 309B - srcEnd = 309E - mappingOffset = 012F - Mapping = - 814A 814B 8154 8155 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 30FB - srcEnd = 30FE - mappingOffset = 0133 - Mapping = - 8145 815B 8152 8153 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 4E00 - srcEnd = 4E62 - mappingOffset = 0137 - Mapping = - 88EA 929A FFFD 8EB5 FFFD FFFD FFFD 969C - 8FE4 8E4F 8FE3 89BA FFFD 9573 975E FFFD - 98A0 894E FFFD FFFD 8A8E 98A1 90A2 99C0 - 8B75 95B8 FFFD FFFD FFFD FFFD 8FE5 FFFD - FFFD 97BC FFFD FFFD FFFD FFFD 95C0 FFFD - FFFD FFFD 98A2 FFFD FFFD 9286 FFFD FFFD - FFFD 98A3 8BF8 FFFD FFFD FFFD 98A4 FFFD - 8ADB 924F FFFD 8EE5 98A5 FFFD FFFD 98A6 - FFFD FFFD 98A7 9454 FFFD 8B76 FFFD FFFD - FFFD FFFD FFFD 9456 FFFD 93E1 8CC1 9652 - FFFD FFFD FFFD FFFD FFFD E568 98A8 8FE6 - 98A9 89B3 FFFD FFFD FFFD 8BE3 8CEE 96E7 - FFFD FFFD 9BA4 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 4E71 - srcEnd = 4F1D - mappingOffset = 019A - Mapping = - 9790 FFFD 93FB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 8AA3 FFFD 8B54 - FFFD 98AA FFFD FFFD 98AB 97B9 FFFD 975C - 9188 98AD 8E96 93F1 FFFD 98B0 FFFD FFFD - 895D 8CDD FFFD 8CDC 88E4 FFFD FFFD 986A - 9869 FFFD 8DB1 889F FFFD 98B1 98B2 98B3 - 9653 98B4 FFFD 8CF0 88E5 9692 FFFD 8B9C - FFFD FFFD 8B9D 8B9E 92E0 97BA FFFD 98B5 - FFFD FFFD 98B6 FFFD FFFD 98B7 FFFD FFFD - FFFD 906C FFFD FFFD FFFD FFFD FFFD 8F59 - 906D 98BC FFFD 98BA FFFD 98BB 8B77 FFFD - FFFD 8DA1 89EE FFFD 98B9 98B8 95A7 FFFD - FFFD FFFD FFFD 8E65 8E64 91BC 98BD 9574 - 90E5 FFFD FFFD FFFD 8157 98BE 98C0 FFFD - FFFD FFFD 91E3 97DF 88C8 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 98BF 89BC FFFD 8BC2 - FFFD 9287 FFFD FFFD FFFD 8C8F 98C1 FFFD - FFFD FFFD 9443 FFFD FFFD FFFD FFFD FFFD - 8AE9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 98C2 88C9 FFFD FFFD 8CDE 8AEA 959A 94B0 - 8B78 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 89EF FFFD 98E5 9360 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 4F2F - srcEnd = 509A - mappingOffset = 0247 - Mapping = - 948C 98C4 FFFD FFFD FFFD 94BA FFFD 97E0 - FFFD 904C FFFD 8E66 FFFD 8E97 89BE FFFD - FFFD FFFD FFFD FFFD 92CF FFFD FFFD 9241 - 98C8 FFFD FFFD FFFD FFFD FFFD 88CA 92E1 - 8F5A 8DB2 9743 FFFD 91CC FFFD 89BD FFFD - 98C7 FFFD 975D 98C3 98C5 8DEC 98C6 9B43 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 98CE FFFD FFFD FFFD FFFD FFFD - 98D1 98CF FFFD FFFD 89C0 FFFD 95B9 98C9 - FFFD FFFD FFFD FFFD 98CD 8CF1 FFFD FFFD - 8E67 FFFD FFFD FFFD 8AA4 FFFD FFFD 98D2 - FFFD 98CA FFFD FFFD 97E1 FFFD 8E98 FFFD - 98CB FFFD 98D0 FFFD FFFD FFFD FFFD 98D3 - FFFD 98CC FFFD FFFD 8B9F FFFD 88CB FFFD - FFFD 8BA0 89BF FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9B44 FFFD 9699 958E - 8CF2 FFFD FFFD FFFD FFFD FFFD 904E 97B5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 95D6 FFFD FFFD 8C57 91A3 89E2 FFFD FFFD - FFFD FFFD FFFD 8F72 FFFD FFFD FFFD 98D7 - FFFD 98DC 98DA FFFD FFFD 98D5 FFFD FFFD - 91AD 98D8 FFFD 98DB 98D9 FFFD 95DB FFFD - 98D6 FFFD 904D FFFD 9693 98DD 98DE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8F43 - 98EB FFFD FFFD FFFD 946F FFFD 9555 98E6 - FFFD 95EE FFFD 89B4 FFFD FFFD FFFD 98EA - FFFD FFFD FFFD FFFD FFFD FFFD 98E4 98ED - FFFD FFFD 9171 FFFD 8CC2 FFFD 947B FFFD - E0C5 FFFD 98EC 937C FFFD 98E1 FFFD 8CF4 - FFFD FFFD 8CF3 98DF FFFD FFFD FFFD FFFD - 8ED8 FFFD 98E7 FFFD 95ED 926C 98E3 8C91 - FFFD 98E0 98E8 98E2 97CF 98E9 9860 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8BE4 - FFFD FFFD 8C90 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 98EE FFFD FFFD FFFD - 98EF 98F3 88CC FFFD FFFD FFFD FFFD FFFD - 95CE 98F2 FFFD FFFD FFFD FFFD 98F1 98F5 - FFFD FFFD FFFD 98F4 FFFD 92E2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8C92 FFFD - FFFD FFFD FFFD FFFD FFFD 98F6 FFFD FFFD - FFFD FFFD FFFD 8EC3 FFFD 91A4 92E3 8BF4 - FFFD 98F7 FFFD FFFD FFFD FFFD 8B55 FFFD - FFFD 98F8 FFFD FFFD FFFD FFFD 98FA FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9654 FFFD - FFFD FFFD 8C86 FFFD FFFD FFFD FFFD FFFD - FFFD 8E50 94F5 98F9 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 50AC - srcEnd = 5384 - mappingOffset = 03B3 - Mapping = - 8DC3 9762 FFFD FFFD FFFD FFFD 98FC 9942 - 98FB 8DC2 FFFD 8F9D FFFD FFFD FFFD FFFD - FFFD FFFD 8C58 FFFD FFFD FFFD 9943 FFFD - FFFD 8BCD FFFD FFFD FFFD 9940 9941 FFFD - FFFD 93AD FFFD 919C FFFD 8BA1 FFFD FFFD - FFFD 966C 9944 FFFD FFFD FFFD 97BB FFFD - FFFD FFFD 9945 FFFD FFFD FFFD FFFD 9948 - FFFD 9946 FFFD 916D FFFD FFFD FFFD FFFD - FFFD 9947 9949 FFFD FFFD FFFD FFFD FFFD - FFFD 994B FFFD FFFD FFFD 994A FFFD 95C6 - FFFD FFFD FFFD FFFD 8B56 994D 994E FFFD - 89AD FFFD FFFD FFFD FFFD 994C FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8EF2 FFFD - 9951 9950 994F FFFD 98D4 FFFD 9952 FFFD - FFFD FFFD FFFD 8F9E FFFD 9953 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9744 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 96D7 FFFD - FFFD FFFD FFFD 9955 FFFD FFFD 9954 9957 - 9956 FFFD FFFD 9958 9959 88F2 FFFD 8CB3 - 8C5A 8F5B 929B 8BA2 90E6 8CF5 FFFD 8D8E - 995B 96C6 9365 FFFD 8E99 FFFD 995A FFFD - 995C FFFD FFFD FFFD FFFD FFFD 937D FFFD - 8A95 FFFD FFFD FFFD FFFD FFFD 995D FFFD - FFFD 93FC FFFD FFFD 9153 995F 9960 94AA - 8CF6 985A 9961 FFFD FFFD 8BA4 FFFD FFFD - FFFD 95BA 91B4 8BEF 9354 FFFD FFFD FFFD - 8C93 FFFD FFFD FFFD 9962 FFFD 9963 FFFD - FFFD 93E0 897E FFFD FFFD 9966 8DFB FFFD - 9965 8DC4 FFFD 9967 E3EC 9968 9660 9969 - FFFD 996A 996B 8FE7 FFFD 8ECA FFFD FFFD - FFFD FFFD FFFD FFFD 8AA5 FFFD 996E FFFD - 996C 96BB 996D FFFD 9579 996F 9970 9971 - 937E FFFD FFFD FFFD 9975 9973 9974 9972 - 8DE1 9976 96E8 97E2 FFFD FFFD FFFD FFFD - FFFD 9977 FFFD FFFD FFFD FFFD FFFD FFFD - 90A6 9978 8F79 FFFD FFFD 9979 FFFD 929C - 97BD 9380 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 99C3 FFFD FFFD FFFD FFFD 997A - EAA3 8BC3 FFFD FFFD 997B 967D FFFD FFFD - FFFD FFFD 8F88 91FA FFFD 997D 93E2 FFFD - FFFD 997E FFFD FFFD 9980 8A4D FFFD FFFD - FFFD 9981 8BA5 FFFD 93CA 899A 8F6F FFFD - FFFD 949F 9982 FFFD 9381 FFFD FFFD 906E - 9983 FFFD 95AA 90D8 8AA0 FFFD 8AA7 9984 - FFFD FFFD 9986 FFFD FFFD 8C59 FFFD FFFD - 9985 FFFD FFFD 97F1 FFFD FFFD FFFD FFFD - FFFD 8F89 FFFD FFFD FFFD FFFD FFFD FFFD - 94BB 95CA FFFD 9987 FFFD 9798 9988 FFFD - FFFD FFFD 9989 FFFD 939E FFFD FFFD 998A - FFFD FFFD 90A7 8DFC 8C94 998B 8E68 8D8F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 92E4 - 998D FFFD FFFD 91A5 FFFD FFFD 8DED 998E - 998F 914F FFFD 998C FFFD FFFD FFFD FFFD - 9991 FFFD 9655 FFFD FFFD FFFD FFFD 8D84 - FFFD FFFD 9990 FFFD FFFD FFFD FFFD 8C95 - 8DDC 948D FFFD FFFD FFFD 9994 9992 FFFD - FFFD FFFD FFFD 959B 8FE8 999B 8A84 9995 - 9993 916E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 9997 FFFD 9996 FFFD FFFD FFFD 8A63 - FFFD FFFD FFFD 8C80 999C 97AB FFFD FFFD - FFFD 9998 FFFD FFFD FFFD 999D 999A FFFD - 9999 FFFD FFFD FFFD FFFD FFFD FFFD 97CD - FFFD FFFD FFFD 8CF7 89C1 FFFD FFFD 97F2 - FFFD FFFD FFFD FFFD FFFD 8F95 9377 8D85 - 99A0 99A1 FFFD FFFD FFFD 97E3 FFFD FFFD - 984A 99A3 FFFD FFFD FFFD 8CF8 FFFD FFFD - 99A2 FFFD 8A4E FFFD FFFD 99A4 FFFD 9675 - FFFD 92BA FFFD 9745 FFFD 95D7 FFFD FFFD - FFFD 99A5 FFFD FFFD FFFD FFFD E8D3 FFFD - FFFD 93AE FFFD 99A6 8AA8 96B1 FFFD FFFD - FFFD 8F9F 99A7 95E5 99AB FFFD 90A8 99A8 - 8BCE FFFD 99A9 8AA9 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8C4D 99AC - FFFD 99AD FFFD FFFD 99AE 99AF 8ED9 FFFD - FFFD FFFD 8CF9 96DC FFFD 96E6 93F5 FFFD - FFFD 95EF 99B0 FFFD 99B1 FFFD FFFD FFFD - FFFD 99B3 FFFD 99B5 99B4 FFFD FFFD FFFD - FFFD 99B6 89BB 966B FFFD 8DFA 99B7 FFFD - FFFD 9178 FFFD FFFD 8FA0 8BA7 FFFD 99B8 - FFFD FFFD FFFD FFFD FFFD FFFD 94D9 FFFD - FFFD FFFD FFFD 99B9 FFFD 99BA FFFD 99BB - FFFD FFFD FFFD FFFD 99BC 9543 8BE6 88E3 - FFFD FFFD FFFD 93BD 99BD 8F5C FFFD 90E7 - FFFD 99BF 99BE 8FA1 8CDF 99C1 94BC FFFD - FFFD 99C2 FFFD FFFD FFFD 94DA 91B2 91EC - 8BA6 FFFD FFFD 93EC 9250 FFFD 948E FFFD - 966D FFFD 99C4 FFFD 90E8 FFFD FFFD FFFD - FFFD FFFD 8C54 FFFD FFFD 99C5 FFFD FFFD - FFFD FFFD 99C6 894B 88F3 8AEB FFFD 91A6 - 8B70 9791 FFFD 99C9 89B5 FFFD FFFD 99C8 - FFFD FFFD FFFD 8BA8 FFFD FFFD 99CA FFFD - 96EF -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 5396 - srcEnd = 5451 - mappingOffset = 068C - Mapping = - 99CB FFFD 97D0 FFFD 8CFA FFFD FFFD FFFD - FFFD 8CB4 99CC FFFD FFFD FFFD FFFD 99CE - 99CD FFFD 907E 8958 FFFD FFFD FFFD 897D - 99CF FFFD 99D0 FFFD FFFD 8CB5 FFFD FFFD - 99D1 FFFD FFFD FFFD FFFD 8B8E FFFD FFFD - FFFD FFFD FFFD FFFD 8E51 99D2 FFFD FFFD - FFFD FFFD 9694 8DB3 8B79 9746 916F 94BD - 8EFB FFFD FFFD FFFD FFFD FFFD 8F66 FFFD - 8EE6 8EF3 FFFD 8F96 FFFD 94BE FFFD FFFD - FFFD 99D5 FFFD 8962 9170 8CFB 8CC3 8BE5 - FFFD FFFD 99D9 9240 91FC 8BA9 8FA2 99DA - 99D8 89C2 91E4 8EB6 8E6A 8945 FFFD FFFD - 8A90 8D86 8E69 FFFD 99DB FFFD FFFD FFFD - FFFD FFFD FFFD 99DC FFFD 8B68 8A65 FFFD - FFFD FFFD 8D87 8B67 92DD 8944 93AF 96BC - 8D40 9799 9366 8CFC FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 8C4E FFFD 99E5 - FFFD 8BE1 9669 FFFD FFFD FFFD FFFD FFFD - 94DB FFFD FFFD 99E4 FFFD 8ADC 99DF 99E0 - 99E2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 99E3 FFFD 8B7A 9081 FFFD 95AB 99E1 99DD - 8CE1 FFFD 99DE FFFD 9843 FFFD FFFD FFFD - 95F0 FFFD 92E6 8CE0 8D90 FFFD FFFD FFFD - 99E6 FFFD FFFD 93DB -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 545F - srcEnd = 5492 - mappingOffset = 0748 - Mapping = - 99EA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8EFC FFFD 8EF4 FFFD FFFD FFFD FFFD - FFFD 99ED 99EB FFFD 96A1 FFFD 99E8 99F1 - 99EC FFFD FFFD FFFD 99EF 8CC4 96BD FFFD - FFFD 99F0 FFFD FFFD FFFD 99F2 FFFD 99F4 - FFFD FFFD FFFD FFFD 8DEE 9861 FFFD 99E9 - 99E7 99F3 FFFD 99EE -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 54A2 - srcEnd = 54C9 - mappingOffset = 077C - Mapping = - 99F6 FFFD 9A42 99F8 FFFD FFFD 99FC FFFD - FFFD 9A40 99F9 FFFD FFFD 9A5D FFFD FFFD - 8DE7 8A50 FFFD FFFD FFFD FFFD 99F7 FFFD - FFFD FFFD 9A44 88F4 9A43 FFFD 88A3 9569 - 9A41 FFFD 99FA FFFD FFFD 99F5 99FB 8DC6 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 54D8 - srcEnd = 5516 - mappingOffset = 07A4 - Mapping = - 9A45 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 88F5 9A4E FFFD FFFD 9A46 9A47 FFFD - 8FA3 9689 FFFD FFFD FFFD 9A4C 9A4B FFFD - FFFD FFFD 934E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9A4D FFFD FFFD 9A4A FFFD FFFD - FFFD FFFD FFFD FFFD 8953 FFFD 8DB4 904F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9A48 - 9382 FFFD FFFD FFFD 9A49 FFFD 88A0 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 552E - srcEnd = 5563 - mappingOffset = 07E3 - Mapping = - 9A53 9742 FFFD 8FA5 FFFD 9A59 FFFD FFFD - FFFD FFFD 9A58 9A4F FFFD FFFD FFFD FFFD - 91C1 FFFD 9A50 FFFD FFFD FFFD 91ED 9A55 - 8FA4 FFFD FFFD FFFD FFFD FFFD 9A52 FFFD - FFFD 96E2 FFFD FFFD FFFD 8C5B FFFD FFFD - 9A56 9A57 FFFD FFFD FFFD FFFD 9A54 9A5A - FFFD FFFD FFFD FFFD FFFD 9A51 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 557B - srcEnd = 558B - mappingOffset = 0819 - Mapping = - 9A60 9A65 FFFD 9A61 FFFD 9A5C FFFD FFFD - 9A66 9150 FFFD FFFD 9A68 FFFD 8D41 9A5E - 929D -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 5598 - srcEnd = 55B6 - mappingOffset = 082A - Mapping = - 9A62 9A5B 8AAB FFFD 8AEC 8A85 9A63 9A5F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8C96 - 9A69 9A67 9172 8B69 8BAA FFFD 9A64 FFFD - 8BF2 FFFD FFFD FFFD FFFD FFFD 8963 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 55C4 - srcEnd = 55C7 - mappingOffset = 0849 - Mapping = - 9A6D 9A6B FFFD 9AA5 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 55D4 - srcEnd = 55E4 - mappingOffset = 084D - Mapping = - 9A70 FFFD FFFD FFFD FFFD FFFD 9A6A FFFD - 9A6E FFFD FFFD 9A6C FFFD FFFD FFFD 8E6B - 9A6F -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 55F7 - srcEnd = 561B - mappingOffset = 085E - Mapping = - 9A72 FFFD 9A77 FFFD FFFD FFFD 9A75 9A74 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9251 - FFFD FFFD 89C3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9A71 FFFD 9A73 - 8FA6 8952 FFFD FFFD 9A76 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 5629 - srcEnd = 5694 - mappingOffset = 0883 - Mapping = - 89DC FFFD FFFD FFFD FFFD FFFD 9A82 FFFD - 8FFA 9A7D FFFD 9A7B FFFD 9A7C FFFD 9A7E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 895C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9158 FFFD 9A78 FFFD 9A79 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8A9A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9A81 FFFD FFFD FFFD 8AED - FFFD 9A84 9A80 9A83 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 95AC FFFD FFFD FFFD 93D3 - FFFD 94B6 FFFD FFFD FFFD FFFD FFFD 9A86 - FFFD FFFD FFFD FFFD FFFD 9A85 8A64 FFFD - FFFD 9A87 FFFD FFFD FFFD FFFD 9A8A FFFD - FFFD FFFD FFFD 9A89 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 56A0 - srcEnd = 5751 - mappingOffset = 08EF - Mapping = - 9A88 FFFD 9458 FFFD FFFD 9A8B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9A8C FFFD - FFFD FFFD FFFD FFFD 9A8E FFFD 9A8D FFFD - FFFD FFFD FFFD FFFD 9A90 FFFD FFFD FFFD - 9A93 9A91 9A8F 9A92 FFFD FFFD FFFD FFFD - 9A94 FFFD FFFD FFFD FFFD FFFD 9A95 FFFD - FFFD 9A96 FFFD 9A97 FFFD FFFD FFFD 9A98 - 9964 FFFD 8EFA 8E6C FFFD FFFD 89F1 FFFD - 88F6 FFFD FFFD 9263 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9A99 FFFD - 8DA2 FFFD 88CD 907D FFFD FFFD FFFD FFFD - FFFD 9A9A 8CC5 FFFD FFFD 8D91 FFFD 9A9C - 9A9B FFFD FFFD 95DE 9A9D FFFD FFFD FFFD - 9A9F 9A9E FFFD 9AA0 FFFD 9AA1 FFFD 8C97 - FFFD FFFD 8980 9AA2 FFFD FFFD 9AA4 FFFD - 9AA3 FFFD FFFD FFFD 9AA6 FFFD FFFD 9379 - FFFD FFFD FFFD FFFD FFFD FFFD 9AA7 88B3 - 8DDD FFFD FFFD FFFD FFFD 8C5C FFFD FFFD - 926E FFFD FFFD FFFD FFFD FFFD FFFD 9AA8 - 9AA9 FFFD FFFD 9AAB FFFD FFFD FFFD FFFD - 9AAC FFFD 8DE2 FFFD FFFD FFFD FFFD 8BCF - FFFD FFFD 9656 FFFD FFFD FFFD 9AAA 9AAD - 8DBF 8D42 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 5761 - srcEnd = 576A - mappingOffset = 09A1 - Mapping = - 9AB1 FFFD FFFD 8DA3 FFFD 9252 FFFD FFFD - 9AAE 92D8 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 577F - srcEnd = 5793 - mappingOffset = 09AB - Mapping = - 9AB2 FFFD FFFD 9082 FFFD FFFD FFFD FFFD - FFFD 9AB0 9AB3 FFFD 8C5E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9AB4 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 57A0 - srcEnd = 57B3 - mappingOffset = 09C0 - Mapping = - 9AB5 FFFD 8D43 8A5F 9AB7 FFFD FFFD FFFD - FFFD FFFD 9AB8 FFFD FFFD FFFD FFFD FFFD - 9AB9 FFFD FFFD 9AB6 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 57C0 - srcEnd = 57E3 - mappingOffset = 09D4 - Mapping = - 9AAF FFFD FFFD 9ABA FFFD FFFD 9ABB FFFD - FFFD FFFD FFFD 9684 FFFD FFFD 8FE9 FFFD - FFFD FFFD 9ABD 9ABE 9ABC FFFD 9AC0 FFFD - FFFD FFFD FFFD FFFD 9457 FFFD FFFD 88E6 - 9575 FFFD FFFD 9AC1 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 57F4 - srcEnd = 5885 - mappingOffset = 09F8 - Mapping = - 8FFB FFFD FFFD 8EB7 FFFD 947C 8AEE FFFD - 8DE9 FFFD FFFD FFFD 9678 FFFD 93B0 FFFD - FFFD 8C98 91CD FFFD FFFD FFFD 9ABF 9AC2 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 91C2 FFFD FFFD FFFD 9AC3 FFFD FFFD - FFFD 9AC4 FFFD FFFD FFFD 9AC6 FFFD FFFD - 92E7 FFFD FFFD FFFD FFFD FFFD 8AAC FFFD - FFFD FFFD FFFD EA9F 8981 95F1 FFFD FFFD - 8FEA 9367 FFFD FFFD FFFD FFFD 8DE4 FFFD - FFFD 9ACC FFFD FFFD 95BB 97DB FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 89F2 9AC8 - FFFD FFFD FFFD FFFD FFFD 9159 9ACB FFFD - 9383 FFFD FFFD 9368 9384 94B7 92CB FFFD - FFFD FFFD 8DC7 FFFD FFFD FFFD 9AC7 FFFD - FFFD FFFD FFFD FFFD FFFD 8996 FFFD 9355 - FFFD FFFD FFFD FFFD 9AC9 FFFD 9AC5 FFFD - FFFD 906F FFFD FFFD FFFD 9ACD FFFD FFFD - FFFD FFFD 8F6D FFFD FFFD FFFD FFFD 8BAB - FFFD 9ACE -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 5893 - srcEnd = 5A49 - mappingOffset = 0A8A - Mapping = - 95E6 FFFD FFFD FFFD 919D FFFD FFFD FFFD - FFFD 92C4 FFFD FFFD 9AD0 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 966E FFFD FFFD - 9AD1 FFFD FFFD 9AD6 FFFD FFFD FFFD FFFD - 95AD FFFD FFFD FFFD FFFD 9AD5 9ACF 9AD2 - 9AD4 FFFD FFFD 8DA4 FFFD FFFD 95C7 FFFD - FFFD FFFD 9AD7 FFFD 9264 FFFD FFFD 89F3 - FFFD 8FEB FFFD FFFD FFFD FFFD 9AD9 FFFD - 9AD8 FFFD 8D88 FFFD 9ADA 9ADC 9ADB FFFD - FFFD 9ADE FFFD 9AD3 9AE0 FFFD FFFD FFFD - FFFD 9ADF 9ADD FFFD FFFD FFFD FFFD FFFD - 8E6D 9070 FFFD 9173 9AE1 90BA 88EB 9484 - FFFD FFFD FFFD FFFD 92D9 FFFD 9AE3 9AE2 - 9AE4 9AE5 9AE6 FFFD FFFD FFFD FFFD 9AE7 - FFFD FFFD FFFD FFFD FFFD FFFD 95CF 9AE8 - FFFD FFFD FFFD FFFD 89C4 9AE9 FFFD FFFD - FFFD FFFD 975B 8A4F FFFD 99C7 8F67 91BD - 9AEA 96E9 FFFD FFFD FFFD FFFD FFFD 96B2 - FFFD FFFD 9AEC FFFD 91E5 FFFD 9356 91BE - 9576 9AED 9AEE 899B FFFD FFFD 8EB8 9AEF - FFFD FFFD FFFD FFFD 88CE 9AF0 FFFD FFFD - FFFD FFFD FFFD 9AF1 FFFD FFFD FFFD FFFD - FFFD 8982 FFFD FFFD 8AEF 93DE 95F2 FFFD - FFFD FFFD FFFD 9AF5 9174 9AF4 8C5F FFFD - FFFD 967A 9AF3 FFFD 9385 9AF7 FFFD 9AF6 - FFFD FFFD FFFD FFFD FFFD 9AF9 FFFD 9AF8 - FFFD FFFD 899C FFFD 9AFA 8FA7 9AFC 9244 - FFFD 9AFB FFFD 95B1 FFFD FFFD FFFD FFFD - 8F97 937A FFFD FFFD FFFD 9B40 FFFD FFFD - FFFD FFFD 8D44 FFFD FFFD FFFD 9B41 9440 - 94DC 96CF FFFD FFFD FFFD FFFD FFFD 9444 - FFFD FFFD 9B4A FFFD FFFD FFFD FFFD FFFD - 8B57 FFFD FFFD 9764 FFFD FFFD 96AD FFFD - 9BAA FFFD 9B42 FFFD FFFD FFFD FFFD FFFD - 9B45 FFFD 91C3 FFFD FFFD 9657 FFFD FFFD - FFFD 9369 FFFD FFFD FFFD FFFD FFFD 9B46 - FFFD FFFD FFFD FFFD FFFD FFFD 9685 FFFD - 8DC8 FFFD FFFD 8FA8 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9B47 FFFD FFFD 8E6F FFFD - 8E6E FFFD FFFD FFFD FFFD 88B7 8CC6 FFFD - 90A9 88CF FFFD FFFD FFFD FFFD 9B4B 9B4C - FFFD 9B49 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8957 8AAD FFFD 9B48 FFFD 96C3 - 9550 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 88A6 FFFD FFFD FFFD FFFD - 88F7 FFFD FFFD FFFD 8E70 FFFD 88D0 FFFD - 88A1 FFFD FFFD FFFD FFFD FFFD 9B51 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9B4F FFFD - FFFD FFFD FFFD FFFD FFFD 96BA FFFD 9B52 - FFFD 9B50 FFFD FFFD 9B4E 9050 FFFD FFFD - FFFD FFFD 9B4D FFFD FFFD FFFD 95D8 FFFD - FFFD FFFD FFFD FFFD 8CE2 FFFD FFFD FFFD - FFFD FFFD 9B56 9B57 FFFD FFFD FFFD FFFD - FFFD 8FA9 FFFD FFFD FFFD 9B53 984B FFFD - FFFD FFFD FFFD 946B FFFD FFFD 9B55 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 5A5A - srcEnd = 5A6C - mappingOffset = 0C41 - Mapping = - 8DA5 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9B58 FFFD FFFD FFFD 9577 FFFD FFFD FFFD - 9B59 FFFD 9B54 -End of Item 0044 - -Begin of Item 0045 - Format 2 - srcBegin = 5A7F - destBegin = 96B9 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 5A92 - srcEnd = 5A9B - mappingOffset = 0C54 - Mapping = - 947D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9B5A 9551 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 5ABC - srcEnd = 5AE9 - mappingOffset = 0C5E - Mapping = - 9B5B 9B5F 9B5C FFFD FFFD 89C5 9B5E FFFD - FFFD FFFD FFFD FFFD FFFD 8EB9 FFFD 9B5D - 8C99 FFFD FFFD FFFD 9B6B FFFD FFFD FFFD - FFFD FFFD 9B64 9B61 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9284 FFFD 9B60 - FFFD FFFD 9B62 FFFD FFFD 9B63 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 5AFA - srcEnd = 5AFB - mappingOffset = 0C8C - Mapping = - 9B65 9B66 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 5B09 - srcEnd = 5B16 - mappingOffset = 0C8E - Mapping = - 8AF0 FFFD 9B68 9B67 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9B69 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 5B22 - srcEnd = 5C79 - mappingOffset = 0C9C - Mapping = - 8FEC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9B6C FFFD 92DA FFFD FFFD FFFD 8964 FFFD - 9B6A FFFD FFFD FFFD 9B6D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9B6E FFFD 9B71 FFFD - FFFD 9B6F FFFD 9B70 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8E71 9B72 - FFFD FFFD 8D45 9B73 FFFD 8E9A 91B6 FFFD - 9B74 9B75 8E79 8D46 FFFD 96D0 FFFD FFFD - FFFD 8B47 8CC7 9B76 8A77 FFFD FFFD 9B77 - FFFD 91B7 FFFD FFFD FFFD FFFD 9B78 9BA1 - FFFD 9B79 FFFD 9B7A FFFD FFFD 9B7B FFFD - 9B7D FFFD FFFD FFFD FFFD FFFD 9B7E FFFD - FFFD 9B80 FFFD 91EE FFFD 8946 8EE7 88C0 - FFFD 9176 8AAE 8EB3 FFFD 8D47 FFFD FFFD - FFFD FFFD FFFD 9386 FFFD 8F40 8AAF 9288 - 92E8 88B6 8B58 95F3 FFFD 8EC0 FFFD FFFD - 8B71 90E9 8EBA 9747 9B81 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8B7B FFFD 8DC9 FFFD - FFFD 8A51 8983 8FAA 89C6 FFFD 9B82 9765 - FFFD FFFD FFFD FFFD FFFD 8F68 FFFD FFFD - 8EE2 9B83 8AF1 93D0 96A7 9B84 FFFD 9B85 - FFFD FFFD 9578 FFFD FFFD FFFD 9B87 FFFD - 8AA6 8BF5 9B86 FFFD FFFD FFFD FFFD FFFD - FFFD 8AB0 FFFD 9051 9B8B 8E40 FFFD 89C7 - 9B8A FFFD 9B88 9B8C 9B89 944A 9ECB 9052 - FFFD 9B8D FFFD FFFD 97BE FFFD 9B8E FFFD - FFFD 9B90 FFFD 929E 9B8F FFFD 90A1 FFFD - 8E9B FFFD FFFD FFFD 91CE 8EF5 FFFD 9595 - 90EA FFFD 8ECB 9B91 8FAB 9B92 9B93 88D1 - 91B8 9071 FFFD 9B94 93B1 8FAC FFFD 8FAD - FFFD 9B95 FFFD FFFD 90EB FFFD FFFD FFFD - 8FAE FFFD FFFD FFFD FFFD FFFD 9B96 FFFD - 9B97 FFFD 96DE FFFD FFFD FFFD 9B98 FFFD - FFFD FFFD FFFD 8BC4 FFFD FFFD FFFD 8F41 - FFFD FFFD FFFD FFFD FFFD FFFD 9B99 9B9A - 8EDA 904B 93F2 9073 94F6 9441 8BC7 9B9B - FFFD FFFD FFFD 8B8F 9B9C FFFD 8BFC FFFD - 93CD 89AE FFFD 8E72 9B9D 9BA0 9B9F 8BFB - FFFD 9B9E FFFD 9357 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 91AE FFFD 936A 8EC6 - FFFD FFFD 9177 979A FFFD FFFD FFFD FFFD - FFFD FFFD 9BA2 FFFD 9BA3 93D4 FFFD 8E52 - FFFD FFFD FFFD FFFD 9BA5 FFFD FFFD 9BA6 -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 5C8C - srcEnd = 5C94 - mappingOffset = 0DF4 - Mapping = - 9BA7 FFFD FFFD FFFD 8AF2 9BA8 FFFD FFFD - 9BA9 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 5CA1 - srcEnd = 5CC7 - mappingOffset = 0DFD - Mapping = - 89AA FFFD FFFD FFFD FFFD FFFD FFFD 915A - 8AE2 FFFD 9BAB 96A6 FFFD FFFD FFFD FFFD - 91D0 FFFD 8A78 FFFD FFFD 9BAD 9BAF 8ADD - FFFD FFFD 9BAC 9BAE FFFD 9BB1 FFFD FFFD - FFFD FFFD FFFD FFFD 9BB0 FFFD 9BB2 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 5CD9 - srcEnd = 5D29 - mappingOffset = 0E24 - Mapping = - 9BB3 FFFD FFFD FFFD FFFD FFFD FFFD 93BB - 8BAC FFFD FFFD FFFD FFFD FFFD FFFD 89E3 - 9BB4 9BB9 FFFD FFFD 9BB7 FFFD 95F5 95F4 - FFFD FFFD FFFD FFFD FFFD 9387 FFFD FFFD - FFFD 9BB6 8F73 FFFD 9BB5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9092 FFFD - FFFD FFFD 9BBA FFFD FFFD 8DE8 FFFD FFFD - 9BC0 FFFD FFFD 9BC1 9BBB 8A52 9BBC 9BC5 - 9BC4 9BC3 9BBF FFFD FFFD FFFD 9BBE FFFD - FFFD 9BC2 FFFD FFFD FFFD FFFD FFFD FFFD - 95F6 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 5D4B - srcEnd = 5D5C - mappingOffset = 0E75 - Mapping = - 9BC9 9BC6 FFFD 9BC8 FFFD 9792 FFFD 9BC7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 9BBD -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 5D69 - srcEnd = 5D76 - mappingOffset = 0E87 - Mapping = - 9093 FFFD FFFD 9BCA FFFD FFFD 8DB5 FFFD - FFFD FFFD 9BCB FFFD FFFD 9BCC -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 5D82 - srcEnd = 5D90 - mappingOffset = 0E95 - Mapping = - 9BCF FFFD 9BCE FFFD FFFD 9BCD FFFD FFFD - FFFD 9388 9BB8 FFFD FFFD FFFD 9BD5 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 5D9D - srcEnd = 5DBD - mappingOffset = 0EA4 - Mapping = - 9BD1 FFFD FFFD FFFD FFFD 9BD0 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9BD2 - FFFD 9BD3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9BD6 FFFD FFFD 97E4 FFFD 9BD7 - 9BD4 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 5DC9 - srcEnd = 5E64 - mappingOffset = 0EC5 - Mapping = - 9BD8 FFFD FFFD 8ADE 9BD9 FFFD FFFD FFFD - FFFD 9BDB 9BDA FFFD FFFD 9BDC FFFD FFFD - FFFD FFFD 9BDD FFFD 90EC 8F42 FFFD FFFD - 8F84 FFFD 9183 FFFD 8D48 8DB6 8D49 8B90 - FFFD FFFD 9BDE FFFD FFFD 8DB7 FFFD FFFD - 8CC8 9BDF 96A4 9462 9BE0 FFFD 8D4A FFFD - FFFD FFFD 8AAA FFFD 9246 8BD0 FFFD FFFD - FFFD 8E73 957A FFFD FFFD 94BF FFFD FFFD - FFFD FFFD 9BE1 8AF3 FFFD FFFD FFFD FFFD - 9BE4 FFFD FFFD FFFD FFFD 929F FFFD FFFD - 9BE3 9BE2 9BE5 FFFD 92E9 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9083 FFFD FFFD FFFD - FFFD FFFD 8E74 FFFD 90C8 FFFD 91D1 8B41 - FFFD FFFD 92A0 FFFD FFFD 9BE6 9BE7 8FED - FFFD FFFD FFFD FFFD 9658 FFFD FFFD 9BEA - FFFD FFFD 9BE9 9BE8 959D FFFD 9BF1 FFFD - FFFD FFFD FFFD 9679 FFFD 9BEB FFFD FFFD - FFFD FFFD FFFD 9BED 968B FFFD 9BEC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9BEE FFFD - 94A6 9BEF 95BC 9BF0 -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 5E72 - srcEnd = 5FFF - mappingOffset = 0F61 - Mapping = - 8AB1 95BD 944E 9BF2 9BF3 FFFD 8D4B 8AB2 - 9BF4 8CB6 9763 9748 8AF4 9BF6 FFFD 92A1 - FFFD 8D4C 8FAF FFFD FFFD 94DD FFFD FFFD - 8FB0 FFFD FFFD FFFD FFFD 8F98 FFFD FFFD - FFFD FFFD FFFD 92EA 95F7 9358 FFFD FFFD - 8D4D FFFD 957B FFFD FFFD FFFD 9BF7 FFFD - FFFD FFFD FFFD FFFD 9378 8DC0 FFFD FFFD - FFFD 8CC9 FFFD 92EB FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 88C1 8F8E 8D4E 9766 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9BF8 - 9BF9 9470 FFFD FFFD FFFD FFFD 9BFA 97F5 - 984C FFFD FFFD FFFD FFFD 9BFC 9BFB FFFD - FFFD 8A66 FFFD FFFD 9C40 FFFD FFFD FFFD - 9C43 9C44 FFFD 9C42 FFFD 955F 8FB1 9C46 - 9C45 9C41 FFFD FFFD FFFD FFFD 9C47 9C48 - FFFD FFFD 9C49 FFFD FFFD FFFD 9C4C 9C4A - FFFD 9C4B 9C4D FFFD 8984 92EC 9C4E FFFD - 8C9A 89F4 9455 FFFD 9C4F 93F9 FFFD 95D9 - FFFD 9C50 984D FFFD FFFD FFFD FFFD 9C51 - 95BE 9C54 989F 98AF FFFD 8EAE 93F3 9C55 - FFFD 8B7C 92A2 88F8 9C56 95A4 8D4F FFFD - FFFD 926F FFFD FFFD FFFD 92ED FFFD FFFD - FFFD FFFD FFFD 96ED 8CB7 8CCA FFFD 9C57 - FFFD FFFD FFFD 9C58 FFFD 9C5E FFFD 8EE3 - FFFD FFFD FFFD 92A3 FFFD 8BAD 9C59 FFFD - FFFD FFFD 954A FFFD 9265 FFFD FFFD 9C5A - FFFD FFFD FFFD FFFD FFFD FFFD 9C5B FFFD - 8BAE FFFD 9C5C FFFD 9C5D FFFD FFFD 9C5F - FFFD 9396 FFFD FFFD 9C60 9C61 FFFD 9C62 - FFFD FFFD 9C53 9C52 FFFD FFFD FFFD 9C63 - 8C60 FFFD FFFD FFFD 9546 FFFD FFFD 8DCA - 9556 92A4 956A 9C64 FFFD FFFD 8FB2 8965 - FFFD 9C65 FFFD FFFD FFFD 9C66 FFFD 96F0 - FFFD FFFD 94DE FFFD FFFD 9C69 899D 90AA - 9C68 9C67 8C61 91D2 FFFD 9C6D 9C6B FFFD - 9C6A 97A5 8CE3 FFFD FFFD FFFD 8F99 9C6C - 936B 8F5D FFFD FFFD FFFD 93BE 9C70 9C6F - FFFD FFFD FFFD FFFD 9C6E FFFD 9C71 8CE4 - FFFD FFFD FFFD FFFD FFFD FFFD 9C72 959C - 8F7A FFFD FFFD 9C73 94F7 FFFD FFFD FFFD - FFFD 93BF 92A5 FFFD FFFD FFFD FFFD 934F - FFFD FFFD 9C74 8B4A FFFD FFFD FFFD FFFD - FFFD 9053 FFFD 954B FFFD FFFD FFFD FFFD - FFFD FFFD 8AF5 9445 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9C75 8E75 9659 965A - FFFD FFFD 899E 9C7A FFFD FFFD 9289 FFFD - FFFD FFFD 9C77 FFFD FFFD FFFD FFFD FFFD - FFFD 89F5 FFFD FFFD FFFD FFFD 9CAB 9C79 - FFFD FFFD FFFD 944F FFFD FFFD 9C78 FFFD - FFFD 9C76 FFFD 8D9A FFFD 9C7C -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 600E - srcEnd = 61D0 - mappingOffset = 10EF - Mapping = - 9C83 9C89 9C81 FFFD 937B FFFD FFFD 9C86 - 957C FFFD FFFD 9C80 FFFD 9C85 97E5 8E76 - FFFD FFFD 91D3 9C7D FFFD FFFD FFFD 8B7D - 9C88 90AB 8985 9C82 89F6 9C87 FFFD FFFD - FFFD 8BAF FFFD 9C84 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9C8A FFFD FFFD FFFD - FFFD FFFD FFFD 9C8C 9C96 9C94 FFFD FFFD - 9C91 FFFD FFFD FFFD 9C90 97F6 FFFD 9C92 - FFFD FFFD 8BB0 FFFD 8D50 FFFD FFFD 8F9A - FFFD FFFD FFFD 9C99 9C8B FFFD FFFD FFFD - FFFD 9C8F 9C7E FFFD 89F8 9C93 9C95 9270 - FFFD FFFD 8DA6 89B6 9C8D 9C98 9C97 8BB1 - FFFD 91A7 8A86 FFFD FFFD FFFD FFFD 8C62 - FFFD 9C8E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9C9A FFFD 9C9D 9C9F FFFD - FFFD FFFD FFFD 8EBB FFFD 9CA5 92EE 9C9B - FFFD FFFD FFFD FFFD 9CA3 FFFD 89F7 FFFD - 9CA1 9CA2 FFFD FFFD 9C9E 9CA0 FFFD FFFD - FFFD 8CE5 9749 FFFD FFFD 8AB3 FFFD FFFD - 8978 9CA4 FFFD 9459 88AB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 94DF 9C7B 9CAA 9CAE - 96E3 FFFD 9CA7 FFFD FFFD FFFD 9389 9CAC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8FEE - 9CAD 93D5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9866 FFFD 9CA9 FFFD FFFD - FFFD FFFD 9CAF FFFD 8D9B FFFD 90C9 FFFD - FFFD 88D2 9CA8 9CA6 FFFD 9179 FFFD FFFD - FFFD 9C9C 8E53 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 91C4 9CBB FFFD 917A 9CB6 FFFD - 9CB3 9CB4 FFFD 8EE4 9CB7 9CBA FFFD FFFD - FFFD FFFD 9CB5 8F44 FFFD 9CB8 FFFD FFFD - 9CB2 FFFD 96FA 96F9 FFFD FFFD FFFD 9CBC - 9CBD 88D3 FFFD FFFD FFFD FFFD FFFD 9CB1 - FFFD FFFD FFFD FFFD 8BF0 88A4 FFFD FFFD - FFFD 8AB4 FFFD 9CB9 FFFD FFFD FFFD FFFD - FFFD 9CC1 9CC0 FFFD FFFD FFFD 9CC5 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9CC6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9CC4 9CC7 - 9CBF 9CC3 FFFD FFFD 9CC8 FFFD 9CC9 FFFD - FFFD 9CBE 8E9C FFFD 9CC2 91D4 8D51 9CB0 - 9054 FFFD FFFD FFFD FFFD 9CD6 FFFD 95E7 - FFFD FFFD 9CCC 9CCD 9CCE FFFD FFFD 9CD5 - FFFD 9CD4 FFFD FFFD 969D 8AB5 FFFD 9CD2 - FFFD 8C64 8A53 FFFD FFFD 9CCF FFFD FFFD - 97B6 9CD1 88D4 9CD3 FFFD 9CCA 9CD0 9CD7 - 8C63 9CCB FFFD FFFD FFFD FFFD FFFD FFFD - 977C FFFD FFFD FFFD 974A FFFD FFFD FFFD - FFFD 9CDA FFFD FFFD 9CDE FFFD FFFD FFFD - 919E FFFD 97F7 9CDF FFFD FFFD 9CDC FFFD - 9CD9 FFFD FFFD 9CD8 9CDD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 95AE FFFD - FFFD 93B2 FFFD 8C65 FFFD 9CE0 9CDB FFFD - 9CE1 FFFD FFFD FFFD 8C9B FFFD FFFD FFFD - 89AF FFFD FFFD FFFD 9CE9 FFFD FFFD FFFD - 8AB6 FFFD FFFD FFFD FFFD 9CE7 FFFD FFFD - 9CE8 8DA7 9CE6 9CE4 9CE3 9CEA 9CE2 9CEC - FFFD FFFD 89F9 -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 61E3 - srcEnd = 61E6 - mappingOffset = 12B2 - Mapping = - 9CEE FFFD FFFD 9CED -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 61F2 - srcEnd = 629E - mappingOffset = 12B6 - Mapping = - 92A6 FFFD 9CF1 FFFD 9CEF 9CE5 8C9C FFFD - 9CF0 FFFD 9CF4 9CF3 9CF5 9CF2 9CF6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9CF7 9CF8 - 95E8 FFFD 9CFA 9CF9 8F5E FFFD 90AC 89E4 - 89FA FFFD 9CFB FFFD 88BD FFFD FFFD FFFD - 90CA 9CFC FFFD E6C1 9D40 8C81 FFFD 9D41 - FFFD FFFD FFFD FFFD 90ED FFFD FFFD FFFD - 9D42 FFFD FFFD FFFD 9D43 8B59 9D44 FFFD - 9D45 9D46 91D5 FFFD FFFD FFFD 8CCB FFFD - FFFD 96DF FFFD FFFD FFFD 965B 8F8A 9D47 - FFFD FFFD FFFD FFFD FFFD 90EE E7BB 94E0 - FFFD 8EE8 FFFD 8DCB 9D48 FFFD FFFD FFFD - FFFD 91C5 FFFD 95A5 FFFD FFFD 91EF FFFD - FFFD 9D4B FFFD FFFD 9D49 FFFD 9D4C FFFD - FFFD 9D4A FFFD FFFD FFFD FFFD 9D4D FFFD - FFFD FFFD FFFD FFFD 95AF FFFD FFFD 88B5 - FFFD FFFD FFFD FFFD 957D FFFD FFFD 94E1 - FFFD FFFD 9D4E FFFD 9D51 8FB3 8B5A FFFD - 9D4F 9D56 8FB4 FFFD FFFD FFFD FFFD 9D50 - 9463 FFFD FFFD FFFD FFFD FFFD FFFD 977D - 9D52 9D53 9D57 938A 9D54 8D52 90DC FFFD - FFFD 9D65 94B2 FFFD 91F0 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 62AB - srcEnd = 63FA - mappingOffset = 1363 - Mapping = - 94E2 9DAB FFFD FFFD FFFD FFFD 95F8 FFFD - FFFD FFFD 92EF FFFD FFFD FFFD 9695 FFFD - 9D5A 899F 928A FFFD FFFD FFFD FFFD 9D63 - FFFD FFFD 9253 9D5D 9D64 9D5F 9D66 9D62 - FFFD 9D61 948F FFFD 9D5B 89FB 9D59 8B91 - 91F1 9D55 FFFD FFFD 9D58 8D53 90D9 FFFD - 8FB5 9D60 9471 FFFD FFFD 8B92 8A67 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8A87 9040 9D68 9D6D FFFD 9D69 FFFD - 8C9D FFFD 9D6E 8E41 8D89 FFFD FFFD FFFD - FFFD FFFD FFFD 8F45 9D5C FFFD 8E9D 9D6B - FFFD FFFD FFFD FFFD 8E77 9D6C 88C2 FFFD - FFFD 9D67 FFFD FFFD FFFD FFFD 92A7 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8B93 FFFD - FFFD FFFD FFFD FFFD 8BB2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9D6A 88A5 FFFD FFFD - 8DC1 FFFD FFFD FFFD 9055 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 92F0 - FFFD FFFD 94D2 9D70 917D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 91A8 FFFD - FFFD 8E4A 9D71 FFFD 9D73 9D6F FFFD FFFD - FFFD FFFD 95DF FFFD 92BB FFFD FFFD FFFD - FFFD 917B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 95F9 8ECC 9D80 FFFD - 9D7E FFFD FFFD 9098 FFFD FFFD FFFD 8C9E - FFFD FFFD FFFD 9D78 8FB7 FFFD FFFD 93E6 - 9450 FFFD FFFD FFFD FFFD 9D76 FFFD FFFD - 917C FFFD FFFD FFFD FFFD 8EF6 9D7B FFFD - FFFD 8FB6 FFFD 9D75 9D7A FFFD FFFD 9472 - FFFD FFFD FFFD 9D74 FFFD 8C40 FFFD FFFD - 8A7C FFFD FFFD FFFD 9D7C 97A9 8DCC 9254 - 9D79 FFFD 90DA FFFD 8D54 9084 8986 915B - 9D77 8B64 FFFD FFFD FFFD FFFD FFFD 8C66 - FFFD 92CD 9D7D FFFD FFFD FFFD FFFD FFFD - 917E FFFD FFFD 9D81 FFFD 9D83 FFFD FFFD - 91B5 9D89 FFFD 9D84 FFFD FFFD 9D86 FFFD - FFFD FFFD FFFD FFFD 9560 92F1 FFFD 9D87 - FFFD FFFD FFFD 974B FFFD FFFD FFFD 9767 - 8AB7 FFFD FFFD FFFD FFFD FFFD 88AC FFFD - 9D85 FFFD FFFD FFFD FFFD FFFD 9D82 FFFD - FFFD FFFD FFFD 8AF6 FFFD FFFD FFFD FFFD - FFFD 8987 FFFD 9D88 FFFD FFFD FFFD 9768 -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 6406 - srcEnd = 6442 - mappingOffset = 14B3 - Mapping = - 9D8C FFFD FFFD FFFD FFFD FFFD FFFD 91B9 - FFFD 9D93 FFFD FFFD FFFD 9D8D FFFD FFFD - 9D8A 9D91 FFFD FFFD FFFD FFFD 9D72 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9D8E FFFD 9D92 FFFD FFFD FFFD 94C0 938B - FFFD FFFD FFFD FFFD FFFD FFFD 9D8B FFFD - 9D8F FFFD FFFD FFFD 8C67 FFFD FFFD FFFD - 8DEF FFFD FFFD FFFD 90DB -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 644E - srcEnd = 6458 - mappingOffset = 14F0 - Mapping = - 9D97 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9345 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 6467 - srcEnd = 6505 - mappingOffset = 14FB - Mapping = - 9D94 FFFD 9680 FFFD FFFD FFFD FFFD FFFD - 9D95 FFFD FFFD FFFD FFFD FFFD FFFD 9D96 - FFFD 96CC FFFD 90A0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8C82 FFFD FFFD FFFD - FFFD 9D9D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8E54 9D9A FFFD 9D99 FFFD - FFFD FFFD FFFD 9451 FFFD FFFD FFFD 93B3 - FFFD FFFD FFFD FFFD FFFD 9350 9D9B FFFD - FFFD FFFD 9D9C FFFD 958F FFFD 9464 8E42 - FFFD 90EF FFFD 966F FFFD FFFD FFFD FFFD - FFFD FFFD 8A68 FFFD 9DA3 9D9E FFFD FFFD - FFFD FFFD 9769 9DA5 FFFD FFFD 9DA1 FFFD - 9DA2 FFFD FFFD FFFD FFFD FFFD 9180 FFFD - FFFD FFFD FFFD 9DA0 FFFD 9D5E FFFD FFFD - FFFD 9DA4 FFFD 9D9F FFFD FFFD FFFD FFFD - FFFD 9DA9 9DAA 9346 9DAC FFFD FFFD 8E43 - 9DA7 FFFD FFFD FFFD FFFD 8B5B FFFD FFFD - 9DAD FFFD 9DA6 9DB1 FFFD 9DB0 FFFD 9DAF - FFFD FFFD FFFD 9DB2 FFFD FFFD 9DB4 8FEF - FFFD 9DB3 FFFD FFFD FFFD FFFD 9DB7 -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 6518 - srcEnd = 66C9 - mappingOffset = 159A - Mapping = - 9DB5 FFFD FFFD FFFD 9DB6 9D90 FFFD FFFD - FFFD FFFD FFFD 9DB9 9DB8 FFFD FFFD FFFD - FFFD FFFD 9D98 9DBA 9DAE FFFD FFFD 8E78 - FFFD FFFD FFFD FFFD 9DBB 9DBC 9DBE 9DBD - 9DBF 89FC FFFD 8D55 FFFD FFFD 95FA 90AD - FFFD FFFD FFFD FFFD FFFD 8CCC FFFD FFFD - 9DC1 FFFD FFFD FFFD FFFD 9DC4 FFFD 9571 - FFFD 8B7E FFFD FFFD FFFD 9DC3 9DC2 9473 - 9DC5 8BB3 FFFD FFFD FFFD 9DC7 9DC6 FFFD - FFFD FFFD 8AB8 8E55 FFFD FFFD 93D6 FFFD - FFFD FFFD FFFD FFFD 8C68 FFFD FFFD FFFD - 9094 FFFD 9DC8 FFFD 90AE 9347 FFFD 957E - 9DC9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9DCA 9DCB FFFD FFFD FFFD 95B6 - 9B7C 90C4 FFFD FFFD 956B FFFD 8DD6 FFFD - 94E3 94C1 FFFD FFFD FFFD FFFD FFFD 936C - FFFD 97BF FFFD 9DCD 8ECE FFFD FFFD 9DCE - FFFD 88B4 FFFD FFFD 8BD2 90CB FFFD 9580 - FFFD FFFD FFFD 9DCF 8E61 9266 FFFD 8E7A - 9056 FFFD FFFD FFFD FFFD FFFD FFFD 9DD0 - FFFD 95FB FFFD FFFD 8997 8E7B FFFD FFFD - FFFD 9DD3 FFFD 9DD1 9DD4 97B7 9DD2 FFFD - FFFD FFFD FFFD 90F9 9DD5 FFFD FFFD 91B0 - FFFD FFFD 9DD6 FFFD FFFD FFFD FFFD 8AF8 - FFFD 9DD8 FFFD 9DD7 FFFD FFFD FFFD FFFD - 9DD9 9DDA 8AF9 FFFD FFFD 93FA 9255 8B8C - 8E7C 9181 FFFD FFFD 8F7B 88AE FFFD FFFD - FFFD 9DDB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 89A0 9DDF FFFD FFFD FFFD FFFD - FFFD FFFD 8D56 9DDE FFFD FFFD 8DA9 8FB8 - FFFD FFFD 9DDD FFFD 8FB9 FFFD 96BE 8DA8 - FFFD FFFD FFFD 88D5 90CC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9DE4 FFFD FFFD 90AF - 8966 FFFD FFFD FFFD FFFD 8F74 FFFD 9686 - 8DF0 FFFD FFFD FFFD FFFD 8FBA FFFD 90A5 - FFFD FFFD FFFD FFFD 9DE3 9DE1 9DE2 FFFD - FFFD FFFD FFFD FFFD 928B FFFD FFFD 9E45 - FFFD 9DE8 8E9E 8D57 9DE6 FFFD FFFD FFFD - FFFD 9DE7 FFFD 9057 FFFD FFFD FFFD 9DE5 - FFFD FFFD 8E4E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9DEA 9DE9 9DEE - FFFD FFFD 9DEF FFFD 9DEB FFFD 8A41 9DEC - 9DED 94D3 FFFD FFFD FFFD FFFD 9581 8C69 - 9DF0 FFFD FFFD FFFD 90B0 FFFD 8FBB FFFD - FFFD FFFD 9271 FFFD FFFD FFFD FFFD FFFD - FFFD 8BC5 FFFD 9DF1 9DF5 FFFD FFFD 89C9 - 9DF2 9DF4 FFFD FFFD FFFD FFFD 9DF3 FFFD - FFFD 8F8B FFFD FFFD FFFD FFFD 9267 88C3 - 9DF6 FFFD FFFD FFFD FFFD 9DF7 FFFD FFFD - FFFD FFFD 92A8 FFFD FFFD FFFD 97EF FFFD - FFFD FFFD FFFD 8E62 FFFD FFFD 95E9 FFFD - FFFD FFFD FFFD FFFD 965C FFFD FFFD FFFD - 9E41 9DF9 FFFD FFFD 9DFC FFFD 9DFB FFFD - FFFD 9DF8 FFFD FFFD 9E40 FFFD FFFD 93DC - FFFD 9DFA -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 66D6 - srcEnd = 6804 - mappingOffset = 174C - Mapping = - 9E42 FFFD FFFD 8F8C 9E43 FFFD 976A 9498 - FFFD FFFD 9E44 FFFD FFFD FFFD FFFD FFFD - 9E46 FFFD FFFD 9E47 FFFD FFFD FFFD FFFD - FFFD FFFD 9E48 FFFD 8BC8 8967 8D58 9E49 - FFFD 9E4A 8F91 9182 FFFD FFFD 99D6 915D - 915C 91D6 8DC5 FFFD FFFD 98F0 FFFD FFFD - FFFD FFFD 8C8E 974C FFFD 95FC FFFD 959E - FFFD 9E4B FFFD FFFD FFFD FFFD 8DF1 92BD - 9E4C 984E FFFD FFFD FFFD 965D FFFD 92A9 - 9E4D 8AFA FFFD FFFD FFFD FFFD FFFD FFFD - 9E4E 9E4F 96D8 FFFD 96A2 9696 967B 8E44 - 9E51 FFFD FFFD 8EE9 FFFD FFFD 9670 FFFD - 9E53 9E56 9E55 FFFD 8AF7 FFFD FFFD 8B80 - FFFD 9E52 FFFD 9E54 FFFD FFFD FFFD FFFD - 9E57 FFFD FFFD 9099 FFFD FFFD FFFD FFFD - 979B 88C7 8DDE 91BA FFFD 8EDB FFFD FFFD - 8FF1 FFFD FFFD 9E5A FFFD FFFD 936D FFFD - 9E58 91A9 9E59 8FF0 96DB 9E5B 9E5C 9788 - FFFD FFFD FFFD FFFD 9E61 FFFD FFFD 8D59 - FFFD 9474 9E5E 938C 9DDC 9DE0 FFFD 8B6E - FFFD 9466 FFFD FFFD FFFD FFFD 9E60 FFFD - 8FBC 94C2 FFFD FFFD FFFD FFFD FFFD 9E66 - FFFD 94F8 FFFD 9E5D FFFD 9E63 9E62 FFFD - FFFD FFFD 90CD FFFD FFFD FFFD FFFD 968D - FFFD 97D1 FFFD FFFD 9687 FFFD 89CA 8E7D - FFFD FFFD 9867 9E65 9095 FFFD FFFD FFFD - 9E64 FFFD FFFD 9E5F FFFD FFFD FFFD FFFD - FFFD 8CCD FFFD FFFD FFFD 9E6B 9E69 FFFD - 89CB 9E67 9E6D 9E73 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 91C6 FFFD FFFD 95BF FFFD - 9E75 FFFD FFFD FFFD 9541 FFFD FFFD FFFD - 9E74 9490 965E 8AB9 FFFD 90F5 8F5F FFFD - FFFD FFFD 92D1 FFFD 974D FFFD FFFD 9E70 - 9E6F FFFD FFFD FFFD 9E71 FFFD 9E6E FFFD - FFFD 9E76 FFFD 9E6C FFFD FFFD 9E6A FFFD - 9E72 9E68 FFFD 928C FFFD 96F6 8EC4 8DF2 - FFFD FFFD FFFD FFFD FFFD 8DB8 FFFD FFFD - 968F 8A60 FFFD FFFD 92CC 93C8 8968 -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 6813 - srcEnd = 6867 - mappingOffset = 187B - Mapping = - 90F0 FFFD FFFD 90B2 8C49 FFFD FFFD FFFD - FFFD FFFD FFFD 9E78 FFFD FFFD 8D5A 8A9C - FFFD FFFD FFFD FFFD FFFD FFFD 9E7A 8A94 - 9E81 FFFD FFFD FFFD FFFD FFFD FFFD 9E7D - FFFD 90F1 FFFD FFFD FFFD 8A6A 8DAA FFFD - FFFD 8A69 8DCD FFFD FFFD 9E7B 8C85 8C6A - 938D FFFD FFFD 9E79 FFFD 88C4 FFFD FFFD - FFFD FFFD 9E7C 9E7E FFFD 8BCB 8C4B FFFD - 8ABA 8B6A FFFD FFFD FFFD FFFD 9E82 FFFD - FFFD 8DF7 9691 FFFD 8E56 FFFD FFFD FFFD - 9E83 FFFD FFFD FFFD 954F -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 6874 - srcEnd = 6A4B - mappingOffset = 18D0 - Mapping = - 9E8F FFFD 89B1 9E84 FFFD FFFD FFFD FFFD - FFFD FFFD 9E95 9E85 FFFD 97C0 FFFD 9E8C - FFFD 947E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 9E94 FFFD 9E87 FFFD FFFD FFFD 88B2 - 9E89 FFFD FFFD 8D5B FFFD FFFD FFFD 9E8B - FFFD 9E8A FFFD 9E86 9E91 FFFD 8FBD FFFD - FFFD FFFD 9AEB 8CE6 979C FFFD FFFD FFFD - FFFD 9E88 FFFD 92F2 8A42 8DAB FFFD 9E80 - FFFD 9E90 8A81 FFFD FFFD 9E8E 9E92 FFFD - 938E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8AFC FFFD 9EB0 FFFD FFFD 96C7 9E97 8AFB - FFFD 9E9E FFFD FFFD FFFD FFFD 965F FFFD - 9E9F 9EA1 FFFD 9EA5 9E99 FFFD 9249 FFFD - FFFD FFFD FFFD 938F 9EA9 9E9C FFFD 9EA6 - FFFD FFFD FFFD 9EA0 FFFD FFFD FFFD FFFD - FFFD FFFD 9058 9EAA FFFD FFFD 90B1 FFFD - FFFD FFFD FFFD FFFD FFFD 9EA8 8ABB FFFD - FFFD FFFD FFFD FFFD 986F 9E96 FFFD FFFD - 9EA4 88D6 FFFD FFFD 9E98 FFFD FFFD 96B8 - 9E9D 9041 92C5 9E93 FFFD FFFD 9EA3 FFFD - FFFD FFFD FFFD FFFD FFFD 909A 9EAD 8A91 - 8C9F FFFD FFFD FFFD FFFD 9EAF 9E9A 9EAE - FFFD 9EA7 9E9B FFFD 9EAB FFFD 9EAC FFFD - FFFD FFFD FFFD FFFD 9EBD FFFD FFFD FFFD - 93CC FFFD 9EA2 FFFD FFFD 9EB9 FFFD FFFD - FFFD 9EBB FFFD 92D6 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 976B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9596 - 9EB6 91C8 FFFD FFFD FFFD 9EBC 915E FFFD - 9EB3 9EC0 9EBF FFFD 93ED 9EBE 93E8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9EC2 9EB5 - FFFD 8BC6 9EB8 8F7C FFFD FFFD FFFD 9480 - 9EBA 8BC9 FFFD 9EB2 9EB4 9EB1 FFFD FFFD - 984F 8A79 9EB7 FFFD FFFD 9EC1 8A54 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8DE5 FFFD - FFFD FFFD 897C FFFD FFFD 9ED2 FFFD FFFD - 9850 9ED5 FFFD FFFD FFFD FFFD FFFD 9059 - 9ED4 FFFD FFFD FFFD 9ED3 FFFD FFFD FFFD - FFFD FFFD FFFD 9ED0 FFFD FFFD FFFD FFFD - FFFD FFFD 9EC4 FFFD FFFD 9EE1 9EC3 FFFD - 9ED6 FFFD FFFD FFFD FFFD FFFD FFFD 9ECE - FFFD FFFD 9EC9 9EC6 FFFD 9EC7 FFFD 9ECF - FFFD FFFD FFFD EAA0 FFFD FFFD 9ECC 8D5C - 92C6 9184 9ECA FFFD 9EC5 FFFD FFFD 9EC8 - FFFD FFFD FFFD FFFD 976C 968A FFFD FFFD - FFFD 9ECD 9ED7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9EDF 9ED8 FFFD FFFD 9EE5 - FFFD 9EE3 FFFD FFFD FFFD FFFD 9EDE FFFD - FFFD FFFD FFFD FFFD FFFD 9EDD FFFD 92CE - FFFD 9185 FFFD 9EDB FFFD FFFD 9ED9 FFFD - FFFD 9EE0 FFFD FFFD FFFD FFFD 9EE6 94F3 - 9EEC FFFD FFFD FFFD FFFD FFFD 9EE7 9EEA - 9EE4 FFFD FFFD 9294 FFFD 9557 FFFD 9EDA - FFFD FFFD 9EE2 8FBE FFFD 96CD 9EF6 9EE9 - FFFD FFFD FFFD FFFD FFFD 8CA0 89A1 8A7E - FFFD FFFD 9ED1 FFFD FFFD FFFD FFFD FFFD - FFFD 8FBF 9EEE FFFD 9EF5 8EF7 8A92 FFFD - FFFD 924D FFFD FFFD FFFD FFFD FFFD FFFD - 9EEB FFFD FFFD 9EF0 9EF4 FFFD FFFD 8BB4 -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 6A58 - srcEnd = 6A66 - mappingOffset = 1AA8 - Mapping = - 8B6B 9EF2 FFFD FFFD FFFD FFFD FFFD 8B40 - FFFD 93C9 9EF1 FFFD FFFD FFFD 9EF3 -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 6A72 - srcEnd = 6AC3 - mappingOffset = 1AB7 - Mapping = - 9EED FFFD FFFD FFFD FFFD FFFD 9EEF FFFD - FFFD FFFD FFFD FFFD FFFD 8A80 9268 FFFD - FFFD FFFD 9EFA FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9EF8 8CE7 FFFD 9EF7 FFFD - FFFD FFFD FFFD FFFD FFFD 9F40 FFFD FFFD - FFFD FFFD 9E77 FFFD FFFD FFFD 9EF9 FFFD - 9EFB 9EFC FFFD FFFD FFFD FFFD FFFD FFFD - 9F4B FFFD 9F47 FFFD 9E8D FFFD FFFD FFFD - FFFD 9F46 FFFD FFFD FFFD FFFD 9F45 FFFD - FFFD 9F42 FFFD FFFD FFFD FFFD FFFD 9EE8 - 9F44 9F43 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 6AD1 - srcEnd = 6AEA - mappingOffset = 1B09 - Mapping = - 9F49 FFFD 9845 FFFD FFFD FFFD FFFD FFFD - FFFD 9F4C 8BF9 FFFD FFFD 9F48 9F4A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 94A5 - FFFD 9F4D -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 6AFA - srcEnd = 6BDF - mappingOffset = 1B23 - Mapping = - 9F51 9F4E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9793 9F4F FFFD FFFD FFFD FFFD - 9EDC FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9F52 FFFD FFFD FFFD 9F53 FFFD FFFD FFFD - FFFD FFFD FFFD 8954 FFFD 9F55 8C87 8E9F - FFFD 8BD3 FFFD FFFD FFFD 89A2 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 977E FFFD FFFD FFFD FFFD 9F57 9F56 9F59 - 8B5C FFFD FFFD 8BD4 8ABC FFFD FFFD FFFD - FFFD 9F5C FFFD FFFD FFFD 9F5B FFFD 9F5D - FFFD FFFD 89CC FFFD 9256 FFFD 9F5E FFFD - FFFD 8ABD 9F60 FFFD FFFD FFFD FFFD 9F5F - FFFD 9F61 FFFD FFFD FFFD 9F62 FFFD 9F63 - 8E7E 90B3 8D9F FFFD 9590 FFFD FFFD 95E0 - 9863 FFFD FFFD FFFD FFFD 8E95 FFFD FFFD - FFFD 8DCE 97F0 FFFD FFFD FFFD 9F64 9F65 - FFFD 8E80 FFFD FFFD FFFD 9F66 9F67 FFFD - FFFD 9F69 9F68 FFFD 9677 FFFD FFFD 8F7D - 8EEA 8E63 FFFD 9F6A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9F6C 9042 FFFD 9F6B FFFD - FFFD FFFD FFFD FFFD 9F6D FFFD FFFD FFFD - FFFD FFFD 9F6E FFFD FFFD FFFD FFFD FFFD - 9F6F 9F70 FFFD FFFD FFFD 9F71 FFFD 9F73 - 9F72 9F74 89A3 9269 FFFD 9F75 FFFD FFFD - 8E45 8A6B 9F76 FFFD FFFD 9361 9ACA FFFD - FFFD FFFD FFFD 8B42 9F77 FFFD FFFD FFFD - FFFD 9F78 FFFD 95EA 9688 FFFD FFFD FFFD - 93C5 9F79 94E4 FFFD FFFD FFFD 94F9 FFFD - FFFD 96D1 FFFD FFFD FFFD 9F7A -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 6BEB - srcEnd = 6BF3 - mappingOffset = 1C09 - Mapping = - 9F7C 9F7B FFFD FFFD 9F7E FFFD FFFD FFFD - 9F7D -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 6C08 - srcEnd = 6C24 - mappingOffset = 1C12 - Mapping = - 9F81 FFFD FFFD FFFD FFFD FFFD FFFD 8E81 - FFFD 96AF FFFD 9F82 9F83 FFFD FFFD 8B43 - FFFD FFFD FFFD 9F84 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9F86 9F85 -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 6C34 - srcEnd = 6C42 - mappingOffset = 1C2F - Mapping = - 9085 FFFD FFFD 9558 8969 FFFD FFFD FFFD - FFFD FFFD 94C3 FFFD 92F3 8F60 8B81 -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 6C4E - srcEnd = 6CF3 - mappingOffset = 1C3E - Mapping = - 94C4 FFFD 8EAC FFFD FFFD FFFD FFFD 9F88 - FFFD 8ABE FFFD FFFD 8998 FFFD FFFD 93F0 - 9F87 8D5D 9272 FFFD 9F89 FFFD FFFD FFFD - FFFD FFFD 9F91 FFFD 9F8A FFFD FFFD FFFD - FFFD FFFD 91BF FFFD 8B82 9F92 FFFD FFFD - FFFD FFFD FFFD FFFD 8C88 FFFD FFFD 8B44 - 9F90 FFFD FFFD 9F8E 9F8B 9780 FFFD FFFD - FFFD FFFD 92BE FFFD FFFD FFFD 93D7 9F8C - FFFD FFFD 9F94 FFFD 9F93 8C42 FFFD FFFD - 89AB FFFD FFFD 8DB9 9F8D 9F8F FFFD FFFD - FFFD FFFD FFFD 9676 91F2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9697 FFFD FFFD - 9F9C FFFD FFFD 9F9D FFFD 89CD FFFD FFFD - FFFD FFFD 95A6 96FB 9F9F 8EA1 8FC0 9F98 - 9F9E 8988 FFFD 8BB5 FFFD FFFD 9F95 9F9A - FFFD FFFD FFFD 90F2 9491 FFFD 94E5 FFFD - FFFD FFFD FFFD FFFD FFFD 9F97 FFFD 9640 - FFFD 9F99 FFFD 9FA2 FFFD 9FA0 FFFD 9F9B - FFFD FFFD FFFD 9641 9467 8B83 FFFD 9344 - FFFD FFFD 928D FFFD 9FA3 FFFD FFFD FFFD - FFFD 9FA1 91D7 9F96 FFFD 896A -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 6D0B - srcEnd = 6D45 - mappingOffset = 1CE4 - Mapping = - 976D 9FAE FFFD FFFD FFFD FFFD FFFD 9FAD - FFFD FFFD FFFD FFFD 90F4 FFFD 9FAA FFFD - 978C FFFD FFFD 93B4 9FA4 FFFD FFFD FFFD - FFFD FFFD 92C3 FFFD FFFD FFFD 896B 8D5E - 9FA7 FFFD FFFD FFFD FFFD FFFD FFFD 8F46 - 9FAC FFFD 9FAB 9FA6 FFFD 9FA9 FFFD FFFD - 8A88 FFFD 9FA8 9468 FFFD FFFD 97AC FFFD - FFFD 8FF2 90F3 -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 6D59 - srcEnd = 6D79 - mappingOffset = 1D1F - Mapping = - 9FB4 9FB2 FFFD 956C FFFD FFFD FFFD FFFD - FFFD FFFD 9FAF 9FB1 FFFD 8959 FFFD FFFD - 8D5F 9851 FFFD 8A5C FFFD 9582 FFFD FFFD - FFFD FFFD FFFD 9781 FFFD FFFD 8A43 905A - 9FB3 -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = 6D85 - srcEnd = 6D9C - mappingOffset = 1D40 - Mapping = - 9FB8 FFFD FFFD 8FC1 FFFD FFFD FFFD 974F - FFFD 9FB5 FFFD FFFD FFFD FFFD 9FB0 FFFD - 9FB6 FFFD FFFD FFFD 97DC FFFD 9393 93C0 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 6DAF - srcEnd = 6EDE - mappingOffset = 1D58 - Mapping = - 8A55 FFFD FFFD 8974 FFFD FFFD 9FBC FFFD - FFFD 9FBF FFFD FFFD FFFD 97C1 FFFD FFFD - FFFD 9784 FFFD FFFD FFFD FFFD 9FC6 9FC0 - 9FBD FFFD FFFD FFFD 97D2 9FC3 FFFD FFFD - FFFD FFFD 8F69 9FC5 FFFD FFFD 9FCA FFFD - FFFD 9391 9FC8 FFFD FFFD FFFD FFFD 9FC2 - FFFD FFFD 9257 FFFD FFFD 9FC9 FFFD 9FBE - FFFD 9FC4 FFFD 9FCB 88FA 9FC1 FFFD 9FCC - FFFD FFFD 905B FFFD 8F7E FFFD 95A3 FFFD - 8DAC FFFD 9FB9 9FC7 9359 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 90B4 FFFD - 8A89 8DCF 8FC2 9FBB 8F61 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8C6B FFFD 9FBA FFFD - FFFD FFFD 9FD0 8F8D 8CB8 FFFD 9FDF FFFD - 9FD9 8B94 936E FFFD 9FD4 9FDD 88AD 8951 - FFFD FFFD 89B7 FFFD 9FD6 91AA 9FCD 9FCF - 8D60 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 9FE0 FFFD 9FDB FFFD FFFD FFFD 9FD3 - FFFD FFFD FFFD FFFD 9FDA FFFD FFFD FFFD - FFFD FFFD FFFD 96A9 FFFD FFFD 9FD8 9FDC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8CCE - FFFD 8FC3 FFFD FFFD 9258 FFFD FFFD FFFD - 9FD2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 974E FFFD FFFD FFFD 9FD5 FFFD FFFD 9FCE - 9392 FFFD FFFD 9FD1 FFFD FFFD FFFD 9FD7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9870 - 8EBC 969E FFFD 9FE1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 94AC FFFD FFFD - 9FED 8CB9 FFFD FFFD FFFD FFFD FFFD 8F80 - FFFD 9FE3 FFFD FFFD FFFD 97AD 8D61 FFFD - 9FF0 FFFD FFFD 88EC FFFD FFFD 9FEE FFFD - FFFD FFFD FFFD 9FE2 FFFD FFFD FFFD FFFD - 9FE8 FFFD FFFD 9FEA FFFD FFFD FFFD 976E - 9FE5 FFFD FFFD 934D FFFD FFFD 9FE7 FFFD - FFFD FFFD FFFD 9FEF FFFD 9FE9 96C5 FFFD - FFFD FFFD 9FE4 FFFD 8EA0 9FFC FFFD FFFD - FFFD FFFD 8A8A FFFD 9FE6 9FEB 9FEC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 91EA 91D8 -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = 6EEC - srcEnd = 6F45 - mappingOffset = 1E88 - Mapping = - 9FF4 FFFD FFFD 9FFA FFFD FFFD 9FF8 FFFD - 9348 FFFD FFFD E042 9FF5 FFFD FFFD FFFD - FFFD FFFD 9FF6 9FDE FFFD 8B99 9559 FFFD - FFFD FFFD 8EBD FFFD FFFD 8D97 FFFD FFFD - FFFD FFFD FFFD 9852 FFFD 9FF2 FFFD E041 - 8989 9186 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9499 FFFD 8ABF 97F8 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 969F - 92D0 FFFD FFFD FFFD FFFD 9FF9 9FFB FFFD - FFFD FFFD FFFD FFFD 9151 FFFD FFFD FFFD - FFFD FFFD E040 9FF7 FFFD 9FF1 FFFD FFFD - FFFD 8AC1 -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 6F54 - srcEnd = 6FC6 - mappingOffset = 1EE2 - Mapping = - 8C89 FFFD FFFD FFFD E04E FFFD FFFD E049 - 90F6 FFFD FFFD 8A83 FFFD FFFD FFFD FFFD - 8F81 FFFD E052 FFFD FFFD FFFD FFFD FFFD - FFFD E04B 92AA E048 92D7 FFFD FFFD FFFD - E06B FFFD FFFD FFFD E045 FFFD E044 FFFD - E04D FFFD FFFD FFFD E047 E046 E04C FFFD - 909F FFFD E043 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E04F FFFD FFFD E050 FFFD FFFD - FFFD FFFD FFFD 8AC0 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E055 FFFD E054 - E056 FFFD FFFD FFFD FFFD FFFD E059 FFFD - FFFD FFFD FFFD FFFD FFFD 9362 FFFD E053 - FFFD FFFD FFFD FFFD FFFD E057 FFFD FFFD - FFFD FFFD FFFD FFFD 8C83 91F7 E051 945A - FFFD FFFD E058 -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = 6FD4 - srcEnd = 7032 - mappingOffset = 1F55 - Mapping = - E05D E05B FFFD FFFD E05E FFFD FFFD E061 - FFFD FFFD FFFD E05A 8D8A 9447 FFFD FFFD - 9FB7 FFFD FFFD FFFD FFFD FFFD FFFD 9794 - E05C FFFD E060 91F3 FFFD E05F FFFD E04A - FFFD FFFD E889 FFFD FFFD FFFD E064 FFFD - FFFD FFFD E068 FFFD FFFD E066 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E062 FFFD E063 - FFFD FFFD FFFD E067 FFFD E065 FFFD FFFD - FFFD 956D FFFD FFFD E06D FFFD E06A E069 - FFFD E06C 93D2 E06E FFFD FFFD FFFD FFFD - FFFD FFFD 9295 91EB FFFD FFFD FFFD FFFD - 90A3 FFFD FFFD FFFD E06F FFFD E071 -End of Item 006D - -Begin of Item 006E - Format 2 - srcBegin = 703E - destBegin = E070 -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = 704C - srcEnd = 707D - mappingOffset = 1FB4 - Mapping = - 9FF3 FFFD FFFD FFFD FFFD E072 FFFD FFFD - FFFD FFFD FFFD FFFD 93E5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E073 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 89CE - FFFD FFFD FFFD 9394 8A44 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8B84 FFFD FFFD FFFD - 8EDC 8DD0 -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 7089 - srcEnd = 7099 - mappingOffset = 1FE6 - Mapping = - 9846 9086 FFFD FFFD FFFD 898A FFFD FFFD - FFFD E075 FFFD FFFD FFFD FFFD FFFD FFFD - E074 -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 70AC - srcEnd = 70BA - mappingOffset = 1FF7 - Mapping = - E078 9259 E07B E076 FFFD FFFD FFFD E07A - FFFD FFFD FFFD FFFD E079 935F 88D7 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 70C8 - srcEnd = 70DF - mappingOffset = 2006 - Mapping = - 97F3 FFFD FFFD E07D FFFD FFFD FFFD 8947 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E080 FFFD FFFD FFFD E07E FFFD E07C -End of Item 0072 - -Begin of Item 0073 - Format 1 - srcBegin = 70F1 - srcEnd = 70FD - mappingOffset = 201E - Mapping = - E077 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9642 FFFD FFFD FFFD E082 -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = 7109 - srcEnd = 7126 - mappingOffset = 202B - Mapping = - E081 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 898B FFFD FFFD FFFD FFFD - E084 95B0 FFFD E083 FFFD FFFD FFFD FFFD - 96B3 FFFD FFFD FFFD FFFD 8FC5 -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 7136 - srcEnd = 713C - mappingOffset = 2049 - Mapping = - 9152 FFFD FFFD FFFD FFFD FFFD 8FC4 -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = 7149 - srcEnd = 716E - mappingOffset = 2050 - Mapping = - 97F9 FFFD FFFD E08A FFFD 90F7 FFFD FFFD - FFFD FFFD FFFD FFFD E086 E08B FFFD FFFD - 898C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E089 FFFD 9481 E085 E088 8FC6 FFFD - 94CF FFFD FFFD E08C FFFD 8ECF -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = 717D - srcEnd = 721B - mappingOffset = 2076 - Mapping = - 90F8 FFFD FFFD FFFD FFFD FFFD FFFD E08F - FFFD FFFD FFFD E087 FFFD 8C46 FFFD FFFD - FFFD FFFD E08D FFFD FFFD FFFD FFFD 976F - E090 FFFD FFFD FFFD EAA4 FFFD FFFD FFFD - FFFD FFFD 8F6E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E091 FFFD FFFD FFFD E092 - FFFD FFFD FFFD FFFD 944D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E094 FFFD FFFD FFFD - FFFD E095 FFFD FFFD FFFD FFFD 9452 FFFD - FFFD FFFD FFFD 9395 E097 FFFD FFFD FFFD - FFFD E099 FFFD 97D3 FFFD E096 FFFD E098 - 898D FFFD E093 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9A7A E09A FFFD FFFD FFFD FFFD - 9187 8E57 E09C FFFD FFFD FFFD FFFD E09B - 9043 99D7 FFFD FFFD FFFD FFFD FFFD FFFD - E09D FFFD FFFD FFFD E09F FFFD E08E E09E - FFFD FFFD E0A0 FFFD FFFD FFFD FFFD FFFD - FFFD 949A FFFD FFFD FFFD FFFD FFFD FFFD - E0A1 FFFD FFFD E0A2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E0A3 -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 7228 - srcEnd = 72FD - mappingOffset = 2115 - Mapping = - E0A4 FFFD 92DC FFFD E0A6 E0A5 FFFD FFFD - E0A7 FFFD E0A8 FFFD FFFD 8EDD 9583 FFFD - FFFD FFFD 96EA E0A9 E0AA 9175 8EA2 E0AB - E0AC FFFD FFFD FFFD FFFD FFFD E0AD 95D0 - 94C5 FFFD FFFD E0AE 9476 FFFD FFFD FFFD - FFFD FFFD 92AB FFFD FFFD FFFD FFFD FFFD - E0AF 89E5 FFFD 8B8D FFFD 96C4 FFFD 96B4 - FFFD 89B2 9853 FFFD FFFD FFFD FFFD 9671 - FFFD 95A8 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 90B5 FFFD E0B0 FFFD FFFD FFFD - FFFD 93C1 FFFD FFFD FFFD 8CA1 E0B1 FFFD - 8DD2 E0B3 E0B2 FFFD FFFD FFFD FFFD E0B4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E0B5 FFFD FFFD FFFD E0B6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8B5D FFFD E0B7 FFFD FFFD FFFD FFFD E0B8 - FFFD FFFD FFFD FFFD 8CA2 FFFD FFFD 94C6 - FFFD FFFD E0BA FFFD FFFD FFFD 8FF3 FFFD - FFFD E0B9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8BB6 E0BB E0BD FFFD E0BC FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E0BE FFFD - 8CCF FFFD E0BF FFFD FFFD FFFD FFFD 8BE7 - FFFD 915F FFFD 8D9D FFFD FFFD FFFD FFFD - E0C1 E0C2 E0C0 FFFD FFFD FFFD FFFD FFFD - FFFD 8EEB FFFD FFFD 93C6 8BB7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E0C4 - 924B E0C3 FFFD FFFD 9854 9482 -End of Item 0078 - -Begin of Item 0079 - Format 2 - srcBegin = 730A - destBegin = E0C7 -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = 7316 - srcEnd = 7357 - mappingOffset = 21EB - Mapping = - E0C9 E0C6 FFFD FFFD FFFD 96D2 E0C8 E0CA - FFFD 97C2 FFFD FFFD FFFD FFFD FFFD E0CE - FFFD FFFD FFFD E0CD 9296 944C FFFD FFFD - 8CA3 E0CC FFFD FFFD FFFD FFFD E0CB FFFD - 9750 9751 FFFD FFFD FFFD FFFD FFFD FFFD - E0CF 898E FFFD FFFD FFFD FFFD 8D96 8E82 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E0D0 E0D1 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E0D3 -End of Item 007A - -Begin of Item 007B - Format 1 - srcBegin = 7363 - srcEnd = 7396 - mappingOffset = 222D - Mapping = - 8F62 FFFD FFFD FFFD FFFD E0D5 FFFD E0D4 - FFFD FFFD FFFD FFFD FFFD E0D6 FFFD 8A6C - FFFD FFFD E0D8 FFFD FFFD E0D7 FFFD E0DA - E0D9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8CBA FFFD FFFD 97A6 FFFD 8BCA FFFD - 89A4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8BE8 -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = 73A9 - srcEnd = 73CE - mappingOffset = 2261 - Mapping = - 8ADF FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 97E6 E0DC FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E0DE FFFD FFFD FFFD FFFD E0DF - FFFD 89CF FFFD FFFD FFFD FFFD FFFD E0DB - FFFD 8E58 FFFD FFFD 92BF E0DD -End of Item 007C - -Begin of Item 007D - Format 1 - srcBegin = 73DE - srcEnd = 7409 - mappingOffset = 2287 - Mapping = - E0E2 FFFD 8EEC FFFD FFFD FFFD FFFD E0E0 - FFFD FFFD FFFD FFFD 8C5D FFFD FFFD 94C7 - E0E1 FFFD FFFD E0FC FFFD FFFD FFFD FFFD - FFFD FFFD E0E7 FFFD FFFD FFFD FFFD FFFD - 8CBB FFFD FFFD FFFD FFFD 8B85 FFFD E0E4 - 979D FFFD FFFD 97AE -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = 7422 - srcEnd = 7425 - mappingOffset = 22B3 - Mapping = - 91F4 FFFD FFFD E0E6 -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = 7432 - srcEnd = 7441 - mappingOffset = 22B7 - Mapping = - E0E8 97D4 8BD5 94FA 9469 FFFD FFFD FFFD - E0E9 FFFD FFFD FFFD FFFD E0EB FFFD E0EE -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = 7455 - srcEnd = 748B - mappingOffset = 22C7 - Mapping = - E0EA FFFD FFFD FFFD E0ED 8CE8 896C E0EF - FFFD 9090 E0EC 97DA FFFD FFFD E0F2 EAA2 - FFFD FFFD FFFD FFFD E0F0 E0F3 FFFD FFFD - FFFD FFFD E0E5 E0F1 FFFD FFFD 8DBA FFFD - FFFD E0F4 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E0F5 FFFD FFFD FFFD FFFD 979E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E0F6 -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = 749E - srcEnd = 74B0 - mappingOffset = 22FE - Mapping = - E0F7 FFFD FFFD FFFD E0E3 FFFD FFFD FFFD - FFFD E0F8 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8AC2 -End of Item 0081 - -Begin of Item 0082 - Format 2 - srcBegin = 74BD - destBegin = 8EA3 -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = 74CA - srcEnd = 760D - mappingOffset = 2311 - Mapping = - E0F9 FFFD FFFD FFFD FFFD E0FA FFFD FFFD - FFFD FFFD E0FB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 895A FFFD FFFD FFFD E140 FFFD - 955A E141 FFFD FFFD 8AA2 E142 FFFD E143 - FFFD FFFD FFFD FFFD E144 FFFD E146 E147 - E145 FFFD FFFD FFFD 9572 E149 E148 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E14B E14A E14C FFFD FFFD FFFD FFFD - FFFD FFFD E14D E14F E14E FFFD FFFD 8D99 - FFFD E151 FFFD E150 FFFD FFFD 8AC3 FFFD - 9072 FFFD 935B FFFD E152 90B6 FFFD FFFD - FFFD 8E59 FFFD 8999 E153 FFFD 9770 FFFD - FFFD 95E1 E154 FFFD FFFD FFFD 9363 9752 - 8D62 905C FFFD FFFD FFFD 926A 99B2 FFFD - 92AC 89E6 E155 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E156 FFFD E15B FFFD FFFD E159 - E158 9DC0 8A45 E157 FFFD 88D8 FFFD 94A8 - FFFD FFFD 94C8 FFFD FFFD FFFD FFFD 97AF - E15C E15A 927B 90A4 FFFD FFFD 94A9 FFFD - 954C FFFD E15E 97AA 8C6C E15F FFFD E15D - 94D4 E160 FFFD E161 FFFD FFFD 88D9 FFFD - FFFD 8FF4 E166 FFFD E163 93EB E162 FFFD - FFFD FFFD FFFD FFFD FFFD 8B45 FFFD FFFD - E169 FFFD FFFD FFFD E164 E165 FFFD E168 - E167 9544 FFFD FFFD 9161 9160 FFFD 8B5E - FFFD FFFD E16A FFFD FFFD FFFD FFFD FFFD - E16B FFFD FFFD E16C FFFD FFFD FFFD FFFD - FFFD E16E FFFD E16D FFFD FFFD FFFD FFFD - FFFD 8975 FFFD FFFD FFFD FFFD FFFD E176 - 94E6 E170 FFFD E172 FFFD FFFD E174 905D - FFFD FFFD E175 E173 8EBE FFFD FFFD FFFD - E16F E171 FFFD 9561 FFFD 8FC7 FFFD FFFD - E178 FFFD FFFD E177 FFFD FFFD FFFD FFFD - E179 FFFD 8EA4 8DAD FFFD FFFD 9397 E17A - FFFD 92C9 FFFD FFFD E17C FFFD FFFD FFFD - 979F E17B FFFD FFFD FFFD FFFD FFFD 9189 - FFFD FFFD FFFD FFFD FFFD FFFD E182 FFFD - E184 E185 9273 FFFD FFFD FFFD FFFD FFFD - E183 FFFD E180 FFFD E17D E17E FFFD E181 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E188 - FFFD E186 FFFD E187 -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = 761F - srcEnd = 769A - mappingOffset = 2455 - Mapping = - E189 E18B E18C E18D FFFD E18E FFFD FFFD - E18A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E190 FFFD FFFD FFFD E18F FFFD FFFD - FFFD FFFD FFFD FFFD E191 FFFD FFFD FFFD - FFFD FFFD FFFD 97C3 FFFD FFFD FFFD E194 - E192 E193 FFFD FFFD FFFD 8AE0 FFFD FFFD - FFFD FFFD FFFD 96FC FFFD FFFD FFFD 95C8 - FFFD E196 FFFD FFFD FFFD E195 FFFD FFFD - FFFD FFFD E197 E198 FFFD FFFD FFFD FFFD - E19C E199 E19A E19B FFFD E19D FFFD FFFD - FFFD E19E FFFD E19F FFFD FFFD FFFD E1A0 - FFFD E1A1 FFFD 94AD 936F E1A2 9492 9553 - FFFD E1A3 FFFD FFFD E1A4 9349 FFFD 8A46 - 8D63 E1A5 FFFD FFFD E1A6 FFFD FFFD E1A7 - FFFD 8E48 FFFD FFFD E1A9 FFFD FFFD E1A8 - FFFD FFFD E1AA E1AB -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = 76AE - srcEnd = 770C - mappingOffset = 24D1 - Mapping = - 94E7 FFFD E1AC FFFD FFFD FFFD E1AD FFFD - FFFD EA89 E1AE E1AF E1B0 FFFD FFFD FFFD - FFFD 8E4D FFFD FFFD E1B1 9475 FFFD FFFD - 967E FFFD 896D FFFD 8976 FFFD FFFD E1B2 - FFFD FFFD FFFD FFFD E1B4 FFFD FFFD FFFD - E1B3 9390 FFFD FFFD FFFD 90B7 9F58 FFFD - E1B5 96BF FFFD E1B6 FFFD 8AC4 94D5 E1B7 - FFFD E1B8 FFFD FFFD E1B9 FFFD FFFD FFFD - 96DA FFFD FFFD FFFD 96D3 FFFD 92BC FFFD - FFFD FFFD 918A FFFD FFFD E1BB FFFD FFFD - 8F82 FFFD FFFD 8FC8 FFFD FFFD E1BE FFFD - FFFD E1BD E1BC 94FB FFFD 8AC5 8CA7 -End of Item 0085 - -Begin of Item 0086 - Format 1 - srcBegin = 771B - srcEnd = 7729 - mappingOffset = 2530 - Mapping = - E1C4 FFFD FFFD E1C1 905E 96B0 FFFD FFFD - FFFD E1C0 E1C2 E1C3 FFFD FFFD E1BF -End of Item 0086 - -Begin of Item 0087 - Format 1 - srcBegin = 7737 - srcEnd = 7747 - mappingOffset = 253F - Mapping = - E1C5 E1C6 FFFD 92AD FFFD 8AE1 FFFD FFFD - FFFD 9285 FFFD FFFD FFFD FFFD FFFD FFFD - E1C7 -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = 775A - srcEnd = 776B - mappingOffset = 2550 - Mapping = - E1C8 E1CB FFFD FFFD FFFD FFFD FFFD 9087 - FFFD 93C2 FFFD E1CC 9672 FFFD E1C9 FFFD - FFFD E1CA -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = 7779 - srcEnd = 777F - mappingOffset = 2562 - Mapping = - E1CF FFFD FFFD FFFD FFFD E1CE E1CD -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = 778B - srcEnd = 7791 - mappingOffset = 2569 - Mapping = - E1D1 FFFD FFFD E1D0 FFFD FFFD E1D2 -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = 779E - srcEnd = 7845 - mappingOffset = 2570 - Mapping = - E1D4 FFFD E1D3 FFFD FFFD FFFD FFFD 95CB - FFFD FFFD FFFD FFFD FFFD FFFD 8F75 97C4 - FFFD FFFD E1D5 FFFD FFFD 93B5 FFFD FFFD - E1D6 FFFD FFFD E1D7 FFFD E1DB E1D9 E1DA - FFFD E1D8 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E1DC FFFD FFFD FFFD FFFD FFFD E1DD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E1DE FFFD FFFD E1DF 96B5 E1E0 FFFD - FFFD FFFD FFFD FFFD 96EE E1E1 FFFD 926D - FFFD 948A FFFD 8BE9 FFFD FFFD FFFD 925A - E1E2 8BB8 FFFD FFFD FFFD 90CE FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E1E3 FFFD - FFFD FFFD FFFD FFFD 8DBB FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E1E4 FFFD - FFFD FFFD FFFD FFFD E1E5 FFFD 8CA4 8DD3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E1E7 FFFD FFFD FFFD FFFD 9375 - 8DD4 8B6D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9643 FFFD 946A FFFD - FFFD FFFD FFFD FFFD 9376 FFFD FFFD FFFD - FFFD 8D7B FFFD FFFD FFFD FFFD FFFD E1E9 -End of Item 008B - -Begin of Item 008C - Format 2 - srcBegin = 785D - destBegin = 8FC9 -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = 786B - srcEnd = 78DA - mappingOffset = 2618 - Mapping = - 97B0 8D64 FFFD FFFD 8CA5 FFFD FFFD 94A1 - FFFD E1EB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E1ED FFFD FFFD FFFD FFFD 8CE9 FFFD - FFFD FFFD FFFD E1EC 92F4 FFFD FFFD FFFD - FFFD E1EF 8A56 E1EA FFFD FFFD 94E8 FFFD - 894F FFFD 8DEA FFFD 9871 FFFD FFFD E1EE - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E1F0 FFFD FFFD FFFD 95C9 FFFD 90D7 E1F2 - FFFD FFFD FFFD FFFD E1F3 FFFD FFFD FFFD - FFFD FFFD E1F1 FFFD FFFD FFFD FFFD 8A6D - FFFD E1F9 FFFD E1F8 FFFD FFFD 8EA5 FFFD - FFFD FFFD E1FA E1F5 FFFD FFFD FFFD E1FB - E1F6 FFFD FFFD FFFD FFFD 94D6 E1F4 FFFD - FFFD E1F7 FFFD FFFD FFFD FFFD FFFD E241 -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = 78E7 - srcEnd = 7919 - mappingOffset = 2688 - Mapping = - E240 9681 FFFD FFFD FFFD E1FC FFFD FFFD - 88E9 FFFD FFFD FFFD FFFD E243 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E242 FFFD - FFFD FFFD 8FCA FFFD FFFD FFFD FFFD FFFD - E244 FFFD FFFD FFFD FFFD FFFD FFFD 9162 - FFFD FFFD E246 E245 FFFD FFFD FFFD FFFD - FFFD FFFD E247 -End of Item 008E - -Begin of Item 008F - Format 1 - srcBegin = 7926 - srcEnd = 792C - mappingOffset = 26BB - Mapping = - E1E6 FFFD FFFD FFFD E1E8 E249 E248 -End of Item 008F - -Begin of Item 0090 - Format 1 - srcBegin = 793A - srcEnd = 798F - mappingOffset = 26C2 - Mapping = - 8EA6 FFFD 97E7 FFFD 8ED0 FFFD E24A 8C56 - FFFD FFFD FFFD FFFD FFFD 8B5F 8B46 8E83 - FFFD FFFD FFFD FFFD FFFD FFFD 9753 FFFD - FFFD E250 FFFD E24F 9163 E24C FFFD FFFD - E24E FFFD FFFD 8F6A 905F E24D E24B FFFD - 9449 FFFD FFFD 8FCB FFFD FFFD 955B FFFD - FFFD FFFD FFFD 8DD5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9398 FFFD FFFD - E251 FFFD FFFD FFFD FFFD E252 E268 8BD6 - FFFD FFFD 985C 9154 FFFD FFFD FFFD FFFD - E253 FFFD FFFD 89D0 92F5 959F -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = 799D - srcEnd = 7A20 - mappingOffset = 2718 - Mapping = - E254 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8B9A E255 FFFD FFFD E257 FFFD FFFD - FFFD E258 FFFD 9448 FFFD FFFD E259 FFFD - FFFD FFFD FFFD FFFD E25A E25B FFFD FFFD - 8BD7 89D1 93C3 8F47 8E84 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E25C FFFD 8F48 FFFD - FFFD FFFD FFFD FFFD 89C8 9562 FFFD FFFD - E25D FFFD FFFD 94E9 FFFD FFFD FFFD FFFD - FFFD FFFD 9164 FFFD E260 FFFD E261 9489 - FFFD 9060 E25E FFFD 9281 FFFD FFFD E25F - FFFD FFFD FFFD 8FCC FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 88DA FFFD - FFFD FFFD FFFD 8B48 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E262 FFFD FFFD 92F6 FFFD - E263 90C5 FFFD FFFD FFFD FFFD FFFD 96AB - FFFD FFFD 9542 E264 E265 9274 FFFD 97C5 - FFFD FFFD E267 E266 -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = 7A2E - srcEnd = 7B39 - mappingOffset = 279C - Mapping = - 8EED FFFD FFFD E269 88EE FFFD FFFD FFFD - FFFD E26C FFFD FFFD FFFD E26A 89D2 8C6D - E26B 8D65 8D92 FFFD 95E4 E26D FFFD FFFD - 9673 FFFD FFFD E26F FFFD FFFD FFFD 90CF - 896E 89B8 88AA FFFD FFFD FFFD FFFD FFFD - FFFD E26E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E270 E271 8FF5 FFFD FFFD - FFFD FFFD FFFD E272 FFFD 8A6E FFFD FFFD - FFFD FFFD E274 FFFD FFFD FFFD 8C8A FFFD - 8B86 FFFD FFFD E275 8BF3 FFFD FFFD E276 - FFFD 90FA FFFD 93CB FFFD 90DE 8DF3 FFFD - FFFD FFFD E277 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9282 918B FFFD E279 - E27B E278 E27A FFFD FFFD FFFD FFFD FFFD - FFFD 8C41 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E27C 8C45 FFFD FFFD FFFD - 8B87 9771 E27E FFFD FFFD FFFD FFFD FFFD - E280 FFFD FFFD FFFD 894D FFFD FFFD FFFD - FFFD E283 FFFD FFFD FFFD 8A96 E282 E281 - FFFD E285 E27D FFFD E286 97A7 FFFD E287 - FFFD E288 FFFD FFFD 9AF2 E28A FFFD E289 - FFFD FFFD FFFD E28B E28C FFFD 97B3 E28D - FFFD E8ED 8FCD E28E E28F 8F76 FFFD 93B6 - E290 FFFD FFFD FFFD 9247 FFFD FFFD E291 - FFFD 925B E292 FFFD FFFD FFFD FFFD FFFD - 8BA3 FFFD 995E 927C 8EB1 FFFD FFFD FFFD - FFFD 8AC6 FFFD FFFD E293 FFFD E2A0 FFFD - E296 FFFD 8B88 FFFD E295 E2A2 FFFD FFFD - FFFD E294 FFFD 8FCE FFFD FFFD FFFD FFFD - FFFD FFFD E298 E299 FFFD 934A FFFD FFFD - E29A FFFD 8A7D FFFD FFFD FFFD FFFD 9079 - 9584 FFFD E29C FFFD FFFD FFFD 91E6 FFFD - FFFD FFFD FFFD FFFD FFFD E297 FFFD E29B - E29D FFFD FFFD 8DF9 -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = 7B45 - srcEnd = 7B7A - mappingOffset = 28A8 - Mapping = - E2A4 954D FFFD 94A4 9399 FFFD 8BD8 E2A3 - E2A1 FFFD 94B3 E29E 927D 939B FFFD 939A - FFFD 8DF4 FFFD FFFD FFFD FFFD FFFD FFFD - E2B6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E2A6 FFFD E2A8 FFFD FFFD FFFD FFFD E2AB - FFFD E2AC FFFD E2A9 E2AA FFFD FFFD E2A7 - E2A5 FFFD FFFD FFFD FFFD E29F -End of Item 0093 - -Begin of Item 0094 - Format 1 - srcBegin = 7B86 - srcEnd = 7BCF - mappingOffset = 28DE - Mapping = - 95CD 89D3 FFFD FFFD FFFD E2B3 FFFD E2B0 - FFFD E2B5 FFFD FFFD E2B4 FFFD 9493 96A5 - FFFD 8E5A E2AE E2B7 E2B2 FFFD E2B1 E2AD - FFFD E2AF FFFD 8AC7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 925C FFFD FFFD 90FB - FFFD FFFD FFFD 94A0 FFFD FFFD E2BC FFFD - FFFD FFFD 94A2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 90DF E2B9 FFFD FFFD 94CD FFFD - E2BD 95D1 FFFD 927A FFFD E2B8 E2BA FFFD - FFFD E2BB -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = 7BDD - srcEnd = 7C2B - mappingOffset = 2928 - Mapping = - E2BE FFFD FFFD 8EC2 FFFD FFFD FFFD 93C4 - E2C3 E2C2 FFFD FFFD E2BF FFFD FFFD FFFD - 9855 FFFD FFFD FFFD FFFD FFFD E2C8 FFFD - FFFD E2CC E2C9 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E2C5 FFFD FFFD FFFD FFFD - FFFD FFFD E2C6 FFFD FFFD FFFD FFFD FFFD - E2CB FFFD FFFD FFFD E2C0 99D3 E2C7 E2C1 - FFFD FFFD E2CA FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E2D0 FFFD 8AC8 FFFD E2CD FFFD - FFFD FFFD E2CE FFFD FFFD E2CF E2D2 -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = 7C37 - srcEnd = 7D7D - mappingOffset = 2977 - Mapping = - E2D1 94F4 FFFD FFFD FFFD FFFD E2D3 97FA - 95EB E2D8 FFFD FFFD E2D5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E2D4 90D0 FFFD - E2D7 E2D9 FFFD FFFD FFFD E2D6 FFFD E2DD - FFFD E2DA FFFD FFFD FFFD FFFD FFFD FFFD - E2DB E2C4 FFFD FFFD FFFD E2DC E2DE FFFD - FFFD FFFD FFFD FFFD FFFD E2DF FFFD FFFD - FFFD FFFD FFFD FFFD 95C4 FFFD E2E0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 96E0 - FFFD FFFD 8BCC 8C48 E2E1 FFFD FFFD FFFD - FFFD FFFD 95B2 FFFD 9088 FFFD 96AE FFFD - FFFD E2E2 FFFD 97B1 FFFD FFFD 9494 FFFD - 9165 9453 FFFD FFFD 8F6C FFFD FFFD FFFD - 88BE FFFD E2E7 E2E5 FFFD E2E3 8A9F FFFD - 8FCF E2E8 FFFD FFFD E2E6 FFFD E2E4 E2EC - FFFD FFFD E2EB E2EA E2E9 FFFD FFFD FFFD - FFFD FFFD E2ED FFFD FFFD FFFD E2EE 90B8 - FFFD E2EF FFFD E2F1 FFFD FFFD E2F0 FFFD - FFFD FFFD FFFD 8CD0 FFFD FFFD FFFD 9157 - FFFD FFFD FFFD E2F3 FFFD FFFD FFFD 939C - FFFD E2F2 FFFD FFFD FFFD E2F4 FFFD 95B3 - 918C 8D66 FFFD E2F5 FFFD FFFD FFFD FFFD - 97C6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E2F7 FFFD FFFD E2F8 FFFD E2F9 FFFD E2FA - FFFD 8E85 FFFD E2FB 8C6E FFFD FFFD 8B8A - FFFD 8B49 FFFD E340 FFFD 96F1 8D67 E2FC - FFFD FFFD FFFD E343 96E4 FFFD 945B FFFD - FFFD 9552 FFFD FFFD FFFD 8F83 E342 FFFD - 8ED1 8D68 8E86 8B89 95B4 E341 FFFD FFFD - FFFD 9166 9661 8DF5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8E87 92DB FFFD E346 - 97DD 8DD7 FFFD E347 9061 FFFD E349 FFFD - FFFD FFFD 8FD0 8DAE FFFD FFFD FFFD FFFD - E348 FFFD FFFD 8F49 8CBC 9167 E344 E34A - FFFD FFFD FFFD FFFD E345 8C6F FFFD E34D - E351 8C8B FFFD FFFD FFFD FFFD FFFD E34C - FFFD FFFD FFFD FFFD E355 FFFD FFFD 8D69 - FFFD FFFD 978D 88BA E352 FFFD FFFD 8B8B - FFFD E34F FFFD FFFD FFFD FFFD FFFD E350 - FFFD FFFD 939D E34E E34B FFFD 8A47 90E2 - FFFD FFFD 8CA6 FFFD FFFD FFFD E357 -End of Item 0096 - -Begin of Item 0097 - Format 1 - srcBegin = 7D89 - srcEnd = 7E9C - mappingOffset = 2ABE - Mapping = - E354 FFFD FFFD FFFD FFFD FFFD E356 FFFD - FFFD FFFD E353 FFFD FFFD FFFD FFFD FFFD - 8C70 91B1 E358 918E FFFD FFFD E365 FFFD - FFFD E361 E35B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E35F 8EF8 88DB E35A E362 E366 - 8D6A 96D4 FFFD 92D4 E35C FFFD FFFD E364 - FFFD E359 925D FFFD E35E 88BB 96C8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E35D FFFD - FFFD 8BD9 94EA FFFD FFFD FFFD 918D FFFD - 97CE 8F8F FFFD FFFD E38E FFFD FFFD E367 - FFFD 90FC FFFD E363 E368 E36A FFFD 92F7 - E36D FFFD FFFD E369 FFFD FFFD FFFD 95D2 - 8AC9 FFFD FFFD 96C9 FFFD FFFD 88DC FFFD - FFFD E36C FFFD 97FB FFFD FFFD FFFD FFFD - FFFD FFFD E36B FFFD FFFD FFFD FFFD FFFD - 898F FFFD FFFD 93EA E36E FFFD FFFD FFFD - E375 E36F E376 FFFD FFFD FFFD FFFD FFFD - FFFD E372 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 949B FFFD FFFD 8EC8 E374 FFFD - E371 E377 E370 FFFD FFFD 8F63 FFFD FFFD - FFFD FFFD 9644 FFFD FFFD 8F6B FFFD FFFD - E373 E380 FFFD FFFD E37B FFFD E37E FFFD - E37C E381 E37A FFFD E360 90D1 FFFD FFFD - 94C9 FFFD E37D FFFD FFFD E378 FFFD FFFD - FFFD 9140 8C71 FFFD 8F4A FFFD FFFD FFFD - FFFD FFFD FFFD 9044 9155 E384 FFFD FFFD - E386 E387 FFFD FFFD E383 E385 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E379 E382 FFFD - E38A E389 FFFD FFFD 969A FFFD FFFD 8C4A - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E388 FFFD E38C E38B E38F FFFD E391 FFFD - FFFD 8E5B E38D FFFD FFFD FFFD FFFD E392 - E393 FFFD FFFD E394 FFFD E39A 935A E396 - FFFD E395 E397 E398 FFFD E399 FFFD FFFD - FFFD FFFD E39B E39C -End of Item 0097 - -Begin of Item 0098 - Format 1 - srcBegin = 7F36 - srcEnd = 810A - mappingOffset = 2BD2 - Mapping = - 8ACA FFFD E39D FFFD E39E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E39F - FFFD FFFD FFFD FFFD FFFD FFFD E3A0 E3A1 - E3A2 FFFD E3A3 E3A4 FFFD FFFD E3A6 E3A5 - FFFD FFFD E3A7 FFFD FFFD FFFD FFFD FFFD - FFFD E3A8 E3A9 FFFD FFFD FFFD FFFD FFFD - FFFD E3AC E3AA E3AB 8DDF 8C72 FFFD FFFD - 9275 FFFD 94B1 FFFD 8F90 FFFD FFFD 946C - FFFD 94EB E3AD 9CEB FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E3AE E3B0 FFFD 9785 - E3AF E3B2 E3B1 FFFD 9772 FFFD E3B3 FFFD - 94FC FFFD FFFD FFFD FFFD FFFD E3B4 FFFD - FFFD FFFD FFFD FFFD E3B7 FFFD FFFD E3B6 - E3B5 FFFD FFFD FFFD FFFD E3B8 8C51 FFFD - FFFD FFFD 9141 8B60 FFFD FFFD FFFD FFFD - E3BC E3B9 FFFD FFFD E3BA FFFD FFFD FFFD - E3BD FFFD E3BE E3BB FFFD FFFD FFFD 8948 - FFFD FFFD FFFD 89A5 FFFD FFFD FFFD E3C0 - E3C1 FFFD FFFD FFFD E3C2 FFFD 9782 FFFD - FFFD FFFD FFFD FFFD 8F4B FFFD E3C4 E3C3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9089 E3C5 FFFD FFFD FFFD FFFD - E3C6 FFFD FFFD E3C7 FFFD 8AE3 FFFD FFFD - FFFD FFFD 8ACB FFFD FFFD E3C8 FFFD FFFD - FFFD FFFD FFFD E3C9 FFFD 967C 9783 FFFD - FFFD FFFD 9773 9856 FFFD 8D6C E3CC 8ED2 - E3CB FFFD FFFD FFFD FFFD E3CD 8EA7 FFFD - FFFD FFFD 91CF FFFD E3CE FFFD FFFD 8D6B - FFFD 96D5 E3CF E3D0 FFFD FFFD E3D1 FFFD - FFFD FFFD FFFD E3D2 FFFD FFFD FFFD FFFD - FFFD FFFD E3D3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 8EA8 FFFD FFFD - 96EB FFFD FFFD FFFD FFFD E3D5 FFFD 925E - FFFD E3D4 FFFD FFFD FFFD FFFD FFFD FFFD - E3D7 FFFD FFFD FFFD E3D6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E3D8 FFFD FFFD FFFD - 90B9 FFFD E3D9 FFFD E3DA FFFD FFFD FFFD - 95B7 E3DB FFFD 918F E3DC FFFD FFFD FFFD - FFFD FFFD E3DD FFFD FFFD FFFD FFFD FFFD - FFFD 97FC E3E0 FFFD E3DF E3DE 92AE FFFD - E3E1 9045 FFFD E3E2 FFFD FFFD FFFD E3E3 - 9857 E3E4 FFFD FFFD FFFD FFFD E3E5 E3E7 - E3E6 94A3 FFFD 93F7 FFFD 985D 94A7 FFFD - FFFD FFFD FFFD FFFD FFFD E3E9 FFFD FFFD - 8FD1 FFFD 9549 FFFD E3EA E3E8 FFFD 8ACC - FFFD FFFD FFFD 8CD2 8E88 FFFD FFFD 94EC - FFFD FFFD FFFD 8CA8 9662 FFFD E3ED E3EB - FFFD 8D6D FFFD 8D6E 88E7 FFFD 8DE6 FFFD - FFFD FFFD FFFD FFFD 9478 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 88DD E3F2 FFFD - 925F FFFD FFFD FFFD FFFD FFFD 9477 FFFD - 91D9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E3F4 FFFD FFFD E3F0 E3F3 E3EE FFFD E3F1 - 9645 FFFD FFFD 8CD3 FFFD FFFD 88FB E3EF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E3F6 FFFD E3F7 FFFD FFFD 93B7 FFFD - FFFD FFFD 8BB9 FFFD FFFD FFFD E445 945C - FFFD FFFD FFFD FFFD 8E89 FFFD FFFD 8BBA - 90C6 9865 96AC E3F5 90D2 -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = 811A - srcEnd = 8247 - mappingOffset = 2DA7 - Mapping = - 8B72 E3F8 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E3FA FFFD FFFD FFFD FFFD FFFD E3F9 - FFFD FFFD FFFD FFFD FFFD E3FB FFFD 9245 - FFFD 945D FFFD FFFD FFFD FFFD FFFD 92AF - FFFD FFFD FFFD FFFD E442 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E441 FFFD FFFD FFFD - FFFD E3FC FFFD FFFD 9074 FFFD 9585 E444 - FFFD E443 8D6F 9872 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E454 FFFD FFFD - FFFD FFFD FFFD E448 E449 FFFD FFFD FFFD - FFFD 8EEE FFFD FFFD E447 FFFD 8D98 E446 - FFFD FFFD E44A FFFD FFFD FFFD 92B0 95A0 - 9142 FFFD FFFD FFFD FFFD 91DA E44E FFFD - E44F E44B FFFD FFFD FFFD FFFD E44C FFFD - E44D FFFD FFFD FFFD FFFD 8D70 FFFD FFFD - FFFD E455 FFFD E451 FFFD FFFD FFFD FFFD - 9586 FFFD 968C 9547 FFFD FFFD E450 FFFD - FFFD E453 E452 FFFD FFFD FFFD 9663 E456 - FFFD FFFD FFFD FFFD FFFD FFFD E457 FFFD - FFFD 9156 FFFD E458 FFFD FFFD E45A FFFD - E45E FFFD FFFD E45B E459 945E E45C FFFD - E45D FFFD FFFD FFFD 89B0 FFFD E464 E45F - FFFD FFFD FFFD E460 FFFD FFFD FFFD E461 - FFFD 919F FFFD FFFD FFFD FFFD E463 E462 - E465 FFFD FFFD FFFD FFFD E466 E467 FFFD - FFFD 9062 FFFD 89E7 FFFD E468 97D5 FFFD - 8EA9 FFFD FFFD 8F4C FFFD FFFD FFFD FFFD - FFFD 8E8A 9276 FFFD FFFD FFFD FFFD FFFD - E469 E46A 8950 FFFD E46B FFFD FFFD E46C - E46D FFFD FFFD E46E FFFD E46F 8BBB 9DA8 - E470 FFFD 90E3 E471 8EC9 FFFD E472 FFFD - 98AE FFFD FFFD FFFD E473 95DC 8ADA FFFD - FFFD 9143 8F77 FFFD 9591 8F4D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E474 - 8D71 E475 94CA FFFD E484 FFFD FFFD FFFD - FFFD E477 FFFD 91C7 9495 8CBD E476 9144 - FFFD FFFD FFFD FFFD FFFD FFFD E478 FFFD - FFFD FFFD FFFD FFFD FFFD 92F8 -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = 8258 - srcEnd = 827E - mappingOffset = 2ED5 - Mapping = - E47A E479 E47C FFFD FFFD E47B FFFD E47D - FFFD FFFD E480 FFFD E47E FFFD 8ACD FFFD - E481 FFFD E482 E483 FFFD FFFD 8DAF 97C7 - FFFD E485 9046 FFFD FFFD FFFD 8990 E486 - E487 FFFD FFFD FFFD FFFD FFFD E488 -End of Item 009A - -Begin of Item 009B - Format 1 - srcBegin = 828B - srcEnd = 82C5 - mappingOffset = 2EFC - Mapping = - 88F0 FFFD E489 FFFD FFFD FFFD FFFD E48A - FFFD FFFD FFFD FFFD FFFD FFFD 9587 FFFD - FFFD FFFD 8EC5 FFFD E48C FFFD FFFD FFFD - FFFD FFFD 8A48 88B0 FFFD FFFD FFFD FFFD - E48B E48E 946D FFFD 9063 FFFD 89D4 FFFD - 9646 FFFD FFFD FFFD FFFD 8C7C 8BDA FFFD - E48D FFFD 89E8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8AA1 -End of Item 009B - -Begin of Item 009C - Format 1 - srcBegin = 82D1 - srcEnd = 8358 - mappingOffset = 2F37 - Mapping = - 8991 E492 97E8 91DB FFFD FFFD 9563 FFFD - E49E FFFD 89D5 E49C FFFD E49A E491 FFFD - E48F FFFD E490 FFFD 8EE1 8BEA 9297 FFFD - FFFD FFFD 93CF FFFD FFFD FFFD FFFD FFFD - 8970 FFFD E494 E493 FFFD FFFD FFFD FFFD - E499 E495 E498 FFFD FFFD FFFD FFFD FFFD - FFFD 96CE E497 89D6 8A9D E49B FFFD FFFD - E49D FFFD FFFD FFFD FFFD 8C73 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E4A1 E4AA E4AB - FFFD FFFD FFFD 88A9 FFFD FFFD FFFD FFFD - FFFD FFFD E4B2 FFFD FFFD FFFD FFFD 88EF - FFFD FFFD E4A9 FFFD FFFD FFFD E4A8 FFFD - E4A3 E4A2 FFFD E4A0 E49F 9283 FFFD 91F9 - E4A5 FFFD FFFD FFFD FFFD FFFD FFFD E4A4 - FFFD FFFD FFFD FFFD E4A7 FFFD FFFD FFFD - 9190 8C74 FFFD FFFD FFFD FFFD 8960 E4A6 - FFFD 8D72 FFFD FFFD FFFD FFFD FFFD 9191 -End of Item 009C - -Begin of Item 009D - Format 1 - srcBegin = 8373 - srcEnd = 8413 - mappingOffset = 2FBF - Mapping = - E4B8 FFFD E4B9 FFFD 89D7 FFFD FFFD FFFD - 89AC E4B6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E4AC FFFD E4B4 FFFD E4BB E4B5 - FFFD FFFD FFFD E4B3 FFFD FFFD FFFD FFFD - E496 FFFD FFFD E4B1 FFFD FFFD FFFD E4AD - FFFD FFFD FFFD 8ACE E4AF E4BA FFFD E4B0 - FFFD FFFD FFFD FFFD FFFD E4BC FFFD E4AE - 949C FFFD FFFD FFFD FFFD FFFD 9789 FFFD - FFFD FFFD E4B7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E4CD FFFD FFFD FFFD E4C5 FFFD - FFFD FFFD 909B FFFD FFFD FFFD FFFD 8B65 - FFFD 8BDB FFFD E4C0 FFFD FFFD FFFD FFFD - 89D9 FFFD FFFD 8FD2 FFFD E4C3 FFFD FFFD - FFFD 8DD8 FFFD FFFD 9370 E4C8 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 95EC FFFD - E4BF FFFD FFFD FFFD 89D8 8CD4 9548 E4C9 - FFFD E4BD FFFD FFFD E4C6 FFFD FFFD FFFD - E4D0 FFFD E4C1 FFFD FFFD FFFD FFFD FFFD - E4C2 93B8 FFFD FFFD E4C7 FFFD FFFD FFFD - E4C4 9647 E4CA 88DE FFFD FFFD FFFD FFFD - E4BE -End of Item 009D - -Begin of Item 009E - Format 1 - srcBegin = 8420 - srcEnd = 84A1 - mappingOffset = 3060 - Mapping = - E4CC FFFD E4CB FFFD FFFD FFFD FFFD FFFD - FFFD 948B E4D2 FFFD E4DD FFFD FFFD FFFD - FFFD 8A9E FFFD FFFD FFFD E4E0 FFFD FFFD - E4CE FFFD FFFD FFFD E4D3 978E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E4DC FFFD - FFFD 9774 FFFD FFFD FFFD FFFD 97A8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9298 - FFFD FFFD FFFD 8A8B FFFD FFFD FFFD FFFD - FFFD 9592 E4E2 939F FFFD FFFD 88AF FFFD - FFFD E4DB FFFD E4D7 9192 E4D1 E4D9 E4DE - FFFD 944B FFFD FFFD FFFD 88A8 FFFD E4D6 - FFFD E4DF 9598 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E4DA FFFD E4D5 FFFD FFFD FFFD - FFFD FFFD FFFD 8FD3 FFFD FFFD FFFD FFFD - 8F4E FFFD FFFD FFFD 8EAA FFFD FFFD FFFD - FFFD 96D6 FFFD FFFD 9566 FFFD FFFD E4E5 - FFFD E4EE -End of Item 009E - -Begin of Item 009F - Format 1 - srcBegin = 84AD - srcEnd = 84DA - mappingOffset = 30E2 - Mapping = - E4D8 FFFD FFFD FFFD FFFD 8A97 FFFD FFFD - FFFD FFFD FFFD 8FF6 E4E3 FFFD E4E8 9193 - FFFD FFFD E4E4 FFFD E4EB FFFD FFFD 927E - FFFD E4EC FFFD FFFD 9775 E4E1 8A57 FFFD - E4E7 FFFD FFFD E4EA 96AA FFFD FFFD FFFD - FFFD E4ED FFFD FFFD E4E6 E4E9 -End of Item 009F - -Begin of Item 00A0 - Format 1 - srcBegin = 84EC - srcEnd = 85EA - mappingOffset = 3110 - Mapping = - 9648 FFFD 9840 FFFD FFFD FFFD FFFD FFFD - E4F1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E4F8 FFFD FFFD E4F0 8EC1 FFFD FFFD FFFD - FFFD FFFD E4CF FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 95CC FFFD 96A0 - E4F7 E4F6 FFFD E4F2 E4F3 FFFD 8955 FFFD - FFFD FFFD FFFD E4F5 FFFD E4EF FFFD FFFD - FFFD FFFD 92D3 FFFD FFFD FFFD FFFD FFFD - E4F4 88FC FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 91A0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 95C1 FFFD FFFD E4F9 E540 FFFD 94D7 - FFFD FFFD FFFD FFFD E4FC 8FD4 8EC7 E542 - FFFD FFFD 8BBC FFFD FFFD FFFD FFFD FFFD - FFFD E543 FFFD 9599 E4FB FFFD E4D4 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E4FA - FFFD FFFD FFFD FFFD 986E 93A0 9593 FFFD - FFFD E54A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E550 FFFD FFFD FFFD FFFD - FFFD FFFD E551 FFFD E544 FFFD FFFD FFFD - 9496 FFFD FFFD E54E E546 FFFD E548 FFFD - FFFD FFFD FFFD FFFD E552 E547 FFFD FFFD - E54B FFFD FFFD 8992 FFFD 93E3 FFFD E54C - E54F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E545 FFFD 9145 FFFD E549 8E46 9064 8C4F - 96F2 FFFD 96F7 8F92 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E556 E554 FFFD - FFFD FFFD FFFD FFFD FFFD 986D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E553 FFFD FFFD - FFFD 9795 FFFD E555 E557 FFFD FFFD FFFD - FFFD E558 FFFD FFFD FFFD FFFD FFFD FFFD - E55B E559 FFFD FFFD FFFD FFFD FFFD FFFD - 93A1 E55A FFFD FFFD FFFD 94CB E54D -End of Item 00A0 - -Begin of Item 00A1 - Format 1 - srcBegin = 85F7 - srcEnd = 8630 - mappingOffset = 320F - Mapping = - 8F93 FFFD E55C E561 9194 FFFD FFFD E560 - FFFD FFFD FFFD E541 FFFD FFFD FFFD E562 - 9168 FFFD FFFD E55D E55F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E55E FFFD FFFD 9F50 - 9F41 FFFD FFFD E564 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E563 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9796 FFFD - E1BA E565 -End of Item 00A1 - -Begin of Item 00A2 - Format 2 - srcBegin = 863F - destBegin = E566 -End of Item 00A2 - -Begin of Item 00A3 - Format 1 - srcBegin = 864D - srcEnd = 867B - mappingOffset = 3249 - Mapping = - E567 8CD5 FFFD 8B73 FFFD FFFD FFFD E569 - 997C FFFD FFFD FFFD FFFD 8B95 FFFD 97B8 - FFFD 8BF1 E56A FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E56B FFFD FFFD FFFD 928E FFFD - FFFD FFFD FFFD FFFD E56C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 93F8 FFFD 88B8 -End of Item 00A3 - -Begin of Item 00A4 - Format 1 - srcBegin = 868A - srcEnd = 8695 - mappingOffset = 3278 - Mapping = - 89E1 E571 E572 FFFD FFFD FFFD FFFD FFFD - FFFD E56D FFFD 8E5C -End of Item 00A4 - -Begin of Item 00A5 - Format 1 - srcBegin = 86A3 - srcEnd = 86B6 - mappingOffset = 3284 - Mapping = - E56E 9461 FFFD FFFD FFFD FFFD E56F E570 - E57A FFFD FFFD FFFD E574 E577 FFFD FFFD - FFFD FFFD FFFD E573 -End of Item 00A5 - -Begin of Item 00A6 - Format 1 - srcBegin = 86C4 - srcEnd = 878D - mappingOffset = 3298 - Mapping = - E575 FFFD E576 8ED6 FFFD E578 FFFD 9260 - FFFD 8C75 8A61 FFFD FFFD FFFD FFFD FFFD - E57B FFFD FFFD FFFD FFFD 8A5E FFFD E581 - FFFD FFFD E57C E580 FFFD FFFD FFFD FFFD - 94B8 FFFD FFFD FFFD FFFD E57D FFFD FFFD - E57E 9567 94D8 E582 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 91FB E58C FFFD E588 - FFFD FFFD 89E9 FFFD E586 FFFD 9649 E587 - FFFD FFFD E584 FFFD E585 E58A E58D FFFD - FFFD E58B FFFD FFFD FFFD E589 E583 FFFD - FFFD FFFD FFFD FFFD 9277 FFFD E594 FFFD - 96A8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E592 FFFD FFFD FFFD E593 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E58E FFFD FFFD E590 FFFD FFFD FFFD E591 - FFFD FFFD FFFD E58F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 90E4 FFFD 9858 - E598 FFFD E599 FFFD FFFD FFFD FFFD E59F - FFFD 9049 FFFD E59B FFFD E59E FFFD FFFD - FFFD FFFD FFFD E596 E595 FFFD FFFD E5A0 - FFFD FFFD 89DA FFFD E59C FFFD E5A1 FFFD - FFFD FFFD E59D FFFD FFFD FFFD FFFD FFFD - E59A FFFD 92B1 FFFD E597 FFFD FFFD FFFD - FFFD FFFD FFFD 9488 FFFD FFFD E5A5 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 975A -End of Item 00A6 - -Begin of Item 00A7 - Format 1 - srcBegin = 879F - srcEnd = 87D2 - mappingOffset = 3362 - Mapping = - E5A4 FFFD FFFD E5A3 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E5AC FFFD FFFD FFFD - E5A6 FFFD FFFD FFFD E5AE FFFD FFFD FFFD - FFFD FFFD FFFD 9786 E5B1 FFFD E5A8 FFFD - FFFD E5A9 FFFD FFFD FFFD E5AD FFFD E5B0 - E5AF FFFD FFFD FFFD E5A7 FFFD FFFD FFFD - FFFD E5AA FFFD E5BB -End of Item 00A7 - -Begin of Item 00A8 - Format 2 - srcBegin = 87E0 - destBegin = E5B4 -End of Item 00A8 - -Begin of Item 00A9 - Format 1 - srcBegin = 87EF - srcEnd = 89C0 - mappingOffset = 3396 - Mapping = - E5B2 FFFD FFFD E5B3 FFFD FFFD FFFD E5B8 - E5B9 FFFD 8A49 FFFD 8B61 FFFD FFFD E5B7 - FFFD FFFD FFFD FFFD FFFD FFFD E5A2 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E5B6 E5BA - E5B5 FFFD E5BC FFFD FFFD FFFD E5BE E5BD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E5C0 E5BF E579 FFFD FFFD FFFD - E5C4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E5C1 FFFD FFFD FFFD FFFD E5C2 - FFFD FFFD E5C3 FFFD E5C5 FFFD FFFD FFFD - FFFD 8C8C FFFD E5C7 FFFD E5C6 FFFD 8F4F - FFFD FFFD FFFD FFFD FFFD 8D73 9FA5 FFFD - FFFD FFFD FFFD E5C8 8F70 FFFD FFFD FFFD - 8A58 FFFD E5C9 FFFD 8971 FFFD 8FD5 E5CA - FFFD FFFD 8D74 E5CB 88DF FFFD FFFD FFFD - FFFD 955C FFFD FFFD E5CC FFFD FFFD FFFD - FFFD 908A FFFD E5D3 FFFD FFFD E5D0 FFFD - 928F FFFD FFFD FFFD FFFD FFFD E5D1 E5CE - 8BDC FFFD E5CD E5D4 FFFD FFFD FFFD FFFD - FFFD 8C55 FFFD FFFD 91DC FFFD E5DA FFFD - FFFD FFFD FFFD E5D6 FFFD FFFD FFFD 91B3 - E5D5 FFFD E5D8 FFFD FFFD FFFD FFFD E5CF - FFFD FFFD FFFD E5D9 FFFD E5DB FFFD FFFD - FFFD FFFD FFFD FFFD 94ED FFFD FFFD E5D7 - FFFD E5DC E5DE FFFD FFFD 8CD1 E5D2 FFFD - 88BF FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E5DD FFFD 8DD9 97F4 E5DF E5E0 9195 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 97A0 FFFD FFFD FFFD FFFD E5E1 9754 FFFD - FFFD E5E2 E5E3 FFFD FFFD 95E2 E5E4 FFFD - 8DBE FFFD 97A1 FFFD FFFD FFFD FFFD FFFD - FFFD E5E9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E5EA 8FD6 E5E8 FFFD FFFD - FFFD 9787 E5E5 FFFD FFFD E5E7 90BB 909E - FFFD FFFD FFFD E5E6 FFFD E5EB FFFD FFFD - 95A1 FFFD FFFD E5ED FFFD E5EC FFFD FFFD - FFFD 8A8C FFFD 964A E5EE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E5FA E5F0 - FFFD FFFD FFFD FFFD FFFD FFFD E5F1 FFFD - FFFD FFFD FFFD E5F2 E5F3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E5F7 - FFFD E5F8 FFFD FFFD E5F6 FFFD FFFD FFFD - FFFD FFFD E5F4 FFFD E5EF E5F5 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E5F9 E8B5 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 89A6 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E5FC - 8BDD E5FB FFFD FFFD FFFD E641 FFFD E640 - FFFD FFFD FFFD E643 FFFD FFFD E642 FFFD - E644 FFFD FFFD 8F50 FFFD E645 FFFD FFFD - E646 FFFD FFFD FFFD FFFD FFFD FFFD E647 - 90BC FFFD 9776 FFFD E648 FFFD FFFD 95A2 - 9465 E649 FFFD E64A 8CA9 FFFD FFFD FFFD - 8B4B FFFD FFFD FFFD E64B FFFD FFFD 8E8B - 9460 E64C FFFD 8A6F FFFD FFFD FFFD FFFD - FFFD FFFD E64D FFFD FFFD FFFD FFFD E64F - 9797 FFFD E64E 9065 FFFD E650 FFFD FFFD - E651 FFFD FFFD E652 8ACF FFFD FFFD FFFD - FFFD FFFD FFFD E653 FFFD FFFD E654 FFFD - E655 E656 -End of Item 00A9 - -Begin of Item 00AA - Format 1 - srcBegin = 89D2 - srcEnd = 89E7 - mappingOffset = 3568 - Mapping = - 8A70 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E657 FFFD E658 E659 FFFD FFFD FFFD FFFD - FFFD 89F0 FFFD FFFD 9047 E65A -End of Item 00AA - -Begin of Item 00AB - Format 1 - srcBegin = 89F4 - srcEnd = 8B9A - mappingOffset = 357E - Mapping = - E65B FFFD FFFD FFFD E65C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8CBE FFFD 92F9 E65D - FFFD FFFD FFFD FFFD 8C76 FFFD 9075 FFFD - E660 FFFD 93A2 FFFD E65F FFFD FFFD 8C50 - FFFD FFFD E65E 91F5 8B4C FFFD FFFD E661 - FFFD E662 FFFD 8FD7 FFFD FFFD FFFD 8C8D - FFFD E663 FFFD FFFD FFFD FFFD 964B FFFD - FFFD 90DD FFFD FFFD FFFD 8B96 FFFD 96F3 - 9169 FFFD E664 FFFD FFFD FFFD 9066 9290 - 8FD8 FFFD FFFD FFFD FFFD E665 FFFD FFFD - FFFD FFFD E668 FFFD E669 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8DBC 91C0 E667 FFFD - 8FD9 955D FFFD FFFD FFFD FFFD FFFD E666 - FFFD FFFD 8E8C FFFD 8972 FFFD E66D 8C77 - FFFD FFFD 8E8E FFFD FFFD 8E8D FFFD 986C - E66C E66B 9146 FFFD 8B6C 9862 8A59 8FDA - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E66A FFFD FFFD FFFD FFFD FFFD E66F FFFD - E670 E66E FFFD 8CD6 FFFD 975F FFFD FFFD - 8E8F 9446 FFFD FFFD FFFD E673 FFFD 90BE - FFFD 9261 FFFD FFFD 9755 FFFD E676 FFFD - FFFD FFFD 8CEA FFFD 90BD E672 FFFD E677 - 8CEB E674 E675 FFFD E671 FFFD FFFD FFFD - 90E0 93C7 FFFD FFFD 924E FFFD 89DB FFFD - FFFD FFFD FFFD FFFD FFFD 94EE FFFD FFFD - 8B62 FFFD FFFD 92B2 FFFD FFFD E67A FFFD - E678 FFFD FFFD 926B FFFD FFFD FFFD 90BF - 8AD0 E679 FFFD 907A FFFD FFFD 97C8 FFFD - FFFD FFFD 985F FFFD FFFD FFFD E67B E687 - 92B3 FFFD E686 FFFD E683 E68B E684 FFFD - E680 FFFD 92FA E67E FFFD FFFD FFFD E67C - FFFD 9740 8E90 FFFD FFFD E681 FFFD E67D - FFFD FFFD FFFD E685 8F94 FFFD 8CBF FFFD - FFFD FFFD 91F8 FFFD 9664 8979 88E0 FFFD - 93A3 FFFD FFFD E689 FFFD FFFD FFFD FFFD - E688 FFFD 93E4 FFFD E68D FFFD FFFD FFFD - E682 FFFD E68C E68E FFFD 8CAA E68A 8D75 - FFFD 8ED3 FFFD FFFD E68F 9777 FFFD FFFD - FFFD FFFD E692 FFFD E695 FFFD FFFD E693 - 9554 FFFD FFFD FFFD FFFD FFFD FFFD E690 - FFFD FFFD FFFD FFFD FFFD 8BDE FFFD FFFD - FFFD FFFD E694 FFFD FFFD E696 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E69A FFFD FFFD - E697 FFFD E699 E698 FFFD FFFD FFFD FFFD - FFFD FFFD E69B FFFD 8EAF FFFD E69D E69C - 9588 FFFD FFFD E69F FFFD FFFD FFFD FFFD - FFFD FFFD 8C78 FFFD FFFD FFFD FFFD E69E - E6A0 FFFD FFFD E6A1 8B63 E3BF 8FF7 FFFD - E6A2 FFFD FFFD 8CEC FFFD FFFD FFFD FFFD - FFFD E6A3 FFFD FFFD E6A4 FFFD FFFD 8E5D - FFFD FFFD FFFD FFFD FFFD FFFD 9DCC FFFD - E6A5 FFFD E6A6 FFFD 8F51 FFFD E6A7 E6A8 - FFFD FFFD E6A9 FFFD FFFD E6AA E6AB -End of Item 00AB - -Begin of Item 00AC - Format 1 - srcBegin = 8C37 - srcEnd = 8C6C - mappingOffset = 3725 - Mapping = - 924A FFFD FFFD E6AC FFFD FFFD FFFD FFFD - E6AE FFFD E6AD FFFD FFFD FFFD FFFD 93A4 - FFFD E6AF FFFD 964C FFFD E6B0 FFFD E6B1 - FFFD E6B2 FFFD FFFD FFFD FFFD E6B3 FFFD - FFFD FFFD FFFD 93D8 FFFD FFFD FFFD FFFD - FFFD FFFD 8FDB E6B4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8D8B 98AC E6B5 -End of Item 00AC - -Begin of Item 00AD - Format 1 - srcBegin = 8C78 - srcEnd = 8CED - mappingOffset = 375B - Mapping = - E6B6 955E E6B7 FFFD E6BF FFFD FFFD FFFD - FFFD FFFD E6B8 FFFD FFFD E6BA FFFD FFFD - FFFD E6B9 E6BB FFFD 9665 E6BC E6BD FFFD - FFFD FFFD FFFD FFFD E6BE FFFD FFFD FFFD - E6C0 FFFD FFFD FFFD FFFD 8A4C 92E5 FFFD - 9589 8DE0 8D76 FFFD FFFD FFFD FFFD 956E - 89DD 94CC E6C3 8AD1 90D3 E6C2 E6C7 9299 - 96E1 FFFD E6C5 E6C6 8B4D FFFD E6C8 9483 - 91DD FFFD FFFD 94EF 935C E6C4 FFFD 9666 - 89EA E6CA 9847 92C0 9864 FFFD FFFD 8E91 - E6C9 FFFD 91AF FFFD FFFD E6DA 9147 FFFD - FFFD 93F6 FFFD 956F FFFD FFFD FFFD FFFD - FFFD FFFD E6CD 8E5E 8E92 FFFD 8FDC FFFD - 9485 FFFD 8CAB E6CC E6CB FFFD 958A FFFD - FFFD FFFD 8EBF FFFD FFFD 9371 -End of Item 00AD - -Begin of Item 00AE - Format 1 - srcBegin = 8CFA - srcEnd = 8D16 - mappingOffset = 37D1 - Mapping = - E6CF E6D0 8D77 E6CE FFFD FFFD FFFD FFFD - FFFD FFFD E6D1 E6D2 FFFD E6D4 91A1 FFFD - E6D3 8AE4 FFFD E6D6 FFFD E6D5 E6D7 FFFD - FFFD E6D9 E6DB FFFD E6DC -End of Item 00AE - -Begin of Item 00AF - Format 1 - srcBegin = 8D64 - srcEnd = 8D8A - mappingOffset = 37EE - Mapping = - 90D4 FFFD 8ECD E6DD FFFD FFFD FFFD 8A71 - FFFD E6DE FFFD FFFD 9196 E6DF FFFD E6E0 - 958B FFFD FFFD 8B4E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E6E1 FFFD FFFD - FFFD 92B4 FFFD FFFD FFFD FFFD 897A -End of Item 00AF - -Begin of Item 00B0 - Format 1 - srcBegin = 8D99 - srcEnd = 8E10 - mappingOffset = 3815 - Mapping = - E6E2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8EEF FFFD FFFD FFFD FFFD 9096 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 91AB FFFD FFFD FFFD FFFD FFFD - FFFD E6E5 FFFD FFFD FFFD E6E4 FFFD FFFD - FFFD E6E3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E6EB E6E9 FFFD FFFD E6E6 FFFD - FFFD FFFD FFFD FFFD FFFD E6E8 FFFD FFFD - FFFD E6E7 E6EA FFFD 8B97 FFFD E6EE FFFD - 90D5 FFFD E6EF FFFD FFFD FFFD FFFD 8CD7 - FFFD E6EC E6ED FFFD FFFD FFFD 9848 FFFD - FFFD FFFD 92B5 FFFD 9148 FFFD FFFD FFFD - FFFD FFFD FFFD E6F0 FFFD FFFD E6F3 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E6F1 - E6F2 9778 FFFD FFFD FFFD FFFD 93A5 E6F6 -End of Item 00B0 - -Begin of Item 00B1 - Format 1 - srcBegin = 8E1D - srcEnd = 8E35 - mappingOffset = 388D - Mapping = - E6F4 E6F5 E6F7 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E748 FFFD FFFD - FFFD FFFD FFFD E6FA FFFD FFFD FFFD E6FB - E6F9 -End of Item 00B1 - -Begin of Item 00B2 - Format 1 - srcBegin = 8E42 - srcEnd = 8E64 - mappingOffset = 38A6 - Mapping = - E6F8 FFFD 92FB FFFD FFFD E740 E744 E741 - E6FC FFFD E742 FFFD FFFD FFFD E743 FFFD - FFFD FFFD FFFD E74A FFFD FFFD FFFD E745 - FFFD FFFD FFFD FFFD FFFD 90D6 E747 FFFD - FFFD E749 E746 -End of Item 00B2 - -Begin of Item 00B3 - Format 1 - srcBegin = 8E72 - srcEnd = 8EB1 - mappingOffset = 38C9 - Mapping = - E74C FFFD 8F52 FFFD E74B FFFD FFFD FFFD - FFFD FFFD E74D FFFD FFFD FFFD FFFD E74E - FFFD FFFD E751 E750 FFFD E74F FFFD FFFD - E753 E752 FFFD 96F4 FFFD FFFD FFFD E755 - FFFD E754 E756 FFFD FFFD FFFD FFFD E757 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E759 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E758 9067 E75A FFFD FFFD 8BEB E75B E75D -End of Item 00B3 - -Begin of Item 00B4 - Format 1 - srcBegin = 8EBE - srcEnd = 8EEB - mappingOffset = 3909 - Mapping = - E75E FFFD FFFD FFFD FFFD FFFD FFFD E75F - E75C FFFD E760 FFFD 8ED4 E761 8B4F 8C52 - FFFD FFFD FFFD FFFD 8CAC FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E762 FFFD FFFD - FFFD 93EE FFFD FFFD 935D E763 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E766 -End of Item 00B4 - -Begin of Item 00B5 - Format 1 - srcBegin = 8EF8 - srcEnd = 8F64 - mappingOffset = 3937 - Mapping = - 8EB2 FFFD FFFD E765 E764 8C79 E767 FFFD - FFFD FFFD FFFD 8A72 FFFD E769 FFFD FFFD - FFFD 8DDA E768 FFFD E771 FFFD FFFD FFFD - FFFD FFFD E76B E76D 95E3 E76A FFFD FFFD - FFFD E76C FFFD E770 E76E 8B50 FFFD E76F - FFFD FFFD FFFD FFFD FFFD FFFD E772 FFFD - FFFD 9479 97D6 FFFD FFFD FFFD FFFD 8F53 - FFFD FFFD FFFD E773 FFFD FFFD FFFD FFFD - 9741 E775 FFFD E774 FFFD FFFD E778 9760 - FFFD FFFD E777 FFFD 8A8D E776 E77B FFFD - FFFD E77A FFFD FFFD E779 9351 E77C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E77D - FFFD FFFD FFFD FFFD E77E FFFD FFFD 8D8C - FFFD 8C44 E780 E781 E782 -End of Item 00B5 - -Begin of Item 00B6 - Format 1 - srcBegin = 8F9B - srcEnd = 9091 - mappingOffset = 39A4 - Mapping = - 9068 E783 FFFD 8EAB E784 FFFD FFFD FFFD - E785 FFFD FFFD FFFD 999F 999E FFFD FFFD - FFFD FFFD E786 E390 E787 9243 904A 945F - FFFD FFFD FFFD FFFD E788 FFFD FFFD 95D3 - 92D2 8D9E FFFD FFFD 9248 FFFD FFFD 8949 - FFFD 9698 9076 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8C7D FFFD FFFD 8BDF FFFD - FFFD 95D4 FFFD FFFD FFFD FFFD FFFD E789 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E78B - FFFD FFFD E78A 89DE FFFD FFFD 93F4 E78C - 9497 FFFD 9352 FFFD E78D 8F71 FFFD FFFD - FFFD E78F FFFD FFFD 96C0 E79E E791 E792 - FFFD FFFD 92C7 FFFD FFFD 91DE 9197 FFFD - 93A6 FFFD E790 8B74 FFFD FFFD FFFD FFFD - E799 FFFD E796 E7A3 93A7 9280 E793 FFFD - 92FC 9372 E794 E798 9080 FFFD 9487 92CA - FFFD FFFD 90C0 E797 91AC 91A2 E795 88A7 - 9841 FFFD FFFD FFFD E79A FFFD FFFD FFFD - FFFD FFFD FFFD 91DF FFFD FFFD 8F54 9069 - FFFD FFFD E79C E79B FFFD 88ED E79D FFFD - FFFD 954E FFFD E7A5 FFFD FFFD 93D9 908B - FFFD FFFD 9278 FFFD 8BF6 FFFD E7A4 9756 - 895E FFFD 95D5 89DF E79F E7A0 E7A1 E7A2 - 93B9 9242 88E1 E7A6 FFFD E7A7 EAA1 FFFD - FFFD 91BB FFFD E7A8 FFFD 8993 916B FFFD - 8CAD FFFD 9779 FFFD FFFD E7A9 934B FFFD - FFFD FFFD 9198 8ED5 E7AA FFFD FFFD E7AD - FFFD FFFD 8F85 E7AB 914A 9149 FFFD 88E2 - FFFD 97C9 E7AF FFFD 94F0 E7B1 E7B0 E7AE - E284 8AD2 FFFD FFFD E78E FFFD E7B3 E7B2 - FFFD FFFD FFFD FFFD E7B4 FFFD 9757 -End of Item 00B6 - -Begin of Item 00B7 - Format 1 - srcBegin = 90A3 - srcEnd = 90CE - mappingOffset = 3A9B - Mapping = - 93DF FFFD FFFD 964D FFFD E7B5 FFFD 8ED7 - FFFD FFFD FFFD FFFD E7B6 FFFD E7B7 FFFD - FFFD FFFD E7B8 FFFD FFFD 9340 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 88E8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8D78 - FFFD FFFD FFFD 9859 -End of Item 00B7 - -Begin of Item 00B8 - Format 1 - srcBegin = 90DB - srcEnd = 9102 - mappingOffset = 3AC7 - Mapping = - E7BC FFFD FFFD FFFD FFFD FFFD 8C53 E7B9 - FFFD E7BA FFFD FFFD FFFD 9594 FFFD FFFD - FFFD FFFD 8A73 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9758 FFFD 8BBD FFFD FFFD FFFD - FFFD FFFD 9373 FFFD FFFD FFFD FFFD E7BD -End of Item 00B8 - -Begin of Item 00B9 - Format 1 - srcBegin = 9112 - srcEnd = 9119 - mappingOffset = 3AEF - Mapping = - E7BE FFFD FFFD FFFD FFFD FFFD FFFD E7BF -End of Item 00B9 - -Begin of Item 00BA - Format 1 - srcBegin = 912D - srcEnd = 9132 - mappingOffset = 3AF7 - Mapping = - 9341 FFFD FFFD E7C1 FFFD E7C0 -End of Item 00BA - -Begin of Item 00BB - Format 1 - srcBegin = 9149 - srcEnd = 91E7 - mappingOffset = 3AFD - Mapping = - 93D1 E7C2 8F55 8EDE 947A 9291 FFFD FFFD - FFFD 8EF0 FFFD 908C FFFD E7C3 FFFD E7C4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 907C E7C5 FFFD E7C6 FFFD FFFD FFFD - E7C7 978F FFFD 8F56 FFFD FFFD FFFD FFFD - FFFD E7C9 E7C8 FFFD 8D79 FFFD 8D93 8E5F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E7CC FFFD FFFD FFFD FFFD 8F86 FFFD - E7CB FFFD E7CA FFFD 91E7 FFFD FFFD 8CED - FFFD 90C1 FFFD FFFD FFFD FFFD 94AE FFFD - FFFD FFFD FFFD 8F58 FFFD FFFD FFFD FFFD - FFFD E7CD FFFD 8FDD FFFD FFFD FFFD FFFD - FFFD E7D0 E7CE FFFD FFFD FFFD E7CF FFFD - FFFD FFFD FFFD E7D2 E7D1 FFFD FFFD 8FF8 - FFFD E7D3 FFFD FFFD FFFD FFFD FFFD E7D4 - E7D5 FFFD FFFD FFFD FFFD 94CE 8DD1 8EDF - E7D6 FFFD E7D7 97A2 8F64 96EC 97CA E7D8 - 8BE0 FFFD FFFD FFFD FFFD E7D9 FFFD 9342 - FFFD FFFD E7DC 8A98 906A FFFD E7DA FFFD - E7DB FFFD 92DE FFFD FFFD 9674 8BFA -End of Item 00BB - -Begin of Item 00BC - Format 1 - srcBegin = 91F5 - srcEnd = 91FF - mappingOffset = 3B9C - Mapping = - E7DE E7DF FFFD FFFD FFFD FFFD FFFD E7DD - FFFD FFFD E7E1 -End of Item 00BC - -Begin of Item 00BD - Format 1 - srcBegin = 920D - srcEnd = 9271 - mappingOffset = 3BA7 - Mapping = - 93DD 8A62 FFFD FFFD E7E5 FFFD FFFD E7E2 - E7E4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E7E0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E86E FFFD FFFD E7E3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 97E9 - FFFD FFFD 8CD8 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E7ED FFFD FFFD FFFD FFFD 9353 - E7E8 FFFD FFFD E7EB E7E9 FFFD E7EE FFFD - FFFD FFFD FFFD E7EF FFFD FFFD FFFD FFFD - FFFD FFFD E7E7 FFFD FFFD E7F4 8994 FFFD - FFFD E7E6 FFFD FFFD FFFD 94AB FFFD E7EA - FFFD 8FDE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8D7A -End of Item 00BD - -Begin of Item 00BE - Format 1 - srcBegin = 927E - srcEnd = 9285 - mappingOffset = 3C0C - Mapping = - 9667 FFFD 8BE2 FFFD FFFD 8F65 FFFD 93BA -End of Item 00BE - -Begin of Item 00BF - Format 1 - srcBegin = 9291 - srcEnd = 929C - mappingOffset = 3C14 - Mapping = - 914C FFFD E7F2 FFFD E7EC E7F1 FFFD 96C1 - FFFD 92B6 E7F3 E7F0 -End of Item 00BF - -Begin of Item 00C0 - Format 1 - srcBegin = 92AD - srcEnd = 92B9 - mappingOffset = 3C20 - Mapping = - 914B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E7F7 FFFD E7F6 -End of Item 00C0 - -Begin of Item 00C1 - Format 1 - srcBegin = 92CF - srcEnd = 92D2 - mappingOffset = 3C2D - Mapping = - E7F5 FFFD FFFD 964E -End of Item 00C1 - -Begin of Item 00C2 - Format 1 - srcBegin = 92E4 - srcEnd = 9360 - mappingOffset = 3C31 - Mapping = - 8F9B FFFD FFFD FFFD FFFD E7F8 95DD FFFD - FFFD 8973 FFFD FFFD FFFD FFFD 9565 9292 - FFFD FFFD FFFD FFFD 8B98 FFFD E7FA FFFD - 8D7C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8E4B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E7F9 908D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 908E E840 E842 FFFD - FFFD FFFD FFFD FFFD 8FF9 FFFD E841 E843 - FFFD FFFD 8BD1 FFFD 9564 FFFD FFFD 8EE0 - 9842 FFFD E7FC 8DF6 FFFD FFFD 985E FFFD - FFFD E845 FFFD FFFD FFFD FFFD E844 E846 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E7FB FFFD FFFD FFFD FFFD FFFD FFFD 93E7 - FFFD 9374 FFFD FFFD FFFD FFFD FFFD FFFD - 92D5 FFFD E84B FFFD FFFD FFFD FFFD 9262 - E847 FFFD FFFD FFFD E848 -End of Item 00C2 - -Begin of Item 00C3 - Format 1 - srcBegin = 936C - srcEnd = 937E - mappingOffset = 3CAE - Mapping = - 8C4C FFFD E84A FFFD FFFD FFFD FFFD FFFD - FFFD 8CAE FFFD FFFD FFFD FFFD FFFD FFFD - E849 FFFD 8FDF -End of Item 00C3 - -Begin of Item 00C4 - Format 1 - srcBegin = 938C - srcEnd = 939A - mappingOffset = 3CC1 - Mapping = - 8A99 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E84F FFFD 8DBD 9199 FFFD FFFD 92C8 -End of Item 00C4 - -Begin of Item 00C5 - Format 1 - srcBegin = 93A7 - srcEnd = 93E8 - mappingOffset = 3CD0 - Mapping = - 8A5A FFFD FFFD FFFD FFFD E84D E84E 92C1 - FFFD E84C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E850 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E856 FFFD FFFD FFFD - FFFD E859 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E858 934C FFFD FFFD FFFD FFFD E851 - E852 E855 FFFD FFFD FFFD FFFD E857 FFFD - FFFD FFFD 8BBE FFFD FFFD E85A E854 FFFD - FFFD E853 -End of Item 00C5 - -Begin of Item 00C6 - Format 1 - srcBegin = 9403 - srcEnd = 9444 - mappingOffset = 3D12 - Mapping = - E85E FFFD FFFD FFFD E85F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E860 FFFD FFFD - E85D E85C FFFD FFFD FFFD 8FE0 93A8 E85B - FFFD FFFD FFFD FFFD FFFD FFFD E864 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E862 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E863 E861 FFFD 91F6 FFFD E865 - FFFD FFFD FFFD FFFD FFFD FFFD E866 FFFD - FFFD E868 -End of Item 00C6 - -Begin of Item 00C7 - Format 1 - srcBegin = 9451 - srcEnd = 9481 - mappingOffset = 3D54 - Mapping = - 8AD3 E867 96F8 FFFD FFFD FFFD FFFD FFFD - FFFD E873 E869 FFFD FFFD E86C FFFD E86A - FFFD E86B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E86D FFFD FFFD FFFD FFFD FFFD E86F - FFFD FFFD FFFD FFFD E870 FFFD E871 FFFD - FFFD FFFD FFFD E874 E872 E875 E877 FFFD - E876 -End of Item 00C7 - -Begin of Item 00C8 - Format 1 - srcBegin = 9577 - srcEnd = 95E5 - mappingOffset = 3D85 - Mapping = - 92B7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 96E5 FFFD E878 914D FFFD FFFD FFFD - E879 FFFD 95C2 E87A 8A4A FFFD FFFD FFFD - 895B FFFD 8AD5 FFFD 8AD4 E87B FFFD E87C - FFFD E87D E87E FFFD FFFD FFFD FFFD FFFD - FFFD E880 FFFD 8AD6 8A74 8D7D 94B4 FFFD - E882 E881 FFFD FFFD FFFD FFFD E883 FFFD - FFFD FFFD FFFD 897B FFFD FFFD FFFD FFFD - FFFD FFFD E886 FFFD E885 E884 FFFD E887 - FFFD FFFD FFFD FFFD E88A FFFD FFFD FFFD - 88C5 FFFD FFFD E888 FFFD E88C E88B FFFD - FFFD FFFD FFFD FFFD FFFD E88E E88D E88F - FFFD 93AC FFFD FFFD FFFD E890 FFFD FFFD - FFFD FFFD E891 E893 FFFD FFFD E892 -End of Item 00C8 - -Begin of Item 00C9 - Format 1 - srcBegin = 961C - srcEnd = 97B4 - mappingOffset = 3DF4 - Mapping = - 958C FFFD FFFD FFFD FFFD E894 FFFD FFFD - FFFD FFFD FFFD FFFD E895 FFFD 8DE3 FFFD - FFFD FFFD E896 E897 FFFD FFFD 9668 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 916A - FFFD FFFD FFFD 88A2 91C9 FFFD E898 FFFD - 958D FFFD FFFD FFFD FFFD FFFD FFFD E89B - E899 8D7E FFFD E89A 8CC0 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 95C3 - E89D E89F E89E E8A0 FFFD FFFD 8940 9077 - 8F9C 8AD7 E8A1 FFFD FFFD FFFD 9486 FFFD - E8A3 FFFD FFFD FFFD 8941 FFFD E8A2 92C2 - FFFD 97CB 93A9 E89C 97A4 FFFD 8CAF FFFD - FFFD 977A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8BF7 97B2 FFFD 8C47 FFFD 91E0 E440 - FFFD E8A4 8A4B 908F FFFD FFFD FFFD FFFD - 8A75 E8A6 FFFD E8A7 E8A5 8C84 FFFD 8DDB - 8FE1 FFFD FFFD FFFD 8942 FFFD FFFD 97D7 - FFFD FFFD FFFD E8A9 E7AC FFFD E8A8 FFFD - FFFD FFFD FFFD FFFD E8AC E8AA E8AB FFFD - E8AD FFFD E8AE 97EA E8AF E8B0 FFFD 90C7 - 94B9 FFFD FFFD FFFD 909D 8AE5 FFFD FFFD - 9759 89EB 8F57 8CD9 FFFD E8B3 FFFD E8B2 - 8E93 E8B4 E8B1 FFFD FFFD 8E47 FFFD FFFD - FFFD E8B8 E5AB FFFD FFFD 99D4 FFFD 9097 - E8B6 FFFD FFFD FFFD FFFD FFFD 97A3 93EF - FFFD FFFD FFFD FFFD 894A FFFD 90E1 8EB4 - FFFD FFFD FFFD FFFD 95B5 FFFD 895F FFFD - FFFD FFFD 97EB 978B FFFD E8B9 FFFD 9364 - FFFD FFFD FFFD FFFD 8EF9 FFFD FFFD FFFD - E8BA FFFD E8BB 906B E8BC FFFD 97EC FFFD - FFFD E8B7 E8BE E8C0 FFFD E8BF FFFD E8BD - FFFD FFFD E8C1 FFFD FFFD E8C2 FFFD FFFD - 919A FFFD 89E0 FFFD FFFD FFFD FFFD FFFD - E8C3 FFFD FFFD 96B6 FFFD FFFD E8C4 FFFD - FFFD FFFD FFFD FFFD E8C5 FFFD 9849 FFFD - FFFD FFFD FFFD FFFD 9E50 E8C6 FFFD FFFD - FFFD E8C7 E8C8 FFFD FFFD FFFD E8CC FFFD - E8C9 FFFD E8CA FFFD E8CB E8CD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 90C2 FFFD - FFFD FFFD 96F5 FFFD FFFD 90C3 FFFD FFFD - E8CE FFFD 94F1 FFFD E8CF EA72 96CA FFFD - E8D0 FFFD E8D1 FFFD E8D2 8A76 FFFD E8D4 - FFFD 9078 FFFD FFFD FFFD E8D5 FFFD FFFD - 8C43 FFFD FFFD FFFD FFFD E8D6 E8DA FFFD - E8D8 FFFD FFFD FFFD FFFD E8D9 FFFD FFFD - 8A93 E8D7 E8DB FFFD FFFD FFFD FFFD E8DC - FFFD 88C6 FFFD E8DD E8DE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8FE2 FFFD FFFD FFFD - E8DF FFFD FFFD FFFD 8B66 FFFD FFFD E8E2 - FFFD FFFD E8E1 FFFD E8E0 FFFD FFFD E691 - FFFD 95DA FFFD FFFD FFFD FFFD FFFD E8E3 - E8E4 -End of Item 00C9 - -Begin of Item 00CA - Format 1 - srcBegin = 97C3 - srcEnd = 97DC - mappingOffset = 3F8D - Mapping = - E8E5 FFFD FFFD E8E6 FFFD E8E7 FFFD FFFD - E8E8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8AD8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E8E9 -End of Item 00CA - -Begin of Item 00CB - Format 1 - srcBegin = 97ED - srcEnd = 9874 - mappingOffset = 3FA7 - Mapping = - E8EA 9442 FFFD FFFD FFFD E8EC 89B9 FFFD - E8EF E8EE FFFD FFFD FFFD FFFD 8943 FFFD - FFFD FFFD 8BBF FFFD 95C5 92B8 8DA0 FFFD - 8D80 8F87 FFFD 907B FFFD FFFD FFFD E8F1 - FFFD FFFD E8F0 9761 8AE6 94D0 93DA FFFD - FFFD FFFD 909C 97CC FFFD 8C7A FFFD FFFD - FFFD FFFD FFFD FFFD E8F4 FFFD FFFD E8F3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 966A - 93AA FFFD FFFD FFFD FFFD FFFD FFFD 896F - FFFD FFFD E8F5 E8F2 FFFD FFFD 9570 978A - E8F6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD E8F7 FFFD FFFD FFFD FFFD E8F9 91E8 - 8A7A 8A7B E8F8 FFFD FFFD FFFD FFFD 8AE7 - 8CB0 FFFD FFFD 8AE8 FFFD FFFD 935E FFFD - FFFD 97DE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8CDA FFFD FFFD FFFD E8FA FFFD - FFFD FFFD E8FB E8FC E940 FFFD E942 E941 -End of Item 00CB - -Begin of Item 00CC - Format 1 - srcBegin = 98A8 - srcEnd = 98B6 - mappingOffset = 402F - Mapping = - 9597 FFFD E943 FFFD FFFD FFFD FFFD E944 - FFFD E945 FFFD FFFD FFFD FFFD E946 -End of Item 00CC - -Begin of Item 00CD - Format 1 - srcBegin = 98C3 - srcEnd = 98C6 - mappingOffset = 403E - Mapping = - E948 E947 FFFD E949 -End of Item 00CD - -Begin of Item 00CE - Format 1 - srcBegin = 98DB - srcEnd = 992E - mappingOffset = 4042 - Mapping = - 94F2 E3CA FFFD FFFD 9048 FFFD FFFD 8B51 - FFFD FFFD FFFD FFFD FFFD FFFD E94A FFFD - E94B FFFD 99AA 9F5A 94D1 FFFD FFFD 88F9 - FFFD 88B9 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8E94 964F 8FFC FFFD FFFD FFFD FFFD - E94C FFFD 96DD FFFD FFFD FFFD E94D 977B - FFFD 8961 FFFD FFFD FFFD 8E60 FFFD E94E - 89EC E94F FFFD FFFD FFFD E950 FFFD FFFD - FFFD FFFD E952 E953 FFFD E955 E951 FFFD - FFFD E954 FFFD FFFD FFFD 8AD9 FFFD FFFD - FFFD E956 FFFD E957 -End of Item 00CE - -Begin of Item 00CF - Format 1 - srcBegin = 993D - srcEnd = 9957 - mappingOffset = 4096 - Mapping = - E958 E959 FFFD FFFD FFFD E95A FFFD FFFD - E95C FFFD FFFD FFFD E95B FFFD E95E E961 - FFFD FFFD FFFD E95D E95F E960 FFFD FFFD - E962 FFFD 8BC0 -End of Item 00CF - -Begin of Item 00D0 - Format 1 - srcBegin = 9996 - srcEnd = 9999 - mappingOffset = 40B1 - Mapping = - 8EF1 E963 E964 8D81 -End of Item 00D0 - -Begin of Item 00D1 - Format 1 - srcBegin = 99A5 - srcEnd = 9A19 - mappingOffset = 40B5 - Mapping = - E965 FFFD FFFD 8A5D FFFD FFFD FFFD 946E - E966 E967 FFFD FFFD FFFD FFFD 9279 93E9 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E968 - FFFD FFFD FFFD FFFD 949D FFFD FFFD 91CA - 8977 8BEC FFFD 8BED FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 9293 E96D 8BEE FFFD FFFD - 89ED FFFD FFFD E96C FFFD FFFD E96A FFFD - E96B FFFD E969 FFFD FFFD E977 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - E96E E96F FFFD FFFD E970 E971 FFFD FFFD - FFFD FFFD FFFD E973 FFFD FFFD E972 FFFD - FFFD FFFD 8F78 FFFD E974 FFFD FFFD FFFD - E976 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8B52 E975 FFFD FFFD 919B 8CB1 FFFD - FFFD FFFD FFFD FFFD E978 -End of Item 00D1 - -Begin of Item 00D2 - Format 1 - srcBegin = 9A28 - srcEnd = 9A6B - mappingOffset = 412A - Mapping = - 91CB FFFD FFFD E979 FFFD FFFD FFFD FFFD - 93AB FFFD FFFD FFFD FFFD FFFD FFFD E97A - FFFD FFFD FFFD FFFD FFFD FFFD E980 FFFD - E97D FFFD E97C E97E FFFD E97B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E982 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E981 FFFD E984 - FFFD FFFD 8BC1 E983 FFFD FFFD FFFD E985 - FFFD FFFD E986 FFFD E988 E987 FFFD FFFD - FFFD E989 E98B E98A -End of Item 00D2 - -Begin of Item 00D3 - Format 1 - srcBegin = 9AA8 - srcEnd = 9B06 - mappingOffset = 416E - Mapping = - 8D9C FFFD FFFD FFFD FFFD E98C FFFD FFFD - E98D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8A5B FFFD FFFD FFFD E98E FFFD FFFD FFFD - E98F FFFD FFFD FFFD 9091 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD E990 - FFFD E991 FFFD E992 E993 FFFD FFFD FFFD - 8D82 FFFD FFFD FFFD FFFD FFFD E994 E995 - FFFD FFFD E996 E997 FFFD FFFD E998 FFFD - FFFD FFFD 94AF E99A FFFD 9545 E99B E999 - FFFD E99D FFFD FFFD E99C FFFD FFFD E99E - FFFD FFFD FFFD E99F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD E9A0 -End of Item 00D3 - -Begin of Item 00D4 - Format 1 - srcBegin = 9B18 - srcEnd = 9B5A - mappingOffset = 41CD - Mapping = - E9A1 FFFD E9A2 FFFD FFFD FFFD FFFD E9A3 - FFFD FFFD E9A4 E9A5 FFFD E9A6 FFFD E9A7 - E9A8 E9A9 E9AA FFFD FFFD FFFD E9AB E9AC - FFFD 9F54 E9AD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD E2F6 8B53 FFFD FFFD FFFD - FFFD 8A40 8DB0 E9AF E9AE 96A3 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E9B1 E9B2 E9B0 - FFFD E9B3 FFFD FFFD 9682 FFFD FFFD FFFD - E9B4 FFFD 8B9B -End of Item 00D4 - -Begin of Item 00D5 - Format 1 - srcBegin = 9B6F - srcEnd = 9B74 - mappingOffset = 4210 - Mapping = - 9844 FFFD FFFD FFFD FFFD E9B5 -End of Item 00D5 - -Begin of Item 00D6 - Format 1 - srcBegin = 9B83 - srcEnd = 9BF5 - mappingOffset = 4216 - Mapping = - E9B7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 88BC FFFD FFFD E9B8 95A9 - E9B6 FFFD FFFD E9B9 E9BA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD E9BB E9BC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E9BD FFFD 968E - 8E4C FFFD 8DF8 914E FFFD FFFD FFFD FFFD - FFFD E9BE FFFD FFFD FFFD FFFD E9C1 FFFD - FFFD FFFD FFFD FFFD FFFD E9BF FFFD FFFD - FFFD FFFD FFFD E9C2 FFFD FFFD 8CEF E9C0 - FFFD FFFD FFFD FFFD E9C3 FFFD E9C4 E9C5 - FFFD E9C9 FFFD 8E49 FFFD FFFD FFFD FFFD - 91E2 FFFD FFFD FFFD FFFD FFFD E9CA E9C7 - E9C6 E9C8 FFFD FFFD FFFD 8C7E FFFD FFFD - FFFD FFFD FFFD FFFD FFFD E9CE E9CD E9CC - FFFD FFFD 88B1 -End of Item 00D6 - -Begin of Item 00D7 - Format 1 - srcBegin = 9C04 - srcEnd = 9C67 - mappingOffset = 4289 - Mapping = - E9D8 FFFD E9D4 FFFD E9D5 E9D1 E9D7 FFFD - E9D3 8A82 FFFD FFFD 986B FFFD E9D6 E9D2 - E9D0 E9CF FFFD FFFD FFFD FFFD FFFD E9DA - FFFD FFFD FFFD FFFD FFFD E9DD FFFD FFFD - E9DC E9DB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 9568 E9D9 88F1 E9DE FFFD E9E0 FFFD - FFFD FFFD FFFD FFFD FFFD 8A8F E9CB 8956 - FFFD FFFD E9E2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD E9E1 E9DF 924C FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9690 FFFD - FFFD FFFD FFFD 97D8 FFFD FFFD E9E3 FFFD - FFFD FFFD FFFD FFFD E9E4 FFFD FFFD FFFD - FFFD FFFD FFFD E9E5 -End of Item 00D7 - -Begin of Item 00D8 - Format 1 - srcBegin = 9C76 - srcEnd = 9C78 - mappingOffset = 42ED - Mapping = - E9E6 FFFD E9E7 -End of Item 00D8 - -Begin of Item 00D9 - Format 1 - srcBegin = 9CE5 - srcEnd = 9CF6 - mappingOffset = 42F0 - Mapping = - 92B9 FFFD E9E8 FFFD 94B5 FFFD E9ED E9E9 - FFFD FFFD FFFD E9EA FFFD FFFD 9650 96C2 - FFFD 93CE -End of Item 00D9 - -Begin of Item 00DA - Format 1 - srcBegin = 9D03 - srcEnd = 9D2C - mappingOffset = 4302 - Mapping = - E9EE FFFD FFFD E9EF 93BC E9EC E9EB FFFD - FFFD FFFD FFFD 89A8 FFFD FFFD FFFD E9F7 - FFFD FFFD E9F6 FFFD FFFD FFFD FFFD FFFD - 8995 FFFD FFFD FFFD E9F4 FFFD FFFD FFFD - E9F3 FFFD FFFD E9F1 FFFD 8A9B FFFD E9F0 - 8EB0 89A7 -End of Item 00DA - -Begin of Item 00DB - Format 1 - srcBegin = 9D3B - srcEnd = 9D7A - mappingOffset = 432C - Mapping = - 8D83 FFFD FFFD E9FA E9F9 FFFD E9F8 FFFD - FFFD E9F5 FFFD E9FB FFFD E9FC FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EA44 EA43 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD EA45 FFFD - FFFD 894C EA40 EA41 FFFD 8D94 96B7 FFFD - FFFD EA42 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 9651 FFFD FFFD EA4A FFFD FFFD EA46 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EA4B -End of Item 00DB - -Begin of Item 00DC - Format 1 - srcBegin = 9D87 - srcEnd = 9DD9 - mappingOffset = 436C - Mapping = - EA48 FFFD EA47 FFFD FFFD FFFD FFFD FFFD - 8C7B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EA4C FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EA4D FFFD FFFD - FFFD FFFD EA4E FFFD EA49 FFFD FFFD FFFD - E9F2 FFFD FFFD EA4F FFFD 92DF FFFD FFFD - FFFD EA53 FFFD EA54 EA52 FFFD FFFD FFFD - FFFD FFFD EA51 EA57 FFFD EA50 FFFD EA55 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EA56 FFFD FFFD FFFD EA59 FFFD FFFD FFFD - FFFD FFFD EA58 -End of Item 00DC - -Begin of Item 00DD - Format 1 - srcBegin = 9DE6 - srcEnd = 9DFD - mappingOffset = 43BF - Mapping = - EA5B FFFD FFFD FFFD FFFD FFFD FFFD EA5C - FFFD EA5D FFFD FFFD 9868 FFFD FFFD FFFD - FFFD FFFD EA5A 91E9 8DEB FFFD FFFD EA5E -End of Item 00DD - -Begin of Item 00DE - Format 1 - srcBegin = 9E1A - srcEnd = 9E1E - mappingOffset = 43D7 - Mapping = - EA5F EA60 FFFD FFFD EA61 -End of Item 00DE - -Begin of Item 00DF - Format 1 - srcBegin = 9E75 - srcEnd = 9F2C - mappingOffset = 43DC - Mapping = - EA62 FFFD FFFD 8CB2 EA63 FFFD FFFD FFFD - EA64 FFFD 8EAD FFFD EA65 FFFD FFFD FFFD - FFFD FFFD FFFD EA66 FFFD FFFD EA67 EA68 - FFFD FFFD FFFD FFFD EA6B EA69 985B FFFD - EA6A FFFD 97ED FFFD FFFD FFFD FFFD FFFD - EA6C FFFD 97D9 FFFD FFFD FFFD FFFD FFFD - EA6D 949E FFFD FFFD EA6E EA70 FFFD FFFD - EA71 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD EA6F 8D8D 96CB 9683 9BF5 - FFFD 9F80 969B FFFD FFFD FFFD FFFD 89A9 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EA73 - 8B6F EA74 EA75 EA76 FFFD 8D95 FFFD EA77 - FFFD FFFD FFFD E0D2 96D9 FFFD 91E1 EA78 - EA7A EA79 FFFD EA7B FFFD FFFD FFFD FFFD - EA7C FFFD FFFD EA7D FFFD FFFD FFFD FFFD - FFFD FFFD EA7E FFFD FFFD FFFD FFFD EA80 - FFFD EA81 EA82 FFFD EA83 FFFD EA84 EA85 - EA86 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD EA87 EA88 FFFD FFFD FFFD FFFD - FFFD 9343 FFFD FFFD FFFD FFFD 8CDB FFFD - EA8A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 916C EA8B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD EA8C -End of Item 00DF - -Begin of Item 00E0 - Format 1 - srcBegin = 9F3B - srcEnd = 9F3E - mappingOffset = 4494 - Mapping = - 9540 FFFD FFFD EA8D -End of Item 00E0 - -Begin of Item 00E1 - Format 1 - srcBegin = 9F4A - srcEnd = 9F77 - mappingOffset = 4498 - Mapping = - EA8E E256 FFFD FFFD E6D8 E8EB FFFD FFFD - EA8F FFFD EA90 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD EA92 EA93 EA94 - 97EE EA91 FFFD FFFD EA95 EA96 FFFD FFFD - EA98 FFFD EA97 FFFD FFFD FFFD FFFD FFFD - EA9A FFFD FFFD FFFD EA9B EA99 -End of Item 00E1 - -Begin of Item 00E2 - Format 1 - srcBegin = 9F8D - srcEnd = 9FA0 - mappingOffset = 44C6 - Mapping = - 97B4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - EA9C FFFD FFFD FFFD FFFD FFFD FFFD EA9D - E273 FFFD FFFD EA9E -End of Item 00E2 - -Begin of Item 00E3 - Format 1 - srcBegin = FF01 - srcEnd = FF20 - mappingOffset = 44DA - Mapping = - 8149 FFFD 8194 8190 8193 8195 FFFD 8169 - 816A 8196 817B 8143 FFFD 8144 815E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8146 8147 8183 8181 8184 8148 8197 -End of Item 00E3 - -Begin of Item 00E4 - Format 1 - srcBegin = FF3B - srcEnd = FF40 - mappingOffset = 44FA - Mapping = - 816D FFFD 816E 814F 8151 814D -End of Item 00E4 - -Begin of Item 00E5 - Format 1 - srcBegin = FF5B - srcEnd = FF5D - mappingOffset = 4500 - Mapping = - 816F 8162 8170 -End of Item 00E5 - -Begin of Item 00E6 - Format 1 - srcBegin = FFE3 - srcEnd = FFE5 - mappingOffset = 4503 - Mapping = - 8150 FFFD 818F -End of Item 00E6 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x00E7, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x003E, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x02F3, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0013 */ -/* Total of Format 1 : 0x00C2 */ -/* Total of Format 2 : 0x0012 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0x2221, 0x2212, 0x2111, -0x2211, 0x2111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1121, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1211, 0x1111, 0x1111, 0x1121, 0x1111, -0x1211, 0x1111, 0x1111, 0x1112, 0x1111, 0x1111, 0x1111, 0x1111, -0x1211, 0x1111, 0x1112, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x0111, -/*-------------------------------------------------------*/ -/* Offset=0x003E Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x005D, 0x007D, 0x005D, -/* 0002 */ 0x0391, 0x03A1, 0x839F, -/* 0003 */ 0x03A3, 0x03A9, 0x83B0, -/* 0004 */ 0x03B1, 0x03C1, 0x83BF, -/* 0005 */ 0x03C3, 0x03C9, 0x83D0, -/* 0006 */ 0x0410, 0x0415, 0x8440, -/* 0007 */ 0x0416, 0x042F, 0x8447, -/* 0008 */ 0x0430, 0x0435, 0x8470, -/* 0009 */ 0x0436, 0x043D, 0x8477, -/* 000A */ 0x043E, 0x044F, 0x8480, -/* 000B */ 0x3008, 0x3011, 0x8171, -/* 000C */ 0x3041, 0x3093, 0x829F, -/* 000D */ 0x30A1, 0x30DF, 0x8340, -/* 000E */ 0x30E0, 0x30F6, 0x8380, -/* 000F */ 0xFF10, 0xFF19, 0x824F, -/* 0010 */ 0xFF21, 0xFF3A, 0x8260, -/* 0011 */ 0xFF41, 0xFF5A, 0x8281, -/* 0012 */ 0xFF61, 0xFF9F, 0x00A1, -/* 0013 */ 0x005C, 0x0000, 0x815F, -/* 0014 */ 0x00A2, 0x00B6, 0x0000, -/* 0015 */ 0x00D7, 0x0000, 0x817E, -/* 0016 */ 0x00F7, 0x0000, 0x8180, -/* 0017 */ 0x0401, 0x0000, 0x8446, -/* 0018 */ 0x0451, 0x0000, 0x8476, -/* 0019 */ 0x2010, 0x203E, 0x0015, -/* 001A */ 0x2103, 0x0000, 0x818E, -/* 001B */ 0x212B, 0x0000, 0x81F0, -/* 001C */ 0x2190, 0x2193, 0x0044, -/* 001D */ 0x21D2, 0x21D4, 0x0048, -/* 001E */ 0x2200, 0x223D, 0x004B, -/* 001F */ 0x2252, 0x0000, 0x81E0, -/* 0020 */ 0x2260, 0x226B, 0x0089, -/* 0021 */ 0x2282, 0x2287, 0x0095, -/* 0022 */ 0x22A5, 0x0000, 0x81DB, -/* 0023 */ 0x2312, 0x0000, 0x81DC, -/* 0024 */ 0x2500, 0x254B, 0x009B, -/* 0025 */ 0x25A0, 0x25A1, 0x00E7, -/* 0026 */ 0x25B2, 0x25CF, 0x00E9, -/* 0027 */ 0x25EF, 0x0000, 0x81FC, -/* 0028 */ 0x2605, 0x2606, 0x0107, -/* 0029 */ 0x2640, 0x2642, 0x0109, -/* 002A */ 0x266A, 0x266F, 0x010C, -/* 002B */ 0x3000, 0x301C, 0x0112, -/* 002C */ 0x309B, 0x309E, 0x012F, -/* 002D */ 0x30FB, 0x30FE, 0x0133, -/* 002E */ 0x4E00, 0x4E62, 0x0137, -/* 002F */ 0x4E71, 0x4F1D, 0x019A, -/* 0030 */ 0x4F2F, 0x509A, 0x0247, -/* 0031 */ 0x50AC, 0x5384, 0x03B3, -/* 0032 */ 0x5396, 0x5451, 0x068C, -/* 0033 */ 0x545F, 0x5492, 0x0748, -/* 0034 */ 0x54A2, 0x54C9, 0x077C, -/* 0035 */ 0x54D8, 0x5516, 0x07A4, -/* 0036 */ 0x552E, 0x5563, 0x07E3, -/* 0037 */ 0x557B, 0x558B, 0x0819, -/* 0038 */ 0x5598, 0x55B6, 0x082A, -/* 0039 */ 0x55C4, 0x55C7, 0x0849, -/* 003A */ 0x55D4, 0x55E4, 0x084D, -/* 003B */ 0x55F7, 0x561B, 0x085E, -/* 003C */ 0x5629, 0x5694, 0x0883, -/* 003D */ 0x56A0, 0x5751, 0x08EF, -/* 003E */ 0x5761, 0x576A, 0x09A1, -/* 003F */ 0x577F, 0x5793, 0x09AB, -/* 0040 */ 0x57A0, 0x57B3, 0x09C0, -/* 0041 */ 0x57C0, 0x57E3, 0x09D4, -/* 0042 */ 0x57F4, 0x5885, 0x09F8, -/* 0043 */ 0x5893, 0x5A49, 0x0A8A, -/* 0044 */ 0x5A5A, 0x5A6C, 0x0C41, -/* 0045 */ 0x5A7F, 0x0000, 0x96B9, -/* 0046 */ 0x5A92, 0x5A9B, 0x0C54, -/* 0047 */ 0x5ABC, 0x5AE9, 0x0C5E, -/* 0048 */ 0x5AFA, 0x5AFB, 0x0C8C, -/* 0049 */ 0x5B09, 0x5B16, 0x0C8E, -/* 004A */ 0x5B22, 0x5C79, 0x0C9C, -/* 004B */ 0x5C8C, 0x5C94, 0x0DF4, -/* 004C */ 0x5CA1, 0x5CC7, 0x0DFD, -/* 004D */ 0x5CD9, 0x5D29, 0x0E24, -/* 004E */ 0x5D4B, 0x5D5C, 0x0E75, -/* 004F */ 0x5D69, 0x5D76, 0x0E87, -/* 0050 */ 0x5D82, 0x5D90, 0x0E95, -/* 0051 */ 0x5D9D, 0x5DBD, 0x0EA4, -/* 0052 */ 0x5DC9, 0x5E64, 0x0EC5, -/* 0053 */ 0x5E72, 0x5FFF, 0x0F61, -/* 0054 */ 0x600E, 0x61D0, 0x10EF, -/* 0055 */ 0x61E3, 0x61E6, 0x12B2, -/* 0056 */ 0x61F2, 0x629E, 0x12B6, -/* 0057 */ 0x62AB, 0x63FA, 0x1363, -/* 0058 */ 0x6406, 0x6442, 0x14B3, -/* 0059 */ 0x644E, 0x6458, 0x14F0, -/* 005A */ 0x6467, 0x6505, 0x14FB, -/* 005B */ 0x6518, 0x66C9, 0x159A, -/* 005C */ 0x66D6, 0x6804, 0x174C, -/* 005D */ 0x6813, 0x6867, 0x187B, -/* 005E */ 0x6874, 0x6A4B, 0x18D0, -/* 005F */ 0x6A58, 0x6A66, 0x1AA8, -/* 0060 */ 0x6A72, 0x6AC3, 0x1AB7, -/* 0061 */ 0x6AD1, 0x6AEA, 0x1B09, -/* 0062 */ 0x6AFA, 0x6BDF, 0x1B23, -/* 0063 */ 0x6BEB, 0x6BF3, 0x1C09, -/* 0064 */ 0x6C08, 0x6C24, 0x1C12, -/* 0065 */ 0x6C34, 0x6C42, 0x1C2F, -/* 0066 */ 0x6C4E, 0x6CF3, 0x1C3E, -/* 0067 */ 0x6D0B, 0x6D45, 0x1CE4, -/* 0068 */ 0x6D59, 0x6D79, 0x1D1F, -/* 0069 */ 0x6D85, 0x6D9C, 0x1D40, -/* 006A */ 0x6DAF, 0x6EDE, 0x1D58, -/* 006B */ 0x6EEC, 0x6F45, 0x1E88, -/* 006C */ 0x6F54, 0x6FC6, 0x1EE2, -/* 006D */ 0x6FD4, 0x7032, 0x1F55, -/* 006E */ 0x703E, 0x0000, 0xE070, -/* 006F */ 0x704C, 0x707D, 0x1FB4, -/* 0070 */ 0x7089, 0x7099, 0x1FE6, -/* 0071 */ 0x70AC, 0x70BA, 0x1FF7, -/* 0072 */ 0x70C8, 0x70DF, 0x2006, -/* 0073 */ 0x70F1, 0x70FD, 0x201E, -/* 0074 */ 0x7109, 0x7126, 0x202B, -/* 0075 */ 0x7136, 0x713C, 0x2049, -/* 0076 */ 0x7149, 0x716E, 0x2050, -/* 0077 */ 0x717D, 0x721B, 0x2076, -/* 0078 */ 0x7228, 0x72FD, 0x2115, -/* 0079 */ 0x730A, 0x0000, 0xE0C7, -/* 007A */ 0x7316, 0x7357, 0x21EB, -/* 007B */ 0x7363, 0x7396, 0x222D, -/* 007C */ 0x73A9, 0x73CE, 0x2261, -/* 007D */ 0x73DE, 0x7409, 0x2287, -/* 007E */ 0x7422, 0x7425, 0x22B3, -/* 007F */ 0x7432, 0x7441, 0x22B7, -/* 0080 */ 0x7455, 0x748B, 0x22C7, -/* 0081 */ 0x749E, 0x74B0, 0x22FE, -/* 0082 */ 0x74BD, 0x0000, 0x8EA3, -/* 0083 */ 0x74CA, 0x760D, 0x2311, -/* 0084 */ 0x761F, 0x769A, 0x2455, -/* 0085 */ 0x76AE, 0x770C, 0x24D1, -/* 0086 */ 0x771B, 0x7729, 0x2530, -/* 0087 */ 0x7737, 0x7747, 0x253F, -/* 0088 */ 0x775A, 0x776B, 0x2550, -/* 0089 */ 0x7779, 0x777F, 0x2562, -/* 008A */ 0x778B, 0x7791, 0x2569, -/* 008B */ 0x779E, 0x7845, 0x2570, -/* 008C */ 0x785D, 0x0000, 0x8FC9, -/* 008D */ 0x786B, 0x78DA, 0x2618, -/* 008E */ 0x78E7, 0x7919, 0x2688, -/* 008F */ 0x7926, 0x792C, 0x26BB, -/* 0090 */ 0x793A, 0x798F, 0x26C2, -/* 0091 */ 0x799D, 0x7A20, 0x2718, -/* 0092 */ 0x7A2E, 0x7B39, 0x279C, -/* 0093 */ 0x7B45, 0x7B7A, 0x28A8, -/* 0094 */ 0x7B86, 0x7BCF, 0x28DE, -/* 0095 */ 0x7BDD, 0x7C2B, 0x2928, -/* 0096 */ 0x7C37, 0x7D7D, 0x2977, -/* 0097 */ 0x7D89, 0x7E9C, 0x2ABE, -/* 0098 */ 0x7F36, 0x810A, 0x2BD2, -/* 0099 */ 0x811A, 0x8247, 0x2DA7, -/* 009A */ 0x8258, 0x827E, 0x2ED5, -/* 009B */ 0x828B, 0x82C5, 0x2EFC, -/* 009C */ 0x82D1, 0x8358, 0x2F37, -/* 009D */ 0x8373, 0x8413, 0x2FBF, -/* 009E */ 0x8420, 0x84A1, 0x3060, -/* 009F */ 0x84AD, 0x84DA, 0x30E2, -/* 00A0 */ 0x84EC, 0x85EA, 0x3110, -/* 00A1 */ 0x85F7, 0x8630, 0x320F, -/* 00A2 */ 0x863F, 0x0000, 0xE566, -/* 00A3 */ 0x864D, 0x867B, 0x3249, -/* 00A4 */ 0x868A, 0x8695, 0x3278, -/* 00A5 */ 0x86A3, 0x86B6, 0x3284, -/* 00A6 */ 0x86C4, 0x878D, 0x3298, -/* 00A7 */ 0x879F, 0x87D2, 0x3362, -/* 00A8 */ 0x87E0, 0x0000, 0xE5B4, -/* 00A9 */ 0x87EF, 0x89C0, 0x3396, -/* 00AA */ 0x89D2, 0x89E7, 0x3568, -/* 00AB */ 0x89F4, 0x8B9A, 0x357E, -/* 00AC */ 0x8C37, 0x8C6C, 0x3725, -/* 00AD */ 0x8C78, 0x8CED, 0x375B, -/* 00AE */ 0x8CFA, 0x8D16, 0x37D1, -/* 00AF */ 0x8D64, 0x8D8A, 0x37EE, -/* 00B0 */ 0x8D99, 0x8E10, 0x3815, -/* 00B1 */ 0x8E1D, 0x8E35, 0x388D, -/* 00B2 */ 0x8E42, 0x8E64, 0x38A6, -/* 00B3 */ 0x8E72, 0x8EB1, 0x38C9, -/* 00B4 */ 0x8EBE, 0x8EEB, 0x3909, -/* 00B5 */ 0x8EF8, 0x8F64, 0x3937, -/* 00B6 */ 0x8F9B, 0x9091, 0x39A4, -/* 00B7 */ 0x90A3, 0x90CE, 0x3A9B, -/* 00B8 */ 0x90DB, 0x9102, 0x3AC7, -/* 00B9 */ 0x9112, 0x9119, 0x3AEF, -/* 00BA */ 0x912D, 0x9132, 0x3AF7, -/* 00BB */ 0x9149, 0x91E7, 0x3AFD, -/* 00BC */ 0x91F5, 0x91FF, 0x3B9C, -/* 00BD */ 0x920D, 0x9271, 0x3BA7, -/* 00BE */ 0x927E, 0x9285, 0x3C0C, -/* 00BF */ 0x9291, 0x929C, 0x3C14, -/* 00C0 */ 0x92AD, 0x92B9, 0x3C20, -/* 00C1 */ 0x92CF, 0x92D2, 0x3C2D, -/* 00C2 */ 0x92E4, 0x9360, 0x3C31, -/* 00C3 */ 0x936C, 0x937E, 0x3CAE, -/* 00C4 */ 0x938C, 0x939A, 0x3CC1, -/* 00C5 */ 0x93A7, 0x93E8, 0x3CD0, -/* 00C6 */ 0x9403, 0x9444, 0x3D12, -/* 00C7 */ 0x9451, 0x9481, 0x3D54, -/* 00C8 */ 0x9577, 0x95E5, 0x3D85, -/* 00C9 */ 0x961C, 0x97B4, 0x3DF4, -/* 00CA */ 0x97C3, 0x97DC, 0x3F8D, -/* 00CB */ 0x97ED, 0x9874, 0x3FA7, -/* 00CC */ 0x98A8, 0x98B6, 0x402F, -/* 00CD */ 0x98C3, 0x98C6, 0x403E, -/* 00CE */ 0x98DB, 0x992E, 0x4042, -/* 00CF */ 0x993D, 0x9957, 0x4096, -/* 00D0 */ 0x9996, 0x9999, 0x40B1, -/* 00D1 */ 0x99A5, 0x9A19, 0x40B5, -/* 00D2 */ 0x9A28, 0x9A6B, 0x412A, -/* 00D3 */ 0x9AA8, 0x9B06, 0x416E, -/* 00D4 */ 0x9B18, 0x9B5A, 0x41CD, -/* 00D5 */ 0x9B6F, 0x9B74, 0x4210, -/* 00D6 */ 0x9B83, 0x9BF5, 0x4216, -/* 00D7 */ 0x9C04, 0x9C67, 0x4289, -/* 00D8 */ 0x9C76, 0x9C78, 0x42ED, -/* 00D9 */ 0x9CE5, 0x9CF6, 0x42F0, -/* 00DA */ 0x9D03, 0x9D2C, 0x4302, -/* 00DB */ 0x9D3B, 0x9D7A, 0x432C, -/* 00DC */ 0x9D87, 0x9DD9, 0x436C, -/* 00DD */ 0x9DE6, 0x9DFD, 0x43BF, -/* 00DE */ 0x9E1A, 0x9E1E, 0x43D7, -/* 00DF */ 0x9E75, 0x9F2C, 0x43DC, -/* 00E0 */ 0x9F3B, 0x9F3E, 0x4494, -/* 00E1 */ 0x9F4A, 0x9F77, 0x4498, -/* 00E2 */ 0x9F8D, 0x9FA0, 0x44C6, -/* 00E3 */ 0xFF01, 0xFF20, 0x44DA, -/* 00E4 */ 0xFF3B, 0xFF40, 0x44FA, -/* 00E5 */ 0xFF5B, 0xFF5D, 0x4500, -/* 00E6 */ 0xFFE3, 0xFFE5, 0x4503, -/*-------------------------------------------------------*/ -/* Offset=0x02F3 Start of MappingTable */ - -/* 0000 */ 0x8191, 0x8192, 0xFFFD, 0x005C, 0xFFFD, 0x8198, 0x814E, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0x81CA, 0xFFFD, 0xFFFD, 0xFFFD, 0x818B, 0x817D, -/* 0010 */ 0xFFFD, 0xFFFD, 0x814C, 0xFFFD, 0x81F7, 0x815D, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0x815C, 0x8161, 0xFFFD, 0x8165, 0x8166, 0xFFFD, -/* 0020 */ 0xFFFD, 0x8167, 0x8168, 0xFFFD, 0xFFFD, 0x81F5, 0x81F6, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0x8164, 0x8163, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x81F1, 0xFFFD, 0x818C, -/* 0038 */ 0x818D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0x81A6, 0xFFFD, 0xFFFD, 0x007E, 0x81A9, 0x81AA, 0x81A8, 0x81AB, -/* 0048 */ 0x81CB, 0xFFFD, 0x81CC, 0x81CD, 0xFFFD, 0x81DD, 0x81CE, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0x81DE, 0x81B8, 0xFFFD, 0xFFFD, 0x81B9, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x817C, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x81E3, 0xFFFD, 0xFFFD, -/* 0068 */ 0x81E5, 0x8187, 0xFFFD, 0x81DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xFFFD, 0x81C8, 0x81C9, 0x81BF, 0x81BE, 0x81E7, 0x81E8, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8188, -/* 0080 */ 0x81E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0x81E4, 0x8182, 0x81DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8185, -/* 0090 */ 0x8186, 0xFFFD, 0xFFFD, 0x81E1, 0x81E2, 0x81BC, 0x81BD, 0xFFFD, -/* 0098 */ 0xFFFD, 0x81BA, 0x81BB, 0x849F, 0x84AA, 0x84A0, 0x84AB, 0xFFFD, -/* 00A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x84A1, -/* 00A8 */ 0xFFFD, 0xFFFD, 0x84AC, 0x84A2, 0xFFFD, 0xFFFD, 0x84AD, 0x84A4, -/* 00B0 */ 0xFFFD, 0xFFFD, 0x84AF, 0x84A3, 0xFFFD, 0xFFFD, 0x84AE, 0x84A5, -/* 00B8 */ 0x84BA, 0xFFFD, 0xFFFD, 0x84B5, 0xFFFD, 0xFFFD, 0x84B0, 0x84A7, -/* 00C0 */ 0x84BC, 0xFFFD, 0xFFFD, 0x84B7, 0xFFFD, 0xFFFD, 0x84B2, 0x84A6, -/* 00C8 */ 0xFFFD, 0xFFFD, 0x84B6, 0x84BB, 0xFFFD, 0xFFFD, 0x84B1, 0x84A8, -/* 00D0 */ 0xFFFD, 0xFFFD, 0x84B8, 0x84BD, 0xFFFD, 0xFFFD, 0x84B3, 0x84A9, -/* 00D8 */ 0xFFFD, 0xFFFD, 0x84B9, 0xFFFD, 0xFFFD, 0x84BE, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x84B4, 0x81A1, -/* 00E8 */ 0x81A0, 0x81A3, 0x81A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x81A5, 0x81A4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x819F, 0x819E, 0xFFFD, -/* 0100 */ 0xFFFD, 0xFFFD, 0x819B, 0xFFFD, 0xFFFD, 0x819D, 0x819C, 0x819A, -/* 0108 */ 0x8199, 0x818A, 0xFFFD, 0x8189, 0x81F4, 0xFFFD, 0xFFFD, 0x81F3, -/* 0110 */ 0xFFFD, 0x81F2, 0x8140, 0x8141, 0x8142, 0x8156, 0xFFFD, 0x8158, -/* 0118 */ 0x8159, 0x815A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x81A7, 0x81AC, 0x816B, 0x816C, -/* 0128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8160, 0x814A, -/* 0130 */ 0x814B, 0x8154, 0x8155, 0x8145, 0x815B, 0x8152, 0x8153, 0x88EA, -/* 0138 */ 0x929A, 0xFFFD, 0x8EB5, 0xFFFD, 0xFFFD, 0xFFFD, 0x969C, 0x8FE4, -/* 0140 */ 0x8E4F, 0x8FE3, 0x89BA, 0xFFFD, 0x9573, 0x975E, 0xFFFD, 0x98A0, -/* 0148 */ 0x894E, 0xFFFD, 0xFFFD, 0x8A8E, 0x98A1, 0x90A2, 0x99C0, 0x8B75, -/* 0150 */ 0x95B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FE5, 0xFFFD, 0xFFFD, -/* 0158 */ 0x97BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95C0, 0xFFFD, 0xFFFD, -/* 0160 */ 0xFFFD, 0x98A2, 0xFFFD, 0xFFFD, 0x9286, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0168 */ 0x98A3, 0x8BF8, 0xFFFD, 0xFFFD, 0xFFFD, 0x98A4, 0xFFFD, 0x8ADB, -/* 0170 */ 0x924F, 0xFFFD, 0x8EE5, 0x98A5, 0xFFFD, 0xFFFD, 0x98A6, 0xFFFD, -/* 0178 */ 0xFFFD, 0x98A7, 0x9454, 0xFFFD, 0x8B76, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0180 */ 0xFFFD, 0xFFFD, 0x9456, 0xFFFD, 0x93E1, 0x8CC1, 0x9652, 0xFFFD, -/* 0188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE568, 0x98A8, 0x8FE6, 0x98A9, -/* 0190 */ 0x89B3, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BE3, 0x8CEE, 0x96E7, 0xFFFD, -/* 0198 */ 0xFFFD, 0x9BA4, 0x9790, 0xFFFD, 0x93FB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AA3, -/* 01A8 */ 0xFFFD, 0x8B54, 0xFFFD, 0x98AA, 0xFFFD, 0xFFFD, 0x98AB, 0x97B9, -/* 01B0 */ 0xFFFD, 0x975C, 0x9188, 0x98AD, 0x8E96, 0x93F1, 0xFFFD, 0x98B0, -/* 01B8 */ 0xFFFD, 0xFFFD, 0x895D, 0x8CDD, 0xFFFD, 0x8CDC, 0x88E4, 0xFFFD, -/* 01C0 */ 0xFFFD, 0x986A, 0x9869, 0xFFFD, 0x8DB1, 0x889F, 0xFFFD, 0x98B1, -/* 01C8 */ 0x98B2, 0x98B3, 0x9653, 0x98B4, 0xFFFD, 0x8CF0, 0x88E5, 0x9692, -/* 01D0 */ 0xFFFD, 0x8B9C, 0xFFFD, 0xFFFD, 0x8B9D, 0x8B9E, 0x92E0, 0x97BA, -/* 01D8 */ 0xFFFD, 0x98B5, 0xFFFD, 0xFFFD, 0x98B6, 0xFFFD, 0xFFFD, 0x98B7, -/* 01E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x906C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E8 */ 0xFFFD, 0x8F59, 0x906D, 0x98BC, 0xFFFD, 0x98BA, 0xFFFD, 0x98BB, -/* 01F0 */ 0x8B77, 0xFFFD, 0xFFFD, 0x8DA1, 0x89EE, 0xFFFD, 0x98B9, 0x98B8, -/* 01F8 */ 0x95A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E65, 0x8E64, 0x91BC, -/* 0200 */ 0x98BD, 0x9574, 0x90E5, 0xFFFD, 0xFFFD, 0xFFFD, 0x8157, 0x98BE, -/* 0208 */ 0x98C0, 0xFFFD, 0xFFFD, 0xFFFD, 0x91E3, 0x97DF, 0x88C8, 0xFFFD, -/* 0210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x98BF, 0x89BC, -/* 0218 */ 0xFFFD, 0x8BC2, 0xFFFD, 0x9287, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C8F, -/* 0220 */ 0x98C1, 0xFFFD, 0xFFFD, 0xFFFD, 0x9443, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0228 */ 0xFFFD, 0xFFFD, 0x8AE9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0230 */ 0xFFFD, 0xFFFD, 0x98C2, 0x88C9, 0xFFFD, 0xFFFD, 0x8CDE, 0x8AEA, -/* 0238 */ 0x959A, 0x94B0, 0x8B78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x89EF, 0xFFFD, 0x98E5, 0x9360, 0x948C, -/* 0248 */ 0x98C4, 0xFFFD, 0xFFFD, 0xFFFD, 0x94BA, 0xFFFD, 0x97E0, 0xFFFD, -/* 0250 */ 0x904C, 0xFFFD, 0x8E66, 0xFFFD, 0x8E97, 0x89BE, 0xFFFD, 0xFFFD, -/* 0258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x92CF, 0xFFFD, 0xFFFD, 0x9241, 0x98C8, -/* 0260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88CA, 0x92E1, 0x8F5A, -/* 0268 */ 0x8DB2, 0x9743, 0xFFFD, 0x91CC, 0xFFFD, 0x89BD, 0xFFFD, 0x98C7, -/* 0270 */ 0xFFFD, 0x975D, 0x98C3, 0x98C5, 0x8DEC, 0x98C6, 0x9B43, 0xFFFD, -/* 0278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0280 */ 0xFFFD, 0x98CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x98D1, -/* 0288 */ 0x98CF, 0xFFFD, 0xFFFD, 0x89C0, 0xFFFD, 0x95B9, 0x98C9, 0xFFFD, -/* 0290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x98CD, 0x8CF1, 0xFFFD, 0xFFFD, 0x8E67, -/* 0298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8AA4, 0xFFFD, 0xFFFD, 0x98D2, 0xFFFD, -/* 02A0 */ 0x98CA, 0xFFFD, 0xFFFD, 0x97E1, 0xFFFD, 0x8E98, 0xFFFD, 0x98CB, -/* 02A8 */ 0xFFFD, 0x98D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x98D3, 0xFFFD, -/* 02B0 */ 0x98CC, 0xFFFD, 0xFFFD, 0x8B9F, 0xFFFD, 0x88CB, 0xFFFD, 0xFFFD, -/* 02B8 */ 0x8BA0, 0x89BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9B44, 0xFFFD, 0x9699, 0x958E, 0x8CF2, -/* 02C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x904E, 0x97B5, 0xFFFD, -/* 02D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95D6, -/* 02D8 */ 0xFFFD, 0xFFFD, 0x8C57, 0x91A3, 0x89E2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02E0 */ 0xFFFD, 0xFFFD, 0x8F72, 0xFFFD, 0xFFFD, 0xFFFD, 0x98D7, 0xFFFD, -/* 02E8 */ 0x98DC, 0x98DA, 0xFFFD, 0xFFFD, 0x98D5, 0xFFFD, 0xFFFD, 0x91AD, -/* 02F0 */ 0x98D8, 0xFFFD, 0x98DB, 0x98D9, 0xFFFD, 0x95DB, 0xFFFD, 0x98D6, -/* 02F8 */ 0xFFFD, 0x904D, 0xFFFD, 0x9693, 0x98DD, 0x98DE, 0xFFFD, 0xFFFD, -/* 0300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F43, 0x98EB, -/* 0308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x946F, 0xFFFD, 0x9555, 0x98E6, 0xFFFD, -/* 0310 */ 0x95EE, 0xFFFD, 0x89B4, 0xFFFD, 0xFFFD, 0xFFFD, 0x98EA, 0xFFFD, -/* 0318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x98E4, 0x98ED, 0xFFFD, -/* 0320 */ 0xFFFD, 0x9171, 0xFFFD, 0x8CC2, 0xFFFD, 0x947B, 0xFFFD, 0xE0C5, -/* 0328 */ 0xFFFD, 0x98EC, 0x937C, 0xFFFD, 0x98E1, 0xFFFD, 0x8CF4, 0xFFFD, -/* 0330 */ 0xFFFD, 0x8CF3, 0x98DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8ED8, -/* 0338 */ 0xFFFD, 0x98E7, 0xFFFD, 0x95ED, 0x926C, 0x98E3, 0x8C91, 0xFFFD, -/* 0340 */ 0x98E0, 0x98E8, 0x98E2, 0x97CF, 0x98E9, 0x9860, 0xFFFD, 0xFFFD, -/* 0348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BE4, 0xFFFD, -/* 0350 */ 0xFFFD, 0x8C90, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x98EE, 0xFFFD, 0xFFFD, 0xFFFD, 0x98EF, -/* 0360 */ 0x98F3, 0x88CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95CE, -/* 0368 */ 0x98F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x98F1, 0x98F5, 0xFFFD, -/* 0370 */ 0xFFFD, 0xFFFD, 0x98F4, 0xFFFD, 0x92E2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C92, 0xFFFD, 0xFFFD, -/* 0380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x98F6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0388 */ 0xFFFD, 0xFFFD, 0x8EC3, 0xFFFD, 0x91A4, 0x92E3, 0x8BF4, 0xFFFD, -/* 0390 */ 0x98F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B55, 0xFFFD, 0xFFFD, -/* 0398 */ 0x98F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x98FA, 0xFFFD, 0xFFFD, -/* 03A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9654, 0xFFFD, 0xFFFD, -/* 03A8 */ 0xFFFD, 0x8C86, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03B0 */ 0x8E50, 0x94F5, 0x98F9, 0x8DC3, 0x9762, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03B8 */ 0xFFFD, 0x98FC, 0x9942, 0x98FB, 0x8DC2, 0xFFFD, 0x8F9D, 0xFFFD, -/* 03C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C58, 0xFFFD, 0xFFFD, -/* 03C8 */ 0xFFFD, 0x9943, 0xFFFD, 0xFFFD, 0x8BCD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03D0 */ 0x9940, 0x9941, 0xFFFD, 0xFFFD, 0x93AD, 0xFFFD, 0x919C, 0xFFFD, -/* 03D8 */ 0x8BA1, 0xFFFD, 0xFFFD, 0xFFFD, 0x966C, 0x9944, 0xFFFD, 0xFFFD, -/* 03E0 */ 0xFFFD, 0x97BB, 0xFFFD, 0xFFFD, 0xFFFD, 0x9945, 0xFFFD, 0xFFFD, -/* 03E8 */ 0xFFFD, 0xFFFD, 0x9948, 0xFFFD, 0x9946, 0xFFFD, 0x916D, 0xFFFD, -/* 03F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9947, 0x9949, 0xFFFD, 0xFFFD, -/* 03F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x994B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0400 */ 0x994A, 0xFFFD, 0x95C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B56, -/* 0408 */ 0x994D, 0x994E, 0xFFFD, 0x89AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0410 */ 0x994C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0418 */ 0xFFFD, 0x8EF2, 0xFFFD, 0x9951, 0x9950, 0x994F, 0xFFFD, 0x98D4, -/* 0420 */ 0xFFFD, 0x9952, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F9E, 0xFFFD, -/* 0428 */ 0x9953, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0430 */ 0xFFFD, 0x9744, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0438 */ 0xFFFD, 0x96D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9955, 0xFFFD, -/* 0440 */ 0xFFFD, 0x9954, 0x9957, 0x9956, 0xFFFD, 0xFFFD, 0x9958, 0x9959, -/* 0448 */ 0x88F2, 0xFFFD, 0x8CB3, 0x8C5A, 0x8F5B, 0x929B, 0x8BA2, 0x90E6, -/* 0450 */ 0x8CF5, 0xFFFD, 0x8D8E, 0x995B, 0x96C6, 0x9365, 0xFFFD, 0x8E99, -/* 0458 */ 0xFFFD, 0x995A, 0xFFFD, 0x995C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0460 */ 0xFFFD, 0x937D, 0xFFFD, 0x8A95, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0468 */ 0xFFFD, 0x995D, 0xFFFD, 0xFFFD, 0x93FC, 0xFFFD, 0xFFFD, 0x9153, -/* 0470 */ 0x995F, 0x9960, 0x94AA, 0x8CF6, 0x985A, 0x9961, 0xFFFD, 0xFFFD, -/* 0478 */ 0x8BA4, 0xFFFD, 0xFFFD, 0xFFFD, 0x95BA, 0x91B4, 0x8BEF, 0x9354, -/* 0480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8C93, 0xFFFD, 0xFFFD, 0xFFFD, 0x9962, -/* 0488 */ 0xFFFD, 0x9963, 0xFFFD, 0xFFFD, 0x93E0, 0x897E, 0xFFFD, 0xFFFD, -/* 0490 */ 0x9966, 0x8DFB, 0xFFFD, 0x9965, 0x8DC4, 0xFFFD, 0x9967, 0xE3EC, -/* 0498 */ 0x9968, 0x9660, 0x9969, 0xFFFD, 0x996A, 0x996B, 0x8FE7, 0xFFFD, -/* 04A0 */ 0x8ECA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AA5, -/* 04A8 */ 0xFFFD, 0x996E, 0xFFFD, 0x996C, 0x96BB, 0x996D, 0xFFFD, 0x9579, -/* 04B0 */ 0x996F, 0x9970, 0x9971, 0x937E, 0xFFFD, 0xFFFD, 0xFFFD, 0x9975, -/* 04B8 */ 0x9973, 0x9974, 0x9972, 0x8DE1, 0x9976, 0x96E8, 0x97E2, 0xFFFD, -/* 04C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9977, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x90A6, 0x9978, 0x8F79, 0xFFFD, 0xFFFD, -/* 04D0 */ 0x9979, 0xFFFD, 0x929C, 0x97BD, 0x9380, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99C3, 0xFFFD, 0xFFFD, -/* 04E0 */ 0xFFFD, 0xFFFD, 0x997A, 0xEAA3, 0x8BC3, 0xFFFD, 0xFFFD, 0x997B, -/* 04E8 */ 0x967D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F88, 0x91FA, 0xFFFD, -/* 04F0 */ 0x997D, 0x93E2, 0xFFFD, 0xFFFD, 0x997E, 0xFFFD, 0xFFFD, 0x9980, -/* 04F8 */ 0x8A4D, 0xFFFD, 0xFFFD, 0xFFFD, 0x9981, 0x8BA5, 0xFFFD, 0x93CA, -/* 0500 */ 0x899A, 0x8F6F, 0xFFFD, 0xFFFD, 0x949F, 0x9982, 0xFFFD, 0x9381, -/* 0508 */ 0xFFFD, 0xFFFD, 0x906E, 0x9983, 0xFFFD, 0x95AA, 0x90D8, 0x8AA0, -/* 0510 */ 0xFFFD, 0x8AA7, 0x9984, 0xFFFD, 0xFFFD, 0x9986, 0xFFFD, 0xFFFD, -/* 0518 */ 0x8C59, 0xFFFD, 0xFFFD, 0x9985, 0xFFFD, 0xFFFD, 0x97F1, 0xFFFD, -/* 0520 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F89, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x94BB, 0x95CA, 0xFFFD, 0x9987, 0xFFFD, -/* 0530 */ 0x9798, 0x9988, 0xFFFD, 0xFFFD, 0xFFFD, 0x9989, 0xFFFD, 0x939E, -/* 0538 */ 0xFFFD, 0xFFFD, 0x998A, 0xFFFD, 0xFFFD, 0x90A7, 0x8DFC, 0x8C94, -/* 0540 */ 0x998B, 0x8E68, 0x8D8F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0548 */ 0xFFFD, 0xFFFD, 0x92E4, 0x998D, 0xFFFD, 0xFFFD, 0x91A5, 0xFFFD, -/* 0550 */ 0xFFFD, 0x8DED, 0x998E, 0x998F, 0x914F, 0xFFFD, 0x998C, 0xFFFD, -/* 0558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9991, 0xFFFD, 0x9655, 0xFFFD, 0xFFFD, -/* 0560 */ 0xFFFD, 0xFFFD, 0x8D84, 0xFFFD, 0xFFFD, 0x9990, 0xFFFD, 0xFFFD, -/* 0568 */ 0xFFFD, 0xFFFD, 0x8C95, 0x8DDC, 0x948D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0570 */ 0x9994, 0x9992, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x959B, 0x8FE8, -/* 0578 */ 0x999B, 0x8A84, 0x9995, 0x9993, 0x916E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0580 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9997, 0xFFFD, 0x9996, 0xFFFD, -/* 0588 */ 0xFFFD, 0xFFFD, 0x8A63, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C80, 0x999C, -/* 0590 */ 0x97AB, 0xFFFD, 0xFFFD, 0xFFFD, 0x9998, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0598 */ 0x999D, 0x999A, 0xFFFD, 0x9999, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05A0 */ 0xFFFD, 0xFFFD, 0x97CD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CF7, 0x89C1, -/* 05A8 */ 0xFFFD, 0xFFFD, 0x97F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05B0 */ 0x8F95, 0x9377, 0x8D85, 0x99A0, 0x99A1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05B8 */ 0x97E3, 0xFFFD, 0xFFFD, 0x984A, 0x99A3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05C0 */ 0x8CF8, 0xFFFD, 0xFFFD, 0x99A2, 0xFFFD, 0x8A4E, 0xFFFD, 0xFFFD, -/* 05C8 */ 0x99A4, 0xFFFD, 0x9675, 0xFFFD, 0x92BA, 0xFFFD, 0x9745, 0xFFFD, -/* 05D0 */ 0x95D7, 0xFFFD, 0xFFFD, 0xFFFD, 0x99A5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05D8 */ 0xFFFD, 0xE8D3, 0xFFFD, 0xFFFD, 0x93AE, 0xFFFD, 0x99A6, 0x8AA8, -/* 05E0 */ 0x96B1, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F9F, 0x99A7, 0x95E5, 0x99AB, -/* 05E8 */ 0xFFFD, 0x90A8, 0x99A8, 0x8BCE, 0xFFFD, 0x99A9, 0x8AA9, 0xFFFD, -/* 05F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05F8 */ 0xFFFD, 0x8C4D, 0x99AC, 0xFFFD, 0x99AD, 0xFFFD, 0xFFFD, 0x99AE, -/* 0600 */ 0x99AF, 0x8ED9, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CF9, 0x96DC, 0xFFFD, -/* 0608 */ 0x96E6, 0x93F5, 0xFFFD, 0xFFFD, 0x95EF, 0x99B0, 0xFFFD, 0x99B1, -/* 0610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99B3, 0xFFFD, 0x99B5, 0x99B4, -/* 0618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99B6, 0x89BB, 0x966B, 0xFFFD, -/* 0620 */ 0x8DFA, 0x99B7, 0xFFFD, 0xFFFD, 0x9178, 0xFFFD, 0xFFFD, 0x8FA0, -/* 0628 */ 0x8BA7, 0xFFFD, 0x99B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0630 */ 0xFFFD, 0x94D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99B9, 0xFFFD, -/* 0638 */ 0x99BA, 0xFFFD, 0x99BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99BC, -/* 0640 */ 0x9543, 0x8BE6, 0x88E3, 0xFFFD, 0xFFFD, 0xFFFD, 0x93BD, 0x99BD, -/* 0648 */ 0x8F5C, 0xFFFD, 0x90E7, 0xFFFD, 0x99BF, 0x99BE, 0x8FA1, 0x8CDF, -/* 0650 */ 0x99C1, 0x94BC, 0xFFFD, 0xFFFD, 0x99C2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0658 */ 0x94DA, 0x91B2, 0x91EC, 0x8BA6, 0xFFFD, 0xFFFD, 0x93EC, 0x9250, -/* 0660 */ 0xFFFD, 0x948E, 0xFFFD, 0x966D, 0xFFFD, 0x99C4, 0xFFFD, 0x90E8, -/* 0668 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C54, 0xFFFD, 0xFFFD, -/* 0670 */ 0x99C5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99C6, 0x894B, 0x88F3, -/* 0678 */ 0x8AEB, 0xFFFD, 0x91A6, 0x8B70, 0x9791, 0xFFFD, 0x99C9, 0x89B5, -/* 0680 */ 0xFFFD, 0xFFFD, 0x99C8, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BA8, 0xFFFD, -/* 0688 */ 0xFFFD, 0x99CA, 0xFFFD, 0x96EF, 0x99CB, 0xFFFD, 0x97D0, 0xFFFD, -/* 0690 */ 0x8CFA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CB4, 0x99CC, 0xFFFD, -/* 0698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x99CE, 0x99CD, 0xFFFD, 0x907E, 0x8958, -/* 06A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x897D, 0x99CF, 0xFFFD, 0x99D0, 0xFFFD, -/* 06A8 */ 0xFFFD, 0x8CB5, 0xFFFD, 0xFFFD, 0x99D1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06B0 */ 0xFFFD, 0x8B8E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06B8 */ 0x8E51, 0x99D2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9694, 0x8DB3, -/* 06C0 */ 0x8B79, 0x9746, 0x916F, 0x94BD, 0x8EFB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06C8 */ 0xFFFD, 0xFFFD, 0x8F66, 0xFFFD, 0x8EE6, 0x8EF3, 0xFFFD, 0x8F96, -/* 06D0 */ 0xFFFD, 0x94BE, 0xFFFD, 0xFFFD, 0xFFFD, 0x99D5, 0xFFFD, 0x8962, -/* 06D8 */ 0x9170, 0x8CFB, 0x8CC3, 0x8BE5, 0xFFFD, 0xFFFD, 0x99D9, 0x9240, -/* 06E0 */ 0x91FC, 0x8BA9, 0x8FA2, 0x99DA, 0x99D8, 0x89C2, 0x91E4, 0x8EB6, -/* 06E8 */ 0x8E6A, 0x8945, 0xFFFD, 0xFFFD, 0x8A90, 0x8D86, 0x8E69, 0xFFFD, -/* 06F0 */ 0x99DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99DC, -/* 06F8 */ 0xFFFD, 0x8B68, 0x8A65, 0xFFFD, 0xFFFD, 0xFFFD, 0x8D87, 0x8B67, -/* 0700 */ 0x92DD, 0x8944, 0x93AF, 0x96BC, 0x8D40, 0x9799, 0x9366, 0x8CFC, -/* 0708 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0710 */ 0xFFFD, 0x8C4E, 0xFFFD, 0x99E5, 0xFFFD, 0x8BE1, 0x9669, 0xFFFD, -/* 0718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x94DB, 0xFFFD, 0xFFFD, 0x99E4, -/* 0720 */ 0xFFFD, 0x8ADC, 0x99DF, 0x99E0, 0x99E2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0728 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99E3, 0xFFFD, 0x8B7A, 0x9081, -/* 0730 */ 0xFFFD, 0x95AB, 0x99E1, 0x99DD, 0x8CE1, 0xFFFD, 0x99DE, 0xFFFD, -/* 0738 */ 0x9843, 0xFFFD, 0xFFFD, 0xFFFD, 0x95F0, 0xFFFD, 0x92E6, 0x8CE0, -/* 0740 */ 0x8D90, 0xFFFD, 0xFFFD, 0xFFFD, 0x99E6, 0xFFFD, 0xFFFD, 0x93DB, -/* 0748 */ 0x99EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0750 */ 0xFFFD, 0x8EFC, 0xFFFD, 0x8EF4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0758 */ 0xFFFD, 0x99ED, 0x99EB, 0xFFFD, 0x96A1, 0xFFFD, 0x99E8, 0x99F1, -/* 0760 */ 0x99EC, 0xFFFD, 0xFFFD, 0xFFFD, 0x99EF, 0x8CC4, 0x96BD, 0xFFFD, -/* 0768 */ 0xFFFD, 0x99F0, 0xFFFD, 0xFFFD, 0xFFFD, 0x99F2, 0xFFFD, 0x99F4, -/* 0770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8DEE, 0x9861, 0xFFFD, 0x99E9, -/* 0778 */ 0x99E7, 0x99F3, 0xFFFD, 0x99EE, 0x99F6, 0xFFFD, 0x9A42, 0x99F8, -/* 0780 */ 0xFFFD, 0xFFFD, 0x99FC, 0xFFFD, 0xFFFD, 0x9A40, 0x99F9, 0xFFFD, -/* 0788 */ 0xFFFD, 0x9A5D, 0xFFFD, 0xFFFD, 0x8DE7, 0x8A50, 0xFFFD, 0xFFFD, -/* 0790 */ 0xFFFD, 0xFFFD, 0x99F7, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A44, 0x88F4, -/* 0798 */ 0x9A43, 0xFFFD, 0x88A3, 0x9569, 0x9A41, 0xFFFD, 0x99FA, 0xFFFD, -/* 07A0 */ 0xFFFD, 0x99F5, 0x99FB, 0x8DC6, 0x9A45, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88F5, 0x9A4E, 0xFFFD, -/* 07B0 */ 0xFFFD, 0x9A46, 0x9A47, 0xFFFD, 0x8FA3, 0x9689, 0xFFFD, 0xFFFD, -/* 07B8 */ 0xFFFD, 0x9A4C, 0x9A4B, 0xFFFD, 0xFFFD, 0xFFFD, 0x934E, 0xFFFD, -/* 07C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A4D, 0xFFFD, -/* 07C8 */ 0xFFFD, 0x9A4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D0 */ 0x8953, 0xFFFD, 0x8DB4, 0x904F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9A48, 0x9382, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07E0 */ 0x9A49, 0xFFFD, 0x88A0, 0x9A53, 0x9742, 0xFFFD, 0x8FA5, 0xFFFD, -/* 07E8 */ 0x9A59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A58, 0x9A4F, 0xFFFD, -/* 07F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x91C1, 0xFFFD, 0x9A50, 0xFFFD, 0xFFFD, -/* 07F8 */ 0xFFFD, 0x91ED, 0x9A55, 0x8FA4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0800 */ 0xFFFD, 0x9A52, 0xFFFD, 0xFFFD, 0x96E2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0808 */ 0x8C5B, 0xFFFD, 0xFFFD, 0x9A56, 0x9A57, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0810 */ 0xFFFD, 0x9A54, 0x9A5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0818 */ 0x9A51, 0x9A60, 0x9A65, 0xFFFD, 0x9A61, 0xFFFD, 0x9A5C, 0xFFFD, -/* 0820 */ 0xFFFD, 0x9A66, 0x9150, 0xFFFD, 0xFFFD, 0x9A68, 0xFFFD, 0x8D41, -/* 0828 */ 0x9A5E, 0x929D, 0x9A62, 0x9A5B, 0x8AAB, 0xFFFD, 0x8AEC, 0x8A85, -/* 0830 */ 0x9A63, 0x9A5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0838 */ 0xFFFD, 0x8C96, 0x9A69, 0x9A67, 0x9172, 0x8B69, 0x8BAA, 0xFFFD, -/* 0840 */ 0x9A64, 0xFFFD, 0x8BF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0848 */ 0x8963, 0x9A6D, 0x9A6B, 0xFFFD, 0x9AA5, 0x9A70, 0xFFFD, 0xFFFD, -/* 0850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9A6A, 0xFFFD, 0x9A6E, 0xFFFD, 0xFFFD, -/* 0858 */ 0x9A6C, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E6B, 0x9A6F, 0x9A72, 0xFFFD, -/* 0860 */ 0x9A77, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A75, 0x9A74, 0xFFFD, 0xFFFD, -/* 0868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9251, 0xFFFD, 0xFFFD, -/* 0870 */ 0x89C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0878 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9A71, 0xFFFD, 0x9A73, 0x8FA6, 0x8952, -/* 0880 */ 0xFFFD, 0xFFFD, 0x9A76, 0x89DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0888 */ 0xFFFD, 0x9A82, 0xFFFD, 0x8FFA, 0x9A7D, 0xFFFD, 0x9A7B, 0xFFFD, -/* 0890 */ 0x9A7C, 0xFFFD, 0x9A7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0898 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x895C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9158, 0xFFFD, -/* 08A8 */ 0x9A78, 0xFFFD, 0x9A79, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A9A, 0xFFFD, 0xFFFD, -/* 08B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A81, 0xFFFD, -/* 08C0 */ 0xFFFD, 0xFFFD, 0x8AED, 0xFFFD, 0x9A84, 0x9A80, 0x9A83, 0xFFFD, -/* 08C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95AC, 0xFFFD, -/* 08D0 */ 0xFFFD, 0xFFFD, 0x93D3, 0xFFFD, 0x94B6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08D8 */ 0xFFFD, 0xFFFD, 0x9A86, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08E0 */ 0x9A85, 0x8A64, 0xFFFD, 0xFFFD, 0x9A87, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08E8 */ 0xFFFD, 0x9A8A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A89, 0x9A88, -/* 08F0 */ 0xFFFD, 0x9458, 0xFFFD, 0xFFFD, 0x9A8B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A8C, 0xFFFD, 0xFFFD, -/* 0900 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9A8E, 0xFFFD, 0x9A8D, 0xFFFD, 0xFFFD, -/* 0908 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9A90, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A93, -/* 0910 */ 0x9A91, 0x9A8F, 0x9A92, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A94, -/* 0918 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A95, 0xFFFD, 0xFFFD, -/* 0920 */ 0x9A96, 0xFFFD, 0x9A97, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A98, 0x9964, -/* 0928 */ 0xFFFD, 0x8EFA, 0x8E6C, 0xFFFD, 0xFFFD, 0x89F1, 0xFFFD, 0x88F6, -/* 0930 */ 0xFFFD, 0xFFFD, 0x9263, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A99, 0xFFFD, 0x8DA2, -/* 0940 */ 0xFFFD, 0x88CD, 0x907D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0948 */ 0x9A9A, 0x8CC5, 0xFFFD, 0xFFFD, 0x8D91, 0xFFFD, 0x9A9C, 0x9A9B, -/* 0950 */ 0xFFFD, 0xFFFD, 0x95DE, 0x9A9D, 0xFFFD, 0xFFFD, 0xFFFD, 0x9A9F, -/* 0958 */ 0x9A9E, 0xFFFD, 0x9AA0, 0xFFFD, 0x9AA1, 0xFFFD, 0x8C97, 0xFFFD, -/* 0960 */ 0xFFFD, 0x8980, 0x9AA2, 0xFFFD, 0xFFFD, 0x9AA4, 0xFFFD, 0x9AA3, -/* 0968 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9AA6, 0xFFFD, 0xFFFD, 0x9379, 0xFFFD, -/* 0970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AA7, 0x88B3, 0x8DDD, -/* 0978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C5C, 0xFFFD, 0xFFFD, 0x926E, -/* 0980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AA8, 0x9AA9, -/* 0988 */ 0xFFFD, 0xFFFD, 0x9AAB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AAC, -/* 0990 */ 0xFFFD, 0x8DE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BCF, 0xFFFD, -/* 0998 */ 0xFFFD, 0x9656, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AAA, 0x9AAD, 0x8DBF, -/* 09A0 */ 0x8D42, 0x9AB1, 0xFFFD, 0xFFFD, 0x8DA3, 0xFFFD, 0x9252, 0xFFFD, -/* 09A8 */ 0xFFFD, 0x9AAE, 0x92D8, 0x9AB2, 0xFFFD, 0xFFFD, 0x9082, 0xFFFD, -/* 09B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AB0, 0x9AB3, 0xFFFD, 0x8C5E, -/* 09B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AB4, -/* 09C0 */ 0x9AB5, 0xFFFD, 0x8D43, 0x8A5F, 0x9AB7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09C8 */ 0xFFFD, 0xFFFD, 0x9AB8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09D0 */ 0x9AB9, 0xFFFD, 0xFFFD, 0x9AB6, 0x9AAF, 0xFFFD, 0xFFFD, 0x9ABA, -/* 09D8 */ 0xFFFD, 0xFFFD, 0x9ABB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9684, -/* 09E0 */ 0xFFFD, 0xFFFD, 0x8FE9, 0xFFFD, 0xFFFD, 0xFFFD, 0x9ABD, 0x9ABE, -/* 09E8 */ 0x9ABC, 0xFFFD, 0x9AC0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09F0 */ 0x9457, 0xFFFD, 0xFFFD, 0x88E6, 0x9575, 0xFFFD, 0xFFFD, 0x9AC1, -/* 09F8 */ 0x8FFB, 0xFFFD, 0xFFFD, 0x8EB7, 0xFFFD, 0x947C, 0x8AEE, 0xFFFD, -/* 0A00 */ 0x8DE9, 0xFFFD, 0xFFFD, 0xFFFD, 0x9678, 0xFFFD, 0x93B0, 0xFFFD, -/* 0A08 */ 0xFFFD, 0x8C98, 0x91CD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9ABF, 0x9AC2, -/* 0A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A18 */ 0xFFFD, 0x91C2, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AC3, 0xFFFD, 0xFFFD, -/* 0A20 */ 0xFFFD, 0x9AC4, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AC6, 0xFFFD, 0xFFFD, -/* 0A28 */ 0x92E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AAC, 0xFFFD, -/* 0A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEA9F, 0x8981, 0x95F1, 0xFFFD, 0xFFFD, -/* 0A38 */ 0x8FEA, 0x9367, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8DE4, 0xFFFD, -/* 0A40 */ 0xFFFD, 0x9ACC, 0xFFFD, 0xFFFD, 0x95BB, 0x97DB, 0xFFFD, 0xFFFD, -/* 0A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x89F2, 0x9AC8, -/* 0A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9159, 0x9ACB, 0xFFFD, -/* 0A58 */ 0x9383, 0xFFFD, 0xFFFD, 0x9368, 0x9384, 0x94B7, 0x92CB, 0xFFFD, -/* 0A60 */ 0xFFFD, 0xFFFD, 0x8DC7, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AC7, 0xFFFD, -/* 0A68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8996, 0xFFFD, 0x9355, -/* 0A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AC9, 0xFFFD, 0x9AC5, 0xFFFD, -/* 0A78 */ 0xFFFD, 0x906F, 0xFFFD, 0xFFFD, 0xFFFD, 0x9ACD, 0xFFFD, 0xFFFD, -/* 0A80 */ 0xFFFD, 0xFFFD, 0x8F6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BAB, -/* 0A88 */ 0xFFFD, 0x9ACE, 0x95E6, 0xFFFD, 0xFFFD, 0xFFFD, 0x919D, 0xFFFD, -/* 0A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x92C4, 0xFFFD, 0xFFFD, 0x9AD0, 0xFFFD, -/* 0A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x966E, -/* 0AA0 */ 0xFFFD, 0xFFFD, 0x9AD1, 0xFFFD, 0xFFFD, 0x9AD6, 0xFFFD, 0xFFFD, -/* 0AA8 */ 0xFFFD, 0xFFFD, 0x95AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AD5, -/* 0AB0 */ 0x9ACF, 0x9AD2, 0x9AD4, 0xFFFD, 0xFFFD, 0x8DA4, 0xFFFD, 0xFFFD, -/* 0AB8 */ 0x95C7, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AD7, 0xFFFD, 0x9264, 0xFFFD, -/* 0AC0 */ 0xFFFD, 0x89F3, 0xFFFD, 0x8FEB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AC8 */ 0x9AD9, 0xFFFD, 0x9AD8, 0xFFFD, 0x8D88, 0xFFFD, 0x9ADA, 0x9ADC, -/* 0AD0 */ 0x9ADB, 0xFFFD, 0xFFFD, 0x9ADE, 0xFFFD, 0x9AD3, 0x9AE0, 0xFFFD, -/* 0AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9ADF, 0x9ADD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AE0 */ 0xFFFD, 0xFFFD, 0x8E6D, 0x9070, 0xFFFD, 0x9173, 0x9AE1, 0x90BA, -/* 0AE8 */ 0x88EB, 0x9484, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92D9, 0xFFFD, -/* 0AF0 */ 0x9AE3, 0x9AE2, 0x9AE4, 0x9AE5, 0x9AE6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AF8 */ 0xFFFD, 0x9AE7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B00 */ 0x95CF, 0x9AE8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x89C4, 0x9AE9, -/* 0B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x975B, 0x8A4F, 0xFFFD, 0x99C7, -/* 0B10 */ 0x8F67, 0x91BD, 0x9AEA, 0x96E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B18 */ 0xFFFD, 0x96B2, 0xFFFD, 0xFFFD, 0x9AEC, 0xFFFD, 0x91E5, 0xFFFD, -/* 0B20 */ 0x9356, 0x91BE, 0x9576, 0x9AED, 0x9AEE, 0x899B, 0xFFFD, 0xFFFD, -/* 0B28 */ 0x8EB8, 0x9AEF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88CE, 0x9AF0, -/* 0B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AF1, 0xFFFD, 0xFFFD, -/* 0B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8982, 0xFFFD, 0xFFFD, 0x8AEF, 0x93DE, -/* 0B40 */ 0x95F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AF5, 0x9174, 0x9AF4, -/* 0B48 */ 0x8C5F, 0xFFFD, 0xFFFD, 0x967A, 0x9AF3, 0xFFFD, 0x9385, 0x9AF7, -/* 0B50 */ 0xFFFD, 0x9AF6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AF9, -/* 0B58 */ 0xFFFD, 0x9AF8, 0xFFFD, 0xFFFD, 0x899C, 0xFFFD, 0x9AFA, 0x8FA7, -/* 0B60 */ 0x9AFC, 0x9244, 0xFFFD, 0x9AFB, 0xFFFD, 0x95B1, 0xFFFD, 0xFFFD, -/* 0B68 */ 0xFFFD, 0xFFFD, 0x8F97, 0x937A, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B40, -/* 0B70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8D44, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B78 */ 0x9B41, 0x9440, 0x94DC, 0x96CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B80 */ 0xFFFD, 0x9444, 0xFFFD, 0xFFFD, 0x9B4A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B88 */ 0xFFFD, 0xFFFD, 0x8B57, 0xFFFD, 0xFFFD, 0x9764, 0xFFFD, 0xFFFD, -/* 0B90 */ 0x96AD, 0xFFFD, 0x9BAA, 0xFFFD, 0x9B42, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B98 */ 0xFFFD, 0xFFFD, 0x9B45, 0xFFFD, 0x91C3, 0xFFFD, 0xFFFD, 0x9657, -/* 0BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9369, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BA8 */ 0xFFFD, 0x9B46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BB0 */ 0x9685, 0xFFFD, 0x8DC8, 0xFFFD, 0xFFFD, 0x8FA8, 0xFFFD, 0xFFFD, -/* 0BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B47, 0xFFFD, 0xFFFD, -/* 0BC0 */ 0x8E6F, 0xFFFD, 0x8E6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88B7, -/* 0BC8 */ 0x8CC6, 0xFFFD, 0x90A9, 0x88CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BD0 */ 0x9B4B, 0x9B4C, 0xFFFD, 0x9B49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8957, 0x8AAD, 0xFFFD, 0x9B48, -/* 0BE0 */ 0xFFFD, 0x96C3, 0x9550, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88A6, 0xFFFD, 0xFFFD, -/* 0BF0 */ 0xFFFD, 0xFFFD, 0x88F7, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E70, 0xFFFD, -/* 0BF8 */ 0x88D0, 0xFFFD, 0x88A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C00 */ 0x9B51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C08 */ 0x9B4F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96BA, -/* 0C10 */ 0xFFFD, 0x9B52, 0xFFFD, 0x9B50, 0xFFFD, 0xFFFD, 0x9B4E, 0x9050, -/* 0C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B4D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C20 */ 0x95D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CE2, 0xFFFD, -/* 0C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B56, 0x9B57, 0xFFFD, 0xFFFD, -/* 0C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8FA9, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B53, -/* 0C38 */ 0x984B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x946B, 0xFFFD, 0xFFFD, -/* 0C40 */ 0x9B55, 0x8DA5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C48 */ 0xFFFD, 0x9B58, 0xFFFD, 0xFFFD, 0xFFFD, 0x9577, 0xFFFD, 0xFFFD, -/* 0C50 */ 0xFFFD, 0x9B59, 0xFFFD, 0x9B54, 0x947D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B5A, 0x9551, 0x9B5B, 0x9B5F, -/* 0C60 */ 0x9B5C, 0xFFFD, 0xFFFD, 0x89C5, 0x9B5E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8EB9, 0xFFFD, 0x9B5D, 0x8C99, 0xFFFD, -/* 0C70 */ 0xFFFD, 0xFFFD, 0x9B6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C78 */ 0x9B64, 0x9B61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9284, 0xFFFD, 0x9B60, 0xFFFD, 0xFFFD, -/* 0C88 */ 0x9B62, 0xFFFD, 0xFFFD, 0x9B63, 0x9B65, 0x9B66, 0x8AF0, 0xFFFD, -/* 0C90 */ 0x9B68, 0x9B67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9B69, 0x8FEC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B6C, 0xFFFD, 0x92DA, 0xFFFD, -/* 0CA8 */ 0xFFFD, 0xFFFD, 0x8964, 0xFFFD, 0x9B6A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0x9B6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB8 */ 0x9B6E, 0xFFFD, 0x9B71, 0xFFFD, 0xFFFD, 0x9B6F, 0xFFFD, 0x9B70, -/* 0CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC8 */ 0xFFFD, 0xFFFD, 0x8E71, 0x9B72, 0xFFFD, 0xFFFD, 0x8D45, 0x9B73, -/* 0CD0 */ 0xFFFD, 0x8E9A, 0x91B6, 0xFFFD, 0x9B74, 0x9B75, 0x8E79, 0x8D46, -/* 0CD8 */ 0xFFFD, 0x96D0, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B47, 0x8CC7, 0x9B76, -/* 0CE0 */ 0x8A77, 0xFFFD, 0xFFFD, 0x9B77, 0xFFFD, 0x91B7, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0xFFFD, 0xFFFD, 0x9B78, 0x9BA1, 0xFFFD, 0x9B79, 0xFFFD, 0x9B7A, -/* 0CF0 */ 0xFFFD, 0xFFFD, 0x9B7B, 0xFFFD, 0x9B7D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CF8 */ 0xFFFD, 0xFFFD, 0x9B7E, 0xFFFD, 0xFFFD, 0x9B80, 0xFFFD, 0x91EE, -/* 0D00 */ 0xFFFD, 0x8946, 0x8EE7, 0x88C0, 0xFFFD, 0x9176, 0x8AAE, 0x8EB3, -/* 0D08 */ 0xFFFD, 0x8D47, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9386, -/* 0D10 */ 0xFFFD, 0x8F40, 0x8AAF, 0x9288, 0x92E8, 0x88B6, 0x8B58, 0x95F3, -/* 0D18 */ 0xFFFD, 0x8EC0, 0xFFFD, 0xFFFD, 0x8B71, 0x90E9, 0x8EBA, 0x9747, -/* 0D20 */ 0x9B81, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D28 */ 0x8B7B, 0xFFFD, 0x8DC9, 0xFFFD, 0xFFFD, 0x8A51, 0x8983, 0x8FAA, -/* 0D30 */ 0x89C6, 0xFFFD, 0x9B82, 0x9765, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D38 */ 0xFFFD, 0x8F68, 0xFFFD, 0xFFFD, 0x8EE2, 0x9B83, 0x8AF1, 0x93D0, -/* 0D40 */ 0x96A7, 0x9B84, 0xFFFD, 0x9B85, 0xFFFD, 0xFFFD, 0x9578, 0xFFFD, -/* 0D48 */ 0xFFFD, 0xFFFD, 0x9B87, 0xFFFD, 0x8AA6, 0x8BF5, 0x9B86, 0xFFFD, -/* 0D50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AB0, 0xFFFD, 0x9051, -/* 0D58 */ 0x9B8B, 0x8E40, 0xFFFD, 0x89C7, 0x9B8A, 0xFFFD, 0x9B88, 0x9B8C, -/* 0D60 */ 0x9B89, 0x944A, 0x9ECB, 0x9052, 0xFFFD, 0x9B8D, 0xFFFD, 0xFFFD, -/* 0D68 */ 0x97BE, 0xFFFD, 0x9B8E, 0xFFFD, 0xFFFD, 0x9B90, 0xFFFD, 0x929E, -/* 0D70 */ 0x9B8F, 0xFFFD, 0x90A1, 0xFFFD, 0x8E9B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D78 */ 0x91CE, 0x8EF5, 0xFFFD, 0x9595, 0x90EA, 0xFFFD, 0x8ECB, 0x9B91, -/* 0D80 */ 0x8FAB, 0x9B92, 0x9B93, 0x88D1, 0x91B8, 0x9071, 0xFFFD, 0x9B94, -/* 0D88 */ 0x93B1, 0x8FAC, 0xFFFD, 0x8FAD, 0xFFFD, 0x9B95, 0xFFFD, 0xFFFD, -/* 0D90 */ 0x90EB, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FAE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D98 */ 0xFFFD, 0xFFFD, 0x9B96, 0xFFFD, 0x9B97, 0xFFFD, 0x96DE, 0xFFFD, -/* 0DA0 */ 0xFFFD, 0xFFFD, 0x9B98, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BC4, -/* 0DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8F41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DB0 */ 0xFFFD, 0xFFFD, 0x9B99, 0x9B9A, 0x8EDA, 0x904B, 0x93F2, 0x9073, -/* 0DB8 */ 0x94F6, 0x9441, 0x8BC7, 0x9B9B, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B8F, -/* 0DC0 */ 0x9B9C, 0xFFFD, 0x8BFC, 0xFFFD, 0x93CD, 0x89AE, 0xFFFD, 0x8E72, -/* 0DC8 */ 0x9B9D, 0x9BA0, 0x9B9F, 0x8BFB, 0xFFFD, 0x9B9E, 0xFFFD, 0x9357, -/* 0DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DD8 */ 0x91AE, 0xFFFD, 0x936A, 0x8EC6, 0xFFFD, 0xFFFD, 0x9177, 0x979A, -/* 0DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BA2, 0xFFFD, -/* 0DE8 */ 0x9BA3, 0x93D4, 0xFFFD, 0x8E52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DF0 */ 0x9BA5, 0xFFFD, 0xFFFD, 0x9BA6, 0x9BA7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DF8 */ 0x8AF2, 0x9BA8, 0xFFFD, 0xFFFD, 0x9BA9, 0x89AA, 0xFFFD, 0xFFFD, -/* 0E00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x915A, 0x8AE2, 0xFFFD, 0x9BAB, -/* 0E08 */ 0x96A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91D0, 0xFFFD, 0x8A78, -/* 0E10 */ 0xFFFD, 0xFFFD, 0x9BAD, 0x9BAF, 0x8ADD, 0xFFFD, 0xFFFD, 0x9BAC, -/* 0E18 */ 0x9BAE, 0xFFFD, 0x9BB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E20 */ 0xFFFD, 0x9BB0, 0xFFFD, 0x9BB2, 0x9BB3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x93BB, 0x8BAC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x89E3, 0x9BB4, 0x9BB9, 0xFFFD, 0xFFFD, -/* 0E38 */ 0x9BB7, 0xFFFD, 0x95F5, 0x95F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E40 */ 0xFFFD, 0x9387, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BB6, 0x8F73, 0xFFFD, -/* 0E48 */ 0x9BB5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E50 */ 0xFFFD, 0xFFFD, 0x9092, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BBA, 0xFFFD, -/* 0E58 */ 0xFFFD, 0x8DE8, 0xFFFD, 0xFFFD, 0x9BC0, 0xFFFD, 0xFFFD, 0x9BC1, -/* 0E60 */ 0x9BBB, 0x8A52, 0x9BBC, 0x9BC5, 0x9BC4, 0x9BC3, 0x9BBF, 0xFFFD, -/* 0E68 */ 0xFFFD, 0xFFFD, 0x9BBE, 0xFFFD, 0xFFFD, 0x9BC2, 0xFFFD, 0xFFFD, -/* 0E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95F6, 0x9BC9, 0x9BC6, 0xFFFD, -/* 0E78 */ 0x9BC8, 0xFFFD, 0x9792, 0xFFFD, 0x9BC7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BBD, 0x9093, -/* 0E88 */ 0xFFFD, 0xFFFD, 0x9BCA, 0xFFFD, 0xFFFD, 0x8DB5, 0xFFFD, 0xFFFD, -/* 0E90 */ 0xFFFD, 0x9BCB, 0xFFFD, 0xFFFD, 0x9BCC, 0x9BCF, 0xFFFD, 0x9BCE, -/* 0E98 */ 0xFFFD, 0xFFFD, 0x9BCD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9388, 0x9BB8, -/* 0EA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9BD5, 0x9BD1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EA8 */ 0xFFFD, 0x9BD0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9BD2, 0xFFFD, 0x9BD3, 0xFFFD, 0xFFFD, -/* 0EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BD6, 0xFFFD, -/* 0EC0 */ 0xFFFD, 0x97E4, 0xFFFD, 0x9BD7, 0x9BD4, 0x9BD8, 0xFFFD, 0xFFFD, -/* 0EC8 */ 0x8ADE, 0x9BD9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BDB, 0x9BDA, -/* 0ED0 */ 0xFFFD, 0xFFFD, 0x9BDC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BDD, -/* 0ED8 */ 0xFFFD, 0x90EC, 0x8F42, 0xFFFD, 0xFFFD, 0x8F84, 0xFFFD, 0x9183, -/* 0EE0 */ 0xFFFD, 0x8D48, 0x8DB6, 0x8D49, 0x8B90, 0xFFFD, 0xFFFD, 0x9BDE, -/* 0EE8 */ 0xFFFD, 0xFFFD, 0x8DB7, 0xFFFD, 0xFFFD, 0x8CC8, 0x9BDF, 0x96A4, -/* 0EF0 */ 0x9462, 0x9BE0, 0xFFFD, 0x8D4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AAA, -/* 0EF8 */ 0xFFFD, 0x9246, 0x8BD0, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E73, 0x957A, -/* 0F00 */ 0xFFFD, 0xFFFD, 0x94BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BE1, -/* 0F08 */ 0x8AF3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BE4, 0xFFFD, 0xFFFD, -/* 0F10 */ 0xFFFD, 0xFFFD, 0x929F, 0xFFFD, 0xFFFD, 0x9BE3, 0x9BE2, 0x9BE5, -/* 0F18 */ 0xFFFD, 0x92E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F20 */ 0xFFFD, 0x9083, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E74, -/* 0F28 */ 0xFFFD, 0x90C8, 0xFFFD, 0x91D1, 0x8B41, 0xFFFD, 0xFFFD, 0x92A0, -/* 0F30 */ 0xFFFD, 0xFFFD, 0x9BE6, 0x9BE7, 0x8FED, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F38 */ 0xFFFD, 0x9658, 0xFFFD, 0xFFFD, 0x9BEA, 0xFFFD, 0xFFFD, 0x9BE9, -/* 0F40 */ 0x9BE8, 0x959D, 0xFFFD, 0x9BF1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F48 */ 0x9679, 0xFFFD, 0x9BEB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F50 */ 0x9BED, 0x968B, 0xFFFD, 0x9BEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9BEE, 0xFFFD, 0x94A6, 0x9BEF, 0x95BC, -/* 0F60 */ 0x9BF0, 0x8AB1, 0x95BD, 0x944E, 0x9BF2, 0x9BF3, 0xFFFD, 0x8D4B, -/* 0F68 */ 0x8AB2, 0x9BF4, 0x8CB6, 0x9763, 0x9748, 0x8AF4, 0x9BF6, 0xFFFD, -/* 0F70 */ 0x92A1, 0xFFFD, 0x8D4C, 0x8FAF, 0xFFFD, 0xFFFD, 0x94DD, 0xFFFD, -/* 0F78 */ 0xFFFD, 0x8FB0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F98, 0xFFFD, -/* 0F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92EA, 0x95F7, 0x9358, 0xFFFD, -/* 0F88 */ 0xFFFD, 0x8D4D, 0xFFFD, 0x957B, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BF7, -/* 0F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9378, 0x8DC0, 0xFFFD, -/* 0F98 */ 0xFFFD, 0xFFFD, 0x8CC9, 0xFFFD, 0x92EB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88C1, 0x8F8E, 0x8D4E, 0x9766, -/* 0FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FB0 */ 0x9BF8, 0x9BF9, 0x9470, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BFA, -/* 0FB8 */ 0x97F5, 0x984C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9BFC, 0x9BFB, -/* 0FC0 */ 0xFFFD, 0xFFFD, 0x8A66, 0xFFFD, 0xFFFD, 0x9C40, 0xFFFD, 0xFFFD, -/* 0FC8 */ 0xFFFD, 0x9C43, 0x9C44, 0xFFFD, 0x9C42, 0xFFFD, 0x955F, 0x8FB1, -/* 0FD0 */ 0x9C46, 0x9C45, 0x9C41, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C47, -/* 0FD8 */ 0x9C48, 0xFFFD, 0xFFFD, 0x9C49, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C4C, -/* 0FE0 */ 0x9C4A, 0xFFFD, 0x9C4B, 0x9C4D, 0xFFFD, 0x8984, 0x92EC, 0x9C4E, -/* 0FE8 */ 0xFFFD, 0x8C9A, 0x89F4, 0x9455, 0xFFFD, 0x9C4F, 0x93F9, 0xFFFD, -/* 0FF0 */ 0x95D9, 0xFFFD, 0x9C50, 0x984D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FF8 */ 0x9C51, 0x95BE, 0x9C54, 0x989F, 0x98AF, 0xFFFD, 0x8EAE, 0x93F3, -/* 1000 */ 0x9C55, 0xFFFD, 0x8B7C, 0x92A2, 0x88F8, 0x9C56, 0x95A4, 0x8D4F, -/* 1008 */ 0xFFFD, 0xFFFD, 0x926F, 0xFFFD, 0xFFFD, 0xFFFD, 0x92ED, 0xFFFD, -/* 1010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96ED, 0x8CB7, 0x8CCA, 0xFFFD, -/* 1018 */ 0x9C57, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C58, 0xFFFD, 0x9C5E, 0xFFFD, -/* 1020 */ 0x8EE3, 0xFFFD, 0xFFFD, 0xFFFD, 0x92A3, 0xFFFD, 0x8BAD, 0x9C59, -/* 1028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x954A, 0xFFFD, 0x9265, 0xFFFD, 0xFFFD, -/* 1030 */ 0x9C5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C5B, -/* 1038 */ 0xFFFD, 0x8BAE, 0xFFFD, 0x9C5C, 0xFFFD, 0x9C5D, 0xFFFD, 0xFFFD, -/* 1040 */ 0x9C5F, 0xFFFD, 0x9396, 0xFFFD, 0xFFFD, 0x9C60, 0x9C61, 0xFFFD, -/* 1048 */ 0x9C62, 0xFFFD, 0xFFFD, 0x9C53, 0x9C52, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1050 */ 0x9C63, 0x8C60, 0xFFFD, 0xFFFD, 0xFFFD, 0x9546, 0xFFFD, 0xFFFD, -/* 1058 */ 0x8DCA, 0x9556, 0x92A4, 0x956A, 0x9C64, 0xFFFD, 0xFFFD, 0x8FB2, -/* 1060 */ 0x8965, 0xFFFD, 0x9C65, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C66, 0xFFFD, -/* 1068 */ 0x96F0, 0xFFFD, 0xFFFD, 0x94DE, 0xFFFD, 0xFFFD, 0x9C69, 0x899D, -/* 1070 */ 0x90AA, 0x9C68, 0x9C67, 0x8C61, 0x91D2, 0xFFFD, 0x9C6D, 0x9C6B, -/* 1078 */ 0xFFFD, 0x9C6A, 0x97A5, 0x8CE3, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F99, -/* 1080 */ 0x9C6C, 0x936B, 0x8F5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x93BE, 0x9C70, -/* 1088 */ 0x9C6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C6E, 0xFFFD, 0x9C71, -/* 1090 */ 0x8CE4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C72, -/* 1098 */ 0x959C, 0x8F7A, 0xFFFD, 0xFFFD, 0x9C73, 0x94F7, 0xFFFD, 0xFFFD, -/* 10A0 */ 0xFFFD, 0xFFFD, 0x93BF, 0x92A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10A8 */ 0x934F, 0xFFFD, 0xFFFD, 0x9C74, 0x8B4A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10B0 */ 0xFFFD, 0xFFFD, 0x9053, 0xFFFD, 0x954B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8AF5, 0x9445, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9C75, 0x8E75, 0x9659, -/* 10C8 */ 0x965A, 0xFFFD, 0xFFFD, 0x899E, 0x9C7A, 0xFFFD, 0xFFFD, 0x9289, -/* 10D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9C77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10D8 */ 0xFFFD, 0xFFFD, 0x89F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CAB, -/* 10E0 */ 0x9C79, 0xFFFD, 0xFFFD, 0xFFFD, 0x944F, 0xFFFD, 0xFFFD, 0x9C78, -/* 10E8 */ 0xFFFD, 0xFFFD, 0x9C76, 0xFFFD, 0x8D9A, 0xFFFD, 0x9C7C, 0x9C83, -/* 10F0 */ 0x9C89, 0x9C81, 0xFFFD, 0x937B, 0xFFFD, 0xFFFD, 0x9C86, 0x957C, -/* 10F8 */ 0xFFFD, 0xFFFD, 0x9C80, 0xFFFD, 0x9C85, 0x97E5, 0x8E76, 0xFFFD, -/* 1100 */ 0xFFFD, 0x91D3, 0x9C7D, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B7D, 0x9C88, -/* 1108 */ 0x90AB, 0x8985, 0x9C82, 0x89F6, 0x9C87, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1110 */ 0x8BAF, 0xFFFD, 0x9C84, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9C8A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1120 */ 0xFFFD, 0xFFFD, 0x9C8C, 0x9C96, 0x9C94, 0xFFFD, 0xFFFD, 0x9C91, -/* 1128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9C90, 0x97F6, 0xFFFD, 0x9C92, 0xFFFD, -/* 1130 */ 0xFFFD, 0x8BB0, 0xFFFD, 0x8D50, 0xFFFD, 0xFFFD, 0x8F9A, 0xFFFD, -/* 1138 */ 0xFFFD, 0xFFFD, 0x9C99, 0x9C8B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1140 */ 0x9C8F, 0x9C7E, 0xFFFD, 0x89F8, 0x9C93, 0x9C95, 0x9270, 0xFFFD, -/* 1148 */ 0xFFFD, 0x8DA6, 0x89B6, 0x9C8D, 0x9C98, 0x9C97, 0x8BB1, 0xFFFD, -/* 1150 */ 0x91A7, 0x8A86, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C62, 0xFFFD, -/* 1158 */ 0x9C8E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1160 */ 0xFFFD, 0xFFFD, 0x9C9A, 0xFFFD, 0x9C9D, 0x9C9F, 0xFFFD, 0xFFFD, -/* 1168 */ 0xFFFD, 0xFFFD, 0x8EBB, 0xFFFD, 0x9CA5, 0x92EE, 0x9C9B, 0xFFFD, -/* 1170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9CA3, 0xFFFD, 0x89F7, 0xFFFD, 0x9CA1, -/* 1178 */ 0x9CA2, 0xFFFD, 0xFFFD, 0x9C9E, 0x9CA0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1180 */ 0x8CE5, 0x9749, 0xFFFD, 0xFFFD, 0x8AB3, 0xFFFD, 0xFFFD, 0x8978, -/* 1188 */ 0x9CA4, 0xFFFD, 0x9459, 0x88AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x94DF, 0x9C7B, 0x9CAA, 0x9CAE, 0x96E3, -/* 1198 */ 0xFFFD, 0x9CA7, 0xFFFD, 0xFFFD, 0xFFFD, 0x9389, 0x9CAC, 0xFFFD, -/* 11A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FEE, 0x9CAD, -/* 11A8 */ 0x93D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11B0 */ 0xFFFD, 0xFFFD, 0x9866, 0xFFFD, 0x9CA9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11B8 */ 0xFFFD, 0x9CAF, 0xFFFD, 0x8D9B, 0xFFFD, 0x90C9, 0xFFFD, 0xFFFD, -/* 11C0 */ 0x88D2, 0x9CA8, 0x9CA6, 0xFFFD, 0x9179, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11C8 */ 0x9C9C, 0x8E53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11D0 */ 0xFFFD, 0x91C4, 0x9CBB, 0xFFFD, 0x917A, 0x9CB6, 0xFFFD, 0x9CB3, -/* 11D8 */ 0x9CB4, 0xFFFD, 0x8EE4, 0x9CB7, 0x9CBA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11E0 */ 0xFFFD, 0x9CB5, 0x8F44, 0xFFFD, 0x9CB8, 0xFFFD, 0xFFFD, 0x9CB2, -/* 11E8 */ 0xFFFD, 0x96FA, 0x96F9, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CBC, 0x9CBD, -/* 11F0 */ 0x88D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CB1, 0xFFFD, -/* 11F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8BF0, 0x88A4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1200 */ 0x8AB4, 0xFFFD, 0x9CB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1208 */ 0x9CC1, 0x9CC0, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CC5, 0xFFFD, 0xFFFD, -/* 1210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CC6, 0xFFFD, 0xFFFD, -/* 1218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CC4, 0x9CC7, 0x9CBF, -/* 1220 */ 0x9CC3, 0xFFFD, 0xFFFD, 0x9CC8, 0xFFFD, 0x9CC9, 0xFFFD, 0xFFFD, -/* 1228 */ 0x9CBE, 0x8E9C, 0xFFFD, 0x9CC2, 0x91D4, 0x8D51, 0x9CB0, 0x9054, -/* 1230 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CD6, 0xFFFD, 0x95E7, 0xFFFD, -/* 1238 */ 0xFFFD, 0x9CCC, 0x9CCD, 0x9CCE, 0xFFFD, 0xFFFD, 0x9CD5, 0xFFFD, -/* 1240 */ 0x9CD4, 0xFFFD, 0xFFFD, 0x969D, 0x8AB5, 0xFFFD, 0x9CD2, 0xFFFD, -/* 1248 */ 0x8C64, 0x8A53, 0xFFFD, 0xFFFD, 0x9CCF, 0xFFFD, 0xFFFD, 0x97B6, -/* 1250 */ 0x9CD1, 0x88D4, 0x9CD3, 0xFFFD, 0x9CCA, 0x9CD0, 0x9CD7, 0x8C63, -/* 1258 */ 0x9CCB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x977C, -/* 1260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x974A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1268 */ 0x9CDA, 0xFFFD, 0xFFFD, 0x9CDE, 0xFFFD, 0xFFFD, 0xFFFD, 0x919E, -/* 1270 */ 0xFFFD, 0x97F7, 0x9CDF, 0xFFFD, 0xFFFD, 0x9CDC, 0xFFFD, 0x9CD9, -/* 1278 */ 0xFFFD, 0xFFFD, 0x9CD8, 0x9CDD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95AE, 0xFFFD, 0xFFFD, -/* 1288 */ 0x93B2, 0xFFFD, 0x8C65, 0xFFFD, 0x9CE0, 0x9CDB, 0xFFFD, 0x9CE1, -/* 1290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8C9B, 0xFFFD, 0xFFFD, 0xFFFD, 0x89AF, -/* 1298 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9CE9, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AB6, -/* 12A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CE7, 0xFFFD, 0xFFFD, 0x9CE8, -/* 12A8 */ 0x8DA7, 0x9CE6, 0x9CE4, 0x9CE3, 0x9CEA, 0x9CE2, 0x9CEC, 0xFFFD, -/* 12B0 */ 0xFFFD, 0x89F9, 0x9CEE, 0xFFFD, 0xFFFD, 0x9CED, 0x92A6, 0xFFFD, -/* 12B8 */ 0x9CF1, 0xFFFD, 0x9CEF, 0x9CE5, 0x8C9C, 0xFFFD, 0x9CF0, 0xFFFD, -/* 12C0 */ 0x9CF4, 0x9CF3, 0x9CF5, 0x9CF2, 0x9CF6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CF7, 0x9CF8, 0x95E8, 0xFFFD, -/* 12D0 */ 0x9CFA, 0x9CF9, 0x8F5E, 0xFFFD, 0x90AC, 0x89E4, 0x89FA, 0xFFFD, -/* 12D8 */ 0x9CFB, 0xFFFD, 0x88BD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90CA, 0x9CFC, -/* 12E0 */ 0xFFFD, 0xE6C1, 0x9D40, 0x8C81, 0xFFFD, 0x9D41, 0xFFFD, 0xFFFD, -/* 12E8 */ 0xFFFD, 0xFFFD, 0x90ED, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D42, 0xFFFD, -/* 12F0 */ 0xFFFD, 0xFFFD, 0x9D43, 0x8B59, 0x9D44, 0xFFFD, 0x9D45, 0x9D46, -/* 12F8 */ 0x91D5, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CCB, 0xFFFD, 0xFFFD, 0x96DF, -/* 1300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x965B, 0x8F8A, 0x9D47, 0xFFFD, 0xFFFD, -/* 1308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x90EE, 0xE7BB, 0x94E0, 0xFFFD, 0x8EE8, -/* 1310 */ 0xFFFD, 0x8DCB, 0x9D48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91C5, -/* 1318 */ 0xFFFD, 0x95A5, 0xFFFD, 0xFFFD, 0x91EF, 0xFFFD, 0xFFFD, 0x9D4B, -/* 1320 */ 0xFFFD, 0xFFFD, 0x9D49, 0xFFFD, 0x9D4C, 0xFFFD, 0xFFFD, 0x9D4A, -/* 1328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D4D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1330 */ 0xFFFD, 0xFFFD, 0x95AF, 0xFFFD, 0xFFFD, 0x88B5, 0xFFFD, 0xFFFD, -/* 1338 */ 0xFFFD, 0xFFFD, 0x957D, 0xFFFD, 0xFFFD, 0x94E1, 0xFFFD, 0xFFFD, -/* 1340 */ 0x9D4E, 0xFFFD, 0x9D51, 0x8FB3, 0x8B5A, 0xFFFD, 0x9D4F, 0x9D56, -/* 1348 */ 0x8FB4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D50, 0x9463, 0xFFFD, -/* 1350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x977D, 0x9D52, 0x9D53, -/* 1358 */ 0x9D57, 0x938A, 0x9D54, 0x8D52, 0x90DC, 0xFFFD, 0xFFFD, 0x9D65, -/* 1360 */ 0x94B2, 0xFFFD, 0x91F0, 0x94E2, 0x9DAB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1368 */ 0xFFFD, 0x95F8, 0xFFFD, 0xFFFD, 0xFFFD, 0x92EF, 0xFFFD, 0xFFFD, -/* 1370 */ 0xFFFD, 0x9695, 0xFFFD, 0x9D5A, 0x899F, 0x928A, 0xFFFD, 0xFFFD, -/* 1378 */ 0xFFFD, 0xFFFD, 0x9D63, 0xFFFD, 0xFFFD, 0x9253, 0x9D5D, 0x9D64, -/* 1380 */ 0x9D5F, 0x9D66, 0x9D62, 0xFFFD, 0x9D61, 0x948F, 0xFFFD, 0x9D5B, -/* 1388 */ 0x89FB, 0x9D59, 0x8B91, 0x91F1, 0x9D55, 0xFFFD, 0xFFFD, 0x9D58, -/* 1390 */ 0x8D53, 0x90D9, 0xFFFD, 0x8FB5, 0x9D60, 0x9471, 0xFFFD, 0xFFFD, -/* 1398 */ 0x8B92, 0x8A67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A87, 0x9040, 0x9D68, 0x9D6D, -/* 13A8 */ 0xFFFD, 0x9D69, 0xFFFD, 0x8C9D, 0xFFFD, 0x9D6E, 0x8E41, 0x8D89, -/* 13B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F45, 0x9D5C, -/* 13B8 */ 0xFFFD, 0x8E9D, 0x9D6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E77, -/* 13C0 */ 0x9D6C, 0x88C2, 0xFFFD, 0xFFFD, 0x9D67, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13C8 */ 0xFFFD, 0x92A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13D0 */ 0xFFFD, 0x8B93, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BB2, -/* 13D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D6A, -/* 13E0 */ 0x88A5, 0xFFFD, 0xFFFD, 0x8DC1, 0xFFFD, 0xFFFD, 0xFFFD, 0x9055, -/* 13E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13F0 */ 0xFFFD, 0xFFFD, 0x92F0, 0xFFFD, 0xFFFD, 0x94D2, 0x9D70, 0x917D, -/* 13F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1400 */ 0xFFFD, 0x91A8, 0xFFFD, 0xFFFD, 0x8E4A, 0x9D71, 0xFFFD, 0x9D73, -/* 1408 */ 0x9D6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95DF, 0xFFFD, 0x92BB, -/* 1410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x917B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95F9, -/* 1420 */ 0x8ECC, 0x9D80, 0xFFFD, 0x9D7E, 0xFFFD, 0xFFFD, 0x9098, 0xFFFD, -/* 1428 */ 0xFFFD, 0xFFFD, 0x8C9E, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D78, 0x8FB7, -/* 1430 */ 0xFFFD, 0xFFFD, 0x93E6, 0x9450, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1438 */ 0x9D76, 0xFFFD, 0xFFFD, 0x917C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1440 */ 0x8EF6, 0x9D7B, 0xFFFD, 0xFFFD, 0x8FB6, 0xFFFD, 0x9D75, 0x9D7A, -/* 1448 */ 0xFFFD, 0xFFFD, 0x9472, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D74, 0xFFFD, -/* 1450 */ 0x8C40, 0xFFFD, 0xFFFD, 0x8A7C, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D7C, -/* 1458 */ 0x97A9, 0x8DCC, 0x9254, 0x9D79, 0xFFFD, 0x90DA, 0xFFFD, 0x8D54, -/* 1460 */ 0x9084, 0x8986, 0x915B, 0x9D77, 0x8B64, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1468 */ 0xFFFD, 0xFFFD, 0x8C66, 0xFFFD, 0x92CD, 0x9D7D, 0xFFFD, 0xFFFD, -/* 1470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x917E, 0xFFFD, 0xFFFD, 0x9D81, 0xFFFD, -/* 1478 */ 0x9D83, 0xFFFD, 0xFFFD, 0x91B5, 0x9D89, 0xFFFD, 0x9D84, 0xFFFD, -/* 1480 */ 0xFFFD, 0x9D86, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9560, -/* 1488 */ 0x92F1, 0xFFFD, 0x9D87, 0xFFFD, 0xFFFD, 0xFFFD, 0x974B, 0xFFFD, -/* 1490 */ 0xFFFD, 0xFFFD, 0x9767, 0x8AB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1498 */ 0xFFFD, 0x88AC, 0xFFFD, 0x9D85, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14A0 */ 0xFFFD, 0x9D82, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AF6, 0xFFFD, -/* 14A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8987, 0xFFFD, 0x9D88, 0xFFFD, -/* 14B0 */ 0xFFFD, 0xFFFD, 0x9768, 0x9D8C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14B8 */ 0xFFFD, 0xFFFD, 0x91B9, 0xFFFD, 0x9D93, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14C0 */ 0x9D8D, 0xFFFD, 0xFFFD, 0x9D8A, 0x9D91, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14C8 */ 0xFFFD, 0x9D72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9D8E, 0xFFFD, 0x9D92, 0xFFFD, 0xFFFD, -/* 14D8 */ 0xFFFD, 0x94C0, 0x938B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14E0 */ 0xFFFD, 0x9D8B, 0xFFFD, 0x9D8F, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C67, -/* 14E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8DEF, 0xFFFD, 0xFFFD, 0xFFFD, 0x90DB, -/* 14F0 */ 0x9D97, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14F8 */ 0xFFFD, 0xFFFD, 0x9345, 0x9D94, 0xFFFD, 0x9680, 0xFFFD, 0xFFFD, -/* 1500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9D95, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1508 */ 0xFFFD, 0xFFFD, 0x9D96, 0xFFFD, 0x96CC, 0xFFFD, 0x90A0, 0xFFFD, -/* 1510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C82, -/* 1518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D9D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1520 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E54, 0x9D9A, -/* 1528 */ 0xFFFD, 0x9D99, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9451, 0xFFFD, -/* 1530 */ 0xFFFD, 0xFFFD, 0x93B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1538 */ 0x9350, 0x9D9B, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D9C, 0xFFFD, 0x958F, -/* 1540 */ 0xFFFD, 0x9464, 0x8E42, 0xFFFD, 0x90EF, 0xFFFD, 0x966F, 0xFFFD, -/* 1548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A68, 0xFFFD, 0x9DA3, -/* 1550 */ 0x9D9E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9769, 0x9DA5, 0xFFFD, -/* 1558 */ 0xFFFD, 0x9DA1, 0xFFFD, 0x9DA2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1560 */ 0xFFFD, 0x9180, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DA0, 0xFFFD, -/* 1568 */ 0x9D5E, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DA4, 0xFFFD, 0x9D9F, 0xFFFD, -/* 1570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DA9, 0x9DAA, 0x9346, 0x9DAC, -/* 1578 */ 0xFFFD, 0xFFFD, 0x8E43, 0x9DA7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1580 */ 0x8B5B, 0xFFFD, 0xFFFD, 0x9DAD, 0xFFFD, 0x9DA6, 0x9DB1, 0xFFFD, -/* 1588 */ 0x9DB0, 0xFFFD, 0x9DAF, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DB2, 0xFFFD, -/* 1590 */ 0xFFFD, 0x9DB4, 0x8FEF, 0xFFFD, 0x9DB3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1598 */ 0xFFFD, 0x9DB7, 0x9DB5, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DB6, 0x9D90, -/* 15A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DB9, 0x9DB8, 0xFFFD, -/* 15A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D98, 0x9DBA, 0x9DAE, 0xFFFD, -/* 15B0 */ 0xFFFD, 0x8E78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DBB, 0x9DBC, -/* 15B8 */ 0x9DBE, 0x9DBD, 0x9DBF, 0x89FC, 0xFFFD, 0x8D55, 0xFFFD, 0xFFFD, -/* 15C0 */ 0x95FA, 0x90AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CCC, -/* 15C8 */ 0xFFFD, 0xFFFD, 0x9DC1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DC4, -/* 15D0 */ 0xFFFD, 0x9571, 0xFFFD, 0x8B7E, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DC3, -/* 15D8 */ 0x9DC2, 0x9473, 0x9DC5, 0x8BB3, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DC7, -/* 15E0 */ 0x9DC6, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AB8, 0x8E55, 0xFFFD, 0xFFFD, -/* 15E8 */ 0x93D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C68, 0xFFFD, -/* 15F0 */ 0xFFFD, 0xFFFD, 0x9094, 0xFFFD, 0x9DC8, 0xFFFD, 0x90AE, 0x9347, -/* 15F8 */ 0xFFFD, 0x957E, 0x9DC9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DCA, 0x9DCB, 0xFFFD, 0xFFFD, -/* 1608 */ 0xFFFD, 0x95B6, 0x9B7C, 0x90C4, 0xFFFD, 0xFFFD, 0x956B, 0xFFFD, -/* 1610 */ 0x8DD6, 0xFFFD, 0x94E3, 0x94C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1618 */ 0xFFFD, 0x936C, 0xFFFD, 0x97BF, 0xFFFD, 0x9DCD, 0x8ECE, 0xFFFD, -/* 1620 */ 0xFFFD, 0x9DCE, 0xFFFD, 0x88B4, 0xFFFD, 0xFFFD, 0x8BD2, 0x90CB, -/* 1628 */ 0xFFFD, 0x9580, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DCF, 0x8E61, 0x9266, -/* 1630 */ 0xFFFD, 0x8E7A, 0x9056, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1638 */ 0xFFFD, 0x9DD0, 0xFFFD, 0x95FB, 0xFFFD, 0xFFFD, 0x8997, 0x8E7B, -/* 1640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9DD3, 0xFFFD, 0x9DD1, 0x9DD4, 0x97B7, -/* 1648 */ 0x9DD2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90F9, 0x9DD5, 0xFFFD, -/* 1650 */ 0xFFFD, 0x91B0, 0xFFFD, 0xFFFD, 0x9DD6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1658 */ 0xFFFD, 0x8AF8, 0xFFFD, 0x9DD8, 0xFFFD, 0x9DD7, 0xFFFD, 0xFFFD, -/* 1660 */ 0xFFFD, 0xFFFD, 0x9DD9, 0x9DDA, 0x8AF9, 0xFFFD, 0xFFFD, 0x93FA, -/* 1668 */ 0x9255, 0x8B8C, 0x8E7C, 0x9181, 0xFFFD, 0xFFFD, 0x8F7B, 0x88AE, -/* 1670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9DDB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1678 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x89A0, 0x9DDF, 0xFFFD, 0xFFFD, -/* 1680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8D56, 0x9DDE, 0xFFFD, 0xFFFD, -/* 1688 */ 0x8DA9, 0x8FB8, 0xFFFD, 0xFFFD, 0x9DDD, 0xFFFD, 0x8FB9, 0xFFFD, -/* 1690 */ 0x96BE, 0x8DA8, 0xFFFD, 0xFFFD, 0xFFFD, 0x88D5, 0x90CC, 0xFFFD, -/* 1698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DE4, 0xFFFD, -/* 16A0 */ 0xFFFD, 0x90AF, 0x8966, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F74, -/* 16A8 */ 0xFFFD, 0x9686, 0x8DF0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FBA, -/* 16B0 */ 0xFFFD, 0x90A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DE3, 0x9DE1, -/* 16B8 */ 0x9DE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x928B, 0xFFFD, -/* 16C0 */ 0xFFFD, 0x9E45, 0xFFFD, 0x9DE8, 0x8E9E, 0x8D57, 0x9DE6, 0xFFFD, -/* 16C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9DE7, 0xFFFD, 0x9057, 0xFFFD, 0xFFFD, -/* 16D0 */ 0xFFFD, 0x9DE5, 0xFFFD, 0xFFFD, 0x8E4E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DEA, -/* 16E0 */ 0x9DE9, 0x9DEE, 0xFFFD, 0xFFFD, 0x9DEF, 0xFFFD, 0x9DEB, 0xFFFD, -/* 16E8 */ 0x8A41, 0x9DEC, 0x9DED, 0x94D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16F0 */ 0x9581, 0x8C69, 0x9DF0, 0xFFFD, 0xFFFD, 0xFFFD, 0x90B0, 0xFFFD, -/* 16F8 */ 0x8FBB, 0xFFFD, 0xFFFD, 0xFFFD, 0x9271, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1700 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8BC5, 0xFFFD, 0x9DF1, 0x9DF5, 0xFFFD, -/* 1708 */ 0xFFFD, 0x89C9, 0x9DF2, 0x9DF4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1710 */ 0x9DF3, 0xFFFD, 0xFFFD, 0x8F8B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1718 */ 0x9267, 0x88C3, 0x9DF6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DF7, -/* 1720 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92A8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1728 */ 0x97EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E62, 0xFFFD, 0xFFFD, -/* 1730 */ 0x95E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x965C, 0xFFFD, -/* 1738 */ 0xFFFD, 0xFFFD, 0x9E41, 0x9DF9, 0xFFFD, 0xFFFD, 0x9DFC, 0xFFFD, -/* 1740 */ 0x9DFB, 0xFFFD, 0xFFFD, 0x9DF8, 0xFFFD, 0xFFFD, 0x9E40, 0xFFFD, -/* 1748 */ 0xFFFD, 0x93DC, 0xFFFD, 0x9DFA, 0x9E42, 0xFFFD, 0xFFFD, 0x8F8C, -/* 1750 */ 0x9E43, 0xFFFD, 0x976A, 0x9498, 0xFFFD, 0xFFFD, 0x9E44, 0xFFFD, -/* 1758 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E46, 0xFFFD, 0xFFFD, 0x9E47, -/* 1760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E48, 0xFFFD, -/* 1768 */ 0x8BC8, 0x8967, 0x8D58, 0x9E49, 0xFFFD, 0x9E4A, 0x8F91, 0x9182, -/* 1770 */ 0xFFFD, 0xFFFD, 0x99D6, 0x915D, 0x915C, 0x91D6, 0x8DC5, 0xFFFD, -/* 1778 */ 0xFFFD, 0x98F0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C8E, 0x974C, -/* 1780 */ 0xFFFD, 0x95FC, 0xFFFD, 0x959E, 0xFFFD, 0x9E4B, 0xFFFD, 0xFFFD, -/* 1788 */ 0xFFFD, 0xFFFD, 0x8DF1, 0x92BD, 0x9E4C, 0x984E, 0xFFFD, 0xFFFD, -/* 1790 */ 0xFFFD, 0x965D, 0xFFFD, 0x92A9, 0x9E4D, 0x8AFA, 0xFFFD, 0xFFFD, -/* 1798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E4E, 0x9E4F, 0x96D8, 0xFFFD, -/* 17A0 */ 0x96A2, 0x9696, 0x967B, 0x8E44, 0x9E51, 0xFFFD, 0xFFFD, 0x8EE9, -/* 17A8 */ 0xFFFD, 0xFFFD, 0x9670, 0xFFFD, 0x9E53, 0x9E56, 0x9E55, 0xFFFD, -/* 17B0 */ 0x8AF7, 0xFFFD, 0xFFFD, 0x8B80, 0xFFFD, 0x9E52, 0xFFFD, 0x9E54, -/* 17B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E57, 0xFFFD, 0xFFFD, 0x9099, -/* 17C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x979B, 0x88C7, 0x8DDE, 0x91BA, -/* 17C8 */ 0xFFFD, 0x8EDB, 0xFFFD, 0xFFFD, 0x8FF1, 0xFFFD, 0xFFFD, 0x9E5A, -/* 17D0 */ 0xFFFD, 0xFFFD, 0x936D, 0xFFFD, 0x9E58, 0x91A9, 0x9E59, 0x8FF0, -/* 17D8 */ 0x96DB, 0x9E5B, 0x9E5C, 0x9788, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17E0 */ 0x9E61, 0xFFFD, 0xFFFD, 0x8D59, 0xFFFD, 0x9474, 0x9E5E, 0x938C, -/* 17E8 */ 0x9DDC, 0x9DE0, 0xFFFD, 0x8B6E, 0xFFFD, 0x9466, 0xFFFD, 0xFFFD, -/* 17F0 */ 0xFFFD, 0xFFFD, 0x9E60, 0xFFFD, 0x8FBC, 0x94C2, 0xFFFD, 0xFFFD, -/* 17F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9E66, 0xFFFD, 0x94F8, 0xFFFD, 0x9E5D, -/* 1800 */ 0xFFFD, 0x9E63, 0x9E62, 0xFFFD, 0xFFFD, 0xFFFD, 0x90CD, 0xFFFD, -/* 1808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x968D, 0xFFFD, 0x97D1, 0xFFFD, 0xFFFD, -/* 1810 */ 0x9687, 0xFFFD, 0x89CA, 0x8E7D, 0xFFFD, 0xFFFD, 0x9867, 0x9E65, -/* 1818 */ 0x9095, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E64, 0xFFFD, 0xFFFD, 0x9E5F, -/* 1820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CCD, 0xFFFD, 0xFFFD, -/* 1828 */ 0xFFFD, 0x9E6B, 0x9E69, 0xFFFD, 0x89CB, 0x9E67, 0x9E6D, 0x9E73, -/* 1830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91C6, -/* 1838 */ 0xFFFD, 0xFFFD, 0x95BF, 0xFFFD, 0x9E75, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1840 */ 0x9541, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E74, 0x9490, 0x965E, 0x8AB9, -/* 1848 */ 0xFFFD, 0x90F5, 0x8F5F, 0xFFFD, 0xFFFD, 0xFFFD, 0x92D1, 0xFFFD, -/* 1850 */ 0x974D, 0xFFFD, 0xFFFD, 0x9E70, 0x9E6F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1858 */ 0x9E71, 0xFFFD, 0x9E6E, 0xFFFD, 0xFFFD, 0x9E76, 0xFFFD, 0x9E6C, -/* 1860 */ 0xFFFD, 0xFFFD, 0x9E6A, 0xFFFD, 0x9E72, 0x9E68, 0xFFFD, 0x928C, -/* 1868 */ 0xFFFD, 0x96F6, 0x8EC4, 0x8DF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1870 */ 0xFFFD, 0x8DB8, 0xFFFD, 0xFFFD, 0x968F, 0x8A60, 0xFFFD, 0xFFFD, -/* 1878 */ 0x92CC, 0x93C8, 0x8968, 0x90F0, 0xFFFD, 0xFFFD, 0x90B2, 0x8C49, -/* 1880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E78, 0xFFFD, -/* 1888 */ 0xFFFD, 0x8D5A, 0x8A9C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1890 */ 0xFFFD, 0x9E7A, 0x8A94, 0x9E81, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1898 */ 0xFFFD, 0xFFFD, 0x9E7D, 0xFFFD, 0x90F1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18A0 */ 0x8A6A, 0x8DAA, 0xFFFD, 0xFFFD, 0x8A69, 0x8DCD, 0xFFFD, 0xFFFD, -/* 18A8 */ 0x9E7B, 0x8C85, 0x8C6A, 0x938D, 0xFFFD, 0xFFFD, 0x9E79, 0xFFFD, -/* 18B0 */ 0x88C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E7C, 0x9E7E, 0xFFFD, -/* 18B8 */ 0x8BCB, 0x8C4B, 0xFFFD, 0x8ABA, 0x8B6A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18C0 */ 0xFFFD, 0x9E82, 0xFFFD, 0xFFFD, 0x8DF7, 0x9691, 0xFFFD, 0x8E56, -/* 18C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9E83, 0xFFFD, 0xFFFD, 0xFFFD, 0x954F, -/* 18D0 */ 0x9E8F, 0xFFFD, 0x89B1, 0x9E84, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18D8 */ 0xFFFD, 0xFFFD, 0x9E95, 0x9E85, 0xFFFD, 0x97C0, 0xFFFD, 0x9E8C, -/* 18E0 */ 0xFFFD, 0x947E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18E8 */ 0xFFFD, 0x9E94, 0xFFFD, 0x9E87, 0xFFFD, 0xFFFD, 0xFFFD, 0x88B2, -/* 18F0 */ 0x9E89, 0xFFFD, 0xFFFD, 0x8D5B, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E8B, -/* 18F8 */ 0xFFFD, 0x9E8A, 0xFFFD, 0x9E86, 0x9E91, 0xFFFD, 0x8FBD, 0xFFFD, -/* 1900 */ 0xFFFD, 0xFFFD, 0x9AEB, 0x8CE6, 0x979C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1908 */ 0xFFFD, 0x9E88, 0xFFFD, 0x92F2, 0x8A42, 0x8DAB, 0xFFFD, 0x9E80, -/* 1910 */ 0xFFFD, 0x9E90, 0x8A81, 0xFFFD, 0xFFFD, 0x9E8E, 0x9E92, 0xFFFD, -/* 1918 */ 0x938E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1920 */ 0x8AFC, 0xFFFD, 0x9EB0, 0xFFFD, 0xFFFD, 0x96C7, 0x9E97, 0x8AFB, -/* 1928 */ 0xFFFD, 0x9E9E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x965F, 0xFFFD, -/* 1930 */ 0x9E9F, 0x9EA1, 0xFFFD, 0x9EA5, 0x9E99, 0xFFFD, 0x9249, 0xFFFD, -/* 1938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x938F, 0x9EA9, 0x9E9C, 0xFFFD, 0x9EA6, -/* 1940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9EA0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1948 */ 0xFFFD, 0xFFFD, 0x9058, 0x9EAA, 0xFFFD, 0xFFFD, 0x90B1, 0xFFFD, -/* 1950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EA8, 0x8ABB, 0xFFFD, -/* 1958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x986F, 0x9E96, 0xFFFD, 0xFFFD, -/* 1960 */ 0x9EA4, 0x88D6, 0xFFFD, 0xFFFD, 0x9E98, 0xFFFD, 0xFFFD, 0x96B8, -/* 1968 */ 0x9E9D, 0x9041, 0x92C5, 0x9E93, 0xFFFD, 0xFFFD, 0x9EA3, 0xFFFD, -/* 1970 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x909A, 0x9EAD, 0x8A91, -/* 1978 */ 0x8C9F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EAF, 0x9E9A, 0x9EAE, -/* 1980 */ 0xFFFD, 0x9EA7, 0x9E9B, 0xFFFD, 0x9EAB, 0xFFFD, 0x9EAC, 0xFFFD, -/* 1988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EBD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1990 */ 0x93CC, 0xFFFD, 0x9EA2, 0xFFFD, 0xFFFD, 0x9EB9, 0xFFFD, 0xFFFD, -/* 1998 */ 0xFFFD, 0x9EBB, 0xFFFD, 0x92D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x976B, 0xFFFD, -/* 19A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9596, -/* 19B0 */ 0x9EB6, 0x91C8, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EBC, 0x915E, 0xFFFD, -/* 19B8 */ 0x9EB3, 0x9EC0, 0x9EBF, 0xFFFD, 0x93ED, 0x9EBE, 0x93E8, 0xFFFD, -/* 19C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EC2, 0x9EB5, -/* 19C8 */ 0xFFFD, 0x8BC6, 0x9EB8, 0x8F7C, 0xFFFD, 0xFFFD, 0xFFFD, 0x9480, -/* 19D0 */ 0x9EBA, 0x8BC9, 0xFFFD, 0x9EB2, 0x9EB4, 0x9EB1, 0xFFFD, 0xFFFD, -/* 19D8 */ 0x984F, 0x8A79, 0x9EB7, 0xFFFD, 0xFFFD, 0x9EC1, 0x8A54, 0xFFFD, -/* 19E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8DE5, 0xFFFD, -/* 19E8 */ 0xFFFD, 0xFFFD, 0x897C, 0xFFFD, 0xFFFD, 0x9ED2, 0xFFFD, 0xFFFD, -/* 19F0 */ 0x9850, 0x9ED5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9059, -/* 19F8 */ 0x9ED4, 0xFFFD, 0xFFFD, 0xFFFD, 0x9ED3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9ED0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A08 */ 0xFFFD, 0xFFFD, 0x9EC4, 0xFFFD, 0xFFFD, 0x9EE1, 0x9EC3, 0xFFFD, -/* 1A10 */ 0x9ED6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9ECE, -/* 1A18 */ 0xFFFD, 0xFFFD, 0x9EC9, 0x9EC6, 0xFFFD, 0x9EC7, 0xFFFD, 0x9ECF, -/* 1A20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEAA0, 0xFFFD, 0xFFFD, 0x9ECC, 0x8D5C, -/* 1A28 */ 0x92C6, 0x9184, 0x9ECA, 0xFFFD, 0x9EC5, 0xFFFD, 0xFFFD, 0x9EC8, -/* 1A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x976C, 0x968A, 0xFFFD, 0xFFFD, -/* 1A38 */ 0xFFFD, 0x9ECD, 0x9ED7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9EDF, 0x9ED8, 0xFFFD, 0xFFFD, 0x9EE5, -/* 1A48 */ 0xFFFD, 0x9EE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EDE, 0xFFFD, -/* 1A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EDD, 0xFFFD, 0x92CE, -/* 1A58 */ 0xFFFD, 0x9185, 0xFFFD, 0x9EDB, 0xFFFD, 0xFFFD, 0x9ED9, 0xFFFD, -/* 1A60 */ 0xFFFD, 0x9EE0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EE6, 0x94F3, -/* 1A68 */ 0x9EEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EE7, 0x9EEA, -/* 1A70 */ 0x9EE4, 0xFFFD, 0xFFFD, 0x9294, 0xFFFD, 0x9557, 0xFFFD, 0x9EDA, -/* 1A78 */ 0xFFFD, 0xFFFD, 0x9EE2, 0x8FBE, 0xFFFD, 0x96CD, 0x9EF6, 0x9EE9, -/* 1A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CA0, 0x89A1, 0x8A7E, -/* 1A88 */ 0xFFFD, 0xFFFD, 0x9ED1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A90 */ 0xFFFD, 0x8FBF, 0x9EEE, 0xFFFD, 0x9EF5, 0x8EF7, 0x8A92, 0xFFFD, -/* 1A98 */ 0xFFFD, 0x924D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AA0 */ 0x9EEB, 0xFFFD, 0xFFFD, 0x9EF0, 0x9EF4, 0xFFFD, 0xFFFD, 0x8BB4, -/* 1AA8 */ 0x8B6B, 0x9EF2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B40, -/* 1AB0 */ 0xFFFD, 0x93C9, 0x9EF1, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EF3, 0x9EED, -/* 1AB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EEF, 0xFFFD, 0xFFFD, -/* 1AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A80, 0x9268, 0xFFFD, 0xFFFD, -/* 1AC8 */ 0xFFFD, 0x9EFA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AD0 */ 0xFFFD, 0xFFFD, 0x9EF8, 0x8CE7, 0xFFFD, 0x9EF7, 0xFFFD, 0xFFFD, -/* 1AD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F40, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AE0 */ 0xFFFD, 0x9E77, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EF9, 0xFFFD, 0x9EFB, -/* 1AE8 */ 0x9EFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F4B, -/* 1AF0 */ 0xFFFD, 0x9F47, 0xFFFD, 0x9E8D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AF8 */ 0x9F46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F45, 0xFFFD, 0xFFFD, -/* 1B00 */ 0x9F42, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EE8, 0x9F44, -/* 1B08 */ 0x9F43, 0x9F49, 0xFFFD, 0x9845, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B10 */ 0xFFFD, 0xFFFD, 0x9F4C, 0x8BF9, 0xFFFD, 0xFFFD, 0x9F48, 0x9F4A, -/* 1B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B20 */ 0x94A5, 0xFFFD, 0x9F4D, 0x9F51, 0x9F4E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9793, 0x9F4F, 0xFFFD, -/* 1B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9EDC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9F52, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F53, -/* 1B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8954, 0xFFFD, -/* 1B48 */ 0x9F55, 0x8C87, 0x8E9F, 0xFFFD, 0x8BD3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B50 */ 0x89A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x977E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B60 */ 0x9F57, 0x9F56, 0x9F59, 0x8B5C, 0xFFFD, 0xFFFD, 0x8BD4, 0x8ABC, -/* 1B68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F5C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B70 */ 0x9F5B, 0xFFFD, 0x9F5D, 0xFFFD, 0xFFFD, 0x89CC, 0xFFFD, 0x9256, -/* 1B78 */ 0xFFFD, 0x9F5E, 0xFFFD, 0xFFFD, 0x8ABD, 0x9F60, 0xFFFD, 0xFFFD, -/* 1B80 */ 0xFFFD, 0xFFFD, 0x9F5F, 0xFFFD, 0x9F61, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B88 */ 0x9F62, 0xFFFD, 0x9F63, 0x8E7E, 0x90B3, 0x8D9F, 0xFFFD, 0x9590, -/* 1B90 */ 0xFFFD, 0xFFFD, 0x95E0, 0x9863, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B98 */ 0x8E95, 0xFFFD, 0xFFFD, 0xFFFD, 0x8DCE, 0x97F0, 0xFFFD, 0xFFFD, -/* 1BA0 */ 0xFFFD, 0x9F64, 0x9F65, 0xFFFD, 0x8E80, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BA8 */ 0x9F66, 0x9F67, 0xFFFD, 0xFFFD, 0x9F69, 0x9F68, 0xFFFD, 0x9677, -/* 1BB0 */ 0xFFFD, 0xFFFD, 0x8F7D, 0x8EEA, 0x8E63, 0xFFFD, 0x9F6A, 0xFFFD, -/* 1BB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F6C, 0x9042, -/* 1BC0 */ 0xFFFD, 0x9F6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F6D, -/* 1BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F6E, 0xFFFD, 0xFFFD, -/* 1BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9F6F, 0x9F70, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1BD8 */ 0x9F71, 0xFFFD, 0x9F73, 0x9F72, 0x9F74, 0x89A3, 0x9269, 0xFFFD, -/* 1BE0 */ 0x9F75, 0xFFFD, 0xFFFD, 0x8E45, 0x8A6B, 0x9F76, 0xFFFD, 0xFFFD, -/* 1BE8 */ 0x9361, 0x9ACA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B42, 0x9F77, -/* 1BF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F78, 0xFFFD, 0x95EA, 0x9688, -/* 1BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x93C5, 0x9F79, 0x94E4, 0xFFFD, 0xFFFD, -/* 1C00 */ 0xFFFD, 0x94F9, 0xFFFD, 0xFFFD, 0x96D1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C08 */ 0x9F7A, 0x9F7C, 0x9F7B, 0xFFFD, 0xFFFD, 0x9F7E, 0xFFFD, 0xFFFD, -/* 1C10 */ 0xFFFD, 0x9F7D, 0x9F81, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C18 */ 0xFFFD, 0x8E81, 0xFFFD, 0x96AF, 0xFFFD, 0x9F82, 0x9F83, 0xFFFD, -/* 1C20 */ 0xFFFD, 0x8B43, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F84, 0xFFFD, 0xFFFD, -/* 1C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F86, 0x9F85, 0x9085, -/* 1C30 */ 0xFFFD, 0xFFFD, 0x9558, 0x8969, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C38 */ 0xFFFD, 0x94C3, 0xFFFD, 0x92F3, 0x8F60, 0x8B81, 0x94C4, 0xFFFD, -/* 1C40 */ 0x8EAC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F88, 0xFFFD, 0x8ABE, -/* 1C48 */ 0xFFFD, 0xFFFD, 0x8998, 0xFFFD, 0xFFFD, 0x93F0, 0x9F87, 0x8D5D, -/* 1C50 */ 0x9272, 0xFFFD, 0x9F89, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C58 */ 0x9F91, 0xFFFD, 0x9F8A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C60 */ 0x91BF, 0xFFFD, 0x8B82, 0x9F92, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C68 */ 0xFFFD, 0xFFFD, 0x8C88, 0xFFFD, 0xFFFD, 0x8B44, 0x9F90, 0xFFFD, -/* 1C70 */ 0xFFFD, 0x9F8E, 0x9F8B, 0x9780, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C78 */ 0x92BE, 0xFFFD, 0xFFFD, 0xFFFD, 0x93D7, 0x9F8C, 0xFFFD, 0xFFFD, -/* 1C80 */ 0x9F94, 0xFFFD, 0x9F93, 0x8C42, 0xFFFD, 0xFFFD, 0x89AB, 0xFFFD, -/* 1C88 */ 0xFFFD, 0x8DB9, 0x9F8D, 0x9F8F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C90 */ 0xFFFD, 0x9676, 0x91F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1C98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9697, 0xFFFD, 0xFFFD, 0x9F9C, 0xFFFD, -/* 1CA0 */ 0xFFFD, 0x9F9D, 0xFFFD, 0x89CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CA8 */ 0x95A6, 0x96FB, 0x9F9F, 0x8EA1, 0x8FC0, 0x9F98, 0x9F9E, 0x8988, -/* 1CB0 */ 0xFFFD, 0x8BB5, 0xFFFD, 0xFFFD, 0x9F95, 0x9F9A, 0xFFFD, 0xFFFD, -/* 1CB8 */ 0xFFFD, 0x90F2, 0x9491, 0xFFFD, 0x94E5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9F97, 0xFFFD, 0x9640, 0xFFFD, 0x9F99, -/* 1CC8 */ 0xFFFD, 0x9FA2, 0xFFFD, 0x9FA0, 0xFFFD, 0x9F9B, 0xFFFD, 0xFFFD, -/* 1CD0 */ 0xFFFD, 0x9641, 0x9467, 0x8B83, 0xFFFD, 0x9344, 0xFFFD, 0xFFFD, -/* 1CD8 */ 0x928D, 0xFFFD, 0x9FA3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FA1, -/* 1CE0 */ 0x91D7, 0x9F96, 0xFFFD, 0x896A, 0x976D, 0x9FAE, 0xFFFD, 0xFFFD, -/* 1CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9FAD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1CF0 */ 0x90F4, 0xFFFD, 0x9FAA, 0xFFFD, 0x978C, 0xFFFD, 0xFFFD, 0x93B4, -/* 1CF8 */ 0x9FA4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92C3, 0xFFFD, -/* 1D00 */ 0xFFFD, 0xFFFD, 0x896B, 0x8D5E, 0x9FA7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8F46, 0x9FAC, 0xFFFD, 0x9FAB, 0x9FA6, -/* 1D10 */ 0xFFFD, 0x9FA9, 0xFFFD, 0xFFFD, 0x8A88, 0xFFFD, 0x9FA8, 0x9468, -/* 1D18 */ 0xFFFD, 0xFFFD, 0x97AC, 0xFFFD, 0xFFFD, 0x8FF2, 0x90F3, 0x9FB4, -/* 1D20 */ 0x9FB2, 0xFFFD, 0x956C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D28 */ 0xFFFD, 0x9FAF, 0x9FB1, 0xFFFD, 0x8959, 0xFFFD, 0xFFFD, 0x8D5F, -/* 1D30 */ 0x9851, 0xFFFD, 0x8A5C, 0xFFFD, 0x9582, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D38 */ 0xFFFD, 0xFFFD, 0x9781, 0xFFFD, 0xFFFD, 0x8A43, 0x905A, 0x9FB3, -/* 1D40 */ 0x9FB8, 0xFFFD, 0xFFFD, 0x8FC1, 0xFFFD, 0xFFFD, 0xFFFD, 0x974F, -/* 1D48 */ 0xFFFD, 0x9FB5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FB0, 0xFFFD, -/* 1D50 */ 0x9FB6, 0xFFFD, 0xFFFD, 0xFFFD, 0x97DC, 0xFFFD, 0x9393, 0x93C0, -/* 1D58 */ 0x8A55, 0xFFFD, 0xFFFD, 0x8974, 0xFFFD, 0xFFFD, 0x9FBC, 0xFFFD, -/* 1D60 */ 0xFFFD, 0x9FBF, 0xFFFD, 0xFFFD, 0xFFFD, 0x97C1, 0xFFFD, 0xFFFD, -/* 1D68 */ 0xFFFD, 0x9784, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FC6, 0x9FC0, -/* 1D70 */ 0x9FBD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97D2, 0x9FC3, 0xFFFD, 0xFFFD, -/* 1D78 */ 0xFFFD, 0xFFFD, 0x8F69, 0x9FC5, 0xFFFD, 0xFFFD, 0x9FCA, 0xFFFD, -/* 1D80 */ 0xFFFD, 0x9391, 0x9FC8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FC2, -/* 1D88 */ 0xFFFD, 0xFFFD, 0x9257, 0xFFFD, 0xFFFD, 0x9FC9, 0xFFFD, 0x9FBE, -/* 1D90 */ 0xFFFD, 0x9FC4, 0xFFFD, 0x9FCB, 0x88FA, 0x9FC1, 0xFFFD, 0x9FCC, -/* 1D98 */ 0xFFFD, 0xFFFD, 0x905B, 0xFFFD, 0x8F7E, 0xFFFD, 0x95A3, 0xFFFD, -/* 1DA0 */ 0x8DAC, 0xFFFD, 0x9FB9, 0x9FC7, 0x9359, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90B4, 0xFFFD, -/* 1DB0 */ 0x8A89, 0x8DCF, 0x8FC2, 0x9FBB, 0x8F61, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C6B, 0xFFFD, 0x9FBA, 0xFFFD, -/* 1DC0 */ 0xFFFD, 0xFFFD, 0x9FD0, 0x8F8D, 0x8CB8, 0xFFFD, 0x9FDF, 0xFFFD, -/* 1DC8 */ 0x9FD9, 0x8B94, 0x936E, 0xFFFD, 0x9FD4, 0x9FDD, 0x88AD, 0x8951, -/* 1DD0 */ 0xFFFD, 0xFFFD, 0x89B7, 0xFFFD, 0x9FD6, 0x91AA, 0x9FCD, 0x9FCF, -/* 1DD8 */ 0x8D60, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DE0 */ 0xFFFD, 0x9FE0, 0xFFFD, 0x9FDB, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FD3, -/* 1DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FDA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1DF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x96A9, 0xFFFD, 0xFFFD, 0x9FD8, 0x9FDC, -/* 1DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CCE, -/* 1E00 */ 0xFFFD, 0x8FC3, 0xFFFD, 0xFFFD, 0x9258, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E08 */ 0x9FD2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E10 */ 0x974E, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FD5, 0xFFFD, 0xFFFD, 0x9FCE, -/* 1E18 */ 0x9392, 0xFFFD, 0xFFFD, 0x9FD1, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FD7, -/* 1E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9870, -/* 1E28 */ 0x8EBC, 0x969E, 0xFFFD, 0x9FE1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x94AC, 0xFFFD, 0xFFFD, -/* 1E38 */ 0x9FED, 0x8CB9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F80, -/* 1E40 */ 0xFFFD, 0x9FE3, 0xFFFD, 0xFFFD, 0xFFFD, 0x97AD, 0x8D61, 0xFFFD, -/* 1E48 */ 0x9FF0, 0xFFFD, 0xFFFD, 0x88EC, 0xFFFD, 0xFFFD, 0x9FEE, 0xFFFD, -/* 1E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9FE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E58 */ 0x9FE8, 0xFFFD, 0xFFFD, 0x9FEA, 0xFFFD, 0xFFFD, 0xFFFD, 0x976E, -/* 1E60 */ 0x9FE5, 0xFFFD, 0xFFFD, 0x934D, 0xFFFD, 0xFFFD, 0x9FE7, 0xFFFD, -/* 1E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9FEF, 0xFFFD, 0x9FE9, 0x96C5, 0xFFFD, -/* 1E70 */ 0xFFFD, 0xFFFD, 0x9FE4, 0xFFFD, 0x8EA0, 0x9FFC, 0xFFFD, 0xFFFD, -/* 1E78 */ 0xFFFD, 0xFFFD, 0x8A8A, 0xFFFD, 0x9FE6, 0x9FEB, 0x9FEC, 0xFFFD, -/* 1E80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91EA, 0x91D8, -/* 1E88 */ 0x9FF4, 0xFFFD, 0xFFFD, 0x9FFA, 0xFFFD, 0xFFFD, 0x9FF8, 0xFFFD, -/* 1E90 */ 0x9348, 0xFFFD, 0xFFFD, 0xE042, 0x9FF5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E98 */ 0xFFFD, 0xFFFD, 0x9FF6, 0x9FDE, 0xFFFD, 0x8B99, 0x9559, 0xFFFD, -/* 1EA0 */ 0xFFFD, 0xFFFD, 0x8EBD, 0xFFFD, 0xFFFD, 0x8D97, 0xFFFD, 0xFFFD, -/* 1EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9852, 0xFFFD, 0x9FF2, 0xFFFD, 0xE041, -/* 1EB0 */ 0x8989, 0x9186, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9499, 0xFFFD, 0x8ABF, 0x97F8, -/* 1EC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x969F, -/* 1EC8 */ 0x92D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9FF9, 0x9FFB, 0xFFFD, -/* 1ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9151, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1ED8 */ 0xFFFD, 0xFFFD, 0xE040, 0x9FF7, 0xFFFD, 0x9FF1, 0xFFFD, 0xFFFD, -/* 1EE0 */ 0xFFFD, 0x8AC1, 0x8C89, 0xFFFD, 0xFFFD, 0xFFFD, 0xE04E, 0xFFFD, -/* 1EE8 */ 0xFFFD, 0xE049, 0x90F6, 0xFFFD, 0xFFFD, 0x8A83, 0xFFFD, 0xFFFD, -/* 1EF0 */ 0xFFFD, 0xFFFD, 0x8F81, 0xFFFD, 0xE052, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE04B, 0x92AA, 0xE048, 0x92D7, 0xFFFD, -/* 1F00 */ 0xFFFD, 0xFFFD, 0xE06B, 0xFFFD, 0xFFFD, 0xFFFD, 0xE045, 0xFFFD, -/* 1F08 */ 0xE044, 0xFFFD, 0xE04D, 0xFFFD, 0xFFFD, 0xFFFD, 0xE047, 0xE046, -/* 1F10 */ 0xE04C, 0xFFFD, 0x909F, 0xFFFD, 0xE043, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE04F, 0xFFFD, 0xFFFD, 0xE050, -/* 1F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AC0, 0xFFFD, 0xFFFD, -/* 1F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE055, -/* 1F30 */ 0xFFFD, 0xE054, 0xE056, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F38 */ 0xE059, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9362, -/* 1F40 */ 0xFFFD, 0xE053, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE057, -/* 1F48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C83, 0x91F7, -/* 1F50 */ 0xE051, 0x945A, 0xFFFD, 0xFFFD, 0xE058, 0xE05D, 0xE05B, 0xFFFD, -/* 1F58 */ 0xFFFD, 0xE05E, 0xFFFD, 0xFFFD, 0xE061, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F60 */ 0xE05A, 0x8D8A, 0x9447, 0xFFFD, 0xFFFD, 0x9FB7, 0xFFFD, 0xFFFD, -/* 1F68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9794, 0xE05C, 0xFFFD, 0xE060, -/* 1F70 */ 0x91F3, 0xFFFD, 0xE05F, 0xFFFD, 0xE04A, 0xFFFD, 0xFFFD, 0xE889, -/* 1F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE064, 0xFFFD, 0xFFFD, 0xFFFD, 0xE068, -/* 1F80 */ 0xFFFD, 0xFFFD, 0xE066, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F88 */ 0xFFFD, 0xFFFD, 0xE062, 0xFFFD, 0xE063, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F90 */ 0xE067, 0xFFFD, 0xE065, 0xFFFD, 0xFFFD, 0xFFFD, 0x956D, 0xFFFD, -/* 1F98 */ 0xFFFD, 0xE06D, 0xFFFD, 0xE06A, 0xE069, 0xFFFD, 0xE06C, 0x93D2, -/* 1FA0 */ 0xE06E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9295, -/* 1FA8 */ 0x91EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90A3, 0xFFFD, 0xFFFD, -/* 1FB0 */ 0xFFFD, 0xE06F, 0xFFFD, 0xE071, 0x9FF3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FB8 */ 0xFFFD, 0xE072, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC0 */ 0x93E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE073, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x89CE, 0xFFFD, 0xFFFD, 0xFFFD, 0x9394, -/* 1FD8 */ 0x8A44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FE0 */ 0x8B84, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EDC, 0x8DD0, 0x9846, 0x9086, -/* 1FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x898A, 0xFFFD, 0xFFFD, 0xFFFD, 0xE075, -/* 1FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE074, 0xE078, -/* 1FF8 */ 0x9259, 0xE07B, 0xE076, 0xFFFD, 0xFFFD, 0xFFFD, 0xE07A, 0xFFFD, -/* 2000 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE079, 0x935F, 0x88D7, 0x97F3, 0xFFFD, -/* 2008 */ 0xFFFD, 0xE07D, 0xFFFD, 0xFFFD, 0xFFFD, 0x8947, 0xFFFD, 0xFFFD, -/* 2010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE080, -/* 2018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE07E, 0xFFFD, 0xE07C, 0xE077, 0xFFFD, -/* 2020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9642, 0xFFFD, -/* 2028 */ 0xFFFD, 0xFFFD, 0xE082, 0xE081, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x898B, 0xFFFD, -/* 2038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE084, 0x95B0, 0xFFFD, 0xE083, 0xFFFD, -/* 2040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x96B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2048 */ 0x8FC5, 0x9152, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FC4, -/* 2050 */ 0x97F9, 0xFFFD, 0xFFFD, 0xE08A, 0xFFFD, 0x90F7, 0xFFFD, 0xFFFD, -/* 2058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE086, 0xE08B, 0xFFFD, 0xFFFD, -/* 2060 */ 0x898C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2068 */ 0xFFFD, 0xE089, 0xFFFD, 0x9481, 0xE085, 0xE088, 0x8FC6, 0xFFFD, -/* 2070 */ 0x94CF, 0xFFFD, 0xFFFD, 0xE08C, 0xFFFD, 0x8ECF, 0x90F8, 0xFFFD, -/* 2078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE08F, 0xFFFD, 0xFFFD, -/* 2080 */ 0xFFFD, 0xE087, 0xFFFD, 0x8C46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2088 */ 0xE08D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x976F, 0xE090, 0xFFFD, -/* 2090 */ 0xFFFD, 0xFFFD, 0xEAA4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2098 */ 0x8F6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20A0 */ 0xFFFD, 0xE091, 0xFFFD, 0xFFFD, 0xFFFD, 0xE092, 0xFFFD, 0xFFFD, -/* 20A8 */ 0xFFFD, 0xFFFD, 0x944D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20B0 */ 0xFFFD, 0xFFFD, 0xE094, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE095, -/* 20B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9452, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20C0 */ 0xFFFD, 0x9395, 0xE097, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE099, -/* 20C8 */ 0xFFFD, 0x97D3, 0xFFFD, 0xE096, 0xFFFD, 0xE098, 0x898D, 0xFFFD, -/* 20D0 */ 0xE093, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 20D8 */ 0x9A7A, 0xE09A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9187, 0x8E57, -/* 20E0 */ 0xE09C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE09B, 0x9043, 0x99D7, -/* 20E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE09D, 0xFFFD, -/* 20F0 */ 0xFFFD, 0xFFFD, 0xE09F, 0xFFFD, 0xE08E, 0xE09E, 0xFFFD, 0xFFFD, -/* 20F8 */ 0xE0A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x949A, -/* 2100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0A1, 0xFFFD, -/* 2108 */ 0xFFFD, 0xE0A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0A3, 0xE0A4, 0xFFFD, 0x92DC, -/* 2118 */ 0xFFFD, 0xE0A6, 0xE0A5, 0xFFFD, 0xFFFD, 0xE0A7, 0xFFFD, 0xE0A8, -/* 2120 */ 0xFFFD, 0xFFFD, 0x8EDD, 0x9583, 0xFFFD, 0xFFFD, 0xFFFD, 0x96EA, -/* 2128 */ 0xE0A9, 0xE0AA, 0x9175, 0x8EA2, 0xE0AB, 0xE0AC, 0xFFFD, 0xFFFD, -/* 2130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0AD, 0x95D0, 0x94C5, 0xFFFD, 0xFFFD, -/* 2138 */ 0xE0AE, 0x9476, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92AB, -/* 2140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0AF, 0x89E5, 0xFFFD, -/* 2148 */ 0x8B8D, 0xFFFD, 0x96C4, 0xFFFD, 0x96B4, 0xFFFD, 0x89B2, 0x9853, -/* 2150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9671, 0xFFFD, 0x95A8, 0xFFFD, -/* 2158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90B5, -/* 2160 */ 0xFFFD, 0xE0B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x93C1, 0xFFFD, -/* 2168 */ 0xFFFD, 0xFFFD, 0x8CA1, 0xE0B1, 0xFFFD, 0x8DD2, 0xE0B3, 0xE0B2, -/* 2170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0B4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0B5, -/* 2180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B5D, 0xFFFD, 0xE0B7, -/* 2190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0B8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2198 */ 0xFFFD, 0x8CA2, 0xFFFD, 0xFFFD, 0x94C6, 0xFFFD, 0xFFFD, 0xE0BA, -/* 21A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8FF3, 0xFFFD, 0xFFFD, 0xE0B9, 0xFFFD, -/* 21A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BB6, -/* 21B0 */ 0xE0BB, 0xE0BD, 0xFFFD, 0xE0BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0BE, 0xFFFD, 0x8CCF, 0xFFFD, 0xE0BF, -/* 21C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BE7, 0xFFFD, 0x915F, 0xFFFD, -/* 21C8 */ 0x8D9D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0C1, 0xE0C2, 0xE0C0, -/* 21D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EEB, 0xFFFD, -/* 21D8 */ 0xFFFD, 0x93C6, 0x8BB7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0C4, 0x924B, 0xE0C3, 0xFFFD, -/* 21E8 */ 0xFFFD, 0x9854, 0x9482, 0xE0C9, 0xE0C6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F0 */ 0x96D2, 0xE0C8, 0xE0CA, 0xFFFD, 0x97C2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21F8 */ 0xFFFD, 0xFFFD, 0xE0CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0CD, 0x9296, -/* 2200 */ 0x944C, 0xFFFD, 0xFFFD, 0x8CA3, 0xE0CC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2208 */ 0xFFFD, 0xE0CB, 0xFFFD, 0x9750, 0x9751, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0CF, 0x898E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2218 */ 0xFFFD, 0x8D96, 0x8E82, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0D0, 0xE0D1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0D3, 0x8F62, 0xFFFD, 0xFFFD, -/* 2230 */ 0xFFFD, 0xFFFD, 0xE0D5, 0xFFFD, 0xE0D4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2238 */ 0xFFFD, 0xFFFD, 0xE0D6, 0xFFFD, 0x8A6C, 0xFFFD, 0xFFFD, 0xE0D8, -/* 2240 */ 0xFFFD, 0xFFFD, 0xE0D7, 0xFFFD, 0xE0DA, 0xE0D9, 0xFFFD, 0xFFFD, -/* 2248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CBA, 0xFFFD, -/* 2250 */ 0xFFFD, 0x97A6, 0xFFFD, 0x8BCA, 0xFFFD, 0x89A4, 0xFFFD, 0xFFFD, -/* 2258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2260 */ 0x8BE8, 0x8ADF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2268 */ 0xFFFD, 0xFFFD, 0x97E6, 0xE0DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2278 */ 0xE0DF, 0xFFFD, 0x89CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2280 */ 0xE0DB, 0xFFFD, 0x8E58, 0xFFFD, 0xFFFD, 0x92BF, 0xE0DD, 0xE0E2, -/* 2288 */ 0xFFFD, 0x8EEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0E0, 0xFFFD, -/* 2290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8C5D, 0xFFFD, 0xFFFD, 0x94C7, 0xE0E1, -/* 2298 */ 0xFFFD, 0xFFFD, 0xE0FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22A0 */ 0xFFFD, 0xE0E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CBB, -/* 22A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B85, 0xFFFD, 0xE0E4, 0x979D, -/* 22B0 */ 0xFFFD, 0xFFFD, 0x97AE, 0x91F4, 0xFFFD, 0xFFFD, 0xE0E6, 0xE0E8, -/* 22B8 */ 0x97D4, 0x8BD5, 0x94FA, 0x9469, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0E9, -/* 22C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0EB, 0xFFFD, 0xE0EE, 0xE0EA, -/* 22C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0ED, 0x8CE8, 0x896C, 0xE0EF, 0xFFFD, -/* 22D0 */ 0x9090, 0xE0EC, 0x97DA, 0xFFFD, 0xFFFD, 0xE0F2, 0xEAA2, 0xFFFD, -/* 22D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0F0, 0xE0F3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22E0 */ 0xFFFD, 0xE0E5, 0xE0F1, 0xFFFD, 0xFFFD, 0x8DBA, 0xFFFD, 0xFFFD, -/* 22E8 */ 0xE0F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 22F0 */ 0xE0F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x979E, 0xFFFD, 0xFFFD, -/* 22F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0F6, 0xE0F7, 0xFFFD, -/* 2300 */ 0xFFFD, 0xFFFD, 0xE0E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0F8, -/* 2308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2310 */ 0x8AC2, 0xE0F9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0FA, 0xFFFD, -/* 2318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE0FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2320 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x895A, 0xFFFD, 0xFFFD, 0xFFFD, 0xE140, -/* 2328 */ 0xFFFD, 0x955A, 0xE141, 0xFFFD, 0xFFFD, 0x8AA2, 0xE142, 0xFFFD, -/* 2330 */ 0xE143, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE144, 0xFFFD, 0xE146, -/* 2338 */ 0xE147, 0xE145, 0xFFFD, 0xFFFD, 0xFFFD, 0x9572, 0xE149, 0xE148, -/* 2340 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2348 */ 0xFFFD, 0xFFFD, 0xE14B, 0xE14A, 0xE14C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE14D, 0xE14F, 0xE14E, 0xFFFD, 0xFFFD, -/* 2358 */ 0x8D99, 0xFFFD, 0xE151, 0xFFFD, 0xE150, 0xFFFD, 0xFFFD, 0x8AC3, -/* 2360 */ 0xFFFD, 0x9072, 0xFFFD, 0x935B, 0xFFFD, 0xE152, 0x90B6, 0xFFFD, -/* 2368 */ 0xFFFD, 0xFFFD, 0x8E59, 0xFFFD, 0x8999, 0xE153, 0xFFFD, 0x9770, -/* 2370 */ 0xFFFD, 0xFFFD, 0x95E1, 0xE154, 0xFFFD, 0xFFFD, 0xFFFD, 0x9363, -/* 2378 */ 0x9752, 0x8D62, 0x905C, 0xFFFD, 0xFFFD, 0xFFFD, 0x926A, 0x99B2, -/* 2380 */ 0xFFFD, 0x92AC, 0x89E6, 0xE155, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE156, 0xFFFD, 0xE15B, 0xFFFD, 0xFFFD, -/* 2390 */ 0xE159, 0xE158, 0x9DC0, 0x8A45, 0xE157, 0xFFFD, 0x88D8, 0xFFFD, -/* 2398 */ 0x94A8, 0xFFFD, 0xFFFD, 0x94C8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23A0 */ 0x97AF, 0xE15C, 0xE15A, 0x927B, 0x90A4, 0xFFFD, 0xFFFD, 0x94A9, -/* 23A8 */ 0xFFFD, 0x954C, 0xFFFD, 0xE15E, 0x97AA, 0x8C6C, 0xE15F, 0xFFFD, -/* 23B0 */ 0xE15D, 0x94D4, 0xE160, 0xFFFD, 0xE161, 0xFFFD, 0xFFFD, 0x88D9, -/* 23B8 */ 0xFFFD, 0xFFFD, 0x8FF4, 0xE166, 0xFFFD, 0xE163, 0x93EB, 0xE162, -/* 23C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B45, 0xFFFD, -/* 23C8 */ 0xFFFD, 0xE169, 0xFFFD, 0xFFFD, 0xFFFD, 0xE164, 0xE165, 0xFFFD, -/* 23D0 */ 0xE168, 0xE167, 0x9544, 0xFFFD, 0xFFFD, 0x9161, 0x9160, 0xFFFD, -/* 23D8 */ 0x8B5E, 0xFFFD, 0xFFFD, 0xE16A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23E0 */ 0xFFFD, 0xE16B, 0xFFFD, 0xFFFD, 0xE16C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23E8 */ 0xFFFD, 0xFFFD, 0xE16E, 0xFFFD, 0xE16D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23F0 */ 0xFFFD, 0xFFFD, 0x8975, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23F8 */ 0xE176, 0x94E6, 0xE170, 0xFFFD, 0xE172, 0xFFFD, 0xFFFD, 0xE174, -/* 2400 */ 0x905D, 0xFFFD, 0xFFFD, 0xE175, 0xE173, 0x8EBE, 0xFFFD, 0xFFFD, -/* 2408 */ 0xFFFD, 0xE16F, 0xE171, 0xFFFD, 0x9561, 0xFFFD, 0x8FC7, 0xFFFD, -/* 2410 */ 0xFFFD, 0xE178, 0xFFFD, 0xFFFD, 0xE177, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2418 */ 0xFFFD, 0xE179, 0xFFFD, 0x8EA4, 0x8DAD, 0xFFFD, 0xFFFD, 0x9397, -/* 2420 */ 0xE17A, 0xFFFD, 0x92C9, 0xFFFD, 0xFFFD, 0xE17C, 0xFFFD, 0xFFFD, -/* 2428 */ 0xFFFD, 0x979F, 0xE17B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2430 */ 0x9189, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE182, -/* 2438 */ 0xFFFD, 0xE184, 0xE185, 0x9273, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2440 */ 0xFFFD, 0xE183, 0xFFFD, 0xE180, 0xFFFD, 0xE17D, 0xE17E, 0xFFFD, -/* 2448 */ 0xE181, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2450 */ 0xE188, 0xFFFD, 0xE186, 0xFFFD, 0xE187, 0xE189, 0xE18B, 0xE18C, -/* 2458 */ 0xE18D, 0xFFFD, 0xE18E, 0xFFFD, 0xFFFD, 0xE18A, 0xFFFD, 0xFFFD, -/* 2460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE190, 0xFFFD, -/* 2468 */ 0xFFFD, 0xFFFD, 0xE18F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2470 */ 0xFFFD, 0xE191, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2478 */ 0x97C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE194, 0xE192, 0xE193, 0xFFFD, -/* 2480 */ 0xFFFD, 0xFFFD, 0x8AE0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2488 */ 0x96FC, 0xFFFD, 0xFFFD, 0xFFFD, 0x95C8, 0xFFFD, 0xE196, 0xFFFD, -/* 2490 */ 0xFFFD, 0xFFFD, 0xE195, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE197, -/* 2498 */ 0xE198, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE19C, 0xE199, 0xE19A, -/* 24A0 */ 0xE19B, 0xFFFD, 0xE19D, 0xFFFD, 0xFFFD, 0xFFFD, 0xE19E, 0xFFFD, -/* 24A8 */ 0xE19F, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1A0, 0xFFFD, 0xE1A1, 0xFFFD, -/* 24B0 */ 0x94AD, 0x936F, 0xE1A2, 0x9492, 0x9553, 0xFFFD, 0xE1A3, 0xFFFD, -/* 24B8 */ 0xFFFD, 0xE1A4, 0x9349, 0xFFFD, 0x8A46, 0x8D63, 0xE1A5, 0xFFFD, -/* 24C0 */ 0xFFFD, 0xE1A6, 0xFFFD, 0xFFFD, 0xE1A7, 0xFFFD, 0x8E48, 0xFFFD, -/* 24C8 */ 0xFFFD, 0xE1A9, 0xFFFD, 0xFFFD, 0xE1A8, 0xFFFD, 0xFFFD, 0xE1AA, -/* 24D0 */ 0xE1AB, 0x94E7, 0xFFFD, 0xE1AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1AD, -/* 24D8 */ 0xFFFD, 0xFFFD, 0xEA89, 0xE1AE, 0xE1AF, 0xE1B0, 0xFFFD, 0xFFFD, -/* 24E0 */ 0xFFFD, 0xFFFD, 0x8E4D, 0xFFFD, 0xFFFD, 0xE1B1, 0x9475, 0xFFFD, -/* 24E8 */ 0xFFFD, 0x967E, 0xFFFD, 0x896D, 0xFFFD, 0x8976, 0xFFFD, 0xFFFD, -/* 24F0 */ 0xE1B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1B4, 0xFFFD, 0xFFFD, -/* 24F8 */ 0xFFFD, 0xE1B3, 0x9390, 0xFFFD, 0xFFFD, 0xFFFD, 0x90B7, 0x9F58, -/* 2500 */ 0xFFFD, 0xE1B5, 0x96BF, 0xFFFD, 0xE1B6, 0xFFFD, 0x8AC4, 0x94D5, -/* 2508 */ 0xE1B7, 0xFFFD, 0xE1B8, 0xFFFD, 0xFFFD, 0xE1B9, 0xFFFD, 0xFFFD, -/* 2510 */ 0xFFFD, 0x96DA, 0xFFFD, 0xFFFD, 0xFFFD, 0x96D3, 0xFFFD, 0x92BC, -/* 2518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x918A, 0xFFFD, 0xFFFD, 0xE1BB, 0xFFFD, -/* 2520 */ 0xFFFD, 0x8F82, 0xFFFD, 0xFFFD, 0x8FC8, 0xFFFD, 0xFFFD, 0xE1BE, -/* 2528 */ 0xFFFD, 0xFFFD, 0xE1BD, 0xE1BC, 0x94FB, 0xFFFD, 0x8AC5, 0x8CA7, -/* 2530 */ 0xE1C4, 0xFFFD, 0xFFFD, 0xE1C1, 0x905E, 0x96B0, 0xFFFD, 0xFFFD, -/* 2538 */ 0xFFFD, 0xE1C0, 0xE1C2, 0xE1C3, 0xFFFD, 0xFFFD, 0xE1BF, 0xE1C5, -/* 2540 */ 0xE1C6, 0xFFFD, 0x92AD, 0xFFFD, 0x8AE1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2548 */ 0x9285, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1C7, -/* 2550 */ 0xE1C8, 0xE1CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9087, -/* 2558 */ 0xFFFD, 0x93C2, 0xFFFD, 0xE1CC, 0x9672, 0xFFFD, 0xE1C9, 0xFFFD, -/* 2560 */ 0xFFFD, 0xE1CA, 0xE1CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1CE, -/* 2568 */ 0xE1CD, 0xE1D1, 0xFFFD, 0xFFFD, 0xE1D0, 0xFFFD, 0xFFFD, 0xE1D2, -/* 2570 */ 0xE1D4, 0xFFFD, 0xE1D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95CB, -/* 2578 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F75, 0x97C4, -/* 2580 */ 0xFFFD, 0xFFFD, 0xE1D5, 0xFFFD, 0xFFFD, 0x93B5, 0xFFFD, 0xFFFD, -/* 2588 */ 0xE1D6, 0xFFFD, 0xFFFD, 0xE1D7, 0xFFFD, 0xE1DB, 0xE1D9, 0xE1DA, -/* 2590 */ 0xFFFD, 0xE1D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2598 */ 0xFFFD, 0xE1DC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1DD, -/* 25A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25A8 */ 0xFFFD, 0xE1DE, 0xFFFD, 0xFFFD, 0xE1DF, 0x96B5, 0xE1E0, 0xFFFD, -/* 25B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96EE, 0xE1E1, 0xFFFD, 0x926D, -/* 25B8 */ 0xFFFD, 0x948A, 0xFFFD, 0x8BE9, 0xFFFD, 0xFFFD, 0xFFFD, 0x925A, -/* 25C0 */ 0xE1E2, 0x8BB8, 0xFFFD, 0xFFFD, 0xFFFD, 0x90CE, 0xFFFD, 0xFFFD, -/* 25C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E3, 0xFFFD, -/* 25D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8DBB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E4, 0xFFFD, -/* 25E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E5, 0xFFFD, 0x8CA4, 0x8DD3, -/* 25E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 25F0 */ 0xFFFD, 0xFFFD, 0xE1E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9375, -/* 25F8 */ 0x8DD4, 0x8B6D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9643, 0xFFFD, 0x946A, 0xFFFD, -/* 2608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9376, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2610 */ 0xFFFD, 0x8D7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E9, -/* 2618 */ 0x97B0, 0x8D64, 0xFFFD, 0xFFFD, 0x8CA5, 0xFFFD, 0xFFFD, 0x94A1, -/* 2620 */ 0xFFFD, 0xE1EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2628 */ 0xFFFD, 0xE1ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CE9, 0xFFFD, -/* 2630 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE1EC, 0x92F4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2638 */ 0xFFFD, 0xE1EF, 0x8A56, 0xE1EA, 0xFFFD, 0xFFFD, 0x94E8, 0xFFFD, -/* 2640 */ 0x894F, 0xFFFD, 0x8DEA, 0xFFFD, 0x9871, 0xFFFD, 0xFFFD, 0xE1EE, -/* 2648 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2650 */ 0xE1F0, 0xFFFD, 0xFFFD, 0xFFFD, 0x95C9, 0xFFFD, 0x90D7, 0xE1F2, -/* 2658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1F3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2660 */ 0xFFFD, 0xFFFD, 0xE1F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A6D, -/* 2668 */ 0xFFFD, 0xE1F9, 0xFFFD, 0xE1F8, 0xFFFD, 0xFFFD, 0x8EA5, 0xFFFD, -/* 2670 */ 0xFFFD, 0xFFFD, 0xE1FA, 0xE1F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1FB, -/* 2678 */ 0xE1F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x94D6, 0xE1F4, 0xFFFD, -/* 2680 */ 0xFFFD, 0xE1F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE241, -/* 2688 */ 0xE240, 0x9681, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1FC, 0xFFFD, 0xFFFD, -/* 2690 */ 0x88E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE243, 0xFFFD, 0xFFFD, -/* 2698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE242, 0xFFFD, -/* 26A0 */ 0xFFFD, 0xFFFD, 0x8FCA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26A8 */ 0xE244, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9162, -/* 26B0 */ 0xFFFD, 0xFFFD, 0xE246, 0xE245, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26B8 */ 0xFFFD, 0xFFFD, 0xE247, 0xE1E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE1E8, -/* 26C0 */ 0xE249, 0xE248, 0x8EA6, 0xFFFD, 0x97E7, 0xFFFD, 0x8ED0, 0xFFFD, -/* 26C8 */ 0xE24A, 0x8C56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B5F, -/* 26D0 */ 0x8B46, 0x8E83, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26D8 */ 0x9753, 0xFFFD, 0xFFFD, 0xE250, 0xFFFD, 0xE24F, 0x9163, 0xE24C, -/* 26E0 */ 0xFFFD, 0xFFFD, 0xE24E, 0xFFFD, 0xFFFD, 0x8F6A, 0x905F, 0xE24D, -/* 26E8 */ 0xE24B, 0xFFFD, 0x9449, 0xFFFD, 0xFFFD, 0x8FCB, 0xFFFD, 0xFFFD, -/* 26F0 */ 0x955B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8DD5, 0xFFFD, 0xFFFD, -/* 26F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9398, -/* 2700 */ 0xFFFD, 0xFFFD, 0xE251, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE252, -/* 2708 */ 0xE268, 0x8BD6, 0xFFFD, 0xFFFD, 0x985C, 0x9154, 0xFFFD, 0xFFFD, -/* 2710 */ 0xFFFD, 0xFFFD, 0xE253, 0xFFFD, 0xFFFD, 0x89D0, 0x92F5, 0x959F, -/* 2718 */ 0xE254, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2720 */ 0xFFFD, 0x8B9A, 0xE255, 0xFFFD, 0xFFFD, 0xE257, 0xFFFD, 0xFFFD, -/* 2728 */ 0xFFFD, 0xE258, 0xFFFD, 0x9448, 0xFFFD, 0xFFFD, 0xE259, 0xFFFD, -/* 2730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE25A, 0xE25B, 0xFFFD, 0xFFFD, -/* 2738 */ 0x8BD7, 0x89D1, 0x93C3, 0x8F47, 0x8E84, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE25C, 0xFFFD, 0x8F48, 0xFFFD, -/* 2748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x89C8, 0x9562, 0xFFFD, 0xFFFD, -/* 2750 */ 0xE25D, 0xFFFD, 0xFFFD, 0x94E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2758 */ 0xFFFD, 0xFFFD, 0x9164, 0xFFFD, 0xE260, 0xFFFD, 0xE261, 0x9489, -/* 2760 */ 0xFFFD, 0x9060, 0xE25E, 0xFFFD, 0x9281, 0xFFFD, 0xFFFD, 0xE25F, -/* 2768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8FCC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2770 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88DA, 0xFFFD, -/* 2778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8B48, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE262, 0xFFFD, 0xFFFD, 0x92F6, 0xFFFD, -/* 2788 */ 0xE263, 0x90C5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96AB, -/* 2790 */ 0xFFFD, 0xFFFD, 0x9542, 0xE264, 0xE265, 0x9274, 0xFFFD, 0x97C5, -/* 2798 */ 0xFFFD, 0xFFFD, 0xE267, 0xE266, 0x8EED, 0xFFFD, 0xFFFD, 0xE269, -/* 27A0 */ 0x88EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE26C, 0xFFFD, 0xFFFD, -/* 27A8 */ 0xFFFD, 0xE26A, 0x89D2, 0x8C6D, 0xE26B, 0x8D65, 0x8D92, 0xFFFD, -/* 27B0 */ 0x95E4, 0xE26D, 0xFFFD, 0xFFFD, 0x9673, 0xFFFD, 0xFFFD, 0xE26F, -/* 27B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x90CF, 0x896E, 0x89B8, 0x88AA, 0xFFFD, -/* 27C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE26E, 0xFFFD, 0xFFFD, -/* 27C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE270, -/* 27D0 */ 0xE271, 0x8FF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE272, -/* 27D8 */ 0xFFFD, 0x8A6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE274, 0xFFFD, -/* 27E0 */ 0xFFFD, 0xFFFD, 0x8C8A, 0xFFFD, 0x8B86, 0xFFFD, 0xFFFD, 0xE275, -/* 27E8 */ 0x8BF3, 0xFFFD, 0xFFFD, 0xE276, 0xFFFD, 0x90FA, 0xFFFD, 0x93CB, -/* 27F0 */ 0xFFFD, 0x90DE, 0x8DF3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE277, 0xFFFD, -/* 27F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2800 */ 0x9282, 0x918B, 0xFFFD, 0xE279, 0xE27B, 0xE278, 0xE27A, 0xFFFD, -/* 2808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C41, 0xFFFD, 0xFFFD, -/* 2810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE27C, -/* 2818 */ 0x8C45, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B87, 0x9771, 0xE27E, 0xFFFD, -/* 2820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE280, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2828 */ 0x894D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE283, 0xFFFD, 0xFFFD, -/* 2830 */ 0xFFFD, 0x8A96, 0xE282, 0xE281, 0xFFFD, 0xE285, 0xE27D, 0xFFFD, -/* 2838 */ 0xE286, 0x97A7, 0xFFFD, 0xE287, 0xFFFD, 0xE288, 0xFFFD, 0xFFFD, -/* 2840 */ 0x9AF2, 0xE28A, 0xFFFD, 0xE289, 0xFFFD, 0xFFFD, 0xFFFD, 0xE28B, -/* 2848 */ 0xE28C, 0xFFFD, 0x97B3, 0xE28D, 0xFFFD, 0xE8ED, 0x8FCD, 0xE28E, -/* 2850 */ 0xE28F, 0x8F76, 0xFFFD, 0x93B6, 0xE290, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2858 */ 0x9247, 0xFFFD, 0xFFFD, 0xE291, 0xFFFD, 0x925B, 0xE292, 0xFFFD, -/* 2860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BA3, 0xFFFD, 0x995E, 0x927C, -/* 2868 */ 0x8EB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AC6, 0xFFFD, 0xFFFD, -/* 2870 */ 0xE293, 0xFFFD, 0xE2A0, 0xFFFD, 0xE296, 0xFFFD, 0x8B88, 0xFFFD, -/* 2878 */ 0xE295, 0xE2A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xE294, 0xFFFD, 0x8FCE, -/* 2880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE298, 0xE299, -/* 2888 */ 0xFFFD, 0x934A, 0xFFFD, 0xFFFD, 0xE29A, 0xFFFD, 0x8A7D, 0xFFFD, -/* 2890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9079, 0x9584, 0xFFFD, 0xE29C, 0xFFFD, -/* 2898 */ 0xFFFD, 0xFFFD, 0x91E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28A0 */ 0xFFFD, 0xE297, 0xFFFD, 0xE29B, 0xE29D, 0xFFFD, 0xFFFD, 0x8DF9, -/* 28A8 */ 0xE2A4, 0x954D, 0xFFFD, 0x94A4, 0x9399, 0xFFFD, 0x8BD8, 0xE2A3, -/* 28B0 */ 0xE2A1, 0xFFFD, 0x94B3, 0xE29E, 0x927D, 0x939B, 0xFFFD, 0x939A, -/* 28B8 */ 0xFFFD, 0x8DF4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28C0 */ 0xE2B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 28C8 */ 0xE2A6, 0xFFFD, 0xE2A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2AB, -/* 28D0 */ 0xFFFD, 0xE2AC, 0xFFFD, 0xE2A9, 0xE2AA, 0xFFFD, 0xFFFD, 0xE2A7, -/* 28D8 */ 0xE2A5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE29F, 0x95CD, 0x89D3, -/* 28E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2B3, 0xFFFD, 0xE2B0, 0xFFFD, 0xE2B5, -/* 28E8 */ 0xFFFD, 0xFFFD, 0xE2B4, 0xFFFD, 0x9493, 0x96A5, 0xFFFD, 0x8E5A, -/* 28F0 */ 0xE2AE, 0xE2B7, 0xE2B2, 0xFFFD, 0xE2B1, 0xE2AD, 0xFFFD, 0xE2AF, -/* 28F8 */ 0xFFFD, 0x8AC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2900 */ 0xFFFD, 0xFFFD, 0x925C, 0xFFFD, 0xFFFD, 0x90FB, 0xFFFD, 0xFFFD, -/* 2908 */ 0xFFFD, 0x94A0, 0xFFFD, 0xFFFD, 0xE2BC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2910 */ 0x94A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2918 */ 0x90DF, 0xE2B9, 0xFFFD, 0xFFFD, 0x94CD, 0xFFFD, 0xE2BD, 0x95D1, -/* 2920 */ 0xFFFD, 0x927A, 0xFFFD, 0xE2B8, 0xE2BA, 0xFFFD, 0xFFFD, 0xE2BB, -/* 2928 */ 0xE2BE, 0xFFFD, 0xFFFD, 0x8EC2, 0xFFFD, 0xFFFD, 0xFFFD, 0x93C4, -/* 2930 */ 0xE2C3, 0xE2C2, 0xFFFD, 0xFFFD, 0xE2BF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2938 */ 0x9855, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C8, 0xFFFD, -/* 2940 */ 0xFFFD, 0xE2CC, 0xE2C9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2948 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2950 */ 0xFFFD, 0xFFFD, 0xE2C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2958 */ 0xE2CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2C0, 0x99D3, 0xE2C7, 0xE2C1, -/* 2960 */ 0xFFFD, 0xFFFD, 0xE2CA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2968 */ 0xFFFD, 0xFFFD, 0xE2D0, 0xFFFD, 0x8AC8, 0xFFFD, 0xE2CD, 0xFFFD, -/* 2970 */ 0xFFFD, 0xFFFD, 0xE2CE, 0xFFFD, 0xFFFD, 0xE2CF, 0xE2D2, 0xE2D1, -/* 2978 */ 0x94F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2D3, 0x97FA, 0x95EB, -/* 2980 */ 0xE2D8, 0xFFFD, 0xFFFD, 0xE2D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2988 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2D4, 0x90D0, 0xFFFD, 0xE2D7, -/* 2990 */ 0xE2D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2D6, 0xFFFD, 0xE2DD, 0xFFFD, -/* 2998 */ 0xE2DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2DB, -/* 29A0 */ 0xE2C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2DC, 0xE2DE, 0xFFFD, 0xFFFD, -/* 29A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2DF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x95C4, 0xFFFD, 0xE2E0, 0xFFFD, 0xFFFD, -/* 29B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96E0, 0xFFFD, -/* 29C0 */ 0xFFFD, 0x8BCC, 0x8C48, 0xE2E1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29C8 */ 0xFFFD, 0x95B2, 0xFFFD, 0x9088, 0xFFFD, 0x96AE, 0xFFFD, 0xFFFD, -/* 29D0 */ 0xE2E2, 0xFFFD, 0x97B1, 0xFFFD, 0xFFFD, 0x9494, 0xFFFD, 0x9165, -/* 29D8 */ 0x9453, 0xFFFD, 0xFFFD, 0x8F6C, 0xFFFD, 0xFFFD, 0xFFFD, 0x88BE, -/* 29E0 */ 0xFFFD, 0xE2E7, 0xE2E5, 0xFFFD, 0xE2E3, 0x8A9F, 0xFFFD, 0x8FCF, -/* 29E8 */ 0xE2E8, 0xFFFD, 0xFFFD, 0xE2E6, 0xFFFD, 0xE2E4, 0xE2EC, 0xFFFD, -/* 29F0 */ 0xFFFD, 0xE2EB, 0xE2EA, 0xE2E9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 29F8 */ 0xFFFD, 0xE2ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2EE, 0x90B8, 0xFFFD, -/* 2A00 */ 0xE2EF, 0xFFFD, 0xE2F1, 0xFFFD, 0xFFFD, 0xE2F0, 0xFFFD, 0xFFFD, -/* 2A08 */ 0xFFFD, 0xFFFD, 0x8CD0, 0xFFFD, 0xFFFD, 0xFFFD, 0x9157, 0xFFFD, -/* 2A10 */ 0xFFFD, 0xFFFD, 0xE2F3, 0xFFFD, 0xFFFD, 0xFFFD, 0x939C, 0xFFFD, -/* 2A18 */ 0xE2F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2F4, 0xFFFD, 0x95B3, 0x918C, -/* 2A20 */ 0x8D66, 0xFFFD, 0xE2F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97C6, -/* 2A28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE2F7, -/* 2A30 */ 0xFFFD, 0xFFFD, 0xE2F8, 0xFFFD, 0xE2F9, 0xFFFD, 0xE2FA, 0xFFFD, -/* 2A38 */ 0x8E85, 0xFFFD, 0xE2FB, 0x8C6E, 0xFFFD, 0xFFFD, 0x8B8A, 0xFFFD, -/* 2A40 */ 0x8B49, 0xFFFD, 0xE340, 0xFFFD, 0x96F1, 0x8D67, 0xE2FC, 0xFFFD, -/* 2A48 */ 0xFFFD, 0xFFFD, 0xE343, 0x96E4, 0xFFFD, 0x945B, 0xFFFD, 0xFFFD, -/* 2A50 */ 0x9552, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F83, 0xE342, 0xFFFD, 0x8ED1, -/* 2A58 */ 0x8D68, 0x8E86, 0x8B89, 0x95B4, 0xE341, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A60 */ 0x9166, 0x9661, 0x8DF5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2A68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8E87, 0x92DB, 0xFFFD, 0xE346, 0x97DD, -/* 2A70 */ 0x8DD7, 0xFFFD, 0xE347, 0x9061, 0xFFFD, 0xE349, 0xFFFD, 0xFFFD, -/* 2A78 */ 0xFFFD, 0x8FD0, 0x8DAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE348, -/* 2A80 */ 0xFFFD, 0xFFFD, 0x8F49, 0x8CBC, 0x9167, 0xE344, 0xE34A, 0xFFFD, -/* 2A88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE345, 0x8C6F, 0xFFFD, 0xE34D, 0xE351, -/* 2A90 */ 0x8C8B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE34C, 0xFFFD, -/* 2A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE355, 0xFFFD, 0xFFFD, 0x8D69, 0xFFFD, -/* 2AA0 */ 0xFFFD, 0x978D, 0x88BA, 0xE352, 0xFFFD, 0xFFFD, 0x8B8B, 0xFFFD, -/* 2AA8 */ 0xE34F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE350, 0xFFFD, -/* 2AB0 */ 0xFFFD, 0x939D, 0xE34E, 0xE34B, 0xFFFD, 0x8A47, 0x90E2, 0xFFFD, -/* 2AB8 */ 0xFFFD, 0x8CA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE357, 0xE354, 0xFFFD, -/* 2AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE356, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AC8 */ 0xE353, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C70, 0x91B1, -/* 2AD0 */ 0xE358, 0x918E, 0xFFFD, 0xFFFD, 0xE365, 0xFFFD, 0xFFFD, 0xE361, -/* 2AD8 */ 0xE35B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AE0 */ 0xE35F, 0x8EF8, 0x88DB, 0xE35A, 0xE362, 0xE366, 0x8D6A, 0x96D4, -/* 2AE8 */ 0xFFFD, 0x92D4, 0xE35C, 0xFFFD, 0xFFFD, 0xE364, 0xFFFD, 0xE359, -/* 2AF0 */ 0x925D, 0xFFFD, 0xE35E, 0x88BB, 0x96C8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2AF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE35D, 0xFFFD, 0xFFFD, 0x8BD9, -/* 2B00 */ 0x94EA, 0xFFFD, 0xFFFD, 0xFFFD, 0x918D, 0xFFFD, 0x97CE, 0x8F8F, -/* 2B08 */ 0xFFFD, 0xFFFD, 0xE38E, 0xFFFD, 0xFFFD, 0xE367, 0xFFFD, 0x90FC, -/* 2B10 */ 0xFFFD, 0xE363, 0xE368, 0xE36A, 0xFFFD, 0x92F7, 0xE36D, 0xFFFD, -/* 2B18 */ 0xFFFD, 0xE369, 0xFFFD, 0xFFFD, 0xFFFD, 0x95D2, 0x8AC9, 0xFFFD, -/* 2B20 */ 0xFFFD, 0x96C9, 0xFFFD, 0xFFFD, 0x88DC, 0xFFFD, 0xFFFD, 0xE36C, -/* 2B28 */ 0xFFFD, 0x97FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B30 */ 0xE36B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x898F, 0xFFFD, -/* 2B38 */ 0xFFFD, 0x93EA, 0xE36E, 0xFFFD, 0xFFFD, 0xFFFD, 0xE375, 0xE36F, -/* 2B40 */ 0xE376, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE372, -/* 2B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B50 */ 0x949B, 0xFFFD, 0xFFFD, 0x8EC8, 0xE374, 0xFFFD, 0xE371, 0xE377, -/* 2B58 */ 0xE370, 0xFFFD, 0xFFFD, 0x8F63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B60 */ 0x9644, 0xFFFD, 0xFFFD, 0x8F6B, 0xFFFD, 0xFFFD, 0xE373, 0xE380, -/* 2B68 */ 0xFFFD, 0xFFFD, 0xE37B, 0xFFFD, 0xE37E, 0xFFFD, 0xE37C, 0xE381, -/* 2B70 */ 0xE37A, 0xFFFD, 0xE360, 0x90D1, 0xFFFD, 0xFFFD, 0x94C9, 0xFFFD, -/* 2B78 */ 0xE37D, 0xFFFD, 0xFFFD, 0xE378, 0xFFFD, 0xFFFD, 0xFFFD, 0x9140, -/* 2B80 */ 0x8C71, 0xFFFD, 0x8F4A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B88 */ 0xFFFD, 0x9044, 0x9155, 0xE384, 0xFFFD, 0xFFFD, 0xE386, 0xE387, -/* 2B90 */ 0xFFFD, 0xFFFD, 0xE383, 0xE385, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE379, 0xE382, 0xFFFD, 0xE38A, 0xE389, -/* 2BA0 */ 0xFFFD, 0xFFFD, 0x969A, 0xFFFD, 0xFFFD, 0x8C4A, 0xFFFD, 0xFFFD, -/* 2BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE388, 0xFFFD, -/* 2BB0 */ 0xE38C, 0xE38B, 0xE38F, 0xFFFD, 0xE391, 0xFFFD, 0xFFFD, 0x8E5B, -/* 2BB8 */ 0xE38D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE392, 0xE393, 0xFFFD, -/* 2BC0 */ 0xFFFD, 0xE394, 0xFFFD, 0xE39A, 0x935A, 0xE396, 0xFFFD, 0xE395, -/* 2BC8 */ 0xE397, 0xE398, 0xFFFD, 0xE399, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BD0 */ 0xE39B, 0xE39C, 0x8ACA, 0xFFFD, 0xE39D, 0xFFFD, 0xE39E, 0xFFFD, -/* 2BD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BE0 */ 0xFFFD, 0xE39F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BE8 */ 0xE3A0, 0xE3A1, 0xE3A2, 0xFFFD, 0xE3A3, 0xE3A4, 0xFFFD, 0xFFFD, -/* 2BF0 */ 0xE3A6, 0xE3A5, 0xFFFD, 0xFFFD, 0xE3A7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2BF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3A8, 0xE3A9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3AC, 0xE3AA, 0xE3AB, 0x8DDF, 0x8C72, -/* 2C08 */ 0xFFFD, 0xFFFD, 0x9275, 0xFFFD, 0x94B1, 0xFFFD, 0x8F90, 0xFFFD, -/* 2C10 */ 0xFFFD, 0x946C, 0xFFFD, 0x94EB, 0xE3AD, 0x9CEB, 0xFFFD, 0xFFFD, -/* 2C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3AE, 0xE3B0, -/* 2C20 */ 0xFFFD, 0x9785, 0xE3AF, 0xE3B2, 0xE3B1, 0xFFFD, 0x9772, 0xFFFD, -/* 2C28 */ 0xE3B3, 0xFFFD, 0x94FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C30 */ 0xE3B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3B7, 0xFFFD, -/* 2C38 */ 0xFFFD, 0xE3B6, 0xE3B5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3B8, -/* 2C40 */ 0x8C51, 0xFFFD, 0xFFFD, 0xFFFD, 0x9141, 0x8B60, 0xFFFD, 0xFFFD, -/* 2C48 */ 0xFFFD, 0xFFFD, 0xE3BC, 0xE3B9, 0xFFFD, 0xFFFD, 0xE3BA, 0xFFFD, -/* 2C50 */ 0xFFFD, 0xFFFD, 0xE3BD, 0xFFFD, 0xE3BE, 0xE3BB, 0xFFFD, 0xFFFD, -/* 2C58 */ 0xFFFD, 0x8948, 0xFFFD, 0xFFFD, 0xFFFD, 0x89A5, 0xFFFD, 0xFFFD, -/* 2C60 */ 0xFFFD, 0xE3C0, 0xE3C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3C2, 0xFFFD, -/* 2C68 */ 0x9782, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F4B, 0xFFFD, -/* 2C70 */ 0xE3C4, 0xE3C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9089, 0xE3C5, 0xFFFD, 0xFFFD, -/* 2C80 */ 0xFFFD, 0xFFFD, 0xE3C6, 0xFFFD, 0xFFFD, 0xE3C7, 0xFFFD, 0x8AE3, -/* 2C88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8ACB, 0xFFFD, 0xFFFD, 0xE3C8, -/* 2C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3C9, 0xFFFD, 0x967C, -/* 2C98 */ 0x9783, 0xFFFD, 0xFFFD, 0xFFFD, 0x9773, 0x9856, 0xFFFD, 0x8D6C, -/* 2CA0 */ 0xE3CC, 0x8ED2, 0xE3CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3CD, -/* 2CA8 */ 0x8EA7, 0xFFFD, 0xFFFD, 0xFFFD, 0x91CF, 0xFFFD, 0xE3CE, 0xFFFD, -/* 2CB0 */ 0xFFFD, 0x8D6B, 0xFFFD, 0x96D5, 0xE3CF, 0xE3D0, 0xFFFD, 0xFFFD, -/* 2CB8 */ 0xE3D1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3D2, 0xFFFD, 0xFFFD, -/* 2CC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3D3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EA8, -/* 2CD0 */ 0xFFFD, 0xFFFD, 0x96EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3D5, -/* 2CD8 */ 0xFFFD, 0x925E, 0xFFFD, 0xE3D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CE0 */ 0xFFFD, 0xFFFD, 0xE3D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3D6, 0xFFFD, -/* 2CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3D8, 0xFFFD, -/* 2CF0 */ 0xFFFD, 0xFFFD, 0x90B9, 0xFFFD, 0xE3D9, 0xFFFD, 0xE3DA, 0xFFFD, -/* 2CF8 */ 0xFFFD, 0xFFFD, 0x95B7, 0xE3DB, 0xFFFD, 0x918F, 0xE3DC, 0xFFFD, -/* 2D00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3DD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x97FC, 0xE3E0, 0xFFFD, 0xE3DF, 0xE3DE, -/* 2D10 */ 0x92AE, 0xFFFD, 0xE3E1, 0x9045, 0xFFFD, 0xE3E2, 0xFFFD, 0xFFFD, -/* 2D18 */ 0xFFFD, 0xE3E3, 0x9857, 0xE3E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D20 */ 0xE3E5, 0xE3E7, 0xE3E6, 0x94A3, 0xFFFD, 0x93F7, 0xFFFD, 0x985D, -/* 2D28 */ 0x94A7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3E9, -/* 2D30 */ 0xFFFD, 0xFFFD, 0x8FD1, 0xFFFD, 0x9549, 0xFFFD, 0xE3EA, 0xE3E8, -/* 2D38 */ 0xFFFD, 0x8ACC, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CD2, 0x8E88, 0xFFFD, -/* 2D40 */ 0xFFFD, 0x94EC, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CA8, 0x9662, 0xFFFD, -/* 2D48 */ 0xE3ED, 0xE3EB, 0xFFFD, 0x8D6D, 0xFFFD, 0x8D6E, 0x88E7, 0xFFFD, -/* 2D50 */ 0x8DE6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9478, 0xFFFD, -/* 2D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88DD, -/* 2D60 */ 0xE3F2, 0xFFFD, 0x925F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D68 */ 0x9477, 0xFFFD, 0x91D9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D70 */ 0xFFFD, 0xFFFD, 0xE3F4, 0xFFFD, 0xFFFD, 0xE3F0, 0xE3F3, 0xE3EE, -/* 2D78 */ 0xFFFD, 0xE3F1, 0x9645, 0xFFFD, 0xFFFD, 0x8CD3, 0xFFFD, 0xFFFD, -/* 2D80 */ 0x88FB, 0xE3EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE3F6, 0xFFFD, 0xE3F7, 0xFFFD, 0xFFFD, -/* 2D90 */ 0x93B7, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BB9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D98 */ 0xE445, 0x945C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E89, 0xFFFD, -/* 2DA0 */ 0xFFFD, 0x8BBA, 0x90C6, 0x9865, 0x96AC, 0xE3F5, 0x90D2, 0x8B72, -/* 2DA8 */ 0xE3F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DB0 */ 0xE3FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3F9, 0xFFFD, -/* 2DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE3FB, 0xFFFD, 0x9245, 0xFFFD, -/* 2DC0 */ 0x945D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92AF, 0xFFFD, -/* 2DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE442, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE441, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DD8 */ 0xE3FC, 0xFFFD, 0xFFFD, 0x9074, 0xFFFD, 0x9585, 0xE444, 0xFFFD, -/* 2DE0 */ 0xE443, 0x8D6F, 0x9872, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE454, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DF0 */ 0xFFFD, 0xFFFD, 0xE448, 0xE449, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2DF8 */ 0x8EEE, 0xFFFD, 0xFFFD, 0xE447, 0xFFFD, 0x8D98, 0xE446, 0xFFFD, -/* 2E00 */ 0xFFFD, 0xE44A, 0xFFFD, 0xFFFD, 0xFFFD, 0x92B0, 0x95A0, 0x9142, -/* 2E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91DA, 0xE44E, 0xFFFD, 0xE44F, -/* 2E10 */ 0xE44B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE44C, 0xFFFD, 0xE44D, -/* 2E18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8D70, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E20 */ 0xE455, 0xFFFD, 0xE451, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9586, -/* 2E28 */ 0xFFFD, 0x968C, 0x9547, 0xFFFD, 0xFFFD, 0xE450, 0xFFFD, 0xFFFD, -/* 2E30 */ 0xE453, 0xE452, 0xFFFD, 0xFFFD, 0xFFFD, 0x9663, 0xE456, 0xFFFD, -/* 2E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE457, 0xFFFD, 0xFFFD, -/* 2E40 */ 0x9156, 0xFFFD, 0xE458, 0xFFFD, 0xFFFD, 0xE45A, 0xFFFD, 0xE45E, -/* 2E48 */ 0xFFFD, 0xFFFD, 0xE45B, 0xE459, 0x945E, 0xE45C, 0xFFFD, 0xE45D, -/* 2E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x89B0, 0xFFFD, 0xE464, 0xE45F, 0xFFFD, -/* 2E58 */ 0xFFFD, 0xFFFD, 0xE460, 0xFFFD, 0xFFFD, 0xFFFD, 0xE461, 0xFFFD, -/* 2E60 */ 0x919F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE463, 0xE462, 0xE465, -/* 2E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE466, 0xE467, 0xFFFD, 0xFFFD, -/* 2E70 */ 0x9062, 0xFFFD, 0x89E7, 0xFFFD, 0xE468, 0x97D5, 0xFFFD, 0x8EA9, -/* 2E78 */ 0xFFFD, 0xFFFD, 0x8F4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2E80 */ 0x8E8A, 0x9276, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE469, -/* 2E88 */ 0xE46A, 0x8950, 0xFFFD, 0xE46B, 0xFFFD, 0xFFFD, 0xE46C, 0xE46D, -/* 2E90 */ 0xFFFD, 0xFFFD, 0xE46E, 0xFFFD, 0xE46F, 0x8BBB, 0x9DA8, 0xE470, -/* 2E98 */ 0xFFFD, 0x90E3, 0xE471, 0x8EC9, 0xFFFD, 0xE472, 0xFFFD, 0x98AE, -/* 2EA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE473, 0x95DC, 0x8ADA, 0xFFFD, 0xFFFD, -/* 2EA8 */ 0x9143, 0x8F77, 0xFFFD, 0x9591, 0x8F4D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE474, 0x8D71, -/* 2EB8 */ 0xE475, 0x94CA, 0xFFFD, 0xE484, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EC0 */ 0xE477, 0xFFFD, 0x91C7, 0x9495, 0x8CBD, 0xE476, 0x9144, 0xFFFD, -/* 2EC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE478, 0xFFFD, 0xFFFD, -/* 2ED0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x92F8, 0xE47A, 0xE479, 0xE47C, -/* 2ED8 */ 0xFFFD, 0xFFFD, 0xE47B, 0xFFFD, 0xE47D, 0xFFFD, 0xFFFD, 0xE480, -/* 2EE0 */ 0xFFFD, 0xE47E, 0xFFFD, 0x8ACD, 0xFFFD, 0xE481, 0xFFFD, 0xE482, -/* 2EE8 */ 0xE483, 0xFFFD, 0xFFFD, 0x8DAF, 0x97C7, 0xFFFD, 0xE485, 0x9046, -/* 2EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8990, 0xE486, 0xE487, 0xFFFD, 0xFFFD, -/* 2EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE488, 0x88F0, 0xFFFD, 0xE489, 0xFFFD, -/* 2F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE48A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F08 */ 0xFFFD, 0xFFFD, 0x9587, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EC5, 0xFFFD, -/* 2F10 */ 0xE48C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A48, 0x88B0, -/* 2F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE48B, 0xE48E, 0x946D, 0xFFFD, -/* 2F20 */ 0x9063, 0xFFFD, 0x89D4, 0xFFFD, 0x9646, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F28 */ 0xFFFD, 0x8C7C, 0x8BDA, 0xFFFD, 0xE48D, 0xFFFD, 0x89E8, 0xFFFD, -/* 2F30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AA1, 0x8991, -/* 2F38 */ 0xE492, 0x97E8, 0x91DB, 0xFFFD, 0xFFFD, 0x9563, 0xFFFD, 0xE49E, -/* 2F40 */ 0xFFFD, 0x89D5, 0xE49C, 0xFFFD, 0xE49A, 0xE491, 0xFFFD, 0xE48F, -/* 2F48 */ 0xFFFD, 0xE490, 0xFFFD, 0x8EE1, 0x8BEA, 0x9297, 0xFFFD, 0xFFFD, -/* 2F50 */ 0xFFFD, 0x93CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8970, -/* 2F58 */ 0xFFFD, 0xE494, 0xE493, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE499, -/* 2F60 */ 0xE495, 0xE498, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F68 */ 0x96CE, 0xE497, 0x89D6, 0x8A9D, 0xE49B, 0xFFFD, 0xFFFD, 0xE49D, -/* 2F70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C73, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4A1, 0xE4AA, 0xE4AB, 0xFFFD, -/* 2F80 */ 0xFFFD, 0xFFFD, 0x88A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F88 */ 0xFFFD, 0xE4B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x88EF, 0xFFFD, -/* 2F90 */ 0xFFFD, 0xE4A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4A8, 0xFFFD, 0xE4A3, -/* 2F98 */ 0xE4A2, 0xFFFD, 0xE4A0, 0xE49F, 0x9283, 0xFFFD, 0x91F9, 0xE4A5, -/* 2FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4A4, 0xFFFD, -/* 2FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE4A7, 0xFFFD, 0xFFFD, 0xFFFD, 0x9190, -/* 2FB0 */ 0x8C74, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8960, 0xE4A6, 0xFFFD, -/* 2FB8 */ 0x8D72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9191, 0xE4B8, -/* 2FC0 */ 0xFFFD, 0xE4B9, 0xFFFD, 0x89D7, 0xFFFD, 0xFFFD, 0xFFFD, 0x89AC, -/* 2FC8 */ 0xE4B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2FD0 */ 0xFFFD, 0xE4AC, 0xFFFD, 0xE4B4, 0xFFFD, 0xE4BB, 0xE4B5, 0xFFFD, -/* 2FD8 */ 0xFFFD, 0xFFFD, 0xE4B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE496, -/* 2FE0 */ 0xFFFD, 0xFFFD, 0xE4B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4AD, 0xFFFD, -/* 2FE8 */ 0xFFFD, 0xFFFD, 0x8ACE, 0xE4AF, 0xE4BA, 0xFFFD, 0xE4B0, 0xFFFD, -/* 2FF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4BC, 0xFFFD, 0xE4AE, 0x949C, -/* 2FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9789, 0xFFFD, 0xFFFD, -/* 3000 */ 0xFFFD, 0xE4B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3008 */ 0xFFFD, 0xE4CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4C5, 0xFFFD, 0xFFFD, -/* 3010 */ 0xFFFD, 0x909B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B65, 0xFFFD, -/* 3018 */ 0x8BDB, 0xFFFD, 0xE4C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x89D9, -/* 3020 */ 0xFFFD, 0xFFFD, 0x8FD2, 0xFFFD, 0xE4C3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3028 */ 0x8DD8, 0xFFFD, 0xFFFD, 0x9370, 0xE4C8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95EC, 0xFFFD, 0xE4BF, -/* 3038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x89D8, 0x8CD4, 0x9548, 0xE4C9, 0xFFFD, -/* 3040 */ 0xE4BD, 0xFFFD, 0xFFFD, 0xE4C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4D0, -/* 3048 */ 0xFFFD, 0xE4C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4C2, -/* 3050 */ 0x93B8, 0xFFFD, 0xFFFD, 0xE4C7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4C4, -/* 3058 */ 0x9647, 0xE4CA, 0x88DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4BE, -/* 3060 */ 0xE4CC, 0xFFFD, 0xE4CB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3068 */ 0xFFFD, 0x948B, 0xE4D2, 0xFFFD, 0xE4DD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3070 */ 0xFFFD, 0x8A9E, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4E0, 0xFFFD, 0xFFFD, -/* 3078 */ 0xE4CE, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4D3, 0x978E, 0xFFFD, 0xFFFD, -/* 3080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4DC, 0xFFFD, -/* 3088 */ 0xFFFD, 0x9774, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97A8, 0xFFFD, -/* 3090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9298, -/* 3098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8A8B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30A0 */ 0xFFFD, 0x9592, 0xE4E2, 0x939F, 0xFFFD, 0xFFFD, 0x88AF, 0xFFFD, -/* 30A8 */ 0xFFFD, 0xE4DB, 0xFFFD, 0xE4D7, 0x9192, 0xE4D1, 0xE4D9, 0xE4DE, -/* 30B0 */ 0xFFFD, 0x944B, 0xFFFD, 0xFFFD, 0xFFFD, 0x88A8, 0xFFFD, 0xE4D6, -/* 30B8 */ 0xFFFD, 0xE4DF, 0x9598, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30C0 */ 0xFFFD, 0xFFFD, 0xE4DA, 0xFFFD, 0xE4D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8FD3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30D0 */ 0x8F4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EAA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 30D8 */ 0xFFFD, 0x96D6, 0xFFFD, 0xFFFD, 0x9566, 0xFFFD, 0xFFFD, 0xE4E5, -/* 30E0 */ 0xFFFD, 0xE4EE, 0xE4D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A97, -/* 30E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FF6, 0xE4E3, 0xFFFD, -/* 30F0 */ 0xE4E8, 0x9193, 0xFFFD, 0xFFFD, 0xE4E4, 0xFFFD, 0xE4EB, 0xFFFD, -/* 30F8 */ 0xFFFD, 0x927E, 0xFFFD, 0xE4EC, 0xFFFD, 0xFFFD, 0x9775, 0xE4E1, -/* 3100 */ 0x8A57, 0xFFFD, 0xE4E7, 0xFFFD, 0xFFFD, 0xE4EA, 0x96AA, 0xFFFD, -/* 3108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE4ED, 0xFFFD, 0xFFFD, 0xE4E6, 0xE4E9, -/* 3110 */ 0x9648, 0xFFFD, 0x9840, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3118 */ 0xE4F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3120 */ 0xE4F8, 0xFFFD, 0xFFFD, 0xE4F0, 0x8EC1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3128 */ 0xFFFD, 0xFFFD, 0xE4CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x95CC, 0xFFFD, 0x96A0, -/* 3138 */ 0xE4F7, 0xE4F6, 0xFFFD, 0xE4F2, 0xE4F3, 0xFFFD, 0x8955, 0xFFFD, -/* 3140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE4F5, 0xFFFD, 0xE4EF, 0xFFFD, 0xFFFD, -/* 3148 */ 0xFFFD, 0xFFFD, 0x92D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3150 */ 0xE4F4, 0x88FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3158 */ 0xFFFD, 0x91A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3160 */ 0xFFFD, 0x95C1, 0xFFFD, 0xFFFD, 0xE4F9, 0xE540, 0xFFFD, 0x94D7, -/* 3168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4FC, 0x8FD4, 0x8EC7, 0xE542, -/* 3170 */ 0xFFFD, 0xFFFD, 0x8BBC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3178 */ 0xFFFD, 0xE543, 0xFFFD, 0x9599, 0xE4FB, 0xFFFD, 0xE4D4, 0xFFFD, -/* 3180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE4FA, -/* 3188 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x986E, 0x93A0, 0x9593, 0xFFFD, -/* 3190 */ 0xFFFD, 0xE54A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE550, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31A0 */ 0xFFFD, 0xFFFD, 0xE551, 0xFFFD, 0xE544, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31A8 */ 0x9496, 0xFFFD, 0xFFFD, 0xE54E, 0xE546, 0xFFFD, 0xE548, 0xFFFD, -/* 31B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE552, 0xE547, 0xFFFD, 0xFFFD, -/* 31B8 */ 0xE54B, 0xFFFD, 0xFFFD, 0x8992, 0xFFFD, 0x93E3, 0xFFFD, 0xE54C, -/* 31C0 */ 0xE54F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31C8 */ 0xE545, 0xFFFD, 0x9145, 0xFFFD, 0xE549, 0x8E46, 0x9064, 0x8C4F, -/* 31D0 */ 0x96F2, 0xFFFD, 0x96F7, 0x8F92, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE556, 0xE554, 0xFFFD, -/* 31E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x986D, 0xFFFD, 0xFFFD, -/* 31E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE553, 0xFFFD, 0xFFFD, -/* 31F0 */ 0xFFFD, 0x9795, 0xFFFD, 0xE555, 0xE557, 0xFFFD, 0xFFFD, 0xFFFD, -/* 31F8 */ 0xFFFD, 0xE558, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3200 */ 0xE55B, 0xE559, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3208 */ 0x93A1, 0xE55A, 0xFFFD, 0xFFFD, 0xFFFD, 0x94CB, 0xE54D, 0x8F93, -/* 3210 */ 0xFFFD, 0xE55C, 0xE561, 0x9194, 0xFFFD, 0xFFFD, 0xE560, 0xFFFD, -/* 3218 */ 0xFFFD, 0xFFFD, 0xE541, 0xFFFD, 0xFFFD, 0xFFFD, 0xE562, 0x9168, -/* 3220 */ 0xFFFD, 0xFFFD, 0xE55D, 0xE55F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE55E, 0xFFFD, 0xFFFD, 0x9F50, 0x9F41, -/* 3230 */ 0xFFFD, 0xFFFD, 0xE564, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3238 */ 0xFFFD, 0xFFFD, 0xE563, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3240 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9796, 0xFFFD, 0xE1BA, -/* 3248 */ 0xE565, 0xE567, 0x8CD5, 0xFFFD, 0x8B73, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3250 */ 0xE569, 0x997C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B95, 0xFFFD, -/* 3258 */ 0x97B8, 0xFFFD, 0x8BF1, 0xE56A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3260 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE56B, 0xFFFD, 0xFFFD, 0xFFFD, 0x928E, -/* 3268 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE56C, 0xFFFD, 0xFFFD, -/* 3270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x93F8, 0xFFFD, 0x88B8, -/* 3278 */ 0x89E1, 0xE571, 0xE572, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3280 */ 0xFFFD, 0xE56D, 0xFFFD, 0x8E5C, 0xE56E, 0x9461, 0xFFFD, 0xFFFD, -/* 3288 */ 0xFFFD, 0xFFFD, 0xE56F, 0xE570, 0xE57A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3290 */ 0xE574, 0xE577, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE573, -/* 3298 */ 0xE575, 0xFFFD, 0xE576, 0x8ED6, 0xFFFD, 0xE578, 0xFFFD, 0x9260, -/* 32A0 */ 0xFFFD, 0x8C75, 0x8A61, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32A8 */ 0xE57B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A5E, 0xFFFD, 0xE581, -/* 32B0 */ 0xFFFD, 0xFFFD, 0xE57C, 0xE580, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32B8 */ 0x94B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE57D, 0xFFFD, 0xFFFD, -/* 32C0 */ 0xE57E, 0x9567, 0x94D8, 0xE582, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91FB, 0xE58C, 0xFFFD, 0xE588, -/* 32D0 */ 0xFFFD, 0xFFFD, 0x89E9, 0xFFFD, 0xE586, 0xFFFD, 0x9649, 0xE587, -/* 32D8 */ 0xFFFD, 0xFFFD, 0xE584, 0xFFFD, 0xE585, 0xE58A, 0xE58D, 0xFFFD, -/* 32E0 */ 0xFFFD, 0xE58B, 0xFFFD, 0xFFFD, 0xFFFD, 0xE589, 0xE583, 0xFFFD, -/* 32E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9277, 0xFFFD, 0xE594, 0xFFFD, -/* 32F0 */ 0x96A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 32F8 */ 0xFFFD, 0xE592, 0xFFFD, 0xFFFD, 0xFFFD, 0xE593, 0xFFFD, 0xFFFD, -/* 3300 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3308 */ 0xE58E, 0xFFFD, 0xFFFD, 0xE590, 0xFFFD, 0xFFFD, 0xFFFD, 0xE591, -/* 3310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE58F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90E4, 0xFFFD, 0x9858, -/* 3320 */ 0xE598, 0xFFFD, 0xE599, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE59F, -/* 3328 */ 0xFFFD, 0x9049, 0xFFFD, 0xE59B, 0xFFFD, 0xE59E, 0xFFFD, 0xFFFD, -/* 3330 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE596, 0xE595, 0xFFFD, 0xFFFD, 0xE5A0, -/* 3338 */ 0xFFFD, 0xFFFD, 0x89DA, 0xFFFD, 0xE59C, 0xFFFD, 0xE5A1, 0xFFFD, -/* 3340 */ 0xFFFD, 0xFFFD, 0xE59D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3348 */ 0xE59A, 0xFFFD, 0x92B1, 0xFFFD, 0xE597, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9488, 0xFFFD, 0xFFFD, 0xE5A5, 0xFFFD, -/* 3358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3360 */ 0xFFFD, 0x975A, 0xE5A4, 0xFFFD, 0xFFFD, 0xE5A3, 0xFFFD, 0xFFFD, -/* 3368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AC, 0xFFFD, -/* 3370 */ 0xFFFD, 0xFFFD, 0xE5A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AE, 0xFFFD, -/* 3378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9786, 0xE5B1, 0xFFFD, -/* 3380 */ 0xE5A8, 0xFFFD, 0xFFFD, 0xE5A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AD, -/* 3388 */ 0xFFFD, 0xE5B0, 0xE5AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5A7, 0xFFFD, -/* 3390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5AA, 0xFFFD, 0xE5BB, 0xE5B2, 0xFFFD, -/* 3398 */ 0xFFFD, 0xE5B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5B8, 0xE5B9, 0xFFFD, -/* 33A0 */ 0x8A49, 0xFFFD, 0x8B61, 0xFFFD, 0xFFFD, 0xE5B7, 0xFFFD, 0xFFFD, -/* 33A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5A2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5B6, 0xE5BA, 0xE5B5, 0xFFFD, -/* 33B8 */ 0xE5BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5BE, 0xE5BD, 0xFFFD, 0xFFFD, -/* 33C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33C8 */ 0xE5C0, 0xE5BF, 0xE579, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5C4, 0xFFFD, -/* 33D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33D8 */ 0xE5C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5C2, 0xFFFD, 0xFFFD, -/* 33E0 */ 0xE5C3, 0xFFFD, 0xE5C5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C8C, -/* 33E8 */ 0xFFFD, 0xE5C7, 0xFFFD, 0xE5C6, 0xFFFD, 0x8F4F, 0xFFFD, 0xFFFD, -/* 33F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8D73, 0x9FA5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33F8 */ 0xFFFD, 0xE5C8, 0x8F70, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A58, 0xFFFD, -/* 3400 */ 0xE5C9, 0xFFFD, 0x8971, 0xFFFD, 0x8FD5, 0xE5CA, 0xFFFD, 0xFFFD, -/* 3408 */ 0x8D74, 0xE5CB, 0x88DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x955C, -/* 3410 */ 0xFFFD, 0xFFFD, 0xE5CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x908A, -/* 3418 */ 0xFFFD, 0xE5D3, 0xFFFD, 0xFFFD, 0xE5D0, 0xFFFD, 0x928F, 0xFFFD, -/* 3420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5D1, 0xE5CE, 0x8BDC, 0xFFFD, -/* 3428 */ 0xE5CD, 0xE5D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C55, -/* 3430 */ 0xFFFD, 0xFFFD, 0x91DC, 0xFFFD, 0xE5DA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3438 */ 0xFFFD, 0xE5D6, 0xFFFD, 0xFFFD, 0xFFFD, 0x91B3, 0xE5D5, 0xFFFD, -/* 3440 */ 0xE5D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5CF, 0xFFFD, 0xFFFD, -/* 3448 */ 0xFFFD, 0xE5D9, 0xFFFD, 0xE5DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3450 */ 0xFFFD, 0xFFFD, 0x94ED, 0xFFFD, 0xFFFD, 0xE5D7, 0xFFFD, 0xE5DC, -/* 3458 */ 0xE5DE, 0xFFFD, 0xFFFD, 0x8CD1, 0xE5D2, 0xFFFD, 0x88BF, 0xFFFD, -/* 3460 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5DD, 0xFFFD, -/* 3468 */ 0x8DD9, 0x97F4, 0xE5DF, 0xE5E0, 0x9195, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97A0, 0xFFFD, -/* 3478 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5E1, 0x9754, 0xFFFD, 0xFFFD, 0xE5E2, -/* 3480 */ 0xE5E3, 0xFFFD, 0xFFFD, 0x95E2, 0xE5E4, 0xFFFD, 0x8DBE, 0xFFFD, -/* 3488 */ 0x97A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5E9, -/* 3490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3498 */ 0xFFFD, 0xE5EA, 0x8FD6, 0xE5E8, 0xFFFD, 0xFFFD, 0xFFFD, 0x9787, -/* 34A0 */ 0xE5E5, 0xFFFD, 0xFFFD, 0xE5E7, 0x90BB, 0x909E, 0xFFFD, 0xFFFD, -/* 34A8 */ 0xFFFD, 0xE5E6, 0xFFFD, 0xE5EB, 0xFFFD, 0xFFFD, 0x95A1, 0xFFFD, -/* 34B0 */ 0xFFFD, 0xE5ED, 0xFFFD, 0xE5EC, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A8C, -/* 34B8 */ 0xFFFD, 0x964A, 0xE5EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5FA, 0xE5F0, 0xFFFD, 0xFFFD, -/* 34C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5F1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34D0 */ 0xFFFD, 0xE5F2, 0xE5F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5F7, 0xFFFD, 0xE5F8, -/* 34E0 */ 0xFFFD, 0xFFFD, 0xE5F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34E8 */ 0xE5F4, 0xFFFD, 0xE5EF, 0xE5F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE5F9, 0xE8B5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 34F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x89A6, 0xFFFD, 0xFFFD, -/* 3500 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE5FC, 0x8BDD, 0xE5FB, -/* 3508 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE641, 0xFFFD, 0xE640, 0xFFFD, 0xFFFD, -/* 3510 */ 0xFFFD, 0xE643, 0xFFFD, 0xFFFD, 0xE642, 0xFFFD, 0xE644, 0xFFFD, -/* 3518 */ 0xFFFD, 0x8F50, 0xFFFD, 0xE645, 0xFFFD, 0xFFFD, 0xE646, 0xFFFD, -/* 3520 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE647, 0x90BC, 0xFFFD, -/* 3528 */ 0x9776, 0xFFFD, 0xE648, 0xFFFD, 0xFFFD, 0x95A2, 0x9465, 0xE649, -/* 3530 */ 0xFFFD, 0xE64A, 0x8CA9, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B4B, 0xFFFD, -/* 3538 */ 0xFFFD, 0xFFFD, 0xE64B, 0xFFFD, 0xFFFD, 0x8E8B, 0x9460, 0xE64C, -/* 3540 */ 0xFFFD, 0x8A6F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3548 */ 0xE64D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE64F, 0x9797, 0xFFFD, -/* 3550 */ 0xE64E, 0x9065, 0xFFFD, 0xE650, 0xFFFD, 0xFFFD, 0xE651, 0xFFFD, -/* 3558 */ 0xFFFD, 0xE652, 0x8ACF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3560 */ 0xFFFD, 0xE653, 0xFFFD, 0xFFFD, 0xE654, 0xFFFD, 0xE655, 0xE656, -/* 3568 */ 0x8A70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3570 */ 0xE657, 0xFFFD, 0xE658, 0xE659, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3578 */ 0xFFFD, 0x89F0, 0xFFFD, 0xFFFD, 0x9047, 0xE65A, 0xE65B, 0xFFFD, -/* 3580 */ 0xFFFD, 0xFFFD, 0xE65C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3588 */ 0xFFFD, 0xFFFD, 0x8CBE, 0xFFFD, 0x92F9, 0xE65D, 0xFFFD, 0xFFFD, -/* 3590 */ 0xFFFD, 0xFFFD, 0x8C76, 0xFFFD, 0x9075, 0xFFFD, 0xE660, 0xFFFD, -/* 3598 */ 0x93A2, 0xFFFD, 0xE65F, 0xFFFD, 0xFFFD, 0x8C50, 0xFFFD, 0xFFFD, -/* 35A0 */ 0xE65E, 0x91F5, 0x8B4C, 0xFFFD, 0xFFFD, 0xE661, 0xFFFD, 0xE662, -/* 35A8 */ 0xFFFD, 0x8FD7, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C8D, 0xFFFD, 0xE663, -/* 35B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x964B, 0xFFFD, 0xFFFD, 0x90DD, -/* 35B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8B96, 0xFFFD, 0x96F3, 0x9169, 0xFFFD, -/* 35C0 */ 0xE664, 0xFFFD, 0xFFFD, 0xFFFD, 0x9066, 0x9290, 0x8FD8, 0xFFFD, -/* 35C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE665, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35D0 */ 0xE668, 0xFFFD, 0xE669, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35D8 */ 0xFFFD, 0xFFFD, 0x8DBC, 0x91C0, 0xE667, 0xFFFD, 0x8FD9, 0x955D, -/* 35E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE666, 0xFFFD, 0xFFFD, -/* 35E8 */ 0x8E8C, 0xFFFD, 0x8972, 0xFFFD, 0xE66D, 0x8C77, 0xFFFD, 0xFFFD, -/* 35F0 */ 0x8E8E, 0xFFFD, 0xFFFD, 0x8E8D, 0xFFFD, 0x986C, 0xE66C, 0xE66B, -/* 35F8 */ 0x9146, 0xFFFD, 0x8B6C, 0x9862, 0x8A59, 0x8FDA, 0xFFFD, 0xFFFD, -/* 3600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE66A, 0xFFFD, -/* 3608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE66F, 0xFFFD, 0xE670, 0xE66E, -/* 3610 */ 0xFFFD, 0x8CD6, 0xFFFD, 0x975F, 0xFFFD, 0xFFFD, 0x8E8F, 0x9446, -/* 3618 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE673, 0xFFFD, 0x90BE, 0xFFFD, 0x9261, -/* 3620 */ 0xFFFD, 0xFFFD, 0x9755, 0xFFFD, 0xE676, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3628 */ 0x8CEA, 0xFFFD, 0x90BD, 0xE672, 0xFFFD, 0xE677, 0x8CEB, 0xE674, -/* 3630 */ 0xE675, 0xFFFD, 0xE671, 0xFFFD, 0xFFFD, 0xFFFD, 0x90E0, 0x93C7, -/* 3638 */ 0xFFFD, 0xFFFD, 0x924E, 0xFFFD, 0x89DB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x94EE, 0xFFFD, 0xFFFD, 0x8B62, 0xFFFD, -/* 3648 */ 0xFFFD, 0x92B2, 0xFFFD, 0xFFFD, 0xE67A, 0xFFFD, 0xE678, 0xFFFD, -/* 3650 */ 0xFFFD, 0x926B, 0xFFFD, 0xFFFD, 0xFFFD, 0x90BF, 0x8AD0, 0xE679, -/* 3658 */ 0xFFFD, 0x907A, 0xFFFD, 0xFFFD, 0x97C8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3660 */ 0x985F, 0xFFFD, 0xFFFD, 0xFFFD, 0xE67B, 0xE687, 0x92B3, 0xFFFD, -/* 3668 */ 0xE686, 0xFFFD, 0xE683, 0xE68B, 0xE684, 0xFFFD, 0xE680, 0xFFFD, -/* 3670 */ 0x92FA, 0xE67E, 0xFFFD, 0xFFFD, 0xFFFD, 0xE67C, 0xFFFD, 0x9740, -/* 3678 */ 0x8E90, 0xFFFD, 0xFFFD, 0xE681, 0xFFFD, 0xE67D, 0xFFFD, 0xFFFD, -/* 3680 */ 0xFFFD, 0xE685, 0x8F94, 0xFFFD, 0x8CBF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3688 */ 0x91F8, 0xFFFD, 0x9664, 0x8979, 0x88E0, 0xFFFD, 0x93A3, 0xFFFD, -/* 3690 */ 0xFFFD, 0xE689, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE688, 0xFFFD, -/* 3698 */ 0x93E4, 0xFFFD, 0xE68D, 0xFFFD, 0xFFFD, 0xFFFD, 0xE682, 0xFFFD, -/* 36A0 */ 0xE68C, 0xE68E, 0xFFFD, 0x8CAA, 0xE68A, 0x8D75, 0xFFFD, 0x8ED3, -/* 36A8 */ 0xFFFD, 0xFFFD, 0xE68F, 0x9777, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36B0 */ 0xE692, 0xFFFD, 0xE695, 0xFFFD, 0xFFFD, 0xE693, 0x9554, 0xFFFD, -/* 36B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE690, 0xFFFD, 0xFFFD, -/* 36C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8BDE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36C8 */ 0xE694, 0xFFFD, 0xFFFD, 0xE696, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE69A, 0xFFFD, 0xFFFD, 0xE697, 0xFFFD, -/* 36D8 */ 0xE699, 0xE698, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36E0 */ 0xE69B, 0xFFFD, 0x8EAF, 0xFFFD, 0xE69D, 0xE69C, 0x9588, 0xFFFD, -/* 36E8 */ 0xFFFD, 0xE69F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 36F0 */ 0x8C78, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE69E, 0xE6A0, 0xFFFD, -/* 36F8 */ 0xFFFD, 0xE6A1, 0x8B63, 0xE3BF, 0x8FF7, 0xFFFD, 0xE6A2, 0xFFFD, -/* 3700 */ 0xFFFD, 0x8CEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6A3, -/* 3708 */ 0xFFFD, 0xFFFD, 0xE6A4, 0xFFFD, 0xFFFD, 0x8E5D, 0xFFFD, 0xFFFD, -/* 3710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DCC, 0xFFFD, 0xE6A5, 0xFFFD, -/* 3718 */ 0xE6A6, 0xFFFD, 0x8F51, 0xFFFD, 0xE6A7, 0xE6A8, 0xFFFD, 0xFFFD, -/* 3720 */ 0xE6A9, 0xFFFD, 0xFFFD, 0xE6AA, 0xE6AB, 0x924A, 0xFFFD, 0xFFFD, -/* 3728 */ 0xE6AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6AE, 0xFFFD, 0xE6AD, -/* 3730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x93A4, 0xFFFD, 0xE6AF, 0xFFFD, -/* 3738 */ 0x964C, 0xFFFD, 0xE6B0, 0xFFFD, 0xE6B1, 0xFFFD, 0xE6B2, 0xFFFD, -/* 3740 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE6B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3748 */ 0x93D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FDB, -/* 3750 */ 0xE6B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3758 */ 0x8D8B, 0x98AC, 0xE6B5, 0xE6B6, 0x955E, 0xE6B7, 0xFFFD, 0xE6BF, -/* 3760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6B8, 0xFFFD, 0xFFFD, -/* 3768 */ 0xE6BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6B9, 0xE6BB, 0xFFFD, 0x9665, -/* 3770 */ 0xE6BC, 0xE6BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6BE, -/* 3778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE6C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3780 */ 0x8A4C, 0x92E5, 0xFFFD, 0x9589, 0x8DE0, 0x8D76, 0xFFFD, 0xFFFD, -/* 3788 */ 0xFFFD, 0xFFFD, 0x956E, 0x89DD, 0x94CC, 0xE6C3, 0x8AD1, 0x90D3, -/* 3790 */ 0xE6C2, 0xE6C7, 0x9299, 0x96E1, 0xFFFD, 0xE6C5, 0xE6C6, 0x8B4D, -/* 3798 */ 0xFFFD, 0xE6C8, 0x9483, 0x91DD, 0xFFFD, 0xFFFD, 0x94EF, 0x935C, -/* 37A0 */ 0xE6C4, 0xFFFD, 0x9666, 0x89EA, 0xE6CA, 0x9847, 0x92C0, 0x9864, -/* 37A8 */ 0xFFFD, 0xFFFD, 0x8E91, 0xE6C9, 0xFFFD, 0x91AF, 0xFFFD, 0xFFFD, -/* 37B0 */ 0xE6DA, 0x9147, 0xFFFD, 0xFFFD, 0x93F6, 0xFFFD, 0x956F, 0xFFFD, -/* 37B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6CD, 0x8E5E, 0x8E92, -/* 37C0 */ 0xFFFD, 0x8FDC, 0xFFFD, 0x9485, 0xFFFD, 0x8CAB, 0xE6CC, 0xE6CB, -/* 37C8 */ 0xFFFD, 0x958A, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EBF, 0xFFFD, 0xFFFD, -/* 37D0 */ 0x9371, 0xE6CF, 0xE6D0, 0x8D77, 0xE6CE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 37D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE6D1, 0xE6D2, 0xFFFD, 0xE6D4, 0x91A1, -/* 37E0 */ 0xFFFD, 0xE6D3, 0x8AE4, 0xFFFD, 0xE6D6, 0xFFFD, 0xE6D5, 0xE6D7, -/* 37E8 */ 0xFFFD, 0xFFFD, 0xE6D9, 0xE6DB, 0xFFFD, 0xE6DC, 0x90D4, 0xFFFD, -/* 37F0 */ 0x8ECD, 0xE6DD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A71, 0xFFFD, 0xE6DE, -/* 37F8 */ 0xFFFD, 0xFFFD, 0x9196, 0xE6DF, 0xFFFD, 0xE6E0, 0x958B, 0xFFFD, -/* 3800 */ 0xFFFD, 0x8B4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E1, 0xFFFD, 0xFFFD, 0xFFFD, 0x92B4, -/* 3810 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x897A, 0xE6E2, 0xFFFD, 0xFFFD, -/* 3818 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EEF, -/* 3820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9096, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91AB, -/* 3830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E5, 0xFFFD, -/* 3838 */ 0xFFFD, 0xFFFD, 0xE6E4, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E3, 0xFFFD, -/* 3840 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6EB, -/* 3848 */ 0xE6E9, 0xFFFD, 0xFFFD, 0xE6E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3850 */ 0xFFFD, 0xFFFD, 0xE6E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6E7, 0xE6EA, -/* 3858 */ 0xFFFD, 0x8B97, 0xFFFD, 0xE6EE, 0xFFFD, 0x90D5, 0xFFFD, 0xE6EF, -/* 3860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CD7, 0xFFFD, 0xE6EC, 0xE6ED, -/* 3868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9848, 0xFFFD, 0xFFFD, 0xFFFD, 0x92B5, -/* 3870 */ 0xFFFD, 0x9148, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3878 */ 0xE6F0, 0xFFFD, 0xFFFD, 0xE6F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6F1, 0xE6F2, 0x9778, 0xFFFD, -/* 3888 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x93A5, 0xE6F6, 0xE6F4, 0xE6F5, 0xE6F7, -/* 3890 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3898 */ 0xFFFD, 0xFFFD, 0xE748, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38A0 */ 0xE6FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xE6FB, 0xE6F9, 0xE6F8, 0xFFFD, -/* 38A8 */ 0x92FB, 0xFFFD, 0xFFFD, 0xE740, 0xE744, 0xE741, 0xE6FC, 0xFFFD, -/* 38B0 */ 0xE742, 0xFFFD, 0xFFFD, 0xFFFD, 0xE743, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38B8 */ 0xFFFD, 0xE74A, 0xFFFD, 0xFFFD, 0xFFFD, 0xE745, 0xFFFD, 0xFFFD, -/* 38C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x90D6, 0xE747, 0xFFFD, 0xFFFD, 0xE749, -/* 38C8 */ 0xE746, 0xE74C, 0xFFFD, 0x8F52, 0xFFFD, 0xE74B, 0xFFFD, 0xFFFD, -/* 38D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE74D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38D8 */ 0xE74E, 0xFFFD, 0xFFFD, 0xE751, 0xE750, 0xFFFD, 0xE74F, 0xFFFD, -/* 38E0 */ 0xFFFD, 0xE753, 0xE752, 0xFFFD, 0x96F4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38E8 */ 0xE755, 0xFFFD, 0xE754, 0xE756, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38F0 */ 0xE757, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38F8 */ 0xE759, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3900 */ 0xFFFD, 0xE758, 0x9067, 0xE75A, 0xFFFD, 0xFFFD, 0x8BEB, 0xE75B, -/* 3908 */ 0xE75D, 0xE75E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3910 */ 0xE75F, 0xE75C, 0xFFFD, 0xE760, 0xFFFD, 0x8ED4, 0xE761, 0x8B4F, -/* 3918 */ 0x8C52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CAC, 0xFFFD, 0xFFFD, -/* 3920 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE762, 0xFFFD, -/* 3928 */ 0xFFFD, 0xFFFD, 0x93EE, 0xFFFD, 0xFFFD, 0x935D, 0xE763, 0xFFFD, -/* 3930 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE766, 0x8EB2, -/* 3938 */ 0xFFFD, 0xFFFD, 0xE765, 0xE764, 0x8C79, 0xE767, 0xFFFD, 0xFFFD, -/* 3940 */ 0xFFFD, 0xFFFD, 0x8A72, 0xFFFD, 0xE769, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3948 */ 0x8DDA, 0xE768, 0xFFFD, 0xE771, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3950 */ 0xFFFD, 0xE76B, 0xE76D, 0x95E3, 0xE76A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3958 */ 0xE76C, 0xFFFD, 0xE770, 0xE76E, 0x8B50, 0xFFFD, 0xE76F, 0xFFFD, -/* 3960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE772, 0xFFFD, 0xFFFD, -/* 3968 */ 0x9479, 0x97D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F53, 0xFFFD, -/* 3970 */ 0xFFFD, 0xFFFD, 0xE773, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9741, -/* 3978 */ 0xE775, 0xFFFD, 0xE774, 0xFFFD, 0xFFFD, 0xE778, 0x9760, 0xFFFD, -/* 3980 */ 0xFFFD, 0xE777, 0xFFFD, 0x8A8D, 0xE776, 0xE77B, 0xFFFD, 0xFFFD, -/* 3988 */ 0xE77A, 0xFFFD, 0xFFFD, 0xE779, 0x9351, 0xE77C, 0xFFFD, 0xFFFD, -/* 3990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE77D, 0xFFFD, -/* 3998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE77E, 0xFFFD, 0xFFFD, 0x8D8C, 0xFFFD, -/* 39A0 */ 0x8C44, 0xE780, 0xE781, 0xE782, 0x9068, 0xE783, 0xFFFD, 0x8EAB, -/* 39A8 */ 0xE784, 0xFFFD, 0xFFFD, 0xFFFD, 0xE785, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39B0 */ 0x999F, 0x999E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE786, 0xE390, -/* 39B8 */ 0xE787, 0x9243, 0x904A, 0x945F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39C0 */ 0xE788, 0xFFFD, 0xFFFD, 0x95D3, 0x92D2, 0x8D9E, 0xFFFD, 0xFFFD, -/* 39C8 */ 0x9248, 0xFFFD, 0xFFFD, 0x8949, 0xFFFD, 0x9698, 0x9076, 0xFFFD, -/* 39D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C7D, -/* 39D8 */ 0xFFFD, 0xFFFD, 0x8BDF, 0xFFFD, 0xFFFD, 0x95D4, 0xFFFD, 0xFFFD, -/* 39E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE789, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE78B, 0xFFFD, 0xFFFD, 0xE78A, 0x89DE, -/* 39F0 */ 0xFFFD, 0xFFFD, 0x93F4, 0xE78C, 0x9497, 0xFFFD, 0x9352, 0xFFFD, -/* 39F8 */ 0xE78D, 0x8F71, 0xFFFD, 0xFFFD, 0xFFFD, 0xE78F, 0xFFFD, 0xFFFD, -/* 3A00 */ 0x96C0, 0xE79E, 0xE791, 0xE792, 0xFFFD, 0xFFFD, 0x92C7, 0xFFFD, -/* 3A08 */ 0xFFFD, 0x91DE, 0x9197, 0xFFFD, 0x93A6, 0xFFFD, 0xE790, 0x8B74, -/* 3A10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE799, 0xFFFD, 0xE796, 0xE7A3, -/* 3A18 */ 0x93A7, 0x9280, 0xE793, 0xFFFD, 0x92FC, 0x9372, 0xE794, 0xE798, -/* 3A20 */ 0x9080, 0xFFFD, 0x9487, 0x92CA, 0xFFFD, 0xFFFD, 0x90C0, 0xE797, -/* 3A28 */ 0x91AC, 0x91A2, 0xE795, 0x88A7, 0x9841, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A30 */ 0xE79A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91DF, -/* 3A38 */ 0xFFFD, 0xFFFD, 0x8F54, 0x9069, 0xFFFD, 0xFFFD, 0xE79C, 0xE79B, -/* 3A40 */ 0xFFFD, 0x88ED, 0xE79D, 0xFFFD, 0xFFFD, 0x954E, 0xFFFD, 0xE7A5, -/* 3A48 */ 0xFFFD, 0xFFFD, 0x93D9, 0x908B, 0xFFFD, 0xFFFD, 0x9278, 0xFFFD, -/* 3A50 */ 0x8BF6, 0xFFFD, 0xE7A4, 0x9756, 0x895E, 0xFFFD, 0x95D5, 0x89DF, -/* 3A58 */ 0xE79F, 0xE7A0, 0xE7A1, 0xE7A2, 0x93B9, 0x9242, 0x88E1, 0xE7A6, -/* 3A60 */ 0xFFFD, 0xE7A7, 0xEAA1, 0xFFFD, 0xFFFD, 0x91BB, 0xFFFD, 0xE7A8, -/* 3A68 */ 0xFFFD, 0x8993, 0x916B, 0xFFFD, 0x8CAD, 0xFFFD, 0x9779, 0xFFFD, -/* 3A70 */ 0xFFFD, 0xE7A9, 0x934B, 0xFFFD, 0xFFFD, 0xFFFD, 0x9198, 0x8ED5, -/* 3A78 */ 0xE7AA, 0xFFFD, 0xFFFD, 0xE7AD, 0xFFFD, 0xFFFD, 0x8F85, 0xE7AB, -/* 3A80 */ 0x914A, 0x9149, 0xFFFD, 0x88E2, 0xFFFD, 0x97C9, 0xE7AF, 0xFFFD, -/* 3A88 */ 0x94F0, 0xE7B1, 0xE7B0, 0xE7AE, 0xE284, 0x8AD2, 0xFFFD, 0xFFFD, -/* 3A90 */ 0xE78E, 0xFFFD, 0xE7B3, 0xE7B2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3A98 */ 0xE7B4, 0xFFFD, 0x9757, 0x93DF, 0xFFFD, 0xFFFD, 0x964D, 0xFFFD, -/* 3AA0 */ 0xE7B5, 0xFFFD, 0x8ED7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7B6, -/* 3AA8 */ 0xFFFD, 0xE7B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7B8, 0xFFFD, 0xFFFD, -/* 3AB0 */ 0x9340, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AB8 */ 0xFFFD, 0x88E8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AC0 */ 0xFFFD, 0xFFFD, 0x8D78, 0xFFFD, 0xFFFD, 0xFFFD, 0x9859, 0xE7BC, -/* 3AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C53, 0xE7B9, 0xFFFD, -/* 3AD0 */ 0xE7BA, 0xFFFD, 0xFFFD, 0xFFFD, 0x9594, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AD8 */ 0xFFFD, 0x8A73, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AE0 */ 0xFFFD, 0x9758, 0xFFFD, 0x8BBD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AE8 */ 0xFFFD, 0x9373, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7BD, 0xE7BE, -/* 3AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7BF, 0x9341, -/* 3AF8 */ 0xFFFD, 0xFFFD, 0xE7C1, 0xFFFD, 0xE7C0, 0x93D1, 0xE7C2, 0x8F55, -/* 3B00 */ 0x8EDE, 0x947A, 0x9291, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EF0, 0xFFFD, -/* 3B08 */ 0x908C, 0xFFFD, 0xE7C3, 0xFFFD, 0xE7C4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x907C, 0xE7C5, -/* 3B18 */ 0xFFFD, 0xE7C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7C7, 0x978F, 0xFFFD, -/* 3B20 */ 0x8F56, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7C9, 0xE7C8, -/* 3B28 */ 0xFFFD, 0x8D79, 0xFFFD, 0x8D93, 0x8E5F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7CC, 0xFFFD, -/* 3B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8F86, 0xFFFD, 0xE7CB, 0xFFFD, 0xE7CA, -/* 3B40 */ 0xFFFD, 0x91E7, 0xFFFD, 0xFFFD, 0x8CED, 0xFFFD, 0x90C1, 0xFFFD, -/* 3B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x94AE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B50 */ 0x8F58, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7CD, 0xFFFD, -/* 3B58 */ 0x8FDD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7D0, 0xE7CE, -/* 3B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE7CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B68 */ 0xE7D2, 0xE7D1, 0xFFFD, 0xFFFD, 0x8FF8, 0xFFFD, 0xE7D3, 0xFFFD, -/* 3B70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7D4, 0xE7D5, 0xFFFD, 0xFFFD, -/* 3B78 */ 0xFFFD, 0xFFFD, 0x94CE, 0x8DD1, 0x8EDF, 0xE7D6, 0xFFFD, 0xE7D7, -/* 3B80 */ 0x97A2, 0x8F64, 0x96EC, 0x97CA, 0xE7D8, 0x8BE0, 0xFFFD, 0xFFFD, -/* 3B88 */ 0xFFFD, 0xFFFD, 0xE7D9, 0xFFFD, 0x9342, 0xFFFD, 0xFFFD, 0xE7DC, -/* 3B90 */ 0x8A98, 0x906A, 0xFFFD, 0xE7DA, 0xFFFD, 0xE7DB, 0xFFFD, 0x92DE, -/* 3B98 */ 0xFFFD, 0xFFFD, 0x9674, 0x8BFA, 0xE7DE, 0xE7DF, 0xFFFD, 0xFFFD, -/* 3BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE7DD, 0xFFFD, 0xFFFD, 0xE7E1, 0x93DD, -/* 3BA8 */ 0x8A62, 0xFFFD, 0xFFFD, 0xE7E5, 0xFFFD, 0xFFFD, 0xE7E2, 0xE7E4, -/* 3BB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BB8 */ 0xE7E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE86E, 0xFFFD, 0xFFFD, 0xE7E3, 0xFFFD, -/* 3BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97E9, 0xFFFD, -/* 3BD0 */ 0xFFFD, 0x8CD8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BD8 */ 0xFFFD, 0xE7ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9353, 0xE7E8, -/* 3BE0 */ 0xFFFD, 0xFFFD, 0xE7EB, 0xE7E9, 0xFFFD, 0xE7EE, 0xFFFD, 0xFFFD, -/* 3BE8 */ 0xFFFD, 0xFFFD, 0xE7EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3BF0 */ 0xFFFD, 0xE7E7, 0xFFFD, 0xFFFD, 0xE7F4, 0x8994, 0xFFFD, 0xFFFD, -/* 3BF8 */ 0xE7E6, 0xFFFD, 0xFFFD, 0xFFFD, 0x94AB, 0xFFFD, 0xE7EA, 0xFFFD, -/* 3C00 */ 0x8FDE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8D7A, 0x9667, 0xFFFD, 0x8BE2, 0xFFFD, -/* 3C10 */ 0xFFFD, 0x8F65, 0xFFFD, 0x93BA, 0x914C, 0xFFFD, 0xE7F2, 0xFFFD, -/* 3C18 */ 0xE7EC, 0xE7F1, 0xFFFD, 0x96C1, 0xFFFD, 0x92B6, 0xE7F3, 0xE7F0, -/* 3C20 */ 0x914B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C28 */ 0xFFFD, 0xFFFD, 0xE7F7, 0xFFFD, 0xE7F6, 0xE7F5, 0xFFFD, 0xFFFD, -/* 3C30 */ 0x964E, 0x8F9B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7F8, 0x95DD, -/* 3C38 */ 0xFFFD, 0xFFFD, 0x8973, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9565, -/* 3C40 */ 0x9292, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B98, 0xFFFD, 0xE7FA, -/* 3C48 */ 0xFFFD, 0x8D7C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8E4B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE7F9, 0x908D, 0xFFFD, 0xFFFD, -/* 3C60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x908E, 0xE840, 0xE842, -/* 3C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FF9, 0xFFFD, 0xE841, -/* 3C70 */ 0xE843, 0xFFFD, 0xFFFD, 0x8BD1, 0xFFFD, 0x9564, 0xFFFD, 0xFFFD, -/* 3C78 */ 0x8EE0, 0x9842, 0xFFFD, 0xE7FC, 0x8DF6, 0xFFFD, 0xFFFD, 0x985E, -/* 3C80 */ 0xFFFD, 0xFFFD, 0xE845, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE844, -/* 3C88 */ 0xE846, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C90 */ 0xFFFD, 0xE7FB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3C98 */ 0x93E7, 0xFFFD, 0x9374, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CA0 */ 0xFFFD, 0x92D5, 0xFFFD, 0xE84B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CA8 */ 0x9262, 0xE847, 0xFFFD, 0xFFFD, 0xFFFD, 0xE848, 0x8C4C, 0xFFFD, -/* 3CB0 */ 0xE84A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CAE, -/* 3CB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE849, 0xFFFD, -/* 3CC0 */ 0x8FDF, 0x8A99, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CC8 */ 0xFFFD, 0xE84F, 0xFFFD, 0x8DBD, 0x9199, 0xFFFD, 0xFFFD, 0x92C8, -/* 3CD0 */ 0x8A5A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE84D, 0xE84E, 0x92C1, -/* 3CD8 */ 0xFFFD, 0xE84C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CE0 */ 0xFFFD, 0xFFFD, 0xE850, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE856, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CF0 */ 0xFFFD, 0xE859, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3CF8 */ 0xFFFD, 0xE858, 0x934C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE851, -/* 3D00 */ 0xE852, 0xE855, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE857, 0xFFFD, -/* 3D08 */ 0xFFFD, 0xFFFD, 0x8BBE, 0xFFFD, 0xFFFD, 0xE85A, 0xE854, 0xFFFD, -/* 3D10 */ 0xFFFD, 0xE853, 0xE85E, 0xFFFD, 0xFFFD, 0xFFFD, 0xE85F, 0xFFFD, -/* 3D18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE860, -/* 3D20 */ 0xFFFD, 0xFFFD, 0xE85D, 0xE85C, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FE0, -/* 3D28 */ 0x93A8, 0xE85B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D30 */ 0xE864, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D38 */ 0xFFFD, 0xFFFD, 0xE862, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE863, 0xE861, 0xFFFD, 0x91F6, -/* 3D48 */ 0xFFFD, 0xE865, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D50 */ 0xE866, 0xFFFD, 0xFFFD, 0xE868, 0x8AD3, 0xE867, 0x96F8, 0xFFFD, -/* 3D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE873, 0xE869, 0xFFFD, -/* 3D60 */ 0xFFFD, 0xE86C, 0xFFFD, 0xE86A, 0xFFFD, 0xE86B, 0xFFFD, 0xFFFD, -/* 3D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE86D, 0xFFFD, 0xFFFD, -/* 3D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE86F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3D78 */ 0xE870, 0xFFFD, 0xE871, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE874, -/* 3D80 */ 0xE872, 0xE875, 0xE877, 0xFFFD, 0xE876, 0x92B7, 0xFFFD, 0xFFFD, -/* 3D88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96E5, 0xFFFD, -/* 3D90 */ 0xE878, 0x914D, 0xFFFD, 0xFFFD, 0xFFFD, 0xE879, 0xFFFD, 0x95C2, -/* 3D98 */ 0xE87A, 0x8A4A, 0xFFFD, 0xFFFD, 0xFFFD, 0x895B, 0xFFFD, 0x8AD5, -/* 3DA0 */ 0xFFFD, 0x8AD4, 0xE87B, 0xFFFD, 0xE87C, 0xFFFD, 0xE87D, 0xE87E, -/* 3DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE880, 0xFFFD, -/* 3DB0 */ 0x8AD6, 0x8A74, 0x8D7D, 0x94B4, 0xFFFD, 0xE882, 0xE881, 0xFFFD, -/* 3DB8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE883, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DC0 */ 0x897B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE886, -/* 3DC8 */ 0xFFFD, 0xE885, 0xE884, 0xFFFD, 0xE887, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DD0 */ 0xFFFD, 0xE88A, 0xFFFD, 0xFFFD, 0xFFFD, 0x88C5, 0xFFFD, 0xFFFD, -/* 3DD8 */ 0xE888, 0xFFFD, 0xE88C, 0xE88B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DE0 */ 0xFFFD, 0xFFFD, 0xE88E, 0xE88D, 0xE88F, 0xFFFD, 0x93AC, 0xFFFD, -/* 3DE8 */ 0xFFFD, 0xFFFD, 0xE890, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE891, -/* 3DF0 */ 0xE893, 0xFFFD, 0xFFFD, 0xE892, 0x958C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3DF8 */ 0xFFFD, 0xE894, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E00 */ 0xE895, 0xFFFD, 0x8DE3, 0xFFFD, 0xFFFD, 0xFFFD, 0xE896, 0xE897, -/* 3E08 */ 0xFFFD, 0xFFFD, 0x9668, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x916A, 0xFFFD, 0xFFFD, 0xFFFD, 0x88A2, -/* 3E18 */ 0x91C9, 0xFFFD, 0xE898, 0xFFFD, 0x958D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE89B, 0xE899, 0x8D7E, 0xFFFD, 0xE89A, -/* 3E28 */ 0x8CC0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x95C3, 0xE89D, 0xE89F, 0xE89E, 0xE8A0, -/* 3E38 */ 0xFFFD, 0xFFFD, 0x8940, 0x9077, 0x8F9C, 0x8AD7, 0xE8A1, 0xFFFD, -/* 3E40 */ 0xFFFD, 0xFFFD, 0x9486, 0xFFFD, 0xE8A3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E48 */ 0x8941, 0xFFFD, 0xE8A2, 0x92C2, 0xFFFD, 0x97CB, 0x93A9, 0xE89C, -/* 3E50 */ 0x97A4, 0xFFFD, 0x8CAF, 0xFFFD, 0xFFFD, 0x977A, 0xFFFD, 0xFFFD, -/* 3E58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8BF7, 0x97B2, 0xFFFD, -/* 3E60 */ 0x8C47, 0xFFFD, 0x91E0, 0xE440, 0xFFFD, 0xE8A4, 0x8A4B, 0x908F, -/* 3E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A75, 0xE8A6, 0xFFFD, 0xE8A7, -/* 3E70 */ 0xE8A5, 0x8C84, 0xFFFD, 0x8DDB, 0x8FE1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E78 */ 0x8942, 0xFFFD, 0xFFFD, 0x97D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8A9, -/* 3E80 */ 0xE7AC, 0xFFFD, 0xE8A8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E88 */ 0xE8AC, 0xE8AA, 0xE8AB, 0xFFFD, 0xE8AD, 0xFFFD, 0xE8AE, 0x97EA, -/* 3E90 */ 0xE8AF, 0xE8B0, 0xFFFD, 0x90C7, 0x94B9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3E98 */ 0x909D, 0x8AE5, 0xFFFD, 0xFFFD, 0x9759, 0x89EB, 0x8F57, 0x8CD9, -/* 3EA0 */ 0xFFFD, 0xE8B3, 0xFFFD, 0xE8B2, 0x8E93, 0xE8B4, 0xE8B1, 0xFFFD, -/* 3EA8 */ 0xFFFD, 0x8E47, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8B8, 0xE5AB, 0xFFFD, -/* 3EB0 */ 0xFFFD, 0x99D4, 0xFFFD, 0x9097, 0xE8B6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EB8 */ 0xFFFD, 0xFFFD, 0x97A3, 0x93EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EC0 */ 0x894A, 0xFFFD, 0x90E1, 0x8EB4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3EC8 */ 0x95B5, 0xFFFD, 0x895F, 0xFFFD, 0xFFFD, 0xFFFD, 0x97EB, 0x978B, -/* 3ED0 */ 0xFFFD, 0xE8B9, 0xFFFD, 0x9364, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3ED8 */ 0x8EF9, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8BA, 0xFFFD, 0xE8BB, 0x906B, -/* 3EE0 */ 0xE8BC, 0xFFFD, 0x97EC, 0xFFFD, 0xFFFD, 0xE8B7, 0xE8BE, 0xE8C0, -/* 3EE8 */ 0xFFFD, 0xE8BF, 0xFFFD, 0xE8BD, 0xFFFD, 0xFFFD, 0xE8C1, 0xFFFD, -/* 3EF0 */ 0xFFFD, 0xE8C2, 0xFFFD, 0xFFFD, 0x919A, 0xFFFD, 0x89E0, 0xFFFD, -/* 3EF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8C3, 0xFFFD, 0xFFFD, 0x96B6, -/* 3F00 */ 0xFFFD, 0xFFFD, 0xE8C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F08 */ 0xE8C5, 0xFFFD, 0x9849, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F10 */ 0x9E50, 0xE8C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8C7, 0xE8C8, 0xFFFD, -/* 3F18 */ 0xFFFD, 0xFFFD, 0xE8CC, 0xFFFD, 0xE8C9, 0xFFFD, 0xE8CA, 0xFFFD, -/* 3F20 */ 0xE8CB, 0xE8CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F28 */ 0xFFFD, 0xFFFD, 0x90C2, 0xFFFD, 0xFFFD, 0xFFFD, 0x96F5, 0xFFFD, -/* 3F30 */ 0xFFFD, 0x90C3, 0xFFFD, 0xFFFD, 0xE8CE, 0xFFFD, 0x94F1, 0xFFFD, -/* 3F38 */ 0xE8CF, 0xEA72, 0x96CA, 0xFFFD, 0xE8D0, 0xFFFD, 0xE8D1, 0xFFFD, -/* 3F40 */ 0xE8D2, 0x8A76, 0xFFFD, 0xE8D4, 0xFFFD, 0x9078, 0xFFFD, 0xFFFD, -/* 3F48 */ 0xFFFD, 0xE8D5, 0xFFFD, 0xFFFD, 0x8C43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F50 */ 0xFFFD, 0xE8D6, 0xE8DA, 0xFFFD, 0xE8D8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F58 */ 0xFFFD, 0xE8D9, 0xFFFD, 0xFFFD, 0x8A93, 0xE8D7, 0xE8DB, 0xFFFD, -/* 3F60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8DC, 0xFFFD, 0x88C6, 0xFFFD, 0xE8DD, -/* 3F68 */ 0xE8DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F70 */ 0x8FE2, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8DF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3F78 */ 0x8B66, 0xFFFD, 0xFFFD, 0xE8E2, 0xFFFD, 0xFFFD, 0xE8E1, 0xFFFD, -/* 3F80 */ 0xE8E0, 0xFFFD, 0xFFFD, 0xE691, 0xFFFD, 0x95DA, 0xFFFD, 0xFFFD, -/* 3F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8E3, 0xE8E4, 0xE8E5, 0xFFFD, 0xFFFD, -/* 3F90 */ 0xE8E6, 0xFFFD, 0xE8E7, 0xFFFD, 0xFFFD, 0xE8E8, 0xFFFD, 0xFFFD, -/* 3F98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AD8, 0xFFFD, 0xFFFD, -/* 3FA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8E9, 0xE8EA, -/* 3FA8 */ 0x9442, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8EC, 0x89B9, 0xFFFD, 0xE8EF, -/* 3FB0 */ 0xE8EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8943, 0xFFFD, 0xFFFD, -/* 3FB8 */ 0xFFFD, 0x8BBF, 0xFFFD, 0x95C5, 0x92B8, 0x8DA0, 0xFFFD, 0x8D80, -/* 3FC0 */ 0x8F87, 0xFFFD, 0x907B, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8F1, 0xFFFD, -/* 3FC8 */ 0xFFFD, 0xE8F0, 0x9761, 0x8AE6, 0x94D0, 0x93DA, 0xFFFD, 0xFFFD, -/* 3FD0 */ 0xFFFD, 0x909C, 0x97CC, 0xFFFD, 0x8C7A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE8F4, 0xFFFD, 0xFFFD, 0xE8F3, 0xFFFD, -/* 3FE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x966A, 0x93AA, -/* 3FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x896F, 0xFFFD, -/* 3FF0 */ 0xFFFD, 0xE8F5, 0xE8F2, 0xFFFD, 0xFFFD, 0x9570, 0x978A, 0xE8F6, -/* 3FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4000 */ 0xE8F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8F9, 0x91E8, 0x8A7A, -/* 4008 */ 0x8A7B, 0xE8F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AE7, 0x8CB0, -/* 4010 */ 0xFFFD, 0xFFFD, 0x8AE8, 0xFFFD, 0xFFFD, 0x935E, 0xFFFD, 0xFFFD, -/* 4018 */ 0x97DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4020 */ 0xFFFD, 0x8CDA, 0xFFFD, 0xFFFD, 0xFFFD, 0xE8FA, 0xFFFD, 0xFFFD, -/* 4028 */ 0xFFFD, 0xE8FB, 0xE8FC, 0xE940, 0xFFFD, 0xE942, 0xE941, 0x9597, -/* 4030 */ 0xFFFD, 0xE943, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE944, 0xFFFD, -/* 4038 */ 0xE945, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE946, 0xE948, 0xE947, -/* 4040 */ 0xFFFD, 0xE949, 0x94F2, 0xE3CA, 0xFFFD, 0xFFFD, 0x9048, 0xFFFD, -/* 4048 */ 0xFFFD, 0x8B51, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4050 */ 0xE94A, 0xFFFD, 0xE94B, 0xFFFD, 0x99AA, 0x9F5A, 0x94D1, 0xFFFD, -/* 4058 */ 0xFFFD, 0x88F9, 0xFFFD, 0x88B9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8E94, 0x964F, 0x8FFC, 0xFFFD, 0xFFFD, -/* 4068 */ 0xFFFD, 0xFFFD, 0xE94C, 0xFFFD, 0x96DD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4070 */ 0xE94D, 0x977B, 0xFFFD, 0x8961, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E60, -/* 4078 */ 0xFFFD, 0xE94E, 0x89EC, 0xE94F, 0xFFFD, 0xFFFD, 0xFFFD, 0xE950, -/* 4080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE952, 0xE953, 0xFFFD, 0xE955, -/* 4088 */ 0xE951, 0xFFFD, 0xFFFD, 0xE954, 0xFFFD, 0xFFFD, 0xFFFD, 0x8AD9, -/* 4090 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE956, 0xFFFD, 0xE957, 0xE958, 0xE959, -/* 4098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE95A, 0xFFFD, 0xFFFD, 0xE95C, 0xFFFD, -/* 40A0 */ 0xFFFD, 0xFFFD, 0xE95B, 0xFFFD, 0xE95E, 0xE961, 0xFFFD, 0xFFFD, -/* 40A8 */ 0xFFFD, 0xE95D, 0xE95F, 0xE960, 0xFFFD, 0xFFFD, 0xE962, 0xFFFD, -/* 40B0 */ 0x8BC0, 0x8EF1, 0xE963, 0xE964, 0x8D81, 0xE965, 0xFFFD, 0xFFFD, -/* 40B8 */ 0x8A5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x946E, 0xE966, 0xE967, 0xFFFD, -/* 40C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9279, 0x93E9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE968, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40D0 */ 0xFFFD, 0x949D, 0xFFFD, 0xFFFD, 0x91CA, 0x8977, 0x8BEC, 0xFFFD, -/* 40D8 */ 0x8BED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40E0 */ 0x9293, 0xE96D, 0x8BEE, 0xFFFD, 0xFFFD, 0x89ED, 0xFFFD, 0xFFFD, -/* 40E8 */ 0xE96C, 0xFFFD, 0xFFFD, 0xE96A, 0xFFFD, 0xE96B, 0xFFFD, 0xE969, -/* 40F0 */ 0xFFFD, 0xFFFD, 0xE977, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 40F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE96E, 0xE96F, 0xFFFD, -/* 4100 */ 0xFFFD, 0xE970, 0xE971, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4108 */ 0xE973, 0xFFFD, 0xFFFD, 0xE972, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F78, -/* 4110 */ 0xFFFD, 0xE974, 0xFFFD, 0xFFFD, 0xFFFD, 0xE976, 0xFFFD, 0xFFFD, -/* 4118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B52, 0xE975, -/* 4120 */ 0xFFFD, 0xFFFD, 0x919B, 0x8CB1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4128 */ 0xFFFD, 0xE978, 0x91CB, 0xFFFD, 0xFFFD, 0xE979, 0xFFFD, 0xFFFD, -/* 4130 */ 0xFFFD, 0xFFFD, 0x93AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4138 */ 0xFFFD, 0xE97A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4140 */ 0xE980, 0xFFFD, 0xE97D, 0xFFFD, 0xE97C, 0xE97E, 0xFFFD, 0xE97B, -/* 4148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE982, -/* 4150 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE981, -/* 4158 */ 0xFFFD, 0xE984, 0xFFFD, 0xFFFD, 0x8BC1, 0xE983, 0xFFFD, 0xFFFD, -/* 4160 */ 0xFFFD, 0xE985, 0xFFFD, 0xFFFD, 0xE986, 0xFFFD, 0xE988, 0xE987, -/* 4168 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE989, 0xE98B, 0xE98A, 0x8D9C, 0xFFFD, -/* 4170 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE98C, 0xFFFD, 0xFFFD, 0xE98D, 0xFFFD, -/* 4178 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A5B, 0xFFFD, -/* 4180 */ 0xFFFD, 0xFFFD, 0xE98E, 0xFFFD, 0xFFFD, 0xFFFD, 0xE98F, 0xFFFD, -/* 4188 */ 0xFFFD, 0xFFFD, 0x9091, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE990, 0xFFFD, 0xE991, -/* 4198 */ 0xFFFD, 0xE992, 0xE993, 0xFFFD, 0xFFFD, 0xFFFD, 0x8D82, 0xFFFD, -/* 41A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE994, 0xE995, 0xFFFD, 0xFFFD, -/* 41A8 */ 0xE996, 0xE997, 0xFFFD, 0xFFFD, 0xE998, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41B0 */ 0x94AF, 0xE99A, 0xFFFD, 0x9545, 0xE99B, 0xE999, 0xFFFD, 0xE99D, -/* 41B8 */ 0xFFFD, 0xFFFD, 0xE99C, 0xFFFD, 0xFFFD, 0xE99E, 0xFFFD, 0xFFFD, -/* 41C0 */ 0xFFFD, 0xE99F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9A0, 0xE9A1, 0xFFFD, 0xE9A2, -/* 41D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9A3, 0xFFFD, 0xFFFD, 0xE9A4, -/* 41D8 */ 0xE9A5, 0xFFFD, 0xE9A6, 0xFFFD, 0xE9A7, 0xE9A8, 0xE9A9, 0xE9AA, -/* 41E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9AB, 0xE9AC, 0xFFFD, 0x9F54, 0xE9AD, -/* 41E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 41F0 */ 0xE2F6, 0x8B53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A40, 0x8DB0, -/* 41F8 */ 0xE9AF, 0xE9AE, 0x96A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4200 */ 0xFFFD, 0xFFFD, 0xE9B1, 0xE9B2, 0xE9B0, 0xFFFD, 0xE9B3, 0xFFFD, -/* 4208 */ 0xFFFD, 0x9682, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9B4, 0xFFFD, 0x8B9B, -/* 4210 */ 0x9844, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9B5, 0xE9B7, 0xFFFD, -/* 4218 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4220 */ 0xFFFD, 0x88BC, 0xFFFD, 0xFFFD, 0xE9B8, 0x95A9, 0xE9B6, 0xFFFD, -/* 4228 */ 0xFFFD, 0xE9B9, 0xE9BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4230 */ 0xFFFD, 0xFFFD, 0xE9BB, 0xE9BC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4238 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9BD, 0xFFFD, 0x968E, 0x8E4C, 0xFFFD, -/* 4240 */ 0x8DF8, 0x914E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9BE, -/* 4248 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9C1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9BF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4258 */ 0xFFFD, 0xE9C2, 0xFFFD, 0xFFFD, 0x8CEF, 0xE9C0, 0xFFFD, 0xFFFD, -/* 4260 */ 0xFFFD, 0xFFFD, 0xE9C3, 0xFFFD, 0xE9C4, 0xE9C5, 0xFFFD, 0xE9C9, -/* 4268 */ 0xFFFD, 0x8E49, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x91E2, 0xFFFD, -/* 4270 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9CA, 0xE9C7, 0xE9C6, 0xE9C8, -/* 4278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8C7E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9CE, 0xE9CD, 0xE9CC, 0xFFFD, 0xFFFD, -/* 4288 */ 0x88B1, 0xE9D8, 0xFFFD, 0xE9D4, 0xFFFD, 0xE9D5, 0xE9D1, 0xE9D7, -/* 4290 */ 0xFFFD, 0xE9D3, 0x8A82, 0xFFFD, 0xFFFD, 0x986B, 0xFFFD, 0xE9D6, -/* 4298 */ 0xE9D2, 0xE9D0, 0xE9CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42A0 */ 0xE9DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9DD, 0xFFFD, -/* 42A8 */ 0xFFFD, 0xE9DC, 0xE9DB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42B0 */ 0xFFFD, 0xFFFD, 0x9568, 0xE9D9, 0x88F1, 0xE9DE, 0xFFFD, 0xE9E0, -/* 42B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A8F, 0xE9CB, -/* 42C0 */ 0x8956, 0xFFFD, 0xFFFD, 0xE9E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 42C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9E1, 0xE9DF, 0x924C, 0xFFFD, 0xFFFD, -/* 42D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9690, -/* 42D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97D8, 0xFFFD, 0xFFFD, 0xE9E3, -/* 42E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9E4, 0xFFFD, 0xFFFD, -/* 42E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9E5, 0xE9E6, 0xFFFD, 0xE9E7, -/* 42F0 */ 0x92B9, 0xFFFD, 0xE9E8, 0xFFFD, 0x94B5, 0xFFFD, 0xE9ED, 0xE9E9, -/* 42F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xE9EA, 0xFFFD, 0xFFFD, 0x9650, 0x96C2, -/* 4300 */ 0xFFFD, 0x93CE, 0xE9EE, 0xFFFD, 0xFFFD, 0xE9EF, 0x93BC, 0xE9EC, -/* 4308 */ 0xE9EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x89A8, 0xFFFD, 0xFFFD, -/* 4310 */ 0xFFFD, 0xE9F7, 0xFFFD, 0xFFFD, 0xE9F6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4318 */ 0xFFFD, 0xFFFD, 0x8995, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9F4, 0xFFFD, -/* 4320 */ 0xFFFD, 0xFFFD, 0xE9F3, 0xFFFD, 0xFFFD, 0xE9F1, 0xFFFD, 0x8A9B, -/* 4328 */ 0xFFFD, 0xE9F0, 0x8EB0, 0x89A7, 0x8D83, 0xFFFD, 0xFFFD, 0xE9FA, -/* 4330 */ 0xE9F9, 0xFFFD, 0xE9F8, 0xFFFD, 0xFFFD, 0xE9F5, 0xFFFD, 0xE9FB, -/* 4338 */ 0xFFFD, 0xE9FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4340 */ 0xFFFD, 0xEA44, 0xEA43, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4348 */ 0xFFFD, 0xFFFD, 0xEA45, 0xFFFD, 0xFFFD, 0x894C, 0xEA40, 0xEA41, -/* 4350 */ 0xFFFD, 0x8D94, 0x96B7, 0xFFFD, 0xFFFD, 0xEA42, 0xFFFD, 0xFFFD, -/* 4358 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9651, 0xFFFD, 0xFFFD, -/* 4360 */ 0xEA4A, 0xFFFD, 0xFFFD, 0xEA46, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEA4B, 0xEA48, 0xFFFD, 0xEA47, 0xFFFD, -/* 4370 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C7B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4378 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA4C, -/* 4380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4388 */ 0xFFFD, 0xEA4D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA4E, 0xFFFD, -/* 4390 */ 0xEA49, 0xFFFD, 0xFFFD, 0xFFFD, 0xE9F2, 0xFFFD, 0xFFFD, 0xEA4F, -/* 4398 */ 0xFFFD, 0x92DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA53, 0xFFFD, 0xEA54, -/* 43A0 */ 0xEA52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA51, 0xEA57, -/* 43A8 */ 0xFFFD, 0xEA50, 0xFFFD, 0xEA55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA56, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43B8 */ 0xEA59, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA58, 0xEA5B, -/* 43C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA5C, 0xFFFD, -/* 43C8 */ 0xEA5D, 0xFFFD, 0xFFFD, 0x9868, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43D0 */ 0xFFFD, 0xEA5A, 0x91E9, 0x8DEB, 0xFFFD, 0xFFFD, 0xEA5E, 0xEA5F, -/* 43D8 */ 0xEA60, 0xFFFD, 0xFFFD, 0xEA61, 0xEA62, 0xFFFD, 0xFFFD, 0x8CB2, -/* 43E0 */ 0xEA63, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA64, 0xFFFD, 0x8EAD, 0xFFFD, -/* 43E8 */ 0xEA65, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA66, -/* 43F0 */ 0xFFFD, 0xFFFD, 0xEA67, 0xEA68, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 43F8 */ 0xEA6B, 0xEA69, 0x985B, 0xFFFD, 0xEA6A, 0xFFFD, 0x97ED, 0xFFFD, -/* 4400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA6C, 0xFFFD, 0x97D9, 0xFFFD, -/* 4408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA6D, 0x949E, 0xFFFD, 0xFFFD, -/* 4410 */ 0xEA6E, 0xEA70, 0xFFFD, 0xFFFD, 0xEA71, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA6F, -/* 4420 */ 0x8D8D, 0x96CB, 0x9683, 0x9BF5, 0xFFFD, 0x9F80, 0x969B, 0xFFFD, -/* 4428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x89A9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4430 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEA73, 0x8B6F, 0xEA74, 0xEA75, 0xEA76, -/* 4438 */ 0xFFFD, 0x8D95, 0xFFFD, 0xEA77, 0xFFFD, 0xFFFD, 0xFFFD, 0xE0D2, -/* 4440 */ 0x96D9, 0xFFFD, 0x91E1, 0xEA78, 0xEA7A, 0xEA79, 0xFFFD, 0xEA7B, -/* 4448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA7C, 0xFFFD, 0xFFFD, 0xEA7D, -/* 4450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA7E, 0xFFFD, -/* 4458 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEA80, 0xFFFD, 0xEA81, 0xEA82, 0xFFFD, -/* 4460 */ 0xEA83, 0xFFFD, 0xEA84, 0xEA85, 0xEA86, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4468 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA87, 0xEA88, -/* 4470 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9343, 0xFFFD, 0xFFFD, -/* 4478 */ 0xFFFD, 0xFFFD, 0x8CDB, 0xFFFD, 0xEA8A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4480 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x916C, -/* 4488 */ 0xEA8B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 4490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xEA8C, 0x9540, 0xFFFD, 0xFFFD, 0xEA8D, -/* 4498 */ 0xEA8E, 0xE256, 0xFFFD, 0xFFFD, 0xE6D8, 0xE8EB, 0xFFFD, 0xFFFD, -/* 44A0 */ 0xEA8F, 0xFFFD, 0xEA90, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA92, 0xEA93, 0xEA94, -/* 44B0 */ 0x97EE, 0xEA91, 0xFFFD, 0xFFFD, 0xEA95, 0xEA96, 0xFFFD, 0xFFFD, -/* 44B8 */ 0xEA98, 0xFFFD, 0xEA97, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44C0 */ 0xEA9A, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA9B, 0xEA99, 0x97B4, 0xFFFD, -/* 44C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA9C, 0xFFFD, -/* 44D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xEA9D, 0xE273, 0xFFFD, -/* 44D8 */ 0xFFFD, 0xEA9E, 0x8149, 0xFFFD, 0x8194, 0x8190, 0x8193, 0x8195, -/* 44E0 */ 0xFFFD, 0x8169, 0x816A, 0x8196, 0x817B, 0x8143, 0xFFFD, 0x8144, -/* 44E8 */ 0x815E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 44F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8146, 0x8147, 0x8183, 0x8181, 0x8184, -/* 44F8 */ 0x8148, 0x8197, 0x816D, 0xFFFD, 0x816E, 0x814F, 0x8151, 0x814D, -/* 4500 */ 0x816F, 0x8162, 0x8170, 0x8150, 0xFFFD, 0x818F, -/* End of table Total Length = 0x47F9 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/t61.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/t61.uf deleted file mode 100644 index e66d4014c1b..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/t61.uf +++ /dev/null @@ -1,248 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 0023 - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0025 - srcEnd = 005D - destBegin = 0025 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0061 - srcEnd = 007D - destBegin = 0061 -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 0024 - destBegin = 00A4 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 005E - srcEnd = 0060 - mappingOffset = 0000 - Mapping = - C320 005F C120 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 007E - srcEnd = 007F - mappingOffset = 0003 - Mapping = - C420 007F -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 00A0 - srcEnd = 017E - mappingOffset = 0005 - Mapping = - 00A0 00A1 00A2 00A3 FFFD 00A5 00D7 00A7 - C820 00D3 00E3 00AB 00D6 00FF 00D2 C520 - 00B0 00B1 00B2 00B3 C220 00B5 00B6 00B7 - CB20 00D1 00EB 00BB 00BC 00BD 00BE 00BF - C141 C241 C341 C441 C841 CA41 00E1 CB43 - C145 C245 C345 C845 C149 C249 C349 C849 - FFFD C44E C14F C24F C34F C44F C84F 00B4 - 00E9 C155 C255 C355 C855 C259 00EC 00FB - C161 C261 C361 C461 C861 CA61 00F1 CB63 - C165 C265 C365 C865 C169 C269 C369 C869 - 00F3 C46E C16F C26F C36F C46F C86F 00B8 - 00F9 C175 C275 C375 C875 C279 00FC C879 - C541 C561 C641 C661 CE41 CE61 C243 C263 - C343 C363 C743 C763 CF43 CF63 CF44 CF64 - 00E2 00F2 C545 C565 FFFD FFFD C745 C765 - CE45 CE65 CF45 CF65 C347 C367 C647 C667 - C747 C767 CB47 FFFD C348 C368 00E4 00F4 - C449 C469 C549 C569 FFFD FFFD CE49 CE69 - C749 00F5 00E6 00F6 C34A C36A CB4B CB6B - 00F0 C24C C26C CB4C CB6C CF4C CF6C 00E7 - 00F7 00E8 00F8 C24E C26E FFFD CB6E CF4E - CF6E 00EF 00EE 00FE C54F C56F FFFD FFFD - CD4F CD6F 00EA 00FA C252 C272 CB52 CB72 - CF52 CF72 C253 C273 C353 C373 CB53 CB73 - CF53 CF73 CB54 CB74 CF54 CF74 00ED 00FD - C455 C475 C555 C575 C655 C675 CA55 CA75 - CD55 CD75 CE55 CE75 C357 C377 C359 C379 - C859 FFFD C27A C75A C77A CF5A CF7A -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 01F5 - destBegin = C267 -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 02C7 - destBegin = CF20 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 00E4 - Mapping = - C620 C720 CA20 CE20 FFFD CD20 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2015 - srcEnd = 201D - mappingOffset = 00EA - Mapping = - 00D0 FFFD FFFD 00A9 00B9 FFFD FFFD 00AA - 00BA -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2122 - srcEnd = 2126 - mappingOffset = 00F3 - Mapping = - 00D4 FFFD FFFD FFFD 00E0 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 215B - srcEnd = 215E - mappingOffset = 00F8 - Mapping = - 00DC 00DD 00DE 00DF -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2190 - srcEnd = 2193 - mappingOffset = 00FC - Mapping = - 00AC 00AD 00AE 00AF -End of Item 000D - -Begin of Item 000E - Format 2 - srcBegin = 266A - destBegin = 00D5 -End of Item 000E - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000F, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0035, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0008 */ -/* Total of Format 2 : 0x0004 */ -/* Total of Format 3 : 0x0000 */ - -0x2000, 0x2111, 0x1112, 0x0211, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x0023, 0x0000, -/* 0001 */ 0x0025, 0x005D, 0x0025, -/* 0002 */ 0x0061, 0x007D, 0x0061, -/* 0003 */ 0x0024, 0x0000, 0x00A4, -/* 0004 */ 0x005E, 0x0060, 0x0000, -/* 0005 */ 0x007E, 0x007F, 0x0003, -/* 0006 */ 0x00A0, 0x017E, 0x0005, -/* 0007 */ 0x01F5, 0x0000, 0xC267, -/* 0008 */ 0x02C7, 0x0000, 0xCF20, -/* 0009 */ 0x02D8, 0x02DD, 0x00E4, -/* 000A */ 0x2015, 0x201D, 0x00EA, -/* 000B */ 0x2122, 0x2126, 0x00F3, -/* 000C */ 0x215B, 0x215E, 0x00F8, -/* 000D */ 0x2190, 0x2193, 0x00FC, -/* 000E */ 0x266A, 0x0000, 0x00D5, -/*-------------------------------------------------------*/ -/* Offset=0x0035 Start of MappingTable */ - -/* 0000 */ 0xC320, 0x005F, 0xC120, 0xC420, 0x007F, 0x00A0, 0x00A1, 0x00A2, -/* 0008 */ 0x00A3, 0xFFFD, 0x00A5, 0x00D7, 0x00A7, 0xC820, 0x00D3, 0x00E3, -/* 0010 */ 0x00AB, 0x00D6, 0x00FF, 0x00D2, 0xC520, 0x00B0, 0x00B1, 0x00B2, -/* 0018 */ 0x00B3, 0xC220, 0x00B5, 0x00B6, 0x00B7, 0xCB20, 0x00D1, 0x00EB, -/* 0020 */ 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0xC141, 0xC241, 0xC341, -/* 0028 */ 0xC441, 0xC841, 0xCA41, 0x00E1, 0xCB43, 0xC145, 0xC245, 0xC345, -/* 0030 */ 0xC845, 0xC149, 0xC249, 0xC349, 0xC849, 0xFFFD, 0xC44E, 0xC14F, -/* 0038 */ 0xC24F, 0xC34F, 0xC44F, 0xC84F, 0x00B4, 0x00E9, 0xC155, 0xC255, -/* 0040 */ 0xC355, 0xC855, 0xC259, 0x00EC, 0x00FB, 0xC161, 0xC261, 0xC361, -/* 0048 */ 0xC461, 0xC861, 0xCA61, 0x00F1, 0xCB63, 0xC165, 0xC265, 0xC365, -/* 0050 */ 0xC865, 0xC169, 0xC269, 0xC369, 0xC869, 0x00F3, 0xC46E, 0xC16F, -/* 0058 */ 0xC26F, 0xC36F, 0xC46F, 0xC86F, 0x00B8, 0x00F9, 0xC175, 0xC275, -/* 0060 */ 0xC375, 0xC875, 0xC279, 0x00FC, 0xC879, 0xC541, 0xC561, 0xC641, -/* 0068 */ 0xC661, 0xCE41, 0xCE61, 0xC243, 0xC263, 0xC343, 0xC363, 0xC743, -/* 0070 */ 0xC763, 0xCF43, 0xCF63, 0xCF44, 0xCF64, 0x00E2, 0x00F2, 0xC545, -/* 0078 */ 0xC565, 0xFFFD, 0xFFFD, 0xC745, 0xC765, 0xCE45, 0xCE65, 0xCF45, -/* 0080 */ 0xCF65, 0xC347, 0xC367, 0xC647, 0xC667, 0xC747, 0xC767, 0xCB47, -/* 0088 */ 0xFFFD, 0xC348, 0xC368, 0x00E4, 0x00F4, 0xC449, 0xC469, 0xC549, -/* 0090 */ 0xC569, 0xFFFD, 0xFFFD, 0xCE49, 0xCE69, 0xC749, 0x00F5, 0x00E6, -/* 0098 */ 0x00F6, 0xC34A, 0xC36A, 0xCB4B, 0xCB6B, 0x00F0, 0xC24C, 0xC26C, -/* 00A0 */ 0xCB4C, 0xCB6C, 0xCF4C, 0xCF6C, 0x00E7, 0x00F7, 0x00E8, 0x00F8, -/* 00A8 */ 0xC24E, 0xC26E, 0xFFFD, 0xCB6E, 0xCF4E, 0xCF6E, 0x00EF, 0x00EE, -/* 00B0 */ 0x00FE, 0xC54F, 0xC56F, 0xFFFD, 0xFFFD, 0xCD4F, 0xCD6F, 0x00EA, -/* 00B8 */ 0x00FA, 0xC252, 0xC272, 0xCB52, 0xCB72, 0xCF52, 0xCF72, 0xC253, -/* 00C0 */ 0xC273, 0xC353, 0xC373, 0xCB53, 0xCB73, 0xCF53, 0xCF73, 0xCB54, -/* 00C8 */ 0xCB74, 0xCF54, 0xCF74, 0x00ED, 0x00FD, 0xC455, 0xC475, 0xC555, -/* 00D0 */ 0xC575, 0xC655, 0xC675, 0xCA55, 0xCA75, 0xCD55, 0xCD75, 0xCE55, -/* 00D8 */ 0xCE75, 0xC357, 0xC377, 0xC359, 0xC379, 0xC859, 0xFFFD, 0xC27A, -/* 00E0 */ 0xC75A, 0xC77A, 0xCF5A, 0xCF7A, 0xC620, 0xC720, 0xCA20, 0xCE20, -/* 00E8 */ 0xFFFD, 0xCD20, 0x00D0, 0xFFFD, 0xFFFD, 0x00A9, 0x00B9, 0xFFFD, -/* 00F0 */ 0xFFFD, 0x00AA, 0x00BA, 0x00D4, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E0, -/* 00F8 */ 0x00DC, 0x00DD, 0x00DE, 0x00DF, 0x00AC, 0x00AD, 0x00AE, 0x00AF, -/* End of table Total Length = 0x0135 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/tcvn5712.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/tcvn5712.uf deleted file mode 100644 index a7f09100067..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/tcvn5712.uf +++ /dev/null @@ -1,219 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0007 - srcEnd = 0010 - destBegin = 0007 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0018 - srcEnd = 007F - destBegin = 0018 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0000 - srcEnd = 0003 - mappingOffset = 0000 - Mapping = - 0000 FFFD FFFD 0003 -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 00A0 - destBegin = 00A0 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00C0 - srcEnd = 0103 - mappingOffset = 0004 - Mapping = - 0080 0083 00A2 0082 FFFD FFFD FFFD FFFD - 0087 008A 00A3 FFFD 008D 0090 FFFD FFFD - FFFD FFFD 0092 0095 00A4 0094 FFFD FFFD - FFFD 009D 0001 FFFD FFFD 0016 FFFD FFFD - 00B5 00B8 00A9 00B7 FFFD FFFD FFFD FFFD - 00CC 00D0 00AA FFFD 00D7 00DD FFFD FFFD - FFFD FFFD 00DF 00E3 00AB 00E2 FFFD FFFD - FFFD 00EF 00F3 FFFD FFFD 00FD FFFD FFFD - FFFD FFFD 00A1 00A8 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 0110 - srcEnd = 0111 - mappingOffset = 0048 - Mapping = - 00A7 00AE -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 0128 - srcEnd = 0129 - mappingOffset = 004A - Mapping = - 008F 00DC -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 0168 - srcEnd = 0169 - mappingOffset = 004C - Mapping = - 009F 00F2 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 01A0 - srcEnd = 01A1 - mappingOffset = 004E - Mapping = - 00A5 00AC -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 01AF - srcEnd = 01B0 - mappingOffset = 0050 - Mapping = - 00A6 00AD -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 0300 - srcEnd = 0309 - mappingOffset = 0052 - Mapping = - 00B0 00B3 FFFD 00B2 FFFD FFFD FFFD FFFD - FFFD 00B1 -End of Item 000A - -Begin of Item 000B - Format 2 - srcBegin = 0323 - destBegin = 00B4 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 1EA0 - srcEnd = 1EF9 - mappingOffset = 005C - Mapping = - 0084 00B9 0081 00B6 00C4 00CA 00C1 00C7 - 00C2 00C8 00C3 00C9 0086 00CB 00C0 00BE - 00AF 00BB 00BA 00BC 00BF 00BD 0085 00C6 - 008B 00D1 0088 00CE 0089 00CF 00DA 00D5 - 00C5 00D2 00CD 00D3 00D9 00D4 008C 00D6 - 008E 00D8 0091 00DE 0096 00E4 0093 00E1 - 00FF 00E8 00DB 00E5 00E0 00E6 00F0 00E7 - 0097 00E9 009B 00ED 0098 00EA 0099 00EB - 009A 00EC 009C 00EE 0002 00F4 009E 00F1 - 0011 00F8 0004 00F5 0005 00F6 0006 00F7 - 0012 00F9 0013 00FA 0017 00FE 0014 00FB - 0015 00FC -End of Item 000C - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000D, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x002F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0009 */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x2100, 0x1111, 0x2111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0007, 0x0010, 0x0007, -/* 0001 */ 0x0018, 0x007F, 0x0018, -/* 0002 */ 0x0000, 0x0003, 0x0000, -/* 0003 */ 0x00A0, 0x0000, 0x00A0, -/* 0004 */ 0x00C0, 0x0103, 0x0004, -/* 0005 */ 0x0110, 0x0111, 0x0048, -/* 0006 */ 0x0128, 0x0129, 0x004A, -/* 0007 */ 0x0168, 0x0169, 0x004C, -/* 0008 */ 0x01A0, 0x01A1, 0x004E, -/* 0009 */ 0x01AF, 0x01B0, 0x0050, -/* 000A */ 0x0300, 0x0309, 0x0052, -/* 000B */ 0x0323, 0x0000, 0x00B4, -/* 000C */ 0x1EA0, 0x1EF9, 0x005C, -/*-------------------------------------------------------*/ -/* Offset=0x002F Start of MappingTable */ - -/* 0000 */ 0x0000, 0xFFFD, 0xFFFD, 0x0003, 0x0080, 0x0083, 0x00A2, 0x0082, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0087, 0x008A, 0x00A3, 0xFFFD, -/* 0010 */ 0x008D, 0x0090, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0092, 0x0095, -/* 0018 */ 0x00A4, 0x0094, 0xFFFD, 0xFFFD, 0xFFFD, 0x009D, 0x0001, 0xFFFD, -/* 0020 */ 0xFFFD, 0x0016, 0xFFFD, 0xFFFD, 0x00B5, 0x00B8, 0x00A9, 0x00B7, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00CC, 0x00D0, 0x00AA, 0xFFFD, -/* 0030 */ 0x00D7, 0x00DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00DF, 0x00E3, -/* 0038 */ 0x00AB, 0x00E2, 0xFFFD, 0xFFFD, 0xFFFD, 0x00EF, 0x00F3, 0xFFFD, -/* 0040 */ 0xFFFD, 0x00FD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A1, 0x00A8, -/* 0048 */ 0x00A7, 0x00AE, 0x008F, 0x00DC, 0x009F, 0x00F2, 0x00A5, 0x00AC, -/* 0050 */ 0x00A6, 0x00AD, 0x00B0, 0x00B3, 0xFFFD, 0x00B2, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00B1, 0x0084, 0x00B9, 0x0081, 0x00B6, -/* 0060 */ 0x00C4, 0x00CA, 0x00C1, 0x00C7, 0x00C2, 0x00C8, 0x00C3, 0x00C9, -/* 0068 */ 0x0086, 0x00CB, 0x00C0, 0x00BE, 0x00AF, 0x00BB, 0x00BA, 0x00BC, -/* 0070 */ 0x00BF, 0x00BD, 0x0085, 0x00C6, 0x008B, 0x00D1, 0x0088, 0x00CE, -/* 0078 */ 0x0089, 0x00CF, 0x00DA, 0x00D5, 0x00C5, 0x00D2, 0x00CD, 0x00D3, -/* 0080 */ 0x00D9, 0x00D4, 0x008C, 0x00D6, 0x008E, 0x00D8, 0x0091, 0x00DE, -/* 0088 */ 0x0096, 0x00E4, 0x0093, 0x00E1, 0x00FF, 0x00E8, 0x00DB, 0x00E5, -/* 0090 */ 0x00E0, 0x00E6, 0x00F0, 0x00E7, 0x0097, 0x00E9, 0x009B, 0x00ED, -/* 0098 */ 0x0098, 0x00EA, 0x0099, 0x00EB, 0x009A, 0x00EC, 0x009C, 0x00EE, -/* 00A0 */ 0x0002, 0x00F4, 0x009E, 0x00F1, 0x0011, 0x00F8, 0x0004, 0x00F5, -/* 00A8 */ 0x0005, 0x00F6, 0x0006, 0x00F7, 0x0012, 0x00F9, 0x0013, 0x00FA, -/* 00B0 */ 0x0017, 0x00FE, 0x0014, 0x00FB, 0x0015, 0x00FC, -/* End of table Total Length = 0x00E5 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/u20ksc.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/u20ksc.uf deleted file mode 100644 index 9a40ddb8537..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/u20ksc.uf +++ /dev/null @@ -1,28247 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = A5C1 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = A5D2 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = A5E1 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = A5F2 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0410 - srcEnd = 0415 - destBegin = ACA1 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0416 - srcEnd = 042F - destBegin = ACA8 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0430 - srcEnd = 0435 - destBegin = ACD1 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0436 - srcEnd = 044F - destBegin = ACD8 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2160 - srcEnd = 2169 - destBegin = A5B0 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2170 - srcEnd = 2179 - destBegin = A5A1 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2460 - srcEnd = 246E - destBegin = A8E7 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2474 - srcEnd = 2482 - destBegin = A9E7 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 249C - srcEnd = 24B5 - destBegin = A9CD -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 24D0 - srcEnd = 24E9 - destBegin = A8CD -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 2543 - srcEnd = 254A - destBegin = A6DD -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 3008 - srcEnd = 3011 - destBegin = A1B4 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = AAA1 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 30A1 - srcEnd = 30F6 - destBegin = ABA1 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 3131 - srcEnd = 318E - destBegin = A4A1 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 3200 - srcEnd = 321B - destBegin = A9B1 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 3260 - srcEnd = 327B - destBegin = A8B1 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 3399 - srcEnd = 33A2 - destBegin = A7AB -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 33B0 - srcEnd = 33B9 - destBegin = A7BF -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 33BA - srcEnd = 33BF - destBegin = A7CE -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = AC10 - srcEnd = AC17 - destBegin = B0A8 -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = AC25 - srcEnd = AC2B - destBegin = 8150 -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = AC41 - srcEnd = AC4A - destBegin = 8169 -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = AC4E - srcEnd = AC53 - destBegin = 8174 -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = AC5D - srcEnd = AC6F - destBegin = 8186 -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = AC95 - srcEnd = AC9B - destBegin = 81AC -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = ACA2 - srcEnd = ACA7 - destBegin = 81B4 -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = ACB1 - srcEnd = ACB7 - destBegin = 81BD -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = ACCD - srcEnd = ACD4 - destBegin = 81D0 -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = ACD8 - srcEnd = ACDF - destBegin = 81D9 -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = AD21 - srcEnd = AD28 - destBegin = 824B -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = AD2E - srcEnd = AD33 - destBegin = 8255 -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = AD3D - srcEnd = AD43 - destBegin = 8266 -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = AD4A - srcEnd = AD4F - destBegin = 826F -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = AD59 - srcEnd = AD60 - destBegin = 8281 -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = AD64 - srcEnd = AD6B - destBegin = 828A -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = AD91 - srcEnd = AD9B - destBegin = 82A6 -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = AD9E - srcEnd = ADA3 - destBegin = 82B1 -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = ADA5 - srcEnd = ADB6 - destBegin = 82B7 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = ADB8 - srcEnd = ADBF - destBegin = 82C9 -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = ADC9 - srcEnd = ADCF - destBegin = 82D6 -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = ADD4 - srcEnd = ADDB - destBegin = 82DE -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = ADE5 - srcEnd = ADF7 - destBegin = 82EC -End of Item 002E - -Begin of Item 002F - Format 0 - srcBegin = AE02 - srcEnd = AE07 - destBegin = 8345 -End of Item 002F - -Begin of Item 0030 - Format 0 - srcBegin = AE0E - srcEnd = AE13 - destBegin = 834D -End of Item 0030 - -Begin of Item 0031 - Format 0 - srcBegin = AE15 - srcEnd = AE1C - destBegin = 8353 -End of Item 0031 - -Begin of Item 0032 - Format 0 - srcBegin = AE1D - srcEnd = AE2F - destBegin = 8361 -End of Item 0032 - -Begin of Item 0033 - Format 0 - srcBegin = AE71 - srcEnd = AE77 - destBegin = 839F -End of Item 0033 - -Begin of Item 0034 - Format 0 - srcBegin = AE7E - srcEnd = AE83 - destBegin = 83A7 -End of Item 0034 - -Begin of Item 0035 - Format 0 - srcBegin = AE86 - srcEnd = AE8B - destBegin = 83AD -End of Item 0035 - -Begin of Item 0036 - Format 0 - srcBegin = AE8D - srcEnd = AEBB - destBegin = 83B3 -End of Item 0036 - -Begin of Item 0037 - Format 0 - srcBegin = AEC5 - srcEnd = AECB - destBegin = 83E6 -End of Item 0037 - -Begin of Item 0038 - Format 0 - srcBegin = AED2 - srcEnd = AED7 - destBegin = 83EE -End of Item 0038 - -Begin of Item 0039 - Format 0 - srcBegin = AEDD - srcEnd = AEE5 - destBegin = 83F6 -End of Item 0039 - -Begin of Item 003A - Format 0 - srcBegin = AEEE - srcEnd = AEF3 - destBegin = 8446 -End of Item 003A - -Begin of Item 003B - Format 0 - srcBegin = AEFD - srcEnd = AF05 - destBegin = 8452 -End of Item 003B - -Begin of Item 003C - Format 0 - srcBegin = AF11 - srcEnd = AF23 - destBegin = 8468 -End of Item 003C - -Begin of Item 003D - Format 0 - srcBegin = AF24 - srcEnd = AF2B - destBegin = 8481 -End of Item 003D - -Begin of Item 003E - Format 0 - srcBegin = AF35 - srcEnd = AF3B - destBegin = 848D -End of Item 003E - -Begin of Item 003F - Format 0 - srcBegin = AF4A - srcEnd = AF4F - destBegin = 849A -End of Item 003F - -Begin of Item 0040 - Format 0 - srcBegin = AF51 - srcEnd = AF5B - destBegin = 84A0 -End of Item 0040 - -Begin of Item 0041 - Format 0 - srcBegin = AF5E - srcEnd = AF63 - destBegin = 84AB -End of Item 0041 - -Begin of Item 0042 - Format 0 - srcBegin = AF66 - srcEnd = AF78 - destBegin = 84B1 -End of Item 0042 - -Begin of Item 0043 - Format 0 - srcBegin = AF7A - srcEnd = AF7F - destBegin = 84C4 -End of Item 0043 - -Begin of Item 0044 - Format 0 - srcBegin = AF89 - srcEnd = AF8F - destBegin = 84D0 -End of Item 0044 - -Begin of Item 0045 - Format 0 - srcBegin = AF96 - srcEnd = AF9B - destBegin = 84DA -End of Item 0045 - -Begin of Item 0046 - Format 0 - srcBegin = AF9D - srcEnd = AFB7 - destBegin = 84E0 -End of Item 0046 - -Begin of Item 0047 - Format 0 - srcBegin = AFC1 - srcEnd = AFC6 - destBegin = 8542 -End of Item 0047 - -Begin of Item 0048 - Format 0 - srcBegin = AFD5 - srcEnd = AFDB - destBegin = 854F -End of Item 0048 - -Begin of Item 0049 - Format 0 - srcBegin = AFE2 - srcEnd = AFE7 - destBegin = 8561 -End of Item 0049 - -Begin of Item 004A - Format 0 - srcBegin = AFEA - srcEnd = AFEF - destBegin = 8567 -End of Item 004A - -Begin of Item 004B - Format 0 - srcBegin = AFF9 - srcEnd = AFFF - destBegin = 8572 -End of Item 004B - -Begin of Item 004C - Format 0 - srcBegin = B005 - srcEnd = B00B - destBegin = 8581 -End of Item 004C - -Begin of Item 004D - Format 0 - srcBegin = B015 - srcEnd = B01B - destBegin = 858E -End of Item 004D - -Begin of Item 004E - Format 0 - srcBegin = B01E - srcEnd = B027 - destBegin = 8595 -End of Item 004E - -Begin of Item 004F - Format 0 - srcBegin = B029 - srcEnd = B043 - destBegin = 859F -End of Item 004F - -Begin of Item 0050 - Format 0 - srcBegin = B05E - srcEnd = B07B - destBegin = 85C8 -End of Item 0050 - -Begin of Item 0051 - Format 0 - srcBegin = B085 - srcEnd = B08B - destBegin = 85EB -End of Item 0051 - -Begin of Item 0052 - Format 0 - srcBegin = B092 - srcEnd = B097 - destBegin = 85F4 -End of Item 0052 - -Begin of Item 0053 - Format 0 - srcBegin = B0BD - srcEnd = B0C3 - destBegin = 864C -End of Item 0053 - -Begin of Item 0054 - Format 0 - srcBegin = B0CA - srcEnd = B0CF - destBegin = 8654 -End of Item 0054 - -Begin of Item 0055 - Format 0 - srcBegin = B0D9 - srcEnd = B0DF - destBegin = 8665 -End of Item 0055 - -Begin of Item 0056 - Format 0 - srcBegin = B0E6 - srcEnd = B0F0 - destBegin = 8670 -End of Item 0056 - -Begin of Item 0057 - Format 0 - srcBegin = B0F1 - srcEnd = B107 - destBegin = 8681 -End of Item 0057 - -Begin of Item 0058 - Format 0 - srcBegin = B12D - srcEnd = B133 - destBegin = 86AC -End of Item 0058 - -Begin of Item 0059 - Format 0 - srcBegin = B13A - srcEnd = B13F - destBegin = 86B4 -End of Item 0059 - -Begin of Item 005A - Format 0 - srcBegin = B149 - srcEnd = B14F - destBegin = 86BF -End of Item 005A - -Begin of Item 005B - Format 0 - srcBegin = B161 - srcEnd = B177 - destBegin = 86D0 -End of Item 005B - -Begin of Item 005C - Format 0 - srcBegin = B19E - srcEnd = B1A7 - destBegin = 8741 -End of Item 005C - -Begin of Item 005D - Format 0 - srcBegin = B1A9 - srcEnd = B1B8 - destBegin = 874B -End of Item 005D - -Begin of Item 005E - Format 0 - srcBegin = B1B9 - srcEnd = B1CB - destBegin = 8761 -End of Item 005E - -Begin of Item 005F - Format 0 - srcBegin = B1D6 - srcEnd = B1DB - destBegin = 8781 -End of Item 005F - -Begin of Item 0060 - Format 0 - srcBegin = B1E0 - srcEnd = B1E7 - destBegin = 8788 -End of Item 0060 - -Begin of Item 0061 - Format 0 - srcBegin = B1F1 - srcEnd = B1F8 - destBegin = 8795 -End of Item 0061 - -Begin of Item 0062 - Format 0 - srcBegin = B1FE - srcEnd = B203 - destBegin = 879F -End of Item 0062 - -Begin of Item 0063 - Format 0 - srcBegin = B20D - srcEnd = B213 - destBegin = 87A9 -End of Item 0063 - -Begin of Item 0064 - Format 0 - srcBegin = B21A - srcEnd = B21F - destBegin = 87B2 -End of Item 0064 - -Begin of Item 0065 - Format 0 - srcBegin = B221 - srcEnd = B233 - destBegin = 87B8 -End of Item 0065 - -Begin of Item 0066 - Format 0 - srcBegin = B235 - srcEnd = B23B - destBegin = 87CB -End of Item 0066 - -Begin of Item 0067 - Format 0 - srcBegin = B23D - srcEnd = B257 - destBegin = 87D2 -End of Item 0067 - -Begin of Item 0068 - Format 0 - srcBegin = B261 - srcEnd = B267 - destBegin = 87F3 -End of Item 0068 - -Begin of Item 0069 - Format 0 - srcBegin = B276 - srcEnd = B27B - destBegin = 8846 -End of Item 0069 - -Begin of Item 006A - Format 0 - srcBegin = B27D - srcEnd = B283 - destBegin = 884C -End of Item 006A - -Begin of Item 006B - Format 0 - srcBegin = B2B8 - srcEnd = B2C7 - destBegin = 8881 -End of Item 006B - -Begin of Item 006C - Format 0 - srcBegin = B309 - srcEnd = B30F - destBegin = 88B2 -End of Item 006C - -Begin of Item 006D - Format 0 - srcBegin = B316 - srcEnd = B31B - destBegin = 88BA -End of Item 006D - -Begin of Item 006E - Format 0 - srcBegin = B31D - srcEnd = B353 - destBegin = 88C0 -End of Item 006E - -Begin of Item 006F - Format 0 - srcBegin = B379 - srcEnd = B37F - destBegin = 894C -End of Item 006F - -Begin of Item 0070 - Format 0 - srcBegin = B386 - srcEnd = B38B - destBegin = 8954 -End of Item 0070 - -Begin of Item 0071 - Format 0 - srcBegin = B395 - srcEnd = B39F - destBegin = 8966 -End of Item 0071 - -Begin of Item 0072 - Format 0 - srcBegin = B3A2 - srcEnd = B3A7 - destBegin = 8971 -End of Item 0072 - -Begin of Item 0073 - Format 0 - srcBegin = B3AE - srcEnd = B3C3 - destBegin = 8981 -End of Item 0073 - -Begin of Item 0074 - Format 0 - srcBegin = B3E9 - srcEnd = B3FB - destBegin = 89AC -End of Item 0074 - -Begin of Item 0075 - Format 0 - srcBegin = B3FD - srcEnd = B40F - destBegin = 89BF -End of Item 0075 - -Begin of Item 0076 - Format 0 - srcBegin = B411 - srcEnd = B417 - destBegin = 89D2 -End of Item 0076 - -Begin of Item 0077 - Format 0 - srcBegin = B421 - srcEnd = B427 - destBegin = 89DF -End of Item 0077 - -Begin of Item 0078 - Format 0 - srcBegin = B42C - srcEnd = B433 - destBegin = 89E7 -End of Item 0078 - -Begin of Item 0079 - Format 0 - srcBegin = B435 - srcEnd = B444 - destBegin = 89EF -End of Item 0079 - -Begin of Item 007A - Format 0 - srcBegin = B445 - srcEnd = B44F - destBegin = 8A41 -End of Item 007A - -Begin of Item 007B - Format 0 - srcBegin = B459 - srcEnd = B45F - destBegin = 8A51 -End of Item 007B - -Begin of Item 007C - Format 0 - srcBegin = B46D - srcEnd = B47F - destBegin = 8A66 -End of Item 007C - -Begin of Item 007D - Format 0 - srcBegin = B489 - srcEnd = B49C - destBegin = 8A86 -End of Item 007D - -Begin of Item 007E - Format 0 - srcBegin = B49E - srcEnd = B4A3 - destBegin = 8A9A -End of Item 007E - -Begin of Item 007F - Format 0 - srcBegin = B4AD - srcEnd = B4B4 - destBegin = 8AA6 -End of Item 007F - -Begin of Item 0080 - Format 0 - srcBegin = B4BA - srcEnd = B4BF - destBegin = 8AB0 -End of Item 0080 - -Begin of Item 0081 - Format 0 - srcBegin = B4C9 - srcEnd = B4CF - destBegin = 8ABC -End of Item 0081 - -Begin of Item 0082 - Format 0 - srcBegin = B4D6 - srcEnd = B4DB - destBegin = 8AC7 -End of Item 0082 - -Begin of Item 0083 - Format 0 - srcBegin = B4F2 - srcEnd = B4F7 - destBegin = 8AD9 -End of Item 0083 - -Begin of Item 0084 - Format 0 - srcBegin = B4F9 - srcEnd = B513 - destBegin = 8ADF -End of Item 0084 - -Begin of Item 0085 - Format 0 - srcBegin = B51E - srcEnd = B523 - destBegin = 8B41 -End of Item 0085 - -Begin of Item 0086 - Format 0 - srcBegin = B539 - srcEnd = B53F - destBegin = 8B52 -End of Item 0086 - -Begin of Item 0087 - Format 0 - srcBegin = B555 - srcEnd = B55B - destBegin = 8B6A -End of Item 0087 - -Begin of Item 0088 - Format 0 - srcBegin = B562 - srcEnd = B56A - destBegin = 8B72 -End of Item 0088 - -Begin of Item 0089 - Format 0 - srcBegin = B56B - srcEnd = B59F - destBegin = 8B81 -End of Item 0089 - -Begin of Item 008A - Format 0 - srcBegin = B5C5 - srcEnd = B5CB - destBegin = 8BCB -End of Item 008A - -Begin of Item 008B - Format 0 - srcBegin = B5D2 - srcEnd = B5D7 - destBegin = 8BD3 -End of Item 008B - -Begin of Item 008C - Format 0 - srcBegin = B5D9 - srcEnd = B5EB - destBegin = 8BD9 -End of Item 008C - -Begin of Item 008D - Format 0 - srcBegin = B5ED - srcEnd = B5FF - destBegin = 8BEC -End of Item 008D - -Begin of Item 008E - Format 0 - srcBegin = B600 - srcEnd = B60F - destBegin = 8C41 -End of Item 008E - -Begin of Item 008F - Format 0 - srcBegin = B61E - srcEnd = B624 - destBegin = 8C61 -End of Item 008F - -Begin of Item 0090 - Format 0 - srcBegin = B626 - srcEnd = B62B - destBegin = 8C68 -End of Item 0090 - -Begin of Item 0091 - Format 0 - srcBegin = B62D - srcEnd = B633 - destBegin = 8C6E -End of Item 0091 - -Begin of Item 0092 - Format 0 - srcBegin = B635 - srcEnd = B63A - destBegin = 8C75 -End of Item 0092 - -Begin of Item 0093 - Format 0 - srcBegin = B63B - srcEnd = B647 - destBegin = 8C81 -End of Item 0093 - -Begin of Item 0094 - Format 0 - srcBegin = B649 - srcEnd = B663 - destBegin = 8C8E -End of Item 0094 - -Begin of Item 0095 - Format 0 - srcBegin = B669 - srcEnd = B69B - destBegin = 8CAC -End of Item 0095 - -Begin of Item 0096 - Format 0 - srcBegin = B6A5 - srcEnd = B6AA - destBegin = 8CE4 -End of Item 0096 - -Begin of Item 0097 - Format 0 - srcBegin = B6B2 - srcEnd = B6C2 - destBegin = 8CEE -End of Item 0097 - -Begin of Item 0098 - Format 0 - srcBegin = B6C3 - srcEnd = B6D3 - destBegin = 8D41 -End of Item 0098 - -Begin of Item 0099 - Format 0 - srcBegin = B6D5 - srcEnd = B6DD - destBegin = 8D52 -End of Item 0099 - -Begin of Item 009A - Format 0 - srcBegin = B6DE - srcEnd = B6EF - destBegin = 8D61 -End of Item 009A - -Begin of Item 009B - Format 0 - srcBegin = B706 - srcEnd = B727 - destBegin = 8D89 -End of Item 009B - -Begin of Item 009C - Format 0 - srcBegin = B731 - srcEnd = B737 - destBegin = 8DAF -End of Item 009C - -Begin of Item 009D - Format 0 - srcBegin = B73C - srcEnd = B743 - destBegin = 8DB7 -End of Item 009D - -Begin of Item 009E - Format 0 - srcBegin = B74D - srcEnd = B753 - destBegin = 8DC5 -End of Item 009E - -Begin of Item 009F - Format 0 - srcBegin = B756 - srcEnd = B75F - destBegin = 8DCC -End of Item 009F - -Begin of Item 00A0 - Format 0 - srcBegin = B769 - srcEnd = B76F - destBegin = 8DDC -End of Item 00A0 - -Begin of Item 00A1 - Format 0 - srcBegin = B776 - srcEnd = B77B - destBegin = 8DE5 -End of Item 00A1 - -Begin of Item 00A2 - Format 0 - srcBegin = B785 - srcEnd = B78B - destBegin = 8DF0 -End of Item 00A2 - -Begin of Item 00A3 - Format 0 - srcBegin = B7A1 - srcEnd = B7A7 - destBegin = 8E42 -End of Item 00A3 - -Begin of Item 00A4 - Format 0 - srcBegin = B7AE - srcEnd = B7B3 - destBegin = 8E4A -End of Item 00A4 - -Begin of Item 00A5 - Format 0 - srcBegin = B7B9 - srcEnd = B7C1 - destBegin = 8E52 -End of Item 00A5 - -Begin of Item 00A6 - Format 0 - srcBegin = B7CA - srcEnd = B7DD - destBegin = 8E67 -End of Item 00A6 - -Begin of Item 00A7 - Format 0 - srcBegin = B7DE - srcEnd = B7EB - destBegin = 8E81 -End of Item 00A7 - -Begin of Item 00A8 - Format 0 - srcBegin = B7F5 - srcEnd = B7FB - destBegin = 8E94 -End of Item 00A8 - -Begin of Item 00A9 - Format 0 - srcBegin = B811 - srcEnd = B817 - destBegin = 8EA6 -End of Item 00A9 - -Begin of Item 00AA - Format 0 - srcBegin = B81E - srcEnd = B823 - destBegin = 8EAF -End of Item 00AA - -Begin of Item 00AB - Format 0 - srcBegin = B82D - srcEnd = B833 - destBegin = 8EBA -End of Item 00AB - -Begin of Item 00AC - Format 0 - srcBegin = B83A - srcEnd = B83F - destBegin = 8EC2 -End of Item 00AC - -Begin of Item 00AD - Format 0 - srcBegin = B845 - srcEnd = B850 - destBegin = 8ECB -End of Item 00AD - -Begin of Item 00AE - Format 0 - srcBegin = B854 - srcEnd = B85B - destBegin = 8ED8 -End of Item 00AE - -Begin of Item 00AF - Format 0 - srcBegin = B865 - srcEnd = B86B - destBegin = 8EE5 -End of Item 00AF - -Begin of Item 00B0 - Format 0 - srcBegin = B872 - srcEnd = B877 - destBegin = 8EEE -End of Item 00B0 - -Begin of Item 00B1 - Format 0 - srcBegin = B87D - srcEnd = B884 - destBegin = 8EF7 -End of Item 00B1 - -Begin of Item 00B2 - Format 0 - srcBegin = B885 - srcEnd = B88C - destBegin = 8F41 -End of Item 00B2 - -Begin of Item 00B3 - Format 0 - srcBegin = B88E - srcEnd = B89F - destBegin = 8F49 -End of Item 00B3 - -Begin of Item 00B4 - Format 0 - srcBegin = B8A0 - srcEnd = B8A7 - destBegin = 8F61 -End of Item 00B4 - -Begin of Item 00B5 - Format 0 - srcBegin = B8A9 - srcEnd = B8AF - destBegin = 8F69 -End of Item 00B5 - -Begin of Item 00B6 - Format 0 - srcBegin = B8C6 - srcEnd = B8CB - destBegin = 8F85 -End of Item 00B6 - -Begin of Item 00B7 - Format 0 - srcBegin = B8D5 - srcEnd = B8DC - destBegin = 8F91 -End of Item 00B7 - -Begin of Item 00B8 - Format 0 - srcBegin = B8E2 - srcEnd = B8E7 - destBegin = 8F9B -End of Item 00B8 - -Begin of Item 00B9 - Format 0 - srcBegin = B8F1 - srcEnd = B8F7 - destBegin = 8FA6 -End of Item 00B9 - -Begin of Item 00BA - Format 0 - srcBegin = B8FE - srcEnd = B903 - destBegin = 8FAF -End of Item 00BA - -Begin of Item 00BB - Format 0 - srcBegin = B905 - srcEnd = B917 - destBegin = 8FB5 -End of Item 00BB - -Begin of Item 00BC - Format 0 - srcBegin = B919 - srcEnd = B91F - destBegin = 8FC8 -End of Item 00BC - -Begin of Item 00BD - Format 0 - srcBegin = B921 - srcEnd = B93B - destBegin = 8FCF -End of Item 00BD - -Begin of Item 00BE - Format 0 - srcBegin = B945 - srcEnd = B94B - destBegin = 8FEF -End of Item 00BE - -Begin of Item 00BF - Format 0 - srcBegin = B952 - srcEnd = B957 - destBegin = 8FF9 -End of Item 00BF - -Begin of Item 00C0 - Format 0 - srcBegin = B961 - srcEnd = B967 - destBegin = 9046 -End of Item 00C0 - -Begin of Item 00C1 - Format 0 - srcBegin = B96E - srcEnd = B973 - destBegin = 904F -End of Item 00C1 - -Begin of Item 00C2 - Format 0 - srcBegin = B97E - srcEnd = B983 - destBegin = 9061 -End of Item 00C2 - -Begin of Item 00C3 - Format 0 - srcBegin = B98F - srcEnd = B99E - destBegin = 906B -End of Item 00C3 - -Begin of Item 00C4 - Format 0 - srcBegin = B99F - srcEnd = B9AB - destBegin = 9081 -End of Item 00C4 - -Begin of Item 00C5 - Format 0 - srcBegin = B9B5 - srcEnd = B9BB - destBegin = 9093 -End of Item 00C5 - -Begin of Item 00C6 - Format 0 - srcBegin = B9C2 - srcEnd = B9C7 - destBegin = 909C -End of Item 00C6 - -Begin of Item 00C7 - Format 0 - srcBegin = B9ED - srcEnd = B9F3 - destBegin = 90B4 -End of Item 00C7 - -Begin of Item 00C8 - Format 0 - srcBegin = BA02 - srcEnd = BA07 - destBegin = 90C1 -End of Item 00C8 - -Begin of Item 00C9 - Format 0 - srcBegin = BA09 - srcEnd = BA14 - destBegin = 90C7 -End of Item 00C9 - -Begin of Item 00CA - Format 0 - srcBegin = BA16 - srcEnd = BA37 - destBegin = 90D3 -End of Item 00CA - -Begin of Item 00CB - Format 0 - srcBegin = BA5D - srcEnd = BA63 - destBegin = 914D -End of Item 00CB - -Begin of Item 00CC - Format 0 - srcBegin = BA6A - srcEnd = BA6F - destBegin = 9155 -End of Item 00CC - -Begin of Item 00CD - Format 0 - srcBegin = BA79 - srcEnd = BA82 - destBegin = 9166 -End of Item 00CD - -Begin of Item 00CE - Format 0 - srcBegin = BA8D - srcEnd = BA92 - destBegin = 9175 -End of Item 00CE - -Begin of Item 00CF - Format 0 - srcBegin = BA93 - srcEnd = BAA7 - destBegin = 9181 -End of Item 00CF - -Begin of Item 00D0 - Format 0 - srcBegin = BABE - srcEnd = BAC3 - destBegin = 91A2 -End of Item 00D0 - -Begin of Item 00D1 - Format 0 - srcBegin = BAC9 - srcEnd = BAD7 - destBegin = 91AB -End of Item 00D1 - -Begin of Item 00D2 - Format 0 - srcBegin = BADA - srcEnd = BAFB - destBegin = 91BA -End of Item 00D2 - -Begin of Item 00D3 - Format 0 - srcBegin = BB05 - srcEnd = BB0C - destBegin = 91E2 -End of Item 00D3 - -Begin of Item 00D4 - Format 0 - srcBegin = BB12 - srcEnd = BB17 - destBegin = 91EC -End of Item 00D4 - -Begin of Item 00D5 - Format 0 - srcBegin = BB21 - srcEnd = BB27 - destBegin = 91F8 -End of Item 00D5 - -Begin of Item 00D6 - Format 0 - srcBegin = BB2C - srcEnd = BB33 - destBegin = 9243 -End of Item 00D6 - -Begin of Item 00D7 - Format 0 - srcBegin = BB59 - srcEnd = BB60 - destBegin = 9265 -End of Item 00D7 - -Begin of Item 00D8 - Format 0 - srcBegin = BB64 - srcEnd = BB6B - destBegin = 926E -End of Item 00D8 - -Begin of Item 00D9 - Format 0 - srcBegin = BB72 - srcEnd = BB87 - destBegin = 9281 -End of Item 00D9 - -Begin of Item 00DA - Format 0 - srcBegin = BB91 - srcEnd = BBA3 - destBegin = 929D -End of Item 00DA - -Begin of Item 00DB - Format 0 - srcBegin = BBAD - srcEnd = BBB3 - destBegin = 92B6 -End of Item 00DB - -Begin of Item 00DC - Format 0 - srcBegin = BBB8 - srcEnd = BBBF - destBegin = 92BF -End of Item 00DC - -Begin of Item 00DD - Format 0 - srcBegin = BBC9 - srcEnd = BBCF - destBegin = 92CD -End of Item 00DD - -Begin of Item 00DE - Format 0 - srcBegin = BBD4 - srcEnd = BBF7 - destBegin = 92D6 -End of Item 00DE - -Begin of Item 00DF - Format 0 - srcBegin = BC39 - srcEnd = BC3F - destBegin = 9363 -End of Item 00DF - -Begin of Item 00E0 - Format 0 - srcBegin = BC51 - srcEnd = BC59 - destBegin = 9372 -End of Item 00E0 - -Begin of Item 00E1 - Format 0 - srcBegin = BC5E - srcEnd = BC83 - destBegin = 9384 -End of Item 00E1 - -Begin of Item 00E2 - Format 0 - srcBegin = BCA9 - srcEnd = BCAF - destBegin = 93BF -End of Item 00E2 - -Begin of Item 00E3 - Format 0 - srcBegin = BCB6 - srcEnd = BCBB - destBegin = 93C7 -End of Item 00E3 - -Begin of Item 00E4 - Format 0 - srcBegin = BCC5 - srcEnd = BCCC - destBegin = 93D2 -End of Item 00E4 - -Begin of Item 00E5 - Format 0 - srcBegin = BCDD - srcEnd = BCF3 - destBegin = 93E3 -End of Item 00E5 - -Begin of Item 00E6 - Format 0 - srcBegin = BCFE - srcEnd = BD03 - destBegin = 9441 -End of Item 00E6 - -Begin of Item 00E7 - Format 0 - srcBegin = BD0A - srcEnd = BD0F - destBegin = 9449 -End of Item 00E7 - -Begin of Item 00E8 - Format 0 - srcBegin = BD15 - srcEnd = BD1D - destBegin = 9452 -End of Item 00E8 - -Begin of Item 00E9 - Format 0 - srcBegin = BD1E - srcEnd = BD23 - destBegin = 9461 -End of Item 00E9 - -Begin of Item 00EA - Format 0 - srcBegin = BD25 - srcEnd = BD2B - destBegin = 9467 -End of Item 00EA - -Begin of Item 00EB - Format 0 - srcBegin = BD2D - srcEnd = BD39 - destBegin = 946E -End of Item 00EB - -Begin of Item 00EC - Format 0 - srcBegin = BD3A - srcEnd = BD3F - destBegin = 9481 -End of Item 00EC - -Begin of Item 00ED - Format 0 - srcBegin = BD41 - srcEnd = BD47 - destBegin = 9487 -End of Item 00ED - -Begin of Item 00EE - Format 0 - srcBegin = BD51 - srcEnd = BD57 - destBegin = 9493 -End of Item 00EE - -Begin of Item 00EF - Format 0 - srcBegin = BD5A - srcEnd = BD63 - destBegin = 949A -End of Item 00EF - -Begin of Item 00F0 - Format 0 - srcBegin = BD69 - srcEnd = BD7F - destBegin = 94A7 -End of Item 00F0 - -Begin of Item 00F1 - Format 0 - srcBegin = BD9D - srcEnd = BDA3 - destBegin = 94CD -End of Item 00F1 - -Begin of Item 00F2 - Format 0 - srcBegin = BDA5 - srcEnd = BDAF - destBegin = 94D4 -End of Item 00F2 - -Begin of Item 00F3 - Format 0 - srcBegin = BDB1 - srcEnd = BDB7 - destBegin = 94DF -End of Item 00F3 - -Begin of Item 00F4 - Format 0 - srcBegin = BDB9 - srcEnd = BDD1 - destBegin = 94E6 -End of Item 00F4 - -Begin of Item 00F5 - Format 0 - srcBegin = BDDD - srcEnd = BDE8 - destBegin = 9548 -End of Item 00F5 - -Begin of Item 00F6 - Format 0 - srcBegin = BDEA - srcEnd = BDEF - destBegin = 9554 -End of Item 00F6 - -Begin of Item 00F7 - Format 0 - srcBegin = BDF9 - srcEnd = BDFF - destBegin = 9566 -End of Item 00F7 - -Begin of Item 00F8 - Format 0 - srcBegin = BE06 - srcEnd = BE0B - destBegin = 9570 -End of Item 00F8 - -Begin of Item 00F9 - Format 0 - srcBegin = BE15 - srcEnd = BE1B - destBegin = 9581 -End of Item 00F9 - -Begin of Item 00FA - Format 0 - srcBegin = BE20 - srcEnd = BE43 - destBegin = 9589 -End of Item 00FA - -Begin of Item 00FB - Format 0 - srcBegin = BE85 - srcEnd = BE8B - destBegin = 95D4 -End of Item 00FB - -Begin of Item 00FC - Format 0 - srcBegin = BE92 - srcEnd = BE97 - destBegin = 95DC -End of Item 00FC - -Begin of Item 00FD - Format 0 - srcBegin = BE9A - srcEnd = BEA7 - destBegin = 95E2 -End of Item 00FD - -Begin of Item 00FE - Format 0 - srcBegin = BEA9 - srcEnd = BEB7 - destBegin = 95F0 -End of Item 00FE - -Begin of Item 00FF - Format 0 - srcBegin = BEB8 - srcEnd = BECF - destBegin = 9641 -End of Item 00FF - -Begin of Item 0100 - Format 0 - srcBegin = BED9 - srcEnd = BEDF - destBegin = 9663 -End of Item 0100 - -Begin of Item 0101 - Format 0 - srcBegin = BEE6 - srcEnd = BEEB - destBegin = 966C -End of Item 0101 - -Begin of Item 0102 - Format 0 - srcBegin = BEED - srcEnd = BEF5 - destBegin = 9672 -End of Item 0102 - -Begin of Item 0103 - Format 0 - srcBegin = BEF6 - srcEnd = BF00 - destBegin = 9681 -End of Item 0103 - -Begin of Item 0104 - Format 0 - srcBegin = BF02 - srcEnd = BF07 - destBegin = 968C -End of Item 0104 - -Begin of Item 0105 - Format 0 - srcBegin = BF0A - srcEnd = BF17 - destBegin = 9692 -End of Item 0105 - -Begin of Item 0106 - Format 0 - srcBegin = BF1E - srcEnd = BF3F - destBegin = 96A1 -End of Item 0106 - -Begin of Item 0107 - Format 0 - srcBegin = BF49 - srcEnd = BF4F - destBegin = 96C8 -End of Item 0107 - -Begin of Item 0108 - Format 0 - srcBegin = BF56 - srcEnd = BF82 - destBegin = 96D2 -End of Item 0108 - -Begin of Item 0109 - Format 0 - srcBegin = BF83 - srcEnd = BF93 - destBegin = 9741 -End of Item 0109 - -Begin of Item 010A - Format 0 - srcBegin = BF95 - srcEnd = BF9D - destBegin = 9752 -End of Item 010A - -Begin of Item 010B - Format 0 - srcBegin = BF9E - srcEnd = BFAF - destBegin = 9761 -End of Item 010B - -Begin of Item 010C - Format 0 - srcBegin = BFB1 - srcEnd = BFB8 - destBegin = 9773 -End of Item 010C - -Begin of Item 010D - Format 0 - srcBegin = BFB9 - srcEnd = BFC4 - destBegin = 9781 -End of Item 010D - -Begin of Item 010E - Format 0 - srcBegin = BFC6 - srcEnd = BFCB - destBegin = 978D -End of Item 010E - -Begin of Item 010F - Format 0 - srcBegin = BFD5 - srcEnd = BFDB - destBegin = 9798 -End of Item 010F - -Begin of Item 0110 - Format 0 - srcBegin = BFE2 - srcEnd = C03B - destBegin = 97A2 -End of Item 0110 - -Begin of Item 0111 - Format 0 - srcBegin = C040 - srcEnd = C050 - destBegin = 9841 -End of Item 0111 - -Begin of Item 0112 - Format 0 - srcBegin = C052 - srcEnd = C057 - destBegin = 9852 -End of Item 0112 - -Begin of Item 0113 - Format 0 - srcBegin = C061 - srcEnd = C067 - destBegin = 9864 -End of Item 0113 - -Begin of Item 0114 - Format 0 - srcBegin = C06A - srcEnd = C079 - destBegin = 986B -End of Item 0114 - -Begin of Item 0115 - Format 0 - srcBegin = C07A - srcEnd = C08F - destBegin = 9881 -End of Item 0115 - -Begin of Item 0116 - Format 0 - srcBegin = C099 - srcEnd = C09F - destBegin = 989C -End of Item 0116 - -Begin of Item 0117 - Format 0 - srcBegin = C0A6 - srcEnd = C0AB - destBegin = 98A5 -End of Item 0117 - -Begin of Item 0118 - Format 0 - srcBegin = C0D1 - srcEnd = C0D7 - destBegin = 98BE -End of Item 0118 - -Begin of Item 0119 - Format 0 - srcBegin = C0DE - srcEnd = C0E3 - destBegin = 98C6 -End of Item 0119 - -Begin of Item 011A - Format 0 - srcBegin = C0ED - srcEnd = C0F3 - destBegin = 98D1 -End of Item 011A - -Begin of Item 011B - Format 0 - srcBegin = C0FA - srcEnd = C0FF - destBegin = 98DA -End of Item 011B - -Begin of Item 011C - Format 0 - srcBegin = C109 - srcEnd = C10F - destBegin = 98E6 -End of Item 011C - -Begin of Item 011D - Format 0 - srcBegin = C116 - srcEnd = C11B - destBegin = 98F1 -End of Item 011D - -Begin of Item 011E - Format 0 - srcBegin = C141 - srcEnd = C147 - destBegin = 994B -End of Item 011E - -Begin of Item 011F - Format 0 - srcBegin = C14E - srcEnd = C153 - destBegin = 9953 -End of Item 011F - -Begin of Item 0120 - Format 0 - srcBegin = C15D - srcEnd = C163 - destBegin = 9964 -End of Item 0120 - -Begin of Item 0121 - Format 0 - srcBegin = C16A - srcEnd = C16F - destBegin = 996C -End of Item 0121 - -Begin of Item 0122 - Format 0 - srcBegin = C17C - srcEnd = C184 - destBegin = 9981 -End of Item 0122 - -Begin of Item 0123 - Format 0 - srcBegin = C186 - srcEnd = C18B - destBegin = 998A -End of Item 0123 - -Begin of Item 0124 - Format 0 - srcBegin = C1B1 - srcEnd = C1BC - destBegin = 99A6 -End of Item 0124 - -Begin of Item 0125 - Format 0 - srcBegin = C1BE - srcEnd = C1C3 - destBegin = 99B2 -End of Item 0125 - -Begin of Item 0126 - Format 0 - srcBegin = C1CD - srcEnd = C1D3 - destBegin = 99BE -End of Item 0126 - -Begin of Item 0127 - Format 0 - srcBegin = C1D9 - srcEnd = C1DF - destBegin = 99C7 -End of Item 0127 - -Begin of Item 0128 - Format 0 - srcBegin = C1E9 - srcEnd = C1EF - destBegin = 99D4 -End of Item 0128 - -Begin of Item 0129 - Format 0 - srcBegin = C1F4 - srcEnd = C1FB - destBegin = 99DC -End of Item 0129 - -Begin of Item 012A - Format 0 - srcBegin = C205 - srcEnd = C20B - destBegin = 99E9 -End of Item 012A - -Begin of Item 012B - Format 0 - srcBegin = C212 - srcEnd = C217 - destBegin = 99F2 -End of Item 012B - -Begin of Item 012C - Format 0 - srcBegin = C235 - srcEnd = C245 - destBegin = 9A4A -End of Item 012C - -Begin of Item 012D - Format 0 - srcBegin = C249 - srcEnd = C24F - destBegin = 9A63 -End of Item 012D - -Begin of Item 012E - Format 0 - srcBegin = C259 - srcEnd = C25F - destBegin = 9A6F -End of Item 012E - -Begin of Item 012F - Format 0 - srcBegin = C275 - srcEnd = C27B - destBegin = 9A8B -End of Item 012F - -Begin of Item 0130 - Format 0 - srcBegin = C282 - srcEnd = C287 - destBegin = 9A94 -End of Item 0130 - -Begin of Item 0131 - Format 0 - srcBegin = C28A - srcEnd = C28F - destBegin = 9A9A -End of Item 0131 - -Begin of Item 0132 - Format 0 - srcBegin = C291 - srcEnd = C297 - destBegin = 9AA0 -End of Item 0132 - -Begin of Item 0133 - Format 0 - srcBegin = C29E - srcEnd = C2A3 - destBegin = 9AAA -End of Item 0133 - -Begin of Item 0134 - Format 0 - srcBegin = C2AE - srcEnd = C2B3 - destBegin = 9AB5 -End of Item 0134 - -Begin of Item 0135 - Format 0 - srcBegin = C2BA - srcEnd = C2DB - destBegin = 9ABD -End of Item 0135 - -Begin of Item 0136 - Format 0 - srcBegin = C2E5 - srcEnd = C2EA - destBegin = 9AE3 -End of Item 0136 - -Begin of Item 0137 - Format 0 - srcBegin = C301 - srcEnd = C307 - destBegin = 9AF4 -End of Item 0137 - -Begin of Item 0138 - Format 0 - srcBegin = C31D - srcEnd = C323 - destBegin = 9B49 -End of Item 0138 - -Begin of Item 0139 - Format 0 - srcBegin = C32A - srcEnd = C332 - destBegin = 9B52 -End of Item 0139 - -Begin of Item 013A - Format 0 - srcBegin = C333 - srcEnd = C344 - destBegin = 9B61 -End of Item 013A - -Begin of Item 013B - Format 0 - srcBegin = C346 - srcEnd = C34D - destBegin = 9B73 -End of Item 013B - -Begin of Item 013C - Format 0 - srcBegin = C34E - srcEnd = C367 - destBegin = 9B81 -End of Item 013C - -Begin of Item 013D - Format 0 - srcBegin = C37E - srcEnd = C383 - destBegin = 9BA8 -End of Item 013D - -Begin of Item 013E - Format 0 - srcBegin = C38D - srcEnd = C3BF - destBegin = 9BB4 -End of Item 013E - -Begin of Item 013F - Format 0 - srcBegin = C3C1 - srcEnd = C3D7 - destBegin = 9BE7 -End of Item 013F - -Begin of Item 0140 - Format 0 - srcBegin = C3EE - srcEnd = C3F3 - destBegin = 9C4D -End of Item 0140 - -Begin of Item 0141 - Format 0 - srcBegin = C3F9 - srcEnd = C3FE - destBegin = 9C55 -End of Item 0141 - -Begin of Item 0142 - Format 0 - srcBegin = C3FF - srcEnd = C407 - destBegin = 9C61 -End of Item 0142 - -Begin of Item 0143 - Format 0 - srcBegin = C409 - srcEnd = C40F - destBegin = 9C6A -End of Item 0143 - -Begin of Item 0144 - Format 0 - srcBegin = C411 - srcEnd = C41A - destBegin = 9C71 -End of Item 0144 - -Begin of Item 0145 - Format 0 - srcBegin = C41B - srcEnd = C423 - destBegin = 9C81 -End of Item 0145 - -Begin of Item 0146 - Format 0 - srcBegin = C425 - srcEnd = C42B - destBegin = 9C8A -End of Item 0146 - -Begin of Item 0147 - Format 0 - srcBegin = C435 - srcEnd = C43B - destBegin = 9C97 -End of Item 0147 - -Begin of Item 0148 - Format 0 - srcBegin = C43E - srcEnd = C447 - destBegin = 9C9E -End of Item 0148 - -Begin of Item 0149 - Format 0 - srcBegin = C449 - srcEnd = C463 - destBegin = 9CA8 -End of Item 0149 - -Begin of Item 014A - Format 0 - srcBegin = C46D - srcEnd = C473 - destBegin = 9CC8 -End of Item 014A - -Begin of Item 014B - Format 0 - srcBegin = C47A - srcEnd = C47F - destBegin = 9CD2 -End of Item 014B - -Begin of Item 014C - Format 0 - srcBegin = C481 - srcEnd = C493 - destBegin = 9CD8 -End of Item 014C - -Begin of Item 014D - Format 0 - srcBegin = C495 - srcEnd = C49B - destBegin = 9CEB -End of Item 014D - -Begin of Item 014E - Format 0 - srcBegin = C49D - srcEnd = C4A9 - destBegin = 9CF2 -End of Item 014E - -Begin of Item 014F - Format 0 - srcBegin = C4AA - srcEnd = C4B7 - destBegin = 9D41 -End of Item 014F - -Begin of Item 0150 - Format 0 - srcBegin = C4BD - srcEnd = C4C5 - destBegin = 9D52 -End of Item 0150 - -Begin of Item 0151 - Format 0 - srcBegin = C4C6 - srcEnd = C4DF - destBegin = 9D61 -End of Item 0151 - -Begin of Item 0152 - Format 0 - srcBegin = C4E0 - srcEnd = C4E8 - destBegin = 9D81 -End of Item 0152 - -Begin of Item 0153 - Format 0 - srcBegin = C4EA - srcEnd = C4EF - destBegin = 9D8A -End of Item 0153 - -Begin of Item 0154 - Format 0 - srcBegin = C502 - srcEnd = C50B - destBegin = 9D9A -End of Item 0154 - -Begin of Item 0155 - Format 0 - srcBegin = C515 - srcEnd = C51B - destBegin = 9DAA -End of Item 0155 - -Begin of Item 0156 - Format 0 - srcBegin = C51D - srcEnd = C527 - destBegin = 9DB1 -End of Item 0156 - -Begin of Item 0157 - Format 0 - srcBegin = C531 - srcEnd = C537 - destBegin = 9DC1 -End of Item 0157 - -Begin of Item 0158 - Format 0 - srcBegin = C53E - srcEnd = C543 - destBegin = 9DCA -End of Item 0158 - -Begin of Item 0159 - Format 0 - srcBegin = C569 - srcEnd = C56F - destBegin = 9DE1 -End of Item 0159 - -Begin of Item 015A - Format 0 - srcBegin = C576 - srcEnd = C57B - destBegin = 9DE9 -End of Item 015A - -Begin of Item 015B - Format 0 - srcBegin = C5A1 - srcEnd = C5A8 - destBegin = 9E48 -End of Item 015B - -Begin of Item 015C - Format 0 - srcBegin = C5AA - srcEnd = C5B3 - destBegin = 9E50 -End of Item 015C - -Begin of Item 015D - Format 0 - srcBegin = C5C4 - srcEnd = C5CA - destBegin = BEF6 -End of Item 015D - -Begin of Item 015E - Format 0 - srcBegin = C5D9 - srcEnd = C5DF - destBegin = 9E70 -End of Item 015E - -Begin of Item 015F - Format 0 - srcBegin = C5FC - srcEnd = C601 - destBegin = BFB0 -End of Item 015F - -Begin of Item 0160 - Format 0 - srcBegin = C611 - srcEnd = C617 - destBegin = 9E97 -End of Item 0160 - -Begin of Item 0161 - Format 0 - srcBegin = C61D - srcEnd = C623 - destBegin = 9E9F -End of Item 0161 - -Begin of Item 0162 - Format 0 - srcBegin = C649 - srcEnd = C64F - destBegin = 9EBA -End of Item 0162 - -Begin of Item 0163 - Format 0 - srcBegin = C656 - srcEnd = C65B - destBegin = 9EC2 -End of Item 0163 - -Begin of Item 0164 - Format 0 - srcBegin = C661 - srcEnd = C66B - destBegin = 9ECA -End of Item 0164 - -Begin of Item 0165 - Format 0 - srcBegin = C672 - srcEnd = C677 - destBegin = 9ED8 -End of Item 0165 - -Begin of Item 0166 - Format 0 - srcBegin = C681 - srcEnd = C687 - destBegin = 9EE3 -End of Item 0166 - -Begin of Item 0167 - Format 0 - srcBegin = C68E - srcEnd = C693 - destBegin = 9EEC -End of Item 0167 - -Begin of Item 0168 - Format 0 - srcBegin = C69D - srcEnd = C6A3 - destBegin = 9EF7 -End of Item 0168 - -Begin of Item 0169 - Format 0 - srcBegin = C6AA - srcEnd = C6AF - destBegin = 9F42 -End of Item 0169 - -Begin of Item 016A - Format 0 - srcBegin = C6C6 - srcEnd = C6CB - destBegin = 9F54 -End of Item 016A - -Begin of Item 016B - Format 0 - srcBegin = C6D5 - srcEnd = C6DB - destBegin = 9F65 -End of Item 016B - -Begin of Item 016C - Format 0 - srcBegin = C6E2 - srcEnd = C6E7 - destBegin = 9F6E -End of Item 016C - -Begin of Item 016D - Format 0 - srcBegin = C6FE - srcEnd = C703 - destBegin = 9F89 -End of Item 016D - -Begin of Item 016E - Format 0 - srcBegin = C70D - srcEnd = C713 - destBegin = 9F94 -End of Item 016E - -Begin of Item 016F - Format 0 - srcBegin = C71A - srcEnd = C71F - destBegin = 9F9D -End of Item 016F - -Begin of Item 0170 - Format 0 - srcBegin = C729 - srcEnd = C72F - destBegin = 9FA8 -End of Item 0170 - -Begin of Item 0171 - Format 0 - srcBegin = C751 - srcEnd = C758 - destBegin = C0C0 -End of Item 0171 - -Begin of Item 0172 - Format 0 - srcBegin = C761 - srcEnd = C767 - destBegin = 9FC9 -End of Item 0172 - -Begin of Item 0173 - Format 0 - srcBegin = C76C - srcEnd = C773 - destBegin = 9FD2 -End of Item 0173 - -Begin of Item 0174 - Format 0 - srcBegin = C7C2 - srcEnd = C7C7 - destBegin = A046 -End of Item 0174 - -Begin of Item 0175 - Format 0 - srcBegin = C7D1 - srcEnd = C7D7 - destBegin = A050 -End of Item 0175 - -Begin of Item 0176 - Format 0 - srcBegin = C7DE - srcEnd = C7E3 - destBegin = A061 -End of Item 0176 - -Begin of Item 0177 - Format 0 - srcBegin = C7ED - srcEnd = C7FA - destBegin = A06D -End of Item 0177 - -Begin of Item 0178 - Format 0 - srcBegin = C825 - srcEnd = C82B - destBegin = A09D -End of Item 0178 - -Begin of Item 0179 - Format 0 - srcBegin = C832 - srcEnd = C837 - destBegin = A0A6 -End of Item 0179 - -Begin of Item 017A - Format 0 - srcBegin = C841 - srcEnd = C847 - destBegin = A0B2 -End of Item 017A - -Begin of Item 017B - Format 0 - srcBegin = C84E - srcEnd = C853 - destBegin = A0BB -End of Item 017B - -Begin of Item 017C - Format 0 - srcBegin = C855 - srcEnd = C86F - destBegin = A0C1 -End of Item 017C - -Begin of Item 017D - Format 0 - srcBegin = C88E - srcEnd = C893 - destBegin = A0EC -End of Item 017D - -Begin of Item 017E - Format 0 - srcBegin = C895 - srcEnd = C89C - destBegin = A0F2 -End of Item 017E - -Begin of Item 017F - Format 0 - srcBegin = C8A9 - srcEnd = C8BB - destBegin = A144 -End of Item 017F - -Begin of Item 0180 - Format 0 - srcBegin = C8CD - srcEnd = C8D3 - destBegin = A169 -End of Item 0180 - -Begin of Item 0181 - Format 0 - srcBegin = C8DA - srcEnd = C8DF - destBegin = A172 -End of Item 0181 - -Begin of Item 0182 - Format 0 - srcBegin = C8E6 - srcEnd = C8F4 - destBegin = A181 -End of Item 0182 - -Begin of Item 0183 - Format 0 - srcBegin = C8F6 - srcEnd = C8FB - destBegin = A190 -End of Item 0183 - -Begin of Item 0184 - Format 0 - srcBegin = C912 - srcEnd = C917 - destBegin = A242 -End of Item 0184 - -Begin of Item 0185 - Format 0 - srcBegin = C919 - srcEnd = C92B - destBegin = A248 -End of Item 0185 - -Begin of Item 0186 - Format 0 - srcBegin = C92D - srcEnd = C933 - destBegin = A261 -End of Item 0186 - -Begin of Item 0187 - Format 0 - srcBegin = C935 - srcEnd = C947 - destBegin = A268 -End of Item 0187 - -Begin of Item 0188 - Format 0 - srcBegin = C948 - srcEnd = C94F - destBegin = A281 -End of Item 0188 - -Begin of Item 0189 - Format 0 - srcBegin = C959 - srcEnd = C95F - destBegin = A28E -End of Item 0189 - -Begin of Item 018A - Format 0 - srcBegin = C964 - srcEnd = C96B - destBegin = A296 -End of Item 018A - -Begin of Item 018B - Format 0 - srcBegin = C975 - srcEnd = C97B - destBegin = A344 -End of Item 018B - -Begin of Item 018C - Format 0 - srcBegin = C97D - srcEnd = C987 - destBegin = A34B -End of Item 018C - -Begin of Item 018D - Format 0 - srcBegin = C991 - srcEnd = C997 - destBegin = A361 -End of Item 018D - -Begin of Item 018E - Format 0 - srcBegin = C99E - srcEnd = C9AE - destBegin = A36A -End of Item 018E - -Begin of Item 018F - Format 0 - srcBegin = C9AF - srcEnd = C9BF - destBegin = A381 -End of Item 018F - -Begin of Item 0190 - Format 0 - srcBegin = C9F2 - srcEnd = C9F7 - destBegin = A44C -End of Item 0190 - -Begin of Item 0191 - Format 0 - srcBegin = CA0E - srcEnd = CA13 - destBegin = A465 -End of Item 0191 - -Begin of Item 0192 - Format 0 - srcBegin = CA19 - srcEnd = CA25 - destBegin = A46E -End of Item 0192 - -Begin of Item 0193 - Format 0 - srcBegin = CA2A - srcEnd = CA46 - destBegin = A484 -End of Item 0193 - -Begin of Item 0194 - Format 0 - srcBegin = CA55 - srcEnd = CA5B - destBegin = A54B -End of Item 0194 - -Begin of Item 0195 - Format 0 - srcBegin = CA62 - srcEnd = CA67 - destBegin = A553 -End of Item 0195 - -Begin of Item 0196 - Format 0 - srcBegin = CA6B - srcEnd = CA7C - destBegin = A561 -End of Item 0196 - -Begin of Item 0197 - Format 0 - srcBegin = CA7E - srcEnd = CA83 - destBegin = A573 -End of Item 0197 - -Begin of Item 0198 - Format 0 - srcBegin = CA87 - srcEnd = CA97 - destBegin = A581 -End of Item 0198 - -Begin of Item 0199 - Format 0 - srcBegin = CA99 - srcEnd = CAA7 - destBegin = A592 -End of Item 0199 - -Begin of Item 019A - Format 0 - srcBegin = CAA8 - srcEnd = CABB - destBegin = A641 -End of Item 019A - -Begin of Item 019B - Format 0 - srcBegin = CAC6 - srcEnd = CACB - destBegin = A661 -End of Item 019B - -Begin of Item 019C - Format 0 - srcBegin = CADA - srcEnd = CADF - destBegin = A66E -End of Item 019C - -Begin of Item 019D - Format 0 - srcBegin = CAE1 - srcEnd = CAE7 - destBegin = A674 -End of Item 019D - -Begin of Item 019E - Format 0 - srcBegin = CAED - srcEnd = CAF3 - destBegin = A685 -End of Item 019E - -Begin of Item 019F - Format 0 - srcBegin = CAF5 - srcEnd = CB07 - destBegin = A68C -End of Item 019F - -Begin of Item 01A0 - Format 0 - srcBegin = CB19 - srcEnd = CB1F - destBegin = A74C -End of Item 01A0 - -Begin of Item 01A1 - Format 0 - srcBegin = CB22 - srcEnd = CB29 - destBegin = A753 -End of Item 01A1 - -Begin of Item 01A2 - Format 0 - srcBegin = CB2A - srcEnd = CB40 - destBegin = A761 -End of Item 01A2 - -Begin of Item 01A3 - Format 0 - srcBegin = CB51 - srcEnd = CB57 - destBegin = A789 -End of Item 01A3 - -Begin of Item 01A4 - Format 0 - srcBegin = CB5E - srcEnd = CB63 - destBegin = A793 -End of Item 01A4 - -Begin of Item 01A5 - Format 0 - srcBegin = CB65 - srcEnd = CB6C - destBegin = A799 -End of Item 01A5 - -Begin of Item 01A6 - Format 0 - srcBegin = CB6D - srcEnd = CB77 - destBegin = A841 -End of Item 01A6 - -Begin of Item 01A7 - Format 0 - srcBegin = CB7A - srcEnd = CB88 - destBegin = A84C -End of Item 01A7 - -Begin of Item 01A8 - Format 0 - srcBegin = CB89 - srcEnd = CB9B - destBegin = A861 -End of Item 01A8 - -Begin of Item 01A9 - Format 0 - srcBegin = CB9D - srcEnd = CBA3 - destBegin = A874 -End of Item 01A9 - -Begin of Item 01AA - Format 0 - srcBegin = CBA4 - srcEnd = CBB7 - destBegin = A881 -End of Item 01AA - -Begin of Item 01AB - Format 0 - srcBegin = CBB9 - srcEnd = CBC4 - destBegin = A895 -End of Item 01AB - -Begin of Item 01AC - Format 0 - srcBegin = CBC5 - srcEnd = CBD3 - destBegin = A941 -End of Item 01AC - -Begin of Item 01AD - Format 0 - srcBegin = CBD5 - srcEnd = CBDF - destBegin = A950 -End of Item 01AD - -Begin of Item 01AE - Format 0 - srcBegin = CBEA - srcEnd = CBFC - destBegin = A968 -End of Item 01AE - -Begin of Item 01AF - Format 0 - srcBegin = CBFD - srcEnd = CC0B - destBegin = A981 -End of Item 01AF - -Begin of Item 01B0 - Format 0 - srcBegin = CC15 - srcEnd = CC1B - destBegin = A995 -End of Item 01B0 - -Begin of Item 01B1 - Format 0 - srcBegin = CC31 - srcEnd = CC37 - destBegin = AA47 -End of Item 01B1 - -Begin of Item 01B2 - Format 0 - srcBegin = CC5A - srcEnd = CC5F - destBegin = AA67 -End of Item 01B2 - -Begin of Item 01B3 - Format 0 - srcBegin = CC69 - srcEnd = CC6F - destBegin = AA72 -End of Item 01B3 - -Begin of Item 01B4 - Format 0 - srcBegin = CC76 - srcEnd = CC93 - destBegin = AA83 -End of Item 01B4 - -Begin of Item 01B5 - Format 0 - srcBegin = CCA1 - srcEnd = CCA7 - destBegin = AB4A -End of Item 01B5 - -Begin of Item 01B6 - Format 0 - srcBegin = CCAE - srcEnd = CCB3 - destBegin = AB52 -End of Item 01B6 - -Begin of Item 01B7 - Format 0 - srcBegin = CCBD - srcEnd = CCC3 - destBegin = AB63 -End of Item 01B7 - -Begin of Item 01B8 - Format 0 - srcBegin = CCCA - srcEnd = CCCF - destBegin = AB6C -End of Item 01B8 - -Begin of Item 01B9 - Format 0 - srcBegin = CCD5 - srcEnd = CCDA - destBegin = AB75 -End of Item 01B9 - -Begin of Item 01BA - Format 0 - srcBegin = CCDB - srcEnd = CCE3 - destBegin = AB81 -End of Item 01BA - -Begin of Item 01BB - Format 0 - srcBegin = CCE5 - srcEnd = CCEB - destBegin = AB8A -End of Item 01BB - -Begin of Item 01BC - Format 0 - srcBegin = CCF1 - srcEnd = CCFD - destBegin = AB94 -End of Item 01BC - -Begin of Item 01BD - Format 0 - srcBegin = CD02 - srcEnd = CD07 - destBegin = AC44 -End of Item 01BD - -Begin of Item 01BE - Format 0 - srcBegin = CD11 - srcEnd = CD17 - destBegin = AC4F -End of Item 01BE - -Begin of Item 01BF - Format 0 - srcBegin = CD2D - srcEnd = CD38 - destBegin = AC6A -End of Item 01BF - -Begin of Item 01C0 - Format 0 - srcBegin = CD3F - srcEnd = CD5B - destBegin = AC81 -End of Item 01C0 - -Begin of Item 01C1 - Format 0 - srcBegin = CD65 - srcEnd = CD6B - destBegin = AD44 -End of Item 01C1 - -Begin of Item 01C2 - Format 0 - srcBegin = CD72 - srcEnd = CD77 - destBegin = AD4D -End of Item 01C2 - -Begin of Item 01C3 - Format 0 - srcBegin = CD79 - srcEnd = CD80 - destBegin = AD53 -End of Item 01C3 - -Begin of Item 01C4 - Format 0 - srcBegin = CD81 - srcEnd = CD87 - destBegin = AD61 -End of Item 01C4 - -Begin of Item 01C5 - Format 0 - srcBegin = CD89 - srcEnd = CD93 - destBegin = AD68 -End of Item 01C5 - -Begin of Item 01C6 - Format 0 - srcBegin = CDAA - srcEnd = CDAF - destBegin = AD87 -End of Item 01C6 - -Begin of Item 01C7 - Format 0 - srcBegin = CDB1 - srcEnd = CDC3 - destBegin = AD8D -End of Item 01C7 - -Begin of Item 01C8 - Format 0 - srcBegin = CDC6 - srcEnd = CDCB - destBegin = AE41 -End of Item 01C8 - -Begin of Item 01C9 - Format 0 - srcBegin = CDD1 - srcEnd = CDE1 - destBegin = AE4A -End of Item 01C9 - -Begin of Item 01CA - Format 0 - srcBegin = CDE2 - srcEnd = CDE7 - destBegin = AE61 -End of Item 01CA - -Begin of Item 01CB - Format 0 - srcBegin = CDF1 - srcEnd = CDF7 - destBegin = AE6D -End of Item 01CB - -Begin of Item 01CC - Format 0 - srcBegin = CE0D - srcEnd = CE13 - destBegin = AE88 -End of Item 01CC - -Begin of Item 01CD - Format 0 - srcBegin = CE1A - srcEnd = CE1F - destBegin = AE93 -End of Item 01CD - -Begin of Item 01CE - Format 0 - srcBegin = CE36 - srcEnd = CE49 - destBegin = AF47 -End of Item 01CE - -Begin of Item 01CF - Format 0 - srcBegin = CE4A - srcEnd = CE57 - destBegin = AF61 -End of Item 01CF - -Begin of Item 01D0 - Format 0 - srcBegin = CE62 - srcEnd = CE67 - destBegin = AF73 -End of Item 01D0 - -Begin of Item 01D1 - Format 0 - srcBegin = CE6E - srcEnd = CE73 - destBegin = AF81 -End of Item 01D1 - -Begin of Item 01D2 - Format 0 - srcBegin = CE7D - srcEnd = CE83 - destBegin = AF8C -End of Item 01D2 - -Begin of Item 01D3 - Format 0 - srcBegin = CE8A - srcEnd = CE8F - destBegin = AF95 -End of Item 01D3 - -Begin of Item 01D4 - Format 0 - srcBegin = CE9A - srcEnd = CE9F - destBegin = B041 -End of Item 01D4 - -Begin of Item 01D5 - Format 0 - srcBegin = CEA6 - srcEnd = CEAB - destBegin = B048 -End of Item 01D5 - -Begin of Item 01D6 - Format 0 - srcBegin = CEAE - srcEnd = CEBA - destBegin = B04E -End of Item 01D6 - -Begin of Item 01D7 - Format 0 - srcBegin = CEBB - srcEnd = CEC0 - destBegin = B061 -End of Item 01D7 - -Begin of Item 01D8 - Format 0 - srcBegin = CEC2 - srcEnd = CED5 - destBegin = B067 -End of Item 01D8 - -Begin of Item 01D9 - Format 0 - srcBegin = CED6 - srcEnd = CEE3 - destBegin = B081 -End of Item 01D9 - -Begin of Item 01DA - Format 0 - srcBegin = CEED - srcEnd = CEF3 - destBegin = B093 -End of Item 01DA - -Begin of Item 01DB - Format 0 - srcBegin = CEFA - srcEnd = CEFF - destBegin = B09B -End of Item 01DB - -Begin of Item 01DC - Format 0 - srcBegin = CF09 - srcEnd = CF0F - destBegin = B146 -End of Item 01DC - -Begin of Item 01DD - Format 0 - srcBegin = CF16 - srcEnd = CF1B - destBegin = B14F -End of Item 01DD - -Begin of Item 01DE - Format 0 - srcBegin = CF25 - srcEnd = CF2B - destBegin = B161 -End of Item 01DE - -Begin of Item 01DF - Format 0 - srcBegin = CF32 - srcEnd = CF37 - destBegin = B169 -End of Item 01DF - -Begin of Item 01E0 - Format 0 - srcBegin = CF39 - srcEnd = CF44 - destBegin = B16F -End of Item 01E0 - -Begin of Item 01E1 - Format 0 - srcBegin = CF45 - srcEnd = CF53 - destBegin = B181 -End of Item 01E1 - -Begin of Item 01E2 - Format 0 - srcBegin = CF5D - srcEnd = CF63 - destBegin = B195 -End of Item 01E2 - -Begin of Item 01E3 - Format 0 - srcBegin = CF79 - srcEnd = CF7F - destBegin = B249 -End of Item 01E3 - -Begin of Item 01E4 - Format 0 - srcBegin = CF86 - srcEnd = CF8B - destBegin = B254 -End of Item 01E4 - -Begin of Item 01E5 - Format 0 - srcBegin = CF8E - srcEnd = CFA0 - destBegin = B261 -End of Item 01E5 - -Begin of Item 01E6 - Format 0 - srcBegin = CFA2 - srcEnd = CFA7 - destBegin = B274 -End of Item 01E6 - -Begin of Item 01E7 - Format 0 - srcBegin = CFAA - srcEnd = CFAF - destBegin = B281 -End of Item 01E7 - -Begin of Item 01E8 - Format 0 - srcBegin = CFB1 - srcEnd = CFC3 - destBegin = B287 -End of Item 01E8 - -Begin of Item 01E9 - Format 0 - srcBegin = CFC5 - srcEnd = CFCB - destBegin = B29A -End of Item 01E9 - -Begin of Item 01EA - Format 0 - srcBegin = CFCC - srcEnd = CFDF - destBegin = B341 -End of Item 01EA - -Begin of Item 01EB - Format 0 - srcBegin = CFEA - srcEnd = CFEF - destBegin = B361 -End of Item 01EB - -Begin of Item 01EC - Format 0 - srcBegin = CFF6 - srcEnd = CFFB - destBegin = B369 -End of Item 01EC - -Begin of Item 01ED - Format 0 - srcBegin = D005 - srcEnd = D00A - destBegin = B375 -End of Item 01ED - -Begin of Item 01EE - Format 0 - srcBegin = D00B - srcEnd = D010 - destBegin = B381 -End of Item 01EE - -Begin of Item 01EF - Format 0 - srcBegin = D012 - srcEnd = D017 - destBegin = B387 -End of Item 01EF - -Begin of Item 01F0 - Format 0 - srcBegin = D019 - srcEnd = D02C - destBegin = B38D -End of Item 01F0 - -Begin of Item 01F1 - Format 0 - srcBegin = D02E - srcEnd = D033 - destBegin = B441 -End of Item 01F1 - -Begin of Item 01F2 - Format 0 - srcBegin = D03D - srcEnd = D043 - destBegin = B44C -End of Item 01F2 - -Begin of Item 01F3 - Format 0 - srcBegin = D04A - srcEnd = D04F - destBegin = B455 -End of Item 01F3 - -Begin of Item 01F4 - Format 0 - srcBegin = D059 - srcEnd = D05F - destBegin = B467 -End of Item 01F4 - -Begin of Item 01F5 - Format 0 - srcBegin = D061 - srcEnd = D06B - destBegin = B46E -End of Item 01F5 - -Begin of Item 01F6 - Format 0 - srcBegin = D075 - srcEnd = D07B - destBegin = B484 -End of Item 01F6 - -Begin of Item 01F7 - Format 0 - srcBegin = D082 - srcEnd = D094 - destBegin = B48E -End of Item 01F7 - -Begin of Item 01F8 - Format 0 - srcBegin = D095 - srcEnd = D0A3 - destBegin = B541 -End of Item 01F8 - -Begin of Item 01F9 - Format 0 - srcBegin = D0AD - srcEnd = D0B2 - destBegin = B555 -End of Item 01F9 - -Begin of Item 01FA - Format 0 - srcBegin = D0BA - srcEnd = D0BF - destBegin = B564 -End of Item 01FA - -Begin of Item 01FB - Format 0 - srcBegin = D0CA - srcEnd = D0CF - destBegin = B56F -End of Item 01FB - -Begin of Item 01FC - Format 0 - srcBegin = D0E5 - srcEnd = D0EB - destBegin = B587 -End of Item 01FC - -Begin of Item 01FD - Format 0 - srcBegin = D0F2 - srcEnd = D0F7 - destBegin = B58F -End of Item 01FD - -Begin of Item 01FE - Format 0 - srcBegin = D0F9 - srcEnd = D104 - destBegin = B595 -End of Item 01FE - -Begin of Item 01FF - Format 0 - srcBegin = D105 - srcEnd = D10C - destBegin = B641 -End of Item 01FF - -Begin of Item 0200 - Format 0 - srcBegin = D10E - srcEnd = D11F - destBegin = B649 -End of Item 0200 - -Begin of Item 0201 - Format 0 - srcBegin = D120 - srcEnd = D12F - destBegin = B661 -End of Item 0201 - -Begin of Item 0202 - Format 0 - srcBegin = D146 - srcEnd = D14B - destBegin = B683 -End of Item 0202 - -Begin of Item 0203 - Format 0 - srcBegin = D155 - srcEnd = D15B - destBegin = B68E -End of Item 0203 - -Begin of Item 0204 - Format 0 - srcBegin = D162 - srcEnd = D167 - destBegin = B697 -End of Item 0204 - -Begin of Item 0205 - Format 0 - srcBegin = D16E - srcEnd = D17B - destBegin = B741 -End of Item 0205 - -Begin of Item 0206 - Format 0 - srcBegin = D17D - srcEnd = D183 - destBegin = B74F -End of Item 0206 - -Begin of Item 0207 - Format 0 - srcBegin = D18B - srcEnd = D19F - destBegin = B761 -End of Item 0207 - -Begin of Item 0208 - Format 0 - srcBegin = D1A9 - srcEnd = D1AF - destBegin = B781 -End of Item 0208 - -Begin of Item 0209 - Format 0 - srcBegin = D1C1 - srcEnd = D1CF - destBegin = B792 -End of Item 0209 - -Begin of Item 020A - Format 0 - srcBegin = D1D0 - srcEnd = D1D7 - destBegin = B841 -End of Item 020A - -Begin of Item 020B - Format 0 - srcBegin = D1D9 - srcEnd = D1EA - destBegin = B849 -End of Item 020B - -Begin of Item 020C - Format 0 - srcBegin = D1EB - srcEnd = D1F3 - destBegin = B861 -End of Item 020C - -Begin of Item 020D - Format 0 - srcBegin = D1F9 - srcEnd = D206 - destBegin = B86D -End of Item 020D - -Begin of Item 020E - Format 0 - srcBegin = D20A - srcEnd = D20F - destBegin = B882 -End of Item 020E - -Begin of Item 020F - Format 0 - srcBegin = D211 - srcEnd = D229 - destBegin = B888 -End of Item 020F - -Begin of Item 0210 - Format 0 - srcBegin = D235 - srcEnd = D23B - destBegin = B948 -End of Item 0210 - -Begin of Item 0211 - Format 0 - srcBegin = D242 - srcEnd = D247 - destBegin = B951 -End of Item 0211 - -Begin of Item 0212 - Format 0 - srcBegin = D24D - srcEnd = D25B - destBegin = B961 -End of Item 0212 - -Begin of Item 0213 - Format 0 - srcBegin = D25D - srcEnd = D263 - destBegin = B970 -End of Item 0213 - -Begin of Item 0214 - Format 0 - srcBegin = D269 - srcEnd = D27F - destBegin = B981 -End of Item 0214 - -Begin of Item 0215 - Format 0 - srcBegin = D296 - srcEnd = D29B - destBegin = BA47 -End of Item 0215 - -Begin of Item 0216 - Format 0 - srcBegin = D2A5 - srcEnd = D2AB - destBegin = BA53 -End of Item 0216 - -Begin of Item 0217 - Format 0 - srcBegin = D2B2 - srcEnd = D2B7 - destBegin = BA64 -End of Item 0217 - -Begin of Item 0218 - Format 0 - srcBegin = D2CC - srcEnd = D2D1 - destBegin = BA75 -End of Item 0218 - -Begin of Item 0219 - Format 0 - srcBegin = D2DD - srcEnd = D2E3 - destBegin = BA89 -End of Item 0219 - -Begin of Item 021A - Format 0 - srcBegin = D2E6 - srcEnd = D2EF - destBegin = BA90 -End of Item 021A - -Begin of Item 021B - Format 0 - srcBegin = D306 - srcEnd = D30B - destBegin = BB48 -End of Item 021B - -Begin of Item 021C - Format 0 - srcBegin = D331 - srcEnd = D337 - destBegin = BB69 -End of Item 021C - -Begin of Item 021D - Format 0 - srcBegin = D33E - srcEnd = D343 - destBegin = BB71 -End of Item 021D - -Begin of Item 021E - Format 0 - srcBegin = D34A - srcEnd = D369 - destBegin = BB81 -End of Item 021E - -Begin of Item 021F - Format 0 - srcBegin = D36A - srcEnd = D37B - destBegin = BC41 -End of Item 021F - -Begin of Item 0220 - Format 0 - srcBegin = D392 - srcEnd = D397 - destBegin = BC66 -End of Item 0220 - -Begin of Item 0221 - Format 0 - srcBegin = D3A1 - srcEnd = D3A7 - destBegin = BC71 -End of Item 0221 - -Begin of Item 0222 - Format 0 - srcBegin = D3BD - srcEnd = D3C3 - destBegin = BC8C -End of Item 0222 - -Begin of Item 0223 - Format 0 - srcBegin = D3CA - srcEnd = D3CF - destBegin = BC95 -End of Item 0223 - -Begin of Item 0224 - Format 0 - srcBegin = D3D1 - srcEnd = D3D6 - destBegin = BC9B -End of Item 0224 - -Begin of Item 0225 - Format 0 - srcBegin = D3D9 - srcEnd = D3E0 - destBegin = BD42 -End of Item 0225 - -Begin of Item 0226 - Format 0 - srcBegin = D3E4 - srcEnd = D3EB - destBegin = BD4B -End of Item 0226 - -Begin of Item 0227 - Format 0 - srcBegin = D402 - srcEnd = D407 - destBegin = BD67 -End of Item 0227 - -Begin of Item 0228 - Format 0 - srcBegin = D409 - srcEnd = D416 - destBegin = BD6D -End of Item 0228 - -Begin of Item 0229 - Format 0 - srcBegin = D417 - srcEnd = D41C - destBegin = BD81 -End of Item 0229 - -Begin of Item 022A - Format 0 - srcBegin = D41E - srcEnd = D437 - destBegin = BD87 -End of Item 022A - -Begin of Item 022B - Format 0 - srcBegin = D438 - srcEnd = D43F - destBegin = BE41 -End of Item 022B - -Begin of Item 022C - Format 0 - srcBegin = D445 - srcEnd = D453 - destBegin = BE4C -End of Item 022C - -Begin of Item 022D - Format 0 - srcBegin = D454 - srcEnd = D45B - destBegin = BE61 -End of Item 022D - -Begin of Item 022E - Format 0 - srcBegin = D465 - srcEnd = D46C - destBegin = BE6F -End of Item 022E - -Begin of Item 022F - Format 0 - srcBegin = D48E - srcEnd = D493 - destBegin = BE92 -End of Item 022F - -Begin of Item 0230 - Format 0 - srcBegin = D495 - srcEnd = D49D - destBegin = BE98 -End of Item 0230 - -Begin of Item 0231 - Format 0 - srcBegin = D49E - srcEnd = D4A8 - destBegin = BF41 -End of Item 0231 - -Begin of Item 0232 - Format 0 - srcBegin = D4AA - srcEnd = D4B8 - destBegin = BF4C -End of Item 0232 - -Begin of Item 0233 - Format 0 - srcBegin = D4B9 - srcEnd = D4CB - destBegin = BF61 -End of Item 0233 - -Begin of Item 0234 - Format 0 - srcBegin = D4D6 - srcEnd = D4DB - destBegin = BF81 -End of Item 0234 - -Begin of Item 0235 - Format 0 - srcBegin = D4E0 - srcEnd = D4E7 - destBegin = BF89 -End of Item 0235 - -Begin of Item 0236 - Format 0 - srcBegin = D4F1 - srcEnd = D4F7 - destBegin = BF97 -End of Item 0236 - -Begin of Item 0237 - Format 0 - srcBegin = D4FE - srcEnd = D503 - destBegin = C041 -End of Item 0237 - -Begin of Item 0238 - Format 0 - srcBegin = D50D - srcEnd = D513 - destBegin = C04D -End of Item 0238 - -Begin of Item 0239 - Format 0 - srcBegin = D518 - srcEnd = D51D - destBegin = C055 -End of Item 0239 - -Begin of Item 023A - Format 0 - srcBegin = D51E - srcEnd = D537 - destBegin = C061 -End of Item 023A - -Begin of Item 023B - Format 0 - srcBegin = D545 - srcEnd = D54B - destBegin = C08A -End of Item 023B - -Begin of Item 023C - Format 0 - srcBegin = D552 - srcEnd = D557 - destBegin = C093 -End of Item 023C - -Begin of Item 023D - Format 0 - srcBegin = D56E - srcEnd = D573 - destBegin = C146 -End of Item 023D - -Begin of Item 023E - Format 0 - srcBegin = D57D - srcEnd = D583 - destBegin = C151 -End of Item 023E - -Begin of Item 023F - Format 0 - srcBegin = D591 - srcEnd = D5A4 - destBegin = C165 -End of Item 023F - -Begin of Item 0240 - Format 0 - srcBegin = D5A8 - srcEnd = D5C7 - destBegin = C181 -End of Item 0240 - -Begin of Item 0241 - Format 0 - srcBegin = D5DE - srcEnd = D5E3 - destBegin = C24E -End of Item 0241 - -Begin of Item 0242 - Format 0 - srcBegin = D5FA - srcEnd = D5FF - destBegin = C268 -End of Item 0242 - -Begin of Item 0243 - Format 0 - srcBegin = D609 - srcEnd = D60F - destBegin = C273 -End of Item 0243 - -Begin of Item 0244 - Format 0 - srcBegin = D616 - srcEnd = D61B - destBegin = C281 -End of Item 0244 - -Begin of Item 0245 - Format 0 - srcBegin = D625 - srcEnd = D62C - destBegin = C28D -End of Item 0245 - -Begin of Item 0246 - Format 0 - srcBegin = D62E - srcEnd = D637 - destBegin = C295 -End of Item 0246 - -Begin of Item 0247 - Format 0 - srcBegin = D66A - srcEnd = D66F - destBegin = C367 -End of Item 0247 - -Begin of Item 0248 - Format 0 - srcBegin = D675 - srcEnd = D680 - destBegin = C36F -End of Item 0248 - -Begin of Item 0249 - Format 0 - srcBegin = D686 - srcEnd = D68B - destBegin = C384 -End of Item 0249 - -Begin of Item 024A - Format 0 - srcBegin = D695 - srcEnd = D69C - destBegin = C38F -End of Item 024A - -Begin of Item 024B - Format 0 - srcBegin = D6A2 - srcEnd = D6A7 - destBegin = C399 -End of Item 024B - -Begin of Item 024C - Format 0 - srcBegin = D6B1 - srcEnd = D6B8 - destBegin = C445 -End of Item 024C - -Begin of Item 024D - Format 0 - srcBegin = D6BC - srcEnd = D6C3 - destBegin = C44E -End of Item 024D - -Begin of Item 024E - Format 0 - srcBegin = D6DA - srcEnd = D6DF - destBegin = C46A -End of Item 024E - -Begin of Item 024F - Format 0 - srcBegin = D6F6 - srcEnd = D6FB - destBegin = C487 -End of Item 024F - -Begin of Item 0250 - Format 0 - srcBegin = D705 - srcEnd = D710 - destBegin = C492 -End of Item 0250 - -Begin of Item 0251 - Format 0 - srcBegin = D721 - srcEnd = D727 - destBegin = C549 -End of Item 0251 - -Begin of Item 0252 - Format 0 - srcBegin = D72E - srcEnd = D733 - destBegin = C552 -End of Item 0252 - -Begin of Item 0253 - Format 0 - srcBegin = D73D - srcEnd = D743 - destBegin = C563 -End of Item 0253 - -Begin of Item 0254 - Format 0 - srcBegin = D74A - srcEnd = D74F - destBegin = C56D -End of Item 0254 - -Begin of Item 0255 - Format 0 - srcBegin = D775 - srcEnd = D77B - destBegin = C58F -End of Item 0255 - -Begin of Item 0256 - Format 0 - srcBegin = D782 - srcEnd = D787 - destBegin = C599 -End of Item 0256 - -Begin of Item 0257 - Format 0 - srcBegin = D791 - srcEnd = D797 - destBegin = C644 -End of Item 0257 - -Begin of Item 0258 - Format 0 - srcBegin = D79E - srcEnd = D7A3 - destBegin = C64D -End of Item 0258 - -Begin of Item 0259 - Format 0 - srcBegin = F90E - srcEnd = F913 - destBegin = D1DB -End of Item 0259 - -Begin of Item 025A - Format 0 - srcBegin = F933 - srcEnd = F938 - destBegin = D2C6 -End of Item 025A - -Begin of Item 025B - Format 0 - srcBegin = F939 - srcEnd = F943 - destBegin = D2CD -End of Item 025B - -Begin of Item 025C - Format 0 - srcBegin = F94A - srcEnd = F951 - destBegin = D2E4 -End of Item 025C - -Begin of Item 025D - Format 0 - srcBegin = F952 - srcEnd = F957 - destBegin = D2F0 -End of Item 025D - -Begin of Item 025E - Format 0 - srcBegin = FF01 - srcEnd = FF3B - destBegin = A3A1 -End of Item 025E - -Begin of Item 025F - Format 0 - srcBegin = FF3D - srcEnd = FF5D - destBegin = A3DD -End of Item 025F - -Begin of Item 0260 - Format 1 - srcBegin = 00A1 - srcEnd = 00BF - mappingOffset = 0000 - Mapping = - A2AE FFFD FFFD A2B4 FFFD FFFD A1D7 A1A7 - FFFD A8A3 FFFD FFFD A1A9 FFFD FFFD A1C6 - A1BE A9F7 A9F8 A2A5 FFFD A2D2 A1A4 A2AC - A9F6 A8AC FFFD A8F9 A8F6 A8FA A2AF -End of Item 0260 - -Begin of Item 0261 - Format 2 - srcBegin = 00C6 - destBegin = A8A1 -End of Item 0261 - -Begin of Item 0262 - Format 2 - srcBegin = 00D0 - destBegin = A8A2 -End of Item 0262 - -Begin of Item 0263 - Format 1 - srcBegin = 00D7 - srcEnd = 00D8 - mappingOffset = 001F - Mapping = - A1BF A8AA -End of Item 0263 - -Begin of Item 0264 - Format 1 - srcBegin = 00DE - srcEnd = 00DF - mappingOffset = 0021 - Mapping = - A8AD A9AC -End of Item 0264 - -Begin of Item 0265 - Format 2 - srcBegin = 00E6 - destBegin = A9A1 -End of Item 0265 - -Begin of Item 0266 - Format 2 - srcBegin = 00F0 - destBegin = A9A3 -End of Item 0266 - -Begin of Item 0267 - Format 1 - srcBegin = 00F7 - srcEnd = 00F8 - mappingOffset = 0023 - Mapping = - A1C0 A9AA -End of Item 0267 - -Begin of Item 0268 - Format 2 - srcBegin = 00FE - destBegin = A9AD -End of Item 0268 - -Begin of Item 0269 - Format 2 - srcBegin = 0111 - destBegin = A9A2 -End of Item 0269 - -Begin of Item 026A - Format 1 - srcBegin = 0126 - srcEnd = 0127 - mappingOffset = 0025 - Mapping = - A8A4 A9A4 -End of Item 026A - -Begin of Item 026B - Format 1 - srcBegin = 0131 - srcEnd = 0133 - mappingOffset = 0027 - Mapping = - A9A5 A8A6 A9A6 -End of Item 026B - -Begin of Item 026C - Format 2 - srcBegin = 0138 - destBegin = A9A7 -End of Item 026C - -Begin of Item 026D - Format 1 - srcBegin = 013F - srcEnd = 0142 - mappingOffset = 002A - Mapping = - A8A8 A9A8 A8A9 A9A9 -End of Item 026D - -Begin of Item 026E - Format 1 - srcBegin = 0149 - srcEnd = 014B - mappingOffset = 002E - Mapping = - A9B0 A8AF A9AF -End of Item 026E - -Begin of Item 026F - Format 1 - srcBegin = 0152 - srcEnd = 0153 - mappingOffset = 0031 - Mapping = - A8AB A9AB -End of Item 026F - -Begin of Item 0270 - Format 1 - srcBegin = 0166 - srcEnd = 0167 - mappingOffset = 0033 - Mapping = - A8AE A9AE -End of Item 0270 - -Begin of Item 0271 - Format 2 - srcBegin = 02C7 - destBegin = A2A7 -End of Item 0271 - -Begin of Item 0272 - Format 2 - srcBegin = 02D0 - destBegin = A2B0 -End of Item 0272 - -Begin of Item 0273 - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 0035 - Mapping = - A2A8 A2AB A2AA A2AD FFFD A2A9 -End of Item 0273 - -Begin of Item 0274 - Format 2 - srcBegin = 0401 - destBegin = ACA7 -End of Item 0274 - -Begin of Item 0275 - Format 2 - srcBegin = 0451 - destBegin = ACD7 -End of Item 0275 - -Begin of Item 0276 - Format 1 - srcBegin = 2015 - srcEnd = 2021 - mappingOffset = 003B - Mapping = - A1AA FFFD FFFD A1AE A1AF FFFD FFFD A1B0 - A1B1 FFFD FFFD A2D3 A2D4 -End of Item 0276 - -Begin of Item 0277 - Format 1 - srcBegin = 2025 - srcEnd = 2026 - mappingOffset = 0048 - Mapping = - A1A5 A1A6 -End of Item 0277 - -Begin of Item 0278 - Format 1 - srcBegin = 2030 - srcEnd = 2033 - mappingOffset = 004A - Mapping = - A2B6 FFFD A1C7 A1C8 -End of Item 0278 - -Begin of Item 0279 - Format 2 - srcBegin = 203B - destBegin = A1D8 -End of Item 0279 - -Begin of Item 027A - Format 2 - srcBegin = 2074 - destBegin = A9F9 -End of Item 027A - -Begin of Item 027B - Format 1 - srcBegin = 207F - srcEnd = 2084 - mappingOffset = 004E - Mapping = - A9FA FFFD A9FB A9FC A9FD A9FE -End of Item 027B - -Begin of Item 027C - Format 2 - srcBegin = 2103 - destBegin = A1C9 -End of Item 027C - -Begin of Item 027D - Format 2 - srcBegin = 2109 - destBegin = A2B5 -End of Item 027D - -Begin of Item 027E - Format 1 - srcBegin = 2113 - srcEnd = 2116 - mappingOffset = 0054 - Mapping = - A7A4 FFFD FFFD A2E0 -End of Item 027E - -Begin of Item 027F - Format 1 - srcBegin = 2121 - srcEnd = 2122 - mappingOffset = 0058 - Mapping = - A2E5 A2E2 -End of Item 027F - -Begin of Item 0280 - Format 2 - srcBegin = 2126 - destBegin = A7D9 -End of Item 0280 - -Begin of Item 0281 - Format 2 - srcBegin = 212B - destBegin = A1CA -End of Item 0281 - -Begin of Item 0282 - Format 1 - srcBegin = 2153 - srcEnd = 2154 - mappingOffset = 005A - Mapping = - A8F7 A8F8 -End of Item 0282 - -Begin of Item 0283 - Format 1 - srcBegin = 215B - srcEnd = 215E - mappingOffset = 005C - Mapping = - A8FB A8FC A8FD A8FE -End of Item 0283 - -Begin of Item 0284 - Format 1 - srcBegin = 2190 - srcEnd = 2199 - mappingOffset = 0060 - Mapping = - A1E7 A1E8 A1E6 A1E9 A1EA A2D5 A2D8 A2D6 - A2D9 A2D7 -End of Item 0284 - -Begin of Item 0285 - Format 1 - srcBegin = 21D2 - srcEnd = 21D4 - mappingOffset = 006A - Mapping = - A2A1 FFFD A2A2 -End of Item 0285 - -Begin of Item 0286 - Format 1 - srcBegin = 2200 - srcEnd = 2203 - mappingOffset = 006D - Mapping = - A2A3 FFFD A1D3 A2A4 -End of Item 0286 - -Begin of Item 0287 - Format 1 - srcBegin = 2207 - srcEnd = 220B - mappingOffset = 0071 - Mapping = - A1D4 A1F4 FFFD FFFD A1F5 -End of Item 0287 - -Begin of Item 0288 - Format 1 - srcBegin = 220F - srcEnd = 2211 - mappingOffset = 0076 - Mapping = - A2B3 FFFD A2B2 -End of Item 0288 - -Begin of Item 0289 - Format 1 - srcBegin = 221A - srcEnd = 2220 - mappingOffset = 0079 - Mapping = - A1EE FFFD FFFD A1F0 A1C4 FFFD A1D0 -End of Item 0289 - -Begin of Item 028A - Format 1 - srcBegin = 2225 - srcEnd = 222E - mappingOffset = 0080 - Mapping = - A1AB FFFD A1FC A1FD A1FB A1FA A1F2 A1F3 - FFFD A2B1 -End of Item 028A - -Begin of Item 028B - Format 1 - srcBegin = 2234 - srcEnd = 2235 - mappingOffset = 008A - Mapping = - A1C5 A1F1 -End of Item 028B - -Begin of Item 028C - Format 1 - srcBegin = 223C - srcEnd = 223D - mappingOffset = 008C - Mapping = - A1AD A1EF -End of Item 028C - -Begin of Item 028D - Format 2 - srcBegin = 2252 - destBegin = A1D6 -End of Item 028D - -Begin of Item 028E - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 008E - Mapping = - A1C1 A1D5 FFFD FFFD A1C2 A1C3 -End of Item 028E - -Begin of Item 028F - Format 1 - srcBegin = 226A - srcEnd = 226B - mappingOffset = 0094 - Mapping = - A1EC A1ED -End of Item 028F - -Begin of Item 0290 - Format 1 - srcBegin = 2282 - srcEnd = 2287 - mappingOffset = 0096 - Mapping = - A1F8 A1F9 FFFD FFFD A1F6 A1F7 -End of Item 0290 - -Begin of Item 0291 - Format 2 - srcBegin = 2299 - destBegin = A2C1 -End of Item 0291 - -Begin of Item 0292 - Format 2 - srcBegin = 22A5 - destBegin = A1D1 -End of Item 0292 - -Begin of Item 0293 - Format 2 - srcBegin = 2312 - destBegin = A1D2 -End of Item 0293 - -Begin of Item 0294 - Format 1 - srcBegin = 2500 - srcEnd = 2503 - mappingOffset = 009C - Mapping = - A6A1 A6AC A6A2 A6AD -End of Item 0294 - -Begin of Item 0295 - Format 1 - srcBegin = 250C - srcEnd = 2542 - mappingOffset = 00A0 - Mapping = - A6A3 A6C8 A6C7 A6AE A6A4 A6C2 A6C1 A6AF - A6A6 A6C6 A6C5 A6B1 A6A5 A6C4 A6C3 A6B0 - A6A7 A6BC A6C9 A6CA A6B7 A6CB A6CC A6B2 - A6A9 A6BE A6CD A6CE A6B9 A6CF A6D0 A6B4 - A6A8 A6D1 A6D2 A6B8 A6BD A6D3 A6D4 A6B3 - A6AA A6D5 A6D6 A6BA A6BF A6D7 A6D8 A6B5 - A6AB A6D9 A6DA A6BB A6DB A6DC A6C0 -End of Item 0295 - -Begin of Item 0296 - Format 2 - srcBegin = 254B - destBegin = A6B6 -End of Item 0296 - -Begin of Item 0297 - Format 2 - srcBegin = 2592 - destBegin = A2C6 -End of Item 0297 - -Begin of Item 0298 - Format 1 - srcBegin = 25A0 - srcEnd = 25A9 - mappingOffset = 00D7 - Mapping = - A1E1 A1E0 FFFD A2C3 A2C7 A2C8 A2CB A2CA - A2C9 A2CC -End of Item 0298 - -Begin of Item 0299 - Format 1 - srcBegin = 25B2 - srcEnd = 25B7 - mappingOffset = 00E1 - Mapping = - A1E3 A1E2 FFFD FFFD A2BA A2B9 -End of Item 0299 - -Begin of Item 029A - Format 1 - srcBegin = 25BC - srcEnd = 25C1 - mappingOffset = 00E7 - Mapping = - A1E5 A1E4 FFFD FFFD A2B8 A2B7 -End of Item 029A - -Begin of Item 029B - Format 1 - srcBegin = 25C6 - srcEnd = 25D1 - mappingOffset = 00ED - Mapping = - A1DF A1DE A2C2 FFFD FFFD A1DB FFFD FFFD - A1DD A1DC A2C4 A2C5 -End of Item 029B - -Begin of Item 029C - Format 1 - srcBegin = 2605 - srcEnd = 2606 - mappingOffset = 00F9 - Mapping = - A1DA A1D9 -End of Item 029C - -Begin of Item 029D - Format 1 - srcBegin = 260E - srcEnd = 260F - mappingOffset = 00FB - Mapping = - A2CF A2CE -End of Item 029D - -Begin of Item 029E - Format 1 - srcBegin = 261C - srcEnd = 261E - mappingOffset = 00FD - Mapping = - A2D0 FFFD A2D1 -End of Item 029E - -Begin of Item 029F - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 0100 - Mapping = - A1CF FFFD A1CE -End of Item 029F - -Begin of Item 02A0 - Format 1 - srcBegin = 2660 - srcEnd = 266D - mappingOffset = 0103 - Mapping = - A2BC A2BD FFFD A2C0 A2BB A2BE FFFD A2BF - A2CD A2DB A2DC FFFD A2DD A2DA -End of Item 02A0 - -Begin of Item 02A1 - Format 1 - srcBegin = 3000 - srcEnd = 3003 - mappingOffset = 0111 - Mapping = - A1A1 A1A2 A1A3 A1A8 -End of Item 02A1 - -Begin of Item 02A2 - Format 1 - srcBegin = 3013 - srcEnd = 3015 - mappingOffset = 0115 - Mapping = - A1EB A1B2 A1B3 -End of Item 02A2 - -Begin of Item 02A3 - Format 2 - srcBegin = 321C - destBegin = A2DF -End of Item 02A3 - -Begin of Item 02A4 - Format 2 - srcBegin = 327F - destBegin = A2DE -End of Item 02A4 - -Begin of Item 02A5 - Format 1 - srcBegin = 3380 - srcEnd = 3384 - mappingOffset = 0118 - Mapping = - A7C9 A7CA A7CB A7CC A7CD -End of Item 02A5 - -Begin of Item 02A6 - Format 1 - srcBegin = 3388 - srcEnd = 3398 - mappingOffset = 011D - Mapping = - A7BA A7BB A7DC A7DD A7DE A7B6 A7B7 A7B8 - A7D4 A7D5 A7D6 A7D7 A7D8 A7A1 A7A2 A7A3 - A7A5 -End of Item 02A6 - -Begin of Item 02A7 - Format 1 - srcBegin = 33A3 - srcEnd = 33AF - mappingOffset = 012E - Mapping = - A7A7 A7A8 A7A9 A7AA A7BD A7BE A7E5 A7E6 - A7E7 A7E8 A7E1 A7E2 A7E3 -End of Item 02A7 - -Begin of Item 02A8 - Format 1 - srcBegin = 33C0 - srcEnd = 33CA - mappingOffset = 013B - Mapping = - A7DA A7DB A2E3 A7EC A7A6 A7E0 A7EF A2E1 - A7BC A7ED A7B5 -End of Item 02A8 - -Begin of Item 02A9 - Format 1 - srcBegin = 33CF - srcEnd = 33DD - mappingOffset = 0146 - Mapping = - A7B9 A7EA FFFD FFFD A7EB FFFD FFFD A7DF - FFFD A2E4 FFFD FFFD A7E4 A7EE A7E9 -End of Item 02A9 - -Begin of Item 02AA - Format 1 - srcBegin = 4E00 - srcEnd = 4E03 - mappingOffset = 0155 - Mapping = - ECE9 EFCB FFFD F6D2 -End of Item 02AA - -Begin of Item 02AB - Format 1 - srcBegin = 4E07 - srcEnd = 4E0D - mappingOffset = 0159 - Mapping = - D8B2 EDDB DFB2 DFBE F9BB FFFD DCF4 -End of Item 02AB - -Begin of Item 02AC - Format 1 - srcBegin = 4E11 - srcEnd = 4E19 - mappingOffset = 0160 - Mapping = - F5E4 FFFD FFFD F3A6 DDE0 E1A6 FFFD CEF8 - DCB0 -End of Item 02AC - -Begin of Item 02AD - Format 2 - srcBegin = 4E1E - destBegin = E3AA -End of Item 02AD - -Begin of Item 02AE - Format 2 - srcBegin = 4E2D - destBegin = F1E9 -End of Item 02AE - -Begin of Item 02AF - Format 2 - srcBegin = 4E32 - destBegin = CDFA -End of Item 02AF - -Begin of Item 02B0 - Format 1 - srcBegin = 4E38 - srcEnd = 4E3B - mappingOffset = 0169 - Mapping = - FCAF D3A1 FFFD F1AB -End of Item 02B0 - -Begin of Item 02B1 - Format 1 - srcBegin = 4E42 - srcEnd = 4E45 - mappingOffset = 016D - Mapping = - E7D1 D2AC FFFD CEF9 -End of Item 02B1 - -Begin of Item 02B2 - Format 1 - srcBegin = 4E4B - srcEnd = 4E4F - mappingOffset = 0171 - Mapping = - F1FD FFFD DEBF FBBA F9B9 -End of Item 02B2 - -Begin of Item 02B3 - Format 1 - srcBegin = 4E56 - srcEnd = 4E59 - mappingOffset = 0176 - Mapping = - CED2 FFFD E3AB EBE0 -End of Item 02B3 - -Begin of Item 02B4 - Format 1 - srcBegin = 4E5D - srcEnd = 4E5F - mappingOffset = 017A - Mapping = - CEFA CBF7 E5A5 -End of Item 02B4 - -Begin of Item 02B5 - Format 1 - srcBegin = 4E6B - srcEnd = 4E6D - mappingOffset = 017D - Mapping = - CAE1 FFFD D4CC -End of Item 02B5 - -Begin of Item 02B6 - Format 1 - srcBegin = 4E73 - srcEnd = 4E77 - mappingOffset = 0180 - Mapping = - EAE1 FFFD FFFD DCE3 DFAD -End of Item 02B6 - -Begin of Item 02B7 - Format 2 - srcBegin = 4E7E - destBegin = CBEB -End of Item 02B7 - -Begin of Item 02B8 - Format 2 - srcBegin = 4E82 - destBegin = D5AF -End of Item 02B8 - -Begin of Item 02B9 - Format 1 - srcBegin = 4E86 - srcEnd = 4EAE - mappingOffset = 0185 - Mapping = - D6F5 FFFD E5F8 FFFD FFFD DEC0 ECA3 FFFD - E9CD FFFD EAA7 E9F6 FBBB FFFD E7E9 EFCC - FFFD FFFD D0E6 FFFD FFFD DEC1 FFFD FFFD - E4AC FFFD FFFD D8CC F9F1 FFFD CEDF FAA4 - E6B2 FFFD FAFB FFFD FFFD FABD CCC8 EFCD - D5D5 -End of Item 02B9 - -Begin of Item 02BA - Format 2 - srcBegin = 4EB6 - destBegin = D3A2 -End of Item 02BA - -Begin of Item 02BB - Format 2 - srcBegin = 4EBA - destBegin = ECD1 -End of Item 02BB - -Begin of Item 02BC - Format 1 - srcBegin = 4EC0 - srcEnd = 4ECD - mappingOffset = 01AE - Mapping = - E4A7 ECD2 FFFD FFFD F6B1 FFFD FFFD CEFB - FFFD FFFD D0D1 CBBF FFFD EDA4 -End of Item 02BC - -Begin of Item 02BD - Format 1 - srcBegin = 4ED4 - srcEnd = 4ED9 - mappingOffset = 01BC - Mapping = - EDA8 DEC2 F6E2 EDDC DCF5 E0B9 -End of Item 02BD - -Begin of Item 02BE - Format 1 - srcBegin = 4EDD - srcEnd = 4EDF - mappingOffset = 01C2 - Mapping = - D4CE FFFD F4B5 -End of Item 02BE - -Begin of Item 02BF - Format 1 - srcBegin = 4EE3 - srcEnd = 4EE5 - mappingOffset = 01C5 - Mapping = - D3DB D6B5 ECA4 -End of Item 02BF - -Begin of Item 02C0 - Format 1 - srcBegin = 4EF0 - srcEnd = 4EF2 - mappingOffset = 01C8 - Mapping = - E4E6 FFFD F1EA -End of Item 02C0 - -Begin of Item 02C1 - Format 1 - srcBegin = 4EF6 - srcEnd = 4EF7 - mappingOffset = 01CB - Mapping = - CBEC CBC0 -End of Item 02C1 - -Begin of Item 02C2 - Format 2 - srcBegin = 4EFB - destBegin = ECF2 -End of Item 02C2 - -Begin of Item 02C3 - Format 2 - srcBegin = 4F01 - destBegin = D0EA -End of Item 02C3 - -Begin of Item 02C4 - Format 1 - srcBegin = 4F09 - srcEnd = 4F11 - mappingOffset = 01CD - Mapping = - F9F2 ECA5 D0DF FFFD E7EA D0EB DCD1 DBE9 - FDCC -End of Item 02C4 - -Begin of Item 02C5 - Format 2 - srcBegin = 4F2F - destBegin = DBD7 -End of Item 02C5 - -Begin of Item 02C6 - Format 1 - srcBegin = 4F34 - srcEnd = 4F3D - mappingOffset = 01D6 - Mapping = - DAE1 FFFD D6B6 FFFD E3DF FFFD DEC3 FFFD - DEC4 CAA1 -End of Item 02C6 - -Begin of Item 02C7 - Format 1 - srcBegin = 4F43 - srcEnd = 4F48 - mappingOffset = 01E0 - Mapping = - EEEC FFFD FFFD D3A3 EEB7 F8CF -End of Item 02C7 - -Begin of Item 02C8 - Format 1 - srcBegin = 4F4D - srcEnd = 4F51 - mappingOffset = 01E6 - Mapping = - EAC8 EEB8 F1AC F1A5 E9CE -End of Item 02C8 - -Begin of Item 02C9 - Format 2 - srcBegin = 4F55 - destBegin = F9BC -End of Item 02C9 - -Begin of Item 02CA - Format 1 - srcBegin = 4F59 - srcEnd = 4F5C - mappingOffset = 01EB - Mapping = - E5F9 ECEA DDD6 EDC2 -End of Item 02CA - -Begin of Item 02CB - Format 2 - srcBegin = 4F69 - destBegin = F8A5 -End of Item 02CB - -Begin of Item 02CC - Format 1 - srcBegin = 4F6F - srcEnd = 4F76 - mappingOffset = 01EF - Mapping = - E5BA DBD8 FFFD FFFD CAA2 FFFD FFFD D1CD -End of Item 02CC - -Begin of Item 02CD - Format 2 - srcBegin = 4F7A - destBegin = EEED -End of Item 02CD - -Begin of Item 02CE - Format 1 - srcBegin = 4F7E - srcEnd = 4F91 - mappingOffset = 01F7 - Mapping = - ECEB DEC5 FFFD E3E0 FFFD CAC9 F2E9 FFFD - D5CE FFFD F6B6 FFFD CEC2 D6C7 FFFD E3B4 - FFFD F1AD FFFD EAE2 -End of Item 02CE - -Begin of Item 02CF - Format 1 - srcBegin = 4F96 - srcEnd = 4F9D - mappingOffset = 020B - Mapping = - D7C2 FFFD F3A7 FFFD FFFD CDEA FFFD EBEE -End of Item 02CF - -Begin of Item 02D0 - Format 1 - srcBegin = 4FAE - srcEnd = 4FAF - mappingOffset = 0213 - Mapping = - D9B2 FDA5 -End of Item 02D0 - -Begin of Item 02D1 - Format 1 - srcBegin = 4FB5 - srcEnd = 4FB6 - mappingOffset = 0215 - Mapping = - F6D5 D5E2 -End of Item 02D1 - -Begin of Item 02D2 - Format 1 - srcBegin = 4FBF - srcEnd = 4FC4 - mappingOffset = 0217 - Mapping = - F8B5 FFFD FFFD CCF5 F5B5 E4AD -End of Item 02D2 - -Begin of Item 02D3 - Format 1 - srcBegin = 4FC9 - srcEnd = 4FCA - mappingOffset = 021D - Mapping = - E7EB F1D5 -End of Item 02D3 - -Begin of Item 02D4 - Format 1 - srcBegin = 4FCE - srcEnd = 4FE1 - mappingOffset = 021F - Mapping = - F0BB FFFD FFFD E9B5 FFFD CCC9 FAD5 FFFD - FFFD E1D4 FFFD FFFD D7D6 FFFD FFFD DCC1 - FFFD DEC6 FAEF E3E1 -End of Item 02D4 - -Begin of Item 02D5 - Format 1 - srcBegin = 4FEE - srcEnd = 4FFA - mappingOffset = 0233 - Mapping = - E1F3 DCF6 FFFD CEFC FFFD DBC4 FFFD F8F1 - FFFD FFFD DCE4 FFFD E5EF -End of Item 02D5 - -Begin of Item 02D6 - Format 2 - srcBegin = 5002 - destBegin = DCB1 -End of Item 02D6 - -Begin of Item 02D7 - Format 1 - srcBegin = 5006 - srcEnd = 500D - mappingOffset = 0240 - Mapping = - D5D6 FFFD FFFD F3DA FFFD CBC1 FFFD DBC3 -End of Item 02D7 - -Begin of Item 02D8 - Format 1 - srcBegin = 5011 - srcEnd = 5012 - mappingOffset = 0248 - Mapping = - D9FA D3EE -End of Item 02D8 - -Begin of Item 02D9 - Format 1 - srcBegin = 5016 - srcEnd = 502D - mappingOffset = 024A - Mapping = - FAB8 FFFD FFFD FDA6 EBEF FFFD F4A6 FFFD - CCCA F3A8 FFFD F3DB FFFD DBA7 F6B7 FFFD - CFE6 F0F2 CBDA FFFD E7D2 D7C3 F6F0 E8DE -End of Item 02D9 - -Begin of Item 02DA - Format 2 - srcBegin = 503B - destBegin = E5A6 -End of Item 02DA - -Begin of Item 02DB - Format 2 - srcBegin = 5043 - destBegin = E5E7 -End of Item 02DB - -Begin of Item 02DC - Format 1 - srcBegin = 5047 - srcEnd = 5049 - mappingOffset = 0262 - Mapping = - CAA3 CCA7 EAC9 -End of Item 02DC - -Begin of Item 02DD - Format 2 - srcBegin = 504F - destBegin = F8B6 -End of Item 02DD - -Begin of Item 02DE - Format 2 - srcBegin = 5055 - destBegin = FAA5 -End of Item 02DE - -Begin of Item 02DF - Format 1 - srcBegin = 505A - srcEnd = 505C - mappingOffset = 0265 - Mapping = - F1AE FFFD EFCE -End of Item 02DF - -Begin of Item 02E0 - Format 2 - srcBegin = 5065 - destBegin = CBED -End of Item 02E0 - -Begin of Item 02E1 - Format 1 - srcBegin = 5074 - srcEnd = 5078 - mappingOffset = 0268 - Mapping = - F6B0 EFCF E9CF FFFD F7DE -End of Item 02E1 - -Begin of Item 02E2 - Format 2 - srcBegin = 5080 - destBegin = CED3 -End of Item 02E2 - -Begin of Item 02E3 - Format 2 - srcBegin = 5085 - destBegin = DCF7 -End of Item 02E3 - -Begin of Item 02E4 - Format 2 - srcBegin = 508D - destBegin = DBA8 -End of Item 02E4 - -Begin of Item 02E5 - Format 2 - srcBegin = 5091 - destBegin = CBF8 -End of Item 02E5 - -Begin of Item 02E6 - Format 1 - srcBegin = 5098 - srcEnd = 5099 - mappingOffset = 026D - Mapping = - DFA1 DDE1 -End of Item 02E6 - -Begin of Item 02E7 - Format 1 - srcBegin = 50AC - srcEnd = 50AD - mappingOffset = 026F - Mapping = - F5CA E9B6 -End of Item 02E7 - -Begin of Item 02E8 - Format 1 - srcBegin = 50B2 - srcEnd = 50B7 - mappingOffset = 0271 - Mapping = - E7EC EEEE FFFD F3F0 FFFD DFBF -End of Item 02E8 - -Begin of Item 02E9 - Format 2 - srcBegin = 50BE - destBegin = CCCB -End of Item 02E9 - -Begin of Item 02EA - Format 2 - srcBegin = 50C5 - destBegin = D0C1 -End of Item 02EA - -Begin of Item 02EB - Format 1 - srcBegin = 50C9 - srcEnd = 50CA - mappingOffset = 0277 - Mapping = - F4D2 E0BA -End of Item 02EB - -Begin of Item 02EC - Format 1 - srcBegin = 50CF - srcEnd = 50D1 - mappingOffset = 0279 - Mapping = - DFC0 FFFD CEE0 -End of Item 02EC - -Begin of Item 02ED - Format 1 - srcBegin = 50D5 - srcEnd = 50D6 - mappingOffset = 027C - Mapping = - DCD2 FDEA -End of Item 02ED - -Begin of Item 02EE - Format 2 - srcBegin = 50DA - destBegin = D6F6 -End of Item 02EE - -Begin of Item 02EF - Format 2 - srcBegin = 50DE - destBegin = EACA -End of Item 02EF - -Begin of Item 02F0 - Format 1 - srcBegin = 50E5 - srcEnd = 50E7 - mappingOffset = 027E - Mapping = - E8E9 FFFD E3AC -End of Item 02F0 - -Begin of Item 02F1 - Format 2 - srcBegin = 50ED - destBegin = F3D0 -End of Item 02F1 - -Begin of Item 02F2 - Format 1 - srcBegin = 50F9 - srcEnd = 50FB - mappingOffset = 0281 - Mapping = - CAA4 FFFD DBF8 -End of Item 02F2 - -Begin of Item 02F3 - Format 1 - srcBegin = 50FF - srcEnd = 5109 - mappingOffset = 0284 - Mapping = - DEC7 EBF0 F1D6 FFFD FFFD E5E2 FFFD CCCC - FFFD FFFD CBFB -End of Item 02F3 - -Begin of Item 02F4 - Format 2 - srcBegin = 5112 - destBegin = EAE3 -End of Item 02F4 - -Begin of Item 02F5 - Format 1 - srcBegin = 511F - srcEnd = 5121 - mappingOffset = 028F - Mapping = - DFC1 FFFD D6ED -End of Item 02F5 - -Begin of Item 02F6 - Format 2 - srcBegin = 512A - destBegin = E9D0 -End of Item 02F6 - -Begin of Item 02F7 - Format 2 - srcBegin = 5132 - destBegin = EEB9 -End of Item 02F7 - -Begin of Item 02F8 - Format 1 - srcBegin = 5137 - srcEnd = 513C - mappingOffset = 0292 - Mapping = - D5E3 FFFD FFFD D1D3 FFFD E5F0 -End of Item 02F8 - -Begin of Item 02F9 - Format 1 - srcBegin = 5140 - srcEnd = 514E - mappingOffset = 0298 - Mapping = - E8B4 EBC3 FFFD EAAA FAFC F5F6 F0BC FDD4 - E0BB CEC3 FFFD D0BA F7BA D8F3 F7CD -End of Item 02F9 - -Begin of Item 02FA - Format 2 - srcBegin = 5152 - destBegin = E4AE -End of Item 02FA - -Begin of Item 02FB - Format 2 - srcBegin = 515C - destBegin = D4DF -End of Item 02FB - -Begin of Item 02FC - Format 1 - srcBegin = 5162 - srcEnd = 5171 - mappingOffset = 02A7 - Mapping = - D0E7 FFFD FFFD ECFD FFFD D2AE EEEF D5D7 - EAE4 F8A2 CDEB D7BF FBB1 FFFD FFFD CDEC -End of Item 02FC - -Begin of Item 02FD - Format 1 - srcBegin = 5175 - srcEnd = 5178 - mappingOffset = 02B7 - Mapping = - DCB2 D0EC CEFD EEF0 -End of Item 02FD - -Begin of Item 02FE - Format 2 - srcBegin = 517C - destBegin = CCC2 -End of Item 02FE - -Begin of Item 02FF - Format 2 - srcBegin = 5180 - destBegin = D0ED -End of Item 02FF - -Begin of Item 0300 - Format 2 - srcBegin = 5186 - destBegin = E5F7 -End of Item 0300 - -Begin of Item 0301 - Format 1 - srcBegin = 518A - srcEnd = 518D - mappingOffset = 02BB - Mapping = - F3FC FFFD FFFD EEA2 -End of Item 0301 - -Begin of Item 0302 - Format 1 - srcBegin = 5192 - srcEnd = 5197 - mappingOffset = 02BF - Mapping = - D9B3 FFFD FFFD D8F4 FFFD E9B7 -End of Item 0302 - -Begin of Item 0303 - Format 2 - srcBegin = 51A0 - destBegin = CEAE -End of Item 0303 - -Begin of Item 0304 - Format 2 - srcBegin = 51A5 - destBegin = D9A2 -End of Item 0304 - -Begin of Item 0305 - Format 1 - srcBegin = 51AA - srcEnd = 51AC - mappingOffset = 02C5 - Mapping = - D8F1 FFFD D4CF -End of Item 0305 - -Begin of Item 0306 - Format 1 - srcBegin = 51B6 - srcEnd = 51B7 - mappingOffset = 02C8 - Mapping = - E5A7 D5D2 -End of Item 0306 - -Begin of Item 0307 - Format 2 - srcBegin = 51BD - destBegin = D6A9 -End of Item 0307 - -Begin of Item 0308 - Format 1 - srcBegin = 51C4 - srcEnd = 51CD - mappingOffset = 02CA - Mapping = - F4A2 FFFD F1D7 FFFD FFFD D5D8 FFFD F0BD - D7D0 D4D0 -End of Item 0308 - -Begin of Item 0309 - Format 1 - srcBegin = 51DC - srcEnd = 51E1 - mappingOffset = 02D4 - Mapping = - D7CF EBEA FDEB FFFD FFFD DBED -End of Item 0309 - -Begin of Item 030A - Format 1 - srcBegin = 51F0 - srcEnd = 51F1 - mappingOffset = 02DA - Mapping = - FCC5 CBC2 -End of Item 030A - -Begin of Item 030B - Format 1 - srcBegin = 51F6 - srcEnd = 520A - mappingOffset = 02DC - Mapping = - FDD5 FFFD F4C8 E8EA F5F3 FFFD FFFD F9DE - FFFD FFFD D3EF FFFD FFFD ECD3 FFFD FFFD - DDC2 EFB7 E7D4 FFFD CACA -End of Item 030B - -Begin of Item 030C - Format 1 - srcBegin = 520E - srcEnd = 5211 - mappingOffset = 02F1 - Mapping = - D9FB FFFD FFFD FAFD -End of Item 030C - -Begin of Item 030D - Format 2 - srcBegin = 5217 - destBegin = D6AA -End of Item 030D - -Begin of Item 030E - Format 2 - srcBegin = 521D - destBegin = F4F8 -End of Item 030E - -Begin of Item 030F - Format 1 - srcBegin = 5224 - srcEnd = 5225 - mappingOffset = 02F5 - Mapping = - F7F7 DCAC -End of Item 030F - -Begin of Item 0310 - Format 1 - srcBegin = 5229 - srcEnd = 522A - mappingOffset = 02F7 - Mapping = - D7D7 DFA2 -End of Item 0310 - -Begin of Item 0311 - Format 1 - srcBegin = 522E - srcEnd = 5230 - mappingOffset = 02F9 - Mapping = - CEBE FFFD D3F0 -End of Item 0311 - -Begin of Item 0312 - Format 1 - srcBegin = 5236 - srcEnd = 523B - mappingOffset = 02FC - Mapping = - F0A4 E1EC CFE7 F3CB EDA9 CABE -End of Item 0312 - -Begin of Item 0313 - Format 2 - srcBegin = 5243 - destBegin = F4EF -End of Item 0313 - -Begin of Item 0314 - Format 1 - srcBegin = 5247 - srcEnd = 524D - mappingOffset = 0302 - Mapping = - F6CE FFFD FFFD DEFB D0BB D5B7 EEF1 -End of Item 0314 - -Begin of Item 0315 - Format 1 - srcBegin = 5254 - srcEnd = 5256 - mappingOffset = 0309 - Mapping = - F4A8 FFFD DCF8 -End of Item 0315 - -Begin of Item 0316 - Format 1 - srcBegin = 525B - srcEnd = 525D - mappingOffset = 030C - Mapping = - CBA7 FFFD DACE -End of Item 0316 - -Begin of Item 0317 - Format 2 - srcBegin = 5261 - destBegin = E0E6 -End of Item 0317 - -Begin of Item 0318 - Format 1 - srcBegin = 5269 - srcEnd = 526A - mappingOffset = 030F - Mapping = - EDA5 EEF2 -End of Item 0318 - -Begin of Item 0319 - Format 1 - srcBegin = 526F - srcEnd = 5275 - mappingOffset = 0311 - Mapping = - DCF9 FFFD FFFD F9DC FFFD FFFD F3DC -End of Item 0319 - -Begin of Item 031A - Format 1 - srcBegin = 527D - srcEnd = 527F - mappingOffset = 0318 - Mapping = - F8F2 FFFD F4F9 -End of Item 031A - -Begin of Item 031B - Format 2 - srcBegin = 5283 - destBegin = FCF1 -End of Item 031B - -Begin of Item 031C - Format 1 - srcBegin = 5287 - srcEnd = 5289 - mappingOffset = 031B - Mapping = - D0BC DBF9 D7B1 -End of Item 031C - -Begin of Item 031D - Format 2 - srcBegin = 528D - destBegin = CBFC -End of Item 031D - -Begin of Item 031E - Format 1 - srcBegin = 5291 - srcEnd = 5292 - mappingOffset = 031E - Mapping = - F0A5 CBFD -End of Item 031E - -Begin of Item 031F - Format 2 - srcBegin = 529B - destBegin = D5F4 -End of Item 031F - -Begin of Item 0320 - Format 1 - srcBegin = 529F - srcEnd = 52A4 - mappingOffset = 0320 - Mapping = - CDED CAA5 FFFD FFFD D6AB D0C2 -End of Item 0320 - -Begin of Item 0321 - Format 1 - srcBegin = 52A9 - srcEnd = 52AB - mappingOffset = 0326 - Mapping = - F0BE D2BD CCA4 -End of Item 0321 - -Begin of Item 0322 - Format 1 - srcBegin = 52BE - srcEnd = 52C9 - mappingOffset = 0329 - Mapping = - FAB6 FFFD FFFD CCCD FFFD DAFA FFFD F6CF - FFFD E9B8 FFFD D8F5 -End of Item 0322 - -Begin of Item 0323 - Format 2 - srcBegin = 52CD - destBegin = CCCE -End of Item 0323 - -Begin of Item 0324 - Format 1 - srcBegin = 52D2 - srcEnd = 52E4 - mappingOffset = 0335 - Mapping = - D7CD FFFD FFFD D4D1 E9ED FFFD CAEB D9E2 - FFFD FDB2 FFFD E3AD D6CC D9B4 FFFD FFFD - E1A7 EED3 D0C3 -End of Item 0324 - -Begin of Item 0325 - Format 1 - srcBegin = 52F3 - srcEnd = 52FF - mappingOffset = 0348 - Mapping = - FDB3 FFFD D5E4 FFFD FFFD CFE8 FFFD EDC3 - D0B2 FFFD FFFD CEFE DAA8 -End of Item 0325 - -Begin of Item 0326 - Format 1 - srcBegin = 5305 - srcEnd = 5308 - mappingOffset = 0355 - Mapping = - F8D0 FFFD FFFD FDD6 -End of Item 0326 - -Begin of Item 0327 - Format 1 - srcBegin = 530D - srcEnd = 5310 - mappingOffset = 0359 - Mapping = - F8D1 FFFD F8D2 DCD3 -End of Item 0327 - -Begin of Item 0328 - Format 1 - srcBegin = 5315 - srcEnd = 5319 - mappingOffset = 035D - Mapping = - DDE2 FBF9 DDC1 FFFD E3B5 -End of Item 0328 - -Begin of Item 0329 - Format 1 - srcBegin = 5320 - srcEnd = 5323 - mappingOffset = 0362 - Mapping = - EDDD CEC4 FFFD CBA1 -End of Item 0329 - -Begin of Item 032A - Format 2 - srcBegin = 532A - destBegin = DDE3 -End of Item 032A - -Begin of Item 032B - Format 2 - srcBegin = 532F - destBegin = FCDD -End of Item 032B - -Begin of Item 032C - Format 2 - srcBegin = 5339 - destBegin = F9AF -End of Item 032C - -Begin of Item 032D - Format 1 - srcBegin = 533F - srcEnd = 534D - mappingOffset = 0366 - Mapping = - D2FB CFA1 E4A8 FFFD F4B6 ECFE FFFD FFFD - E3AE E7ED FDC1 DAE2 FFFD FFFD D8B3 -End of Item 032D - -Begin of Item 032E - Format 1 - srcBegin = 5351 - srcEnd = 5360 - mappingOffset = 0375 - Mapping = - DDE4 F0EF F6F1 FAF0 FFFD FFFD D1F5 FFFD - FFFD DACF FFFD DCD4 FFFD DCA6 FFFD EFBF -End of Item 032E - -Begin of Item 032F - Format 1 - srcBegin = 5366 - srcEnd = 5368 - mappingOffset = 0385 - Mapping = - CECF FFFD E0D9 -End of Item 032F - -Begin of Item 0330 - Format 1 - srcBegin = 536F - srcEnd = 5377 - mappingOffset = 0388 - Mapping = - D9D6 ECD4 EACB FFFD FFFD CABF D5B0 FFFD - CFE9 -End of Item 0330 - -Begin of Item 0331 - Format 1 - srcBegin = 537D - srcEnd = 537F - mappingOffset = 0391 - Mapping = - F1ED FFFD CCCF -End of Item 0331 - -Begin of Item 0332 - Format 2 - srcBegin = 5384 - destBegin = E4F8 -End of Item 0332 - -Begin of Item 0333 - Format 2 - srcBegin = 5393 - destBegin = E4ED -End of Item 0333 - -Begin of Item 0334 - Format 1 - srcBegin = 5398 - srcEnd = 539A - mappingOffset = 0394 - Mapping = - D7D8 FFFD FDA7 -End of Item 0334 - -Begin of Item 0335 - Format 1 - srcBegin = 539F - srcEnd = 53A0 - mappingOffset = 0397 - Mapping = - EAAB F6B2 -End of Item 0335 - -Begin of Item 0336 - Format 1 - srcBegin = 53A5 - srcEnd = 53A6 - mappingOffset = 0399 - Mapping = - CFF0 F9BD -End of Item 0336 - -Begin of Item 0337 - Format 2 - srcBegin = 53AD - destBegin = E6F4 -End of Item 0337 - -Begin of Item 0338 - Format 2 - srcBegin = 53BB - destBegin = CBDB -End of Item 0338 - -Begin of Item 0339 - Format 2 - srcBegin = 53C3 - destBegin = F3D1 -End of Item 0339 - -Begin of Item 033A - Format 1 - srcBegin = 53C8 - srcEnd = 53CD - mappingOffset = 039B - Mapping = - E9D1 F3A9 D0E0 E9D2 FFFD DAE3 -End of Item 033A - -Begin of Item 033B - Format 1 - srcBegin = 53D4 - srcEnd = 53D7 - mappingOffset = 03A1 - Mapping = - E2D2 FFFD F6A2 E1F4 -End of Item 033B - -Begin of Item 033C - Format 2 - srcBegin = 53DB - destBegin = DAE4 -End of Item 033C - -Begin of Item 033D - Format 1 - srcBegin = 53E1 - srcEnd = 53E5 - mappingOffset = 03A5 - Mapping = - E7D5 F5BF CFA2 CDAF CFA3 -End of Item 033D - -Begin of Item 033E - Format 1 - srcBegin = 53E9 - srcEnd = 53F3 - mappingOffset = 03AA - Mapping = - CDB0 F1FE D0A3 E1AF F8A3 FFFD CAA6 F7BB - F2EA DEC8 E9D3 -End of Item 033E - -Begin of Item 033F - Format 2 - srcBegin = 53F8 - destBegin = DEC9 -End of Item 033F - -Begin of Item 0340 - Format 1 - srcBegin = 5403 - srcEnd = 5404 - mappingOffset = 03B5 - Mapping = - FDDE CAC0 -End of Item 0340 - -Begin of Item 0341 - Format 1 - srcBegin = 5408 - srcEnd = 5411 - mappingOffset = 03B7 - Mapping = - F9EA D1CE EED4 FFFD D4D2 D9A3 FDA8 D7D9 - F7CE FABE -End of Item 0341 - -Begin of Item 0342 - Format 1 - srcBegin = 541B - srcEnd = 5420 - mappingOffset = 03C1 - Mapping = - CFD6 FFFD D7F0 FFFD EBE1 F8C5 -End of Item 0342 - -Begin of Item 0343 - Format 1 - srcBegin = 5426 - srcEnd = 542B - mappingOffset = 03C7 - Mapping = - DCFA FFFD FFFD DDC3 FFFD F9DF -End of Item 0343 - -Begin of Item 0344 - Format 2 - srcBegin = 5433 - destBegin = E7EF -End of Item 0344 - -Begin of Item 0345 - Format 1 - srcBegin = 5438 - srcEnd = 543E - mappingOffset = 03CD - Mapping = - FDE5 F6A3 FFFD D9FC FDA9 FFFD E7EE -End of Item 0345 - -Begin of Item 0346 - Format 2 - srcBegin = 5442 - destBegin = D5E5 -End of Item 0346 - -Begin of Item 0347 - Format 1 - srcBegin = 5448 - srcEnd = 544A - mappingOffset = 03D4 - Mapping = - EFD0 FFFD CDB1 -End of Item 0347 - -Begin of Item 0348 - Format 2 - srcBegin = 5451 - destBegin = F7A2 -End of Item 0348 - -Begin of Item 0349 - Format 1 - srcBegin = 5468 - srcEnd = 546A - mappingOffset = 03D7 - Mapping = - F1B2 FFFD F1B1 -End of Item 0349 - -Begin of Item 034A - Format 1 - srcBegin = 5471 - srcEnd = 5475 - mappingOffset = 03DA - Mapping = - CDB2 FFFD DAAB FFFD CAA7 -End of Item 034A - -Begin of Item 034B - Format 1 - srcBegin = 547B - srcEnd = 5480 - mappingOffset = 03DF - Mapping = - E3E2 FBBC D9A4 FFFD FFFD EEBA -End of Item 034B - -Begin of Item 034C - Format 2 - srcBegin = 5486 - destBegin = F8D3 -End of Item 034C - -Begin of Item 034D - Format 1 - srcBegin = 548C - srcEnd = 5490 - mappingOffset = 03E5 - Mapping = - FBFA FFFD CFA4 FFFD DCFB -End of Item 034D - -Begin of Item 034E - Format 2 - srcBegin = 54A4 - destBegin = F6E3 -End of Item 034E - -Begin of Item 034F - Format 1 - srcBegin = 54A8 - srcEnd = 54AC - mappingOffset = 03EA - Mapping = - EDAA FFFD FFFD F2A1 CEE1 -End of Item 034F - -Begin of Item 0350 - Format 2 - srcBegin = 54B3 - destBegin = FAA6 -End of Item 0350 - -Begin of Item 0351 - Format 2 - srcBegin = 54B8 - destBegin = F9E0 -End of Item 0351 - -Begin of Item 0352 - Format 1 - srcBegin = 54BD - srcEnd = 54C4 - mappingOffset = 03EF - Mapping = - ECD6 FFFD FFFD E4EE F9A1 FFFD FFFD FBEF -End of Item 0352 - -Begin of Item 0353 - Format 1 - srcBegin = 54C8 - srcEnd = 54C9 - mappingOffset = 03F7 - Mapping = - F9EB EEA3 -End of Item 0353 - -Begin of Item 0354 - Format 2 - srcBegin = 54E1 - destBegin = EAAC -End of Item 0354 - -Begin of Item 0355 - Format 1 - srcBegin = 54E5 - srcEnd = 54E8 - mappingOffset = 03F9 - Mapping = - CAA8 FFFD FFFD F4FA -End of Item 0355 - -Begin of Item 0356 - Format 1 - srcBegin = 54ED - srcEnd = 54EE - mappingOffset = 03FD - Mapping = - CDD6 FCF6 -End of Item 0356 - -Begin of Item 0357 - Format 2 - srcBegin = 54F2 - destBegin = F4C9 -End of Item 0357 - -Begin of Item 0358 - Format 2 - srcBegin = 54FA - destBegin = F8D4 -End of Item 0358 - -Begin of Item 0359 - Format 1 - srcBegin = 5504 - srcEnd = 5507 - mappingOffset = 03FF - Mapping = - F8A6 FFFD DECA F2C6 -End of Item 0359 - -Begin of Item 035A - Format 1 - srcBegin = 550E - srcEnd = 5510 - mappingOffset = 0403 - Mapping = - D7DA FFFD D3D0 -End of Item 035A - -Begin of Item 035B - Format 2 - srcBegin = 551C - destBegin = D8C5 -End of Item 035B - -Begin of Item 035C - Format 1 - srcBegin = 552F - srcEnd = 5531 - mappingOffset = 0406 - Mapping = - EAE6 FFFD F3DD -End of Item 035C - -Begin of Item 035D - Format 2 - srcBegin = 5535 - destBegin = E4DA -End of Item 035D - -Begin of Item 035E - Format 2 - srcBegin = 553E - destBegin = F6E4 -End of Item 035E - -Begin of Item 035F - Format 1 - srcBegin = 5544 - srcEnd = 5546 - mappingOffset = 0409 - Mapping = - F6F2 FFFD DFC2 -End of Item 035F - -Begin of Item 0360 - Format 2 - srcBegin = 554F - destBegin = D9FD -End of Item 0360 - -Begin of Item 0361 - Format 1 - srcBegin = 5553 - srcEnd = 5556 - mappingOffset = 040C - Mapping = - CCF6 FFFD FFFD D3BA -End of Item 0361 - -Begin of Item 0362 - Format 2 - srcBegin = 555E - destBegin = E4AF -End of Item 0362 - -Begin of Item 0363 - Format 2 - srcBegin = 5563 - destBegin = F9E1 -End of Item 0363 - -Begin of Item 0364 - Format 2 - srcBegin = 557C - destBegin = F0A6 -End of Item 0364 - -Begin of Item 0365 - Format 2 - srcBegin = 5580 - destBegin = CBD3 -End of Item 0365 - -Begin of Item 0366 - Format 1 - srcBegin = 5584 - srcEnd = 558A - mappingOffset = 0410 - Mapping = - E0BC FFFD F4CA D4FA FFFD FDAA F9E2 -End of Item 0366 - -Begin of Item 0367 - Format 1 - srcBegin = 5598 - srcEnd = 559D - mappingOffset = 0417 - Mapping = - F4B7 FDC2 FCB0 FFFD FDEC CAE2 -End of Item 0367 - -Begin of Item 0368 - Format 1 - srcBegin = 55A7 - srcEnd = 55AE - mappingOffset = 041D - Mapping = - FDBD FFFD EAE7 DFC3 D1D2 CEE2 FFFD D3A4 -End of Item 0368 - -Begin of Item 0369 - Format 1 - srcBegin = 55C5 - srcEnd = 55C7 - mappingOffset = 0425 - Mapping = - FDAB FFFD DFE0 -End of Item 0369 - -Begin of Item 036A - Format 2 - srcBegin = 55D4 - destBegin = F2C7 -End of Item 036A - -Begin of Item 036B - Format 1 - srcBegin = 55DA - srcEnd = 55DF - mappingOffset = 0428 - Mapping = - E7F0 FFFD D0EE FFFD FFFD F3AA -End of Item 036B - -Begin of Item 036C - Format 1 - srcBegin = 55E3 - srcEnd = 55E4 - mappingOffset = 042E - Mapping = - DECB F6B8 -End of Item 036C - -Begin of Item 036D - Format 1 - srcBegin = 55FD - srcEnd = 55FE - mappingOffset = 0430 - Mapping = - E1F5 F1B3 -End of Item 036D - -Begin of Item 036E - Format 1 - srcBegin = 5606 - srcEnd = 5609 - mappingOffset = 0432 - Mapping = - F7A3 FFFD FFFD CAA9 -End of Item 036E - -Begin of Item 036F - Format 1 - srcBegin = 5614 - srcEnd = 5617 - mappingOffset = 0436 - Mapping = - CFA5 FFFD FFFD DFC4 -End of Item 036F - -Begin of Item 0370 - Format 1 - srcBegin = 562F - srcEnd = 5636 - mappingOffset = 043A - Mapping = - E1B0 FFFD FFFD F0BF FFFD F6A4 FFFD E3B6 -End of Item 0370 - -Begin of Item 0371 - Format 2 - srcBegin = 5653 - destBegin = FAC6 -End of Item 0371 - -Begin of Item 0372 - Format 1 - srcBegin = 5668 - srcEnd = 566B - mappingOffset = 0442 - Mapping = - D0EF FFFD FFFD FDED -End of Item 0372 - -Begin of Item 0373 - Format 2 - srcBegin = 5674 - destBegin = DDC4 -End of Item 0373 - -Begin of Item 0374 - Format 2 - srcBegin = 5686 - destBegin = FCF7 -End of Item 0374 - -Begin of Item 0375 - Format 2 - srcBegin = 56A5 - destBegin = E6BF -End of Item 0375 - -Begin of Item 0376 - Format 1 - srcBegin = 56AC - srcEnd = 56AE - mappingOffset = 0446 - Mapping = - DEAD FFFD FABF -End of Item 0376 - -Begin of Item 0377 - Format 2 - srcBegin = 56B4 - destBegin = E5F1 -End of Item 0377 - -Begin of Item 0378 - Format 2 - srcBegin = 56BC - destBegin = EDC4 -End of Item 0378 - -Begin of Item 0379 - Format 1 - srcBegin = 56CA - srcEnd = 56CD - mappingOffset = 0449 - Mapping = - D2A5 FFFD FFFD FDEE -End of Item 0379 - -Begin of Item 037A - Format 2 - srcBegin = 56D1 - destBegin = F5B6 -End of Item 037A - -Begin of Item 037B - Format 1 - srcBegin = 56DA - srcEnd = 56E0 - mappingOffset = 044D - Mapping = - E1F6 DECC FFFD FFFD FCDE FFFD ECD7 -End of Item 037B - -Begin of Item 037C - Format 2 - srcBegin = 56F0 - destBegin = CDDD -End of Item 037C - -Begin of Item 037D - Format 1 - srcBegin = 56F9 - srcEnd = 56FA - mappingOffset = 0454 - Mapping = - D6B7 CDB3 -End of Item 037D - -Begin of Item 037E - Format 1 - srcBegin = 5703 - srcEnd = 5704 - mappingOffset = 0456 - Mapping = - F8D5 E5D8 -End of Item 037E - -Begin of Item 037F - Format 1 - srcBegin = 5708 - srcEnd = 570D - mappingOffset = 0458 - Mapping = - CFEA FFFD FFFD CFD0 FFFD EACC -End of Item 037F - -Begin of Item 0380 - Format 1 - srcBegin = 5712 - srcEnd = 5718 - mappingOffset = 045E - Mapping = - EAAE EAAD FFFD FFFD D3F1 FFFD D3A5 -End of Item 0380 - -Begin of Item 0381 - Format 2 - srcBegin = 571F - destBegin = F7CF -End of Item 0381 - -Begin of Item 0382 - Format 2 - srcBegin = 5728 - destBegin = EEA4 -End of Item 0382 - -Begin of Item 0383 - Format 1 - srcBegin = 572D - srcEnd = 5730 - mappingOffset = 0465 - Mapping = - D0A4 FFFD FFFD F2A2 -End of Item 0383 - -Begin of Item 0384 - Format 2 - srcBegin = 573B - destBegin = D0F0 -End of Item 0384 - -Begin of Item 0385 - Format 1 - srcBegin = 5740 - srcEnd = 5742 - mappingOffset = 0469 - Mapping = - F2A3 FFFD F7F8 -End of Item 0385 - -Begin of Item 0386 - Format 1 - srcBegin = 5747 - srcEnd = 5751 - mappingOffset = 046C - Mapping = - D0B3 FFFD FFFD DBA9 FFFD FFFD D3BB CAEC - FFFD F1A6 CBD5 -End of Item 0386 - -Begin of Item 0387 - Format 1 - srcBegin = 5761 - srcEnd = 5766 - mappingOffset = 0477 - Mapping = - F7E7 FFFD FFFD CDDE FFFD F7A4 -End of Item 0387 - -Begin of Item 0388 - Format 2 - srcBegin = 576A - destBegin = F8C0 -End of Item 0388 - -Begin of Item 0389 - Format 1 - srcBegin = 576E - srcEnd = 5770 - mappingOffset = 047D - Mapping = - D3DD FFFD CCD0 -End of Item 0389 - -Begin of Item 038A - Format 2 - srcBegin = 5775 - destBegin = CFA6 -End of Item 038A - -Begin of Item 038B - Format 2 - srcBegin = 577C - destBegin = F6F3 -End of Item 038B - -Begin of Item 038C - Format 2 - srcBegin = 5782 - destBegin = E1F7 -End of Item 038C - -Begin of Item 038D - Format 1 - srcBegin = 5788 - srcEnd = 578B - mappingOffset = 0480 - Mapping = - D3DC FFFD FFFD FAFE -End of Item 038D - -Begin of Item 038E - Format 2 - srcBegin = 5793 - destBegin = FAA7 -End of Item 038E - -Begin of Item 038F - Format 1 - srcBegin = 57A0 - srcEnd = 57A3 - mappingOffset = 0484 - Mapping = - EBD9 FFFD CFA7 EAAF -End of Item 038F - -Begin of Item 0390 - Format 2 - srcBegin = 57C3 - destBegin = E4EF -End of Item 0390 - -Begin of Item 0391 - Format 1 - srcBegin = 57C7 - srcEnd = 57CE - mappingOffset = 0488 - Mapping = - E9B9 F1D8 FFFD FFFD D8D8 FFFD FFFD E0F2 -End of Item 0391 - -Begin of Item 0392 - Format 1 - srcBegin = 57DF - srcEnd = 57E0 - mappingOffset = 0490 - Mapping = - E6B4 DCFC -End of Item 0392 - -Begin of Item 0393 - Format 2 - srcBegin = 57F0 - destBegin = F3F1 -End of Item 0393 - -Begin of Item 0394 - Format 1 - srcBegin = 57F4 - srcEnd = 57FC - mappingOffset = 0492 - Mapping = - E3D0 FFFD FFFD F2FB FFFD DBC6 D0F1 FFFD - D0F2 -End of Item 0394 - -Begin of Item 0395 - Format 1 - srcBegin = 5800 - srcEnd = 580A - mappingOffset = 049B - Mapping = - CFDC FFFD D3D1 FFFD FFFD CCB1 F7D8 FFFD - CBA8 EBBC E4BE -End of Item 0395 - -Begin of Item 0396 - Format 1 - srcBegin = 581E - srcEnd = 582A - mappingOffset = 04A6 - Mapping = - F4DC FFFD FFFD DCC2 FFFD FFFD F0A7 FFFD - FFFD E6C0 FFFD FFFD CAED -End of Item 0396 - -Begin of Item 0397 - Format 1 - srcBegin = 582F - srcEnd = 5835 - mappingOffset = 04B3 - Mapping = - E8EB E5E8 DCC3 FFFD FFFD EDDE D3F2 -End of Item 0397 - -Begin of Item 0398 - Format 2 - srcBegin = 583A - destBegin = CCF7 -End of Item 0398 - -Begin of Item 0399 - Format 1 - srcBegin = 584A - srcEnd = 584B - mappingOffset = 04BA - Mapping = - CED4 E7AB -End of Item 0399 - -Begin of Item 039A - Format 1 - srcBegin = 584F - srcEnd = 585A - mappingOffset = 04BC - Mapping = - CBC3 FFFD E1B1 FFFD FFFD F7B2 FFFD FFFD - D3F3 D3D2 FFFD F5C0 -End of Item 039A - -Begin of Item 039B - Format 1 - srcBegin = 585E - srcEnd = 5864 - mappingOffset = 04C8 - Mapping = - DFDD FFFD FFFD EEF3 E7F1 FFFD FDB4 -End of Item 039B - -Begin of Item 039C - Format 2 - srcBegin = 5875 - destBegin = F2C8 -End of Item 039C - -Begin of Item 039D - Format 1 - srcBegin = 5879 - srcEnd = 587E - mappingOffset = 04CF - Mapping = - F3D2 FFFD FFFD EEF4 FFFD E2D3 -End of Item 039D - -Begin of Item 039E - Format 1 - srcBegin = 5883 - srcEnd = 5885 - mappingOffset = 04D5 - Mapping = - CCD1 FFFD DFEA -End of Item 039E - -Begin of Item 039F - Format 2 - srcBegin = 5889 - destBegin = E9BA -End of Item 039F - -Begin of Item 03A0 - Format 2 - srcBegin = 5893 - destBegin = D9D7 -End of Item 03A0 - -Begin of Item 03A1 - Format 1 - srcBegin = 589C - srcEnd = 589F - mappingOffset = 04D8 - Mapping = - F5CD FFFD F1F2 FAC7 -End of Item 03A1 - -Begin of Item 03A2 - Format 1 - srcBegin = 58A8 - srcEnd = 58A9 - mappingOffset = 04DC - Mapping = - D9F8 D4C2 -End of Item 03A2 - -Begin of Item 03A3 - Format 2 - srcBegin = 58AE - destBegin = F6E5 -End of Item 03A3 - -Begin of Item 03A4 - Format 2 - srcBegin = 58B3 - destBegin = DDC5 -End of Item 03A4 - -Begin of Item 03A5 - Format 1 - srcBegin = 58BA - srcEnd = 58C1 - mappingOffset = 04DE - Mapping = - E7F2 EDDF FFFD FFFD CACB FFFD FFFD DBFA -End of Item 03A5 - -Begin of Item 03A6 - Format 1 - srcBegin = 58C5 - srcEnd = 58C7 - mappingOffset = 04E6 - Mapping = - E8B5 FFFD D3A6 -End of Item 03A6 - -Begin of Item 03A7 - Format 1 - srcBegin = 58CE - srcEnd = 58D9 - mappingOffset = 04E9 - Mapping = - FDB5 FFFD FFFD F9C9 FFFD E4E2 FFFD FBBD - FFFD FFFD D7A4 CEC5 -End of Item 03A7 - -Begin of Item 03A8 - Format 1 - srcBegin = 58DE - srcEnd = 58DF - mappingOffset = 04F5 - Mapping = - CED5 D6E6 -End of Item 03A8 - -Begin of Item 03A9 - Format 2 - srcBegin = 58E4 - destBegin = E5BD -End of Item 03A9 - -Begin of Item 03AA - Format 1 - srcBegin = 58EB - srcEnd = 58EF - mappingOffset = 04F7 - Mapping = - DECD ECF3 FFFD FFFD EDE0 -End of Item 03AA - -Begin of Item 03AB - Format 1 - srcBegin = 58F9 - srcEnd = 58FD - mappingOffset = 04FC - Mapping = - ECEC FBBE DFEB FFFD E1F8 -End of Item 03AB - -Begin of Item 03AC - Format 2 - srcBegin = 590F - destBegin = F9BE -End of Item 03AC - -Begin of Item 03AD - Format 1 - srcBegin = 5914 - srcEnd = 591C - mappingOffset = 0501 - Mapping = - D0F3 E0AA E8E2 FFFD FFFD E2D4 D2FD FFFD - E5A8 -End of Item 03AD - -Begin of Item 03AE - Format 2 - srcBegin = 5922 - destBegin = D9D3 -End of Item 03AE - -Begin of Item 03AF - Format 1 - srcBegin = 5927 - srcEnd = 5931 - mappingOffset = 050A - Mapping = - D3DE FFFD F4B8 F7BC DCFD FFFD E8EC E4E7 - FFFD FFFD E3F7 -End of Item 03AF - -Begin of Item 03B0 - Format 2 - srcBegin = 5937 - destBegin = ECA8 -End of Item 03B0 - -Begin of Item 03B1 - Format 2 - srcBegin = 593E - destBegin = FAF1 -End of Item 03B1 - -Begin of Item 03B2 - Format 1 - srcBegin = 5944 - srcEnd = 5949 - mappingOffset = 0515 - Mapping = - E5F2 FFFD FFFD D0F4 D2AF DCE5 -End of Item 03B2 - -Begin of Item 03B3 - Format 1 - srcBegin = 594E - srcEnd = 595A - mappingOffset = 051B - Mapping = - D0A5 F1B4 FCB1 CCF8 FFFD FFFD DDC6 FAD1 - FFFD F7DF FFFD FFFD FAA8 -End of Item 03B3 - -Begin of Item 03B4 - Format 1 - srcBegin = 5960 - srcEnd = 5962 - mappingOffset = 0528 - Mapping = - EEF5 FFFD DECE -End of Item 03B4 - -Begin of Item 03B5 - Format 1 - srcBegin = 5967 - srcEnd = 596E - mappingOffset = 052B - Mapping = - E7F3 FFFD FFFD F7AC EBC4 EDE1 E0AB DDC7 -End of Item 03B5 - -Begin of Item 03B6 - Format 1 - srcBegin = 5973 - srcEnd = 5974 - mappingOffset = 0533 - Mapping = - D2B3 D2BF -End of Item 03B6 - -Begin of Item 03B7 - Format 2 - srcBegin = 5978 - destBegin = CACC -End of Item 03B7 - -Begin of Item 03B8 - Format 2 - srcBegin = 597D - destBegin = FBBF -End of Item 03B8 - -Begin of Item 03B9 - Format 1 - srcBegin = 5982 - srcEnd = 5984 - mappingOffset = 0535 - Mapping = - E5FD DDE5 D8CD -End of Item 03B9 - -Begin of Item 03BA - Format 2 - srcBegin = 598A - destBegin = ECF4 -End of Item 03BA - -Begin of Item 03BB - Format 1 - srcBegin = 5993 - srcEnd = 5999 - mappingOffset = 0538 - Mapping = - D0F5 FFFD FFFD E8ED D0D2 FFFD D9D8 -End of Item 03BB - -Begin of Item 03BC - Format 1 - srcBegin = 59A5 - srcEnd = 59A8 - mappingOffset = 053F - Mapping = - F6E6 FFFD FFFD DBAA -End of Item 03BC - -Begin of Item 03BD - Format 2 - srcBegin = 59AC - destBegin = F7E0 -End of Item 03BD - -Begin of Item 03BE - Format 1 - srcBegin = 59B9 - srcEnd = 59BE - mappingOffset = 0543 - Mapping = - D8D9 FFFD F4A3 FFFD FFFD F4DD -End of Item 03BE - -Begin of Item 03BF - Format 1 - srcBegin = 59C3 - srcEnd = 59CB - mappingOffset = 0549 - Mapping = - EFD1 FFFD FFFD D9B5 FFFD FFFD EDAB FFFD - E3B7 -End of Item 03BF - -Begin of Item 03C0 - Format 1 - srcBegin = 59D0 - srcEnd = 59D4 - mappingOffset = 0552 - Mapping = - EEBB CDB4 FFFD E0F3 EACD -End of Item 03C0 - -Begin of Item 03C1 - Format 1 - srcBegin = 59D9 - srcEnd = 59DD - mappingOffset = 0557 - Mapping = - ECF5 E8EE FFFD CBA9 F1AF -End of Item 03C1 - -Begin of Item 03C2 - Format 1 - srcBegin = 59E6 - srcEnd = 59EE - mappingOffset = 055C - Mapping = - CACD FFFD ECA9 FFFD F2EB FFFD FDEF FFFD - F9F3 -End of Item 03C2 - -Begin of Item 03C3 - Format 1 - srcBegin = 59F8 - srcEnd = 59FB - mappingOffset = 0565 - Mapping = - E6C1 FFFD FFFD ECD8 -End of Item 03C3 - -Begin of Item 03C4 - Format 1 - srcBegin = 59FF - srcEnd = 5A03 - mappingOffset = 0569 - Mapping = - EDAC FFFD EACE FFFD E8DF -End of Item 03C4 - -Begin of Item 03C5 - Format 2 - srcBegin = 5A11 - destBegin = DECF -End of Item 03C5 - -Begin of Item 03C6 - Format 1 - srcBegin = 5A18 - srcEnd = 5A20 - mappingOffset = 056E - Mapping = - D2A6 FFFD FFFD E7F4 D1D6 FFFD FFFD E6C2 - E3E3 -End of Item 03C6 - -Begin of Item 03C7 - Format 2 - srcBegin = 5A25 - destBegin = E4B0 -End of Item 03C7 - -Begin of Item 03C8 - Format 2 - srcBegin = 5A29 - destBegin = D8B4 -End of Item 03C8 - -Begin of Item 03C9 - Format 2 - srcBegin = 5A36 - destBegin = F6A5 -End of Item 03C9 - -Begin of Item 03CA - Format 2 - srcBegin = 5A3C - destBegin = F3DE -End of Item 03CA - -Begin of Item 03CB - Format 2 - srcBegin = 5A41 - destBegin = D7A5 -End of Item 03CB - -Begin of Item 03CC - Format 1 - srcBegin = 5A46 - srcEnd = 5A49 - mappingOffset = 0577 - Mapping = - F7E8 FFFD FFFD E8C6 -End of Item 03CC - -Begin of Item 03CD - Format 2 - srcBegin = 5A5A - destBegin = FBE6 -End of Item 03CD - -Begin of Item 03CE - Format 2 - srcBegin = 5A62 - destBegin = DDE6 -End of Item 03CE - -Begin of Item 03CF - Format 2 - srcBegin = 5A66 - destBegin = DCFE -End of Item 03CF - -Begin of Item 03D0 - Format 2 - srcBegin = 5A92 - destBegin = D8DA -End of Item 03D0 - -Begin of Item 03D1 - Format 1 - srcBegin = 5A9A - srcEnd = 5A9B - mappingOffset = 057B - Mapping = - DAAC EAB0 -End of Item 03D1 - -Begin of Item 03D2 - Format 2 - srcBegin = 5AA4 - destBegin = E3B8 -End of Item 03D2 - -Begin of Item 03D3 - Format 1 - srcBegin = 5AC1 - srcEnd = 5AC4 - mappingOffset = 057D - Mapping = - CAAA E1F9 FFFD EAB1 -End of Item 03D3 - -Begin of Item 03D4 - Format 1 - srcBegin = 5AC9 - srcEnd = 5ACC - mappingOffset = 0581 - Mapping = - F2EC FFFD FFFD FAEE -End of Item 03D4 - -Begin of Item 03D5 - Format 2 - srcBegin = 5AE1 - destBegin = EED5 -End of Item 03D5 - -Begin of Item 03D6 - Format 1 - srcBegin = 5AE6 - srcEnd = 5AE9 - mappingOffset = 0585 - Mapping = - F9F4 FFFD FFFD D2EC -End of Item 03D6 - -Begin of Item 03D7 - Format 2 - srcBegin = 5B05 - destBegin = FBFB -End of Item 03D7 - -Begin of Item 03D8 - Format 1 - srcBegin = 5B09 - srcEnd = 5B0C - mappingOffset = 0589 - Mapping = - FDF0 FFFD E0BD CEE3 -End of Item 03D8 - -Begin of Item 03D9 - Format 2 - srcBegin = 5B16 - destBegin = F8C6 -End of Item 03D9 - -Begin of Item 03DA - Format 2 - srcBegin = 5B2A - destBegin = DEAE -End of Item 03DA - -Begin of Item 03DB - Format 1 - srcBegin = 5B40 - srcEnd = 5B43 - mappingOffset = 058D - Mapping = - DFC5 FFFD FFFD E5BE -End of Item 03DB - -Begin of Item 03DC - Format 1 - srcBegin = 5B50 - srcEnd = 5B5F - mappingOffset = 0591 - Mapping = - EDAD FAEA FFFD FFFD CDEE EDA6 FFFD EDAE - F0ED FFFD DDA1 FFFD EDAF FCF8 FFFD D8EB -End of Item 03DC - -Begin of Item 03DD - Format 1 - srcBegin = 5B63 - srcEnd = 5B64 - mappingOffset = 05A1 - Mapping = - CCF9 CDB5 -End of Item 03DD - -Begin of Item 03DE - Format 1 - srcBegin = 5B69 - srcEnd = 5B6B - mappingOffset = 05A3 - Mapping = - FAA9 FFFD E1DD -End of Item 03DE - -Begin of Item 03DF - Format 1 - srcBegin = 5B70 - srcEnd = 5B71 - mappingOffset = 05A6 - Mapping = - E2D5 EDCF -End of Item 03DF - -Begin of Item 03E0 - Format 1 - srcBegin = 5B75 - srcEnd = 5B7C - mappingOffset = 05A8 - Mapping = - DDA2 FFFD FFFD F9CA FFFD EAE8 FFFD E5ED -End of Item 03E0 - -Begin of Item 03E1 - Format 1 - srcBegin = 5B85 - srcEnd = 5B8F - mappingOffset = 05B0 - Mapping = - D3EB FFFD E9D4 E1FA E4CC FFFD E1E4 E8C7 - FFFD FFFD CEDB -End of Item 03E1 - -Begin of Item 03E2 - Format 1 - srcBegin = 5B93 - srcEnd = 5B9C - mappingOffset = 05BB - Mapping = - DCD5 FFFD F7B5 FCF3 F0F3 CEAF F1B5 EFD2 - E8C8 EBF1 -End of Item 03E2 - -Begin of Item 03E3 - Format 1 - srcBegin = 5BA2 - srcEnd = 5BA6 - mappingOffset = 05C5 - Mapping = - CBD4 E0BE E3F8 EAE9 FCB2 -End of Item 03E3 - -Begin of Item 03E4 - Format 1 - srcBegin = 5BAC - srcEnd = 5BB9 - mappingOffset = 05CA - Mapping = - E0F4 FFFD CFE0 FFFD EEA5 FFFD FFFD FAAA - E6C3 E1B2 CAAB FFFD E3E4 E9BB -End of Item 03E4 - -Begin of Item 03E5 - Format 1 - srcBegin = 5BBF - srcEnd = 5BC7 - mappingOffset = 05D8 - Mapping = - E2D6 F3F2 FFFD EED6 EAB2 D0F6 ECD9 DACB - CFA8 -End of Item 03E5 - -Begin of Item 03E6 - Format 2 - srcBegin = 5BCC - destBegin = DDA3 -End of Item 03E6 - -Begin of Item 03E7 - Format 1 - srcBegin = 5BD0 - srcEnd = 5BD7 - mappingOffset = 05E1 - Mapping = - D8DB FFFD F9CE E9D5 E3D1 FFFD FFFD D2BC -End of Item 03E7 - -Begin of Item 03E8 - Format 1 - srcBegin = 5BDE - srcEnd = 5BEF - mappingOffset = 05E9 - Mapping = - D8AC F3CC FFFD CDFB F6D6 FFFD E7F5 E8EF - E3F9 D2BB F3F3 E3FB FFFD DED0 CEB0 FFFD - D6F7 F1D9 -End of Item 03E8 - -Begin of Item 03E9 - Format 1 - srcBegin = 5BF5 - srcEnd = 5BFA - mappingOffset = 05FB - Mapping = - F5C1 DCC4 FFFD F5BB FFFD DED1 -End of Item 03E9 - -Begin of Item 03EA - Format 1 - srcBegin = 5C01 - srcEnd = 5C11 - mappingOffset = 0601 - Mapping = - DCE6 FFFD FFFD DED2 FFFD FFFD EDE2 EEF6 - EACF F0EE E3FC FFFD D3DF D3F4 E1B3 FFFD - E1B4 -End of Item 03EA - -Begin of Item 03EB - Format 1 - srcBegin = 5C16 - srcEnd = 5C19 - mappingOffset = 0612 - Mapping = - F4D3 FFFD FFFD DFC6 -End of Item 03EB - -Begin of Item 03EC - Format 2 - srcBegin = 5C24 - destBegin = E9D6 -End of Item 03EC - -Begin of Item 03ED - Format 2 - srcBegin = 5C28 - destBegin = DBAB -End of Item 03ED - -Begin of Item 03EE - Format 2 - srcBegin = 5C31 - destBegin = F6A6 -End of Item 03EE - -Begin of Item 03EF - Format 1 - srcBegin = 5C38 - srcEnd = 5C40 - mappingOffset = 0616 - Mapping = - E3B9 EBC5 F4A9 CDB6 D2F9 FFFD DAAD D2E3 - CFD1 -End of Item 03EF - -Begin of Item 03F0 - Format 1 - srcBegin = 5C45 - srcEnd = 5C51 - mappingOffset = 061F - Mapping = - CBDC CCFA FFFD CFDD FFFD FFFD E8A9 FFFD - E3BB E3BA FFFD FFFD E0DA -End of Item 03F0 - -Begin of Item 03F1 - Format 2 - srcBegin = 5C55 - destBegin = EEF7 -End of Item 03F1 - -Begin of Item 03F2 - Format 2 - srcBegin = 5C5B - destBegin = DCB3 -End of Item 03F2 - -Begin of Item 03F3 - Format 1 - srcBegin = 5C60 - srcEnd = 5C65 - mappingOffset = 062C - Mapping = - D3F5 FFFD D7A6 FFFD F6B5 D7DB -End of Item 03F3 - -Begin of Item 03F4 - Format 1 - srcBegin = 5C6C - srcEnd = 5C71 - mappingOffset = 0632 - Mapping = - E1D5 FFFD FFFD D4EA FFFD DFA3 -End of Item 03F4 - -Begin of Item 03F5 - Format 2 - srcBegin = 5C79 - destBegin = FDDF -End of Item 03F5 - -Begin of Item 03F6 - Format 1 - srcBegin = 5C90 - srcEnd = 5C91 - mappingOffset = 0638 - Mapping = - D0F7 EDD4 -End of Item 03F6 - -Begin of Item 03F7 - Format 2 - srcBegin = 5CA1 - destBegin = CBAA -End of Item 03F7 - -Begin of Item 03F8 - Format 1 - srcBegin = 5CA9 - srcEnd = 5CAC - mappingOffset = 063A - Mapping = - E4DB FFFD E1FB CBA2 -End of Item 03F8 - -Begin of Item 03F9 - Format 1 - srcBegin = 5CB1 - srcEnd = 5CBA - mappingOffset = 063E - Mapping = - D3E0 FFFD E4BF FFFD FBC0 FFFD DABE E4CD - FFFD D6B9 -End of Item 03F9 - -Begin of Item 03FA - Format 1 - srcBegin = 5CBE - srcEnd = 5CC0 - mappingOffset = 0648 - Mapping = - EFC0 FFFD E1FC -End of Item 03FA - -Begin of Item 03FB - Format 2 - srcBegin = 5CD9 - destBegin = F6B9 -End of Item 03FB - -Begin of Item 03FC - Format 2 - srcBegin = 5CE0 - destBegin = DFC7 -End of Item 03FC - -Begin of Item 03FD - Format 2 - srcBegin = 5CE8 - destBegin = E4B1 -End of Item 03FD - -Begin of Item 03FE - Format 1 - srcBegin = 5CEF - srcEnd = 5CF0 - mappingOffset = 064B - Mapping = - DCE7 DCE8 -End of Item 03FE - -Begin of Item 03FF - Format 1 - srcBegin = 5CF4 - srcEnd = 5CF6 - mappingOffset = 064D - Mapping = - FAD6 FFFD D3F6 -End of Item 03FF - -Begin of Item 0400 - Format 1 - srcBegin = 5CFB - srcEnd = 5CFD - mappingOffset = 0650 - Mapping = - F1DA FFFD FAF2 -End of Item 0400 - -Begin of Item 0401 - Format 2 - srcBegin = 5D07 - destBegin = E2FD -End of Item 0401 - -Begin of Item 0402 - Format 1 - srcBegin = 5D0D - srcEnd = 5D19 - mappingOffset = 0653 - Mapping = - D5CF D0F8 FFFD FFFD CDDF FFFD FFFD F5CB - FFFD E4F0 CBAB FFFD D7C4 -End of Item 0402 - -Begin of Item 0403 - Format 1 - srcBegin = 5D27 - srcEnd = 5D29 - mappingOffset = 0660 - Mapping = - E2FE FFFD DDDA -End of Item 0403 - -Begin of Item 0404 - Format 1 - srcBegin = 5D4B - srcEnd = 5D4C - mappingOffset = 0663 - Mapping = - DAAE CAEE -End of Item 0404 - -Begin of Item 0405 - Format 2 - srcBegin = 5D50 - destBegin = D5B9 -End of Item 0405 - -Begin of Item 0406 - Format 1 - srcBegin = 5D69 - srcEnd = 5D6F - mappingOffset = 0665 - Mapping = - E3A1 FFFD FFFD E8E3 FFFD FFFD F3AB -End of Item 0406 - -Begin of Item 0407 - Format 2 - srcBegin = 5D87 - destBegin = CFA9 -End of Item 0407 - -Begin of Item 0408 - Format 2 - srcBegin = 5D8B - destBegin = D3F7 -End of Item 0408 - -Begin of Item 0409 - Format 1 - srcBegin = 5D9D - srcEnd = 5DA2 - mappingOffset = 066C - Mapping = - D4F1 FFFD FFFD CEE4 FFFD E8F2 -End of Item 0409 - -Begin of Item 040A - Format 2 - srcBegin = 5DAA - destBegin = E5F5 -End of Item 040A - -Begin of Item 040B - Format 1 - srcBegin = 5DB8 - srcEnd = 5DBD - mappingOffset = 0672 - Mapping = - E7AE FFFD D6BA FFFD DFEC E4C0 -End of Item 040B - -Begin of Item 040C - Format 2 - srcBegin = 5DCD - destBegin = E8E4 -End of Item 040C - -Begin of Item 040D - Format 2 - srcBegin = 5DD2 - destBegin = D8B5 -End of Item 040D - -Begin of Item 040E - Format 2 - srcBegin = 5DD6 - destBegin = E4DC -End of Item 040E - -Begin of Item 040F - Format 1 - srcBegin = 5DDD - srcEnd = 5DF7 - mappingOffset = 0678 - Mapping = - F4B9 F1B6 FFFD FFFD E2DE E1B5 FFFD FFFD - CDEF F1A7 CEE5 CBDD FFFD FFFD D9E3 FFFD - FFFD F3AC FFFD FFFD D0F9 ECAB DED3 F7E9 - FFFD FFFD F9F5 -End of Item 040F - -Begin of Item 0410 - Format 1 - srcBegin = 5DFD - srcEnd = 5DFE - mappingOffset = 0693 - Mapping = - E1DE CBEE -End of Item 0410 - -Begin of Item 0411 - Format 1 - srcBegin = 5E02 - srcEnd = 5E06 - mappingOffset = 0695 - Mapping = - E3BC F8D6 FFFD FFFD DBEE -End of Item 0411 - -Begin of Item 0412 - Format 2 - srcBegin = 5E0C - destBegin = FDF1 -End of Item 0412 - -Begin of Item 0413 - Format 2 - srcBegin = 5E11 - destBegin = F7B6 -End of Item 0413 - -Begin of Item 0414 - Format 1 - srcBegin = 5E16 - srcEnd = 5E1D - mappingOffset = 069A - Mapping = - F4DE FFFD FFFD F2ED FFFD DBD9 FFFD F0A8 -End of Item 0414 - -Begin of Item 0415 - Format 2 - srcBegin = 5E25 - destBegin = E1FD -End of Item 0415 - -Begin of Item 0416 - Format 1 - srcBegin = 5E2B - srcEnd = 5E2D - mappingOffset = 06A2 - Mapping = - DED4 FFFD E0AC -End of Item 0416 - -Begin of Item 0417 - Format 1 - srcBegin = 5E33 - srcEnd = 5E38 - mappingOffset = 06A5 - Mapping = - EDE3 FFFD FFFD D3E1 FFFD DFC8 -End of Item 0417 - -Begin of Item 0418 - Format 1 - srcBegin = 5E3D - srcEnd = 5E40 - mappingOffset = 06AB - Mapping = - D9B6 FFFD FDAC EFD3 -End of Item 0418 - -Begin of Item 0419 - Format 1 - srcBegin = 5E44 - srcEnd = 5E47 - mappingOffset = 06AF - Mapping = - E4C1 F8EB FFFD DBAC -End of Item 0419 - -Begin of Item 041A - Format 2 - srcBegin = 5E4C - destBegin = FCC6 -End of Item 041A - -Begin of Item 041B - Format 2 - srcBegin = 5E55 - destBegin = D8AD -End of Item 041B - -Begin of Item 041C - Format 1 - srcBegin = 5E5F - srcEnd = 5E63 - mappingOffset = 06B3 - Mapping = - F6BA FFFD DBDF D3D3 F8C7 -End of Item 041C - -Begin of Item 041D - Format 1 - srcBegin = 5E72 - srcEnd = 5E7E - mappingOffset = 06B8 - Mapping = - CACE F8C1 D2B4 FFFD FFFD DCB4 FAB9 CACF - FFFD FCB3 EAEA EAEB D0FA -End of Item 041D - -Begin of Item 041E - Format 1 - srcBegin = 5E84 - srcEnd = 5E8A - mappingOffset = 06C5 - Mapping = - EDE4 FFFD FFFD DDE7 FFFD FFFD DFC9 -End of Item 041E - -Begin of Item 041F - Format 2 - srcBegin = 5E8F - destBegin = DFED -End of Item 041F - -Begin of Item 0420 - Format 1 - srcBegin = 5E95 - srcEnd = 5E9C - mappingOffset = 06CC - Mapping = - EEBC FFFD EFC1 FFFD FFFD CCD2 FFFD DDA4 -End of Item 0420 - -Begin of Item 0421 - Format 2 - srcBegin = 5EA0 - destBegin = DFCA -End of Item 0421 - -Begin of Item 0422 - Format 1 - srcBegin = 5EA6 - srcEnd = 5EA7 - mappingOffset = 06D4 - Mapping = - D3F8 F1A8 -End of Item 0422 - -Begin of Item 0423 - Format 1 - srcBegin = 5EAB - srcEnd = 5EAD - mappingOffset = 06D6 - Mapping = - CDB7 FFFD EFD4 -End of Item 0423 - -Begin of Item 0424 - Format 1 - srcBegin = 5EB5 - srcEnd = 5EB8 - mappingOffset = 06D9 - Mapping = - E4DD DFEE CBAC E9BC -End of Item 0424 - -Begin of Item 0425 - Format 2 - srcBegin = 5EBE - destBegin = EAEC -End of Item 0425 - -Begin of Item 0426 - Format 2 - srcBegin = 5EC2 - destBegin = DFCB -End of Item 0426 - -Begin of Item 0427 - Format 1 - srcBegin = 5EC8 - srcEnd = 5ECA - mappingOffset = 06DD - Mapping = - F9BF D6AF D5C6 -End of Item 0427 - -Begin of Item 0428 - Format 1 - srcBegin = 5ED0 - srcEnd = 5ED6 - mappingOffset = 06E0 - Mapping = - CFAA FFFD FFFD CEA9 FFFD FFFD D6F8 -End of Item 0428 - -Begin of Item 0429 - Format 1 - srcBegin = 5EDA - srcEnd = 5EDB - mappingOffset = 06E7 - Mapping = - F1B7 EEF8 -End of Item 0429 - -Begin of Item 042A - Format 1 - srcBegin = 5EDF - srcEnd = 5EE3 - mappingOffset = 06E9 - Mapping = - D9D9 F3DF FFFD F8C8 CEC6 -End of Item 042A - -Begin of Item 042B - Format 2 - srcBegin = 5EEC - destBegin = D5E6 -End of Item 042B - -Begin of Item 042C - Format 1 - srcBegin = 5EF3 - srcEnd = 5EFB - mappingOffset = 06EE - Mapping = - F4E6 FFFD FFFD E6C5 EFD5 FFFD FFFD CBEF - FCDF -End of Item 042C - -Begin of Item 042D - Format 1 - srcBegin = 5F01 - srcEnd = 5F04 - mappingOffset = 06F7 - Mapping = - DCA7 FFFD FFFD D6E7 -End of Item 042D - -Begin of Item 042E - Format 2 - srcBegin = 5F0A - destBegin = F8C9 -End of Item 042E - -Begin of Item 042F - Format 1 - srcBegin = 5F0F - srcEnd = 5F1B - mappingOffset = 06FB - Mapping = - E3D2 FFFD E3BD FFFD CFE1 F0C0 ECDA FFFD - DDD7 FBF0 FFFD FFFD ECAC -End of Item 042F - -Begin of Item 0430 - Format 2 - srcBegin = 5F1F - destBegin = F0A9 -End of Item 0430 - -Begin of Item 0431 - Format 1 - srcBegin = 5F26 - srcEnd = 5F29 - mappingOffset = 0708 - Mapping = - FAD7 FBC1 FFFD D2C0 -End of Item 0431 - -Begin of Item 0432 - Format 2 - srcBegin = 5F31 - destBegin = E5B0 -End of Item 0432 - -Begin of Item 0433 - Format 2 - srcBegin = 5F35 - destBegin = EDE5 -End of Item 0433 - -Begin of Item 0434 - Format 1 - srcBegin = 5F3A - srcEnd = 5F3C - mappingOffset = 070C - Mapping = - CBAD FFFD F9B0 -End of Item 0434 - -Begin of Item 0435 - Format 1 - srcBegin = 5F48 - srcEnd = 5F4E - mappingOffset = 070F - Mapping = - F7A5 FFFD CBAE FFFD DAAF FFFD D8B6 -End of Item 0435 - -Begin of Item 0436 - Format 1 - srcBegin = 5F56 - srcEnd = 5F5B - mappingOffset = 0716 - Mapping = - D3A7 FBB2 FFFD FDC4 FFFD ECAD -End of Item 0436 - -Begin of Item 0437 - Format 2 - srcBegin = 5F62 - destBegin = FBA1 -End of Item 0437 - -Begin of Item 0438 - Format 1 - srcBegin = 5F66 - srcEnd = 5F71 - mappingOffset = 071C - Mapping = - E5E9 E9EE FFFD F3F4 F8F3 F0C1 DEAF F8B0 - FFFD FFFD F3E0 E7AF -End of Item 0438 - -Begin of Item 0439 - Format 1 - srcBegin = 5F77 - srcEnd = 5F81 - mappingOffset = 0728 - Mapping = - DBAD FFFD E6B5 FFFD FFFD F9A8 FFFD FFFD - DDD8 E8D9 EFD6 -End of Item 0439 - -Begin of Item 043A - Format 1 - srcBegin = 5F85 - srcEnd = 5F8C - mappingOffset = 0733 - Mapping = - D3E2 FFFD E2DF FFFD FFFD FCE0 D7C8 FDAD -End of Item 043A - -Begin of Item 043B - Format 1 - srcBegin = 5F90 - srcEnd = 5F92 - mappingOffset = 073B - Mapping = - DFEF CCD3 D3F9 -End of Item 043B - -Begin of Item 043C - Format 1 - srcBegin = 5F97 - srcEnd = 5F99 - mappingOffset = 073E - Mapping = - D4F0 DBC7 DED5 -End of Item 043C - -Begin of Item 043D - Format 1 - srcBegin = 5F9E - srcEnd = 5FA1 - mappingOffset = 0741 - Mapping = - F0F4 FFFD D5D0 E5D9 -End of Item 043D - -Begin of Item 043E - Format 1 - srcBegin = 5FA8 - srcEnd = 5FAA - mappingOffset = 0745 - Mapping = - FCC7 DCD6 E2E0 -End of Item 043E - -Begin of Item 043F - Format 2 - srcBegin = 5FAE - destBegin = DAB0 -End of Item 043F - -Begin of Item 0440 - Format 1 - srcBegin = 5FB5 - srcEnd = 5FB9 - mappingOffset = 0748 - Mapping = - F3A3 FFFD D3EC FFFD F4CB -End of Item 0440 - -Begin of Item 0441 - Format 2 - srcBegin = 5FBD - destBegin = FDC5 -End of Item 0441 - -Begin of Item 0442 - Format 1 - srcBegin = 5FC3 - srcEnd = 5FC5 - mappingOffset = 074D - Mapping = - E3FD FFFD F9B1 -End of Item 0442 - -Begin of Item 0443 - Format 1 - srcBegin = 5FCC - srcEnd = 5FCD - mappingOffset = 0750 - Mapping = - D0FB ECDB -End of Item 0443 - -Begin of Item 0444 - Format 1 - srcBegin = 5FD6 - srcEnd = 5FD9 - mappingOffset = 0752 - Mapping = - F5BC F2A4 D8CE D8CF -End of Item 0444 - -Begin of Item 0445 - Format 2 - srcBegin = 5FE0 - destBegin = F5F7 -End of Item 0445 - -Begin of Item 0446 - Format 2 - srcBegin = 5FEB - destBegin = F6E1 -End of Item 0446 - -Begin of Item 0447 - Format 2 - srcBegin = 5FF5 - destBegin = D2B7 -End of Item 0447 - -Begin of Item 0448 - Format 1 - srcBegin = 5FFD - srcEnd = 5FFF - mappingOffset = 0756 - Mapping = - FBEC FFFD DDC8 -End of Item 0448 - -Begin of Item 0449 - Format 1 - srcBegin = 600F - srcEnd = 6012 - mappingOffset = 0759 - Mapping = - E4E8 FFFD FFFD D2C1 -End of Item 0449 - -Begin of Item 044A - Format 2 - srcBegin = 6016 - destBegin = F8D7 -End of Item 044A - -Begin of Item 044B - Format 1 - srcBegin = 601C - srcEnd = 6021 - mappingOffset = 075D - Mapping = - D6BB DED6 FFFD FFFD F7BD ECAE -End of Item 044B - -Begin of Item 044C - Format 1 - srcBegin = 6025 - srcEnd = 602A - mappingOffset = 0763 - Mapping = - D0E1 FFFD E0F5 EAB3 FFFD CED6 -End of Item 044C - -Begin of Item 044D - Format 2 - srcBegin = 602F - destBegin = CCA5 -End of Item 044D - -Begin of Item 044E - Format 1 - srcBegin = 6041 - srcEnd = 6043 - mappingOffset = 0769 - Mapping = - ECF6 E2E1 E3BE -End of Item 044E - -Begin of Item 044F - Format 1 - srcBegin = 604D - srcEnd = 6055 - mappingOffset = 076C - Mapping = - FCC8 FFFD FFFD CDF0 FFFD F9F6 FFFD FFFD - DFF0 -End of Item 044F - -Begin of Item 0450 - Format 2 - srcBegin = 6059 - destBegin = E5BF -End of Item 0450 - -Begin of Item 0451 - Format 2 - srcBegin = 605D - destBegin = CEBF -End of Item 0451 - -Begin of Item 0452 - Format 1 - srcBegin = 6062 - srcEnd = 6070 - mappingOffset = 0775 - Mapping = - FCE1 EDB0 FDD1 F6BB FFFD FFFD F9CF EBDA - CAC1 FFFD D2B8 CDF1 FFFD E3D3 FDE6 -End of Item 0452 - -Begin of Item 0453 - Format 2 - srcBegin = 6085 - destBegin = E6ED -End of Item 0453 - -Begin of Item 0454 - Format 1 - srcBegin = 6089 - srcEnd = 608D - mappingOffset = 0784 - Mapping = - E3FA FFFD FFFD F0AA F9D0 -End of Item 0454 - -Begin of Item 0455 - Format 1 - srcBegin = 6094 - srcEnd = 6096 - mappingOffset = 0789 - Mapping = - FCE2 FFFD F8A7 -End of Item 0455 - -Begin of Item 0456 - Format 1 - srcBegin = 609A - srcEnd = 609B - mappingOffset = 078C - Mapping = - E1E5 EEF9 -End of Item 0456 - -Begin of Item 0457 - Format 1 - srcBegin = 609F - srcEnd = 60A7 - mappingOffset = 078E - Mapping = - E7F6 EAED FFFD FFFD FCB4 F5C2 FFFD FFFD - D7DC -End of Item 0457 - -Begin of Item 0458 - Format 1 - srcBegin = 60B0 - srcEnd = 60B8 - mappingOffset = 0797 - Mapping = - F0F5 FFFD DDE8 D3ED F5FC FFFD DABF FFFD - CCFB -End of Item 0458 - -Begin of Item 0459 - Format 1 - srcBegin = 60BC - srcEnd = 60BD - mappingOffset = 07A0 - Mapping = - D3FA F4A4 -End of Item 0459 - -Begin of Item 045A - Format 1 - srcBegin = 60C5 - srcEnd = 60C7 - mappingOffset = 07A2 - Mapping = - EFD7 FFFD D4C3 -End of Item 045A - -Begin of Item 045B - Format 2 - srcBegin = 60D1 - destBegin = FBE3 -End of Item 045B - -Begin of Item 045C - Format 1 - srcBegin = 60DA - srcEnd = 60E1 - mappingOffset = 07A5 - Mapping = - FBED FFFD E0AD FFFD FFFD EAEE FBB3 E4C2 -End of Item 045C - -Begin of Item 045D - Format 1 - srcBegin = 60F0 - srcEnd = 60FB - mappingOffset = 07AD - Mapping = - F6E7 D2DD FFFD DFCC FFFD FFFD FCC9 FFFD - FFFD E5A9 E0F6 F6B3 -End of Item 045D - -Begin of Item 045E - Format 2 - srcBegin = 6101 - destBegin = E1FE -End of Item 045E - -Begin of Item 045F - Format 1 - srcBegin = 6106 - srcEnd = 6109 - mappingOffset = 07B9 - Mapping = - CBF0 FFFD EAEF EAF0 -End of Item 045F - -Begin of Item 0460 - Format 1 - srcBegin = 610D - srcEnd = 610F - mappingOffset = 07BD - Mapping = - DAC0 F8B4 EBF2 -End of Item 0460 - -Begin of Item 0461 - Format 2 - srcBegin = 6115 - destBegin = E4C3 -End of Item 0461 - -Begin of Item 0462 - Format 1 - srcBegin = 611A - srcEnd = 611B - mappingOffset = 07C0 - Mapping = - E9D7 E4F1 -End of Item 0462 - -Begin of Item 0463 - Format 2 - srcBegin = 611F - destBegin = CAEF -End of Item 0463 - -Begin of Item 0464 - Format 2 - srcBegin = 6127 - destBegin = CED7 -End of Item 0464 - -Begin of Item 0465 - Format 2 - srcBegin = 6130 - destBegin = FCCA -End of Item 0465 - -Begin of Item 0466 - Format 1 - srcBegin = 6134 - srcEnd = 6137 - mappingOffset = 07C2 - Mapping = - F3E1 FFFD FFFD CBC4 -End of Item 0466 - -Begin of Item 0467 - Format 1 - srcBegin = 613C - srcEnd = 614C - mappingOffset = 07C6 - Mapping = - E3E5 FFFD CBC5 EAB4 FFFD FFFD E9BD FFFD - D7C9 FFFD FFFD EBDB EDB1 FFFD CCC3 F7BE - FCCB -End of Item 0467 - -Begin of Item 0468 - Format 1 - srcBegin = 6153 - srcEnd = 6159 - mappingOffset = 07D7 - Mapping = - F8F4 FFFD D9B7 FFFD FFFD F3D3 F3D4 -End of Item 0468 - -Begin of Item 0469 - Format 1 - srcBegin = 615D - srcEnd = 6170 - mappingOffset = 07DE - Mapping = - F7E4 FFFD F7D1 FFFD FFFD D8B7 CEB1 CAC2 - FFFD FFFD FBB4 CBC6 FFFD FFFD F0F6 FFFD - FFFD D5E7 FFFD EAD0 -End of Item 0469 - -Begin of Item 046A - Format 1 - srcBegin = 6176 - srcEnd = 6177 - mappingOffset = 07F2 - Mapping = - CCD4 CBAF -End of Item 046A - -Begin of Item 046B - Format 1 - srcBegin = 617D - srcEnd = 6182 - mappingOffset = 07F4 - Mapping = - F4AA E9AF FFFD FFFD F5C3 E9D8 -End of Item 046B - -Begin of Item 046C - Format 2 - srcBegin = 618A - destBegin = DDE9 -End of Item 046C - -Begin of Item 046D - Format 1 - srcBegin = 618E - srcEnd = 6194 - mappingOffset = 07FA - Mapping = - F1F3 FFFD D5FB DEBB FFFD FFFD F4FB -End of Item 046D - -Begin of Item 046E - Format 1 - srcBegin = 6198 - srcEnd = 619A - mappingOffset = 0801 - Mapping = - FDF3 FDF2 F7A6 -End of Item 046E - -Begin of Item 046F - Format 1 - srcBegin = 61A4 - srcEnd = 61AE - mappingOffset = 0804 - Mapping = - DDC9 FFFD FFFD D4D3 FFFD CCA8 FFFD DAC1 - CCD5 FFFD D9E4 -End of Item 046F - -Begin of Item 0470 - Format 2 - srcBegin = 61B2 - destBegin = FACA -End of Item 0470 - -Begin of Item 0471 - Format 2 - srcBegin = 61B6 - destBegin = E5E3 -End of Item 0471 - -Begin of Item 0472 - Format 2 - srcBegin = 61BA - destBegin = D3BC -End of Item 0472 - -Begin of Item 0473 - Format 2 - srcBegin = 61BE - destBegin = CAF0 -End of Item 0473 - -Begin of Item 0474 - Format 2 - srcBegin = 61C3 - destBegin = D0C4 -End of Item 0474 - -Begin of Item 0475 - Format 1 - srcBegin = 61C7 - srcEnd = 61CB - mappingOffset = 080F - Mapping = - CAD0 FAAB EBEB E7F8 D9E5 -End of Item 0475 - -Begin of Item 0476 - Format 2 - srcBegin = 61E6 - destBegin = D1D7 -End of Item 0476 - -Begin of Item 0477 - Format 2 - srcBegin = 61F2 - destBegin = F3A4 -End of Item 0477 - -Begin of Item 0478 - Format 1 - srcBegin = 61F6 - srcEnd = 6200 - mappingOffset = 0814 - Mapping = - D4FB FCE3 FAD8 FFFD F3D5 FFFD CFAB FFFD - FFFD EBF3 D5FC -End of Item 0478 - -Begin of Item 0479 - Format 1 - srcBegin = 6207 - srcEnd = 6212 - mappingOffset = 081F - Mapping = - D3D4 CDFC FFFD D9E6 FFFD E2F9 E2A1 EBD4 - FFFD E0F7 E4B2 CCFC -End of Item 0479 - -Begin of Item 047A - Format 2 - srcBegin = 6216 - destBegin = FBE4 -End of Item 047A - -Begin of Item 047B - Format 2 - srcBegin = 621A - destBegin = F4AB -End of Item 047B - -Begin of Item 047C - Format 1 - srcBegin = 621F - srcEnd = 6221 - mappingOffset = 082B - Mapping = - D0BD FFFD CAF1 -End of Item 047C - -Begin of Item 047D - Format 2 - srcBegin = 622A - destBegin = EFB8 -End of Item 047D - -Begin of Item 047E - Format 1 - srcBegin = 622E - srcEnd = 6236 - mappingOffset = 082E - Mapping = - D7C0 FFFD EEFA FDF4 FFFD FFFD D3E3 FFFD - FBC2 -End of Item 047E - -Begin of Item 047F - Format 1 - srcBegin = 623E - srcEnd = 6241 - mappingOffset = 0837 - Mapping = - D5E8 DBAE E1B6 F8B7 -End of Item 047F - -Begin of Item 0480 - Format 1 - srcBegin = 6247 - srcEnd = 624D - mappingOffset = 083B - Mapping = - E0BF FBC3 DDEA FFFD E2A2 FFFD EEA6 -End of Item 0480 - -Begin of Item 0481 - Format 2 - srcBegin = 6253 - destBegin = F6E8 -End of Item 0481 - -Begin of Item 0482 - Format 2 - srcBegin = 6258 - destBegin = F6F5 -End of Item 0482 - -Begin of Item 0483 - Format 1 - srcBegin = 626E - srcEnd = 6271 - mappingOffset = 0842 - Mapping = - DDCA FFFD FFFD D0E2 -End of Item 0483 - -Begin of Item 0484 - Format 1 - srcBegin = 6276 - srcEnd = 6280 - mappingOffset = 0846 - Mapping = - DDA6 FFFD FFFD DDEB FFFD FFFD E4F9 FFFD - FFFD E3AF D0FC -End of Item 0484 - -Begin of Item 0485 - Format 2 - srcBegin = 6284 - destBegin = F4FC -End of Item 0485 - -Begin of Item 0486 - Format 1 - srcBegin = 6289 - srcEnd = 628A - mappingOffset = 0851 - Mapping = - CCBC F7EA -End of Item 0486 - -Begin of Item 0487 - Format 1 - srcBegin = 6291 - srcEnd = 629B - mappingOffset = 0853 - Mapping = - E5E4 DFF1 FFFD FFFD F7E1 FFFD F9F7 EFB9 - FFFD FFFD F8D8 -End of Item 0487 - -Begin of Item 0488 - Format 2 - srcBegin = 62AB - destBegin = F9A9 -End of Item 0488 - -Begin of Item 0489 - Format 2 - srcBegin = 62B1 - destBegin = F8D9 -End of Item 0489 - -Begin of Item 048A - Format 2 - srcBegin = 62B5 - destBegin = EEBD -End of Item 048A - -Begin of Item 048B - Format 1 - srcBegin = 62B9 - srcEnd = 62BD - mappingOffset = 085E - Mapping = - D8C6 FFFD FFFD E4E3 F5CE -End of Item 048B - -Begin of Item 048C - Format 2 - srcBegin = 62C2 - destBegin = DDD9 -End of Item 048C - -Begin of Item 048D - Format 1 - srcBegin = 62C7 - srcEnd = 62DC - mappingOffset = 0863 - Mapping = - D9E7 D2B9 D5C3 FFFD FFFD DAE5 DAD0 FFFD - D1D9 CED8 FFFD CBDE F4AC DAFB FFFD F6E9 - E8F3 CFAC F0F0 FFFD F4FD DBC8 -End of Item 048D - -Begin of Item 048E - Format 1 - srcBegin = 62EC - srcEnd = 62F3 - mappingOffset = 0879 - Mapping = - CEC0 E3D4 D1CF F1F5 FFFD CDF2 FFFD CFEB -End of Item 048E - -Begin of Item 048F - Format 2 - srcBegin = 62F7 - destBegin = CDB8 -End of Item 048F - -Begin of Item 0490 - Format 1 - srcBegin = 62FE - srcEnd = 6301 - mappingOffset = 0881 - Mapping = - E3A6 D1DA FFFD F2A5 -End of Item 0490 - -Begin of Item 0491 - Format 1 - srcBegin = 6307 - srcEnd = 6309 - mappingOffset = 0885 - Mapping = - F2A6 FFFD E4CE -End of Item 0491 - -Begin of Item 0492 - Format 2 - srcBegin = 6311 - destBegin = D3FB -End of Item 0492 - -Begin of Item 0493 - Format 2 - srcBegin = 632B - destBegin = F1A9 -End of Item 0493 - -Begin of Item 0494 - Format 2 - srcBegin = 632F - destBegin = F2C9 -End of Item 0494 - -Begin of Item 0495 - Format 1 - srcBegin = 633A - srcEnd = 633E - mappingOffset = 0888 - Mapping = - EFD8 E6C9 FFFD D8B8 FAF3 -End of Item 0495 - -Begin of Item 0496 - Format 1 - srcBegin = 6349 - srcEnd = 6350 - mappingOffset = 088D - Mapping = - F3B5 FFFD FFFD F8A4 FFFD FFFD D1F3 E6C8 -End of Item 0496 - -Begin of Item 0497 - Format 2 - srcBegin = 6355 - destBegin = F8DA -End of Item 0497 - -Begin of Item 0498 - Format 1 - srcBegin = 6367 - srcEnd = 6368 - mappingOffset = 0895 - Mapping = - DCE9 DED7 -End of Item 0498 - -Begin of Item 0499 - Format 2 - srcBegin = 636E - destBegin = CBDF -End of Item 0499 - -Begin of Item 049A - Format 2 - srcBegin = 6372 - destBegin = CFEC -End of Item 049A - -Begin of Item 049B - Format 1 - srcBegin = 6377 - srcEnd = 637B - mappingOffset = 0897 - Mapping = - F4DF FFFD FFFD D1F4 D2BA -End of Item 049B - -Begin of Item 049C - Format 2 - srcBegin = 637F - destBegin = DFF2 -End of Item 049C - -Begin of Item 049D - Format 2 - srcBegin = 6383 - destBegin = E1B7 -End of Item 049D - -Begin of Item 049E - Format 1 - srcBegin = 6388 - srcEnd = 638C - mappingOffset = 089C - Mapping = - E2A3 D3FC FFFD FFFD EDE6 -End of Item 049E - -Begin of Item 049F - Format 2 - srcBegin = 6392 - destBegin = DBC9 -End of Item 049F - -Begin of Item 04A0 - Format 1 - srcBegin = 6396 - srcEnd = 639B - mappingOffset = 08A1 - Mapping = - E4FA FFFD CFDE FFFD FFFD CED0 -End of Item 04A0 - -Begin of Item 04A1 - Format 1 - srcBegin = 63A0 - srcEnd = 63AA - mappingOffset = 08A7 - Mapping = - D5D3 F3F5 F7AE FFFD FFFD EFC8 FFFD CDF3 - F5CF E5F3 F0C2 -End of Item 04A1 - -Begin of Item 04A2 - Format 2 - srcBegin = 63C0 - destBegin = CAD1 -End of Item 04A2 - -Begin of Item 04A3 - Format 1 - srcBegin = 63C4 - srcEnd = 63C6 - mappingOffset = 08B2 - Mapping = - EAF1 FFFD D0A6 -End of Item 04A3 - -Begin of Item 04A4 - Format 1 - srcBegin = 63CF - srcEnd = 63D0 - mappingOffset = 08B5 - Mapping = - D9DA F0AB -End of Item 04A4 - -Begin of Item 04A5 - Format 2 - srcBegin = 63D6 - destBegin = EBE7 -End of Item 04A5 - -Begin of Item 04A6 - Format 1 - srcBegin = 63DA - srcEnd = 63DB - mappingOffset = 08B7 - Mapping = - E5C0 FCB5 -End of Item 04A6 - -Begin of Item 04A7 - Format 2 - srcBegin = 63E1 - destBegin = E4C4 -End of Item 04A7 - -Begin of Item 04A8 - Format 1 - srcBegin = 63ED - srcEnd = 63EE - mappingOffset = 08B9 - Mapping = - CCA9 FDC6 -End of Item 04A8 - -Begin of Item 04A9 - Format 1 - srcBegin = 63F4 - srcEnd = 63F7 - mappingOffset = 08BB - Mapping = - EAB5 FFFD E5AA DFBA -End of Item 04A9 - -Begin of Item 04AA - Format 1 - srcBegin = 640D - srcEnd = 640F - mappingOffset = 08BF - Mapping = - E1DF FFFD DAD1 -End of Item 04AA - -Begin of Item 04AB - Format 1 - srcBegin = 6414 - srcEnd = 6417 - mappingOffset = 08C2 - Mapping = - E1B8 FFFD E8F4 D3FD -End of Item 04AB - -Begin of Item 04AC - Format 2 - srcBegin = 641C - destBegin = E2A4 -End of Item 04AC - -Begin of Item 04AD - Format 2 - srcBegin = 6422 - destBegin = F2CA -End of Item 04AD - -Begin of Item 04AE - Format 1 - srcBegin = 642C - srcEnd = 642D - mappingOffset = 08C6 - Mapping = - DAE6 F7B3 -End of Item 04AE - -Begin of Item 04AF - Format 2 - srcBegin = 643A - destBegin = FDCD -End of Item 04AF - -Begin of Item 04B0 - Format 2 - srcBegin = 643E - destBegin = F3B6 -End of Item 04B0 - -Begin of Item 04B1 - Format 2 - srcBegin = 6458 - destBegin = EED7 -End of Item 04B1 - -Begin of Item 04B2 - Format 2 - srcBegin = 6460 - destBegin = F5C4 -End of Item 04B2 - -Begin of Item 04B3 - Format 2 - srcBegin = 6469 - destBegin = D8A4 -End of Item 04B3 - -Begin of Item 04B4 - Format 2 - srcBegin = 646F - destBegin = F2A7 -End of Item 04B4 - -Begin of Item 04B5 - Format 1 - srcBegin = 6478 - srcEnd = 647A - mappingOffset = 08C8 - Mapping = - D9B8 D9B9 EFC9 -End of Item 04B5 - -Begin of Item 04B6 - Format 2 - srcBegin = 6488 - destBegin = D6CE -End of Item 04B6 - -Begin of Item 04B7 - Format 1 - srcBegin = 6491 - srcEnd = 6493 - mappingOffset = 08CB - Mapping = - F7CB DFAE E8F5 -End of Item 04B7 - -Begin of Item 04B8 - Format 2 - srcBegin = 649A - destBegin = D2B5 -End of Item 04B8 - -Begin of Item 04B9 - Format 2 - srcBegin = 649E - destBegin = D3D5 -End of Item 04B9 - -Begin of Item 04BA - Format 1 - srcBegin = 64A4 - srcEnd = 64A5 - mappingOffset = 08CE - Mapping = - F4CC DAFC -End of Item 04BA - -Begin of Item 04BB - Format 1 - srcBegin = 64AB - srcEnd = 64B2 - mappingOffset = 08D0 - Mapping = - D9E8 FFFD F7EB F5C9 FFFD F3BC FFFD DAD2 -End of Item 04BB - -Begin of Item 04BC - Format 2 - srcBegin = 64BB - destBegin = D3B5 -End of Item 04BC - -Begin of Item 04BD - Format 1 - srcBegin = 64C1 - srcEnd = 64CE - mappingOffset = 08D8 - Mapping = - E8B6 FFFD FFFD D6CF F4BA FFFD F7C9 FFFD - FFFD CCAA FFFD FFFD F0C3 CCD6 -End of Item 04BD - -Begin of Item 04BE - Format 1 - srcBegin = 64D2 - srcEnd = 64D4 - mappingOffset = 08E6 - Mapping = - D0D3 FFFD D3BD -End of Item 04BE - -Begin of Item 04BF - Format 1 - srcBegin = 64D8 - srcEnd = 64DA - mappingOffset = 08E9 - Mapping = - DBFB FFFD CBE0 -End of Item 04BF - -Begin of Item 04C0 - Format 1 - srcBegin = 64E1 - srcEnd = 64E7 - mappingOffset = 08EC - Mapping = - D3E4 F6F7 FFFD FFFD D5BA F3CD CBE1 -End of Item 04C0 - -Begin of Item 04C1 - Format 2 - srcBegin = 64EC - destBegin = EBF4 -End of Item 04C1 - -Begin of Item 04C2 - Format 1 - srcBegin = 64F2 - srcEnd = 64F4 - mappingOffset = 08F3 - Mapping = - F4AD FFFD FCAA -End of Item 04C2 - -Begin of Item 04C3 - Format 2 - srcBegin = 64FA - destBegin = F7EC -End of Item 04C3 - -Begin of Item 04C4 - Format 1 - srcBegin = 64FE - srcEnd = 6500 - mappingOffset = 08F6 - Mapping = - E8F6 FFFD DAE7 -End of Item 04C4 - -Begin of Item 04C5 - Format 2 - srcBegin = 6504 - destBegin = F7CC -End of Item 04C5 - -Begin of Item 04C6 - Format 2 - srcBegin = 6518 - destBegin = E5C1 -End of Item 04C6 - -Begin of Item 04C7 - Format 2 - srcBegin = 651D - destBegin = E0EE -End of Item 04C7 - -Begin of Item 04C8 - Format 2 - srcBegin = 6523 - destBegin = D5FD -End of Item 04C8 - -Begin of Item 04C9 - Format 1 - srcBegin = 652A - srcEnd = 652F - mappingOffset = 08F9 - Mapping = - CEE6 FCAB D5BB FFFD FFFD F2A8 -End of Item 04C9 - -Begin of Item 04CA - Format 1 - srcBegin = 6536 - srcEnd = 653F - mappingOffset = 08FF - Mapping = - E2A5 CDB9 EAF2 CBC7 FFFD CDF4 FFFD FFFD - DBAF EFD9 -End of Item 04CA - -Begin of Item 04CB - Format 1 - srcBegin = 6545 - srcEnd = 6548 - mappingOffset = 0909 - Mapping = - CDBA FFFD FFFD FCF9 -End of Item 04CB - -Begin of Item 04CC - Format 1 - srcBegin = 654D - srcEnd = 6551 - mappingOffset = 090D - Mapping = - DFF3 CEE7 DAC2 FFFD CFAD -End of Item 04CC - -Begin of Item 04CD - Format 1 - srcBegin = 6556 - srcEnd = 6557 - mappingOffset = 0912 - Mapping = - E7F9 F8A8 -End of Item 04CD - -Begin of Item 04CE - Format 2 - srcBegin = 655E - destBegin = F3E2 -End of Item 04CE - -Begin of Item 04CF - Format 1 - srcBegin = 6562 - srcEnd = 6566 - mappingOffset = 0914 - Mapping = - CAF2 DFA4 FFFD FFFD D4C4 -End of Item 04CF - -Begin of Item 04D0 - Format 1 - srcBegin = 656C - srcEnd = 656D - mappingOffset = 0919 - Mapping = - CCD7 E5C2 -End of Item 04D0 - -Begin of Item 04D1 - Format 1 - srcBegin = 6572 - srcEnd = 6578 - mappingOffset = 091B - Mapping = - CDBB FFFD EFDA EED8 FFFD DDA7 E2A6 -End of Item 04D1 - -Begin of Item 04D2 - Format 2 - srcBegin = 657E - destBegin = E0C0 -End of Item 04D2 - -Begin of Item 04D3 - Format 1 - srcBegin = 6582 - srcEnd = 6587 - mappingOffset = 0922 - Mapping = - D6B0 F8CA FFFD FCFA FFFD D9FE -End of Item 04D3 - -Begin of Item 04D4 - Format 2 - srcBegin = 658C - destBegin = DEB0 -End of Item 04D4 - -Begin of Item 04D5 - Format 1 - srcBegin = 6590 - srcEnd = 6591 - mappingOffset = 0928 - Mapping = - DDEC DAE8 -End of Item 04D5 - -Begin of Item 04D6 - Format 1 - srcBegin = 6597 - srcEnd = 65A7 - mappingOffset = 092A - Mapping = - D4E0 FFFD D6F9 FFFD CDD7 DED8 FFFD FFFD - F2F8 FFFD E4D6 FFFD FFFD D0C5 F4AE FFFD - DDA8 -End of Item 04D6 - -Begin of Item 04D7 - Format 1 - srcBegin = 65AB - srcEnd = 65B0 - mappingOffset = 093B - Mapping = - EDC5 F3D6 FFFD FFFD DED9 E3E6 -End of Item 04D7 - -Begin of Item 04D8 - Format 1 - srcBegin = 65B7 - srcEnd = 65BD - mappingOffset = 0941 - Mapping = - D3A8 FFFD DBB0 FFFD FFFD E5DA E3BF -End of Item 04D8 - -Begin of Item 04D9 - Format 2 - srcBegin = 65C1 - destBegin = DBB1 -End of Item 04D9 - -Begin of Item 04DA - Format 2 - srcBegin = 65C5 - destBegin = D5E9 -End of Item 04DA - -Begin of Item 04DB - Format 1 - srcBegin = 65CB - srcEnd = 65D2 - mappingOffset = 0948 - Mapping = - E0C1 EFDB FFFD FFFD F0E9 FFFD FFFD D7B2 -End of Item 04DB - -Begin of Item 04DC - Format 2 - srcBegin = 65D7 - destBegin = D0FD -End of Item 04DC - -Begin of Item 04DD - Format 1 - srcBegin = 65E0 - srcEnd = 65ED - mappingOffset = 0950 - Mapping = - D9E9 FFFD FFFD D0FE FFFD ECED D3A9 FFFD - F2A9 F0C4 FFFD FFFD E2E2 E9EF -End of Item 04DD - -Begin of Item 04DE - Format 1 - srcBegin = 65F1 - srcEnd = 65F4 - mappingOffset = 095E - Mapping = - F9D1 FFFD FFFD E9D9 -End of Item 04DE - -Begin of Item 04DF - Format 1 - srcBegin = 65FA - srcEnd = 65FF - mappingOffset = 0962 - Mapping = - E8DA DAC3 DAC4 D4C5 FFFD E7FA -End of Item 04DF - -Begin of Item 04E0 - Format 1 - srcBegin = 6606 - srcEnd = 6615 - mappingOffset = 0968 - Mapping = - CDE0 E3B0 FFFD DBB2 FBC4 FFFD F3E3 FFFD - D9A5 FBE7 DDCB D0D4 FFFD E6B6 E0AE FDDA -End of Item 04E0 - -Begin of Item 04E1 - Format 1 - srcBegin = 661E - srcEnd = 6620 - mappingOffset = 0978 - Mapping = - DCB5 E0F8 E7B1 -End of Item 04E1 - -Begin of Item 04E2 - Format 1 - srcBegin = 6625 - srcEnd = 6628 - mappingOffset = 097B - Mapping = - F5F0 FFFD D8DC EDC6 -End of Item 04E2 - -Begin of Item 04E3 - Format 1 - srcBegin = 662D - srcEnd = 6636 - mappingOffset = 097F - Mapping = - E1B9 FFFD E3C0 F9C0 E9F0 FFFD FFFD D9DB - FFFD F3E4 -End of Item 04E3 - -Begin of Item 04E4 - Format 1 - srcBegin = 663A - srcEnd = 663B - mappingOffset = 0989 - Mapping = - DCB6 E4E9 -End of Item 04E4 - -Begin of Item 04E5 - Format 1 - srcBegin = 6641 - srcEnd = 6644 - mappingOffset = 098B - Mapping = - F0C5 E3C1 FCCC FCCD -End of Item 04E5 - -Begin of Item 04E6 - Format 1 - srcBegin = 6649 - srcEnd = 664B - mappingOffset = 098F - Mapping = - F2CB FFFD F2CC -End of Item 04E6 - -Begin of Item 04E7 - Format 2 - srcBegin = 664F - destBegin = E4CF -End of Item 04E7 - -Begin of Item 04E8 - Format 1 - srcBegin = 6659 - srcEnd = 665F - mappingOffset = 0992 - Mapping = - F1DB FFFD FAD9 FFFD F1B8 FDF5 E0F9 -End of Item 04E8 - -Begin of Item 04E9 - Format 1 - srcBegin = 6664 - srcEnd = 666F - mappingOffset = 0999 - Mapping = - E7FB FCB7 FCE4 FBC5 E3E7 D8B9 FFFD F6F8 - FFFD FFFD DCC5 CCD8 -End of Item 04E9 - -Begin of Item 04EA - Format 1 - srcBegin = 6673 - srcEnd = 667A - mappingOffset = 09A5 - Mapping = - E0AF F4E7 FFFD EFDC CFFC EFDD FFFD F2AA -End of Item 04EA - -Begin of Item 04EB - Format 1 - srcBegin = 6684 - srcEnd = 6689 - mappingOffset = 09AD - Mapping = - FDBE FFFD FFFD CAAC FDBB FDC7 -End of Item 04EB - -Begin of Item 04EC - Format 1 - srcBegin = 668E - srcEnd = 6691 - mappingOffset = 09B3 - Mapping = - E7B2 FFFD EAD1 DFF4 -End of Item 04EC - -Begin of Item 04ED - Format 1 - srcBegin = 6696 - srcEnd = 6698 - mappingOffset = 09B7 - Mapping = - D1EC E4DE E5C3 -End of Item 04ED - -Begin of Item 04EE - Format 1 - srcBegin = 669D - srcEnd = 66A2 - mappingOffset = 09BA - Mapping = - D9A6 FFFD FFFD CDBC FFFD F3E5 -End of Item 04EE - -Begin of Item 04EF - Format 1 - srcBegin = 66AB - srcEnd = 66AE - mappingOffset = 09C0 - Mapping = - EDD5 FFFD FFFD D9BA -End of Item 04EF - -Begin of Item 04F0 - Format 1 - srcBegin = 66B2 - srcEnd = 66B4 - mappingOffset = 09C4 - Mapping = - EDE7 FBB5 F8EC -End of Item 04F0 - -Begin of Item 04F1 - Format 1 - srcBegin = 66B9 - srcEnd = 66BE - mappingOffset = 09C7 - Mapping = - E0E7 FFFD CCD9 FFFD FFFD D4C6 -End of Item 04F1 - -Begin of Item 04F2 - Format 1 - srcBegin = 66C4 - srcEnd = 66C9 - mappingOffset = 09CD - Mapping = - E7A5 FFFD D5F5 D3BE FFFD FCFB -End of Item 04F2 - -Begin of Item 04F3 - Format 1 - srcBegin = 66D6 - srcEnd = 66E0 - mappingOffset = 09D3 - Mapping = - E4F2 FFFD FFFD DFF5 FFFD FFFD E8F8 F8ED - FFFD FFFD CEC7 -End of Item 04F3 - -Begin of Item 04F4 - Format 2 - srcBegin = 66E6 - destBegin = FDF6 -End of Item 04F4 - -Begin of Item 04F5 - Format 1 - srcBegin = 66F0 - srcEnd = 6703 - mappingOffset = 09DE - Mapping = - E8D8 FFFD CDD8 E7D6 CCDA FFFD FFFD CAE3 - DFF6 F0C7 F0C6 FFFD D8BA FFFD F1F4 F4F0 - F5CC FFFD FFFD FCE5 -End of Item 04F5 - -Begin of Item 04F6 - Format 1 - srcBegin = 6708 - srcEnd = 670D - mappingOffset = 09F2 - Mapping = - EAC5 EAF3 FFFD DDDB FFFD DCD7 -End of Item 04F6 - -Begin of Item 04F7 - Format 1 - srcBegin = 6714 - srcEnd = 6717 - mappingOffset = 09F8 - Mapping = - DEFD F2F9 FFFD D5C7 -End of Item 04F7 - -Begin of Item 04F8 - Format 1 - srcBegin = 671B - srcEnd = 671F - mappingOffset = 09FC - Mapping = - D8D0 FFFD F0C8 D1A1 D1A2 -End of Item 04F8 - -Begin of Item 04F9 - Format 1 - srcBegin = 6726 - srcEnd = 6736 - mappingOffset = 0A01 - Mapping = - D9D4 D6E8 D9CA FFFD DAB1 D8C7 DCE2 F3CE - F5F4 FFFD FFFD F1B9 FFFD FFFD DAD3 FFFD - F6EA -End of Item 04F9 - -Begin of Item 04FA - Format 1 - srcBegin = 673A - srcEnd = 673D - mappingOffset = 0A12 - Mapping = - CFF5 FFFD FFFD FDAE -End of Item 04FA - -Begin of Item 04FB - Format 1 - srcBegin = 6746 - srcEnd = 6749 - mappingOffset = 0A16 - Mapping = - CAD2 FFFD FFFD DFB4 -End of Item 04FB - -Begin of Item 04FC - Format 1 - srcBegin = 674E - srcEnd = 6756 - mappingOffset = 0A1A - Mapping = - D7DD FABA EEA7 F5BD FFFD F8F5 FFFD FFFD - EDE8 -End of Item 04FC - -Begin of Item 04FD - Format 1 - srcBegin = 675C - srcEnd = 675F - mappingOffset = 0A23 - Mapping = - D4E1 FFFD D1A3 E1D6 -End of Item 04FD - -Begin of Item 04FE - Format 1 - srcBegin = 676D - srcEnd = 6777 - mappingOffset = 0A27 - Mapping = - F9F8 FFFD DBCA CBF9 D4D4 FFFD D9DC FFFD - EEBE FFFD F7ED -End of Item 04FE - -Begin of Item 04FF - Format 1 - srcBegin = 677B - srcEnd = 677F - mappingOffset = 0A32 - Mapping = - D2EE FFFD FFFD E1E6 F7F9 -End of Item 04FF - -Begin of Item 0500 - Format 1 - srcBegin = 6787 - srcEnd = 678B - mappingOffset = 0A37 - Mapping = - DDED FFFD E8DB FFFD DBB3 -End of Item 0500 - -Begin of Item 0501 - Format 1 - srcBegin = 678F - srcEnd = 679D - mappingOffset = 0A3C - Mapping = - D1F7 E0B0 FFFD FFFD D4E2 FFFD F6D7 FFFD - D7F9 FFFD FFFD D8DD FFFD CDFD F2AB -End of Item 0501 - -Begin of Item 0502 - Format 1 - srcBegin = 67AF - srcEnd = 67B8 - mappingOffset = 0A4B - Mapping = - CDBD F8C2 FFFD FFFD F2AC FFFD FFFD CAAD - CAAE CFAE -End of Item 0502 - -Begin of Item 0503 - Format 2 - srcBegin = 67BE - destBegin = E3C2 -End of Item 0503 - -Begin of Item 0504 - Format 2 - srcBegin = 67C4 - destBegin = DCB7 -End of Item 0504 - -Begin of Item 0505 - Format 1 - srcBegin = 67CF - srcEnd = 67D4 - mappingOffset = 0A55 - Mapping = - DBDA D9BB CAF3 F6D3 E6F8 EAF5 -End of Item 0505 - -Begin of Item 0506 - Format 1 - srcBegin = 67DA - srcEnd = 67DD - mappingOffset = 0A5B - Mapping = - EAF6 FFFD FFFD F6F9 -End of Item 0506 - -Begin of Item 0507 - Format 1 - srcBegin = 67E9 - srcEnd = 67F6 - mappingOffset = 0A5F - Mapping = - CFAF FFFD FFFD CAD3 FFFD FFFD CAAF D2B0 - F1BA FFFD D7B3 E3C3 F3FD DEDA -End of Item 0507 - -Begin of Item 0508 - Format 1 - srcBegin = 67FB - srcEnd = 67FE - mappingOffset = 0A6D - Mapping = - DEDB FFFD FFFD EFDE -End of Item 0508 - -Begin of Item 0509 - Format 1 - srcBegin = 6812 - srcEnd = 6817 - mappingOffset = 0A71 - Mapping = - E2E3 EEFB FFFD FFFD DFF7 D7CA -End of Item 0509 - -Begin of Item 050A - Format 1 - srcBegin = 6821 - srcEnd = 6822 - mappingOffset = 0A77 - Mapping = - CEE8 DBDB -End of Item 050A - -Begin of Item 050B - Format 2 - srcBegin = 682A - destBegin = F1BB -End of Item 050B - -Begin of Item 050C - Format 2 - srcBegin = 682F - destBegin = E9F1 -End of Item 050C - -Begin of Item 050D - Format 1 - srcBegin = 6838 - srcEnd = 6843 - mappingOffset = 0A79 - Mapping = - FAB7 D0C6 FFFD FFFD CCAB EEA8 FFFD FFFD - CBFA F9F9 CCFD D3FE -End of Item 050D - -Begin of Item 050E - Format 2 - srcBegin = 6848 - destBegin = E4D0 -End of Item 050E - -Begin of Item 050F - Format 1 - srcBegin = 684E - srcEnd = 6854 - mappingOffset = 0A85 - Mapping = - F2EE FFFD D4D5 DFCD FFFD FCB8 D1D0 -End of Item 050F - -Begin of Item 0510 - Format 2 - srcBegin = 686D - destBegin = F2CD -End of Item 0510 - -Begin of Item 0511 - Format 2 - srcBegin = 6876 - destBegin = F7D2 -End of Item 0511 - -Begin of Item 0512 - Format 1 - srcBegin = 687F - srcEnd = 6881 - mappingOffset = 0A8C - Mapping = - CAD4 FFFD D5D9 -End of Item 0512 - -Begin of Item 0513 - Format 2 - srcBegin = 6885 - destBegin = D8DE -End of Item 0513 - -Begin of Item 0514 - Format 2 - srcBegin = 688F - destBegin = CDD9 -End of Item 0514 - -Begin of Item 0515 - Format 1 - srcBegin = 6893 - srcEnd = 6897 - mappingOffset = 0A8F - Mapping = - EEA9 F6BC FFFD FFFD CCDB -End of Item 0515 - -Begin of Item 0516 - Format 1 - srcBegin = 689D - srcEnd = 68A2 - mappingOffset = 0A94 - Mapping = - F0C9 FFFD FCFC FFFD E8C9 F4FE -End of Item 0516 - -Begin of Item 0517 - Format 1 - srcBegin = 68A7 - srcEnd = 68A8 - mappingOffset = 0A9A - Mapping = - E7FC D7DE -End of Item 0517 - -Begin of Item 0518 - Format 1 - srcBegin = 68AD - srcEnd = 68B6 - mappingOffset = 0A9C - Mapping = - DEDC FFFD F0AC CCFE CDE1 FFFD E1BA FFFD - DBEF DAB2 -End of Item 0518 - -Begin of Item 0519 - Format 1 - srcBegin = 68C4 - srcEnd = 68C5 - mappingOffset = 0AA6 - Mapping = - D1A5 DCB8 -End of Item 0519 - -Begin of Item 051A - Format 1 - srcBegin = 68C9 - srcEnd = 68CD - mappingOffset = 0AA8 - Mapping = - D8F6 FFFD D1A4 FFFD CDE2 -End of Item 051A - -Begin of Item 051B - Format 1 - srcBegin = 68D2 - srcEnd = 68DA - mappingOffset = 0AAD - Mapping = - DCEA FFFD FFFD F0F7 FFFD F0CA D0BE FFFD - DDDC -End of Item 051B - -Begin of Item 051C - Format 1 - srcBegin = 68DF - srcEnd = 68E0 - mappingOffset = 0AB6 - Mapping = - D4D6 D3D6 -End of Item 051C - -Begin of Item 051D - Format 1 - srcBegin = 68E7 - srcEnd = 68E8 - mappingOffset = 0AB8 - Mapping = - EDD0 CDA1 -End of Item 051D - -Begin of Item 051E - Format 2 - srcBegin = 68EE - destBegin = DFB5 -End of Item 051E - -Begin of Item 051F - Format 2 - srcBegin = 68F2 - destBegin = DFF8 -End of Item 051F - -Begin of Item 0520 - Format 1 - srcBegin = 68F9 - srcEnd = 68FA - mappingOffset = 0ABA - Mapping = - D4A1 CEB2 -End of Item 0520 - -Begin of Item 0521 - Format 2 - srcBegin = 6900 - destBegin = E8CA -End of Item 0521 - -Begin of Item 0522 - Format 2 - srcBegin = 6905 - destBegin = EBF5 -End of Item 0522 - -Begin of Item 0523 - Format 1 - srcBegin = 690D - srcEnd = 690E - mappingOffset = 0ABC - Mapping = - E3D5 F5D0 -End of Item 0523 - -Begin of Item 0524 - Format 2 - srcBegin = 6912 - destBegin = F5A1 -End of Item 0524 - -Begin of Item 0525 - Format 2 - srcBegin = 6927 - destBegin = D9A7 -End of Item 0525 - -Begin of Item 0526 - Format 2 - srcBegin = 6930 - destBegin = E5AB -End of Item 0526 - -Begin of Item 0527 - Format 1 - srcBegin = 693D - srcEnd = 693F - mappingOffset = 0ABE - Mapping = - E6CB FFFD F5F1 -End of Item 0527 - -Begin of Item 0528 - Format 2 - srcBegin = 694A - destBegin = E5C5 -End of Item 0528 - -Begin of Item 0529 - Format 1 - srcBegin = 6953 - srcEnd = 695A - mappingOffset = 0AC1 - Mapping = - F9A3 E0DB F6EB FFFD CBF1 FFFD D9EA F5A2 -End of Item 0529 - -Begin of Item 052A - Format 1 - srcBegin = 695E - srcEnd = 6963 - mappingOffset = 0AC9 - Mapping = - D7D1 FFFD D1F8 EAF8 EAF9 DAB3 -End of Item 052A - -Begin of Item 052B - Format 1 - srcBegin = 6968 - srcEnd = 696F - mappingOffset = 0ACF - Mapping = - EFDF FFFD FFFD F1EF FFFD E5F6 EEBF E2E4 -End of Item 052B - -Begin of Item 052C - Format 1 - srcBegin = 6975 - srcEnd = 6979 - mappingOffset = 0AD7 - Mapping = - D0BF FFFD FAAC F5D1 E7B3 -End of Item 052C - -Begin of Item 052D - Format 2 - srcBegin = 6995 - destBegin = E9BE -End of Item 052D - -Begin of Item 052E - Format 1 - srcBegin = 699B - srcEnd = 699C - mappingOffset = 0ADC - Mapping = - F2CE DBB4 -End of Item 052E - -Begin of Item 052F - Format 1 - srcBegin = 69A5 - srcEnd = 69A7 - mappingOffset = 0ADE - Mapping = - FCCE FFFD DDEE -End of Item 052F - -Begin of Item 0530 - Format 2 - srcBegin = 69AE - destBegin = E7B4 -End of Item 0530 - -Begin of Item 0531 - Format 2 - srcBegin = 69B4 - destBegin = D7B4 -End of Item 0531 - -Begin of Item 0532 - Format 2 - srcBegin = 69BB - destBegin = F7B4 -End of Item 0532 - -Begin of Item 0533 - Format 1 - srcBegin = 69C1 - srcEnd = 69C3 - mappingOffset = 0AE1 - Mapping = - CDBE FFFD DAE9 -End of Item 0533 - -Begin of Item 0534 - Format 1 - srcBegin = 69CB - srcEnd = 69D0 - mappingOffset = 0AE4 - Mapping = - CFB0 F7D9 F3E6 FFFD FFFD CED9 -End of Item 0534 - -Begin of Item 0535 - Format 1 - srcBegin = 69E8 - srcEnd = 69EA - mappingOffset = 0AEA - Mapping = - CEAA FFFD CBC8 -End of Item 0535 - -Begin of Item 0536 - Format 1 - srcBegin = 69FB - srcEnd = 6A02 - mappingOffset = 0AED - Mapping = - D0A7 FFFD F0CB FFFD D0C7 FFFD FFFD E4C5 -End of Item 0536 - -Begin of Item 0537 - Format 2 - srcBegin = 6A0A - destBegin = DBE0 -End of Item 0537 - -Begin of Item 0538 - Format 1 - srcBegin = 6A11 - srcEnd = 6A13 - mappingOffset = 0AF5 - Mapping = - D5DA FFFD D7A7 -End of Item 0538 - -Begin of Item 0539 - Format 1 - srcBegin = 6A17 - srcEnd = 6A19 - mappingOffset = 0AF8 - Mapping = - EEC0 FFFD F8F6 -End of Item 0539 - -Begin of Item 053A - Format 1 - srcBegin = 6A1E - srcEnd = 6A23 - mappingOffset = 0AFB - Mapping = - F5D2 EDE9 FFFD D9BC FFFD E5C6 -End of Item 053A - -Begin of Item 053B - Format 1 - srcBegin = 6A35 - srcEnd = 6A3D - mappingOffset = 0B01 - Mapping = - F5A3 FFFD FFFD DAD4 E2A7 FBFC FFFD FFFD - F1DC -End of Item 053B - -Begin of Item 053C - Format 2 - srcBegin = 6A44 - destBegin = CAF4 -End of Item 053C - -Begin of Item 053D - Format 1 - srcBegin = 6A48 - srcEnd = 6A4B - mappingOffset = 0B0A - Mapping = - E8FA FFFD FFFD CEE9 -End of Item 053D - -Begin of Item 053E - Format 1 - srcBegin = 6A52 - srcEnd = 6A53 - mappingOffset = 0B0E - Mapping = - E9F8 E2E5 -End of Item 053E - -Begin of Item 053F - Format 1 - srcBegin = 6A58 - srcEnd = 6A59 - mappingOffset = 0B10 - Mapping = - D0B9 D4F2 -End of Item 053F - -Begin of Item 0540 - Format 1 - srcBegin = 6A5F - srcEnd = 6A61 - mappingOffset = 0B12 - Mapping = - D1A6 FFFD DFCE -End of Item 0540 - -Begin of Item 0541 - Format 2 - srcBegin = 6A6B - destBegin = FCF4 -End of Item 0541 - -Begin of Item 0542 - Format 2 - srcBegin = 6A80 - destBegin = D3AA -End of Item 0542 - -Begin of Item 0543 - Format 2 - srcBegin = 6A84 - destBegin = CCAC -End of Item 0543 - -Begin of Item 0544 - Format 2 - srcBegin = 6A89 - destBegin = EFE0 -End of Item 0544 - -Begin of Item 0545 - Format 1 - srcBegin = 6A8D - srcEnd = 6A8E - mappingOffset = 0B15 - Mapping = - E5E5 D0D5 -End of Item 0545 - -Begin of Item 0546 - Format 2 - srcBegin = 6A97 - destBegin = DBFC -End of Item 0546 - -Begin of Item 0547 - Format 2 - srcBegin = 6A9C - destBegin = FCE6 -End of Item 0547 - -Begin of Item 0548 - Format 1 - srcBegin = 6AA2 - srcEnd = 6AA3 - mappingOffset = 0B17 - Mapping = - CBFE EDEA -End of Item 0548 - -Begin of Item 0549 - Format 2 - srcBegin = 6AB3 - destBegin = DEB1 -End of Item 0549 - -Begin of Item 054A - Format 2 - srcBegin = 6ABB - destBegin = F9E3 -End of Item 054A - -Begin of Item 054B - Format 1 - srcBegin = 6AC2 - srcEnd = 6AC3 - mappingOffset = 0B19 - Mapping = - D4A2 CFF6 -End of Item 054B - -Begin of Item 054C - Format 2 - srcBegin = 6AD3 - destBegin = D6D0 -End of Item 054C - -Begin of Item 054D - Format 1 - srcBegin = 6ADA - srcEnd = 6ADB - mappingOffset = 0B1B - Mapping = - D5EA F1EE -End of Item 054D - -Begin of Item 054E - Format 2 - srcBegin = 6AF6 - destBegin = FACB -End of Item 054E - -Begin of Item 054F - Format 2 - srcBegin = 6AFB - destBegin = E5A1 -End of Item 054F - -Begin of Item 0550 - Format 2 - srcBegin = 6B04 - destBegin = D5B1 -End of Item 0550 - -Begin of Item 0551 - Format 1 - srcBegin = 6B0A - srcEnd = 6B0C - mappingOffset = 0B1D - Mapping = - CFED FFFD EDEB -End of Item 0551 - -Begin of Item 0552 - Format 2 - srcBegin = 6B12 - destBegin = D5B2 -End of Item 0552 - -Begin of Item 0553 - Format 2 - srcBegin = 6B16 - destBegin = D5BC -End of Item 0553 - -Begin of Item 0554 - Format 1 - srcBegin = 6B20 - srcEnd = 6B23 - mappingOffset = 0B20 - Mapping = - FDE2 F3AD FFFD FDDB -End of Item 0554 - -Begin of Item 0555 - Format 2 - srcBegin = 6B32 - destBegin = E9B0 -End of Item 0555 - -Begin of Item 0556 - Format 1 - srcBegin = 6B3A - srcEnd = 6B3E - mappingOffset = 0B24 - Mapping = - D1A7 FFFD FFFD FDE3 CEB3 -End of Item 0556 - -Begin of Item 0557 - Format 1 - srcBegin = 6B46 - srcEnd = 6B47 - mappingOffset = 0B29 - Mapping = - FDE4 FACE -End of Item 0557 - -Begin of Item 0558 - Format 1 - srcBegin = 6B4C - srcEnd = 6B50 - mappingOffset = 0B2B - Mapping = - CAB0 FFFD F7A7 FFFD CFB1 -End of Item 0558 - -Begin of Item 0559 - Format 1 - srcBegin = 6B5F - srcEnd = 6B66 - mappingOffset = 0B30 - Mapping = - E6A2 FFFD FCB6 F2AD EFE1 F3AE DCC6 D9EB -End of Item 0559 - -Begin of Item 055A - Format 2 - srcBegin = 6B6A - destBegin = E8E0 -End of Item 055A - -Begin of Item 055B - Format 2 - srcBegin = 6B72 - destBegin = E1A8 -End of Item 055B - -Begin of Item 055C - Format 1 - srcBegin = 6B77 - srcEnd = 6B7B - mappingOffset = 0B38 - Mapping = - D5F6 CFFD FFFD FFFD DEDD -End of Item 055C - -Begin of Item 055D - Format 2 - srcBegin = 6B7F - destBegin = D9D1 -End of Item 055D - -Begin of Item 055E - Format 1 - srcBegin = 6B83 - srcEnd = 6B8A - mappingOffset = 0B3D - Mapping = - E4EA F2CF FFFD F7BF FFFD FFFD E2E6 E2A8 -End of Item 055E - -Begin of Item 055F - Format 1 - srcBegin = 6B96 - srcEnd = 6B98 - mappingOffset = 0B45 - Mapping = - E3D6 FFFD EDD1 -End of Item 055F - -Begin of Item 0560 - Format 2 - srcBegin = 6B9E - destBegin = E9F9 -End of Item 0560 - -Begin of Item 0561 - Format 1 - srcBegin = 6BAE - srcEnd = 6BC1 - mappingOffset = 0B48 - Mapping = - D6B1 DEB2 FFFD FFFD E0E8 FFFD FFFD D3AB - FFFD EBDC FFFD FFFD DFAF FFFD CAC3 FFFD - FFFD EEFC FFFD FDC3 -End of Item 0561 - -Begin of Item 0562 - Format 1 - srcBegin = 6BC5 - srcEnd = 6BC6 - mappingOffset = 0B5C - Mapping = - EBF6 CFB2 -End of Item 0562 - -Begin of Item 0563 - Format 1 - srcBegin = 6BCB - srcEnd = 6BDB - mappingOffset = 0B5E - Mapping = - D9EC FFFD D9BD FFFD D8DF FFFD FFFD D4B8 - EBBE DDEF FFFD DDF0 DDF1 DDF2 FFFD FFFD - D9BE -End of Item 0563 - -Begin of Item 0564 - Format 1 - srcBegin = 6BEB - srcEnd = 6BEC - mappingOffset = 0B6F - Mapping = - FBC6 CFB3 -End of Item 0564 - -Begin of Item 0565 - Format 2 - srcBegin = 6C08 - destBegin = EEFD -End of Item 0565 - -Begin of Item 0566 - Format 1 - srcBegin = 6C0F - srcEnd = 6C13 - mappingOffset = 0B71 - Mapping = - E4AB FFFD DAC5 FFFD D8EC -End of Item 0566 - -Begin of Item 0567 - Format 2 - srcBegin = 6C23 - destBegin = D1A8 -End of Item 0567 - -Begin of Item 0568 - Format 1 - srcBegin = 6C34 - srcEnd = 6C38 - mappingOffset = 0B76 - Mapping = - E2A9 FFFD FFFD DEBC E7B5 -End of Item 0568 - -Begin of Item 0569 - Format 1 - srcBegin = 6C3E - srcEnd = 6C42 - mappingOffset = 0B7B - Mapping = - DBF0 FFFD EFE2 F1F0 CFB4 -End of Item 0569 - -Begin of Item 056A - Format 1 - srcBegin = 6C4E - srcEnd = 6C50 - mappingOffset = 0B80 - Mapping = - DBF1 FFFD E0B1 -End of Item 056A - -Begin of Item 056B - Format 1 - srcBegin = 6C55 - srcEnd = 6C60 - mappingOffset = 0B83 - Mapping = - DFA5 FFFD F9D2 FFFD FFFD E7FD FFFD FFFD - E6A3 FBF1 CBB0 F2AE -End of Item 056B - -Begin of Item 056C - Format 1 - srcBegin = 6C68 - srcEnd = 6C72 - mappingOffset = 0B8F - Mapping = - CDE7 FFFD E8DC FFFD FFFD E7D7 FFFD FFFD - F7C0 FFFD D0E3 -End of Item 056C - -Begin of Item 056D - Format 2 - srcBegin = 6C76 - destBegin = DAA1 -End of Item 056D - -Begin of Item 056E - Format 1 - srcBegin = 6C7A - srcEnd = 6C88 - mappingOffset = 0B9A - Mapping = - CCBD FFFD FFFD D1A9 DDCC FFFD FFFD E3FE - D1AA E8AA FFFD EAB6 F9FA E6CC F6D8 -End of Item 056E - -Begin of Item 056F - Format 2 - srcBegin = 6C8C - destBegin = D4C7 -End of Item 056F - -Begin of Item 0570 - Format 1 - srcBegin = 6C90 - srcEnd = 6C9B - mappingOffset = 0BA9 - Mapping = - D9CB FFFD D9D2 D3CB D8F7 DAA9 F5F8 FFFD - FFFD DEDE F2AF F8A9 -End of Item 0570 - -Begin of Item 0571 - Format 1 - srcBegin = 6CAB - srcEnd = 6CAE - mappingOffset = 0BB5 - Mapping = - D8C8 FFFD FFFD EEC1 -End of Item 0571 - -Begin of Item 0572 - Format 2 - srcBegin = 6CB3 - destBegin = F9C1 -End of Item 0572 - -Begin of Item 0573 - Format 1 - srcBegin = 6CB8 - srcEnd = 6CC4 - mappingOffset = 0BB9 - Mapping = - DDF3 EAFA FFFD F6BD E1BB CDBF F4D4 E6CD - FFFD FCCF FBA2 FFFD E0DC -End of Item 0573 - -Begin of Item 0574 - Format 1 - srcBegin = 6CC9 - srcEnd = 6CCC - mappingOffset = 0BC6 - Mapping = - F4BB DAD5 FFFD F9B2 -End of Item 0574 - -Begin of Item 0575 - Format 1 - srcBegin = 6CD3 - srcEnd = 6CD7 - mappingOffset = 0BCA - Mapping = - FBF2 FFFD DBF6 FFFD DEDF -End of Item 0575 - -Begin of Item 0576 - Format 2 - srcBegin = 6CDB - destBegin = DBF2 -End of Item 0576 - -Begin of Item 0577 - Format 1 - srcBegin = 6CE1 - srcEnd = 6CF3 - mappingOffset = 0BCF - Mapping = - F8DC F7EE EBE8 FFFD D2FA FFFD FFFD F1BC - FFFD FFFD FADA FFFD FFFD DAEA DAC6 F7C1 - FFFD FFFD E7B6 -End of Item 0577 - -Begin of Item 0578 - Format 1 - srcBegin = 6D0B - srcEnd = 6D0C - mappingOffset = 0BE2 - Mapping = - E5C7 D6AC -End of Item 0578 - -Begin of Item 0579 - Format 2 - srcBegin = 6D11 - destBegin = DCC7 -End of Item 0579 - -Begin of Item 057A - Format 1 - srcBegin = 6D17 - srcEnd = 6D1E - mappingOffset = 0BE4 - Mapping = - E1A9 FFFD E2AA FFFD D5A6 FFFD FFFD D4D7 -End of Item 057A - -Begin of Item 057B - Format 1 - srcBegin = 6D25 - srcEnd = 6D2A - mappingOffset = 0BEC - Mapping = - F2D0 FFFD EAFB FFFD E0DD FBF3 -End of Item 057B - -Begin of Item 057C - Format 1 - srcBegin = 6D32 - srcEnd = 6D41 - mappingOffset = 0BF2 - Mapping = - F1BD FFFD FFFD E2E7 FDD7 FFFD CEC8 EAB7 - FFFD FCC0 FFFD FDE7 F7EF FFFD FFFD D7B5 -End of Item 057C - -Begin of Item 057D - Format 1 - srcBegin = 6D59 - srcEnd = 6D5C - mappingOffset = 0C02 - Mapping = - EFBA F1DD FFFD DEB3 -End of Item 057D - -Begin of Item 057E - Format 1 - srcBegin = 6D63 - srcEnd = 6D6E - mappingOffset = 0C06 - Mapping = - E8CB FFFD FFFD F8DD FFFD FFFD FBC7 D5C8 - FFFD D7DF FFFD DDA9 -End of Item 057E - -Begin of Item 057F - Format 1 - srcBegin = 6D74 - srcEnd = 6D79 - mappingOffset = 0C12 - Mapping = - E9B1 FFFD FFFD FAAD F6D9 FAF4 -End of Item 057F - -Begin of Item 0580 - Format 2 - srcBegin = 6D7F - destBegin = F8AA -End of Item 0580 - -Begin of Item 0581 - Format 1 - srcBegin = 6D85 - srcEnd = 6D95 - mappingOffset = 0C18 - Mapping = - E6EE FFFD CCDC E1BC E0EF FFFD FFFD E9BF - FCFD E6CE FFFD FFFD E1D7 FFFD E6CF FFFD - F4F1 -End of Item 0581 - -Begin of Item 0582 - Format 1 - srcBegin = 6DAF - srcEnd = 6DB5 - mappingOffset = 0C29 - Mapping = - E4F3 FFFD FFFD E4FB FFFD FFFD F9E4 -End of Item 0582 - -Begin of Item 0583 - Format 1 - srcBegin = 6DC0 - srcEnd = 6DC7 - mappingOffset = 0C30 - Mapping = - EFE3 FFFD FFFD CFEE F6BE E0B2 FCFE D1AB -End of Item 0583 - -Begin of Item 0584 - Format 2 - srcBegin = 6DCB - destBegin = D7FA -End of Item 0584 - -Begin of Item 0585 - Format 1 - srcBegin = 6DCF - srcEnd = 6DD1 - mappingOffset = 0C38 - Mapping = - FBC8 FFFD E2D7 -End of Item 0585 - -Begin of Item 0586 - Format 1 - srcBegin = 6DD8 - srcEnd = 6DDA - mappingOffset = 0C3B - Mapping = - D4A3 F0F8 D7A8 -End of Item 0586 - -Begin of Item 0587 - Format 1 - srcBegin = 6DDE - srcEnd = 6DE1 - mappingOffset = 0C3E - Mapping = - E1E7 FFFD FFFD D3BF -End of Item 0587 - -Begin of Item 0588 - Format 1 - srcBegin = 6DE8 - srcEnd = 6DFB - mappingOffset = 0C42 - Mapping = - EFE4 FFFD D7C5 EBE2 FFFD FFFD FCE7 FFFD - FFFD E4A2 FFFD E2E8 FFFD E6D0 FFFD FBE8 - F4E8 E5F4 F4BC F4D5 -End of Item 0588 - -Begin of Item 0589 - Format 1 - srcBegin = 6E17 - srcEnd = 6E1B - mappingOffset = 0C56 - Mapping = - DFB6 FFFD FCB9 EEC2 CAF5 -End of Item 0589 - -Begin of Item 058A - Format 1 - srcBegin = 6E1F - srcEnd = 6E26 - mappingOffset = 0C5B - Mapping = - EFE5 CBE2 D4A4 FFFD DEE0 DAFD E4C6 E8BE -End of Item 058A - -Begin of Item 058B - Format 1 - srcBegin = 6E2B - srcEnd = 6E3E - mappingOffset = 0C63 - Mapping = - E0DE F6B4 EAD2 FFFD F9FB FFFD FFFD E0C2 - FFFD CAE4 FFFD E7B7 FFFD EAFD FFFD D9DD - FFFD DAB4 EEAA FBE9 -End of Item 058B - -Begin of Item 058C - Format 1 - srcBegin = 6E43 - srcEnd = 6E44 - mappingOffset = 0C77 - Mapping = - DBCB DAB5 -End of Item 058C - -Begin of Item 058D - Format 1 - srcBegin = 6E4A - srcEnd = 6E4D - mappingOffset = 0C79 - Mapping = - F1BE FFFD FFFD D3AC -End of Item 058D - -Begin of Item 058E - Format 1 - srcBegin = 6E56 - srcEnd = 6E5F - mappingOffset = 0C7D - Mapping = - FBC9 FFFD DFCF FFFD FFFD D3C0 E3D7 FFFD - EFE6 FCD0 -End of Item 058E - -Begin of Item 058F - Format 2 - srcBegin = 6E67 - destBegin = E9C0 -End of Item 058F - -Begin of Item 0590 - Format 1 - srcBegin = 6E6B - srcEnd = 6E73 - mappingOffset = 0C87 - Mapping = - F5D3 FFFD FFFD ECDC F7B7 FFFD FFFD EAB8 - D1F9 -End of Item 0590 - -Begin of Item 0591 - Format 2 - srcBegin = 6E7A - destBegin = DCC8 -End of Item 0591 - -Begin of Item 0592 - Format 2 - srcBegin = 6E90 - destBegin = EAB9 -End of Item 0592 - -Begin of Item 0593 - Format 2 - srcBegin = 6E96 - destBegin = F1DE -End of Item 0593 - -Begin of Item 0594 - Format 1 - srcBegin = 6E9C - srcEnd = 6EA5 - mappingOffset = 0C90 - Mapping = - D7B6 CFB5 FFFD D9A8 FFFD FFFD ECEE FFFD - FFFD DDAA -End of Item 0594 - -Begin of Item 0595 - Format 1 - srcBegin = 6EAA - srcEnd = 6EAB - mappingOffset = 0C9A - Mapping = - CDA2 E8AE -End of Item 0595 - -Begin of Item 0596 - Format 1 - srcBegin = 6EAF - srcEnd = 6EB1 - mappingOffset = 0C9C - Mapping = - E1BD FFFD F2D1 -End of Item 0596 - -Begin of Item 0597 - Format 2 - srcBegin = 6EB6 - destBegin = E9C1 -End of Item 0597 - -Begin of Item 0598 - Format 2 - srcBegin = 6EBA - destBegin = D2FC -End of Item 0598 - -Begin of Item 0599 - Format 1 - srcBegin = 6EC2 - srcEnd = 6EC5 - mappingOffset = 0C9F - Mapping = - DBB5 FFFD F3E7 D8FE -End of Item 0599 - -Begin of Item 059A - Format 1 - srcBegin = 6EC9 - srcEnd = 6ED4 - mappingOffset = 0CA3 - Mapping = - FCD1 FFFD EDB2 F4AF FFFD FBA3 FFFD FFFD - FCC1 FFFD EEAB D4A5 -End of Item 059A - -Begin of Item 059B - Format 2 - srcBegin = 6EEF - destBegin = F4F2 -End of Item 059B - -Begin of Item 059C - Format 2 - srcBegin = 6EF4 - destBegin = EED9 -End of Item 059C - -Begin of Item 059D - Format 2 - srcBegin = 6EF8 - destBegin = FBCA -End of Item 059D - -Begin of Item 059E - Format 1 - srcBegin = 6EFE - srcEnd = 6F02 - mappingOffset = 0CAF - Mapping = - CDE3 D8BB FFFD E5DB F8F7 -End of Item 059E - -Begin of Item 059F - Format 2 - srcBegin = 6F06 - destBegin = F6D4 -End of Item 059F - -Begin of Item 05A0 - Format 1 - srcBegin = 6F0F - srcEnd = 6F15 - mappingOffset = 0CB4 - Mapping = - D7A9 FFFD CBC9 FFFD FFFD E6D1 F0CC -End of Item 05A0 - -Begin of Item 05A1 - Format 1 - srcBegin = 6F20 - srcEnd = 6F23 - mappingOffset = 0CBB - Mapping = - D8AE FFFD F9D3 D5FE -End of Item 05A1 - -Begin of Item 05A2 - Format 1 - srcBegin = 6F2B - srcEnd = 6F2C - mappingOffset = 0CBF - Mapping = - D8BC F2B0 -End of Item 05A2 - -Begin of Item 05A3 - Format 1 - srcBegin = 6F31 - srcEnd = 6F32 - mappingOffset = 0CC1 - Mapping = - E2AB F3E8 -End of Item 05A3 - -Begin of Item 05A4 - Format 2 - srcBegin = 6F38 - destBegin = EFC2 -End of Item 05A4 - -Begin of Item 05A5 - Format 1 - srcBegin = 6F3F - srcEnd = 6F41 - mappingOffset = 0CC3 - Mapping = - EDEC FFFD E7B8 -End of Item 05A5 - -Begin of Item 05A6 - Format 1 - srcBegin = 6F51 - srcEnd = 6F64 - mappingOffset = 0CC6 - Mapping = - DAFE FFFD FFFD CCBE FFFD FFFD F2FC DAEB - FFFD E2D8 EDD6 FFFD FFFD D6D1 E0B3 FFFD - FFFD FCD2 FFFD EBC8 -End of Item 05A6 - -Begin of Item 05A7 - Format 1 - srcBegin = 6F6D - srcEnd = 6F70 - mappingOffset = 0CDA - Mapping = - D3C1 F0CD FFFD CFF7 -End of Item 05A7 - -Begin of Item 05A8 - Format 1 - srcBegin = 6F7A - srcEnd = 6F84 - mappingOffset = 0CDE - Mapping = - EDD2 FFFD D4D8 DCC9 D7F1 FFFD FFFD DFBB - FFFD FFFD F3A5 -End of Item 05A8 - -Begin of Item 05A9 - Format 2 - srcBegin = 6F88 - destBegin = F4CD -End of Item 05A9 - -Begin of Item 05AA - Format 1 - srcBegin = 6F8D - srcEnd = 6F90 - mappingOffset = 0CE9 - Mapping = - F1BF F8B1 FFFD E9FA -End of Item 05AA - -Begin of Item 05AB - Format 1 - srcBegin = 6F94 - srcEnd = 6F97 - mappingOffset = 0CED - Mapping = - FBCB FFFD FFFD CAD5 -End of Item 05AB - -Begin of Item 05AC - Format 1 - srcBegin = 6FA3 - srcEnd = 6FA7 - mappingOffset = 0CF1 - Mapping = - F9D4 F7CA FFFD FFFD D6C8 -End of Item 05AC - -Begin of Item 05AD - Format 1 - srcBegin = 6FAE - srcEnd = 6FB3 - mappingOffset = 0CF6 - Mapping = - FCE8 F3BD FFFD EEFE FFFD E7FE -End of Item 05AD - -Begin of Item 05AE - Format 2 - srcBegin = 6FB9 - destBegin = D3C2 -End of Item 05AE - -Begin of Item 05AF - Format 1 - srcBegin = 6FBE - srcEnd = 6FC3 - mappingOffset = 0CFC - Mapping = - D3B6 FFFD CCAD F6FA D6B2 D2D8 -End of Item 05AF - -Begin of Item 05B0 - Format 2 - srcBegin = 6FCA - destBegin = E7D8 -End of Item 05B0 - -Begin of Item 05B1 - Format 2 - srcBegin = 6FD5 - destBegin = E3A5 -End of Item 05B1 - -Begin of Item 05B2 - Format 2 - srcBegin = 6FDA - destBegin = E7B9 -End of Item 05B2 - -Begin of Item 05B3 - Format 1 - srcBegin = 6FDF - srcEnd = 6FE4 - mappingOffset = 0D02 - Mapping = - F0AD FBCC EBA1 FFFD FFFD D4A6 -End of Item 05B3 - -Begin of Item 05B4 - Format 1 - srcBegin = 6FE9 - srcEnd = 6FF1 - mappingOffset = 0D08 - Mapping = - FBCD FFFD D5BD F1DF FFFD FFFD F6FB FFFD - DEB4 -End of Item 05B4 - -Begin of Item 05B5 - Format 1 - srcBegin = 6FFE - srcEnd = 7001 - mappingOffset = 0D11 - Mapping = - D5EB FFFD FFFD E5C8 -End of Item 05B5 - -Begin of Item 05B6 - Format 1 - srcBegin = 7005 - srcEnd = 700B - mappingOffset = 0D15 - Mapping = - FBA4 D4B9 FFFD FFFD DEE1 FFFD E4A3 -End of Item 05B6 - -Begin of Item 05B7 - Format 1 - srcBegin = 700F - srcEnd = 7011 - mappingOffset = 0D1C - Mapping = - D7B7 FFFD F8EE -End of Item 05B7 - -Begin of Item 05B8 - Format 1 - srcBegin = 7015 - srcEnd = 701F - mappingOffset = 0D1F - Mapping = - DEB5 FFFD FFFD D6D2 FFFD F9D5 E7BA EBD5 - D5F7 EFE7 E1BE -End of Item 05B8 - -Begin of Item 05B9 - Format 2 - srcBegin = 7023 - destBegin = FAAE -End of Item 05B9 - -Begin of Item 05BA - Format 1 - srcBegin = 7027 - srcEnd = 7028 - mappingOffset = 0D2A - Mapping = - D6E9 D6EE -End of Item 05BA - -Begin of Item 05BB - Format 2 - srcBegin = 702F - destBegin = E7BB -End of Item 05BB - -Begin of Item 05BC - Format 2 - srcBegin = 7037 - destBegin = ECCB -End of Item 05BC - -Begin of Item 05BD - Format 2 - srcBegin = 703E - destBegin = D5B3 -End of Item 05BD - -Begin of Item 05BE - Format 2 - srcBegin = 704C - destBegin = CEB4 -End of Item 05BE - -Begin of Item 05BF - Format 1 - srcBegin = 7050 - srcEnd = 7051 - mappingOffset = 0D2C - Mapping = - FBA5 E1EE -End of Item 05BF - -Begin of Item 05C0 - Format 2 - srcBegin = 7058 - destBegin = F7A8 -End of Item 05C0 - -Begin of Item 05C1 - Format 2 - srcBegin = 705D - destBegin = FBCE -End of Item 05C1 - -Begin of Item 05C2 - Format 2 - srcBegin = 7063 - destBegin = D8BD -End of Item 05C2 - -Begin of Item 05C3 - Format 2 - srcBegin = 706B - destBegin = FBFD -End of Item 05C3 - -Begin of Item 05C4 - Format 2 - srcBegin = 7070 - destBegin = FCE9 -End of Item 05C4 - -Begin of Item 05C5 - Format 2 - srcBegin = 7078 - destBegin = CFB6 -End of Item 05C5 - -Begin of Item 05C6 - Format 1 - srcBegin = 707C - srcEnd = 707D - mappingOffset = 0D2E - Mapping = - EDC7 EEAC -End of Item 05C6 - -Begin of Item 05C7 - Format 2 - srcBegin = 7085 - destBegin = CCDD -End of Item 05C7 - -Begin of Item 05C8 - Format 2 - srcBegin = 708A - destBegin = F6A7 -End of Item 05C8 - -Begin of Item 05C9 - Format 2 - srcBegin = 708E - destBegin = E6FA -End of Item 05C9 - -Begin of Item 05CA - Format 2 - srcBegin = 7092 - destBegin = F5A4 -End of Item 05CA - -Begin of Item 05CB - Format 1 - srcBegin = 7098 - srcEnd = 709A - mappingOffset = 0D30 - Mapping = - FDDC EDB3 CEC9 -End of Item 05CB - -Begin of Item 05CC - Format 1 - srcBegin = 70A1 - srcEnd = 70A4 - mappingOffset = 0D33 - Mapping = - EFE8 FFFD FFFD E1BF -End of Item 05CC - -Begin of Item 05CD - Format 1 - srcBegin = 70AB - srcEnd = 70AF - mappingOffset = 0D37 - Mapping = - FADB CBE3 F7A9 FFFD FBA6 -End of Item 05CD - -Begin of Item 05CE - Format 2 - srcBegin = 70B3 - destBegin = DCB9 -End of Item 05CE - -Begin of Item 05CF - Format 1 - srcBegin = 70B7 - srcEnd = 70B9 - mappingOffset = 0D3C - Mapping = - F1C0 EDC8 EFC3 -End of Item 05CF - -Begin of Item 05D0 - Format 1 - srcBegin = 70C8 - srcEnd = 70CB - mappingOffset = 0D3F - Mapping = - D6AD FFFD FFFD FDCE -End of Item 05D0 - -Begin of Item 05D1 - Format 2 - srcBegin = 70CF - destBegin = E8A1 -End of Item 05D1 - -Begin of Item 05D2 - Format 1 - srcBegin = 70D8 - srcEnd = 70D9 - mappingOffset = 0D43 - Mapping = - FBF4 D5A7 -End of Item 05D2 - -Begin of Item 05D3 - Format 1 - srcBegin = 70DD - srcEnd = 70DF - mappingOffset = 0D45 - Mapping = - F1F6 FFFD E6D3 -End of Item 05D3 - -Begin of Item 05D4 - Format 2 - srcBegin = 70F1 - destBegin = CCDE -End of Item 05D4 - -Begin of Item 05D5 - Format 2 - srcBegin = 70F9 - destBegin = F8B2 -End of Item 05D5 - -Begin of Item 05D6 - Format 2 - srcBegin = 70FD - destBegin = DCEB -End of Item 05D6 - -Begin of Item 05D7 - Format 2 - srcBegin = 7104 - destBegin = FDB6 -End of Item 05D7 - -Begin of Item 05D8 - Format 1 - srcBegin = 7109 - srcEnd = 710C - mappingOffset = 0D48 - Mapping = - E5EA FFFD FFFD F1E0 -End of Item 05D8 - -Begin of Item 05D9 - Format 1 - srcBegin = 7119 - srcEnd = 711A - mappingOffset = 0D4C - Mapping = - DBCC DDCD -End of Item 05D9 - -Begin of Item 05DA - Format 1 - srcBegin = 711E - srcEnd = 7121 - mappingOffset = 0D4E - Mapping = - D4C8 FFFD FFFD D9ED -End of Item 05DA - -Begin of Item 05DB - Format 2 - srcBegin = 7126 - destBegin = F5A5 -End of Item 05DB - -Begin of Item 05DC - Format 2 - srcBegin = 7130 - destBegin = E6FB -End of Item 05DC - -Begin of Item 05DD - Format 2 - srcBegin = 7136 - destBegin = E6D4 -End of Item 05DD - -Begin of Item 05DE - Format 1 - srcBegin = 7147 - srcEnd = 7150 - mappingOffset = 0D52 - Mapping = - FDC8 FFFD D6A1 FDBF FFFD FCD3 FFFD EFA1 - FFFD E7BC -End of Item 05DE - -Begin of Item 05DF - Format 1 - srcBegin = 7156 - srcEnd = 715E - mappingOffset = 0D5C - Mapping = - D1EE FFFD FFFD E6D5 FFFD FFFD E9F2 FFFD - DFB0 -End of Item 05DF - -Begin of Item 05E0 - Format 1 - srcBegin = 7164 - srcEnd = 716E - mappingOffset = 0D65 - Mapping = - D8E0 FCBA FDAF F0CE FFFD DBE1 FFFD FFFD - E5C9 FFFD EDB4 -End of Item 05E0 - -Begin of Item 05E1 - Format 2 - srcBegin = 717D - destBegin = E0C3 -End of Item 05E1 - -Begin of Item 05E2 - Format 2 - srcBegin = 7184 - destBegin = E3D8 -End of Item 05E2 - -Begin of Item 05E3 - Format 1 - srcBegin = 7189 - srcEnd = 718A - mappingOffset = 0D70 - Mapping = - E9FB EAA8 -End of Item 05E3 - -Begin of Item 05E4 - Format 1 - srcBegin = 718F - srcEnd = 7194 - mappingOffset = 0D72 - Mapping = - FDB7 FFFD FFFD FBA7 FFFD E9C2 -End of Item 05E4 - -Begin of Item 05E5 - Format 2 - srcBegin = 7199 - destBegin = FDF7 -End of Item 05E5 - -Begin of Item 05E6 - Format 1 - srcBegin = 719F - srcEnd = 71A2 - mappingOffset = 0D78 - Mapping = - E2D9 FFFD FFFD DCEC -End of Item 05E6 - -Begin of Item 05E7 - Format 2 - srcBegin = 71AC - destBegin = E8A2 -End of Item 05E7 - -Begin of Item 05E8 - Format 2 - srcBegin = 71B1 - destBegin = E6F0 -End of Item 05E8 - -Begin of Item 05E9 - Format 1 - srcBegin = 71B9 - srcEnd = 71BA - mappingOffset = 0D7C - Mapping = - FDF8 FDF9 -End of Item 05E9 - -Begin of Item 05EA - Format 1 - srcBegin = 71BE - srcEnd = 71C3 - mappingOffset = 0D7E - Mapping = - F6BF FFFD FFFD E7A7 FFFD E6D7 -End of Item 05EA - -Begin of Item 05EB - Format 1 - srcBegin = 71C8 - srcEnd = 71C9 - mappingOffset = 0D84 - Mapping = - D4F3 D4C9 -End of Item 05EB - -Begin of Item 05EC - Format 1 - srcBegin = 71CE - srcEnd = 71D5 - mappingOffset = 0D86 - Mapping = - D6FA FFFD D7F2 FFFD E1C0 FFFD DBE2 E6D8 -End of Item 05EC - -Begin of Item 05ED - Format 2 - srcBegin = 71DF - destBegin = E7BD -End of Item 05ED - -Begin of Item 05EE - Format 1 - srcBegin = 71E5 - srcEnd = 71E7 - mappingOffset = 0D8E - Mapping = - F0CF F3BE E2AC -End of Item 05EE - -Begin of Item 05EF - Format 1 - srcBegin = 71ED - srcEnd = 71EE - mappingOffset = 0D91 - Mapping = - F5B7 E0F0 -End of Item 05EF - -Begin of Item 05F0 - Format 1 - srcBegin = 71FB - srcEnd = 7200 - mappingOffset = 0D93 - Mapping = - FDB8 E3E8 FFFD D4A7 E8FC FAD2 -End of Item 05F0 - -Begin of Item 05F1 - Format 2 - srcBegin = 7206 - destBegin = F8EF -End of Item 05F1 - -Begin of Item 05F2 - Format 2 - srcBegin = 7210 - destBegin = D6D3 -End of Item 05F2 - -Begin of Item 05F3 - Format 2 - srcBegin = 721B - destBegin = D5B4 -End of Item 05F3 - -Begin of Item 05F4 - Format 1 - srcBegin = 722A - srcEnd = 7236 - mappingOffset = 0D99 - Mapping = - F0D0 FFFD F7F0 EEB3 FFFD FFFD EABA FFFD - EAD3 FFFD FFFD EDC9 DDAB -End of Item 05F4 - -Begin of Item 05F5 - Format 1 - srcBegin = 723A - srcEnd = 7240 - mappingOffset = 0DA6 - Mapping = - E5AC FDA1 FFFD DFD0 ECB3 FFFD DFD1 -End of Item 05F5 - -Begin of Item 05F6 - Format 1 - srcBegin = 7246 - srcEnd = 7248 - mappingOffset = 0DAD - Mapping = - EDED F8B8 F7FA -End of Item 05F6 - -Begin of Item 05F7 - Format 2 - srcBegin = 724C - destBegin = F8AB -End of Item 05F7 - -Begin of Item 05F8 - Format 2 - srcBegin = 7252 - destBegin = F4E0 -End of Item 05F8 - -Begin of Item 05F9 - Format 1 - srcBegin = 7258 - srcEnd = 7262 - mappingOffset = 0DB0 - Mapping = - D4BA E4B3 FFFD E9DA FFFD DEB6 FFFD D9BF - FFFD D9C0 D6EF -End of Item 05F9 - -Begin of Item 05FA - Format 1 - srcBegin = 7267 - srcEnd = 7269 - mappingOffset = 0DBB - Mapping = - D9CC FFFD DAAA -End of Item 05FA - -Begin of Item 05FB - Format 2 - srcBegin = 7272 - destBegin = DFE5 -End of Item 05FB - -Begin of Item 05FC - Format 2 - srcBegin = 7279 - destBegin = F7E5 -End of Item 05FC - -Begin of Item 05FD - Format 1 - srcBegin = 727D - srcEnd = 7281 - mappingOffset = 0DBE - Mapping = - CCB2 FFFD FFFD DFF9 D7E0 -End of Item 05FD - -Begin of Item 05FE - Format 2 - srcBegin = 72A2 - destBegin = D4BB -End of Item 05FE - -Begin of Item 05FF - Format 2 - srcBegin = 72A7 - destBegin = FDFA -End of Item 05FF - -Begin of Item 0600 - Format 1 - srcBegin = 72AC - srcEnd = 72AF - mappingOffset = 0DC3 - Mapping = - CCB3 FFFD FFFD DBF3 -End of Item 0600 - -Begin of Item 0601 - Format 1 - srcBegin = 72C0 - srcEnd = 72C4 - mappingOffset = 0DC7 - Mapping = - DFD2 FFFD CECA FFFD EEDA -End of Item 0601 - -Begin of Item 0602 - Format 1 - srcBegin = 72CE - srcEnd = 72D0 - mappingOffset = 0DCC - Mapping = - E4E4 FFFD FBCF -End of Item 0602 - -Begin of Item 0603 - Format 1 - srcBegin = 72D7 - srcEnd = 72D9 - mappingOffset = 0DCF - Mapping = - CFB7 FFFD EEC3 -End of Item 0603 - -Begin of Item 0604 - Format 2 - srcBegin = 72E1 - destBegin = CEEA -End of Item 0604 - -Begin of Item 0605 - Format 2 - srcBegin = 72E9 - destBegin = E2AD -End of Item 0605 - -Begin of Item 0606 - Format 1 - srcBegin = 72F8 - srcEnd = 72FD - mappingOffset = 0DD2 - Mapping = - D7E1 FAF5 FFFD FFFD D5C9 F8AC -End of Item 0606 - -Begin of Item 0607 - Format 2 - srcBegin = 730A - destBegin = E7D9 -End of Item 0607 - -Begin of Item 0608 - Format 2 - srcBegin = 7316 - destBegin = F3E9 -End of Item 0608 - -Begin of Item 0609 - Format 1 - srcBegin = 731B - srcEnd = 731D - mappingOffset = 0DD8 - Mapping = - D8ED E3C4 F0F1 -End of Item 0609 - -Begin of Item 060A - Format 2 - srcBegin = 7325 - destBegin = E8E5 -End of Item 060A - -Begin of Item 060B - Format 1 - srcBegin = 7329 - srcEnd = 732B - mappingOffset = 0DDB - Mapping = - E0FA EEC4 D9DE -End of Item 060B - -Begin of Item 060C - Format 1 - srcBegin = 7336 - srcEnd = 7337 - mappingOffset = 0DDE - Mapping = - EBA2 EBA3 -End of Item 060C - -Begin of Item 060D - Format 1 - srcBegin = 733E - srcEnd = 733F - mappingOffset = 0DE0 - Mapping = - FCC2 EABB -End of Item 060D - -Begin of Item 060E - Format 1 - srcBegin = 7344 - srcEnd = 7345 - mappingOffset = 0DE2 - Mapping = - E8AB DEE2 -End of Item 060E - -Begin of Item 060F - Format 1 - srcBegin = 7350 - srcEnd = 7352 - mappingOffset = 0DE4 - Mapping = - EDEF FFFD E8A3 -End of Item 060F - -Begin of Item 0610 - Format 2 - srcBegin = 7357 - destBegin = CFF1 -End of Item 0610 - -Begin of Item 0611 - Format 1 - srcBegin = 7368 - srcEnd = 736A - mappingOffset = 0DE7 - Mapping = - D4BC FFFD FCEA -End of Item 0611 - -Begin of Item 0612 - Format 1 - srcBegin = 7370 - srcEnd = 737B - mappingOffset = 0DEA - Mapping = - E7BE FFFD FCF2 FFFD FFFD D6B4 FFFD FFFD - E2AE FFFD D3B7 FACC -End of Item 0612 - -Begin of Item 0613 - Format 1 - srcBegin = 7384 - srcEnd = 738E - mappingOffset = 0DF6 - Mapping = - FADC FFFD EDB5 E1E3 FFFD E8AC FFFD E8DD - FFFD FFFD EFE9 -End of Item 0613 - -Begin of Item 0614 - Format 1 - srcBegin = 7394 - srcEnd = 7398 - mappingOffset = 0E01 - Mapping = - F4BD FFFD CFB8 E9DB D1AC -End of Item 0614 - -Begin of Item 0615 - Format 2 - srcBegin = 739F - destBegin = DAC7 -End of Item 0615 - -Begin of Item 0616 - Format 1 - srcBegin = 73A7 - srcEnd = 73A9 - mappingOffset = 0E06 - Mapping = - EBC9 FFFD E8CC -End of Item 0616 - -Begin of Item 0617 - Format 2 - srcBegin = 73AD - destBegin = DEB7 -End of Item 0617 - -Begin of Item 0618 - Format 1 - srcBegin = 73B2 - srcEnd = 73B3 - mappingOffset = 0E09 - Mapping = - D6BC D3E5 -End of Item 0618 - -Begin of Item 0619 - Format 2 - srcBegin = 73B9 - destBegin = FADD -End of Item 0619 - -Begin of Item 061A - Format 1 - srcBegin = 73C0 - srcEnd = 73C2 - mappingOffset = 0E0B - Mapping = - DAD6 FFFD CAB1 -End of Item 061A - -Begin of Item 061B - Format 1 - srcBegin = 73C9 - srcEnd = 73CF - mappingOffset = 0E0E - Mapping = - DAC8 DFA6 FFFD F9B3 F2D2 FFFD CAC4 -End of Item 061B - -Begin of Item 061C - Format 1 - srcBegin = 73D6 - srcEnd = 73D9 - mappingOffset = 0E15 - Mapping = - CECB FFFD FFFD CDF5 -End of Item 061C - -Begin of Item 061D - Format 1 - srcBegin = 73DD - srcEnd = 73ED - mappingOffset = 0E19 - Mapping = - FDB0 D5A8 FFFD F1C1 FFFD FFFD E2E9 DCCA - ECB4 FAC0 FFFD FFFD FBA8 D0A8 FFFD FFFD - DAEC -End of Item 061D - -Begin of Item 061E - Format 1 - srcBegin = 73F7 - srcEnd = 73F9 - mappingOffset = 0E2A - Mapping = - D9EE FFFD E0FB -End of Item 061E - -Begin of Item 061F - Format 1 - srcBegin = 73FD - srcEnd = 7409 - mappingOffset = 0E2D - Mapping = - EFEA FADE FFFD FFFD E0C4 FFFD CFB9 FFFD - D5CA D7E2 E2AF FFFD D7B8 -End of Item 061F - -Begin of Item 0620 - Format 2 - srcBegin = 7413 - destBegin = E8CD -End of Item 0620 - -Begin of Item 0621 - Format 2 - srcBegin = 741B - destBegin = F6DA -End of Item 0621 - -Begin of Item 0622 - Format 1 - srcBegin = 7420 - srcEnd = 743A - mappingOffset = 0E3A - Mapping = - EFA2 E2DA F6FC FFFD FFFD FBD0 D1AD FFFD - CDE4 FFFD D1AE DCED E8CE FFFD F0F9 CEB5 - E6FC FFFD FFFD D7FB D0D6 DDF5 F7F1 FFFD - F6FD FFFD DBF7 -End of Item 0622 - -Begin of Item 0623 - Format 1 - srcBegin = 743F - srcEnd = 7444 - mappingOffset = 0E55 - Mapping = - FBEA E9DC D9C1 FFFD F5F2 E0C5 -End of Item 0623 - -Begin of Item 0624 - Format 2 - srcBegin = 744B - destBegin = EAD4 -End of Item 0624 - -Begin of Item 0625 - Format 1 - srcBegin = 7455 - srcEnd = 746A - mappingOffset = 0E5B - Mapping = - F9C2 FFFD EABC FFFD D2C5 FBD1 E7C0 EBA5 - FFFD DFFA E3A2 D7B9 FFFD E9C3 FFFD E8FD - E8AF FFFD FFFD F2D3 FBA9 D8A5 -End of Item 0625 - -Begin of Item 0626 - Format 2 - srcBegin = 746F - destBegin = D5CB -End of Item 0626 - -Begin of Item 0627 - Format 2 - srcBegin = 747E - destBegin = D0C8 -End of Item 0627 - -Begin of Item 0628 - Format 1 - srcBegin = 7482 - srcEnd = 7483 - mappingOffset = 0E71 - Mapping = - D1AF D7E3 -End of Item 0628 - -Begin of Item 0629 - Format 1 - srcBegin = 7487 - srcEnd = 748B - mappingOffset = 0E73 - Mapping = - E0C6 FFFD D6A2 FFFD EDF0 -End of Item 0629 - -Begin of Item 062A - Format 2 - srcBegin = 7498 - destBegin = D7F3 -End of Item 062A - -Begin of Item 062B - Format 1 - srcBegin = 749C - srcEnd = 74AA - mappingOffset = 0E78 - Mapping = - FCD4 FFFD DAD7 CCDF FFFD F2D4 FFFD D1B0 - FFFD CCE0 FFFD DBFD F3BF FFFD F0D1 -End of Item 062B - -Begin of Item 062C - Format 1 - srcBegin = 74B0 - srcEnd = 74B5 - mappingOffset = 0E87 - Mapping = - FCBB FFFD E2B0 FFFD FFFD E6A5 -End of Item 062C - -Begin of Item 062D - Format 2 - srcBegin = 74B9 - destBegin = E2DB -End of Item 062D - -Begin of Item 062E - Format 1 - srcBegin = 74BD - srcEnd = 74BF - mappingOffset = 0E8D - Mapping = - DFDE FFFD E0C7 -End of Item 062E - -Begin of Item 062F - Format 2 - srcBegin = 74C6 - destBegin = F2EF -End of Item 062F - -Begin of Item 0630 - Format 2 - srcBegin = 74CA - destBegin = CCE1 -End of Item 0630 - -Begin of Item 0631 - Format 2 - srcBegin = 74CF - destBegin = D6EA -End of Item 0631 - -Begin of Item 0632 - Format 2 - srcBegin = 74D4 - destBegin = E7C2 -End of Item 0632 - -Begin of Item 0633 - Format 1 - srcBegin = 74D8 - srcEnd = 74DC - mappingOffset = 0E90 - Mapping = - CEB6 FFFD F3C0 FFFD CDFE -End of Item 0633 - -Begin of Item 0634 - Format 1 - srcBegin = 74E0 - srcEnd = 74E6 - mappingOffset = 0E95 - Mapping = - FBD2 FFFD F8F8 F7FB FFFD FFFD E8BF -End of Item 0634 - -Begin of Item 0635 - Format 2 - srcBegin = 74EE - destBegin = E8B7 -End of Item 0635 - -Begin of Item 0636 - Format 2 - srcBegin = 74F7 - destBegin = EDB6 -End of Item 0636 - -Begin of Item 0637 - Format 1 - srcBegin = 7501 - srcEnd = 7504 - mappingOffset = 0E9C - Mapping = - DCBA FFFD FFFD CCB4 -End of Item 0637 - -Begin of Item 0638 - Format 2 - srcBegin = 7511 - destBegin = F1F7 -End of Item 0638 - -Begin of Item 0639 - Format 1 - srcBegin = 7515 - srcEnd = 751B - mappingOffset = 0EA0 - Mapping = - E8B8 FFFD FFFD CAF6 FFFD E4A4 F4D6 -End of Item 0639 - -Begin of Item 063A - Format 2 - srcBegin = 751F - destBegin = DFE6 -End of Item 063A - -Begin of Item 063B - Format 1 - srcBegin = 7523 - srcEnd = 752C - mappingOffset = 0EA7 - Mapping = - DFA7 FFFD DFE7 E1C1 FFFD E9C4 FFFD FFFD - DCCB E9C5 -End of Item 063B - -Begin of Item 063C - Format 1 - srcBegin = 7530 - srcEnd = 7533 - mappingOffset = 0EB1 - Mapping = - EFA3 EBA6 CBA3 E3E9 -End of Item 063C - -Begin of Item 063D - Format 1 - srcBegin = 7537 - srcEnd = 753A - mappingOffset = 0EB5 - Mapping = - D1FB EFA4 FFFD EFEB -End of Item 063D - -Begin of Item 063E - Format 2 - srcBegin = 7547 - destBegin = D0B4 -End of Item 063E - -Begin of Item 063F - Format 1 - srcBegin = 754C - srcEnd = 7554 - mappingOffset = 0EB9 - Mapping = - CDA3 FFFD FFFD E8E6 FFFD EFA5 FFFD D3CC - DAED -End of Item 063F - -Begin of Item 0640 - Format 1 - srcBegin = 7559 - srcEnd = 755D - mappingOffset = 0EC2 - Mapping = - D7BA FFFD F2D5 F5E5 D9EF -End of Item 0640 - -Begin of Item 0641 - Format 1 - srcBegin = 7562 - srcEnd = 7566 - mappingOffset = 0EC7 - Mapping = - F9B4 FFFD FFFD D5D4 FDCF -End of Item 0641 - -Begin of Item 0642 - Format 2 - srcBegin = 756A - destBegin = DBE3 -End of Item 0642 - -Begin of Item 0643 - Format 1 - srcBegin = 756F - srcEnd = 7570 - mappingOffset = 0ECC - Mapping = - F1E1 ECB6 -End of Item 0643 - -Begin of Item 0644 - Format 1 - srcBegin = 7575 - srcEnd = 757A - mappingOffset = 0ECE - Mapping = - FBFE D3D7 FFFD D1B1 FFFD CBB1 -End of Item 0644 - -Begin of Item 0645 - Format 2 - srcBegin = 757F - destBegin = D1B2 -End of Item 0645 - -Begin of Item 0646 - Format 1 - srcBegin = 7586 - srcEnd = 7591 - mappingOffset = 0ED4 - Mapping = - CBB2 F1C2 FFFD FFFD F4E1 F9B5 FFFD FFFD - E1C3 E1C2 FFFD EBF7 -End of Item 0646 - -Begin of Item 0647 - Format 2 - srcBegin = 759D - destBegin = DFA8 -End of Item 0647 - -Begin of Item 0648 - Format 2 - srcBegin = 75A5 - destBegin = CBCA -End of Item 0648 - -Begin of Item 0649 - Format 2 - srcBegin = 75AB - destBegin = E6B9 -End of Item 0649 - -Begin of Item 064A - Format 1 - srcBegin = 75B1 - srcEnd = 75BE - mappingOffset = 0EE0 - Mapping = - F8DE F9AA CAF7 FFFD EDB7 FFFD FFFD D3B8 - F2D6 FFFD FFFD D4D9 EEC5 F2F0 -End of Item 064A - -Begin of Item 064B - Format 1 - srcBegin = 75C2 - srcEnd = 75C7 - mappingOffset = 0EEE - Mapping = - CAB2 FFFD FFFD DCBB FFFD F1F8 -End of Item 064B - -Begin of Item 064C - Format 2 - srcBegin = 75CD - destBegin = ECB7 -End of Item 064C - -Begin of Item 064D - Format 1 - srcBegin = 75D2 - srcEnd = 75DB - mappingOffset = 0EF4 - Mapping = - E5CA FFFD F6C0 FDDD FFFD FFFD D4E3 CCE2 - FFFD F7D4 -End of Item 064D - -Begin of Item 064E - Format 2 - srcBegin = 75E2 - destBegin = D7E5 -End of Item 064E - -Begin of Item 064F - Format 1 - srcBegin = 75F0 - srcEnd = 75F4 - mappingOffset = 0EFE - Mapping = - D3C3 FFFD D8A6 FFFD F6C1 -End of Item 064F - -Begin of Item 0650 - Format 1 - srcBegin = 75FA - srcEnd = 75FC - mappingOffset = 0F03 - Mapping = - DDF6 FFFD CDC0 -End of Item 0650 - -Begin of Item 0651 - Format 2 - srcBegin = 7600 - destBegin = E5DC -End of Item 0651 - -Begin of Item 0652 - Format 2 - srcBegin = 760D - destBegin = E5CB -End of Item 0652 - -Begin of Item 0653 - Format 2 - srcBegin = 7619 - destBegin = E1C4 -End of Item 0653 - -Begin of Item 0654 - Format 1 - srcBegin = 761F - srcEnd = 7626 - mappingOffset = 0F06 - Mapping = - E8B0 F4B0 F3EA DAEE FFFD D7BB FFFD E2B1 -End of Item 0654 - -Begin of Item 0655 - Format 2 - srcBegin = 763B - destBegin = D7AA -End of Item 0655 - -Begin of Item 0656 - Format 2 - srcBegin = 7642 - destBegin = D6FB -End of Item 0656 - -Begin of Item 0657 - Format 1 - srcBegin = 764C - srcEnd = 764E - mappingOffset = 0F0E - Mapping = - E4DF FFFD CAD6 -End of Item 0657 - -Begin of Item 0658 - Format 2 - srcBegin = 7652 - destBegin = EBA8 -End of Item 0658 - -Begin of Item 0659 - Format 2 - srcBegin = 7656 - destBegin = DBFE -End of Item 0659 - -Begin of Item 065A - Format 1 - srcBegin = 7661 - srcEnd = 7664 - mappingOffset = 0F11 - Mapping = - F6C2 FFFD FFFD EFBB -End of Item 065A - -Begin of Item 065B - Format 1 - srcBegin = 7669 - srcEnd = 766C - mappingOffset = 0F15 - Mapping = - D4FD FFFD FFFD E0C8 -End of Item 065B - -Begin of Item 065C - Format 1 - srcBegin = 7670 - srcEnd = 7672 - mappingOffset = 0F19 - Mapping = - E8B9 FFFD EFA6 -End of Item 065C - -Begin of Item 065D - Format 1 - srcBegin = 7678 - srcEnd = 767E - mappingOffset = 0F1C - Mapping = - CDA4 FFFD FFFD D4F4 DBA1 DBDC DBDD -End of Item 065D - -Begin of Item 065E - Format 1 - srcBegin = 7684 - srcEnd = 7687 - mappingOffset = 0F23 - Mapping = - EEDC FFFD CBCB FCD5 -End of Item 065E - -Begin of Item 065F - Format 1 - srcBegin = 768E - srcEnd = 7693 - mappingOffset = 0F27 - Mapping = - CEEB FFFD CDC1 FFFD FFFD FBD3 -End of Item 065F - -Begin of Item 0660 - Format 2 - srcBegin = 76AE - destBegin = F9AB -End of Item 0660 - -Begin of Item 0661 - Format 2 - srcBegin = 76BA - destBegin = F5D4 -End of Item 0661 - -Begin of Item 0662 - Format 1 - srcBegin = 76BF - srcEnd = 76CA - mappingOffset = 0F2D - Mapping = - D9A9 FFFD FFFD E9DD DBCD FFFD FFFD DDCE - FFFD E7C3 FFFD ECCC -End of Item 0662 - -Begin of Item 0663 - Format 2 - srcBegin = 76D2 - destBegin = F9EC -End of Item 0663 - -Begin of Item 0664 - Format 2 - srcBegin = 76D6 - destBegin = CBCC -End of Item 0664 - -Begin of Item 0665 - Format 1 - srcBegin = 76DB - srcEnd = 76E7 - mappingOffset = 0F39 - Mapping = - E0FC D4A8 FFFD EDD3 D8EF FFFD F2D7 FFFD - CAF8 DAEF FFFD FFFD D6D4 -End of Item 0665 - -Begin of Item 0666 - Format 2 - srcBegin = 76EE - destBegin = D9CD -End of Item 0666 - -Begin of Item 0667 - Format 1 - srcBegin = 76F2 - srcEnd = 76F4 - mappingOffset = 0F46 - Mapping = - D8EE FFFD F2C1 -End of Item 0667 - -Begin of Item 0668 - Format 2 - srcBegin = 76F8 - destBegin = DFD3 -End of Item 0668 - -Begin of Item 0669 - Format 1 - srcBegin = 76FC - srcEnd = 7704 - mappingOffset = 0F49 - Mapping = - DAF0 FFFD E2EA FFFD FFFD E0FD FFFD FFFD - D8F8 -End of Item 0669 - -Begin of Item 066A - Format 1 - srcBegin = 7708 - srcEnd = 770B - mappingOffset = 0F52 - Mapping = - F7AF DAB6 FFFD CAD7 -End of Item 066A - -Begin of Item 066B - Format 1 - srcBegin = 771E - srcEnd = 7720 - mappingOffset = 0F56 - Mapping = - F2D8 FFFD D8F9 -End of Item 066B - -Begin of Item 066C - Format 2 - srcBegin = 7729 - destBegin = FADF -End of Item 066C - -Begin of Item 066D - Format 1 - srcBegin = 7737 - srcEnd = 773C - mappingOffset = 0F59 - Mapping = - CFEF D9C2 FFFD F0D2 FFFD E4D1 -End of Item 066D - -Begin of Item 066E - Format 2 - srcBegin = 7740 - destBegin = F3B7 -End of Item 066E - -Begin of Item 066F - Format 2 - srcBegin = 774D - destBegin = FAE0 -End of Item 066F - -Begin of Item 0670 - Format 2 - srcBegin = 775B - destBegin = EFEC -End of Item 0670 - -Begin of Item 0671 - Format 1 - srcBegin = 7761 - srcEnd = 7766 - mappingOffset = 0F5F - Mapping = - E2B2 FFFD D4BD FFFD FFFD D9CE -End of Item 0671 - -Begin of Item 0672 - Format 2 - srcBegin = 776B - destBegin = F4E2 -End of Item 0672 - -Begin of Item 0673 - Format 2 - srcBegin = 7779 - destBegin = D4A9 -End of Item 0673 - -Begin of Item 0674 - Format 1 - srcBegin = 777E - srcEnd = 777F - mappingOffset = 0F65 - Mapping = - CDC2 E7DA -End of Item 0674 - -Begin of Item 0675 - Format 2 - srcBegin = 778B - destBegin = F2D9 -End of Item 0675 - -Begin of Item 0676 - Format 2 - srcBegin = 7791 - destBegin = D9AA -End of Item 0676 - -Begin of Item 0677 - Format 2 - srcBegin = 779E - destBegin = D8BE -End of Item 0677 - -Begin of Item 0678 - Format 2 - srcBegin = 77A5 - destBegin = DCAD -End of Item 0678 - -Begin of Item 0679 - Format 1 - srcBegin = 77AC - srcEnd = 77B3 - mappingOffset = 0F67 - Mapping = - E2EB D6FC FFFD FFFD CAF9 FFFD FFFD D4DA -End of Item 0679 - -Begin of Item 067A - Format 1 - srcBegin = 77BB - srcEnd = 77BF - mappingOffset = 0F6F - Mapping = - F4D7 CCA1 FFFD FFFD CFBA -End of Item 067A - -Begin of Item 067B - Format 2 - srcBegin = 77D7 - destBegin = F5B8 -End of Item 067B - -Begin of Item 067C - Format 1 - srcBegin = 77DB - srcEnd = 77DC - mappingOffset = 0F74 - Mapping = - D9C3 D0E8 -End of Item 067C - -Begin of Item 067D - Format 1 - srcBegin = 77E2 - srcEnd = 77E5 - mappingOffset = 0F76 - Mapping = - E3C5 EBF8 FFFD F2B1 -End of Item 067D - -Begin of Item 067E - Format 2 - srcBegin = 77E9 - destBegin = CFBB -End of Item 067E - -Begin of Item 067F - Format 1 - srcBegin = 77ED - srcEnd = 77EF - mappingOffset = 0F7A - Mapping = - D3AD E8E1 CEEC -End of Item 067F - -Begin of Item 0680 - Format 2 - srcBegin = 77F3 - destBegin = E0B4 -End of Item 0680 - -Begin of Item 0681 - Format 2 - srcBegin = 7802 - destBegin = DEE3 -End of Item 0681 - -Begin of Item 0682 - Format 2 - srcBegin = 7812 - destBegin = DDF7 -End of Item 0682 - -Begin of Item 0683 - Format 1 - srcBegin = 7825 - srcEnd = 7827 - mappingOffset = 0F7D - Mapping = - F2B2 F3F6 F6DB -End of Item 0683 - -Begin of Item 0684 - Format 2 - srcBegin = 782C - destBegin = D7FE -End of Item 0684 - -Begin of Item 0685 - Format 1 - srcBegin = 7832 - srcEnd = 7834 - mappingOffset = 0F80 - Mapping = - F8DF FFFD F7F2 -End of Item 0685 - -Begin of Item 0686 - Format 2 - srcBegin = 7845 - destBegin = D0A9 -End of Item 0686 - -Begin of Item 0687 - Format 2 - srcBegin = 784F - destBegin = E6DA -End of Item 0687 - -Begin of Item 0688 - Format 2 - srcBegin = 785D - destBegin = F5A6 -End of Item 0688 - -Begin of Item 0689 - Format 1 - srcBegin = 786B - srcEnd = 786F - mappingOffset = 0F83 - Mapping = - D7BC CCE3 FFFD FFFD E6DB -End of Item 0689 - -Begin of Item 068A - Format 2 - srcBegin = 787C - destBegin = DDDD -End of Item 068A - -Begin of Item 068B - Format 2 - srcBegin = 7881 - destBegin = D1B3 -End of Item 068B - -Begin of Item 068C - Format 2 - srcBegin = 7887 - destBegin = EFED -End of Item 068C - -Begin of Item 068D - Format 1 - srcBegin = 788C - srcEnd = 7891 - mappingOffset = 0F88 - Mapping = - D6DE E4F4 E1EF FFFD FFFD DDF8 -End of Item 068D - -Begin of Item 068E - Format 2 - srcBegin = 7897 - destBegin = E8CF -End of Item 068E - -Begin of Item 068F - Format 2 - srcBegin = 78A3 - destBegin = CAE5 -End of Item 068F - -Begin of Item 0690 - Format 1 - srcBegin = 78A7 - srcEnd = 78A9 - mappingOffset = 0F8E - Mapping = - DCA1 FFFD E0B5 -End of Item 0690 - -Begin of Item 0691 - Format 1 - srcBegin = 78BA - srcEnd = 78BC - mappingOffset = 0F91 - Mapping = - FCAC FCAD D8A7 -End of Item 0691 - -Begin of Item 0692 - Format 2 - srcBegin = 78C1 - destBegin = EDB8 -End of Item 0692 - -Begin of Item 0693 - Format 2 - srcBegin = 78C5 - destBegin = DBB6 -End of Item 0693 - -Begin of Item 0694 - Format 1 - srcBegin = 78CA - srcEnd = 78D0 - mappingOffset = 0F94 - Mapping = - D6F0 F3AF FFFD FFFD CDA5 FFFD DAF1 -End of Item 0694 - -Begin of Item 0695 - Format 2 - srcBegin = 78E8 - destBegin = D8A8 -End of Item 0695 - -Begin of Item 0696 - Format 1 - srcBegin = 78EC - srcEnd = 78EF - mappingOffset = 0F9B - Mapping = - CCE4 FFFD FFFD D1B4 -End of Item 0696 - -Begin of Item 0697 - Format 2 - srcBegin = 78F5 - destBegin = CAD8 -End of Item 0697 - -Begin of Item 0698 - Format 2 - srcBegin = 78FB - destBegin = DAF2 -End of Item 0698 - -Begin of Item 0699 - Format 2 - srcBegin = 7901 - destBegin = F5A7 -End of Item 0699 - -Begin of Item 069A - Format 2 - srcBegin = 790E - destBegin = F5A8 -End of Item 069A - -Begin of Item 069B - Format 2 - srcBegin = 7916 - destBegin = E6A6 -End of Item 069B - -Begin of Item 069C - Format 1 - srcBegin = 792A - srcEnd = 792C - mappingOffset = 0F9F - Mapping = - D5EC D5F8 DAF3 -End of Item 069C - -Begin of Item 069D - Format 2 - srcBegin = 793A - destBegin = E3C6 -End of Item 069D - -Begin of Item 069E - Format 1 - srcBegin = 793E - srcEnd = 7941 - mappingOffset = 0FA2 - Mapping = - DEE4 FFFD DEE5 D1B5 -End of Item 069E - -Begin of Item 069F - Format 1 - srcBegin = 7947 - srcEnd = 7949 - mappingOffset = 0FA6 - Mapping = - D1B6 D1B7 F2B3 -End of Item 069F - -Begin of Item 06A0 - Format 2 - srcBegin = 7950 - destBegin = E9DE -End of Item 06A0 - -Begin of Item 06A1 - Format 1 - srcBegin = 7956 - srcEnd = 7960 - mappingOffset = 0FA9 - Mapping = - F0D3 F2B4 FFFD FFFD F0D4 CBE4 FBD4 F5E6 - E3EA FFFD DEE6 -End of Item 06A1 - -Begin of Item 06A2 - Format 1 - srcBegin = 7965 - srcEnd = 7968 - mappingOffset = 0FB4 - Mapping = - DFD4 FFFD FFFD F8F9 -End of Item 06A2 - -Begin of Item 06A3 - Format 2 - srcBegin = 796D - destBegin = F0AE -End of Item 06A3 - -Begin of Item 06A4 - Format 2 - srcBegin = 797A - destBegin = D1B8 -End of Item 06A4 - -Begin of Item 06A5 - Format 1 - srcBegin = 797F - srcEnd = 7981 - mappingOffset = 0FB8 - Mapping = - D6DF FFFD D0D7 -End of Item 06A5 - -Begin of Item 06A6 - Format 1 - srcBegin = 798D - srcEnd = 7991 - mappingOffset = 0FBB - Mapping = - FCA1 EFEE DCD8 FFFD E9DF -End of Item 06A6 - -Begin of Item 06A7 - Format 1 - srcBegin = 79A6 - srcEnd = 79AA - mappingOffset = 0FC0 - Mapping = - E5DD FDFB FFFD FFFD E0C9 -End of Item 06A7 - -Begin of Item 06A8 - Format 1 - srcBegin = 79AE - srcEnd = 79B3 - mappingOffset = 0FC5 - Mapping = - D6C9 FFFD FFFD D4AA FFFD E5CC -End of Item 06A8 - -Begin of Item 06A9 - Format 2 - srcBegin = 79B9 - destBegin = E9E0 -End of Item 06A9 - -Begin of Item 06AA - Format 1 - srcBegin = 79BD - srcEnd = 79C1 - mappingOffset = 0FCB - Mapping = - D0D8 FCA2 D4BE E2B3 DEE7 -End of Item 06AA - -Begin of Item 06AB - Format 1 - srcBegin = 79C9 - srcEnd = 79CB - mappingOffset = 0FD0 - Mapping = - DCBC D2B6 F5D5 -End of Item 06AB - -Begin of Item 06AC - Format 1 - srcBegin = 79D1 - srcEnd = 79D8 - mappingOffset = 0FD3 - Mapping = - CEA1 F5A9 FFFD FFFD DDF9 FFFD FFFD DDFA -End of Item 06AC - -Begin of Item 06AD - Format 2 - srcBegin = 79DF - destBegin = F0D5 -End of Item 06AD - -Begin of Item 06AE - Format 1 - srcBegin = 79E4 - srcEnd = 79E9 - mappingOffset = 0FDB - Mapping = - F6DF FFFD F2DA E4EB FFFD F2F1 -End of Item 06AE - -Begin of Item 06AF - Format 2 - srcBegin = 79FB - destBegin = ECB9 -End of Item 06AF - -Begin of Item 06B0 - Format 2 - srcBegin = 7A00 - destBegin = FDFC -End of Item 06B0 - -Begin of Item 06B1 - Format 1 - srcBegin = 7A05 - srcEnd = 7A0D - mappingOffset = 0FE1 - Mapping = - E1AA FFFD FFFD CAD9 FFFD FFFD EFEF FFFD - F5AA -End of Item 06B1 - -Begin of Item 06B2 - Format 1 - srcBegin = 7A14 - srcEnd = 7A20 - mappingOffset = 0FEA - Mapping = - ECF9 FFFD FFFD F8AD FFFD F2C2 F6C3 FFFD - D7D2 FFFD FFFD F9A2 F0D6 -End of Item 06B2 - -Begin of Item 06B3 - Format 1 - srcBegin = 7A2E - srcEnd = 7A31 - mappingOffset = 0FF7 - Mapping = - F0FA FFFD FFFD F6E0 -End of Item 06B3 - -Begin of Item 06B4 - Format 1 - srcBegin = 7A36 - srcEnd = 7A37 - mappingOffset = 0FFB - Mapping = - E9F3 F2C3 -End of Item 06B4 - -Begin of Item 06B5 - Format 1 - srcBegin = 7A3B - srcEnd = 7A40 - mappingOffset = 0FFD - Mapping = - D4AB CAB3 CDA6 FFFD CDC3 CDDA -End of Item 06B5 - -Begin of Item 06B6 - Format 1 - srcBegin = 7A46 - srcEnd = 7A49 - mappingOffset = 1003 - Mapping = - D9CF FFFD FFFD F6C4 -End of Item 06B6 - -Begin of Item 06B7 - Format 1 - srcBegin = 7A4D - srcEnd = 7A4E - mappingOffset = 1007 - Mapping = - EEDD E7C4 -End of Item 06B7 - -Begin of Item 06B8 - Format 2 - srcBegin = 7A57 - destBegin = E2B4 -End of Item 06B8 - -Begin of Item 06B9 - Format 1 - srcBegin = 7A61 - srcEnd = 7A62 - mappingOffset = 1009 - Mapping = - DFE2 E7DB -End of Item 06B9 - -Begin of Item 06BA - Format 1 - srcBegin = 7A69 - srcEnd = 7A6B - mappingOffset = 100B - Mapping = - E8B1 FFFD FCAE -End of Item 06BA - -Begin of Item 06BB - Format 2 - srcBegin = 7A70 - destBegin = E5CD -End of Item 06BB - -Begin of Item 06BC - Format 1 - srcBegin = 7A74 - srcEnd = 7A84 - mappingOffset = 100E - Mapping = - FAEB FFFD CFBC FFFD FFFD CFE2 CDF6 FFFD - FFFD EFF0 FFFD F4BE FFFD D4CD FFFD FFFD - F3B8 -End of Item 06BC - -Begin of Item 06BD - Format 2 - srcBegin = 7A88 - destBegin = E9A1 -End of Item 06BD - -Begin of Item 06BE - Format 1 - srcBegin = 7A92 - srcEnd = 7A98 - mappingOffset = 101F - Mapping = - F2F2 F3EB FFFD F0D7 FFFD FFFD CFD7 -End of Item 06BE - -Begin of Item 06BF - Format 2 - srcBegin = 7A9F - destBegin = CFDF -End of Item 06BF - -Begin of Item 06C0 - Format 1 - srcBegin = 7AA9 - srcEnd = 7AAA - mappingOffset = 1026 - Mapping = - E8C0 E8C1 -End of Item 06C0 - -Begin of Item 06C1 - Format 1 - srcBegin = 7AAE - srcEnd = 7AAF - mappingOffset = 1028 - Mapping = - CFE3 E9A2 -End of Item 06C1 - -Begin of Item 06C2 - Format 2 - srcBegin = 7ABA - destBegin = D0AA -End of Item 06C2 - -Begin of Item 06C3 - Format 1 - srcBegin = 7AC4 - srcEnd = 7ACB - mappingOffset = 102A - Mapping = - F3C1 D0AB FFFD D4E4 FFFD FFFD EFBC D8A1 -End of Item 06C3 - -Begin of Item 06C4 - Format 1 - srcBegin = 7AD7 - srcEnd = 7AD9 - mappingOffset = 1032 - Mapping = - D9DF FFFD F3D7 -End of Item 06C4 - -Begin of Item 06C5 - Format 1 - srcBegin = 7ADD - srcEnd = 7AE5 - mappingOffset = 1035 - Mapping = - DCBD FFFD CCE5 EDF1 FFFD FFFD F1E2 FFFD - D4DB -End of Item 06C5 - -Begin of Item 06C6 - Format 1 - srcBegin = 7AEA - srcEnd = 7AEF - mappingOffset = 103E - Mapping = - E2B5 FFFD FFFD CAE6 FFFD D3AE -End of Item 06C6 - -Begin of Item 06C7 - Format 1 - srcBegin = 7AF6 - srcEnd = 7AFA - mappingOffset = 1044 - Mapping = - CCE6 FFFD FFFD F1D3 F5E7 -End of Item 06C7 - -Begin of Item 06C8 - Format 2 - srcBegin = 7AFF - destBegin = CADA -End of Item 06C8 - -Begin of Item 06C9 - Format 1 - srcBegin = 7B0F - srcEnd = 7B11 - mappingOffset = 1049 - Mapping = - FBEE FFFD E1C5 -End of Item 06C9 - -Begin of Item 06CA - Format 1 - srcBegin = 7B19 - srcEnd = 7B20 - mappingOffset = 104C - Mapping = - DFE9 FFFD EEDE FFFD FFFD F7C2 FFFD D8A2 -End of Item 06CA - -Begin of Item 06CB - Format 2 - srcBegin = 7B26 - destBegin = DDAC -End of Item 06CB - -Begin of Item 06CC - Format 1 - srcBegin = 7B2C - srcEnd = 7B2D - mappingOffset = 1054 - Mapping = - F0AF D6BD -End of Item 06CC - -Begin of Item 06CD - Format 2 - srcBegin = 7B39 - destBegin = E1AB -End of Item 06CD - -Begin of Item 06CE - Format 1 - srcBegin = 7B46 - srcEnd = 7B56 - mappingOffset = 1056 - Mapping = - F9B6 FFFD FFFD D4F5 FFFD D0C9 EFA7 E2EC - FFFD DBEA CECC F5E8 F7D5 FFFD D3CD FFFD - F3FE -End of Item 06CE - -Begin of Item 06CF - Format 2 - srcBegin = 7B60 - destBegin = D0B5 -End of Item 06CF - -Begin of Item 06D0 - Format 1 - srcBegin = 7B6C - srcEnd = 7B6E - mappingOffset = 1067 - Mapping = - E0FE FFFD DFFB -End of Item 06D0 - -Begin of Item 06D1 - Format 2 - srcBegin = 7B75 - destBegin = E6DD -End of Item 06D1 - -Begin of Item 06D2 - Format 2 - srcBegin = 7B7D - destBegin = E8A4 -End of Item 06D2 - -Begin of Item 06D3 - Format 2 - srcBegin = 7B87 - destBegin = CBCD -End of Item 06D3 - -Begin of Item 06D4 - Format 2 - srcBegin = 7B8B - destBegin = EFA8 -End of Item 06D4 - -Begin of Item 06D5 - Format 2 - srcBegin = 7B8F - destBegin = EEB4 -End of Item 06D5 - -Begin of Item 06D6 - Format 1 - srcBegin = 7B94 - srcEnd = 7B9D - mappingOffset = 106A - Mapping = - DAD8 D1B9 FFFD DFA9 FFFD FFFD F3B0 FFFD - FFFD CCC4 -End of Item 06D6 - -Begin of Item 06D7 - Format 2 - srcBegin = 7BA1 - destBegin = CEB7 -End of Item 06D7 - -Begin of Item 06D8 - Format 2 - srcBegin = 7BAD - destBegin = EFA9 -End of Item 06D8 - -Begin of Item 06D9 - Format 1 - srcBegin = 7BB1 - srcEnd = 7BB4 - mappingOffset = 1074 - Mapping = - DFD5 FFFD FFFD EDD7 -End of Item 06D9 - -Begin of Item 06DA - Format 2 - srcBegin = 7BB8 - destBegin = EEC6 -End of Item 06DA - -Begin of Item 06DB - Format 1 - srcBegin = 7BC0 - srcEnd = 7BC9 - mappingOffset = 1078 - Mapping = - EFBD FCD6 FFFD FFFD DBF4 FFFD EFAA F8B9 - FFFD F5E9 -End of Item 06DB - -Begin of Item 06DC - Format 2 - srcBegin = 7BD2 - destBegin = E3D9 -End of Item 06DC - -Begin of Item 06DD - Format 2 - srcBegin = 7BE0 - destBegin = E1C6 -End of Item 06DD - -Begin of Item 06DE - Format 2 - srcBegin = 7BE4 - destBegin = D4BF -End of Item 06DE - -Begin of Item 06DF - Format 2 - srcBegin = 7BE9 - destBegin = DEE8 -End of Item 06DF - -Begin of Item 06E0 - Format 2 - srcBegin = 7C07 - destBegin = F0EA -End of Item 06E0 - -Begin of Item 06E1 - Format 2 - srcBegin = 7C12 - destBegin = F3C2 -End of Item 06E1 - -Begin of Item 06E2 - Format 1 - srcBegin = 7C1E - srcEnd = 7C21 - mappingOffset = 1082 - Mapping = - D3AF FFFD FFFD CADB -End of Item 06E2 - -Begin of Item 06E3 - Format 1 - srcBegin = 7C27 - srcEnd = 7C2B - mappingOffset = 1086 - Mapping = - FCD7 FFFD FFFD EDD8 E1C7 -End of Item 06E3 - -Begin of Item 06E4 - Format 1 - srcBegin = 7C3D - srcEnd = 7C3F - mappingOffset = 108B - Mapping = - F4D8 D6B3 DDAD -End of Item 06E4 - -Begin of Item 06E5 - Format 2 - srcBegin = 7C43 - destBegin = D5BE -End of Item 06E5 - -Begin of Item 06E6 - Format 1 - srcBegin = 7C4C - srcEnd = 7C4D - mappingOffset = 108E - Mapping = - F1C3 EEDF -End of Item 06E6 - -Begin of Item 06E7 - Format 2 - srcBegin = 7C60 - destBegin = D6EB -End of Item 06E7 - -Begin of Item 06E8 - Format 2 - srcBegin = 7C64 - destBegin = F4D9 -End of Item 06E8 - -Begin of Item 06E9 - Format 2 - srcBegin = 7C6C - destBegin = D7E6 -End of Item 06E9 - -Begin of Item 06EA - Format 2 - srcBegin = 7C73 - destBegin = DAB7 -End of Item 06EA - -Begin of Item 06EB - Format 2 - srcBegin = 7C83 - destBegin = DDFB -End of Item 06EB - -Begin of Item 06EC - Format 2 - srcBegin = 7C89 - destBegin = DDCF -End of Item 06EC - -Begin of Item 06ED - Format 1 - srcBegin = 7C92 - srcEnd = 7C98 - mappingOffset = 1090 - Mapping = - D8A3 FFFD FFFD DAD9 FFFD F0D8 EFC4 -End of Item 06ED - -Begin of Item 06EE - Format 2 - srcBegin = 7C9F - destBegin = E1D8 -End of Item 06EE - -Begin of Item 06EF - Format 1 - srcBegin = 7CA5 - srcEnd = 7CA7 - mappingOffset = 1097 - Mapping = - F1D4 FFFD EDF2 -End of Item 06EF - -Begin of Item 06F0 - Format 1 - srcBegin = 7CAE - srcEnd = 7CB3 - mappingOffset = 109A - Mapping = - D5DB FFFD FFFD D5DC F3C4 CBD7 -End of Item 06F0 - -Begin of Item 06F1 - Format 2 - srcBegin = 7CB9 - destBegin = E2B6 -End of Item 06F1 - -Begin of Item 06F2 - Format 2 - srcBegin = 7CBE - destBegin = EFF1 -End of Item 06F2 - -Begin of Item 06F3 - Format 2 - srcBegin = 7CCA - destBegin = FBD5 -End of Item 06F3 - -Begin of Item 06F4 - Format 2 - srcBegin = 7CD6 - destBegin = D3D8 -End of Item 06F4 - -Begin of Item 06F5 - Format 1 - srcBegin = 7CDE - srcEnd = 7CE0 - mappingOffset = 10A0 - Mapping = - DDD0 F0D9 CBB3 -End of Item 06F5 - -Begin of Item 06F6 - Format 2 - srcBegin = 7CE7 - destBegin = D5DD -End of Item 06F6 - -Begin of Item 06F7 - Format 1 - srcBegin = 7CFB - srcEnd = 7D10 - mappingOffset = 10A3 - Mapping = - CDA7 FFFD FFFD D0AC FFFD D1BA FFFD F1C4 - FFFD E5B3 FBF5 E9E1 FDE0 FCBC FFFD DAA2 - DAA3 FFFD D2A1 FFFD FFFD D2EF -End of Item 06F7 - -Begin of Item 06F8 - Format 1 - srcBegin = 7D14 - srcEnd = 7D1B - mappingOffset = 10B9 - Mapping = - E2ED FFFD FFFD DEE9 CEDC F2B5 D0E4 DDD1 -End of Item 06F8 - -Begin of Item 06F9 - Format 1 - srcBegin = 7D20 - srcEnd = 7D22 - mappingOffset = 10C1 - Mapping = - E1C8 DBB7 DFE3 -End of Item 06F9 - -Begin of Item 06FA - Format 1 - srcBegin = 7D2B - srcEnd = 7D35 - mappingOffset = 10C4 - Mapping = - EDB9 F1C5 FFFD F3CF D7AB E1AC FFFD FFFD - E3EB FFFD EEC7 -End of Item 06FA - -Begin of Item 06FB - Format 1 - srcBegin = 7D39 - srcEnd = 7D3A - mappingOffset = 10CF - Mapping = - E1C9 CAFA -End of Item 06FB - -Begin of Item 06FC - Format 1 - srcBegin = 7D42 - srcEnd = 7D46 - mappingOffset = 10D1 - Mapping = - F0FB FAE1 F0DA CCE7 DAF4 -End of Item 06FC - -Begin of Item 06FD - Format 2 - srcBegin = 7D50 - destBegin = CCBF -End of Item 06FD - -Begin of Item 06FE - Format 1 - srcBegin = 7D5E - srcEnd = 7D62 - mappingOffset = 10D6 - Mapping = - CEED FFFD FFFD D5A9 FAE2 -End of Item 06FE - -Begin of Item 06FF - Format 1 - srcBegin = 7D66 - srcEnd = 7D6A - mappingOffset = 10DB - Mapping = - D0E5 FFFD EBD6 FFFD ECDF -End of Item 06FF - -Begin of Item 0700 - Format 1 - srcBegin = 7D6E - srcEnd = 7D79 - mappingOffset = 10E0 - Mapping = - DFFC FFFD FFFD F7D6 DEEA CBB4 FFFD FFFD - EFBE FFFD FFFD CCB5 -End of Item 0700 - -Begin of Item 0701 - Format 2 - srcBegin = 7D7F - destBegin = CFBD -End of Item 0701 - -Begin of Item 0702 - Format 1 - srcBegin = 7D8E - srcEnd = 7D8F - mappingOffset = 10EC - Mapping = - EFF2 E2B7 -End of Item 0702 - -Begin of Item 0703 - Format 2 - srcBegin = 7D93 - destBegin = CCE8 -End of Item 0703 - -Begin of Item 0704 - Format 2 - srcBegin = 7D9C - destBegin = F0FC -End of Item 0704 - -Begin of Item 0705 - Format 1 - srcBegin = 7DA0 - srcEnd = 7DA2 - mappingOffset = 10EE - Mapping = - D6E0 FFFD F1C6 -End of Item 0705 - -Begin of Item 0706 - Format 1 - srcBegin = 7DAC - srcEnd = 7DAD - mappingOffset = 10F1 - Mapping = - E2B8 EBAB -End of Item 0706 - -Begin of Item 0707 - Format 1 - srcBegin = 7DB1 - srcEnd = 7DBF - mappingOffset = 10F3 - Mapping = - CBB5 D8D1 FFFD F4CE F3F7 FFFD FFFD D7C6 - FFFD D1BB F7AA FFFD EDCA D7D3 D8FA -End of Item 0707 - -Begin of Item 0708 - Format 1 - srcBegin = 7DC7 - srcEnd = 7DCB - mappingOffset = 1102 - Mapping = - F6C5 FFFD FFFD D1CC DDFC -End of Item 0708 - -Begin of Item 0709 - Format 1 - srcBegin = 7DD6 - srcEnd = 7DE3 - mappingOffset = 1107 - Mapping = - DFFD FFFD F9E5 FFFD E0CA FFFD FFFD F2FD - D3B0 FFFD F4F3 DAC9 FFFD E6DE -End of Item 0709 - -Begin of Item 070A - Format 1 - srcBegin = 7DE8 - srcEnd = 7DEF - mappingOffset = 1115 - Mapping = - F8BA E8D0 FFFD FFFD D8FB FFFD FFFD EAD5 -End of Item 070A - -Begin of Item 070B - Format 2 - srcBegin = 7DF4 - destBegin = D6A3 -End of Item 070B - -Begin of Item 070C - Format 2 - srcBegin = 7DFB - destBegin = F6C6 -End of Item 070C - -Begin of Item 070D - Format 1 - srcBegin = 7E09 - srcEnd = 7E0A - mappingOffset = 111D - Mapping = - F2DB E4FC -End of Item 070D - -Begin of Item 070E - Format 2 - srcBegin = 7E15 - destBegin = E8B2 -End of Item 070E - -Begin of Item 070F - Format 1 - srcBegin = 7E1B - srcEnd = 7E23 - mappingOffset = 111F - Mapping = - DADA FFFD F2DC FBD6 E9B2 FFFD EEAD FFFD - FAE3 -End of Item 070F - -Begin of Item 0710 - Format 1 - srcBegin = 7E2B - srcEnd = 7E31 - mappingOffset = 1128 - Mapping = - DCEE FFFD FFFD F5EA E6E0 FFFD F0FD -End of Item 0710 - -Begin of Item 0711 - Format 2 - srcBegin = 7E37 - destBegin = D7AC -End of Item 0711 - -Begin of Item 0712 - Format 1 - srcBegin = 7E3D - srcEnd = 7E47 - mappingOffset = 112F - Mapping = - F5C5 EEE0 FFFD FFFD DBE5 FFFD DDDE FFFD - FFFD D9F0 E9A3 -End of Item 0712 - -Begin of Item 0713 - Format 1 - srcBegin = 7E52 - srcEnd = 7E55 - mappingOffset = 113A - Mapping = - F1F9 FFFD F2C4 E0CB -End of Item 0713 - -Begin of Item 0714 - Format 1 - srcBegin = 7E5E - srcEnd = 7E61 - mappingOffset = 113E - Mapping = - E9A4 FFFD FFFD E2B9 -End of Item 0714 - -Begin of Item 0715 - Format 1 - srcBegin = 7E69 - srcEnd = 7E70 - mappingOffset = 1142 - Mapping = - E3B1 FCEB CDA8 FFFD CCB6 FFFD FFFD F0DB -End of Item 0715 - -Begin of Item 0716 - Format 1 - srcBegin = 7E79 - srcEnd = 7E7C - mappingOffset = 114A - Mapping = - E6BA FFFD FFFD CDA9 -End of Item 0716 - -Begin of Item 0717 - Format 2 - srcBegin = 7E82 - destBegin = F3C3 -End of Item 0717 - -Begin of Item 0718 - Format 1 - srcBegin = 7E8C - srcEnd = 7E8F - mappingOffset = 114E - Mapping = - E1D9 FFFD FFFD EFAB -End of Item 0718 - -Begin of Item 0719 - Format 1 - srcBegin = 7E93 - srcEnd = 7E9C - mappingOffset = 1152 - Mapping = - E7C5 FFFD FFFD E0E9 FFFD F3C5 FFFD FFFD - D4C0 D5BF -End of Item 0719 - -Begin of Item 071A - Format 1 - srcBegin = 7F36 - srcEnd = 7F3A - mappingOffset = 115C - Mapping = - DDAE FFFD F9FC FFFD CCC0 -End of Item 071A - -Begin of Item 071B - Format 2 - srcBegin = 7F4C - destBegin = E5A2 -End of Item 071B - -Begin of Item 071C - Format 2 - srcBegin = 7F50 - destBegin = CEB8 -End of Item 071C - -Begin of Item 071D - Format 1 - srcBegin = 7F54 - srcEnd = 7F55 - mappingOffset = 1161 - Mapping = - D8D2 F9D6 -End of Item 071D - -Begin of Item 071E - Format 1 - srcBegin = 7F6A - srcEnd = 7F79 - mappingOffset = 1163 - Mapping = - F1AA CED1 FFFD FFFD F6C7 FFFD DBEB FFFD - DFFE FFFD FFFD D8E1 FFFD F7F3 FFFD D7E7 -End of Item 071E - -Begin of Item 071F - Format 1 - srcBegin = 7F85 - srcEnd = 7F8E - mappingOffset = 1173 - Mapping = - D4FE FFFD FFFD D1BC FFFD E5CF FFFD CBB6 - FFFD DAB8 -End of Item 071F - -Begin of Item 0720 - Format 2 - srcBegin = 7F94 - destBegin = CDC4 -End of Item 0720 - -Begin of Item 0721 - Format 2 - srcBegin = 7F9A - destBegin = D6BE -End of Item 0721 - -Begin of Item 0722 - Format 2 - srcBegin = 7F9E - destBegin = E2BA -End of Item 0722 - -Begin of Item 0723 - Format 2 - srcBegin = 7FA4 - destBegin = CFD8 -End of Item 0723 - -Begin of Item 0724 - Format 1 - srcBegin = 7FA8 - srcEnd = 7FA9 - mappingOffset = 117D - Mapping = - E0CC EBF9 -End of Item 0724 - -Begin of Item 0725 - Format 2 - srcBegin = 7FB2 - destBegin = FDFD -End of Item 0725 - -Begin of Item 0726 - Format 1 - srcBegin = 7FB8 - srcEnd = 7FB9 - mappingOffset = 117F - Mapping = - D7E8 CBD8 -End of Item 0726 - -Begin of Item 0727 - Format 2 - srcBegin = 7FBD - destBegin = E9E2 -End of Item 0727 - -Begin of Item 0728 - Format 2 - srcBegin = 7FC1 - destBegin = E8BA -End of Item 0728 - -Begin of Item 0729 - Format 2 - srcBegin = 7FC5 - destBegin = E3C7 -End of Item 0729 - -Begin of Item 072A - Format 1 - srcBegin = 7FCA - srcEnd = 7FCE - mappingOffset = 1181 - Mapping = - ECCD FFFD ECCE FFFD D6BF -End of Item 072A - -Begin of Item 072B - Format 1 - srcBegin = 7FD2 - srcEnd = 7FD5 - mappingOffset = 1186 - Mapping = - E3A7 FFFD DFD6 FDE8 -End of Item 072B - -Begin of Item 072C - Format 1 - srcBegin = 7FDF - srcEnd = 7FE1 - mappingOffset = 118A - Mapping = - EEE1 F6A8 DDFD -End of Item 072C - -Begin of Item 072D - Format 1 - srcBegin = 7FE9 - srcEnd = 7FEB - mappingOffset = 118D - Mapping = - F8BB FFFD E8D1 -End of Item 072D - -Begin of Item 072E - Format 2 - srcBegin = 7FF0 - destBegin = F9D7 -End of Item 072E - -Begin of Item 072F - Format 1 - srcBegin = 7FF9 - srcEnd = 7FFC - mappingOffset = 1190 - Mapping = - CEEE FFFD FFFD ECCF -End of Item 072F - -Begin of Item 0730 - Format 1 - srcBegin = 8000 - srcEnd = 800C - mappingOffset = 1194 - Mapping = - E9A5 D6D5 FFFD CDC5 FFFD EDBA D1BD FFFD - FFFD CFBE FFFD FFFD ECBB -End of Item 0730 - -Begin of Item 0731 - Format 2 - srcBegin = 8010 - destBegin = D2B1 -End of Item 0731 - -Begin of Item 0732 - Format 1 - srcBegin = 8015 - srcEnd = 8018 - mappingOffset = 11A1 - Mapping = - CCE9 FFFD D9C4 E9FC -End of Item 0732 - -Begin of Item 0733 - Format 2 - srcBegin = 802D - destBegin = D1BE -End of Item 0733 - -Begin of Item 0734 - Format 1 - srcBegin = 8033 - srcEnd = 8036 - mappingOffset = 11A5 - Mapping = - ECBC FFFD FFFD E5AD -End of Item 0734 - -Begin of Item 0735 - Format 1 - srcBegin = 803D - srcEnd = 803F - mappingOffset = 11A9 - Mapping = - F7B0 FFFD CCEA -End of Item 0735 - -Begin of Item 0736 - Format 1 - srcBegin = 8043 - srcEnd = 8046 - mappingOffset = 11AC - Mapping = - D3C4 FFFD FFFD D6C0 -End of Item 0736 - -Begin of Item 0737 - Format 2 - srcBegin = 804A - destBegin = D6FD -End of Item 0737 - -Begin of Item 0738 - Format 1 - srcBegin = 8056 - srcEnd = 805A - mappingOffset = 11B0 - Mapping = - E1A1 FFFD DEBD FFFD F6A9 -End of Item 0738 - -Begin of Item 0739 - Format 2 - srcBegin = 805E - destBegin = DAA4 -End of Item 0739 - -Begin of Item 073A - Format 1 - srcBegin = 806F - srcEnd = 8073 - mappingOffset = 11B5 - Mapping = - D6A4 F5C6 FFFD E1A2 E9C6 -End of Item 073A - -Begin of Item 073B - Format 2 - srcBegin = 8077 - destBegin = F2C5 -End of Item 073B - -Begin of Item 073C - Format 1 - srcBegin = 807D - srcEnd = 807F - mappingOffset = 11BA - Mapping = - F4E9 D6EC EBD3 -End of Item 073C - -Begin of Item 073D - Format 1 - srcBegin = 8084 - srcEnd = 808C - mappingOffset = 11BD - Mapping = - ECBD E2DC DEEB F0DC FFFD EBBF FFFD D7CE - D1BF -End of Item 073D - -Begin of Item 073E - Format 2 - srcBegin = 8096 - destBegin = F5AB -End of Item 073E - -Begin of Item 073F - Format 1 - srcBegin = 809B - srcEnd = 809D - mappingOffset = 11C6 - Mapping = - F9FD FFFD CADC -End of Item 073F - -Begin of Item 0740 - Format 1 - srcBegin = 80A1 - srcEnd = 80A5 - mappingOffset = 11C9 - Mapping = - CDC6 F2B6 FFFD FFFD DDFE -End of Item 0740 - -Begin of Item 0741 - Format 1 - srcBegin = 80A9 - srcEnd = 80AA - mappingOffset = 11CE - Mapping = - CCB7 DBB8 -End of Item 0741 - -Begin of Item 0742 - Format 1 - srcBegin = 80AF - srcEnd = 80B4 - mappingOffset = 11D0 - Mapping = - D0E9 FFFD CEDD EBC0 FFFD FDA2 -End of Item 0742 - -Begin of Item 0743 - Format 2 - srcBegin = 80BA - destBegin = F8CB -End of Item 0743 - -Begin of Item 0744 - Format 1 - srcBegin = 80C3 - srcEnd = 80C4 - mappingOffset = 11D6 - Mapping = - EAD6 F1B0 -End of Item 0744 - -Begin of Item 0745 - Format 1 - srcBegin = 80CC - srcEnd = 80CE - mappingOffset = 11D8 - Mapping = - DBCE FFFD F7C3 -End of Item 0745 - -Begin of Item 0746 - Format 1 - srcBegin = 80DA - srcEnd = 80E5 - mappingOffset = 11DB - Mapping = - DBCF CBA4 FFFD FFFD F8E0 FFFD FFFD FBD7 - FFFD FFFD EBCA E0A1 -End of Item 0746 - -Begin of Item 0747 - Format 1 - srcBegin = 80F1 - srcEnd = 80F4 - mappingOffset = 11E7 - Mapping = - CECD FFFD FFFD D4DC -End of Item 0747 - -Begin of Item 0748 - Format 2 - srcBegin = 80F8 - destBegin = FDD8 -End of Item 0748 - -Begin of Item 0749 - Format 2 - srcBegin = 80FD - destBegin = D2F6 -End of Item 0749 - -Begin of Item 074A - Format 1 - srcBegin = 8102 - srcEnd = 810A - mappingOffset = 11EB - Mapping = - F2B7 FFFD FFFD FAF6 F6AA FAF7 D8E6 FFFD - F4B1 -End of Item 074A - -Begin of Item 074B - Format 1 - srcBegin = 8118 - srcEnd = 811B - mappingOffset = 11F4 - Mapping = - E8D2 FFFD CAC5 CCEB -End of Item 074B - -Begin of Item 074C - Format 2 - srcBegin = 8123 - destBegin = E2EE -End of Item 074C - -Begin of Item 074D - Format 1 - srcBegin = 8129 - srcEnd = 812B - mappingOffset = 11F8 - Mapping = - E2BB FFFD F7AD -End of Item 074D - -Begin of Item 074E - Format 2 - srcBegin = 812F - destBegin = F8E1 -End of Item 074E - -Begin of Item 074F - Format 2 - srcBegin = 8139 - destBegin = F3EC -End of Item 074F - -Begin of Item 0750 - Format 2 - srcBegin = 813E - destBegin = DEA1 -End of Item 0750 - -Begin of Item 0751 - Format 1 - srcBegin = 814B - srcEnd = 8155 - mappingOffset = 11FB - Mapping = - E4FD FFFD FFFD E3EC FFFD DDAF DDB0 FFFD - FFFD CBB7 E8D3 -End of Item 0751 - -Begin of Item 0752 - Format 1 - srcBegin = 8165 - srcEnd = 8166 - mappingOffset = 1206 - Mapping = - E1A3 D2E0 -End of Item 0752 - -Begin of Item 0753 - Format 2 - srcBegin = 816B - destBegin = F0FE -End of Item 0753 - -Begin of Item 0754 - Format 1 - srcBegin = 8170 - srcEnd = 8171 - mappingOffset = 1208 - Mapping = - E9A6 CBF2 -End of Item 0754 - -Begin of Item 0755 - Format 1 - srcBegin = 8178 - srcEnd = 817A - mappingOffset = 120A - Mapping = - EDF3 DCD9 E0CD -End of Item 0755 - -Begin of Item 0756 - Format 1 - srcBegin = 817F - srcEnd = 8180 - mappingOffset = 120D - Mapping = - F7DA DBB9 -End of Item 0756 - -Begin of Item 0757 - Format 1 - srcBegin = 8188 - srcEnd = 818A - mappingOffset = 120F - Mapping = - CCAE FFFD DADB -End of Item 0757 - -Begin of Item 0758 - Format 2 - srcBegin = 818F - destBegin = CDC7 -End of Item 0758 - -Begin of Item 0759 - Format 1 - srcBegin = 819A - srcEnd = 81A3 - mappingOffset = 1212 - Mapping = - DDB1 FFFD D8AF E3A3 FFFD FFFD CEEF FFFD - FFFD F2F3 -End of Item 0759 - -Begin of Item 075A - Format 2 - srcBegin = 81A8 - destBegin = F8B3 -End of Item 075A - -Begin of Item 075B - Format 1 - srcBegin = 81B3 - srcEnd = 81B5 - mappingOffset = 121C - Mapping = - E0CE FFFD F5FD -End of Item 075B - -Begin of Item 075C - Format 1 - srcBegin = 81BA - srcEnd = 81C2 - mappingOffset = 121F - Mapping = - EBEC FFFD FFFD D3C5 FCEC D2DB D4EB FFFD - DEA2 -End of Item 075C - -Begin of Item 075D - Format 2 - srcBegin = 81C6 - destBegin = E5E6 -End of Item 075D - -Begin of Item 075E - Format 2 - srcBegin = 81CD - destBegin = F0B0 -End of Item 075E - -Begin of Item 075F - Format 2 - srcBegin = 81D8 - destBegin = D5C4 -End of Item 075F - -Begin of Item 0760 - Format 2 - srcBegin = 81DF - destBegin = EDF4 -End of Item 0760 - -Begin of Item 0761 - Format 1 - srcBegin = 81E3 - srcEnd = 81ED - mappingOffset = 1228 - Mapping = - E3ED FFFD E8C2 FFFD EDF5 D7FC FFFD EDBB - FFFD FFFD F6AB -End of Item 0761 - -Begin of Item 0762 - Format 1 - srcBegin = 81F3 - srcEnd = 81F4 - mappingOffset = 1233 - Mapping = - F2B8 F6C8 -End of Item 0762 - -Begin of Item 0763 - Format 1 - srcBegin = 81FA - srcEnd = 81FE - mappingOffset = 1235 - Mapping = - D3E6 F2DD CFBF FFFD EBAC -End of Item 0763 - -Begin of Item 0764 - Format 1 - srcBegin = 8205 - srcEnd = 820D - mappingOffset = 123A - Mapping = - CFC0 FFFD E6A8 FDE9 FFFD CFC1 FFFD E0DF - DEEC -End of Item 0764 - -Begin of Item 0765 - Format 2 - srcBegin = 8212 - destBegin = E0A2 -End of Item 0765 - -Begin of Item 0766 - Format 1 - srcBegin = 821B - srcEnd = 8221 - mappingOffset = 1243 - Mapping = - F4BF E2EF FFFD D9F1 F1C7 FFFD CBB8 -End of Item 0766 - -Begin of Item 0767 - Format 1 - srcBegin = 822A - srcEnd = 822C - mappingOffset = 124A - Mapping = - F9FE DBBA DAF5 -End of Item 0767 - -Begin of Item 0768 - Format 1 - srcBegin = 8235 - srcEnd = 8239 - mappingOffset = 124D - Mapping = - F6EC DADC FAE4 FFFD E0CF -End of Item 0768 - -Begin of Item 0769 - Format 2 - srcBegin = 8240 - destBegin = DDB2 -End of Item 0769 - -Begin of Item 076A - Format 1 - srcBegin = 8245 - srcEnd = 8247 - mappingOffset = 1252 - Mapping = - E6A9 FFFD EFF3 -End of Item 076A - -Begin of Item 076B - Format 2 - srcBegin = 8259 - destBegin = F3ED -End of Item 076B - -Begin of Item 076C - Format 1 - srcBegin = 8264 - srcEnd = 8266 - mappingOffset = 1255 - Mapping = - EBFA FFFD F9E6 -End of Item 076C - -Begin of Item 076D - Format 1 - srcBegin = 826E - srcEnd = 8272 - mappingOffset = 1258 - Mapping = - CADD D5DE FFFD CADE DFE4 -End of Item 076D - -Begin of Item 076E - Format 1 - srcBegin = 8276 - srcEnd = 8278 - mappingOffset = 125D - Mapping = - E6FD FFFD F5AC -End of Item 076E - -Begin of Item 076F - Format 2 - srcBegin = 827E - destBegin = E4F5 -End of Item 076F - -Begin of Item 0770 - Format 1 - srcBegin = 828B - srcEnd = 828E - mappingOffset = 1260 - Mapping = - E9E3 FFFD EDCB CFE4 -End of Item 0770 - -Begin of Item 0771 - Format 2 - srcBegin = 8292 - destBegin = D8D3 -End of Item 0771 - -Begin of Item 0772 - Format 1 - srcBegin = 8299 - srcEnd = 829F - mappingOffset = 1264 - Mapping = - DDB3 D4EC FFFD FFFD F2B9 FFFD DFB7 -End of Item 0772 - -Begin of Item 0773 - Format 1 - srcBegin = 82A5 - srcEnd = 82B3 - mappingOffset = 126B - Mapping = - CBCE FBD8 FFFD FFFD D0D9 FFFD FFFD DDD2 - F7F4 E7DC E4A5 FFFD FCA3 FFFD DBBB -End of Item 0773 - -Begin of Item 0774 - Format 1 - srcBegin = 82B7 - srcEnd = 82BF - mappingOffset = 127A - Mapping = - F2BA E9FD D0CA FFFD F5D6 D9C5 E4B4 FFFD - EDA7 -End of Item 0774 - -Begin of Item 0775 - Format 1 - srcBegin = 82D1 - srcEnd = 82D7 - mappingOffset = 1283 - Mapping = - EABD E6FE FFFD F7C4 F5AD FFFD D9E0 -End of Item 0775 - -Begin of Item 0776 - Format 1 - srcBegin = 82DB - srcEnd = 82E1 - mappingOffset = 128A - Mapping = - CAB4 FFFD FFFD F8E2 CFC2 FFFD ECBE -End of Item 0776 - -Begin of Item 0777 - Format 1 - srcBegin = 82E5 - srcEnd = 82E7 - mappingOffset = 1291 - Mapping = - E5B4 CDC8 EEC8 -End of Item 0777 - -Begin of Item 0778 - Format 2 - srcBegin = 82F1 - destBegin = E7C8 -End of Item 0778 - -Begin of Item 0779 - Format 1 - srcBegin = 82FD - srcEnd = 8305 - mappingOffset = 1294 - Mapping = - CDC9 F9B7 FFFD FFFD F1E8 D9F2 DBF5 CAB5 - D9C6 -End of Item 0779 - -Begin of Item 077A - Format 2 - srcBegin = 8309 - destBegin = D8C9 -End of Item 077A - -Begin of Item 077B - Format 2 - srcBegin = 8317 - destBegin = D9AB -End of Item 077B - -Begin of Item 077C - Format 1 - srcBegin = 8328 - srcEnd = 832B - mappingOffset = 129D - Mapping = - EDBC FFFD FFFD D8D4 -End of Item 077C - -Begin of Item 077D - Format 1 - srcBegin = 832F - srcEnd = 8339 - mappingOffset = 12A1 - Mapping = - DCDA FFFD E2BC FFFD FFFD FCED ECE0 D2FE - FFFD E9C7 E6AA -End of Item 077D - -Begin of Item 077E - Format 2 - srcBegin = 8340 - destBegin = E2F0 -End of Item 077E - -Begin of Item 077F - Format 1 - srcBegin = 8347 - srcEnd = 834A - mappingOffset = 12AC - Mapping = - FABB FFFD F5AE FBAA -End of Item 077F - -Begin of Item 0780 - Format 1 - srcBegin = 834F - srcEnd = 8352 - mappingOffset = 12B0 - Mapping = - ECFB FFFD ECBF FCD8 -End of Item 0780 - -Begin of Item 0781 - Format 2 - srcBegin = 8373 - destBegin = D4E5 -End of Item 0781 - -Begin of Item 0782 - Format 2 - srcBegin = 8377 - destBegin = F9C3 -End of Item 0782 - -Begin of Item 0783 - Format 2 - srcBegin = 837B - destBegin = EEE2 -End of Item 0783 - -Begin of Item 0784 - Format 1 - srcBegin = 8389 - srcEnd = 838A - mappingOffset = 12B4 - Mapping = - D7E9 EDF6 -End of Item 0784 - -Begin of Item 0785 - Format 2 - srcBegin = 838E - destBegin = DEED -End of Item 0785 - -Begin of Item 0786 - Format 1 - srcBegin = 8396 - srcEnd = 8398 - mappingOffset = 12B6 - Mapping = - CCEC FFFD E3EE -End of Item 0786 - -Begin of Item 0787 - Format 2 - srcBegin = 839E - destBegin = E8D4 -End of Item 0787 - -Begin of Item 0788 - Format 2 - srcBegin = 83A2 - destBegin = FAF8 -End of Item 0788 - -Begin of Item 0789 - Format 1 - srcBegin = 83A9 - srcEnd = 83AB - mappingOffset = 12B9 - Mapping = - DDB4 E4B5 D8B0 -End of Item 0789 - -Begin of Item 078A - Format 2 - srcBegin = 83BD - destBegin = D8D5 -End of Item 078A - -Begin of Item 078B - Format 2 - srcBegin = 83C1 - destBegin = F4EA -End of Item 078B - -Begin of Item 078C - Format 2 - srcBegin = 83C5 - destBegin = CEB9 -End of Item 078C - -Begin of Item 078D - Format 1 - srcBegin = 83C9 - srcEnd = 83CC - mappingOffset = 12BC - Mapping = - D6E1 CFD2 FFFD D0B6 -End of Item 078D - -Begin of Item 078E - Format 1 - srcBegin = 83D3 - srcEnd = 83D6 - mappingOffset = 12C0 - Mapping = - CEA2 FFFD FFFD F3EE -End of Item 078E - -Begin of Item 078F - Format 2 - srcBegin = 83DC - destBegin = F3F8 -End of Item 078F - -Begin of Item 0790 - Format 1 - srcBegin = 83E9 - srcEnd = 83EB - mappingOffset = 12C4 - Mapping = - DCCC FFFD D0CB -End of Item 0790 - -Begin of Item 0791 - Format 1 - srcBegin = 83EF - srcEnd = 83F4 - mappingOffset = 12C7 - Mapping = - FCA4 CDCA D7D4 DEA3 FFFD E4E0 -End of Item 0791 - -Begin of Item 0792 - Format 2 - srcBegin = 83F9 - destBegin = EEC9 -End of Item 0792 - -Begin of Item 0793 - Format 2 - srcBegin = 83FD - destBegin = E2DD -End of Item 0793 - -Begin of Item 0794 - Format 1 - srcBegin = 8403 - srcEnd = 8404 - mappingOffset = 12CD - Mapping = - F5FE D4AC -End of Item 0794 - -Begin of Item 0795 - Format 1 - srcBegin = 840A - srcEnd = 840E - mappingOffset = 12CF - Mapping = - D5D1 FFFD D8F0 F8C3 EAD7 -End of Item 0795 - -Begin of Item 0796 - Format 1 - srcBegin = 8429 - srcEnd = 842C - mappingOffset = 12D4 - Mapping = - F5D7 FFFD FFFD D8BF -End of Item 0796 - -Begin of Item 0797 - Format 2 - srcBegin = 8431 - destBegin = FDC0 -End of Item 0797 - -Begin of Item 0798 - Format 2 - srcBegin = 8438 - destBegin = EBAD -End of Item 0798 - -Begin of Item 0799 - Format 2 - srcBegin = 843D - destBegin = D5AA -End of Item 0799 - -Begin of Item 079A - Format 2 - srcBegin = 8449 - destBegin = E7A8 -End of Item 079A - -Begin of Item 079B - Format 2 - srcBegin = 8457 - destBegin = EECA -End of Item 079B - -Begin of Item 079C - Format 2 - srcBegin = 845B - destBegin = CAE7 -End of Item 079C - -Begin of Item 079D - Format 1 - srcBegin = 8461 - srcEnd = 8466 - mappingOffset = 12D8 - Mapping = - F8E3 FFFD D4DD FFFD FFFD EAD8 -End of Item 079D - -Begin of Item 079E - Format 1 - srcBegin = 846B - srcEnd = 846F - mappingOffset = 12DE - Mapping = - FBD9 EDF7 FFFD FFFD E5B5 -End of Item 079E - -Begin of Item 079F - Format 2 - srcBegin = 8475 - destBegin = D0AD -End of Item 079F - -Begin of Item 07A0 - Format 2 - srcBegin = 847A - destBegin = F1F1 -End of Item 07A0 - -Begin of Item 07A1 - Format 2 - srcBegin = 8490 - destBegin = E2BD -End of Item 07A1 - -Begin of Item 07A2 - Format 2 - srcBegin = 8494 - destBegin = E3C8 -End of Item 07A2 - -Begin of Item 07A3 - Format 1 - srcBegin = 8499 - srcEnd = 849C - mappingOffset = 12E3 - Mapping = - D9D5 FFFD FFFD DFAA -End of Item 07A3 - -Begin of Item 07A4 - Format 2 - srcBegin = 84A1 - destBegin = DBBC -End of Item 07A4 - -Begin of Item 07A5 - Format 2 - srcBegin = 84B2 - destBegin = F8E4 -End of Item 07A5 - -Begin of Item 07A6 - Format 1 - srcBegin = 84B8 - srcEnd = 84CD - mappingOffset = 12E7 - Mapping = - F1FA FFFD FFFD E5B6 F3EF FFFD FFFD FBDA - E1E0 FFFD D9AC FFFD F5EB FFFD E0B6 FFFD - FFFD E9C8 FFFD CBCF FFFD E3C9 -End of Item 07A6 - -Begin of Item 07A7 - Format 2 - srcBegin = 84D1 - destBegin = DEEE -End of Item 07A7 - -Begin of Item 07A8 - Format 2 - srcBegin = 84DA - destBegin = E2BE -End of Item 07A8 - -Begin of Item 07A9 - Format 1 - srcBegin = 84EC - srcEnd = 84EE - mappingOffset = 12FD - Mapping = - DCEF FFFD D6A5 -End of Item 07A9 - -Begin of Item 07AA - Format 2 - srcBegin = 84F4 - destBegin = E2F1 -End of Item 07AA - -Begin of Item 07AB - Format 2 - srcBegin = 84FC - destBegin = D6FE -End of Item 07AB - -Begin of Item 07AC - Format 1 - srcBegin = 8511 - srcEnd = 851A - mappingOffset = 1300 - Mapping = - D9A1 FFFD D8C0 DCDB FFFD FFFD EDBD DFB8 - FFFD EAA5 -End of Item 07AC - -Begin of Item 07AD - Format 1 - srcBegin = 851E - srcEnd = 8525 - mappingOffset = 130A - Mapping = - D7AD FFFD FFFD F3F9 FFFD EDF8 FFFD F5C7 -End of Item 07AD - -Begin of Item 07AE - Format 1 - srcBegin = 852C - srcEnd = 852F - mappingOffset = 1312 - Mapping = - E1CA EBE3 FFFD F2DE -End of Item 07AE - -Begin of Item 07AF - Format 1 - srcBegin = 853D - srcEnd = 8543 - mappingOffset = 1316 - Mapping = - F8CC FFFD EAD9 FFFD D3C6 FFFD DBE6 -End of Item 07AF - -Begin of Item 07B0 - Format 2 - srcBegin = 8549 - destBegin = F5AF -End of Item 07B0 - -Begin of Item 07B1 - Format 2 - srcBegin = 854E - destBegin = CEF0 -End of Item 07B1 - -Begin of Item 07B2 - Format 2 - srcBegin = 8553 - destBegin = E9FE -End of Item 07B2 - -Begin of Item 07B3 - Format 2 - srcBegin = 8559 - destBegin = FBB6 -End of Item 07B3 - -Begin of Item 07B4 - Format 2 - srcBegin = 8563 - destBegin = E2F2 -End of Item 07B4 - -Begin of Item 07B5 - Format 1 - srcBegin = 8568 - srcEnd = 856D - mappingOffset = 131D - Mapping = - CFF2 F7B9 D9F3 FFFD FFFD E1CB -End of Item 07B5 - -Begin of Item 07B6 - Format 1 - srcBegin = 8584 - srcEnd = 8587 - mappingOffset = 1323 - Mapping = - DADD FFFD FFFD DAB9 -End of Item 07B6 - -Begin of Item 07B7 - Format 1 - srcBegin = 858F - srcEnd = 8594 - mappingOffset = 1327 - Mapping = - EBFB FFFD CBB9 FFFD FFFD EDF9 -End of Item 07B7 - -Begin of Item 07B8 - Format 2 - srcBegin = 859B - destBegin = E0E0 -End of Item 07B8 - -Begin of Item 07B9 - Format 1 - srcBegin = 85A6 - srcEnd = 85AA - mappingOffset = 132D - Mapping = - F4C0 FFFD FDBC DFB1 E3EF -End of Item 07B9 - -Begin of Item 07BA - Format 1 - srcBegin = 85AF - srcEnd = 85B0 - mappingOffset = 1332 - Mapping = - E0A3 FDB9 -End of Item 07BA - -Begin of Item 07BB - Format 2 - srcBegin = 85BA - destBegin = F0B1 -End of Item 07BB - -Begin of Item 07BC - Format 2 - srcBegin = 85C1 - destBegin = CDCB -End of Item 07BC - -Begin of Item 07BD - Format 2 - srcBegin = 85C9 - destBegin = EDBE -End of Item 07BD - -Begin of Item 07BE - Format 1 - srcBegin = 85CD - srcEnd = 85CF - mappingOffset = 1334 - Mapping = - D5C0 E3F0 EDFA -End of Item 07BE - -Begin of Item 07BF - Format 2 - srcBegin = 85D5 - destBegin = E9E4 -End of Item 07BF - -Begin of Item 07C0 - Format 1 - srcBegin = 85DC - srcEnd = 85DD - mappingOffset = 1337 - Mapping = - D5ED E7DD -End of Item 07C0 - -Begin of Item 07C1 - Format 1 - srcBegin = 85E4 - srcEnd = 85E5 - mappingOffset = 1339 - Mapping = - D4F6 E5B7 -End of Item 07C1 - -Begin of Item 07C2 - Format 1 - srcBegin = 85E9 - srcEnd = 85EA - mappingOffset = 133B - Mapping = - DBE7 E2BF -End of Item 07C2 - -Begin of Item 07C3 - Format 1 - srcBegin = 85F7 - srcEnd = 85FB - mappingOffset = 133D - Mapping = - EECB FFFD FFFD D7F4 F0DD -End of Item 07C3 - -Begin of Item 07C4 - Format 1 - srcBegin = 85FF - srcEnd = 8602 - mappingOffset = 1342 - Mapping = - CEAB FFFD FFFD E7DE -End of Item 07C4 - -Begin of Item 07C5 - Format 1 - srcBegin = 8606 - srcEnd = 860A - mappingOffset = 1346 - Mapping = - D6D6 E1CC FFFD FFFD E8B3 -End of Item 07C5 - -Begin of Item 07C6 - Format 1 - srcBegin = 8616 - srcEnd = 861A - mappingOffset = 134B - Mapping = - E5EE DCA2 FFFD FFFD E0D0 -End of Item 07C6 - -Begin of Item 07C7 - Format 2 - srcBegin = 862D - destBegin = D5B5 -End of Item 07C7 - -Begin of Item 07C8 - Format 2 - srcBegin = 863F - destBegin = D5A1 -End of Item 07C8 - -Begin of Item 07C9 - Format 1 - srcBegin = 864E - srcEnd = 8650 - mappingOffset = 1350 - Mapping = - FBDB FFFD F9CB -End of Item 07C9 - -Begin of Item 07CA - Format 1 - srcBegin = 8654 - srcEnd = 8655 - mappingOffset = 1353 - Mapping = - CBF3 F4A5 -End of Item 07CA - -Begin of Item 07CB - Format 1 - srcBegin = 865B - srcEnd = 865F - mappingOffset = 1355 - Mapping = - FAC8 D6D7 FFFD E9E5 FBDC -End of Item 07CB - -Begin of Item 07CC - Format 2 - srcBegin = 8667 - destBegin = FDD0 -End of Item 07CC - -Begin of Item 07CD - Format 2 - srcBegin = 8679 - destBegin = FBF6 -End of Item 07CD - -Begin of Item 07CE - Format 1 - srcBegin = 868A - srcEnd = 868C - mappingOffset = 135A - Mapping = - DAA5 FFFD DBBD -End of Item 07CE - -Begin of Item 07CF - Format 2 - srcBegin = 8693 - destBegin = ECE2 -End of Item 07CF - -Begin of Item 07D0 - Format 1 - srcBegin = 86A3 - srcEnd = 86A4 - mappingOffset = 135D - Mapping = - CDF7 F0DE -End of Item 07D0 - -Begin of Item 07D1 - Format 2 - srcBegin = 86A9 - destBegin = F6C9 -End of Item 07D1 - -Begin of Item 07D2 - Format 2 - srcBegin = 86C7 - destBegin = DEEF -End of Item 07D2 - -Begin of Item 07D3 - Format 2 - srcBegin = 86CB - destBegin = D3B1 -End of Item 07D3 - -Begin of Item 07D4 - Format 2 - srcBegin = 86D4 - destBegin = FCEE -End of Item 07D4 - -Begin of Item 07D5 - Format 1 - srcBegin = 86D9 - srcEnd = 86DB - mappingOffset = 135F - Mapping = - E8C3 FFFD F1C8 -End of Item 07D5 - -Begin of Item 07D6 - Format 2 - srcBegin = 86DF - destBegin = CEF1 -End of Item 07D6 - -Begin of Item 07D7 - Format 2 - srcBegin = 86E4 - destBegin = F9ED -End of Item 07D7 - -Begin of Item 07D8 - Format 2 - srcBegin = 86ED - destBegin = F2F4 -End of Item 07D8 - -Begin of Item 07D9 - Format 1 - srcBegin = 86FE - srcEnd = 8703 - mappingOffset = 1362 - Mapping = - E4B6 FFFD F5B9 FFFD DCF0 E3F1 -End of Item 07D9 - -Begin of Item 07DA - Format 2 - srcBegin = 8708 - destBegin = E8A5 -End of Item 07DA - -Begin of Item 07DB - Format 1 - srcBegin = 8718 - srcEnd = 871C - mappingOffset = 1368 - Mapping = - F2BB FFFD DEA4 FFFD DACC -End of Item 07DB - -Begin of Item 07DC - Format 2 - srcBegin = 874E - destBegin = CAE9 -End of Item 07DC - -Begin of Item 07DD - Format 1 - srcBegin = 8755 - srcEnd = 8757 - mappingOffset = 136D - Mapping = - E3DA FFFD FCD9 -End of Item 07DD - -Begin of Item 07DE - Format 2 - srcBegin = 875F - destBegin = EADA -End of Item 07DE - -Begin of Item 07DF - Format 1 - srcBegin = 8766 - srcEnd = 8768 - mappingOffset = 1370 - Mapping = - F9C4 FFFD E3A4 -End of Item 07DF - -Begin of Item 07E0 - Format 1 - srcBegin = 8774 - srcEnd = 8778 - mappingOffset = 1373 - Mapping = - FBDD FFFD EFCA FFFD E8C4 -End of Item 07E0 - -Begin of Item 07E1 - Format 2 - srcBegin = 8782 - destBegin = D5CC -End of Item 07E1 - -Begin of Item 07E2 - Format 2 - srcBegin = 878D - destBegin = EBD7 -End of Item 07E2 - -Begin of Item 07E3 - Format 1 - srcBegin = 879F - srcEnd = 87A2 - mappingOffset = 1378 - Mapping = - D9AD FFFD FFFD FBAB -End of Item 07E3 - -Begin of Item 07E4 - Format 2 - srcBegin = 87B3 - destBegin = D3D9 -End of Item 07E4 - -Begin of Item 07E5 - Format 2 - srcBegin = 87BA - destBegin = D5A2 -End of Item 07E5 - -Begin of Item 07E6 - Format 2 - srcBegin = 87C4 - destBegin = F6DE -End of Item 07E6 - -Begin of Item 07E7 - Format 2 - srcBegin = 87E0 - destBegin = DAF6 -End of Item 07E7 - -Begin of Item 07E8 - Format 1 - srcBegin = 87EC - srcEnd = 87F2 - mappingOffset = 137C - Mapping = - E0D1 FFFD FFFD E9A8 FFFD FFFD F5F9 -End of Item 07E8 - -Begin of Item 07E9 - Format 1 - srcBegin = 87F9 - srcEnd = 87FE - mappingOffset = 1383 - Mapping = - FAAF FFFD EBFC FFFD FFFD E0EA -End of Item 07E9 - -Begin of Item 07EA - Format 2 - srcBegin = 8805 - destBegin = E3B2 -End of Item 07EA - -Begin of Item 07EB - Format 1 - srcBegin = 881F - srcEnd = 8823 - mappingOffset = 1389 - Mapping = - D5C5 FFFD FFFD F1E3 D5EE -End of Item 07EB - -Begin of Item 07EC - Format 2 - srcBegin = 8831 - destBegin = CDCC -End of Item 07EC - -Begin of Item 07ED - Format 2 - srcBegin = 8836 - destBegin = EDD9 -End of Item 07ED - -Begin of Item 07EE - Format 2 - srcBegin = 883B - destBegin = D8C1 -End of Item 07EE - -Begin of Item 07EF - Format 2 - srcBegin = 8840 - destBegin = FAEC -End of Item 07EF - -Begin of Item 07F0 - Format 2 - srcBegin = 8846 - destBegin = F1EB -End of Item 07F0 - -Begin of Item 07F1 - Format 1 - srcBegin = 884C - srcEnd = 884D - mappingOffset = 138E - Mapping = - FABC E6E2 -End of Item 07F1 - -Begin of Item 07F2 - Format 1 - srcBegin = 8852 - srcEnd = 8853 - mappingOffset = 1390 - Mapping = - FAE5 E2FA -End of Item 07F2 - -Begin of Item 07F3 - Format 1 - srcBegin = 8857 - srcEnd = 885D - mappingOffset = 1392 - Mapping = - CAB6 FFFD E4B7 FFFD EADB FFFD F5FA -End of Item 07F3 - -Begin of Item 07F4 - Format 1 - srcBegin = 8861 - srcEnd = 8863 - mappingOffset = 1399 - Mapping = - FBAC CFC3 EBFD -End of Item 07F4 - -Begin of Item 07F5 - Format 1 - srcBegin = 8868 - srcEnd = 886B - mappingOffset = 139C - Mapping = - F8FA FFFD FFFD DFB9 -End of Item 07F5 - -Begin of Item 07F6 - Format 1 - srcBegin = 8870 - srcEnd = 8872 - mappingOffset = 13A0 - Mapping = - E1F1 FFFD D2A4 -End of Item 07F6 - -Begin of Item 07F7 - Format 2 - srcBegin = 8877 - destBegin = F5FB -End of Item 07F7 - -Begin of Item 07F8 - Format 1 - srcBegin = 887E - srcEnd = 8882 - mappingOffset = 13A3 - Mapping = - D0DA D0DB FFFD EABE D9B1 -End of Item 07F8 - -Begin of Item 07F9 - Format 1 - srcBegin = 8888 - srcEnd = 888D - mappingOffset = 13A8 - Mapping = - CAB7 FFFD FFFD D3E7 FFFD F8E5 -End of Item 07F9 - -Begin of Item 07FA - Format 2 - srcBegin = 8892 - destBegin = D3B2 -End of Item 07FA - -Begin of Item 07FB - Format 1 - srcBegin = 8896 - srcEnd = 8897 - mappingOffset = 13AE - Mapping = - E2C0 F2DF -End of Item 07FB - -Begin of Item 07FC - Format 2 - srcBegin = 889E - destBegin = CDE5 -End of Item 07FC - -Begin of Item 07FD - Format 2 - srcBegin = 88AB - destBegin = F9AC -End of Item 07FD - -Begin of Item 07FE - Format 2 - srcBegin = 88B4 - destBegin = CDCD -End of Item 07FE - -Begin of Item 07FF - Format 1 - srcBegin = 88C1 - srcEnd = 88C2 - mappingOffset = 13B0 - Mapping = - EEAE D6AE -End of Item 07FF - -Begin of Item 0800 - Format 2 - srcBegin = 88CF - destBegin = D7EA -End of Item 0800 - -Begin of Item 0801 - Format 1 - srcBegin = 88D4 - srcEnd = 88D5 - mappingOffset = 13B2 - Mapping = - E7E0 EBAE -End of Item 0801 - -Begin of Item 0802 - Format 1 - srcBegin = 88D9 - srcEnd = 88E1 - mappingOffset = 13B4 - Mapping = - CFD9 FFFD FFFD DCCD EDFB FFFD DEF0 FFFD - D7EB -End of Item 0802 - -Begin of Item 0803 - Format 2 - srcBegin = 88E8 - destBegin = DEA5 -End of Item 0803 - -Begin of Item 0804 - Format 1 - srcBegin = 88F3 - srcEnd = 88F8 - mappingOffset = 13BD - Mapping = - DFD7 DBD0 DBD1 FFFD FFFD D5A3 -End of Item 0804 - -Begin of Item 0805 - Format 2 - srcBegin = 88FD - destBegin = F0B2 -End of Item 0805 - -Begin of Item 0806 - Format 2 - srcBegin = 8907 - destBegin = DCDC -End of Item 0806 - -Begin of Item 0807 - Format 1 - srcBegin = 8910 - srcEnd = 8913 - mappingOffset = 13C3 - Mapping = - CAE8 FFFD F8E6 DCCE -End of Item 0807 - -Begin of Item 0808 - Format 1 - srcBegin = 8918 - srcEnd = 8919 - mappingOffset = 13C7 - Mapping = - EADC DBD2 -End of Item 0808 - -Begin of Item 0809 - Format 2 - srcBegin = 8925 - destBegin = E9B3 -End of Item 0809 - -Begin of Item 080A - Format 2 - srcBegin = 892A - destBegin = F7DB -End of Item 080A - -Begin of Item 080B - Format 1 - srcBegin = 8936 - srcEnd = 893B - mappingOffset = 13C9 - Mapping = - E3A8 FFFD D7AE FFFD FFFD E0E1 -End of Item 080B - -Begin of Item 080C - Format 1 - srcBegin = 8941 - srcEnd = 8944 - mappingOffset = 13CF - Mapping = - CBBA FFFD FFFD E5D1 -End of Item 080C - -Begin of Item 080D - Format 2 - srcBegin = 895F - destBegin = D0DC -End of Item 080D - -Begin of Item 080E - Format 2 - srcBegin = 8964 - destBegin = D5C1 -End of Item 080E - -Begin of Item 080F - Format 2 - srcBegin = 896A - destBegin = D8CA -End of Item 080F - -Begin of Item 0810 - Format 2 - srcBegin = 8972 - destBegin = E3A9 -End of Item 0810 - -Begin of Item 0811 - Format 1 - srcBegin = 897F - srcEnd = 8987 - mappingOffset = 13D3 - Mapping = - E0A4 FFFD E9A9 FFFD D3C7 FFFD FFFD DCDD - F8AE -End of Item 0811 - -Begin of Item 0812 - Format 2 - srcBegin = 898B - destBegin = CCB8 -End of Item 0812 - -Begin of Item 0813 - Format 2 - srcBegin = 898F - destBegin = D0AE -End of Item 0813 - -Begin of Item 0814 - Format 1 - srcBegin = 8993 - srcEnd = 8996 - mappingOffset = 13DC - Mapping = - D8F2 FFFD FFFD E3CA -End of Item 0814 - -Begin of Item 0815 - Format 2 - srcBegin = 89A1 - destBegin = CCAF -End of Item 0815 - -Begin of Item 0816 - Format 1 - srcBegin = 89A9 - srcEnd = 89AA - mappingOffset = 13E0 - Mapping = - D4AD F6D1 -End of Item 0816 - -Begin of Item 0817 - Format 2 - srcBegin = 89B2 - destBegin = D0CC -End of Item 0817 - -Begin of Item 0818 - Format 1 - srcBegin = 89BA - srcEnd = 89C0 - mappingOffset = 13E2 - Mapping = - CAC6 FFFD FFFD D5C2 FFFD FFFD CEBA -End of Item 0818 - -Begin of Item 0819 - Format 2 - srcBegin = 89D2 - destBegin = CAC7 -End of Item 0819 - -Begin of Item 081A - Format 2 - srcBegin = 89E3 - destBegin = FAB0 -End of Item 081A - -Begin of Item 081B - Format 2 - srcBegin = 89F4 - destBegin = DFD8 -End of Item 081B - -Begin of Item 081C - Format 2 - srcBegin = 89F8 - destBegin = F5BA -End of Item 081C - -Begin of Item 081D - Format 1 - srcBegin = 8A00 - srcEnd = 8A03 - mappingOffset = 13E9 - Mapping = - E5EB FFFD EFF4 DDB5 -End of Item 081D - -Begin of Item 081E - Format 1 - srcBegin = 8A08 - srcEnd = 8A0E - mappingOffset = 13ED - Mapping = - CDAA FFFD E3F2 FFFD FBF7 FFFD F7D0 -End of Item 081E - -Begin of Item 081F - Format 1 - srcBegin = 8A13 - srcEnd = 8A1F - mappingOffset = 13F4 - Mapping = - FDBA FFFD FFFD FDE1 F6FE D1C0 FFFD FFFD - E8C5 FFFD E4B8 FFFD E1E8 -End of Item 081F - -Begin of Item 0820 - Format 1 - srcBegin = 8A23 - srcEnd = 8A25 - mappingOffset = 1401 - Mapping = - CCC1 FFFD D2ED -End of Item 0820 - -Begin of Item 0821 - Format 1 - srcBegin = 8A2A - srcEnd = 8A2D - mappingOffset = 1404 - Mapping = - DBBE FFFD FFFD E0E2 -End of Item 0821 - -Begin of Item 0822 - Format 1 - srcBegin = 8A31 - srcEnd = 8A36 - mappingOffset = 1408 - Mapping = - FAC9 FFFD FFFD E1CD FFFD CAB8 -End of Item 0822 - -Begin of Item 0823 - Format 1 - srcBegin = 8A3A - srcEnd = 8A3B - mappingOffset = 140E - Mapping = - F2E0 F1C9 -End of Item 0823 - -Begin of Item 0824 - Format 2 - srcBegin = 8A50 - destBegin = DEF1 -End of Item 0824 - -Begin of Item 0825 - Format 1 - srcBegin = 8A54 - srcEnd = 8A55 - mappingOffset = 1410 - Mapping = - F0DF F8C4 -End of Item 0825 - -Begin of Item 0826 - Format 1 - srcBegin = 8A5B - srcEnd = 8A69 - mappingOffset = 1412 - Mapping = - EECC FFFD FFFD DEF2 FFFD E7C9 FFFD E2F3 - E7E1 FFFD FFFD E3CB FFFD FFFD E3CC -End of Item 0826 - -Begin of Item 0827 - Format 1 - srcBegin = 8A6D - srcEnd = 8A75 - mappingOffset = 1421 - Mapping = - CFF8 EFAC FFFD FDFE FCA5 FAB1 DFD9 FFFD - E0D2 -End of Item 0827 - -Begin of Item 0828 - Format 2 - srcBegin = 8A79 - destBegin = F4DA -End of Item 0828 - -Begin of Item 0829 - Format 1 - srcBegin = 8A85 - srcEnd = 8A87 - mappingOffset = 142A - Mapping = - F1CA FFFD CEA3 -End of Item 0829 - -Begin of Item 082A - Format 1 - srcBegin = 8A8C - srcEnd = 8A8D - mappingOffset = 142D - Mapping = - F2BC ECE3 -End of Item 082A - -Begin of Item 082B - Format 1 - srcBegin = 8A93 - srcEnd = 8A98 - mappingOffset = 142F - Mapping = - E0A5 FFFD F7AB FFFD FFFD EBAF -End of Item 082B - -Begin of Item 082C - Format 1 - srcBegin = 8A9E - srcEnd = 8AAA - mappingOffset = 1435 - Mapping = - E5DE FFFD E1A4 CDAB FFFD D9F4 E8A6 CDCE - E1E9 FFFD FCEF FFFD E0E3 -End of Item 082C - -Begin of Item 082D - Format 1 - srcBegin = 8AB0 - srcEnd = 8AB2 - mappingOffset = 1442 - Mapping = - E2C1 FFFD CEA4 -End of Item 082D - -Begin of Item 082E - Format 1 - srcBegin = 8AB9 - srcEnd = 8AC7 - mappingOffset = 1445 - Mapping = - DEA6 FFFD FFFD EBFE FFFD EBDD F0E0 FFFD - FFFD F4DB FFFD E2F4 FFFD FFFD D3C8 -End of Item 082E - -Begin of Item 082F - Format 1 - srcBegin = 8ACB - srcEnd = 8AD2 - mappingOffset = 1454 - Mapping = - F4EB FFFD EEB5 FFFD F5D8 FFFD FFFD D5DF -End of Item 082F - -Begin of Item 0830 - Format 2 - srcBegin = 8AD6 - destBegin = D6E5 -End of Item 0830 - -Begin of Item 0831 - Format 1 - srcBegin = 8ADB - srcEnd = 8ADC - mappingOffset = 145C - Mapping = - EBB0 F4E3 -End of Item 0831 - -Begin of Item 0832 - Format 2 - srcBegin = 8AE1 - destBegin = E3CD -End of Item 0832 - -Begin of Item 0833 - Format 1 - srcBegin = 8AE6 - srcEnd = 8AF1 - mappingOffset = 145E - Mapping = - F4F4 FAB2 FFFD FFFD EFF5 CADF FFFD EBB1 - EDBF FFFD FFFD FDC9 -End of Item 0833 - -Begin of Item 0834 - Format 1 - srcBegin = 8AF6 - srcEnd = 8AFA - mappingOffset = 146A - Mapping = - E4A6 F9A4 F0B3 FFFD E5EC -End of Item 0834 - -Begin of Item 0835 - Format 1 - srcBegin = 8AFE - srcEnd = 8B04 - mappingOffset = 146F - Mapping = - D1E7 FFFD D9C7 E4D7 EADD FFFD D4F7 -End of Item 0835 - -Begin of Item 0836 - Format 1 - srcBegin = 8B0E - srcEnd = 8B10 - mappingOffset = 1476 - Mapping = - DABA FFFD DACD -End of Item 0836 - -Begin of Item 0837 - Format 1 - srcBegin = 8B14 - srcEnd = 8B20 - mappingOffset = 1479 - Mapping = - F9CC FFFD E1DA DBBF FFFD CCC5 ECD0 CBBB - FFFD DEF3 FFFD FFFD E9AA -End of Item 0837 - -Begin of Item 0838 - Format 1 - srcBegin = 8B28 - srcEnd = 8B2C - mappingOffset = 1486 - Mapping = - D9C8 FFFD FFFD EEE3 D7BD -End of Item 0838 - -Begin of Item 0839 - Format 2 - srcBegin = 8B33 - destBegin = CFC4 -End of Item 0839 - -Begin of Item 083A - Format 2 - srcBegin = 8B39 - destBegin = D0CD -End of Item 083A - -Begin of Item 083B - Format 2 - srcBegin = 8B41 - destBegin = FCA6 -End of Item 083B - -Begin of Item 083C - Format 2 - srcBegin = 8B49 - destBegin = F1FB -End of Item 083C - -Begin of Item 083D - Format 1 - srcBegin = 8B4E - srcEnd = 8B4F - mappingOffset = 148B - Mapping = - FDD2 D1C1 -End of Item 083D - -Begin of Item 083E - Format 1 - srcBegin = 8B58 - srcEnd = 8B5C - mappingOffset = 148D - Mapping = - E3DB FFFD D3C9 FFFD DCCF -End of Item 083E - -Begin of Item 083F - Format 2 - srcBegin = 8B66 - destBegin = CCED -End of Item 083F - -Begin of Item 0840 - Format 1 - srcBegin = 8B6C - srcEnd = 8B70 - mappingOffset = 1492 - Mapping = - DEA7 FFFD FFFD E6BB ECA1 -End of Item 0840 - -Begin of Item 0841 - Format 1 - srcBegin = 8B74 - srcEnd = 8B77 - mappingOffset = 1497 - Mapping = - CCB9 FFFD FFFD FBDE -End of Item 0841 - -Begin of Item 0842 - Format 1 - srcBegin = 8B7D - srcEnd = 8B80 - mappingOffset = 149B - Mapping = - E7E2 FFFD FFFD D4C1 -End of Item 0842 - -Begin of Item 0843 - Format 2 - srcBegin = 8B8A - destBegin = DCA8 -End of Item 0843 - -Begin of Item 0844 - Format 1 - srcBegin = 8B90 - srcEnd = 8B96 - mappingOffset = 149F - Mapping = - E2C2 FFFD F3D8 E5D3 FFFD FFFD F3D9 -End of Item 0844 - -Begin of Item 0845 - Format 2 - srcBegin = 8B9A - destBegin = F3C6 -End of Item 0845 - -Begin of Item 0846 - Format 2 - srcBegin = 8C37 - destBegin = CDDB -End of Item 0846 - -Begin of Item 0847 - Format 1 - srcBegin = 8C3F - srcEnd = 8C41 - mappingOffset = 14A6 - Mapping = - CDAC FFFD FCC3 -End of Item 0847 - -Begin of Item 0848 - Format 1 - srcBegin = 8C46 - srcEnd = 8C4C - mappingOffset = 14A9 - Mapping = - D4E7 FFFD D1C2 FFFD F9A5 FFFD E8D5 -End of Item 0848 - -Begin of Item 0849 - Format 2 - srcBegin = 8C55 - destBegin = E3CE -End of Item 0849 - -Begin of Item 084A - Format 2 - srcBegin = 8C5A - destBegin = D4CA -End of Item 084A - -Begin of Item 084B - Format 2 - srcBegin = 8C61 - destBegin = DFDA -End of Item 084B - -Begin of Item 084C - Format 1 - srcBegin = 8C6A - srcEnd = 8C6B - mappingOffset = 14B0 - Mapping = - FBDF E7E3 -End of Item 084C - -Begin of Item 084D - Format 1 - srcBegin = 8C79 - srcEnd = 8C7A - mappingOffset = 14B2 - Mapping = - F8FB E3CF -End of Item 084D - -Begin of Item 084E - Format 2 - srcBegin = 8C82 - destBegin = F5B0 -End of Item 084E - -Begin of Item 084F - Format 1 - srcBegin = 8C8A - srcEnd = 8C8C - mappingOffset = 14B4 - Mapping = - D8E7 FFFD D9C9 -End of Item 084F - -Begin of Item 0850 - Format 1 - srcBegin = 8C9D - srcEnd = 8CA2 - mappingOffset = 14B7 - Mapping = - F8AF EFF6 FFFD DDB6 EEAF CDF8 -End of Item 0850 - -Begin of Item 0851 - Format 1 - srcBegin = 8CA7 - srcEnd = 8CCA - mappingOffset = 14BD - Mapping = - DEB8 FCA7 F7FC F7B1 CEBB F4A1 FFFD FFFD - EECD E1AE FFFD FFFD ECC3 CFFE FFFD F8BF - D8E2 D3E8 FFFD FFFD DEA8 F4E4 ECC2 FFFD - D9F5 F9C5 DDD3 D6F1 ECFC FCF0 FFFD FFFD - EDC0 CAB9 FFFD EEE4 -End of Item 0851 - -Begin of Item 0852 - Format 1 - srcBegin = 8CD1 - srcEnd = 8CD3 - mappingOffset = 14E1 - Mapping = - F2E1 FFFD DEB9 -End of Item 0852 - -Begin of Item 0853 - Format 1 - srcBegin = 8CDA - srcEnd = 8CE6 - mappingOffset = 14E4 - Mapping = - D6F2 FFFD DEF4 FFFD DFDB FFFD DBD3 FFFD - FAE7 D8E3 F4C1 FFFD DDB7 -End of Item 0853 - -Begin of Item 0854 - Format 1 - srcBegin = 8CEA - srcEnd = 8CED - mappingOffset = 14F1 - Mapping = - F2F5 FFFD FFFD D4AE -End of Item 0854 - -Begin of Item 0855 - Format 2 - srcBegin = 8CF4 - destBegin = D6F3 -End of Item 0855 - -Begin of Item 0856 - Format 1 - srcBegin = 8CFB - srcEnd = 8CFD - mappingOffset = 14F5 - Mapping = - DDB8 CFC5 DFDF -End of Item 0856 - -Begin of Item 0857 - Format 1 - srcBegin = 8D04 - srcEnd = 8D0D - mappingOffset = 14F8 - Mapping = - F2BE F6A1 FFFD EBCB F1FC FFFD F3C7 FFFD - FFFD E0EB -End of Item 0857 - -Begin of Item 0858 - Format 1 - srcBegin = 8D13 - srcEnd = 8D16 - mappingOffset = 1502 - Mapping = - EDFC FFFD FFFD E1DB -End of Item 0858 - -Begin of Item 0859 - Format 1 - srcBegin = 8D64 - srcEnd = 8D66 - mappingOffset = 1506 - Mapping = - EEE5 FFFD DEF5 -End of Item 0859 - -Begin of Item 085A - Format 2 - srcBegin = 8D6B - destBegin = FAD3 -End of Item 085A - -Begin of Item 085B - Format 1 - srcBegin = 8D70 - srcEnd = 8D77 - mappingOffset = 1509 - Mapping = - F1CB FFFD FFFD D0AF DDB9 FFFD FFFD D1C3 -End of Item 085B - -Begin of Item 085C - Format 2 - srcBegin = 8D85 - destBegin = F5B1 -End of Item 085C - -Begin of Item 085D - Format 2 - srcBegin = 8D8A - destBegin = EAC6 -End of Item 085D - -Begin of Item 085E - Format 2 - srcBegin = 8D99 - destBegin = F0E1 -End of Item 085E - -Begin of Item 085F - Format 2 - srcBegin = 8DA3 - destBegin = F6AC -End of Item 085F - -Begin of Item 0860 - Format 2 - srcBegin = 8DA8 - destBegin = F5D9 -End of Item 0860 - -Begin of Item 0861 - Format 2 - srcBegin = 8DB3 - destBegin = F0EB -End of Item 0861 - -Begin of Item 0862 - Format 2 - srcBegin = 8DBA - destBegin = DDBA -End of Item 0862 - -Begin of Item 0863 - Format 2 - srcBegin = 8DBE - destBegin = F2BF -End of Item 0863 - -Begin of Item 0864 - Format 2 - srcBegin = 8DC6 - destBegin = F7C5 -End of Item 0864 - -Begin of Item 0865 - Format 1 - srcBegin = 8DCB - srcEnd = 8DCF - mappingOffset = 1511 - Mapping = - DBA2 F2F6 FFFD FFFD CABA -End of Item 0865 - -Begin of Item 0866 - Format 1 - srcBegin = 8DDB - srcEnd = 8DDD - mappingOffset = 1516 - Mapping = - F7F5 FFFD CBE5 -End of Item 0866 - -Begin of Item 0867 - Format 1 - srcBegin = 8DE1 - srcEnd = 8DE3 - mappingOffset = 1519 - Mapping = - EEE6 FFFD E0D3 -End of Item 0867 - -Begin of Item 0868 - Format 2 - srcBegin = 8DE8 - destBegin = CEA5 -End of Item 0868 - -Begin of Item 0869 - Format 2 - srcBegin = 8DEF - destBegin = D6D8 -End of Item 0869 - -Begin of Item 086A - Format 2 - srcBegin = 8DF3 - destBegin = D4AF -End of Item 086A - -Begin of Item 086B - Format 2 - srcBegin = 8E0A - destBegin = E9C9 -End of Item 086B - -Begin of Item 086C - Format 1 - srcBegin = 8E0F - srcEnd = 8E10 - mappingOffset = 151C - Mapping = - D3CE F4C2 -End of Item 086C - -Begin of Item 086D - Format 2 - srcBegin = 8E1E - destBegin = CBE6 -End of Item 086D - -Begin of Item 086E - Format 2 - srcBegin = 8E2A - destBegin = F1A1 -End of Item 086E - -Begin of Item 086F - Format 2 - srcBegin = 8E30 - destBegin = EBB2 -End of Item 086F - -Begin of Item 0870 - Format 2 - srcBegin = 8E35 - destBegin = F1A2 -End of Item 0870 - -Begin of Item 0871 - Format 1 - srcBegin = 8E42 - srcEnd = 8E4A - mappingOffset = 151E - Mapping = - EBB3 FFFD F0B4 FFFD FFFD CBF4 D4B0 F3B2 - FBB7 -End of Item 0871 - -Begin of Item 0872 - Format 2 - srcBegin = 8E59 - destBegin = F5EC -End of Item 0872 - -Begin of Item 0873 - Format 1 - srcBegin = 8E5F - srcEnd = 8E60 - mappingOffset = 1527 - Mapping = - EEE7 F4B2 -End of Item 0873 - -Begin of Item 0874 - Format 1 - srcBegin = 8E74 - srcEnd = 8E76 - mappingOffset = 1529 - Mapping = - F5ED FFFD CFF3 -End of Item 0874 - -Begin of Item 0875 - Format 2 - srcBegin = 8E81 - destBegin = F0E2 -End of Item 0875 - -Begin of Item 0876 - Format 1 - srcBegin = 8E87 - srcEnd = 8E8D - mappingOffset = 152C - Mapping = - EECE FFFD FFFD F1CC FFFD FFFD E5B8 -End of Item 0876 - -Begin of Item 0877 - Format 1 - srcBegin = 8EAA - srcEnd = 8EAC - mappingOffset = 1533 - Mapping = - D7F5 E3F3 CFE5 -End of Item 0877 - -Begin of Item 0878 - Format 2 - srcBegin = 8EC0 - destBegin = CFC6 -End of Item 0878 - -Begin of Item 0879 - Format 1 - srcBegin = 8ECA - srcEnd = 8ECD - mappingOffset = 1536 - Mapping = - F3B3 E4D8 CFF9 CFDA -End of Item 0879 - -Begin of Item 087A - Format 2 - srcBegin = 8ED2 - destBegin = FACD -End of Item 087A - -Begin of Item 087B - Format 2 - srcBegin = 8EDF - destBegin = E6E3 -End of Item 087B - -Begin of Item 087C - Format 2 - srcBegin = 8EEB - destBegin = F2E2 -End of Item 087C - -Begin of Item 087D - Format 1 - srcBegin = 8EF8 - srcEnd = 8EFE - mappingOffset = 153A - Mapping = - F5EE FFFD FFFD CABB FFFD FFFD E3DC -End of Item 087D - -Begin of Item 087E - Format 1 - srcBegin = 8F03 - srcEnd = 8F05 - mappingOffset = 1541 - Mapping = - CEF2 FFFD D6D9 -End of Item 087E - -Begin of Item 087F - Format 2 - srcBegin = 8F09 - destBegin = EEB0 -End of Item 087F - -Begin of Item 0880 - Format 1 - srcBegin = 8F12 - srcEnd = 8F15 - mappingOffset = 1544 - Mapping = - F4E5 D8C2 DCD0 CCEE -End of Item 0880 - -Begin of Item 0881 - Format 1 - srcBegin = 8F1B - srcEnd = 8F1F - mappingOffset = 1548 - Mapping = - D5E0 F6CA FDCA D8D6 F4CF -End of Item 0881 - -Begin of Item 0882 - Format 1 - srcBegin = 8F26 - srcEnd = 8F2A - mappingOffset = 154D - Mapping = - D6A6 DCBE FFFD DBD4 D7C7 -End of Item 0882 - -Begin of Item 0883 - Format 2 - srcBegin = 8F2F - destBegin = F2FE -End of Item 0883 - -Begin of Item 0884 - Format 2 - srcBegin = 8F33 - destBegin = F1CD -End of Item 0884 - -Begin of Item 0885 - Format 1 - srcBegin = 8F38 - srcEnd = 8F3F - mappingOffset = 1552 - Mapping = - E2C3 DCDE FFFD DCDF FFFD FFFD EFAD E6AB -End of Item 0885 - -Begin of Item 0886 - Format 1 - srcBegin = 8F44 - srcEnd = 8F45 - mappingOffset = 155A - Mapping = - F9DD EABF -End of Item 0886 - -Begin of Item 0887 - Format 2 - srcBegin = 8F49 - destBegin = EFAE -End of Item 0887 - -Begin of Item 0888 - Format 1 - srcBegin = 8F4D - srcEnd = 8F4E - mappingOffset = 155C - Mapping = - F4D0 CEF3 -End of Item 0888 - -Begin of Item 0889 - Format 1 - srcBegin = 8F5D - srcEnd = 8F62 - mappingOffset = 155E - Mapping = - E6AC FFFD CEDE FFFD FFFD D5F9 -End of Item 0889 - -Begin of Item 088A - Format 1 - srcBegin = 8F9B - srcEnd = 8F9C - mappingOffset = 1564 - Mapping = - E3F4 CDD0 -End of Item 088A - -Begin of Item 088B - Format 1 - srcBegin = 8FA3 - srcEnd = 8FA8 - mappingOffset = 1566 - Mapping = - D5B8 FFFD FFFD F7FD FFFD DCA9 -End of Item 088B - -Begin of Item 088C - Format 1 - srcBegin = 8FAD - srcEnd = 8FB2 - mappingOffset = 156C - Mapping = - DEF6 FFFD DCAA F2E3 E9B4 D2DC -End of Item 088C - -Begin of Item 088D - Format 1 - srcBegin = 8FC2 - srcEnd = 8FC5 - mappingOffset = 1572 - Mapping = - E9E6 FFFD FFFD E3F6 -End of Item 088D - -Begin of Item 088E - Format 1 - srcBegin = 8FCE - srcEnd = 8FD4 - mappingOffset = 1576 - Mapping = - E7CA FFFD FFFD D0CE FFFD FFFD DAF7 -End of Item 088E - -Begin of Item 088F - Format 2 - srcBegin = 8FE6 - destBegin = CABC -End of Item 088F - -Begin of Item 0890 - Format 1 - srcBegin = 8FEA - srcEnd = 8FF2 - mappingOffset = 157D - Mapping = - EEE8 DADE FFFD F2F7 FFFD FFFD E2FB FFFD - CCA6 -End of Item 0890 - -Begin of Item 0891 - Format 1 - srcBegin = 8FF7 - srcEnd = 8FF9 - mappingOffset = 1586 - Mapping = - DABB FFFD EEE9 -End of Item 0891 - -Begin of Item 0892 - Format 1 - srcBegin = 8FFD - srcEnd = 9023 - mappingOffset = 1589 - Mapping = - F5DA FFFD FFFD F7DC E1EA CEC1 D4B1 FFFD - FDB1 E6BD FFFD FBAD FFFD FFFD F8E7 FFFD - E1CE FFFD F7E2 F5EF CFC7 FFFD FFFD D4B2 - CCEF FFFD D4E8 FFFD EECF F7D7 FFFD FFFD - E0A6 D6C1 E1DC F0E3 F1E4 DCF1 D6A7 -End of Item 0892 - -Begin of Item 0893 - Format 1 - srcBegin = 902E - srcEnd = 9038 - mappingOffset = 15B0 - Mapping = - F4F5 FFFD FFFD F1CE F2E4 FFFD FFFD D0B0 - FFFD FFFD ECEF -End of Item 0893 - -Begin of Item 0894 - Format 1 - srcBegin = 903C - srcEnd = 9042 - mappingOffset = 15BB - Mapping = - F9BA FFFD EBB5 FFFD FFFD D4ED E2C4 -End of Item 0894 - -Begin of Item 0895 - Format 1 - srcBegin = 9047 - srcEnd = 9055 - mappingOffset = 15C2 - Mapping = - E9E7 FFFD FFFD EBB4 EAA1 FFFD F8BC CEA6 - FFFD F9C6 FCDA FFFD D4B3 D3B9 EADE -End of Item 0895 - -Begin of Item 0896 - Format 1 - srcBegin = 9059 - srcEnd = 9063 - mappingOffset = 15D1 - Mapping = - E9AB FFFD FFFD E1E1 D3CF F4F6 FFFD EAC0 - E1CF FFFD CCBA -End of Item 0896 - -Begin of Item 0897 - Format 2 - srcBegin = 9069 - destBegin = EEEA -End of Item 0897 - -Begin of Item 0898 - Format 1 - srcBegin = 906D - srcEnd = 908A - mappingOffset = 15DC - Mapping = - F0E4 F3B4 D4EE FFFD FFFD F2C0 FFFD FFFD - F1E5 FFFD F4C3 E0D4 FFFD EBB6 FFFD D7A1 - CBE8 FFFD F9AD E9AD D8E4 FAB3 E2C5 FCBD - FFFD FFFD ECC4 D8B1 FFFD DCAB -End of Item 0898 - -Begin of Item 0899 - Format 1 - srcBegin = 908F - srcEnd = 9091 - mappingOffset = 15FA - Mapping = - D5A4 FFFD EBE9 -End of Item 0899 - -Begin of Item 089A - Format 2 - srcBegin = 9095 - destBegin = E8BB -End of Item 089A - -Begin of Item 089B - Format 2 - srcBegin = 9099 - destBegin = D8D7 -End of Item 089B - -Begin of Item 089C - Format 1 - srcBegin = 90A2 - srcEnd = 90AA - mappingOffset = 15FD - Mapping = - FBAE D1E1 FFFD FFFD DBC0 FFFD F5BE FFFD - DEF7 -End of Item 089C - -Begin of Item 089D - Format 1 - srcBegin = 90AF - srcEnd = 90B1 - mappingOffset = 1606 - Mapping = - CAFB F7C6 CFC8 -End of Item 089D - -Begin of Item 089E - Format 1 - srcBegin = 90B5 - srcEnd = 90B8 - mappingOffset = 1609 - Mapping = - E1D0 FFFD FFFD EED0 -End of Item 089E - -Begin of Item 089F - Format 2 - srcBegin = 90C1 - destBegin = E9F4 -End of Item 089F - -Begin of Item 08A0 - Format 2 - srcBegin = 90CA - destBegin = CEF4 -End of Item 08A0 - -Begin of Item 08A1 - Format 1 - srcBegin = 90DE - srcEnd = 90E1 - mappingOffset = 160D - Mapping = - D5CD FFFD FFFD CFDB -End of Item 08A1 - -Begin of Item 08A2 - Format 2 - srcBegin = 90E8 - destBegin = DDBB -End of Item 08A2 - -Begin of Item 08A3 - Format 2 - srcBegin = 90ED - destBegin = CEAC -End of Item 08A3 - -Begin of Item 08A4 - Format 2 - srcBegin = 90F5 - destBegin = E9E8 -End of Item 08A4 - -Begin of Item 08A5 - Format 2 - srcBegin = 90FD - destBegin = D4B4 -End of Item 08A5 - -Begin of Item 08A6 - Format 2 - srcBegin = 9102 - destBegin = E4C7 -End of Item 08A6 - -Begin of Item 08A7 - Format 1 - srcBegin = 9112 - srcEnd = 9115 - mappingOffset = 1611 - Mapping = - F5DB FFFD FFFD FAC1 -End of Item 08A7 - -Begin of Item 08A8 - Format 2 - srcBegin = 9119 - destBegin = DEA9 -End of Item 08A8 - -Begin of Item 08A9 - Format 2 - srcBegin = 9127 - destBegin = D4F8 -End of Item 08A9 - -Begin of Item 08AA - Format 2 - srcBegin = 912D - destBegin = EFF7 -End of Item 08AA - -Begin of Item 08AB - Format 2 - srcBegin = 9132 - destBegin = D3B3 -End of Item 08AB - -Begin of Item 08AC - Format 1 - srcBegin = 9149 - srcEnd = 914E - mappingOffset = 1615 - Mapping = - EBB7 EFF8 F5DC EDCC DBD5 F1CF -End of Item 08AC - -Begin of Item 08AD - Format 2 - srcBegin = 9152 - destBegin = F1D0 -End of Item 08AD - -Begin of Item 08AE - Format 2 - srcBegin = 9162 - destBegin = F5B2 -End of Item 08AE - -Begin of Item 08AF - Format 1 - srcBegin = 9169 - srcEnd = 916C - mappingOffset = 161B - Mapping = - D9AE D5AC FFFD E2C6 -End of Item 08AF - -Begin of Item 08B0 - Format 1 - srcBegin = 9175 - srcEnd = 9178 - mappingOffset = 161F - Mapping = - FDA3 FFFD FBE5 DFAB -End of Item 08B0 - -Begin of Item 08B1 - Format 1 - srcBegin = 9187 - srcEnd = 918D - mappingOffset = 1623 - Mapping = - E2F5 FFFD F6AD FFFD F5B3 FFFD F0B5 -End of Item 08B1 - -Begin of Item 08B2 - Format 2 - srcBegin = 9192 - destBegin = E1A5 -End of Item 08B2 - -Begin of Item 08B3 - Format 2 - srcBegin = 919C - destBegin = F5DD -End of Item 08B3 - -Begin of Item 08B4 - Format 1 - srcBegin = 91AB - srcEnd = 91B5 - mappingOffset = 162A - Mapping = - ECA2 EDFD FFFD F5B4 FBB8 FFFD DBA3 FFFD - FFFD D6CA CBD9 -End of Item 08B4 - -Begin of Item 08B5 - Format 2 - srcBegin = 91C0 - destBegin = E5D4 -End of Item 08B5 - -Begin of Item 08B6 - Format 1 - srcBegin = 91C7 - srcEnd = 91D1 - mappingOffset = 1635 - Mapping = - F3FA FFFD EBB8 FFFD E0B7 D7EC F1EC E5AF - D5E1 D7ED D1D1 -End of Item 08B6 - -Begin of Item 08B7 - Format 1 - srcBegin = 91D7 - srcEnd = 91D8 - mappingOffset = 1640 - Mapping = - E1F2 EFF9 -End of Item 08B7 - -Begin of Item 08B8 - Format 1 - srcBegin = 91DC - srcEnd = 91DD - mappingOffset = 1642 - Mapping = - DDBC F6DC -End of Item 08B8 - -Begin of Item 08B9 - Format 2 - srcBegin = 91E3 - destBegin = F0E5 -End of Item 08B9 - -Begin of Item 08BA - Format 1 - srcBegin = 91E7 - srcEnd = 91EA - mappingOffset = 1644 - Mapping = - F4C4 FFFD FFFD E9E9 -End of Item 08BA - -Begin of Item 08BB - Format 2 - srcBegin = 91F5 - destBegin = F3FB -End of Item 08BB - -Begin of Item 08BC - Format 1 - srcBegin = 920D - srcEnd = 9212 - mappingOffset = 1648 - Mapping = - D4EF FFFD FFFD CCA2 F7FE DFBC -End of Item 08BC - -Begin of Item 08BD - Format 2 - srcBegin = 9217 - destBegin = EBCD -End of Item 08BD - -Begin of Item 08BE - Format 2 - srcBegin = 921E - destBegin = D0B7 -End of Item 08BE - -Begin of Item 08BF - Format 2 - srcBegin = 9234 - destBegin = D6C2 -End of Item 08BF - -Begin of Item 08C0 - Format 2 - srcBegin = 923A - destBegin = E8AD -End of Item 08C0 - -Begin of Item 08C1 - Format 1 - srcBegin = 923F - srcEnd = 9240 - mappingOffset = 164E - Mapping = - EFAF CBA5 -End of Item 08C1 - -Begin of Item 08C2 - Format 2 - srcBegin = 9245 - destBegin = CBE9 -End of Item 08C2 - -Begin of Item 08C3 - Format 2 - srcBegin = 9249 - destBegin = FAE8 -End of Item 08C3 - -Begin of Item 08C4 - Format 2 - srcBegin = 9257 - destBegin = CCC6 -End of Item 08C4 - -Begin of Item 08C5 - Format 1 - srcBegin = 925B - srcEnd = 925E - mappingOffset = 1650 - Mapping = - E6E7 FFFD FFFD EAC7 -End of Item 08C5 - -Begin of Item 08C6 - Format 1 - srcBegin = 9262 - srcEnd = 9266 - mappingOffset = 1654 - Mapping = - DBA4 FFFD CFC9 E2FC EFFA -End of Item 08C6 - -Begin of Item 08C7 - Format 1 - srcBegin = 9280 - srcEnd = 9285 - mappingOffset = 1659 - Mapping = - EBDE FFFD FFFD F5C8 FFFD D4DE -End of Item 08C7 - -Begin of Item 08C8 - Format 1 - srcBegin = 9291 - srcEnd = 9298 - mappingOffset = 165F - Mapping = - E0D5 FFFD EFB0 FFFD FFFD E2C7 FFFD D9AF -End of Item 08C8 - -Begin of Item 08C9 - Format 2 - srcBegin = 929C - destBegin = F9E7 -End of Item 08C9 - -Begin of Item 08CA - Format 1 - srcBegin = 92B3 - srcEnd = 92B9 - mappingOffset = 1667 - Mapping = - E7E5 FFFD FFFD CFCA E1D1 FFFD E2C8 -End of Item 08CA - -Begin of Item 08CB - Format 1 - srcBegin = 92CC - srcEnd = 92D2 - mappingOffset = 166E - Mapping = - EFFB FFFD FFFD FAF9 FFFD FFFD DCF2 -End of Item 08CB - -Begin of Item 08CC - Format 2 - srcBegin = 92E4 - destBegin = E0A7 -End of Item 08CC - -Begin of Item 08CD - Format 2 - srcBegin = 92EA - destBegin = F8E8 -End of Item 08CD - -Begin of Item 08CE - Format 2 - srcBegin = 92F8 - destBegin = CBEA -End of Item 08CE - -Begin of Item 08CF - Format 2 - srcBegin = 92FC - destBegin = CBBC -End of Item 08CF - -Begin of Item 08D0 - Format 2 - srcBegin = 9304 - destBegin = D6E2 -End of Item 08D0 - -Begin of Item 08D1 - Format 2 - srcBegin = 9310 - destBegin = F5DE -End of Item 08D1 - -Begin of Item 08D2 - Format 1 - srcBegin = 9318 - srcEnd = 931A - mappingOffset = 1675 - Mapping = - F5DF FFFD EEB6 -End of Item 08D2 - -Begin of Item 08D3 - Format 1 - srcBegin = 931E - srcEnd = 932F - mappingOffset = 1678 - Mapping = - E2F6 D3CA EFFC D1C4 EFB1 FFFD D1C5 FFFD - D0DE FFFD D9E1 FFFD FFFD E0B8 FFFD FFFD - CDD1 F3B9 -End of Item 08D3 - -Begin of Item 08D4 - Format 1 - srcBegin = 9348 - srcEnd = 934D - mappingOffset = 168A - Mapping = - E7CC FFFD D6A8 CEA7 FFFD D4B5 -End of Item 08D4 - -Begin of Item 08D5 - Format 2 - srcBegin = 9354 - destBegin = E4C8 -End of Item 08D5 - -Begin of Item 08D6 - Format 2 - srcBegin = 935B - destBegin = D3B4 -End of Item 08D6 - -Begin of Item 08D7 - Format 2 - srcBegin = 936E - destBegin = EBB9 -End of Item 08D7 - -Begin of Item 08D8 - Format 2 - srcBegin = 9375 - destBegin = CBF5 -End of Item 08D8 - -Begin of Item 08D9 - Format 1 - srcBegin = 937C - srcEnd = 937E - mappingOffset = 1690 - Mapping = - F6DD FFFD F1A3 -End of Item 08D9 - -Begin of Item 08DA - Format 2 - srcBegin = 938C - destBegin = CCC7 -End of Item 08DA - -Begin of Item 08DB - Format 1 - srcBegin = 9394 - srcEnd = 9396 - mappingOffset = 1693 - Mapping = - E9CA FFFD E1F0 -End of Item 08DB - -Begin of Item 08DC - Format 2 - srcBegin = 939A - destBegin = F5E0 -End of Item 08DC - -Begin of Item 08DD - Format 2 - srcBegin = 93A3 - destBegin = FBAF -End of Item 08DD - -Begin of Item 08DE - Format 2 - srcBegin = 93A7 - destBegin = CBD1 -End of Item 08DE - -Begin of Item 08DF - Format 1 - srcBegin = 93AC - srcEnd = 93B0 - mappingOffset = 1696 - Mapping = - FBE0 F2E5 FFFD FFFD ECF0 -End of Item 08DF - -Begin of Item 08E0 - Format 2 - srcBegin = 93C3 - destBegin = F0EC -End of Item 08E0 - -Begin of Item 08E1 - Format 2 - srcBegin = 93D1 - destBegin = EEEB -End of Item 08E1 - -Begin of Item 08E2 - Format 1 - srcBegin = 93DE - srcEnd = 93E4 - mappingOffset = 169B - Mapping = - E9CB FFFD FFFD CCF0 FFFD FFFD D7AF -End of Item 08E2 - -Begin of Item 08E3 - Format 2 - srcBegin = 93F6 - destBegin = F3A1 -End of Item 08E3 - -Begin of Item 08E4 - Format 2 - srcBegin = 9404 - destBegin = FCF5 -End of Item 08E4 - -Begin of Item 08E5 - Format 2 - srcBegin = 9418 - destBegin = F1A4 -End of Item 08E5 - -Begin of Item 08E6 - Format 2 - srcBegin = 9425 - destBegin = E0D6 -End of Item 08E6 - -Begin of Item 08E7 - Format 2 - srcBegin = 942B - destBegin = EFB2 -End of Item 08E7 - -Begin of Item 08E8 - Format 1 - srcBegin = 9435 - srcEnd = 9438 - mappingOffset = 16A2 - Mapping = - F4D1 FFFD FFFD F7A1 -End of Item 08E8 - -Begin of Item 08E9 - Format 2 - srcBegin = 9444 - destBegin = F1D1 -End of Item 08E9 - -Begin of Item 08EA - Format 1 - srcBegin = 9451 - srcEnd = 9452 - mappingOffset = 16A6 - Mapping = - CAFC CAFD -End of Item 08EA - -Begin of Item 08EB - Format 2 - srcBegin = 945B - destBegin = CECE -End of Item 08EB - -Begin of Item 08EC - Format 1 - srcBegin = 947D - srcEnd = 947F - mappingOffset = 16A8 - Mapping = - F3C8 FFFD F3BA -End of Item 08EC - -Begin of Item 08ED - Format 2 - srcBegin = 9577 - destBegin = EDFE -End of Item 08ED - -Begin of Item 08EE - Format 1 - srcBegin = 9580 - srcEnd = 9583 - mappingOffset = 16AB - Mapping = - DAA6 FFFD FFFD E0EC -End of Item 08EE - -Begin of Item 08EF - Format 1 - srcBegin = 9589 - srcEnd = 958B - mappingOffset = 16AF - Mapping = - F8CD FFFD CBD2 -End of Item 08EF - -Begin of Item 08F0 - Format 1 - srcBegin = 958F - srcEnd = 9594 - mappingOffset = 16B2 - Mapping = - EBCE FFFD F9D8 F9D9 CAE0 DACA -End of Item 08F0 - -Begin of Item 08F1 - Format 2 - srcBegin = 9598 - destBegin = CBA6 -End of Item 08F1 - -Begin of Item 08F2 - Format 1 - srcBegin = 95A3 - srcEnd = 95A8 - mappingOffset = 16B8 - Mapping = - CAC8 F9EE DBEC FFFD FFFD D0B1 -End of Item 08F2 - -Begin of Item 08F3 - Format 2 - srcBegin = 95AD - destBegin = D5EF -End of Item 08F3 - -Begin of Item 08F4 - Format 2 - srcBegin = 95B1 - destBegin = E6F3 -End of Item 08F4 - -Begin of Item 08F5 - Format 1 - srcBegin = 95BB - srcEnd = 95BC - mappingOffset = 16BE - Mapping = - E7A2 E4D9 -End of Item 08F5 - -Begin of Item 08F6 - Format 1 - srcBegin = 95C7 - srcEnd = 95CA - mappingOffset = 16C0 - Mapping = - E4E1 FFFD FFFD FCC4 -End of Item 08F6 - -Begin of Item 08F7 - Format 1 - srcBegin = 95D4 - srcEnd = 95D6 - mappingOffset = 16C4 - Mapping = - F9EF CFF4 F7E6 -End of Item 08F7 - -Begin of Item 08F8 - Format 2 - srcBegin = 95DC - destBegin = CEBC -End of Item 08F8 - -Begin of Item 08F9 - Format 1 - srcBegin = 95E1 - srcEnd = 95E2 - mappingOffset = 16C7 - Mapping = - F4C5 DCA3 -End of Item 08F9 - -Begin of Item 08FA - Format 2 - srcBegin = 961C - destBegin = DDBD -End of Item 08FA - -Begin of Item 08FB - Format 2 - srcBegin = 9621 - destBegin = F4C6 -End of Item 08FB - -Begin of Item 08FC - Format 2 - srcBegin = 962A - destBegin = F8A1 -End of Item 08FC - -Begin of Item 08FD - Format 2 - srcBegin = 962E - destBegin = E8D6 -End of Item 08FD - -Begin of Item 08FE - Format 2 - srcBegin = 9632 - destBegin = DBC1 -End of Item 08FE - -Begin of Item 08FF - Format 2 - srcBegin = 963B - destBegin = F0E6 -End of Item 08FF - -Begin of Item 0900 - Format 1 - srcBegin = 963F - srcEnd = 9644 - mappingOffset = 16C9 - Mapping = - E4B9 F6ED FFFD F9AE FFFD DDBE -End of Item 0900 - -Begin of Item 0901 - Format 1 - srcBegin = 964B - srcEnd = 9650 - mappingOffset = 16CF - Mapping = - D7B0 D8E8 CBBD FFFD FFFD F9DA -End of Item 0901 - -Begin of Item 0902 - Format 1 - srcBegin = 965B - srcEnd = 9664 - mappingOffset = 16D5 - Mapping = - F8CE F9F0 E0ED E3B3 F4B3 FFFD FFFD EAC2 - F2E6 F0B6 -End of Item 0902 - -Begin of Item 0903 - Format 2 - srcBegin = 966A - destBegin = DBD6 -End of Item 0903 - -Begin of Item 0904 - Format 1 - srcBegin = 9670 - srcEnd = 9678 - mappingOffset = 16DF - Mapping = - EBE4 FFFD FFFD F2E7 FFFD D7D5 D4B6 F9E8 - D7C1 -End of Item 0904 - -Begin of Item 0905 - Format 2 - srcBegin = 967D - destBegin = E5D5 -End of Item 0905 - -Begin of Item 0906 - Format 1 - srcBegin = 9685 - srcEnd = 9686 - mappingOffset = 16E8 - Mapping = - E9EA D7CC -End of Item 0906 - -Begin of Item 0907 - Format 1 - srcBegin = 968A - srcEnd = 968E - mappingOffset = 16EA - Mapping = - D3E9 E2C9 FFFD FCDB CDAD -End of Item 0907 - -Begin of Item 0908 - Format 1 - srcBegin = 9694 - srcEnd = 969C - mappingOffset = 16EF - Mapping = - CCB0 EAA2 FFFD FFFD E4F6 D0C0 FFFD F0B7 - EEA1 -End of Item 0908 - -Begin of Item 0909 - Format 2 - srcBegin = 96A3 - destBegin = D7F6 -End of Item 0909 - -Begin of Item 090A - Format 1 - srcBegin = 96A7 - srcEnd = 96AA - mappingOffset = 16F8 - Mapping = - E2CA E2CB FFFD FACF -End of Item 090A - -Begin of Item 090B - Format 2 - srcBegin = 96B1 - destBegin = EBDF -End of Item 090B - -Begin of Item 090C - Format 2 - srcBegin = 96B7 - destBegin = D6CB -End of Item 090C - -Begin of Item 090D - Format 2 - srcBegin = 96BB - destBegin = F4B4 -End of Item 090D - -Begin of Item 090E - Format 1 - srcBegin = 96C0 - srcEnd = 96CE - mappingOffset = 16FC - Mapping = - EDCD E4D2 FFFD FFFD EAA9 E4BA F3A2 CDD2 - FFFD F6CB FFFD F1E6 EDC1 E8BC EED1 -End of Item 090E - -Begin of Item 090F - Format 1 - srcBegin = 96D5 - srcEnd = 96DC - mappingOffset = 170B - Mapping = - F0E7 E2CC FFFD FFFD E4AA FFFD F5E1 EDDA -End of Item 090F - -Begin of Item 0910 - Format 1 - srcBegin = 96E2 - srcEnd = 96E3 - mappingOffset = 1713 - Mapping = - D7EE D1F1 -End of Item 0910 - -Begin of Item 0911 - Format 1 - srcBegin = 96E8 - srcEnd = 96EA - mappingOffset = 1715 - Mapping = - E9EB E9EC E0E4 -End of Item 0911 - -Begin of Item 0912 - Format 1 - srcBegin = 96EF - srcEnd = 96F2 - mappingOffset = 1718 - Mapping = - DAA7 DDD4 FFFD EAA3 -End of Item 0912 - -Begin of Item 0913 - Format 1 - srcBegin = 96F6 - srcEnd = 96FB - mappingOffset = 171C - Mapping = - D6C3 D6F4 FFFD DADF FFFD EFB3 -End of Item 0913 - -Begin of Item 0914 - Format 2 - srcBegin = 9700 - destBegin = E2CD -End of Item 0914 - -Begin of Item 0915 - Format 1 - srcBegin = 9706 - srcEnd = 9707 - mappingOffset = 1722 - Mapping = - EFFD F2E8 -End of Item 0915 - -Begin of Item 0916 - Format 1 - srcBegin = 9711 - srcEnd = 971E - mappingOffset = 1724 - Mapping = - EFC5 FFFD E7E7 FFFD FFFD D7FD FFFD FFFD - E7CE FFFD FFFD DFDC FFFD F9C7 -End of Item 0916 - -Begin of Item 0917 - Format 2 - srcBegin = 9727 - destBegin = D9F6 -End of Item 0917 - -Begin of Item 0918 - Format 1 - srcBegin = 9730 - srcEnd = 9732 - mappingOffset = 1732 - Mapping = - DFAC FFFD D6DA -End of Item 0918 - -Begin of Item 0919 - Format 2 - srcBegin = 9739 - destBegin = DCA4 -End of Item 0919 - -Begin of Item 091A - Format 2 - srcBegin = 973D - destBegin = F0B8 -End of Item 091A - -Begin of Item 091B - Format 1 - srcBegin = 9742 - srcEnd = 9744 - mappingOffset = 1735 - Mapping = - D5FA FFFD E4F7 -End of Item 091B - -Begin of Item 091C - Format 2 - srcBegin = 9748 - destBegin = D6C4 -End of Item 091C - -Begin of Item 091D - Format 2 - srcBegin = 9751 - destBegin = F4EC -End of Item 091D - -Begin of Item 091E - Format 2 - srcBegin = 9756 - destBegin = EFFE -End of Item 091E - -Begin of Item 091F - Format 1 - srcBegin = 975C - srcEnd = 9762 - mappingOffset = 1738 - Mapping = - F0A1 FFFD DEAA FFFD FFFD DABC D8FC -End of Item 091F - -Begin of Item 0920 - Format 2 - srcBegin = 9769 - destBegin = FAD4 -End of Item 0920 - -Begin of Item 0921 - Format 2 - srcBegin = 976D - destBegin = ECE5 -End of Item 0921 - -Begin of Item 0922 - Format 1 - srcBegin = 9774 - srcEnd = 977A - mappingOffset = 173F - Mapping = - FCA8 FFFD FFFD ECE6 FFFD FFFD D8CB -End of Item 0922 - -Begin of Item 0923 - Format 1 - srcBegin = 978B - srcEnd = 978F - mappingOffset = 1746 - Mapping = - FBB9 FFFD E4D3 FFFD CDF9 -End of Item 0923 - -Begin of Item 0924 - Format 2 - srcBegin = 97A0 - destBegin = CFD3 -End of Item 0924 - -Begin of Item 0925 - Format 1 - srcBegin = 97A8 - srcEnd = 97AD - mappingOffset = 174B - Mapping = - CAEA FFFD FFFD CFD4 FFFD F8BD -End of Item 0925 - -Begin of Item 0926 - Format 2 - srcBegin = 97C6 - destBegin = F4C7 -End of Item 0926 - -Begin of Item 0927 - Format 2 - srcBegin = 97CB - destBegin = EADF -End of Item 0927 - -Begin of Item 0928 - Format 2 - srcBegin = 97D3 - destBegin = F9DB -End of Item 0928 - -Begin of Item 0929 - Format 2 - srcBegin = 97DC - destBegin = D4B7 -End of Item 0929 - -Begin of Item 092A - Format 1 - srcBegin = 97F3 - srcEnd = 97F6 - mappingOffset = 1751 - Mapping = - EBE5 FFFD FFFD E1D2 -End of Item 092A - -Begin of Item 092B - Format 2 - srcBegin = 97FB - destBegin = EAA4 -End of Item 092B - -Begin of Item 092C - Format 1 - srcBegin = 97FF - srcEnd = 980C - mappingOffset = 1755 - Mapping = - FAC2 FBE1 FAED F0A2 CCF1 FFFD FAA3 E2F7 - FFFD E2CE FFFD E9F5 FFFD E1EB -End of Item 092C - -Begin of Item 092D - Format 1 - srcBegin = 9810 - srcEnd = 9813 - mappingOffset = 1763 - Mapping = - E7E8 E8D7 DAF8 D4CB -End of Item 092D - -Begin of Item 092E - Format 1 - srcBegin = 9817 - srcEnd = 9818 - mappingOffset = 1767 - Mapping = - F7F6 D6C5 -End of Item 092E - -Begin of Item 092F - Format 1 - srcBegin = 982D - srcEnd = 9830 - mappingOffset = 1769 - Mapping = - D4E9 FFFD FFFD FAFA -End of Item 092F - -Begin of Item 0930 - Format 1 - srcBegin = 9838 - srcEnd = 983B - mappingOffset = 176D - Mapping = - CCF2 F7DD FFFD DEBA -End of Item 0930 - -Begin of Item 0931 - Format 2 - srcBegin = 9846 - destBegin = CEA8 -End of Item 0931 - -Begin of Item 0932 - Format 1 - srcBegin = 984C - srcEnd = 984E - mappingOffset = 1771 - Mapping = - F0B9 E4FE E4C9 -End of Item 0932 - -Begin of Item 0933 - Format 2 - srcBegin = 9854 - destBegin = E4D4 -End of Item 0933 - -Begin of Item 0934 - Format 1 - srcBegin = 9858 - srcEnd = 985A - mappingOffset = 1774 - Mapping = - EAC3 FFFD EFB4 -End of Item 0934 - -Begin of Item 0935 - Format 2 - srcBegin = 985E - destBegin = D7BE -End of Item 0935 - -Begin of Item 0936 - Format 1 - srcBegin = 9865 - srcEnd = 9867 - mappingOffset = 1777 - Mapping = - FBE2 FFFD CDD3 -End of Item 0936 - -Begin of Item 0937 - Format 2 - srcBegin = 986B - destBegin = EFB5 -End of Item 0937 - -Begin of Item 0938 - Format 2 - srcBegin = 986F - destBegin = FAE9 -End of Item 0938 - -Begin of Item 0939 - Format 2 - srcBegin = 98A8 - destBegin = F9A6 -End of Item 0939 - -Begin of Item 093A - Format 1 - srcBegin = 98AF - srcEnd = 98B1 - mappingOffset = 177A - Mapping = - DFBD FFFD F7C7 -End of Item 093A - -Begin of Item 093B - Format 1 - srcBegin = 98C4 - srcEnd = 98C7 - mappingOffset = 177D - Mapping = - F8FD FFFD FFFD F8FC -End of Item 093B - -Begin of Item 093C - Format 1 - srcBegin = 98DB - srcEnd = 98E2 - mappingOffset = 1781 - Mapping = - DEAB DBE8 FFFD FFFD E3DD FFFD E1E2 D1C6 -End of Item 093C - -Begin of Item 093D - Format 1 - srcBegin = 98ED - srcEnd = 98EF - mappingOffset = 1789 - Mapping = - F6D0 EBE6 DAF9 -End of Item 093D - -Begin of Item 093E - Format 2 - srcBegin = 98F4 - destBegin = ECC7 -End of Item 093E - -Begin of Item 093F - Format 1 - srcBegin = 98FC - srcEnd = 98FE - mappingOffset = 178C - Mapping = - DEF8 F8E9 E3DE -End of Item 093F - -Begin of Item 0940 - Format 2 - srcBegin = 9903 - destBegin = CEF5 -End of Item 0940 - -Begin of Item 0941 - Format 1 - srcBegin = 9909 - srcEnd = 990C - mappingOffset = 178F - Mapping = - FAC3 E5D7 FFFD ECC8 -End of Item 0941 - -Begin of Item 0942 - Format 1 - srcBegin = 9910 - srcEnd = 9913 - mappingOffset = 1793 - Mapping = - F3C9 FFFD FFFD E4BB -End of Item 0942 - -Begin of Item 0943 - Format 2 - srcBegin = 9918 - destBegin = E6AE -End of Item 0943 - -Begin of Item 0944 - Format 1 - srcBegin = 991E - srcEnd = 9920 - mappingOffset = 1797 - Mapping = - EFB6 FFFD DCBF -End of Item 0944 - -Begin of Item 0945 - Format 2 - srcBegin = 9928 - destBegin = CEBD -End of Item 0945 - -Begin of Item 0946 - Format 2 - srcBegin = 9945 - destBegin = D8C3 -End of Item 0946 - -Begin of Item 0947 - Format 1 - srcBegin = 9949 - srcEnd = 994D - mappingOffset = 179A - Mapping = - D0CF FFFD CFFA F3CA E0D7 -End of Item 0947 - -Begin of Item 0948 - Format 1 - srcBegin = 9951 - srcEnd = 9957 - mappingOffset = 179F - Mapping = - D1C7 E9AE FFFD E8BD FFFD FFFD FAC4 -End of Item 0948 - -Begin of Item 0949 - Format 1 - srcBegin = 9996 - srcEnd = 9999 - mappingOffset = 17A6 - Mapping = - E2CF FFFD FFFD FAC5 -End of Item 0949 - -Begin of Item 094A - Format 2 - srcBegin = 999D - destBegin = F9B8 -End of Item 094A - -Begin of Item 094B - Format 1 - srcBegin = 99A5 - srcEnd = 99A8 - mappingOffset = 17AA - Mapping = - DCE0 FFFD FFFD FBB0 -End of Item 094B - -Begin of Item 094C - Format 1 - srcBegin = 99AC - srcEnd = 99B4 - mappingOffset = 17AE - Mapping = - D8A9 E5DF F9A7 FFFD FFFD F6EE FFFD F6CC - E2F8 -End of Item 094C - -Begin of Item 094D - Format 2 - srcBegin = 99B9 - destBegin = ECF1 -End of Item 094D - -Begin of Item 094E - Format 2 - srcBegin = 99C1 - destBegin = DAE0 -End of Item 094E - -Begin of Item 094F - Format 1 - srcBegin = 99D0 - srcEnd = 99D5 - mappingOffset = 17B7 - Mapping = - F1D2 D2CC CFCB FFFD FFFD CABD -End of Item 094F - -Begin of Item 0950 - Format 2 - srcBegin = 99D9 - destBegin = DDBF -End of Item 0950 - -Begin of Item 0951 - Format 1 - srcBegin = 99DD - srcEnd = 99DF - mappingOffset = 17BD - Mapping = - F6EF FFFD DEF9 -End of Item 0951 - -Begin of Item 0952 - Format 2 - srcBegin = 99ED - destBegin = FAB4 -End of Item 0952 - -Begin of Item 0953 - Format 2 - srcBegin = 99F1 - destBegin = D5AD -End of Item 0953 - -Begin of Item 0954 - Format 1 - srcBegin = 99FF - srcEnd = 9A01 - mappingOffset = 17C0 - Mapping = - F1E7 FFFD DEBE -End of Item 0954 - -Begin of Item 0955 - Format 2 - srcBegin = 9A08 - destBegin = DCC0 -End of Item 0955 - -Begin of Item 0956 - Format 1 - srcBegin = 9A0E - srcEnd = 9A0F - mappingOffset = 17C3 - Mapping = - D1C8 D1C9 -End of Item 0956 - -Begin of Item 0957 - Format 2 - srcBegin = 9A19 - destBegin = F8BE -End of Item 0957 - -Begin of Item 0958 - Format 2 - srcBegin = 9A2B - destBegin = CBF6 -End of Item 0958 - -Begin of Item 0959 - Format 2 - srcBegin = 9A30 - destBegin = D4F9 -End of Item 0959 - -Begin of Item 095A - Format 1 - srcBegin = 9A36 - srcEnd = 9A37 - mappingOffset = 17C5 - Mapping = - F5E2 E1D3 -End of Item 095A - -Begin of Item 095B - Format 1 - srcBegin = 9A40 - srcEnd = 9A45 - mappingOffset = 17C7 - Mapping = - D8E9 FFFD FFFD F8FE FFFD CFCC -End of Item 095B - -Begin of Item 095C - Format 2 - srcBegin = 9A4D - destBegin = FDA4 -End of Item 095C - -Begin of Item 095D - Format 1 - srcBegin = 9A55 - srcEnd = 9A5B - mappingOffset = 17CD - Mapping = - CEF6 FFFD FAD0 FFFD FFFD CCF3 E6BE -End of Item 095D - -Begin of Item 095E - Format 1 - srcBegin = 9A5F - srcEnd = 9A65 - mappingOffset = 17D4 - Mapping = - F6AE FFFD FFFD D5F0 FFFD FFFD D1CA -End of Item 095E - -Begin of Item 095F - Format 1 - srcBegin = 9A69 - srcEnd = 9A6A - mappingOffset = 17DB - Mapping = - FCBE D5F1 -End of Item 095F - -Begin of Item 0960 - Format 2 - srcBegin = 9AA8 - destBegin = CDE9 -End of Item 0960 - -Begin of Item 0961 - Format 2 - srcBegin = 9AB8 - destBegin = FAB5 -End of Item 0961 - -Begin of Item 0962 - Format 1 - srcBegin = 9AD3 - srcEnd = 9AD4 - mappingOffset = 17DD - Mapping = - E2D0 F4F7 -End of Item 0962 - -Begin of Item 0963 - Format 2 - srcBegin = 9AD8 - destBegin = CDD4 -End of Item 0963 - -Begin of Item 0964 - Format 2 - srcBegin = 9AE5 - destBegin = E7A3 -End of Item 0964 - -Begin of Item 0965 - Format 2 - srcBegin = 9AEE - destBegin = DBA5 -End of Item 0965 - -Begin of Item 0966 - Format 2 - srcBegin = 9B1A - destBegin = E2D1 -End of Item 0966 - -Begin of Item 0967 - Format 1 - srcBegin = 9B27 - srcEnd = 9B2A - mappingOffset = 17DF - Mapping = - D7A2 FFFD FFFD F7E3 -End of Item 0967 - -Begin of Item 0968 - Format 2 - srcBegin = 9B31 - destBegin = EAA6 -End of Item 0968 - -Begin of Item 0969 - Format 2 - srcBegin = 9B3C - destBegin = D0A1 -End of Item 0969 - -Begin of Item 096A - Format 1 - srcBegin = 9B41 - srcEnd = 9B45 - mappingOffset = 17E3 - Mapping = - CEDA FBEB DBA6 DBDE D8E5 -End of Item 096A - -Begin of Item 096B - Format 2 - srcBegin = 9B4F - destBegin = EAE0 -End of Item 096B - -Begin of Item 096C - Format 2 - srcBegin = 9B54 - destBegin = D8AA -End of Item 096C - -Begin of Item 096D - Format 2 - srcBegin = 9B5A - destBegin = E5E0 -End of Item 096D - -Begin of Item 096E - Format 2 - srcBegin = 9B6F - destBegin = D6DB -End of Item 096E - -Begin of Item 096F - Format 1 - srcBegin = 9B8E - srcEnd = 9B91 - mappingOffset = 17E8 - Mapping = - EFC6 FFFD FFFD F8EA -End of Item 096F - -Begin of Item 0970 - Format 2 - srcBegin = 9B9F - destBegin = E4D5 -End of Item 0970 - -Begin of Item 0971 - Format 1 - srcBegin = 9BAB - srcEnd = 9BAE - mappingOffset = 17EC - Mapping = - CEF7 FFFD FFFD E0D8 -End of Item 0971 - -Begin of Item 0972 - Format 2 - srcBegin = 9BC9 - destBegin = D7EF -End of Item 0972 - -Begin of Item 0973 - Format 2 - srcBegin = 9BD6 - destBegin = F4ED -End of Item 0973 - -Begin of Item 0974 - Format 2 - srcBegin = 9BE4 - destBegin = CDE6 -End of Item 0974 - -Begin of Item 0975 - Format 2 - srcBegin = 9BE8 - destBegin = CCF4 -End of Item 0975 - -Begin of Item 0976 - Format 1 - srcBegin = 9C0D - srcEnd = 9C15 - mappingOffset = 17F0 - Mapping = - F5E3 FFFD FFFD E4CA FFFD DCE1 FFFD FFFD - F9C8 -End of Item 0976 - -Begin of Item 0977 - Format 2 - srcBegin = 9C25 - destBegin = FCBF -End of Item 0977 - -Begin of Item 0978 - Format 2 - srcBegin = 9C32 - destBegin = E8A7 -End of Item 0978 - -Begin of Item 0979 - Format 2 - srcBegin = 9C3B - destBegin = D8C4 -End of Item 0979 - -Begin of Item 097A - Format 1 - srcBegin = 9C47 - srcEnd = 9C49 - mappingOffset = 17F9 - Mapping = - CBBE FFFD DCAE -End of Item 097A - -Begin of Item 097B - Format 2 - srcBegin = 9C57 - destBegin = D7F7 -End of Item 097B - -Begin of Item 097C - Format 1 - srcBegin = 9CE5 - srcEnd = 9CE9 - mappingOffset = 17FC - Mapping = - F0E8 FFFD DDC0 FFFD CFCD -End of Item 097C - -Begin of Item 097D - Format 1 - srcBegin = 9CF3 - srcEnd = 9CF6 - mappingOffset = 1801 - Mapping = - DCF3 D9B0 FFFD E6E9 -End of Item 097D - -Begin of Item 097E - Format 2 - srcBegin = 9D09 - destBegin = E4BC -End of Item 097E - -Begin of Item 097F - Format 2 - srcBegin = 9D1B - destBegin = EAC4 -End of Item 097F - -Begin of Item 0980 - Format 1 - srcBegin = 9D26 - srcEnd = 9D28 - mappingOffset = 1805 - Mapping = - E4EC FFFD E4E5 -End of Item 0980 - -Begin of Item 0981 - Format 2 - srcBegin = 9D3B - destBegin = FBF8 -End of Item 0981 - -Begin of Item 0982 - Format 2 - srcBegin = 9D51 - destBegin = CCBB -End of Item 0982 - -Begin of Item 0983 - Format 1 - srcBegin = 9D5D - srcEnd = 9D61 - mappingOffset = 1808 - Mapping = - E4BD FFFD FFFD CDDC D9F7 -End of Item 0983 - -Begin of Item 0984 - Format 2 - srcBegin = 9D6C - destBegin = DDDF -End of Item 0984 - -Begin of Item 0985 - Format 2 - srcBegin = 9D72 - destBegin = EDCE -End of Item 0985 - -Begin of Item 0986 - Format 2 - srcBegin = 9DA9 - destBegin = D9D0 -End of Item 0986 - -Begin of Item 0987 - Format 2 - srcBegin = 9DAF - destBegin = E5A3 -End of Item 0987 - -Begin of Item 0988 - Format 2 - srcBegin = 9DB4 - destBegin = F9CD -End of Item 0988 - -Begin of Item 0989 - Format 2 - srcBegin = 9DC4 - destBegin = CDAE -End of Item 0989 - -Begin of Item 098A - Format 2 - srcBegin = 9DD7 - destBegin = CFCE -End of Item 098A - -Begin of Item 098B - Format 2 - srcBegin = 9DF2 - destBegin = F6AF -End of Item 098B - -Begin of Item 098C - Format 1 - srcBegin = 9DF8 - srcEnd = 9DFA - mappingOffset = 180D - Mapping = - FDD3 EBED D6DC -End of Item 098C - -Begin of Item 098D - Format 2 - srcBegin = 9E1A - destBegin = E5A4 -End of Item 098D - -Begin of Item 098E - Format 2 - srcBegin = 9E1E - destBegin = D5B6 -End of Item 098E - -Begin of Item 098F - Format 2 - srcBegin = 9E75 - destBegin = D6DD -End of Item 098F - -Begin of Item 0990 - Format 2 - srcBegin = 9E79 - destBegin = F9E9 -End of Item 0990 - -Begin of Item 0991 - Format 1 - srcBegin = 9E7D - srcEnd = 9E7F - mappingOffset = 1810 - Mapping = - E7A4 FFFD D6E3 -End of Item 0991 - -Begin of Item 0992 - Format 1 - srcBegin = 9E92 - srcEnd = 9E93 - mappingOffset = 1813 - Mapping = - D1CB D6E4 -End of Item 0992 - -Begin of Item 0993 - Format 2 - srcBegin = 9E97 - destBegin = D5F2 -End of Item 0993 - -Begin of Item 0994 - Format 1 - srcBegin = 9E9D - srcEnd = 9E9F - mappingOffset = 1815 - Mapping = - DEFA FFFD D7F8 -End of Item 0994 - -Begin of Item 0995 - Format 2 - srcBegin = 9EA5 - destBegin = D8EA -End of Item 0995 - -Begin of Item 0996 - Format 1 - srcBegin = 9EB4 - srcEnd = 9EB5 - mappingOffset = 1818 - Mapping = - CFD5 D8FD -End of Item 0996 - -Begin of Item 0997 - Format 1 - srcBegin = 9EBB - srcEnd = 9EBE - mappingOffset = 181A - Mapping = - D8AB FFFD FFFD FDCB -End of Item 0997 - -Begin of Item 0998 - Format 2 - srcBegin = 9EC3 - destBegin = FCDC -End of Item 0998 - -Begin of Item 0999 - Format 1 - srcBegin = 9ECD - srcEnd = 9ED4 - mappingOffset = 181E - Mapping = - E0A8 D5F3 FFFD FFFD FDD9 FFFD FFFD CCA3 -End of Item 0999 - -Begin of Item 099A - Format 1 - srcBegin = 9ED8 - srcEnd = 9EDE - mappingOffset = 1826 - Mapping = - D9F9 FFFD FFFD D3EA F5F5 FFFD EFC7 -End of Item 099A - -Begin of Item 099B - Format 2 - srcBegin = 9EE8 - destBegin = D3DA -End of Item 099B - -Begin of Item 099C - Format 2 - srcBegin = 9EF4 - destBegin = DABD -End of Item 099C - -Begin of Item 099D - Format 1 - srcBegin = 9F07 - srcEnd = 9F08 - mappingOffset = 182D - Mapping = - E8A8 DCAF -End of Item 099D - -Begin of Item 099E - Format 2 - srcBegin = 9F0E - destBegin = F0A3 -End of Item 099E - -Begin of Item 099F - Format 2 - srcBegin = 9F13 - destBegin = CDD5 -End of Item 099F - -Begin of Item 09A0 - Format 2 - srcBegin = 9F20 - destBegin = E0A9 -End of Item 09A0 - -Begin of Item 09A1 - Format 2 - srcBegin = 9F3B - destBegin = DEAC -End of Item 09A1 - -Begin of Item 09A2 - Format 1 - srcBegin = 9F4A - srcEnd = 9F4E - mappingOffset = 182F - Mapping = - F0BA EEB1 FFFD FFFD EEB2 -End of Item 09A2 - -Begin of Item 09A3 - Format 2 - srcBegin = 9F52 - destBegin = F6CD -End of Item 09A3 - -Begin of Item 09A4 - Format 1 - srcBegin = 9F5F - srcEnd = 9F61 - mappingOffset = 1834 - Mapping = - EED2 FFFD D6C6 -End of Item 09A4 - -Begin of Item 09A5 - Format 1 - srcBegin = 9F67 - srcEnd = 9F6C - mappingOffset = 1837 - Mapping = - E0E5 FFFD FFFD F3BB FFFD E5E1 -End of Item 09A5 - -Begin of Item 09A6 - Format 2 - srcBegin = 9F77 - destBegin = E4CB -End of Item 09A6 - -Begin of Item 09A7 - Format 1 - srcBegin = 9F8D - srcEnd = 9F90 - mappingOffset = 183D - Mapping = - D7A3 FFFD FFFD DBC2 -End of Item 09A7 - -Begin of Item 09A8 - Format 2 - srcBegin = 9F95 - destBegin = CAFE -End of Item 09A8 - -Begin of Item 09A9 - Format 2 - srcBegin = 9F9C - destBegin = CFCF -End of Item 09A9 - -Begin of Item 09AA - Format 1 - srcBegin = AC00 - srcEnd = AC0F - mappingOffset = 1841 - Mapping = - B0A1 B0A2 8141 8142 B0A3 8143 8144 B0A4 - B0A5 B0A6 B0A7 8145 8146 8147 8148 8149 -End of Item 09AA - -Begin of Item 09AB - Format 1 - srcBegin = AC18 - srcEnd = AC24 - mappingOffset = 1851 - Mapping = - 814A B0B0 B0B1 B0B2 B0B3 B0B4 814B 814C - B0B5 814D 814E 814F B0B6 -End of Item 09AB - -Begin of Item 09AC - Format 1 - srcBegin = AC2C - srcEnd = AC40 - mappingOffset = 185E - Mapping = - B0B7 B0B8 8157 B0B9 B0BA B0BB 8158 8159 - 815A 8161 8162 8163 B0BC B0BD 8164 8165 - B0BE 8166 8167 8168 B0BF -End of Item 09AC - -Begin of Item 09AD - Format 1 - srcBegin = AC4B - srcEnd = AC4D - mappingOffset = 1873 - Mapping = - B0C0 8173 B0C1 -End of Item 09AD - -Begin of Item 09AE - Format 1 - srcBegin = AC54 - srcEnd = AC5C - mappingOffset = 1876 - Mapping = - B0C2 817A 8181 8182 B0C3 8183 8184 8185 - B0C4 -End of Item 09AE - -Begin of Item 09AF - Format 1 - srcBegin = AC70 - srcEnd = AC94 - mappingOffset = 187F - Mapping = - B0C5 B0C6 8199 819A B0C7 819B 819C B0C8 - B0C9 819D B0CA 819E 819F 81A0 81A1 81A2 - B0CB B0CC 81A3 B0CD B0CE B0CF B0D0 81A4 - 81A5 B0D1 B0D2 B0D3 B0D4 81A6 81A7 81A8 - B0D5 81A9 81AA 81AB B0D6 -End of Item 09AF - -Begin of Item 09B0 - Format 1 - srcBegin = AC9C - srcEnd = ACA1 - mappingOffset = 18A4 - Mapping = - B0D7 B0D8 81B3 B0D9 B0DA B0DB -End of Item 09B0 - -Begin of Item 09B1 - Format 1 - srcBegin = ACA8 - srcEnd = ACB0 - mappingOffset = 18AA - Mapping = - B0DC B0DD B0DE 81BA B0DF 81BB 81BC B0E0 - B0E1 -End of Item 09B1 - -Begin of Item 09B2 - Format 1 - srcBegin = ACB8 - srcEnd = ACCC - mappingOffset = 18B3 - Mapping = - B0E2 B0E3 81C4 B0E4 B0E5 B0E6 81C5 81C6 - 81C7 B0E7 81C8 81C9 B0E8 81CA 81CB 81CC - B0E9 81CD 81CE 81CF B0EA -End of Item 09B2 - -Begin of Item 09B3 - Format 1 - srcBegin = ACD5 - srcEnd = ACD7 - mappingOffset = 18C8 - Mapping = - B0EB 81D8 B0EC -End of Item 09B3 - -Begin of Item 09B4 - Format 1 - srcBegin = ACE0 - srcEnd = AD20 - mappingOffset = 18CB - Mapping = - B0ED B0EE 81E1 81E2 B0EF 81E3 81E4 B0F0 - B0F1 81E5 B0F2 81E6 B0F3 81E7 81E8 B0F4 - B0F5 B0F6 81E9 B0F7 81EA B0F8 B0F9 81EB - 81EC 81ED 81EE 81EF B0FA B0FB 81F0 81F1 - B0FC 81F2 81F3 81F4 B0FD 81F5 B0FE 81F6 - 81F7 81F8 81F9 81FA B1A1 B1A2 81FB B1A3 - 81FC B1A4 81FD 81FE 8241 8242 8243 8244 - B1A5 8245 8246 8247 B1A6 8248 8249 824A - B1A7 -End of Item 09B4 - -Begin of Item 09B5 - Format 1 - srcBegin = AD29 - srcEnd = AD2D - mappingOffset = 190C - Mapping = - B1A8 8253 8254 B1A9 B1AA -End of Item 09B5 - -Begin of Item 09B6 - Format 1 - srcBegin = AD34 - srcEnd = AD3C - mappingOffset = 1911 - Mapping = - B1AB B1AC 8261 8262 B1AD 8263 8264 8265 - B1AE -End of Item 09B6 - -Begin of Item 09B7 - Format 1 - srcBegin = AD44 - srcEnd = AD49 - mappingOffset = 191A - Mapping = - B1AF B1B0 826D B1B1 826E B1B2 -End of Item 09B7 - -Begin of Item 09B8 - Format 1 - srcBegin = AD50 - srcEnd = AD58 - mappingOffset = 1920 - Mapping = - B1B3 8275 8276 8277 B1B4 8278 8279 827A - B1B5 -End of Item 09B8 - -Begin of Item 09B9 - Format 1 - srcBegin = AD61 - srcEnd = AD63 - mappingOffset = 1929 - Mapping = - B1B6 8289 B1B7 -End of Item 09B9 - -Begin of Item 09BA - Format 1 - srcBegin = AD6C - srcEnd = AD90 - mappingOffset = 192C - Mapping = - B1B8 B1B9 8292 8293 B1BA 8294 8295 B1BB - B1BC B1BD B1BE 8296 8297 8298 8299 B1BF - B1C0 B1C1 829A B1C2 829B B1C3 B1C4 829C - 829D 829E 829F 82A0 B1C5 B1C6 82A1 82A2 - B1C7 82A3 82A4 82A5 B1C8 -End of Item 09BA - -Begin of Item 09BB - Format 1 - srcBegin = AD9C - srcEnd = AD9D - mappingOffset = 1951 - Mapping = - B1C9 B1CA -End of Item 09BB - -Begin of Item 09BC - Format 2 - srcBegin = ADA4 - destBegin = B1CB -End of Item 09BC - -Begin of Item 09BD - Format 2 - srcBegin = ADB7 - destBegin = B1CC -End of Item 09BD - -Begin of Item 09BE - Format 1 - srcBegin = ADC0 - srcEnd = ADC8 - mappingOffset = 1953 - Mapping = - B1CD B1CE 82D1 82D2 B1CF 82D3 82D4 82D5 - B1D0 -End of Item 09BE - -Begin of Item 09BF - Format 1 - srcBegin = ADD0 - srcEnd = ADD3 - mappingOffset = 195C - Mapping = - B1D1 B1D2 82DD B1D3 -End of Item 09BF - -Begin of Item 09C0 - Format 1 - srcBegin = ADDC - srcEnd = ADE4 - mappingOffset = 1960 - Mapping = - B1D4 82E6 82E7 82E8 B1D5 82E9 82EA 82EB - B1D6 -End of Item 09C0 - -Begin of Item 09C1 - Format 1 - srcBegin = ADF8 - srcEnd = AE01 - mappingOffset = 1969 - Mapping = - B1D7 B1D8 8341 8342 B1D9 8343 8344 B1DA - B1DB B1DC -End of Item 09C1 - -Begin of Item 09C2 - Format 1 - srcBegin = AE08 - srcEnd = AE0D - mappingOffset = 1973 - Mapping = - B1DD B1DE 834B B1DF 834C B1E0 -End of Item 09C2 - -Begin of Item 09C3 - Format 2 - srcBegin = AE14 - destBegin = B1E1 -End of Item 09C3 - -Begin of Item 09C4 - Format 1 - srcBegin = AE30 - srcEnd = AE70 - mappingOffset = 1979 - Mapping = - B1E2 B1E3 8374 8375 B1E4 8376 8377 B1E5 - B1E6 8378 B1E7 8379 837A 8381 8382 8383 - B1E8 B1E9 8384 B1EA 8385 B1EB B1EC 8386 - 8387 8388 B1ED 8389 B1EE B1EF B1F0 838A - B1F1 838B 838C 838D B1F2 838E B1F3 838F - 8390 8391 8392 8393 B1F4 B1F5 8394 B1F6 - B1F7 B1F8 8395 8396 8397 B1F9 8398 8399 - B1FA B1FB 839A 839B B1FC 839C 839D 839E - B1FD -End of Item 09C4 - -Begin of Item 09C5 - Format 1 - srcBegin = AE78 - srcEnd = AE7D - mappingOffset = 19BA - Mapping = - B1FE B2A1 83A6 B2A2 B2A3 B2A4 -End of Item 09C5 - -Begin of Item 09C6 - Format 1 - srcBegin = AE84 - srcEnd = AE85 - mappingOffset = 19C0 - Mapping = - B2A5 B2A6 -End of Item 09C6 - -Begin of Item 09C7 - Format 2 - srcBegin = AE8C - destBegin = B2A7 -End of Item 09C7 - -Begin of Item 09C8 - Format 1 - srcBegin = AEBC - srcEnd = AEC4 - mappingOffset = 19C2 - Mapping = - B2A8 B2A9 B2AA 83E2 B2AB 83E3 83E4 83E5 - B2AC -End of Item 09C8 - -Begin of Item 09C9 - Format 1 - srcBegin = AECC - srcEnd = AED1 - mappingOffset = 19CB - Mapping = - B2AD B2AE 83ED B2AF B2B0 B2B1 -End of Item 09C9 - -Begin of Item 09CA - Format 1 - srcBegin = AED8 - srcEnd = AEDC - mappingOffset = 19D1 - Mapping = - B2B2 B2B3 83F4 83F5 B2B4 -End of Item 09CA - -Begin of Item 09CB - Format 1 - srcBegin = AEE6 - srcEnd = AEED - mappingOffset = 19D6 - Mapping = - 8441 8442 B2B5 8443 8444 B2B6 8445 B2B7 -End of Item 09CB - -Begin of Item 09CC - Format 1 - srcBegin = AEF4 - srcEnd = AEFC - mappingOffset = 19DE - Mapping = - B2B8 844C 844D 844E B2B9 844F 8450 8451 - B2BA -End of Item 09CC - -Begin of Item 09CD - Format 1 - srcBegin = AF06 - srcEnd = AF10 - mappingOffset = 19E7 - Mapping = - 8461 B2BB B2BC 8462 8463 8464 8465 B2BD - 8466 8467 B2BE -End of Item 09CD - -Begin of Item 09CE - Format 1 - srcBegin = AF2C - srcEnd = AF34 - mappingOffset = 19F2 - Mapping = - B2BF B2C0 8489 848A B2C1 848B B2C2 848C - B2C3 -End of Item 09CE - -Begin of Item 09CF - Format 1 - srcBegin = AF3C - srcEnd = AF49 - mappingOffset = 19FB - Mapping = - B2C4 B2C5 8494 B2C6 8495 B2C7 B2C8 B2C9 - 8496 8497 8498 8499 B2CA B2CB -End of Item 09CF - -Begin of Item 09D0 - Format 2 - srcBegin = AF50 - destBegin = B2CC -End of Item 09D0 - -Begin of Item 09D1 - Format 1 - srcBegin = AF5C - srcEnd = AF5D - mappingOffset = 1A09 - Mapping = - B2CD B2CE -End of Item 09D1 - -Begin of Item 09D2 - Format 1 - srcBegin = AF64 - srcEnd = AF65 - mappingOffset = 1A0B - Mapping = - B2CF B2D0 -End of Item 09D2 - -Begin of Item 09D3 - Format 2 - srcBegin = AF79 - destBegin = B2D1 -End of Item 09D3 - -Begin of Item 09D4 - Format 1 - srcBegin = AF80 - srcEnd = AF88 - mappingOffset = 1A0D - Mapping = - B2D2 84CA 84CB 84CC B2D3 84CD 84CE 84CF - B2D4 -End of Item 09D4 - -Begin of Item 09D5 - Format 1 - srcBegin = AF90 - srcEnd = AF95 - mappingOffset = 1A16 - Mapping = - B2D5 B2D6 84D7 84D8 84D9 B2D7 -End of Item 09D5 - -Begin of Item 09D6 - Format 2 - srcBegin = AF9C - destBegin = B2D8 -End of Item 09D6 - -Begin of Item 09D7 - Format 1 - srcBegin = AFB8 - srcEnd = AFC0 - mappingOffset = 1A1C - Mapping = - B2D9 B2DA 84FB 84FC B2DB 84FD 84FE 8541 - B2DC -End of Item 09D7 - -Begin of Item 09D8 - Format 1 - srcBegin = AFC7 - srcEnd = AFD4 - mappingOffset = 1A25 - Mapping = - B2DD B2DE B2DF 8548 B2E0 8549 B2E1 B2E2 - 854A 854B 854C 854D 854E B2E3 -End of Item 09D8 - -Begin of Item 09D9 - Format 1 - srcBegin = AFDC - srcEnd = AFE1 - mappingOffset = 1A33 - Mapping = - B2E4 8556 8557 8558 8559 855A -End of Item 09D9 - -Begin of Item 09DA - Format 1 - srcBegin = AFE8 - srcEnd = AFE9 - mappingOffset = 1A39 - Mapping = - B2E5 B2E6 -End of Item 09DA - -Begin of Item 09DB - Format 1 - srcBegin = AFF0 - srcEnd = AFF8 - mappingOffset = 1A3B - Mapping = - B2E7 B2E8 856D 856E B2E9 856F 8570 8571 - B2EA -End of Item 09DB - -Begin of Item 09DC - Format 1 - srcBegin = B000 - srcEnd = B004 - mappingOffset = 1A44 - Mapping = - B2EB B2EC 8579 857A B2ED -End of Item 09DC - -Begin of Item 09DD - Format 1 - srcBegin = B00C - srcEnd = B014 - mappingOffset = 1A49 - Mapping = - B2EE 8588 8589 858A B2EF 858B 858C 858D - B2F0 -End of Item 09DD - -Begin of Item 09DE - Format 1 - srcBegin = B01C - srcEnd = B01D - mappingOffset = 1A52 - Mapping = - B2F1 B2F2 -End of Item 09DE - -Begin of Item 09DF - Format 2 - srcBegin = B028 - destBegin = B2F3 -End of Item 09DF - -Begin of Item 09E0 - Format 1 - srcBegin = B044 - srcEnd = B05D - mappingOffset = 1A54 - Mapping = - B2F4 B2F5 85BA 85BB B2F6 85BC B2F7 85BD - B2F8 85BE B2F9 85BF 85C0 85C1 85C2 B2FA - B2FB B2FC 85C3 B2FD 85C4 B2FE 85C5 85C6 - 85C7 B3A1 -End of Item 09E0 - -Begin of Item 09E1 - Format 1 - srcBegin = B07C - srcEnd = B084 - mappingOffset = 1A6E - Mapping = - B3A2 B3A3 85E6 85E7 B3A4 85E8 85E9 85EA - B3A5 -End of Item 09E1 - -Begin of Item 09E2 - Format 1 - srcBegin = B08C - srcEnd = B091 - mappingOffset = 1A77 - Mapping = - B3A6 B3A7 85F2 B3A8 85F3 B3A9 -End of Item 09E2 - -Begin of Item 09E3 - Format 1 - srcBegin = B098 - srcEnd = B0BC - mappingOffset = 1A7D - Mapping = - B3AA B3AB B3AC 85FA B3AD 85FB 85FC B3AE - B3AF B3B0 B3B1 85FD 85FE 8641 8642 8643 - B3B2 B3B3 8644 B3B4 B3B5 B3B6 B3B7 B3B8 - 8645 B3B9 8646 B3BA B3BB B3BC 8647 8648 - B3BD 8649 864A 864B B3BE -End of Item 09E3 - -Begin of Item 09E4 - Format 1 - srcBegin = B0C4 - srcEnd = B0C9 - mappingOffset = 1AA2 - Mapping = - B3BF B3C0 8653 B3C1 B3C2 B3C3 -End of Item 09E4 - -Begin of Item 09E5 - Format 1 - srcBegin = B0D0 - srcEnd = B0D8 - mappingOffset = 1AA8 - Mapping = - B3C4 B3C5 865A 8661 B3C6 8662 8663 8664 - B3C7 -End of Item 09E5 - -Begin of Item 09E6 - Format 1 - srcBegin = B0E0 - srcEnd = B0E5 - mappingOffset = 1AB1 - Mapping = - B3C8 866C 866D 866E 866F B3C9 -End of Item 09E6 - -Begin of Item 09E7 - Format 1 - srcBegin = B108 - srcEnd = B12C - mappingOffset = 1AB7 - Mapping = - B3CA B3CB 8698 B3CC B3CD 8699 869A 869B - B3CE 869C B3CF B3D0 869D 869E 869F 86A0 - B3D1 B3D2 86A1 B3D3 B3D4 B3D5 86A2 86A3 - 86A4 86A5 86A6 B3D6 B3D7 B3D8 86A7 86A8 - B3D9 86A9 86AA 86AB B3DA -End of Item 09E7 - -Begin of Item 09E8 - Format 1 - srcBegin = B134 - srcEnd = B139 - mappingOffset = 1ADC - Mapping = - B3DB B3DC 86B3 B3DD B3DE B3DF -End of Item 09E8 - -Begin of Item 09E9 - Format 1 - srcBegin = B140 - srcEnd = B148 - mappingOffset = 1AE2 - Mapping = - B3E0 B3E1 86BA 86BB B3E2 86BC 86BD 86BE - B3E3 -End of Item 09E9 - -Begin of Item 09EA - Format 1 - srcBegin = B150 - srcEnd = B160 - mappingOffset = 1AEB - Mapping = - B3E4 B3E5 86C6 86C7 B3E6 B3E7 86C8 86C9 - B3E8 86CA 86CB 86CC B3E9 86CD 86CE 86CF - B3EA -End of Item 09EA - -Begin of Item 09EB - Format 1 - srcBegin = B178 - srcEnd = B19D - mappingOffset = 1AFC - Mapping = - B3EB B3EC 86E7 86E8 B3ED 86E9 86EA 86EB - B3EE 86EC B3EF 86ED 86EE 86EF 86F0 86F1 - B3F0 B3F1 86F2 B3F2 86F3 B3F3 86F4 86F5 - 86F6 86F7 B3F4 B3F5 B3F6 86F8 86F9 86FA - B3F7 86FB 86FC 86FD B3F8 86FE -End of Item 09EB - -Begin of Item 09EC - Format 2 - srcBegin = B1A8 - destBegin = B3F9 -End of Item 09EC - -Begin of Item 09ED - Format 1 - srcBegin = B1CC - srcEnd = B1D5 - mappingOffset = 1B22 - Mapping = - B3FA 8774 8775 8776 B3FB 8777 8778 8779 - B3FC 877A -End of Item 09ED - -Begin of Item 09EE - Format 1 - srcBegin = B1DC - srcEnd = B1DF - mappingOffset = 1B2C - Mapping = - B3FD B3FE 8787 B4A1 -End of Item 09EE - -Begin of Item 09EF - Format 1 - srcBegin = B1E8 - srcEnd = B1F0 - mappingOffset = 1B30 - Mapping = - B4A2 B4A3 8790 8791 B4A4 8792 8793 8794 - B4A5 -End of Item 09EF - -Begin of Item 09F0 - Format 1 - srcBegin = B1F9 - srcEnd = B1FD - mappingOffset = 1B39 - Mapping = - B4A6 879D B4A7 879E B4A8 -End of Item 09F0 - -Begin of Item 09F1 - Format 1 - srcBegin = B204 - srcEnd = B20C - mappingOffset = 1B3E - Mapping = - B4A9 B4AA 87A5 87A6 B4AB 87A7 87A8 B4AC - B4AD -End of Item 09F1 - -Begin of Item 09F2 - Format 1 - srcBegin = B214 - srcEnd = B219 - mappingOffset = 1B47 - Mapping = - B4AE B4AF 87B0 B4B0 87B1 B4B1 -End of Item 09F2 - -Begin of Item 09F3 - Format 2 - srcBegin = B220 - destBegin = B4B2 -End of Item 09F3 - -Begin of Item 09F4 - Format 2 - srcBegin = B234 - destBegin = B4B3 -End of Item 09F4 - -Begin of Item 09F5 - Format 2 - srcBegin = B23C - destBegin = B4B4 -End of Item 09F5 - -Begin of Item 09F6 - Format 1 - srcBegin = B258 - srcEnd = B260 - mappingOffset = 1B4D - Mapping = - B4B5 87ED 87EE 87EF B4B6 87F0 87F1 87F2 - B4B7 -End of Item 09F6 - -Begin of Item 09F7 - Format 1 - srcBegin = B268 - srcEnd = B275 - mappingOffset = 1B56 - Mapping = - B4B8 B4B9 87FA 87FB 87FC 87FD 87FE 8841 - 8842 8843 8844 8845 B4BA B4BB -End of Item 09F7 - -Begin of Item 09F8 - Format 2 - srcBegin = B27C - destBegin = B4BC -End of Item 09F8 - -Begin of Item 09F9 - Format 1 - srcBegin = B284 - srcEnd = B2B7 - mappingOffset = 1B64 - Mapping = - B4BD B4BE 8853 8854 8855 B4BF 8856 8857 - 8858 8859 885A 8861 B4C0 B4C1 8862 8863 - B4C2 8864 8865 8866 B4C3 B4C4 B4C5 8867 - 8868 8869 886A 886B B4C6 B4C7 886C B4C8 - 886D B4C9 B4CA 886E 886F 8870 B4CB 8871 - B4CC 8872 8873 8874 B4CD 8875 8876 8877 - B4CE 8878 8879 887A -End of Item 09F9 - -Begin of Item 09FA - Format 1 - srcBegin = B2C8 - srcEnd = B308 - mappingOffset = 1B98 - Mapping = - B4CF B4D0 8891 8892 B4D1 8893 8894 8895 - B4D2 8896 B4D3 8897 8898 8899 889A 889B - B4D4 B4D5 889C B4D6 889D B4D7 889E 889F - 88A0 88A1 B4D8 88A2 B4D9 B4DA B4DB 88A3 - B4DC 88A4 88A5 B4DD B4DE B4DF B4E0 B4E1 - 88A6 88A7 88A8 B4E2 B4E3 B4E4 88A9 B4E5 - B4E6 B4E7 B4E8 B4E9 88AA 88AB 88AC B4EA - B4EB B4EC 88AD 88AE B4ED 88AF 88B0 88B1 - B4EE -End of Item 09FA - -Begin of Item 09FB - Format 1 - srcBegin = B310 - srcEnd = B315 - mappingOffset = 1BD9 - Mapping = - B4EF B4F0 88B9 B4F1 B4F2 B4F3 -End of Item 09FB - -Begin of Item 09FC - Format 2 - srcBegin = B31C - destBegin = B4F4 -End of Item 09FC - -Begin of Item 09FD - Format 1 - srcBegin = B354 - srcEnd = B378 - mappingOffset = 1BDF - Mapping = - B4F5 B4F6 B4F7 88F7 B4F8 88F8 88F9 B4F9 - B4FA 88FA B4FB B4FC 88FB 88FC 88FD 88FE - B4FD B4FE 8941 B5A1 8942 B5A2 8943 B5A3 - 8944 8945 B5A4 8946 B5A5 B5A6 8947 8948 - B5A7 8949 894A 894B B5A8 -End of Item 09FD - -Begin of Item 09FE - Format 1 - srcBegin = B380 - srcEnd = B385 - mappingOffset = 1C04 - Mapping = - B5A9 B5AA 8953 B5AB B5AC B5AD -End of Item 09FE - -Begin of Item 09FF - Format 1 - srcBegin = B38C - srcEnd = B394 - mappingOffset = 1C0A - Mapping = - B5AE 895A 8961 8962 B5AF 8963 8964 8965 - B5B0 -End of Item 09FF - -Begin of Item 0A00 - Format 1 - srcBegin = B3A0 - srcEnd = B3A1 - mappingOffset = 1C13 - Mapping = - B5B1 B5B2 -End of Item 0A00 - -Begin of Item 0A01 - Format 1 - srcBegin = B3A8 - srcEnd = B3AD - mappingOffset = 1C15 - Mapping = - B5B3 8977 8978 8979 B5B4 897A -End of Item 0A01 - -Begin of Item 0A02 - Format 1 - srcBegin = B3C4 - srcEnd = B3E8 - mappingOffset = 1C1B - Mapping = - B5B5 B5B6 8997 8998 B5B7 8999 899A B5B8 - B5B9 899B B5BA 899C B5BB 899D 899E 899F - B5BC B5BD 89A0 B5BE 89A1 B5BF 89A2 B5C0 - 89A3 B5C1 89A4 89A5 B5C2 89A6 89A7 89A8 - B5C3 89A9 89AA 89AB B5C4 -End of Item 0A02 - -Begin of Item 0A03 - Format 2 - srcBegin = B3FC - destBegin = B5C5 -End of Item 0A03 - -Begin of Item 0A04 - Format 2 - srcBegin = B410 - destBegin = B5C6 -End of Item 0A04 - -Begin of Item 0A05 - Format 1 - srcBegin = B418 - srcEnd = B420 - mappingOffset = 1C40 - Mapping = - B5C7 89D9 89DA 89DB B5C8 89DC 89DD 89DE - B5C9 -End of Item 0A05 - -Begin of Item 0A06 - Format 1 - srcBegin = B428 - srcEnd = B42B - mappingOffset = 1C49 - Mapping = - B5CA B5CB 89E6 B5CC -End of Item 0A06 - -Begin of Item 0A07 - Format 2 - srcBegin = B434 - destBegin = B5CD -End of Item 0A07 - -Begin of Item 0A08 - Format 1 - srcBegin = B450 - srcEnd = B458 - mappingOffset = 1C4D - Mapping = - B5CE B5CF 8A4C 8A4D B5D0 8A4E 8A4F 8A50 - B5D1 -End of Item 0A08 - -Begin of Item 0A09 - Format 1 - srcBegin = B460 - srcEnd = B46C - mappingOffset = 1C56 - Mapping = - B5D2 B5D3 8A58 B5D4 8A59 B5D5 8A5A 8A61 - 8A62 8A63 8A64 8A65 B5D6 -End of Item 0A09 - -Begin of Item 0A0A - Format 1 - srcBegin = B480 - srcEnd = B488 - mappingOffset = 1C63 - Mapping = - B5D7 8A79 8A7A 8A81 8A82 8A83 8A84 8A85 - B5D8 -End of Item 0A0A - -Begin of Item 0A0B - Format 2 - srcBegin = B49D - destBegin = B5D9 -End of Item 0A0B - -Begin of Item 0A0C - Format 1 - srcBegin = B4A4 - srcEnd = B4AC - mappingOffset = 1C6C - Mapping = - B5DA 8AA0 8AA1 8AA2 B5DB 8AA3 8AA4 8AA5 - B5DC -End of Item 0A0C - -Begin of Item 0A0D - Format 1 - srcBegin = B4B5 - srcEnd = B4B9 - mappingOffset = 1C75 - Mapping = - B5DD 8AAE B5DE 8AAF B5DF -End of Item 0A0D - -Begin of Item 0A0E - Format 1 - srcBegin = B4C0 - srcEnd = B4C8 - mappingOffset = 1C7A - Mapping = - B5E0 8AB6 8AB7 8AB8 B5E1 8AB9 8ABA 8ABB - B5E2 -End of Item 0A0E - -Begin of Item 0A0F - Format 1 - srcBegin = B4D0 - srcEnd = B4D5 - mappingOffset = 1C83 - Mapping = - B5E3 8AC3 8AC4 8AC5 8AC6 B5E4 -End of Item 0A0F - -Begin of Item 0A10 - Format 1 - srcBegin = B4DC - srcEnd = B4F1 - mappingOffset = 1C89 - Mapping = - B5E5 B5E6 8ACD 8ACE B5E7 8ACF 8AD0 B5E8 - B5E9 8AD1 B5EA 8AD2 8AD3 8AD4 8AD5 8AD6 - B5EB B5EC 8AD7 B5ED 8AD8 B5EE -End of Item 0A10 - -Begin of Item 0A11 - Format 2 - srcBegin = B4F8 - destBegin = B5EF -End of Item 0A11 - -Begin of Item 0A12 - Format 1 - srcBegin = B514 - srcEnd = B51D - mappingOffset = 1C9F - Mapping = - B5F0 B5F1 8AFA 8AFB B5F2 8AFC 8AFD B5F3 - B5F4 8AFE -End of Item 0A12 - -Begin of Item 0A13 - Format 1 - srcBegin = B524 - srcEnd = B538 - mappingOffset = 1CA9 - Mapping = - B5F5 B5F6 8B47 B5F7 B5F8 B5F9 B5FA 8B48 - 8B49 8B4A 8B4B 8B4C B5FB B5FC 8B4D 8B4E - B5FD 8B4F 8B50 8B51 B5FE -End of Item 0A13 - -Begin of Item 0A14 - Format 1 - srcBegin = B540 - srcEnd = B554 - mappingOffset = 1CBE - Mapping = - B6A1 B6A2 8B59 B6A3 B6A4 B6A5 8B5A 8B61 - 8B62 8B63 8B64 B6A6 B6A7 B6A8 8B65 8B66 - B6A9 8B67 8B68 8B69 B6AA -End of Item 0A14 - -Begin of Item 0A15 - Format 1 - srcBegin = B55C - srcEnd = B561 - mappingOffset = 1CD3 - Mapping = - B6AB B6AC 8B71 B6AD B6AE B6AF -End of Item 0A15 - -Begin of Item 0A16 - Format 1 - srcBegin = B5A0 - srcEnd = B5C4 - mappingOffset = 1CD9 - Mapping = - B6B0 B6B1 8BB6 8BB7 B6B2 8BB8 8BB9 8BBA - B6B3 8BBB B6B4 B6B5 8BBC 8BBD 8BBE 8BBF - B6B6 B6B7 8BC0 B6B8 B6B9 B6BA 8BC1 8BC2 - 8BC3 8BC4 8BC5 B6BB B6BC B6BD 8BC6 8BC7 - B6BE 8BC8 8BC9 8BCA B6BF -End of Item 0A16 - -Begin of Item 0A17 - Format 1 - srcBegin = B5CC - srcEnd = B5D1 - mappingOffset = 1CFE - Mapping = - B6C0 B6C1 8BD2 B6C2 B6C3 B6C4 -End of Item 0A17 - -Begin of Item 0A18 - Format 2 - srcBegin = B5D8 - destBegin = B6C5 -End of Item 0A18 - -Begin of Item 0A19 - Format 2 - srcBegin = B5EC - destBegin = B6C6 -End of Item 0A19 - -Begin of Item 0A1A - Format 1 - srcBegin = B610 - srcEnd = B61D - mappingOffset = 1D04 - Mapping = - B6C7 B6C8 8C51 8C52 B6C9 8C53 8C54 8C55 - B6CA 8C56 8C57 8C58 8C59 8C5A -End of Item 0A1A - -Begin of Item 0A1B - Format 2 - srcBegin = B625 - destBegin = B6CB -End of Item 0A1B - -Begin of Item 0A1C - Format 2 - srcBegin = B62C - destBegin = B6CC -End of Item 0A1C - -Begin of Item 0A1D - Format 2 - srcBegin = B634 - destBegin = B6CD -End of Item 0A1D - -Begin of Item 0A1E - Format 2 - srcBegin = B648 - destBegin = B6CE -End of Item 0A1E - -Begin of Item 0A1F - Format 1 - srcBegin = B664 - srcEnd = B668 - mappingOffset = 1D12 - Mapping = - B6CF 8CA9 8CAA 8CAB B6D0 -End of Item 0A1F - -Begin of Item 0A20 - Format 1 - srcBegin = B69C - srcEnd = B6A4 - mappingOffset = 1D17 - Mapping = - B6D1 B6D2 8CDF 8CE0 B6D3 8CE1 8CE2 8CE3 - B6D4 -End of Item 0A20 - -Begin of Item 0A21 - Format 1 - srcBegin = B6AB - srcEnd = B6B1 - mappingOffset = 1D20 - Mapping = - B6D5 B6D6 8CEA 8CEB 8CEC 8CED B6D7 -End of Item 0A21 - -Begin of Item 0A22 - Format 2 - srcBegin = B6D4 - destBegin = B6D8 -End of Item 0A22 - -Begin of Item 0A23 - Format 1 - srcBegin = B6F0 - srcEnd = B705 - mappingOffset = 1D27 - Mapping = - B6D9 8D73 8D74 8D75 B6DA 8D76 8D77 8D78 - B6DB 8D79 8D7A 8D81 8D82 8D83 8D84 8D85 - B6DC B6DD 8D86 8D87 8D88 B6DE -End of Item 0A23 - -Begin of Item 0A24 - Format 1 - srcBegin = B728 - srcEnd = B730 - mappingOffset = 1D3D - Mapping = - B6DF B6E0 8DAB 8DAC B6E1 8DAD 8DAE B6E2 - B6E3 -End of Item 0A24 - -Begin of Item 0A25 - Format 1 - srcBegin = B738 - srcEnd = B73B - mappingOffset = 1D46 - Mapping = - B6E4 B6E5 8DB6 B6E6 -End of Item 0A25 - -Begin of Item 0A26 - Format 1 - srcBegin = B744 - srcEnd = B74C - mappingOffset = 1D4A - Mapping = - B6E7 8DBF 8DC0 8DC1 B6E8 8DC2 8DC3 8DC4 - B6E9 -End of Item 0A26 - -Begin of Item 0A27 - Format 1 - srcBegin = B754 - srcEnd = B755 - mappingOffset = 1D53 - Mapping = - B6EA B6EB -End of Item 0A27 - -Begin of Item 0A28 - Format 1 - srcBegin = B760 - srcEnd = B768 - mappingOffset = 1D55 - Mapping = - B6EC 8DD6 8DD7 8DD8 B6ED 8DD9 8DDA 8DDB - B6EE -End of Item 0A28 - -Begin of Item 0A29 - Format 1 - srcBegin = B770 - srcEnd = B775 - mappingOffset = 1D5E - Mapping = - B6EF B6F0 8DE3 B6F1 8DE4 B6F2 -End of Item 0A29 - -Begin of Item 0A2A - Format 1 - srcBegin = B77C - srcEnd = B784 - mappingOffset = 1D64 - Mapping = - B6F3 B6F4 8DEB 8DEC B6F5 8DED 8DEE 8DEF - B6F6 -End of Item 0A2A - -Begin of Item 0A2B - Format 1 - srcBegin = B78C - srcEnd = B7A0 - mappingOffset = 1D6D - Mapping = - B6F7 B6F8 8DF7 B6F9 B6FA B6FB B6FC 8DF8 - 8DF9 8DFA B6FD B6FE B7A1 B7A2 8DFB 8DFC - B7A3 8DFD 8DFE 8E41 B7A4 -End of Item 0A2B - -Begin of Item 0A2C - Format 1 - srcBegin = B7A8 - srcEnd = B7AD - mappingOffset = 1D82 - Mapping = - B7A5 B7A6 8E49 B7A7 B7A8 B7A9 -End of Item 0A2C - -Begin of Item 0A2D - Format 1 - srcBegin = B7B4 - srcEnd = B7B8 - mappingOffset = 1D88 - Mapping = - B7AA B7AB 8E50 8E51 B7AC -End of Item 0A2D - -Begin of Item 0A2E - Format 1 - srcBegin = B7C2 - srcEnd = B7C9 - mappingOffset = 1D8D - Mapping = - 8E61 8E62 8E63 8E64 8E65 B7AD 8E66 B7AE -End of Item 0A2E - -Begin of Item 0A2F - Format 1 - srcBegin = B7EC - srcEnd = B7F4 - mappingOffset = 1D95 - Mapping = - B7AF B7B0 8E8F 8E90 B7B1 8E91 8E92 8E93 - B7B2 -End of Item 0A2F - -Begin of Item 0A30 - Format 1 - srcBegin = B7FC - srcEnd = B810 - mappingOffset = 1D9E - Mapping = - B7B3 B7B4 8E9B B7B5 B7B6 B7B7 8E9C 8E9D - 8E9E 8E9F 8EA0 B7B8 B7B9 B7BA 8EA1 8EA2 - B7BB 8EA3 8EA4 8EA5 B7BC -End of Item 0A30 - -Begin of Item 0A31 - Format 1 - srcBegin = B818 - srcEnd = B81D - mappingOffset = 1DB3 - Mapping = - B7BD B7BE 8EAD B7BF 8EAE B7C0 -End of Item 0A31 - -Begin of Item 0A32 - Format 1 - srcBegin = B824 - srcEnd = B82C - mappingOffset = 1DB9 - Mapping = - B7C1 B7C2 8EB5 8EB6 B7C3 8EB7 8EB8 8EB9 - B7C4 -End of Item 0A32 - -Begin of Item 0A33 - Format 1 - srcBegin = B834 - srcEnd = B839 - mappingOffset = 1DC2 - Mapping = - B7C5 B7C6 8EC1 B7C7 B7C8 B7C9 -End of Item 0A33 - -Begin of Item 0A34 - Format 1 - srcBegin = B840 - srcEnd = B844 - mappingOffset = 1DC8 - Mapping = - B7CA 8EC8 8EC9 8ECA B7CB -End of Item 0A34 - -Begin of Item 0A35 - Format 1 - srcBegin = B851 - srcEnd = B853 - mappingOffset = 1DCD - Mapping = - B7CC 8ED7 B7CD -End of Item 0A35 - -Begin of Item 0A36 - Format 1 - srcBegin = B85C - srcEnd = B864 - mappingOffset = 1DD0 - Mapping = - B7CE B7CF 8EE0 8EE1 B7D0 8EE2 8EE3 8EE4 - B7D1 -End of Item 0A36 - -Begin of Item 0A37 - Format 1 - srcBegin = B86C - srcEnd = B871 - mappingOffset = 1DD9 - Mapping = - B7D2 B7D3 8EEC B7D4 8EED B7D5 -End of Item 0A37 - -Begin of Item 0A38 - Format 1 - srcBegin = B878 - srcEnd = B87C - mappingOffset = 1DDF - Mapping = - B7D6 8EF4 8EF5 8EF6 B7D7 -End of Item 0A38 - -Begin of Item 0A39 - Format 2 - srcBegin = B88D - destBegin = B7D8 -End of Item 0A39 - -Begin of Item 0A3A - Format 2 - srcBegin = B8A8 - destBegin = B7D9 -End of Item 0A3A - -Begin of Item 0A3B - Format 1 - srcBegin = B8B0 - srcEnd = B8C5 - mappingOffset = 1DE4 - Mapping = - B7DA 8F70 8F71 8F72 B7DB 8F73 8F74 8F75 - B7DC 8F76 8F77 8F78 8F79 8F7A 8F81 8F82 - B7DD B7DE 8F83 B7DF 8F84 B7E0 -End of Item 0A3B - -Begin of Item 0A3C - Format 1 - srcBegin = B8CC - srcEnd = B8D4 - mappingOffset = 1DFA - Mapping = - B7E1 8F8B 8F8C 8F8D B7E2 8F8E 8F8F 8F90 - B7E3 -End of Item 0A3C - -Begin of Item 0A3D - Format 1 - srcBegin = B8DD - srcEnd = B8E1 - mappingOffset = 1E03 - Mapping = - B7E4 8F99 B7E5 8F9A B7E6 -End of Item 0A3D - -Begin of Item 0A3E - Format 1 - srcBegin = B8E8 - srcEnd = B8F0 - mappingOffset = 1E08 - Mapping = - B7E7 B7E8 8FA1 8FA2 B7E9 8FA3 8FA4 8FA5 - B7EA -End of Item 0A3E - -Begin of Item 0A3F - Format 1 - srcBegin = B8F8 - srcEnd = B8FD - mappingOffset = 1E11 - Mapping = - B7EB B7EC 8FAD B7ED 8FAE B7EE -End of Item 0A3F - -Begin of Item 0A40 - Format 2 - srcBegin = B904 - destBegin = B7EF -End of Item 0A40 - -Begin of Item 0A41 - Format 2 - srcBegin = B918 - destBegin = B7F0 -End of Item 0A41 - -Begin of Item 0A42 - Format 2 - srcBegin = B920 - destBegin = B7F1 -End of Item 0A42 - -Begin of Item 0A43 - Format 1 - srcBegin = B93C - srcEnd = B944 - mappingOffset = 1E17 - Mapping = - B7F2 B7F3 8FEA 8FEB B7F4 8FEC 8FED 8FEE - B7F5 -End of Item 0A43 - -Begin of Item 0A44 - Format 1 - srcBegin = B94C - srcEnd = B951 - mappingOffset = 1E20 - Mapping = - B7F6 8FF6 8FF7 B7F7 8FF8 B7F8 -End of Item 0A44 - -Begin of Item 0A45 - Format 1 - srcBegin = B958 - srcEnd = B960 - mappingOffset = 1E26 - Mapping = - B7F9 B7FA 9041 9042 B7FB 9043 9044 9045 - B7FC -End of Item 0A45 - -Begin of Item 0A46 - Format 1 - srcBegin = B968 - srcEnd = B96D - mappingOffset = 1E2F - Mapping = - B7FD B7FE 904D B8A1 904E B8A2 -End of Item 0A46 - -Begin of Item 0A47 - Format 1 - srcBegin = B974 - srcEnd = B97D - mappingOffset = 1E35 - Mapping = - B8A3 B8A4 9055 9056 B8A5 9057 9058 9059 - B8A6 905A -End of Item 0A47 - -Begin of Item 0A48 - Format 1 - srcBegin = B984 - srcEnd = B98E - mappingOffset = 1E3F - Mapping = - B8A7 B8A8 9067 B8A9 9068 B8AA B8AB 9069 - 906A B8AC B8AD -End of Item 0A48 - -Begin of Item 0A49 - Format 1 - srcBegin = B9AC - srcEnd = B9B4 - mappingOffset = 1E4A - Mapping = - B8AE B8AF 908E 908F B8B0 9090 9091 9092 - B8B1 -End of Item 0A49 - -Begin of Item 0A4A - Format 1 - srcBegin = B9BC - srcEnd = B9C1 - mappingOffset = 1E53 - Mapping = - B8B2 B8B3 909A B8B4 909B B8B5 -End of Item 0A4A - -Begin of Item 0A4B - Format 1 - srcBegin = B9C8 - srcEnd = B9EC - mappingOffset = 1E59 - Mapping = - B8B6 B8B7 90A2 90A3 B8B8 90A4 B8B9 B8BA - B8BB B8BC B8BD 90A5 90A6 90A7 90A8 90A9 - B8BE B8BF 90AA B8C0 90AB B8C1 B8C2 90AC - 90AD B8C3 90AE B8C4 B8C5 B8C6 90AF 90B0 - B8C7 90B1 90B2 90B3 B8C8 -End of Item 0A4B - -Begin of Item 0A4C - Format 1 - srcBegin = B9F4 - srcEnd = BA01 - mappingOffset = 1E7E - Mapping = - B8C9 B8CA 90BB B8CB B8CC B8CD B8CE 90BC - 90BD 90BE 90BF 90C0 B8CF B8D0 -End of Item 0A4C - -Begin of Item 0A4D - Format 2 - srcBegin = BA08 - destBegin = B8D1 -End of Item 0A4D - -Begin of Item 0A4E - Format 2 - srcBegin = BA15 - destBegin = B8D2 -End of Item 0A4E - -Begin of Item 0A4F - Format 1 - srcBegin = BA38 - srcEnd = BA5C - mappingOffset = 1E8C - Mapping = - B8D3 B8D4 90F5 90F6 B8D5 90F7 90F8 90F9 - B8D6 90FA B8D7 90FB 90FC 90FD 90FE 9141 - B8D8 B8D9 9142 B8DA 9143 B8DB B8DC 9144 - 9145 9146 9147 B8DD B8DE B8DF 9148 9149 - B8E0 914A 914B 914C B8E1 -End of Item 0A4F - -Begin of Item 0A50 - Format 1 - srcBegin = BA64 - srcEnd = BA69 - mappingOffset = 1EB1 - Mapping = - B8E2 B8E3 9154 B8E4 B8E5 B8E6 -End of Item 0A50 - -Begin of Item 0A51 - Format 1 - srcBegin = BA70 - srcEnd = BA78 - mappingOffset = 1EB7 - Mapping = - B8E7 B8E8 9161 9162 B8E9 9163 9164 9165 - B8EA -End of Item 0A51 - -Begin of Item 0A52 - Format 1 - srcBegin = BA83 - srcEnd = BA8C - mappingOffset = 1EC0 - Mapping = - B8EB B8EC B8ED 9170 B8EE 9171 9172 9173 - 9174 B8EF -End of Item 0A52 - -Begin of Item 0A53 - Format 1 - srcBegin = BAA8 - srcEnd = BABD - mappingOffset = 1ECA - Mapping = - B8F0 B8F1 9196 B8F2 B8F3 9197 9198 9199 - B8F4 919A B8F5 919B 919C 919D 919E 919F - B8F6 B8F7 91A0 B8F8 91A1 B8F9 -End of Item 0A53 - -Begin of Item 0A54 - Format 1 - srcBegin = BAC4 - srcEnd = BAC8 - mappingOffset = 1EE0 - Mapping = - B8FA 91A8 91A9 91AA B8FB -End of Item 0A54 - -Begin of Item 0A55 - Format 1 - srcBegin = BAD8 - srcEnd = BAD9 - mappingOffset = 1EE5 - Mapping = - B8FC B8FD -End of Item 0A55 - -Begin of Item 0A56 - Format 1 - srcBegin = BAFC - srcEnd = BB04 - mappingOffset = 1EE7 - Mapping = - B8FE 91DC 91DD 91DE B9A1 91DF 91E0 91E1 - B9A2 -End of Item 0A56 - -Begin of Item 0A57 - Format 1 - srcBegin = BB0D - srcEnd = BB11 - mappingOffset = 1EF0 - Mapping = - B9A3 91EA B9A4 91EB B9A5 -End of Item 0A57 - -Begin of Item 0A58 - Format 1 - srcBegin = BB18 - srcEnd = BB20 - mappingOffset = 1EF5 - Mapping = - B9A6 91F2 91F3 91F4 B9A7 91F5 91F6 91F7 - B9A8 -End of Item 0A58 - -Begin of Item 0A59 - Format 1 - srcBegin = BB28 - srcEnd = BB2B - mappingOffset = 1EFE - Mapping = - 9241 B9A9 9242 B9AA -End of Item 0A59 - -Begin of Item 0A5A - Format 1 - srcBegin = BB34 - srcEnd = BB58 - mappingOffset = 1F02 - Mapping = - B9AB B9AC B9AD 924B B9AE 924C 924D B9AF - B9B0 B9B1 B9B2 924E 924F 9250 9251 9252 - B9B3 B9B4 9253 B9B5 9254 B9B6 9255 9256 - 9257 B9B7 9258 B9B8 B9B9 9259 925A 9261 - B9BA 9262 9263 9264 B9BB -End of Item 0A5A - -Begin of Item 0A5B - Format 1 - srcBegin = BB61 - srcEnd = BB63 - mappingOffset = 1F27 - Mapping = - B9BC 926D B9BD -End of Item 0A5B - -Begin of Item 0A5C - Format 1 - srcBegin = BB6C - srcEnd = BB71 - mappingOffset = 1F2A - Mapping = - B9BE 9276 9277 9278 9279 927A -End of Item 0A5C - -Begin of Item 0A5D - Format 1 - srcBegin = BB88 - srcEnd = BB90 - mappingOffset = 1F30 - Mapping = - B9BF 9297 9298 9299 B9C0 929A 929B 929C - B9C1 -End of Item 0A5D - -Begin of Item 0A5E - Format 1 - srcBegin = BBA4 - srcEnd = BBAC - mappingOffset = 1F39 - Mapping = - B9C2 92B0 92B1 92B2 B9C3 92B3 92B4 92B5 - B9C4 -End of Item 0A5E - -Begin of Item 0A5F - Format 1 - srcBegin = BBB4 - srcEnd = BBB7 - mappingOffset = 1F42 - Mapping = - B9C5 92BD 92BE B9C6 -End of Item 0A5F - -Begin of Item 0A60 - Format 1 - srcBegin = BBC0 - srcEnd = BBC8 - mappingOffset = 1F46 - Mapping = - B9C7 92C7 92C8 92C9 B9C8 92CA 92CB 92CC - B9C9 -End of Item 0A60 - -Begin of Item 0A61 - Format 1 - srcBegin = BBD0 - srcEnd = BBD3 - mappingOffset = 1F4F - Mapping = - B9CA 92D4 92D5 B9CB -End of Item 0A61 - -Begin of Item 0A62 - Format 1 - srcBegin = BBF8 - srcEnd = BC38 - mappingOffset = 1F53 - Mapping = - B9CC B9CD 92FA 92FB B9CE 92FC 92FD B9CF - B9D0 92FE B9D1 9341 9342 9343 9344 9345 - B9D2 B9D3 9346 B9D4 B9D5 B9D6 9347 B9D7 - 9348 B9D8 9349 934A B9D9 B9DA B9DB B9DC - B9DD 934B 934C B9DE B9DF B9E0 B9E1 B9E2 - 934D 934E 934F 9350 B9E3 B9E4 9351 B9E5 - 9352 B9E6 9353 9354 9355 B9E7 9356 9357 - B9E8 B9E9 9358 9359 B9EA 935A 9361 9362 - B9EB -End of Item 0A62 - -Begin of Item 0A63 - Format 1 - srcBegin = BC40 - srcEnd = BC50 - mappingOffset = 1F94 - Mapping = - B9EC B9ED 936A B9EE B9EF B9F0 936B 936C - 936D B9F1 936E 936F B9F2 B9F3 9370 9371 - B9F4 -End of Item 0A63 - -Begin of Item 0A64 - Format 1 - srcBegin = BC5A - srcEnd = BC5D - mappingOffset = 1FA5 - Mapping = - 9381 9382 9383 B9F5 -End of Item 0A64 - -Begin of Item 0A65 - Format 1 - srcBegin = BC84 - srcEnd = BCA8 - mappingOffset = 1FA9 - Mapping = - B9F6 B9F7 93AA 93AB B9F8 93AC 93AD B9F9 - B9FA 93AE B9FB 93AF 93B0 93B1 93B2 93B3 - B9FC B9FD 93B4 B9FE 93B5 BAA1 BAA2 93B6 - 93B7 93B8 93B9 93BA BAA3 BAA4 93BB 93BC - BAA5 93BD 93BE BAA6 BAA7 -End of Item 0A65 - -Begin of Item 0A66 - Format 1 - srcBegin = BCB0 - srcEnd = BCB5 - mappingOffset = 1FCE - Mapping = - BAA8 BAA9 93C6 BAAA BAAB BAAC -End of Item 0A66 - -Begin of Item 0A67 - Format 1 - srcBegin = BCBC - srcEnd = BCC4 - mappingOffset = 1FD4 - Mapping = - BAAD BAAE 93CD 93CE BAAF 93CF 93D0 93D1 - BAB0 -End of Item 0A67 - -Begin of Item 0A68 - Format 1 - srcBegin = BCCD - srcEnd = BCDC - mappingOffset = 1FDD - Mapping = - BAB1 93DA BAB2 BAB3 BAB4 93DB 93DC 93DD - BAB5 93DE 93DF BAB6 93E0 93E1 93E2 BAB7 -End of Item 0A68 - -Begin of Item 0A69 - Format 1 - srcBegin = BCF4 - srcEnd = BCFD - mappingOffset = 1FED - Mapping = - BAB8 BAB9 BABA 93FA BABB 93FB 93FC 93FD - BABC 93FE -End of Item 0A69 - -Begin of Item 0A6A - Format 1 - srcBegin = BD04 - srcEnd = BD09 - mappingOffset = 1FF7 - Mapping = - BABD BABE 9447 BABF 9448 BAC0 -End of Item 0A6A - -Begin of Item 0A6B - Format 1 - srcBegin = BD10 - srcEnd = BD14 - mappingOffset = 1FFD - Mapping = - BAC1 944F 9450 9451 BAC2 -End of Item 0A6B - -Begin of Item 0A6C - Format 2 - srcBegin = BD24 - destBegin = BAC3 -End of Item 0A6C - -Begin of Item 0A6D - Format 2 - srcBegin = BD2C - destBegin = BAC4 -End of Item 0A6D - -Begin of Item 0A6E - Format 2 - srcBegin = BD40 - destBegin = BAC5 -End of Item 0A6E - -Begin of Item 0A6F - Format 1 - srcBegin = BD48 - srcEnd = BD50 - mappingOffset = 2002 - Mapping = - BAC6 BAC7 948E 948F BAC8 9490 9491 9492 - BAC9 -End of Item 0A6F - -Begin of Item 0A70 - Format 1 - srcBegin = BD58 - srcEnd = BD59 - mappingOffset = 200B - Mapping = - BACA BACB -End of Item 0A70 - -Begin of Item 0A71 - Format 1 - srcBegin = BD64 - srcEnd = BD68 - mappingOffset = 200D - Mapping = - BACC 94A4 94A5 94A6 BACD -End of Item 0A71 - -Begin of Item 0A72 - Format 1 - srcBegin = BD80 - srcEnd = BD9C - mappingOffset = 2012 - Mapping = - BACE BACF 94BE 94BF BAD0 94C0 94C1 BAD1 - BAD2 BAD3 BAD4 94C2 94C3 94C4 94C5 94C6 - BAD5 BAD6 94C7 BAD7 94C8 BAD8 94C9 94CA - 94CB BAD9 BADA 94CC BADB -End of Item 0A72 - -Begin of Item 0A73 - Format 2 - srcBegin = BDA4 - destBegin = BADC -End of Item 0A73 - -Begin of Item 0A74 - Format 2 - srcBegin = BDB0 - destBegin = BADD -End of Item 0A74 - -Begin of Item 0A75 - Format 2 - srcBegin = BDB8 - destBegin = BADE -End of Item 0A75 - -Begin of Item 0A76 - Format 1 - srcBegin = BDD2 - srcEnd = BDDC - mappingOffset = 202F - Mapping = - 9541 9542 BADF BAE0 9543 9544 BAE1 9545 - 9546 9547 BAE2 -End of Item 0A76 - -Begin of Item 0A77 - Format 2 - srcBegin = BDE9 - destBegin = BAE3 -End of Item 0A77 - -Begin of Item 0A78 - Format 1 - srcBegin = BDF0 - srcEnd = BDF8 - mappingOffset = 203A - Mapping = - BAE4 955A 9561 9562 BAE5 9563 9564 9565 - BAE6 -End of Item 0A78 - -Begin of Item 0A79 - Format 1 - srcBegin = BE00 - srcEnd = BE05 - mappingOffset = 2043 - Mapping = - BAE7 956D 956E BAE8 956F BAE9 -End of Item 0A79 - -Begin of Item 0A7A - Format 1 - srcBegin = BE0C - srcEnd = BE14 - mappingOffset = 2049 - Mapping = - BAEA BAEB 9576 9577 BAEC 9578 9579 957A - BAED -End of Item 0A7A - -Begin of Item 0A7B - Format 1 - srcBegin = BE1C - srcEnd = BE1F - mappingOffset = 2052 - Mapping = - BAEE BAEF 9588 BAF0 -End of Item 0A7B - -Begin of Item 0A7C - Format 1 - srcBegin = BE44 - srcEnd = BE84 - mappingOffset = 2056 - Mapping = - BAF1 BAF2 95AD 95AE BAF3 95AF 95B0 95B1 - BAF4 95B2 BAF5 95B3 95B4 95B5 95B6 95B7 - BAF6 BAF7 95B8 BAF8 95B9 BAF9 BAFA BAFB - 95BA 95BB 95BC 95BD BAFC BAFD 95BE 95BF - BAFE 95C0 95C1 95C2 BBA1 95C3 BBA2 95C4 - 95C5 95C6 95C7 95C8 BBA3 BBA4 95C9 BBA5 - BBA6 BBA7 95CA 95CB 95CC 95CD 95CE BBA8 - BBA9 BBAA 95CF 95D0 BBAB 95D1 95D2 95D3 - BBAC -End of Item 0A7C - -Begin of Item 0A7D - Format 1 - srcBegin = BE8C - srcEnd = BE91 - mappingOffset = 2097 - Mapping = - BBAD BBAE 95DB BBAF BBB0 BBB1 -End of Item 0A7D - -Begin of Item 0A7E - Format 1 - srcBegin = BE98 - srcEnd = BE99 - mappingOffset = 209D - Mapping = - BBB2 BBB3 -End of Item 0A7E - -Begin of Item 0A7F - Format 2 - srcBegin = BEA8 - destBegin = BBB4 -End of Item 0A7F - -Begin of Item 0A80 - Format 1 - srcBegin = BED0 - srcEnd = BED8 - mappingOffset = 209F - Mapping = - BBB5 BBB6 9659 965A BBB7 9661 9662 BBB8 - BBB9 -End of Item 0A80 - -Begin of Item 0A81 - Format 1 - srcBegin = BEE0 - srcEnd = BEE5 - mappingOffset = 20A8 - Mapping = - BBBA 966A 966B BBBB BBBC BBBD -End of Item 0A81 - -Begin of Item 0A82 - Format 2 - srcBegin = BEEC - destBegin = BBBE -End of Item 0A82 - -Begin of Item 0A83 - Format 2 - srcBegin = BF01 - destBegin = BBBF -End of Item 0A83 - -Begin of Item 0A84 - Format 1 - srcBegin = BF08 - srcEnd = BF09 - mappingOffset = 20AE - Mapping = - BBC0 BBC1 -End of Item 0A84 - -Begin of Item 0A85 - Format 1 - srcBegin = BF18 - srcEnd = BF1D - mappingOffset = 20B0 - Mapping = - BBC2 BBC3 96A0 BBC4 BBC5 BBC6 -End of Item 0A85 - -Begin of Item 0A86 - Format 1 - srcBegin = BF40 - srcEnd = BF48 - mappingOffset = 20B6 - Mapping = - BBC7 BBC8 96C3 96C4 BBC9 96C5 96C6 96C7 - BBCA -End of Item 0A86 - -Begin of Item 0A87 - Format 1 - srcBegin = BF50 - srcEnd = BF55 - mappingOffset = 20BF - Mapping = - BBCB BBCC 96CF 96D0 96D1 BBCD -End of Item 0A87 - -Begin of Item 0A88 - Format 2 - srcBegin = BF94 - destBegin = BBCE -End of Item 0A88 - -Begin of Item 0A89 - Format 2 - srcBegin = BFB0 - destBegin = BBCF -End of Item 0A89 - -Begin of Item 0A8A - Format 2 - srcBegin = BFC5 - destBegin = BBD0 -End of Item 0A8A - -Begin of Item 0A8B - Format 1 - srcBegin = BFCC - srcEnd = BFD4 - mappingOffset = 20C5 - Mapping = - BBD1 BBD2 9793 9794 BBD3 9795 9796 9797 - BBD4 -End of Item 0A8B - -Begin of Item 0A8C - Format 1 - srcBegin = BFDC - srcEnd = BFE1 - mappingOffset = 20CE - Mapping = - BBD5 979F 97A0 BBD6 97A1 BBD7 -End of Item 0A8C - -Begin of Item 0A8D - Format 1 - srcBegin = C03C - srcEnd = C03F - mappingOffset = 20D4 - Mapping = - BBD8 97FC 97FD 97FE -End of Item 0A8D - -Begin of Item 0A8E - Format 2 - srcBegin = C051 - destBegin = BBD9 -End of Item 0A8E - -Begin of Item 0A8F - Format 1 - srcBegin = C058 - srcEnd = C060 - mappingOffset = 20D8 - Mapping = - BBDA 9858 9859 985A BBDB 9861 9862 9863 - BBDC -End of Item 0A8F - -Begin of Item 0A90 - Format 1 - srcBegin = C068 - srcEnd = C069 - mappingOffset = 20E1 - Mapping = - BBDD BBDE -End of Item 0A90 - -Begin of Item 0A91 - Format 1 - srcBegin = C090 - srcEnd = C098 - mappingOffset = 20E3 - Mapping = - BBDF BBE0 9897 9898 BBE1 9899 989A 989B - BBE2 -End of Item 0A91 - -Begin of Item 0A92 - Format 1 - srcBegin = C0A0 - srcEnd = C0A5 - mappingOffset = 20EC - Mapping = - BBE3 BBE4 98A3 BBE5 98A4 BBE6 -End of Item 0A92 - -Begin of Item 0A93 - Format 1 - srcBegin = C0AC - srcEnd = C0D0 - mappingOffset = 20F2 - Mapping = - BBE7 BBE8 98AB BBE9 BBEA 98AC 98AD BBEB - BBEC BBED BBEE 98AE 98AF 98B0 98B1 98B2 - BBEF BBF0 98B3 BBF1 BBF2 BBF3 98B4 98B5 - 98B6 BBF4 98B7 98B8 BBF5 BBF6 98B9 98BA - BBF7 98BB 98BC 98BD BBF8 -End of Item 0A93 - -Begin of Item 0A94 - Format 1 - srcBegin = C0D8 - srcEnd = C0DD - mappingOffset = 2117 - Mapping = - BBF9 BBFA 98C5 BBFB BBFC BBFD -End of Item 0A94 - -Begin of Item 0A95 - Format 1 - srcBegin = C0E4 - srcEnd = C0EC - mappingOffset = 211D - Mapping = - BBFE BCA1 98CC 98CD BCA2 98CE 98CF 98D0 - BCA3 -End of Item 0A95 - -Begin of Item 0A96 - Format 1 - srcBegin = C0F4 - srcEnd = C0F9 - mappingOffset = 2126 - Mapping = - BCA4 BCA5 98D8 BCA6 98D9 BCA7 -End of Item 0A96 - -Begin of Item 0A97 - Format 1 - srcBegin = C100 - srcEnd = C108 - mappingOffset = 212C - Mapping = - BCA8 98E0 98E1 98E2 BCA9 98E3 98E4 98E5 - BCAA -End of Item 0A97 - -Begin of Item 0A98 - Format 1 - srcBegin = C110 - srcEnd = C115 - mappingOffset = 2135 - Mapping = - BCAB 98ED 98EE 98EF 98F0 BCAC -End of Item 0A98 - -Begin of Item 0A99 - Format 1 - srcBegin = C11C - srcEnd = C140 - mappingOffset = 213B - Mapping = - BCAD BCAE BCAF BCB0 BCB1 98F7 98F8 BCB2 - BCB3 98F9 BCB4 BCB5 98FA 98FB 98FC 98FD - BCB6 BCB7 98FE BCB8 BCB9 BCBA 9941 9942 - 9943 9944 BCBB 9945 BCBC BCBD 9946 9947 - BCBE 9948 9949 994A BCBF -End of Item 0A99 - -Begin of Item 0A9A - Format 1 - srcBegin = C148 - srcEnd = C14D - mappingOffset = 2160 - Mapping = - BCC0 BCC1 9952 BCC2 BCC3 BCC4 -End of Item 0A9A - -Begin of Item 0A9B - Format 1 - srcBegin = C154 - srcEnd = C15C - mappingOffset = 2166 - Mapping = - BCC5 BCC6 9959 995A BCC7 9961 9962 9963 - BCC8 -End of Item 0A9B - -Begin of Item 0A9C - Format 1 - srcBegin = C164 - srcEnd = C169 - mappingOffset = 216F - Mapping = - BCC9 BCCA 996B BCCB BCCC BCCD -End of Item 0A9C - -Begin of Item 0A9D - Format 1 - srcBegin = C170 - srcEnd = C17B - mappingOffset = 2175 - Mapping = - BCCE 9972 9973 9974 BCCF 9975 9976 9977 - BCD0 9978 9979 997A -End of Item 0A9D - -Begin of Item 0A9E - Format 2 - srcBegin = C185 - destBegin = BCD1 -End of Item 0A9E - -Begin of Item 0A9F - Format 1 - srcBegin = C18C - srcEnd = C1B0 - mappingOffset = 2181 - Mapping = - BCD2 BCD3 BCD4 9990 BCD5 9991 9992 9993 - BCD6 9994 BCD7 9995 9996 9997 9998 9999 - BCD8 BCD9 999A BCDA 999B BCDB 999C 999D - 999E BCDC 999F 99A0 BCDD BCDE 99A1 99A2 - BCDF 99A3 99A4 99A5 BCE0 -End of Item 0A9F - -Begin of Item 0AA0 - Format 2 - srcBegin = C1BD - destBegin = BCE1 -End of Item 0AA0 - -Begin of Item 0AA1 - Format 1 - srcBegin = C1C4 - srcEnd = C1CC - mappingOffset = 21A6 - Mapping = - BCE2 99B8 99B9 99BA BCE3 99BB 99BC 99BD - BCE4 -End of Item 0AA1 - -Begin of Item 0AA2 - Format 1 - srcBegin = C1D4 - srcEnd = C1D8 - mappingOffset = 21AF - Mapping = - BCE5 99C5 99C6 BCE6 BCE7 -End of Item 0AA2 - -Begin of Item 0AA3 - Format 1 - srcBegin = C1E0 - srcEnd = C1E8 - mappingOffset = 21B4 - Mapping = - BCE8 99CE 99CF 99D0 BCE9 99D1 99D2 99D3 - BCEA -End of Item 0AA3 - -Begin of Item 0AA4 - Format 1 - srcBegin = C1F0 - srcEnd = C1F3 - mappingOffset = 21BD - Mapping = - BCEB BCEC 99DB BCED -End of Item 0AA4 - -Begin of Item 0AA5 - Format 1 - srcBegin = C1FC - srcEnd = C204 - mappingOffset = 21C1 - Mapping = - BCEE BCEF 99E4 99E5 BCF0 99E6 99E7 99E8 - BCF1 -End of Item 0AA5 - -Begin of Item 0AA6 - Format 1 - srcBegin = C20C - srcEnd = C211 - mappingOffset = 21CA - Mapping = - BCF2 BCF3 99F0 BCF4 99F1 BCF5 -End of Item 0AA6 - -Begin of Item 0AA7 - Format 1 - srcBegin = C218 - srcEnd = C234 - mappingOffset = 21D0 - Mapping = - BCF6 BCF7 99F8 99F9 BCF8 99FA 99FB BCF9 - BCFA 99FC 99FD 99FE 9A41 9A42 9A43 9A44 - BCFB BCFC 9A45 BCFD 9A46 BCFE 9A47 BDA1 - 9A48 BDA2 BDA3 9A49 BDA4 -End of Item 0AA7 - -Begin of Item 0AA8 - Format 1 - srcBegin = C246 - srcEnd = C248 - mappingOffset = 21ED - Mapping = - 9A61 9A62 BDA5 -End of Item 0AA8 - -Begin of Item 0AA9 - Format 1 - srcBegin = C250 - srcEnd = C258 - mappingOffset = 21F0 - Mapping = - BDA6 BDA7 9A6A 9A6B BDA8 9A6C 9A6D 9A6E - BDA9 -End of Item 0AA9 - -Begin of Item 0AAA - Format 1 - srcBegin = C260 - srcEnd = C274 - mappingOffset = 21F9 - Mapping = - BDAA 9A76 9A77 9A78 9A79 BDAB 9A7A 9A81 - 9A82 9A83 9A84 9A85 BDAC BDAD 9A86 9A87 - BDAE 9A88 9A89 9A8A BDAF -End of Item 0AAA - -Begin of Item 0AAB - Format 1 - srcBegin = C27C - srcEnd = C281 - mappingOffset = 220E - Mapping = - BDB0 BDB1 9A92 BDB2 9A93 BDB3 -End of Item 0AAB - -Begin of Item 0AAC - Format 1 - srcBegin = C288 - srcEnd = C289 - mappingOffset = 2214 - Mapping = - BDB4 BDB5 -End of Item 0AAC - -Begin of Item 0AAD - Format 2 - srcBegin = C290 - destBegin = BDB6 -End of Item 0AAD - -Begin of Item 0AAE - Format 1 - srcBegin = C298 - srcEnd = C29D - mappingOffset = 2216 - Mapping = - BDB7 9AA7 9AA8 BDB8 9AA9 BDB9 -End of Item 0AAE - -Begin of Item 0AAF - Format 1 - srcBegin = C2A4 - srcEnd = C2AD - mappingOffset = 221C - Mapping = - BDBA BDBB 9AB0 9AB1 BDBC 9AB2 9AB3 9AB4 - BDBD BDBE -End of Item 0AAF - -Begin of Item 0AB0 - Format 1 - srcBegin = C2B4 - srcEnd = C2B9 - mappingOffset = 2226 - Mapping = - BDBF BDC0 9ABB BDC1 9ABC BDC2 -End of Item 0AB0 - -Begin of Item 0AB1 - Format 1 - srcBegin = C2DC - srcEnd = C2E4 - mappingOffset = 222C - Mapping = - BDC3 BDC4 9ADF 9AE0 BDC5 9AE1 9AE2 BDC6 - BDC7 -End of Item 0AB1 - -Begin of Item 0AB2 - Format 1 - srcBegin = C2EB - srcEnd = C300 - mappingOffset = 2235 - Mapping = - BDC8 BDC9 BDCA 9AE9 BDCB 9AEA BDCC 9AEB - 9AEC 9AED 9AEE BDCD 9AEF BDCE BDCF 9AF0 - BDD0 BDD1 9AF1 9AF2 9AF3 BDD2 -End of Item 0AB2 - -Begin of Item 0AB3 - Format 1 - srcBegin = C308 - srcEnd = C31C - mappingOffset = 224B - Mapping = - BDD3 BDD4 9AFB 9AFC BDD5 BDD6 9AFD 9AFE - 9B41 9B42 9B43 BDD7 BDD8 BDD9 9B44 9B45 - BDDA 9B46 9B47 9B48 BDDB -End of Item 0AB3 - -Begin of Item 0AB4 - Format 1 - srcBegin = C324 - srcEnd = C329 - mappingOffset = 2260 - Mapping = - BDDC BDDD 9B50 9B51 BDDE BDDF -End of Item 0AB4 - -Begin of Item 0AB5 - Format 2 - srcBegin = C345 - destBegin = BDE0 -End of Item 0AB5 - -Begin of Item 0AB6 - Format 1 - srcBegin = C368 - srcEnd = C37D - mappingOffset = 2266 - Mapping = - BDE1 BDE2 9B9B 9B9C BDE3 9B9D 9B9E 9B9F - BDE4 9BA0 BDE5 9BA1 9BA2 9BA3 9BA4 9BA5 - BDE6 BDE7 9BA6 9BA7 BDE8 BDE9 -End of Item 0AB6 - -Begin of Item 0AB7 - Format 1 - srcBegin = C384 - srcEnd = C38C - mappingOffset = 227C - Mapping = - BDEA 9BAE 9BAF 9BB0 BDEB 9BB1 9BB2 9BB3 - BDEC -End of Item 0AB7 - -Begin of Item 0AB8 - Format 2 - srcBegin = C3C0 - destBegin = BDED -End of Item 0AB8 - -Begin of Item 0AB9 - Format 1 - srcBegin = C3D8 - srcEnd = C3ED - mappingOffset = 2285 - Mapping = - BDEE BDEF 9BFE 9C41 BDF0 9C42 9C43 BDF1 - BDF2 9C44 BDF3 9C45 9C46 9C47 9C48 9C49 - BDF4 BDF5 9C4A 9C4B 9C4C BDF6 -End of Item 0AB9 - -Begin of Item 0ABA - Format 1 - srcBegin = C3F4 - srcEnd = C3F8 - mappingOffset = 229B - Mapping = - BDF7 BDF8 9C53 9C54 BDF9 -End of Item 0ABA - -Begin of Item 0ABB - Format 2 - srcBegin = C408 - destBegin = BDFA -End of Item 0ABB - -Begin of Item 0ABC - Format 2 - srcBegin = C410 - destBegin = BDFB -End of Item 0ABC - -Begin of Item 0ABD - Format 2 - srcBegin = C424 - destBegin = BDFC -End of Item 0ABD - -Begin of Item 0ABE - Format 1 - srcBegin = C42C - srcEnd = C434 - mappingOffset = 22A0 - Mapping = - BDFD 9C91 9C92 9C93 BDFE 9C94 9C95 9C96 - BEA1 -End of Item 0ABE - -Begin of Item 0ABF - Format 1 - srcBegin = C43C - srcEnd = C43D - mappingOffset = 22A9 - Mapping = - BEA2 BEA3 -End of Item 0ABF - -Begin of Item 0AC0 - Format 2 - srcBegin = C448 - destBegin = BEA4 -End of Item 0AC0 - -Begin of Item 0AC1 - Format 1 - srcBegin = C464 - srcEnd = C46C - mappingOffset = 22AB - Mapping = - BEA5 BEA6 9CC3 9CC4 BEA7 9CC5 9CC6 9CC7 - BEA8 -End of Item 0AC1 - -Begin of Item 0AC2 - Format 1 - srcBegin = C474 - srcEnd = C479 - mappingOffset = 22B4 - Mapping = - BEA9 BEAA 9CCF 9CD0 9CD1 BEAB -End of Item 0AC2 - -Begin of Item 0AC3 - Format 2 - srcBegin = C480 - destBegin = BEAC -End of Item 0AC3 - -Begin of Item 0AC4 - Format 2 - srcBegin = C494 - destBegin = BEAD -End of Item 0AC4 - -Begin of Item 0AC5 - Format 2 - srcBegin = C49C - destBegin = BEAE -End of Item 0AC5 - -Begin of Item 0AC6 - Format 1 - srcBegin = C4B8 - srcEnd = C4BC - mappingOffset = 22BA - Mapping = - BEAF 9D4F 9D50 9D51 BEB0 -End of Item 0AC6 - -Begin of Item 0AC7 - Format 2 - srcBegin = C4E9 - destBegin = BEB1 -End of Item 0AC7 - -Begin of Item 0AC8 - Format 1 - srcBegin = C4F0 - srcEnd = C501 - mappingOffset = 22BF - Mapping = - BEB2 BEB3 9D90 9D91 BEB4 9D92 9D93 9D94 - BEB5 9D95 BEB6 9D96 9D97 9D98 9D99 BEB7 - BEB8 BEB9 -End of Item 0AC8 - -Begin of Item 0AC9 - Format 1 - srcBegin = C50C - srcEnd = C514 - mappingOffset = 22D1 - Mapping = - BEBA 9DA4 9DA5 9DA6 BEBB 9DA7 9DA8 9DA9 - BEBC -End of Item 0AC9 - -Begin of Item 0ACA - Format 2 - srcBegin = C51C - destBegin = BEBD -End of Item 0ACA - -Begin of Item 0ACB - Format 1 - srcBegin = C528 - srcEnd = C530 - mappingOffset = 22DA - Mapping = - BEBE BEBF 9DBC 9DBD BEC0 9DBE 9DBF 9DC0 - BEC1 -End of Item 0ACB - -Begin of Item 0ACC - Format 1 - srcBegin = C538 - srcEnd = C53D - mappingOffset = 22E3 - Mapping = - BEC2 BEC3 9DC8 BEC4 9DC9 BEC5 -End of Item 0ACC - -Begin of Item 0ACD - Format 1 - srcBegin = C544 - srcEnd = C568 - mappingOffset = 22E9 - Mapping = - BEC6 BEC7 9DD0 9DD1 BEC8 BEC9 BECA 9DD2 - BECB BECC BECD 9DD3 9DD4 9DD5 9DD6 BECE - BECF BED0 9DD7 BED1 BED2 BED3 9DD8 9DD9 - 9DDA BED4 BED5 9DDB BED6 BED7 9DDC 9DDD - BED8 9DDE 9DDF 9DE0 BED9 -End of Item 0ACD - -Begin of Item 0ACE - Format 1 - srcBegin = C570 - srcEnd = C575 - mappingOffset = 230E - Mapping = - BEDA BEDB 9DE8 BEDC BEDD BEDE -End of Item 0ACE - -Begin of Item 0ACF - Format 1 - srcBegin = C57C - srcEnd = C5A0 - mappingOffset = 2314 - Mapping = - BEDF BEE0 9DEF 9DF0 BEE1 9DF1 9DF2 9DF3 - BEE2 9DF4 9DF5 BEE3 9DF6 9DF7 9DF8 9DF9 - BEE4 BEE5 9DFA BEE6 9DFB BEE7 9DFC 9DFD - 9DFE BEE8 9E41 BEE9 BEEA 9E42 9E43 9E44 - BEEB 9E45 9E46 9E47 BEEC -End of Item 0ACF - -Begin of Item 0AD0 - Format 2 - srcBegin = C5A9 - destBegin = BEED -End of Item 0AD0 - -Begin of Item 0AD1 - Format 1 - srcBegin = C5B4 - srcEnd = C5C3 - mappingOffset = 2339 - Mapping = - BEEE BEEF 9E5A 9E61 BEF0 BEF1 9E62 BEF2 - BEF3 BEF4 BEF5 9E63 9E64 9E65 9E66 9E67 -End of Item 0AD1 - -Begin of Item 0AD2 - Format 1 - srcBegin = C5CB - srcEnd = C5D8 - mappingOffset = 2349 - Mapping = - 9E68 BEFD 9E69 BEFE 9E6A BFA1 BFA2 9E6B - 9E6C BFA3 9E6D 9E6E 9E6F BFA4 -End of Item 0AD2 - -Begin of Item 0AD3 - Format 1 - srcBegin = C5E0 - srcEnd = C5FB - mappingOffset = 2357 - Mapping = - BFA5 BFA6 9E77 BFA7 9E78 BFA8 9E79 9E7A - 9E81 9E82 9E83 9E84 BFA9 BFAA BFAB 9E85 - BFAC 9E86 9E87 9E88 BFAD 9E89 BFAE BFAF - 9E8A 9E8B 9E8C 9E8D -End of Item 0AD3 - -Begin of Item 0AD4 - Format 1 - srcBegin = C602 - srcEnd = C610 - mappingOffset = 2373 - Mapping = - 9E8E 9E8F 9E90 BFB6 BFB7 BFB8 BFB9 9E91 - 9E92 9E93 BFBA 9E94 9E95 9E96 BFBB -End of Item 0AD4 - -Begin of Item 0AD5 - Format 1 - srcBegin = C618 - srcEnd = C61C - mappingOffset = 2382 - Mapping = - BFBC BFBD 9E9E BFBE BFBF -End of Item 0AD5 - -Begin of Item 0AD6 - Format 1 - srcBegin = C624 - srcEnd = C648 - mappingOffset = 2387 - Mapping = - BFC0 BFC1 9EA6 9EA7 BFC2 9EA8 9EA9 9EAA - BFC3 BFC4 BFC5 9EAB BFC6 9EAC 9EAD BFC7 - BFC8 BFC9 9EAE BFCA 9EAF BFCB 9EB0 BFCC - 9EB1 9EB2 9EB3 9EB4 BFCD BFCE 9EB5 9EB6 - BFCF 9EB7 9EB8 9EB9 BFD0 -End of Item 0AD6 - -Begin of Item 0AD7 - Format 1 - srcBegin = C650 - srcEnd = C655 - mappingOffset = 23AC - Mapping = - BFD1 BFD2 9EC1 BFD3 BFD4 BFD5 -End of Item 0AD7 - -Begin of Item 0AD8 - Format 1 - srcBegin = C65C - srcEnd = C660 - mappingOffset = 23B2 - Mapping = - BFD6 BFD7 9EC8 9EC9 BFD8 -End of Item 0AD8 - -Begin of Item 0AD9 - Format 1 - srcBegin = C66C - srcEnd = C671 - mappingOffset = 23B7 - Mapping = - BFD9 9ED5 9ED6 BFDA 9ED7 BFDB -End of Item 0AD9 - -Begin of Item 0ADA - Format 1 - srcBegin = C678 - srcEnd = C680 - mappingOffset = 23BD - Mapping = - BFDC BFDD 9EDE 9EDF BFDE 9EE0 9EE1 9EE2 - BFDF -End of Item 0ADA - -Begin of Item 0ADB - Format 1 - srcBegin = C688 - srcEnd = C68D - mappingOffset = 23C6 - Mapping = - BFE0 BFE1 9EEA BFE2 9EEB BFE3 -End of Item 0ADB - -Begin of Item 0ADC - Format 1 - srcBegin = C694 - srcEnd = C69C - mappingOffset = 23CC - Mapping = - BFE4 BFE5 9EF2 9EF3 BFE6 9EF4 9EF5 9EF6 - BFE7 -End of Item 0ADC - -Begin of Item 0ADD - Format 1 - srcBegin = C6A4 - srcEnd = C6A9 - mappingOffset = 23D5 - Mapping = - BFE8 BFE9 9EFE BFEA 9F41 BFEB -End of Item 0ADD - -Begin of Item 0ADE - Format 1 - srcBegin = C6B0 - srcEnd = C6C5 - mappingOffset = 23DB - Mapping = - BFEC BFED 9F48 9F49 BFEE 9F4A 9F4B 9F4C - BFEF BFF0 BFF1 9F4D 9F4E 9F4F 9F50 9F51 - BFF2 BFF3 9F52 BFF4 9F53 BFF5 -End of Item 0ADE - -Begin of Item 0ADF - Format 1 - srcBegin = C6CC - srcEnd = C6D4 - mappingOffset = 23F1 - Mapping = - BFF6 BFF7 9F5A 9F61 BFF8 9F62 9F63 9F64 - BFF9 -End of Item 0ADF - -Begin of Item 0AE0 - Format 1 - srcBegin = C6DC - srcEnd = C6E1 - mappingOffset = 23FA - Mapping = - BFFA BFFB 9F6C 9F6D BFFC BFFD -End of Item 0AE0 - -Begin of Item 0AE1 - Format 1 - srcBegin = C6E8 - srcEnd = C6FD - mappingOffset = 2400 - Mapping = - BFFE C0A1 9F74 9F75 C0A2 9F76 9F77 9F78 - C0A3 9F79 9F7A 9F81 9F82 9F83 9F84 9F85 - C0A4 C0A5 9F86 9F87 9F88 C0A6 -End of Item 0AE1 - -Begin of Item 0AE2 - Format 1 - srcBegin = C704 - srcEnd = C70C - mappingOffset = 2416 - Mapping = - C0A7 C0A8 9F8F 9F90 C0A9 9F91 9F92 9F93 - C0AA -End of Item 0AE2 - -Begin of Item 0AE3 - Format 1 - srcBegin = C714 - srcEnd = C719 - mappingOffset = 241F - Mapping = - C0AB C0AC 9F9B C0AD 9F9C C0AE -End of Item 0AE3 - -Begin of Item 0AE4 - Format 1 - srcBegin = C720 - srcEnd = C728 - mappingOffset = 2425 - Mapping = - C0AF C0B0 9FA3 9FA4 C0B1 9FA5 9FA6 9FA7 - C0B2 -End of Item 0AE4 - -Begin of Item 0AE5 - Format 1 - srcBegin = C730 - srcEnd = C750 - mappingOffset = 242E - Mapping = - C0B3 C0B4 9FAF C0B5 9FB0 C0B6 9FB1 C0B7 - 9FB2 9FB3 9FB4 9FB5 C0B8 C0B9 9FB6 9FB7 - C0BA 9FB8 9FB9 9FBA C0BB 9FBB 9FBC 9FBD - 9FBE 9FBF C0BC 9FC0 C0BD C0BE 9FC1 C0BF - 9FC2 -End of Item 0AE5 - -Begin of Item 0AE6 - Format 1 - srcBegin = C759 - srcEnd = C760 - mappingOffset = 244F - Mapping = - 9FC3 9FC4 9FC5 C0C8 9FC6 9FC7 9FC8 C0C9 -End of Item 0AE6 - -Begin of Item 0AE7 - Format 1 - srcBegin = C768 - srcEnd = C76B - mappingOffset = 2457 - Mapping = - C0CA 9FD0 9FD1 C0CB -End of Item 0AE7 - -Begin of Item 0AE8 - Format 1 - srcBegin = C774 - srcEnd = C7C1 - mappingOffset = 245B - Mapping = - C0CC C0CD 9FDA 9FDB C0CE 9FDC 9FDD 9FDE - C0CF C0D0 C0D1 9FDF 9FE0 9FE1 9FE2 C0D2 - C0D3 C0D4 9FE3 C0D5 C0D6 C0D7 C0D8 9FE4 - 9FE5 9FE6 C0D9 9FE7 C0DA C0DB 9FE8 9FE9 - C0DC 9FEA C0DD C0DE C0DF 9FEB C0E0 9FEC - 9FED 9FEE 9FEF 9FF0 C0E1 C0E2 9FF1 C0E3 - C0E4 C0E5 C0E6 9FF2 9FF3 9FF4 9FF5 9FF6 - C0E7 C0E8 9FF7 9FF8 C0E9 9FF9 9FFA 9FFB - C0EA 9FFC 9FFD 9FFE A041 A042 A043 A044 - C0EB C0EC A045 C0ED C0EE C0EF -End of Item 0AE8 - -Begin of Item 0AE9 - Format 1 - srcBegin = C7C8 - srcEnd = C7D0 - mappingOffset = 24A9 - Mapping = - C0F0 C0F1 A04C A04D C0F2 A04E C0F3 A04F - C0F4 -End of Item 0AE9 - -Begin of Item 0AEA - Format 1 - srcBegin = C7D8 - srcEnd = C7DD - mappingOffset = 24B2 - Mapping = - C0F5 A057 A058 A059 A05A C0F6 -End of Item 0AEA - -Begin of Item 0AEB - Format 1 - srcBegin = C7E4 - srcEnd = C7EC - mappingOffset = 24B8 - Mapping = - C0F7 A067 A068 A069 C0F8 A06A A06B A06C - C0F9 -End of Item 0AEB - -Begin of Item 0AEC - Format 1 - srcBegin = C7FB - srcEnd = C824 - mappingOffset = 24C1 - Mapping = - A081 A082 A083 A084 A085 C0FA C0FB A086 - A087 C0FC A088 A089 A08A C0FD A08B C0FE - A08C A08D A08E A08F A090 C1A1 C1A2 A091 - C1A3 A092 C1A4 C1A5 A093 A094 A095 A096 - A097 C1A6 C1A7 A098 A099 C1A8 A09A A09B - A09C C1A9 -End of Item 0AEC - -Begin of Item 0AED - Format 1 - srcBegin = C82C - srcEnd = C831 - mappingOffset = 24EB - Mapping = - C1AA C1AB A0A4 C1AC A0A5 C1AD -End of Item 0AED - -Begin of Item 0AEE - Format 1 - srcBegin = C838 - srcEnd = C840 - mappingOffset = 24F1 - Mapping = - C1AE A0AC A0AD A0AE C1AF A0AF A0B0 A0B1 - C1B0 -End of Item 0AEE - -Begin of Item 0AEF - Format 1 - srcBegin = C848 - srcEnd = C84D - mappingOffset = 24FA - Mapping = - C1B1 C1B2 A0B9 A0BA C1B3 C1B4 -End of Item 0AEF - -Begin of Item 0AF0 - Format 2 - srcBegin = C854 - destBegin = C1B5 -End of Item 0AF0 - -Begin of Item 0AF1 - Format 1 - srcBegin = C870 - srcEnd = C88D - mappingOffset = 2500 - Mapping = - C1B6 C1B7 A0DC A0DD C1B8 A0DE A0DF A0E0 - C1B9 A0E1 C1BA A0E2 A0E3 A0E4 A0E5 A0E6 - C1BB C1BC A0E7 C1BD A0E8 C1BE C1BF C1C0 - A0E9 A0EA A0EB C1C1 C1C2 C1C3 -End of Item 0AF1 - -Begin of Item 0AF2 - Format 2 - srcBegin = C894 - destBegin = C1C4 -End of Item 0AF2 - -Begin of Item 0AF3 - Format 1 - srcBegin = C89D - srcEnd = C8A8 - mappingOffset = 251E - Mapping = - C1C5 A0FA C1C6 A0FB C1C7 A0FC A0FD A0FE - A141 A142 A143 C1C8 -End of Item 0AF3 - -Begin of Item 0AF4 - Format 1 - srcBegin = C8BC - srcEnd = C8CC - mappingOffset = 252A - Mapping = - C1C9 C1CA A157 A158 A159 A15A A161 A162 - C1CB A163 A164 A165 C1CC A166 A167 A168 - C1CD -End of Item 0AF4 - -Begin of Item 0AF5 - Format 1 - srcBegin = C8D4 - srcEnd = C8D9 - mappingOffset = 253B - Mapping = - C1CE C1CF A170 C1D0 A171 C1D1 -End of Item 0AF5 - -Begin of Item 0AF6 - Format 1 - srcBegin = C8E0 - srcEnd = C8E5 - mappingOffset = 2541 - Mapping = - C1D2 C1D3 A178 A179 C1D4 A17A -End of Item 0AF6 - -Begin of Item 0AF7 - Format 2 - srcBegin = C8F5 - destBegin = C1D5 -End of Item 0AF7 - -Begin of Item 0AF8 - Format 1 - srcBegin = C8FC - srcEnd = C911 - mappingOffset = 2547 - Mapping = - C1D6 C1D7 A196 A197 C1D8 A198 A199 A19A - C1D9 C1DA C1DB A19B A19C A19D A19E A19F - C1DC C1DD A1A0 C1DE A241 C1DF -End of Item 0AF8 - -Begin of Item 0AF9 - Format 2 - srcBegin = C918 - destBegin = C1E0 -End of Item 0AF9 - -Begin of Item 0AFA - Format 2 - srcBegin = C92C - destBegin = C1E1 -End of Item 0AFA - -Begin of Item 0AFB - Format 2 - srcBegin = C934 - destBegin = C1E2 -End of Item 0AFB - -Begin of Item 0AFC - Format 1 - srcBegin = C950 - srcEnd = C958 - mappingOffset = 255D - Mapping = - C1E3 C1E4 A289 A28A C1E5 A28B A28C A28D - C1E6 -End of Item 0AFC - -Begin of Item 0AFD - Format 1 - srcBegin = C960 - srcEnd = C963 - mappingOffset = 2566 - Mapping = - C1E7 C1E8 A295 C1E9 -End of Item 0AFD - -Begin of Item 0AFE - Format 1 - srcBegin = C96C - srcEnd = C974 - mappingOffset = 256A - Mapping = - C1EA A29E A29F A2A0 C1EB A341 A342 A343 - C1EC -End of Item 0AFE - -Begin of Item 0AFF - Format 2 - srcBegin = C97C - destBegin = C1ED -End of Item 0AFF - -Begin of Item 0B00 - Format 1 - srcBegin = C988 - srcEnd = C990 - mappingOffset = 2573 - Mapping = - C1EE C1EF A356 A357 C1F0 A358 A359 A35A - C1F1 -End of Item 0B00 - -Begin of Item 0B01 - Format 1 - srcBegin = C998 - srcEnd = C99D - mappingOffset = 257C - Mapping = - C1F2 C1F3 A368 C1F4 A369 C1F5 -End of Item 0B01 - -Begin of Item 0B02 - Format 1 - srcBegin = C9C0 - srcEnd = C9F1 - mappingOffset = 2582 - Mapping = - C1F6 C1F7 A392 A393 C1F8 A394 A395 C1F9 - C1FA A396 C1FB A397 A398 A399 A39A A39B - C1FC C1FD A39C C1FE A39D C2A1 C2A2 A39E - A39F C2A3 C2A4 A3A0 C2A5 C2A6 A441 A442 - C2A7 A443 C2A8 A444 C2A9 A445 A446 C2AA - A447 A448 A449 A44A C2AB C2AC A44B C2AD - C2AE C2AF -End of Item 0B02 - -Begin of Item 0B03 - Format 1 - srcBegin = C9F8 - srcEnd = CA0D - mappingOffset = 25B4 - Mapping = - C2B0 C2B1 A452 A453 C2B2 A454 A455 A456 - C2B3 A457 A458 A459 A45A A461 A462 A463 - C2B4 C2B5 A464 C2B6 C2B7 C2B8 -End of Item 0B03 - -Begin of Item 0B04 - Format 1 - srcBegin = CA14 - srcEnd = CA18 - mappingOffset = 25CA - Mapping = - C2B9 A46B A46C A46D C2BA -End of Item 0B04 - -Begin of Item 0B05 - Format 1 - srcBegin = CA26 - srcEnd = CA29 - mappingOffset = 25CF - Mapping = - A481 A482 A483 C2BB -End of Item 0B05 - -Begin of Item 0B06 - Format 1 - srcBegin = CA47 - srcEnd = CA54 - mappingOffset = 25D3 - Mapping = - A541 A542 A543 A544 A545 C2BC C2BD A546 - A547 C2BE A548 A549 A54A C2BF -End of Item 0B06 - -Begin of Item 0B07 - Format 1 - srcBegin = CA5C - srcEnd = CA61 - mappingOffset = 25E1 - Mapping = - C2C0 C2C1 A552 C2C2 C2C3 C2C4 -End of Item 0B07 - -Begin of Item 0B08 - Format 1 - srcBegin = CA68 - srcEnd = CA6A - mappingOffset = 25E7 - Mapping = - C2C5 A559 A55A -End of Item 0B08 - -Begin of Item 0B09 - Format 2 - srcBegin = CA7D - destBegin = C2C6 -End of Item 0B09 - -Begin of Item 0B0A - Format 1 - srcBegin = CA84 - srcEnd = CA86 - mappingOffset = 25EA - Mapping = - C2C7 A579 A57A -End of Item 0B0A - -Begin of Item 0B0B - Format 2 - srcBegin = CA98 - destBegin = C2C8 -End of Item 0B0B - -Begin of Item 0B0C - Format 1 - srcBegin = CABC - srcEnd = CAC5 - mappingOffset = 25ED - Mapping = - C2C9 C2CA A655 A656 C2CB A657 A658 A659 - C2CC A65A -End of Item 0B0C - -Begin of Item 0B0D - Format 1 - srcBegin = CACC - srcEnd = CAD9 - mappingOffset = 25F7 - Mapping = - C2CD C2CE A667 C2CF A668 C2D0 A669 C2D1 - A66A A66B A66C A66D C2D2 C2D3 -End of Item 0B0D - -Begin of Item 0B0E - Format 2 - srcBegin = CAE0 - destBegin = C2D4 -End of Item 0B0E - -Begin of Item 0B0F - Format 1 - srcBegin = CAE8 - srcEnd = CAEC - mappingOffset = 2605 - Mapping = - A681 A682 A683 A684 C2D5 -End of Item 0B0F - -Begin of Item 0B10 - Format 2 - srcBegin = CAF4 - destBegin = C2D6 -End of Item 0B10 - -Begin of Item 0B11 - Format 1 - srcBegin = CB08 - srcEnd = CB18 - mappingOffset = 260A - Mapping = - C2D7 A69F A6A0 A741 A742 A743 A744 A745 - C2D8 A746 A747 A748 C2D9 A749 A74A A74B - C2DA -End of Item 0B11 - -Begin of Item 0B12 - Format 1 - srcBegin = CB20 - srcEnd = CB21 - mappingOffset = 261B - Mapping = - C2DB C2DC -End of Item 0B12 - -Begin of Item 0B13 - Format 1 - srcBegin = CB41 - srcEnd = CB50 - mappingOffset = 261D - Mapping = - C2DD A778 A779 A77A A781 A782 A783 C2DE - C2DF A784 A785 C2E0 A786 A787 A788 C2E1 -End of Item 0B13 - -Begin of Item 0B14 - Format 1 - srcBegin = CB58 - srcEnd = CB5D - mappingOffset = 262D - Mapping = - C2E2 C2E3 A790 A791 A792 C2E4 -End of Item 0B14 - -Begin of Item 0B15 - Format 2 - srcBegin = CB64 - destBegin = C2E5 -End of Item 0B15 - -Begin of Item 0B16 - Format 1 - srcBegin = CB78 - srcEnd = CB79 - mappingOffset = 2633 - Mapping = - C2E6 C2E7 -End of Item 0B16 - -Begin of Item 0B17 - Format 2 - srcBegin = CB9C - destBegin = C2E8 -End of Item 0B17 - -Begin of Item 0B18 - Format 2 - srcBegin = CBB8 - destBegin = C2E9 -End of Item 0B18 - -Begin of Item 0B19 - Format 2 - srcBegin = CBD4 - destBegin = C2EA -End of Item 0B19 - -Begin of Item 0B1A - Format 1 - srcBegin = CBE0 - srcEnd = CBE9 - mappingOffset = 2635 - Mapping = - A961 A962 A963 A964 C2EB A965 A966 C2EC - A967 C2ED -End of Item 0B1A - -Begin of Item 0B1B - Format 1 - srcBegin = CC0C - srcEnd = CC14 - mappingOffset = 263F - Mapping = - C2EE C2EF A990 A991 C2F0 A992 A993 A994 - C2F1 -End of Item 0B1B - -Begin of Item 0B1C - Format 1 - srcBegin = CC1C - srcEnd = CC30 - mappingOffset = 2648 - Mapping = - C2F2 C2F3 A99C A99D A99E C2F4 C2F5 A99F - A9A0 AA41 AA42 C2F6 C2F7 C2F8 AA43 AA44 - C2F9 AA45 C2FA AA46 C2FB -End of Item 0B1C - -Begin of Item 0B1D - Format 1 - srcBegin = CC38 - srcEnd = CC59 - mappingOffset = 265D - Mapping = - C2FC C2FD AA4E C2FE C3A1 C3A2 C3A3 AA4F - AA50 AA51 AA52 AA53 C3A4 C3A5 AA54 AA55 - C3A6 AA56 AA57 AA58 C3A7 AA59 AA5A AA61 - AA62 AA63 AA64 AA65 C3A8 C3A9 AA66 C3AA - C3AB C3AC -End of Item 0B1D - -Begin of Item 0B1E - Format 1 - srcBegin = CC60 - srcEnd = CC68 - mappingOffset = 267F - Mapping = - C3AD AA6D AA6E AA6F C3AE AA70 C3AF AA71 - C3B0 -End of Item 0B1E - -Begin of Item 0B1F - Format 1 - srcBegin = CC70 - srcEnd = CC75 - mappingOffset = 2688 - Mapping = - C3B1 AA79 AA7A AA81 AA82 C3B2 -End of Item 0B1F - -Begin of Item 0B20 - Format 1 - srcBegin = CC94 - srcEnd = CCA0 - mappingOffset = 268E - Mapping = - AB41 AB42 AB43 AB44 C3B3 C3B4 AB45 AB46 - C3B5 AB47 AB48 AB49 C3B6 -End of Item 0B20 - -Begin of Item 0B21 - Format 1 - srcBegin = CCA8 - srcEnd = CCAD - mappingOffset = 269B - Mapping = - C3B7 C3B8 AB51 C3B9 C3BA C3BB -End of Item 0B21 - -Begin of Item 0B22 - Format 1 - srcBegin = CCB4 - srcEnd = CCBC - mappingOffset = 26A1 - Mapping = - C3BC C3BD AB58 AB59 C3BE AB5A AB61 AB62 - C3BF -End of Item 0B22 - -Begin of Item 0B23 - Format 1 - srcBegin = CCC4 - srcEnd = CCC9 - mappingOffset = 26AA - Mapping = - C3C0 C3C1 AB6A C3C2 AB6B C3C3 -End of Item 0B23 - -Begin of Item 0B24 - Format 1 - srcBegin = CCD0 - srcEnd = CCD4 - mappingOffset = 26B0 - Mapping = - C3C4 AB72 AB73 AB74 C3C5 -End of Item 0B24 - -Begin of Item 0B25 - Format 2 - srcBegin = CCE4 - destBegin = C3C6 -End of Item 0B25 - -Begin of Item 0B26 - Format 1 - srcBegin = CCEC - srcEnd = CCF0 - mappingOffset = 26B5 - Mapping = - C3C7 AB91 AB92 AB93 C3C8 -End of Item 0B26 - -Begin of Item 0B27 - Format 1 - srcBegin = CCFE - srcEnd = CD01 - mappingOffset = 26BA - Mapping = - AC41 AC42 AC43 C3C9 -End of Item 0B27 - -Begin of Item 0B28 - Format 1 - srcBegin = CD08 - srcEnd = CD10 - mappingOffset = 26BE - Mapping = - C3CA C3CB AC4A AC4B C3CC AC4C AC4D AC4E - C3CD -End of Item 0B28 - -Begin of Item 0B29 - Format 1 - srcBegin = CD18 - srcEnd = CD2C - mappingOffset = 26C7 - Mapping = - C3CE C3CF AC56 C3D0 AC57 C3D1 AC58 AC59 - AC5A AC61 AC62 AC63 C3D2 AC64 AC65 AC66 - C3D3 AC67 AC68 AC69 C3D4 -End of Item 0B29 - -Begin of Item 0B2A - Format 1 - srcBegin = CD39 - srcEnd = CD3E - mappingOffset = 26DC - Mapping = - C3D5 AC76 AC77 AC78 AC79 AC7A -End of Item 0B2A - -Begin of Item 0B2B - Format 1 - srcBegin = CD5C - srcEnd = CD64 - mappingOffset = 26E2 - Mapping = - C3D6 AC9E AC9F ACA0 C3D7 AD41 AD42 AD43 - C3D8 -End of Item 0B2B - -Begin of Item 0B2C - Format 1 - srcBegin = CD6C - srcEnd = CD71 - mappingOffset = 26EB - Mapping = - C3D9 C3DA AD4B C3DB AD4C C3DC -End of Item 0B2C - -Begin of Item 0B2D - Format 2 - srcBegin = CD78 - destBegin = C3DD -End of Item 0B2D - -Begin of Item 0B2E - Format 2 - srcBegin = CD88 - destBegin = C3DE -End of Item 0B2E - -Begin of Item 0B2F - Format 1 - srcBegin = CD94 - srcEnd = CDA9 - mappingOffset = 26F1 - Mapping = - C3DF C3E0 AD73 AD74 C3E1 AD75 AD76 AD77 - C3E2 AD78 AD79 AD7A AD81 AD82 AD83 AD84 - C3E3 C3E4 AD85 C3E5 AD86 C3E6 -End of Item 0B2F - -Begin of Item 0B30 - Format 2 - srcBegin = CDB0 - destBegin = C3E7 -End of Item 0B30 - -Begin of Item 0B31 - Format 1 - srcBegin = CDC4 - srcEnd = CDC5 - mappingOffset = 2707 - Mapping = - C3E8 ADA0 -End of Item 0B31 - -Begin of Item 0B32 - Format 1 - srcBegin = CDCC - srcEnd = CDD0 - mappingOffset = 2709 - Mapping = - C3E9 AE47 AE48 AE49 C3EA -End of Item 0B32 - -Begin of Item 0B33 - Format 1 - srcBegin = CDE8 - srcEnd = CDF0 - mappingOffset = 270E - Mapping = - C3EB AE67 AE68 AE69 C3EC AE6A AE6B AE6C - C3ED -End of Item 0B33 - -Begin of Item 0B34 - Format 1 - srcBegin = CDF8 - srcEnd = CE0C - mappingOffset = 2717 - Mapping = - C3EE C3EF AE74 C3F0 AE75 C3F1 AE76 AE77 - AE78 AE79 AE7A AE81 C3F2 AE82 AE83 AE84 - C3F3 AE85 AE86 AE87 C3F4 -End of Item 0B34 - -Begin of Item 0B35 - Format 1 - srcBegin = CE14 - srcEnd = CE19 - mappingOffset = 272C - Mapping = - C3F5 AE8F AE90 AE91 AE92 C3F6 -End of Item 0B35 - -Begin of Item 0B36 - Format 1 - srcBegin = CE20 - srcEnd = CE35 - mappingOffset = 2732 - Mapping = - C3F7 C3F8 AE99 AE9A C3F9 AE9B AE9C AE9D - C3FA AE9E AE9F AEA0 AF41 AF42 AF43 AF44 - C3FB C3FC AF45 C3FD AF46 C3FE -End of Item 0B36 - -Begin of Item 0B37 - Format 1 - srcBegin = CE58 - srcEnd = CE61 - mappingOffset = 2748 - Mapping = - C4A1 C4A2 AF6F AF70 C4A3 AF71 AF72 C4A4 - C4A5 C4A6 -End of Item 0B37 - -Begin of Item 0B38 - Format 1 - srcBegin = CE68 - srcEnd = CE6D - mappingOffset = 2752 - Mapping = - C4A7 C4A8 AF79 C4A9 AF7A C4AA -End of Item 0B38 - -Begin of Item 0B39 - Format 1 - srcBegin = CE74 - srcEnd = CE7C - mappingOffset = 2758 - Mapping = - C4AB C4AC AF87 AF88 C4AD AF89 AF8A AF8B - C4AE -End of Item 0B39 - -Begin of Item 0B3A - Format 1 - srcBegin = CE84 - srcEnd = CE89 - mappingOffset = 2761 - Mapping = - C4AF C4B0 AF93 C4B1 AF94 C4B2 -End of Item 0B3A - -Begin of Item 0B3B - Format 1 - srcBegin = CE90 - srcEnd = CE99 - mappingOffset = 2767 - Mapping = - C4B3 C4B4 AF9B AF9C C4B5 AF9D AF9E AF9F - C4B6 AFA0 -End of Item 0B3B - -Begin of Item 0B3C - Format 1 - srcBegin = CEA0 - srcEnd = CEA5 - mappingOffset = 2771 - Mapping = - C4B7 C4B8 B047 C4B9 C4BA C4BB -End of Item 0B3C - -Begin of Item 0B3D - Format 1 - srcBegin = CEAC - srcEnd = CEAD - mappingOffset = 2777 - Mapping = - C4BC C4BD -End of Item 0B3D - -Begin of Item 0B3E - Format 2 - srcBegin = CEC1 - destBegin = C4BE -End of Item 0B3E - -Begin of Item 0B3F - Format 1 - srcBegin = CEE4 - srcEnd = CEEC - mappingOffset = 2779 - Mapping = - C4BF C4C0 B08F B090 C4C1 B091 B092 C4C2 - C4C3 -End of Item 0B3F - -Begin of Item 0B40 - Format 1 - srcBegin = CEF4 - srcEnd = CEF9 - mappingOffset = 2782 - Mapping = - C4C4 C4C5 B09A C4C6 C4C7 C4C8 -End of Item 0B40 - -Begin of Item 0B41 - Format 1 - srcBegin = CF00 - srcEnd = CF08 - mappingOffset = 2788 - Mapping = - C4C9 C4CA B141 B142 C4CB B143 B144 B145 - C4CC -End of Item 0B41 - -Begin of Item 0B42 - Format 1 - srcBegin = CF10 - srcEnd = CF15 - mappingOffset = 2791 - Mapping = - C4CD C4CE B14D C4CF B14E C4D0 -End of Item 0B42 - -Begin of Item 0B43 - Format 1 - srcBegin = CF1C - srcEnd = CF24 - mappingOffset = 2797 - Mapping = - C4D1 B155 B156 B157 C4D2 B158 B159 B15A - C4D3 -End of Item 0B43 - -Begin of Item 0B44 - Format 1 - srcBegin = CF2C - srcEnd = CF31 - mappingOffset = 27A0 - Mapping = - C4D4 C4D5 B168 C4D6 C4D7 C4D8 -End of Item 0B44 - -Begin of Item 0B45 - Format 2 - srcBegin = CF38 - destBegin = C4D9 -End of Item 0B45 - -Begin of Item 0B46 - Format 1 - srcBegin = CF54 - srcEnd = CF5C - mappingOffset = 27A6 - Mapping = - C4DA C4DB B190 B191 C4DC B192 B193 B194 - C4DD -End of Item 0B46 - -Begin of Item 0B47 - Format 1 - srcBegin = CF64 - srcEnd = CF78 - mappingOffset = 27AF - Mapping = - C4DE C4DF B19C C4E0 B19D C4E1 B19E B19F - B1A0 B241 B242 B243 C4E2 C4E3 B244 B245 - C4E4 B246 B247 B248 C4E5 -End of Item 0B47 - -Begin of Item 0B48 - Format 1 - srcBegin = CF80 - srcEnd = CF85 - mappingOffset = 27C4 - Mapping = - C4E6 B250 B251 B252 B253 C4E7 -End of Item 0B48 - -Begin of Item 0B49 - Format 1 - srcBegin = CF8C - srcEnd = CF8D - mappingOffset = 27CA - Mapping = - C4E8 B25A -End of Item 0B49 - -Begin of Item 0B4A - Format 2 - srcBegin = CFA1 - destBegin = C4E9 -End of Item 0B4A - -Begin of Item 0B4B - Format 1 - srcBegin = CFA8 - srcEnd = CFA9 - mappingOffset = 27CC - Mapping = - C4EA B27A -End of Item 0B4B - -Begin of Item 0B4C - Format 2 - srcBegin = CFB0 - destBegin = C4EB -End of Item 0B4C - -Begin of Item 0B4D - Format 2 - srcBegin = CFC4 - destBegin = C4EC -End of Item 0B4D - -Begin of Item 0B4E - Format 1 - srcBegin = CFE0 - srcEnd = CFE9 - mappingOffset = 27CE - Mapping = - C4ED C4EE B355 B356 C4EF B357 B358 B359 - C4F0 B35A -End of Item 0B4E - -Begin of Item 0B4F - Format 1 - srcBegin = CFF0 - srcEnd = CFF5 - mappingOffset = 27D8 - Mapping = - C4F1 C4F2 B367 C4F3 B368 C4F4 -End of Item 0B4F - -Begin of Item 0B50 - Format 1 - srcBegin = CFFC - srcEnd = D004 - mappingOffset = 27DE - Mapping = - C4F5 B36F B370 B371 C4F6 B372 B373 B374 - C4F7 -End of Item 0B50 - -Begin of Item 0B51 - Format 2 - srcBegin = D011 - destBegin = C4F8 -End of Item 0B51 - -Begin of Item 0B52 - Format 2 - srcBegin = D018 - destBegin = C4F9 -End of Item 0B52 - -Begin of Item 0B53 - Format 2 - srcBegin = D02D - destBegin = C4FA -End of Item 0B53 - -Begin of Item 0B54 - Format 1 - srcBegin = D034 - srcEnd = D03C - mappingOffset = 27E7 - Mapping = - C4FB C4FC B447 B448 C4FD B449 B44A B44B - C4FE -End of Item 0B54 - -Begin of Item 0B55 - Format 1 - srcBegin = D044 - srcEnd = D049 - mappingOffset = 27F0 - Mapping = - C5A1 C5A2 B453 C5A3 B454 C5A4 -End of Item 0B55 - -Begin of Item 0B56 - Format 1 - srcBegin = D050 - srcEnd = D058 - mappingOffset = 27F6 - Mapping = - C5A5 B461 B462 B463 C5A6 B464 B465 B466 - C5A7 -End of Item 0B56 - -Begin of Item 0B57 - Format 2 - srcBegin = D060 - destBegin = C5A8 -End of Item 0B57 - -Begin of Item 0B58 - Format 1 - srcBegin = D06C - srcEnd = D074 - mappingOffset = 27FF - Mapping = - C5A9 C5AA B479 B47A C5AB B481 B482 B483 - C5AC -End of Item 0B58 - -Begin of Item 0B59 - Format 1 - srcBegin = D07C - srcEnd = D081 - mappingOffset = 2808 - Mapping = - C5AD C5AE B48B B48C B48D C5AF -End of Item 0B59 - -Begin of Item 0B5A - Format 1 - srcBegin = D0A4 - srcEnd = D0AC - mappingOffset = 280E - Mapping = - C5B0 C5B1 B550 B551 C5B2 B552 B553 B554 - C5B3 -End of Item 0B5A - -Begin of Item 0B5B - Format 1 - srcBegin = D0B3 - srcEnd = D0B9 - mappingOffset = 2817 - Mapping = - B561 C5B4 C5B5 B562 C5B6 B563 C5B7 -End of Item 0B5B - -Begin of Item 0B5C - Format 1 - srcBegin = D0C0 - srcEnd = D0C9 - mappingOffset = 281E - Mapping = - C5B8 C5B9 B56A B56B C5BA B56C B56D B56E - C5BB C5BC -End of Item 0B5C - -Begin of Item 0B5D - Format 1 - srcBegin = D0D0 - srcEnd = D0E4 - mappingOffset = 2828 - Mapping = - C5BD C5BE B575 C5BF C5C0 C5C1 B576 B577 - B578 B579 B57A B581 C5C2 C5C3 B582 B583 - C5C4 B584 B585 B586 C5C5 -End of Item 0B5D - -Begin of Item 0B5E - Format 1 - srcBegin = D0EC - srcEnd = D0F1 - mappingOffset = 283D - Mapping = - C5C6 C5C7 B58E C5C8 C5C9 C5CA -End of Item 0B5E - -Begin of Item 0B5F - Format 2 - srcBegin = D0F8 - destBegin = C5CB -End of Item 0B5F - -Begin of Item 0B60 - Format 2 - srcBegin = D10D - destBegin = C5CC -End of Item 0B60 - -Begin of Item 0B61 - Format 1 - srcBegin = D130 - srcEnd = D145 - mappingOffset = 2843 - Mapping = - C5CD C5CE B671 B672 C5CF B673 B674 B675 - C5D0 B676 C5D1 B677 B678 B679 B67A B681 - C5D2 C5D3 B682 C5D4 C5D5 C5D6 -End of Item 0B61 - -Begin of Item 0B62 - Format 1 - srcBegin = D14C - srcEnd = D154 - mappingOffset = 2859 - Mapping = - C5D7 C5D8 B689 B68A C5D9 B68B B68C B68D - C5DA -End of Item 0B62 - -Begin of Item 0B63 - Format 1 - srcBegin = D15C - srcEnd = D161 - mappingOffset = 2862 - Mapping = - C5DB C5DC B695 C5DD B696 C5DE -End of Item 0B63 - -Begin of Item 0B64 - Format 1 - srcBegin = D168 - srcEnd = D16D - mappingOffset = 2868 - Mapping = - C5DF B69D B69E B69F C5E0 B6A0 -End of Item 0B64 - -Begin of Item 0B65 - Format 2 - srcBegin = D17C - destBegin = C5E1 -End of Item 0B65 - -Begin of Item 0B66 - Format 1 - srcBegin = D184 - srcEnd = D18A - mappingOffset = 286E - Mapping = - C5E2 B756 B757 B758 C5E3 B759 B75A -End of Item 0B66 - -Begin of Item 0B67 - Format 1 - srcBegin = D1A0 - srcEnd = D1A8 - mappingOffset = 2875 - Mapping = - C5E4 C5E5 B776 B777 C5E6 B778 B779 B77A - C5E7 -End of Item 0B67 - -Begin of Item 0B68 - Format 1 - srcBegin = D1B0 - srcEnd = D1C0 - mappingOffset = 287E - Mapping = - C5E8 C5E9 B788 C5EA B789 C5EB B78A B78B - B78C B78D C5EC B78E C5ED B78F B790 B791 - C5EE -End of Item 0B68 - -Begin of Item 0B69 - Format 2 - srcBegin = D1D8 - destBegin = C5EF -End of Item 0B69 - -Begin of Item 0B6A - Format 1 - srcBegin = D1F4 - srcEnd = D1F8 - mappingOffset = 288F - Mapping = - C5F0 B86A B86B B86C C5F1 -End of Item 0B6A - -Begin of Item 0B6B - Format 1 - srcBegin = D207 - srcEnd = D209 - mappingOffset = 2894 - Mapping = - C5F2 B881 C5F3 -End of Item 0B6B - -Begin of Item 0B6C - Format 2 - srcBegin = D210 - destBegin = C5F4 -End of Item 0B6C - -Begin of Item 0B6D - Format 1 - srcBegin = D22A - srcEnd = D234 - mappingOffset = 2897 - Mapping = - B941 B942 C5F5 C5F6 B943 B944 C5F7 B945 - B946 B947 C5F8 -End of Item 0B6D - -Begin of Item 0B6E - Format 1 - srcBegin = D23C - srcEnd = D241 - mappingOffset = 28A2 - Mapping = - C5F9 C5FA B94F C5FB B950 C5FC -End of Item 0B6E - -Begin of Item 0B6F - Format 1 - srcBegin = D248 - srcEnd = D24C - mappingOffset = 28A8 - Mapping = - C5FD B957 B958 B959 B95A -End of Item 0B6F - -Begin of Item 0B70 - Format 2 - srcBegin = D25C - destBegin = C5FE -End of Item 0B70 - -Begin of Item 0B71 - Format 1 - srcBegin = D264 - srcEnd = D268 - mappingOffset = 28AD - Mapping = - C6A1 B977 B978 B979 B97A -End of Item 0B71 - -Begin of Item 0B72 - Format 1 - srcBegin = D280 - srcEnd = D295 - mappingOffset = 28B2 - Mapping = - C6A2 C6A3 B998 B999 C6A4 B99A B99B B99C - C6A5 B99D B99E B99F B9A0 BA41 BA42 BA43 - C6A6 C6A7 BA44 BA45 BA46 C6A8 -End of Item 0B72 - -Begin of Item 0B73 - Format 1 - srcBegin = D29C - srcEnd = D2A4 - mappingOffset = 28C8 - Mapping = - C6A9 BA4D BA4E BA4F C6AA BA50 BA51 BA52 - C6AB -End of Item 0B73 - -Begin of Item 0B74 - Format 1 - srcBegin = D2AC - srcEnd = D2B1 - mappingOffset = 28D1 - Mapping = - C6AC BA5A BA61 BA62 BA63 C6AD -End of Item 0B74 - -Begin of Item 0B75 - Format 1 - srcBegin = D2B8 - srcEnd = D2CB - mappingOffset = 28D7 - Mapping = - C6AE C6AF BA6A BA6B C6B0 BA6C BA6D C6B1 - C6B2 BA6E C6B3 BA6F BA70 BA71 BA72 BA73 - C6B4 C6B5 BA74 C6B6 -End of Item 0B75 - -Begin of Item 0B76 - Format 1 - srcBegin = D2D2 - srcEnd = D2DC - mappingOffset = 28EB - Mapping = - BA81 BA82 C6B7 BA83 BA84 BA85 C6B8 BA86 - BA87 BA88 C6B9 -End of Item 0B76 - -Begin of Item 0B77 - Format 1 - srcBegin = D2E4 - srcEnd = D2E5 - mappingOffset = 28F6 - Mapping = - C6BA C6BB -End of Item 0B77 - -Begin of Item 0B78 - Format 1 - srcBegin = D2F0 - srcEnd = D305 - mappingOffset = 28F8 - Mapping = - C6BC C6BD BA9A BA9B C6BE BA9C BA9D BA9E - C6BF BA9F BAA0 BB41 BB42 BB43 BB44 BB45 - C6C0 C6C1 BB46 C6C2 BB47 C6C3 -End of Item 0B78 - -Begin of Item 0B79 - Format 1 - srcBegin = D30C - srcEnd = D330 - mappingOffset = 290E - Mapping = - C6C4 C6C5 C6C6 BB4E C6C7 BB4F BB50 BB51 - C6C8 BB52 C6C9 BB53 BB54 BB55 BB56 BB57 - C6CA C6CB BB58 C6CC C6CD C6CE BB59 BB5A - BB61 C6CF BB62 BB63 C6D0 C6D1 BB64 BB65 - C6D2 BB66 BB67 BB68 C6D3 -End of Item 0B79 - -Begin of Item 0B7A - Format 1 - srcBegin = D338 - srcEnd = D33D - mappingOffset = 2933 - Mapping = - C6D4 C6D5 BB70 C6D6 C6D7 C6D8 -End of Item 0B7A - -Begin of Item 0B7B - Format 1 - srcBegin = D344 - srcEnd = D349 - mappingOffset = 2939 - Mapping = - C6D9 C6DA BB77 BB78 BB79 BB7A -End of Item 0B7B - -Begin of Item 0B7C - Format 1 - srcBegin = D37C - srcEnd = D391 - mappingOffset = 293F - Mapping = - C6DB C6DC BC53 BC54 C6DD BC55 BC56 BC57 - C6DE BC58 BC59 BC5A BC61 BC62 BC63 BC64 - C6DF C6E0 BC65 C6E1 C6E2 C6E3 -End of Item 0B7C - -Begin of Item 0B7D - Format 1 - srcBegin = D398 - srcEnd = D3A0 - mappingOffset = 2955 - Mapping = - C6E4 C6E5 BC6C BC6D C6E6 BC6E BC6F BC70 - C6E7 -End of Item 0B7D - -Begin of Item 0B7E - Format 1 - srcBegin = D3A8 - srcEnd = D3BC - mappingOffset = 295E - Mapping = - C6E8 C6E9 BC78 C6EA BC79 C6EB BC7A BC81 - BC82 BC83 BC84 BC85 C6EC BC86 BC87 BC88 - C6ED BC89 BC8A BC8B C6EE -End of Item 0B7E - -Begin of Item 0B7F - Format 1 - srcBegin = D3C4 - srcEnd = D3C9 - mappingOffset = 2973 - Mapping = - C6EF C6F0 BC93 BC94 C6F1 C6F2 -End of Item 0B7F - -Begin of Item 0B80 - Format 2 - srcBegin = D3D0 - destBegin = C6F3 -End of Item 0B80 - -Begin of Item 0B81 - Format 1 - srcBegin = D3D7 - srcEnd = D3D8 - mappingOffset = 2979 - Mapping = - BD41 C6F4 -End of Item 0B81 - -Begin of Item 0B82 - Format 1 - srcBegin = D3E1 - srcEnd = D3E3 - mappingOffset = 297B - Mapping = - C6F5 BD4A C6F6 -End of Item 0B82 - -Begin of Item 0B83 - Format 1 - srcBegin = D3EC - srcEnd = D401 - mappingOffset = 297E - Mapping = - C6F7 C6F8 BD53 BD54 C6F9 BD55 BD56 BD57 - C6FA BD58 BD59 BD5A BD61 BD62 BD63 BD64 - C6FB C6FC BD65 C6FD BD66 C6FE -End of Item 0B83 - -Begin of Item 0B84 - Format 2 - srcBegin = D408 - destBegin = C7A1 -End of Item 0B84 - -Begin of Item 0B85 - Format 2 - srcBegin = D41D - destBegin = C7A2 -End of Item 0B85 - -Begin of Item 0B86 - Format 1 - srcBegin = D440 - srcEnd = D444 - mappingOffset = 2994 - Mapping = - C7A3 BE49 BE4A BE4B C7A4 -End of Item 0B86 - -Begin of Item 0B87 - Format 1 - srcBegin = D45C - srcEnd = D464 - mappingOffset = 2999 - Mapping = - C7A5 BE69 BE6A BE6B C7A6 BE6C BE6D BE6E - C7A7 -End of Item 0B87 - -Begin of Item 0B88 - Format 1 - srcBegin = D46D - srcEnd = D48D - mappingOffset = 29A2 - Mapping = - C7A8 BE77 C7A9 BE78 BE79 BE7A BE81 BE82 - BE83 BE84 BE85 C7AA C7AB BE86 BE87 C7AC - BE88 BE89 C7AD C7AE BE8A C7AF BE8B BE8C - BE8D BE8E BE8F C7B0 C7B1 BE90 C7B2 BE91 - C7B3 -End of Item 0B88 - -Begin of Item 0B89 - Format 2 - srcBegin = D494 - destBegin = C7B4 -End of Item 0B89 - -Begin of Item 0B8A - Format 2 - srcBegin = D4A9 - destBegin = C7B5 -End of Item 0B8A - -Begin of Item 0B8B - Format 1 - srcBegin = D4CC - srcEnd = D4D5 - mappingOffset = 29C3 - Mapping = - C7B6 BF74 BF75 BF76 C7B7 BF77 BF78 BF79 - C7B8 BF7A -End of Item 0B8B - -Begin of Item 0B8C - Format 1 - srcBegin = D4DC - srcEnd = D4DF - mappingOffset = 29CD - Mapping = - C7B9 BF87 BF88 C7BA -End of Item 0B8C - -Begin of Item 0B8D - Format 1 - srcBegin = D4E8 - srcEnd = D4F0 - mappingOffset = 29D1 - Mapping = - C7BB BF91 BF92 BF93 C7BC BF94 BF95 BF96 - C7BD -End of Item 0B8D - -Begin of Item 0B8E - Format 1 - srcBegin = D4F8 - srcEnd = D4FD - mappingOffset = 29DA - Mapping = - C7BE BF9E BF9F C7BF BFA0 C7C0 -End of Item 0B8E - -Begin of Item 0B8F - Format 1 - srcBegin = D504 - srcEnd = D50C - mappingOffset = 29E0 - Mapping = - C7C1 C047 C048 C049 C7C2 C04A C04B C04C - C7C3 -End of Item 0B8F - -Begin of Item 0B90 - Format 1 - srcBegin = D514 - srcEnd = D517 - mappingOffset = 29E9 - Mapping = - C7C4 C7C5 C054 C7C6 -End of Item 0B90 - -Begin of Item 0B91 - Format 1 - srcBegin = D538 - srcEnd = D544 - mappingOffset = 29ED - Mapping = - C081 C082 C083 C084 C7C7 C7C8 C085 C086 - C7C9 C087 C088 C089 C7CA -End of Item 0B91 - -Begin of Item 0B92 - Format 1 - srcBegin = D54C - srcEnd = D551 - mappingOffset = 29FA - Mapping = - C7CB C7CC C091 C7CD C092 C7CE -End of Item 0B92 - -Begin of Item 0B93 - Format 1 - srcBegin = D558 - srcEnd = D56D - mappingOffset = 2A00 - Mapping = - C7CF C7D0 C099 C09A C7D1 C09B C09C C09D - C7D2 C09E C09F C0A0 C141 C7D3 C142 C143 - C7D4 C7D5 C144 C7D6 C145 C7D7 -End of Item 0B93 - -Begin of Item 0B94 - Format 1 - srcBegin = D574 - srcEnd = D57C - mappingOffset = 2A16 - Mapping = - C7D8 C7D9 C14C C14D C7DA C14E C14F C150 - C7DB -End of Item 0B94 - -Begin of Item 0B95 - Format 1 - srcBegin = D584 - srcEnd = D590 - mappingOffset = 2A1F - Mapping = - C7DC C7DD C158 C7DE C7DF C7E0 C159 C15A - C161 C162 C163 C164 C7E1 -End of Item 0B95 - -Begin of Item 0B96 - Format 1 - srcBegin = D5A5 - srcEnd = D5A7 - mappingOffset = 2A2C - Mapping = - C7E2 C179 C17A -End of Item 0B96 - -Begin of Item 0B97 - Format 1 - srcBegin = D5C8 - srcEnd = D5DD - mappingOffset = 2A2F - Mapping = - C7E3 C7E4 C241 C242 C7E5 C243 C244 C245 - C7E6 C246 C7E7 C247 C248 C249 C24A C24B - C7E8 C7E9 C24C C7EA C24D C7EB -End of Item 0B97 - -Begin of Item 0B98 - Format 1 - srcBegin = D5E4 - srcEnd = D5F9 - mappingOffset = 2A45 - Mapping = - C7EC C7ED C254 C255 C7EE C256 C257 C258 - C7EF C259 C25A C261 C262 C263 C264 C265 - C7F0 C7F1 C266 C7F2 C267 C7F3 -End of Item 0B98 - -Begin of Item 0B99 - Format 1 - srcBegin = D600 - srcEnd = D608 - mappingOffset = 2A5B - Mapping = - C7F4 C7F5 C26E C26F C7F6 C270 C271 C272 - C7F7 -End of Item 0B99 - -Begin of Item 0B9A - Format 1 - srcBegin = D610 - srcEnd = D615 - mappingOffset = 2A64 - Mapping = - C7F8 C7F9 C27A C7FA C7FB C7FC -End of Item 0B9A - -Begin of Item 0B9B - Format 1 - srcBegin = D61C - srcEnd = D624 - mappingOffset = 2A6A - Mapping = - C7FD C287 C288 C289 C7FE C28A C28B C28C - C8A1 -End of Item 0B9B - -Begin of Item 0B9C - Format 2 - srcBegin = D62D - destBegin = C8A2 -End of Item 0B9C - -Begin of Item 0B9D - Format 1 - srcBegin = D638 - srcEnd = D669 - mappingOffset = 2A73 - Mapping = - C8A3 C8A4 C29F C2A0 C8A5 C341 C342 C343 - C8A6 C344 C345 C346 C347 C8A7 C348 C349 - C8A8 C8A9 C34A C8AA C34B C8AB C34C C34D - C34E C8AC C34F C350 C8AD C8AE C351 C352 - C8AF C353 C354 C355 C8B0 C356 C357 C358 - C359 C35A C361 C362 C363 C364 C365 C8B1 - C366 C8B2 -End of Item 0B9D - -Begin of Item 0B9E - Format 1 - srcBegin = D670 - srcEnd = D674 - mappingOffset = 2AA5 - Mapping = - C8B3 C8B4 C36D C36E C8B5 -End of Item 0B9E - -Begin of Item 0B9F - Format 1 - srcBegin = D681 - srcEnd = D685 - mappingOffset = 2AAA - Mapping = - C381 C382 C8B6 C383 C8B7 -End of Item 0B9F - -Begin of Item 0BA0 - Format 1 - srcBegin = D68C - srcEnd = D694 - mappingOffset = 2AAF - Mapping = - C8B8 C8B9 C38A C38B C8BA C38C C38D C38E - C8BB -End of Item 0BA0 - -Begin of Item 0BA1 - Format 1 - srcBegin = D69D - srcEnd = D6A1 - mappingOffset = 2AB8 - Mapping = - C8BC C397 C8BD C398 C8BE -End of Item 0BA1 - -Begin of Item 0BA2 - Format 1 - srcBegin = D6A8 - srcEnd = D6B0 - mappingOffset = 2ABD - Mapping = - C8BF C39F C3A0 C441 C8C0 C442 C443 C444 - C8C1 -End of Item 0BA2 - -Begin of Item 0BA3 - Format 1 - srcBegin = D6B9 - srcEnd = D6BB - mappingOffset = 2AC6 - Mapping = - C8C2 C44D C8C3 -End of Item 0BA3 - -Begin of Item 0BA4 - Format 1 - srcBegin = D6C4 - srcEnd = D6D9 - mappingOffset = 2AC9 - Mapping = - C8C4 C8C5 C456 C457 C8C6 C458 C459 C45A - C8C7 C461 C462 C463 C464 C8C8 C465 C466 - C8C9 C467 C468 C8CA C469 C8CB -End of Item 0BA4 - -Begin of Item 0BA5 - Format 1 - srcBegin = D6E0 - srcEnd = D6F5 - mappingOffset = 2ADF - Mapping = - C8CC C470 C471 C472 C8CD C473 C474 C475 - C8CE C476 C477 C478 C479 C47A C481 C482 - C8CF C483 C484 C485 C486 C8D0 -End of Item 0BA5 - -Begin of Item 0BA6 - Format 1 - srcBegin = D6FC - srcEnd = D704 - mappingOffset = 2AF5 - Mapping = - C8D1 C8D2 C48D C48E C8D3 C48F C490 C491 - C8D4 -End of Item 0BA6 - -Begin of Item 0BA7 - Format 1 - srcBegin = D711 - srcEnd = D720 - mappingOffset = 2AFE - Mapping = - C8D5 C49E C49F C4A0 C541 C542 C543 C8D6 - C8D7 C544 C545 C8D8 C546 C547 C548 C8D9 -End of Item 0BA7 - -Begin of Item 0BA8 - Format 1 - srcBegin = D728 - srcEnd = D72D - mappingOffset = 2B0E - Mapping = - C8DA C8DB C550 C8DC C551 C8DD -End of Item 0BA8 - -Begin of Item 0BA9 - Format 1 - srcBegin = D734 - srcEnd = D73C - mappingOffset = 2B14 - Mapping = - C8DE C8DF C558 C559 C8E0 C55A C561 C562 - C8E1 -End of Item 0BA9 - -Begin of Item 0BAA - Format 1 - srcBegin = D744 - srcEnd = D749 - mappingOffset = 2B1D - Mapping = - C8E2 C56A C56B C8E3 C56C C8E4 -End of Item 0BAA - -Begin of Item 0BAB - Format 1 - srcBegin = D750 - srcEnd = D774 - mappingOffset = 2B23 - Mapping = - C8E5 C8E6 C573 C574 C8E7 C575 C8E8 C8E9 - C8EA C8EB C576 C577 C578 C579 C57A C581 - C8EC C8ED C582 C8EE C583 C8EF C584 C585 - C586 C8F0 C587 C588 C8F1 C589 C58A C58B - C8F2 C58C C58D C58E C8F3 -End of Item 0BAB - -Begin of Item 0BAC - Format 1 - srcBegin = D77C - srcEnd = D781 - mappingOffset = 2B48 - Mapping = - C8F4 C8F5 C596 C597 C598 C8F6 -End of Item 0BAC - -Begin of Item 0BAD - Format 1 - srcBegin = D788 - srcEnd = D790 - mappingOffset = 2B4E - Mapping = - C8F7 C8F8 C59F C5A0 C8F9 C641 C642 C643 - C8FA -End of Item 0BAD - -Begin of Item 0BAE - Format 1 - srcBegin = D798 - srcEnd = D79D - mappingOffset = 2B57 - Mapping = - C8FB C8FC C64B C8FD C64C C8FE -End of Item 0BAE - -Begin of Item 0BAF - Format 1 - srcBegin = F900 - srcEnd = F90D - mappingOffset = 2B5D - Mapping = - CBD0 CBD6 CBE7 CDCF CDE8 CEAD CFFB D0A2 - D0B8 D0D0 D0DD D1D4 D1D5 D1D8 -End of Item 0BAF - -Begin of Item 0BB0 - Format 1 - srcBegin = F914 - srcEnd = F932 - mappingOffset = 2B6B - Mapping = - D1E2 D1E3 D1E4 D1E5 D1E6 D1E8 D1E9 D1EA - D1EB D1ED D1EF D1F0 D1F2 D1F6 D1FA D1FC - D1FD D1FE D2A2 D2A3 D2A7 D2A8 D2A9 D2AA - D2AB D2AD D2B2 D2BE D2C2 D2C3 D2C4 -End of Item 0BB0 - -Begin of Item 0BB1 - Format 1 - srcBegin = F944 - srcEnd = F949 - mappingOffset = 2B8A - Mapping = - D2D9 D2DA D2DE D2DF D2E1 D2E2 -End of Item 0BB1 - -Begin of Item 0BB2 - Format 1 - srcBegin = F958 - srcEnd = FA0B - mappingOffset = 2B90 - Mapping = - D2F7 D2F8 D4E6 D4FC D5A5 D5AB D5AE D6B8 - D6CD D7CB D7E4 DBC5 DBE4 DCA5 DDA5 DDD5 - DDF4 DEFC DEFE DFB3 DFE1 DFE8 E0F1 E1AD - E1ED E3F5 E4A1 E4A9 E5AE E5B1 E5B2 E5B9 - E5BB E5BC E5C4 E5CE E5D0 E5D2 E5D6 E5FA - E5FB E5FC E5FE E6A1 E6A4 E6A7 E6AD E6AF - E6B0 E6B1 E6B3 E6B7 E6B8 E6BC E6C4 E6C6 - E6C7 E6CA E6D2 E6D6 E6D9 E6DC E6DF E6E1 - E6E4 E6E5 E6E6 E6E8 E6EA E6EB E6EC E6EF - E6F1 E6F2 E6F5 E6F6 E6F7 E6F9 E7A1 E7A6 - E7A9 E7AA E7AC E7AD E7B0 E7BF E7C1 E7C6 - E7C7 E7CB E7CD E7CF E7D0 E7D3 E7DF E7E4 - E7E6 E7F7 E8E7 E8E8 E8F0 E8F1 E8F7 E8F9 - E8FB E8FE E9A7 E9AC E9CC E9F7 EAC1 EAE5 - EAF4 EAF7 EAFC EAFE EBA4 EBA7 EBA9 EBAA - EBBA EBBB EBBD EBC1 EBC2 EBC6 EBC7 EBCC - EBCF EBD0 EBD1 EBD2 EBD8 ECA6 ECA7 ECAA - ECAF ECB0 ECB1 ECB2 ECB5 ECB8 ECBA ECC0 - ECC1 ECC5 ECC6 ECC9 ECCA ECD5 ECDD ECDE - ECE1 ECE4 ECE7 ECE8 ECF7 ECF8 ECFA EDA1 - EDA2 EDA3 EDEE EEDB F2BD F2FA F3B1 F4A7 - F4EE F6F4 F6F6 F7B8 F7C8 F7D3 F8DB F8F0 - FAA1 FAA2 FAE6 FCA9 -End of Item 0BB2 - -Begin of Item 0BB3 - Format 2 - srcBegin = FF3C - destBegin = A1AC -End of Item 0BB3 - -Begin of Item 0BB4 - Format 2 - srcBegin = FF5E - destBegin = A2A6 -End of Item 0BB4 - -Begin of Item 0BB5 - Format 1 - srcBegin = FFE0 - srcEnd = FFE6 - mappingOffset = 2C44 - Mapping = - A1CB A1CC A1FE A3FE FFFD A1CD A3DC -End of Item 0BB5 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0BB6, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x02F2, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x2614, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0260 */ -/* Total of Format 1 : 0x05B8 */ -/* Total of Format 2 : 0x039E */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x1221, 0x1221, 0x1122, 0x1112, 0x1221, 0x1122, 0x1221, 0x1122, -0x1122, 0x1111, 0x1111, 0x1121, 0x2221, 0x2211, 0x1111, 0x1111, -0x2111, 0x1112, 0x1111, 0x2221, 0x1111, 0x2111, 0x2212, 0x1111, -0x2211, 0x1121, 0x2121, 0x1121, 0x1111, 0x1211, 0x2211, 0x1221, -0x2212, 0x1122, 0x1221, 0x2211, 0x1121, 0x2212, 0x2211, 0x2211, -0x2112, 0x2112, 0x1111, 0x1221, 0x2111, 0x2111, 0x2111, 0x2121, -0x2111, 0x1111, 0x2211, 0x1112, 0x2211, 0x2111, 0x1122, 0x2112, -0x1111, 0x1212, 0x1112, 0x1212, 0x1122, 0x2112, 0x2112, 0x1221, -0x2212, 0x1122, 0x1211, 0x1111, 0x2121, 0x2122, 0x1212, 0x1112, -0x1221, 0x1112, 0x2212, 0x1212, 0x2112, 0x1111, 0x1112, 0x2112, -0x2112, 0x1112, 0x1121, 0x1212, 0x1122, 0x2111, 0x1212, 0x1121, -0x1111, 0x2121, 0x2222, 0x2221, 0x1212, 0x2121, 0x1221, 0x1111, -0x1111, 0x1211, 0x1111, 0x1222, 0x1221, 0x2121, 0x2111, 0x1122, -0x1121, 0x2121, 0x1212, 0x1222, 0x2211, 0x1121, 0x2211, 0x2111, -0x1121, 0x1221, 0x2111, 0x1211, 0x2212, 0x2111, 0x1111, 0x2111, -0x1121, 0x2221, 0x1211, 0x1121, 0x2122, 0x1111, 0x2111, 0x1211, -0x2121, 0x1122, 0x1111, 0x1112, 0x2222, 0x2212, 0x2211, 0x1121, -0x1221, 0x1121, 0x1222, 0x2112, 0x2211, 0x2112, 0x1221, 0x2122, -0x1211, 0x2121, 0x1111, 0x2122, 0x2222, 0x1212, 0x1122, 0x1112, -0x2121, 0x2221, 0x1112, 0x1211, 0x1211, 0x1112, 0x1221, 0x1112, -0x1111, 0x2111, 0x1111, 0x1111, 0x1111, 0x1112, 0x1111, 0x1111, -0x2111, 0x1112, 0x2111, 0x1212, 0x2122, 0x1112, 0x1111, 0x2211, -0x1221, 0x1222, 0x1112, 0x1121, 0x1222, 0x2111, 0x1111, 0x1112, -0x2221, 0x2212, 0x1221, 0x2212, 0x2212, 0x1121, 0x2211, 0x1121, -0x1112, 0x2121, 0x1111, 0x2121, 0x1211, 0x1211, 0x1121, 0x1111, -0x1112, 0x1112, 0x1111, 0x2111, 0x2221, 0x2111, 0x2112, 0x2122, -0x1111, 0x1112, 0x1121, 0x1211, 0x1222, 0x1111, 0x2121, 0x1222, -0x2222, 0x2122, 0x1222, 0x1211, 0x1121, 0x2222, 0x2111, 0x1122, -0x1221, 0x2121, 0x1112, 0x1121, 0x2221, 0x2111, 0x2112, 0x2212, -0x1111, 0x2122, 0x1212, 0x1111, 0x1112, 0x2121, 0x1121, 0x1111, -0x1122, 0x2212, 0x1211, 0x2121, 0x1222, 0x1221, 0x1212, 0x1211, -0x1211, 0x2121, 0x1122, 0x1212, 0x2221, 0x1221, 0x1122, 0x1111, -0x2122, 0x1212, 0x1112, 0x2212, 0x2212, 0x2221, 0x2112, 0x1211, -0x1222, 0x2212, 0x2212, 0x2212, 0x2211, 0x2121, 0x2222, 0x1121, -0x2112, 0x1112, 0x1121, 0x2121, 0x1112, 0x1111, 0x2112, 0x2121, -0x1211, 0x1111, 0x2112, 0x2121, 0x2221, 0x2122, 0x1212, 0x2222, -0x1122, 0x2121, 0x2222, 0x1212, 0x2221, 0x1212, 0x1111, 0x1121, -0x2121, 0x1112, 0x2111, 0x1212, 0x1121, 0x2111, 0x2111, 0x1112, -0x2222, 0x2121, 0x1122, 0x1211, 0x2121, 0x2111, 0x2121, 0x1211, -0x2111, 0x1111, 0x1122, 0x2212, 0x2112, 0x1111, 0x1212, 0x2221, -0x1112, 0x1121, 0x2121, 0x2111, 0x1121, 0x1111, 0x2212, 0x1211, -0x2221, 0x2121, 0x2212, 0x2112, 0x2211, 0x2111, 0x2222, 0x2112, -0x1222, 0x2122, 0x2212, 0x1111, 0x2222, 0x1112, 0x2112, 0x2122, -0x1111, 0x2111, 0x1112, 0x2122, 0x2221, 0x2212, 0x1212, 0x1212, -0x1221, 0x2222, 0x1211, 0x2222, 0x1112, 0x2111, 0x1211, 0x1222, -0x2112, 0x1221, 0x1221, 0x2221, 0x2212, 0x2121, 0x2221, 0x1112, -0x1111, 0x1112, 0x1112, 0x1111, 0x1212, 0x1111, 0x2221, 0x2112, -0x2111, 0x1221, 0x2221, 0x1211, 0x1111, 0x1121, 0x1211, 0x2222, -0x2222, 0x1112, 0x2222, 0x2221, 0x1212, 0x1121, 0x2212, 0x2112, -0x2111, 0x2112, 0x1111, 0x2111, 0x1111, 0x2111, 0x2211, 0x2111, -0x2212, 0x1222, 0x2222, 0x1221, 0x2211, 0x1121, 0x2121, 0x2221, -0x2212, 0x1112, 0x1121, 0x2222, 0x1122, 0x2221, 0x1212, 0x1222, -0x2122, 0x2222, 0x2121, 0x1121, 0x2121, 0x1112, 0x2212, 0x2222, -0x2111, 0x1121, 0x2121, 0x1122, 0x1111, 0x2112, 0x1221, 0x1222, -0x1122, 0x2212, 0x2122, 0x1111, 0x2121, 0x2121, 0x1122, 0x1211, -0x2112, 0x1221, 0x1211, 0x1221, 0x2212, 0x2121, 0x1122, 0x1112, -0x2122, 0x1222, 0x2122, 0x1222, 0x2212, 0x2122, 0x2122, 0x2211, -0x1221, 0x2222, 0x2222, 0x2221, 0x2112, 0x1121, 0x2112, 0x2212, -0x2122, 0x1211, 0x1122, 0x1111, 0x1111, 0x1111, 0x1111, 0x1122, -0x2111, 0x2111, 0x1111, 0x1111, 0x2112, 0x1211, 0x1111, 0x2111, -0x1111, 0x1111, 0x1111, 0x1112, 0x2111, 0x1122, 0x1112, 0x1112, -0x2111, 0x2112, 0x2111, 0x1111, 0x1121, 0x1111, 0x2122, 0x1222, -0x1211, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1221, 0x1111, -0x1222, 0x1111, 0x1111, 0x1221, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1222, 0x2111, 0x2122, 0x1111, 0x2111, -0x2211, 0x1111, 0x1222, 0x1211, 0x1111, 0x1111, 0x1111, 0x1211, -0x1112, 0x1111, 0x1111, 0x1121, 0x1111, 0x1121, 0x2112, 0x1122, -0x2112, 0x2122, 0x1211, 0x1111, 0x1112, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1212, 0x2111, 0x2221, 0x2111, -0x1111, 0x1111, 0x2121, 0x1211, 0x1112, 0x2121, 0x1122, 0x1111, -0x1111, 0x1121, 0x1111, 0x1221, 0x1112, 0x1111, 0x1111, 0x1211, -0x1111, 0x1121, 0x1211, 0x1122, 0x2221, 0x2111, 0x1111, 0x2111, -0x1112, 0x1121, 0x1121, 0x1112, 0x1112, 0x1111, 0x1111, 0x1111, -0x1112, 0x1122, 0x1221, 0x1111, 0x1111, 0x1111, 0x1111, 0x1112, -0x1111, 0x1111, 0x1111, 0x1111, 0x2111, 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x02F2 Start of MapCell Array */ -/* 0000 */ 0x0391, 0x03A1, 0xA5C1, -/* 0001 */ 0x03A3, 0x03A9, 0xA5D2, -/* 0002 */ 0x03B1, 0x03C1, 0xA5E1, -/* 0003 */ 0x03C3, 0x03C9, 0xA5F2, -/* 0004 */ 0x0410, 0x0415, 0xACA1, -/* 0005 */ 0x0416, 0x042F, 0xACA8, -/* 0006 */ 0x0430, 0x0435, 0xACD1, -/* 0007 */ 0x0436, 0x044F, 0xACD8, -/* 0008 */ 0x2160, 0x2169, 0xA5B0, -/* 0009 */ 0x2170, 0x2179, 0xA5A1, -/* 000A */ 0x2460, 0x246E, 0xA8E7, -/* 000B */ 0x2474, 0x2482, 0xA9E7, -/* 000C */ 0x249C, 0x24B5, 0xA9CD, -/* 000D */ 0x24D0, 0x24E9, 0xA8CD, -/* 000E */ 0x2543, 0x254A, 0xA6DD, -/* 000F */ 0x3008, 0x3011, 0xA1B4, -/* 0010 */ 0x3041, 0x3093, 0xAAA1, -/* 0011 */ 0x30A1, 0x30F6, 0xABA1, -/* 0012 */ 0x3131, 0x318E, 0xA4A1, -/* 0013 */ 0x3200, 0x321B, 0xA9B1, -/* 0014 */ 0x3260, 0x327B, 0xA8B1, -/* 0015 */ 0x3399, 0x33A2, 0xA7AB, -/* 0016 */ 0x33B0, 0x33B9, 0xA7BF, -/* 0017 */ 0x33BA, 0x33BF, 0xA7CE, -/* 0018 */ 0xAC10, 0xAC17, 0xB0A8, -/* 0019 */ 0xAC25, 0xAC2B, 0x8150, -/* 001A */ 0xAC41, 0xAC4A, 0x8169, -/* 001B */ 0xAC4E, 0xAC53, 0x8174, -/* 001C */ 0xAC5D, 0xAC6F, 0x8186, -/* 001D */ 0xAC95, 0xAC9B, 0x81AC, -/* 001E */ 0xACA2, 0xACA7, 0x81B4, -/* 001F */ 0xACB1, 0xACB7, 0x81BD, -/* 0020 */ 0xACCD, 0xACD4, 0x81D0, -/* 0021 */ 0xACD8, 0xACDF, 0x81D9, -/* 0022 */ 0xAD21, 0xAD28, 0x824B, -/* 0023 */ 0xAD2E, 0xAD33, 0x8255, -/* 0024 */ 0xAD3D, 0xAD43, 0x8266, -/* 0025 */ 0xAD4A, 0xAD4F, 0x826F, -/* 0026 */ 0xAD59, 0xAD60, 0x8281, -/* 0027 */ 0xAD64, 0xAD6B, 0x828A, -/* 0028 */ 0xAD91, 0xAD9B, 0x82A6, -/* 0029 */ 0xAD9E, 0xADA3, 0x82B1, -/* 002A */ 0xADA5, 0xADB6, 0x82B7, -/* 002B */ 0xADB8, 0xADBF, 0x82C9, -/* 002C */ 0xADC9, 0xADCF, 0x82D6, -/* 002D */ 0xADD4, 0xADDB, 0x82DE, -/* 002E */ 0xADE5, 0xADF7, 0x82EC, -/* 002F */ 0xAE02, 0xAE07, 0x8345, -/* 0030 */ 0xAE0E, 0xAE13, 0x834D, -/* 0031 */ 0xAE15, 0xAE1C, 0x8353, -/* 0032 */ 0xAE1D, 0xAE2F, 0x8361, -/* 0033 */ 0xAE71, 0xAE77, 0x839F, -/* 0034 */ 0xAE7E, 0xAE83, 0x83A7, -/* 0035 */ 0xAE86, 0xAE8B, 0x83AD, -/* 0036 */ 0xAE8D, 0xAEBB, 0x83B3, -/* 0037 */ 0xAEC5, 0xAECB, 0x83E6, -/* 0038 */ 0xAED2, 0xAED7, 0x83EE, -/* 0039 */ 0xAEDD, 0xAEE5, 0x83F6, -/* 003A */ 0xAEEE, 0xAEF3, 0x8446, -/* 003B */ 0xAEFD, 0xAF05, 0x8452, -/* 003C */ 0xAF11, 0xAF23, 0x8468, -/* 003D */ 0xAF24, 0xAF2B, 0x8481, -/* 003E */ 0xAF35, 0xAF3B, 0x848D, -/* 003F */ 0xAF4A, 0xAF4F, 0x849A, -/* 0040 */ 0xAF51, 0xAF5B, 0x84A0, -/* 0041 */ 0xAF5E, 0xAF63, 0x84AB, -/* 0042 */ 0xAF66, 0xAF78, 0x84B1, -/* 0043 */ 0xAF7A, 0xAF7F, 0x84C4, -/* 0044 */ 0xAF89, 0xAF8F, 0x84D0, -/* 0045 */ 0xAF96, 0xAF9B, 0x84DA, -/* 0046 */ 0xAF9D, 0xAFB7, 0x84E0, -/* 0047 */ 0xAFC1, 0xAFC6, 0x8542, -/* 0048 */ 0xAFD5, 0xAFDB, 0x854F, -/* 0049 */ 0xAFE2, 0xAFE7, 0x8561, -/* 004A */ 0xAFEA, 0xAFEF, 0x8567, -/* 004B */ 0xAFF9, 0xAFFF, 0x8572, -/* 004C */ 0xB005, 0xB00B, 0x8581, -/* 004D */ 0xB015, 0xB01B, 0x858E, -/* 004E */ 0xB01E, 0xB027, 0x8595, -/* 004F */ 0xB029, 0xB043, 0x859F, -/* 0050 */ 0xB05E, 0xB07B, 0x85C8, -/* 0051 */ 0xB085, 0xB08B, 0x85EB, -/* 0052 */ 0xB092, 0xB097, 0x85F4, -/* 0053 */ 0xB0BD, 0xB0C3, 0x864C, -/* 0054 */ 0xB0CA, 0xB0CF, 0x8654, -/* 0055 */ 0xB0D9, 0xB0DF, 0x8665, -/* 0056 */ 0xB0E6, 0xB0F0, 0x8670, -/* 0057 */ 0xB0F1, 0xB107, 0x8681, -/* 0058 */ 0xB12D, 0xB133, 0x86AC, -/* 0059 */ 0xB13A, 0xB13F, 0x86B4, -/* 005A */ 0xB149, 0xB14F, 0x86BF, -/* 005B */ 0xB161, 0xB177, 0x86D0, -/* 005C */ 0xB19E, 0xB1A7, 0x8741, -/* 005D */ 0xB1A9, 0xB1B8, 0x874B, -/* 005E */ 0xB1B9, 0xB1CB, 0x8761, -/* 005F */ 0xB1D6, 0xB1DB, 0x8781, -/* 0060 */ 0xB1E0, 0xB1E7, 0x8788, -/* 0061 */ 0xB1F1, 0xB1F8, 0x8795, -/* 0062 */ 0xB1FE, 0xB203, 0x879F, -/* 0063 */ 0xB20D, 0xB213, 0x87A9, -/* 0064 */ 0xB21A, 0xB21F, 0x87B2, -/* 0065 */ 0xB221, 0xB233, 0x87B8, -/* 0066 */ 0xB235, 0xB23B, 0x87CB, -/* 0067 */ 0xB23D, 0xB257, 0x87D2, -/* 0068 */ 0xB261, 0xB267, 0x87F3, -/* 0069 */ 0xB276, 0xB27B, 0x8846, -/* 006A */ 0xB27D, 0xB283, 0x884C, -/* 006B */ 0xB2B8, 0xB2C7, 0x8881, -/* 006C */ 0xB309, 0xB30F, 0x88B2, -/* 006D */ 0xB316, 0xB31B, 0x88BA, -/* 006E */ 0xB31D, 0xB353, 0x88C0, -/* 006F */ 0xB379, 0xB37F, 0x894C, -/* 0070 */ 0xB386, 0xB38B, 0x8954, -/* 0071 */ 0xB395, 0xB39F, 0x8966, -/* 0072 */ 0xB3A2, 0xB3A7, 0x8971, -/* 0073 */ 0xB3AE, 0xB3C3, 0x8981, -/* 0074 */ 0xB3E9, 0xB3FB, 0x89AC, -/* 0075 */ 0xB3FD, 0xB40F, 0x89BF, -/* 0076 */ 0xB411, 0xB417, 0x89D2, -/* 0077 */ 0xB421, 0xB427, 0x89DF, -/* 0078 */ 0xB42C, 0xB433, 0x89E7, -/* 0079 */ 0xB435, 0xB444, 0x89EF, -/* 007A */ 0xB445, 0xB44F, 0x8A41, -/* 007B */ 0xB459, 0xB45F, 0x8A51, -/* 007C */ 0xB46D, 0xB47F, 0x8A66, -/* 007D */ 0xB489, 0xB49C, 0x8A86, -/* 007E */ 0xB49E, 0xB4A3, 0x8A9A, -/* 007F */ 0xB4AD, 0xB4B4, 0x8AA6, -/* 0080 */ 0xB4BA, 0xB4BF, 0x8AB0, -/* 0081 */ 0xB4C9, 0xB4CF, 0x8ABC, -/* 0082 */ 0xB4D6, 0xB4DB, 0x8AC7, -/* 0083 */ 0xB4F2, 0xB4F7, 0x8AD9, -/* 0084 */ 0xB4F9, 0xB513, 0x8ADF, -/* 0085 */ 0xB51E, 0xB523, 0x8B41, -/* 0086 */ 0xB539, 0xB53F, 0x8B52, -/* 0087 */ 0xB555, 0xB55B, 0x8B6A, -/* 0088 */ 0xB562, 0xB56A, 0x8B72, -/* 0089 */ 0xB56B, 0xB59F, 0x8B81, -/* 008A */ 0xB5C5, 0xB5CB, 0x8BCB, -/* 008B */ 0xB5D2, 0xB5D7, 0x8BD3, -/* 008C */ 0xB5D9, 0xB5EB, 0x8BD9, -/* 008D */ 0xB5ED, 0xB5FF, 0x8BEC, -/* 008E */ 0xB600, 0xB60F, 0x8C41, -/* 008F */ 0xB61E, 0xB624, 0x8C61, -/* 0090 */ 0xB626, 0xB62B, 0x8C68, -/* 0091 */ 0xB62D, 0xB633, 0x8C6E, -/* 0092 */ 0xB635, 0xB63A, 0x8C75, -/* 0093 */ 0xB63B, 0xB647, 0x8C81, -/* 0094 */ 0xB649, 0xB663, 0x8C8E, -/* 0095 */ 0xB669, 0xB69B, 0x8CAC, -/* 0096 */ 0xB6A5, 0xB6AA, 0x8CE4, -/* 0097 */ 0xB6B2, 0xB6C2, 0x8CEE, -/* 0098 */ 0xB6C3, 0xB6D3, 0x8D41, -/* 0099 */ 0xB6D5, 0xB6DD, 0x8D52, -/* 009A */ 0xB6DE, 0xB6EF, 0x8D61, -/* 009B */ 0xB706, 0xB727, 0x8D89, -/* 009C */ 0xB731, 0xB737, 0x8DAF, -/* 009D */ 0xB73C, 0xB743, 0x8DB7, -/* 009E */ 0xB74D, 0xB753, 0x8DC5, -/* 009F */ 0xB756, 0xB75F, 0x8DCC, -/* 00A0 */ 0xB769, 0xB76F, 0x8DDC, -/* 00A1 */ 0xB776, 0xB77B, 0x8DE5, -/* 00A2 */ 0xB785, 0xB78B, 0x8DF0, -/* 00A3 */ 0xB7A1, 0xB7A7, 0x8E42, -/* 00A4 */ 0xB7AE, 0xB7B3, 0x8E4A, -/* 00A5 */ 0xB7B9, 0xB7C1, 0x8E52, -/* 00A6 */ 0xB7CA, 0xB7DD, 0x8E67, -/* 00A7 */ 0xB7DE, 0xB7EB, 0x8E81, -/* 00A8 */ 0xB7F5, 0xB7FB, 0x8E94, -/* 00A9 */ 0xB811, 0xB817, 0x8EA6, -/* 00AA */ 0xB81E, 0xB823, 0x8EAF, -/* 00AB */ 0xB82D, 0xB833, 0x8EBA, -/* 00AC */ 0xB83A, 0xB83F, 0x8EC2, -/* 00AD */ 0xB845, 0xB850, 0x8ECB, -/* 00AE */ 0xB854, 0xB85B, 0x8ED8, -/* 00AF */ 0xB865, 0xB86B, 0x8EE5, -/* 00B0 */ 0xB872, 0xB877, 0x8EEE, -/* 00B1 */ 0xB87D, 0xB884, 0x8EF7, -/* 00B2 */ 0xB885, 0xB88C, 0x8F41, -/* 00B3 */ 0xB88E, 0xB89F, 0x8F49, -/* 00B4 */ 0xB8A0, 0xB8A7, 0x8F61, -/* 00B5 */ 0xB8A9, 0xB8AF, 0x8F69, -/* 00B6 */ 0xB8C6, 0xB8CB, 0x8F85, -/* 00B7 */ 0xB8D5, 0xB8DC, 0x8F91, -/* 00B8 */ 0xB8E2, 0xB8E7, 0x8F9B, -/* 00B9 */ 0xB8F1, 0xB8F7, 0x8FA6, -/* 00BA */ 0xB8FE, 0xB903, 0x8FAF, -/* 00BB */ 0xB905, 0xB917, 0x8FB5, -/* 00BC */ 0xB919, 0xB91F, 0x8FC8, -/* 00BD */ 0xB921, 0xB93B, 0x8FCF, -/* 00BE */ 0xB945, 0xB94B, 0x8FEF, -/* 00BF */ 0xB952, 0xB957, 0x8FF9, -/* 00C0 */ 0xB961, 0xB967, 0x9046, -/* 00C1 */ 0xB96E, 0xB973, 0x904F, -/* 00C2 */ 0xB97E, 0xB983, 0x9061, -/* 00C3 */ 0xB98F, 0xB99E, 0x906B, -/* 00C4 */ 0xB99F, 0xB9AB, 0x9081, -/* 00C5 */ 0xB9B5, 0xB9BB, 0x9093, -/* 00C6 */ 0xB9C2, 0xB9C7, 0x909C, -/* 00C7 */ 0xB9ED, 0xB9F3, 0x90B4, -/* 00C8 */ 0xBA02, 0xBA07, 0x90C1, -/* 00C9 */ 0xBA09, 0xBA14, 0x90C7, -/* 00CA */ 0xBA16, 0xBA37, 0x90D3, -/* 00CB */ 0xBA5D, 0xBA63, 0x914D, -/* 00CC */ 0xBA6A, 0xBA6F, 0x9155, -/* 00CD */ 0xBA79, 0xBA82, 0x9166, -/* 00CE */ 0xBA8D, 0xBA92, 0x9175, -/* 00CF */ 0xBA93, 0xBAA7, 0x9181, -/* 00D0 */ 0xBABE, 0xBAC3, 0x91A2, -/* 00D1 */ 0xBAC9, 0xBAD7, 0x91AB, -/* 00D2 */ 0xBADA, 0xBAFB, 0x91BA, -/* 00D3 */ 0xBB05, 0xBB0C, 0x91E2, -/* 00D4 */ 0xBB12, 0xBB17, 0x91EC, -/* 00D5 */ 0xBB21, 0xBB27, 0x91F8, -/* 00D6 */ 0xBB2C, 0xBB33, 0x9243, -/* 00D7 */ 0xBB59, 0xBB60, 0x9265, -/* 00D8 */ 0xBB64, 0xBB6B, 0x926E, -/* 00D9 */ 0xBB72, 0xBB87, 0x9281, -/* 00DA */ 0xBB91, 0xBBA3, 0x929D, -/* 00DB */ 0xBBAD, 0xBBB3, 0x92B6, -/* 00DC */ 0xBBB8, 0xBBBF, 0x92BF, -/* 00DD */ 0xBBC9, 0xBBCF, 0x92CD, -/* 00DE */ 0xBBD4, 0xBBF7, 0x92D6, -/* 00DF */ 0xBC39, 0xBC3F, 0x9363, -/* 00E0 */ 0xBC51, 0xBC59, 0x9372, -/* 00E1 */ 0xBC5E, 0xBC83, 0x9384, -/* 00E2 */ 0xBCA9, 0xBCAF, 0x93BF, -/* 00E3 */ 0xBCB6, 0xBCBB, 0x93C7, -/* 00E4 */ 0xBCC5, 0xBCCC, 0x93D2, -/* 00E5 */ 0xBCDD, 0xBCF3, 0x93E3, -/* 00E6 */ 0xBCFE, 0xBD03, 0x9441, -/* 00E7 */ 0xBD0A, 0xBD0F, 0x9449, -/* 00E8 */ 0xBD15, 0xBD1D, 0x9452, -/* 00E9 */ 0xBD1E, 0xBD23, 0x9461, -/* 00EA */ 0xBD25, 0xBD2B, 0x9467, -/* 00EB */ 0xBD2D, 0xBD39, 0x946E, -/* 00EC */ 0xBD3A, 0xBD3F, 0x9481, -/* 00ED */ 0xBD41, 0xBD47, 0x9487, -/* 00EE */ 0xBD51, 0xBD57, 0x9493, -/* 00EF */ 0xBD5A, 0xBD63, 0x949A, -/* 00F0 */ 0xBD69, 0xBD7F, 0x94A7, -/* 00F1 */ 0xBD9D, 0xBDA3, 0x94CD, -/* 00F2 */ 0xBDA5, 0xBDAF, 0x94D4, -/* 00F3 */ 0xBDB1, 0xBDB7, 0x94DF, -/* 00F4 */ 0xBDB9, 0xBDD1, 0x94E6, -/* 00F5 */ 0xBDDD, 0xBDE8, 0x9548, -/* 00F6 */ 0xBDEA, 0xBDEF, 0x9554, -/* 00F7 */ 0xBDF9, 0xBDFF, 0x9566, -/* 00F8 */ 0xBE06, 0xBE0B, 0x9570, -/* 00F9 */ 0xBE15, 0xBE1B, 0x9581, -/* 00FA */ 0xBE20, 0xBE43, 0x9589, -/* 00FB */ 0xBE85, 0xBE8B, 0x95D4, -/* 00FC */ 0xBE92, 0xBE97, 0x95DC, -/* 00FD */ 0xBE9A, 0xBEA7, 0x95E2, -/* 00FE */ 0xBEA9, 0xBEB7, 0x95F0, -/* 00FF */ 0xBEB8, 0xBECF, 0x9641, -/* 0100 */ 0xBED9, 0xBEDF, 0x9663, -/* 0101 */ 0xBEE6, 0xBEEB, 0x966C, -/* 0102 */ 0xBEED, 0xBEF5, 0x9672, -/* 0103 */ 0xBEF6, 0xBF00, 0x9681, -/* 0104 */ 0xBF02, 0xBF07, 0x968C, -/* 0105 */ 0xBF0A, 0xBF17, 0x9692, -/* 0106 */ 0xBF1E, 0xBF3F, 0x96A1, -/* 0107 */ 0xBF49, 0xBF4F, 0x96C8, -/* 0108 */ 0xBF56, 0xBF82, 0x96D2, -/* 0109 */ 0xBF83, 0xBF93, 0x9741, -/* 010A */ 0xBF95, 0xBF9D, 0x9752, -/* 010B */ 0xBF9E, 0xBFAF, 0x9761, -/* 010C */ 0xBFB1, 0xBFB8, 0x9773, -/* 010D */ 0xBFB9, 0xBFC4, 0x9781, -/* 010E */ 0xBFC6, 0xBFCB, 0x978D, -/* 010F */ 0xBFD5, 0xBFDB, 0x9798, -/* 0110 */ 0xBFE2, 0xC03B, 0x97A2, -/* 0111 */ 0xC040, 0xC050, 0x9841, -/* 0112 */ 0xC052, 0xC057, 0x9852, -/* 0113 */ 0xC061, 0xC067, 0x9864, -/* 0114 */ 0xC06A, 0xC079, 0x986B, -/* 0115 */ 0xC07A, 0xC08F, 0x9881, -/* 0116 */ 0xC099, 0xC09F, 0x989C, -/* 0117 */ 0xC0A6, 0xC0AB, 0x98A5, -/* 0118 */ 0xC0D1, 0xC0D7, 0x98BE, -/* 0119 */ 0xC0DE, 0xC0E3, 0x98C6, -/* 011A */ 0xC0ED, 0xC0F3, 0x98D1, -/* 011B */ 0xC0FA, 0xC0FF, 0x98DA, -/* 011C */ 0xC109, 0xC10F, 0x98E6, -/* 011D */ 0xC116, 0xC11B, 0x98F1, -/* 011E */ 0xC141, 0xC147, 0x994B, -/* 011F */ 0xC14E, 0xC153, 0x9953, -/* 0120 */ 0xC15D, 0xC163, 0x9964, -/* 0121 */ 0xC16A, 0xC16F, 0x996C, -/* 0122 */ 0xC17C, 0xC184, 0x9981, -/* 0123 */ 0xC186, 0xC18B, 0x998A, -/* 0124 */ 0xC1B1, 0xC1BC, 0x99A6, -/* 0125 */ 0xC1BE, 0xC1C3, 0x99B2, -/* 0126 */ 0xC1CD, 0xC1D3, 0x99BE, -/* 0127 */ 0xC1D9, 0xC1DF, 0x99C7, -/* 0128 */ 0xC1E9, 0xC1EF, 0x99D4, -/* 0129 */ 0xC1F4, 0xC1FB, 0x99DC, -/* 012A */ 0xC205, 0xC20B, 0x99E9, -/* 012B */ 0xC212, 0xC217, 0x99F2, -/* 012C */ 0xC235, 0xC245, 0x9A4A, -/* 012D */ 0xC249, 0xC24F, 0x9A63, -/* 012E */ 0xC259, 0xC25F, 0x9A6F, -/* 012F */ 0xC275, 0xC27B, 0x9A8B, -/* 0130 */ 0xC282, 0xC287, 0x9A94, -/* 0131 */ 0xC28A, 0xC28F, 0x9A9A, -/* 0132 */ 0xC291, 0xC297, 0x9AA0, -/* 0133 */ 0xC29E, 0xC2A3, 0x9AAA, -/* 0134 */ 0xC2AE, 0xC2B3, 0x9AB5, -/* 0135 */ 0xC2BA, 0xC2DB, 0x9ABD, -/* 0136 */ 0xC2E5, 0xC2EA, 0x9AE3, -/* 0137 */ 0xC301, 0xC307, 0x9AF4, -/* 0138 */ 0xC31D, 0xC323, 0x9B49, -/* 0139 */ 0xC32A, 0xC332, 0x9B52, -/* 013A */ 0xC333, 0xC344, 0x9B61, -/* 013B */ 0xC346, 0xC34D, 0x9B73, -/* 013C */ 0xC34E, 0xC367, 0x9B81, -/* 013D */ 0xC37E, 0xC383, 0x9BA8, -/* 013E */ 0xC38D, 0xC3BF, 0x9BB4, -/* 013F */ 0xC3C1, 0xC3D7, 0x9BE7, -/* 0140 */ 0xC3EE, 0xC3F3, 0x9C4D, -/* 0141 */ 0xC3F9, 0xC3FE, 0x9C55, -/* 0142 */ 0xC3FF, 0xC407, 0x9C61, -/* 0143 */ 0xC409, 0xC40F, 0x9C6A, -/* 0144 */ 0xC411, 0xC41A, 0x9C71, -/* 0145 */ 0xC41B, 0xC423, 0x9C81, -/* 0146 */ 0xC425, 0xC42B, 0x9C8A, -/* 0147 */ 0xC435, 0xC43B, 0x9C97, -/* 0148 */ 0xC43E, 0xC447, 0x9C9E, -/* 0149 */ 0xC449, 0xC463, 0x9CA8, -/* 014A */ 0xC46D, 0xC473, 0x9CC8, -/* 014B */ 0xC47A, 0xC47F, 0x9CD2, -/* 014C */ 0xC481, 0xC493, 0x9CD8, -/* 014D */ 0xC495, 0xC49B, 0x9CEB, -/* 014E */ 0xC49D, 0xC4A9, 0x9CF2, -/* 014F */ 0xC4AA, 0xC4B7, 0x9D41, -/* 0150 */ 0xC4BD, 0xC4C5, 0x9D52, -/* 0151 */ 0xC4C6, 0xC4DF, 0x9D61, -/* 0152 */ 0xC4E0, 0xC4E8, 0x9D81, -/* 0153 */ 0xC4EA, 0xC4EF, 0x9D8A, -/* 0154 */ 0xC502, 0xC50B, 0x9D9A, -/* 0155 */ 0xC515, 0xC51B, 0x9DAA, -/* 0156 */ 0xC51D, 0xC527, 0x9DB1, -/* 0157 */ 0xC531, 0xC537, 0x9DC1, -/* 0158 */ 0xC53E, 0xC543, 0x9DCA, -/* 0159 */ 0xC569, 0xC56F, 0x9DE1, -/* 015A */ 0xC576, 0xC57B, 0x9DE9, -/* 015B */ 0xC5A1, 0xC5A8, 0x9E48, -/* 015C */ 0xC5AA, 0xC5B3, 0x9E50, -/* 015D */ 0xC5C4, 0xC5CA, 0xBEF6, -/* 015E */ 0xC5D9, 0xC5DF, 0x9E70, -/* 015F */ 0xC5FC, 0xC601, 0xBFB0, -/* 0160 */ 0xC611, 0xC617, 0x9E97, -/* 0161 */ 0xC61D, 0xC623, 0x9E9F, -/* 0162 */ 0xC649, 0xC64F, 0x9EBA, -/* 0163 */ 0xC656, 0xC65B, 0x9EC2, -/* 0164 */ 0xC661, 0xC66B, 0x9ECA, -/* 0165 */ 0xC672, 0xC677, 0x9ED8, -/* 0166 */ 0xC681, 0xC687, 0x9EE3, -/* 0167 */ 0xC68E, 0xC693, 0x9EEC, -/* 0168 */ 0xC69D, 0xC6A3, 0x9EF7, -/* 0169 */ 0xC6AA, 0xC6AF, 0x9F42, -/* 016A */ 0xC6C6, 0xC6CB, 0x9F54, -/* 016B */ 0xC6D5, 0xC6DB, 0x9F65, -/* 016C */ 0xC6E2, 0xC6E7, 0x9F6E, -/* 016D */ 0xC6FE, 0xC703, 0x9F89, -/* 016E */ 0xC70D, 0xC713, 0x9F94, -/* 016F */ 0xC71A, 0xC71F, 0x9F9D, -/* 0170 */ 0xC729, 0xC72F, 0x9FA8, -/* 0171 */ 0xC751, 0xC758, 0xC0C0, -/* 0172 */ 0xC761, 0xC767, 0x9FC9, -/* 0173 */ 0xC76C, 0xC773, 0x9FD2, -/* 0174 */ 0xC7C2, 0xC7C7, 0xA046, -/* 0175 */ 0xC7D1, 0xC7D7, 0xA050, -/* 0176 */ 0xC7DE, 0xC7E3, 0xA061, -/* 0177 */ 0xC7ED, 0xC7FA, 0xA06D, -/* 0178 */ 0xC825, 0xC82B, 0xA09D, -/* 0179 */ 0xC832, 0xC837, 0xA0A6, -/* 017A */ 0xC841, 0xC847, 0xA0B2, -/* 017B */ 0xC84E, 0xC853, 0xA0BB, -/* 017C */ 0xC855, 0xC86F, 0xA0C1, -/* 017D */ 0xC88E, 0xC893, 0xA0EC, -/* 017E */ 0xC895, 0xC89C, 0xA0F2, -/* 017F */ 0xC8A9, 0xC8BB, 0xA144, -/* 0180 */ 0xC8CD, 0xC8D3, 0xA169, -/* 0181 */ 0xC8DA, 0xC8DF, 0xA172, -/* 0182 */ 0xC8E6, 0xC8F4, 0xA181, -/* 0183 */ 0xC8F6, 0xC8FB, 0xA190, -/* 0184 */ 0xC912, 0xC917, 0xA242, -/* 0185 */ 0xC919, 0xC92B, 0xA248, -/* 0186 */ 0xC92D, 0xC933, 0xA261, -/* 0187 */ 0xC935, 0xC947, 0xA268, -/* 0188 */ 0xC948, 0xC94F, 0xA281, -/* 0189 */ 0xC959, 0xC95F, 0xA28E, -/* 018A */ 0xC964, 0xC96B, 0xA296, -/* 018B */ 0xC975, 0xC97B, 0xA344, -/* 018C */ 0xC97D, 0xC987, 0xA34B, -/* 018D */ 0xC991, 0xC997, 0xA361, -/* 018E */ 0xC99E, 0xC9AE, 0xA36A, -/* 018F */ 0xC9AF, 0xC9BF, 0xA381, -/* 0190 */ 0xC9F2, 0xC9F7, 0xA44C, -/* 0191 */ 0xCA0E, 0xCA13, 0xA465, -/* 0192 */ 0xCA19, 0xCA25, 0xA46E, -/* 0193 */ 0xCA2A, 0xCA46, 0xA484, -/* 0194 */ 0xCA55, 0xCA5B, 0xA54B, -/* 0195 */ 0xCA62, 0xCA67, 0xA553, -/* 0196 */ 0xCA6B, 0xCA7C, 0xA561, -/* 0197 */ 0xCA7E, 0xCA83, 0xA573, -/* 0198 */ 0xCA87, 0xCA97, 0xA581, -/* 0199 */ 0xCA99, 0xCAA7, 0xA592, -/* 019A */ 0xCAA8, 0xCABB, 0xA641, -/* 019B */ 0xCAC6, 0xCACB, 0xA661, -/* 019C */ 0xCADA, 0xCADF, 0xA66E, -/* 019D */ 0xCAE1, 0xCAE7, 0xA674, -/* 019E */ 0xCAED, 0xCAF3, 0xA685, -/* 019F */ 0xCAF5, 0xCB07, 0xA68C, -/* 01A0 */ 0xCB19, 0xCB1F, 0xA74C, -/* 01A1 */ 0xCB22, 0xCB29, 0xA753, -/* 01A2 */ 0xCB2A, 0xCB40, 0xA761, -/* 01A3 */ 0xCB51, 0xCB57, 0xA789, -/* 01A4 */ 0xCB5E, 0xCB63, 0xA793, -/* 01A5 */ 0xCB65, 0xCB6C, 0xA799, -/* 01A6 */ 0xCB6D, 0xCB77, 0xA841, -/* 01A7 */ 0xCB7A, 0xCB88, 0xA84C, -/* 01A8 */ 0xCB89, 0xCB9B, 0xA861, -/* 01A9 */ 0xCB9D, 0xCBA3, 0xA874, -/* 01AA */ 0xCBA4, 0xCBB7, 0xA881, -/* 01AB */ 0xCBB9, 0xCBC4, 0xA895, -/* 01AC */ 0xCBC5, 0xCBD3, 0xA941, -/* 01AD */ 0xCBD5, 0xCBDF, 0xA950, -/* 01AE */ 0xCBEA, 0xCBFC, 0xA968, -/* 01AF */ 0xCBFD, 0xCC0B, 0xA981, -/* 01B0 */ 0xCC15, 0xCC1B, 0xA995, -/* 01B1 */ 0xCC31, 0xCC37, 0xAA47, -/* 01B2 */ 0xCC5A, 0xCC5F, 0xAA67, -/* 01B3 */ 0xCC69, 0xCC6F, 0xAA72, -/* 01B4 */ 0xCC76, 0xCC93, 0xAA83, -/* 01B5 */ 0xCCA1, 0xCCA7, 0xAB4A, -/* 01B6 */ 0xCCAE, 0xCCB3, 0xAB52, -/* 01B7 */ 0xCCBD, 0xCCC3, 0xAB63, -/* 01B8 */ 0xCCCA, 0xCCCF, 0xAB6C, -/* 01B9 */ 0xCCD5, 0xCCDA, 0xAB75, -/* 01BA */ 0xCCDB, 0xCCE3, 0xAB81, -/* 01BB */ 0xCCE5, 0xCCEB, 0xAB8A, -/* 01BC */ 0xCCF1, 0xCCFD, 0xAB94, -/* 01BD */ 0xCD02, 0xCD07, 0xAC44, -/* 01BE */ 0xCD11, 0xCD17, 0xAC4F, -/* 01BF */ 0xCD2D, 0xCD38, 0xAC6A, -/* 01C0 */ 0xCD3F, 0xCD5B, 0xAC81, -/* 01C1 */ 0xCD65, 0xCD6B, 0xAD44, -/* 01C2 */ 0xCD72, 0xCD77, 0xAD4D, -/* 01C3 */ 0xCD79, 0xCD80, 0xAD53, -/* 01C4 */ 0xCD81, 0xCD87, 0xAD61, -/* 01C5 */ 0xCD89, 0xCD93, 0xAD68, -/* 01C6 */ 0xCDAA, 0xCDAF, 0xAD87, -/* 01C7 */ 0xCDB1, 0xCDC3, 0xAD8D, -/* 01C8 */ 0xCDC6, 0xCDCB, 0xAE41, -/* 01C9 */ 0xCDD1, 0xCDE1, 0xAE4A, -/* 01CA */ 0xCDE2, 0xCDE7, 0xAE61, -/* 01CB */ 0xCDF1, 0xCDF7, 0xAE6D, -/* 01CC */ 0xCE0D, 0xCE13, 0xAE88, -/* 01CD */ 0xCE1A, 0xCE1F, 0xAE93, -/* 01CE */ 0xCE36, 0xCE49, 0xAF47, -/* 01CF */ 0xCE4A, 0xCE57, 0xAF61, -/* 01D0 */ 0xCE62, 0xCE67, 0xAF73, -/* 01D1 */ 0xCE6E, 0xCE73, 0xAF81, -/* 01D2 */ 0xCE7D, 0xCE83, 0xAF8C, -/* 01D3 */ 0xCE8A, 0xCE8F, 0xAF95, -/* 01D4 */ 0xCE9A, 0xCE9F, 0xB041, -/* 01D5 */ 0xCEA6, 0xCEAB, 0xB048, -/* 01D6 */ 0xCEAE, 0xCEBA, 0xB04E, -/* 01D7 */ 0xCEBB, 0xCEC0, 0xB061, -/* 01D8 */ 0xCEC2, 0xCED5, 0xB067, -/* 01D9 */ 0xCED6, 0xCEE3, 0xB081, -/* 01DA */ 0xCEED, 0xCEF3, 0xB093, -/* 01DB */ 0xCEFA, 0xCEFF, 0xB09B, -/* 01DC */ 0xCF09, 0xCF0F, 0xB146, -/* 01DD */ 0xCF16, 0xCF1B, 0xB14F, -/* 01DE */ 0xCF25, 0xCF2B, 0xB161, -/* 01DF */ 0xCF32, 0xCF37, 0xB169, -/* 01E0 */ 0xCF39, 0xCF44, 0xB16F, -/* 01E1 */ 0xCF45, 0xCF53, 0xB181, -/* 01E2 */ 0xCF5D, 0xCF63, 0xB195, -/* 01E3 */ 0xCF79, 0xCF7F, 0xB249, -/* 01E4 */ 0xCF86, 0xCF8B, 0xB254, -/* 01E5 */ 0xCF8E, 0xCFA0, 0xB261, -/* 01E6 */ 0xCFA2, 0xCFA7, 0xB274, -/* 01E7 */ 0xCFAA, 0xCFAF, 0xB281, -/* 01E8 */ 0xCFB1, 0xCFC3, 0xB287, -/* 01E9 */ 0xCFC5, 0xCFCB, 0xB29A, -/* 01EA */ 0xCFCC, 0xCFDF, 0xB341, -/* 01EB */ 0xCFEA, 0xCFEF, 0xB361, -/* 01EC */ 0xCFF6, 0xCFFB, 0xB369, -/* 01ED */ 0xD005, 0xD00A, 0xB375, -/* 01EE */ 0xD00B, 0xD010, 0xB381, -/* 01EF */ 0xD012, 0xD017, 0xB387, -/* 01F0 */ 0xD019, 0xD02C, 0xB38D, -/* 01F1 */ 0xD02E, 0xD033, 0xB441, -/* 01F2 */ 0xD03D, 0xD043, 0xB44C, -/* 01F3 */ 0xD04A, 0xD04F, 0xB455, -/* 01F4 */ 0xD059, 0xD05F, 0xB467, -/* 01F5 */ 0xD061, 0xD06B, 0xB46E, -/* 01F6 */ 0xD075, 0xD07B, 0xB484, -/* 01F7 */ 0xD082, 0xD094, 0xB48E, -/* 01F8 */ 0xD095, 0xD0A3, 0xB541, -/* 01F9 */ 0xD0AD, 0xD0B2, 0xB555, -/* 01FA */ 0xD0BA, 0xD0BF, 0xB564, -/* 01FB */ 0xD0CA, 0xD0CF, 0xB56F, -/* 01FC */ 0xD0E5, 0xD0EB, 0xB587, -/* 01FD */ 0xD0F2, 0xD0F7, 0xB58F, -/* 01FE */ 0xD0F9, 0xD104, 0xB595, -/* 01FF */ 0xD105, 0xD10C, 0xB641, -/* 0200 */ 0xD10E, 0xD11F, 0xB649, -/* 0201 */ 0xD120, 0xD12F, 0xB661, -/* 0202 */ 0xD146, 0xD14B, 0xB683, -/* 0203 */ 0xD155, 0xD15B, 0xB68E, -/* 0204 */ 0xD162, 0xD167, 0xB697, -/* 0205 */ 0xD16E, 0xD17B, 0xB741, -/* 0206 */ 0xD17D, 0xD183, 0xB74F, -/* 0207 */ 0xD18B, 0xD19F, 0xB761, -/* 0208 */ 0xD1A9, 0xD1AF, 0xB781, -/* 0209 */ 0xD1C1, 0xD1CF, 0xB792, -/* 020A */ 0xD1D0, 0xD1D7, 0xB841, -/* 020B */ 0xD1D9, 0xD1EA, 0xB849, -/* 020C */ 0xD1EB, 0xD1F3, 0xB861, -/* 020D */ 0xD1F9, 0xD206, 0xB86D, -/* 020E */ 0xD20A, 0xD20F, 0xB882, -/* 020F */ 0xD211, 0xD229, 0xB888, -/* 0210 */ 0xD235, 0xD23B, 0xB948, -/* 0211 */ 0xD242, 0xD247, 0xB951, -/* 0212 */ 0xD24D, 0xD25B, 0xB961, -/* 0213 */ 0xD25D, 0xD263, 0xB970, -/* 0214 */ 0xD269, 0xD27F, 0xB981, -/* 0215 */ 0xD296, 0xD29B, 0xBA47, -/* 0216 */ 0xD2A5, 0xD2AB, 0xBA53, -/* 0217 */ 0xD2B2, 0xD2B7, 0xBA64, -/* 0218 */ 0xD2CC, 0xD2D1, 0xBA75, -/* 0219 */ 0xD2DD, 0xD2E3, 0xBA89, -/* 021A */ 0xD2E6, 0xD2EF, 0xBA90, -/* 021B */ 0xD306, 0xD30B, 0xBB48, -/* 021C */ 0xD331, 0xD337, 0xBB69, -/* 021D */ 0xD33E, 0xD343, 0xBB71, -/* 021E */ 0xD34A, 0xD369, 0xBB81, -/* 021F */ 0xD36A, 0xD37B, 0xBC41, -/* 0220 */ 0xD392, 0xD397, 0xBC66, -/* 0221 */ 0xD3A1, 0xD3A7, 0xBC71, -/* 0222 */ 0xD3BD, 0xD3C3, 0xBC8C, -/* 0223 */ 0xD3CA, 0xD3CF, 0xBC95, -/* 0224 */ 0xD3D1, 0xD3D6, 0xBC9B, -/* 0225 */ 0xD3D9, 0xD3E0, 0xBD42, -/* 0226 */ 0xD3E4, 0xD3EB, 0xBD4B, -/* 0227 */ 0xD402, 0xD407, 0xBD67, -/* 0228 */ 0xD409, 0xD416, 0xBD6D, -/* 0229 */ 0xD417, 0xD41C, 0xBD81, -/* 022A */ 0xD41E, 0xD437, 0xBD87, -/* 022B */ 0xD438, 0xD43F, 0xBE41, -/* 022C */ 0xD445, 0xD453, 0xBE4C, -/* 022D */ 0xD454, 0xD45B, 0xBE61, -/* 022E */ 0xD465, 0xD46C, 0xBE6F, -/* 022F */ 0xD48E, 0xD493, 0xBE92, -/* 0230 */ 0xD495, 0xD49D, 0xBE98, -/* 0231 */ 0xD49E, 0xD4A8, 0xBF41, -/* 0232 */ 0xD4AA, 0xD4B8, 0xBF4C, -/* 0233 */ 0xD4B9, 0xD4CB, 0xBF61, -/* 0234 */ 0xD4D6, 0xD4DB, 0xBF81, -/* 0235 */ 0xD4E0, 0xD4E7, 0xBF89, -/* 0236 */ 0xD4F1, 0xD4F7, 0xBF97, -/* 0237 */ 0xD4FE, 0xD503, 0xC041, -/* 0238 */ 0xD50D, 0xD513, 0xC04D, -/* 0239 */ 0xD518, 0xD51D, 0xC055, -/* 023A */ 0xD51E, 0xD537, 0xC061, -/* 023B */ 0xD545, 0xD54B, 0xC08A, -/* 023C */ 0xD552, 0xD557, 0xC093, -/* 023D */ 0xD56E, 0xD573, 0xC146, -/* 023E */ 0xD57D, 0xD583, 0xC151, -/* 023F */ 0xD591, 0xD5A4, 0xC165, -/* 0240 */ 0xD5A8, 0xD5C7, 0xC181, -/* 0241 */ 0xD5DE, 0xD5E3, 0xC24E, -/* 0242 */ 0xD5FA, 0xD5FF, 0xC268, -/* 0243 */ 0xD609, 0xD60F, 0xC273, -/* 0244 */ 0xD616, 0xD61B, 0xC281, -/* 0245 */ 0xD625, 0xD62C, 0xC28D, -/* 0246 */ 0xD62E, 0xD637, 0xC295, -/* 0247 */ 0xD66A, 0xD66F, 0xC367, -/* 0248 */ 0xD675, 0xD680, 0xC36F, -/* 0249 */ 0xD686, 0xD68B, 0xC384, -/* 024A */ 0xD695, 0xD69C, 0xC38F, -/* 024B */ 0xD6A2, 0xD6A7, 0xC399, -/* 024C */ 0xD6B1, 0xD6B8, 0xC445, -/* 024D */ 0xD6BC, 0xD6C3, 0xC44E, -/* 024E */ 0xD6DA, 0xD6DF, 0xC46A, -/* 024F */ 0xD6F6, 0xD6FB, 0xC487, -/* 0250 */ 0xD705, 0xD710, 0xC492, -/* 0251 */ 0xD721, 0xD727, 0xC549, -/* 0252 */ 0xD72E, 0xD733, 0xC552, -/* 0253 */ 0xD73D, 0xD743, 0xC563, -/* 0254 */ 0xD74A, 0xD74F, 0xC56D, -/* 0255 */ 0xD775, 0xD77B, 0xC58F, -/* 0256 */ 0xD782, 0xD787, 0xC599, -/* 0257 */ 0xD791, 0xD797, 0xC644, -/* 0258 */ 0xD79E, 0xD7A3, 0xC64D, -/* 0259 */ 0xF90E, 0xF913, 0xD1DB, -/* 025A */ 0xF933, 0xF938, 0xD2C6, -/* 025B */ 0xF939, 0xF943, 0xD2CD, -/* 025C */ 0xF94A, 0xF951, 0xD2E4, -/* 025D */ 0xF952, 0xF957, 0xD2F0, -/* 025E */ 0xFF01, 0xFF3B, 0xA3A1, -/* 025F */ 0xFF3D, 0xFF5D, 0xA3DD, -/* 0260 */ 0x00A1, 0x00BF, 0x0000, -/* 0261 */ 0x00C6, 0x0000, 0xA8A1, -/* 0262 */ 0x00D0, 0x0000, 0xA8A2, -/* 0263 */ 0x00D7, 0x00D8, 0x001F, -/* 0264 */ 0x00DE, 0x00DF, 0x0021, -/* 0265 */ 0x00E6, 0x0000, 0xA9A1, -/* 0266 */ 0x00F0, 0x0000, 0xA9A3, -/* 0267 */ 0x00F7, 0x00F8, 0x0023, -/* 0268 */ 0x00FE, 0x0000, 0xA9AD, -/* 0269 */ 0x0111, 0x0000, 0xA9A2, -/* 026A */ 0x0126, 0x0127, 0x0025, -/* 026B */ 0x0131, 0x0133, 0x0027, -/* 026C */ 0x0138, 0x0000, 0xA9A7, -/* 026D */ 0x013F, 0x0142, 0x002A, -/* 026E */ 0x0149, 0x014B, 0x002E, -/* 026F */ 0x0152, 0x0153, 0x0031, -/* 0270 */ 0x0166, 0x0167, 0x0033, -/* 0271 */ 0x02C7, 0x0000, 0xA2A7, -/* 0272 */ 0x02D0, 0x0000, 0xA2B0, -/* 0273 */ 0x02D8, 0x02DD, 0x0035, -/* 0274 */ 0x0401, 0x0000, 0xACA7, -/* 0275 */ 0x0451, 0x0000, 0xACD7, -/* 0276 */ 0x2015, 0x2021, 0x003B, -/* 0277 */ 0x2025, 0x2026, 0x0048, -/* 0278 */ 0x2030, 0x2033, 0x004A, -/* 0279 */ 0x203B, 0x0000, 0xA1D8, -/* 027A */ 0x2074, 0x0000, 0xA9F9, -/* 027B */ 0x207F, 0x2084, 0x004E, -/* 027C */ 0x2103, 0x0000, 0xA1C9, -/* 027D */ 0x2109, 0x0000, 0xA2B5, -/* 027E */ 0x2113, 0x2116, 0x0054, -/* 027F */ 0x2121, 0x2122, 0x0058, -/* 0280 */ 0x2126, 0x0000, 0xA7D9, -/* 0281 */ 0x212B, 0x0000, 0xA1CA, -/* 0282 */ 0x2153, 0x2154, 0x005A, -/* 0283 */ 0x215B, 0x215E, 0x005C, -/* 0284 */ 0x2190, 0x2199, 0x0060, -/* 0285 */ 0x21D2, 0x21D4, 0x006A, -/* 0286 */ 0x2200, 0x2203, 0x006D, -/* 0287 */ 0x2207, 0x220B, 0x0071, -/* 0288 */ 0x220F, 0x2211, 0x0076, -/* 0289 */ 0x221A, 0x2220, 0x0079, -/* 028A */ 0x2225, 0x222E, 0x0080, -/* 028B */ 0x2234, 0x2235, 0x008A, -/* 028C */ 0x223C, 0x223D, 0x008C, -/* 028D */ 0x2252, 0x0000, 0xA1D6, -/* 028E */ 0x2260, 0x2265, 0x008E, -/* 028F */ 0x226A, 0x226B, 0x0094, -/* 0290 */ 0x2282, 0x2287, 0x0096, -/* 0291 */ 0x2299, 0x0000, 0xA2C1, -/* 0292 */ 0x22A5, 0x0000, 0xA1D1, -/* 0293 */ 0x2312, 0x0000, 0xA1D2, -/* 0294 */ 0x2500, 0x2503, 0x009C, -/* 0295 */ 0x250C, 0x2542, 0x00A0, -/* 0296 */ 0x254B, 0x0000, 0xA6B6, -/* 0297 */ 0x2592, 0x0000, 0xA2C6, -/* 0298 */ 0x25A0, 0x25A9, 0x00D7, -/* 0299 */ 0x25B2, 0x25B7, 0x00E1, -/* 029A */ 0x25BC, 0x25C1, 0x00E7, -/* 029B */ 0x25C6, 0x25D1, 0x00ED, -/* 029C */ 0x2605, 0x2606, 0x00F9, -/* 029D */ 0x260E, 0x260F, 0x00FB, -/* 029E */ 0x261C, 0x261E, 0x00FD, -/* 029F */ 0x2640, 0x2642, 0x0100, -/* 02A0 */ 0x2660, 0x266D, 0x0103, -/* 02A1 */ 0x3000, 0x3003, 0x0111, -/* 02A2 */ 0x3013, 0x3015, 0x0115, -/* 02A3 */ 0x321C, 0x0000, 0xA2DF, -/* 02A4 */ 0x327F, 0x0000, 0xA2DE, -/* 02A5 */ 0x3380, 0x3384, 0x0118, -/* 02A6 */ 0x3388, 0x3398, 0x011D, -/* 02A7 */ 0x33A3, 0x33AF, 0x012E, -/* 02A8 */ 0x33C0, 0x33CA, 0x013B, -/* 02A9 */ 0x33CF, 0x33DD, 0x0146, -/* 02AA */ 0x4E00, 0x4E03, 0x0155, -/* 02AB */ 0x4E07, 0x4E0D, 0x0159, -/* 02AC */ 0x4E11, 0x4E19, 0x0160, -/* 02AD */ 0x4E1E, 0x0000, 0xE3AA, -/* 02AE */ 0x4E2D, 0x0000, 0xF1E9, -/* 02AF */ 0x4E32, 0x0000, 0xCDFA, -/* 02B0 */ 0x4E38, 0x4E3B, 0x0169, -/* 02B1 */ 0x4E42, 0x4E45, 0x016D, -/* 02B2 */ 0x4E4B, 0x4E4F, 0x0171, -/* 02B3 */ 0x4E56, 0x4E59, 0x0176, -/* 02B4 */ 0x4E5D, 0x4E5F, 0x017A, -/* 02B5 */ 0x4E6B, 0x4E6D, 0x017D, -/* 02B6 */ 0x4E73, 0x4E77, 0x0180, -/* 02B7 */ 0x4E7E, 0x0000, 0xCBEB, -/* 02B8 */ 0x4E82, 0x0000, 0xD5AF, -/* 02B9 */ 0x4E86, 0x4EAE, 0x0185, -/* 02BA */ 0x4EB6, 0x0000, 0xD3A2, -/* 02BB */ 0x4EBA, 0x0000, 0xECD1, -/* 02BC */ 0x4EC0, 0x4ECD, 0x01AE, -/* 02BD */ 0x4ED4, 0x4ED9, 0x01BC, -/* 02BE */ 0x4EDD, 0x4EDF, 0x01C2, -/* 02BF */ 0x4EE3, 0x4EE5, 0x01C5, -/* 02C0 */ 0x4EF0, 0x4EF2, 0x01C8, -/* 02C1 */ 0x4EF6, 0x4EF7, 0x01CB, -/* 02C2 */ 0x4EFB, 0x0000, 0xECF2, -/* 02C3 */ 0x4F01, 0x0000, 0xD0EA, -/* 02C4 */ 0x4F09, 0x4F11, 0x01CD, -/* 02C5 */ 0x4F2F, 0x0000, 0xDBD7, -/* 02C6 */ 0x4F34, 0x4F3D, 0x01D6, -/* 02C7 */ 0x4F43, 0x4F48, 0x01E0, -/* 02C8 */ 0x4F4D, 0x4F51, 0x01E6, -/* 02C9 */ 0x4F55, 0x0000, 0xF9BC, -/* 02CA */ 0x4F59, 0x4F5C, 0x01EB, -/* 02CB */ 0x4F69, 0x0000, 0xF8A5, -/* 02CC */ 0x4F6F, 0x4F76, 0x01EF, -/* 02CD */ 0x4F7A, 0x0000, 0xEEED, -/* 02CE */ 0x4F7E, 0x4F91, 0x01F7, -/* 02CF */ 0x4F96, 0x4F9D, 0x020B, -/* 02D0 */ 0x4FAE, 0x4FAF, 0x0213, -/* 02D1 */ 0x4FB5, 0x4FB6, 0x0215, -/* 02D2 */ 0x4FBF, 0x4FC4, 0x0217, -/* 02D3 */ 0x4FC9, 0x4FCA, 0x021D, -/* 02D4 */ 0x4FCE, 0x4FE1, 0x021F, -/* 02D5 */ 0x4FEE, 0x4FFA, 0x0233, -/* 02D6 */ 0x5002, 0x0000, 0xDCB1, -/* 02D7 */ 0x5006, 0x500D, 0x0240, -/* 02D8 */ 0x5011, 0x5012, 0x0248, -/* 02D9 */ 0x5016, 0x502D, 0x024A, -/* 02DA */ 0x503B, 0x0000, 0xE5A6, -/* 02DB */ 0x5043, 0x0000, 0xE5E7, -/* 02DC */ 0x5047, 0x5049, 0x0262, -/* 02DD */ 0x504F, 0x0000, 0xF8B6, -/* 02DE */ 0x5055, 0x0000, 0xFAA5, -/* 02DF */ 0x505A, 0x505C, 0x0265, -/* 02E0 */ 0x5065, 0x0000, 0xCBED, -/* 02E1 */ 0x5074, 0x5078, 0x0268, -/* 02E2 */ 0x5080, 0x0000, 0xCED3, -/* 02E3 */ 0x5085, 0x0000, 0xDCF7, -/* 02E4 */ 0x508D, 0x0000, 0xDBA8, -/* 02E5 */ 0x5091, 0x0000, 0xCBF8, -/* 02E6 */ 0x5098, 0x5099, 0x026D, -/* 02E7 */ 0x50AC, 0x50AD, 0x026F, -/* 02E8 */ 0x50B2, 0x50B7, 0x0271, -/* 02E9 */ 0x50BE, 0x0000, 0xCCCB, -/* 02EA */ 0x50C5, 0x0000, 0xD0C1, -/* 02EB */ 0x50C9, 0x50CA, 0x0277, -/* 02EC */ 0x50CF, 0x50D1, 0x0279, -/* 02ED */ 0x50D5, 0x50D6, 0x027C, -/* 02EE */ 0x50DA, 0x0000, 0xD6F6, -/* 02EF */ 0x50DE, 0x0000, 0xEACA, -/* 02F0 */ 0x50E5, 0x50E7, 0x027E, -/* 02F1 */ 0x50ED, 0x0000, 0xF3D0, -/* 02F2 */ 0x50F9, 0x50FB, 0x0281, -/* 02F3 */ 0x50FF, 0x5109, 0x0284, -/* 02F4 */ 0x5112, 0x0000, 0xEAE3, -/* 02F5 */ 0x511F, 0x5121, 0x028F, -/* 02F6 */ 0x512A, 0x0000, 0xE9D0, -/* 02F7 */ 0x5132, 0x0000, 0xEEB9, -/* 02F8 */ 0x5137, 0x513C, 0x0292, -/* 02F9 */ 0x5140, 0x514E, 0x0298, -/* 02FA */ 0x5152, 0x0000, 0xE4AE, -/* 02FB */ 0x515C, 0x0000, 0xD4DF, -/* 02FC */ 0x5162, 0x5171, 0x02A7, -/* 02FD */ 0x5175, 0x5178, 0x02B7, -/* 02FE */ 0x517C, 0x0000, 0xCCC2, -/* 02FF */ 0x5180, 0x0000, 0xD0ED, -/* 0300 */ 0x5186, 0x0000, 0xE5F7, -/* 0301 */ 0x518A, 0x518D, 0x02BB, -/* 0302 */ 0x5192, 0x5197, 0x02BF, -/* 0303 */ 0x51A0, 0x0000, 0xCEAE, -/* 0304 */ 0x51A5, 0x0000, 0xD9A2, -/* 0305 */ 0x51AA, 0x51AC, 0x02C5, -/* 0306 */ 0x51B6, 0x51B7, 0x02C8, -/* 0307 */ 0x51BD, 0x0000, 0xD6A9, -/* 0308 */ 0x51C4, 0x51CD, 0x02CA, -/* 0309 */ 0x51DC, 0x51E1, 0x02D4, -/* 030A */ 0x51F0, 0x51F1, 0x02DA, -/* 030B */ 0x51F6, 0x520A, 0x02DC, -/* 030C */ 0x520E, 0x5211, 0x02F1, -/* 030D */ 0x5217, 0x0000, 0xD6AA, -/* 030E */ 0x521D, 0x0000, 0xF4F8, -/* 030F */ 0x5224, 0x5225, 0x02F5, -/* 0310 */ 0x5229, 0x522A, 0x02F7, -/* 0311 */ 0x522E, 0x5230, 0x02F9, -/* 0312 */ 0x5236, 0x523B, 0x02FC, -/* 0313 */ 0x5243, 0x0000, 0xF4EF, -/* 0314 */ 0x5247, 0x524D, 0x0302, -/* 0315 */ 0x5254, 0x5256, 0x0309, -/* 0316 */ 0x525B, 0x525D, 0x030C, -/* 0317 */ 0x5261, 0x0000, 0xE0E6, -/* 0318 */ 0x5269, 0x526A, 0x030F, -/* 0319 */ 0x526F, 0x5275, 0x0311, -/* 031A */ 0x527D, 0x527F, 0x0318, -/* 031B */ 0x5283, 0x0000, 0xFCF1, -/* 031C */ 0x5287, 0x5289, 0x031B, -/* 031D */ 0x528D, 0x0000, 0xCBFC, -/* 031E */ 0x5291, 0x5292, 0x031E, -/* 031F */ 0x529B, 0x0000, 0xD5F4, -/* 0320 */ 0x529F, 0x52A4, 0x0320, -/* 0321 */ 0x52A9, 0x52AB, 0x0326, -/* 0322 */ 0x52BE, 0x52C9, 0x0329, -/* 0323 */ 0x52CD, 0x0000, 0xCCCE, -/* 0324 */ 0x52D2, 0x52E4, 0x0335, -/* 0325 */ 0x52F3, 0x52FF, 0x0348, -/* 0326 */ 0x5305, 0x5308, 0x0355, -/* 0327 */ 0x530D, 0x5310, 0x0359, -/* 0328 */ 0x5315, 0x5319, 0x035D, -/* 0329 */ 0x5320, 0x5323, 0x0362, -/* 032A */ 0x532A, 0x0000, 0xDDE3, -/* 032B */ 0x532F, 0x0000, 0xFCDD, -/* 032C */ 0x5339, 0x0000, 0xF9AF, -/* 032D */ 0x533F, 0x534D, 0x0366, -/* 032E */ 0x5351, 0x5360, 0x0375, -/* 032F */ 0x5366, 0x5368, 0x0385, -/* 0330 */ 0x536F, 0x5377, 0x0388, -/* 0331 */ 0x537D, 0x537F, 0x0391, -/* 0332 */ 0x5384, 0x0000, 0xE4F8, -/* 0333 */ 0x5393, 0x0000, 0xE4ED, -/* 0334 */ 0x5398, 0x539A, 0x0394, -/* 0335 */ 0x539F, 0x53A0, 0x0397, -/* 0336 */ 0x53A5, 0x53A6, 0x0399, -/* 0337 */ 0x53AD, 0x0000, 0xE6F4, -/* 0338 */ 0x53BB, 0x0000, 0xCBDB, -/* 0339 */ 0x53C3, 0x0000, 0xF3D1, -/* 033A */ 0x53C8, 0x53CD, 0x039B, -/* 033B */ 0x53D4, 0x53D7, 0x03A1, -/* 033C */ 0x53DB, 0x0000, 0xDAE4, -/* 033D */ 0x53E1, 0x53E5, 0x03A5, -/* 033E */ 0x53E9, 0x53F3, 0x03AA, -/* 033F */ 0x53F8, 0x0000, 0xDEC9, -/* 0340 */ 0x5403, 0x5404, 0x03B5, -/* 0341 */ 0x5408, 0x5411, 0x03B7, -/* 0342 */ 0x541B, 0x5420, 0x03C1, -/* 0343 */ 0x5426, 0x542B, 0x03C7, -/* 0344 */ 0x5433, 0x0000, 0xE7EF, -/* 0345 */ 0x5438, 0x543E, 0x03CD, -/* 0346 */ 0x5442, 0x0000, 0xD5E5, -/* 0347 */ 0x5448, 0x544A, 0x03D4, -/* 0348 */ 0x5451, 0x0000, 0xF7A2, -/* 0349 */ 0x5468, 0x546A, 0x03D7, -/* 034A */ 0x5471, 0x5475, 0x03DA, -/* 034B */ 0x547B, 0x5480, 0x03DF, -/* 034C */ 0x5486, 0x0000, 0xF8D3, -/* 034D */ 0x548C, 0x5490, 0x03E5, -/* 034E */ 0x54A4, 0x0000, 0xF6E3, -/* 034F */ 0x54A8, 0x54AC, 0x03EA, -/* 0350 */ 0x54B3, 0x0000, 0xFAA6, -/* 0351 */ 0x54B8, 0x0000, 0xF9E0, -/* 0352 */ 0x54BD, 0x54C4, 0x03EF, -/* 0353 */ 0x54C8, 0x54C9, 0x03F7, -/* 0354 */ 0x54E1, 0x0000, 0xEAAC, -/* 0355 */ 0x54E5, 0x54E8, 0x03F9, -/* 0356 */ 0x54ED, 0x54EE, 0x03FD, -/* 0357 */ 0x54F2, 0x0000, 0xF4C9, -/* 0358 */ 0x54FA, 0x0000, 0xF8D4, -/* 0359 */ 0x5504, 0x5507, 0x03FF, -/* 035A */ 0x550E, 0x5510, 0x0403, -/* 035B */ 0x551C, 0x0000, 0xD8C5, -/* 035C */ 0x552F, 0x5531, 0x0406, -/* 035D */ 0x5535, 0x0000, 0xE4DA, -/* 035E */ 0x553E, 0x0000, 0xF6E4, -/* 035F */ 0x5544, 0x5546, 0x0409, -/* 0360 */ 0x554F, 0x0000, 0xD9FD, -/* 0361 */ 0x5553, 0x5556, 0x040C, -/* 0362 */ 0x555E, 0x0000, 0xE4AF, -/* 0363 */ 0x5563, 0x0000, 0xF9E1, -/* 0364 */ 0x557C, 0x0000, 0xF0A6, -/* 0365 */ 0x5580, 0x0000, 0xCBD3, -/* 0366 */ 0x5584, 0x558A, 0x0410, -/* 0367 */ 0x5598, 0x559D, 0x0417, -/* 0368 */ 0x55A7, 0x55AE, 0x041D, -/* 0369 */ 0x55C5, 0x55C7, 0x0425, -/* 036A */ 0x55D4, 0x0000, 0xF2C7, -/* 036B */ 0x55DA, 0x55DF, 0x0428, -/* 036C */ 0x55E3, 0x55E4, 0x042E, -/* 036D */ 0x55FD, 0x55FE, 0x0430, -/* 036E */ 0x5606, 0x5609, 0x0432, -/* 036F */ 0x5614, 0x5617, 0x0436, -/* 0370 */ 0x562F, 0x5636, 0x043A, -/* 0371 */ 0x5653, 0x0000, 0xFAC6, -/* 0372 */ 0x5668, 0x566B, 0x0442, -/* 0373 */ 0x5674, 0x0000, 0xDDC4, -/* 0374 */ 0x5686, 0x0000, 0xFCF7, -/* 0375 */ 0x56A5, 0x0000, 0xE6BF, -/* 0376 */ 0x56AC, 0x56AE, 0x0446, -/* 0377 */ 0x56B4, 0x0000, 0xE5F1, -/* 0378 */ 0x56BC, 0x0000, 0xEDC4, -/* 0379 */ 0x56CA, 0x56CD, 0x0449, -/* 037A */ 0x56D1, 0x0000, 0xF5B6, -/* 037B */ 0x56DA, 0x56E0, 0x044D, -/* 037C */ 0x56F0, 0x0000, 0xCDDD, -/* 037D */ 0x56F9, 0x56FA, 0x0454, -/* 037E */ 0x5703, 0x5704, 0x0456, -/* 037F */ 0x5708, 0x570D, 0x0458, -/* 0380 */ 0x5712, 0x5718, 0x045E, -/* 0381 */ 0x571F, 0x0000, 0xF7CF, -/* 0382 */ 0x5728, 0x0000, 0xEEA4, -/* 0383 */ 0x572D, 0x5730, 0x0465, -/* 0384 */ 0x573B, 0x0000, 0xD0F0, -/* 0385 */ 0x5740, 0x5742, 0x0469, -/* 0386 */ 0x5747, 0x5751, 0x046C, -/* 0387 */ 0x5761, 0x5766, 0x0477, -/* 0388 */ 0x576A, 0x0000, 0xF8C0, -/* 0389 */ 0x576E, 0x5770, 0x047D, -/* 038A */ 0x5775, 0x0000, 0xCFA6, -/* 038B */ 0x577C, 0x0000, 0xF6F3, -/* 038C */ 0x5782, 0x0000, 0xE1F7, -/* 038D */ 0x5788, 0x578B, 0x0480, -/* 038E */ 0x5793, 0x0000, 0xFAA7, -/* 038F */ 0x57A0, 0x57A3, 0x0484, -/* 0390 */ 0x57C3, 0x0000, 0xE4EF, -/* 0391 */ 0x57C7, 0x57CE, 0x0488, -/* 0392 */ 0x57DF, 0x57E0, 0x0490, -/* 0393 */ 0x57F0, 0x0000, 0xF3F1, -/* 0394 */ 0x57F4, 0x57FC, 0x0492, -/* 0395 */ 0x5800, 0x580A, 0x049B, -/* 0396 */ 0x581E, 0x582A, 0x04A6, -/* 0397 */ 0x582F, 0x5835, 0x04B3, -/* 0398 */ 0x583A, 0x0000, 0xCCF7, -/* 0399 */ 0x584A, 0x584B, 0x04BA, -/* 039A */ 0x584F, 0x585A, 0x04BC, -/* 039B */ 0x585E, 0x5864, 0x04C8, -/* 039C */ 0x5875, 0x0000, 0xF2C8, -/* 039D */ 0x5879, 0x587E, 0x04CF, -/* 039E */ 0x5883, 0x5885, 0x04D5, -/* 039F */ 0x5889, 0x0000, 0xE9BA, -/* 03A0 */ 0x5893, 0x0000, 0xD9D7, -/* 03A1 */ 0x589C, 0x589F, 0x04D8, -/* 03A2 */ 0x58A8, 0x58A9, 0x04DC, -/* 03A3 */ 0x58AE, 0x0000, 0xF6E5, -/* 03A4 */ 0x58B3, 0x0000, 0xDDC5, -/* 03A5 */ 0x58BA, 0x58C1, 0x04DE, -/* 03A6 */ 0x58C5, 0x58C7, 0x04E6, -/* 03A7 */ 0x58CE, 0x58D9, 0x04E9, -/* 03A8 */ 0x58DE, 0x58DF, 0x04F5, -/* 03A9 */ 0x58E4, 0x0000, 0xE5BD, -/* 03AA */ 0x58EB, 0x58EF, 0x04F7, -/* 03AB */ 0x58F9, 0x58FD, 0x04FC, -/* 03AC */ 0x590F, 0x0000, 0xF9BE, -/* 03AD */ 0x5914, 0x591C, 0x0501, -/* 03AE */ 0x5922, 0x0000, 0xD9D3, -/* 03AF */ 0x5927, 0x5931, 0x050A, -/* 03B0 */ 0x5937, 0x0000, 0xECA8, -/* 03B1 */ 0x593E, 0x0000, 0xFAF1, -/* 03B2 */ 0x5944, 0x5949, 0x0515, -/* 03B3 */ 0x594E, 0x595A, 0x051B, -/* 03B4 */ 0x5960, 0x5962, 0x0528, -/* 03B5 */ 0x5967, 0x596E, 0x052B, -/* 03B6 */ 0x5973, 0x5974, 0x0533, -/* 03B7 */ 0x5978, 0x0000, 0xCACC, -/* 03B8 */ 0x597D, 0x0000, 0xFBBF, -/* 03B9 */ 0x5982, 0x5984, 0x0535, -/* 03BA */ 0x598A, 0x0000, 0xECF4, -/* 03BB */ 0x5993, 0x5999, 0x0538, -/* 03BC */ 0x59A5, 0x59A8, 0x053F, -/* 03BD */ 0x59AC, 0x0000, 0xF7E0, -/* 03BE */ 0x59B9, 0x59BE, 0x0543, -/* 03BF */ 0x59C3, 0x59CB, 0x0549, -/* 03C0 */ 0x59D0, 0x59D4, 0x0552, -/* 03C1 */ 0x59D9, 0x59DD, 0x0557, -/* 03C2 */ 0x59E6, 0x59EE, 0x055C, -/* 03C3 */ 0x59F8, 0x59FB, 0x0565, -/* 03C4 */ 0x59FF, 0x5A03, 0x0569, -/* 03C5 */ 0x5A11, 0x0000, 0xDECF, -/* 03C6 */ 0x5A18, 0x5A20, 0x056E, -/* 03C7 */ 0x5A25, 0x0000, 0xE4B0, -/* 03C8 */ 0x5A29, 0x0000, 0xD8B4, -/* 03C9 */ 0x5A36, 0x0000, 0xF6A5, -/* 03CA */ 0x5A3C, 0x0000, 0xF3DE, -/* 03CB */ 0x5A41, 0x0000, 0xD7A5, -/* 03CC */ 0x5A46, 0x5A49, 0x0577, -/* 03CD */ 0x5A5A, 0x0000, 0xFBE6, -/* 03CE */ 0x5A62, 0x0000, 0xDDE6, -/* 03CF */ 0x5A66, 0x0000, 0xDCFE, -/* 03D0 */ 0x5A92, 0x0000, 0xD8DA, -/* 03D1 */ 0x5A9A, 0x5A9B, 0x057B, -/* 03D2 */ 0x5AA4, 0x0000, 0xE3B8, -/* 03D3 */ 0x5AC1, 0x5AC4, 0x057D, -/* 03D4 */ 0x5AC9, 0x5ACC, 0x0581, -/* 03D5 */ 0x5AE1, 0x0000, 0xEED5, -/* 03D6 */ 0x5AE6, 0x5AE9, 0x0585, -/* 03D7 */ 0x5B05, 0x0000, 0xFBFB, -/* 03D8 */ 0x5B09, 0x5B0C, 0x0589, -/* 03D9 */ 0x5B16, 0x0000, 0xF8C6, -/* 03DA */ 0x5B2A, 0x0000, 0xDEAE, -/* 03DB */ 0x5B40, 0x5B43, 0x058D, -/* 03DC */ 0x5B50, 0x5B5F, 0x0591, -/* 03DD */ 0x5B63, 0x5B64, 0x05A1, -/* 03DE */ 0x5B69, 0x5B6B, 0x05A3, -/* 03DF */ 0x5B70, 0x5B71, 0x05A6, -/* 03E0 */ 0x5B75, 0x5B7C, 0x05A8, -/* 03E1 */ 0x5B85, 0x5B8F, 0x05B0, -/* 03E2 */ 0x5B93, 0x5B9C, 0x05BB, -/* 03E3 */ 0x5BA2, 0x5BA6, 0x05C5, -/* 03E4 */ 0x5BAC, 0x5BB9, 0x05CA, -/* 03E5 */ 0x5BBF, 0x5BC7, 0x05D8, -/* 03E6 */ 0x5BCC, 0x0000, 0xDDA3, -/* 03E7 */ 0x5BD0, 0x5BD7, 0x05E1, -/* 03E8 */ 0x5BDE, 0x5BEF, 0x05E9, -/* 03E9 */ 0x5BF5, 0x5BFA, 0x05FB, -/* 03EA */ 0x5C01, 0x5C11, 0x0601, -/* 03EB */ 0x5C16, 0x5C19, 0x0612, -/* 03EC */ 0x5C24, 0x0000, 0xE9D6, -/* 03ED */ 0x5C28, 0x0000, 0xDBAB, -/* 03EE */ 0x5C31, 0x0000, 0xF6A6, -/* 03EF */ 0x5C38, 0x5C40, 0x0616, -/* 03F0 */ 0x5C45, 0x5C51, 0x061F, -/* 03F1 */ 0x5C55, 0x0000, 0xEEF7, -/* 03F2 */ 0x5C5B, 0x0000, 0xDCB3, -/* 03F3 */ 0x5C60, 0x5C65, 0x062C, -/* 03F4 */ 0x5C6C, 0x5C71, 0x0632, -/* 03F5 */ 0x5C79, 0x0000, 0xFDDF, -/* 03F6 */ 0x5C90, 0x5C91, 0x0638, -/* 03F7 */ 0x5CA1, 0x0000, 0xCBAA, -/* 03F8 */ 0x5CA9, 0x5CAC, 0x063A, -/* 03F9 */ 0x5CB1, 0x5CBA, 0x063E, -/* 03FA */ 0x5CBE, 0x5CC0, 0x0648, -/* 03FB */ 0x5CD9, 0x0000, 0xF6B9, -/* 03FC */ 0x5CE0, 0x0000, 0xDFC7, -/* 03FD */ 0x5CE8, 0x0000, 0xE4B1, -/* 03FE */ 0x5CEF, 0x5CF0, 0x064B, -/* 03FF */ 0x5CF4, 0x5CF6, 0x064D, -/* 0400 */ 0x5CFB, 0x5CFD, 0x0650, -/* 0401 */ 0x5D07, 0x0000, 0xE2FD, -/* 0402 */ 0x5D0D, 0x5D19, 0x0653, -/* 0403 */ 0x5D27, 0x5D29, 0x0660, -/* 0404 */ 0x5D4B, 0x5D4C, 0x0663, -/* 0405 */ 0x5D50, 0x0000, 0xD5B9, -/* 0406 */ 0x5D69, 0x5D6F, 0x0665, -/* 0407 */ 0x5D87, 0x0000, 0xCFA9, -/* 0408 */ 0x5D8B, 0x0000, 0xD3F7, -/* 0409 */ 0x5D9D, 0x5DA2, 0x066C, -/* 040A */ 0x5DAA, 0x0000, 0xE5F5, -/* 040B */ 0x5DB8, 0x5DBD, 0x0672, -/* 040C */ 0x5DCD, 0x0000, 0xE8E4, -/* 040D */ 0x5DD2, 0x0000, 0xD8B5, -/* 040E */ 0x5DD6, 0x0000, 0xE4DC, -/* 040F */ 0x5DDD, 0x5DF7, 0x0678, -/* 0410 */ 0x5DFD, 0x5DFE, 0x0693, -/* 0411 */ 0x5E02, 0x5E06, 0x0695, -/* 0412 */ 0x5E0C, 0x0000, 0xFDF1, -/* 0413 */ 0x5E11, 0x0000, 0xF7B6, -/* 0414 */ 0x5E16, 0x5E1D, 0x069A, -/* 0415 */ 0x5E25, 0x0000, 0xE1FD, -/* 0416 */ 0x5E2B, 0x5E2D, 0x06A2, -/* 0417 */ 0x5E33, 0x5E38, 0x06A5, -/* 0418 */ 0x5E3D, 0x5E40, 0x06AB, -/* 0419 */ 0x5E44, 0x5E47, 0x06AF, -/* 041A */ 0x5E4C, 0x0000, 0xFCC6, -/* 041B */ 0x5E55, 0x0000, 0xD8AD, -/* 041C */ 0x5E5F, 0x5E63, 0x06B3, -/* 041D */ 0x5E72, 0x5E7E, 0x06B8, -/* 041E */ 0x5E84, 0x5E8A, 0x06C5, -/* 041F */ 0x5E8F, 0x0000, 0xDFED, -/* 0420 */ 0x5E95, 0x5E9C, 0x06CC, -/* 0421 */ 0x5EA0, 0x0000, 0xDFCA, -/* 0422 */ 0x5EA6, 0x5EA7, 0x06D4, -/* 0423 */ 0x5EAB, 0x5EAD, 0x06D6, -/* 0424 */ 0x5EB5, 0x5EB8, 0x06D9, -/* 0425 */ 0x5EBE, 0x0000, 0xEAEC, -/* 0426 */ 0x5EC2, 0x0000, 0xDFCB, -/* 0427 */ 0x5EC8, 0x5ECA, 0x06DD, -/* 0428 */ 0x5ED0, 0x5ED6, 0x06E0, -/* 0429 */ 0x5EDA, 0x5EDB, 0x06E7, -/* 042A */ 0x5EDF, 0x5EE3, 0x06E9, -/* 042B */ 0x5EEC, 0x0000, 0xD5E6, -/* 042C */ 0x5EF3, 0x5EFB, 0x06EE, -/* 042D */ 0x5F01, 0x5F04, 0x06F7, -/* 042E */ 0x5F0A, 0x0000, 0xF8C9, -/* 042F */ 0x5F0F, 0x5F1B, 0x06FB, -/* 0430 */ 0x5F1F, 0x0000, 0xF0A9, -/* 0431 */ 0x5F26, 0x5F29, 0x0708, -/* 0432 */ 0x5F31, 0x0000, 0xE5B0, -/* 0433 */ 0x5F35, 0x0000, 0xEDE5, -/* 0434 */ 0x5F3A, 0x5F3C, 0x070C, -/* 0435 */ 0x5F48, 0x5F4E, 0x070F, -/* 0436 */ 0x5F56, 0x5F5B, 0x0716, -/* 0437 */ 0x5F62, 0x0000, 0xFBA1, -/* 0438 */ 0x5F66, 0x5F71, 0x071C, -/* 0439 */ 0x5F77, 0x5F81, 0x0728, -/* 043A */ 0x5F85, 0x5F8C, 0x0733, -/* 043B */ 0x5F90, 0x5F92, 0x073B, -/* 043C */ 0x5F97, 0x5F99, 0x073E, -/* 043D */ 0x5F9E, 0x5FA1, 0x0741, -/* 043E */ 0x5FA8, 0x5FAA, 0x0745, -/* 043F */ 0x5FAE, 0x0000, 0xDAB0, -/* 0440 */ 0x5FB5, 0x5FB9, 0x0748, -/* 0441 */ 0x5FBD, 0x0000, 0xFDC5, -/* 0442 */ 0x5FC3, 0x5FC5, 0x074D, -/* 0443 */ 0x5FCC, 0x5FCD, 0x0750, -/* 0444 */ 0x5FD6, 0x5FD9, 0x0752, -/* 0445 */ 0x5FE0, 0x0000, 0xF5F7, -/* 0446 */ 0x5FEB, 0x0000, 0xF6E1, -/* 0447 */ 0x5FF5, 0x0000, 0xD2B7, -/* 0448 */ 0x5FFD, 0x5FFF, 0x0756, -/* 0449 */ 0x600F, 0x6012, 0x0759, -/* 044A */ 0x6016, 0x0000, 0xF8D7, -/* 044B */ 0x601C, 0x6021, 0x075D, -/* 044C */ 0x6025, 0x602A, 0x0763, -/* 044D */ 0x602F, 0x0000, 0xCCA5, -/* 044E */ 0x6041, 0x6043, 0x0769, -/* 044F */ 0x604D, 0x6055, 0x076C, -/* 0450 */ 0x6059, 0x0000, 0xE5BF, -/* 0451 */ 0x605D, 0x0000, 0xCEBF, -/* 0452 */ 0x6062, 0x6070, 0x0775, -/* 0453 */ 0x6085, 0x0000, 0xE6ED, -/* 0454 */ 0x6089, 0x608D, 0x0784, -/* 0455 */ 0x6094, 0x6096, 0x0789, -/* 0456 */ 0x609A, 0x609B, 0x078C, -/* 0457 */ 0x609F, 0x60A7, 0x078E, -/* 0458 */ 0x60B0, 0x60B8, 0x0797, -/* 0459 */ 0x60BC, 0x60BD, 0x07A0, -/* 045A */ 0x60C5, 0x60C7, 0x07A2, -/* 045B */ 0x60D1, 0x0000, 0xFBE3, -/* 045C */ 0x60DA, 0x60E1, 0x07A5, -/* 045D */ 0x60F0, 0x60FB, 0x07AD, -/* 045E */ 0x6101, 0x0000, 0xE1FE, -/* 045F */ 0x6106, 0x6109, 0x07B9, -/* 0460 */ 0x610D, 0x610F, 0x07BD, -/* 0461 */ 0x6115, 0x0000, 0xE4C3, -/* 0462 */ 0x611A, 0x611B, 0x07C0, -/* 0463 */ 0x611F, 0x0000, 0xCAEF, -/* 0464 */ 0x6127, 0x0000, 0xCED7, -/* 0465 */ 0x6130, 0x0000, 0xFCCA, -/* 0466 */ 0x6134, 0x6137, 0x07C2, -/* 0467 */ 0x613C, 0x614C, 0x07C6, -/* 0468 */ 0x6153, 0x6159, 0x07D7, -/* 0469 */ 0x615D, 0x6170, 0x07DE, -/* 046A */ 0x6176, 0x6177, 0x07F2, -/* 046B */ 0x617D, 0x6182, 0x07F4, -/* 046C */ 0x618A, 0x0000, 0xDDE9, -/* 046D */ 0x618E, 0x6194, 0x07FA, -/* 046E */ 0x6198, 0x619A, 0x0801, -/* 046F */ 0x61A4, 0x61AE, 0x0804, -/* 0470 */ 0x61B2, 0x0000, 0xFACA, -/* 0471 */ 0x61B6, 0x0000, 0xE5E3, -/* 0472 */ 0x61BA, 0x0000, 0xD3BC, -/* 0473 */ 0x61BE, 0x0000, 0xCAF0, -/* 0474 */ 0x61C3, 0x0000, 0xD0C4, -/* 0475 */ 0x61C7, 0x61CB, 0x080F, -/* 0476 */ 0x61E6, 0x0000, 0xD1D7, -/* 0477 */ 0x61F2, 0x0000, 0xF3A4, -/* 0478 */ 0x61F6, 0x6200, 0x0814, -/* 0479 */ 0x6207, 0x6212, 0x081F, -/* 047A */ 0x6216, 0x0000, 0xFBE4, -/* 047B */ 0x621A, 0x0000, 0xF4AB, -/* 047C */ 0x621F, 0x6221, 0x082B, -/* 047D */ 0x622A, 0x0000, 0xEFB8, -/* 047E */ 0x622E, 0x6236, 0x082E, -/* 047F */ 0x623E, 0x6241, 0x0837, -/* 0480 */ 0x6247, 0x624D, 0x083B, -/* 0481 */ 0x6253, 0x0000, 0xF6E8, -/* 0482 */ 0x6258, 0x0000, 0xF6F5, -/* 0483 */ 0x626E, 0x6271, 0x0842, -/* 0484 */ 0x6276, 0x6280, 0x0846, -/* 0485 */ 0x6284, 0x0000, 0xF4FC, -/* 0486 */ 0x6289, 0x628A, 0x0851, -/* 0487 */ 0x6291, 0x629B, 0x0853, -/* 0488 */ 0x62AB, 0x0000, 0xF9A9, -/* 0489 */ 0x62B1, 0x0000, 0xF8D9, -/* 048A */ 0x62B5, 0x0000, 0xEEBD, -/* 048B */ 0x62B9, 0x62BD, 0x085E, -/* 048C */ 0x62C2, 0x0000, 0xDDD9, -/* 048D */ 0x62C7, 0x62DC, 0x0863, -/* 048E */ 0x62EC, 0x62F3, 0x0879, -/* 048F */ 0x62F7, 0x0000, 0xCDB8, -/* 0490 */ 0x62FE, 0x6301, 0x0881, -/* 0491 */ 0x6307, 0x6309, 0x0885, -/* 0492 */ 0x6311, 0x0000, 0xD3FB, -/* 0493 */ 0x632B, 0x0000, 0xF1A9, -/* 0494 */ 0x632F, 0x0000, 0xF2C9, -/* 0495 */ 0x633A, 0x633E, 0x0888, -/* 0496 */ 0x6349, 0x6350, 0x088D, -/* 0497 */ 0x6355, 0x0000, 0xF8DA, -/* 0498 */ 0x6367, 0x6368, 0x0895, -/* 0499 */ 0x636E, 0x0000, 0xCBDF, -/* 049A */ 0x6372, 0x0000, 0xCFEC, -/* 049B */ 0x6377, 0x637B, 0x0897, -/* 049C */ 0x637F, 0x0000, 0xDFF2, -/* 049D */ 0x6383, 0x0000, 0xE1B7, -/* 049E */ 0x6388, 0x638C, 0x089C, -/* 049F */ 0x6392, 0x0000, 0xDBC9, -/* 04A0 */ 0x6396, 0x639B, 0x08A1, -/* 04A1 */ 0x63A0, 0x63AA, 0x08A7, -/* 04A2 */ 0x63C0, 0x0000, 0xCAD1, -/* 04A3 */ 0x63C4, 0x63C6, 0x08B2, -/* 04A4 */ 0x63CF, 0x63D0, 0x08B5, -/* 04A5 */ 0x63D6, 0x0000, 0xEBE7, -/* 04A6 */ 0x63DA, 0x63DB, 0x08B7, -/* 04A7 */ 0x63E1, 0x0000, 0xE4C4, -/* 04A8 */ 0x63ED, 0x63EE, 0x08B9, -/* 04A9 */ 0x63F4, 0x63F7, 0x08BB, -/* 04AA */ 0x640D, 0x640F, 0x08BF, -/* 04AB */ 0x6414, 0x6417, 0x08C2, -/* 04AC */ 0x641C, 0x0000, 0xE2A4, -/* 04AD */ 0x6422, 0x0000, 0xF2CA, -/* 04AE */ 0x642C, 0x642D, 0x08C6, -/* 04AF */ 0x643A, 0x0000, 0xFDCD, -/* 04B0 */ 0x643E, 0x0000, 0xF3B6, -/* 04B1 */ 0x6458, 0x0000, 0xEED7, -/* 04B2 */ 0x6460, 0x0000, 0xF5C4, -/* 04B3 */ 0x6469, 0x0000, 0xD8A4, -/* 04B4 */ 0x646F, 0x0000, 0xF2A7, -/* 04B5 */ 0x6478, 0x647A, 0x08C8, -/* 04B6 */ 0x6488, 0x0000, 0xD6CE, -/* 04B7 */ 0x6491, 0x6493, 0x08CB, -/* 04B8 */ 0x649A, 0x0000, 0xD2B5, -/* 04B9 */ 0x649E, 0x0000, 0xD3D5, -/* 04BA */ 0x64A4, 0x64A5, 0x08CE, -/* 04BB */ 0x64AB, 0x64B2, 0x08D0, -/* 04BC */ 0x64BB, 0x0000, 0xD3B5, -/* 04BD */ 0x64C1, 0x64CE, 0x08D8, -/* 04BE */ 0x64D2, 0x64D4, 0x08E6, -/* 04BF */ 0x64D8, 0x64DA, 0x08E9, -/* 04C0 */ 0x64E1, 0x64E7, 0x08EC, -/* 04C1 */ 0x64EC, 0x0000, 0xEBF4, -/* 04C2 */ 0x64F2, 0x64F4, 0x08F3, -/* 04C3 */ 0x64FA, 0x0000, 0xF7EC, -/* 04C4 */ 0x64FE, 0x6500, 0x08F6, -/* 04C5 */ 0x6504, 0x0000, 0xF7CC, -/* 04C6 */ 0x6518, 0x0000, 0xE5C1, -/* 04C7 */ 0x651D, 0x0000, 0xE0EE, -/* 04C8 */ 0x6523, 0x0000, 0xD5FD, -/* 04C9 */ 0x652A, 0x652F, 0x08F9, -/* 04CA */ 0x6536, 0x653F, 0x08FF, -/* 04CB */ 0x6545, 0x6548, 0x0909, -/* 04CC */ 0x654D, 0x6551, 0x090D, -/* 04CD */ 0x6556, 0x6557, 0x0912, -/* 04CE */ 0x655E, 0x0000, 0xF3E2, -/* 04CF */ 0x6562, 0x6566, 0x0914, -/* 04D0 */ 0x656C, 0x656D, 0x0919, -/* 04D1 */ 0x6572, 0x6578, 0x091B, -/* 04D2 */ 0x657E, 0x0000, 0xE0C0, -/* 04D3 */ 0x6582, 0x6587, 0x0922, -/* 04D4 */ 0x658C, 0x0000, 0xDEB0, -/* 04D5 */ 0x6590, 0x6591, 0x0928, -/* 04D6 */ 0x6597, 0x65A7, 0x092A, -/* 04D7 */ 0x65AB, 0x65B0, 0x093B, -/* 04D8 */ 0x65B7, 0x65BD, 0x0941, -/* 04D9 */ 0x65C1, 0x0000, 0xDBB1, -/* 04DA */ 0x65C5, 0x0000, 0xD5E9, -/* 04DB */ 0x65CB, 0x65D2, 0x0948, -/* 04DC */ 0x65D7, 0x0000, 0xD0FD, -/* 04DD */ 0x65E0, 0x65ED, 0x0950, -/* 04DE */ 0x65F1, 0x65F4, 0x095E, -/* 04DF */ 0x65FA, 0x65FF, 0x0962, -/* 04E0 */ 0x6606, 0x6615, 0x0968, -/* 04E1 */ 0x661E, 0x6620, 0x0978, -/* 04E2 */ 0x6625, 0x6628, 0x097B, -/* 04E3 */ 0x662D, 0x6636, 0x097F, -/* 04E4 */ 0x663A, 0x663B, 0x0989, -/* 04E5 */ 0x6641, 0x6644, 0x098B, -/* 04E6 */ 0x6649, 0x664B, 0x098F, -/* 04E7 */ 0x664F, 0x0000, 0xE4CF, -/* 04E8 */ 0x6659, 0x665F, 0x0992, -/* 04E9 */ 0x6664, 0x666F, 0x0999, -/* 04EA */ 0x6673, 0x667A, 0x09A5, -/* 04EB */ 0x6684, 0x6689, 0x09AD, -/* 04EC */ 0x668E, 0x6691, 0x09B3, -/* 04ED */ 0x6696, 0x6698, 0x09B7, -/* 04EE */ 0x669D, 0x66A2, 0x09BA, -/* 04EF */ 0x66AB, 0x66AE, 0x09C0, -/* 04F0 */ 0x66B2, 0x66B4, 0x09C4, -/* 04F1 */ 0x66B9, 0x66BE, 0x09C7, -/* 04F2 */ 0x66C4, 0x66C9, 0x09CD, -/* 04F3 */ 0x66D6, 0x66E0, 0x09D3, -/* 04F4 */ 0x66E6, 0x0000, 0xFDF6, -/* 04F5 */ 0x66F0, 0x6703, 0x09DE, -/* 04F6 */ 0x6708, 0x670D, 0x09F2, -/* 04F7 */ 0x6714, 0x6717, 0x09F8, -/* 04F8 */ 0x671B, 0x671F, 0x09FC, -/* 04F9 */ 0x6726, 0x6736, 0x0A01, -/* 04FA */ 0x673A, 0x673D, 0x0A12, -/* 04FB */ 0x6746, 0x6749, 0x0A16, -/* 04FC */ 0x674E, 0x6756, 0x0A1A, -/* 04FD */ 0x675C, 0x675F, 0x0A23, -/* 04FE */ 0x676D, 0x6777, 0x0A27, -/* 04FF */ 0x677B, 0x677F, 0x0A32, -/* 0500 */ 0x6787, 0x678B, 0x0A37, -/* 0501 */ 0x678F, 0x679D, 0x0A3C, -/* 0502 */ 0x67AF, 0x67B8, 0x0A4B, -/* 0503 */ 0x67BE, 0x0000, 0xE3C2, -/* 0504 */ 0x67C4, 0x0000, 0xDCB7, -/* 0505 */ 0x67CF, 0x67D4, 0x0A55, -/* 0506 */ 0x67DA, 0x67DD, 0x0A5B, -/* 0507 */ 0x67E9, 0x67F6, 0x0A5F, -/* 0508 */ 0x67FB, 0x67FE, 0x0A6D, -/* 0509 */ 0x6812, 0x6817, 0x0A71, -/* 050A */ 0x6821, 0x6822, 0x0A77, -/* 050B */ 0x682A, 0x0000, 0xF1BB, -/* 050C */ 0x682F, 0x0000, 0xE9F1, -/* 050D */ 0x6838, 0x6843, 0x0A79, -/* 050E */ 0x6848, 0x0000, 0xE4D0, -/* 050F */ 0x684E, 0x6854, 0x0A85, -/* 0510 */ 0x686D, 0x0000, 0xF2CD, -/* 0511 */ 0x6876, 0x0000, 0xF7D2, -/* 0512 */ 0x687F, 0x6881, 0x0A8C, -/* 0513 */ 0x6885, 0x0000, 0xD8DE, -/* 0514 */ 0x688F, 0x0000, 0xCDD9, -/* 0515 */ 0x6893, 0x6897, 0x0A8F, -/* 0516 */ 0x689D, 0x68A2, 0x0A94, -/* 0517 */ 0x68A7, 0x68A8, 0x0A9A, -/* 0518 */ 0x68AD, 0x68B6, 0x0A9C, -/* 0519 */ 0x68C4, 0x68C5, 0x0AA6, -/* 051A */ 0x68C9, 0x68CD, 0x0AA8, -/* 051B */ 0x68D2, 0x68DA, 0x0AAD, -/* 051C */ 0x68DF, 0x68E0, 0x0AB6, -/* 051D */ 0x68E7, 0x68E8, 0x0AB8, -/* 051E */ 0x68EE, 0x0000, 0xDFB5, -/* 051F */ 0x68F2, 0x0000, 0xDFF8, -/* 0520 */ 0x68F9, 0x68FA, 0x0ABA, -/* 0521 */ 0x6900, 0x0000, 0xE8CA, -/* 0522 */ 0x6905, 0x0000, 0xEBF5, -/* 0523 */ 0x690D, 0x690E, 0x0ABC, -/* 0524 */ 0x6912, 0x0000, 0xF5A1, -/* 0525 */ 0x6927, 0x0000, 0xD9A7, -/* 0526 */ 0x6930, 0x0000, 0xE5AB, -/* 0527 */ 0x693D, 0x693F, 0x0ABE, -/* 0528 */ 0x694A, 0x0000, 0xE5C5, -/* 0529 */ 0x6953, 0x695A, 0x0AC1, -/* 052A */ 0x695E, 0x6963, 0x0AC9, -/* 052B */ 0x6968, 0x696F, 0x0ACF, -/* 052C */ 0x6975, 0x6979, 0x0AD7, -/* 052D */ 0x6995, 0x0000, 0xE9BE, -/* 052E */ 0x699B, 0x699C, 0x0ADC, -/* 052F */ 0x69A5, 0x69A7, 0x0ADE, -/* 0530 */ 0x69AE, 0x0000, 0xE7B4, -/* 0531 */ 0x69B4, 0x0000, 0xD7B4, -/* 0532 */ 0x69BB, 0x0000, 0xF7B4, -/* 0533 */ 0x69C1, 0x69C3, 0x0AE1, -/* 0534 */ 0x69CB, 0x69D0, 0x0AE4, -/* 0535 */ 0x69E8, 0x69EA, 0x0AEA, -/* 0536 */ 0x69FB, 0x6A02, 0x0AED, -/* 0537 */ 0x6A0A, 0x0000, 0xDBE0, -/* 0538 */ 0x6A11, 0x6A13, 0x0AF5, -/* 0539 */ 0x6A17, 0x6A19, 0x0AF8, -/* 053A */ 0x6A1E, 0x6A23, 0x0AFB, -/* 053B */ 0x6A35, 0x6A3D, 0x0B01, -/* 053C */ 0x6A44, 0x0000, 0xCAF4, -/* 053D */ 0x6A48, 0x6A4B, 0x0B0A, -/* 053E */ 0x6A52, 0x6A53, 0x0B0E, -/* 053F */ 0x6A58, 0x6A59, 0x0B10, -/* 0540 */ 0x6A5F, 0x6A61, 0x0B12, -/* 0541 */ 0x6A6B, 0x0000, 0xFCF4, -/* 0542 */ 0x6A80, 0x0000, 0xD3AA, -/* 0543 */ 0x6A84, 0x0000, 0xCCAC, -/* 0544 */ 0x6A89, 0x0000, 0xEFE0, -/* 0545 */ 0x6A8D, 0x6A8E, 0x0B15, -/* 0546 */ 0x6A97, 0x0000, 0xDBFC, -/* 0547 */ 0x6A9C, 0x0000, 0xFCE6, -/* 0548 */ 0x6AA2, 0x6AA3, 0x0B17, -/* 0549 */ 0x6AB3, 0x0000, 0xDEB1, -/* 054A */ 0x6ABB, 0x0000, 0xF9E3, -/* 054B */ 0x6AC2, 0x6AC3, 0x0B19, -/* 054C */ 0x6AD3, 0x0000, 0xD6D0, -/* 054D */ 0x6ADA, 0x6ADB, 0x0B1B, -/* 054E */ 0x6AF6, 0x0000, 0xFACB, -/* 054F */ 0x6AFB, 0x0000, 0xE5A1, -/* 0550 */ 0x6B04, 0x0000, 0xD5B1, -/* 0551 */ 0x6B0A, 0x6B0C, 0x0B1D, -/* 0552 */ 0x6B12, 0x0000, 0xD5B2, -/* 0553 */ 0x6B16, 0x0000, 0xD5BC, -/* 0554 */ 0x6B20, 0x6B23, 0x0B20, -/* 0555 */ 0x6B32, 0x0000, 0xE9B0, -/* 0556 */ 0x6B3A, 0x6B3E, 0x0B24, -/* 0557 */ 0x6B46, 0x6B47, 0x0B29, -/* 0558 */ 0x6B4C, 0x6B50, 0x0B2B, -/* 0559 */ 0x6B5F, 0x6B66, 0x0B30, -/* 055A */ 0x6B6A, 0x0000, 0xE8E0, -/* 055B */ 0x6B72, 0x0000, 0xE1A8, -/* 055C */ 0x6B77, 0x6B7B, 0x0B38, -/* 055D */ 0x6B7F, 0x0000, 0xD9D1, -/* 055E */ 0x6B83, 0x6B8A, 0x0B3D, -/* 055F */ 0x6B96, 0x6B98, 0x0B45, -/* 0560 */ 0x6B9E, 0x0000, 0xE9F9, -/* 0561 */ 0x6BAE, 0x6BC1, 0x0B48, -/* 0562 */ 0x6BC5, 0x6BC6, 0x0B5C, -/* 0563 */ 0x6BCB, 0x6BDB, 0x0B5E, -/* 0564 */ 0x6BEB, 0x6BEC, 0x0B6F, -/* 0565 */ 0x6C08, 0x0000, 0xEEFD, -/* 0566 */ 0x6C0F, 0x6C13, 0x0B71, -/* 0567 */ 0x6C23, 0x0000, 0xD1A8, -/* 0568 */ 0x6C34, 0x6C38, 0x0B76, -/* 0569 */ 0x6C3E, 0x6C42, 0x0B7B, -/* 056A */ 0x6C4E, 0x6C50, 0x0B80, -/* 056B */ 0x6C55, 0x6C60, 0x0B83, -/* 056C */ 0x6C68, 0x6C72, 0x0B8F, -/* 056D */ 0x6C76, 0x0000, 0xDAA1, -/* 056E */ 0x6C7A, 0x6C88, 0x0B9A, -/* 056F */ 0x6C8C, 0x0000, 0xD4C7, -/* 0570 */ 0x6C90, 0x6C9B, 0x0BA9, -/* 0571 */ 0x6CAB, 0x6CAE, 0x0BB5, -/* 0572 */ 0x6CB3, 0x0000, 0xF9C1, -/* 0573 */ 0x6CB8, 0x6CC4, 0x0BB9, -/* 0574 */ 0x6CC9, 0x6CCC, 0x0BC6, -/* 0575 */ 0x6CD3, 0x6CD7, 0x0BCA, -/* 0576 */ 0x6CDB, 0x0000, 0xDBF2, -/* 0577 */ 0x6CE1, 0x6CF3, 0x0BCF, -/* 0578 */ 0x6D0B, 0x6D0C, 0x0BE2, -/* 0579 */ 0x6D11, 0x0000, 0xDCC7, -/* 057A */ 0x6D17, 0x6D1E, 0x0BE4, -/* 057B */ 0x6D25, 0x6D2A, 0x0BEC, -/* 057C */ 0x6D32, 0x6D41, 0x0BF2, -/* 057D */ 0x6D59, 0x6D5C, 0x0C02, -/* 057E */ 0x6D63, 0x6D6E, 0x0C06, -/* 057F */ 0x6D74, 0x6D79, 0x0C12, -/* 0580 */ 0x6D7F, 0x0000, 0xF8AA, -/* 0581 */ 0x6D85, 0x6D95, 0x0C18, -/* 0582 */ 0x6DAF, 0x6DB5, 0x0C29, -/* 0583 */ 0x6DC0, 0x6DC7, 0x0C30, -/* 0584 */ 0x6DCB, 0x0000, 0xD7FA, -/* 0585 */ 0x6DCF, 0x6DD1, 0x0C38, -/* 0586 */ 0x6DD8, 0x6DDA, 0x0C3B, -/* 0587 */ 0x6DDE, 0x6DE1, 0x0C3E, -/* 0588 */ 0x6DE8, 0x6DFB, 0x0C42, -/* 0589 */ 0x6E17, 0x6E1B, 0x0C56, -/* 058A */ 0x6E1F, 0x6E26, 0x0C5B, -/* 058B */ 0x6E2B, 0x6E3E, 0x0C63, -/* 058C */ 0x6E43, 0x6E44, 0x0C77, -/* 058D */ 0x6E4A, 0x6E4D, 0x0C79, -/* 058E */ 0x6E56, 0x6E5F, 0x0C7D, -/* 058F */ 0x6E67, 0x0000, 0xE9C0, -/* 0590 */ 0x6E6B, 0x6E73, 0x0C87, -/* 0591 */ 0x6E7A, 0x0000, 0xDCC8, -/* 0592 */ 0x6E90, 0x0000, 0xEAB9, -/* 0593 */ 0x6E96, 0x0000, 0xF1DE, -/* 0594 */ 0x6E9C, 0x6EA5, 0x0C90, -/* 0595 */ 0x6EAA, 0x6EAB, 0x0C9A, -/* 0596 */ 0x6EAF, 0x6EB1, 0x0C9C, -/* 0597 */ 0x6EB6, 0x0000, 0xE9C1, -/* 0598 */ 0x6EBA, 0x0000, 0xD2FC, -/* 0599 */ 0x6EC2, 0x6EC5, 0x0C9F, -/* 059A */ 0x6EC9, 0x6ED4, 0x0CA3, -/* 059B */ 0x6EEF, 0x0000, 0xF4F2, -/* 059C */ 0x6EF4, 0x0000, 0xEED9, -/* 059D */ 0x6EF8, 0x0000, 0xFBCA, -/* 059E */ 0x6EFE, 0x6F02, 0x0CAF, -/* 059F */ 0x6F06, 0x0000, 0xF6D4, -/* 05A0 */ 0x6F0F, 0x6F15, 0x0CB4, -/* 05A1 */ 0x6F20, 0x6F23, 0x0CBB, -/* 05A2 */ 0x6F2B, 0x6F2C, 0x0CBF, -/* 05A3 */ 0x6F31, 0x6F32, 0x0CC1, -/* 05A4 */ 0x6F38, 0x0000, 0xEFC2, -/* 05A5 */ 0x6F3F, 0x6F41, 0x0CC3, -/* 05A6 */ 0x6F51, 0x6F64, 0x0CC6, -/* 05A7 */ 0x6F6D, 0x6F70, 0x0CDA, -/* 05A8 */ 0x6F7A, 0x6F84, 0x0CDE, -/* 05A9 */ 0x6F88, 0x0000, 0xF4CD, -/* 05AA */ 0x6F8D, 0x6F90, 0x0CE9, -/* 05AB */ 0x6F94, 0x6F97, 0x0CED, -/* 05AC */ 0x6FA3, 0x6FA7, 0x0CF1, -/* 05AD */ 0x6FAE, 0x6FB3, 0x0CF6, -/* 05AE */ 0x6FB9, 0x0000, 0xD3C2, -/* 05AF */ 0x6FBE, 0x6FC3, 0x0CFC, -/* 05B0 */ 0x6FCA, 0x0000, 0xE7D8, -/* 05B1 */ 0x6FD5, 0x0000, 0xE3A5, -/* 05B2 */ 0x6FDA, 0x0000, 0xE7B9, -/* 05B3 */ 0x6FDF, 0x6FE4, 0x0D02, -/* 05B4 */ 0x6FE9, 0x6FF1, 0x0D08, -/* 05B5 */ 0x6FFE, 0x7001, 0x0D11, -/* 05B6 */ 0x7005, 0x700B, 0x0D15, -/* 05B7 */ 0x700F, 0x7011, 0x0D1C, -/* 05B8 */ 0x7015, 0x701F, 0x0D1F, -/* 05B9 */ 0x7023, 0x0000, 0xFAAE, -/* 05BA */ 0x7027, 0x7028, 0x0D2A, -/* 05BB */ 0x702F, 0x0000, 0xE7BB, -/* 05BC */ 0x7037, 0x0000, 0xECCB, -/* 05BD */ 0x703E, 0x0000, 0xD5B3, -/* 05BE */ 0x704C, 0x0000, 0xCEB4, -/* 05BF */ 0x7050, 0x7051, 0x0D2C, -/* 05C0 */ 0x7058, 0x0000, 0xF7A8, -/* 05C1 */ 0x705D, 0x0000, 0xFBCE, -/* 05C2 */ 0x7063, 0x0000, 0xD8BD, -/* 05C3 */ 0x706B, 0x0000, 0xFBFD, -/* 05C4 */ 0x7070, 0x0000, 0xFCE9, -/* 05C5 */ 0x7078, 0x0000, 0xCFB6, -/* 05C6 */ 0x707C, 0x707D, 0x0D2E, -/* 05C7 */ 0x7085, 0x0000, 0xCCDD, -/* 05C8 */ 0x708A, 0x0000, 0xF6A7, -/* 05C9 */ 0x708E, 0x0000, 0xE6FA, -/* 05CA */ 0x7092, 0x0000, 0xF5A4, -/* 05CB */ 0x7098, 0x709A, 0x0D30, -/* 05CC */ 0x70A1, 0x70A4, 0x0D33, -/* 05CD */ 0x70AB, 0x70AF, 0x0D37, -/* 05CE */ 0x70B3, 0x0000, 0xDCB9, -/* 05CF */ 0x70B7, 0x70B9, 0x0D3C, -/* 05D0 */ 0x70C8, 0x70CB, 0x0D3F, -/* 05D1 */ 0x70CF, 0x0000, 0xE8A1, -/* 05D2 */ 0x70D8, 0x70D9, 0x0D43, -/* 05D3 */ 0x70DD, 0x70DF, 0x0D45, -/* 05D4 */ 0x70F1, 0x0000, 0xCCDE, -/* 05D5 */ 0x70F9, 0x0000, 0xF8B2, -/* 05D6 */ 0x70FD, 0x0000, 0xDCEB, -/* 05D7 */ 0x7104, 0x0000, 0xFDB6, -/* 05D8 */ 0x7109, 0x710C, 0x0D48, -/* 05D9 */ 0x7119, 0x711A, 0x0D4C, -/* 05DA */ 0x711E, 0x7121, 0x0D4E, -/* 05DB */ 0x7126, 0x0000, 0xF5A5, -/* 05DC */ 0x7130, 0x0000, 0xE6FB, -/* 05DD */ 0x7136, 0x0000, 0xE6D4, -/* 05DE */ 0x7147, 0x7150, 0x0D52, -/* 05DF */ 0x7156, 0x715E, 0x0D5C, -/* 05E0 */ 0x7164, 0x716E, 0x0D65, -/* 05E1 */ 0x717D, 0x0000, 0xE0C3, -/* 05E2 */ 0x7184, 0x0000, 0xE3D8, -/* 05E3 */ 0x7189, 0x718A, 0x0D70, -/* 05E4 */ 0x718F, 0x7194, 0x0D72, -/* 05E5 */ 0x7199, 0x0000, 0xFDF7, -/* 05E6 */ 0x719F, 0x71A2, 0x0D78, -/* 05E7 */ 0x71AC, 0x0000, 0xE8A2, -/* 05E8 */ 0x71B1, 0x0000, 0xE6F0, -/* 05E9 */ 0x71B9, 0x71BA, 0x0D7C, -/* 05EA */ 0x71BE, 0x71C3, 0x0D7E, -/* 05EB */ 0x71C8, 0x71C9, 0x0D84, -/* 05EC */ 0x71CE, 0x71D5, 0x0D86, -/* 05ED */ 0x71DF, 0x0000, 0xE7BD, -/* 05EE */ 0x71E5, 0x71E7, 0x0D8E, -/* 05EF */ 0x71ED, 0x71EE, 0x0D91, -/* 05F0 */ 0x71FB, 0x7200, 0x0D93, -/* 05F1 */ 0x7206, 0x0000, 0xF8EF, -/* 05F2 */ 0x7210, 0x0000, 0xD6D3, -/* 05F3 */ 0x721B, 0x0000, 0xD5B4, -/* 05F4 */ 0x722A, 0x7236, 0x0D99, -/* 05F5 */ 0x723A, 0x7240, 0x0DA6, -/* 05F6 */ 0x7246, 0x7248, 0x0DAD, -/* 05F7 */ 0x724C, 0x0000, 0xF8AB, -/* 05F8 */ 0x7252, 0x0000, 0xF4E0, -/* 05F9 */ 0x7258, 0x7262, 0x0DB0, -/* 05FA */ 0x7267, 0x7269, 0x0DBB, -/* 05FB */ 0x7272, 0x0000, 0xDFE5, -/* 05FC */ 0x7279, 0x0000, 0xF7E5, -/* 05FD */ 0x727D, 0x7281, 0x0DBE, -/* 05FE */ 0x72A2, 0x0000, 0xD4BB, -/* 05FF */ 0x72A7, 0x0000, 0xFDFA, -/* 0600 */ 0x72AC, 0x72AF, 0x0DC3, -/* 0601 */ 0x72C0, 0x72C4, 0x0DC7, -/* 0602 */ 0x72CE, 0x72D0, 0x0DCC, -/* 0603 */ 0x72D7, 0x72D9, 0x0DCF, -/* 0604 */ 0x72E1, 0x0000, 0xCEEA, -/* 0605 */ 0x72E9, 0x0000, 0xE2AD, -/* 0606 */ 0x72F8, 0x72FD, 0x0DD2, -/* 0607 */ 0x730A, 0x0000, 0xE7D9, -/* 0608 */ 0x7316, 0x0000, 0xF3E9, -/* 0609 */ 0x731B, 0x731D, 0x0DD8, -/* 060A */ 0x7325, 0x0000, 0xE8E5, -/* 060B */ 0x7329, 0x732B, 0x0DDB, -/* 060C */ 0x7336, 0x7337, 0x0DDE, -/* 060D */ 0x733E, 0x733F, 0x0DE0, -/* 060E */ 0x7344, 0x7345, 0x0DE2, -/* 060F */ 0x7350, 0x7352, 0x0DE4, -/* 0610 */ 0x7357, 0x0000, 0xCFF1, -/* 0611 */ 0x7368, 0x736A, 0x0DE7, -/* 0612 */ 0x7370, 0x737B, 0x0DEA, -/* 0613 */ 0x7384, 0x738E, 0x0DF6, -/* 0614 */ 0x7394, 0x7398, 0x0E01, -/* 0615 */ 0x739F, 0x0000, 0xDAC7, -/* 0616 */ 0x73A7, 0x73A9, 0x0E06, -/* 0617 */ 0x73AD, 0x0000, 0xDEB7, -/* 0618 */ 0x73B2, 0x73B3, 0x0E09, -/* 0619 */ 0x73B9, 0x0000, 0xFADD, -/* 061A */ 0x73C0, 0x73C2, 0x0E0B, -/* 061B */ 0x73C9, 0x73CF, 0x0E0E, -/* 061C */ 0x73D6, 0x73D9, 0x0E15, -/* 061D */ 0x73DD, 0x73ED, 0x0E19, -/* 061E */ 0x73F7, 0x73F9, 0x0E2A, -/* 061F */ 0x73FD, 0x7409, 0x0E2D, -/* 0620 */ 0x7413, 0x0000, 0xE8CD, -/* 0621 */ 0x741B, 0x0000, 0xF6DA, -/* 0622 */ 0x7420, 0x743A, 0x0E3A, -/* 0623 */ 0x743F, 0x7444, 0x0E55, -/* 0624 */ 0x744B, 0x0000, 0xEAD4, -/* 0625 */ 0x7455, 0x746A, 0x0E5B, -/* 0626 */ 0x746F, 0x0000, 0xD5CB, -/* 0627 */ 0x747E, 0x0000, 0xD0C8, -/* 0628 */ 0x7482, 0x7483, 0x0E71, -/* 0629 */ 0x7487, 0x748B, 0x0E73, -/* 062A */ 0x7498, 0x0000, 0xD7F3, -/* 062B */ 0x749C, 0x74AA, 0x0E78, -/* 062C */ 0x74B0, 0x74B5, 0x0E87, -/* 062D */ 0x74B9, 0x0000, 0xE2DB, -/* 062E */ 0x74BD, 0x74BF, 0x0E8D, -/* 062F */ 0x74C6, 0x0000, 0xF2EF, -/* 0630 */ 0x74CA, 0x0000, 0xCCE1, -/* 0631 */ 0x74CF, 0x0000, 0xD6EA, -/* 0632 */ 0x74D4, 0x0000, 0xE7C2, -/* 0633 */ 0x74D8, 0x74DC, 0x0E90, -/* 0634 */ 0x74E0, 0x74E6, 0x0E95, -/* 0635 */ 0x74EE, 0x0000, 0xE8B7, -/* 0636 */ 0x74F7, 0x0000, 0xEDB6, -/* 0637 */ 0x7501, 0x7504, 0x0E9C, -/* 0638 */ 0x7511, 0x0000, 0xF1F7, -/* 0639 */ 0x7515, 0x751B, 0x0EA0, -/* 063A */ 0x751F, 0x0000, 0xDFE6, -/* 063B */ 0x7523, 0x752C, 0x0EA7, -/* 063C */ 0x7530, 0x7533, 0x0EB1, -/* 063D */ 0x7537, 0x753A, 0x0EB5, -/* 063E */ 0x7547, 0x0000, 0xD0B4, -/* 063F */ 0x754C, 0x7554, 0x0EB9, -/* 0640 */ 0x7559, 0x755D, 0x0EC2, -/* 0641 */ 0x7562, 0x7566, 0x0EC7, -/* 0642 */ 0x756A, 0x0000, 0xDBE3, -/* 0643 */ 0x756F, 0x7570, 0x0ECC, -/* 0644 */ 0x7575, 0x757A, 0x0ECE, -/* 0645 */ 0x757F, 0x0000, 0xD1B2, -/* 0646 */ 0x7586, 0x7591, 0x0ED4, -/* 0647 */ 0x759D, 0x0000, 0xDFA8, -/* 0648 */ 0x75A5, 0x0000, 0xCBCA, -/* 0649 */ 0x75AB, 0x0000, 0xE6B9, -/* 064A */ 0x75B1, 0x75BE, 0x0EE0, -/* 064B */ 0x75C2, 0x75C7, 0x0EEE, -/* 064C */ 0x75CD, 0x0000, 0xECB7, -/* 064D */ 0x75D2, 0x75DB, 0x0EF4, -/* 064E */ 0x75E2, 0x0000, 0xD7E5, -/* 064F */ 0x75F0, 0x75F4, 0x0EFE, -/* 0650 */ 0x75FA, 0x75FC, 0x0F03, -/* 0651 */ 0x7600, 0x0000, 0xE5DC, -/* 0652 */ 0x760D, 0x0000, 0xE5CB, -/* 0653 */ 0x7619, 0x0000, 0xE1C4, -/* 0654 */ 0x761F, 0x7626, 0x0F06, -/* 0655 */ 0x763B, 0x0000, 0xD7AA, -/* 0656 */ 0x7642, 0x0000, 0xD6FB, -/* 0657 */ 0x764C, 0x764E, 0x0F0E, -/* 0658 */ 0x7652, 0x0000, 0xEBA8, -/* 0659 */ 0x7656, 0x0000, 0xDBFE, -/* 065A */ 0x7661, 0x7664, 0x0F11, -/* 065B */ 0x7669, 0x766C, 0x0F15, -/* 065C */ 0x7670, 0x7672, 0x0F19, -/* 065D */ 0x7678, 0x767E, 0x0F1C, -/* 065E */ 0x7684, 0x7687, 0x0F23, -/* 065F */ 0x768E, 0x7693, 0x0F27, -/* 0660 */ 0x76AE, 0x0000, 0xF9AB, -/* 0661 */ 0x76BA, 0x0000, 0xF5D4, -/* 0662 */ 0x76BF, 0x76CA, 0x0F2D, -/* 0663 */ 0x76D2, 0x0000, 0xF9EC, -/* 0664 */ 0x76D6, 0x0000, 0xCBCC, -/* 0665 */ 0x76DB, 0x76E7, 0x0F39, -/* 0666 */ 0x76EE, 0x0000, 0xD9CD, -/* 0667 */ 0x76F2, 0x76F4, 0x0F46, -/* 0668 */ 0x76F8, 0x0000, 0xDFD3, -/* 0669 */ 0x76FC, 0x7704, 0x0F49, -/* 066A */ 0x7708, 0x770B, 0x0F52, -/* 066B */ 0x771E, 0x7720, 0x0F56, -/* 066C */ 0x7729, 0x0000, 0xFADF, -/* 066D */ 0x7737, 0x773C, 0x0F59, -/* 066E */ 0x7740, 0x0000, 0xF3B7, -/* 066F */ 0x774D, 0x0000, 0xFAE0, -/* 0670 */ 0x775B, 0x0000, 0xEFEC, -/* 0671 */ 0x7761, 0x7766, 0x0F5F, -/* 0672 */ 0x776B, 0x0000, 0xF4E2, -/* 0673 */ 0x7779, 0x0000, 0xD4A9, -/* 0674 */ 0x777E, 0x777F, 0x0F65, -/* 0675 */ 0x778B, 0x0000, 0xF2D9, -/* 0676 */ 0x7791, 0x0000, 0xD9AA, -/* 0677 */ 0x779E, 0x0000, 0xD8BE, -/* 0678 */ 0x77A5, 0x0000, 0xDCAD, -/* 0679 */ 0x77AC, 0x77B3, 0x0F67, -/* 067A */ 0x77BB, 0x77BF, 0x0F6F, -/* 067B */ 0x77D7, 0x0000, 0xF5B8, -/* 067C */ 0x77DB, 0x77DC, 0x0F74, -/* 067D */ 0x77E2, 0x77E5, 0x0F76, -/* 067E */ 0x77E9, 0x0000, 0xCFBB, -/* 067F */ 0x77ED, 0x77EF, 0x0F7A, -/* 0680 */ 0x77F3, 0x0000, 0xE0B4, -/* 0681 */ 0x7802, 0x0000, 0xDEE3, -/* 0682 */ 0x7812, 0x0000, 0xDDF7, -/* 0683 */ 0x7825, 0x7827, 0x0F7D, -/* 0684 */ 0x782C, 0x0000, 0xD7FE, -/* 0685 */ 0x7832, 0x7834, 0x0F80, -/* 0686 */ 0x7845, 0x0000, 0xD0A9, -/* 0687 */ 0x784F, 0x0000, 0xE6DA, -/* 0688 */ 0x785D, 0x0000, 0xF5A6, -/* 0689 */ 0x786B, 0x786F, 0x0F83, -/* 068A */ 0x787C, 0x0000, 0xDDDD, -/* 068B */ 0x7881, 0x0000, 0xD1B3, -/* 068C */ 0x7887, 0x0000, 0xEFED, -/* 068D */ 0x788C, 0x7891, 0x0F88, -/* 068E */ 0x7897, 0x0000, 0xE8CF, -/* 068F */ 0x78A3, 0x0000, 0xCAE5, -/* 0690 */ 0x78A7, 0x78A9, 0x0F8E, -/* 0691 */ 0x78BA, 0x78BC, 0x0F91, -/* 0692 */ 0x78C1, 0x0000, 0xEDB8, -/* 0693 */ 0x78C5, 0x0000, 0xDBB6, -/* 0694 */ 0x78CA, 0x78D0, 0x0F94, -/* 0695 */ 0x78E8, 0x0000, 0xD8A8, -/* 0696 */ 0x78EC, 0x78EF, 0x0F9B, -/* 0697 */ 0x78F5, 0x0000, 0xCAD8, -/* 0698 */ 0x78FB, 0x0000, 0xDAF2, -/* 0699 */ 0x7901, 0x0000, 0xF5A7, -/* 069A */ 0x790E, 0x0000, 0xF5A8, -/* 069B */ 0x7916, 0x0000, 0xE6A6, -/* 069C */ 0x792A, 0x792C, 0x0F9F, -/* 069D */ 0x793A, 0x0000, 0xE3C6, -/* 069E */ 0x793E, 0x7941, 0x0FA2, -/* 069F */ 0x7947, 0x7949, 0x0FA6, -/* 06A0 */ 0x7950, 0x0000, 0xE9DE, -/* 06A1 */ 0x7956, 0x7960, 0x0FA9, -/* 06A2 */ 0x7965, 0x7968, 0x0FB4, -/* 06A3 */ 0x796D, 0x0000, 0xF0AE, -/* 06A4 */ 0x797A, 0x0000, 0xD1B8, -/* 06A5 */ 0x797F, 0x7981, 0x0FB8, -/* 06A6 */ 0x798D, 0x7991, 0x0FBB, -/* 06A7 */ 0x79A6, 0x79AA, 0x0FC0, -/* 06A8 */ 0x79AE, 0x79B3, 0x0FC5, -/* 06A9 */ 0x79B9, 0x0000, 0xE9E0, -/* 06AA */ 0x79BD, 0x79C1, 0x0FCB, -/* 06AB */ 0x79C9, 0x79CB, 0x0FD0, -/* 06AC */ 0x79D1, 0x79D8, 0x0FD3, -/* 06AD */ 0x79DF, 0x0000, 0xF0D5, -/* 06AE */ 0x79E4, 0x79E9, 0x0FDB, -/* 06AF */ 0x79FB, 0x0000, 0xECB9, -/* 06B0 */ 0x7A00, 0x0000, 0xFDFC, -/* 06B1 */ 0x7A05, 0x7A0D, 0x0FE1, -/* 06B2 */ 0x7A14, 0x7A20, 0x0FEA, -/* 06B3 */ 0x7A2E, 0x7A31, 0x0FF7, -/* 06B4 */ 0x7A36, 0x7A37, 0x0FFB, -/* 06B5 */ 0x7A3B, 0x7A40, 0x0FFD, -/* 06B6 */ 0x7A46, 0x7A49, 0x1003, -/* 06B7 */ 0x7A4D, 0x7A4E, 0x1007, -/* 06B8 */ 0x7A57, 0x0000, 0xE2B4, -/* 06B9 */ 0x7A61, 0x7A62, 0x1009, -/* 06BA */ 0x7A69, 0x7A6B, 0x100B, -/* 06BB */ 0x7A70, 0x0000, 0xE5CD, -/* 06BC */ 0x7A74, 0x7A84, 0x100E, -/* 06BD */ 0x7A88, 0x0000, 0xE9A1, -/* 06BE */ 0x7A92, 0x7A98, 0x101F, -/* 06BF */ 0x7A9F, 0x0000, 0xCFDF, -/* 06C0 */ 0x7AA9, 0x7AAA, 0x1026, -/* 06C1 */ 0x7AAE, 0x7AAF, 0x1028, -/* 06C2 */ 0x7ABA, 0x0000, 0xD0AA, -/* 06C3 */ 0x7AC4, 0x7ACB, 0x102A, -/* 06C4 */ 0x7AD7, 0x7AD9, 0x1032, -/* 06C5 */ 0x7ADD, 0x7AE5, 0x1035, -/* 06C6 */ 0x7AEA, 0x7AEF, 0x103E, -/* 06C7 */ 0x7AF6, 0x7AFA, 0x1044, -/* 06C8 */ 0x7AFF, 0x0000, 0xCADA, -/* 06C9 */ 0x7B0F, 0x7B11, 0x1049, -/* 06CA */ 0x7B19, 0x7B20, 0x104C, -/* 06CB */ 0x7B26, 0x0000, 0xDDAC, -/* 06CC */ 0x7B2C, 0x7B2D, 0x1054, -/* 06CD */ 0x7B39, 0x0000, 0xE1AB, -/* 06CE */ 0x7B46, 0x7B56, 0x1056, -/* 06CF */ 0x7B60, 0x0000, 0xD0B5, -/* 06D0 */ 0x7B6C, 0x7B6E, 0x1067, -/* 06D1 */ 0x7B75, 0x0000, 0xE6DD, -/* 06D2 */ 0x7B7D, 0x0000, 0xE8A4, -/* 06D3 */ 0x7B87, 0x0000, 0xCBCD, -/* 06D4 */ 0x7B8B, 0x0000, 0xEFA8, -/* 06D5 */ 0x7B8F, 0x0000, 0xEEB4, -/* 06D6 */ 0x7B94, 0x7B9D, 0x106A, -/* 06D7 */ 0x7BA1, 0x0000, 0xCEB7, -/* 06D8 */ 0x7BAD, 0x0000, 0xEFA9, -/* 06D9 */ 0x7BB1, 0x7BB4, 0x1074, -/* 06DA */ 0x7BB8, 0x0000, 0xEEC6, -/* 06DB */ 0x7BC0, 0x7BC9, 0x1078, -/* 06DC */ 0x7BD2, 0x0000, 0xE3D9, -/* 06DD */ 0x7BE0, 0x0000, 0xE1C6, -/* 06DE */ 0x7BE4, 0x0000, 0xD4BF, -/* 06DF */ 0x7BE9, 0x0000, 0xDEE8, -/* 06E0 */ 0x7C07, 0x0000, 0xF0EA, -/* 06E1 */ 0x7C12, 0x0000, 0xF3C2, -/* 06E2 */ 0x7C1E, 0x7C21, 0x1082, -/* 06E3 */ 0x7C27, 0x7C2B, 0x1086, -/* 06E4 */ 0x7C3D, 0x7C3F, 0x108B, -/* 06E5 */ 0x7C43, 0x0000, 0xD5BE, -/* 06E6 */ 0x7C4C, 0x7C4D, 0x108E, -/* 06E7 */ 0x7C60, 0x0000, 0xD6EB, -/* 06E8 */ 0x7C64, 0x0000, 0xF4D9, -/* 06E9 */ 0x7C6C, 0x0000, 0xD7E6, -/* 06EA */ 0x7C73, 0x0000, 0xDAB7, -/* 06EB */ 0x7C83, 0x0000, 0xDDFB, -/* 06EC */ 0x7C89, 0x0000, 0xDDCF, -/* 06ED */ 0x7C92, 0x7C98, 0x1090, -/* 06EE */ 0x7C9F, 0x0000, 0xE1D8, -/* 06EF */ 0x7CA5, 0x7CA7, 0x1097, -/* 06F0 */ 0x7CAE, 0x7CB3, 0x109A, -/* 06F1 */ 0x7CB9, 0x0000, 0xE2B6, -/* 06F2 */ 0x7CBE, 0x0000, 0xEFF1, -/* 06F3 */ 0x7CCA, 0x0000, 0xFBD5, -/* 06F4 */ 0x7CD6, 0x0000, 0xD3D8, -/* 06F5 */ 0x7CDE, 0x7CE0, 0x10A0, -/* 06F6 */ 0x7CE7, 0x0000, 0xD5DD, -/* 06F7 */ 0x7CFB, 0x7D10, 0x10A3, -/* 06F8 */ 0x7D14, 0x7D1B, 0x10B9, -/* 06F9 */ 0x7D20, 0x7D22, 0x10C1, -/* 06FA */ 0x7D2B, 0x7D35, 0x10C4, -/* 06FB */ 0x7D39, 0x7D3A, 0x10CF, -/* 06FC */ 0x7D42, 0x7D46, 0x10D1, -/* 06FD */ 0x7D50, 0x0000, 0xCCBF, -/* 06FE */ 0x7D5E, 0x7D62, 0x10D6, -/* 06FF */ 0x7D66, 0x7D6A, 0x10DB, -/* 0700 */ 0x7D6E, 0x7D79, 0x10E0, -/* 0701 */ 0x7D7F, 0x0000, 0xCFBD, -/* 0702 */ 0x7D8E, 0x7D8F, 0x10EC, -/* 0703 */ 0x7D93, 0x0000, 0xCCE8, -/* 0704 */ 0x7D9C, 0x0000, 0xF0FC, -/* 0705 */ 0x7DA0, 0x7DA2, 0x10EE, -/* 0706 */ 0x7DAC, 0x7DAD, 0x10F1, -/* 0707 */ 0x7DB1, 0x7DBF, 0x10F3, -/* 0708 */ 0x7DC7, 0x7DCB, 0x1102, -/* 0709 */ 0x7DD6, 0x7DE3, 0x1107, -/* 070A */ 0x7DE8, 0x7DEF, 0x1115, -/* 070B */ 0x7DF4, 0x0000, 0xD6A3, -/* 070C */ 0x7DFB, 0x0000, 0xF6C6, -/* 070D */ 0x7E09, 0x7E0A, 0x111D, -/* 070E */ 0x7E15, 0x0000, 0xE8B2, -/* 070F */ 0x7E1B, 0x7E23, 0x111F, -/* 0710 */ 0x7E2B, 0x7E31, 0x1128, -/* 0711 */ 0x7E37, 0x0000, 0xD7AC, -/* 0712 */ 0x7E3D, 0x7E47, 0x112F, -/* 0713 */ 0x7E52, 0x7E55, 0x113A, -/* 0714 */ 0x7E5E, 0x7E61, 0x113E, -/* 0715 */ 0x7E69, 0x7E70, 0x1142, -/* 0716 */ 0x7E79, 0x7E7C, 0x114A, -/* 0717 */ 0x7E82, 0x0000, 0xF3C3, -/* 0718 */ 0x7E8C, 0x7E8F, 0x114E, -/* 0719 */ 0x7E93, 0x7E9C, 0x1152, -/* 071A */ 0x7F36, 0x7F3A, 0x115C, -/* 071B */ 0x7F4C, 0x0000, 0xE5A2, -/* 071C */ 0x7F50, 0x0000, 0xCEB8, -/* 071D */ 0x7F54, 0x7F55, 0x1161, -/* 071E */ 0x7F6A, 0x7F79, 0x1163, -/* 071F */ 0x7F85, 0x7F8E, 0x1173, -/* 0720 */ 0x7F94, 0x0000, 0xCDC4, -/* 0721 */ 0x7F9A, 0x0000, 0xD6BE, -/* 0722 */ 0x7F9E, 0x0000, 0xE2BA, -/* 0723 */ 0x7FA4, 0x0000, 0xCFD8, -/* 0724 */ 0x7FA8, 0x7FA9, 0x117D, -/* 0725 */ 0x7FB2, 0x0000, 0xFDFD, -/* 0726 */ 0x7FB8, 0x7FB9, 0x117F, -/* 0727 */ 0x7FBD, 0x0000, 0xE9E2, -/* 0728 */ 0x7FC1, 0x0000, 0xE8BA, -/* 0729 */ 0x7FC5, 0x0000, 0xE3C7, -/* 072A */ 0x7FCA, 0x7FCE, 0x1181, -/* 072B */ 0x7FD2, 0x7FD5, 0x1186, -/* 072C */ 0x7FDF, 0x7FE1, 0x118A, -/* 072D */ 0x7FE9, 0x7FEB, 0x118D, -/* 072E */ 0x7FF0, 0x0000, 0xF9D7, -/* 072F */ 0x7FF9, 0x7FFC, 0x1190, -/* 0730 */ 0x8000, 0x800C, 0x1194, -/* 0731 */ 0x8010, 0x0000, 0xD2B1, -/* 0732 */ 0x8015, 0x8018, 0x11A1, -/* 0733 */ 0x802D, 0x0000, 0xD1BE, -/* 0734 */ 0x8033, 0x8036, 0x11A5, -/* 0735 */ 0x803D, 0x803F, 0x11A9, -/* 0736 */ 0x8043, 0x8046, 0x11AC, -/* 0737 */ 0x804A, 0x0000, 0xD6FD, -/* 0738 */ 0x8056, 0x805A, 0x11B0, -/* 0739 */ 0x805E, 0x0000, 0xDAA4, -/* 073A */ 0x806F, 0x8073, 0x11B5, -/* 073B */ 0x8077, 0x0000, 0xF2C5, -/* 073C */ 0x807D, 0x807F, 0x11BA, -/* 073D */ 0x8084, 0x808C, 0x11BD, -/* 073E */ 0x8096, 0x0000, 0xF5AB, -/* 073F */ 0x809B, 0x809D, 0x11C6, -/* 0740 */ 0x80A1, 0x80A5, 0x11C9, -/* 0741 */ 0x80A9, 0x80AA, 0x11CE, -/* 0742 */ 0x80AF, 0x80B4, 0x11D0, -/* 0743 */ 0x80BA, 0x0000, 0xF8CB, -/* 0744 */ 0x80C3, 0x80C4, 0x11D6, -/* 0745 */ 0x80CC, 0x80CE, 0x11D8, -/* 0746 */ 0x80DA, 0x80E5, 0x11DB, -/* 0747 */ 0x80F1, 0x80F4, 0x11E7, -/* 0748 */ 0x80F8, 0x0000, 0xFDD8, -/* 0749 */ 0x80FD, 0x0000, 0xD2F6, -/* 074A */ 0x8102, 0x810A, 0x11EB, -/* 074B */ 0x8118, 0x811B, 0x11F4, -/* 074C */ 0x8123, 0x0000, 0xE2EE, -/* 074D */ 0x8129, 0x812B, 0x11F8, -/* 074E */ 0x812F, 0x0000, 0xF8E1, -/* 074F */ 0x8139, 0x0000, 0xF3EC, -/* 0750 */ 0x813E, 0x0000, 0xDEA1, -/* 0751 */ 0x814B, 0x8155, 0x11FB, -/* 0752 */ 0x8165, 0x8166, 0x1206, -/* 0753 */ 0x816B, 0x0000, 0xF0FE, -/* 0754 */ 0x8170, 0x8171, 0x1208, -/* 0755 */ 0x8178, 0x817A, 0x120A, -/* 0756 */ 0x817F, 0x8180, 0x120D, -/* 0757 */ 0x8188, 0x818A, 0x120F, -/* 0758 */ 0x818F, 0x0000, 0xCDC7, -/* 0759 */ 0x819A, 0x81A3, 0x1212, -/* 075A */ 0x81A8, 0x0000, 0xF8B3, -/* 075B */ 0x81B3, 0x81B5, 0x121C, -/* 075C */ 0x81BA, 0x81C2, 0x121F, -/* 075D */ 0x81C6, 0x0000, 0xE5E6, -/* 075E */ 0x81CD, 0x0000, 0xF0B0, -/* 075F */ 0x81D8, 0x0000, 0xD5C4, -/* 0760 */ 0x81DF, 0x0000, 0xEDF4, -/* 0761 */ 0x81E3, 0x81ED, 0x1228, -/* 0762 */ 0x81F3, 0x81F4, 0x1233, -/* 0763 */ 0x81FA, 0x81FE, 0x1235, -/* 0764 */ 0x8205, 0x820D, 0x123A, -/* 0765 */ 0x8212, 0x0000, 0xE0A2, -/* 0766 */ 0x821B, 0x8221, 0x1243, -/* 0767 */ 0x822A, 0x822C, 0x124A, -/* 0768 */ 0x8235, 0x8239, 0x124D, -/* 0769 */ 0x8240, 0x0000, 0xDDB2, -/* 076A */ 0x8245, 0x8247, 0x1252, -/* 076B */ 0x8259, 0x0000, 0xF3ED, -/* 076C */ 0x8264, 0x8266, 0x1255, -/* 076D */ 0x826E, 0x8272, 0x1258, -/* 076E */ 0x8276, 0x8278, 0x125D, -/* 076F */ 0x827E, 0x0000, 0xE4F5, -/* 0770 */ 0x828B, 0x828E, 0x1260, -/* 0771 */ 0x8292, 0x0000, 0xD8D3, -/* 0772 */ 0x8299, 0x829F, 0x1264, -/* 0773 */ 0x82A5, 0x82B3, 0x126B, -/* 0774 */ 0x82B7, 0x82BF, 0x127A, -/* 0775 */ 0x82D1, 0x82D7, 0x1283, -/* 0776 */ 0x82DB, 0x82E1, 0x128A, -/* 0777 */ 0x82E5, 0x82E7, 0x1291, -/* 0778 */ 0x82F1, 0x0000, 0xE7C8, -/* 0779 */ 0x82FD, 0x8305, 0x1294, -/* 077A */ 0x8309, 0x0000, 0xD8C9, -/* 077B */ 0x8317, 0x0000, 0xD9AB, -/* 077C */ 0x8328, 0x832B, 0x129D, -/* 077D */ 0x832F, 0x8339, 0x12A1, -/* 077E */ 0x8340, 0x0000, 0xE2F0, -/* 077F */ 0x8347, 0x834A, 0x12AC, -/* 0780 */ 0x834F, 0x8352, 0x12B0, -/* 0781 */ 0x8373, 0x0000, 0xD4E5, -/* 0782 */ 0x8377, 0x0000, 0xF9C3, -/* 0783 */ 0x837B, 0x0000, 0xEEE2, -/* 0784 */ 0x8389, 0x838A, 0x12B4, -/* 0785 */ 0x838E, 0x0000, 0xDEED, -/* 0786 */ 0x8396, 0x8398, 0x12B6, -/* 0787 */ 0x839E, 0x0000, 0xE8D4, -/* 0788 */ 0x83A2, 0x0000, 0xFAF8, -/* 0789 */ 0x83A9, 0x83AB, 0x12B9, -/* 078A */ 0x83BD, 0x0000, 0xD8D5, -/* 078B */ 0x83C1, 0x0000, 0xF4EA, -/* 078C */ 0x83C5, 0x0000, 0xCEB9, -/* 078D */ 0x83C9, 0x83CC, 0x12BC, -/* 078E */ 0x83D3, 0x83D6, 0x12C0, -/* 078F */ 0x83DC, 0x0000, 0xF3F8, -/* 0790 */ 0x83E9, 0x83EB, 0x12C4, -/* 0791 */ 0x83EF, 0x83F4, 0x12C7, -/* 0792 */ 0x83F9, 0x0000, 0xEEC9, -/* 0793 */ 0x83FD, 0x0000, 0xE2DD, -/* 0794 */ 0x8403, 0x8404, 0x12CD, -/* 0795 */ 0x840A, 0x840E, 0x12CF, -/* 0796 */ 0x8429, 0x842C, 0x12D4, -/* 0797 */ 0x8431, 0x0000, 0xFDC0, -/* 0798 */ 0x8438, 0x0000, 0xEBAD, -/* 0799 */ 0x843D, 0x0000, 0xD5AA, -/* 079A */ 0x8449, 0x0000, 0xE7A8, -/* 079B */ 0x8457, 0x0000, 0xEECA, -/* 079C */ 0x845B, 0x0000, 0xCAE7, -/* 079D */ 0x8461, 0x8466, 0x12D8, -/* 079E */ 0x846B, 0x846F, 0x12DE, -/* 079F */ 0x8475, 0x0000, 0xD0AD, -/* 07A0 */ 0x847A, 0x0000, 0xF1F1, -/* 07A1 */ 0x8490, 0x0000, 0xE2BD, -/* 07A2 */ 0x8494, 0x0000, 0xE3C8, -/* 07A3 */ 0x8499, 0x849C, 0x12E3, -/* 07A4 */ 0x84A1, 0x0000, 0xDBBC, -/* 07A5 */ 0x84B2, 0x0000, 0xF8E4, -/* 07A6 */ 0x84B8, 0x84CD, 0x12E7, -/* 07A7 */ 0x84D1, 0x0000, 0xDEEE, -/* 07A8 */ 0x84DA, 0x0000, 0xE2BE, -/* 07A9 */ 0x84EC, 0x84EE, 0x12FD, -/* 07AA */ 0x84F4, 0x0000, 0xE2F1, -/* 07AB */ 0x84FC, 0x0000, 0xD6FE, -/* 07AC */ 0x8511, 0x851A, 0x1300, -/* 07AD */ 0x851E, 0x8525, 0x130A, -/* 07AE */ 0x852C, 0x852F, 0x1312, -/* 07AF */ 0x853D, 0x8543, 0x1316, -/* 07B0 */ 0x8549, 0x0000, 0xF5AF, -/* 07B1 */ 0x854E, 0x0000, 0xCEF0, -/* 07B2 */ 0x8553, 0x0000, 0xE9FE, -/* 07B3 */ 0x8559, 0x0000, 0xFBB6, -/* 07B4 */ 0x8563, 0x0000, 0xE2F2, -/* 07B5 */ 0x8568, 0x856D, 0x131D, -/* 07B6 */ 0x8584, 0x8587, 0x1323, -/* 07B7 */ 0x858F, 0x8594, 0x1327, -/* 07B8 */ 0x859B, 0x0000, 0xE0E0, -/* 07B9 */ 0x85A6, 0x85AA, 0x132D, -/* 07BA */ 0x85AF, 0x85B0, 0x1332, -/* 07BB */ 0x85BA, 0x0000, 0xF0B1, -/* 07BC */ 0x85C1, 0x0000, 0xCDCB, -/* 07BD */ 0x85C9, 0x0000, 0xEDBE, -/* 07BE */ 0x85CD, 0x85CF, 0x1334, -/* 07BF */ 0x85D5, 0x0000, 0xE9E4, -/* 07C0 */ 0x85DC, 0x85DD, 0x1337, -/* 07C1 */ 0x85E4, 0x85E5, 0x1339, -/* 07C2 */ 0x85E9, 0x85EA, 0x133B, -/* 07C3 */ 0x85F7, 0x85FB, 0x133D, -/* 07C4 */ 0x85FF, 0x8602, 0x1342, -/* 07C5 */ 0x8606, 0x860A, 0x1346, -/* 07C6 */ 0x8616, 0x861A, 0x134B, -/* 07C7 */ 0x862D, 0x0000, 0xD5B5, -/* 07C8 */ 0x863F, 0x0000, 0xD5A1, -/* 07C9 */ 0x864E, 0x8650, 0x1350, -/* 07CA */ 0x8654, 0x8655, 0x1353, -/* 07CB */ 0x865B, 0x865F, 0x1355, -/* 07CC */ 0x8667, 0x0000, 0xFDD0, -/* 07CD */ 0x8679, 0x0000, 0xFBF6, -/* 07CE */ 0x868A, 0x868C, 0x135A, -/* 07CF */ 0x8693, 0x0000, 0xECE2, -/* 07D0 */ 0x86A3, 0x86A4, 0x135D, -/* 07D1 */ 0x86A9, 0x0000, 0xF6C9, -/* 07D2 */ 0x86C7, 0x0000, 0xDEEF, -/* 07D3 */ 0x86CB, 0x0000, 0xD3B1, -/* 07D4 */ 0x86D4, 0x0000, 0xFCEE, -/* 07D5 */ 0x86D9, 0x86DB, 0x135F, -/* 07D6 */ 0x86DF, 0x0000, 0xCEF1, -/* 07D7 */ 0x86E4, 0x0000, 0xF9ED, -/* 07D8 */ 0x86ED, 0x0000, 0xF2F4, -/* 07D9 */ 0x86FE, 0x8703, 0x1362, -/* 07DA */ 0x8708, 0x0000, 0xE8A5, -/* 07DB */ 0x8718, 0x871C, 0x1368, -/* 07DC */ 0x874E, 0x0000, 0xCAE9, -/* 07DD */ 0x8755, 0x8757, 0x136D, -/* 07DE */ 0x875F, 0x0000, 0xEADA, -/* 07DF */ 0x8766, 0x8768, 0x1370, -/* 07E0 */ 0x8774, 0x8778, 0x1373, -/* 07E1 */ 0x8782, 0x0000, 0xD5CC, -/* 07E2 */ 0x878D, 0x0000, 0xEBD7, -/* 07E3 */ 0x879F, 0x87A2, 0x1378, -/* 07E4 */ 0x87B3, 0x0000, 0xD3D9, -/* 07E5 */ 0x87BA, 0x0000, 0xD5A2, -/* 07E6 */ 0x87C4, 0x0000, 0xF6DE, -/* 07E7 */ 0x87E0, 0x0000, 0xDAF6, -/* 07E8 */ 0x87EC, 0x87F2, 0x137C, -/* 07E9 */ 0x87F9, 0x87FE, 0x1383, -/* 07EA */ 0x8805, 0x0000, 0xE3B2, -/* 07EB */ 0x881F, 0x8823, 0x1389, -/* 07EC */ 0x8831, 0x0000, 0xCDCC, -/* 07ED */ 0x8836, 0x0000, 0xEDD9, -/* 07EE */ 0x883B, 0x0000, 0xD8C1, -/* 07EF */ 0x8840, 0x0000, 0xFAEC, -/* 07F0 */ 0x8846, 0x0000, 0xF1EB, -/* 07F1 */ 0x884C, 0x884D, 0x138E, -/* 07F2 */ 0x8852, 0x8853, 0x1390, -/* 07F3 */ 0x8857, 0x885D, 0x1392, -/* 07F4 */ 0x8861, 0x8863, 0x1399, -/* 07F5 */ 0x8868, 0x886B, 0x139C, -/* 07F6 */ 0x8870, 0x8872, 0x13A0, -/* 07F7 */ 0x8877, 0x0000, 0xF5FB, -/* 07F8 */ 0x887E, 0x8882, 0x13A3, -/* 07F9 */ 0x8888, 0x888D, 0x13A8, -/* 07FA */ 0x8892, 0x0000, 0xD3B2, -/* 07FB */ 0x8896, 0x8897, 0x13AE, -/* 07FC */ 0x889E, 0x0000, 0xCDE5, -/* 07FD */ 0x88AB, 0x0000, 0xF9AC, -/* 07FE */ 0x88B4, 0x0000, 0xCDCD, -/* 07FF */ 0x88C1, 0x88C2, 0x13B0, -/* 0800 */ 0x88CF, 0x0000, 0xD7EA, -/* 0801 */ 0x88D4, 0x88D5, 0x13B2, -/* 0802 */ 0x88D9, 0x88E1, 0x13B4, -/* 0803 */ 0x88E8, 0x0000, 0xDEA5, -/* 0804 */ 0x88F3, 0x88F8, 0x13BD, -/* 0805 */ 0x88FD, 0x0000, 0xF0B2, -/* 0806 */ 0x8907, 0x0000, 0xDCDC, -/* 0807 */ 0x8910, 0x8913, 0x13C3, -/* 0808 */ 0x8918, 0x8919, 0x13C7, -/* 0809 */ 0x8925, 0x0000, 0xE9B3, -/* 080A */ 0x892A, 0x0000, 0xF7DB, -/* 080B */ 0x8936, 0x893B, 0x13C9, -/* 080C */ 0x8941, 0x8944, 0x13CF, -/* 080D */ 0x895F, 0x0000, 0xD0DC, -/* 080E */ 0x8964, 0x0000, 0xD5C1, -/* 080F */ 0x896A, 0x0000, 0xD8CA, -/* 0810 */ 0x8972, 0x0000, 0xE3A9, -/* 0811 */ 0x897F, 0x8987, 0x13D3, -/* 0812 */ 0x898B, 0x0000, 0xCCB8, -/* 0813 */ 0x898F, 0x0000, 0xD0AE, -/* 0814 */ 0x8993, 0x8996, 0x13DC, -/* 0815 */ 0x89A1, 0x0000, 0xCCAF, -/* 0816 */ 0x89A9, 0x89AA, 0x13E0, -/* 0817 */ 0x89B2, 0x0000, 0xD0CC, -/* 0818 */ 0x89BA, 0x89C0, 0x13E2, -/* 0819 */ 0x89D2, 0x0000, 0xCAC7, -/* 081A */ 0x89E3, 0x0000, 0xFAB0, -/* 081B */ 0x89F4, 0x0000, 0xDFD8, -/* 081C */ 0x89F8, 0x0000, 0xF5BA, -/* 081D */ 0x8A00, 0x8A03, 0x13E9, -/* 081E */ 0x8A08, 0x8A0E, 0x13ED, -/* 081F */ 0x8A13, 0x8A1F, 0x13F4, -/* 0820 */ 0x8A23, 0x8A25, 0x1401, -/* 0821 */ 0x8A2A, 0x8A2D, 0x1404, -/* 0822 */ 0x8A31, 0x8A36, 0x1408, -/* 0823 */ 0x8A3A, 0x8A3B, 0x140E, -/* 0824 */ 0x8A50, 0x0000, 0xDEF1, -/* 0825 */ 0x8A54, 0x8A55, 0x1410, -/* 0826 */ 0x8A5B, 0x8A69, 0x1412, -/* 0827 */ 0x8A6D, 0x8A75, 0x1421, -/* 0828 */ 0x8A79, 0x0000, 0xF4DA, -/* 0829 */ 0x8A85, 0x8A87, 0x142A, -/* 082A */ 0x8A8C, 0x8A8D, 0x142D, -/* 082B */ 0x8A93, 0x8A98, 0x142F, -/* 082C */ 0x8A9E, 0x8AAA, 0x1435, -/* 082D */ 0x8AB0, 0x8AB2, 0x1442, -/* 082E */ 0x8AB9, 0x8AC7, 0x1445, -/* 082F */ 0x8ACB, 0x8AD2, 0x1454, -/* 0830 */ 0x8AD6, 0x0000, 0xD6E5, -/* 0831 */ 0x8ADB, 0x8ADC, 0x145C, -/* 0832 */ 0x8AE1, 0x0000, 0xE3CD, -/* 0833 */ 0x8AE6, 0x8AF1, 0x145E, -/* 0834 */ 0x8AF6, 0x8AFA, 0x146A, -/* 0835 */ 0x8AFE, 0x8B04, 0x146F, -/* 0836 */ 0x8B0E, 0x8B10, 0x1476, -/* 0837 */ 0x8B14, 0x8B20, 0x1479, -/* 0838 */ 0x8B28, 0x8B2C, 0x1486, -/* 0839 */ 0x8B33, 0x0000, 0xCFC4, -/* 083A */ 0x8B39, 0x0000, 0xD0CD, -/* 083B */ 0x8B41, 0x0000, 0xFCA6, -/* 083C */ 0x8B49, 0x0000, 0xF1FB, -/* 083D */ 0x8B4E, 0x8B4F, 0x148B, -/* 083E */ 0x8B58, 0x8B5C, 0x148D, -/* 083F */ 0x8B66, 0x0000, 0xCCED, -/* 0840 */ 0x8B6C, 0x8B70, 0x1492, -/* 0841 */ 0x8B74, 0x8B77, 0x1497, -/* 0842 */ 0x8B7D, 0x8B80, 0x149B, -/* 0843 */ 0x8B8A, 0x0000, 0xDCA8, -/* 0844 */ 0x8B90, 0x8B96, 0x149F, -/* 0845 */ 0x8B9A, 0x0000, 0xF3C6, -/* 0846 */ 0x8C37, 0x0000, 0xCDDB, -/* 0847 */ 0x8C3F, 0x8C41, 0x14A6, -/* 0848 */ 0x8C46, 0x8C4C, 0x14A9, -/* 0849 */ 0x8C55, 0x0000, 0xE3CE, -/* 084A */ 0x8C5A, 0x0000, 0xD4CA, -/* 084B */ 0x8C61, 0x0000, 0xDFDA, -/* 084C */ 0x8C6A, 0x8C6B, 0x14B0, -/* 084D */ 0x8C79, 0x8C7A, 0x14B2, -/* 084E */ 0x8C82, 0x0000, 0xF5B0, -/* 084F */ 0x8C8A, 0x8C8C, 0x14B4, -/* 0850 */ 0x8C9D, 0x8CA2, 0x14B7, -/* 0851 */ 0x8CA7, 0x8CCA, 0x14BD, -/* 0852 */ 0x8CD1, 0x8CD3, 0x14E1, -/* 0853 */ 0x8CDA, 0x8CE6, 0x14E4, -/* 0854 */ 0x8CEA, 0x8CED, 0x14F1, -/* 0855 */ 0x8CF4, 0x0000, 0xD6F3, -/* 0856 */ 0x8CFB, 0x8CFD, 0x14F5, -/* 0857 */ 0x8D04, 0x8D0D, 0x14F8, -/* 0858 */ 0x8D13, 0x8D16, 0x1502, -/* 0859 */ 0x8D64, 0x8D66, 0x1506, -/* 085A */ 0x8D6B, 0x0000, 0xFAD3, -/* 085B */ 0x8D70, 0x8D77, 0x1509, -/* 085C */ 0x8D85, 0x0000, 0xF5B1, -/* 085D */ 0x8D8A, 0x0000, 0xEAC6, -/* 085E */ 0x8D99, 0x0000, 0xF0E1, -/* 085F */ 0x8DA3, 0x0000, 0xF6AC, -/* 0860 */ 0x8DA8, 0x0000, 0xF5D9, -/* 0861 */ 0x8DB3, 0x0000, 0xF0EB, -/* 0862 */ 0x8DBA, 0x0000, 0xDDBA, -/* 0863 */ 0x8DBE, 0x0000, 0xF2BF, -/* 0864 */ 0x8DC6, 0x0000, 0xF7C5, -/* 0865 */ 0x8DCB, 0x8DCF, 0x1511, -/* 0866 */ 0x8DDB, 0x8DDD, 0x1516, -/* 0867 */ 0x8DE1, 0x8DE3, 0x1519, -/* 0868 */ 0x8DE8, 0x0000, 0xCEA5, -/* 0869 */ 0x8DEF, 0x0000, 0xD6D8, -/* 086A */ 0x8DF3, 0x0000, 0xD4AF, -/* 086B */ 0x8E0A, 0x0000, 0xE9C9, -/* 086C */ 0x8E0F, 0x8E10, 0x151C, -/* 086D */ 0x8E1E, 0x0000, 0xCBE6, -/* 086E */ 0x8E2A, 0x0000, 0xF1A1, -/* 086F */ 0x8E30, 0x0000, 0xEBB2, -/* 0870 */ 0x8E35, 0x0000, 0xF1A2, -/* 0871 */ 0x8E42, 0x8E4A, 0x151E, -/* 0872 */ 0x8E59, 0x0000, 0xF5EC, -/* 0873 */ 0x8E5F, 0x8E60, 0x1527, -/* 0874 */ 0x8E74, 0x8E76, 0x1529, -/* 0875 */ 0x8E81, 0x0000, 0xF0E2, -/* 0876 */ 0x8E87, 0x8E8D, 0x152C, -/* 0877 */ 0x8EAA, 0x8EAC, 0x1533, -/* 0878 */ 0x8EC0, 0x0000, 0xCFC6, -/* 0879 */ 0x8ECA, 0x8ECD, 0x1536, -/* 087A */ 0x8ED2, 0x0000, 0xFACD, -/* 087B */ 0x8EDF, 0x0000, 0xE6E3, -/* 087C */ 0x8EEB, 0x0000, 0xF2E2, -/* 087D */ 0x8EF8, 0x8EFE, 0x153A, -/* 087E */ 0x8F03, 0x8F05, 0x1541, -/* 087F */ 0x8F09, 0x0000, 0xEEB0, -/* 0880 */ 0x8F12, 0x8F15, 0x1544, -/* 0881 */ 0x8F1B, 0x8F1F, 0x1548, -/* 0882 */ 0x8F26, 0x8F2A, 0x154D, -/* 0883 */ 0x8F2F, 0x0000, 0xF2FE, -/* 0884 */ 0x8F33, 0x0000, 0xF1CD, -/* 0885 */ 0x8F38, 0x8F3F, 0x1552, -/* 0886 */ 0x8F44, 0x8F45, 0x155A, -/* 0887 */ 0x8F49, 0x0000, 0xEFAE, -/* 0888 */ 0x8F4D, 0x8F4E, 0x155C, -/* 0889 */ 0x8F5D, 0x8F62, 0x155E, -/* 088A */ 0x8F9B, 0x8F9C, 0x1564, -/* 088B */ 0x8FA3, 0x8FA8, 0x1566, -/* 088C */ 0x8FAD, 0x8FB2, 0x156C, -/* 088D */ 0x8FC2, 0x8FC5, 0x1572, -/* 088E */ 0x8FCE, 0x8FD4, 0x1576, -/* 088F */ 0x8FE6, 0x0000, 0xCABC, -/* 0890 */ 0x8FEA, 0x8FF2, 0x157D, -/* 0891 */ 0x8FF7, 0x8FF9, 0x1586, -/* 0892 */ 0x8FFD, 0x9023, 0x1589, -/* 0893 */ 0x902E, 0x9038, 0x15B0, -/* 0894 */ 0x903C, 0x9042, 0x15BB, -/* 0895 */ 0x9047, 0x9055, 0x15C2, -/* 0896 */ 0x9059, 0x9063, 0x15D1, -/* 0897 */ 0x9069, 0x0000, 0xEEEA, -/* 0898 */ 0x906D, 0x908A, 0x15DC, -/* 0899 */ 0x908F, 0x9091, 0x15FA, -/* 089A */ 0x9095, 0x0000, 0xE8BB, -/* 089B */ 0x9099, 0x0000, 0xD8D7, -/* 089C */ 0x90A2, 0x90AA, 0x15FD, -/* 089D */ 0x90AF, 0x90B1, 0x1606, -/* 089E */ 0x90B5, 0x90B8, 0x1609, -/* 089F */ 0x90C1, 0x0000, 0xE9F4, -/* 08A0 */ 0x90CA, 0x0000, 0xCEF4, -/* 08A1 */ 0x90DE, 0x90E1, 0x160D, -/* 08A2 */ 0x90E8, 0x0000, 0xDDBB, -/* 08A3 */ 0x90ED, 0x0000, 0xCEAC, -/* 08A4 */ 0x90F5, 0x0000, 0xE9E8, -/* 08A5 */ 0x90FD, 0x0000, 0xD4B4, -/* 08A6 */ 0x9102, 0x0000, 0xE4C7, -/* 08A7 */ 0x9112, 0x9115, 0x1611, -/* 08A8 */ 0x9119, 0x0000, 0xDEA9, -/* 08A9 */ 0x9127, 0x0000, 0xD4F8, -/* 08AA */ 0x912D, 0x0000, 0xEFF7, -/* 08AB */ 0x9132, 0x0000, 0xD3B3, -/* 08AC */ 0x9149, 0x914E, 0x1615, -/* 08AD */ 0x9152, 0x0000, 0xF1D0, -/* 08AE */ 0x9162, 0x0000, 0xF5B2, -/* 08AF */ 0x9169, 0x916C, 0x161B, -/* 08B0 */ 0x9175, 0x9178, 0x161F, -/* 08B1 */ 0x9187, 0x918D, 0x1623, -/* 08B2 */ 0x9192, 0x0000, 0xE1A5, -/* 08B3 */ 0x919C, 0x0000, 0xF5DD, -/* 08B4 */ 0x91AB, 0x91B5, 0x162A, -/* 08B5 */ 0x91C0, 0x0000, 0xE5D4, -/* 08B6 */ 0x91C7, 0x91D1, 0x1635, -/* 08B7 */ 0x91D7, 0x91D8, 0x1640, -/* 08B8 */ 0x91DC, 0x91DD, 0x1642, -/* 08B9 */ 0x91E3, 0x0000, 0xF0E5, -/* 08BA */ 0x91E7, 0x91EA, 0x1644, -/* 08BB */ 0x91F5, 0x0000, 0xF3FB, -/* 08BC */ 0x920D, 0x9212, 0x1648, -/* 08BD */ 0x9217, 0x0000, 0xEBCD, -/* 08BE */ 0x921E, 0x0000, 0xD0B7, -/* 08BF */ 0x9234, 0x0000, 0xD6C2, -/* 08C0 */ 0x923A, 0x0000, 0xE8AD, -/* 08C1 */ 0x923F, 0x9240, 0x164E, -/* 08C2 */ 0x9245, 0x0000, 0xCBE9, -/* 08C3 */ 0x9249, 0x0000, 0xFAE8, -/* 08C4 */ 0x9257, 0x0000, 0xCCC6, -/* 08C5 */ 0x925B, 0x925E, 0x1650, -/* 08C6 */ 0x9262, 0x9266, 0x1654, -/* 08C7 */ 0x9280, 0x9285, 0x1659, -/* 08C8 */ 0x9291, 0x9298, 0x165F, -/* 08C9 */ 0x929C, 0x0000, 0xF9E7, -/* 08CA */ 0x92B3, 0x92B9, 0x1667, -/* 08CB */ 0x92CC, 0x92D2, 0x166E, -/* 08CC */ 0x92E4, 0x0000, 0xE0A7, -/* 08CD */ 0x92EA, 0x0000, 0xF8E8, -/* 08CE */ 0x92F8, 0x0000, 0xCBEA, -/* 08CF */ 0x92FC, 0x0000, 0xCBBC, -/* 08D0 */ 0x9304, 0x0000, 0xD6E2, -/* 08D1 */ 0x9310, 0x0000, 0xF5DE, -/* 08D2 */ 0x9318, 0x931A, 0x1675, -/* 08D3 */ 0x931E, 0x932F, 0x1678, -/* 08D4 */ 0x9348, 0x934D, 0x168A, -/* 08D5 */ 0x9354, 0x0000, 0xE4C8, -/* 08D6 */ 0x935B, 0x0000, 0xD3B4, -/* 08D7 */ 0x936E, 0x0000, 0xEBB9, -/* 08D8 */ 0x9375, 0x0000, 0xCBF5, -/* 08D9 */ 0x937C, 0x937E, 0x1690, -/* 08DA */ 0x938C, 0x0000, 0xCCC7, -/* 08DB */ 0x9394, 0x9396, 0x1693, -/* 08DC */ 0x939A, 0x0000, 0xF5E0, -/* 08DD */ 0x93A3, 0x0000, 0xFBAF, -/* 08DE */ 0x93A7, 0x0000, 0xCBD1, -/* 08DF */ 0x93AC, 0x93B0, 0x1696, -/* 08E0 */ 0x93C3, 0x0000, 0xF0EC, -/* 08E1 */ 0x93D1, 0x0000, 0xEEEB, -/* 08E2 */ 0x93DE, 0x93E4, 0x169B, -/* 08E3 */ 0x93F6, 0x0000, 0xF3A1, -/* 08E4 */ 0x9404, 0x0000, 0xFCF5, -/* 08E5 */ 0x9418, 0x0000, 0xF1A4, -/* 08E6 */ 0x9425, 0x0000, 0xE0D6, -/* 08E7 */ 0x942B, 0x0000, 0xEFB2, -/* 08E8 */ 0x9435, 0x9438, 0x16A2, -/* 08E9 */ 0x9444, 0x0000, 0xF1D1, -/* 08EA */ 0x9451, 0x9452, 0x16A6, -/* 08EB */ 0x945B, 0x0000, 0xCECE, -/* 08EC */ 0x947D, 0x947F, 0x16A8, -/* 08ED */ 0x9577, 0x0000, 0xEDFE, -/* 08EE */ 0x9580, 0x9583, 0x16AB, -/* 08EF */ 0x9589, 0x958B, 0x16AF, -/* 08F0 */ 0x958F, 0x9594, 0x16B2, -/* 08F1 */ 0x9598, 0x0000, 0xCBA6, -/* 08F2 */ 0x95A3, 0x95A8, 0x16B8, -/* 08F3 */ 0x95AD, 0x0000, 0xD5EF, -/* 08F4 */ 0x95B1, 0x0000, 0xE6F3, -/* 08F5 */ 0x95BB, 0x95BC, 0x16BE, -/* 08F6 */ 0x95C7, 0x95CA, 0x16C0, -/* 08F7 */ 0x95D4, 0x95D6, 0x16C4, -/* 08F8 */ 0x95DC, 0x0000, 0xCEBC, -/* 08F9 */ 0x95E1, 0x95E2, 0x16C7, -/* 08FA */ 0x961C, 0x0000, 0xDDBD, -/* 08FB */ 0x9621, 0x0000, 0xF4C6, -/* 08FC */ 0x962A, 0x0000, 0xF8A1, -/* 08FD */ 0x962E, 0x0000, 0xE8D6, -/* 08FE */ 0x9632, 0x0000, 0xDBC1, -/* 08FF */ 0x963B, 0x0000, 0xF0E6, -/* 0900 */ 0x963F, 0x9644, 0x16C9, -/* 0901 */ 0x964B, 0x9650, 0x16CF, -/* 0902 */ 0x965B, 0x9664, 0x16D5, -/* 0903 */ 0x966A, 0x0000, 0xDBD6, -/* 0904 */ 0x9670, 0x9678, 0x16DF, -/* 0905 */ 0x967D, 0x0000, 0xE5D5, -/* 0906 */ 0x9685, 0x9686, 0x16E8, -/* 0907 */ 0x968A, 0x968E, 0x16EA, -/* 0908 */ 0x9694, 0x969C, 0x16EF, -/* 0909 */ 0x96A3, 0x0000, 0xD7F6, -/* 090A */ 0x96A7, 0x96AA, 0x16F8, -/* 090B */ 0x96B1, 0x0000, 0xEBDF, -/* 090C */ 0x96B7, 0x0000, 0xD6CB, -/* 090D */ 0x96BB, 0x0000, 0xF4B4, -/* 090E */ 0x96C0, 0x96CE, 0x16FC, -/* 090F */ 0x96D5, 0x96DC, 0x170B, -/* 0910 */ 0x96E2, 0x96E3, 0x1713, -/* 0911 */ 0x96E8, 0x96EA, 0x1715, -/* 0912 */ 0x96EF, 0x96F2, 0x1718, -/* 0913 */ 0x96F6, 0x96FB, 0x171C, -/* 0914 */ 0x9700, 0x0000, 0xE2CD, -/* 0915 */ 0x9706, 0x9707, 0x1722, -/* 0916 */ 0x9711, 0x971E, 0x1724, -/* 0917 */ 0x9727, 0x0000, 0xD9F6, -/* 0918 */ 0x9730, 0x9732, 0x1732, -/* 0919 */ 0x9739, 0x0000, 0xDCA4, -/* 091A */ 0x973D, 0x0000, 0xF0B8, -/* 091B */ 0x9742, 0x9744, 0x1735, -/* 091C */ 0x9748, 0x0000, 0xD6C4, -/* 091D */ 0x9751, 0x0000, 0xF4EC, -/* 091E */ 0x9756, 0x0000, 0xEFFE, -/* 091F */ 0x975C, 0x9762, 0x1738, -/* 0920 */ 0x9769, 0x0000, 0xFAD4, -/* 0921 */ 0x976D, 0x0000, 0xECE5, -/* 0922 */ 0x9774, 0x977A, 0x173F, -/* 0923 */ 0x978B, 0x978F, 0x1746, -/* 0924 */ 0x97A0, 0x0000, 0xCFD3, -/* 0925 */ 0x97A8, 0x97AD, 0x174B, -/* 0926 */ 0x97C6, 0x0000, 0xF4C7, -/* 0927 */ 0x97CB, 0x0000, 0xEADF, -/* 0928 */ 0x97D3, 0x0000, 0xF9DB, -/* 0929 */ 0x97DC, 0x0000, 0xD4B7, -/* 092A */ 0x97F3, 0x97F6, 0x1751, -/* 092B */ 0x97FB, 0x0000, 0xEAA4, -/* 092C */ 0x97FF, 0x980C, 0x1755, -/* 092D */ 0x9810, 0x9813, 0x1763, -/* 092E */ 0x9817, 0x9818, 0x1767, -/* 092F */ 0x982D, 0x9830, 0x1769, -/* 0930 */ 0x9838, 0x983B, 0x176D, -/* 0931 */ 0x9846, 0x0000, 0xCEA8, -/* 0932 */ 0x984C, 0x984E, 0x1771, -/* 0933 */ 0x9854, 0x0000, 0xE4D4, -/* 0934 */ 0x9858, 0x985A, 0x1774, -/* 0935 */ 0x985E, 0x0000, 0xD7BE, -/* 0936 */ 0x9865, 0x9867, 0x1777, -/* 0937 */ 0x986B, 0x0000, 0xEFB5, -/* 0938 */ 0x986F, 0x0000, 0xFAE9, -/* 0939 */ 0x98A8, 0x0000, 0xF9A6, -/* 093A */ 0x98AF, 0x98B1, 0x177A, -/* 093B */ 0x98C4, 0x98C7, 0x177D, -/* 093C */ 0x98DB, 0x98E2, 0x1781, -/* 093D */ 0x98ED, 0x98EF, 0x1789, -/* 093E */ 0x98F4, 0x0000, 0xECC7, -/* 093F */ 0x98FC, 0x98FE, 0x178C, -/* 0940 */ 0x9903, 0x0000, 0xCEF5, -/* 0941 */ 0x9909, 0x990C, 0x178F, -/* 0942 */ 0x9910, 0x9913, 0x1793, -/* 0943 */ 0x9918, 0x0000, 0xE6AE, -/* 0944 */ 0x991E, 0x9920, 0x1797, -/* 0945 */ 0x9928, 0x0000, 0xCEBD, -/* 0946 */ 0x9945, 0x0000, 0xD8C3, -/* 0947 */ 0x9949, 0x994D, 0x179A, -/* 0948 */ 0x9951, 0x9957, 0x179F, -/* 0949 */ 0x9996, 0x9999, 0x17A6, -/* 094A */ 0x999D, 0x0000, 0xF9B8, -/* 094B */ 0x99A5, 0x99A8, 0x17AA, -/* 094C */ 0x99AC, 0x99B4, 0x17AE, -/* 094D */ 0x99B9, 0x0000, 0xECF1, -/* 094E */ 0x99C1, 0x0000, 0xDAE0, -/* 094F */ 0x99D0, 0x99D5, 0x17B7, -/* 0950 */ 0x99D9, 0x0000, 0xDDBF, -/* 0951 */ 0x99DD, 0x99DF, 0x17BD, -/* 0952 */ 0x99ED, 0x0000, 0xFAB4, -/* 0953 */ 0x99F1, 0x0000, 0xD5AD, -/* 0954 */ 0x99FF, 0x9A01, 0x17C0, -/* 0955 */ 0x9A08, 0x0000, 0xDCC0, -/* 0956 */ 0x9A0E, 0x9A0F, 0x17C3, -/* 0957 */ 0x9A19, 0x0000, 0xF8BE, -/* 0958 */ 0x9A2B, 0x0000, 0xCBF6, -/* 0959 */ 0x9A30, 0x0000, 0xD4F9, -/* 095A */ 0x9A36, 0x9A37, 0x17C5, -/* 095B */ 0x9A40, 0x9A45, 0x17C7, -/* 095C */ 0x9A4D, 0x0000, 0xFDA4, -/* 095D */ 0x9A55, 0x9A5B, 0x17CD, -/* 095E */ 0x9A5F, 0x9A65, 0x17D4, -/* 095F */ 0x9A69, 0x9A6A, 0x17DB, -/* 0960 */ 0x9AA8, 0x0000, 0xCDE9, -/* 0961 */ 0x9AB8, 0x0000, 0xFAB5, -/* 0962 */ 0x9AD3, 0x9AD4, 0x17DD, -/* 0963 */ 0x9AD8, 0x0000, 0xCDD4, -/* 0964 */ 0x9AE5, 0x0000, 0xE7A3, -/* 0965 */ 0x9AEE, 0x0000, 0xDBA5, -/* 0966 */ 0x9B1A, 0x0000, 0xE2D1, -/* 0967 */ 0x9B27, 0x9B2A, 0x17DF, -/* 0968 */ 0x9B31, 0x0000, 0xEAA6, -/* 0969 */ 0x9B3C, 0x0000, 0xD0A1, -/* 096A */ 0x9B41, 0x9B45, 0x17E3, -/* 096B */ 0x9B4F, 0x0000, 0xEAE0, -/* 096C */ 0x9B54, 0x0000, 0xD8AA, -/* 096D */ 0x9B5A, 0x0000, 0xE5E0, -/* 096E */ 0x9B6F, 0x0000, 0xD6DB, -/* 096F */ 0x9B8E, 0x9B91, 0x17E8, -/* 0970 */ 0x9B9F, 0x0000, 0xE4D5, -/* 0971 */ 0x9BAB, 0x9BAE, 0x17EC, -/* 0972 */ 0x9BC9, 0x0000, 0xD7EF, -/* 0973 */ 0x9BD6, 0x0000, 0xF4ED, -/* 0974 */ 0x9BE4, 0x0000, 0xCDE6, -/* 0975 */ 0x9BE8, 0x0000, 0xCCF4, -/* 0976 */ 0x9C0D, 0x9C15, 0x17F0, -/* 0977 */ 0x9C25, 0x0000, 0xFCBF, -/* 0978 */ 0x9C32, 0x0000, 0xE8A7, -/* 0979 */ 0x9C3B, 0x0000, 0xD8C4, -/* 097A */ 0x9C47, 0x9C49, 0x17F9, -/* 097B */ 0x9C57, 0x0000, 0xD7F7, -/* 097C */ 0x9CE5, 0x9CE9, 0x17FC, -/* 097D */ 0x9CF3, 0x9CF6, 0x1801, -/* 097E */ 0x9D09, 0x0000, 0xE4BC, -/* 097F */ 0x9D1B, 0x0000, 0xEAC4, -/* 0980 */ 0x9D26, 0x9D28, 0x1805, -/* 0981 */ 0x9D3B, 0x0000, 0xFBF8, -/* 0982 */ 0x9D51, 0x0000, 0xCCBB, -/* 0983 */ 0x9D5D, 0x9D61, 0x1808, -/* 0984 */ 0x9D6C, 0x0000, 0xDDDF, -/* 0985 */ 0x9D72, 0x0000, 0xEDCE, -/* 0986 */ 0x9DA9, 0x0000, 0xD9D0, -/* 0987 */ 0x9DAF, 0x0000, 0xE5A3, -/* 0988 */ 0x9DB4, 0x0000, 0xF9CD, -/* 0989 */ 0x9DC4, 0x0000, 0xCDAE, -/* 098A */ 0x9DD7, 0x0000, 0xCFCE, -/* 098B */ 0x9DF2, 0x0000, 0xF6AF, -/* 098C */ 0x9DF8, 0x9DFA, 0x180D, -/* 098D */ 0x9E1A, 0x0000, 0xE5A4, -/* 098E */ 0x9E1E, 0x0000, 0xD5B6, -/* 098F */ 0x9E75, 0x0000, 0xD6DD, -/* 0990 */ 0x9E79, 0x0000, 0xF9E9, -/* 0991 */ 0x9E7D, 0x9E7F, 0x1810, -/* 0992 */ 0x9E92, 0x9E93, 0x1813, -/* 0993 */ 0x9E97, 0x0000, 0xD5F2, -/* 0994 */ 0x9E9D, 0x9E9F, 0x1815, -/* 0995 */ 0x9EA5, 0x0000, 0xD8EA, -/* 0996 */ 0x9EB4, 0x9EB5, 0x1818, -/* 0997 */ 0x9EBB, 0x9EBE, 0x181A, -/* 0998 */ 0x9EC3, 0x0000, 0xFCDC, -/* 0999 */ 0x9ECD, 0x9ED4, 0x181E, -/* 099A */ 0x9ED8, 0x9EDE, 0x1826, -/* 099B */ 0x9EE8, 0x0000, 0xD3DA, -/* 099C */ 0x9EF4, 0x0000, 0xDABD, -/* 099D */ 0x9F07, 0x9F08, 0x182D, -/* 099E */ 0x9F0E, 0x0000, 0xF0A3, -/* 099F */ 0x9F13, 0x0000, 0xCDD5, -/* 09A0 */ 0x9F20, 0x0000, 0xE0A9, -/* 09A1 */ 0x9F3B, 0x0000, 0xDEAC, -/* 09A2 */ 0x9F4A, 0x9F4E, 0x182F, -/* 09A3 */ 0x9F52, 0x0000, 0xF6CD, -/* 09A4 */ 0x9F5F, 0x9F61, 0x1834, -/* 09A5 */ 0x9F67, 0x9F6C, 0x1837, -/* 09A6 */ 0x9F77, 0x0000, 0xE4CB, -/* 09A7 */ 0x9F8D, 0x9F90, 0x183D, -/* 09A8 */ 0x9F95, 0x0000, 0xCAFE, -/* 09A9 */ 0x9F9C, 0x0000, 0xCFCF, -/* 09AA */ 0xAC00, 0xAC0F, 0x1841, -/* 09AB */ 0xAC18, 0xAC24, 0x1851, -/* 09AC */ 0xAC2C, 0xAC40, 0x185E, -/* 09AD */ 0xAC4B, 0xAC4D, 0x1873, -/* 09AE */ 0xAC54, 0xAC5C, 0x1876, -/* 09AF */ 0xAC70, 0xAC94, 0x187F, -/* 09B0 */ 0xAC9C, 0xACA1, 0x18A4, -/* 09B1 */ 0xACA8, 0xACB0, 0x18AA, -/* 09B2 */ 0xACB8, 0xACCC, 0x18B3, -/* 09B3 */ 0xACD5, 0xACD7, 0x18C8, -/* 09B4 */ 0xACE0, 0xAD20, 0x18CB, -/* 09B5 */ 0xAD29, 0xAD2D, 0x190C, -/* 09B6 */ 0xAD34, 0xAD3C, 0x1911, -/* 09B7 */ 0xAD44, 0xAD49, 0x191A, -/* 09B8 */ 0xAD50, 0xAD58, 0x1920, -/* 09B9 */ 0xAD61, 0xAD63, 0x1929, -/* 09BA */ 0xAD6C, 0xAD90, 0x192C, -/* 09BB */ 0xAD9C, 0xAD9D, 0x1951, -/* 09BC */ 0xADA4, 0x0000, 0xB1CB, -/* 09BD */ 0xADB7, 0x0000, 0xB1CC, -/* 09BE */ 0xADC0, 0xADC8, 0x1953, -/* 09BF */ 0xADD0, 0xADD3, 0x195C, -/* 09C0 */ 0xADDC, 0xADE4, 0x1960, -/* 09C1 */ 0xADF8, 0xAE01, 0x1969, -/* 09C2 */ 0xAE08, 0xAE0D, 0x1973, -/* 09C3 */ 0xAE14, 0x0000, 0xB1E1, -/* 09C4 */ 0xAE30, 0xAE70, 0x1979, -/* 09C5 */ 0xAE78, 0xAE7D, 0x19BA, -/* 09C6 */ 0xAE84, 0xAE85, 0x19C0, -/* 09C7 */ 0xAE8C, 0x0000, 0xB2A7, -/* 09C8 */ 0xAEBC, 0xAEC4, 0x19C2, -/* 09C9 */ 0xAECC, 0xAED1, 0x19CB, -/* 09CA */ 0xAED8, 0xAEDC, 0x19D1, -/* 09CB */ 0xAEE6, 0xAEED, 0x19D6, -/* 09CC */ 0xAEF4, 0xAEFC, 0x19DE, -/* 09CD */ 0xAF06, 0xAF10, 0x19E7, -/* 09CE */ 0xAF2C, 0xAF34, 0x19F2, -/* 09CF */ 0xAF3C, 0xAF49, 0x19FB, -/* 09D0 */ 0xAF50, 0x0000, 0xB2CC, -/* 09D1 */ 0xAF5C, 0xAF5D, 0x1A09, -/* 09D2 */ 0xAF64, 0xAF65, 0x1A0B, -/* 09D3 */ 0xAF79, 0x0000, 0xB2D1, -/* 09D4 */ 0xAF80, 0xAF88, 0x1A0D, -/* 09D5 */ 0xAF90, 0xAF95, 0x1A16, -/* 09D6 */ 0xAF9C, 0x0000, 0xB2D8, -/* 09D7 */ 0xAFB8, 0xAFC0, 0x1A1C, -/* 09D8 */ 0xAFC7, 0xAFD4, 0x1A25, -/* 09D9 */ 0xAFDC, 0xAFE1, 0x1A33, -/* 09DA */ 0xAFE8, 0xAFE9, 0x1A39, -/* 09DB */ 0xAFF0, 0xAFF8, 0x1A3B, -/* 09DC */ 0xB000, 0xB004, 0x1A44, -/* 09DD */ 0xB00C, 0xB014, 0x1A49, -/* 09DE */ 0xB01C, 0xB01D, 0x1A52, -/* 09DF */ 0xB028, 0x0000, 0xB2F3, -/* 09E0 */ 0xB044, 0xB05D, 0x1A54, -/* 09E1 */ 0xB07C, 0xB084, 0x1A6E, -/* 09E2 */ 0xB08C, 0xB091, 0x1A77, -/* 09E3 */ 0xB098, 0xB0BC, 0x1A7D, -/* 09E4 */ 0xB0C4, 0xB0C9, 0x1AA2, -/* 09E5 */ 0xB0D0, 0xB0D8, 0x1AA8, -/* 09E6 */ 0xB0E0, 0xB0E5, 0x1AB1, -/* 09E7 */ 0xB108, 0xB12C, 0x1AB7, -/* 09E8 */ 0xB134, 0xB139, 0x1ADC, -/* 09E9 */ 0xB140, 0xB148, 0x1AE2, -/* 09EA */ 0xB150, 0xB160, 0x1AEB, -/* 09EB */ 0xB178, 0xB19D, 0x1AFC, -/* 09EC */ 0xB1A8, 0x0000, 0xB3F9, -/* 09ED */ 0xB1CC, 0xB1D5, 0x1B22, -/* 09EE */ 0xB1DC, 0xB1DF, 0x1B2C, -/* 09EF */ 0xB1E8, 0xB1F0, 0x1B30, -/* 09F0 */ 0xB1F9, 0xB1FD, 0x1B39, -/* 09F1 */ 0xB204, 0xB20C, 0x1B3E, -/* 09F2 */ 0xB214, 0xB219, 0x1B47, -/* 09F3 */ 0xB220, 0x0000, 0xB4B2, -/* 09F4 */ 0xB234, 0x0000, 0xB4B3, -/* 09F5 */ 0xB23C, 0x0000, 0xB4B4, -/* 09F6 */ 0xB258, 0xB260, 0x1B4D, -/* 09F7 */ 0xB268, 0xB275, 0x1B56, -/* 09F8 */ 0xB27C, 0x0000, 0xB4BC, -/* 09F9 */ 0xB284, 0xB2B7, 0x1B64, -/* 09FA */ 0xB2C8, 0xB308, 0x1B98, -/* 09FB */ 0xB310, 0xB315, 0x1BD9, -/* 09FC */ 0xB31C, 0x0000, 0xB4F4, -/* 09FD */ 0xB354, 0xB378, 0x1BDF, -/* 09FE */ 0xB380, 0xB385, 0x1C04, -/* 09FF */ 0xB38C, 0xB394, 0x1C0A, -/* 0A00 */ 0xB3A0, 0xB3A1, 0x1C13, -/* 0A01 */ 0xB3A8, 0xB3AD, 0x1C15, -/* 0A02 */ 0xB3C4, 0xB3E8, 0x1C1B, -/* 0A03 */ 0xB3FC, 0x0000, 0xB5C5, -/* 0A04 */ 0xB410, 0x0000, 0xB5C6, -/* 0A05 */ 0xB418, 0xB420, 0x1C40, -/* 0A06 */ 0xB428, 0xB42B, 0x1C49, -/* 0A07 */ 0xB434, 0x0000, 0xB5CD, -/* 0A08 */ 0xB450, 0xB458, 0x1C4D, -/* 0A09 */ 0xB460, 0xB46C, 0x1C56, -/* 0A0A */ 0xB480, 0xB488, 0x1C63, -/* 0A0B */ 0xB49D, 0x0000, 0xB5D9, -/* 0A0C */ 0xB4A4, 0xB4AC, 0x1C6C, -/* 0A0D */ 0xB4B5, 0xB4B9, 0x1C75, -/* 0A0E */ 0xB4C0, 0xB4C8, 0x1C7A, -/* 0A0F */ 0xB4D0, 0xB4D5, 0x1C83, -/* 0A10 */ 0xB4DC, 0xB4F1, 0x1C89, -/* 0A11 */ 0xB4F8, 0x0000, 0xB5EF, -/* 0A12 */ 0xB514, 0xB51D, 0x1C9F, -/* 0A13 */ 0xB524, 0xB538, 0x1CA9, -/* 0A14 */ 0xB540, 0xB554, 0x1CBE, -/* 0A15 */ 0xB55C, 0xB561, 0x1CD3, -/* 0A16 */ 0xB5A0, 0xB5C4, 0x1CD9, -/* 0A17 */ 0xB5CC, 0xB5D1, 0x1CFE, -/* 0A18 */ 0xB5D8, 0x0000, 0xB6C5, -/* 0A19 */ 0xB5EC, 0x0000, 0xB6C6, -/* 0A1A */ 0xB610, 0xB61D, 0x1D04, -/* 0A1B */ 0xB625, 0x0000, 0xB6CB, -/* 0A1C */ 0xB62C, 0x0000, 0xB6CC, -/* 0A1D */ 0xB634, 0x0000, 0xB6CD, -/* 0A1E */ 0xB648, 0x0000, 0xB6CE, -/* 0A1F */ 0xB664, 0xB668, 0x1D12, -/* 0A20 */ 0xB69C, 0xB6A4, 0x1D17, -/* 0A21 */ 0xB6AB, 0xB6B1, 0x1D20, -/* 0A22 */ 0xB6D4, 0x0000, 0xB6D8, -/* 0A23 */ 0xB6F0, 0xB705, 0x1D27, -/* 0A24 */ 0xB728, 0xB730, 0x1D3D, -/* 0A25 */ 0xB738, 0xB73B, 0x1D46, -/* 0A26 */ 0xB744, 0xB74C, 0x1D4A, -/* 0A27 */ 0xB754, 0xB755, 0x1D53, -/* 0A28 */ 0xB760, 0xB768, 0x1D55, -/* 0A29 */ 0xB770, 0xB775, 0x1D5E, -/* 0A2A */ 0xB77C, 0xB784, 0x1D64, -/* 0A2B */ 0xB78C, 0xB7A0, 0x1D6D, -/* 0A2C */ 0xB7A8, 0xB7AD, 0x1D82, -/* 0A2D */ 0xB7B4, 0xB7B8, 0x1D88, -/* 0A2E */ 0xB7C2, 0xB7C9, 0x1D8D, -/* 0A2F */ 0xB7EC, 0xB7F4, 0x1D95, -/* 0A30 */ 0xB7FC, 0xB810, 0x1D9E, -/* 0A31 */ 0xB818, 0xB81D, 0x1DB3, -/* 0A32 */ 0xB824, 0xB82C, 0x1DB9, -/* 0A33 */ 0xB834, 0xB839, 0x1DC2, -/* 0A34 */ 0xB840, 0xB844, 0x1DC8, -/* 0A35 */ 0xB851, 0xB853, 0x1DCD, -/* 0A36 */ 0xB85C, 0xB864, 0x1DD0, -/* 0A37 */ 0xB86C, 0xB871, 0x1DD9, -/* 0A38 */ 0xB878, 0xB87C, 0x1DDF, -/* 0A39 */ 0xB88D, 0x0000, 0xB7D8, -/* 0A3A */ 0xB8A8, 0x0000, 0xB7D9, -/* 0A3B */ 0xB8B0, 0xB8C5, 0x1DE4, -/* 0A3C */ 0xB8CC, 0xB8D4, 0x1DFA, -/* 0A3D */ 0xB8DD, 0xB8E1, 0x1E03, -/* 0A3E */ 0xB8E8, 0xB8F0, 0x1E08, -/* 0A3F */ 0xB8F8, 0xB8FD, 0x1E11, -/* 0A40 */ 0xB904, 0x0000, 0xB7EF, -/* 0A41 */ 0xB918, 0x0000, 0xB7F0, -/* 0A42 */ 0xB920, 0x0000, 0xB7F1, -/* 0A43 */ 0xB93C, 0xB944, 0x1E17, -/* 0A44 */ 0xB94C, 0xB951, 0x1E20, -/* 0A45 */ 0xB958, 0xB960, 0x1E26, -/* 0A46 */ 0xB968, 0xB96D, 0x1E2F, -/* 0A47 */ 0xB974, 0xB97D, 0x1E35, -/* 0A48 */ 0xB984, 0xB98E, 0x1E3F, -/* 0A49 */ 0xB9AC, 0xB9B4, 0x1E4A, -/* 0A4A */ 0xB9BC, 0xB9C1, 0x1E53, -/* 0A4B */ 0xB9C8, 0xB9EC, 0x1E59, -/* 0A4C */ 0xB9F4, 0xBA01, 0x1E7E, -/* 0A4D */ 0xBA08, 0x0000, 0xB8D1, -/* 0A4E */ 0xBA15, 0x0000, 0xB8D2, -/* 0A4F */ 0xBA38, 0xBA5C, 0x1E8C, -/* 0A50 */ 0xBA64, 0xBA69, 0x1EB1, -/* 0A51 */ 0xBA70, 0xBA78, 0x1EB7, -/* 0A52 */ 0xBA83, 0xBA8C, 0x1EC0, -/* 0A53 */ 0xBAA8, 0xBABD, 0x1ECA, -/* 0A54 */ 0xBAC4, 0xBAC8, 0x1EE0, -/* 0A55 */ 0xBAD8, 0xBAD9, 0x1EE5, -/* 0A56 */ 0xBAFC, 0xBB04, 0x1EE7, -/* 0A57 */ 0xBB0D, 0xBB11, 0x1EF0, -/* 0A58 */ 0xBB18, 0xBB20, 0x1EF5, -/* 0A59 */ 0xBB28, 0xBB2B, 0x1EFE, -/* 0A5A */ 0xBB34, 0xBB58, 0x1F02, -/* 0A5B */ 0xBB61, 0xBB63, 0x1F27, -/* 0A5C */ 0xBB6C, 0xBB71, 0x1F2A, -/* 0A5D */ 0xBB88, 0xBB90, 0x1F30, -/* 0A5E */ 0xBBA4, 0xBBAC, 0x1F39, -/* 0A5F */ 0xBBB4, 0xBBB7, 0x1F42, -/* 0A60 */ 0xBBC0, 0xBBC8, 0x1F46, -/* 0A61 */ 0xBBD0, 0xBBD3, 0x1F4F, -/* 0A62 */ 0xBBF8, 0xBC38, 0x1F53, -/* 0A63 */ 0xBC40, 0xBC50, 0x1F94, -/* 0A64 */ 0xBC5A, 0xBC5D, 0x1FA5, -/* 0A65 */ 0xBC84, 0xBCA8, 0x1FA9, -/* 0A66 */ 0xBCB0, 0xBCB5, 0x1FCE, -/* 0A67 */ 0xBCBC, 0xBCC4, 0x1FD4, -/* 0A68 */ 0xBCCD, 0xBCDC, 0x1FDD, -/* 0A69 */ 0xBCF4, 0xBCFD, 0x1FED, -/* 0A6A */ 0xBD04, 0xBD09, 0x1FF7, -/* 0A6B */ 0xBD10, 0xBD14, 0x1FFD, -/* 0A6C */ 0xBD24, 0x0000, 0xBAC3, -/* 0A6D */ 0xBD2C, 0x0000, 0xBAC4, -/* 0A6E */ 0xBD40, 0x0000, 0xBAC5, -/* 0A6F */ 0xBD48, 0xBD50, 0x2002, -/* 0A70 */ 0xBD58, 0xBD59, 0x200B, -/* 0A71 */ 0xBD64, 0xBD68, 0x200D, -/* 0A72 */ 0xBD80, 0xBD9C, 0x2012, -/* 0A73 */ 0xBDA4, 0x0000, 0xBADC, -/* 0A74 */ 0xBDB0, 0x0000, 0xBADD, -/* 0A75 */ 0xBDB8, 0x0000, 0xBADE, -/* 0A76 */ 0xBDD2, 0xBDDC, 0x202F, -/* 0A77 */ 0xBDE9, 0x0000, 0xBAE3, -/* 0A78 */ 0xBDF0, 0xBDF8, 0x203A, -/* 0A79 */ 0xBE00, 0xBE05, 0x2043, -/* 0A7A */ 0xBE0C, 0xBE14, 0x2049, -/* 0A7B */ 0xBE1C, 0xBE1F, 0x2052, -/* 0A7C */ 0xBE44, 0xBE84, 0x2056, -/* 0A7D */ 0xBE8C, 0xBE91, 0x2097, -/* 0A7E */ 0xBE98, 0xBE99, 0x209D, -/* 0A7F */ 0xBEA8, 0x0000, 0xBBB4, -/* 0A80 */ 0xBED0, 0xBED8, 0x209F, -/* 0A81 */ 0xBEE0, 0xBEE5, 0x20A8, -/* 0A82 */ 0xBEEC, 0x0000, 0xBBBE, -/* 0A83 */ 0xBF01, 0x0000, 0xBBBF, -/* 0A84 */ 0xBF08, 0xBF09, 0x20AE, -/* 0A85 */ 0xBF18, 0xBF1D, 0x20B0, -/* 0A86 */ 0xBF40, 0xBF48, 0x20B6, -/* 0A87 */ 0xBF50, 0xBF55, 0x20BF, -/* 0A88 */ 0xBF94, 0x0000, 0xBBCE, -/* 0A89 */ 0xBFB0, 0x0000, 0xBBCF, -/* 0A8A */ 0xBFC5, 0x0000, 0xBBD0, -/* 0A8B */ 0xBFCC, 0xBFD4, 0x20C5, -/* 0A8C */ 0xBFDC, 0xBFE1, 0x20CE, -/* 0A8D */ 0xC03C, 0xC03F, 0x20D4, -/* 0A8E */ 0xC051, 0x0000, 0xBBD9, -/* 0A8F */ 0xC058, 0xC060, 0x20D8, -/* 0A90 */ 0xC068, 0xC069, 0x20E1, -/* 0A91 */ 0xC090, 0xC098, 0x20E3, -/* 0A92 */ 0xC0A0, 0xC0A5, 0x20EC, -/* 0A93 */ 0xC0AC, 0xC0D0, 0x20F2, -/* 0A94 */ 0xC0D8, 0xC0DD, 0x2117, -/* 0A95 */ 0xC0E4, 0xC0EC, 0x211D, -/* 0A96 */ 0xC0F4, 0xC0F9, 0x2126, -/* 0A97 */ 0xC100, 0xC108, 0x212C, -/* 0A98 */ 0xC110, 0xC115, 0x2135, -/* 0A99 */ 0xC11C, 0xC140, 0x213B, -/* 0A9A */ 0xC148, 0xC14D, 0x2160, -/* 0A9B */ 0xC154, 0xC15C, 0x2166, -/* 0A9C */ 0xC164, 0xC169, 0x216F, -/* 0A9D */ 0xC170, 0xC17B, 0x2175, -/* 0A9E */ 0xC185, 0x0000, 0xBCD1, -/* 0A9F */ 0xC18C, 0xC1B0, 0x2181, -/* 0AA0 */ 0xC1BD, 0x0000, 0xBCE1, -/* 0AA1 */ 0xC1C4, 0xC1CC, 0x21A6, -/* 0AA2 */ 0xC1D4, 0xC1D8, 0x21AF, -/* 0AA3 */ 0xC1E0, 0xC1E8, 0x21B4, -/* 0AA4 */ 0xC1F0, 0xC1F3, 0x21BD, -/* 0AA5 */ 0xC1FC, 0xC204, 0x21C1, -/* 0AA6 */ 0xC20C, 0xC211, 0x21CA, -/* 0AA7 */ 0xC218, 0xC234, 0x21D0, -/* 0AA8 */ 0xC246, 0xC248, 0x21ED, -/* 0AA9 */ 0xC250, 0xC258, 0x21F0, -/* 0AAA */ 0xC260, 0xC274, 0x21F9, -/* 0AAB */ 0xC27C, 0xC281, 0x220E, -/* 0AAC */ 0xC288, 0xC289, 0x2214, -/* 0AAD */ 0xC290, 0x0000, 0xBDB6, -/* 0AAE */ 0xC298, 0xC29D, 0x2216, -/* 0AAF */ 0xC2A4, 0xC2AD, 0x221C, -/* 0AB0 */ 0xC2B4, 0xC2B9, 0x2226, -/* 0AB1 */ 0xC2DC, 0xC2E4, 0x222C, -/* 0AB2 */ 0xC2EB, 0xC300, 0x2235, -/* 0AB3 */ 0xC308, 0xC31C, 0x224B, -/* 0AB4 */ 0xC324, 0xC329, 0x2260, -/* 0AB5 */ 0xC345, 0x0000, 0xBDE0, -/* 0AB6 */ 0xC368, 0xC37D, 0x2266, -/* 0AB7 */ 0xC384, 0xC38C, 0x227C, -/* 0AB8 */ 0xC3C0, 0x0000, 0xBDED, -/* 0AB9 */ 0xC3D8, 0xC3ED, 0x2285, -/* 0ABA */ 0xC3F4, 0xC3F8, 0x229B, -/* 0ABB */ 0xC408, 0x0000, 0xBDFA, -/* 0ABC */ 0xC410, 0x0000, 0xBDFB, -/* 0ABD */ 0xC424, 0x0000, 0xBDFC, -/* 0ABE */ 0xC42C, 0xC434, 0x22A0, -/* 0ABF */ 0xC43C, 0xC43D, 0x22A9, -/* 0AC0 */ 0xC448, 0x0000, 0xBEA4, -/* 0AC1 */ 0xC464, 0xC46C, 0x22AB, -/* 0AC2 */ 0xC474, 0xC479, 0x22B4, -/* 0AC3 */ 0xC480, 0x0000, 0xBEAC, -/* 0AC4 */ 0xC494, 0x0000, 0xBEAD, -/* 0AC5 */ 0xC49C, 0x0000, 0xBEAE, -/* 0AC6 */ 0xC4B8, 0xC4BC, 0x22BA, -/* 0AC7 */ 0xC4E9, 0x0000, 0xBEB1, -/* 0AC8 */ 0xC4F0, 0xC501, 0x22BF, -/* 0AC9 */ 0xC50C, 0xC514, 0x22D1, -/* 0ACA */ 0xC51C, 0x0000, 0xBEBD, -/* 0ACB */ 0xC528, 0xC530, 0x22DA, -/* 0ACC */ 0xC538, 0xC53D, 0x22E3, -/* 0ACD */ 0xC544, 0xC568, 0x22E9, -/* 0ACE */ 0xC570, 0xC575, 0x230E, -/* 0ACF */ 0xC57C, 0xC5A0, 0x2314, -/* 0AD0 */ 0xC5A9, 0x0000, 0xBEED, -/* 0AD1 */ 0xC5B4, 0xC5C3, 0x2339, -/* 0AD2 */ 0xC5CB, 0xC5D8, 0x2349, -/* 0AD3 */ 0xC5E0, 0xC5FB, 0x2357, -/* 0AD4 */ 0xC602, 0xC610, 0x2373, -/* 0AD5 */ 0xC618, 0xC61C, 0x2382, -/* 0AD6 */ 0xC624, 0xC648, 0x2387, -/* 0AD7 */ 0xC650, 0xC655, 0x23AC, -/* 0AD8 */ 0xC65C, 0xC660, 0x23B2, -/* 0AD9 */ 0xC66C, 0xC671, 0x23B7, -/* 0ADA */ 0xC678, 0xC680, 0x23BD, -/* 0ADB */ 0xC688, 0xC68D, 0x23C6, -/* 0ADC */ 0xC694, 0xC69C, 0x23CC, -/* 0ADD */ 0xC6A4, 0xC6A9, 0x23D5, -/* 0ADE */ 0xC6B0, 0xC6C5, 0x23DB, -/* 0ADF */ 0xC6CC, 0xC6D4, 0x23F1, -/* 0AE0 */ 0xC6DC, 0xC6E1, 0x23FA, -/* 0AE1 */ 0xC6E8, 0xC6FD, 0x2400, -/* 0AE2 */ 0xC704, 0xC70C, 0x2416, -/* 0AE3 */ 0xC714, 0xC719, 0x241F, -/* 0AE4 */ 0xC720, 0xC728, 0x2425, -/* 0AE5 */ 0xC730, 0xC750, 0x242E, -/* 0AE6 */ 0xC759, 0xC760, 0x244F, -/* 0AE7 */ 0xC768, 0xC76B, 0x2457, -/* 0AE8 */ 0xC774, 0xC7C1, 0x245B, -/* 0AE9 */ 0xC7C8, 0xC7D0, 0x24A9, -/* 0AEA */ 0xC7D8, 0xC7DD, 0x24B2, -/* 0AEB */ 0xC7E4, 0xC7EC, 0x24B8, -/* 0AEC */ 0xC7FB, 0xC824, 0x24C1, -/* 0AED */ 0xC82C, 0xC831, 0x24EB, -/* 0AEE */ 0xC838, 0xC840, 0x24F1, -/* 0AEF */ 0xC848, 0xC84D, 0x24FA, -/* 0AF0 */ 0xC854, 0x0000, 0xC1B5, -/* 0AF1 */ 0xC870, 0xC88D, 0x2500, -/* 0AF2 */ 0xC894, 0x0000, 0xC1C4, -/* 0AF3 */ 0xC89D, 0xC8A8, 0x251E, -/* 0AF4 */ 0xC8BC, 0xC8CC, 0x252A, -/* 0AF5 */ 0xC8D4, 0xC8D9, 0x253B, -/* 0AF6 */ 0xC8E0, 0xC8E5, 0x2541, -/* 0AF7 */ 0xC8F5, 0x0000, 0xC1D5, -/* 0AF8 */ 0xC8FC, 0xC911, 0x2547, -/* 0AF9 */ 0xC918, 0x0000, 0xC1E0, -/* 0AFA */ 0xC92C, 0x0000, 0xC1E1, -/* 0AFB */ 0xC934, 0x0000, 0xC1E2, -/* 0AFC */ 0xC950, 0xC958, 0x255D, -/* 0AFD */ 0xC960, 0xC963, 0x2566, -/* 0AFE */ 0xC96C, 0xC974, 0x256A, -/* 0AFF */ 0xC97C, 0x0000, 0xC1ED, -/* 0B00 */ 0xC988, 0xC990, 0x2573, -/* 0B01 */ 0xC998, 0xC99D, 0x257C, -/* 0B02 */ 0xC9C0, 0xC9F1, 0x2582, -/* 0B03 */ 0xC9F8, 0xCA0D, 0x25B4, -/* 0B04 */ 0xCA14, 0xCA18, 0x25CA, -/* 0B05 */ 0xCA26, 0xCA29, 0x25CF, -/* 0B06 */ 0xCA47, 0xCA54, 0x25D3, -/* 0B07 */ 0xCA5C, 0xCA61, 0x25E1, -/* 0B08 */ 0xCA68, 0xCA6A, 0x25E7, -/* 0B09 */ 0xCA7D, 0x0000, 0xC2C6, -/* 0B0A */ 0xCA84, 0xCA86, 0x25EA, -/* 0B0B */ 0xCA98, 0x0000, 0xC2C8, -/* 0B0C */ 0xCABC, 0xCAC5, 0x25ED, -/* 0B0D */ 0xCACC, 0xCAD9, 0x25F7, -/* 0B0E */ 0xCAE0, 0x0000, 0xC2D4, -/* 0B0F */ 0xCAE8, 0xCAEC, 0x2605, -/* 0B10 */ 0xCAF4, 0x0000, 0xC2D6, -/* 0B11 */ 0xCB08, 0xCB18, 0x260A, -/* 0B12 */ 0xCB20, 0xCB21, 0x261B, -/* 0B13 */ 0xCB41, 0xCB50, 0x261D, -/* 0B14 */ 0xCB58, 0xCB5D, 0x262D, -/* 0B15 */ 0xCB64, 0x0000, 0xC2E5, -/* 0B16 */ 0xCB78, 0xCB79, 0x2633, -/* 0B17 */ 0xCB9C, 0x0000, 0xC2E8, -/* 0B18 */ 0xCBB8, 0x0000, 0xC2E9, -/* 0B19 */ 0xCBD4, 0x0000, 0xC2EA, -/* 0B1A */ 0xCBE0, 0xCBE9, 0x2635, -/* 0B1B */ 0xCC0C, 0xCC14, 0x263F, -/* 0B1C */ 0xCC1C, 0xCC30, 0x2648, -/* 0B1D */ 0xCC38, 0xCC59, 0x265D, -/* 0B1E */ 0xCC60, 0xCC68, 0x267F, -/* 0B1F */ 0xCC70, 0xCC75, 0x2688, -/* 0B20 */ 0xCC94, 0xCCA0, 0x268E, -/* 0B21 */ 0xCCA8, 0xCCAD, 0x269B, -/* 0B22 */ 0xCCB4, 0xCCBC, 0x26A1, -/* 0B23 */ 0xCCC4, 0xCCC9, 0x26AA, -/* 0B24 */ 0xCCD0, 0xCCD4, 0x26B0, -/* 0B25 */ 0xCCE4, 0x0000, 0xC3C6, -/* 0B26 */ 0xCCEC, 0xCCF0, 0x26B5, -/* 0B27 */ 0xCCFE, 0xCD01, 0x26BA, -/* 0B28 */ 0xCD08, 0xCD10, 0x26BE, -/* 0B29 */ 0xCD18, 0xCD2C, 0x26C7, -/* 0B2A */ 0xCD39, 0xCD3E, 0x26DC, -/* 0B2B */ 0xCD5C, 0xCD64, 0x26E2, -/* 0B2C */ 0xCD6C, 0xCD71, 0x26EB, -/* 0B2D */ 0xCD78, 0x0000, 0xC3DD, -/* 0B2E */ 0xCD88, 0x0000, 0xC3DE, -/* 0B2F */ 0xCD94, 0xCDA9, 0x26F1, -/* 0B30 */ 0xCDB0, 0x0000, 0xC3E7, -/* 0B31 */ 0xCDC4, 0xCDC5, 0x2707, -/* 0B32 */ 0xCDCC, 0xCDD0, 0x2709, -/* 0B33 */ 0xCDE8, 0xCDF0, 0x270E, -/* 0B34 */ 0xCDF8, 0xCE0C, 0x2717, -/* 0B35 */ 0xCE14, 0xCE19, 0x272C, -/* 0B36 */ 0xCE20, 0xCE35, 0x2732, -/* 0B37 */ 0xCE58, 0xCE61, 0x2748, -/* 0B38 */ 0xCE68, 0xCE6D, 0x2752, -/* 0B39 */ 0xCE74, 0xCE7C, 0x2758, -/* 0B3A */ 0xCE84, 0xCE89, 0x2761, -/* 0B3B */ 0xCE90, 0xCE99, 0x2767, -/* 0B3C */ 0xCEA0, 0xCEA5, 0x2771, -/* 0B3D */ 0xCEAC, 0xCEAD, 0x2777, -/* 0B3E */ 0xCEC1, 0x0000, 0xC4BE, -/* 0B3F */ 0xCEE4, 0xCEEC, 0x2779, -/* 0B40 */ 0xCEF4, 0xCEF9, 0x2782, -/* 0B41 */ 0xCF00, 0xCF08, 0x2788, -/* 0B42 */ 0xCF10, 0xCF15, 0x2791, -/* 0B43 */ 0xCF1C, 0xCF24, 0x2797, -/* 0B44 */ 0xCF2C, 0xCF31, 0x27A0, -/* 0B45 */ 0xCF38, 0x0000, 0xC4D9, -/* 0B46 */ 0xCF54, 0xCF5C, 0x27A6, -/* 0B47 */ 0xCF64, 0xCF78, 0x27AF, -/* 0B48 */ 0xCF80, 0xCF85, 0x27C4, -/* 0B49 */ 0xCF8C, 0xCF8D, 0x27CA, -/* 0B4A */ 0xCFA1, 0x0000, 0xC4E9, -/* 0B4B */ 0xCFA8, 0xCFA9, 0x27CC, -/* 0B4C */ 0xCFB0, 0x0000, 0xC4EB, -/* 0B4D */ 0xCFC4, 0x0000, 0xC4EC, -/* 0B4E */ 0xCFE0, 0xCFE9, 0x27CE, -/* 0B4F */ 0xCFF0, 0xCFF5, 0x27D8, -/* 0B50 */ 0xCFFC, 0xD004, 0x27DE, -/* 0B51 */ 0xD011, 0x0000, 0xC4F8, -/* 0B52 */ 0xD018, 0x0000, 0xC4F9, -/* 0B53 */ 0xD02D, 0x0000, 0xC4FA, -/* 0B54 */ 0xD034, 0xD03C, 0x27E7, -/* 0B55 */ 0xD044, 0xD049, 0x27F0, -/* 0B56 */ 0xD050, 0xD058, 0x27F6, -/* 0B57 */ 0xD060, 0x0000, 0xC5A8, -/* 0B58 */ 0xD06C, 0xD074, 0x27FF, -/* 0B59 */ 0xD07C, 0xD081, 0x2808, -/* 0B5A */ 0xD0A4, 0xD0AC, 0x280E, -/* 0B5B */ 0xD0B3, 0xD0B9, 0x2817, -/* 0B5C */ 0xD0C0, 0xD0C9, 0x281E, -/* 0B5D */ 0xD0D0, 0xD0E4, 0x2828, -/* 0B5E */ 0xD0EC, 0xD0F1, 0x283D, -/* 0B5F */ 0xD0F8, 0x0000, 0xC5CB, -/* 0B60 */ 0xD10D, 0x0000, 0xC5CC, -/* 0B61 */ 0xD130, 0xD145, 0x2843, -/* 0B62 */ 0xD14C, 0xD154, 0x2859, -/* 0B63 */ 0xD15C, 0xD161, 0x2862, -/* 0B64 */ 0xD168, 0xD16D, 0x2868, -/* 0B65 */ 0xD17C, 0x0000, 0xC5E1, -/* 0B66 */ 0xD184, 0xD18A, 0x286E, -/* 0B67 */ 0xD1A0, 0xD1A8, 0x2875, -/* 0B68 */ 0xD1B0, 0xD1C0, 0x287E, -/* 0B69 */ 0xD1D8, 0x0000, 0xC5EF, -/* 0B6A */ 0xD1F4, 0xD1F8, 0x288F, -/* 0B6B */ 0xD207, 0xD209, 0x2894, -/* 0B6C */ 0xD210, 0x0000, 0xC5F4, -/* 0B6D */ 0xD22A, 0xD234, 0x2897, -/* 0B6E */ 0xD23C, 0xD241, 0x28A2, -/* 0B6F */ 0xD248, 0xD24C, 0x28A8, -/* 0B70 */ 0xD25C, 0x0000, 0xC5FE, -/* 0B71 */ 0xD264, 0xD268, 0x28AD, -/* 0B72 */ 0xD280, 0xD295, 0x28B2, -/* 0B73 */ 0xD29C, 0xD2A4, 0x28C8, -/* 0B74 */ 0xD2AC, 0xD2B1, 0x28D1, -/* 0B75 */ 0xD2B8, 0xD2CB, 0x28D7, -/* 0B76 */ 0xD2D2, 0xD2DC, 0x28EB, -/* 0B77 */ 0xD2E4, 0xD2E5, 0x28F6, -/* 0B78 */ 0xD2F0, 0xD305, 0x28F8, -/* 0B79 */ 0xD30C, 0xD330, 0x290E, -/* 0B7A */ 0xD338, 0xD33D, 0x2933, -/* 0B7B */ 0xD344, 0xD349, 0x2939, -/* 0B7C */ 0xD37C, 0xD391, 0x293F, -/* 0B7D */ 0xD398, 0xD3A0, 0x2955, -/* 0B7E */ 0xD3A8, 0xD3BC, 0x295E, -/* 0B7F */ 0xD3C4, 0xD3C9, 0x2973, -/* 0B80 */ 0xD3D0, 0x0000, 0xC6F3, -/* 0B81 */ 0xD3D7, 0xD3D8, 0x2979, -/* 0B82 */ 0xD3E1, 0xD3E3, 0x297B, -/* 0B83 */ 0xD3EC, 0xD401, 0x297E, -/* 0B84 */ 0xD408, 0x0000, 0xC7A1, -/* 0B85 */ 0xD41D, 0x0000, 0xC7A2, -/* 0B86 */ 0xD440, 0xD444, 0x2994, -/* 0B87 */ 0xD45C, 0xD464, 0x2999, -/* 0B88 */ 0xD46D, 0xD48D, 0x29A2, -/* 0B89 */ 0xD494, 0x0000, 0xC7B4, -/* 0B8A */ 0xD4A9, 0x0000, 0xC7B5, -/* 0B8B */ 0xD4CC, 0xD4D5, 0x29C3, -/* 0B8C */ 0xD4DC, 0xD4DF, 0x29CD, -/* 0B8D */ 0xD4E8, 0xD4F0, 0x29D1, -/* 0B8E */ 0xD4F8, 0xD4FD, 0x29DA, -/* 0B8F */ 0xD504, 0xD50C, 0x29E0, -/* 0B90 */ 0xD514, 0xD517, 0x29E9, -/* 0B91 */ 0xD538, 0xD544, 0x29ED, -/* 0B92 */ 0xD54C, 0xD551, 0x29FA, -/* 0B93 */ 0xD558, 0xD56D, 0x2A00, -/* 0B94 */ 0xD574, 0xD57C, 0x2A16, -/* 0B95 */ 0xD584, 0xD590, 0x2A1F, -/* 0B96 */ 0xD5A5, 0xD5A7, 0x2A2C, -/* 0B97 */ 0xD5C8, 0xD5DD, 0x2A2F, -/* 0B98 */ 0xD5E4, 0xD5F9, 0x2A45, -/* 0B99 */ 0xD600, 0xD608, 0x2A5B, -/* 0B9A */ 0xD610, 0xD615, 0x2A64, -/* 0B9B */ 0xD61C, 0xD624, 0x2A6A, -/* 0B9C */ 0xD62D, 0x0000, 0xC8A2, -/* 0B9D */ 0xD638, 0xD669, 0x2A73, -/* 0B9E */ 0xD670, 0xD674, 0x2AA5, -/* 0B9F */ 0xD681, 0xD685, 0x2AAA, -/* 0BA0 */ 0xD68C, 0xD694, 0x2AAF, -/* 0BA1 */ 0xD69D, 0xD6A1, 0x2AB8, -/* 0BA2 */ 0xD6A8, 0xD6B0, 0x2ABD, -/* 0BA3 */ 0xD6B9, 0xD6BB, 0x2AC6, -/* 0BA4 */ 0xD6C4, 0xD6D9, 0x2AC9, -/* 0BA5 */ 0xD6E0, 0xD6F5, 0x2ADF, -/* 0BA6 */ 0xD6FC, 0xD704, 0x2AF5, -/* 0BA7 */ 0xD711, 0xD720, 0x2AFE, -/* 0BA8 */ 0xD728, 0xD72D, 0x2B0E, -/* 0BA9 */ 0xD734, 0xD73C, 0x2B14, -/* 0BAA */ 0xD744, 0xD749, 0x2B1D, -/* 0BAB */ 0xD750, 0xD774, 0x2B23, -/* 0BAC */ 0xD77C, 0xD781, 0x2B48, -/* 0BAD */ 0xD788, 0xD790, 0x2B4E, -/* 0BAE */ 0xD798, 0xD79D, 0x2B57, -/* 0BAF */ 0xF900, 0xF90D, 0x2B5D, -/* 0BB0 */ 0xF914, 0xF932, 0x2B6B, -/* 0BB1 */ 0xF944, 0xF949, 0x2B8A, -/* 0BB2 */ 0xF958, 0xFA0B, 0x2B90, -/* 0BB3 */ 0xFF3C, 0x0000, 0xA1AC, -/* 0BB4 */ 0xFF5E, 0x0000, 0xA2A6, -/* 0BB5 */ 0xFFE0, 0xFFE6, 0x2C44, -/*-------------------------------------------------------*/ -/* Offset=0x2614 Start of MappingTable */ - -/* 0000 */ 0xA2AE, 0xFFFD, 0xFFFD, 0xA2B4, 0xFFFD, 0xFFFD, 0xA1D7, 0xA1A7, -/* 0008 */ 0xFFFD, 0xA8A3, 0xFFFD, 0xFFFD, 0xA1A9, 0xFFFD, 0xFFFD, 0xA1C6, -/* 0010 */ 0xA1BE, 0xA9F7, 0xA9F8, 0xA2A5, 0xFFFD, 0xA2D2, 0xA1A4, 0xA2AC, -/* 0018 */ 0xA9F6, 0xA8AC, 0xFFFD, 0xA8F9, 0xA8F6, 0xA8FA, 0xA2AF, 0xA1BF, -/* 0020 */ 0xA8AA, 0xA8AD, 0xA9AC, 0xA1C0, 0xA9AA, 0xA8A4, 0xA9A4, 0xA9A5, -/* 0028 */ 0xA8A6, 0xA9A6, 0xA8A8, 0xA9A8, 0xA8A9, 0xA9A9, 0xA9B0, 0xA8AF, -/* 0030 */ 0xA9AF, 0xA8AB, 0xA9AB, 0xA8AE, 0xA9AE, 0xA2A8, 0xA2AB, 0xA2AA, -/* 0038 */ 0xA2AD, 0xFFFD, 0xA2A9, 0xA1AA, 0xFFFD, 0xFFFD, 0xA1AE, 0xA1AF, -/* 0040 */ 0xFFFD, 0xFFFD, 0xA1B0, 0xA1B1, 0xFFFD, 0xFFFD, 0xA2D3, 0xA2D4, -/* 0048 */ 0xA1A5, 0xA1A6, 0xA2B6, 0xFFFD, 0xA1C7, 0xA1C8, 0xA9FA, 0xFFFD, -/* 0050 */ 0xA9FB, 0xA9FC, 0xA9FD, 0xA9FE, 0xA7A4, 0xFFFD, 0xFFFD, 0xA2E0, -/* 0058 */ 0xA2E5, 0xA2E2, 0xA8F7, 0xA8F8, 0xA8FB, 0xA8FC, 0xA8FD, 0xA8FE, -/* 0060 */ 0xA1E7, 0xA1E8, 0xA1E6, 0xA1E9, 0xA1EA, 0xA2D5, 0xA2D8, 0xA2D6, -/* 0068 */ 0xA2D9, 0xA2D7, 0xA2A1, 0xFFFD, 0xA2A2, 0xA2A3, 0xFFFD, 0xA1D3, -/* 0070 */ 0xA2A4, 0xA1D4, 0xA1F4, 0xFFFD, 0xFFFD, 0xA1F5, 0xA2B3, 0xFFFD, -/* 0078 */ 0xA2B2, 0xA1EE, 0xFFFD, 0xFFFD, 0xA1F0, 0xA1C4, 0xFFFD, 0xA1D0, -/* 0080 */ 0xA1AB, 0xFFFD, 0xA1FC, 0xA1FD, 0xA1FB, 0xA1FA, 0xA1F2, 0xA1F3, -/* 0088 */ 0xFFFD, 0xA2B1, 0xA1C5, 0xA1F1, 0xA1AD, 0xA1EF, 0xA1C1, 0xA1D5, -/* 0090 */ 0xFFFD, 0xFFFD, 0xA1C2, 0xA1C3, 0xA1EC, 0xA1ED, 0xA1F8, 0xA1F9, -/* 0098 */ 0xFFFD, 0xFFFD, 0xA1F6, 0xA1F7, 0xA6A1, 0xA6AC, 0xA6A2, 0xA6AD, -/* 00A0 */ 0xA6A3, 0xA6C8, 0xA6C7, 0xA6AE, 0xA6A4, 0xA6C2, 0xA6C1, 0xA6AF, -/* 00A8 */ 0xA6A6, 0xA6C6, 0xA6C5, 0xA6B1, 0xA6A5, 0xA6C4, 0xA6C3, 0xA6B0, -/* 00B0 */ 0xA6A7, 0xA6BC, 0xA6C9, 0xA6CA, 0xA6B7, 0xA6CB, 0xA6CC, 0xA6B2, -/* 00B8 */ 0xA6A9, 0xA6BE, 0xA6CD, 0xA6CE, 0xA6B9, 0xA6CF, 0xA6D0, 0xA6B4, -/* 00C0 */ 0xA6A8, 0xA6D1, 0xA6D2, 0xA6B8, 0xA6BD, 0xA6D3, 0xA6D4, 0xA6B3, -/* 00C8 */ 0xA6AA, 0xA6D5, 0xA6D6, 0xA6BA, 0xA6BF, 0xA6D7, 0xA6D8, 0xA6B5, -/* 00D0 */ 0xA6AB, 0xA6D9, 0xA6DA, 0xA6BB, 0xA6DB, 0xA6DC, 0xA6C0, 0xA1E1, -/* 00D8 */ 0xA1E0, 0xFFFD, 0xA2C3, 0xA2C7, 0xA2C8, 0xA2CB, 0xA2CA, 0xA2C9, -/* 00E0 */ 0xA2CC, 0xA1E3, 0xA1E2, 0xFFFD, 0xFFFD, 0xA2BA, 0xA2B9, 0xA1E5, -/* 00E8 */ 0xA1E4, 0xFFFD, 0xFFFD, 0xA2B8, 0xA2B7, 0xA1DF, 0xA1DE, 0xA2C2, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xA1DB, 0xFFFD, 0xFFFD, 0xA1DD, 0xA1DC, 0xA2C4, -/* 00F8 */ 0xA2C5, 0xA1DA, 0xA1D9, 0xA2CF, 0xA2CE, 0xA2D0, 0xFFFD, 0xA2D1, -/* 0100 */ 0xA1CF, 0xFFFD, 0xA1CE, 0xA2BC, 0xA2BD, 0xFFFD, 0xA2C0, 0xA2BB, -/* 0108 */ 0xA2BE, 0xFFFD, 0xA2BF, 0xA2CD, 0xA2DB, 0xA2DC, 0xFFFD, 0xA2DD, -/* 0110 */ 0xA2DA, 0xA1A1, 0xA1A2, 0xA1A3, 0xA1A8, 0xA1EB, 0xA1B2, 0xA1B3, -/* 0118 */ 0xA7C9, 0xA7CA, 0xA7CB, 0xA7CC, 0xA7CD, 0xA7BA, 0xA7BB, 0xA7DC, -/* 0120 */ 0xA7DD, 0xA7DE, 0xA7B6, 0xA7B7, 0xA7B8, 0xA7D4, 0xA7D5, 0xA7D6, -/* 0128 */ 0xA7D7, 0xA7D8, 0xA7A1, 0xA7A2, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A8, -/* 0130 */ 0xA7A9, 0xA7AA, 0xA7BD, 0xA7BE, 0xA7E5, 0xA7E6, 0xA7E7, 0xA7E8, -/* 0138 */ 0xA7E1, 0xA7E2, 0xA7E3, 0xA7DA, 0xA7DB, 0xA2E3, 0xA7EC, 0xA7A6, -/* 0140 */ 0xA7E0, 0xA7EF, 0xA2E1, 0xA7BC, 0xA7ED, 0xA7B5, 0xA7B9, 0xA7EA, -/* 0148 */ 0xFFFD, 0xFFFD, 0xA7EB, 0xFFFD, 0xFFFD, 0xA7DF, 0xFFFD, 0xA2E4, -/* 0150 */ 0xFFFD, 0xFFFD, 0xA7E4, 0xA7EE, 0xA7E9, 0xECE9, 0xEFCB, 0xFFFD, -/* 0158 */ 0xF6D2, 0xD8B2, 0xEDDB, 0xDFB2, 0xDFBE, 0xF9BB, 0xFFFD, 0xDCF4, -/* 0160 */ 0xF5E4, 0xFFFD, 0xFFFD, 0xF3A6, 0xDDE0, 0xE1A6, 0xFFFD, 0xCEF8, -/* 0168 */ 0xDCB0, 0xFCAF, 0xD3A1, 0xFFFD, 0xF1AB, 0xE7D1, 0xD2AC, 0xFFFD, -/* 0170 */ 0xCEF9, 0xF1FD, 0xFFFD, 0xDEBF, 0xFBBA, 0xF9B9, 0xCED2, 0xFFFD, -/* 0178 */ 0xE3AB, 0xEBE0, 0xCEFA, 0xCBF7, 0xE5A5, 0xCAE1, 0xFFFD, 0xD4CC, -/* 0180 */ 0xEAE1, 0xFFFD, 0xFFFD, 0xDCE3, 0xDFAD, 0xD6F5, 0xFFFD, 0xE5F8, -/* 0188 */ 0xFFFD, 0xFFFD, 0xDEC0, 0xECA3, 0xFFFD, 0xE9CD, 0xFFFD, 0xEAA7, -/* 0190 */ 0xE9F6, 0xFBBB, 0xFFFD, 0xE7E9, 0xEFCC, 0xFFFD, 0xFFFD, 0xD0E6, -/* 0198 */ 0xFFFD, 0xFFFD, 0xDEC1, 0xFFFD, 0xFFFD, 0xE4AC, 0xFFFD, 0xFFFD, -/* 01A0 */ 0xD8CC, 0xF9F1, 0xFFFD, 0xCEDF, 0xFAA4, 0xE6B2, 0xFFFD, 0xFAFB, -/* 01A8 */ 0xFFFD, 0xFFFD, 0xFABD, 0xCCC8, 0xEFCD, 0xD5D5, 0xE4A7, 0xECD2, -/* 01B0 */ 0xFFFD, 0xFFFD, 0xF6B1, 0xFFFD, 0xFFFD, 0xCEFB, 0xFFFD, 0xFFFD, -/* 01B8 */ 0xD0D1, 0xCBBF, 0xFFFD, 0xEDA4, 0xEDA8, 0xDEC2, 0xF6E2, 0xEDDC, -/* 01C0 */ 0xDCF5, 0xE0B9, 0xD4CE, 0xFFFD, 0xF4B5, 0xD3DB, 0xD6B5, 0xECA4, -/* 01C8 */ 0xE4E6, 0xFFFD, 0xF1EA, 0xCBEC, 0xCBC0, 0xF9F2, 0xECA5, 0xD0DF, -/* 01D0 */ 0xFFFD, 0xE7EA, 0xD0EB, 0xDCD1, 0xDBE9, 0xFDCC, 0xDAE1, 0xFFFD, -/* 01D8 */ 0xD6B6, 0xFFFD, 0xE3DF, 0xFFFD, 0xDEC3, 0xFFFD, 0xDEC4, 0xCAA1, -/* 01E0 */ 0xEEEC, 0xFFFD, 0xFFFD, 0xD3A3, 0xEEB7, 0xF8CF, 0xEAC8, 0xEEB8, -/* 01E8 */ 0xF1AC, 0xF1A5, 0xE9CE, 0xE5F9, 0xECEA, 0xDDD6, 0xEDC2, 0xE5BA, -/* 01F0 */ 0xDBD8, 0xFFFD, 0xFFFD, 0xCAA2, 0xFFFD, 0xFFFD, 0xD1CD, 0xECEB, -/* 01F8 */ 0xDEC5, 0xFFFD, 0xE3E0, 0xFFFD, 0xCAC9, 0xF2E9, 0xFFFD, 0xD5CE, -/* 0200 */ 0xFFFD, 0xF6B6, 0xFFFD, 0xCEC2, 0xD6C7, 0xFFFD, 0xE3B4, 0xFFFD, -/* 0208 */ 0xF1AD, 0xFFFD, 0xEAE2, 0xD7C2, 0xFFFD, 0xF3A7, 0xFFFD, 0xFFFD, -/* 0210 */ 0xCDEA, 0xFFFD, 0xEBEE, 0xD9B2, 0xFDA5, 0xF6D5, 0xD5E2, 0xF8B5, -/* 0218 */ 0xFFFD, 0xFFFD, 0xCCF5, 0xF5B5, 0xE4AD, 0xE7EB, 0xF1D5, 0xF0BB, -/* 0220 */ 0xFFFD, 0xFFFD, 0xE9B5, 0xFFFD, 0xCCC9, 0xFAD5, 0xFFFD, 0xFFFD, -/* 0228 */ 0xE1D4, 0xFFFD, 0xFFFD, 0xD7D6, 0xFFFD, 0xFFFD, 0xDCC1, 0xFFFD, -/* 0230 */ 0xDEC6, 0xFAEF, 0xE3E1, 0xE1F3, 0xDCF6, 0xFFFD, 0xCEFC, 0xFFFD, -/* 0238 */ 0xDBC4, 0xFFFD, 0xF8F1, 0xFFFD, 0xFFFD, 0xDCE4, 0xFFFD, 0xE5EF, -/* 0240 */ 0xD5D6, 0xFFFD, 0xFFFD, 0xF3DA, 0xFFFD, 0xCBC1, 0xFFFD, 0xDBC3, -/* 0248 */ 0xD9FA, 0xD3EE, 0xFAB8, 0xFFFD, 0xFFFD, 0xFDA6, 0xEBEF, 0xFFFD, -/* 0250 */ 0xF4A6, 0xFFFD, 0xCCCA, 0xF3A8, 0xFFFD, 0xF3DB, 0xFFFD, 0xDBA7, -/* 0258 */ 0xF6B7, 0xFFFD, 0xCFE6, 0xF0F2, 0xCBDA, 0xFFFD, 0xE7D2, 0xD7C3, -/* 0260 */ 0xF6F0, 0xE8DE, 0xCAA3, 0xCCA7, 0xEAC9, 0xF1AE, 0xFFFD, 0xEFCE, -/* 0268 */ 0xF6B0, 0xEFCF, 0xE9CF, 0xFFFD, 0xF7DE, 0xDFA1, 0xDDE1, 0xF5CA, -/* 0270 */ 0xE9B6, 0xE7EC, 0xEEEE, 0xFFFD, 0xF3F0, 0xFFFD, 0xDFBF, 0xF4D2, -/* 0278 */ 0xE0BA, 0xDFC0, 0xFFFD, 0xCEE0, 0xDCD2, 0xFDEA, 0xE8E9, 0xFFFD, -/* 0280 */ 0xE3AC, 0xCAA4, 0xFFFD, 0xDBF8, 0xDEC7, 0xEBF0, 0xF1D6, 0xFFFD, -/* 0288 */ 0xFFFD, 0xE5E2, 0xFFFD, 0xCCCC, 0xFFFD, 0xFFFD, 0xCBFB, 0xDFC1, -/* 0290 */ 0xFFFD, 0xD6ED, 0xD5E3, 0xFFFD, 0xFFFD, 0xD1D3, 0xFFFD, 0xE5F0, -/* 0298 */ 0xE8B4, 0xEBC3, 0xFFFD, 0xEAAA, 0xFAFC, 0xF5F6, 0xF0BC, 0xFDD4, -/* 02A0 */ 0xE0BB, 0xCEC3, 0xFFFD, 0xD0BA, 0xF7BA, 0xD8F3, 0xF7CD, 0xD0E7, -/* 02A8 */ 0xFFFD, 0xFFFD, 0xECFD, 0xFFFD, 0xD2AE, 0xEEEF, 0xD5D7, 0xEAE4, -/* 02B0 */ 0xF8A2, 0xCDEB, 0xD7BF, 0xFBB1, 0xFFFD, 0xFFFD, 0xCDEC, 0xDCB2, -/* 02B8 */ 0xD0EC, 0xCEFD, 0xEEF0, 0xF3FC, 0xFFFD, 0xFFFD, 0xEEA2, 0xD9B3, -/* 02C0 */ 0xFFFD, 0xFFFD, 0xD8F4, 0xFFFD, 0xE9B7, 0xD8F1, 0xFFFD, 0xD4CF, -/* 02C8 */ 0xE5A7, 0xD5D2, 0xF4A2, 0xFFFD, 0xF1D7, 0xFFFD, 0xFFFD, 0xD5D8, -/* 02D0 */ 0xFFFD, 0xF0BD, 0xD7D0, 0xD4D0, 0xD7CF, 0xEBEA, 0xFDEB, 0xFFFD, -/* 02D8 */ 0xFFFD, 0xDBED, 0xFCC5, 0xCBC2, 0xFDD5, 0xFFFD, 0xF4C8, 0xE8EA, -/* 02E0 */ 0xF5F3, 0xFFFD, 0xFFFD, 0xF9DE, 0xFFFD, 0xFFFD, 0xD3EF, 0xFFFD, -/* 02E8 */ 0xFFFD, 0xECD3, 0xFFFD, 0xFFFD, 0xDDC2, 0xEFB7, 0xE7D4, 0xFFFD, -/* 02F0 */ 0xCACA, 0xD9FB, 0xFFFD, 0xFFFD, 0xFAFD, 0xF7F7, 0xDCAC, 0xD7D7, -/* 02F8 */ 0xDFA2, 0xCEBE, 0xFFFD, 0xD3F0, 0xF0A4, 0xE1EC, 0xCFE7, 0xF3CB, -/* 0300 */ 0xEDA9, 0xCABE, 0xF6CE, 0xFFFD, 0xFFFD, 0xDEFB, 0xD0BB, 0xD5B7, -/* 0308 */ 0xEEF1, 0xF4A8, 0xFFFD, 0xDCF8, 0xCBA7, 0xFFFD, 0xDACE, 0xEDA5, -/* 0310 */ 0xEEF2, 0xDCF9, 0xFFFD, 0xFFFD, 0xF9DC, 0xFFFD, 0xFFFD, 0xF3DC, -/* 0318 */ 0xF8F2, 0xFFFD, 0xF4F9, 0xD0BC, 0xDBF9, 0xD7B1, 0xF0A5, 0xCBFD, -/* 0320 */ 0xCDED, 0xCAA5, 0xFFFD, 0xFFFD, 0xD6AB, 0xD0C2, 0xF0BE, 0xD2BD, -/* 0328 */ 0xCCA4, 0xFAB6, 0xFFFD, 0xFFFD, 0xCCCD, 0xFFFD, 0xDAFA, 0xFFFD, -/* 0330 */ 0xF6CF, 0xFFFD, 0xE9B8, 0xFFFD, 0xD8F5, 0xD7CD, 0xFFFD, 0xFFFD, -/* 0338 */ 0xD4D1, 0xE9ED, 0xFFFD, 0xCAEB, 0xD9E2, 0xFFFD, 0xFDB2, 0xFFFD, -/* 0340 */ 0xE3AD, 0xD6CC, 0xD9B4, 0xFFFD, 0xFFFD, 0xE1A7, 0xEED3, 0xD0C3, -/* 0348 */ 0xFDB3, 0xFFFD, 0xD5E4, 0xFFFD, 0xFFFD, 0xCFE8, 0xFFFD, 0xEDC3, -/* 0350 */ 0xD0B2, 0xFFFD, 0xFFFD, 0xCEFE, 0xDAA8, 0xF8D0, 0xFFFD, 0xFFFD, -/* 0358 */ 0xFDD6, 0xF8D1, 0xFFFD, 0xF8D2, 0xDCD3, 0xDDE2, 0xFBF9, 0xDDC1, -/* 0360 */ 0xFFFD, 0xE3B5, 0xEDDD, 0xCEC4, 0xFFFD, 0xCBA1, 0xD2FB, 0xCFA1, -/* 0368 */ 0xE4A8, 0xFFFD, 0xF4B6, 0xECFE, 0xFFFD, 0xFFFD, 0xE3AE, 0xE7ED, -/* 0370 */ 0xFDC1, 0xDAE2, 0xFFFD, 0xFFFD, 0xD8B3, 0xDDE4, 0xF0EF, 0xF6F1, -/* 0378 */ 0xFAF0, 0xFFFD, 0xFFFD, 0xD1F5, 0xFFFD, 0xFFFD, 0xDACF, 0xFFFD, -/* 0380 */ 0xDCD4, 0xFFFD, 0xDCA6, 0xFFFD, 0xEFBF, 0xCECF, 0xFFFD, 0xE0D9, -/* 0388 */ 0xD9D6, 0xECD4, 0xEACB, 0xFFFD, 0xFFFD, 0xCABF, 0xD5B0, 0xFFFD, -/* 0390 */ 0xCFE9, 0xF1ED, 0xFFFD, 0xCCCF, 0xD7D8, 0xFFFD, 0xFDA7, 0xEAAB, -/* 0398 */ 0xF6B2, 0xCFF0, 0xF9BD, 0xE9D1, 0xF3A9, 0xD0E0, 0xE9D2, 0xFFFD, -/* 03A0 */ 0xDAE3, 0xE2D2, 0xFFFD, 0xF6A2, 0xE1F4, 0xE7D5, 0xF5BF, 0xCFA2, -/* 03A8 */ 0xCDAF, 0xCFA3, 0xCDB0, 0xF1FE, 0xD0A3, 0xE1AF, 0xF8A3, 0xFFFD, -/* 03B0 */ 0xCAA6, 0xF7BB, 0xF2EA, 0xDEC8, 0xE9D3, 0xFDDE, 0xCAC0, 0xF9EA, -/* 03B8 */ 0xD1CE, 0xEED4, 0xFFFD, 0xD4D2, 0xD9A3, 0xFDA8, 0xD7D9, 0xF7CE, -/* 03C0 */ 0xFABE, 0xCFD6, 0xFFFD, 0xD7F0, 0xFFFD, 0xEBE1, 0xF8C5, 0xDCFA, -/* 03C8 */ 0xFFFD, 0xFFFD, 0xDDC3, 0xFFFD, 0xF9DF, 0xFDE5, 0xF6A3, 0xFFFD, -/* 03D0 */ 0xD9FC, 0xFDA9, 0xFFFD, 0xE7EE, 0xEFD0, 0xFFFD, 0xCDB1, 0xF1B2, -/* 03D8 */ 0xFFFD, 0xF1B1, 0xCDB2, 0xFFFD, 0xDAAB, 0xFFFD, 0xCAA7, 0xE3E2, -/* 03E0 */ 0xFBBC, 0xD9A4, 0xFFFD, 0xFFFD, 0xEEBA, 0xFBFA, 0xFFFD, 0xCFA4, -/* 03E8 */ 0xFFFD, 0xDCFB, 0xEDAA, 0xFFFD, 0xFFFD, 0xF2A1, 0xCEE1, 0xECD6, -/* 03F0 */ 0xFFFD, 0xFFFD, 0xE4EE, 0xF9A1, 0xFFFD, 0xFFFD, 0xFBEF, 0xF9EB, -/* 03F8 */ 0xEEA3, 0xCAA8, 0xFFFD, 0xFFFD, 0xF4FA, 0xCDD6, 0xFCF6, 0xF8A6, -/* 0400 */ 0xFFFD, 0xDECA, 0xF2C6, 0xD7DA, 0xFFFD, 0xD3D0, 0xEAE6, 0xFFFD, -/* 0408 */ 0xF3DD, 0xF6F2, 0xFFFD, 0xDFC2, 0xCCF6, 0xFFFD, 0xFFFD, 0xD3BA, -/* 0410 */ 0xE0BC, 0xFFFD, 0xF4CA, 0xD4FA, 0xFFFD, 0xFDAA, 0xF9E2, 0xF4B7, -/* 0418 */ 0xFDC2, 0xFCB0, 0xFFFD, 0xFDEC, 0xCAE2, 0xFDBD, 0xFFFD, 0xEAE7, -/* 0420 */ 0xDFC3, 0xD1D2, 0xCEE2, 0xFFFD, 0xD3A4, 0xFDAB, 0xFFFD, 0xDFE0, -/* 0428 */ 0xE7F0, 0xFFFD, 0xD0EE, 0xFFFD, 0xFFFD, 0xF3AA, 0xDECB, 0xF6B8, -/* 0430 */ 0xE1F5, 0xF1B3, 0xF7A3, 0xFFFD, 0xFFFD, 0xCAA9, 0xCFA5, 0xFFFD, -/* 0438 */ 0xFFFD, 0xDFC4, 0xE1B0, 0xFFFD, 0xFFFD, 0xF0BF, 0xFFFD, 0xF6A4, -/* 0440 */ 0xFFFD, 0xE3B6, 0xD0EF, 0xFFFD, 0xFFFD, 0xFDED, 0xDEAD, 0xFFFD, -/* 0448 */ 0xFABF, 0xD2A5, 0xFFFD, 0xFFFD, 0xFDEE, 0xE1F6, 0xDECC, 0xFFFD, -/* 0450 */ 0xFFFD, 0xFCDE, 0xFFFD, 0xECD7, 0xD6B7, 0xCDB3, 0xF8D5, 0xE5D8, -/* 0458 */ 0xCFEA, 0xFFFD, 0xFFFD, 0xCFD0, 0xFFFD, 0xEACC, 0xEAAE, 0xEAAD, -/* 0460 */ 0xFFFD, 0xFFFD, 0xD3F1, 0xFFFD, 0xD3A5, 0xD0A4, 0xFFFD, 0xFFFD, -/* 0468 */ 0xF2A2, 0xF2A3, 0xFFFD, 0xF7F8, 0xD0B3, 0xFFFD, 0xFFFD, 0xDBA9, -/* 0470 */ 0xFFFD, 0xFFFD, 0xD3BB, 0xCAEC, 0xFFFD, 0xF1A6, 0xCBD5, 0xF7E7, -/* 0478 */ 0xFFFD, 0xFFFD, 0xCDDE, 0xFFFD, 0xF7A4, 0xD3DD, 0xFFFD, 0xCCD0, -/* 0480 */ 0xD3DC, 0xFFFD, 0xFFFD, 0xFAFE, 0xEBD9, 0xFFFD, 0xCFA7, 0xEAAF, -/* 0488 */ 0xE9B9, 0xF1D8, 0xFFFD, 0xFFFD, 0xD8D8, 0xFFFD, 0xFFFD, 0xE0F2, -/* 0490 */ 0xE6B4, 0xDCFC, 0xE3D0, 0xFFFD, 0xFFFD, 0xF2FB, 0xFFFD, 0xDBC6, -/* 0498 */ 0xD0F1, 0xFFFD, 0xD0F2, 0xCFDC, 0xFFFD, 0xD3D1, 0xFFFD, 0xFFFD, -/* 04A0 */ 0xCCB1, 0xF7D8, 0xFFFD, 0xCBA8, 0xEBBC, 0xE4BE, 0xF4DC, 0xFFFD, -/* 04A8 */ 0xFFFD, 0xDCC2, 0xFFFD, 0xFFFD, 0xF0A7, 0xFFFD, 0xFFFD, 0xE6C0, -/* 04B0 */ 0xFFFD, 0xFFFD, 0xCAED, 0xE8EB, 0xE5E8, 0xDCC3, 0xFFFD, 0xFFFD, -/* 04B8 */ 0xEDDE, 0xD3F2, 0xCED4, 0xE7AB, 0xCBC3, 0xFFFD, 0xE1B1, 0xFFFD, -/* 04C0 */ 0xFFFD, 0xF7B2, 0xFFFD, 0xFFFD, 0xD3F3, 0xD3D2, 0xFFFD, 0xF5C0, -/* 04C8 */ 0xDFDD, 0xFFFD, 0xFFFD, 0xEEF3, 0xE7F1, 0xFFFD, 0xFDB4, 0xF3D2, -/* 04D0 */ 0xFFFD, 0xFFFD, 0xEEF4, 0xFFFD, 0xE2D3, 0xCCD1, 0xFFFD, 0xDFEA, -/* 04D8 */ 0xF5CD, 0xFFFD, 0xF1F2, 0xFAC7, 0xD9F8, 0xD4C2, 0xE7F2, 0xEDDF, -/* 04E0 */ 0xFFFD, 0xFFFD, 0xCACB, 0xFFFD, 0xFFFD, 0xDBFA, 0xE8B5, 0xFFFD, -/* 04E8 */ 0xD3A6, 0xFDB5, 0xFFFD, 0xFFFD, 0xF9C9, 0xFFFD, 0xE4E2, 0xFFFD, -/* 04F0 */ 0xFBBD, 0xFFFD, 0xFFFD, 0xD7A4, 0xCEC5, 0xCED5, 0xD6E6, 0xDECD, -/* 04F8 */ 0xECF3, 0xFFFD, 0xFFFD, 0xEDE0, 0xECEC, 0xFBBE, 0xDFEB, 0xFFFD, -/* 0500 */ 0xE1F8, 0xD0F3, 0xE0AA, 0xE8E2, 0xFFFD, 0xFFFD, 0xE2D4, 0xD2FD, -/* 0508 */ 0xFFFD, 0xE5A8, 0xD3DE, 0xFFFD, 0xF4B8, 0xF7BC, 0xDCFD, 0xFFFD, -/* 0510 */ 0xE8EC, 0xE4E7, 0xFFFD, 0xFFFD, 0xE3F7, 0xE5F2, 0xFFFD, 0xFFFD, -/* 0518 */ 0xD0F4, 0xD2AF, 0xDCE5, 0xD0A5, 0xF1B4, 0xFCB1, 0xCCF8, 0xFFFD, -/* 0520 */ 0xFFFD, 0xDDC6, 0xFAD1, 0xFFFD, 0xF7DF, 0xFFFD, 0xFFFD, 0xFAA8, -/* 0528 */ 0xEEF5, 0xFFFD, 0xDECE, 0xE7F3, 0xFFFD, 0xFFFD, 0xF7AC, 0xEBC4, -/* 0530 */ 0xEDE1, 0xE0AB, 0xDDC7, 0xD2B3, 0xD2BF, 0xE5FD, 0xDDE5, 0xD8CD, -/* 0538 */ 0xD0F5, 0xFFFD, 0xFFFD, 0xE8ED, 0xD0D2, 0xFFFD, 0xD9D8, 0xF6E6, -/* 0540 */ 0xFFFD, 0xFFFD, 0xDBAA, 0xD8D9, 0xFFFD, 0xF4A3, 0xFFFD, 0xFFFD, -/* 0548 */ 0xF4DD, 0xEFD1, 0xFFFD, 0xFFFD, 0xD9B5, 0xFFFD, 0xFFFD, 0xEDAB, -/* 0550 */ 0xFFFD, 0xE3B7, 0xEEBB, 0xCDB4, 0xFFFD, 0xE0F3, 0xEACD, 0xECF5, -/* 0558 */ 0xE8EE, 0xFFFD, 0xCBA9, 0xF1AF, 0xCACD, 0xFFFD, 0xECA9, 0xFFFD, -/* 0560 */ 0xF2EB, 0xFFFD, 0xFDEF, 0xFFFD, 0xF9F3, 0xE6C1, 0xFFFD, 0xFFFD, -/* 0568 */ 0xECD8, 0xEDAC, 0xFFFD, 0xEACE, 0xFFFD, 0xE8DF, 0xD2A6, 0xFFFD, -/* 0570 */ 0xFFFD, 0xE7F4, 0xD1D6, 0xFFFD, 0xFFFD, 0xE6C2, 0xE3E3, 0xF7E8, -/* 0578 */ 0xFFFD, 0xFFFD, 0xE8C6, 0xDAAC, 0xEAB0, 0xCAAA, 0xE1F9, 0xFFFD, -/* 0580 */ 0xEAB1, 0xF2EC, 0xFFFD, 0xFFFD, 0xFAEE, 0xF9F4, 0xFFFD, 0xFFFD, -/* 0588 */ 0xD2EC, 0xFDF0, 0xFFFD, 0xE0BD, 0xCEE3, 0xDFC5, 0xFFFD, 0xFFFD, -/* 0590 */ 0xE5BE, 0xEDAD, 0xFAEA, 0xFFFD, 0xFFFD, 0xCDEE, 0xEDA6, 0xFFFD, -/* 0598 */ 0xEDAE, 0xF0ED, 0xFFFD, 0xDDA1, 0xFFFD, 0xEDAF, 0xFCF8, 0xFFFD, -/* 05A0 */ 0xD8EB, 0xCCF9, 0xCDB5, 0xFAA9, 0xFFFD, 0xE1DD, 0xE2D5, 0xEDCF, -/* 05A8 */ 0xDDA2, 0xFFFD, 0xFFFD, 0xF9CA, 0xFFFD, 0xEAE8, 0xFFFD, 0xE5ED, -/* 05B0 */ 0xD3EB, 0xFFFD, 0xE9D4, 0xE1FA, 0xE4CC, 0xFFFD, 0xE1E4, 0xE8C7, -/* 05B8 */ 0xFFFD, 0xFFFD, 0xCEDB, 0xDCD5, 0xFFFD, 0xF7B5, 0xFCF3, 0xF0F3, -/* 05C0 */ 0xCEAF, 0xF1B5, 0xEFD2, 0xE8C8, 0xEBF1, 0xCBD4, 0xE0BE, 0xE3F8, -/* 05C8 */ 0xEAE9, 0xFCB2, 0xE0F4, 0xFFFD, 0xCFE0, 0xFFFD, 0xEEA5, 0xFFFD, -/* 05D0 */ 0xFFFD, 0xFAAA, 0xE6C3, 0xE1B2, 0xCAAB, 0xFFFD, 0xE3E4, 0xE9BB, -/* 05D8 */ 0xE2D6, 0xF3F2, 0xFFFD, 0xEED6, 0xEAB2, 0xD0F6, 0xECD9, 0xDACB, -/* 05E0 */ 0xCFA8, 0xD8DB, 0xFFFD, 0xF9CE, 0xE9D5, 0xE3D1, 0xFFFD, 0xFFFD, -/* 05E8 */ 0xD2BC, 0xD8AC, 0xF3CC, 0xFFFD, 0xCDFB, 0xF6D6, 0xFFFD, 0xE7F5, -/* 05F0 */ 0xE8EF, 0xE3F9, 0xD2BB, 0xF3F3, 0xE3FB, 0xFFFD, 0xDED0, 0xCEB0, -/* 05F8 */ 0xFFFD, 0xD6F7, 0xF1D9, 0xF5C1, 0xDCC4, 0xFFFD, 0xF5BB, 0xFFFD, -/* 0600 */ 0xDED1, 0xDCE6, 0xFFFD, 0xFFFD, 0xDED2, 0xFFFD, 0xFFFD, 0xEDE2, -/* 0608 */ 0xEEF6, 0xEACF, 0xF0EE, 0xE3FC, 0xFFFD, 0xD3DF, 0xD3F4, 0xE1B3, -/* 0610 */ 0xFFFD, 0xE1B4, 0xF4D3, 0xFFFD, 0xFFFD, 0xDFC6, 0xE3B9, 0xEBC5, -/* 0618 */ 0xF4A9, 0xCDB6, 0xD2F9, 0xFFFD, 0xDAAD, 0xD2E3, 0xCFD1, 0xCBDC, -/* 0620 */ 0xCCFA, 0xFFFD, 0xCFDD, 0xFFFD, 0xFFFD, 0xE8A9, 0xFFFD, 0xE3BB, -/* 0628 */ 0xE3BA, 0xFFFD, 0xFFFD, 0xE0DA, 0xD3F5, 0xFFFD, 0xD7A6, 0xFFFD, -/* 0630 */ 0xF6B5, 0xD7DB, 0xE1D5, 0xFFFD, 0xFFFD, 0xD4EA, 0xFFFD, 0xDFA3, -/* 0638 */ 0xD0F7, 0xEDD4, 0xE4DB, 0xFFFD, 0xE1FB, 0xCBA2, 0xD3E0, 0xFFFD, -/* 0640 */ 0xE4BF, 0xFFFD, 0xFBC0, 0xFFFD, 0xDABE, 0xE4CD, 0xFFFD, 0xD6B9, -/* 0648 */ 0xEFC0, 0xFFFD, 0xE1FC, 0xDCE7, 0xDCE8, 0xFAD6, 0xFFFD, 0xD3F6, -/* 0650 */ 0xF1DA, 0xFFFD, 0xFAF2, 0xD5CF, 0xD0F8, 0xFFFD, 0xFFFD, 0xCDDF, -/* 0658 */ 0xFFFD, 0xFFFD, 0xF5CB, 0xFFFD, 0xE4F0, 0xCBAB, 0xFFFD, 0xD7C4, -/* 0660 */ 0xE2FE, 0xFFFD, 0xDDDA, 0xDAAE, 0xCAEE, 0xE3A1, 0xFFFD, 0xFFFD, -/* 0668 */ 0xE8E3, 0xFFFD, 0xFFFD, 0xF3AB, 0xD4F1, 0xFFFD, 0xFFFD, 0xCEE4, -/* 0670 */ 0xFFFD, 0xE8F2, 0xE7AE, 0xFFFD, 0xD6BA, 0xFFFD, 0xDFEC, 0xE4C0, -/* 0678 */ 0xF4B9, 0xF1B6, 0xFFFD, 0xFFFD, 0xE2DE, 0xE1B5, 0xFFFD, 0xFFFD, -/* 0680 */ 0xCDEF, 0xF1A7, 0xCEE5, 0xCBDD, 0xFFFD, 0xFFFD, 0xD9E3, 0xFFFD, -/* 0688 */ 0xFFFD, 0xF3AC, 0xFFFD, 0xFFFD, 0xD0F9, 0xECAB, 0xDED3, 0xF7E9, -/* 0690 */ 0xFFFD, 0xFFFD, 0xF9F5, 0xE1DE, 0xCBEE, 0xE3BC, 0xF8D6, 0xFFFD, -/* 0698 */ 0xFFFD, 0xDBEE, 0xF4DE, 0xFFFD, 0xFFFD, 0xF2ED, 0xFFFD, 0xDBD9, -/* 06A0 */ 0xFFFD, 0xF0A8, 0xDED4, 0xFFFD, 0xE0AC, 0xEDE3, 0xFFFD, 0xFFFD, -/* 06A8 */ 0xD3E1, 0xFFFD, 0xDFC8, 0xD9B6, 0xFFFD, 0xFDAC, 0xEFD3, 0xE4C1, -/* 06B0 */ 0xF8EB, 0xFFFD, 0xDBAC, 0xF6BA, 0xFFFD, 0xDBDF, 0xD3D3, 0xF8C7, -/* 06B8 */ 0xCACE, 0xF8C1, 0xD2B4, 0xFFFD, 0xFFFD, 0xDCB4, 0xFAB9, 0xCACF, -/* 06C0 */ 0xFFFD, 0xFCB3, 0xEAEA, 0xEAEB, 0xD0FA, 0xEDE4, 0xFFFD, 0xFFFD, -/* 06C8 */ 0xDDE7, 0xFFFD, 0xFFFD, 0xDFC9, 0xEEBC, 0xFFFD, 0xEFC1, 0xFFFD, -/* 06D0 */ 0xFFFD, 0xCCD2, 0xFFFD, 0xDDA4, 0xD3F8, 0xF1A8, 0xCDB7, 0xFFFD, -/* 06D8 */ 0xEFD4, 0xE4DD, 0xDFEE, 0xCBAC, 0xE9BC, 0xF9BF, 0xD6AF, 0xD5C6, -/* 06E0 */ 0xCFAA, 0xFFFD, 0xFFFD, 0xCEA9, 0xFFFD, 0xFFFD, 0xD6F8, 0xF1B7, -/* 06E8 */ 0xEEF8, 0xD9D9, 0xF3DF, 0xFFFD, 0xF8C8, 0xCEC6, 0xF4E6, 0xFFFD, -/* 06F0 */ 0xFFFD, 0xE6C5, 0xEFD5, 0xFFFD, 0xFFFD, 0xCBEF, 0xFCDF, 0xDCA7, -/* 06F8 */ 0xFFFD, 0xFFFD, 0xD6E7, 0xE3D2, 0xFFFD, 0xE3BD, 0xFFFD, 0xCFE1, -/* 0700 */ 0xF0C0, 0xECDA, 0xFFFD, 0xDDD7, 0xFBF0, 0xFFFD, 0xFFFD, 0xECAC, -/* 0708 */ 0xFAD7, 0xFBC1, 0xFFFD, 0xD2C0, 0xCBAD, 0xFFFD, 0xF9B0, 0xF7A5, -/* 0710 */ 0xFFFD, 0xCBAE, 0xFFFD, 0xDAAF, 0xFFFD, 0xD8B6, 0xD3A7, 0xFBB2, -/* 0718 */ 0xFFFD, 0xFDC4, 0xFFFD, 0xECAD, 0xE5E9, 0xE9EE, 0xFFFD, 0xF3F4, -/* 0720 */ 0xF8F3, 0xF0C1, 0xDEAF, 0xF8B0, 0xFFFD, 0xFFFD, 0xF3E0, 0xE7AF, -/* 0728 */ 0xDBAD, 0xFFFD, 0xE6B5, 0xFFFD, 0xFFFD, 0xF9A8, 0xFFFD, 0xFFFD, -/* 0730 */ 0xDDD8, 0xE8D9, 0xEFD6, 0xD3E2, 0xFFFD, 0xE2DF, 0xFFFD, 0xFFFD, -/* 0738 */ 0xFCE0, 0xD7C8, 0xFDAD, 0xDFEF, 0xCCD3, 0xD3F9, 0xD4F0, 0xDBC7, -/* 0740 */ 0xDED5, 0xF0F4, 0xFFFD, 0xD5D0, 0xE5D9, 0xFCC7, 0xDCD6, 0xE2E0, -/* 0748 */ 0xF3A3, 0xFFFD, 0xD3EC, 0xFFFD, 0xF4CB, 0xE3FD, 0xFFFD, 0xF9B1, -/* 0750 */ 0xD0FB, 0xECDB, 0xF5BC, 0xF2A4, 0xD8CE, 0xD8CF, 0xFBEC, 0xFFFD, -/* 0758 */ 0xDDC8, 0xE4E8, 0xFFFD, 0xFFFD, 0xD2C1, 0xD6BB, 0xDED6, 0xFFFD, -/* 0760 */ 0xFFFD, 0xF7BD, 0xECAE, 0xD0E1, 0xFFFD, 0xE0F5, 0xEAB3, 0xFFFD, -/* 0768 */ 0xCED6, 0xECF6, 0xE2E1, 0xE3BE, 0xFCC8, 0xFFFD, 0xFFFD, 0xCDF0, -/* 0770 */ 0xFFFD, 0xF9F6, 0xFFFD, 0xFFFD, 0xDFF0, 0xFCE1, 0xEDB0, 0xFDD1, -/* 0778 */ 0xF6BB, 0xFFFD, 0xFFFD, 0xF9CF, 0xEBDA, 0xCAC1, 0xFFFD, 0xD2B8, -/* 0780 */ 0xCDF1, 0xFFFD, 0xE3D3, 0xFDE6, 0xE3FA, 0xFFFD, 0xFFFD, 0xF0AA, -/* 0788 */ 0xF9D0, 0xFCE2, 0xFFFD, 0xF8A7, 0xE1E5, 0xEEF9, 0xE7F6, 0xEAED, -/* 0790 */ 0xFFFD, 0xFFFD, 0xFCB4, 0xF5C2, 0xFFFD, 0xFFFD, 0xD7DC, 0xF0F5, -/* 0798 */ 0xFFFD, 0xDDE8, 0xD3ED, 0xF5FC, 0xFFFD, 0xDABF, 0xFFFD, 0xCCFB, -/* 07A0 */ 0xD3FA, 0xF4A4, 0xEFD7, 0xFFFD, 0xD4C3, 0xFBED, 0xFFFD, 0xE0AD, -/* 07A8 */ 0xFFFD, 0xFFFD, 0xEAEE, 0xFBB3, 0xE4C2, 0xF6E7, 0xD2DD, 0xFFFD, -/* 07B0 */ 0xDFCC, 0xFFFD, 0xFFFD, 0xFCC9, 0xFFFD, 0xFFFD, 0xE5A9, 0xE0F6, -/* 07B8 */ 0xF6B3, 0xCBF0, 0xFFFD, 0xEAEF, 0xEAF0, 0xDAC0, 0xF8B4, 0xEBF2, -/* 07C0 */ 0xE9D7, 0xE4F1, 0xF3E1, 0xFFFD, 0xFFFD, 0xCBC4, 0xE3E5, 0xFFFD, -/* 07C8 */ 0xCBC5, 0xEAB4, 0xFFFD, 0xFFFD, 0xE9BD, 0xFFFD, 0xD7C9, 0xFFFD, -/* 07D0 */ 0xFFFD, 0xEBDB, 0xEDB1, 0xFFFD, 0xCCC3, 0xF7BE, 0xFCCB, 0xF8F4, -/* 07D8 */ 0xFFFD, 0xD9B7, 0xFFFD, 0xFFFD, 0xF3D3, 0xF3D4, 0xF7E4, 0xFFFD, -/* 07E0 */ 0xF7D1, 0xFFFD, 0xFFFD, 0xD8B7, 0xCEB1, 0xCAC2, 0xFFFD, 0xFFFD, -/* 07E8 */ 0xFBB4, 0xCBC6, 0xFFFD, 0xFFFD, 0xF0F6, 0xFFFD, 0xFFFD, 0xD5E7, -/* 07F0 */ 0xFFFD, 0xEAD0, 0xCCD4, 0xCBAF, 0xF4AA, 0xE9AF, 0xFFFD, 0xFFFD, -/* 07F8 */ 0xF5C3, 0xE9D8, 0xF1F3, 0xFFFD, 0xD5FB, 0xDEBB, 0xFFFD, 0xFFFD, -/* 0800 */ 0xF4FB, 0xFDF3, 0xFDF2, 0xF7A6, 0xDDC9, 0xFFFD, 0xFFFD, 0xD4D3, -/* 0808 */ 0xFFFD, 0xCCA8, 0xFFFD, 0xDAC1, 0xCCD5, 0xFFFD, 0xD9E4, 0xCAD0, -/* 0810 */ 0xFAAB, 0xEBEB, 0xE7F8, 0xD9E5, 0xD4FB, 0xFCE3, 0xFAD8, 0xFFFD, -/* 0818 */ 0xF3D5, 0xFFFD, 0xCFAB, 0xFFFD, 0xFFFD, 0xEBF3, 0xD5FC, 0xD3D4, -/* 0820 */ 0xCDFC, 0xFFFD, 0xD9E6, 0xFFFD, 0xE2F9, 0xE2A1, 0xEBD4, 0xFFFD, -/* 0828 */ 0xE0F7, 0xE4B2, 0xCCFC, 0xD0BD, 0xFFFD, 0xCAF1, 0xD7C0, 0xFFFD, -/* 0830 */ 0xEEFA, 0xFDF4, 0xFFFD, 0xFFFD, 0xD3E3, 0xFFFD, 0xFBC2, 0xD5E8, -/* 0838 */ 0xDBAE, 0xE1B6, 0xF8B7, 0xE0BF, 0xFBC3, 0xDDEA, 0xFFFD, 0xE2A2, -/* 0840 */ 0xFFFD, 0xEEA6, 0xDDCA, 0xFFFD, 0xFFFD, 0xD0E2, 0xDDA6, 0xFFFD, -/* 0848 */ 0xFFFD, 0xDDEB, 0xFFFD, 0xFFFD, 0xE4F9, 0xFFFD, 0xFFFD, 0xE3AF, -/* 0850 */ 0xD0FC, 0xCCBC, 0xF7EA, 0xE5E4, 0xDFF1, 0xFFFD, 0xFFFD, 0xF7E1, -/* 0858 */ 0xFFFD, 0xF9F7, 0xEFB9, 0xFFFD, 0xFFFD, 0xF8D8, 0xD8C6, 0xFFFD, -/* 0860 */ 0xFFFD, 0xE4E3, 0xF5CE, 0xD9E7, 0xD2B9, 0xD5C3, 0xFFFD, 0xFFFD, -/* 0868 */ 0xDAE5, 0xDAD0, 0xFFFD, 0xD1D9, 0xCED8, 0xFFFD, 0xCBDE, 0xF4AC, -/* 0870 */ 0xDAFB, 0xFFFD, 0xF6E9, 0xE8F3, 0xCFAC, 0xF0F0, 0xFFFD, 0xF4FD, -/* 0878 */ 0xDBC8, 0xCEC0, 0xE3D4, 0xD1CF, 0xF1F5, 0xFFFD, 0xCDF2, 0xFFFD, -/* 0880 */ 0xCFEB, 0xE3A6, 0xD1DA, 0xFFFD, 0xF2A5, 0xF2A6, 0xFFFD, 0xE4CE, -/* 0888 */ 0xEFD8, 0xE6C9, 0xFFFD, 0xD8B8, 0xFAF3, 0xF3B5, 0xFFFD, 0xFFFD, -/* 0890 */ 0xF8A4, 0xFFFD, 0xFFFD, 0xD1F3, 0xE6C8, 0xDCE9, 0xDED7, 0xF4DF, -/* 0898 */ 0xFFFD, 0xFFFD, 0xD1F4, 0xD2BA, 0xE2A3, 0xD3FC, 0xFFFD, 0xFFFD, -/* 08A0 */ 0xEDE6, 0xE4FA, 0xFFFD, 0xCFDE, 0xFFFD, 0xFFFD, 0xCED0, 0xD5D3, -/* 08A8 */ 0xF3F5, 0xF7AE, 0xFFFD, 0xFFFD, 0xEFC8, 0xFFFD, 0xCDF3, 0xF5CF, -/* 08B0 */ 0xE5F3, 0xF0C2, 0xEAF1, 0xFFFD, 0xD0A6, 0xD9DA, 0xF0AB, 0xE5C0, -/* 08B8 */ 0xFCB5, 0xCCA9, 0xFDC6, 0xEAB5, 0xFFFD, 0xE5AA, 0xDFBA, 0xE1DF, -/* 08C0 */ 0xFFFD, 0xDAD1, 0xE1B8, 0xFFFD, 0xE8F4, 0xD3FD, 0xDAE6, 0xF7B3, -/* 08C8 */ 0xD9B8, 0xD9B9, 0xEFC9, 0xF7CB, 0xDFAE, 0xE8F5, 0xF4CC, 0xDAFC, -/* 08D0 */ 0xD9E8, 0xFFFD, 0xF7EB, 0xF5C9, 0xFFFD, 0xF3BC, 0xFFFD, 0xDAD2, -/* 08D8 */ 0xE8B6, 0xFFFD, 0xFFFD, 0xD6CF, 0xF4BA, 0xFFFD, 0xF7C9, 0xFFFD, -/* 08E0 */ 0xFFFD, 0xCCAA, 0xFFFD, 0xFFFD, 0xF0C3, 0xCCD6, 0xD0D3, 0xFFFD, -/* 08E8 */ 0xD3BD, 0xDBFB, 0xFFFD, 0xCBE0, 0xD3E4, 0xF6F7, 0xFFFD, 0xFFFD, -/* 08F0 */ 0xD5BA, 0xF3CD, 0xCBE1, 0xF4AD, 0xFFFD, 0xFCAA, 0xE8F6, 0xFFFD, -/* 08F8 */ 0xDAE7, 0xCEE6, 0xFCAB, 0xD5BB, 0xFFFD, 0xFFFD, 0xF2A8, 0xE2A5, -/* 0900 */ 0xCDB9, 0xEAF2, 0xCBC7, 0xFFFD, 0xCDF4, 0xFFFD, 0xFFFD, 0xDBAF, -/* 0908 */ 0xEFD9, 0xCDBA, 0xFFFD, 0xFFFD, 0xFCF9, 0xDFF3, 0xCEE7, 0xDAC2, -/* 0910 */ 0xFFFD, 0xCFAD, 0xE7F9, 0xF8A8, 0xCAF2, 0xDFA4, 0xFFFD, 0xFFFD, -/* 0918 */ 0xD4C4, 0xCCD7, 0xE5C2, 0xCDBB, 0xFFFD, 0xEFDA, 0xEED8, 0xFFFD, -/* 0920 */ 0xDDA7, 0xE2A6, 0xD6B0, 0xF8CA, 0xFFFD, 0xFCFA, 0xFFFD, 0xD9FE, -/* 0928 */ 0xDDEC, 0xDAE8, 0xD4E0, 0xFFFD, 0xD6F9, 0xFFFD, 0xCDD7, 0xDED8, -/* 0930 */ 0xFFFD, 0xFFFD, 0xF2F8, 0xFFFD, 0xE4D6, 0xFFFD, 0xFFFD, 0xD0C5, -/* 0938 */ 0xF4AE, 0xFFFD, 0xDDA8, 0xEDC5, 0xF3D6, 0xFFFD, 0xFFFD, 0xDED9, -/* 0940 */ 0xE3E6, 0xD3A8, 0xFFFD, 0xDBB0, 0xFFFD, 0xFFFD, 0xE5DA, 0xE3BF, -/* 0948 */ 0xE0C1, 0xEFDB, 0xFFFD, 0xFFFD, 0xF0E9, 0xFFFD, 0xFFFD, 0xD7B2, -/* 0950 */ 0xD9E9, 0xFFFD, 0xFFFD, 0xD0FE, 0xFFFD, 0xECED, 0xD3A9, 0xFFFD, -/* 0958 */ 0xF2A9, 0xF0C4, 0xFFFD, 0xFFFD, 0xE2E2, 0xE9EF, 0xF9D1, 0xFFFD, -/* 0960 */ 0xFFFD, 0xE9D9, 0xE8DA, 0xDAC3, 0xDAC4, 0xD4C5, 0xFFFD, 0xE7FA, -/* 0968 */ 0xCDE0, 0xE3B0, 0xFFFD, 0xDBB2, 0xFBC4, 0xFFFD, 0xF3E3, 0xFFFD, -/* 0970 */ 0xD9A5, 0xFBE7, 0xDDCB, 0xD0D4, 0xFFFD, 0xE6B6, 0xE0AE, 0xFDDA, -/* 0978 */ 0xDCB5, 0xE0F8, 0xE7B1, 0xF5F0, 0xFFFD, 0xD8DC, 0xEDC6, 0xE1B9, -/* 0980 */ 0xFFFD, 0xE3C0, 0xF9C0, 0xE9F0, 0xFFFD, 0xFFFD, 0xD9DB, 0xFFFD, -/* 0988 */ 0xF3E4, 0xDCB6, 0xE4E9, 0xF0C5, 0xE3C1, 0xFCCC, 0xFCCD, 0xF2CB, -/* 0990 */ 0xFFFD, 0xF2CC, 0xF1DB, 0xFFFD, 0xFAD9, 0xFFFD, 0xF1B8, 0xFDF5, -/* 0998 */ 0xE0F9, 0xE7FB, 0xFCB7, 0xFCE4, 0xFBC5, 0xE3E7, 0xD8B9, 0xFFFD, -/* 09A0 */ 0xF6F8, 0xFFFD, 0xFFFD, 0xDCC5, 0xCCD8, 0xE0AF, 0xF4E7, 0xFFFD, -/* 09A8 */ 0xEFDC, 0xCFFC, 0xEFDD, 0xFFFD, 0xF2AA, 0xFDBE, 0xFFFD, 0xFFFD, -/* 09B0 */ 0xCAAC, 0xFDBB, 0xFDC7, 0xE7B2, 0xFFFD, 0xEAD1, 0xDFF4, 0xD1EC, -/* 09B8 */ 0xE4DE, 0xE5C3, 0xD9A6, 0xFFFD, 0xFFFD, 0xCDBC, 0xFFFD, 0xF3E5, -/* 09C0 */ 0xEDD5, 0xFFFD, 0xFFFD, 0xD9BA, 0xEDE7, 0xFBB5, 0xF8EC, 0xE0E7, -/* 09C8 */ 0xFFFD, 0xCCD9, 0xFFFD, 0xFFFD, 0xD4C6, 0xE7A5, 0xFFFD, 0xD5F5, -/* 09D0 */ 0xD3BE, 0xFFFD, 0xFCFB, 0xE4F2, 0xFFFD, 0xFFFD, 0xDFF5, 0xFFFD, -/* 09D8 */ 0xFFFD, 0xE8F8, 0xF8ED, 0xFFFD, 0xFFFD, 0xCEC7, 0xE8D8, 0xFFFD, -/* 09E0 */ 0xCDD8, 0xE7D6, 0xCCDA, 0xFFFD, 0xFFFD, 0xCAE3, 0xDFF6, 0xF0C7, -/* 09E8 */ 0xF0C6, 0xFFFD, 0xD8BA, 0xFFFD, 0xF1F4, 0xF4F0, 0xF5CC, 0xFFFD, -/* 09F0 */ 0xFFFD, 0xFCE5, 0xEAC5, 0xEAF3, 0xFFFD, 0xDDDB, 0xFFFD, 0xDCD7, -/* 09F8 */ 0xDEFD, 0xF2F9, 0xFFFD, 0xD5C7, 0xD8D0, 0xFFFD, 0xF0C8, 0xD1A1, -/* 0A00 */ 0xD1A2, 0xD9D4, 0xD6E8, 0xD9CA, 0xFFFD, 0xDAB1, 0xD8C7, 0xDCE2, -/* 0A08 */ 0xF3CE, 0xF5F4, 0xFFFD, 0xFFFD, 0xF1B9, 0xFFFD, 0xFFFD, 0xDAD3, -/* 0A10 */ 0xFFFD, 0xF6EA, 0xCFF5, 0xFFFD, 0xFFFD, 0xFDAE, 0xCAD2, 0xFFFD, -/* 0A18 */ 0xFFFD, 0xDFB4, 0xD7DD, 0xFABA, 0xEEA7, 0xF5BD, 0xFFFD, 0xF8F5, -/* 0A20 */ 0xFFFD, 0xFFFD, 0xEDE8, 0xD4E1, 0xFFFD, 0xD1A3, 0xE1D6, 0xF9F8, -/* 0A28 */ 0xFFFD, 0xDBCA, 0xCBF9, 0xD4D4, 0xFFFD, 0xD9DC, 0xFFFD, 0xEEBE, -/* 0A30 */ 0xFFFD, 0xF7ED, 0xD2EE, 0xFFFD, 0xFFFD, 0xE1E6, 0xF7F9, 0xDDED, -/* 0A38 */ 0xFFFD, 0xE8DB, 0xFFFD, 0xDBB3, 0xD1F7, 0xE0B0, 0xFFFD, 0xFFFD, -/* 0A40 */ 0xD4E2, 0xFFFD, 0xF6D7, 0xFFFD, 0xD7F9, 0xFFFD, 0xFFFD, 0xD8DD, -/* 0A48 */ 0xFFFD, 0xCDFD, 0xF2AB, 0xCDBD, 0xF8C2, 0xFFFD, 0xFFFD, 0xF2AC, -/* 0A50 */ 0xFFFD, 0xFFFD, 0xCAAD, 0xCAAE, 0xCFAE, 0xDBDA, 0xD9BB, 0xCAF3, -/* 0A58 */ 0xF6D3, 0xE6F8, 0xEAF5, 0xEAF6, 0xFFFD, 0xFFFD, 0xF6F9, 0xCFAF, -/* 0A60 */ 0xFFFD, 0xFFFD, 0xCAD3, 0xFFFD, 0xFFFD, 0xCAAF, 0xD2B0, 0xF1BA, -/* 0A68 */ 0xFFFD, 0xD7B3, 0xE3C3, 0xF3FD, 0xDEDA, 0xDEDB, 0xFFFD, 0xFFFD, -/* 0A70 */ 0xEFDE, 0xE2E3, 0xEEFB, 0xFFFD, 0xFFFD, 0xDFF7, 0xD7CA, 0xCEE8, -/* 0A78 */ 0xDBDB, 0xFAB7, 0xD0C6, 0xFFFD, 0xFFFD, 0xCCAB, 0xEEA8, 0xFFFD, -/* 0A80 */ 0xFFFD, 0xCBFA, 0xF9F9, 0xCCFD, 0xD3FE, 0xF2EE, 0xFFFD, 0xD4D5, -/* 0A88 */ 0xDFCD, 0xFFFD, 0xFCB8, 0xD1D0, 0xCAD4, 0xFFFD, 0xD5D9, 0xEEA9, -/* 0A90 */ 0xF6BC, 0xFFFD, 0xFFFD, 0xCCDB, 0xF0C9, 0xFFFD, 0xFCFC, 0xFFFD, -/* 0A98 */ 0xE8C9, 0xF4FE, 0xE7FC, 0xD7DE, 0xDEDC, 0xFFFD, 0xF0AC, 0xCCFE, -/* 0AA0 */ 0xCDE1, 0xFFFD, 0xE1BA, 0xFFFD, 0xDBEF, 0xDAB2, 0xD1A5, 0xDCB8, -/* 0AA8 */ 0xD8F6, 0xFFFD, 0xD1A4, 0xFFFD, 0xCDE2, 0xDCEA, 0xFFFD, 0xFFFD, -/* 0AB0 */ 0xF0F7, 0xFFFD, 0xF0CA, 0xD0BE, 0xFFFD, 0xDDDC, 0xD4D6, 0xD3D6, -/* 0AB8 */ 0xEDD0, 0xCDA1, 0xD4A1, 0xCEB2, 0xE3D5, 0xF5D0, 0xE6CB, 0xFFFD, -/* 0AC0 */ 0xF5F1, 0xF9A3, 0xE0DB, 0xF6EB, 0xFFFD, 0xCBF1, 0xFFFD, 0xD9EA, -/* 0AC8 */ 0xF5A2, 0xD7D1, 0xFFFD, 0xD1F8, 0xEAF8, 0xEAF9, 0xDAB3, 0xEFDF, -/* 0AD0 */ 0xFFFD, 0xFFFD, 0xF1EF, 0xFFFD, 0xE5F6, 0xEEBF, 0xE2E4, 0xD0BF, -/* 0AD8 */ 0xFFFD, 0xFAAC, 0xF5D1, 0xE7B3, 0xF2CE, 0xDBB4, 0xFCCE, 0xFFFD, -/* 0AE0 */ 0xDDEE, 0xCDBE, 0xFFFD, 0xDAE9, 0xCFB0, 0xF7D9, 0xF3E6, 0xFFFD, -/* 0AE8 */ 0xFFFD, 0xCED9, 0xCEAA, 0xFFFD, 0xCBC8, 0xD0A7, 0xFFFD, 0xF0CB, -/* 0AF0 */ 0xFFFD, 0xD0C7, 0xFFFD, 0xFFFD, 0xE4C5, 0xD5DA, 0xFFFD, 0xD7A7, -/* 0AF8 */ 0xEEC0, 0xFFFD, 0xF8F6, 0xF5D2, 0xEDE9, 0xFFFD, 0xD9BC, 0xFFFD, -/* 0B00 */ 0xE5C6, 0xF5A3, 0xFFFD, 0xFFFD, 0xDAD4, 0xE2A7, 0xFBFC, 0xFFFD, -/* 0B08 */ 0xFFFD, 0xF1DC, 0xE8FA, 0xFFFD, 0xFFFD, 0xCEE9, 0xE9F8, 0xE2E5, -/* 0B10 */ 0xD0B9, 0xD4F2, 0xD1A6, 0xFFFD, 0xDFCE, 0xE5E5, 0xD0D5, 0xCBFE, -/* 0B18 */ 0xEDEA, 0xD4A2, 0xCFF6, 0xD5EA, 0xF1EE, 0xCFED, 0xFFFD, 0xEDEB, -/* 0B20 */ 0xFDE2, 0xF3AD, 0xFFFD, 0xFDDB, 0xD1A7, 0xFFFD, 0xFFFD, 0xFDE3, -/* 0B28 */ 0xCEB3, 0xFDE4, 0xFACE, 0xCAB0, 0xFFFD, 0xF7A7, 0xFFFD, 0xCFB1, -/* 0B30 */ 0xE6A2, 0xFFFD, 0xFCB6, 0xF2AD, 0xEFE1, 0xF3AE, 0xDCC6, 0xD9EB, -/* 0B38 */ 0xD5F6, 0xCFFD, 0xFFFD, 0xFFFD, 0xDEDD, 0xE4EA, 0xF2CF, 0xFFFD, -/* 0B40 */ 0xF7BF, 0xFFFD, 0xFFFD, 0xE2E6, 0xE2A8, 0xE3D6, 0xFFFD, 0xEDD1, -/* 0B48 */ 0xD6B1, 0xDEB2, 0xFFFD, 0xFFFD, 0xE0E8, 0xFFFD, 0xFFFD, 0xD3AB, -/* 0B50 */ 0xFFFD, 0xEBDC, 0xFFFD, 0xFFFD, 0xDFAF, 0xFFFD, 0xCAC3, 0xFFFD, -/* 0B58 */ 0xFFFD, 0xEEFC, 0xFFFD, 0xFDC3, 0xEBF6, 0xCFB2, 0xD9EC, 0xFFFD, -/* 0B60 */ 0xD9BD, 0xFFFD, 0xD8DF, 0xFFFD, 0xFFFD, 0xD4B8, 0xEBBE, 0xDDEF, -/* 0B68 */ 0xFFFD, 0xDDF0, 0xDDF1, 0xDDF2, 0xFFFD, 0xFFFD, 0xD9BE, 0xFBC6, -/* 0B70 */ 0xCFB3, 0xE4AB, 0xFFFD, 0xDAC5, 0xFFFD, 0xD8EC, 0xE2A9, 0xFFFD, -/* 0B78 */ 0xFFFD, 0xDEBC, 0xE7B5, 0xDBF0, 0xFFFD, 0xEFE2, 0xF1F0, 0xCFB4, -/* 0B80 */ 0xDBF1, 0xFFFD, 0xE0B1, 0xDFA5, 0xFFFD, 0xF9D2, 0xFFFD, 0xFFFD, -/* 0B88 */ 0xE7FD, 0xFFFD, 0xFFFD, 0xE6A3, 0xFBF1, 0xCBB0, 0xF2AE, 0xCDE7, -/* 0B90 */ 0xFFFD, 0xE8DC, 0xFFFD, 0xFFFD, 0xE7D7, 0xFFFD, 0xFFFD, 0xF7C0, -/* 0B98 */ 0xFFFD, 0xD0E3, 0xCCBD, 0xFFFD, 0xFFFD, 0xD1A9, 0xDDCC, 0xFFFD, -/* 0BA0 */ 0xFFFD, 0xE3FE, 0xD1AA, 0xE8AA, 0xFFFD, 0xEAB6, 0xF9FA, 0xE6CC, -/* 0BA8 */ 0xF6D8, 0xD9CB, 0xFFFD, 0xD9D2, 0xD3CB, 0xD8F7, 0xDAA9, 0xF5F8, -/* 0BB0 */ 0xFFFD, 0xFFFD, 0xDEDE, 0xF2AF, 0xF8A9, 0xD8C8, 0xFFFD, 0xFFFD, -/* 0BB8 */ 0xEEC1, 0xDDF3, 0xEAFA, 0xFFFD, 0xF6BD, 0xE1BB, 0xCDBF, 0xF4D4, -/* 0BC0 */ 0xE6CD, 0xFFFD, 0xFCCF, 0xFBA2, 0xFFFD, 0xE0DC, 0xF4BB, 0xDAD5, -/* 0BC8 */ 0xFFFD, 0xF9B2, 0xFBF2, 0xFFFD, 0xDBF6, 0xFFFD, 0xDEDF, 0xF8DC, -/* 0BD0 */ 0xF7EE, 0xEBE8, 0xFFFD, 0xD2FA, 0xFFFD, 0xFFFD, 0xF1BC, 0xFFFD, -/* 0BD8 */ 0xFFFD, 0xFADA, 0xFFFD, 0xFFFD, 0xDAEA, 0xDAC6, 0xF7C1, 0xFFFD, -/* 0BE0 */ 0xFFFD, 0xE7B6, 0xE5C7, 0xD6AC, 0xE1A9, 0xFFFD, 0xE2AA, 0xFFFD, -/* 0BE8 */ 0xD5A6, 0xFFFD, 0xFFFD, 0xD4D7, 0xF2D0, 0xFFFD, 0xEAFB, 0xFFFD, -/* 0BF0 */ 0xE0DD, 0xFBF3, 0xF1BD, 0xFFFD, 0xFFFD, 0xE2E7, 0xFDD7, 0xFFFD, -/* 0BF8 */ 0xCEC8, 0xEAB7, 0xFFFD, 0xFCC0, 0xFFFD, 0xFDE7, 0xF7EF, 0xFFFD, -/* 0C00 */ 0xFFFD, 0xD7B5, 0xEFBA, 0xF1DD, 0xFFFD, 0xDEB3, 0xE8CB, 0xFFFD, -/* 0C08 */ 0xFFFD, 0xF8DD, 0xFFFD, 0xFFFD, 0xFBC7, 0xD5C8, 0xFFFD, 0xD7DF, -/* 0C10 */ 0xFFFD, 0xDDA9, 0xE9B1, 0xFFFD, 0xFFFD, 0xFAAD, 0xF6D9, 0xFAF4, -/* 0C18 */ 0xE6EE, 0xFFFD, 0xCCDC, 0xE1BC, 0xE0EF, 0xFFFD, 0xFFFD, 0xE9BF, -/* 0C20 */ 0xFCFD, 0xE6CE, 0xFFFD, 0xFFFD, 0xE1D7, 0xFFFD, 0xE6CF, 0xFFFD, -/* 0C28 */ 0xF4F1, 0xE4F3, 0xFFFD, 0xFFFD, 0xE4FB, 0xFFFD, 0xFFFD, 0xF9E4, -/* 0C30 */ 0xEFE3, 0xFFFD, 0xFFFD, 0xCFEE, 0xF6BE, 0xE0B2, 0xFCFE, 0xD1AB, -/* 0C38 */ 0xFBC8, 0xFFFD, 0xE2D7, 0xD4A3, 0xF0F8, 0xD7A8, 0xE1E7, 0xFFFD, -/* 0C40 */ 0xFFFD, 0xD3BF, 0xEFE4, 0xFFFD, 0xD7C5, 0xEBE2, 0xFFFD, 0xFFFD, -/* 0C48 */ 0xFCE7, 0xFFFD, 0xFFFD, 0xE4A2, 0xFFFD, 0xE2E8, 0xFFFD, 0xE6D0, -/* 0C50 */ 0xFFFD, 0xFBE8, 0xF4E8, 0xE5F4, 0xF4BC, 0xF4D5, 0xDFB6, 0xFFFD, -/* 0C58 */ 0xFCB9, 0xEEC2, 0xCAF5, 0xEFE5, 0xCBE2, 0xD4A4, 0xFFFD, 0xDEE0, -/* 0C60 */ 0xDAFD, 0xE4C6, 0xE8BE, 0xE0DE, 0xF6B4, 0xEAD2, 0xFFFD, 0xF9FB, -/* 0C68 */ 0xFFFD, 0xFFFD, 0xE0C2, 0xFFFD, 0xCAE4, 0xFFFD, 0xE7B7, 0xFFFD, -/* 0C70 */ 0xEAFD, 0xFFFD, 0xD9DD, 0xFFFD, 0xDAB4, 0xEEAA, 0xFBE9, 0xDBCB, -/* 0C78 */ 0xDAB5, 0xF1BE, 0xFFFD, 0xFFFD, 0xD3AC, 0xFBC9, 0xFFFD, 0xDFCF, -/* 0C80 */ 0xFFFD, 0xFFFD, 0xD3C0, 0xE3D7, 0xFFFD, 0xEFE6, 0xFCD0, 0xF5D3, -/* 0C88 */ 0xFFFD, 0xFFFD, 0xECDC, 0xF7B7, 0xFFFD, 0xFFFD, 0xEAB8, 0xD1F9, -/* 0C90 */ 0xD7B6, 0xCFB5, 0xFFFD, 0xD9A8, 0xFFFD, 0xFFFD, 0xECEE, 0xFFFD, -/* 0C98 */ 0xFFFD, 0xDDAA, 0xCDA2, 0xE8AE, 0xE1BD, 0xFFFD, 0xF2D1, 0xDBB5, -/* 0CA0 */ 0xFFFD, 0xF3E7, 0xD8FE, 0xFCD1, 0xFFFD, 0xEDB2, 0xF4AF, 0xFFFD, -/* 0CA8 */ 0xFBA3, 0xFFFD, 0xFFFD, 0xFCC1, 0xFFFD, 0xEEAB, 0xD4A5, 0xCDE3, -/* 0CB0 */ 0xD8BB, 0xFFFD, 0xE5DB, 0xF8F7, 0xD7A9, 0xFFFD, 0xCBC9, 0xFFFD, -/* 0CB8 */ 0xFFFD, 0xE6D1, 0xF0CC, 0xD8AE, 0xFFFD, 0xF9D3, 0xD5FE, 0xD8BC, -/* 0CC0 */ 0xF2B0, 0xE2AB, 0xF3E8, 0xEDEC, 0xFFFD, 0xE7B8, 0xDAFE, 0xFFFD, -/* 0CC8 */ 0xFFFD, 0xCCBE, 0xFFFD, 0xFFFD, 0xF2FC, 0xDAEB, 0xFFFD, 0xE2D8, -/* 0CD0 */ 0xEDD6, 0xFFFD, 0xFFFD, 0xD6D1, 0xE0B3, 0xFFFD, 0xFFFD, 0xFCD2, -/* 0CD8 */ 0xFFFD, 0xEBC8, 0xD3C1, 0xF0CD, 0xFFFD, 0xCFF7, 0xEDD2, 0xFFFD, -/* 0CE0 */ 0xD4D8, 0xDCC9, 0xD7F1, 0xFFFD, 0xFFFD, 0xDFBB, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0xF3A5, 0xF1BF, 0xF8B1, 0xFFFD, 0xE9FA, 0xFBCB, 0xFFFD, 0xFFFD, -/* 0CF0 */ 0xCAD5, 0xF9D4, 0xF7CA, 0xFFFD, 0xFFFD, 0xD6C8, 0xFCE8, 0xF3BD, -/* 0CF8 */ 0xFFFD, 0xEEFE, 0xFFFD, 0xE7FE, 0xD3B6, 0xFFFD, 0xCCAD, 0xF6FA, -/* 0D00 */ 0xD6B2, 0xD2D8, 0xF0AD, 0xFBCC, 0xEBA1, 0xFFFD, 0xFFFD, 0xD4A6, -/* 0D08 */ 0xFBCD, 0xFFFD, 0xD5BD, 0xF1DF, 0xFFFD, 0xFFFD, 0xF6FB, 0xFFFD, -/* 0D10 */ 0xDEB4, 0xD5EB, 0xFFFD, 0xFFFD, 0xE5C8, 0xFBA4, 0xD4B9, 0xFFFD, -/* 0D18 */ 0xFFFD, 0xDEE1, 0xFFFD, 0xE4A3, 0xD7B7, 0xFFFD, 0xF8EE, 0xDEB5, -/* 0D20 */ 0xFFFD, 0xFFFD, 0xD6D2, 0xFFFD, 0xF9D5, 0xE7BA, 0xEBD5, 0xD5F7, -/* 0D28 */ 0xEFE7, 0xE1BE, 0xD6E9, 0xD6EE, 0xFBA5, 0xE1EE, 0xEDC7, 0xEEAC, -/* 0D30 */ 0xFDDC, 0xEDB3, 0xCEC9, 0xEFE8, 0xFFFD, 0xFFFD, 0xE1BF, 0xFADB, -/* 0D38 */ 0xCBE3, 0xF7A9, 0xFFFD, 0xFBA6, 0xF1C0, 0xEDC8, 0xEFC3, 0xD6AD, -/* 0D40 */ 0xFFFD, 0xFFFD, 0xFDCE, 0xFBF4, 0xD5A7, 0xF1F6, 0xFFFD, 0xE6D3, -/* 0D48 */ 0xE5EA, 0xFFFD, 0xFFFD, 0xF1E0, 0xDBCC, 0xDDCD, 0xD4C8, 0xFFFD, -/* 0D50 */ 0xFFFD, 0xD9ED, 0xFDC8, 0xFFFD, 0xD6A1, 0xFDBF, 0xFFFD, 0xFCD3, -/* 0D58 */ 0xFFFD, 0xEFA1, 0xFFFD, 0xE7BC, 0xD1EE, 0xFFFD, 0xFFFD, 0xE6D5, -/* 0D60 */ 0xFFFD, 0xFFFD, 0xE9F2, 0xFFFD, 0xDFB0, 0xD8E0, 0xFCBA, 0xFDAF, -/* 0D68 */ 0xF0CE, 0xFFFD, 0xDBE1, 0xFFFD, 0xFFFD, 0xE5C9, 0xFFFD, 0xEDB4, -/* 0D70 */ 0xE9FB, 0xEAA8, 0xFDB7, 0xFFFD, 0xFFFD, 0xFBA7, 0xFFFD, 0xE9C2, -/* 0D78 */ 0xE2D9, 0xFFFD, 0xFFFD, 0xDCEC, 0xFDF8, 0xFDF9, 0xF6BF, 0xFFFD, -/* 0D80 */ 0xFFFD, 0xE7A7, 0xFFFD, 0xE6D7, 0xD4F3, 0xD4C9, 0xD6FA, 0xFFFD, -/* 0D88 */ 0xD7F2, 0xFFFD, 0xE1C0, 0xFFFD, 0xDBE2, 0xE6D8, 0xF0CF, 0xF3BE, -/* 0D90 */ 0xE2AC, 0xF5B7, 0xE0F0, 0xFDB8, 0xE3E8, 0xFFFD, 0xD4A7, 0xE8FC, -/* 0D98 */ 0xFAD2, 0xF0D0, 0xFFFD, 0xF7F0, 0xEEB3, 0xFFFD, 0xFFFD, 0xEABA, -/* 0DA0 */ 0xFFFD, 0xEAD3, 0xFFFD, 0xFFFD, 0xEDC9, 0xDDAB, 0xE5AC, 0xFDA1, -/* 0DA8 */ 0xFFFD, 0xDFD0, 0xECB3, 0xFFFD, 0xDFD1, 0xEDED, 0xF8B8, 0xF7FA, -/* 0DB0 */ 0xD4BA, 0xE4B3, 0xFFFD, 0xE9DA, 0xFFFD, 0xDEB6, 0xFFFD, 0xD9BF, -/* 0DB8 */ 0xFFFD, 0xD9C0, 0xD6EF, 0xD9CC, 0xFFFD, 0xDAAA, 0xCCB2, 0xFFFD, -/* 0DC0 */ 0xFFFD, 0xDFF9, 0xD7E0, 0xCCB3, 0xFFFD, 0xFFFD, 0xDBF3, 0xDFD2, -/* 0DC8 */ 0xFFFD, 0xCECA, 0xFFFD, 0xEEDA, 0xE4E4, 0xFFFD, 0xFBCF, 0xCFB7, -/* 0DD0 */ 0xFFFD, 0xEEC3, 0xD7E1, 0xFAF5, 0xFFFD, 0xFFFD, 0xD5C9, 0xF8AC, -/* 0DD8 */ 0xD8ED, 0xE3C4, 0xF0F1, 0xE0FA, 0xEEC4, 0xD9DE, 0xEBA2, 0xEBA3, -/* 0DE0 */ 0xFCC2, 0xEABB, 0xE8AB, 0xDEE2, 0xEDEF, 0xFFFD, 0xE8A3, 0xD4BC, -/* 0DE8 */ 0xFFFD, 0xFCEA, 0xE7BE, 0xFFFD, 0xFCF2, 0xFFFD, 0xFFFD, 0xD6B4, -/* 0DF0 */ 0xFFFD, 0xFFFD, 0xE2AE, 0xFFFD, 0xD3B7, 0xFACC, 0xFADC, 0xFFFD, -/* 0DF8 */ 0xEDB5, 0xE1E3, 0xFFFD, 0xE8AC, 0xFFFD, 0xE8DD, 0xFFFD, 0xFFFD, -/* 0E00 */ 0xEFE9, 0xF4BD, 0xFFFD, 0xCFB8, 0xE9DB, 0xD1AC, 0xEBC9, 0xFFFD, -/* 0E08 */ 0xE8CC, 0xD6BC, 0xD3E5, 0xDAD6, 0xFFFD, 0xCAB1, 0xDAC8, 0xDFA6, -/* 0E10 */ 0xFFFD, 0xF9B3, 0xF2D2, 0xFFFD, 0xCAC4, 0xCECB, 0xFFFD, 0xFFFD, -/* 0E18 */ 0xCDF5, 0xFDB0, 0xD5A8, 0xFFFD, 0xF1C1, 0xFFFD, 0xFFFD, 0xE2E9, -/* 0E20 */ 0xDCCA, 0xECB4, 0xFAC0, 0xFFFD, 0xFFFD, 0xFBA8, 0xD0A8, 0xFFFD, -/* 0E28 */ 0xFFFD, 0xDAEC, 0xD9EE, 0xFFFD, 0xE0FB, 0xEFEA, 0xFADE, 0xFFFD, -/* 0E30 */ 0xFFFD, 0xE0C4, 0xFFFD, 0xCFB9, 0xFFFD, 0xD5CA, 0xD7E2, 0xE2AF, -/* 0E38 */ 0xFFFD, 0xD7B8, 0xEFA2, 0xE2DA, 0xF6FC, 0xFFFD, 0xFFFD, 0xFBD0, -/* 0E40 */ 0xD1AD, 0xFFFD, 0xCDE4, 0xFFFD, 0xD1AE, 0xDCED, 0xE8CE, 0xFFFD, -/* 0E48 */ 0xF0F9, 0xCEB5, 0xE6FC, 0xFFFD, 0xFFFD, 0xD7FB, 0xD0D6, 0xDDF5, -/* 0E50 */ 0xF7F1, 0xFFFD, 0xF6FD, 0xFFFD, 0xDBF7, 0xFBEA, 0xE9DC, 0xD9C1, -/* 0E58 */ 0xFFFD, 0xF5F2, 0xE0C5, 0xF9C2, 0xFFFD, 0xEABC, 0xFFFD, 0xD2C5, -/* 0E60 */ 0xFBD1, 0xE7C0, 0xEBA5, 0xFFFD, 0xDFFA, 0xE3A2, 0xD7B9, 0xFFFD, -/* 0E68 */ 0xE9C3, 0xFFFD, 0xE8FD, 0xE8AF, 0xFFFD, 0xFFFD, 0xF2D3, 0xFBA9, -/* 0E70 */ 0xD8A5, 0xD1AF, 0xD7E3, 0xE0C6, 0xFFFD, 0xD6A2, 0xFFFD, 0xEDF0, -/* 0E78 */ 0xFCD4, 0xFFFD, 0xDAD7, 0xCCDF, 0xFFFD, 0xF2D4, 0xFFFD, 0xD1B0, -/* 0E80 */ 0xFFFD, 0xCCE0, 0xFFFD, 0xDBFD, 0xF3BF, 0xFFFD, 0xF0D1, 0xFCBB, -/* 0E88 */ 0xFFFD, 0xE2B0, 0xFFFD, 0xFFFD, 0xE6A5, 0xDFDE, 0xFFFD, 0xE0C7, -/* 0E90 */ 0xCEB6, 0xFFFD, 0xF3C0, 0xFFFD, 0xCDFE, 0xFBD2, 0xFFFD, 0xF8F8, -/* 0E98 */ 0xF7FB, 0xFFFD, 0xFFFD, 0xE8BF, 0xDCBA, 0xFFFD, 0xFFFD, 0xCCB4, -/* 0EA0 */ 0xE8B8, 0xFFFD, 0xFFFD, 0xCAF6, 0xFFFD, 0xE4A4, 0xF4D6, 0xDFA7, -/* 0EA8 */ 0xFFFD, 0xDFE7, 0xE1C1, 0xFFFD, 0xE9C4, 0xFFFD, 0xFFFD, 0xDCCB, -/* 0EB0 */ 0xE9C5, 0xEFA3, 0xEBA6, 0xCBA3, 0xE3E9, 0xD1FB, 0xEFA4, 0xFFFD, -/* 0EB8 */ 0xEFEB, 0xCDA3, 0xFFFD, 0xFFFD, 0xE8E6, 0xFFFD, 0xEFA5, 0xFFFD, -/* 0EC0 */ 0xD3CC, 0xDAED, 0xD7BA, 0xFFFD, 0xF2D5, 0xF5E5, 0xD9EF, 0xF9B4, -/* 0EC8 */ 0xFFFD, 0xFFFD, 0xD5D4, 0xFDCF, 0xF1E1, 0xECB6, 0xFBFE, 0xD3D7, -/* 0ED0 */ 0xFFFD, 0xD1B1, 0xFFFD, 0xCBB1, 0xCBB2, 0xF1C2, 0xFFFD, 0xFFFD, -/* 0ED8 */ 0xF4E1, 0xF9B5, 0xFFFD, 0xFFFD, 0xE1C3, 0xE1C2, 0xFFFD, 0xEBF7, -/* 0EE0 */ 0xF8DE, 0xF9AA, 0xCAF7, 0xFFFD, 0xEDB7, 0xFFFD, 0xFFFD, 0xD3B8, -/* 0EE8 */ 0xF2D6, 0xFFFD, 0xFFFD, 0xD4D9, 0xEEC5, 0xF2F0, 0xCAB2, 0xFFFD, -/* 0EF0 */ 0xFFFD, 0xDCBB, 0xFFFD, 0xF1F8, 0xE5CA, 0xFFFD, 0xF6C0, 0xFDDD, -/* 0EF8 */ 0xFFFD, 0xFFFD, 0xD4E3, 0xCCE2, 0xFFFD, 0xF7D4, 0xD3C3, 0xFFFD, -/* 0F00 */ 0xD8A6, 0xFFFD, 0xF6C1, 0xDDF6, 0xFFFD, 0xCDC0, 0xE8B0, 0xF4B0, -/* 0F08 */ 0xF3EA, 0xDAEE, 0xFFFD, 0xD7BB, 0xFFFD, 0xE2B1, 0xE4DF, 0xFFFD, -/* 0F10 */ 0xCAD6, 0xF6C2, 0xFFFD, 0xFFFD, 0xEFBB, 0xD4FD, 0xFFFD, 0xFFFD, -/* 0F18 */ 0xE0C8, 0xE8B9, 0xFFFD, 0xEFA6, 0xCDA4, 0xFFFD, 0xFFFD, 0xD4F4, -/* 0F20 */ 0xDBA1, 0xDBDC, 0xDBDD, 0xEEDC, 0xFFFD, 0xCBCB, 0xFCD5, 0xCEEB, -/* 0F28 */ 0xFFFD, 0xCDC1, 0xFFFD, 0xFFFD, 0xFBD3, 0xD9A9, 0xFFFD, 0xFFFD, -/* 0F30 */ 0xE9DD, 0xDBCD, 0xFFFD, 0xFFFD, 0xDDCE, 0xFFFD, 0xE7C3, 0xFFFD, -/* 0F38 */ 0xECCC, 0xE0FC, 0xD4A8, 0xFFFD, 0xEDD3, 0xD8EF, 0xFFFD, 0xF2D7, -/* 0F40 */ 0xFFFD, 0xCAF8, 0xDAEF, 0xFFFD, 0xFFFD, 0xD6D4, 0xD8EE, 0xFFFD, -/* 0F48 */ 0xF2C1, 0xDAF0, 0xFFFD, 0xE2EA, 0xFFFD, 0xFFFD, 0xE0FD, 0xFFFD, -/* 0F50 */ 0xFFFD, 0xD8F8, 0xF7AF, 0xDAB6, 0xFFFD, 0xCAD7, 0xF2D8, 0xFFFD, -/* 0F58 */ 0xD8F9, 0xCFEF, 0xD9C2, 0xFFFD, 0xF0D2, 0xFFFD, 0xE4D1, 0xE2B2, -/* 0F60 */ 0xFFFD, 0xD4BD, 0xFFFD, 0xFFFD, 0xD9CE, 0xCDC2, 0xE7DA, 0xE2EB, -/* 0F68 */ 0xD6FC, 0xFFFD, 0xFFFD, 0xCAF9, 0xFFFD, 0xFFFD, 0xD4DA, 0xF4D7, -/* 0F70 */ 0xCCA1, 0xFFFD, 0xFFFD, 0xCFBA, 0xD9C3, 0xD0E8, 0xE3C5, 0xEBF8, -/* 0F78 */ 0xFFFD, 0xF2B1, 0xD3AD, 0xE8E1, 0xCEEC, 0xF2B2, 0xF3F6, 0xF6DB, -/* 0F80 */ 0xF8DF, 0xFFFD, 0xF7F2, 0xD7BC, 0xCCE3, 0xFFFD, 0xFFFD, 0xE6DB, -/* 0F88 */ 0xD6DE, 0xE4F4, 0xE1EF, 0xFFFD, 0xFFFD, 0xDDF8, 0xDCA1, 0xFFFD, -/* 0F90 */ 0xE0B5, 0xFCAC, 0xFCAD, 0xD8A7, 0xD6F0, 0xF3AF, 0xFFFD, 0xFFFD, -/* 0F98 */ 0xCDA5, 0xFFFD, 0xDAF1, 0xCCE4, 0xFFFD, 0xFFFD, 0xD1B4, 0xD5EC, -/* 0FA0 */ 0xD5F8, 0xDAF3, 0xDEE4, 0xFFFD, 0xDEE5, 0xD1B5, 0xD1B6, 0xD1B7, -/* 0FA8 */ 0xF2B3, 0xF0D3, 0xF2B4, 0xFFFD, 0xFFFD, 0xF0D4, 0xCBE4, 0xFBD4, -/* 0FB0 */ 0xF5E6, 0xE3EA, 0xFFFD, 0xDEE6, 0xDFD4, 0xFFFD, 0xFFFD, 0xF8F9, -/* 0FB8 */ 0xD6DF, 0xFFFD, 0xD0D7, 0xFCA1, 0xEFEE, 0xDCD8, 0xFFFD, 0xE9DF, -/* 0FC0 */ 0xE5DD, 0xFDFB, 0xFFFD, 0xFFFD, 0xE0C9, 0xD6C9, 0xFFFD, 0xFFFD, -/* 0FC8 */ 0xD4AA, 0xFFFD, 0xE5CC, 0xD0D8, 0xFCA2, 0xD4BE, 0xE2B3, 0xDEE7, -/* 0FD0 */ 0xDCBC, 0xD2B6, 0xF5D5, 0xCEA1, 0xF5A9, 0xFFFD, 0xFFFD, 0xDDF9, -/* 0FD8 */ 0xFFFD, 0xFFFD, 0xDDFA, 0xF6DF, 0xFFFD, 0xF2DA, 0xE4EB, 0xFFFD, -/* 0FE0 */ 0xF2F1, 0xE1AA, 0xFFFD, 0xFFFD, 0xCAD9, 0xFFFD, 0xFFFD, 0xEFEF, -/* 0FE8 */ 0xFFFD, 0xF5AA, 0xECF9, 0xFFFD, 0xFFFD, 0xF8AD, 0xFFFD, 0xF2C2, -/* 0FF0 */ 0xF6C3, 0xFFFD, 0xD7D2, 0xFFFD, 0xFFFD, 0xF9A2, 0xF0D6, 0xF0FA, -/* 0FF8 */ 0xFFFD, 0xFFFD, 0xF6E0, 0xE9F3, 0xF2C3, 0xD4AB, 0xCAB3, 0xCDA6, -/* 1000 */ 0xFFFD, 0xCDC3, 0xCDDA, 0xD9CF, 0xFFFD, 0xFFFD, 0xF6C4, 0xEEDD, -/* 1008 */ 0xE7C4, 0xDFE2, 0xE7DB, 0xE8B1, 0xFFFD, 0xFCAE, 0xFAEB, 0xFFFD, -/* 1010 */ 0xCFBC, 0xFFFD, 0xFFFD, 0xCFE2, 0xCDF6, 0xFFFD, 0xFFFD, 0xEFF0, -/* 1018 */ 0xFFFD, 0xF4BE, 0xFFFD, 0xD4CD, 0xFFFD, 0xFFFD, 0xF3B8, 0xF2F2, -/* 1020 */ 0xF3EB, 0xFFFD, 0xF0D7, 0xFFFD, 0xFFFD, 0xCFD7, 0xE8C0, 0xE8C1, -/* 1028 */ 0xCFE3, 0xE9A2, 0xF3C1, 0xD0AB, 0xFFFD, 0xD4E4, 0xFFFD, 0xFFFD, -/* 1030 */ 0xEFBC, 0xD8A1, 0xD9DF, 0xFFFD, 0xF3D7, 0xDCBD, 0xFFFD, 0xCCE5, -/* 1038 */ 0xEDF1, 0xFFFD, 0xFFFD, 0xF1E2, 0xFFFD, 0xD4DB, 0xE2B5, 0xFFFD, -/* 1040 */ 0xFFFD, 0xCAE6, 0xFFFD, 0xD3AE, 0xCCE6, 0xFFFD, 0xFFFD, 0xF1D3, -/* 1048 */ 0xF5E7, 0xFBEE, 0xFFFD, 0xE1C5, 0xDFE9, 0xFFFD, 0xEEDE, 0xFFFD, -/* 1050 */ 0xFFFD, 0xF7C2, 0xFFFD, 0xD8A2, 0xF0AF, 0xD6BD, 0xF9B6, 0xFFFD, -/* 1058 */ 0xFFFD, 0xD4F5, 0xFFFD, 0xD0C9, 0xEFA7, 0xE2EC, 0xFFFD, 0xDBEA, -/* 1060 */ 0xCECC, 0xF5E8, 0xF7D5, 0xFFFD, 0xD3CD, 0xFFFD, 0xF3FE, 0xE0FE, -/* 1068 */ 0xFFFD, 0xDFFB, 0xDAD8, 0xD1B9, 0xFFFD, 0xDFA9, 0xFFFD, 0xFFFD, -/* 1070 */ 0xF3B0, 0xFFFD, 0xFFFD, 0xCCC4, 0xDFD5, 0xFFFD, 0xFFFD, 0xEDD7, -/* 1078 */ 0xEFBD, 0xFCD6, 0xFFFD, 0xFFFD, 0xDBF4, 0xFFFD, 0xEFAA, 0xF8B9, -/* 1080 */ 0xFFFD, 0xF5E9, 0xD3AF, 0xFFFD, 0xFFFD, 0xCADB, 0xFCD7, 0xFFFD, -/* 1088 */ 0xFFFD, 0xEDD8, 0xE1C7, 0xF4D8, 0xD6B3, 0xDDAD, 0xF1C3, 0xEEDF, -/* 1090 */ 0xD8A3, 0xFFFD, 0xFFFD, 0xDAD9, 0xFFFD, 0xF0D8, 0xEFC4, 0xF1D4, -/* 1098 */ 0xFFFD, 0xEDF2, 0xD5DB, 0xFFFD, 0xFFFD, 0xD5DC, 0xF3C4, 0xCBD7, -/* 10A0 */ 0xDDD0, 0xF0D9, 0xCBB3, 0xCDA7, 0xFFFD, 0xFFFD, 0xD0AC, 0xFFFD, -/* 10A8 */ 0xD1BA, 0xFFFD, 0xF1C4, 0xFFFD, 0xE5B3, 0xFBF5, 0xE9E1, 0xFDE0, -/* 10B0 */ 0xFCBC, 0xFFFD, 0xDAA2, 0xDAA3, 0xFFFD, 0xD2A1, 0xFFFD, 0xFFFD, -/* 10B8 */ 0xD2EF, 0xE2ED, 0xFFFD, 0xFFFD, 0xDEE9, 0xCEDC, 0xF2B5, 0xD0E4, -/* 10C0 */ 0xDDD1, 0xE1C8, 0xDBB7, 0xDFE3, 0xEDB9, 0xF1C5, 0xFFFD, 0xF3CF, -/* 10C8 */ 0xD7AB, 0xE1AC, 0xFFFD, 0xFFFD, 0xE3EB, 0xFFFD, 0xEEC7, 0xE1C9, -/* 10D0 */ 0xCAFA, 0xF0FB, 0xFAE1, 0xF0DA, 0xCCE7, 0xDAF4, 0xCEED, 0xFFFD, -/* 10D8 */ 0xFFFD, 0xD5A9, 0xFAE2, 0xD0E5, 0xFFFD, 0xEBD6, 0xFFFD, 0xECDF, -/* 10E0 */ 0xDFFC, 0xFFFD, 0xFFFD, 0xF7D6, 0xDEEA, 0xCBB4, 0xFFFD, 0xFFFD, -/* 10E8 */ 0xEFBE, 0xFFFD, 0xFFFD, 0xCCB5, 0xEFF2, 0xE2B7, 0xD6E0, 0xFFFD, -/* 10F0 */ 0xF1C6, 0xE2B8, 0xEBAB, 0xCBB5, 0xD8D1, 0xFFFD, 0xF4CE, 0xF3F7, -/* 10F8 */ 0xFFFD, 0xFFFD, 0xD7C6, 0xFFFD, 0xD1BB, 0xF7AA, 0xFFFD, 0xEDCA, -/* 1100 */ 0xD7D3, 0xD8FA, 0xF6C5, 0xFFFD, 0xFFFD, 0xD1CC, 0xDDFC, 0xDFFD, -/* 1108 */ 0xFFFD, 0xF9E5, 0xFFFD, 0xE0CA, 0xFFFD, 0xFFFD, 0xF2FD, 0xD3B0, -/* 1110 */ 0xFFFD, 0xF4F3, 0xDAC9, 0xFFFD, 0xE6DE, 0xF8BA, 0xE8D0, 0xFFFD, -/* 1118 */ 0xFFFD, 0xD8FB, 0xFFFD, 0xFFFD, 0xEAD5, 0xF2DB, 0xE4FC, 0xDADA, -/* 1120 */ 0xFFFD, 0xF2DC, 0xFBD6, 0xE9B2, 0xFFFD, 0xEEAD, 0xFFFD, 0xFAE3, -/* 1128 */ 0xDCEE, 0xFFFD, 0xFFFD, 0xF5EA, 0xE6E0, 0xFFFD, 0xF0FD, 0xF5C5, -/* 1130 */ 0xEEE0, 0xFFFD, 0xFFFD, 0xDBE5, 0xFFFD, 0xDDDE, 0xFFFD, 0xFFFD, -/* 1138 */ 0xD9F0, 0xE9A3, 0xF1F9, 0xFFFD, 0xF2C4, 0xE0CB, 0xE9A4, 0xFFFD, -/* 1140 */ 0xFFFD, 0xE2B9, 0xE3B1, 0xFCEB, 0xCDA8, 0xFFFD, 0xCCB6, 0xFFFD, -/* 1148 */ 0xFFFD, 0xF0DB, 0xE6BA, 0xFFFD, 0xFFFD, 0xCDA9, 0xE1D9, 0xFFFD, -/* 1150 */ 0xFFFD, 0xEFAB, 0xE7C5, 0xFFFD, 0xFFFD, 0xE0E9, 0xFFFD, 0xF3C5, -/* 1158 */ 0xFFFD, 0xFFFD, 0xD4C0, 0xD5BF, 0xDDAE, 0xFFFD, 0xF9FC, 0xFFFD, -/* 1160 */ 0xCCC0, 0xD8D2, 0xF9D6, 0xF1AA, 0xCED1, 0xFFFD, 0xFFFD, 0xF6C7, -/* 1168 */ 0xFFFD, 0xDBEB, 0xFFFD, 0xDFFE, 0xFFFD, 0xFFFD, 0xD8E1, 0xFFFD, -/* 1170 */ 0xF7F3, 0xFFFD, 0xD7E7, 0xD4FE, 0xFFFD, 0xFFFD, 0xD1BC, 0xFFFD, -/* 1178 */ 0xE5CF, 0xFFFD, 0xCBB6, 0xFFFD, 0xDAB8, 0xE0CC, 0xEBF9, 0xD7E8, -/* 1180 */ 0xCBD8, 0xECCD, 0xFFFD, 0xECCE, 0xFFFD, 0xD6BF, 0xE3A7, 0xFFFD, -/* 1188 */ 0xDFD6, 0xFDE8, 0xEEE1, 0xF6A8, 0xDDFD, 0xF8BB, 0xFFFD, 0xE8D1, -/* 1190 */ 0xCEEE, 0xFFFD, 0xFFFD, 0xECCF, 0xE9A5, 0xD6D5, 0xFFFD, 0xCDC5, -/* 1198 */ 0xFFFD, 0xEDBA, 0xD1BD, 0xFFFD, 0xFFFD, 0xCFBE, 0xFFFD, 0xFFFD, -/* 11A0 */ 0xECBB, 0xCCE9, 0xFFFD, 0xD9C4, 0xE9FC, 0xECBC, 0xFFFD, 0xFFFD, -/* 11A8 */ 0xE5AD, 0xF7B0, 0xFFFD, 0xCCEA, 0xD3C4, 0xFFFD, 0xFFFD, 0xD6C0, -/* 11B0 */ 0xE1A1, 0xFFFD, 0xDEBD, 0xFFFD, 0xF6A9, 0xD6A4, 0xF5C6, 0xFFFD, -/* 11B8 */ 0xE1A2, 0xE9C6, 0xF4E9, 0xD6EC, 0xEBD3, 0xECBD, 0xE2DC, 0xDEEB, -/* 11C0 */ 0xF0DC, 0xFFFD, 0xEBBF, 0xFFFD, 0xD7CE, 0xD1BF, 0xF9FD, 0xFFFD, -/* 11C8 */ 0xCADC, 0xCDC6, 0xF2B6, 0xFFFD, 0xFFFD, 0xDDFE, 0xCCB7, 0xDBB8, -/* 11D0 */ 0xD0E9, 0xFFFD, 0xCEDD, 0xEBC0, 0xFFFD, 0xFDA2, 0xEAD6, 0xF1B0, -/* 11D8 */ 0xDBCE, 0xFFFD, 0xF7C3, 0xDBCF, 0xCBA4, 0xFFFD, 0xFFFD, 0xF8E0, -/* 11E0 */ 0xFFFD, 0xFFFD, 0xFBD7, 0xFFFD, 0xFFFD, 0xEBCA, 0xE0A1, 0xCECD, -/* 11E8 */ 0xFFFD, 0xFFFD, 0xD4DC, 0xF2B7, 0xFFFD, 0xFFFD, 0xFAF6, 0xF6AA, -/* 11F0 */ 0xFAF7, 0xD8E6, 0xFFFD, 0xF4B1, 0xE8D2, 0xFFFD, 0xCAC5, 0xCCEB, -/* 11F8 */ 0xE2BB, 0xFFFD, 0xF7AD, 0xE4FD, 0xFFFD, 0xFFFD, 0xE3EC, 0xFFFD, -/* 1200 */ 0xDDAF, 0xDDB0, 0xFFFD, 0xFFFD, 0xCBB7, 0xE8D3, 0xE1A3, 0xD2E0, -/* 1208 */ 0xE9A6, 0xCBF2, 0xEDF3, 0xDCD9, 0xE0CD, 0xF7DA, 0xDBB9, 0xCCAE, -/* 1210 */ 0xFFFD, 0xDADB, 0xDDB1, 0xFFFD, 0xD8AF, 0xE3A3, 0xFFFD, 0xFFFD, -/* 1218 */ 0xCEEF, 0xFFFD, 0xFFFD, 0xF2F3, 0xE0CE, 0xFFFD, 0xF5FD, 0xEBEC, -/* 1220 */ 0xFFFD, 0xFFFD, 0xD3C5, 0xFCEC, 0xD2DB, 0xD4EB, 0xFFFD, 0xDEA2, -/* 1228 */ 0xE3ED, 0xFFFD, 0xE8C2, 0xFFFD, 0xEDF5, 0xD7FC, 0xFFFD, 0xEDBB, -/* 1230 */ 0xFFFD, 0xFFFD, 0xF6AB, 0xF2B8, 0xF6C8, 0xD3E6, 0xF2DD, 0xCFBF, -/* 1238 */ 0xFFFD, 0xEBAC, 0xCFC0, 0xFFFD, 0xE6A8, 0xFDE9, 0xFFFD, 0xCFC1, -/* 1240 */ 0xFFFD, 0xE0DF, 0xDEEC, 0xF4BF, 0xE2EF, 0xFFFD, 0xD9F1, 0xF1C7, -/* 1248 */ 0xFFFD, 0xCBB8, 0xF9FE, 0xDBBA, 0xDAF5, 0xF6EC, 0xDADC, 0xFAE4, -/* 1250 */ 0xFFFD, 0xE0CF, 0xE6A9, 0xFFFD, 0xEFF3, 0xEBFA, 0xFFFD, 0xF9E6, -/* 1258 */ 0xCADD, 0xD5DE, 0xFFFD, 0xCADE, 0xDFE4, 0xE6FD, 0xFFFD, 0xF5AC, -/* 1260 */ 0xE9E3, 0xFFFD, 0xEDCB, 0xCFE4, 0xDDB3, 0xD4EC, 0xFFFD, 0xFFFD, -/* 1268 */ 0xF2B9, 0xFFFD, 0xDFB7, 0xCBCE, 0xFBD8, 0xFFFD, 0xFFFD, 0xD0D9, -/* 1270 */ 0xFFFD, 0xFFFD, 0xDDD2, 0xF7F4, 0xE7DC, 0xE4A5, 0xFFFD, 0xFCA3, -/* 1278 */ 0xFFFD, 0xDBBB, 0xF2BA, 0xE9FD, 0xD0CA, 0xFFFD, 0xF5D6, 0xD9C5, -/* 1280 */ 0xE4B4, 0xFFFD, 0xEDA7, 0xEABD, 0xE6FE, 0xFFFD, 0xF7C4, 0xF5AD, -/* 1288 */ 0xFFFD, 0xD9E0, 0xCAB4, 0xFFFD, 0xFFFD, 0xF8E2, 0xCFC2, 0xFFFD, -/* 1290 */ 0xECBE, 0xE5B4, 0xCDC8, 0xEEC8, 0xCDC9, 0xF9B7, 0xFFFD, 0xFFFD, -/* 1298 */ 0xF1E8, 0xD9F2, 0xDBF5, 0xCAB5, 0xD9C6, 0xEDBC, 0xFFFD, 0xFFFD, -/* 12A0 */ 0xD8D4, 0xDCDA, 0xFFFD, 0xE2BC, 0xFFFD, 0xFFFD, 0xFCED, 0xECE0, -/* 12A8 */ 0xD2FE, 0xFFFD, 0xE9C7, 0xE6AA, 0xFABB, 0xFFFD, 0xF5AE, 0xFBAA, -/* 12B0 */ 0xECFB, 0xFFFD, 0xECBF, 0xFCD8, 0xD7E9, 0xEDF6, 0xCCEC, 0xFFFD, -/* 12B8 */ 0xE3EE, 0xDDB4, 0xE4B5, 0xD8B0, 0xD6E1, 0xCFD2, 0xFFFD, 0xD0B6, -/* 12C0 */ 0xCEA2, 0xFFFD, 0xFFFD, 0xF3EE, 0xDCCC, 0xFFFD, 0xD0CB, 0xFCA4, -/* 12C8 */ 0xCDCA, 0xD7D4, 0xDEA3, 0xFFFD, 0xE4E0, 0xF5FE, 0xD4AC, 0xD5D1, -/* 12D0 */ 0xFFFD, 0xD8F0, 0xF8C3, 0xEAD7, 0xF5D7, 0xFFFD, 0xFFFD, 0xD8BF, -/* 12D8 */ 0xF8E3, 0xFFFD, 0xD4DD, 0xFFFD, 0xFFFD, 0xEAD8, 0xFBD9, 0xEDF7, -/* 12E0 */ 0xFFFD, 0xFFFD, 0xE5B5, 0xD9D5, 0xFFFD, 0xFFFD, 0xDFAA, 0xF1FA, -/* 12E8 */ 0xFFFD, 0xFFFD, 0xE5B6, 0xF3EF, 0xFFFD, 0xFFFD, 0xFBDA, 0xE1E0, -/* 12F0 */ 0xFFFD, 0xD9AC, 0xFFFD, 0xF5EB, 0xFFFD, 0xE0B6, 0xFFFD, 0xFFFD, -/* 12F8 */ 0xE9C8, 0xFFFD, 0xCBCF, 0xFFFD, 0xE3C9, 0xDCEF, 0xFFFD, 0xD6A5, -/* 1300 */ 0xD9A1, 0xFFFD, 0xD8C0, 0xDCDB, 0xFFFD, 0xFFFD, 0xEDBD, 0xDFB8, -/* 1308 */ 0xFFFD, 0xEAA5, 0xD7AD, 0xFFFD, 0xFFFD, 0xF3F9, 0xFFFD, 0xEDF8, -/* 1310 */ 0xFFFD, 0xF5C7, 0xE1CA, 0xEBE3, 0xFFFD, 0xF2DE, 0xF8CC, 0xFFFD, -/* 1318 */ 0xEAD9, 0xFFFD, 0xD3C6, 0xFFFD, 0xDBE6, 0xCFF2, 0xF7B9, 0xD9F3, -/* 1320 */ 0xFFFD, 0xFFFD, 0xE1CB, 0xDADD, 0xFFFD, 0xFFFD, 0xDAB9, 0xEBFB, -/* 1328 */ 0xFFFD, 0xCBB9, 0xFFFD, 0xFFFD, 0xEDF9, 0xF4C0, 0xFFFD, 0xFDBC, -/* 1330 */ 0xDFB1, 0xE3EF, 0xE0A3, 0xFDB9, 0xD5C0, 0xE3F0, 0xEDFA, 0xD5ED, -/* 1338 */ 0xE7DD, 0xD4F6, 0xE5B7, 0xDBE7, 0xE2BF, 0xEECB, 0xFFFD, 0xFFFD, -/* 1340 */ 0xD7F4, 0xF0DD, 0xCEAB, 0xFFFD, 0xFFFD, 0xE7DE, 0xD6D6, 0xE1CC, -/* 1348 */ 0xFFFD, 0xFFFD, 0xE8B3, 0xE5EE, 0xDCA2, 0xFFFD, 0xFFFD, 0xE0D0, -/* 1350 */ 0xFBDB, 0xFFFD, 0xF9CB, 0xCBF3, 0xF4A5, 0xFAC8, 0xD6D7, 0xFFFD, -/* 1358 */ 0xE9E5, 0xFBDC, 0xDAA5, 0xFFFD, 0xDBBD, 0xCDF7, 0xF0DE, 0xE8C3, -/* 1360 */ 0xFFFD, 0xF1C8, 0xE4B6, 0xFFFD, 0xF5B9, 0xFFFD, 0xDCF0, 0xE3F1, -/* 1368 */ 0xF2BB, 0xFFFD, 0xDEA4, 0xFFFD, 0xDACC, 0xE3DA, 0xFFFD, 0xFCD9, -/* 1370 */ 0xF9C4, 0xFFFD, 0xE3A4, 0xFBDD, 0xFFFD, 0xEFCA, 0xFFFD, 0xE8C4, -/* 1378 */ 0xD9AD, 0xFFFD, 0xFFFD, 0xFBAB, 0xE0D1, 0xFFFD, 0xFFFD, 0xE9A8, -/* 1380 */ 0xFFFD, 0xFFFD, 0xF5F9, 0xFAAF, 0xFFFD, 0xEBFC, 0xFFFD, 0xFFFD, -/* 1388 */ 0xE0EA, 0xD5C5, 0xFFFD, 0xFFFD, 0xF1E3, 0xD5EE, 0xFABC, 0xE6E2, -/* 1390 */ 0xFAE5, 0xE2FA, 0xCAB6, 0xFFFD, 0xE4B7, 0xFFFD, 0xEADB, 0xFFFD, -/* 1398 */ 0xF5FA, 0xFBAC, 0xCFC3, 0xEBFD, 0xF8FA, 0xFFFD, 0xFFFD, 0xDFB9, -/* 13A0 */ 0xE1F1, 0xFFFD, 0xD2A4, 0xD0DA, 0xD0DB, 0xFFFD, 0xEABE, 0xD9B1, -/* 13A8 */ 0xCAB7, 0xFFFD, 0xFFFD, 0xD3E7, 0xFFFD, 0xF8E5, 0xE2C0, 0xF2DF, -/* 13B0 */ 0xEEAE, 0xD6AE, 0xE7E0, 0xEBAE, 0xCFD9, 0xFFFD, 0xFFFD, 0xDCCD, -/* 13B8 */ 0xEDFB, 0xFFFD, 0xDEF0, 0xFFFD, 0xD7EB, 0xDFD7, 0xDBD0, 0xDBD1, -/* 13C0 */ 0xFFFD, 0xFFFD, 0xD5A3, 0xCAE8, 0xFFFD, 0xF8E6, 0xDCCE, 0xEADC, -/* 13C8 */ 0xDBD2, 0xE3A8, 0xFFFD, 0xD7AE, 0xFFFD, 0xFFFD, 0xE0E1, 0xCBBA, -/* 13D0 */ 0xFFFD, 0xFFFD, 0xE5D1, 0xE0A4, 0xFFFD, 0xE9A9, 0xFFFD, 0xD3C7, -/* 13D8 */ 0xFFFD, 0xFFFD, 0xDCDD, 0xF8AE, 0xD8F2, 0xFFFD, 0xFFFD, 0xE3CA, -/* 13E0 */ 0xD4AD, 0xF6D1, 0xCAC6, 0xFFFD, 0xFFFD, 0xD5C2, 0xFFFD, 0xFFFD, -/* 13E8 */ 0xCEBA, 0xE5EB, 0xFFFD, 0xEFF4, 0xDDB5, 0xCDAA, 0xFFFD, 0xE3F2, -/* 13F0 */ 0xFFFD, 0xFBF7, 0xFFFD, 0xF7D0, 0xFDBA, 0xFFFD, 0xFFFD, 0xFDE1, -/* 13F8 */ 0xF6FE, 0xD1C0, 0xFFFD, 0xFFFD, 0xE8C5, 0xFFFD, 0xE4B8, 0xFFFD, -/* 1400 */ 0xE1E8, 0xCCC1, 0xFFFD, 0xD2ED, 0xDBBE, 0xFFFD, 0xFFFD, 0xE0E2, -/* 1408 */ 0xFAC9, 0xFFFD, 0xFFFD, 0xE1CD, 0xFFFD, 0xCAB8, 0xF2E0, 0xF1C9, -/* 1410 */ 0xF0DF, 0xF8C4, 0xEECC, 0xFFFD, 0xFFFD, 0xDEF2, 0xFFFD, 0xE7C9, -/* 1418 */ 0xFFFD, 0xE2F3, 0xE7E1, 0xFFFD, 0xFFFD, 0xE3CB, 0xFFFD, 0xFFFD, -/* 1420 */ 0xE3CC, 0xCFF8, 0xEFAC, 0xFFFD, 0xFDFE, 0xFCA5, 0xFAB1, 0xDFD9, -/* 1428 */ 0xFFFD, 0xE0D2, 0xF1CA, 0xFFFD, 0xCEA3, 0xF2BC, 0xECE3, 0xE0A5, -/* 1430 */ 0xFFFD, 0xF7AB, 0xFFFD, 0xFFFD, 0xEBAF, 0xE5DE, 0xFFFD, 0xE1A4, -/* 1438 */ 0xCDAB, 0xFFFD, 0xD9F4, 0xE8A6, 0xCDCE, 0xE1E9, 0xFFFD, 0xFCEF, -/* 1440 */ 0xFFFD, 0xE0E3, 0xE2C1, 0xFFFD, 0xCEA4, 0xDEA6, 0xFFFD, 0xFFFD, -/* 1448 */ 0xEBFE, 0xFFFD, 0xEBDD, 0xF0E0, 0xFFFD, 0xFFFD, 0xF4DB, 0xFFFD, -/* 1450 */ 0xE2F4, 0xFFFD, 0xFFFD, 0xD3C8, 0xF4EB, 0xFFFD, 0xEEB5, 0xFFFD, -/* 1458 */ 0xF5D8, 0xFFFD, 0xFFFD, 0xD5DF, 0xEBB0, 0xF4E3, 0xF4F4, 0xFAB2, -/* 1460 */ 0xFFFD, 0xFFFD, 0xEFF5, 0xCADF, 0xFFFD, 0xEBB1, 0xEDBF, 0xFFFD, -/* 1468 */ 0xFFFD, 0xFDC9, 0xE4A6, 0xF9A4, 0xF0B3, 0xFFFD, 0xE5EC, 0xD1E7, -/* 1470 */ 0xFFFD, 0xD9C7, 0xE4D7, 0xEADD, 0xFFFD, 0xD4F7, 0xDABA, 0xFFFD, -/* 1478 */ 0xDACD, 0xF9CC, 0xFFFD, 0xE1DA, 0xDBBF, 0xFFFD, 0xCCC5, 0xECD0, -/* 1480 */ 0xCBBB, 0xFFFD, 0xDEF3, 0xFFFD, 0xFFFD, 0xE9AA, 0xD9C8, 0xFFFD, -/* 1488 */ 0xFFFD, 0xEEE3, 0xD7BD, 0xFDD2, 0xD1C1, 0xE3DB, 0xFFFD, 0xD3C9, -/* 1490 */ 0xFFFD, 0xDCCF, 0xDEA7, 0xFFFD, 0xFFFD, 0xE6BB, 0xECA1, 0xCCB9, -/* 1498 */ 0xFFFD, 0xFFFD, 0xFBDE, 0xE7E2, 0xFFFD, 0xFFFD, 0xD4C1, 0xE2C2, -/* 14A0 */ 0xFFFD, 0xF3D8, 0xE5D3, 0xFFFD, 0xFFFD, 0xF3D9, 0xCDAC, 0xFFFD, -/* 14A8 */ 0xFCC3, 0xD4E7, 0xFFFD, 0xD1C2, 0xFFFD, 0xF9A5, 0xFFFD, 0xE8D5, -/* 14B0 */ 0xFBDF, 0xE7E3, 0xF8FB, 0xE3CF, 0xD8E7, 0xFFFD, 0xD9C9, 0xF8AF, -/* 14B8 */ 0xEFF6, 0xFFFD, 0xDDB6, 0xEEAF, 0xCDF8, 0xDEB8, 0xFCA7, 0xF7FC, -/* 14C0 */ 0xF7B1, 0xCEBB, 0xF4A1, 0xFFFD, 0xFFFD, 0xEECD, 0xE1AE, 0xFFFD, -/* 14C8 */ 0xFFFD, 0xECC3, 0xCFFE, 0xFFFD, 0xF8BF, 0xD8E2, 0xD3E8, 0xFFFD, -/* 14D0 */ 0xFFFD, 0xDEA8, 0xF4E4, 0xECC2, 0xFFFD, 0xD9F5, 0xF9C5, 0xDDD3, -/* 14D8 */ 0xD6F1, 0xECFC, 0xFCF0, 0xFFFD, 0xFFFD, 0xEDC0, 0xCAB9, 0xFFFD, -/* 14E0 */ 0xEEE4, 0xF2E1, 0xFFFD, 0xDEB9, 0xD6F2, 0xFFFD, 0xDEF4, 0xFFFD, -/* 14E8 */ 0xDFDB, 0xFFFD, 0xDBD3, 0xFFFD, 0xFAE7, 0xD8E3, 0xF4C1, 0xFFFD, -/* 14F0 */ 0xDDB7, 0xF2F5, 0xFFFD, 0xFFFD, 0xD4AE, 0xDDB8, 0xCFC5, 0xDFDF, -/* 14F8 */ 0xF2BE, 0xF6A1, 0xFFFD, 0xEBCB, 0xF1FC, 0xFFFD, 0xF3C7, 0xFFFD, -/* 1500 */ 0xFFFD, 0xE0EB, 0xEDFC, 0xFFFD, 0xFFFD, 0xE1DB, 0xEEE5, 0xFFFD, -/* 1508 */ 0xDEF5, 0xF1CB, 0xFFFD, 0xFFFD, 0xD0AF, 0xDDB9, 0xFFFD, 0xFFFD, -/* 1510 */ 0xD1C3, 0xDBA2, 0xF2F6, 0xFFFD, 0xFFFD, 0xCABA, 0xF7F5, 0xFFFD, -/* 1518 */ 0xCBE5, 0xEEE6, 0xFFFD, 0xE0D3, 0xD3CE, 0xF4C2, 0xEBB3, 0xFFFD, -/* 1520 */ 0xF0B4, 0xFFFD, 0xFFFD, 0xCBF4, 0xD4B0, 0xF3B2, 0xFBB7, 0xEEE7, -/* 1528 */ 0xF4B2, 0xF5ED, 0xFFFD, 0xCFF3, 0xEECE, 0xFFFD, 0xFFFD, 0xF1CC, -/* 1530 */ 0xFFFD, 0xFFFD, 0xE5B8, 0xD7F5, 0xE3F3, 0xCFE5, 0xF3B3, 0xE4D8, -/* 1538 */ 0xCFF9, 0xCFDA, 0xF5EE, 0xFFFD, 0xFFFD, 0xCABB, 0xFFFD, 0xFFFD, -/* 1540 */ 0xE3DC, 0xCEF2, 0xFFFD, 0xD6D9, 0xF4E5, 0xD8C2, 0xDCD0, 0xCCEE, -/* 1548 */ 0xD5E0, 0xF6CA, 0xFDCA, 0xD8D6, 0xF4CF, 0xD6A6, 0xDCBE, 0xFFFD, -/* 1550 */ 0xDBD4, 0xD7C7, 0xE2C3, 0xDCDE, 0xFFFD, 0xDCDF, 0xFFFD, 0xFFFD, -/* 1558 */ 0xEFAD, 0xE6AB, 0xF9DD, 0xEABF, 0xF4D0, 0xCEF3, 0xE6AC, 0xFFFD, -/* 1560 */ 0xCEDE, 0xFFFD, 0xFFFD, 0xD5F9, 0xE3F4, 0xCDD0, 0xD5B8, 0xFFFD, -/* 1568 */ 0xFFFD, 0xF7FD, 0xFFFD, 0xDCA9, 0xDEF6, 0xFFFD, 0xDCAA, 0xF2E3, -/* 1570 */ 0xE9B4, 0xD2DC, 0xE9E6, 0xFFFD, 0xFFFD, 0xE3F6, 0xE7CA, 0xFFFD, -/* 1578 */ 0xFFFD, 0xD0CE, 0xFFFD, 0xFFFD, 0xDAF7, 0xEEE8, 0xDADE, 0xFFFD, -/* 1580 */ 0xF2F7, 0xFFFD, 0xFFFD, 0xE2FB, 0xFFFD, 0xCCA6, 0xDABB, 0xFFFD, -/* 1588 */ 0xEEE9, 0xF5DA, 0xFFFD, 0xFFFD, 0xF7DC, 0xE1EA, 0xCEC1, 0xD4B1, -/* 1590 */ 0xFFFD, 0xFDB1, 0xE6BD, 0xFFFD, 0xFBAD, 0xFFFD, 0xFFFD, 0xF8E7, -/* 1598 */ 0xFFFD, 0xE1CE, 0xFFFD, 0xF7E2, 0xF5EF, 0xCFC7, 0xFFFD, 0xFFFD, -/* 15A0 */ 0xD4B2, 0xCCEF, 0xFFFD, 0xD4E8, 0xFFFD, 0xEECF, 0xF7D7, 0xFFFD, -/* 15A8 */ 0xFFFD, 0xE0A6, 0xD6C1, 0xE1DC, 0xF0E3, 0xF1E4, 0xDCF1, 0xD6A7, -/* 15B0 */ 0xF4F5, 0xFFFD, 0xFFFD, 0xF1CE, 0xF2E4, 0xFFFD, 0xFFFD, 0xD0B0, -/* 15B8 */ 0xFFFD, 0xFFFD, 0xECEF, 0xF9BA, 0xFFFD, 0xEBB5, 0xFFFD, 0xFFFD, -/* 15C0 */ 0xD4ED, 0xE2C4, 0xE9E7, 0xFFFD, 0xFFFD, 0xEBB4, 0xEAA1, 0xFFFD, -/* 15C8 */ 0xF8BC, 0xCEA6, 0xFFFD, 0xF9C6, 0xFCDA, 0xFFFD, 0xD4B3, 0xD3B9, -/* 15D0 */ 0xEADE, 0xE9AB, 0xFFFD, 0xFFFD, 0xE1E1, 0xD3CF, 0xF4F6, 0xFFFD, -/* 15D8 */ 0xEAC0, 0xE1CF, 0xFFFD, 0xCCBA, 0xF0E4, 0xF3B4, 0xD4EE, 0xFFFD, -/* 15E0 */ 0xFFFD, 0xF2C0, 0xFFFD, 0xFFFD, 0xF1E5, 0xFFFD, 0xF4C3, 0xE0D4, -/* 15E8 */ 0xFFFD, 0xEBB6, 0xFFFD, 0xD7A1, 0xCBE8, 0xFFFD, 0xF9AD, 0xE9AD, -/* 15F0 */ 0xD8E4, 0xFAB3, 0xE2C5, 0xFCBD, 0xFFFD, 0xFFFD, 0xECC4, 0xD8B1, -/* 15F8 */ 0xFFFD, 0xDCAB, 0xD5A4, 0xFFFD, 0xEBE9, 0xFBAE, 0xD1E1, 0xFFFD, -/* 1600 */ 0xFFFD, 0xDBC0, 0xFFFD, 0xF5BE, 0xFFFD, 0xDEF7, 0xCAFB, 0xF7C6, -/* 1608 */ 0xCFC8, 0xE1D0, 0xFFFD, 0xFFFD, 0xEED0, 0xD5CD, 0xFFFD, 0xFFFD, -/* 1610 */ 0xCFDB, 0xF5DB, 0xFFFD, 0xFFFD, 0xFAC1, 0xEBB7, 0xEFF8, 0xF5DC, -/* 1618 */ 0xEDCC, 0xDBD5, 0xF1CF, 0xD9AE, 0xD5AC, 0xFFFD, 0xE2C6, 0xFDA3, -/* 1620 */ 0xFFFD, 0xFBE5, 0xDFAB, 0xE2F5, 0xFFFD, 0xF6AD, 0xFFFD, 0xF5B3, -/* 1628 */ 0xFFFD, 0xF0B5, 0xECA2, 0xEDFD, 0xFFFD, 0xF5B4, 0xFBB8, 0xFFFD, -/* 1630 */ 0xDBA3, 0xFFFD, 0xFFFD, 0xD6CA, 0xCBD9, 0xF3FA, 0xFFFD, 0xEBB8, -/* 1638 */ 0xFFFD, 0xE0B7, 0xD7EC, 0xF1EC, 0xE5AF, 0xD5E1, 0xD7ED, 0xD1D1, -/* 1640 */ 0xE1F2, 0xEFF9, 0xDDBC, 0xF6DC, 0xF4C4, 0xFFFD, 0xFFFD, 0xE9E9, -/* 1648 */ 0xD4EF, 0xFFFD, 0xFFFD, 0xCCA2, 0xF7FE, 0xDFBC, 0xEFAF, 0xCBA5, -/* 1650 */ 0xE6E7, 0xFFFD, 0xFFFD, 0xEAC7, 0xDBA4, 0xFFFD, 0xCFC9, 0xE2FC, -/* 1658 */ 0xEFFA, 0xEBDE, 0xFFFD, 0xFFFD, 0xF5C8, 0xFFFD, 0xD4DE, 0xE0D5, -/* 1660 */ 0xFFFD, 0xEFB0, 0xFFFD, 0xFFFD, 0xE2C7, 0xFFFD, 0xD9AF, 0xE7E5, -/* 1668 */ 0xFFFD, 0xFFFD, 0xCFCA, 0xE1D1, 0xFFFD, 0xE2C8, 0xEFFB, 0xFFFD, -/* 1670 */ 0xFFFD, 0xFAF9, 0xFFFD, 0xFFFD, 0xDCF2, 0xF5DF, 0xFFFD, 0xEEB6, -/* 1678 */ 0xE2F6, 0xD3CA, 0xEFFC, 0xD1C4, 0xEFB1, 0xFFFD, 0xD1C5, 0xFFFD, -/* 1680 */ 0xD0DE, 0xFFFD, 0xD9E1, 0xFFFD, 0xFFFD, 0xE0B8, 0xFFFD, 0xFFFD, -/* 1688 */ 0xCDD1, 0xF3B9, 0xE7CC, 0xFFFD, 0xD6A8, 0xCEA7, 0xFFFD, 0xD4B5, -/* 1690 */ 0xF6DD, 0xFFFD, 0xF1A3, 0xE9CA, 0xFFFD, 0xE1F0, 0xFBE0, 0xF2E5, -/* 1698 */ 0xFFFD, 0xFFFD, 0xECF0, 0xE9CB, 0xFFFD, 0xFFFD, 0xCCF0, 0xFFFD, -/* 16A0 */ 0xFFFD, 0xD7AF, 0xF4D1, 0xFFFD, 0xFFFD, 0xF7A1, 0xCAFC, 0xCAFD, -/* 16A8 */ 0xF3C8, 0xFFFD, 0xF3BA, 0xDAA6, 0xFFFD, 0xFFFD, 0xE0EC, 0xF8CD, -/* 16B0 */ 0xFFFD, 0xCBD2, 0xEBCE, 0xFFFD, 0xF9D8, 0xF9D9, 0xCAE0, 0xDACA, -/* 16B8 */ 0xCAC8, 0xF9EE, 0xDBEC, 0xFFFD, 0xFFFD, 0xD0B1, 0xE7A2, 0xE4D9, -/* 16C0 */ 0xE4E1, 0xFFFD, 0xFFFD, 0xFCC4, 0xF9EF, 0xCFF4, 0xF7E6, 0xF4C5, -/* 16C8 */ 0xDCA3, 0xE4B9, 0xF6ED, 0xFFFD, 0xF9AE, 0xFFFD, 0xDDBE, 0xD7B0, -/* 16D0 */ 0xD8E8, 0xCBBD, 0xFFFD, 0xFFFD, 0xF9DA, 0xF8CE, 0xF9F0, 0xE0ED, -/* 16D8 */ 0xE3B3, 0xF4B3, 0xFFFD, 0xFFFD, 0xEAC2, 0xF2E6, 0xF0B6, 0xEBE4, -/* 16E0 */ 0xFFFD, 0xFFFD, 0xF2E7, 0xFFFD, 0xD7D5, 0xD4B6, 0xF9E8, 0xD7C1, -/* 16E8 */ 0xE9EA, 0xD7CC, 0xD3E9, 0xE2C9, 0xFFFD, 0xFCDB, 0xCDAD, 0xCCB0, -/* 16F0 */ 0xEAA2, 0xFFFD, 0xFFFD, 0xE4F6, 0xD0C0, 0xFFFD, 0xF0B7, 0xEEA1, -/* 16F8 */ 0xE2CA, 0xE2CB, 0xFFFD, 0xFACF, 0xEDCD, 0xE4D2, 0xFFFD, 0xFFFD, -/* 1700 */ 0xEAA9, 0xE4BA, 0xF3A2, 0xCDD2, 0xFFFD, 0xF6CB, 0xFFFD, 0xF1E6, -/* 1708 */ 0xEDC1, 0xE8BC, 0xEED1, 0xF0E7, 0xE2CC, 0xFFFD, 0xFFFD, 0xE4AA, -/* 1710 */ 0xFFFD, 0xF5E1, 0xEDDA, 0xD7EE, 0xD1F1, 0xE9EB, 0xE9EC, 0xE0E4, -/* 1718 */ 0xDAA7, 0xDDD4, 0xFFFD, 0xEAA3, 0xD6C3, 0xD6F4, 0xFFFD, 0xDADF, -/* 1720 */ 0xFFFD, 0xEFB3, 0xEFFD, 0xF2E8, 0xEFC5, 0xFFFD, 0xE7E7, 0xFFFD, -/* 1728 */ 0xFFFD, 0xD7FD, 0xFFFD, 0xFFFD, 0xE7CE, 0xFFFD, 0xFFFD, 0xDFDC, -/* 1730 */ 0xFFFD, 0xF9C7, 0xDFAC, 0xFFFD, 0xD6DA, 0xD5FA, 0xFFFD, 0xE4F7, -/* 1738 */ 0xF0A1, 0xFFFD, 0xDEAA, 0xFFFD, 0xFFFD, 0xDABC, 0xD8FC, 0xFCA8, -/* 1740 */ 0xFFFD, 0xFFFD, 0xECE6, 0xFFFD, 0xFFFD, 0xD8CB, 0xFBB9, 0xFFFD, -/* 1748 */ 0xE4D3, 0xFFFD, 0xCDF9, 0xCAEA, 0xFFFD, 0xFFFD, 0xCFD4, 0xFFFD, -/* 1750 */ 0xF8BD, 0xEBE5, 0xFFFD, 0xFFFD, 0xE1D2, 0xFAC2, 0xFBE1, 0xFAED, -/* 1758 */ 0xF0A2, 0xCCF1, 0xFFFD, 0xFAA3, 0xE2F7, 0xFFFD, 0xE2CE, 0xFFFD, -/* 1760 */ 0xE9F5, 0xFFFD, 0xE1EB, 0xE7E8, 0xE8D7, 0xDAF8, 0xD4CB, 0xF7F6, -/* 1768 */ 0xD6C5, 0xD4E9, 0xFFFD, 0xFFFD, 0xFAFA, 0xCCF2, 0xF7DD, 0xFFFD, -/* 1770 */ 0xDEBA, 0xF0B9, 0xE4FE, 0xE4C9, 0xEAC3, 0xFFFD, 0xEFB4, 0xFBE2, -/* 1778 */ 0xFFFD, 0xCDD3, 0xDFBD, 0xFFFD, 0xF7C7, 0xF8FD, 0xFFFD, 0xFFFD, -/* 1780 */ 0xF8FC, 0xDEAB, 0xDBE8, 0xFFFD, 0xFFFD, 0xE3DD, 0xFFFD, 0xE1E2, -/* 1788 */ 0xD1C6, 0xF6D0, 0xEBE6, 0xDAF9, 0xDEF8, 0xF8E9, 0xE3DE, 0xFAC3, -/* 1790 */ 0xE5D7, 0xFFFD, 0xECC8, 0xF3C9, 0xFFFD, 0xFFFD, 0xE4BB, 0xEFB6, -/* 1798 */ 0xFFFD, 0xDCBF, 0xD0CF, 0xFFFD, 0xCFFA, 0xF3CA, 0xE0D7, 0xD1C7, -/* 17A0 */ 0xE9AE, 0xFFFD, 0xE8BD, 0xFFFD, 0xFFFD, 0xFAC4, 0xE2CF, 0xFFFD, -/* 17A8 */ 0xFFFD, 0xFAC5, 0xDCE0, 0xFFFD, 0xFFFD, 0xFBB0, 0xD8A9, 0xE5DF, -/* 17B0 */ 0xF9A7, 0xFFFD, 0xFFFD, 0xF6EE, 0xFFFD, 0xF6CC, 0xE2F8, 0xF1D2, -/* 17B8 */ 0xD2CC, 0xCFCB, 0xFFFD, 0xFFFD, 0xCABD, 0xF6EF, 0xFFFD, 0xDEF9, -/* 17C0 */ 0xF1E7, 0xFFFD, 0xDEBE, 0xD1C8, 0xD1C9, 0xF5E2, 0xE1D3, 0xD8E9, -/* 17C8 */ 0xFFFD, 0xFFFD, 0xF8FE, 0xFFFD, 0xCFCC, 0xCEF6, 0xFFFD, 0xFAD0, -/* 17D0 */ 0xFFFD, 0xFFFD, 0xCCF3, 0xE6BE, 0xF6AE, 0xFFFD, 0xFFFD, 0xD5F0, -/* 17D8 */ 0xFFFD, 0xFFFD, 0xD1CA, 0xFCBE, 0xD5F1, 0xE2D0, 0xF4F7, 0xD7A2, -/* 17E0 */ 0xFFFD, 0xFFFD, 0xF7E3, 0xCEDA, 0xFBEB, 0xDBA6, 0xDBDE, 0xD8E5, -/* 17E8 */ 0xEFC6, 0xFFFD, 0xFFFD, 0xF8EA, 0xCEF7, 0xFFFD, 0xFFFD, 0xE0D8, -/* 17F0 */ 0xF5E3, 0xFFFD, 0xFFFD, 0xE4CA, 0xFFFD, 0xDCE1, 0xFFFD, 0xFFFD, -/* 17F8 */ 0xF9C8, 0xCBBE, 0xFFFD, 0xDCAE, 0xF0E8, 0xFFFD, 0xDDC0, 0xFFFD, -/* 1800 */ 0xCFCD, 0xDCF3, 0xD9B0, 0xFFFD, 0xE6E9, 0xE4EC, 0xFFFD, 0xE4E5, -/* 1808 */ 0xE4BD, 0xFFFD, 0xFFFD, 0xCDDC, 0xD9F7, 0xFDD3, 0xEBED, 0xD6DC, -/* 1810 */ 0xE7A4, 0xFFFD, 0xD6E3, 0xD1CB, 0xD6E4, 0xDEFA, 0xFFFD, 0xD7F8, -/* 1818 */ 0xCFD5, 0xD8FD, 0xD8AB, 0xFFFD, 0xFFFD, 0xFDCB, 0xE0A8, 0xD5F3, -/* 1820 */ 0xFFFD, 0xFFFD, 0xFDD9, 0xFFFD, 0xFFFD, 0xCCA3, 0xD9F9, 0xFFFD, -/* 1828 */ 0xFFFD, 0xD3EA, 0xF5F5, 0xFFFD, 0xEFC7, 0xE8A8, 0xDCAF, 0xF0BA, -/* 1830 */ 0xEEB1, 0xFFFD, 0xFFFD, 0xEEB2, 0xEED2, 0xFFFD, 0xD6C6, 0xE0E5, -/* 1838 */ 0xFFFD, 0xFFFD, 0xF3BB, 0xFFFD, 0xE5E1, 0xD7A3, 0xFFFD, 0xFFFD, -/* 1840 */ 0xDBC2, 0xB0A1, 0xB0A2, 0x8141, 0x8142, 0xB0A3, 0x8143, 0x8144, -/* 1848 */ 0xB0A4, 0xB0A5, 0xB0A6, 0xB0A7, 0x8145, 0x8146, 0x8147, 0x8148, -/* 1850 */ 0x8149, 0x814A, 0xB0B0, 0xB0B1, 0xB0B2, 0xB0B3, 0xB0B4, 0x814B, -/* 1858 */ 0x814C, 0xB0B5, 0x814D, 0x814E, 0x814F, 0xB0B6, 0xB0B7, 0xB0B8, -/* 1860 */ 0x8157, 0xB0B9, 0xB0BA, 0xB0BB, 0x8158, 0x8159, 0x815A, 0x8161, -/* 1868 */ 0x8162, 0x8163, 0xB0BC, 0xB0BD, 0x8164, 0x8165, 0xB0BE, 0x8166, -/* 1870 */ 0x8167, 0x8168, 0xB0BF, 0xB0C0, 0x8173, 0xB0C1, 0xB0C2, 0x817A, -/* 1878 */ 0x8181, 0x8182, 0xB0C3, 0x8183, 0x8184, 0x8185, 0xB0C4, 0xB0C5, -/* 1880 */ 0xB0C6, 0x8199, 0x819A, 0xB0C7, 0x819B, 0x819C, 0xB0C8, 0xB0C9, -/* 1888 */ 0x819D, 0xB0CA, 0x819E, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0xB0CB, -/* 1890 */ 0xB0CC, 0x81A3, 0xB0CD, 0xB0CE, 0xB0CF, 0xB0D0, 0x81A4, 0x81A5, -/* 1898 */ 0xB0D1, 0xB0D2, 0xB0D3, 0xB0D4, 0x81A6, 0x81A7, 0x81A8, 0xB0D5, -/* 18A0 */ 0x81A9, 0x81AA, 0x81AB, 0xB0D6, 0xB0D7, 0xB0D8, 0x81B3, 0xB0D9, -/* 18A8 */ 0xB0DA, 0xB0DB, 0xB0DC, 0xB0DD, 0xB0DE, 0x81BA, 0xB0DF, 0x81BB, -/* 18B0 */ 0x81BC, 0xB0E0, 0xB0E1, 0xB0E2, 0xB0E3, 0x81C4, 0xB0E4, 0xB0E5, -/* 18B8 */ 0xB0E6, 0x81C5, 0x81C6, 0x81C7, 0xB0E7, 0x81C8, 0x81C9, 0xB0E8, -/* 18C0 */ 0x81CA, 0x81CB, 0x81CC, 0xB0E9, 0x81CD, 0x81CE, 0x81CF, 0xB0EA, -/* 18C8 */ 0xB0EB, 0x81D8, 0xB0EC, 0xB0ED, 0xB0EE, 0x81E1, 0x81E2, 0xB0EF, -/* 18D0 */ 0x81E3, 0x81E4, 0xB0F0, 0xB0F1, 0x81E5, 0xB0F2, 0x81E6, 0xB0F3, -/* 18D8 */ 0x81E7, 0x81E8, 0xB0F4, 0xB0F5, 0xB0F6, 0x81E9, 0xB0F7, 0x81EA, -/* 18E0 */ 0xB0F8, 0xB0F9, 0x81EB, 0x81EC, 0x81ED, 0x81EE, 0x81EF, 0xB0FA, -/* 18E8 */ 0xB0FB, 0x81F0, 0x81F1, 0xB0FC, 0x81F2, 0x81F3, 0x81F4, 0xB0FD, -/* 18F0 */ 0x81F5, 0xB0FE, 0x81F6, 0x81F7, 0x81F8, 0x81F9, 0x81FA, 0xB1A1, -/* 18F8 */ 0xB1A2, 0x81FB, 0xB1A3, 0x81FC, 0xB1A4, 0x81FD, 0x81FE, 0x8241, -/* 1900 */ 0x8242, 0x8243, 0x8244, 0xB1A5, 0x8245, 0x8246, 0x8247, 0xB1A6, -/* 1908 */ 0x8248, 0x8249, 0x824A, 0xB1A7, 0xB1A8, 0x8253, 0x8254, 0xB1A9, -/* 1910 */ 0xB1AA, 0xB1AB, 0xB1AC, 0x8261, 0x8262, 0xB1AD, 0x8263, 0x8264, -/* 1918 */ 0x8265, 0xB1AE, 0xB1AF, 0xB1B0, 0x826D, 0xB1B1, 0x826E, 0xB1B2, -/* 1920 */ 0xB1B3, 0x8275, 0x8276, 0x8277, 0xB1B4, 0x8278, 0x8279, 0x827A, -/* 1928 */ 0xB1B5, 0xB1B6, 0x8289, 0xB1B7, 0xB1B8, 0xB1B9, 0x8292, 0x8293, -/* 1930 */ 0xB1BA, 0x8294, 0x8295, 0xB1BB, 0xB1BC, 0xB1BD, 0xB1BE, 0x8296, -/* 1938 */ 0x8297, 0x8298, 0x8299, 0xB1BF, 0xB1C0, 0xB1C1, 0x829A, 0xB1C2, -/* 1940 */ 0x829B, 0xB1C3, 0xB1C4, 0x829C, 0x829D, 0x829E, 0x829F, 0x82A0, -/* 1948 */ 0xB1C5, 0xB1C6, 0x82A1, 0x82A2, 0xB1C7, 0x82A3, 0x82A4, 0x82A5, -/* 1950 */ 0xB1C8, 0xB1C9, 0xB1CA, 0xB1CD, 0xB1CE, 0x82D1, 0x82D2, 0xB1CF, -/* 1958 */ 0x82D3, 0x82D4, 0x82D5, 0xB1D0, 0xB1D1, 0xB1D2, 0x82DD, 0xB1D3, -/* 1960 */ 0xB1D4, 0x82E6, 0x82E7, 0x82E8, 0xB1D5, 0x82E9, 0x82EA, 0x82EB, -/* 1968 */ 0xB1D6, 0xB1D7, 0xB1D8, 0x8341, 0x8342, 0xB1D9, 0x8343, 0x8344, -/* 1970 */ 0xB1DA, 0xB1DB, 0xB1DC, 0xB1DD, 0xB1DE, 0x834B, 0xB1DF, 0x834C, -/* 1978 */ 0xB1E0, 0xB1E2, 0xB1E3, 0x8374, 0x8375, 0xB1E4, 0x8376, 0x8377, -/* 1980 */ 0xB1E5, 0xB1E6, 0x8378, 0xB1E7, 0x8379, 0x837A, 0x8381, 0x8382, -/* 1988 */ 0x8383, 0xB1E8, 0xB1E9, 0x8384, 0xB1EA, 0x8385, 0xB1EB, 0xB1EC, -/* 1990 */ 0x8386, 0x8387, 0x8388, 0xB1ED, 0x8389, 0xB1EE, 0xB1EF, 0xB1F0, -/* 1998 */ 0x838A, 0xB1F1, 0x838B, 0x838C, 0x838D, 0xB1F2, 0x838E, 0xB1F3, -/* 19A0 */ 0x838F, 0x8390, 0x8391, 0x8392, 0x8393, 0xB1F4, 0xB1F5, 0x8394, -/* 19A8 */ 0xB1F6, 0xB1F7, 0xB1F8, 0x8395, 0x8396, 0x8397, 0xB1F9, 0x8398, -/* 19B0 */ 0x8399, 0xB1FA, 0xB1FB, 0x839A, 0x839B, 0xB1FC, 0x839C, 0x839D, -/* 19B8 */ 0x839E, 0xB1FD, 0xB1FE, 0xB2A1, 0x83A6, 0xB2A2, 0xB2A3, 0xB2A4, -/* 19C0 */ 0xB2A5, 0xB2A6, 0xB2A8, 0xB2A9, 0xB2AA, 0x83E2, 0xB2AB, 0x83E3, -/* 19C8 */ 0x83E4, 0x83E5, 0xB2AC, 0xB2AD, 0xB2AE, 0x83ED, 0xB2AF, 0xB2B0, -/* 19D0 */ 0xB2B1, 0xB2B2, 0xB2B3, 0x83F4, 0x83F5, 0xB2B4, 0x8441, 0x8442, -/* 19D8 */ 0xB2B5, 0x8443, 0x8444, 0xB2B6, 0x8445, 0xB2B7, 0xB2B8, 0x844C, -/* 19E0 */ 0x844D, 0x844E, 0xB2B9, 0x844F, 0x8450, 0x8451, 0xB2BA, 0x8461, -/* 19E8 */ 0xB2BB, 0xB2BC, 0x8462, 0x8463, 0x8464, 0x8465, 0xB2BD, 0x8466, -/* 19F0 */ 0x8467, 0xB2BE, 0xB2BF, 0xB2C0, 0x8489, 0x848A, 0xB2C1, 0x848B, -/* 19F8 */ 0xB2C2, 0x848C, 0xB2C3, 0xB2C4, 0xB2C5, 0x8494, 0xB2C6, 0x8495, -/* 1A00 */ 0xB2C7, 0xB2C8, 0xB2C9, 0x8496, 0x8497, 0x8498, 0x8499, 0xB2CA, -/* 1A08 */ 0xB2CB, 0xB2CD, 0xB2CE, 0xB2CF, 0xB2D0, 0xB2D2, 0x84CA, 0x84CB, -/* 1A10 */ 0x84CC, 0xB2D3, 0x84CD, 0x84CE, 0x84CF, 0xB2D4, 0xB2D5, 0xB2D6, -/* 1A18 */ 0x84D7, 0x84D8, 0x84D9, 0xB2D7, 0xB2D9, 0xB2DA, 0x84FB, 0x84FC, -/* 1A20 */ 0xB2DB, 0x84FD, 0x84FE, 0x8541, 0xB2DC, 0xB2DD, 0xB2DE, 0xB2DF, -/* 1A28 */ 0x8548, 0xB2E0, 0x8549, 0xB2E1, 0xB2E2, 0x854A, 0x854B, 0x854C, -/* 1A30 */ 0x854D, 0x854E, 0xB2E3, 0xB2E4, 0x8556, 0x8557, 0x8558, 0x8559, -/* 1A38 */ 0x855A, 0xB2E5, 0xB2E6, 0xB2E7, 0xB2E8, 0x856D, 0x856E, 0xB2E9, -/* 1A40 */ 0x856F, 0x8570, 0x8571, 0xB2EA, 0xB2EB, 0xB2EC, 0x8579, 0x857A, -/* 1A48 */ 0xB2ED, 0xB2EE, 0x8588, 0x8589, 0x858A, 0xB2EF, 0x858B, 0x858C, -/* 1A50 */ 0x858D, 0xB2F0, 0xB2F1, 0xB2F2, 0xB2F4, 0xB2F5, 0x85BA, 0x85BB, -/* 1A58 */ 0xB2F6, 0x85BC, 0xB2F7, 0x85BD, 0xB2F8, 0x85BE, 0xB2F9, 0x85BF, -/* 1A60 */ 0x85C0, 0x85C1, 0x85C2, 0xB2FA, 0xB2FB, 0xB2FC, 0x85C3, 0xB2FD, -/* 1A68 */ 0x85C4, 0xB2FE, 0x85C5, 0x85C6, 0x85C7, 0xB3A1, 0xB3A2, 0xB3A3, -/* 1A70 */ 0x85E6, 0x85E7, 0xB3A4, 0x85E8, 0x85E9, 0x85EA, 0xB3A5, 0xB3A6, -/* 1A78 */ 0xB3A7, 0x85F2, 0xB3A8, 0x85F3, 0xB3A9, 0xB3AA, 0xB3AB, 0xB3AC, -/* 1A80 */ 0x85FA, 0xB3AD, 0x85FB, 0x85FC, 0xB3AE, 0xB3AF, 0xB3B0, 0xB3B1, -/* 1A88 */ 0x85FD, 0x85FE, 0x8641, 0x8642, 0x8643, 0xB3B2, 0xB3B3, 0x8644, -/* 1A90 */ 0xB3B4, 0xB3B5, 0xB3B6, 0xB3B7, 0xB3B8, 0x8645, 0xB3B9, 0x8646, -/* 1A98 */ 0xB3BA, 0xB3BB, 0xB3BC, 0x8647, 0x8648, 0xB3BD, 0x8649, 0x864A, -/* 1AA0 */ 0x864B, 0xB3BE, 0xB3BF, 0xB3C0, 0x8653, 0xB3C1, 0xB3C2, 0xB3C3, -/* 1AA8 */ 0xB3C4, 0xB3C5, 0x865A, 0x8661, 0xB3C6, 0x8662, 0x8663, 0x8664, -/* 1AB0 */ 0xB3C7, 0xB3C8, 0x866C, 0x866D, 0x866E, 0x866F, 0xB3C9, 0xB3CA, -/* 1AB8 */ 0xB3CB, 0x8698, 0xB3CC, 0xB3CD, 0x8699, 0x869A, 0x869B, 0xB3CE, -/* 1AC0 */ 0x869C, 0xB3CF, 0xB3D0, 0x869D, 0x869E, 0x869F, 0x86A0, 0xB3D1, -/* 1AC8 */ 0xB3D2, 0x86A1, 0xB3D3, 0xB3D4, 0xB3D5, 0x86A2, 0x86A3, 0x86A4, -/* 1AD0 */ 0x86A5, 0x86A6, 0xB3D6, 0xB3D7, 0xB3D8, 0x86A7, 0x86A8, 0xB3D9, -/* 1AD8 */ 0x86A9, 0x86AA, 0x86AB, 0xB3DA, 0xB3DB, 0xB3DC, 0x86B3, 0xB3DD, -/* 1AE0 */ 0xB3DE, 0xB3DF, 0xB3E0, 0xB3E1, 0x86BA, 0x86BB, 0xB3E2, 0x86BC, -/* 1AE8 */ 0x86BD, 0x86BE, 0xB3E3, 0xB3E4, 0xB3E5, 0x86C6, 0x86C7, 0xB3E6, -/* 1AF0 */ 0xB3E7, 0x86C8, 0x86C9, 0xB3E8, 0x86CA, 0x86CB, 0x86CC, 0xB3E9, -/* 1AF8 */ 0x86CD, 0x86CE, 0x86CF, 0xB3EA, 0xB3EB, 0xB3EC, 0x86E7, 0x86E8, -/* 1B00 */ 0xB3ED, 0x86E9, 0x86EA, 0x86EB, 0xB3EE, 0x86EC, 0xB3EF, 0x86ED, -/* 1B08 */ 0x86EE, 0x86EF, 0x86F0, 0x86F1, 0xB3F0, 0xB3F1, 0x86F2, 0xB3F2, -/* 1B10 */ 0x86F3, 0xB3F3, 0x86F4, 0x86F5, 0x86F6, 0x86F7, 0xB3F4, 0xB3F5, -/* 1B18 */ 0xB3F6, 0x86F8, 0x86F9, 0x86FA, 0xB3F7, 0x86FB, 0x86FC, 0x86FD, -/* 1B20 */ 0xB3F8, 0x86FE, 0xB3FA, 0x8774, 0x8775, 0x8776, 0xB3FB, 0x8777, -/* 1B28 */ 0x8778, 0x8779, 0xB3FC, 0x877A, 0xB3FD, 0xB3FE, 0x8787, 0xB4A1, -/* 1B30 */ 0xB4A2, 0xB4A3, 0x8790, 0x8791, 0xB4A4, 0x8792, 0x8793, 0x8794, -/* 1B38 */ 0xB4A5, 0xB4A6, 0x879D, 0xB4A7, 0x879E, 0xB4A8, 0xB4A9, 0xB4AA, -/* 1B40 */ 0x87A5, 0x87A6, 0xB4AB, 0x87A7, 0x87A8, 0xB4AC, 0xB4AD, 0xB4AE, -/* 1B48 */ 0xB4AF, 0x87B0, 0xB4B0, 0x87B1, 0xB4B1, 0xB4B5, 0x87ED, 0x87EE, -/* 1B50 */ 0x87EF, 0xB4B6, 0x87F0, 0x87F1, 0x87F2, 0xB4B7, 0xB4B8, 0xB4B9, -/* 1B58 */ 0x87FA, 0x87FB, 0x87FC, 0x87FD, 0x87FE, 0x8841, 0x8842, 0x8843, -/* 1B60 */ 0x8844, 0x8845, 0xB4BA, 0xB4BB, 0xB4BD, 0xB4BE, 0x8853, 0x8854, -/* 1B68 */ 0x8855, 0xB4BF, 0x8856, 0x8857, 0x8858, 0x8859, 0x885A, 0x8861, -/* 1B70 */ 0xB4C0, 0xB4C1, 0x8862, 0x8863, 0xB4C2, 0x8864, 0x8865, 0x8866, -/* 1B78 */ 0xB4C3, 0xB4C4, 0xB4C5, 0x8867, 0x8868, 0x8869, 0x886A, 0x886B, -/* 1B80 */ 0xB4C6, 0xB4C7, 0x886C, 0xB4C8, 0x886D, 0xB4C9, 0xB4CA, 0x886E, -/* 1B88 */ 0x886F, 0x8870, 0xB4CB, 0x8871, 0xB4CC, 0x8872, 0x8873, 0x8874, -/* 1B90 */ 0xB4CD, 0x8875, 0x8876, 0x8877, 0xB4CE, 0x8878, 0x8879, 0x887A, -/* 1B98 */ 0xB4CF, 0xB4D0, 0x8891, 0x8892, 0xB4D1, 0x8893, 0x8894, 0x8895, -/* 1BA0 */ 0xB4D2, 0x8896, 0xB4D3, 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, -/* 1BA8 */ 0xB4D4, 0xB4D5, 0x889C, 0xB4D6, 0x889D, 0xB4D7, 0x889E, 0x889F, -/* 1BB0 */ 0x88A0, 0x88A1, 0xB4D8, 0x88A2, 0xB4D9, 0xB4DA, 0xB4DB, 0x88A3, -/* 1BB8 */ 0xB4DC, 0x88A4, 0x88A5, 0xB4DD, 0xB4DE, 0xB4DF, 0xB4E0, 0xB4E1, -/* 1BC0 */ 0x88A6, 0x88A7, 0x88A8, 0xB4E2, 0xB4E3, 0xB4E4, 0x88A9, 0xB4E5, -/* 1BC8 */ 0xB4E6, 0xB4E7, 0xB4E8, 0xB4E9, 0x88AA, 0x88AB, 0x88AC, 0xB4EA, -/* 1BD0 */ 0xB4EB, 0xB4EC, 0x88AD, 0x88AE, 0xB4ED, 0x88AF, 0x88B0, 0x88B1, -/* 1BD8 */ 0xB4EE, 0xB4EF, 0xB4F0, 0x88B9, 0xB4F1, 0xB4F2, 0xB4F3, 0xB4F5, -/* 1BE0 */ 0xB4F6, 0xB4F7, 0x88F7, 0xB4F8, 0x88F8, 0x88F9, 0xB4F9, 0xB4FA, -/* 1BE8 */ 0x88FA, 0xB4FB, 0xB4FC, 0x88FB, 0x88FC, 0x88FD, 0x88FE, 0xB4FD, -/* 1BF0 */ 0xB4FE, 0x8941, 0xB5A1, 0x8942, 0xB5A2, 0x8943, 0xB5A3, 0x8944, -/* 1BF8 */ 0x8945, 0xB5A4, 0x8946, 0xB5A5, 0xB5A6, 0x8947, 0x8948, 0xB5A7, -/* 1C00 */ 0x8949, 0x894A, 0x894B, 0xB5A8, 0xB5A9, 0xB5AA, 0x8953, 0xB5AB, -/* 1C08 */ 0xB5AC, 0xB5AD, 0xB5AE, 0x895A, 0x8961, 0x8962, 0xB5AF, 0x8963, -/* 1C10 */ 0x8964, 0x8965, 0xB5B0, 0xB5B1, 0xB5B2, 0xB5B3, 0x8977, 0x8978, -/* 1C18 */ 0x8979, 0xB5B4, 0x897A, 0xB5B5, 0xB5B6, 0x8997, 0x8998, 0xB5B7, -/* 1C20 */ 0x8999, 0x899A, 0xB5B8, 0xB5B9, 0x899B, 0xB5BA, 0x899C, 0xB5BB, -/* 1C28 */ 0x899D, 0x899E, 0x899F, 0xB5BC, 0xB5BD, 0x89A0, 0xB5BE, 0x89A1, -/* 1C30 */ 0xB5BF, 0x89A2, 0xB5C0, 0x89A3, 0xB5C1, 0x89A4, 0x89A5, 0xB5C2, -/* 1C38 */ 0x89A6, 0x89A7, 0x89A8, 0xB5C3, 0x89A9, 0x89AA, 0x89AB, 0xB5C4, -/* 1C40 */ 0xB5C7, 0x89D9, 0x89DA, 0x89DB, 0xB5C8, 0x89DC, 0x89DD, 0x89DE, -/* 1C48 */ 0xB5C9, 0xB5CA, 0xB5CB, 0x89E6, 0xB5CC, 0xB5CE, 0xB5CF, 0x8A4C, -/* 1C50 */ 0x8A4D, 0xB5D0, 0x8A4E, 0x8A4F, 0x8A50, 0xB5D1, 0xB5D2, 0xB5D3, -/* 1C58 */ 0x8A58, 0xB5D4, 0x8A59, 0xB5D5, 0x8A5A, 0x8A61, 0x8A62, 0x8A63, -/* 1C60 */ 0x8A64, 0x8A65, 0xB5D6, 0xB5D7, 0x8A79, 0x8A7A, 0x8A81, 0x8A82, -/* 1C68 */ 0x8A83, 0x8A84, 0x8A85, 0xB5D8, 0xB5DA, 0x8AA0, 0x8AA1, 0x8AA2, -/* 1C70 */ 0xB5DB, 0x8AA3, 0x8AA4, 0x8AA5, 0xB5DC, 0xB5DD, 0x8AAE, 0xB5DE, -/* 1C78 */ 0x8AAF, 0xB5DF, 0xB5E0, 0x8AB6, 0x8AB7, 0x8AB8, 0xB5E1, 0x8AB9, -/* 1C80 */ 0x8ABA, 0x8ABB, 0xB5E2, 0xB5E3, 0x8AC3, 0x8AC4, 0x8AC5, 0x8AC6, -/* 1C88 */ 0xB5E4, 0xB5E5, 0xB5E6, 0x8ACD, 0x8ACE, 0xB5E7, 0x8ACF, 0x8AD0, -/* 1C90 */ 0xB5E8, 0xB5E9, 0x8AD1, 0xB5EA, 0x8AD2, 0x8AD3, 0x8AD4, 0x8AD5, -/* 1C98 */ 0x8AD6, 0xB5EB, 0xB5EC, 0x8AD7, 0xB5ED, 0x8AD8, 0xB5EE, 0xB5F0, -/* 1CA0 */ 0xB5F1, 0x8AFA, 0x8AFB, 0xB5F2, 0x8AFC, 0x8AFD, 0xB5F3, 0xB5F4, -/* 1CA8 */ 0x8AFE, 0xB5F5, 0xB5F6, 0x8B47, 0xB5F7, 0xB5F8, 0xB5F9, 0xB5FA, -/* 1CB0 */ 0x8B48, 0x8B49, 0x8B4A, 0x8B4B, 0x8B4C, 0xB5FB, 0xB5FC, 0x8B4D, -/* 1CB8 */ 0x8B4E, 0xB5FD, 0x8B4F, 0x8B50, 0x8B51, 0xB5FE, 0xB6A1, 0xB6A2, -/* 1CC0 */ 0x8B59, 0xB6A3, 0xB6A4, 0xB6A5, 0x8B5A, 0x8B61, 0x8B62, 0x8B63, -/* 1CC8 */ 0x8B64, 0xB6A6, 0xB6A7, 0xB6A8, 0x8B65, 0x8B66, 0xB6A9, 0x8B67, -/* 1CD0 */ 0x8B68, 0x8B69, 0xB6AA, 0xB6AB, 0xB6AC, 0x8B71, 0xB6AD, 0xB6AE, -/* 1CD8 */ 0xB6AF, 0xB6B0, 0xB6B1, 0x8BB6, 0x8BB7, 0xB6B2, 0x8BB8, 0x8BB9, -/* 1CE0 */ 0x8BBA, 0xB6B3, 0x8BBB, 0xB6B4, 0xB6B5, 0x8BBC, 0x8BBD, 0x8BBE, -/* 1CE8 */ 0x8BBF, 0xB6B6, 0xB6B7, 0x8BC0, 0xB6B8, 0xB6B9, 0xB6BA, 0x8BC1, -/* 1CF0 */ 0x8BC2, 0x8BC3, 0x8BC4, 0x8BC5, 0xB6BB, 0xB6BC, 0xB6BD, 0x8BC6, -/* 1CF8 */ 0x8BC7, 0xB6BE, 0x8BC8, 0x8BC9, 0x8BCA, 0xB6BF, 0xB6C0, 0xB6C1, -/* 1D00 */ 0x8BD2, 0xB6C2, 0xB6C3, 0xB6C4, 0xB6C7, 0xB6C8, 0x8C51, 0x8C52, -/* 1D08 */ 0xB6C9, 0x8C53, 0x8C54, 0x8C55, 0xB6CA, 0x8C56, 0x8C57, 0x8C58, -/* 1D10 */ 0x8C59, 0x8C5A, 0xB6CF, 0x8CA9, 0x8CAA, 0x8CAB, 0xB6D0, 0xB6D1, -/* 1D18 */ 0xB6D2, 0x8CDF, 0x8CE0, 0xB6D3, 0x8CE1, 0x8CE2, 0x8CE3, 0xB6D4, -/* 1D20 */ 0xB6D5, 0xB6D6, 0x8CEA, 0x8CEB, 0x8CEC, 0x8CED, 0xB6D7, 0xB6D9, -/* 1D28 */ 0x8D73, 0x8D74, 0x8D75, 0xB6DA, 0x8D76, 0x8D77, 0x8D78, 0xB6DB, -/* 1D30 */ 0x8D79, 0x8D7A, 0x8D81, 0x8D82, 0x8D83, 0x8D84, 0x8D85, 0xB6DC, -/* 1D38 */ 0xB6DD, 0x8D86, 0x8D87, 0x8D88, 0xB6DE, 0xB6DF, 0xB6E0, 0x8DAB, -/* 1D40 */ 0x8DAC, 0xB6E1, 0x8DAD, 0x8DAE, 0xB6E2, 0xB6E3, 0xB6E4, 0xB6E5, -/* 1D48 */ 0x8DB6, 0xB6E6, 0xB6E7, 0x8DBF, 0x8DC0, 0x8DC1, 0xB6E8, 0x8DC2, -/* 1D50 */ 0x8DC3, 0x8DC4, 0xB6E9, 0xB6EA, 0xB6EB, 0xB6EC, 0x8DD6, 0x8DD7, -/* 1D58 */ 0x8DD8, 0xB6ED, 0x8DD9, 0x8DDA, 0x8DDB, 0xB6EE, 0xB6EF, 0xB6F0, -/* 1D60 */ 0x8DE3, 0xB6F1, 0x8DE4, 0xB6F2, 0xB6F3, 0xB6F4, 0x8DEB, 0x8DEC, -/* 1D68 */ 0xB6F5, 0x8DED, 0x8DEE, 0x8DEF, 0xB6F6, 0xB6F7, 0xB6F8, 0x8DF7, -/* 1D70 */ 0xB6F9, 0xB6FA, 0xB6FB, 0xB6FC, 0x8DF8, 0x8DF9, 0x8DFA, 0xB6FD, -/* 1D78 */ 0xB6FE, 0xB7A1, 0xB7A2, 0x8DFB, 0x8DFC, 0xB7A3, 0x8DFD, 0x8DFE, -/* 1D80 */ 0x8E41, 0xB7A4, 0xB7A5, 0xB7A6, 0x8E49, 0xB7A7, 0xB7A8, 0xB7A9, -/* 1D88 */ 0xB7AA, 0xB7AB, 0x8E50, 0x8E51, 0xB7AC, 0x8E61, 0x8E62, 0x8E63, -/* 1D90 */ 0x8E64, 0x8E65, 0xB7AD, 0x8E66, 0xB7AE, 0xB7AF, 0xB7B0, 0x8E8F, -/* 1D98 */ 0x8E90, 0xB7B1, 0x8E91, 0x8E92, 0x8E93, 0xB7B2, 0xB7B3, 0xB7B4, -/* 1DA0 */ 0x8E9B, 0xB7B5, 0xB7B6, 0xB7B7, 0x8E9C, 0x8E9D, 0x8E9E, 0x8E9F, -/* 1DA8 */ 0x8EA0, 0xB7B8, 0xB7B9, 0xB7BA, 0x8EA1, 0x8EA2, 0xB7BB, 0x8EA3, -/* 1DB0 */ 0x8EA4, 0x8EA5, 0xB7BC, 0xB7BD, 0xB7BE, 0x8EAD, 0xB7BF, 0x8EAE, -/* 1DB8 */ 0xB7C0, 0xB7C1, 0xB7C2, 0x8EB5, 0x8EB6, 0xB7C3, 0x8EB7, 0x8EB8, -/* 1DC0 */ 0x8EB9, 0xB7C4, 0xB7C5, 0xB7C6, 0x8EC1, 0xB7C7, 0xB7C8, 0xB7C9, -/* 1DC8 */ 0xB7CA, 0x8EC8, 0x8EC9, 0x8ECA, 0xB7CB, 0xB7CC, 0x8ED7, 0xB7CD, -/* 1DD0 */ 0xB7CE, 0xB7CF, 0x8EE0, 0x8EE1, 0xB7D0, 0x8EE2, 0x8EE3, 0x8EE4, -/* 1DD8 */ 0xB7D1, 0xB7D2, 0xB7D3, 0x8EEC, 0xB7D4, 0x8EED, 0xB7D5, 0xB7D6, -/* 1DE0 */ 0x8EF4, 0x8EF5, 0x8EF6, 0xB7D7, 0xB7DA, 0x8F70, 0x8F71, 0x8F72, -/* 1DE8 */ 0xB7DB, 0x8F73, 0x8F74, 0x8F75, 0xB7DC, 0x8F76, 0x8F77, 0x8F78, -/* 1DF0 */ 0x8F79, 0x8F7A, 0x8F81, 0x8F82, 0xB7DD, 0xB7DE, 0x8F83, 0xB7DF, -/* 1DF8 */ 0x8F84, 0xB7E0, 0xB7E1, 0x8F8B, 0x8F8C, 0x8F8D, 0xB7E2, 0x8F8E, -/* 1E00 */ 0x8F8F, 0x8F90, 0xB7E3, 0xB7E4, 0x8F99, 0xB7E5, 0x8F9A, 0xB7E6, -/* 1E08 */ 0xB7E7, 0xB7E8, 0x8FA1, 0x8FA2, 0xB7E9, 0x8FA3, 0x8FA4, 0x8FA5, -/* 1E10 */ 0xB7EA, 0xB7EB, 0xB7EC, 0x8FAD, 0xB7ED, 0x8FAE, 0xB7EE, 0xB7F2, -/* 1E18 */ 0xB7F3, 0x8FEA, 0x8FEB, 0xB7F4, 0x8FEC, 0x8FED, 0x8FEE, 0xB7F5, -/* 1E20 */ 0xB7F6, 0x8FF6, 0x8FF7, 0xB7F7, 0x8FF8, 0xB7F8, 0xB7F9, 0xB7FA, -/* 1E28 */ 0x9041, 0x9042, 0xB7FB, 0x9043, 0x9044, 0x9045, 0xB7FC, 0xB7FD, -/* 1E30 */ 0xB7FE, 0x904D, 0xB8A1, 0x904E, 0xB8A2, 0xB8A3, 0xB8A4, 0x9055, -/* 1E38 */ 0x9056, 0xB8A5, 0x9057, 0x9058, 0x9059, 0xB8A6, 0x905A, 0xB8A7, -/* 1E40 */ 0xB8A8, 0x9067, 0xB8A9, 0x9068, 0xB8AA, 0xB8AB, 0x9069, 0x906A, -/* 1E48 */ 0xB8AC, 0xB8AD, 0xB8AE, 0xB8AF, 0x908E, 0x908F, 0xB8B0, 0x9090, -/* 1E50 */ 0x9091, 0x9092, 0xB8B1, 0xB8B2, 0xB8B3, 0x909A, 0xB8B4, 0x909B, -/* 1E58 */ 0xB8B5, 0xB8B6, 0xB8B7, 0x90A2, 0x90A3, 0xB8B8, 0x90A4, 0xB8B9, -/* 1E60 */ 0xB8BA, 0xB8BB, 0xB8BC, 0xB8BD, 0x90A5, 0x90A6, 0x90A7, 0x90A8, -/* 1E68 */ 0x90A9, 0xB8BE, 0xB8BF, 0x90AA, 0xB8C0, 0x90AB, 0xB8C1, 0xB8C2, -/* 1E70 */ 0x90AC, 0x90AD, 0xB8C3, 0x90AE, 0xB8C4, 0xB8C5, 0xB8C6, 0x90AF, -/* 1E78 */ 0x90B0, 0xB8C7, 0x90B1, 0x90B2, 0x90B3, 0xB8C8, 0xB8C9, 0xB8CA, -/* 1E80 */ 0x90BB, 0xB8CB, 0xB8CC, 0xB8CD, 0xB8CE, 0x90BC, 0x90BD, 0x90BE, -/* 1E88 */ 0x90BF, 0x90C0, 0xB8CF, 0xB8D0, 0xB8D3, 0xB8D4, 0x90F5, 0x90F6, -/* 1E90 */ 0xB8D5, 0x90F7, 0x90F8, 0x90F9, 0xB8D6, 0x90FA, 0xB8D7, 0x90FB, -/* 1E98 */ 0x90FC, 0x90FD, 0x90FE, 0x9141, 0xB8D8, 0xB8D9, 0x9142, 0xB8DA, -/* 1EA0 */ 0x9143, 0xB8DB, 0xB8DC, 0x9144, 0x9145, 0x9146, 0x9147, 0xB8DD, -/* 1EA8 */ 0xB8DE, 0xB8DF, 0x9148, 0x9149, 0xB8E0, 0x914A, 0x914B, 0x914C, -/* 1EB0 */ 0xB8E1, 0xB8E2, 0xB8E3, 0x9154, 0xB8E4, 0xB8E5, 0xB8E6, 0xB8E7, -/* 1EB8 */ 0xB8E8, 0x9161, 0x9162, 0xB8E9, 0x9163, 0x9164, 0x9165, 0xB8EA, -/* 1EC0 */ 0xB8EB, 0xB8EC, 0xB8ED, 0x9170, 0xB8EE, 0x9171, 0x9172, 0x9173, -/* 1EC8 */ 0x9174, 0xB8EF, 0xB8F0, 0xB8F1, 0x9196, 0xB8F2, 0xB8F3, 0x9197, -/* 1ED0 */ 0x9198, 0x9199, 0xB8F4, 0x919A, 0xB8F5, 0x919B, 0x919C, 0x919D, -/* 1ED8 */ 0x919E, 0x919F, 0xB8F6, 0xB8F7, 0x91A0, 0xB8F8, 0x91A1, 0xB8F9, -/* 1EE0 */ 0xB8FA, 0x91A8, 0x91A9, 0x91AA, 0xB8FB, 0xB8FC, 0xB8FD, 0xB8FE, -/* 1EE8 */ 0x91DC, 0x91DD, 0x91DE, 0xB9A1, 0x91DF, 0x91E0, 0x91E1, 0xB9A2, -/* 1EF0 */ 0xB9A3, 0x91EA, 0xB9A4, 0x91EB, 0xB9A5, 0xB9A6, 0x91F2, 0x91F3, -/* 1EF8 */ 0x91F4, 0xB9A7, 0x91F5, 0x91F6, 0x91F7, 0xB9A8, 0x9241, 0xB9A9, -/* 1F00 */ 0x9242, 0xB9AA, 0xB9AB, 0xB9AC, 0xB9AD, 0x924B, 0xB9AE, 0x924C, -/* 1F08 */ 0x924D, 0xB9AF, 0xB9B0, 0xB9B1, 0xB9B2, 0x924E, 0x924F, 0x9250, -/* 1F10 */ 0x9251, 0x9252, 0xB9B3, 0xB9B4, 0x9253, 0xB9B5, 0x9254, 0xB9B6, -/* 1F18 */ 0x9255, 0x9256, 0x9257, 0xB9B7, 0x9258, 0xB9B8, 0xB9B9, 0x9259, -/* 1F20 */ 0x925A, 0x9261, 0xB9BA, 0x9262, 0x9263, 0x9264, 0xB9BB, 0xB9BC, -/* 1F28 */ 0x926D, 0xB9BD, 0xB9BE, 0x9276, 0x9277, 0x9278, 0x9279, 0x927A, -/* 1F30 */ 0xB9BF, 0x9297, 0x9298, 0x9299, 0xB9C0, 0x929A, 0x929B, 0x929C, -/* 1F38 */ 0xB9C1, 0xB9C2, 0x92B0, 0x92B1, 0x92B2, 0xB9C3, 0x92B3, 0x92B4, -/* 1F40 */ 0x92B5, 0xB9C4, 0xB9C5, 0x92BD, 0x92BE, 0xB9C6, 0xB9C7, 0x92C7, -/* 1F48 */ 0x92C8, 0x92C9, 0xB9C8, 0x92CA, 0x92CB, 0x92CC, 0xB9C9, 0xB9CA, -/* 1F50 */ 0x92D4, 0x92D5, 0xB9CB, 0xB9CC, 0xB9CD, 0x92FA, 0x92FB, 0xB9CE, -/* 1F58 */ 0x92FC, 0x92FD, 0xB9CF, 0xB9D0, 0x92FE, 0xB9D1, 0x9341, 0x9342, -/* 1F60 */ 0x9343, 0x9344, 0x9345, 0xB9D2, 0xB9D3, 0x9346, 0xB9D4, 0xB9D5, -/* 1F68 */ 0xB9D6, 0x9347, 0xB9D7, 0x9348, 0xB9D8, 0x9349, 0x934A, 0xB9D9, -/* 1F70 */ 0xB9DA, 0xB9DB, 0xB9DC, 0xB9DD, 0x934B, 0x934C, 0xB9DE, 0xB9DF, -/* 1F78 */ 0xB9E0, 0xB9E1, 0xB9E2, 0x934D, 0x934E, 0x934F, 0x9350, 0xB9E3, -/* 1F80 */ 0xB9E4, 0x9351, 0xB9E5, 0x9352, 0xB9E6, 0x9353, 0x9354, 0x9355, -/* 1F88 */ 0xB9E7, 0x9356, 0x9357, 0xB9E8, 0xB9E9, 0x9358, 0x9359, 0xB9EA, -/* 1F90 */ 0x935A, 0x9361, 0x9362, 0xB9EB, 0xB9EC, 0xB9ED, 0x936A, 0xB9EE, -/* 1F98 */ 0xB9EF, 0xB9F0, 0x936B, 0x936C, 0x936D, 0xB9F1, 0x936E, 0x936F, -/* 1FA0 */ 0xB9F2, 0xB9F3, 0x9370, 0x9371, 0xB9F4, 0x9381, 0x9382, 0x9383, -/* 1FA8 */ 0xB9F5, 0xB9F6, 0xB9F7, 0x93AA, 0x93AB, 0xB9F8, 0x93AC, 0x93AD, -/* 1FB0 */ 0xB9F9, 0xB9FA, 0x93AE, 0xB9FB, 0x93AF, 0x93B0, 0x93B1, 0x93B2, -/* 1FB8 */ 0x93B3, 0xB9FC, 0xB9FD, 0x93B4, 0xB9FE, 0x93B5, 0xBAA1, 0xBAA2, -/* 1FC0 */ 0x93B6, 0x93B7, 0x93B8, 0x93B9, 0x93BA, 0xBAA3, 0xBAA4, 0x93BB, -/* 1FC8 */ 0x93BC, 0xBAA5, 0x93BD, 0x93BE, 0xBAA6, 0xBAA7, 0xBAA8, 0xBAA9, -/* 1FD0 */ 0x93C6, 0xBAAA, 0xBAAB, 0xBAAC, 0xBAAD, 0xBAAE, 0x93CD, 0x93CE, -/* 1FD8 */ 0xBAAF, 0x93CF, 0x93D0, 0x93D1, 0xBAB0, 0xBAB1, 0x93DA, 0xBAB2, -/* 1FE0 */ 0xBAB3, 0xBAB4, 0x93DB, 0x93DC, 0x93DD, 0xBAB5, 0x93DE, 0x93DF, -/* 1FE8 */ 0xBAB6, 0x93E0, 0x93E1, 0x93E2, 0xBAB7, 0xBAB8, 0xBAB9, 0xBABA, -/* 1FF0 */ 0x93FA, 0xBABB, 0x93FB, 0x93FC, 0x93FD, 0xBABC, 0x93FE, 0xBABD, -/* 1FF8 */ 0xBABE, 0x9447, 0xBABF, 0x9448, 0xBAC0, 0xBAC1, 0x944F, 0x9450, -/* 2000 */ 0x9451, 0xBAC2, 0xBAC6, 0xBAC7, 0x948E, 0x948F, 0xBAC8, 0x9490, -/* 2008 */ 0x9491, 0x9492, 0xBAC9, 0xBACA, 0xBACB, 0xBACC, 0x94A4, 0x94A5, -/* 2010 */ 0x94A6, 0xBACD, 0xBACE, 0xBACF, 0x94BE, 0x94BF, 0xBAD0, 0x94C0, -/* 2018 */ 0x94C1, 0xBAD1, 0xBAD2, 0xBAD3, 0xBAD4, 0x94C2, 0x94C3, 0x94C4, -/* 2020 */ 0x94C5, 0x94C6, 0xBAD5, 0xBAD6, 0x94C7, 0xBAD7, 0x94C8, 0xBAD8, -/* 2028 */ 0x94C9, 0x94CA, 0x94CB, 0xBAD9, 0xBADA, 0x94CC, 0xBADB, 0x9541, -/* 2030 */ 0x9542, 0xBADF, 0xBAE0, 0x9543, 0x9544, 0xBAE1, 0x9545, 0x9546, -/* 2038 */ 0x9547, 0xBAE2, 0xBAE4, 0x955A, 0x9561, 0x9562, 0xBAE5, 0x9563, -/* 2040 */ 0x9564, 0x9565, 0xBAE6, 0xBAE7, 0x956D, 0x956E, 0xBAE8, 0x956F, -/* 2048 */ 0xBAE9, 0xBAEA, 0xBAEB, 0x9576, 0x9577, 0xBAEC, 0x9578, 0x9579, -/* 2050 */ 0x957A, 0xBAED, 0xBAEE, 0xBAEF, 0x9588, 0xBAF0, 0xBAF1, 0xBAF2, -/* 2058 */ 0x95AD, 0x95AE, 0xBAF3, 0x95AF, 0x95B0, 0x95B1, 0xBAF4, 0x95B2, -/* 2060 */ 0xBAF5, 0x95B3, 0x95B4, 0x95B5, 0x95B6, 0x95B7, 0xBAF6, 0xBAF7, -/* 2068 */ 0x95B8, 0xBAF8, 0x95B9, 0xBAF9, 0xBAFA, 0xBAFB, 0x95BA, 0x95BB, -/* 2070 */ 0x95BC, 0x95BD, 0xBAFC, 0xBAFD, 0x95BE, 0x95BF, 0xBAFE, 0x95C0, -/* 2078 */ 0x95C1, 0x95C2, 0xBBA1, 0x95C3, 0xBBA2, 0x95C4, 0x95C5, 0x95C6, -/* 2080 */ 0x95C7, 0x95C8, 0xBBA3, 0xBBA4, 0x95C9, 0xBBA5, 0xBBA6, 0xBBA7, -/* 2088 */ 0x95CA, 0x95CB, 0x95CC, 0x95CD, 0x95CE, 0xBBA8, 0xBBA9, 0xBBAA, -/* 2090 */ 0x95CF, 0x95D0, 0xBBAB, 0x95D1, 0x95D2, 0x95D3, 0xBBAC, 0xBBAD, -/* 2098 */ 0xBBAE, 0x95DB, 0xBBAF, 0xBBB0, 0xBBB1, 0xBBB2, 0xBBB3, 0xBBB5, -/* 20A0 */ 0xBBB6, 0x9659, 0x965A, 0xBBB7, 0x9661, 0x9662, 0xBBB8, 0xBBB9, -/* 20A8 */ 0xBBBA, 0x966A, 0x966B, 0xBBBB, 0xBBBC, 0xBBBD, 0xBBC0, 0xBBC1, -/* 20B0 */ 0xBBC2, 0xBBC3, 0x96A0, 0xBBC4, 0xBBC5, 0xBBC6, 0xBBC7, 0xBBC8, -/* 20B8 */ 0x96C3, 0x96C4, 0xBBC9, 0x96C5, 0x96C6, 0x96C7, 0xBBCA, 0xBBCB, -/* 20C0 */ 0xBBCC, 0x96CF, 0x96D0, 0x96D1, 0xBBCD, 0xBBD1, 0xBBD2, 0x9793, -/* 20C8 */ 0x9794, 0xBBD3, 0x9795, 0x9796, 0x9797, 0xBBD4, 0xBBD5, 0x979F, -/* 20D0 */ 0x97A0, 0xBBD6, 0x97A1, 0xBBD7, 0xBBD8, 0x97FC, 0x97FD, 0x97FE, -/* 20D8 */ 0xBBDA, 0x9858, 0x9859, 0x985A, 0xBBDB, 0x9861, 0x9862, 0x9863, -/* 20E0 */ 0xBBDC, 0xBBDD, 0xBBDE, 0xBBDF, 0xBBE0, 0x9897, 0x9898, 0xBBE1, -/* 20E8 */ 0x9899, 0x989A, 0x989B, 0xBBE2, 0xBBE3, 0xBBE4, 0x98A3, 0xBBE5, -/* 20F0 */ 0x98A4, 0xBBE6, 0xBBE7, 0xBBE8, 0x98AB, 0xBBE9, 0xBBEA, 0x98AC, -/* 20F8 */ 0x98AD, 0xBBEB, 0xBBEC, 0xBBED, 0xBBEE, 0x98AE, 0x98AF, 0x98B0, -/* 2100 */ 0x98B1, 0x98B2, 0xBBEF, 0xBBF0, 0x98B3, 0xBBF1, 0xBBF2, 0xBBF3, -/* 2108 */ 0x98B4, 0x98B5, 0x98B6, 0xBBF4, 0x98B7, 0x98B8, 0xBBF5, 0xBBF6, -/* 2110 */ 0x98B9, 0x98BA, 0xBBF7, 0x98BB, 0x98BC, 0x98BD, 0xBBF8, 0xBBF9, -/* 2118 */ 0xBBFA, 0x98C5, 0xBBFB, 0xBBFC, 0xBBFD, 0xBBFE, 0xBCA1, 0x98CC, -/* 2120 */ 0x98CD, 0xBCA2, 0x98CE, 0x98CF, 0x98D0, 0xBCA3, 0xBCA4, 0xBCA5, -/* 2128 */ 0x98D8, 0xBCA6, 0x98D9, 0xBCA7, 0xBCA8, 0x98E0, 0x98E1, 0x98E2, -/* 2130 */ 0xBCA9, 0x98E3, 0x98E4, 0x98E5, 0xBCAA, 0xBCAB, 0x98ED, 0x98EE, -/* 2138 */ 0x98EF, 0x98F0, 0xBCAC, 0xBCAD, 0xBCAE, 0xBCAF, 0xBCB0, 0xBCB1, -/* 2140 */ 0x98F7, 0x98F8, 0xBCB2, 0xBCB3, 0x98F9, 0xBCB4, 0xBCB5, 0x98FA, -/* 2148 */ 0x98FB, 0x98FC, 0x98FD, 0xBCB6, 0xBCB7, 0x98FE, 0xBCB8, 0xBCB9, -/* 2150 */ 0xBCBA, 0x9941, 0x9942, 0x9943, 0x9944, 0xBCBB, 0x9945, 0xBCBC, -/* 2158 */ 0xBCBD, 0x9946, 0x9947, 0xBCBE, 0x9948, 0x9949, 0x994A, 0xBCBF, -/* 2160 */ 0xBCC0, 0xBCC1, 0x9952, 0xBCC2, 0xBCC3, 0xBCC4, 0xBCC5, 0xBCC6, -/* 2168 */ 0x9959, 0x995A, 0xBCC7, 0x9961, 0x9962, 0x9963, 0xBCC8, 0xBCC9, -/* 2170 */ 0xBCCA, 0x996B, 0xBCCB, 0xBCCC, 0xBCCD, 0xBCCE, 0x9972, 0x9973, -/* 2178 */ 0x9974, 0xBCCF, 0x9975, 0x9976, 0x9977, 0xBCD0, 0x9978, 0x9979, -/* 2180 */ 0x997A, 0xBCD2, 0xBCD3, 0xBCD4, 0x9990, 0xBCD5, 0x9991, 0x9992, -/* 2188 */ 0x9993, 0xBCD6, 0x9994, 0xBCD7, 0x9995, 0x9996, 0x9997, 0x9998, -/* 2190 */ 0x9999, 0xBCD8, 0xBCD9, 0x999A, 0xBCDA, 0x999B, 0xBCDB, 0x999C, -/* 2198 */ 0x999D, 0x999E, 0xBCDC, 0x999F, 0x99A0, 0xBCDD, 0xBCDE, 0x99A1, -/* 21A0 */ 0x99A2, 0xBCDF, 0x99A3, 0x99A4, 0x99A5, 0xBCE0, 0xBCE2, 0x99B8, -/* 21A8 */ 0x99B9, 0x99BA, 0xBCE3, 0x99BB, 0x99BC, 0x99BD, 0xBCE4, 0xBCE5, -/* 21B0 */ 0x99C5, 0x99C6, 0xBCE6, 0xBCE7, 0xBCE8, 0x99CE, 0x99CF, 0x99D0, -/* 21B8 */ 0xBCE9, 0x99D1, 0x99D2, 0x99D3, 0xBCEA, 0xBCEB, 0xBCEC, 0x99DB, -/* 21C0 */ 0xBCED, 0xBCEE, 0xBCEF, 0x99E4, 0x99E5, 0xBCF0, 0x99E6, 0x99E7, -/* 21C8 */ 0x99E8, 0xBCF1, 0xBCF2, 0xBCF3, 0x99F0, 0xBCF4, 0x99F1, 0xBCF5, -/* 21D0 */ 0xBCF6, 0xBCF7, 0x99F8, 0x99F9, 0xBCF8, 0x99FA, 0x99FB, 0xBCF9, -/* 21D8 */ 0xBCFA, 0x99FC, 0x99FD, 0x99FE, 0x9A41, 0x9A42, 0x9A43, 0x9A44, -/* 21E0 */ 0xBCFB, 0xBCFC, 0x9A45, 0xBCFD, 0x9A46, 0xBCFE, 0x9A47, 0xBDA1, -/* 21E8 */ 0x9A48, 0xBDA2, 0xBDA3, 0x9A49, 0xBDA4, 0x9A61, 0x9A62, 0xBDA5, -/* 21F0 */ 0xBDA6, 0xBDA7, 0x9A6A, 0x9A6B, 0xBDA8, 0x9A6C, 0x9A6D, 0x9A6E, -/* 21F8 */ 0xBDA9, 0xBDAA, 0x9A76, 0x9A77, 0x9A78, 0x9A79, 0xBDAB, 0x9A7A, -/* 2200 */ 0x9A81, 0x9A82, 0x9A83, 0x9A84, 0x9A85, 0xBDAC, 0xBDAD, 0x9A86, -/* 2208 */ 0x9A87, 0xBDAE, 0x9A88, 0x9A89, 0x9A8A, 0xBDAF, 0xBDB0, 0xBDB1, -/* 2210 */ 0x9A92, 0xBDB2, 0x9A93, 0xBDB3, 0xBDB4, 0xBDB5, 0xBDB7, 0x9AA7, -/* 2218 */ 0x9AA8, 0xBDB8, 0x9AA9, 0xBDB9, 0xBDBA, 0xBDBB, 0x9AB0, 0x9AB1, -/* 2220 */ 0xBDBC, 0x9AB2, 0x9AB3, 0x9AB4, 0xBDBD, 0xBDBE, 0xBDBF, 0xBDC0, -/* 2228 */ 0x9ABB, 0xBDC1, 0x9ABC, 0xBDC2, 0xBDC3, 0xBDC4, 0x9ADF, 0x9AE0, -/* 2230 */ 0xBDC5, 0x9AE1, 0x9AE2, 0xBDC6, 0xBDC7, 0xBDC8, 0xBDC9, 0xBDCA, -/* 2238 */ 0x9AE9, 0xBDCB, 0x9AEA, 0xBDCC, 0x9AEB, 0x9AEC, 0x9AED, 0x9AEE, -/* 2240 */ 0xBDCD, 0x9AEF, 0xBDCE, 0xBDCF, 0x9AF0, 0xBDD0, 0xBDD1, 0x9AF1, -/* 2248 */ 0x9AF2, 0x9AF3, 0xBDD2, 0xBDD3, 0xBDD4, 0x9AFB, 0x9AFC, 0xBDD5, -/* 2250 */ 0xBDD6, 0x9AFD, 0x9AFE, 0x9B41, 0x9B42, 0x9B43, 0xBDD7, 0xBDD8, -/* 2258 */ 0xBDD9, 0x9B44, 0x9B45, 0xBDDA, 0x9B46, 0x9B47, 0x9B48, 0xBDDB, -/* 2260 */ 0xBDDC, 0xBDDD, 0x9B50, 0x9B51, 0xBDDE, 0xBDDF, 0xBDE1, 0xBDE2, -/* 2268 */ 0x9B9B, 0x9B9C, 0xBDE3, 0x9B9D, 0x9B9E, 0x9B9F, 0xBDE4, 0x9BA0, -/* 2270 */ 0xBDE5, 0x9BA1, 0x9BA2, 0x9BA3, 0x9BA4, 0x9BA5, 0xBDE6, 0xBDE7, -/* 2278 */ 0x9BA6, 0x9BA7, 0xBDE8, 0xBDE9, 0xBDEA, 0x9BAE, 0x9BAF, 0x9BB0, -/* 2280 */ 0xBDEB, 0x9BB1, 0x9BB2, 0x9BB3, 0xBDEC, 0xBDEE, 0xBDEF, 0x9BFE, -/* 2288 */ 0x9C41, 0xBDF0, 0x9C42, 0x9C43, 0xBDF1, 0xBDF2, 0x9C44, 0xBDF3, -/* 2290 */ 0x9C45, 0x9C46, 0x9C47, 0x9C48, 0x9C49, 0xBDF4, 0xBDF5, 0x9C4A, -/* 2298 */ 0x9C4B, 0x9C4C, 0xBDF6, 0xBDF7, 0xBDF8, 0x9C53, 0x9C54, 0xBDF9, -/* 22A0 */ 0xBDFD, 0x9C91, 0x9C92, 0x9C93, 0xBDFE, 0x9C94, 0x9C95, 0x9C96, -/* 22A8 */ 0xBEA1, 0xBEA2, 0xBEA3, 0xBEA5, 0xBEA6, 0x9CC3, 0x9CC4, 0xBEA7, -/* 22B0 */ 0x9CC5, 0x9CC6, 0x9CC7, 0xBEA8, 0xBEA9, 0xBEAA, 0x9CCF, 0x9CD0, -/* 22B8 */ 0x9CD1, 0xBEAB, 0xBEAF, 0x9D4F, 0x9D50, 0x9D51, 0xBEB0, 0xBEB2, -/* 22C0 */ 0xBEB3, 0x9D90, 0x9D91, 0xBEB4, 0x9D92, 0x9D93, 0x9D94, 0xBEB5, -/* 22C8 */ 0x9D95, 0xBEB6, 0x9D96, 0x9D97, 0x9D98, 0x9D99, 0xBEB7, 0xBEB8, -/* 22D0 */ 0xBEB9, 0xBEBA, 0x9DA4, 0x9DA5, 0x9DA6, 0xBEBB, 0x9DA7, 0x9DA8, -/* 22D8 */ 0x9DA9, 0xBEBC, 0xBEBE, 0xBEBF, 0x9DBC, 0x9DBD, 0xBEC0, 0x9DBE, -/* 22E0 */ 0x9DBF, 0x9DC0, 0xBEC1, 0xBEC2, 0xBEC3, 0x9DC8, 0xBEC4, 0x9DC9, -/* 22E8 */ 0xBEC5, 0xBEC6, 0xBEC7, 0x9DD0, 0x9DD1, 0xBEC8, 0xBEC9, 0xBECA, -/* 22F0 */ 0x9DD2, 0xBECB, 0xBECC, 0xBECD, 0x9DD3, 0x9DD4, 0x9DD5, 0x9DD6, -/* 22F8 */ 0xBECE, 0xBECF, 0xBED0, 0x9DD7, 0xBED1, 0xBED2, 0xBED3, 0x9DD8, -/* 2300 */ 0x9DD9, 0x9DDA, 0xBED4, 0xBED5, 0x9DDB, 0xBED6, 0xBED7, 0x9DDC, -/* 2308 */ 0x9DDD, 0xBED8, 0x9DDE, 0x9DDF, 0x9DE0, 0xBED9, 0xBEDA, 0xBEDB, -/* 2310 */ 0x9DE8, 0xBEDC, 0xBEDD, 0xBEDE, 0xBEDF, 0xBEE0, 0x9DEF, 0x9DF0, -/* 2318 */ 0xBEE1, 0x9DF1, 0x9DF2, 0x9DF3, 0xBEE2, 0x9DF4, 0x9DF5, 0xBEE3, -/* 2320 */ 0x9DF6, 0x9DF7, 0x9DF8, 0x9DF9, 0xBEE4, 0xBEE5, 0x9DFA, 0xBEE6, -/* 2328 */ 0x9DFB, 0xBEE7, 0x9DFC, 0x9DFD, 0x9DFE, 0xBEE8, 0x9E41, 0xBEE9, -/* 2330 */ 0xBEEA, 0x9E42, 0x9E43, 0x9E44, 0xBEEB, 0x9E45, 0x9E46, 0x9E47, -/* 2338 */ 0xBEEC, 0xBEEE, 0xBEEF, 0x9E5A, 0x9E61, 0xBEF0, 0xBEF1, 0x9E62, -/* 2340 */ 0xBEF2, 0xBEF3, 0xBEF4, 0xBEF5, 0x9E63, 0x9E64, 0x9E65, 0x9E66, -/* 2348 */ 0x9E67, 0x9E68, 0xBEFD, 0x9E69, 0xBEFE, 0x9E6A, 0xBFA1, 0xBFA2, -/* 2350 */ 0x9E6B, 0x9E6C, 0xBFA3, 0x9E6D, 0x9E6E, 0x9E6F, 0xBFA4, 0xBFA5, -/* 2358 */ 0xBFA6, 0x9E77, 0xBFA7, 0x9E78, 0xBFA8, 0x9E79, 0x9E7A, 0x9E81, -/* 2360 */ 0x9E82, 0x9E83, 0x9E84, 0xBFA9, 0xBFAA, 0xBFAB, 0x9E85, 0xBFAC, -/* 2368 */ 0x9E86, 0x9E87, 0x9E88, 0xBFAD, 0x9E89, 0xBFAE, 0xBFAF, 0x9E8A, -/* 2370 */ 0x9E8B, 0x9E8C, 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0xBFB6, 0xBFB7, -/* 2378 */ 0xBFB8, 0xBFB9, 0x9E91, 0x9E92, 0x9E93, 0xBFBA, 0x9E94, 0x9E95, -/* 2380 */ 0x9E96, 0xBFBB, 0xBFBC, 0xBFBD, 0x9E9E, 0xBFBE, 0xBFBF, 0xBFC0, -/* 2388 */ 0xBFC1, 0x9EA6, 0x9EA7, 0xBFC2, 0x9EA8, 0x9EA9, 0x9EAA, 0xBFC3, -/* 2390 */ 0xBFC4, 0xBFC5, 0x9EAB, 0xBFC6, 0x9EAC, 0x9EAD, 0xBFC7, 0xBFC8, -/* 2398 */ 0xBFC9, 0x9EAE, 0xBFCA, 0x9EAF, 0xBFCB, 0x9EB0, 0xBFCC, 0x9EB1, -/* 23A0 */ 0x9EB2, 0x9EB3, 0x9EB4, 0xBFCD, 0xBFCE, 0x9EB5, 0x9EB6, 0xBFCF, -/* 23A8 */ 0x9EB7, 0x9EB8, 0x9EB9, 0xBFD0, 0xBFD1, 0xBFD2, 0x9EC1, 0xBFD3, -/* 23B0 */ 0xBFD4, 0xBFD5, 0xBFD6, 0xBFD7, 0x9EC8, 0x9EC9, 0xBFD8, 0xBFD9, -/* 23B8 */ 0x9ED5, 0x9ED6, 0xBFDA, 0x9ED7, 0xBFDB, 0xBFDC, 0xBFDD, 0x9EDE, -/* 23C0 */ 0x9EDF, 0xBFDE, 0x9EE0, 0x9EE1, 0x9EE2, 0xBFDF, 0xBFE0, 0xBFE1, -/* 23C8 */ 0x9EEA, 0xBFE2, 0x9EEB, 0xBFE3, 0xBFE4, 0xBFE5, 0x9EF2, 0x9EF3, -/* 23D0 */ 0xBFE6, 0x9EF4, 0x9EF5, 0x9EF6, 0xBFE7, 0xBFE8, 0xBFE9, 0x9EFE, -/* 23D8 */ 0xBFEA, 0x9F41, 0xBFEB, 0xBFEC, 0xBFED, 0x9F48, 0x9F49, 0xBFEE, -/* 23E0 */ 0x9F4A, 0x9F4B, 0x9F4C, 0xBFEF, 0xBFF0, 0xBFF1, 0x9F4D, 0x9F4E, -/* 23E8 */ 0x9F4F, 0x9F50, 0x9F51, 0xBFF2, 0xBFF3, 0x9F52, 0xBFF4, 0x9F53, -/* 23F0 */ 0xBFF5, 0xBFF6, 0xBFF7, 0x9F5A, 0x9F61, 0xBFF8, 0x9F62, 0x9F63, -/* 23F8 */ 0x9F64, 0xBFF9, 0xBFFA, 0xBFFB, 0x9F6C, 0x9F6D, 0xBFFC, 0xBFFD, -/* 2400 */ 0xBFFE, 0xC0A1, 0x9F74, 0x9F75, 0xC0A2, 0x9F76, 0x9F77, 0x9F78, -/* 2408 */ 0xC0A3, 0x9F79, 0x9F7A, 0x9F81, 0x9F82, 0x9F83, 0x9F84, 0x9F85, -/* 2410 */ 0xC0A4, 0xC0A5, 0x9F86, 0x9F87, 0x9F88, 0xC0A6, 0xC0A7, 0xC0A8, -/* 2418 */ 0x9F8F, 0x9F90, 0xC0A9, 0x9F91, 0x9F92, 0x9F93, 0xC0AA, 0xC0AB, -/* 2420 */ 0xC0AC, 0x9F9B, 0xC0AD, 0x9F9C, 0xC0AE, 0xC0AF, 0xC0B0, 0x9FA3, -/* 2428 */ 0x9FA4, 0xC0B1, 0x9FA5, 0x9FA6, 0x9FA7, 0xC0B2, 0xC0B3, 0xC0B4, -/* 2430 */ 0x9FAF, 0xC0B5, 0x9FB0, 0xC0B6, 0x9FB1, 0xC0B7, 0x9FB2, 0x9FB3, -/* 2438 */ 0x9FB4, 0x9FB5, 0xC0B8, 0xC0B9, 0x9FB6, 0x9FB7, 0xC0BA, 0x9FB8, -/* 2440 */ 0x9FB9, 0x9FBA, 0xC0BB, 0x9FBB, 0x9FBC, 0x9FBD, 0x9FBE, 0x9FBF, -/* 2448 */ 0xC0BC, 0x9FC0, 0xC0BD, 0xC0BE, 0x9FC1, 0xC0BF, 0x9FC2, 0x9FC3, -/* 2450 */ 0x9FC4, 0x9FC5, 0xC0C8, 0x9FC6, 0x9FC7, 0x9FC8, 0xC0C9, 0xC0CA, -/* 2458 */ 0x9FD0, 0x9FD1, 0xC0CB, 0xC0CC, 0xC0CD, 0x9FDA, 0x9FDB, 0xC0CE, -/* 2460 */ 0x9FDC, 0x9FDD, 0x9FDE, 0xC0CF, 0xC0D0, 0xC0D1, 0x9FDF, 0x9FE0, -/* 2468 */ 0x9FE1, 0x9FE2, 0xC0D2, 0xC0D3, 0xC0D4, 0x9FE3, 0xC0D5, 0xC0D6, -/* 2470 */ 0xC0D7, 0xC0D8, 0x9FE4, 0x9FE5, 0x9FE6, 0xC0D9, 0x9FE7, 0xC0DA, -/* 2478 */ 0xC0DB, 0x9FE8, 0x9FE9, 0xC0DC, 0x9FEA, 0xC0DD, 0xC0DE, 0xC0DF, -/* 2480 */ 0x9FEB, 0xC0E0, 0x9FEC, 0x9FED, 0x9FEE, 0x9FEF, 0x9FF0, 0xC0E1, -/* 2488 */ 0xC0E2, 0x9FF1, 0xC0E3, 0xC0E4, 0xC0E5, 0xC0E6, 0x9FF2, 0x9FF3, -/* 2490 */ 0x9FF4, 0x9FF5, 0x9FF6, 0xC0E7, 0xC0E8, 0x9FF7, 0x9FF8, 0xC0E9, -/* 2498 */ 0x9FF9, 0x9FFA, 0x9FFB, 0xC0EA, 0x9FFC, 0x9FFD, 0x9FFE, 0xA041, -/* 24A0 */ 0xA042, 0xA043, 0xA044, 0xC0EB, 0xC0EC, 0xA045, 0xC0ED, 0xC0EE, -/* 24A8 */ 0xC0EF, 0xC0F0, 0xC0F1, 0xA04C, 0xA04D, 0xC0F2, 0xA04E, 0xC0F3, -/* 24B0 */ 0xA04F, 0xC0F4, 0xC0F5, 0xA057, 0xA058, 0xA059, 0xA05A, 0xC0F6, -/* 24B8 */ 0xC0F7, 0xA067, 0xA068, 0xA069, 0xC0F8, 0xA06A, 0xA06B, 0xA06C, -/* 24C0 */ 0xC0F9, 0xA081, 0xA082, 0xA083, 0xA084, 0xA085, 0xC0FA, 0xC0FB, -/* 24C8 */ 0xA086, 0xA087, 0xC0FC, 0xA088, 0xA089, 0xA08A, 0xC0FD, 0xA08B, -/* 24D0 */ 0xC0FE, 0xA08C, 0xA08D, 0xA08E, 0xA08F, 0xA090, 0xC1A1, 0xC1A2, -/* 24D8 */ 0xA091, 0xC1A3, 0xA092, 0xC1A4, 0xC1A5, 0xA093, 0xA094, 0xA095, -/* 24E0 */ 0xA096, 0xA097, 0xC1A6, 0xC1A7, 0xA098, 0xA099, 0xC1A8, 0xA09A, -/* 24E8 */ 0xA09B, 0xA09C, 0xC1A9, 0xC1AA, 0xC1AB, 0xA0A4, 0xC1AC, 0xA0A5, -/* 24F0 */ 0xC1AD, 0xC1AE, 0xA0AC, 0xA0AD, 0xA0AE, 0xC1AF, 0xA0AF, 0xA0B0, -/* 24F8 */ 0xA0B1, 0xC1B0, 0xC1B1, 0xC1B2, 0xA0B9, 0xA0BA, 0xC1B3, 0xC1B4, -/* 2500 */ 0xC1B6, 0xC1B7, 0xA0DC, 0xA0DD, 0xC1B8, 0xA0DE, 0xA0DF, 0xA0E0, -/* 2508 */ 0xC1B9, 0xA0E1, 0xC1BA, 0xA0E2, 0xA0E3, 0xA0E4, 0xA0E5, 0xA0E6, -/* 2510 */ 0xC1BB, 0xC1BC, 0xA0E7, 0xC1BD, 0xA0E8, 0xC1BE, 0xC1BF, 0xC1C0, -/* 2518 */ 0xA0E9, 0xA0EA, 0xA0EB, 0xC1C1, 0xC1C2, 0xC1C3, 0xC1C5, 0xA0FA, -/* 2520 */ 0xC1C6, 0xA0FB, 0xC1C7, 0xA0FC, 0xA0FD, 0xA0FE, 0xA141, 0xA142, -/* 2528 */ 0xA143, 0xC1C8, 0xC1C9, 0xC1CA, 0xA157, 0xA158, 0xA159, 0xA15A, -/* 2530 */ 0xA161, 0xA162, 0xC1CB, 0xA163, 0xA164, 0xA165, 0xC1CC, 0xA166, -/* 2538 */ 0xA167, 0xA168, 0xC1CD, 0xC1CE, 0xC1CF, 0xA170, 0xC1D0, 0xA171, -/* 2540 */ 0xC1D1, 0xC1D2, 0xC1D3, 0xA178, 0xA179, 0xC1D4, 0xA17A, 0xC1D6, -/* 2548 */ 0xC1D7, 0xA196, 0xA197, 0xC1D8, 0xA198, 0xA199, 0xA19A, 0xC1D9, -/* 2550 */ 0xC1DA, 0xC1DB, 0xA19B, 0xA19C, 0xA19D, 0xA19E, 0xA19F, 0xC1DC, -/* 2558 */ 0xC1DD, 0xA1A0, 0xC1DE, 0xA241, 0xC1DF, 0xC1E3, 0xC1E4, 0xA289, -/* 2560 */ 0xA28A, 0xC1E5, 0xA28B, 0xA28C, 0xA28D, 0xC1E6, 0xC1E7, 0xC1E8, -/* 2568 */ 0xA295, 0xC1E9, 0xC1EA, 0xA29E, 0xA29F, 0xA2A0, 0xC1EB, 0xA341, -/* 2570 */ 0xA342, 0xA343, 0xC1EC, 0xC1EE, 0xC1EF, 0xA356, 0xA357, 0xC1F0, -/* 2578 */ 0xA358, 0xA359, 0xA35A, 0xC1F1, 0xC1F2, 0xC1F3, 0xA368, 0xC1F4, -/* 2580 */ 0xA369, 0xC1F5, 0xC1F6, 0xC1F7, 0xA392, 0xA393, 0xC1F8, 0xA394, -/* 2588 */ 0xA395, 0xC1F9, 0xC1FA, 0xA396, 0xC1FB, 0xA397, 0xA398, 0xA399, -/* 2590 */ 0xA39A, 0xA39B, 0xC1FC, 0xC1FD, 0xA39C, 0xC1FE, 0xA39D, 0xC2A1, -/* 2598 */ 0xC2A2, 0xA39E, 0xA39F, 0xC2A3, 0xC2A4, 0xA3A0, 0xC2A5, 0xC2A6, -/* 25A0 */ 0xA441, 0xA442, 0xC2A7, 0xA443, 0xC2A8, 0xA444, 0xC2A9, 0xA445, -/* 25A8 */ 0xA446, 0xC2AA, 0xA447, 0xA448, 0xA449, 0xA44A, 0xC2AB, 0xC2AC, -/* 25B0 */ 0xA44B, 0xC2AD, 0xC2AE, 0xC2AF, 0xC2B0, 0xC2B1, 0xA452, 0xA453, -/* 25B8 */ 0xC2B2, 0xA454, 0xA455, 0xA456, 0xC2B3, 0xA457, 0xA458, 0xA459, -/* 25C0 */ 0xA45A, 0xA461, 0xA462, 0xA463, 0xC2B4, 0xC2B5, 0xA464, 0xC2B6, -/* 25C8 */ 0xC2B7, 0xC2B8, 0xC2B9, 0xA46B, 0xA46C, 0xA46D, 0xC2BA, 0xA481, -/* 25D0 */ 0xA482, 0xA483, 0xC2BB, 0xA541, 0xA542, 0xA543, 0xA544, 0xA545, -/* 25D8 */ 0xC2BC, 0xC2BD, 0xA546, 0xA547, 0xC2BE, 0xA548, 0xA549, 0xA54A, -/* 25E0 */ 0xC2BF, 0xC2C0, 0xC2C1, 0xA552, 0xC2C2, 0xC2C3, 0xC2C4, 0xC2C5, -/* 25E8 */ 0xA559, 0xA55A, 0xC2C7, 0xA579, 0xA57A, 0xC2C9, 0xC2CA, 0xA655, -/* 25F0 */ 0xA656, 0xC2CB, 0xA657, 0xA658, 0xA659, 0xC2CC, 0xA65A, 0xC2CD, -/* 25F8 */ 0xC2CE, 0xA667, 0xC2CF, 0xA668, 0xC2D0, 0xA669, 0xC2D1, 0xA66A, -/* 2600 */ 0xA66B, 0xA66C, 0xA66D, 0xC2D2, 0xC2D3, 0xA681, 0xA682, 0xA683, -/* 2608 */ 0xA684, 0xC2D5, 0xC2D7, 0xA69F, 0xA6A0, 0xA741, 0xA742, 0xA743, -/* 2610 */ 0xA744, 0xA745, 0xC2D8, 0xA746, 0xA747, 0xA748, 0xC2D9, 0xA749, -/* 2618 */ 0xA74A, 0xA74B, 0xC2DA, 0xC2DB, 0xC2DC, 0xC2DD, 0xA778, 0xA779, -/* 2620 */ 0xA77A, 0xA781, 0xA782, 0xA783, 0xC2DE, 0xC2DF, 0xA784, 0xA785, -/* 2628 */ 0xC2E0, 0xA786, 0xA787, 0xA788, 0xC2E1, 0xC2E2, 0xC2E3, 0xA790, -/* 2630 */ 0xA791, 0xA792, 0xC2E4, 0xC2E6, 0xC2E7, 0xA961, 0xA962, 0xA963, -/* 2638 */ 0xA964, 0xC2EB, 0xA965, 0xA966, 0xC2EC, 0xA967, 0xC2ED, 0xC2EE, -/* 2640 */ 0xC2EF, 0xA990, 0xA991, 0xC2F0, 0xA992, 0xA993, 0xA994, 0xC2F1, -/* 2648 */ 0xC2F2, 0xC2F3, 0xA99C, 0xA99D, 0xA99E, 0xC2F4, 0xC2F5, 0xA99F, -/* 2650 */ 0xA9A0, 0xAA41, 0xAA42, 0xC2F6, 0xC2F7, 0xC2F8, 0xAA43, 0xAA44, -/* 2658 */ 0xC2F9, 0xAA45, 0xC2FA, 0xAA46, 0xC2FB, 0xC2FC, 0xC2FD, 0xAA4E, -/* 2660 */ 0xC2FE, 0xC3A1, 0xC3A2, 0xC3A3, 0xAA4F, 0xAA50, 0xAA51, 0xAA52, -/* 2668 */ 0xAA53, 0xC3A4, 0xC3A5, 0xAA54, 0xAA55, 0xC3A6, 0xAA56, 0xAA57, -/* 2670 */ 0xAA58, 0xC3A7, 0xAA59, 0xAA5A, 0xAA61, 0xAA62, 0xAA63, 0xAA64, -/* 2678 */ 0xAA65, 0xC3A8, 0xC3A9, 0xAA66, 0xC3AA, 0xC3AB, 0xC3AC, 0xC3AD, -/* 2680 */ 0xAA6D, 0xAA6E, 0xAA6F, 0xC3AE, 0xAA70, 0xC3AF, 0xAA71, 0xC3B0, -/* 2688 */ 0xC3B1, 0xAA79, 0xAA7A, 0xAA81, 0xAA82, 0xC3B2, 0xAB41, 0xAB42, -/* 2690 */ 0xAB43, 0xAB44, 0xC3B3, 0xC3B4, 0xAB45, 0xAB46, 0xC3B5, 0xAB47, -/* 2698 */ 0xAB48, 0xAB49, 0xC3B6, 0xC3B7, 0xC3B8, 0xAB51, 0xC3B9, 0xC3BA, -/* 26A0 */ 0xC3BB, 0xC3BC, 0xC3BD, 0xAB58, 0xAB59, 0xC3BE, 0xAB5A, 0xAB61, -/* 26A8 */ 0xAB62, 0xC3BF, 0xC3C0, 0xC3C1, 0xAB6A, 0xC3C2, 0xAB6B, 0xC3C3, -/* 26B0 */ 0xC3C4, 0xAB72, 0xAB73, 0xAB74, 0xC3C5, 0xC3C7, 0xAB91, 0xAB92, -/* 26B8 */ 0xAB93, 0xC3C8, 0xAC41, 0xAC42, 0xAC43, 0xC3C9, 0xC3CA, 0xC3CB, -/* 26C0 */ 0xAC4A, 0xAC4B, 0xC3CC, 0xAC4C, 0xAC4D, 0xAC4E, 0xC3CD, 0xC3CE, -/* 26C8 */ 0xC3CF, 0xAC56, 0xC3D0, 0xAC57, 0xC3D1, 0xAC58, 0xAC59, 0xAC5A, -/* 26D0 */ 0xAC61, 0xAC62, 0xAC63, 0xC3D2, 0xAC64, 0xAC65, 0xAC66, 0xC3D3, -/* 26D8 */ 0xAC67, 0xAC68, 0xAC69, 0xC3D4, 0xC3D5, 0xAC76, 0xAC77, 0xAC78, -/* 26E0 */ 0xAC79, 0xAC7A, 0xC3D6, 0xAC9E, 0xAC9F, 0xACA0, 0xC3D7, 0xAD41, -/* 26E8 */ 0xAD42, 0xAD43, 0xC3D8, 0xC3D9, 0xC3DA, 0xAD4B, 0xC3DB, 0xAD4C, -/* 26F0 */ 0xC3DC, 0xC3DF, 0xC3E0, 0xAD73, 0xAD74, 0xC3E1, 0xAD75, 0xAD76, -/* 26F8 */ 0xAD77, 0xC3E2, 0xAD78, 0xAD79, 0xAD7A, 0xAD81, 0xAD82, 0xAD83, -/* 2700 */ 0xAD84, 0xC3E3, 0xC3E4, 0xAD85, 0xC3E5, 0xAD86, 0xC3E6, 0xC3E8, -/* 2708 */ 0xADA0, 0xC3E9, 0xAE47, 0xAE48, 0xAE49, 0xC3EA, 0xC3EB, 0xAE67, -/* 2710 */ 0xAE68, 0xAE69, 0xC3EC, 0xAE6A, 0xAE6B, 0xAE6C, 0xC3ED, 0xC3EE, -/* 2718 */ 0xC3EF, 0xAE74, 0xC3F0, 0xAE75, 0xC3F1, 0xAE76, 0xAE77, 0xAE78, -/* 2720 */ 0xAE79, 0xAE7A, 0xAE81, 0xC3F2, 0xAE82, 0xAE83, 0xAE84, 0xC3F3, -/* 2728 */ 0xAE85, 0xAE86, 0xAE87, 0xC3F4, 0xC3F5, 0xAE8F, 0xAE90, 0xAE91, -/* 2730 */ 0xAE92, 0xC3F6, 0xC3F7, 0xC3F8, 0xAE99, 0xAE9A, 0xC3F9, 0xAE9B, -/* 2738 */ 0xAE9C, 0xAE9D, 0xC3FA, 0xAE9E, 0xAE9F, 0xAEA0, 0xAF41, 0xAF42, -/* 2740 */ 0xAF43, 0xAF44, 0xC3FB, 0xC3FC, 0xAF45, 0xC3FD, 0xAF46, 0xC3FE, -/* 2748 */ 0xC4A1, 0xC4A2, 0xAF6F, 0xAF70, 0xC4A3, 0xAF71, 0xAF72, 0xC4A4, -/* 2750 */ 0xC4A5, 0xC4A6, 0xC4A7, 0xC4A8, 0xAF79, 0xC4A9, 0xAF7A, 0xC4AA, -/* 2758 */ 0xC4AB, 0xC4AC, 0xAF87, 0xAF88, 0xC4AD, 0xAF89, 0xAF8A, 0xAF8B, -/* 2760 */ 0xC4AE, 0xC4AF, 0xC4B0, 0xAF93, 0xC4B1, 0xAF94, 0xC4B2, 0xC4B3, -/* 2768 */ 0xC4B4, 0xAF9B, 0xAF9C, 0xC4B5, 0xAF9D, 0xAF9E, 0xAF9F, 0xC4B6, -/* 2770 */ 0xAFA0, 0xC4B7, 0xC4B8, 0xB047, 0xC4B9, 0xC4BA, 0xC4BB, 0xC4BC, -/* 2778 */ 0xC4BD, 0xC4BF, 0xC4C0, 0xB08F, 0xB090, 0xC4C1, 0xB091, 0xB092, -/* 2780 */ 0xC4C2, 0xC4C3, 0xC4C4, 0xC4C5, 0xB09A, 0xC4C6, 0xC4C7, 0xC4C8, -/* 2788 */ 0xC4C9, 0xC4CA, 0xB141, 0xB142, 0xC4CB, 0xB143, 0xB144, 0xB145, -/* 2790 */ 0xC4CC, 0xC4CD, 0xC4CE, 0xB14D, 0xC4CF, 0xB14E, 0xC4D0, 0xC4D1, -/* 2798 */ 0xB155, 0xB156, 0xB157, 0xC4D2, 0xB158, 0xB159, 0xB15A, 0xC4D3, -/* 27A0 */ 0xC4D4, 0xC4D5, 0xB168, 0xC4D6, 0xC4D7, 0xC4D8, 0xC4DA, 0xC4DB, -/* 27A8 */ 0xB190, 0xB191, 0xC4DC, 0xB192, 0xB193, 0xB194, 0xC4DD, 0xC4DE, -/* 27B0 */ 0xC4DF, 0xB19C, 0xC4E0, 0xB19D, 0xC4E1, 0xB19E, 0xB19F, 0xB1A0, -/* 27B8 */ 0xB241, 0xB242, 0xB243, 0xC4E2, 0xC4E3, 0xB244, 0xB245, 0xC4E4, -/* 27C0 */ 0xB246, 0xB247, 0xB248, 0xC4E5, 0xC4E6, 0xB250, 0xB251, 0xB252, -/* 27C8 */ 0xB253, 0xC4E7, 0xC4E8, 0xB25A, 0xC4EA, 0xB27A, 0xC4ED, 0xC4EE, -/* 27D0 */ 0xB355, 0xB356, 0xC4EF, 0xB357, 0xB358, 0xB359, 0xC4F0, 0xB35A, -/* 27D8 */ 0xC4F1, 0xC4F2, 0xB367, 0xC4F3, 0xB368, 0xC4F4, 0xC4F5, 0xB36F, -/* 27E0 */ 0xB370, 0xB371, 0xC4F6, 0xB372, 0xB373, 0xB374, 0xC4F7, 0xC4FB, -/* 27E8 */ 0xC4FC, 0xB447, 0xB448, 0xC4FD, 0xB449, 0xB44A, 0xB44B, 0xC4FE, -/* 27F0 */ 0xC5A1, 0xC5A2, 0xB453, 0xC5A3, 0xB454, 0xC5A4, 0xC5A5, 0xB461, -/* 27F8 */ 0xB462, 0xB463, 0xC5A6, 0xB464, 0xB465, 0xB466, 0xC5A7, 0xC5A9, -/* 2800 */ 0xC5AA, 0xB479, 0xB47A, 0xC5AB, 0xB481, 0xB482, 0xB483, 0xC5AC, -/* 2808 */ 0xC5AD, 0xC5AE, 0xB48B, 0xB48C, 0xB48D, 0xC5AF, 0xC5B0, 0xC5B1, -/* 2810 */ 0xB550, 0xB551, 0xC5B2, 0xB552, 0xB553, 0xB554, 0xC5B3, 0xB561, -/* 2818 */ 0xC5B4, 0xC5B5, 0xB562, 0xC5B6, 0xB563, 0xC5B7, 0xC5B8, 0xC5B9, -/* 2820 */ 0xB56A, 0xB56B, 0xC5BA, 0xB56C, 0xB56D, 0xB56E, 0xC5BB, 0xC5BC, -/* 2828 */ 0xC5BD, 0xC5BE, 0xB575, 0xC5BF, 0xC5C0, 0xC5C1, 0xB576, 0xB577, -/* 2830 */ 0xB578, 0xB579, 0xB57A, 0xB581, 0xC5C2, 0xC5C3, 0xB582, 0xB583, -/* 2838 */ 0xC5C4, 0xB584, 0xB585, 0xB586, 0xC5C5, 0xC5C6, 0xC5C7, 0xB58E, -/* 2840 */ 0xC5C8, 0xC5C9, 0xC5CA, 0xC5CD, 0xC5CE, 0xB671, 0xB672, 0xC5CF, -/* 2848 */ 0xB673, 0xB674, 0xB675, 0xC5D0, 0xB676, 0xC5D1, 0xB677, 0xB678, -/* 2850 */ 0xB679, 0xB67A, 0xB681, 0xC5D2, 0xC5D3, 0xB682, 0xC5D4, 0xC5D5, -/* 2858 */ 0xC5D6, 0xC5D7, 0xC5D8, 0xB689, 0xB68A, 0xC5D9, 0xB68B, 0xB68C, -/* 2860 */ 0xB68D, 0xC5DA, 0xC5DB, 0xC5DC, 0xB695, 0xC5DD, 0xB696, 0xC5DE, -/* 2868 */ 0xC5DF, 0xB69D, 0xB69E, 0xB69F, 0xC5E0, 0xB6A0, 0xC5E2, 0xB756, -/* 2870 */ 0xB757, 0xB758, 0xC5E3, 0xB759, 0xB75A, 0xC5E4, 0xC5E5, 0xB776, -/* 2878 */ 0xB777, 0xC5E6, 0xB778, 0xB779, 0xB77A, 0xC5E7, 0xC5E8, 0xC5E9, -/* 2880 */ 0xB788, 0xC5EA, 0xB789, 0xC5EB, 0xB78A, 0xB78B, 0xB78C, 0xB78D, -/* 2888 */ 0xC5EC, 0xB78E, 0xC5ED, 0xB78F, 0xB790, 0xB791, 0xC5EE, 0xC5F0, -/* 2890 */ 0xB86A, 0xB86B, 0xB86C, 0xC5F1, 0xC5F2, 0xB881, 0xC5F3, 0xB941, -/* 2898 */ 0xB942, 0xC5F5, 0xC5F6, 0xB943, 0xB944, 0xC5F7, 0xB945, 0xB946, -/* 28A0 */ 0xB947, 0xC5F8, 0xC5F9, 0xC5FA, 0xB94F, 0xC5FB, 0xB950, 0xC5FC, -/* 28A8 */ 0xC5FD, 0xB957, 0xB958, 0xB959, 0xB95A, 0xC6A1, 0xB977, 0xB978, -/* 28B0 */ 0xB979, 0xB97A, 0xC6A2, 0xC6A3, 0xB998, 0xB999, 0xC6A4, 0xB99A, -/* 28B8 */ 0xB99B, 0xB99C, 0xC6A5, 0xB99D, 0xB99E, 0xB99F, 0xB9A0, 0xBA41, -/* 28C0 */ 0xBA42, 0xBA43, 0xC6A6, 0xC6A7, 0xBA44, 0xBA45, 0xBA46, 0xC6A8, -/* 28C8 */ 0xC6A9, 0xBA4D, 0xBA4E, 0xBA4F, 0xC6AA, 0xBA50, 0xBA51, 0xBA52, -/* 28D0 */ 0xC6AB, 0xC6AC, 0xBA5A, 0xBA61, 0xBA62, 0xBA63, 0xC6AD, 0xC6AE, -/* 28D8 */ 0xC6AF, 0xBA6A, 0xBA6B, 0xC6B0, 0xBA6C, 0xBA6D, 0xC6B1, 0xC6B2, -/* 28E0 */ 0xBA6E, 0xC6B3, 0xBA6F, 0xBA70, 0xBA71, 0xBA72, 0xBA73, 0xC6B4, -/* 28E8 */ 0xC6B5, 0xBA74, 0xC6B6, 0xBA81, 0xBA82, 0xC6B7, 0xBA83, 0xBA84, -/* 28F0 */ 0xBA85, 0xC6B8, 0xBA86, 0xBA87, 0xBA88, 0xC6B9, 0xC6BA, 0xC6BB, -/* 28F8 */ 0xC6BC, 0xC6BD, 0xBA9A, 0xBA9B, 0xC6BE, 0xBA9C, 0xBA9D, 0xBA9E, -/* 2900 */ 0xC6BF, 0xBA9F, 0xBAA0, 0xBB41, 0xBB42, 0xBB43, 0xBB44, 0xBB45, -/* 2908 */ 0xC6C0, 0xC6C1, 0xBB46, 0xC6C2, 0xBB47, 0xC6C3, 0xC6C4, 0xC6C5, -/* 2910 */ 0xC6C6, 0xBB4E, 0xC6C7, 0xBB4F, 0xBB50, 0xBB51, 0xC6C8, 0xBB52, -/* 2918 */ 0xC6C9, 0xBB53, 0xBB54, 0xBB55, 0xBB56, 0xBB57, 0xC6CA, 0xC6CB, -/* 2920 */ 0xBB58, 0xC6CC, 0xC6CD, 0xC6CE, 0xBB59, 0xBB5A, 0xBB61, 0xC6CF, -/* 2928 */ 0xBB62, 0xBB63, 0xC6D0, 0xC6D1, 0xBB64, 0xBB65, 0xC6D2, 0xBB66, -/* 2930 */ 0xBB67, 0xBB68, 0xC6D3, 0xC6D4, 0xC6D5, 0xBB70, 0xC6D6, 0xC6D7, -/* 2938 */ 0xC6D8, 0xC6D9, 0xC6DA, 0xBB77, 0xBB78, 0xBB79, 0xBB7A, 0xC6DB, -/* 2940 */ 0xC6DC, 0xBC53, 0xBC54, 0xC6DD, 0xBC55, 0xBC56, 0xBC57, 0xC6DE, -/* 2948 */ 0xBC58, 0xBC59, 0xBC5A, 0xBC61, 0xBC62, 0xBC63, 0xBC64, 0xC6DF, -/* 2950 */ 0xC6E0, 0xBC65, 0xC6E1, 0xC6E2, 0xC6E3, 0xC6E4, 0xC6E5, 0xBC6C, -/* 2958 */ 0xBC6D, 0xC6E6, 0xBC6E, 0xBC6F, 0xBC70, 0xC6E7, 0xC6E8, 0xC6E9, -/* 2960 */ 0xBC78, 0xC6EA, 0xBC79, 0xC6EB, 0xBC7A, 0xBC81, 0xBC82, 0xBC83, -/* 2968 */ 0xBC84, 0xBC85, 0xC6EC, 0xBC86, 0xBC87, 0xBC88, 0xC6ED, 0xBC89, -/* 2970 */ 0xBC8A, 0xBC8B, 0xC6EE, 0xC6EF, 0xC6F0, 0xBC93, 0xBC94, 0xC6F1, -/* 2978 */ 0xC6F2, 0xBD41, 0xC6F4, 0xC6F5, 0xBD4A, 0xC6F6, 0xC6F7, 0xC6F8, -/* 2980 */ 0xBD53, 0xBD54, 0xC6F9, 0xBD55, 0xBD56, 0xBD57, 0xC6FA, 0xBD58, -/* 2988 */ 0xBD59, 0xBD5A, 0xBD61, 0xBD62, 0xBD63, 0xBD64, 0xC6FB, 0xC6FC, -/* 2990 */ 0xBD65, 0xC6FD, 0xBD66, 0xC6FE, 0xC7A3, 0xBE49, 0xBE4A, 0xBE4B, -/* 2998 */ 0xC7A4, 0xC7A5, 0xBE69, 0xBE6A, 0xBE6B, 0xC7A6, 0xBE6C, 0xBE6D, -/* 29A0 */ 0xBE6E, 0xC7A7, 0xC7A8, 0xBE77, 0xC7A9, 0xBE78, 0xBE79, 0xBE7A, -/* 29A8 */ 0xBE81, 0xBE82, 0xBE83, 0xBE84, 0xBE85, 0xC7AA, 0xC7AB, 0xBE86, -/* 29B0 */ 0xBE87, 0xC7AC, 0xBE88, 0xBE89, 0xC7AD, 0xC7AE, 0xBE8A, 0xC7AF, -/* 29B8 */ 0xBE8B, 0xBE8C, 0xBE8D, 0xBE8E, 0xBE8F, 0xC7B0, 0xC7B1, 0xBE90, -/* 29C0 */ 0xC7B2, 0xBE91, 0xC7B3, 0xC7B6, 0xBF74, 0xBF75, 0xBF76, 0xC7B7, -/* 29C8 */ 0xBF77, 0xBF78, 0xBF79, 0xC7B8, 0xBF7A, 0xC7B9, 0xBF87, 0xBF88, -/* 29D0 */ 0xC7BA, 0xC7BB, 0xBF91, 0xBF92, 0xBF93, 0xC7BC, 0xBF94, 0xBF95, -/* 29D8 */ 0xBF96, 0xC7BD, 0xC7BE, 0xBF9E, 0xBF9F, 0xC7BF, 0xBFA0, 0xC7C0, -/* 29E0 */ 0xC7C1, 0xC047, 0xC048, 0xC049, 0xC7C2, 0xC04A, 0xC04B, 0xC04C, -/* 29E8 */ 0xC7C3, 0xC7C4, 0xC7C5, 0xC054, 0xC7C6, 0xC081, 0xC082, 0xC083, -/* 29F0 */ 0xC084, 0xC7C7, 0xC7C8, 0xC085, 0xC086, 0xC7C9, 0xC087, 0xC088, -/* 29F8 */ 0xC089, 0xC7CA, 0xC7CB, 0xC7CC, 0xC091, 0xC7CD, 0xC092, 0xC7CE, -/* 2A00 */ 0xC7CF, 0xC7D0, 0xC099, 0xC09A, 0xC7D1, 0xC09B, 0xC09C, 0xC09D, -/* 2A08 */ 0xC7D2, 0xC09E, 0xC09F, 0xC0A0, 0xC141, 0xC7D3, 0xC142, 0xC143, -/* 2A10 */ 0xC7D4, 0xC7D5, 0xC144, 0xC7D6, 0xC145, 0xC7D7, 0xC7D8, 0xC7D9, -/* 2A18 */ 0xC14C, 0xC14D, 0xC7DA, 0xC14E, 0xC14F, 0xC150, 0xC7DB, 0xC7DC, -/* 2A20 */ 0xC7DD, 0xC158, 0xC7DE, 0xC7DF, 0xC7E0, 0xC159, 0xC15A, 0xC161, -/* 2A28 */ 0xC162, 0xC163, 0xC164, 0xC7E1, 0xC7E2, 0xC179, 0xC17A, 0xC7E3, -/* 2A30 */ 0xC7E4, 0xC241, 0xC242, 0xC7E5, 0xC243, 0xC244, 0xC245, 0xC7E6, -/* 2A38 */ 0xC246, 0xC7E7, 0xC247, 0xC248, 0xC249, 0xC24A, 0xC24B, 0xC7E8, -/* 2A40 */ 0xC7E9, 0xC24C, 0xC7EA, 0xC24D, 0xC7EB, 0xC7EC, 0xC7ED, 0xC254, -/* 2A48 */ 0xC255, 0xC7EE, 0xC256, 0xC257, 0xC258, 0xC7EF, 0xC259, 0xC25A, -/* 2A50 */ 0xC261, 0xC262, 0xC263, 0xC264, 0xC265, 0xC7F0, 0xC7F1, 0xC266, -/* 2A58 */ 0xC7F2, 0xC267, 0xC7F3, 0xC7F4, 0xC7F5, 0xC26E, 0xC26F, 0xC7F6, -/* 2A60 */ 0xC270, 0xC271, 0xC272, 0xC7F7, 0xC7F8, 0xC7F9, 0xC27A, 0xC7FA, -/* 2A68 */ 0xC7FB, 0xC7FC, 0xC7FD, 0xC287, 0xC288, 0xC289, 0xC7FE, 0xC28A, -/* 2A70 */ 0xC28B, 0xC28C, 0xC8A1, 0xC8A3, 0xC8A4, 0xC29F, 0xC2A0, 0xC8A5, -/* 2A78 */ 0xC341, 0xC342, 0xC343, 0xC8A6, 0xC344, 0xC345, 0xC346, 0xC347, -/* 2A80 */ 0xC8A7, 0xC348, 0xC349, 0xC8A8, 0xC8A9, 0xC34A, 0xC8AA, 0xC34B, -/* 2A88 */ 0xC8AB, 0xC34C, 0xC34D, 0xC34E, 0xC8AC, 0xC34F, 0xC350, 0xC8AD, -/* 2A90 */ 0xC8AE, 0xC351, 0xC352, 0xC8AF, 0xC353, 0xC354, 0xC355, 0xC8B0, -/* 2A98 */ 0xC356, 0xC357, 0xC358, 0xC359, 0xC35A, 0xC361, 0xC362, 0xC363, -/* 2AA0 */ 0xC364, 0xC365, 0xC8B1, 0xC366, 0xC8B2, 0xC8B3, 0xC8B4, 0xC36D, -/* 2AA8 */ 0xC36E, 0xC8B5, 0xC381, 0xC382, 0xC8B6, 0xC383, 0xC8B7, 0xC8B8, -/* 2AB0 */ 0xC8B9, 0xC38A, 0xC38B, 0xC8BA, 0xC38C, 0xC38D, 0xC38E, 0xC8BB, -/* 2AB8 */ 0xC8BC, 0xC397, 0xC8BD, 0xC398, 0xC8BE, 0xC8BF, 0xC39F, 0xC3A0, -/* 2AC0 */ 0xC441, 0xC8C0, 0xC442, 0xC443, 0xC444, 0xC8C1, 0xC8C2, 0xC44D, -/* 2AC8 */ 0xC8C3, 0xC8C4, 0xC8C5, 0xC456, 0xC457, 0xC8C6, 0xC458, 0xC459, -/* 2AD0 */ 0xC45A, 0xC8C7, 0xC461, 0xC462, 0xC463, 0xC464, 0xC8C8, 0xC465, -/* 2AD8 */ 0xC466, 0xC8C9, 0xC467, 0xC468, 0xC8CA, 0xC469, 0xC8CB, 0xC8CC, -/* 2AE0 */ 0xC470, 0xC471, 0xC472, 0xC8CD, 0xC473, 0xC474, 0xC475, 0xC8CE, -/* 2AE8 */ 0xC476, 0xC477, 0xC478, 0xC479, 0xC47A, 0xC481, 0xC482, 0xC8CF, -/* 2AF0 */ 0xC483, 0xC484, 0xC485, 0xC486, 0xC8D0, 0xC8D1, 0xC8D2, 0xC48D, -/* 2AF8 */ 0xC48E, 0xC8D3, 0xC48F, 0xC490, 0xC491, 0xC8D4, 0xC8D5, 0xC49E, -/* 2B00 */ 0xC49F, 0xC4A0, 0xC541, 0xC542, 0xC543, 0xC8D6, 0xC8D7, 0xC544, -/* 2B08 */ 0xC545, 0xC8D8, 0xC546, 0xC547, 0xC548, 0xC8D9, 0xC8DA, 0xC8DB, -/* 2B10 */ 0xC550, 0xC8DC, 0xC551, 0xC8DD, 0xC8DE, 0xC8DF, 0xC558, 0xC559, -/* 2B18 */ 0xC8E0, 0xC55A, 0xC561, 0xC562, 0xC8E1, 0xC8E2, 0xC56A, 0xC56B, -/* 2B20 */ 0xC8E3, 0xC56C, 0xC8E4, 0xC8E5, 0xC8E6, 0xC573, 0xC574, 0xC8E7, -/* 2B28 */ 0xC575, 0xC8E8, 0xC8E9, 0xC8EA, 0xC8EB, 0xC576, 0xC577, 0xC578, -/* 2B30 */ 0xC579, 0xC57A, 0xC581, 0xC8EC, 0xC8ED, 0xC582, 0xC8EE, 0xC583, -/* 2B38 */ 0xC8EF, 0xC584, 0xC585, 0xC586, 0xC8F0, 0xC587, 0xC588, 0xC8F1, -/* 2B40 */ 0xC589, 0xC58A, 0xC58B, 0xC8F2, 0xC58C, 0xC58D, 0xC58E, 0xC8F3, -/* 2B48 */ 0xC8F4, 0xC8F5, 0xC596, 0xC597, 0xC598, 0xC8F6, 0xC8F7, 0xC8F8, -/* 2B50 */ 0xC59F, 0xC5A0, 0xC8F9, 0xC641, 0xC642, 0xC643, 0xC8FA, 0xC8FB, -/* 2B58 */ 0xC8FC, 0xC64B, 0xC8FD, 0xC64C, 0xC8FE, 0xCBD0, 0xCBD6, 0xCBE7, -/* 2B60 */ 0xCDCF, 0xCDE8, 0xCEAD, 0xCFFB, 0xD0A2, 0xD0B8, 0xD0D0, 0xD0DD, -/* 2B68 */ 0xD1D4, 0xD1D5, 0xD1D8, 0xD1E2, 0xD1E3, 0xD1E4, 0xD1E5, 0xD1E6, -/* 2B70 */ 0xD1E8, 0xD1E9, 0xD1EA, 0xD1EB, 0xD1ED, 0xD1EF, 0xD1F0, 0xD1F2, -/* 2B78 */ 0xD1F6, 0xD1FA, 0xD1FC, 0xD1FD, 0xD1FE, 0xD2A2, 0xD2A3, 0xD2A7, -/* 2B80 */ 0xD2A8, 0xD2A9, 0xD2AA, 0xD2AB, 0xD2AD, 0xD2B2, 0xD2BE, 0xD2C2, -/* 2B88 */ 0xD2C3, 0xD2C4, 0xD2D9, 0xD2DA, 0xD2DE, 0xD2DF, 0xD2E1, 0xD2E2, -/* 2B90 */ 0xD2F7, 0xD2F8, 0xD4E6, 0xD4FC, 0xD5A5, 0xD5AB, 0xD5AE, 0xD6B8, -/* 2B98 */ 0xD6CD, 0xD7CB, 0xD7E4, 0xDBC5, 0xDBE4, 0xDCA5, 0xDDA5, 0xDDD5, -/* 2BA0 */ 0xDDF4, 0xDEFC, 0xDEFE, 0xDFB3, 0xDFE1, 0xDFE8, 0xE0F1, 0xE1AD, -/* 2BA8 */ 0xE1ED, 0xE3F5, 0xE4A1, 0xE4A9, 0xE5AE, 0xE5B1, 0xE5B2, 0xE5B9, -/* 2BB0 */ 0xE5BB, 0xE5BC, 0xE5C4, 0xE5CE, 0xE5D0, 0xE5D2, 0xE5D6, 0xE5FA, -/* 2BB8 */ 0xE5FB, 0xE5FC, 0xE5FE, 0xE6A1, 0xE6A4, 0xE6A7, 0xE6AD, 0xE6AF, -/* 2BC0 */ 0xE6B0, 0xE6B1, 0xE6B3, 0xE6B7, 0xE6B8, 0xE6BC, 0xE6C4, 0xE6C6, -/* 2BC8 */ 0xE6C7, 0xE6CA, 0xE6D2, 0xE6D6, 0xE6D9, 0xE6DC, 0xE6DF, 0xE6E1, -/* 2BD0 */ 0xE6E4, 0xE6E5, 0xE6E6, 0xE6E8, 0xE6EA, 0xE6EB, 0xE6EC, 0xE6EF, -/* 2BD8 */ 0xE6F1, 0xE6F2, 0xE6F5, 0xE6F6, 0xE6F7, 0xE6F9, 0xE7A1, 0xE7A6, -/* 2BE0 */ 0xE7A9, 0xE7AA, 0xE7AC, 0xE7AD, 0xE7B0, 0xE7BF, 0xE7C1, 0xE7C6, -/* 2BE8 */ 0xE7C7, 0xE7CB, 0xE7CD, 0xE7CF, 0xE7D0, 0xE7D3, 0xE7DF, 0xE7E4, -/* 2BF0 */ 0xE7E6, 0xE7F7, 0xE8E7, 0xE8E8, 0xE8F0, 0xE8F1, 0xE8F7, 0xE8F9, -/* 2BF8 */ 0xE8FB, 0xE8FE, 0xE9A7, 0xE9AC, 0xE9CC, 0xE9F7, 0xEAC1, 0xEAE5, -/* 2C00 */ 0xEAF4, 0xEAF7, 0xEAFC, 0xEAFE, 0xEBA4, 0xEBA7, 0xEBA9, 0xEBAA, -/* 2C08 */ 0xEBBA, 0xEBBB, 0xEBBD, 0xEBC1, 0xEBC2, 0xEBC6, 0xEBC7, 0xEBCC, -/* 2C10 */ 0xEBCF, 0xEBD0, 0xEBD1, 0xEBD2, 0xEBD8, 0xECA6, 0xECA7, 0xECAA, -/* 2C18 */ 0xECAF, 0xECB0, 0xECB1, 0xECB2, 0xECB5, 0xECB8, 0xECBA, 0xECC0, -/* 2C20 */ 0xECC1, 0xECC5, 0xECC6, 0xECC9, 0xECCA, 0xECD5, 0xECDD, 0xECDE, -/* 2C28 */ 0xECE1, 0xECE4, 0xECE7, 0xECE8, 0xECF7, 0xECF8, 0xECFA, 0xEDA1, -/* 2C30 */ 0xEDA2, 0xEDA3, 0xEDEE, 0xEEDB, 0xF2BD, 0xF2FA, 0xF3B1, 0xF4A7, -/* 2C38 */ 0xF4EE, 0xF6F4, 0xF6F6, 0xF7B8, 0xF7C8, 0xF7D3, 0xF8DB, 0xF8F0, -/* 2C40 */ 0xFAA1, 0xFAA2, 0xFAE6, 0xFCA9, 0xA1CB, 0xA1CC, 0xA1FE, 0xA3FE, -/* 2C48 */ 0xFFFD, 0xA1CD, 0xA3DC, -/* End of table Total Length = 0x525F * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/u20kscgl.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/u20kscgl.uf deleted file mode 100644 index 3cc4eded93b..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/u20kscgl.uf +++ /dev/null @@ -1,27426 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0391 - srcEnd = 03A1 - destBegin = 2541 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 03A3 - srcEnd = 03A9 - destBegin = 2552 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 03B1 - srcEnd = 03C1 - destBegin = 2561 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 03C3 - srcEnd = 03C9 - destBegin = 2572 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0410 - srcEnd = 0415 - destBegin = 2C21 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0416 - srcEnd = 042F - destBegin = 2C28 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 0430 - srcEnd = 0435 - destBegin = 2C51 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0436 - srcEnd = 044F - destBegin = 2C58 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2081 - srcEnd = 2084 - destBegin = 297B -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 215B - srcEnd = 215E - destBegin = 287B -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2160 - srcEnd = 2169 - destBegin = 2530 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2170 - srcEnd = 2179 - destBegin = 2521 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 2460 - srcEnd = 246E - destBegin = 2867 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 2474 - srcEnd = 2482 - destBegin = 2967 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 249C - srcEnd = 24B5 - destBegin = 294D -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 24D0 - srcEnd = 24E9 - destBegin = 284D -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 2543 - srcEnd = 254A - destBegin = 265D -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 3000 - srcEnd = 3002 - destBegin = 2121 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 3008 - srcEnd = 3011 - destBegin = 2134 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 3041 - srcEnd = 3093 - destBegin = 2A21 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 30A1 - srcEnd = 30F6 - destBegin = 2B21 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 3131 - srcEnd = 318E - destBegin = 2421 -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 3200 - srcEnd = 321B - destBegin = 2931 -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 3260 - srcEnd = 327B - destBegin = 2831 -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 3380 - srcEnd = 3384 - destBegin = 2749 -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 338A - srcEnd = 338C - destBegin = 275C -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = 338D - srcEnd = 338F - destBegin = 2736 -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = 3390 - srcEnd = 3394 - destBegin = 2754 -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = 3395 - srcEnd = 3397 - destBegin = 2721 -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = 3399 - srcEnd = 33A2 - destBegin = 272B -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = 33A3 - srcEnd = 33A6 - destBegin = 2727 -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = 33A9 - srcEnd = 33AC - destBegin = 2765 -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = 33AD - srcEnd = 33AF - destBegin = 2761 -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = 33B0 - srcEnd = 33B9 - destBegin = 273F -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = 33BA - srcEnd = 33BF - destBegin = 274E -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = 6BD6 - srcEnd = 6BD8 - destBegin = 5D70 -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = AC07 - srcEnd = AC0A - destBegin = 3024 -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = AC10 - srcEnd = AC17 - destBegin = 3028 -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = AC19 - srcEnd = AC1D - destBegin = 3030 -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = AC2F - srcEnd = AC31 - destBegin = 3039 -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = AC83 - srcEnd = AC86 - destBegin = 304D -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = AC89 - srcEnd = AC8C - destBegin = 3051 -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = AC9F - srcEnd = ACA1 - destBegin = 3059 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = ACA8 - srcEnd = ACAA - destBegin = 305C -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = ACBB - srcEnd = ACBD - destBegin = 3064 -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = ACEF - srcEnd = ACF1 - destBegin = 3074 -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = AD73 - srcEnd = AD76 - destBegin = 313B -End of Item 002E - -Begin of Item 002F - Format 0 - srcBegin = AD7B - srcEnd = AD7D - destBegin = 313F -End of Item 002F - -Begin of Item 0030 - Format 0 - srcBegin = ADFF - srcEnd = AE01 - destBegin = 315A -End of Item 0030 - -Begin of Item 0031 - Format 0 - srcBegin = AE4C - srcEnd = AE4E - destBegin = 316E -End of Item 0031 - -Begin of Item 0032 - Format 0 - srcBegin = AE5F - srcEnd = AE61 - destBegin = 3176 -End of Item 0032 - -Begin of Item 0033 - Format 0 - srcBegin = AE7B - srcEnd = AE7D - destBegin = 3222 -End of Item 0033 - -Begin of Item 0034 - Format 0 - srcBegin = AEBC - srcEnd = AEBE - destBegin = 3228 -End of Item 0034 - -Begin of Item 0035 - Format 0 - srcBegin = AECF - srcEnd = AED1 - destBegin = 322F -End of Item 0035 - -Begin of Item 0036 - Format 0 - srcBegin = AF41 - srcEnd = AF43 - destBegin = 3247 -End of Item 0036 - -Begin of Item 0037 - Format 0 - srcBegin = AFC7 - srcEnd = AFC9 - destBegin = 325D -End of Item 0037 - -Begin of Item 0038 - Format 0 - srcBegin = B053 - srcEnd = B055 - destBegin = 327A -End of Item 0038 - -Begin of Item 0039 - Format 0 - srcBegin = B098 - srcEnd = B09A - destBegin = 332A -End of Item 0039 - -Begin of Item 003A - Format 0 - srcBegin = B09F - srcEnd = B0A2 - destBegin = 332E -End of Item 003A - -Begin of Item 003B - Format 0 - srcBegin = B0AB - srcEnd = B0AF - destBegin = 3334 -End of Item 003B - -Begin of Item 003C - Format 0 - srcBegin = B0B3 - srcEnd = B0B5 - destBegin = 333A -End of Item 003C - -Begin of Item 003D - Format 0 - srcBegin = B0C7 - srcEnd = B0C9 - destBegin = 3341 -End of Item 003D - -Begin of Item 003E - Format 0 - srcBegin = B11B - srcEnd = B11D - destBegin = 3353 -End of Item 003E - -Begin of Item 003F - Format 0 - srcBegin = B123 - srcEnd = B125 - destBegin = 3356 -End of Item 003F - -Begin of Item 0040 - Format 0 - srcBegin = B137 - srcEnd = B139 - destBegin = 335D -End of Item 0040 - -Begin of Item 0041 - Format 0 - srcBegin = B192 - srcEnd = B194 - destBegin = 3374 -End of Item 0041 - -Begin of Item 0042 - Format 0 - srcBegin = B298 - srcEnd = B29A - destBegin = 3443 -End of Item 0042 - -Begin of Item 0043 - Format 0 - srcBegin = B2E4 - srcEnd = B2E6 - destBegin = 3459 -End of Item 0043 - -Begin of Item 0044 - Format 0 - srcBegin = B2EB - srcEnd = B2EF - destBegin = 345D -End of Item 0044 - -Begin of Item 0045 - Format 0 - srcBegin = B2F3 - srcEnd = B2F5 - destBegin = 3462 -End of Item 0045 - -Begin of Item 0046 - Format 0 - srcBegin = B2F7 - srcEnd = B2FB - destBegin = 3465 -End of Item 0046 - -Begin of Item 0047 - Format 0 - srcBegin = B2FF - srcEnd = B301 - destBegin = 346A -End of Item 0047 - -Begin of Item 0048 - Format 0 - srcBegin = B313 - srcEnd = B315 - destBegin = 3471 -End of Item 0048 - -Begin of Item 0049 - Format 0 - srcBegin = B354 - srcEnd = B356 - destBegin = 3475 -End of Item 0049 - -Begin of Item 004A - Format 0 - srcBegin = B383 - srcEnd = B385 - destBegin = 352B -End of Item 004A - -Begin of Item 004B - Format 0 - srcBegin = B527 - srcEnd = B52A - destBegin = 3577 -End of Item 004B - -Begin of Item 004C - Format 0 - srcBegin = B543 - srcEnd = B545 - destBegin = 3623 -End of Item 004C - -Begin of Item 004D - Format 0 - srcBegin = B54B - srcEnd = B54D - destBegin = 3626 -End of Item 004D - -Begin of Item 004E - Format 0 - srcBegin = B55F - srcEnd = B561 - destBegin = 362D -End of Item 004E - -Begin of Item 004F - Format 0 - srcBegin = B5B3 - srcEnd = B5B5 - destBegin = 3638 -End of Item 004F - -Begin of Item 0050 - Format 0 - srcBegin = B5BB - srcEnd = B5BD - destBegin = 363B -End of Item 0050 - -Begin of Item 0051 - Format 0 - srcBegin = B5CF - srcEnd = B5D1 - destBegin = 3642 -End of Item 0051 - -Begin of Item 0052 - Format 0 - srcBegin = B78F - srcEnd = B792 - destBegin = 3679 -End of Item 0052 - -Begin of Item 0053 - Format 0 - srcBegin = B7AB - srcEnd = B7AD - destBegin = 3727 -End of Item 0053 - -Begin of Item 0054 - Format 0 - srcBegin = B7FF - srcEnd = B801 - destBegin = 3735 -End of Item 0054 - -Begin of Item 0055 - Format 0 - srcBegin = B807 - srcEnd = B809 - destBegin = 3738 -End of Item 0055 - -Begin of Item 0056 - Format 0 - srcBegin = B837 - srcEnd = B839 - destBegin = 3747 -End of Item 0056 - -Begin of Item 0057 - Format 0 - srcBegin = B9CE - srcEnd = B9D2 - destBegin = 3839 -End of Item 0057 - -Begin of Item 0058 - Format 0 - srcBegin = B9E3 - srcEnd = B9E5 - destBegin = 3844 -End of Item 0058 - -Begin of Item 0059 - Format 0 - srcBegin = B9F7 - srcEnd = B9FA - destBegin = 384B -End of Item 0059 - -Begin of Item 005A - Format 0 - srcBegin = BA53 - srcEnd = BA55 - destBegin = 385D -End of Item 005A - -Begin of Item 005B - Format 0 - srcBegin = BA67 - srcEnd = BA69 - destBegin = 3864 -End of Item 005B - -Begin of Item 005C - Format 0 - srcBegin = BA83 - srcEnd = BA85 - destBegin = 386B -End of Item 005C - -Begin of Item 005D - Format 0 - srcBegin = BB34 - srcEnd = BB36 - destBegin = 392B -End of Item 005D - -Begin of Item 005E - Format 0 - srcBegin = BB3B - srcEnd = BB3E - destBegin = 392F -End of Item 005E - -Begin of Item 005F - Format 0 - srcBegin = BC0B - srcEnd = BC0D - destBegin = 3954 -End of Item 005F - -Begin of Item 0060 - Format 0 - srcBegin = BC14 - srcEnd = BC18 - destBegin = 3959 -End of Item 0060 - -Begin of Item 0061 - Format 0 - srcBegin = BC1B - srcEnd = BC1F - destBegin = 395E -End of Item 0061 - -Begin of Item 0062 - Format 0 - srcBegin = BC43 - srcEnd = BC45 - destBegin = 396E -End of Item 0062 - -Begin of Item 0063 - Format 0 - srcBegin = BCB3 - srcEnd = BCB5 - destBegin = 3A2A -End of Item 0063 - -Begin of Item 0064 - Format 0 - srcBegin = BCCF - srcEnd = BCD1 - destBegin = 3A32 -End of Item 0064 - -Begin of Item 0065 - Format 0 - srcBegin = BCF4 - srcEnd = BCF6 - destBegin = 3A38 -End of Item 0065 - -Begin of Item 0066 - Format 0 - srcBegin = BD87 - srcEnd = BD8A - destBegin = 3A51 -End of Item 0066 - -Begin of Item 0067 - Format 0 - srcBegin = BE59 - srcEnd = BE5B - destBegin = 3A79 -End of Item 0067 - -Begin of Item 0068 - Format 0 - srcBegin = BE73 - srcEnd = BE75 - destBegin = 3B25 -End of Item 0068 - -Begin of Item 0069 - Format 0 - srcBegin = BE7B - srcEnd = BE7D - destBegin = 3B28 -End of Item 0069 - -Begin of Item 006A - Format 0 - srcBegin = BE8F - srcEnd = BE91 - destBegin = 3B2F -End of Item 006A - -Begin of Item 006B - Format 0 - srcBegin = BEE3 - srcEnd = BEE5 - destBegin = 3B3B -End of Item 006B - -Begin of Item 006C - Format 0 - srcBegin = BF1B - srcEnd = BF1D - destBegin = 3B44 -End of Item 006C - -Begin of Item 006D - Format 0 - srcBegin = C0B3 - srcEnd = C0B6 - destBegin = 3B6B -End of Item 006D - -Begin of Item 006E - Format 0 - srcBegin = C0BF - srcEnd = C0C1 - destBegin = 3B71 -End of Item 006E - -Begin of Item 006F - Format 0 - srcBegin = C0DB - srcEnd = C0DD - destBegin = 3B7B -End of Item 006F - -Begin of Item 0070 - Format 0 - srcBegin = C11C - srcEnd = C120 - destBegin = 3C2D -End of Item 0070 - -Begin of Item 0071 - Format 0 - srcBegin = C12F - srcEnd = C131 - destBegin = 3C38 -End of Item 0071 - -Begin of Item 0072 - Format 0 - srcBegin = C14B - srcEnd = C14D - destBegin = 3C42 -End of Item 0072 - -Begin of Item 0073 - Format 0 - srcBegin = C167 - srcEnd = C169 - destBegin = 3C4B -End of Item 0073 - -Begin of Item 0074 - Format 0 - srcBegin = C18C - srcEnd = C18E - destBegin = 3C52 -End of Item 0074 - -Begin of Item 0075 - Format 0 - srcBegin = C2EB - srcEnd = C2ED - destBegin = 3D48 -End of Item 0075 - -Begin of Item 0076 - Format 0 - srcBegin = C313 - srcEnd = C315 - destBegin = 3D57 -End of Item 0076 - -Begin of Item 0077 - Format 0 - srcBegin = C4FF - srcEnd = C501 - destBegin = 3E37 -End of Item 0077 - -Begin of Item 0078 - Format 0 - srcBegin = C548 - srcEnd = C54A - destBegin = 3E48 -End of Item 0078 - -Begin of Item 0079 - Format 0 - srcBegin = C54C - srcEnd = C54E - destBegin = 3E4B -End of Item 0079 - -Begin of Item 007A - Format 0 - srcBegin = C553 - srcEnd = C555 - destBegin = 3E4E -End of Item 007A - -Begin of Item 007B - Format 0 - srcBegin = C557 - srcEnd = C559 - destBegin = 3E51 -End of Item 007B - -Begin of Item 007C - Format 0 - srcBegin = C573 - srcEnd = C575 - destBegin = 3E5C -End of Item 007C - -Begin of Item 007D - Format 0 - srcBegin = C5BB - srcEnd = C5BE - destBegin = 3E72 -End of Item 007D - -Begin of Item 007E - Format 0 - srcBegin = C5C4 - srcEnd = C5CA - destBegin = 3E76 -End of Item 007E - -Begin of Item 007F - Format 0 - srcBegin = C5EC - srcEnd = C5EE - destBegin = 3F29 -End of Item 007F - -Begin of Item 0080 - Format 0 - srcBegin = C5FC - srcEnd = C601 - destBegin = 3F30 -End of Item 0080 - -Begin of Item 0081 - Format 0 - srcBegin = C605 - srcEnd = C608 - destBegin = 3F36 -End of Item 0081 - -Begin of Item 0082 - Format 0 - srcBegin = C62C - srcEnd = C62E - destBegin = 3F43 -End of Item 0082 - -Begin of Item 0083 - Format 0 - srcBegin = C633 - srcEnd = C635 - destBegin = 3F47 -End of Item 0083 - -Begin of Item 0084 - Format 0 - srcBegin = C653 - srcEnd = C655 - destBegin = 3F53 -End of Item 0084 - -Begin of Item 0085 - Format 0 - srcBegin = C6B8 - srcEnd = C6BA - destBegin = 3F6F -End of Item 0085 - -Begin of Item 0086 - Format 0 - srcBegin = C751 - srcEnd = C758 - destBegin = 4040 -End of Item 0086 - -Begin of Item 0087 - Format 0 - srcBegin = C77C - srcEnd = C77E - destBegin = 404F -End of Item 0087 - -Begin of Item 0088 - Format 0 - srcBegin = C783 - srcEnd = C785 - destBegin = 4052 -End of Item 0088 - -Begin of Item 0089 - Format 0 - srcBegin = C787 - srcEnd = C78A - destBegin = 4055 -End of Item 0089 - -Begin of Item 008A - Format 0 - srcBegin = C796 - srcEnd = C798 - destBegin = 405D -End of Item 008A - -Begin of Item 008B - Format 0 - srcBegin = C7A3 - srcEnd = C7A6 - destBegin = 4063 -End of Item 008B - -Begin of Item 008C - Format 0 - srcBegin = C7BF - srcEnd = C7C1 - destBegin = 406D -End of Item 008C - -Begin of Item 008D - Format 0 - srcBegin = C885 - srcEnd = C887 - destBegin = 413E -End of Item 008D - -Begin of Item 008E - Format 0 - srcBegin = C88B - srcEnd = C88D - destBegin = 4141 -End of Item 008E - -Begin of Item 008F - Format 0 - srcBegin = C904 - srcEnd = C906 - destBegin = 4159 -End of Item 008F - -Begin of Item 0090 - Format 0 - srcBegin = C9EF - srcEnd = C9F1 - destBegin = 422D -End of Item 0090 - -Begin of Item 0091 - Format 0 - srcBegin = CA0B - srcEnd = CA0D - destBegin = 4236 -End of Item 0091 - -Begin of Item 0092 - Format 0 - srcBegin = CA5F - srcEnd = CA61 - destBegin = 4242 -End of Item 0092 - -Begin of Item 0093 - Format 0 - srcBegin = CC27 - srcEnd = CC29 - destBegin = 4276 -End of Item 0093 - -Begin of Item 0094 - Format 0 - srcBegin = CC3C - srcEnd = CC3E - destBegin = 4321 -End of Item 0094 - -Begin of Item 0095 - Format 0 - srcBegin = CC57 - srcEnd = CC59 - destBegin = 432A -End of Item 0095 - -Begin of Item 0096 - Format 0 - srcBegin = CCAB - srcEnd = CCAD - destBegin = 4339 -End of Item 0096 - -Begin of Item 0097 - Format 0 - srcBegin = CE5F - srcEnd = CE61 - destBegin = 4424 -End of Item 0097 - -Begin of Item 0098 - Format 0 - srcBegin = CEA3 - srcEnd = CEA5 - destBegin = 4439 -End of Item 0098 - -Begin of Item 0099 - Format 0 - srcBegin = CEF7 - srcEnd = CEF9 - destBegin = 4446 -End of Item 0099 - -Begin of Item 009A - Format 0 - srcBegin = CF2F - srcEnd = CF31 - destBegin = 4456 -End of Item 009A - -Begin of Item 009B - Format 0 - srcBegin = D0D3 - srcEnd = D0D5 - destBegin = 453F -End of Item 009B - -Begin of Item 009C - Format 0 - srcBegin = D0EF - srcEnd = D0F1 - destBegin = 4548 -End of Item 009C - -Begin of Item 009D - Format 0 - srcBegin = D143 - srcEnd = D145 - destBegin = 4554 -End of Item 009D - -Begin of Item 009E - Format 0 - srcBegin = D30C - srcEnd = D30E - destBegin = 4644 -End of Item 009E - -Begin of Item 009F - Format 0 - srcBegin = D31F - srcEnd = D321 - destBegin = 464C -End of Item 009F - -Begin of Item 00A0 - Format 0 - srcBegin = D33B - srcEnd = D33D - destBegin = 4656 -End of Item 00A0 - -Begin of Item 00A1 - Format 0 - srcBegin = D38F - srcEnd = D391 - destBegin = 4661 -End of Item 00A1 - -Begin of Item 00A2 - Format 0 - srcBegin = D587 - srcEnd = D589 - destBegin = 475E -End of Item 00A2 - -Begin of Item 00A3 - Format 0 - srcBegin = D613 - srcEnd = D615 - destBegin = 477A -End of Item 00A3 - -Begin of Item 00A4 - Format 0 - srcBegin = D756 - srcEnd = D759 - destBegin = 4868 -End of Item 00A4 - -Begin of Item 00A5 - Format 0 - srcBegin = F90E - srcEnd = F913 - destBegin = 515B -End of Item 00A5 - -Begin of Item 00A6 - Format 0 - srcBegin = F914 - srcEnd = F918 - destBegin = 5162 -End of Item 00A6 - -Begin of Item 00A7 - Format 0 - srcBegin = F919 - srcEnd = F91C - destBegin = 5168 -End of Item 00A7 - -Begin of Item 00A8 - Format 0 - srcBegin = F923 - srcEnd = F925 - destBegin = 517C -End of Item 00A8 - -Begin of Item 00A9 - Format 0 - srcBegin = F928 - srcEnd = F92C - destBegin = 5227 -End of Item 00A9 - -Begin of Item 00AA - Format 0 - srcBegin = F930 - srcEnd = F932 - destBegin = 5242 -End of Item 00AA - -Begin of Item 00AB - Format 0 - srcBegin = F933 - srcEnd = F938 - destBegin = 5246 -End of Item 00AB - -Begin of Item 00AC - Format 0 - srcBegin = F939 - srcEnd = F943 - destBegin = 524D -End of Item 00AC - -Begin of Item 00AD - Format 0 - srcBegin = F94A - srcEnd = F951 - destBegin = 5264 -End of Item 00AD - -Begin of Item 00AE - Format 0 - srcBegin = F952 - srcEnd = F957 - destBegin = 5270 -End of Item 00AE - -Begin of Item 00AF - Format 0 - srcBegin = F97F - srcEnd = F981 - destBegin = 657A -End of Item 00AF - -Begin of Item 00B0 - Format 0 - srcBegin = F987 - srcEnd = F989 - destBegin = 662F -End of Item 00B0 - -Begin of Item 00B1 - Format 0 - srcBegin = F998 - srcEnd = F99A - destBegin = 6664 -End of Item 00B1 - -Begin of Item 00B2 - Format 0 - srcBegin = F99C - srcEnd = F99E - destBegin = 666A -End of Item 00B2 - -Begin of Item 00B3 - Format 0 - srcBegin = F9A2 - srcEnd = F9A4 - destBegin = 6675 -End of Item 00B3 - -Begin of Item 00B4 - Format 0 - srcBegin = F9D8 - srcEnd = F9DB - destBegin = 6B4F -End of Item 00B4 - -Begin of Item 00B5 - Format 0 - srcBegin = F9E0 - srcEnd = F9E3 - destBegin = 6C2F -End of Item 00B5 - -Begin of Item 00B6 - Format 0 - srcBegin = F9F7 - srcEnd = F9F9 - destBegin = 6D21 -End of Item 00B6 - -Begin of Item 00B7 - Format 0 - srcBegin = FF01 - srcEnd = FF3B - destBegin = 2321 -End of Item 00B7 - -Begin of Item 00B8 - Format 0 - srcBegin = FF3D - srcEnd = FF5D - destBegin = 235D -End of Item 00B8 - -Begin of Item 00B9 - Format 1 - srcBegin = 00A1 - srcEnd = 00BF - mappingOffset = 0000 - Mapping = - 222E FFFD FFFD 2234 FFFD FFFD 2157 2127 - FFFD 2823 FFFD FFFD 2129 FFFD FFFD 2146 - 213E 2977 2978 2225 FFFD 2252 2124 222C - 2976 282C FFFD 2879 2876 287A 222F -End of Item 00B9 - -Begin of Item 00BA - Format 2 - srcBegin = 00C6 - destBegin = 2821 -End of Item 00BA - -Begin of Item 00BB - Format 2 - srcBegin = 00D0 - destBegin = 2822 -End of Item 00BB - -Begin of Item 00BC - Format 1 - srcBegin = 00D7 - srcEnd = 00D8 - mappingOffset = 001F - Mapping = - 213F 282A -End of Item 00BC - -Begin of Item 00BD - Format 1 - srcBegin = 00DE - srcEnd = 00DF - mappingOffset = 0021 - Mapping = - 282D 292C -End of Item 00BD - -Begin of Item 00BE - Format 2 - srcBegin = 00E6 - destBegin = 2921 -End of Item 00BE - -Begin of Item 00BF - Format 2 - srcBegin = 00F0 - destBegin = 2923 -End of Item 00BF - -Begin of Item 00C0 - Format 1 - srcBegin = 00F7 - srcEnd = 00F8 - mappingOffset = 0023 - Mapping = - 2140 292A -End of Item 00C0 - -Begin of Item 00C1 - Format 2 - srcBegin = 00FE - destBegin = 292D -End of Item 00C1 - -Begin of Item 00C2 - Format 2 - srcBegin = 0111 - destBegin = 2922 -End of Item 00C2 - -Begin of Item 00C3 - Format 1 - srcBegin = 0126 - srcEnd = 0127 - mappingOffset = 0025 - Mapping = - 2824 2924 -End of Item 00C3 - -Begin of Item 00C4 - Format 1 - srcBegin = 0131 - srcEnd = 0133 - mappingOffset = 0027 - Mapping = - 2925 2826 2926 -End of Item 00C4 - -Begin of Item 00C5 - Format 2 - srcBegin = 0138 - destBegin = 2927 -End of Item 00C5 - -Begin of Item 00C6 - Format 1 - srcBegin = 013F - srcEnd = 0142 - mappingOffset = 002A - Mapping = - 2828 2928 2829 2929 -End of Item 00C6 - -Begin of Item 00C7 - Format 1 - srcBegin = 0149 - srcEnd = 014B - mappingOffset = 002E - Mapping = - 2930 282F 292F -End of Item 00C7 - -Begin of Item 00C8 - Format 1 - srcBegin = 0152 - srcEnd = 0153 - mappingOffset = 0031 - Mapping = - 282B 292B -End of Item 00C8 - -Begin of Item 00C9 - Format 1 - srcBegin = 0166 - srcEnd = 0167 - mappingOffset = 0033 - Mapping = - 282E 292E -End of Item 00C9 - -Begin of Item 00CA - Format 2 - srcBegin = 02C7 - destBegin = 2227 -End of Item 00CA - -Begin of Item 00CB - Format 2 - srcBegin = 02D0 - destBegin = 2230 -End of Item 00CB - -Begin of Item 00CC - Format 1 - srcBegin = 02D8 - srcEnd = 02DD - mappingOffset = 0035 - Mapping = - 2228 222B 222A 222D FFFD 2229 -End of Item 00CC - -Begin of Item 00CD - Format 2 - srcBegin = 0401 - destBegin = 2C27 -End of Item 00CD - -Begin of Item 00CE - Format 2 - srcBegin = 0451 - destBegin = 2C57 -End of Item 00CE - -Begin of Item 00CF - Format 1 - srcBegin = 2015 - srcEnd = 2021 - mappingOffset = 003B - Mapping = - 212A FFFD FFFD 212E 212F FFFD FFFD 2130 - 2131 FFFD FFFD 2253 2254 -End of Item 00CF - -Begin of Item 00D0 - Format 1 - srcBegin = 2025 - srcEnd = 2026 - mappingOffset = 0048 - Mapping = - 2125 2126 -End of Item 00D0 - -Begin of Item 00D1 - Format 1 - srcBegin = 2030 - srcEnd = 2033 - mappingOffset = 004A - Mapping = - 2236 FFFD 2147 2148 -End of Item 00D1 - -Begin of Item 00D2 - Format 2 - srcBegin = 203B - destBegin = 2158 -End of Item 00D2 - -Begin of Item 00D3 - Format 2 - srcBegin = 2074 - destBegin = 2979 -End of Item 00D3 - -Begin of Item 00D4 - Format 2 - srcBegin = 207F - destBegin = 297A -End of Item 00D4 - -Begin of Item 00D5 - Format 2 - srcBegin = 2103 - destBegin = 2149 -End of Item 00D5 - -Begin of Item 00D6 - Format 2 - srcBegin = 2109 - destBegin = 2235 -End of Item 00D6 - -Begin of Item 00D7 - Format 1 - srcBegin = 2113 - srcEnd = 2116 - mappingOffset = 004E - Mapping = - 2724 FFFD FFFD 2260 -End of Item 00D7 - -Begin of Item 00D8 - Format 1 - srcBegin = 2121 - srcEnd = 2122 - mappingOffset = 0052 - Mapping = - 2265 2262 -End of Item 00D8 - -Begin of Item 00D9 - Format 2 - srcBegin = 2126 - destBegin = 2759 -End of Item 00D9 - -Begin of Item 00DA - Format 2 - srcBegin = 212B - destBegin = 214A -End of Item 00DA - -Begin of Item 00DB - Format 1 - srcBegin = 2153 - srcEnd = 2154 - mappingOffset = 0054 - Mapping = - 2877 2878 -End of Item 00DB - -Begin of Item 00DC - Format 1 - srcBegin = 2190 - srcEnd = 2199 - mappingOffset = 0056 - Mapping = - 2167 2168 2166 2169 216A 2255 2258 2256 - 2259 2257 -End of Item 00DC - -Begin of Item 00DD - Format 1 - srcBegin = 21D2 - srcEnd = 21D4 - mappingOffset = 0060 - Mapping = - 2221 FFFD 2222 -End of Item 00DD - -Begin of Item 00DE - Format 1 - srcBegin = 2200 - srcEnd = 2203 - mappingOffset = 0063 - Mapping = - 2223 FFFD 2153 2224 -End of Item 00DE - -Begin of Item 00DF - Format 1 - srcBegin = 2207 - srcEnd = 220B - mappingOffset = 0067 - Mapping = - 2154 2174 FFFD FFFD 2175 -End of Item 00DF - -Begin of Item 00E0 - Format 1 - srcBegin = 220F - srcEnd = 2211 - mappingOffset = 006C - Mapping = - 2233 FFFD 2232 -End of Item 00E0 - -Begin of Item 00E1 - Format 1 - srcBegin = 221A - srcEnd = 2220 - mappingOffset = 006F - Mapping = - 216E FFFD FFFD 2170 2144 FFFD 2150 -End of Item 00E1 - -Begin of Item 00E2 - Format 1 - srcBegin = 2225 - srcEnd = 222E - mappingOffset = 0076 - Mapping = - 212B FFFD 217C 217D 217B 217A 2172 2173 - FFFD 2231 -End of Item 00E2 - -Begin of Item 00E3 - Format 1 - srcBegin = 2234 - srcEnd = 2235 - mappingOffset = 0080 - Mapping = - 2145 2171 -End of Item 00E3 - -Begin of Item 00E4 - Format 1 - srcBegin = 223C - srcEnd = 223D - mappingOffset = 0082 - Mapping = - 212D 216F -End of Item 00E4 - -Begin of Item 00E5 - Format 2 - srcBegin = 2252 - destBegin = 2156 -End of Item 00E5 - -Begin of Item 00E6 - Format 1 - srcBegin = 2260 - srcEnd = 2265 - mappingOffset = 0084 - Mapping = - 2141 2155 FFFD FFFD 2142 2143 -End of Item 00E6 - -Begin of Item 00E7 - Format 1 - srcBegin = 226A - srcEnd = 226B - mappingOffset = 008A - Mapping = - 216C 216D -End of Item 00E7 - -Begin of Item 00E8 - Format 1 - srcBegin = 2282 - srcEnd = 2287 - mappingOffset = 008C - Mapping = - 2178 2179 FFFD FFFD 2176 2177 -End of Item 00E8 - -Begin of Item 00E9 - Format 2 - srcBegin = 2299 - destBegin = 2241 -End of Item 00E9 - -Begin of Item 00EA - Format 2 - srcBegin = 22A5 - destBegin = 2151 -End of Item 00EA - -Begin of Item 00EB - Format 2 - srcBegin = 2312 - destBegin = 2152 -End of Item 00EB - -Begin of Item 00EC - Format 1 - srcBegin = 2500 - srcEnd = 2503 - mappingOffset = 0092 - Mapping = - 2621 262C 2622 262D -End of Item 00EC - -Begin of Item 00ED - Format 1 - srcBegin = 250C - srcEnd = 2542 - mappingOffset = 0096 - Mapping = - 2623 2648 2647 262E 2624 2642 2641 262F - 2626 2646 2645 2631 2625 2644 2643 2630 - 2627 263C 2649 264A 2637 264B 264C 2632 - 2629 263E 264D 264E 2639 264F 2650 2634 - 2628 2651 2652 2638 263D 2653 2654 2633 - 262A 2655 2656 263A 263F 2657 2658 2635 - 262B 2659 265A 263B 265B 265C 2640 -End of Item 00ED - -Begin of Item 00EE - Format 2 - srcBegin = 254B - destBegin = 2636 -End of Item 00EE - -Begin of Item 00EF - Format 2 - srcBegin = 2592 - destBegin = 2246 -End of Item 00EF - -Begin of Item 00F0 - Format 1 - srcBegin = 25A0 - srcEnd = 25A9 - mappingOffset = 00CD - Mapping = - 2161 2160 FFFD 2243 2247 2248 224B 224A - 2249 224C -End of Item 00F0 - -Begin of Item 00F1 - Format 1 - srcBegin = 25B2 - srcEnd = 25B7 - mappingOffset = 00D7 - Mapping = - 2163 2162 FFFD FFFD 223A 2239 -End of Item 00F1 - -Begin of Item 00F2 - Format 1 - srcBegin = 25BC - srcEnd = 25C1 - mappingOffset = 00DD - Mapping = - 2165 2164 FFFD FFFD 2238 2237 -End of Item 00F2 - -Begin of Item 00F3 - Format 1 - srcBegin = 25C6 - srcEnd = 25D1 - mappingOffset = 00E3 - Mapping = - 215F 215E 2242 FFFD FFFD 215B FFFD FFFD - 215D 215C 2244 2245 -End of Item 00F3 - -Begin of Item 00F4 - Format 1 - srcBegin = 2605 - srcEnd = 2606 - mappingOffset = 00EF - Mapping = - 215A 2159 -End of Item 00F4 - -Begin of Item 00F5 - Format 1 - srcBegin = 260E - srcEnd = 260F - mappingOffset = 00F1 - Mapping = - 224F 224E -End of Item 00F5 - -Begin of Item 00F6 - Format 1 - srcBegin = 261C - srcEnd = 261E - mappingOffset = 00F3 - Mapping = - 2250 FFFD 2251 -End of Item 00F6 - -Begin of Item 00F7 - Format 1 - srcBegin = 2640 - srcEnd = 2642 - mappingOffset = 00F6 - Mapping = - 214F FFFD 214E -End of Item 00F7 - -Begin of Item 00F8 - Format 1 - srcBegin = 2660 - srcEnd = 266D - mappingOffset = 00F9 - Mapping = - 223C 223D FFFD 2240 223B 223E FFFD 223F - 224D 225B 225C FFFD 225D 225A -End of Item 00F8 - -Begin of Item 00F9 - Format 2 - srcBegin = 3003 - destBegin = 2128 -End of Item 00F9 - -Begin of Item 00FA - Format 1 - srcBegin = 3013 - srcEnd = 3015 - mappingOffset = 0107 - Mapping = - 216B 2132 2133 -End of Item 00FA - -Begin of Item 00FB - Format 2 - srcBegin = 321C - destBegin = 225F -End of Item 00FB - -Begin of Item 00FC - Format 2 - srcBegin = 327F - destBegin = 225E -End of Item 00FC - -Begin of Item 00FD - Format 1 - srcBegin = 3388 - srcEnd = 3389 - mappingOffset = 010A - Mapping = - 273A 273B -End of Item 00FD - -Begin of Item 00FE - Format 2 - srcBegin = 3398 - destBegin = 2725 -End of Item 00FE - -Begin of Item 00FF - Format 1 - srcBegin = 33A7 - srcEnd = 33A8 - mappingOffset = 010C - Mapping = - 273D 273E -End of Item 00FF - -Begin of Item 0100 - Format 1 - srcBegin = 33C0 - srcEnd = 33CA - mappingOffset = 010E - Mapping = - 275A 275B 2263 276C 2726 2760 276F 2261 - 273C 276D 2735 -End of Item 0100 - -Begin of Item 0101 - Format 1 - srcBegin = 33CF - srcEnd = 33DD - mappingOffset = 0119 - Mapping = - 2739 276A FFFD FFFD 276B FFFD FFFD 275F - FFFD 2264 FFFD FFFD 2764 276E 2769 -End of Item 0101 - -Begin of Item 0102 - Format 1 - srcBegin = 4E00 - srcEnd = 4E03 - mappingOffset = 0128 - Mapping = - 6C69 6F4B FFFD 7652 -End of Item 0102 - -Begin of Item 0103 - Format 1 - srcBegin = 4E07 - srcEnd = 4E0D - mappingOffset = 012C - Mapping = - 5832 6D5B 5F32 5F3E 793B FFFD 5C74 -End of Item 0103 - -Begin of Item 0104 - Format 1 - srcBegin = 4E11 - srcEnd = 4E19 - mappingOffset = 0133 - Mapping = - 7564 FFFD FFFD 7326 5D60 6126 FFFD 4E78 - 5C30 -End of Item 0104 - -Begin of Item 0105 - Format 2 - srcBegin = 4E1E - destBegin = 632A -End of Item 0105 - -Begin of Item 0106 - Format 2 - srcBegin = 4E2D - destBegin = 7169 -End of Item 0106 - -Begin of Item 0107 - Format 2 - srcBegin = 4E32 - destBegin = 4D7A -End of Item 0107 - -Begin of Item 0108 - Format 1 - srcBegin = 4E38 - srcEnd = 4E3B - mappingOffset = 013C - Mapping = - 7C2F 5321 FFFD 712B -End of Item 0108 - -Begin of Item 0109 - Format 1 - srcBegin = 4E42 - srcEnd = 4E45 - mappingOffset = 0140 - Mapping = - 6751 522C FFFD 4E79 -End of Item 0109 - -Begin of Item 010A - Format 1 - srcBegin = 4E4B - srcEnd = 4E4F - mappingOffset = 0144 - Mapping = - 717D FFFD 5E3F 7B3A 7939 -End of Item 010A - -Begin of Item 010B - Format 1 - srcBegin = 4E56 - srcEnd = 4E59 - mappingOffset = 0149 - Mapping = - 4E52 FFFD 632B 6B60 -End of Item 010B - -Begin of Item 010C - Format 1 - srcBegin = 4E5D - srcEnd = 4E5F - mappingOffset = 014D - Mapping = - 4E7A 4B77 6525 -End of Item 010C - -Begin of Item 010D - Format 1 - srcBegin = 4E6B - srcEnd = 4E6D - mappingOffset = 0150 - Mapping = - 4A61 FFFD 544C -End of Item 010D - -Begin of Item 010E - Format 1 - srcBegin = 4E73 - srcEnd = 4E77 - mappingOffset = 0153 - Mapping = - 6A61 FFFD FFFD 5C63 5F2D -End of Item 010E - -Begin of Item 010F - Format 2 - srcBegin = 4E7E - destBegin = 4B6B -End of Item 010F - -Begin of Item 0110 - Format 2 - srcBegin = 4E82 - destBegin = 552F -End of Item 0110 - -Begin of Item 0111 - Format 1 - srcBegin = 4E86 - srcEnd = 4EAE - mappingOffset = 0158 - Mapping = - 5675 FFFD 6578 FFFD FFFD 5E40 6C23 FFFD - 694D FFFD 6A27 6976 7B3B FFFD 6769 6F4C - FFFD FFFD 5066 FFFD FFFD 5E41 FFFD FFFD - 642C FFFD FFFD 584C 7971 FFFD 4E5F 7A24 - 6632 FFFD 7A7B FFFD FFFD 7A3D 4C48 6F4D - 5555 -End of Item 0111 - -Begin of Item 0112 - Format 2 - srcBegin = 4EB6 - destBegin = 5322 -End of Item 0112 - -Begin of Item 0113 - Format 2 - srcBegin = 4EBA - destBegin = 6C51 -End of Item 0113 - -Begin of Item 0114 - Format 1 - srcBegin = 4EC0 - srcEnd = 4ECD - mappingOffset = 0181 - Mapping = - 6427 6C52 FFFD FFFD 7631 FFFD FFFD 4E7B - FFFD FFFD 5051 4B3F FFFD 6D24 -End of Item 0114 - -Begin of Item 0115 - Format 1 - srcBegin = 4ED4 - srcEnd = 4ED9 - mappingOffset = 018F - Mapping = - 6D28 5E42 7662 6D5C 5C75 6039 -End of Item 0115 - -Begin of Item 0116 - Format 1 - srcBegin = 4EDD - srcEnd = 4EDF - mappingOffset = 0195 - Mapping = - 544E FFFD 7435 -End of Item 0116 - -Begin of Item 0117 - Format 1 - srcBegin = 4EE3 - srcEnd = 4EE5 - mappingOffset = 0198 - Mapping = - 535B 5635 6C24 -End of Item 0117 - -Begin of Item 0118 - Format 1 - srcBegin = 4EF0 - srcEnd = 4EF2 - mappingOffset = 019B - Mapping = - 6466 FFFD 716A -End of Item 0118 - -Begin of Item 0119 - Format 1 - srcBegin = 4EF6 - srcEnd = 4EF7 - mappingOffset = 019E - Mapping = - 4B6C 4B40 -End of Item 0119 - -Begin of Item 011A - Format 2 - srcBegin = 4EFB - destBegin = 6C72 -End of Item 011A - -Begin of Item 011B - Format 2 - srcBegin = 4F01 - destBegin = 506A -End of Item 011B - -Begin of Item 011C - Format 1 - srcBegin = 4F09 - srcEnd = 4F11 - mappingOffset = 01A0 - Mapping = - 7972 6C25 505F FFFD 676A 506B 5C51 5B69 - 7D4C -End of Item 011C - -Begin of Item 011D - Format 2 - srcBegin = 4F2F - destBegin = 5B57 -End of Item 011D - -Begin of Item 011E - Format 1 - srcBegin = 4F34 - srcEnd = 4F3D - mappingOffset = 01A9 - Mapping = - 5A61 FFFD 5636 FFFD 635F FFFD 5E43 FFFD - 5E44 4A21 -End of Item 011E - -Begin of Item 011F - Format 1 - srcBegin = 4F43 - srcEnd = 4F48 - mappingOffset = 01B3 - Mapping = - 6E6C FFFD FFFD 5323 6E37 784F -End of Item 011F - -Begin of Item 0120 - Format 1 - srcBegin = 4F4D - srcEnd = 4F51 - mappingOffset = 01B9 - Mapping = - 6A48 6E38 712C 7125 694E -End of Item 0120 - -Begin of Item 0121 - Format 2 - srcBegin = 4F55 - destBegin = 793C -End of Item 0121 - -Begin of Item 0122 - Format 1 - srcBegin = 4F59 - srcEnd = 4F5C - mappingOffset = 01BE - Mapping = - 6579 6C6A 5D56 6D42 -End of Item 0122 - -Begin of Item 0123 - Format 2 - srcBegin = 4F69 - destBegin = 7825 -End of Item 0123 - -Begin of Item 0124 - Format 1 - srcBegin = 4F6F - srcEnd = 4F76 - mappingOffset = 01C2 - Mapping = - 653A 5B58 FFFD FFFD 4A22 FFFD FFFD 514D -End of Item 0124 - -Begin of Item 0125 - Format 2 - srcBegin = 4F7A - destBegin = 6E6D -End of Item 0125 - -Begin of Item 0126 - Format 1 - srcBegin = 4F7E - srcEnd = 4F91 - mappingOffset = 01CA - Mapping = - 6C6B 5E45 FFFD 6360 FFFD 4A49 7269 FFFD - 554E FFFD 7636 FFFD 4E42 5647 FFFD 6334 - FFFD 712D FFFD 6A62 -End of Item 0126 - -Begin of Item 0127 - Format 1 - srcBegin = 4F96 - srcEnd = 4F9D - mappingOffset = 01DE - Mapping = - 5742 FFFD 7327 FFFD FFFD 4D6A FFFD 6B6E -End of Item 0127 - -Begin of Item 0128 - Format 1 - srcBegin = 4FAE - srcEnd = 4FAF - mappingOffset = 01E6 - Mapping = - 5932 7D25 -End of Item 0128 - -Begin of Item 0129 - Format 1 - srcBegin = 4FB5 - srcEnd = 4FB6 - mappingOffset = 01E8 - Mapping = - 7655 5562 -End of Item 0129 - -Begin of Item 012A - Format 1 - srcBegin = 4FBF - srcEnd = 4FC4 - mappingOffset = 01EA - Mapping = - 7835 FFFD FFFD 4C75 7535 642D -End of Item 012A - -Begin of Item 012B - Format 1 - srcBegin = 4FC9 - srcEnd = 4FCA - mappingOffset = 01F0 - Mapping = - 676B 7155 -End of Item 012B - -Begin of Item 012C - Format 1 - srcBegin = 4FCE - srcEnd = 4FE1 - mappingOffset = 01F2 - Mapping = - 703B FFFD FFFD 6935 FFFD 4C49 7A55 FFFD - FFFD 6154 FFFD FFFD 5756 FFFD FFFD 5C41 - FFFD 5E46 7A6F 6361 -End of Item 012C - -Begin of Item 012D - Format 1 - srcBegin = 4FEE - srcEnd = 4FFA - mappingOffset = 0206 - Mapping = - 6173 5C76 FFFD 4E7C FFFD 5B44 FFFD 7871 - FFFD FFFD 5C64 FFFD 656F -End of Item 012D - -Begin of Item 012E - Format 2 - srcBegin = 5002 - destBegin = 5C31 -End of Item 012E - -Begin of Item 012F - Format 1 - srcBegin = 5006 - srcEnd = 500D - mappingOffset = 0213 - Mapping = - 5556 FFFD FFFD 735A FFFD 4B41 FFFD 5B43 -End of Item 012F - -Begin of Item 0130 - Format 1 - srcBegin = 5011 - srcEnd = 5012 - mappingOffset = 021B - Mapping = - 597A 536E -End of Item 0130 - -Begin of Item 0131 - Format 1 - srcBegin = 5016 - srcEnd = 502D - mappingOffset = 021D - Mapping = - 7A38 FFFD FFFD 7D26 6B6F FFFD 7426 FFFD - 4C4A 7328 FFFD 735B FFFD 5B27 7637 FFFD - 4F66 7072 4B5A FFFD 6752 5743 7670 685E -End of Item 0131 - -Begin of Item 0132 - Format 2 - srcBegin = 503B - destBegin = 6526 -End of Item 0132 - -Begin of Item 0133 - Format 2 - srcBegin = 5043 - destBegin = 6567 -End of Item 0133 - -Begin of Item 0134 - Format 1 - srcBegin = 5047 - srcEnd = 5049 - mappingOffset = 0235 - Mapping = - 4A23 4C27 6A49 -End of Item 0134 - -Begin of Item 0135 - Format 2 - srcBegin = 504F - destBegin = 7836 -End of Item 0135 - -Begin of Item 0136 - Format 2 - srcBegin = 5055 - destBegin = 7A25 -End of Item 0136 - -Begin of Item 0137 - Format 1 - srcBegin = 505A - srcEnd = 505C - mappingOffset = 0238 - Mapping = - 712E FFFD 6F4E -End of Item 0137 - -Begin of Item 0138 - Format 2 - srcBegin = 5065 - destBegin = 4B6D -End of Item 0138 - -Begin of Item 0139 - Format 1 - srcBegin = 5074 - srcEnd = 5078 - mappingOffset = 023B - Mapping = - 7630 6F4F 694F FFFD 775E -End of Item 0139 - -Begin of Item 013A - Format 2 - srcBegin = 5080 - destBegin = 4E53 -End of Item 013A - -Begin of Item 013B - Format 2 - srcBegin = 5085 - destBegin = 5C77 -End of Item 013B - -Begin of Item 013C - Format 2 - srcBegin = 508D - destBegin = 5B28 -End of Item 013C - -Begin of Item 013D - Format 2 - srcBegin = 5091 - destBegin = 4B78 -End of Item 013D - -Begin of Item 013E - Format 1 - srcBegin = 5098 - srcEnd = 5099 - mappingOffset = 0240 - Mapping = - 5F21 5D61 -End of Item 013E - -Begin of Item 013F - Format 1 - srcBegin = 50AC - srcEnd = 50AD - mappingOffset = 0242 - Mapping = - 754A 6936 -End of Item 013F - -Begin of Item 0140 - Format 1 - srcBegin = 50B2 - srcEnd = 50B7 - mappingOffset = 0244 - Mapping = - 676C 6E6E FFFD 7370 FFFD 5F3F -End of Item 0140 - -Begin of Item 0141 - Format 2 - srcBegin = 50BE - destBegin = 4C4B -End of Item 0141 - -Begin of Item 0142 - Format 2 - srcBegin = 50C5 - destBegin = 5041 -End of Item 0142 - -Begin of Item 0143 - Format 1 - srcBegin = 50C9 - srcEnd = 50CA - mappingOffset = 024A - Mapping = - 7452 603A -End of Item 0143 - -Begin of Item 0144 - Format 1 - srcBegin = 50CF - srcEnd = 50D1 - mappingOffset = 024C - Mapping = - 5F40 FFFD 4E60 -End of Item 0144 - -Begin of Item 0145 - Format 1 - srcBegin = 50D5 - srcEnd = 50D6 - mappingOffset = 024F - Mapping = - 5C52 7D6A -End of Item 0145 - -Begin of Item 0146 - Format 2 - srcBegin = 50DA - destBegin = 5676 -End of Item 0146 - -Begin of Item 0147 - Format 2 - srcBegin = 50DE - destBegin = 6A4A -End of Item 0147 - -Begin of Item 0148 - Format 1 - srcBegin = 50E5 - srcEnd = 50E7 - mappingOffset = 0251 - Mapping = - 6869 FFFD 632C -End of Item 0148 - -Begin of Item 0149 - Format 2 - srcBegin = 50ED - destBegin = 7350 -End of Item 0149 - -Begin of Item 014A - Format 1 - srcBegin = 50F9 - srcEnd = 50FB - mappingOffset = 0254 - Mapping = - 4A24 FFFD 5B78 -End of Item 014A - -Begin of Item 014B - Format 1 - srcBegin = 50FF - srcEnd = 5109 - mappingOffset = 0257 - Mapping = - 5E47 6B70 7156 FFFD FFFD 6562 FFFD 4C4C - FFFD FFFD 4B7B -End of Item 014B - -Begin of Item 014C - Format 2 - srcBegin = 5112 - destBegin = 6A63 -End of Item 014C - -Begin of Item 014D - Format 1 - srcBegin = 511F - srcEnd = 5121 - mappingOffset = 0262 - Mapping = - 5F41 FFFD 566D -End of Item 014D - -Begin of Item 014E - Format 2 - srcBegin = 512A - destBegin = 6950 -End of Item 014E - -Begin of Item 014F - Format 2 - srcBegin = 5132 - destBegin = 6E39 -End of Item 014F - -Begin of Item 0150 - Format 1 - srcBegin = 5137 - srcEnd = 513C - mappingOffset = 0265 - Mapping = - 5563 FFFD FFFD 5153 FFFD 6570 -End of Item 0150 - -Begin of Item 0151 - Format 1 - srcBegin = 5140 - srcEnd = 514E - mappingOffset = 026B - Mapping = - 6834 6B43 FFFD 6A2A 7A7C 7576 703C 7D54 - 603B 4E43 FFFD 503A 773A 5873 774D -End of Item 0151 - -Begin of Item 0152 - Format 2 - srcBegin = 5152 - destBegin = 642E -End of Item 0152 - -Begin of Item 0153 - Format 2 - srcBegin = 515C - destBegin = 545F -End of Item 0153 - -Begin of Item 0154 - Format 1 - srcBegin = 5162 - srcEnd = 5171 - mappingOffset = 027A - Mapping = - 5067 FFFD FFFD 6C7D FFFD 522E 6E6F 5557 - 6A64 7822 4D6B 573F 7B31 FFFD FFFD 4D6C -End of Item 0154 - -Begin of Item 0155 - Format 1 - srcBegin = 5175 - srcEnd = 5178 - mappingOffset = 028A - Mapping = - 5C32 506C 4E7D 6E70 -End of Item 0155 - -Begin of Item 0156 - Format 2 - srcBegin = 517C - destBegin = 4C42 -End of Item 0156 - -Begin of Item 0157 - Format 2 - srcBegin = 5180 - destBegin = 506D -End of Item 0157 - -Begin of Item 0158 - Format 2 - srcBegin = 5186 - destBegin = 6577 -End of Item 0158 - -Begin of Item 0159 - Format 1 - srcBegin = 518A - srcEnd = 518D - mappingOffset = 028E - Mapping = - 737C FFFD FFFD 6E22 -End of Item 0159 - -Begin of Item 015A - Format 1 - srcBegin = 5192 - srcEnd = 5197 - mappingOffset = 0292 - Mapping = - 5933 FFFD FFFD 5874 FFFD 6937 -End of Item 015A - -Begin of Item 015B - Format 2 - srcBegin = 51A0 - destBegin = 4E2E -End of Item 015B - -Begin of Item 015C - Format 2 - srcBegin = 51A5 - destBegin = 5922 -End of Item 015C - -Begin of Item 015D - Format 1 - srcBegin = 51AA - srcEnd = 51AC - mappingOffset = 0298 - Mapping = - 5871 FFFD 544F -End of Item 015D - -Begin of Item 015E - Format 1 - srcBegin = 51B6 - srcEnd = 51B7 - mappingOffset = 029B - Mapping = - 6527 5552 -End of Item 015E - -Begin of Item 015F - Format 2 - srcBegin = 51BD - destBegin = 5629 -End of Item 015F - -Begin of Item 0160 - Format 1 - srcBegin = 51C4 - srcEnd = 51CD - mappingOffset = 029D - Mapping = - 7422 FFFD 7157 FFFD FFFD 5558 FFFD 703D - 5750 5450 -End of Item 0160 - -Begin of Item 0161 - Format 1 - srcBegin = 51DC - srcEnd = 51E1 - mappingOffset = 02A7 - Mapping = - 574F 6B6A 7D6B FFFD FFFD 5B6D -End of Item 0161 - -Begin of Item 0162 - Format 1 - srcBegin = 51F0 - srcEnd = 51F1 - mappingOffset = 02AD - Mapping = - 7C45 4B42 -End of Item 0162 - -Begin of Item 0163 - Format 1 - srcBegin = 51F6 - srcEnd = 520A - mappingOffset = 02AF - Mapping = - 7D55 FFFD 7448 686A 7573 FFFD FFFD 795E - FFFD FFFD 536F FFFD FFFD 6C53 FFFD FFFD - 5D42 6F37 6754 FFFD 4A4A -End of Item 0163 - -Begin of Item 0164 - Format 1 - srcBegin = 520E - srcEnd = 5211 - mappingOffset = 02C4 - Mapping = - 597B FFFD FFFD 7A7D -End of Item 0164 - -Begin of Item 0165 - Format 2 - srcBegin = 5217 - destBegin = 562A -End of Item 0165 - -Begin of Item 0166 - Format 2 - srcBegin = 521D - destBegin = 7478 -End of Item 0166 - -Begin of Item 0167 - Format 1 - srcBegin = 5224 - srcEnd = 5225 - mappingOffset = 02C8 - Mapping = - 7777 5C2C -End of Item 0167 - -Begin of Item 0168 - Format 1 - srcBegin = 5229 - srcEnd = 522A - mappingOffset = 02CA - Mapping = - 5757 5F22 -End of Item 0168 - -Begin of Item 0169 - Format 1 - srcBegin = 522E - srcEnd = 5230 - mappingOffset = 02CC - Mapping = - 4E3E FFFD 5370 -End of Item 0169 - -Begin of Item 016A - Format 1 - srcBegin = 5236 - srcEnd = 523B - mappingOffset = 02CF - Mapping = - 7024 616C 4F67 734B 6D29 4A3E -End of Item 016A - -Begin of Item 016B - Format 2 - srcBegin = 5243 - destBegin = 746F -End of Item 016B - -Begin of Item 016C - Format 1 - srcBegin = 5247 - srcEnd = 524D - mappingOffset = 02D5 - Mapping = - 764E FFFD FFFD 5E7B 503B 5537 6E71 -End of Item 016C - -Begin of Item 016D - Format 1 - srcBegin = 5254 - srcEnd = 5256 - mappingOffset = 02DC - Mapping = - 7428 FFFD 5C78 -End of Item 016D - -Begin of Item 016E - Format 1 - srcBegin = 525B - srcEnd = 525D - mappingOffset = 02DF - Mapping = - 4B27 FFFD 5A4E -End of Item 016E - -Begin of Item 016F - Format 2 - srcBegin = 5261 - destBegin = 6066 -End of Item 016F - -Begin of Item 0170 - Format 1 - srcBegin = 5269 - srcEnd = 526A - mappingOffset = 02E2 - Mapping = - 6D25 6E72 -End of Item 0170 - -Begin of Item 0171 - Format 1 - srcBegin = 526F - srcEnd = 5275 - mappingOffset = 02E4 - Mapping = - 5C79 FFFD FFFD 795C FFFD FFFD 735C -End of Item 0171 - -Begin of Item 0172 - Format 1 - srcBegin = 527D - srcEnd = 527F - mappingOffset = 02EB - Mapping = - 7872 FFFD 7479 -End of Item 0172 - -Begin of Item 0173 - Format 2 - srcBegin = 5283 - destBegin = 7C71 -End of Item 0173 - -Begin of Item 0174 - Format 1 - srcBegin = 5287 - srcEnd = 5289 - mappingOffset = 02EE - Mapping = - 503C 5B79 5731 -End of Item 0174 - -Begin of Item 0175 - Format 2 - srcBegin = 528D - destBegin = 4B7C -End of Item 0175 - -Begin of Item 0176 - Format 1 - srcBegin = 5291 - srcEnd = 5292 - mappingOffset = 02F1 - Mapping = - 7025 4B7D -End of Item 0176 - -Begin of Item 0177 - Format 2 - srcBegin = 529B - destBegin = 5574 -End of Item 0177 - -Begin of Item 0178 - Format 1 - srcBegin = 529F - srcEnd = 52A4 - mappingOffset = 02F3 - Mapping = - 4D6D 4A25 FFFD FFFD 562B 5042 -End of Item 0178 - -Begin of Item 0179 - Format 1 - srcBegin = 52A9 - srcEnd = 52AB - mappingOffset = 02F9 - Mapping = - 703E 523D 4C24 -End of Item 0179 - -Begin of Item 017A - Format 1 - srcBegin = 52BE - srcEnd = 52C9 - mappingOffset = 02FC - Mapping = - 7A36 FFFD FFFD 4C4D FFFD 5A7A FFFD 764F - FFFD 6938 FFFD 5875 -End of Item 017A - -Begin of Item 017B - Format 2 - srcBegin = 52CD - destBegin = 4C4E -End of Item 017B - -Begin of Item 017C - Format 1 - srcBegin = 52D2 - srcEnd = 52E4 - mappingOffset = 0308 - Mapping = - 574D FFFD FFFD 5451 696D FFFD 4A6B 5962 - FFFD 7D32 FFFD 632D 564C 5934 FFFD FFFD - 6127 6E53 5043 -End of Item 017C - -Begin of Item 017D - Format 1 - srcBegin = 52F3 - srcEnd = 52FF - mappingOffset = 031B - Mapping = - 7D33 FFFD 5564 FFFD FFFD 4F68 FFFD 6D43 - 5032 FFFD FFFD 4E7E 5A28 -End of Item 017D - -Begin of Item 017E - Format 1 - srcBegin = 5305 - srcEnd = 5308 - mappingOffset = 0328 - Mapping = - 7850 FFFD FFFD 7D56 -End of Item 017E - -Begin of Item 017F - Format 1 - srcBegin = 530D - srcEnd = 5310 - mappingOffset = 032C - Mapping = - 7851 FFFD 7852 5C53 -End of Item 017F - -Begin of Item 0180 - Format 1 - srcBegin = 5315 - srcEnd = 5319 - mappingOffset = 0330 - Mapping = - 5D62 7B79 5D41 FFFD 6335 -End of Item 0180 - -Begin of Item 0181 - Format 1 - srcBegin = 5320 - srcEnd = 5323 - mappingOffset = 0335 - Mapping = - 6D5D 4E44 FFFD 4B21 -End of Item 0181 - -Begin of Item 0182 - Format 2 - srcBegin = 532A - destBegin = 5D63 -End of Item 0182 - -Begin of Item 0183 - Format 2 - srcBegin = 532F - destBegin = 7C5D -End of Item 0183 - -Begin of Item 0184 - Format 2 - srcBegin = 5339 - destBegin = 792F -End of Item 0184 - -Begin of Item 0185 - Format 1 - srcBegin = 533F - srcEnd = 534D - mappingOffset = 0339 - Mapping = - 527B 4F21 6428 FFFD 7436 6C7E FFFD FFFD - 632E 676D 7D41 5A62 FFFD FFFD 5833 -End of Item 0185 - -Begin of Item 0186 - Format 1 - srcBegin = 5351 - srcEnd = 5360 - mappingOffset = 0348 - Mapping = - 5D64 706F 7671 7A70 FFFD FFFD 5175 FFFD - FFFD 5A4F FFFD 5C54 FFFD 5C26 FFFD 6F3F -End of Item 0186 - -Begin of Item 0187 - Format 1 - srcBegin = 5366 - srcEnd = 5368 - mappingOffset = 0358 - Mapping = - 4E4F FFFD 6059 -End of Item 0187 - -Begin of Item 0188 - Format 1 - srcBegin = 536F - srcEnd = 5377 - mappingOffset = 035B - Mapping = - 5956 6C54 6A4B FFFD FFFD 4A3F 5530 FFFD - 4F69 -End of Item 0188 - -Begin of Item 0189 - Format 1 - srcBegin = 537D - srcEnd = 537F - mappingOffset = 0364 - Mapping = - 716D FFFD 4C4F -End of Item 0189 - -Begin of Item 018A - Format 2 - srcBegin = 5384 - destBegin = 6478 -End of Item 018A - -Begin of Item 018B - Format 2 - srcBegin = 5393 - destBegin = 646D -End of Item 018B - -Begin of Item 018C - Format 1 - srcBegin = 5398 - srcEnd = 539A - mappingOffset = 0367 - Mapping = - 5758 FFFD 7D27 -End of Item 018C - -Begin of Item 018D - Format 1 - srcBegin = 539F - srcEnd = 53A0 - mappingOffset = 036A - Mapping = - 6A2B 7632 -End of Item 018D - -Begin of Item 018E - Format 1 - srcBegin = 53A5 - srcEnd = 53A6 - mappingOffset = 036C - Mapping = - 4F70 793D -End of Item 018E - -Begin of Item 018F - Format 2 - srcBegin = 53AD - destBegin = 6674 -End of Item 018F - -Begin of Item 0190 - Format 2 - srcBegin = 53BB - destBegin = 4B5B -End of Item 0190 - -Begin of Item 0191 - Format 2 - srcBegin = 53C3 - destBegin = 7351 -End of Item 0191 - -Begin of Item 0192 - Format 1 - srcBegin = 53C8 - srcEnd = 53CD - mappingOffset = 036E - Mapping = - 6951 7329 5060 6952 FFFD 5A63 -End of Item 0192 - -Begin of Item 0193 - Format 1 - srcBegin = 53D4 - srcEnd = 53D7 - mappingOffset = 0374 - Mapping = - 6252 FFFD 7622 6174 -End of Item 0193 - -Begin of Item 0194 - Format 2 - srcBegin = 53DB - destBegin = 5A64 -End of Item 0194 - -Begin of Item 0195 - Format 1 - srcBegin = 53E1 - srcEnd = 53E5 - mappingOffset = 0378 - Mapping = - 6755 753F 4F22 4D2F 4F23 -End of Item 0195 - -Begin of Item 0196 - Format 1 - srcBegin = 53E9 - srcEnd = 53F3 - mappingOffset = 037D - Mapping = - 4D30 717E 5023 612F 7823 FFFD 4A26 773B - 726A 5E48 6953 -End of Item 0196 - -Begin of Item 0197 - Format 2 - srcBegin = 53F8 - destBegin = 5E49 -End of Item 0197 - -Begin of Item 0198 - Format 1 - srcBegin = 5403 - srcEnd = 5404 - mappingOffset = 0388 - Mapping = - 7D5E 4A40 -End of Item 0198 - -Begin of Item 0199 - Format 1 - srcBegin = 5408 - srcEnd = 5411 - mappingOffset = 038A - Mapping = - 796A 514E 6E54 FFFD 5452 5923 7D28 5759 - 774E 7A3E -End of Item 0199 - -Begin of Item 019A - Format 1 - srcBegin = 541B - srcEnd = 5420 - mappingOffset = 0394 - Mapping = - 4F56 FFFD 5770 FFFD 6B61 7845 -End of Item 019A - -Begin of Item 019B - Format 1 - srcBegin = 5426 - srcEnd = 542B - mappingOffset = 039A - Mapping = - 5C7A FFFD FFFD 5D43 FFFD 795F -End of Item 019B - -Begin of Item 019C - Format 2 - srcBegin = 5433 - destBegin = 676F -End of Item 019C - -Begin of Item 019D - Format 1 - srcBegin = 5438 - srcEnd = 543E - mappingOffset = 03A0 - Mapping = - 7D65 7623 FFFD 597C 7D29 FFFD 676E -End of Item 019D - -Begin of Item 019E - Format 2 - srcBegin = 5442 - destBegin = 5565 -End of Item 019E - -Begin of Item 019F - Format 1 - srcBegin = 5448 - srcEnd = 544A - mappingOffset = 03A7 - Mapping = - 6F50 FFFD 4D31 -End of Item 019F - -Begin of Item 01A0 - Format 2 - srcBegin = 5451 - destBegin = 7722 -End of Item 01A0 - -Begin of Item 01A1 - Format 1 - srcBegin = 5468 - srcEnd = 546A - mappingOffset = 03AA - Mapping = - 7132 FFFD 7131 -End of Item 01A1 - -Begin of Item 01A2 - Format 1 - srcBegin = 5471 - srcEnd = 5475 - mappingOffset = 03AD - Mapping = - 4D32 FFFD 5A2B FFFD 4A27 -End of Item 01A2 - -Begin of Item 01A3 - Format 1 - srcBegin = 547B - srcEnd = 5480 - mappingOffset = 03B2 - Mapping = - 6362 7B3C 5924 FFFD FFFD 6E3A -End of Item 01A3 - -Begin of Item 01A4 - Format 2 - srcBegin = 5486 - destBegin = 7853 -End of Item 01A4 - -Begin of Item 01A5 - Format 1 - srcBegin = 548C - srcEnd = 5490 - mappingOffset = 03B8 - Mapping = - 7B7A FFFD 4F24 FFFD 5C7B -End of Item 01A5 - -Begin of Item 01A6 - Format 2 - srcBegin = 54A4 - destBegin = 7663 -End of Item 01A6 - -Begin of Item 01A7 - Format 1 - srcBegin = 54A8 - srcEnd = 54AC - mappingOffset = 03BD - Mapping = - 6D2A FFFD FFFD 7221 4E61 -End of Item 01A7 - -Begin of Item 01A8 - Format 2 - srcBegin = 54B3 - destBegin = 7A26 -End of Item 01A8 - -Begin of Item 01A9 - Format 2 - srcBegin = 54B8 - destBegin = 7960 -End of Item 01A9 - -Begin of Item 01AA - Format 1 - srcBegin = 54BD - srcEnd = 54C4 - mappingOffset = 03C2 - Mapping = - 6C56 FFFD FFFD 646E 7921 FFFD FFFD 7B6F -End of Item 01AA - -Begin of Item 01AB - Format 1 - srcBegin = 54C8 - srcEnd = 54C9 - mappingOffset = 03CA - Mapping = - 796B 6E23 -End of Item 01AB - -Begin of Item 01AC - Format 2 - srcBegin = 54E1 - destBegin = 6A2C -End of Item 01AC - -Begin of Item 01AD - Format 1 - srcBegin = 54E5 - srcEnd = 54E8 - mappingOffset = 03CC - Mapping = - 4A28 FFFD FFFD 747A -End of Item 01AD - -Begin of Item 01AE - Format 1 - srcBegin = 54ED - srcEnd = 54EE - mappingOffset = 03D0 - Mapping = - 4D56 7C76 -End of Item 01AE - -Begin of Item 01AF - Format 2 - srcBegin = 54F2 - destBegin = 7449 -End of Item 01AF - -Begin of Item 01B0 - Format 2 - srcBegin = 54FA - destBegin = 7854 -End of Item 01B0 - -Begin of Item 01B1 - Format 1 - srcBegin = 5504 - srcEnd = 5507 - mappingOffset = 03D2 - Mapping = - 7826 FFFD 5E4A 7246 -End of Item 01B1 - -Begin of Item 01B2 - Format 1 - srcBegin = 550E - srcEnd = 5510 - mappingOffset = 03D6 - Mapping = - 575A FFFD 5350 -End of Item 01B2 - -Begin of Item 01B3 - Format 2 - srcBegin = 551C - destBegin = 5845 -End of Item 01B3 - -Begin of Item 01B4 - Format 1 - srcBegin = 552F - srcEnd = 5531 - mappingOffset = 03D9 - Mapping = - 6A66 FFFD 735D -End of Item 01B4 - -Begin of Item 01B5 - Format 2 - srcBegin = 5535 - destBegin = 645A -End of Item 01B5 - -Begin of Item 01B6 - Format 2 - srcBegin = 553E - destBegin = 7664 -End of Item 01B6 - -Begin of Item 01B7 - Format 1 - srcBegin = 5544 - srcEnd = 5546 - mappingOffset = 03DC - Mapping = - 7672 FFFD 5F42 -End of Item 01B7 - -Begin of Item 01B8 - Format 2 - srcBegin = 554F - destBegin = 597D -End of Item 01B8 - -Begin of Item 01B9 - Format 1 - srcBegin = 5553 - srcEnd = 5556 - mappingOffset = 03DF - Mapping = - 4C76 FFFD FFFD 533A -End of Item 01B9 - -Begin of Item 01BA - Format 2 - srcBegin = 555E - destBegin = 642F -End of Item 01BA - -Begin of Item 01BB - Format 2 - srcBegin = 5563 - destBegin = 7961 -End of Item 01BB - -Begin of Item 01BC - Format 2 - srcBegin = 557C - destBegin = 7026 -End of Item 01BC - -Begin of Item 01BD - Format 2 - srcBegin = 5580 - destBegin = 4B53 -End of Item 01BD - -Begin of Item 01BE - Format 1 - srcBegin = 5584 - srcEnd = 558A - mappingOffset = 03E3 - Mapping = - 603C FFFD 744A 547A FFFD 7D2A 7962 -End of Item 01BE - -Begin of Item 01BF - Format 1 - srcBegin = 5598 - srcEnd = 559D - mappingOffset = 03EA - Mapping = - 7437 7D42 7C30 FFFD 7D6C 4A62 -End of Item 01BF - -Begin of Item 01C0 - Format 1 - srcBegin = 55A7 - srcEnd = 55AE - mappingOffset = 03F0 - Mapping = - 7D3D FFFD 6A67 5F43 5152 4E62 FFFD 5324 -End of Item 01C0 - -Begin of Item 01C1 - Format 1 - srcBegin = 55C5 - srcEnd = 55C7 - mappingOffset = 03F8 - Mapping = - 7D2B FFFD 5F60 -End of Item 01C1 - -Begin of Item 01C2 - Format 2 - srcBegin = 55D4 - destBegin = 7247 -End of Item 01C2 - -Begin of Item 01C3 - Format 1 - srcBegin = 55DA - srcEnd = 55DF - mappingOffset = 03FB - Mapping = - 6770 FFFD 506E FFFD FFFD 732A -End of Item 01C3 - -Begin of Item 01C4 - Format 1 - srcBegin = 55E3 - srcEnd = 55E4 - mappingOffset = 0401 - Mapping = - 5E4B 7638 -End of Item 01C4 - -Begin of Item 01C5 - Format 1 - srcBegin = 55FD - srcEnd = 55FE - mappingOffset = 0403 - Mapping = - 6175 7133 -End of Item 01C5 - -Begin of Item 01C6 - Format 1 - srcBegin = 5606 - srcEnd = 5609 - mappingOffset = 0405 - Mapping = - 7723 FFFD FFFD 4A29 -End of Item 01C6 - -Begin of Item 01C7 - Format 1 - srcBegin = 5614 - srcEnd = 5617 - mappingOffset = 0409 - Mapping = - 4F25 FFFD FFFD 5F44 -End of Item 01C7 - -Begin of Item 01C8 - Format 1 - srcBegin = 562F - srcEnd = 5636 - mappingOffset = 040D - Mapping = - 6130 FFFD FFFD 703F FFFD 7624 FFFD 6336 -End of Item 01C8 - -Begin of Item 01C9 - Format 2 - srcBegin = 5653 - destBegin = 7A46 -End of Item 01C9 - -Begin of Item 01CA - Format 1 - srcBegin = 5668 - srcEnd = 566B - mappingOffset = 0415 - Mapping = - 506F FFFD FFFD 7D6D -End of Item 01CA - -Begin of Item 01CB - Format 2 - srcBegin = 5674 - destBegin = 5D44 -End of Item 01CB - -Begin of Item 01CC - Format 2 - srcBegin = 5686 - destBegin = 7C77 -End of Item 01CC - -Begin of Item 01CD - Format 2 - srcBegin = 56A5 - destBegin = 663F -End of Item 01CD - -Begin of Item 01CE - Format 1 - srcBegin = 56AC - srcEnd = 56AE - mappingOffset = 0419 - Mapping = - 5E2D FFFD 7A3F -End of Item 01CE - -Begin of Item 01CF - Format 2 - srcBegin = 56B4 - destBegin = 6571 -End of Item 01CF - -Begin of Item 01D0 - Format 2 - srcBegin = 56BC - destBegin = 6D44 -End of Item 01D0 - -Begin of Item 01D1 - Format 1 - srcBegin = 56CA - srcEnd = 56CD - mappingOffset = 041C - Mapping = - 5225 FFFD FFFD 7D6E -End of Item 01D1 - -Begin of Item 01D2 - Format 2 - srcBegin = 56D1 - destBegin = 7536 -End of Item 01D2 - -Begin of Item 01D3 - Format 1 - srcBegin = 56DA - srcEnd = 56E0 - mappingOffset = 0420 - Mapping = - 6176 5E4C FFFD FFFD 7C5E FFFD 6C57 -End of Item 01D3 - -Begin of Item 01D4 - Format 2 - srcBegin = 56F0 - destBegin = 4D5D -End of Item 01D4 - -Begin of Item 01D5 - Format 1 - srcBegin = 56F9 - srcEnd = 56FA - mappingOffset = 0427 - Mapping = - 5637 4D33 -End of Item 01D5 - -Begin of Item 01D6 - Format 1 - srcBegin = 5703 - srcEnd = 5704 - mappingOffset = 0429 - Mapping = - 7855 6558 -End of Item 01D6 - -Begin of Item 01D7 - Format 1 - srcBegin = 5708 - srcEnd = 570D - mappingOffset = 042B - Mapping = - 4F6A FFFD FFFD 4F50 FFFD 6A4C -End of Item 01D7 - -Begin of Item 01D8 - Format 1 - srcBegin = 5712 - srcEnd = 5718 - mappingOffset = 0431 - Mapping = - 6A2E 6A2D FFFD FFFD 5371 FFFD 5325 -End of Item 01D8 - -Begin of Item 01D9 - Format 2 - srcBegin = 571F - destBegin = 774F -End of Item 01D9 - -Begin of Item 01DA - Format 2 - srcBegin = 5728 - destBegin = 6E24 -End of Item 01DA - -Begin of Item 01DB - Format 1 - srcBegin = 572D - srcEnd = 5730 - mappingOffset = 0438 - Mapping = - 5024 FFFD FFFD 7222 -End of Item 01DB - -Begin of Item 01DC - Format 2 - srcBegin = 573B - destBegin = 5070 -End of Item 01DC - -Begin of Item 01DD - Format 1 - srcBegin = 5740 - srcEnd = 5742 - mappingOffset = 043C - Mapping = - 7223 FFFD 7778 -End of Item 01DD - -Begin of Item 01DE - Format 1 - srcBegin = 5747 - srcEnd = 5751 - mappingOffset = 043F - Mapping = - 5033 FFFD FFFD 5B29 FFFD FFFD 533B 4A6C - FFFD 7126 4B55 -End of Item 01DE - -Begin of Item 01DF - Format 1 - srcBegin = 5761 - srcEnd = 5766 - mappingOffset = 044A - Mapping = - 7767 FFFD FFFD 4D5E FFFD 7724 -End of Item 01DF - -Begin of Item 01E0 - Format 2 - srcBegin = 576A - destBegin = 7840 -End of Item 01E0 - -Begin of Item 01E1 - Format 1 - srcBegin = 576E - srcEnd = 5770 - mappingOffset = 0450 - Mapping = - 535D FFFD 4C50 -End of Item 01E1 - -Begin of Item 01E2 - Format 2 - srcBegin = 5775 - destBegin = 4F26 -End of Item 01E2 - -Begin of Item 01E3 - Format 2 - srcBegin = 577C - destBegin = 7673 -End of Item 01E3 - -Begin of Item 01E4 - Format 2 - srcBegin = 5782 - destBegin = 6177 -End of Item 01E4 - -Begin of Item 01E5 - Format 1 - srcBegin = 5788 - srcEnd = 578B - mappingOffset = 0453 - Mapping = - 535C FFFD FFFD 7A7E -End of Item 01E5 - -Begin of Item 01E6 - Format 2 - srcBegin = 5793 - destBegin = 7A27 -End of Item 01E6 - -Begin of Item 01E7 - Format 1 - srcBegin = 57A0 - srcEnd = 57A3 - mappingOffset = 0457 - Mapping = - 6B59 FFFD 4F27 6A2F -End of Item 01E7 - -Begin of Item 01E8 - Format 2 - srcBegin = 57C3 - destBegin = 646F -End of Item 01E8 - -Begin of Item 01E9 - Format 1 - srcBegin = 57C7 - srcEnd = 57CE - mappingOffset = 045B - Mapping = - 6939 7158 FFFD FFFD 5858 FFFD FFFD 6072 -End of Item 01E9 - -Begin of Item 01EA - Format 1 - srcBegin = 57DF - srcEnd = 57E0 - mappingOffset = 0463 - Mapping = - 6634 5C7C -End of Item 01EA - -Begin of Item 01EB - Format 2 - srcBegin = 57F0 - destBegin = 7371 -End of Item 01EB - -Begin of Item 01EC - Format 1 - srcBegin = 57F4 - srcEnd = 57FC - mappingOffset = 0465 - Mapping = - 6350 FFFD FFFD 727B FFFD 5B46 5071 FFFD - 5072 -End of Item 01EC - -Begin of Item 01ED - Format 1 - srcBegin = 5800 - srcEnd = 580A - mappingOffset = 046E - Mapping = - 4F5C FFFD 5351 FFFD FFFD 4C31 7758 FFFD - 4B28 6B3C 643E -End of Item 01ED - -Begin of Item 01EE - Format 1 - srcBegin = 581E - srcEnd = 582A - mappingOffset = 0479 - Mapping = - 745C FFFD FFFD 5C42 FFFD FFFD 7027 FFFD - FFFD 6640 FFFD FFFD 4A6D -End of Item 01EE - -Begin of Item 01EF - Format 1 - srcBegin = 582F - srcEnd = 5835 - mappingOffset = 0486 - Mapping = - 686B 6568 5C43 FFFD FFFD 6D5E 5372 -End of Item 01EF - -Begin of Item 01F0 - Format 2 - srcBegin = 583A - destBegin = 4C77 -End of Item 01F0 - -Begin of Item 01F1 - Format 1 - srcBegin = 584A - srcEnd = 584B - mappingOffset = 048D - Mapping = - 4E54 672B -End of Item 01F1 - -Begin of Item 01F2 - Format 1 - srcBegin = 584F - srcEnd = 585A - mappingOffset = 048F - Mapping = - 4B43 FFFD 6131 FFFD FFFD 7732 FFFD FFFD - 5373 5352 FFFD 7540 -End of Item 01F2 - -Begin of Item 01F3 - Format 1 - srcBegin = 585E - srcEnd = 5864 - mappingOffset = 049B - Mapping = - 5F5D FFFD FFFD 6E73 6771 FFFD 7D34 -End of Item 01F3 - -Begin of Item 01F4 - Format 2 - srcBegin = 5875 - destBegin = 7248 -End of Item 01F4 - -Begin of Item 01F5 - Format 1 - srcBegin = 5879 - srcEnd = 587E - mappingOffset = 04A2 - Mapping = - 7352 FFFD FFFD 6E74 FFFD 6253 -End of Item 01F5 - -Begin of Item 01F6 - Format 1 - srcBegin = 5883 - srcEnd = 5885 - mappingOffset = 04A8 - Mapping = - 4C51 FFFD 5F6A -End of Item 01F6 - -Begin of Item 01F7 - Format 2 - srcBegin = 5889 - destBegin = 693A -End of Item 01F7 - -Begin of Item 01F8 - Format 2 - srcBegin = 5893 - destBegin = 5957 -End of Item 01F8 - -Begin of Item 01F9 - Format 1 - srcBegin = 589C - srcEnd = 589F - mappingOffset = 04AB - Mapping = - 754D FFFD 7172 7A47 -End of Item 01F9 - -Begin of Item 01FA - Format 1 - srcBegin = 58A8 - srcEnd = 58A9 - mappingOffset = 04AF - Mapping = - 5978 5442 -End of Item 01FA - -Begin of Item 01FB - Format 2 - srcBegin = 58AE - destBegin = 7665 -End of Item 01FB - -Begin of Item 01FC - Format 2 - srcBegin = 58B3 - destBegin = 5D45 -End of Item 01FC - -Begin of Item 01FD - Format 1 - srcBegin = 58BA - srcEnd = 58C1 - mappingOffset = 04B1 - Mapping = - 6772 6D5F FFFD FFFD 4A4B FFFD FFFD 5B7A -End of Item 01FD - -Begin of Item 01FE - Format 1 - srcBegin = 58C5 - srcEnd = 58C7 - mappingOffset = 04B9 - Mapping = - 6835 FFFD 5326 -End of Item 01FE - -Begin of Item 01FF - Format 1 - srcBegin = 58CE - srcEnd = 58D9 - mappingOffset = 04BC - Mapping = - 7D35 FFFD FFFD 7949 FFFD 6462 FFFD 7B3D - FFFD FFFD 5724 4E45 -End of Item 01FF - -Begin of Item 0200 - Format 1 - srcBegin = 58DE - srcEnd = 58DF - mappingOffset = 04C8 - Mapping = - 4E55 5666 -End of Item 0200 - -Begin of Item 0201 - Format 2 - srcBegin = 58E4 - destBegin = 653D -End of Item 0201 - -Begin of Item 0202 - Format 1 - srcBegin = 58EB - srcEnd = 58EF - mappingOffset = 04CA - Mapping = - 5E4D 6C73 FFFD FFFD 6D60 -End of Item 0202 - -Begin of Item 0203 - Format 1 - srcBegin = 58F9 - srcEnd = 58FD - mappingOffset = 04CF - Mapping = - 6C6C 7B3E 5F6B FFFD 6178 -End of Item 0203 - -Begin of Item 0204 - Format 2 - srcBegin = 590F - destBegin = 793E -End of Item 0204 - -Begin of Item 0205 - Format 1 - srcBegin = 5914 - srcEnd = 591C - mappingOffset = 04D4 - Mapping = - 5073 602A 6862 FFFD FFFD 6254 527D FFFD - 6528 -End of Item 0205 - -Begin of Item 0206 - Format 2 - srcBegin = 5922 - destBegin = 5953 -End of Item 0206 - -Begin of Item 0207 - Format 1 - srcBegin = 5927 - srcEnd = 5931 - mappingOffset = 04DD - Mapping = - 535E FFFD 7438 773C 5C7D FFFD 686C 6467 - FFFD FFFD 6377 -End of Item 0207 - -Begin of Item 0208 - Format 2 - srcBegin = 5937 - destBegin = 6C28 -End of Item 0208 - -Begin of Item 0209 - Format 2 - srcBegin = 593E - destBegin = 7A71 -End of Item 0209 - -Begin of Item 020A - Format 1 - srcBegin = 5944 - srcEnd = 5949 - mappingOffset = 04E8 - Mapping = - 6572 FFFD FFFD 5074 522F 5C65 -End of Item 020A - -Begin of Item 020B - Format 1 - srcBegin = 594E - srcEnd = 595A - mappingOffset = 04EE - Mapping = - 5025 7134 7C31 4C78 FFFD FFFD 5D46 7A51 - FFFD 775F FFFD FFFD 7A28 -End of Item 020B - -Begin of Item 020C - Format 1 - srcBegin = 5960 - srcEnd = 5962 - mappingOffset = 04FB - Mapping = - 6E75 FFFD 5E4E -End of Item 020C - -Begin of Item 020D - Format 1 - srcBegin = 5967 - srcEnd = 596E - mappingOffset = 04FE - Mapping = - 6773 FFFD FFFD 772C 6B44 6D61 602B 5D47 -End of Item 020D - -Begin of Item 020E - Format 1 - srcBegin = 5973 - srcEnd = 5974 - mappingOffset = 0506 - Mapping = - 5233 523F -End of Item 020E - -Begin of Item 020F - Format 2 - srcBegin = 5978 - destBegin = 4A4C -End of Item 020F - -Begin of Item 0210 - Format 2 - srcBegin = 597D - destBegin = 7B3F -End of Item 0210 - -Begin of Item 0211 - Format 1 - srcBegin = 5982 - srcEnd = 5984 - mappingOffset = 0508 - Mapping = - 657D 5D65 584D -End of Item 0211 - -Begin of Item 0212 - Format 2 - srcBegin = 598A - destBegin = 6C74 -End of Item 0212 - -Begin of Item 0213 - Format 1 - srcBegin = 5993 - srcEnd = 5999 - mappingOffset = 050B - Mapping = - 5075 FFFD FFFD 686D 5052 FFFD 5958 -End of Item 0213 - -Begin of Item 0214 - Format 1 - srcBegin = 59A5 - srcEnd = 59A8 - mappingOffset = 0512 - Mapping = - 7666 FFFD FFFD 5B2A -End of Item 0214 - -Begin of Item 0215 - Format 2 - srcBegin = 59AC - destBegin = 7760 -End of Item 0215 - -Begin of Item 0216 - Format 1 - srcBegin = 59B9 - srcEnd = 59BE - mappingOffset = 0516 - Mapping = - 5859 FFFD 7423 FFFD FFFD 745D -End of Item 0216 - -Begin of Item 0217 - Format 1 - srcBegin = 59C3 - srcEnd = 59CB - mappingOffset = 051C - Mapping = - 6F51 FFFD FFFD 5935 FFFD FFFD 6D2B FFFD - 6337 -End of Item 0217 - -Begin of Item 0218 - Format 1 - srcBegin = 59D0 - srcEnd = 59D4 - mappingOffset = 0525 - Mapping = - 6E3B 4D34 FFFD 6073 6A4D -End of Item 0218 - -Begin of Item 0219 - Format 1 - srcBegin = 59D9 - srcEnd = 59DD - mappingOffset = 052A - Mapping = - 6C75 686E FFFD 4B29 712F -End of Item 0219 - -Begin of Item 021A - Format 1 - srcBegin = 59E6 - srcEnd = 59EE - mappingOffset = 052F - Mapping = - 4A4D FFFD 6C29 FFFD 726B FFFD 7D6F FFFD - 7973 -End of Item 021A - -Begin of Item 021B - Format 1 - srcBegin = 59F8 - srcEnd = 59FB - mappingOffset = 0538 - Mapping = - 6641 FFFD FFFD 6C58 -End of Item 021B - -Begin of Item 021C - Format 1 - srcBegin = 59FF - srcEnd = 5A03 - mappingOffset = 053C - Mapping = - 6D2C FFFD 6A4E FFFD 685F -End of Item 021C - -Begin of Item 021D - Format 2 - srcBegin = 5A11 - destBegin = 5E4F -End of Item 021D - -Begin of Item 021E - Format 1 - srcBegin = 5A18 - srcEnd = 5A20 - mappingOffset = 0541 - Mapping = - 5226 FFFD FFFD 6774 5156 FFFD FFFD 6642 - 6363 -End of Item 021E - -Begin of Item 021F - Format 2 - srcBegin = 5A25 - destBegin = 6430 -End of Item 021F - -Begin of Item 0220 - Format 2 - srcBegin = 5A29 - destBegin = 5834 -End of Item 0220 - -Begin of Item 0221 - Format 2 - srcBegin = 5A36 - destBegin = 7625 -End of Item 0221 - -Begin of Item 0222 - Format 2 - srcBegin = 5A3C - destBegin = 735E -End of Item 0222 - -Begin of Item 0223 - Format 2 - srcBegin = 5A41 - destBegin = 5725 -End of Item 0223 - -Begin of Item 0224 - Format 1 - srcBegin = 5A46 - srcEnd = 5A49 - mappingOffset = 054A - Mapping = - 7768 FFFD FFFD 6846 -End of Item 0224 - -Begin of Item 0225 - Format 2 - srcBegin = 5A5A - destBegin = 7B66 -End of Item 0225 - -Begin of Item 0226 - Format 2 - srcBegin = 5A62 - destBegin = 5D66 -End of Item 0226 - -Begin of Item 0227 - Format 2 - srcBegin = 5A66 - destBegin = 5C7E -End of Item 0227 - -Begin of Item 0228 - Format 2 - srcBegin = 5A92 - destBegin = 585A -End of Item 0228 - -Begin of Item 0229 - Format 1 - srcBegin = 5A9A - srcEnd = 5A9B - mappingOffset = 054E - Mapping = - 5A2C 6A30 -End of Item 0229 - -Begin of Item 022A - Format 2 - srcBegin = 5AA4 - destBegin = 6338 -End of Item 022A - -Begin of Item 022B - Format 1 - srcBegin = 5AC1 - srcEnd = 5AC4 - mappingOffset = 0550 - Mapping = - 4A2A 6179 FFFD 6A31 -End of Item 022B - -Begin of Item 022C - Format 1 - srcBegin = 5AC9 - srcEnd = 5ACC - mappingOffset = 0554 - Mapping = - 726C FFFD FFFD 7A6E -End of Item 022C - -Begin of Item 022D - Format 2 - srcBegin = 5AE1 - destBegin = 6E55 -End of Item 022D - -Begin of Item 022E - Format 1 - srcBegin = 5AE6 - srcEnd = 5AE9 - mappingOffset = 0558 - Mapping = - 7974 FFFD FFFD 526C -End of Item 022E - -Begin of Item 022F - Format 2 - srcBegin = 5B05 - destBegin = 7B7B -End of Item 022F - -Begin of Item 0230 - Format 1 - srcBegin = 5B09 - srcEnd = 5B0C - mappingOffset = 055C - Mapping = - 7D70 FFFD 603D 4E63 -End of Item 0230 - -Begin of Item 0231 - Format 2 - srcBegin = 5B16 - destBegin = 7846 -End of Item 0231 - -Begin of Item 0232 - Format 2 - srcBegin = 5B2A - destBegin = 5E2E -End of Item 0232 - -Begin of Item 0233 - Format 1 - srcBegin = 5B40 - srcEnd = 5B43 - mappingOffset = 0560 - Mapping = - 5F45 FFFD FFFD 653E -End of Item 0233 - -Begin of Item 0234 - Format 1 - srcBegin = 5B50 - srcEnd = 5B5F - mappingOffset = 0564 - Mapping = - 6D2D 7A6A FFFD FFFD 4D6E 6D26 FFFD 6D2E - 706D FFFD 5D21 FFFD 6D2F 7C78 FFFD 586B -End of Item 0234 - -Begin of Item 0235 - Format 1 - srcBegin = 5B63 - srcEnd = 5B64 - mappingOffset = 0574 - Mapping = - 4C79 4D35 -End of Item 0235 - -Begin of Item 0236 - Format 1 - srcBegin = 5B69 - srcEnd = 5B6B - mappingOffset = 0576 - Mapping = - 7A29 FFFD 615D -End of Item 0236 - -Begin of Item 0237 - Format 1 - srcBegin = 5B70 - srcEnd = 5B71 - mappingOffset = 0579 - Mapping = - 6255 6D4F -End of Item 0237 - -Begin of Item 0238 - Format 1 - srcBegin = 5B75 - srcEnd = 5B7C - mappingOffset = 057B - Mapping = - 5D22 FFFD FFFD 794A FFFD 6A68 FFFD 656D -End of Item 0238 - -Begin of Item 0239 - Format 1 - srcBegin = 5B85 - srcEnd = 5B8F - mappingOffset = 0583 - Mapping = - 536B FFFD 6954 617A 644C FFFD 6164 6847 - FFFD FFFD 4E5B -End of Item 0239 - -Begin of Item 023A - Format 1 - srcBegin = 5B93 - srcEnd = 5B9C - mappingOffset = 058E - Mapping = - 5C55 FFFD 7735 7C73 7073 4E2F 7135 6F52 - 6848 6B71 -End of Item 023A - -Begin of Item 023B - Format 1 - srcBegin = 5BA2 - srcEnd = 5BA6 - mappingOffset = 0598 - Mapping = - 4B54 603E 6378 6A69 7C32 -End of Item 023B - -Begin of Item 023C - Format 1 - srcBegin = 5BAC - srcEnd = 5BB9 - mappingOffset = 059D - Mapping = - 6074 FFFD 4F60 FFFD 6E25 FFFD FFFD 7A2A - 6643 6132 4A2B FFFD 6364 693B -End of Item 023C - -Begin of Item 023D - Format 1 - srcBegin = 5BBF - srcEnd = 5BC7 - mappingOffset = 05AB - Mapping = - 6256 7372 FFFD 6E56 6A32 5076 6C59 5A4B - 4F28 -End of Item 023D - -Begin of Item 023E - Format 2 - srcBegin = 5BCC - destBegin = 5D23 -End of Item 023E - -Begin of Item 023F - Format 1 - srcBegin = 5BD0 - srcEnd = 5BD7 - mappingOffset = 05B4 - Mapping = - 585B FFFD 794E 6955 6351 FFFD FFFD 523C -End of Item 023F - -Begin of Item 0240 - Format 1 - srcBegin = 5BDE - srcEnd = 5BEF - mappingOffset = 05BC - Mapping = - 582C 734C FFFD 4D7B 7656 FFFD 6775 686F - 6379 523B 7373 637B FFFD 5E50 4E30 FFFD - 5677 7159 -End of Item 0240 - -Begin of Item 0241 - Format 1 - srcBegin = 5BF5 - srcEnd = 5BFA - mappingOffset = 05CE - Mapping = - 7541 5C44 FFFD 753B FFFD 5E51 -End of Item 0241 - -Begin of Item 0242 - Format 1 - srcBegin = 5C01 - srcEnd = 5C11 - mappingOffset = 05D4 - Mapping = - 5C66 FFFD FFFD 5E52 FFFD FFFD 6D62 6E76 - 6A4F 706E 637C FFFD 535F 5374 6133 FFFD - 6134 -End of Item 0242 - -Begin of Item 0243 - Format 1 - srcBegin = 5C16 - srcEnd = 5C19 - mappingOffset = 05E5 - Mapping = - 7453 FFFD FFFD 5F46 -End of Item 0243 - -Begin of Item 0244 - Format 2 - srcBegin = 5C24 - destBegin = 6956 -End of Item 0244 - -Begin of Item 0245 - Format 2 - srcBegin = 5C28 - destBegin = 5B2B -End of Item 0245 - -Begin of Item 0246 - Format 2 - srcBegin = 5C31 - destBegin = 7626 -End of Item 0246 - -Begin of Item 0247 - Format 1 - srcBegin = 5C38 - srcEnd = 5C40 - mappingOffset = 05E9 - Mapping = - 6339 6B45 7429 4D36 5279 FFFD 5A2D 5263 - 4F51 -End of Item 0247 - -Begin of Item 0248 - Format 1 - srcBegin = 5C45 - srcEnd = 5C51 - mappingOffset = 05F2 - Mapping = - 4B5C 4C7A FFFD 4F5D FFFD FFFD 6829 FFFD - 633B 633A FFFD FFFD 605A -End of Item 0248 - -Begin of Item 0249 - Format 2 - srcBegin = 5C55 - destBegin = 6E77 -End of Item 0249 - -Begin of Item 024A - Format 2 - srcBegin = 5C5B - destBegin = 5C33 -End of Item 024A - -Begin of Item 024B - Format 1 - srcBegin = 5C60 - srcEnd = 5C65 - mappingOffset = 05FF - Mapping = - 5375 FFFD 5726 FFFD 7635 575B -End of Item 024B - -Begin of Item 024C - Format 1 - srcBegin = 5C6C - srcEnd = 5C71 - mappingOffset = 0605 - Mapping = - 6155 FFFD FFFD 546A FFFD 5F23 -End of Item 024C - -Begin of Item 024D - Format 2 - srcBegin = 5C79 - destBegin = 7D5F -End of Item 024D - -Begin of Item 024E - Format 1 - srcBegin = 5C90 - srcEnd = 5C91 - mappingOffset = 060B - Mapping = - 5077 6D54 -End of Item 024E - -Begin of Item 024F - Format 2 - srcBegin = 5CA1 - destBegin = 4B2A -End of Item 024F - -Begin of Item 0250 - Format 1 - srcBegin = 5CA9 - srcEnd = 5CAC - mappingOffset = 060D - Mapping = - 645B FFFD 617B 4B22 -End of Item 0250 - -Begin of Item 0251 - Format 1 - srcBegin = 5CB1 - srcEnd = 5CBA - mappingOffset = 0611 - Mapping = - 5360 FFFD 643F FFFD 7B40 FFFD 5A3E 644D - FFFD 5639 -End of Item 0251 - -Begin of Item 0252 - Format 1 - srcBegin = 5CBE - srcEnd = 5CC0 - mappingOffset = 061B - Mapping = - 6F40 FFFD 617C -End of Item 0252 - -Begin of Item 0253 - Format 2 - srcBegin = 5CD9 - destBegin = 7639 -End of Item 0253 - -Begin of Item 0254 - Format 2 - srcBegin = 5CE0 - destBegin = 5F47 -End of Item 0254 - -Begin of Item 0255 - Format 2 - srcBegin = 5CE8 - destBegin = 6431 -End of Item 0255 - -Begin of Item 0256 - Format 1 - srcBegin = 5CEF - srcEnd = 5CF0 - mappingOffset = 061E - Mapping = - 5C67 5C68 -End of Item 0256 - -Begin of Item 0257 - Format 1 - srcBegin = 5CF4 - srcEnd = 5CF6 - mappingOffset = 0620 - Mapping = - 7A56 FFFD 5376 -End of Item 0257 - -Begin of Item 0258 - Format 1 - srcBegin = 5CFB - srcEnd = 5CFD - mappingOffset = 0623 - Mapping = - 715A FFFD 7A72 -End of Item 0258 - -Begin of Item 0259 - Format 2 - srcBegin = 5D07 - destBegin = 627D -End of Item 0259 - -Begin of Item 025A - Format 1 - srcBegin = 5D0D - srcEnd = 5D19 - mappingOffset = 0626 - Mapping = - 554F 5078 FFFD FFFD 4D5F FFFD FFFD 754B - FFFD 6470 4B2B FFFD 5744 -End of Item 025A - -Begin of Item 025B - Format 1 - srcBegin = 5D27 - srcEnd = 5D29 - mappingOffset = 0633 - Mapping = - 627E FFFD 5D5A -End of Item 025B - -Begin of Item 025C - Format 1 - srcBegin = 5D4B - srcEnd = 5D4C - mappingOffset = 0636 - Mapping = - 5A2E 4A6E -End of Item 025C - -Begin of Item 025D - Format 2 - srcBegin = 5D50 - destBegin = 5539 -End of Item 025D - -Begin of Item 025E - Format 1 - srcBegin = 5D69 - srcEnd = 5D6F - mappingOffset = 0638 - Mapping = - 6321 FFFD FFFD 6863 FFFD FFFD 732B -End of Item 025E - -Begin of Item 025F - Format 2 - srcBegin = 5D87 - destBegin = 4F29 -End of Item 025F - -Begin of Item 0260 - Format 2 - srcBegin = 5D8B - destBegin = 5377 -End of Item 0260 - -Begin of Item 0261 - Format 1 - srcBegin = 5D9D - srcEnd = 5DA2 - mappingOffset = 063F - Mapping = - 5471 FFFD FFFD 4E64 FFFD 6872 -End of Item 0261 - -Begin of Item 0262 - Format 2 - srcBegin = 5DAA - destBegin = 6575 -End of Item 0262 - -Begin of Item 0263 - Format 1 - srcBegin = 5DB8 - srcEnd = 5DBD - mappingOffset = 0645 - Mapping = - 672E FFFD 563A FFFD 5F6C 6440 -End of Item 0263 - -Begin of Item 0264 - Format 2 - srcBegin = 5DCD - destBegin = 6864 -End of Item 0264 - -Begin of Item 0265 - Format 2 - srcBegin = 5DD2 - destBegin = 5835 -End of Item 0265 - -Begin of Item 0266 - Format 2 - srcBegin = 5DD6 - destBegin = 645C -End of Item 0266 - -Begin of Item 0267 - Format 1 - srcBegin = 5DDD - srcEnd = 5DF7 - mappingOffset = 064B - Mapping = - 7439 7136 FFFD FFFD 625E 6135 FFFD FFFD - 4D6F 7127 4E65 4B5D FFFD FFFD 5963 FFFD - FFFD 732C FFFD FFFD 5079 6C2B 5E53 7769 - FFFD FFFD 7975 -End of Item 0267 - -Begin of Item 0268 - Format 1 - srcBegin = 5DFD - srcEnd = 5DFE - mappingOffset = 0666 - Mapping = - 615E 4B6E -End of Item 0268 - -Begin of Item 0269 - Format 1 - srcBegin = 5E02 - srcEnd = 5E06 - mappingOffset = 0668 - Mapping = - 633C 7856 FFFD FFFD 5B6E -End of Item 0269 - -Begin of Item 026A - Format 2 - srcBegin = 5E0C - destBegin = 7D71 -End of Item 026A - -Begin of Item 026B - Format 2 - srcBegin = 5E11 - destBegin = 7736 -End of Item 026B - -Begin of Item 026C - Format 1 - srcBegin = 5E16 - srcEnd = 5E1D - mappingOffset = 066D - Mapping = - 745E FFFD FFFD 726D FFFD 5B59 FFFD 7028 -End of Item 026C - -Begin of Item 026D - Format 2 - srcBegin = 5E25 - destBegin = 617D -End of Item 026D - -Begin of Item 026E - Format 1 - srcBegin = 5E2B - srcEnd = 5E2D - mappingOffset = 0675 - Mapping = - 5E54 FFFD 602C -End of Item 026E - -Begin of Item 026F - Format 1 - srcBegin = 5E33 - srcEnd = 5E38 - mappingOffset = 0678 - Mapping = - 6D63 FFFD FFFD 5361 FFFD 5F48 -End of Item 026F - -Begin of Item 0270 - Format 1 - srcBegin = 5E3D - srcEnd = 5E40 - mappingOffset = 067E - Mapping = - 5936 FFFD 7D2C 6F53 -End of Item 0270 - -Begin of Item 0271 - Format 1 - srcBegin = 5E44 - srcEnd = 5E47 - mappingOffset = 0682 - Mapping = - 6441 786B FFFD 5B2C -End of Item 0271 - -Begin of Item 0272 - Format 2 - srcBegin = 5E4C - destBegin = 7C46 -End of Item 0272 - -Begin of Item 0273 - Format 2 - srcBegin = 5E55 - destBegin = 582D -End of Item 0273 - -Begin of Item 0274 - Format 1 - srcBegin = 5E5F - srcEnd = 5E63 - mappingOffset = 0686 - Mapping = - 763A FFFD 5B5F 5353 7847 -End of Item 0274 - -Begin of Item 0275 - Format 1 - srcBegin = 5E72 - srcEnd = 5E7E - mappingOffset = 068B - Mapping = - 4A4E 7841 5234 FFFD FFFD 5C34 7A39 4A4F - FFFD 7C33 6A6A 6A6B 507A -End of Item 0275 - -Begin of Item 0276 - Format 1 - srcBegin = 5E84 - srcEnd = 5E8A - mappingOffset = 0698 - Mapping = - 6D64 FFFD FFFD 5D67 FFFD FFFD 5F49 -End of Item 0276 - -Begin of Item 0277 - Format 2 - srcBegin = 5E8F - destBegin = 5F6D -End of Item 0277 - -Begin of Item 0278 - Format 1 - srcBegin = 5E95 - srcEnd = 5E9C - mappingOffset = 069F - Mapping = - 6E3C FFFD 6F41 FFFD FFFD 4C52 FFFD 5D24 -End of Item 0278 - -Begin of Item 0279 - Format 2 - srcBegin = 5EA0 - destBegin = 5F4A -End of Item 0279 - -Begin of Item 027A - Format 1 - srcBegin = 5EA6 - srcEnd = 5EA7 - mappingOffset = 06A7 - Mapping = - 5378 7128 -End of Item 027A - -Begin of Item 027B - Format 1 - srcBegin = 5EAB - srcEnd = 5EAD - mappingOffset = 06A9 - Mapping = - 4D37 FFFD 6F54 -End of Item 027B - -Begin of Item 027C - Format 1 - srcBegin = 5EB5 - srcEnd = 5EB8 - mappingOffset = 06AC - Mapping = - 645D 5F6E 4B2C 693C -End of Item 027C - -Begin of Item 027D - Format 2 - srcBegin = 5EBE - destBegin = 6A6C -End of Item 027D - -Begin of Item 027E - Format 2 - srcBegin = 5EC2 - destBegin = 5F4B -End of Item 027E - -Begin of Item 027F - Format 1 - srcBegin = 5EC8 - srcEnd = 5ECA - mappingOffset = 06B0 - Mapping = - 793F 562F 5546 -End of Item 027F - -Begin of Item 0280 - Format 1 - srcBegin = 5ED0 - srcEnd = 5ED6 - mappingOffset = 06B3 - Mapping = - 4F2A FFFD FFFD 4E29 FFFD FFFD 5678 -End of Item 0280 - -Begin of Item 0281 - Format 1 - srcBegin = 5EDA - srcEnd = 5EDB - mappingOffset = 06BA - Mapping = - 7137 6E78 -End of Item 0281 - -Begin of Item 0282 - Format 1 - srcBegin = 5EDF - srcEnd = 5EE3 - mappingOffset = 06BC - Mapping = - 5959 735F FFFD 7848 4E46 -End of Item 0282 - -Begin of Item 0283 - Format 2 - srcBegin = 5EEC - destBegin = 5566 -End of Item 0283 - -Begin of Item 0284 - Format 1 - srcBegin = 5EF3 - srcEnd = 5EFB - mappingOffset = 06C1 - Mapping = - 7466 FFFD FFFD 6645 6F55 FFFD FFFD 4B6F - 7C5F -End of Item 0284 - -Begin of Item 0285 - Format 1 - srcBegin = 5F01 - srcEnd = 5F04 - mappingOffset = 06CA - Mapping = - 5C27 FFFD FFFD 5667 -End of Item 0285 - -Begin of Item 0286 - Format 2 - srcBegin = 5F0A - destBegin = 7849 -End of Item 0286 - -Begin of Item 0287 - Format 1 - srcBegin = 5F0F - srcEnd = 5F1B - mappingOffset = 06CE - Mapping = - 6352 FFFD 633D FFFD 4F61 7040 6C5A FFFD - 5D57 7B70 FFFD FFFD 6C2C -End of Item 0287 - -Begin of Item 0288 - Format 2 - srcBegin = 5F1F - destBegin = 7029 -End of Item 0288 - -Begin of Item 0289 - Format 1 - srcBegin = 5F26 - srcEnd = 5F29 - mappingOffset = 06DB - Mapping = - 7A57 7B41 FFFD 5240 -End of Item 0289 - -Begin of Item 028A - Format 2 - srcBegin = 5F31 - destBegin = 6530 -End of Item 028A - -Begin of Item 028B - Format 2 - srcBegin = 5F35 - destBegin = 6D65 -End of Item 028B - -Begin of Item 028C - Format 1 - srcBegin = 5F3A - srcEnd = 5F3C - mappingOffset = 06DF - Mapping = - 4B2D FFFD 7930 -End of Item 028C - -Begin of Item 028D - Format 1 - srcBegin = 5F48 - srcEnd = 5F4E - mappingOffset = 06E2 - Mapping = - 7725 FFFD 4B2E FFFD 5A2F FFFD 5836 -End of Item 028D - -Begin of Item 028E - Format 1 - srcBegin = 5F56 - srcEnd = 5F5B - mappingOffset = 06E9 - Mapping = - 5327 7B32 FFFD 7D44 FFFD 6C2D -End of Item 028E - -Begin of Item 028F - Format 2 - srcBegin = 5F62 - destBegin = 7B21 -End of Item 028F - -Begin of Item 0290 - Format 1 - srcBegin = 5F66 - srcEnd = 5F71 - mappingOffset = 06EF - Mapping = - 6569 696E FFFD 7374 7873 7041 5E2F 7830 - FFFD FFFD 7360 672F -End of Item 0290 - -Begin of Item 0291 - Format 1 - srcBegin = 5F77 - srcEnd = 5F81 - mappingOffset = 06FB - Mapping = - 5B2D FFFD 6635 FFFD FFFD 7928 FFFD FFFD - 5D58 6859 6F56 -End of Item 0291 - -Begin of Item 0292 - Format 1 - srcBegin = 5F85 - srcEnd = 5F8C - mappingOffset = 0706 - Mapping = - 5362 FFFD 625F FFFD FFFD 7C60 5748 7D2D -End of Item 0292 - -Begin of Item 0293 - Format 1 - srcBegin = 5F90 - srcEnd = 5F92 - mappingOffset = 070E - Mapping = - 5F6F 4C53 5379 -End of Item 0293 - -Begin of Item 0294 - Format 1 - srcBegin = 5F97 - srcEnd = 5F99 - mappingOffset = 0711 - Mapping = - 5470 5B47 5E55 -End of Item 0294 - -Begin of Item 0295 - Format 1 - srcBegin = 5F9E - srcEnd = 5FA1 - mappingOffset = 0714 - Mapping = - 7074 FFFD 5550 6559 -End of Item 0295 - -Begin of Item 0296 - Format 1 - srcBegin = 5FA8 - srcEnd = 5FAA - mappingOffset = 0718 - Mapping = - 7C47 5C56 6260 -End of Item 0296 - -Begin of Item 0297 - Format 2 - srcBegin = 5FAE - destBegin = 5A30 -End of Item 0297 - -Begin of Item 0298 - Format 1 - srcBegin = 5FB5 - srcEnd = 5FB9 - mappingOffset = 071B - Mapping = - 7323 FFFD 536C FFFD 744B -End of Item 0298 - -Begin of Item 0299 - Format 2 - srcBegin = 5FBD - destBegin = 7D45 -End of Item 0299 - -Begin of Item 029A - Format 1 - srcBegin = 5FC3 - srcEnd = 5FC5 - mappingOffset = 0720 - Mapping = - 637D FFFD 7931 -End of Item 029A - -Begin of Item 029B - Format 1 - srcBegin = 5FCC - srcEnd = 5FCD - mappingOffset = 0723 - Mapping = - 507B 6C5B -End of Item 029B - -Begin of Item 029C - Format 1 - srcBegin = 5FD6 - srcEnd = 5FD9 - mappingOffset = 0725 - Mapping = - 753C 7224 584E 584F -End of Item 029C - -Begin of Item 029D - Format 2 - srcBegin = 5FE0 - destBegin = 7577 -End of Item 029D - -Begin of Item 029E - Format 2 - srcBegin = 5FEB - destBegin = 7661 -End of Item 029E - -Begin of Item 029F - Format 2 - srcBegin = 5FF5 - destBegin = 5237 -End of Item 029F - -Begin of Item 02A0 - Format 1 - srcBegin = 5FFD - srcEnd = 5FFF - mappingOffset = 0729 - Mapping = - 7B6C FFFD 5D48 -End of Item 02A0 - -Begin of Item 02A1 - Format 1 - srcBegin = 600F - srcEnd = 6012 - mappingOffset = 072C - Mapping = - 6468 FFFD FFFD 5241 -End of Item 02A1 - -Begin of Item 02A2 - Format 2 - srcBegin = 6016 - destBegin = 7857 -End of Item 02A2 - -Begin of Item 02A3 - Format 1 - srcBegin = 601C - srcEnd = 6021 - mappingOffset = 0730 - Mapping = - 563B 5E56 FFFD FFFD 773D 6C2E -End of Item 02A3 - -Begin of Item 02A4 - Format 1 - srcBegin = 6025 - srcEnd = 602A - mappingOffset = 0736 - Mapping = - 5061 FFFD 6075 6A33 FFFD 4E56 -End of Item 02A4 - -Begin of Item 02A5 - Format 2 - srcBegin = 602F - destBegin = 4C25 -End of Item 02A5 - -Begin of Item 02A6 - Format 1 - srcBegin = 6041 - srcEnd = 6043 - mappingOffset = 073C - Mapping = - 6C76 6261 633E -End of Item 02A6 - -Begin of Item 02A7 - Format 1 - srcBegin = 604D - srcEnd = 6055 - mappingOffset = 073F - Mapping = - 7C48 FFFD FFFD 4D70 FFFD 7976 FFFD FFFD - 5F70 -End of Item 02A7 - -Begin of Item 02A8 - Format 2 - srcBegin = 6059 - destBegin = 653F -End of Item 02A8 - -Begin of Item 02A9 - Format 2 - srcBegin = 605D - destBegin = 4E3F -End of Item 02A9 - -Begin of Item 02AA - Format 1 - srcBegin = 6062 - srcEnd = 6070 - mappingOffset = 0748 - Mapping = - 7C61 6D30 7D51 763B FFFD FFFD 794F 6B5A - 4A41 FFFD 5238 4D71 FFFD 6353 7D66 -End of Item 02AA - -Begin of Item 02AB - Format 2 - srcBegin = 6085 - destBegin = 666D -End of Item 02AB - -Begin of Item 02AC - Format 1 - srcBegin = 6089 - srcEnd = 608D - mappingOffset = 0757 - Mapping = - 637A FFFD FFFD 702A 7950 -End of Item 02AC - -Begin of Item 02AD - Format 1 - srcBegin = 6094 - srcEnd = 6096 - mappingOffset = 075C - Mapping = - 7C62 FFFD 7827 -End of Item 02AD - -Begin of Item 02AE - Format 1 - srcBegin = 609A - srcEnd = 609B - mappingOffset = 075F - Mapping = - 6165 6E79 -End of Item 02AE - -Begin of Item 02AF - Format 1 - srcBegin = 609F - srcEnd = 60A7 - mappingOffset = 0761 - Mapping = - 6776 6A6D FFFD FFFD 7C34 7542 FFFD FFFD - 575C -End of Item 02AF - -Begin of Item 02B0 - Format 1 - srcBegin = 60B0 - srcEnd = 60B8 - mappingOffset = 076A - Mapping = - 7075 FFFD 5D68 536D 757C FFFD 5A3F FFFD - 4C7B -End of Item 02B0 - -Begin of Item 02B1 - Format 1 - srcBegin = 60BC - srcEnd = 60BD - mappingOffset = 0773 - Mapping = - 537A 7424 -End of Item 02B1 - -Begin of Item 02B2 - Format 1 - srcBegin = 60C5 - srcEnd = 60C7 - mappingOffset = 0775 - Mapping = - 6F57 FFFD 5443 -End of Item 02B2 - -Begin of Item 02B3 - Format 2 - srcBegin = 60D1 - destBegin = 7B63 -End of Item 02B3 - -Begin of Item 02B4 - Format 1 - srcBegin = 60DA - srcEnd = 60E1 - mappingOffset = 0778 - Mapping = - 7B6D FFFD 602D FFFD FFFD 6A6E 7B33 6442 -End of Item 02B4 - -Begin of Item 02B5 - Format 1 - srcBegin = 60F0 - srcEnd = 60FB - mappingOffset = 0780 - Mapping = - 7667 525D FFFD 5F4C FFFD FFFD 7C49 FFFD - FFFD 6529 6076 7633 -End of Item 02B5 - -Begin of Item 02B6 - Format 2 - srcBegin = 6101 - destBegin = 617E -End of Item 02B6 - -Begin of Item 02B7 - Format 1 - srcBegin = 6106 - srcEnd = 6109 - mappingOffset = 078C - Mapping = - 4B70 FFFD 6A6F 6A70 -End of Item 02B7 - -Begin of Item 02B8 - Format 1 - srcBegin = 610D - srcEnd = 610F - mappingOffset = 0790 - Mapping = - 5A40 7834 6B72 -End of Item 02B8 - -Begin of Item 02B9 - Format 2 - srcBegin = 6115 - destBegin = 6443 -End of Item 02B9 - -Begin of Item 02BA - Format 1 - srcBegin = 611A - srcEnd = 611B - mappingOffset = 0793 - Mapping = - 6957 6471 -End of Item 02BA - -Begin of Item 02BB - Format 2 - srcBegin = 611F - destBegin = 4A6F -End of Item 02BB - -Begin of Item 02BC - Format 2 - srcBegin = 6127 - destBegin = 4E57 -End of Item 02BC - -Begin of Item 02BD - Format 2 - srcBegin = 6130 - destBegin = 7C4A -End of Item 02BD - -Begin of Item 02BE - Format 1 - srcBegin = 6134 - srcEnd = 6137 - mappingOffset = 0795 - Mapping = - 7361 FFFD FFFD 4B44 -End of Item 02BE - -Begin of Item 02BF - Format 1 - srcBegin = 613C - srcEnd = 614C - mappingOffset = 0799 - Mapping = - 6365 FFFD 4B45 6A34 FFFD FFFD 693D FFFD - 5749 FFFD FFFD 6B5B 6D31 FFFD 4C43 773E - 7C4B -End of Item 02BF - -Begin of Item 02C0 - Format 1 - srcBegin = 6153 - srcEnd = 6159 - mappingOffset = 07AA - Mapping = - 7874 FFFD 5937 FFFD FFFD 7353 7354 -End of Item 02C0 - -Begin of Item 02C1 - Format 1 - srcBegin = 615D - srcEnd = 6170 - mappingOffset = 07B1 - Mapping = - 7764 FFFD 7751 FFFD FFFD 5837 4E31 4A42 - FFFD FFFD 7B34 4B46 FFFD FFFD 7076 FFFD - FFFD 5567 FFFD 6A50 -End of Item 02C1 - -Begin of Item 02C2 - Format 1 - srcBegin = 6176 - srcEnd = 6177 - mappingOffset = 07C5 - Mapping = - 4C54 4B2F -End of Item 02C2 - -Begin of Item 02C3 - Format 1 - srcBegin = 617D - srcEnd = 6182 - mappingOffset = 07C7 - Mapping = - 742A 692F FFFD FFFD 7543 6958 -End of Item 02C3 - -Begin of Item 02C4 - Format 2 - srcBegin = 618A - destBegin = 5D69 -End of Item 02C4 - -Begin of Item 02C5 - Format 1 - srcBegin = 618E - srcEnd = 6194 - mappingOffset = 07CD - Mapping = - 7173 FFFD 557B 5E3B FFFD FFFD 747B -End of Item 02C5 - -Begin of Item 02C6 - Format 1 - srcBegin = 6198 - srcEnd = 619A - mappingOffset = 07D4 - Mapping = - 7D73 7D72 7726 -End of Item 02C6 - -Begin of Item 02C7 - Format 1 - srcBegin = 61A4 - srcEnd = 61AE - mappingOffset = 07D7 - Mapping = - 5D49 FFFD FFFD 5453 FFFD 4C28 FFFD 5A41 - 4C55 FFFD 5964 -End of Item 02C7 - -Begin of Item 02C8 - Format 2 - srcBegin = 61B2 - destBegin = 7A4A -End of Item 02C8 - -Begin of Item 02C9 - Format 2 - srcBegin = 61B6 - destBegin = 6563 -End of Item 02C9 - -Begin of Item 02CA - Format 2 - srcBegin = 61BA - destBegin = 533C -End of Item 02CA - -Begin of Item 02CB - Format 2 - srcBegin = 61BE - destBegin = 4A70 -End of Item 02CB - -Begin of Item 02CC - Format 2 - srcBegin = 61C3 - destBegin = 5044 -End of Item 02CC - -Begin of Item 02CD - Format 1 - srcBegin = 61C7 - srcEnd = 61CB - mappingOffset = 07E2 - Mapping = - 4A50 7A2B 6B6B 6778 5965 -End of Item 02CD - -Begin of Item 02CE - Format 2 - srcBegin = 61E6 - destBegin = 5157 -End of Item 02CE - -Begin of Item 02CF - Format 2 - srcBegin = 61F2 - destBegin = 7324 -End of Item 02CF - -Begin of Item 02D0 - Format 1 - srcBegin = 61F6 - srcEnd = 6200 - mappingOffset = 07E7 - Mapping = - 547B 7C63 7A58 FFFD 7355 FFFD 4F2B FFFD - FFFD 6B73 557C -End of Item 02D0 - -Begin of Item 02D1 - Format 1 - srcBegin = 6207 - srcEnd = 6212 - mappingOffset = 07F2 - Mapping = - 5354 4D7C FFFD 5966 FFFD 6279 6221 6B54 - FFFD 6077 6432 4C7C -End of Item 02D1 - -Begin of Item 02D2 - Format 2 - srcBegin = 6216 - destBegin = 7B64 -End of Item 02D2 - -Begin of Item 02D3 - Format 2 - srcBegin = 621A - destBegin = 742B -End of Item 02D3 - -Begin of Item 02D4 - Format 1 - srcBegin = 621F - srcEnd = 6221 - mappingOffset = 07FE - Mapping = - 503D FFFD 4A71 -End of Item 02D4 - -Begin of Item 02D5 - Format 2 - srcBegin = 622A - destBegin = 6F38 -End of Item 02D5 - -Begin of Item 02D6 - Format 1 - srcBegin = 622E - srcEnd = 6236 - mappingOffset = 0801 - Mapping = - 5740 FFFD 6E7A 7D74 FFFD FFFD 5363 FFFD - 7B42 -End of Item 02D6 - -Begin of Item 02D7 - Format 1 - srcBegin = 623E - srcEnd = 6241 - mappingOffset = 080A - Mapping = - 5568 5B2E 6136 7837 -End of Item 02D7 - -Begin of Item 02D8 - Format 1 - srcBegin = 6247 - srcEnd = 624D - mappingOffset = 080E - Mapping = - 603F 7B43 5D6A FFFD 6222 FFFD 6E26 -End of Item 02D8 - -Begin of Item 02D9 - Format 2 - srcBegin = 6253 - destBegin = 7668 -End of Item 02D9 - -Begin of Item 02DA - Format 2 - srcBegin = 6258 - destBegin = 7675 -End of Item 02DA - -Begin of Item 02DB - Format 1 - srcBegin = 626E - srcEnd = 6271 - mappingOffset = 0815 - Mapping = - 5D4A FFFD FFFD 5062 -End of Item 02DB - -Begin of Item 02DC - Format 1 - srcBegin = 6276 - srcEnd = 6280 - mappingOffset = 0819 - Mapping = - 5D26 FFFD FFFD 5D6B FFFD FFFD 6479 FFFD - FFFD 632F 507C -End of Item 02DC - -Begin of Item 02DD - Format 2 - srcBegin = 6284 - destBegin = 747C -End of Item 02DD - -Begin of Item 02DE - Format 1 - srcBegin = 6289 - srcEnd = 628A - mappingOffset = 0824 - Mapping = - 4C3C 776A -End of Item 02DE - -Begin of Item 02DF - Format 1 - srcBegin = 6291 - srcEnd = 629B - mappingOffset = 0826 - Mapping = - 6564 5F71 FFFD FFFD 7761 FFFD 7977 6F39 - FFFD FFFD 7858 -End of Item 02DF - -Begin of Item 02E0 - Format 2 - srcBegin = 62AB - destBegin = 7929 -End of Item 02E0 - -Begin of Item 02E1 - Format 2 - srcBegin = 62B1 - destBegin = 7859 -End of Item 02E1 - -Begin of Item 02E2 - Format 2 - srcBegin = 62B5 - destBegin = 6E3D -End of Item 02E2 - -Begin of Item 02E3 - Format 1 - srcBegin = 62B9 - srcEnd = 62BD - mappingOffset = 0831 - Mapping = - 5846 FFFD FFFD 6463 754E -End of Item 02E3 - -Begin of Item 02E4 - Format 2 - srcBegin = 62C2 - destBegin = 5D59 -End of Item 02E4 - -Begin of Item 02E5 - Format 1 - srcBegin = 62C7 - srcEnd = 62DC - mappingOffset = 0836 - Mapping = - 5967 5239 5543 FFFD FFFD 5A65 5A50 FFFD - 5159 4E58 FFFD 4B5E 742C 5A7B FFFD 7669 - 6873 4F2C 7070 FFFD 747D 5B48 -End of Item 02E5 - -Begin of Item 02E6 - Format 1 - srcBegin = 62EC - srcEnd = 62F3 - mappingOffset = 084C - Mapping = - 4E40 6354 514F 7175 FFFD 4D72 FFFD 4F6B -End of Item 02E6 - -Begin of Item 02E7 - Format 2 - srcBegin = 62F7 - destBegin = 4D38 -End of Item 02E7 - -Begin of Item 02E8 - Format 1 - srcBegin = 62FE - srcEnd = 6301 - mappingOffset = 0854 - Mapping = - 6326 515A FFFD 7225 -End of Item 02E8 - -Begin of Item 02E9 - Format 1 - srcBegin = 6307 - srcEnd = 6309 - mappingOffset = 0858 - Mapping = - 7226 FFFD 644E -End of Item 02E9 - -Begin of Item 02EA - Format 2 - srcBegin = 6311 - destBegin = 537B -End of Item 02EA - -Begin of Item 02EB - Format 2 - srcBegin = 632B - destBegin = 7129 -End of Item 02EB - -Begin of Item 02EC - Format 2 - srcBegin = 632F - destBegin = 7249 -End of Item 02EC - -Begin of Item 02ED - Format 1 - srcBegin = 633A - srcEnd = 633E - mappingOffset = 085B - Mapping = - 6F58 6649 FFFD 5838 7A73 -End of Item 02ED - -Begin of Item 02EE - Format 1 - srcBegin = 6349 - srcEnd = 6350 - mappingOffset = 0860 - Mapping = - 7335 FFFD FFFD 7824 FFFD FFFD 5173 6648 -End of Item 02EE - -Begin of Item 02EF - Format 2 - srcBegin = 6355 - destBegin = 785A -End of Item 02EF - -Begin of Item 02F0 - Format 1 - srcBegin = 6367 - srcEnd = 6368 - mappingOffset = 0868 - Mapping = - 5C69 5E57 -End of Item 02F0 - -Begin of Item 02F1 - Format 2 - srcBegin = 636E - destBegin = 4B5F -End of Item 02F1 - -Begin of Item 02F2 - Format 2 - srcBegin = 6372 - destBegin = 4F6C -End of Item 02F2 - -Begin of Item 02F3 - Format 1 - srcBegin = 6377 - srcEnd = 637B - mappingOffset = 086A - Mapping = - 745F FFFD FFFD 5174 523A -End of Item 02F3 - -Begin of Item 02F4 - Format 2 - srcBegin = 637F - destBegin = 5F72 -End of Item 02F4 - -Begin of Item 02F5 - Format 2 - srcBegin = 6383 - destBegin = 6137 -End of Item 02F5 - -Begin of Item 02F6 - Format 1 - srcBegin = 6388 - srcEnd = 638C - mappingOffset = 086F - Mapping = - 6223 537C FFFD FFFD 6D66 -End of Item 02F6 - -Begin of Item 02F7 - Format 2 - srcBegin = 6392 - destBegin = 5B49 -End of Item 02F7 - -Begin of Item 02F8 - Format 1 - srcBegin = 6396 - srcEnd = 639B - mappingOffset = 0874 - Mapping = - 647A FFFD 4F5E FFFD FFFD 4E50 -End of Item 02F8 - -Begin of Item 02F9 - Format 1 - srcBegin = 63A0 - srcEnd = 63AA - mappingOffset = 087A - Mapping = - 5553 7375 772E FFFD FFFD 6F48 FFFD 4D73 - 754F 6573 7042 -End of Item 02F9 - -Begin of Item 02FA - Format 2 - srcBegin = 63C0 - destBegin = 4A51 -End of Item 02FA - -Begin of Item 02FB - Format 1 - srcBegin = 63C4 - srcEnd = 63C6 - mappingOffset = 0885 - Mapping = - 6A71 FFFD 5026 -End of Item 02FB - -Begin of Item 02FC - Format 1 - srcBegin = 63CF - srcEnd = 63D0 - mappingOffset = 0888 - Mapping = - 595A 702B -End of Item 02FC - -Begin of Item 02FD - Format 2 - srcBegin = 63D6 - destBegin = 6B67 -End of Item 02FD - -Begin of Item 02FE - Format 1 - srcBegin = 63DA - srcEnd = 63DB - mappingOffset = 088A - Mapping = - 6540 7C35 -End of Item 02FE - -Begin of Item 02FF - Format 2 - srcBegin = 63E1 - destBegin = 6444 -End of Item 02FF - -Begin of Item 0300 - Format 1 - srcBegin = 63ED - srcEnd = 63EE - mappingOffset = 088C - Mapping = - 4C29 7D46 -End of Item 0300 - -Begin of Item 0301 - Format 1 - srcBegin = 63F4 - srcEnd = 63F7 - mappingOffset = 088E - Mapping = - 6A35 FFFD 652A 5F3A -End of Item 0301 - -Begin of Item 0302 - Format 1 - srcBegin = 640D - srcEnd = 640F - mappingOffset = 0892 - Mapping = - 615F FFFD 5A51 -End of Item 0302 - -Begin of Item 0303 - Format 1 - srcBegin = 6414 - srcEnd = 6417 - mappingOffset = 0895 - Mapping = - 6138 FFFD 6874 537D -End of Item 0303 - -Begin of Item 0304 - Format 2 - srcBegin = 641C - destBegin = 6224 -End of Item 0304 - -Begin of Item 0305 - Format 2 - srcBegin = 6422 - destBegin = 724A -End of Item 0305 - -Begin of Item 0306 - Format 1 - srcBegin = 642C - srcEnd = 642D - mappingOffset = 0899 - Mapping = - 5A66 7733 -End of Item 0306 - -Begin of Item 0307 - Format 2 - srcBegin = 643A - destBegin = 7D4D -End of Item 0307 - -Begin of Item 0308 - Format 2 - srcBegin = 643E - destBegin = 7336 -End of Item 0308 - -Begin of Item 0309 - Format 2 - srcBegin = 6458 - destBegin = 6E57 -End of Item 0309 - -Begin of Item 030A - Format 2 - srcBegin = 6460 - destBegin = 7544 -End of Item 030A - -Begin of Item 030B - Format 2 - srcBegin = 6469 - destBegin = 5824 -End of Item 030B - -Begin of Item 030C - Format 2 - srcBegin = 646F - destBegin = 7227 -End of Item 030C - -Begin of Item 030D - Format 1 - srcBegin = 6478 - srcEnd = 647A - mappingOffset = 089B - Mapping = - 5938 5939 6F49 -End of Item 030D - -Begin of Item 030E - Format 2 - srcBegin = 6488 - destBegin = 564E -End of Item 030E - -Begin of Item 030F - Format 1 - srcBegin = 6491 - srcEnd = 6493 - mappingOffset = 089E - Mapping = - 774B 5F2E 6875 -End of Item 030F - -Begin of Item 0310 - Format 2 - srcBegin = 649A - destBegin = 5235 -End of Item 0310 - -Begin of Item 0311 - Format 2 - srcBegin = 649E - destBegin = 5355 -End of Item 0311 - -Begin of Item 0312 - Format 1 - srcBegin = 64A4 - srcEnd = 64A5 - mappingOffset = 08A1 - Mapping = - 744C 5A7C -End of Item 0312 - -Begin of Item 0313 - Format 1 - srcBegin = 64AB - srcEnd = 64B2 - mappingOffset = 08A3 - Mapping = - 5968 FFFD 776B 7549 FFFD 733C FFFD 5A52 -End of Item 0313 - -Begin of Item 0314 - Format 2 - srcBegin = 64BB - destBegin = 5335 -End of Item 0314 - -Begin of Item 0315 - Format 1 - srcBegin = 64C1 - srcEnd = 64CE - mappingOffset = 08AB - Mapping = - 6836 FFFD FFFD 564F 743A FFFD 7749 FFFD - FFFD 4C2A FFFD FFFD 7043 4C56 -End of Item 0315 - -Begin of Item 0316 - Format 1 - srcBegin = 64D2 - srcEnd = 64D4 - mappingOffset = 08B9 - Mapping = - 5053 FFFD 533D -End of Item 0316 - -Begin of Item 0317 - Format 1 - srcBegin = 64D8 - srcEnd = 64DA - mappingOffset = 08BC - Mapping = - 5B7B FFFD 4B60 -End of Item 0317 - -Begin of Item 0318 - Format 1 - srcBegin = 64E1 - srcEnd = 64E7 - mappingOffset = 08BF - Mapping = - 5364 7677 FFFD FFFD 553A 734D 4B61 -End of Item 0318 - -Begin of Item 0319 - Format 2 - srcBegin = 64EC - destBegin = 6B74 -End of Item 0319 - -Begin of Item 031A - Format 1 - srcBegin = 64F2 - srcEnd = 64F4 - mappingOffset = 08C6 - Mapping = - 742D FFFD 7C2A -End of Item 031A - -Begin of Item 031B - Format 2 - srcBegin = 64FA - destBegin = 776C -End of Item 031B - -Begin of Item 031C - Format 1 - srcBegin = 64FE - srcEnd = 6500 - mappingOffset = 08C9 - Mapping = - 6876 FFFD 5A67 -End of Item 031C - -Begin of Item 031D - Format 2 - srcBegin = 6504 - destBegin = 774C -End of Item 031D - -Begin of Item 031E - Format 2 - srcBegin = 6518 - destBegin = 6541 -End of Item 031E - -Begin of Item 031F - Format 2 - srcBegin = 651D - destBegin = 606E -End of Item 031F - -Begin of Item 0320 - Format 2 - srcBegin = 6523 - destBegin = 557D -End of Item 0320 - -Begin of Item 0321 - Format 1 - srcBegin = 652A - srcEnd = 652F - mappingOffset = 08CC - Mapping = - 4E66 7C2B 553B FFFD FFFD 7228 -End of Item 0321 - -Begin of Item 0322 - Format 1 - srcBegin = 6536 - srcEnd = 653F - mappingOffset = 08D2 - Mapping = - 6225 4D39 6A72 4B47 FFFD 4D74 FFFD FFFD - 5B2F 6F59 -End of Item 0322 - -Begin of Item 0323 - Format 1 - srcBegin = 6545 - srcEnd = 6548 - mappingOffset = 08DC - Mapping = - 4D3A FFFD FFFD 7C79 -End of Item 0323 - -Begin of Item 0324 - Format 1 - srcBegin = 654D - srcEnd = 6551 - mappingOffset = 08E0 - Mapping = - 5F73 4E67 5A42 FFFD 4F2D -End of Item 0324 - -Begin of Item 0325 - Format 1 - srcBegin = 6556 - srcEnd = 6557 - mappingOffset = 08E5 - Mapping = - 6779 7828 -End of Item 0325 - -Begin of Item 0326 - Format 2 - srcBegin = 655E - destBegin = 7362 -End of Item 0326 - -Begin of Item 0327 - Format 1 - srcBegin = 6562 - srcEnd = 6566 - mappingOffset = 08E7 - Mapping = - 4A72 5F24 FFFD FFFD 5444 -End of Item 0327 - -Begin of Item 0328 - Format 1 - srcBegin = 656C - srcEnd = 656D - mappingOffset = 08EC - Mapping = - 4C57 6542 -End of Item 0328 - -Begin of Item 0329 - Format 1 - srcBegin = 6572 - srcEnd = 6578 - mappingOffset = 08EE - Mapping = - 4D3B FFFD 6F5A 6E58 FFFD 5D27 6226 -End of Item 0329 - -Begin of Item 032A - Format 2 - srcBegin = 657E - destBegin = 6040 -End of Item 032A - -Begin of Item 032B - Format 1 - srcBegin = 6582 - srcEnd = 6587 - mappingOffset = 08F5 - Mapping = - 5630 784A FFFD 7C7A FFFD 597E -End of Item 032B - -Begin of Item 032C - Format 2 - srcBegin = 658C - destBegin = 5E30 -End of Item 032C - -Begin of Item 032D - Format 1 - srcBegin = 6590 - srcEnd = 6591 - mappingOffset = 08FB - Mapping = - 5D6C 5A68 -End of Item 032D - -Begin of Item 032E - Format 1 - srcBegin = 6597 - srcEnd = 65A7 - mappingOffset = 08FD - Mapping = - 5460 FFFD 5679 FFFD 4D57 5E58 FFFD FFFD - 7278 FFFD 6456 FFFD FFFD 5045 742E FFFD - 5D28 -End of Item 032E - -Begin of Item 032F - Format 1 - srcBegin = 65AB - srcEnd = 65B0 - mappingOffset = 090E - Mapping = - 6D45 7356 FFFD FFFD 5E59 6366 -End of Item 032F - -Begin of Item 0330 - Format 1 - srcBegin = 65B7 - srcEnd = 65BD - mappingOffset = 0914 - Mapping = - 5328 FFFD 5B30 FFFD FFFD 655A 633F -End of Item 0330 - -Begin of Item 0331 - Format 2 - srcBegin = 65C1 - destBegin = 5B31 -End of Item 0331 - -Begin of Item 0332 - Format 2 - srcBegin = 65C5 - destBegin = 5569 -End of Item 0332 - -Begin of Item 0333 - Format 1 - srcBegin = 65CB - srcEnd = 65D2 - mappingOffset = 091B - Mapping = - 6041 6F5B FFFD FFFD 7069 FFFD FFFD 5732 -End of Item 0333 - -Begin of Item 0334 - Format 2 - srcBegin = 65D7 - destBegin = 507D -End of Item 0334 - -Begin of Item 0335 - Format 1 - srcBegin = 65E0 - srcEnd = 65ED - mappingOffset = 0923 - Mapping = - 5969 FFFD FFFD 507E FFFD 6C6D 5329 FFFD - 7229 7044 FFFD FFFD 6262 696F -End of Item 0335 - -Begin of Item 0336 - Format 1 - srcBegin = 65F1 - srcEnd = 65F4 - mappingOffset = 0931 - Mapping = - 7951 FFFD FFFD 6959 -End of Item 0336 - -Begin of Item 0337 - Format 1 - srcBegin = 65FA - srcEnd = 65FF - mappingOffset = 0935 - Mapping = - 685A 5A43 5A44 5445 FFFD 677A -End of Item 0337 - -Begin of Item 0338 - Format 1 - srcBegin = 6606 - srcEnd = 6615 - mappingOffset = 093B - Mapping = - 4D60 6330 FFFD 5B32 7B44 FFFD 7363 FFFD - 5925 7B67 5D4B 5054 FFFD 6636 602E 7D5A -End of Item 0338 - -Begin of Item 0339 - Format 1 - srcBegin = 661E - srcEnd = 6620 - mappingOffset = 094B - Mapping = - 5C35 6078 6731 -End of Item 0339 - -Begin of Item 033A - Format 1 - srcBegin = 6625 - srcEnd = 6628 - mappingOffset = 094E - Mapping = - 7570 FFFD 585C 6D46 -End of Item 033A - -Begin of Item 033B - Format 1 - srcBegin = 662D - srcEnd = 6636 - mappingOffset = 0952 - Mapping = - 6139 FFFD 6340 7940 6970 FFFD FFFD 595B - FFFD 7364 -End of Item 033B - -Begin of Item 033C - Format 1 - srcBegin = 663A - srcEnd = 663B - mappingOffset = 095C - Mapping = - 5C36 6469 -End of Item 033C - -Begin of Item 033D - Format 1 - srcBegin = 6641 - srcEnd = 6644 - mappingOffset = 095E - Mapping = - 7045 6341 7C4C 7C4D -End of Item 033D - -Begin of Item 033E - Format 1 - srcBegin = 6649 - srcEnd = 664B - mappingOffset = 0962 - Mapping = - 724B FFFD 724C -End of Item 033E - -Begin of Item 033F - Format 2 - srcBegin = 664F - destBegin = 644F -End of Item 033F - -Begin of Item 0340 - Format 1 - srcBegin = 6659 - srcEnd = 665F - mappingOffset = 0965 - Mapping = - 715B FFFD 7A59 FFFD 7138 7D75 6079 -End of Item 0340 - -Begin of Item 0341 - Format 1 - srcBegin = 6664 - srcEnd = 666F - mappingOffset = 096C - Mapping = - 677B 7C37 7C64 7B45 6367 5839 FFFD 7678 - FFFD FFFD 5C45 4C58 -End of Item 0341 - -Begin of Item 0342 - Format 1 - srcBegin = 6673 - srcEnd = 667A - mappingOffset = 0978 - Mapping = - 602F 7467 FFFD 6F5C 4F7C 6F5D FFFD 722A -End of Item 0342 - -Begin of Item 0343 - Format 1 - srcBegin = 6684 - srcEnd = 6689 - mappingOffset = 0980 - Mapping = - 7D3E FFFD FFFD 4A2C 7D3B 7D47 -End of Item 0343 - -Begin of Item 0344 - Format 1 - srcBegin = 668E - srcEnd = 6691 - mappingOffset = 0986 - Mapping = - 6732 FFFD 6A51 5F74 -End of Item 0344 - -Begin of Item 0345 - Format 1 - srcBegin = 6696 - srcEnd = 6698 - mappingOffset = 098A - Mapping = - 516C 645E 6543 -End of Item 0345 - -Begin of Item 0346 - Format 1 - srcBegin = 669D - srcEnd = 66A2 - mappingOffset = 098D - Mapping = - 5926 FFFD FFFD 4D3C FFFD 7365 -End of Item 0346 - -Begin of Item 0347 - Format 1 - srcBegin = 66AB - srcEnd = 66AE - mappingOffset = 0993 - Mapping = - 6D55 FFFD FFFD 593A -End of Item 0347 - -Begin of Item 0348 - Format 1 - srcBegin = 66B2 - srcEnd = 66B4 - mappingOffset = 0997 - Mapping = - 6D67 7B35 786C -End of Item 0348 - -Begin of Item 0349 - Format 1 - srcBegin = 66B9 - srcEnd = 66BE - mappingOffset = 099A - Mapping = - 6067 FFFD 4C59 FFFD FFFD 5446 -End of Item 0349 - -Begin of Item 034A - Format 1 - srcBegin = 66C4 - srcEnd = 66C9 - mappingOffset = 09A0 - Mapping = - 6725 FFFD 5575 533E FFFD 7C7B -End of Item 034A - -Begin of Item 034B - Format 1 - srcBegin = 66D6 - srcEnd = 66E0 - mappingOffset = 09A6 - Mapping = - 6472 FFFD FFFD 5F75 FFFD FFFD 6878 786D - FFFD FFFD 4E47 -End of Item 034B - -Begin of Item 034C - Format 2 - srcBegin = 66E6 - destBegin = 7D76 -End of Item 034C - -Begin of Item 034D - Format 1 - srcBegin = 66F0 - srcEnd = 6703 - mappingOffset = 09B1 - Mapping = - 6858 FFFD 4D58 6756 4C5A FFFD FFFD 4A63 - 5F76 7047 7046 FFFD 583A FFFD 7174 7470 - 754C FFFD FFFD 7C65 -End of Item 034D - -Begin of Item 034E - Format 1 - srcBegin = 6708 - srcEnd = 670D - mappingOffset = 09C5 - Mapping = - 6A45 6A73 FFFD 5D5B FFFD 5C57 -End of Item 034E - -Begin of Item 034F - Format 1 - srcBegin = 6714 - srcEnd = 6717 - mappingOffset = 09CB - Mapping = - 5E7D 7279 FFFD 5547 -End of Item 034F - -Begin of Item 0350 - Format 1 - srcBegin = 671B - srcEnd = 671F - mappingOffset = 09CF - Mapping = - 5850 FFFD 7048 5121 5122 -End of Item 0350 - -Begin of Item 0351 - Format 1 - srcBegin = 6726 - srcEnd = 6736 - mappingOffset = 09D4 - Mapping = - 5954 5668 594A FFFD 5A31 5847 5C62 734E - 7574 FFFD FFFD 7139 FFFD FFFD 5A53 FFFD - 766A -End of Item 0351 - -Begin of Item 0352 - Format 1 - srcBegin = 673A - srcEnd = 673D - mappingOffset = 09E5 - Mapping = - 4F75 FFFD FFFD 7D2E -End of Item 0352 - -Begin of Item 0353 - Format 1 - srcBegin = 6746 - srcEnd = 6749 - mappingOffset = 09E9 - Mapping = - 4A52 FFFD FFFD 5F34 -End of Item 0353 - -Begin of Item 0354 - Format 1 - srcBegin = 674E - srcEnd = 6756 - mappingOffset = 09ED - Mapping = - 575D 7A3A 6E27 753D FFFD 7875 FFFD FFFD - 6D68 -End of Item 0354 - -Begin of Item 0355 - Format 1 - srcBegin = 675C - srcEnd = 675F - mappingOffset = 09F6 - Mapping = - 5461 FFFD 5123 6156 -End of Item 0355 - -Begin of Item 0356 - Format 1 - srcBegin = 676D - srcEnd = 6777 - mappingOffset = 09FA - Mapping = - 7978 FFFD 5B4A 4B79 5454 FFFD 595C FFFD - 6E3E FFFD 776D -End of Item 0356 - -Begin of Item 0357 - Format 1 - srcBegin = 677B - srcEnd = 677F - mappingOffset = 0A05 - Mapping = - 526E FFFD FFFD 6166 7779 -End of Item 0357 - -Begin of Item 0358 - Format 1 - srcBegin = 6787 - srcEnd = 678B - mappingOffset = 0A0A - Mapping = - 5D6D FFFD 685B FFFD 5B33 -End of Item 0358 - -Begin of Item 0359 - Format 1 - srcBegin = 678F - srcEnd = 679D - mappingOffset = 0A0F - Mapping = - 5177 6030 FFFD FFFD 5462 FFFD 7657 FFFD - 5779 FFFD FFFD 585D FFFD 4D7D 722B -End of Item 0359 - -Begin of Item 035A - Format 1 - srcBegin = 67AF - srcEnd = 67B8 - mappingOffset = 0A1E - Mapping = - 4D3D 7842 FFFD FFFD 722C FFFD FFFD 4A2D - 4A2E 4F2E -End of Item 035A - -Begin of Item 035B - Format 2 - srcBegin = 67BE - destBegin = 6342 -End of Item 035B - -Begin of Item 035C - Format 2 - srcBegin = 67C4 - destBegin = 5C37 -End of Item 035C - -Begin of Item 035D - Format 1 - srcBegin = 67CF - srcEnd = 67D4 - mappingOffset = 0A28 - Mapping = - 5B5A 593B 4A73 7653 6678 6A75 -End of Item 035D - -Begin of Item 035E - Format 1 - srcBegin = 67DA - srcEnd = 67DD - mappingOffset = 0A2E - Mapping = - 6A76 FFFD FFFD 7679 -End of Item 035E - -Begin of Item 035F - Format 1 - srcBegin = 67E9 - srcEnd = 67F6 - mappingOffset = 0A32 - Mapping = - 4F2F FFFD FFFD 4A53 FFFD FFFD 4A2F 5230 - 713A FFFD 5733 6343 737D 5E5A -End of Item 035F - -Begin of Item 0360 - Format 1 - srcBegin = 67FB - srcEnd = 67FE - mappingOffset = 0A40 - Mapping = - 5E5B FFFD FFFD 6F5E -End of Item 0360 - -Begin of Item 0361 - Format 1 - srcBegin = 6812 - srcEnd = 6817 - mappingOffset = 0A44 - Mapping = - 6263 6E7B FFFD FFFD 5F77 574A -End of Item 0361 - -Begin of Item 0362 - Format 1 - srcBegin = 6821 - srcEnd = 6822 - mappingOffset = 0A4A - Mapping = - 4E68 5B5B -End of Item 0362 - -Begin of Item 0363 - Format 2 - srcBegin = 682A - destBegin = 713B -End of Item 0363 - -Begin of Item 0364 - Format 2 - srcBegin = 682F - destBegin = 6971 -End of Item 0364 - -Begin of Item 0365 - Format 1 - srcBegin = 6838 - srcEnd = 6843 - mappingOffset = 0A4C - Mapping = - 7A37 5046 FFFD FFFD 4C2B 6E28 FFFD FFFD - 4B7A 7979 4C7D 537E -End of Item 0365 - -Begin of Item 0366 - Format 2 - srcBegin = 6848 - destBegin = 6450 -End of Item 0366 - -Begin of Item 0367 - Format 1 - srcBegin = 684E - srcEnd = 6854 - mappingOffset = 0A58 - Mapping = - 726E FFFD 5455 5F4D FFFD 7C38 5150 -End of Item 0367 - -Begin of Item 0368 - Format 2 - srcBegin = 686D - destBegin = 724D -End of Item 0368 - -Begin of Item 0369 - Format 2 - srcBegin = 6876 - destBegin = 7752 -End of Item 0369 - -Begin of Item 036A - Format 1 - srcBegin = 687F - srcEnd = 6881 - mappingOffset = 0A5F - Mapping = - 4A54 FFFD 5559 -End of Item 036A - -Begin of Item 036B - Format 2 - srcBegin = 6885 - destBegin = 585E -End of Item 036B - -Begin of Item 036C - Format 2 - srcBegin = 688F - destBegin = 4D59 -End of Item 036C - -Begin of Item 036D - Format 1 - srcBegin = 6893 - srcEnd = 6897 - mappingOffset = 0A62 - Mapping = - 6E29 763C FFFD FFFD 4C5B -End of Item 036D - -Begin of Item 036E - Format 1 - srcBegin = 689D - srcEnd = 68A2 - mappingOffset = 0A67 - Mapping = - 7049 FFFD 7C7C FFFD 6849 747E -End of Item 036E - -Begin of Item 036F - Format 1 - srcBegin = 68A7 - srcEnd = 68A8 - mappingOffset = 0A6D - Mapping = - 677C 575E -End of Item 036F - -Begin of Item 0370 - Format 1 - srcBegin = 68AD - srcEnd = 68B6 - mappingOffset = 0A6F - Mapping = - 5E5C FFFD 702C 4C7E 4D61 FFFD 613A FFFD - 5B6F 5A32 -End of Item 0370 - -Begin of Item 0371 - Format 1 - srcBegin = 68C4 - srcEnd = 68C5 - mappingOffset = 0A79 - Mapping = - 5125 5C38 -End of Item 0371 - -Begin of Item 0372 - Format 1 - srcBegin = 68C9 - srcEnd = 68CD - mappingOffset = 0A7B - Mapping = - 5876 FFFD 5124 FFFD 4D62 -End of Item 0372 - -Begin of Item 0373 - Format 1 - srcBegin = 68D2 - srcEnd = 68DA - mappingOffset = 0A80 - Mapping = - 5C6A FFFD FFFD 7077 FFFD 704A 503E FFFD - 5D5C -End of Item 0373 - -Begin of Item 0374 - Format 1 - srcBegin = 68DF - srcEnd = 68E0 - mappingOffset = 0A89 - Mapping = - 5456 5356 -End of Item 0374 - -Begin of Item 0375 - Format 1 - srcBegin = 68E7 - srcEnd = 68E8 - mappingOffset = 0A8B - Mapping = - 6D50 4D21 -End of Item 0375 - -Begin of Item 0376 - Format 2 - srcBegin = 68EE - destBegin = 5F35 -End of Item 0376 - -Begin of Item 0377 - Format 2 - srcBegin = 68F2 - destBegin = 5F78 -End of Item 0377 - -Begin of Item 0378 - Format 1 - srcBegin = 68F9 - srcEnd = 68FA - mappingOffset = 0A8D - Mapping = - 5421 4E32 -End of Item 0378 - -Begin of Item 0379 - Format 2 - srcBegin = 6900 - destBegin = 684A -End of Item 0379 - -Begin of Item 037A - Format 2 - srcBegin = 6905 - destBegin = 6B75 -End of Item 037A - -Begin of Item 037B - Format 1 - srcBegin = 690D - srcEnd = 690E - mappingOffset = 0A8F - Mapping = - 6355 7550 -End of Item 037B - -Begin of Item 037C - Format 2 - srcBegin = 6912 - destBegin = 7521 -End of Item 037C - -Begin of Item 037D - Format 2 - srcBegin = 6927 - destBegin = 5927 -End of Item 037D - -Begin of Item 037E - Format 2 - srcBegin = 6930 - destBegin = 652B -End of Item 037E - -Begin of Item 037F - Format 1 - srcBegin = 693D - srcEnd = 693F - mappingOffset = 0A91 - Mapping = - 664B FFFD 7571 -End of Item 037F - -Begin of Item 0380 - Format 2 - srcBegin = 694A - destBegin = 6545 -End of Item 0380 - -Begin of Item 0381 - Format 1 - srcBegin = 6953 - srcEnd = 695A - mappingOffset = 0A94 - Mapping = - 7923 605B 766B FFFD 4B71 FFFD 596A 7522 -End of Item 0381 - -Begin of Item 0382 - Format 1 - srcBegin = 695E - srcEnd = 6963 - mappingOffset = 0A9C - Mapping = - 5751 FFFD 5178 6A78 6A79 5A33 -End of Item 0382 - -Begin of Item 0383 - Format 1 - srcBegin = 6968 - srcEnd = 696F - mappingOffset = 0AA2 - Mapping = - 6F5F FFFD FFFD 716F FFFD 6576 6E3F 6264 -End of Item 0383 - -Begin of Item 0384 - Format 1 - srcBegin = 6975 - srcEnd = 6979 - mappingOffset = 0AAA - Mapping = - 503F FFFD 7A2C 7551 6733 -End of Item 0384 - -Begin of Item 0385 - Format 2 - srcBegin = 6995 - destBegin = 693E -End of Item 0385 - -Begin of Item 0386 - Format 1 - srcBegin = 699B - srcEnd = 699C - mappingOffset = 0AAF - Mapping = - 724E 5B34 -End of Item 0386 - -Begin of Item 0387 - Format 1 - srcBegin = 69A5 - srcEnd = 69A7 - mappingOffset = 0AB1 - Mapping = - 7C4E FFFD 5D6E -End of Item 0387 - -Begin of Item 0388 - Format 2 - srcBegin = 69AE - destBegin = 6734 -End of Item 0388 - -Begin of Item 0389 - Format 2 - srcBegin = 69B4 - destBegin = 5734 -End of Item 0389 - -Begin of Item 038A - Format 2 - srcBegin = 69BB - destBegin = 7734 -End of Item 038A - -Begin of Item 038B - Format 1 - srcBegin = 69C1 - srcEnd = 69C3 - mappingOffset = 0AB4 - Mapping = - 4D3E FFFD 5A69 -End of Item 038B - -Begin of Item 038C - Format 1 - srcBegin = 69CB - srcEnd = 69D0 - mappingOffset = 0AB7 - Mapping = - 4F30 7759 7366 FFFD FFFD 4E59 -End of Item 038C - -Begin of Item 038D - Format 1 - srcBegin = 69E8 - srcEnd = 69EA - mappingOffset = 0ABD - Mapping = - 4E2A FFFD 4B48 -End of Item 038D - -Begin of Item 038E - Format 1 - srcBegin = 69FB - srcEnd = 6A02 - mappingOffset = 0AC0 - Mapping = - 5027 FFFD 704B FFFD 5047 FFFD FFFD 6445 -End of Item 038E - -Begin of Item 038F - Format 2 - srcBegin = 6A0A - destBegin = 5B60 -End of Item 038F - -Begin of Item 0390 - Format 1 - srcBegin = 6A11 - srcEnd = 6A13 - mappingOffset = 0AC8 - Mapping = - 555A FFFD 5727 -End of Item 0390 - -Begin of Item 0391 - Format 1 - srcBegin = 6A17 - srcEnd = 6A19 - mappingOffset = 0ACB - Mapping = - 6E40 FFFD 7876 -End of Item 0391 - -Begin of Item 0392 - Format 1 - srcBegin = 6A1E - srcEnd = 6A23 - mappingOffset = 0ACE - Mapping = - 7552 6D69 FFFD 593C FFFD 6546 -End of Item 0392 - -Begin of Item 0393 - Format 1 - srcBegin = 6A35 - srcEnd = 6A3D - mappingOffset = 0AD4 - Mapping = - 7523 FFFD FFFD 5A54 6227 7B7C FFFD FFFD - 715C -End of Item 0393 - -Begin of Item 0394 - Format 2 - srcBegin = 6A44 - destBegin = 4A74 -End of Item 0394 - -Begin of Item 0395 - Format 1 - srcBegin = 6A48 - srcEnd = 6A4B - mappingOffset = 0ADD - Mapping = - 687A FFFD FFFD 4E69 -End of Item 0395 - -Begin of Item 0396 - Format 1 - srcBegin = 6A52 - srcEnd = 6A53 - mappingOffset = 0AE1 - Mapping = - 6978 6265 -End of Item 0396 - -Begin of Item 0397 - Format 1 - srcBegin = 6A58 - srcEnd = 6A59 - mappingOffset = 0AE3 - Mapping = - 5039 5472 -End of Item 0397 - -Begin of Item 0398 - Format 1 - srcBegin = 6A5F - srcEnd = 6A61 - mappingOffset = 0AE5 - Mapping = - 5126 FFFD 5F4E -End of Item 0398 - -Begin of Item 0399 - Format 2 - srcBegin = 6A6B - destBegin = 7C74 -End of Item 0399 - -Begin of Item 039A - Format 2 - srcBegin = 6A80 - destBegin = 532A -End of Item 039A - -Begin of Item 039B - Format 2 - srcBegin = 6A84 - destBegin = 4C2C -End of Item 039B - -Begin of Item 039C - Format 2 - srcBegin = 6A89 - destBegin = 6F60 -End of Item 039C - -Begin of Item 039D - Format 1 - srcBegin = 6A8D - srcEnd = 6A8E - mappingOffset = 0AE8 - Mapping = - 6565 5055 -End of Item 039D - -Begin of Item 039E - Format 2 - srcBegin = 6A97 - destBegin = 5B7C -End of Item 039E - -Begin of Item 039F - Format 2 - srcBegin = 6A9C - destBegin = 7C66 -End of Item 039F - -Begin of Item 03A0 - Format 1 - srcBegin = 6AA2 - srcEnd = 6AA3 - mappingOffset = 0AEA - Mapping = - 4B7E 6D6A -End of Item 03A0 - -Begin of Item 03A1 - Format 2 - srcBegin = 6AB3 - destBegin = 5E31 -End of Item 03A1 - -Begin of Item 03A2 - Format 2 - srcBegin = 6ABB - destBegin = 7963 -End of Item 03A2 - -Begin of Item 03A3 - Format 1 - srcBegin = 6AC2 - srcEnd = 6AC3 - mappingOffset = 0AEC - Mapping = - 5422 4F76 -End of Item 03A3 - -Begin of Item 03A4 - Format 2 - srcBegin = 6AD3 - destBegin = 5650 -End of Item 03A4 - -Begin of Item 03A5 - Format 1 - srcBegin = 6ADA - srcEnd = 6ADB - mappingOffset = 0AEE - Mapping = - 556A 716E -End of Item 03A5 - -Begin of Item 03A6 - Format 2 - srcBegin = 6AF6 - destBegin = 7A4B -End of Item 03A6 - -Begin of Item 03A7 - Format 2 - srcBegin = 6AFB - destBegin = 6521 -End of Item 03A7 - -Begin of Item 03A8 - Format 2 - srcBegin = 6B04 - destBegin = 5531 -End of Item 03A8 - -Begin of Item 03A9 - Format 1 - srcBegin = 6B0A - srcEnd = 6B0C - mappingOffset = 0AF0 - Mapping = - 4F6D FFFD 6D6B -End of Item 03A9 - -Begin of Item 03AA - Format 2 - srcBegin = 6B12 - destBegin = 5532 -End of Item 03AA - -Begin of Item 03AB - Format 2 - srcBegin = 6B16 - destBegin = 553C -End of Item 03AB - -Begin of Item 03AC - Format 1 - srcBegin = 6B20 - srcEnd = 6B23 - mappingOffset = 0AF3 - Mapping = - 7D62 732D FFFD 7D5B -End of Item 03AC - -Begin of Item 03AD - Format 2 - srcBegin = 6B32 - destBegin = 6930 -End of Item 03AD - -Begin of Item 03AE - Format 1 - srcBegin = 6B3A - srcEnd = 6B3E - mappingOffset = 0AF7 - Mapping = - 5127 FFFD FFFD 7D63 4E33 -End of Item 03AE - -Begin of Item 03AF - Format 1 - srcBegin = 6B46 - srcEnd = 6B47 - mappingOffset = 0AFC - Mapping = - 7D64 7A4E -End of Item 03AF - -Begin of Item 03B0 - Format 1 - srcBegin = 6B4C - srcEnd = 6B50 - mappingOffset = 0AFE - Mapping = - 4A30 FFFD 7727 FFFD 4F31 -End of Item 03B0 - -Begin of Item 03B1 - Format 1 - srcBegin = 6B5F - srcEnd = 6B66 - mappingOffset = 0B03 - Mapping = - 6622 FFFD 7C36 722D 6F61 732E 5C46 596B -End of Item 03B1 - -Begin of Item 03B2 - Format 2 - srcBegin = 6B6A - destBegin = 6860 -End of Item 03B2 - -Begin of Item 03B3 - Format 2 - srcBegin = 6B72 - destBegin = 6128 -End of Item 03B3 - -Begin of Item 03B4 - Format 1 - srcBegin = 6B77 - srcEnd = 6B7B - mappingOffset = 0B0B - Mapping = - 5576 4F7D FFFD FFFD 5E5D -End of Item 03B4 - -Begin of Item 03B5 - Format 2 - srcBegin = 6B7F - destBegin = 5951 -End of Item 03B5 - -Begin of Item 03B6 - Format 1 - srcBegin = 6B83 - srcEnd = 6B8A - mappingOffset = 0B10 - Mapping = - 646A 724F FFFD 773F FFFD FFFD 6266 6228 -End of Item 03B6 - -Begin of Item 03B7 - Format 1 - srcBegin = 6B96 - srcEnd = 6B98 - mappingOffset = 0B18 - Mapping = - 6356 FFFD 6D51 -End of Item 03B7 - -Begin of Item 03B8 - Format 2 - srcBegin = 6B9E - destBegin = 6979 -End of Item 03B8 - -Begin of Item 03B9 - Format 1 - srcBegin = 6BAE - srcEnd = 6BC1 - mappingOffset = 0B1B - Mapping = - 5631 5E32 FFFD FFFD 6068 FFFD FFFD 532B - FFFD 6B5C FFFD FFFD 5F2F FFFD 4A43 FFFD - FFFD 6E7C FFFD 7D43 -End of Item 03B9 - -Begin of Item 03BA - Format 1 - srcBegin = 6BC5 - srcEnd = 6BC6 - mappingOffset = 0B2F - Mapping = - 6B76 4F32 -End of Item 03BA - -Begin of Item 03BB - Format 1 - srcBegin = 6BCB - srcEnd = 6BD4 - mappingOffset = 0B31 - Mapping = - 596C FFFD 593D FFFD 585F FFFD FFFD 5438 - 6B3E 5D6F -End of Item 03BB - -Begin of Item 03BC - Format 2 - srcBegin = 6BDB - destBegin = 593E -End of Item 03BC - -Begin of Item 03BD - Format 1 - srcBegin = 6BEB - srcEnd = 6BEC - mappingOffset = 0B3B - Mapping = - 7B46 4F33 -End of Item 03BD - -Begin of Item 03BE - Format 2 - srcBegin = 6C08 - destBegin = 6E7D -End of Item 03BE - -Begin of Item 03BF - Format 1 - srcBegin = 6C0F - srcEnd = 6C13 - mappingOffset = 0B3D - Mapping = - 642B FFFD 5A45 FFFD 586C -End of Item 03BF - -Begin of Item 03C0 - Format 2 - srcBegin = 6C23 - destBegin = 5128 -End of Item 03C0 - -Begin of Item 03C1 - Format 1 - srcBegin = 6C34 - srcEnd = 6C38 - mappingOffset = 0B42 - Mapping = - 6229 FFFD FFFD 5E3C 6735 -End of Item 03C1 - -Begin of Item 03C2 - Format 1 - srcBegin = 6C3E - srcEnd = 6C42 - mappingOffset = 0B47 - Mapping = - 5B70 FFFD 6F62 7170 4F34 -End of Item 03C2 - -Begin of Item 03C3 - Format 1 - srcBegin = 6C4E - srcEnd = 6C50 - mappingOffset = 0B4C - Mapping = - 5B71 FFFD 6031 -End of Item 03C3 - -Begin of Item 03C4 - Format 1 - srcBegin = 6C55 - srcEnd = 6C60 - mappingOffset = 0B4F - Mapping = - 5F25 FFFD 7952 FFFD FFFD 677D FFFD FFFD - 6623 7B71 4B30 722E -End of Item 03C4 - -Begin of Item 03C5 - Format 1 - srcBegin = 6C68 - srcEnd = 6C72 - mappingOffset = 0B5B - Mapping = - 4D67 FFFD 685C FFFD FFFD 6757 FFFD FFFD - 7740 FFFD 5063 -End of Item 03C5 - -Begin of Item 03C6 - Format 2 - srcBegin = 6C76 - destBegin = 5A21 -End of Item 03C6 - -Begin of Item 03C7 - Format 1 - srcBegin = 6C7A - srcEnd = 6C88 - mappingOffset = 0B66 - Mapping = - 4C3D FFFD FFFD 5129 5D4C FFFD FFFD 637E - 512A 682A FFFD 6A36 797A 664C 7658 -End of Item 03C7 - -Begin of Item 03C8 - Format 2 - srcBegin = 6C8C - destBegin = 5447 -End of Item 03C8 - -Begin of Item 03C9 - Format 1 - srcBegin = 6C90 - srcEnd = 6C9B - mappingOffset = 0B75 - Mapping = - 594B FFFD 5952 534B 5877 5A29 7578 FFFD - FFFD 5E5E 722F 7829 -End of Item 03C9 - -Begin of Item 03CA - Format 1 - srcBegin = 6CAB - srcEnd = 6CAE - mappingOffset = 0B81 - Mapping = - 5848 FFFD FFFD 6E41 -End of Item 03CA - -Begin of Item 03CB - Format 2 - srcBegin = 6CB3 - destBegin = 7941 -End of Item 03CB - -Begin of Item 03CC - Format 1 - srcBegin = 6CB8 - srcEnd = 6CC4 - mappingOffset = 0B85 - Mapping = - 5D73 6A7A FFFD 763D 613B 4D3F 7454 664D - FFFD 7C4F 7B22 FFFD 605C -End of Item 03CC - -Begin of Item 03CD - Format 1 - srcBegin = 6CC9 - srcEnd = 6CCC - mappingOffset = 0B92 - Mapping = - 743B 5A55 FFFD 7932 -End of Item 03CD - -Begin of Item 03CE - Format 1 - srcBegin = 6CD3 - srcEnd = 6CD7 - mappingOffset = 0B96 - Mapping = - 7B72 FFFD 5B76 FFFD 5E5F -End of Item 03CE - -Begin of Item 03CF - Format 2 - srcBegin = 6CDB - destBegin = 5B72 -End of Item 03CF - -Begin of Item 03D0 - Format 1 - srcBegin = 6CE1 - srcEnd = 6CF3 - mappingOffset = 0B9B - Mapping = - 785C 776E 6B68 FFFD 527A FFFD FFFD 713C - FFFD FFFD 7A5A FFFD FFFD 5A6A 5A46 7741 - FFFD FFFD 6736 -End of Item 03D0 - -Begin of Item 03D1 - Format 1 - srcBegin = 6D0B - srcEnd = 6D0C - mappingOffset = 0BAE - Mapping = - 6547 562C -End of Item 03D1 - -Begin of Item 03D2 - Format 2 - srcBegin = 6D11 - destBegin = 5C47 -End of Item 03D2 - -Begin of Item 03D3 - Format 1 - srcBegin = 6D17 - srcEnd = 6D1E - mappingOffset = 0BB0 - Mapping = - 6129 FFFD 622A FFFD 5526 FFFD FFFD 5457 -End of Item 03D3 - -Begin of Item 03D4 - Format 1 - srcBegin = 6D25 - srcEnd = 6D2A - mappingOffset = 0BB8 - Mapping = - 7250 FFFD 6A7B FFFD 605D 7B73 -End of Item 03D4 - -Begin of Item 03D5 - Format 1 - srcBegin = 6D32 - srcEnd = 6D41 - mappingOffset = 0BBE - Mapping = - 713D FFFD FFFD 6267 7D57 FFFD 4E48 6A37 - FFFD 7C40 FFFD 7D67 776F FFFD FFFD 5735 -End of Item 03D5 - -Begin of Item 03D6 - Format 1 - srcBegin = 6D59 - srcEnd = 6D5C - mappingOffset = 0BCE - Mapping = - 6F3A 715D FFFD 5E33 -End of Item 03D6 - -Begin of Item 03D7 - Format 1 - srcBegin = 6D63 - srcEnd = 6D6E - mappingOffset = 0BD2 - Mapping = - 684B FFFD FFFD 785D FFFD FFFD 7B47 5548 - FFFD 575F FFFD 5D29 -End of Item 03D7 - -Begin of Item 03D8 - Format 1 - srcBegin = 6D74 - srcEnd = 6D79 - mappingOffset = 0BDE - Mapping = - 6931 FFFD FFFD 7A2D 7659 7A74 -End of Item 03D8 - -Begin of Item 03D9 - Format 2 - srcBegin = 6D7F - destBegin = 782A -End of Item 03D9 - -Begin of Item 03DA - Format 1 - srcBegin = 6D85 - srcEnd = 6D95 - mappingOffset = 0BE4 - Mapping = - 666E FFFD 4C5C 613C 606F FFFD FFFD 693F - 7C7D 664E FFFD FFFD 6157 FFFD 664F FFFD - 7471 -End of Item 03DA - -Begin of Item 03DB - Format 1 - srcBegin = 6DAF - srcEnd = 6DB5 - mappingOffset = 0BF5 - Mapping = - 6473 FFFD FFFD 647B FFFD FFFD 7964 -End of Item 03DB - -Begin of Item 03DC - Format 1 - srcBegin = 6DC0 - srcEnd = 6DC7 - mappingOffset = 0BFC - Mapping = - 6F63 FFFD FFFD 4F6E 763E 6032 7C7E 512B -End of Item 03DC - -Begin of Item 03DD - Format 2 - srcBegin = 6DCB - destBegin = 577A -End of Item 03DD - -Begin of Item 03DE - Format 1 - srcBegin = 6DCF - srcEnd = 6DD1 - mappingOffset = 0C04 - Mapping = - 7B48 FFFD 6257 -End of Item 03DE - -Begin of Item 03DF - Format 1 - srcBegin = 6DD8 - srcEnd = 6DDA - mappingOffset = 0C07 - Mapping = - 5423 7078 5728 -End of Item 03DF - -Begin of Item 03E0 - Format 1 - srcBegin = 6DDE - srcEnd = 6DE1 - mappingOffset = 0C0A - Mapping = - 6167 FFFD FFFD 533F -End of Item 03E0 - -Begin of Item 03E1 - Format 1 - srcBegin = 6DE8 - srcEnd = 6DFB - mappingOffset = 0C0E - Mapping = - 6F64 FFFD 5745 6B62 FFFD FFFD 7C67 FFFD - FFFD 6422 FFFD 6268 FFFD 6650 FFFD 7B68 - 7468 6574 743C 7455 -End of Item 03E1 - -Begin of Item 03E2 - Format 1 - srcBegin = 6E17 - srcEnd = 6E1B - mappingOffset = 0C22 - Mapping = - 5F36 FFFD 7C39 6E42 4A75 -End of Item 03E2 - -Begin of Item 03E3 - Format 1 - srcBegin = 6E1F - srcEnd = 6E26 - mappingOffset = 0C27 - Mapping = - 6F65 4B62 5424 FFFD 5E60 5A7D 6446 683E -End of Item 03E3 - -Begin of Item 03E4 - Format 1 - srcBegin = 6E2B - srcEnd = 6E3E - mappingOffset = 0C2F - Mapping = - 605E 7634 6A52 FFFD 797B FFFD FFFD 6042 - FFFD 4A64 FFFD 6737 FFFD 6A7D FFFD 595D - FFFD 5A34 6E2A 7B69 -End of Item 03E4 - -Begin of Item 03E5 - Format 1 - srcBegin = 6E43 - srcEnd = 6E44 - mappingOffset = 0C43 - Mapping = - 5B4B 5A35 -End of Item 03E5 - -Begin of Item 03E6 - Format 1 - srcBegin = 6E4A - srcEnd = 6E4D - mappingOffset = 0C45 - Mapping = - 713E FFFD FFFD 532C -End of Item 03E6 - -Begin of Item 03E7 - Format 1 - srcBegin = 6E56 - srcEnd = 6E5F - mappingOffset = 0C49 - Mapping = - 7B49 FFFD 5F4F FFFD FFFD 5340 6357 FFFD - 6F66 7C50 -End of Item 03E7 - -Begin of Item 03E8 - Format 2 - srcBegin = 6E67 - destBegin = 6940 -End of Item 03E8 - -Begin of Item 03E9 - Format 1 - srcBegin = 6E6B - srcEnd = 6E73 - mappingOffset = 0C53 - Mapping = - 7553 FFFD FFFD 6C5C 7737 FFFD FFFD 6A38 - 5179 -End of Item 03E9 - -Begin of Item 03EA - Format 2 - srcBegin = 6E7A - destBegin = 5C48 -End of Item 03EA - -Begin of Item 03EB - Format 2 - srcBegin = 6E90 - destBegin = 6A39 -End of Item 03EB - -Begin of Item 03EC - Format 2 - srcBegin = 6E96 - destBegin = 715E -End of Item 03EC - -Begin of Item 03ED - Format 1 - srcBegin = 6E9C - srcEnd = 6EA5 - mappingOffset = 0C5C - Mapping = - 5736 4F35 FFFD 5928 FFFD FFFD 6C6E FFFD - FFFD 5D2A -End of Item 03ED - -Begin of Item 03EE - Format 1 - srcBegin = 6EAA - srcEnd = 6EAB - mappingOffset = 0C66 - Mapping = - 4D22 682E -End of Item 03EE - -Begin of Item 03EF - Format 1 - srcBegin = 6EAF - srcEnd = 6EB1 - mappingOffset = 0C68 - Mapping = - 613D FFFD 7251 -End of Item 03EF - -Begin of Item 03F0 - Format 2 - srcBegin = 6EB6 - destBegin = 6941 -End of Item 03F0 - -Begin of Item 03F1 - Format 2 - srcBegin = 6EBA - destBegin = 527C -End of Item 03F1 - -Begin of Item 03F2 - Format 1 - srcBegin = 6EC2 - srcEnd = 6EC5 - mappingOffset = 0C6B - Mapping = - 5B35 FFFD 7367 587E -End of Item 03F2 - -Begin of Item 03F3 - Format 1 - srcBegin = 6EC9 - srcEnd = 6ED4 - mappingOffset = 0C6F - Mapping = - 7C51 FFFD 6D32 742F FFFD 7B23 FFFD FFFD - 7C41 FFFD 6E2B 5425 -End of Item 03F3 - -Begin of Item 03F4 - Format 2 - srcBegin = 6EEF - destBegin = 7472 -End of Item 03F4 - -Begin of Item 03F5 - Format 2 - srcBegin = 6EF4 - destBegin = 6E59 -End of Item 03F5 - -Begin of Item 03F6 - Format 2 - srcBegin = 6EF8 - destBegin = 7B4A -End of Item 03F6 - -Begin of Item 03F7 - Format 1 - srcBegin = 6EFE - srcEnd = 6F02 - mappingOffset = 0C7B - Mapping = - 4D63 583B FFFD 655B 7877 -End of Item 03F7 - -Begin of Item 03F8 - Format 2 - srcBegin = 6F06 - destBegin = 7654 -End of Item 03F8 - -Begin of Item 03F9 - Format 1 - srcBegin = 6F0F - srcEnd = 6F15 - mappingOffset = 0C80 - Mapping = - 5729 FFFD 4B49 FFFD FFFD 6651 704C -End of Item 03F9 - -Begin of Item 03FA - Format 1 - srcBegin = 6F20 - srcEnd = 6F23 - mappingOffset = 0C87 - Mapping = - 582E FFFD 7953 557E -End of Item 03FA - -Begin of Item 03FB - Format 1 - srcBegin = 6F2B - srcEnd = 6F2C - mappingOffset = 0C8B - Mapping = - 583C 7230 -End of Item 03FB - -Begin of Item 03FC - Format 1 - srcBegin = 6F31 - srcEnd = 6F32 - mappingOffset = 0C8D - Mapping = - 622B 7368 -End of Item 03FC - -Begin of Item 03FD - Format 2 - srcBegin = 6F38 - destBegin = 6F42 -End of Item 03FD - -Begin of Item 03FE - Format 1 - srcBegin = 6F3F - srcEnd = 6F41 - mappingOffset = 0C8F - Mapping = - 6D6C FFFD 6738 -End of Item 03FE - -Begin of Item 03FF - Format 1 - srcBegin = 6F51 - srcEnd = 6F64 - mappingOffset = 0C92 - Mapping = - 5A7E FFFD FFFD 4C3E FFFD FFFD 727C 5A6B - FFFD 6258 6D56 FFFD FFFD 5651 6033 FFFD - FFFD 7C52 FFFD 6B48 -End of Item 03FF - -Begin of Item 0400 - Format 1 - srcBegin = 6F6D - srcEnd = 6F70 - mappingOffset = 0CA6 - Mapping = - 5341 704D FFFD 4F77 -End of Item 0400 - -Begin of Item 0401 - Format 1 - srcBegin = 6F7A - srcEnd = 6F84 - mappingOffset = 0CAA - Mapping = - 6D52 FFFD 5458 5C49 5771 FFFD FFFD 5F3B - FFFD FFFD 7325 -End of Item 0401 - -Begin of Item 0402 - Format 2 - srcBegin = 6F88 - destBegin = 744D -End of Item 0402 - -Begin of Item 0403 - Format 1 - srcBegin = 6F8D - srcEnd = 6F90 - mappingOffset = 0CB5 - Mapping = - 713F 7831 FFFD 697A -End of Item 0403 - -Begin of Item 0404 - Format 1 - srcBegin = 6F94 - srcEnd = 6F97 - mappingOffset = 0CB9 - Mapping = - 7B4B FFFD FFFD 4A55 -End of Item 0404 - -Begin of Item 0405 - Format 1 - srcBegin = 6FA3 - srcEnd = 6FA7 - mappingOffset = 0CBD - Mapping = - 7954 774A FFFD FFFD 5648 -End of Item 0405 - -Begin of Item 0406 - Format 1 - srcBegin = 6FAE - srcEnd = 6FB3 - mappingOffset = 0CC2 - Mapping = - 7C68 733D FFFD 6E7E FFFD 677E -End of Item 0406 - -Begin of Item 0407 - Format 2 - srcBegin = 6FB9 - destBegin = 5342 -End of Item 0407 - -Begin of Item 0408 - Format 1 - srcBegin = 6FBE - srcEnd = 6FC3 - mappingOffset = 0CC8 - Mapping = - 5336 FFFD 4C2D 767A 5632 5258 -End of Item 0408 - -Begin of Item 0409 - Format 2 - srcBegin = 6FCA - destBegin = 6758 -End of Item 0409 - -Begin of Item 040A - Format 2 - srcBegin = 6FD5 - destBegin = 6325 -End of Item 040A - -Begin of Item 040B - Format 2 - srcBegin = 6FDA - destBegin = 6739 -End of Item 040B - -Begin of Item 040C - Format 1 - srcBegin = 6FDF - srcEnd = 6FE4 - mappingOffset = 0CCE - Mapping = - 702D 7B4C 6B21 FFFD FFFD 5426 -End of Item 040C - -Begin of Item 040D - Format 1 - srcBegin = 6FE9 - srcEnd = 6FF1 - mappingOffset = 0CD4 - Mapping = - 7B4D FFFD 553D 715F FFFD FFFD 767B FFFD - 5E34 -End of Item 040D - -Begin of Item 040E - Format 1 - srcBegin = 6FFE - srcEnd = 7001 - mappingOffset = 0CDD - Mapping = - 556B FFFD FFFD 6548 -End of Item 040E - -Begin of Item 040F - Format 1 - srcBegin = 7005 - srcEnd = 700B - mappingOffset = 0CE1 - Mapping = - 7B24 5439 FFFD FFFD 5E61 FFFD 6423 -End of Item 040F - -Begin of Item 0410 - Format 1 - srcBegin = 700F - srcEnd = 7011 - mappingOffset = 0CE8 - Mapping = - 5737 FFFD 786E -End of Item 0410 - -Begin of Item 0411 - Format 1 - srcBegin = 7015 - srcEnd = 701F - mappingOffset = 0CEB - Mapping = - 5E35 FFFD FFFD 5652 FFFD 7955 673A 6B55 - 5577 6F67 613E -End of Item 0411 - -Begin of Item 0412 - Format 2 - srcBegin = 7023 - destBegin = 7A2E -End of Item 0412 - -Begin of Item 0413 - Format 1 - srcBegin = 7027 - srcEnd = 7028 - mappingOffset = 0CF6 - Mapping = - 5669 566E -End of Item 0413 - -Begin of Item 0414 - Format 2 - srcBegin = 702F - destBegin = 673B -End of Item 0414 - -Begin of Item 0415 - Format 2 - srcBegin = 7037 - destBegin = 6C4B -End of Item 0415 - -Begin of Item 0416 - Format 2 - srcBegin = 703E - destBegin = 5533 -End of Item 0416 - -Begin of Item 0417 - Format 2 - srcBegin = 704C - destBegin = 4E34 -End of Item 0417 - -Begin of Item 0418 - Format 1 - srcBegin = 7050 - srcEnd = 7051 - mappingOffset = 0CF8 - Mapping = - 7B25 616E -End of Item 0418 - -Begin of Item 0419 - Format 2 - srcBegin = 7058 - destBegin = 7728 -End of Item 0419 - -Begin of Item 041A - Format 2 - srcBegin = 705D - destBegin = 7B4E -End of Item 041A - -Begin of Item 041B - Format 2 - srcBegin = 7063 - destBegin = 583D -End of Item 041B - -Begin of Item 041C - Format 2 - srcBegin = 706B - destBegin = 7B7D -End of Item 041C - -Begin of Item 041D - Format 2 - srcBegin = 7070 - destBegin = 7C69 -End of Item 041D - -Begin of Item 041E - Format 2 - srcBegin = 7078 - destBegin = 4F36 -End of Item 041E - -Begin of Item 041F - Format 1 - srcBegin = 707C - srcEnd = 707D - mappingOffset = 0CFA - Mapping = - 6D47 6E2C -End of Item 041F - -Begin of Item 0420 - Format 2 - srcBegin = 7085 - destBegin = 4C5D -End of Item 0420 - -Begin of Item 0421 - Format 2 - srcBegin = 708A - destBegin = 7627 -End of Item 0421 - -Begin of Item 0422 - Format 2 - srcBegin = 708E - destBegin = 667A -End of Item 0422 - -Begin of Item 0423 - Format 2 - srcBegin = 7092 - destBegin = 7524 -End of Item 0423 - -Begin of Item 0424 - Format 1 - srcBegin = 7098 - srcEnd = 709A - mappingOffset = 0CFC - Mapping = - 7D5C 6D33 4E49 -End of Item 0424 - -Begin of Item 0425 - Format 1 - srcBegin = 70A1 - srcEnd = 70A4 - mappingOffset = 0CFF - Mapping = - 6F68 FFFD FFFD 613F -End of Item 0425 - -Begin of Item 0426 - Format 1 - srcBegin = 70AB - srcEnd = 70AF - mappingOffset = 0D03 - Mapping = - 7A5B 4B63 7729 FFFD 7B26 -End of Item 0426 - -Begin of Item 0427 - Format 2 - srcBegin = 70B3 - destBegin = 5C39 -End of Item 0427 - -Begin of Item 0428 - Format 1 - srcBegin = 70B7 - srcEnd = 70B9 - mappingOffset = 0D08 - Mapping = - 7140 6D48 6F43 -End of Item 0428 - -Begin of Item 0429 - Format 1 - srcBegin = 70C8 - srcEnd = 70CB - mappingOffset = 0D0B - Mapping = - 562D FFFD FFFD 7D4E -End of Item 0429 - -Begin of Item 042A - Format 2 - srcBegin = 70CF - destBegin = 6821 -End of Item 042A - -Begin of Item 042B - Format 1 - srcBegin = 70D8 - srcEnd = 70D9 - mappingOffset = 0D0F - Mapping = - 7B74 5527 -End of Item 042B - -Begin of Item 042C - Format 1 - srcBegin = 70DD - srcEnd = 70DF - mappingOffset = 0D11 - Mapping = - 7176 FFFD 6653 -End of Item 042C - -Begin of Item 042D - Format 2 - srcBegin = 70F1 - destBegin = 4C5E -End of Item 042D - -Begin of Item 042E - Format 2 - srcBegin = 70F9 - destBegin = 7832 -End of Item 042E - -Begin of Item 042F - Format 2 - srcBegin = 70FD - destBegin = 5C6B -End of Item 042F - -Begin of Item 0430 - Format 2 - srcBegin = 7104 - destBegin = 7D36 -End of Item 0430 - -Begin of Item 0431 - Format 1 - srcBegin = 7109 - srcEnd = 710C - mappingOffset = 0D14 - Mapping = - 656A FFFD FFFD 7160 -End of Item 0431 - -Begin of Item 0432 - Format 1 - srcBegin = 7119 - srcEnd = 711A - mappingOffset = 0D18 - Mapping = - 5B4C 5D4D -End of Item 0432 - -Begin of Item 0433 - Format 1 - srcBegin = 711E - srcEnd = 7121 - mappingOffset = 0D1A - Mapping = - 5448 FFFD FFFD 596D -End of Item 0433 - -Begin of Item 0434 - Format 2 - srcBegin = 7126 - destBegin = 7525 -End of Item 0434 - -Begin of Item 0435 - Format 2 - srcBegin = 7130 - destBegin = 667B -End of Item 0435 - -Begin of Item 0436 - Format 2 - srcBegin = 7136 - destBegin = 6654 -End of Item 0436 - -Begin of Item 0437 - Format 1 - srcBegin = 7147 - srcEnd = 7150 - mappingOffset = 0D1E - Mapping = - 7D48 FFFD 5621 7D3F FFFD 7C53 FFFD 6F21 - FFFD 673C -End of Item 0437 - -Begin of Item 0438 - Format 1 - srcBegin = 7156 - srcEnd = 715E - mappingOffset = 0D28 - Mapping = - 516E FFFD FFFD 6655 FFFD FFFD 6972 FFFD - 5F30 -End of Item 0438 - -Begin of Item 0439 - Format 1 - srcBegin = 7164 - srcEnd = 716E - mappingOffset = 0D31 - Mapping = - 5860 7C3A 7D2F 704E FFFD 5B61 FFFD FFFD - 6549 FFFD 6D34 -End of Item 0439 - -Begin of Item 043A - Format 2 - srcBegin = 717D - destBegin = 6043 -End of Item 043A - -Begin of Item 043B - Format 2 - srcBegin = 7184 - destBegin = 6358 -End of Item 043B - -Begin of Item 043C - Format 1 - srcBegin = 7189 - srcEnd = 718A - mappingOffset = 0D3C - Mapping = - 697B 6A28 -End of Item 043C - -Begin of Item 043D - Format 1 - srcBegin = 718F - srcEnd = 7194 - mappingOffset = 0D3E - Mapping = - 7D37 FFFD FFFD 7B27 FFFD 6942 -End of Item 043D - -Begin of Item 043E - Format 2 - srcBegin = 7199 - destBegin = 7D77 -End of Item 043E - -Begin of Item 043F - Format 1 - srcBegin = 719F - srcEnd = 71A2 - mappingOffset = 0D44 - Mapping = - 6259 FFFD FFFD 5C6C -End of Item 043F - -Begin of Item 0440 - Format 2 - srcBegin = 71AC - destBegin = 6822 -End of Item 0440 - -Begin of Item 0441 - Format 2 - srcBegin = 71B1 - destBegin = 6670 -End of Item 0441 - -Begin of Item 0442 - Format 1 - srcBegin = 71B9 - srcEnd = 71BA - mappingOffset = 0D48 - Mapping = - 7D78 7D79 -End of Item 0442 - -Begin of Item 0443 - Format 1 - srcBegin = 71BE - srcEnd = 71C3 - mappingOffset = 0D4A - Mapping = - 763F FFFD FFFD 6727 FFFD 6657 -End of Item 0443 - -Begin of Item 0444 - Format 1 - srcBegin = 71C8 - srcEnd = 71C9 - mappingOffset = 0D50 - Mapping = - 5473 5449 -End of Item 0444 - -Begin of Item 0445 - Format 1 - srcBegin = 71CE - srcEnd = 71D5 - mappingOffset = 0D52 - Mapping = - 567A FFFD 5772 FFFD 6140 FFFD 5B62 6658 -End of Item 0445 - -Begin of Item 0446 - Format 2 - srcBegin = 71DF - destBegin = 673D -End of Item 0446 - -Begin of Item 0447 - Format 1 - srcBegin = 71E5 - srcEnd = 71E7 - mappingOffset = 0D5A - Mapping = - 704F 733E 622C -End of Item 0447 - -Begin of Item 0448 - Format 1 - srcBegin = 71ED - srcEnd = 71EE - mappingOffset = 0D5D - Mapping = - 7537 6070 -End of Item 0448 - -Begin of Item 0449 - Format 1 - srcBegin = 71FB - srcEnd = 7200 - mappingOffset = 0D5F - Mapping = - 7D38 6368 FFFD 5427 687C 7A52 -End of Item 0449 - -Begin of Item 044A - Format 2 - srcBegin = 7206 - destBegin = 786F -End of Item 044A - -Begin of Item 044B - Format 2 - srcBegin = 7210 - destBegin = 5653 -End of Item 044B - -Begin of Item 044C - Format 2 - srcBegin = 721B - destBegin = 5534 -End of Item 044C - -Begin of Item 044D - Format 1 - srcBegin = 722A - srcEnd = 7236 - mappingOffset = 0D65 - Mapping = - 7050 FFFD 7770 6E33 FFFD FFFD 6A3A FFFD - 6A53 FFFD FFFD 6D49 5D2B -End of Item 044D - -Begin of Item 044E - Format 1 - srcBegin = 723A - srcEnd = 7240 - mappingOffset = 0D72 - Mapping = - 652C 7D21 FFFD 5F50 6C33 FFFD 5F51 -End of Item 044E - -Begin of Item 044F - Format 1 - srcBegin = 7246 - srcEnd = 7248 - mappingOffset = 0D79 - Mapping = - 6D6D 7838 777A -End of Item 044F - -Begin of Item 0450 - Format 2 - srcBegin = 724C - destBegin = 782B -End of Item 0450 - -Begin of Item 0451 - Format 2 - srcBegin = 7252 - destBegin = 7460 -End of Item 0451 - -Begin of Item 0452 - Format 1 - srcBegin = 7258 - srcEnd = 7262 - mappingOffset = 0D7C - Mapping = - 543A 6433 FFFD 695A FFFD 5E36 FFFD 593F - FFFD 5940 566F -End of Item 0452 - -Begin of Item 0453 - Format 1 - srcBegin = 7267 - srcEnd = 7269 - mappingOffset = 0D87 - Mapping = - 594C FFFD 5A2A -End of Item 0453 - -Begin of Item 0454 - Format 2 - srcBegin = 7272 - destBegin = 5F65 -End of Item 0454 - -Begin of Item 0455 - Format 2 - srcBegin = 7279 - destBegin = 7765 -End of Item 0455 - -Begin of Item 0456 - Format 1 - srcBegin = 727D - srcEnd = 7281 - mappingOffset = 0D8A - Mapping = - 4C32 FFFD FFFD 5F79 5760 -End of Item 0456 - -Begin of Item 0457 - Format 2 - srcBegin = 72A2 - destBegin = 543B -End of Item 0457 - -Begin of Item 0458 - Format 2 - srcBegin = 72A7 - destBegin = 7D7A -End of Item 0458 - -Begin of Item 0459 - Format 1 - srcBegin = 72AC - srcEnd = 72AF - mappingOffset = 0D8F - Mapping = - 4C33 FFFD FFFD 5B73 -End of Item 0459 - -Begin of Item 045A - Format 1 - srcBegin = 72C0 - srcEnd = 72C4 - mappingOffset = 0D93 - Mapping = - 5F52 FFFD 4E4A FFFD 6E5A -End of Item 045A - -Begin of Item 045B - Format 1 - srcBegin = 72CE - srcEnd = 72D0 - mappingOffset = 0D98 - Mapping = - 6464 FFFD 7B4F -End of Item 045B - -Begin of Item 045C - Format 1 - srcBegin = 72D7 - srcEnd = 72D9 - mappingOffset = 0D9B - Mapping = - 4F37 FFFD 6E43 -End of Item 045C - -Begin of Item 045D - Format 2 - srcBegin = 72E1 - destBegin = 4E6A -End of Item 045D - -Begin of Item 045E - Format 2 - srcBegin = 72E9 - destBegin = 622D -End of Item 045E - -Begin of Item 045F - Format 1 - srcBegin = 72F8 - srcEnd = 72FD - mappingOffset = 0D9E - Mapping = - 5761 7A75 FFFD FFFD 5549 782C -End of Item 045F - -Begin of Item 0460 - Format 2 - srcBegin = 730A - destBegin = 6759 -End of Item 0460 - -Begin of Item 0461 - Format 2 - srcBegin = 7316 - destBegin = 7369 -End of Item 0461 - -Begin of Item 0462 - Format 1 - srcBegin = 731B - srcEnd = 731D - mappingOffset = 0DA4 - Mapping = - 586D 6344 7071 -End of Item 0462 - -Begin of Item 0463 - Format 2 - srcBegin = 7325 - destBegin = 6865 -End of Item 0463 - -Begin of Item 0464 - Format 1 - srcBegin = 7329 - srcEnd = 732B - mappingOffset = 0DA7 - Mapping = - 607A 6E44 595E -End of Item 0464 - -Begin of Item 0465 - Format 1 - srcBegin = 7336 - srcEnd = 7337 - mappingOffset = 0DAA - Mapping = - 6B22 6B23 -End of Item 0465 - -Begin of Item 0466 - Format 1 - srcBegin = 733E - srcEnd = 733F - mappingOffset = 0DAC - Mapping = - 7C42 6A3B -End of Item 0466 - -Begin of Item 0467 - Format 1 - srcBegin = 7344 - srcEnd = 7345 - mappingOffset = 0DAE - Mapping = - 682B 5E62 -End of Item 0467 - -Begin of Item 0468 - Format 1 - srcBegin = 7350 - srcEnd = 7352 - mappingOffset = 0DB0 - Mapping = - 6D6F FFFD 6823 -End of Item 0468 - -Begin of Item 0469 - Format 2 - srcBegin = 7357 - destBegin = 4F71 -End of Item 0469 - -Begin of Item 046A - Format 1 - srcBegin = 7368 - srcEnd = 736A - mappingOffset = 0DB3 - Mapping = - 543C FFFD 7C6A -End of Item 046A - -Begin of Item 046B - Format 1 - srcBegin = 7370 - srcEnd = 737B - mappingOffset = 0DB6 - Mapping = - 673E FFFD 7C72 FFFD FFFD 5634 FFFD FFFD - 622E FFFD 5337 7A4C -End of Item 046B - -Begin of Item 046C - Format 1 - srcBegin = 7384 - srcEnd = 738E - mappingOffset = 0DC2 - Mapping = - 7A5C FFFD 6D35 6163 FFFD 682C FFFD 685D - FFFD FFFD 6F69 -End of Item 046C - -Begin of Item 046D - Format 1 - srcBegin = 7394 - srcEnd = 7398 - mappingOffset = 0DCD - Mapping = - 743D FFFD 4F38 695B 512C -End of Item 046D - -Begin of Item 046E - Format 2 - srcBegin = 739F - destBegin = 5A47 -End of Item 046E - -Begin of Item 046F - Format 1 - srcBegin = 73A7 - srcEnd = 73A9 - mappingOffset = 0DD2 - Mapping = - 6B49 FFFD 684C -End of Item 046F - -Begin of Item 0470 - Format 2 - srcBegin = 73AD - destBegin = 5E37 -End of Item 0470 - -Begin of Item 0471 - Format 1 - srcBegin = 73B2 - srcEnd = 73B3 - mappingOffset = 0DD5 - Mapping = - 563C 5365 -End of Item 0471 - -Begin of Item 0472 - Format 2 - srcBegin = 73B9 - destBegin = 7A5D -End of Item 0472 - -Begin of Item 0473 - Format 1 - srcBegin = 73C0 - srcEnd = 73C2 - mappingOffset = 0DD7 - Mapping = - 5A56 FFFD 4A31 -End of Item 0473 - -Begin of Item 0474 - Format 1 - srcBegin = 73C9 - srcEnd = 73CF - mappingOffset = 0DDA - Mapping = - 5A48 5F26 FFFD 7933 7252 FFFD 4A44 -End of Item 0474 - -Begin of Item 0475 - Format 1 - srcBegin = 73D6 - srcEnd = 73D9 - mappingOffset = 0DE1 - Mapping = - 4E4B FFFD FFFD 4D75 -End of Item 0475 - -Begin of Item 0476 - Format 1 - srcBegin = 73DD - srcEnd = 73ED - mappingOffset = 0DE5 - Mapping = - 7D30 5528 FFFD 7141 FFFD FFFD 6269 5C4A - 6C34 7A40 FFFD FFFD 7B28 5028 FFFD FFFD - 5A6C -End of Item 0476 - -Begin of Item 0477 - Format 1 - srcBegin = 73F7 - srcEnd = 73F9 - mappingOffset = 0DF6 - Mapping = - 596E FFFD 607B -End of Item 0477 - -Begin of Item 0478 - Format 1 - srcBegin = 73FD - srcEnd = 7409 - mappingOffset = 0DF9 - Mapping = - 6F6A 7A5E FFFD FFFD 6044 FFFD 4F39 FFFD - 554A 5762 622F FFFD 5738 -End of Item 0478 - -Begin of Item 0479 - Format 2 - srcBegin = 7413 - destBegin = 684D -End of Item 0479 - -Begin of Item 047A - Format 2 - srcBegin = 741B - destBegin = 765A -End of Item 047A - -Begin of Item 047B - Format 1 - srcBegin = 7420 - srcEnd = 743A - mappingOffset = 0E06 - Mapping = - 6F22 625A 767C FFFD FFFD 7B50 512D FFFD - 4D64 FFFD 512E 5C6D 684E FFFD 7079 4E35 - 667C FFFD FFFD 577B 5056 5D75 7771 FFFD - 767D FFFD 5B77 -End of Item 047B - -Begin of Item 047C - Format 1 - srcBegin = 743F - srcEnd = 7444 - mappingOffset = 0E21 - Mapping = - 7B6A 695C 5941 FFFD 7572 6045 -End of Item 047C - -Begin of Item 047D - Format 2 - srcBegin = 744B - destBegin = 6A54 -End of Item 047D - -Begin of Item 047E - Format 1 - srcBegin = 7455 - srcEnd = 746A - mappingOffset = 0E27 - Mapping = - 7942 FFFD 6A3C FFFD 5245 7B51 6740 6B25 - FFFD 5F7A 6322 5739 FFFD 6943 FFFD 687D - 682F FFFD FFFD 7253 7B29 5825 -End of Item 047E - -Begin of Item 047F - Format 2 - srcBegin = 746F - destBegin = 554B -End of Item 047F - -Begin of Item 0480 - Format 2 - srcBegin = 747E - destBegin = 5048 -End of Item 0480 - -Begin of Item 0481 - Format 1 - srcBegin = 7482 - srcEnd = 7483 - mappingOffset = 0E3D - Mapping = - 512F 5763 -End of Item 0481 - -Begin of Item 0482 - Format 1 - srcBegin = 7487 - srcEnd = 748B - mappingOffset = 0E3F - Mapping = - 6046 FFFD 5622 FFFD 6D70 -End of Item 0482 - -Begin of Item 0483 - Format 2 - srcBegin = 7498 - destBegin = 5773 -End of Item 0483 - -Begin of Item 0484 - Format 1 - srcBegin = 749C - srcEnd = 74AA - mappingOffset = 0E44 - Mapping = - 7C54 FFFD 5A57 4C5F FFFD 7254 FFFD 5130 - FFFD 4C60 FFFD 5B7D 733F FFFD 7051 -End of Item 0484 - -Begin of Item 0485 - Format 1 - srcBegin = 74B0 - srcEnd = 74B5 - mappingOffset = 0E53 - Mapping = - 7C3B FFFD 6230 FFFD FFFD 6625 -End of Item 0485 - -Begin of Item 0486 - Format 2 - srcBegin = 74B9 - destBegin = 625B -End of Item 0486 - -Begin of Item 0487 - Format 1 - srcBegin = 74BD - srcEnd = 74BF - mappingOffset = 0E59 - Mapping = - 5F5E FFFD 6047 -End of Item 0487 - -Begin of Item 0488 - Format 2 - srcBegin = 74C6 - destBegin = 726F -End of Item 0488 - -Begin of Item 0489 - Format 2 - srcBegin = 74CA - destBegin = 4C61 -End of Item 0489 - -Begin of Item 048A - Format 2 - srcBegin = 74CF - destBegin = 566A -End of Item 048A - -Begin of Item 048B - Format 2 - srcBegin = 74D4 - destBegin = 6742 -End of Item 048B - -Begin of Item 048C - Format 1 - srcBegin = 74D8 - srcEnd = 74DC - mappingOffset = 0E5C - Mapping = - 4E36 FFFD 7340 FFFD 4D7E -End of Item 048C - -Begin of Item 048D - Format 1 - srcBegin = 74E0 - srcEnd = 74E6 - mappingOffset = 0E61 - Mapping = - 7B52 FFFD 7878 777B FFFD FFFD 683F -End of Item 048D - -Begin of Item 048E - Format 2 - srcBegin = 74EE - destBegin = 6837 -End of Item 048E - -Begin of Item 048F - Format 2 - srcBegin = 74F7 - destBegin = 6D36 -End of Item 048F - -Begin of Item 0490 - Format 1 - srcBegin = 7501 - srcEnd = 7504 - mappingOffset = 0E68 - Mapping = - 5C3A FFFD FFFD 4C34 -End of Item 0490 - -Begin of Item 0491 - Format 2 - srcBegin = 7511 - destBegin = 7177 -End of Item 0491 - -Begin of Item 0492 - Format 1 - srcBegin = 7515 - srcEnd = 751B - mappingOffset = 0E6C - Mapping = - 6838 FFFD FFFD 4A76 FFFD 6424 7456 -End of Item 0492 - -Begin of Item 0493 - Format 2 - srcBegin = 751F - destBegin = 5F66 -End of Item 0493 - -Begin of Item 0494 - Format 1 - srcBegin = 7523 - srcEnd = 752C - mappingOffset = 0E73 - Mapping = - 5F27 FFFD 5F67 6141 FFFD 6944 FFFD FFFD - 5C4B 6945 -End of Item 0494 - -Begin of Item 0495 - Format 1 - srcBegin = 7530 - srcEnd = 7533 - mappingOffset = 0E7D - Mapping = - 6F23 6B26 4B23 6369 -End of Item 0495 - -Begin of Item 0496 - Format 1 - srcBegin = 7537 - srcEnd = 753A - mappingOffset = 0E81 - Mapping = - 517B 6F24 FFFD 6F6B -End of Item 0496 - -Begin of Item 0497 - Format 2 - srcBegin = 7547 - destBegin = 5034 -End of Item 0497 - -Begin of Item 0498 - Format 1 - srcBegin = 754C - srcEnd = 7554 - mappingOffset = 0E85 - Mapping = - 4D23 FFFD FFFD 6866 FFFD 6F25 FFFD 534C - 5A6D -End of Item 0498 - -Begin of Item 0499 - Format 1 - srcBegin = 7559 - srcEnd = 755D - mappingOffset = 0E8E - Mapping = - 573A FFFD 7255 7565 596F -End of Item 0499 - -Begin of Item 049A - Format 1 - srcBegin = 7562 - srcEnd = 7566 - mappingOffset = 0E93 - Mapping = - 7934 FFFD FFFD 5554 7D4F -End of Item 049A - -Begin of Item 049B - Format 2 - srcBegin = 756A - destBegin = 5B63 -End of Item 049B - -Begin of Item 049C - Format 1 - srcBegin = 756F - srcEnd = 7570 - mappingOffset = 0E98 - Mapping = - 7161 6C36 -End of Item 049C - -Begin of Item 049D - Format 1 - srcBegin = 7575 - srcEnd = 757A - mappingOffset = 0E9A - Mapping = - 7B7E 5357 FFFD 5131 FFFD 4B31 -End of Item 049D - -Begin of Item 049E - Format 2 - srcBegin = 757F - destBegin = 5132 -End of Item 049E - -Begin of Item 049F - Format 1 - srcBegin = 7586 - srcEnd = 7591 - mappingOffset = 0EA0 - Mapping = - 4B32 7142 FFFD FFFD 7461 7935 FFFD FFFD - 6143 6142 FFFD 6B77 -End of Item 049F - -Begin of Item 04A0 - Format 2 - srcBegin = 759D - destBegin = 5F28 -End of Item 04A0 - -Begin of Item 04A1 - Format 2 - srcBegin = 75A5 - destBegin = 4B4A -End of Item 04A1 - -Begin of Item 04A2 - Format 2 - srcBegin = 75AB - destBegin = 6639 -End of Item 04A2 - -Begin of Item 04A3 - Format 1 - srcBegin = 75B1 - srcEnd = 75BE - mappingOffset = 0EAC - Mapping = - 785E 792A 4A77 FFFD 6D37 FFFD FFFD 5338 - 7256 FFFD FFFD 5459 6E45 7270 -End of Item 04A3 - -Begin of Item 04A4 - Format 1 - srcBegin = 75C2 - srcEnd = 75C7 - mappingOffset = 0EBA - Mapping = - 4A32 FFFD FFFD 5C3B FFFD 7178 -End of Item 04A4 - -Begin of Item 04A5 - Format 2 - srcBegin = 75CD - destBegin = 6C37 -End of Item 04A5 - -Begin of Item 04A6 - Format 1 - srcBegin = 75D2 - srcEnd = 75DB - mappingOffset = 0EC0 - Mapping = - 654A FFFD 7640 7D5D FFFD FFFD 5463 4C62 - FFFD 7754 -End of Item 04A6 - -Begin of Item 04A7 - Format 2 - srcBegin = 75E2 - destBegin = 5765 -End of Item 04A7 - -Begin of Item 04A8 - Format 1 - srcBegin = 75F0 - srcEnd = 75F4 - mappingOffset = 0ECA - Mapping = - 5343 FFFD 5826 FFFD 7641 -End of Item 04A8 - -Begin of Item 04A9 - Format 1 - srcBegin = 75FA - srcEnd = 75FC - mappingOffset = 0ECF - Mapping = - 5D76 FFFD 4D40 -End of Item 04A9 - -Begin of Item 04AA - Format 2 - srcBegin = 7600 - destBegin = 655C -End of Item 04AA - -Begin of Item 04AB - Format 2 - srcBegin = 760D - destBegin = 654B -End of Item 04AB - -Begin of Item 04AC - Format 2 - srcBegin = 7619 - destBegin = 6144 -End of Item 04AC - -Begin of Item 04AD - Format 1 - srcBegin = 761F - srcEnd = 7626 - mappingOffset = 0ED2 - Mapping = - 6830 7430 736A 5A6E FFFD 573B FFFD 6231 -End of Item 04AD - -Begin of Item 04AE - Format 2 - srcBegin = 763B - destBegin = 572A -End of Item 04AE - -Begin of Item 04AF - Format 2 - srcBegin = 7642 - destBegin = 567B -End of Item 04AF - -Begin of Item 04B0 - Format 1 - srcBegin = 764C - srcEnd = 764E - mappingOffset = 0EDA - Mapping = - 645F FFFD 4A56 -End of Item 04B0 - -Begin of Item 04B1 - Format 2 - srcBegin = 7652 - destBegin = 6B28 -End of Item 04B1 - -Begin of Item 04B2 - Format 2 - srcBegin = 7656 - destBegin = 5B7E -End of Item 04B2 - -Begin of Item 04B3 - Format 1 - srcBegin = 7661 - srcEnd = 7664 - mappingOffset = 0EDD - Mapping = - 7642 FFFD FFFD 6F3B -End of Item 04B3 - -Begin of Item 04B4 - Format 1 - srcBegin = 7669 - srcEnd = 766C - mappingOffset = 0EE1 - Mapping = - 547D FFFD FFFD 6048 -End of Item 04B4 - -Begin of Item 04B5 - Format 1 - srcBegin = 7670 - srcEnd = 7672 - mappingOffset = 0EE5 - Mapping = - 6839 FFFD 6F26 -End of Item 04B5 - -Begin of Item 04B6 - Format 1 - srcBegin = 7678 - srcEnd = 767E - mappingOffset = 0EE8 - Mapping = - 4D24 FFFD FFFD 5474 5B21 5B5C 5B5D -End of Item 04B6 - -Begin of Item 04B7 - Format 1 - srcBegin = 7684 - srcEnd = 7687 - mappingOffset = 0EEF - Mapping = - 6E5C FFFD 4B4B 7C55 -End of Item 04B7 - -Begin of Item 04B8 - Format 1 - srcBegin = 768E - srcEnd = 7693 - mappingOffset = 0EF3 - Mapping = - 4E6B FFFD 4D41 FFFD FFFD 7B53 -End of Item 04B8 - -Begin of Item 04B9 - Format 2 - srcBegin = 76AE - destBegin = 792B -End of Item 04B9 - -Begin of Item 04BA - Format 2 - srcBegin = 76BA - destBegin = 7554 -End of Item 04BA - -Begin of Item 04BB - Format 1 - srcBegin = 76BF - srcEnd = 76CA - mappingOffset = 0EF9 - Mapping = - 5929 FFFD FFFD 695D 5B4D FFFD FFFD 5D4E - FFFD 6743 FFFD 6C4C -End of Item 04BB - -Begin of Item 04BC - Format 2 - srcBegin = 76D2 - destBegin = 796C -End of Item 04BC - -Begin of Item 04BD - Format 2 - srcBegin = 76D6 - destBegin = 4B4C -End of Item 04BD - -Begin of Item 04BE - Format 1 - srcBegin = 76DB - srcEnd = 76E7 - mappingOffset = 0F05 - Mapping = - 607C 5428 FFFD 6D53 586F FFFD 7257 FFFD - 4A78 5A6F FFFD FFFD 5654 -End of Item 04BE - -Begin of Item 04BF - Format 2 - srcBegin = 76EE - destBegin = 594D -End of Item 04BF - -Begin of Item 04C0 - Format 1 - srcBegin = 76F2 - srcEnd = 76F4 - mappingOffset = 0F12 - Mapping = - 586E FFFD 7241 -End of Item 04C0 - -Begin of Item 04C1 - Format 2 - srcBegin = 76F8 - destBegin = 5F53 -End of Item 04C1 - -Begin of Item 04C2 - Format 1 - srcBegin = 76FC - srcEnd = 7704 - mappingOffset = 0F15 - Mapping = - 5A70 FFFD 626A FFFD FFFD 607D FFFD FFFD - 5878 -End of Item 04C2 - -Begin of Item 04C3 - Format 1 - srcBegin = 7708 - srcEnd = 770B - mappingOffset = 0F1E - Mapping = - 772F 5A36 FFFD 4A57 -End of Item 04C3 - -Begin of Item 04C4 - Format 1 - srcBegin = 771E - srcEnd = 7720 - mappingOffset = 0F22 - Mapping = - 7258 FFFD 5879 -End of Item 04C4 - -Begin of Item 04C5 - Format 2 - srcBegin = 7729 - destBegin = 7A5F -End of Item 04C5 - -Begin of Item 04C6 - Format 1 - srcBegin = 7737 - srcEnd = 773C - mappingOffset = 0F25 - Mapping = - 4F6F 5942 FFFD 7052 FFFD 6451 -End of Item 04C6 - -Begin of Item 04C7 - Format 2 - srcBegin = 7740 - destBegin = 7337 -End of Item 04C7 - -Begin of Item 04C8 - Format 2 - srcBegin = 774D - destBegin = 7A60 -End of Item 04C8 - -Begin of Item 04C9 - Format 2 - srcBegin = 775B - destBegin = 6F6C -End of Item 04C9 - -Begin of Item 04CA - Format 1 - srcBegin = 7761 - srcEnd = 7766 - mappingOffset = 0F2B - Mapping = - 6232 FFFD 543D FFFD FFFD 594E -End of Item 04CA - -Begin of Item 04CB - Format 2 - srcBegin = 776B - destBegin = 7462 -End of Item 04CB - -Begin of Item 04CC - Format 2 - srcBegin = 7779 - destBegin = 5429 -End of Item 04CC - -Begin of Item 04CD - Format 1 - srcBegin = 777E - srcEnd = 777F - mappingOffset = 0F31 - Mapping = - 4D42 675A -End of Item 04CD - -Begin of Item 04CE - Format 2 - srcBegin = 778B - destBegin = 7259 -End of Item 04CE - -Begin of Item 04CF - Format 2 - srcBegin = 7791 - destBegin = 592A -End of Item 04CF - -Begin of Item 04D0 - Format 2 - srcBegin = 779E - destBegin = 583E -End of Item 04D0 - -Begin of Item 04D1 - Format 2 - srcBegin = 77A5 - destBegin = 5C2D -End of Item 04D1 - -Begin of Item 04D2 - Format 1 - srcBegin = 77AC - srcEnd = 77B3 - mappingOffset = 0F33 - Mapping = - 626B 567C FFFD FFFD 4A79 FFFD FFFD 545A -End of Item 04D2 - -Begin of Item 04D3 - Format 1 - srcBegin = 77BB - srcEnd = 77BF - mappingOffset = 0F3B - Mapping = - 7457 4C21 FFFD FFFD 4F3A -End of Item 04D3 - -Begin of Item 04D4 - Format 2 - srcBegin = 77D7 - destBegin = 7538 -End of Item 04D4 - -Begin of Item 04D5 - Format 1 - srcBegin = 77DB - srcEnd = 77DC - mappingOffset = 0F40 - Mapping = - 5943 5068 -End of Item 04D5 - -Begin of Item 04D6 - Format 1 - srcBegin = 77E2 - srcEnd = 77E5 - mappingOffset = 0F42 - Mapping = - 6345 6B78 FFFD 7231 -End of Item 04D6 - -Begin of Item 04D7 - Format 2 - srcBegin = 77E9 - destBegin = 4F3B -End of Item 04D7 - -Begin of Item 04D8 - Format 1 - srcBegin = 77ED - srcEnd = 77EF - mappingOffset = 0F46 - Mapping = - 532D 6861 4E6C -End of Item 04D8 - -Begin of Item 04D9 - Format 2 - srcBegin = 77F3 - destBegin = 6034 -End of Item 04D9 - -Begin of Item 04DA - Format 2 - srcBegin = 7802 - destBegin = 5E63 -End of Item 04DA - -Begin of Item 04DB - Format 2 - srcBegin = 7812 - destBegin = 5D77 -End of Item 04DB - -Begin of Item 04DC - Format 1 - srcBegin = 7825 - srcEnd = 7827 - mappingOffset = 0F49 - Mapping = - 7232 7376 765B -End of Item 04DC - -Begin of Item 04DD - Format 2 - srcBegin = 782C - destBegin = 577E -End of Item 04DD - -Begin of Item 04DE - Format 1 - srcBegin = 7832 - srcEnd = 7834 - mappingOffset = 0F4C - Mapping = - 785F FFFD 7772 -End of Item 04DE - -Begin of Item 04DF - Format 2 - srcBegin = 7845 - destBegin = 5029 -End of Item 04DF - -Begin of Item 04E0 - Format 2 - srcBegin = 784F - destBegin = 665A -End of Item 04E0 - -Begin of Item 04E1 - Format 2 - srcBegin = 785D - destBegin = 7526 -End of Item 04E1 - -Begin of Item 04E2 - Format 1 - srcBegin = 786B - srcEnd = 786F - mappingOffset = 0F4F - Mapping = - 573C 4C63 FFFD FFFD 665B -End of Item 04E2 - -Begin of Item 04E3 - Format 2 - srcBegin = 787C - destBegin = 5D5D -End of Item 04E3 - -Begin of Item 04E4 - Format 2 - srcBegin = 7881 - destBegin = 5133 -End of Item 04E4 - -Begin of Item 04E5 - Format 2 - srcBegin = 7887 - destBegin = 6F6D -End of Item 04E5 - -Begin of Item 04E6 - Format 1 - srcBegin = 788C - srcEnd = 7891 - mappingOffset = 0F54 - Mapping = - 565E 6474 616F FFFD FFFD 5D78 -End of Item 04E6 - -Begin of Item 04E7 - Format 2 - srcBegin = 7897 - destBegin = 684F -End of Item 04E7 - -Begin of Item 04E8 - Format 2 - srcBegin = 78A3 - destBegin = 4A65 -End of Item 04E8 - -Begin of Item 04E9 - Format 1 - srcBegin = 78A7 - srcEnd = 78A9 - mappingOffset = 0F5A - Mapping = - 5C21 FFFD 6035 -End of Item 04E9 - -Begin of Item 04EA - Format 1 - srcBegin = 78BA - srcEnd = 78BC - mappingOffset = 0F5D - Mapping = - 7C2C 7C2D 5827 -End of Item 04EA - -Begin of Item 04EB - Format 2 - srcBegin = 78C1 - destBegin = 6D38 -End of Item 04EB - -Begin of Item 04EC - Format 2 - srcBegin = 78C5 - destBegin = 5B36 -End of Item 04EC - -Begin of Item 04ED - Format 1 - srcBegin = 78CA - srcEnd = 78D0 - mappingOffset = 0F60 - Mapping = - 5670 732F FFFD FFFD 4D25 FFFD 5A71 -End of Item 04ED - -Begin of Item 04EE - Format 2 - srcBegin = 78E8 - destBegin = 5828 -End of Item 04EE - -Begin of Item 04EF - Format 1 - srcBegin = 78EC - srcEnd = 78EF - mappingOffset = 0F67 - Mapping = - 4C64 FFFD FFFD 5134 -End of Item 04EF - -Begin of Item 04F0 - Format 2 - srcBegin = 78F5 - destBegin = 4A58 -End of Item 04F0 - -Begin of Item 04F1 - Format 2 - srcBegin = 78FB - destBegin = 5A72 -End of Item 04F1 - -Begin of Item 04F2 - Format 2 - srcBegin = 7901 - destBegin = 7527 -End of Item 04F2 - -Begin of Item 04F3 - Format 2 - srcBegin = 790E - destBegin = 7528 -End of Item 04F3 - -Begin of Item 04F4 - Format 2 - srcBegin = 7916 - destBegin = 6626 -End of Item 04F4 - -Begin of Item 04F5 - Format 1 - srcBegin = 792A - srcEnd = 792C - mappingOffset = 0F6B - Mapping = - 556C 5578 5A73 -End of Item 04F5 - -Begin of Item 04F6 - Format 2 - srcBegin = 793A - destBegin = 6346 -End of Item 04F6 - -Begin of Item 04F7 - Format 1 - srcBegin = 793E - srcEnd = 7941 - mappingOffset = 0F6E - Mapping = - 5E64 FFFD 5E65 5135 -End of Item 04F7 - -Begin of Item 04F8 - Format 1 - srcBegin = 7947 - srcEnd = 7949 - mappingOffset = 0F72 - Mapping = - 5136 5137 7233 -End of Item 04F8 - -Begin of Item 04F9 - Format 2 - srcBegin = 7950 - destBegin = 695E -End of Item 04F9 - -Begin of Item 04FA - Format 1 - srcBegin = 7956 - srcEnd = 7960 - mappingOffset = 0F75 - Mapping = - 7053 7234 FFFD FFFD 7054 4B64 7B54 7566 - 636A FFFD 5E66 -End of Item 04FA - -Begin of Item 04FB - Format 1 - srcBegin = 7965 - srcEnd = 7968 - mappingOffset = 0F80 - Mapping = - 5F54 FFFD FFFD 7879 -End of Item 04FB - -Begin of Item 04FC - Format 2 - srcBegin = 796D - destBegin = 702E -End of Item 04FC - -Begin of Item 04FD - Format 2 - srcBegin = 797A - destBegin = 5138 -End of Item 04FD - -Begin of Item 04FE - Format 1 - srcBegin = 797F - srcEnd = 7981 - mappingOffset = 0F84 - Mapping = - 565F FFFD 5057 -End of Item 04FE - -Begin of Item 04FF - Format 1 - srcBegin = 798D - srcEnd = 7991 - mappingOffset = 0F87 - Mapping = - 7C21 6F6E 5C58 FFFD 695F -End of Item 04FF - -Begin of Item 0500 - Format 1 - srcBegin = 79A6 - srcEnd = 79AA - mappingOffset = 0F8C - Mapping = - 655D 7D7B FFFD FFFD 6049 -End of Item 0500 - -Begin of Item 0501 - Format 1 - srcBegin = 79AE - srcEnd = 79B3 - mappingOffset = 0F91 - Mapping = - 5649 FFFD FFFD 542A FFFD 654C -End of Item 0501 - -Begin of Item 0502 - Format 2 - srcBegin = 79B9 - destBegin = 6960 -End of Item 0502 - -Begin of Item 0503 - Format 1 - srcBegin = 79BD - srcEnd = 79C1 - mappingOffset = 0F97 - Mapping = - 5058 7C22 543E 6233 5E67 -End of Item 0503 - -Begin of Item 0504 - Format 1 - srcBegin = 79C9 - srcEnd = 79CB - mappingOffset = 0F9C - Mapping = - 5C3C 5236 7555 -End of Item 0504 - -Begin of Item 0505 - Format 1 - srcBegin = 79D1 - srcEnd = 79D8 - mappingOffset = 0F9F - Mapping = - 4E21 7529 FFFD FFFD 5D79 FFFD FFFD 5D7A -End of Item 0505 - -Begin of Item 0506 - Format 2 - srcBegin = 79DF - destBegin = 7055 -End of Item 0506 - -Begin of Item 0507 - Format 1 - srcBegin = 79E4 - srcEnd = 79E9 - mappingOffset = 0FA7 - Mapping = - 765F FFFD 725A 646B FFFD 7271 -End of Item 0507 - -Begin of Item 0508 - Format 2 - srcBegin = 79FB - destBegin = 6C39 -End of Item 0508 - -Begin of Item 0509 - Format 2 - srcBegin = 7A00 - destBegin = 7D7C -End of Item 0509 - -Begin of Item 050A - Format 1 - srcBegin = 7A05 - srcEnd = 7A0D - mappingOffset = 0FAD - Mapping = - 612A FFFD FFFD 4A59 FFFD FFFD 6F6F FFFD - 752A -End of Item 050A - -Begin of Item 050B - Format 1 - srcBegin = 7A14 - srcEnd = 7A20 - mappingOffset = 0FB6 - Mapping = - 6C79 FFFD FFFD 782D FFFD 7242 7643 FFFD - 5752 FFFD FFFD 7922 7056 -End of Item 050B - -Begin of Item 050C - Format 1 - srcBegin = 7A2E - srcEnd = 7A31 - mappingOffset = 0FC3 - Mapping = - 707A FFFD FFFD 7660 -End of Item 050C - -Begin of Item 050D - Format 1 - srcBegin = 7A36 - srcEnd = 7A37 - mappingOffset = 0FC7 - Mapping = - 6973 7243 -End of Item 050D - -Begin of Item 050E - Format 1 - srcBegin = 7A3B - srcEnd = 7A40 - mappingOffset = 0FC9 - Mapping = - 542B 4A33 4D26 FFFD 4D43 4D5A -End of Item 050E - -Begin of Item 050F - Format 1 - srcBegin = 7A46 - srcEnd = 7A49 - mappingOffset = 0FCF - Mapping = - 594F FFFD FFFD 7644 -End of Item 050F - -Begin of Item 0510 - Format 1 - srcBegin = 7A4D - srcEnd = 7A4E - mappingOffset = 0FD3 - Mapping = - 6E5D 6744 -End of Item 0510 - -Begin of Item 0511 - Format 2 - srcBegin = 7A57 - destBegin = 6234 -End of Item 0511 - -Begin of Item 0512 - Format 1 - srcBegin = 7A61 - srcEnd = 7A62 - mappingOffset = 0FD5 - Mapping = - 5F62 675B -End of Item 0512 - -Begin of Item 0513 - Format 1 - srcBegin = 7A69 - srcEnd = 7A6B - mappingOffset = 0FD7 - Mapping = - 6831 FFFD 7C2E -End of Item 0513 - -Begin of Item 0514 - Format 2 - srcBegin = 7A70 - destBegin = 654D -End of Item 0514 - -Begin of Item 0515 - Format 1 - srcBegin = 7A74 - srcEnd = 7A84 - mappingOffset = 0FDA - Mapping = - 7A6B FFFD 4F3C FFFD FFFD 4F62 4D76 FFFD - FFFD 6F70 FFFD 743E FFFD 544D FFFD FFFD - 7338 -End of Item 0515 - -Begin of Item 0516 - Format 2 - srcBegin = 7A88 - destBegin = 6921 -End of Item 0516 - -Begin of Item 0517 - Format 1 - srcBegin = 7A92 - srcEnd = 7A98 - mappingOffset = 0FEB - Mapping = - 7272 736B FFFD 7057 FFFD FFFD 4F57 -End of Item 0517 - -Begin of Item 0518 - Format 2 - srcBegin = 7A9F - destBegin = 4F5F -End of Item 0518 - -Begin of Item 0519 - Format 1 - srcBegin = 7AA9 - srcEnd = 7AAA - mappingOffset = 0FF2 - Mapping = - 6840 6841 -End of Item 0519 - -Begin of Item 051A - Format 1 - srcBegin = 7AAE - srcEnd = 7AAF - mappingOffset = 0FF4 - Mapping = - 4F63 6922 -End of Item 051A - -Begin of Item 051B - Format 2 - srcBegin = 7ABA - destBegin = 502A -End of Item 051B - -Begin of Item 051C - Format 1 - srcBegin = 7AC4 - srcEnd = 7ACB - mappingOffset = 0FF6 - Mapping = - 7341 502B FFFD 5464 FFFD FFFD 6F3C 5821 -End of Item 051C - -Begin of Item 051D - Format 1 - srcBegin = 7AD7 - srcEnd = 7AD9 - mappingOffset = 0FFE - Mapping = - 595F FFFD 7357 -End of Item 051D - -Begin of Item 051E - Format 1 - srcBegin = 7ADD - srcEnd = 7AE5 - mappingOffset = 1001 - Mapping = - 5C3D FFFD 4C65 6D71 FFFD FFFD 7162 FFFD - 545B -End of Item 051E - -Begin of Item 051F - Format 1 - srcBegin = 7AEA - srcEnd = 7AEF - mappingOffset = 100A - Mapping = - 6235 FFFD FFFD 4A66 FFFD 532E -End of Item 051F - -Begin of Item 0520 - Format 1 - srcBegin = 7AF6 - srcEnd = 7AFA - mappingOffset = 1010 - Mapping = - 4C66 FFFD FFFD 7153 7567 -End of Item 0520 - -Begin of Item 0521 - Format 2 - srcBegin = 7AFF - destBegin = 4A5A -End of Item 0521 - -Begin of Item 0522 - Format 1 - srcBegin = 7B0F - srcEnd = 7B11 - mappingOffset = 1015 - Mapping = - 7B6E FFFD 6145 -End of Item 0522 - -Begin of Item 0523 - Format 1 - srcBegin = 7B19 - srcEnd = 7B20 - mappingOffset = 1018 - Mapping = - 5F69 FFFD 6E5E FFFD FFFD 7742 FFFD 5822 -End of Item 0523 - -Begin of Item 0524 - Format 2 - srcBegin = 7B26 - destBegin = 5D2C -End of Item 0524 - -Begin of Item 0525 - Format 1 - srcBegin = 7B2C - srcEnd = 7B2D - mappingOffset = 1020 - Mapping = - 702F 563D -End of Item 0525 - -Begin of Item 0526 - Format 2 - srcBegin = 7B39 - destBegin = 612B -End of Item 0526 - -Begin of Item 0527 - Format 1 - srcBegin = 7B46 - srcEnd = 7B56 - mappingOffset = 1022 - Mapping = - 7936 FFFD FFFD 5475 FFFD 5049 6F27 626C - FFFD 5B6A 4E4C 7568 7755 FFFD 534D FFFD - 737E -End of Item 0527 - -Begin of Item 0528 - Format 2 - srcBegin = 7B60 - destBegin = 5035 -End of Item 0528 - -Begin of Item 0529 - Format 1 - srcBegin = 7B6C - srcEnd = 7B6E - mappingOffset = 1033 - Mapping = - 607E FFFD 5F7B -End of Item 0529 - -Begin of Item 052A - Format 2 - srcBegin = 7B75 - destBegin = 665D -End of Item 052A - -Begin of Item 052B - Format 2 - srcBegin = 7B7D - destBegin = 6824 -End of Item 052B - -Begin of Item 052C - Format 2 - srcBegin = 7B87 - destBegin = 4B4D -End of Item 052C - -Begin of Item 052D - Format 2 - srcBegin = 7B8B - destBegin = 6F28 -End of Item 052D - -Begin of Item 052E - Format 2 - srcBegin = 7B8F - destBegin = 6E34 -End of Item 052E - -Begin of Item 052F - Format 1 - srcBegin = 7B94 - srcEnd = 7B9D - mappingOffset = 1036 - Mapping = - 5A58 5139 FFFD 5F29 FFFD FFFD 7330 FFFD - FFFD 4C44 -End of Item 052F - -Begin of Item 0530 - Format 2 - srcBegin = 7BA1 - destBegin = 4E37 -End of Item 0530 - -Begin of Item 0531 - Format 2 - srcBegin = 7BAD - destBegin = 6F29 -End of Item 0531 - -Begin of Item 0532 - Format 1 - srcBegin = 7BB1 - srcEnd = 7BB4 - mappingOffset = 1040 - Mapping = - 5F55 FFFD FFFD 6D57 -End of Item 0532 - -Begin of Item 0533 - Format 2 - srcBegin = 7BB8 - destBegin = 6E46 -End of Item 0533 - -Begin of Item 0534 - Format 1 - srcBegin = 7BC0 - srcEnd = 7BC9 - mappingOffset = 1044 - Mapping = - 6F3D 7C56 FFFD FFFD 5B74 FFFD 6F2A 7839 - FFFD 7569 -End of Item 0534 - -Begin of Item 0535 - Format 2 - srcBegin = 7BD2 - destBegin = 6359 -End of Item 0535 - -Begin of Item 0536 - Format 2 - srcBegin = 7BE0 - destBegin = 6146 -End of Item 0536 - -Begin of Item 0537 - Format 2 - srcBegin = 7BE4 - destBegin = 543F -End of Item 0537 - -Begin of Item 0538 - Format 2 - srcBegin = 7BE9 - destBegin = 5E68 -End of Item 0538 - -Begin of Item 0539 - Format 2 - srcBegin = 7C07 - destBegin = 706A -End of Item 0539 - -Begin of Item 053A - Format 2 - srcBegin = 7C12 - destBegin = 7342 -End of Item 053A - -Begin of Item 053B - Format 1 - srcBegin = 7C1E - srcEnd = 7C21 - mappingOffset = 104E - Mapping = - 532F FFFD FFFD 4A5B -End of Item 053B - -Begin of Item 053C - Format 1 - srcBegin = 7C27 - srcEnd = 7C2B - mappingOffset = 1052 - Mapping = - 7C57 FFFD FFFD 6D58 6147 -End of Item 053C - -Begin of Item 053D - Format 1 - srcBegin = 7C3D - srcEnd = 7C3F - mappingOffset = 1057 - Mapping = - 7458 5633 5D2D -End of Item 053D - -Begin of Item 053E - Format 2 - srcBegin = 7C43 - destBegin = 553E -End of Item 053E - -Begin of Item 053F - Format 1 - srcBegin = 7C4C - srcEnd = 7C4D - mappingOffset = 105A - Mapping = - 7143 6E5F -End of Item 053F - -Begin of Item 0540 - Format 2 - srcBegin = 7C60 - destBegin = 566B -End of Item 0540 - -Begin of Item 0541 - Format 2 - srcBegin = 7C64 - destBegin = 7459 -End of Item 0541 - -Begin of Item 0542 - Format 2 - srcBegin = 7C6C - destBegin = 5766 -End of Item 0542 - -Begin of Item 0543 - Format 2 - srcBegin = 7C73 - destBegin = 5A37 -End of Item 0543 - -Begin of Item 0544 - Format 2 - srcBegin = 7C83 - destBegin = 5D7B -End of Item 0544 - -Begin of Item 0545 - Format 2 - srcBegin = 7C89 - destBegin = 5D4F -End of Item 0545 - -Begin of Item 0546 - Format 1 - srcBegin = 7C92 - srcEnd = 7C98 - mappingOffset = 105C - Mapping = - 5823 FFFD FFFD 5A59 FFFD 7058 6F44 -End of Item 0546 - -Begin of Item 0547 - Format 2 - srcBegin = 7C9F - destBegin = 6158 -End of Item 0547 - -Begin of Item 0548 - Format 1 - srcBegin = 7CA5 - srcEnd = 7CA7 - mappingOffset = 1063 - Mapping = - 7154 FFFD 6D72 -End of Item 0548 - -Begin of Item 0549 - Format 1 - srcBegin = 7CAE - srcEnd = 7CB3 - mappingOffset = 1066 - Mapping = - 555B FFFD FFFD 555C 7344 4B57 -End of Item 0549 - -Begin of Item 054A - Format 2 - srcBegin = 7CB9 - destBegin = 6236 -End of Item 054A - -Begin of Item 054B - Format 2 - srcBegin = 7CBE - destBegin = 6F71 -End of Item 054B - -Begin of Item 054C - Format 2 - srcBegin = 7CCA - destBegin = 7B55 -End of Item 054C - -Begin of Item 054D - Format 2 - srcBegin = 7CD6 - destBegin = 5358 -End of Item 054D - -Begin of Item 054E - Format 1 - srcBegin = 7CDE - srcEnd = 7CE0 - mappingOffset = 106C - Mapping = - 5D50 7059 4B33 -End of Item 054E - -Begin of Item 054F - Format 2 - srcBegin = 7CE7 - destBegin = 555D -End of Item 054F - -Begin of Item 0550 - Format 1 - srcBegin = 7CFB - srcEnd = 7D10 - mappingOffset = 106F - Mapping = - 4D27 FFFD FFFD 502C FFFD 513A FFFD 7144 - FFFD 6533 7B75 6961 7D60 7C3C FFFD 5A22 - 5A23 FFFD 5221 FFFD FFFD 526F -End of Item 0550 - -Begin of Item 0551 - Format 1 - srcBegin = 7D14 - srcEnd = 7D1B - mappingOffset = 1085 - Mapping = - 626D FFFD FFFD 5E69 4E5C 7235 5064 5D51 -End of Item 0551 - -Begin of Item 0552 - Format 1 - srcBegin = 7D20 - srcEnd = 7D22 - mappingOffset = 108D - Mapping = - 6148 5B37 5F63 -End of Item 0552 - -Begin of Item 0553 - Format 1 - srcBegin = 7D2B - srcEnd = 7D35 - mappingOffset = 1090 - Mapping = - 6D39 7145 FFFD 734F 572B 612C FFFD FFFD - 636B FFFD 6E47 -End of Item 0553 - -Begin of Item 0554 - Format 1 - srcBegin = 7D39 - srcEnd = 7D3A - mappingOffset = 109B - Mapping = - 6149 4A7A -End of Item 0554 - -Begin of Item 0555 - Format 1 - srcBegin = 7D42 - srcEnd = 7D46 - mappingOffset = 109D - Mapping = - 707B 7A61 705A 4C67 5A74 -End of Item 0555 - -Begin of Item 0556 - Format 2 - srcBegin = 7D50 - destBegin = 4C3F -End of Item 0556 - -Begin of Item 0557 - Format 1 - srcBegin = 7D5E - srcEnd = 7D62 - mappingOffset = 10A2 - Mapping = - 4E6D FFFD FFFD 5529 7A62 -End of Item 0557 - -Begin of Item 0558 - Format 1 - srcBegin = 7D66 - srcEnd = 7D6A - mappingOffset = 10A7 - Mapping = - 5065 FFFD 6B56 FFFD 6C5F -End of Item 0558 - -Begin of Item 0559 - Format 1 - srcBegin = 7D6E - srcEnd = 7D79 - mappingOffset = 10AC - Mapping = - 5F7C FFFD FFFD 7756 5E6A 4B34 FFFD FFFD - 6F3E FFFD FFFD 4C35 -End of Item 0559 - -Begin of Item 055A - Format 2 - srcBegin = 7D7F - destBegin = 4F3D -End of Item 055A - -Begin of Item 055B - Format 1 - srcBegin = 7D8E - srcEnd = 7D8F - mappingOffset = 10B8 - Mapping = - 6F72 6237 -End of Item 055B - -Begin of Item 055C - Format 2 - srcBegin = 7D93 - destBegin = 4C68 -End of Item 055C - -Begin of Item 055D - Format 2 - srcBegin = 7D9C - destBegin = 707C -End of Item 055D - -Begin of Item 055E - Format 1 - srcBegin = 7DA0 - srcEnd = 7DA2 - mappingOffset = 10BA - Mapping = - 5660 FFFD 7146 -End of Item 055E - -Begin of Item 055F - Format 1 - srcBegin = 7DAC - srcEnd = 7DAD - mappingOffset = 10BD - Mapping = - 6238 6B2B -End of Item 055F - -Begin of Item 0560 - Format 1 - srcBegin = 7DB1 - srcEnd = 7DBF - mappingOffset = 10BF - Mapping = - 4B35 5851 FFFD 744E 7377 FFFD FFFD 5746 - FFFD 513B 772A FFFD 6D4A 5753 587A -End of Item 0560 - -Begin of Item 0561 - Format 1 - srcBegin = 7DC7 - srcEnd = 7DCB - mappingOffset = 10CE - Mapping = - 7645 FFFD FFFD 514C 5D7C -End of Item 0561 - -Begin of Item 0562 - Format 1 - srcBegin = 7DD6 - srcEnd = 7DE3 - mappingOffset = 10D3 - Mapping = - 5F7D FFFD 7965 FFFD 604A FFFD FFFD 727D - 5330 FFFD 7473 5A49 FFFD 665E -End of Item 0562 - -Begin of Item 0563 - Format 1 - srcBegin = 7DE8 - srcEnd = 7DEF - mappingOffset = 10E1 - Mapping = - 783A 6850 FFFD FFFD 587B FFFD FFFD 6A55 -End of Item 0563 - -Begin of Item 0564 - Format 2 - srcBegin = 7DF4 - destBegin = 5623 -End of Item 0564 - -Begin of Item 0565 - Format 2 - srcBegin = 7DFB - destBegin = 7646 -End of Item 0565 - -Begin of Item 0566 - Format 1 - srcBegin = 7E09 - srcEnd = 7E0A - mappingOffset = 10E9 - Mapping = - 725B 647C -End of Item 0566 - -Begin of Item 0567 - Format 2 - srcBegin = 7E15 - destBegin = 6832 -End of Item 0567 - -Begin of Item 0568 - Format 1 - srcBegin = 7E1B - srcEnd = 7E23 - mappingOffset = 10EB - Mapping = - 5A5A FFFD 725C 7B56 6932 FFFD 6E2D FFFD - 7A63 -End of Item 0568 - -Begin of Item 0569 - Format 1 - srcBegin = 7E2B - srcEnd = 7E31 - mappingOffset = 10F4 - Mapping = - 5C6E FFFD FFFD 756A 6660 FFFD 707D -End of Item 0569 - -Begin of Item 056A - Format 2 - srcBegin = 7E37 - destBegin = 572C -End of Item 056A - -Begin of Item 056B - Format 1 - srcBegin = 7E3D - srcEnd = 7E47 - mappingOffset = 10FB - Mapping = - 7545 6E60 FFFD FFFD 5B65 FFFD 5D5E FFFD - FFFD 5970 6923 -End of Item 056B - -Begin of Item 056C - Format 1 - srcBegin = 7E52 - srcEnd = 7E55 - mappingOffset = 1106 - Mapping = - 7179 FFFD 7244 604B -End of Item 056C - -Begin of Item 056D - Format 1 - srcBegin = 7E5E - srcEnd = 7E61 - mappingOffset = 110A - Mapping = - 6924 FFFD FFFD 6239 -End of Item 056D - -Begin of Item 056E - Format 1 - srcBegin = 7E69 - srcEnd = 7E70 - mappingOffset = 110E - Mapping = - 6331 7C6B 4D28 FFFD 4C36 FFFD FFFD 705B -End of Item 056E - -Begin of Item 056F - Format 1 - srcBegin = 7E79 - srcEnd = 7E7C - mappingOffset = 1116 - Mapping = - 663A FFFD FFFD 4D29 -End of Item 056F - -Begin of Item 0570 - Format 2 - srcBegin = 7E82 - destBegin = 7343 -End of Item 0570 - -Begin of Item 0571 - Format 1 - srcBegin = 7E8C - srcEnd = 7E8F - mappingOffset = 111A - Mapping = - 6159 FFFD FFFD 6F2B -End of Item 0571 - -Begin of Item 0572 - Format 1 - srcBegin = 7E93 - srcEnd = 7E9C - mappingOffset = 111E - Mapping = - 6745 FFFD FFFD 6069 FFFD 7345 FFFD FFFD - 5440 553F -End of Item 0572 - -Begin of Item 0573 - Format 1 - srcBegin = 7F36 - srcEnd = 7F3A - mappingOffset = 1128 - Mapping = - 5D2E FFFD 797C FFFD 4C40 -End of Item 0573 - -Begin of Item 0574 - Format 2 - srcBegin = 7F4C - destBegin = 6522 -End of Item 0574 - -Begin of Item 0575 - Format 2 - srcBegin = 7F50 - destBegin = 4E38 -End of Item 0575 - -Begin of Item 0576 - Format 1 - srcBegin = 7F54 - srcEnd = 7F55 - mappingOffset = 112D - Mapping = - 5852 7956 -End of Item 0576 - -Begin of Item 0577 - Format 1 - srcBegin = 7F6A - srcEnd = 7F79 - mappingOffset = 112F - Mapping = - 712A 4E51 FFFD FFFD 7647 FFFD 5B6B FFFD - 5F7E FFFD FFFD 5861 FFFD 7773 FFFD 5767 -End of Item 0577 - -Begin of Item 0578 - Format 1 - srcBegin = 7F85 - srcEnd = 7F8E - mappingOffset = 113F - Mapping = - 547E FFFD FFFD 513C FFFD 654F FFFD 4B36 - FFFD 5A38 -End of Item 0578 - -Begin of Item 0579 - Format 2 - srcBegin = 7F94 - destBegin = 4D44 -End of Item 0579 - -Begin of Item 057A - Format 2 - srcBegin = 7F9A - destBegin = 563E -End of Item 057A - -Begin of Item 057B - Format 2 - srcBegin = 7F9E - destBegin = 623A -End of Item 057B - -Begin of Item 057C - Format 2 - srcBegin = 7FA4 - destBegin = 4F58 -End of Item 057C - -Begin of Item 057D - Format 1 - srcBegin = 7FA8 - srcEnd = 7FA9 - mappingOffset = 1149 - Mapping = - 604C 6B79 -End of Item 057D - -Begin of Item 057E - Format 2 - srcBegin = 7FB2 - destBegin = 7D7D -End of Item 057E - -Begin of Item 057F - Format 1 - srcBegin = 7FB8 - srcEnd = 7FB9 - mappingOffset = 114B - Mapping = - 5768 4B58 -End of Item 057F - -Begin of Item 0580 - Format 2 - srcBegin = 7FBD - destBegin = 6962 -End of Item 0580 - -Begin of Item 0581 - Format 2 - srcBegin = 7FC1 - destBegin = 683A -End of Item 0581 - -Begin of Item 0582 - Format 2 - srcBegin = 7FC5 - destBegin = 6347 -End of Item 0582 - -Begin of Item 0583 - Format 1 - srcBegin = 7FCA - srcEnd = 7FCE - mappingOffset = 114D - Mapping = - 6C4D FFFD 6C4E FFFD 563F -End of Item 0583 - -Begin of Item 0584 - Format 1 - srcBegin = 7FD2 - srcEnd = 7FD5 - mappingOffset = 1152 - Mapping = - 6327 FFFD 5F56 7D68 -End of Item 0584 - -Begin of Item 0585 - Format 1 - srcBegin = 7FDF - srcEnd = 7FE1 - mappingOffset = 1156 - Mapping = - 6E61 7628 5D7D -End of Item 0585 - -Begin of Item 0586 - Format 1 - srcBegin = 7FE9 - srcEnd = 7FEB - mappingOffset = 1159 - Mapping = - 783B FFFD 6851 -End of Item 0586 - -Begin of Item 0587 - Format 2 - srcBegin = 7FF0 - destBegin = 7957 -End of Item 0587 - -Begin of Item 0588 - Format 1 - srcBegin = 7FF9 - srcEnd = 7FFC - mappingOffset = 115C - Mapping = - 4E6E FFFD FFFD 6C4F -End of Item 0588 - -Begin of Item 0589 - Format 1 - srcBegin = 8000 - srcEnd = 800C - mappingOffset = 1160 - Mapping = - 6925 5655 FFFD 4D45 FFFD 6D3A 513D FFFD - FFFD 4F3E FFFD FFFD 6C3B -End of Item 0589 - -Begin of Item 058A - Format 2 - srcBegin = 8010 - destBegin = 5231 -End of Item 058A - -Begin of Item 058B - Format 1 - srcBegin = 8015 - srcEnd = 8018 - mappingOffset = 116D - Mapping = - 4C69 FFFD 5944 697C -End of Item 058B - -Begin of Item 058C - Format 2 - srcBegin = 802D - destBegin = 513E -End of Item 058C - -Begin of Item 058D - Format 1 - srcBegin = 8033 - srcEnd = 8036 - mappingOffset = 1171 - Mapping = - 6C3C FFFD FFFD 652D -End of Item 058D - -Begin of Item 058E - Format 1 - srcBegin = 803D - srcEnd = 803F - mappingOffset = 1175 - Mapping = - 7730 FFFD 4C6A -End of Item 058E - -Begin of Item 058F - Format 1 - srcBegin = 8043 - srcEnd = 8046 - mappingOffset = 1178 - Mapping = - 5344 FFFD FFFD 5640 -End of Item 058F - -Begin of Item 0590 - Format 2 - srcBegin = 804A - destBegin = 567D -End of Item 0590 - -Begin of Item 0591 - Format 1 - srcBegin = 8056 - srcEnd = 805A - mappingOffset = 117C - Mapping = - 6121 FFFD 5E3D FFFD 7629 -End of Item 0591 - -Begin of Item 0592 - Format 2 - srcBegin = 805E - destBegin = 5A24 -End of Item 0592 - -Begin of Item 0593 - Format 1 - srcBegin = 806F - srcEnd = 8073 - mappingOffset = 1181 - Mapping = - 5624 7546 FFFD 6122 6946 -End of Item 0593 - -Begin of Item 0594 - Format 2 - srcBegin = 8077 - destBegin = 7245 -End of Item 0594 - -Begin of Item 0595 - Format 1 - srcBegin = 807D - srcEnd = 807F - mappingOffset = 1186 - Mapping = - 7469 566C 6B53 -End of Item 0595 - -Begin of Item 0596 - Format 1 - srcBegin = 8084 - srcEnd = 808C - mappingOffset = 1189 - Mapping = - 6C3D 625C 5E6B 705C FFFD 6B3F FFFD 574E - 513F -End of Item 0596 - -Begin of Item 0597 - Format 2 - srcBegin = 8096 - destBegin = 752B -End of Item 0597 - -Begin of Item 0598 - Format 1 - srcBegin = 809B - srcEnd = 809D - mappingOffset = 1192 - Mapping = - 797D FFFD 4A5C -End of Item 0598 - -Begin of Item 0599 - Format 1 - srcBegin = 80A1 - srcEnd = 80A5 - mappingOffset = 1195 - Mapping = - 4D46 7236 FFFD FFFD 5D7E -End of Item 0599 - -Begin of Item 059A - Format 1 - srcBegin = 80A9 - srcEnd = 80AA - mappingOffset = 119A - Mapping = - 4C37 5B38 -End of Item 059A - -Begin of Item 059B - Format 1 - srcBegin = 80AF - srcEnd = 80B4 - mappingOffset = 119C - Mapping = - 5069 FFFD 4E5D 6B40 FFFD 7D22 -End of Item 059B - -Begin of Item 059C - Format 2 - srcBegin = 80BA - destBegin = 784B -End of Item 059C - -Begin of Item 059D - Format 1 - srcBegin = 80C3 - srcEnd = 80C4 - mappingOffset = 11A2 - Mapping = - 6A56 7130 -End of Item 059D - -Begin of Item 059E - Format 1 - srcBegin = 80CC - srcEnd = 80CE - mappingOffset = 11A4 - Mapping = - 5B4E FFFD 7743 -End of Item 059E - -Begin of Item 059F - Format 1 - srcBegin = 80DA - srcEnd = 80E5 - mappingOffset = 11A7 - Mapping = - 5B4F 4B24 FFFD FFFD 7860 FFFD FFFD 7B57 - FFFD FFFD 6B4A 6021 -End of Item 059F - -Begin of Item 05A0 - Format 1 - srcBegin = 80F1 - srcEnd = 80F4 - mappingOffset = 11B3 - Mapping = - 4E4D FFFD FFFD 545C -End of Item 05A0 - -Begin of Item 05A1 - Format 2 - srcBegin = 80F8 - destBegin = 7D58 -End of Item 05A1 - -Begin of Item 05A2 - Format 2 - srcBegin = 80FD - destBegin = 5276 -End of Item 05A2 - -Begin of Item 05A3 - Format 1 - srcBegin = 8102 - srcEnd = 810A - mappingOffset = 11B7 - Mapping = - 7237 FFFD FFFD 7A76 762A 7A77 5866 FFFD - 7431 -End of Item 05A3 - -Begin of Item 05A4 - Format 1 - srcBegin = 8118 - srcEnd = 811B - mappingOffset = 11C0 - Mapping = - 6852 FFFD 4A45 4C6B -End of Item 05A4 - -Begin of Item 05A5 - Format 2 - srcBegin = 8123 - destBegin = 626E -End of Item 05A5 - -Begin of Item 05A6 - Format 1 - srcBegin = 8129 - srcEnd = 812B - mappingOffset = 11C4 - Mapping = - 623B FFFD 772D -End of Item 05A6 - -Begin of Item 05A7 - Format 2 - srcBegin = 812F - destBegin = 7861 -End of Item 05A7 - -Begin of Item 05A8 - Format 2 - srcBegin = 8139 - destBegin = 736C -End of Item 05A8 - -Begin of Item 05A9 - Format 2 - srcBegin = 813E - destBegin = 5E21 -End of Item 05A9 - -Begin of Item 05AA - Format 1 - srcBegin = 814B - srcEnd = 8155 - mappingOffset = 11C7 - Mapping = - 647D FFFD FFFD 636C FFFD 5D2F 5D30 FFFD - FFFD 4B37 6853 -End of Item 05AA - -Begin of Item 05AB - Format 1 - srcBegin = 8165 - srcEnd = 8166 - mappingOffset = 11D2 - Mapping = - 6123 5260 -End of Item 05AB - -Begin of Item 05AC - Format 2 - srcBegin = 816B - destBegin = 707E -End of Item 05AC - -Begin of Item 05AD - Format 1 - srcBegin = 8170 - srcEnd = 8171 - mappingOffset = 11D4 - Mapping = - 6926 4B72 -End of Item 05AD - -Begin of Item 05AE - Format 1 - srcBegin = 8178 - srcEnd = 817A - mappingOffset = 11D6 - Mapping = - 6D73 5C59 604D -End of Item 05AE - -Begin of Item 05AF - Format 1 - srcBegin = 817F - srcEnd = 8180 - mappingOffset = 11D9 - Mapping = - 775A 5B39 -End of Item 05AF - -Begin of Item 05B0 - Format 1 - srcBegin = 8188 - srcEnd = 818A - mappingOffset = 11DB - Mapping = - 4C2E FFFD 5A5B -End of Item 05B0 - -Begin of Item 05B1 - Format 2 - srcBegin = 818F - destBegin = 4D47 -End of Item 05B1 - -Begin of Item 05B2 - Format 1 - srcBegin = 819A - srcEnd = 81A3 - mappingOffset = 11DE - Mapping = - 5D31 FFFD 582F 6323 FFFD FFFD 4E6F FFFD - FFFD 7273 -End of Item 05B2 - -Begin of Item 05B3 - Format 2 - srcBegin = 81A8 - destBegin = 7833 -End of Item 05B3 - -Begin of Item 05B4 - Format 1 - srcBegin = 81B3 - srcEnd = 81B5 - mappingOffset = 11E8 - Mapping = - 604E FFFD 757D -End of Item 05B4 - -Begin of Item 05B5 - Format 1 - srcBegin = 81BA - srcEnd = 81C2 - mappingOffset = 11EB - Mapping = - 6B6C FFFD FFFD 5345 7C6C 525B 546B FFFD - 5E22 -End of Item 05B5 - -Begin of Item 05B6 - Format 2 - srcBegin = 81C6 - destBegin = 6566 -End of Item 05B6 - -Begin of Item 05B7 - Format 2 - srcBegin = 81CD - destBegin = 7030 -End of Item 05B7 - -Begin of Item 05B8 - Format 2 - srcBegin = 81D8 - destBegin = 5544 -End of Item 05B8 - -Begin of Item 05B9 - Format 2 - srcBegin = 81DF - destBegin = 6D74 -End of Item 05B9 - -Begin of Item 05BA - Format 1 - srcBegin = 81E3 - srcEnd = 81ED - mappingOffset = 11F4 - Mapping = - 636D FFFD 6842 FFFD 6D75 577C FFFD 6D3B - FFFD FFFD 762B -End of Item 05BA - -Begin of Item 05BB - Format 1 - srcBegin = 81F3 - srcEnd = 81F4 - mappingOffset = 11FF - Mapping = - 7238 7648 -End of Item 05BB - -Begin of Item 05BC - Format 1 - srcBegin = 81FA - srcEnd = 81FE - mappingOffset = 1201 - Mapping = - 5366 725D 4F3F FFFD 6B2C -End of Item 05BC - -Begin of Item 05BD - Format 1 - srcBegin = 8205 - srcEnd = 820D - mappingOffset = 1206 - Mapping = - 4F40 FFFD 6628 7D69 FFFD 4F41 FFFD 605F - 5E6C -End of Item 05BD - -Begin of Item 05BE - Format 2 - srcBegin = 8212 - destBegin = 6022 -End of Item 05BE - -Begin of Item 05BF - Format 1 - srcBegin = 821B - srcEnd = 8221 - mappingOffset = 120F - Mapping = - 743F 626F FFFD 5971 7147 FFFD 4B38 -End of Item 05BF - -Begin of Item 05C0 - Format 1 - srcBegin = 822A - srcEnd = 822C - mappingOffset = 1216 - Mapping = - 797E 5B3A 5A75 -End of Item 05C0 - -Begin of Item 05C1 - Format 1 - srcBegin = 8235 - srcEnd = 8239 - mappingOffset = 1219 - Mapping = - 766C 5A5C 7A64 FFFD 604F -End of Item 05C1 - -Begin of Item 05C2 - Format 2 - srcBegin = 8240 - destBegin = 5D32 -End of Item 05C2 - -Begin of Item 05C3 - Format 1 - srcBegin = 8245 - srcEnd = 8247 - mappingOffset = 121E - Mapping = - 6629 FFFD 6F73 -End of Item 05C3 - -Begin of Item 05C4 - Format 2 - srcBegin = 8259 - destBegin = 736D -End of Item 05C4 - -Begin of Item 05C5 - Format 1 - srcBegin = 8264 - srcEnd = 8266 - mappingOffset = 1221 - Mapping = - 6B7A FFFD 7966 -End of Item 05C5 - -Begin of Item 05C6 - Format 1 - srcBegin = 826E - srcEnd = 8272 - mappingOffset = 1224 - Mapping = - 4A5D 555E FFFD 4A5E 5F64 -End of Item 05C6 - -Begin of Item 05C7 - Format 1 - srcBegin = 8276 - srcEnd = 8278 - mappingOffset = 1229 - Mapping = - 667D FFFD 752C -End of Item 05C7 - -Begin of Item 05C8 - Format 2 - srcBegin = 827E - destBegin = 6475 -End of Item 05C8 - -Begin of Item 05C9 - Format 1 - srcBegin = 828B - srcEnd = 828E - mappingOffset = 122C - Mapping = - 6963 FFFD 6D4B 4F64 -End of Item 05C9 - -Begin of Item 05CA - Format 2 - srcBegin = 8292 - destBegin = 5853 -End of Item 05CA - -Begin of Item 05CB - Format 1 - srcBegin = 8299 - srcEnd = 829F - mappingOffset = 1230 - Mapping = - 5D33 546C FFFD FFFD 7239 FFFD 5F37 -End of Item 05CB - -Begin of Item 05CC - Format 1 - srcBegin = 82A5 - srcEnd = 82B3 - mappingOffset = 1237 - Mapping = - 4B4E 7B58 FFFD FFFD 5059 FFFD FFFD 5D52 - 7774 675C 6425 FFFD 7C23 FFFD 5B3B -End of Item 05CC - -Begin of Item 05CD - Format 1 - srcBegin = 82B7 - srcEnd = 82BF - mappingOffset = 1246 - Mapping = - 723A 697D 504A FFFD 7556 5945 6434 FFFD - 6D27 -End of Item 05CD - -Begin of Item 05CE - Format 1 - srcBegin = 82D1 - srcEnd = 82D7 - mappingOffset = 124F - Mapping = - 6A3D 667E FFFD 7744 752D FFFD 5960 -End of Item 05CE - -Begin of Item 05CF - Format 1 - srcBegin = 82DB - srcEnd = 82E1 - mappingOffset = 1256 - Mapping = - 4A34 FFFD FFFD 7862 4F42 FFFD 6C3E -End of Item 05CF - -Begin of Item 05D0 - Format 1 - srcBegin = 82E5 - srcEnd = 82E7 - mappingOffset = 125D - Mapping = - 6534 4D48 6E48 -End of Item 05D0 - -Begin of Item 05D1 - Format 2 - srcBegin = 82F1 - destBegin = 6748 -End of Item 05D1 - -Begin of Item 05D2 - Format 1 - srcBegin = 82FD - srcEnd = 8305 - mappingOffset = 1260 - Mapping = - 4D49 7937 FFFD FFFD 7168 5972 5B75 4A35 - 5946 -End of Item 05D2 - -Begin of Item 05D3 - Format 2 - srcBegin = 8309 - destBegin = 5849 -End of Item 05D3 - -Begin of Item 05D4 - Format 2 - srcBegin = 8317 - destBegin = 592B -End of Item 05D4 - -Begin of Item 05D5 - Format 1 - srcBegin = 8328 - srcEnd = 832B - mappingOffset = 1269 - Mapping = - 6D3C FFFD FFFD 5854 -End of Item 05D5 - -Begin of Item 05D6 - Format 1 - srcBegin = 832F - srcEnd = 8339 - mappingOffset = 126D - Mapping = - 5C5A FFFD 623C FFFD FFFD 7C6D 6C60 527E - FFFD 6947 662A -End of Item 05D6 - -Begin of Item 05D7 - Format 2 - srcBegin = 8340 - destBegin = 6270 -End of Item 05D7 - -Begin of Item 05D8 - Format 1 - srcBegin = 8347 - srcEnd = 834A - mappingOffset = 1278 - Mapping = - 7A3B FFFD 752E 7B2A -End of Item 05D8 - -Begin of Item 05D9 - Format 1 - srcBegin = 834F - srcEnd = 8352 - mappingOffset = 127C - Mapping = - 6C7B FFFD 6C3F 7C58 -End of Item 05D9 - -Begin of Item 05DA - Format 2 - srcBegin = 8373 - destBegin = 5465 -End of Item 05DA - -Begin of Item 05DB - Format 2 - srcBegin = 8377 - destBegin = 7943 -End of Item 05DB - -Begin of Item 05DC - Format 2 - srcBegin = 837B - destBegin = 6E62 -End of Item 05DC - -Begin of Item 05DD - Format 1 - srcBegin = 8389 - srcEnd = 838A - mappingOffset = 1280 - Mapping = - 5769 6D76 -End of Item 05DD - -Begin of Item 05DE - Format 2 - srcBegin = 838E - destBegin = 5E6D -End of Item 05DE - -Begin of Item 05DF - Format 1 - srcBegin = 8396 - srcEnd = 8398 - mappingOffset = 1282 - Mapping = - 4C6C FFFD 636E -End of Item 05DF - -Begin of Item 05E0 - Format 2 - srcBegin = 839E - destBegin = 6854 -End of Item 05E0 - -Begin of Item 05E1 - Format 2 - srcBegin = 83A2 - destBegin = 7A78 -End of Item 05E1 - -Begin of Item 05E2 - Format 1 - srcBegin = 83A9 - srcEnd = 83AB - mappingOffset = 1285 - Mapping = - 5D34 6435 5830 -End of Item 05E2 - -Begin of Item 05E3 - Format 2 - srcBegin = 83BD - destBegin = 5855 -End of Item 05E3 - -Begin of Item 05E4 - Format 2 - srcBegin = 83C1 - destBegin = 746A -End of Item 05E4 - -Begin of Item 05E5 - Format 2 - srcBegin = 83C5 - destBegin = 4E39 -End of Item 05E5 - -Begin of Item 05E6 - Format 1 - srcBegin = 83C9 - srcEnd = 83CC - mappingOffset = 1288 - Mapping = - 5661 4F52 FFFD 5036 -End of Item 05E6 - -Begin of Item 05E7 - Format 1 - srcBegin = 83D3 - srcEnd = 83D6 - mappingOffset = 128C - Mapping = - 4E22 FFFD FFFD 736E -End of Item 05E7 - -Begin of Item 05E8 - Format 2 - srcBegin = 83DC - destBegin = 7378 -End of Item 05E8 - -Begin of Item 05E9 - Format 1 - srcBegin = 83E9 - srcEnd = 83EB - mappingOffset = 1290 - Mapping = - 5C4C FFFD 504B -End of Item 05E9 - -Begin of Item 05EA - Format 1 - srcBegin = 83EF - srcEnd = 83F4 - mappingOffset = 1293 - Mapping = - 7C24 4D4A 5754 5E23 FFFD 6460 -End of Item 05EA - -Begin of Item 05EB - Format 2 - srcBegin = 83F9 - destBegin = 6E49 -End of Item 05EB - -Begin of Item 05EC - Format 2 - srcBegin = 83FD - destBegin = 625D -End of Item 05EC - -Begin of Item 05ED - Format 1 - srcBegin = 8403 - srcEnd = 8404 - mappingOffset = 1299 - Mapping = - 757E 542C -End of Item 05ED - -Begin of Item 05EE - Format 1 - srcBegin = 840A - srcEnd = 840E - mappingOffset = 129B - Mapping = - 5551 FFFD 5870 7843 6A57 -End of Item 05EE - -Begin of Item 05EF - Format 1 - srcBegin = 8429 - srcEnd = 842C - mappingOffset = 12A0 - Mapping = - 7557 FFFD FFFD 583F -End of Item 05EF - -Begin of Item 05F0 - Format 2 - srcBegin = 8431 - destBegin = 7D40 -End of Item 05F0 - -Begin of Item 05F1 - Format 2 - srcBegin = 8438 - destBegin = 6B2D -End of Item 05F1 - -Begin of Item 05F2 - Format 2 - srcBegin = 843D - destBegin = 552A -End of Item 05F2 - -Begin of Item 05F3 - Format 2 - srcBegin = 8449 - destBegin = 6728 -End of Item 05F3 - -Begin of Item 05F4 - Format 2 - srcBegin = 8457 - destBegin = 6E4A -End of Item 05F4 - -Begin of Item 05F5 - Format 2 - srcBegin = 845B - destBegin = 4A67 -End of Item 05F5 - -Begin of Item 05F6 - Format 1 - srcBegin = 8461 - srcEnd = 8466 - mappingOffset = 12A4 - Mapping = - 7863 FFFD 545D FFFD FFFD 6A58 -End of Item 05F6 - -Begin of Item 05F7 - Format 1 - srcBegin = 846B - srcEnd = 846F - mappingOffset = 12AA - Mapping = - 7B59 6D77 FFFD FFFD 6535 -End of Item 05F7 - -Begin of Item 05F8 - Format 2 - srcBegin = 8475 - destBegin = 502D -End of Item 05F8 - -Begin of Item 05F9 - Format 2 - srcBegin = 847A - destBegin = 7171 -End of Item 05F9 - -Begin of Item 05FA - Format 2 - srcBegin = 8490 - destBegin = 623D -End of Item 05FA - -Begin of Item 05FB - Format 2 - srcBegin = 8494 - destBegin = 6348 -End of Item 05FB - -Begin of Item 05FC - Format 1 - srcBegin = 8499 - srcEnd = 849C - mappingOffset = 12AF - Mapping = - 5955 FFFD FFFD 5F2A -End of Item 05FC - -Begin of Item 05FD - Format 2 - srcBegin = 84A1 - destBegin = 5B3C -End of Item 05FD - -Begin of Item 05FE - Format 2 - srcBegin = 84B2 - destBegin = 7864 -End of Item 05FE - -Begin of Item 05FF - Format 1 - srcBegin = 84B8 - srcEnd = 84CD - mappingOffset = 12B3 - Mapping = - 717A FFFD FFFD 6536 736F FFFD FFFD 7B5A - 6160 FFFD 592C FFFD 756B FFFD 6036 FFFD - FFFD 6948 FFFD 4B4F FFFD 6349 -End of Item 05FF - -Begin of Item 0600 - Format 2 - srcBegin = 84D1 - destBegin = 5E6E -End of Item 0600 - -Begin of Item 0601 - Format 2 - srcBegin = 84DA - destBegin = 623E -End of Item 0601 - -Begin of Item 0602 - Format 1 - srcBegin = 84EC - srcEnd = 84EE - mappingOffset = 12C9 - Mapping = - 5C6F FFFD 5625 -End of Item 0602 - -Begin of Item 0603 - Format 2 - srcBegin = 84F4 - destBegin = 6271 -End of Item 0603 - -Begin of Item 0604 - Format 2 - srcBegin = 84FC - destBegin = 567E -End of Item 0604 - -Begin of Item 0605 - Format 1 - srcBegin = 8511 - srcEnd = 851A - mappingOffset = 12CC - Mapping = - 5921 FFFD 5840 5C5B FFFD FFFD 6D3D 5F38 - FFFD 6A25 -End of Item 0605 - -Begin of Item 0606 - Format 1 - srcBegin = 851E - srcEnd = 8525 - mappingOffset = 12D6 - Mapping = - 572D FFFD FFFD 7379 FFFD 6D78 FFFD 7547 -End of Item 0606 - -Begin of Item 0607 - Format 1 - srcBegin = 852C - srcEnd = 852F - mappingOffset = 12DE - Mapping = - 614A 6B63 FFFD 725E -End of Item 0607 - -Begin of Item 0608 - Format 1 - srcBegin = 853D - srcEnd = 8543 - mappingOffset = 12E2 - Mapping = - 784C FFFD 6A59 FFFD 5346 FFFD 5B66 -End of Item 0608 - -Begin of Item 0609 - Format 2 - srcBegin = 8549 - destBegin = 752F -End of Item 0609 - -Begin of Item 060A - Format 2 - srcBegin = 854E - destBegin = 4E70 -End of Item 060A - -Begin of Item 060B - Format 2 - srcBegin = 8553 - destBegin = 697E -End of Item 060B - -Begin of Item 060C - Format 2 - srcBegin = 8559 - destBegin = 7B36 -End of Item 060C - -Begin of Item 060D - Format 2 - srcBegin = 8563 - destBegin = 6272 -End of Item 060D - -Begin of Item 060E - Format 1 - srcBegin = 8568 - srcEnd = 856D - mappingOffset = 12E9 - Mapping = - 4F72 7739 5973 FFFD FFFD 614B -End of Item 060E - -Begin of Item 060F - Format 1 - srcBegin = 8584 - srcEnd = 8587 - mappingOffset = 12EF - Mapping = - 5A5D FFFD FFFD 5A39 -End of Item 060F - -Begin of Item 0610 - Format 1 - srcBegin = 858F - srcEnd = 8594 - mappingOffset = 12F3 - Mapping = - 6B7B FFFD 4B39 FFFD FFFD 6D79 -End of Item 0610 - -Begin of Item 0611 - Format 2 - srcBegin = 859B - destBegin = 6060 -End of Item 0611 - -Begin of Item 0612 - Format 1 - srcBegin = 85A6 - srcEnd = 85AA - mappingOffset = 12F9 - Mapping = - 7440 FFFD 7D3C 5F31 636F -End of Item 0612 - -Begin of Item 0613 - Format 1 - srcBegin = 85AF - srcEnd = 85B0 - mappingOffset = 12FE - Mapping = - 6023 7D39 -End of Item 0613 - -Begin of Item 0614 - Format 2 - srcBegin = 85BA - destBegin = 7031 -End of Item 0614 - -Begin of Item 0615 - Format 2 - srcBegin = 85C1 - destBegin = 4D4B -End of Item 0615 - -Begin of Item 0616 - Format 2 - srcBegin = 85C9 - destBegin = 6D3E -End of Item 0616 - -Begin of Item 0617 - Format 1 - srcBegin = 85CD - srcEnd = 85CF - mappingOffset = 1300 - Mapping = - 5540 6370 6D7A -End of Item 0617 - -Begin of Item 0618 - Format 2 - srcBegin = 85D5 - destBegin = 6964 -End of Item 0618 - -Begin of Item 0619 - Format 1 - srcBegin = 85DC - srcEnd = 85DD - mappingOffset = 1303 - Mapping = - 556D 675D -End of Item 0619 - -Begin of Item 061A - Format 1 - srcBegin = 85E4 - srcEnd = 85E5 - mappingOffset = 1305 - Mapping = - 5476 6537 -End of Item 061A - -Begin of Item 061B - Format 1 - srcBegin = 85E9 - srcEnd = 85EA - mappingOffset = 1307 - Mapping = - 5B67 623F -End of Item 061B - -Begin of Item 061C - Format 1 - srcBegin = 85F7 - srcEnd = 85FB - mappingOffset = 1309 - Mapping = - 6E4B FFFD FFFD 5774 705D -End of Item 061C - -Begin of Item 061D - Format 1 - srcBegin = 85FF - srcEnd = 8602 - mappingOffset = 130E - Mapping = - 4E2B FFFD FFFD 675E -End of Item 061D - -Begin of Item 061E - Format 1 - srcBegin = 8606 - srcEnd = 860A - mappingOffset = 1312 - Mapping = - 5656 614C FFFD FFFD 6833 -End of Item 061E - -Begin of Item 061F - Format 1 - srcBegin = 8616 - srcEnd = 861A - mappingOffset = 1317 - Mapping = - 656E 5C22 FFFD FFFD 6050 -End of Item 061F - -Begin of Item 0620 - Format 2 - srcBegin = 862D - destBegin = 5535 -End of Item 0620 - -Begin of Item 0621 - Format 2 - srcBegin = 863F - destBegin = 5521 -End of Item 0621 - -Begin of Item 0622 - Format 1 - srcBegin = 864E - srcEnd = 8650 - mappingOffset = 131C - Mapping = - 7B5B FFFD 794B -End of Item 0622 - -Begin of Item 0623 - Format 1 - srcBegin = 8654 - srcEnd = 8655 - mappingOffset = 131F - Mapping = - 4B73 7425 -End of Item 0623 - -Begin of Item 0624 - Format 1 - srcBegin = 865B - srcEnd = 865F - mappingOffset = 1321 - Mapping = - 7A48 5657 FFFD 6965 7B5C -End of Item 0624 - -Begin of Item 0625 - Format 2 - srcBegin = 8667 - destBegin = 7D50 -End of Item 0625 - -Begin of Item 0626 - Format 2 - srcBegin = 8679 - destBegin = 7B76 -End of Item 0626 - -Begin of Item 0627 - Format 1 - srcBegin = 868A - srcEnd = 868C - mappingOffset = 1326 - Mapping = - 5A25 FFFD 5B3D -End of Item 0627 - -Begin of Item 0628 - Format 2 - srcBegin = 8693 - destBegin = 6C62 -End of Item 0628 - -Begin of Item 0629 - Format 1 - srcBegin = 86A3 - srcEnd = 86A4 - mappingOffset = 1329 - Mapping = - 4D77 705E -End of Item 0629 - -Begin of Item 062A - Format 2 - srcBegin = 86A9 - destBegin = 7649 -End of Item 062A - -Begin of Item 062B - Format 2 - srcBegin = 86C7 - destBegin = 5E6F -End of Item 062B - -Begin of Item 062C - Format 2 - srcBegin = 86CB - destBegin = 5331 -End of Item 062C - -Begin of Item 062D - Format 2 - srcBegin = 86D4 - destBegin = 7C6E -End of Item 062D - -Begin of Item 062E - Format 1 - srcBegin = 86D9 - srcEnd = 86DB - mappingOffset = 132B - Mapping = - 6843 FFFD 7148 -End of Item 062E - -Begin of Item 062F - Format 2 - srcBegin = 86DF - destBegin = 4E71 -End of Item 062F - -Begin of Item 0630 - Format 2 - srcBegin = 86E4 - destBegin = 796D -End of Item 0630 - -Begin of Item 0631 - Format 2 - srcBegin = 86ED - destBegin = 7274 -End of Item 0631 - -Begin of Item 0632 - Format 1 - srcBegin = 86FE - srcEnd = 8703 - mappingOffset = 132E - Mapping = - 6436 FFFD 7539 FFFD 5C70 6371 -End of Item 0632 - -Begin of Item 0633 - Format 2 - srcBegin = 8708 - destBegin = 6825 -End of Item 0633 - -Begin of Item 0634 - Format 1 - srcBegin = 8718 - srcEnd = 871C - mappingOffset = 1334 - Mapping = - 723B FFFD 5E24 FFFD 5A4C -End of Item 0634 - -Begin of Item 0635 - Format 2 - srcBegin = 874E - destBegin = 4A69 -End of Item 0635 - -Begin of Item 0636 - Format 1 - srcBegin = 8755 - srcEnd = 8757 - mappingOffset = 1339 - Mapping = - 635A FFFD 7C59 -End of Item 0636 - -Begin of Item 0637 - Format 2 - srcBegin = 875F - destBegin = 6A5A -End of Item 0637 - -Begin of Item 0638 - Format 1 - srcBegin = 8766 - srcEnd = 8768 - mappingOffset = 133C - Mapping = - 7944 FFFD 6324 -End of Item 0638 - -Begin of Item 0639 - Format 1 - srcBegin = 8774 - srcEnd = 8778 - mappingOffset = 133F - Mapping = - 7B5D FFFD 6F4A FFFD 6844 -End of Item 0639 - -Begin of Item 063A - Format 2 - srcBegin = 8782 - destBegin = 554C -End of Item 063A - -Begin of Item 063B - Format 2 - srcBegin = 878D - destBegin = 6B57 -End of Item 063B - -Begin of Item 063C - Format 1 - srcBegin = 879F - srcEnd = 87A2 - mappingOffset = 1344 - Mapping = - 592D FFFD FFFD 7B2B -End of Item 063C - -Begin of Item 063D - Format 2 - srcBegin = 87B3 - destBegin = 5359 -End of Item 063D - -Begin of Item 063E - Format 2 - srcBegin = 87BA - destBegin = 5522 -End of Item 063E - -Begin of Item 063F - Format 2 - srcBegin = 87C4 - destBegin = 765E -End of Item 063F - -Begin of Item 0640 - Format 2 - srcBegin = 87E0 - destBegin = 5A76 -End of Item 0640 - -Begin of Item 0641 - Format 1 - srcBegin = 87EC - srcEnd = 87F2 - mappingOffset = 1348 - Mapping = - 6051 FFFD FFFD 6928 FFFD FFFD 7579 -End of Item 0641 - -Begin of Item 0642 - Format 1 - srcBegin = 87F9 - srcEnd = 87FE - mappingOffset = 134F - Mapping = - 7A2F FFFD 6B7C FFFD FFFD 606A -End of Item 0642 - -Begin of Item 0643 - Format 2 - srcBegin = 8805 - destBegin = 6332 -End of Item 0643 - -Begin of Item 0644 - Format 1 - srcBegin = 881F - srcEnd = 8823 - mappingOffset = 1355 - Mapping = - 5545 FFFD FFFD 7163 556E -End of Item 0644 - -Begin of Item 0645 - Format 2 - srcBegin = 8831 - destBegin = 4D4C -End of Item 0645 - -Begin of Item 0646 - Format 2 - srcBegin = 8836 - destBegin = 6D59 -End of Item 0646 - -Begin of Item 0647 - Format 2 - srcBegin = 883B - destBegin = 5841 -End of Item 0647 - -Begin of Item 0648 - Format 2 - srcBegin = 8840 - destBegin = 7A6C -End of Item 0648 - -Begin of Item 0649 - Format 2 - srcBegin = 8846 - destBegin = 716B -End of Item 0649 - -Begin of Item 064A - Format 1 - srcBegin = 884C - srcEnd = 884D - mappingOffset = 135A - Mapping = - 7A3C 6662 -End of Item 064A - -Begin of Item 064B - Format 1 - srcBegin = 8852 - srcEnd = 8853 - mappingOffset = 135C - Mapping = - 7A65 627A -End of Item 064B - -Begin of Item 064C - Format 1 - srcBegin = 8857 - srcEnd = 885D - mappingOffset = 135E - Mapping = - 4A36 FFFD 6437 FFFD 6A5B FFFD 757A -End of Item 064C - -Begin of Item 064D - Format 1 - srcBegin = 8861 - srcEnd = 8863 - mappingOffset = 1365 - Mapping = - 7B2C 4F43 6B7D -End of Item 064D - -Begin of Item 064E - Format 1 - srcBegin = 8868 - srcEnd = 886B - mappingOffset = 1368 - Mapping = - 787A FFFD FFFD 5F39 -End of Item 064E - -Begin of Item 064F - Format 1 - srcBegin = 8870 - srcEnd = 8872 - mappingOffset = 136C - Mapping = - 6171 FFFD 5224 -End of Item 064F - -Begin of Item 0650 - Format 2 - srcBegin = 8877 - destBegin = 757B -End of Item 0650 - -Begin of Item 0651 - Format 1 - srcBegin = 887E - srcEnd = 8882 - mappingOffset = 136F - Mapping = - 505A 505B FFFD 6A3E 5931 -End of Item 0651 - -Begin of Item 0652 - Format 1 - srcBegin = 8888 - srcEnd = 888D - mappingOffset = 1374 - Mapping = - 4A37 FFFD FFFD 5367 FFFD 7865 -End of Item 0652 - -Begin of Item 0653 - Format 2 - srcBegin = 8892 - destBegin = 5332 -End of Item 0653 - -Begin of Item 0654 - Format 1 - srcBegin = 8896 - srcEnd = 8897 - mappingOffset = 137A - Mapping = - 6240 725F -End of Item 0654 - -Begin of Item 0655 - Format 2 - srcBegin = 889E - destBegin = 4D65 -End of Item 0655 - -Begin of Item 0656 - Format 2 - srcBegin = 88AB - destBegin = 792C -End of Item 0656 - -Begin of Item 0657 - Format 2 - srcBegin = 88B4 - destBegin = 4D4D -End of Item 0657 - -Begin of Item 0658 - Format 1 - srcBegin = 88C1 - srcEnd = 88C2 - mappingOffset = 137C - Mapping = - 6E2E 562E -End of Item 0658 - -Begin of Item 0659 - Format 2 - srcBegin = 88CF - destBegin = 576A -End of Item 0659 - -Begin of Item 065A - Format 1 - srcBegin = 88D4 - srcEnd = 88D5 - mappingOffset = 137E - Mapping = - 6760 6B2E -End of Item 065A - -Begin of Item 065B - Format 1 - srcBegin = 88D9 - srcEnd = 88E1 - mappingOffset = 1380 - Mapping = - 4F59 FFFD FFFD 5C4D 6D7B FFFD 5E70 FFFD - 576B -End of Item 065B - -Begin of Item 065C - Format 2 - srcBegin = 88E8 - destBegin = 5E25 -End of Item 065C - -Begin of Item 065D - Format 1 - srcBegin = 88F3 - srcEnd = 88F8 - mappingOffset = 1389 - Mapping = - 5F57 5B50 5B51 FFFD FFFD 5523 -End of Item 065D - -Begin of Item 065E - Format 2 - srcBegin = 88FD - destBegin = 7032 -End of Item 065E - -Begin of Item 065F - Format 2 - srcBegin = 8907 - destBegin = 5C5C -End of Item 065F - -Begin of Item 0660 - Format 1 - srcBegin = 8910 - srcEnd = 8913 - mappingOffset = 138F - Mapping = - 4A68 FFFD 7866 5C4E -End of Item 0660 - -Begin of Item 0661 - Format 1 - srcBegin = 8918 - srcEnd = 8919 - mappingOffset = 1393 - Mapping = - 6A5C 5B52 -End of Item 0661 - -Begin of Item 0662 - Format 2 - srcBegin = 8925 - destBegin = 6933 -End of Item 0662 - -Begin of Item 0663 - Format 2 - srcBegin = 892A - destBegin = 775B -End of Item 0663 - -Begin of Item 0664 - Format 1 - srcBegin = 8936 - srcEnd = 893B - mappingOffset = 1395 - Mapping = - 6328 FFFD 572E FFFD FFFD 6061 -End of Item 0664 - -Begin of Item 0665 - Format 1 - srcBegin = 8941 - srcEnd = 8944 - mappingOffset = 139B - Mapping = - 4B3A FFFD FFFD 6551 -End of Item 0665 - -Begin of Item 0666 - Format 2 - srcBegin = 895F - destBegin = 505C -End of Item 0666 - -Begin of Item 0667 - Format 2 - srcBegin = 8964 - destBegin = 5541 -End of Item 0667 - -Begin of Item 0668 - Format 2 - srcBegin = 896A - destBegin = 584A -End of Item 0668 - -Begin of Item 0669 - Format 2 - srcBegin = 8972 - destBegin = 6329 -End of Item 0669 - -Begin of Item 066A - Format 1 - srcBegin = 897F - srcEnd = 8987 - mappingOffset = 139F - Mapping = - 6024 FFFD 6929 FFFD 5347 FFFD FFFD 5C5D - 782E -End of Item 066A - -Begin of Item 066B - Format 2 - srcBegin = 898B - destBegin = 4C38 -End of Item 066B - -Begin of Item 066C - Format 2 - srcBegin = 898F - destBegin = 502E -End of Item 066C - -Begin of Item 066D - Format 1 - srcBegin = 8993 - srcEnd = 8996 - mappingOffset = 13A8 - Mapping = - 5872 FFFD FFFD 634A -End of Item 066D - -Begin of Item 066E - Format 2 - srcBegin = 89A1 - destBegin = 4C2F -End of Item 066E - -Begin of Item 066F - Format 1 - srcBegin = 89A9 - srcEnd = 89AA - mappingOffset = 13AC - Mapping = - 542D 7651 -End of Item 066F - -Begin of Item 0670 - Format 2 - srcBegin = 89B2 - destBegin = 504C -End of Item 0670 - -Begin of Item 0671 - Format 1 - srcBegin = 89BA - srcEnd = 89C0 - mappingOffset = 13AE - Mapping = - 4A46 FFFD FFFD 5542 FFFD FFFD 4E3A -End of Item 0671 - -Begin of Item 0672 - Format 2 - srcBegin = 89D2 - destBegin = 4A47 -End of Item 0672 - -Begin of Item 0673 - Format 2 - srcBegin = 89E3 - destBegin = 7A30 -End of Item 0673 - -Begin of Item 0674 - Format 2 - srcBegin = 89F4 - destBegin = 5F58 -End of Item 0674 - -Begin of Item 0675 - Format 2 - srcBegin = 89F8 - destBegin = 753A -End of Item 0675 - -Begin of Item 0676 - Format 1 - srcBegin = 8A00 - srcEnd = 8A03 - mappingOffset = 13B5 - Mapping = - 656B FFFD 6F74 5D35 -End of Item 0676 - -Begin of Item 0677 - Format 1 - srcBegin = 8A08 - srcEnd = 8A0E - mappingOffset = 13B9 - Mapping = - 4D2A FFFD 6372 FFFD 7B77 FFFD 7750 -End of Item 0677 - -Begin of Item 0678 - Format 1 - srcBegin = 8A13 - srcEnd = 8A1F - mappingOffset = 13C0 - Mapping = - 7D3A FFFD FFFD 7D61 767E 5140 FFFD FFFD - 6845 FFFD 6438 FFFD 6168 -End of Item 0678 - -Begin of Item 0679 - Format 1 - srcBegin = 8A23 - srcEnd = 8A25 - mappingOffset = 13CD - Mapping = - 4C41 FFFD 526D -End of Item 0679 - -Begin of Item 067A - Format 1 - srcBegin = 8A2A - srcEnd = 8A2D - mappingOffset = 13D0 - Mapping = - 5B3E FFFD FFFD 6062 -End of Item 067A - -Begin of Item 067B - Format 1 - srcBegin = 8A31 - srcEnd = 8A36 - mappingOffset = 13D4 - Mapping = - 7A49 FFFD FFFD 614D FFFD 4A38 -End of Item 067B - -Begin of Item 067C - Format 1 - srcBegin = 8A3A - srcEnd = 8A3B - mappingOffset = 13DA - Mapping = - 7260 7149 -End of Item 067C - -Begin of Item 067D - Format 2 - srcBegin = 8A50 - destBegin = 5E71 -End of Item 067D - -Begin of Item 067E - Format 1 - srcBegin = 8A54 - srcEnd = 8A55 - mappingOffset = 13DC - Mapping = - 705F 7844 -End of Item 067E - -Begin of Item 067F - Format 1 - srcBegin = 8A5B - srcEnd = 8A69 - mappingOffset = 13DE - Mapping = - 6E4C FFFD FFFD 5E72 FFFD 6749 FFFD 6273 - 6761 FFFD FFFD 634B FFFD FFFD 634C -End of Item 067F - -Begin of Item 0680 - Format 1 - srcBegin = 8A6D - srcEnd = 8A75 - mappingOffset = 13ED - Mapping = - 4F78 6F2C FFFD 7D7E 7C25 7A31 5F59 FFFD - 6052 -End of Item 0680 - -Begin of Item 0681 - Format 2 - srcBegin = 8A79 - destBegin = 745A -End of Item 0681 - -Begin of Item 0682 - Format 1 - srcBegin = 8A85 - srcEnd = 8A87 - mappingOffset = 13F6 - Mapping = - 714A FFFD 4E23 -End of Item 0682 - -Begin of Item 0683 - Format 1 - srcBegin = 8A8C - srcEnd = 8A8D - mappingOffset = 13F9 - Mapping = - 723C 6C63 -End of Item 0683 - -Begin of Item 0684 - Format 1 - srcBegin = 8A93 - srcEnd = 8A98 - mappingOffset = 13FB - Mapping = - 6025 FFFD 772B FFFD FFFD 6B2F -End of Item 0684 - -Begin of Item 0685 - Format 1 - srcBegin = 8A9E - srcEnd = 8AAA - mappingOffset = 1401 - Mapping = - 655E FFFD 6124 4D2B FFFD 5974 6826 4D4E - 6169 FFFD 7C6F FFFD 6063 -End of Item 0685 - -Begin of Item 0686 - Format 1 - srcBegin = 8AB0 - srcEnd = 8AB2 - mappingOffset = 140E - Mapping = - 6241 FFFD 4E24 -End of Item 0686 - -Begin of Item 0687 - Format 1 - srcBegin = 8AB9 - srcEnd = 8AC7 - mappingOffset = 1411 - Mapping = - 5E26 FFFD FFFD 6B7E FFFD 6B5D 7060 FFFD - FFFD 745B FFFD 6274 FFFD FFFD 5348 -End of Item 0687 - -Begin of Item 0688 - Format 1 - srcBegin = 8ACB - srcEnd = 8AD2 - mappingOffset = 1420 - Mapping = - 746B FFFD 6E35 FFFD 7558 FFFD FFFD 555F -End of Item 0688 - -Begin of Item 0689 - Format 2 - srcBegin = 8AD6 - destBegin = 5665 -End of Item 0689 - -Begin of Item 068A - Format 1 - srcBegin = 8ADB - srcEnd = 8ADC - mappingOffset = 1428 - Mapping = - 6B30 7463 -End of Item 068A - -Begin of Item 068B - Format 2 - srcBegin = 8AE1 - destBegin = 634D -End of Item 068B - -Begin of Item 068C - Format 1 - srcBegin = 8AE6 - srcEnd = 8AF1 - mappingOffset = 142A - Mapping = - 7474 7A32 FFFD FFFD 6F75 4A5F FFFD 6B31 - 6D3F FFFD FFFD 7D49 -End of Item 068C - -Begin of Item 068D - Format 1 - srcBegin = 8AF6 - srcEnd = 8AFA - mappingOffset = 1436 - Mapping = - 6426 7924 7033 FFFD 656C -End of Item 068D - -Begin of Item 068E - Format 1 - srcBegin = 8AFE - srcEnd = 8B04 - mappingOffset = 143B - Mapping = - 5167 FFFD 5947 6457 6A5D FFFD 5477 -End of Item 068E - -Begin of Item 068F - Format 1 - srcBegin = 8B0E - srcEnd = 8B10 - mappingOffset = 1442 - Mapping = - 5A3A FFFD 5A4D -End of Item 068F - -Begin of Item 0690 - Format 1 - srcBegin = 8B14 - srcEnd = 8B20 - mappingOffset = 1445 - Mapping = - 794C FFFD 615A 5B3F FFFD 4C45 6C50 4B3B - FFFD 5E73 FFFD FFFD 692A -End of Item 0690 - -Begin of Item 0691 - Format 1 - srcBegin = 8B28 - srcEnd = 8B2C - mappingOffset = 1452 - Mapping = - 5948 FFFD FFFD 6E63 573D -End of Item 0691 - -Begin of Item 0692 - Format 2 - srcBegin = 8B33 - destBegin = 4F44 -End of Item 0692 - -Begin of Item 0693 - Format 2 - srcBegin = 8B39 - destBegin = 504D -End of Item 0693 - -Begin of Item 0694 - Format 2 - srcBegin = 8B41 - destBegin = 7C26 -End of Item 0694 - -Begin of Item 0695 - Format 2 - srcBegin = 8B49 - destBegin = 717B -End of Item 0695 - -Begin of Item 0696 - Format 1 - srcBegin = 8B4E - srcEnd = 8B4F - mappingOffset = 1457 - Mapping = - 7D52 5141 -End of Item 0696 - -Begin of Item 0697 - Format 1 - srcBegin = 8B58 - srcEnd = 8B5C - mappingOffset = 1459 - Mapping = - 635B FFFD 5349 FFFD 5C4F -End of Item 0697 - -Begin of Item 0698 - Format 2 - srcBegin = 8B66 - destBegin = 4C6D -End of Item 0698 - -Begin of Item 0699 - Format 1 - srcBegin = 8B6C - srcEnd = 8B70 - mappingOffset = 145E - Mapping = - 5E27 FFFD FFFD 663B 6C21 -End of Item 0699 - -Begin of Item 069A - Format 1 - srcBegin = 8B74 - srcEnd = 8B77 - mappingOffset = 1463 - Mapping = - 4C39 FFFD FFFD 7B5E -End of Item 069A - -Begin of Item 069B - Format 1 - srcBegin = 8B7D - srcEnd = 8B80 - mappingOffset = 1467 - Mapping = - 6762 FFFD FFFD 5441 -End of Item 069B - -Begin of Item 069C - Format 2 - srcBegin = 8B8A - destBegin = 5C28 -End of Item 069C - -Begin of Item 069D - Format 1 - srcBegin = 8B90 - srcEnd = 8B96 - mappingOffset = 146B - Mapping = - 6242 FFFD 7358 6553 FFFD FFFD 7359 -End of Item 069D - -Begin of Item 069E - Format 2 - srcBegin = 8B9A - destBegin = 7346 -End of Item 069E - -Begin of Item 069F - Format 2 - srcBegin = 8C37 - destBegin = 4D5B -End of Item 069F - -Begin of Item 06A0 - Format 1 - srcBegin = 8C3F - srcEnd = 8C41 - mappingOffset = 1472 - Mapping = - 4D2C FFFD 7C43 -End of Item 06A0 - -Begin of Item 06A1 - Format 1 - srcBegin = 8C46 - srcEnd = 8C4C - mappingOffset = 1475 - Mapping = - 5467 FFFD 5142 FFFD 7925 FFFD 6855 -End of Item 06A1 - -Begin of Item 06A2 - Format 2 - srcBegin = 8C55 - destBegin = 634E -End of Item 06A2 - -Begin of Item 06A3 - Format 2 - srcBegin = 8C5A - destBegin = 544A -End of Item 06A3 - -Begin of Item 06A4 - Format 2 - srcBegin = 8C61 - destBegin = 5F5A -End of Item 06A4 - -Begin of Item 06A5 - Format 1 - srcBegin = 8C6A - srcEnd = 8C6B - mappingOffset = 147C - Mapping = - 7B5F 6763 -End of Item 06A5 - -Begin of Item 06A6 - Format 1 - srcBegin = 8C79 - srcEnd = 8C7A - mappingOffset = 147E - Mapping = - 787B 634F -End of Item 06A6 - -Begin of Item 06A7 - Format 2 - srcBegin = 8C82 - destBegin = 7530 -End of Item 06A7 - -Begin of Item 06A8 - Format 1 - srcBegin = 8C8A - srcEnd = 8C8C - mappingOffset = 1480 - Mapping = - 5867 FFFD 5949 -End of Item 06A8 - -Begin of Item 06A9 - Format 1 - srcBegin = 8C9D - srcEnd = 8CA2 - mappingOffset = 1483 - Mapping = - 782F 6F76 FFFD 5D36 6E2F 4D78 -End of Item 06A9 - -Begin of Item 06AA - Format 1 - srcBegin = 8CA7 - srcEnd = 8CCA - mappingOffset = 1489 - Mapping = - 5E38 7C27 777C 7731 4E3B 7421 FFFD FFFD - 6E4D 612E FFFD FFFD 6C43 4F7E FFFD 783F - 5862 5368 FFFD FFFD 5E28 7464 6C42 FFFD - 5975 7945 5D53 5671 6C7C 7C70 FFFD FFFD - 6D40 4A39 FFFD 6E64 -End of Item 06AA - -Begin of Item 06AB - Format 1 - srcBegin = 8CD1 - srcEnd = 8CD3 - mappingOffset = 14AD - Mapping = - 7261 FFFD 5E39 -End of Item 06AB - -Begin of Item 06AC - Format 1 - srcBegin = 8CDA - srcEnd = 8CE6 - mappingOffset = 14B0 - Mapping = - 5672 FFFD 5E74 FFFD 5F5B FFFD 5B53 FFFD - 7A67 5863 7441 FFFD 5D37 -End of Item 06AC - -Begin of Item 06AD - Format 1 - srcBegin = 8CEA - srcEnd = 8CED - mappingOffset = 14BD - Mapping = - 7275 FFFD FFFD 542E -End of Item 06AD - -Begin of Item 06AE - Format 2 - srcBegin = 8CF4 - destBegin = 5673 -End of Item 06AE - -Begin of Item 06AF - Format 1 - srcBegin = 8CFB - srcEnd = 8CFD - mappingOffset = 14C1 - Mapping = - 5D38 4F45 5F5F -End of Item 06AF - -Begin of Item 06B0 - Format 1 - srcBegin = 8D04 - srcEnd = 8D0D - mappingOffset = 14C4 - Mapping = - 723E 7621 FFFD 6B4B 717C FFFD 7347 FFFD - FFFD 606B -End of Item 06B0 - -Begin of Item 06B1 - Format 1 - srcBegin = 8D13 - srcEnd = 8D16 - mappingOffset = 14CE - Mapping = - 6D7C FFFD FFFD 615B -End of Item 06B1 - -Begin of Item 06B2 - Format 1 - srcBegin = 8D64 - srcEnd = 8D66 - mappingOffset = 14D2 - Mapping = - 6E65 FFFD 5E75 -End of Item 06B2 - -Begin of Item 06B3 - Format 2 - srcBegin = 8D6B - destBegin = 7A53 -End of Item 06B3 - -Begin of Item 06B4 - Format 1 - srcBegin = 8D70 - srcEnd = 8D77 - mappingOffset = 14D5 - Mapping = - 714B FFFD FFFD 502F 5D39 FFFD FFFD 5143 -End of Item 06B4 - -Begin of Item 06B5 - Format 2 - srcBegin = 8D85 - destBegin = 7531 -End of Item 06B5 - -Begin of Item 06B6 - Format 2 - srcBegin = 8D8A - destBegin = 6A46 -End of Item 06B6 - -Begin of Item 06B7 - Format 2 - srcBegin = 8D99 - destBegin = 7061 -End of Item 06B7 - -Begin of Item 06B8 - Format 2 - srcBegin = 8DA3 - destBegin = 762C -End of Item 06B8 - -Begin of Item 06B9 - Format 2 - srcBegin = 8DA8 - destBegin = 7559 -End of Item 06B9 - -Begin of Item 06BA - Format 2 - srcBegin = 8DB3 - destBegin = 706B -End of Item 06BA - -Begin of Item 06BB - Format 2 - srcBegin = 8DBA - destBegin = 5D3A -End of Item 06BB - -Begin of Item 06BC - Format 2 - srcBegin = 8DBE - destBegin = 723F -End of Item 06BC - -Begin of Item 06BD - Format 2 - srcBegin = 8DC6 - destBegin = 7745 -End of Item 06BD - -Begin of Item 06BE - Format 1 - srcBegin = 8DCB - srcEnd = 8DCF - mappingOffset = 14DD - Mapping = - 5B22 7276 FFFD FFFD 4A3A -End of Item 06BE - -Begin of Item 06BF - Format 1 - srcBegin = 8DDB - srcEnd = 8DDD - mappingOffset = 14E2 - Mapping = - 7775 FFFD 4B65 -End of Item 06BF - -Begin of Item 06C0 - Format 1 - srcBegin = 8DE1 - srcEnd = 8DE3 - mappingOffset = 14E5 - Mapping = - 6E66 FFFD 6053 -End of Item 06C0 - -Begin of Item 06C1 - Format 2 - srcBegin = 8DE8 - destBegin = 4E25 -End of Item 06C1 - -Begin of Item 06C2 - Format 2 - srcBegin = 8DEF - destBegin = 5658 -End of Item 06C2 - -Begin of Item 06C3 - Format 2 - srcBegin = 8DF3 - destBegin = 542F -End of Item 06C3 - -Begin of Item 06C4 - Format 2 - srcBegin = 8E0A - destBegin = 6949 -End of Item 06C4 - -Begin of Item 06C5 - Format 1 - srcBegin = 8E0F - srcEnd = 8E10 - mappingOffset = 14E8 - Mapping = - 534E 7442 -End of Item 06C5 - -Begin of Item 06C6 - Format 2 - srcBegin = 8E1E - destBegin = 4B66 -End of Item 06C6 - -Begin of Item 06C7 - Format 2 - srcBegin = 8E2A - destBegin = 7121 -End of Item 06C7 - -Begin of Item 06C8 - Format 2 - srcBegin = 8E30 - destBegin = 6B32 -End of Item 06C8 - -Begin of Item 06C9 - Format 2 - srcBegin = 8E35 - destBegin = 7122 -End of Item 06C9 - -Begin of Item 06CA - Format 1 - srcBegin = 8E42 - srcEnd = 8E4A - mappingOffset = 14EA - Mapping = - 6B33 FFFD 7034 FFFD FFFD 4B74 5430 7332 - 7B37 -End of Item 06CA - -Begin of Item 06CB - Format 2 - srcBegin = 8E59 - destBegin = 756C -End of Item 06CB - -Begin of Item 06CC - Format 1 - srcBegin = 8E5F - srcEnd = 8E60 - mappingOffset = 14F3 - Mapping = - 6E67 7432 -End of Item 06CC - -Begin of Item 06CD - Format 1 - srcBegin = 8E74 - srcEnd = 8E76 - mappingOffset = 14F5 - Mapping = - 756D FFFD 4F73 -End of Item 06CD - -Begin of Item 06CE - Format 2 - srcBegin = 8E81 - destBegin = 7062 -End of Item 06CE - -Begin of Item 06CF - Format 1 - srcBegin = 8E87 - srcEnd = 8E8D - mappingOffset = 14F8 - Mapping = - 6E4E FFFD FFFD 714C FFFD FFFD 6538 -End of Item 06CF - -Begin of Item 06D0 - Format 1 - srcBegin = 8EAA - srcEnd = 8EAC - mappingOffset = 14FF - Mapping = - 5775 6373 4F65 -End of Item 06D0 - -Begin of Item 06D1 - Format 2 - srcBegin = 8EC0 - destBegin = 4F46 -End of Item 06D1 - -Begin of Item 06D2 - Format 1 - srcBegin = 8ECA - srcEnd = 8ECD - mappingOffset = 1502 - Mapping = - 7333 6458 4F79 4F5A -End of Item 06D2 - -Begin of Item 06D3 - Format 2 - srcBegin = 8ED2 - destBegin = 7A4D -End of Item 06D3 - -Begin of Item 06D4 - Format 2 - srcBegin = 8EDF - destBegin = 6663 -End of Item 06D4 - -Begin of Item 06D5 - Format 2 - srcBegin = 8EEB - destBegin = 7262 -End of Item 06D5 - -Begin of Item 06D6 - Format 1 - srcBegin = 8EF8 - srcEnd = 8EFE - mappingOffset = 1506 - Mapping = - 756E FFFD FFFD 4A3B FFFD FFFD 635C -End of Item 06D6 - -Begin of Item 06D7 - Format 1 - srcBegin = 8F03 - srcEnd = 8F05 - mappingOffset = 150D - Mapping = - 4E72 FFFD 5659 -End of Item 06D7 - -Begin of Item 06D8 - Format 2 - srcBegin = 8F09 - destBegin = 6E30 -End of Item 06D8 - -Begin of Item 06D9 - Format 1 - srcBegin = 8F12 - srcEnd = 8F15 - mappingOffset = 1510 - Mapping = - 7465 5842 5C50 4C6E -End of Item 06D9 - -Begin of Item 06DA - Format 1 - srcBegin = 8F1B - srcEnd = 8F1F - mappingOffset = 1514 - Mapping = - 5560 764A 7D4A 5856 744F -End of Item 06DA - -Begin of Item 06DB - Format 1 - srcBegin = 8F26 - srcEnd = 8F2A - mappingOffset = 1519 - Mapping = - 5626 5C3E FFFD 5B54 5747 -End of Item 06DB - -Begin of Item 06DC - Format 2 - srcBegin = 8F2F - destBegin = 727E -End of Item 06DC - -Begin of Item 06DD - Format 2 - srcBegin = 8F33 - destBegin = 714D -End of Item 06DD - -Begin of Item 06DE - Format 1 - srcBegin = 8F38 - srcEnd = 8F3F - mappingOffset = 151E - Mapping = - 6243 5C5E FFFD 5C5F FFFD FFFD 6F2D 662B -End of Item 06DE - -Begin of Item 06DF - Format 1 - srcBegin = 8F44 - srcEnd = 8F45 - mappingOffset = 1526 - Mapping = - 795D 6A3F -End of Item 06DF - -Begin of Item 06E0 - Format 2 - srcBegin = 8F49 - destBegin = 6F2E -End of Item 06E0 - -Begin of Item 06E1 - Format 1 - srcBegin = 8F4D - srcEnd = 8F4E - mappingOffset = 1528 - Mapping = - 7450 4E73 -End of Item 06E1 - -Begin of Item 06E2 - Format 1 - srcBegin = 8F5D - srcEnd = 8F62 - mappingOffset = 152A - Mapping = - 662C FFFD 4E5E FFFD FFFD 5579 -End of Item 06E2 - -Begin of Item 06E3 - Format 1 - srcBegin = 8F9B - srcEnd = 8F9C - mappingOffset = 1530 - Mapping = - 6374 4D50 -End of Item 06E3 - -Begin of Item 06E4 - Format 1 - srcBegin = 8FA3 - srcEnd = 8FA8 - mappingOffset = 1532 - Mapping = - 5538 FFFD FFFD 777D FFFD 5C29 -End of Item 06E4 - -Begin of Item 06E5 - Format 1 - srcBegin = 8FAD - srcEnd = 8FB2 - mappingOffset = 1538 - Mapping = - 5E76 FFFD 5C2A 7263 6934 525C -End of Item 06E5 - -Begin of Item 06E6 - Format 1 - srcBegin = 8FC2 - srcEnd = 8FC5 - mappingOffset = 153E - Mapping = - 6966 FFFD FFFD 6376 -End of Item 06E6 - -Begin of Item 06E7 - Format 1 - srcBegin = 8FCE - srcEnd = 8FD4 - mappingOffset = 1542 - Mapping = - 674A FFFD FFFD 504E FFFD FFFD 5A77 -End of Item 06E7 - -Begin of Item 06E8 - Format 2 - srcBegin = 8FE6 - destBegin = 4A3C -End of Item 06E8 - -Begin of Item 06E9 - Format 1 - srcBegin = 8FEA - srcEnd = 8FF2 - mappingOffset = 1549 - Mapping = - 6E68 5A5E FFFD 7277 FFFD FFFD 627B FFFD - 4C26 -End of Item 06E9 - -Begin of Item 06EA - Format 1 - srcBegin = 8FF7 - srcEnd = 8FF9 - mappingOffset = 1552 - Mapping = - 5A3B FFFD 6E69 -End of Item 06EA - -Begin of Item 06EB - Format 1 - srcBegin = 8FFD - srcEnd = 9023 - mappingOffset = 1555 - Mapping = - 755A FFFD FFFD 775C 616A 4E41 5431 FFFD - 7D31 663D FFFD 7B2D FFFD FFFD 7867 FFFD - 614E FFFD 7762 756F 4F47 FFFD FFFD 5432 - 4C6F FFFD 5468 FFFD 6E4F 7757 FFFD FFFD - 6026 5641 615C 7063 7164 5C71 5627 -End of Item 06EB - -Begin of Item 06EC - Format 1 - srcBegin = 902E - srcEnd = 9038 - mappingOffset = 157C - Mapping = - 7475 FFFD FFFD 714E 7264 FFFD FFFD 5030 - FFFD FFFD 6C6F -End of Item 06EC - -Begin of Item 06ED - Format 1 - srcBegin = 903C - srcEnd = 9042 - mappingOffset = 1587 - Mapping = - 793A FFFD 6B35 FFFD FFFD 546D 6244 -End of Item 06ED - -Begin of Item 06EE - Format 1 - srcBegin = 9047 - srcEnd = 9055 - mappingOffset = 158E - Mapping = - 6967 FFFD FFFD 6B34 6A21 FFFD 783C 4E26 - FFFD 7946 7C5A FFFD 5433 5339 6A5E -End of Item 06EE - -Begin of Item 06EF - Format 1 - srcBegin = 9059 - srcEnd = 9063 - mappingOffset = 159D - Mapping = - 692B FFFD FFFD 6161 534F 7476 FFFD 6A40 - 614F FFFD 4C3A -End of Item 06EF - -Begin of Item 06F0 - Format 2 - srcBegin = 9069 - destBegin = 6E6A -End of Item 06F0 - -Begin of Item 06F1 - Format 1 - srcBegin = 906D - srcEnd = 908A - mappingOffset = 15A8 - Mapping = - 7064 7334 546E FFFD FFFD 7240 FFFD FFFD - 7165 FFFD 7443 6054 FFFD 6B36 FFFD 5721 - 4B68 FFFD 792D 692D 5864 7A33 6245 7C3D - FFFD FFFD 6C44 5831 FFFD 5C2B -End of Item 06F1 - -Begin of Item 06F2 - Format 1 - srcBegin = 908F - srcEnd = 9091 - mappingOffset = 15C6 - Mapping = - 5524 FFFD 6B69 -End of Item 06F2 - -Begin of Item 06F3 - Format 2 - srcBegin = 9095 - destBegin = 683B -End of Item 06F3 - -Begin of Item 06F4 - Format 2 - srcBegin = 9099 - destBegin = 5857 -End of Item 06F4 - -Begin of Item 06F5 - Format 1 - srcBegin = 90A2 - srcEnd = 90AA - mappingOffset = 15C9 - Mapping = - 7B2E 5161 FFFD FFFD 5B40 FFFD 753E FFFD - 5E77 -End of Item 06F5 - -Begin of Item 06F6 - Format 1 - srcBegin = 90AF - srcEnd = 90B1 - mappingOffset = 15D2 - Mapping = - 4A7B 7746 4F48 -End of Item 06F6 - -Begin of Item 06F7 - Format 1 - srcBegin = 90B5 - srcEnd = 90B8 - mappingOffset = 15D5 - Mapping = - 6150 FFFD FFFD 6E50 -End of Item 06F7 - -Begin of Item 06F8 - Format 2 - srcBegin = 90C1 - destBegin = 6974 -End of Item 06F8 - -Begin of Item 06F9 - Format 2 - srcBegin = 90CA - destBegin = 4E74 -End of Item 06F9 - -Begin of Item 06FA - Format 1 - srcBegin = 90DE - srcEnd = 90E1 - mappingOffset = 15D9 - Mapping = - 554D FFFD FFFD 4F5B -End of Item 06FA - -Begin of Item 06FB - Format 2 - srcBegin = 90E8 - destBegin = 5D3B -End of Item 06FB - -Begin of Item 06FC - Format 2 - srcBegin = 90ED - destBegin = 4E2C -End of Item 06FC - -Begin of Item 06FD - Format 2 - srcBegin = 90F5 - destBegin = 6968 -End of Item 06FD - -Begin of Item 06FE - Format 2 - srcBegin = 90FD - destBegin = 5434 -End of Item 06FE - -Begin of Item 06FF - Format 2 - srcBegin = 9102 - destBegin = 6447 -End of Item 06FF - -Begin of Item 0700 - Format 1 - srcBegin = 9112 - srcEnd = 9115 - mappingOffset = 15DD - Mapping = - 755B FFFD FFFD 7A41 -End of Item 0700 - -Begin of Item 0701 - Format 2 - srcBegin = 9119 - destBegin = 5E29 -End of Item 0701 - -Begin of Item 0702 - Format 2 - srcBegin = 9127 - destBegin = 5478 -End of Item 0702 - -Begin of Item 0703 - Format 2 - srcBegin = 912D - destBegin = 6F77 -End of Item 0703 - -Begin of Item 0704 - Format 2 - srcBegin = 9132 - destBegin = 5333 -End of Item 0704 - -Begin of Item 0705 - Format 1 - srcBegin = 9149 - srcEnd = 914E - mappingOffset = 15E1 - Mapping = - 6B37 6F78 755C 6D4C 5B55 714F -End of Item 0705 - -Begin of Item 0706 - Format 2 - srcBegin = 9152 - destBegin = 7150 -End of Item 0706 - -Begin of Item 0707 - Format 2 - srcBegin = 9162 - destBegin = 7532 -End of Item 0707 - -Begin of Item 0708 - Format 1 - srcBegin = 9169 - srcEnd = 916C - mappingOffset = 15E7 - Mapping = - 592E 552C FFFD 6246 -End of Item 0708 - -Begin of Item 0709 - Format 1 - srcBegin = 9175 - srcEnd = 9178 - mappingOffset = 15EB - Mapping = - 7D23 FFFD 7B65 5F2B -End of Item 0709 - -Begin of Item 070A - Format 1 - srcBegin = 9187 - srcEnd = 918D - mappingOffset = 15EF - Mapping = - 6275 FFFD 762D FFFD 7533 FFFD 7035 -End of Item 070A - -Begin of Item 070B - Format 2 - srcBegin = 9192 - destBegin = 6125 -End of Item 070B - -Begin of Item 070C - Format 2 - srcBegin = 919C - destBegin = 755D -End of Item 070C - -Begin of Item 070D - Format 1 - srcBegin = 91AB - srcEnd = 91B5 - mappingOffset = 15F6 - Mapping = - 6C22 6D7D FFFD 7534 7B38 FFFD 5B23 FFFD - FFFD 564A 4B59 -End of Item 070D - -Begin of Item 070E - Format 2 - srcBegin = 91C0 - destBegin = 6554 -End of Item 070E - -Begin of Item 070F - Format 1 - srcBegin = 91C7 - srcEnd = 91D1 - mappingOffset = 1601 - Mapping = - 737A FFFD 6B38 FFFD 6037 576C 716C 652F - 5561 576D 5151 -End of Item 070F - -Begin of Item 0710 - Format 1 - srcBegin = 91D7 - srcEnd = 91D8 - mappingOffset = 160C - Mapping = - 6172 6F79 -End of Item 0710 - -Begin of Item 0711 - Format 1 - srcBegin = 91DC - srcEnd = 91DD - mappingOffset = 160E - Mapping = - 5D3C 765C -End of Item 0711 - -Begin of Item 0712 - Format 2 - srcBegin = 91E3 - destBegin = 7065 -End of Item 0712 - -Begin of Item 0713 - Format 1 - srcBegin = 91E7 - srcEnd = 91EA - mappingOffset = 1610 - Mapping = - 7444 FFFD FFFD 6969 -End of Item 0713 - -Begin of Item 0714 - Format 2 - srcBegin = 91F5 - destBegin = 737B -End of Item 0714 - -Begin of Item 0715 - Format 1 - srcBegin = 920D - srcEnd = 9212 - mappingOffset = 1614 - Mapping = - 546F FFFD FFFD 4C22 777E 5F3C -End of Item 0715 - -Begin of Item 0716 - Format 2 - srcBegin = 9217 - destBegin = 6B4D -End of Item 0716 - -Begin of Item 0717 - Format 2 - srcBegin = 921E - destBegin = 5037 -End of Item 0717 - -Begin of Item 0718 - Format 2 - srcBegin = 9234 - destBegin = 5642 -End of Item 0718 - -Begin of Item 0719 - Format 2 - srcBegin = 923A - destBegin = 682D -End of Item 0719 - -Begin of Item 071A - Format 1 - srcBegin = 923F - srcEnd = 9240 - mappingOffset = 161A - Mapping = - 6F2F 4B25 -End of Item 071A - -Begin of Item 071B - Format 2 - srcBegin = 9245 - destBegin = 4B69 -End of Item 071B - -Begin of Item 071C - Format 2 - srcBegin = 9249 - destBegin = 7A68 -End of Item 071C - -Begin of Item 071D - Format 2 - srcBegin = 9257 - destBegin = 4C46 -End of Item 071D - -Begin of Item 071E - Format 1 - srcBegin = 925B - srcEnd = 925E - mappingOffset = 161C - Mapping = - 6667 FFFD FFFD 6A47 -End of Item 071E - -Begin of Item 071F - Format 1 - srcBegin = 9262 - srcEnd = 9266 - mappingOffset = 1620 - Mapping = - 5B24 FFFD 4F49 627C 6F7A -End of Item 071F - -Begin of Item 0720 - Format 1 - srcBegin = 9280 - srcEnd = 9285 - mappingOffset = 1625 - Mapping = - 6B5E FFFD FFFD 7548 FFFD 545E -End of Item 0720 - -Begin of Item 0721 - Format 1 - srcBegin = 9291 - srcEnd = 9298 - mappingOffset = 162B - Mapping = - 6055 FFFD 6F30 FFFD FFFD 6247 FFFD 592F -End of Item 0721 - -Begin of Item 0722 - Format 2 - srcBegin = 929C - destBegin = 7967 -End of Item 0722 - -Begin of Item 0723 - Format 1 - srcBegin = 92B3 - srcEnd = 92B9 - mappingOffset = 1633 - Mapping = - 6765 FFFD FFFD 4F4A 6151 FFFD 6248 -End of Item 0723 - -Begin of Item 0724 - Format 1 - srcBegin = 92CC - srcEnd = 92D2 - mappingOffset = 163A - Mapping = - 6F7B FFFD FFFD 7A79 FFFD FFFD 5C72 -End of Item 0724 - -Begin of Item 0725 - Format 2 - srcBegin = 92E4 - destBegin = 6027 -End of Item 0725 - -Begin of Item 0726 - Format 2 - srcBegin = 92EA - destBegin = 7868 -End of Item 0726 - -Begin of Item 0727 - Format 2 - srcBegin = 92F8 - destBegin = 4B6A -End of Item 0727 - -Begin of Item 0728 - Format 2 - srcBegin = 92FC - destBegin = 4B3C -End of Item 0728 - -Begin of Item 0729 - Format 2 - srcBegin = 9304 - destBegin = 5662 -End of Item 0729 - -Begin of Item 072A - Format 2 - srcBegin = 9310 - destBegin = 755E -End of Item 072A - -Begin of Item 072B - Format 1 - srcBegin = 9318 - srcEnd = 931A - mappingOffset = 1641 - Mapping = - 755F FFFD 6E36 -End of Item 072B - -Begin of Item 072C - Format 1 - srcBegin = 931E - srcEnd = 932F - mappingOffset = 1644 - Mapping = - 6276 534A 6F7C 5144 6F31 FFFD 5145 FFFD - 505E FFFD 5961 FFFD FFFD 6038 FFFD FFFD - 4D51 7339 -End of Item 072C - -Begin of Item 072D - Format 1 - srcBegin = 9348 - srcEnd = 934D - mappingOffset = 1656 - Mapping = - 674C FFFD 5628 4E27 FFFD 5435 -End of Item 072D - -Begin of Item 072E - Format 2 - srcBegin = 9354 - destBegin = 6448 -End of Item 072E - -Begin of Item 072F - Format 2 - srcBegin = 935B - destBegin = 5334 -End of Item 072F - -Begin of Item 0730 - Format 2 - srcBegin = 936E - destBegin = 6B39 -End of Item 0730 - -Begin of Item 0731 - Format 2 - srcBegin = 9375 - destBegin = 4B75 -End of Item 0731 - -Begin of Item 0732 - Format 1 - srcBegin = 937C - srcEnd = 937E - mappingOffset = 165C - Mapping = - 765D FFFD 7123 -End of Item 0732 - -Begin of Item 0733 - Format 2 - srcBegin = 938C - destBegin = 4C47 -End of Item 0733 - -Begin of Item 0734 - Format 1 - srcBegin = 9394 - srcEnd = 9396 - mappingOffset = 165F - Mapping = - 694A FFFD 6170 -End of Item 0734 - -Begin of Item 0735 - Format 2 - srcBegin = 939A - destBegin = 7560 -End of Item 0735 - -Begin of Item 0736 - Format 2 - srcBegin = 93A3 - destBegin = 7B2F -End of Item 0736 - -Begin of Item 0737 - Format 2 - srcBegin = 93A7 - destBegin = 4B51 -End of Item 0737 - -Begin of Item 0738 - Format 1 - srcBegin = 93AC - srcEnd = 93B0 - mappingOffset = 1662 - Mapping = - 7B60 7265 FFFD FFFD 6C70 -End of Item 0738 - -Begin of Item 0739 - Format 2 - srcBegin = 93C3 - destBegin = 706C -End of Item 0739 - -Begin of Item 073A - Format 2 - srcBegin = 93D1 - destBegin = 6E6B -End of Item 073A - -Begin of Item 073B - Format 1 - srcBegin = 93DE - srcEnd = 93E4 - mappingOffset = 1667 - Mapping = - 694B FFFD FFFD 4C70 FFFD FFFD 572F -End of Item 073B - -Begin of Item 073C - Format 2 - srcBegin = 93F6 - destBegin = 7321 -End of Item 073C - -Begin of Item 073D - Format 2 - srcBegin = 9404 - destBegin = 7C75 -End of Item 073D - -Begin of Item 073E - Format 2 - srcBegin = 9418 - destBegin = 7124 -End of Item 073E - -Begin of Item 073F - Format 2 - srcBegin = 9425 - destBegin = 6056 -End of Item 073F - -Begin of Item 0740 - Format 2 - srcBegin = 942B - destBegin = 6F32 -End of Item 0740 - -Begin of Item 0741 - Format 1 - srcBegin = 9435 - srcEnd = 9438 - mappingOffset = 166E - Mapping = - 7451 FFFD FFFD 7721 -End of Item 0741 - -Begin of Item 0742 - Format 2 - srcBegin = 9444 - destBegin = 7151 -End of Item 0742 - -Begin of Item 0743 - Format 1 - srcBegin = 9451 - srcEnd = 9452 - mappingOffset = 1672 - Mapping = - 4A7C 4A7D -End of Item 0743 - -Begin of Item 0744 - Format 2 - srcBegin = 945B - destBegin = 4E4E -End of Item 0744 - -Begin of Item 0745 - Format 1 - srcBegin = 947D - srcEnd = 947F - mappingOffset = 1674 - Mapping = - 7348 FFFD 733A -End of Item 0745 - -Begin of Item 0746 - Format 2 - srcBegin = 9577 - destBegin = 6D7E -End of Item 0746 - -Begin of Item 0747 - Format 1 - srcBegin = 9580 - srcEnd = 9583 - mappingOffset = 1677 - Mapping = - 5A26 FFFD FFFD 606C -End of Item 0747 - -Begin of Item 0748 - Format 1 - srcBegin = 9589 - srcEnd = 958B - mappingOffset = 167B - Mapping = - 784D FFFD 4B52 -End of Item 0748 - -Begin of Item 0749 - Format 1 - srcBegin = 958F - srcEnd = 9594 - mappingOffset = 167E - Mapping = - 6B4E FFFD 7958 7959 4A60 5A4A -End of Item 0749 - -Begin of Item 074A - Format 2 - srcBegin = 9598 - destBegin = 4B26 -End of Item 074A - -Begin of Item 074B - Format 1 - srcBegin = 95A3 - srcEnd = 95A8 - mappingOffset = 1684 - Mapping = - 4A48 796E 5B6C FFFD FFFD 5031 -End of Item 074B - -Begin of Item 074C - Format 2 - srcBegin = 95AD - destBegin = 556F -End of Item 074C - -Begin of Item 074D - Format 2 - srcBegin = 95B1 - destBegin = 6673 -End of Item 074D - -Begin of Item 074E - Format 1 - srcBegin = 95BB - srcEnd = 95BC - mappingOffset = 168A - Mapping = - 6722 6459 -End of Item 074E - -Begin of Item 074F - Format 1 - srcBegin = 95C7 - srcEnd = 95CA - mappingOffset = 168C - Mapping = - 6461 FFFD FFFD 7C44 -End of Item 074F - -Begin of Item 0750 - Format 1 - srcBegin = 95D4 - srcEnd = 95D6 - mappingOffset = 1690 - Mapping = - 796F 4F74 7766 -End of Item 0750 - -Begin of Item 0751 - Format 2 - srcBegin = 95DC - destBegin = 4E3C -End of Item 0751 - -Begin of Item 0752 - Format 1 - srcBegin = 95E1 - srcEnd = 95E2 - mappingOffset = 1693 - Mapping = - 7445 5C23 -End of Item 0752 - -Begin of Item 0753 - Format 2 - srcBegin = 961C - destBegin = 5D3D -End of Item 0753 - -Begin of Item 0754 - Format 2 - srcBegin = 9621 - destBegin = 7446 -End of Item 0754 - -Begin of Item 0755 - Format 2 - srcBegin = 962A - destBegin = 7821 -End of Item 0755 - -Begin of Item 0756 - Format 2 - srcBegin = 962E - destBegin = 6856 -End of Item 0756 - -Begin of Item 0757 - Format 2 - srcBegin = 9632 - destBegin = 5B41 -End of Item 0757 - -Begin of Item 0758 - Format 2 - srcBegin = 963B - destBegin = 7066 -End of Item 0758 - -Begin of Item 0759 - Format 1 - srcBegin = 963F - srcEnd = 9644 - mappingOffset = 1695 - Mapping = - 6439 766D FFFD 792E FFFD 5D3E -End of Item 0759 - -Begin of Item 075A - Format 1 - srcBegin = 964B - srcEnd = 9650 - mappingOffset = 169B - Mapping = - 5730 5868 4B3D FFFD FFFD 795A -End of Item 075A - -Begin of Item 075B - Format 1 - srcBegin = 965B - srcEnd = 9664 - mappingOffset = 16A1 - Mapping = - 784E 7970 606D 6333 7433 FFFD FFFD 6A42 - 7266 7036 -End of Item 075B - -Begin of Item 075C - Format 2 - srcBegin = 966A - destBegin = 5B56 -End of Item 075C - -Begin of Item 075D - Format 1 - srcBegin = 9670 - srcEnd = 9678 - mappingOffset = 16AB - Mapping = - 6B64 FFFD FFFD 7267 FFFD 5755 5436 7968 - 5741 -End of Item 075D - -Begin of Item 075E - Format 2 - srcBegin = 967D - destBegin = 6555 -End of Item 075E - -Begin of Item 075F - Format 1 - srcBegin = 9685 - srcEnd = 9686 - mappingOffset = 16B4 - Mapping = - 696A 574C -End of Item 075F - -Begin of Item 0760 - Format 1 - srcBegin = 968A - srcEnd = 968E - mappingOffset = 16B6 - Mapping = - 5369 6249 FFFD 7C5B 4D2D -End of Item 0760 - -Begin of Item 0761 - Format 1 - srcBegin = 9694 - srcEnd = 969C - mappingOffset = 16BB - Mapping = - 4C30 6A22 FFFD FFFD 6476 5040 FFFD 7037 - 6E21 -End of Item 0761 - -Begin of Item 0762 - Format 2 - srcBegin = 96A3 - destBegin = 5776 -End of Item 0762 - -Begin of Item 0763 - Format 1 - srcBegin = 96A7 - srcEnd = 96AA - mappingOffset = 16C4 - Mapping = - 624A 624B FFFD 7A4F -End of Item 0763 - -Begin of Item 0764 - Format 2 - srcBegin = 96B1 - destBegin = 6B5F -End of Item 0764 - -Begin of Item 0765 - Format 2 - srcBegin = 96B7 - destBegin = 564B -End of Item 0765 - -Begin of Item 0766 - Format 2 - srcBegin = 96BB - destBegin = 7434 -End of Item 0766 - -Begin of Item 0767 - Format 1 - srcBegin = 96C0 - srcEnd = 96CE - mappingOffset = 16C8 - Mapping = - 6D4D 6452 FFFD FFFD 6A29 643A 7322 4D52 - FFFD 764B FFFD 7166 6D41 683C 6E51 -End of Item 0767 - -Begin of Item 0768 - Format 1 - srcBegin = 96D5 - srcEnd = 96DC - mappingOffset = 16D7 - Mapping = - 7067 624C FFFD FFFD 642A FFFD 7561 6D5A -End of Item 0768 - -Begin of Item 0769 - Format 1 - srcBegin = 96E2 - srcEnd = 96E3 - mappingOffset = 16DF - Mapping = - 576E 5171 -End of Item 0769 - -Begin of Item 076A - Format 1 - srcBegin = 96E8 - srcEnd = 96EA - mappingOffset = 16E1 - Mapping = - 696B 696C 6064 -End of Item 076A - -Begin of Item 076B - Format 1 - srcBegin = 96EF - srcEnd = 96F2 - mappingOffset = 16E4 - Mapping = - 5A27 5D54 FFFD 6A23 -End of Item 076B - -Begin of Item 076C - Format 1 - srcBegin = 96F6 - srcEnd = 96FB - mappingOffset = 16E8 - Mapping = - 5643 5674 FFFD 5A5F FFFD 6F33 -End of Item 076C - -Begin of Item 076D - Format 2 - srcBegin = 9700 - destBegin = 624D -End of Item 076D - -Begin of Item 076E - Format 1 - srcBegin = 9706 - srcEnd = 9707 - mappingOffset = 16EE - Mapping = - 6F7D 7268 -End of Item 076E - -Begin of Item 076F - Format 1 - srcBegin = 9711 - srcEnd = 971E - mappingOffset = 16F0 - Mapping = - 6F45 FFFD 6767 FFFD FFFD 577D FFFD FFFD - 674E FFFD FFFD 5F5C FFFD 7947 -End of Item 076F - -Begin of Item 0770 - Format 2 - srcBegin = 9727 - destBegin = 5976 -End of Item 0770 - -Begin of Item 0771 - Format 1 - srcBegin = 9730 - srcEnd = 9732 - mappingOffset = 16FE - Mapping = - 5F2C FFFD 565A -End of Item 0771 - -Begin of Item 0772 - Format 2 - srcBegin = 9739 - destBegin = 5C24 -End of Item 0772 - -Begin of Item 0773 - Format 2 - srcBegin = 973D - destBegin = 7038 -End of Item 0773 - -Begin of Item 0774 - Format 1 - srcBegin = 9742 - srcEnd = 9744 - mappingOffset = 1701 - Mapping = - 557A FFFD 6477 -End of Item 0774 - -Begin of Item 0775 - Format 2 - srcBegin = 9748 - destBegin = 5644 -End of Item 0775 - -Begin of Item 0776 - Format 2 - srcBegin = 9751 - destBegin = 746C -End of Item 0776 - -Begin of Item 0777 - Format 2 - srcBegin = 9756 - destBegin = 6F7E -End of Item 0777 - -Begin of Item 0778 - Format 1 - srcBegin = 975C - srcEnd = 9762 - mappingOffset = 1704 - Mapping = - 7021 FFFD 5E2A FFFD FFFD 5A3C 587C -End of Item 0778 - -Begin of Item 0779 - Format 2 - srcBegin = 9769 - destBegin = 7A54 -End of Item 0779 - -Begin of Item 077A - Format 2 - srcBegin = 976D - destBegin = 6C65 -End of Item 077A - -Begin of Item 077B - Format 1 - srcBegin = 9774 - srcEnd = 977A - mappingOffset = 170B - Mapping = - 7C28 FFFD FFFD 6C66 FFFD FFFD 584B -End of Item 077B - -Begin of Item 077C - Format 1 - srcBegin = 978B - srcEnd = 978F - mappingOffset = 1712 - Mapping = - 7B39 FFFD 6453 FFFD 4D79 -End of Item 077C - -Begin of Item 077D - Format 2 - srcBegin = 97A0 - destBegin = 4F53 -End of Item 077D - -Begin of Item 077E - Format 1 - srcBegin = 97A8 - srcEnd = 97AD - mappingOffset = 1717 - Mapping = - 4A6A FFFD FFFD 4F54 FFFD 783D -End of Item 077E - -Begin of Item 077F - Format 2 - srcBegin = 97C6 - destBegin = 7447 -End of Item 077F - -Begin of Item 0780 - Format 2 - srcBegin = 97CB - destBegin = 6A5F -End of Item 0780 - -Begin of Item 0781 - Format 2 - srcBegin = 97D3 - destBegin = 795B -End of Item 0781 - -Begin of Item 0782 - Format 2 - srcBegin = 97DC - destBegin = 5437 -End of Item 0782 - -Begin of Item 0783 - Format 1 - srcBegin = 97F3 - srcEnd = 97F6 - mappingOffset = 171D - Mapping = - 6B65 FFFD FFFD 6152 -End of Item 0783 - -Begin of Item 0784 - Format 2 - srcBegin = 97FB - destBegin = 6A24 -End of Item 0784 - -Begin of Item 0785 - Format 1 - srcBegin = 97FF - srcEnd = 980C - mappingOffset = 1721 - Mapping = - 7A42 7B61 7A6D 7022 4C71 FFFD 7A23 6277 - FFFD 624E FFFD 6975 FFFD 616B -End of Item 0785 - -Begin of Item 0786 - Format 1 - srcBegin = 9810 - srcEnd = 9813 - mappingOffset = 172F - Mapping = - 6768 6857 5A78 544B -End of Item 0786 - -Begin of Item 0787 - Format 1 - srcBegin = 9817 - srcEnd = 9818 - mappingOffset = 1733 - Mapping = - 7776 5645 -End of Item 0787 - -Begin of Item 0788 - Format 1 - srcBegin = 982D - srcEnd = 9830 - mappingOffset = 1735 - Mapping = - 5469 FFFD FFFD 7A7A -End of Item 0788 - -Begin of Item 0789 - Format 1 - srcBegin = 9838 - srcEnd = 983B - mappingOffset = 1739 - Mapping = - 4C72 775D FFFD 5E3A -End of Item 0789 - -Begin of Item 078A - Format 2 - srcBegin = 9846 - destBegin = 4E28 -End of Item 078A - -Begin of Item 078B - Format 1 - srcBegin = 984C - srcEnd = 984E - mappingOffset = 173D - Mapping = - 7039 647E 6449 -End of Item 078B - -Begin of Item 078C - Format 2 - srcBegin = 9854 - destBegin = 6454 -End of Item 078C - -Begin of Item 078D - Format 1 - srcBegin = 9858 - srcEnd = 985A - mappingOffset = 1740 - Mapping = - 6A43 FFFD 6F34 -End of Item 078D - -Begin of Item 078E - Format 2 - srcBegin = 985E - destBegin = 573E -End of Item 078E - -Begin of Item 078F - Format 1 - srcBegin = 9865 - srcEnd = 9867 - mappingOffset = 1743 - Mapping = - 7B62 FFFD 4D53 -End of Item 078F - -Begin of Item 0790 - Format 2 - srcBegin = 986B - destBegin = 6F35 -End of Item 0790 - -Begin of Item 0791 - Format 2 - srcBegin = 986F - destBegin = 7A69 -End of Item 0791 - -Begin of Item 0792 - Format 2 - srcBegin = 98A8 - destBegin = 7926 -End of Item 0792 - -Begin of Item 0793 - Format 1 - srcBegin = 98AF - srcEnd = 98B1 - mappingOffset = 1746 - Mapping = - 5F3D FFFD 7747 -End of Item 0793 - -Begin of Item 0794 - Format 1 - srcBegin = 98C4 - srcEnd = 98C7 - mappingOffset = 1749 - Mapping = - 787D FFFD FFFD 787C -End of Item 0794 - -Begin of Item 0795 - Format 1 - srcBegin = 98DB - srcEnd = 98E2 - mappingOffset = 174D - Mapping = - 5E2B 5B68 FFFD FFFD 635D FFFD 6162 5146 -End of Item 0795 - -Begin of Item 0796 - Format 1 - srcBegin = 98ED - srcEnd = 98EF - mappingOffset = 1755 - Mapping = - 7650 6B66 5A79 -End of Item 0796 - -Begin of Item 0797 - Format 2 - srcBegin = 98F4 - destBegin = 6C47 -End of Item 0797 - -Begin of Item 0798 - Format 1 - srcBegin = 98FC - srcEnd = 98FE - mappingOffset = 1758 - Mapping = - 5E78 7869 635E -End of Item 0798 - -Begin of Item 0799 - Format 2 - srcBegin = 9903 - destBegin = 4E75 -End of Item 0799 - -Begin of Item 079A - Format 1 - srcBegin = 9909 - srcEnd = 990C - mappingOffset = 175B - Mapping = - 7A43 6557 FFFD 6C48 -End of Item 079A - -Begin of Item 079B - Format 1 - srcBegin = 9910 - srcEnd = 9913 - mappingOffset = 175F - Mapping = - 7349 FFFD FFFD 643B -End of Item 079B - -Begin of Item 079C - Format 2 - srcBegin = 9918 - destBegin = 662E -End of Item 079C - -Begin of Item 079D - Format 1 - srcBegin = 991E - srcEnd = 9920 - mappingOffset = 1763 - Mapping = - 6F36 FFFD 5C3F -End of Item 079D - -Begin of Item 079E - Format 2 - srcBegin = 9928 - destBegin = 4E3D -End of Item 079E - -Begin of Item 079F - Format 2 - srcBegin = 9945 - destBegin = 5843 -End of Item 079F - -Begin of Item 07A0 - Format 1 - srcBegin = 9949 - srcEnd = 994D - mappingOffset = 1766 - Mapping = - 504F FFFD 4F7A 734A 6057 -End of Item 07A0 - -Begin of Item 07A1 - Format 1 - srcBegin = 9951 - srcEnd = 9957 - mappingOffset = 176B - Mapping = - 5147 692E FFFD 683D FFFD FFFD 7A44 -End of Item 07A1 - -Begin of Item 07A2 - Format 1 - srcBegin = 9996 - srcEnd = 9999 - mappingOffset = 1772 - Mapping = - 624F FFFD FFFD 7A45 -End of Item 07A2 - -Begin of Item 07A3 - Format 2 - srcBegin = 999D - destBegin = 7938 -End of Item 07A3 - -Begin of Item 07A4 - Format 1 - srcBegin = 99A5 - srcEnd = 99A8 - mappingOffset = 1776 - Mapping = - 5C60 FFFD FFFD 7B30 -End of Item 07A4 - -Begin of Item 07A5 - Format 1 - srcBegin = 99AC - srcEnd = 99B4 - mappingOffset = 177A - Mapping = - 5829 655F 7927 FFFD FFFD 766E FFFD 764C - 6278 -End of Item 07A5 - -Begin of Item 07A6 - Format 2 - srcBegin = 99B9 - destBegin = 6C71 -End of Item 07A6 - -Begin of Item 07A7 - Format 2 - srcBegin = 99C1 - destBegin = 5A60 -End of Item 07A7 - -Begin of Item 07A8 - Format 1 - srcBegin = 99D0 - srcEnd = 99D5 - mappingOffset = 1783 - Mapping = - 7152 524C 4F4B FFFD FFFD 4A3D -End of Item 07A8 - -Begin of Item 07A9 - Format 2 - srcBegin = 99D9 - destBegin = 5D3F -End of Item 07A9 - -Begin of Item 07AA - Format 1 - srcBegin = 99DD - srcEnd = 99DF - mappingOffset = 1789 - Mapping = - 766F FFFD 5E79 -End of Item 07AA - -Begin of Item 07AB - Format 2 - srcBegin = 99ED - destBegin = 7A34 -End of Item 07AB - -Begin of Item 07AC - Format 2 - srcBegin = 99F1 - destBegin = 552D -End of Item 07AC - -Begin of Item 07AD - Format 1 - srcBegin = 99FF - srcEnd = 9A01 - mappingOffset = 178C - Mapping = - 7167 FFFD 5E3E -End of Item 07AD - -Begin of Item 07AE - Format 2 - srcBegin = 9A08 - destBegin = 5C40 -End of Item 07AE - -Begin of Item 07AF - Format 1 - srcBegin = 9A0E - srcEnd = 9A0F - mappingOffset = 178F - Mapping = - 5148 5149 -End of Item 07AF - -Begin of Item 07B0 - Format 2 - srcBegin = 9A19 - destBegin = 783E -End of Item 07B0 - -Begin of Item 07B1 - Format 2 - srcBegin = 9A2B - destBegin = 4B76 -End of Item 07B1 - -Begin of Item 07B2 - Format 2 - srcBegin = 9A30 - destBegin = 5479 -End of Item 07B2 - -Begin of Item 07B3 - Format 1 - srcBegin = 9A36 - srcEnd = 9A37 - mappingOffset = 1791 - Mapping = - 7562 6153 -End of Item 07B3 - -Begin of Item 07B4 - Format 1 - srcBegin = 9A40 - srcEnd = 9A45 - mappingOffset = 1793 - Mapping = - 5869 FFFD FFFD 787E FFFD 4F4C -End of Item 07B4 - -Begin of Item 07B5 - Format 2 - srcBegin = 9A4D - destBegin = 7D24 -End of Item 07B5 - -Begin of Item 07B6 - Format 1 - srcBegin = 9A55 - srcEnd = 9A5B - mappingOffset = 1799 - Mapping = - 4E76 FFFD 7A50 FFFD FFFD 4C73 663E -End of Item 07B6 - -Begin of Item 07B7 - Format 1 - srcBegin = 9A5F - srcEnd = 9A65 - mappingOffset = 17A0 - Mapping = - 762E FFFD FFFD 5570 FFFD FFFD 514A -End of Item 07B7 - -Begin of Item 07B8 - Format 1 - srcBegin = 9A69 - srcEnd = 9A6A - mappingOffset = 17A7 - Mapping = - 7C3E 5571 -End of Item 07B8 - -Begin of Item 07B9 - Format 2 - srcBegin = 9AA8 - destBegin = 4D69 -End of Item 07B9 - -Begin of Item 07BA - Format 2 - srcBegin = 9AB8 - destBegin = 7A35 -End of Item 07BA - -Begin of Item 07BB - Format 1 - srcBegin = 9AD3 - srcEnd = 9AD4 - mappingOffset = 17A9 - Mapping = - 6250 7477 -End of Item 07BB - -Begin of Item 07BC - Format 2 - srcBegin = 9AD8 - destBegin = 4D54 -End of Item 07BC - -Begin of Item 07BD - Format 2 - srcBegin = 9AE5 - destBegin = 6723 -End of Item 07BD - -Begin of Item 07BE - Format 2 - srcBegin = 9AEE - destBegin = 5B25 -End of Item 07BE - -Begin of Item 07BF - Format 2 - srcBegin = 9B1A - destBegin = 6251 -End of Item 07BF - -Begin of Item 07C0 - Format 1 - srcBegin = 9B27 - srcEnd = 9B2A - mappingOffset = 17AB - Mapping = - 5722 FFFD FFFD 7763 -End of Item 07C0 - -Begin of Item 07C1 - Format 2 - srcBegin = 9B31 - destBegin = 6A26 -End of Item 07C1 - -Begin of Item 07C2 - Format 2 - srcBegin = 9B3C - destBegin = 5021 -End of Item 07C2 - -Begin of Item 07C3 - Format 1 - srcBegin = 9B41 - srcEnd = 9B45 - mappingOffset = 17AF - Mapping = - 4E5A 7B6B 5B26 5B5E 5865 -End of Item 07C3 - -Begin of Item 07C4 - Format 2 - srcBegin = 9B4F - destBegin = 6A60 -End of Item 07C4 - -Begin of Item 07C5 - Format 2 - srcBegin = 9B54 - destBegin = 582A -End of Item 07C5 - -Begin of Item 07C6 - Format 2 - srcBegin = 9B5A - destBegin = 6560 -End of Item 07C6 - -Begin of Item 07C7 - Format 2 - srcBegin = 9B6F - destBegin = 565B -End of Item 07C7 - -Begin of Item 07C8 - Format 1 - srcBegin = 9B8E - srcEnd = 9B91 - mappingOffset = 17B4 - Mapping = - 6F46 FFFD FFFD 786A -End of Item 07C8 - -Begin of Item 07C9 - Format 2 - srcBegin = 9B9F - destBegin = 6455 -End of Item 07C9 - -Begin of Item 07CA - Format 1 - srcBegin = 9BAB - srcEnd = 9BAE - mappingOffset = 17B8 - Mapping = - 4E77 FFFD FFFD 6058 -End of Item 07CA - -Begin of Item 07CB - Format 2 - srcBegin = 9BC9 - destBegin = 576F -End of Item 07CB - -Begin of Item 07CC - Format 2 - srcBegin = 9BD6 - destBegin = 746D -End of Item 07CC - -Begin of Item 07CD - Format 2 - srcBegin = 9BE4 - destBegin = 4D66 -End of Item 07CD - -Begin of Item 07CE - Format 2 - srcBegin = 9BE8 - destBegin = 4C74 -End of Item 07CE - -Begin of Item 07CF - Format 1 - srcBegin = 9C0D - srcEnd = 9C15 - mappingOffset = 17BC - Mapping = - 7563 FFFD FFFD 644A FFFD 5C61 FFFD FFFD - 7948 -End of Item 07CF - -Begin of Item 07D0 - Format 2 - srcBegin = 9C25 - destBegin = 7C3F -End of Item 07D0 - -Begin of Item 07D1 - Format 2 - srcBegin = 9C32 - destBegin = 6827 -End of Item 07D1 - -Begin of Item 07D2 - Format 2 - srcBegin = 9C3B - destBegin = 5844 -End of Item 07D2 - -Begin of Item 07D3 - Format 1 - srcBegin = 9C47 - srcEnd = 9C49 - mappingOffset = 17C5 - Mapping = - 4B3E FFFD 5C2E -End of Item 07D3 - -Begin of Item 07D4 - Format 2 - srcBegin = 9C57 - destBegin = 5777 -End of Item 07D4 - -Begin of Item 07D5 - Format 1 - srcBegin = 9CE5 - srcEnd = 9CE9 - mappingOffset = 17C8 - Mapping = - 7068 FFFD 5D40 FFFD 4F4D -End of Item 07D5 - -Begin of Item 07D6 - Format 1 - srcBegin = 9CF3 - srcEnd = 9CF6 - mappingOffset = 17CD - Mapping = - 5C73 5930 FFFD 6669 -End of Item 07D6 - -Begin of Item 07D7 - Format 2 - srcBegin = 9D09 - destBegin = 643C -End of Item 07D7 - -Begin of Item 07D8 - Format 2 - srcBegin = 9D1B - destBegin = 6A44 -End of Item 07D8 - -Begin of Item 07D9 - Format 1 - srcBegin = 9D26 - srcEnd = 9D28 - mappingOffset = 17D1 - Mapping = - 646C FFFD 6465 -End of Item 07D9 - -Begin of Item 07DA - Format 2 - srcBegin = 9D3B - destBegin = 7B78 -End of Item 07DA - -Begin of Item 07DB - Format 2 - srcBegin = 9D51 - destBegin = 4C3B -End of Item 07DB - -Begin of Item 07DC - Format 1 - srcBegin = 9D5D - srcEnd = 9D61 - mappingOffset = 17D4 - Mapping = - 643D FFFD FFFD 4D5C 5977 -End of Item 07DC - -Begin of Item 07DD - Format 2 - srcBegin = 9D6C - destBegin = 5D5F -End of Item 07DD - -Begin of Item 07DE - Format 2 - srcBegin = 9D72 - destBegin = 6D4E -End of Item 07DE - -Begin of Item 07DF - Format 2 - srcBegin = 9DA9 - destBegin = 5950 -End of Item 07DF - -Begin of Item 07E0 - Format 2 - srcBegin = 9DAF - destBegin = 6523 -End of Item 07E0 - -Begin of Item 07E1 - Format 2 - srcBegin = 9DB4 - destBegin = 794D -End of Item 07E1 - -Begin of Item 07E2 - Format 2 - srcBegin = 9DC4 - destBegin = 4D2E -End of Item 07E2 - -Begin of Item 07E3 - Format 2 - srcBegin = 9DD7 - destBegin = 4F4E -End of Item 07E3 - -Begin of Item 07E4 - Format 2 - srcBegin = 9DF2 - destBegin = 762F -End of Item 07E4 - -Begin of Item 07E5 - Format 1 - srcBegin = 9DF8 - srcEnd = 9DFA - mappingOffset = 17D9 - Mapping = - 7D53 6B6D 565C -End of Item 07E5 - -Begin of Item 07E6 - Format 2 - srcBegin = 9E1A - destBegin = 6524 -End of Item 07E6 - -Begin of Item 07E7 - Format 2 - srcBegin = 9E1E - destBegin = 5536 -End of Item 07E7 - -Begin of Item 07E8 - Format 2 - srcBegin = 9E75 - destBegin = 565D -End of Item 07E8 - -Begin of Item 07E9 - Format 2 - srcBegin = 9E79 - destBegin = 7969 -End of Item 07E9 - -Begin of Item 07EA - Format 1 - srcBegin = 9E7D - srcEnd = 9E7F - mappingOffset = 17DC - Mapping = - 6724 FFFD 5663 -End of Item 07EA - -Begin of Item 07EB - Format 1 - srcBegin = 9E92 - srcEnd = 9E93 - mappingOffset = 17DF - Mapping = - 514B 5664 -End of Item 07EB - -Begin of Item 07EC - Format 2 - srcBegin = 9E97 - destBegin = 5572 -End of Item 07EC - -Begin of Item 07ED - Format 1 - srcBegin = 9E9D - srcEnd = 9E9F - mappingOffset = 17E1 - Mapping = - 5E7A FFFD 5778 -End of Item 07ED - -Begin of Item 07EE - Format 2 - srcBegin = 9EA5 - destBegin = 586A -End of Item 07EE - -Begin of Item 07EF - Format 1 - srcBegin = 9EB4 - srcEnd = 9EB5 - mappingOffset = 17E4 - Mapping = - 4F55 587D -End of Item 07EF - -Begin of Item 07F0 - Format 1 - srcBegin = 9EBB - srcEnd = 9EBE - mappingOffset = 17E6 - Mapping = - 582B FFFD FFFD 7D4B -End of Item 07F0 - -Begin of Item 07F1 - Format 2 - srcBegin = 9EC3 - destBegin = 7C5C -End of Item 07F1 - -Begin of Item 07F2 - Format 1 - srcBegin = 9ECD - srcEnd = 9ED4 - mappingOffset = 17EA - Mapping = - 6028 5573 FFFD FFFD 7D59 FFFD FFFD 4C23 -End of Item 07F2 - -Begin of Item 07F3 - Format 1 - srcBegin = 9ED8 - srcEnd = 9EDE - mappingOffset = 17F2 - Mapping = - 5979 FFFD FFFD 536A 7575 FFFD 6F47 -End of Item 07F3 - -Begin of Item 07F4 - Format 2 - srcBegin = 9EE8 - destBegin = 535A -End of Item 07F4 - -Begin of Item 07F5 - Format 2 - srcBegin = 9EF4 - destBegin = 5A3D -End of Item 07F5 - -Begin of Item 07F6 - Format 1 - srcBegin = 9F07 - srcEnd = 9F08 - mappingOffset = 17F9 - Mapping = - 6828 5C2F -End of Item 07F6 - -Begin of Item 07F7 - Format 2 - srcBegin = 9F0E - destBegin = 7023 -End of Item 07F7 - -Begin of Item 07F8 - Format 2 - srcBegin = 9F13 - destBegin = 4D55 -End of Item 07F8 - -Begin of Item 07F9 - Format 2 - srcBegin = 9F20 - destBegin = 6029 -End of Item 07F9 - -Begin of Item 07FA - Format 2 - srcBegin = 9F3B - destBegin = 5E2C -End of Item 07FA - -Begin of Item 07FB - Format 1 - srcBegin = 9F4A - srcEnd = 9F4E - mappingOffset = 17FB - Mapping = - 703A 6E31 FFFD FFFD 6E32 -End of Item 07FB - -Begin of Item 07FC - Format 2 - srcBegin = 9F52 - destBegin = 764D -End of Item 07FC - -Begin of Item 07FD - Format 1 - srcBegin = 9F5F - srcEnd = 9F61 - mappingOffset = 1800 - Mapping = - 6E52 FFFD 5646 -End of Item 07FD - -Begin of Item 07FE - Format 1 - srcBegin = 9F67 - srcEnd = 9F6C - mappingOffset = 1803 - Mapping = - 6065 FFFD FFFD 733B FFFD 6561 -End of Item 07FE - -Begin of Item 07FF - Format 2 - srcBegin = 9F77 - destBegin = 644B -End of Item 07FF - -Begin of Item 0800 - Format 1 - srcBegin = 9F8D - srcEnd = 9F90 - mappingOffset = 1809 - Mapping = - 5723 FFFD FFFD 5B42 -End of Item 0800 - -Begin of Item 0801 - Format 2 - srcBegin = 9F95 - destBegin = 4A7E -End of Item 0801 - -Begin of Item 0802 - Format 2 - srcBegin = 9F9C - destBegin = 4F4F -End of Item 0802 - -Begin of Item 0803 - Format 1 - srcBegin = AC00 - srcEnd = AC04 - mappingOffset = 180D - Mapping = - 3021 3022 FFFD FFFD 3023 -End of Item 0803 - -Begin of Item 0804 - Format 2 - srcBegin = AC20 - destBegin = 3035 -End of Item 0804 - -Begin of Item 0805 - Format 2 - srcBegin = AC24 - destBegin = 3036 -End of Item 0805 - -Begin of Item 0806 - Format 1 - srcBegin = AC2C - srcEnd = AC2D - mappingOffset = 1812 - Mapping = - 3037 3038 -End of Item 0806 - -Begin of Item 0807 - Format 1 - srcBegin = AC38 - srcEnd = AC3C - mappingOffset = 1814 - Mapping = - 303C 303D FFFD FFFD 303E -End of Item 0807 - -Begin of Item 0808 - Format 2 - srcBegin = AC40 - destBegin = 303F -End of Item 0808 - -Begin of Item 0809 - Format 1 - srcBegin = AC4B - srcEnd = AC4D - mappingOffset = 1819 - Mapping = - 3040 FFFD 3041 -End of Item 0809 - -Begin of Item 080A - Format 2 - srcBegin = AC54 - destBegin = 3042 -End of Item 080A - -Begin of Item 080B - Format 2 - srcBegin = AC58 - destBegin = 3043 -End of Item 080B - -Begin of Item 080C - Format 2 - srcBegin = AC5C - destBegin = 3044 -End of Item 080C - -Begin of Item 080D - Format 1 - srcBegin = AC70 - srcEnd = AC7A - mappingOffset = 181C - Mapping = - 3045 3046 FFFD FFFD 3047 FFFD FFFD 3048 - 3049 FFFD 304A -End of Item 080D - -Begin of Item 080E - Format 1 - srcBegin = AC80 - srcEnd = AC81 - mappingOffset = 1827 - Mapping = - 304B 304C -End of Item 080E - -Begin of Item 080F - Format 2 - srcBegin = AC90 - destBegin = 3055 -End of Item 080F - -Begin of Item 0810 - Format 2 - srcBegin = AC94 - destBegin = 3056 -End of Item 0810 - -Begin of Item 0811 - Format 1 - srcBegin = AC9C - srcEnd = AC9D - mappingOffset = 1829 - Mapping = - 3057 3058 -End of Item 0811 - -Begin of Item 0812 - Format 1 - srcBegin = ACAC - srcEnd = ACB0 - mappingOffset = 182B - Mapping = - 305F FFFD FFFD 3060 3061 -End of Item 0812 - -Begin of Item 0813 - Format 1 - srcBegin = ACB8 - srcEnd = ACB9 - mappingOffset = 1830 - Mapping = - 3062 3063 -End of Item 0813 - -Begin of Item 0814 - Format 1 - srcBegin = ACC1 - srcEnd = ACC4 - mappingOffset = 1832 - Mapping = - 3067 FFFD FFFD 3068 -End of Item 0814 - -Begin of Item 0815 - Format 2 - srcBegin = ACC8 - destBegin = 3069 -End of Item 0815 - -Begin of Item 0816 - Format 2 - srcBegin = ACCC - destBegin = 306A -End of Item 0816 - -Begin of Item 0817 - Format 1 - srcBegin = ACD5 - srcEnd = ACD7 - mappingOffset = 1836 - Mapping = - 306B FFFD 306C -End of Item 0817 - -Begin of Item 0818 - Format 1 - srcBegin = ACE0 - srcEnd = ACEC - mappingOffset = 1839 - Mapping = - 306D 306E FFFD FFFD 306F FFFD FFFD 3070 - 3071 FFFD 3072 FFFD 3073 -End of Item 0818 - -Begin of Item 0819 - Format 1 - srcBegin = ACF3 - srcEnd = ACF6 - mappingOffset = 1846 - Mapping = - 3077 FFFD 3078 3079 -End of Item 0819 - -Begin of Item 081A - Format 1 - srcBegin = ACFC - srcEnd = AD00 - mappingOffset = 184A - Mapping = - 307A 307B FFFD FFFD 307C -End of Item 081A - -Begin of Item 081B - Format 1 - srcBegin = AD04 - srcEnd = AD06 - mappingOffset = 184F - Mapping = - 307D FFFD 307E -End of Item 081B - -Begin of Item 081C - Format 1 - srcBegin = AD0C - srcEnd = AD11 - mappingOffset = 1852 - Mapping = - 3121 3122 FFFD 3123 FFFD 3124 -End of Item 081C - -Begin of Item 081D - Format 2 - srcBegin = AD18 - destBegin = 3125 -End of Item 081D - -Begin of Item 081E - Format 2 - srcBegin = AD1C - destBegin = 3126 -End of Item 081E - -Begin of Item 081F - Format 2 - srcBegin = AD20 - destBegin = 3127 -End of Item 081F - -Begin of Item 0820 - Format 1 - srcBegin = AD29 - srcEnd = AD2D - mappingOffset = 1858 - Mapping = - 3128 FFFD FFFD 3129 312A -End of Item 0820 - -Begin of Item 0821 - Format 1 - srcBegin = AD34 - srcEnd = AD38 - mappingOffset = 185D - Mapping = - 312B 312C FFFD FFFD 312D -End of Item 0821 - -Begin of Item 0822 - Format 2 - srcBegin = AD3C - destBegin = 312E -End of Item 0822 - -Begin of Item 0823 - Format 1 - srcBegin = AD44 - srcEnd = AD49 - mappingOffset = 1862 - Mapping = - 312F 3130 FFFD 3131 FFFD 3132 -End of Item 0823 - -Begin of Item 0824 - Format 2 - srcBegin = AD50 - destBegin = 3133 -End of Item 0824 - -Begin of Item 0825 - Format 2 - srcBegin = AD54 - destBegin = 3134 -End of Item 0825 - -Begin of Item 0826 - Format 2 - srcBegin = AD58 - destBegin = 3135 -End of Item 0826 - -Begin of Item 0827 - Format 1 - srcBegin = AD61 - srcEnd = AD63 - mappingOffset = 1868 - Mapping = - 3136 FFFD 3137 -End of Item 0827 - -Begin of Item 0828 - Format 1 - srcBegin = AD6C - srcEnd = AD70 - mappingOffset = 186B - Mapping = - 3138 3139 FFFD FFFD 313A -End of Item 0828 - -Begin of Item 0829 - Format 1 - srcBegin = AD7F - srcEnd = AD82 - mappingOffset = 1870 - Mapping = - 3142 FFFD 3143 3144 -End of Item 0829 - -Begin of Item 082A - Format 1 - srcBegin = AD88 - srcEnd = AD8C - mappingOffset = 1874 - Mapping = - 3145 3146 FFFD FFFD 3147 -End of Item 082A - -Begin of Item 082B - Format 2 - srcBegin = AD90 - destBegin = 3148 -End of Item 082B - -Begin of Item 082C - Format 1 - srcBegin = AD9C - srcEnd = AD9D - mappingOffset = 1879 - Mapping = - 3149 314A -End of Item 082C - -Begin of Item 082D - Format 2 - srcBegin = ADA4 - destBegin = 314B -End of Item 082D - -Begin of Item 082E - Format 2 - srcBegin = ADB7 - destBegin = 314C -End of Item 082E - -Begin of Item 082F - Format 1 - srcBegin = ADC0 - srcEnd = ADC4 - mappingOffset = 187B - Mapping = - 314D 314E FFFD FFFD 314F -End of Item 082F - -Begin of Item 0830 - Format 2 - srcBegin = ADC8 - destBegin = 3150 -End of Item 0830 - -Begin of Item 0831 - Format 1 - srcBegin = ADD0 - srcEnd = ADD3 - mappingOffset = 1880 - Mapping = - 3151 3152 FFFD 3153 -End of Item 0831 - -Begin of Item 0832 - Format 2 - srcBegin = ADDC - destBegin = 3154 -End of Item 0832 - -Begin of Item 0833 - Format 2 - srcBegin = ADE0 - destBegin = 3155 -End of Item 0833 - -Begin of Item 0834 - Format 2 - srcBegin = ADE4 - destBegin = 3156 -End of Item 0834 - -Begin of Item 0835 - Format 1 - srcBegin = ADF8 - srcEnd = ADFC - mappingOffset = 1884 - Mapping = - 3157 3158 FFFD FFFD 3159 -End of Item 0835 - -Begin of Item 0836 - Format 1 - srcBegin = AE08 - srcEnd = AE0D - mappingOffset = 1889 - Mapping = - 315D 315E FFFD 315F FFFD 3160 -End of Item 0836 - -Begin of Item 0837 - Format 2 - srcBegin = AE14 - destBegin = 3161 -End of Item 0837 - -Begin of Item 0838 - Format 1 - srcBegin = AE30 - srcEnd = AE3A - mappingOffset = 188F - Mapping = - 3162 3163 FFFD FFFD 3164 FFFD FFFD 3165 - 3166 FFFD 3167 -End of Item 0838 - -Begin of Item 0839 - Format 1 - srcBegin = AE40 - srcEnd = AE46 - mappingOffset = 189A - Mapping = - 3168 3169 FFFD 316A FFFD 316B 316C -End of Item 0839 - -Begin of Item 083A - Format 2 - srcBegin = AE4A - destBegin = 316D -End of Item 083A - -Begin of Item 083B - Format 2 - srcBegin = AE50 - destBegin = 3171 -End of Item 083B - -Begin of Item 083C - Format 1 - srcBegin = AE54 - srcEnd = AE56 - mappingOffset = 18A1 - Mapping = - 3172 FFFD 3173 -End of Item 083C - -Begin of Item 083D - Format 1 - srcBegin = AE5C - srcEnd = AE5D - mappingOffset = 18A4 - Mapping = - 3174 3175 -End of Item 083D - -Begin of Item 083E - Format 1 - srcBegin = AE65 - srcEnd = AE6C - mappingOffset = 18A6 - Mapping = - 3179 FFFD FFFD 317A 317B FFFD FFFD 317C -End of Item 083E - -Begin of Item 083F - Format 2 - srcBegin = AE70 - destBegin = 317D -End of Item 083F - -Begin of Item 0840 - Format 1 - srcBegin = AE78 - srcEnd = AE79 - mappingOffset = 18AE - Mapping = - 317E 3221 -End of Item 0840 - -Begin of Item 0841 - Format 1 - srcBegin = AE84 - srcEnd = AE85 - mappingOffset = 18B0 - Mapping = - 3225 3226 -End of Item 0841 - -Begin of Item 0842 - Format 2 - srcBegin = AE8C - destBegin = 3227 -End of Item 0842 - -Begin of Item 0843 - Format 2 - srcBegin = AEC0 - destBegin = 322B -End of Item 0843 - -Begin of Item 0844 - Format 2 - srcBegin = AEC4 - destBegin = 322C -End of Item 0844 - -Begin of Item 0845 - Format 1 - srcBegin = AECC - srcEnd = AECD - mappingOffset = 18B2 - Mapping = - 322D 322E -End of Item 0845 - -Begin of Item 0846 - Format 1 - srcBegin = AED8 - srcEnd = AEDC - mappingOffset = 18B4 - Mapping = - 3232 3233 FFFD FFFD 3234 -End of Item 0846 - -Begin of Item 0847 - Format 1 - srcBegin = AEE8 - srcEnd = AEED - mappingOffset = 18B9 - Mapping = - 3235 FFFD FFFD 3236 FFFD 3237 -End of Item 0847 - -Begin of Item 0848 - Format 2 - srcBegin = AEF4 - destBegin = 3238 -End of Item 0848 - -Begin of Item 0849 - Format 2 - srcBegin = AEF8 - destBegin = 3239 -End of Item 0849 - -Begin of Item 084A - Format 2 - srcBegin = AEFC - destBegin = 323A -End of Item 084A - -Begin of Item 084B - Format 1 - srcBegin = AF07 - srcEnd = AF08 - mappingOffset = 18BF - Mapping = - 323B 323C -End of Item 084B - -Begin of Item 084C - Format 1 - srcBegin = AF0D - srcEnd = AF10 - mappingOffset = 18C1 - Mapping = - 323D FFFD FFFD 323E -End of Item 084C - -Begin of Item 084D - Format 1 - srcBegin = AF2C - srcEnd = AF34 - mappingOffset = 18C5 - Mapping = - 323F 3240 FFFD FFFD 3241 FFFD 3242 FFFD - 3243 -End of Item 084D - -Begin of Item 084E - Format 1 - srcBegin = AF3C - srcEnd = AF3F - mappingOffset = 18CE - Mapping = - 3244 3245 FFFD 3246 -End of Item 084E - -Begin of Item 084F - Format 1 - srcBegin = AF48 - srcEnd = AF49 - mappingOffset = 18D2 - Mapping = - 324A 324B -End of Item 084F - -Begin of Item 0850 - Format 2 - srcBegin = AF50 - destBegin = 324C -End of Item 0850 - -Begin of Item 0851 - Format 1 - srcBegin = AF5C - srcEnd = AF5D - mappingOffset = 18D4 - Mapping = - 324D 324E -End of Item 0851 - -Begin of Item 0852 - Format 1 - srcBegin = AF64 - srcEnd = AF65 - mappingOffset = 18D6 - Mapping = - 324F 3250 -End of Item 0852 - -Begin of Item 0853 - Format 2 - srcBegin = AF79 - destBegin = 3251 -End of Item 0853 - -Begin of Item 0854 - Format 2 - srcBegin = AF80 - destBegin = 3252 -End of Item 0854 - -Begin of Item 0855 - Format 2 - srcBegin = AF84 - destBegin = 3253 -End of Item 0855 - -Begin of Item 0856 - Format 2 - srcBegin = AF88 - destBegin = 3254 -End of Item 0856 - -Begin of Item 0857 - Format 1 - srcBegin = AF90 - srcEnd = AF91 - mappingOffset = 18D8 - Mapping = - 3255 3256 -End of Item 0857 - -Begin of Item 0858 - Format 2 - srcBegin = AF95 - destBegin = 3257 -End of Item 0858 - -Begin of Item 0859 - Format 2 - srcBegin = AF9C - destBegin = 3258 -End of Item 0859 - -Begin of Item 085A - Format 1 - srcBegin = AFB8 - srcEnd = AFBC - mappingOffset = 18DA - Mapping = - 3259 325A FFFD FFFD 325B -End of Item 085A - -Begin of Item 085B - Format 2 - srcBegin = AFC0 - destBegin = 325C -End of Item 085B - -Begin of Item 085C - Format 1 - srcBegin = AFCB - srcEnd = AFCE - mappingOffset = 18DF - Mapping = - 3260 FFFD 3261 3262 -End of Item 085C - -Begin of Item 085D - Format 2 - srcBegin = AFD4 - destBegin = 3263 -End of Item 085D - -Begin of Item 085E - Format 2 - srcBegin = AFDC - destBegin = 3264 -End of Item 085E - -Begin of Item 085F - Format 1 - srcBegin = AFE8 - srcEnd = AFE9 - mappingOffset = 18E3 - Mapping = - 3265 3266 -End of Item 085F - -Begin of Item 0860 - Format 1 - srcBegin = AFF0 - srcEnd = AFF4 - mappingOffset = 18E5 - Mapping = - 3267 3268 FFFD FFFD 3269 -End of Item 0860 - -Begin of Item 0861 - Format 2 - srcBegin = AFF8 - destBegin = 326A -End of Item 0861 - -Begin of Item 0862 - Format 1 - srcBegin = B000 - srcEnd = B004 - mappingOffset = 18EA - Mapping = - 326B 326C FFFD FFFD 326D -End of Item 0862 - -Begin of Item 0863 - Format 2 - srcBegin = B00C - destBegin = 326E -End of Item 0863 - -Begin of Item 0864 - Format 2 - srcBegin = B010 - destBegin = 326F -End of Item 0864 - -Begin of Item 0865 - Format 2 - srcBegin = B014 - destBegin = 3270 -End of Item 0865 - -Begin of Item 0866 - Format 1 - srcBegin = B01C - srcEnd = B01D - mappingOffset = 18EF - Mapping = - 3271 3272 -End of Item 0866 - -Begin of Item 0867 - Format 2 - srcBegin = B028 - destBegin = 3273 -End of Item 0867 - -Begin of Item 0868 - Format 1 - srcBegin = B044 - srcEnd = B04E - mappingOffset = 18F1 - Mapping = - 3274 3275 FFFD FFFD 3276 FFFD 3277 FFFD - 3278 FFFD 3279 -End of Item 0868 - -Begin of Item 0869 - Format 1 - srcBegin = B057 - srcEnd = B059 - mappingOffset = 18FC - Mapping = - 327D FFFD 327E -End of Item 0869 - -Begin of Item 086A - Format 2 - srcBegin = B05D - destBegin = 3321 -End of Item 086A - -Begin of Item 086B - Format 1 - srcBegin = B07C - srcEnd = B080 - mappingOffset = 18FF - Mapping = - 3322 3323 FFFD FFFD 3324 -End of Item 086B - -Begin of Item 086C - Format 2 - srcBegin = B084 - destBegin = 3325 -End of Item 086C - -Begin of Item 086D - Format 1 - srcBegin = B08C - srcEnd = B091 - mappingOffset = 1904 - Mapping = - 3326 3327 FFFD 3328 FFFD 3329 -End of Item 086D - -Begin of Item 086E - Format 2 - srcBegin = B09C - destBegin = 332D -End of Item 086E - -Begin of Item 086F - Format 1 - srcBegin = B0A8 - srcEnd = B0A9 - mappingOffset = 190A - Mapping = - 3332 3333 -End of Item 086F - -Begin of Item 0870 - Format 2 - srcBegin = B0B1 - destBegin = 3339 -End of Item 0870 - -Begin of Item 0871 - Format 2 - srcBegin = B0B8 - destBegin = 333D -End of Item 0871 - -Begin of Item 0872 - Format 2 - srcBegin = B0BC - destBegin = 333E -End of Item 0872 - -Begin of Item 0873 - Format 1 - srcBegin = B0C4 - srcEnd = B0C5 - mappingOffset = 190C - Mapping = - 333F 3340 -End of Item 0873 - -Begin of Item 0874 - Format 1 - srcBegin = B0D0 - srcEnd = B0D4 - mappingOffset = 190E - Mapping = - 3344 3345 FFFD FFFD 3346 -End of Item 0874 - -Begin of Item 0875 - Format 2 - srcBegin = B0D8 - destBegin = 3347 -End of Item 0875 - -Begin of Item 0876 - Format 2 - srcBegin = B0E0 - destBegin = 3348 -End of Item 0876 - -Begin of Item 0877 - Format 2 - srcBegin = B0E5 - destBegin = 3349 -End of Item 0877 - -Begin of Item 0878 - Format 1 - srcBegin = B108 - srcEnd = B10C - mappingOffset = 1913 - Mapping = - 334A 334B FFFD 334C 334D -End of Item 0878 - -Begin of Item 0879 - Format 1 - srcBegin = B110 - srcEnd = B113 - mappingOffset = 1918 - Mapping = - 334E FFFD 334F 3350 -End of Item 0879 - -Begin of Item 087A - Format 1 - srcBegin = B118 - srcEnd = B119 - mappingOffset = 191C - Mapping = - 3351 3352 -End of Item 087A - -Begin of Item 087B - Format 2 - srcBegin = B128 - destBegin = 3359 -End of Item 087B - -Begin of Item 087C - Format 2 - srcBegin = B12C - destBegin = 335A -End of Item 087C - -Begin of Item 087D - Format 1 - srcBegin = B134 - srcEnd = B135 - mappingOffset = 191E - Mapping = - 335B 335C -End of Item 087D - -Begin of Item 087E - Format 1 - srcBegin = B140 - srcEnd = B144 - mappingOffset = 1920 - Mapping = - 3360 3361 FFFD FFFD 3362 -End of Item 087E - -Begin of Item 087F - Format 2 - srcBegin = B148 - destBegin = 3363 -End of Item 087F - -Begin of Item 0880 - Format 1 - srcBegin = B150 - srcEnd = B158 - mappingOffset = 1925 - Mapping = - 3364 3365 FFFD FFFD 3366 3367 FFFD FFFD - 3368 -End of Item 0880 - -Begin of Item 0881 - Format 2 - srcBegin = B15C - destBegin = 3369 -End of Item 0881 - -Begin of Item 0882 - Format 2 - srcBegin = B160 - destBegin = 336A -End of Item 0882 - -Begin of Item 0883 - Format 1 - srcBegin = B178 - srcEnd = B17C - mappingOffset = 192E - Mapping = - 336B 336C FFFD FFFD 336D -End of Item 0883 - -Begin of Item 0884 - Format 1 - srcBegin = B180 - srcEnd = B182 - mappingOffset = 1933 - Mapping = - 336E FFFD 336F -End of Item 0884 - -Begin of Item 0885 - Format 1 - srcBegin = B188 - srcEnd = B18D - mappingOffset = 1936 - Mapping = - 3370 3371 FFFD 3372 FFFD 3373 -End of Item 0885 - -Begin of Item 0886 - Format 2 - srcBegin = B198 - destBegin = 3377 -End of Item 0886 - -Begin of Item 0887 - Format 2 - srcBegin = B19C - destBegin = 3378 -End of Item 0887 - -Begin of Item 0888 - Format 2 - srcBegin = B1A8 - destBegin = 3379 -End of Item 0888 - -Begin of Item 0889 - Format 2 - srcBegin = B1CC - destBegin = 337A -End of Item 0889 - -Begin of Item 088A - Format 2 - srcBegin = B1D0 - destBegin = 337B -End of Item 088A - -Begin of Item 088B - Format 2 - srcBegin = B1D4 - destBegin = 337C -End of Item 088B - -Begin of Item 088C - Format 1 - srcBegin = B1DC - srcEnd = B1DF - mappingOffset = 193C - Mapping = - 337D 337E FFFD 3421 -End of Item 088C - -Begin of Item 088D - Format 1 - srcBegin = B1E8 - srcEnd = B1EC - mappingOffset = 1940 - Mapping = - 3422 3423 FFFD FFFD 3424 -End of Item 088D - -Begin of Item 088E - Format 2 - srcBegin = B1F0 - destBegin = 3425 -End of Item 088E - -Begin of Item 088F - Format 1 - srcBegin = B1F9 - srcEnd = B1FD - mappingOffset = 1945 - Mapping = - 3426 FFFD 3427 FFFD 3428 -End of Item 088F - -Begin of Item 0890 - Format 1 - srcBegin = B204 - srcEnd = B20C - mappingOffset = 194A - Mapping = - 3429 342A FFFD FFFD 342B FFFD FFFD 342C - 342D -End of Item 0890 - -Begin of Item 0891 - Format 1 - srcBegin = B214 - srcEnd = B219 - mappingOffset = 1953 - Mapping = - 342E 342F FFFD 3430 FFFD 3431 -End of Item 0891 - -Begin of Item 0892 - Format 2 - srcBegin = B220 - destBegin = 3432 -End of Item 0892 - -Begin of Item 0893 - Format 2 - srcBegin = B234 - destBegin = 3433 -End of Item 0893 - -Begin of Item 0894 - Format 2 - srcBegin = B23C - destBegin = 3434 -End of Item 0894 - -Begin of Item 0895 - Format 2 - srcBegin = B258 - destBegin = 3435 -End of Item 0895 - -Begin of Item 0896 - Format 2 - srcBegin = B25C - destBegin = 3436 -End of Item 0896 - -Begin of Item 0897 - Format 2 - srcBegin = B260 - destBegin = 3437 -End of Item 0897 - -Begin of Item 0898 - Format 1 - srcBegin = B268 - srcEnd = B269 - mappingOffset = 1959 - Mapping = - 3438 3439 -End of Item 0898 - -Begin of Item 0899 - Format 1 - srcBegin = B274 - srcEnd = B275 - mappingOffset = 195B - Mapping = - 343A 343B -End of Item 0899 - -Begin of Item 089A - Format 2 - srcBegin = B27C - destBegin = 343C -End of Item 089A - -Begin of Item 089B - Format 1 - srcBegin = B284 - srcEnd = B285 - mappingOffset = 195D - Mapping = - 343D 343E -End of Item 089B - -Begin of Item 089C - Format 2 - srcBegin = B289 - destBegin = 343F -End of Item 089C - -Begin of Item 089D - Format 1 - srcBegin = B290 - srcEnd = B294 - mappingOffset = 195F - Mapping = - 3440 3441 FFFD FFFD 3442 -End of Item 089D - -Begin of Item 089E - Format 1 - srcBegin = B2A0 - srcEnd = B2A6 - mappingOffset = 1964 - Mapping = - 3446 3447 FFFD 3448 FFFD 3449 344A -End of Item 089E - -Begin of Item 089F - Format 1 - srcBegin = B2AA - srcEnd = B2AC - mappingOffset = 196B - Mapping = - 344B FFFD 344C -End of Item 089F - -Begin of Item 08A0 - Format 2 - srcBegin = B2B0 - destBegin = 344D -End of Item 08A0 - -Begin of Item 08A1 - Format 2 - srcBegin = B2B4 - destBegin = 344E -End of Item 08A1 - -Begin of Item 08A2 - Format 1 - srcBegin = B2C8 - srcEnd = B2CC - mappingOffset = 196E - Mapping = - 344F 3450 FFFD FFFD 3451 -End of Item 08A2 - -Begin of Item 08A3 - Format 1 - srcBegin = B2D0 - srcEnd = B2D2 - mappingOffset = 1973 - Mapping = - 3452 FFFD 3453 -End of Item 08A3 - -Begin of Item 08A4 - Format 1 - srcBegin = B2D8 - srcEnd = B2DD - mappingOffset = 1976 - Mapping = - 3454 3455 FFFD 3456 FFFD 3457 -End of Item 08A4 - -Begin of Item 08A5 - Format 2 - srcBegin = B2E2 - destBegin = 3458 -End of Item 08A5 - -Begin of Item 08A6 - Format 2 - srcBegin = B2E8 - destBegin = 345C -End of Item 08A6 - -Begin of Item 08A7 - Format 2 - srcBegin = B304 - destBegin = 346D -End of Item 08A7 - -Begin of Item 08A8 - Format 2 - srcBegin = B308 - destBegin = 346E -End of Item 08A8 - -Begin of Item 08A9 - Format 1 - srcBegin = B310 - srcEnd = B311 - mappingOffset = 197C - Mapping = - 346F 3470 -End of Item 08A9 - -Begin of Item 08AA - Format 2 - srcBegin = B31C - destBegin = 3474 -End of Item 08AA - -Begin of Item 08AB - Format 1 - srcBegin = B358 - srcEnd = B35F - mappingOffset = 197E - Mapping = - 3478 FFFD FFFD 3479 347A FFFD 347B 347C -End of Item 08AB - -Begin of Item 08AC - Format 1 - srcBegin = B364 - srcEnd = B374 - mappingOffset = 1986 - Mapping = - 347D 347E FFFD 3521 FFFD 3522 FFFD 3523 - FFFD FFFD 3524 FFFD 3525 3526 FFFD FFFD - 3527 -End of Item 08AC - -Begin of Item 08AD - Format 2 - srcBegin = B378 - destBegin = 3528 -End of Item 08AD - -Begin of Item 08AE - Format 1 - srcBegin = B380 - srcEnd = B381 - mappingOffset = 1997 - Mapping = - 3529 352A -End of Item 08AE - -Begin of Item 08AF - Format 2 - srcBegin = B38C - destBegin = 352E -End of Item 08AF - -Begin of Item 08B0 - Format 2 - srcBegin = B390 - destBegin = 352F -End of Item 08B0 - -Begin of Item 08B1 - Format 2 - srcBegin = B394 - destBegin = 3530 -End of Item 08B1 - -Begin of Item 08B2 - Format 1 - srcBegin = B3A0 - srcEnd = B3A1 - mappingOffset = 1999 - Mapping = - 3531 3532 -End of Item 08B2 - -Begin of Item 08B3 - Format 2 - srcBegin = B3A8 - destBegin = 3533 -End of Item 08B3 - -Begin of Item 08B4 - Format 2 - srcBegin = B3AC - destBegin = 3534 -End of Item 08B4 - -Begin of Item 08B5 - Format 1 - srcBegin = B3C4 - srcEnd = B3D0 - mappingOffset = 199B - Mapping = - 3535 3536 FFFD FFFD 3537 FFFD FFFD 3538 - 3539 FFFD 353A FFFD 353B -End of Item 08B5 - -Begin of Item 08B6 - Format 1 - srcBegin = B3D4 - srcEnd = B3E0 - mappingOffset = 19A8 - Mapping = - 353C 353D FFFD 353E FFFD 353F FFFD 3540 - FFFD 3541 FFFD FFFD 3542 -End of Item 08B6 - -Begin of Item 08B7 - Format 2 - srcBegin = B3E4 - destBegin = 3543 -End of Item 08B7 - -Begin of Item 08B8 - Format 2 - srcBegin = B3E8 - destBegin = 3544 -End of Item 08B8 - -Begin of Item 08B9 - Format 2 - srcBegin = B3FC - destBegin = 3545 -End of Item 08B9 - -Begin of Item 08BA - Format 2 - srcBegin = B410 - destBegin = 3546 -End of Item 08BA - -Begin of Item 08BB - Format 2 - srcBegin = B418 - destBegin = 3547 -End of Item 08BB - -Begin of Item 08BC - Format 2 - srcBegin = B41C - destBegin = 3548 -End of Item 08BC - -Begin of Item 08BD - Format 2 - srcBegin = B420 - destBegin = 3549 -End of Item 08BD - -Begin of Item 08BE - Format 1 - srcBegin = B428 - srcEnd = B42B - mappingOffset = 19B5 - Mapping = - 354A 354B FFFD 354C -End of Item 08BE - -Begin of Item 08BF - Format 2 - srcBegin = B434 - destBegin = 354D -End of Item 08BF - -Begin of Item 08C0 - Format 1 - srcBegin = B450 - srcEnd = B454 - mappingOffset = 19B9 - Mapping = - 354E 354F FFFD FFFD 3550 -End of Item 08C0 - -Begin of Item 08C1 - Format 2 - srcBegin = B458 - destBegin = 3551 -End of Item 08C1 - -Begin of Item 08C2 - Format 1 - srcBegin = B460 - srcEnd = B465 - mappingOffset = 19BE - Mapping = - 3552 3553 FFFD 3554 FFFD 3555 -End of Item 08C2 - -Begin of Item 08C3 - Format 2 - srcBegin = B46C - destBegin = 3556 -End of Item 08C3 - -Begin of Item 08C4 - Format 2 - srcBegin = B480 - destBegin = 3557 -End of Item 08C4 - -Begin of Item 08C5 - Format 2 - srcBegin = B488 - destBegin = 3558 -End of Item 08C5 - -Begin of Item 08C6 - Format 2 - srcBegin = B49D - destBegin = 3559 -End of Item 08C6 - -Begin of Item 08C7 - Format 2 - srcBegin = B4A4 - destBegin = 355A -End of Item 08C7 - -Begin of Item 08C8 - Format 2 - srcBegin = B4A8 - destBegin = 355B -End of Item 08C8 - -Begin of Item 08C9 - Format 2 - srcBegin = B4AC - destBegin = 355C -End of Item 08C9 - -Begin of Item 08CA - Format 1 - srcBegin = B4B5 - srcEnd = B4B9 - mappingOffset = 19C4 - Mapping = - 355D FFFD 355E FFFD 355F -End of Item 08CA - -Begin of Item 08CB - Format 2 - srcBegin = B4C0 - destBegin = 3560 -End of Item 08CB - -Begin of Item 08CC - Format 2 - srcBegin = B4C4 - destBegin = 3561 -End of Item 08CC - -Begin of Item 08CD - Format 2 - srcBegin = B4C8 - destBegin = 3562 -End of Item 08CD - -Begin of Item 08CE - Format 2 - srcBegin = B4D0 - destBegin = 3563 -End of Item 08CE - -Begin of Item 08CF - Format 2 - srcBegin = B4D5 - destBegin = 3564 -End of Item 08CF - -Begin of Item 08D0 - Format 1 - srcBegin = B4DC - srcEnd = B4E6 - mappingOffset = 19C9 - Mapping = - 3565 3566 FFFD FFFD 3567 FFFD FFFD 3568 - 3569 FFFD 356A -End of Item 08D0 - -Begin of Item 08D1 - Format 1 - srcBegin = B4EC - srcEnd = B4F1 - mappingOffset = 19D4 - Mapping = - 356B 356C FFFD 356D FFFD 356E -End of Item 08D1 - -Begin of Item 08D2 - Format 2 - srcBegin = B4F8 - destBegin = 356F -End of Item 08D2 - -Begin of Item 08D3 - Format 1 - srcBegin = B514 - srcEnd = B51C - mappingOffset = 19DA - Mapping = - 3570 3571 FFFD FFFD 3572 FFFD FFFD 3573 - 3574 -End of Item 08D3 - -Begin of Item 08D4 - Format 1 - srcBegin = B524 - srcEnd = B525 - mappingOffset = 19E3 - Mapping = - 3575 3576 -End of Item 08D4 - -Begin of Item 08D5 - Format 1 - srcBegin = B530 - srcEnd = B534 - mappingOffset = 19E5 - Mapping = - 357B 357C FFFD FFFD 357D -End of Item 08D5 - -Begin of Item 08D6 - Format 2 - srcBegin = B538 - destBegin = 357E -End of Item 08D6 - -Begin of Item 08D7 - Format 1 - srcBegin = B540 - srcEnd = B541 - mappingOffset = 19EA - Mapping = - 3621 3622 -End of Item 08D7 - -Begin of Item 08D8 - Format 2 - srcBegin = B550 - destBegin = 3629 -End of Item 08D8 - -Begin of Item 08D9 - Format 2 - srcBegin = B554 - destBegin = 362A -End of Item 08D9 - -Begin of Item 08DA - Format 1 - srcBegin = B55C - srcEnd = B55D - mappingOffset = 19EC - Mapping = - 362B 362C -End of Item 08DA - -Begin of Item 08DB - Format 1 - srcBegin = B5A0 - srcEnd = B5A4 - mappingOffset = 19EE - Mapping = - 3630 3631 FFFD FFFD 3632 -End of Item 08DB - -Begin of Item 08DC - Format 1 - srcBegin = B5A8 - srcEnd = B5AB - mappingOffset = 19F3 - Mapping = - 3633 FFFD 3634 3635 -End of Item 08DC - -Begin of Item 08DD - Format 1 - srcBegin = B5B0 - srcEnd = B5B1 - mappingOffset = 19F7 - Mapping = - 3636 3637 -End of Item 08DD - -Begin of Item 08DE - Format 2 - srcBegin = B5C0 - destBegin = 363E -End of Item 08DE - -Begin of Item 08DF - Format 2 - srcBegin = B5C4 - destBegin = 363F -End of Item 08DF - -Begin of Item 08E0 - Format 1 - srcBegin = B5CC - srcEnd = B5CD - mappingOffset = 19F9 - Mapping = - 3640 3641 -End of Item 08E0 - -Begin of Item 08E1 - Format 2 - srcBegin = B5D8 - destBegin = 3645 -End of Item 08E1 - -Begin of Item 08E2 - Format 2 - srcBegin = B5EC - destBegin = 3646 -End of Item 08E2 - -Begin of Item 08E3 - Format 1 - srcBegin = B610 - srcEnd = B614 - mappingOffset = 19FB - Mapping = - 3647 3648 FFFD FFFD 3649 -End of Item 08E3 - -Begin of Item 08E4 - Format 2 - srcBegin = B618 - destBegin = 364A -End of Item 08E4 - -Begin of Item 08E5 - Format 2 - srcBegin = B625 - destBegin = 364B -End of Item 08E5 - -Begin of Item 08E6 - Format 2 - srcBegin = B62C - destBegin = 364C -End of Item 08E6 - -Begin of Item 08E7 - Format 2 - srcBegin = B634 - destBegin = 364D -End of Item 08E7 - -Begin of Item 08E8 - Format 2 - srcBegin = B648 - destBegin = 364E -End of Item 08E8 - -Begin of Item 08E9 - Format 2 - srcBegin = B664 - destBegin = 364F -End of Item 08E9 - -Begin of Item 08EA - Format 2 - srcBegin = B668 - destBegin = 3650 -End of Item 08EA - -Begin of Item 08EB - Format 1 - srcBegin = B69C - srcEnd = B6A0 - mappingOffset = 1A00 - Mapping = - 3651 3652 FFFD FFFD 3653 -End of Item 08EB - -Begin of Item 08EC - Format 2 - srcBegin = B6A4 - destBegin = 3654 -End of Item 08EC - -Begin of Item 08ED - Format 1 - srcBegin = B6AB - srcEnd = B6AC - mappingOffset = 1A05 - Mapping = - 3655 3656 -End of Item 08ED - -Begin of Item 08EE - Format 2 - srcBegin = B6B1 - destBegin = 3657 -End of Item 08EE - -Begin of Item 08EF - Format 2 - srcBegin = B6D4 - destBegin = 3658 -End of Item 08EF - -Begin of Item 08F0 - Format 2 - srcBegin = B6F0 - destBegin = 3659 -End of Item 08F0 - -Begin of Item 08F1 - Format 2 - srcBegin = B6F4 - destBegin = 365A -End of Item 08F1 - -Begin of Item 08F2 - Format 2 - srcBegin = B6F8 - destBegin = 365B -End of Item 08F2 - -Begin of Item 08F3 - Format 1 - srcBegin = B700 - srcEnd = B701 - mappingOffset = 1A07 - Mapping = - 365C 365D -End of Item 08F3 - -Begin of Item 08F4 - Format 2 - srcBegin = B705 - destBegin = 365E -End of Item 08F4 - -Begin of Item 08F5 - Format 1 - srcBegin = B728 - srcEnd = B730 - mappingOffset = 1A09 - Mapping = - 365F 3660 FFFD FFFD 3661 FFFD FFFD 3662 - 3663 -End of Item 08F5 - -Begin of Item 08F6 - Format 1 - srcBegin = B738 - srcEnd = B73B - mappingOffset = 1A12 - Mapping = - 3664 3665 FFFD 3666 -End of Item 08F6 - -Begin of Item 08F7 - Format 2 - srcBegin = B744 - destBegin = 3667 -End of Item 08F7 - -Begin of Item 08F8 - Format 2 - srcBegin = B748 - destBegin = 3668 -End of Item 08F8 - -Begin of Item 08F9 - Format 2 - srcBegin = B74C - destBegin = 3669 -End of Item 08F9 - -Begin of Item 08FA - Format 1 - srcBegin = B754 - srcEnd = B755 - mappingOffset = 1A16 - Mapping = - 366A 366B -End of Item 08FA - -Begin of Item 08FB - Format 2 - srcBegin = B760 - destBegin = 366C -End of Item 08FB - -Begin of Item 08FC - Format 2 - srcBegin = B764 - destBegin = 366D -End of Item 08FC - -Begin of Item 08FD - Format 2 - srcBegin = B768 - destBegin = 366E -End of Item 08FD - -Begin of Item 08FE - Format 1 - srcBegin = B770 - srcEnd = B775 - mappingOffset = 1A18 - Mapping = - 366F 3670 FFFD 3671 FFFD 3672 -End of Item 08FE - -Begin of Item 08FF - Format 1 - srcBegin = B77C - srcEnd = B780 - mappingOffset = 1A1E - Mapping = - 3673 3674 FFFD FFFD 3675 -End of Item 08FF - -Begin of Item 0900 - Format 2 - srcBegin = B784 - destBegin = 3676 -End of Item 0900 - -Begin of Item 0901 - Format 1 - srcBegin = B78C - srcEnd = B78D - mappingOffset = 1A23 - Mapping = - 3677 3678 -End of Item 0901 - -Begin of Item 0902 - Format 1 - srcBegin = B796 - srcEnd = B79C - mappingOffset = 1A25 - Mapping = - 367D 367E 3721 3722 FFFD FFFD 3723 -End of Item 0902 - -Begin of Item 0903 - Format 2 - srcBegin = B7A0 - destBegin = 3724 -End of Item 0903 - -Begin of Item 0904 - Format 1 - srcBegin = B7A8 - srcEnd = B7A9 - mappingOffset = 1A2C - Mapping = - 3725 3726 -End of Item 0904 - -Begin of Item 0905 - Format 1 - srcBegin = B7B4 - srcEnd = B7B8 - mappingOffset = 1A2E - Mapping = - 372A 372B FFFD FFFD 372C -End of Item 0905 - -Begin of Item 0906 - Format 1 - srcBegin = B7C7 - srcEnd = B7C9 - mappingOffset = 1A33 - Mapping = - 372D FFFD 372E -End of Item 0906 - -Begin of Item 0907 - Format 1 - srcBegin = B7EC - srcEnd = B7F0 - mappingOffset = 1A36 - Mapping = - 372F 3730 FFFD FFFD 3731 -End of Item 0907 - -Begin of Item 0908 - Format 2 - srcBegin = B7F4 - destBegin = 3732 -End of Item 0908 - -Begin of Item 0909 - Format 1 - srcBegin = B7FC - srcEnd = B7FD - mappingOffset = 1A3B - Mapping = - 3733 3734 -End of Item 0909 - -Begin of Item 090A - Format 2 - srcBegin = B80C - destBegin = 373B -End of Item 090A - -Begin of Item 090B - Format 2 - srcBegin = B810 - destBegin = 373C -End of Item 090B - -Begin of Item 090C - Format 1 - srcBegin = B818 - srcEnd = B81D - mappingOffset = 1A3D - Mapping = - 373D 373E FFFD 373F FFFD 3740 -End of Item 090C - -Begin of Item 090D - Format 1 - srcBegin = B824 - srcEnd = B828 - mappingOffset = 1A43 - Mapping = - 3741 3742 FFFD FFFD 3743 -End of Item 090D - -Begin of Item 090E - Format 2 - srcBegin = B82C - destBegin = 3744 -End of Item 090E - -Begin of Item 090F - Format 1 - srcBegin = B834 - srcEnd = B835 - mappingOffset = 1A48 - Mapping = - 3745 3746 -End of Item 090F - -Begin of Item 0910 - Format 2 - srcBegin = B840 - destBegin = 374A -End of Item 0910 - -Begin of Item 0911 - Format 2 - srcBegin = B844 - destBegin = 374B -End of Item 0911 - -Begin of Item 0912 - Format 1 - srcBegin = B851 - srcEnd = B853 - mappingOffset = 1A4A - Mapping = - 374C FFFD 374D -End of Item 0912 - -Begin of Item 0913 - Format 1 - srcBegin = B85C - srcEnd = B860 - mappingOffset = 1A4D - Mapping = - 374E 374F FFFD FFFD 3750 -End of Item 0913 - -Begin of Item 0914 - Format 2 - srcBegin = B864 - destBegin = 3751 -End of Item 0914 - -Begin of Item 0915 - Format 1 - srcBegin = B86C - srcEnd = B871 - mappingOffset = 1A52 - Mapping = - 3752 3753 FFFD 3754 FFFD 3755 -End of Item 0915 - -Begin of Item 0916 - Format 2 - srcBegin = B878 - destBegin = 3756 -End of Item 0916 - -Begin of Item 0917 - Format 2 - srcBegin = B87C - destBegin = 3757 -End of Item 0917 - -Begin of Item 0918 - Format 2 - srcBegin = B88D - destBegin = 3758 -End of Item 0918 - -Begin of Item 0919 - Format 2 - srcBegin = B8A8 - destBegin = 3759 -End of Item 0919 - -Begin of Item 091A - Format 2 - srcBegin = B8B0 - destBegin = 375A -End of Item 091A - -Begin of Item 091B - Format 2 - srcBegin = B8B4 - destBegin = 375B -End of Item 091B - -Begin of Item 091C - Format 2 - srcBegin = B8B8 - destBegin = 375C -End of Item 091C - -Begin of Item 091D - Format 1 - srcBegin = B8C0 - srcEnd = B8C5 - mappingOffset = 1A58 - Mapping = - 375D 375E FFFD 375F FFFD 3760 -End of Item 091D - -Begin of Item 091E - Format 2 - srcBegin = B8CC - destBegin = 3761 -End of Item 091E - -Begin of Item 091F - Format 2 - srcBegin = B8D0 - destBegin = 3762 -End of Item 091F - -Begin of Item 0920 - Format 2 - srcBegin = B8D4 - destBegin = 3763 -End of Item 0920 - -Begin of Item 0921 - Format 1 - srcBegin = B8DD - srcEnd = B8E1 - mappingOffset = 1A5E - Mapping = - 3764 FFFD 3765 FFFD 3766 -End of Item 0921 - -Begin of Item 0922 - Format 1 - srcBegin = B8E8 - srcEnd = B8EC - mappingOffset = 1A63 - Mapping = - 3767 3768 FFFD FFFD 3769 -End of Item 0922 - -Begin of Item 0923 - Format 2 - srcBegin = B8F0 - destBegin = 376A -End of Item 0923 - -Begin of Item 0924 - Format 1 - srcBegin = B8F8 - srcEnd = B8FD - mappingOffset = 1A68 - Mapping = - 376B 376C FFFD 376D FFFD 376E -End of Item 0924 - -Begin of Item 0925 - Format 2 - srcBegin = B904 - destBegin = 376F -End of Item 0925 - -Begin of Item 0926 - Format 2 - srcBegin = B918 - destBegin = 3770 -End of Item 0926 - -Begin of Item 0927 - Format 2 - srcBegin = B920 - destBegin = 3771 -End of Item 0927 - -Begin of Item 0928 - Format 1 - srcBegin = B93C - srcEnd = B940 - mappingOffset = 1A6E - Mapping = - 3772 3773 FFFD FFFD 3774 -End of Item 0928 - -Begin of Item 0929 - Format 2 - srcBegin = B944 - destBegin = 3775 -End of Item 0929 - -Begin of Item 092A - Format 1 - srcBegin = B94C - srcEnd = B951 - mappingOffset = 1A73 - Mapping = - 3776 FFFD FFFD 3777 FFFD 3778 -End of Item 092A - -Begin of Item 092B - Format 1 - srcBegin = B958 - srcEnd = B95C - mappingOffset = 1A79 - Mapping = - 3779 377A FFFD FFFD 377B -End of Item 092B - -Begin of Item 092C - Format 2 - srcBegin = B960 - destBegin = 377C -End of Item 092C - -Begin of Item 092D - Format 1 - srcBegin = B968 - srcEnd = B96D - mappingOffset = 1A7E - Mapping = - 377D 377E FFFD 3821 FFFD 3822 -End of Item 092D - -Begin of Item 092E - Format 1 - srcBegin = B974 - srcEnd = B978 - mappingOffset = 1A84 - Mapping = - 3823 3824 FFFD FFFD 3825 -End of Item 092E - -Begin of Item 092F - Format 2 - srcBegin = B97C - destBegin = 3826 -End of Item 092F - -Begin of Item 0930 - Format 1 - srcBegin = B984 - srcEnd = B98E - mappingOffset = 1A89 - Mapping = - 3827 3828 FFFD 3829 FFFD 382A 382B FFFD - FFFD 382C 382D -End of Item 0930 - -Begin of Item 0931 - Format 1 - srcBegin = B9AC - srcEnd = B9B0 - mappingOffset = 1A94 - Mapping = - 382E 382F FFFD FFFD 3830 -End of Item 0931 - -Begin of Item 0932 - Format 2 - srcBegin = B9B4 - destBegin = 3831 -End of Item 0932 - -Begin of Item 0933 - Format 1 - srcBegin = B9BC - srcEnd = B9C1 - mappingOffset = 1A99 - Mapping = - 3832 3833 FFFD 3834 FFFD 3835 -End of Item 0933 - -Begin of Item 0934 - Format 1 - srcBegin = B9C8 - srcEnd = B9CC - mappingOffset = 1A9F - Mapping = - 3836 3837 FFFD FFFD 3838 -End of Item 0934 - -Begin of Item 0935 - Format 1 - srcBegin = B9D8 - srcEnd = B9E1 - mappingOffset = 1AA4 - Mapping = - 383E 383F FFFD 3840 FFFD 3841 3842 FFFD - FFFD 3843 -End of Item 0935 - -Begin of Item 0936 - Format 2 - srcBegin = B9E8 - destBegin = 3847 -End of Item 0936 - -Begin of Item 0937 - Format 2 - srcBegin = B9EC - destBegin = 3848 -End of Item 0937 - -Begin of Item 0938 - Format 1 - srcBegin = B9F4 - srcEnd = B9F5 - mappingOffset = 1AAE - Mapping = - 3849 384A -End of Item 0938 - -Begin of Item 0939 - Format 1 - srcBegin = BA00 - srcEnd = BA01 - mappingOffset = 1AB0 - Mapping = - 384F 3850 -End of Item 0939 - -Begin of Item 093A - Format 2 - srcBegin = BA08 - destBegin = 3851 -End of Item 093A - -Begin of Item 093B - Format 2 - srcBegin = BA15 - destBegin = 3852 -End of Item 093B - -Begin of Item 093C - Format 1 - srcBegin = BA38 - srcEnd = BA3C - mappingOffset = 1AB2 - Mapping = - 3853 3854 FFFD FFFD 3855 -End of Item 093C - -Begin of Item 093D - Format 1 - srcBegin = BA40 - srcEnd = BA42 - mappingOffset = 1AB7 - Mapping = - 3856 FFFD 3857 -End of Item 093D - -Begin of Item 093E - Format 1 - srcBegin = BA48 - srcEnd = BA4E - mappingOffset = 1ABA - Mapping = - 3858 3859 FFFD 385A FFFD 385B 385C -End of Item 093E - -Begin of Item 093F - Format 2 - srcBegin = BA58 - destBegin = 3860 -End of Item 093F - -Begin of Item 0940 - Format 2 - srcBegin = BA5C - destBegin = 3861 -End of Item 0940 - -Begin of Item 0941 - Format 1 - srcBegin = BA64 - srcEnd = BA65 - mappingOffset = 1AC1 - Mapping = - 3862 3863 -End of Item 0941 - -Begin of Item 0942 - Format 1 - srcBegin = BA70 - srcEnd = BA74 - mappingOffset = 1AC3 - Mapping = - 3867 3868 FFFD FFFD 3869 -End of Item 0942 - -Begin of Item 0943 - Format 2 - srcBegin = BA78 - destBegin = 386A -End of Item 0943 - -Begin of Item 0944 - Format 2 - srcBegin = BA87 - destBegin = 386E -End of Item 0944 - -Begin of Item 0945 - Format 2 - srcBegin = BA8C - destBegin = 386F -End of Item 0945 - -Begin of Item 0946 - Format 1 - srcBegin = BAA8 - srcEnd = BAAC - mappingOffset = 1AC8 - Mapping = - 3870 3871 FFFD 3872 3873 -End of Item 0946 - -Begin of Item 0947 - Format 1 - srcBegin = BAB0 - srcEnd = BAB2 - mappingOffset = 1ACD - Mapping = - 3874 FFFD 3875 -End of Item 0947 - -Begin of Item 0948 - Format 1 - srcBegin = BAB8 - srcEnd = BABD - mappingOffset = 1AD0 - Mapping = - 3876 3877 FFFD 3878 FFFD 3879 -End of Item 0948 - -Begin of Item 0949 - Format 2 - srcBegin = BAC4 - destBegin = 387A -End of Item 0949 - -Begin of Item 094A - Format 2 - srcBegin = BAC8 - destBegin = 387B -End of Item 094A - -Begin of Item 094B - Format 1 - srcBegin = BAD8 - srcEnd = BAD9 - mappingOffset = 1AD6 - Mapping = - 387C 387D -End of Item 094B - -Begin of Item 094C - Format 2 - srcBegin = BAFC - destBegin = 387E -End of Item 094C - -Begin of Item 094D - Format 2 - srcBegin = BB00 - destBegin = 3921 -End of Item 094D - -Begin of Item 094E - Format 2 - srcBegin = BB04 - destBegin = 3922 -End of Item 094E - -Begin of Item 094F - Format 1 - srcBegin = BB0D - srcEnd = BB11 - mappingOffset = 1AD8 - Mapping = - 3923 FFFD 3924 FFFD 3925 -End of Item 094F - -Begin of Item 0950 - Format 2 - srcBegin = BB18 - destBegin = 3926 -End of Item 0950 - -Begin of Item 0951 - Format 2 - srcBegin = BB1C - destBegin = 3927 -End of Item 0951 - -Begin of Item 0952 - Format 2 - srcBegin = BB20 - destBegin = 3928 -End of Item 0952 - -Begin of Item 0953 - Format 1 - srcBegin = BB29 - srcEnd = BB2B - mappingOffset = 1ADD - Mapping = - 3929 FFFD 392A -End of Item 0953 - -Begin of Item 0954 - Format 2 - srcBegin = BB38 - destBegin = 392E -End of Item 0954 - -Begin of Item 0955 - Format 1 - srcBegin = BB44 - srcEnd = BB49 - mappingOffset = 1AE0 - Mapping = - 3933 3934 FFFD 3935 FFFD 3936 -End of Item 0955 - -Begin of Item 0956 - Format 1 - srcBegin = BB4D - srcEnd = BB50 - mappingOffset = 1AE6 - Mapping = - 3937 FFFD 3938 3939 -End of Item 0956 - -Begin of Item 0957 - Format 2 - srcBegin = BB54 - destBegin = 393A -End of Item 0957 - -Begin of Item 0958 - Format 2 - srcBegin = BB58 - destBegin = 393B -End of Item 0958 - -Begin of Item 0959 - Format 1 - srcBegin = BB61 - srcEnd = BB63 - mappingOffset = 1AEA - Mapping = - 393C FFFD 393D -End of Item 0959 - -Begin of Item 095A - Format 2 - srcBegin = BB6C - destBegin = 393E -End of Item 095A - -Begin of Item 095B - Format 2 - srcBegin = BB88 - destBegin = 393F -End of Item 095B - -Begin of Item 095C - Format 2 - srcBegin = BB8C - destBegin = 3940 -End of Item 095C - -Begin of Item 095D - Format 2 - srcBegin = BB90 - destBegin = 3941 -End of Item 095D - -Begin of Item 095E - Format 2 - srcBegin = BBA4 - destBegin = 3942 -End of Item 095E - -Begin of Item 095F - Format 2 - srcBegin = BBA8 - destBegin = 3943 -End of Item 095F - -Begin of Item 0960 - Format 2 - srcBegin = BBAC - destBegin = 3944 -End of Item 0960 - -Begin of Item 0961 - Format 1 - srcBegin = BBB4 - srcEnd = BBB7 - mappingOffset = 1AED - Mapping = - 3945 FFFD FFFD 3946 -End of Item 0961 - -Begin of Item 0962 - Format 2 - srcBegin = BBC0 - destBegin = 3947 -End of Item 0962 - -Begin of Item 0963 - Format 2 - srcBegin = BBC4 - destBegin = 3948 -End of Item 0963 - -Begin of Item 0964 - Format 2 - srcBegin = BBC8 - destBegin = 3949 -End of Item 0964 - -Begin of Item 0965 - Format 1 - srcBegin = BBD0 - srcEnd = BBD3 - mappingOffset = 1AF1 - Mapping = - 394A FFFD FFFD 394B -End of Item 0965 - -Begin of Item 0966 - Format 1 - srcBegin = BBF8 - srcEnd = BC02 - mappingOffset = 1AF5 - Mapping = - 394C 394D FFFD FFFD 394E FFFD FFFD 394F - 3950 FFFD 3951 -End of Item 0966 - -Begin of Item 0967 - Format 1 - srcBegin = BC08 - srcEnd = BC09 - mappingOffset = 1B00 - Mapping = - 3952 3953 -End of Item 0967 - -Begin of Item 0968 - Format 1 - srcBegin = BC0F - srcEnd = BC11 - mappingOffset = 1B02 - Mapping = - 3957 FFFD 3958 -End of Item 0968 - -Begin of Item 0969 - Format 1 - srcBegin = BC24 - srcEnd = BC29 - mappingOffset = 1B05 - Mapping = - 3963 3964 FFFD 3965 FFFD 3966 -End of Item 0969 - -Begin of Item 096A - Format 1 - srcBegin = BC2D - srcEnd = BC34 - mappingOffset = 1B0B - Mapping = - 3967 FFFD FFFD 3968 3969 FFFD FFFD 396A -End of Item 096A - -Begin of Item 096B - Format 2 - srcBegin = BC38 - destBegin = 396B -End of Item 096B - -Begin of Item 096C - Format 1 - srcBegin = BC40 - srcEnd = BC41 - mappingOffset = 1B13 - Mapping = - 396C 396D -End of Item 096C - -Begin of Item 096D - Format 1 - srcBegin = BC49 - srcEnd = BC50 - mappingOffset = 1B15 - Mapping = - 3971 FFFD FFFD 3972 3973 FFFD FFFD 3974 -End of Item 096D - -Begin of Item 096E - Format 2 - srcBegin = BC5D - destBegin = 3975 -End of Item 096E - -Begin of Item 096F - Format 1 - srcBegin = BC84 - srcEnd = BC8E - mappingOffset = 1B1D - Mapping = - 3976 3977 FFFD FFFD 3978 FFFD FFFD 3979 - 397A FFFD 397B -End of Item 096F - -Begin of Item 0970 - Format 1 - srcBegin = BC94 - srcEnd = BC9A - mappingOffset = 1B28 - Mapping = - 397C 397D FFFD 397E FFFD 3A21 3A22 -End of Item 0970 - -Begin of Item 0971 - Format 1 - srcBegin = BCA0 - srcEnd = BCA8 - mappingOffset = 1B2F - Mapping = - 3A23 3A24 FFFD FFFD 3A25 FFFD FFFD 3A26 - 3A27 -End of Item 0971 - -Begin of Item 0972 - Format 1 - srcBegin = BCB0 - srcEnd = BCB1 - mappingOffset = 1B38 - Mapping = - 3A28 3A29 -End of Item 0972 - -Begin of Item 0973 - Format 1 - srcBegin = BCBC - srcEnd = BCC0 - mappingOffset = 1B3A - Mapping = - 3A2D 3A2E FFFD FFFD 3A2F -End of Item 0973 - -Begin of Item 0974 - Format 2 - srcBegin = BCC4 - destBegin = 3A30 -End of Item 0974 - -Begin of Item 0975 - Format 2 - srcBegin = BCCD - destBegin = 3A31 -End of Item 0975 - -Begin of Item 0976 - Format 1 - srcBegin = BCD5 - srcEnd = BCD8 - mappingOffset = 1B3F - Mapping = - 3A35 FFFD FFFD 3A36 -End of Item 0976 - -Begin of Item 0977 - Format 2 - srcBegin = BCDC - destBegin = 3A37 -End of Item 0977 - -Begin of Item 0978 - Format 2 - srcBegin = BCF8 - destBegin = 3A3B -End of Item 0978 - -Begin of Item 0979 - Format 2 - srcBegin = BCFC - destBegin = 3A3C -End of Item 0979 - -Begin of Item 097A - Format 1 - srcBegin = BD04 - srcEnd = BD09 - mappingOffset = 1B43 - Mapping = - 3A3D 3A3E FFFD 3A3F FFFD 3A40 -End of Item 097A - -Begin of Item 097B - Format 2 - srcBegin = BD10 - destBegin = 3A41 -End of Item 097B - -Begin of Item 097C - Format 2 - srcBegin = BD14 - destBegin = 3A42 -End of Item 097C - -Begin of Item 097D - Format 2 - srcBegin = BD24 - destBegin = 3A43 -End of Item 097D - -Begin of Item 097E - Format 2 - srcBegin = BD2C - destBegin = 3A44 -End of Item 097E - -Begin of Item 097F - Format 2 - srcBegin = BD40 - destBegin = 3A45 -End of Item 097F - -Begin of Item 0980 - Format 1 - srcBegin = BD48 - srcEnd = BD4C - mappingOffset = 1B49 - Mapping = - 3A46 3A47 FFFD FFFD 3A48 -End of Item 0980 - -Begin of Item 0981 - Format 2 - srcBegin = BD50 - destBegin = 3A49 -End of Item 0981 - -Begin of Item 0982 - Format 1 - srcBegin = BD58 - srcEnd = BD59 - mappingOffset = 1B4E - Mapping = - 3A4A 3A4B -End of Item 0982 - -Begin of Item 0983 - Format 2 - srcBegin = BD64 - destBegin = 3A4C -End of Item 0983 - -Begin of Item 0984 - Format 2 - srcBegin = BD68 - destBegin = 3A4D -End of Item 0984 - -Begin of Item 0985 - Format 1 - srcBegin = BD80 - srcEnd = BD84 - mappingOffset = 1B50 - Mapping = - 3A4E 3A4F FFFD FFFD 3A50 -End of Item 0985 - -Begin of Item 0986 - Format 1 - srcBegin = BD90 - srcEnd = BD95 - mappingOffset = 1B55 - Mapping = - 3A55 3A56 FFFD 3A57 FFFD 3A58 -End of Item 0986 - -Begin of Item 0987 - Format 1 - srcBegin = BD99 - srcEnd = BD9C - mappingOffset = 1B5B - Mapping = - 3A59 3A5A FFFD 3A5B -End of Item 0987 - -Begin of Item 0988 - Format 2 - srcBegin = BDA4 - destBegin = 3A5C -End of Item 0988 - -Begin of Item 0989 - Format 2 - srcBegin = BDB0 - destBegin = 3A5D -End of Item 0989 - -Begin of Item 098A - Format 2 - srcBegin = BDB8 - destBegin = 3A5E -End of Item 098A - -Begin of Item 098B - Format 1 - srcBegin = BDD4 - srcEnd = BDD8 - mappingOffset = 1B5F - Mapping = - 3A5F 3A60 FFFD FFFD 3A61 -End of Item 098B - -Begin of Item 098C - Format 2 - srcBegin = BDDC - destBegin = 3A62 -End of Item 098C - -Begin of Item 098D - Format 2 - srcBegin = BDE9 - destBegin = 3A63 -End of Item 098D - -Begin of Item 098E - Format 2 - srcBegin = BDF0 - destBegin = 3A64 -End of Item 098E - -Begin of Item 098F - Format 2 - srcBegin = BDF4 - destBegin = 3A65 -End of Item 098F - -Begin of Item 0990 - Format 2 - srcBegin = BDF8 - destBegin = 3A66 -End of Item 0990 - -Begin of Item 0991 - Format 1 - srcBegin = BE00 - srcEnd = BE05 - mappingOffset = 1B64 - Mapping = - 3A67 FFFD FFFD 3A68 FFFD 3A69 -End of Item 0991 - -Begin of Item 0992 - Format 1 - srcBegin = BE0C - srcEnd = BE10 - mappingOffset = 1B6A - Mapping = - 3A6A 3A6B FFFD FFFD 3A6C -End of Item 0992 - -Begin of Item 0993 - Format 2 - srcBegin = BE14 - destBegin = 3A6D -End of Item 0993 - -Begin of Item 0994 - Format 1 - srcBegin = BE1C - srcEnd = BE1F - mappingOffset = 1B6F - Mapping = - 3A6E 3A6F FFFD 3A70 -End of Item 0994 - -Begin of Item 0995 - Format 1 - srcBegin = BE44 - srcEnd = BE48 - mappingOffset = 1B73 - Mapping = - 3A71 3A72 FFFD FFFD 3A73 -End of Item 0995 - -Begin of Item 0996 - Format 1 - srcBegin = BE4C - srcEnd = BE4E - mappingOffset = 1B78 - Mapping = - 3A74 FFFD 3A75 -End of Item 0996 - -Begin of Item 0997 - Format 1 - srcBegin = BE54 - srcEnd = BE57 - mappingOffset = 1B7B - Mapping = - 3A76 3A77 FFFD 3A78 -End of Item 0997 - -Begin of Item 0998 - Format 1 - srcBegin = BE60 - srcEnd = BE64 - mappingOffset = 1B7F - Mapping = - 3A7C 3A7D FFFD FFFD 3A7E -End of Item 0998 - -Begin of Item 0999 - Format 1 - srcBegin = BE68 - srcEnd = BE6A - mappingOffset = 1B84 - Mapping = - 3B21 FFFD 3B22 -End of Item 0999 - -Begin of Item 099A - Format 1 - srcBegin = BE70 - srcEnd = BE71 - mappingOffset = 1B87 - Mapping = - 3B23 3B24 -End of Item 099A - -Begin of Item 099B - Format 2 - srcBegin = BE80 - destBegin = 3B2B -End of Item 099B - -Begin of Item 099C - Format 2 - srcBegin = BE84 - destBegin = 3B2C -End of Item 099C - -Begin of Item 099D - Format 1 - srcBegin = BE8C - srcEnd = BE8D - mappingOffset = 1B89 - Mapping = - 3B2D 3B2E -End of Item 099D - -Begin of Item 099E - Format 1 - srcBegin = BE98 - srcEnd = BE99 - mappingOffset = 1B8B - Mapping = - 3B32 3B33 -End of Item 099E - -Begin of Item 099F - Format 2 - srcBegin = BEA8 - destBegin = 3B34 -End of Item 099F - -Begin of Item 09A0 - Format 1 - srcBegin = BED0 - srcEnd = BED8 - mappingOffset = 1B8D - Mapping = - 3B35 3B36 FFFD FFFD 3B37 FFFD FFFD 3B38 - 3B39 -End of Item 09A0 - -Begin of Item 09A1 - Format 2 - srcBegin = BEE0 - destBegin = 3B3A -End of Item 09A1 - -Begin of Item 09A2 - Format 2 - srcBegin = BEEC - destBegin = 3B3E -End of Item 09A2 - -Begin of Item 09A3 - Format 2 - srcBegin = BF01 - destBegin = 3B3F -End of Item 09A3 - -Begin of Item 09A4 - Format 1 - srcBegin = BF08 - srcEnd = BF09 - mappingOffset = 1B96 - Mapping = - 3B40 3B41 -End of Item 09A4 - -Begin of Item 09A5 - Format 1 - srcBegin = BF18 - srcEnd = BF19 - mappingOffset = 1B98 - Mapping = - 3B42 3B43 -End of Item 09A5 - -Begin of Item 09A6 - Format 1 - srcBegin = BF40 - srcEnd = BF44 - mappingOffset = 1B9A - Mapping = - 3B47 3B48 FFFD FFFD 3B49 -End of Item 09A6 - -Begin of Item 09A7 - Format 2 - srcBegin = BF48 - destBegin = 3B4A -End of Item 09A7 - -Begin of Item 09A8 - Format 1 - srcBegin = BF50 - srcEnd = BF51 - mappingOffset = 1B9F - Mapping = - 3B4B 3B4C -End of Item 09A8 - -Begin of Item 09A9 - Format 2 - srcBegin = BF55 - destBegin = 3B4D -End of Item 09A9 - -Begin of Item 09AA - Format 2 - srcBegin = BF94 - destBegin = 3B4E -End of Item 09AA - -Begin of Item 09AB - Format 2 - srcBegin = BFB0 - destBegin = 3B4F -End of Item 09AB - -Begin of Item 09AC - Format 2 - srcBegin = BFC5 - destBegin = 3B50 -End of Item 09AC - -Begin of Item 09AD - Format 1 - srcBegin = BFCC - srcEnd = BFD0 - mappingOffset = 1BA1 - Mapping = - 3B51 3B52 FFFD FFFD 3B53 -End of Item 09AD - -Begin of Item 09AE - Format 2 - srcBegin = BFD4 - destBegin = 3B54 -End of Item 09AE - -Begin of Item 09AF - Format 1 - srcBegin = BFDC - srcEnd = BFE1 - mappingOffset = 1BA6 - Mapping = - 3B55 FFFD FFFD 3B56 FFFD 3B57 -End of Item 09AF - -Begin of Item 09B0 - Format 2 - srcBegin = C03C - destBegin = 3B58 -End of Item 09B0 - -Begin of Item 09B1 - Format 2 - srcBegin = C051 - destBegin = 3B59 -End of Item 09B1 - -Begin of Item 09B2 - Format 2 - srcBegin = C058 - destBegin = 3B5A -End of Item 09B2 - -Begin of Item 09B3 - Format 2 - srcBegin = C05C - destBegin = 3B5B -End of Item 09B3 - -Begin of Item 09B4 - Format 2 - srcBegin = C060 - destBegin = 3B5C -End of Item 09B4 - -Begin of Item 09B5 - Format 1 - srcBegin = C068 - srcEnd = C069 - mappingOffset = 1BAC - Mapping = - 3B5D 3B5E -End of Item 09B5 - -Begin of Item 09B6 - Format 1 - srcBegin = C090 - srcEnd = C094 - mappingOffset = 1BAE - Mapping = - 3B5F 3B60 FFFD FFFD 3B61 -End of Item 09B6 - -Begin of Item 09B7 - Format 2 - srcBegin = C098 - destBegin = 3B62 -End of Item 09B7 - -Begin of Item 09B8 - Format 1 - srcBegin = C0A0 - srcEnd = C0A5 - mappingOffset = 1BB3 - Mapping = - 3B63 3B64 FFFD 3B65 FFFD 3B66 -End of Item 09B8 - -Begin of Item 09B9 - Format 1 - srcBegin = C0AC - srcEnd = C0B0 - mappingOffset = 1BB9 - Mapping = - 3B67 3B68 FFFD 3B69 3B6A -End of Item 09B9 - -Begin of Item 09BA - Format 1 - srcBegin = C0BC - srcEnd = C0BD - mappingOffset = 1BBE - Mapping = - 3B6F 3B70 -End of Item 09BA - -Begin of Item 09BB - Format 1 - srcBegin = C0C5 - srcEnd = C0CC - mappingOffset = 1BC0 - Mapping = - 3B74 FFFD FFFD 3B75 3B76 FFFD FFFD 3B77 -End of Item 09BB - -Begin of Item 09BC - Format 2 - srcBegin = C0D0 - destBegin = 3B78 -End of Item 09BC - -Begin of Item 09BD - Format 1 - srcBegin = C0D8 - srcEnd = C0D9 - mappingOffset = 1BC8 - Mapping = - 3B79 3B7A -End of Item 09BD - -Begin of Item 09BE - Format 1 - srcBegin = C0E4 - srcEnd = C0E8 - mappingOffset = 1BCA - Mapping = - 3B7E 3C21 FFFD FFFD 3C22 -End of Item 09BE - -Begin of Item 09BF - Format 2 - srcBegin = C0EC - destBegin = 3C23 -End of Item 09BF - -Begin of Item 09C0 - Format 1 - srcBegin = C0F4 - srcEnd = C0F9 - mappingOffset = 1BCF - Mapping = - 3C24 3C25 FFFD 3C26 FFFD 3C27 -End of Item 09C0 - -Begin of Item 09C1 - Format 2 - srcBegin = C100 - destBegin = 3C28 -End of Item 09C1 - -Begin of Item 09C2 - Format 2 - srcBegin = C104 - destBegin = 3C29 -End of Item 09C2 - -Begin of Item 09C3 - Format 2 - srcBegin = C108 - destBegin = 3C2A -End of Item 09C3 - -Begin of Item 09C4 - Format 2 - srcBegin = C110 - destBegin = 3C2B -End of Item 09C4 - -Begin of Item 09C5 - Format 2 - srcBegin = C115 - destBegin = 3C2C -End of Item 09C5 - -Begin of Item 09C6 - Format 1 - srcBegin = C123 - srcEnd = C127 - mappingOffset = 1BD5 - Mapping = - 3C32 3C33 FFFD 3C34 3C35 -End of Item 09C6 - -Begin of Item 09C7 - Format 1 - srcBegin = C12C - srcEnd = C12D - mappingOffset = 1BDA - Mapping = - 3C36 3C37 -End of Item 09C7 - -Begin of Item 09C8 - Format 1 - srcBegin = C136 - srcEnd = C13C - mappingOffset = 1BDC - Mapping = - 3C3B FFFD 3C3C 3C3D FFFD FFFD 3C3E -End of Item 09C8 - -Begin of Item 09C9 - Format 2 - srcBegin = C140 - destBegin = 3C3F -End of Item 09C9 - -Begin of Item 09CA - Format 1 - srcBegin = C148 - srcEnd = C149 - mappingOffset = 1BE3 - Mapping = - 3C40 3C41 -End of Item 09CA - -Begin of Item 09CB - Format 1 - srcBegin = C154 - srcEnd = C158 - mappingOffset = 1BE5 - Mapping = - 3C45 3C46 FFFD FFFD 3C47 -End of Item 09CB - -Begin of Item 09CC - Format 2 - srcBegin = C15C - destBegin = 3C48 -End of Item 09CC - -Begin of Item 09CD - Format 1 - srcBegin = C164 - srcEnd = C165 - mappingOffset = 1BEA - Mapping = - 3C49 3C4A -End of Item 09CD - -Begin of Item 09CE - Format 2 - srcBegin = C170 - destBegin = 3C4E -End of Item 09CE - -Begin of Item 09CF - Format 2 - srcBegin = C174 - destBegin = 3C4F -End of Item 09CF - -Begin of Item 09D0 - Format 2 - srcBegin = C178 - destBegin = 3C50 -End of Item 09D0 - -Begin of Item 09D1 - Format 2 - srcBegin = C185 - destBegin = 3C51 -End of Item 09D1 - -Begin of Item 09D2 - Format 2 - srcBegin = C190 - destBegin = 3C55 -End of Item 09D2 - -Begin of Item 09D3 - Format 1 - srcBegin = C194 - srcEnd = C196 - mappingOffset = 1BEC - Mapping = - 3C56 FFFD 3C57 -End of Item 09D3 - -Begin of Item 09D4 - Format 1 - srcBegin = C19C - srcEnd = C1A1 - mappingOffset = 1BEF - Mapping = - 3C58 3C59 FFFD 3C5A FFFD 3C5B -End of Item 09D4 - -Begin of Item 09D5 - Format 1 - srcBegin = C1A5 - srcEnd = C1AC - mappingOffset = 1BF5 - Mapping = - 3C5C FFFD FFFD 3C5D 3C5E FFFD FFFD 3C5F -End of Item 09D5 - -Begin of Item 09D6 - Format 2 - srcBegin = C1B0 - destBegin = 3C60 -End of Item 09D6 - -Begin of Item 09D7 - Format 2 - srcBegin = C1BD - destBegin = 3C61 -End of Item 09D7 - -Begin of Item 09D8 - Format 2 - srcBegin = C1C4 - destBegin = 3C62 -End of Item 09D8 - -Begin of Item 09D9 - Format 2 - srcBegin = C1C8 - destBegin = 3C63 -End of Item 09D9 - -Begin of Item 09DA - Format 2 - srcBegin = C1CC - destBegin = 3C64 -End of Item 09DA - -Begin of Item 09DB - Format 1 - srcBegin = C1D4 - srcEnd = C1D8 - mappingOffset = 1BFD - Mapping = - 3C65 FFFD FFFD 3C66 3C67 -End of Item 09DB - -Begin of Item 09DC - Format 2 - srcBegin = C1E0 - destBegin = 3C68 -End of Item 09DC - -Begin of Item 09DD - Format 2 - srcBegin = C1E4 - destBegin = 3C69 -End of Item 09DD - -Begin of Item 09DE - Format 2 - srcBegin = C1E8 - destBegin = 3C6A -End of Item 09DE - -Begin of Item 09DF - Format 1 - srcBegin = C1F0 - srcEnd = C1F3 - mappingOffset = 1C02 - Mapping = - 3C6B 3C6C FFFD 3C6D -End of Item 09DF - -Begin of Item 09E0 - Format 1 - srcBegin = C1FC - srcEnd = C200 - mappingOffset = 1C06 - Mapping = - 3C6E 3C6F FFFD FFFD 3C70 -End of Item 09E0 - -Begin of Item 09E1 - Format 2 - srcBegin = C204 - destBegin = 3C71 -End of Item 09E1 - -Begin of Item 09E2 - Format 1 - srcBegin = C20C - srcEnd = C211 - mappingOffset = 1C0B - Mapping = - 3C72 3C73 FFFD 3C74 FFFD 3C75 -End of Item 09E2 - -Begin of Item 09E3 - Format 1 - srcBegin = C218 - srcEnd = C220 - mappingOffset = 1C11 - Mapping = - 3C76 3C77 FFFD FFFD 3C78 FFFD FFFD 3C79 - 3C7A -End of Item 09E3 - -Begin of Item 09E4 - Format 1 - srcBegin = C228 - srcEnd = C234 - mappingOffset = 1C1A - Mapping = - 3C7B 3C7C FFFD 3C7D FFFD 3C7E FFFD 3D21 - FFFD 3D22 3D23 FFFD 3D24 -End of Item 09E4 - -Begin of Item 09E5 - Format 2 - srcBegin = C248 - destBegin = 3D25 -End of Item 09E5 - -Begin of Item 09E6 - Format 1 - srcBegin = C250 - srcEnd = C254 - mappingOffset = 1C27 - Mapping = - 3D26 3D27 FFFD FFFD 3D28 -End of Item 09E6 - -Begin of Item 09E7 - Format 2 - srcBegin = C258 - destBegin = 3D29 -End of Item 09E7 - -Begin of Item 09E8 - Format 2 - srcBegin = C260 - destBegin = 3D2A -End of Item 09E8 - -Begin of Item 09E9 - Format 2 - srcBegin = C265 - destBegin = 3D2B -End of Item 09E9 - -Begin of Item 09EA - Format 1 - srcBegin = C26C - srcEnd = C270 - mappingOffset = 1C2C - Mapping = - 3D2C 3D2D FFFD FFFD 3D2E -End of Item 09EA - -Begin of Item 09EB - Format 2 - srcBegin = C274 - destBegin = 3D2F -End of Item 09EB - -Begin of Item 09EC - Format 1 - srcBegin = C27C - srcEnd = C281 - mappingOffset = 1C31 - Mapping = - 3D30 3D31 FFFD 3D32 FFFD 3D33 -End of Item 09EC - -Begin of Item 09ED - Format 1 - srcBegin = C288 - srcEnd = C289 - mappingOffset = 1C37 - Mapping = - 3D34 3D35 -End of Item 09ED - -Begin of Item 09EE - Format 2 - srcBegin = C290 - destBegin = 3D36 -End of Item 09EE - -Begin of Item 09EF - Format 1 - srcBegin = C298 - srcEnd = C29D - mappingOffset = 1C39 - Mapping = - 3D37 FFFD FFFD 3D38 FFFD 3D39 -End of Item 09EF - -Begin of Item 09F0 - Format 1 - srcBegin = C2A4 - srcEnd = C2A8 - mappingOffset = 1C3F - Mapping = - 3D3A 3D3B FFFD FFFD 3D3C -End of Item 09F0 - -Begin of Item 09F1 - Format 1 - srcBegin = C2AC - srcEnd = C2AD - mappingOffset = 1C44 - Mapping = - 3D3D 3D3E -End of Item 09F1 - -Begin of Item 09F2 - Format 1 - srcBegin = C2B4 - srcEnd = C2B9 - mappingOffset = 1C46 - Mapping = - 3D3F 3D40 FFFD 3D41 FFFD 3D42 -End of Item 09F2 - -Begin of Item 09F3 - Format 1 - srcBegin = C2DC - srcEnd = C2E4 - mappingOffset = 1C4C - Mapping = - 3D43 3D44 FFFD FFFD 3D45 FFFD FFFD 3D46 - 3D47 -End of Item 09F3 - -Begin of Item 09F4 - Format 1 - srcBegin = C2EF - srcEnd = C2F1 - mappingOffset = 1C55 - Mapping = - 3D4B FFFD 3D4C -End of Item 09F4 - -Begin of Item 09F5 - Format 1 - srcBegin = C2F6 - srcEnd = C2FC - mappingOffset = 1C58 - Mapping = - 3D4D FFFD 3D4E 3D4F FFFD 3D50 3D51 -End of Item 09F5 - -Begin of Item 09F6 - Format 2 - srcBegin = C300 - destBegin = 3D52 -End of Item 09F6 - -Begin of Item 09F7 - Format 1 - srcBegin = C308 - srcEnd = C30D - mappingOffset = 1C5F - Mapping = - 3D53 3D54 FFFD FFFD 3D55 3D56 -End of Item 09F7 - -Begin of Item 09F8 - Format 2 - srcBegin = C318 - destBegin = 3D5A -End of Item 09F8 - -Begin of Item 09F9 - Format 2 - srcBegin = C31C - destBegin = 3D5B -End of Item 09F9 - -Begin of Item 09FA - Format 1 - srcBegin = C324 - srcEnd = C329 - mappingOffset = 1C65 - Mapping = - 3D5C 3D5D FFFD FFFD 3D5E 3D5F -End of Item 09FA - -Begin of Item 09FB - Format 2 - srcBegin = C345 - destBegin = 3D60 -End of Item 09FB - -Begin of Item 09FC - Format 1 - srcBegin = C368 - srcEnd = C36C - mappingOffset = 1C6B - Mapping = - 3D61 3D62 FFFD FFFD 3D63 -End of Item 09FC - -Begin of Item 09FD - Format 1 - srcBegin = C370 - srcEnd = C372 - mappingOffset = 1C70 - Mapping = - 3D64 FFFD 3D65 -End of Item 09FD - -Begin of Item 09FE - Format 1 - srcBegin = C378 - srcEnd = C37D - mappingOffset = 1C73 - Mapping = - 3D66 3D67 FFFD FFFD 3D68 3D69 -End of Item 09FE - -Begin of Item 09FF - Format 2 - srcBegin = C384 - destBegin = 3D6A -End of Item 09FF - -Begin of Item 0A00 - Format 2 - srcBegin = C388 - destBegin = 3D6B -End of Item 0A00 - -Begin of Item 0A01 - Format 2 - srcBegin = C38C - destBegin = 3D6C -End of Item 0A01 - -Begin of Item 0A02 - Format 2 - srcBegin = C3C0 - destBegin = 3D6D -End of Item 0A02 - -Begin of Item 0A03 - Format 1 - srcBegin = C3D8 - srcEnd = C3E2 - mappingOffset = 1C79 - Mapping = - 3D6E 3D6F FFFD FFFD 3D70 FFFD FFFD 3D71 - 3D72 FFFD 3D73 -End of Item 0A03 - -Begin of Item 0A04 - Format 1 - srcBegin = C3E8 - srcEnd = C3E9 - mappingOffset = 1C84 - Mapping = - 3D74 3D75 -End of Item 0A04 - -Begin of Item 0A05 - Format 2 - srcBegin = C3ED - destBegin = 3D76 -End of Item 0A05 - -Begin of Item 0A06 - Format 1 - srcBegin = C3F4 - srcEnd = C3F8 - mappingOffset = 1C86 - Mapping = - 3D77 3D78 FFFD FFFD 3D79 -End of Item 0A06 - -Begin of Item 0A07 - Format 2 - srcBegin = C408 - destBegin = 3D7A -End of Item 0A07 - -Begin of Item 0A08 - Format 2 - srcBegin = C410 - destBegin = 3D7B -End of Item 0A08 - -Begin of Item 0A09 - Format 2 - srcBegin = C424 - destBegin = 3D7C -End of Item 0A09 - -Begin of Item 0A0A - Format 2 - srcBegin = C42C - destBegin = 3D7D -End of Item 0A0A - -Begin of Item 0A0B - Format 2 - srcBegin = C430 - destBegin = 3D7E -End of Item 0A0B - -Begin of Item 0A0C - Format 2 - srcBegin = C434 - destBegin = 3E21 -End of Item 0A0C - -Begin of Item 0A0D - Format 1 - srcBegin = C43C - srcEnd = C43D - mappingOffset = 1C8B - Mapping = - 3E22 3E23 -End of Item 0A0D - -Begin of Item 0A0E - Format 2 - srcBegin = C448 - destBegin = 3E24 -End of Item 0A0E - -Begin of Item 0A0F - Format 1 - srcBegin = C464 - srcEnd = C468 - mappingOffset = 1C8D - Mapping = - 3E25 3E26 FFFD FFFD 3E27 -End of Item 0A0F - -Begin of Item 0A10 - Format 2 - srcBegin = C46C - destBegin = 3E28 -End of Item 0A10 - -Begin of Item 0A11 - Format 1 - srcBegin = C474 - srcEnd = C475 - mappingOffset = 1C92 - Mapping = - 3E29 3E2A -End of Item 0A11 - -Begin of Item 0A12 - Format 2 - srcBegin = C479 - destBegin = 3E2B -End of Item 0A12 - -Begin of Item 0A13 - Format 2 - srcBegin = C480 - destBegin = 3E2C -End of Item 0A13 - -Begin of Item 0A14 - Format 2 - srcBegin = C494 - destBegin = 3E2D -End of Item 0A14 - -Begin of Item 0A15 - Format 2 - srcBegin = C49C - destBegin = 3E2E -End of Item 0A15 - -Begin of Item 0A16 - Format 2 - srcBegin = C4B8 - destBegin = 3E2F -End of Item 0A16 - -Begin of Item 0A17 - Format 2 - srcBegin = C4BC - destBegin = 3E30 -End of Item 0A17 - -Begin of Item 0A18 - Format 2 - srcBegin = C4E9 - destBegin = 3E31 -End of Item 0A18 - -Begin of Item 0A19 - Format 1 - srcBegin = C4F0 - srcEnd = C4F4 - mappingOffset = 1C94 - Mapping = - 3E32 3E33 FFFD FFFD 3E34 -End of Item 0A19 - -Begin of Item 0A1A - Format 1 - srcBegin = C4F8 - srcEnd = C4FA - mappingOffset = 1C99 - Mapping = - 3E35 FFFD 3E36 -End of Item 0A1A - -Begin of Item 0A1B - Format 2 - srcBegin = C50C - destBegin = 3E3A -End of Item 0A1B - -Begin of Item 0A1C - Format 2 - srcBegin = C510 - destBegin = 3E3B -End of Item 0A1C - -Begin of Item 0A1D - Format 2 - srcBegin = C514 - destBegin = 3E3C -End of Item 0A1D - -Begin of Item 0A1E - Format 2 - srcBegin = C51C - destBegin = 3E3D -End of Item 0A1E - -Begin of Item 0A1F - Format 1 - srcBegin = C528 - srcEnd = C52C - mappingOffset = 1C9C - Mapping = - 3E3E 3E3F FFFD FFFD 3E40 -End of Item 0A1F - -Begin of Item 0A20 - Format 2 - srcBegin = C530 - destBegin = 3E41 -End of Item 0A20 - -Begin of Item 0A21 - Format 1 - srcBegin = C538 - srcEnd = C53D - mappingOffset = 1CA1 - Mapping = - 3E42 3E43 FFFD 3E44 FFFD 3E45 -End of Item 0A21 - -Begin of Item 0A22 - Format 1 - srcBegin = C544 - srcEnd = C545 - mappingOffset = 1CA7 - Mapping = - 3E46 3E47 -End of Item 0A22 - -Begin of Item 0A23 - Format 1 - srcBegin = C55D - srcEnd = C564 - mappingOffset = 1CA9 - Mapping = - 3E54 3E55 FFFD 3E56 3E57 FFFD FFFD 3E58 -End of Item 0A23 - -Begin of Item 0A24 - Format 2 - srcBegin = C568 - destBegin = 3E59 -End of Item 0A24 - -Begin of Item 0A25 - Format 1 - srcBegin = C570 - srcEnd = C571 - mappingOffset = 1CB1 - Mapping = - 3E5A 3E5B -End of Item 0A25 - -Begin of Item 0A26 - Format 1 - srcBegin = C57C - srcEnd = C580 - mappingOffset = 1CB3 - Mapping = - 3E5F 3E60 FFFD FFFD 3E61 -End of Item 0A26 - -Begin of Item 0A27 - Format 1 - srcBegin = C584 - srcEnd = C587 - mappingOffset = 1CB8 - Mapping = - 3E62 FFFD FFFD 3E63 -End of Item 0A27 - -Begin of Item 0A28 - Format 1 - srcBegin = C58C - srcEnd = C591 - mappingOffset = 1CBC - Mapping = - 3E64 3E65 FFFD 3E66 FFFD 3E67 -End of Item 0A28 - -Begin of Item 0A29 - Format 1 - srcBegin = C595 - srcEnd = C598 - mappingOffset = 1CC2 - Mapping = - 3E68 FFFD 3E69 3E6A -End of Item 0A29 - -Begin of Item 0A2A - Format 2 - srcBegin = C59C - destBegin = 3E6B -End of Item 0A2A - -Begin of Item 0A2B - Format 2 - srcBegin = C5A0 - destBegin = 3E6C -End of Item 0A2B - -Begin of Item 0A2C - Format 2 - srcBegin = C5A9 - destBegin = 3E6D -End of Item 0A2C - -Begin of Item 0A2D - Format 1 - srcBegin = C5B4 - srcEnd = C5B9 - mappingOffset = 1CC6 - Mapping = - 3E6E 3E6F FFFD FFFD 3E70 3E71 -End of Item 0A2D - -Begin of Item 0A2E - Format 1 - srcBegin = C5CC - srcEnd = C5D4 - mappingOffset = 1CCC - Mapping = - 3E7D FFFD 3E7E FFFD 3F21 3F22 FFFD FFFD - 3F23 -End of Item 0A2E - -Begin of Item 0A2F - Format 2 - srcBegin = C5D8 - destBegin = 3F24 -End of Item 0A2F - -Begin of Item 0A30 - Format 1 - srcBegin = C5E0 - srcEnd = C5E5 - mappingOffset = 1CD5 - Mapping = - 3F25 3F26 FFFD 3F27 FFFD 3F28 -End of Item 0A30 - -Begin of Item 0A31 - Format 2 - srcBegin = C5F0 - destBegin = 3F2C -End of Item 0A31 - -Begin of Item 0A32 - Format 1 - srcBegin = C5F4 - srcEnd = C5F7 - mappingOffset = 1CDB - Mapping = - 3F2D FFFD 3F2E 3F2F -End of Item 0A32 - -Begin of Item 0A33 - Format 2 - srcBegin = C60C - destBegin = 3F3A -End of Item 0A33 - -Begin of Item 0A34 - Format 2 - srcBegin = C610 - destBegin = 3F3B -End of Item 0A34 - -Begin of Item 0A35 - Format 1 - srcBegin = C618 - srcEnd = C61C - mappingOffset = 1CDF - Mapping = - 3F3C 3F3D FFFD 3F3E 3F3F -End of Item 0A35 - -Begin of Item 0A36 - Format 1 - srcBegin = C624 - srcEnd = C628 - mappingOffset = 1CE4 - Mapping = - 3F40 3F41 FFFD FFFD 3F42 -End of Item 0A36 - -Begin of Item 0A37 - Format 2 - srcBegin = C630 - destBegin = 3F46 -End of Item 0A37 - -Begin of Item 0A38 - Format 1 - srcBegin = C637 - srcEnd = C63B - mappingOffset = 1CE9 - Mapping = - 3F4A FFFD 3F4B FFFD 3F4C -End of Item 0A38 - -Begin of Item 0A39 - Format 1 - srcBegin = C640 - srcEnd = C644 - mappingOffset = 1CEE - Mapping = - 3F4D 3F4E FFFD FFFD 3F4F -End of Item 0A39 - -Begin of Item 0A3A - Format 2 - srcBegin = C648 - destBegin = 3F50 -End of Item 0A3A - -Begin of Item 0A3B - Format 1 - srcBegin = C650 - srcEnd = C651 - mappingOffset = 1CF3 - Mapping = - 3F51 3F52 -End of Item 0A3B - -Begin of Item 0A3C - Format 1 - srcBegin = C65C - srcEnd = C660 - mappingOffset = 1CF5 - Mapping = - 3F56 3F57 FFFD FFFD 3F58 -End of Item 0A3C - -Begin of Item 0A3D - Format 1 - srcBegin = C66C - srcEnd = C671 - mappingOffset = 1CFA - Mapping = - 3F59 FFFD FFFD 3F5A FFFD 3F5B -End of Item 0A3D - -Begin of Item 0A3E - Format 1 - srcBegin = C678 - srcEnd = C67C - mappingOffset = 1D00 - Mapping = - 3F5C 3F5D FFFD FFFD 3F5E -End of Item 0A3E - -Begin of Item 0A3F - Format 2 - srcBegin = C680 - destBegin = 3F5F -End of Item 0A3F - -Begin of Item 0A40 - Format 1 - srcBegin = C688 - srcEnd = C68D - mappingOffset = 1D05 - Mapping = - 3F60 3F61 FFFD 3F62 FFFD 3F63 -End of Item 0A40 - -Begin of Item 0A41 - Format 1 - srcBegin = C694 - srcEnd = C698 - mappingOffset = 1D0B - Mapping = - 3F64 3F65 FFFD FFFD 3F66 -End of Item 0A41 - -Begin of Item 0A42 - Format 2 - srcBegin = C69C - destBegin = 3F67 -End of Item 0A42 - -Begin of Item 0A43 - Format 1 - srcBegin = C6A4 - srcEnd = C6A9 - mappingOffset = 1D10 - Mapping = - 3F68 3F69 FFFD 3F6A FFFD 3F6B -End of Item 0A43 - -Begin of Item 0A44 - Format 1 - srcBegin = C6B0 - srcEnd = C6B4 - mappingOffset = 1D16 - Mapping = - 3F6C 3F6D FFFD FFFD 3F6E -End of Item 0A44 - -Begin of Item 0A45 - Format 1 - srcBegin = C6C0 - srcEnd = C6C5 - mappingOffset = 1D1B - Mapping = - 3F72 3F73 FFFD 3F74 FFFD 3F75 -End of Item 0A45 - -Begin of Item 0A46 - Format 1 - srcBegin = C6CC - srcEnd = C6D0 - mappingOffset = 1D21 - Mapping = - 3F76 3F77 FFFD FFFD 3F78 -End of Item 0A46 - -Begin of Item 0A47 - Format 2 - srcBegin = C6D4 - destBegin = 3F79 -End of Item 0A47 - -Begin of Item 0A48 - Format 1 - srcBegin = C6DC - srcEnd = C6E1 - mappingOffset = 1D26 - Mapping = - 3F7A 3F7B FFFD FFFD 3F7C 3F7D -End of Item 0A48 - -Begin of Item 0A49 - Format 1 - srcBegin = C6E8 - srcEnd = C6EC - mappingOffset = 1D2C - Mapping = - 3F7E 4021 FFFD FFFD 4022 -End of Item 0A49 - -Begin of Item 0A4A - Format 2 - srcBegin = C6F0 - destBegin = 4023 -End of Item 0A4A - -Begin of Item 0A4B - Format 1 - srcBegin = C6F8 - srcEnd = C6F9 - mappingOffset = 1D31 - Mapping = - 4024 4025 -End of Item 0A4B - -Begin of Item 0A4C - Format 2 - srcBegin = C6FD - destBegin = 4026 -End of Item 0A4C - -Begin of Item 0A4D - Format 1 - srcBegin = C704 - srcEnd = C708 - mappingOffset = 1D33 - Mapping = - 4027 4028 FFFD FFFD 4029 -End of Item 0A4D - -Begin of Item 0A4E - Format 2 - srcBegin = C70C - destBegin = 402A -End of Item 0A4E - -Begin of Item 0A4F - Format 1 - srcBegin = C714 - srcEnd = C719 - mappingOffset = 1D38 - Mapping = - 402B 402C FFFD 402D FFFD 402E -End of Item 0A4F - -Begin of Item 0A50 - Format 1 - srcBegin = C720 - srcEnd = C724 - mappingOffset = 1D3E - Mapping = - 402F 4030 FFFD FFFD 4031 -End of Item 0A50 - -Begin of Item 0A51 - Format 2 - srcBegin = C728 - destBegin = 4032 -End of Item 0A51 - -Begin of Item 0A52 - Format 1 - srcBegin = C730 - srcEnd = C737 - mappingOffset = 1D43 - Mapping = - 4033 4034 FFFD 4035 FFFD 4036 FFFD 4037 -End of Item 0A52 - -Begin of Item 0A53 - Format 1 - srcBegin = C73C - srcEnd = C740 - mappingOffset = 1D4B - Mapping = - 4038 4039 FFFD FFFD 403A -End of Item 0A53 - -Begin of Item 0A54 - Format 2 - srcBegin = C744 - destBegin = 403B -End of Item 0A54 - -Begin of Item 0A55 - Format 1 - srcBegin = C74A - srcEnd = C74F - mappingOffset = 1D50 - Mapping = - 403C FFFD 403D 403E FFFD 403F -End of Item 0A55 - -Begin of Item 0A56 - Format 2 - srcBegin = C75C - destBegin = 4048 -End of Item 0A56 - -Begin of Item 0A57 - Format 2 - srcBegin = C760 - destBegin = 4049 -End of Item 0A57 - -Begin of Item 0A58 - Format 1 - srcBegin = C768 - srcEnd = C76B - mappingOffset = 1D56 - Mapping = - 404A FFFD FFFD 404B -End of Item 0A58 - -Begin of Item 0A59 - Format 1 - srcBegin = C774 - srcEnd = C778 - mappingOffset = 1D5A - Mapping = - 404C 404D FFFD FFFD 404E -End of Item 0A59 - -Begin of Item 0A5A - Format 1 - srcBegin = C78E - srcEnd = C794 - mappingOffset = 1D5F - Mapping = - 4059 FFFD 405A 405B FFFD FFFD 405C -End of Item 0A5A - -Begin of Item 0A5B - Format 2 - srcBegin = C79A - destBegin = 4060 -End of Item 0A5B - -Begin of Item 0A5C - Format 1 - srcBegin = C7A0 - srcEnd = C7A1 - mappingOffset = 1D66 - Mapping = - 4061 4062 -End of Item 0A5C - -Begin of Item 0A5D - Format 1 - srcBegin = C7AC - srcEnd = C7B0 - mappingOffset = 1D68 - Mapping = - 4067 4068 FFFD FFFD 4069 -End of Item 0A5D - -Begin of Item 0A5E - Format 2 - srcBegin = C7B4 - destBegin = 406A -End of Item 0A5E - -Begin of Item 0A5F - Format 1 - srcBegin = C7BC - srcEnd = C7BD - mappingOffset = 1D6D - Mapping = - 406B 406C -End of Item 0A5F - -Begin of Item 0A60 - Format 1 - srcBegin = C7C8 - srcEnd = C7D0 - mappingOffset = 1D6F - Mapping = - 4070 4071 FFFD FFFD 4072 FFFD 4073 FFFD - 4074 -End of Item 0A60 - -Begin of Item 0A61 - Format 2 - srcBegin = C7D8 - destBegin = 4075 -End of Item 0A61 - -Begin of Item 0A62 - Format 2 - srcBegin = C7DD - destBegin = 4076 -End of Item 0A62 - -Begin of Item 0A63 - Format 2 - srcBegin = C7E4 - destBegin = 4077 -End of Item 0A63 - -Begin of Item 0A64 - Format 2 - srcBegin = C7E8 - destBegin = 4078 -End of Item 0A64 - -Begin of Item 0A65 - Format 2 - srcBegin = C7EC - destBegin = 4079 -End of Item 0A65 - -Begin of Item 0A66 - Format 1 - srcBegin = C800 - srcEnd = C804 - mappingOffset = 1D78 - Mapping = - 407A 407B FFFD FFFD 407C -End of Item 0A66 - -Begin of Item 0A67 - Format 1 - srcBegin = C808 - srcEnd = C80A - mappingOffset = 1D7D - Mapping = - 407D FFFD 407E -End of Item 0A67 - -Begin of Item 0A68 - Format 1 - srcBegin = C810 - srcEnd = C816 - mappingOffset = 1D80 - Mapping = - 4121 4122 FFFD 4123 FFFD 4124 4125 -End of Item 0A68 - -Begin of Item 0A69 - Format 1 - srcBegin = C81C - srcEnd = C820 - mappingOffset = 1D87 - Mapping = - 4126 4127 FFFD FFFD 4128 -End of Item 0A69 - -Begin of Item 0A6A - Format 2 - srcBegin = C824 - destBegin = 4129 -End of Item 0A6A - -Begin of Item 0A6B - Format 1 - srcBegin = C82C - srcEnd = C831 - mappingOffset = 1D8C - Mapping = - 412A 412B FFFD 412C FFFD 412D -End of Item 0A6B - -Begin of Item 0A6C - Format 2 - srcBegin = C838 - destBegin = 412E -End of Item 0A6C - -Begin of Item 0A6D - Format 2 - srcBegin = C83C - destBegin = 412F -End of Item 0A6D - -Begin of Item 0A6E - Format 2 - srcBegin = C840 - destBegin = 4130 -End of Item 0A6E - -Begin of Item 0A6F - Format 1 - srcBegin = C848 - srcEnd = C84D - mappingOffset = 1D92 - Mapping = - 4131 4132 FFFD FFFD 4133 4134 -End of Item 0A6F - -Begin of Item 0A70 - Format 2 - srcBegin = C854 - destBegin = 4135 -End of Item 0A70 - -Begin of Item 0A71 - Format 1 - srcBegin = C870 - srcEnd = C874 - mappingOffset = 1D98 - Mapping = - 4136 4137 FFFD FFFD 4138 -End of Item 0A71 - -Begin of Item 0A72 - Format 1 - srcBegin = C878 - srcEnd = C87A - mappingOffset = 1D9D - Mapping = - 4139 FFFD 413A -End of Item 0A72 - -Begin of Item 0A73 - Format 1 - srcBegin = C880 - srcEnd = C883 - mappingOffset = 1DA0 - Mapping = - 413B 413C FFFD 413D -End of Item 0A73 - -Begin of Item 0A74 - Format 2 - srcBegin = C894 - destBegin = 4144 -End of Item 0A74 - -Begin of Item 0A75 - Format 1 - srcBegin = C89D - srcEnd = C8A1 - mappingOffset = 1DA4 - Mapping = - 4145 FFFD 4146 FFFD 4147 -End of Item 0A75 - -Begin of Item 0A76 - Format 2 - srcBegin = C8A8 - destBegin = 4148 -End of Item 0A76 - -Begin of Item 0A77 - Format 1 - srcBegin = C8BC - srcEnd = C8BD - mappingOffset = 1DA9 - Mapping = - 4149 414A -End of Item 0A77 - -Begin of Item 0A78 - Format 2 - srcBegin = C8C4 - destBegin = 414B -End of Item 0A78 - -Begin of Item 0A79 - Format 2 - srcBegin = C8C8 - destBegin = 414C -End of Item 0A79 - -Begin of Item 0A7A - Format 2 - srcBegin = C8CC - destBegin = 414D -End of Item 0A7A - -Begin of Item 0A7B - Format 1 - srcBegin = C8D4 - srcEnd = C8D9 - mappingOffset = 1DAB - Mapping = - 414E 414F FFFD 4150 FFFD 4151 -End of Item 0A7B - -Begin of Item 0A7C - Format 1 - srcBegin = C8E0 - srcEnd = C8E4 - mappingOffset = 1DB1 - Mapping = - 4152 4153 FFFD FFFD 4154 -End of Item 0A7C - -Begin of Item 0A7D - Format 2 - srcBegin = C8F5 - destBegin = 4155 -End of Item 0A7D - -Begin of Item 0A7E - Format 1 - srcBegin = C8FC - srcEnd = C900 - mappingOffset = 1DB6 - Mapping = - 4156 4157 FFFD FFFD 4158 -End of Item 0A7E - -Begin of Item 0A7F - Format 1 - srcBegin = C90C - srcEnd = C911 - mappingOffset = 1DBB - Mapping = - 415C 415D FFFD 415E FFFD 415F -End of Item 0A7F - -Begin of Item 0A80 - Format 2 - srcBegin = C918 - destBegin = 4160 -End of Item 0A80 - -Begin of Item 0A81 - Format 2 - srcBegin = C92C - destBegin = 4161 -End of Item 0A81 - -Begin of Item 0A82 - Format 2 - srcBegin = C934 - destBegin = 4162 -End of Item 0A82 - -Begin of Item 0A83 - Format 1 - srcBegin = C950 - srcEnd = C954 - mappingOffset = 1DC1 - Mapping = - 4163 4164 FFFD FFFD 4165 -End of Item 0A83 - -Begin of Item 0A84 - Format 2 - srcBegin = C958 - destBegin = 4166 -End of Item 0A84 - -Begin of Item 0A85 - Format 1 - srcBegin = C960 - srcEnd = C963 - mappingOffset = 1DC6 - Mapping = - 4167 4168 FFFD 4169 -End of Item 0A85 - -Begin of Item 0A86 - Format 2 - srcBegin = C96C - destBegin = 416A -End of Item 0A86 - -Begin of Item 0A87 - Format 2 - srcBegin = C970 - destBegin = 416B -End of Item 0A87 - -Begin of Item 0A88 - Format 2 - srcBegin = C974 - destBegin = 416C -End of Item 0A88 - -Begin of Item 0A89 - Format 2 - srcBegin = C97C - destBegin = 416D -End of Item 0A89 - -Begin of Item 0A8A - Format 1 - srcBegin = C988 - srcEnd = C98C - mappingOffset = 1DCA - Mapping = - 416E 416F FFFD FFFD 4170 -End of Item 0A8A - -Begin of Item 0A8B - Format 2 - srcBegin = C990 - destBegin = 4171 -End of Item 0A8B - -Begin of Item 0A8C - Format 1 - srcBegin = C998 - srcEnd = C99D - mappingOffset = 1DCF - Mapping = - 4172 4173 FFFD 4174 FFFD 4175 -End of Item 0A8C - -Begin of Item 0A8D - Format 1 - srcBegin = C9C0 - srcEnd = C9CA - mappingOffset = 1DD5 - Mapping = - 4176 4177 FFFD FFFD 4178 FFFD FFFD 4179 - 417A FFFD 417B -End of Item 0A8D - -Begin of Item 0A8E - Format 1 - srcBegin = C9D0 - srcEnd = C9E7 - mappingOffset = 1DE0 - Mapping = - 417C 417D FFFD 417E FFFD 4221 4222 FFFD - FFFD 4223 4224 FFFD 4225 4226 FFFD FFFD - 4227 FFFD 4228 FFFD 4229 FFFD FFFD 422A -End of Item 0A8E - -Begin of Item 0A8F - Format 1 - srcBegin = C9EC - srcEnd = C9ED - mappingOffset = 1DF8 - Mapping = - 422B 422C -End of Item 0A8F - -Begin of Item 0A90 - Format 1 - srcBegin = C9F8 - srcEnd = C9FC - mappingOffset = 1DFA - Mapping = - 4230 4231 FFFD FFFD 4232 -End of Item 0A90 - -Begin of Item 0A91 - Format 2 - srcBegin = CA00 - destBegin = 4233 -End of Item 0A91 - -Begin of Item 0A92 - Format 1 - srcBegin = CA08 - srcEnd = CA09 - mappingOffset = 1DFF - Mapping = - 4234 4235 -End of Item 0A92 - -Begin of Item 0A93 - Format 2 - srcBegin = CA14 - destBegin = 4239 -End of Item 0A93 - -Begin of Item 0A94 - Format 2 - srcBegin = CA18 - destBegin = 423A -End of Item 0A94 - -Begin of Item 0A95 - Format 2 - srcBegin = CA29 - destBegin = 423B -End of Item 0A95 - -Begin of Item 0A96 - Format 1 - srcBegin = CA4C - srcEnd = CA50 - mappingOffset = 1E01 - Mapping = - 423C 423D FFFD FFFD 423E -End of Item 0A96 - -Begin of Item 0A97 - Format 2 - srcBegin = CA54 - destBegin = 423F -End of Item 0A97 - -Begin of Item 0A98 - Format 1 - srcBegin = CA5C - srcEnd = CA5D - mappingOffset = 1E06 - Mapping = - 4240 4241 -End of Item 0A98 - -Begin of Item 0A99 - Format 2 - srcBegin = CA68 - destBegin = 4245 -End of Item 0A99 - -Begin of Item 0A9A - Format 2 - srcBegin = CA7D - destBegin = 4246 -End of Item 0A9A - -Begin of Item 0A9B - Format 2 - srcBegin = CA84 - destBegin = 4247 -End of Item 0A9B - -Begin of Item 0A9C - Format 2 - srcBegin = CA98 - destBegin = 4248 -End of Item 0A9C - -Begin of Item 0A9D - Format 1 - srcBegin = CABC - srcEnd = CAC0 - mappingOffset = 1E08 - Mapping = - 4249 424A FFFD FFFD 424B -End of Item 0A9D - -Begin of Item 0A9E - Format 2 - srcBegin = CAC4 - destBegin = 424C -End of Item 0A9E - -Begin of Item 0A9F - Format 1 - srcBegin = CACC - srcEnd = CAD3 - mappingOffset = 1E0D - Mapping = - 424D 424E FFFD 424F FFFD 4250 FFFD 4251 -End of Item 0A9F - -Begin of Item 0AA0 - Format 1 - srcBegin = CAD8 - srcEnd = CAD9 - mappingOffset = 1E15 - Mapping = - 4252 4253 -End of Item 0AA0 - -Begin of Item 0AA1 - Format 2 - srcBegin = CAE0 - destBegin = 4254 -End of Item 0AA1 - -Begin of Item 0AA2 - Format 2 - srcBegin = CAEC - destBegin = 4255 -End of Item 0AA2 - -Begin of Item 0AA3 - Format 2 - srcBegin = CAF4 - destBegin = 4256 -End of Item 0AA3 - -Begin of Item 0AA4 - Format 2 - srcBegin = CB08 - destBegin = 4257 -End of Item 0AA4 - -Begin of Item 0AA5 - Format 2 - srcBegin = CB10 - destBegin = 4258 -End of Item 0AA5 - -Begin of Item 0AA6 - Format 2 - srcBegin = CB14 - destBegin = 4259 -End of Item 0AA6 - -Begin of Item 0AA7 - Format 2 - srcBegin = CB18 - destBegin = 425A -End of Item 0AA7 - -Begin of Item 0AA8 - Format 1 - srcBegin = CB20 - srcEnd = CB21 - mappingOffset = 1E17 - Mapping = - 425B 425C -End of Item 0AA8 - -Begin of Item 0AA9 - Format 2 - srcBegin = CB41 - destBegin = 425D -End of Item 0AA9 - -Begin of Item 0AAA - Format 1 - srcBegin = CB48 - srcEnd = CB4C - mappingOffset = 1E19 - Mapping = - 425E 425F FFFD FFFD 4260 -End of Item 0AAA - -Begin of Item 0AAB - Format 2 - srcBegin = CB50 - destBegin = 4261 -End of Item 0AAB - -Begin of Item 0AAC - Format 1 - srcBegin = CB58 - srcEnd = CB59 - mappingOffset = 1E1E - Mapping = - 4262 4263 -End of Item 0AAC - -Begin of Item 0AAD - Format 2 - srcBegin = CB5D - destBegin = 4264 -End of Item 0AAD - -Begin of Item 0AAE - Format 2 - srcBegin = CB64 - destBegin = 4265 -End of Item 0AAE - -Begin of Item 0AAF - Format 1 - srcBegin = CB78 - srcEnd = CB79 - mappingOffset = 1E20 - Mapping = - 4266 4267 -End of Item 0AAF - -Begin of Item 0AB0 - Format 2 - srcBegin = CB9C - destBegin = 4268 -End of Item 0AB0 - -Begin of Item 0AB1 - Format 2 - srcBegin = CBB8 - destBegin = 4269 -End of Item 0AB1 - -Begin of Item 0AB2 - Format 2 - srcBegin = CBD4 - destBegin = 426A -End of Item 0AB2 - -Begin of Item 0AB3 - Format 1 - srcBegin = CBE4 - srcEnd = CBE9 - mappingOffset = 1E22 - Mapping = - 426B FFFD FFFD 426C FFFD 426D -End of Item 0AB3 - -Begin of Item 0AB4 - Format 1 - srcBegin = CC0C - srcEnd = CC10 - mappingOffset = 1E28 - Mapping = - 426E 426F FFFD FFFD 4270 -End of Item 0AB4 - -Begin of Item 0AB5 - Format 2 - srcBegin = CC14 - destBegin = 4271 -End of Item 0AB5 - -Begin of Item 0AB6 - Format 1 - srcBegin = CC1C - srcEnd = CC1D - mappingOffset = 1E2D - Mapping = - 4272 4273 -End of Item 0AB6 - -Begin of Item 0AB7 - Format 1 - srcBegin = CC21 - srcEnd = CC22 - mappingOffset = 1E2F - Mapping = - 4274 4275 -End of Item 0AB7 - -Begin of Item 0AB8 - Format 1 - srcBegin = CC2C - srcEnd = CC30 - mappingOffset = 1E31 - Mapping = - 4279 FFFD 427A FFFD 427B -End of Item 0AB8 - -Begin of Item 0AB9 - Format 1 - srcBegin = CC38 - srcEnd = CC3B - mappingOffset = 1E36 - Mapping = - 427C 427D FFFD 427E -End of Item 0AB9 - -Begin of Item 0ABA - Format 1 - srcBegin = CC44 - srcEnd = CC48 - mappingOffset = 1E3A - Mapping = - 4324 4325 FFFD FFFD 4326 -End of Item 0ABA - -Begin of Item 0ABB - Format 2 - srcBegin = CC4C - destBegin = 4327 -End of Item 0ABB - -Begin of Item 0ABC - Format 1 - srcBegin = CC54 - srcEnd = CC55 - mappingOffset = 1E3F - Mapping = - 4328 4329 -End of Item 0ABC - -Begin of Item 0ABD - Format 2 - srcBegin = CC60 - destBegin = 432D -End of Item 0ABD - -Begin of Item 0ABE - Format 1 - srcBegin = CC64 - srcEnd = CC68 - mappingOffset = 1E41 - Mapping = - 432E FFFD 432F FFFD 4330 -End of Item 0ABE - -Begin of Item 0ABF - Format 2 - srcBegin = CC70 - destBegin = 4331 -End of Item 0ABF - -Begin of Item 0AC0 - Format 2 - srcBegin = CC75 - destBegin = 4332 -End of Item 0AC0 - -Begin of Item 0AC1 - Format 1 - srcBegin = CC98 - srcEnd = CC9C - mappingOffset = 1E46 - Mapping = - 4333 4334 FFFD FFFD 4335 -End of Item 0AC1 - -Begin of Item 0AC2 - Format 2 - srcBegin = CCA0 - destBegin = 4336 -End of Item 0AC2 - -Begin of Item 0AC3 - Format 1 - srcBegin = CCA8 - srcEnd = CCA9 - mappingOffset = 1E4B - Mapping = - 4337 4338 -End of Item 0AC3 - -Begin of Item 0AC4 - Format 1 - srcBegin = CCB4 - srcEnd = CCB8 - mappingOffset = 1E4D - Mapping = - 433C 433D FFFD FFFD 433E -End of Item 0AC4 - -Begin of Item 0AC5 - Format 2 - srcBegin = CCBC - destBegin = 433F -End of Item 0AC5 - -Begin of Item 0AC6 - Format 1 - srcBegin = CCC4 - srcEnd = CCC9 - mappingOffset = 1E52 - Mapping = - 4340 4341 FFFD 4342 FFFD 4343 -End of Item 0AC6 - -Begin of Item 0AC7 - Format 2 - srcBegin = CCD0 - destBegin = 4344 -End of Item 0AC7 - -Begin of Item 0AC8 - Format 2 - srcBegin = CCD4 - destBegin = 4345 -End of Item 0AC8 - -Begin of Item 0AC9 - Format 2 - srcBegin = CCE4 - destBegin = 4346 -End of Item 0AC9 - -Begin of Item 0ACA - Format 2 - srcBegin = CCEC - destBegin = 4347 -End of Item 0ACA - -Begin of Item 0ACB - Format 2 - srcBegin = CCF0 - destBegin = 4348 -End of Item 0ACB - -Begin of Item 0ACC - Format 2 - srcBegin = CD01 - destBegin = 4349 -End of Item 0ACC - -Begin of Item 0ACD - Format 1 - srcBegin = CD08 - srcEnd = CD0C - mappingOffset = 1E58 - Mapping = - 434A 434B FFFD FFFD 434C -End of Item 0ACD - -Begin of Item 0ACE - Format 2 - srcBegin = CD10 - destBegin = 434D -End of Item 0ACE - -Begin of Item 0ACF - Format 1 - srcBegin = CD18 - srcEnd = CD1D - mappingOffset = 1E5D - Mapping = - 434E 434F FFFD 4350 FFFD 4351 -End of Item 0ACF - -Begin of Item 0AD0 - Format 2 - srcBegin = CD24 - destBegin = 4352 -End of Item 0AD0 - -Begin of Item 0AD1 - Format 2 - srcBegin = CD28 - destBegin = 4353 -End of Item 0AD1 - -Begin of Item 0AD2 - Format 2 - srcBegin = CD2C - destBegin = 4354 -End of Item 0AD2 - -Begin of Item 0AD3 - Format 2 - srcBegin = CD39 - destBegin = 4355 -End of Item 0AD3 - -Begin of Item 0AD4 - Format 2 - srcBegin = CD5C - destBegin = 4356 -End of Item 0AD4 - -Begin of Item 0AD5 - Format 2 - srcBegin = CD60 - destBegin = 4357 -End of Item 0AD5 - -Begin of Item 0AD6 - Format 2 - srcBegin = CD64 - destBegin = 4358 -End of Item 0AD6 - -Begin of Item 0AD7 - Format 1 - srcBegin = CD6C - srcEnd = CD71 - mappingOffset = 1E63 - Mapping = - 4359 435A FFFD 435B FFFD 435C -End of Item 0AD7 - -Begin of Item 0AD8 - Format 2 - srcBegin = CD78 - destBegin = 435D -End of Item 0AD8 - -Begin of Item 0AD9 - Format 2 - srcBegin = CD88 - destBegin = 435E -End of Item 0AD9 - -Begin of Item 0ADA - Format 1 - srcBegin = CD94 - srcEnd = CD98 - mappingOffset = 1E69 - Mapping = - 435F 4360 FFFD FFFD 4361 -End of Item 0ADA - -Begin of Item 0ADB - Format 2 - srcBegin = CD9C - destBegin = 4362 -End of Item 0ADB - -Begin of Item 0ADC - Format 1 - srcBegin = CDA4 - srcEnd = CDA9 - mappingOffset = 1E6E - Mapping = - 4363 4364 FFFD 4365 FFFD 4366 -End of Item 0ADC - -Begin of Item 0ADD - Format 2 - srcBegin = CDB0 - destBegin = 4367 -End of Item 0ADD - -Begin of Item 0ADE - Format 2 - srcBegin = CDC4 - destBegin = 4368 -End of Item 0ADE - -Begin of Item 0ADF - Format 2 - srcBegin = CDCC - destBegin = 4369 -End of Item 0ADF - -Begin of Item 0AE0 - Format 2 - srcBegin = CDD0 - destBegin = 436A -End of Item 0AE0 - -Begin of Item 0AE1 - Format 2 - srcBegin = CDE8 - destBegin = 436B -End of Item 0AE1 - -Begin of Item 0AE2 - Format 2 - srcBegin = CDEC - destBegin = 436C -End of Item 0AE2 - -Begin of Item 0AE3 - Format 2 - srcBegin = CDF0 - destBegin = 436D -End of Item 0AE3 - -Begin of Item 0AE4 - Format 1 - srcBegin = CDF8 - srcEnd = CDFD - mappingOffset = 1E74 - Mapping = - 436E 436F FFFD 4370 FFFD 4371 -End of Item 0AE4 - -Begin of Item 0AE5 - Format 2 - srcBegin = CE04 - destBegin = 4372 -End of Item 0AE5 - -Begin of Item 0AE6 - Format 2 - srcBegin = CE08 - destBegin = 4373 -End of Item 0AE6 - -Begin of Item 0AE7 - Format 2 - srcBegin = CE0C - destBegin = 4374 -End of Item 0AE7 - -Begin of Item 0AE8 - Format 2 - srcBegin = CE14 - destBegin = 4375 -End of Item 0AE8 - -Begin of Item 0AE9 - Format 2 - srcBegin = CE19 - destBegin = 4376 -End of Item 0AE9 - -Begin of Item 0AEA - Format 1 - srcBegin = CE20 - srcEnd = CE24 - mappingOffset = 1E7A - Mapping = - 4377 4378 FFFD FFFD 4379 -End of Item 0AEA - -Begin of Item 0AEB - Format 2 - srcBegin = CE28 - destBegin = 437A -End of Item 0AEB - -Begin of Item 0AEC - Format 1 - srcBegin = CE30 - srcEnd = CE35 - mappingOffset = 1E7F - Mapping = - 437B 437C FFFD 437D FFFD 437E -End of Item 0AEC - -Begin of Item 0AED - Format 1 - srcBegin = CE58 - srcEnd = CE5C - mappingOffset = 1E85 - Mapping = - 4421 4422 FFFD FFFD 4423 -End of Item 0AED - -Begin of Item 0AEE - Format 1 - srcBegin = CE68 - srcEnd = CE6D - mappingOffset = 1E8A - Mapping = - 4427 4428 FFFD 4429 FFFD 442A -End of Item 0AEE - -Begin of Item 0AEF - Format 1 - srcBegin = CE74 - srcEnd = CE78 - mappingOffset = 1E90 - Mapping = - 442B 442C FFFD FFFD 442D -End of Item 0AEF - -Begin of Item 0AF0 - Format 2 - srcBegin = CE7C - destBegin = 442E -End of Item 0AF0 - -Begin of Item 0AF1 - Format 1 - srcBegin = CE84 - srcEnd = CE89 - mappingOffset = 1E95 - Mapping = - 442F 4430 FFFD 4431 FFFD 4432 -End of Item 0AF1 - -Begin of Item 0AF2 - Format 1 - srcBegin = CE90 - srcEnd = CE94 - mappingOffset = 1E9B - Mapping = - 4433 4434 FFFD FFFD 4435 -End of Item 0AF2 - -Begin of Item 0AF3 - Format 2 - srcBegin = CE98 - destBegin = 4436 -End of Item 0AF3 - -Begin of Item 0AF4 - Format 1 - srcBegin = CEA0 - srcEnd = CEA1 - mappingOffset = 1EA0 - Mapping = - 4437 4438 -End of Item 0AF4 - -Begin of Item 0AF5 - Format 1 - srcBegin = CEAC - srcEnd = CEAD - mappingOffset = 1EA2 - Mapping = - 443C 443D -End of Item 0AF5 - -Begin of Item 0AF6 - Format 2 - srcBegin = CEC1 - destBegin = 443E -End of Item 0AF6 - -Begin of Item 0AF7 - Format 1 - srcBegin = CEE4 - srcEnd = CEEC - mappingOffset = 1EA4 - Mapping = - 443F 4440 FFFD FFFD 4441 FFFD FFFD 4442 - 4443 -End of Item 0AF7 - -Begin of Item 0AF8 - Format 1 - srcBegin = CEF4 - srcEnd = CEF5 - mappingOffset = 1EAD - Mapping = - 4444 4445 -End of Item 0AF8 - -Begin of Item 0AF9 - Format 1 - srcBegin = CF00 - srcEnd = CF04 - mappingOffset = 1EAF - Mapping = - 4449 444A FFFD FFFD 444B -End of Item 0AF9 - -Begin of Item 0AFA - Format 2 - srcBegin = CF08 - destBegin = 444C -End of Item 0AFA - -Begin of Item 0AFB - Format 1 - srcBegin = CF10 - srcEnd = CF15 - mappingOffset = 1EB4 - Mapping = - 444D 444E FFFD 444F FFFD 4450 -End of Item 0AFB - -Begin of Item 0AFC - Format 2 - srcBegin = CF1C - destBegin = 4451 -End of Item 0AFC - -Begin of Item 0AFD - Format 2 - srcBegin = CF20 - destBegin = 4452 -End of Item 0AFD - -Begin of Item 0AFE - Format 2 - srcBegin = CF24 - destBegin = 4453 -End of Item 0AFE - -Begin of Item 0AFF - Format 1 - srcBegin = CF2C - srcEnd = CF2D - mappingOffset = 1EBA - Mapping = - 4454 4455 -End of Item 0AFF - -Begin of Item 0B00 - Format 2 - srcBegin = CF38 - destBegin = 4459 -End of Item 0B00 - -Begin of Item 0B01 - Format 1 - srcBegin = CF54 - srcEnd = CF58 - mappingOffset = 1EBC - Mapping = - 445A 445B FFFD FFFD 445C -End of Item 0B01 - -Begin of Item 0B02 - Format 2 - srcBegin = CF5C - destBegin = 445D -End of Item 0B02 - -Begin of Item 0B03 - Format 1 - srcBegin = CF64 - srcEnd = CF69 - mappingOffset = 1EC1 - Mapping = - 445E 445F FFFD 4460 FFFD 4461 -End of Item 0B03 - -Begin of Item 0B04 - Format 1 - srcBegin = CF70 - srcEnd = CF74 - mappingOffset = 1EC7 - Mapping = - 4462 4463 FFFD FFFD 4464 -End of Item 0B04 - -Begin of Item 0B05 - Format 2 - srcBegin = CF78 - destBegin = 4465 -End of Item 0B05 - -Begin of Item 0B06 - Format 2 - srcBegin = CF80 - destBegin = 4466 -End of Item 0B06 - -Begin of Item 0B07 - Format 2 - srcBegin = CF85 - destBegin = 4467 -End of Item 0B07 - -Begin of Item 0B08 - Format 2 - srcBegin = CF8C - destBegin = 4468 -End of Item 0B08 - -Begin of Item 0B09 - Format 2 - srcBegin = CFA1 - destBegin = 4469 -End of Item 0B09 - -Begin of Item 0B0A - Format 2 - srcBegin = CFA8 - destBegin = 446A -End of Item 0B0A - -Begin of Item 0B0B - Format 2 - srcBegin = CFB0 - destBegin = 446B -End of Item 0B0B - -Begin of Item 0B0C - Format 2 - srcBegin = CFC4 - destBegin = 446C -End of Item 0B0C - -Begin of Item 0B0D - Format 1 - srcBegin = CFE0 - srcEnd = CFE4 - mappingOffset = 1ECC - Mapping = - 446D 446E FFFD FFFD 446F -End of Item 0B0D - -Begin of Item 0B0E - Format 2 - srcBegin = CFE8 - destBegin = 4470 -End of Item 0B0E - -Begin of Item 0B0F - Format 1 - srcBegin = CFF0 - srcEnd = CFF5 - mappingOffset = 1ED1 - Mapping = - 4471 4472 FFFD 4473 FFFD 4474 -End of Item 0B0F - -Begin of Item 0B10 - Format 2 - srcBegin = CFFC - destBegin = 4475 -End of Item 0B10 - -Begin of Item 0B11 - Format 2 - srcBegin = D000 - destBegin = 4476 -End of Item 0B11 - -Begin of Item 0B12 - Format 2 - srcBegin = D004 - destBegin = 4477 -End of Item 0B12 - -Begin of Item 0B13 - Format 2 - srcBegin = D011 - destBegin = 4478 -End of Item 0B13 - -Begin of Item 0B14 - Format 2 - srcBegin = D018 - destBegin = 4479 -End of Item 0B14 - -Begin of Item 0B15 - Format 2 - srcBegin = D02D - destBegin = 447A -End of Item 0B15 - -Begin of Item 0B16 - Format 1 - srcBegin = D034 - srcEnd = D038 - mappingOffset = 1ED7 - Mapping = - 447B 447C FFFD FFFD 447D -End of Item 0B16 - -Begin of Item 0B17 - Format 2 - srcBegin = D03C - destBegin = 447E -End of Item 0B17 - -Begin of Item 0B18 - Format 1 - srcBegin = D044 - srcEnd = D049 - mappingOffset = 1EDC - Mapping = - 4521 4522 FFFD 4523 FFFD 4524 -End of Item 0B18 - -Begin of Item 0B19 - Format 2 - srcBegin = D050 - destBegin = 4525 -End of Item 0B19 - -Begin of Item 0B1A - Format 2 - srcBegin = D054 - destBegin = 4526 -End of Item 0B1A - -Begin of Item 0B1B - Format 2 - srcBegin = D058 - destBegin = 4527 -End of Item 0B1B - -Begin of Item 0B1C - Format 2 - srcBegin = D060 - destBegin = 4528 -End of Item 0B1C - -Begin of Item 0B1D - Format 1 - srcBegin = D06C - srcEnd = D070 - mappingOffset = 1EE2 - Mapping = - 4529 452A FFFD FFFD 452B -End of Item 0B1D - -Begin of Item 0B1E - Format 2 - srcBegin = D074 - destBegin = 452C -End of Item 0B1E - -Begin of Item 0B1F - Format 1 - srcBegin = D07C - srcEnd = D07D - mappingOffset = 1EE7 - Mapping = - 452D 452E -End of Item 0B1F - -Begin of Item 0B20 - Format 2 - srcBegin = D081 - destBegin = 452F -End of Item 0B20 - -Begin of Item 0B21 - Format 1 - srcBegin = D0A4 - srcEnd = D0A8 - mappingOffset = 1EE9 - Mapping = - 4530 4531 FFFD FFFD 4532 -End of Item 0B21 - -Begin of Item 0B22 - Format 2 - srcBegin = D0AC - destBegin = 4533 -End of Item 0B22 - -Begin of Item 0B23 - Format 1 - srcBegin = D0B4 - srcEnd = D0B9 - mappingOffset = 1EEE - Mapping = - 4534 4535 FFFD 4536 FFFD 4537 -End of Item 0B23 - -Begin of Item 0B24 - Format 1 - srcBegin = D0C0 - srcEnd = D0C4 - mappingOffset = 1EF4 - Mapping = - 4538 4539 FFFD FFFD 453A -End of Item 0B24 - -Begin of Item 0B25 - Format 1 - srcBegin = D0C8 - srcEnd = D0C9 - mappingOffset = 1EF9 - Mapping = - 453B 453C -End of Item 0B25 - -Begin of Item 0B26 - Format 1 - srcBegin = D0D0 - srcEnd = D0D1 - mappingOffset = 1EFB - Mapping = - 453D 453E -End of Item 0B26 - -Begin of Item 0B27 - Format 1 - srcBegin = D0DC - srcEnd = D0E0 - mappingOffset = 1EFD - Mapping = - 4542 4543 FFFD FFFD 4544 -End of Item 0B27 - -Begin of Item 0B28 - Format 2 - srcBegin = D0E4 - destBegin = 4545 -End of Item 0B28 - -Begin of Item 0B29 - Format 1 - srcBegin = D0EC - srcEnd = D0ED - mappingOffset = 1F02 - Mapping = - 4546 4547 -End of Item 0B29 - -Begin of Item 0B2A - Format 2 - srcBegin = D0F8 - destBegin = 454B -End of Item 0B2A - -Begin of Item 0B2B - Format 2 - srcBegin = D10D - destBegin = 454C -End of Item 0B2B - -Begin of Item 0B2C - Format 1 - srcBegin = D130 - srcEnd = D134 - mappingOffset = 1F04 - Mapping = - 454D 454E FFFD FFFD 454F -End of Item 0B2C - -Begin of Item 0B2D - Format 1 - srcBegin = D138 - srcEnd = D13A - mappingOffset = 1F09 - Mapping = - 4550 FFFD 4551 -End of Item 0B2D - -Begin of Item 0B2E - Format 1 - srcBegin = D140 - srcEnd = D141 - mappingOffset = 1F0C - Mapping = - 4552 4553 -End of Item 0B2E - -Begin of Item 0B2F - Format 1 - srcBegin = D14C - srcEnd = D150 - mappingOffset = 1F0E - Mapping = - 4557 4558 FFFD FFFD 4559 -End of Item 0B2F - -Begin of Item 0B30 - Format 2 - srcBegin = D154 - destBegin = 455A -End of Item 0B30 - -Begin of Item 0B31 - Format 1 - srcBegin = D15C - srcEnd = D161 - mappingOffset = 1F13 - Mapping = - 455B 455C FFFD 455D FFFD 455E -End of Item 0B31 - -Begin of Item 0B32 - Format 2 - srcBegin = D168 - destBegin = 455F -End of Item 0B32 - -Begin of Item 0B33 - Format 2 - srcBegin = D16C - destBegin = 4560 -End of Item 0B33 - -Begin of Item 0B34 - Format 2 - srcBegin = D17C - destBegin = 4561 -End of Item 0B34 - -Begin of Item 0B35 - Format 2 - srcBegin = D184 - destBegin = 4562 -End of Item 0B35 - -Begin of Item 0B36 - Format 2 - srcBegin = D188 - destBegin = 4563 -End of Item 0B36 - -Begin of Item 0B37 - Format 1 - srcBegin = D1A0 - srcEnd = D1A4 - mappingOffset = 1F19 - Mapping = - 4564 4565 FFFD FFFD 4566 -End of Item 0B37 - -Begin of Item 0B38 - Format 2 - srcBegin = D1A8 - destBegin = 4567 -End of Item 0B38 - -Begin of Item 0B39 - Format 1 - srcBegin = D1B0 - srcEnd = D1B5 - mappingOffset = 1F1E - Mapping = - 4568 4569 FFFD 456A FFFD 456B -End of Item 0B39 - -Begin of Item 0B3A - Format 1 - srcBegin = D1BA - srcEnd = D1BC - mappingOffset = 1F24 - Mapping = - 456C FFFD 456D -End of Item 0B3A - -Begin of Item 0B3B - Format 2 - srcBegin = D1C0 - destBegin = 456E -End of Item 0B3B - -Begin of Item 0B3C - Format 2 - srcBegin = D1D8 - destBegin = 456F -End of Item 0B3C - -Begin of Item 0B3D - Format 2 - srcBegin = D1F4 - destBegin = 4570 -End of Item 0B3D - -Begin of Item 0B3E - Format 2 - srcBegin = D1F8 - destBegin = 4571 -End of Item 0B3E - -Begin of Item 0B3F - Format 1 - srcBegin = D207 - srcEnd = D209 - mappingOffset = 1F27 - Mapping = - 4572 FFFD 4573 -End of Item 0B3F - -Begin of Item 0B40 - Format 2 - srcBegin = D210 - destBegin = 4574 -End of Item 0B40 - -Begin of Item 0B41 - Format 1 - srcBegin = D22C - srcEnd = D230 - mappingOffset = 1F2A - Mapping = - 4575 4576 FFFD FFFD 4577 -End of Item 0B41 - -Begin of Item 0B42 - Format 2 - srcBegin = D234 - destBegin = 4578 -End of Item 0B42 - -Begin of Item 0B43 - Format 1 - srcBegin = D23C - srcEnd = D241 - mappingOffset = 1F2F - Mapping = - 4579 457A FFFD 457B FFFD 457C -End of Item 0B43 - -Begin of Item 0B44 - Format 2 - srcBegin = D248 - destBegin = 457D -End of Item 0B44 - -Begin of Item 0B45 - Format 2 - srcBegin = D25C - destBegin = 457E -End of Item 0B45 - -Begin of Item 0B46 - Format 2 - srcBegin = D264 - destBegin = 4621 -End of Item 0B46 - -Begin of Item 0B47 - Format 1 - srcBegin = D280 - srcEnd = D284 - mappingOffset = 1F35 - Mapping = - 4622 4623 FFFD FFFD 4624 -End of Item 0B47 - -Begin of Item 0B48 - Format 2 - srcBegin = D288 - destBegin = 4625 -End of Item 0B48 - -Begin of Item 0B49 - Format 1 - srcBegin = D290 - srcEnd = D291 - mappingOffset = 1F3A - Mapping = - 4626 4627 -End of Item 0B49 - -Begin of Item 0B4A - Format 2 - srcBegin = D295 - destBegin = 4628 -End of Item 0B4A - -Begin of Item 0B4B - Format 2 - srcBegin = D29C - destBegin = 4629 -End of Item 0B4B - -Begin of Item 0B4C - Format 2 - srcBegin = D2A0 - destBegin = 462A -End of Item 0B4C - -Begin of Item 0B4D - Format 2 - srcBegin = D2A4 - destBegin = 462B -End of Item 0B4D - -Begin of Item 0B4E - Format 2 - srcBegin = D2AC - destBegin = 462C -End of Item 0B4E - -Begin of Item 0B4F - Format 2 - srcBegin = D2B1 - destBegin = 462D -End of Item 0B4F - -Begin of Item 0B50 - Format 1 - srcBegin = D2B8 - srcEnd = D2C2 - mappingOffset = 1F3C - Mapping = - 462E 462F FFFD FFFD 4630 FFFD FFFD 4631 - 4632 FFFD 4633 -End of Item 0B50 - -Begin of Item 0B51 - Format 1 - srcBegin = D2C8 - srcEnd = D2CB - mappingOffset = 1F47 - Mapping = - 4634 4635 FFFD 4636 -End of Item 0B51 - -Begin of Item 0B52 - Format 2 - srcBegin = D2D4 - destBegin = 4637 -End of Item 0B52 - -Begin of Item 0B53 - Format 2 - srcBegin = D2D8 - destBegin = 4638 -End of Item 0B53 - -Begin of Item 0B54 - Format 2 - srcBegin = D2DC - destBegin = 4639 -End of Item 0B54 - -Begin of Item 0B55 - Format 1 - srcBegin = D2E4 - srcEnd = D2E5 - mappingOffset = 1F4B - Mapping = - 463A 463B -End of Item 0B55 - -Begin of Item 0B56 - Format 1 - srcBegin = D2F0 - srcEnd = D2F4 - mappingOffset = 1F4D - Mapping = - 463C 463D FFFD FFFD 463E -End of Item 0B56 - -Begin of Item 0B57 - Format 2 - srcBegin = D2F8 - destBegin = 463F -End of Item 0B57 - -Begin of Item 0B58 - Format 1 - srcBegin = D300 - srcEnd = D305 - mappingOffset = 1F52 - Mapping = - 4640 4641 FFFD 4642 FFFD 4643 -End of Item 0B58 - -Begin of Item 0B59 - Format 2 - srcBegin = D310 - destBegin = 4647 -End of Item 0B59 - -Begin of Item 0B5A - Format 1 - srcBegin = D314 - srcEnd = D316 - mappingOffset = 1F58 - Mapping = - 4648 FFFD 4649 -End of Item 0B5A - -Begin of Item 0B5B - Format 1 - srcBegin = D31C - srcEnd = D31D - mappingOffset = 1F5B - Mapping = - 464A 464B -End of Item 0B5B - -Begin of Item 0B5C - Format 1 - srcBegin = D325 - srcEnd = D32C - mappingOffset = 1F5D - Mapping = - 464F FFFD FFFD 4650 4651 FFFD FFFD 4652 -End of Item 0B5C - -Begin of Item 0B5D - Format 2 - srcBegin = D330 - destBegin = 4653 -End of Item 0B5D - -Begin of Item 0B5E - Format 1 - srcBegin = D338 - srcEnd = D339 - mappingOffset = 1F65 - Mapping = - 4654 4655 -End of Item 0B5E - -Begin of Item 0B5F - Format 1 - srcBegin = D344 - srcEnd = D345 - mappingOffset = 1F67 - Mapping = - 4659 465A -End of Item 0B5F - -Begin of Item 0B60 - Format 1 - srcBegin = D37C - srcEnd = D380 - mappingOffset = 1F69 - Mapping = - 465B 465C FFFD FFFD 465D -End of Item 0B60 - -Begin of Item 0B61 - Format 2 - srcBegin = D384 - destBegin = 465E -End of Item 0B61 - -Begin of Item 0B62 - Format 1 - srcBegin = D38C - srcEnd = D38D - mappingOffset = 1F6E - Mapping = - 465F 4660 -End of Item 0B62 - -Begin of Item 0B63 - Format 1 - srcBegin = D398 - srcEnd = D39C - mappingOffset = 1F70 - Mapping = - 4664 4665 FFFD FFFD 4666 -End of Item 0B63 - -Begin of Item 0B64 - Format 2 - srcBegin = D3A0 - destBegin = 4667 -End of Item 0B64 - -Begin of Item 0B65 - Format 1 - srcBegin = D3A8 - srcEnd = D3AD - mappingOffset = 1F75 - Mapping = - 4668 4669 FFFD 466A FFFD 466B -End of Item 0B65 - -Begin of Item 0B66 - Format 2 - srcBegin = D3B4 - destBegin = 466C -End of Item 0B66 - -Begin of Item 0B67 - Format 2 - srcBegin = D3B8 - destBegin = 466D -End of Item 0B67 - -Begin of Item 0B68 - Format 2 - srcBegin = D3BC - destBegin = 466E -End of Item 0B68 - -Begin of Item 0B69 - Format 1 - srcBegin = D3C4 - srcEnd = D3C9 - mappingOffset = 1F7B - Mapping = - 466F 4670 FFFD FFFD 4671 4672 -End of Item 0B69 - -Begin of Item 0B6A - Format 2 - srcBegin = D3D0 - destBegin = 4673 -End of Item 0B6A - -Begin of Item 0B6B - Format 2 - srcBegin = D3D8 - destBegin = 4674 -End of Item 0B6B - -Begin of Item 0B6C - Format 1 - srcBegin = D3E1 - srcEnd = D3E3 - mappingOffset = 1F81 - Mapping = - 4675 FFFD 4676 -End of Item 0B6C - -Begin of Item 0B6D - Format 1 - srcBegin = D3EC - srcEnd = D3F0 - mappingOffset = 1F84 - Mapping = - 4677 4678 FFFD FFFD 4679 -End of Item 0B6D - -Begin of Item 0B6E - Format 2 - srcBegin = D3F4 - destBegin = 467A -End of Item 0B6E - -Begin of Item 0B6F - Format 1 - srcBegin = D3FC - srcEnd = D401 - mappingOffset = 1F89 - Mapping = - 467B 467C FFFD 467D FFFD 467E -End of Item 0B6F - -Begin of Item 0B70 - Format 2 - srcBegin = D408 - destBegin = 4721 -End of Item 0B70 - -Begin of Item 0B71 - Format 2 - srcBegin = D41D - destBegin = 4722 -End of Item 0B71 - -Begin of Item 0B72 - Format 2 - srcBegin = D440 - destBegin = 4723 -End of Item 0B72 - -Begin of Item 0B73 - Format 2 - srcBegin = D444 - destBegin = 4724 -End of Item 0B73 - -Begin of Item 0B74 - Format 2 - srcBegin = D45C - destBegin = 4725 -End of Item 0B74 - -Begin of Item 0B75 - Format 2 - srcBegin = D460 - destBegin = 4726 -End of Item 0B75 - -Begin of Item 0B76 - Format 2 - srcBegin = D464 - destBegin = 4727 -End of Item 0B76 - -Begin of Item 0B77 - Format 1 - srcBegin = D46D - srcEnd = D46F - mappingOffset = 1F8F - Mapping = - 4728 FFFD 4729 -End of Item 0B77 - -Begin of Item 0B78 - Format 1 - srcBegin = D478 - srcEnd = D482 - mappingOffset = 1F92 - Mapping = - 472A 472B FFFD FFFD 472C FFFD FFFD 472D - 472E FFFD 472F -End of Item 0B78 - -Begin of Item 0B79 - Format 1 - srcBegin = D488 - srcEnd = D48D - mappingOffset = 1F9D - Mapping = - 4730 4731 FFFD 4732 FFFD 4733 -End of Item 0B79 - -Begin of Item 0B7A - Format 2 - srcBegin = D494 - destBegin = 4734 -End of Item 0B7A - -Begin of Item 0B7B - Format 2 - srcBegin = D4A9 - destBegin = 4735 -End of Item 0B7B - -Begin of Item 0B7C - Format 2 - srcBegin = D4CC - destBegin = 4736 -End of Item 0B7C - -Begin of Item 0B7D - Format 2 - srcBegin = D4D0 - destBegin = 4737 -End of Item 0B7D - -Begin of Item 0B7E - Format 2 - srcBegin = D4D4 - destBegin = 4738 -End of Item 0B7E - -Begin of Item 0B7F - Format 1 - srcBegin = D4DC - srcEnd = D4DF - mappingOffset = 1FA3 - Mapping = - 4739 FFFD FFFD 473A -End of Item 0B7F - -Begin of Item 0B80 - Format 2 - srcBegin = D4E8 - destBegin = 473B -End of Item 0B80 - -Begin of Item 0B81 - Format 2 - srcBegin = D4EC - destBegin = 473C -End of Item 0B81 - -Begin of Item 0B82 - Format 2 - srcBegin = D4F0 - destBegin = 473D -End of Item 0B82 - -Begin of Item 0B83 - Format 1 - srcBegin = D4F8 - srcEnd = D4FD - mappingOffset = 1FA7 - Mapping = - 473E FFFD FFFD 473F FFFD 4740 -End of Item 0B83 - -Begin of Item 0B84 - Format 2 - srcBegin = D504 - destBegin = 4741 -End of Item 0B84 - -Begin of Item 0B85 - Format 2 - srcBegin = D508 - destBegin = 4742 -End of Item 0B85 - -Begin of Item 0B86 - Format 2 - srcBegin = D50C - destBegin = 4743 -End of Item 0B86 - -Begin of Item 0B87 - Format 1 - srcBegin = D514 - srcEnd = D517 - mappingOffset = 1FAD - Mapping = - 4744 4745 FFFD 4746 -End of Item 0B87 - -Begin of Item 0B88 - Format 1 - srcBegin = D53C - srcEnd = D540 - mappingOffset = 1FB1 - Mapping = - 4747 4748 FFFD FFFD 4749 -End of Item 0B88 - -Begin of Item 0B89 - Format 2 - srcBegin = D544 - destBegin = 474A -End of Item 0B89 - -Begin of Item 0B8A - Format 1 - srcBegin = D54C - srcEnd = D551 - mappingOffset = 1FB6 - Mapping = - 474B 474C FFFD 474D FFFD 474E -End of Item 0B8A - -Begin of Item 0B8B - Format 1 - srcBegin = D558 - srcEnd = D55C - mappingOffset = 1FBC - Mapping = - 474F 4750 FFFD FFFD 4751 -End of Item 0B8B - -Begin of Item 0B8C - Format 2 - srcBegin = D560 - destBegin = 4752 -End of Item 0B8C - -Begin of Item 0B8D - Format 1 - srcBegin = D565 - srcEnd = D56D - mappingOffset = 1FC1 - Mapping = - 4753 FFFD FFFD 4754 4755 FFFD 4756 FFFD - 4757 -End of Item 0B8D - -Begin of Item 0B8E - Format 1 - srcBegin = D574 - srcEnd = D578 - mappingOffset = 1FCA - Mapping = - 4758 4759 FFFD FFFD 475A -End of Item 0B8E - -Begin of Item 0B8F - Format 2 - srcBegin = D57C - destBegin = 475B -End of Item 0B8F - -Begin of Item 0B90 - Format 1 - srcBegin = D584 - srcEnd = D585 - mappingOffset = 1FCF - Mapping = - 475C 475D -End of Item 0B90 - -Begin of Item 0B91 - Format 2 - srcBegin = D590 - destBegin = 4761 -End of Item 0B91 - -Begin of Item 0B92 - Format 2 - srcBegin = D5A5 - destBegin = 4762 -End of Item 0B92 - -Begin of Item 0B93 - Format 1 - srcBegin = D5C8 - srcEnd = D5CC - mappingOffset = 1FD1 - Mapping = - 4763 4764 FFFD FFFD 4765 -End of Item 0B93 - -Begin of Item 0B94 - Format 1 - srcBegin = D5D0 - srcEnd = D5D2 - mappingOffset = 1FD6 - Mapping = - 4766 FFFD 4767 -End of Item 0B94 - -Begin of Item 0B95 - Format 1 - srcBegin = D5D8 - srcEnd = D5DD - mappingOffset = 1FD9 - Mapping = - 4768 4769 FFFD 476A FFFD 476B -End of Item 0B95 - -Begin of Item 0B96 - Format 1 - srcBegin = D5E4 - srcEnd = D5E8 - mappingOffset = 1FDF - Mapping = - 476C 476D FFFD FFFD 476E -End of Item 0B96 - -Begin of Item 0B97 - Format 2 - srcBegin = D5EC - destBegin = 476F -End of Item 0B97 - -Begin of Item 0B98 - Format 1 - srcBegin = D5F4 - srcEnd = D5F9 - mappingOffset = 1FE4 - Mapping = - 4770 4771 FFFD 4772 FFFD 4773 -End of Item 0B98 - -Begin of Item 0B99 - Format 1 - srcBegin = D600 - srcEnd = D604 - mappingOffset = 1FEA - Mapping = - 4774 4775 FFFD FFFD 4776 -End of Item 0B99 - -Begin of Item 0B9A - Format 2 - srcBegin = D608 - destBegin = 4777 -End of Item 0B9A - -Begin of Item 0B9B - Format 1 - srcBegin = D610 - srcEnd = D611 - mappingOffset = 1FEF - Mapping = - 4778 4779 -End of Item 0B9B - -Begin of Item 0B9C - Format 2 - srcBegin = D61C - destBegin = 477D -End of Item 0B9C - -Begin of Item 0B9D - Format 2 - srcBegin = D620 - destBegin = 477E -End of Item 0B9D - -Begin of Item 0B9E - Format 2 - srcBegin = D624 - destBegin = 4821 -End of Item 0B9E - -Begin of Item 0B9F - Format 2 - srcBegin = D62D - destBegin = 4822 -End of Item 0B9F - -Begin of Item 0BA0 - Format 1 - srcBegin = D638 - srcEnd = D63C - mappingOffset = 1FF1 - Mapping = - 4823 4824 FFFD FFFD 4825 -End of Item 0BA0 - -Begin of Item 0BA1 - Format 2 - srcBegin = D640 - destBegin = 4826 -End of Item 0BA1 - -Begin of Item 0BA2 - Format 1 - srcBegin = D645 - srcEnd = D64D - mappingOffset = 1FF6 - Mapping = - 4827 FFFD FFFD 4828 4829 FFFD 482A FFFD - 482B -End of Item 0BA2 - -Begin of Item 0BA3 - Format 1 - srcBegin = D651 - srcEnd = D658 - mappingOffset = 1FFF - Mapping = - 482C FFFD FFFD 482D 482E FFFD FFFD 482F -End of Item 0BA3 - -Begin of Item 0BA4 - Format 2 - srcBegin = D65C - destBegin = 4830 -End of Item 0BA4 - -Begin of Item 0BA5 - Format 1 - srcBegin = D667 - srcEnd = D669 - mappingOffset = 2007 - Mapping = - 4831 FFFD 4832 -End of Item 0BA5 - -Begin of Item 0BA6 - Format 1 - srcBegin = D670 - srcEnd = D674 - mappingOffset = 200A - Mapping = - 4833 4834 FFFD FFFD 4835 -End of Item 0BA6 - -Begin of Item 0BA7 - Format 1 - srcBegin = D683 - srcEnd = D685 - mappingOffset = 200F - Mapping = - 4836 FFFD 4837 -End of Item 0BA7 - -Begin of Item 0BA8 - Format 1 - srcBegin = D68C - srcEnd = D690 - mappingOffset = 2012 - Mapping = - 4838 4839 FFFD FFFD 483A -End of Item 0BA8 - -Begin of Item 0BA9 - Format 2 - srcBegin = D694 - destBegin = 483B -End of Item 0BA9 - -Begin of Item 0BAA - Format 1 - srcBegin = D69D - srcEnd = D6A1 - mappingOffset = 2017 - Mapping = - 483C FFFD 483D FFFD 483E -End of Item 0BAA - -Begin of Item 0BAB - Format 2 - srcBegin = D6A8 - destBegin = 483F -End of Item 0BAB - -Begin of Item 0BAC - Format 2 - srcBegin = D6AC - destBegin = 4840 -End of Item 0BAC - -Begin of Item 0BAD - Format 2 - srcBegin = D6B0 - destBegin = 4841 -End of Item 0BAD - -Begin of Item 0BAE - Format 1 - srcBegin = D6B9 - srcEnd = D6BB - mappingOffset = 201C - Mapping = - 4842 FFFD 4843 -End of Item 0BAE - -Begin of Item 0BAF - Format 1 - srcBegin = D6C4 - srcEnd = D6C8 - mappingOffset = 201F - Mapping = - 4844 4845 FFFD FFFD 4846 -End of Item 0BAF - -Begin of Item 0BB0 - Format 2 - srcBegin = D6CC - destBegin = 4847 -End of Item 0BB0 - -Begin of Item 0BB1 - Format 1 - srcBegin = D6D1 - srcEnd = D6D9 - mappingOffset = 2024 - Mapping = - 4848 FFFD FFFD 4849 FFFD FFFD 484A FFFD - 484B -End of Item 0BB1 - -Begin of Item 0BB2 - Format 2 - srcBegin = D6E0 - destBegin = 484C -End of Item 0BB2 - -Begin of Item 0BB3 - Format 2 - srcBegin = D6E4 - destBegin = 484D -End of Item 0BB3 - -Begin of Item 0BB4 - Format 2 - srcBegin = D6E8 - destBegin = 484E -End of Item 0BB4 - -Begin of Item 0BB5 - Format 2 - srcBegin = D6F0 - destBegin = 484F -End of Item 0BB5 - -Begin of Item 0BB6 - Format 2 - srcBegin = D6F5 - destBegin = 4850 -End of Item 0BB6 - -Begin of Item 0BB7 - Format 1 - srcBegin = D6FC - srcEnd = D700 - mappingOffset = 202D - Mapping = - 4851 4852 FFFD FFFD 4853 -End of Item 0BB7 - -Begin of Item 0BB8 - Format 2 - srcBegin = D704 - destBegin = 4854 -End of Item 0BB8 - -Begin of Item 0BB9 - Format 2 - srcBegin = D711 - destBegin = 4855 -End of Item 0BB9 - -Begin of Item 0BBA - Format 1 - srcBegin = D718 - srcEnd = D71C - mappingOffset = 2032 - Mapping = - 4856 4857 FFFD FFFD 4858 -End of Item 0BBA - -Begin of Item 0BBB - Format 2 - srcBegin = D720 - destBegin = 4859 -End of Item 0BBB - -Begin of Item 0BBC - Format 1 - srcBegin = D728 - srcEnd = D72D - mappingOffset = 2037 - Mapping = - 485A 485B FFFD 485C FFFD 485D -End of Item 0BBC - -Begin of Item 0BBD - Format 1 - srcBegin = D734 - srcEnd = D738 - mappingOffset = 203D - Mapping = - 485E 485F FFFD FFFD 4860 -End of Item 0BBD - -Begin of Item 0BBE - Format 2 - srcBegin = D73C - destBegin = 4861 -End of Item 0BBE - -Begin of Item 0BBF - Format 1 - srcBegin = D744 - srcEnd = D749 - mappingOffset = 2042 - Mapping = - 4862 FFFD FFFD 4863 FFFD 4864 -End of Item 0BBF - -Begin of Item 0BC0 - Format 1 - srcBegin = D750 - srcEnd = D754 - mappingOffset = 2048 - Mapping = - 4865 4866 FFFD FFFD 4867 -End of Item 0BC0 - -Begin of Item 0BC1 - Format 1 - srcBegin = D760 - srcEnd = D765 - mappingOffset = 204D - Mapping = - 486C 486D FFFD 486E FFFD 486F -End of Item 0BC1 - -Begin of Item 0BC2 - Format 1 - srcBegin = D769 - srcEnd = D76C - mappingOffset = 2053 - Mapping = - 4870 FFFD FFFD 4871 -End of Item 0BC2 - -Begin of Item 0BC3 - Format 2 - srcBegin = D770 - destBegin = 4872 -End of Item 0BC3 - -Begin of Item 0BC4 - Format 2 - srcBegin = D774 - destBegin = 4873 -End of Item 0BC4 - -Begin of Item 0BC5 - Format 1 - srcBegin = D77C - srcEnd = D77D - mappingOffset = 2057 - Mapping = - 4874 4875 -End of Item 0BC5 - -Begin of Item 0BC6 - Format 2 - srcBegin = D781 - destBegin = 4876 -End of Item 0BC6 - -Begin of Item 0BC7 - Format 1 - srcBegin = D788 - srcEnd = D78C - mappingOffset = 2059 - Mapping = - 4877 4878 FFFD FFFD 4879 -End of Item 0BC7 - -Begin of Item 0BC8 - Format 2 - srcBegin = D790 - destBegin = 487A -End of Item 0BC8 - -Begin of Item 0BC9 - Format 1 - srcBegin = D798 - srcEnd = D79D - mappingOffset = 205E - Mapping = - 487B 487C FFFD 487D FFFD 487E -End of Item 0BC9 - -Begin of Item 0BCA - Format 1 - srcBegin = F900 - srcEnd = F90D - mappingOffset = 2064 - Mapping = - 4B50 4B56 4B67 4D4F 4D68 4E2D 4F7B 5022 - 5038 5050 505D 5154 5155 5158 -End of Item 0BCA - -Begin of Item 0BCB - Format 1 - srcBegin = F91D - srcEnd = F922 - mappingOffset = 2072 - Mapping = - 516D 516F 5170 5172 5176 517A -End of Item 0BCB - -Begin of Item 0BCC - Format 1 - srcBegin = F926 - srcEnd = F927 - mappingOffset = 2078 - Mapping = - 5222 5223 -End of Item 0BCC - -Begin of Item 0BCD - Format 1 - srcBegin = F92D - srcEnd = F92F - mappingOffset = 207A - Mapping = - 522D 5232 523E -End of Item 0BCD - -Begin of Item 0BCE - Format 1 - srcBegin = F944 - srcEnd = F949 - mappingOffset = 207D - Mapping = - 5259 525A 525E 525F 5261 5262 -End of Item 0BCE - -Begin of Item 0BCF - Format 1 - srcBegin = F958 - srcEnd = F97E - mappingOffset = 2083 - Mapping = - 5277 5278 5466 547C 5525 552B 552E 5638 - 564D 574B 5764 5B45 5B64 5C25 5D25 5D55 - 5D74 5E7C 5E7E 5F33 5F61 5F68 6071 612D - 616D 6375 6421 6429 652E 6531 6532 6539 - 653B 653C 6544 654E 6550 6552 6556 -End of Item 0BCF - -Begin of Item 0BD0 - Format 1 - srcBegin = F982 - srcEnd = F986 - mappingOffset = 20AA - Mapping = - 657E 6621 6624 6627 662D -End of Item 0BD0 - -Begin of Item 0BD1 - Format 1 - srcBegin = F98A - srcEnd = F997 - mappingOffset = 20AF - Mapping = - 6633 6637 6638 663C 6644 6646 6647 664A - 6652 6656 6659 665C 665F 6661 -End of Item 0BD1 - -Begin of Item 0BD2 - Format 2 - srcBegin = F99B - destBegin = 6668 -End of Item 0BD2 - -Begin of Item 0BD3 - Format 1 - srcBegin = F99F - srcEnd = F9A1 - mappingOffset = 20BD - Mapping = - 666F 6671 6672 -End of Item 0BD3 - -Begin of Item 0BD4 - Format 1 - srcBegin = F9A5 - srcEnd = F9D7 - mappingOffset = 20C0 - Mapping = - 6679 6721 6726 6729 672A 672C 672D 6730 - 673F 6741 6746 6747 674B 674D 674F 6750 - 6753 675F 6764 6766 6777 6867 6868 6870 - 6871 6877 6879 687B 687E 6927 692C 694C - 6977 6A41 6A65 6A74 6A77 6A7C 6A7E 6B24 - 6B27 6B29 6B2A 6B3A 6B3B 6B3D 6B41 6B42 - 6B46 6B47 6B4C -End of Item 0BD4 - -Begin of Item 0BD5 - Format 1 - srcBegin = F9DC - srcEnd = F9DF - mappingOffset = 20F3 - Mapping = - 6B58 6C26 6C27 6C2A -End of Item 0BD5 - -Begin of Item 0BD6 - Format 1 - srcBegin = F9E4 - srcEnd = F9F6 - mappingOffset = 20F7 - Mapping = - 6C35 6C38 6C3A 6C40 6C41 6C45 6C46 6C49 - 6C4A 6C55 6C5D 6C5E 6C61 6C64 6C67 6C68 - 6C77 6C78 6C7A -End of Item 0BD6 - -Begin of Item 0BD7 - Format 1 - srcBegin = F9FA - srcEnd = FA0B - mappingOffset = 210A - Mapping = - 6D6E 6E5B 723D 727A 7331 7427 746E 7674 - 7676 7738 7748 7753 785B 7870 7A21 7A22 - 7A66 7C29 -End of Item 0BD7 - -Begin of Item 0BD8 - Format 2 - srcBegin = FF3C - destBegin = 212C -End of Item 0BD8 - -Begin of Item 0BD9 - Format 2 - srcBegin = FF5E - destBegin = 2226 -End of Item 0BD9 - -Begin of Item 0BDA - Format 1 - srcBegin = FFE0 - srcEnd = FFE6 - mappingOffset = 211C - Mapping = - 214B 214C 217E 237E FFFD 214D 235C -End of Item 0BDA - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0BDB, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x02FB, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x268C, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x00B9 */ -/* Total of Format 1 : 0x05D7 */ -/* Total of Format 2 : 0x054B */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2210, 0x2211, -0x1221, 0x1121, 0x2211, 0x1221, 0x2211, 0x1222, 0x1221, 0x1111, -0x1111, 0x1121, 0x2221, 0x2211, 0x1111, 0x1111, 0x2121, 0x1212, -0x1111, 0x2221, 0x1111, 0x2111, 0x2212, 0x1111, 0x2211, 0x1121, -0x2121, 0x1121, 0x1111, 0x1211, 0x2211, 0x1221, 0x2212, 0x1122, -0x1221, 0x2211, 0x1121, 0x2212, 0x2211, 0x2211, 0x2112, 0x2112, -0x1111, 0x1221, 0x2111, 0x2111, 0x2111, 0x2121, 0x2111, 0x1111, -0x2211, 0x1112, 0x2211, 0x2111, 0x1122, 0x2112, 0x1111, 0x1212, -0x1112, 0x1212, 0x1122, 0x2112, 0x2112, 0x1221, 0x2212, 0x1122, -0x1211, 0x1111, 0x2121, 0x2122, 0x1212, 0x1112, 0x1221, 0x1112, -0x2212, 0x1212, 0x2112, 0x1111, 0x1112, 0x2112, 0x2112, 0x1112, -0x1121, 0x1212, 0x1122, 0x2111, 0x1212, 0x1121, 0x1111, 0x2121, -0x2222, 0x2221, 0x1212, 0x2121, 0x1221, 0x1111, 0x1111, 0x1211, -0x1111, 0x1222, 0x1221, 0x2121, 0x2111, 0x1122, 0x1121, 0x2121, -0x1212, 0x1222, 0x2211, 0x1121, 0x2211, 0x2111, 0x1121, 0x1221, -0x2111, 0x1211, 0x2212, 0x2111, 0x1111, 0x2111, 0x1121, 0x2221, -0x1211, 0x1121, 0x2122, 0x1111, 0x2111, 0x1211, 0x2121, 0x1122, -0x1111, 0x1112, 0x2222, 0x2212, 0x2211, 0x1121, 0x1221, 0x1121, -0x1222, 0x2112, 0x2211, 0x2112, 0x1221, 0x2122, 0x1211, 0x2121, -0x1111, 0x2122, 0x2222, 0x1212, 0x1122, 0x1112, 0x2121, 0x2221, -0x1112, 0x1211, 0x1211, 0x1112, 0x1221, 0x1112, 0x1111, 0x2111, -0x1111, 0x1111, 0x1111, 0x1112, 0x1111, 0x1111, 0x2111, 0x1112, -0x2111, 0x1212, 0x2122, 0x1112, 0x1111, 0x2211, 0x1221, 0x1222, -0x1112, 0x1121, 0x1222, 0x2111, 0x1111, 0x1112, 0x2221, 0x2212, -0x1221, 0x2212, 0x2212, 0x1121, 0x2211, 0x1121, 0x1112, 0x1212, -0x1112, 0x1211, 0x2112, 0x2111, 0x1211, 0x1111, 0x1121, 0x1121, -0x1111, 0x1111, 0x2212, 0x1112, 0x1122, 0x1222, 0x1112, 0x1121, -0x1211, 0x2111, 0x2221, 0x1111, 0x1211, 0x2222, 0x2221, 0x1222, -0x2222, 0x2111, 0x1211, 0x2221, 0x1112, 0x1222, 0x2211, 0x1211, -0x1122, 0x1211, 0x2211, 0x1112, 0x1122, 0x2122, 0x1112, 0x1221, -0x2122, 0x1111, 0x1121, 0x1211, 0x1212, 0x1111, 0x1221, 0x2121, -0x2112, 0x1211, 0x2222, 0x2211, 0x2121, 0x2111, 0x2111, 0x1211, -0x1222, 0x2121, 0x2211, 0x2212, 0x1221, 0x1111, 0x1221, 0x2122, -0x1121, 0x2121, 0x2122, 0x2212, 0x1122, 0x2112, 0x2221, 0x2121, -0x2122, 0x2122, 0x2112, 0x1212, 0x2222, 0x1212, 0x1121, 0x1122, -0x1211, 0x1211, 0x1122, 0x1111, 0x1121, 0x1212, 0x2112, 0x1111, -0x1121, 0x1212, 0x2212, 0x1222, 0x2122, 0x2221, 0x1222, 0x1211, -0x2222, 0x2122, 0x2211, 0x2122, 0x1111, 0x1211, 0x1211, 0x1122, -0x1111, 0x2122, 0x1211, 0x1111, 0x1112, 0x1122, 0x2221, 0x1212, -0x1222, 0x2111, 0x1211, 0x1112, 0x1212, 0x2112, 0x1111, 0x1112, -0x1221, 0x2121, 0x1122, 0x1112, 0x2121, 0x2211, 0x1122, 0x1211, -0x1211, 0x1112, 0x1212, 0x1111, 0x2121, 0x2112, 0x2211, 0x1212, -0x2122, 0x1122, 0x2112, 0x1112, 0x2222, 0x1122, 0x2222, 0x1221, -0x2122, 0x1112, 0x2221, 0x1122, 0x1121, 0x1222, 0x1112, 0x1111, -0x1122, 0x1221, 0x2212, 0x2122, 0x2122, 0x2121, 0x2211, 0x2221, -0x2112, 0x2221, 0x1122, 0x1111, 0x2112, 0x2221, 0x1121, 0x2212, -0x2211, 0x2211, 0x2122, 0x1212, 0x2212, 0x1122, 0x1111, 0x1121, -0x1121, 0x1111, 0x2121, 0x1111, 0x2211, 0x1122, 0x1112, 0x2212, -0x2211, 0x2112, 0x1111, 0x1211, 0x2111, 0x2221, 0x2222, 0x1122, -0x2221, 0x2212, 0x2122, 0x1211, 0x2121, 0x1122, 0x1112, 0x1122, -0x1112, 0x1111, 0x1112, 0x1111, 0x2112, 0x1112, 0x2122, 0x2222, -0x2221, 0x2212, 0x2111, 0x1212, 0x1211, 0x2212, 0x2122, 0x1122, -0x1211, 0x2221, 0x1222, 0x2211, 0x2122, 0x2221, 0x1221, 0x2222, -0x1212, 0x1212, 0x1211, 0x1122, 0x2121, 0x2222, 0x1112, 0x1212, -0x1211, 0x1222, 0x1111, 0x1121, 0x2212, 0x2221, 0x1221, 0x2121, -0x1222, 0x1112, 0x1211, 0x1212, 0x1222, 0x2111, 0x1121, 0x2212, -0x2111, 0x2211, 0x2121, 0x1212, 0x1222, 0x1121, 0x1221, 0x2222, -0x1221, 0x2222, 0x2121, 0x1222, 0x1222, 0x2112, 0x2212, 0x2221, -0x2222, 0x2212, 0x1122, 0x1212, 0x1121, 0x2122, 0x1222, 0x2112, -0x1221, 0x1122, 0x2212, 0x2112, 0x1112, 0x1221, 0x1111, 0x2221, -0x1211, 0x1222, 0x2111, 0x1221, 0x2212, 0x2112, 0x2211, 0x2111, -0x2211, 0x1112, 0x1222, 0x1111, 0x2112, 0x1222, 0x2122, 0x1221, -0x2121, 0x2122, 0x1211, 0x1212, 0x1222, 0x2221, 0x2111, 0x2112, -0x1221, 0x2211, 0x2222, 0x1211, 0x2211, 0x2222, 0x1211, 0x1112, -0x1122, 0x2221, 0x1212, 0x2121, 0x2122, 0x2112, 0x2222, 0x2122, -0x2121, 0x2222, 0x2122, 0x2222, 0x1211, 0x1211, 0x1122, 0x2211, -0x1221, 0x2222, 0x1222, 0x2212, 0x1222, 0x2112, 0x2122, 0x1122, -0x2112, 0x1111, 0x2212, 0x1211, 0x1122, 0x2212, 0x2222, 0x2212, -0x2112, 0x2221, 0x1121, 0x2112, 0x1211, 0x2211, 0x2211, 0x2111, -0x2112, 0x1122, 0x1221, 0x1222, 0x1222, 0x2112, 0x2212, 0x2222, -0x2212, 0x1112, 0x2111, 0x1211, 0x1111, 0x2122, 0x2122, 0x2222, -0x2121, 0x1112, 0x1222, 0x2222, 0x2112, 0x1111, 0x2111, 0x2112, -0x2221, 0x2111, 0x2221, 0x1212, 0x2222, 0x2112, 0x1111, 0x2112, -0x2221, 0x1122, 0x1121, 0x2212, 0x1222, 0x2211, 0x1222, 0x1222, -0x1121, 0x2121, 0x2122, 0x1211, 0x1111, 0x1211, 0x2122, 0x2111, -0x1222, 0x2121, 0x2222, 0x1212, 0x2212, 0x2222, 0x2112, 0x1222, -0x1112, 0x1112, 0x2211, 0x2112, 0x2121, 0x2112, 0x1211, 0x2111, -0x1211, 0x2111, 0x1211, 0x1212, 0x1121, 0x2212, 0x2111, 0x1211, -0x2221, 0x1122, 0x1211, 0x1222, 0x1112, 0x1212, 0x1222, 0x1121, -0x1222, 0x2212, 0x2122, 0x1111, 0x2121, 0x2122, 0x2221, 0x1212, -0x2221, 0x2222, 0x2121, 0x1221, 0x1222, 0x1121, 0x2111, 0x2121, -0x1212, 0x2121, 0x2222, 0x1212, 0x2222, 0x1222, 0x2122, 0x2221, -0x2222, 0x2221, 0x2122, 0x1111, 0x2112, 0x1211, 0x1211, 0x1222, -0x1212, 0x2221, 0x2222, 0x1212, 0x2222, 0x2122, 0x2221, 0x1212, -0x1212, 0x1111, 0x2212, 0x1111, 0x2212, 0x1222, 0x2112, 0x1222, -0x1212, 0x1222, 0x2212, 0x2222, 0x2211, 0x2112, 0x1121, 0x1121, -0x1121, 0x2212, 0x2212, 0x1211, 0x2222, 0x1222, 0x2211, 0x1222, -0x1222, 0x1222, 0x1121, 0x2112, 0x1221, 0x2111, 0x1211, 0x2222, -0x1121, 0x1112, 0x2121, 0x1122, 0x2212, 0x1222, 0x2122, 0x1211, -0x2111, 0x1212, 0x1112, 0x1111, 0x1211, 0x1111, 0x0122, -/*-------------------------------------------------------*/ -/* Offset=0x02FB Start of MapCell Array */ -/* 0000 */ 0x0391, 0x03A1, 0x2541, -/* 0001 */ 0x03A3, 0x03A9, 0x2552, -/* 0002 */ 0x03B1, 0x03C1, 0x2561, -/* 0003 */ 0x03C3, 0x03C9, 0x2572, -/* 0004 */ 0x0410, 0x0415, 0x2C21, -/* 0005 */ 0x0416, 0x042F, 0x2C28, -/* 0006 */ 0x0430, 0x0435, 0x2C51, -/* 0007 */ 0x0436, 0x044F, 0x2C58, -/* 0008 */ 0x2081, 0x2084, 0x297B, -/* 0009 */ 0x215B, 0x215E, 0x287B, -/* 000A */ 0x2160, 0x2169, 0x2530, -/* 000B */ 0x2170, 0x2179, 0x2521, -/* 000C */ 0x2460, 0x246E, 0x2867, -/* 000D */ 0x2474, 0x2482, 0x2967, -/* 000E */ 0x249C, 0x24B5, 0x294D, -/* 000F */ 0x24D0, 0x24E9, 0x284D, -/* 0010 */ 0x2543, 0x254A, 0x265D, -/* 0011 */ 0x3000, 0x3002, 0x2121, -/* 0012 */ 0x3008, 0x3011, 0x2134, -/* 0013 */ 0x3041, 0x3093, 0x2A21, -/* 0014 */ 0x30A1, 0x30F6, 0x2B21, -/* 0015 */ 0x3131, 0x318E, 0x2421, -/* 0016 */ 0x3200, 0x321B, 0x2931, -/* 0017 */ 0x3260, 0x327B, 0x2831, -/* 0018 */ 0x3380, 0x3384, 0x2749, -/* 0019 */ 0x338A, 0x338C, 0x275C, -/* 001A */ 0x338D, 0x338F, 0x2736, -/* 001B */ 0x3390, 0x3394, 0x2754, -/* 001C */ 0x3395, 0x3397, 0x2721, -/* 001D */ 0x3399, 0x33A2, 0x272B, -/* 001E */ 0x33A3, 0x33A6, 0x2727, -/* 001F */ 0x33A9, 0x33AC, 0x2765, -/* 0020 */ 0x33AD, 0x33AF, 0x2761, -/* 0021 */ 0x33B0, 0x33B9, 0x273F, -/* 0022 */ 0x33BA, 0x33BF, 0x274E, -/* 0023 */ 0x6BD6, 0x6BD8, 0x5D70, -/* 0024 */ 0xAC07, 0xAC0A, 0x3024, -/* 0025 */ 0xAC10, 0xAC17, 0x3028, -/* 0026 */ 0xAC19, 0xAC1D, 0x3030, -/* 0027 */ 0xAC2F, 0xAC31, 0x3039, -/* 0028 */ 0xAC83, 0xAC86, 0x304D, -/* 0029 */ 0xAC89, 0xAC8C, 0x3051, -/* 002A */ 0xAC9F, 0xACA1, 0x3059, -/* 002B */ 0xACA8, 0xACAA, 0x305C, -/* 002C */ 0xACBB, 0xACBD, 0x3064, -/* 002D */ 0xACEF, 0xACF1, 0x3074, -/* 002E */ 0xAD73, 0xAD76, 0x313B, -/* 002F */ 0xAD7B, 0xAD7D, 0x313F, -/* 0030 */ 0xADFF, 0xAE01, 0x315A, -/* 0031 */ 0xAE4C, 0xAE4E, 0x316E, -/* 0032 */ 0xAE5F, 0xAE61, 0x3176, -/* 0033 */ 0xAE7B, 0xAE7D, 0x3222, -/* 0034 */ 0xAEBC, 0xAEBE, 0x3228, -/* 0035 */ 0xAECF, 0xAED1, 0x322F, -/* 0036 */ 0xAF41, 0xAF43, 0x3247, -/* 0037 */ 0xAFC7, 0xAFC9, 0x325D, -/* 0038 */ 0xB053, 0xB055, 0x327A, -/* 0039 */ 0xB098, 0xB09A, 0x332A, -/* 003A */ 0xB09F, 0xB0A2, 0x332E, -/* 003B */ 0xB0AB, 0xB0AF, 0x3334, -/* 003C */ 0xB0B3, 0xB0B5, 0x333A, -/* 003D */ 0xB0C7, 0xB0C9, 0x3341, -/* 003E */ 0xB11B, 0xB11D, 0x3353, -/* 003F */ 0xB123, 0xB125, 0x3356, -/* 0040 */ 0xB137, 0xB139, 0x335D, -/* 0041 */ 0xB192, 0xB194, 0x3374, -/* 0042 */ 0xB298, 0xB29A, 0x3443, -/* 0043 */ 0xB2E4, 0xB2E6, 0x3459, -/* 0044 */ 0xB2EB, 0xB2EF, 0x345D, -/* 0045 */ 0xB2F3, 0xB2F5, 0x3462, -/* 0046 */ 0xB2F7, 0xB2FB, 0x3465, -/* 0047 */ 0xB2FF, 0xB301, 0x346A, -/* 0048 */ 0xB313, 0xB315, 0x3471, -/* 0049 */ 0xB354, 0xB356, 0x3475, -/* 004A */ 0xB383, 0xB385, 0x352B, -/* 004B */ 0xB527, 0xB52A, 0x3577, -/* 004C */ 0xB543, 0xB545, 0x3623, -/* 004D */ 0xB54B, 0xB54D, 0x3626, -/* 004E */ 0xB55F, 0xB561, 0x362D, -/* 004F */ 0xB5B3, 0xB5B5, 0x3638, -/* 0050 */ 0xB5BB, 0xB5BD, 0x363B, -/* 0051 */ 0xB5CF, 0xB5D1, 0x3642, -/* 0052 */ 0xB78F, 0xB792, 0x3679, -/* 0053 */ 0xB7AB, 0xB7AD, 0x3727, -/* 0054 */ 0xB7FF, 0xB801, 0x3735, -/* 0055 */ 0xB807, 0xB809, 0x3738, -/* 0056 */ 0xB837, 0xB839, 0x3747, -/* 0057 */ 0xB9CE, 0xB9D2, 0x3839, -/* 0058 */ 0xB9E3, 0xB9E5, 0x3844, -/* 0059 */ 0xB9F7, 0xB9FA, 0x384B, -/* 005A */ 0xBA53, 0xBA55, 0x385D, -/* 005B */ 0xBA67, 0xBA69, 0x3864, -/* 005C */ 0xBA83, 0xBA85, 0x386B, -/* 005D */ 0xBB34, 0xBB36, 0x392B, -/* 005E */ 0xBB3B, 0xBB3E, 0x392F, -/* 005F */ 0xBC0B, 0xBC0D, 0x3954, -/* 0060 */ 0xBC14, 0xBC18, 0x3959, -/* 0061 */ 0xBC1B, 0xBC1F, 0x395E, -/* 0062 */ 0xBC43, 0xBC45, 0x396E, -/* 0063 */ 0xBCB3, 0xBCB5, 0x3A2A, -/* 0064 */ 0xBCCF, 0xBCD1, 0x3A32, -/* 0065 */ 0xBCF4, 0xBCF6, 0x3A38, -/* 0066 */ 0xBD87, 0xBD8A, 0x3A51, -/* 0067 */ 0xBE59, 0xBE5B, 0x3A79, -/* 0068 */ 0xBE73, 0xBE75, 0x3B25, -/* 0069 */ 0xBE7B, 0xBE7D, 0x3B28, -/* 006A */ 0xBE8F, 0xBE91, 0x3B2F, -/* 006B */ 0xBEE3, 0xBEE5, 0x3B3B, -/* 006C */ 0xBF1B, 0xBF1D, 0x3B44, -/* 006D */ 0xC0B3, 0xC0B6, 0x3B6B, -/* 006E */ 0xC0BF, 0xC0C1, 0x3B71, -/* 006F */ 0xC0DB, 0xC0DD, 0x3B7B, -/* 0070 */ 0xC11C, 0xC120, 0x3C2D, -/* 0071 */ 0xC12F, 0xC131, 0x3C38, -/* 0072 */ 0xC14B, 0xC14D, 0x3C42, -/* 0073 */ 0xC167, 0xC169, 0x3C4B, -/* 0074 */ 0xC18C, 0xC18E, 0x3C52, -/* 0075 */ 0xC2EB, 0xC2ED, 0x3D48, -/* 0076 */ 0xC313, 0xC315, 0x3D57, -/* 0077 */ 0xC4FF, 0xC501, 0x3E37, -/* 0078 */ 0xC548, 0xC54A, 0x3E48, -/* 0079 */ 0xC54C, 0xC54E, 0x3E4B, -/* 007A */ 0xC553, 0xC555, 0x3E4E, -/* 007B */ 0xC557, 0xC559, 0x3E51, -/* 007C */ 0xC573, 0xC575, 0x3E5C, -/* 007D */ 0xC5BB, 0xC5BE, 0x3E72, -/* 007E */ 0xC5C4, 0xC5CA, 0x3E76, -/* 007F */ 0xC5EC, 0xC5EE, 0x3F29, -/* 0080 */ 0xC5FC, 0xC601, 0x3F30, -/* 0081 */ 0xC605, 0xC608, 0x3F36, -/* 0082 */ 0xC62C, 0xC62E, 0x3F43, -/* 0083 */ 0xC633, 0xC635, 0x3F47, -/* 0084 */ 0xC653, 0xC655, 0x3F53, -/* 0085 */ 0xC6B8, 0xC6BA, 0x3F6F, -/* 0086 */ 0xC751, 0xC758, 0x4040, -/* 0087 */ 0xC77C, 0xC77E, 0x404F, -/* 0088 */ 0xC783, 0xC785, 0x4052, -/* 0089 */ 0xC787, 0xC78A, 0x4055, -/* 008A */ 0xC796, 0xC798, 0x405D, -/* 008B */ 0xC7A3, 0xC7A6, 0x4063, -/* 008C */ 0xC7BF, 0xC7C1, 0x406D, -/* 008D */ 0xC885, 0xC887, 0x413E, -/* 008E */ 0xC88B, 0xC88D, 0x4141, -/* 008F */ 0xC904, 0xC906, 0x4159, -/* 0090 */ 0xC9EF, 0xC9F1, 0x422D, -/* 0091 */ 0xCA0B, 0xCA0D, 0x4236, -/* 0092 */ 0xCA5F, 0xCA61, 0x4242, -/* 0093 */ 0xCC27, 0xCC29, 0x4276, -/* 0094 */ 0xCC3C, 0xCC3E, 0x4321, -/* 0095 */ 0xCC57, 0xCC59, 0x432A, -/* 0096 */ 0xCCAB, 0xCCAD, 0x4339, -/* 0097 */ 0xCE5F, 0xCE61, 0x4424, -/* 0098 */ 0xCEA3, 0xCEA5, 0x4439, -/* 0099 */ 0xCEF7, 0xCEF9, 0x4446, -/* 009A */ 0xCF2F, 0xCF31, 0x4456, -/* 009B */ 0xD0D3, 0xD0D5, 0x453F, -/* 009C */ 0xD0EF, 0xD0F1, 0x4548, -/* 009D */ 0xD143, 0xD145, 0x4554, -/* 009E */ 0xD30C, 0xD30E, 0x4644, -/* 009F */ 0xD31F, 0xD321, 0x464C, -/* 00A0 */ 0xD33B, 0xD33D, 0x4656, -/* 00A1 */ 0xD38F, 0xD391, 0x4661, -/* 00A2 */ 0xD587, 0xD589, 0x475E, -/* 00A3 */ 0xD613, 0xD615, 0x477A, -/* 00A4 */ 0xD756, 0xD759, 0x4868, -/* 00A5 */ 0xF90E, 0xF913, 0x515B, -/* 00A6 */ 0xF914, 0xF918, 0x5162, -/* 00A7 */ 0xF919, 0xF91C, 0x5168, -/* 00A8 */ 0xF923, 0xF925, 0x517C, -/* 00A9 */ 0xF928, 0xF92C, 0x5227, -/* 00AA */ 0xF930, 0xF932, 0x5242, -/* 00AB */ 0xF933, 0xF938, 0x5246, -/* 00AC */ 0xF939, 0xF943, 0x524D, -/* 00AD */ 0xF94A, 0xF951, 0x5264, -/* 00AE */ 0xF952, 0xF957, 0x5270, -/* 00AF */ 0xF97F, 0xF981, 0x657A, -/* 00B0 */ 0xF987, 0xF989, 0x662F, -/* 00B1 */ 0xF998, 0xF99A, 0x6664, -/* 00B2 */ 0xF99C, 0xF99E, 0x666A, -/* 00B3 */ 0xF9A2, 0xF9A4, 0x6675, -/* 00B4 */ 0xF9D8, 0xF9DB, 0x6B4F, -/* 00B5 */ 0xF9E0, 0xF9E3, 0x6C2F, -/* 00B6 */ 0xF9F7, 0xF9F9, 0x6D21, -/* 00B7 */ 0xFF01, 0xFF3B, 0x2321, -/* 00B8 */ 0xFF3D, 0xFF5D, 0x235D, -/* 00B9 */ 0x00A1, 0x00BF, 0x0000, -/* 00BA */ 0x00C6, 0x0000, 0x2821, -/* 00BB */ 0x00D0, 0x0000, 0x2822, -/* 00BC */ 0x00D7, 0x00D8, 0x001F, -/* 00BD */ 0x00DE, 0x00DF, 0x0021, -/* 00BE */ 0x00E6, 0x0000, 0x2921, -/* 00BF */ 0x00F0, 0x0000, 0x2923, -/* 00C0 */ 0x00F7, 0x00F8, 0x0023, -/* 00C1 */ 0x00FE, 0x0000, 0x292D, -/* 00C2 */ 0x0111, 0x0000, 0x2922, -/* 00C3 */ 0x0126, 0x0127, 0x0025, -/* 00C4 */ 0x0131, 0x0133, 0x0027, -/* 00C5 */ 0x0138, 0x0000, 0x2927, -/* 00C6 */ 0x013F, 0x0142, 0x002A, -/* 00C7 */ 0x0149, 0x014B, 0x002E, -/* 00C8 */ 0x0152, 0x0153, 0x0031, -/* 00C9 */ 0x0166, 0x0167, 0x0033, -/* 00CA */ 0x02C7, 0x0000, 0x2227, -/* 00CB */ 0x02D0, 0x0000, 0x2230, -/* 00CC */ 0x02D8, 0x02DD, 0x0035, -/* 00CD */ 0x0401, 0x0000, 0x2C27, -/* 00CE */ 0x0451, 0x0000, 0x2C57, -/* 00CF */ 0x2015, 0x2021, 0x003B, -/* 00D0 */ 0x2025, 0x2026, 0x0048, -/* 00D1 */ 0x2030, 0x2033, 0x004A, -/* 00D2 */ 0x203B, 0x0000, 0x2158, -/* 00D3 */ 0x2074, 0x0000, 0x2979, -/* 00D4 */ 0x207F, 0x0000, 0x297A, -/* 00D5 */ 0x2103, 0x0000, 0x2149, -/* 00D6 */ 0x2109, 0x0000, 0x2235, -/* 00D7 */ 0x2113, 0x2116, 0x004E, -/* 00D8 */ 0x2121, 0x2122, 0x0052, -/* 00D9 */ 0x2126, 0x0000, 0x2759, -/* 00DA */ 0x212B, 0x0000, 0x214A, -/* 00DB */ 0x2153, 0x2154, 0x0054, -/* 00DC */ 0x2190, 0x2199, 0x0056, -/* 00DD */ 0x21D2, 0x21D4, 0x0060, -/* 00DE */ 0x2200, 0x2203, 0x0063, -/* 00DF */ 0x2207, 0x220B, 0x0067, -/* 00E0 */ 0x220F, 0x2211, 0x006C, -/* 00E1 */ 0x221A, 0x2220, 0x006F, -/* 00E2 */ 0x2225, 0x222E, 0x0076, -/* 00E3 */ 0x2234, 0x2235, 0x0080, -/* 00E4 */ 0x223C, 0x223D, 0x0082, -/* 00E5 */ 0x2252, 0x0000, 0x2156, -/* 00E6 */ 0x2260, 0x2265, 0x0084, -/* 00E7 */ 0x226A, 0x226B, 0x008A, -/* 00E8 */ 0x2282, 0x2287, 0x008C, -/* 00E9 */ 0x2299, 0x0000, 0x2241, -/* 00EA */ 0x22A5, 0x0000, 0x2151, -/* 00EB */ 0x2312, 0x0000, 0x2152, -/* 00EC */ 0x2500, 0x2503, 0x0092, -/* 00ED */ 0x250C, 0x2542, 0x0096, -/* 00EE */ 0x254B, 0x0000, 0x2636, -/* 00EF */ 0x2592, 0x0000, 0x2246, -/* 00F0 */ 0x25A0, 0x25A9, 0x00CD, -/* 00F1 */ 0x25B2, 0x25B7, 0x00D7, -/* 00F2 */ 0x25BC, 0x25C1, 0x00DD, -/* 00F3 */ 0x25C6, 0x25D1, 0x00E3, -/* 00F4 */ 0x2605, 0x2606, 0x00EF, -/* 00F5 */ 0x260E, 0x260F, 0x00F1, -/* 00F6 */ 0x261C, 0x261E, 0x00F3, -/* 00F7 */ 0x2640, 0x2642, 0x00F6, -/* 00F8 */ 0x2660, 0x266D, 0x00F9, -/* 00F9 */ 0x3003, 0x0000, 0x2128, -/* 00FA */ 0x3013, 0x3015, 0x0107, -/* 00FB */ 0x321C, 0x0000, 0x225F, -/* 00FC */ 0x327F, 0x0000, 0x225E, -/* 00FD */ 0x3388, 0x3389, 0x010A, -/* 00FE */ 0x3398, 0x0000, 0x2725, -/* 00FF */ 0x33A7, 0x33A8, 0x010C, -/* 0100 */ 0x33C0, 0x33CA, 0x010E, -/* 0101 */ 0x33CF, 0x33DD, 0x0119, -/* 0102 */ 0x4E00, 0x4E03, 0x0128, -/* 0103 */ 0x4E07, 0x4E0D, 0x012C, -/* 0104 */ 0x4E11, 0x4E19, 0x0133, -/* 0105 */ 0x4E1E, 0x0000, 0x632A, -/* 0106 */ 0x4E2D, 0x0000, 0x7169, -/* 0107 */ 0x4E32, 0x0000, 0x4D7A, -/* 0108 */ 0x4E38, 0x4E3B, 0x013C, -/* 0109 */ 0x4E42, 0x4E45, 0x0140, -/* 010A */ 0x4E4B, 0x4E4F, 0x0144, -/* 010B */ 0x4E56, 0x4E59, 0x0149, -/* 010C */ 0x4E5D, 0x4E5F, 0x014D, -/* 010D */ 0x4E6B, 0x4E6D, 0x0150, -/* 010E */ 0x4E73, 0x4E77, 0x0153, -/* 010F */ 0x4E7E, 0x0000, 0x4B6B, -/* 0110 */ 0x4E82, 0x0000, 0x552F, -/* 0111 */ 0x4E86, 0x4EAE, 0x0158, -/* 0112 */ 0x4EB6, 0x0000, 0x5322, -/* 0113 */ 0x4EBA, 0x0000, 0x6C51, -/* 0114 */ 0x4EC0, 0x4ECD, 0x0181, -/* 0115 */ 0x4ED4, 0x4ED9, 0x018F, -/* 0116 */ 0x4EDD, 0x4EDF, 0x0195, -/* 0117 */ 0x4EE3, 0x4EE5, 0x0198, -/* 0118 */ 0x4EF0, 0x4EF2, 0x019B, -/* 0119 */ 0x4EF6, 0x4EF7, 0x019E, -/* 011A */ 0x4EFB, 0x0000, 0x6C72, -/* 011B */ 0x4F01, 0x0000, 0x506A, -/* 011C */ 0x4F09, 0x4F11, 0x01A0, -/* 011D */ 0x4F2F, 0x0000, 0x5B57, -/* 011E */ 0x4F34, 0x4F3D, 0x01A9, -/* 011F */ 0x4F43, 0x4F48, 0x01B3, -/* 0120 */ 0x4F4D, 0x4F51, 0x01B9, -/* 0121 */ 0x4F55, 0x0000, 0x793C, -/* 0122 */ 0x4F59, 0x4F5C, 0x01BE, -/* 0123 */ 0x4F69, 0x0000, 0x7825, -/* 0124 */ 0x4F6F, 0x4F76, 0x01C2, -/* 0125 */ 0x4F7A, 0x0000, 0x6E6D, -/* 0126 */ 0x4F7E, 0x4F91, 0x01CA, -/* 0127 */ 0x4F96, 0x4F9D, 0x01DE, -/* 0128 */ 0x4FAE, 0x4FAF, 0x01E6, -/* 0129 */ 0x4FB5, 0x4FB6, 0x01E8, -/* 012A */ 0x4FBF, 0x4FC4, 0x01EA, -/* 012B */ 0x4FC9, 0x4FCA, 0x01F0, -/* 012C */ 0x4FCE, 0x4FE1, 0x01F2, -/* 012D */ 0x4FEE, 0x4FFA, 0x0206, -/* 012E */ 0x5002, 0x0000, 0x5C31, -/* 012F */ 0x5006, 0x500D, 0x0213, -/* 0130 */ 0x5011, 0x5012, 0x021B, -/* 0131 */ 0x5016, 0x502D, 0x021D, -/* 0132 */ 0x503B, 0x0000, 0x6526, -/* 0133 */ 0x5043, 0x0000, 0x6567, -/* 0134 */ 0x5047, 0x5049, 0x0235, -/* 0135 */ 0x504F, 0x0000, 0x7836, -/* 0136 */ 0x5055, 0x0000, 0x7A25, -/* 0137 */ 0x505A, 0x505C, 0x0238, -/* 0138 */ 0x5065, 0x0000, 0x4B6D, -/* 0139 */ 0x5074, 0x5078, 0x023B, -/* 013A */ 0x5080, 0x0000, 0x4E53, -/* 013B */ 0x5085, 0x0000, 0x5C77, -/* 013C */ 0x508D, 0x0000, 0x5B28, -/* 013D */ 0x5091, 0x0000, 0x4B78, -/* 013E */ 0x5098, 0x5099, 0x0240, -/* 013F */ 0x50AC, 0x50AD, 0x0242, -/* 0140 */ 0x50B2, 0x50B7, 0x0244, -/* 0141 */ 0x50BE, 0x0000, 0x4C4B, -/* 0142 */ 0x50C5, 0x0000, 0x5041, -/* 0143 */ 0x50C9, 0x50CA, 0x024A, -/* 0144 */ 0x50CF, 0x50D1, 0x024C, -/* 0145 */ 0x50D5, 0x50D6, 0x024F, -/* 0146 */ 0x50DA, 0x0000, 0x5676, -/* 0147 */ 0x50DE, 0x0000, 0x6A4A, -/* 0148 */ 0x50E5, 0x50E7, 0x0251, -/* 0149 */ 0x50ED, 0x0000, 0x7350, -/* 014A */ 0x50F9, 0x50FB, 0x0254, -/* 014B */ 0x50FF, 0x5109, 0x0257, -/* 014C */ 0x5112, 0x0000, 0x6A63, -/* 014D */ 0x511F, 0x5121, 0x0262, -/* 014E */ 0x512A, 0x0000, 0x6950, -/* 014F */ 0x5132, 0x0000, 0x6E39, -/* 0150 */ 0x5137, 0x513C, 0x0265, -/* 0151 */ 0x5140, 0x514E, 0x026B, -/* 0152 */ 0x5152, 0x0000, 0x642E, -/* 0153 */ 0x515C, 0x0000, 0x545F, -/* 0154 */ 0x5162, 0x5171, 0x027A, -/* 0155 */ 0x5175, 0x5178, 0x028A, -/* 0156 */ 0x517C, 0x0000, 0x4C42, -/* 0157 */ 0x5180, 0x0000, 0x506D, -/* 0158 */ 0x5186, 0x0000, 0x6577, -/* 0159 */ 0x518A, 0x518D, 0x028E, -/* 015A */ 0x5192, 0x5197, 0x0292, -/* 015B */ 0x51A0, 0x0000, 0x4E2E, -/* 015C */ 0x51A5, 0x0000, 0x5922, -/* 015D */ 0x51AA, 0x51AC, 0x0298, -/* 015E */ 0x51B6, 0x51B7, 0x029B, -/* 015F */ 0x51BD, 0x0000, 0x5629, -/* 0160 */ 0x51C4, 0x51CD, 0x029D, -/* 0161 */ 0x51DC, 0x51E1, 0x02A7, -/* 0162 */ 0x51F0, 0x51F1, 0x02AD, -/* 0163 */ 0x51F6, 0x520A, 0x02AF, -/* 0164 */ 0x520E, 0x5211, 0x02C4, -/* 0165 */ 0x5217, 0x0000, 0x562A, -/* 0166 */ 0x521D, 0x0000, 0x7478, -/* 0167 */ 0x5224, 0x5225, 0x02C8, -/* 0168 */ 0x5229, 0x522A, 0x02CA, -/* 0169 */ 0x522E, 0x5230, 0x02CC, -/* 016A */ 0x5236, 0x523B, 0x02CF, -/* 016B */ 0x5243, 0x0000, 0x746F, -/* 016C */ 0x5247, 0x524D, 0x02D5, -/* 016D */ 0x5254, 0x5256, 0x02DC, -/* 016E */ 0x525B, 0x525D, 0x02DF, -/* 016F */ 0x5261, 0x0000, 0x6066, -/* 0170 */ 0x5269, 0x526A, 0x02E2, -/* 0171 */ 0x526F, 0x5275, 0x02E4, -/* 0172 */ 0x527D, 0x527F, 0x02EB, -/* 0173 */ 0x5283, 0x0000, 0x7C71, -/* 0174 */ 0x5287, 0x5289, 0x02EE, -/* 0175 */ 0x528D, 0x0000, 0x4B7C, -/* 0176 */ 0x5291, 0x5292, 0x02F1, -/* 0177 */ 0x529B, 0x0000, 0x5574, -/* 0178 */ 0x529F, 0x52A4, 0x02F3, -/* 0179 */ 0x52A9, 0x52AB, 0x02F9, -/* 017A */ 0x52BE, 0x52C9, 0x02FC, -/* 017B */ 0x52CD, 0x0000, 0x4C4E, -/* 017C */ 0x52D2, 0x52E4, 0x0308, -/* 017D */ 0x52F3, 0x52FF, 0x031B, -/* 017E */ 0x5305, 0x5308, 0x0328, -/* 017F */ 0x530D, 0x5310, 0x032C, -/* 0180 */ 0x5315, 0x5319, 0x0330, -/* 0181 */ 0x5320, 0x5323, 0x0335, -/* 0182 */ 0x532A, 0x0000, 0x5D63, -/* 0183 */ 0x532F, 0x0000, 0x7C5D, -/* 0184 */ 0x5339, 0x0000, 0x792F, -/* 0185 */ 0x533F, 0x534D, 0x0339, -/* 0186 */ 0x5351, 0x5360, 0x0348, -/* 0187 */ 0x5366, 0x5368, 0x0358, -/* 0188 */ 0x536F, 0x5377, 0x035B, -/* 0189 */ 0x537D, 0x537F, 0x0364, -/* 018A */ 0x5384, 0x0000, 0x6478, -/* 018B */ 0x5393, 0x0000, 0x646D, -/* 018C */ 0x5398, 0x539A, 0x0367, -/* 018D */ 0x539F, 0x53A0, 0x036A, -/* 018E */ 0x53A5, 0x53A6, 0x036C, -/* 018F */ 0x53AD, 0x0000, 0x6674, -/* 0190 */ 0x53BB, 0x0000, 0x4B5B, -/* 0191 */ 0x53C3, 0x0000, 0x7351, -/* 0192 */ 0x53C8, 0x53CD, 0x036E, -/* 0193 */ 0x53D4, 0x53D7, 0x0374, -/* 0194 */ 0x53DB, 0x0000, 0x5A64, -/* 0195 */ 0x53E1, 0x53E5, 0x0378, -/* 0196 */ 0x53E9, 0x53F3, 0x037D, -/* 0197 */ 0x53F8, 0x0000, 0x5E49, -/* 0198 */ 0x5403, 0x5404, 0x0388, -/* 0199 */ 0x5408, 0x5411, 0x038A, -/* 019A */ 0x541B, 0x5420, 0x0394, -/* 019B */ 0x5426, 0x542B, 0x039A, -/* 019C */ 0x5433, 0x0000, 0x676F, -/* 019D */ 0x5438, 0x543E, 0x03A0, -/* 019E */ 0x5442, 0x0000, 0x5565, -/* 019F */ 0x5448, 0x544A, 0x03A7, -/* 01A0 */ 0x5451, 0x0000, 0x7722, -/* 01A1 */ 0x5468, 0x546A, 0x03AA, -/* 01A2 */ 0x5471, 0x5475, 0x03AD, -/* 01A3 */ 0x547B, 0x5480, 0x03B2, -/* 01A4 */ 0x5486, 0x0000, 0x7853, -/* 01A5 */ 0x548C, 0x5490, 0x03B8, -/* 01A6 */ 0x54A4, 0x0000, 0x7663, -/* 01A7 */ 0x54A8, 0x54AC, 0x03BD, -/* 01A8 */ 0x54B3, 0x0000, 0x7A26, -/* 01A9 */ 0x54B8, 0x0000, 0x7960, -/* 01AA */ 0x54BD, 0x54C4, 0x03C2, -/* 01AB */ 0x54C8, 0x54C9, 0x03CA, -/* 01AC */ 0x54E1, 0x0000, 0x6A2C, -/* 01AD */ 0x54E5, 0x54E8, 0x03CC, -/* 01AE */ 0x54ED, 0x54EE, 0x03D0, -/* 01AF */ 0x54F2, 0x0000, 0x7449, -/* 01B0 */ 0x54FA, 0x0000, 0x7854, -/* 01B1 */ 0x5504, 0x5507, 0x03D2, -/* 01B2 */ 0x550E, 0x5510, 0x03D6, -/* 01B3 */ 0x551C, 0x0000, 0x5845, -/* 01B4 */ 0x552F, 0x5531, 0x03D9, -/* 01B5 */ 0x5535, 0x0000, 0x645A, -/* 01B6 */ 0x553E, 0x0000, 0x7664, -/* 01B7 */ 0x5544, 0x5546, 0x03DC, -/* 01B8 */ 0x554F, 0x0000, 0x597D, -/* 01B9 */ 0x5553, 0x5556, 0x03DF, -/* 01BA */ 0x555E, 0x0000, 0x642F, -/* 01BB */ 0x5563, 0x0000, 0x7961, -/* 01BC */ 0x557C, 0x0000, 0x7026, -/* 01BD */ 0x5580, 0x0000, 0x4B53, -/* 01BE */ 0x5584, 0x558A, 0x03E3, -/* 01BF */ 0x5598, 0x559D, 0x03EA, -/* 01C0 */ 0x55A7, 0x55AE, 0x03F0, -/* 01C1 */ 0x55C5, 0x55C7, 0x03F8, -/* 01C2 */ 0x55D4, 0x0000, 0x7247, -/* 01C3 */ 0x55DA, 0x55DF, 0x03FB, -/* 01C4 */ 0x55E3, 0x55E4, 0x0401, -/* 01C5 */ 0x55FD, 0x55FE, 0x0403, -/* 01C6 */ 0x5606, 0x5609, 0x0405, -/* 01C7 */ 0x5614, 0x5617, 0x0409, -/* 01C8 */ 0x562F, 0x5636, 0x040D, -/* 01C9 */ 0x5653, 0x0000, 0x7A46, -/* 01CA */ 0x5668, 0x566B, 0x0415, -/* 01CB */ 0x5674, 0x0000, 0x5D44, -/* 01CC */ 0x5686, 0x0000, 0x7C77, -/* 01CD */ 0x56A5, 0x0000, 0x663F, -/* 01CE */ 0x56AC, 0x56AE, 0x0419, -/* 01CF */ 0x56B4, 0x0000, 0x6571, -/* 01D0 */ 0x56BC, 0x0000, 0x6D44, -/* 01D1 */ 0x56CA, 0x56CD, 0x041C, -/* 01D2 */ 0x56D1, 0x0000, 0x7536, -/* 01D3 */ 0x56DA, 0x56E0, 0x0420, -/* 01D4 */ 0x56F0, 0x0000, 0x4D5D, -/* 01D5 */ 0x56F9, 0x56FA, 0x0427, -/* 01D6 */ 0x5703, 0x5704, 0x0429, -/* 01D7 */ 0x5708, 0x570D, 0x042B, -/* 01D8 */ 0x5712, 0x5718, 0x0431, -/* 01D9 */ 0x571F, 0x0000, 0x774F, -/* 01DA */ 0x5728, 0x0000, 0x6E24, -/* 01DB */ 0x572D, 0x5730, 0x0438, -/* 01DC */ 0x573B, 0x0000, 0x5070, -/* 01DD */ 0x5740, 0x5742, 0x043C, -/* 01DE */ 0x5747, 0x5751, 0x043F, -/* 01DF */ 0x5761, 0x5766, 0x044A, -/* 01E0 */ 0x576A, 0x0000, 0x7840, -/* 01E1 */ 0x576E, 0x5770, 0x0450, -/* 01E2 */ 0x5775, 0x0000, 0x4F26, -/* 01E3 */ 0x577C, 0x0000, 0x7673, -/* 01E4 */ 0x5782, 0x0000, 0x6177, -/* 01E5 */ 0x5788, 0x578B, 0x0453, -/* 01E6 */ 0x5793, 0x0000, 0x7A27, -/* 01E7 */ 0x57A0, 0x57A3, 0x0457, -/* 01E8 */ 0x57C3, 0x0000, 0x646F, -/* 01E9 */ 0x57C7, 0x57CE, 0x045B, -/* 01EA */ 0x57DF, 0x57E0, 0x0463, -/* 01EB */ 0x57F0, 0x0000, 0x7371, -/* 01EC */ 0x57F4, 0x57FC, 0x0465, -/* 01ED */ 0x5800, 0x580A, 0x046E, -/* 01EE */ 0x581E, 0x582A, 0x0479, -/* 01EF */ 0x582F, 0x5835, 0x0486, -/* 01F0 */ 0x583A, 0x0000, 0x4C77, -/* 01F1 */ 0x584A, 0x584B, 0x048D, -/* 01F2 */ 0x584F, 0x585A, 0x048F, -/* 01F3 */ 0x585E, 0x5864, 0x049B, -/* 01F4 */ 0x5875, 0x0000, 0x7248, -/* 01F5 */ 0x5879, 0x587E, 0x04A2, -/* 01F6 */ 0x5883, 0x5885, 0x04A8, -/* 01F7 */ 0x5889, 0x0000, 0x693A, -/* 01F8 */ 0x5893, 0x0000, 0x5957, -/* 01F9 */ 0x589C, 0x589F, 0x04AB, -/* 01FA */ 0x58A8, 0x58A9, 0x04AF, -/* 01FB */ 0x58AE, 0x0000, 0x7665, -/* 01FC */ 0x58B3, 0x0000, 0x5D45, -/* 01FD */ 0x58BA, 0x58C1, 0x04B1, -/* 01FE */ 0x58C5, 0x58C7, 0x04B9, -/* 01FF */ 0x58CE, 0x58D9, 0x04BC, -/* 0200 */ 0x58DE, 0x58DF, 0x04C8, -/* 0201 */ 0x58E4, 0x0000, 0x653D, -/* 0202 */ 0x58EB, 0x58EF, 0x04CA, -/* 0203 */ 0x58F9, 0x58FD, 0x04CF, -/* 0204 */ 0x590F, 0x0000, 0x793E, -/* 0205 */ 0x5914, 0x591C, 0x04D4, -/* 0206 */ 0x5922, 0x0000, 0x5953, -/* 0207 */ 0x5927, 0x5931, 0x04DD, -/* 0208 */ 0x5937, 0x0000, 0x6C28, -/* 0209 */ 0x593E, 0x0000, 0x7A71, -/* 020A */ 0x5944, 0x5949, 0x04E8, -/* 020B */ 0x594E, 0x595A, 0x04EE, -/* 020C */ 0x5960, 0x5962, 0x04FB, -/* 020D */ 0x5967, 0x596E, 0x04FE, -/* 020E */ 0x5973, 0x5974, 0x0506, -/* 020F */ 0x5978, 0x0000, 0x4A4C, -/* 0210 */ 0x597D, 0x0000, 0x7B3F, -/* 0211 */ 0x5982, 0x5984, 0x0508, -/* 0212 */ 0x598A, 0x0000, 0x6C74, -/* 0213 */ 0x5993, 0x5999, 0x050B, -/* 0214 */ 0x59A5, 0x59A8, 0x0512, -/* 0215 */ 0x59AC, 0x0000, 0x7760, -/* 0216 */ 0x59B9, 0x59BE, 0x0516, -/* 0217 */ 0x59C3, 0x59CB, 0x051C, -/* 0218 */ 0x59D0, 0x59D4, 0x0525, -/* 0219 */ 0x59D9, 0x59DD, 0x052A, -/* 021A */ 0x59E6, 0x59EE, 0x052F, -/* 021B */ 0x59F8, 0x59FB, 0x0538, -/* 021C */ 0x59FF, 0x5A03, 0x053C, -/* 021D */ 0x5A11, 0x0000, 0x5E4F, -/* 021E */ 0x5A18, 0x5A20, 0x0541, -/* 021F */ 0x5A25, 0x0000, 0x6430, -/* 0220 */ 0x5A29, 0x0000, 0x5834, -/* 0221 */ 0x5A36, 0x0000, 0x7625, -/* 0222 */ 0x5A3C, 0x0000, 0x735E, -/* 0223 */ 0x5A41, 0x0000, 0x5725, -/* 0224 */ 0x5A46, 0x5A49, 0x054A, -/* 0225 */ 0x5A5A, 0x0000, 0x7B66, -/* 0226 */ 0x5A62, 0x0000, 0x5D66, -/* 0227 */ 0x5A66, 0x0000, 0x5C7E, -/* 0228 */ 0x5A92, 0x0000, 0x585A, -/* 0229 */ 0x5A9A, 0x5A9B, 0x054E, -/* 022A */ 0x5AA4, 0x0000, 0x6338, -/* 022B */ 0x5AC1, 0x5AC4, 0x0550, -/* 022C */ 0x5AC9, 0x5ACC, 0x0554, -/* 022D */ 0x5AE1, 0x0000, 0x6E55, -/* 022E */ 0x5AE6, 0x5AE9, 0x0558, -/* 022F */ 0x5B05, 0x0000, 0x7B7B, -/* 0230 */ 0x5B09, 0x5B0C, 0x055C, -/* 0231 */ 0x5B16, 0x0000, 0x7846, -/* 0232 */ 0x5B2A, 0x0000, 0x5E2E, -/* 0233 */ 0x5B40, 0x5B43, 0x0560, -/* 0234 */ 0x5B50, 0x5B5F, 0x0564, -/* 0235 */ 0x5B63, 0x5B64, 0x0574, -/* 0236 */ 0x5B69, 0x5B6B, 0x0576, -/* 0237 */ 0x5B70, 0x5B71, 0x0579, -/* 0238 */ 0x5B75, 0x5B7C, 0x057B, -/* 0239 */ 0x5B85, 0x5B8F, 0x0583, -/* 023A */ 0x5B93, 0x5B9C, 0x058E, -/* 023B */ 0x5BA2, 0x5BA6, 0x0598, -/* 023C */ 0x5BAC, 0x5BB9, 0x059D, -/* 023D */ 0x5BBF, 0x5BC7, 0x05AB, -/* 023E */ 0x5BCC, 0x0000, 0x5D23, -/* 023F */ 0x5BD0, 0x5BD7, 0x05B4, -/* 0240 */ 0x5BDE, 0x5BEF, 0x05BC, -/* 0241 */ 0x5BF5, 0x5BFA, 0x05CE, -/* 0242 */ 0x5C01, 0x5C11, 0x05D4, -/* 0243 */ 0x5C16, 0x5C19, 0x05E5, -/* 0244 */ 0x5C24, 0x0000, 0x6956, -/* 0245 */ 0x5C28, 0x0000, 0x5B2B, -/* 0246 */ 0x5C31, 0x0000, 0x7626, -/* 0247 */ 0x5C38, 0x5C40, 0x05E9, -/* 0248 */ 0x5C45, 0x5C51, 0x05F2, -/* 0249 */ 0x5C55, 0x0000, 0x6E77, -/* 024A */ 0x5C5B, 0x0000, 0x5C33, -/* 024B */ 0x5C60, 0x5C65, 0x05FF, -/* 024C */ 0x5C6C, 0x5C71, 0x0605, -/* 024D */ 0x5C79, 0x0000, 0x7D5F, -/* 024E */ 0x5C90, 0x5C91, 0x060B, -/* 024F */ 0x5CA1, 0x0000, 0x4B2A, -/* 0250 */ 0x5CA9, 0x5CAC, 0x060D, -/* 0251 */ 0x5CB1, 0x5CBA, 0x0611, -/* 0252 */ 0x5CBE, 0x5CC0, 0x061B, -/* 0253 */ 0x5CD9, 0x0000, 0x7639, -/* 0254 */ 0x5CE0, 0x0000, 0x5F47, -/* 0255 */ 0x5CE8, 0x0000, 0x6431, -/* 0256 */ 0x5CEF, 0x5CF0, 0x061E, -/* 0257 */ 0x5CF4, 0x5CF6, 0x0620, -/* 0258 */ 0x5CFB, 0x5CFD, 0x0623, -/* 0259 */ 0x5D07, 0x0000, 0x627D, -/* 025A */ 0x5D0D, 0x5D19, 0x0626, -/* 025B */ 0x5D27, 0x5D29, 0x0633, -/* 025C */ 0x5D4B, 0x5D4C, 0x0636, -/* 025D */ 0x5D50, 0x0000, 0x5539, -/* 025E */ 0x5D69, 0x5D6F, 0x0638, -/* 025F */ 0x5D87, 0x0000, 0x4F29, -/* 0260 */ 0x5D8B, 0x0000, 0x5377, -/* 0261 */ 0x5D9D, 0x5DA2, 0x063F, -/* 0262 */ 0x5DAA, 0x0000, 0x6575, -/* 0263 */ 0x5DB8, 0x5DBD, 0x0645, -/* 0264 */ 0x5DCD, 0x0000, 0x6864, -/* 0265 */ 0x5DD2, 0x0000, 0x5835, -/* 0266 */ 0x5DD6, 0x0000, 0x645C, -/* 0267 */ 0x5DDD, 0x5DF7, 0x064B, -/* 0268 */ 0x5DFD, 0x5DFE, 0x0666, -/* 0269 */ 0x5E02, 0x5E06, 0x0668, -/* 026A */ 0x5E0C, 0x0000, 0x7D71, -/* 026B */ 0x5E11, 0x0000, 0x7736, -/* 026C */ 0x5E16, 0x5E1D, 0x066D, -/* 026D */ 0x5E25, 0x0000, 0x617D, -/* 026E */ 0x5E2B, 0x5E2D, 0x0675, -/* 026F */ 0x5E33, 0x5E38, 0x0678, -/* 0270 */ 0x5E3D, 0x5E40, 0x067E, -/* 0271 */ 0x5E44, 0x5E47, 0x0682, -/* 0272 */ 0x5E4C, 0x0000, 0x7C46, -/* 0273 */ 0x5E55, 0x0000, 0x582D, -/* 0274 */ 0x5E5F, 0x5E63, 0x0686, -/* 0275 */ 0x5E72, 0x5E7E, 0x068B, -/* 0276 */ 0x5E84, 0x5E8A, 0x0698, -/* 0277 */ 0x5E8F, 0x0000, 0x5F6D, -/* 0278 */ 0x5E95, 0x5E9C, 0x069F, -/* 0279 */ 0x5EA0, 0x0000, 0x5F4A, -/* 027A */ 0x5EA6, 0x5EA7, 0x06A7, -/* 027B */ 0x5EAB, 0x5EAD, 0x06A9, -/* 027C */ 0x5EB5, 0x5EB8, 0x06AC, -/* 027D */ 0x5EBE, 0x0000, 0x6A6C, -/* 027E */ 0x5EC2, 0x0000, 0x5F4B, -/* 027F */ 0x5EC8, 0x5ECA, 0x06B0, -/* 0280 */ 0x5ED0, 0x5ED6, 0x06B3, -/* 0281 */ 0x5EDA, 0x5EDB, 0x06BA, -/* 0282 */ 0x5EDF, 0x5EE3, 0x06BC, -/* 0283 */ 0x5EEC, 0x0000, 0x5566, -/* 0284 */ 0x5EF3, 0x5EFB, 0x06C1, -/* 0285 */ 0x5F01, 0x5F04, 0x06CA, -/* 0286 */ 0x5F0A, 0x0000, 0x7849, -/* 0287 */ 0x5F0F, 0x5F1B, 0x06CE, -/* 0288 */ 0x5F1F, 0x0000, 0x7029, -/* 0289 */ 0x5F26, 0x5F29, 0x06DB, -/* 028A */ 0x5F31, 0x0000, 0x6530, -/* 028B */ 0x5F35, 0x0000, 0x6D65, -/* 028C */ 0x5F3A, 0x5F3C, 0x06DF, -/* 028D */ 0x5F48, 0x5F4E, 0x06E2, -/* 028E */ 0x5F56, 0x5F5B, 0x06E9, -/* 028F */ 0x5F62, 0x0000, 0x7B21, -/* 0290 */ 0x5F66, 0x5F71, 0x06EF, -/* 0291 */ 0x5F77, 0x5F81, 0x06FB, -/* 0292 */ 0x5F85, 0x5F8C, 0x0706, -/* 0293 */ 0x5F90, 0x5F92, 0x070E, -/* 0294 */ 0x5F97, 0x5F99, 0x0711, -/* 0295 */ 0x5F9E, 0x5FA1, 0x0714, -/* 0296 */ 0x5FA8, 0x5FAA, 0x0718, -/* 0297 */ 0x5FAE, 0x0000, 0x5A30, -/* 0298 */ 0x5FB5, 0x5FB9, 0x071B, -/* 0299 */ 0x5FBD, 0x0000, 0x7D45, -/* 029A */ 0x5FC3, 0x5FC5, 0x0720, -/* 029B */ 0x5FCC, 0x5FCD, 0x0723, -/* 029C */ 0x5FD6, 0x5FD9, 0x0725, -/* 029D */ 0x5FE0, 0x0000, 0x7577, -/* 029E */ 0x5FEB, 0x0000, 0x7661, -/* 029F */ 0x5FF5, 0x0000, 0x5237, -/* 02A0 */ 0x5FFD, 0x5FFF, 0x0729, -/* 02A1 */ 0x600F, 0x6012, 0x072C, -/* 02A2 */ 0x6016, 0x0000, 0x7857, -/* 02A3 */ 0x601C, 0x6021, 0x0730, -/* 02A4 */ 0x6025, 0x602A, 0x0736, -/* 02A5 */ 0x602F, 0x0000, 0x4C25, -/* 02A6 */ 0x6041, 0x6043, 0x073C, -/* 02A7 */ 0x604D, 0x6055, 0x073F, -/* 02A8 */ 0x6059, 0x0000, 0x653F, -/* 02A9 */ 0x605D, 0x0000, 0x4E3F, -/* 02AA */ 0x6062, 0x6070, 0x0748, -/* 02AB */ 0x6085, 0x0000, 0x666D, -/* 02AC */ 0x6089, 0x608D, 0x0757, -/* 02AD */ 0x6094, 0x6096, 0x075C, -/* 02AE */ 0x609A, 0x609B, 0x075F, -/* 02AF */ 0x609F, 0x60A7, 0x0761, -/* 02B0 */ 0x60B0, 0x60B8, 0x076A, -/* 02B1 */ 0x60BC, 0x60BD, 0x0773, -/* 02B2 */ 0x60C5, 0x60C7, 0x0775, -/* 02B3 */ 0x60D1, 0x0000, 0x7B63, -/* 02B4 */ 0x60DA, 0x60E1, 0x0778, -/* 02B5 */ 0x60F0, 0x60FB, 0x0780, -/* 02B6 */ 0x6101, 0x0000, 0x617E, -/* 02B7 */ 0x6106, 0x6109, 0x078C, -/* 02B8 */ 0x610D, 0x610F, 0x0790, -/* 02B9 */ 0x6115, 0x0000, 0x6443, -/* 02BA */ 0x611A, 0x611B, 0x0793, -/* 02BB */ 0x611F, 0x0000, 0x4A6F, -/* 02BC */ 0x6127, 0x0000, 0x4E57, -/* 02BD */ 0x6130, 0x0000, 0x7C4A, -/* 02BE */ 0x6134, 0x6137, 0x0795, -/* 02BF */ 0x613C, 0x614C, 0x0799, -/* 02C0 */ 0x6153, 0x6159, 0x07AA, -/* 02C1 */ 0x615D, 0x6170, 0x07B1, -/* 02C2 */ 0x6176, 0x6177, 0x07C5, -/* 02C3 */ 0x617D, 0x6182, 0x07C7, -/* 02C4 */ 0x618A, 0x0000, 0x5D69, -/* 02C5 */ 0x618E, 0x6194, 0x07CD, -/* 02C6 */ 0x6198, 0x619A, 0x07D4, -/* 02C7 */ 0x61A4, 0x61AE, 0x07D7, -/* 02C8 */ 0x61B2, 0x0000, 0x7A4A, -/* 02C9 */ 0x61B6, 0x0000, 0x6563, -/* 02CA */ 0x61BA, 0x0000, 0x533C, -/* 02CB */ 0x61BE, 0x0000, 0x4A70, -/* 02CC */ 0x61C3, 0x0000, 0x5044, -/* 02CD */ 0x61C7, 0x61CB, 0x07E2, -/* 02CE */ 0x61E6, 0x0000, 0x5157, -/* 02CF */ 0x61F2, 0x0000, 0x7324, -/* 02D0 */ 0x61F6, 0x6200, 0x07E7, -/* 02D1 */ 0x6207, 0x6212, 0x07F2, -/* 02D2 */ 0x6216, 0x0000, 0x7B64, -/* 02D3 */ 0x621A, 0x0000, 0x742B, -/* 02D4 */ 0x621F, 0x6221, 0x07FE, -/* 02D5 */ 0x622A, 0x0000, 0x6F38, -/* 02D6 */ 0x622E, 0x6236, 0x0801, -/* 02D7 */ 0x623E, 0x6241, 0x080A, -/* 02D8 */ 0x6247, 0x624D, 0x080E, -/* 02D9 */ 0x6253, 0x0000, 0x7668, -/* 02DA */ 0x6258, 0x0000, 0x7675, -/* 02DB */ 0x626E, 0x6271, 0x0815, -/* 02DC */ 0x6276, 0x6280, 0x0819, -/* 02DD */ 0x6284, 0x0000, 0x747C, -/* 02DE */ 0x6289, 0x628A, 0x0824, -/* 02DF */ 0x6291, 0x629B, 0x0826, -/* 02E0 */ 0x62AB, 0x0000, 0x7929, -/* 02E1 */ 0x62B1, 0x0000, 0x7859, -/* 02E2 */ 0x62B5, 0x0000, 0x6E3D, -/* 02E3 */ 0x62B9, 0x62BD, 0x0831, -/* 02E4 */ 0x62C2, 0x0000, 0x5D59, -/* 02E5 */ 0x62C7, 0x62DC, 0x0836, -/* 02E6 */ 0x62EC, 0x62F3, 0x084C, -/* 02E7 */ 0x62F7, 0x0000, 0x4D38, -/* 02E8 */ 0x62FE, 0x6301, 0x0854, -/* 02E9 */ 0x6307, 0x6309, 0x0858, -/* 02EA */ 0x6311, 0x0000, 0x537B, -/* 02EB */ 0x632B, 0x0000, 0x7129, -/* 02EC */ 0x632F, 0x0000, 0x7249, -/* 02ED */ 0x633A, 0x633E, 0x085B, -/* 02EE */ 0x6349, 0x6350, 0x0860, -/* 02EF */ 0x6355, 0x0000, 0x785A, -/* 02F0 */ 0x6367, 0x6368, 0x0868, -/* 02F1 */ 0x636E, 0x0000, 0x4B5F, -/* 02F2 */ 0x6372, 0x0000, 0x4F6C, -/* 02F3 */ 0x6377, 0x637B, 0x086A, -/* 02F4 */ 0x637F, 0x0000, 0x5F72, -/* 02F5 */ 0x6383, 0x0000, 0x6137, -/* 02F6 */ 0x6388, 0x638C, 0x086F, -/* 02F7 */ 0x6392, 0x0000, 0x5B49, -/* 02F8 */ 0x6396, 0x639B, 0x0874, -/* 02F9 */ 0x63A0, 0x63AA, 0x087A, -/* 02FA */ 0x63C0, 0x0000, 0x4A51, -/* 02FB */ 0x63C4, 0x63C6, 0x0885, -/* 02FC */ 0x63CF, 0x63D0, 0x0888, -/* 02FD */ 0x63D6, 0x0000, 0x6B67, -/* 02FE */ 0x63DA, 0x63DB, 0x088A, -/* 02FF */ 0x63E1, 0x0000, 0x6444, -/* 0300 */ 0x63ED, 0x63EE, 0x088C, -/* 0301 */ 0x63F4, 0x63F7, 0x088E, -/* 0302 */ 0x640D, 0x640F, 0x0892, -/* 0303 */ 0x6414, 0x6417, 0x0895, -/* 0304 */ 0x641C, 0x0000, 0x6224, -/* 0305 */ 0x6422, 0x0000, 0x724A, -/* 0306 */ 0x642C, 0x642D, 0x0899, -/* 0307 */ 0x643A, 0x0000, 0x7D4D, -/* 0308 */ 0x643E, 0x0000, 0x7336, -/* 0309 */ 0x6458, 0x0000, 0x6E57, -/* 030A */ 0x6460, 0x0000, 0x7544, -/* 030B */ 0x6469, 0x0000, 0x5824, -/* 030C */ 0x646F, 0x0000, 0x7227, -/* 030D */ 0x6478, 0x647A, 0x089B, -/* 030E */ 0x6488, 0x0000, 0x564E, -/* 030F */ 0x6491, 0x6493, 0x089E, -/* 0310 */ 0x649A, 0x0000, 0x5235, -/* 0311 */ 0x649E, 0x0000, 0x5355, -/* 0312 */ 0x64A4, 0x64A5, 0x08A1, -/* 0313 */ 0x64AB, 0x64B2, 0x08A3, -/* 0314 */ 0x64BB, 0x0000, 0x5335, -/* 0315 */ 0x64C1, 0x64CE, 0x08AB, -/* 0316 */ 0x64D2, 0x64D4, 0x08B9, -/* 0317 */ 0x64D8, 0x64DA, 0x08BC, -/* 0318 */ 0x64E1, 0x64E7, 0x08BF, -/* 0319 */ 0x64EC, 0x0000, 0x6B74, -/* 031A */ 0x64F2, 0x64F4, 0x08C6, -/* 031B */ 0x64FA, 0x0000, 0x776C, -/* 031C */ 0x64FE, 0x6500, 0x08C9, -/* 031D */ 0x6504, 0x0000, 0x774C, -/* 031E */ 0x6518, 0x0000, 0x6541, -/* 031F */ 0x651D, 0x0000, 0x606E, -/* 0320 */ 0x6523, 0x0000, 0x557D, -/* 0321 */ 0x652A, 0x652F, 0x08CC, -/* 0322 */ 0x6536, 0x653F, 0x08D2, -/* 0323 */ 0x6545, 0x6548, 0x08DC, -/* 0324 */ 0x654D, 0x6551, 0x08E0, -/* 0325 */ 0x6556, 0x6557, 0x08E5, -/* 0326 */ 0x655E, 0x0000, 0x7362, -/* 0327 */ 0x6562, 0x6566, 0x08E7, -/* 0328 */ 0x656C, 0x656D, 0x08EC, -/* 0329 */ 0x6572, 0x6578, 0x08EE, -/* 032A */ 0x657E, 0x0000, 0x6040, -/* 032B */ 0x6582, 0x6587, 0x08F5, -/* 032C */ 0x658C, 0x0000, 0x5E30, -/* 032D */ 0x6590, 0x6591, 0x08FB, -/* 032E */ 0x6597, 0x65A7, 0x08FD, -/* 032F */ 0x65AB, 0x65B0, 0x090E, -/* 0330 */ 0x65B7, 0x65BD, 0x0914, -/* 0331 */ 0x65C1, 0x0000, 0x5B31, -/* 0332 */ 0x65C5, 0x0000, 0x5569, -/* 0333 */ 0x65CB, 0x65D2, 0x091B, -/* 0334 */ 0x65D7, 0x0000, 0x507D, -/* 0335 */ 0x65E0, 0x65ED, 0x0923, -/* 0336 */ 0x65F1, 0x65F4, 0x0931, -/* 0337 */ 0x65FA, 0x65FF, 0x0935, -/* 0338 */ 0x6606, 0x6615, 0x093B, -/* 0339 */ 0x661E, 0x6620, 0x094B, -/* 033A */ 0x6625, 0x6628, 0x094E, -/* 033B */ 0x662D, 0x6636, 0x0952, -/* 033C */ 0x663A, 0x663B, 0x095C, -/* 033D */ 0x6641, 0x6644, 0x095E, -/* 033E */ 0x6649, 0x664B, 0x0962, -/* 033F */ 0x664F, 0x0000, 0x644F, -/* 0340 */ 0x6659, 0x665F, 0x0965, -/* 0341 */ 0x6664, 0x666F, 0x096C, -/* 0342 */ 0x6673, 0x667A, 0x0978, -/* 0343 */ 0x6684, 0x6689, 0x0980, -/* 0344 */ 0x668E, 0x6691, 0x0986, -/* 0345 */ 0x6696, 0x6698, 0x098A, -/* 0346 */ 0x669D, 0x66A2, 0x098D, -/* 0347 */ 0x66AB, 0x66AE, 0x0993, -/* 0348 */ 0x66B2, 0x66B4, 0x0997, -/* 0349 */ 0x66B9, 0x66BE, 0x099A, -/* 034A */ 0x66C4, 0x66C9, 0x09A0, -/* 034B */ 0x66D6, 0x66E0, 0x09A6, -/* 034C */ 0x66E6, 0x0000, 0x7D76, -/* 034D */ 0x66F0, 0x6703, 0x09B1, -/* 034E */ 0x6708, 0x670D, 0x09C5, -/* 034F */ 0x6714, 0x6717, 0x09CB, -/* 0350 */ 0x671B, 0x671F, 0x09CF, -/* 0351 */ 0x6726, 0x6736, 0x09D4, -/* 0352 */ 0x673A, 0x673D, 0x09E5, -/* 0353 */ 0x6746, 0x6749, 0x09E9, -/* 0354 */ 0x674E, 0x6756, 0x09ED, -/* 0355 */ 0x675C, 0x675F, 0x09F6, -/* 0356 */ 0x676D, 0x6777, 0x09FA, -/* 0357 */ 0x677B, 0x677F, 0x0A05, -/* 0358 */ 0x6787, 0x678B, 0x0A0A, -/* 0359 */ 0x678F, 0x679D, 0x0A0F, -/* 035A */ 0x67AF, 0x67B8, 0x0A1E, -/* 035B */ 0x67BE, 0x0000, 0x6342, -/* 035C */ 0x67C4, 0x0000, 0x5C37, -/* 035D */ 0x67CF, 0x67D4, 0x0A28, -/* 035E */ 0x67DA, 0x67DD, 0x0A2E, -/* 035F */ 0x67E9, 0x67F6, 0x0A32, -/* 0360 */ 0x67FB, 0x67FE, 0x0A40, -/* 0361 */ 0x6812, 0x6817, 0x0A44, -/* 0362 */ 0x6821, 0x6822, 0x0A4A, -/* 0363 */ 0x682A, 0x0000, 0x713B, -/* 0364 */ 0x682F, 0x0000, 0x6971, -/* 0365 */ 0x6838, 0x6843, 0x0A4C, -/* 0366 */ 0x6848, 0x0000, 0x6450, -/* 0367 */ 0x684E, 0x6854, 0x0A58, -/* 0368 */ 0x686D, 0x0000, 0x724D, -/* 0369 */ 0x6876, 0x0000, 0x7752, -/* 036A */ 0x687F, 0x6881, 0x0A5F, -/* 036B */ 0x6885, 0x0000, 0x585E, -/* 036C */ 0x688F, 0x0000, 0x4D59, -/* 036D */ 0x6893, 0x6897, 0x0A62, -/* 036E */ 0x689D, 0x68A2, 0x0A67, -/* 036F */ 0x68A7, 0x68A8, 0x0A6D, -/* 0370 */ 0x68AD, 0x68B6, 0x0A6F, -/* 0371 */ 0x68C4, 0x68C5, 0x0A79, -/* 0372 */ 0x68C9, 0x68CD, 0x0A7B, -/* 0373 */ 0x68D2, 0x68DA, 0x0A80, -/* 0374 */ 0x68DF, 0x68E0, 0x0A89, -/* 0375 */ 0x68E7, 0x68E8, 0x0A8B, -/* 0376 */ 0x68EE, 0x0000, 0x5F35, -/* 0377 */ 0x68F2, 0x0000, 0x5F78, -/* 0378 */ 0x68F9, 0x68FA, 0x0A8D, -/* 0379 */ 0x6900, 0x0000, 0x684A, -/* 037A */ 0x6905, 0x0000, 0x6B75, -/* 037B */ 0x690D, 0x690E, 0x0A8F, -/* 037C */ 0x6912, 0x0000, 0x7521, -/* 037D */ 0x6927, 0x0000, 0x5927, -/* 037E */ 0x6930, 0x0000, 0x652B, -/* 037F */ 0x693D, 0x693F, 0x0A91, -/* 0380 */ 0x694A, 0x0000, 0x6545, -/* 0381 */ 0x6953, 0x695A, 0x0A94, -/* 0382 */ 0x695E, 0x6963, 0x0A9C, -/* 0383 */ 0x6968, 0x696F, 0x0AA2, -/* 0384 */ 0x6975, 0x6979, 0x0AAA, -/* 0385 */ 0x6995, 0x0000, 0x693E, -/* 0386 */ 0x699B, 0x699C, 0x0AAF, -/* 0387 */ 0x69A5, 0x69A7, 0x0AB1, -/* 0388 */ 0x69AE, 0x0000, 0x6734, -/* 0389 */ 0x69B4, 0x0000, 0x5734, -/* 038A */ 0x69BB, 0x0000, 0x7734, -/* 038B */ 0x69C1, 0x69C3, 0x0AB4, -/* 038C */ 0x69CB, 0x69D0, 0x0AB7, -/* 038D */ 0x69E8, 0x69EA, 0x0ABD, -/* 038E */ 0x69FB, 0x6A02, 0x0AC0, -/* 038F */ 0x6A0A, 0x0000, 0x5B60, -/* 0390 */ 0x6A11, 0x6A13, 0x0AC8, -/* 0391 */ 0x6A17, 0x6A19, 0x0ACB, -/* 0392 */ 0x6A1E, 0x6A23, 0x0ACE, -/* 0393 */ 0x6A35, 0x6A3D, 0x0AD4, -/* 0394 */ 0x6A44, 0x0000, 0x4A74, -/* 0395 */ 0x6A48, 0x6A4B, 0x0ADD, -/* 0396 */ 0x6A52, 0x6A53, 0x0AE1, -/* 0397 */ 0x6A58, 0x6A59, 0x0AE3, -/* 0398 */ 0x6A5F, 0x6A61, 0x0AE5, -/* 0399 */ 0x6A6B, 0x0000, 0x7C74, -/* 039A */ 0x6A80, 0x0000, 0x532A, -/* 039B */ 0x6A84, 0x0000, 0x4C2C, -/* 039C */ 0x6A89, 0x0000, 0x6F60, -/* 039D */ 0x6A8D, 0x6A8E, 0x0AE8, -/* 039E */ 0x6A97, 0x0000, 0x5B7C, -/* 039F */ 0x6A9C, 0x0000, 0x7C66, -/* 03A0 */ 0x6AA2, 0x6AA3, 0x0AEA, -/* 03A1 */ 0x6AB3, 0x0000, 0x5E31, -/* 03A2 */ 0x6ABB, 0x0000, 0x7963, -/* 03A3 */ 0x6AC2, 0x6AC3, 0x0AEC, -/* 03A4 */ 0x6AD3, 0x0000, 0x5650, -/* 03A5 */ 0x6ADA, 0x6ADB, 0x0AEE, -/* 03A6 */ 0x6AF6, 0x0000, 0x7A4B, -/* 03A7 */ 0x6AFB, 0x0000, 0x6521, -/* 03A8 */ 0x6B04, 0x0000, 0x5531, -/* 03A9 */ 0x6B0A, 0x6B0C, 0x0AF0, -/* 03AA */ 0x6B12, 0x0000, 0x5532, -/* 03AB */ 0x6B16, 0x0000, 0x553C, -/* 03AC */ 0x6B20, 0x6B23, 0x0AF3, -/* 03AD */ 0x6B32, 0x0000, 0x6930, -/* 03AE */ 0x6B3A, 0x6B3E, 0x0AF7, -/* 03AF */ 0x6B46, 0x6B47, 0x0AFC, -/* 03B0 */ 0x6B4C, 0x6B50, 0x0AFE, -/* 03B1 */ 0x6B5F, 0x6B66, 0x0B03, -/* 03B2 */ 0x6B6A, 0x0000, 0x6860, -/* 03B3 */ 0x6B72, 0x0000, 0x6128, -/* 03B4 */ 0x6B77, 0x6B7B, 0x0B0B, -/* 03B5 */ 0x6B7F, 0x0000, 0x5951, -/* 03B6 */ 0x6B83, 0x6B8A, 0x0B10, -/* 03B7 */ 0x6B96, 0x6B98, 0x0B18, -/* 03B8 */ 0x6B9E, 0x0000, 0x6979, -/* 03B9 */ 0x6BAE, 0x6BC1, 0x0B1B, -/* 03BA */ 0x6BC5, 0x6BC6, 0x0B2F, -/* 03BB */ 0x6BCB, 0x6BD4, 0x0B31, -/* 03BC */ 0x6BDB, 0x0000, 0x593E, -/* 03BD */ 0x6BEB, 0x6BEC, 0x0B3B, -/* 03BE */ 0x6C08, 0x0000, 0x6E7D, -/* 03BF */ 0x6C0F, 0x6C13, 0x0B3D, -/* 03C0 */ 0x6C23, 0x0000, 0x5128, -/* 03C1 */ 0x6C34, 0x6C38, 0x0B42, -/* 03C2 */ 0x6C3E, 0x6C42, 0x0B47, -/* 03C3 */ 0x6C4E, 0x6C50, 0x0B4C, -/* 03C4 */ 0x6C55, 0x6C60, 0x0B4F, -/* 03C5 */ 0x6C68, 0x6C72, 0x0B5B, -/* 03C6 */ 0x6C76, 0x0000, 0x5A21, -/* 03C7 */ 0x6C7A, 0x6C88, 0x0B66, -/* 03C8 */ 0x6C8C, 0x0000, 0x5447, -/* 03C9 */ 0x6C90, 0x6C9B, 0x0B75, -/* 03CA */ 0x6CAB, 0x6CAE, 0x0B81, -/* 03CB */ 0x6CB3, 0x0000, 0x7941, -/* 03CC */ 0x6CB8, 0x6CC4, 0x0B85, -/* 03CD */ 0x6CC9, 0x6CCC, 0x0B92, -/* 03CE */ 0x6CD3, 0x6CD7, 0x0B96, -/* 03CF */ 0x6CDB, 0x0000, 0x5B72, -/* 03D0 */ 0x6CE1, 0x6CF3, 0x0B9B, -/* 03D1 */ 0x6D0B, 0x6D0C, 0x0BAE, -/* 03D2 */ 0x6D11, 0x0000, 0x5C47, -/* 03D3 */ 0x6D17, 0x6D1E, 0x0BB0, -/* 03D4 */ 0x6D25, 0x6D2A, 0x0BB8, -/* 03D5 */ 0x6D32, 0x6D41, 0x0BBE, -/* 03D6 */ 0x6D59, 0x6D5C, 0x0BCE, -/* 03D7 */ 0x6D63, 0x6D6E, 0x0BD2, -/* 03D8 */ 0x6D74, 0x6D79, 0x0BDE, -/* 03D9 */ 0x6D7F, 0x0000, 0x782A, -/* 03DA */ 0x6D85, 0x6D95, 0x0BE4, -/* 03DB */ 0x6DAF, 0x6DB5, 0x0BF5, -/* 03DC */ 0x6DC0, 0x6DC7, 0x0BFC, -/* 03DD */ 0x6DCB, 0x0000, 0x577A, -/* 03DE */ 0x6DCF, 0x6DD1, 0x0C04, -/* 03DF */ 0x6DD8, 0x6DDA, 0x0C07, -/* 03E0 */ 0x6DDE, 0x6DE1, 0x0C0A, -/* 03E1 */ 0x6DE8, 0x6DFB, 0x0C0E, -/* 03E2 */ 0x6E17, 0x6E1B, 0x0C22, -/* 03E3 */ 0x6E1F, 0x6E26, 0x0C27, -/* 03E4 */ 0x6E2B, 0x6E3E, 0x0C2F, -/* 03E5 */ 0x6E43, 0x6E44, 0x0C43, -/* 03E6 */ 0x6E4A, 0x6E4D, 0x0C45, -/* 03E7 */ 0x6E56, 0x6E5F, 0x0C49, -/* 03E8 */ 0x6E67, 0x0000, 0x6940, -/* 03E9 */ 0x6E6B, 0x6E73, 0x0C53, -/* 03EA */ 0x6E7A, 0x0000, 0x5C48, -/* 03EB */ 0x6E90, 0x0000, 0x6A39, -/* 03EC */ 0x6E96, 0x0000, 0x715E, -/* 03ED */ 0x6E9C, 0x6EA5, 0x0C5C, -/* 03EE */ 0x6EAA, 0x6EAB, 0x0C66, -/* 03EF */ 0x6EAF, 0x6EB1, 0x0C68, -/* 03F0 */ 0x6EB6, 0x0000, 0x6941, -/* 03F1 */ 0x6EBA, 0x0000, 0x527C, -/* 03F2 */ 0x6EC2, 0x6EC5, 0x0C6B, -/* 03F3 */ 0x6EC9, 0x6ED4, 0x0C6F, -/* 03F4 */ 0x6EEF, 0x0000, 0x7472, -/* 03F5 */ 0x6EF4, 0x0000, 0x6E59, -/* 03F6 */ 0x6EF8, 0x0000, 0x7B4A, -/* 03F7 */ 0x6EFE, 0x6F02, 0x0C7B, -/* 03F8 */ 0x6F06, 0x0000, 0x7654, -/* 03F9 */ 0x6F0F, 0x6F15, 0x0C80, -/* 03FA */ 0x6F20, 0x6F23, 0x0C87, -/* 03FB */ 0x6F2B, 0x6F2C, 0x0C8B, -/* 03FC */ 0x6F31, 0x6F32, 0x0C8D, -/* 03FD */ 0x6F38, 0x0000, 0x6F42, -/* 03FE */ 0x6F3F, 0x6F41, 0x0C8F, -/* 03FF */ 0x6F51, 0x6F64, 0x0C92, -/* 0400 */ 0x6F6D, 0x6F70, 0x0CA6, -/* 0401 */ 0x6F7A, 0x6F84, 0x0CAA, -/* 0402 */ 0x6F88, 0x0000, 0x744D, -/* 0403 */ 0x6F8D, 0x6F90, 0x0CB5, -/* 0404 */ 0x6F94, 0x6F97, 0x0CB9, -/* 0405 */ 0x6FA3, 0x6FA7, 0x0CBD, -/* 0406 */ 0x6FAE, 0x6FB3, 0x0CC2, -/* 0407 */ 0x6FB9, 0x0000, 0x5342, -/* 0408 */ 0x6FBE, 0x6FC3, 0x0CC8, -/* 0409 */ 0x6FCA, 0x0000, 0x6758, -/* 040A */ 0x6FD5, 0x0000, 0x6325, -/* 040B */ 0x6FDA, 0x0000, 0x6739, -/* 040C */ 0x6FDF, 0x6FE4, 0x0CCE, -/* 040D */ 0x6FE9, 0x6FF1, 0x0CD4, -/* 040E */ 0x6FFE, 0x7001, 0x0CDD, -/* 040F */ 0x7005, 0x700B, 0x0CE1, -/* 0410 */ 0x700F, 0x7011, 0x0CE8, -/* 0411 */ 0x7015, 0x701F, 0x0CEB, -/* 0412 */ 0x7023, 0x0000, 0x7A2E, -/* 0413 */ 0x7027, 0x7028, 0x0CF6, -/* 0414 */ 0x702F, 0x0000, 0x673B, -/* 0415 */ 0x7037, 0x0000, 0x6C4B, -/* 0416 */ 0x703E, 0x0000, 0x5533, -/* 0417 */ 0x704C, 0x0000, 0x4E34, -/* 0418 */ 0x7050, 0x7051, 0x0CF8, -/* 0419 */ 0x7058, 0x0000, 0x7728, -/* 041A */ 0x705D, 0x0000, 0x7B4E, -/* 041B */ 0x7063, 0x0000, 0x583D, -/* 041C */ 0x706B, 0x0000, 0x7B7D, -/* 041D */ 0x7070, 0x0000, 0x7C69, -/* 041E */ 0x7078, 0x0000, 0x4F36, -/* 041F */ 0x707C, 0x707D, 0x0CFA, -/* 0420 */ 0x7085, 0x0000, 0x4C5D, -/* 0421 */ 0x708A, 0x0000, 0x7627, -/* 0422 */ 0x708E, 0x0000, 0x667A, -/* 0423 */ 0x7092, 0x0000, 0x7524, -/* 0424 */ 0x7098, 0x709A, 0x0CFC, -/* 0425 */ 0x70A1, 0x70A4, 0x0CFF, -/* 0426 */ 0x70AB, 0x70AF, 0x0D03, -/* 0427 */ 0x70B3, 0x0000, 0x5C39, -/* 0428 */ 0x70B7, 0x70B9, 0x0D08, -/* 0429 */ 0x70C8, 0x70CB, 0x0D0B, -/* 042A */ 0x70CF, 0x0000, 0x6821, -/* 042B */ 0x70D8, 0x70D9, 0x0D0F, -/* 042C */ 0x70DD, 0x70DF, 0x0D11, -/* 042D */ 0x70F1, 0x0000, 0x4C5E, -/* 042E */ 0x70F9, 0x0000, 0x7832, -/* 042F */ 0x70FD, 0x0000, 0x5C6B, -/* 0430 */ 0x7104, 0x0000, 0x7D36, -/* 0431 */ 0x7109, 0x710C, 0x0D14, -/* 0432 */ 0x7119, 0x711A, 0x0D18, -/* 0433 */ 0x711E, 0x7121, 0x0D1A, -/* 0434 */ 0x7126, 0x0000, 0x7525, -/* 0435 */ 0x7130, 0x0000, 0x667B, -/* 0436 */ 0x7136, 0x0000, 0x6654, -/* 0437 */ 0x7147, 0x7150, 0x0D1E, -/* 0438 */ 0x7156, 0x715E, 0x0D28, -/* 0439 */ 0x7164, 0x716E, 0x0D31, -/* 043A */ 0x717D, 0x0000, 0x6043, -/* 043B */ 0x7184, 0x0000, 0x6358, -/* 043C */ 0x7189, 0x718A, 0x0D3C, -/* 043D */ 0x718F, 0x7194, 0x0D3E, -/* 043E */ 0x7199, 0x0000, 0x7D77, -/* 043F */ 0x719F, 0x71A2, 0x0D44, -/* 0440 */ 0x71AC, 0x0000, 0x6822, -/* 0441 */ 0x71B1, 0x0000, 0x6670, -/* 0442 */ 0x71B9, 0x71BA, 0x0D48, -/* 0443 */ 0x71BE, 0x71C3, 0x0D4A, -/* 0444 */ 0x71C8, 0x71C9, 0x0D50, -/* 0445 */ 0x71CE, 0x71D5, 0x0D52, -/* 0446 */ 0x71DF, 0x0000, 0x673D, -/* 0447 */ 0x71E5, 0x71E7, 0x0D5A, -/* 0448 */ 0x71ED, 0x71EE, 0x0D5D, -/* 0449 */ 0x71FB, 0x7200, 0x0D5F, -/* 044A */ 0x7206, 0x0000, 0x786F, -/* 044B */ 0x7210, 0x0000, 0x5653, -/* 044C */ 0x721B, 0x0000, 0x5534, -/* 044D */ 0x722A, 0x7236, 0x0D65, -/* 044E */ 0x723A, 0x7240, 0x0D72, -/* 044F */ 0x7246, 0x7248, 0x0D79, -/* 0450 */ 0x724C, 0x0000, 0x782B, -/* 0451 */ 0x7252, 0x0000, 0x7460, -/* 0452 */ 0x7258, 0x7262, 0x0D7C, -/* 0453 */ 0x7267, 0x7269, 0x0D87, -/* 0454 */ 0x7272, 0x0000, 0x5F65, -/* 0455 */ 0x7279, 0x0000, 0x7765, -/* 0456 */ 0x727D, 0x7281, 0x0D8A, -/* 0457 */ 0x72A2, 0x0000, 0x543B, -/* 0458 */ 0x72A7, 0x0000, 0x7D7A, -/* 0459 */ 0x72AC, 0x72AF, 0x0D8F, -/* 045A */ 0x72C0, 0x72C4, 0x0D93, -/* 045B */ 0x72CE, 0x72D0, 0x0D98, -/* 045C */ 0x72D7, 0x72D9, 0x0D9B, -/* 045D */ 0x72E1, 0x0000, 0x4E6A, -/* 045E */ 0x72E9, 0x0000, 0x622D, -/* 045F */ 0x72F8, 0x72FD, 0x0D9E, -/* 0460 */ 0x730A, 0x0000, 0x6759, -/* 0461 */ 0x7316, 0x0000, 0x7369, -/* 0462 */ 0x731B, 0x731D, 0x0DA4, -/* 0463 */ 0x7325, 0x0000, 0x6865, -/* 0464 */ 0x7329, 0x732B, 0x0DA7, -/* 0465 */ 0x7336, 0x7337, 0x0DAA, -/* 0466 */ 0x733E, 0x733F, 0x0DAC, -/* 0467 */ 0x7344, 0x7345, 0x0DAE, -/* 0468 */ 0x7350, 0x7352, 0x0DB0, -/* 0469 */ 0x7357, 0x0000, 0x4F71, -/* 046A */ 0x7368, 0x736A, 0x0DB3, -/* 046B */ 0x7370, 0x737B, 0x0DB6, -/* 046C */ 0x7384, 0x738E, 0x0DC2, -/* 046D */ 0x7394, 0x7398, 0x0DCD, -/* 046E */ 0x739F, 0x0000, 0x5A47, -/* 046F */ 0x73A7, 0x73A9, 0x0DD2, -/* 0470 */ 0x73AD, 0x0000, 0x5E37, -/* 0471 */ 0x73B2, 0x73B3, 0x0DD5, -/* 0472 */ 0x73B9, 0x0000, 0x7A5D, -/* 0473 */ 0x73C0, 0x73C2, 0x0DD7, -/* 0474 */ 0x73C9, 0x73CF, 0x0DDA, -/* 0475 */ 0x73D6, 0x73D9, 0x0DE1, -/* 0476 */ 0x73DD, 0x73ED, 0x0DE5, -/* 0477 */ 0x73F7, 0x73F9, 0x0DF6, -/* 0478 */ 0x73FD, 0x7409, 0x0DF9, -/* 0479 */ 0x7413, 0x0000, 0x684D, -/* 047A */ 0x741B, 0x0000, 0x765A, -/* 047B */ 0x7420, 0x743A, 0x0E06, -/* 047C */ 0x743F, 0x7444, 0x0E21, -/* 047D */ 0x744B, 0x0000, 0x6A54, -/* 047E */ 0x7455, 0x746A, 0x0E27, -/* 047F */ 0x746F, 0x0000, 0x554B, -/* 0480 */ 0x747E, 0x0000, 0x5048, -/* 0481 */ 0x7482, 0x7483, 0x0E3D, -/* 0482 */ 0x7487, 0x748B, 0x0E3F, -/* 0483 */ 0x7498, 0x0000, 0x5773, -/* 0484 */ 0x749C, 0x74AA, 0x0E44, -/* 0485 */ 0x74B0, 0x74B5, 0x0E53, -/* 0486 */ 0x74B9, 0x0000, 0x625B, -/* 0487 */ 0x74BD, 0x74BF, 0x0E59, -/* 0488 */ 0x74C6, 0x0000, 0x726F, -/* 0489 */ 0x74CA, 0x0000, 0x4C61, -/* 048A */ 0x74CF, 0x0000, 0x566A, -/* 048B */ 0x74D4, 0x0000, 0x6742, -/* 048C */ 0x74D8, 0x74DC, 0x0E5C, -/* 048D */ 0x74E0, 0x74E6, 0x0E61, -/* 048E */ 0x74EE, 0x0000, 0x6837, -/* 048F */ 0x74F7, 0x0000, 0x6D36, -/* 0490 */ 0x7501, 0x7504, 0x0E68, -/* 0491 */ 0x7511, 0x0000, 0x7177, -/* 0492 */ 0x7515, 0x751B, 0x0E6C, -/* 0493 */ 0x751F, 0x0000, 0x5F66, -/* 0494 */ 0x7523, 0x752C, 0x0E73, -/* 0495 */ 0x7530, 0x7533, 0x0E7D, -/* 0496 */ 0x7537, 0x753A, 0x0E81, -/* 0497 */ 0x7547, 0x0000, 0x5034, -/* 0498 */ 0x754C, 0x7554, 0x0E85, -/* 0499 */ 0x7559, 0x755D, 0x0E8E, -/* 049A */ 0x7562, 0x7566, 0x0E93, -/* 049B */ 0x756A, 0x0000, 0x5B63, -/* 049C */ 0x756F, 0x7570, 0x0E98, -/* 049D */ 0x7575, 0x757A, 0x0E9A, -/* 049E */ 0x757F, 0x0000, 0x5132, -/* 049F */ 0x7586, 0x7591, 0x0EA0, -/* 04A0 */ 0x759D, 0x0000, 0x5F28, -/* 04A1 */ 0x75A5, 0x0000, 0x4B4A, -/* 04A2 */ 0x75AB, 0x0000, 0x6639, -/* 04A3 */ 0x75B1, 0x75BE, 0x0EAC, -/* 04A4 */ 0x75C2, 0x75C7, 0x0EBA, -/* 04A5 */ 0x75CD, 0x0000, 0x6C37, -/* 04A6 */ 0x75D2, 0x75DB, 0x0EC0, -/* 04A7 */ 0x75E2, 0x0000, 0x5765, -/* 04A8 */ 0x75F0, 0x75F4, 0x0ECA, -/* 04A9 */ 0x75FA, 0x75FC, 0x0ECF, -/* 04AA */ 0x7600, 0x0000, 0x655C, -/* 04AB */ 0x760D, 0x0000, 0x654B, -/* 04AC */ 0x7619, 0x0000, 0x6144, -/* 04AD */ 0x761F, 0x7626, 0x0ED2, -/* 04AE */ 0x763B, 0x0000, 0x572A, -/* 04AF */ 0x7642, 0x0000, 0x567B, -/* 04B0 */ 0x764C, 0x764E, 0x0EDA, -/* 04B1 */ 0x7652, 0x0000, 0x6B28, -/* 04B2 */ 0x7656, 0x0000, 0x5B7E, -/* 04B3 */ 0x7661, 0x7664, 0x0EDD, -/* 04B4 */ 0x7669, 0x766C, 0x0EE1, -/* 04B5 */ 0x7670, 0x7672, 0x0EE5, -/* 04B6 */ 0x7678, 0x767E, 0x0EE8, -/* 04B7 */ 0x7684, 0x7687, 0x0EEF, -/* 04B8 */ 0x768E, 0x7693, 0x0EF3, -/* 04B9 */ 0x76AE, 0x0000, 0x792B, -/* 04BA */ 0x76BA, 0x0000, 0x7554, -/* 04BB */ 0x76BF, 0x76CA, 0x0EF9, -/* 04BC */ 0x76D2, 0x0000, 0x796C, -/* 04BD */ 0x76D6, 0x0000, 0x4B4C, -/* 04BE */ 0x76DB, 0x76E7, 0x0F05, -/* 04BF */ 0x76EE, 0x0000, 0x594D, -/* 04C0 */ 0x76F2, 0x76F4, 0x0F12, -/* 04C1 */ 0x76F8, 0x0000, 0x5F53, -/* 04C2 */ 0x76FC, 0x7704, 0x0F15, -/* 04C3 */ 0x7708, 0x770B, 0x0F1E, -/* 04C4 */ 0x771E, 0x7720, 0x0F22, -/* 04C5 */ 0x7729, 0x0000, 0x7A5F, -/* 04C6 */ 0x7737, 0x773C, 0x0F25, -/* 04C7 */ 0x7740, 0x0000, 0x7337, -/* 04C8 */ 0x774D, 0x0000, 0x7A60, -/* 04C9 */ 0x775B, 0x0000, 0x6F6C, -/* 04CA */ 0x7761, 0x7766, 0x0F2B, -/* 04CB */ 0x776B, 0x0000, 0x7462, -/* 04CC */ 0x7779, 0x0000, 0x5429, -/* 04CD */ 0x777E, 0x777F, 0x0F31, -/* 04CE */ 0x778B, 0x0000, 0x7259, -/* 04CF */ 0x7791, 0x0000, 0x592A, -/* 04D0 */ 0x779E, 0x0000, 0x583E, -/* 04D1 */ 0x77A5, 0x0000, 0x5C2D, -/* 04D2 */ 0x77AC, 0x77B3, 0x0F33, -/* 04D3 */ 0x77BB, 0x77BF, 0x0F3B, -/* 04D4 */ 0x77D7, 0x0000, 0x7538, -/* 04D5 */ 0x77DB, 0x77DC, 0x0F40, -/* 04D6 */ 0x77E2, 0x77E5, 0x0F42, -/* 04D7 */ 0x77E9, 0x0000, 0x4F3B, -/* 04D8 */ 0x77ED, 0x77EF, 0x0F46, -/* 04D9 */ 0x77F3, 0x0000, 0x6034, -/* 04DA */ 0x7802, 0x0000, 0x5E63, -/* 04DB */ 0x7812, 0x0000, 0x5D77, -/* 04DC */ 0x7825, 0x7827, 0x0F49, -/* 04DD */ 0x782C, 0x0000, 0x577E, -/* 04DE */ 0x7832, 0x7834, 0x0F4C, -/* 04DF */ 0x7845, 0x0000, 0x5029, -/* 04E0 */ 0x784F, 0x0000, 0x665A, -/* 04E1 */ 0x785D, 0x0000, 0x7526, -/* 04E2 */ 0x786B, 0x786F, 0x0F4F, -/* 04E3 */ 0x787C, 0x0000, 0x5D5D, -/* 04E4 */ 0x7881, 0x0000, 0x5133, -/* 04E5 */ 0x7887, 0x0000, 0x6F6D, -/* 04E6 */ 0x788C, 0x7891, 0x0F54, -/* 04E7 */ 0x7897, 0x0000, 0x684F, -/* 04E8 */ 0x78A3, 0x0000, 0x4A65, -/* 04E9 */ 0x78A7, 0x78A9, 0x0F5A, -/* 04EA */ 0x78BA, 0x78BC, 0x0F5D, -/* 04EB */ 0x78C1, 0x0000, 0x6D38, -/* 04EC */ 0x78C5, 0x0000, 0x5B36, -/* 04ED */ 0x78CA, 0x78D0, 0x0F60, -/* 04EE */ 0x78E8, 0x0000, 0x5828, -/* 04EF */ 0x78EC, 0x78EF, 0x0F67, -/* 04F0 */ 0x78F5, 0x0000, 0x4A58, -/* 04F1 */ 0x78FB, 0x0000, 0x5A72, -/* 04F2 */ 0x7901, 0x0000, 0x7527, -/* 04F3 */ 0x790E, 0x0000, 0x7528, -/* 04F4 */ 0x7916, 0x0000, 0x6626, -/* 04F5 */ 0x792A, 0x792C, 0x0F6B, -/* 04F6 */ 0x793A, 0x0000, 0x6346, -/* 04F7 */ 0x793E, 0x7941, 0x0F6E, -/* 04F8 */ 0x7947, 0x7949, 0x0F72, -/* 04F9 */ 0x7950, 0x0000, 0x695E, -/* 04FA */ 0x7956, 0x7960, 0x0F75, -/* 04FB */ 0x7965, 0x7968, 0x0F80, -/* 04FC */ 0x796D, 0x0000, 0x702E, -/* 04FD */ 0x797A, 0x0000, 0x5138, -/* 04FE */ 0x797F, 0x7981, 0x0F84, -/* 04FF */ 0x798D, 0x7991, 0x0F87, -/* 0500 */ 0x79A6, 0x79AA, 0x0F8C, -/* 0501 */ 0x79AE, 0x79B3, 0x0F91, -/* 0502 */ 0x79B9, 0x0000, 0x6960, -/* 0503 */ 0x79BD, 0x79C1, 0x0F97, -/* 0504 */ 0x79C9, 0x79CB, 0x0F9C, -/* 0505 */ 0x79D1, 0x79D8, 0x0F9F, -/* 0506 */ 0x79DF, 0x0000, 0x7055, -/* 0507 */ 0x79E4, 0x79E9, 0x0FA7, -/* 0508 */ 0x79FB, 0x0000, 0x6C39, -/* 0509 */ 0x7A00, 0x0000, 0x7D7C, -/* 050A */ 0x7A05, 0x7A0D, 0x0FAD, -/* 050B */ 0x7A14, 0x7A20, 0x0FB6, -/* 050C */ 0x7A2E, 0x7A31, 0x0FC3, -/* 050D */ 0x7A36, 0x7A37, 0x0FC7, -/* 050E */ 0x7A3B, 0x7A40, 0x0FC9, -/* 050F */ 0x7A46, 0x7A49, 0x0FCF, -/* 0510 */ 0x7A4D, 0x7A4E, 0x0FD3, -/* 0511 */ 0x7A57, 0x0000, 0x6234, -/* 0512 */ 0x7A61, 0x7A62, 0x0FD5, -/* 0513 */ 0x7A69, 0x7A6B, 0x0FD7, -/* 0514 */ 0x7A70, 0x0000, 0x654D, -/* 0515 */ 0x7A74, 0x7A84, 0x0FDA, -/* 0516 */ 0x7A88, 0x0000, 0x6921, -/* 0517 */ 0x7A92, 0x7A98, 0x0FEB, -/* 0518 */ 0x7A9F, 0x0000, 0x4F5F, -/* 0519 */ 0x7AA9, 0x7AAA, 0x0FF2, -/* 051A */ 0x7AAE, 0x7AAF, 0x0FF4, -/* 051B */ 0x7ABA, 0x0000, 0x502A, -/* 051C */ 0x7AC4, 0x7ACB, 0x0FF6, -/* 051D */ 0x7AD7, 0x7AD9, 0x0FFE, -/* 051E */ 0x7ADD, 0x7AE5, 0x1001, -/* 051F */ 0x7AEA, 0x7AEF, 0x100A, -/* 0520 */ 0x7AF6, 0x7AFA, 0x1010, -/* 0521 */ 0x7AFF, 0x0000, 0x4A5A, -/* 0522 */ 0x7B0F, 0x7B11, 0x1015, -/* 0523 */ 0x7B19, 0x7B20, 0x1018, -/* 0524 */ 0x7B26, 0x0000, 0x5D2C, -/* 0525 */ 0x7B2C, 0x7B2D, 0x1020, -/* 0526 */ 0x7B39, 0x0000, 0x612B, -/* 0527 */ 0x7B46, 0x7B56, 0x1022, -/* 0528 */ 0x7B60, 0x0000, 0x5035, -/* 0529 */ 0x7B6C, 0x7B6E, 0x1033, -/* 052A */ 0x7B75, 0x0000, 0x665D, -/* 052B */ 0x7B7D, 0x0000, 0x6824, -/* 052C */ 0x7B87, 0x0000, 0x4B4D, -/* 052D */ 0x7B8B, 0x0000, 0x6F28, -/* 052E */ 0x7B8F, 0x0000, 0x6E34, -/* 052F */ 0x7B94, 0x7B9D, 0x1036, -/* 0530 */ 0x7BA1, 0x0000, 0x4E37, -/* 0531 */ 0x7BAD, 0x0000, 0x6F29, -/* 0532 */ 0x7BB1, 0x7BB4, 0x1040, -/* 0533 */ 0x7BB8, 0x0000, 0x6E46, -/* 0534 */ 0x7BC0, 0x7BC9, 0x1044, -/* 0535 */ 0x7BD2, 0x0000, 0x6359, -/* 0536 */ 0x7BE0, 0x0000, 0x6146, -/* 0537 */ 0x7BE4, 0x0000, 0x543F, -/* 0538 */ 0x7BE9, 0x0000, 0x5E68, -/* 0539 */ 0x7C07, 0x0000, 0x706A, -/* 053A */ 0x7C12, 0x0000, 0x7342, -/* 053B */ 0x7C1E, 0x7C21, 0x104E, -/* 053C */ 0x7C27, 0x7C2B, 0x1052, -/* 053D */ 0x7C3D, 0x7C3F, 0x1057, -/* 053E */ 0x7C43, 0x0000, 0x553E, -/* 053F */ 0x7C4C, 0x7C4D, 0x105A, -/* 0540 */ 0x7C60, 0x0000, 0x566B, -/* 0541 */ 0x7C64, 0x0000, 0x7459, -/* 0542 */ 0x7C6C, 0x0000, 0x5766, -/* 0543 */ 0x7C73, 0x0000, 0x5A37, -/* 0544 */ 0x7C83, 0x0000, 0x5D7B, -/* 0545 */ 0x7C89, 0x0000, 0x5D4F, -/* 0546 */ 0x7C92, 0x7C98, 0x105C, -/* 0547 */ 0x7C9F, 0x0000, 0x6158, -/* 0548 */ 0x7CA5, 0x7CA7, 0x1063, -/* 0549 */ 0x7CAE, 0x7CB3, 0x1066, -/* 054A */ 0x7CB9, 0x0000, 0x6236, -/* 054B */ 0x7CBE, 0x0000, 0x6F71, -/* 054C */ 0x7CCA, 0x0000, 0x7B55, -/* 054D */ 0x7CD6, 0x0000, 0x5358, -/* 054E */ 0x7CDE, 0x7CE0, 0x106C, -/* 054F */ 0x7CE7, 0x0000, 0x555D, -/* 0550 */ 0x7CFB, 0x7D10, 0x106F, -/* 0551 */ 0x7D14, 0x7D1B, 0x1085, -/* 0552 */ 0x7D20, 0x7D22, 0x108D, -/* 0553 */ 0x7D2B, 0x7D35, 0x1090, -/* 0554 */ 0x7D39, 0x7D3A, 0x109B, -/* 0555 */ 0x7D42, 0x7D46, 0x109D, -/* 0556 */ 0x7D50, 0x0000, 0x4C3F, -/* 0557 */ 0x7D5E, 0x7D62, 0x10A2, -/* 0558 */ 0x7D66, 0x7D6A, 0x10A7, -/* 0559 */ 0x7D6E, 0x7D79, 0x10AC, -/* 055A */ 0x7D7F, 0x0000, 0x4F3D, -/* 055B */ 0x7D8E, 0x7D8F, 0x10B8, -/* 055C */ 0x7D93, 0x0000, 0x4C68, -/* 055D */ 0x7D9C, 0x0000, 0x707C, -/* 055E */ 0x7DA0, 0x7DA2, 0x10BA, -/* 055F */ 0x7DAC, 0x7DAD, 0x10BD, -/* 0560 */ 0x7DB1, 0x7DBF, 0x10BF, -/* 0561 */ 0x7DC7, 0x7DCB, 0x10CE, -/* 0562 */ 0x7DD6, 0x7DE3, 0x10D3, -/* 0563 */ 0x7DE8, 0x7DEF, 0x10E1, -/* 0564 */ 0x7DF4, 0x0000, 0x5623, -/* 0565 */ 0x7DFB, 0x0000, 0x7646, -/* 0566 */ 0x7E09, 0x7E0A, 0x10E9, -/* 0567 */ 0x7E15, 0x0000, 0x6832, -/* 0568 */ 0x7E1B, 0x7E23, 0x10EB, -/* 0569 */ 0x7E2B, 0x7E31, 0x10F4, -/* 056A */ 0x7E37, 0x0000, 0x572C, -/* 056B */ 0x7E3D, 0x7E47, 0x10FB, -/* 056C */ 0x7E52, 0x7E55, 0x1106, -/* 056D */ 0x7E5E, 0x7E61, 0x110A, -/* 056E */ 0x7E69, 0x7E70, 0x110E, -/* 056F */ 0x7E79, 0x7E7C, 0x1116, -/* 0570 */ 0x7E82, 0x0000, 0x7343, -/* 0571 */ 0x7E8C, 0x7E8F, 0x111A, -/* 0572 */ 0x7E93, 0x7E9C, 0x111E, -/* 0573 */ 0x7F36, 0x7F3A, 0x1128, -/* 0574 */ 0x7F4C, 0x0000, 0x6522, -/* 0575 */ 0x7F50, 0x0000, 0x4E38, -/* 0576 */ 0x7F54, 0x7F55, 0x112D, -/* 0577 */ 0x7F6A, 0x7F79, 0x112F, -/* 0578 */ 0x7F85, 0x7F8E, 0x113F, -/* 0579 */ 0x7F94, 0x0000, 0x4D44, -/* 057A */ 0x7F9A, 0x0000, 0x563E, -/* 057B */ 0x7F9E, 0x0000, 0x623A, -/* 057C */ 0x7FA4, 0x0000, 0x4F58, -/* 057D */ 0x7FA8, 0x7FA9, 0x1149, -/* 057E */ 0x7FB2, 0x0000, 0x7D7D, -/* 057F */ 0x7FB8, 0x7FB9, 0x114B, -/* 0580 */ 0x7FBD, 0x0000, 0x6962, -/* 0581 */ 0x7FC1, 0x0000, 0x683A, -/* 0582 */ 0x7FC5, 0x0000, 0x6347, -/* 0583 */ 0x7FCA, 0x7FCE, 0x114D, -/* 0584 */ 0x7FD2, 0x7FD5, 0x1152, -/* 0585 */ 0x7FDF, 0x7FE1, 0x1156, -/* 0586 */ 0x7FE9, 0x7FEB, 0x1159, -/* 0587 */ 0x7FF0, 0x0000, 0x7957, -/* 0588 */ 0x7FF9, 0x7FFC, 0x115C, -/* 0589 */ 0x8000, 0x800C, 0x1160, -/* 058A */ 0x8010, 0x0000, 0x5231, -/* 058B */ 0x8015, 0x8018, 0x116D, -/* 058C */ 0x802D, 0x0000, 0x513E, -/* 058D */ 0x8033, 0x8036, 0x1171, -/* 058E */ 0x803D, 0x803F, 0x1175, -/* 058F */ 0x8043, 0x8046, 0x1178, -/* 0590 */ 0x804A, 0x0000, 0x567D, -/* 0591 */ 0x8056, 0x805A, 0x117C, -/* 0592 */ 0x805E, 0x0000, 0x5A24, -/* 0593 */ 0x806F, 0x8073, 0x1181, -/* 0594 */ 0x8077, 0x0000, 0x7245, -/* 0595 */ 0x807D, 0x807F, 0x1186, -/* 0596 */ 0x8084, 0x808C, 0x1189, -/* 0597 */ 0x8096, 0x0000, 0x752B, -/* 0598 */ 0x809B, 0x809D, 0x1192, -/* 0599 */ 0x80A1, 0x80A5, 0x1195, -/* 059A */ 0x80A9, 0x80AA, 0x119A, -/* 059B */ 0x80AF, 0x80B4, 0x119C, -/* 059C */ 0x80BA, 0x0000, 0x784B, -/* 059D */ 0x80C3, 0x80C4, 0x11A2, -/* 059E */ 0x80CC, 0x80CE, 0x11A4, -/* 059F */ 0x80DA, 0x80E5, 0x11A7, -/* 05A0 */ 0x80F1, 0x80F4, 0x11B3, -/* 05A1 */ 0x80F8, 0x0000, 0x7D58, -/* 05A2 */ 0x80FD, 0x0000, 0x5276, -/* 05A3 */ 0x8102, 0x810A, 0x11B7, -/* 05A4 */ 0x8118, 0x811B, 0x11C0, -/* 05A5 */ 0x8123, 0x0000, 0x626E, -/* 05A6 */ 0x8129, 0x812B, 0x11C4, -/* 05A7 */ 0x812F, 0x0000, 0x7861, -/* 05A8 */ 0x8139, 0x0000, 0x736C, -/* 05A9 */ 0x813E, 0x0000, 0x5E21, -/* 05AA */ 0x814B, 0x8155, 0x11C7, -/* 05AB */ 0x8165, 0x8166, 0x11D2, -/* 05AC */ 0x816B, 0x0000, 0x707E, -/* 05AD */ 0x8170, 0x8171, 0x11D4, -/* 05AE */ 0x8178, 0x817A, 0x11D6, -/* 05AF */ 0x817F, 0x8180, 0x11D9, -/* 05B0 */ 0x8188, 0x818A, 0x11DB, -/* 05B1 */ 0x818F, 0x0000, 0x4D47, -/* 05B2 */ 0x819A, 0x81A3, 0x11DE, -/* 05B3 */ 0x81A8, 0x0000, 0x7833, -/* 05B4 */ 0x81B3, 0x81B5, 0x11E8, -/* 05B5 */ 0x81BA, 0x81C2, 0x11EB, -/* 05B6 */ 0x81C6, 0x0000, 0x6566, -/* 05B7 */ 0x81CD, 0x0000, 0x7030, -/* 05B8 */ 0x81D8, 0x0000, 0x5544, -/* 05B9 */ 0x81DF, 0x0000, 0x6D74, -/* 05BA */ 0x81E3, 0x81ED, 0x11F4, -/* 05BB */ 0x81F3, 0x81F4, 0x11FF, -/* 05BC */ 0x81FA, 0x81FE, 0x1201, -/* 05BD */ 0x8205, 0x820D, 0x1206, -/* 05BE */ 0x8212, 0x0000, 0x6022, -/* 05BF */ 0x821B, 0x8221, 0x120F, -/* 05C0 */ 0x822A, 0x822C, 0x1216, -/* 05C1 */ 0x8235, 0x8239, 0x1219, -/* 05C2 */ 0x8240, 0x0000, 0x5D32, -/* 05C3 */ 0x8245, 0x8247, 0x121E, -/* 05C4 */ 0x8259, 0x0000, 0x736D, -/* 05C5 */ 0x8264, 0x8266, 0x1221, -/* 05C6 */ 0x826E, 0x8272, 0x1224, -/* 05C7 */ 0x8276, 0x8278, 0x1229, -/* 05C8 */ 0x827E, 0x0000, 0x6475, -/* 05C9 */ 0x828B, 0x828E, 0x122C, -/* 05CA */ 0x8292, 0x0000, 0x5853, -/* 05CB */ 0x8299, 0x829F, 0x1230, -/* 05CC */ 0x82A5, 0x82B3, 0x1237, -/* 05CD */ 0x82B7, 0x82BF, 0x1246, -/* 05CE */ 0x82D1, 0x82D7, 0x124F, -/* 05CF */ 0x82DB, 0x82E1, 0x1256, -/* 05D0 */ 0x82E5, 0x82E7, 0x125D, -/* 05D1 */ 0x82F1, 0x0000, 0x6748, -/* 05D2 */ 0x82FD, 0x8305, 0x1260, -/* 05D3 */ 0x8309, 0x0000, 0x5849, -/* 05D4 */ 0x8317, 0x0000, 0x592B, -/* 05D5 */ 0x8328, 0x832B, 0x1269, -/* 05D6 */ 0x832F, 0x8339, 0x126D, -/* 05D7 */ 0x8340, 0x0000, 0x6270, -/* 05D8 */ 0x8347, 0x834A, 0x1278, -/* 05D9 */ 0x834F, 0x8352, 0x127C, -/* 05DA */ 0x8373, 0x0000, 0x5465, -/* 05DB */ 0x8377, 0x0000, 0x7943, -/* 05DC */ 0x837B, 0x0000, 0x6E62, -/* 05DD */ 0x8389, 0x838A, 0x1280, -/* 05DE */ 0x838E, 0x0000, 0x5E6D, -/* 05DF */ 0x8396, 0x8398, 0x1282, -/* 05E0 */ 0x839E, 0x0000, 0x6854, -/* 05E1 */ 0x83A2, 0x0000, 0x7A78, -/* 05E2 */ 0x83A9, 0x83AB, 0x1285, -/* 05E3 */ 0x83BD, 0x0000, 0x5855, -/* 05E4 */ 0x83C1, 0x0000, 0x746A, -/* 05E5 */ 0x83C5, 0x0000, 0x4E39, -/* 05E6 */ 0x83C9, 0x83CC, 0x1288, -/* 05E7 */ 0x83D3, 0x83D6, 0x128C, -/* 05E8 */ 0x83DC, 0x0000, 0x7378, -/* 05E9 */ 0x83E9, 0x83EB, 0x1290, -/* 05EA */ 0x83EF, 0x83F4, 0x1293, -/* 05EB */ 0x83F9, 0x0000, 0x6E49, -/* 05EC */ 0x83FD, 0x0000, 0x625D, -/* 05ED */ 0x8403, 0x8404, 0x1299, -/* 05EE */ 0x840A, 0x840E, 0x129B, -/* 05EF */ 0x8429, 0x842C, 0x12A0, -/* 05F0 */ 0x8431, 0x0000, 0x7D40, -/* 05F1 */ 0x8438, 0x0000, 0x6B2D, -/* 05F2 */ 0x843D, 0x0000, 0x552A, -/* 05F3 */ 0x8449, 0x0000, 0x6728, -/* 05F4 */ 0x8457, 0x0000, 0x6E4A, -/* 05F5 */ 0x845B, 0x0000, 0x4A67, -/* 05F6 */ 0x8461, 0x8466, 0x12A4, -/* 05F7 */ 0x846B, 0x846F, 0x12AA, -/* 05F8 */ 0x8475, 0x0000, 0x502D, -/* 05F9 */ 0x847A, 0x0000, 0x7171, -/* 05FA */ 0x8490, 0x0000, 0x623D, -/* 05FB */ 0x8494, 0x0000, 0x6348, -/* 05FC */ 0x8499, 0x849C, 0x12AF, -/* 05FD */ 0x84A1, 0x0000, 0x5B3C, -/* 05FE */ 0x84B2, 0x0000, 0x7864, -/* 05FF */ 0x84B8, 0x84CD, 0x12B3, -/* 0600 */ 0x84D1, 0x0000, 0x5E6E, -/* 0601 */ 0x84DA, 0x0000, 0x623E, -/* 0602 */ 0x84EC, 0x84EE, 0x12C9, -/* 0603 */ 0x84F4, 0x0000, 0x6271, -/* 0604 */ 0x84FC, 0x0000, 0x567E, -/* 0605 */ 0x8511, 0x851A, 0x12CC, -/* 0606 */ 0x851E, 0x8525, 0x12D6, -/* 0607 */ 0x852C, 0x852F, 0x12DE, -/* 0608 */ 0x853D, 0x8543, 0x12E2, -/* 0609 */ 0x8549, 0x0000, 0x752F, -/* 060A */ 0x854E, 0x0000, 0x4E70, -/* 060B */ 0x8553, 0x0000, 0x697E, -/* 060C */ 0x8559, 0x0000, 0x7B36, -/* 060D */ 0x8563, 0x0000, 0x6272, -/* 060E */ 0x8568, 0x856D, 0x12E9, -/* 060F */ 0x8584, 0x8587, 0x12EF, -/* 0610 */ 0x858F, 0x8594, 0x12F3, -/* 0611 */ 0x859B, 0x0000, 0x6060, -/* 0612 */ 0x85A6, 0x85AA, 0x12F9, -/* 0613 */ 0x85AF, 0x85B0, 0x12FE, -/* 0614 */ 0x85BA, 0x0000, 0x7031, -/* 0615 */ 0x85C1, 0x0000, 0x4D4B, -/* 0616 */ 0x85C9, 0x0000, 0x6D3E, -/* 0617 */ 0x85CD, 0x85CF, 0x1300, -/* 0618 */ 0x85D5, 0x0000, 0x6964, -/* 0619 */ 0x85DC, 0x85DD, 0x1303, -/* 061A */ 0x85E4, 0x85E5, 0x1305, -/* 061B */ 0x85E9, 0x85EA, 0x1307, -/* 061C */ 0x85F7, 0x85FB, 0x1309, -/* 061D */ 0x85FF, 0x8602, 0x130E, -/* 061E */ 0x8606, 0x860A, 0x1312, -/* 061F */ 0x8616, 0x861A, 0x1317, -/* 0620 */ 0x862D, 0x0000, 0x5535, -/* 0621 */ 0x863F, 0x0000, 0x5521, -/* 0622 */ 0x864E, 0x8650, 0x131C, -/* 0623 */ 0x8654, 0x8655, 0x131F, -/* 0624 */ 0x865B, 0x865F, 0x1321, -/* 0625 */ 0x8667, 0x0000, 0x7D50, -/* 0626 */ 0x8679, 0x0000, 0x7B76, -/* 0627 */ 0x868A, 0x868C, 0x1326, -/* 0628 */ 0x8693, 0x0000, 0x6C62, -/* 0629 */ 0x86A3, 0x86A4, 0x1329, -/* 062A */ 0x86A9, 0x0000, 0x7649, -/* 062B */ 0x86C7, 0x0000, 0x5E6F, -/* 062C */ 0x86CB, 0x0000, 0x5331, -/* 062D */ 0x86D4, 0x0000, 0x7C6E, -/* 062E */ 0x86D9, 0x86DB, 0x132B, -/* 062F */ 0x86DF, 0x0000, 0x4E71, -/* 0630 */ 0x86E4, 0x0000, 0x796D, -/* 0631 */ 0x86ED, 0x0000, 0x7274, -/* 0632 */ 0x86FE, 0x8703, 0x132E, -/* 0633 */ 0x8708, 0x0000, 0x6825, -/* 0634 */ 0x8718, 0x871C, 0x1334, -/* 0635 */ 0x874E, 0x0000, 0x4A69, -/* 0636 */ 0x8755, 0x8757, 0x1339, -/* 0637 */ 0x875F, 0x0000, 0x6A5A, -/* 0638 */ 0x8766, 0x8768, 0x133C, -/* 0639 */ 0x8774, 0x8778, 0x133F, -/* 063A */ 0x8782, 0x0000, 0x554C, -/* 063B */ 0x878D, 0x0000, 0x6B57, -/* 063C */ 0x879F, 0x87A2, 0x1344, -/* 063D */ 0x87B3, 0x0000, 0x5359, -/* 063E */ 0x87BA, 0x0000, 0x5522, -/* 063F */ 0x87C4, 0x0000, 0x765E, -/* 0640 */ 0x87E0, 0x0000, 0x5A76, -/* 0641 */ 0x87EC, 0x87F2, 0x1348, -/* 0642 */ 0x87F9, 0x87FE, 0x134F, -/* 0643 */ 0x8805, 0x0000, 0x6332, -/* 0644 */ 0x881F, 0x8823, 0x1355, -/* 0645 */ 0x8831, 0x0000, 0x4D4C, -/* 0646 */ 0x8836, 0x0000, 0x6D59, -/* 0647 */ 0x883B, 0x0000, 0x5841, -/* 0648 */ 0x8840, 0x0000, 0x7A6C, -/* 0649 */ 0x8846, 0x0000, 0x716B, -/* 064A */ 0x884C, 0x884D, 0x135A, -/* 064B */ 0x8852, 0x8853, 0x135C, -/* 064C */ 0x8857, 0x885D, 0x135E, -/* 064D */ 0x8861, 0x8863, 0x1365, -/* 064E */ 0x8868, 0x886B, 0x1368, -/* 064F */ 0x8870, 0x8872, 0x136C, -/* 0650 */ 0x8877, 0x0000, 0x757B, -/* 0651 */ 0x887E, 0x8882, 0x136F, -/* 0652 */ 0x8888, 0x888D, 0x1374, -/* 0653 */ 0x8892, 0x0000, 0x5332, -/* 0654 */ 0x8896, 0x8897, 0x137A, -/* 0655 */ 0x889E, 0x0000, 0x4D65, -/* 0656 */ 0x88AB, 0x0000, 0x792C, -/* 0657 */ 0x88B4, 0x0000, 0x4D4D, -/* 0658 */ 0x88C1, 0x88C2, 0x137C, -/* 0659 */ 0x88CF, 0x0000, 0x576A, -/* 065A */ 0x88D4, 0x88D5, 0x137E, -/* 065B */ 0x88D9, 0x88E1, 0x1380, -/* 065C */ 0x88E8, 0x0000, 0x5E25, -/* 065D */ 0x88F3, 0x88F8, 0x1389, -/* 065E */ 0x88FD, 0x0000, 0x7032, -/* 065F */ 0x8907, 0x0000, 0x5C5C, -/* 0660 */ 0x8910, 0x8913, 0x138F, -/* 0661 */ 0x8918, 0x8919, 0x1393, -/* 0662 */ 0x8925, 0x0000, 0x6933, -/* 0663 */ 0x892A, 0x0000, 0x775B, -/* 0664 */ 0x8936, 0x893B, 0x1395, -/* 0665 */ 0x8941, 0x8944, 0x139B, -/* 0666 */ 0x895F, 0x0000, 0x505C, -/* 0667 */ 0x8964, 0x0000, 0x5541, -/* 0668 */ 0x896A, 0x0000, 0x584A, -/* 0669 */ 0x8972, 0x0000, 0x6329, -/* 066A */ 0x897F, 0x8987, 0x139F, -/* 066B */ 0x898B, 0x0000, 0x4C38, -/* 066C */ 0x898F, 0x0000, 0x502E, -/* 066D */ 0x8993, 0x8996, 0x13A8, -/* 066E */ 0x89A1, 0x0000, 0x4C2F, -/* 066F */ 0x89A9, 0x89AA, 0x13AC, -/* 0670 */ 0x89B2, 0x0000, 0x504C, -/* 0671 */ 0x89BA, 0x89C0, 0x13AE, -/* 0672 */ 0x89D2, 0x0000, 0x4A47, -/* 0673 */ 0x89E3, 0x0000, 0x7A30, -/* 0674 */ 0x89F4, 0x0000, 0x5F58, -/* 0675 */ 0x89F8, 0x0000, 0x753A, -/* 0676 */ 0x8A00, 0x8A03, 0x13B5, -/* 0677 */ 0x8A08, 0x8A0E, 0x13B9, -/* 0678 */ 0x8A13, 0x8A1F, 0x13C0, -/* 0679 */ 0x8A23, 0x8A25, 0x13CD, -/* 067A */ 0x8A2A, 0x8A2D, 0x13D0, -/* 067B */ 0x8A31, 0x8A36, 0x13D4, -/* 067C */ 0x8A3A, 0x8A3B, 0x13DA, -/* 067D */ 0x8A50, 0x0000, 0x5E71, -/* 067E */ 0x8A54, 0x8A55, 0x13DC, -/* 067F */ 0x8A5B, 0x8A69, 0x13DE, -/* 0680 */ 0x8A6D, 0x8A75, 0x13ED, -/* 0681 */ 0x8A79, 0x0000, 0x745A, -/* 0682 */ 0x8A85, 0x8A87, 0x13F6, -/* 0683 */ 0x8A8C, 0x8A8D, 0x13F9, -/* 0684 */ 0x8A93, 0x8A98, 0x13FB, -/* 0685 */ 0x8A9E, 0x8AAA, 0x1401, -/* 0686 */ 0x8AB0, 0x8AB2, 0x140E, -/* 0687 */ 0x8AB9, 0x8AC7, 0x1411, -/* 0688 */ 0x8ACB, 0x8AD2, 0x1420, -/* 0689 */ 0x8AD6, 0x0000, 0x5665, -/* 068A */ 0x8ADB, 0x8ADC, 0x1428, -/* 068B */ 0x8AE1, 0x0000, 0x634D, -/* 068C */ 0x8AE6, 0x8AF1, 0x142A, -/* 068D */ 0x8AF6, 0x8AFA, 0x1436, -/* 068E */ 0x8AFE, 0x8B04, 0x143B, -/* 068F */ 0x8B0E, 0x8B10, 0x1442, -/* 0690 */ 0x8B14, 0x8B20, 0x1445, -/* 0691 */ 0x8B28, 0x8B2C, 0x1452, -/* 0692 */ 0x8B33, 0x0000, 0x4F44, -/* 0693 */ 0x8B39, 0x0000, 0x504D, -/* 0694 */ 0x8B41, 0x0000, 0x7C26, -/* 0695 */ 0x8B49, 0x0000, 0x717B, -/* 0696 */ 0x8B4E, 0x8B4F, 0x1457, -/* 0697 */ 0x8B58, 0x8B5C, 0x1459, -/* 0698 */ 0x8B66, 0x0000, 0x4C6D, -/* 0699 */ 0x8B6C, 0x8B70, 0x145E, -/* 069A */ 0x8B74, 0x8B77, 0x1463, -/* 069B */ 0x8B7D, 0x8B80, 0x1467, -/* 069C */ 0x8B8A, 0x0000, 0x5C28, -/* 069D */ 0x8B90, 0x8B96, 0x146B, -/* 069E */ 0x8B9A, 0x0000, 0x7346, -/* 069F */ 0x8C37, 0x0000, 0x4D5B, -/* 06A0 */ 0x8C3F, 0x8C41, 0x1472, -/* 06A1 */ 0x8C46, 0x8C4C, 0x1475, -/* 06A2 */ 0x8C55, 0x0000, 0x634E, -/* 06A3 */ 0x8C5A, 0x0000, 0x544A, -/* 06A4 */ 0x8C61, 0x0000, 0x5F5A, -/* 06A5 */ 0x8C6A, 0x8C6B, 0x147C, -/* 06A6 */ 0x8C79, 0x8C7A, 0x147E, -/* 06A7 */ 0x8C82, 0x0000, 0x7530, -/* 06A8 */ 0x8C8A, 0x8C8C, 0x1480, -/* 06A9 */ 0x8C9D, 0x8CA2, 0x1483, -/* 06AA */ 0x8CA7, 0x8CCA, 0x1489, -/* 06AB */ 0x8CD1, 0x8CD3, 0x14AD, -/* 06AC */ 0x8CDA, 0x8CE6, 0x14B0, -/* 06AD */ 0x8CEA, 0x8CED, 0x14BD, -/* 06AE */ 0x8CF4, 0x0000, 0x5673, -/* 06AF */ 0x8CFB, 0x8CFD, 0x14C1, -/* 06B0 */ 0x8D04, 0x8D0D, 0x14C4, -/* 06B1 */ 0x8D13, 0x8D16, 0x14CE, -/* 06B2 */ 0x8D64, 0x8D66, 0x14D2, -/* 06B3 */ 0x8D6B, 0x0000, 0x7A53, -/* 06B4 */ 0x8D70, 0x8D77, 0x14D5, -/* 06B5 */ 0x8D85, 0x0000, 0x7531, -/* 06B6 */ 0x8D8A, 0x0000, 0x6A46, -/* 06B7 */ 0x8D99, 0x0000, 0x7061, -/* 06B8 */ 0x8DA3, 0x0000, 0x762C, -/* 06B9 */ 0x8DA8, 0x0000, 0x7559, -/* 06BA */ 0x8DB3, 0x0000, 0x706B, -/* 06BB */ 0x8DBA, 0x0000, 0x5D3A, -/* 06BC */ 0x8DBE, 0x0000, 0x723F, -/* 06BD */ 0x8DC6, 0x0000, 0x7745, -/* 06BE */ 0x8DCB, 0x8DCF, 0x14DD, -/* 06BF */ 0x8DDB, 0x8DDD, 0x14E2, -/* 06C0 */ 0x8DE1, 0x8DE3, 0x14E5, -/* 06C1 */ 0x8DE8, 0x0000, 0x4E25, -/* 06C2 */ 0x8DEF, 0x0000, 0x5658, -/* 06C3 */ 0x8DF3, 0x0000, 0x542F, -/* 06C4 */ 0x8E0A, 0x0000, 0x6949, -/* 06C5 */ 0x8E0F, 0x8E10, 0x14E8, -/* 06C6 */ 0x8E1E, 0x0000, 0x4B66, -/* 06C7 */ 0x8E2A, 0x0000, 0x7121, -/* 06C8 */ 0x8E30, 0x0000, 0x6B32, -/* 06C9 */ 0x8E35, 0x0000, 0x7122, -/* 06CA */ 0x8E42, 0x8E4A, 0x14EA, -/* 06CB */ 0x8E59, 0x0000, 0x756C, -/* 06CC */ 0x8E5F, 0x8E60, 0x14F3, -/* 06CD */ 0x8E74, 0x8E76, 0x14F5, -/* 06CE */ 0x8E81, 0x0000, 0x7062, -/* 06CF */ 0x8E87, 0x8E8D, 0x14F8, -/* 06D0 */ 0x8EAA, 0x8EAC, 0x14FF, -/* 06D1 */ 0x8EC0, 0x0000, 0x4F46, -/* 06D2 */ 0x8ECA, 0x8ECD, 0x1502, -/* 06D3 */ 0x8ED2, 0x0000, 0x7A4D, -/* 06D4 */ 0x8EDF, 0x0000, 0x6663, -/* 06D5 */ 0x8EEB, 0x0000, 0x7262, -/* 06D6 */ 0x8EF8, 0x8EFE, 0x1506, -/* 06D7 */ 0x8F03, 0x8F05, 0x150D, -/* 06D8 */ 0x8F09, 0x0000, 0x6E30, -/* 06D9 */ 0x8F12, 0x8F15, 0x1510, -/* 06DA */ 0x8F1B, 0x8F1F, 0x1514, -/* 06DB */ 0x8F26, 0x8F2A, 0x1519, -/* 06DC */ 0x8F2F, 0x0000, 0x727E, -/* 06DD */ 0x8F33, 0x0000, 0x714D, -/* 06DE */ 0x8F38, 0x8F3F, 0x151E, -/* 06DF */ 0x8F44, 0x8F45, 0x1526, -/* 06E0 */ 0x8F49, 0x0000, 0x6F2E, -/* 06E1 */ 0x8F4D, 0x8F4E, 0x1528, -/* 06E2 */ 0x8F5D, 0x8F62, 0x152A, -/* 06E3 */ 0x8F9B, 0x8F9C, 0x1530, -/* 06E4 */ 0x8FA3, 0x8FA8, 0x1532, -/* 06E5 */ 0x8FAD, 0x8FB2, 0x1538, -/* 06E6 */ 0x8FC2, 0x8FC5, 0x153E, -/* 06E7 */ 0x8FCE, 0x8FD4, 0x1542, -/* 06E8 */ 0x8FE6, 0x0000, 0x4A3C, -/* 06E9 */ 0x8FEA, 0x8FF2, 0x1549, -/* 06EA */ 0x8FF7, 0x8FF9, 0x1552, -/* 06EB */ 0x8FFD, 0x9023, 0x1555, -/* 06EC */ 0x902E, 0x9038, 0x157C, -/* 06ED */ 0x903C, 0x9042, 0x1587, -/* 06EE */ 0x9047, 0x9055, 0x158E, -/* 06EF */ 0x9059, 0x9063, 0x159D, -/* 06F0 */ 0x9069, 0x0000, 0x6E6A, -/* 06F1 */ 0x906D, 0x908A, 0x15A8, -/* 06F2 */ 0x908F, 0x9091, 0x15C6, -/* 06F3 */ 0x9095, 0x0000, 0x683B, -/* 06F4 */ 0x9099, 0x0000, 0x5857, -/* 06F5 */ 0x90A2, 0x90AA, 0x15C9, -/* 06F6 */ 0x90AF, 0x90B1, 0x15D2, -/* 06F7 */ 0x90B5, 0x90B8, 0x15D5, -/* 06F8 */ 0x90C1, 0x0000, 0x6974, -/* 06F9 */ 0x90CA, 0x0000, 0x4E74, -/* 06FA */ 0x90DE, 0x90E1, 0x15D9, -/* 06FB */ 0x90E8, 0x0000, 0x5D3B, -/* 06FC */ 0x90ED, 0x0000, 0x4E2C, -/* 06FD */ 0x90F5, 0x0000, 0x6968, -/* 06FE */ 0x90FD, 0x0000, 0x5434, -/* 06FF */ 0x9102, 0x0000, 0x6447, -/* 0700 */ 0x9112, 0x9115, 0x15DD, -/* 0701 */ 0x9119, 0x0000, 0x5E29, -/* 0702 */ 0x9127, 0x0000, 0x5478, -/* 0703 */ 0x912D, 0x0000, 0x6F77, -/* 0704 */ 0x9132, 0x0000, 0x5333, -/* 0705 */ 0x9149, 0x914E, 0x15E1, -/* 0706 */ 0x9152, 0x0000, 0x7150, -/* 0707 */ 0x9162, 0x0000, 0x7532, -/* 0708 */ 0x9169, 0x916C, 0x15E7, -/* 0709 */ 0x9175, 0x9178, 0x15EB, -/* 070A */ 0x9187, 0x918D, 0x15EF, -/* 070B */ 0x9192, 0x0000, 0x6125, -/* 070C */ 0x919C, 0x0000, 0x755D, -/* 070D */ 0x91AB, 0x91B5, 0x15F6, -/* 070E */ 0x91C0, 0x0000, 0x6554, -/* 070F */ 0x91C7, 0x91D1, 0x1601, -/* 0710 */ 0x91D7, 0x91D8, 0x160C, -/* 0711 */ 0x91DC, 0x91DD, 0x160E, -/* 0712 */ 0x91E3, 0x0000, 0x7065, -/* 0713 */ 0x91E7, 0x91EA, 0x1610, -/* 0714 */ 0x91F5, 0x0000, 0x737B, -/* 0715 */ 0x920D, 0x9212, 0x1614, -/* 0716 */ 0x9217, 0x0000, 0x6B4D, -/* 0717 */ 0x921E, 0x0000, 0x5037, -/* 0718 */ 0x9234, 0x0000, 0x5642, -/* 0719 */ 0x923A, 0x0000, 0x682D, -/* 071A */ 0x923F, 0x9240, 0x161A, -/* 071B */ 0x9245, 0x0000, 0x4B69, -/* 071C */ 0x9249, 0x0000, 0x7A68, -/* 071D */ 0x9257, 0x0000, 0x4C46, -/* 071E */ 0x925B, 0x925E, 0x161C, -/* 071F */ 0x9262, 0x9266, 0x1620, -/* 0720 */ 0x9280, 0x9285, 0x1625, -/* 0721 */ 0x9291, 0x9298, 0x162B, -/* 0722 */ 0x929C, 0x0000, 0x7967, -/* 0723 */ 0x92B3, 0x92B9, 0x1633, -/* 0724 */ 0x92CC, 0x92D2, 0x163A, -/* 0725 */ 0x92E4, 0x0000, 0x6027, -/* 0726 */ 0x92EA, 0x0000, 0x7868, -/* 0727 */ 0x92F8, 0x0000, 0x4B6A, -/* 0728 */ 0x92FC, 0x0000, 0x4B3C, -/* 0729 */ 0x9304, 0x0000, 0x5662, -/* 072A */ 0x9310, 0x0000, 0x755E, -/* 072B */ 0x9318, 0x931A, 0x1641, -/* 072C */ 0x931E, 0x932F, 0x1644, -/* 072D */ 0x9348, 0x934D, 0x1656, -/* 072E */ 0x9354, 0x0000, 0x6448, -/* 072F */ 0x935B, 0x0000, 0x5334, -/* 0730 */ 0x936E, 0x0000, 0x6B39, -/* 0731 */ 0x9375, 0x0000, 0x4B75, -/* 0732 */ 0x937C, 0x937E, 0x165C, -/* 0733 */ 0x938C, 0x0000, 0x4C47, -/* 0734 */ 0x9394, 0x9396, 0x165F, -/* 0735 */ 0x939A, 0x0000, 0x7560, -/* 0736 */ 0x93A3, 0x0000, 0x7B2F, -/* 0737 */ 0x93A7, 0x0000, 0x4B51, -/* 0738 */ 0x93AC, 0x93B0, 0x1662, -/* 0739 */ 0x93C3, 0x0000, 0x706C, -/* 073A */ 0x93D1, 0x0000, 0x6E6B, -/* 073B */ 0x93DE, 0x93E4, 0x1667, -/* 073C */ 0x93F6, 0x0000, 0x7321, -/* 073D */ 0x9404, 0x0000, 0x7C75, -/* 073E */ 0x9418, 0x0000, 0x7124, -/* 073F */ 0x9425, 0x0000, 0x6056, -/* 0740 */ 0x942B, 0x0000, 0x6F32, -/* 0741 */ 0x9435, 0x9438, 0x166E, -/* 0742 */ 0x9444, 0x0000, 0x7151, -/* 0743 */ 0x9451, 0x9452, 0x1672, -/* 0744 */ 0x945B, 0x0000, 0x4E4E, -/* 0745 */ 0x947D, 0x947F, 0x1674, -/* 0746 */ 0x9577, 0x0000, 0x6D7E, -/* 0747 */ 0x9580, 0x9583, 0x1677, -/* 0748 */ 0x9589, 0x958B, 0x167B, -/* 0749 */ 0x958F, 0x9594, 0x167E, -/* 074A */ 0x9598, 0x0000, 0x4B26, -/* 074B */ 0x95A3, 0x95A8, 0x1684, -/* 074C */ 0x95AD, 0x0000, 0x556F, -/* 074D */ 0x95B1, 0x0000, 0x6673, -/* 074E */ 0x95BB, 0x95BC, 0x168A, -/* 074F */ 0x95C7, 0x95CA, 0x168C, -/* 0750 */ 0x95D4, 0x95D6, 0x1690, -/* 0751 */ 0x95DC, 0x0000, 0x4E3C, -/* 0752 */ 0x95E1, 0x95E2, 0x1693, -/* 0753 */ 0x961C, 0x0000, 0x5D3D, -/* 0754 */ 0x9621, 0x0000, 0x7446, -/* 0755 */ 0x962A, 0x0000, 0x7821, -/* 0756 */ 0x962E, 0x0000, 0x6856, -/* 0757 */ 0x9632, 0x0000, 0x5B41, -/* 0758 */ 0x963B, 0x0000, 0x7066, -/* 0759 */ 0x963F, 0x9644, 0x1695, -/* 075A */ 0x964B, 0x9650, 0x169B, -/* 075B */ 0x965B, 0x9664, 0x16A1, -/* 075C */ 0x966A, 0x0000, 0x5B56, -/* 075D */ 0x9670, 0x9678, 0x16AB, -/* 075E */ 0x967D, 0x0000, 0x6555, -/* 075F */ 0x9685, 0x9686, 0x16B4, -/* 0760 */ 0x968A, 0x968E, 0x16B6, -/* 0761 */ 0x9694, 0x969C, 0x16BB, -/* 0762 */ 0x96A3, 0x0000, 0x5776, -/* 0763 */ 0x96A7, 0x96AA, 0x16C4, -/* 0764 */ 0x96B1, 0x0000, 0x6B5F, -/* 0765 */ 0x96B7, 0x0000, 0x564B, -/* 0766 */ 0x96BB, 0x0000, 0x7434, -/* 0767 */ 0x96C0, 0x96CE, 0x16C8, -/* 0768 */ 0x96D5, 0x96DC, 0x16D7, -/* 0769 */ 0x96E2, 0x96E3, 0x16DF, -/* 076A */ 0x96E8, 0x96EA, 0x16E1, -/* 076B */ 0x96EF, 0x96F2, 0x16E4, -/* 076C */ 0x96F6, 0x96FB, 0x16E8, -/* 076D */ 0x9700, 0x0000, 0x624D, -/* 076E */ 0x9706, 0x9707, 0x16EE, -/* 076F */ 0x9711, 0x971E, 0x16F0, -/* 0770 */ 0x9727, 0x0000, 0x5976, -/* 0771 */ 0x9730, 0x9732, 0x16FE, -/* 0772 */ 0x9739, 0x0000, 0x5C24, -/* 0773 */ 0x973D, 0x0000, 0x7038, -/* 0774 */ 0x9742, 0x9744, 0x1701, -/* 0775 */ 0x9748, 0x0000, 0x5644, -/* 0776 */ 0x9751, 0x0000, 0x746C, -/* 0777 */ 0x9756, 0x0000, 0x6F7E, -/* 0778 */ 0x975C, 0x9762, 0x1704, -/* 0779 */ 0x9769, 0x0000, 0x7A54, -/* 077A */ 0x976D, 0x0000, 0x6C65, -/* 077B */ 0x9774, 0x977A, 0x170B, -/* 077C */ 0x978B, 0x978F, 0x1712, -/* 077D */ 0x97A0, 0x0000, 0x4F53, -/* 077E */ 0x97A8, 0x97AD, 0x1717, -/* 077F */ 0x97C6, 0x0000, 0x7447, -/* 0780 */ 0x97CB, 0x0000, 0x6A5F, -/* 0781 */ 0x97D3, 0x0000, 0x795B, -/* 0782 */ 0x97DC, 0x0000, 0x5437, -/* 0783 */ 0x97F3, 0x97F6, 0x171D, -/* 0784 */ 0x97FB, 0x0000, 0x6A24, -/* 0785 */ 0x97FF, 0x980C, 0x1721, -/* 0786 */ 0x9810, 0x9813, 0x172F, -/* 0787 */ 0x9817, 0x9818, 0x1733, -/* 0788 */ 0x982D, 0x9830, 0x1735, -/* 0789 */ 0x9838, 0x983B, 0x1739, -/* 078A */ 0x9846, 0x0000, 0x4E28, -/* 078B */ 0x984C, 0x984E, 0x173D, -/* 078C */ 0x9854, 0x0000, 0x6454, -/* 078D */ 0x9858, 0x985A, 0x1740, -/* 078E */ 0x985E, 0x0000, 0x573E, -/* 078F */ 0x9865, 0x9867, 0x1743, -/* 0790 */ 0x986B, 0x0000, 0x6F35, -/* 0791 */ 0x986F, 0x0000, 0x7A69, -/* 0792 */ 0x98A8, 0x0000, 0x7926, -/* 0793 */ 0x98AF, 0x98B1, 0x1746, -/* 0794 */ 0x98C4, 0x98C7, 0x1749, -/* 0795 */ 0x98DB, 0x98E2, 0x174D, -/* 0796 */ 0x98ED, 0x98EF, 0x1755, -/* 0797 */ 0x98F4, 0x0000, 0x6C47, -/* 0798 */ 0x98FC, 0x98FE, 0x1758, -/* 0799 */ 0x9903, 0x0000, 0x4E75, -/* 079A */ 0x9909, 0x990C, 0x175B, -/* 079B */ 0x9910, 0x9913, 0x175F, -/* 079C */ 0x9918, 0x0000, 0x662E, -/* 079D */ 0x991E, 0x9920, 0x1763, -/* 079E */ 0x9928, 0x0000, 0x4E3D, -/* 079F */ 0x9945, 0x0000, 0x5843, -/* 07A0 */ 0x9949, 0x994D, 0x1766, -/* 07A1 */ 0x9951, 0x9957, 0x176B, -/* 07A2 */ 0x9996, 0x9999, 0x1772, -/* 07A3 */ 0x999D, 0x0000, 0x7938, -/* 07A4 */ 0x99A5, 0x99A8, 0x1776, -/* 07A5 */ 0x99AC, 0x99B4, 0x177A, -/* 07A6 */ 0x99B9, 0x0000, 0x6C71, -/* 07A7 */ 0x99C1, 0x0000, 0x5A60, -/* 07A8 */ 0x99D0, 0x99D5, 0x1783, -/* 07A9 */ 0x99D9, 0x0000, 0x5D3F, -/* 07AA */ 0x99DD, 0x99DF, 0x1789, -/* 07AB */ 0x99ED, 0x0000, 0x7A34, -/* 07AC */ 0x99F1, 0x0000, 0x552D, -/* 07AD */ 0x99FF, 0x9A01, 0x178C, -/* 07AE */ 0x9A08, 0x0000, 0x5C40, -/* 07AF */ 0x9A0E, 0x9A0F, 0x178F, -/* 07B0 */ 0x9A19, 0x0000, 0x783E, -/* 07B1 */ 0x9A2B, 0x0000, 0x4B76, -/* 07B2 */ 0x9A30, 0x0000, 0x5479, -/* 07B3 */ 0x9A36, 0x9A37, 0x1791, -/* 07B4 */ 0x9A40, 0x9A45, 0x1793, -/* 07B5 */ 0x9A4D, 0x0000, 0x7D24, -/* 07B6 */ 0x9A55, 0x9A5B, 0x1799, -/* 07B7 */ 0x9A5F, 0x9A65, 0x17A0, -/* 07B8 */ 0x9A69, 0x9A6A, 0x17A7, -/* 07B9 */ 0x9AA8, 0x0000, 0x4D69, -/* 07BA */ 0x9AB8, 0x0000, 0x7A35, -/* 07BB */ 0x9AD3, 0x9AD4, 0x17A9, -/* 07BC */ 0x9AD8, 0x0000, 0x4D54, -/* 07BD */ 0x9AE5, 0x0000, 0x6723, -/* 07BE */ 0x9AEE, 0x0000, 0x5B25, -/* 07BF */ 0x9B1A, 0x0000, 0x6251, -/* 07C0 */ 0x9B27, 0x9B2A, 0x17AB, -/* 07C1 */ 0x9B31, 0x0000, 0x6A26, -/* 07C2 */ 0x9B3C, 0x0000, 0x5021, -/* 07C3 */ 0x9B41, 0x9B45, 0x17AF, -/* 07C4 */ 0x9B4F, 0x0000, 0x6A60, -/* 07C5 */ 0x9B54, 0x0000, 0x582A, -/* 07C6 */ 0x9B5A, 0x0000, 0x6560, -/* 07C7 */ 0x9B6F, 0x0000, 0x565B, -/* 07C8 */ 0x9B8E, 0x9B91, 0x17B4, -/* 07C9 */ 0x9B9F, 0x0000, 0x6455, -/* 07CA */ 0x9BAB, 0x9BAE, 0x17B8, -/* 07CB */ 0x9BC9, 0x0000, 0x576F, -/* 07CC */ 0x9BD6, 0x0000, 0x746D, -/* 07CD */ 0x9BE4, 0x0000, 0x4D66, -/* 07CE */ 0x9BE8, 0x0000, 0x4C74, -/* 07CF */ 0x9C0D, 0x9C15, 0x17BC, -/* 07D0 */ 0x9C25, 0x0000, 0x7C3F, -/* 07D1 */ 0x9C32, 0x0000, 0x6827, -/* 07D2 */ 0x9C3B, 0x0000, 0x5844, -/* 07D3 */ 0x9C47, 0x9C49, 0x17C5, -/* 07D4 */ 0x9C57, 0x0000, 0x5777, -/* 07D5 */ 0x9CE5, 0x9CE9, 0x17C8, -/* 07D6 */ 0x9CF3, 0x9CF6, 0x17CD, -/* 07D7 */ 0x9D09, 0x0000, 0x643C, -/* 07D8 */ 0x9D1B, 0x0000, 0x6A44, -/* 07D9 */ 0x9D26, 0x9D28, 0x17D1, -/* 07DA */ 0x9D3B, 0x0000, 0x7B78, -/* 07DB */ 0x9D51, 0x0000, 0x4C3B, -/* 07DC */ 0x9D5D, 0x9D61, 0x17D4, -/* 07DD */ 0x9D6C, 0x0000, 0x5D5F, -/* 07DE */ 0x9D72, 0x0000, 0x6D4E, -/* 07DF */ 0x9DA9, 0x0000, 0x5950, -/* 07E0 */ 0x9DAF, 0x0000, 0x6523, -/* 07E1 */ 0x9DB4, 0x0000, 0x794D, -/* 07E2 */ 0x9DC4, 0x0000, 0x4D2E, -/* 07E3 */ 0x9DD7, 0x0000, 0x4F4E, -/* 07E4 */ 0x9DF2, 0x0000, 0x762F, -/* 07E5 */ 0x9DF8, 0x9DFA, 0x17D9, -/* 07E6 */ 0x9E1A, 0x0000, 0x6524, -/* 07E7 */ 0x9E1E, 0x0000, 0x5536, -/* 07E8 */ 0x9E75, 0x0000, 0x565D, -/* 07E9 */ 0x9E79, 0x0000, 0x7969, -/* 07EA */ 0x9E7D, 0x9E7F, 0x17DC, -/* 07EB */ 0x9E92, 0x9E93, 0x17DF, -/* 07EC */ 0x9E97, 0x0000, 0x5572, -/* 07ED */ 0x9E9D, 0x9E9F, 0x17E1, -/* 07EE */ 0x9EA5, 0x0000, 0x586A, -/* 07EF */ 0x9EB4, 0x9EB5, 0x17E4, -/* 07F0 */ 0x9EBB, 0x9EBE, 0x17E6, -/* 07F1 */ 0x9EC3, 0x0000, 0x7C5C, -/* 07F2 */ 0x9ECD, 0x9ED4, 0x17EA, -/* 07F3 */ 0x9ED8, 0x9EDE, 0x17F2, -/* 07F4 */ 0x9EE8, 0x0000, 0x535A, -/* 07F5 */ 0x9EF4, 0x0000, 0x5A3D, -/* 07F6 */ 0x9F07, 0x9F08, 0x17F9, -/* 07F7 */ 0x9F0E, 0x0000, 0x7023, -/* 07F8 */ 0x9F13, 0x0000, 0x4D55, -/* 07F9 */ 0x9F20, 0x0000, 0x6029, -/* 07FA */ 0x9F3B, 0x0000, 0x5E2C, -/* 07FB */ 0x9F4A, 0x9F4E, 0x17FB, -/* 07FC */ 0x9F52, 0x0000, 0x764D, -/* 07FD */ 0x9F5F, 0x9F61, 0x1800, -/* 07FE */ 0x9F67, 0x9F6C, 0x1803, -/* 07FF */ 0x9F77, 0x0000, 0x644B, -/* 0800 */ 0x9F8D, 0x9F90, 0x1809, -/* 0801 */ 0x9F95, 0x0000, 0x4A7E, -/* 0802 */ 0x9F9C, 0x0000, 0x4F4F, -/* 0803 */ 0xAC00, 0xAC04, 0x180D, -/* 0804 */ 0xAC20, 0x0000, 0x3035, -/* 0805 */ 0xAC24, 0x0000, 0x3036, -/* 0806 */ 0xAC2C, 0xAC2D, 0x1812, -/* 0807 */ 0xAC38, 0xAC3C, 0x1814, -/* 0808 */ 0xAC40, 0x0000, 0x303F, -/* 0809 */ 0xAC4B, 0xAC4D, 0x1819, -/* 080A */ 0xAC54, 0x0000, 0x3042, -/* 080B */ 0xAC58, 0x0000, 0x3043, -/* 080C */ 0xAC5C, 0x0000, 0x3044, -/* 080D */ 0xAC70, 0xAC7A, 0x181C, -/* 080E */ 0xAC80, 0xAC81, 0x1827, -/* 080F */ 0xAC90, 0x0000, 0x3055, -/* 0810 */ 0xAC94, 0x0000, 0x3056, -/* 0811 */ 0xAC9C, 0xAC9D, 0x1829, -/* 0812 */ 0xACAC, 0xACB0, 0x182B, -/* 0813 */ 0xACB8, 0xACB9, 0x1830, -/* 0814 */ 0xACC1, 0xACC4, 0x1832, -/* 0815 */ 0xACC8, 0x0000, 0x3069, -/* 0816 */ 0xACCC, 0x0000, 0x306A, -/* 0817 */ 0xACD5, 0xACD7, 0x1836, -/* 0818 */ 0xACE0, 0xACEC, 0x1839, -/* 0819 */ 0xACF3, 0xACF6, 0x1846, -/* 081A */ 0xACFC, 0xAD00, 0x184A, -/* 081B */ 0xAD04, 0xAD06, 0x184F, -/* 081C */ 0xAD0C, 0xAD11, 0x1852, -/* 081D */ 0xAD18, 0x0000, 0x3125, -/* 081E */ 0xAD1C, 0x0000, 0x3126, -/* 081F */ 0xAD20, 0x0000, 0x3127, -/* 0820 */ 0xAD29, 0xAD2D, 0x1858, -/* 0821 */ 0xAD34, 0xAD38, 0x185D, -/* 0822 */ 0xAD3C, 0x0000, 0x312E, -/* 0823 */ 0xAD44, 0xAD49, 0x1862, -/* 0824 */ 0xAD50, 0x0000, 0x3133, -/* 0825 */ 0xAD54, 0x0000, 0x3134, -/* 0826 */ 0xAD58, 0x0000, 0x3135, -/* 0827 */ 0xAD61, 0xAD63, 0x1868, -/* 0828 */ 0xAD6C, 0xAD70, 0x186B, -/* 0829 */ 0xAD7F, 0xAD82, 0x1870, -/* 082A */ 0xAD88, 0xAD8C, 0x1874, -/* 082B */ 0xAD90, 0x0000, 0x3148, -/* 082C */ 0xAD9C, 0xAD9D, 0x1879, -/* 082D */ 0xADA4, 0x0000, 0x314B, -/* 082E */ 0xADB7, 0x0000, 0x314C, -/* 082F */ 0xADC0, 0xADC4, 0x187B, -/* 0830 */ 0xADC8, 0x0000, 0x3150, -/* 0831 */ 0xADD0, 0xADD3, 0x1880, -/* 0832 */ 0xADDC, 0x0000, 0x3154, -/* 0833 */ 0xADE0, 0x0000, 0x3155, -/* 0834 */ 0xADE4, 0x0000, 0x3156, -/* 0835 */ 0xADF8, 0xADFC, 0x1884, -/* 0836 */ 0xAE08, 0xAE0D, 0x1889, -/* 0837 */ 0xAE14, 0x0000, 0x3161, -/* 0838 */ 0xAE30, 0xAE3A, 0x188F, -/* 0839 */ 0xAE40, 0xAE46, 0x189A, -/* 083A */ 0xAE4A, 0x0000, 0x316D, -/* 083B */ 0xAE50, 0x0000, 0x3171, -/* 083C */ 0xAE54, 0xAE56, 0x18A1, -/* 083D */ 0xAE5C, 0xAE5D, 0x18A4, -/* 083E */ 0xAE65, 0xAE6C, 0x18A6, -/* 083F */ 0xAE70, 0x0000, 0x317D, -/* 0840 */ 0xAE78, 0xAE79, 0x18AE, -/* 0841 */ 0xAE84, 0xAE85, 0x18B0, -/* 0842 */ 0xAE8C, 0x0000, 0x3227, -/* 0843 */ 0xAEC0, 0x0000, 0x322B, -/* 0844 */ 0xAEC4, 0x0000, 0x322C, -/* 0845 */ 0xAECC, 0xAECD, 0x18B2, -/* 0846 */ 0xAED8, 0xAEDC, 0x18B4, -/* 0847 */ 0xAEE8, 0xAEED, 0x18B9, -/* 0848 */ 0xAEF4, 0x0000, 0x3238, -/* 0849 */ 0xAEF8, 0x0000, 0x3239, -/* 084A */ 0xAEFC, 0x0000, 0x323A, -/* 084B */ 0xAF07, 0xAF08, 0x18BF, -/* 084C */ 0xAF0D, 0xAF10, 0x18C1, -/* 084D */ 0xAF2C, 0xAF34, 0x18C5, -/* 084E */ 0xAF3C, 0xAF3F, 0x18CE, -/* 084F */ 0xAF48, 0xAF49, 0x18D2, -/* 0850 */ 0xAF50, 0x0000, 0x324C, -/* 0851 */ 0xAF5C, 0xAF5D, 0x18D4, -/* 0852 */ 0xAF64, 0xAF65, 0x18D6, -/* 0853 */ 0xAF79, 0x0000, 0x3251, -/* 0854 */ 0xAF80, 0x0000, 0x3252, -/* 0855 */ 0xAF84, 0x0000, 0x3253, -/* 0856 */ 0xAF88, 0x0000, 0x3254, -/* 0857 */ 0xAF90, 0xAF91, 0x18D8, -/* 0858 */ 0xAF95, 0x0000, 0x3257, -/* 0859 */ 0xAF9C, 0x0000, 0x3258, -/* 085A */ 0xAFB8, 0xAFBC, 0x18DA, -/* 085B */ 0xAFC0, 0x0000, 0x325C, -/* 085C */ 0xAFCB, 0xAFCE, 0x18DF, -/* 085D */ 0xAFD4, 0x0000, 0x3263, -/* 085E */ 0xAFDC, 0x0000, 0x3264, -/* 085F */ 0xAFE8, 0xAFE9, 0x18E3, -/* 0860 */ 0xAFF0, 0xAFF4, 0x18E5, -/* 0861 */ 0xAFF8, 0x0000, 0x326A, -/* 0862 */ 0xB000, 0xB004, 0x18EA, -/* 0863 */ 0xB00C, 0x0000, 0x326E, -/* 0864 */ 0xB010, 0x0000, 0x326F, -/* 0865 */ 0xB014, 0x0000, 0x3270, -/* 0866 */ 0xB01C, 0xB01D, 0x18EF, -/* 0867 */ 0xB028, 0x0000, 0x3273, -/* 0868 */ 0xB044, 0xB04E, 0x18F1, -/* 0869 */ 0xB057, 0xB059, 0x18FC, -/* 086A */ 0xB05D, 0x0000, 0x3321, -/* 086B */ 0xB07C, 0xB080, 0x18FF, -/* 086C */ 0xB084, 0x0000, 0x3325, -/* 086D */ 0xB08C, 0xB091, 0x1904, -/* 086E */ 0xB09C, 0x0000, 0x332D, -/* 086F */ 0xB0A8, 0xB0A9, 0x190A, -/* 0870 */ 0xB0B1, 0x0000, 0x3339, -/* 0871 */ 0xB0B8, 0x0000, 0x333D, -/* 0872 */ 0xB0BC, 0x0000, 0x333E, -/* 0873 */ 0xB0C4, 0xB0C5, 0x190C, -/* 0874 */ 0xB0D0, 0xB0D4, 0x190E, -/* 0875 */ 0xB0D8, 0x0000, 0x3347, -/* 0876 */ 0xB0E0, 0x0000, 0x3348, -/* 0877 */ 0xB0E5, 0x0000, 0x3349, -/* 0878 */ 0xB108, 0xB10C, 0x1913, -/* 0879 */ 0xB110, 0xB113, 0x1918, -/* 087A */ 0xB118, 0xB119, 0x191C, -/* 087B */ 0xB128, 0x0000, 0x3359, -/* 087C */ 0xB12C, 0x0000, 0x335A, -/* 087D */ 0xB134, 0xB135, 0x191E, -/* 087E */ 0xB140, 0xB144, 0x1920, -/* 087F */ 0xB148, 0x0000, 0x3363, -/* 0880 */ 0xB150, 0xB158, 0x1925, -/* 0881 */ 0xB15C, 0x0000, 0x3369, -/* 0882 */ 0xB160, 0x0000, 0x336A, -/* 0883 */ 0xB178, 0xB17C, 0x192E, -/* 0884 */ 0xB180, 0xB182, 0x1933, -/* 0885 */ 0xB188, 0xB18D, 0x1936, -/* 0886 */ 0xB198, 0x0000, 0x3377, -/* 0887 */ 0xB19C, 0x0000, 0x3378, -/* 0888 */ 0xB1A8, 0x0000, 0x3379, -/* 0889 */ 0xB1CC, 0x0000, 0x337A, -/* 088A */ 0xB1D0, 0x0000, 0x337B, -/* 088B */ 0xB1D4, 0x0000, 0x337C, -/* 088C */ 0xB1DC, 0xB1DF, 0x193C, -/* 088D */ 0xB1E8, 0xB1EC, 0x1940, -/* 088E */ 0xB1F0, 0x0000, 0x3425, -/* 088F */ 0xB1F9, 0xB1FD, 0x1945, -/* 0890 */ 0xB204, 0xB20C, 0x194A, -/* 0891 */ 0xB214, 0xB219, 0x1953, -/* 0892 */ 0xB220, 0x0000, 0x3432, -/* 0893 */ 0xB234, 0x0000, 0x3433, -/* 0894 */ 0xB23C, 0x0000, 0x3434, -/* 0895 */ 0xB258, 0x0000, 0x3435, -/* 0896 */ 0xB25C, 0x0000, 0x3436, -/* 0897 */ 0xB260, 0x0000, 0x3437, -/* 0898 */ 0xB268, 0xB269, 0x1959, -/* 0899 */ 0xB274, 0xB275, 0x195B, -/* 089A */ 0xB27C, 0x0000, 0x343C, -/* 089B */ 0xB284, 0xB285, 0x195D, -/* 089C */ 0xB289, 0x0000, 0x343F, -/* 089D */ 0xB290, 0xB294, 0x195F, -/* 089E */ 0xB2A0, 0xB2A6, 0x1964, -/* 089F */ 0xB2AA, 0xB2AC, 0x196B, -/* 08A0 */ 0xB2B0, 0x0000, 0x344D, -/* 08A1 */ 0xB2B4, 0x0000, 0x344E, -/* 08A2 */ 0xB2C8, 0xB2CC, 0x196E, -/* 08A3 */ 0xB2D0, 0xB2D2, 0x1973, -/* 08A4 */ 0xB2D8, 0xB2DD, 0x1976, -/* 08A5 */ 0xB2E2, 0x0000, 0x3458, -/* 08A6 */ 0xB2E8, 0x0000, 0x345C, -/* 08A7 */ 0xB304, 0x0000, 0x346D, -/* 08A8 */ 0xB308, 0x0000, 0x346E, -/* 08A9 */ 0xB310, 0xB311, 0x197C, -/* 08AA */ 0xB31C, 0x0000, 0x3474, -/* 08AB */ 0xB358, 0xB35F, 0x197E, -/* 08AC */ 0xB364, 0xB374, 0x1986, -/* 08AD */ 0xB378, 0x0000, 0x3528, -/* 08AE */ 0xB380, 0xB381, 0x1997, -/* 08AF */ 0xB38C, 0x0000, 0x352E, -/* 08B0 */ 0xB390, 0x0000, 0x352F, -/* 08B1 */ 0xB394, 0x0000, 0x3530, -/* 08B2 */ 0xB3A0, 0xB3A1, 0x1999, -/* 08B3 */ 0xB3A8, 0x0000, 0x3533, -/* 08B4 */ 0xB3AC, 0x0000, 0x3534, -/* 08B5 */ 0xB3C4, 0xB3D0, 0x199B, -/* 08B6 */ 0xB3D4, 0xB3E0, 0x19A8, -/* 08B7 */ 0xB3E4, 0x0000, 0x3543, -/* 08B8 */ 0xB3E8, 0x0000, 0x3544, -/* 08B9 */ 0xB3FC, 0x0000, 0x3545, -/* 08BA */ 0xB410, 0x0000, 0x3546, -/* 08BB */ 0xB418, 0x0000, 0x3547, -/* 08BC */ 0xB41C, 0x0000, 0x3548, -/* 08BD */ 0xB420, 0x0000, 0x3549, -/* 08BE */ 0xB428, 0xB42B, 0x19B5, -/* 08BF */ 0xB434, 0x0000, 0x354D, -/* 08C0 */ 0xB450, 0xB454, 0x19B9, -/* 08C1 */ 0xB458, 0x0000, 0x3551, -/* 08C2 */ 0xB460, 0xB465, 0x19BE, -/* 08C3 */ 0xB46C, 0x0000, 0x3556, -/* 08C4 */ 0xB480, 0x0000, 0x3557, -/* 08C5 */ 0xB488, 0x0000, 0x3558, -/* 08C6 */ 0xB49D, 0x0000, 0x3559, -/* 08C7 */ 0xB4A4, 0x0000, 0x355A, -/* 08C8 */ 0xB4A8, 0x0000, 0x355B, -/* 08C9 */ 0xB4AC, 0x0000, 0x355C, -/* 08CA */ 0xB4B5, 0xB4B9, 0x19C4, -/* 08CB */ 0xB4C0, 0x0000, 0x3560, -/* 08CC */ 0xB4C4, 0x0000, 0x3561, -/* 08CD */ 0xB4C8, 0x0000, 0x3562, -/* 08CE */ 0xB4D0, 0x0000, 0x3563, -/* 08CF */ 0xB4D5, 0x0000, 0x3564, -/* 08D0 */ 0xB4DC, 0xB4E6, 0x19C9, -/* 08D1 */ 0xB4EC, 0xB4F1, 0x19D4, -/* 08D2 */ 0xB4F8, 0x0000, 0x356F, -/* 08D3 */ 0xB514, 0xB51C, 0x19DA, -/* 08D4 */ 0xB524, 0xB525, 0x19E3, -/* 08D5 */ 0xB530, 0xB534, 0x19E5, -/* 08D6 */ 0xB538, 0x0000, 0x357E, -/* 08D7 */ 0xB540, 0xB541, 0x19EA, -/* 08D8 */ 0xB550, 0x0000, 0x3629, -/* 08D9 */ 0xB554, 0x0000, 0x362A, -/* 08DA */ 0xB55C, 0xB55D, 0x19EC, -/* 08DB */ 0xB5A0, 0xB5A4, 0x19EE, -/* 08DC */ 0xB5A8, 0xB5AB, 0x19F3, -/* 08DD */ 0xB5B0, 0xB5B1, 0x19F7, -/* 08DE */ 0xB5C0, 0x0000, 0x363E, -/* 08DF */ 0xB5C4, 0x0000, 0x363F, -/* 08E0 */ 0xB5CC, 0xB5CD, 0x19F9, -/* 08E1 */ 0xB5D8, 0x0000, 0x3645, -/* 08E2 */ 0xB5EC, 0x0000, 0x3646, -/* 08E3 */ 0xB610, 0xB614, 0x19FB, -/* 08E4 */ 0xB618, 0x0000, 0x364A, -/* 08E5 */ 0xB625, 0x0000, 0x364B, -/* 08E6 */ 0xB62C, 0x0000, 0x364C, -/* 08E7 */ 0xB634, 0x0000, 0x364D, -/* 08E8 */ 0xB648, 0x0000, 0x364E, -/* 08E9 */ 0xB664, 0x0000, 0x364F, -/* 08EA */ 0xB668, 0x0000, 0x3650, -/* 08EB */ 0xB69C, 0xB6A0, 0x1A00, -/* 08EC */ 0xB6A4, 0x0000, 0x3654, -/* 08ED */ 0xB6AB, 0xB6AC, 0x1A05, -/* 08EE */ 0xB6B1, 0x0000, 0x3657, -/* 08EF */ 0xB6D4, 0x0000, 0x3658, -/* 08F0 */ 0xB6F0, 0x0000, 0x3659, -/* 08F1 */ 0xB6F4, 0x0000, 0x365A, -/* 08F2 */ 0xB6F8, 0x0000, 0x365B, -/* 08F3 */ 0xB700, 0xB701, 0x1A07, -/* 08F4 */ 0xB705, 0x0000, 0x365E, -/* 08F5 */ 0xB728, 0xB730, 0x1A09, -/* 08F6 */ 0xB738, 0xB73B, 0x1A12, -/* 08F7 */ 0xB744, 0x0000, 0x3667, -/* 08F8 */ 0xB748, 0x0000, 0x3668, -/* 08F9 */ 0xB74C, 0x0000, 0x3669, -/* 08FA */ 0xB754, 0xB755, 0x1A16, -/* 08FB */ 0xB760, 0x0000, 0x366C, -/* 08FC */ 0xB764, 0x0000, 0x366D, -/* 08FD */ 0xB768, 0x0000, 0x366E, -/* 08FE */ 0xB770, 0xB775, 0x1A18, -/* 08FF */ 0xB77C, 0xB780, 0x1A1E, -/* 0900 */ 0xB784, 0x0000, 0x3676, -/* 0901 */ 0xB78C, 0xB78D, 0x1A23, -/* 0902 */ 0xB796, 0xB79C, 0x1A25, -/* 0903 */ 0xB7A0, 0x0000, 0x3724, -/* 0904 */ 0xB7A8, 0xB7A9, 0x1A2C, -/* 0905 */ 0xB7B4, 0xB7B8, 0x1A2E, -/* 0906 */ 0xB7C7, 0xB7C9, 0x1A33, -/* 0907 */ 0xB7EC, 0xB7F0, 0x1A36, -/* 0908 */ 0xB7F4, 0x0000, 0x3732, -/* 0909 */ 0xB7FC, 0xB7FD, 0x1A3B, -/* 090A */ 0xB80C, 0x0000, 0x373B, -/* 090B */ 0xB810, 0x0000, 0x373C, -/* 090C */ 0xB818, 0xB81D, 0x1A3D, -/* 090D */ 0xB824, 0xB828, 0x1A43, -/* 090E */ 0xB82C, 0x0000, 0x3744, -/* 090F */ 0xB834, 0xB835, 0x1A48, -/* 0910 */ 0xB840, 0x0000, 0x374A, -/* 0911 */ 0xB844, 0x0000, 0x374B, -/* 0912 */ 0xB851, 0xB853, 0x1A4A, -/* 0913 */ 0xB85C, 0xB860, 0x1A4D, -/* 0914 */ 0xB864, 0x0000, 0x3751, -/* 0915 */ 0xB86C, 0xB871, 0x1A52, -/* 0916 */ 0xB878, 0x0000, 0x3756, -/* 0917 */ 0xB87C, 0x0000, 0x3757, -/* 0918 */ 0xB88D, 0x0000, 0x3758, -/* 0919 */ 0xB8A8, 0x0000, 0x3759, -/* 091A */ 0xB8B0, 0x0000, 0x375A, -/* 091B */ 0xB8B4, 0x0000, 0x375B, -/* 091C */ 0xB8B8, 0x0000, 0x375C, -/* 091D */ 0xB8C0, 0xB8C5, 0x1A58, -/* 091E */ 0xB8CC, 0x0000, 0x3761, -/* 091F */ 0xB8D0, 0x0000, 0x3762, -/* 0920 */ 0xB8D4, 0x0000, 0x3763, -/* 0921 */ 0xB8DD, 0xB8E1, 0x1A5E, -/* 0922 */ 0xB8E8, 0xB8EC, 0x1A63, -/* 0923 */ 0xB8F0, 0x0000, 0x376A, -/* 0924 */ 0xB8F8, 0xB8FD, 0x1A68, -/* 0925 */ 0xB904, 0x0000, 0x376F, -/* 0926 */ 0xB918, 0x0000, 0x3770, -/* 0927 */ 0xB920, 0x0000, 0x3771, -/* 0928 */ 0xB93C, 0xB940, 0x1A6E, -/* 0929 */ 0xB944, 0x0000, 0x3775, -/* 092A */ 0xB94C, 0xB951, 0x1A73, -/* 092B */ 0xB958, 0xB95C, 0x1A79, -/* 092C */ 0xB960, 0x0000, 0x377C, -/* 092D */ 0xB968, 0xB96D, 0x1A7E, -/* 092E */ 0xB974, 0xB978, 0x1A84, -/* 092F */ 0xB97C, 0x0000, 0x3826, -/* 0930 */ 0xB984, 0xB98E, 0x1A89, -/* 0931 */ 0xB9AC, 0xB9B0, 0x1A94, -/* 0932 */ 0xB9B4, 0x0000, 0x3831, -/* 0933 */ 0xB9BC, 0xB9C1, 0x1A99, -/* 0934 */ 0xB9C8, 0xB9CC, 0x1A9F, -/* 0935 */ 0xB9D8, 0xB9E1, 0x1AA4, -/* 0936 */ 0xB9E8, 0x0000, 0x3847, -/* 0937 */ 0xB9EC, 0x0000, 0x3848, -/* 0938 */ 0xB9F4, 0xB9F5, 0x1AAE, -/* 0939 */ 0xBA00, 0xBA01, 0x1AB0, -/* 093A */ 0xBA08, 0x0000, 0x3851, -/* 093B */ 0xBA15, 0x0000, 0x3852, -/* 093C */ 0xBA38, 0xBA3C, 0x1AB2, -/* 093D */ 0xBA40, 0xBA42, 0x1AB7, -/* 093E */ 0xBA48, 0xBA4E, 0x1ABA, -/* 093F */ 0xBA58, 0x0000, 0x3860, -/* 0940 */ 0xBA5C, 0x0000, 0x3861, -/* 0941 */ 0xBA64, 0xBA65, 0x1AC1, -/* 0942 */ 0xBA70, 0xBA74, 0x1AC3, -/* 0943 */ 0xBA78, 0x0000, 0x386A, -/* 0944 */ 0xBA87, 0x0000, 0x386E, -/* 0945 */ 0xBA8C, 0x0000, 0x386F, -/* 0946 */ 0xBAA8, 0xBAAC, 0x1AC8, -/* 0947 */ 0xBAB0, 0xBAB2, 0x1ACD, -/* 0948 */ 0xBAB8, 0xBABD, 0x1AD0, -/* 0949 */ 0xBAC4, 0x0000, 0x387A, -/* 094A */ 0xBAC8, 0x0000, 0x387B, -/* 094B */ 0xBAD8, 0xBAD9, 0x1AD6, -/* 094C */ 0xBAFC, 0x0000, 0x387E, -/* 094D */ 0xBB00, 0x0000, 0x3921, -/* 094E */ 0xBB04, 0x0000, 0x3922, -/* 094F */ 0xBB0D, 0xBB11, 0x1AD8, -/* 0950 */ 0xBB18, 0x0000, 0x3926, -/* 0951 */ 0xBB1C, 0x0000, 0x3927, -/* 0952 */ 0xBB20, 0x0000, 0x3928, -/* 0953 */ 0xBB29, 0xBB2B, 0x1ADD, -/* 0954 */ 0xBB38, 0x0000, 0x392E, -/* 0955 */ 0xBB44, 0xBB49, 0x1AE0, -/* 0956 */ 0xBB4D, 0xBB50, 0x1AE6, -/* 0957 */ 0xBB54, 0x0000, 0x393A, -/* 0958 */ 0xBB58, 0x0000, 0x393B, -/* 0959 */ 0xBB61, 0xBB63, 0x1AEA, -/* 095A */ 0xBB6C, 0x0000, 0x393E, -/* 095B */ 0xBB88, 0x0000, 0x393F, -/* 095C */ 0xBB8C, 0x0000, 0x3940, -/* 095D */ 0xBB90, 0x0000, 0x3941, -/* 095E */ 0xBBA4, 0x0000, 0x3942, -/* 095F */ 0xBBA8, 0x0000, 0x3943, -/* 0960 */ 0xBBAC, 0x0000, 0x3944, -/* 0961 */ 0xBBB4, 0xBBB7, 0x1AED, -/* 0962 */ 0xBBC0, 0x0000, 0x3947, -/* 0963 */ 0xBBC4, 0x0000, 0x3948, -/* 0964 */ 0xBBC8, 0x0000, 0x3949, -/* 0965 */ 0xBBD0, 0xBBD3, 0x1AF1, -/* 0966 */ 0xBBF8, 0xBC02, 0x1AF5, -/* 0967 */ 0xBC08, 0xBC09, 0x1B00, -/* 0968 */ 0xBC0F, 0xBC11, 0x1B02, -/* 0969 */ 0xBC24, 0xBC29, 0x1B05, -/* 096A */ 0xBC2D, 0xBC34, 0x1B0B, -/* 096B */ 0xBC38, 0x0000, 0x396B, -/* 096C */ 0xBC40, 0xBC41, 0x1B13, -/* 096D */ 0xBC49, 0xBC50, 0x1B15, -/* 096E */ 0xBC5D, 0x0000, 0x3975, -/* 096F */ 0xBC84, 0xBC8E, 0x1B1D, -/* 0970 */ 0xBC94, 0xBC9A, 0x1B28, -/* 0971 */ 0xBCA0, 0xBCA8, 0x1B2F, -/* 0972 */ 0xBCB0, 0xBCB1, 0x1B38, -/* 0973 */ 0xBCBC, 0xBCC0, 0x1B3A, -/* 0974 */ 0xBCC4, 0x0000, 0x3A30, -/* 0975 */ 0xBCCD, 0x0000, 0x3A31, -/* 0976 */ 0xBCD5, 0xBCD8, 0x1B3F, -/* 0977 */ 0xBCDC, 0x0000, 0x3A37, -/* 0978 */ 0xBCF8, 0x0000, 0x3A3B, -/* 0979 */ 0xBCFC, 0x0000, 0x3A3C, -/* 097A */ 0xBD04, 0xBD09, 0x1B43, -/* 097B */ 0xBD10, 0x0000, 0x3A41, -/* 097C */ 0xBD14, 0x0000, 0x3A42, -/* 097D */ 0xBD24, 0x0000, 0x3A43, -/* 097E */ 0xBD2C, 0x0000, 0x3A44, -/* 097F */ 0xBD40, 0x0000, 0x3A45, -/* 0980 */ 0xBD48, 0xBD4C, 0x1B49, -/* 0981 */ 0xBD50, 0x0000, 0x3A49, -/* 0982 */ 0xBD58, 0xBD59, 0x1B4E, -/* 0983 */ 0xBD64, 0x0000, 0x3A4C, -/* 0984 */ 0xBD68, 0x0000, 0x3A4D, -/* 0985 */ 0xBD80, 0xBD84, 0x1B50, -/* 0986 */ 0xBD90, 0xBD95, 0x1B55, -/* 0987 */ 0xBD99, 0xBD9C, 0x1B5B, -/* 0988 */ 0xBDA4, 0x0000, 0x3A5C, -/* 0989 */ 0xBDB0, 0x0000, 0x3A5D, -/* 098A */ 0xBDB8, 0x0000, 0x3A5E, -/* 098B */ 0xBDD4, 0xBDD8, 0x1B5F, -/* 098C */ 0xBDDC, 0x0000, 0x3A62, -/* 098D */ 0xBDE9, 0x0000, 0x3A63, -/* 098E */ 0xBDF0, 0x0000, 0x3A64, -/* 098F */ 0xBDF4, 0x0000, 0x3A65, -/* 0990 */ 0xBDF8, 0x0000, 0x3A66, -/* 0991 */ 0xBE00, 0xBE05, 0x1B64, -/* 0992 */ 0xBE0C, 0xBE10, 0x1B6A, -/* 0993 */ 0xBE14, 0x0000, 0x3A6D, -/* 0994 */ 0xBE1C, 0xBE1F, 0x1B6F, -/* 0995 */ 0xBE44, 0xBE48, 0x1B73, -/* 0996 */ 0xBE4C, 0xBE4E, 0x1B78, -/* 0997 */ 0xBE54, 0xBE57, 0x1B7B, -/* 0998 */ 0xBE60, 0xBE64, 0x1B7F, -/* 0999 */ 0xBE68, 0xBE6A, 0x1B84, -/* 099A */ 0xBE70, 0xBE71, 0x1B87, -/* 099B */ 0xBE80, 0x0000, 0x3B2B, -/* 099C */ 0xBE84, 0x0000, 0x3B2C, -/* 099D */ 0xBE8C, 0xBE8D, 0x1B89, -/* 099E */ 0xBE98, 0xBE99, 0x1B8B, -/* 099F */ 0xBEA8, 0x0000, 0x3B34, -/* 09A0 */ 0xBED0, 0xBED8, 0x1B8D, -/* 09A1 */ 0xBEE0, 0x0000, 0x3B3A, -/* 09A2 */ 0xBEEC, 0x0000, 0x3B3E, -/* 09A3 */ 0xBF01, 0x0000, 0x3B3F, -/* 09A4 */ 0xBF08, 0xBF09, 0x1B96, -/* 09A5 */ 0xBF18, 0xBF19, 0x1B98, -/* 09A6 */ 0xBF40, 0xBF44, 0x1B9A, -/* 09A7 */ 0xBF48, 0x0000, 0x3B4A, -/* 09A8 */ 0xBF50, 0xBF51, 0x1B9F, -/* 09A9 */ 0xBF55, 0x0000, 0x3B4D, -/* 09AA */ 0xBF94, 0x0000, 0x3B4E, -/* 09AB */ 0xBFB0, 0x0000, 0x3B4F, -/* 09AC */ 0xBFC5, 0x0000, 0x3B50, -/* 09AD */ 0xBFCC, 0xBFD0, 0x1BA1, -/* 09AE */ 0xBFD4, 0x0000, 0x3B54, -/* 09AF */ 0xBFDC, 0xBFE1, 0x1BA6, -/* 09B0 */ 0xC03C, 0x0000, 0x3B58, -/* 09B1 */ 0xC051, 0x0000, 0x3B59, -/* 09B2 */ 0xC058, 0x0000, 0x3B5A, -/* 09B3 */ 0xC05C, 0x0000, 0x3B5B, -/* 09B4 */ 0xC060, 0x0000, 0x3B5C, -/* 09B5 */ 0xC068, 0xC069, 0x1BAC, -/* 09B6 */ 0xC090, 0xC094, 0x1BAE, -/* 09B7 */ 0xC098, 0x0000, 0x3B62, -/* 09B8 */ 0xC0A0, 0xC0A5, 0x1BB3, -/* 09B9 */ 0xC0AC, 0xC0B0, 0x1BB9, -/* 09BA */ 0xC0BC, 0xC0BD, 0x1BBE, -/* 09BB */ 0xC0C5, 0xC0CC, 0x1BC0, -/* 09BC */ 0xC0D0, 0x0000, 0x3B78, -/* 09BD */ 0xC0D8, 0xC0D9, 0x1BC8, -/* 09BE */ 0xC0E4, 0xC0E8, 0x1BCA, -/* 09BF */ 0xC0EC, 0x0000, 0x3C23, -/* 09C0 */ 0xC0F4, 0xC0F9, 0x1BCF, -/* 09C1 */ 0xC100, 0x0000, 0x3C28, -/* 09C2 */ 0xC104, 0x0000, 0x3C29, -/* 09C3 */ 0xC108, 0x0000, 0x3C2A, -/* 09C4 */ 0xC110, 0x0000, 0x3C2B, -/* 09C5 */ 0xC115, 0x0000, 0x3C2C, -/* 09C6 */ 0xC123, 0xC127, 0x1BD5, -/* 09C7 */ 0xC12C, 0xC12D, 0x1BDA, -/* 09C8 */ 0xC136, 0xC13C, 0x1BDC, -/* 09C9 */ 0xC140, 0x0000, 0x3C3F, -/* 09CA */ 0xC148, 0xC149, 0x1BE3, -/* 09CB */ 0xC154, 0xC158, 0x1BE5, -/* 09CC */ 0xC15C, 0x0000, 0x3C48, -/* 09CD */ 0xC164, 0xC165, 0x1BEA, -/* 09CE */ 0xC170, 0x0000, 0x3C4E, -/* 09CF */ 0xC174, 0x0000, 0x3C4F, -/* 09D0 */ 0xC178, 0x0000, 0x3C50, -/* 09D1 */ 0xC185, 0x0000, 0x3C51, -/* 09D2 */ 0xC190, 0x0000, 0x3C55, -/* 09D3 */ 0xC194, 0xC196, 0x1BEC, -/* 09D4 */ 0xC19C, 0xC1A1, 0x1BEF, -/* 09D5 */ 0xC1A5, 0xC1AC, 0x1BF5, -/* 09D6 */ 0xC1B0, 0x0000, 0x3C60, -/* 09D7 */ 0xC1BD, 0x0000, 0x3C61, -/* 09D8 */ 0xC1C4, 0x0000, 0x3C62, -/* 09D9 */ 0xC1C8, 0x0000, 0x3C63, -/* 09DA */ 0xC1CC, 0x0000, 0x3C64, -/* 09DB */ 0xC1D4, 0xC1D8, 0x1BFD, -/* 09DC */ 0xC1E0, 0x0000, 0x3C68, -/* 09DD */ 0xC1E4, 0x0000, 0x3C69, -/* 09DE */ 0xC1E8, 0x0000, 0x3C6A, -/* 09DF */ 0xC1F0, 0xC1F3, 0x1C02, -/* 09E0 */ 0xC1FC, 0xC200, 0x1C06, -/* 09E1 */ 0xC204, 0x0000, 0x3C71, -/* 09E2 */ 0xC20C, 0xC211, 0x1C0B, -/* 09E3 */ 0xC218, 0xC220, 0x1C11, -/* 09E4 */ 0xC228, 0xC234, 0x1C1A, -/* 09E5 */ 0xC248, 0x0000, 0x3D25, -/* 09E6 */ 0xC250, 0xC254, 0x1C27, -/* 09E7 */ 0xC258, 0x0000, 0x3D29, -/* 09E8 */ 0xC260, 0x0000, 0x3D2A, -/* 09E9 */ 0xC265, 0x0000, 0x3D2B, -/* 09EA */ 0xC26C, 0xC270, 0x1C2C, -/* 09EB */ 0xC274, 0x0000, 0x3D2F, -/* 09EC */ 0xC27C, 0xC281, 0x1C31, -/* 09ED */ 0xC288, 0xC289, 0x1C37, -/* 09EE */ 0xC290, 0x0000, 0x3D36, -/* 09EF */ 0xC298, 0xC29D, 0x1C39, -/* 09F0 */ 0xC2A4, 0xC2A8, 0x1C3F, -/* 09F1 */ 0xC2AC, 0xC2AD, 0x1C44, -/* 09F2 */ 0xC2B4, 0xC2B9, 0x1C46, -/* 09F3 */ 0xC2DC, 0xC2E4, 0x1C4C, -/* 09F4 */ 0xC2EF, 0xC2F1, 0x1C55, -/* 09F5 */ 0xC2F6, 0xC2FC, 0x1C58, -/* 09F6 */ 0xC300, 0x0000, 0x3D52, -/* 09F7 */ 0xC308, 0xC30D, 0x1C5F, -/* 09F8 */ 0xC318, 0x0000, 0x3D5A, -/* 09F9 */ 0xC31C, 0x0000, 0x3D5B, -/* 09FA */ 0xC324, 0xC329, 0x1C65, -/* 09FB */ 0xC345, 0x0000, 0x3D60, -/* 09FC */ 0xC368, 0xC36C, 0x1C6B, -/* 09FD */ 0xC370, 0xC372, 0x1C70, -/* 09FE */ 0xC378, 0xC37D, 0x1C73, -/* 09FF */ 0xC384, 0x0000, 0x3D6A, -/* 0A00 */ 0xC388, 0x0000, 0x3D6B, -/* 0A01 */ 0xC38C, 0x0000, 0x3D6C, -/* 0A02 */ 0xC3C0, 0x0000, 0x3D6D, -/* 0A03 */ 0xC3D8, 0xC3E2, 0x1C79, -/* 0A04 */ 0xC3E8, 0xC3E9, 0x1C84, -/* 0A05 */ 0xC3ED, 0x0000, 0x3D76, -/* 0A06 */ 0xC3F4, 0xC3F8, 0x1C86, -/* 0A07 */ 0xC408, 0x0000, 0x3D7A, -/* 0A08 */ 0xC410, 0x0000, 0x3D7B, -/* 0A09 */ 0xC424, 0x0000, 0x3D7C, -/* 0A0A */ 0xC42C, 0x0000, 0x3D7D, -/* 0A0B */ 0xC430, 0x0000, 0x3D7E, -/* 0A0C */ 0xC434, 0x0000, 0x3E21, -/* 0A0D */ 0xC43C, 0xC43D, 0x1C8B, -/* 0A0E */ 0xC448, 0x0000, 0x3E24, -/* 0A0F */ 0xC464, 0xC468, 0x1C8D, -/* 0A10 */ 0xC46C, 0x0000, 0x3E28, -/* 0A11 */ 0xC474, 0xC475, 0x1C92, -/* 0A12 */ 0xC479, 0x0000, 0x3E2B, -/* 0A13 */ 0xC480, 0x0000, 0x3E2C, -/* 0A14 */ 0xC494, 0x0000, 0x3E2D, -/* 0A15 */ 0xC49C, 0x0000, 0x3E2E, -/* 0A16 */ 0xC4B8, 0x0000, 0x3E2F, -/* 0A17 */ 0xC4BC, 0x0000, 0x3E30, -/* 0A18 */ 0xC4E9, 0x0000, 0x3E31, -/* 0A19 */ 0xC4F0, 0xC4F4, 0x1C94, -/* 0A1A */ 0xC4F8, 0xC4FA, 0x1C99, -/* 0A1B */ 0xC50C, 0x0000, 0x3E3A, -/* 0A1C */ 0xC510, 0x0000, 0x3E3B, -/* 0A1D */ 0xC514, 0x0000, 0x3E3C, -/* 0A1E */ 0xC51C, 0x0000, 0x3E3D, -/* 0A1F */ 0xC528, 0xC52C, 0x1C9C, -/* 0A20 */ 0xC530, 0x0000, 0x3E41, -/* 0A21 */ 0xC538, 0xC53D, 0x1CA1, -/* 0A22 */ 0xC544, 0xC545, 0x1CA7, -/* 0A23 */ 0xC55D, 0xC564, 0x1CA9, -/* 0A24 */ 0xC568, 0x0000, 0x3E59, -/* 0A25 */ 0xC570, 0xC571, 0x1CB1, -/* 0A26 */ 0xC57C, 0xC580, 0x1CB3, -/* 0A27 */ 0xC584, 0xC587, 0x1CB8, -/* 0A28 */ 0xC58C, 0xC591, 0x1CBC, -/* 0A29 */ 0xC595, 0xC598, 0x1CC2, -/* 0A2A */ 0xC59C, 0x0000, 0x3E6B, -/* 0A2B */ 0xC5A0, 0x0000, 0x3E6C, -/* 0A2C */ 0xC5A9, 0x0000, 0x3E6D, -/* 0A2D */ 0xC5B4, 0xC5B9, 0x1CC6, -/* 0A2E */ 0xC5CC, 0xC5D4, 0x1CCC, -/* 0A2F */ 0xC5D8, 0x0000, 0x3F24, -/* 0A30 */ 0xC5E0, 0xC5E5, 0x1CD5, -/* 0A31 */ 0xC5F0, 0x0000, 0x3F2C, -/* 0A32 */ 0xC5F4, 0xC5F7, 0x1CDB, -/* 0A33 */ 0xC60C, 0x0000, 0x3F3A, -/* 0A34 */ 0xC610, 0x0000, 0x3F3B, -/* 0A35 */ 0xC618, 0xC61C, 0x1CDF, -/* 0A36 */ 0xC624, 0xC628, 0x1CE4, -/* 0A37 */ 0xC630, 0x0000, 0x3F46, -/* 0A38 */ 0xC637, 0xC63B, 0x1CE9, -/* 0A39 */ 0xC640, 0xC644, 0x1CEE, -/* 0A3A */ 0xC648, 0x0000, 0x3F50, -/* 0A3B */ 0xC650, 0xC651, 0x1CF3, -/* 0A3C */ 0xC65C, 0xC660, 0x1CF5, -/* 0A3D */ 0xC66C, 0xC671, 0x1CFA, -/* 0A3E */ 0xC678, 0xC67C, 0x1D00, -/* 0A3F */ 0xC680, 0x0000, 0x3F5F, -/* 0A40 */ 0xC688, 0xC68D, 0x1D05, -/* 0A41 */ 0xC694, 0xC698, 0x1D0B, -/* 0A42 */ 0xC69C, 0x0000, 0x3F67, -/* 0A43 */ 0xC6A4, 0xC6A9, 0x1D10, -/* 0A44 */ 0xC6B0, 0xC6B4, 0x1D16, -/* 0A45 */ 0xC6C0, 0xC6C5, 0x1D1B, -/* 0A46 */ 0xC6CC, 0xC6D0, 0x1D21, -/* 0A47 */ 0xC6D4, 0x0000, 0x3F79, -/* 0A48 */ 0xC6DC, 0xC6E1, 0x1D26, -/* 0A49 */ 0xC6E8, 0xC6EC, 0x1D2C, -/* 0A4A */ 0xC6F0, 0x0000, 0x4023, -/* 0A4B */ 0xC6F8, 0xC6F9, 0x1D31, -/* 0A4C */ 0xC6FD, 0x0000, 0x4026, -/* 0A4D */ 0xC704, 0xC708, 0x1D33, -/* 0A4E */ 0xC70C, 0x0000, 0x402A, -/* 0A4F */ 0xC714, 0xC719, 0x1D38, -/* 0A50 */ 0xC720, 0xC724, 0x1D3E, -/* 0A51 */ 0xC728, 0x0000, 0x4032, -/* 0A52 */ 0xC730, 0xC737, 0x1D43, -/* 0A53 */ 0xC73C, 0xC740, 0x1D4B, -/* 0A54 */ 0xC744, 0x0000, 0x403B, -/* 0A55 */ 0xC74A, 0xC74F, 0x1D50, -/* 0A56 */ 0xC75C, 0x0000, 0x4048, -/* 0A57 */ 0xC760, 0x0000, 0x4049, -/* 0A58 */ 0xC768, 0xC76B, 0x1D56, -/* 0A59 */ 0xC774, 0xC778, 0x1D5A, -/* 0A5A */ 0xC78E, 0xC794, 0x1D5F, -/* 0A5B */ 0xC79A, 0x0000, 0x4060, -/* 0A5C */ 0xC7A0, 0xC7A1, 0x1D66, -/* 0A5D */ 0xC7AC, 0xC7B0, 0x1D68, -/* 0A5E */ 0xC7B4, 0x0000, 0x406A, -/* 0A5F */ 0xC7BC, 0xC7BD, 0x1D6D, -/* 0A60 */ 0xC7C8, 0xC7D0, 0x1D6F, -/* 0A61 */ 0xC7D8, 0x0000, 0x4075, -/* 0A62 */ 0xC7DD, 0x0000, 0x4076, -/* 0A63 */ 0xC7E4, 0x0000, 0x4077, -/* 0A64 */ 0xC7E8, 0x0000, 0x4078, -/* 0A65 */ 0xC7EC, 0x0000, 0x4079, -/* 0A66 */ 0xC800, 0xC804, 0x1D78, -/* 0A67 */ 0xC808, 0xC80A, 0x1D7D, -/* 0A68 */ 0xC810, 0xC816, 0x1D80, -/* 0A69 */ 0xC81C, 0xC820, 0x1D87, -/* 0A6A */ 0xC824, 0x0000, 0x4129, -/* 0A6B */ 0xC82C, 0xC831, 0x1D8C, -/* 0A6C */ 0xC838, 0x0000, 0x412E, -/* 0A6D */ 0xC83C, 0x0000, 0x412F, -/* 0A6E */ 0xC840, 0x0000, 0x4130, -/* 0A6F */ 0xC848, 0xC84D, 0x1D92, -/* 0A70 */ 0xC854, 0x0000, 0x4135, -/* 0A71 */ 0xC870, 0xC874, 0x1D98, -/* 0A72 */ 0xC878, 0xC87A, 0x1D9D, -/* 0A73 */ 0xC880, 0xC883, 0x1DA0, -/* 0A74 */ 0xC894, 0x0000, 0x4144, -/* 0A75 */ 0xC89D, 0xC8A1, 0x1DA4, -/* 0A76 */ 0xC8A8, 0x0000, 0x4148, -/* 0A77 */ 0xC8BC, 0xC8BD, 0x1DA9, -/* 0A78 */ 0xC8C4, 0x0000, 0x414B, -/* 0A79 */ 0xC8C8, 0x0000, 0x414C, -/* 0A7A */ 0xC8CC, 0x0000, 0x414D, -/* 0A7B */ 0xC8D4, 0xC8D9, 0x1DAB, -/* 0A7C */ 0xC8E0, 0xC8E4, 0x1DB1, -/* 0A7D */ 0xC8F5, 0x0000, 0x4155, -/* 0A7E */ 0xC8FC, 0xC900, 0x1DB6, -/* 0A7F */ 0xC90C, 0xC911, 0x1DBB, -/* 0A80 */ 0xC918, 0x0000, 0x4160, -/* 0A81 */ 0xC92C, 0x0000, 0x4161, -/* 0A82 */ 0xC934, 0x0000, 0x4162, -/* 0A83 */ 0xC950, 0xC954, 0x1DC1, -/* 0A84 */ 0xC958, 0x0000, 0x4166, -/* 0A85 */ 0xC960, 0xC963, 0x1DC6, -/* 0A86 */ 0xC96C, 0x0000, 0x416A, -/* 0A87 */ 0xC970, 0x0000, 0x416B, -/* 0A88 */ 0xC974, 0x0000, 0x416C, -/* 0A89 */ 0xC97C, 0x0000, 0x416D, -/* 0A8A */ 0xC988, 0xC98C, 0x1DCA, -/* 0A8B */ 0xC990, 0x0000, 0x4171, -/* 0A8C */ 0xC998, 0xC99D, 0x1DCF, -/* 0A8D */ 0xC9C0, 0xC9CA, 0x1DD5, -/* 0A8E */ 0xC9D0, 0xC9E7, 0x1DE0, -/* 0A8F */ 0xC9EC, 0xC9ED, 0x1DF8, -/* 0A90 */ 0xC9F8, 0xC9FC, 0x1DFA, -/* 0A91 */ 0xCA00, 0x0000, 0x4233, -/* 0A92 */ 0xCA08, 0xCA09, 0x1DFF, -/* 0A93 */ 0xCA14, 0x0000, 0x4239, -/* 0A94 */ 0xCA18, 0x0000, 0x423A, -/* 0A95 */ 0xCA29, 0x0000, 0x423B, -/* 0A96 */ 0xCA4C, 0xCA50, 0x1E01, -/* 0A97 */ 0xCA54, 0x0000, 0x423F, -/* 0A98 */ 0xCA5C, 0xCA5D, 0x1E06, -/* 0A99 */ 0xCA68, 0x0000, 0x4245, -/* 0A9A */ 0xCA7D, 0x0000, 0x4246, -/* 0A9B */ 0xCA84, 0x0000, 0x4247, -/* 0A9C */ 0xCA98, 0x0000, 0x4248, -/* 0A9D */ 0xCABC, 0xCAC0, 0x1E08, -/* 0A9E */ 0xCAC4, 0x0000, 0x424C, -/* 0A9F */ 0xCACC, 0xCAD3, 0x1E0D, -/* 0AA0 */ 0xCAD8, 0xCAD9, 0x1E15, -/* 0AA1 */ 0xCAE0, 0x0000, 0x4254, -/* 0AA2 */ 0xCAEC, 0x0000, 0x4255, -/* 0AA3 */ 0xCAF4, 0x0000, 0x4256, -/* 0AA4 */ 0xCB08, 0x0000, 0x4257, -/* 0AA5 */ 0xCB10, 0x0000, 0x4258, -/* 0AA6 */ 0xCB14, 0x0000, 0x4259, -/* 0AA7 */ 0xCB18, 0x0000, 0x425A, -/* 0AA8 */ 0xCB20, 0xCB21, 0x1E17, -/* 0AA9 */ 0xCB41, 0x0000, 0x425D, -/* 0AAA */ 0xCB48, 0xCB4C, 0x1E19, -/* 0AAB */ 0xCB50, 0x0000, 0x4261, -/* 0AAC */ 0xCB58, 0xCB59, 0x1E1E, -/* 0AAD */ 0xCB5D, 0x0000, 0x4264, -/* 0AAE */ 0xCB64, 0x0000, 0x4265, -/* 0AAF */ 0xCB78, 0xCB79, 0x1E20, -/* 0AB0 */ 0xCB9C, 0x0000, 0x4268, -/* 0AB1 */ 0xCBB8, 0x0000, 0x4269, -/* 0AB2 */ 0xCBD4, 0x0000, 0x426A, -/* 0AB3 */ 0xCBE4, 0xCBE9, 0x1E22, -/* 0AB4 */ 0xCC0C, 0xCC10, 0x1E28, -/* 0AB5 */ 0xCC14, 0x0000, 0x4271, -/* 0AB6 */ 0xCC1C, 0xCC1D, 0x1E2D, -/* 0AB7 */ 0xCC21, 0xCC22, 0x1E2F, -/* 0AB8 */ 0xCC2C, 0xCC30, 0x1E31, -/* 0AB9 */ 0xCC38, 0xCC3B, 0x1E36, -/* 0ABA */ 0xCC44, 0xCC48, 0x1E3A, -/* 0ABB */ 0xCC4C, 0x0000, 0x4327, -/* 0ABC */ 0xCC54, 0xCC55, 0x1E3F, -/* 0ABD */ 0xCC60, 0x0000, 0x432D, -/* 0ABE */ 0xCC64, 0xCC68, 0x1E41, -/* 0ABF */ 0xCC70, 0x0000, 0x4331, -/* 0AC0 */ 0xCC75, 0x0000, 0x4332, -/* 0AC1 */ 0xCC98, 0xCC9C, 0x1E46, -/* 0AC2 */ 0xCCA0, 0x0000, 0x4336, -/* 0AC3 */ 0xCCA8, 0xCCA9, 0x1E4B, -/* 0AC4 */ 0xCCB4, 0xCCB8, 0x1E4D, -/* 0AC5 */ 0xCCBC, 0x0000, 0x433F, -/* 0AC6 */ 0xCCC4, 0xCCC9, 0x1E52, -/* 0AC7 */ 0xCCD0, 0x0000, 0x4344, -/* 0AC8 */ 0xCCD4, 0x0000, 0x4345, -/* 0AC9 */ 0xCCE4, 0x0000, 0x4346, -/* 0ACA */ 0xCCEC, 0x0000, 0x4347, -/* 0ACB */ 0xCCF0, 0x0000, 0x4348, -/* 0ACC */ 0xCD01, 0x0000, 0x4349, -/* 0ACD */ 0xCD08, 0xCD0C, 0x1E58, -/* 0ACE */ 0xCD10, 0x0000, 0x434D, -/* 0ACF */ 0xCD18, 0xCD1D, 0x1E5D, -/* 0AD0 */ 0xCD24, 0x0000, 0x4352, -/* 0AD1 */ 0xCD28, 0x0000, 0x4353, -/* 0AD2 */ 0xCD2C, 0x0000, 0x4354, -/* 0AD3 */ 0xCD39, 0x0000, 0x4355, -/* 0AD4 */ 0xCD5C, 0x0000, 0x4356, -/* 0AD5 */ 0xCD60, 0x0000, 0x4357, -/* 0AD6 */ 0xCD64, 0x0000, 0x4358, -/* 0AD7 */ 0xCD6C, 0xCD71, 0x1E63, -/* 0AD8 */ 0xCD78, 0x0000, 0x435D, -/* 0AD9 */ 0xCD88, 0x0000, 0x435E, -/* 0ADA */ 0xCD94, 0xCD98, 0x1E69, -/* 0ADB */ 0xCD9C, 0x0000, 0x4362, -/* 0ADC */ 0xCDA4, 0xCDA9, 0x1E6E, -/* 0ADD */ 0xCDB0, 0x0000, 0x4367, -/* 0ADE */ 0xCDC4, 0x0000, 0x4368, -/* 0ADF */ 0xCDCC, 0x0000, 0x4369, -/* 0AE0 */ 0xCDD0, 0x0000, 0x436A, -/* 0AE1 */ 0xCDE8, 0x0000, 0x436B, -/* 0AE2 */ 0xCDEC, 0x0000, 0x436C, -/* 0AE3 */ 0xCDF0, 0x0000, 0x436D, -/* 0AE4 */ 0xCDF8, 0xCDFD, 0x1E74, -/* 0AE5 */ 0xCE04, 0x0000, 0x4372, -/* 0AE6 */ 0xCE08, 0x0000, 0x4373, -/* 0AE7 */ 0xCE0C, 0x0000, 0x4374, -/* 0AE8 */ 0xCE14, 0x0000, 0x4375, -/* 0AE9 */ 0xCE19, 0x0000, 0x4376, -/* 0AEA */ 0xCE20, 0xCE24, 0x1E7A, -/* 0AEB */ 0xCE28, 0x0000, 0x437A, -/* 0AEC */ 0xCE30, 0xCE35, 0x1E7F, -/* 0AED */ 0xCE58, 0xCE5C, 0x1E85, -/* 0AEE */ 0xCE68, 0xCE6D, 0x1E8A, -/* 0AEF */ 0xCE74, 0xCE78, 0x1E90, -/* 0AF0 */ 0xCE7C, 0x0000, 0x442E, -/* 0AF1 */ 0xCE84, 0xCE89, 0x1E95, -/* 0AF2 */ 0xCE90, 0xCE94, 0x1E9B, -/* 0AF3 */ 0xCE98, 0x0000, 0x4436, -/* 0AF4 */ 0xCEA0, 0xCEA1, 0x1EA0, -/* 0AF5 */ 0xCEAC, 0xCEAD, 0x1EA2, -/* 0AF6 */ 0xCEC1, 0x0000, 0x443E, -/* 0AF7 */ 0xCEE4, 0xCEEC, 0x1EA4, -/* 0AF8 */ 0xCEF4, 0xCEF5, 0x1EAD, -/* 0AF9 */ 0xCF00, 0xCF04, 0x1EAF, -/* 0AFA */ 0xCF08, 0x0000, 0x444C, -/* 0AFB */ 0xCF10, 0xCF15, 0x1EB4, -/* 0AFC */ 0xCF1C, 0x0000, 0x4451, -/* 0AFD */ 0xCF20, 0x0000, 0x4452, -/* 0AFE */ 0xCF24, 0x0000, 0x4453, -/* 0AFF */ 0xCF2C, 0xCF2D, 0x1EBA, -/* 0B00 */ 0xCF38, 0x0000, 0x4459, -/* 0B01 */ 0xCF54, 0xCF58, 0x1EBC, -/* 0B02 */ 0xCF5C, 0x0000, 0x445D, -/* 0B03 */ 0xCF64, 0xCF69, 0x1EC1, -/* 0B04 */ 0xCF70, 0xCF74, 0x1EC7, -/* 0B05 */ 0xCF78, 0x0000, 0x4465, -/* 0B06 */ 0xCF80, 0x0000, 0x4466, -/* 0B07 */ 0xCF85, 0x0000, 0x4467, -/* 0B08 */ 0xCF8C, 0x0000, 0x4468, -/* 0B09 */ 0xCFA1, 0x0000, 0x4469, -/* 0B0A */ 0xCFA8, 0x0000, 0x446A, -/* 0B0B */ 0xCFB0, 0x0000, 0x446B, -/* 0B0C */ 0xCFC4, 0x0000, 0x446C, -/* 0B0D */ 0xCFE0, 0xCFE4, 0x1ECC, -/* 0B0E */ 0xCFE8, 0x0000, 0x4470, -/* 0B0F */ 0xCFF0, 0xCFF5, 0x1ED1, -/* 0B10 */ 0xCFFC, 0x0000, 0x4475, -/* 0B11 */ 0xD000, 0x0000, 0x4476, -/* 0B12 */ 0xD004, 0x0000, 0x4477, -/* 0B13 */ 0xD011, 0x0000, 0x4478, -/* 0B14 */ 0xD018, 0x0000, 0x4479, -/* 0B15 */ 0xD02D, 0x0000, 0x447A, -/* 0B16 */ 0xD034, 0xD038, 0x1ED7, -/* 0B17 */ 0xD03C, 0x0000, 0x447E, -/* 0B18 */ 0xD044, 0xD049, 0x1EDC, -/* 0B19 */ 0xD050, 0x0000, 0x4525, -/* 0B1A */ 0xD054, 0x0000, 0x4526, -/* 0B1B */ 0xD058, 0x0000, 0x4527, -/* 0B1C */ 0xD060, 0x0000, 0x4528, -/* 0B1D */ 0xD06C, 0xD070, 0x1EE2, -/* 0B1E */ 0xD074, 0x0000, 0x452C, -/* 0B1F */ 0xD07C, 0xD07D, 0x1EE7, -/* 0B20 */ 0xD081, 0x0000, 0x452F, -/* 0B21 */ 0xD0A4, 0xD0A8, 0x1EE9, -/* 0B22 */ 0xD0AC, 0x0000, 0x4533, -/* 0B23 */ 0xD0B4, 0xD0B9, 0x1EEE, -/* 0B24 */ 0xD0C0, 0xD0C4, 0x1EF4, -/* 0B25 */ 0xD0C8, 0xD0C9, 0x1EF9, -/* 0B26 */ 0xD0D0, 0xD0D1, 0x1EFB, -/* 0B27 */ 0xD0DC, 0xD0E0, 0x1EFD, -/* 0B28 */ 0xD0E4, 0x0000, 0x4545, -/* 0B29 */ 0xD0EC, 0xD0ED, 0x1F02, -/* 0B2A */ 0xD0F8, 0x0000, 0x454B, -/* 0B2B */ 0xD10D, 0x0000, 0x454C, -/* 0B2C */ 0xD130, 0xD134, 0x1F04, -/* 0B2D */ 0xD138, 0xD13A, 0x1F09, -/* 0B2E */ 0xD140, 0xD141, 0x1F0C, -/* 0B2F */ 0xD14C, 0xD150, 0x1F0E, -/* 0B30 */ 0xD154, 0x0000, 0x455A, -/* 0B31 */ 0xD15C, 0xD161, 0x1F13, -/* 0B32 */ 0xD168, 0x0000, 0x455F, -/* 0B33 */ 0xD16C, 0x0000, 0x4560, -/* 0B34 */ 0xD17C, 0x0000, 0x4561, -/* 0B35 */ 0xD184, 0x0000, 0x4562, -/* 0B36 */ 0xD188, 0x0000, 0x4563, -/* 0B37 */ 0xD1A0, 0xD1A4, 0x1F19, -/* 0B38 */ 0xD1A8, 0x0000, 0x4567, -/* 0B39 */ 0xD1B0, 0xD1B5, 0x1F1E, -/* 0B3A */ 0xD1BA, 0xD1BC, 0x1F24, -/* 0B3B */ 0xD1C0, 0x0000, 0x456E, -/* 0B3C */ 0xD1D8, 0x0000, 0x456F, -/* 0B3D */ 0xD1F4, 0x0000, 0x4570, -/* 0B3E */ 0xD1F8, 0x0000, 0x4571, -/* 0B3F */ 0xD207, 0xD209, 0x1F27, -/* 0B40 */ 0xD210, 0x0000, 0x4574, -/* 0B41 */ 0xD22C, 0xD230, 0x1F2A, -/* 0B42 */ 0xD234, 0x0000, 0x4578, -/* 0B43 */ 0xD23C, 0xD241, 0x1F2F, -/* 0B44 */ 0xD248, 0x0000, 0x457D, -/* 0B45 */ 0xD25C, 0x0000, 0x457E, -/* 0B46 */ 0xD264, 0x0000, 0x4621, -/* 0B47 */ 0xD280, 0xD284, 0x1F35, -/* 0B48 */ 0xD288, 0x0000, 0x4625, -/* 0B49 */ 0xD290, 0xD291, 0x1F3A, -/* 0B4A */ 0xD295, 0x0000, 0x4628, -/* 0B4B */ 0xD29C, 0x0000, 0x4629, -/* 0B4C */ 0xD2A0, 0x0000, 0x462A, -/* 0B4D */ 0xD2A4, 0x0000, 0x462B, -/* 0B4E */ 0xD2AC, 0x0000, 0x462C, -/* 0B4F */ 0xD2B1, 0x0000, 0x462D, -/* 0B50 */ 0xD2B8, 0xD2C2, 0x1F3C, -/* 0B51 */ 0xD2C8, 0xD2CB, 0x1F47, -/* 0B52 */ 0xD2D4, 0x0000, 0x4637, -/* 0B53 */ 0xD2D8, 0x0000, 0x4638, -/* 0B54 */ 0xD2DC, 0x0000, 0x4639, -/* 0B55 */ 0xD2E4, 0xD2E5, 0x1F4B, -/* 0B56 */ 0xD2F0, 0xD2F4, 0x1F4D, -/* 0B57 */ 0xD2F8, 0x0000, 0x463F, -/* 0B58 */ 0xD300, 0xD305, 0x1F52, -/* 0B59 */ 0xD310, 0x0000, 0x4647, -/* 0B5A */ 0xD314, 0xD316, 0x1F58, -/* 0B5B */ 0xD31C, 0xD31D, 0x1F5B, -/* 0B5C */ 0xD325, 0xD32C, 0x1F5D, -/* 0B5D */ 0xD330, 0x0000, 0x4653, -/* 0B5E */ 0xD338, 0xD339, 0x1F65, -/* 0B5F */ 0xD344, 0xD345, 0x1F67, -/* 0B60 */ 0xD37C, 0xD380, 0x1F69, -/* 0B61 */ 0xD384, 0x0000, 0x465E, -/* 0B62 */ 0xD38C, 0xD38D, 0x1F6E, -/* 0B63 */ 0xD398, 0xD39C, 0x1F70, -/* 0B64 */ 0xD3A0, 0x0000, 0x4667, -/* 0B65 */ 0xD3A8, 0xD3AD, 0x1F75, -/* 0B66 */ 0xD3B4, 0x0000, 0x466C, -/* 0B67 */ 0xD3B8, 0x0000, 0x466D, -/* 0B68 */ 0xD3BC, 0x0000, 0x466E, -/* 0B69 */ 0xD3C4, 0xD3C9, 0x1F7B, -/* 0B6A */ 0xD3D0, 0x0000, 0x4673, -/* 0B6B */ 0xD3D8, 0x0000, 0x4674, -/* 0B6C */ 0xD3E1, 0xD3E3, 0x1F81, -/* 0B6D */ 0xD3EC, 0xD3F0, 0x1F84, -/* 0B6E */ 0xD3F4, 0x0000, 0x467A, -/* 0B6F */ 0xD3FC, 0xD401, 0x1F89, -/* 0B70 */ 0xD408, 0x0000, 0x4721, -/* 0B71 */ 0xD41D, 0x0000, 0x4722, -/* 0B72 */ 0xD440, 0x0000, 0x4723, -/* 0B73 */ 0xD444, 0x0000, 0x4724, -/* 0B74 */ 0xD45C, 0x0000, 0x4725, -/* 0B75 */ 0xD460, 0x0000, 0x4726, -/* 0B76 */ 0xD464, 0x0000, 0x4727, -/* 0B77 */ 0xD46D, 0xD46F, 0x1F8F, -/* 0B78 */ 0xD478, 0xD482, 0x1F92, -/* 0B79 */ 0xD488, 0xD48D, 0x1F9D, -/* 0B7A */ 0xD494, 0x0000, 0x4734, -/* 0B7B */ 0xD4A9, 0x0000, 0x4735, -/* 0B7C */ 0xD4CC, 0x0000, 0x4736, -/* 0B7D */ 0xD4D0, 0x0000, 0x4737, -/* 0B7E */ 0xD4D4, 0x0000, 0x4738, -/* 0B7F */ 0xD4DC, 0xD4DF, 0x1FA3, -/* 0B80 */ 0xD4E8, 0x0000, 0x473B, -/* 0B81 */ 0xD4EC, 0x0000, 0x473C, -/* 0B82 */ 0xD4F0, 0x0000, 0x473D, -/* 0B83 */ 0xD4F8, 0xD4FD, 0x1FA7, -/* 0B84 */ 0xD504, 0x0000, 0x4741, -/* 0B85 */ 0xD508, 0x0000, 0x4742, -/* 0B86 */ 0xD50C, 0x0000, 0x4743, -/* 0B87 */ 0xD514, 0xD517, 0x1FAD, -/* 0B88 */ 0xD53C, 0xD540, 0x1FB1, -/* 0B89 */ 0xD544, 0x0000, 0x474A, -/* 0B8A */ 0xD54C, 0xD551, 0x1FB6, -/* 0B8B */ 0xD558, 0xD55C, 0x1FBC, -/* 0B8C */ 0xD560, 0x0000, 0x4752, -/* 0B8D */ 0xD565, 0xD56D, 0x1FC1, -/* 0B8E */ 0xD574, 0xD578, 0x1FCA, -/* 0B8F */ 0xD57C, 0x0000, 0x475B, -/* 0B90 */ 0xD584, 0xD585, 0x1FCF, -/* 0B91 */ 0xD590, 0x0000, 0x4761, -/* 0B92 */ 0xD5A5, 0x0000, 0x4762, -/* 0B93 */ 0xD5C8, 0xD5CC, 0x1FD1, -/* 0B94 */ 0xD5D0, 0xD5D2, 0x1FD6, -/* 0B95 */ 0xD5D8, 0xD5DD, 0x1FD9, -/* 0B96 */ 0xD5E4, 0xD5E8, 0x1FDF, -/* 0B97 */ 0xD5EC, 0x0000, 0x476F, -/* 0B98 */ 0xD5F4, 0xD5F9, 0x1FE4, -/* 0B99 */ 0xD600, 0xD604, 0x1FEA, -/* 0B9A */ 0xD608, 0x0000, 0x4777, -/* 0B9B */ 0xD610, 0xD611, 0x1FEF, -/* 0B9C */ 0xD61C, 0x0000, 0x477D, -/* 0B9D */ 0xD620, 0x0000, 0x477E, -/* 0B9E */ 0xD624, 0x0000, 0x4821, -/* 0B9F */ 0xD62D, 0x0000, 0x4822, -/* 0BA0 */ 0xD638, 0xD63C, 0x1FF1, -/* 0BA1 */ 0xD640, 0x0000, 0x4826, -/* 0BA2 */ 0xD645, 0xD64D, 0x1FF6, -/* 0BA3 */ 0xD651, 0xD658, 0x1FFF, -/* 0BA4 */ 0xD65C, 0x0000, 0x4830, -/* 0BA5 */ 0xD667, 0xD669, 0x2007, -/* 0BA6 */ 0xD670, 0xD674, 0x200A, -/* 0BA7 */ 0xD683, 0xD685, 0x200F, -/* 0BA8 */ 0xD68C, 0xD690, 0x2012, -/* 0BA9 */ 0xD694, 0x0000, 0x483B, -/* 0BAA */ 0xD69D, 0xD6A1, 0x2017, -/* 0BAB */ 0xD6A8, 0x0000, 0x483F, -/* 0BAC */ 0xD6AC, 0x0000, 0x4840, -/* 0BAD */ 0xD6B0, 0x0000, 0x4841, -/* 0BAE */ 0xD6B9, 0xD6BB, 0x201C, -/* 0BAF */ 0xD6C4, 0xD6C8, 0x201F, -/* 0BB0 */ 0xD6CC, 0x0000, 0x4847, -/* 0BB1 */ 0xD6D1, 0xD6D9, 0x2024, -/* 0BB2 */ 0xD6E0, 0x0000, 0x484C, -/* 0BB3 */ 0xD6E4, 0x0000, 0x484D, -/* 0BB4 */ 0xD6E8, 0x0000, 0x484E, -/* 0BB5 */ 0xD6F0, 0x0000, 0x484F, -/* 0BB6 */ 0xD6F5, 0x0000, 0x4850, -/* 0BB7 */ 0xD6FC, 0xD700, 0x202D, -/* 0BB8 */ 0xD704, 0x0000, 0x4854, -/* 0BB9 */ 0xD711, 0x0000, 0x4855, -/* 0BBA */ 0xD718, 0xD71C, 0x2032, -/* 0BBB */ 0xD720, 0x0000, 0x4859, -/* 0BBC */ 0xD728, 0xD72D, 0x2037, -/* 0BBD */ 0xD734, 0xD738, 0x203D, -/* 0BBE */ 0xD73C, 0x0000, 0x4861, -/* 0BBF */ 0xD744, 0xD749, 0x2042, -/* 0BC0 */ 0xD750, 0xD754, 0x2048, -/* 0BC1 */ 0xD760, 0xD765, 0x204D, -/* 0BC2 */ 0xD769, 0xD76C, 0x2053, -/* 0BC3 */ 0xD770, 0x0000, 0x4872, -/* 0BC4 */ 0xD774, 0x0000, 0x4873, -/* 0BC5 */ 0xD77C, 0xD77D, 0x2057, -/* 0BC6 */ 0xD781, 0x0000, 0x4876, -/* 0BC7 */ 0xD788, 0xD78C, 0x2059, -/* 0BC8 */ 0xD790, 0x0000, 0x487A, -/* 0BC9 */ 0xD798, 0xD79D, 0x205E, -/* 0BCA */ 0xF900, 0xF90D, 0x2064, -/* 0BCB */ 0xF91D, 0xF922, 0x2072, -/* 0BCC */ 0xF926, 0xF927, 0x2078, -/* 0BCD */ 0xF92D, 0xF92F, 0x207A, -/* 0BCE */ 0xF944, 0xF949, 0x207D, -/* 0BCF */ 0xF958, 0xF97E, 0x2083, -/* 0BD0 */ 0xF982, 0xF986, 0x20AA, -/* 0BD1 */ 0xF98A, 0xF997, 0x20AF, -/* 0BD2 */ 0xF99B, 0x0000, 0x6668, -/* 0BD3 */ 0xF99F, 0xF9A1, 0x20BD, -/* 0BD4 */ 0xF9A5, 0xF9D7, 0x20C0, -/* 0BD5 */ 0xF9DC, 0xF9DF, 0x20F3, -/* 0BD6 */ 0xF9E4, 0xF9F6, 0x20F7, -/* 0BD7 */ 0xF9FA, 0xFA0B, 0x210A, -/* 0BD8 */ 0xFF3C, 0x0000, 0x212C, -/* 0BD9 */ 0xFF5E, 0x0000, 0x2226, -/* 0BDA */ 0xFFE0, 0xFFE6, 0x211C, -/*-------------------------------------------------------*/ -/* Offset=0x268C Start of MappingTable */ - -/* 0000 */ 0x222E, 0xFFFD, 0xFFFD, 0x2234, 0xFFFD, 0xFFFD, 0x2157, 0x2127, -/* 0008 */ 0xFFFD, 0x2823, 0xFFFD, 0xFFFD, 0x2129, 0xFFFD, 0xFFFD, 0x2146, -/* 0010 */ 0x213E, 0x2977, 0x2978, 0x2225, 0xFFFD, 0x2252, 0x2124, 0x222C, -/* 0018 */ 0x2976, 0x282C, 0xFFFD, 0x2879, 0x2876, 0x287A, 0x222F, 0x213F, -/* 0020 */ 0x282A, 0x282D, 0x292C, 0x2140, 0x292A, 0x2824, 0x2924, 0x2925, -/* 0028 */ 0x2826, 0x2926, 0x2828, 0x2928, 0x2829, 0x2929, 0x2930, 0x282F, -/* 0030 */ 0x292F, 0x282B, 0x292B, 0x282E, 0x292E, 0x2228, 0x222B, 0x222A, -/* 0038 */ 0x222D, 0xFFFD, 0x2229, 0x212A, 0xFFFD, 0xFFFD, 0x212E, 0x212F, -/* 0040 */ 0xFFFD, 0xFFFD, 0x2130, 0x2131, 0xFFFD, 0xFFFD, 0x2253, 0x2254, -/* 0048 */ 0x2125, 0x2126, 0x2236, 0xFFFD, 0x2147, 0x2148, 0x2724, 0xFFFD, -/* 0050 */ 0xFFFD, 0x2260, 0x2265, 0x2262, 0x2877, 0x2878, 0x2167, 0x2168, -/* 0058 */ 0x2166, 0x2169, 0x216A, 0x2255, 0x2258, 0x2256, 0x2259, 0x2257, -/* 0060 */ 0x2221, 0xFFFD, 0x2222, 0x2223, 0xFFFD, 0x2153, 0x2224, 0x2154, -/* 0068 */ 0x2174, 0xFFFD, 0xFFFD, 0x2175, 0x2233, 0xFFFD, 0x2232, 0x216E, -/* 0070 */ 0xFFFD, 0xFFFD, 0x2170, 0x2144, 0xFFFD, 0x2150, 0x212B, 0xFFFD, -/* 0078 */ 0x217C, 0x217D, 0x217B, 0x217A, 0x2172, 0x2173, 0xFFFD, 0x2231, -/* 0080 */ 0x2145, 0x2171, 0x212D, 0x216F, 0x2141, 0x2155, 0xFFFD, 0xFFFD, -/* 0088 */ 0x2142, 0x2143, 0x216C, 0x216D, 0x2178, 0x2179, 0xFFFD, 0xFFFD, -/* 0090 */ 0x2176, 0x2177, 0x2621, 0x262C, 0x2622, 0x262D, 0x2623, 0x2648, -/* 0098 */ 0x2647, 0x262E, 0x2624, 0x2642, 0x2641, 0x262F, 0x2626, 0x2646, -/* 00A0 */ 0x2645, 0x2631, 0x2625, 0x2644, 0x2643, 0x2630, 0x2627, 0x263C, -/* 00A8 */ 0x2649, 0x264A, 0x2637, 0x264B, 0x264C, 0x2632, 0x2629, 0x263E, -/* 00B0 */ 0x264D, 0x264E, 0x2639, 0x264F, 0x2650, 0x2634, 0x2628, 0x2651, -/* 00B8 */ 0x2652, 0x2638, 0x263D, 0x2653, 0x2654, 0x2633, 0x262A, 0x2655, -/* 00C0 */ 0x2656, 0x263A, 0x263F, 0x2657, 0x2658, 0x2635, 0x262B, 0x2659, -/* 00C8 */ 0x265A, 0x263B, 0x265B, 0x265C, 0x2640, 0x2161, 0x2160, 0xFFFD, -/* 00D0 */ 0x2243, 0x2247, 0x2248, 0x224B, 0x224A, 0x2249, 0x224C, 0x2163, -/* 00D8 */ 0x2162, 0xFFFD, 0xFFFD, 0x223A, 0x2239, 0x2165, 0x2164, 0xFFFD, -/* 00E0 */ 0xFFFD, 0x2238, 0x2237, 0x215F, 0x215E, 0x2242, 0xFFFD, 0xFFFD, -/* 00E8 */ 0x215B, 0xFFFD, 0xFFFD, 0x215D, 0x215C, 0x2244, 0x2245, 0x215A, -/* 00F0 */ 0x2159, 0x224F, 0x224E, 0x2250, 0xFFFD, 0x2251, 0x214F, 0xFFFD, -/* 00F8 */ 0x214E, 0x223C, 0x223D, 0xFFFD, 0x2240, 0x223B, 0x223E, 0xFFFD, -/* 0100 */ 0x223F, 0x224D, 0x225B, 0x225C, 0xFFFD, 0x225D, 0x225A, 0x216B, -/* 0108 */ 0x2132, 0x2133, 0x273A, 0x273B, 0x273D, 0x273E, 0x275A, 0x275B, -/* 0110 */ 0x2263, 0x276C, 0x2726, 0x2760, 0x276F, 0x2261, 0x273C, 0x276D, -/* 0118 */ 0x2735, 0x2739, 0x276A, 0xFFFD, 0xFFFD, 0x276B, 0xFFFD, 0xFFFD, -/* 0120 */ 0x275F, 0xFFFD, 0x2264, 0xFFFD, 0xFFFD, 0x2764, 0x276E, 0x2769, -/* 0128 */ 0x6C69, 0x6F4B, 0xFFFD, 0x7652, 0x5832, 0x6D5B, 0x5F32, 0x5F3E, -/* 0130 */ 0x793B, 0xFFFD, 0x5C74, 0x7564, 0xFFFD, 0xFFFD, 0x7326, 0x5D60, -/* 0138 */ 0x6126, 0xFFFD, 0x4E78, 0x5C30, 0x7C2F, 0x5321, 0xFFFD, 0x712B, -/* 0140 */ 0x6751, 0x522C, 0xFFFD, 0x4E79, 0x717D, 0xFFFD, 0x5E3F, 0x7B3A, -/* 0148 */ 0x7939, 0x4E52, 0xFFFD, 0x632B, 0x6B60, 0x4E7A, 0x4B77, 0x6525, -/* 0150 */ 0x4A61, 0xFFFD, 0x544C, 0x6A61, 0xFFFD, 0xFFFD, 0x5C63, 0x5F2D, -/* 0158 */ 0x5675, 0xFFFD, 0x6578, 0xFFFD, 0xFFFD, 0x5E40, 0x6C23, 0xFFFD, -/* 0160 */ 0x694D, 0xFFFD, 0x6A27, 0x6976, 0x7B3B, 0xFFFD, 0x6769, 0x6F4C, -/* 0168 */ 0xFFFD, 0xFFFD, 0x5066, 0xFFFD, 0xFFFD, 0x5E41, 0xFFFD, 0xFFFD, -/* 0170 */ 0x642C, 0xFFFD, 0xFFFD, 0x584C, 0x7971, 0xFFFD, 0x4E5F, 0x7A24, -/* 0178 */ 0x6632, 0xFFFD, 0x7A7B, 0xFFFD, 0xFFFD, 0x7A3D, 0x4C48, 0x6F4D, -/* 0180 */ 0x5555, 0x6427, 0x6C52, 0xFFFD, 0xFFFD, 0x7631, 0xFFFD, 0xFFFD, -/* 0188 */ 0x4E7B, 0xFFFD, 0xFFFD, 0x5051, 0x4B3F, 0xFFFD, 0x6D24, 0x6D28, -/* 0190 */ 0x5E42, 0x7662, 0x6D5C, 0x5C75, 0x6039, 0x544E, 0xFFFD, 0x7435, -/* 0198 */ 0x535B, 0x5635, 0x6C24, 0x6466, 0xFFFD, 0x716A, 0x4B6C, 0x4B40, -/* 01A0 */ 0x7972, 0x6C25, 0x505F, 0xFFFD, 0x676A, 0x506B, 0x5C51, 0x5B69, -/* 01A8 */ 0x7D4C, 0x5A61, 0xFFFD, 0x5636, 0xFFFD, 0x635F, 0xFFFD, 0x5E43, -/* 01B0 */ 0xFFFD, 0x5E44, 0x4A21, 0x6E6C, 0xFFFD, 0xFFFD, 0x5323, 0x6E37, -/* 01B8 */ 0x784F, 0x6A48, 0x6E38, 0x712C, 0x7125, 0x694E, 0x6579, 0x6C6A, -/* 01C0 */ 0x5D56, 0x6D42, 0x653A, 0x5B58, 0xFFFD, 0xFFFD, 0x4A22, 0xFFFD, -/* 01C8 */ 0xFFFD, 0x514D, 0x6C6B, 0x5E45, 0xFFFD, 0x6360, 0xFFFD, 0x4A49, -/* 01D0 */ 0x7269, 0xFFFD, 0x554E, 0xFFFD, 0x7636, 0xFFFD, 0x4E42, 0x5647, -/* 01D8 */ 0xFFFD, 0x6334, 0xFFFD, 0x712D, 0xFFFD, 0x6A62, 0x5742, 0xFFFD, -/* 01E0 */ 0x7327, 0xFFFD, 0xFFFD, 0x4D6A, 0xFFFD, 0x6B6E, 0x5932, 0x7D25, -/* 01E8 */ 0x7655, 0x5562, 0x7835, 0xFFFD, 0xFFFD, 0x4C75, 0x7535, 0x642D, -/* 01F0 */ 0x676B, 0x7155, 0x703B, 0xFFFD, 0xFFFD, 0x6935, 0xFFFD, 0x4C49, -/* 01F8 */ 0x7A55, 0xFFFD, 0xFFFD, 0x6154, 0xFFFD, 0xFFFD, 0x5756, 0xFFFD, -/* 0200 */ 0xFFFD, 0x5C41, 0xFFFD, 0x5E46, 0x7A6F, 0x6361, 0x6173, 0x5C76, -/* 0208 */ 0xFFFD, 0x4E7C, 0xFFFD, 0x5B44, 0xFFFD, 0x7871, 0xFFFD, 0xFFFD, -/* 0210 */ 0x5C64, 0xFFFD, 0x656F, 0x5556, 0xFFFD, 0xFFFD, 0x735A, 0xFFFD, -/* 0218 */ 0x4B41, 0xFFFD, 0x5B43, 0x597A, 0x536E, 0x7A38, 0xFFFD, 0xFFFD, -/* 0220 */ 0x7D26, 0x6B6F, 0xFFFD, 0x7426, 0xFFFD, 0x4C4A, 0x7328, 0xFFFD, -/* 0228 */ 0x735B, 0xFFFD, 0x5B27, 0x7637, 0xFFFD, 0x4F66, 0x7072, 0x4B5A, -/* 0230 */ 0xFFFD, 0x6752, 0x5743, 0x7670, 0x685E, 0x4A23, 0x4C27, 0x6A49, -/* 0238 */ 0x712E, 0xFFFD, 0x6F4E, 0x7630, 0x6F4F, 0x694F, 0xFFFD, 0x775E, -/* 0240 */ 0x5F21, 0x5D61, 0x754A, 0x6936, 0x676C, 0x6E6E, 0xFFFD, 0x7370, -/* 0248 */ 0xFFFD, 0x5F3F, 0x7452, 0x603A, 0x5F40, 0xFFFD, 0x4E60, 0x5C52, -/* 0250 */ 0x7D6A, 0x6869, 0xFFFD, 0x632C, 0x4A24, 0xFFFD, 0x5B78, 0x5E47, -/* 0258 */ 0x6B70, 0x7156, 0xFFFD, 0xFFFD, 0x6562, 0xFFFD, 0x4C4C, 0xFFFD, -/* 0260 */ 0xFFFD, 0x4B7B, 0x5F41, 0xFFFD, 0x566D, 0x5563, 0xFFFD, 0xFFFD, -/* 0268 */ 0x5153, 0xFFFD, 0x6570, 0x6834, 0x6B43, 0xFFFD, 0x6A2A, 0x7A7C, -/* 0270 */ 0x7576, 0x703C, 0x7D54, 0x603B, 0x4E43, 0xFFFD, 0x503A, 0x773A, -/* 0278 */ 0x5873, 0x774D, 0x5067, 0xFFFD, 0xFFFD, 0x6C7D, 0xFFFD, 0x522E, -/* 0280 */ 0x6E6F, 0x5557, 0x6A64, 0x7822, 0x4D6B, 0x573F, 0x7B31, 0xFFFD, -/* 0288 */ 0xFFFD, 0x4D6C, 0x5C32, 0x506C, 0x4E7D, 0x6E70, 0x737C, 0xFFFD, -/* 0290 */ 0xFFFD, 0x6E22, 0x5933, 0xFFFD, 0xFFFD, 0x5874, 0xFFFD, 0x6937, -/* 0298 */ 0x5871, 0xFFFD, 0x544F, 0x6527, 0x5552, 0x7422, 0xFFFD, 0x7157, -/* 02A0 */ 0xFFFD, 0xFFFD, 0x5558, 0xFFFD, 0x703D, 0x5750, 0x5450, 0x574F, -/* 02A8 */ 0x6B6A, 0x7D6B, 0xFFFD, 0xFFFD, 0x5B6D, 0x7C45, 0x4B42, 0x7D55, -/* 02B0 */ 0xFFFD, 0x7448, 0x686A, 0x7573, 0xFFFD, 0xFFFD, 0x795E, 0xFFFD, -/* 02B8 */ 0xFFFD, 0x536F, 0xFFFD, 0xFFFD, 0x6C53, 0xFFFD, 0xFFFD, 0x5D42, -/* 02C0 */ 0x6F37, 0x6754, 0xFFFD, 0x4A4A, 0x597B, 0xFFFD, 0xFFFD, 0x7A7D, -/* 02C8 */ 0x7777, 0x5C2C, 0x5757, 0x5F22, 0x4E3E, 0xFFFD, 0x5370, 0x7024, -/* 02D0 */ 0x616C, 0x4F67, 0x734B, 0x6D29, 0x4A3E, 0x764E, 0xFFFD, 0xFFFD, -/* 02D8 */ 0x5E7B, 0x503B, 0x5537, 0x6E71, 0x7428, 0xFFFD, 0x5C78, 0x4B27, -/* 02E0 */ 0xFFFD, 0x5A4E, 0x6D25, 0x6E72, 0x5C79, 0xFFFD, 0xFFFD, 0x795C, -/* 02E8 */ 0xFFFD, 0xFFFD, 0x735C, 0x7872, 0xFFFD, 0x7479, 0x503C, 0x5B79, -/* 02F0 */ 0x5731, 0x7025, 0x4B7D, 0x4D6D, 0x4A25, 0xFFFD, 0xFFFD, 0x562B, -/* 02F8 */ 0x5042, 0x703E, 0x523D, 0x4C24, 0x7A36, 0xFFFD, 0xFFFD, 0x4C4D, -/* 0300 */ 0xFFFD, 0x5A7A, 0xFFFD, 0x764F, 0xFFFD, 0x6938, 0xFFFD, 0x5875, -/* 0308 */ 0x574D, 0xFFFD, 0xFFFD, 0x5451, 0x696D, 0xFFFD, 0x4A6B, 0x5962, -/* 0310 */ 0xFFFD, 0x7D32, 0xFFFD, 0x632D, 0x564C, 0x5934, 0xFFFD, 0xFFFD, -/* 0318 */ 0x6127, 0x6E53, 0x5043, 0x7D33, 0xFFFD, 0x5564, 0xFFFD, 0xFFFD, -/* 0320 */ 0x4F68, 0xFFFD, 0x6D43, 0x5032, 0xFFFD, 0xFFFD, 0x4E7E, 0x5A28, -/* 0328 */ 0x7850, 0xFFFD, 0xFFFD, 0x7D56, 0x7851, 0xFFFD, 0x7852, 0x5C53, -/* 0330 */ 0x5D62, 0x7B79, 0x5D41, 0xFFFD, 0x6335, 0x6D5D, 0x4E44, 0xFFFD, -/* 0338 */ 0x4B21, 0x527B, 0x4F21, 0x6428, 0xFFFD, 0x7436, 0x6C7E, 0xFFFD, -/* 0340 */ 0xFFFD, 0x632E, 0x676D, 0x7D41, 0x5A62, 0xFFFD, 0xFFFD, 0x5833, -/* 0348 */ 0x5D64, 0x706F, 0x7671, 0x7A70, 0xFFFD, 0xFFFD, 0x5175, 0xFFFD, -/* 0350 */ 0xFFFD, 0x5A4F, 0xFFFD, 0x5C54, 0xFFFD, 0x5C26, 0xFFFD, 0x6F3F, -/* 0358 */ 0x4E4F, 0xFFFD, 0x6059, 0x5956, 0x6C54, 0x6A4B, 0xFFFD, 0xFFFD, -/* 0360 */ 0x4A3F, 0x5530, 0xFFFD, 0x4F69, 0x716D, 0xFFFD, 0x4C4F, 0x5758, -/* 0368 */ 0xFFFD, 0x7D27, 0x6A2B, 0x7632, 0x4F70, 0x793D, 0x6951, 0x7329, -/* 0370 */ 0x5060, 0x6952, 0xFFFD, 0x5A63, 0x6252, 0xFFFD, 0x7622, 0x6174, -/* 0378 */ 0x6755, 0x753F, 0x4F22, 0x4D2F, 0x4F23, 0x4D30, 0x717E, 0x5023, -/* 0380 */ 0x612F, 0x7823, 0xFFFD, 0x4A26, 0x773B, 0x726A, 0x5E48, 0x6953, -/* 0388 */ 0x7D5E, 0x4A40, 0x796A, 0x514E, 0x6E54, 0xFFFD, 0x5452, 0x5923, -/* 0390 */ 0x7D28, 0x5759, 0x774E, 0x7A3E, 0x4F56, 0xFFFD, 0x5770, 0xFFFD, -/* 0398 */ 0x6B61, 0x7845, 0x5C7A, 0xFFFD, 0xFFFD, 0x5D43, 0xFFFD, 0x795F, -/* 03A0 */ 0x7D65, 0x7623, 0xFFFD, 0x597C, 0x7D29, 0xFFFD, 0x676E, 0x6F50, -/* 03A8 */ 0xFFFD, 0x4D31, 0x7132, 0xFFFD, 0x7131, 0x4D32, 0xFFFD, 0x5A2B, -/* 03B0 */ 0xFFFD, 0x4A27, 0x6362, 0x7B3C, 0x5924, 0xFFFD, 0xFFFD, 0x6E3A, -/* 03B8 */ 0x7B7A, 0xFFFD, 0x4F24, 0xFFFD, 0x5C7B, 0x6D2A, 0xFFFD, 0xFFFD, -/* 03C0 */ 0x7221, 0x4E61, 0x6C56, 0xFFFD, 0xFFFD, 0x646E, 0x7921, 0xFFFD, -/* 03C8 */ 0xFFFD, 0x7B6F, 0x796B, 0x6E23, 0x4A28, 0xFFFD, 0xFFFD, 0x747A, -/* 03D0 */ 0x4D56, 0x7C76, 0x7826, 0xFFFD, 0x5E4A, 0x7246, 0x575A, 0xFFFD, -/* 03D8 */ 0x5350, 0x6A66, 0xFFFD, 0x735D, 0x7672, 0xFFFD, 0x5F42, 0x4C76, -/* 03E0 */ 0xFFFD, 0xFFFD, 0x533A, 0x603C, 0xFFFD, 0x744A, 0x547A, 0xFFFD, -/* 03E8 */ 0x7D2A, 0x7962, 0x7437, 0x7D42, 0x7C30, 0xFFFD, 0x7D6C, 0x4A62, -/* 03F0 */ 0x7D3D, 0xFFFD, 0x6A67, 0x5F43, 0x5152, 0x4E62, 0xFFFD, 0x5324, -/* 03F8 */ 0x7D2B, 0xFFFD, 0x5F60, 0x6770, 0xFFFD, 0x506E, 0xFFFD, 0xFFFD, -/* 0400 */ 0x732A, 0x5E4B, 0x7638, 0x6175, 0x7133, 0x7723, 0xFFFD, 0xFFFD, -/* 0408 */ 0x4A29, 0x4F25, 0xFFFD, 0xFFFD, 0x5F44, 0x6130, 0xFFFD, 0xFFFD, -/* 0410 */ 0x703F, 0xFFFD, 0x7624, 0xFFFD, 0x6336, 0x506F, 0xFFFD, 0xFFFD, -/* 0418 */ 0x7D6D, 0x5E2D, 0xFFFD, 0x7A3F, 0x5225, 0xFFFD, 0xFFFD, 0x7D6E, -/* 0420 */ 0x6176, 0x5E4C, 0xFFFD, 0xFFFD, 0x7C5E, 0xFFFD, 0x6C57, 0x5637, -/* 0428 */ 0x4D33, 0x7855, 0x6558, 0x4F6A, 0xFFFD, 0xFFFD, 0x4F50, 0xFFFD, -/* 0430 */ 0x6A4C, 0x6A2E, 0x6A2D, 0xFFFD, 0xFFFD, 0x5371, 0xFFFD, 0x5325, -/* 0438 */ 0x5024, 0xFFFD, 0xFFFD, 0x7222, 0x7223, 0xFFFD, 0x7778, 0x5033, -/* 0440 */ 0xFFFD, 0xFFFD, 0x5B29, 0xFFFD, 0xFFFD, 0x533B, 0x4A6C, 0xFFFD, -/* 0448 */ 0x7126, 0x4B55, 0x7767, 0xFFFD, 0xFFFD, 0x4D5E, 0xFFFD, 0x7724, -/* 0450 */ 0x535D, 0xFFFD, 0x4C50, 0x535C, 0xFFFD, 0xFFFD, 0x7A7E, 0x6B59, -/* 0458 */ 0xFFFD, 0x4F27, 0x6A2F, 0x6939, 0x7158, 0xFFFD, 0xFFFD, 0x5858, -/* 0460 */ 0xFFFD, 0xFFFD, 0x6072, 0x6634, 0x5C7C, 0x6350, 0xFFFD, 0xFFFD, -/* 0468 */ 0x727B, 0xFFFD, 0x5B46, 0x5071, 0xFFFD, 0x5072, 0x4F5C, 0xFFFD, -/* 0470 */ 0x5351, 0xFFFD, 0xFFFD, 0x4C31, 0x7758, 0xFFFD, 0x4B28, 0x6B3C, -/* 0478 */ 0x643E, 0x745C, 0xFFFD, 0xFFFD, 0x5C42, 0xFFFD, 0xFFFD, 0x7027, -/* 0480 */ 0xFFFD, 0xFFFD, 0x6640, 0xFFFD, 0xFFFD, 0x4A6D, 0x686B, 0x6568, -/* 0488 */ 0x5C43, 0xFFFD, 0xFFFD, 0x6D5E, 0x5372, 0x4E54, 0x672B, 0x4B43, -/* 0490 */ 0xFFFD, 0x6131, 0xFFFD, 0xFFFD, 0x7732, 0xFFFD, 0xFFFD, 0x5373, -/* 0498 */ 0x5352, 0xFFFD, 0x7540, 0x5F5D, 0xFFFD, 0xFFFD, 0x6E73, 0x6771, -/* 04A0 */ 0xFFFD, 0x7D34, 0x7352, 0xFFFD, 0xFFFD, 0x6E74, 0xFFFD, 0x6253, -/* 04A8 */ 0x4C51, 0xFFFD, 0x5F6A, 0x754D, 0xFFFD, 0x7172, 0x7A47, 0x5978, -/* 04B0 */ 0x5442, 0x6772, 0x6D5F, 0xFFFD, 0xFFFD, 0x4A4B, 0xFFFD, 0xFFFD, -/* 04B8 */ 0x5B7A, 0x6835, 0xFFFD, 0x5326, 0x7D35, 0xFFFD, 0xFFFD, 0x7949, -/* 04C0 */ 0xFFFD, 0x6462, 0xFFFD, 0x7B3D, 0xFFFD, 0xFFFD, 0x5724, 0x4E45, -/* 04C8 */ 0x4E55, 0x5666, 0x5E4D, 0x6C73, 0xFFFD, 0xFFFD, 0x6D60, 0x6C6C, -/* 04D0 */ 0x7B3E, 0x5F6B, 0xFFFD, 0x6178, 0x5073, 0x602A, 0x6862, 0xFFFD, -/* 04D8 */ 0xFFFD, 0x6254, 0x527D, 0xFFFD, 0x6528, 0x535E, 0xFFFD, 0x7438, -/* 04E0 */ 0x773C, 0x5C7D, 0xFFFD, 0x686C, 0x6467, 0xFFFD, 0xFFFD, 0x6377, -/* 04E8 */ 0x6572, 0xFFFD, 0xFFFD, 0x5074, 0x522F, 0x5C65, 0x5025, 0x7134, -/* 04F0 */ 0x7C31, 0x4C78, 0xFFFD, 0xFFFD, 0x5D46, 0x7A51, 0xFFFD, 0x775F, -/* 04F8 */ 0xFFFD, 0xFFFD, 0x7A28, 0x6E75, 0xFFFD, 0x5E4E, 0x6773, 0xFFFD, -/* 0500 */ 0xFFFD, 0x772C, 0x6B44, 0x6D61, 0x602B, 0x5D47, 0x5233, 0x523F, -/* 0508 */ 0x657D, 0x5D65, 0x584D, 0x5075, 0xFFFD, 0xFFFD, 0x686D, 0x5052, -/* 0510 */ 0xFFFD, 0x5958, 0x7666, 0xFFFD, 0xFFFD, 0x5B2A, 0x5859, 0xFFFD, -/* 0518 */ 0x7423, 0xFFFD, 0xFFFD, 0x745D, 0x6F51, 0xFFFD, 0xFFFD, 0x5935, -/* 0520 */ 0xFFFD, 0xFFFD, 0x6D2B, 0xFFFD, 0x6337, 0x6E3B, 0x4D34, 0xFFFD, -/* 0528 */ 0x6073, 0x6A4D, 0x6C75, 0x686E, 0xFFFD, 0x4B29, 0x712F, 0x4A4D, -/* 0530 */ 0xFFFD, 0x6C29, 0xFFFD, 0x726B, 0xFFFD, 0x7D6F, 0xFFFD, 0x7973, -/* 0538 */ 0x6641, 0xFFFD, 0xFFFD, 0x6C58, 0x6D2C, 0xFFFD, 0x6A4E, 0xFFFD, -/* 0540 */ 0x685F, 0x5226, 0xFFFD, 0xFFFD, 0x6774, 0x5156, 0xFFFD, 0xFFFD, -/* 0548 */ 0x6642, 0x6363, 0x7768, 0xFFFD, 0xFFFD, 0x6846, 0x5A2C, 0x6A30, -/* 0550 */ 0x4A2A, 0x6179, 0xFFFD, 0x6A31, 0x726C, 0xFFFD, 0xFFFD, 0x7A6E, -/* 0558 */ 0x7974, 0xFFFD, 0xFFFD, 0x526C, 0x7D70, 0xFFFD, 0x603D, 0x4E63, -/* 0560 */ 0x5F45, 0xFFFD, 0xFFFD, 0x653E, 0x6D2D, 0x7A6A, 0xFFFD, 0xFFFD, -/* 0568 */ 0x4D6E, 0x6D26, 0xFFFD, 0x6D2E, 0x706D, 0xFFFD, 0x5D21, 0xFFFD, -/* 0570 */ 0x6D2F, 0x7C78, 0xFFFD, 0x586B, 0x4C79, 0x4D35, 0x7A29, 0xFFFD, -/* 0578 */ 0x615D, 0x6255, 0x6D4F, 0x5D22, 0xFFFD, 0xFFFD, 0x794A, 0xFFFD, -/* 0580 */ 0x6A68, 0xFFFD, 0x656D, 0x536B, 0xFFFD, 0x6954, 0x617A, 0x644C, -/* 0588 */ 0xFFFD, 0x6164, 0x6847, 0xFFFD, 0xFFFD, 0x4E5B, 0x5C55, 0xFFFD, -/* 0590 */ 0x7735, 0x7C73, 0x7073, 0x4E2F, 0x7135, 0x6F52, 0x6848, 0x6B71, -/* 0598 */ 0x4B54, 0x603E, 0x6378, 0x6A69, 0x7C32, 0x6074, 0xFFFD, 0x4F60, -/* 05A0 */ 0xFFFD, 0x6E25, 0xFFFD, 0xFFFD, 0x7A2A, 0x6643, 0x6132, 0x4A2B, -/* 05A8 */ 0xFFFD, 0x6364, 0x693B, 0x6256, 0x7372, 0xFFFD, 0x6E56, 0x6A32, -/* 05B0 */ 0x5076, 0x6C59, 0x5A4B, 0x4F28, 0x585B, 0xFFFD, 0x794E, 0x6955, -/* 05B8 */ 0x6351, 0xFFFD, 0xFFFD, 0x523C, 0x582C, 0x734C, 0xFFFD, 0x4D7B, -/* 05C0 */ 0x7656, 0xFFFD, 0x6775, 0x686F, 0x6379, 0x523B, 0x7373, 0x637B, -/* 05C8 */ 0xFFFD, 0x5E50, 0x4E30, 0xFFFD, 0x5677, 0x7159, 0x7541, 0x5C44, -/* 05D0 */ 0xFFFD, 0x753B, 0xFFFD, 0x5E51, 0x5C66, 0xFFFD, 0xFFFD, 0x5E52, -/* 05D8 */ 0xFFFD, 0xFFFD, 0x6D62, 0x6E76, 0x6A4F, 0x706E, 0x637C, 0xFFFD, -/* 05E0 */ 0x535F, 0x5374, 0x6133, 0xFFFD, 0x6134, 0x7453, 0xFFFD, 0xFFFD, -/* 05E8 */ 0x5F46, 0x6339, 0x6B45, 0x7429, 0x4D36, 0x5279, 0xFFFD, 0x5A2D, -/* 05F0 */ 0x5263, 0x4F51, 0x4B5C, 0x4C7A, 0xFFFD, 0x4F5D, 0xFFFD, 0xFFFD, -/* 05F8 */ 0x6829, 0xFFFD, 0x633B, 0x633A, 0xFFFD, 0xFFFD, 0x605A, 0x5375, -/* 0600 */ 0xFFFD, 0x5726, 0xFFFD, 0x7635, 0x575B, 0x6155, 0xFFFD, 0xFFFD, -/* 0608 */ 0x546A, 0xFFFD, 0x5F23, 0x5077, 0x6D54, 0x645B, 0xFFFD, 0x617B, -/* 0610 */ 0x4B22, 0x5360, 0xFFFD, 0x643F, 0xFFFD, 0x7B40, 0xFFFD, 0x5A3E, -/* 0618 */ 0x644D, 0xFFFD, 0x5639, 0x6F40, 0xFFFD, 0x617C, 0x5C67, 0x5C68, -/* 0620 */ 0x7A56, 0xFFFD, 0x5376, 0x715A, 0xFFFD, 0x7A72, 0x554F, 0x5078, -/* 0628 */ 0xFFFD, 0xFFFD, 0x4D5F, 0xFFFD, 0xFFFD, 0x754B, 0xFFFD, 0x6470, -/* 0630 */ 0x4B2B, 0xFFFD, 0x5744, 0x627E, 0xFFFD, 0x5D5A, 0x5A2E, 0x4A6E, -/* 0638 */ 0x6321, 0xFFFD, 0xFFFD, 0x6863, 0xFFFD, 0xFFFD, 0x732B, 0x5471, -/* 0640 */ 0xFFFD, 0xFFFD, 0x4E64, 0xFFFD, 0x6872, 0x672E, 0xFFFD, 0x563A, -/* 0648 */ 0xFFFD, 0x5F6C, 0x6440, 0x7439, 0x7136, 0xFFFD, 0xFFFD, 0x625E, -/* 0650 */ 0x6135, 0xFFFD, 0xFFFD, 0x4D6F, 0x7127, 0x4E65, 0x4B5D, 0xFFFD, -/* 0658 */ 0xFFFD, 0x5963, 0xFFFD, 0xFFFD, 0x732C, 0xFFFD, 0xFFFD, 0x5079, -/* 0660 */ 0x6C2B, 0x5E53, 0x7769, 0xFFFD, 0xFFFD, 0x7975, 0x615E, 0x4B6E, -/* 0668 */ 0x633C, 0x7856, 0xFFFD, 0xFFFD, 0x5B6E, 0x745E, 0xFFFD, 0xFFFD, -/* 0670 */ 0x726D, 0xFFFD, 0x5B59, 0xFFFD, 0x7028, 0x5E54, 0xFFFD, 0x602C, -/* 0678 */ 0x6D63, 0xFFFD, 0xFFFD, 0x5361, 0xFFFD, 0x5F48, 0x5936, 0xFFFD, -/* 0680 */ 0x7D2C, 0x6F53, 0x6441, 0x786B, 0xFFFD, 0x5B2C, 0x763A, 0xFFFD, -/* 0688 */ 0x5B5F, 0x5353, 0x7847, 0x4A4E, 0x7841, 0x5234, 0xFFFD, 0xFFFD, -/* 0690 */ 0x5C34, 0x7A39, 0x4A4F, 0xFFFD, 0x7C33, 0x6A6A, 0x6A6B, 0x507A, -/* 0698 */ 0x6D64, 0xFFFD, 0xFFFD, 0x5D67, 0xFFFD, 0xFFFD, 0x5F49, 0x6E3C, -/* 06A0 */ 0xFFFD, 0x6F41, 0xFFFD, 0xFFFD, 0x4C52, 0xFFFD, 0x5D24, 0x5378, -/* 06A8 */ 0x7128, 0x4D37, 0xFFFD, 0x6F54, 0x645D, 0x5F6E, 0x4B2C, 0x693C, -/* 06B0 */ 0x793F, 0x562F, 0x5546, 0x4F2A, 0xFFFD, 0xFFFD, 0x4E29, 0xFFFD, -/* 06B8 */ 0xFFFD, 0x5678, 0x7137, 0x6E78, 0x5959, 0x735F, 0xFFFD, 0x7848, -/* 06C0 */ 0x4E46, 0x7466, 0xFFFD, 0xFFFD, 0x6645, 0x6F55, 0xFFFD, 0xFFFD, -/* 06C8 */ 0x4B6F, 0x7C5F, 0x5C27, 0xFFFD, 0xFFFD, 0x5667, 0x6352, 0xFFFD, -/* 06D0 */ 0x633D, 0xFFFD, 0x4F61, 0x7040, 0x6C5A, 0xFFFD, 0x5D57, 0x7B70, -/* 06D8 */ 0xFFFD, 0xFFFD, 0x6C2C, 0x7A57, 0x7B41, 0xFFFD, 0x5240, 0x4B2D, -/* 06E0 */ 0xFFFD, 0x7930, 0x7725, 0xFFFD, 0x4B2E, 0xFFFD, 0x5A2F, 0xFFFD, -/* 06E8 */ 0x5836, 0x5327, 0x7B32, 0xFFFD, 0x7D44, 0xFFFD, 0x6C2D, 0x6569, -/* 06F0 */ 0x696E, 0xFFFD, 0x7374, 0x7873, 0x7041, 0x5E2F, 0x7830, 0xFFFD, -/* 06F8 */ 0xFFFD, 0x7360, 0x672F, 0x5B2D, 0xFFFD, 0x6635, 0xFFFD, 0xFFFD, -/* 0700 */ 0x7928, 0xFFFD, 0xFFFD, 0x5D58, 0x6859, 0x6F56, 0x5362, 0xFFFD, -/* 0708 */ 0x625F, 0xFFFD, 0xFFFD, 0x7C60, 0x5748, 0x7D2D, 0x5F6F, 0x4C53, -/* 0710 */ 0x5379, 0x5470, 0x5B47, 0x5E55, 0x7074, 0xFFFD, 0x5550, 0x6559, -/* 0718 */ 0x7C47, 0x5C56, 0x6260, 0x7323, 0xFFFD, 0x536C, 0xFFFD, 0x744B, -/* 0720 */ 0x637D, 0xFFFD, 0x7931, 0x507B, 0x6C5B, 0x753C, 0x7224, 0x584E, -/* 0728 */ 0x584F, 0x7B6C, 0xFFFD, 0x5D48, 0x6468, 0xFFFD, 0xFFFD, 0x5241, -/* 0730 */ 0x563B, 0x5E56, 0xFFFD, 0xFFFD, 0x773D, 0x6C2E, 0x5061, 0xFFFD, -/* 0738 */ 0x6075, 0x6A33, 0xFFFD, 0x4E56, 0x6C76, 0x6261, 0x633E, 0x7C48, -/* 0740 */ 0xFFFD, 0xFFFD, 0x4D70, 0xFFFD, 0x7976, 0xFFFD, 0xFFFD, 0x5F70, -/* 0748 */ 0x7C61, 0x6D30, 0x7D51, 0x763B, 0xFFFD, 0xFFFD, 0x794F, 0x6B5A, -/* 0750 */ 0x4A41, 0xFFFD, 0x5238, 0x4D71, 0xFFFD, 0x6353, 0x7D66, 0x637A, -/* 0758 */ 0xFFFD, 0xFFFD, 0x702A, 0x7950, 0x7C62, 0xFFFD, 0x7827, 0x6165, -/* 0760 */ 0x6E79, 0x6776, 0x6A6D, 0xFFFD, 0xFFFD, 0x7C34, 0x7542, 0xFFFD, -/* 0768 */ 0xFFFD, 0x575C, 0x7075, 0xFFFD, 0x5D68, 0x536D, 0x757C, 0xFFFD, -/* 0770 */ 0x5A3F, 0xFFFD, 0x4C7B, 0x537A, 0x7424, 0x6F57, 0xFFFD, 0x5443, -/* 0778 */ 0x7B6D, 0xFFFD, 0x602D, 0xFFFD, 0xFFFD, 0x6A6E, 0x7B33, 0x6442, -/* 0780 */ 0x7667, 0x525D, 0xFFFD, 0x5F4C, 0xFFFD, 0xFFFD, 0x7C49, 0xFFFD, -/* 0788 */ 0xFFFD, 0x6529, 0x6076, 0x7633, 0x4B70, 0xFFFD, 0x6A6F, 0x6A70, -/* 0790 */ 0x5A40, 0x7834, 0x6B72, 0x6957, 0x6471, 0x7361, 0xFFFD, 0xFFFD, -/* 0798 */ 0x4B44, 0x6365, 0xFFFD, 0x4B45, 0x6A34, 0xFFFD, 0xFFFD, 0x693D, -/* 07A0 */ 0xFFFD, 0x5749, 0xFFFD, 0xFFFD, 0x6B5B, 0x6D31, 0xFFFD, 0x4C43, -/* 07A8 */ 0x773E, 0x7C4B, 0x7874, 0xFFFD, 0x5937, 0xFFFD, 0xFFFD, 0x7353, -/* 07B0 */ 0x7354, 0x7764, 0xFFFD, 0x7751, 0xFFFD, 0xFFFD, 0x5837, 0x4E31, -/* 07B8 */ 0x4A42, 0xFFFD, 0xFFFD, 0x7B34, 0x4B46, 0xFFFD, 0xFFFD, 0x7076, -/* 07C0 */ 0xFFFD, 0xFFFD, 0x5567, 0xFFFD, 0x6A50, 0x4C54, 0x4B2F, 0x742A, -/* 07C8 */ 0x692F, 0xFFFD, 0xFFFD, 0x7543, 0x6958, 0x7173, 0xFFFD, 0x557B, -/* 07D0 */ 0x5E3B, 0xFFFD, 0xFFFD, 0x747B, 0x7D73, 0x7D72, 0x7726, 0x5D49, -/* 07D8 */ 0xFFFD, 0xFFFD, 0x5453, 0xFFFD, 0x4C28, 0xFFFD, 0x5A41, 0x4C55, -/* 07E0 */ 0xFFFD, 0x5964, 0x4A50, 0x7A2B, 0x6B6B, 0x6778, 0x5965, 0x547B, -/* 07E8 */ 0x7C63, 0x7A58, 0xFFFD, 0x7355, 0xFFFD, 0x4F2B, 0xFFFD, 0xFFFD, -/* 07F0 */ 0x6B73, 0x557C, 0x5354, 0x4D7C, 0xFFFD, 0x5966, 0xFFFD, 0x6279, -/* 07F8 */ 0x6221, 0x6B54, 0xFFFD, 0x6077, 0x6432, 0x4C7C, 0x503D, 0xFFFD, -/* 0800 */ 0x4A71, 0x5740, 0xFFFD, 0x6E7A, 0x7D74, 0xFFFD, 0xFFFD, 0x5363, -/* 0808 */ 0xFFFD, 0x7B42, 0x5568, 0x5B2E, 0x6136, 0x7837, 0x603F, 0x7B43, -/* 0810 */ 0x5D6A, 0xFFFD, 0x6222, 0xFFFD, 0x6E26, 0x5D4A, 0xFFFD, 0xFFFD, -/* 0818 */ 0x5062, 0x5D26, 0xFFFD, 0xFFFD, 0x5D6B, 0xFFFD, 0xFFFD, 0x6479, -/* 0820 */ 0xFFFD, 0xFFFD, 0x632F, 0x507C, 0x4C3C, 0x776A, 0x6564, 0x5F71, -/* 0828 */ 0xFFFD, 0xFFFD, 0x7761, 0xFFFD, 0x7977, 0x6F39, 0xFFFD, 0xFFFD, -/* 0830 */ 0x7858, 0x5846, 0xFFFD, 0xFFFD, 0x6463, 0x754E, 0x5967, 0x5239, -/* 0838 */ 0x5543, 0xFFFD, 0xFFFD, 0x5A65, 0x5A50, 0xFFFD, 0x5159, 0x4E58, -/* 0840 */ 0xFFFD, 0x4B5E, 0x742C, 0x5A7B, 0xFFFD, 0x7669, 0x6873, 0x4F2C, -/* 0848 */ 0x7070, 0xFFFD, 0x747D, 0x5B48, 0x4E40, 0x6354, 0x514F, 0x7175, -/* 0850 */ 0xFFFD, 0x4D72, 0xFFFD, 0x4F6B, 0x6326, 0x515A, 0xFFFD, 0x7225, -/* 0858 */ 0x7226, 0xFFFD, 0x644E, 0x6F58, 0x6649, 0xFFFD, 0x5838, 0x7A73, -/* 0860 */ 0x7335, 0xFFFD, 0xFFFD, 0x7824, 0xFFFD, 0xFFFD, 0x5173, 0x6648, -/* 0868 */ 0x5C69, 0x5E57, 0x745F, 0xFFFD, 0xFFFD, 0x5174, 0x523A, 0x6223, -/* 0870 */ 0x537C, 0xFFFD, 0xFFFD, 0x6D66, 0x647A, 0xFFFD, 0x4F5E, 0xFFFD, -/* 0878 */ 0xFFFD, 0x4E50, 0x5553, 0x7375, 0x772E, 0xFFFD, 0xFFFD, 0x6F48, -/* 0880 */ 0xFFFD, 0x4D73, 0x754F, 0x6573, 0x7042, 0x6A71, 0xFFFD, 0x5026, -/* 0888 */ 0x595A, 0x702B, 0x6540, 0x7C35, 0x4C29, 0x7D46, 0x6A35, 0xFFFD, -/* 0890 */ 0x652A, 0x5F3A, 0x615F, 0xFFFD, 0x5A51, 0x6138, 0xFFFD, 0x6874, -/* 0898 */ 0x537D, 0x5A66, 0x7733, 0x5938, 0x5939, 0x6F49, 0x774B, 0x5F2E, -/* 08A0 */ 0x6875, 0x744C, 0x5A7C, 0x5968, 0xFFFD, 0x776B, 0x7549, 0xFFFD, -/* 08A8 */ 0x733C, 0xFFFD, 0x5A52, 0x6836, 0xFFFD, 0xFFFD, 0x564F, 0x743A, -/* 08B0 */ 0xFFFD, 0x7749, 0xFFFD, 0xFFFD, 0x4C2A, 0xFFFD, 0xFFFD, 0x7043, -/* 08B8 */ 0x4C56, 0x5053, 0xFFFD, 0x533D, 0x5B7B, 0xFFFD, 0x4B60, 0x5364, -/* 08C0 */ 0x7677, 0xFFFD, 0xFFFD, 0x553A, 0x734D, 0x4B61, 0x742D, 0xFFFD, -/* 08C8 */ 0x7C2A, 0x6876, 0xFFFD, 0x5A67, 0x4E66, 0x7C2B, 0x553B, 0xFFFD, -/* 08D0 */ 0xFFFD, 0x7228, 0x6225, 0x4D39, 0x6A72, 0x4B47, 0xFFFD, 0x4D74, -/* 08D8 */ 0xFFFD, 0xFFFD, 0x5B2F, 0x6F59, 0x4D3A, 0xFFFD, 0xFFFD, 0x7C79, -/* 08E0 */ 0x5F73, 0x4E67, 0x5A42, 0xFFFD, 0x4F2D, 0x6779, 0x7828, 0x4A72, -/* 08E8 */ 0x5F24, 0xFFFD, 0xFFFD, 0x5444, 0x4C57, 0x6542, 0x4D3B, 0xFFFD, -/* 08F0 */ 0x6F5A, 0x6E58, 0xFFFD, 0x5D27, 0x6226, 0x5630, 0x784A, 0xFFFD, -/* 08F8 */ 0x7C7A, 0xFFFD, 0x597E, 0x5D6C, 0x5A68, 0x5460, 0xFFFD, 0x5679, -/* 0900 */ 0xFFFD, 0x4D57, 0x5E58, 0xFFFD, 0xFFFD, 0x7278, 0xFFFD, 0x6456, -/* 0908 */ 0xFFFD, 0xFFFD, 0x5045, 0x742E, 0xFFFD, 0x5D28, 0x6D45, 0x7356, -/* 0910 */ 0xFFFD, 0xFFFD, 0x5E59, 0x6366, 0x5328, 0xFFFD, 0x5B30, 0xFFFD, -/* 0918 */ 0xFFFD, 0x655A, 0x633F, 0x6041, 0x6F5B, 0xFFFD, 0xFFFD, 0x7069, -/* 0920 */ 0xFFFD, 0xFFFD, 0x5732, 0x5969, 0xFFFD, 0xFFFD, 0x507E, 0xFFFD, -/* 0928 */ 0x6C6D, 0x5329, 0xFFFD, 0x7229, 0x7044, 0xFFFD, 0xFFFD, 0x6262, -/* 0930 */ 0x696F, 0x7951, 0xFFFD, 0xFFFD, 0x6959, 0x685A, 0x5A43, 0x5A44, -/* 0938 */ 0x5445, 0xFFFD, 0x677A, 0x4D60, 0x6330, 0xFFFD, 0x5B32, 0x7B44, -/* 0940 */ 0xFFFD, 0x7363, 0xFFFD, 0x5925, 0x7B67, 0x5D4B, 0x5054, 0xFFFD, -/* 0948 */ 0x6636, 0x602E, 0x7D5A, 0x5C35, 0x6078, 0x6731, 0x7570, 0xFFFD, -/* 0950 */ 0x585C, 0x6D46, 0x6139, 0xFFFD, 0x6340, 0x7940, 0x6970, 0xFFFD, -/* 0958 */ 0xFFFD, 0x595B, 0xFFFD, 0x7364, 0x5C36, 0x6469, 0x7045, 0x6341, -/* 0960 */ 0x7C4C, 0x7C4D, 0x724B, 0xFFFD, 0x724C, 0x715B, 0xFFFD, 0x7A59, -/* 0968 */ 0xFFFD, 0x7138, 0x7D75, 0x6079, 0x677B, 0x7C37, 0x7C64, 0x7B45, -/* 0970 */ 0x6367, 0x5839, 0xFFFD, 0x7678, 0xFFFD, 0xFFFD, 0x5C45, 0x4C58, -/* 0978 */ 0x602F, 0x7467, 0xFFFD, 0x6F5C, 0x4F7C, 0x6F5D, 0xFFFD, 0x722A, -/* 0980 */ 0x7D3E, 0xFFFD, 0xFFFD, 0x4A2C, 0x7D3B, 0x7D47, 0x6732, 0xFFFD, -/* 0988 */ 0x6A51, 0x5F74, 0x516C, 0x645E, 0x6543, 0x5926, 0xFFFD, 0xFFFD, -/* 0990 */ 0x4D3C, 0xFFFD, 0x7365, 0x6D55, 0xFFFD, 0xFFFD, 0x593A, 0x6D67, -/* 0998 */ 0x7B35, 0x786C, 0x6067, 0xFFFD, 0x4C59, 0xFFFD, 0xFFFD, 0x5446, -/* 09A0 */ 0x6725, 0xFFFD, 0x5575, 0x533E, 0xFFFD, 0x7C7B, 0x6472, 0xFFFD, -/* 09A8 */ 0xFFFD, 0x5F75, 0xFFFD, 0xFFFD, 0x6878, 0x786D, 0xFFFD, 0xFFFD, -/* 09B0 */ 0x4E47, 0x6858, 0xFFFD, 0x4D58, 0x6756, 0x4C5A, 0xFFFD, 0xFFFD, -/* 09B8 */ 0x4A63, 0x5F76, 0x7047, 0x7046, 0xFFFD, 0x583A, 0xFFFD, 0x7174, -/* 09C0 */ 0x7470, 0x754C, 0xFFFD, 0xFFFD, 0x7C65, 0x6A45, 0x6A73, 0xFFFD, -/* 09C8 */ 0x5D5B, 0xFFFD, 0x5C57, 0x5E7D, 0x7279, 0xFFFD, 0x5547, 0x5850, -/* 09D0 */ 0xFFFD, 0x7048, 0x5121, 0x5122, 0x5954, 0x5668, 0x594A, 0xFFFD, -/* 09D8 */ 0x5A31, 0x5847, 0x5C62, 0x734E, 0x7574, 0xFFFD, 0xFFFD, 0x7139, -/* 09E0 */ 0xFFFD, 0xFFFD, 0x5A53, 0xFFFD, 0x766A, 0x4F75, 0xFFFD, 0xFFFD, -/* 09E8 */ 0x7D2E, 0x4A52, 0xFFFD, 0xFFFD, 0x5F34, 0x575D, 0x7A3A, 0x6E27, -/* 09F0 */ 0x753D, 0xFFFD, 0x7875, 0xFFFD, 0xFFFD, 0x6D68, 0x5461, 0xFFFD, -/* 09F8 */ 0x5123, 0x6156, 0x7978, 0xFFFD, 0x5B4A, 0x4B79, 0x5454, 0xFFFD, -/* 0A00 */ 0x595C, 0xFFFD, 0x6E3E, 0xFFFD, 0x776D, 0x526E, 0xFFFD, 0xFFFD, -/* 0A08 */ 0x6166, 0x7779, 0x5D6D, 0xFFFD, 0x685B, 0xFFFD, 0x5B33, 0x5177, -/* 0A10 */ 0x6030, 0xFFFD, 0xFFFD, 0x5462, 0xFFFD, 0x7657, 0xFFFD, 0x5779, -/* 0A18 */ 0xFFFD, 0xFFFD, 0x585D, 0xFFFD, 0x4D7D, 0x722B, 0x4D3D, 0x7842, -/* 0A20 */ 0xFFFD, 0xFFFD, 0x722C, 0xFFFD, 0xFFFD, 0x4A2D, 0x4A2E, 0x4F2E, -/* 0A28 */ 0x5B5A, 0x593B, 0x4A73, 0x7653, 0x6678, 0x6A75, 0x6A76, 0xFFFD, -/* 0A30 */ 0xFFFD, 0x7679, 0x4F2F, 0xFFFD, 0xFFFD, 0x4A53, 0xFFFD, 0xFFFD, -/* 0A38 */ 0x4A2F, 0x5230, 0x713A, 0xFFFD, 0x5733, 0x6343, 0x737D, 0x5E5A, -/* 0A40 */ 0x5E5B, 0xFFFD, 0xFFFD, 0x6F5E, 0x6263, 0x6E7B, 0xFFFD, 0xFFFD, -/* 0A48 */ 0x5F77, 0x574A, 0x4E68, 0x5B5B, 0x7A37, 0x5046, 0xFFFD, 0xFFFD, -/* 0A50 */ 0x4C2B, 0x6E28, 0xFFFD, 0xFFFD, 0x4B7A, 0x7979, 0x4C7D, 0x537E, -/* 0A58 */ 0x726E, 0xFFFD, 0x5455, 0x5F4D, 0xFFFD, 0x7C38, 0x5150, 0x4A54, -/* 0A60 */ 0xFFFD, 0x5559, 0x6E29, 0x763C, 0xFFFD, 0xFFFD, 0x4C5B, 0x7049, -/* 0A68 */ 0xFFFD, 0x7C7C, 0xFFFD, 0x6849, 0x747E, 0x677C, 0x575E, 0x5E5C, -/* 0A70 */ 0xFFFD, 0x702C, 0x4C7E, 0x4D61, 0xFFFD, 0x613A, 0xFFFD, 0x5B6F, -/* 0A78 */ 0x5A32, 0x5125, 0x5C38, 0x5876, 0xFFFD, 0x5124, 0xFFFD, 0x4D62, -/* 0A80 */ 0x5C6A, 0xFFFD, 0xFFFD, 0x7077, 0xFFFD, 0x704A, 0x503E, 0xFFFD, -/* 0A88 */ 0x5D5C, 0x5456, 0x5356, 0x6D50, 0x4D21, 0x5421, 0x4E32, 0x6355, -/* 0A90 */ 0x7550, 0x664B, 0xFFFD, 0x7571, 0x7923, 0x605B, 0x766B, 0xFFFD, -/* 0A98 */ 0x4B71, 0xFFFD, 0x596A, 0x7522, 0x5751, 0xFFFD, 0x5178, 0x6A78, -/* 0AA0 */ 0x6A79, 0x5A33, 0x6F5F, 0xFFFD, 0xFFFD, 0x716F, 0xFFFD, 0x6576, -/* 0AA8 */ 0x6E3F, 0x6264, 0x503F, 0xFFFD, 0x7A2C, 0x7551, 0x6733, 0x724E, -/* 0AB0 */ 0x5B34, 0x7C4E, 0xFFFD, 0x5D6E, 0x4D3E, 0xFFFD, 0x5A69, 0x4F30, -/* 0AB8 */ 0x7759, 0x7366, 0xFFFD, 0xFFFD, 0x4E59, 0x4E2A, 0xFFFD, 0x4B48, -/* 0AC0 */ 0x5027, 0xFFFD, 0x704B, 0xFFFD, 0x5047, 0xFFFD, 0xFFFD, 0x6445, -/* 0AC8 */ 0x555A, 0xFFFD, 0x5727, 0x6E40, 0xFFFD, 0x7876, 0x7552, 0x6D69, -/* 0AD0 */ 0xFFFD, 0x593C, 0xFFFD, 0x6546, 0x7523, 0xFFFD, 0xFFFD, 0x5A54, -/* 0AD8 */ 0x6227, 0x7B7C, 0xFFFD, 0xFFFD, 0x715C, 0x687A, 0xFFFD, 0xFFFD, -/* 0AE0 */ 0x4E69, 0x6978, 0x6265, 0x5039, 0x5472, 0x5126, 0xFFFD, 0x5F4E, -/* 0AE8 */ 0x6565, 0x5055, 0x4B7E, 0x6D6A, 0x5422, 0x4F76, 0x556A, 0x716E, -/* 0AF0 */ 0x4F6D, 0xFFFD, 0x6D6B, 0x7D62, 0x732D, 0xFFFD, 0x7D5B, 0x5127, -/* 0AF8 */ 0xFFFD, 0xFFFD, 0x7D63, 0x4E33, 0x7D64, 0x7A4E, 0x4A30, 0xFFFD, -/* 0B00 */ 0x7727, 0xFFFD, 0x4F31, 0x6622, 0xFFFD, 0x7C36, 0x722D, 0x6F61, -/* 0B08 */ 0x732E, 0x5C46, 0x596B, 0x5576, 0x4F7D, 0xFFFD, 0xFFFD, 0x5E5D, -/* 0B10 */ 0x646A, 0x724F, 0xFFFD, 0x773F, 0xFFFD, 0xFFFD, 0x6266, 0x6228, -/* 0B18 */ 0x6356, 0xFFFD, 0x6D51, 0x5631, 0x5E32, 0xFFFD, 0xFFFD, 0x6068, -/* 0B20 */ 0xFFFD, 0xFFFD, 0x532B, 0xFFFD, 0x6B5C, 0xFFFD, 0xFFFD, 0x5F2F, -/* 0B28 */ 0xFFFD, 0x4A43, 0xFFFD, 0xFFFD, 0x6E7C, 0xFFFD, 0x7D43, 0x6B76, -/* 0B30 */ 0x4F32, 0x596C, 0xFFFD, 0x593D, 0xFFFD, 0x585F, 0xFFFD, 0xFFFD, -/* 0B38 */ 0x5438, 0x6B3E, 0x5D6F, 0x7B46, 0x4F33, 0x642B, 0xFFFD, 0x5A45, -/* 0B40 */ 0xFFFD, 0x586C, 0x6229, 0xFFFD, 0xFFFD, 0x5E3C, 0x6735, 0x5B70, -/* 0B48 */ 0xFFFD, 0x6F62, 0x7170, 0x4F34, 0x5B71, 0xFFFD, 0x6031, 0x5F25, -/* 0B50 */ 0xFFFD, 0x7952, 0xFFFD, 0xFFFD, 0x677D, 0xFFFD, 0xFFFD, 0x6623, -/* 0B58 */ 0x7B71, 0x4B30, 0x722E, 0x4D67, 0xFFFD, 0x685C, 0xFFFD, 0xFFFD, -/* 0B60 */ 0x6757, 0xFFFD, 0xFFFD, 0x7740, 0xFFFD, 0x5063, 0x4C3D, 0xFFFD, -/* 0B68 */ 0xFFFD, 0x5129, 0x5D4C, 0xFFFD, 0xFFFD, 0x637E, 0x512A, 0x682A, -/* 0B70 */ 0xFFFD, 0x6A36, 0x797A, 0x664C, 0x7658, 0x594B, 0xFFFD, 0x5952, -/* 0B78 */ 0x534B, 0x5877, 0x5A29, 0x7578, 0xFFFD, 0xFFFD, 0x5E5E, 0x722F, -/* 0B80 */ 0x7829, 0x5848, 0xFFFD, 0xFFFD, 0x6E41, 0x5D73, 0x6A7A, 0xFFFD, -/* 0B88 */ 0x763D, 0x613B, 0x4D3F, 0x7454, 0x664D, 0xFFFD, 0x7C4F, 0x7B22, -/* 0B90 */ 0xFFFD, 0x605C, 0x743B, 0x5A55, 0xFFFD, 0x7932, 0x7B72, 0xFFFD, -/* 0B98 */ 0x5B76, 0xFFFD, 0x5E5F, 0x785C, 0x776E, 0x6B68, 0xFFFD, 0x527A, -/* 0BA0 */ 0xFFFD, 0xFFFD, 0x713C, 0xFFFD, 0xFFFD, 0x7A5A, 0xFFFD, 0xFFFD, -/* 0BA8 */ 0x5A6A, 0x5A46, 0x7741, 0xFFFD, 0xFFFD, 0x6736, 0x6547, 0x562C, -/* 0BB0 */ 0x6129, 0xFFFD, 0x622A, 0xFFFD, 0x5526, 0xFFFD, 0xFFFD, 0x5457, -/* 0BB8 */ 0x7250, 0xFFFD, 0x6A7B, 0xFFFD, 0x605D, 0x7B73, 0x713D, 0xFFFD, -/* 0BC0 */ 0xFFFD, 0x6267, 0x7D57, 0xFFFD, 0x4E48, 0x6A37, 0xFFFD, 0x7C40, -/* 0BC8 */ 0xFFFD, 0x7D67, 0x776F, 0xFFFD, 0xFFFD, 0x5735, 0x6F3A, 0x715D, -/* 0BD0 */ 0xFFFD, 0x5E33, 0x684B, 0xFFFD, 0xFFFD, 0x785D, 0xFFFD, 0xFFFD, -/* 0BD8 */ 0x7B47, 0x5548, 0xFFFD, 0x575F, 0xFFFD, 0x5D29, 0x6931, 0xFFFD, -/* 0BE0 */ 0xFFFD, 0x7A2D, 0x7659, 0x7A74, 0x666E, 0xFFFD, 0x4C5C, 0x613C, -/* 0BE8 */ 0x606F, 0xFFFD, 0xFFFD, 0x693F, 0x7C7D, 0x664E, 0xFFFD, 0xFFFD, -/* 0BF0 */ 0x6157, 0xFFFD, 0x664F, 0xFFFD, 0x7471, 0x6473, 0xFFFD, 0xFFFD, -/* 0BF8 */ 0x647B, 0xFFFD, 0xFFFD, 0x7964, 0x6F63, 0xFFFD, 0xFFFD, 0x4F6E, -/* 0C00 */ 0x763E, 0x6032, 0x7C7E, 0x512B, 0x7B48, 0xFFFD, 0x6257, 0x5423, -/* 0C08 */ 0x7078, 0x5728, 0x6167, 0xFFFD, 0xFFFD, 0x533F, 0x6F64, 0xFFFD, -/* 0C10 */ 0x5745, 0x6B62, 0xFFFD, 0xFFFD, 0x7C67, 0xFFFD, 0xFFFD, 0x6422, -/* 0C18 */ 0xFFFD, 0x6268, 0xFFFD, 0x6650, 0xFFFD, 0x7B68, 0x7468, 0x6574, -/* 0C20 */ 0x743C, 0x7455, 0x5F36, 0xFFFD, 0x7C39, 0x6E42, 0x4A75, 0x6F65, -/* 0C28 */ 0x4B62, 0x5424, 0xFFFD, 0x5E60, 0x5A7D, 0x6446, 0x683E, 0x605E, -/* 0C30 */ 0x7634, 0x6A52, 0xFFFD, 0x797B, 0xFFFD, 0xFFFD, 0x6042, 0xFFFD, -/* 0C38 */ 0x4A64, 0xFFFD, 0x6737, 0xFFFD, 0x6A7D, 0xFFFD, 0x595D, 0xFFFD, -/* 0C40 */ 0x5A34, 0x6E2A, 0x7B69, 0x5B4B, 0x5A35, 0x713E, 0xFFFD, 0xFFFD, -/* 0C48 */ 0x532C, 0x7B49, 0xFFFD, 0x5F4F, 0xFFFD, 0xFFFD, 0x5340, 0x6357, -/* 0C50 */ 0xFFFD, 0x6F66, 0x7C50, 0x7553, 0xFFFD, 0xFFFD, 0x6C5C, 0x7737, -/* 0C58 */ 0xFFFD, 0xFFFD, 0x6A38, 0x5179, 0x5736, 0x4F35, 0xFFFD, 0x5928, -/* 0C60 */ 0xFFFD, 0xFFFD, 0x6C6E, 0xFFFD, 0xFFFD, 0x5D2A, 0x4D22, 0x682E, -/* 0C68 */ 0x613D, 0xFFFD, 0x7251, 0x5B35, 0xFFFD, 0x7367, 0x587E, 0x7C51, -/* 0C70 */ 0xFFFD, 0x6D32, 0x742F, 0xFFFD, 0x7B23, 0xFFFD, 0xFFFD, 0x7C41, -/* 0C78 */ 0xFFFD, 0x6E2B, 0x5425, 0x4D63, 0x583B, 0xFFFD, 0x655B, 0x7877, -/* 0C80 */ 0x5729, 0xFFFD, 0x4B49, 0xFFFD, 0xFFFD, 0x6651, 0x704C, 0x582E, -/* 0C88 */ 0xFFFD, 0x7953, 0x557E, 0x583C, 0x7230, 0x622B, 0x7368, 0x6D6C, -/* 0C90 */ 0xFFFD, 0x6738, 0x5A7E, 0xFFFD, 0xFFFD, 0x4C3E, 0xFFFD, 0xFFFD, -/* 0C98 */ 0x727C, 0x5A6B, 0xFFFD, 0x6258, 0x6D56, 0xFFFD, 0xFFFD, 0x5651, -/* 0CA0 */ 0x6033, 0xFFFD, 0xFFFD, 0x7C52, 0xFFFD, 0x6B48, 0x5341, 0x704D, -/* 0CA8 */ 0xFFFD, 0x4F77, 0x6D52, 0xFFFD, 0x5458, 0x5C49, 0x5771, 0xFFFD, -/* 0CB0 */ 0xFFFD, 0x5F3B, 0xFFFD, 0xFFFD, 0x7325, 0x713F, 0x7831, 0xFFFD, -/* 0CB8 */ 0x697A, 0x7B4B, 0xFFFD, 0xFFFD, 0x4A55, 0x7954, 0x774A, 0xFFFD, -/* 0CC0 */ 0xFFFD, 0x5648, 0x7C68, 0x733D, 0xFFFD, 0x6E7E, 0xFFFD, 0x677E, -/* 0CC8 */ 0x5336, 0xFFFD, 0x4C2D, 0x767A, 0x5632, 0x5258, 0x702D, 0x7B4C, -/* 0CD0 */ 0x6B21, 0xFFFD, 0xFFFD, 0x5426, 0x7B4D, 0xFFFD, 0x553D, 0x715F, -/* 0CD8 */ 0xFFFD, 0xFFFD, 0x767B, 0xFFFD, 0x5E34, 0x556B, 0xFFFD, 0xFFFD, -/* 0CE0 */ 0x6548, 0x7B24, 0x5439, 0xFFFD, 0xFFFD, 0x5E61, 0xFFFD, 0x6423, -/* 0CE8 */ 0x5737, 0xFFFD, 0x786E, 0x5E35, 0xFFFD, 0xFFFD, 0x5652, 0xFFFD, -/* 0CF0 */ 0x7955, 0x673A, 0x6B55, 0x5577, 0x6F67, 0x613E, 0x5669, 0x566E, -/* 0CF8 */ 0x7B25, 0x616E, 0x6D47, 0x6E2C, 0x7D5C, 0x6D33, 0x4E49, 0x6F68, -/* 0D00 */ 0xFFFD, 0xFFFD, 0x613F, 0x7A5B, 0x4B63, 0x7729, 0xFFFD, 0x7B26, -/* 0D08 */ 0x7140, 0x6D48, 0x6F43, 0x562D, 0xFFFD, 0xFFFD, 0x7D4E, 0x7B74, -/* 0D10 */ 0x5527, 0x7176, 0xFFFD, 0x6653, 0x656A, 0xFFFD, 0xFFFD, 0x7160, -/* 0D18 */ 0x5B4C, 0x5D4D, 0x5448, 0xFFFD, 0xFFFD, 0x596D, 0x7D48, 0xFFFD, -/* 0D20 */ 0x5621, 0x7D3F, 0xFFFD, 0x7C53, 0xFFFD, 0x6F21, 0xFFFD, 0x673C, -/* 0D28 */ 0x516E, 0xFFFD, 0xFFFD, 0x6655, 0xFFFD, 0xFFFD, 0x6972, 0xFFFD, -/* 0D30 */ 0x5F30, 0x5860, 0x7C3A, 0x7D2F, 0x704E, 0xFFFD, 0x5B61, 0xFFFD, -/* 0D38 */ 0xFFFD, 0x6549, 0xFFFD, 0x6D34, 0x697B, 0x6A28, 0x7D37, 0xFFFD, -/* 0D40 */ 0xFFFD, 0x7B27, 0xFFFD, 0x6942, 0x6259, 0xFFFD, 0xFFFD, 0x5C6C, -/* 0D48 */ 0x7D78, 0x7D79, 0x763F, 0xFFFD, 0xFFFD, 0x6727, 0xFFFD, 0x6657, -/* 0D50 */ 0x5473, 0x5449, 0x567A, 0xFFFD, 0x5772, 0xFFFD, 0x6140, 0xFFFD, -/* 0D58 */ 0x5B62, 0x6658, 0x704F, 0x733E, 0x622C, 0x7537, 0x6070, 0x7D38, -/* 0D60 */ 0x6368, 0xFFFD, 0x5427, 0x687C, 0x7A52, 0x7050, 0xFFFD, 0x7770, -/* 0D68 */ 0x6E33, 0xFFFD, 0xFFFD, 0x6A3A, 0xFFFD, 0x6A53, 0xFFFD, 0xFFFD, -/* 0D70 */ 0x6D49, 0x5D2B, 0x652C, 0x7D21, 0xFFFD, 0x5F50, 0x6C33, 0xFFFD, -/* 0D78 */ 0x5F51, 0x6D6D, 0x7838, 0x777A, 0x543A, 0x6433, 0xFFFD, 0x695A, -/* 0D80 */ 0xFFFD, 0x5E36, 0xFFFD, 0x593F, 0xFFFD, 0x5940, 0x566F, 0x594C, -/* 0D88 */ 0xFFFD, 0x5A2A, 0x4C32, 0xFFFD, 0xFFFD, 0x5F79, 0x5760, 0x4C33, -/* 0D90 */ 0xFFFD, 0xFFFD, 0x5B73, 0x5F52, 0xFFFD, 0x4E4A, 0xFFFD, 0x6E5A, -/* 0D98 */ 0x6464, 0xFFFD, 0x7B4F, 0x4F37, 0xFFFD, 0x6E43, 0x5761, 0x7A75, -/* 0DA0 */ 0xFFFD, 0xFFFD, 0x5549, 0x782C, 0x586D, 0x6344, 0x7071, 0x607A, -/* 0DA8 */ 0x6E44, 0x595E, 0x6B22, 0x6B23, 0x7C42, 0x6A3B, 0x682B, 0x5E62, -/* 0DB0 */ 0x6D6F, 0xFFFD, 0x6823, 0x543C, 0xFFFD, 0x7C6A, 0x673E, 0xFFFD, -/* 0DB8 */ 0x7C72, 0xFFFD, 0xFFFD, 0x5634, 0xFFFD, 0xFFFD, 0x622E, 0xFFFD, -/* 0DC0 */ 0x5337, 0x7A4C, 0x7A5C, 0xFFFD, 0x6D35, 0x6163, 0xFFFD, 0x682C, -/* 0DC8 */ 0xFFFD, 0x685D, 0xFFFD, 0xFFFD, 0x6F69, 0x743D, 0xFFFD, 0x4F38, -/* 0DD0 */ 0x695B, 0x512C, 0x6B49, 0xFFFD, 0x684C, 0x563C, 0x5365, 0x5A56, -/* 0DD8 */ 0xFFFD, 0x4A31, 0x5A48, 0x5F26, 0xFFFD, 0x7933, 0x7252, 0xFFFD, -/* 0DE0 */ 0x4A44, 0x4E4B, 0xFFFD, 0xFFFD, 0x4D75, 0x7D30, 0x5528, 0xFFFD, -/* 0DE8 */ 0x7141, 0xFFFD, 0xFFFD, 0x6269, 0x5C4A, 0x6C34, 0x7A40, 0xFFFD, -/* 0DF0 */ 0xFFFD, 0x7B28, 0x5028, 0xFFFD, 0xFFFD, 0x5A6C, 0x596E, 0xFFFD, -/* 0DF8 */ 0x607B, 0x6F6A, 0x7A5E, 0xFFFD, 0xFFFD, 0x6044, 0xFFFD, 0x4F39, -/* 0E00 */ 0xFFFD, 0x554A, 0x5762, 0x622F, 0xFFFD, 0x5738, 0x6F22, 0x625A, -/* 0E08 */ 0x767C, 0xFFFD, 0xFFFD, 0x7B50, 0x512D, 0xFFFD, 0x4D64, 0xFFFD, -/* 0E10 */ 0x512E, 0x5C6D, 0x684E, 0xFFFD, 0x7079, 0x4E35, 0x667C, 0xFFFD, -/* 0E18 */ 0xFFFD, 0x577B, 0x5056, 0x5D75, 0x7771, 0xFFFD, 0x767D, 0xFFFD, -/* 0E20 */ 0x5B77, 0x7B6A, 0x695C, 0x5941, 0xFFFD, 0x7572, 0x6045, 0x7942, -/* 0E28 */ 0xFFFD, 0x6A3C, 0xFFFD, 0x5245, 0x7B51, 0x6740, 0x6B25, 0xFFFD, -/* 0E30 */ 0x5F7A, 0x6322, 0x5739, 0xFFFD, 0x6943, 0xFFFD, 0x687D, 0x682F, -/* 0E38 */ 0xFFFD, 0xFFFD, 0x7253, 0x7B29, 0x5825, 0x512F, 0x5763, 0x6046, -/* 0E40 */ 0xFFFD, 0x5622, 0xFFFD, 0x6D70, 0x7C54, 0xFFFD, 0x5A57, 0x4C5F, -/* 0E48 */ 0xFFFD, 0x7254, 0xFFFD, 0x5130, 0xFFFD, 0x4C60, 0xFFFD, 0x5B7D, -/* 0E50 */ 0x733F, 0xFFFD, 0x7051, 0x7C3B, 0xFFFD, 0x6230, 0xFFFD, 0xFFFD, -/* 0E58 */ 0x6625, 0x5F5E, 0xFFFD, 0x6047, 0x4E36, 0xFFFD, 0x7340, 0xFFFD, -/* 0E60 */ 0x4D7E, 0x7B52, 0xFFFD, 0x7878, 0x777B, 0xFFFD, 0xFFFD, 0x683F, -/* 0E68 */ 0x5C3A, 0xFFFD, 0xFFFD, 0x4C34, 0x6838, 0xFFFD, 0xFFFD, 0x4A76, -/* 0E70 */ 0xFFFD, 0x6424, 0x7456, 0x5F27, 0xFFFD, 0x5F67, 0x6141, 0xFFFD, -/* 0E78 */ 0x6944, 0xFFFD, 0xFFFD, 0x5C4B, 0x6945, 0x6F23, 0x6B26, 0x4B23, -/* 0E80 */ 0x6369, 0x517B, 0x6F24, 0xFFFD, 0x6F6B, 0x4D23, 0xFFFD, 0xFFFD, -/* 0E88 */ 0x6866, 0xFFFD, 0x6F25, 0xFFFD, 0x534C, 0x5A6D, 0x573A, 0xFFFD, -/* 0E90 */ 0x7255, 0x7565, 0x596F, 0x7934, 0xFFFD, 0xFFFD, 0x5554, 0x7D4F, -/* 0E98 */ 0x7161, 0x6C36, 0x7B7E, 0x5357, 0xFFFD, 0x5131, 0xFFFD, 0x4B31, -/* 0EA0 */ 0x4B32, 0x7142, 0xFFFD, 0xFFFD, 0x7461, 0x7935, 0xFFFD, 0xFFFD, -/* 0EA8 */ 0x6143, 0x6142, 0xFFFD, 0x6B77, 0x785E, 0x792A, 0x4A77, 0xFFFD, -/* 0EB0 */ 0x6D37, 0xFFFD, 0xFFFD, 0x5338, 0x7256, 0xFFFD, 0xFFFD, 0x5459, -/* 0EB8 */ 0x6E45, 0x7270, 0x4A32, 0xFFFD, 0xFFFD, 0x5C3B, 0xFFFD, 0x7178, -/* 0EC0 */ 0x654A, 0xFFFD, 0x7640, 0x7D5D, 0xFFFD, 0xFFFD, 0x5463, 0x4C62, -/* 0EC8 */ 0xFFFD, 0x7754, 0x5343, 0xFFFD, 0x5826, 0xFFFD, 0x7641, 0x5D76, -/* 0ED0 */ 0xFFFD, 0x4D40, 0x6830, 0x7430, 0x736A, 0x5A6E, 0xFFFD, 0x573B, -/* 0ED8 */ 0xFFFD, 0x6231, 0x645F, 0xFFFD, 0x4A56, 0x7642, 0xFFFD, 0xFFFD, -/* 0EE0 */ 0x6F3B, 0x547D, 0xFFFD, 0xFFFD, 0x6048, 0x6839, 0xFFFD, 0x6F26, -/* 0EE8 */ 0x4D24, 0xFFFD, 0xFFFD, 0x5474, 0x5B21, 0x5B5C, 0x5B5D, 0x6E5C, -/* 0EF0 */ 0xFFFD, 0x4B4B, 0x7C55, 0x4E6B, 0xFFFD, 0x4D41, 0xFFFD, 0xFFFD, -/* 0EF8 */ 0x7B53, 0x5929, 0xFFFD, 0xFFFD, 0x695D, 0x5B4D, 0xFFFD, 0xFFFD, -/* 0F00 */ 0x5D4E, 0xFFFD, 0x6743, 0xFFFD, 0x6C4C, 0x607C, 0x5428, 0xFFFD, -/* 0F08 */ 0x6D53, 0x586F, 0xFFFD, 0x7257, 0xFFFD, 0x4A78, 0x5A6F, 0xFFFD, -/* 0F10 */ 0xFFFD, 0x5654, 0x586E, 0xFFFD, 0x7241, 0x5A70, 0xFFFD, 0x626A, -/* 0F18 */ 0xFFFD, 0xFFFD, 0x607D, 0xFFFD, 0xFFFD, 0x5878, 0x772F, 0x5A36, -/* 0F20 */ 0xFFFD, 0x4A57, 0x7258, 0xFFFD, 0x5879, 0x4F6F, 0x5942, 0xFFFD, -/* 0F28 */ 0x7052, 0xFFFD, 0x6451, 0x6232, 0xFFFD, 0x543D, 0xFFFD, 0xFFFD, -/* 0F30 */ 0x594E, 0x4D42, 0x675A, 0x626B, 0x567C, 0xFFFD, 0xFFFD, 0x4A79, -/* 0F38 */ 0xFFFD, 0xFFFD, 0x545A, 0x7457, 0x4C21, 0xFFFD, 0xFFFD, 0x4F3A, -/* 0F40 */ 0x5943, 0x5068, 0x6345, 0x6B78, 0xFFFD, 0x7231, 0x532D, 0x6861, -/* 0F48 */ 0x4E6C, 0x7232, 0x7376, 0x765B, 0x785F, 0xFFFD, 0x7772, 0x573C, -/* 0F50 */ 0x4C63, 0xFFFD, 0xFFFD, 0x665B, 0x565E, 0x6474, 0x616F, 0xFFFD, -/* 0F58 */ 0xFFFD, 0x5D78, 0x5C21, 0xFFFD, 0x6035, 0x7C2C, 0x7C2D, 0x5827, -/* 0F60 */ 0x5670, 0x732F, 0xFFFD, 0xFFFD, 0x4D25, 0xFFFD, 0x5A71, 0x4C64, -/* 0F68 */ 0xFFFD, 0xFFFD, 0x5134, 0x556C, 0x5578, 0x5A73, 0x5E64, 0xFFFD, -/* 0F70 */ 0x5E65, 0x5135, 0x5136, 0x5137, 0x7233, 0x7053, 0x7234, 0xFFFD, -/* 0F78 */ 0xFFFD, 0x7054, 0x4B64, 0x7B54, 0x7566, 0x636A, 0xFFFD, 0x5E66, -/* 0F80 */ 0x5F54, 0xFFFD, 0xFFFD, 0x7879, 0x565F, 0xFFFD, 0x5057, 0x7C21, -/* 0F88 */ 0x6F6E, 0x5C58, 0xFFFD, 0x695F, 0x655D, 0x7D7B, 0xFFFD, 0xFFFD, -/* 0F90 */ 0x6049, 0x5649, 0xFFFD, 0xFFFD, 0x542A, 0xFFFD, 0x654C, 0x5058, -/* 0F98 */ 0x7C22, 0x543E, 0x6233, 0x5E67, 0x5C3C, 0x5236, 0x7555, 0x4E21, -/* 0FA0 */ 0x7529, 0xFFFD, 0xFFFD, 0x5D79, 0xFFFD, 0xFFFD, 0x5D7A, 0x765F, -/* 0FA8 */ 0xFFFD, 0x725A, 0x646B, 0xFFFD, 0x7271, 0x612A, 0xFFFD, 0xFFFD, -/* 0FB0 */ 0x4A59, 0xFFFD, 0xFFFD, 0x6F6F, 0xFFFD, 0x752A, 0x6C79, 0xFFFD, -/* 0FB8 */ 0xFFFD, 0x782D, 0xFFFD, 0x7242, 0x7643, 0xFFFD, 0x5752, 0xFFFD, -/* 0FC0 */ 0xFFFD, 0x7922, 0x7056, 0x707A, 0xFFFD, 0xFFFD, 0x7660, 0x6973, -/* 0FC8 */ 0x7243, 0x542B, 0x4A33, 0x4D26, 0xFFFD, 0x4D43, 0x4D5A, 0x594F, -/* 0FD0 */ 0xFFFD, 0xFFFD, 0x7644, 0x6E5D, 0x6744, 0x5F62, 0x675B, 0x6831, -/* 0FD8 */ 0xFFFD, 0x7C2E, 0x7A6B, 0xFFFD, 0x4F3C, 0xFFFD, 0xFFFD, 0x4F62, -/* 0FE0 */ 0x4D76, 0xFFFD, 0xFFFD, 0x6F70, 0xFFFD, 0x743E, 0xFFFD, 0x544D, -/* 0FE8 */ 0xFFFD, 0xFFFD, 0x7338, 0x7272, 0x736B, 0xFFFD, 0x7057, 0xFFFD, -/* 0FF0 */ 0xFFFD, 0x4F57, 0x6840, 0x6841, 0x4F63, 0x6922, 0x7341, 0x502B, -/* 0FF8 */ 0xFFFD, 0x5464, 0xFFFD, 0xFFFD, 0x6F3C, 0x5821, 0x595F, 0xFFFD, -/* 1000 */ 0x7357, 0x5C3D, 0xFFFD, 0x4C65, 0x6D71, 0xFFFD, 0xFFFD, 0x7162, -/* 1008 */ 0xFFFD, 0x545B, 0x6235, 0xFFFD, 0xFFFD, 0x4A66, 0xFFFD, 0x532E, -/* 1010 */ 0x4C66, 0xFFFD, 0xFFFD, 0x7153, 0x7567, 0x7B6E, 0xFFFD, 0x6145, -/* 1018 */ 0x5F69, 0xFFFD, 0x6E5E, 0xFFFD, 0xFFFD, 0x7742, 0xFFFD, 0x5822, -/* 1020 */ 0x702F, 0x563D, 0x7936, 0xFFFD, 0xFFFD, 0x5475, 0xFFFD, 0x5049, -/* 1028 */ 0x6F27, 0x626C, 0xFFFD, 0x5B6A, 0x4E4C, 0x7568, 0x7755, 0xFFFD, -/* 1030 */ 0x534D, 0xFFFD, 0x737E, 0x607E, 0xFFFD, 0x5F7B, 0x5A58, 0x5139, -/* 1038 */ 0xFFFD, 0x5F29, 0xFFFD, 0xFFFD, 0x7330, 0xFFFD, 0xFFFD, 0x4C44, -/* 1040 */ 0x5F55, 0xFFFD, 0xFFFD, 0x6D57, 0x6F3D, 0x7C56, 0xFFFD, 0xFFFD, -/* 1048 */ 0x5B74, 0xFFFD, 0x6F2A, 0x7839, 0xFFFD, 0x7569, 0x532F, 0xFFFD, -/* 1050 */ 0xFFFD, 0x4A5B, 0x7C57, 0xFFFD, 0xFFFD, 0x6D58, 0x6147, 0x7458, -/* 1058 */ 0x5633, 0x5D2D, 0x7143, 0x6E5F, 0x5823, 0xFFFD, 0xFFFD, 0x5A59, -/* 1060 */ 0xFFFD, 0x7058, 0x6F44, 0x7154, 0xFFFD, 0x6D72, 0x555B, 0xFFFD, -/* 1068 */ 0xFFFD, 0x555C, 0x7344, 0x4B57, 0x5D50, 0x7059, 0x4B33, 0x4D27, -/* 1070 */ 0xFFFD, 0xFFFD, 0x502C, 0xFFFD, 0x513A, 0xFFFD, 0x7144, 0xFFFD, -/* 1078 */ 0x6533, 0x7B75, 0x6961, 0x7D60, 0x7C3C, 0xFFFD, 0x5A22, 0x5A23, -/* 1080 */ 0xFFFD, 0x5221, 0xFFFD, 0xFFFD, 0x526F, 0x626D, 0xFFFD, 0xFFFD, -/* 1088 */ 0x5E69, 0x4E5C, 0x7235, 0x5064, 0x5D51, 0x6148, 0x5B37, 0x5F63, -/* 1090 */ 0x6D39, 0x7145, 0xFFFD, 0x734F, 0x572B, 0x612C, 0xFFFD, 0xFFFD, -/* 1098 */ 0x636B, 0xFFFD, 0x6E47, 0x6149, 0x4A7A, 0x707B, 0x7A61, 0x705A, -/* 10A0 */ 0x4C67, 0x5A74, 0x4E6D, 0xFFFD, 0xFFFD, 0x5529, 0x7A62, 0x5065, -/* 10A8 */ 0xFFFD, 0x6B56, 0xFFFD, 0x6C5F, 0x5F7C, 0xFFFD, 0xFFFD, 0x7756, -/* 10B0 */ 0x5E6A, 0x4B34, 0xFFFD, 0xFFFD, 0x6F3E, 0xFFFD, 0xFFFD, 0x4C35, -/* 10B8 */ 0x6F72, 0x6237, 0x5660, 0xFFFD, 0x7146, 0x6238, 0x6B2B, 0x4B35, -/* 10C0 */ 0x5851, 0xFFFD, 0x744E, 0x7377, 0xFFFD, 0xFFFD, 0x5746, 0xFFFD, -/* 10C8 */ 0x513B, 0x772A, 0xFFFD, 0x6D4A, 0x5753, 0x587A, 0x7645, 0xFFFD, -/* 10D0 */ 0xFFFD, 0x514C, 0x5D7C, 0x5F7D, 0xFFFD, 0x7965, 0xFFFD, 0x604A, -/* 10D8 */ 0xFFFD, 0xFFFD, 0x727D, 0x5330, 0xFFFD, 0x7473, 0x5A49, 0xFFFD, -/* 10E0 */ 0x665E, 0x783A, 0x6850, 0xFFFD, 0xFFFD, 0x587B, 0xFFFD, 0xFFFD, -/* 10E8 */ 0x6A55, 0x725B, 0x647C, 0x5A5A, 0xFFFD, 0x725C, 0x7B56, 0x6932, -/* 10F0 */ 0xFFFD, 0x6E2D, 0xFFFD, 0x7A63, 0x5C6E, 0xFFFD, 0xFFFD, 0x756A, -/* 10F8 */ 0x6660, 0xFFFD, 0x707D, 0x7545, 0x6E60, 0xFFFD, 0xFFFD, 0x5B65, -/* 1100 */ 0xFFFD, 0x5D5E, 0xFFFD, 0xFFFD, 0x5970, 0x6923, 0x7179, 0xFFFD, -/* 1108 */ 0x7244, 0x604B, 0x6924, 0xFFFD, 0xFFFD, 0x6239, 0x6331, 0x7C6B, -/* 1110 */ 0x4D28, 0xFFFD, 0x4C36, 0xFFFD, 0xFFFD, 0x705B, 0x663A, 0xFFFD, -/* 1118 */ 0xFFFD, 0x4D29, 0x6159, 0xFFFD, 0xFFFD, 0x6F2B, 0x6745, 0xFFFD, -/* 1120 */ 0xFFFD, 0x6069, 0xFFFD, 0x7345, 0xFFFD, 0xFFFD, 0x5440, 0x553F, -/* 1128 */ 0x5D2E, 0xFFFD, 0x797C, 0xFFFD, 0x4C40, 0x5852, 0x7956, 0x712A, -/* 1130 */ 0x4E51, 0xFFFD, 0xFFFD, 0x7647, 0xFFFD, 0x5B6B, 0xFFFD, 0x5F7E, -/* 1138 */ 0xFFFD, 0xFFFD, 0x5861, 0xFFFD, 0x7773, 0xFFFD, 0x5767, 0x547E, -/* 1140 */ 0xFFFD, 0xFFFD, 0x513C, 0xFFFD, 0x654F, 0xFFFD, 0x4B36, 0xFFFD, -/* 1148 */ 0x5A38, 0x604C, 0x6B79, 0x5768, 0x4B58, 0x6C4D, 0xFFFD, 0x6C4E, -/* 1150 */ 0xFFFD, 0x563F, 0x6327, 0xFFFD, 0x5F56, 0x7D68, 0x6E61, 0x7628, -/* 1158 */ 0x5D7D, 0x783B, 0xFFFD, 0x6851, 0x4E6E, 0xFFFD, 0xFFFD, 0x6C4F, -/* 1160 */ 0x6925, 0x5655, 0xFFFD, 0x4D45, 0xFFFD, 0x6D3A, 0x513D, 0xFFFD, -/* 1168 */ 0xFFFD, 0x4F3E, 0xFFFD, 0xFFFD, 0x6C3B, 0x4C69, 0xFFFD, 0x5944, -/* 1170 */ 0x697C, 0x6C3C, 0xFFFD, 0xFFFD, 0x652D, 0x7730, 0xFFFD, 0x4C6A, -/* 1178 */ 0x5344, 0xFFFD, 0xFFFD, 0x5640, 0x6121, 0xFFFD, 0x5E3D, 0xFFFD, -/* 1180 */ 0x7629, 0x5624, 0x7546, 0xFFFD, 0x6122, 0x6946, 0x7469, 0x566C, -/* 1188 */ 0x6B53, 0x6C3D, 0x625C, 0x5E6B, 0x705C, 0xFFFD, 0x6B3F, 0xFFFD, -/* 1190 */ 0x574E, 0x513F, 0x797D, 0xFFFD, 0x4A5C, 0x4D46, 0x7236, 0xFFFD, -/* 1198 */ 0xFFFD, 0x5D7E, 0x4C37, 0x5B38, 0x5069, 0xFFFD, 0x4E5D, 0x6B40, -/* 11A0 */ 0xFFFD, 0x7D22, 0x6A56, 0x7130, 0x5B4E, 0xFFFD, 0x7743, 0x5B4F, -/* 11A8 */ 0x4B24, 0xFFFD, 0xFFFD, 0x7860, 0xFFFD, 0xFFFD, 0x7B57, 0xFFFD, -/* 11B0 */ 0xFFFD, 0x6B4A, 0x6021, 0x4E4D, 0xFFFD, 0xFFFD, 0x545C, 0x7237, -/* 11B8 */ 0xFFFD, 0xFFFD, 0x7A76, 0x762A, 0x7A77, 0x5866, 0xFFFD, 0x7431, -/* 11C0 */ 0x6852, 0xFFFD, 0x4A45, 0x4C6B, 0x623B, 0xFFFD, 0x772D, 0x647D, -/* 11C8 */ 0xFFFD, 0xFFFD, 0x636C, 0xFFFD, 0x5D2F, 0x5D30, 0xFFFD, 0xFFFD, -/* 11D0 */ 0x4B37, 0x6853, 0x6123, 0x5260, 0x6926, 0x4B72, 0x6D73, 0x5C59, -/* 11D8 */ 0x604D, 0x775A, 0x5B39, 0x4C2E, 0xFFFD, 0x5A5B, 0x5D31, 0xFFFD, -/* 11E0 */ 0x582F, 0x6323, 0xFFFD, 0xFFFD, 0x4E6F, 0xFFFD, 0xFFFD, 0x7273, -/* 11E8 */ 0x604E, 0xFFFD, 0x757D, 0x6B6C, 0xFFFD, 0xFFFD, 0x5345, 0x7C6C, -/* 11F0 */ 0x525B, 0x546B, 0xFFFD, 0x5E22, 0x636D, 0xFFFD, 0x6842, 0xFFFD, -/* 11F8 */ 0x6D75, 0x577C, 0xFFFD, 0x6D3B, 0xFFFD, 0xFFFD, 0x762B, 0x7238, -/* 1200 */ 0x7648, 0x5366, 0x725D, 0x4F3F, 0xFFFD, 0x6B2C, 0x4F40, 0xFFFD, -/* 1208 */ 0x6628, 0x7D69, 0xFFFD, 0x4F41, 0xFFFD, 0x605F, 0x5E6C, 0x743F, -/* 1210 */ 0x626F, 0xFFFD, 0x5971, 0x7147, 0xFFFD, 0x4B38, 0x797E, 0x5B3A, -/* 1218 */ 0x5A75, 0x766C, 0x5A5C, 0x7A64, 0xFFFD, 0x604F, 0x6629, 0xFFFD, -/* 1220 */ 0x6F73, 0x6B7A, 0xFFFD, 0x7966, 0x4A5D, 0x555E, 0xFFFD, 0x4A5E, -/* 1228 */ 0x5F64, 0x667D, 0xFFFD, 0x752C, 0x6963, 0xFFFD, 0x6D4B, 0x4F64, -/* 1230 */ 0x5D33, 0x546C, 0xFFFD, 0xFFFD, 0x7239, 0xFFFD, 0x5F37, 0x4B4E, -/* 1238 */ 0x7B58, 0xFFFD, 0xFFFD, 0x5059, 0xFFFD, 0xFFFD, 0x5D52, 0x7774, -/* 1240 */ 0x675C, 0x6425, 0xFFFD, 0x7C23, 0xFFFD, 0x5B3B, 0x723A, 0x697D, -/* 1248 */ 0x504A, 0xFFFD, 0x7556, 0x5945, 0x6434, 0xFFFD, 0x6D27, 0x6A3D, -/* 1250 */ 0x667E, 0xFFFD, 0x7744, 0x752D, 0xFFFD, 0x5960, 0x4A34, 0xFFFD, -/* 1258 */ 0xFFFD, 0x7862, 0x4F42, 0xFFFD, 0x6C3E, 0x6534, 0x4D48, 0x6E48, -/* 1260 */ 0x4D49, 0x7937, 0xFFFD, 0xFFFD, 0x7168, 0x5972, 0x5B75, 0x4A35, -/* 1268 */ 0x5946, 0x6D3C, 0xFFFD, 0xFFFD, 0x5854, 0x5C5A, 0xFFFD, 0x623C, -/* 1270 */ 0xFFFD, 0xFFFD, 0x7C6D, 0x6C60, 0x527E, 0xFFFD, 0x6947, 0x662A, -/* 1278 */ 0x7A3B, 0xFFFD, 0x752E, 0x7B2A, 0x6C7B, 0xFFFD, 0x6C3F, 0x7C58, -/* 1280 */ 0x5769, 0x6D76, 0x4C6C, 0xFFFD, 0x636E, 0x5D34, 0x6435, 0x5830, -/* 1288 */ 0x5661, 0x4F52, 0xFFFD, 0x5036, 0x4E22, 0xFFFD, 0xFFFD, 0x736E, -/* 1290 */ 0x5C4C, 0xFFFD, 0x504B, 0x7C24, 0x4D4A, 0x5754, 0x5E23, 0xFFFD, -/* 1298 */ 0x6460, 0x757E, 0x542C, 0x5551, 0xFFFD, 0x5870, 0x7843, 0x6A57, -/* 12A0 */ 0x7557, 0xFFFD, 0xFFFD, 0x583F, 0x7863, 0xFFFD, 0x545D, 0xFFFD, -/* 12A8 */ 0xFFFD, 0x6A58, 0x7B59, 0x6D77, 0xFFFD, 0xFFFD, 0x6535, 0x5955, -/* 12B0 */ 0xFFFD, 0xFFFD, 0x5F2A, 0x717A, 0xFFFD, 0xFFFD, 0x6536, 0x736F, -/* 12B8 */ 0xFFFD, 0xFFFD, 0x7B5A, 0x6160, 0xFFFD, 0x592C, 0xFFFD, 0x756B, -/* 12C0 */ 0xFFFD, 0x6036, 0xFFFD, 0xFFFD, 0x6948, 0xFFFD, 0x4B4F, 0xFFFD, -/* 12C8 */ 0x6349, 0x5C6F, 0xFFFD, 0x5625, 0x5921, 0xFFFD, 0x5840, 0x5C5B, -/* 12D0 */ 0xFFFD, 0xFFFD, 0x6D3D, 0x5F38, 0xFFFD, 0x6A25, 0x572D, 0xFFFD, -/* 12D8 */ 0xFFFD, 0x7379, 0xFFFD, 0x6D78, 0xFFFD, 0x7547, 0x614A, 0x6B63, -/* 12E0 */ 0xFFFD, 0x725E, 0x784C, 0xFFFD, 0x6A59, 0xFFFD, 0x5346, 0xFFFD, -/* 12E8 */ 0x5B66, 0x4F72, 0x7739, 0x5973, 0xFFFD, 0xFFFD, 0x614B, 0x5A5D, -/* 12F0 */ 0xFFFD, 0xFFFD, 0x5A39, 0x6B7B, 0xFFFD, 0x4B39, 0xFFFD, 0xFFFD, -/* 12F8 */ 0x6D79, 0x7440, 0xFFFD, 0x7D3C, 0x5F31, 0x636F, 0x6023, 0x7D39, -/* 1300 */ 0x5540, 0x6370, 0x6D7A, 0x556D, 0x675D, 0x5476, 0x6537, 0x5B67, -/* 1308 */ 0x623F, 0x6E4B, 0xFFFD, 0xFFFD, 0x5774, 0x705D, 0x4E2B, 0xFFFD, -/* 1310 */ 0xFFFD, 0x675E, 0x5656, 0x614C, 0xFFFD, 0xFFFD, 0x6833, 0x656E, -/* 1318 */ 0x5C22, 0xFFFD, 0xFFFD, 0x6050, 0x7B5B, 0xFFFD, 0x794B, 0x4B73, -/* 1320 */ 0x7425, 0x7A48, 0x5657, 0xFFFD, 0x6965, 0x7B5C, 0x5A25, 0xFFFD, -/* 1328 */ 0x5B3D, 0x4D77, 0x705E, 0x6843, 0xFFFD, 0x7148, 0x6436, 0xFFFD, -/* 1330 */ 0x7539, 0xFFFD, 0x5C70, 0x6371, 0x723B, 0xFFFD, 0x5E24, 0xFFFD, -/* 1338 */ 0x5A4C, 0x635A, 0xFFFD, 0x7C59, 0x7944, 0xFFFD, 0x6324, 0x7B5D, -/* 1340 */ 0xFFFD, 0x6F4A, 0xFFFD, 0x6844, 0x592D, 0xFFFD, 0xFFFD, 0x7B2B, -/* 1348 */ 0x6051, 0xFFFD, 0xFFFD, 0x6928, 0xFFFD, 0xFFFD, 0x7579, 0x7A2F, -/* 1350 */ 0xFFFD, 0x6B7C, 0xFFFD, 0xFFFD, 0x606A, 0x5545, 0xFFFD, 0xFFFD, -/* 1358 */ 0x7163, 0x556E, 0x7A3C, 0x6662, 0x7A65, 0x627A, 0x4A36, 0xFFFD, -/* 1360 */ 0x6437, 0xFFFD, 0x6A5B, 0xFFFD, 0x757A, 0x7B2C, 0x4F43, 0x6B7D, -/* 1368 */ 0x787A, 0xFFFD, 0xFFFD, 0x5F39, 0x6171, 0xFFFD, 0x5224, 0x505A, -/* 1370 */ 0x505B, 0xFFFD, 0x6A3E, 0x5931, 0x4A37, 0xFFFD, 0xFFFD, 0x5367, -/* 1378 */ 0xFFFD, 0x7865, 0x6240, 0x725F, 0x6E2E, 0x562E, 0x6760, 0x6B2E, -/* 1380 */ 0x4F59, 0xFFFD, 0xFFFD, 0x5C4D, 0x6D7B, 0xFFFD, 0x5E70, 0xFFFD, -/* 1388 */ 0x576B, 0x5F57, 0x5B50, 0x5B51, 0xFFFD, 0xFFFD, 0x5523, 0x4A68, -/* 1390 */ 0xFFFD, 0x7866, 0x5C4E, 0x6A5C, 0x5B52, 0x6328, 0xFFFD, 0x572E, -/* 1398 */ 0xFFFD, 0xFFFD, 0x6061, 0x4B3A, 0xFFFD, 0xFFFD, 0x6551, 0x6024, -/* 13A0 */ 0xFFFD, 0x6929, 0xFFFD, 0x5347, 0xFFFD, 0xFFFD, 0x5C5D, 0x782E, -/* 13A8 */ 0x5872, 0xFFFD, 0xFFFD, 0x634A, 0x542D, 0x7651, 0x4A46, 0xFFFD, -/* 13B0 */ 0xFFFD, 0x5542, 0xFFFD, 0xFFFD, 0x4E3A, 0x656B, 0xFFFD, 0x6F74, -/* 13B8 */ 0x5D35, 0x4D2A, 0xFFFD, 0x6372, 0xFFFD, 0x7B77, 0xFFFD, 0x7750, -/* 13C0 */ 0x7D3A, 0xFFFD, 0xFFFD, 0x7D61, 0x767E, 0x5140, 0xFFFD, 0xFFFD, -/* 13C8 */ 0x6845, 0xFFFD, 0x6438, 0xFFFD, 0x6168, 0x4C41, 0xFFFD, 0x526D, -/* 13D0 */ 0x5B3E, 0xFFFD, 0xFFFD, 0x6062, 0x7A49, 0xFFFD, 0xFFFD, 0x614D, -/* 13D8 */ 0xFFFD, 0x4A38, 0x7260, 0x7149, 0x705F, 0x7844, 0x6E4C, 0xFFFD, -/* 13E0 */ 0xFFFD, 0x5E72, 0xFFFD, 0x6749, 0xFFFD, 0x6273, 0x6761, 0xFFFD, -/* 13E8 */ 0xFFFD, 0x634B, 0xFFFD, 0xFFFD, 0x634C, 0x4F78, 0x6F2C, 0xFFFD, -/* 13F0 */ 0x7D7E, 0x7C25, 0x7A31, 0x5F59, 0xFFFD, 0x6052, 0x714A, 0xFFFD, -/* 13F8 */ 0x4E23, 0x723C, 0x6C63, 0x6025, 0xFFFD, 0x772B, 0xFFFD, 0xFFFD, -/* 1400 */ 0x6B2F, 0x655E, 0xFFFD, 0x6124, 0x4D2B, 0xFFFD, 0x5974, 0x6826, -/* 1408 */ 0x4D4E, 0x6169, 0xFFFD, 0x7C6F, 0xFFFD, 0x6063, 0x6241, 0xFFFD, -/* 1410 */ 0x4E24, 0x5E26, 0xFFFD, 0xFFFD, 0x6B7E, 0xFFFD, 0x6B5D, 0x7060, -/* 1418 */ 0xFFFD, 0xFFFD, 0x745B, 0xFFFD, 0x6274, 0xFFFD, 0xFFFD, 0x5348, -/* 1420 */ 0x746B, 0xFFFD, 0x6E35, 0xFFFD, 0x7558, 0xFFFD, 0xFFFD, 0x555F, -/* 1428 */ 0x6B30, 0x7463, 0x7474, 0x7A32, 0xFFFD, 0xFFFD, 0x6F75, 0x4A5F, -/* 1430 */ 0xFFFD, 0x6B31, 0x6D3F, 0xFFFD, 0xFFFD, 0x7D49, 0x6426, 0x7924, -/* 1438 */ 0x7033, 0xFFFD, 0x656C, 0x5167, 0xFFFD, 0x5947, 0x6457, 0x6A5D, -/* 1440 */ 0xFFFD, 0x5477, 0x5A3A, 0xFFFD, 0x5A4D, 0x794C, 0xFFFD, 0x615A, -/* 1448 */ 0x5B3F, 0xFFFD, 0x4C45, 0x6C50, 0x4B3B, 0xFFFD, 0x5E73, 0xFFFD, -/* 1450 */ 0xFFFD, 0x692A, 0x5948, 0xFFFD, 0xFFFD, 0x6E63, 0x573D, 0x7D52, -/* 1458 */ 0x5141, 0x635B, 0xFFFD, 0x5349, 0xFFFD, 0x5C4F, 0x5E27, 0xFFFD, -/* 1460 */ 0xFFFD, 0x663B, 0x6C21, 0x4C39, 0xFFFD, 0xFFFD, 0x7B5E, 0x6762, -/* 1468 */ 0xFFFD, 0xFFFD, 0x5441, 0x6242, 0xFFFD, 0x7358, 0x6553, 0xFFFD, -/* 1470 */ 0xFFFD, 0x7359, 0x4D2C, 0xFFFD, 0x7C43, 0x5467, 0xFFFD, 0x5142, -/* 1478 */ 0xFFFD, 0x7925, 0xFFFD, 0x6855, 0x7B5F, 0x6763, 0x787B, 0x634F, -/* 1480 */ 0x5867, 0xFFFD, 0x5949, 0x782F, 0x6F76, 0xFFFD, 0x5D36, 0x6E2F, -/* 1488 */ 0x4D78, 0x5E38, 0x7C27, 0x777C, 0x7731, 0x4E3B, 0x7421, 0xFFFD, -/* 1490 */ 0xFFFD, 0x6E4D, 0x612E, 0xFFFD, 0xFFFD, 0x6C43, 0x4F7E, 0xFFFD, -/* 1498 */ 0x783F, 0x5862, 0x5368, 0xFFFD, 0xFFFD, 0x5E28, 0x7464, 0x6C42, -/* 14A0 */ 0xFFFD, 0x5975, 0x7945, 0x5D53, 0x5671, 0x6C7C, 0x7C70, 0xFFFD, -/* 14A8 */ 0xFFFD, 0x6D40, 0x4A39, 0xFFFD, 0x6E64, 0x7261, 0xFFFD, 0x5E39, -/* 14B0 */ 0x5672, 0xFFFD, 0x5E74, 0xFFFD, 0x5F5B, 0xFFFD, 0x5B53, 0xFFFD, -/* 14B8 */ 0x7A67, 0x5863, 0x7441, 0xFFFD, 0x5D37, 0x7275, 0xFFFD, 0xFFFD, -/* 14C0 */ 0x542E, 0x5D38, 0x4F45, 0x5F5F, 0x723E, 0x7621, 0xFFFD, 0x6B4B, -/* 14C8 */ 0x717C, 0xFFFD, 0x7347, 0xFFFD, 0xFFFD, 0x606B, 0x6D7C, 0xFFFD, -/* 14D0 */ 0xFFFD, 0x615B, 0x6E65, 0xFFFD, 0x5E75, 0x714B, 0xFFFD, 0xFFFD, -/* 14D8 */ 0x502F, 0x5D39, 0xFFFD, 0xFFFD, 0x5143, 0x5B22, 0x7276, 0xFFFD, -/* 14E0 */ 0xFFFD, 0x4A3A, 0x7775, 0xFFFD, 0x4B65, 0x6E66, 0xFFFD, 0x6053, -/* 14E8 */ 0x534E, 0x7442, 0x6B33, 0xFFFD, 0x7034, 0xFFFD, 0xFFFD, 0x4B74, -/* 14F0 */ 0x5430, 0x7332, 0x7B37, 0x6E67, 0x7432, 0x756D, 0xFFFD, 0x4F73, -/* 14F8 */ 0x6E4E, 0xFFFD, 0xFFFD, 0x714C, 0xFFFD, 0xFFFD, 0x6538, 0x5775, -/* 1500 */ 0x6373, 0x4F65, 0x7333, 0x6458, 0x4F79, 0x4F5A, 0x756E, 0xFFFD, -/* 1508 */ 0xFFFD, 0x4A3B, 0xFFFD, 0xFFFD, 0x635C, 0x4E72, 0xFFFD, 0x5659, -/* 1510 */ 0x7465, 0x5842, 0x5C50, 0x4C6E, 0x5560, 0x764A, 0x7D4A, 0x5856, -/* 1518 */ 0x744F, 0x5626, 0x5C3E, 0xFFFD, 0x5B54, 0x5747, 0x6243, 0x5C5E, -/* 1520 */ 0xFFFD, 0x5C5F, 0xFFFD, 0xFFFD, 0x6F2D, 0x662B, 0x795D, 0x6A3F, -/* 1528 */ 0x7450, 0x4E73, 0x662C, 0xFFFD, 0x4E5E, 0xFFFD, 0xFFFD, 0x5579, -/* 1530 */ 0x6374, 0x4D50, 0x5538, 0xFFFD, 0xFFFD, 0x777D, 0xFFFD, 0x5C29, -/* 1538 */ 0x5E76, 0xFFFD, 0x5C2A, 0x7263, 0x6934, 0x525C, 0x6966, 0xFFFD, -/* 1540 */ 0xFFFD, 0x6376, 0x674A, 0xFFFD, 0xFFFD, 0x504E, 0xFFFD, 0xFFFD, -/* 1548 */ 0x5A77, 0x6E68, 0x5A5E, 0xFFFD, 0x7277, 0xFFFD, 0xFFFD, 0x627B, -/* 1550 */ 0xFFFD, 0x4C26, 0x5A3B, 0xFFFD, 0x6E69, 0x755A, 0xFFFD, 0xFFFD, -/* 1558 */ 0x775C, 0x616A, 0x4E41, 0x5431, 0xFFFD, 0x7D31, 0x663D, 0xFFFD, -/* 1560 */ 0x7B2D, 0xFFFD, 0xFFFD, 0x7867, 0xFFFD, 0x614E, 0xFFFD, 0x7762, -/* 1568 */ 0x756F, 0x4F47, 0xFFFD, 0xFFFD, 0x5432, 0x4C6F, 0xFFFD, 0x5468, -/* 1570 */ 0xFFFD, 0x6E4F, 0x7757, 0xFFFD, 0xFFFD, 0x6026, 0x5641, 0x615C, -/* 1578 */ 0x7063, 0x7164, 0x5C71, 0x5627, 0x7475, 0xFFFD, 0xFFFD, 0x714E, -/* 1580 */ 0x7264, 0xFFFD, 0xFFFD, 0x5030, 0xFFFD, 0xFFFD, 0x6C6F, 0x793A, -/* 1588 */ 0xFFFD, 0x6B35, 0xFFFD, 0xFFFD, 0x546D, 0x6244, 0x6967, 0xFFFD, -/* 1590 */ 0xFFFD, 0x6B34, 0x6A21, 0xFFFD, 0x783C, 0x4E26, 0xFFFD, 0x7946, -/* 1598 */ 0x7C5A, 0xFFFD, 0x5433, 0x5339, 0x6A5E, 0x692B, 0xFFFD, 0xFFFD, -/* 15A0 */ 0x6161, 0x534F, 0x7476, 0xFFFD, 0x6A40, 0x614F, 0xFFFD, 0x4C3A, -/* 15A8 */ 0x7064, 0x7334, 0x546E, 0xFFFD, 0xFFFD, 0x7240, 0xFFFD, 0xFFFD, -/* 15B0 */ 0x7165, 0xFFFD, 0x7443, 0x6054, 0xFFFD, 0x6B36, 0xFFFD, 0x5721, -/* 15B8 */ 0x4B68, 0xFFFD, 0x792D, 0x692D, 0x5864, 0x7A33, 0x6245, 0x7C3D, -/* 15C0 */ 0xFFFD, 0xFFFD, 0x6C44, 0x5831, 0xFFFD, 0x5C2B, 0x5524, 0xFFFD, -/* 15C8 */ 0x6B69, 0x7B2E, 0x5161, 0xFFFD, 0xFFFD, 0x5B40, 0xFFFD, 0x753E, -/* 15D0 */ 0xFFFD, 0x5E77, 0x4A7B, 0x7746, 0x4F48, 0x6150, 0xFFFD, 0xFFFD, -/* 15D8 */ 0x6E50, 0x554D, 0xFFFD, 0xFFFD, 0x4F5B, 0x755B, 0xFFFD, 0xFFFD, -/* 15E0 */ 0x7A41, 0x6B37, 0x6F78, 0x755C, 0x6D4C, 0x5B55, 0x714F, 0x592E, -/* 15E8 */ 0x552C, 0xFFFD, 0x6246, 0x7D23, 0xFFFD, 0x7B65, 0x5F2B, 0x6275, -/* 15F0 */ 0xFFFD, 0x762D, 0xFFFD, 0x7533, 0xFFFD, 0x7035, 0x6C22, 0x6D7D, -/* 15F8 */ 0xFFFD, 0x7534, 0x7B38, 0xFFFD, 0x5B23, 0xFFFD, 0xFFFD, 0x564A, -/* 1600 */ 0x4B59, 0x737A, 0xFFFD, 0x6B38, 0xFFFD, 0x6037, 0x576C, 0x716C, -/* 1608 */ 0x652F, 0x5561, 0x576D, 0x5151, 0x6172, 0x6F79, 0x5D3C, 0x765C, -/* 1610 */ 0x7444, 0xFFFD, 0xFFFD, 0x6969, 0x546F, 0xFFFD, 0xFFFD, 0x4C22, -/* 1618 */ 0x777E, 0x5F3C, 0x6F2F, 0x4B25, 0x6667, 0xFFFD, 0xFFFD, 0x6A47, -/* 1620 */ 0x5B24, 0xFFFD, 0x4F49, 0x627C, 0x6F7A, 0x6B5E, 0xFFFD, 0xFFFD, -/* 1628 */ 0x7548, 0xFFFD, 0x545E, 0x6055, 0xFFFD, 0x6F30, 0xFFFD, 0xFFFD, -/* 1630 */ 0x6247, 0xFFFD, 0x592F, 0x6765, 0xFFFD, 0xFFFD, 0x4F4A, 0x6151, -/* 1638 */ 0xFFFD, 0x6248, 0x6F7B, 0xFFFD, 0xFFFD, 0x7A79, 0xFFFD, 0xFFFD, -/* 1640 */ 0x5C72, 0x755F, 0xFFFD, 0x6E36, 0x6276, 0x534A, 0x6F7C, 0x5144, -/* 1648 */ 0x6F31, 0xFFFD, 0x5145, 0xFFFD, 0x505E, 0xFFFD, 0x5961, 0xFFFD, -/* 1650 */ 0xFFFD, 0x6038, 0xFFFD, 0xFFFD, 0x4D51, 0x7339, 0x674C, 0xFFFD, -/* 1658 */ 0x5628, 0x4E27, 0xFFFD, 0x5435, 0x765D, 0xFFFD, 0x7123, 0x694A, -/* 1660 */ 0xFFFD, 0x6170, 0x7B60, 0x7265, 0xFFFD, 0xFFFD, 0x6C70, 0x694B, -/* 1668 */ 0xFFFD, 0xFFFD, 0x4C70, 0xFFFD, 0xFFFD, 0x572F, 0x7451, 0xFFFD, -/* 1670 */ 0xFFFD, 0x7721, 0x4A7C, 0x4A7D, 0x7348, 0xFFFD, 0x733A, 0x5A26, -/* 1678 */ 0xFFFD, 0xFFFD, 0x606C, 0x784D, 0xFFFD, 0x4B52, 0x6B4E, 0xFFFD, -/* 1680 */ 0x7958, 0x7959, 0x4A60, 0x5A4A, 0x4A48, 0x796E, 0x5B6C, 0xFFFD, -/* 1688 */ 0xFFFD, 0x5031, 0x6722, 0x6459, 0x6461, 0xFFFD, 0xFFFD, 0x7C44, -/* 1690 */ 0x796F, 0x4F74, 0x7766, 0x7445, 0x5C23, 0x6439, 0x766D, 0xFFFD, -/* 1698 */ 0x792E, 0xFFFD, 0x5D3E, 0x5730, 0x5868, 0x4B3D, 0xFFFD, 0xFFFD, -/* 16A0 */ 0x795A, 0x784E, 0x7970, 0x606D, 0x6333, 0x7433, 0xFFFD, 0xFFFD, -/* 16A8 */ 0x6A42, 0x7266, 0x7036, 0x6B64, 0xFFFD, 0xFFFD, 0x7267, 0xFFFD, -/* 16B0 */ 0x5755, 0x5436, 0x7968, 0x5741, 0x696A, 0x574C, 0x5369, 0x6249, -/* 16B8 */ 0xFFFD, 0x7C5B, 0x4D2D, 0x4C30, 0x6A22, 0xFFFD, 0xFFFD, 0x6476, -/* 16C0 */ 0x5040, 0xFFFD, 0x7037, 0x6E21, 0x624A, 0x624B, 0xFFFD, 0x7A4F, -/* 16C8 */ 0x6D4D, 0x6452, 0xFFFD, 0xFFFD, 0x6A29, 0x643A, 0x7322, 0x4D52, -/* 16D0 */ 0xFFFD, 0x764B, 0xFFFD, 0x7166, 0x6D41, 0x683C, 0x6E51, 0x7067, -/* 16D8 */ 0x624C, 0xFFFD, 0xFFFD, 0x642A, 0xFFFD, 0x7561, 0x6D5A, 0x576E, -/* 16E0 */ 0x5171, 0x696B, 0x696C, 0x6064, 0x5A27, 0x5D54, 0xFFFD, 0x6A23, -/* 16E8 */ 0x5643, 0x5674, 0xFFFD, 0x5A5F, 0xFFFD, 0x6F33, 0x6F7D, 0x7268, -/* 16F0 */ 0x6F45, 0xFFFD, 0x6767, 0xFFFD, 0xFFFD, 0x577D, 0xFFFD, 0xFFFD, -/* 16F8 */ 0x674E, 0xFFFD, 0xFFFD, 0x5F5C, 0xFFFD, 0x7947, 0x5F2C, 0xFFFD, -/* 1700 */ 0x565A, 0x557A, 0xFFFD, 0x6477, 0x7021, 0xFFFD, 0x5E2A, 0xFFFD, -/* 1708 */ 0xFFFD, 0x5A3C, 0x587C, 0x7C28, 0xFFFD, 0xFFFD, 0x6C66, 0xFFFD, -/* 1710 */ 0xFFFD, 0x584B, 0x7B39, 0xFFFD, 0x6453, 0xFFFD, 0x4D79, 0x4A6A, -/* 1718 */ 0xFFFD, 0xFFFD, 0x4F54, 0xFFFD, 0x783D, 0x6B65, 0xFFFD, 0xFFFD, -/* 1720 */ 0x6152, 0x7A42, 0x7B61, 0x7A6D, 0x7022, 0x4C71, 0xFFFD, 0x7A23, -/* 1728 */ 0x6277, 0xFFFD, 0x624E, 0xFFFD, 0x6975, 0xFFFD, 0x616B, 0x6768, -/* 1730 */ 0x6857, 0x5A78, 0x544B, 0x7776, 0x5645, 0x5469, 0xFFFD, 0xFFFD, -/* 1738 */ 0x7A7A, 0x4C72, 0x775D, 0xFFFD, 0x5E3A, 0x7039, 0x647E, 0x6449, -/* 1740 */ 0x6A43, 0xFFFD, 0x6F34, 0x7B62, 0xFFFD, 0x4D53, 0x5F3D, 0xFFFD, -/* 1748 */ 0x7747, 0x787D, 0xFFFD, 0xFFFD, 0x787C, 0x5E2B, 0x5B68, 0xFFFD, -/* 1750 */ 0xFFFD, 0x635D, 0xFFFD, 0x6162, 0x5146, 0x7650, 0x6B66, 0x5A79, -/* 1758 */ 0x5E78, 0x7869, 0x635E, 0x7A43, 0x6557, 0xFFFD, 0x6C48, 0x7349, -/* 1760 */ 0xFFFD, 0xFFFD, 0x643B, 0x6F36, 0xFFFD, 0x5C3F, 0x504F, 0xFFFD, -/* 1768 */ 0x4F7A, 0x734A, 0x6057, 0x5147, 0x692E, 0xFFFD, 0x683D, 0xFFFD, -/* 1770 */ 0xFFFD, 0x7A44, 0x624F, 0xFFFD, 0xFFFD, 0x7A45, 0x5C60, 0xFFFD, -/* 1778 */ 0xFFFD, 0x7B30, 0x5829, 0x655F, 0x7927, 0xFFFD, 0xFFFD, 0x766E, -/* 1780 */ 0xFFFD, 0x764C, 0x6278, 0x7152, 0x524C, 0x4F4B, 0xFFFD, 0xFFFD, -/* 1788 */ 0x4A3D, 0x766F, 0xFFFD, 0x5E79, 0x7167, 0xFFFD, 0x5E3E, 0x5148, -/* 1790 */ 0x5149, 0x7562, 0x6153, 0x5869, 0xFFFD, 0xFFFD, 0x787E, 0xFFFD, -/* 1798 */ 0x4F4C, 0x4E76, 0xFFFD, 0x7A50, 0xFFFD, 0xFFFD, 0x4C73, 0x663E, -/* 17A0 */ 0x762E, 0xFFFD, 0xFFFD, 0x5570, 0xFFFD, 0xFFFD, 0x514A, 0x7C3E, -/* 17A8 */ 0x5571, 0x6250, 0x7477, 0x5722, 0xFFFD, 0xFFFD, 0x7763, 0x4E5A, -/* 17B0 */ 0x7B6B, 0x5B26, 0x5B5E, 0x5865, 0x6F46, 0xFFFD, 0xFFFD, 0x786A, -/* 17B8 */ 0x4E77, 0xFFFD, 0xFFFD, 0x6058, 0x7563, 0xFFFD, 0xFFFD, 0x644A, -/* 17C0 */ 0xFFFD, 0x5C61, 0xFFFD, 0xFFFD, 0x7948, 0x4B3E, 0xFFFD, 0x5C2E, -/* 17C8 */ 0x7068, 0xFFFD, 0x5D40, 0xFFFD, 0x4F4D, 0x5C73, 0x5930, 0xFFFD, -/* 17D0 */ 0x6669, 0x646C, 0xFFFD, 0x6465, 0x643D, 0xFFFD, 0xFFFD, 0x4D5C, -/* 17D8 */ 0x5977, 0x7D53, 0x6B6D, 0x565C, 0x6724, 0xFFFD, 0x5663, 0x514B, -/* 17E0 */ 0x5664, 0x5E7A, 0xFFFD, 0x5778, 0x4F55, 0x587D, 0x582B, 0xFFFD, -/* 17E8 */ 0xFFFD, 0x7D4B, 0x6028, 0x5573, 0xFFFD, 0xFFFD, 0x7D59, 0xFFFD, -/* 17F0 */ 0xFFFD, 0x4C23, 0x5979, 0xFFFD, 0xFFFD, 0x536A, 0x7575, 0xFFFD, -/* 17F8 */ 0x6F47, 0x6828, 0x5C2F, 0x703A, 0x6E31, 0xFFFD, 0xFFFD, 0x6E32, -/* 1800 */ 0x6E52, 0xFFFD, 0x5646, 0x6065, 0xFFFD, 0xFFFD, 0x733B, 0xFFFD, -/* 1808 */ 0x6561, 0x5723, 0xFFFD, 0xFFFD, 0x5B42, 0x3021, 0x3022, 0xFFFD, -/* 1810 */ 0xFFFD, 0x3023, 0x3037, 0x3038, 0x303C, 0x303D, 0xFFFD, 0xFFFD, -/* 1818 */ 0x303E, 0x3040, 0xFFFD, 0x3041, 0x3045, 0x3046, 0xFFFD, 0xFFFD, -/* 1820 */ 0x3047, 0xFFFD, 0xFFFD, 0x3048, 0x3049, 0xFFFD, 0x304A, 0x304B, -/* 1828 */ 0x304C, 0x3057, 0x3058, 0x305F, 0xFFFD, 0xFFFD, 0x3060, 0x3061, -/* 1830 */ 0x3062, 0x3063, 0x3067, 0xFFFD, 0xFFFD, 0x3068, 0x306B, 0xFFFD, -/* 1838 */ 0x306C, 0x306D, 0x306E, 0xFFFD, 0xFFFD, 0x306F, 0xFFFD, 0xFFFD, -/* 1840 */ 0x3070, 0x3071, 0xFFFD, 0x3072, 0xFFFD, 0x3073, 0x3077, 0xFFFD, -/* 1848 */ 0x3078, 0x3079, 0x307A, 0x307B, 0xFFFD, 0xFFFD, 0x307C, 0x307D, -/* 1850 */ 0xFFFD, 0x307E, 0x3121, 0x3122, 0xFFFD, 0x3123, 0xFFFD, 0x3124, -/* 1858 */ 0x3128, 0xFFFD, 0xFFFD, 0x3129, 0x312A, 0x312B, 0x312C, 0xFFFD, -/* 1860 */ 0xFFFD, 0x312D, 0x312F, 0x3130, 0xFFFD, 0x3131, 0xFFFD, 0x3132, -/* 1868 */ 0x3136, 0xFFFD, 0x3137, 0x3138, 0x3139, 0xFFFD, 0xFFFD, 0x313A, -/* 1870 */ 0x3142, 0xFFFD, 0x3143, 0x3144, 0x3145, 0x3146, 0xFFFD, 0xFFFD, -/* 1878 */ 0x3147, 0x3149, 0x314A, 0x314D, 0x314E, 0xFFFD, 0xFFFD, 0x314F, -/* 1880 */ 0x3151, 0x3152, 0xFFFD, 0x3153, 0x3157, 0x3158, 0xFFFD, 0xFFFD, -/* 1888 */ 0x3159, 0x315D, 0x315E, 0xFFFD, 0x315F, 0xFFFD, 0x3160, 0x3162, -/* 1890 */ 0x3163, 0xFFFD, 0xFFFD, 0x3164, 0xFFFD, 0xFFFD, 0x3165, 0x3166, -/* 1898 */ 0xFFFD, 0x3167, 0x3168, 0x3169, 0xFFFD, 0x316A, 0xFFFD, 0x316B, -/* 18A0 */ 0x316C, 0x3172, 0xFFFD, 0x3173, 0x3174, 0x3175, 0x3179, 0xFFFD, -/* 18A8 */ 0xFFFD, 0x317A, 0x317B, 0xFFFD, 0xFFFD, 0x317C, 0x317E, 0x3221, -/* 18B0 */ 0x3225, 0x3226, 0x322D, 0x322E, 0x3232, 0x3233, 0xFFFD, 0xFFFD, -/* 18B8 */ 0x3234, 0x3235, 0xFFFD, 0xFFFD, 0x3236, 0xFFFD, 0x3237, 0x323B, -/* 18C0 */ 0x323C, 0x323D, 0xFFFD, 0xFFFD, 0x323E, 0x323F, 0x3240, 0xFFFD, -/* 18C8 */ 0xFFFD, 0x3241, 0xFFFD, 0x3242, 0xFFFD, 0x3243, 0x3244, 0x3245, -/* 18D0 */ 0xFFFD, 0x3246, 0x324A, 0x324B, 0x324D, 0x324E, 0x324F, 0x3250, -/* 18D8 */ 0x3255, 0x3256, 0x3259, 0x325A, 0xFFFD, 0xFFFD, 0x325B, 0x3260, -/* 18E0 */ 0xFFFD, 0x3261, 0x3262, 0x3265, 0x3266, 0x3267, 0x3268, 0xFFFD, -/* 18E8 */ 0xFFFD, 0x3269, 0x326B, 0x326C, 0xFFFD, 0xFFFD, 0x326D, 0x3271, -/* 18F0 */ 0x3272, 0x3274, 0x3275, 0xFFFD, 0xFFFD, 0x3276, 0xFFFD, 0x3277, -/* 18F8 */ 0xFFFD, 0x3278, 0xFFFD, 0x3279, 0x327D, 0xFFFD, 0x327E, 0x3322, -/* 1900 */ 0x3323, 0xFFFD, 0xFFFD, 0x3324, 0x3326, 0x3327, 0xFFFD, 0x3328, -/* 1908 */ 0xFFFD, 0x3329, 0x3332, 0x3333, 0x333F, 0x3340, 0x3344, 0x3345, -/* 1910 */ 0xFFFD, 0xFFFD, 0x3346, 0x334A, 0x334B, 0xFFFD, 0x334C, 0x334D, -/* 1918 */ 0x334E, 0xFFFD, 0x334F, 0x3350, 0x3351, 0x3352, 0x335B, 0x335C, -/* 1920 */ 0x3360, 0x3361, 0xFFFD, 0xFFFD, 0x3362, 0x3364, 0x3365, 0xFFFD, -/* 1928 */ 0xFFFD, 0x3366, 0x3367, 0xFFFD, 0xFFFD, 0x3368, 0x336B, 0x336C, -/* 1930 */ 0xFFFD, 0xFFFD, 0x336D, 0x336E, 0xFFFD, 0x336F, 0x3370, 0x3371, -/* 1938 */ 0xFFFD, 0x3372, 0xFFFD, 0x3373, 0x337D, 0x337E, 0xFFFD, 0x3421, -/* 1940 */ 0x3422, 0x3423, 0xFFFD, 0xFFFD, 0x3424, 0x3426, 0xFFFD, 0x3427, -/* 1948 */ 0xFFFD, 0x3428, 0x3429, 0x342A, 0xFFFD, 0xFFFD, 0x342B, 0xFFFD, -/* 1950 */ 0xFFFD, 0x342C, 0x342D, 0x342E, 0x342F, 0xFFFD, 0x3430, 0xFFFD, -/* 1958 */ 0x3431, 0x3438, 0x3439, 0x343A, 0x343B, 0x343D, 0x343E, 0x3440, -/* 1960 */ 0x3441, 0xFFFD, 0xFFFD, 0x3442, 0x3446, 0x3447, 0xFFFD, 0x3448, -/* 1968 */ 0xFFFD, 0x3449, 0x344A, 0x344B, 0xFFFD, 0x344C, 0x344F, 0x3450, -/* 1970 */ 0xFFFD, 0xFFFD, 0x3451, 0x3452, 0xFFFD, 0x3453, 0x3454, 0x3455, -/* 1978 */ 0xFFFD, 0x3456, 0xFFFD, 0x3457, 0x346F, 0x3470, 0x3478, 0xFFFD, -/* 1980 */ 0xFFFD, 0x3479, 0x347A, 0xFFFD, 0x347B, 0x347C, 0x347D, 0x347E, -/* 1988 */ 0xFFFD, 0x3521, 0xFFFD, 0x3522, 0xFFFD, 0x3523, 0xFFFD, 0xFFFD, -/* 1990 */ 0x3524, 0xFFFD, 0x3525, 0x3526, 0xFFFD, 0xFFFD, 0x3527, 0x3529, -/* 1998 */ 0x352A, 0x3531, 0x3532, 0x3535, 0x3536, 0xFFFD, 0xFFFD, 0x3537, -/* 19A0 */ 0xFFFD, 0xFFFD, 0x3538, 0x3539, 0xFFFD, 0x353A, 0xFFFD, 0x353B, -/* 19A8 */ 0x353C, 0x353D, 0xFFFD, 0x353E, 0xFFFD, 0x353F, 0xFFFD, 0x3540, -/* 19B0 */ 0xFFFD, 0x3541, 0xFFFD, 0xFFFD, 0x3542, 0x354A, 0x354B, 0xFFFD, -/* 19B8 */ 0x354C, 0x354E, 0x354F, 0xFFFD, 0xFFFD, 0x3550, 0x3552, 0x3553, -/* 19C0 */ 0xFFFD, 0x3554, 0xFFFD, 0x3555, 0x355D, 0xFFFD, 0x355E, 0xFFFD, -/* 19C8 */ 0x355F, 0x3565, 0x3566, 0xFFFD, 0xFFFD, 0x3567, 0xFFFD, 0xFFFD, -/* 19D0 */ 0x3568, 0x3569, 0xFFFD, 0x356A, 0x356B, 0x356C, 0xFFFD, 0x356D, -/* 19D8 */ 0xFFFD, 0x356E, 0x3570, 0x3571, 0xFFFD, 0xFFFD, 0x3572, 0xFFFD, -/* 19E0 */ 0xFFFD, 0x3573, 0x3574, 0x3575, 0x3576, 0x357B, 0x357C, 0xFFFD, -/* 19E8 */ 0xFFFD, 0x357D, 0x3621, 0x3622, 0x362B, 0x362C, 0x3630, 0x3631, -/* 19F0 */ 0xFFFD, 0xFFFD, 0x3632, 0x3633, 0xFFFD, 0x3634, 0x3635, 0x3636, -/* 19F8 */ 0x3637, 0x3640, 0x3641, 0x3647, 0x3648, 0xFFFD, 0xFFFD, 0x3649, -/* 1A00 */ 0x3651, 0x3652, 0xFFFD, 0xFFFD, 0x3653, 0x3655, 0x3656, 0x365C, -/* 1A08 */ 0x365D, 0x365F, 0x3660, 0xFFFD, 0xFFFD, 0x3661, 0xFFFD, 0xFFFD, -/* 1A10 */ 0x3662, 0x3663, 0x3664, 0x3665, 0xFFFD, 0x3666, 0x366A, 0x366B, -/* 1A18 */ 0x366F, 0x3670, 0xFFFD, 0x3671, 0xFFFD, 0x3672, 0x3673, 0x3674, -/* 1A20 */ 0xFFFD, 0xFFFD, 0x3675, 0x3677, 0x3678, 0x367D, 0x367E, 0x3721, -/* 1A28 */ 0x3722, 0xFFFD, 0xFFFD, 0x3723, 0x3725, 0x3726, 0x372A, 0x372B, -/* 1A30 */ 0xFFFD, 0xFFFD, 0x372C, 0x372D, 0xFFFD, 0x372E, 0x372F, 0x3730, -/* 1A38 */ 0xFFFD, 0xFFFD, 0x3731, 0x3733, 0x3734, 0x373D, 0x373E, 0xFFFD, -/* 1A40 */ 0x373F, 0xFFFD, 0x3740, 0x3741, 0x3742, 0xFFFD, 0xFFFD, 0x3743, -/* 1A48 */ 0x3745, 0x3746, 0x374C, 0xFFFD, 0x374D, 0x374E, 0x374F, 0xFFFD, -/* 1A50 */ 0xFFFD, 0x3750, 0x3752, 0x3753, 0xFFFD, 0x3754, 0xFFFD, 0x3755, -/* 1A58 */ 0x375D, 0x375E, 0xFFFD, 0x375F, 0xFFFD, 0x3760, 0x3764, 0xFFFD, -/* 1A60 */ 0x3765, 0xFFFD, 0x3766, 0x3767, 0x3768, 0xFFFD, 0xFFFD, 0x3769, -/* 1A68 */ 0x376B, 0x376C, 0xFFFD, 0x376D, 0xFFFD, 0x376E, 0x3772, 0x3773, -/* 1A70 */ 0xFFFD, 0xFFFD, 0x3774, 0x3776, 0xFFFD, 0xFFFD, 0x3777, 0xFFFD, -/* 1A78 */ 0x3778, 0x3779, 0x377A, 0xFFFD, 0xFFFD, 0x377B, 0x377D, 0x377E, -/* 1A80 */ 0xFFFD, 0x3821, 0xFFFD, 0x3822, 0x3823, 0x3824, 0xFFFD, 0xFFFD, -/* 1A88 */ 0x3825, 0x3827, 0x3828, 0xFFFD, 0x3829, 0xFFFD, 0x382A, 0x382B, -/* 1A90 */ 0xFFFD, 0xFFFD, 0x382C, 0x382D, 0x382E, 0x382F, 0xFFFD, 0xFFFD, -/* 1A98 */ 0x3830, 0x3832, 0x3833, 0xFFFD, 0x3834, 0xFFFD, 0x3835, 0x3836, -/* 1AA0 */ 0x3837, 0xFFFD, 0xFFFD, 0x3838, 0x383E, 0x383F, 0xFFFD, 0x3840, -/* 1AA8 */ 0xFFFD, 0x3841, 0x3842, 0xFFFD, 0xFFFD, 0x3843, 0x3849, 0x384A, -/* 1AB0 */ 0x384F, 0x3850, 0x3853, 0x3854, 0xFFFD, 0xFFFD, 0x3855, 0x3856, -/* 1AB8 */ 0xFFFD, 0x3857, 0x3858, 0x3859, 0xFFFD, 0x385A, 0xFFFD, 0x385B, -/* 1AC0 */ 0x385C, 0x3862, 0x3863, 0x3867, 0x3868, 0xFFFD, 0xFFFD, 0x3869, -/* 1AC8 */ 0x3870, 0x3871, 0xFFFD, 0x3872, 0x3873, 0x3874, 0xFFFD, 0x3875, -/* 1AD0 */ 0x3876, 0x3877, 0xFFFD, 0x3878, 0xFFFD, 0x3879, 0x387C, 0x387D, -/* 1AD8 */ 0x3923, 0xFFFD, 0x3924, 0xFFFD, 0x3925, 0x3929, 0xFFFD, 0x392A, -/* 1AE0 */ 0x3933, 0x3934, 0xFFFD, 0x3935, 0xFFFD, 0x3936, 0x3937, 0xFFFD, -/* 1AE8 */ 0x3938, 0x3939, 0x393C, 0xFFFD, 0x393D, 0x3945, 0xFFFD, 0xFFFD, -/* 1AF0 */ 0x3946, 0x394A, 0xFFFD, 0xFFFD, 0x394B, 0x394C, 0x394D, 0xFFFD, -/* 1AF8 */ 0xFFFD, 0x394E, 0xFFFD, 0xFFFD, 0x394F, 0x3950, 0xFFFD, 0x3951, -/* 1B00 */ 0x3952, 0x3953, 0x3957, 0xFFFD, 0x3958, 0x3963, 0x3964, 0xFFFD, -/* 1B08 */ 0x3965, 0xFFFD, 0x3966, 0x3967, 0xFFFD, 0xFFFD, 0x3968, 0x3969, -/* 1B10 */ 0xFFFD, 0xFFFD, 0x396A, 0x396C, 0x396D, 0x3971, 0xFFFD, 0xFFFD, -/* 1B18 */ 0x3972, 0x3973, 0xFFFD, 0xFFFD, 0x3974, 0x3976, 0x3977, 0xFFFD, -/* 1B20 */ 0xFFFD, 0x3978, 0xFFFD, 0xFFFD, 0x3979, 0x397A, 0xFFFD, 0x397B, -/* 1B28 */ 0x397C, 0x397D, 0xFFFD, 0x397E, 0xFFFD, 0x3A21, 0x3A22, 0x3A23, -/* 1B30 */ 0x3A24, 0xFFFD, 0xFFFD, 0x3A25, 0xFFFD, 0xFFFD, 0x3A26, 0x3A27, -/* 1B38 */ 0x3A28, 0x3A29, 0x3A2D, 0x3A2E, 0xFFFD, 0xFFFD, 0x3A2F, 0x3A35, -/* 1B40 */ 0xFFFD, 0xFFFD, 0x3A36, 0x3A3D, 0x3A3E, 0xFFFD, 0x3A3F, 0xFFFD, -/* 1B48 */ 0x3A40, 0x3A46, 0x3A47, 0xFFFD, 0xFFFD, 0x3A48, 0x3A4A, 0x3A4B, -/* 1B50 */ 0x3A4E, 0x3A4F, 0xFFFD, 0xFFFD, 0x3A50, 0x3A55, 0x3A56, 0xFFFD, -/* 1B58 */ 0x3A57, 0xFFFD, 0x3A58, 0x3A59, 0x3A5A, 0xFFFD, 0x3A5B, 0x3A5F, -/* 1B60 */ 0x3A60, 0xFFFD, 0xFFFD, 0x3A61, 0x3A67, 0xFFFD, 0xFFFD, 0x3A68, -/* 1B68 */ 0xFFFD, 0x3A69, 0x3A6A, 0x3A6B, 0xFFFD, 0xFFFD, 0x3A6C, 0x3A6E, -/* 1B70 */ 0x3A6F, 0xFFFD, 0x3A70, 0x3A71, 0x3A72, 0xFFFD, 0xFFFD, 0x3A73, -/* 1B78 */ 0x3A74, 0xFFFD, 0x3A75, 0x3A76, 0x3A77, 0xFFFD, 0x3A78, 0x3A7C, -/* 1B80 */ 0x3A7D, 0xFFFD, 0xFFFD, 0x3A7E, 0x3B21, 0xFFFD, 0x3B22, 0x3B23, -/* 1B88 */ 0x3B24, 0x3B2D, 0x3B2E, 0x3B32, 0x3B33, 0x3B35, 0x3B36, 0xFFFD, -/* 1B90 */ 0xFFFD, 0x3B37, 0xFFFD, 0xFFFD, 0x3B38, 0x3B39, 0x3B40, 0x3B41, -/* 1B98 */ 0x3B42, 0x3B43, 0x3B47, 0x3B48, 0xFFFD, 0xFFFD, 0x3B49, 0x3B4B, -/* 1BA0 */ 0x3B4C, 0x3B51, 0x3B52, 0xFFFD, 0xFFFD, 0x3B53, 0x3B55, 0xFFFD, -/* 1BA8 */ 0xFFFD, 0x3B56, 0xFFFD, 0x3B57, 0x3B5D, 0x3B5E, 0x3B5F, 0x3B60, -/* 1BB0 */ 0xFFFD, 0xFFFD, 0x3B61, 0x3B63, 0x3B64, 0xFFFD, 0x3B65, 0xFFFD, -/* 1BB8 */ 0x3B66, 0x3B67, 0x3B68, 0xFFFD, 0x3B69, 0x3B6A, 0x3B6F, 0x3B70, -/* 1BC0 */ 0x3B74, 0xFFFD, 0xFFFD, 0x3B75, 0x3B76, 0xFFFD, 0xFFFD, 0x3B77, -/* 1BC8 */ 0x3B79, 0x3B7A, 0x3B7E, 0x3C21, 0xFFFD, 0xFFFD, 0x3C22, 0x3C24, -/* 1BD0 */ 0x3C25, 0xFFFD, 0x3C26, 0xFFFD, 0x3C27, 0x3C32, 0x3C33, 0xFFFD, -/* 1BD8 */ 0x3C34, 0x3C35, 0x3C36, 0x3C37, 0x3C3B, 0xFFFD, 0x3C3C, 0x3C3D, -/* 1BE0 */ 0xFFFD, 0xFFFD, 0x3C3E, 0x3C40, 0x3C41, 0x3C45, 0x3C46, 0xFFFD, -/* 1BE8 */ 0xFFFD, 0x3C47, 0x3C49, 0x3C4A, 0x3C56, 0xFFFD, 0x3C57, 0x3C58, -/* 1BF0 */ 0x3C59, 0xFFFD, 0x3C5A, 0xFFFD, 0x3C5B, 0x3C5C, 0xFFFD, 0xFFFD, -/* 1BF8 */ 0x3C5D, 0x3C5E, 0xFFFD, 0xFFFD, 0x3C5F, 0x3C65, 0xFFFD, 0xFFFD, -/* 1C00 */ 0x3C66, 0x3C67, 0x3C6B, 0x3C6C, 0xFFFD, 0x3C6D, 0x3C6E, 0x3C6F, -/* 1C08 */ 0xFFFD, 0xFFFD, 0x3C70, 0x3C72, 0x3C73, 0xFFFD, 0x3C74, 0xFFFD, -/* 1C10 */ 0x3C75, 0x3C76, 0x3C77, 0xFFFD, 0xFFFD, 0x3C78, 0xFFFD, 0xFFFD, -/* 1C18 */ 0x3C79, 0x3C7A, 0x3C7B, 0x3C7C, 0xFFFD, 0x3C7D, 0xFFFD, 0x3C7E, -/* 1C20 */ 0xFFFD, 0x3D21, 0xFFFD, 0x3D22, 0x3D23, 0xFFFD, 0x3D24, 0x3D26, -/* 1C28 */ 0x3D27, 0xFFFD, 0xFFFD, 0x3D28, 0x3D2C, 0x3D2D, 0xFFFD, 0xFFFD, -/* 1C30 */ 0x3D2E, 0x3D30, 0x3D31, 0xFFFD, 0x3D32, 0xFFFD, 0x3D33, 0x3D34, -/* 1C38 */ 0x3D35, 0x3D37, 0xFFFD, 0xFFFD, 0x3D38, 0xFFFD, 0x3D39, 0x3D3A, -/* 1C40 */ 0x3D3B, 0xFFFD, 0xFFFD, 0x3D3C, 0x3D3D, 0x3D3E, 0x3D3F, 0x3D40, -/* 1C48 */ 0xFFFD, 0x3D41, 0xFFFD, 0x3D42, 0x3D43, 0x3D44, 0xFFFD, 0xFFFD, -/* 1C50 */ 0x3D45, 0xFFFD, 0xFFFD, 0x3D46, 0x3D47, 0x3D4B, 0xFFFD, 0x3D4C, -/* 1C58 */ 0x3D4D, 0xFFFD, 0x3D4E, 0x3D4F, 0xFFFD, 0x3D50, 0x3D51, 0x3D53, -/* 1C60 */ 0x3D54, 0xFFFD, 0xFFFD, 0x3D55, 0x3D56, 0x3D5C, 0x3D5D, 0xFFFD, -/* 1C68 */ 0xFFFD, 0x3D5E, 0x3D5F, 0x3D61, 0x3D62, 0xFFFD, 0xFFFD, 0x3D63, -/* 1C70 */ 0x3D64, 0xFFFD, 0x3D65, 0x3D66, 0x3D67, 0xFFFD, 0xFFFD, 0x3D68, -/* 1C78 */ 0x3D69, 0x3D6E, 0x3D6F, 0xFFFD, 0xFFFD, 0x3D70, 0xFFFD, 0xFFFD, -/* 1C80 */ 0x3D71, 0x3D72, 0xFFFD, 0x3D73, 0x3D74, 0x3D75, 0x3D77, 0x3D78, -/* 1C88 */ 0xFFFD, 0xFFFD, 0x3D79, 0x3E22, 0x3E23, 0x3E25, 0x3E26, 0xFFFD, -/* 1C90 */ 0xFFFD, 0x3E27, 0x3E29, 0x3E2A, 0x3E32, 0x3E33, 0xFFFD, 0xFFFD, -/* 1C98 */ 0x3E34, 0x3E35, 0xFFFD, 0x3E36, 0x3E3E, 0x3E3F, 0xFFFD, 0xFFFD, -/* 1CA0 */ 0x3E40, 0x3E42, 0x3E43, 0xFFFD, 0x3E44, 0xFFFD, 0x3E45, 0x3E46, -/* 1CA8 */ 0x3E47, 0x3E54, 0x3E55, 0xFFFD, 0x3E56, 0x3E57, 0xFFFD, 0xFFFD, -/* 1CB0 */ 0x3E58, 0x3E5A, 0x3E5B, 0x3E5F, 0x3E60, 0xFFFD, 0xFFFD, 0x3E61, -/* 1CB8 */ 0x3E62, 0xFFFD, 0xFFFD, 0x3E63, 0x3E64, 0x3E65, 0xFFFD, 0x3E66, -/* 1CC0 */ 0xFFFD, 0x3E67, 0x3E68, 0xFFFD, 0x3E69, 0x3E6A, 0x3E6E, 0x3E6F, -/* 1CC8 */ 0xFFFD, 0xFFFD, 0x3E70, 0x3E71, 0x3E7D, 0xFFFD, 0x3E7E, 0xFFFD, -/* 1CD0 */ 0x3F21, 0x3F22, 0xFFFD, 0xFFFD, 0x3F23, 0x3F25, 0x3F26, 0xFFFD, -/* 1CD8 */ 0x3F27, 0xFFFD, 0x3F28, 0x3F2D, 0xFFFD, 0x3F2E, 0x3F2F, 0x3F3C, -/* 1CE0 */ 0x3F3D, 0xFFFD, 0x3F3E, 0x3F3F, 0x3F40, 0x3F41, 0xFFFD, 0xFFFD, -/* 1CE8 */ 0x3F42, 0x3F4A, 0xFFFD, 0x3F4B, 0xFFFD, 0x3F4C, 0x3F4D, 0x3F4E, -/* 1CF0 */ 0xFFFD, 0xFFFD, 0x3F4F, 0x3F51, 0x3F52, 0x3F56, 0x3F57, 0xFFFD, -/* 1CF8 */ 0xFFFD, 0x3F58, 0x3F59, 0xFFFD, 0xFFFD, 0x3F5A, 0xFFFD, 0x3F5B, -/* 1D00 */ 0x3F5C, 0x3F5D, 0xFFFD, 0xFFFD, 0x3F5E, 0x3F60, 0x3F61, 0xFFFD, -/* 1D08 */ 0x3F62, 0xFFFD, 0x3F63, 0x3F64, 0x3F65, 0xFFFD, 0xFFFD, 0x3F66, -/* 1D10 */ 0x3F68, 0x3F69, 0xFFFD, 0x3F6A, 0xFFFD, 0x3F6B, 0x3F6C, 0x3F6D, -/* 1D18 */ 0xFFFD, 0xFFFD, 0x3F6E, 0x3F72, 0x3F73, 0xFFFD, 0x3F74, 0xFFFD, -/* 1D20 */ 0x3F75, 0x3F76, 0x3F77, 0xFFFD, 0xFFFD, 0x3F78, 0x3F7A, 0x3F7B, -/* 1D28 */ 0xFFFD, 0xFFFD, 0x3F7C, 0x3F7D, 0x3F7E, 0x4021, 0xFFFD, 0xFFFD, -/* 1D30 */ 0x4022, 0x4024, 0x4025, 0x4027, 0x4028, 0xFFFD, 0xFFFD, 0x4029, -/* 1D38 */ 0x402B, 0x402C, 0xFFFD, 0x402D, 0xFFFD, 0x402E, 0x402F, 0x4030, -/* 1D40 */ 0xFFFD, 0xFFFD, 0x4031, 0x4033, 0x4034, 0xFFFD, 0x4035, 0xFFFD, -/* 1D48 */ 0x4036, 0xFFFD, 0x4037, 0x4038, 0x4039, 0xFFFD, 0xFFFD, 0x403A, -/* 1D50 */ 0x403C, 0xFFFD, 0x403D, 0x403E, 0xFFFD, 0x403F, 0x404A, 0xFFFD, -/* 1D58 */ 0xFFFD, 0x404B, 0x404C, 0x404D, 0xFFFD, 0xFFFD, 0x404E, 0x4059, -/* 1D60 */ 0xFFFD, 0x405A, 0x405B, 0xFFFD, 0xFFFD, 0x405C, 0x4061, 0x4062, -/* 1D68 */ 0x4067, 0x4068, 0xFFFD, 0xFFFD, 0x4069, 0x406B, 0x406C, 0x4070, -/* 1D70 */ 0x4071, 0xFFFD, 0xFFFD, 0x4072, 0xFFFD, 0x4073, 0xFFFD, 0x4074, -/* 1D78 */ 0x407A, 0x407B, 0xFFFD, 0xFFFD, 0x407C, 0x407D, 0xFFFD, 0x407E, -/* 1D80 */ 0x4121, 0x4122, 0xFFFD, 0x4123, 0xFFFD, 0x4124, 0x4125, 0x4126, -/* 1D88 */ 0x4127, 0xFFFD, 0xFFFD, 0x4128, 0x412A, 0x412B, 0xFFFD, 0x412C, -/* 1D90 */ 0xFFFD, 0x412D, 0x4131, 0x4132, 0xFFFD, 0xFFFD, 0x4133, 0x4134, -/* 1D98 */ 0x4136, 0x4137, 0xFFFD, 0xFFFD, 0x4138, 0x4139, 0xFFFD, 0x413A, -/* 1DA0 */ 0x413B, 0x413C, 0xFFFD, 0x413D, 0x4145, 0xFFFD, 0x4146, 0xFFFD, -/* 1DA8 */ 0x4147, 0x4149, 0x414A, 0x414E, 0x414F, 0xFFFD, 0x4150, 0xFFFD, -/* 1DB0 */ 0x4151, 0x4152, 0x4153, 0xFFFD, 0xFFFD, 0x4154, 0x4156, 0x4157, -/* 1DB8 */ 0xFFFD, 0xFFFD, 0x4158, 0x415C, 0x415D, 0xFFFD, 0x415E, 0xFFFD, -/* 1DC0 */ 0x415F, 0x4163, 0x4164, 0xFFFD, 0xFFFD, 0x4165, 0x4167, 0x4168, -/* 1DC8 */ 0xFFFD, 0x4169, 0x416E, 0x416F, 0xFFFD, 0xFFFD, 0x4170, 0x4172, -/* 1DD0 */ 0x4173, 0xFFFD, 0x4174, 0xFFFD, 0x4175, 0x4176, 0x4177, 0xFFFD, -/* 1DD8 */ 0xFFFD, 0x4178, 0xFFFD, 0xFFFD, 0x4179, 0x417A, 0xFFFD, 0x417B, -/* 1DE0 */ 0x417C, 0x417D, 0xFFFD, 0x417E, 0xFFFD, 0x4221, 0x4222, 0xFFFD, -/* 1DE8 */ 0xFFFD, 0x4223, 0x4224, 0xFFFD, 0x4225, 0x4226, 0xFFFD, 0xFFFD, -/* 1DF0 */ 0x4227, 0xFFFD, 0x4228, 0xFFFD, 0x4229, 0xFFFD, 0xFFFD, 0x422A, -/* 1DF8 */ 0x422B, 0x422C, 0x4230, 0x4231, 0xFFFD, 0xFFFD, 0x4232, 0x4234, -/* 1E00 */ 0x4235, 0x423C, 0x423D, 0xFFFD, 0xFFFD, 0x423E, 0x4240, 0x4241, -/* 1E08 */ 0x4249, 0x424A, 0xFFFD, 0xFFFD, 0x424B, 0x424D, 0x424E, 0xFFFD, -/* 1E10 */ 0x424F, 0xFFFD, 0x4250, 0xFFFD, 0x4251, 0x4252, 0x4253, 0x425B, -/* 1E18 */ 0x425C, 0x425E, 0x425F, 0xFFFD, 0xFFFD, 0x4260, 0x4262, 0x4263, -/* 1E20 */ 0x4266, 0x4267, 0x426B, 0xFFFD, 0xFFFD, 0x426C, 0xFFFD, 0x426D, -/* 1E28 */ 0x426E, 0x426F, 0xFFFD, 0xFFFD, 0x4270, 0x4272, 0x4273, 0x4274, -/* 1E30 */ 0x4275, 0x4279, 0xFFFD, 0x427A, 0xFFFD, 0x427B, 0x427C, 0x427D, -/* 1E38 */ 0xFFFD, 0x427E, 0x4324, 0x4325, 0xFFFD, 0xFFFD, 0x4326, 0x4328, -/* 1E40 */ 0x4329, 0x432E, 0xFFFD, 0x432F, 0xFFFD, 0x4330, 0x4333, 0x4334, -/* 1E48 */ 0xFFFD, 0xFFFD, 0x4335, 0x4337, 0x4338, 0x433C, 0x433D, 0xFFFD, -/* 1E50 */ 0xFFFD, 0x433E, 0x4340, 0x4341, 0xFFFD, 0x4342, 0xFFFD, 0x4343, -/* 1E58 */ 0x434A, 0x434B, 0xFFFD, 0xFFFD, 0x434C, 0x434E, 0x434F, 0xFFFD, -/* 1E60 */ 0x4350, 0xFFFD, 0x4351, 0x4359, 0x435A, 0xFFFD, 0x435B, 0xFFFD, -/* 1E68 */ 0x435C, 0x435F, 0x4360, 0xFFFD, 0xFFFD, 0x4361, 0x4363, 0x4364, -/* 1E70 */ 0xFFFD, 0x4365, 0xFFFD, 0x4366, 0x436E, 0x436F, 0xFFFD, 0x4370, -/* 1E78 */ 0xFFFD, 0x4371, 0x4377, 0x4378, 0xFFFD, 0xFFFD, 0x4379, 0x437B, -/* 1E80 */ 0x437C, 0xFFFD, 0x437D, 0xFFFD, 0x437E, 0x4421, 0x4422, 0xFFFD, -/* 1E88 */ 0xFFFD, 0x4423, 0x4427, 0x4428, 0xFFFD, 0x4429, 0xFFFD, 0x442A, -/* 1E90 */ 0x442B, 0x442C, 0xFFFD, 0xFFFD, 0x442D, 0x442F, 0x4430, 0xFFFD, -/* 1E98 */ 0x4431, 0xFFFD, 0x4432, 0x4433, 0x4434, 0xFFFD, 0xFFFD, 0x4435, -/* 1EA0 */ 0x4437, 0x4438, 0x443C, 0x443D, 0x443F, 0x4440, 0xFFFD, 0xFFFD, -/* 1EA8 */ 0x4441, 0xFFFD, 0xFFFD, 0x4442, 0x4443, 0x4444, 0x4445, 0x4449, -/* 1EB0 */ 0x444A, 0xFFFD, 0xFFFD, 0x444B, 0x444D, 0x444E, 0xFFFD, 0x444F, -/* 1EB8 */ 0xFFFD, 0x4450, 0x4454, 0x4455, 0x445A, 0x445B, 0xFFFD, 0xFFFD, -/* 1EC0 */ 0x445C, 0x445E, 0x445F, 0xFFFD, 0x4460, 0xFFFD, 0x4461, 0x4462, -/* 1EC8 */ 0x4463, 0xFFFD, 0xFFFD, 0x4464, 0x446D, 0x446E, 0xFFFD, 0xFFFD, -/* 1ED0 */ 0x446F, 0x4471, 0x4472, 0xFFFD, 0x4473, 0xFFFD, 0x4474, 0x447B, -/* 1ED8 */ 0x447C, 0xFFFD, 0xFFFD, 0x447D, 0x4521, 0x4522, 0xFFFD, 0x4523, -/* 1EE0 */ 0xFFFD, 0x4524, 0x4529, 0x452A, 0xFFFD, 0xFFFD, 0x452B, 0x452D, -/* 1EE8 */ 0x452E, 0x4530, 0x4531, 0xFFFD, 0xFFFD, 0x4532, 0x4534, 0x4535, -/* 1EF0 */ 0xFFFD, 0x4536, 0xFFFD, 0x4537, 0x4538, 0x4539, 0xFFFD, 0xFFFD, -/* 1EF8 */ 0x453A, 0x453B, 0x453C, 0x453D, 0x453E, 0x4542, 0x4543, 0xFFFD, -/* 1F00 */ 0xFFFD, 0x4544, 0x4546, 0x4547, 0x454D, 0x454E, 0xFFFD, 0xFFFD, -/* 1F08 */ 0x454F, 0x4550, 0xFFFD, 0x4551, 0x4552, 0x4553, 0x4557, 0x4558, -/* 1F10 */ 0xFFFD, 0xFFFD, 0x4559, 0x455B, 0x455C, 0xFFFD, 0x455D, 0xFFFD, -/* 1F18 */ 0x455E, 0x4564, 0x4565, 0xFFFD, 0xFFFD, 0x4566, 0x4568, 0x4569, -/* 1F20 */ 0xFFFD, 0x456A, 0xFFFD, 0x456B, 0x456C, 0xFFFD, 0x456D, 0x4572, -/* 1F28 */ 0xFFFD, 0x4573, 0x4575, 0x4576, 0xFFFD, 0xFFFD, 0x4577, 0x4579, -/* 1F30 */ 0x457A, 0xFFFD, 0x457B, 0xFFFD, 0x457C, 0x4622, 0x4623, 0xFFFD, -/* 1F38 */ 0xFFFD, 0x4624, 0x4626, 0x4627, 0x462E, 0x462F, 0xFFFD, 0xFFFD, -/* 1F40 */ 0x4630, 0xFFFD, 0xFFFD, 0x4631, 0x4632, 0xFFFD, 0x4633, 0x4634, -/* 1F48 */ 0x4635, 0xFFFD, 0x4636, 0x463A, 0x463B, 0x463C, 0x463D, 0xFFFD, -/* 1F50 */ 0xFFFD, 0x463E, 0x4640, 0x4641, 0xFFFD, 0x4642, 0xFFFD, 0x4643, -/* 1F58 */ 0x4648, 0xFFFD, 0x4649, 0x464A, 0x464B, 0x464F, 0xFFFD, 0xFFFD, -/* 1F60 */ 0x4650, 0x4651, 0xFFFD, 0xFFFD, 0x4652, 0x4654, 0x4655, 0x4659, -/* 1F68 */ 0x465A, 0x465B, 0x465C, 0xFFFD, 0xFFFD, 0x465D, 0x465F, 0x4660, -/* 1F70 */ 0x4664, 0x4665, 0xFFFD, 0xFFFD, 0x4666, 0x4668, 0x4669, 0xFFFD, -/* 1F78 */ 0x466A, 0xFFFD, 0x466B, 0x466F, 0x4670, 0xFFFD, 0xFFFD, 0x4671, -/* 1F80 */ 0x4672, 0x4675, 0xFFFD, 0x4676, 0x4677, 0x4678, 0xFFFD, 0xFFFD, -/* 1F88 */ 0x4679, 0x467B, 0x467C, 0xFFFD, 0x467D, 0xFFFD, 0x467E, 0x4728, -/* 1F90 */ 0xFFFD, 0x4729, 0x472A, 0x472B, 0xFFFD, 0xFFFD, 0x472C, 0xFFFD, -/* 1F98 */ 0xFFFD, 0x472D, 0x472E, 0xFFFD, 0x472F, 0x4730, 0x4731, 0xFFFD, -/* 1FA0 */ 0x4732, 0xFFFD, 0x4733, 0x4739, 0xFFFD, 0xFFFD, 0x473A, 0x473E, -/* 1FA8 */ 0xFFFD, 0xFFFD, 0x473F, 0xFFFD, 0x4740, 0x4744, 0x4745, 0xFFFD, -/* 1FB0 */ 0x4746, 0x4747, 0x4748, 0xFFFD, 0xFFFD, 0x4749, 0x474B, 0x474C, -/* 1FB8 */ 0xFFFD, 0x474D, 0xFFFD, 0x474E, 0x474F, 0x4750, 0xFFFD, 0xFFFD, -/* 1FC0 */ 0x4751, 0x4753, 0xFFFD, 0xFFFD, 0x4754, 0x4755, 0xFFFD, 0x4756, -/* 1FC8 */ 0xFFFD, 0x4757, 0x4758, 0x4759, 0xFFFD, 0xFFFD, 0x475A, 0x475C, -/* 1FD0 */ 0x475D, 0x4763, 0x4764, 0xFFFD, 0xFFFD, 0x4765, 0x4766, 0xFFFD, -/* 1FD8 */ 0x4767, 0x4768, 0x4769, 0xFFFD, 0x476A, 0xFFFD, 0x476B, 0x476C, -/* 1FE0 */ 0x476D, 0xFFFD, 0xFFFD, 0x476E, 0x4770, 0x4771, 0xFFFD, 0x4772, -/* 1FE8 */ 0xFFFD, 0x4773, 0x4774, 0x4775, 0xFFFD, 0xFFFD, 0x4776, 0x4778, -/* 1FF0 */ 0x4779, 0x4823, 0x4824, 0xFFFD, 0xFFFD, 0x4825, 0x4827, 0xFFFD, -/* 1FF8 */ 0xFFFD, 0x4828, 0x4829, 0xFFFD, 0x482A, 0xFFFD, 0x482B, 0x482C, -/* 2000 */ 0xFFFD, 0xFFFD, 0x482D, 0x482E, 0xFFFD, 0xFFFD, 0x482F, 0x4831, -/* 2008 */ 0xFFFD, 0x4832, 0x4833, 0x4834, 0xFFFD, 0xFFFD, 0x4835, 0x4836, -/* 2010 */ 0xFFFD, 0x4837, 0x4838, 0x4839, 0xFFFD, 0xFFFD, 0x483A, 0x483C, -/* 2018 */ 0xFFFD, 0x483D, 0xFFFD, 0x483E, 0x4842, 0xFFFD, 0x4843, 0x4844, -/* 2020 */ 0x4845, 0xFFFD, 0xFFFD, 0x4846, 0x4848, 0xFFFD, 0xFFFD, 0x4849, -/* 2028 */ 0xFFFD, 0xFFFD, 0x484A, 0xFFFD, 0x484B, 0x4851, 0x4852, 0xFFFD, -/* 2030 */ 0xFFFD, 0x4853, 0x4856, 0x4857, 0xFFFD, 0xFFFD, 0x4858, 0x485A, -/* 2038 */ 0x485B, 0xFFFD, 0x485C, 0xFFFD, 0x485D, 0x485E, 0x485F, 0xFFFD, -/* 2040 */ 0xFFFD, 0x4860, 0x4862, 0xFFFD, 0xFFFD, 0x4863, 0xFFFD, 0x4864, -/* 2048 */ 0x4865, 0x4866, 0xFFFD, 0xFFFD, 0x4867, 0x486C, 0x486D, 0xFFFD, -/* 2050 */ 0x486E, 0xFFFD, 0x486F, 0x4870, 0xFFFD, 0xFFFD, 0x4871, 0x4874, -/* 2058 */ 0x4875, 0x4877, 0x4878, 0xFFFD, 0xFFFD, 0x4879, 0x487B, 0x487C, -/* 2060 */ 0xFFFD, 0x487D, 0xFFFD, 0x487E, 0x4B50, 0x4B56, 0x4B67, 0x4D4F, -/* 2068 */ 0x4D68, 0x4E2D, 0x4F7B, 0x5022, 0x5038, 0x5050, 0x505D, 0x5154, -/* 2070 */ 0x5155, 0x5158, 0x516D, 0x516F, 0x5170, 0x5172, 0x5176, 0x517A, -/* 2078 */ 0x5222, 0x5223, 0x522D, 0x5232, 0x523E, 0x5259, 0x525A, 0x525E, -/* 2080 */ 0x525F, 0x5261, 0x5262, 0x5277, 0x5278, 0x5466, 0x547C, 0x5525, -/* 2088 */ 0x552B, 0x552E, 0x5638, 0x564D, 0x574B, 0x5764, 0x5B45, 0x5B64, -/* 2090 */ 0x5C25, 0x5D25, 0x5D55, 0x5D74, 0x5E7C, 0x5E7E, 0x5F33, 0x5F61, -/* 2098 */ 0x5F68, 0x6071, 0x612D, 0x616D, 0x6375, 0x6421, 0x6429, 0x652E, -/* 20A0 */ 0x6531, 0x6532, 0x6539, 0x653B, 0x653C, 0x6544, 0x654E, 0x6550, -/* 20A8 */ 0x6552, 0x6556, 0x657E, 0x6621, 0x6624, 0x6627, 0x662D, 0x6633, -/* 20B0 */ 0x6637, 0x6638, 0x663C, 0x6644, 0x6646, 0x6647, 0x664A, 0x6652, -/* 20B8 */ 0x6656, 0x6659, 0x665C, 0x665F, 0x6661, 0x666F, 0x6671, 0x6672, -/* 20C0 */ 0x6679, 0x6721, 0x6726, 0x6729, 0x672A, 0x672C, 0x672D, 0x6730, -/* 20C8 */ 0x673F, 0x6741, 0x6746, 0x6747, 0x674B, 0x674D, 0x674F, 0x6750, -/* 20D0 */ 0x6753, 0x675F, 0x6764, 0x6766, 0x6777, 0x6867, 0x6868, 0x6870, -/* 20D8 */ 0x6871, 0x6877, 0x6879, 0x687B, 0x687E, 0x6927, 0x692C, 0x694C, -/* 20E0 */ 0x6977, 0x6A41, 0x6A65, 0x6A74, 0x6A77, 0x6A7C, 0x6A7E, 0x6B24, -/* 20E8 */ 0x6B27, 0x6B29, 0x6B2A, 0x6B3A, 0x6B3B, 0x6B3D, 0x6B41, 0x6B42, -/* 20F0 */ 0x6B46, 0x6B47, 0x6B4C, 0x6B58, 0x6C26, 0x6C27, 0x6C2A, 0x6C35, -/* 20F8 */ 0x6C38, 0x6C3A, 0x6C40, 0x6C41, 0x6C45, 0x6C46, 0x6C49, 0x6C4A, -/* 2100 */ 0x6C55, 0x6C5D, 0x6C5E, 0x6C61, 0x6C64, 0x6C67, 0x6C68, 0x6C77, -/* 2108 */ 0x6C78, 0x6C7A, 0x6D6E, 0x6E5B, 0x723D, 0x727A, 0x7331, 0x7427, -/* 2110 */ 0x746E, 0x7674, 0x7676, 0x7738, 0x7748, 0x7753, 0x785B, 0x7870, -/* 2118 */ 0x7A21, 0x7A22, 0x7A66, 0x7C29, 0x214B, 0x214C, 0x217E, 0x237E, -/* 2120 */ 0xFFFD, 0x214D, 0x235C, -/* End of table Total Length = 0x47AF * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/viscii.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/viscii.uf deleted file mode 100644 index d7d048f9136..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/viscii.uf +++ /dev/null @@ -1,205 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0007 - srcEnd = 0013 - destBegin = 0007 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 001F - srcEnd = 007F - destBegin = 001F -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0000 - srcEnd = 0004 - mappingOffset = 0000 - Mapping = - 0000 0001 FFFD 0003 0004 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0015 - srcEnd = 001D - mappingOffset = 0005 - Mapping = - 0015 0016 0017 0018 FFFD 001A 001B 001C - 001D -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00C0 - srcEnd = 0103 - mappingOffset = 000E - Mapping = - 00C0 00C1 00C2 00C3 FFFD FFFD FFFD FFFD - 00C8 00C9 00CA FFFD 00CC 00CD FFFD FFFD - FFFD FFFD 00D2 00D3 00D4 00A0 FFFD FFFD - FFFD 00D9 00DA FFFD FFFD 00DD FFFD FFFD - 00E0 00E1 00E2 00E3 FFFD FFFD FFFD FFFD - 00E8 00E9 00EA FFFD 00EC 00ED FFFD FFFD - FFFD FFFD 00F2 00F3 00F4 00F5 FFFD FFFD - FFFD 00F9 00FA FFFD FFFD 00FD FFFD FFFD - FFFD FFFD 00C5 00E5 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 0110 - srcEnd = 0111 - mappingOffset = 0052 - Mapping = - 00D0 00F0 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 0128 - srcEnd = 0129 - mappingOffset = 0054 - Mapping = - 00CE 00EE -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 0168 - srcEnd = 0169 - mappingOffset = 0056 - Mapping = - 009D 00FB -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 01A0 - srcEnd = 01A1 - mappingOffset = 0058 - Mapping = - 00B4 00BD -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 01AF - srcEnd = 01B0 - mappingOffset = 005A - Mapping = - 00BF 00DF -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 1EA0 - srcEnd = 1EF9 - mappingOffset = 005C - Mapping = - 0080 00D5 00C4 00E4 0084 00A4 0085 00A5 - 0086 00A6 0006 00E7 0087 00A7 0081 00A1 - 0082 00A2 0002 00C6 0005 00C7 0083 00A3 - 0089 00A9 00CB 00EB 0088 00A8 008A 00AA - 008B 00AB 008C 00AC 008D 00AD 008E 00AE - 009B 00EF 0098 00B8 009A 00F7 0099 00F6 - 008F 00AF 0090 00B0 0091 00B1 0092 00B2 - 0093 00B5 0095 00BE 0096 00B6 0097 00B7 - 00B3 00DE 0094 00FE 009E 00F8 009C 00FC - 00BA 00D1 00BB 00D7 00BC 00D8 00FF 00E6 - 00B9 00F1 009F 00CF 001E 00DC 0014 00D6 - 0019 00DB -End of Item 000A - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0028, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0009 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1100, 0x1111, 0x0111, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0007, 0x0013, 0x0007, -/* 0001 */ 0x001F, 0x007F, 0x001F, -/* 0002 */ 0x0000, 0x0004, 0x0000, -/* 0003 */ 0x0015, 0x001D, 0x0005, -/* 0004 */ 0x00C0, 0x0103, 0x000E, -/* 0005 */ 0x0110, 0x0111, 0x0052, -/* 0006 */ 0x0128, 0x0129, 0x0054, -/* 0007 */ 0x0168, 0x0169, 0x0056, -/* 0008 */ 0x01A0, 0x01A1, 0x0058, -/* 0009 */ 0x01AF, 0x01B0, 0x005A, -/* 000A */ 0x1EA0, 0x1EF9, 0x005C, -/*-------------------------------------------------------*/ -/* Offset=0x0028 Start of MappingTable */ - -/* 0000 */ 0x0000, 0x0001, 0xFFFD, 0x0003, 0x0004, 0x0015, 0x0016, 0x0017, -/* 0008 */ 0x0018, 0xFFFD, 0x001A, 0x001B, 0x001C, 0x001D, 0x00C0, 0x00C1, -/* 0010 */ 0x00C2, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C8, 0x00C9, -/* 0018 */ 0x00CA, 0xFFFD, 0x00CC, 0x00CD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0x00D2, 0x00D3, 0x00D4, 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, -/* 0028 */ 0x00DA, 0xFFFD, 0xFFFD, 0x00DD, 0xFFFD, 0xFFFD, 0x00E0, 0x00E1, -/* 0030 */ 0x00E2, 0x00E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E8, 0x00E9, -/* 0038 */ 0x00EA, 0xFFFD, 0x00EC, 0x00ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0xFFFD, 0xFFFD, 0xFFFD, 0x00F9, -/* 0048 */ 0x00FA, 0xFFFD, 0xFFFD, 0x00FD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0x00C5, 0x00E5, 0x00D0, 0x00F0, 0x00CE, 0x00EE, 0x009D, 0x00FB, -/* 0058 */ 0x00B4, 0x00BD, 0x00BF, 0x00DF, 0x0080, 0x00D5, 0x00C4, 0x00E4, -/* 0060 */ 0x0084, 0x00A4, 0x0085, 0x00A5, 0x0086, 0x00A6, 0x0006, 0x00E7, -/* 0068 */ 0x0087, 0x00A7, 0x0081, 0x00A1, 0x0082, 0x00A2, 0x0002, 0x00C6, -/* 0070 */ 0x0005, 0x00C7, 0x0083, 0x00A3, 0x0089, 0x00A9, 0x00CB, 0x00EB, -/* 0078 */ 0x0088, 0x00A8, 0x008A, 0x00AA, 0x008B, 0x00AB, 0x008C, 0x00AC, -/* 0080 */ 0x008D, 0x00AD, 0x008E, 0x00AE, 0x009B, 0x00EF, 0x0098, 0x00B8, -/* 0088 */ 0x009A, 0x00F7, 0x0099, 0x00F6, 0x008F, 0x00AF, 0x0090, 0x00B0, -/* 0090 */ 0x0091, 0x00B1, 0x0092, 0x00B2, 0x0093, 0x00B5, 0x0095, 0x00BE, -/* 0098 */ 0x0096, 0x00B6, 0x0097, 0x00B7, 0x00B3, 0x00DE, 0x0094, 0x00FE, -/* 00A0 */ 0x009E, 0x00F8, 0x009C, 0x00FC, 0x00BA, 0x00D1, 0x00BB, 0x00D7, -/* 00A8 */ 0x00BC, 0x00D8, 0x00FF, 0x00E6, 0x00B9, 0x00F1, 0x009F, 0x00CF, -/* 00B0 */ 0x001E, 0x00DC, 0x0014, 0x00D6, 0x0019, 0x00DB, -/* End of table Total Length = 0x00DE * 2 */ diff --git a/mozilla/lib/libi18n/unicode/ufrmtbl/vps.uf b/mozilla/lib/libi18n/unicode/ufrmtbl/vps.uf deleted file mode 100644 index 60cfab32e9e..00000000000 --- a/mozilla/lib/libi18n/unicode/ufrmtbl/vps.uf +++ /dev/null @@ -1,221 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0007 - srcEnd = 000F - destBegin = 0007 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 001E - srcEnd = 007F - destBegin = 001E -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0000 - srcEnd = 0001 - mappingOffset = 0000 - Mapping = - 0000 0001 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0016 - srcEnd = 001B - mappingOffset = 0002 - Mapping = - 0016 0017 0018 FFFD 001A 001B -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 00A0 - destBegin = 00A0 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00C0 - srcEnd = 0103 - mappingOffset = 0008 - Mapping = - 0080 00C1 00C2 0082 FFFD FFFD FFFD FFFD - 00D7 00C9 00CA FFFD 00B5 00B4 FFFD FFFD - FFFD FFFD 00BC 00B9 00D4 00BE FFFD FFFD - FFFD 00A8 00DA FFFD FFFD 00DD FFFD 00DF - 00E0 00E1 00E2 00E3 FFFD FFFD FFFD 00E7 - 00E8 00E9 00EA FFFD 00EC 00ED 00EE FFFD - FFFD FFFD 00F2 00F3 00F4 00F5 00F6 FFFD - FFFD 00F9 00FA FFFD 00FC 009A FFFD FFFD - FFFD FFFD 0088 00E6 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 0110 - srcEnd = 0111 - mappingOffset = 004C - Mapping = - 00F1 00C7 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 0128 - srcEnd = 0129 - mappingOffset = 004E - Mapping = - 00B8 00EF -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 0168 - srcEnd = 0169 - mappingOffset = 0050 - Mapping = - 00AC 00DB -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 01A0 - srcEnd = 01A1 - mappingOffset = 0052 - Mapping = - 00F7 00D6 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 01AF - srcEnd = 01B0 - mappingOffset = 0054 - Mapping = - 00D0 00DC -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 1EA0 - srcEnd = 1EF9 - mappingOffset = 0056 - Mapping = - 0002 00E5 0081 00E4 0083 00C3 0084 00C0 - 0085 00C4 001C 00C5 0003 00C6 008D 00A1 - 008E 00A2 008F 00A3 00F0 00A4 0004 00A5 - 0005 00CB 00DE 00C8 00FE 00EB 0090 0089 - 0093 008A 0094 008B 0095 00CD 0006 008C - 00B7 00CC 0010 00CE 0011 0086 00BD 00D5 - 0096 00D3 0097 00D2 0098 00B0 0099 0087 - 0012 00B6 009D 00A7 009E 00A9 009F 00AA - 00A6 00AB 0013 00AE 0014 00F8 00D1 00FB - 00AD 00D9 00AF 00D8 00B1 00BA 001D 00BB - 0015 00BF 00B2 00FF 0019 009C 00FD 009B - 00B3 00CF -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2018 - srcEnd = 2019 - mappingOffset = 00B0 - Mapping = - 0091 0092 -End of Item 000C - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000D, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x002F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x000A */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x1100, 0x1112, 0x1111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x0007, 0x000F, 0x0007, -/* 0001 */ 0x001E, 0x007F, 0x001E, -/* 0002 */ 0x0000, 0x0001, 0x0000, -/* 0003 */ 0x0016, 0x001B, 0x0002, -/* 0004 */ 0x00A0, 0x0000, 0x00A0, -/* 0005 */ 0x00C0, 0x0103, 0x0008, -/* 0006 */ 0x0110, 0x0111, 0x004C, -/* 0007 */ 0x0128, 0x0129, 0x004E, -/* 0008 */ 0x0168, 0x0169, 0x0050, -/* 0009 */ 0x01A0, 0x01A1, 0x0052, -/* 000A */ 0x01AF, 0x01B0, 0x0054, -/* 000B */ 0x1EA0, 0x1EF9, 0x0056, -/* 000C */ 0x2018, 0x2019, 0x00B0, -/*-------------------------------------------------------*/ -/* Offset=0x002F Start of MappingTable */ - -/* 0000 */ 0x0000, 0x0001, 0x0016, 0x0017, 0x0018, 0xFFFD, 0x001A, 0x001B, -/* 0008 */ 0x0080, 0x00C1, 0x00C2, 0x0082, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x00D7, 0x00C9, 0x00CA, 0xFFFD, 0x00B5, 0x00B4, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0x00BC, 0x00B9, 0x00D4, 0x00BE, 0xFFFD, 0xFFFD, -/* 0020 */ 0xFFFD, 0x00A8, 0x00DA, 0xFFFD, 0xFFFD, 0x00DD, 0xFFFD, 0x00DF, -/* 0028 */ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E7, -/* 0030 */ 0x00E8, 0x00E9, 0x00EA, 0xFFFD, 0x00EC, 0x00ED, 0x00EE, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0xFFFD, -/* 0040 */ 0xFFFD, 0x00F9, 0x00FA, 0xFFFD, 0x00FC, 0x009A, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0x0088, 0x00E6, 0x00F1, 0x00C7, 0x00B8, 0x00EF, -/* 0050 */ 0x00AC, 0x00DB, 0x00F7, 0x00D6, 0x00D0, 0x00DC, 0x0002, 0x00E5, -/* 0058 */ 0x0081, 0x00E4, 0x0083, 0x00C3, 0x0084, 0x00C0, 0x0085, 0x00C4, -/* 0060 */ 0x001C, 0x00C5, 0x0003, 0x00C6, 0x008D, 0x00A1, 0x008E, 0x00A2, -/* 0068 */ 0x008F, 0x00A3, 0x00F0, 0x00A4, 0x0004, 0x00A5, 0x0005, 0x00CB, -/* 0070 */ 0x00DE, 0x00C8, 0x00FE, 0x00EB, 0x0090, 0x0089, 0x0093, 0x008A, -/* 0078 */ 0x0094, 0x008B, 0x0095, 0x00CD, 0x0006, 0x008C, 0x00B7, 0x00CC, -/* 0080 */ 0x0010, 0x00CE, 0x0011, 0x0086, 0x00BD, 0x00D5, 0x0096, 0x00D3, -/* 0088 */ 0x0097, 0x00D2, 0x0098, 0x00B0, 0x0099, 0x0087, 0x0012, 0x00B6, -/* 0090 */ 0x009D, 0x00A7, 0x009E, 0x00A9, 0x009F, 0x00AA, 0x00A6, 0x00AB, -/* 0098 */ 0x0013, 0x00AE, 0x0014, 0x00F8, 0x00D1, 0x00FB, 0x00AD, 0x00D9, -/* 00A0 */ 0x00AF, 0x00D8, 0x00B1, 0x00BA, 0x001D, 0x00BB, 0x0015, 0x00BF, -/* 00A8 */ 0x00B2, 0x00FF, 0x0019, 0x009C, 0x00FD, 0x009B, 0x00B3, 0x00CF, -/* 00B0 */ 0x0091, 0x0092, -/* End of table Total Length = 0x00E1 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/uni1600.def b/mozilla/lib/libi18n/unicode/uni1600.def deleted file mode 100755 index ba5af07492c..00000000000 --- a/mozilla/lib/libi18n/unicode/uni1600.def +++ /dev/null @@ -1,33 +0,0 @@ -; -*- Mode: Fundamental; tab-width: 4; indent-tabs-mode: nil -*- -; -; The contents of this file are subject to the Netscape Public License -; Version 1.0 (the "NPL"); you may not use this file except in -; compliance with the NPL. You may obtain a copy of the NPL at -; http://www.mozilla.org/NPL/ -; -; Software distributed under the NPL is distributed on an "AS IS" basis, -; WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -; for the specific language governing rights and limitations under the -; NPL. -; -; The Initial Developer of this code under the NPL is Netscape -; Communications Corporation. Portions created by Netscape are -; Copyright (C) 1998 Netscape Communications Corporation. All Rights -; Reserved. - - -LIBRARY UNI1600.DLL -EXETYPE WINDOWS -PROTMODE - -DESCRIPTION 'Netscape 16-bit Unicode Table Loader library' - -STUB 'WINSTUB.EXE' - -CODE LOADONCALL MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE SINGLE - -HEAPSIZE 8192 - -EXPORTS - WEP diff --git a/mozilla/lib/libi18n/unicode/uniOS2.def b/mozilla/lib/libi18n/unicode/uniOS2.def deleted file mode 100644 index d70b29eda08..00000000000 --- a/mozilla/lib/libi18n/unicode/uniOS2.def +++ /dev/null @@ -1,35 +0,0 @@ -; -*- Mode: Fundamental; tab-width: 4; indent-tabs-mode: nil -*- -; -; The contents of this file are subject to the Netscape Public License -; Version 1.0 (the "NPL"); you may not use this file except in -; compliance with the NPL. You may obtain a copy of the NPL at -; http://www.mozilla.org/NPL/ -; -; Software distributed under the NPL is distributed on an "AS IS" basis, -; WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -; for the specific language governing rights and limitations under the -; NPL. -; -; The Initial Developer of this code under the NPL is Netscape -; Communications Corporation. Portions created by Netscape are -; Copyright (C) 1998 Netscape Communications Corporation. All Rights -; Reserved. - - -LIBRARY UNI3200 INITINSTANCE TERMINSTANCE -PROTMODE - -DESCRIPTION 'Netscape OS/2 UNICODE Library' - - -CODE LOADONCALL MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE NONSHARED - - -EXPORTS - UNICODE_LOADUCS2TABLE - UNICODE_MENUFONTCSID - UNICODE_MENUFONTID - UNICODE_UNLOADUCS2TABLE - UNICODE_VERIFYCSIDLIST - diff --git a/mozilla/lib/libi18n/unicode/unitable.rc b/mozilla/lib/libi18n/unicode/unitable.rc deleted file mode 100755 index 721d248368f..00000000000 --- a/mozilla/lib/libi18n/unicode/unitable.rc +++ /dev/null @@ -1,211 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ - - -/* - Purpose: Unicode table for window build -*/ - - -#ifdef XP_WIN32 -#include <winver.h> -#else -#include <ver.h> -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,0,0,30 // major, minor, release (alpha 1), build # - PRODUCTVERSION 2,0,0,30 - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK - FILEFLAGS 0 // final version - FILEOS VOS_DOS_WINDOWS16 - FILETYPE VFT_APP - FILESUBTYPE 0 // not used -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" // Lang=US English, CharSet=Windows Multilingual - BEGIN - VALUE "CompanyName", "Netscape Communications Corporation\0" - VALUE "FileDescription", "Netscape Navigator Unicode Table File\0" - VALUE "FileVersion", "3.0b6\0" - VALUE "InternalName", "NETSCAPE\0" - VALUE "LegalCopyright", "Copyright Netscape Communications. 1996, 1997\0" - VALUE "LegalTrademarks", "Netscape, Mozilla\0" -#ifdef XP_WIN32 - VALUE "OriginalFilename","UNI3200.DLL\0" -#else - VALUE "OriginalFilename","UNI1600.DLL\0" -#endif - VALUE "ProductName", "NETSCAPE\0" - VALUE "ProductVersion", "3.0b6\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - // English language (0x409) and the Windows ANSI codepage (1252) - END -END - -cp1252.uf RCDATA -BEGIN -#include "ufrmtbl\\cp1252.uf" -END -cp1252.ut RCDATA -BEGIN -#include "utotbl\\cp1252.ut" -END - - // #ifdef ALL_UNICODE_TABLE - -cp1254.uf RCDATA -BEGIN -#include "ufrmtbl\\cp1254.uf" -END -cp1254.ut RCDATA -BEGIN -#include "utotbl\\cp1254.ut" -END -macsymbo.uf RCDATA -BEGIN -#include "ufrmtbl\\macsymbo.uf" -END -macsymbo.ut RCDATA -BEGIN -#include "utotbl\\macsymbo.ut" -END -macdingb.uf RCDATA -BEGIN -#include "ufrmtbl\\macdingb.uf" -END -macdingb.ut RCDATA -BEGIN -#include "utotbl\\macdingb.ut" -END -cp1251.uf RCDATA -BEGIN -#include "ufrmtbl\\cp1251.uf" -END -cp1251.ut RCDATA -BEGIN -#include "utotbl\\cp1251.ut" -END -cp1250.uf RCDATA -BEGIN -#include "ufrmtbl\\cp1250.uf" -END -cp1250.ut RCDATA -BEGIN -#include "utotbl\\cp1250.ut" -END -cp1253.uf RCDATA -BEGIN -#include "ufrmtbl\\cp1253.uf" -END -cp1253.ut RCDATA -BEGIN -#include "utotbl\\cp1253.ut" -END -sjis.uf RCDATA -BEGIN -#include "ufrmtbl\\cp932.uf" -END -sjis.ut RCDATA -BEGIN -#include "utotbl\\cp932.ut" -END -u20ksc.uf RCDATA -BEGIN -#include "ufrmtbl\\u20ksc.uf" -END -u20ksc.ut RCDATA -BEGIN -#include "utotbl\\u20ksc.ut" -END -big5.uf RCDATA -BEGIN -#include "ufrmtbl\\big5.uf" -END -big5.ut RCDATA -BEGIN -#include "utotbl\\big5.ut" -END -gb2312.uf RCDATA -BEGIN -#include "ufrmtbl\\gb2312.uf" -END -gb2312.ut RCDATA -BEGIN -#include "utotbl\\gb2312.ut" -END - -armscii.uf RCDATA -BEGIN -#include "ufrmtbl\\armscii.uf" -END -armscii.ut RCDATA -BEGIN -#include "utotbl\\armscii.ut" -END - -viscii.uf RCDATA -BEGIN -#include "ufrmtbl\\viscii.uf" -END -viscii.ut RCDATA -BEGIN -#include "utotbl\\viscii.ut" -END - -tcvn5712.uf RCDATA -BEGIN -#include "ufrmtbl\\tcvn5712.uf" -END -tcvn5712.ut RCDATA -BEGIN -#include "utotbl\\tcvn5712.ut" -END - -vps.uf RCDATA -BEGIN -#include "ufrmtbl\\vps.uf" -END -vps.ut RCDATA -BEGIN -#include "utotbl\\vps.ut" -END - -cp874.uf RCDATA -BEGIN -#include "ufrmtbl\\cp874.uf" -END -cp874.ut RCDATA -BEGIN -#include "utotbl\\cp874.ut" -END - -t61.uf RCDATA -BEGIN -#include "ufrmtbl\\t61.uf" -END -t61.ut RCDATA -BEGIN -#include "utotbl\\t61.ut" -END - // #endif // ALL_UNICODE_TABLE diff --git a/mozilla/lib/libi18n/unicode/unitbl.c b/mozilla/lib/libi18n/unicode/unitbl.c deleted file mode 100755 index 6e866abeb54..00000000000 --- a/mozilla/lib/libi18n/unicode/unitbl.c +++ /dev/null @@ -1,200 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#include "prlog.h" -#include "prtypes.h" -#include "libi18n.h" -#include "csid.h" - -#define MAXUTABLENAME 16 -typedef struct tblrsrcinfo { - char name[MAXUTABLENAME]; - uint16 refcount; - HGLOBAL hTbl; -} tblrsrcinfo; - -typedef struct utablename { - uint16 csid; - tblrsrcinfo frominfo; - tblrsrcinfo toinfo; - -} utablename; - -PR_PUBLIC_API(void*) UNICODE_LOADUCS2TABLE(uint16 csid, int from); -PR_PUBLIC_API(void) UNICODE_UNLOADUCS2TABLE(uint16 csid, void *utblPtr, int from); - -tblrsrcinfo* unicode_FindUTableName(uint16 csid, int from); - -HINSTANCE _unicode_hInstance; - -#ifdef _WIN32 -BOOL WINAPI DllMain (HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved) -{ - switch (dwReason) - { - case DLL_PROCESS_ATTACH: - _unicode_hInstance = hDLL; - break; - - case DLL_THREAD_ATTACH: - break; - - case DLL_THREAD_DETACH: - break; - - case DLL_PROCESS_DETACH: - _unicode_hInstance = NULL; - break; - } - - return TRUE; -} - -#else /* ! _WIN32 */ - -int CALLBACK LibMain( HINSTANCE hInst, WORD wDataSeg, - WORD cbHeapSize, LPSTR lpszCmdLine ) -{ - _unicode_hInstance = hInst; - return TRUE; -} - -BOOL CALLBACK _export _loadds WEP(BOOL fSystemExit) -{ - _unicode_hInstance = NULL; - return TRUE; -} -#endif /* ! _WIN32 */ - - -utablename utablenametbl[] = -{ - /* Special Note, for Windows, we use cp1252 for CS_LATIN1 */ - {CS_ASCII, {"CP1252.UF", 0, NULL}, {"CP1252.UT", 0, NULL}}, - {CS_LATIN1, {"CP1252.UF", 0, NULL}, {"CP1252.UT", 0, NULL}}, - {CS_SJIS, {"SJIS.UF", 0, NULL}, {"SJIS.UT", 0, NULL}}, - {CS_BIG5, {"BIG5.UF", 0, NULL}, {"BIG5.UT", 0, NULL}}, - {CS_GB_8BIT, {"GB2312.UF", 0, NULL}, {"GB2312.UT", 0, NULL}}, - {CS_KSC_8BIT, {"U20KSC.UF", 0, NULL}, {"U20KSC.UT", 0, NULL}}, - {CS_CP_1251, {"CP1251.UF", 0, NULL}, {"CP1251.UT", 0, NULL}}, - {CS_ARMSCII8, {"ARMSCII.UF", 0, NULL}, {"ARMSCII.UT", 0, NULL}}, - {CS_CP_1250, {"CP1250.UF", 0, NULL}, {"CP1250.UT", 0, NULL}}, - {CS_CP_1253, {"CP1253.UF", 0, NULL}, {"CP1253.UT", 0, NULL}}, - {CS_8859_9, {"CP1254.UF", 0, NULL}, {"CP1254.UT", 0, NULL}}, - {CS_VIET_VISCII, {"VISCII.UF", 0, NULL}, {"VISCII.UT", 0, NULL}}, - {CS_VIET_VPS, {"VPS.UF", 0, NULL}, {"VPS.UT", 0, NULL}}, - {CS_VIET_TCVN, {"TCVN5712.UF", 0, NULL}, {"TCVN5712.UT", 0, NULL}}, - {CS_SYMBOL, {"MACSYMBO.UF", 0, NULL}, {"MACSYMBO.UT", 0, NULL}}, - {CS_DINGBATS, {"MACDINGB.UF", 0, NULL}, {"MACDINGB.UT", 0, NULL}}, - {CS_TIS620, {"CP874.UF", 0, NULL}, {"CP874.UT", 0, NULL}}, - {CS_T61, {"T61.UF", 0, NULL}, {"T61.UT", 0, NULL}}, - {CS_DEFAULT, {"", 0, NULL}, {"", 0, NULL}} -}; -static tblrsrcinfo* unicode_FindUTableName(uint16 csid, int from) -{ - int i; - for(i=0; utablenametbl[i].csid != CS_DEFAULT; i++) - { - if(utablenametbl[i].csid == csid) - return from ? &(utablenametbl[i].frominfo) - : &(utablenametbl[i].toinfo); - } -#ifdef _DEBUG - OutputDebugString("unicode_FindUTableName: Cannot find table information"); -#endif /* _DEBUG */ - - return NULL; -} -PR_PUBLIC_API(void *) UNICODE_LOADUCS2TABLE(uint16 csid, int from) -{ - HRSRC hrsrc; - HGLOBAL hRes; - void *table; - tblrsrcinfo* tbl = unicode_FindUTableName(csid, from); - /* Cannot find this csid */ - if(tbl == NULL) - return (NULL); - /* Find a loaded table */ - if(tbl->refcount > 0) - { - tbl->refcount++; - return ((void*)LockResource(tbl->hTbl)); - } - /* Find a unloaded table */ - hrsrc = FindResource(_unicode_hInstance, tbl->name, RT_RCDATA); - if(!hrsrc) - { - /* cannot find that RCDATA resource */ -#ifdef _DEBUG - OutputDebugString("UNICODE_LoadUCS2Table cannot find table resource"); -#endif - return (NULL); - } - hRes = LoadResource(_unicode_hInstance,hrsrc); - if(!hRes) - { - /* cannot find that RCDATA resource */ -#ifdef _DEBUG - OutputDebugString("UNICODE_LoadUCS2Table cannot load table resource"); -#endif - return (NULL); - } - table = (void*) LockResource(hRes); - if(!table) - { - /* cannot find that RCDATA resource */ -#ifdef _DEBUG - OutputDebugString("UNICODE_LoadUCS2Table cannot lock table resource"); -#endif - return (NULL); - } - tbl->refcount++; - tbl->hTbl = hRes; - return(table); -} -PR_PUBLIC_API(void) UNICODE_UNLOADUCS2TABLE(uint16 csid, void *utblPtr, int from) -{ - tblrsrcinfo* tbl = unicode_FindUTableName(csid, from); - /* Cannot find this csid */ - if(tbl == NULL) - { -#ifdef _DEBUG - OutputDebugString("unicode_UnloadUCS2Table don't know how to deal with this csid"); -#endif - return; - } - /* Find a loaded table */ - if(tbl->refcount == 0) - { -#ifdef _DEBUG - OutputDebugString("unicode_UnloadUCS2Table try to unload an unloaded table"); -#endif - tbl->hTbl = NULL; - return; - } -#ifndef _WIN32 - /* UnlockResource to decrease the internal reference count */ - UnlockResource(tbl->hTbl); -#endif - tbl->refcount--; - if(tbl->refcount <= 0) - { - FreeResource(tbl->hTbl); - tbl->hTbl = NULL; - tbl->refcount = 0; - } -} diff --git a/mozilla/lib/libi18n/unicode/utotbl/8859-1.ut b/mozilla/lib/libi18n/unicode/utotbl/8859-1.ut deleted file mode 100644 index 339d2882339..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/8859-1.ut +++ /dev/null @@ -1,72 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007E - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A0 - srcEnd = 00FF - destBegin = 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0000 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007E, 0x0000, -/* 0001 */ 0x00A0, 0x00FF, 0x00A0, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* End of table Total Length = 0x000B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/8859-2.ut b/mozilla/lib/libi18n/unicode/utotbl/8859-2.ut deleted file mode 100644 index ff46a182397..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/8859-2.ut +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00A0 0104 02D8 0141 00A4 013D 015A 00A7 - 00A8 0160 015E 0164 0179 00AD 017D 017B - 00B0 0105 02DB 0142 00B4 013E 015B 02C7 - 00B8 0161 015F 0165 017A 02DD 017E 017C - 0154 00C1 00C2 0102 00C4 0139 0106 00C7 - 010C 00C9 0118 00CB 011A 00CD 00CE 010E - 0110 0143 0147 00D3 00D4 0150 00D6 00D7 - 0158 016E 00DA 0170 00DC 00DD 0162 00DF - 0155 00E1 00E2 0103 00E4 013A 0107 00E7 - 010D 00E9 0119 00EB 011B 00ED 00EE 010F - 0111 0144 0148 00F3 00F4 0151 00F6 00F7 - 0159 016F 00FA 0171 00FC 00FD 0163 02D9 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A0, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, -/* 0008 */ 0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, -/* 0010 */ 0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, -/* 0018 */ 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, -/* 0020 */ 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, -/* 0028 */ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, -/* 0030 */ 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, -/* 0038 */ 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, -/* 0040 */ 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, -/* 0048 */ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, -/* 0050 */ 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, -/* 0058 */ 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9, -/* End of table Total Length = 0x006B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/8859-3.ut b/mozilla/lib/libi18n/unicode/utotbl/8859-3.ut deleted file mode 100644 index 6beac9f484e..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/8859-3.ut +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00C7 - srcEnd = 00CF - destBegin = 00C7 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00E7 - srcEnd = 00EF - destBegin = 00E7 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00A0 0126 02D8 00A3 00A4 FFFD 0124 00A7 - 00A8 0130 015E 011E 0134 00AD FFFD 017B - 00B0 0127 00B2 00B3 00B4 00B5 0125 00B7 - 00B8 0131 015F 011F 0135 00BD FFFD 017C - 00C0 00C1 00C2 FFFD 00C4 010A 0108 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00D1 00D2 00D3 00D4 0120 00D6 00D7 - 011C 00D9 00DA 00DB 00DC 016C 015C 00DF - 00E0 00E1 00E2 FFFD 00E4 010B 0109 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 00F1 00F2 00F3 00F4 0121 00F6 00F7 - 011D 00F9 00FA 00FB 00FC 016D 015D 02D9 -End of Item 0003 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00C7, 0x00CF, 0x00C7, -/* 0002 */ 0x00E7, 0x00EF, 0x00E7, -/* 0003 */ 0x00A0, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0012 Start of MappingTable */ - -/* 0000 */ 0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4, 0xFFFD, 0x0124, 0x00A7, -/* 0008 */ 0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD, 0xFFFD, 0x017B, -/* 0010 */ 0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7, -/* 0018 */ 0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD, 0xFFFD, 0x017C, -/* 0020 */ 0x00C0, 0x00C1, 0x00C2, 0xFFFD, 0x00C4, 0x010A, 0x0108, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7, -/* 0038 */ 0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF, -/* 0040 */ 0x00E0, 0x00E1, 0x00E2, 0xFFFD, 0x00E4, 0x010B, 0x0109, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7, -/* 0058 */ 0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9, -/* End of table Total Length = 0x0072 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/8859-4.ut b/mozilla/lib/libi18n/unicode/utotbl/8859-4.ut deleted file mode 100644 index 48d8258cfbc..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/8859-4.ut +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00C1 - srcEnd = 00C6 - destBegin = 00C1 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00E1 - srcEnd = 00E6 - destBegin = 00E1 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00A0 0104 0138 0156 00A4 0128 013B 00A7 - 00A8 0160 0112 0122 0166 00AD 017D 00AF - 00B0 0105 02DB 0157 00B4 0129 013C 02C7 - 00B8 0161 0113 0123 0167 014A 017E 014B - 0100 FFFD FFFD FFFD FFFD FFFD FFFD 012E - 010C 00C9 0118 00CB 0116 00CD 00CE 012A - 0110 0145 014C 0136 00D4 00D5 00D6 00D7 - 00D8 0172 00DA 00DB 00DC 0168 016A 00DF - 0101 FFFD FFFD FFFD FFFD FFFD FFFD 012F - 010D 00E9 0119 00EB 0117 00ED 00EE 012B - 0111 0146 014D 0137 00F4 00F5 00F6 00F7 - 00F8 0173 00FA 00FB 00FC 0169 016B 02D9 -End of Item 0003 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00C1, 0x00C6, 0x00C1, -/* 0002 */ 0x00E1, 0x00E6, 0x00E1, -/* 0003 */ 0x00A0, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0012 Start of MappingTable */ - -/* 0000 */ 0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7, -/* 0008 */ 0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF, -/* 0010 */ 0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7, -/* 0018 */ 0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B, -/* 0020 */ 0x0100, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x012E, -/* 0028 */ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A, -/* 0030 */ 0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7, -/* 0038 */ 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF, -/* 0040 */ 0x0101, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x012F, -/* 0048 */ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, -/* 0050 */ 0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7, -/* 0058 */ 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9, -/* End of table Total Length = 0x0072 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/8859-5.ut b/mozilla/lib/libi18n/unicode/utotbl/8859-5.ut deleted file mode 100644 index df1a64ab201..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/8859-5.ut +++ /dev/null @@ -1,120 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A1 - srcEnd = 00AC - destBegin = 0401 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00AE - srcEnd = 00EF - destBegin = 040E -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00F1 - srcEnd = 00FC - destBegin = 0451 -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 00A0 - destBegin = 00A0 -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 00AD - destBegin = 00AD -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 00F0 - destBegin = 2116 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 00FD - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00A7 045E 045F -End of Item 0007 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0003 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1222, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A1, 0x00AC, 0x0401, -/* 0002 */ 0x00AE, 0x00EF, 0x040E, -/* 0003 */ 0x00F1, 0x00FC, 0x0451, -/* 0004 */ 0x00A0, 0x0000, 0x00A0, -/* 0005 */ 0x00AD, 0x0000, 0x00AD, -/* 0006 */ 0x00F0, 0x0000, 0x2116, -/* 0007 */ 0x00FD, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x001F Start of MappingTable */ - -/* 0000 */ 0x00A7, 0x045E, 0x045F, -/* End of table Total Length = 0x0022 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/8859-6.ut b/mozilla/lib/libi18n/unicode/utotbl/8859-6.ut deleted file mode 100644 index 08ac390d4df..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/8859-6.ut +++ /dev/null @@ -1,120 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 002F - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0030 - srcEnd = 0039 - destBegin = 0660 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 003A - srcEnd = 007E - destBegin = 003A -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00C1 - srcEnd = 00DA - destBegin = 0621 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00E0 - srcEnd = 00F2 - destBegin = 0640 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00A0 - srcEnd = 00AD - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD FFFD 00A4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 060C 00AD -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 00BB - srcEnd = 00BF - mappingOffset = 000E - Mapping = - 061B FFFD FFFD FFFD 061F -End of Item 0006 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0005 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0110, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x002F, 0x0020, -/* 0001 */ 0x0030, 0x0039, 0x0660, -/* 0002 */ 0x003A, 0x007E, 0x003A, -/* 0003 */ 0x00C1, 0x00DA, 0x0621, -/* 0004 */ 0x00E0, 0x00F2, 0x0640, -/* 0005 */ 0x00A0, 0x00AD, 0x0000, -/* 0006 */ 0x00BB, 0x00BF, 0x000E, -/*-------------------------------------------------------*/ -/* Offset=0x001B Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x060C, 0x00AD, 0x061B, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0x061F, -/* End of table Total Length = 0x002E * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/8859-7.ut b/mozilla/lib/libi18n/unicode/utotbl/8859-7.ut deleted file mode 100644 index 10333c1e884..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/8859-7.ut +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00BE - srcEnd = 00D1 - destBegin = 038E -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00D3 - srcEnd = 00FE - destBegin = 03A3 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00BD - mappingOffset = 0000 - Mapping = - 00A0 02BD 02BC 00A3 FFFD FFFD 00A6 00A7 - 00A8 00A9 FFFD 00AB 00AC 00AD FFFD 2015 - 00B0 00B1 00B2 00B3 0384 0385 0386 00B7 - 0388 0389 038A 00BB 038C 00BD -End of Item 0003 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00BE, 0x00D1, 0x038E, -/* 0002 */ 0x00D3, 0x00FE, 0x03A3, -/* 0003 */ 0x00A0, 0x00BD, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0012 Start of MappingTable */ - -/* 0000 */ 0x00A0, 0x02BD, 0x02BC, 0x00A3, 0xFFFD, 0xFFFD, 0x00A6, 0x00A7, -/* 0008 */ 0x00A8, 0x00A9, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0xFFFD, 0x2015, -/* 0010 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386, 0x00B7, -/* 0018 */ 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, -/* End of table Total Length = 0x0030 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/8859-8.ut b/mozilla/lib/libi18n/unicode/utotbl/8859-8.ut deleted file mode 100644 index 264a9b5bd89..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/8859-8.ut +++ /dev/null @@ -1,112 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A2 - srcEnd = 00A9 - destBegin = 00A2 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00B0 - srcEnd = 00B9 - destBegin = 00B0 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00E0 - srcEnd = 00FA - destBegin = 05D0 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00A0 - srcEnd = 00BE - mappingOffset = 0000 - Mapping = - 00A0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00D7 00AB 00AC 00AD 00AE 203E - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00F7 00BB 00BC 00BD 00BE -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 00DF - destBegin = 2017 -End of Item 0005 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0018, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0021, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A2, 0x00A9, 0x00A2, -/* 0002 */ 0x00B0, 0x00B9, 0x00B0, -/* 0003 */ 0x00E0, 0x00FA, 0x05D0, -/* 0004 */ 0x00A0, 0x00BE, 0x0000, -/* 0005 */ 0x00DF, 0x0000, 0x2017, -/*-------------------------------------------------------*/ -/* Offset=0x0018 Start of MappingTable */ - -/* 0000 */ 0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x203E, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, -/* End of table Total Length = 0x0037 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/8859-9.ut b/mozilla/lib/libi18n/unicode/utotbl/8859-9.ut deleted file mode 100644 index 22815a18e8b..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/8859-9.ut +++ /dev/null @@ -1,131 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A0 - srcEnd = 00CF - destBegin = 00A0 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00D1 - srcEnd = 00DC - destBegin = 00D1 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00DF - srcEnd = 00EF - destBegin = 00DF -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00F1 - srcEnd = 00FC - destBegin = 00F1 -End of Item 0004 - -Begin of Item 0005 - Format 2 - srcBegin = 00D0 - destBegin = 011E -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 00DD - srcEnd = 00DE - mappingOffset = 0000 - Mapping = - 0130 015E -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 00F0 - destBegin = 011F -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 00FD - srcEnd = 00FF - mappingOffset = 0002 - Mapping = - 0131 015F 00FF -End of Item 0008 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0005 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x2120, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A0, 0x00CF, 0x00A0, -/* 0002 */ 0x00D1, 0x00DC, 0x00D1, -/* 0003 */ 0x00DF, 0x00EF, 0x00DF, -/* 0004 */ 0x00F1, 0x00FC, 0x00F1, -/* 0005 */ 0x00D0, 0x0000, 0x011E, -/* 0006 */ 0x00DD, 0x00DE, 0x0000, -/* 0007 */ 0x00F0, 0x0000, 0x011F, -/* 0008 */ 0x00FD, 0x00FF, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0022 Start of MappingTable */ - -/* 0000 */ 0x0130, 0x015E, 0x0131, 0x015F, 0x00FF, -/* End of table Total Length = 0x0027 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/Makefile b/mozilla/lib/libi18n/unicode/utotbl/Makefile deleted file mode 100644 index 86a027cccd6..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../../../.. - -MODULE = i18n - -EXPORTS = $(wildcard *.ut) -DIST_HEADERS = $(EXPORTS) - -include $(DEPTH)/config/rules.mk - diff --git a/mozilla/lib/libi18n/unicode/utotbl/Makefile.in b/mozilla/lib/libi18n/unicode/utotbl/Makefile.in deleted file mode 100644 index cd614c5f790..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/Makefile.in +++ /dev/null @@ -1,37 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../../../.. -topsrcdir = @top_srcdir@ -VPATH = @srcdir@ -srcdir = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = i18n - -EXPORTS = $(wildcard $(srcdir)/*.ut) -DIST_HEADERS = $(EXPORTS) - -include $(topsrcdir)/config/rules.mk - diff --git a/mozilla/lib/libi18n/unicode/utotbl/armscii.ut b/mozilla/lib/libi18n/unicode/utotbl/armscii.ut deleted file mode 100644 index 6da4fd47110..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/armscii.ut +++ /dev/null @@ -1,106 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - * - */ - -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0082 - srcEnd = 00FE - mappingOffset = 0000 - Mapping = - 201A 0192 201E 2026 2020 2021 02C6 2030 - 0160 2039 0152 FFFD FFFD FFFD FFFD 2018 - 2019 201C 201D 2022 2013 2014 02DC 2122 - 0161 203A 0153 FFFD FFFD 0178 00A0 FFFD - 00A7 0589 0029 0028 00BB 00AB 2014 002E - 055D 0587 2011 2010 2026 055C 055B 055E - 0531 0561 0532 0562 0533 0563 0534 0564 - 0535 0565 0536 0566 0537 0567 0538 0568 - 0539 0569 053A 056A 053B 056B 053C 056C - 053D 056D 053E 056E 053F 056F 0540 0570 - 0541 0571 0542 0572 0543 0573 0544 0574 - 0545 0575 0546 0576 0547 0577 0548 0578 - 0549 0579 054A 057A 054B 057B 054C 057C - 054D 057D 054E 057E 054F 057F 0550 0580 - 0551 0581 0552 0582 0553 0583 0554 0584 - 0555 0585 0556 0586 055A -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0082, 0x00FE, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, -/* 0008 */ 0x0160, 0x2039, 0x0152, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2018, -/* 0010 */ 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, -/* 0018 */ 0x0161, 0x203A, 0x0153, 0xFFFD, 0xFFFD, 0x0178, 0x00A0, 0xFFFD, -/* 0020 */ 0x00A7, 0x0589, 0x0029, 0x0028, 0x00BB, 0x00AB, 0x2014, 0x002E, -/* 0028 */ 0x055D, 0x0587, 0x2011, 0x2010, 0x2026, 0x055C, 0x055B, 0x055E, -/* 0030 */ 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563, 0x0534, 0x0564, -/* 0038 */ 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567, 0x0538, 0x0568, -/* 0040 */ 0x0539, 0x0569, 0x053A, 0x056A, 0x053B, 0x056B, 0x053C, 0x056C, -/* 0048 */ 0x053D, 0x056D, 0x053E, 0x056E, 0x053F, 0x056F, 0x0540, 0x0570, -/* 0050 */ 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573, 0x0544, 0x0574, -/* 0058 */ 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577, 0x0548, 0x0578, -/* 0060 */ 0x0549, 0x0579, 0x054A, 0x057A, 0x054B, 0x057B, 0x054C, 0x057C, -/* 0068 */ 0x054D, 0x057D, 0x054E, 0x057E, 0x054F, 0x057F, 0x0550, 0x0580, -/* 0070 */ 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583, 0x0554, 0x0584, -/* 0078 */ 0x0555, 0x0585, 0x0556, 0x0586, 0x055A, -/* End of table Total Length = 0x0088 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/big5.ut b/mozilla/lib/libi18n/unicode/utotbl/big5.ut deleted file mode 100644 index d0a128b3877..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/big5.ut +++ /dev/null @@ -1,5179 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = A262 - srcEnd = A269 - destBegin = 2581 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = A2AF - srcEnd = A2B8 - destBegin = FF10 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = A2B9 - srcEnd = A2C2 - destBegin = 2160 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = A2C3 - srcEnd = A2CB - destBegin = 3021 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = A2CF - srcEnd = A2E8 - destBegin = FF21 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = A2E9 - srcEnd = A2FE - destBegin = FF41 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = A344 - srcEnd = A354 - destBegin = 0391 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = A355 - srcEnd = A35B - destBegin = 03A3 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = A35C - srcEnd = A36C - destBegin = 03B1 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = A36D - srcEnd = A373 - destBegin = 03C3 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = A374 - srcEnd = A37E - destBegin = 3105 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = A3A1 - srcEnd = A3BA - destBegin = 3110 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = C6A5 - srcEnd = C6F7 - destBegin = 3041 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = C6F8 - srcEnd = C6FE - destBegin = 30A1 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = C740 - srcEnd = C77E - destBegin = 30A8 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = C7A1 - srcEnd = C7B0 - destBegin = 30E7 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = C7B4 - srcEnd = C7BA - destBegin = 0416 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = C7BB - srcEnd = C7CD - destBegin = 0423 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = C7CF - srcEnd = C7E8 - destBegin = 0436 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = C7E9 - srcEnd = C7F2 - destBegin = 2460 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = C7F3 - srcEnd = C7FC - destBegin = 2474 -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = A140 - srcEnd = A17E - mappingOffset = 0000 - Mapping = - 3000 FF0C 3001 3002 FF0E 2022 FF1B FF1A - FF1F FF01 FE30 2026 2025 FE50 FF64 FE52 - 00B7 FE54 FE55 FE56 FE57 FF5C 2013 FE31 - 2014 FE33 FFFD FE34 FE4F FF08 FF09 FE35 - FE36 FF5B FF5D FE37 FE38 3014 3015 FE39 - FE3A 3010 3011 FE3B FE3C 300A 300B FE3D - FE3E 3008 3009 FE3F FE40 300C 300D FE41 - FE42 300E 300F FE43 FE44 FE59 FE5A -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = A1A1 - srcEnd = A1FD - mappingOffset = 003F - Mapping = - FE5B FE5C FE5D FE5E 2018 2019 201C 201D - 301D 301E 2035 2032 FF03 FF06 FF0A 203B - 00A7 3003 25CB 25CF 25B3 25B2 25CE 2606 - 2605 25C7 25C6 25A1 25A0 25BD 25BC 32A3 - 2105 203E FFFD FF3F FFFD FE49 FE4A FE4D - FE4E FE4B FE4C FE5F FE60 FE61 FF0B FF0D - 00D7 00F7 00B1 221A FF1C FF1E FF1D 2266 - 2267 2260 221E 2252 2261 FE62 FE63 FE64 - FE65 FE66 223C 2229 222A 22A5 2220 221F - 22BF 33D2 33D1 222B 222E 2235 2234 2640 - 2642 2641 2609 2191 2193 2190 2192 2196 - 2197 2199 2198 2225 2223 -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = A241 - srcEnd = A27E - mappingOffset = 009C - Mapping = - FF0F FF3C FF04 00A5 3012 00A2 00A3 FF05 - FF20 2103 2109 FE69 FE6A FE6B 33D5 339C - 339D 339E 33CE 33A1 338E 338F 33C4 00B0 - 5159 515B 515E 515D 5161 5163 55E7 74E9 - 7CCE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 258F 258E 258D 258C 258B 258A 2589 - 253C 2534 252C 2524 251C 2594 2500 2502 - 2595 250C 2510 2514 2518 256D -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = A2A1 - srcEnd = A2AE - mappingOffset = 00DA - Mapping = - 256E 2570 256F 2550 255E 256A 2561 25E2 - 25E3 25E5 25E4 2571 2572 2573 -End of Item 0018 - -Begin of Item 0019 - Format 2 - srcBegin = A2CD - destBegin = 5344 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = A340 - srcEnd = A343 - mappingOffset = 00E8 - Mapping = - FF57 FF58 FF59 FF5A -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = A3BB - srcEnd = A3BF - mappingOffset = 00EC - Mapping = - 02D9 02C9 02CA 02C7 02CB -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = A440 - srcEnd = A47E - mappingOffset = 00F1 - Mapping = - 4E00 4E59 4E01 4E03 4E43 4E5D 4E86 4E8C - 4EBA 513F 5165 516B 51E0 5200 5201 529B - 5315 5341 535C 53C8 4E09 4E0B 4E08 4E0A - 4E2B 4E38 51E1 4E45 4E48 4E5F 4E5E 4E8E - 4EA1 5140 5203 52FA 5343 53C9 53E3 571F - 58EB 5915 5927 5973 5B50 5B51 5B53 5BF8 - 5C0F 5C22 5C38 5C71 5DDD 5DE5 5DF1 5DF2 - 5DF3 5DFE 5E72 5EFE 5F0B 5F13 624D -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = A4A1 - srcEnd = A4FE - mappingOffset = 0130 - Mapping = - 4E11 4E10 4E0D 4E2D 4E30 4E39 4E4B 5C39 - 4E88 4E91 4E95 4E92 4E94 4EA2 4EC1 4EC0 - 4EC3 4EC6 4EC7 4ECD 4ECA 4ECB 4EC4 5143 - 5141 5167 516D 516E 516C 5197 51F6 5206 - 5207 5208 52FB 52FE 52FF 5316 5339 5348 - 5347 5345 535E 5384 53CB 53CA 53CD 58EC - 5929 592B 592A 592D 5B54 5C11 5C24 5C3A - 5C6F 5DF4 5E7B 5EFF 5F14 5F15 5FC3 6208 - 6236 624B 624E 652F 6587 6597 65A4 65B9 - 65E5 66F0 6708 6728 6B20 6B62 6B79 6BCB - 6BD4 6BDB 6C0F 6C34 706B 722A 7236 723B - 7247 7259 725B 72AC 738B 4E19 -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = A540 - srcEnd = A57E - mappingOffset = 018E - Mapping = - 4E16 4E15 4E14 4E18 4E3B 4E4D 4E4F 4E4E - 4EE5 4ED8 4ED4 4ED5 4ED6 4ED7 4EE3 4EE4 - 4ED9 4EDE 5145 5144 5189 518A 51AC 51F9 - 51FA 51F8 520A 52A0 529F 5305 5306 5317 - 531D 4EDF 534A 5349 5361 5360 536F 536E - 53BB 53EF 53E4 53F3 53EC 53EE 53E9 53E8 - 53FC 53F8 53F5 53EB 53E6 53EA 53F2 53F1 - 53F0 53E5 53ED 53FB 56DB 56DA 5916 -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = A5A1 - srcEnd = A5FE - mappingOffset = 01CD - Mapping = - 592E 5931 5974 5976 5B55 5B83 5C3C 5DE8 - 5DE7 5DE6 5E02 5E03 5E73 5E7C 5F01 5F18 - 5F17 5FC5 620A 6253 6254 6252 6251 65A5 - 65E6 672E 672C 672A 672B 672D 6B63 6BCD - 6C11 6C10 6C38 6C41 6C40 6C3E 72AF 7384 - 7389 74DC 74E6 7518 751F 7528 7529 7530 - 7531 7532 7533 758B 767D 76AE 76BF 76EE - 77DB 77E2 77F3 793A 79BE 7A74 7ACB 4E1E - 4E1F 4E52 4E53 4E69 4E99 4EA4 4EA6 4EA5 - 4EFF 4F09 4F19 4F0A 4F15 4F0D 4F10 4F11 - 4F0F 4EF2 4EF6 4EFB 4EF0 4EF3 4EFD 4F01 - 4F0B 5149 5147 5146 5148 5168 -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = A640 - srcEnd = A67E - mappingOffset = 022B - Mapping = - 5171 518D 51B0 5217 5211 5212 520E 5216 - 52A3 5308 5321 5320 5370 5371 5409 540F - 540C 540A 5410 5401 540B 5404 5411 540D - 5408 5403 540E 5406 5412 56E0 56DE 56DD - 5733 5730 5728 572D 572C 572F 5729 5919 - 591A 5937 5938 5984 5978 5983 597D 5979 - 5982 5981 5B57 5B58 5B87 5B88 5B85 5B89 - 5BFA 5C16 5C79 5DDE 5E06 5E76 5E74 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = A6A1 - srcEnd = A6FE - mappingOffset = 026A - Mapping = - 5F0F 5F1B 5FD9 5FD6 620E 620C 620D 6210 - 6263 625B 6258 6536 65E9 65E8 65EC 65ED - 66F2 66F3 6709 673D 6734 6731 6735 6B21 - 6B64 6B7B 6C16 6C5D 6C57 6C59 6C5F 6C60 - 6C50 6C55 6C61 6C5B 6C4D 6C4E 7070 725F - 725D 767E 7AF9 7C73 7CF8 7F36 7F8A 7FBD - 8001 8003 800C 8012 8033 807F 8089 808B - 808C 81E3 81EA 81F3 81FC 820C 821B 821F - 826E 8272 827E 866B 8840 884C 8863 897F - 9621 4E32 4EA8 4F4D 4F4F 4F47 4F57 4F5E - 4F34 4F5B 4F55 4F30 4F50 4F51 4F3D 4F3A - 4F38 4F43 4F54 4F3C 4F46 4F63 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = A740 - srcEnd = A77E - mappingOffset = 02C8 - Mapping = - 4F5C 4F60 4F2F 4F4E 4F36 4F59 4F5D 4F48 - 4F5A 514C 514B 514D 5175 51B6 51B7 5225 - 5224 5229 522A 5228 52AB 52A9 52AA 52AC - 5323 5373 5375 541D 542D 541E 543E 5426 - 544E 5427 5446 5443 5433 5448 5442 541B - 5429 544A 5439 543B 5438 542E 5435 5436 - 5420 543C 5440 5431 542B 541F 542C 56EA - 56F0 56E4 56EB 574A 5751 5740 574D -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = A7A1 - srcEnd = A7FE - mappingOffset = 0307 - Mapping = - 5747 574E 573E 5750 574F 573B 58EF 593E - 599D 5992 59A8 599E 59A3 5999 5996 598D - 59A4 5993 598A 59A5 5B5D 5B5C 5B5A 5B5B - 5B8C 5B8B 5B8F 5C2C 5C40 5C41 5C3F 5C3E - 5C90 5C91 5C94 5C8C 5DEB 5E0C 5E8F 5E87 - 5E8A 5EF7 5F04 5F1F 5F64 5F62 5F77 5F79 - 5FD8 5FCC 5FD7 5FCD 5FF1 5FEB 5FF8 5FEA - 6212 6211 6284 6297 6296 6280 6276 6289 - 626D 628A 627C 627E 6279 6273 6292 626F - 6298 626E 6295 6293 6291 6286 6539 653B - 6538 65F1 66F4 675F 674E 674F 6750 6751 - 675C 6756 675E 6749 6746 6760 -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = A840 - srcEnd = A87E - mappingOffset = 0365 - Mapping = - 6753 6757 6B65 6BCF 6C42 6C5E 6C99 6C81 - 6C88 6C89 6C85 6C9B 6C6A 6C7A 6C90 6C70 - 6C8C 6C68 6C96 6C92 6C7D 6C83 6C72 6C7E - 6C74 6C86 6C76 6C8D 6C94 6C98 6C82 7076 - 707C 707D 7078 7262 7261 7260 72C4 72C2 - 7396 752C 752B 7537 7538 7682 76EF 77E3 - 79C1 79C0 79BF 7A76 7CFB 7F55 8096 8093 - 809D 8098 809B 809A 80B2 826F 8292 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = A8A1 - srcEnd = A8FE - mappingOffset = 03A4 - Mapping = - 828B 828D 898B 89D2 8A00 8C37 8C46 8C55 - 8C9D 8D64 8D70 8DB3 8EAB 8ECA 8F9B 8FB0 - 8FC2 8FC6 8FC5 8FC4 5DE1 9091 90A2 90AA - 90A6 90A3 9149 91C6 91CC 9632 962E 9631 - 962A 962C 4E26 4E56 4E73 4E8B 4E9B 4E9E - 4EAB 4EAC 4F6F 4F9D 4F8D 4F73 4F7F 4F6C - 4F9B 4F8B 4F86 4F83 4F70 4F75 4F88 4F69 - 4F7B 4F96 4F7E 4F8F 4F91 4F7A 5154 5152 - 5155 5169 5177 5176 5178 51BD 51FD 523B - 5238 5237 523A 5230 522E 5236 5241 52BE - 52BB 5352 5354 5353 5351 5366 5377 5378 - 5379 53D6 53D4 53D7 5473 5475 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = A940 - srcEnd = A97E - mappingOffset = 0402 - Mapping = - 5496 5478 5495 5480 547B 5477 5484 5492 - 5486 547C 5490 5471 5476 548C 549A 5462 - 5468 548B 547D 548E 56FA 5783 5777 576A - 5769 5761 5766 5764 577C 591C 5949 5947 - 5948 5944 5954 59BE 59BB 59D4 59B9 59AE - 59D1 59C6 59D0 59CD 59CB 59D3 59CA 59AF - 59B3 59D2 59C5 5B5F 5B64 5B63 5B97 5B9A - 5B98 5B9C 5B99 5B9B 5C1A 5C48 5C45 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = A9A1 - srcEnd = A9FE - mappingOffset = 0441 - Mapping = - 5C46 5CB7 5CA1 5CB8 5CA9 5CAB 5CB1 5CB3 - 5E18 5E1A 5E16 5E15 5E1B 5E11 5E78 5E9A - 5E97 5E9C 5E95 5E96 5EF6 5F26 5F27 5F29 - 5F80 5F81 5F7F 5F7C 5FDD 5FE0 5FFD 5FF5 - 5FFF 600F 6014 602F 6035 6016 602A 6015 - 6021 6027 6029 602B 601B 6216 6215 623F - 623E 6240 627F 62C9 62CC 62C4 62BF 62C2 - 62B9 62D2 62DB 62AB 62D3 62D4 62CB 62C8 - 62A8 62BD 62BC 62D0 62D9 62C7 62CD 62B5 - 62DA 62B1 62D8 62D6 62D7 62C6 62AC 62CE - 653E 65A7 65BC 65FA 6614 6613 660C 6606 - 6602 660E 6600 660F 6615 660A -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = AA40 - srcEnd = AA7E - mappingOffset = 049F - Mapping = - 6607 670D 670B 676D 678B 6795 6771 679C - 6773 6777 6787 679D 6797 676F 6770 677F - 6789 677E 6790 6775 679A 6793 677C 676A - 6772 6B23 6B66 6B67 6B7F 6C13 6C1B 6CE3 - 6CE8 6CF3 6CB1 6CCC 6CE5 6CB3 6CBD 6CBE - 6CBC 6CE2 6CAB 6CD5 6CD3 6CB8 6CC4 6CB9 - 6CC1 6CAE 6CD7 6CC5 6CF1 6CBF 6CBB 6CE1 - 6CDB 6CCA 6CAC 6CEF 6CDC 6CD6 6CE0 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = AAA1 - srcEnd = AAFE - mappingOffset = 04DE - Mapping = - 7095 708E 7092 708A 7099 722C 722D 7238 - 7248 7267 7269 72C0 72CE 72D9 72D7 72D0 - 73A9 73A8 739F 73AB 73A5 753D 759D 7599 - 759A 7684 76C2 76F2 76F4 77E5 77FD 793E - 7940 7941 79C9 79C8 7A7A 7A79 7AFA 7CFE - 7F54 7F8C 7F8B 8005 80BA 80A5 80A2 80B1 - 80A1 80AB 80A9 80B4 80AA 80AF 81E5 81FE - 820D 82B3 829D 8299 82AD 82BD 829F 82B9 - 82B1 82AC 82A5 82AF 82B8 82A3 82B0 82BE - 82B7 864E 8671 521D 8868 8ECB 8FCE 8FD4 - 8FD1 90B5 90B8 90B1 90B6 91C7 91D1 9577 - 9580 961C 9640 963F 963B 9644 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = AB40 - srcEnd = AB7E - mappingOffset = 053C - Mapping = - 9642 96B9 96E8 9752 975E 4E9F 4EAD 4EAE - 4FE1 4FB5 4FAF 4FBF 4FE0 4FD1 4FCF 4FDD - 4FC3 4FB6 4FD8 4FDF 4FCA 4FD7 4FAE 4FD0 - 4FC4 4FC2 4FDA 4FCE 4FDE 4FB7 5157 5192 - 5191 51A0 524E 5243 524A 524D 524C 524B - 5247 52C7 52C9 52C3 52C1 530D 5357 537B - 539A 53DB 54AC 54C0 54A8 54CE 54C9 54B8 - 54A6 54B3 54C7 54C2 54BD 54AA 54C1 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = ABA1 - srcEnd = ABFE - mappingOffset = 057B - Mapping = - 54C4 54C8 54AF 54AB 54B1 54BB 54A9 54A7 - 54BF 56FF 5782 578B 57A0 57A3 57A2 57CE - 57AE 5793 5955 5951 594F 594E 5950 59DC - 59D8 59FF 59E3 59E8 5A03 59E5 59EA 59DA - 59E6 5A01 59FB 5B69 5BA3 5BA6 5BA4 5BA2 - 5BA5 5C01 5C4E 5C4F 5C4D 5C4B 5CD9 5CD2 - 5DF7 5E1D 5E25 5E1F 5E7D 5EA0 5EA6 5EFA - 5F08 5F2D 5F65 5F88 5F85 5F8A 5F8B 5F87 - 5F8C 5F89 6012 601D 6020 6025 600E 6028 - 604D 6070 6068 6062 6046 6043 606C 606B - 606A 6064 6241 62DC 6316 6309 62FC 62ED - 6301 62EE 62FD 6307 62F1 62F7 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = AC40 - srcEnd = AC7E - mappingOffset = 05D9 - Mapping = - 62EF 62EC 62FE 62F4 6311 6302 653F 6545 - 65AB 65BD 65E2 6625 662D 6620 6627 662F - 661F 6628 6631 6624 66F7 67FF 67D3 67F1 - 67D4 67D0 67EC 67B6 67AF 67F5 67E9 67EF - 67C4 67D1 67B4 67DA 67E5 67B8 67CF 67DE - 67F3 67B0 67D9 67E2 67DD 67D2 6B6A 6B83 - 6B86 6BB5 6BD2 6BD7 6C1F 6CC9 6D0B 6D32 - 6D2A 6D41 6D25 6D0C 6D31 6D1E 6D17 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = ACA1 - srcEnd = ACFE - mappingOffset = 0618 - Mapping = - 6D3B 6D3D 6D3E 6D36 6D1B 6CF5 6D39 6D27 - 6D38 6D29 6D2E 6D35 6D0E 6D2B 70AB 70BA - 70B3 70AC 70AF 70AD 70B8 70AE 70A4 7230 - 7272 726F 7274 72E9 72E0 72E1 73B7 73CA - 73BB 73B2 73CD 73C0 73B3 751A 752D 754F - 754C 754E 754B 75AB 75A4 75A5 75A2 75A3 - 7678 7686 7687 7688 76C8 76C6 76C3 76C5 - 7701 76F9 76F8 7709 770B 76FE 76FC 7707 - 77DC 7802 7814 780C 780D 7946 7949 7948 - 7947 79B9 79BA 79D1 79D2 79CB 7A7F 7A81 - 7AFF 7AFD 7C7D 7D02 7D05 7D00 7D09 7D07 - 7D04 7D06 7F38 7F8E 7FBF 8004 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = AD40 - srcEnd = AD7E - mappingOffset = 0676 - Mapping = - 8010 800D 8011 8036 80D6 80E5 80DA 80C3 - 80C4 80CC 80E1 80DB 80CE 80DE 80E4 80DD - 81F4 8222 82E7 8303 8305 82E3 82DB 82E6 - 8304 82E5 8302 8309 82D2 82D7 82F1 8301 - 82DC 82D4 82D1 82DE 82D3 82DF 82EF 8306 - 8650 8679 867B 867A 884D 886B 8981 89D4 - 8A08 8A02 8A03 8C9E 8CA0 8D74 8D73 8DB4 - 8ECD 8ECC 8FF0 8FE6 8FE2 8FEA 8FE5 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = ADA1 - srcEnd = ADFE - mappingOffset = 06B5 - Mapping = - 8FED 8FEB 8FE4 8FE8 90CA 90CE 90C1 90C3 - 914B 914A 91CD 9582 9650 964B 964C 964D - 9762 9769 97CB 97ED 97F3 9801 98A8 98DB - 98DF 9996 9999 4E58 4EB3 500C 500D 5023 - 4FEF 5026 5025 4FF8 5029 5016 5006 503C - 501F 501A 5012 5011 4FFA 5000 5014 5028 - 4FF1 5021 500B 5019 5018 4FF3 4FEE 502D - 502A 4FFE 502B 5009 517C 51A4 51A5 51A2 - 51CD 51CC 51C6 51CB 5256 525C 5254 525B - 525D 532A 537F 539F 539D 53DF 54E8 5510 - 5501 5537 54FC 54E5 54F2 5506 54FA 5514 - 54E9 54ED 54E1 5509 54EE 54EA -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = AE40 - srcEnd = AE7E - mappingOffset = 0713 - Mapping = - 54E6 5527 5507 54FD 550F 5703 5704 57C2 - 57D4 57CB 57C3 5809 590F 5957 5958 595A - 5A11 5A18 5A1C 5A1F 5A1B 5A13 59EC 5A20 - 5A23 5A29 5A25 5A0C 5A09 5B6B 5C58 5BB0 - 5BB3 5BB6 5BB4 5BAE 5BB5 5BB9 5BB8 5C04 - 5C51 5C55 5C50 5CED 5CFD 5CFB 5CEA 5CE8 - 5CF0 5CF6 5D01 5CF4 5DEE 5E2D 5E2B 5EAB - 5EAD 5EA7 5F31 5F92 5F91 5F90 6059 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = AEA1 - srcEnd = AEFE - mappingOffset = 0752 - Mapping = - 6063 6065 6050 6055 606D 6069 606F 6084 - 609F 609A 608D 6094 608C 6085 6096 6247 - 62F3 6308 62FF 634E 633E 632F 6355 6342 - 6346 634F 6349 633A 6350 633D 632A 632B - 6328 634D 634C 6548 6549 6599 65C1 65C5 - 6642 6649 664F 6643 6652 664C 6645 6641 - 66F8 6714 6715 6717 6821 6838 6848 6846 - 6853 6839 6842 6854 6829 68B3 6817 684C - 6851 683D 67F4 6850 6840 683C 6843 682A - 6845 6813 6818 6841 6B8A 6B89 6BB7 6C23 - 6C27 6C28 6C26 6C24 6CF0 6D6A 6D95 6D88 - 6D87 6D66 6D78 6D77 6D59 6D93 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = AF40 - srcEnd = AF7E - mappingOffset = 07B0 - Mapping = - 6D6C 6D89 6D6E 6D5A 6D74 6D69 6D8C 6D8A - 6D79 6D85 6D65 6D94 70CA 70D8 70E4 70D9 - 70C8 70CF 7239 7279 72FC 72F9 72FD 72F8 - 72F7 7386 73ED 7409 73EE 73E0 73EA 73DE - 7554 755D 755C 755A 7559 75BE 75C5 75C7 - 75B2 75B3 75BD 75BC 75B9 75C2 75B8 768B - 76B0 76CA 76CD 76CE 7729 771F 7720 7728 - 77E9 7830 7827 7838 781D 7834 7837 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = AFA1 - srcEnd = AFFE - mappingOffset = 07EF - Mapping = - 7825 782D 7820 781F 7832 7955 7950 7960 - 795F 7956 795E 795D 7957 795A 79E4 79E3 - 79E7 79DF 79E6 79E9 79D8 7A84 7A88 7AD9 - 7B06 7B11 7C89 7D21 7D17 7D0B 7D0A 7D20 - 7D22 7D14 7D10 7D15 7D1A 7D1C 7D0D 7D19 - 7D1B 7F3A 7F5F 7F94 7FC5 7FC1 8006 8018 - 8015 8019 8017 803D 803F 80F1 8102 80F0 - 8105 80ED 80F4 8106 80F8 80F3 8108 80FD - 810A 80FC 80EF 81ED 81EC 8200 8210 822A - 822B 8228 822C 82BB 832B 8352 8354 834A - 8338 8350 8349 8335 8334 834F 8332 8339 - 8336 8317 8340 8331 8328 8343 -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = B040 - srcEnd = B07E - mappingOffset = 084D - Mapping = - 8654 868A 86AA 8693 86A4 86A9 868C 86A3 - 869C 8870 8877 8881 8882 887D 8879 8A18 - 8A10 8A0E 8A0C 8A15 8A0A 8A17 8A13 8A16 - 8A0F 8A11 8C48 8C7A 8C79 8CA1 8CA2 8D77 - 8EAC 8ED2 8ED4 8ECF 8FB1 9001 9006 8FF7 - 9000 8FFA 8FF4 9003 8FFD 9005 8FF8 9095 - 90E1 90DD 90E2 9152 914D 914C 91D8 91DD - 91D7 91DC 91D9 9583 9662 9663 9661 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = B0A1 - srcEnd = B0FE - mappingOffset = 088C - Mapping = - 965B 965D 9664 9658 965E 96BB 98E2 99AC - 9AA8 9AD8 9B25 9B32 9B3C 4E7E 507A 507D - 505C 5047 5043 504C 505A 5049 5065 5076 - 504E 5055 5075 5074 5077 504F 500F 506F - 506D 515C 5195 51F0 526A 526F 52D2 52D9 - 52D8 52D5 5310 530F 5319 533F 5340 533E - 53C3 66FC 5546 556A 5566 5544 555E 5561 - 5543 554A 5531 5556 554F 5555 552F 5564 - 5538 552E 555C 552C 5563 5533 5541 5557 - 5708 570B 5709 57DF 5805 580A 5806 57E0 - 57E4 57FA 5802 5835 57F7 57F9 5920 5962 - 5A36 5A41 5A49 5A66 5A6A 5A40 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = B140 - srcEnd = B17E - mappingOffset = 08EA - Mapping = - 5A3C 5A62 5A5A 5A46 5A4A 5B70 5BC7 5BC5 - 5BC4 5BC2 5BBF 5BC6 5C09 5C08 5C07 5C60 - 5C5C 5C5D 5D07 5D06 5D0E 5D1B 5D16 5D22 - 5D11 5D29 5D14 5D19 5D24 5D27 5D17 5DE2 - 5E38 5E36 5E33 5E37 5EB7 5EB8 5EB6 5EB5 - 5EBE 5F35 5F37 5F57 5F6C 5F69 5F6B 5F97 - 5F99 5F9E 5F98 5FA1 5FA0 5F9C 607F 60A3 - 6089 60A0 60A8 60CB 60B4 60E6 60BD -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = B1A1 - srcEnd = B1FE - mappingOffset = 0929 - Mapping = - 60C5 60BB 60B5 60DC 60BC 60D8 60D5 60C6 - 60DF 60B8 60DA 60C7 621A 621B 6248 63A0 - 63A7 6372 6396 63A2 63A5 6377 6367 6398 - 63AA 6371 63A9 6389 6383 639B 636B 63A8 - 6384 6388 6399 63A1 63AC 6392 638F 6380 - 637B 6369 6368 637A 655D 6556 6551 6559 - 6557 555F 654F 6558 6555 6554 659C 659B - 65AC 65CF 65CB 65CC 65CE 665D 665A 6664 - 6668 6666 665E 66F9 52D7 671B 6881 68AF - 68A2 6893 68B5 687F 6876 68B1 68A7 6897 - 68B0 6883 68C4 68AD 6886 6885 6894 689D - 68A8 689F 68A1 6882 6B32 6BBA -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = B240 - srcEnd = B27E - mappingOffset = 0987 - Mapping = - 6BEB 6BEC 6C2B 6D8E 6DBC 6DF3 6DD9 6DB2 - 6DE1 6DCC 6DE4 6DFB 6DFA 6E05 6DC7 6DCB - 6DAF 6DD1 6DAE 6DDE 6DF9 6DB8 6DF7 6DF5 - 6DC5 6DD2 6E1A 6DB5 6DDA 6DEB 6DD8 6DEA - 6DF1 6DEE 6DE8 6DC6 6DC4 6DAA 6DEC 6DBF - 6DE6 70F9 7109 710A 70FD 70EF 723D 727D - 7281 731C 731B 7316 7313 7319 7387 7405 - 740A 7403 7406 73FE 740D 74E0 74F6 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = B2A1 - srcEnd = B2FE - mappingOffset = 09C6 - Mapping = - 74F7 751C 7522 7565 7566 7562 7570 758F - 75D4 75D5 75B5 75CA 75CD 768E 76D4 76D2 - 76DB 7737 773E 773C 7736 7738 773A 786B - 7843 784E 7965 7968 796D 79FB 7A92 7A95 - 7B20 7B28 7B1B 7B2C 7B26 7B19 7B1E 7B2E - 7C92 7C97 7C95 7D46 7D43 7D71 7D2E 7D39 - 7D3C 7D40 7D30 7D33 7D44 7D2F 7D42 7D32 - 7D31 7F3D 7F9E 7F9A 7FCC 7FCE 7FD2 801C - 804A 8046 812F 8116 8123 812B 8129 8130 - 8124 8202 8235 8237 8236 8239 838E 839E - 8398 8378 83A2 8396 83BD 83AB 8392 838A - 8393 8389 83A0 8377 837B 837C -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = B340 - srcEnd = B37E - mappingOffset = 0A24 - Mapping = - 8386 83A7 8655 5F6A 86C7 86C0 86B6 86C4 - 86B5 86C6 86CB 86B1 86AF 86C9 8853 889E - 8888 88AB 8892 8896 888D 888B 8993 898F - 8A2A 8A1D 8A23 8A25 8A31 8A2D 8A1F 8A1B - 8A22 8C49 8C5A 8CA9 8CAC 8CAB 8CA8 8CAA - 8CA7 8D67 8D66 8DBE 8DBA 8EDB 8EDF 9019 - 900D 901A 9017 9023 901F 901D 9010 9015 - 901E 9020 900F 9022 9016 901B 9014 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = B3A1 - srcEnd = B3FE - mappingOffset = 0A63 - Mapping = - 90E8 90ED 90FD 9157 91CE 91F5 91E6 91E3 - 91E7 91ED 91E9 9589 966A 9675 9673 9678 - 9670 9674 9676 9677 966C 96C0 96EA 96E9 - 7AE0 7ADF 9802 9803 9B5A 9CE5 9E75 9E7F - 9EA5 9EBB 50A2 508D 5085 5099 5091 5080 - 5096 5098 509A 6700 51F1 5272 5274 5275 - 5269 52DE 52DD 52DB 535A 53A5 557B 5580 - 55A7 557C 558A 559D 5598 5582 559C 55AA - 5594 5587 558B 5583 55B3 55AE 559F 553E - 55B2 559A 55BB 55AC 55B1 557E 5589 55AB - 5599 570D 582F 582A 5834 5824 5830 5831 - 5821 581D 5820 58F9 58FA 5960 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = B440 - srcEnd = B47E - mappingOffset = 0AC1 - Mapping = - 5A77 5A9A 5A7F 5A92 5A9B 5AA7 5B73 5B71 - 5BD2 5BCC 5BD3 5BD0 5C0A 5C0B 5C31 5D4C - 5D50 5D34 5D47 5DFD 5E45 5E3D 5E40 5E43 - 5E7E 5ECA 5EC1 5EC2 5EC4 5F3C 5F6D 5FA9 - 5FAA 5FA8 60D1 60E1 60B2 60B6 60E0 611C - 6123 60FA 6115 60F0 60FB 60F4 6168 60F1 - 610E 60F6 6109 6100 6112 621F 6249 63A3 - 638C 63CF 63C0 63E9 63C9 63C6 63CD -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = B4A1 - srcEnd = B4FE - mappingOffset = 0B00 - Mapping = - 63D2 63E3 63D0 63E1 63D6 63ED 63EE 6376 - 63F4 63EA 63DB 6452 63DA 63F9 655E 6566 - 6562 6563 6591 6590 65AF 666E 6670 6674 - 6676 666F 6691 667A 667E 6677 66FE 66FF - 671F 671D 68FA 68D5 68E0 68D8 68D7 6905 - 68DF 68F5 68EE 68E7 68F9 68D2 68F2 68E3 - 68CB 68CD 690D 6912 690E 68C9 68DA 696E - 68FB 6B3E 6B3A 6B3D 6B98 6B96 6BBC 6BEF - 6C2E 6C2F 6C2C 6E2F 6E38 6E54 6E21 6E32 - 6E67 6E4A 6E20 6E25 6E23 6E1B 6E5B 6E58 - 6E24 6E56 6E6E 6E2D 6E26 6E6F 6E34 6E4D - 6E3A 6E2C 6E43 6E1D 6E3E 6ECB -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = B540 - srcEnd = B57E - mappingOffset = 0B5E - Mapping = - 6E89 6E19 6E4E 6E63 6E44 6E72 6E69 6E5F - 7119 711A 7126 7130 7121 7136 716E 711C - 724C 7284 7280 7336 7325 7334 7329 743A - 742A 7433 7422 7425 7435 7436 7434 742F - 741B 7426 7428 7525 7526 756B 756A 75E2 - 75DB 75E3 75D9 75D8 75DE 75E0 767B 767C - 7696 7693 76B4 76DC 774F 77ED 785D 786C - 786F 7A0D 7A08 7A0B 7A05 7A00 7A98 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = B5A1 - srcEnd = B5FE - mappingOffset = 0B9D - Mapping = - 7A97 7A96 7AE5 7AE3 7B49 7B56 7B46 7B50 - 7B52 7B54 7B4D 7B4B 7B4F 7B51 7C9F 7CA5 - 7D5E 7D50 7D68 7D55 7D2B 7D6E 7D72 7D61 - 7D66 7D62 7D70 7D73 5584 7FD4 7FD5 800B - 8052 8085 8155 8154 814B 8151 814E 8139 - 8146 813E 814C 8153 8174 8212 821C 83E9 - 8403 83F8 840D 83E0 83C5 840B 83C1 83EF - 83F1 83F4 8457 840A 83F0 840C 83CC 83FD - 83F2 83CA 8438 840E 8404 83DC 8407 83D4 - 83DF 865B 86DF 86D9 86ED 86D4 86DB 86E4 - 86D0 86DE 8857 88C1 88C2 88B1 8983 8996 - 8A3B 8A60 8A55 8A5E 8A3C 8A41 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = B640 - srcEnd = B67E - mappingOffset = 0BFB - Mapping = - 8A54 8A5B 8A50 8A46 8A34 8A3A 8A36 8A56 - 8C61 8C82 8CAF 8CBC 8CB3 8CBD 8CC1 8CBB - 8CC0 8CB4 8CB7 8CB6 8CBF 8CB8 8D8A 8D85 - 8D81 8DCE 8DDD 8DCB 8DDA 8DD1 8DCC 8DDB - 8DC6 8EFB 8EF8 8EFC 8F9C 902E 9035 9031 - 9038 9032 9036 9102 90F5 9109 90FE 9163 - 9165 91CF 9214 9215 9223 9209 921E 920D - 9210 9207 9211 9594 958F 958B 9591 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = B6A1 - srcEnd = B6FE - mappingOffset = 0C3A - Mapping = - 9593 9592 958E 968A 968E 968B 967D 9685 - 9686 968D 9672 9684 96C1 96C5 96C4 96C6 - 96C7 96EF 96F2 97CC 9805 9806 9808 98E7 - 98EA 98EF 98E9 98F2 98ED 99AE 99AD 9EC3 - 9ECD 9ED1 4E82 50AD 50B5 50B2 50B3 50C5 - 50BE 50AC 50B7 50BB 50AF 50C7 527F 5277 - 527D 52DF 52E6 52E4 52E2 52E3 532F 55DF - 55E8 55D3 55E6 55CE 55DC 55C7 55D1 55E3 - 55E4 55EF 55DA 55E1 55C5 55C6 55E5 55C9 - 5712 5713 585E 5851 5858 5857 585A 5854 - 586B 584C 586D 584A 5862 5852 584B 5967 - 5AC1 5AC9 5ACC 5ABE 5ABD 5ABC -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = B740 - srcEnd = B77E - mappingOffset = 0C98 - Mapping = - 5AB3 5AC2 5AB2 5D69 5D6F 5E4C 5E79 5EC9 - 5EC8 5F12 5F59 5FAC 5FAE 611A 610F 6148 - 611F 60F3 611B 60F9 6101 6108 614E 614C - 6144 614D 613E 6134 6127 610D 6106 6137 - 6221 6222 6413 643E 641E 642A 642D 643D - 642C 640F 641C 6414 640D 6436 6416 6417 - 6406 656C 659F 65B0 6697 6689 6687 6688 - 6696 6684 6698 668D 6703 6994 696D -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = B7A1 - srcEnd = B7FE - mappingOffset = 0CD7 - Mapping = - 695A 6977 6960 6954 6975 6930 6982 694A - 6968 696B 695E 6953 6979 6986 695D 6963 - 695B 6B47 6B72 6BC0 6BBF 6BD3 6BFD 6EA2 - 6EAF 6ED3 6EB6 6EC2 6E90 6E9D 6EC7 6EC5 - 6EA5 6E98 6EBC 6EBA 6EAB 6ED1 6E96 6E9C - 6EC4 6ED4 6EAA 6EA7 6EB4 714E 7159 7169 - 7164 7149 7167 715C 716C 7166 714C 7165 - 715E 7146 7168 7156 723A 7252 7337 7345 - 733F 733E 746F 745A 7455 745F 745E 7441 - 743F 7459 745B 745C 7576 7578 7600 75F0 - 7601 75F2 75F1 75FA 75FF 75F4 75F3 76DE - 76DF 775B 776B 7766 775E 7763 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = B840 - srcEnd = B87E - mappingOffset = 0D35 - Mapping = - 7779 776A 776C 775C 7765 7768 7762 77EE - 788E 78B0 7897 7898 788C 7889 787C 7891 - 7893 787F 797A 797F 7981 842C 79BD 7A1C - 7A1A 7A20 7A14 7A1F 7A1E 7A9F 7AA0 7B77 - 7BC0 7B60 7B6E 7B67 7CB1 7CB3 7CB5 7D93 - 7D79 7D91 7D81 7D8F 7D5B 7F6E 7F69 7F6A - 7F72 7FA9 7FA8 7FA4 8056 8058 8086 8084 - 8171 8170 8178 8165 816E 8173 816B -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = B8A1 - srcEnd = B8FE - mappingOffset = 0D74 - Mapping = - 8179 817A 8166 8205 8247 8482 8477 843D - 8431 8475 8466 846B 8449 846C 845B 843C - 8435 8461 8463 8469 846D 8446 865E 865C - 865F 86F9 8713 8708 8707 8700 86FE 86FB - 8702 8703 8706 870A 8859 88DF 88D4 88D9 - 88DC 88D8 88DD 88E1 88CA 88D5 88D2 899C - 89E3 8A6B 8A72 8A73 8A66 8A69 8A70 8A87 - 8A7C 8A63 8AA0 8A71 8A85 8A6D 8A62 8A6E - 8A6C 8A79 8A7B 8A3E 8A68 8C62 8C8A 8C89 - 8CCA 8CC7 8CC8 8CC4 8CB2 8CC3 8CC2 8CC5 - 8DE1 8DDF 8DE8 8DEF 8DF3 8DFA 8DEA 8DE4 - 8DE6 8EB2 8F03 8F09 8EFE 8F0A -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = B940 - srcEnd = B97E - mappingOffset = 0DD2 - Mapping = - 8F9F 8FB2 904B 904A 9053 9042 9054 903C - 9055 9050 9047 904F 904E 904D 9051 903E - 9041 9112 9117 916C 916A 9169 91C9 9237 - 9257 9238 923D 9240 923E 925B 924B 9264 - 9251 9234 9249 924D 9245 9239 923F 925A - 9598 9698 9694 9695 96CD 96CB 96C9 96CA - 96F7 96FB 96F9 96F6 9756 9774 9776 9810 - 9811 9813 980A 9812 980C 98FC 98F4 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = B9A1 - srcEnd = B9FE - mappingOffset = 0E11 - Mapping = - 98FD 98FE 99B3 99B1 99B4 9AE1 9CE9 9E82 - 9F0E 9F13 9F20 50E7 50EE 50E5 50D6 50ED - 50DA 50D5 50CF 50D1 50F1 50CE 50E9 5162 - 51F3 5283 5282 5331 53AD 55FE 5600 561B - 5617 55FD 5614 5606 5609 560D 560E 55F7 - 5616 561F 5608 5610 55F6 5718 5716 5875 - 587E 5883 5893 588A 5879 5885 587D 58FD - 5925 5922 5924 596A 5969 5AE1 5AE6 5AE9 - 5AD7 5AD6 5AD8 5AE3 5B75 5BDE 5BE7 5BE1 - 5BE5 5BE6 5BE8 5BE2 5BE4 5BDF 5C0D 5C62 - 5D84 5D87 5E5B 5E63 5E55 5E57 5E54 5ED3 - 5ED6 5F0A 5F46 5F70 5FB9 6147 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = BA40 - srcEnd = BA7E - mappingOffset = 0E6F - Mapping = - 613F 614B 6177 6162 6163 615F 615A 6158 - 6175 622A 6487 6458 6454 64A4 6478 645F - 647A 6451 6467 6434 646D 647B 6572 65A1 - 65D7 65D6 66A2 66A8 669D 699C 69A8 6995 - 69C1 69AE 69D3 69CB 699B 69B7 69BB 69AB - 69B4 69D0 69CD 69AD 69CC 69A6 69C3 69A3 - 6B49 6B4C 6C33 6F33 6F14 6EFE 6F13 6EF4 - 6F29 6F3E 6F20 6F2C 6F0F 6F02 6F22 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = BAA1 - srcEnd = BAFE - mappingOffset = 0EAE - Mapping = - 6EFF 6EEF 6F06 6F31 6F38 6F32 6F23 6F15 - 6F2B 6F2F 6F88 6F2A 6EEC 6F01 6EF2 6ECC - 6EF7 7194 7199 717D 718A 7184 7192 723E - 7292 7296 7344 7350 7464 7463 746A 7470 - 746D 7504 7591 7627 760D 760B 7609 7613 - 76E1 76E3 7784 777D 777F 7761 78C1 789F - 78A7 78B3 78A9 78A3 798E 798F 798D 7A2E - 7A31 7AAA 7AA9 7AED 7AEF 7BA1 7B95 7B8B - 7B75 7B97 7B9D 7B94 7B8F 7BB8 7B87 7B84 - 7CB9 7CBD 7CBE 7DBB 7DB0 7D9C 7DBD 7DBE - 7DA0 7DCA 7DB4 7DB2 7DB1 7DBA 7DA2 7DBF - 7DB5 7DB8 7DAD 7DD2 7DC7 7DAC -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = BB40 - srcEnd = BB7E - mappingOffset = 0F0C - Mapping = - 7F70 7FE0 7FE1 7FDF 805E 805A 8087 8150 - 8180 818F 8188 818A 817F 8182 81E7 81FA - 8207 8214 821E 824B 84C9 84BF 84C6 84C4 - 8499 849E 84B2 849C 84CB 84B8 84C0 84D3 - 8490 84BC 84D1 84CA 873F 871C 873B 8722 - 8725 8734 8718 8755 8737 8729 88F3 8902 - 88F4 88F9 88F8 88FD 88E8 891A 88EF 8AA6 - 8A8C 8A9E 8AA3 8A8D 8AA1 8A93 8AA4 -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = BBA1 - srcEnd = BBFE - mappingOffset = 0F4B - Mapping = - 8AAA 8AA5 8AA8 8A98 8A91 8A9A 8AA7 8C6A - 8C8D 8C8C 8CD3 8CD1 8CD2 8D6B 8D99 8D95 - 8DFC 8F14 8F12 8F15 8F13 8FA3 9060 9058 - 905C 9063 9059 905E 9062 905D 905B 9119 - 9118 911E 9175 9178 9177 9174 9278 9280 - 9285 9298 9296 927B 9293 929C 92A8 927C - 9291 95A1 95A8 95A9 95A3 95A5 95A4 9699 - 969C 969B 96CC 96D2 9700 977C 9785 97F6 - 9817 9818 98AF 98B1 9903 9905 990C 9909 - 99C1 9AAF 9AB0 9AE6 9B41 9B42 9CF4 9CF6 - 9CF3 9EBC 9F3B 9F4A 5104 5100 50FB 50F5 - 50F9 5102 5108 5109 5105 51DC -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = BC40 - srcEnd = BC7E - mappingOffset = 0FA9 - Mapping = - 5287 5288 5289 528D 528A 52F0 53B2 562E - 563B 5639 5632 563F 5634 5629 5653 564E - 5657 5674 5636 562F 5630 5880 589F 589E - 58B3 589C 58AE 58A9 58A6 596D 5B09 5AFB - 5B0B 5AF5 5B0C 5B08 5BEE 5BEC 5BE9 5BEB - 5C64 5C65 5D9D 5D94 5E62 5E5F 5E61 5EE2 - 5EDA 5EDF 5EDD 5EE3 5EE0 5F48 5F71 5FB7 - 5FB5 6176 6167 616E 615D 6155 6182 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = BCA1 - srcEnd = BCFE - mappingOffset = 0FE8 - Mapping = - 617C 6170 616B 617E 61A7 6190 61AB 618E - 61AC 619A 61A4 6194 61AE 622E 6469 646F - 6479 649E 64B2 6488 6490 64B0 64A5 6493 - 6495 64A9 6492 64AE 64AD 64AB 649A 64AC - 6499 64A2 64B3 6575 6577 6578 66AE 66AB - 66B4 66B1 6A23 6A1F 69E8 6A01 6A1E 6A19 - 69FD 6A21 6A13 6A0A 69F3 6A02 6A05 69ED - 6A11 6B50 6B4E 6BA4 6BC5 6BC6 6F3F 6F7C - 6F84 6F51 6F66 6F54 6F86 6F6D 6F5B 6F78 - 6F6E 6F8E 6F7A 6F70 6F64 6F97 6F58 6ED5 - 6F6F 6F60 6F5F 719F 71AC 71B1 71A8 7256 - 729B 734E 7357 7469 748B 7483 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = BD40 - srcEnd = BD7E - mappingOffset = 1046 - Mapping = - 747E 7480 757F 7620 7629 761F 7624 7626 - 7621 7622 769A 76BA 76E4 778E 7787 778C - 7791 778B 78CB 78C5 78BA 78CA 78BE 78D5 - 78BC 78D0 7A3F 7A3C 7A40 7A3D 7A37 7A3B - 7AAF 7AAE 7BAD 7BB1 7BC4 7BB4 7BC6 7BC7 - 7BC1 7BA0 7BCC 7CCA 7DE0 7DF4 7DEF 7DFB - 7DD8 7DEC 7DDD 7DE8 7DE3 7DDA 7DDE 7DE9 - 7D9E 7DD9 7DF2 7DF9 7F75 7F77 7FAF -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = BDA1 - srcEnd = BDFE - mappingOffset = 1085 - Mapping = - 7FE9 8026 819B 819C 819D 81A0 819A 8198 - 8517 853D 851A 84EE 852C 852D 8513 8511 - 8523 8521 8514 84EC 8525 84FF 8506 8782 - 8774 8776 8760 8766 8778 8768 8759 8757 - 874C 8753 885B 885D 8910 8907 8912 8913 - 8915 890A 8ABC 8AD2 8AC7 8AC4 8A95 8ACB - 8AF8 8AB2 8AC9 8AC2 8ABF 8AB0 8AD6 8ACD - 8AB6 8AB9 8ADB 8C4C 8C4E 8C6C 8CE0 8CDE - 8CE6 8CE4 8CEC 8CED 8CE2 8CE3 8CDC 8CEA - 8CE1 8D6D 8D9F 8DA3 8E2B 8E10 8E1D 8E22 - 8E0F 8E29 8E1F 8E21 8E1E 8EBA 8F1D 8F1B - 8F1F 8F29 8F26 8F2A 8F1C 8F1E -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = BE40 - srcEnd = BE7E - mappingOffset = 10E3 - Mapping = - 8F25 9069 906E 9068 906D 9077 9130 912D - 9127 9131 9187 9189 918B 9183 92C5 92BB - 92B7 92EA 92AC 92E4 92C1 92B3 92BC 92D2 - 92C7 92F0 92B2 95AD 95B1 9704 9706 9707 - 9709 9760 978D 978B 978F 9821 982B 981C - 98B3 990A 9913 9912 9918 99DD 99D0 99DF - 99DB 99D1 99D5 99D2 99D9 9AB7 9AEE 9AEF - 9B27 9B45 9B44 9B77 9B6F 9D06 9D09 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = BEA1 - srcEnd = BEFE - mappingOffset = 1122 - Mapping = - 9D03 9EA9 9EBE 9ECE 58A8 9F52 5112 5118 - 5114 5110 5115 5180 51AA 51DD 5291 5293 - 52F3 5659 566B 5679 5669 5664 5678 566A - 5668 5665 5671 566F 566C 5662 5676 58C1 - 58BE 58C7 58C5 596E 5B1D 5B34 5B78 5BF0 - 5C0E 5F4A 61B2 6191 61A9 618A 61CD 61B6 - 61BE 61CA 61C8 6230 64C5 64C1 64CB 64BB - 64BC 64DA 64C4 64C7 64C2 64CD 64BF 64D2 - 64D4 64BE 6574 66C6 66C9 66B9 66C4 66C7 - 66B8 6A3D 6A38 6A3A 6A59 6A6B 6A58 6A39 - 6A44 6A62 6A61 6A4B 6A47 6A35 6A5F 6A48 - 6B59 6B77 6C05 6FC2 6FB1 6FA1 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = BF40 - srcEnd = BF7E - mappingOffset = 1180 - Mapping = - 6FC3 6FA4 6FC1 6FA7 6FB3 6FC0 6FB9 6FB6 - 6FA6 6FA0 6FB4 71BE 71C9 71D0 71D2 71C8 - 71D5 71B9 71CE 71D9 71DC 71C3 71C4 7368 - 749C 74A3 7498 749F 749E 74E2 750C 750D - 7634 7638 763A 76E7 76E5 77A0 779E 779F - 77A5 78E8 78DA 78EC 78E7 79A6 7A4D 7A4E - 7A46 7A4C 7A4B 7ABA 7BD9 7C11 7BC9 7BE4 - 7BDB 7BE1 7BE9 7BE6 7CD5 7CD6 7E0A -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = BFA1 - srcEnd = BFFE - mappingOffset = 11BF - Mapping = - 7E11 7E08 7E1B 7E23 7E1E 7E1D 7E09 7E10 - 7F79 7FB2 7FF0 7FF1 7FEE 8028 81B3 81A9 - 81A8 81FB 8208 8258 8259 854A 8559 8548 - 8568 8569 8543 8549 856D 856A 855E 8783 - 879F 879E 87A2 878D 8861 892A 8932 8925 - 892B 8921 89AA 89A6 8AE6 8AFA 8AEB 8AF1 - 8B00 8ADC 8AE7 8AEE 8AFE 8B01 8B02 8AF7 - 8AED 8AF3 8AF6 8AFC 8C6B 8C6D 8C93 8CF4 - 8E44 8E31 8E34 8E42 8E39 8E35 8F3B 8F2F - 8F38 8F33 8FA8 8FA6 9075 9074 9078 9072 - 907C 907A 9134 9192 9320 9336 92F8 9333 - 932F 9322 92FC 932B 9304 931A -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = C040 - srcEnd = C07E - mappingOffset = 121D - Mapping = - 9310 9326 9321 9315 932E 9319 95BB 96A7 - 96A8 96AA 96D5 970E 9711 9716 970D 9713 - 970F 975B 975C 9766 9798 9830 9838 983B - 9837 982D 9839 9824 9910 9928 991E 991B - 9921 991A 99ED 99E2 99F1 9AB8 9ABC 9AFB - 9AED 9B28 9B91 9D15 9D23 9D26 9D28 9D12 - 9D1B 9ED8 9ED4 9F8D 9F9C 512A 511F 5121 - 5132 52F5 568E 5680 5690 5685 5687 -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = C0A1 - srcEnd = C0FE - mappingOffset = 125C - Mapping = - 568F 58D5 58D3 58D1 58CE 5B30 5B2A 5B24 - 5B7A 5C37 5C68 5DBC 5DBA 5DBD 5DB8 5E6B - 5F4C 5FBD 61C9 61C2 61C7 61E6 61CB 6232 - 6234 64CE 64CA 64D8 64E0 64F0 64E6 64EC - 64F1 64E2 64ED 6582 6583 66D9 66D6 6A80 - 6A94 6A84 6AA2 6A9C 6ADB 6AA3 6A7E 6A97 - 6A90 6AA0 6B5C 6BAE 6BDA 6C08 6FD8 6FF1 - 6FDF 6FE0 6FDB 6FE4 6FEB 6FEF 6F80 6FEC - 6FE1 6FE9 6FD5 6FEE 6FF0 71E7 71DF 71EE - 71E6 71E5 71ED 71EC 71F4 71E0 7235 7246 - 7370 7372 74A9 74B0 74A6 74A8 7646 7642 - 764C 76EA 77B3 77AA 77B0 77AC -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = C140 - srcEnd = C17E - mappingOffset = 12BA - Mapping = - 77A7 77AD 77EF 78F7 78FA 78F4 78EF 7901 - 79A7 79AA 7A57 7ABF 7C07 7C0D 7BFE 7BF7 - 7C0C 7BE0 7CE0 7CDC 7CDE 7CE2 7CDF 7CD9 - 7CDD 7E2E 7E3E 7E46 7E37 7E32 7E43 7E2B - 7E3D 7E31 7E45 7E41 7E34 7E39 7E48 7E35 - 7E3F 7E2F 7F44 7FF3 7FFC 8071 8072 8070 - 806F 8073 81C6 81C3 81BA 81C2 81C0 81BF - 81BD 81C9 81BE 81E8 8209 8271 85AA -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = C1A1 - srcEnd = C1FE - mappingOffset = 12F9 - Mapping = - 8584 857E 859C 8591 8594 85AF 859B 8587 - 85A8 858A 8667 87C0 87D1 87B3 87D2 87C6 - 87AB 87BB 87BA 87C8 87CB 893B 8936 8944 - 8938 893D 89AC 8B0E 8B17 8B19 8B1B 8B0A - 8B20 8B1D 8B04 8B10 8C41 8C3F 8C73 8CFA - 8CFD 8CFC 8CF8 8CFB 8DA8 8E49 8E4B 8E48 - 8E4A 8F44 8F3E 8F42 8F45 8F3F 907F 907D - 9084 9081 9082 9080 9139 91A3 919E 919C - 934D 9382 9328 9375 934A 9365 934B 9318 - 937E 936C 935B 9370 935A 9354 95CA 95CB - 95CC 95C8 95C6 96B1 96B8 96D6 971C 971E - 97A0 97D3 9846 98B6 9935 9A01 -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = C240 - srcEnd = C27E - mappingOffset = 1357 - Mapping = - 99FF 9BAE 9BAB 9BAA 9BAD 9D3B 9D3F 9E8B - 9ECF 9EDE 9EDC 9EDD 9EDB 9F3E 9F4B 53E2 - 5695 56AE 58D9 58D8 5B38 5F5D 61E3 6233 - 64F4 64F2 64FE 6506 64FA 64FB 64F7 65B7 - 66DC 6726 6AB3 6AAC 6AC3 6ABB 6AB8 6AC2 - 6AAE 6AAF 6B5F 6B78 6BAF 7009 700B 6FFE - 7006 6FFA 7011 700F 71FB 71FC 71FE 71F8 - 7377 7375 74A7 74BF 7515 7656 7658 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = C2A1 - srcEnd = C2FE - mappingOffset = 1396 - Mapping = - 7652 77BD 77BF 77BB 77BC 790E 79AE 7A61 - 7A62 7A60 7AC4 7AC5 7C2B 7C27 7C2A 7C1E - 7C23 7C21 7CE7 7E54 7E55 7E5E 7E5A 7E61 - 7E52 7E59 7F48 7FF9 7FFB 8077 8076 81CD - 81CF 820A 85CF 85A9 85CD 85D0 85C9 85B0 - 85BA 85B9 85A6 87EF 87EC 87F2 87E0 8986 - 89B2 89F4 8B28 8B39 8B2C 8B2B 8C50 8D05 - 8E59 8E63 8E66 8E64 8E5F 8E55 8EC0 8F49 - 8F4D 9087 9083 9088 91AB 91AC 91D0 9394 - 938A 9396 93A2 93B3 93AE 93AC 93B0 9398 - 939A 9397 95D4 95D6 95D0 95D5 96E2 96DC - 96D9 96DB 96DE 9724 97A3 97A6 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = C340 - srcEnd = C37E - mappingOffset = 13F4 - Mapping = - 97AD 97F9 984D 984F 984C 984E 9853 98BA - 993E 993F 993D 992E 99A5 9A0E 9AC1 9B03 - 9B06 9B4F 9B4E 9B4D 9BCA 9BC9 9BFD 9BC8 - 9BC0 9D51 9D5D 9D60 9EE0 9F15 9F2C 5133 - 56A5 58DE 58DF 58E2 5BF5 9F90 5EEC 61F2 - 61F7 61F6 61F5 6500 650F 66E0 66DD 6AE5 - 6ADD 6ADA 6AD3 701B 701F 7028 701A 701D - 7015 7018 7206 720D 7258 72A2 7378 -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = C3A1 - srcEnd = C3FE - mappingOffset = 1433 - Mapping = - 737A 74BD 74CA 74E3 7587 7586 765F 7661 - 77C7 7919 79B1 7A6B 7A69 7C3E 7C3F 7C38 - 7C3D 7C37 7C40 7E6B 7E6D 7E79 7E69 7E6A - 7F85 7E73 7FB6 7FB9 7FB8 81D8 85E9 85DD - 85EA 85D5 85E4 85E5 85F7 87FB 8805 880D - 87F9 87FE 8960 895F 8956 895E 8B41 8B5C - 8B58 8B49 8B5A 8B4E 8B4F 8B46 8B59 8D08 - 8D0A 8E7C 8E72 8E87 8E76 8E6C 8E7A 8E74 - 8F54 8F4E 8FAD 908A 908B 91B1 91AE 93E1 - 93D1 93DF 93C3 93C8 93DC 93DD 93D6 93E2 - 93CD 93D8 93E4 93D7 93E8 95DC 96B4 96E3 - 972A 9727 9761 97DC 97FB 985E -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = C440 - srcEnd = C47E - mappingOffset = 1491 - Mapping = - 9858 985B 98BC 9945 9949 9A16 9A19 9B0D - 9BE8 9BE7 9BD6 9BDB 9D89 9D61 9D72 9D6A - 9D6C 9E92 9E97 9E93 9EB4 52F8 56A8 56B7 - 56B6 56B4 56BC 58E4 5B40 5B43 5B7D 5BF6 - 5DC9 61F8 61FA 6518 6514 6519 66E6 6727 - 6AEC 703E 7030 7032 7210 737B 74CF 7662 - 7665 7926 792A 792C 792B 7AC7 7AF6 7C4C - 7C43 7C4D 7CEF 7CF0 8FAE 7E7D 7E7C -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = C4A1 - srcEnd = C4FE - mappingOffset = 14D0 - Mapping = - 7E82 7F4C 8000 81DA 8266 85FB 85F9 8611 - 85FA 8606 860B 8607 860A 8814 8815 8964 - 89BA 89F8 8B70 8B6C 8B66 8B6F 8B5F 8B6B - 8D0F 8D0D 8E89 8E81 8E85 8E82 91B4 91CB - 9418 9403 93FD 95E1 9730 98C4 9952 9951 - 99A8 9A2B 9A30 9A37 9A35 9C13 9C0D 9E79 - 9EB5 9EE8 9F2F 9F5F 9F63 9F61 5137 5138 - 56C1 56C0 56C2 5914 5C6C 5DCD 61FC 61FE - 651D 651C 6595 66E9 6AFB 6B04 6AFA 6BB2 - 704C 721B 72A7 74D6 74D4 7669 77D3 7C50 - 7E8F 7E8C 7FBC 8617 862D 861A 8823 8822 - 8821 881F 896A 896C 89BD 8B74 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = C540 - srcEnd = C57E - mappingOffset = 152E - Mapping = - 8B77 8B7D 8D13 8E8A 8E8D 8E8B 8F5F 8FAF - 91BA 942E 9433 9435 943A 9438 9432 942B - 95E2 9738 9739 9732 97FF 9867 9865 9957 - 9A45 9A43 9A40 9A3E 9ACF 9B54 9B51 9C2D - 9C25 9DAF 9DB4 9DC2 9DB8 9E9D 9EEF 9F19 - 9F5C 9F66 9F67 513C 513B 56C8 56CA 56C9 - 5B7F 5DD4 5DD2 5F4E 61FF 6524 6B0A 6B61 - 7051 7058 7380 74E4 758A 766E 766C -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = C5A1 - srcEnd = C5FE - mappingOffset = 156D - Mapping = - 79B3 7C60 7C5F 807E 807D 81DF 8972 896F - 89FC 8B80 8D16 8D17 8E91 8E93 8F61 9148 - 9444 9451 9452 973D 973E 97C3 97C1 986B - 9955 9A55 9A4D 9AD2 9B1A 9C49 9C31 9C3E - 9C3B 9DD3 9DD7 9F34 9F6C 9F6A 9F94 56CC - 5DD6 6200 6523 652B 652A 66EC 6B10 74DA - 7ACA 7C64 7C63 7C65 7E93 7E96 7E94 81E2 - 8638 863F 8831 8B8A 9090 908F 9463 9460 - 9464 9768 986F 995C 9A5A 9A5B 9A57 9AD3 - 9AD4 9AD1 9C54 9C57 9C56 9DE5 9E9F 9EF4 - 56D1 58E9 652C 705E 7671 7672 77D7 7F50 - 7F88 8836 8839 8862 8B93 8B92 -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = C640 - srcEnd = C67E - mappingOffset = 15CB - Mapping = - 8B96 8277 8D1B 91C0 946A 9742 9748 9744 - 97C6 9870 9A5F 9B22 9B58 9C5F 9DF9 9DFA - 9E7C 9E7D 9F07 9F77 9F72 5EF3 6B16 7063 - 7C6C 7C6E 883B 89C0 8EA1 91C1 9472 9470 - 9871 995E 9AD6 9B23 9ECC 7064 77DA 8B9A - 9477 97C9 9A62 9A65 7E9C 8B9C 8EAA 91C5 - 947D 947E 947C 9C77 9C78 9EF7 8C54 947F - 9E1A 7228 9A6A 9B31 9E1B 9E1E 7C72 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = C6A1 - srcEnd = C6A4 - mappingOffset = 160A - Mapping = - 30FE 309D 309E 3005 -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = C7B1 - srcEnd = C7B3 - mappingOffset = 160E - Mapping = - 0414 0415 0401 -End of Item 0062 - -Begin of Item 0063 - Format 2 - srcBegin = C7CE - destBegin = 0451 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = C940 - srcEnd = C97E - mappingOffset = 1611 - Mapping = - 4E42 4E5C 51F5 531A 5382 4E07 4E0C 4E47 - 4E8D 56D7 FA0C 5C6E 5F73 4E0F 5187 4E0E - 4E2E 4E93 4EC2 4EC9 4EC8 5198 52FC 536C - 53B9 5720 5903 592C 5C10 5DFF 65E1 6BB3 - 6BCC 6C14 723F 4E31 4E3C 4EE8 4EDC 4EE9 - 4EE1 4EDD 4EDA 520C 531C 534C 5722 5723 - 5917 592F 5B81 5B84 5C12 5C3B 5C74 5C73 - 5E04 5E80 5E82 5FC9 6209 6250 6C15 -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = C9A1 - srcEnd = C9FE - mappingOffset = 1650 - Mapping = - 6C36 6C43 6C3F 6C3B 72AE 72B0 738A 79B8 - 808A 961E 4F0E 4F18 4F2C 4EF5 4F14 4EF1 - 4F00 4EF7 4F08 4F1D 4F02 4F05 4F22 4F13 - 4F04 4EF4 4F12 51B1 5213 5209 5210 52A6 - 5322 531F 534D 538A 5407 56E1 56DF 572E - 572A 5734 593C 5980 597C 5985 597B 597E - 5977 597F 5B56 5C15 5C25 5C7C 5C7A 5C7B - 5C7E 5DDF 5E75 5E84 5F02 5F1A 5F74 5FD5 - 5FD4 5FCF 625C 625E 6264 6261 6266 6262 - 6259 6260 625A 6265 65EF 65EE 673E 6739 - 6738 673B 673A 673F 673C 6733 6C18 6C46 - 6C52 6C5C 6C4F 6C4A 6C54 6C4B -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = CA40 - srcEnd = CA7E - mappingOffset = 16AE - Mapping = - 6C4C 7071 725E 72B4 72B5 738E 752A 767F - 7A75 7F51 8278 827C 8280 827D 827F 864D - 897E 9099 9097 9098 909B 9094 9622 9624 - 9620 9623 4F56 4F3B 4F62 4F49 4F53 4F64 - 4F3E 4F67 4F52 4F5F 4F41 4F58 4F2D 4F33 - 4F3F 4F61 518F 51B9 521C 521E 5221 52AD - 52AE 5309 5363 5372 538E 538F 5430 5437 - 542A 5454 5445 5419 541C 5425 5418 -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = CAA1 - srcEnd = CAFE - mappingOffset = 16ED - Mapping = - 543D 544F 5441 5428 5424 5447 56EE 56E7 - 56E5 5741 5745 574C 5749 574B 5752 5906 - 5940 59A6 5998 59A0 5997 598E 59A2 5990 - 598F 59A7 59A1 5B8E 5B92 5C28 5C2A 5C8D - 5C8F 5C88 5C8B 5C89 5C92 5C8A 5C86 5C93 - 5C95 5DE0 5E0A 5E0E 5E8B 5E89 5E8C 5E88 - 5E8D 5F05 5F1D 5F78 5F76 5FD2 5FD1 5FD0 - 5FED 5FE8 5FEE 5FF3 5FE1 5FE4 5FE3 5FFA - 5FEF 5FF7 5FFB 6000 5FF4 623A 6283 628C - 628E 628F 6294 6287 6271 627B 627A 6270 - 6281 6288 6277 627D 6272 6274 6537 65F0 - 65F4 65F3 65F2 65F5 6745 6747 -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = CB40 - srcEnd = CB7E - mappingOffset = 174B - Mapping = - 6759 6755 674C 6748 675D 674D 675A 674B - 6BD0 6C19 6C1A 6C78 6C67 6C6B 6C84 6C8B - 6C8F 6C71 6C6F 6C69 6C9A 6C6D 6C87 6C95 - 6C9C 6C66 6C73 6C65 6C7B 6C8E 7074 707A - 7263 72BF 72BD 72C3 72C6 72C1 72BA 72C5 - 7395 7397 7393 7394 7392 753A 7539 7594 - 7595 7681 793D 8034 8095 8099 8090 8092 - 809C 8290 828F 8285 828E 8291 8293 -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = CBA1 - srcEnd = CBFE - mappingOffset = 178A - Mapping = - 828A 8283 8284 8C78 8FC9 8FBF 909F 90A1 - 90A5 909E 90A7 90A0 9630 9628 962F 962D - 4E33 4F98 4F7C 4F85 4F7D 4F80 4F87 4F76 - 4F74 4F89 4F84 4F77 4F4C 4F97 4F6A 4F9A - 4F79 4F81 4F78 4F90 4F9C 4F94 4F9E 4F92 - 4F82 4F95 4F6B 4F6E 519E 51BC 51BE 5235 - 5232 5233 5246 5231 52BC 530A 530B 533C - 5392 5394 5487 547F 5481 5491 5482 5488 - 546B 547A 547E 5465 546C 5474 5466 548D - 546F 5461 5460 5498 5463 5467 5464 56F7 - 56F9 576F 5772 576D 576B 5771 5770 5776 - 5780 5775 577B 5773 5774 5762 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = CC40 - srcEnd = CC7E - mappingOffset = 17E8 - Mapping = - 5768 577D 590C 5945 59B5 59BA 59CF 59CE - 59B2 59CC 59C1 59B6 59BC 59C3 59D6 59B1 - 59BD 59C0 59C8 59B4 59C7 5B62 5B65 5B93 - 5B95 5C44 5C47 5CAE 5CA4 5CA0 5CB5 5CAF - 5CA8 5CAC 5C9F 5CA3 5CAD 5CA2 5CAA 5CA7 - 5C9D 5CA5 5CB6 5CB0 5CA6 5E17 5E14 5E19 - 5F28 5F22 5F23 5F24 5F54 5F82 5F7E 5F7D - 5FDE 5FE5 602D 6026 6019 6032 600B -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = CCA1 - srcEnd = CCFE - mappingOffset = 1827 - Mapping = - 6034 600A 6017 6033 601A 601E 602C 6022 - 600D 6010 602E 6013 6011 600C 6009 601C - 6214 623D 62AD 62B4 62D1 62BE 62AA 62B6 - 62CA 62AE 62B3 62AF 62BB 62A9 62B0 62B8 - 653D 65A8 65BB 6609 65FC 6604 6612 6608 - 65FB 6603 660B 660D 6605 65FD 6611 6610 - 66F6 670A 6785 676C 678E 6792 6776 677B - 6798 6786 6784 6774 678D 678C 677A 679F - 6791 6799 6783 677D 6781 6778 6779 6794 - 6B25 6B80 6B7E 6BDE 6C1D 6C93 6CEC 6CEB - 6CEE 6CD9 6CB6 6CD4 6CAD 6CE7 6CB7 6CD0 - 6CC2 6CBA 6CC3 6CC6 6CED 6CF2 -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = CD40 - srcEnd = CD7E - mappingOffset = 1885 - Mapping = - 6CD2 6CDD 6CB4 6C8A 6C9D 6C80 6CDE 6CC0 - 6D30 6CCD 6CC7 6CB0 6CF9 6CCF 6CE9 6CD1 - 7094 7098 7085 7093 7086 7084 7091 7096 - 7082 709A 7083 726A 72D6 72CB 72D8 72C9 - 72DC 72D2 72D4 72DA 72CC 72D1 73A4 73A1 - 73AD 73A6 73A2 73A0 73AC 739D 74DD 74E8 - 753F 7540 753E 758C 7598 76AF 76F3 76F1 - 76F0 76F5 77F8 77FC 77F9 77FB 77FA -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = CDA1 - srcEnd = CDFE - mappingOffset = 18C4 - Mapping = - 77F7 7942 793F 79C5 7A78 7A7B 7AFB 7C75 - 7CFD 8035 808F 80AE 80A3 80B8 80B5 80AD - 8220 82A0 82C0 82AB 829A 8298 829B 82B5 - 82A7 82AE 82BC 829E 82BA 82B4 82A8 82A1 - 82A9 82C2 82A4 82C3 82B6 82A2 8670 866F - 866D 866E 8C56 8FD2 8FCB 8FD3 8FCD 8FD6 - 8FD5 8FD7 90B2 90B4 90AF 90B3 90B0 9639 - 963D 963C 963A 9643 4FCD 4FC5 4FD3 4FB2 - 4FC9 4FCB 4FC1 4FD4 4FDC 4FD9 4FBB 4FB3 - 4FDB 4FC7 4FD6 4FBA 4FC0 4FB9 4FEC 5244 - 5249 52C0 52C2 533D 537C 5397 5396 5399 - 5398 54BA 54A1 54AD 54A5 54CF -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = CE40 - srcEnd = CE7E - mappingOffset = 1922 - Mapping = - 54C3 830D 54B7 54AE 54D6 54B6 54C5 54C6 - 54A0 5470 54BC 54A2 54BE 5472 54DE 54B0 - 57B5 579E 579F 57A4 578C 5797 579D 579B - 5794 5798 578F 5799 57A5 579A 5795 58F4 - 590D 5953 59E1 59DE 59EE 5A00 59F1 59DD - 59FA 59FD 59FC 59F6 59E4 59F2 59F7 59DB - 59E9 59F3 59F5 59E0 59FE 59F4 59ED 5BA8 - 5C4C 5CD0 5CD8 5CCC 5CD7 5CCB 5CDB -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = CEA1 - srcEnd = CEFE - mappingOffset = 1961 - Mapping = - 5CDE 5CDA 5CC9 5CC7 5CCA 5CD6 5CD3 5CD4 - 5CCF 5CC8 5CC6 5CCE 5CDF 5CF8 5DF9 5E21 - 5E22 5E23 5E20 5E24 5EB0 5EA4 5EA2 5E9B - 5EA3 5EA5 5F07 5F2E 5F56 5F86 6037 6039 - 6054 6072 605E 6045 6053 6047 6049 605B - 604C 6040 6042 605F 6024 6044 6058 6066 - 606E 6242 6243 62CF 630D 630B 62F5 630E - 6303 62EB 62F9 630F 630C 62F8 62F6 6300 - 6313 6314 62FA 6315 62FB 62F0 6541 6543 - 65AA 65BF 6636 6621 6632 6635 661C 6626 - 6622 6633 662B 663A 661D 6634 6639 662E - 670F 6710 67C1 67F2 67C8 67BA -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = CF40 - srcEnd = CF7E - mappingOffset = 19BF - Mapping = - 67DC 67BB 67F8 67D8 67C0 67B7 67C5 67EB - 67E4 67DF 67B5 67CD 67B3 67F7 67F6 67EE - 67E3 67C2 67B9 67CE 67E7 67F0 67B2 67FC - 67C6 67ED 67CC 67AE 67E6 67DB 67FA 67C9 - 67CA 67C3 67EA 67CB 6B28 6B82 6B84 6BB6 - 6BD6 6BD8 6BE0 6C20 6C21 6D28 6D34 6D2D - 6D1F 6D3C 6D3F 6D12 6D0A 6CDA 6D33 6D04 - 6D19 6D3A 6D1A 6D11 6D00 6D1D 6D42 -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = CFA1 - srcEnd = CFFE - mappingOffset = 19FE - Mapping = - 6D01 6D18 6D37 6D03 6D0F 6D40 6D07 6D20 - 6D2C 6D08 6D22 6D09 6D10 70B7 709F 70BE - 70B1 70B0 70A1 70B4 70B5 70A9 7241 7249 - 724A 726C 7270 7273 726E 72CA 72E4 72E8 - 72EB 72DF 72EA 72E6 72E3 7385 73CC 73C2 - 73C8 73C5 73B9 73B6 73B5 73B4 73EB 73BF - 73C7 73BE 73C3 73C6 73B8 73CB 74EC 74EE - 752E 7547 7548 75A7 75AA 7679 76C4 7708 - 7703 7704 7705 770A 76F7 76FB 76FA 77E7 - 77E8 7806 7811 7812 7805 7810 780F 780E - 7809 7803 7813 794A 794C 794B 7945 7944 - 79D5 79CD 79CF 79D6 79CE 7A80 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = D040 - srcEnd = D07E - mappingOffset = 1A5C - Mapping = - 7A7E 7AD1 7B00 7B01 7C7A 7C78 7C79 7C7F - 7C80 7C81 7D03 7D08 7D01 7F58 7F91 7F8D - 7FBE 8007 800E 800F 8014 8037 80D8 80C7 - 80E0 80D1 80C8 80C2 80D0 80C5 80E3 80D9 - 80DC 80CA 80D5 80C9 80CF 80D7 80E6 80CD - 81FF 8221 8294 82D9 82FE 82F9 8307 82E8 - 8300 82D5 833A 82EB 82D6 82F4 82EC 82E1 - 82F2 82F5 830C 82FB 82F6 82F0 82EA -End of Item 0072 - -Begin of Item 0073 - Format 1 - srcBegin = D0A1 - srcEnd = D0FE - mappingOffset = 1A9B - Mapping = - 82E4 82E0 82FA 82F3 82ED 8677 8674 867C - 8673 8841 884E 8867 886A 8869 89D3 8A04 - 8A07 8D72 8FE3 8FE1 8FEE 8FE0 90F1 90BD - 90BF 90D5 90C5 90BE 90C7 90CB 90C8 91D4 - 91D3 9654 964F 9651 9653 964A 964E 501E - 5005 5007 5013 5022 5030 501B 4FF5 4FF4 - 5033 5037 502C 4FF6 4FF7 5017 501C 5020 - 5027 5035 502F 5031 500E 515A 5194 5193 - 51CA 51C4 51C5 51C8 51CE 5261 525A 5252 - 525E 525F 5255 5262 52CD 530E 539E 5526 - 54E2 5517 5512 54E7 54F3 54E4 551A 54FF - 5504 5508 54EB 5511 5505 54F1 -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = D140 - srcEnd = D17E - mappingOffset = 1AF9 - Mapping = - 550A 54FB 54F7 54F8 54E0 550E 5503 550B - 5701 5702 57CC 5832 57D5 57D2 57BA 57C6 - 57BD 57BC 57B8 57B6 57BF 57C7 57D0 57B9 - 57C1 590E 594A 5A19 5A16 5A2D 5A2E 5A15 - 5A0F 5A17 5A0A 5A1E 5A33 5B6C 5BA7 5BAD - 5BAC 5C03 5C56 5C54 5CEC 5CFF 5CEE 5CF1 - 5CF7 5D00 5CF9 5E29 5E28 5EA8 5EAE 5EAA - 5EAC 5F33 5F30 5F67 605D 605A 6067 -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = D1A1 - srcEnd = D1FE - mappingOffset = 1B38 - Mapping = - 6041 60A2 6088 6080 6092 6081 609D 6083 - 6095 609B 6097 6087 609C 608E 6219 6246 - 62F2 6310 6356 632C 6344 6345 6336 6343 - 63E4 6339 634B 634A 633C 6329 6341 6334 - 6358 6354 6359 632D 6347 6333 635A 6351 - 6338 6357 6340 6348 654A 6546 65C6 65C3 - 65C4 65C2 664A 665F 6647 6651 6712 6713 - 681F 681A 6849 6832 6833 683B 684B 684F - 6816 6831 681C 6835 682B 682D 682F 684E - 6844 6834 681D 6812 6814 6826 6828 682E - 684D 683A 6825 6820 6B2C 6B2F 6B2D 6B31 - 6B34 6B6D 8082 6B88 6BE6 6BE4 -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = D240 - srcEnd = D27E - mappingOffset = 1B96 - Mapping = - 6BE8 6BE3 6BE2 6BE7 6C25 6D7A 6D63 6D64 - 6D76 6D0D 6D61 6D92 6D58 6D62 6D6D 6D6F - 6D91 6D8D 6DEF 6D7F 6D86 6D5E 6D67 6D60 - 6D97 6D70 6D7C 6D5F 6D82 6D98 6D2F 6D68 - 6D8B 6D7E 6D80 6D84 6D16 6D83 6D7B 6D7D - 6D75 6D90 70DC 70D3 70D1 70DD 70CB 7F39 - 70E2 70D7 70D2 70DE 70E0 70D4 70CD 70C5 - 70C6 70C7 70DA 70CE 70E1 7242 7278 -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = D2A1 - srcEnd = D2FE - mappingOffset = 1BD5 - Mapping = - 7277 7276 7300 72FA 72F4 72FE 72F6 72F3 - 72FB 7301 73D3 73D9 73E5 73D6 73BC 73E7 - 73E3 73E9 73DC 73D2 73DB 73D4 73DD 73DA - 73D7 73D8 73E8 74DE 74DF 74F4 74F5 7521 - 755B 755F 75B0 75C1 75BB 75C4 75C0 75BF - 75B6 75BA 768A 76C9 771D 771B 7710 7713 - 7712 7723 7711 7715 7719 771A 7722 7727 - 7823 782C 7822 7835 782F 7828 782E 782B - 7821 7829 7833 782A 7831 7954 795B 794F - 795C 7953 7952 7951 79EB 79EC 79E0 79EE - 79ED 79EA 79DC 79DE 79DD 7A86 7A89 7A85 - 7A8B 7A8C 7A8A 7A87 7AD8 7B10 -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = D340 - srcEnd = D37E - mappingOffset = 1C33 - Mapping = - 7B04 7B13 7B05 7B0F 7B08 7B0A 7B0E 7B09 - 7B12 7C84 7C91 7C8A 7C8C 7C88 7C8D 7C85 - 7D1E 7D1D 7D11 7D0E 7D18 7D16 7D13 7D1F - 7D12 7D0F 7D0C 7F5C 7F61 7F5E 7F60 7F5D - 7F5B 7F96 7F92 7FC3 7FC2 7FC0 8016 803E - 8039 80FA 80F2 80F9 80F5 8101 80FB 8100 - 8201 822F 8225 8333 832D 8344 8319 8351 - 8325 8356 833F 8341 8326 831C 8322 -End of Item 0078 - -Begin of Item 0079 - Format 1 - srcBegin = D3A1 - srcEnd = D3FE - mappingOffset = 1C72 - Mapping = - 8342 834E 831B 832A 8308 833C 834D 8316 - 8324 8320 8337 832F 8329 8347 8345 834C - 8353 831E 832C 834B 8327 8348 8653 8652 - 86A2 86A8 8696 868D 8691 869E 8687 8697 - 8686 868B 869A 8685 86A5 8699 86A1 86A7 - 8695 8698 868E 869D 8690 8694 8843 8844 - 886D 8875 8876 8872 8880 8871 887F 886F - 8883 887E 8874 887C 8A12 8C47 8C57 8C7B - 8CA4 8CA3 8D76 8D78 8DB5 8DB7 8DB6 8ED1 - 8ED3 8FFE 8FF5 9002 8FFF 8FFB 9004 8FFC - 8FF6 90D6 90E0 90D9 90DA 90E3 90DF 90E5 - 90D8 90DB 90D7 90DC 90E4 9150 -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = D440 - srcEnd = D47E - mappingOffset = 1CD0 - Mapping = - 914E 914F 91D5 91E2 91DA 965C 965F 96BC - 98E3 9ADF 9B2F 4E7F 5070 506A 5061 505E - 5060 5053 504B 505D 5072 5048 504D 5041 - 505B 504A 5062 5015 5045 505F 5069 506B - 5063 5064 5046 5040 506E 5073 5057 5051 - 51D0 526B 526D 526C 526E 52D6 52D3 532D - 539C 5575 5576 553C 554D 5550 5534 552A - 5551 5562 5536 5535 5530 5552 5545 -End of Item 007A - -Begin of Item 007B - Format 1 - srcBegin = D4A1 - srcEnd = D4FE - mappingOffset = 1D0F - Mapping = - 550C 5532 5565 554E 5539 5548 552D 553B - 5540 554B 570A 5707 57FB 5814 57E2 57F6 - 57DC 57F4 5800 57ED 57FD 5808 57F8 580B - 57F3 57CF 5807 57EE 57E3 57F2 57E5 57EC - 57E1 580E 57FC 5810 57E7 5801 580C 57F1 - 57E9 57F0 580D 5804 595C 5A60 5A58 5A55 - 5A67 5A5E 5A38 5A35 5A6D 5A50 5A5F 5A65 - 5A6C 5A53 5A64 5A57 5A43 5A5D 5A52 5A44 - 5A5B 5A48 5A8E 5A3E 5A4D 5A39 5A4C 5A70 - 5A69 5A47 5A51 5A56 5A42 5A5C 5B72 5B6E - 5BC1 5BC0 5C59 5D1E 5D0B 5D1D 5D1A 5D20 - 5D0C 5D28 5D0D 5D26 5D25 5D0F -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = D540 - srcEnd = D57E - mappingOffset = 1D6D - Mapping = - 5D30 5D12 5D23 5D1F 5D2E 5E3E 5E34 5EB1 - 5EB4 5EB9 5EB2 5EB3 5F36 5F38 5F9B 5F96 - 5F9F 608A 6090 6086 60BE 60B0 60BA 60D3 - 60D4 60CF 60E4 60D9 60DD 60C8 60B1 60DB - 60B7 60CA 60BF 60C3 60CD 60C0 6332 6365 - 638A 6382 637D 63BD 639E 63AD 639D 6397 - 63AB 638E 636F 6387 6390 636E 63AF 6375 - 639C 636D 63AE 637C 63A4 633B 639F -End of Item 007C - -Begin of Item 007D - Format 1 - srcBegin = D5A1 - srcEnd = D5FE - mappingOffset = 1DAC - Mapping = - 6378 6385 6381 6391 638D 6370 6553 65CD - 6665 6661 665B 6659 665C 6662 6718 6879 - 6887 6890 689C 686D 686E 68AE 68AB 6956 - 686F 68A3 68AC 68A9 6875 6874 68B2 688F - 6877 6892 687C 686B 6872 68AA 6880 6871 - 687E 689B 6896 688B 68A0 6889 68A4 6878 - 687B 6891 688C 688A 687D 6B36 6B33 6B37 - 6B38 6B91 6B8F 6B8D 6B8E 6B8C 6C2A 6DC0 - 6DAB 6DB4 6DB3 6E74 6DAC 6DE9 6DE2 6DB7 - 6DF6 6DD4 6E00 6DC8 6DE0 6DDF 6DD6 6DBE - 6DE5 6DDC 6DDD 6DDB 6DF4 6DCA 6DBD 6DED - 6DF0 6DBA 6DD5 6DC2 6DCF 6DC9 -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = D640 - srcEnd = D67E - mappingOffset = 1E0A - Mapping = - 6DD0 6DF2 6DD3 6DFD 6DD7 6DCD 6DE3 6DBB - 70FA 710D 70F7 7117 70F4 710C 70F0 7104 - 70F3 7110 70FC 70FF 7106 7113 7100 70F8 - 70F6 710B 7102 710E 727E 727B 727C 727F - 731D 7317 7307 7311 7318 730A 7308 72FF - 730F 731E 7388 73F6 73F8 73F5 7404 7401 - 73FD 7407 7400 73FA 73FC 73FF 740C 740B - 73F4 7408 7564 7563 75CE 75D2 75CF -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = D6A1 - srcEnd = D6FE - mappingOffset = 1E49 - Mapping = - 75CB 75CC 75D1 75D0 768F 7689 76D3 7739 - 772F 772D 7731 7732 7734 7733 773D 7725 - 773B 7735 7848 7852 7849 784D 784A 784C - 7826 7845 7850 7964 7967 7969 796A 7963 - 796B 7961 79BB 79FA 79F8 79F6 79F7 7A8F - 7A94 7A90 7B35 7B47 7B34 7B25 7B30 7B22 - 7B24 7B33 7B18 7B2A 7B1D 7B31 7B2B 7B2D - 7B2F 7B32 7B38 7B1A 7B23 7C94 7C98 7C96 - 7CA3 7D35 7D3D 7D38 7D36 7D3A 7D45 7D2C - 7D29 7D41 7D47 7D3E 7D3F 7D4A 7D3B 7D28 - 7F63 7F95 7F9C 7F9D 7F9B 7FCA 7FCB 7FCD - 7FD0 7FD1 7FC7 7FCF 7FC9 801F -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = D740 - srcEnd = D77E - mappingOffset = 1EA7 - Mapping = - 801E 801B 8047 8043 8048 8118 8125 8119 - 811B 812D 811F 812C 811E 8121 8115 8127 - 811D 8122 8211 8238 8233 823A 8234 8232 - 8274 8390 83A3 83A8 838D 837A 8373 83A4 - 8374 838F 8381 8395 8399 8375 8394 83A9 - 837D 8383 838C 839D 839B 83AA 838B 837E - 83A5 83AF 8388 8397 83B0 837F 83A6 8387 - 83AE 8376 839A 8659 8656 86BF 86B7 -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = D7A1 - srcEnd = D7FE - mappingOffset = 1EE6 - Mapping = - 86C2 86C1 86C5 86BA 86B0 86C8 86B9 86B3 - 86B8 86CC 86B4 86BB 86BC 86C3 86BD 86BE - 8852 8889 8895 88A8 88A2 88AA 889A 8891 - 88A1 889F 8898 88A7 8899 889B 8897 88A4 - 88AC 888C 8893 888E 8982 89D6 89D9 89D5 - 8A30 8A27 8A2C 8A1E 8C39 8C3B 8C5C 8C5D - 8C7D 8CA5 8D7D 8D7B 8D79 8DBC 8DC2 8DB9 - 8DBF 8DC1 8ED8 8EDE 8EDD 8EDC 8ED7 8EE0 - 8EE1 9024 900B 9011 901C 900C 9021 90EF - 90EA 90F0 90F4 90F2 90F3 90D4 90EB 90EC - 90E9 9156 9158 915A 9153 9155 91EC 91F4 - 91F1 91F3 91F8 91E4 91F9 91EA -End of Item 0081 - -Begin of Item 0082 - Format 1 - srcBegin = D840 - srcEnd = D87E - mappingOffset = 1F44 - Mapping = - 91EB 91F7 91E8 91EE 957A 9586 9588 967C - 966D 966B 9671 966F 96BF 976A 9804 98E5 - 9997 509B 5095 5094 509E 508B 50A3 5083 - 508C 508E 509D 5068 509C 5092 5082 5087 - 515F 51D4 5312 5311 53A4 53A7 5591 55A8 - 55A5 55AD 5577 5645 55A2 5593 5588 558F - 55B5 5581 55A3 5592 55A4 557D 558C 55A6 - 557F 5595 55A1 558E 570C 5829 5837 -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = D8A1 - srcEnd = D8FE - mappingOffset = 1F83 - Mapping = - 5819 581E 5827 5823 5828 57F5 5848 5825 - 581C 581B 5833 583F 5836 582E 5839 5838 - 582D 582C 583B 5961 5AAF 5A94 5A9F 5A7A - 5AA2 5A9E 5A78 5AA6 5A7C 5AA5 5AAC 5A95 - 5AAE 5A37 5A84 5A8A 5A97 5A83 5A8B 5AA9 - 5A7B 5A7D 5A8C 5A9C 5A8F 5A93 5A9D 5BEA - 5BCD 5BCB 5BD4 5BD1 5BCA 5BCE 5C0C 5C30 - 5D37 5D43 5D6B 5D41 5D4B 5D3F 5D35 5D51 - 5D4E 5D55 5D33 5D3A 5D52 5D3D 5D31 5D59 - 5D42 5D39 5D49 5D38 5D3C 5D32 5D36 5D40 - 5D45 5E44 5E41 5F58 5FA6 5FA5 5FAB 60C9 - 60B9 60CC 60E2 60CE 60C4 6114 -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = D940 - srcEnd = D97E - mappingOffset = 1FE1 - Mapping = - 60F2 610A 6116 6105 60F5 6113 60F8 60FC - 60FE 60C1 6103 6118 611D 6110 60FF 6104 - 610B 624A 6394 63B1 63B0 63CE 63E5 63E8 - 63EF 63C3 649D 63F3 63CA 63E0 63F6 63D5 - 63F2 63F5 6461 63DF 63BE 63DD 63DC 63C4 - 63D8 63D3 63C2 63C7 63CC 63CB 63C8 63F0 - 63D7 63D9 6532 6567 656A 6564 655C 6568 - 6565 658C 659D 659E 65AE 65D0 65D2 -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = D9A1 - srcEnd = D9FE - mappingOffset = 2020 - Mapping = - 667C 666C 667B 6680 6671 6679 666A 6672 - 6701 690C 68D3 6904 68DC 692A 68EC 68EA - 68F1 690F 68D6 68F7 68EB 68E4 68F6 6913 - 6910 68F3 68E1 6907 68CC 6908 6970 68B4 - 6911 68EF 68C6 6914 68F8 68D0 68FD 68FC - 68E8 690B 690A 6917 68CE 68C8 68DD 68DE - 68E6 68F4 68D1 6906 68D4 68E9 6915 6925 - 68C7 6B39 6B3B 6B3F 6B3C 6B94 6B97 6B99 - 6B95 6BBD 6BF0 6BF2 6BF3 6C30 6DFC 6E46 - 6E47 6E1F 6E49 6E88 6E3C 6E3D 6E45 6E62 - 6E2B 6E3F 6E41 6E5D 6E73 6E1C 6E33 6E4B - 6E40 6E51 6E3B 6E03 6E2E 6E5E -End of Item 0085 - -Begin of Item 0086 - Format 1 - srcBegin = DA40 - srcEnd = DA7E - mappingOffset = 207E - Mapping = - 6E68 6E5C 6E61 6E31 6E28 6E60 6E71 6E6B - 6E39 6E22 6E30 6E53 6E65 6E27 6E78 6E64 - 6E77 6E55 6E79 6E52 6E66 6E35 6E36 6E5A - 7120 711E 712F 70FB 712E 7131 7123 7125 - 7122 7132 711F 7128 713A 711B 724B 725A - 7288 7289 7286 7285 728B 7312 730B 7330 - 7322 7331 7333 7327 7332 732D 7326 7323 - 7335 730C 742E 742C 7430 742B 7416 -End of Item 0086 - -Begin of Item 0087 - Format 1 - srcBegin = DAA1 - srcEnd = DAFE - mappingOffset = 20BD - Mapping = - 741A 7421 742D 7431 7424 7423 741D 7429 - 7420 7432 74FB 752F 756F 756C 75E7 75DA - 75E1 75E6 75DD 75DF 75E4 75D7 7695 7692 - 76DA 7746 7747 7744 774D 7745 774A 774E - 774B 774C 77DE 77EC 7860 7864 7865 785C - 786D 7871 786A 786E 7870 7869 7868 785E - 7862 7974 7973 7972 7970 7A02 7A0A 7A03 - 7A0C 7A04 7A99 7AE6 7AE4 7B4A 7B3B 7B44 - 7B48 7B4C 7B4E 7B40 7B58 7B45 7CA2 7C9E - 7CA8 7CA1 7D58 7D6F 7D63 7D53 7D56 7D67 - 7D6A 7D4F 7D6D 7D5C 7D6B 7D52 7D54 7D69 - 7D51 7D5F 7D4E 7F3E 7F3F 7F65 -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = DB40 - srcEnd = DB7E - mappingOffset = 211B - Mapping = - 7F66 7FA2 7FA0 7FA1 7FD7 8051 804F 8050 - 80FE 80D4 8143 814A 8152 814F 8147 813D - 814D 813A 81E6 81EE 81F7 81F8 81F9 8204 - 823C 823D 823F 8275 833B 83CF 83F9 8423 - 83C0 83E8 8412 83E7 83E4 83FC 83F6 8410 - 83C6 83C8 83EB 83E3 83BF 8401 83DD 83E5 - 83D8 83FF 83E1 83CB 83CE 83D6 83F5 83C9 - 8409 840F 83DE 8411 8406 83C2 83F3 -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = DBA1 - srcEnd = DBFE - mappingOffset = 215A - Mapping = - 83D5 83FA 83C7 83D1 83EA 8413 83C3 83EC - 83EE 83C4 83FB 83D7 83E2 841B 83DB 83FE - 86D8 86E2 86E6 86D3 86E3 86DA 86EA 86DD - 86EB 86DC 86EC 86E9 86D7 86E8 86D1 8848 - 8856 8855 88BA 88D7 88B9 88B8 88C0 88BE - 88B6 88BC 88B7 88BD 88B2 8901 88C9 8995 - 8998 8997 89DD 89DA 89DB 8A4E 8A4D 8A39 - 8A59 8A40 8A57 8A58 8A44 8A45 8A52 8A48 - 8A51 8A4A 8A4C 8A4F 8C5F 8C81 8C80 8CBA - 8CBE 8CB0 8CB9 8CB5 8D84 8D80 8D89 8DD8 - 8DD3 8DCD 8DC7 8DD6 8DDC 8DCF 8DD5 8DD9 - 8DC8 8DD7 8DC5 8EEF 8EF7 8EFA -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = DC40 - srcEnd = DC7E - mappingOffset = 21B8 - Mapping = - 8EF9 8EE6 8EEE 8EE5 8EF5 8EE7 8EE8 8EF6 - 8EEB 8EF1 8EEC 8EF4 8EE9 902D 9034 902F - 9106 912C 9104 90FF 90FC 9108 90F9 90FB - 9101 9100 9107 9105 9103 9161 9164 915F - 9162 9160 9201 920A 9225 9203 921A 9226 - 920F 920C 9200 9212 91FF 91FD 9206 9204 - 9227 9202 921C 9224 9219 9217 9205 9216 - 957B 958D 958C 9590 9687 967E 9688 -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = DCA1 - srcEnd = DCFE - mappingOffset = 21F7 - Mapping = - 9689 9683 9680 96C2 96C8 96C3 96F1 96F0 - 976C 9770 976E 9807 98A9 98EB 9CE6 9EF9 - 4E83 4E84 4EB6 50BD 50BF 50C6 50AE 50C4 - 50CA 50B4 50C8 50C2 50B0 50C1 50BA 50B1 - 50CB 50C9 50B6 50B8 51D7 527A 5278 527B - 527C 55C3 55DB 55CC 55D0 55CB 55CA 55DD - 55C0 55D4 55C4 55E9 55BF 55D2 558D 55CF - 55D5 55E2 55D6 55C8 55F2 55CD 55D9 55C2 - 5714 5853 5868 5864 584F 584D 5849 586F - 5855 584E 585D 5859 5865 585B 583D 5863 - 5871 58FC 5AC7 5AC4 5ACB 5ABA 5AB8 5AB1 - 5AB5 5AB0 5ABF 5AC8 5ABB 5AC6 -End of Item 008B - -Begin of Item 008C - Format 1 - srcBegin = DD40 - srcEnd = DD7E - mappingOffset = 2255 - Mapping = - 5AB7 5AC0 5ACA 5AB4 5AB6 5ACD 5AB9 5A90 - 5BD6 5BD8 5BD9 5C1F 5C33 5D71 5D63 5D4A - 5D65 5D72 5D6C 5D5E 5D68 5D67 5D62 5DF0 - 5E4F 5E4E 5E4A 5E4D 5E4B 5EC5 5ECC 5EC6 - 5ECB 5EC7 5F40 5FAF 5FAD 60F7 6149 614A - 612B 6145 6136 6132 612E 6146 612F 614F - 6129 6140 6220 9168 6223 6225 6224 63C5 - 63F1 63EB 6410 6412 6409 6420 6424 -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = DDA1 - srcEnd = DDFE - mappingOffset = 2294 - Mapping = - 6433 6443 641F 6415 6418 6439 6437 6422 - 6423 640C 6426 6430 6428 6441 6435 642F - 640A 641A 6440 6425 6427 640B 63E7 641B - 642E 6421 640E 656F 6592 65D3 6686 668C - 6695 6690 668B 668A 6699 6694 6678 6720 - 6966 695F 6938 694E 6962 6971 693F 6945 - 696A 6939 6942 6957 6959 697A 6948 6949 - 6935 696C 6933 693D 6965 68F0 6978 6934 - 6969 6940 696F 6944 6976 6958 6941 6974 - 694C 693B 694B 6937 695C 694F 6951 6932 - 6952 692F 697B 693C 6B46 6B45 6B43 6B42 - 6B48 6B41 6B9B FA0D 6BFB 6BFC -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = DE40 - srcEnd = DE7E - mappingOffset = 22F2 - Mapping = - 6BF9 6BF7 6BF8 6E9B 6ED6 6EC8 6E8F 6EC0 - 6E9F 6E93 6E94 6EA0 6EB1 6EB9 6EC6 6ED2 - 6EBD 6EC1 6E9E 6EC9 6EB7 6EB0 6ECD 6EA6 - 6ECF 6EB2 6EBE 6EC3 6EDC 6ED8 6E99 6E92 - 6E8E 6E8D 6EA4 6EA1 6EBF 6EB3 6ED0 6ECA - 6E97 6EAE 6EA3 7147 7154 7152 7163 7160 - 7141 715D 7162 7172 7178 716A 7161 7142 - 7158 7143 714B 7170 715F 7150 7153 -End of Item 008E - -Begin of Item 008F - Format 1 - srcBegin = DEA1 - srcEnd = DEFE - mappingOffset = 2331 - Mapping = - 7144 714D 715A 724F 728D 728C 7291 7290 - 728E 733C 7342 733B 733A 7340 734A 7349 - 7444 744A 744B 7452 7451 7457 7440 744F - 7450 744E 7442 7446 744D 7454 74E1 74FF - 74FE 74FD 751D 7579 7577 6983 75EF 760F - 7603 75F7 75FE 75FC 75F9 75F8 7610 75FB - 75F6 75ED 75F5 75FD 7699 76B5 76DD 7755 - 775F 7760 7752 7756 775A 7769 7767 7754 - 7759 776D 77E0 7887 789A 7894 788F 7884 - 7895 7885 7886 78A1 7883 7879 7899 7880 - 7896 787B 797C 7982 797D 7979 7A11 7A18 - 7A19 7A12 7A17 7A15 7A22 7A13 -End of Item 008F - -Begin of Item 0090 - Format 1 - srcBegin = DF40 - srcEnd = DF7E - mappingOffset = 238F - Mapping = - 7A1B 7A10 7AA3 7AA2 7A9E 7AEB 7B66 7B64 - 7B6D 7B74 7B69 7B72 7B65 7B73 7B71 7B70 - 7B61 7B78 7B76 7B63 7CB2 7CB4 7CAF 7D88 - 7D86 7D80 7D8D 7D7F 7D85 7D7A 7D8E 7D7B - 7D83 7D7C 7D8C 7D94 7D84 7D7D 7D92 7F6D - 7F6B 7F67 7F68 7F6C 7FA6 7FA5 7FA7 7FDB - 7FDC 8021 8164 8160 8177 815C 8169 815B - 8162 8172 6721 815E 8176 8167 816F -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = DFA1 - srcEnd = DFFE - mappingOffset = 23CE - Mapping = - 8144 8161 821D 8249 8244 8240 8242 8245 - 84F1 843F 8456 8476 8479 848F 848D 8465 - 8451 8440 8486 8467 8430 844D 847D 845A - 8459 8474 8473 845D 8507 845E 8437 843A - 8434 847A 8443 8478 8432 8445 8429 83D9 - 844B 842F 8442 842D 845F 8470 8439 844E - 844C 8452 846F 84C5 848E 843B 8447 8436 - 8433 8468 847E 8444 842B 8460 8454 846E - 8450 870B 8704 86F7 870C 86FA 86D6 86F5 - 874D 86F8 870E 8709 8701 86F6 870D 8705 - 88D6 88CB 88CD 88CE 88DE 88DB 88DA 88CC - 88D0 8985 899B 89DF 89E5 89E4 -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = E040 - srcEnd = E07E - mappingOffset = 242C - Mapping = - 89E1 89E0 89E2 89DC 89E6 8A76 8A86 8A7F - 8A61 8A3F 8A77 8A82 8A84 8A75 8A83 8A81 - 8A74 8A7A 8C3C 8C4B 8C4A 8C65 8C64 8C66 - 8C86 8C84 8C85 8CCC 8D68 8D69 8D91 8D8C - 8D8E 8D8F 8D8D 8D93 8D94 8D90 8D92 8DF0 - 8DE0 8DEC 8DF1 8DEE 8DD0 8DE9 8DE3 8DE2 - 8DE7 8DF2 8DEB 8DF4 8F06 8EFF 8F01 8F00 - 8F05 8F07 8F08 8F02 8F0B 9052 903F -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = E0A1 - srcEnd = E0FE - mappingOffset = 246B - Mapping = - 9044 9049 903D 9110 910D 910F 9111 9116 - 9114 910B 910E 916E 916F 9248 9252 9230 - 923A 9266 9233 9265 925E 9283 922E 924A - 9246 926D 926C 924F 9260 9267 926F 9236 - 9261 9270 9231 9254 9263 9250 9272 924E - 9253 924C 9256 9232 959F 959C 959E 959B - 9692 9693 9691 9697 96CE 96FA 96FD 96F8 - 96F5 9773 9777 9778 9772 980F 980D 980E - 98AC 98F6 98F9 99AF 99B2 99B0 99B5 9AAD - 9AAB 9B5B 9CEA 9CED 9CE7 9E80 9EFD 50E6 - 50D4 50D7 50E8 50F3 50DB 50EA 50DD 50E4 - 50D3 50EC 50F0 50EF 50E3 50E0 -End of Item 0093 - -Begin of Item 0094 - Format 1 - srcBegin = E140 - srcEnd = E17E - mappingOffset = 24C9 - Mapping = - 51D8 5280 5281 52E9 52EB 5330 53AC 5627 - 5615 560C 5612 55FC 560F 561C 5601 5613 - 5602 55FA 561D 5604 55FF 55F9 5889 587C - 5890 5898 5886 5881 587F 5874 588B 587A - 5887 5891 588E 5876 5882 5888 587B 5894 - 588F 58FE 596B 5ADC 5AEE 5AE5 5AD5 5AEA - 5ADA 5AED 5AEB 5AF3 5AE2 5AE0 5ADB 5AEC - 5ADE 5ADD 5AD9 5AE8 5ADF 5B77 5BE0 -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = E1A1 - srcEnd = E1FE - mappingOffset = 2508 - Mapping = - 5BE3 5C63 5D82 5D80 5D7D 5D86 5D7A 5D81 - 5D77 5D8A 5D89 5D88 5D7E 5D7C 5D8D 5D79 - 5D7F 5E58 5E59 5E53 5ED8 5ED1 5ED7 5ECE - 5EDC 5ED5 5ED9 5ED2 5ED4 5F44 5F43 5F6F - 5FB6 612C 6128 6141 615E 6171 6173 6152 - 6153 6172 616C 6180 6174 6154 617A 615B - 6165 613B 616A 6161 6156 6229 6227 622B - 642B 644D 645B 645D 6474 6476 6472 6473 - 647D 6475 6466 64A6 644E 6482 645E 645C - 644B 6453 6460 6450 647F 643F 646C 646B - 6459 6465 6477 6573 65A0 66A1 66A0 669F - 6705 6704 6722 69B1 69B6 69C9 -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = E240 - srcEnd = E27E - mappingOffset = 2566 - Mapping = - 69A0 69CE 6996 69B0 69AC 69BC 6991 6999 - 698E 69A7 698D 69A9 69BE 69AF 69BF 69C4 - 69BD 69A4 69D4 69B9 69CA 699A 69CF 69B3 - 6993 69AA 69A1 699E 69D9 6997 6990 69C2 - 69B5 69A5 69C6 6B4A 6B4D 6B4B 6B9E 6B9F - 6BA0 6BC3 6BC4 6BFE 6ECE 6EF5 6EF1 6F03 - 6F25 6EF8 6F37 6EFB 6F2E 6F09 6F4E 6F19 - 6F1A 6F27 6F18 6F3B 6F12 6EED 6F0A -End of Item 0096 - -Begin of Item 0097 - Format 1 - srcBegin = E2A1 - srcEnd = E2FE - mappingOffset = 25A5 - Mapping = - 6F36 6F73 6EF9 6EEE 6F2D 6F40 6F30 6F3C - 6F35 6EEB 6F07 6F0E 6F43 6F05 6EFD 6EF6 - 6F39 6F1C 6EFC 6F3A 6F1F 6F0D 6F1E 6F08 - 6F21 7187 7190 7189 7180 7185 7182 718F - 717B 7186 7181 7197 7244 7253 7297 7295 - 7293 7343 734D 7351 734C 7462 7473 7471 - 7475 7472 7467 746E 7500 7502 7503 757D - 7590 7616 7608 760C 7615 7611 760A 7614 - 76B8 7781 777C 7785 7782 776E 7780 776F - 777E 7783 78B2 78AA 78B4 78AD 78A8 787E - 78AB 789E 78A5 78A0 78AC 78A2 78A4 7998 - 798A 798B 7996 7995 7994 7993 -End of Item 0097 - -Begin of Item 0098 - Format 1 - srcBegin = E340 - srcEnd = E37E - mappingOffset = 2603 - Mapping = - 7997 7988 7992 7990 7A2B 7A4A 7A30 7A2F - 7A28 7A26 7AA8 7AAB 7AAC 7AEE 7B88 7B9C - 7B8A 7B91 7B90 7B96 7B8D 7B8C 7B9B 7B8E - 7B85 7B98 5284 7B99 7BA4 7B82 7CBB 7CBF - 7CBC 7CBA 7DA7 7DB7 7DC2 7DA3 7DAA 7DC1 - 7DC0 7DC5 7D9D 7DCE 7DC4 7DC6 7DCB 7DCC - 7DAF 7DB9 7D96 7DBC 7D9F 7DA6 7DAE 7DA9 - 7DA1 7DC9 7F73 7FE2 7FE3 7FE5 7FDE -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = E3A1 - srcEnd = E3FE - mappingOffset = 2642 - Mapping = - 8024 805D 805C 8189 8186 8183 8187 818D - 818C 818B 8215 8497 84A4 84A1 849F 84BA - 84CE 84C2 84AC 84AE 84AB 84B9 84B4 84C1 - 84CD 84AA 849A 84B1 84D0 849D 84A7 84BB - 84A2 8494 84C7 84CC 849B 84A9 84AF 84A8 - 84D6 8498 84B6 84CF 84A0 84D7 84D4 84D2 - 84DB 84B0 8491 8661 8733 8723 8728 876B - 8740 872E 871E 8721 8719 871B 8743 872C - 8741 873E 8746 8720 8732 872A 872D 873C - 8712 873A 8731 8735 8742 8726 8727 8738 - 8724 871A 8730 8711 88F7 88E7 88F1 88F2 - 88FA 88FE 88EE 88FC 88F6 88FB -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = E440 - srcEnd = E47E - mappingOffset = 26A0 - Mapping = - 88F0 88EC 88EB 899D 89A1 899F 899E 89E9 - 89EB 89E8 8AAB 8A99 8A8B 8A92 8A8F 8A96 - 8C3D 8C68 8C69 8CD5 8CCF 8CD7 8D96 8E09 - 8E02 8DFF 8E0D 8DFD 8E0A 8E03 8E07 8E06 - 8E05 8DFE 8E00 8E04 8F10 8F11 8F0E 8F0D - 9123 911C 9120 9122 911F 911D 911A 9124 - 9121 911B 917A 9172 9179 9173 92A5 92A4 - 9276 929B 927A 92A0 9294 92AA 928D -End of Item 009A - -Begin of Item 009B - Format 1 - srcBegin = E4A1 - srcEnd = E4FE - mappingOffset = 26DF - Mapping = - 92A6 929A 92AB 9279 9297 927F 92A3 92EE - 928E 9282 9295 92A2 927D 9288 92A1 928A - 9286 928C 9299 92A7 927E 9287 92A9 929D - 928B 922D 969E 96A1 96FF 9758 977D 977A - 977E 9783 9780 9782 977B 9784 9781 977F - 97CE 97CD 9816 98AD 98AE 9902 9900 9907 - 999D 999C 99C3 99B9 99BB 99BA 99C2 99BD - 99C7 9AB1 9AE3 9AE7 9B3E 9B3F 9B60 9B61 - 9B5F 9CF1 9CF2 9CF5 9EA7 50FF 5103 5130 - 50F8 5106 5107 50F6 50FE 510B 510C 50FD - 510A 528B 528C 52F1 52EF 5648 5642 564C - 5635 5641 564A 5649 5646 5658 -End of Item 009B - -Begin of Item 009C - Format 1 - srcBegin = E540 - srcEnd = E57E - mappingOffset = 273D - Mapping = - 565A 5640 5633 563D 562C 563E 5638 562A - 563A 571A 58AB 589D 58B1 58A0 58A3 58AF - 58AC 58A5 58A1 58FF 5AFF 5AF4 5AFD 5AF7 - 5AF6 5B03 5AF8 5B02 5AF9 5B01 5B07 5B05 - 5B0F 5C67 5D99 5D97 5D9F 5D92 5DA2 5D93 - 5D95 5DA0 5D9C 5DA1 5D9A 5D9E 5E69 5E5D - 5E60 5E5C 7DF3 5EDB 5EDE 5EE1 5F49 5FB2 - 618B 6183 6179 61B1 61B0 61A2 6189 -End of Item 009C - -Begin of Item 009D - Format 1 - srcBegin = E5A1 - srcEnd = E5FE - mappingOffset = 277C - Mapping = - 619B 6193 61AF 61AD 619F 6192 61AA 61A1 - 618D 6166 61B3 622D 646E 6470 6496 64A0 - 6485 6497 649C 648F 648B 648A 648C 64A3 - 649F 6468 64B1 6498 6576 657A 6579 657B - 65B2 65B3 66B5 66B0 66A9 66B2 66B7 66AA - 66AF 6A00 6A06 6A17 69E5 69F8 6A15 69F1 - 69E4 6A20 69FF 69EC 69E2 6A1B 6A1D 69FE - 6A27 69F2 69EE 6A14 69F7 69E7 6A40 6A08 - 69E6 69FB 6A0D 69FC 69EB 6A09 6A04 6A18 - 6A25 6A0F 69F6 6A26 6A07 69F4 6A16 6B51 - 6BA5 6BA3 6BA2 6BA6 6C01 6C00 6BFF 6C02 - 6F41 6F26 6F7E 6F87 6FC6 6F92 -End of Item 009D - -Begin of Item 009E - Format 1 - srcBegin = E640 - srcEnd = E67E - mappingOffset = 27DA - Mapping = - 6F8D 6F89 6F8C 6F62 6F4F 6F85 6F5A 6F96 - 6F76 6F6C 6F82 6F55 6F72 6F52 6F50 6F57 - 6F94 6F93 6F5D 6F00 6F61 6F6B 6F7D 6F67 - 6F90 6F53 6F8B 6F69 6F7F 6F95 6F63 6F77 - 6F6A 6F7B 71B2 71AF 719B 71B0 71A0 719A - 71A9 71B5 719D 71A5 719E 71A4 71A1 71AA - 719C 71A7 71B3 7298 729A 7358 7352 735E - 735F 7360 735D 735B 7361 735A 7359 -End of Item 009E - -Begin of Item 009F - Format 1 - srcBegin = E6A1 - srcEnd = E6FE - mappingOffset = 2819 - Mapping = - 7362 7487 7489 748A 7486 7481 747D 7485 - 7488 747C 7479 7508 7507 757E 7625 761E - 7619 761D 761C 7623 761A 7628 761B 769C - 769D 769E 769B 778D 778F 7789 7788 78CD - 78BB 78CF 78CC 78D1 78CE 78D4 78C8 78C3 - 78C4 78C9 799A 79A1 79A0 799C 79A2 799B - 6B76 7A39 7AB2 7AB4 7AB3 7BB7 7BCB 7BBE - 7BAC 7BCE 7BAF 7BB9 7BCA 7BB5 7CC5 7CC8 - 7CCC 7CCB 7DF7 7DDB 7DEA 7DE7 7DD7 7DE1 - 7E03 7DFA 7DE6 7DF6 7DF1 7DF0 7DEE 7DDF - 7F76 7FAC 7FB0 7FAD 7FED 7FEB 7FEA 7FEC - 7FE6 7FE8 8064 8067 81A3 819F -End of Item 009F - -Begin of Item 00A0 - Format 1 - srcBegin = E740 - srcEnd = E77E - mappingOffset = 2877 - Mapping = - 819E 8195 81A2 8199 8197 8216 824F 8253 - 8252 8250 824E 8251 8524 853B 850F 8500 - 8529 850E 8509 850D 851F 850A 8527 851C - 84FB 852B 84FA 8508 850C 84F4 852A 84F2 - 8515 84F7 84EB 84F3 84FC 8512 84EA 84E9 - 8516 84FE 8528 851D 852E 8502 84FD 851E - 84F6 8531 8526 84E7 84E8 84F0 84EF 84F9 - 8518 8520 8530 850B 8519 852F 8662 -End of Item 00A0 - -Begin of Item 00A1 - Format 1 - srcBegin = E7A1 - srcEnd = E7FE - mappingOffset = 28B6 - Mapping = - 8756 8763 8764 8777 87E1 8773 8758 8754 - 875B 8752 8761 875A 8751 875E 876D 876A - 8750 874E 875F 875D 876F 876C 877A 876E - 875C 8765 874F 877B 8775 8762 8767 8769 - 885A 8905 890C 8914 890B 8917 8918 8919 - 8906 8916 8911 890E 8909 89A2 89A4 89A3 - 89ED 89F0 89EC 8ACF 8AC6 8AB8 8AD3 8AD1 - 8AD4 8AD5 8ABB 8AD7 8ABE 8AC0 8AC5 8AD8 - 8AC3 8ABA 8ABD 8AD9 8C3E 8C4D 8C8F 8CE5 - 8CDF 8CD9 8CE8 8CDA 8CDD 8CE7 8DA0 8D9C - 8DA1 8D9B 8E20 8E23 8E25 8E24 8E2E 8E15 - 8E1B 8E16 8E11 8E19 8E26 8E27 -End of Item 00A1 - -Begin of Item 00A2 - Format 1 - srcBegin = E840 - srcEnd = E87E - mappingOffset = 2914 - Mapping = - 8E14 8E12 8E18 8E13 8E1C 8E17 8E1A 8F2C - 8F24 8F18 8F1A 8F20 8F23 8F16 8F17 9073 - 9070 906F 9067 906B 912F 912B 9129 912A - 9132 9126 912E 9185 9186 918A 9181 9182 - 9184 9180 92D0 92C3 92C4 92C0 92D9 92B6 - 92CF 92F1 92DF 92D8 92E9 92D7 92DD 92CC - 92EF 92C2 92E8 92CA 92C8 92CE 92E6 92CD - 92D5 92C9 92E0 92DE 92E7 92D1 92D3 -End of Item 00A2 - -Begin of Item 00A3 - Format 1 - srcBegin = E8A1 - srcEnd = E8FE - mappingOffset = 2953 - Mapping = - 92B5 92E1 92C6 92B4 957C 95AC 95AB 95AE - 95B0 96A4 96A2 96D3 9705 9708 9702 975A - 978A 978E 9788 97D0 97CF 981E 981D 9826 - 9829 9828 9820 981B 9827 98B2 9908 98FA - 9911 9914 9916 9917 9915 99DC 99CD 99CF - 99D3 99D4 99CE 99C9 99D6 99D8 99CB 99D7 - 99CC 9AB3 9AEC 9AEB 9AF3 9AF2 9AF1 9B46 - 9B43 9B67 9B74 9B71 9B66 9B76 9B75 9B70 - 9B68 9B64 9B6C 9CFC 9CFA 9CFD 9CFF 9CF7 - 9D07 9D00 9CF9 9CFB 9D08 9D05 9D04 9E83 - 9ED3 9F0F 9F10 511C 5113 5117 511A 5111 - 51DE 5334 53E1 5670 5660 566E -End of Item 00A3 - -Begin of Item 00A4 - Format 1 - srcBegin = E940 - srcEnd = E97E - mappingOffset = 29B1 - Mapping = - 5673 5666 5663 566D 5672 565E 5677 571C - 571B 58C8 58BD 58C9 58BF 58BA 58C2 58BC - 58C6 5B17 5B19 5B1B 5B21 5B14 5B13 5B10 - 5B16 5B28 5B1A 5B20 5B1E 5BEF 5DAC 5DB1 - 5DA9 5DA7 5DB5 5DB0 5DAE 5DAA 5DA8 5DB2 - 5DAD 5DAF 5DB4 5E67 5E68 5E66 5E6F 5EE9 - 5EE7 5EE6 5EE8 5EE5 5F4B 5FBC 619D 61A8 - 6196 61C5 61B4 61C6 61C1 61CC 61BA -End of Item 00A4 - -Begin of Item 00A5 - Format 1 - srcBegin = E9A1 - srcEnd = E9FE - mappingOffset = 29F0 - Mapping = - 61BF 61B8 618C 64D7 64D6 64D0 64CF 64C9 - 64BD 6489 64C3 64DB 64F3 64D9 6533 657F - 657C 65A2 66C8 66BE 66C0 66CA 66CB 66CF - 66BD 66BB 66BA 66CC 6723 6A34 6A66 6A49 - 6A67 6A32 6A68 6A3E 6A5D 6A6D 6A76 6A5B - 6A51 6A28 6A5A 6A3B 6A3F 6A41 6A6A 6A64 - 6A50 6A4F 6A54 6A6F 6A69 6A60 6A3C 6A5E - 6A56 6A55 6A4D 6A4E 6A46 6B55 6B54 6B56 - 6BA7 6BAA 6BAB 6BC8 6BC7 6C04 6C03 6C06 - 6FAD 6FCB 6FA3 6FC7 6FBC 6FCE 6FC8 6F5E - 6FC4 6FBD 6F9E 6FCA 6FA8 7004 6FA5 6FAE - 6FBA 6FAC 6FAA 6FCF 6FBF 6FB8 -End of Item 00A5 - -Begin of Item 00A6 - Format 1 - srcBegin = EA40 - srcEnd = EA7E - mappingOffset = 2A4E - Mapping = - 6FA2 6FC9 6FAB 6FCD 6FAF 6FB2 6FB0 71C5 - 71C2 71BF 71B8 71D6 71C0 71C1 71CB 71D4 - 71CA 71C7 71CF 71BD 71D8 71BC 71C6 71DA - 71DB 729D 729E 7369 7366 7367 736C 7365 - 736B 736A 747F 749A 74A0 7494 7492 7495 - 74A1 750B 7580 762F 762D 7631 763D 7633 - 763C 7635 7632 7630 76BB 76E6 779A 779D - 77A1 779C 779B 77A2 77A3 7795 7799 -End of Item 00A6 - -Begin of Item 00A7 - Format 1 - srcBegin = EAA1 - srcEnd = EAFE - mappingOffset = 2A8D - Mapping = - 7797 78DD 78E9 78E5 78EA 78DE 78E3 78DB - 78E1 78E2 78ED 78DF 78E0 79A4 7A44 7A48 - 7A47 7AB6 7AB8 7AB5 7AB1 7AB7 7BDE 7BE3 - 7BE7 7BDD 7BD5 7BE5 7BDA 7BE8 7BF9 7BD4 - 7BEA 7BE2 7BDC 7BEB 7BD8 7BDF 7CD2 7CD4 - 7CD7 7CD0 7CD1 7E12 7E21 7E17 7E0C 7E1F - 7E20 7E13 7E0E 7E1C 7E15 7E1A 7E22 7E0B - 7E0F 7E16 7E0D 7E14 7E25 7E24 7F43 7F7B - 7F7C 7F7A 7FB1 7FEF 802A 8029 806C 81B1 - 81A6 81AE 81B9 81B5 81AB 81B0 81AC 81B4 - 81B2 81B7 81A7 81F2 8255 8256 8257 8556 - 8545 856B 854D 8553 8561 8558 -End of Item 00A7 - -Begin of Item 00A8 - Format 1 - srcBegin = EB40 - srcEnd = EB7E - mappingOffset = 2AEB - Mapping = - 8540 8546 8564 8541 8562 8544 8551 8547 - 8563 853E 855B 8571 854E 856E 8575 8555 - 8567 8560 858C 8566 855D 8554 8565 856C - 8663 8665 8664 879B 878F 8797 8793 8792 - 8788 8781 8796 8798 8779 8787 87A3 8785 - 8790 8791 879D 8784 8794 879C 879A 8789 - 891E 8926 8930 892D 892E 8927 8931 8922 - 8929 8923 892F 892C 891F 89F1 8AE0 -End of Item 00A8 - -Begin of Item 00A9 - Format 1 - srcBegin = EBA1 - srcEnd = EBFE - mappingOffset = 2B2A - Mapping = - 8AE2 8AF2 8AF4 8AF5 8ADD 8B14 8AE4 8ADF - 8AF0 8AC8 8ADE 8AE1 8AE8 8AFF 8AEF 8AFB - 8C91 8C92 8C90 8CF5 8CEE 8CF1 8CF0 8CF3 - 8D6C 8D6E 8DA5 8DA7 8E33 8E3E 8E38 8E40 - 8E45 8E36 8E3C 8E3D 8E41 8E30 8E3F 8EBD - 8F36 8F2E 8F35 8F32 8F39 8F37 8F34 9076 - 9079 907B 9086 90FA 9133 9135 9136 9193 - 9190 9191 918D 918F 9327 931E 9308 931F - 9306 930F 937A 9338 933C 931B 9323 9312 - 9301 9346 932D 930E 930D 92CB 931D 92FA - 9325 9313 92F9 92F7 9334 9302 9324 92FF - 9329 9339 9335 932A 9314 930C -End of Item 00A9 - -Begin of Item 00AA - Format 1 - srcBegin = EC40 - srcEnd = EC7E - mappingOffset = 2B88 - Mapping = - 930B 92FE 9309 9300 92FB 9316 95BC 95CD - 95BE 95B9 95BA 95B6 95BF 95B5 95BD 96A9 - 96D4 970B 9712 9710 9799 9797 9794 97F0 - 97F8 9835 982F 9832 9924 991F 9927 9929 - 999E 99EE 99EC 99E5 99E4 99F0 99E3 99EA - 99E9 99E7 9AB9 9ABF 9AB4 9ABB 9AF6 9AFA - 9AF9 9AF7 9B33 9B80 9B85 9B87 9B7C 9B7E - 9B7B 9B82 9B93 9B92 9B90 9B7A 9B95 -End of Item 00AA - -Begin of Item 00AB - Format 1 - srcBegin = ECA1 - srcEnd = ECFE - mappingOffset = 2BC7 - Mapping = - 9B7D 9B88 9D25 9D17 9D20 9D1E 9D14 9D29 - 9D1D 9D18 9D22 9D10 9D19 9D1F 9E88 9E86 - 9E87 9EAE 9EAD 9ED5 9ED6 9EFA 9F12 9F3D - 5126 5125 5122 5124 5120 5129 52F4 5693 - 568C 568D 5686 5684 5683 567E 5682 567F - 5681 58D6 58D4 58CF 58D2 5B2D 5B25 5B32 - 5B23 5B2C 5B27 5B26 5B2F 5B2E 5B7B 5BF1 - 5BF2 5DB7 5E6C 5E6A 5FBE 5FBB 61C3 61B5 - 61BC 61E7 61E0 61E5 61E4 61E8 61DE 64EF - 64E9 64E3 64EB 64E4 64E8 6581 6580 65B6 - 65DA 66D2 6A8D 6A96 6A81 6AA5 6A89 6A9F - 6A9B 6AA1 6A9E 6A87 6A93 6A8E -End of Item 00AB - -Begin of Item 00AC - Format 1 - srcBegin = ED40 - srcEnd = ED7E - mappingOffset = 2C25 - Mapping = - 6A95 6A83 6AA8 6AA4 6A91 6A7F 6AA6 6A9A - 6A85 6A8C 6A92 6B5B 6BAD 6C09 6FCC 6FA9 - 6FF4 6FD4 6FE3 6FDC 6FED 6FE7 6FE6 6FDE - 6FF2 6FDD 6FE2 6FE8 71E1 71F1 71E8 71F2 - 71E4 71F0 71E2 7373 736E 736F 7497 74B2 - 74AB 7490 74AA 74AD 74B1 74A5 74AF 7510 - 7511 7512 750F 7584 7643 7648 7649 7647 - 76A4 76E9 77B5 77AB 77B2 77B7 77B6 -End of Item 00AC - -Begin of Item 00AD - Format 1 - srcBegin = EDA1 - srcEnd = EDFE - mappingOffset = 2C64 - Mapping = - 77B4 77B1 77A8 77F0 78F3 78FD 7902 78FB - 78FC 78F2 7905 78F9 78FE 7904 79AB 79A8 - 7A5C 7A5B 7A56 7A58 7A54 7A5A 7ABE 7AC0 - 7AC1 7C05 7C0F 7BF2 7C00 7BFF 7BFB 7C0E - 7BF4 7C0B 7BF3 7C02 7C09 7C03 7C01 7BF8 - 7BFD 7C06 7BF0 7BF1 7C10 7C0A 7CE8 7E2D - 7E3C 7E42 7E33 9848 7E38 7E2A 7E49 7E40 - 7E47 7E29 7E4C 7E30 7E3B 7E36 7E44 7E3A - 7F45 7F7F 7F7E 7F7D 7FF4 7FF2 802C 81BB - 81C4 81CC 81CA 81C5 81C7 81BC 81E9 825B - 825A 825C 8583 8580 858F 85A7 8595 85A0 - 858B 85A3 857B 85A4 859A 859E -End of Item 00AD - -Begin of Item 00AE - Format 1 - srcBegin = EE40 - srcEnd = EE7E - mappingOffset = 2CC2 - Mapping = - 8577 857C 8589 85A1 857A 8578 8557 858E - 8596 8586 858D 8599 859D 8581 85A2 8582 - 8588 8585 8579 8576 8598 8590 859F 8668 - 87BE 87AA 87AD 87C5 87B0 87AC 87B9 87B5 - 87BC 87AE 87C9 87C3 87C2 87CC 87B7 87AF - 87C4 87CA 87B4 87B6 87BF 87B8 87BD 87DE - 87B2 8935 8933 893C 893E 8941 8952 8937 - 8942 89AD 89AF 89AE 89F2 89F3 8B1E -End of Item 00AE - -Begin of Item 00AF - Format 1 - srcBegin = EEA1 - srcEnd = EEFE - mappingOffset = 2D01 - Mapping = - 8B18 8B16 8B11 8B05 8B0B 8B22 8B0F 8B12 - 8B15 8B07 8B0D 8B08 8B06 8B1C 8B13 8B1A - 8C4F 8C70 8C72 8C71 8C6F 8C95 8C94 8CF9 - 8D6F 8E4E 8E4D 8E53 8E50 8E4C 8E47 8F43 - 8F40 9085 907E 9138 919A 91A2 919B 9199 - 919F 91A1 919D 91A0 93A1 9383 93AF 9364 - 9356 9347 937C 9358 935C 9376 9349 9350 - 9351 9360 936D 938F 934C 936A 9379 9357 - 9355 9352 934F 9371 9377 937B 9361 935E - 9363 9367 9380 934E 9359 95C7 95C0 95C9 - 95C3 95C5 95B7 96AE 96B0 96AC 9720 971F - 9718 971D 9719 979A 97A1 979C -End of Item 00AF - -Begin of Item 00B0 - Format 1 - srcBegin = EF40 - srcEnd = EF7E - mappingOffset = 2D5F - Mapping = - 979E 979D 97D5 97D4 97F1 9841 9844 984A - 9849 9845 9843 9925 992B 992C 992A 9933 - 9932 992F 992D 9931 9930 9998 99A3 99A1 - 9A02 99FA 99F4 99F7 99F9 99F8 99F6 99FB - 99FD 99FE 99FC 9A03 9ABE 9AFE 9AFD 9B01 - 9AFC 9B48 9B9A 9BA8 9B9E 9B9B 9BA6 9BA1 - 9BA5 9BA4 9B86 9BA2 9BA0 9BAF 9D33 9D41 - 9D67 9D36 9D2E 9D2F 9D31 9D38 9D30 -End of Item 00B0 - -Begin of Item 00B1 - Format 1 - srcBegin = EFA1 - srcEnd = EFFE - mappingOffset = 2D9E - Mapping = - 9D45 9D42 9D43 9D3E 9D37 9D40 9D3D 7FF5 - 9D2D 9E8A 9E89 9E8D 9EB0 9EC8 9EDA 9EFB - 9EFF 9F24 9F23 9F22 9F54 9FA0 5131 512D - 512E 5698 569C 5697 569A 569D 5699 5970 - 5B3C 5C69 5C6A 5DC0 5E6D 5E6E 61D8 61DF - 61ED 61EE 61F1 61EA 61F0 61EB 61D6 61E9 - 64FF 6504 64FD 64F8 6501 6503 64FC 6594 - 65DB 66DA 66DB 66D8 6AC5 6AB9 6ABD 6AE1 - 6AC6 6ABA 6AB6 6AB7 6AC7 6AB4 6AAD 6B5E - 6BC9 6C0B 7007 700C 700D 7001 7005 7014 - 700E 6FFF 7000 6FFB 7026 6FFC 6FF7 700A - 7201 71FF 71F9 7203 71FD 7376 -End of Item 00B1 - -Begin of Item 00B2 - Format 1 - srcBegin = F040 - srcEnd = F07E - mappingOffset = 2DFC - Mapping = - 74B8 74C0 74B5 74C1 74BE 74B6 74BB 74C2 - 7514 7513 765C 7664 7659 7650 7653 7657 - 765A 76A6 76BD 76EC 77C2 77BA 78FF 790C - 7913 7914 7909 7910 7912 7911 79AD 79AC - 7A5F 7C1C 7C29 7C19 7C20 7C1F 7C2D 7C1D - 7C26 7C28 7C22 7C25 7C30 7E5C 7E50 7E56 - 7E63 7E58 7E62 7E5F 7E51 7E60 7E57 7E53 - 7FB5 7FB3 7FF7 7FF8 8075 81D1 81D2 -End of Item 00B2 - -Begin of Item 00B3 - Format 1 - srcBegin = F0A1 - srcEnd = F0FE - mappingOffset = 2E3B - Mapping = - 81D0 825F 825E 85B4 85C6 85C0 85C3 85C2 - 85B3 85B5 85BD 85C7 85C4 85BF 85CB 85CE - 85C8 85C5 85B1 85B6 85D2 8624 85B8 85B7 - 85BE 8669 87E7 87E6 87E2 87DB 87EB 87EA - 87E5 87DF 87F3 87E4 87D4 87DC 87D3 87ED - 87D8 87E3 87A4 87D7 87D9 8801 87F4 87E8 - 87DD 8953 894B 894F 894C 8946 8950 8951 - 8949 8B2A 8B27 8B23 8B33 8B30 8B35 8B47 - 8B2F 8B3C 8B3E 8B31 8B25 8B37 8B26 8B36 - 8B2E 8B24 8B3B 8B3D 8B3A 8C42 8C75 8C99 - 8C98 8C97 8CFE 8D04 8D02 8D00 8E5C 8E62 - 8E60 8E57 8E56 8E5E 8E65 8E67 -End of Item 00B3 - -Begin of Item 00B4 - Format 1 - srcBegin = F140 - srcEnd = F17E - mappingOffset = 2E99 - Mapping = - 8E5B 8E5A 8E61 8E5D 8E69 8E54 8F46 8F47 - 8F48 8F4B 9128 913A 913B 913E 91A8 91A5 - 91A7 91AF 91AA 93B5 938C 9392 93B7 939B - 939D 9389 93A7 938E 93AA 939E 93A6 9395 - 9388 9399 939F 938D 93B1 9391 93B2 93A4 - 93A8 93B4 93A3 93A5 95D2 95D3 95D1 96B3 - 96D7 96DA 5DC2 96DF 96D8 96DD 9723 9722 - 9725 97AC 97AE 97A8 97AB 97A4 97AA -End of Item 00B4 - -Begin of Item 00B5 - Format 1 - srcBegin = F1A1 - srcEnd = F1FE - mappingOffset = 2ED8 - Mapping = - 97A2 97A5 97D7 97D9 97D6 97D8 97FA 9850 - 9851 9852 98B8 9941 993C 993A 9A0F 9A0B - 9A09 9A0D 9A04 9A11 9A0A 9A05 9A07 9A06 - 9AC0 9ADC 9B08 9B04 9B05 9B29 9B35 9B4A - 9B4C 9B4B 9BC7 9BC6 9BC3 9BBF 9BC1 9BB5 - 9BB8 9BD3 9BB6 9BC4 9BB9 9BBD 9D5C 9D53 - 9D4F 9D4A 9D5B 9D4B 9D59 9D56 9D4C 9D57 - 9D52 9D54 9D5F 9D58 9D5A 9E8E 9E8C 9EDF - 9F01 9F00 9F16 9F25 9F2B 9F2A 9F29 9F28 - 9F4C 9F55 5134 5135 5296 52F7 53B4 56AB - 56AD 56A6 56A7 56AA 56AC 58DA 58DD 58DB - 5912 5B3D 5B3E 5B3F 5DC3 5E70 -End of Item 00B5 - -Begin of Item 00B6 - Format 1 - srcBegin = F240 - srcEnd = F27E - mappingOffset = 2F36 - Mapping = - 5FBF 61FB 6507 6510 650D 6509 650C 650E - 6584 65DE 65DD 66DE 6AE7 6AE0 6ACC 6AD1 - 6AD9 6ACB 6ADF 6ADC 6AD0 6AEB 6ACF 6ACD - 6ADE 6B60 6BB0 6C0C 7019 7027 7020 7016 - 702B 7021 7022 7023 7029 7017 7024 701C - 702A 720C 720A 7207 7202 7205 72A5 72A6 - 72A4 72A3 72A1 74CB 74C5 74B7 74C3 7516 - 7660 77C9 77CA 77C4 77F1 791D 791B -End of Item 00B6 - -Begin of Item 00B7 - Format 1 - srcBegin = F2A1 - srcEnd = F2FE - mappingOffset = 2F75 - Mapping = - 7921 791C 7917 791E 79B0 7A67 7A68 7C33 - 7C3C 7C39 7C2C 7C3B 7CEC 7CEA 7E76 7E75 - 7E78 7E70 7E77 7E6F 7E7A 7E72 7E74 7E68 - 7F4B 7F4A 7F83 7F86 7FB7 7FFD 7FFE 8078 - 81D7 81D5 8264 8261 8263 85EB 85F1 85ED - 85D9 85E1 85E8 85DA 85D7 85EC 85F2 85F8 - 85D8 85DF 85E3 85DC 85D1 85F0 85E6 85EF - 85DE 85E2 8800 87FA 8803 87F6 87F7 8809 - 880C 880B 8806 87FC 8808 87FF 880A 8802 - 8962 895A 895B 8957 8961 895C 8958 895D - 8959 8988 89B7 89B6 89F6 8B50 8B48 8B4A - 8B40 8B53 8B56 8B54 8B4B 8B55 -End of Item 00B7 - -Begin of Item 00B8 - Format 1 - srcBegin = F340 - srcEnd = F37E - mappingOffset = 2FD3 - Mapping = - 8B51 8B42 8B52 8B57 8C43 8C77 8C76 8C9A - 8D06 8D07 8D09 8DAC 8DAA 8DAD 8DAB 8E6D - 8E78 8E73 8E6A 8E6F 8E7B 8EC2 8F52 8F51 - 8F4F 8F50 8F53 8FB4 9140 913F 91B0 91AD - 93DE 93C7 93CF 93C2 93DA 93D0 93F9 93EC - 93CC 93D9 93A9 93E6 93CA 93D4 93EE 93E3 - 93D5 93C4 93CE 93C0 93D2 93E7 957D 95DA - 95DB 96E1 9729 972B 972C 9728 9726 -End of Item 00B8 - -Begin of Item 00B9 - Format 1 - srcBegin = F3A1 - srcEnd = F3FE - mappingOffset = 3012 - Mapping = - 97B3 97B7 97B6 97DD 97DE 97DF 985C 9859 - 985D 9857 98BF 98BD 98BB 98BE 9948 9947 - 9943 99A6 99A7 9A1A 9A15 9A25 9A1D 9A24 - 9A1B 9A22 9A20 9A27 9A23 9A1E 9A1C 9A14 - 9AC2 9B0B 9B0A 9B0E 9B0C 9B37 9BEA 9BEB - 9BE0 9BDE 9BE4 9BE6 9BE2 9BF0 9BD4 9BD7 - 9BEC 9BDC 9BD9 9BE5 9BD5 9BE1 9BDA 9D77 - 9D81 9D8A 9D84 9D88 9D71 9D80 9D78 9D86 - 9D8B 9D8C 9D7D 9D6B 9D74 9D75 9D70 9D69 - 9D85 9D73 9D7B 9D82 9D6F 9D79 9D7F 9D87 - 9D68 9E94 9E91 9EC0 9EFC 9F2D 9F40 9F41 - 9F4D 9F56 9F57 9F58 5337 56B2 -End of Item 00B9 - -Begin of Item 00BA - Format 1 - srcBegin = F440 - srcEnd = F47E - mappingOffset = 3070 - Mapping = - 56B5 56B3 58E3 5B45 5DC6 5DC7 5EEE 5EEF - 5FC0 5FC1 61F9 6517 6516 6515 6513 65DF - 66E8 66E3 66E4 6AF3 6AF0 6AEA 6AE8 6AF9 - 6AF1 6AEE 6AEF 703C 7035 702F 7037 7034 - 7031 7042 7038 703F 703A 7039 7040 703B - 7033 7041 7213 7214 72A8 737D 737C 74BA - 76AB 76AA 76BE 76ED 77CC 77CE 77CF 77CD - 77F2 7925 7923 7927 7928 7924 7929 -End of Item 00BA - -Begin of Item 00BB - Format 1 - srcBegin = F4A1 - srcEnd = F4FE - mappingOffset = 30AF - Mapping = - 79B2 7A6E 7A6C 7A6D 7AF7 7C49 7C48 7C4A - 7C47 7C45 7CEE 7E7B 7E7E 7E81 7E80 7FBA - 7FFF 8079 81DB 81D9 820B 8268 8269 8622 - 85FF 8601 85FE 861B 8600 85F6 8604 8609 - 8605 860C 85FD 8819 8810 8811 8817 8813 - 8816 8963 8966 89B9 89F7 8B60 8B6A 8B5D - 8B68 8B63 8B65 8B67 8B6D 8DAE 8E86 8E88 - 8E84 8F59 8F56 8F57 8F55 8F58 8F5A 908D - 9143 9141 91B7 91B5 91B2 91B3 940B 9413 - 93FB 9420 940F 9414 93FE 9415 9410 9428 - 9419 940D 93F5 9400 93F7 9407 940E 9416 - 9412 93FA 9409 93F8 940A 93FF -End of Item 00BB - -Begin of Item 00BC - Format 1 - srcBegin = F540 - srcEnd = F57E - mappingOffset = 310D - Mapping = - 93FC 940C 93F6 9411 9406 95DE 95E0 95DF - 972E 972F 97B9 97BB 97FD 97FE 9860 9862 - 9863 985F 98C1 98C2 9950 994E 9959 994C - 994B 9953 9A32 9A34 9A31 9A2C 9A2A 9A36 - 9A29 9A2E 9A38 9A2D 9AC7 9ACA 9AC6 9B10 - 9B12 9B11 9C0B 9C08 9BF7 9C05 9C12 9BF8 - 9C40 9C07 9C0E 9C06 9C17 9C14 9C09 9D9F - 9D99 9DA4 9D9D 9D92 9D98 9D90 9D9B -End of Item 00BC - -Begin of Item 00BD - Format 1 - srcBegin = F5A1 - srcEnd = F5FE - mappingOffset = 314C - Mapping = - 9DA0 9D94 9D9C 9DAA 9D97 9DA1 9D9A 9DA2 - 9DA8 9D9E 9DA3 9DBF 9DA9 9D96 9DA6 9DA7 - 9E99 9E9B 9E9A 9EE5 9EE4 9EE7 9EE6 9F30 - 9F2E 9F5B 9F60 9F5E 9F5D 9F59 9F91 513A - 5139 5298 5297 56C3 56BD 56BE 5B48 5B47 - 5DCB 5DCF 5EF1 61FD 651B 6B02 6AFC 6B03 - 6AF8 6B00 7043 7044 704A 7048 7049 7045 - 7046 721D 721A 7219 737E 7517 766A 77D0 - 792D 7931 792F 7C54 7C53 7CF2 7E8A 7E87 - 7E88 7E8B 7E86 7E8D 7F4D 7FBB 8030 81DD - 8618 862A 8626 861F 8623 861C 8619 8627 - 862E 8621 8620 8629 861E 8625 -End of Item 00BD - -Begin of Item 00BE - Format 1 - srcBegin = F640 - srcEnd = F67E - mappingOffset = 31AA - Mapping = - 8829 881D 881B 8820 8824 881C 882B 884A - 896D 8969 896E 896B 89FA 8B79 8B78 8B45 - 8B7A 8B7B 8D10 8D14 8DAF 8E8E 8E8C 8F5E - 8F5B 8F5D 9146 9144 9145 91B9 943F 943B - 9436 9429 943D 943C 9430 9439 942A 9437 - 942C 9440 9431 95E5 95E4 95E3 9735 973A - 97BF 97E1 9864 98C9 98C6 98C0 9958 9956 - 9A39 9A3D 9A46 9A44 9A42 9A41 9A3A -End of Item 00BE - -Begin of Item 00BF - Format 1 - srcBegin = F6A1 - srcEnd = F6FE - mappingOffset = 31E9 - Mapping = - 9A3F 9ACD 9B15 9B17 9B18 9B16 9B3A 9B52 - 9C2B 9C1D 9C1C 9C2C 9C23 9C28 9C29 9C24 - 9C21 9DB7 9DB6 9DBC 9DC1 9DC7 9DCA 9DCF - 9DBE 9DC5 9DC3 9DBB 9DB5 9DCE 9DB9 9DBA - 9DAC 9DC8 9DB1 9DAD 9DCC 9DB3 9DCD 9DB2 - 9E7A 9E9C 9EEB 9EEE 9EED 9F1B 9F18 9F1A - 9F31 9F4E 9F65 9F64 9F92 4EB9 56C6 56C5 - 56CB 5971 5B4B 5B4C 5DD5 5DD1 5EF2 6521 - 6520 6526 6522 6B0B 6B08 6B09 6C0D 7055 - 7056 7057 7052 721E 721F 72A9 737F 74D8 - 74D5 74D9 74D7 766D 76AD 7935 79B4 7A70 - 7A71 7C57 7C5C 7C59 7C5B 7C5A -End of Item 00BF - -Begin of Item 00C0 - Format 1 - srcBegin = F740 - srcEnd = F77E - mappingOffset = 3247 - Mapping = - 7CF4 7CF1 7E91 7F4F 7F87 81DE 826B 8634 - 8635 8633 862C 8632 8636 882C 8828 8826 - 882A 8825 8971 89BF 89BE 89FB 8B7E 8B84 - 8B82 8B86 8B85 8B7F 8D15 8E95 8E94 8E9A - 8E92 8E90 8E96 8E97 8F60 8F62 9147 944C - 9450 944A 944B 944F 9447 9445 9448 9449 - 9446 973F 97E3 986A 9869 98CB 9954 995B - 9A4E 9A53 9A54 9A4C 9A4F 9A48 9A4A -End of Item 00C0 - -Begin of Item 00C1 - Format 1 - srcBegin = F7A1 - srcEnd = F7FE - mappingOffset = 3286 - Mapping = - 9A49 9A52 9A50 9AD0 9B19 9B2B 9B3B 9B56 - 9B55 9C46 9C48 9C3F 9C44 9C39 9C33 9C41 - 9C3C 9C37 9C34 9C32 9C3D 9C36 9DDB 9DD2 - 9DDE 9DDA 9DCB 9DD0 9DDC 9DD1 9DDF 9DE9 - 9DD9 9DD8 9DD6 9DF5 9DD5 9DDD 9EB6 9EF0 - 9F35 9F33 9F32 9F42 9F6B 9F95 9FA2 513D - 5299 58E8 58E7 5972 5B4D 5DD8 882F 5F4F - 6201 6203 6204 6529 6525 6596 66EB 6B11 - 6B12 6B0F 6BCA 705B 705A 7222 7382 7381 - 7383 7670 77D4 7C67 7C66 7E95 826C 863A - 8640 8639 863C 8631 863B 863E 8830 8832 - 882E 8833 8976 8974 8973 89FE -End of Item 00C1 - -Begin of Item 00C2 - Format 1 - srcBegin = F840 - srcEnd = F87E - mappingOffset = 32E4 - Mapping = - 8B8C 8B8E 8B8B 8B88 8C45 8D19 8E98 8F64 - 8F63 91BC 9462 9455 945D 9457 945E 97C4 - 97C5 9800 9A56 9A59 9B1E 9B1F 9B20 9C52 - 9C58 9C50 9C4A 9C4D 9C4B 9C55 9C59 9C4C - 9C4E 9DFB 9DF7 9DEF 9DE3 9DEB 9DF8 9DE4 - 9DF6 9DE1 9DEE 9DE6 9DF2 9DF0 9DE2 9DEC - 9DF4 9DF3 9DE8 9DED 9EC2 9ED0 9EF2 9EF3 - 9F06 9F1C 9F38 9F37 9F36 9F43 9F4F -End of Item 00C2 - -Begin of Item 00C3 - Format 1 - srcBegin = F8A1 - srcEnd = F8FE - mappingOffset = 3323 - Mapping = - 9F71 9F70 9F6E 9F6F 56D3 56CD 5B4E 5C6D - 652D 66ED 66EE 6B13 705F 7061 705D 7060 - 7223 74DB 74E5 77D5 7938 79B7 79B6 7C6A - 7E97 7F89 826D 8643 8838 8837 8835 884B - 8B94 8B95 8E9E 8E9F 8EA0 8E9D 91BE 91BD - 91C2 946B 9468 9469 96E5 9746 9743 9747 - 97C7 97E5 9A5E 9AD5 9B59 9C63 9C67 9C66 - 9C62 9C5E 9C60 9E02 9DFE 9E07 9E03 9E06 - 9E05 9E00 9E01 9E09 9DFF 9DFD 9E04 9EA0 - 9F1E 9F46 9F74 9F75 9F76 56D4 652E 65B8 - 6B18 6B19 6B17 6B1A 7062 7226 72AA 77D8 - 77D9 7939 7C69 7C6B 7CF6 7E9A -End of Item 00C3 - -Begin of Item 00C4 - Format 1 - srcBegin = F940 - srcEnd = F97E - mappingOffset = 3381 - Mapping = - 7E98 7E9B 7E99 81E0 81E1 8646 8647 8648 - 8979 897A 897C 897B 89FF 8B98 8B99 8EA5 - 8EA4 8EA3 946E 946D 946F 9471 9473 9749 - 9872 995F 9C68 9C6E 9C6D 9E0B 9E0D 9E10 - 9E0F 9E12 9E11 9EA1 9EF5 9F09 9F47 9F78 - 9F7B 9F7A 9F79 571E 7066 7C6F 883C 8DB2 - 8EA6 91C3 9474 9478 9476 9475 9A60 9C74 - 9C73 9C71 9C75 9E14 9E13 9EF6 9F0A -End of Item 00C4 - -Begin of Item 00C5 - Format 1 - srcBegin = F9A1 - srcEnd = F9D5 - mappingOffset = 33C0 - Mapping = - 9FA4 7068 7065 7CF7 866A 883E 883D 883F - 8B9E 8C9C 8EA9 8EC9 974B 9873 9874 98CC - 9961 99AB 9A64 9A66 9A67 9B24 9E15 9E17 - 9F48 6207 6B1E 7227 864C 8EA8 9482 9480 - 9481 9A69 9A68 9B2E 9E19 7229 864B 8B9F - 9483 9C79 9EB7 7675 9A6B 9C7A 9E1D 7069 - 706A 9EA4 9F7E 9F49 9F98 -End of Item 00C5 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x00C6, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0036, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0288, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0015 */ -/* Total of Format 1 : 0x00AF */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1110, 0x1121, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x2111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x0036 Start of MapCell Array */ -/* 0000 */ 0xA262, 0xA269, 0x2581, -/* 0001 */ 0xA2AF, 0xA2B8, 0xFF10, -/* 0002 */ 0xA2B9, 0xA2C2, 0x2160, -/* 0003 */ 0xA2C3, 0xA2CB, 0x3021, -/* 0004 */ 0xA2CF, 0xA2E8, 0xFF21, -/* 0005 */ 0xA2E9, 0xA2FE, 0xFF41, -/* 0006 */ 0xA344, 0xA354, 0x0391, -/* 0007 */ 0xA355, 0xA35B, 0x03A3, -/* 0008 */ 0xA35C, 0xA36C, 0x03B1, -/* 0009 */ 0xA36D, 0xA373, 0x03C3, -/* 000A */ 0xA374, 0xA37E, 0x3105, -/* 000B */ 0xA3A1, 0xA3BA, 0x3110, -/* 000C */ 0xC6A5, 0xC6F7, 0x3041, -/* 000D */ 0xC6F8, 0xC6FE, 0x30A1, -/* 000E */ 0xC740, 0xC77E, 0x30A8, -/* 000F */ 0xC7A1, 0xC7B0, 0x30E7, -/* 0010 */ 0xC7B4, 0xC7BA, 0x0416, -/* 0011 */ 0xC7BB, 0xC7CD, 0x0423, -/* 0012 */ 0xC7CF, 0xC7E8, 0x0436, -/* 0013 */ 0xC7E9, 0xC7F2, 0x2460, -/* 0014 */ 0xC7F3, 0xC7FC, 0x2474, -/* 0015 */ 0xA140, 0xA17E, 0x0000, -/* 0016 */ 0xA1A1, 0xA1FD, 0x003F, -/* 0017 */ 0xA241, 0xA27E, 0x009C, -/* 0018 */ 0xA2A1, 0xA2AE, 0x00DA, -/* 0019 */ 0xA2CD, 0x0000, 0x5344, -/* 001A */ 0xA340, 0xA343, 0x00E8, -/* 001B */ 0xA3BB, 0xA3BF, 0x00EC, -/* 001C */ 0xA440, 0xA47E, 0x00F1, -/* 001D */ 0xA4A1, 0xA4FE, 0x0130, -/* 001E */ 0xA540, 0xA57E, 0x018E, -/* 001F */ 0xA5A1, 0xA5FE, 0x01CD, -/* 0020 */ 0xA640, 0xA67E, 0x022B, -/* 0021 */ 0xA6A1, 0xA6FE, 0x026A, -/* 0022 */ 0xA740, 0xA77E, 0x02C8, -/* 0023 */ 0xA7A1, 0xA7FE, 0x0307, -/* 0024 */ 0xA840, 0xA87E, 0x0365, -/* 0025 */ 0xA8A1, 0xA8FE, 0x03A4, -/* 0026 */ 0xA940, 0xA97E, 0x0402, -/* 0027 */ 0xA9A1, 0xA9FE, 0x0441, -/* 0028 */ 0xAA40, 0xAA7E, 0x049F, -/* 0029 */ 0xAAA1, 0xAAFE, 0x04DE, -/* 002A */ 0xAB40, 0xAB7E, 0x053C, -/* 002B */ 0xABA1, 0xABFE, 0x057B, -/* 002C */ 0xAC40, 0xAC7E, 0x05D9, -/* 002D */ 0xACA1, 0xACFE, 0x0618, -/* 002E */ 0xAD40, 0xAD7E, 0x0676, -/* 002F */ 0xADA1, 0xADFE, 0x06B5, -/* 0030 */ 0xAE40, 0xAE7E, 0x0713, -/* 0031 */ 0xAEA1, 0xAEFE, 0x0752, -/* 0032 */ 0xAF40, 0xAF7E, 0x07B0, -/* 0033 */ 0xAFA1, 0xAFFE, 0x07EF, -/* 0034 */ 0xB040, 0xB07E, 0x084D, -/* 0035 */ 0xB0A1, 0xB0FE, 0x088C, -/* 0036 */ 0xB140, 0xB17E, 0x08EA, -/* 0037 */ 0xB1A1, 0xB1FE, 0x0929, -/* 0038 */ 0xB240, 0xB27E, 0x0987, -/* 0039 */ 0xB2A1, 0xB2FE, 0x09C6, -/* 003A */ 0xB340, 0xB37E, 0x0A24, -/* 003B */ 0xB3A1, 0xB3FE, 0x0A63, -/* 003C */ 0xB440, 0xB47E, 0x0AC1, -/* 003D */ 0xB4A1, 0xB4FE, 0x0B00, -/* 003E */ 0xB540, 0xB57E, 0x0B5E, -/* 003F */ 0xB5A1, 0xB5FE, 0x0B9D, -/* 0040 */ 0xB640, 0xB67E, 0x0BFB, -/* 0041 */ 0xB6A1, 0xB6FE, 0x0C3A, -/* 0042 */ 0xB740, 0xB77E, 0x0C98, -/* 0043 */ 0xB7A1, 0xB7FE, 0x0CD7, -/* 0044 */ 0xB840, 0xB87E, 0x0D35, -/* 0045 */ 0xB8A1, 0xB8FE, 0x0D74, -/* 0046 */ 0xB940, 0xB97E, 0x0DD2, -/* 0047 */ 0xB9A1, 0xB9FE, 0x0E11, -/* 0048 */ 0xBA40, 0xBA7E, 0x0E6F, -/* 0049 */ 0xBAA1, 0xBAFE, 0x0EAE, -/* 004A */ 0xBB40, 0xBB7E, 0x0F0C, -/* 004B */ 0xBBA1, 0xBBFE, 0x0F4B, -/* 004C */ 0xBC40, 0xBC7E, 0x0FA9, -/* 004D */ 0xBCA1, 0xBCFE, 0x0FE8, -/* 004E */ 0xBD40, 0xBD7E, 0x1046, -/* 004F */ 0xBDA1, 0xBDFE, 0x1085, -/* 0050 */ 0xBE40, 0xBE7E, 0x10E3, -/* 0051 */ 0xBEA1, 0xBEFE, 0x1122, -/* 0052 */ 0xBF40, 0xBF7E, 0x1180, -/* 0053 */ 0xBFA1, 0xBFFE, 0x11BF, -/* 0054 */ 0xC040, 0xC07E, 0x121D, -/* 0055 */ 0xC0A1, 0xC0FE, 0x125C, -/* 0056 */ 0xC140, 0xC17E, 0x12BA, -/* 0057 */ 0xC1A1, 0xC1FE, 0x12F9, -/* 0058 */ 0xC240, 0xC27E, 0x1357, -/* 0059 */ 0xC2A1, 0xC2FE, 0x1396, -/* 005A */ 0xC340, 0xC37E, 0x13F4, -/* 005B */ 0xC3A1, 0xC3FE, 0x1433, -/* 005C */ 0xC440, 0xC47E, 0x1491, -/* 005D */ 0xC4A1, 0xC4FE, 0x14D0, -/* 005E */ 0xC540, 0xC57E, 0x152E, -/* 005F */ 0xC5A1, 0xC5FE, 0x156D, -/* 0060 */ 0xC640, 0xC67E, 0x15CB, -/* 0061 */ 0xC6A1, 0xC6A4, 0x160A, -/* 0062 */ 0xC7B1, 0xC7B3, 0x160E, -/* 0063 */ 0xC7CE, 0x0000, 0x0451, -/* 0064 */ 0xC940, 0xC97E, 0x1611, -/* 0065 */ 0xC9A1, 0xC9FE, 0x1650, -/* 0066 */ 0xCA40, 0xCA7E, 0x16AE, -/* 0067 */ 0xCAA1, 0xCAFE, 0x16ED, -/* 0068 */ 0xCB40, 0xCB7E, 0x174B, -/* 0069 */ 0xCBA1, 0xCBFE, 0x178A, -/* 006A */ 0xCC40, 0xCC7E, 0x17E8, -/* 006B */ 0xCCA1, 0xCCFE, 0x1827, -/* 006C */ 0xCD40, 0xCD7E, 0x1885, -/* 006D */ 0xCDA1, 0xCDFE, 0x18C4, -/* 006E */ 0xCE40, 0xCE7E, 0x1922, -/* 006F */ 0xCEA1, 0xCEFE, 0x1961, -/* 0070 */ 0xCF40, 0xCF7E, 0x19BF, -/* 0071 */ 0xCFA1, 0xCFFE, 0x19FE, -/* 0072 */ 0xD040, 0xD07E, 0x1A5C, -/* 0073 */ 0xD0A1, 0xD0FE, 0x1A9B, -/* 0074 */ 0xD140, 0xD17E, 0x1AF9, -/* 0075 */ 0xD1A1, 0xD1FE, 0x1B38, -/* 0076 */ 0xD240, 0xD27E, 0x1B96, -/* 0077 */ 0xD2A1, 0xD2FE, 0x1BD5, -/* 0078 */ 0xD340, 0xD37E, 0x1C33, -/* 0079 */ 0xD3A1, 0xD3FE, 0x1C72, -/* 007A */ 0xD440, 0xD47E, 0x1CD0, -/* 007B */ 0xD4A1, 0xD4FE, 0x1D0F, -/* 007C */ 0xD540, 0xD57E, 0x1D6D, -/* 007D */ 0xD5A1, 0xD5FE, 0x1DAC, -/* 007E */ 0xD640, 0xD67E, 0x1E0A, -/* 007F */ 0xD6A1, 0xD6FE, 0x1E49, -/* 0080 */ 0xD740, 0xD77E, 0x1EA7, -/* 0081 */ 0xD7A1, 0xD7FE, 0x1EE6, -/* 0082 */ 0xD840, 0xD87E, 0x1F44, -/* 0083 */ 0xD8A1, 0xD8FE, 0x1F83, -/* 0084 */ 0xD940, 0xD97E, 0x1FE1, -/* 0085 */ 0xD9A1, 0xD9FE, 0x2020, -/* 0086 */ 0xDA40, 0xDA7E, 0x207E, -/* 0087 */ 0xDAA1, 0xDAFE, 0x20BD, -/* 0088 */ 0xDB40, 0xDB7E, 0x211B, -/* 0089 */ 0xDBA1, 0xDBFE, 0x215A, -/* 008A */ 0xDC40, 0xDC7E, 0x21B8, -/* 008B */ 0xDCA1, 0xDCFE, 0x21F7, -/* 008C */ 0xDD40, 0xDD7E, 0x2255, -/* 008D */ 0xDDA1, 0xDDFE, 0x2294, -/* 008E */ 0xDE40, 0xDE7E, 0x22F2, -/* 008F */ 0xDEA1, 0xDEFE, 0x2331, -/* 0090 */ 0xDF40, 0xDF7E, 0x238F, -/* 0091 */ 0xDFA1, 0xDFFE, 0x23CE, -/* 0092 */ 0xE040, 0xE07E, 0x242C, -/* 0093 */ 0xE0A1, 0xE0FE, 0x246B, -/* 0094 */ 0xE140, 0xE17E, 0x24C9, -/* 0095 */ 0xE1A1, 0xE1FE, 0x2508, -/* 0096 */ 0xE240, 0xE27E, 0x2566, -/* 0097 */ 0xE2A1, 0xE2FE, 0x25A5, -/* 0098 */ 0xE340, 0xE37E, 0x2603, -/* 0099 */ 0xE3A1, 0xE3FE, 0x2642, -/* 009A */ 0xE440, 0xE47E, 0x26A0, -/* 009B */ 0xE4A1, 0xE4FE, 0x26DF, -/* 009C */ 0xE540, 0xE57E, 0x273D, -/* 009D */ 0xE5A1, 0xE5FE, 0x277C, -/* 009E */ 0xE640, 0xE67E, 0x27DA, -/* 009F */ 0xE6A1, 0xE6FE, 0x2819, -/* 00A0 */ 0xE740, 0xE77E, 0x2877, -/* 00A1 */ 0xE7A1, 0xE7FE, 0x28B6, -/* 00A2 */ 0xE840, 0xE87E, 0x2914, -/* 00A3 */ 0xE8A1, 0xE8FE, 0x2953, -/* 00A4 */ 0xE940, 0xE97E, 0x29B1, -/* 00A5 */ 0xE9A1, 0xE9FE, 0x29F0, -/* 00A6 */ 0xEA40, 0xEA7E, 0x2A4E, -/* 00A7 */ 0xEAA1, 0xEAFE, 0x2A8D, -/* 00A8 */ 0xEB40, 0xEB7E, 0x2AEB, -/* 00A9 */ 0xEBA1, 0xEBFE, 0x2B2A, -/* 00AA */ 0xEC40, 0xEC7E, 0x2B88, -/* 00AB */ 0xECA1, 0xECFE, 0x2BC7, -/* 00AC */ 0xED40, 0xED7E, 0x2C25, -/* 00AD */ 0xEDA1, 0xEDFE, 0x2C64, -/* 00AE */ 0xEE40, 0xEE7E, 0x2CC2, -/* 00AF */ 0xEEA1, 0xEEFE, 0x2D01, -/* 00B0 */ 0xEF40, 0xEF7E, 0x2D5F, -/* 00B1 */ 0xEFA1, 0xEFFE, 0x2D9E, -/* 00B2 */ 0xF040, 0xF07E, 0x2DFC, -/* 00B3 */ 0xF0A1, 0xF0FE, 0x2E3B, -/* 00B4 */ 0xF140, 0xF17E, 0x2E99, -/* 00B5 */ 0xF1A1, 0xF1FE, 0x2ED8, -/* 00B6 */ 0xF240, 0xF27E, 0x2F36, -/* 00B7 */ 0xF2A1, 0xF2FE, 0x2F75, -/* 00B8 */ 0xF340, 0xF37E, 0x2FD3, -/* 00B9 */ 0xF3A1, 0xF3FE, 0x3012, -/* 00BA */ 0xF440, 0xF47E, 0x3070, -/* 00BB */ 0xF4A1, 0xF4FE, 0x30AF, -/* 00BC */ 0xF540, 0xF57E, 0x310D, -/* 00BD */ 0xF5A1, 0xF5FE, 0x314C, -/* 00BE */ 0xF640, 0xF67E, 0x31AA, -/* 00BF */ 0xF6A1, 0xF6FE, 0x31E9, -/* 00C0 */ 0xF740, 0xF77E, 0x3247, -/* 00C1 */ 0xF7A1, 0xF7FE, 0x3286, -/* 00C2 */ 0xF840, 0xF87E, 0x32E4, -/* 00C3 */ 0xF8A1, 0xF8FE, 0x3323, -/* 00C4 */ 0xF940, 0xF97E, 0x3381, -/* 00C5 */ 0xF9A1, 0xF9D5, 0x33C0, -/*-------------------------------------------------------*/ -/* Offset=0x0288 Start of MappingTable */ - -/* 0000 */ 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2022, 0xFF1B, 0xFF1A, -/* 0008 */ 0xFF1F, 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFF64, 0xFE52, -/* 0010 */ 0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31, -/* 0018 */ 0x2014, 0xFE33, 0xFFFD, 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35, -/* 0020 */ 0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39, -/* 0028 */ 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D, -/* 0030 */ 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, 0x300D, 0xFE41, -/* 0038 */ 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A, 0xFE5B, -/* 0040 */ 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 0x201D, 0x301D, -/* 0048 */ 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A, 0x203B, 0x00A7, -/* 0050 */ 0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 0x2606, 0x2605, -/* 0058 */ 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC, 0x32A3, 0x2105, -/* 0060 */ 0x203E, 0xFFFD, 0xFF3F, 0xFFFD, 0xFE49, 0xFE4A, 0xFE4D, 0xFE4E, -/* 0068 */ 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B, 0xFF0D, 0x00D7, -/* 0070 */ 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D, 0x2266, 0x2267, -/* 0078 */ 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, 0xFE64, 0xFE65, -/* 0080 */ 0xFE66, 0x223C, 0x2229, 0x222A, 0x22A5, 0x2220, 0x221F, 0x22BF, -/* 0088 */ 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 0x2640, 0x2642, -/* 0090 */ 0x2641, 0x2609, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197, -/* 0098 */ 0x2199, 0x2198, 0x2225, 0x2223, 0xFF0F, 0xFF3C, 0xFF04, 0x00A5, -/* 00A0 */ 0x3012, 0x00A2, 0x00A3, 0xFF05, 0xFF20, 0x2103, 0x2109, 0xFE69, -/* 00A8 */ 0xFE6A, 0xFE6B, 0x33D5, 0x339C, 0x339D, 0x339E, 0x33CE, 0x33A1, -/* 00B0 */ 0x338E, 0x338F, 0x33C4, 0x00B0, 0x5159, 0x515B, 0x515E, 0x515D, -/* 00B8 */ 0x5161, 0x5163, 0x55E7, 0x74E9, 0x7CCE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x258F, 0x258E, 0x258D, -/* 00C8 */ 0x258C, 0x258B, 0x258A, 0x2589, 0x253C, 0x2534, 0x252C, 0x2524, -/* 00D0 */ 0x251C, 0x2594, 0x2500, 0x2502, 0x2595, 0x250C, 0x2510, 0x2514, -/* 00D8 */ 0x2518, 0x256D, 0x256E, 0x2570, 0x256F, 0x2550, 0x255E, 0x256A, -/* 00E0 */ 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571, 0x2572, 0x2573, -/* 00E8 */ 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x02D9, 0x02C9, 0x02CA, 0x02C7, -/* 00F0 */ 0x02CB, 0x4E00, 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, -/* 00F8 */ 0x4E8C, 0x4EBA, 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, -/* 0100 */ 0x529B, 0x5315, 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, -/* 0108 */ 0x4E0A, 0x4E2B, 0x4E38, 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, -/* 0110 */ 0x4E8E, 0x4EA1, 0x5140, 0x5203, 0x52FA, 0x5343, 0x53C9, 0x53E3, -/* 0118 */ 0x571F, 0x58EB, 0x5915, 0x5927, 0x5973, 0x5B50, 0x5B51, 0x5B53, -/* 0120 */ 0x5BF8, 0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5, 0x5DF1, -/* 0128 */ 0x5DF2, 0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, 0x624D, -/* 0130 */ 0x4E11, 0x4E10, 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B, 0x5C39, -/* 0138 */ 0x4E88, 0x4E91, 0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1, 0x4EC0, -/* 0140 */ 0x4EC3, 0x4EC6, 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4, 0x5143, -/* 0148 */ 0x5141, 0x5167, 0x516D, 0x516E, 0x516C, 0x5197, 0x51F6, 0x5206, -/* 0150 */ 0x5207, 0x5208, 0x52FB, 0x52FE, 0x52FF, 0x5316, 0x5339, 0x5348, -/* 0158 */ 0x5347, 0x5345, 0x535E, 0x5384, 0x53CB, 0x53CA, 0x53CD, 0x58EC, -/* 0160 */ 0x5929, 0x592B, 0x592A, 0x592D, 0x5B54, 0x5C11, 0x5C24, 0x5C3A, -/* 0168 */ 0x5C6F, 0x5DF4, 0x5E7B, 0x5EFF, 0x5F14, 0x5F15, 0x5FC3, 0x6208, -/* 0170 */ 0x6236, 0x624B, 0x624E, 0x652F, 0x6587, 0x6597, 0x65A4, 0x65B9, -/* 0178 */ 0x65E5, 0x66F0, 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BCB, -/* 0180 */ 0x6BD4, 0x6BDB, 0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, -/* 0188 */ 0x7247, 0x7259, 0x725B, 0x72AC, 0x738B, 0x4E19, 0x4E16, 0x4E15, -/* 0190 */ 0x4E14, 0x4E18, 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, 0x4EE5, 0x4ED8, -/* 0198 */ 0x4ED4, 0x4ED5, 0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4, 0x4ED9, 0x4EDE, -/* 01A0 */ 0x5145, 0x5144, 0x5189, 0x518A, 0x51AC, 0x51F9, 0x51FA, 0x51F8, -/* 01A8 */ 0x520A, 0x52A0, 0x529F, 0x5305, 0x5306, 0x5317, 0x531D, 0x4EDF, -/* 01B0 */ 0x534A, 0x5349, 0x5361, 0x5360, 0x536F, 0x536E, 0x53BB, 0x53EF, -/* 01B8 */ 0x53E4, 0x53F3, 0x53EC, 0x53EE, 0x53E9, 0x53E8, 0x53FC, 0x53F8, -/* 01C0 */ 0x53F5, 0x53EB, 0x53E6, 0x53EA, 0x53F2, 0x53F1, 0x53F0, 0x53E5, -/* 01C8 */ 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916, 0x592E, 0x5931, 0x5974, -/* 01D0 */ 0x5976, 0x5B55, 0x5B83, 0x5C3C, 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, -/* 01D8 */ 0x5E03, 0x5E73, 0x5E7C, 0x5F01, 0x5F18, 0x5F17, 0x5FC5, 0x620A, -/* 01E0 */ 0x6253, 0x6254, 0x6252, 0x6251, 0x65A5, 0x65E6, 0x672E, 0x672C, -/* 01E8 */ 0x672A, 0x672B, 0x672D, 0x6B63, 0x6BCD, 0x6C11, 0x6C10, 0x6C38, -/* 01F0 */ 0x6C41, 0x6C40, 0x6C3E, 0x72AF, 0x7384, 0x7389, 0x74DC, 0x74E6, -/* 01F8 */ 0x7518, 0x751F, 0x7528, 0x7529, 0x7530, 0x7531, 0x7532, 0x7533, -/* 0200 */ 0x758B, 0x767D, 0x76AE, 0x76BF, 0x76EE, 0x77DB, 0x77E2, 0x77F3, -/* 0208 */ 0x793A, 0x79BE, 0x7A74, 0x7ACB, 0x4E1E, 0x4E1F, 0x4E52, 0x4E53, -/* 0210 */ 0x4E69, 0x4E99, 0x4EA4, 0x4EA6, 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, -/* 0218 */ 0x4F0A, 0x4F15, 0x4F0D, 0x4F10, 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, -/* 0220 */ 0x4EFB, 0x4EF0, 0x4EF3, 0x4EFD, 0x4F01, 0x4F0B, 0x5149, 0x5147, -/* 0228 */ 0x5146, 0x5148, 0x5168, 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, -/* 0230 */ 0x5212, 0x520E, 0x5216, 0x52A3, 0x5308, 0x5321, 0x5320, 0x5370, -/* 0238 */ 0x5371, 0x5409, 0x540F, 0x540C, 0x540A, 0x5410, 0x5401, 0x540B, -/* 0240 */ 0x5404, 0x5411, 0x540D, 0x5408, 0x5403, 0x540E, 0x5406, 0x5412, -/* 0248 */ 0x56E0, 0x56DE, 0x56DD, 0x5733, 0x5730, 0x5728, 0x572D, 0x572C, -/* 0250 */ 0x572F, 0x5729, 0x5919, 0x591A, 0x5937, 0x5938, 0x5984, 0x5978, -/* 0258 */ 0x5983, 0x597D, 0x5979, 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, -/* 0260 */ 0x5B88, 0x5B85, 0x5B89, 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, -/* 0268 */ 0x5E76, 0x5E74, 0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, -/* 0270 */ 0x620D, 0x6210, 0x6263, 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, -/* 0278 */ 0x65EC, 0x65ED, 0x66F2, 0x66F3, 0x6709, 0x673D, 0x6734, 0x6731, -/* 0280 */ 0x6735, 0x6B21, 0x6B64, 0x6B7B, 0x6C16, 0x6C5D, 0x6C57, 0x6C59, -/* 0288 */ 0x6C5F, 0x6C60, 0x6C50, 0x6C55, 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, -/* 0290 */ 0x7070, 0x725F, 0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8, 0x7F36, -/* 0298 */ 0x7F8A, 0x7FBD, 0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, -/* 02A0 */ 0x8089, 0x808B, 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, -/* 02A8 */ 0x821B, 0x821F, 0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, -/* 02B0 */ 0x8863, 0x897F, 0x9621, 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, -/* 02B8 */ 0x4F57, 0x4F5E, 0x4F34, 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, -/* 02C0 */ 0x4F3D, 0x4F3A, 0x4F38, 0x4F43, 0x4F54, 0x4F3C, 0x4F46, 0x4F63, -/* 02C8 */ 0x4F5C, 0x4F60, 0x4F2F, 0x4F4E, 0x4F36, 0x4F59, 0x4F5D, 0x4F48, -/* 02D0 */ 0x4F5A, 0x514C, 0x514B, 0x514D, 0x5175, 0x51B6, 0x51B7, 0x5225, -/* 02D8 */ 0x5224, 0x5229, 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, 0x52AC, -/* 02E0 */ 0x5323, 0x5373, 0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426, -/* 02E8 */ 0x544E, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541B, -/* 02F0 */ 0x5429, 0x544A, 0x5439, 0x543B, 0x5438, 0x542E, 0x5435, 0x5436, -/* 02F8 */ 0x5420, 0x543C, 0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA, -/* 0300 */ 0x56F0, 0x56E4, 0x56EB, 0x574A, 0x5751, 0x5740, 0x574D, 0x5747, -/* 0308 */ 0x574E, 0x573E, 0x5750, 0x574F, 0x573B, 0x58EF, 0x593E, 0x599D, -/* 0310 */ 0x5992, 0x59A8, 0x599E, 0x59A3, 0x5999, 0x5996, 0x598D, 0x59A4, -/* 0318 */ 0x5993, 0x598A, 0x59A5, 0x5B5D, 0x5B5C, 0x5B5A, 0x5B5B, 0x5B8C, -/* 0320 */ 0x5B8B, 0x5B8F, 0x5C2C, 0x5C40, 0x5C41, 0x5C3F, 0x5C3E, 0x5C90, -/* 0328 */ 0x5C91, 0x5C94, 0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F, 0x5E87, 0x5E8A, -/* 0330 */ 0x5EF7, 0x5F04, 0x5F1F, 0x5F64, 0x5F62, 0x5F77, 0x5F79, 0x5FD8, -/* 0338 */ 0x5FCC, 0x5FD7, 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA, 0x6212, -/* 0340 */ 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626D, -/* 0348 */ 0x628A, 0x627C, 0x627E, 0x6279, 0x6273, 0x6292, 0x626F, 0x6298, -/* 0350 */ 0x626E, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653B, 0x6538, -/* 0358 */ 0x65F1, 0x66F4, 0x675F, 0x674E, 0x674F, 0x6750, 0x6751, 0x675C, -/* 0360 */ 0x6756, 0x675E, 0x6749, 0x6746, 0x6760, 0x6753, 0x6757, 0x6B65, -/* 0368 */ 0x6BCF, 0x6C42, 0x6C5E, 0x6C99, 0x6C81, 0x6C88, 0x6C89, 0x6C85, -/* 0370 */ 0x6C9B, 0x6C6A, 0x6C7A, 0x6C90, 0x6C70, 0x6C8C, 0x6C68, 0x6C96, -/* 0378 */ 0x6C92, 0x6C7D, 0x6C83, 0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76, -/* 0380 */ 0x6C8D, 0x6C94, 0x6C98, 0x6C82, 0x7076, 0x707C, 0x707D, 0x7078, -/* 0388 */ 0x7262, 0x7261, 0x7260, 0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, -/* 0390 */ 0x7537, 0x7538, 0x7682, 0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, -/* 0398 */ 0x7A76, 0x7CFB, 0x7F55, 0x8096, 0x8093, 0x809D, 0x8098, 0x809B, -/* 03A0 */ 0x809A, 0x80B2, 0x826F, 0x8292, 0x828B, 0x828D, 0x898B, 0x89D2, -/* 03A8 */ 0x8A00, 0x8C37, 0x8C46, 0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, -/* 03B0 */ 0x8EAB, 0x8ECA, 0x8F9B, 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, -/* 03B8 */ 0x5DE1, 0x9091, 0x90A2, 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, -/* 03C0 */ 0x91CC, 0x9632, 0x962E, 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, -/* 03C8 */ 0x4E73, 0x4E8B, 0x4E9B, 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, -/* 03D0 */ 0x4F8D, 0x4F73, 0x4F7F, 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, -/* 03D8 */ 0x4F70, 0x4F75, 0x4F88, 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, -/* 03E0 */ 0x4F91, 0x4F7A, 0x5154, 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, -/* 03E8 */ 0x5178, 0x51BD, 0x51FD, 0x523B, 0x5238, 0x5237, 0x523A, 0x5230, -/* 03F0 */ 0x522E, 0x5236, 0x5241, 0x52BE, 0x52BB, 0x5352, 0x5354, 0x5353, -/* 03F8 */ 0x5351, 0x5366, 0x5377, 0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7, -/* 0400 */ 0x5473, 0x5475, 0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, -/* 0408 */ 0x5484, 0x5492, 0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, -/* 0410 */ 0x549A, 0x5462, 0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, -/* 0418 */ 0x5777, 0x576A, 0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, -/* 0420 */ 0x5949, 0x5947, 0x5948, 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, -/* 0428 */ 0x59B9, 0x59AE, 0x59D1, 0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, -/* 0430 */ 0x59CA, 0x59AF, 0x59B3, 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63, -/* 0438 */ 0x5B97, 0x5B9A, 0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, -/* 0440 */ 0x5C45, 0x5C46, 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1, -/* 0448 */ 0x5CB3, 0x5E18, 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78, -/* 0450 */ 0x5E9A, 0x5E97, 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, -/* 0458 */ 0x5F29, 0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, -/* 0460 */ 0x5FF5, 0x5FFF, 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, -/* 0468 */ 0x6015, 0x6021, 0x6027, 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, -/* 0470 */ 0x623F, 0x623E, 0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF, -/* 0478 */ 0x62C2, 0x62B9, 0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB, -/* 0480 */ 0x62C8, 0x62A8, 0x62BD, 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD, -/* 0488 */ 0x62B5, 0x62DA, 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC, -/* 0490 */ 0x62CE, 0x653E, 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, -/* 0498 */ 0x6606, 0x6602, 0x660E, 0x6600, 0x660F, 0x6615, 0x660A, 0x6607, -/* 04A0 */ 0x670D, 0x670B, 0x676D, 0x678B, 0x6795, 0x6771, 0x679C, 0x6773, -/* 04A8 */ 0x6777, 0x6787, 0x679D, 0x6797, 0x676F, 0x6770, 0x677F, 0x6789, -/* 04B0 */ 0x677E, 0x6790, 0x6775, 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, -/* 04B8 */ 0x6B23, 0x6B66, 0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, -/* 04C0 */ 0x6CF3, 0x6CB1, 0x6CCC, 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE, 0x6CBC, -/* 04C8 */ 0x6CE2, 0x6CAB, 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9, 0x6CC1, -/* 04D0 */ 0x6CAE, 0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, 0x6CDB, -/* 04D8 */ 0x6CCA, 0x6CAC, 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0, 0x7095, 0x708E, -/* 04E0 */ 0x7092, 0x708A, 0x7099, 0x722C, 0x722D, 0x7238, 0x7248, 0x7267, -/* 04E8 */ 0x7269, 0x72C0, 0x72CE, 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8, -/* 04F0 */ 0x739F, 0x73AB, 0x73A5, 0x753D, 0x759D, 0x7599, 0x759A, 0x7684, -/* 04F8 */ 0x76C2, 0x76F2, 0x76F4, 0x77E5, 0x77FD, 0x793E, 0x7940, 0x7941, -/* 0500 */ 0x79C9, 0x79C8, 0x7A7A, 0x7A79, 0x7AFA, 0x7CFE, 0x7F54, 0x7F8C, -/* 0508 */ 0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2, 0x80B1, 0x80A1, 0x80AB, -/* 0510 */ 0x80A9, 0x80B4, 0x80AA, 0x80AF, 0x81E5, 0x81FE, 0x820D, 0x82B3, -/* 0518 */ 0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F, 0x82B9, 0x82B1, 0x82AC, -/* 0520 */ 0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E, -/* 0528 */ 0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5, -/* 0530 */ 0x90B8, 0x90B1, 0x90B6, 0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C, -/* 0538 */ 0x9640, 0x963F, 0x963B, 0x9644, 0x9642, 0x96B9, 0x96E8, 0x9752, -/* 0540 */ 0x975E, 0x4E9F, 0x4EAD, 0x4EAE, 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, -/* 0548 */ 0x4FE0, 0x4FD1, 0x4FCF, 0x4FDD, 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, -/* 0550 */ 0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0, 0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE, -/* 0558 */ 0x4FDE, 0x4FB7, 0x5157, 0x5192, 0x5191, 0x51A0, 0x524E, 0x5243, -/* 0560 */ 0x524A, 0x524D, 0x524C, 0x524B, 0x5247, 0x52C7, 0x52C9, 0x52C3, -/* 0568 */ 0x52C1, 0x530D, 0x5357, 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0, -/* 0570 */ 0x54A8, 0x54CE, 0x54C9, 0x54B8, 0x54A6, 0x54B3, 0x54C7, 0x54C2, -/* 0578 */ 0x54BD, 0x54AA, 0x54C1, 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, -/* 0580 */ 0x54BB, 0x54A9, 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, -/* 0588 */ 0x57A3, 0x57A2, 0x57CE, 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, -/* 0590 */ 0x594E, 0x5950, 0x59DC, 0x59D8, 0x59FF, 0x59E3, 0x59E8, 0x5A03, -/* 0598 */ 0x59E5, 0x59EA, 0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69, 0x5BA3, -/* 05A0 */ 0x5BA6, 0x5BA4, 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, 0x5C4D, -/* 05A8 */ 0x5C4B, 0x5CD9, 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, 0x5E7D, -/* 05B0 */ 0x5EA0, 0x5EA6, 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, -/* 05B8 */ 0x5F8A, 0x5F8B, 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, -/* 05C0 */ 0x6025, 0x600E, 0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, -/* 05C8 */ 0x6043, 0x606C, 0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, -/* 05D0 */ 0x6309, 0x62FC, 0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, -/* 05D8 */ 0x62F7, 0x62EF, 0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302, 0x653F, -/* 05E0 */ 0x6545, 0x65AB, 0x65BD, 0x65E2, 0x6625, 0x662D, 0x6620, 0x6627, -/* 05E8 */ 0x662F, 0x661F, 0x6628, 0x6631, 0x6624, 0x66F7, 0x67FF, 0x67D3, -/* 05F0 */ 0x67F1, 0x67D4, 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, 0x67E9, -/* 05F8 */ 0x67EF, 0x67C4, 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, -/* 0600 */ 0x67DE, 0x67F3, 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, -/* 0608 */ 0x6B83, 0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, -/* 0610 */ 0x6D32, 0x6D2A, 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17, -/* 0618 */ 0x6D3B, 0x6D3D, 0x6D3E, 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, 0x6D27, -/* 0620 */ 0x6D38, 0x6D29, 0x6D2E, 0x6D35, 0x6D0E, 0x6D2B, 0x70AB, 0x70BA, -/* 0628 */ 0x70B3, 0x70AC, 0x70AF, 0x70AD, 0x70B8, 0x70AE, 0x70A4, 0x7230, -/* 0630 */ 0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0, 0x72E1, 0x73B7, 0x73CA, -/* 0638 */ 0x73BB, 0x73B2, 0x73CD, 0x73C0, 0x73B3, 0x751A, 0x752D, 0x754F, -/* 0640 */ 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2, 0x75A3, -/* 0648 */ 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3, 0x76C5, -/* 0650 */ 0x7701, 0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC, 0x7707, -/* 0658 */ 0x77DC, 0x7802, 0x7814, 0x780C, 0x780D, 0x7946, 0x7949, 0x7948, -/* 0660 */ 0x7947, 0x79B9, 0x79BA, 0x79D1, 0x79D2, 0x79CB, 0x7A7F, 0x7A81, -/* 0668 */ 0x7AFF, 0x7AFD, 0x7C7D, 0x7D02, 0x7D05, 0x7D00, 0x7D09, 0x7D07, -/* 0670 */ 0x7D04, 0x7D06, 0x7F38, 0x7F8E, 0x7FBF, 0x8004, 0x8010, 0x800D, -/* 0678 */ 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA, 0x80C3, 0x80C4, 0x80CC, -/* 0680 */ 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD, 0x81F4, 0x8222, -/* 0688 */ 0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6, 0x8304, 0x82E5, -/* 0690 */ 0x8302, 0x8309, 0x82D2, 0x82D7, 0x82F1, 0x8301, 0x82DC, 0x82D4, -/* 0698 */ 0x82D1, 0x82DE, 0x82D3, 0x82DF, 0x82EF, 0x8306, 0x8650, 0x8679, -/* 06A0 */ 0x867B, 0x867A, 0x884D, 0x886B, 0x8981, 0x89D4, 0x8A08, 0x8A02, -/* 06A8 */ 0x8A03, 0x8C9E, 0x8CA0, 0x8D74, 0x8D73, 0x8DB4, 0x8ECD, 0x8ECC, -/* 06B0 */ 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA, 0x8FE5, 0x8FED, 0x8FEB, 0x8FE4, -/* 06B8 */ 0x8FE8, 0x90CA, 0x90CE, 0x90C1, 0x90C3, 0x914B, 0x914A, 0x91CD, -/* 06C0 */ 0x9582, 0x9650, 0x964B, 0x964C, 0x964D, 0x9762, 0x9769, 0x97CB, -/* 06C8 */ 0x97ED, 0x97F3, 0x9801, 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999, -/* 06D0 */ 0x4E58, 0x4EB3, 0x500C, 0x500D, 0x5023, 0x4FEF, 0x5026, 0x5025, -/* 06D8 */ 0x4FF8, 0x5029, 0x5016, 0x5006, 0x503C, 0x501F, 0x501A, 0x5012, -/* 06E0 */ 0x5011, 0x4FFA, 0x5000, 0x5014, 0x5028, 0x4FF1, 0x5021, 0x500B, -/* 06E8 */ 0x5019, 0x5018, 0x4FF3, 0x4FEE, 0x502D, 0x502A, 0x4FFE, 0x502B, -/* 06F0 */ 0x5009, 0x517C, 0x51A4, 0x51A5, 0x51A2, 0x51CD, 0x51CC, 0x51C6, -/* 06F8 */ 0x51CB, 0x5256, 0x525C, 0x5254, 0x525B, 0x525D, 0x532A, 0x537F, -/* 0700 */ 0x539F, 0x539D, 0x53DF, 0x54E8, 0x5510, 0x5501, 0x5537, 0x54FC, -/* 0708 */ 0x54E5, 0x54F2, 0x5506, 0x54FA, 0x5514, 0x54E9, 0x54ED, 0x54E1, -/* 0710 */ 0x5509, 0x54EE, 0x54EA, 0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, -/* 0718 */ 0x5703, 0x5704, 0x57C2, 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, -/* 0720 */ 0x5957, 0x5958, 0x595A, 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, -/* 0728 */ 0x5A13, 0x59EC, 0x5A20, 0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, -/* 0730 */ 0x5B6B, 0x5C58, 0x5BB0, 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, -/* 0738 */ 0x5BB9, 0x5BB8, 0x5C04, 0x5C51, 0x5C55, 0x5C50, 0x5CED, 0x5CFD, -/* 0740 */ 0x5CFB, 0x5CEA, 0x5CE8, 0x5CF0, 0x5CF6, 0x5D01, 0x5CF4, 0x5DEE, -/* 0748 */ 0x5E2D, 0x5E2B, 0x5EAB, 0x5EAD, 0x5EA7, 0x5F31, 0x5F92, 0x5F91, -/* 0750 */ 0x5F90, 0x6059, 0x6063, 0x6065, 0x6050, 0x6055, 0x606D, 0x6069, -/* 0758 */ 0x606F, 0x6084, 0x609F, 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, -/* 0760 */ 0x6096, 0x6247, 0x62F3, 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, -/* 0768 */ 0x6355, 0x6342, 0x6346, 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, -/* 0770 */ 0x632A, 0x632B, 0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, -/* 0778 */ 0x65C1, 0x65C5, 0x6642, 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, -/* 0780 */ 0x6645, 0x6641, 0x66F8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, -/* 0788 */ 0x6848, 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68B3, -/* 0790 */ 0x6817, 0x684C, 0x6851, 0x683D, 0x67F4, 0x6850, 0x6840, 0x683C, -/* 0798 */ 0x6843, 0x682A, 0x6845, 0x6813, 0x6818, 0x6841, 0x6B8A, 0x6B89, -/* 07A0 */ 0x6BB7, 0x6C23, 0x6C27, 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, -/* 07A8 */ 0x6D95, 0x6D88, 0x6D87, 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93, -/* 07B0 */ 0x6D6C, 0x6D89, 0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, -/* 07B8 */ 0x6D79, 0x6D85, 0x6D65, 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9, -/* 07C0 */ 0x70C8, 0x70CF, 0x7239, 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8, -/* 07C8 */ 0x72F7, 0x7386, 0x73ED, 0x7409, 0x73EE, 0x73E0, 0x73EA, 0x73DE, -/* 07D0 */ 0x7554, 0x755D, 0x755C, 0x755A, 0x7559, 0x75BE, 0x75C5, 0x75C7, -/* 07D8 */ 0x75B2, 0x75B3, 0x75BD, 0x75BC, 0x75B9, 0x75C2, 0x75B8, 0x768B, -/* 07E0 */ 0x76B0, 0x76CA, 0x76CD, 0x76CE, 0x7729, 0x771F, 0x7720, 0x7728, -/* 07E8 */ 0x77E9, 0x7830, 0x7827, 0x7838, 0x781D, 0x7834, 0x7837, 0x7825, -/* 07F0 */ 0x782D, 0x7820, 0x781F, 0x7832, 0x7955, 0x7950, 0x7960, 0x795F, -/* 07F8 */ 0x7956, 0x795E, 0x795D, 0x7957, 0x795A, 0x79E4, 0x79E3, 0x79E7, -/* 0800 */ 0x79DF, 0x79E6, 0x79E9, 0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, -/* 0808 */ 0x7B11, 0x7C89, 0x7D21, 0x7D17, 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, -/* 0810 */ 0x7D14, 0x7D10, 0x7D15, 0x7D1A, 0x7D1C, 0x7D0D, 0x7D19, 0x7D1B, -/* 0818 */ 0x7F3A, 0x7F5F, 0x7F94, 0x7FC5, 0x7FC1, 0x8006, 0x8018, 0x8015, -/* 0820 */ 0x8019, 0x8017, 0x803D, 0x803F, 0x80F1, 0x8102, 0x80F0, 0x8105, -/* 0828 */ 0x80ED, 0x80F4, 0x8106, 0x80F8, 0x80F3, 0x8108, 0x80FD, 0x810A, -/* 0830 */ 0x80FC, 0x80EF, 0x81ED, 0x81EC, 0x8200, 0x8210, 0x822A, 0x822B, -/* 0838 */ 0x8228, 0x822C, 0x82BB, 0x832B, 0x8352, 0x8354, 0x834A, 0x8338, -/* 0840 */ 0x8350, 0x8349, 0x8335, 0x8334, 0x834F, 0x8332, 0x8339, 0x8336, -/* 0848 */ 0x8317, 0x8340, 0x8331, 0x8328, 0x8343, 0x8654, 0x868A, 0x86AA, -/* 0850 */ 0x8693, 0x86A4, 0x86A9, 0x868C, 0x86A3, 0x869C, 0x8870, 0x8877, -/* 0858 */ 0x8881, 0x8882, 0x887D, 0x8879, 0x8A18, 0x8A10, 0x8A0E, 0x8A0C, -/* 0860 */ 0x8A15, 0x8A0A, 0x8A17, 0x8A13, 0x8A16, 0x8A0F, 0x8A11, 0x8C48, -/* 0868 */ 0x8C7A, 0x8C79, 0x8CA1, 0x8CA2, 0x8D77, 0x8EAC, 0x8ED2, 0x8ED4, -/* 0870 */ 0x8ECF, 0x8FB1, 0x9001, 0x9006, 0x8FF7, 0x9000, 0x8FFA, 0x8FF4, -/* 0878 */ 0x9003, 0x8FFD, 0x9005, 0x8FF8, 0x9095, 0x90E1, 0x90DD, 0x90E2, -/* 0880 */ 0x9152, 0x914D, 0x914C, 0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9, -/* 0888 */ 0x9583, 0x9662, 0x9663, 0x9661, 0x965B, 0x965D, 0x9664, 0x9658, -/* 0890 */ 0x965E, 0x96BB, 0x98E2, 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, -/* 0898 */ 0x9B3C, 0x4E7E, 0x507A, 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, -/* 08A0 */ 0x505A, 0x5049, 0x5065, 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, -/* 08A8 */ 0x5077, 0x504F, 0x500F, 0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, -/* 08B0 */ 0x526A, 0x526F, 0x52D2, 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, -/* 08B8 */ 0x5319, 0x533F, 0x5340, 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, -/* 08C0 */ 0x5566, 0x5544, 0x555E, 0x5561, 0x5543, 0x554A, 0x5531, 0x5556, -/* 08C8 */ 0x554F, 0x5555, 0x552F, 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, -/* 08D0 */ 0x5563, 0x5533, 0x5541, 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, -/* 08D8 */ 0x5805, 0x580A, 0x5806, 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, -/* 08E0 */ 0x57F7, 0x57F9, 0x5920, 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, -/* 08E8 */ 0x5A6A, 0x5A40, 0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, -/* 08F0 */ 0x5BC7, 0x5BC5, 0x5BC4, 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, -/* 08F8 */ 0x5C07, 0x5C60, 0x5C5C, 0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, -/* 0900 */ 0x5D16, 0x5D22, 0x5D11, 0x5D29, 0x5D14, 0x5D19, 0x5D24, 0x5D27, -/* 0908 */ 0x5D17, 0x5DE2, 0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, -/* 0910 */ 0x5EB6, 0x5EB5, 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, -/* 0918 */ 0x5F6B, 0x5F97, 0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, -/* 0920 */ 0x607F, 0x60A3, 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, -/* 0928 */ 0x60BD, 0x60C5, 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, -/* 0930 */ 0x60C6, 0x60DF, 0x60B8, 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, -/* 0938 */ 0x63A0, 0x63A7, 0x6372, 0x6396, 0x63A2, 0x63A5, 0x6377, 0x6367, -/* 0940 */ 0x6398, 0x63AA, 0x6371, 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B, -/* 0948 */ 0x63A8, 0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F, -/* 0950 */ 0x6380, 0x637B, 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, 0x6551, -/* 0958 */ 0x6559, 0x6557, 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, -/* 0960 */ 0x659B, 0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, -/* 0968 */ 0x6664, 0x6668, 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, -/* 0970 */ 0x68AF, 0x68A2, 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, -/* 0978 */ 0x6897, 0x68B0, 0x6883, 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, -/* 0980 */ 0x689D, 0x68A8, 0x689F, 0x68A1, 0x6882, 0x6B32, 0x6BBA, 0x6BEB, -/* 0988 */ 0x6BEC, 0x6C2B, 0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2, 0x6DE1, -/* 0990 */ 0x6DCC, 0x6DE4, 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB, 0x6DAF, -/* 0998 */ 0x6DD1, 0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, 0x6DC5, -/* 09A0 */ 0x6DD2, 0x6E1A, 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1, -/* 09A8 */ 0x6DEE, 0x6DE8, 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, -/* 09B0 */ 0x70F9, 0x7109, 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D, 0x7281, -/* 09B8 */ 0x731C, 0x731B, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740A, -/* 09C0 */ 0x7403, 0x7406, 0x73FE, 0x740D, 0x74E0, 0x74F6, 0x74F7, 0x751C, -/* 09C8 */ 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758F, 0x75D4, 0x75D5, -/* 09D0 */ 0x75B5, 0x75CA, 0x75CD, 0x768E, 0x76D4, 0x76D2, 0x76DB, 0x7737, -/* 09D8 */ 0x773E, 0x773C, 0x7736, 0x7738, 0x773A, 0x786B, 0x7843, 0x784E, -/* 09E0 */ 0x7965, 0x7968, 0x796D, 0x79FB, 0x7A92, 0x7A95, 0x7B20, 0x7B28, -/* 09E8 */ 0x7B1B, 0x7B2C, 0x7B26, 0x7B19, 0x7B1E, 0x7B2E, 0x7C92, 0x7C97, -/* 09F0 */ 0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E, 0x7D39, 0x7D3C, 0x7D40, -/* 09F8 */ 0x7D30, 0x7D33, 0x7D44, 0x7D2F, 0x7D42, 0x7D32, 0x7D31, 0x7F3D, -/* 0A00 */ 0x7F9E, 0x7F9A, 0x7FCC, 0x7FCE, 0x7FD2, 0x801C, 0x804A, 0x8046, -/* 0A08 */ 0x812F, 0x8116, 0x8123, 0x812B, 0x8129, 0x8130, 0x8124, 0x8202, -/* 0A10 */ 0x8235, 0x8237, 0x8236, 0x8239, 0x838E, 0x839E, 0x8398, 0x8378, -/* 0A18 */ 0x83A2, 0x8396, 0x83BD, 0x83AB, 0x8392, 0x838A, 0x8393, 0x8389, -/* 0A20 */ 0x83A0, 0x8377, 0x837B, 0x837C, 0x8386, 0x83A7, 0x8655, 0x5F6A, -/* 0A28 */ 0x86C7, 0x86C0, 0x86B6, 0x86C4, 0x86B5, 0x86C6, 0x86CB, 0x86B1, -/* 0A30 */ 0x86AF, 0x86C9, 0x8853, 0x889E, 0x8888, 0x88AB, 0x8892, 0x8896, -/* 0A38 */ 0x888D, 0x888B, 0x8993, 0x898F, 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, -/* 0A40 */ 0x8A31, 0x8A2D, 0x8A1F, 0x8A1B, 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, -/* 0A48 */ 0x8CAC, 0x8CAB, 0x8CA8, 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, -/* 0A50 */ 0x8DBA, 0x8EDB, 0x8EDF, 0x9019, 0x900D, 0x901A, 0x9017, 0x9023, -/* 0A58 */ 0x901F, 0x901D, 0x9010, 0x9015, 0x901E, 0x9020, 0x900F, 0x9022, -/* 0A60 */ 0x9016, 0x901B, 0x9014, 0x90E8, 0x90ED, 0x90FD, 0x9157, 0x91CE, -/* 0A68 */ 0x91F5, 0x91E6, 0x91E3, 0x91E7, 0x91ED, 0x91E9, 0x9589, 0x966A, -/* 0A70 */ 0x9675, 0x9673, 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966C, -/* 0A78 */ 0x96C0, 0x96EA, 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A, -/* 0A80 */ 0x9CE5, 0x9E75, 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, -/* 0A88 */ 0x5099, 0x5091, 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, -/* 0A90 */ 0x5272, 0x5274, 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, -/* 0A98 */ 0x53A5, 0x557B, 0x5580, 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, -/* 0AA0 */ 0x5582, 0x559C, 0x55AA, 0x5594, 0x5587, 0x558B, 0x5583, 0x55B3, -/* 0AA8 */ 0x55AE, 0x559F, 0x553E, 0x55B2, 0x559A, 0x55BB, 0x55AC, 0x55B1, -/* 0AB0 */ 0x557E, 0x5589, 0x55AB, 0x5599, 0x570D, 0x582F, 0x582A, 0x5834, -/* 0AB8 */ 0x5824, 0x5830, 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9, 0x58FA, -/* 0AC0 */ 0x5960, 0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, -/* 0AC8 */ 0x5B71, 0x5BD2, 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, -/* 0AD0 */ 0x5D4C, 0x5D50, 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, -/* 0AD8 */ 0x5E43, 0x5E7E, 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, -/* 0AE0 */ 0x5FA9, 0x5FAA, 0x5FA8, 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, -/* 0AE8 */ 0x611C, 0x6123, 0x60FA, 0x6115, 0x60F0, 0x60FB, 0x60F4, 0x6168, -/* 0AF0 */ 0x60F1, 0x610E, 0x60F6, 0x6109, 0x6100, 0x6112, 0x621F, 0x6249, -/* 0AF8 */ 0x63A3, 0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6, 0x63CD, -/* 0B00 */ 0x63D2, 0x63E3, 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE, 0x6376, -/* 0B08 */ 0x63F4, 0x63EA, 0x63DB, 0x6452, 0x63DA, 0x63F9, 0x655E, 0x6566, -/* 0B10 */ 0x6562, 0x6563, 0x6591, 0x6590, 0x65AF, 0x666E, 0x6670, 0x6674, -/* 0B18 */ 0x6676, 0x666F, 0x6691, 0x667A, 0x667E, 0x6677, 0x66FE, 0x66FF, -/* 0B20 */ 0x671F, 0x671D, 0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7, 0x6905, -/* 0B28 */ 0x68DF, 0x68F5, 0x68EE, 0x68E7, 0x68F9, 0x68D2, 0x68F2, 0x68E3, -/* 0B30 */ 0x68CB, 0x68CD, 0x690D, 0x6912, 0x690E, 0x68C9, 0x68DA, 0x696E, -/* 0B38 */ 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98, 0x6B96, 0x6BBC, 0x6BEF, -/* 0B40 */ 0x6C2E, 0x6C2F, 0x6C2C, 0x6E2F, 0x6E38, 0x6E54, 0x6E21, 0x6E32, -/* 0B48 */ 0x6E67, 0x6E4A, 0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B, 0x6E58, -/* 0B50 */ 0x6E24, 0x6E56, 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, 0x6E4D, -/* 0B58 */ 0x6E3A, 0x6E2C, 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB, 0x6E89, 0x6E19, -/* 0B60 */ 0x6E4E, 0x6E63, 0x6E44, 0x6E72, 0x6E69, 0x6E5F, 0x7119, 0x711A, -/* 0B68 */ 0x7126, 0x7130, 0x7121, 0x7136, 0x716E, 0x711C, 0x724C, 0x7284, -/* 0B70 */ 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743A, 0x742A, 0x7433, -/* 0B78 */ 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742F, 0x741B, 0x7426, -/* 0B80 */ 0x7428, 0x7525, 0x7526, 0x756B, 0x756A, 0x75E2, 0x75DB, 0x75E3, -/* 0B88 */ 0x75D9, 0x75D8, 0x75DE, 0x75E0, 0x767B, 0x767C, 0x7696, 0x7693, -/* 0B90 */ 0x76B4, 0x76DC, 0x774F, 0x77ED, 0x785D, 0x786C, 0x786F, 0x7A0D, -/* 0B98 */ 0x7A08, 0x7A0B, 0x7A05, 0x7A00, 0x7A98, 0x7A97, 0x7A96, 0x7AE5, -/* 0BA0 */ 0x7AE3, 0x7B49, 0x7B56, 0x7B46, 0x7B50, 0x7B52, 0x7B54, 0x7B4D, -/* 0BA8 */ 0x7B4B, 0x7B4F, 0x7B51, 0x7C9F, 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, -/* 0BB0 */ 0x7D55, 0x7D2B, 0x7D6E, 0x7D72, 0x7D61, 0x7D66, 0x7D62, 0x7D70, -/* 0BB8 */ 0x7D73, 0x5584, 0x7FD4, 0x7FD5, 0x800B, 0x8052, 0x8085, 0x8155, -/* 0BC0 */ 0x8154, 0x814B, 0x8151, 0x814E, 0x8139, 0x8146, 0x813E, 0x814C, -/* 0BC8 */ 0x8153, 0x8174, 0x8212, 0x821C, 0x83E9, 0x8403, 0x83F8, 0x840D, -/* 0BD0 */ 0x83E0, 0x83C5, 0x840B, 0x83C1, 0x83EF, 0x83F1, 0x83F4, 0x8457, -/* 0BD8 */ 0x840A, 0x83F0, 0x840C, 0x83CC, 0x83FD, 0x83F2, 0x83CA, 0x8438, -/* 0BE0 */ 0x840E, 0x8404, 0x83DC, 0x8407, 0x83D4, 0x83DF, 0x865B, 0x86DF, -/* 0BE8 */ 0x86D9, 0x86ED, 0x86D4, 0x86DB, 0x86E4, 0x86D0, 0x86DE, 0x8857, -/* 0BF0 */ 0x88C1, 0x88C2, 0x88B1, 0x8983, 0x8996, 0x8A3B, 0x8A60, 0x8A55, -/* 0BF8 */ 0x8A5E, 0x8A3C, 0x8A41, 0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, -/* 0C00 */ 0x8A3A, 0x8A36, 0x8A56, 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, -/* 0C08 */ 0x8CBD, 0x8CC1, 0x8CBB, 0x8CC0, 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, -/* 0C10 */ 0x8CB8, 0x8D8A, 0x8D85, 0x8D81, 0x8DCE, 0x8DDD, 0x8DCB, 0x8DDA, -/* 0C18 */ 0x8DD1, 0x8DCC, 0x8DDB, 0x8DC6, 0x8EFB, 0x8EF8, 0x8EFC, 0x8F9C, -/* 0C20 */ 0x902E, 0x9035, 0x9031, 0x9038, 0x9032, 0x9036, 0x9102, 0x90F5, -/* 0C28 */ 0x9109, 0x90FE, 0x9163, 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, -/* 0C30 */ 0x9209, 0x921E, 0x920D, 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, -/* 0C38 */ 0x958B, 0x9591, 0x9593, 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, -/* 0C40 */ 0x967D, 0x9685, 0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, -/* 0C48 */ 0x96C4, 0x96C6, 0x96C7, 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, -/* 0C50 */ 0x9808, 0x98E7, 0x98EA, 0x98EF, 0x98E9, 0x98F2, 0x98ED, 0x99AE, -/* 0C58 */ 0x99AD, 0x9EC3, 0x9ECD, 0x9ED1, 0x4E82, 0x50AD, 0x50B5, 0x50B2, -/* 0C60 */ 0x50B3, 0x50C5, 0x50BE, 0x50AC, 0x50B7, 0x50BB, 0x50AF, 0x50C7, -/* 0C68 */ 0x527F, 0x5277, 0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2, 0x52E3, -/* 0C70 */ 0x532F, 0x55DF, 0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, -/* 0C78 */ 0x55D1, 0x55E3, 0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, -/* 0C80 */ 0x55E5, 0x55C9, 0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, -/* 0C88 */ 0x585A, 0x5854, 0x586B, 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, -/* 0C90 */ 0x584B, 0x5967, 0x5AC1, 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC, -/* 0C98 */ 0x5AB3, 0x5AC2, 0x5AB2, 0x5D69, 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, -/* 0CA0 */ 0x5EC8, 0x5F12, 0x5F59, 0x5FAC, 0x5FAE, 0x611A, 0x610F, 0x6148, -/* 0CA8 */ 0x611F, 0x60F3, 0x611B, 0x60F9, 0x6101, 0x6108, 0x614E, 0x614C, -/* 0CB0 */ 0x6144, 0x614D, 0x613E, 0x6134, 0x6127, 0x610D, 0x6106, 0x6137, -/* 0CB8 */ 0x6221, 0x6222, 0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D, -/* 0CC0 */ 0x642C, 0x640F, 0x641C, 0x6414, 0x640D, 0x6436, 0x6416, 0x6417, -/* 0CC8 */ 0x6406, 0x656C, 0x659F, 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688, -/* 0CD0 */ 0x6696, 0x6684, 0x6698, 0x668D, 0x6703, 0x6994, 0x696D, 0x695A, -/* 0CD8 */ 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694A, 0x6968, -/* 0CE0 */ 0x696B, 0x695E, 0x6953, 0x6979, 0x6986, 0x695D, 0x6963, 0x695B, -/* 0CE8 */ 0x6B47, 0x6B72, 0x6BC0, 0x6BBF, 0x6BD3, 0x6BFD, 0x6EA2, 0x6EAF, -/* 0CF0 */ 0x6ED3, 0x6EB6, 0x6EC2, 0x6E90, 0x6E9D, 0x6EC7, 0x6EC5, 0x6EA5, -/* 0CF8 */ 0x6E98, 0x6EBC, 0x6EBA, 0x6EAB, 0x6ED1, 0x6E96, 0x6E9C, 0x6EC4, -/* 0D00 */ 0x6ED4, 0x6EAA, 0x6EA7, 0x6EB4, 0x714E, 0x7159, 0x7169, 0x7164, -/* 0D08 */ 0x7149, 0x7167, 0x715C, 0x716C, 0x7166, 0x714C, 0x7165, 0x715E, -/* 0D10 */ 0x7146, 0x7168, 0x7156, 0x723A, 0x7252, 0x7337, 0x7345, 0x733F, -/* 0D18 */ 0x733E, 0x746F, 0x745A, 0x7455, 0x745F, 0x745E, 0x7441, 0x743F, -/* 0D20 */ 0x7459, 0x745B, 0x745C, 0x7576, 0x7578, 0x7600, 0x75F0, 0x7601, -/* 0D28 */ 0x75F2, 0x75F1, 0x75FA, 0x75FF, 0x75F4, 0x75F3, 0x76DE, 0x76DF, -/* 0D30 */ 0x775B, 0x776B, 0x7766, 0x775E, 0x7763, 0x7779, 0x776A, 0x776C, -/* 0D38 */ 0x775C, 0x7765, 0x7768, 0x7762, 0x77EE, 0x788E, 0x78B0, 0x7897, -/* 0D40 */ 0x7898, 0x788C, 0x7889, 0x787C, 0x7891, 0x7893, 0x787F, 0x797A, -/* 0D48 */ 0x797F, 0x7981, 0x842C, 0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14, -/* 0D50 */ 0x7A1F, 0x7A1E, 0x7A9F, 0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, -/* 0D58 */ 0x7B67, 0x7CB1, 0x7CB3, 0x7CB5, 0x7D93, 0x7D79, 0x7D91, 0x7D81, -/* 0D60 */ 0x7D8F, 0x7D5B, 0x7F6E, 0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8, -/* 0D68 */ 0x7FA4, 0x8056, 0x8058, 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, -/* 0D70 */ 0x8165, 0x816E, 0x8173, 0x816B, 0x8179, 0x817A, 0x8166, 0x8205, -/* 0D78 */ 0x8247, 0x8482, 0x8477, 0x843D, 0x8431, 0x8475, 0x8466, 0x846B, -/* 0D80 */ 0x8449, 0x846C, 0x845B, 0x843C, 0x8435, 0x8461, 0x8463, 0x8469, -/* 0D88 */ 0x846D, 0x8446, 0x865E, 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, -/* 0D90 */ 0x8707, 0x8700, 0x86FE, 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, -/* 0D98 */ 0x8859, 0x88DF, 0x88D4, 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, -/* 0DA0 */ 0x88CA, 0x88D5, 0x88D2, 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, -/* 0DA8 */ 0x8A66, 0x8A69, 0x8A70, 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, -/* 0DB0 */ 0x8A85, 0x8A6D, 0x8A62, 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, -/* 0DB8 */ 0x8A68, 0x8C62, 0x8C8A, 0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, -/* 0DC0 */ 0x8CB2, 0x8CC3, 0x8CC2, 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, -/* 0DC8 */ 0x8DF3, 0x8DFA, 0x8DEA, 0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, -/* 0DD0 */ 0x8EFE, 0x8F0A, 0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, -/* 0DD8 */ 0x9054, 0x903C, 0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, -/* 0DE0 */ 0x9051, 0x903E, 0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, -/* 0DE8 */ 0x91C9, 0x9237, 0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, -/* 0DF0 */ 0x924B, 0x9264, 0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, -/* 0DF8 */ 0x923F, 0x925A, 0x9598, 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, -/* 0E00 */ 0x96C9, 0x96CA, 0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, -/* 0E08 */ 0x9776, 0x9810, 0x9811, 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, -/* 0E10 */ 0x98F4, 0x98FD, 0x98FE, 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9, -/* 0E18 */ 0x9E82, 0x9F0E, 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6, -/* 0E20 */ 0x50ED, 0x50DA, 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, -/* 0E28 */ 0x5162, 0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, -/* 0E30 */ 0x561B, 0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, -/* 0E38 */ 0x55F7, 0x5616, 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, -/* 0E40 */ 0x5875, 0x587E, 0x5883, 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, -/* 0E48 */ 0x58FD, 0x5925, 0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6, -/* 0E50 */ 0x5AE9, 0x5AD7, 0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7, -/* 0E58 */ 0x5BE1, 0x5BE5, 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D, -/* 0E60 */ 0x5C62, 0x5D84, 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, 0x5E54, -/* 0E68 */ 0x5ED3, 0x5ED6, 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0x613F, -/* 0E70 */ 0x614B, 0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 0x6175, -/* 0E78 */ 0x622A, 0x6487, 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, -/* 0E80 */ 0x6451, 0x6467, 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, 0x65D7, -/* 0E88 */ 0x65D6, 0x66A2, 0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, -/* 0E90 */ 0x69AE, 0x69D3, 0x69CB, 0x699B, 0x69B7, 0x69BB, 0x69AB, 0x69B4, -/* 0E98 */ 0x69D0, 0x69CD, 0x69AD, 0x69CC, 0x69A6, 0x69C3, 0x69A3, 0x6B49, -/* 0EA0 */ 0x6B4C, 0x6C33, 0x6F33, 0x6F14, 0x6EFE, 0x6F13, 0x6EF4, 0x6F29, -/* 0EA8 */ 0x6F3E, 0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22, 0x6EFF, 0x6EEF, -/* 0EB0 */ 0x6F06, 0x6F31, 0x6F38, 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F, -/* 0EB8 */ 0x6F88, 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2, 0x6ECC, 0x6EF7, 0x7194, -/* 0EC0 */ 0x7199, 0x717D, 0x718A, 0x7184, 0x7192, 0x723E, 0x7292, 0x7296, -/* 0EC8 */ 0x7344, 0x7350, 0x7464, 0x7463, 0x746A, 0x7470, 0x746D, 0x7504, -/* 0ED0 */ 0x7591, 0x7627, 0x760D, 0x760B, 0x7609, 0x7613, 0x76E1, 0x76E3, -/* 0ED8 */ 0x7784, 0x777D, 0x777F, 0x7761, 0x78C1, 0x789F, 0x78A7, 0x78B3, -/* 0EE0 */ 0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D, 0x7A2E, 0x7A31, 0x7AAA, -/* 0EE8 */ 0x7AA9, 0x7AED, 0x7AEF, 0x7BA1, 0x7B95, 0x7B8B, 0x7B75, 0x7B97, -/* 0EF0 */ 0x7B9D, 0x7B94, 0x7B8F, 0x7BB8, 0x7B87, 0x7B84, 0x7CB9, 0x7CBD, -/* 0EF8 */ 0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0, 0x7DCA, -/* 0F00 */ 0x7DB4, 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8, -/* 0F08 */ 0x7DAD, 0x7DD2, 0x7DC7, 0x7DAC, 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, -/* 0F10 */ 0x805E, 0x805A, 0x8087, 0x8150, 0x8180, 0x818F, 0x8188, 0x818A, -/* 0F18 */ 0x817F, 0x8182, 0x81E7, 0x81FA, 0x8207, 0x8214, 0x821E, 0x824B, -/* 0F20 */ 0x84C9, 0x84BF, 0x84C6, 0x84C4, 0x8499, 0x849E, 0x84B2, 0x849C, -/* 0F28 */ 0x84CB, 0x84B8, 0x84C0, 0x84D3, 0x8490, 0x84BC, 0x84D1, 0x84CA, -/* 0F30 */ 0x873F, 0x871C, 0x873B, 0x8722, 0x8725, 0x8734, 0x8718, 0x8755, -/* 0F38 */ 0x8737, 0x8729, 0x88F3, 0x8902, 0x88F4, 0x88F9, 0x88F8, 0x88FD, -/* 0F40 */ 0x88E8, 0x891A, 0x88EF, 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, -/* 0F48 */ 0x8AA1, 0x8A93, 0x8AA4, 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, -/* 0F50 */ 0x8A9A, 0x8AA7, 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, -/* 0F58 */ 0x8D6B, 0x8D99, 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, -/* 0F60 */ 0x8FA3, 0x9060, 0x9058, 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, -/* 0F68 */ 0x905D, 0x905B, 0x9119, 0x9118, 0x911E, 0x9175, 0x9178, 0x9177, -/* 0F70 */ 0x9174, 0x9278, 0x9280, 0x9285, 0x9298, 0x9296, 0x927B, 0x9293, -/* 0F78 */ 0x929C, 0x92A8, 0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9, 0x95A3, -/* 0F80 */ 0x95A5, 0x95A4, 0x9699, 0x969C, 0x969B, 0x96CC, 0x96D2, 0x9700, -/* 0F88 */ 0x977C, 0x9785, 0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1, 0x9903, -/* 0F90 */ 0x9905, 0x990C, 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, -/* 0F98 */ 0x9B42, 0x9CF4, 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, -/* 0FA0 */ 0x5100, 0x50FB, 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, -/* 0FA8 */ 0x51DC, 0x5287, 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, -/* 0FB0 */ 0x562E, 0x563B, 0x5639, 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, -/* 0FB8 */ 0x564E, 0x5657, 0x5674, 0x5636, 0x562F, 0x5630, 0x5880, 0x589F, -/* 0FC0 */ 0x589E, 0x58B3, 0x589C, 0x58AE, 0x58A9, 0x58A6, 0x596D, 0x5B09, -/* 0FC8 */ 0x5AFB, 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC, 0x5BE9, -/* 0FD0 */ 0x5BEB, 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, 0x5E61, -/* 0FD8 */ 0x5EE2, 0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, -/* 0FE0 */ 0x5FB7, 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182, -/* 0FE8 */ 0x617C, 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB, 0x618E, -/* 0FF0 */ 0x61AC, 0x619A, 0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469, 0x646F, -/* 0FF8 */ 0x6479, 0x649E, 0x64B2, 0x6488, 0x6490, 0x64B0, 0x64A5, 0x6493, -/* 1000 */ 0x6495, 0x64A9, 0x6492, 0x64AE, 0x64AD, 0x64AB, 0x649A, 0x64AC, -/* 1008 */ 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577, 0x6578, 0x66AE, 0x66AB, -/* 1010 */ 0x66B4, 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01, 0x6A1E, 0x6A19, -/* 1018 */ 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05, 0x69ED, -/* 1020 */ 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, 0x6F7C, -/* 1028 */ 0x6F84, 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, 0x6F78, -/* 1030 */ 0x6F6E, 0x6F8E, 0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58, 0x6ED5, -/* 1038 */ 0x6F6F, 0x6F60, 0x6F5F, 0x719F, 0x71AC, 0x71B1, 0x71A8, 0x7256, -/* 1040 */ 0x729B, 0x734E, 0x7357, 0x7469, 0x748B, 0x7483, 0x747E, 0x7480, -/* 1048 */ 0x757F, 0x7620, 0x7629, 0x761F, 0x7624, 0x7626, 0x7621, 0x7622, -/* 1050 */ 0x769A, 0x76BA, 0x76E4, 0x778E, 0x7787, 0x778C, 0x7791, 0x778B, -/* 1058 */ 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5, 0x78BC, 0x78D0, -/* 1060 */ 0x7A3F, 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B, 0x7AAF, 0x7AAE, -/* 1068 */ 0x7BAD, 0x7BB1, 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, 0x7BC1, 0x7BA0, -/* 1070 */ 0x7BCC, 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB, 0x7DD8, 0x7DEC, -/* 1078 */ 0x7DDD, 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9, 0x7D9E, 0x7DD9, -/* 1080 */ 0x7DF2, 0x7DF9, 0x7F75, 0x7F77, 0x7FAF, 0x7FE9, 0x8026, 0x819B, -/* 1088 */ 0x819C, 0x819D, 0x81A0, 0x819A, 0x8198, 0x8517, 0x853D, 0x851A, -/* 1090 */ 0x84EE, 0x852C, 0x852D, 0x8513, 0x8511, 0x8523, 0x8521, 0x8514, -/* 1098 */ 0x84EC, 0x8525, 0x84FF, 0x8506, 0x8782, 0x8774, 0x8776, 0x8760, -/* 10A0 */ 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874C, 0x8753, 0x885B, -/* 10A8 */ 0x885D, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915, 0x890A, 0x8ABC, -/* 10B0 */ 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95, 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, -/* 10B8 */ 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6, 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, -/* 10C0 */ 0x8C4C, 0x8C4E, 0x8C6C, 0x8CE0, 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, -/* 10C8 */ 0x8CED, 0x8CE2, 0x8CE3, 0x8CDC, 0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, -/* 10D0 */ 0x8DA3, 0x8E2B, 0x8E10, 0x8E1D, 0x8E22, 0x8E0F, 0x8E29, 0x8E1F, -/* 10D8 */ 0x8E21, 0x8E1E, 0x8EBA, 0x8F1D, 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, -/* 10E0 */ 0x8F2A, 0x8F1C, 0x8F1E, 0x8F25, 0x9069, 0x906E, 0x9068, 0x906D, -/* 10E8 */ 0x9077, 0x9130, 0x912D, 0x9127, 0x9131, 0x9187, 0x9189, 0x918B, -/* 10F0 */ 0x9183, 0x92C5, 0x92BB, 0x92B7, 0x92EA, 0x92AC, 0x92E4, 0x92C1, -/* 10F8 */ 0x92B3, 0x92BC, 0x92D2, 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, -/* 1100 */ 0x9704, 0x9706, 0x9707, 0x9709, 0x9760, 0x978D, 0x978B, 0x978F, -/* 1108 */ 0x9821, 0x982B, 0x981C, 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, -/* 1110 */ 0x99DD, 0x99D0, 0x99DF, 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, -/* 1118 */ 0x9AB7, 0x9AEE, 0x9AEF, 0x9B27, 0x9B45, 0x9B44, 0x9B77, 0x9B6F, -/* 1120 */ 0x9D06, 0x9D09, 0x9D03, 0x9EA9, 0x9EBE, 0x9ECE, 0x58A8, 0x9F52, -/* 1128 */ 0x5112, 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51AA, 0x51DD, -/* 1130 */ 0x5291, 0x5293, 0x52F3, 0x5659, 0x566B, 0x5679, 0x5669, 0x5664, -/* 1138 */ 0x5678, 0x566A, 0x5668, 0x5665, 0x5671, 0x566F, 0x566C, 0x5662, -/* 1140 */ 0x5676, 0x58C1, 0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, -/* 1148 */ 0x5B78, 0x5BF0, 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, -/* 1150 */ 0x61CD, 0x61B6, 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, -/* 1158 */ 0x64CB, 0x64BB, 0x64BC, 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, -/* 1160 */ 0x64BF, 0x64D2, 0x64D4, 0x64BE, 0x6574, 0x66C6, 0x66C9, 0x66B9, -/* 1168 */ 0x66C4, 0x66C7, 0x66B8, 0x6A3D, 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, -/* 1170 */ 0x6A58, 0x6A39, 0x6A44, 0x6A62, 0x6A61, 0x6A4B, 0x6A47, 0x6A35, -/* 1178 */ 0x6A5F, 0x6A48, 0x6B59, 0x6B77, 0x6C05, 0x6FC2, 0x6FB1, 0x6FA1, -/* 1180 */ 0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, -/* 1188 */ 0x6FA6, 0x6FA0, 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, -/* 1190 */ 0x71D5, 0x71B9, 0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, -/* 1198 */ 0x749C, 0x74A3, 0x7498, 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D, -/* 11A0 */ 0x7634, 0x7638, 0x763A, 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F, -/* 11A8 */ 0x77A5, 0x78E8, 0x78DA, 0x78EC, 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, -/* 11B0 */ 0x7A46, 0x7A4C, 0x7A4B, 0x7ABA, 0x7BD9, 0x7C11, 0x7BC9, 0x7BE4, -/* 11B8 */ 0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, 0x7E0A, 0x7E11, -/* 11C0 */ 0x7E08, 0x7E1B, 0x7E23, 0x7E1E, 0x7E1D, 0x7E09, 0x7E10, 0x7F79, -/* 11C8 */ 0x7FB2, 0x7FF0, 0x7FF1, 0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8, -/* 11D0 */ 0x81FB, 0x8208, 0x8258, 0x8259, 0x854A, 0x8559, 0x8548, 0x8568, -/* 11D8 */ 0x8569, 0x8543, 0x8549, 0x856D, 0x856A, 0x855E, 0x8783, 0x879F, -/* 11E0 */ 0x879E, 0x87A2, 0x878D, 0x8861, 0x892A, 0x8932, 0x8925, 0x892B, -/* 11E8 */ 0x8921, 0x89AA, 0x89A6, 0x8AE6, 0x8AFA, 0x8AEB, 0x8AF1, 0x8B00, -/* 11F0 */ 0x8ADC, 0x8AE7, 0x8AEE, 0x8AFE, 0x8B01, 0x8B02, 0x8AF7, 0x8AED, -/* 11F8 */ 0x8AF3, 0x8AF6, 0x8AFC, 0x8C6B, 0x8C6D, 0x8C93, 0x8CF4, 0x8E44, -/* 1200 */ 0x8E31, 0x8E34, 0x8E42, 0x8E39, 0x8E35, 0x8F3B, 0x8F2F, 0x8F38, -/* 1208 */ 0x8F33, 0x8FA8, 0x8FA6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907C, -/* 1210 */ 0x907A, 0x9134, 0x9192, 0x9320, 0x9336, 0x92F8, 0x9333, 0x932F, -/* 1218 */ 0x9322, 0x92FC, 0x932B, 0x9304, 0x931A, 0x9310, 0x9326, 0x9321, -/* 1220 */ 0x9315, 0x932E, 0x9319, 0x95BB, 0x96A7, 0x96A8, 0x96AA, 0x96D5, -/* 1228 */ 0x970E, 0x9711, 0x9716, 0x970D, 0x9713, 0x970F, 0x975B, 0x975C, -/* 1230 */ 0x9766, 0x9798, 0x9830, 0x9838, 0x983B, 0x9837, 0x982D, 0x9839, -/* 1238 */ 0x9824, 0x9910, 0x9928, 0x991E, 0x991B, 0x9921, 0x991A, 0x99ED, -/* 1240 */ 0x99E2, 0x99F1, 0x9AB8, 0x9ABC, 0x9AFB, 0x9AED, 0x9B28, 0x9B91, -/* 1248 */ 0x9D15, 0x9D23, 0x9D26, 0x9D28, 0x9D12, 0x9D1B, 0x9ED8, 0x9ED4, -/* 1250 */ 0x9F8D, 0x9F9C, 0x512A, 0x511F, 0x5121, 0x5132, 0x52F5, 0x568E, -/* 1258 */ 0x5680, 0x5690, 0x5685, 0x5687, 0x568F, 0x58D5, 0x58D3, 0x58D1, -/* 1260 */ 0x58CE, 0x5B30, 0x5B2A, 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, -/* 1268 */ 0x5DBA, 0x5DBD, 0x5DB8, 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, -/* 1270 */ 0x61C7, 0x61E6, 0x61CB, 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, -/* 1278 */ 0x64E0, 0x64F0, 0x64E6, 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, -/* 1280 */ 0x6583, 0x66D9, 0x66D6, 0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, -/* 1288 */ 0x6ADB, 0x6AA3, 0x6A7E, 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, -/* 1290 */ 0x6BDA, 0x6C08, 0x6FD8, 0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, -/* 1298 */ 0x6FEB, 0x6FEF, 0x6F80, 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, -/* 12A0 */ 0x6FF0, 0x71E7, 0x71DF, 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, -/* 12A8 */ 0x71F4, 0x71E0, 0x7235, 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, -/* 12B0 */ 0x74A6, 0x74A8, 0x7646, 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, -/* 12B8 */ 0x77B0, 0x77AC, 0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, -/* 12C0 */ 0x78EF, 0x7901, 0x79A7, 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, -/* 12C8 */ 0x7BFE, 0x7BF7, 0x7C0C, 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, -/* 12D0 */ 0x7CDF, 0x7CD9, 0x7CDD, 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, -/* 12D8 */ 0x7E43, 0x7E2B, 0x7E3D, 0x7E31, 0x7E45, 0x7E41, 0x7E34, 0x7E39, -/* 12E0 */ 0x7E48, 0x7E35, 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071, -/* 12E8 */ 0x8072, 0x8070, 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, -/* 12F0 */ 0x81C0, 0x81BF, 0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, -/* 12F8 */ 0x85AA, 0x8584, 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, -/* 1300 */ 0x8587, 0x85A8, 0x858A, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, -/* 1308 */ 0x87C6, 0x87AB, 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, -/* 1310 */ 0x8944, 0x8938, 0x893D, 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, -/* 1318 */ 0x8B0A, 0x8B20, 0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F, 0x8C73, -/* 1320 */ 0x8CFA, 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B, -/* 1328 */ 0x8E48, 0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F, -/* 1330 */ 0x907D, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E, -/* 1338 */ 0x919C, 0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, -/* 1340 */ 0x9318, 0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, -/* 1348 */ 0x95CB, 0x95CC, 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, -/* 1350 */ 0x971E, 0x97A0, 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01, 0x99FF, -/* 1358 */ 0x9BAE, 0x9BAB, 0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF, -/* 1360 */ 0x9EDE, 0x9EDC, 0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2, 0x5695, -/* 1368 */ 0x56AE, 0x58D9, 0x58D8, 0x5B38, 0x5F5D, 0x61E3, 0x6233, 0x64F4, -/* 1370 */ 0x64F2, 0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7, 0x66DC, -/* 1378 */ 0x6726, 0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, 0x6AAE, -/* 1380 */ 0x6AAF, 0x6B5F, 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, 0x7006, -/* 1388 */ 0x6FFA, 0x7011, 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8, 0x7377, -/* 1390 */ 0x7375, 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658, 0x7652, 0x77BD, -/* 1398 */ 0x77BF, 0x77BB, 0x77BC, 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60, -/* 13A0 */ 0x7AC4, 0x7AC5, 0x7C2B, 0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21, -/* 13A8 */ 0x7CE7, 0x7E54, 0x7E55, 0x7E5E, 0x7E5A, 0x7E61, 0x7E52, 0x7E59, -/* 13B0 */ 0x7F48, 0x7FF9, 0x7FFB, 0x8077, 0x8076, 0x81CD, 0x81CF, 0x820A, -/* 13B8 */ 0x85CF, 0x85A9, 0x85CD, 0x85D0, 0x85C9, 0x85B0, 0x85BA, 0x85B9, -/* 13C0 */ 0x85A6, 0x87EF, 0x87EC, 0x87F2, 0x87E0, 0x8986, 0x89B2, 0x89F4, -/* 13C8 */ 0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50, 0x8D05, 0x8E59, 0x8E63, -/* 13D0 */ 0x8E66, 0x8E64, 0x8E5F, 0x8E55, 0x8EC0, 0x8F49, 0x8F4D, 0x9087, -/* 13D8 */ 0x9083, 0x9088, 0x91AB, 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396, -/* 13E0 */ 0x93A2, 0x93B3, 0x93AE, 0x93AC, 0x93B0, 0x9398, 0x939A, 0x9397, -/* 13E8 */ 0x95D4, 0x95D6, 0x95D0, 0x95D5, 0x96E2, 0x96DC, 0x96D9, 0x96DB, -/* 13F0 */ 0x96DE, 0x9724, 0x97A3, 0x97A6, 0x97AD, 0x97F9, 0x984D, 0x984F, -/* 13F8 */ 0x984C, 0x984E, 0x9853, 0x98BA, 0x993E, 0x993F, 0x993D, 0x992E, -/* 1400 */ 0x99A5, 0x9A0E, 0x9AC1, 0x9B03, 0x9B06, 0x9B4F, 0x9B4E, 0x9B4D, -/* 1408 */ 0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, -/* 1410 */ 0x9EE0, 0x9F15, 0x9F2C, 0x5133, 0x56A5, 0x58DE, 0x58DF, 0x58E2, -/* 1418 */ 0x5BF5, 0x9F90, 0x5EEC, 0x61F2, 0x61F7, 0x61F6, 0x61F5, 0x6500, -/* 1420 */ 0x650F, 0x66E0, 0x66DD, 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, -/* 1428 */ 0x701F, 0x7028, 0x701A, 0x701D, 0x7015, 0x7018, 0x7206, 0x720D, -/* 1430 */ 0x7258, 0x72A2, 0x7378, 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, -/* 1438 */ 0x7586, 0x765F, 0x7661, 0x77C7, 0x7919, 0x79B1, 0x7A6B, 0x7A69, -/* 1440 */ 0x7C3E, 0x7C3F, 0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B, 0x7E6D, -/* 1448 */ 0x7E79, 0x7E69, 0x7E6A, 0x7F85, 0x7E73, 0x7FB6, 0x7FB9, 0x7FB8, -/* 1450 */ 0x81D8, 0x85E9, 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, 0x85F7, -/* 1458 */ 0x87FB, 0x8805, 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, -/* 1460 */ 0x895E, 0x8B41, 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, -/* 1468 */ 0x8B46, 0x8B59, 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, -/* 1470 */ 0x8E6C, 0x8E7A, 0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, -/* 1478 */ 0x91B1, 0x91AE, 0x93E1, 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, -/* 1480 */ 0x93DD, 0x93D6, 0x93E2, 0x93CD, 0x93D8, 0x93E4, 0x93D7, 0x93E8, -/* 1488 */ 0x95DC, 0x96B4, 0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC, 0x97FB, -/* 1490 */ 0x985E, 0x9858, 0x985B, 0x98BC, 0x9945, 0x9949, 0x9A16, 0x9A19, -/* 1498 */ 0x9B0D, 0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, 0x9D72, -/* 14A0 */ 0x9D6A, 0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56A8, -/* 14A8 */ 0x56B7, 0x56B6, 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, -/* 14B0 */ 0x5BF6, 0x5DC9, 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, -/* 14B8 */ 0x6727, 0x6AEC, 0x703E, 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, -/* 14C0 */ 0x7662, 0x7665, 0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7, 0x7AF6, -/* 14C8 */ 0x7C4C, 0x7C43, 0x7C4D, 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D, 0x7E7C, -/* 14D0 */ 0x7E82, 0x7F4C, 0x8000, 0x81DA, 0x8266, 0x85FB, 0x85F9, 0x8611, -/* 14D8 */ 0x85FA, 0x8606, 0x860B, 0x8607, 0x860A, 0x8814, 0x8815, 0x8964, -/* 14E0 */ 0x89BA, 0x89F8, 0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F, 0x8B6B, -/* 14E8 */ 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85, 0x8E82, 0x91B4, 0x91CB, -/* 14F0 */ 0x9418, 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952, 0x9951, -/* 14F8 */ 0x99A8, 0x9A2B, 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D, 0x9E79, -/* 1500 */ 0x9EB5, 0x9EE8, 0x9F2F, 0x9F5F, 0x9F63, 0x9F61, 0x5137, 0x5138, -/* 1508 */ 0x56C1, 0x56C0, 0x56C2, 0x5914, 0x5C6C, 0x5DCD, 0x61FC, 0x61FE, -/* 1510 */ 0x651D, 0x651C, 0x6595, 0x66E9, 0x6AFB, 0x6B04, 0x6AFA, 0x6BB2, -/* 1518 */ 0x704C, 0x721B, 0x72A7, 0x74D6, 0x74D4, 0x7669, 0x77D3, 0x7C50, -/* 1520 */ 0x7E8F, 0x7E8C, 0x7FBC, 0x8617, 0x862D, 0x861A, 0x8823, 0x8822, -/* 1528 */ 0x8821, 0x881F, 0x896A, 0x896C, 0x89BD, 0x8B74, 0x8B77, 0x8B7D, -/* 1530 */ 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, 0x91BA, 0x942E, -/* 1538 */ 0x9433, 0x9435, 0x943A, 0x9438, 0x9432, 0x942B, 0x95E2, 0x9738, -/* 1540 */ 0x9739, 0x9732, 0x97FF, 0x9867, 0x9865, 0x9957, 0x9A45, 0x9A43, -/* 1548 */ 0x9A40, 0x9A3E, 0x9ACF, 0x9B54, 0x9B51, 0x9C2D, 0x9C25, 0x9DAF, -/* 1550 */ 0x9DB4, 0x9DC2, 0x9DB8, 0x9E9D, 0x9EEF, 0x9F19, 0x9F5C, 0x9F66, -/* 1558 */ 0x9F67, 0x513C, 0x513B, 0x56C8, 0x56CA, 0x56C9, 0x5B7F, 0x5DD4, -/* 1560 */ 0x5DD2, 0x5F4E, 0x61FF, 0x6524, 0x6B0A, 0x6B61, 0x7051, 0x7058, -/* 1568 */ 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C, 0x79B3, 0x7C60, 0x7C5F, -/* 1570 */ 0x807E, 0x807D, 0x81DF, 0x8972, 0x896F, 0x89FC, 0x8B80, 0x8D16, -/* 1578 */ 0x8D17, 0x8E91, 0x8E93, 0x8F61, 0x9148, 0x9444, 0x9451, 0x9452, -/* 1580 */ 0x973D, 0x973E, 0x97C3, 0x97C1, 0x986B, 0x9955, 0x9A55, 0x9A4D, -/* 1588 */ 0x9AD2, 0x9B1A, 0x9C49, 0x9C31, 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, -/* 1590 */ 0x9F34, 0x9F6C, 0x9F6A, 0x9F94, 0x56CC, 0x5DD6, 0x6200, 0x6523, -/* 1598 */ 0x652B, 0x652A, 0x66EC, 0x6B10, 0x74DA, 0x7ACA, 0x7C64, 0x7C63, -/* 15A0 */ 0x7C65, 0x7E93, 0x7E96, 0x7E94, 0x81E2, 0x8638, 0x863F, 0x8831, -/* 15A8 */ 0x8B8A, 0x9090, 0x908F, 0x9463, 0x9460, 0x9464, 0x9768, 0x986F, -/* 15B0 */ 0x995C, 0x9A5A, 0x9A5B, 0x9A57, 0x9AD3, 0x9AD4, 0x9AD1, 0x9C54, -/* 15B8 */ 0x9C57, 0x9C56, 0x9DE5, 0x9E9F, 0x9EF4, 0x56D1, 0x58E9, 0x652C, -/* 15C0 */ 0x705E, 0x7671, 0x7672, 0x77D7, 0x7F50, 0x7F88, 0x8836, 0x8839, -/* 15C8 */ 0x8862, 0x8B93, 0x8B92, 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, -/* 15D0 */ 0x9742, 0x9748, 0x9744, 0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, -/* 15D8 */ 0x9C5F, 0x9DF9, 0x9DFA, 0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, -/* 15E0 */ 0x5EF3, 0x6B16, 0x7063, 0x7C6C, 0x7C6E, 0x883B, 0x89C0, 0x8EA1, -/* 15E8 */ 0x91C1, 0x9472, 0x9470, 0x9871, 0x995E, 0x9AD6, 0x9B23, 0x9ECC, -/* 15F0 */ 0x7064, 0x77DA, 0x8B9A, 0x9477, 0x97C9, 0x9A62, 0x9A65, 0x7E9C, -/* 15F8 */ 0x8B9C, 0x8EAA, 0x91C5, 0x947D, 0x947E, 0x947C, 0x9C77, 0x9C78, -/* 1600 */ 0x9EF7, 0x8C54, 0x947F, 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, -/* 1608 */ 0x9E1E, 0x7C72, 0x30FE, 0x309D, 0x309E, 0x3005, 0x0414, 0x0415, -/* 1610 */ 0x0401, 0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, -/* 1618 */ 0x4E47, 0x4E8D, 0x56D7, 0xFA0C, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, -/* 1620 */ 0x4E0E, 0x4E2E, 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, -/* 1628 */ 0x536C, 0x53B9, 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, -/* 1630 */ 0x6BB3, 0x6BCC, 0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, -/* 1638 */ 0x4EE9, 0x4EE1, 0x4EDD, 0x4EDA, 0x520C, 0x531C, 0x534C, 0x5722, -/* 1640 */ 0x5723, 0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74, -/* 1648 */ 0x5C73, 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15, -/* 1650 */ 0x6C36, 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, 0x79B8, -/* 1658 */ 0x808A, 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 0x4EF1, -/* 1660 */ 0x4F00, 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 0x4F13, -/* 1668 */ 0x4F04, 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5209, 0x5210, 0x52A6, -/* 1670 */ 0x5322, 0x531F, 0x534D, 0x538A, 0x5407, 0x56E1, 0x56DF, 0x572E, -/* 1678 */ 0x572A, 0x5734, 0x593C, 0x5980, 0x597C, 0x5985, 0x597B, 0x597E, -/* 1680 */ 0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A, 0x5C7B, -/* 1688 */ 0x5C7E, 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74, 0x5FD5, -/* 1690 */ 0x5FD4, 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, 0x6262, -/* 1698 */ 0x6259, 0x6260, 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E, 0x6739, -/* 16A0 */ 0x6738, 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46, -/* 16A8 */ 0x6C52, 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B, 0x6C4C, 0x7071, -/* 16B0 */ 0x725E, 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, 0x7A75, 0x7F51, -/* 16B8 */ 0x8278, 0x827C, 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099, -/* 16C0 */ 0x9097, 0x9098, 0x909B, 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, -/* 16C8 */ 0x4F56, 0x4F3B, 0x4F62, 0x4F49, 0x4F53, 0x4F64, 0x4F3E, 0x4F67, -/* 16D0 */ 0x4F52, 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, 0x4F33, 0x4F3F, 0x4F61, -/* 16D8 */ 0x518F, 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD, 0x52AE, 0x5309, -/* 16E0 */ 0x5363, 0x5372, 0x538E, 0x538F, 0x5430, 0x5437, 0x542A, 0x5454, -/* 16E8 */ 0x5445, 0x5419, 0x541C, 0x5425, 0x5418, 0x543D, 0x544F, 0x5441, -/* 16F0 */ 0x5428, 0x5424, 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741, 0x5745, -/* 16F8 */ 0x574C, 0x5749, 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6, 0x5998, -/* 1700 */ 0x59A0, 0x5997, 0x598E, 0x59A2, 0x5990, 0x598F, 0x59A7, 0x59A1, -/* 1708 */ 0x5B8E, 0x5B92, 0x5C28, 0x5C2A, 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, -/* 1710 */ 0x5C89, 0x5C92, 0x5C8A, 0x5C86, 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, -/* 1718 */ 0x5E0E, 0x5E8B, 0x5E89, 0x5E8C, 0x5E88, 0x5E8D, 0x5F05, 0x5F1D, -/* 1720 */ 0x5F78, 0x5F76, 0x5FD2, 0x5FD1, 0x5FD0, 0x5FED, 0x5FE8, 0x5FEE, -/* 1728 */ 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF, 0x5FF7, 0x5FFB, -/* 1730 */ 0x6000, 0x5FF4, 0x623A, 0x6283, 0x628C, 0x628E, 0x628F, 0x6294, -/* 1738 */ 0x6287, 0x6271, 0x627B, 0x627A, 0x6270, 0x6281, 0x6288, 0x6277, -/* 1740 */ 0x627D, 0x6272, 0x6274, 0x6537, 0x65F0, 0x65F4, 0x65F3, 0x65F2, -/* 1748 */ 0x65F5, 0x6745, 0x6747, 0x6759, 0x6755, 0x674C, 0x6748, 0x675D, -/* 1750 */ 0x674D, 0x675A, 0x674B, 0x6BD0, 0x6C19, 0x6C1A, 0x6C78, 0x6C67, -/* 1758 */ 0x6C6B, 0x6C84, 0x6C8B, 0x6C8F, 0x6C71, 0x6C6F, 0x6C69, 0x6C9A, -/* 1760 */ 0x6C6D, 0x6C87, 0x6C95, 0x6C9C, 0x6C66, 0x6C73, 0x6C65, 0x6C7B, -/* 1768 */ 0x6C8E, 0x7074, 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3, 0x72C6, -/* 1770 */ 0x72C1, 0x72BA, 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, -/* 1778 */ 0x753A, 0x7539, 0x7594, 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, -/* 1780 */ 0x8099, 0x8090, 0x8092, 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, -/* 1788 */ 0x8291, 0x8293, 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, -/* 1790 */ 0x909F, 0x90A1, 0x90A5, 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, -/* 1798 */ 0x962F, 0x962D, 0x4E33, 0x4F98, 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, -/* 17A0 */ 0x4F87, 0x4F76, 0x4F74, 0x4F89, 0x4F84, 0x4F77, 0x4F4C, 0x4F97, -/* 17A8 */ 0x4F6A, 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, 0x4F9C, 0x4F94, -/* 17B0 */ 0x4F9E, 0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, 0x51BC, -/* 17B8 */ 0x51BE, 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, -/* 17C0 */ 0x530B, 0x533C, 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, -/* 17C8 */ 0x5482, 0x5488, 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, -/* 17D0 */ 0x5466, 0x548D, 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, -/* 17D8 */ 0x5464, 0x56F7, 0x56F9, 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, -/* 17E0 */ 0x5770, 0x5776, 0x5780, 0x5775, 0x577B, 0x5773, 0x5774, 0x5762, -/* 17E8 */ 0x5768, 0x577D, 0x590C, 0x5945, 0x59B5, 0x59BA, 0x59CF, 0x59CE, -/* 17F0 */ 0x59B2, 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3, 0x59D6, 0x59B1, -/* 17F8 */ 0x59BD, 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, 0x5B93, -/* 1800 */ 0x5B95, 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF, -/* 1808 */ 0x5CA8, 0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, -/* 1810 */ 0x5C9D, 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19, -/* 1818 */ 0x5F28, 0x5F22, 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D, -/* 1820 */ 0x5FDE, 0x5FE5, 0x602D, 0x6026, 0x6019, 0x6032, 0x600B, 0x6034, -/* 1828 */ 0x600A, 0x6017, 0x6033, 0x601A, 0x601E, 0x602C, 0x6022, 0x600D, -/* 1830 */ 0x6010, 0x602E, 0x6013, 0x6011, 0x600C, 0x6009, 0x601C, 0x6214, -/* 1838 */ 0x623D, 0x62AD, 0x62B4, 0x62D1, 0x62BE, 0x62AA, 0x62B6, 0x62CA, -/* 1840 */ 0x62AE, 0x62B3, 0x62AF, 0x62BB, 0x62A9, 0x62B0, 0x62B8, 0x653D, -/* 1848 */ 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604, 0x6612, 0x6608, 0x65FB, -/* 1850 */ 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD, 0x6611, 0x6610, 0x66F6, -/* 1858 */ 0x670A, 0x6785, 0x676C, 0x678E, 0x6792, 0x6776, 0x677B, 0x6798, -/* 1860 */ 0x6786, 0x6784, 0x6774, 0x678D, 0x678C, 0x677A, 0x679F, 0x6791, -/* 1868 */ 0x6799, 0x6783, 0x677D, 0x6781, 0x6778, 0x6779, 0x6794, 0x6B25, -/* 1870 */ 0x6B80, 0x6B7E, 0x6BDE, 0x6C1D, 0x6C93, 0x6CEC, 0x6CEB, 0x6CEE, -/* 1878 */ 0x6CD9, 0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7, 0x6CB7, 0x6CD0, 0x6CC2, -/* 1880 */ 0x6CBA, 0x6CC3, 0x6CC6, 0x6CED, 0x6CF2, 0x6CD2, 0x6CDD, 0x6CB4, -/* 1888 */ 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0, 0x6D30, 0x6CCD, 0x6CC7, -/* 1890 */ 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1, 0x7094, 0x7098, 0x7085, -/* 1898 */ 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, 0x7082, 0x709A, 0x7083, -/* 18A0 */ 0x726A, 0x72D6, 0x72CB, 0x72D8, 0x72C9, 0x72DC, 0x72D2, 0x72D4, -/* 18A8 */ 0x72DA, 0x72CC, 0x72D1, 0x73A4, 0x73A1, 0x73AD, 0x73A6, 0x73A2, -/* 18B0 */ 0x73A0, 0x73AC, 0x739D, 0x74DD, 0x74E8, 0x753F, 0x7540, 0x753E, -/* 18B8 */ 0x758C, 0x7598, 0x76AF, 0x76F3, 0x76F1, 0x76F0, 0x76F5, 0x77F8, -/* 18C0 */ 0x77FC, 0x77F9, 0x77FB, 0x77FA, 0x77F7, 0x7942, 0x793F, 0x79C5, -/* 18C8 */ 0x7A78, 0x7A7B, 0x7AFB, 0x7C75, 0x7CFD, 0x8035, 0x808F, 0x80AE, -/* 18D0 */ 0x80A3, 0x80B8, 0x80B5, 0x80AD, 0x8220, 0x82A0, 0x82C0, 0x82AB, -/* 18D8 */ 0x829A, 0x8298, 0x829B, 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, -/* 18E0 */ 0x82BA, 0x82B4, 0x82A8, 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, -/* 18E8 */ 0x82B6, 0x82A2, 0x8670, 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, -/* 18F0 */ 0x8FCB, 0x8FD3, 0x8FCD, 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, -/* 18F8 */ 0x90AF, 0x90B3, 0x90B0, 0x9639, 0x963D, 0x963C, 0x963A, 0x9643, -/* 1900 */ 0x4FCD, 0x4FC5, 0x4FD3, 0x4FB2, 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, -/* 1908 */ 0x4FDC, 0x4FD9, 0x4FBB, 0x4FB3, 0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, -/* 1910 */ 0x4FC0, 0x4FB9, 0x4FEC, 0x5244, 0x5249, 0x52C0, 0x52C2, 0x533D, -/* 1918 */ 0x537C, 0x5397, 0x5396, 0x5399, 0x5398, 0x54BA, 0x54A1, 0x54AD, -/* 1920 */ 0x54A5, 0x54CF, 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, -/* 1928 */ 0x54C5, 0x54C6, 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, -/* 1930 */ 0x54DE, 0x54B0, 0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, -/* 1938 */ 0x579D, 0x579B, 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, -/* 1940 */ 0x5795, 0x58F4, 0x590D, 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, -/* 1948 */ 0x59F1, 0x59DD, 0x59FA, 0x59FD, 0x59FC, 0x59F6, 0x59E4, 0x59F2, -/* 1950 */ 0x59F7, 0x59DB, 0x59E9, 0x59F3, 0x59F5, 0x59E0, 0x59FE, 0x59F4, -/* 1958 */ 0x59ED, 0x5BA8, 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, -/* 1960 */ 0x5CDB, 0x5CDE, 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3, -/* 1968 */ 0x5CD4, 0x5CCF, 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, -/* 1970 */ 0x5E21, 0x5E22, 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, -/* 1978 */ 0x5E9B, 0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, -/* 1980 */ 0x6039, 0x6054, 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, -/* 1988 */ 0x605B, 0x604C, 0x6040, 0x6042, 0x605F, 0x6024, 0x6044, 0x6058, -/* 1990 */ 0x6066, 0x606E, 0x6242, 0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5, -/* 1998 */ 0x630E, 0x6303, 0x62EB, 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6, -/* 19A0 */ 0x6300, 0x6313, 0x6314, 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541, -/* 19A8 */ 0x6543, 0x65AA, 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635, 0x661C, -/* 19B0 */ 0x6626, 0x6622, 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639, -/* 19B8 */ 0x662E, 0x670F, 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA, 0x67DC, -/* 19C0 */ 0x67BB, 0x67F8, 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4, -/* 19C8 */ 0x67DF, 0x67B5, 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE, 0x67E3, -/* 19D0 */ 0x67C2, 0x67B9, 0x67CE, 0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, -/* 19D8 */ 0x67ED, 0x67CC, 0x67AE, 0x67E6, 0x67DB, 0x67FA, 0x67C9, 0x67CA, -/* 19E0 */ 0x67C3, 0x67EA, 0x67CB, 0x6B28, 0x6B82, 0x6B84, 0x6BB6, 0x6BD6, -/* 19E8 */ 0x6BD8, 0x6BE0, 0x6C20, 0x6C21, 0x6D28, 0x6D34, 0x6D2D, 0x6D1F, -/* 19F0 */ 0x6D3C, 0x6D3F, 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04, 0x6D19, -/* 19F8 */ 0x6D3A, 0x6D1A, 0x6D11, 0x6D00, 0x6D1D, 0x6D42, 0x6D01, 0x6D18, -/* 1A00 */ 0x6D37, 0x6D03, 0x6D0F, 0x6D40, 0x6D07, 0x6D20, 0x6D2C, 0x6D08, -/* 1A08 */ 0x6D22, 0x6D09, 0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0, -/* 1A10 */ 0x70A1, 0x70B4, 0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, -/* 1A18 */ 0x7270, 0x7273, 0x726E, 0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, -/* 1A20 */ 0x72EA, 0x72E6, 0x72E3, 0x7385, 0x73CC, 0x73C2, 0x73C8, 0x73C5, -/* 1A28 */ 0x73B9, 0x73B6, 0x73B5, 0x73B4, 0x73EB, 0x73BF, 0x73C7, 0x73BE, -/* 1A30 */ 0x73C3, 0x73C6, 0x73B8, 0x73CB, 0x74EC, 0x74EE, 0x752E, 0x7547, -/* 1A38 */ 0x7548, 0x75A7, 0x75AA, 0x7679, 0x76C4, 0x7708, 0x7703, 0x7704, -/* 1A40 */ 0x7705, 0x770A, 0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8, 0x7806, -/* 1A48 */ 0x7811, 0x7812, 0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, -/* 1A50 */ 0x7813, 0x794A, 0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, -/* 1A58 */ 0x79CF, 0x79D6, 0x79CE, 0x7A80, 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, -/* 1A60 */ 0x7C7A, 0x7C78, 0x7C79, 0x7C7F, 0x7C80, 0x7C81, 0x7D03, 0x7D08, -/* 1A68 */ 0x7D01, 0x7F58, 0x7F91, 0x7F8D, 0x7FBE, 0x8007, 0x800E, 0x800F, -/* 1A70 */ 0x8014, 0x8037, 0x80D8, 0x80C7, 0x80E0, 0x80D1, 0x80C8, 0x80C2, -/* 1A78 */ 0x80D0, 0x80C5, 0x80E3, 0x80D9, 0x80DC, 0x80CA, 0x80D5, 0x80C9, -/* 1A80 */ 0x80CF, 0x80D7, 0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294, 0x82D9, -/* 1A88 */ 0x82FE, 0x82F9, 0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB, -/* 1A90 */ 0x82D6, 0x82F4, 0x82EC, 0x82E1, 0x82F2, 0x82F5, 0x830C, 0x82FB, -/* 1A98 */ 0x82F6, 0x82F0, 0x82EA, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, -/* 1AA0 */ 0x8677, 0x8674, 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, -/* 1AA8 */ 0x8869, 0x89D3, 0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, -/* 1AB0 */ 0x8FE0, 0x90F1, 0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7, -/* 1AB8 */ 0x90CB, 0x90C8, 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, -/* 1AC0 */ 0x964A, 0x964E, 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, -/* 1AC8 */ 0x501B, 0x4FF5, 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, -/* 1AD0 */ 0x5017, 0x501C, 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, -/* 1AD8 */ 0x515A, 0x5194, 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, -/* 1AE0 */ 0x5261, 0x525A, 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, -/* 1AE8 */ 0x530E, 0x539E, 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, -/* 1AF0 */ 0x54E4, 0x551A, 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, -/* 1AF8 */ 0x54F1, 0x550A, 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, -/* 1B00 */ 0x550B, 0x5701, 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, -/* 1B08 */ 0x57C6, 0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, -/* 1B10 */ 0x57B9, 0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, -/* 1B18 */ 0x5A15, 0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, -/* 1B20 */ 0x5BAD, 0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, -/* 1B28 */ 0x5CF1, 0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, -/* 1B30 */ 0x5EAA, 0x5EAC, 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, -/* 1B38 */ 0x6041, 0x60A2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609D, 0x6083, -/* 1B40 */ 0x6095, 0x609B, 0x6097, 0x6087, 0x609C, 0x608E, 0x6219, 0x6246, -/* 1B48 */ 0x62F2, 0x6310, 0x6356, 0x632C, 0x6344, 0x6345, 0x6336, 0x6343, -/* 1B50 */ 0x63E4, 0x6339, 0x634B, 0x634A, 0x633C, 0x6329, 0x6341, 0x6334, -/* 1B58 */ 0x6358, 0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A, 0x6351, -/* 1B60 */ 0x6338, 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, 0x65C3, -/* 1B68 */ 0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713, -/* 1B70 */ 0x681F, 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F, -/* 1B78 */ 0x6816, 0x6831, 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 0x684E, -/* 1B80 */ 0x6844, 0x6834, 0x681D, 0x6812, 0x6814, 0x6826, 0x6828, 0x682E, -/* 1B88 */ 0x684D, 0x683A, 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31, -/* 1B90 */ 0x6B34, 0x6B6D, 0x8082, 0x6B88, 0x6BE6, 0x6BE4, 0x6BE8, 0x6BE3, -/* 1B98 */ 0x6BE2, 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64, 0x6D76, 0x6D0D, -/* 1BA0 */ 0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91, 0x6D8D, -/* 1BA8 */ 0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70, -/* 1BB0 */ 0x6D7C, 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E, -/* 1BB8 */ 0x6D80, 0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 0x6D75, 0x6D90, -/* 1BC0 */ 0x70DC, 0x70D3, 0x70D1, 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7, -/* 1BC8 */ 0x70D2, 0x70DE, 0x70E0, 0x70D4, 0x70CD, 0x70C5, 0x70C6, 0x70C7, -/* 1BD0 */ 0x70DA, 0x70CE, 0x70E1, 0x7242, 0x7278, 0x7277, 0x7276, 0x7300, -/* 1BD8 */ 0x72FA, 0x72F4, 0x72FE, 0x72F6, 0x72F3, 0x72FB, 0x7301, 0x73D3, -/* 1BE0 */ 0x73D9, 0x73E5, 0x73D6, 0x73BC, 0x73E7, 0x73E3, 0x73E9, 0x73DC, -/* 1BE8 */ 0x73D2, 0x73DB, 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8, 0x73E8, -/* 1BF0 */ 0x74DE, 0x74DF, 0x74F4, 0x74F5, 0x7521, 0x755B, 0x755F, 0x75B0, -/* 1BF8 */ 0x75C1, 0x75BB, 0x75C4, 0x75C0, 0x75BF, 0x75B6, 0x75BA, 0x768A, -/* 1C00 */ 0x76C9, 0x771D, 0x771B, 0x7710, 0x7713, 0x7712, 0x7723, 0x7711, -/* 1C08 */ 0x7715, 0x7719, 0x771A, 0x7722, 0x7727, 0x7823, 0x782C, 0x7822, -/* 1C10 */ 0x7835, 0x782F, 0x7828, 0x782E, 0x782B, 0x7821, 0x7829, 0x7833, -/* 1C18 */ 0x782A, 0x7831, 0x7954, 0x795B, 0x794F, 0x795C, 0x7953, 0x7952, -/* 1C20 */ 0x7951, 0x79EB, 0x79EC, 0x79E0, 0x79EE, 0x79ED, 0x79EA, 0x79DC, -/* 1C28 */ 0x79DE, 0x79DD, 0x7A86, 0x7A89, 0x7A85, 0x7A8B, 0x7A8C, 0x7A8A, -/* 1C30 */ 0x7A87, 0x7AD8, 0x7B10, 0x7B04, 0x7B13, 0x7B05, 0x7B0F, 0x7B08, -/* 1C38 */ 0x7B0A, 0x7B0E, 0x7B09, 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, -/* 1C40 */ 0x7C88, 0x7C8D, 0x7C85, 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, -/* 1C48 */ 0x7D16, 0x7D13, 0x7D1F, 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, -/* 1C50 */ 0x7F5E, 0x7F60, 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, -/* 1C58 */ 0x7FC0, 0x8016, 0x803E, 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, -/* 1C60 */ 0x8101, 0x80FB, 0x8100, 0x8201, 0x822F, 0x8225, 0x8333, 0x832D, -/* 1C68 */ 0x8344, 0x8319, 0x8351, 0x8325, 0x8356, 0x833F, 0x8341, 0x8326, -/* 1C70 */ 0x831C, 0x8322, 0x8342, 0x834E, 0x831B, 0x832A, 0x8308, 0x833C, -/* 1C78 */ 0x834D, 0x8316, 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, 0x8347, -/* 1C80 */ 0x8345, 0x834C, 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348, -/* 1C88 */ 0x8653, 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, -/* 1C90 */ 0x8687, 0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, -/* 1C98 */ 0x86A1, 0x86A7, 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, -/* 1CA0 */ 0x8843, 0x8844, 0x886D, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, -/* 1CA8 */ 0x887F, 0x886F, 0x8883, 0x887E, 0x8874, 0x887C, 0x8A12, 0x8C47, -/* 1CB0 */ 0x8C57, 0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, 0x8D78, 0x8DB5, 0x8DB7, -/* 1CB8 */ 0x8DB6, 0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, 0x8FFF, 0x8FFB, -/* 1CC0 */ 0x9004, 0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA, 0x90E3, -/* 1CC8 */ 0x90DF, 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150, -/* 1CD0 */ 0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, -/* 1CD8 */ 0x98E3, 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, -/* 1CE0 */ 0x5060, 0x5053, 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041, -/* 1CE8 */ 0x505B, 0x504A, 0x5062, 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, -/* 1CF0 */ 0x5063, 0x5064, 0x5046, 0x5040, 0x506E, 0x5073, 0x5057, 0x5051, -/* 1CF8 */ 0x51D0, 0x526B, 0x526D, 0x526C, 0x526E, 0x52D6, 0x52D3, 0x532D, -/* 1D00 */ 0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550, 0x5534, 0x552A, -/* 1D08 */ 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550C, -/* 1D10 */ 0x5532, 0x5565, 0x554E, 0x5539, 0x5548, 0x552D, 0x553B, 0x5540, -/* 1D18 */ 0x554B, 0x570A, 0x5707, 0x57FB, 0x5814, 0x57E2, 0x57F6, 0x57DC, -/* 1D20 */ 0x57F4, 0x5800, 0x57ED, 0x57FD, 0x5808, 0x57F8, 0x580B, 0x57F3, -/* 1D28 */ 0x57CF, 0x5807, 0x57EE, 0x57E3, 0x57F2, 0x57E5, 0x57EC, 0x57E1, -/* 1D30 */ 0x580E, 0x57FC, 0x5810, 0x57E7, 0x5801, 0x580C, 0x57F1, 0x57E9, -/* 1D38 */ 0x57F0, 0x580D, 0x5804, 0x595C, 0x5A60, 0x5A58, 0x5A55, 0x5A67, -/* 1D40 */ 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50, 0x5A5F, 0x5A65, 0x5A6C, -/* 1D48 */ 0x5A53, 0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52, 0x5A44, 0x5A5B, -/* 1D50 */ 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C, 0x5A70, 0x5A69, -/* 1D58 */ 0x5A47, 0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72, 0x5B6E, 0x5BC1, -/* 1D60 */ 0x5BC0, 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, 0x5D20, 0x5D0C, -/* 1D68 */ 0x5D28, 0x5D0D, 0x5D26, 0x5D25, 0x5D0F, 0x5D30, 0x5D12, 0x5D23, -/* 1D70 */ 0x5D1F, 0x5D2E, 0x5E3E, 0x5E34, 0x5EB1, 0x5EB4, 0x5EB9, 0x5EB2, -/* 1D78 */ 0x5EB3, 0x5F36, 0x5F38, 0x5F9B, 0x5F96, 0x5F9F, 0x608A, 0x6090, -/* 1D80 */ 0x6086, 0x60BE, 0x60B0, 0x60BA, 0x60D3, 0x60D4, 0x60CF, 0x60E4, -/* 1D88 */ 0x60D9, 0x60DD, 0x60C8, 0x60B1, 0x60DB, 0x60B7, 0x60CA, 0x60BF, -/* 1D90 */ 0x60C3, 0x60CD, 0x60C0, 0x6332, 0x6365, 0x638A, 0x6382, 0x637D, -/* 1D98 */ 0x63BD, 0x639E, 0x63AD, 0x639D, 0x6397, 0x63AB, 0x638E, 0x636F, -/* 1DA0 */ 0x6387, 0x6390, 0x636E, 0x63AF, 0x6375, 0x639C, 0x636D, 0x63AE, -/* 1DA8 */ 0x637C, 0x63A4, 0x633B, 0x639F, 0x6378, 0x6385, 0x6381, 0x6391, -/* 1DB0 */ 0x638D, 0x6370, 0x6553, 0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, -/* 1DB8 */ 0x665C, 0x6662, 0x6718, 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, -/* 1DC0 */ 0x686E, 0x68AE, 0x68AB, 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, -/* 1DC8 */ 0x6875, 0x6874, 0x68B2, 0x688F, 0x6877, 0x6892, 0x687C, 0x686B, -/* 1DD0 */ 0x6872, 0x68AA, 0x6880, 0x6871, 0x687E, 0x689B, 0x6896, 0x688B, -/* 1DD8 */ 0x68A0, 0x6889, 0x68A4, 0x6878, 0x687B, 0x6891, 0x688C, 0x688A, -/* 1DE0 */ 0x687D, 0x6B36, 0x6B33, 0x6B37, 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, -/* 1DE8 */ 0x6B8E, 0x6B8C, 0x6C2A, 0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, -/* 1DF0 */ 0x6DAC, 0x6DE9, 0x6DE2, 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, -/* 1DF8 */ 0x6DE0, 0x6DDF, 0x6DD6, 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, -/* 1E00 */ 0x6DF4, 0x6DCA, 0x6DBD, 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, -/* 1E08 */ 0x6DCF, 0x6DC9, 0x6DD0, 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, -/* 1E10 */ 0x6DE3, 0x6DBB, 0x70FA, 0x710D, 0x70F7, 0x7117, 0x70F4, 0x710C, -/* 1E18 */ 0x70F0, 0x7104, 0x70F3, 0x7110, 0x70FC, 0x70FF, 0x7106, 0x7113, -/* 1E20 */ 0x7100, 0x70F8, 0x70F6, 0x710B, 0x7102, 0x710E, 0x727E, 0x727B, -/* 1E28 */ 0x727C, 0x727F, 0x731D, 0x7317, 0x7307, 0x7311, 0x7318, 0x730A, -/* 1E30 */ 0x7308, 0x72FF, 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, -/* 1E38 */ 0x7404, 0x7401, 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, -/* 1E40 */ 0x740C, 0x740B, 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, -/* 1E48 */ 0x75CF, 0x75CB, 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, -/* 1E50 */ 0x7739, 0x772F, 0x772D, 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, -/* 1E58 */ 0x7725, 0x773B, 0x7735, 0x7848, 0x7852, 0x7849, 0x784D, 0x784A, -/* 1E60 */ 0x784C, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796A, -/* 1E68 */ 0x7963, 0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7, -/* 1E70 */ 0x7A8F, 0x7A94, 0x7A90, 0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30, -/* 1E78 */ 0x7B22, 0x7B24, 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, -/* 1E80 */ 0x7B2D, 0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, -/* 1E88 */ 0x7C96, 0x7CA3, 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, -/* 1E90 */ 0x7D2C, 0x7D29, 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, -/* 1E98 */ 0x7D28, 0x7F63, 0x7F95, 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, -/* 1EA0 */ 0x7FCD, 0x7FD0, 0x7FD1, 0x7FC7, 0x7FCF, 0x7FC9, 0x801F, 0x801E, -/* 1EA8 */ 0x801B, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, 0x811B, -/* 1EB0 */ 0x812D, 0x811F, 0x812C, 0x811E, 0x8121, 0x8115, 0x8127, 0x811D, -/* 1EB8 */ 0x8122, 0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232, 0x8274, -/* 1EC0 */ 0x8390, 0x83A3, 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, 0x8374, -/* 1EC8 */ 0x838F, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, -/* 1ED0 */ 0x8383, 0x838C, 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E, 0x83A5, -/* 1ED8 */ 0x83AF, 0x8388, 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387, 0x83AE, -/* 1EE0 */ 0x8376, 0x839A, 0x8659, 0x8656, 0x86BF, 0x86B7, 0x86C2, 0x86C1, -/* 1EE8 */ 0x86C5, 0x86BA, 0x86B0, 0x86C8, 0x86B9, 0x86B3, 0x86B8, 0x86CC, -/* 1EF0 */ 0x86B4, 0x86BB, 0x86BC, 0x86C3, 0x86BD, 0x86BE, 0x8852, 0x8889, -/* 1EF8 */ 0x8895, 0x88A8, 0x88A2, 0x88AA, 0x889A, 0x8891, 0x88A1, 0x889F, -/* 1F00 */ 0x8898, 0x88A7, 0x8899, 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C, -/* 1F08 */ 0x8893, 0x888E, 0x8982, 0x89D6, 0x89D9, 0x89D5, 0x8A30, 0x8A27, -/* 1F10 */ 0x8A2C, 0x8A1E, 0x8C39, 0x8C3B, 0x8C5C, 0x8C5D, 0x8C7D, 0x8CA5, -/* 1F18 */ 0x8D7D, 0x8D7B, 0x8D79, 0x8DBC, 0x8DC2, 0x8DB9, 0x8DBF, 0x8DC1, -/* 1F20 */ 0x8ED8, 0x8EDE, 0x8EDD, 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1, 0x9024, -/* 1F28 */ 0x900B, 0x9011, 0x901C, 0x900C, 0x9021, 0x90EF, 0x90EA, 0x90F0, -/* 1F30 */ 0x90F4, 0x90F2, 0x90F3, 0x90D4, 0x90EB, 0x90EC, 0x90E9, 0x9156, -/* 1F38 */ 0x9158, 0x915A, 0x9153, 0x9155, 0x91EC, 0x91F4, 0x91F1, 0x91F3, -/* 1F40 */ 0x91F8, 0x91E4, 0x91F9, 0x91EA, 0x91EB, 0x91F7, 0x91E8, 0x91EE, -/* 1F48 */ 0x957A, 0x9586, 0x9588, 0x967C, 0x966D, 0x966B, 0x9671, 0x966F, -/* 1F50 */ 0x96BF, 0x976A, 0x9804, 0x98E5, 0x9997, 0x509B, 0x5095, 0x5094, -/* 1F58 */ 0x509E, 0x508B, 0x50A3, 0x5083, 0x508C, 0x508E, 0x509D, 0x5068, -/* 1F60 */ 0x509C, 0x5092, 0x5082, 0x5087, 0x515F, 0x51D4, 0x5312, 0x5311, -/* 1F68 */ 0x53A4, 0x53A7, 0x5591, 0x55A8, 0x55A5, 0x55AD, 0x5577, 0x5645, -/* 1F70 */ 0x55A2, 0x5593, 0x5588, 0x558F, 0x55B5, 0x5581, 0x55A3, 0x5592, -/* 1F78 */ 0x55A4, 0x557D, 0x558C, 0x55A6, 0x557F, 0x5595, 0x55A1, 0x558E, -/* 1F80 */ 0x570C, 0x5829, 0x5837, 0x5819, 0x581E, 0x5827, 0x5823, 0x5828, -/* 1F88 */ 0x57F5, 0x5848, 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, 0x5836, -/* 1F90 */ 0x582E, 0x5839, 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, -/* 1F98 */ 0x5A94, 0x5A9F, 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, -/* 1FA0 */ 0x5AA5, 0x5AAC, 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, -/* 1FA8 */ 0x5A83, 0x5A8B, 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, -/* 1FB0 */ 0x5A93, 0x5A9D, 0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, -/* 1FB8 */ 0x5BCE, 0x5C0C, 0x5C30, 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, -/* 1FC0 */ 0x5D3F, 0x5D35, 0x5D51, 0x5D4E, 0x5D55, 0x5D33, 0x5D3A, 0x5D52, -/* 1FC8 */ 0x5D3D, 0x5D31, 0x5D59, 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, -/* 1FD0 */ 0x5D32, 0x5D36, 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, -/* 1FD8 */ 0x5FA5, 0x5FAB, 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, -/* 1FE0 */ 0x6114, 0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, -/* 1FE8 */ 0x60FC, 0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, -/* 1FF0 */ 0x6104, 0x610B, 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, -/* 1FF8 */ 0x63E8, 0x63EF, 0x63C3, 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, -/* 2000 */ 0x63D5, 0x63F2, 0x63F5, 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, -/* 2008 */ 0x63C4, 0x63D8, 0x63D3, 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, -/* 2010 */ 0x63F0, 0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, 0x6564, 0x655C, -/* 2018 */ 0x6568, 0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2, -/* 2020 */ 0x667C, 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 0x6672, -/* 2028 */ 0x6701, 0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA, -/* 2030 */ 0x68F1, 0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6, 0x6913, -/* 2038 */ 0x6910, 0x68F3, 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, 0x68B4, -/* 2040 */ 0x6911, 0x68EF, 0x68C6, 0x6914, 0x68F8, 0x68D0, 0x68FD, 0x68FC, -/* 2048 */ 0x68E8, 0x690B, 0x690A, 0x6917, 0x68CE, 0x68C8, 0x68DD, 0x68DE, -/* 2050 */ 0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4, 0x68E9, 0x6915, 0x6925, -/* 2058 */ 0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97, 0x6B99, -/* 2060 */ 0x6B95, 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, 0x6E46, -/* 2068 */ 0x6E47, 0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 0x6E62, -/* 2070 */ 0x6E2B, 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 0x6E4B, -/* 2078 */ 0x6E40, 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E, 0x6E68, 0x6E5C, -/* 2080 */ 0x6E61, 0x6E31, 0x6E28, 0x6E60, 0x6E71, 0x6E6B, 0x6E39, 0x6E22, -/* 2088 */ 0x6E30, 0x6E53, 0x6E65, 0x6E27, 0x6E78, 0x6E64, 0x6E77, 0x6E55, -/* 2090 */ 0x6E79, 0x6E52, 0x6E66, 0x6E35, 0x6E36, 0x6E5A, 0x7120, 0x711E, -/* 2098 */ 0x712F, 0x70FB, 0x712E, 0x7131, 0x7123, 0x7125, 0x7122, 0x7132, -/* 20A0 */ 0x711F, 0x7128, 0x713A, 0x711B, 0x724B, 0x725A, 0x7288, 0x7289, -/* 20A8 */ 0x7286, 0x7285, 0x728B, 0x7312, 0x730B, 0x7330, 0x7322, 0x7331, -/* 20B0 */ 0x7333, 0x7327, 0x7332, 0x732D, 0x7326, 0x7323, 0x7335, 0x730C, -/* 20B8 */ 0x742E, 0x742C, 0x7430, 0x742B, 0x7416, 0x741A, 0x7421, 0x742D, -/* 20C0 */ 0x7431, 0x7424, 0x7423, 0x741D, 0x7429, 0x7420, 0x7432, 0x74FB, -/* 20C8 */ 0x752F, 0x756F, 0x756C, 0x75E7, 0x75DA, 0x75E1, 0x75E6, 0x75DD, -/* 20D0 */ 0x75DF, 0x75E4, 0x75D7, 0x7695, 0x7692, 0x76DA, 0x7746, 0x7747, -/* 20D8 */ 0x7744, 0x774D, 0x7745, 0x774A, 0x774E, 0x774B, 0x774C, 0x77DE, -/* 20E0 */ 0x77EC, 0x7860, 0x7864, 0x7865, 0x785C, 0x786D, 0x7871, 0x786A, -/* 20E8 */ 0x786E, 0x7870, 0x7869, 0x7868, 0x785E, 0x7862, 0x7974, 0x7973, -/* 20F0 */ 0x7972, 0x7970, 0x7A02, 0x7A0A, 0x7A03, 0x7A0C, 0x7A04, 0x7A99, -/* 20F8 */ 0x7AE6, 0x7AE4, 0x7B4A, 0x7B3B, 0x7B44, 0x7B48, 0x7B4C, 0x7B4E, -/* 2100 */ 0x7B40, 0x7B58, 0x7B45, 0x7CA2, 0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, -/* 2108 */ 0x7D6F, 0x7D63, 0x7D53, 0x7D56, 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, -/* 2110 */ 0x7D5C, 0x7D6B, 0x7D52, 0x7D54, 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, -/* 2118 */ 0x7F3E, 0x7F3F, 0x7F65, 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, -/* 2120 */ 0x8051, 0x804F, 0x8050, 0x80FE, 0x80D4, 0x8143, 0x814A, 0x8152, -/* 2128 */ 0x814F, 0x8147, 0x813D, 0x814D, 0x813A, 0x81E6, 0x81EE, 0x81F7, -/* 2130 */ 0x81F8, 0x81F9, 0x8204, 0x823C, 0x823D, 0x823F, 0x8275, 0x833B, -/* 2138 */ 0x83CF, 0x83F9, 0x8423, 0x83C0, 0x83E8, 0x8412, 0x83E7, 0x83E4, -/* 2140 */ 0x83FC, 0x83F6, 0x8410, 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF, -/* 2148 */ 0x8401, 0x83DD, 0x83E5, 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, -/* 2150 */ 0x83D6, 0x83F5, 0x83C9, 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, -/* 2158 */ 0x83C2, 0x83F3, 0x83D5, 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, -/* 2160 */ 0x83C3, 0x83EC, 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, -/* 2168 */ 0x83DB, 0x83FE, 0x86D8, 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, -/* 2170 */ 0x86EA, 0x86DD, 0x86EB, 0x86DC, 0x86EC, 0x86E9, 0x86D7, 0x86E8, -/* 2178 */ 0x86D1, 0x8848, 0x8856, 0x8855, 0x88BA, 0x88D7, 0x88B9, 0x88B8, -/* 2180 */ 0x88C0, 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, 0x88B2, 0x8901, -/* 2188 */ 0x88C9, 0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, 0x8A4E, -/* 2190 */ 0x8A4D, 0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, -/* 2198 */ 0x8A52, 0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, -/* 21A0 */ 0x8C80, 0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, -/* 21A8 */ 0x8D89, 0x8DD8, 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, -/* 21B0 */ 0x8DD5, 0x8DD9, 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA, -/* 21B8 */ 0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, -/* 21C0 */ 0x8EEB, 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, 0x9034, 0x902F, -/* 21C8 */ 0x9106, 0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108, 0x90F9, 0x90FB, -/* 21D0 */ 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915F, -/* 21D8 */ 0x9162, 0x9160, 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226, -/* 21E0 */ 0x920F, 0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204, -/* 21E8 */ 0x9227, 0x9202, 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, -/* 21F0 */ 0x957B, 0x958D, 0x958C, 0x9590, 0x9687, 0x967E, 0x9688, 0x9689, -/* 21F8 */ 0x9683, 0x9680, 0x96C2, 0x96C8, 0x96C3, 0x96F1, 0x96F0, 0x976C, -/* 2200 */ 0x9770, 0x976E, 0x9807, 0x98A9, 0x98EB, 0x9CE6, 0x9EF9, 0x4E83, -/* 2208 */ 0x4E84, 0x4EB6, 0x50BD, 0x50BF, 0x50C6, 0x50AE, 0x50C4, 0x50CA, -/* 2210 */ 0x50B4, 0x50C8, 0x50C2, 0x50B0, 0x50C1, 0x50BA, 0x50B1, 0x50CB, -/* 2218 */ 0x50C9, 0x50B6, 0x50B8, 0x51D7, 0x527A, 0x5278, 0x527B, 0x527C, -/* 2220 */ 0x55C3, 0x55DB, 0x55CC, 0x55D0, 0x55CB, 0x55CA, 0x55DD, 0x55C0, -/* 2228 */ 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D, 0x55CF, 0x55D5, -/* 2230 */ 0x55E2, 0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9, 0x55C2, 0x5714, -/* 2238 */ 0x5853, 0x5868, 0x5864, 0x584F, 0x584D, 0x5849, 0x586F, 0x5855, -/* 2240 */ 0x584E, 0x585D, 0x5859, 0x5865, 0x585B, 0x583D, 0x5863, 0x5871, -/* 2248 */ 0x58FC, 0x5AC7, 0x5AC4, 0x5ACB, 0x5ABA, 0x5AB8, 0x5AB1, 0x5AB5, -/* 2250 */ 0x5AB0, 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6, 0x5AB7, 0x5AC0, 0x5ACA, -/* 2258 */ 0x5AB4, 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90, 0x5BD6, 0x5BD8, 0x5BD9, -/* 2260 */ 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A, 0x5D65, 0x5D72, 0x5D6C, -/* 2268 */ 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0, 0x5E4F, 0x5E4E, 0x5E4A, -/* 2270 */ 0x5E4D, 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6, 0x5ECB, 0x5EC7, 0x5F40, -/* 2278 */ 0x5FAF, 0x5FAD, 0x60F7, 0x6149, 0x614A, 0x612B, 0x6145, 0x6136, -/* 2280 */ 0x6132, 0x612E, 0x6146, 0x612F, 0x614F, 0x6129, 0x6140, 0x6220, -/* 2288 */ 0x9168, 0x6223, 0x6225, 0x6224, 0x63C5, 0x63F1, 0x63EB, 0x6410, -/* 2290 */ 0x6412, 0x6409, 0x6420, 0x6424, 0x6433, 0x6443, 0x641F, 0x6415, -/* 2298 */ 0x6418, 0x6439, 0x6437, 0x6422, 0x6423, 0x640C, 0x6426, 0x6430, -/* 22A0 */ 0x6428, 0x6441, 0x6435, 0x642F, 0x640A, 0x641A, 0x6440, 0x6425, -/* 22A8 */ 0x6427, 0x640B, 0x63E7, 0x641B, 0x642E, 0x6421, 0x640E, 0x656F, -/* 22B0 */ 0x6592, 0x65D3, 0x6686, 0x668C, 0x6695, 0x6690, 0x668B, 0x668A, -/* 22B8 */ 0x6699, 0x6694, 0x6678, 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, -/* 22C0 */ 0x6962, 0x6971, 0x693F, 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, -/* 22C8 */ 0x6959, 0x697A, 0x6948, 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, -/* 22D0 */ 0x6965, 0x68F0, 0x6978, 0x6934, 0x6969, 0x6940, 0x696F, 0x6944, -/* 22D8 */ 0x6976, 0x6958, 0x6941, 0x6974, 0x694C, 0x693B, 0x694B, 0x6937, -/* 22E0 */ 0x695C, 0x694F, 0x6951, 0x6932, 0x6952, 0x692F, 0x697B, 0x693C, -/* 22E8 */ 0x6B46, 0x6B45, 0x6B43, 0x6B42, 0x6B48, 0x6B41, 0x6B9B, 0xFA0D, -/* 22F0 */ 0x6BFB, 0x6BFC, 0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, -/* 22F8 */ 0x6E8F, 0x6EC0, 0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, -/* 2300 */ 0x6EC6, 0x6ED2, 0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, -/* 2308 */ 0x6ECD, 0x6EA6, 0x6ECF, 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, -/* 2310 */ 0x6E99, 0x6E92, 0x6E8E, 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, -/* 2318 */ 0x6ED0, 0x6ECA, 0x6E97, 0x6EAE, 0x6EA3, 0x7147, 0x7154, 0x7152, -/* 2320 */ 0x7163, 0x7160, 0x7141, 0x715D, 0x7162, 0x7172, 0x7178, 0x716A, -/* 2328 */ 0x7161, 0x7142, 0x7158, 0x7143, 0x714B, 0x7170, 0x715F, 0x7150, -/* 2330 */ 0x7153, 0x7144, 0x714D, 0x715A, 0x724F, 0x728D, 0x728C, 0x7291, -/* 2338 */ 0x7290, 0x728E, 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A, -/* 2340 */ 0x7349, 0x7444, 0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, -/* 2348 */ 0x744F, 0x7450, 0x744E, 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, -/* 2350 */ 0x74FF, 0x74FE, 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, -/* 2358 */ 0x760F, 0x7603, 0x75F7, 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, -/* 2360 */ 0x75FB, 0x75F6, 0x75ED, 0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD, -/* 2368 */ 0x7755, 0x775F, 0x7760, 0x7752, 0x7756, 0x775A, 0x7769, 0x7767, -/* 2370 */ 0x7754, 0x7759, 0x776D, 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F, -/* 2378 */ 0x7884, 0x7895, 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899, -/* 2380 */ 0x7880, 0x7896, 0x787B, 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11, -/* 2388 */ 0x7A18, 0x7A19, 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13, 0x7A1B, -/* 2390 */ 0x7A10, 0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D, -/* 2398 */ 0x7B74, 0x7B69, 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, -/* 23A0 */ 0x7B78, 0x7B76, 0x7B63, 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 0x7D86, -/* 23A8 */ 0x7D80, 0x7D8D, 0x7D7F, 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83, -/* 23B0 */ 0x7D7C, 0x7D8C, 0x7D94, 0x7D84, 0x7D7D, 0x7D92, 0x7F6D, 0x7F6B, -/* 23B8 */ 0x7F67, 0x7F68, 0x7F6C, 0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB, 0x7FDC, -/* 23C0 */ 0x8021, 0x8164, 0x8160, 0x8177, 0x815C, 0x8169, 0x815B, 0x8162, -/* 23C8 */ 0x8172, 0x6721, 0x815E, 0x8176, 0x8167, 0x816F, 0x8144, 0x8161, -/* 23D0 */ 0x821D, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, -/* 23D8 */ 0x8456, 0x8476, 0x8479, 0x848F, 0x848D, 0x8465, 0x8451, 0x8440, -/* 23E0 */ 0x8486, 0x8467, 0x8430, 0x844D, 0x847D, 0x845A, 0x8459, 0x8474, -/* 23E8 */ 0x8473, 0x845D, 0x8507, 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, -/* 23F0 */ 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83D9, 0x844B, 0x842F, -/* 23F8 */ 0x8442, 0x842D, 0x845F, 0x8470, 0x8439, 0x844E, 0x844C, 0x8452, -/* 2400 */ 0x846F, 0x84C5, 0x848E, 0x843B, 0x8447, 0x8436, 0x8433, 0x8468, -/* 2408 */ 0x847E, 0x8444, 0x842B, 0x8460, 0x8454, 0x846E, 0x8450, 0x870B, -/* 2410 */ 0x8704, 0x86F7, 0x870C, 0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8, -/* 2418 */ 0x870E, 0x8709, 0x8701, 0x86F6, 0x870D, 0x8705, 0x88D6, 0x88CB, -/* 2420 */ 0x88CD, 0x88CE, 0x88DE, 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, -/* 2428 */ 0x899B, 0x89DF, 0x89E5, 0x89E4, 0x89E1, 0x89E0, 0x89E2, 0x89DC, -/* 2430 */ 0x89E6, 0x8A76, 0x8A86, 0x8A7F, 0x8A61, 0x8A3F, 0x8A77, 0x8A82, -/* 2438 */ 0x8A84, 0x8A75, 0x8A83, 0x8A81, 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, -/* 2440 */ 0x8C4A, 0x8C65, 0x8C64, 0x8C66, 0x8C86, 0x8C84, 0x8C85, 0x8CCC, -/* 2448 */ 0x8D68, 0x8D69, 0x8D91, 0x8D8C, 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, -/* 2450 */ 0x8D94, 0x8D90, 0x8D92, 0x8DF0, 0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, -/* 2458 */ 0x8DD0, 0x8DE9, 0x8DE3, 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, -/* 2460 */ 0x8F06, 0x8EFF, 0x8F01, 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, -/* 2468 */ 0x8F0B, 0x9052, 0x903F, 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, -/* 2470 */ 0x910F, 0x9111, 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, -/* 2478 */ 0x9248, 0x9252, 0x9230, 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, -/* 2480 */ 0x9283, 0x922E, 0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, -/* 2488 */ 0x9267, 0x926F, 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, -/* 2490 */ 0x9250, 0x9272, 0x924E, 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, -/* 2498 */ 0x959C, 0x959E, 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, -/* 24A0 */ 0x96FA, 0x96FD, 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, -/* 24A8 */ 0x980F, 0x980D, 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, -/* 24B0 */ 0x99B0, 0x99B5, 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, -/* 24B8 */ 0x9E80, 0x9EFD, 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, -/* 24C0 */ 0x50EA, 0x50DD, 0x50E4, 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, -/* 24C8 */ 0x50E0, 0x51D8, 0x5280, 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, -/* 24D0 */ 0x5627, 0x5615, 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, -/* 24D8 */ 0x5613, 0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, -/* 24E0 */ 0x587C, 0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, 0x588B, -/* 24E8 */ 0x587A, 0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, -/* 24F0 */ 0x5894, 0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, -/* 24F8 */ 0x5AEA, 0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, -/* 2500 */ 0x5AEC, 0x5ADE, 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0, -/* 2508 */ 0x5BE3, 0x5C63, 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81, -/* 2510 */ 0x5D77, 0x5D8A, 0x5D89, 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79, -/* 2518 */ 0x5D7F, 0x5E58, 0x5E59, 0x5E53, 0x5ED8, 0x5ED1, 0x5ED7, 0x5ECE, -/* 2520 */ 0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, 0x5F43, 0x5F6F, -/* 2528 */ 0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173, 0x6152, -/* 2530 */ 0x6153, 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, 0x615B, -/* 2538 */ 0x6165, 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, 0x622B, -/* 2540 */ 0x642B, 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, 0x6473, -/* 2548 */ 0x647D, 0x6475, 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C, -/* 2550 */ 0x644B, 0x6453, 0x6460, 0x6450, 0x647F, 0x643F, 0x646C, 0x646B, -/* 2558 */ 0x6459, 0x6465, 0x6477, 0x6573, 0x65A0, 0x66A1, 0x66A0, 0x669F, -/* 2560 */ 0x6705, 0x6704, 0x6722, 0x69B1, 0x69B6, 0x69C9, 0x69A0, 0x69CE, -/* 2568 */ 0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999, 0x698E, 0x69A7, -/* 2570 */ 0x698D, 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4, 0x69BD, 0x69A4, -/* 2578 */ 0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3, 0x6993, 0x69AA, -/* 2580 */ 0x69A1, 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5, -/* 2588 */ 0x69C6, 0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3, -/* 2590 */ 0x6BC4, 0x6BFE, 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03, 0x6F25, 0x6EF8, -/* 2598 */ 0x6F37, 0x6EFB, 0x6F2E, 0x6F09, 0x6F4E, 0x6F19, 0x6F1A, 0x6F27, -/* 25A0 */ 0x6F18, 0x6F3B, 0x6F12, 0x6EED, 0x6F0A, 0x6F36, 0x6F73, 0x6EF9, -/* 25A8 */ 0x6EEE, 0x6F2D, 0x6F40, 0x6F30, 0x6F3C, 0x6F35, 0x6EEB, 0x6F07, -/* 25B0 */ 0x6F0E, 0x6F43, 0x6F05, 0x6EFD, 0x6EF6, 0x6F39, 0x6F1C, 0x6EFC, -/* 25B8 */ 0x6F3A, 0x6F1F, 0x6F0D, 0x6F1E, 0x6F08, 0x6F21, 0x7187, 0x7190, -/* 25C0 */ 0x7189, 0x7180, 0x7185, 0x7182, 0x718F, 0x717B, 0x7186, 0x7181, -/* 25C8 */ 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293, 0x7343, 0x734D, -/* 25D0 */ 0x7351, 0x734C, 0x7462, 0x7473, 0x7471, 0x7475, 0x7472, 0x7467, -/* 25D8 */ 0x746E, 0x7500, 0x7502, 0x7503, 0x757D, 0x7590, 0x7616, 0x7608, -/* 25E0 */ 0x760C, 0x7615, 0x7611, 0x760A, 0x7614, 0x76B8, 0x7781, 0x777C, -/* 25E8 */ 0x7785, 0x7782, 0x776E, 0x7780, 0x776F, 0x777E, 0x7783, 0x78B2, -/* 25F0 */ 0x78AA, 0x78B4, 0x78AD, 0x78A8, 0x787E, 0x78AB, 0x789E, 0x78A5, -/* 25F8 */ 0x78A0, 0x78AC, 0x78A2, 0x78A4, 0x7998, 0x798A, 0x798B, 0x7996, -/* 2600 */ 0x7995, 0x7994, 0x7993, 0x7997, 0x7988, 0x7992, 0x7990, 0x7A2B, -/* 2608 */ 0x7A4A, 0x7A30, 0x7A2F, 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, -/* 2610 */ 0x7AEE, 0x7B88, 0x7B9C, 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, -/* 2618 */ 0x7B8C, 0x7B9B, 0x7B8E, 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, -/* 2620 */ 0x7B82, 0x7CBB, 0x7CBF, 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, -/* 2628 */ 0x7DA3, 0x7DAA, 0x7DC1, 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, -/* 2630 */ 0x7DC6, 0x7DCB, 0x7DCC, 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, -/* 2638 */ 0x7DA6, 0x7DAE, 0x7DA9, 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, 0x7FE3, -/* 2640 */ 0x7FE5, 0x7FDE, 0x8024, 0x805D, 0x805C, 0x8189, 0x8186, 0x8183, -/* 2648 */ 0x8187, 0x818D, 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4, 0x84A1, -/* 2650 */ 0x849F, 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, -/* 2658 */ 0x84B4, 0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, -/* 2660 */ 0x84A7, 0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, -/* 2668 */ 0x84AF, 0x84A8, 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, -/* 2670 */ 0x84D4, 0x84D2, 0x84DB, 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, -/* 2678 */ 0x8728, 0x876B, 0x8740, 0x872E, 0x871E, 0x8721, 0x8719, 0x871B, -/* 2680 */ 0x8743, 0x872C, 0x8741, 0x873E, 0x8746, 0x8720, 0x8732, 0x872A, -/* 2688 */ 0x872D, 0x873C, 0x8712, 0x873A, 0x8731, 0x8735, 0x8742, 0x8726, -/* 2690 */ 0x8727, 0x8738, 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7, 0x88E7, -/* 2698 */ 0x88F1, 0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB, -/* 26A0 */ 0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9, -/* 26A8 */ 0x89EB, 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, -/* 26B0 */ 0x8C3D, 0x8C68, 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, -/* 26B8 */ 0x8E02, 0x8DFF, 0x8E0D, 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06, -/* 26C0 */ 0x8E05, 0x8DFE, 0x8E00, 0x8E04, 0x8F10, 0x8F11, 0x8F0E, 0x8F0D, -/* 26C8 */ 0x9123, 0x911C, 0x9120, 0x9122, 0x911F, 0x911D, 0x911A, 0x9124, -/* 26D0 */ 0x9121, 0x911B, 0x917A, 0x9172, 0x9179, 0x9173, 0x92A5, 0x92A4, -/* 26D8 */ 0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D, 0x92A6, -/* 26E0 */ 0x929A, 0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3, 0x92EE, 0x928E, -/* 26E8 */ 0x9282, 0x9295, 0x92A2, 0x927D, 0x9288, 0x92A1, 0x928A, 0x9286, -/* 26F0 */ 0x928C, 0x9299, 0x92A7, 0x927E, 0x9287, 0x92A9, 0x929D, 0x928B, -/* 26F8 */ 0x922D, 0x969E, 0x96A1, 0x96FF, 0x9758, 0x977D, 0x977A, 0x977E, -/* 2700 */ 0x9783, 0x9780, 0x9782, 0x977B, 0x9784, 0x9781, 0x977F, 0x97CE, -/* 2708 */ 0x97CD, 0x9816, 0x98AD, 0x98AE, 0x9902, 0x9900, 0x9907, 0x999D, -/* 2710 */ 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA, 0x99C2, 0x99BD, 0x99C7, -/* 2718 */ 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60, 0x9B61, 0x9B5F, -/* 2720 */ 0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103, 0x5130, 0x50F8, -/* 2728 */ 0x5106, 0x5107, 0x50F6, 0x50FE, 0x510B, 0x510C, 0x50FD, 0x510A, -/* 2730 */ 0x528B, 0x528C, 0x52F1, 0x52EF, 0x5648, 0x5642, 0x564C, 0x5635, -/* 2738 */ 0x5641, 0x564A, 0x5649, 0x5646, 0x5658, 0x565A, 0x5640, 0x5633, -/* 2740 */ 0x563D, 0x562C, 0x563E, 0x5638, 0x562A, 0x563A, 0x571A, 0x58AB, -/* 2748 */ 0x589D, 0x58B1, 0x58A0, 0x58A3, 0x58AF, 0x58AC, 0x58A5, 0x58A1, -/* 2750 */ 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD, 0x5AF7, 0x5AF6, 0x5B03, 0x5AF8, -/* 2758 */ 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05, 0x5B0F, 0x5C67, 0x5D99, -/* 2760 */ 0x5D97, 0x5D9F, 0x5D92, 0x5DA2, 0x5D93, 0x5D95, 0x5DA0, 0x5D9C, -/* 2768 */ 0x5DA1, 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D, 0x5E60, 0x5E5C, 0x7DF3, -/* 2770 */ 0x5EDB, 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2, 0x618B, 0x6183, 0x6179, -/* 2778 */ 0x61B1, 0x61B0, 0x61A2, 0x6189, 0x619B, 0x6193, 0x61AF, 0x61AD, -/* 2780 */ 0x619F, 0x6192, 0x61AA, 0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, -/* 2788 */ 0x646E, 0x6470, 0x6496, 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, -/* 2790 */ 0x648B, 0x648A, 0x648C, 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, -/* 2798 */ 0x6576, 0x657A, 0x6579, 0x657B, 0x65B2, 0x65B3, 0x66B5, 0x66B0, -/* 27A0 */ 0x66A9, 0x66B2, 0x66B7, 0x66AA, 0x66AF, 0x6A00, 0x6A06, 0x6A17, -/* 27A8 */ 0x69E5, 0x69F8, 0x6A15, 0x69F1, 0x69E4, 0x6A20, 0x69FF, 0x69EC, -/* 27B0 */ 0x69E2, 0x6A1B, 0x6A1D, 0x69FE, 0x6A27, 0x69F2, 0x69EE, 0x6A14, -/* 27B8 */ 0x69F7, 0x69E7, 0x6A40, 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, -/* 27C0 */ 0x69EB, 0x6A09, 0x6A04, 0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, -/* 27C8 */ 0x6A07, 0x69F4, 0x6A16, 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, -/* 27D0 */ 0x6C01, 0x6C00, 0x6BFF, 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, -/* 27D8 */ 0x6FC6, 0x6F92, 0x6F8D, 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, -/* 27E0 */ 0x6F5A, 0x6F96, 0x6F76, 0x6F6C, 0x6F82, 0x6F55, 0x6F72, 0x6F52, -/* 27E8 */ 0x6F50, 0x6F57, 0x6F94, 0x6F93, 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, -/* 27F0 */ 0x6F7D, 0x6F67, 0x6F90, 0x6F53, 0x6F8B, 0x6F69, 0x6F7F, 0x6F95, -/* 27F8 */ 0x6F63, 0x6F77, 0x6F6A, 0x6F7B, 0x71B2, 0x71AF, 0x719B, 0x71B0, -/* 2800 */ 0x71A0, 0x719A, 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4, -/* 2808 */ 0x71A1, 0x71AA, 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, -/* 2810 */ 0x7352, 0x735E, 0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, -/* 2818 */ 0x7359, 0x7362, 0x7487, 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, -/* 2820 */ 0x7485, 0x7488, 0x747C, 0x7479, 0x7508, 0x7507, 0x757E, 0x7625, -/* 2828 */ 0x761E, 0x7619, 0x761D, 0x761C, 0x7623, 0x761A, 0x7628, 0x761B, -/* 2830 */ 0x769C, 0x769D, 0x769E, 0x769B, 0x778D, 0x778F, 0x7789, 0x7788, -/* 2838 */ 0x78CD, 0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE, 0x78D4, 0x78C8, -/* 2840 */ 0x78C3, 0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2, -/* 2848 */ 0x799B, 0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, -/* 2850 */ 0x7BBE, 0x7BAC, 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, -/* 2858 */ 0x7CC8, 0x7CCC, 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, -/* 2860 */ 0x7DE1, 0x7E03, 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, -/* 2868 */ 0x7DDF, 0x7F76, 0x7FAC, 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, -/* 2870 */ 0x7FEC, 0x7FE6, 0x7FE8, 0x8064, 0x8067, 0x81A3, 0x819F, 0x819E, -/* 2878 */ 0x8195, 0x81A2, 0x8199, 0x8197, 0x8216, 0x824F, 0x8253, 0x8252, -/* 2880 */ 0x8250, 0x824E, 0x8251, 0x8524, 0x853B, 0x850F, 0x8500, 0x8529, -/* 2888 */ 0x850E, 0x8509, 0x850D, 0x851F, 0x850A, 0x8527, 0x851C, 0x84FB, -/* 2890 */ 0x852B, 0x84FA, 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2, 0x8515, -/* 2898 */ 0x84F7, 0x84EB, 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, -/* 28A0 */ 0x84FE, 0x8528, 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E, 0x84F6, -/* 28A8 */ 0x8531, 0x8526, 0x84E7, 0x84E8, 0x84F0, 0x84EF, 0x84F9, 0x8518, -/* 28B0 */ 0x8520, 0x8530, 0x850B, 0x8519, 0x852F, 0x8662, 0x8756, 0x8763, -/* 28B8 */ 0x8764, 0x8777, 0x87E1, 0x8773, 0x8758, 0x8754, 0x875B, 0x8752, -/* 28C0 */ 0x8761, 0x875A, 0x8751, 0x875E, 0x876D, 0x876A, 0x8750, 0x874E, -/* 28C8 */ 0x875F, 0x875D, 0x876F, 0x876C, 0x877A, 0x876E, 0x875C, 0x8765, -/* 28D0 */ 0x874F, 0x877B, 0x8775, 0x8762, 0x8767, 0x8769, 0x885A, 0x8905, -/* 28D8 */ 0x890C, 0x8914, 0x890B, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, -/* 28E0 */ 0x8911, 0x890E, 0x8909, 0x89A2, 0x89A4, 0x89A3, 0x89ED, 0x89F0, -/* 28E8 */ 0x89EC, 0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3, 0x8AD1, 0x8AD4, 0x8AD5, -/* 28F0 */ 0x8ABB, 0x8AD7, 0x8ABE, 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3, 0x8ABA, -/* 28F8 */ 0x8ABD, 0x8AD9, 0x8C3E, 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9, -/* 2900 */ 0x8CE8, 0x8CDA, 0x8CDD, 0x8CE7, 0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, -/* 2908 */ 0x8E20, 0x8E23, 0x8E25, 0x8E24, 0x8E2E, 0x8E15, 0x8E1B, 0x8E16, -/* 2910 */ 0x8E11, 0x8E19, 0x8E26, 0x8E27, 0x8E14, 0x8E12, 0x8E18, 0x8E13, -/* 2918 */ 0x8E1C, 0x8E17, 0x8E1A, 0x8F2C, 0x8F24, 0x8F18, 0x8F1A, 0x8F20, -/* 2920 */ 0x8F23, 0x8F16, 0x8F17, 0x9073, 0x9070, 0x906F, 0x9067, 0x906B, -/* 2928 */ 0x912F, 0x912B, 0x9129, 0x912A, 0x9132, 0x9126, 0x912E, 0x9185, -/* 2930 */ 0x9186, 0x918A, 0x9181, 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3, -/* 2938 */ 0x92C4, 0x92C0, 0x92D9, 0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, -/* 2940 */ 0x92E9, 0x92D7, 0x92DD, 0x92CC, 0x92EF, 0x92C2, 0x92E8, 0x92CA, -/* 2948 */ 0x92C8, 0x92CE, 0x92E6, 0x92CD, 0x92D5, 0x92C9, 0x92E0, 0x92DE, -/* 2950 */ 0x92E7, 0x92D1, 0x92D3, 0x92B5, 0x92E1, 0x92C6, 0x92B4, 0x957C, -/* 2958 */ 0x95AC, 0x95AB, 0x95AE, 0x95B0, 0x96A4, 0x96A2, 0x96D3, 0x9705, -/* 2960 */ 0x9708, 0x9702, 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0, 0x97CF, -/* 2968 */ 0x981E, 0x981D, 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, -/* 2970 */ 0x98B2, 0x9908, 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, -/* 2978 */ 0x99DC, 0x99CD, 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, -/* 2980 */ 0x99D8, 0x99CB, 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, -/* 2988 */ 0x9AF2, 0x9AF1, 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, -/* 2990 */ 0x9B76, 0x9B75, 0x9B70, 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, -/* 2998 */ 0x9CFD, 0x9CFF, 0x9CF7, 0x9D07, 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, -/* 29A0 */ 0x9D05, 0x9D04, 0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, -/* 29A8 */ 0x5117, 0x511A, 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, -/* 29B0 */ 0x566E, 0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, -/* 29B8 */ 0x571C, 0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, -/* 29C0 */ 0x58BC, 0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, -/* 29C8 */ 0x5B10, 0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, -/* 29D0 */ 0x5DB1, 0x5DA9, 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, -/* 29D8 */ 0x5DB2, 0x5DAD, 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, -/* 29E0 */ 0x5EE9, 0x5EE7, 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x619D, -/* 29E8 */ 0x61A8, 0x6196, 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA, -/* 29F0 */ 0x61BF, 0x61B8, 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF, 0x64C9, -/* 29F8 */ 0x64BD, 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533, 0x657F, -/* 2A00 */ 0x657C, 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, 0x66CF, -/* 2A08 */ 0x66BD, 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, 0x6A49, -/* 2A10 */ 0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, 0x6A5B, -/* 2A18 */ 0x6A51, 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 0x6A64, -/* 2A20 */ 0x6A50, 0x6A4F, 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E, -/* 2A28 */ 0x6A56, 0x6A55, 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 0x6B56, -/* 2A30 */ 0x6BA7, 0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03, 0x6C06, -/* 2A38 */ 0x6FAD, 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8, 0x6F5E, -/* 2A40 */ 0x6FC4, 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, 0x6FA5, 0x6FAE, -/* 2A48 */ 0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8, 0x6FA2, 0x6FC9, -/* 2A50 */ 0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2, 0x71BF, -/* 2A58 */ 0x71B8, 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7, -/* 2A60 */ 0x71CF, 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, 0x71DB, 0x729D, -/* 2A68 */ 0x729E, 0x7369, 0x7366, 0x7367, 0x736C, 0x7365, 0x736B, 0x736A, -/* 2A70 */ 0x747F, 0x749A, 0x74A0, 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B, -/* 2A78 */ 0x7580, 0x762F, 0x762D, 0x7631, 0x763D, 0x7633, 0x763C, 0x7635, -/* 2A80 */ 0x7632, 0x7630, 0x76BB, 0x76E6, 0x779A, 0x779D, 0x77A1, 0x779C, -/* 2A88 */ 0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799, 0x7797, 0x78DD, 0x78E9, -/* 2A90 */ 0x78E5, 0x78EA, 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2, 0x78ED, -/* 2A98 */ 0x78DF, 0x78E0, 0x79A4, 0x7A44, 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, -/* 2AA0 */ 0x7AB5, 0x7AB1, 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, -/* 2AA8 */ 0x7BE5, 0x7BDA, 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, -/* 2AB0 */ 0x7BEB, 0x7BD8, 0x7BDF, 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, -/* 2AB8 */ 0x7E12, 0x7E21, 0x7E17, 0x7E0C, 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, -/* 2AC0 */ 0x7E1C, 0x7E15, 0x7E1A, 0x7E22, 0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, -/* 2AC8 */ 0x7E14, 0x7E25, 0x7E24, 0x7F43, 0x7F7B, 0x7F7C, 0x7F7A, 0x7FB1, -/* 2AD0 */ 0x7FEF, 0x802A, 0x8029, 0x806C, 0x81B1, 0x81A6, 0x81AE, 0x81B9, -/* 2AD8 */ 0x81B5, 0x81AB, 0x81B0, 0x81AC, 0x81B4, 0x81B2, 0x81B7, 0x81A7, -/* 2AE0 */ 0x81F2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856B, 0x854D, -/* 2AE8 */ 0x8553, 0x8561, 0x8558, 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, -/* 2AF0 */ 0x8544, 0x8551, 0x8547, 0x8563, 0x853E, 0x855B, 0x8571, 0x854E, -/* 2AF8 */ 0x856E, 0x8575, 0x8555, 0x8567, 0x8560, 0x858C, 0x8566, 0x855D, -/* 2B00 */ 0x8554, 0x8565, 0x856C, 0x8663, 0x8665, 0x8664, 0x879B, 0x878F, -/* 2B08 */ 0x8797, 0x8793, 0x8792, 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, -/* 2B10 */ 0x8787, 0x87A3, 0x8785, 0x8790, 0x8791, 0x879D, 0x8784, 0x8794, -/* 2B18 */ 0x879C, 0x879A, 0x8789, 0x891E, 0x8926, 0x8930, 0x892D, 0x892E, -/* 2B20 */ 0x8927, 0x8931, 0x8922, 0x8929, 0x8923, 0x892F, 0x892C, 0x891F, -/* 2B28 */ 0x89F1, 0x8AE0, 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, 0x8B14, -/* 2B30 */ 0x8AE4, 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF, -/* 2B38 */ 0x8AEF, 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, -/* 2B40 */ 0x8CF0, 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, -/* 2B48 */ 0x8E38, 0x8E40, 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, -/* 2B50 */ 0x8E3F, 0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, -/* 2B58 */ 0x8F34, 0x9076, 0x9079, 0x907B, 0x9086, 0x90FA, 0x9133, 0x9135, -/* 2B60 */ 0x9136, 0x9193, 0x9190, 0x9191, 0x918D, 0x918F, 0x9327, 0x931E, -/* 2B68 */ 0x9308, 0x931F, 0x9306, 0x930F, 0x937A, 0x9338, 0x933C, 0x931B, -/* 2B70 */ 0x9323, 0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D, 0x92CB, -/* 2B78 */ 0x931D, 0x92FA, 0x9325, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, -/* 2B80 */ 0x9324, 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C, -/* 2B88 */ 0x930B, 0x92FE, 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD, -/* 2B90 */ 0x95BE, 0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9, -/* 2B98 */ 0x96D4, 0x970B, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97F0, -/* 2BA0 */ 0x97F8, 0x9835, 0x982F, 0x9832, 0x9924, 0x991F, 0x9927, 0x9929, -/* 2BA8 */ 0x999E, 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0, 0x99E3, 0x99EA, -/* 2BB0 */ 0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, 0x9AFA, -/* 2BB8 */ 0x9AF9, 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E, -/* 2BC0 */ 0x9B7B, 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95, 0x9B7D, -/* 2BC8 */ 0x9B88, 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14, 0x9D29, 0x9D1D, -/* 2BD0 */ 0x9D18, 0x9D22, 0x9D10, 0x9D19, 0x9D1F, 0x9E88, 0x9E86, 0x9E87, -/* 2BD8 */ 0x9EAE, 0x9EAD, 0x9ED5, 0x9ED6, 0x9EFA, 0x9F12, 0x9F3D, 0x5126, -/* 2BE0 */ 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52F4, 0x5693, 0x568C, -/* 2BE8 */ 0x568D, 0x5686, 0x5684, 0x5683, 0x567E, 0x5682, 0x567F, 0x5681, -/* 2BF0 */ 0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25, 0x5B32, 0x5B23, -/* 2BF8 */ 0x5B2C, 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B, 0x5BF1, 0x5BF2, -/* 2C00 */ 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x5FBB, 0x61C3, 0x61B5, 0x61BC, -/* 2C08 */ 0x61E7, 0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE, 0x64EF, 0x64E9, -/* 2C10 */ 0x64E3, 0x64EB, 0x64E4, 0x64E8, 0x6581, 0x6580, 0x65B6, 0x65DA, -/* 2C18 */ 0x66D2, 0x6A8D, 0x6A96, 0x6A81, 0x6AA5, 0x6A89, 0x6A9F, 0x6A9B, -/* 2C20 */ 0x6AA1, 0x6A9E, 0x6A87, 0x6A93, 0x6A8E, 0x6A95, 0x6A83, 0x6AA8, -/* 2C28 */ 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A, 0x6A85, 0x6A8C, 0x6A92, -/* 2C30 */ 0x6B5B, 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9, 0x6FF4, 0x6FD4, 0x6FE3, -/* 2C38 */ 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE, 0x6FF2, 0x6FDD, 0x6FE2, -/* 2C40 */ 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2, 0x71E4, 0x71F0, 0x71E2, -/* 2C48 */ 0x7373, 0x736E, 0x736F, 0x7497, 0x74B2, 0x74AB, 0x7490, 0x74AA, -/* 2C50 */ 0x74AD, 0x74B1, 0x74A5, 0x74AF, 0x7510, 0x7511, 0x7512, 0x750F, -/* 2C58 */ 0x7584, 0x7643, 0x7648, 0x7649, 0x7647, 0x76A4, 0x76E9, 0x77B5, -/* 2C60 */ 0x77AB, 0x77B2, 0x77B7, 0x77B6, 0x77B4, 0x77B1, 0x77A8, 0x77F0, -/* 2C68 */ 0x78F3, 0x78FD, 0x7902, 0x78FB, 0x78FC, 0x78F2, 0x7905, 0x78F9, -/* 2C70 */ 0x78FE, 0x7904, 0x79AB, 0x79A8, 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, -/* 2C78 */ 0x7A54, 0x7A5A, 0x7ABE, 0x7AC0, 0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, -/* 2C80 */ 0x7C00, 0x7BFF, 0x7BFB, 0x7C0E, 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, -/* 2C88 */ 0x7C09, 0x7C03, 0x7C01, 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, -/* 2C90 */ 0x7C10, 0x7C0A, 0x7CE8, 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, -/* 2C98 */ 0x7E38, 0x7E2A, 0x7E49, 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, -/* 2CA0 */ 0x7E3B, 0x7E36, 0x7E44, 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, -/* 2CA8 */ 0x7FF4, 0x7FF2, 0x802C, 0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, -/* 2CB0 */ 0x81C7, 0x81BC, 0x81E9, 0x825B, 0x825A, 0x825C, 0x8583, 0x8580, -/* 2CB8 */ 0x858F, 0x85A7, 0x8595, 0x85A0, 0x858B, 0x85A3, 0x857B, 0x85A4, -/* 2CC0 */ 0x859A, 0x859E, 0x8577, 0x857C, 0x8589, 0x85A1, 0x857A, 0x8578, -/* 2CC8 */ 0x8557, 0x858E, 0x8596, 0x8586, 0x858D, 0x8599, 0x859D, 0x8581, -/* 2CD0 */ 0x85A2, 0x8582, 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, -/* 2CD8 */ 0x859F, 0x8668, 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, -/* 2CE0 */ 0x87B9, 0x87B5, 0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, -/* 2CE8 */ 0x87B7, 0x87AF, 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, -/* 2CF0 */ 0x87BD, 0x87DE, 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, -/* 2CF8 */ 0x8952, 0x8937, 0x8942, 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, -/* 2D00 */ 0x8B1E, 0x8B18, 0x8B16, 0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, -/* 2D08 */ 0x8B12, 0x8B15, 0x8B07, 0x8B0D, 0x8B08, 0x8B06, 0x8B1C, 0x8B13, -/* 2D10 */ 0x8B1A, 0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94, -/* 2D18 */ 0x8CF9, 0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47, -/* 2D20 */ 0x8F43, 0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B, -/* 2D28 */ 0x9199, 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, -/* 2D30 */ 0x9364, 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, -/* 2D38 */ 0x9350, 0x9351, 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, -/* 2D40 */ 0x9357, 0x9355, 0x9352, 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, -/* 2D48 */ 0x935E, 0x9363, 0x9367, 0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0, -/* 2D50 */ 0x95C9, 0x95C3, 0x95C5, 0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720, -/* 2D58 */ 0x971F, 0x9718, 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C, 0x979E, -/* 2D60 */ 0x979D, 0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A, 0x9849, -/* 2D68 */ 0x9845, 0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, 0x9932, -/* 2D70 */ 0x992F, 0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, -/* 2D78 */ 0x99FA, 0x99F4, 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB, 0x99FD, -/* 2D80 */ 0x99FE, 0x99FC, 0x9A03, 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 0x9AFC, -/* 2D88 */ 0x9B48, 0x9B9A, 0x9BA8, 0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, -/* 2D90 */ 0x9BA4, 0x9B86, 0x9BA2, 0x9BA0, 0x9BAF, 0x9D33, 0x9D41, 0x9D67, -/* 2D98 */ 0x9D36, 0x9D2E, 0x9D2F, 0x9D31, 0x9D38, 0x9D30, 0x9D45, 0x9D42, -/* 2DA0 */ 0x9D43, 0x9D3E, 0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D, 0x9E8A, -/* 2DA8 */ 0x9E89, 0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24, -/* 2DB0 */ 0x9F23, 0x9F22, 0x9F54, 0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, -/* 2DB8 */ 0x569C, 0x5697, 0x569A, 0x569D, 0x5699, 0x5970, 0x5B3C, 0x5C69, -/* 2DC0 */ 0x5C6A, 0x5DC0, 0x5E6D, 0x5E6E, 0x61D8, 0x61DF, 0x61ED, 0x61EE, -/* 2DC8 */ 0x61F1, 0x61EA, 0x61F0, 0x61EB, 0x61D6, 0x61E9, 0x64FF, 0x6504, -/* 2DD0 */ 0x64FD, 0x64F8, 0x6501, 0x6503, 0x64FC, 0x6594, 0x65DB, 0x66DA, -/* 2DD8 */ 0x66DB, 0x66D8, 0x6AC5, 0x6AB9, 0x6ABD, 0x6AE1, 0x6AC6, 0x6ABA, -/* 2DE0 */ 0x6AB6, 0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E, 0x6BC9, 0x6C0B, -/* 2DE8 */ 0x7007, 0x700C, 0x700D, 0x7001, 0x7005, 0x7014, 0x700E, 0x6FFF, -/* 2DF0 */ 0x7000, 0x6FFB, 0x7026, 0x6FFC, 0x6FF7, 0x700A, 0x7201, 0x71FF, -/* 2DF8 */ 0x71F9, 0x7203, 0x71FD, 0x7376, 0x74B8, 0x74C0, 0x74B5, 0x74C1, -/* 2E00 */ 0x74BE, 0x74B6, 0x74BB, 0x74C2, 0x7514, 0x7513, 0x765C, 0x7664, -/* 2E08 */ 0x7659, 0x7650, 0x7653, 0x7657, 0x765A, 0x76A6, 0x76BD, 0x76EC, -/* 2E10 */ 0x77C2, 0x77BA, 0x78FF, 0x790C, 0x7913, 0x7914, 0x7909, 0x7910, -/* 2E18 */ 0x7912, 0x7911, 0x79AD, 0x79AC, 0x7A5F, 0x7C1C, 0x7C29, 0x7C19, -/* 2E20 */ 0x7C20, 0x7C1F, 0x7C2D, 0x7C1D, 0x7C26, 0x7C28, 0x7C22, 0x7C25, -/* 2E28 */ 0x7C30, 0x7E5C, 0x7E50, 0x7E56, 0x7E63, 0x7E58, 0x7E62, 0x7E5F, -/* 2E30 */ 0x7E51, 0x7E60, 0x7E57, 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, -/* 2E38 */ 0x8075, 0x81D1, 0x81D2, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, -/* 2E40 */ 0x85C0, 0x85C3, 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, -/* 2E48 */ 0x85BF, 0x85CB, 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, -/* 2E50 */ 0x8624, 0x85B8, 0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, -/* 2E58 */ 0x87DB, 0x87EB, 0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, -/* 2E60 */ 0x87DC, 0x87D3, 0x87ED, 0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, -/* 2E68 */ 0x8801, 0x87F4, 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, 0x894C, -/* 2E70 */ 0x8946, 0x8950, 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, -/* 2E78 */ 0x8B30, 0x8B35, 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, -/* 2E80 */ 0x8B37, 0x8B26, 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, -/* 2E88 */ 0x8C42, 0x8C75, 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, -/* 2E90 */ 0x8D00, 0x8E5C, 0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, -/* 2E98 */ 0x8E67, 0x8E5B, 0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, -/* 2EA0 */ 0x8F47, 0x8F48, 0x8F4B, 0x9128, 0x913A, 0x913B, 0x913E, 0x91A8, -/* 2EA8 */ 0x91A5, 0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7, -/* 2EB0 */ 0x939B, 0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, 0x93A6, -/* 2EB8 */ 0x9395, 0x9388, 0x9399, 0x939F, 0x938D, 0x93B1, 0x9391, 0x93B2, -/* 2EC0 */ 0x93A4, 0x93A8, 0x93B4, 0x93A3, 0x93A5, 0x95D2, 0x95D3, 0x95D1, -/* 2EC8 */ 0x96B3, 0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, -/* 2ED0 */ 0x9722, 0x9725, 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA, -/* 2ED8 */ 0x97A2, 0x97A5, 0x97D7, 0x97D9, 0x97D6, 0x97D8, 0x97FA, 0x9850, -/* 2EE0 */ 0x9851, 0x9852, 0x98B8, 0x9941, 0x993C, 0x993A, 0x9A0F, 0x9A0B, -/* 2EE8 */ 0x9A09, 0x9A0D, 0x9A04, 0x9A11, 0x9A0A, 0x9A05, 0x9A07, 0x9A06, -/* 2EF0 */ 0x9AC0, 0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29, 0x9B35, 0x9B4A, -/* 2EF8 */ 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1, 0x9BB5, -/* 2F00 */ 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, 0x9D53, -/* 2F08 */ 0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 0x9D57, -/* 2F10 */ 0x9D52, 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF, -/* 2F18 */ 0x9F01, 0x9F00, 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, 0x9F28, -/* 2F20 */ 0x9F4C, 0x9F55, 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4, 0x56AB, -/* 2F28 */ 0x56AD, 0x56A6, 0x56A7, 0x56AA, 0x56AC, 0x58DA, 0x58DD, 0x58DB, -/* 2F30 */ 0x5912, 0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3, 0x5E70, 0x5FBF, 0x61FB, -/* 2F38 */ 0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E, 0x6584, 0x65DE, -/* 2F40 */ 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 0x6AD9, 0x6ACB, -/* 2F48 */ 0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60, -/* 2F50 */ 0x6BB0, 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016, 0x702B, 0x7021, -/* 2F58 */ 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701C, 0x702A, 0x720C, -/* 2F60 */ 0x720A, 0x7207, 0x7202, 0x7205, 0x72A5, 0x72A6, 0x72A4, 0x72A3, -/* 2F68 */ 0x72A1, 0x74CB, 0x74C5, 0x74B7, 0x74C3, 0x7516, 0x7660, 0x77C9, -/* 2F70 */ 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B, 0x7921, 0x791C, 0x7917, -/* 2F78 */ 0x791E, 0x79B0, 0x7A67, 0x7A68, 0x7C33, 0x7C3C, 0x7C39, 0x7C2C, -/* 2F80 */ 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76, 0x7E75, 0x7E78, 0x7E70, 0x7E77, -/* 2F88 */ 0x7E6F, 0x7E7A, 0x7E72, 0x7E74, 0x7E68, 0x7F4B, 0x7F4A, 0x7F83, -/* 2F90 */ 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE, 0x8078, 0x81D7, 0x81D5, 0x8264, -/* 2F98 */ 0x8261, 0x8263, 0x85EB, 0x85F1, 0x85ED, 0x85D9, 0x85E1, 0x85E8, -/* 2FA0 */ 0x85DA, 0x85D7, 0x85EC, 0x85F2, 0x85F8, 0x85D8, 0x85DF, 0x85E3, -/* 2FA8 */ 0x85DC, 0x85D1, 0x85F0, 0x85E6, 0x85EF, 0x85DE, 0x85E2, 0x8800, -/* 2FB0 */ 0x87FA, 0x8803, 0x87F6, 0x87F7, 0x8809, 0x880C, 0x880B, 0x8806, -/* 2FB8 */ 0x87FC, 0x8808, 0x87FF, 0x880A, 0x8802, 0x8962, 0x895A, 0x895B, -/* 2FC0 */ 0x8957, 0x8961, 0x895C, 0x8958, 0x895D, 0x8959, 0x8988, 0x89B7, -/* 2FC8 */ 0x89B6, 0x89F6, 0x8B50, 0x8B48, 0x8B4A, 0x8B40, 0x8B53, 0x8B56, -/* 2FD0 */ 0x8B54, 0x8B4B, 0x8B55, 0x8B51, 0x8B42, 0x8B52, 0x8B57, 0x8C43, -/* 2FD8 */ 0x8C77, 0x8C76, 0x8C9A, 0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, -/* 2FE0 */ 0x8DAD, 0x8DAB, 0x8E6D, 0x8E78, 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, -/* 2FE8 */ 0x8EC2, 0x8F52, 0x8F51, 0x8F4F, 0x8F50, 0x8F53, 0x8FB4, 0x9140, -/* 2FF0 */ 0x913F, 0x91B0, 0x91AD, 0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, -/* 2FF8 */ 0x93D0, 0x93F9, 0x93EC, 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, -/* 3000 */ 0x93D4, 0x93EE, 0x93E3, 0x93D5, 0x93C4, 0x93CE, 0x93C0, 0x93D2, -/* 3008 */ 0x93E7, 0x957D, 0x95DA, 0x95DB, 0x96E1, 0x9729, 0x972B, 0x972C, -/* 3010 */ 0x9728, 0x9726, 0x97B3, 0x97B7, 0x97B6, 0x97DD, 0x97DE, 0x97DF, -/* 3018 */ 0x985C, 0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD, 0x98BB, 0x98BE, -/* 3020 */ 0x9948, 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A, 0x9A15, 0x9A25, -/* 3028 */ 0x9A1D, 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, -/* 3030 */ 0x9A1C, 0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, -/* 3038 */ 0x9BEA, 0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, -/* 3040 */ 0x9BD4, 0x9BD7, 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, -/* 3048 */ 0x9BDA, 0x9D77, 0x9D81, 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, -/* 3050 */ 0x9D78, 0x9D86, 0x9D8B, 0x9D8C, 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, -/* 3058 */ 0x9D70, 0x9D69, 0x9D85, 0x9D73, 0x9D7B, 0x9D82, 0x9D6F, 0x9D79, -/* 3060 */ 0x9D7F, 0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0, 0x9EFC, 0x9F2D, -/* 3068 */ 0x9F40, 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337, 0x56B2, -/* 3070 */ 0x56B5, 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF, -/* 3078 */ 0x5FC0, 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF, -/* 3080 */ 0x66E8, 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, -/* 3088 */ 0x6AF1, 0x6AEE, 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, -/* 3090 */ 0x7031, 0x7042, 0x7038, 0x703F, 0x703A, 0x7039, 0x7040, 0x703B, -/* 3098 */ 0x7033, 0x7041, 0x7213, 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA, -/* 30A0 */ 0x76AB, 0x76AA, 0x76BE, 0x76ED, 0x77CC, 0x77CE, 0x77CF, 0x77CD, -/* 30A8 */ 0x77F2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79B2, -/* 30B0 */ 0x7A6E, 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, 0x7C48, 0x7C4A, 0x7C47, -/* 30B8 */ 0x7C45, 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, 0x7FBA, 0x7FFF, -/* 30C0 */ 0x8079, 0x81DB, 0x81D9, 0x820B, 0x8268, 0x8269, 0x8622, 0x85FF, -/* 30C8 */ 0x8601, 0x85FE, 0x861B, 0x8600, 0x85F6, 0x8604, 0x8609, 0x8605, -/* 30D0 */ 0x860C, 0x85FD, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816, -/* 30D8 */ 0x8963, 0x8966, 0x89B9, 0x89F7, 0x8B60, 0x8B6A, 0x8B5D, 0x8B68, -/* 30E0 */ 0x8B63, 0x8B65, 0x8B67, 0x8B6D, 0x8DAE, 0x8E86, 0x8E88, 0x8E84, -/* 30E8 */ 0x8F59, 0x8F56, 0x8F57, 0x8F55, 0x8F58, 0x8F5A, 0x908D, 0x9143, -/* 30F0 */ 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B, 0x9413, 0x93FB, -/* 30F8 */ 0x9420, 0x940F, 0x9414, 0x93FE, 0x9415, 0x9410, 0x9428, 0x9419, -/* 3100 */ 0x940D, 0x93F5, 0x9400, 0x93F7, 0x9407, 0x940E, 0x9416, 0x9412, -/* 3108 */ 0x93FA, 0x9409, 0x93F8, 0x940A, 0x93FF, 0x93FC, 0x940C, 0x93F6, -/* 3110 */ 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF, 0x972E, 0x972F, 0x97B9, -/* 3118 */ 0x97BB, 0x97FD, 0x97FE, 0x9860, 0x9862, 0x9863, 0x985F, 0x98C1, -/* 3120 */ 0x98C2, 0x9950, 0x994E, 0x9959, 0x994C, 0x994B, 0x9953, 0x9A32, -/* 3128 */ 0x9A34, 0x9A31, 0x9A2C, 0x9A2A, 0x9A36, 0x9A29, 0x9A2E, 0x9A38, -/* 3130 */ 0x9A2D, 0x9AC7, 0x9ACA, 0x9AC6, 0x9B10, 0x9B12, 0x9B11, 0x9C0B, -/* 3138 */ 0x9C08, 0x9BF7, 0x9C05, 0x9C12, 0x9BF8, 0x9C40, 0x9C07, 0x9C0E, -/* 3140 */ 0x9C06, 0x9C17, 0x9C14, 0x9C09, 0x9D9F, 0x9D99, 0x9DA4, 0x9D9D, -/* 3148 */ 0x9D92, 0x9D98, 0x9D90, 0x9D9B, 0x9DA0, 0x9D94, 0x9D9C, 0x9DAA, -/* 3150 */ 0x9D97, 0x9DA1, 0x9D9A, 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, -/* 3158 */ 0x9DA9, 0x9D96, 0x9DA6, 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, -/* 3160 */ 0x9EE4, 0x9EE7, 0x9EE6, 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, -/* 3168 */ 0x9F5D, 0x9F59, 0x9F91, 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, -/* 3170 */ 0x56BD, 0x56BE, 0x5B48, 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, -/* 3178 */ 0x651B, 0x6B02, 0x6AFC, 0x6B03, 0x6AF8, 0x6B00, 0x7043, 0x7044, -/* 3180 */ 0x704A, 0x7048, 0x7049, 0x7045, 0x7046, 0x721D, 0x721A, 0x7219, -/* 3188 */ 0x737E, 0x7517, 0x766A, 0x77D0, 0x792D, 0x7931, 0x792F, 0x7C54, -/* 3190 */ 0x7C53, 0x7CF2, 0x7E8A, 0x7E87, 0x7E88, 0x7E8B, 0x7E86, 0x7E8D, -/* 3198 */ 0x7F4D, 0x7FBB, 0x8030, 0x81DD, 0x8618, 0x862A, 0x8626, 0x861F, -/* 31A0 */ 0x8623, 0x861C, 0x8619, 0x8627, 0x862E, 0x8621, 0x8620, 0x8629, -/* 31A8 */ 0x861E, 0x8625, 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, -/* 31B0 */ 0x882B, 0x884A, 0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, -/* 31B8 */ 0x8B78, 0x8B45, 0x8B7A, 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, -/* 31C0 */ 0x8E8C, 0x8F5E, 0x8F5B, 0x8F5D, 0x9146, 0x9144, 0x9145, 0x91B9, -/* 31C8 */ 0x943F, 0x943B, 0x9436, 0x9429, 0x943D, 0x943C, 0x9430, 0x9439, -/* 31D0 */ 0x942A, 0x9437, 0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4, 0x95E3, -/* 31D8 */ 0x9735, 0x973A, 0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0, -/* 31E0 */ 0x9958, 0x9956, 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, -/* 31E8 */ 0x9A3A, 0x9A3F, 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, -/* 31F0 */ 0x9B52, 0x9C2B, 0x9C1D, 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, -/* 31F8 */ 0x9C24, 0x9C21, 0x9DB7, 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, -/* 3200 */ 0x9DCF, 0x9DBE, 0x9DC5, 0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, -/* 3208 */ 0x9DBA, 0x9DAC, 0x9DC8, 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD, -/* 3210 */ 0x9DB2, 0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18, -/* 3218 */ 0x9F1A, 0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6, -/* 3220 */ 0x56C5, 0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, -/* 3228 */ 0x6521, 0x6520, 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, -/* 3230 */ 0x7055, 0x7056, 0x7057, 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, -/* 3238 */ 0x74D8, 0x74D5, 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, -/* 3240 */ 0x7A70, 0x7A71, 0x7C57, 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0x7CF4, -/* 3248 */ 0x7CF1, 0x7E91, 0x7F4F, 0x7F87, 0x81DE, 0x826B, 0x8634, 0x8635, -/* 3250 */ 0x8633, 0x862C, 0x8632, 0x8636, 0x882C, 0x8828, 0x8826, 0x882A, -/* 3258 */ 0x8825, 0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E, 0x8B84, 0x8B82, -/* 3260 */ 0x8B86, 0x8B85, 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A, 0x8E92, -/* 3268 */ 0x8E90, 0x8E96, 0x8E97, 0x8F60, 0x8F62, 0x9147, 0x944C, 0x9450, -/* 3270 */ 0x944A, 0x944B, 0x944F, 0x9447, 0x9445, 0x9448, 0x9449, 0x9446, -/* 3278 */ 0x973F, 0x97E3, 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B, 0x9A4E, -/* 3280 */ 0x9A53, 0x9A54, 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A, 0x9A49, 0x9A52, -/* 3288 */ 0x9A50, 0x9AD0, 0x9B19, 0x9B2B, 0x9B3B, 0x9B56, 0x9B55, 0x9C46, -/* 3290 */ 0x9C48, 0x9C3F, 0x9C44, 0x9C39, 0x9C33, 0x9C41, 0x9C3C, 0x9C37, -/* 3298 */ 0x9C34, 0x9C32, 0x9C3D, 0x9C36, 0x9DDB, 0x9DD2, 0x9DDE, 0x9DDA, -/* 32A0 */ 0x9DCB, 0x9DD0, 0x9DDC, 0x9DD1, 0x9DDF, 0x9DE9, 0x9DD9, 0x9DD8, -/* 32A8 */ 0x9DD6, 0x9DF5, 0x9DD5, 0x9DDD, 0x9EB6, 0x9EF0, 0x9F35, 0x9F33, -/* 32B0 */ 0x9F32, 0x9F42, 0x9F6B, 0x9F95, 0x9FA2, 0x513D, 0x5299, 0x58E8, -/* 32B8 */ 0x58E7, 0x5972, 0x5B4D, 0x5DD8, 0x882F, 0x5F4F, 0x6201, 0x6203, -/* 32C0 */ 0x6204, 0x6529, 0x6525, 0x6596, 0x66EB, 0x6B11, 0x6B12, 0x6B0F, -/* 32C8 */ 0x6BCA, 0x705B, 0x705A, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, -/* 32D0 */ 0x77D4, 0x7C67, 0x7C66, 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, -/* 32D8 */ 0x863C, 0x8631, 0x863B, 0x863E, 0x8830, 0x8832, 0x882E, 0x8833, -/* 32E0 */ 0x8976, 0x8974, 0x8973, 0x89FE, 0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, -/* 32E8 */ 0x8C45, 0x8D19, 0x8E98, 0x8F64, 0x8F63, 0x91BC, 0x9462, 0x9455, -/* 32F0 */ 0x945D, 0x9457, 0x945E, 0x97C4, 0x97C5, 0x9800, 0x9A56, 0x9A59, -/* 32F8 */ 0x9B1E, 0x9B1F, 0x9B20, 0x9C52, 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, -/* 3300 */ 0x9C4B, 0x9C55, 0x9C59, 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, -/* 3308 */ 0x9DE3, 0x9DEB, 0x9DF8, 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, -/* 3310 */ 0x9DF2, 0x9DF0, 0x9DE2, 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, -/* 3318 */ 0x9EC2, 0x9ED0, 0x9EF2, 0x9EF3, 0x9F06, 0x9F1C, 0x9F38, 0x9F37, -/* 3320 */ 0x9F36, 0x9F43, 0x9F4F, 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, -/* 3328 */ 0x56CD, 0x5B4E, 0x5C6D, 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, -/* 3330 */ 0x7061, 0x705D, 0x7060, 0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, -/* 3338 */ 0x79B7, 0x79B6, 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838, -/* 3340 */ 0x8837, 0x8835, 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, -/* 3348 */ 0x8E9D, 0x91BE, 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, -/* 3350 */ 0x9746, 0x9743, 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, -/* 3358 */ 0x9C63, 0x9C67, 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, -/* 3360 */ 0x9E07, 0x9E03, 0x9E06, 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, -/* 3368 */ 0x9DFD, 0x9E04, 0x9EA0, 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, -/* 3370 */ 0x56D4, 0x652E, 0x65B8, 0x6B18, 0x6B19, 0x6B17, 0x6B1A, 0x7062, -/* 3378 */ 0x7226, 0x72AA, 0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6, -/* 3380 */ 0x7E9A, 0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, -/* 3388 */ 0x8648, 0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, -/* 3390 */ 0x8EA5, 0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, -/* 3398 */ 0x9749, 0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, -/* 33A0 */ 0x9E10, 0x9E0F, 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, -/* 33A8 */ 0x9F78, 0x9F7B, 0x9F7A, 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, -/* 33B0 */ 0x8DB2, 0x8EA6, 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9A60, -/* 33B8 */ 0x9C74, 0x9C73, 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, -/* 33C0 */ 0x9FA4, 0x7068, 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D, 0x883F, -/* 33C8 */ 0x8B9E, 0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873, 0x9874, 0x98CC, -/* 33D0 */ 0x9961, 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, 0x9E17, -/* 33D8 */ 0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 0x9480, -/* 33E0 */ 0x9481, 0x9A69, 0x9A68, 0x9B2E, 0x9E19, 0x7229, 0x864B, 0x8B9F, -/* 33E8 */ 0x9483, 0x9C79, 0x9EB7, 0x7675, 0x9A6B, 0x9C7A, 0x9E1D, 0x7069, -/* 33F0 */ 0x706A, 0x9EA4, 0x9F7E, 0x9F49, 0x9F98, -/* End of table Total Length = 0x367D * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cns_1.ut b/mozilla/lib/libi18n/unicode/utotbl/cns_1.ut deleted file mode 100644 index aa28b7f7820..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cns_1.ut +++ /dev/null @@ -1,2192 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 215E - srcEnd = 2163 - destBegin = FE59 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 2324 - srcEnd = 232B - destBegin = 2581 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 2421 - srcEnd = 242A - destBegin = FF10 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 242B - srcEnd = 2434 - destBegin = 2160 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 2435 - srcEnd = 243D - destBegin = 3021 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 2441 - srcEnd = 245A - destBegin = FF21 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 245B - srcEnd = 2474 - destBegin = FF41 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 2475 - srcEnd = 247E - destBegin = 0391 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2521 - srcEnd = 2527 - destBegin = 039B -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2528 - srcEnd = 252E - destBegin = 03A3 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 252F - srcEnd = 253F - destBegin = 03B1 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2540 - srcEnd = 2546 - destBegin = 03C3 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 2547 - srcEnd = 256B - destBegin = 3105 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 2621 - srcEnd = 262A - destBegin = 2460 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 262B - srcEnd = 2634 - destBegin = 2474 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 2635 - srcEnd = 263E - destBegin = 2170 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 4221 - srcEnd = 4240 - destBegin = 2400 -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 2121 - srcEnd = 217E - mappingOffset = 0000 - Mapping = - 3000 FF0C 3001 3002 FF0E 30FB FF1B FF1A - FF1F FF01 FE30 2026 2025 FE50 FE51 FE52 - 00B7 FE54 FE55 FE56 FE57 FE31 2014 FE32 - 2013 FFFD FFFD FFFD FFFD FF08 FF09 FE35 - FE36 FF5B FF5D FE37 FE38 3014 3015 FE39 - FE3A 3010 3011 FE3B FE3C 300A 300B FE3D - FE3E 3008 3009 FE3F FE40 300C 300D FE41 - FE42 300E 300F FE43 FE44 FFFD FFFD FFFD - FFFD FFFD FFFD 2018 2019 201C 201D 301D - 301E 2032 2035 FF03 FF06 FF0A 203B 00A7 - 3003 25CB 25CF 25B3 25B2 25CE 2606 2605 - 25C7 25C6 25A1 25A0 25BD 25BC -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = 2221 - srcEnd = 227E - mappingOffset = 005E - Mapping = - 32A3 2105 203E FFFD FF3F FFFD FE49 FE4A - FE4D FE4E FE4B FE4C FE5F FE60 FE61 FF0B - FF0D 00D7 00F7 00B1 221A FF1C FF1E FF1D - 2266 2267 2260 221E 2252 2261 FE62 FE63 - FE64 FE66 FE65 223C 2229 222A 22A5 2220 - 221F 22BF 33D2 33D1 222B 222E 2235 2234 - 2640 2642 2641 2609 2191 2193 2192 2190 - 2196 2197 2199 2198 2016 FF5C FF0F FF3C - 2215 FE68 FF04 FFE5 3012 FFE0 FFE1 FF05 - FF20 2103 2109 FE69 FE6A FE6B 33D5 339C - 339D 339E 33CE 33A1 338E 338F 33C4 00B0 - 5159 515B 515E 515D 5161 5163 -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 2321 - srcEnd = 234E - mappingOffset = 00BC - Mapping = - 55E7 74E9 7CCE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 258F 258E 258D 258C 258B - 258A 2589 253C 2534 252C 2524 251C 2594 - 2500 2502 2595 250C 2510 2514 2518 256D - 256E 2570 256F 2550 255E 256A 2561 25E2 - 25E3 25E5 25E4 2571 2572 2573 -End of Item 0013 - -Begin of Item 0014 - Format 2 - srcBegin = 243F - destBegin = 5344 -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 256C - srcEnd = 2570 - mappingOffset = 00EA - Mapping = - 02D9 02C9 02CA 02C7 02CB -End of Item 0015 - -Begin of Item 0016 - Format 2 - srcBegin = 4241 - destBegin = 2421 -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 4421 - srcEnd = 447E - mappingOffset = 00EF - Mapping = - 4E00 4E59 4E01 4E03 4E43 4E5D 4E86 4E8C - 4EBA 513F 5165 516B 51E0 5200 5201 529B - 5315 5341 535C 53C8 4E09 4E0B 4E08 4E0A - 4E2B 4E38 51E1 4E45 4E48 4E5F 4E5E 4E8E - 4EA1 5140 5203 52FA 5343 53C9 53E3 571F - 58EB 5915 5927 5973 5B50 5B51 5B53 5BF8 - 5C0F 5C22 5C38 5C71 5DDD 5DE5 5DF1 5DF2 - 5DF3 5DFE 5E72 5EFE 5F0B 5F13 624D 4E11 - 4E10 4E0D 4E2D 4E30 4E39 4E4B 5C39 4E88 - 4E91 4E95 4E92 4E94 4EA2 4EC1 4EC0 4EC3 - 4EC6 4EC7 4ECD 4ECA 4ECB 4EC4 5143 5141 - 5167 516D 516E 516C 5197 51F6 -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 4521 - srcEnd = 457E - mappingOffset = 014D - Mapping = - 5206 5207 5208 52FB 52FE 52FF 5316 5339 - 5348 5347 5345 535E 5384 53CB 53CA 53CD - 58EC 5929 592B 592A 592D 5B54 5C11 5C24 - 5C3A 5C6F 5DF4 5E7B 5EFF 5F14 5F15 5FC3 - 6208 6236 624B 624E 652F 6587 6597 65A4 - 65B9 65E5 66F0 6708 6728 6B20 6B62 6B79 - 6BCB 6BD4 6BDB 6C0F 6C34 706B 722A 7236 - 723B 7247 7259 725B 72AC 738B 4E19 4E16 - 4E15 4E14 4E18 4E3B 4E4D 4E4F 4E4E 4EE5 - 4ED8 4ED4 4ED5 4ED6 4ED7 4EE3 4EE4 4ED9 - 4EDE 5145 5144 5189 518A 51AC 51F9 51FA - 51F8 520A 52A0 529F 5305 5306 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 4621 - srcEnd = 467E - mappingOffset = 01AB - Mapping = - 5317 531D 4EDF 534A 5349 5361 5360 536F - 536E 53BB 53EF 53E4 53F3 53EC 53EE 53E9 - 53E8 53FC 53F8 53F5 53EB 53E6 53EA 53F2 - 53F1 53F0 53E5 53ED 53FB 56DB 56DA 5916 - 592E 5931 5974 5976 5B55 5B83 5C3C 5DE8 - 5DE7 5DE6 5E02 5E03 5E73 5E7C 5F01 5F18 - 5F17 5FC5 620A 6253 6254 6252 6251 65A5 - 65E6 672E 672C 672A 672B 672D 6B63 6BCD - 6C11 6C10 6C38 6C41 6C40 6C3E 72AF 7384 - 7389 74DC 74E6 7518 751F 7528 7529 7530 - 7531 7532 7533 758B 767D 76AE 76BF 76EE - 77DB 77E2 77F3 793A 79BE 7A74 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 4721 - srcEnd = 477E - mappingOffset = 0209 - Mapping = - 7ACB 4E1E 4E1F 4E52 4E53 4E69 4E99 4EA4 - 4EA6 4EA5 4EFF 4F09 4F19 4F0A 4F15 4F0D - 4F10 4F11 4F0F 4EF2 4EF6 4EFB 4EF0 4EF3 - 4EFD 4F01 4F0B 5149 5147 5146 5148 5168 - 5171 518D 51B0 5217 5211 5212 520E 5216 - 52A3 5308 5321 5320 5370 5371 5409 540F - 540C 540A 5410 5401 540B 5404 5411 540D - 5408 5403 540E 5406 5412 56E0 56DE 56DD - 5733 5730 5728 572D 572C 572F 5729 5919 - 591A 5937 5938 5984 5978 5983 597D 5979 - 5982 5981 5B57 5B58 5B87 5B88 5B85 5B89 - 5BFA 5C16 5C79 5DDE 5E06 5E76 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 4821 - srcEnd = 487E - mappingOffset = 0267 - Mapping = - 5E74 5F0F 5F1B 5FD9 5FD6 620E 620C 620D - 6210 6263 625B 6258 6536 65E9 65E8 65EC - 65ED 66F2 66F3 6709 673D 6734 6731 6735 - 6B21 6B64 6B7B 6C16 6C5D 6C57 6C59 6C5F - 6C60 6C50 6C55 6C61 6C5B 6C4D 6C4E 7070 - 725F 725D 767E 7AF9 7C73 7CF8 7F36 7F8A - 7FBD 8001 8003 800C 8012 8033 807F 8089 - 808B 808C 81E3 81EA 81F3 81FC 820C 821B - 821F 826E 8272 827E 866B 8840 884C 8863 - 897F 9621 4E32 4EA8 4F4D 4F4F 4F47 4F57 - 4F5E 4F34 4F5B 4F55 4F30 4F50 4F51 4F3D - 4F3A 4F38 4F43 4F54 4F3C 4F46 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 4921 - srcEnd = 497E - mappingOffset = 02C5 - Mapping = - 4F63 4F5C 4F60 4F2F 4F4E 4F36 4F59 4F5D - 4F48 4F5A 514C 514B 514D 5175 51B6 51B7 - 5225 5224 5229 522A 5228 52AB 52A9 52AA - 52AC 5323 5373 5375 541D 542D 541E 543E - 5426 544E 5427 5446 5443 5433 5448 5442 - 541B 5429 544A 5439 543B 5438 542E 5435 - 5436 5420 543C 5440 5431 542B 541F 542C - 56EA 56F0 56E4 56EB 574A 5751 5740 574D - 5747 574E 573E 5750 574F 573B 58EF 593E - 599D 5992 59A8 599E 59A3 5999 5996 598D - 59A4 5993 598A 59A5 5B5D 5B5C 5B5A 5B5B - 5B8C 5B8B 5B8F 5C2C 5C40 5C41 -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 4A21 - srcEnd = 4A7E - mappingOffset = 0323 - Mapping = - 5C3F 5C3E 5C90 5C91 5C94 5C8C 5DEB 5E0C - 5E8F 5E87 5E8A 5EF7 5F04 5F1F 5F64 5F62 - 5F77 5F79 5FD8 5FCC 5FD7 5FCD 5FF1 5FEB - 5FF8 5FEA 6212 6211 6284 6297 6296 6280 - 6276 6289 626D 628A 627C 627E 6279 6273 - 6292 626F 6298 626E 6295 6293 6291 6286 - 6539 653B 6538 65F1 66F4 675F 674E 674F - 6750 6751 675C 6756 675E 6749 6746 6760 - 6753 6757 6B65 6BCF 6C42 6C5E 6C99 6C81 - 6C88 6C89 6C85 6C9B 6C6A 6C7A 6C90 6C70 - 6C8C 6C68 6C96 6C92 6C7D 6C83 6C72 6C7E - 6C74 6C86 6C76 6C8D 6C94 6C98 -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 4B21 - srcEnd = 4B7E - mappingOffset = 0381 - Mapping = - 6C82 7076 707C 707D 7078 7262 7261 7260 - 72C4 72C2 7396 752C 752B 7537 7538 7682 - 76EF 77E3 79C1 79C0 79BF 7A76 7CFB 7F55 - 8096 8093 809D 8098 809B 809A 80B2 826F - 8292 828B 828D 898B 89D2 8A00 8C37 8C46 - 8C55 8C9D 8D64 8D70 8DB3 8EAB 8ECA 8F9B - 8FB0 8FC2 8FC6 8FC5 8FC4 5DE1 9091 90A2 - 90AA 90A6 90A3 9149 91C6 91CC 9632 962E - 9631 962A 962C 4E26 4E56 4E73 4E8B 4E9B - 4E9E 4EAB 4EAC 4F6F 4F9D 4F8D 4F73 4F7F - 4F6C 4F9B 4F8B 4F86 4F83 4F70 4F75 4F88 - 4F69 4F7B 4F96 4F7E 4F8F 4F91 -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 4C21 - srcEnd = 4C7E - mappingOffset = 03DF - Mapping = - 4F7A 5154 5152 5155 5169 5177 5176 5178 - 51BD 51FD 523B 5238 5237 523A 5230 522E - 5236 5241 52BE 52BB 5352 5354 5353 5351 - 5366 5377 5378 5379 53D6 53D4 53D7 5473 - 5475 5496 5478 5495 5480 547B 5477 5484 - 5492 5486 547C 5490 5471 5476 548C 549A - 5462 5468 548B 547D 548E 56FA 5783 5777 - 576A 5769 5761 5766 5764 577C 591C 5949 - 5947 5948 5944 5954 59BE 59BB 59D4 59B9 - 59AE 59D1 59C6 59D0 59CD 59CB 59D3 59CA - 59AF 59B3 59D2 59C5 5B5F 5B64 5B63 5B97 - 5B9A 5B98 5B9C 5B99 5B9B 5C1A -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 4D21 - srcEnd = 4D7E - mappingOffset = 043D - Mapping = - 5C48 5C45 5C46 5CB7 5CA1 5CB8 5CA9 5CAB - 5CB1 5CB3 5E18 5E1A 5E16 5E15 5E1B 5E11 - 5E78 5E9A 5E97 5E9C 5E95 5E96 5EF6 5F26 - 5F27 5F29 5F80 5F81 5F7F 5F7C 5FDD 5FE0 - 5FFD 5FF5 5FFF 600F 6014 602F 6035 6016 - 602A 6015 6021 6027 6029 602B 601B 6216 - 6215 623F 623E 6240 627F 62C9 62CC 62C4 - 62BF 62C2 62B9 62D2 62DB 62AB 62D3 62D4 - 62CB 62C8 62A8 62BD 62BC 62D0 62D9 62C7 - 62CD 62B5 62DA 62B1 62D8 62D6 62D7 62C6 - 62AC 62CE 653E 65A7 65BC 65FA 6614 6613 - 660C 6606 6602 660E 6600 660F -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 4E21 - srcEnd = 4E7E - mappingOffset = 049B - Mapping = - 6615 660A 6607 670D 670B 676D 678B 6795 - 6771 679C 6773 6777 6787 679D 6797 676F - 6770 677F 6789 677E 6790 6775 679A 6793 - 677C 676A 6772 6B23 6B66 6B67 6B7F 6C13 - 6C1B 6CE3 6CE8 6CF3 6CB1 6CCC 6CE5 6CB3 - 6CBD 6CBE 6CBC 6CE2 6CAB 6CD5 6CD3 6CB8 - 6CC4 6CB9 6CC1 6CAE 6CD7 6CC5 6CF1 6CBF - 6CBB 6CE1 6CDB 6CCA 6CAC 6CEF 6CDC 6CD6 - 6CE0 7095 708E 7092 708A 7099 722C 722D - 7238 7248 7267 7269 72C0 72CE 72D9 72D7 - 72D0 73A9 73A8 739F 73AB 73A5 753D 759D - 7599 759A 7684 76C2 76F2 76F4 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 4F21 - srcEnd = 4F7E - mappingOffset = 04F9 - Mapping = - 77E5 77FD 793E 7940 7941 79C9 79C8 7A7A - 7A79 7AFA 7CFE 7F54 7F8C 7F8B 8005 80BA - 80A5 80A2 80B1 80A1 80AB 80A9 80B4 80AA - 80AF 81E5 81FE 820D 82B3 829D 8299 82AD - 82BD 829F 82B9 82B1 82AC 82A5 82AF 82B8 - 82A3 82B0 82BE 82B7 864E 8671 521D 8868 - 8ECB 8FCE 8FD4 8FD1 90B5 90B8 90B1 90B6 - 91C7 91D1 9577 9580 961C 9640 963F 963B - 9644 9642 96B9 96E8 9752 975E 4E9F 4EAD - 4EAE 4FE1 4FB5 4FAF 4FBF 4FE0 4FD1 4FCF - 4FDD 4FC3 4FB6 4FD8 4FDF 4FCA 4FD7 4FAE - 4FD0 4FC4 4FC2 4FDA 4FCE 4FDE -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 5021 - srcEnd = 507E - mappingOffset = 0557 - Mapping = - 4FB7 5157 5192 5191 51A0 524E 5243 524A - 524D 524C 524B 5247 52C7 52C9 52C3 52C1 - 530D 5357 537B 539A 53DB 54AC 54C0 54A8 - 54CE 54C9 54B8 54A6 54B3 54C7 54C2 54BD - 54AA 54C1 54C4 54C8 54AF 54AB 54B1 54BB - 54A9 54A7 54BF 56FF 5782 578B 57A0 57A3 - 57A2 57CE 57AE 5793 5955 5951 594F 594E - 5950 59DC 59D8 59FF 59E3 59E8 5A03 59E5 - 59EA 59DA 59E6 5A01 59FB 5B69 5BA3 5BA6 - 5BA4 5BA2 5BA5 5C01 5C4E 5C4F 5C4D 5C4B - 5CD9 5CD2 5DF7 5E1D 5E25 5E1F 5E7D 5EA0 - 5EA6 5EFA 5F08 5F2D 5F65 5F88 -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 5121 - srcEnd = 517E - mappingOffset = 05B5 - Mapping = - 5F85 5F8A 5F8B 5F87 5F8C 5F89 6012 601D - 6020 6025 600E 6028 604D 6070 6068 6062 - 6046 6043 606C 606B 606A 6064 6241 62DC - 6316 6309 62FC 62ED 6301 62EE 62FD 6307 - 62F1 62F7 62EF 62EC 62FE 62F4 6311 6302 - 653F 6545 65AB 65BD 65E2 6625 662D 6620 - 6627 662F 661F 6628 6631 6624 66F7 67FF - 67D3 67F1 67D4 67D0 67EC 67B6 67AF 67F5 - 67E9 67EF 67C4 67D1 67B4 67DA 67E5 67B8 - 67CF 67DE 67F3 67B0 67D9 67E2 67DD 67D2 - 6B6A 6B83 6B86 6BB5 6BD2 6BD7 6C1F 6CC9 - 6D0B 6D32 6D2A 6D41 6D25 6D0C -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 5221 - srcEnd = 527E - mappingOffset = 0613 - Mapping = - 6D31 6D1E 6D17 6D3B 6D3D 6D3E 6D36 6D1B - 6CF5 6D39 6D27 6D38 6D29 6D2E 6D35 6D0E - 6D2B 70AB 70BA 70B3 70AC 70AF 70AD 70B8 - 70AE 70A4 7230 7272 726F 7274 72E9 72E0 - 72E1 73B7 73CA 73BB 73B2 73CD 73C0 73B3 - 751A 752D 754F 754C 754E 754B 75AB 75A4 - 75A5 75A2 75A3 7678 7686 7687 7688 76C8 - 76C6 76C3 76C5 7701 76F9 76F8 7709 770B - 76FE 76FC 7707 77DC 7802 7814 780C 780D - 7946 7949 7948 7947 79B9 79BA 79D1 79D2 - 79CB 7A7F 7A81 7AFF 7AFD 7C7D 7D02 7D05 - 7D00 7D09 7D07 7D04 7D06 7F38 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 5321 - srcEnd = 537E - mappingOffset = 0671 - Mapping = - 7F8E 7FBF 8010 800D 8011 8036 80D6 80E5 - 80DA 80C3 80C4 80CC 80E1 80DB 80CE 80DE - 80E4 80DD 81F4 8222 82E7 8303 8305 82E3 - 82DB 82E6 8304 82E5 8302 8309 82D2 82D7 - 82F1 8301 82DC 82D4 82D1 82DE 82D3 82DF - 82EF 8306 8650 8679 867B 867A 884D 886B - 8981 89D4 8A08 8A02 8A03 8C9E 8CA0 8D74 - 8D73 8DB4 8ECD 8ECC 8FF0 8FE6 8FE2 8FEA - 8FE5 8FED 8FEB 8FE4 8FE8 90CA 90CE 90C1 - 90C3 914B 914A 91CD 9582 9650 964B 964C - 964D 9762 9769 97CB 97ED 97F3 9801 98A8 - 98DB 98DF 9996 9999 4E58 4EB3 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 5421 - srcEnd = 547E - mappingOffset = 06CF - Mapping = - 500C 500D 5023 4FEF 5026 5025 4FF8 5029 - 5016 5006 503C 501F 501A 5012 5011 4FFA - 5000 5014 5028 4FF1 5021 500B 5019 5018 - 4FF3 4FEE 502D 502A 4FFE 502B 5009 517C - 51A4 51A5 51A2 51CD 51CC 51C6 51CB 5256 - 525C 5254 525B 525D 532A 537F 539F 539D - 53DF 54E8 5510 5501 5537 54FC 54E5 54F2 - 5506 54FA 5514 54E9 54ED 54E1 5509 54EE - 54EA 54E6 5527 5507 54FD 550F 5703 5704 - 57C2 57D4 57CB 57C3 5809 590F 5957 5958 - 595A 5A11 5A18 5A1C 5A1F 5A1B 5A13 59EC - 5A20 5A23 5A29 5A25 5A0C 5A09 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 5521 - srcEnd = 557E - mappingOffset = 072D - Mapping = - 5B6B 5C58 5BB0 5BB3 5BB6 5BB4 5BAE 5BB5 - 5BB9 5BB8 5C04 5C51 5C55 5C50 5CED 5CFD - 5CFB 5CEA 5CE8 5CF0 5CF6 5D01 5CF4 5DEE - 5E2D 5E2B 5EAB 5EAD 5EA7 5F31 5F92 5F91 - 5F90 6059 6063 6065 6050 6055 606D 6069 - 606F 6084 609F 609A 608D 6094 608C 6085 - 6096 6247 62F3 6308 62FF 634E 633E 632F - 6355 6342 6346 634F 6349 633A 6350 633D - 632A 632B 6328 634D 634C 6548 6549 6599 - 65C1 65C5 6642 6649 664F 6643 6652 664C - 6645 6641 66F8 6714 6715 6717 6821 6838 - 6848 6846 6853 6839 6842 6854 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 5621 - srcEnd = 567E - mappingOffset = 078B - Mapping = - 6829 68B3 6817 684C 6851 683D 67F4 6850 - 6840 683C 6843 682A 6845 6813 6818 6841 - 6B8A 6B89 6BB7 6C23 6C27 6C28 6C26 6C24 - 6CF0 6D6A 6D95 6D88 6D87 6D66 6D78 6D77 - 6D59 6D93 6D6C 6D89 6D6E 6D5A 6D74 6D69 - 6D8C 6D8A 6D79 6D85 6D65 6D94 70CA 70D8 - 70E4 70D9 70C8 70CF 7239 7279 72FC 72F9 - 72FD 72F8 72F7 7386 73ED 7409 73EE 73E0 - 73EA 73DE 7554 755D 755C 755A 7559 75BE - 75C5 75C7 75B2 75B3 75BD 75BC 75B9 75C2 - 75B8 768B 76B0 76CA 76CD 76CE 7729 771F - 7720 7728 77E9 7830 7827 7838 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 5721 - srcEnd = 577E - mappingOffset = 07E9 - Mapping = - 781D 7834 7837 7825 782D 7820 781F 7832 - 7955 7950 7960 795F 7956 795E 795D 7957 - 795A 79E4 79E3 79E7 79DF 79E6 79E9 79D8 - 7A84 7A88 7AD9 7B06 7B11 7C89 7D21 7D17 - 7D0B 7D0A 7D20 7D22 7D14 7D10 7D15 7D1A - 7D1C 7D0D 7D19 7D1B 7F3A 7F5F 7F94 7FC5 - 7FC1 8006 8004 8018 8015 8019 8017 803D - 803F 80F1 8102 80F0 8105 80ED 80F4 8106 - 80F8 80F3 8108 80FD 810A 80FC 80EF 81ED - 81EC 8200 8210 822A 822B 8228 822C 82BB - 832B 8352 8354 834A 8338 8350 8349 8335 - 8334 834F 8332 8339 8336 8317 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 5821 - srcEnd = 587E - mappingOffset = 0847 - Mapping = - 8340 8331 8328 8343 8654 868A 86AA 8693 - 86A4 86A9 868C 86A3 869C 8870 8877 8881 - 8882 887D 8879 8A18 8A10 8A0E 8A0C 8A15 - 8A0A 8A17 8A13 8A16 8A0F 8A11 8C48 8C7A - 8C79 8CA1 8CA2 8D77 8EAC 8ED2 8ED4 8ECF - 8FB1 9001 9006 8FF7 9000 8FFA 8FF4 9003 - 8FFD 9005 8FF8 9095 90E1 90DD 90E2 9152 - 914D 914C 91D8 91DD 91D7 91DC 91D9 9583 - 9662 9663 9661 965B 965D 9664 9658 965E - 96BB 98E2 99AC 9AA8 9AD8 9B25 9B32 9B3C - 4E7E 507A 507D 505C 5047 5043 504C 505A - 5049 5065 5076 504E 5055 5075 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 5921 - srcEnd = 597E - mappingOffset = 08A5 - Mapping = - 5074 5077 504F 500F 506F 506D 515C 5195 - 51F0 526A 526F 52D2 52D9 52D8 52D5 5310 - 530F 5319 533F 5340 533E 53C3 66FC 5546 - 556A 5566 5544 555E 5561 5543 554A 5531 - 5556 554F 5555 552F 5564 5538 552E 555C - 552C 5563 5533 5541 5557 5708 570B 5709 - 57DF 5805 580A 5806 57E0 57E4 57FA 5802 - 5835 57F7 57F9 5920 5962 5A36 5A41 5A49 - 5A66 5A6A 5A40 5A3C 5A62 5A5A 5A46 5A4A - 5B70 5BC7 5BC5 5BC4 5BC2 5BBF 5BC6 5C09 - 5C08 5C07 5C60 5C5C 5C5D 5D07 5D06 5D0E - 5D1B 5D16 5D22 5D11 5D29 5D14 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 5A21 - srcEnd = 5A7E - mappingOffset = 0903 - Mapping = - 5D19 5D24 5D27 5D17 5DE2 5E38 5E36 5E33 - 5E37 5EB7 5EB8 5EB6 5EB5 5EBE 5F35 5F37 - 5F57 5F6C 5F69 5F6B 5F97 5F99 5F9E 5F98 - 5FA1 5FA0 5F9C 607F 60A3 6089 60A0 60A8 - 60CB 60B4 60E6 60BD 60C5 60BB 60B5 60DC - 60BC 60D8 60D5 60C6 60DF 60B8 60DA 60C7 - 621A 621B 6248 63A0 63A7 6372 6396 63A2 - 63A5 6377 6367 6398 63AA 6371 63A9 6389 - 6383 639B 636B 63A8 6384 6388 6399 63A1 - 63AC 6392 638F 6380 637B 6369 6368 637A - 655D 6556 6551 6559 6557 555F 654F 6558 - 6555 6554 659C 659B 65AC 65CF -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 5B21 - srcEnd = 5B7E - mappingOffset = 0961 - Mapping = - 65CB 65CC 65CE 665D 665A 6664 6668 6666 - 665E 66F9 52D7 671B 6881 68AF 68A2 6893 - 68B5 687F 6876 68B1 68A7 6897 68B0 6883 - 68C4 68AD 6886 6885 6894 689D 68A8 689F - 68A1 6882 6B32 6BBA 6BEB 6BEC 6C2B 6D8E - 6DBC 6DF3 6DD9 6DB2 6DE1 6DCC 6DE4 6DFB - 6DFA 6E05 6DC7 6DCB 6DAF 6DD1 6DAE 6DDE - 6DF9 6DB8 6DF7 6DF5 6DC5 6DD2 6E1A 6DB5 - 6DDA 6DEB 6DD8 6DEA 6DF1 6DEE 6DE8 6DC6 - 6DC4 6DAA 6DEC 6DBF 6DE6 70F9 7109 710A - 70FD 70EF 723D 727D 7281 731C 731B 7316 - 7313 7319 7387 7405 740A 7403 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 5C21 - srcEnd = 5C7E - mappingOffset = 09BF - Mapping = - 7406 73FE 740D 74E0 74F6 74F7 751C 7522 - 7565 7566 7562 7570 758F 75D4 75D5 75B5 - 75CA 75CD 768E 76D4 76D2 76DB 7737 773E - 773C 7736 7738 773A 786B 7843 784E 7965 - 7968 796D 79FB 7A92 7A95 7B20 7B28 7B1B - 7B2C 7B26 7B19 7B1E 7B2E 7C92 7C97 7C95 - 7D46 7D43 7D71 7D2E 7D39 7D3C 7D40 7D30 - 7D33 7D44 7D2F 7D42 7D32 7D31 7F3D 7F9E - 7F9A 7FCC 7FCE 7FD2 801C 804A 8046 812F - 8116 8123 812B 8129 8130 8124 8202 8235 - 8237 8236 8239 838E 839E 8398 8378 83A2 - 8396 83BD 83AB 8392 838A 8393 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 5D21 - srcEnd = 5D7E - mappingOffset = 0A1D - Mapping = - 8389 83A0 8377 837B 837C 8386 83A7 8655 - 5F6A 86C7 86C0 86B6 86C4 86B5 86C6 86CB - 86B1 86AF 86C9 8853 889E 8888 88AB 8892 - 8896 888D 888B 8993 898F 8A2A 8A1D 8A23 - 8A25 8A31 8A2D 8A1F 8A1B 8A22 8C49 8C5A - 8CA9 8CAC 8CAB 8CA8 8CAA 8CA7 8D67 8D66 - 8DBE 8DBA 8EDB 8EDF 9019 900D 901A 9017 - 9023 901F 901D 9010 9015 901E 9020 900F - 9022 9016 901B 9014 90E8 90ED 90FD 9157 - 91CE 91F5 91E6 91E3 91E7 91ED 91E9 9589 - 966A 9675 9673 9678 9670 9674 9676 9677 - 966C 96C0 96EA 96E9 7AE0 7ADF -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 5E21 - srcEnd = 5E7E - mappingOffset = 0A7B - Mapping = - 9802 9803 9B5A 9CE5 9E75 9E7F 9EA5 9EBB - 50A2 508D 5085 5099 5091 5080 5096 5098 - 509A 6700 51F1 5272 5274 5275 5269 52DE - 52DD 52DB 535A 53A5 557B 5580 55A7 557C - 558A 559D 5598 5582 559C 55AA 5594 5587 - 558B 5583 55B3 55AE 559F 553E 55B2 559A - 55BB 55AC 55B1 557E 5589 55AB 5599 570D - 582F 582A 5834 5824 5830 5831 5821 581D - 5820 58F9 58FA 5960 5A77 5A9A 5A7F 5A92 - 5A9B 5AA7 5B73 5B71 5BD2 5BCC 5BD3 5BD0 - 5C0A 5C0B 5C31 5D4C 5D50 5D34 5D47 5DFD - 5E45 5E3D 5E40 5E43 5E7E 5ECA -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 5F21 - srcEnd = 5F7E - mappingOffset = 0AD9 - Mapping = - 5EC1 5EC2 5EC4 5F3C 5F6D 5FA9 5FAA 5FA8 - 60D1 60E1 60B2 60B6 60E0 611C 6123 60FA - 6115 60F0 60FB 60F4 6168 60F1 610E 60F6 - 6109 6100 6112 621F 6249 63A3 638C 63CF - 63C0 63E9 63C9 63C6 63CD 63D2 63E3 63D0 - 63E1 63D6 63ED 63EE 6376 63F4 63EA 63DB - 6452 63DA 63F9 655E 6566 6562 6563 6591 - 6590 65AF 666E 6670 6674 6676 666F 6691 - 667A 667E 6677 66FE 66FF 671F 671D 68FA - 68D5 68E0 68D8 68D7 6905 68DF 68F5 68EE - 68E7 68F9 68D2 68F2 68E3 68CB 68CD 690D - 6912 690E 68C9 68DA 696E 68FB -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 6021 - srcEnd = 607E - mappingOffset = 0B37 - Mapping = - 6B3E 6B3A 6B3D 6B98 6B96 6BBC 6BEF 6C2E - 6C2F 6C2C 6E2F 6E38 6E54 6E21 6E32 6E67 - 6E4A 6E20 6E25 6E23 6E1B 6E5B 6E58 6E24 - 6E56 6E6E 6E2D 6E26 6E6F 6E34 6E4D 6E3A - 6E2C 6E43 6E1D 6E3E 6ECB 6E89 6E19 6E4E - 6E63 6E44 6E72 6E69 6E5F 7119 711A 7126 - 7130 7121 7136 716E 711C 724C 7284 7280 - 7336 7325 7334 7329 743A 742A 7433 7422 - 7425 7435 7436 7434 742F 741B 7426 7428 - 7525 7526 756B 756A 75E2 75DB 75E3 75D9 - 75D8 75DE 75E0 767B 767C 7696 7693 76B4 - 76DC 774F 77ED 785D 786C 786F -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 6121 - srcEnd = 617E - mappingOffset = 0B95 - Mapping = - 7A0D 7A08 7A0B 7A05 7A00 7A98 7A97 7A96 - 7AE5 7AE3 7B49 7B56 7B46 7B50 7B52 7B54 - 7B4D 7B4B 7B4F 7B51 7C9F 7CA5 7D5E 7D50 - 7D68 7D55 7D2B 7D6E 7D72 7D61 7D66 7D62 - 7D70 7D73 5584 7FD4 7FD5 800B 8052 8085 - 8155 8154 814B 8151 814E 8139 8146 813E - 814C 8153 8174 8212 821C 83E9 8403 83F8 - 840D 83E0 83C5 840B 83C1 83EF 83F1 83F4 - 8457 840A 83F0 840C 83CC 83FD 83F2 83CA - 8438 840E 8404 83DC 8407 83D4 83DF 865B - 86DF 86D9 86ED 86D4 86DB 86E4 86D0 86DE - 8857 88C1 88C2 88B1 8983 8996 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 6221 - srcEnd = 627E - mappingOffset = 0BF3 - Mapping = - 8A3B 8A60 8A55 8A5E 8A3C 8A41 8A54 8A5B - 8A50 8A46 8A34 8A3A 8A36 8A56 8C61 8C82 - 8CAF 8CBC 8CB3 8CBD 8CC1 8CBB 8CC0 8CB4 - 8CB7 8CB6 8CBF 8CB8 8D8A 8D85 8D81 8DCE - 8DDD 8DCB 8DDA 8DD1 8DCC 8DDB 8DC6 8EFB - 8EF8 8EFC 8F9C 902E 9035 9031 9038 9032 - 9036 9102 90F5 9109 90FE 9163 9165 91CF - 9214 9215 9223 9209 921E 920D 9210 9207 - 9211 9594 958F 958B 9591 9593 9592 958E - 968A 968E 968B 967D 9685 9686 968D 9672 - 9684 96C1 96C5 96C4 96C6 96C7 96EF 96F2 - 97CC 9805 9806 9808 98E7 98EA -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 6321 - srcEnd = 637E - mappingOffset = 0C51 - Mapping = - 98EF 98E9 98F2 98ED 99AE 99AD 9EC3 9ECD - 9ED1 4E82 50AD 50B5 50B2 50B3 50C5 50BE - 50AC 50B7 50BB 50AF 50C7 527F 5277 527D - 52DF 52E6 52E4 52E2 52E3 532F 55DF 55E8 - 55D3 55E6 55CE 55DC 55C7 55D1 55E3 55E4 - 55EF 55DA 55E1 55C5 55C6 55E5 55C9 5712 - 5713 585E 5851 5858 5857 585A 5854 586B - 584C 586D 584A 5862 5852 584B 5967 5AC1 - 5AC9 5ACC 5ABE 5ABD 5ABC 5AB3 5AC2 5AB2 - 5D69 5D6F 5E4C 5E79 5EC9 5EC8 5F12 5F59 - 5FAC 5FAE 611A 610F 6148 611F 60F3 611B - 60F9 6101 6108 614E 614C 6144 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 6421 - srcEnd = 647E - mappingOffset = 0CAF - Mapping = - 614D 613E 6134 6127 610D 6106 6137 6221 - 6222 6413 643E 641E 642A 642D 643D 642C - 640F 641C 6414 640D 6436 6416 6417 6406 - 656C 659F 65B0 6697 6689 6687 6688 6696 - 6684 6698 668D 6703 6994 696D 695A 6977 - 6960 6954 6975 6930 6982 694A 6968 696B - 695E 6953 6979 6986 695D 6963 695B 6B47 - 6B72 6BC0 6BBF 6BD3 6BFD 6EA2 6EAF 6ED3 - 6EB6 6EC2 6E90 6E9D 6EC7 6EC5 6EA5 6E98 - 6EBC 6EBA 6EAB 6ED1 6E96 6E9C 6EC4 6ED4 - 6EAA 6EA7 6EB4 714E 7159 7169 7164 7149 - 7167 715C 716C 7166 714C 7165 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 6521 - srcEnd = 657E - mappingOffset = 0D0D - Mapping = - 715E 7146 7168 7156 723A 7252 7337 7345 - 733F 733E 746F 745A 7455 745F 745E 7441 - 743F 7459 745B 745C 7576 7578 7600 75F0 - 7601 75F2 75F1 75FA 75FF 75F4 75F3 76DE - 76DF 775B 776B 7766 775E 7763 7779 776A - 776C 775C 7765 7768 7762 77EE 788E 78B0 - 7897 7898 788C 7889 787C 7891 7893 787F - 797A 797F 7981 842C 79BD 7A1C 7A1A 7A20 - 7A14 7A1F 7A1E 7A9F 7AA0 7B77 7BC0 7B60 - 7B6E 7B67 7CB1 7CB3 7CB5 7D93 7D79 7D91 - 7D81 7D8F 7D5B 7F6E 7F69 7F6A 7F72 7FA9 - 7FA8 7FA4 8056 8058 8086 8084 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 6621 - srcEnd = 667E - mappingOffset = 0D6B - Mapping = - 8171 8170 8178 8165 816E 8173 816B 8179 - 817A 8166 8205 8247 8482 8477 843D 8431 - 8475 8466 846B 8449 846C 845B 843C 8435 - 8461 8463 8469 846D 8446 865E 865C 865F - 86F9 8713 8708 8707 8700 86FE 86FB 8702 - 8703 8706 870A 8859 88DF 88D4 88D9 88DC - 88D8 88DD 88E1 88CA 88D5 88D2 899C 89E3 - 8A6B 8A72 8A73 8A66 8A69 8A70 8A87 8A7C - 8A63 8AA0 8A71 8A85 8A6D 8A62 8A6E 8A6C - 8A79 8A7B 8A3E 8A68 8C62 8C8A 8C89 8CCA - 8CC7 8CC8 8CC4 8CB2 8CC3 8CC2 8CC5 8DE1 - 8DDF 8DE8 8DEF 8DF3 8DFA 8DEA -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 6721 - srcEnd = 677E - mappingOffset = 0DC9 - Mapping = - 8DE4 8DE6 8EB2 8F03 8F09 8EFE 8F0A 8F9F - 8FB2 904B 904A 9053 9042 9054 903C 9055 - 9050 9047 904F 904E 904D 9051 903E 9041 - 9112 9117 916C 916A 9169 91C9 9237 9257 - 9238 923D 9240 923E 925B 924B 9264 9251 - 9234 9249 924D 9245 9239 923F 925A 9598 - 9698 9694 9695 96CD 96CB 96C9 96CA 96F7 - 96FB 96F9 96F6 9756 9774 9776 9810 9811 - 9813 980A 9812 980C 98FC 98F4 98FD 98FE - 99B3 99B1 99B4 9AE1 9CE9 9E82 9F0E 9F13 - 9F20 50E7 50EE 50E5 50D6 50ED 50DA 50D5 - 50CF 50D1 50F1 50CE 50E9 5162 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 6821 - srcEnd = 687E - mappingOffset = 0E27 - Mapping = - 51F3 5283 5282 5331 53AD 55FE 5600 561B - 5617 55FD 5614 5606 5609 560D 560E 55F7 - 5616 561F 5608 5610 55F6 5718 5716 5875 - 587E 5883 5893 588A 5879 5885 587D 58FD - 5925 5922 5924 596A 5969 5AE1 5AE6 5AE9 - 5AD7 5AD6 5AD8 5AE3 5B75 5BDE 5BE7 5BE1 - 5BE5 5BE6 5BE8 5BE2 5BE4 5BDF 5C0D 5C62 - 5D84 5D87 5E5B 5E63 5E55 5E57 5E54 5ED3 - 5ED6 5F0A 5F46 5F70 5FB9 6147 613F 614B - 6177 6162 6163 615F 615A 6158 6175 622A - 6487 6458 6454 64A4 6478 645F 647A 6451 - 6467 6434 646D 647B 6572 65A1 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 6921 - srcEnd = 697E - mappingOffset = 0E85 - Mapping = - 65D7 65D6 66A2 66A8 669D 699C 69A8 6995 - 69C1 69AE 69D3 69CB 699B 69B7 69BB 69AB - 69B4 69D0 69CD 69AD 69CC 69A6 69C3 69A3 - 6B49 6B4C 6C33 6F33 6F14 6EFE 6F13 6EF4 - 6F29 6F3E 6F20 6F2C 6F0F 6F02 6F22 6EFF - 6EEF 6F06 6F31 6F38 6F32 6F23 6F15 6F2B - 6F2F 6F88 6F2A 6EEC 6F01 6EF2 6ECC 6EF7 - 7194 7199 717D 718A 7184 7192 723E 7292 - 7296 7344 7350 7464 7463 746A 7470 746D - 7504 7591 7627 760D 760B 7609 7613 76E1 - 76E3 7784 777D 777F 7761 78C1 789F 78A7 - 78B3 78A9 78A3 798E 798F 798D -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 6A21 - srcEnd = 6A7E - mappingOffset = 0EE3 - Mapping = - 7A2E 7A31 7AAA 7AA9 7AED 7AEF 7BA1 7B95 - 7B8B 7B75 7B97 7B9D 7B94 7B8F 7BB8 7B87 - 7B84 7CB9 7CBD 7CBE 7DBB 7DB0 7D9C 7DBD - 7DBE 7DA0 7DCA 7DB4 7DB2 7DB1 7DBA 7DA2 - 7DBF 7DB5 7DB8 7DAD 7DD2 7DC7 7DAC 7F70 - 7FE0 7FE1 7FDF 805E 805A 8087 8150 8180 - 818F 8188 818A 817F 8182 81E7 81FA 8207 - 8214 821E 824B 84C9 84BF 84C6 84C4 8499 - 849E 84B2 849C 84CB 84B8 84C0 84D3 8490 - 84BC 84D1 84CA 873F 871C 873B 8722 8725 - 8734 8718 8755 8737 8729 88F3 8902 88F4 - 88F9 88F8 88FD 88E8 891A 88EF -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 6B21 - srcEnd = 6B7E - mappingOffset = 0F41 - Mapping = - 8AA6 8A8C 8A9E 8AA3 8A8D 8AA1 8A93 8AA4 - 8AAA 8AA5 8AA8 8A98 8A91 8A9A 8AA7 8C6A - 8C8D 8C8C 8CD3 8CD1 8CD2 8D6B 8D99 8D95 - 8DFC 8F14 8F12 8F15 8F13 8FA3 9060 9058 - 905C 9063 9059 905E 9062 905D 905B 9119 - 9118 911E 9175 9178 9177 9174 9278 92AC - 9280 9285 9298 9296 927B 9293 929C 92A8 - 927C 9291 95A1 95A8 95A9 95A3 95A5 95A4 - 9699 969C 969B 96CC 96D2 9700 977C 9785 - 97F6 9817 9818 98AF 98B1 9903 9905 990C - 9909 99C1 9AAF 9AB0 9AE6 9B41 9B42 9CF4 - 9CF6 9CF3 9EBC 9F3B 9F4A 5104 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 6C21 - srcEnd = 6C7E - mappingOffset = 0F9F - Mapping = - 5100 50FB 50F5 50F9 5102 5108 5109 5105 - 51DC 5287 5288 5289 528D 528A 52F0 53B2 - 562E 563B 5639 5632 563F 5634 5629 5653 - 564E 5657 5674 5636 562F 5630 5880 589F - 589E 58B3 589C 58AE 58A9 58A6 596D 5B09 - 5AFB 5B0B 5AF5 5B0C 5B08 5BEE 5BEC 5BE9 - 5BEB 5C64 5C65 5D9D 5D94 5E62 5E5F 5E61 - 5EE2 5EDA 5EDF 5EDD 5EE3 5EE0 5F48 5F71 - 5FB7 5FB5 6176 6167 616E 615D 6155 6182 - 617C 6170 616B 617E 61A7 6190 61AB 618E - 61AC 619A 61A4 6194 61AE 622E 6469 646F - 6479 649E 64B2 6488 6490 64B0 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 6D21 - srcEnd = 6D7E - mappingOffset = 0FFD - Mapping = - 64A5 6493 6495 64A9 6492 64AE 64AD 64AB - 649A 64AC 6499 64A2 64B3 6575 6577 6578 - 66AE 66AB 66B4 66B1 6A23 6A1F 69E8 6A01 - 6A1E 6A19 69FD 6A21 6A13 6A0A 69F3 6A02 - 6A05 69ED 6A11 6B50 6B4E 6BA4 6BC5 6BC6 - 6F3F 6F7C 6F84 6F51 6F66 6F54 6F86 6F6D - 6F5B 6F78 6F6E 6F8E 6F7A 6F70 6F64 6F97 - 6F58 6ED5 6F6F 6F60 6F5F 719F 71AC 71B1 - 71A8 7256 729B 734E 7357 7469 748B 7483 - 747E 7480 757F 7620 7629 761F 7624 7626 - 7621 7622 769A 76BA 76E4 778E 7787 778C - 7791 778B 78CB 78C5 78BA 78CA -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 6E21 - srcEnd = 6E7E - mappingOffset = 105B - Mapping = - 78BE 78D5 78BC 78D0 7A3F 7A3C 7A40 7A3D - 7A37 7A3B 7AAF 7AAE 7BAD 7BB1 7BC4 7BB4 - 7BC6 7BC7 7BC1 7BA0 7BCC 7CCA 7DE0 7DF4 - 7DEF 7DFB 7DD8 7DEC 7DDD 7DE8 7DE3 7DDA - 7DDE 7DE9 7D9E 7DD9 7DF2 7DF9 7F75 7F77 - 7FAF 7FE9 8026 819B 819C 819D 81A0 819A - 8198 8517 853D 851A 84EE 852C 852D 8513 - 8511 8523 8521 8514 84EC 8525 84FF 8506 - 8782 8774 8776 8760 8766 8778 8768 8759 - 8757 874C 8753 885B 885D 8910 8907 8912 - 8913 8915 890A 8ABC 8AD2 8AC7 8AC4 8A95 - 8ACB 8AF8 8AB2 8AC9 8AC2 8ABF -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 6F21 - srcEnd = 6F7E - mappingOffset = 10B9 - Mapping = - 8AB0 8AD6 8ACD 8AB6 8AB9 8ADB 8C4C 8C4E - 8C6C 8CE0 8CDE 8CE6 8CE4 8CEC 8CED 8CE2 - 8CE3 8CDC 8CEA 8CE1 8D6D 8D9F 8DA3 8E2B - 8E10 8E1D 8E22 8E0F 8E29 8E1F 8E21 8E1E - 8EBA 8F1D 8F1B 8F1F 8F29 8F26 8F2A 8F1C - 8F1E 8F25 9069 906E 9068 906D 9077 9130 - 912D 9127 9131 9187 9189 918B 9183 92C5 - 92BB 92B7 92EA 92E4 92C1 92B3 92BC 92D2 - 92C7 92F0 92B2 95AD 95B1 9704 9706 9707 - 9709 9760 978D 978B 978F 9821 982B 981C - 98B3 990A 9913 9912 9918 99DD 99D0 99DF - 99DB 99D1 99D5 99D2 99D9 9AB7 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 7021 - srcEnd = 707E - mappingOffset = 1117 - Mapping = - 9AEE 9AEF 9B27 9B45 9B44 9B77 9B6F 9D06 - 9D09 9D03 9EA9 9EBE 9ECE 58A8 9F52 5112 - 5118 5114 5110 5115 5180 51AA 51DD 5291 - 5293 52F3 5659 566B 5679 5669 5664 5678 - 566A 5668 5665 5671 566F 566C 5662 5676 - 58C1 58BE 58C7 58C5 596E 5B1D 5B34 5B78 - 5BF0 5C0E 5F4A 61B2 6191 61A9 618A 61CD - 61B6 61BE 61CA 61C8 6230 64C5 64C1 64CB - 64BB 64BC 64DA 64C4 64C7 64C2 64CD 64BF - 64D2 64D4 64BE 6574 66C6 66C9 66B9 66C4 - 66C7 66B8 6A3D 6A38 6A3A 6A59 6A6B 6A58 - 6A39 6A44 6A62 6A61 6A4B 6A47 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 7121 - srcEnd = 717E - mappingOffset = 1175 - Mapping = - 6A35 6A5F 6A48 6B59 6B77 6C05 6FC2 6FB1 - 6FA1 6FC3 6FA4 6FC1 6FA7 6FB3 6FC0 6FB9 - 6FB6 6FA6 6FA0 6FB4 71BE 71C9 71D0 71D2 - 71C8 71D5 71B9 71CE 71D9 71DC 71C3 71C4 - 7368 749C 74A3 7498 749F 749E 74E2 750C - 750D 7634 7638 763A 76E7 76E5 77A0 779E - 779F 77A5 78E8 78DA 78EC 78E7 79A6 7A4D - 7A4E 7A46 7A4C 7A4B 7ABA 7BD9 7C11 7BC9 - 7BE4 7BDB 7BE1 7BE9 7BE6 7CD5 7CD6 7E0A - 7E11 7E08 7E1B 7E23 7E1E 7E1D 7E09 7E10 - 7F79 7FB2 7FF0 7FF1 7FEE 8028 81B3 81A9 - 81A8 81FB 8208 8258 8259 854A -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 7221 - srcEnd = 727E - mappingOffset = 11D3 - Mapping = - 8559 8548 8568 8569 8543 8549 856D 856A - 855E 8783 879F 879E 87A2 878D 8861 892A - 8932 8925 892B 8921 89AA 89A6 8AE6 8AFA - 8AEB 8AF1 8B00 8ADC 8AE7 8AEE 8AFE 8B01 - 8B02 8AF7 8AED 8AF3 8AF6 8AFC 8C6B 8C6D - 8C93 8CF4 8E44 8E31 8E34 8E42 8E39 8E35 - 8F3B 8F2F 8F38 8F33 8FA8 8FA6 9075 9074 - 9078 9072 907C 907A 9134 9192 9320 9336 - 92F8 9333 932F 9322 92FC 932B 9304 931A - 9310 9326 9321 9315 932E 9319 95BB 96A7 - 96A8 96AA 96D5 970E 9711 9716 970D 9713 - 970F 975B 975C 9766 9798 9830 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 7321 - srcEnd = 737E - mappingOffset = 1231 - Mapping = - 9838 983B 9837 982D 9839 9824 9910 9928 - 991E 991B 9921 991A 99ED 99E2 99F1 9AB8 - 9ABC 9AFB 9AED 9B28 9B91 9D15 9D23 9D26 - 9D28 9D12 9D1B 9ED8 9ED4 9F8D 9F9C 512A - 511F 5121 5132 52F5 568E 5680 5690 5685 - 5687 568F 58D5 58D3 58D1 58CE 5B30 5B2A - 5B24 5B7A 5C37 5C68 5DBC 5DBA 5DBD 5DB8 - 5E6B 5F4C 5FBD 61C9 61C2 61C7 61E6 61CB - 6232 6234 64CE 64CA 64D8 64E0 64F0 64E6 - 64EC 64F1 64E2 64ED 6582 6583 66D9 66D6 - 6A80 6A94 6A84 6AA2 6A9C 6ADB 6AA3 6A7E - 6A97 6A90 6AA0 6B5C 6BAE 6BDA -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 7421 - srcEnd = 747E - mappingOffset = 128F - Mapping = - 6C08 6FD8 6FF1 6FDF 6FE0 6FDB 6FE4 6FEB - 6FEF 6F80 6FEC 6FE1 6FE9 6FD5 6FEE 6FF0 - 71E7 71DF 71EE 71E6 71E5 71ED 71EC 71F4 - 71E0 7235 7246 7370 7372 74A9 74B0 74A6 - 74A8 7646 7642 764C 76EA 77B3 77AA 77B0 - 77AC 77A7 77AD 77EF 78F7 78FA 78F4 78EF - 7901 79A7 79AA 7A57 7ABF 7C07 7C0D 7BFE - 7BF7 7C0C 7BE0 7CE0 7CDC 7CDE 7CE2 7CDF - 7CD9 7CDD 7E2E 7E3E 7E46 7E37 7E32 7E43 - 7E2B 7E3D 7E31 7E45 7E41 7E34 7E39 7E48 - 7E35 7E3F 7E2F 7F44 7FF3 7FFC 8071 8072 - 8070 806F 8073 81C6 81C3 81BA -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 7521 - srcEnd = 757E - mappingOffset = 12ED - Mapping = - 81C2 81C0 81BF 81BD 81C9 81BE 81E8 8209 - 8271 85AA 8584 857E 859C 8591 8594 85AF - 859B 8587 85A8 858A 85A6 8667 87C0 87D1 - 87B3 87D2 87C6 87AB 87BB 87BA 87C8 87CB - 893B 8936 8944 8938 893D 89AC 8B0E 8B17 - 8B19 8B1B 8B0A 8B20 8B1D 8B04 8B10 8C41 - 8C3F 8C73 8CFA 8CFD 8CFC 8CF8 8CFB 8DA8 - 8E49 8E4B 8E48 8E4A 8F44 8F3E 8F42 8F45 - 8F3F 907F 907D 9084 9081 9082 9080 9139 - 91A3 919E 919C 934D 9382 9328 9375 934A - 9365 934B 9318 937E 936C 935B 9370 935A - 9354 95CA 95CB 95CC 95C8 95C6 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 7621 - srcEnd = 767E - mappingOffset = 134B - Mapping = - 96B1 96B8 96D6 971C 971E 97A0 97D3 9846 - 98B6 9935 9A01 99FF 9BAE 9BAB 9BAA 9BAD - 9D3B 9D3F 9E8B 9ECF 9EDE 9EDC 9EDD 9EDB - 9F3E 9F4B 53E2 5695 56AE 58D9 58D8 5B38 - 5F5E 61E3 6233 64F4 64F2 64FE 6506 64FA - 64FB 64F7 65B7 66DC 6726 6AB3 6AAC 6AC3 - 6ABB 6AB8 6AC2 6AAE 6AAF 6B5F 6B78 6BAF - 7009 700B 6FFE 7006 6FFA 7011 700F 71FB - 71FC 71FE 71F8 7377 7375 74A7 74BF 7515 - 7656 7658 7652 77BD 77BF 77BB 77BC 790E - 79AE 7A61 7A62 7A60 7AC4 7AC5 7C2B 7C27 - 7C2A 7C1E 7C23 7C21 7CE7 7E54 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 7721 - srcEnd = 777E - mappingOffset = 13A9 - Mapping = - 7E55 7E5E 7E5A 7E61 7E52 7E59 7F48 7FF9 - 7FFB 8077 8076 81CD 81CF 820A 85CF 85A9 - 85CD 85D0 85C9 85B0 85BA 85B9 87EF 87EC - 87F2 87E0 8986 89B2 89F4 8B28 8B39 8B2C - 8B2B 8C50 8D05 8E59 8E63 8E66 8E64 8E5F - 8E55 8EC0 8F49 8F4D 9087 9083 9088 91AB - 91AC 91D0 9394 938A 9396 93A2 93B3 93AE - 93AC 93B0 9398 939A 9397 95D4 95D6 95D0 - 95D5 96E2 96DC 96D9 96DB 96DE 9724 97A3 - 97A6 97AD 97F9 984D 984F 984C 984E 9853 - 98BA 993E 993F 993D 992E 99A5 9A0E 9AC1 - 9B03 9B06 9B4F 9B4E 9B4D 9BCA -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 7821 - srcEnd = 787E - mappingOffset = 1407 - Mapping = - 9BC9 9BFD 9BC8 9BC0 9D51 9D5D 9D60 9EE0 - 9F15 9F2C 5133 56A5 56A8 58DE 58DF 58E2 - 5BF5 9F90 5EEC 61F2 61F7 61F6 61F5 6500 - 650F 66E0 66DD 6AE5 6ADD 6ADA 6AD3 701B - 701F 7028 701A 701D 7015 7018 7206 720D - 7258 72A2 7378 737A 74BD 74CA 74E3 7587 - 7586 765F 7661 77C7 7919 79B1 7A6B 7A69 - 7C3E 7C3F 7C38 7C3D 7C37 7C40 7E6B 7E6D - 7E79 7E69 7E6A 7E73 7F85 7FB6 7FB9 7FB8 - 81D8 85E9 85DD 85EA 85D5 85E4 85E5 85F7 - 87FB 8805 880D 87F9 87FE 8960 895F 8956 - 895E 8B41 8B5C 8B58 8B49 8B5A -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 7921 - srcEnd = 797E - mappingOffset = 1465 - Mapping = - 8B4E 8B4F 8B46 8B59 8D08 8D0A 8E7C 8E72 - 8E87 8E76 8E6C 8E7A 8E74 8F54 8F4E 8FAD - 908A 908B 91B1 91AE 93E1 93D1 93DF 93C3 - 93C8 93DC 93DD 93D6 93E2 93CD 93D8 93E4 - 93D7 93E8 95DC 96B4 96E3 972A 9727 9761 - 97DC 97FB 985E 9858 985B 98BC 9945 9949 - 9A16 9A19 9B0D 9BE8 9BE7 9BD6 9BDB 9D89 - 9D61 9D72 9D6A 9D6C 9E92 9E97 9E93 9EB4 - 52F8 56B7 56B6 56B4 56BC 58E4 5B40 5B43 - 5B7D 5BF6 5DC9 61F8 61FA 6518 6514 6519 - 66E6 6727 6AEC 703E 7030 7032 7210 737B - 74CF 7662 7665 7926 792A 792C -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 7A21 - srcEnd = 7A7E - mappingOffset = 14C3 - Mapping = - 792B 7AC7 7AF6 7C4C 7C43 7C4D 7CEF 7CF0 - 8FAE 7E7D 7E7C 7E82 7F4C 8000 81DA 8266 - 85FB 85F9 8611 85FA 8606 860B 8607 860A - 8814 8815 8964 89BA 89F8 8B70 8B6C 8B66 - 8B6F 8B5F 8B6B 8D0F 8D0D 8E89 8E81 8E85 - 8E82 91B4 91CB 9418 9403 93FD 95E1 9730 - 98C4 9952 9951 99A8 9A2B 9A30 9A37 9A35 - 9C13 9C0D 9E79 9EB5 9EE8 9F2F 9F5F 9F63 - 9F61 5137 5138 56C1 56C0 56C2 5914 5C6C - 5DCD 61FC 61FE 651D 651C 6595 66E9 6AFB - 6B04 6AFA 6BB2 704C 721B 72A7 74D6 74D4 - 7669 77D3 7C50 7E8F 7E8C 7FBC -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 7B21 - srcEnd = 7B7E - mappingOffset = 1521 - Mapping = - 8617 862D 861A 8823 8822 8821 881F 896A - 896C 89BD 8B74 8B77 8B7D 8D13 8E8A 8E8D - 8E8B 8F5F 8FAF 91BA 942E 9433 9435 943A - 9438 9432 942B 95E2 9738 9739 9732 97FF - 9867 9865 9957 9A45 9A43 9A40 9A3E 9ACF - 9B54 9B51 9C2D 9C25 9DAF 9DB4 9DC2 9DB8 - 9E9D 9EEF 9F19 9F5C 9F66 9F67 513C 513B - 56C8 56CA 56C9 5B7F 5DD4 5DD2 5F4E 61FF - 6524 6B0A 6B61 7051 7058 7380 74E4 758A - 766E 766C 79B3 7C60 7C5F 807E 807D 81DF - 8972 896F 89FC 8B80 8D16 8D17 8E91 8E93 - 8F61 9148 9444 9451 9452 973D -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 7C21 - srcEnd = 7C7E - mappingOffset = 157F - Mapping = - 973E 97C3 97C1 986B 9955 9A55 9A4D 9AD2 - 9B1A 9C49 9C31 9C3E 9C3B 9DD3 9DD7 9F34 - 9F6C 9F6A 9F94 56CC 5DD6 6200 6523 652B - 652A 66EC 6B10 74DA 7ACA 7C64 7C63 7C65 - 7E93 7E96 7E94 81E2 8638 863F 8831 8B8A - 9090 908F 9463 9460 9464 9768 986F 995C - 9A5A 9A5B 9A57 9AD3 9AD4 9AD1 9C54 9C57 - 9C56 9DE5 9E9F 9EF4 56D1 58E9 652C 705E - 7671 7672 77D7 7F50 7F88 8836 8839 8862 - 8B93 8B92 8B96 8277 8D1B 91C0 946A 9742 - 9748 9744 97C6 9870 9A5F 9B22 9B58 9C5F - 9DF9 9DFA 9E7C 9E7D 9F07 9F77 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 7D21 - srcEnd = 7D4B - mappingOffset = 15DD - Mapping = - 9F72 5EF3 6B16 7063 7C6C 7C6E 883B 89C0 - 8EA1 91C1 9472 9470 9871 995E 9AD6 9B23 - 9ECC 7064 77DA 8B9A 9477 97C9 9A62 9A65 - 7E9C 8B9C 8EAA 91C5 947D 947E 947C 9C77 - 9C78 9EF7 8C54 947F 9E1A 7228 9A6A 9B31 - 9E1B 9E1E 7C72 -End of Item 0050 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0051, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0019, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x010C, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0011 */ -/* Total of Format 1 : 0x003E */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x1110, 0x1212, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0019 Start of MapCell Array */ -/* 0000 */ 0x215E, 0x2163, 0xFE59, -/* 0001 */ 0x2324, 0x232B, 0x2581, -/* 0002 */ 0x2421, 0x242A, 0xFF10, -/* 0003 */ 0x242B, 0x2434, 0x2160, -/* 0004 */ 0x2435, 0x243D, 0x3021, -/* 0005 */ 0x2441, 0x245A, 0xFF21, -/* 0006 */ 0x245B, 0x2474, 0xFF41, -/* 0007 */ 0x2475, 0x247E, 0x0391, -/* 0008 */ 0x2521, 0x2527, 0x039B, -/* 0009 */ 0x2528, 0x252E, 0x03A3, -/* 000A */ 0x252F, 0x253F, 0x03B1, -/* 000B */ 0x2540, 0x2546, 0x03C3, -/* 000C */ 0x2547, 0x256B, 0x3105, -/* 000D */ 0x2621, 0x262A, 0x2460, -/* 000E */ 0x262B, 0x2634, 0x2474, -/* 000F */ 0x2635, 0x263E, 0x2170, -/* 0010 */ 0x4221, 0x4240, 0x2400, -/* 0011 */ 0x2121, 0x217E, 0x0000, -/* 0012 */ 0x2221, 0x227E, 0x005E, -/* 0013 */ 0x2321, 0x234E, 0x00BC, -/* 0014 */ 0x243F, 0x0000, 0x5344, -/* 0015 */ 0x256C, 0x2570, 0x00EA, -/* 0016 */ 0x4241, 0x0000, 0x2421, -/* 0017 */ 0x4421, 0x447E, 0x00EF, -/* 0018 */ 0x4521, 0x457E, 0x014D, -/* 0019 */ 0x4621, 0x467E, 0x01AB, -/* 001A */ 0x4721, 0x477E, 0x0209, -/* 001B */ 0x4821, 0x487E, 0x0267, -/* 001C */ 0x4921, 0x497E, 0x02C5, -/* 001D */ 0x4A21, 0x4A7E, 0x0323, -/* 001E */ 0x4B21, 0x4B7E, 0x0381, -/* 001F */ 0x4C21, 0x4C7E, 0x03DF, -/* 0020 */ 0x4D21, 0x4D7E, 0x043D, -/* 0021 */ 0x4E21, 0x4E7E, 0x049B, -/* 0022 */ 0x4F21, 0x4F7E, 0x04F9, -/* 0023 */ 0x5021, 0x507E, 0x0557, -/* 0024 */ 0x5121, 0x517E, 0x05B5, -/* 0025 */ 0x5221, 0x527E, 0x0613, -/* 0026 */ 0x5321, 0x537E, 0x0671, -/* 0027 */ 0x5421, 0x547E, 0x06CF, -/* 0028 */ 0x5521, 0x557E, 0x072D, -/* 0029 */ 0x5621, 0x567E, 0x078B, -/* 002A */ 0x5721, 0x577E, 0x07E9, -/* 002B */ 0x5821, 0x587E, 0x0847, -/* 002C */ 0x5921, 0x597E, 0x08A5, -/* 002D */ 0x5A21, 0x5A7E, 0x0903, -/* 002E */ 0x5B21, 0x5B7E, 0x0961, -/* 002F */ 0x5C21, 0x5C7E, 0x09BF, -/* 0030 */ 0x5D21, 0x5D7E, 0x0A1D, -/* 0031 */ 0x5E21, 0x5E7E, 0x0A7B, -/* 0032 */ 0x5F21, 0x5F7E, 0x0AD9, -/* 0033 */ 0x6021, 0x607E, 0x0B37, -/* 0034 */ 0x6121, 0x617E, 0x0B95, -/* 0035 */ 0x6221, 0x627E, 0x0BF3, -/* 0036 */ 0x6321, 0x637E, 0x0C51, -/* 0037 */ 0x6421, 0x647E, 0x0CAF, -/* 0038 */ 0x6521, 0x657E, 0x0D0D, -/* 0039 */ 0x6621, 0x667E, 0x0D6B, -/* 003A */ 0x6721, 0x677E, 0x0DC9, -/* 003B */ 0x6821, 0x687E, 0x0E27, -/* 003C */ 0x6921, 0x697E, 0x0E85, -/* 003D */ 0x6A21, 0x6A7E, 0x0EE3, -/* 003E */ 0x6B21, 0x6B7E, 0x0F41, -/* 003F */ 0x6C21, 0x6C7E, 0x0F9F, -/* 0040 */ 0x6D21, 0x6D7E, 0x0FFD, -/* 0041 */ 0x6E21, 0x6E7E, 0x105B, -/* 0042 */ 0x6F21, 0x6F7E, 0x10B9, -/* 0043 */ 0x7021, 0x707E, 0x1117, -/* 0044 */ 0x7121, 0x717E, 0x1175, -/* 0045 */ 0x7221, 0x727E, 0x11D3, -/* 0046 */ 0x7321, 0x737E, 0x1231, -/* 0047 */ 0x7421, 0x747E, 0x128F, -/* 0048 */ 0x7521, 0x757E, 0x12ED, -/* 0049 */ 0x7621, 0x767E, 0x134B, -/* 004A */ 0x7721, 0x777E, 0x13A9, -/* 004B */ 0x7821, 0x787E, 0x1407, -/* 004C */ 0x7921, 0x797E, 0x1465, -/* 004D */ 0x7A21, 0x7A7E, 0x14C3, -/* 004E */ 0x7B21, 0x7B7E, 0x1521, -/* 004F */ 0x7C21, 0x7C7E, 0x157F, -/* 0050 */ 0x7D21, 0x7D4B, 0x15DD, -/*-------------------------------------------------------*/ -/* Offset=0x010C Start of MappingTable */ - -/* 0000 */ 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x30FB, 0xFF1B, 0xFF1A, -/* 0008 */ 0xFF1F, 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFE51, 0xFE52, -/* 0010 */ 0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE31, 0x2014, 0xFE32, -/* 0018 */ 0x2013, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFF08, 0xFF09, 0xFE35, -/* 0020 */ 0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39, -/* 0028 */ 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D, -/* 0030 */ 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, 0x300D, 0xFE41, -/* 0038 */ 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x301D, -/* 0048 */ 0x301E, 0x2032, 0x2035, 0xFF03, 0xFF06, 0xFF0A, 0x203B, 0x00A7, -/* 0050 */ 0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 0x2606, 0x2605, -/* 0058 */ 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC, 0x32A3, 0x2105, -/* 0060 */ 0x203E, 0xFFFD, 0xFF3F, 0xFFFD, 0xFE49, 0xFE4A, 0xFE4D, 0xFE4E, -/* 0068 */ 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B, 0xFF0D, 0x00D7, -/* 0070 */ 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D, 0x2266, 0x2267, -/* 0078 */ 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, 0xFE64, 0xFE66, -/* 0080 */ 0xFE65, 0x223C, 0x2229, 0x222A, 0x22A5, 0x2220, 0x221F, 0x22BF, -/* 0088 */ 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 0x2640, 0x2642, -/* 0090 */ 0x2641, 0x2609, 0x2191, 0x2193, 0x2192, 0x2190, 0x2196, 0x2197, -/* 0098 */ 0x2199, 0x2198, 0x2016, 0xFF5C, 0xFF0F, 0xFF3C, 0x2215, 0xFE68, -/* 00A0 */ 0xFF04, 0xFFE5, 0x3012, 0xFFE0, 0xFFE1, 0xFF05, 0xFF20, 0x2103, -/* 00A8 */ 0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5, 0x339C, 0x339D, 0x339E, -/* 00B0 */ 0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4, 0x00B0, 0x5159, 0x515B, -/* 00B8 */ 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7, 0x74E9, 0x7CCE, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x258F, -/* 00C8 */ 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, 0x2589, 0x253C, 0x2534, -/* 00D0 */ 0x252C, 0x2524, 0x251C, 0x2594, 0x2500, 0x2502, 0x2595, 0x250C, -/* 00D8 */ 0x2510, 0x2514, 0x2518, 0x256D, 0x256E, 0x2570, 0x256F, 0x2550, -/* 00E0 */ 0x255E, 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571, -/* 00E8 */ 0x2572, 0x2573, 0x02D9, 0x02C9, 0x02CA, 0x02C7, 0x02CB, 0x4E00, -/* 00F0 */ 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C, 0x4EBA, -/* 00F8 */ 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B, 0x5315, -/* 0100 */ 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A, 0x4E2B, -/* 0108 */ 0x4E38, 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E, 0x4EA1, -/* 0110 */ 0x5140, 0x5203, 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F, 0x58EB, -/* 0118 */ 0x5915, 0x5927, 0x5973, 0x5B50, 0x5B51, 0x5B53, 0x5BF8, 0x5C0F, -/* 0120 */ 0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5, 0x5DF1, 0x5DF2, 0x5DF3, -/* 0128 */ 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, 0x624D, 0x4E11, 0x4E10, -/* 0130 */ 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B, 0x5C39, 0x4E88, 0x4E91, -/* 0138 */ 0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1, 0x4EC0, 0x4EC3, 0x4EC6, -/* 0140 */ 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4, 0x5143, 0x5141, 0x5167, -/* 0148 */ 0x516D, 0x516E, 0x516C, 0x5197, 0x51F6, 0x5206, 0x5207, 0x5208, -/* 0150 */ 0x52FB, 0x52FE, 0x52FF, 0x5316, 0x5339, 0x5348, 0x5347, 0x5345, -/* 0158 */ 0x535E, 0x5384, 0x53CB, 0x53CA, 0x53CD, 0x58EC, 0x5929, 0x592B, -/* 0160 */ 0x592A, 0x592D, 0x5B54, 0x5C11, 0x5C24, 0x5C3A, 0x5C6F, 0x5DF4, -/* 0168 */ 0x5E7B, 0x5EFF, 0x5F14, 0x5F15, 0x5FC3, 0x6208, 0x6236, 0x624B, -/* 0170 */ 0x624E, 0x652F, 0x6587, 0x6597, 0x65A4, 0x65B9, 0x65E5, 0x66F0, -/* 0178 */ 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BCB, 0x6BD4, 0x6BDB, -/* 0180 */ 0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, 0x7247, 0x7259, -/* 0188 */ 0x725B, 0x72AC, 0x738B, 0x4E19, 0x4E16, 0x4E15, 0x4E14, 0x4E18, -/* 0190 */ 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, 0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, -/* 0198 */ 0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4, 0x4ED9, 0x4EDE, 0x5145, 0x5144, -/* 01A0 */ 0x5189, 0x518A, 0x51AC, 0x51F9, 0x51FA, 0x51F8, 0x520A, 0x52A0, -/* 01A8 */ 0x529F, 0x5305, 0x5306, 0x5317, 0x531D, 0x4EDF, 0x534A, 0x5349, -/* 01B0 */ 0x5361, 0x5360, 0x536F, 0x536E, 0x53BB, 0x53EF, 0x53E4, 0x53F3, -/* 01B8 */ 0x53EC, 0x53EE, 0x53E9, 0x53E8, 0x53FC, 0x53F8, 0x53F5, 0x53EB, -/* 01C0 */ 0x53E6, 0x53EA, 0x53F2, 0x53F1, 0x53F0, 0x53E5, 0x53ED, 0x53FB, -/* 01C8 */ 0x56DB, 0x56DA, 0x5916, 0x592E, 0x5931, 0x5974, 0x5976, 0x5B55, -/* 01D0 */ 0x5B83, 0x5C3C, 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73, -/* 01D8 */ 0x5E7C, 0x5F01, 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, -/* 01E0 */ 0x6252, 0x6251, 0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, -/* 01E8 */ 0x672D, 0x6B63, 0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, -/* 01F0 */ 0x6C3E, 0x72AF, 0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, -/* 01F8 */ 0x7528, 0x7529, 0x7530, 0x7531, 0x7532, 0x7533, 0x758B, 0x767D, -/* 0200 */ 0x76AE, 0x76BF, 0x76EE, 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE, -/* 0208 */ 0x7A74, 0x7ACB, 0x4E1E, 0x4E1F, 0x4E52, 0x4E53, 0x4E69, 0x4E99, -/* 0210 */ 0x4EA4, 0x4EA6, 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, 0x4F15, -/* 0218 */ 0x4F0D, 0x4F10, 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, -/* 0220 */ 0x4EF3, 0x4EFD, 0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, -/* 0228 */ 0x5168, 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, -/* 0230 */ 0x5216, 0x52A3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, -/* 0238 */ 0x540F, 0x540C, 0x540A, 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, -/* 0240 */ 0x540D, 0x5408, 0x5403, 0x540E, 0x5406, 0x5412, 0x56E0, 0x56DE, -/* 0248 */ 0x56DD, 0x5733, 0x5730, 0x5728, 0x572D, 0x572C, 0x572F, 0x5729, -/* 0250 */ 0x5919, 0x591A, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597D, -/* 0258 */ 0x5979, 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88, 0x5B85, -/* 0260 */ 0x5B89, 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74, -/* 0268 */ 0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 0x6210, -/* 0270 */ 0x6263, 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, 0x65ED, -/* 0278 */ 0x66F2, 0x66F3, 0x6709, 0x673D, 0x6734, 0x6731, 0x6735, 0x6B21, -/* 0280 */ 0x6B64, 0x6B7B, 0x6C16, 0x6C5D, 0x6C57, 0x6C59, 0x6C5F, 0x6C60, -/* 0288 */ 0x6C50, 0x6C55, 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, 0x7070, 0x725F, -/* 0290 */ 0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A, 0x7FBD, -/* 0298 */ 0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, 0x8089, 0x808B, -/* 02A0 */ 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, 0x821F, -/* 02A8 */ 0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 0x897F, -/* 02B0 */ 0x9621, 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 0x4F5E, -/* 02B8 */ 0x4F34, 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D, 0x4F3A, -/* 02C0 */ 0x4F38, 0x4F43, 0x4F54, 0x4F3C, 0x4F46, 0x4F63, 0x4F5C, 0x4F60, -/* 02C8 */ 0x4F2F, 0x4F4E, 0x4F36, 0x4F59, 0x4F5D, 0x4F48, 0x4F5A, 0x514C, -/* 02D0 */ 0x514B, 0x514D, 0x5175, 0x51B6, 0x51B7, 0x5225, 0x5224, 0x5229, -/* 02D8 */ 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, 0x52AC, 0x5323, 0x5373, -/* 02E0 */ 0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426, 0x544E, 0x5427, -/* 02E8 */ 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541B, 0x5429, 0x544A, -/* 02F0 */ 0x5439, 0x543B, 0x5438, 0x542E, 0x5435, 0x5436, 0x5420, 0x543C, -/* 02F8 */ 0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA, 0x56F0, 0x56E4, -/* 0300 */ 0x56EB, 0x574A, 0x5751, 0x5740, 0x574D, 0x5747, 0x574E, 0x573E, -/* 0308 */ 0x5750, 0x574F, 0x573B, 0x58EF, 0x593E, 0x599D, 0x5992, 0x59A8, -/* 0310 */ 0x599E, 0x59A3, 0x5999, 0x5996, 0x598D, 0x59A4, 0x5993, 0x598A, -/* 0318 */ 0x59A5, 0x5B5D, 0x5B5C, 0x5B5A, 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, -/* 0320 */ 0x5C2C, 0x5C40, 0x5C41, 0x5C3F, 0x5C3E, 0x5C90, 0x5C91, 0x5C94, -/* 0328 */ 0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F, 0x5E87, 0x5E8A, 0x5EF7, 0x5F04, -/* 0330 */ 0x5F1F, 0x5F64, 0x5F62, 0x5F77, 0x5F79, 0x5FD8, 0x5FCC, 0x5FD7, -/* 0338 */ 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA, 0x6212, 0x6211, 0x6284, -/* 0340 */ 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626D, 0x628A, 0x627C, -/* 0348 */ 0x627E, 0x6279, 0x6273, 0x6292, 0x626F, 0x6298, 0x626E, 0x6295, -/* 0350 */ 0x6293, 0x6291, 0x6286, 0x6539, 0x653B, 0x6538, 0x65F1, 0x66F4, -/* 0358 */ 0x675F, 0x674E, 0x674F, 0x6750, 0x6751, 0x675C, 0x6756, 0x675E, -/* 0360 */ 0x6749, 0x6746, 0x6760, 0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42, -/* 0368 */ 0x6C5E, 0x6C99, 0x6C81, 0x6C88, 0x6C89, 0x6C85, 0x6C9B, 0x6C6A, -/* 0370 */ 0x6C7A, 0x6C90, 0x6C70, 0x6C8C, 0x6C68, 0x6C96, 0x6C92, 0x6C7D, -/* 0378 */ 0x6C83, 0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76, 0x6C8D, 0x6C94, -/* 0380 */ 0x6C98, 0x6C82, 0x7076, 0x707C, 0x707D, 0x7078, 0x7262, 0x7261, -/* 0388 */ 0x7260, 0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, 0x7537, 0x7538, -/* 0390 */ 0x7682, 0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, -/* 0398 */ 0x7F55, 0x8096, 0x8093, 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, -/* 03A0 */ 0x826F, 0x8292, 0x828B, 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37, -/* 03A8 */ 0x8C46, 0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, -/* 03B0 */ 0x8F9B, 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, 0x5DE1, 0x9091, -/* 03B8 */ 0x90A2, 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, 0x91CC, 0x9632, -/* 03C0 */ 0x962E, 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, 0x4E8B, -/* 03C8 */ 0x4E9B, 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, -/* 03D0 */ 0x4F7F, 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, -/* 03D8 */ 0x4F88, 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, -/* 03E0 */ 0x5154, 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, -/* 03E8 */ 0x51FD, 0x523B, 0x5238, 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, -/* 03F0 */ 0x5241, 0x52BE, 0x52BB, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, -/* 03F8 */ 0x5377, 0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7, 0x5473, 0x5475, -/* 0400 */ 0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492, -/* 0408 */ 0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462, -/* 0410 */ 0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A, -/* 0418 */ 0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947, -/* 0420 */ 0x5948, 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE, -/* 0428 */ 0x59D1, 0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF, -/* 0430 */ 0x59B3, 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A, -/* 0438 */ 0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45, 0x5C46, -/* 0440 */ 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1, 0x5CB3, 0x5E18, -/* 0448 */ 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78, 0x5E9A, 0x5E97, -/* 0450 */ 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, 0x5F29, 0x5F80, -/* 0458 */ 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, 0x5FF5, 0x5FFF, -/* 0460 */ 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, 0x6015, 0x6021, -/* 0468 */ 0x6027, 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, 0x623F, 0x623E, -/* 0470 */ 0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF, 0x62C2, 0x62B9, -/* 0478 */ 0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB, 0x62C8, 0x62A8, -/* 0480 */ 0x62BD, 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD, 0x62B5, 0x62DA, -/* 0488 */ 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC, 0x62CE, 0x653E, -/* 0490 */ 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, 0x6606, 0x6602, -/* 0498 */ 0x660E, 0x6600, 0x660F, 0x6615, 0x660A, 0x6607, 0x670D, 0x670B, -/* 04A0 */ 0x676D, 0x678B, 0x6795, 0x6771, 0x679C, 0x6773, 0x6777, 0x6787, -/* 04A8 */ 0x679D, 0x6797, 0x676F, 0x6770, 0x677F, 0x6789, 0x677E, 0x6790, -/* 04B0 */ 0x6775, 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, 0x6B23, 0x6B66, -/* 04B8 */ 0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, 0x6CF3, 0x6CB1, -/* 04C0 */ 0x6CCC, 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE, 0x6CBC, 0x6CE2, 0x6CAB, -/* 04C8 */ 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9, 0x6CC1, 0x6CAE, 0x6CD7, -/* 04D0 */ 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, 0x6CDB, 0x6CCA, 0x6CAC, -/* 04D8 */ 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0, 0x7095, 0x708E, 0x7092, 0x708A, -/* 04E0 */ 0x7099, 0x722C, 0x722D, 0x7238, 0x7248, 0x7267, 0x7269, 0x72C0, -/* 04E8 */ 0x72CE, 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB, -/* 04F0 */ 0x73A5, 0x753D, 0x759D, 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, -/* 04F8 */ 0x76F4, 0x77E5, 0x77FD, 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, -/* 0500 */ 0x7A7A, 0x7A79, 0x7AFA, 0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005, -/* 0508 */ 0x80BA, 0x80A5, 0x80A2, 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4, -/* 0510 */ 0x80AA, 0x80AF, 0x81E5, 0x81FE, 0x820D, 0x82B3, 0x829D, 0x8299, -/* 0518 */ 0x82AD, 0x82BD, 0x829F, 0x82B9, 0x82B1, 0x82AC, 0x82A5, 0x82AF, -/* 0520 */ 0x82B8, 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E, 0x8671, 0x521D, -/* 0528 */ 0x8868, 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5, 0x90B8, 0x90B1, -/* 0530 */ 0x90B6, 0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C, 0x9640, 0x963F, -/* 0538 */ 0x963B, 0x9644, 0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F, -/* 0540 */ 0x4EAD, 0x4EAE, 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1, -/* 0548 */ 0x4FCF, 0x4FDD, 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, -/* 0550 */ 0x4FAE, 0x4FD0, 0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7, -/* 0558 */ 0x5157, 0x5192, 0x5191, 0x51A0, 0x524E, 0x5243, 0x524A, 0x524D, -/* 0560 */ 0x524C, 0x524B, 0x5247, 0x52C7, 0x52C9, 0x52C3, 0x52C1, 0x530D, -/* 0568 */ 0x5357, 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0, 0x54A8, 0x54CE, -/* 0570 */ 0x54C9, 0x54B8, 0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD, 0x54AA, -/* 0578 */ 0x54C1, 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9, -/* 0580 */ 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2, -/* 0588 */ 0x57CE, 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950, -/* 0590 */ 0x59DC, 0x59D8, 0x59FF, 0x59E3, 0x59E8, 0x5A03, 0x59E5, 0x59EA, -/* 0598 */ 0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69, 0x5BA3, 0x5BA6, 0x5BA4, -/* 05A0 */ 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9, -/* 05A8 */ 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, 0x5E7D, 0x5EA0, 0x5EA6, -/* 05B0 */ 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, 0x5F8A, 0x5F8B, -/* 05B8 */ 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, 0x600E, -/* 05C0 */ 0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C, -/* 05C8 */ 0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC, -/* 05D0 */ 0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, 0x62F7, 0x62EF, -/* 05D8 */ 0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545, 0x65AB, -/* 05E0 */ 0x65BD, 0x65E2, 0x6625, 0x662D, 0x6620, 0x6627, 0x662F, 0x661F, -/* 05E8 */ 0x6628, 0x6631, 0x6624, 0x66F7, 0x67FF, 0x67D3, 0x67F1, 0x67D4, -/* 05F0 */ 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, 0x67E9, 0x67EF, 0x67C4, -/* 05F8 */ 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, 0x67DE, 0x67F3, -/* 0600 */ 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83, 0x6B86, -/* 0608 */ 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, 0x6D32, 0x6D2A, -/* 0610 */ 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17, 0x6D3B, 0x6D3D, -/* 0618 */ 0x6D3E, 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, 0x6D27, 0x6D38, 0x6D29, -/* 0620 */ 0x6D2E, 0x6D35, 0x6D0E, 0x6D2B, 0x70AB, 0x70BA, 0x70B3, 0x70AC, -/* 0628 */ 0x70AF, 0x70AD, 0x70B8, 0x70AE, 0x70A4, 0x7230, 0x7272, 0x726F, -/* 0630 */ 0x7274, 0x72E9, 0x72E0, 0x72E1, 0x73B7, 0x73CA, 0x73BB, 0x73B2, -/* 0638 */ 0x73CD, 0x73C0, 0x73B3, 0x751A, 0x752D, 0x754F, 0x754C, 0x754E, -/* 0640 */ 0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2, 0x75A3, 0x7678, 0x7686, -/* 0648 */ 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3, 0x76C5, 0x7701, 0x76F9, -/* 0650 */ 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC, 0x7707, 0x77DC, 0x7802, -/* 0658 */ 0x7814, 0x780C, 0x780D, 0x7946, 0x7949, 0x7948, 0x7947, 0x79B9, -/* 0660 */ 0x79BA, 0x79D1, 0x79D2, 0x79CB, 0x7A7F, 0x7A81, 0x7AFF, 0x7AFD, -/* 0668 */ 0x7C7D, 0x7D02, 0x7D05, 0x7D00, 0x7D09, 0x7D07, 0x7D04, 0x7D06, -/* 0670 */ 0x7F38, 0x7F8E, 0x7FBF, 0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, -/* 0678 */ 0x80E5, 0x80DA, 0x80C3, 0x80C4, 0x80CC, 0x80E1, 0x80DB, 0x80CE, -/* 0680 */ 0x80DE, 0x80E4, 0x80DD, 0x81F4, 0x8222, 0x82E7, 0x8303, 0x8305, -/* 0688 */ 0x82E3, 0x82DB, 0x82E6, 0x8304, 0x82E5, 0x8302, 0x8309, 0x82D2, -/* 0690 */ 0x82D7, 0x82F1, 0x8301, 0x82DC, 0x82D4, 0x82D1, 0x82DE, 0x82D3, -/* 0698 */ 0x82DF, 0x82EF, 0x8306, 0x8650, 0x8679, 0x867B, 0x867A, 0x884D, -/* 06A0 */ 0x886B, 0x8981, 0x89D4, 0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, -/* 06A8 */ 0x8D74, 0x8D73, 0x8DB4, 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, -/* 06B0 */ 0x8FEA, 0x8FE5, 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, -/* 06B8 */ 0x90C1, 0x90C3, 0x914B, 0x914A, 0x91CD, 0x9582, 0x9650, 0x964B, -/* 06C0 */ 0x964C, 0x964D, 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3, 0x9801, -/* 06C8 */ 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3, 0x500C, -/* 06D0 */ 0x500D, 0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029, 0x5016, -/* 06D8 */ 0x5006, 0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, 0x5000, -/* 06E0 */ 0x5014, 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3, -/* 06E8 */ 0x4FEE, 0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, -/* 06F0 */ 0x51A5, 0x51A2, 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, -/* 06F8 */ 0x5254, 0x525B, 0x525D, 0x532A, 0x537F, 0x539F, 0x539D, 0x53DF, -/* 0700 */ 0x54E8, 0x5510, 0x5501, 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, -/* 0708 */ 0x54FA, 0x5514, 0x54E9, 0x54ED, 0x54E1, 0x5509, 0x54EE, 0x54EA, -/* 0710 */ 0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, 0x5703, 0x5704, 0x57C2, -/* 0718 */ 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, 0x5958, 0x595A, -/* 0720 */ 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, 0x5A20, -/* 0728 */ 0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0, -/* 0730 */ 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04, -/* 0738 */ 0x5C51, 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8, -/* 0740 */ 0x5CF0, 0x5CF6, 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB, -/* 0748 */ 0x5EAD, 0x5EA7, 0x5F31, 0x5F92, 0x5F91, 0x5F90, 0x6059, 0x6063, -/* 0750 */ 0x6065, 0x6050, 0x6055, 0x606D, 0x6069, 0x606F, 0x6084, 0x609F, -/* 0758 */ 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, 0x6096, 0x6247, 0x62F3, -/* 0760 */ 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355, 0x6342, 0x6346, -/* 0768 */ 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, 0x632A, 0x632B, 0x6328, -/* 0770 */ 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, 0x65C5, 0x6642, -/* 0778 */ 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645, 0x6641, 0x66F8, -/* 0780 */ 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853, -/* 0788 */ 0x6839, 0x6842, 0x6854, 0x6829, 0x68B3, 0x6817, 0x684C, 0x6851, -/* 0790 */ 0x683D, 0x67F4, 0x6850, 0x6840, 0x683C, 0x6843, 0x682A, 0x6845, -/* 0798 */ 0x6813, 0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7, 0x6C23, 0x6C27, -/* 07A0 */ 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, 0x6D95, 0x6D88, 0x6D87, -/* 07A8 */ 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93, 0x6D6C, 0x6D89, 0x6D6E, -/* 07B0 */ 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 0x6D79, 0x6D85, 0x6D65, -/* 07B8 */ 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9, 0x70C8, 0x70CF, 0x7239, -/* 07C0 */ 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8, 0x72F7, 0x7386, 0x73ED, -/* 07C8 */ 0x7409, 0x73EE, 0x73E0, 0x73EA, 0x73DE, 0x7554, 0x755D, 0x755C, -/* 07D0 */ 0x755A, 0x7559, 0x75BE, 0x75C5, 0x75C7, 0x75B2, 0x75B3, 0x75BD, -/* 07D8 */ 0x75BC, 0x75B9, 0x75C2, 0x75B8, 0x768B, 0x76B0, 0x76CA, 0x76CD, -/* 07E0 */ 0x76CE, 0x7729, 0x771F, 0x7720, 0x7728, 0x77E9, 0x7830, 0x7827, -/* 07E8 */ 0x7838, 0x781D, 0x7834, 0x7837, 0x7825, 0x782D, 0x7820, 0x781F, -/* 07F0 */ 0x7832, 0x7955, 0x7950, 0x7960, 0x795F, 0x7956, 0x795E, 0x795D, -/* 07F8 */ 0x7957, 0x795A, 0x79E4, 0x79E3, 0x79E7, 0x79DF, 0x79E6, 0x79E9, -/* 0800 */ 0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21, -/* 0808 */ 0x7D17, 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, -/* 0810 */ 0x7D1A, 0x7D1C, 0x7D0D, 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, -/* 0818 */ 0x7FC5, 0x7FC1, 0x8006, 0x8004, 0x8018, 0x8015, 0x8019, 0x8017, -/* 0820 */ 0x803D, 0x803F, 0x80F1, 0x8102, 0x80F0, 0x8105, 0x80ED, 0x80F4, -/* 0828 */ 0x8106, 0x80F8, 0x80F3, 0x8108, 0x80FD, 0x810A, 0x80FC, 0x80EF, -/* 0830 */ 0x81ED, 0x81EC, 0x8200, 0x8210, 0x822A, 0x822B, 0x8228, 0x822C, -/* 0838 */ 0x82BB, 0x832B, 0x8352, 0x8354, 0x834A, 0x8338, 0x8350, 0x8349, -/* 0840 */ 0x8335, 0x8334, 0x834F, 0x8332, 0x8339, 0x8336, 0x8317, 0x8340, -/* 0848 */ 0x8331, 0x8328, 0x8343, 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, -/* 0850 */ 0x86A9, 0x868C, 0x86A3, 0x869C, 0x8870, 0x8877, 0x8881, 0x8882, -/* 0858 */ 0x887D, 0x8879, 0x8A18, 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, -/* 0860 */ 0x8A17, 0x8A13, 0x8A16, 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, -/* 0868 */ 0x8CA1, 0x8CA2, 0x8D77, 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, -/* 0870 */ 0x9001, 0x9006, 0x8FF7, 0x9000, 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, -/* 0878 */ 0x9005, 0x8FF8, 0x9095, 0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D, -/* 0880 */ 0x914C, 0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662, -/* 0888 */ 0x9663, 0x9661, 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, 0x96BB, -/* 0890 */ 0x98E2, 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E, -/* 0898 */ 0x507A, 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, -/* 08A0 */ 0x5065, 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, -/* 08A8 */ 0x500F, 0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F, -/* 08B0 */ 0x52D2, 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, -/* 08B8 */ 0x5340, 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544, -/* 08C0 */ 0x555E, 0x5561, 0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555, -/* 08C8 */ 0x552F, 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, 0x5563, 0x5533, -/* 08D0 */ 0x5541, 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, 0x580A, -/* 08D8 */ 0x5806, 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9, -/* 08E0 */ 0x5920, 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40, -/* 08E8 */ 0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5, -/* 08F0 */ 0x5BC4, 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60, -/* 08F8 */ 0x5C5C, 0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22, -/* 0900 */ 0x5D11, 0x5D29, 0x5D14, 0x5D19, 0x5D24, 0x5D27, 0x5D17, 0x5DE2, -/* 0908 */ 0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, 0x5EB6, 0x5EB5, -/* 0910 */ 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, 0x5F6B, 0x5F97, -/* 0918 */ 0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, 0x60A3, -/* 0920 */ 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD, 0x60C5, -/* 0928 */ 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 0x60C6, 0x60DF, -/* 0930 */ 0x60B8, 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, 0x63A0, 0x63A7, -/* 0938 */ 0x6372, 0x6396, 0x63A2, 0x63A5, 0x6377, 0x6367, 0x6398, 0x63AA, -/* 0940 */ 0x6371, 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B, 0x63A8, 0x6384, -/* 0948 */ 0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F, 0x6380, 0x637B, -/* 0950 */ 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, 0x6551, 0x6559, 0x6557, -/* 0958 */ 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, 0x659B, 0x65AC, -/* 0960 */ 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 0x6664, 0x6668, -/* 0968 */ 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 0x68AF, 0x68A2, -/* 0970 */ 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, 0x6897, 0x68B0, -/* 0978 */ 0x6883, 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, 0x689D, 0x68A8, -/* 0980 */ 0x689F, 0x68A1, 0x6882, 0x6B32, 0x6BBA, 0x6BEB, 0x6BEC, 0x6C2B, -/* 0988 */ 0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2, 0x6DE1, 0x6DCC, 0x6DE4, -/* 0990 */ 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB, 0x6DAF, 0x6DD1, 0x6DAE, -/* 0998 */ 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, 0x6DC5, 0x6DD2, 0x6E1A, -/* 09A0 */ 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1, 0x6DEE, 0x6DE8, -/* 09A8 */ 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, 0x70F9, 0x7109, -/* 09B0 */ 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D, 0x7281, 0x731C, 0x731B, -/* 09B8 */ 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740A, 0x7403, 0x7406, -/* 09C0 */ 0x73FE, 0x740D, 0x74E0, 0x74F6, 0x74F7, 0x751C, 0x7522, 0x7565, -/* 09C8 */ 0x7566, 0x7562, 0x7570, 0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA, -/* 09D0 */ 0x75CD, 0x768E, 0x76D4, 0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C, -/* 09D8 */ 0x7736, 0x7738, 0x773A, 0x786B, 0x7843, 0x784E, 0x7965, 0x7968, -/* 09E0 */ 0x796D, 0x79FB, 0x7A92, 0x7A95, 0x7B20, 0x7B28, 0x7B1B, 0x7B2C, -/* 09E8 */ 0x7B26, 0x7B19, 0x7B1E, 0x7B2E, 0x7C92, 0x7C97, 0x7C95, 0x7D46, -/* 09F0 */ 0x7D43, 0x7D71, 0x7D2E, 0x7D39, 0x7D3C, 0x7D40, 0x7D30, 0x7D33, -/* 09F8 */ 0x7D44, 0x7D2F, 0x7D42, 0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A, -/* 0A00 */ 0x7FCC, 0x7FCE, 0x7FD2, 0x801C, 0x804A, 0x8046, 0x812F, 0x8116, -/* 0A08 */ 0x8123, 0x812B, 0x8129, 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, -/* 0A10 */ 0x8236, 0x8239, 0x838E, 0x839E, 0x8398, 0x8378, 0x83A2, 0x8396, -/* 0A18 */ 0x83BD, 0x83AB, 0x8392, 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377, -/* 0A20 */ 0x837B, 0x837C, 0x8386, 0x83A7, 0x8655, 0x5F6A, 0x86C7, 0x86C0, -/* 0A28 */ 0x86B6, 0x86C4, 0x86B5, 0x86C6, 0x86CB, 0x86B1, 0x86AF, 0x86C9, -/* 0A30 */ 0x8853, 0x889E, 0x8888, 0x88AB, 0x8892, 0x8896, 0x888D, 0x888B, -/* 0A38 */ 0x8993, 0x898F, 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31, 0x8A2D, -/* 0A40 */ 0x8A1F, 0x8A1B, 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB, -/* 0A48 */ 0x8CA8, 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA, 0x8EDB, -/* 0A50 */ 0x8EDF, 0x9019, 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D, -/* 0A58 */ 0x9010, 0x9015, 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, -/* 0A60 */ 0x9014, 0x90E8, 0x90ED, 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6, -/* 0A68 */ 0x91E3, 0x91E7, 0x91ED, 0x91E9, 0x9589, 0x966A, 0x9675, 0x9673, -/* 0A70 */ 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966C, 0x96C0, 0x96EA, -/* 0A78 */ 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A, 0x9CE5, 0x9E75, -/* 0A80 */ 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099, 0x5091, -/* 0A88 */ 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274, -/* 0A90 */ 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B, -/* 0A98 */ 0x5580, 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C, -/* 0AA0 */ 0x55AA, 0x5594, 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F, -/* 0AA8 */ 0x553E, 0x55B2, 0x559A, 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589, -/* 0AB0 */ 0x55AB, 0x5599, 0x570D, 0x582F, 0x582A, 0x5834, 0x5824, 0x5830, -/* 0AB8 */ 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9, 0x58FA, 0x5960, 0x5A77, -/* 0AC0 */ 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, 0x5B71, 0x5BD2, -/* 0AC8 */ 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C, 0x5D50, -/* 0AD0 */ 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43, 0x5E7E, -/* 0AD8 */ 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9, 0x5FAA, -/* 0AE0 */ 0x5FA8, 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C, 0x6123, -/* 0AE8 */ 0x60FA, 0x6115, 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1, 0x610E, -/* 0AF0 */ 0x60F6, 0x6109, 0x6100, 0x6112, 0x621F, 0x6249, 0x63A3, 0x638C, -/* 0AF8 */ 0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6, 0x63CD, 0x63D2, 0x63E3, -/* 0B00 */ 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE, 0x6376, 0x63F4, 0x63EA, -/* 0B08 */ 0x63DB, 0x6452, 0x63DA, 0x63F9, 0x655E, 0x6566, 0x6562, 0x6563, -/* 0B10 */ 0x6591, 0x6590, 0x65AF, 0x666E, 0x6670, 0x6674, 0x6676, 0x666F, -/* 0B18 */ 0x6691, 0x667A, 0x667E, 0x6677, 0x66FE, 0x66FF, 0x671F, 0x671D, -/* 0B20 */ 0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7, 0x6905, 0x68DF, 0x68F5, -/* 0B28 */ 0x68EE, 0x68E7, 0x68F9, 0x68D2, 0x68F2, 0x68E3, 0x68CB, 0x68CD, -/* 0B30 */ 0x690D, 0x6912, 0x690E, 0x68C9, 0x68DA, 0x696E, 0x68FB, 0x6B3E, -/* 0B38 */ 0x6B3A, 0x6B3D, 0x6B98, 0x6B96, 0x6BBC, 0x6BEF, 0x6C2E, 0x6C2F, -/* 0B40 */ 0x6C2C, 0x6E2F, 0x6E38, 0x6E54, 0x6E21, 0x6E32, 0x6E67, 0x6E4A, -/* 0B48 */ 0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B, 0x6E58, 0x6E24, 0x6E56, -/* 0B50 */ 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, 0x6E4D, 0x6E3A, 0x6E2C, -/* 0B58 */ 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB, 0x6E89, 0x6E19, 0x6E4E, 0x6E63, -/* 0B60 */ 0x6E44, 0x6E72, 0x6E69, 0x6E5F, 0x7119, 0x711A, 0x7126, 0x7130, -/* 0B68 */ 0x7121, 0x7136, 0x716E, 0x711C, 0x724C, 0x7284, 0x7280, 0x7336, -/* 0B70 */ 0x7325, 0x7334, 0x7329, 0x743A, 0x742A, 0x7433, 0x7422, 0x7425, -/* 0B78 */ 0x7435, 0x7436, 0x7434, 0x742F, 0x741B, 0x7426, 0x7428, 0x7525, -/* 0B80 */ 0x7526, 0x756B, 0x756A, 0x75E2, 0x75DB, 0x75E3, 0x75D9, 0x75D8, -/* 0B88 */ 0x75DE, 0x75E0, 0x767B, 0x767C, 0x7696, 0x7693, 0x76B4, 0x76DC, -/* 0B90 */ 0x774F, 0x77ED, 0x785D, 0x786C, 0x786F, 0x7A0D, 0x7A08, 0x7A0B, -/* 0B98 */ 0x7A05, 0x7A00, 0x7A98, 0x7A97, 0x7A96, 0x7AE5, 0x7AE3, 0x7B49, -/* 0BA0 */ 0x7B56, 0x7B46, 0x7B50, 0x7B52, 0x7B54, 0x7B4D, 0x7B4B, 0x7B4F, -/* 0BA8 */ 0x7B51, 0x7C9F, 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B, -/* 0BB0 */ 0x7D6E, 0x7D72, 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, -/* 0BB8 */ 0x7FD4, 0x7FD5, 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, -/* 0BC0 */ 0x8151, 0x814E, 0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, -/* 0BC8 */ 0x8212, 0x821C, 0x83E9, 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, -/* 0BD0 */ 0x840B, 0x83C1, 0x83EF, 0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0, -/* 0BD8 */ 0x840C, 0x83CC, 0x83FD, 0x83F2, 0x83CA, 0x8438, 0x840E, 0x8404, -/* 0BE0 */ 0x83DC, 0x8407, 0x83D4, 0x83DF, 0x865B, 0x86DF, 0x86D9, 0x86ED, -/* 0BE8 */ 0x86D4, 0x86DB, 0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1, 0x88C2, -/* 0BF0 */ 0x88B1, 0x8983, 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, -/* 0BF8 */ 0x8A41, 0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, -/* 0C00 */ 0x8A56, 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, -/* 0C08 */ 0x8CBB, 0x8CC0, 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, -/* 0C10 */ 0x8D85, 0x8D81, 0x8DCE, 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, -/* 0C18 */ 0x8DDB, 0x8DC6, 0x8EFB, 0x8EF8, 0x8EFC, 0x8F9C, 0x902E, 0x9035, -/* 0C20 */ 0x9031, 0x9038, 0x9032, 0x9036, 0x9102, 0x90F5, 0x9109, 0x90FE, -/* 0C28 */ 0x9163, 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, 0x9209, 0x921E, -/* 0C30 */ 0x920D, 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B, 0x9591, -/* 0C38 */ 0x9593, 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, 0x967D, 0x9685, -/* 0C40 */ 0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, 0x96C6, -/* 0C48 */ 0x96C7, 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, 0x98E7, -/* 0C50 */ 0x98EA, 0x98EF, 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD, 0x9EC3, -/* 0C58 */ 0x9ECD, 0x9ED1, 0x4E82, 0x50AD, 0x50B5, 0x50B2, 0x50B3, 0x50C5, -/* 0C60 */ 0x50BE, 0x50AC, 0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F, 0x5277, -/* 0C68 */ 0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F, 0x55DF, -/* 0C70 */ 0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, 0x55D1, 0x55E3, -/* 0C78 */ 0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5, 0x55C9, -/* 0C80 */ 0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 0x5854, -/* 0C88 */ 0x586B, 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, 0x584B, 0x5967, -/* 0C90 */ 0x5AC1, 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC, 0x5AB3, 0x5AC2, -/* 0C98 */ 0x5AB2, 0x5D69, 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 0x5EC8, 0x5F12, -/* 0CA0 */ 0x5F59, 0x5FAC, 0x5FAE, 0x611A, 0x610F, 0x6148, 0x611F, 0x60F3, -/* 0CA8 */ 0x611B, 0x60F9, 0x6101, 0x6108, 0x614E, 0x614C, 0x6144, 0x614D, -/* 0CB0 */ 0x613E, 0x6134, 0x6127, 0x610D, 0x6106, 0x6137, 0x6221, 0x6222, -/* 0CB8 */ 0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D, 0x642C, 0x640F, -/* 0CC0 */ 0x641C, 0x6414, 0x640D, 0x6436, 0x6416, 0x6417, 0x6406, 0x656C, -/* 0CC8 */ 0x659F, 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688, 0x6696, 0x6684, -/* 0CD0 */ 0x6698, 0x668D, 0x6703, 0x6994, 0x696D, 0x695A, 0x6977, 0x6960, -/* 0CD8 */ 0x6954, 0x6975, 0x6930, 0x6982, 0x694A, 0x6968, 0x696B, 0x695E, -/* 0CE0 */ 0x6953, 0x6979, 0x6986, 0x695D, 0x6963, 0x695B, 0x6B47, 0x6B72, -/* 0CE8 */ 0x6BC0, 0x6BBF, 0x6BD3, 0x6BFD, 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, -/* 0CF0 */ 0x6EC2, 0x6E90, 0x6E9D, 0x6EC7, 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, -/* 0CF8 */ 0x6EBA, 0x6EAB, 0x6ED1, 0x6E96, 0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA, -/* 0D00 */ 0x6EA7, 0x6EB4, 0x714E, 0x7159, 0x7169, 0x7164, 0x7149, 0x7167, -/* 0D08 */ 0x715C, 0x716C, 0x7166, 0x714C, 0x7165, 0x715E, 0x7146, 0x7168, -/* 0D10 */ 0x7156, 0x723A, 0x7252, 0x7337, 0x7345, 0x733F, 0x733E, 0x746F, -/* 0D18 */ 0x745A, 0x7455, 0x745F, 0x745E, 0x7441, 0x743F, 0x7459, 0x745B, -/* 0D20 */ 0x745C, 0x7576, 0x7578, 0x7600, 0x75F0, 0x7601, 0x75F2, 0x75F1, -/* 0D28 */ 0x75FA, 0x75FF, 0x75F4, 0x75F3, 0x76DE, 0x76DF, 0x775B, 0x776B, -/* 0D30 */ 0x7766, 0x775E, 0x7763, 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, -/* 0D38 */ 0x7768, 0x7762, 0x77EE, 0x788E, 0x78B0, 0x7897, 0x7898, 0x788C, -/* 0D40 */ 0x7889, 0x787C, 0x7891, 0x7893, 0x787F, 0x797A, 0x797F, 0x7981, -/* 0D48 */ 0x842C, 0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14, 0x7A1F, 0x7A1E, -/* 0D50 */ 0x7A9F, 0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, 0x7CB1, -/* 0D58 */ 0x7CB3, 0x7CB5, 0x7D93, 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, -/* 0D60 */ 0x7F6E, 0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, -/* 0D68 */ 0x8058, 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, -/* 0D70 */ 0x8173, 0x816B, 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, -/* 0D78 */ 0x8477, 0x843D, 0x8431, 0x8475, 0x8466, 0x846B, 0x8449, 0x846C, -/* 0D80 */ 0x845B, 0x843C, 0x8435, 0x8461, 0x8463, 0x8469, 0x846D, 0x8446, -/* 0D88 */ 0x865E, 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707, 0x8700, -/* 0D90 */ 0x86FE, 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF, -/* 0D98 */ 0x88D4, 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, 0x88D5, -/* 0DA0 */ 0x88D2, 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69, -/* 0DA8 */ 0x8A70, 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, -/* 0DB0 */ 0x8A62, 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, -/* 0DB8 */ 0x8C8A, 0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, -/* 0DC0 */ 0x8CC2, 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, -/* 0DC8 */ 0x8DEA, 0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, 0x8EFE, 0x8F0A, -/* 0DD0 */ 0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, 0x9054, 0x903C, -/* 0DD8 */ 0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051, 0x903E, -/* 0DE0 */ 0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237, -/* 0DE8 */ 0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264, -/* 0DF0 */ 0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A, -/* 0DF8 */ 0x9598, 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA, -/* 0E00 */ 0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810, -/* 0E08 */ 0x9811, 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, 0x98F4, 0x98FD, -/* 0E10 */ 0x98FE, 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9, 0x9E82, 0x9F0E, -/* 0E18 */ 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6, 0x50ED, 0x50DA, -/* 0E20 */ 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, 0x5162, 0x51F3, -/* 0E28 */ 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, 0x561B, 0x5617, -/* 0E30 */ 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, 0x55F7, 0x5616, -/* 0E38 */ 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, 0x5875, 0x587E, -/* 0E40 */ 0x5883, 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, 0x58FD, 0x5925, -/* 0E48 */ 0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6, 0x5AE9, 0x5AD7, -/* 0E50 */ 0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7, 0x5BE1, 0x5BE5, -/* 0E58 */ 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D, 0x5C62, 0x5D84, -/* 0E60 */ 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, 0x5E54, 0x5ED3, 0x5ED6, -/* 0E68 */ 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0x613F, 0x614B, 0x6177, -/* 0E70 */ 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 0x6175, 0x622A, 0x6487, -/* 0E78 */ 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, 0x6451, 0x6467, -/* 0E80 */ 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, 0x65D7, 0x65D6, 0x66A2, -/* 0E88 */ 0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, 0x69AE, 0x69D3, -/* 0E90 */ 0x69CB, 0x699B, 0x69B7, 0x69BB, 0x69AB, 0x69B4, 0x69D0, 0x69CD, -/* 0E98 */ 0x69AD, 0x69CC, 0x69A6, 0x69C3, 0x69A3, 0x6B49, 0x6B4C, 0x6C33, -/* 0EA0 */ 0x6F33, 0x6F14, 0x6EFE, 0x6F13, 0x6EF4, 0x6F29, 0x6F3E, 0x6F20, -/* 0EA8 */ 0x6F2C, 0x6F0F, 0x6F02, 0x6F22, 0x6EFF, 0x6EEF, 0x6F06, 0x6F31, -/* 0EB0 */ 0x6F38, 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F, 0x6F88, 0x6F2A, -/* 0EB8 */ 0x6EEC, 0x6F01, 0x6EF2, 0x6ECC, 0x6EF7, 0x7194, 0x7199, 0x717D, -/* 0EC0 */ 0x718A, 0x7184, 0x7192, 0x723E, 0x7292, 0x7296, 0x7344, 0x7350, -/* 0EC8 */ 0x7464, 0x7463, 0x746A, 0x7470, 0x746D, 0x7504, 0x7591, 0x7627, -/* 0ED0 */ 0x760D, 0x760B, 0x7609, 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, -/* 0ED8 */ 0x777F, 0x7761, 0x78C1, 0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3, -/* 0EE0 */ 0x798E, 0x798F, 0x798D, 0x7A2E, 0x7A31, 0x7AAA, 0x7AA9, 0x7AED, -/* 0EE8 */ 0x7AEF, 0x7BA1, 0x7B95, 0x7B8B, 0x7B75, 0x7B97, 0x7B9D, 0x7B94, -/* 0EF0 */ 0x7B8F, 0x7BB8, 0x7B87, 0x7B84, 0x7CB9, 0x7CBD, 0x7CBE, 0x7DBB, -/* 0EF8 */ 0x7DB0, 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0, 0x7DCA, 0x7DB4, 0x7DB2, -/* 0F00 */ 0x7DB1, 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, 0x7DD2, -/* 0F08 */ 0x7DC7, 0x7DAC, 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A, -/* 0F10 */ 0x8087, 0x8150, 0x8180, 0x818F, 0x8188, 0x818A, 0x817F, 0x8182, -/* 0F18 */ 0x81E7, 0x81FA, 0x8207, 0x8214, 0x821E, 0x824B, 0x84C9, 0x84BF, -/* 0F20 */ 0x84C6, 0x84C4, 0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8, -/* 0F28 */ 0x84C0, 0x84D3, 0x8490, 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C, -/* 0F30 */ 0x873B, 0x8722, 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, -/* 0F38 */ 0x88F3, 0x8902, 0x88F4, 0x88F9, 0x88F8, 0x88FD, 0x88E8, 0x891A, -/* 0F40 */ 0x88EF, 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, 0x8AA1, 0x8A93, -/* 0F48 */ 0x8AA4, 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, 0x8AA7, -/* 0F50 */ 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99, -/* 0F58 */ 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060, -/* 0F60 */ 0x9058, 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B, -/* 0F68 */ 0x9119, 0x9118, 0x911E, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, -/* 0F70 */ 0x92AC, 0x9280, 0x9285, 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, -/* 0F78 */ 0x92A8, 0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9, 0x95A3, 0x95A5, -/* 0F80 */ 0x95A4, 0x9699, 0x969C, 0x969B, 0x96CC, 0x96D2, 0x9700, 0x977C, -/* 0F88 */ 0x9785, 0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1, 0x9903, 0x9905, -/* 0F90 */ 0x990C, 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, 0x9B42, -/* 0F98 */ 0x9CF4, 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100, -/* 0FA0 */ 0x50FB, 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51DC, -/* 0FA8 */ 0x5287, 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E, -/* 0FB0 */ 0x563B, 0x5639, 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E, -/* 0FB8 */ 0x5657, 0x5674, 0x5636, 0x562F, 0x5630, 0x5880, 0x589F, 0x589E, -/* 0FC0 */ 0x58B3, 0x589C, 0x58AE, 0x58A9, 0x58A6, 0x596D, 0x5B09, 0x5AFB, -/* 0FC8 */ 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC, 0x5BE9, 0x5BEB, -/* 0FD0 */ 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, 0x5E61, 0x5EE2, -/* 0FD8 */ 0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, 0x5FB7, -/* 0FE0 */ 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182, 0x617C, -/* 0FE8 */ 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB, 0x618E, 0x61AC, -/* 0FF0 */ 0x619A, 0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469, 0x646F, 0x6479, -/* 0FF8 */ 0x649E, 0x64B2, 0x6488, 0x6490, 0x64B0, 0x64A5, 0x6493, 0x6495, -/* 1000 */ 0x64A9, 0x6492, 0x64AE, 0x64AD, 0x64AB, 0x649A, 0x64AC, 0x6499, -/* 1008 */ 0x64A2, 0x64B3, 0x6575, 0x6577, 0x6578, 0x66AE, 0x66AB, 0x66B4, -/* 1010 */ 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01, 0x6A1E, 0x6A19, 0x69FD, -/* 1018 */ 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05, 0x69ED, 0x6A11, -/* 1020 */ 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, 0x6F7C, 0x6F84, -/* 1028 */ 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, 0x6F78, 0x6F6E, -/* 1030 */ 0x6F8E, 0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58, 0x6ED5, 0x6F6F, -/* 1038 */ 0x6F60, 0x6F5F, 0x719F, 0x71AC, 0x71B1, 0x71A8, 0x7256, 0x729B, -/* 1040 */ 0x734E, 0x7357, 0x7469, 0x748B, 0x7483, 0x747E, 0x7480, 0x757F, -/* 1048 */ 0x7620, 0x7629, 0x761F, 0x7624, 0x7626, 0x7621, 0x7622, 0x769A, -/* 1050 */ 0x76BA, 0x76E4, 0x778E, 0x7787, 0x778C, 0x7791, 0x778B, 0x78CB, -/* 1058 */ 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5, 0x78BC, 0x78D0, 0x7A3F, -/* 1060 */ 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B, 0x7AAF, 0x7AAE, 0x7BAD, -/* 1068 */ 0x7BB1, 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, 0x7BC1, 0x7BA0, 0x7BCC, -/* 1070 */ 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB, 0x7DD8, 0x7DEC, 0x7DDD, -/* 1078 */ 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9, 0x7D9E, 0x7DD9, 0x7DF2, -/* 1080 */ 0x7DF9, 0x7F75, 0x7F77, 0x7FAF, 0x7FE9, 0x8026, 0x819B, 0x819C, -/* 1088 */ 0x819D, 0x81A0, 0x819A, 0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, -/* 1090 */ 0x852C, 0x852D, 0x8513, 0x8511, 0x8523, 0x8521, 0x8514, 0x84EC, -/* 1098 */ 0x8525, 0x84FF, 0x8506, 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, -/* 10A0 */ 0x8778, 0x8768, 0x8759, 0x8757, 0x874C, 0x8753, 0x885B, 0x885D, -/* 10A8 */ 0x8910, 0x8907, 0x8912, 0x8913, 0x8915, 0x890A, 0x8ABC, 0x8AD2, -/* 10B0 */ 0x8AC7, 0x8AC4, 0x8A95, 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, 0x8AC2, -/* 10B8 */ 0x8ABF, 0x8AB0, 0x8AD6, 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, -/* 10C0 */ 0x8C4E, 0x8C6C, 0x8CE0, 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, -/* 10C8 */ 0x8CE2, 0x8CE3, 0x8CDC, 0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, -/* 10D0 */ 0x8E2B, 0x8E10, 0x8E1D, 0x8E22, 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, -/* 10D8 */ 0x8E1E, 0x8EBA, 0x8F1D, 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, -/* 10E0 */ 0x8F1C, 0x8F1E, 0x8F25, 0x9069, 0x906E, 0x9068, 0x906D, 0x9077, -/* 10E8 */ 0x9130, 0x912D, 0x9127, 0x9131, 0x9187, 0x9189, 0x918B, 0x9183, -/* 10F0 */ 0x92C5, 0x92BB, 0x92B7, 0x92EA, 0x92E4, 0x92C1, 0x92B3, 0x92BC, -/* 10F8 */ 0x92D2, 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704, 0x9706, -/* 1100 */ 0x9707, 0x9709, 0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B, -/* 1108 */ 0x981C, 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, -/* 1110 */ 0x99DF, 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, -/* 1118 */ 0x9AEF, 0x9B27, 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09, -/* 1120 */ 0x9D03, 0x9EA9, 0x9EBE, 0x9ECE, 0x58A8, 0x9F52, 0x5112, 0x5118, -/* 1128 */ 0x5114, 0x5110, 0x5115, 0x5180, 0x51AA, 0x51DD, 0x5291, 0x5293, -/* 1130 */ 0x52F3, 0x5659, 0x566B, 0x5679, 0x5669, 0x5664, 0x5678, 0x566A, -/* 1138 */ 0x5668, 0x5665, 0x5671, 0x566F, 0x566C, 0x5662, 0x5676, 0x58C1, -/* 1140 */ 0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78, 0x5BF0, -/* 1148 */ 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD, 0x61B6, -/* 1150 */ 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 0x64BB, -/* 1158 */ 0x64BC, 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 0x64D2, -/* 1160 */ 0x64D4, 0x64BE, 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, 0x66C7, -/* 1168 */ 0x66B8, 0x6A3D, 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 0x6A39, -/* 1170 */ 0x6A44, 0x6A62, 0x6A61, 0x6A4B, 0x6A47, 0x6A35, 0x6A5F, 0x6A48, -/* 1178 */ 0x6B59, 0x6B77, 0x6C05, 0x6FC2, 0x6FB1, 0x6FA1, 0x6FC3, 0x6FA4, -/* 1180 */ 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, 0x6FA6, 0x6FA0, -/* 1188 */ 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, 0x71D5, 0x71B9, -/* 1190 */ 0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, 0x749C, 0x74A3, -/* 1198 */ 0x7498, 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D, 0x7634, 0x7638, -/* 11A0 */ 0x763A, 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F, 0x77A5, 0x78E8, -/* 11A8 */ 0x78DA, 0x78EC, 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, 0x7A46, 0x7A4C, -/* 11B0 */ 0x7A4B, 0x7ABA, 0x7BD9, 0x7C11, 0x7BC9, 0x7BE4, 0x7BDB, 0x7BE1, -/* 11B8 */ 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, 0x7E0A, 0x7E11, 0x7E08, 0x7E1B, -/* 11C0 */ 0x7E23, 0x7E1E, 0x7E1D, 0x7E09, 0x7E10, 0x7F79, 0x7FB2, 0x7FF0, -/* 11C8 */ 0x7FF1, 0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8, 0x81FB, 0x8208, -/* 11D0 */ 0x8258, 0x8259, 0x854A, 0x8559, 0x8548, 0x8568, 0x8569, 0x8543, -/* 11D8 */ 0x8549, 0x856D, 0x856A, 0x855E, 0x8783, 0x879F, 0x879E, 0x87A2, -/* 11E0 */ 0x878D, 0x8861, 0x892A, 0x8932, 0x8925, 0x892B, 0x8921, 0x89AA, -/* 11E8 */ 0x89A6, 0x8AE6, 0x8AFA, 0x8AEB, 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, -/* 11F0 */ 0x8AEE, 0x8AFE, 0x8B01, 0x8B02, 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, -/* 11F8 */ 0x8AFC, 0x8C6B, 0x8C6D, 0x8C93, 0x8CF4, 0x8E44, 0x8E31, 0x8E34, -/* 1200 */ 0x8E42, 0x8E39, 0x8E35, 0x8F3B, 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, -/* 1208 */ 0x8FA6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907C, 0x907A, 0x9134, -/* 1210 */ 0x9192, 0x9320, 0x9336, 0x92F8, 0x9333, 0x932F, 0x9322, 0x92FC, -/* 1218 */ 0x932B, 0x9304, 0x931A, 0x9310, 0x9326, 0x9321, 0x9315, 0x932E, -/* 1220 */ 0x9319, 0x95BB, 0x96A7, 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, -/* 1228 */ 0x9716, 0x970D, 0x9713, 0x970F, 0x975B, 0x975C, 0x9766, 0x9798, -/* 1230 */ 0x9830, 0x9838, 0x983B, 0x9837, 0x982D, 0x9839, 0x9824, 0x9910, -/* 1238 */ 0x9928, 0x991E, 0x991B, 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, -/* 1240 */ 0x9AB8, 0x9ABC, 0x9AFB, 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, -/* 1248 */ 0x9D26, 0x9D28, 0x9D12, 0x9D1B, 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, -/* 1250 */ 0x512A, 0x511F, 0x5121, 0x5132, 0x52F5, 0x568E, 0x5680, 0x5690, -/* 1258 */ 0x5685, 0x5687, 0x568F, 0x58D5, 0x58D3, 0x58D1, 0x58CE, 0x5B30, -/* 1260 */ 0x5B2A, 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, 0x5DBD, -/* 1268 */ 0x5DB8, 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6, -/* 1270 */ 0x61CB, 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0, -/* 1278 */ 0x64E6, 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, -/* 1280 */ 0x66D6, 0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, -/* 1288 */ 0x6A7E, 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, -/* 1290 */ 0x6FD8, 0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, -/* 1298 */ 0x6F80, 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7, -/* 12A0 */ 0x71DF, 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, 0x71F4, 0x71E0, -/* 12A8 */ 0x7235, 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, 0x74A8, -/* 12B0 */ 0x7646, 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC, -/* 12B8 */ 0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901, -/* 12C0 */ 0x79A7, 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7, -/* 12C8 */ 0x7C0C, 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9, -/* 12D0 */ 0x7CDD, 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B, -/* 12D8 */ 0x7E3D, 0x7E31, 0x7E45, 0x7E41, 0x7E34, 0x7E39, 0x7E48, 0x7E35, -/* 12E0 */ 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071, 0x8072, 0x8070, -/* 12E8 */ 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, 0x81C0, 0x81BF, -/* 12F0 */ 0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA, 0x8584, -/* 12F8 */ 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, 0x8587, 0x85A8, -/* 1300 */ 0x858A, 0x85A6, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, 0x87C6, -/* 1308 */ 0x87AB, 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, 0x8944, -/* 1310 */ 0x8938, 0x893D, 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, 0x8B0A, -/* 1318 */ 0x8B20, 0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F, 0x8C73, 0x8CFA, -/* 1320 */ 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B, 0x8E48, -/* 1328 */ 0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F, 0x907D, -/* 1330 */ 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E, 0x919C, -/* 1338 */ 0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, 0x9318, -/* 1340 */ 0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 0x95CB, -/* 1348 */ 0x95CC, 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, 0x971E, -/* 1350 */ 0x97A0, 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01, 0x99FF, 0x9BAE, -/* 1358 */ 0x9BAB, 0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF, 0x9EDE, -/* 1360 */ 0x9EDC, 0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2, 0x5695, 0x56AE, -/* 1368 */ 0x58D9, 0x58D8, 0x5B38, 0x5F5E, 0x61E3, 0x6233, 0x64F4, 0x64F2, -/* 1370 */ 0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7, 0x66DC, 0x6726, -/* 1378 */ 0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, 0x6AAE, 0x6AAF, -/* 1380 */ 0x6B5F, 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, 0x7006, 0x6FFA, -/* 1388 */ 0x7011, 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8, 0x7377, 0x7375, -/* 1390 */ 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658, 0x7652, 0x77BD, 0x77BF, -/* 1398 */ 0x77BB, 0x77BC, 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60, 0x7AC4, -/* 13A0 */ 0x7AC5, 0x7C2B, 0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, -/* 13A8 */ 0x7E54, 0x7E55, 0x7E5E, 0x7E5A, 0x7E61, 0x7E52, 0x7E59, 0x7F48, -/* 13B0 */ 0x7FF9, 0x7FFB, 0x8077, 0x8076, 0x81CD, 0x81CF, 0x820A, 0x85CF, -/* 13B8 */ 0x85A9, 0x85CD, 0x85D0, 0x85C9, 0x85B0, 0x85BA, 0x85B9, 0x87EF, -/* 13C0 */ 0x87EC, 0x87F2, 0x87E0, 0x8986, 0x89B2, 0x89F4, 0x8B28, 0x8B39, -/* 13C8 */ 0x8B2C, 0x8B2B, 0x8C50, 0x8D05, 0x8E59, 0x8E63, 0x8E66, 0x8E64, -/* 13D0 */ 0x8E5F, 0x8E55, 0x8EC0, 0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088, -/* 13D8 */ 0x91AB, 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3, -/* 13E0 */ 0x93AE, 0x93AC, 0x93B0, 0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6, -/* 13E8 */ 0x95D0, 0x95D5, 0x96E2, 0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724, -/* 13F0 */ 0x97A3, 0x97A6, 0x97AD, 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, -/* 13F8 */ 0x9853, 0x98BA, 0x993E, 0x993F, 0x993D, 0x992E, 0x99A5, 0x9A0E, -/* 1400 */ 0x9AC1, 0x9B03, 0x9B06, 0x9B4F, 0x9B4E, 0x9B4D, 0x9BCA, 0x9BC9, -/* 1408 */ 0x9BFD, 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, 0x9EE0, 0x9F15, -/* 1410 */ 0x9F2C, 0x5133, 0x56A5, 0x56A8, 0x58DE, 0x58DF, 0x58E2, 0x5BF5, -/* 1418 */ 0x9F90, 0x5EEC, 0x61F2, 0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F, -/* 1420 */ 0x66E0, 0x66DD, 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, -/* 1428 */ 0x7028, 0x701A, 0x701D, 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, -/* 1430 */ 0x72A2, 0x7378, 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, -/* 1438 */ 0x765F, 0x7661, 0x77C7, 0x7919, 0x79B1, 0x7A6B, 0x7A69, 0x7C3E, -/* 1440 */ 0x7C3F, 0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B, 0x7E6D, 0x7E79, -/* 1448 */ 0x7E69, 0x7E6A, 0x7E73, 0x7F85, 0x7FB6, 0x7FB9, 0x7FB8, 0x81D8, -/* 1450 */ 0x85E9, 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, 0x85F7, 0x87FB, -/* 1458 */ 0x8805, 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, 0x895E, -/* 1460 */ 0x8B41, 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46, -/* 1468 */ 0x8B59, 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, -/* 1470 */ 0x8E7A, 0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, -/* 1478 */ 0x91AE, 0x93E1, 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, 0x93DD, -/* 1480 */ 0x93D6, 0x93E2, 0x93CD, 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, -/* 1488 */ 0x96B4, 0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC, 0x97FB, 0x985E, -/* 1490 */ 0x9858, 0x985B, 0x98BC, 0x9945, 0x9949, 0x9A16, 0x9A19, 0x9B0D, -/* 1498 */ 0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, 0x9D72, 0x9D6A, -/* 14A0 */ 0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56B7, 0x56B6, -/* 14A8 */ 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6, 0x5DC9, -/* 14B0 */ 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, 0x6727, 0x6AEC, -/* 14B8 */ 0x703E, 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662, 0x7665, -/* 14C0 */ 0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C, 0x7C43, -/* 14C8 */ 0x7C4D, 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D, 0x7E7C, 0x7E82, 0x7F4C, -/* 14D0 */ 0x8000, 0x81DA, 0x8266, 0x85FB, 0x85F9, 0x8611, 0x85FA, 0x8606, -/* 14D8 */ 0x860B, 0x8607, 0x860A, 0x8814, 0x8815, 0x8964, 0x89BA, 0x89F8, -/* 14E0 */ 0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F, 0x8B6B, 0x8D0F, 0x8D0D, -/* 14E8 */ 0x8E89, 0x8E81, 0x8E85, 0x8E82, 0x91B4, 0x91CB, 0x9418, 0x9403, -/* 14F0 */ 0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952, 0x9951, 0x99A8, 0x9A2B, -/* 14F8 */ 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D, 0x9E79, 0x9EB5, 0x9EE8, -/* 1500 */ 0x9F2F, 0x9F5F, 0x9F63, 0x9F61, 0x5137, 0x5138, 0x56C1, 0x56C0, -/* 1508 */ 0x56C2, 0x5914, 0x5C6C, 0x5DCD, 0x61FC, 0x61FE, 0x651D, 0x651C, -/* 1510 */ 0x6595, 0x66E9, 0x6AFB, 0x6B04, 0x6AFA, 0x6BB2, 0x704C, 0x721B, -/* 1518 */ 0x72A7, 0x74D6, 0x74D4, 0x7669, 0x77D3, 0x7C50, 0x7E8F, 0x7E8C, -/* 1520 */ 0x7FBC, 0x8617, 0x862D, 0x861A, 0x8823, 0x8822, 0x8821, 0x881F, -/* 1528 */ 0x896A, 0x896C, 0x89BD, 0x8B74, 0x8B77, 0x8B7D, 0x8D13, 0x8E8A, -/* 1530 */ 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, 0x91BA, 0x942E, 0x9433, 0x9435, -/* 1538 */ 0x943A, 0x9438, 0x9432, 0x942B, 0x95E2, 0x9738, 0x9739, 0x9732, -/* 1540 */ 0x97FF, 0x9867, 0x9865, 0x9957, 0x9A45, 0x9A43, 0x9A40, 0x9A3E, -/* 1548 */ 0x9ACF, 0x9B54, 0x9B51, 0x9C2D, 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, -/* 1550 */ 0x9DB8, 0x9E9D, 0x9EEF, 0x9F19, 0x9F5C, 0x9F66, 0x9F67, 0x513C, -/* 1558 */ 0x513B, 0x56C8, 0x56CA, 0x56C9, 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, -/* 1560 */ 0x61FF, 0x6524, 0x6B0A, 0x6B61, 0x7051, 0x7058, 0x7380, 0x74E4, -/* 1568 */ 0x758A, 0x766E, 0x766C, 0x79B3, 0x7C60, 0x7C5F, 0x807E, 0x807D, -/* 1570 */ 0x81DF, 0x8972, 0x896F, 0x89FC, 0x8B80, 0x8D16, 0x8D17, 0x8E91, -/* 1578 */ 0x8E93, 0x8F61, 0x9148, 0x9444, 0x9451, 0x9452, 0x973D, 0x973E, -/* 1580 */ 0x97C3, 0x97C1, 0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A, -/* 1588 */ 0x9C49, 0x9C31, 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, -/* 1590 */ 0x9F6A, 0x9F94, 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, -/* 1598 */ 0x66EC, 0x6B10, 0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, -/* 15A0 */ 0x7E96, 0x7E94, 0x81E2, 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, -/* 15A8 */ 0x908F, 0x9463, 0x9460, 0x9464, 0x9768, 0x986F, 0x995C, 0x9A5A, -/* 15B0 */ 0x9A5B, 0x9A57, 0x9AD3, 0x9AD4, 0x9AD1, 0x9C54, 0x9C57, 0x9C56, -/* 15B8 */ 0x9DE5, 0x9E9F, 0x9EF4, 0x56D1, 0x58E9, 0x652C, 0x705E, 0x7671, -/* 15C0 */ 0x7672, 0x77D7, 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862, 0x8B93, -/* 15C8 */ 0x8B92, 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, -/* 15D0 */ 0x9744, 0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, -/* 15D8 */ 0x9DFA, 0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, -/* 15E0 */ 0x7063, 0x7C6C, 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, -/* 15E8 */ 0x9470, 0x9871, 0x995E, 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, -/* 15F0 */ 0x8B9A, 0x9477, 0x97C9, 0x9A62, 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, -/* 15F8 */ 0x91C5, 0x947D, 0x947E, 0x947C, 0x9C77, 0x9C78, 0x9EF7, 0x8C54, -/* 1600 */ 0x947F, 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72, -/* End of table Total Length = 0x1714 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cns_14.ut b/mozilla/lib/libi18n/unicode/utotbl/cns_14.ut deleted file mode 100644 index da2d682ab17..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cns_14.ut +++ /dev/null @@ -1,2362 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 1 - srcBegin = 2121 - srcEnd = 217D - mappingOffset = 0000 - Mapping = - 4E28 4E36 4E3F 4E85 4E05 4E04 5182 5196 - 5338 5369 53B6 4E2A 4E87 4E49 51E2 4E46 - 4E8F 4EBC 4EBE 5166 51E3 5204 529C FFFD - 5902 590A 5B80 5DDB 5E7A 5E7F 5EF4 5F50 - 5F51 5F61 961D FFFD 4E63 4E62 4EA3 5185 - 4EC5 4ECF 4ECE 4ECC 5184 5186 FFFD FFFD - 51E4 5205 529E 529D 52FD 5300 533A FFFD - 5346 535D 5386 53B7 FFFD 53CC FFFD 53CE - 5721 FFFD 5E00 5F0C 6237 6238 6534 6535 - 65E0 FFFD 738D 4E97 4EE0 FFFD FFFD 4EE7 - FFFD 4EE6 FFFD FFFD FFFD FFFD 56D8 518B - 518C 5199 51E5 FFFD 520B -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 2222 - srcEnd = 227E - mappingOffset = 005D - Mapping = - 5304 5303 5307 FFFD 531E 535F 536D 5389 - 53BA 53D0 FFFD 53F6 53F7 53F9 FFFD 53F4 - FFFD FFFD 5724 5904 5918 5932 5930 5934 - FFFD 5975 FFFD 5B82 5BF9 5C14 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5E81 5E83 5F0D - 5F52 FFFD 5FCA 5FC7 6239 FFFD 624F 65E7 - 672F 6B7A 6C39 FFFD FFFD 6C37 6C44 6C45 - 738C 7592 7676 9093 9092 FFFD FFFD 4E21 - 4E20 4E22 4E68 4E89 4E98 4EF9 4EEF FFFD - FFFD 4EF8 4F06 4F03 4EFC 4EEE 4F16 FFFD - 4F28 4F1C 4F07 4F1A 4EFA 4F17 514A FFFD - 5172 FFFD 51B4 51B3 51B2 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 2322 - srcEnd = 237E - mappingOffset = 00BA - Mapping = - 51E8 FFFD 5214 520F 5215 5218 52A8 FFFD - 534B 534F FFFD 5350 FFFD 538B FFFD 53BE - FFFD 53D2 5416 53FF FFFD 5400 FFFD 5405 - 5413 5415 FFFD FFFD 56E3 5735 5736 5731 - 5732 58EE 5905 4E54 FFFD 5936 FFFD FFFD - FFFD 597A FFFD 5986 FFFD FFFD 5B86 5F53 - 5C18 FFFD 5C3D 5C78 FFFD FFFD FFFD FFFD - 5C80 FFFD 5E08 FFFD FFFD FFFD FFFD 5EF5 - 5F0E FFFD FFFD FFFD 5FD3 5FDA FFFD 5FDB - FFFD 620F 625D 625F 6267 6257 9F50 FFFD - 65EB 65EA FFFD 6737 FFFD 6732 6736 6B22 - 6BCE FFFD 6C58 6C51 6C77 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 2421 - srcEnd = 247E - mappingOffset = 0117 - Mapping = - 6C3C FFFD 6C5A FFFD 6C53 706F 7072 706E - FFFD FFFD 7073 72B1 72B2 FFFD 738F FFFD - FFFD FFFD 793C FFFD 808D 808E FFFD 827B - FFFD 8D71 8FB9 9096 909A FFFD 4E24 4E71 - FFFD 4E9C 4F45 4F4A 4F39 4F37 FFFD 4F32 - 4F42 FFFD 4F44 4F4B FFFD 4F40 4F35 4F31 - 5151 FFFD 5150 514E FFFD FFFD 519D FFFD - 51B5 51B8 51EC 5223 5227 5226 521F 522B - 5220 52B4 52B3 FFFD 5325 533B 5374 FFFD - FFFD FFFD FFFD FFFD 544D FFFD FFFD 543A - FFFD FFFD 5444 544C 5423 541A 5432 544B - 5421 FFFD 5434 5449 5450 5422 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 2521 - srcEnd = 257D - mappingOffset = 0175 - Mapping = - 543F 5451 545A 542F FFFD 56E9 56F2 56F3 - 56EF 56ED 56EC 56E6 5748 FFFD 5744 573F - 573C 5753 5756 FFFD 575F 5743 5758 5757 - FFFD FFFD FFFD 5746 FFFD 573D FFFD 5742 - 5754 5755 58F1 58F2 58F0 590B 9EA6 56F1 - 593D FFFD 5994 598C FFFD 599C FFFD FFFD - 599F FFFD 599B FFFD 5989 599A FFFD 6588 - FFFD 5B8D FFFD 5BFE 5BFF 5BFD 5C2B FFFD - 5C84 5C8E 5C9C FFFD FFFD 5C85 5DF5 5E09 - FFFD FFFD 5E0B FFFD 5E92 5E90 5F03 FFFD - 5F1E 5F63 FFFD 5FE7 5FFE 5FE6 5FDC 5FCE - FFFD 5FFC 5FDF 5FEC 5FF6 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 2621 - srcEnd = 267E - mappingOffset = 01D2 - Mapping = - 5FF2 5FF0 5FF9 FFFD 6213 FFFD FFFD 623B - 623C 6282 FFFD FFFD FFFD 6278 628B FFFD - 629E 62A5 629B 629C 6299 628D 6285 629D - 6275 FFFD FFFD FFFD 65F6 FFFD FFFD FFFD - 66F5 675B FFFD 6754 6752 FFFD 6758 6744 - 674A 6761 FFFD 6C7F 6C91 6C9E FFFD 6C6E - 6C7C 6C9F 6C75 FFFD 6C56 6CA2 6C79 FFFD - 6CA1 FFFD 6CAA 6CA0 FFFD 7079 7077 707E - FFFD 7075 707B 7264 FFFD 72BB 72BC 72C7 - 72B9 72BE 72B6 FFFD FFFD 7398 FFFD FFFD - FFFD FFFD 7593 7680 FFFD 7683 76C0 76C1 - FFFD FFFD 77F4 77F5 FFFD 7ACC -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2721 - srcEnd = 277D - mappingOffset = 0230 - Mapping = - 7ACD 7CFA 809F 8091 8097 8094 FFFD 8286 - 828C FFFD 8295 FFFD 866C FFFD 8FB5 8FBE - 8FC7 FFFD 8FC1 90A9 90A4 FFFD FFFD FFFD - 90A8 9627 9626 962B 9633 9634 9629 4E3D - FFFD 4E9D 4F93 4F8A FFFD FFFD 4F6D 4F8E - 4FA0 4FA2 4FA1 4F9F 4FA3 FFFD 4F72 FFFD - 4F8C 5156 FFFD FFFD 5190 FFFD FFFD FFFD - 51ED 51FE 522F FFFD 523C 5234 5239 52B9 - 52B5 52BF 5355 FFFD 5376 537A 5393 FFFD - 53C1 53C2 53D5 5485 FFFD 545F 5493 5489 - 5479 9EFE 548F 5469 546D FFFD 5494 546A - 548A FFFD 56FD 56FB 56F8 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 2821 - srcEnd = 287E - mappingOffset = 028D - Mapping = - 56FC 56F6 5765 5781 5763 5767 FFFD 576E - 5778 577F FFFD FFFD 58F3 594B 594C FFFD - FFFD FFFD 59AD FFFD 59C4 FFFD 59C2 59B0 - FFFD FFFD FFFD FFFD 59BF FFFD 59C9 59B8 - 59AC FFFD FFFD FFFD 59B7 59D7 FFFD 5B60 - FFFD 5B96 5B9E 5B94 5B9F 5B9D FFFD 5C00 - 5C19 FFFD FFFD 5C49 5C4A FFFD 5CBB 5CC1 - FFFD FFFD FFFD 5CB9 5C9E 5CB4 5CBA 5DF6 - 5E13 5E12 5E77 FFFD 5E98 FFFD 5E99 5E9D - 5EF8 FFFD 5EF9 FFFD 5F06 5F21 FFFD 5F25 - 5F55 FFFD FFFD FFFD 5F84 5F83 6030 6007 - FFFD 6036 FFFD FFFD FFFD 5FE9 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 2921 - srcEnd = 297C - mappingOffset = 02EB - Mapping = - 603D 6008 FFFD FFFD 62BA 62B2 FFFD 62B7 - 62E4 62A7 FFFD FFFD FFFD 62D5 62E1 62DD - 62A6 62C1 62C5 62C0 62DF 62E0 62DE FFFD - 6589 FFFD 65A6 65BA FFFD 65FF FFFD 6617 - 6618 6601 65FE FFFD 670C FFFD 676B 6796 - 6782 678A FFFD 67A3 FFFD 67A2 678F FFFD - 67F9 6780 6B26 6B27 6B68 6B69 FFFD 6B81 - 6BB4 6BD1 FFFD FFFD 6C1C FFFD FFFD FFFD - FFFD FFFD 6C97 6C6C 6CDF FFFD 6CEA FFFD - 6CE4 6CD8 6CB2 6CCE 6CC8 FFFD 708B 7088 - 7090 708F FFFD 7087 7089 708D 7081 FFFD - 708C FFFD FFFD 7240 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 2A21 - srcEnd = 2A7E - mappingOffset = 0347 - Mapping = - 7265 7266 7268 FFFD FFFD 72CD 72D3 72DB - FFFD 72CF 73A7 73A3 739E FFFD 73AF FFFD - FFFD 73AA 739C FFFD 7542 7544 753B 7541 - FFFD 759B 759E FFFD 79C4 79C3 79C6 FFFD - FFFD 79C7 FFFD 79CA FFFD FFFD 7ACF 7C76 - 7C74 7CFF 7CFC FFFD FFFD 7F59 80A8 FFFD - FFFD 80B0 FFFD 80B3 FFFD 80A4 80B6 80A7 - 80AC FFFD 80A6 5367 820E 82C4 833E 829C - FFFD FFFD FFFD FFFD FFFD 82AA FFFD 82C9 - FFFD FFFD 82A6 82B2 FFFD FFFD FFFD 8FCC - 8FD9 8FCA 8FD8 8FCF 90B7 FFFD 90AD 90B9 - 9637 FFFD 9641 963E 96B6 9751 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2B21 - srcEnd = 2B7C - mappingOffset = 03A5 - Mapping = - 9763 4E57 4E79 4EB2 4EB0 4EAF 4EB1 4FD2 - 4FD5 FFFD 4FBE 4FB8 4FB0 4FB1 4FC8 FFFD - FFFD 4FC6 4FCC 4FE5 4FE3 4FB4 516A FFFD - 519F FFFD 51C1 FFFD 51C2 51C3 5245 5248 - FFFD FFFD 524F FFFD FFFD 52C5 52CA 52C4 - 5327 5358 537D FFFD 53DD 53DC 53DA 53D9 - 54B9 FFFD 54D0 54B4 54CA FFFD 54A3 54DA - 54A4 FFFD 54B2 549E 549F 54B5 FFFD FFFD - 54CD FFFD 54CC FFFD 5700 57AC 5791 578E - 578D 5792 57A1 5790 57A6 57A8 FFFD 579C - 5796 57A7 FFFD FFFD FFFD FFFD 58F5 FFFD - 5909 5908 FFFD 5952 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2C21 - srcEnd = 2C7E - mappingOffset = 0401 - Mapping = - 59DF FFFD 59EB 59EF 59F0 59D5 5A0D 5A04 - 59F9 5A02 59F8 59E2 59D9 59E7 5B6A FFFD - FFFD 5BAB FFFD 5C1B 5C2F FFFD 663C FFFD - FFFD FFFD 5CD1 5CDC 5CE6 5CE1 5CCD FFFD - 5CE2 5CDD 5CE5 5DFB 5DFA 5E1E FFFD 5EA1 - FFFD FFFD 5EFC 5EFB 5F2F FFFD FFFD 5F66 - FFFD FFFD FFFD 605C FFFD 604E 6051 FFFD - FFFD 6023 6031 607C 6052 FFFD 6060 604A - 6061 FFFD 6218 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 631F 6317 62EA 6321 6304 6305 - FFFD 6531 6544 6540 FFFD 6542 65BE FFFD - 6629 661B FFFD 6623 662C 661A -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2D21 - srcEnd = 2D7E - mappingOffset = 045F - Mapping = - 6630 663B 661E 6637 6638 FFFD 670E FFFD - FFFD 67E8 67D6 FFFD 67C7 67BC 6852 67BF - 67D5 67FE 8363 67FB FFFD 67B1 6801 6805 - 6800 67D7 FFFD 6B2A 6B6B FFFD FFFD FFFD - FFFD 6BE1 FFFD FFFD 6D23 6CFF 6D14 6D05 - 6D13 6D06 6D21 FFFD 6D15 6CAF 6CF4 6D02 - 6D45 FFFD 6D26 FFFD 6D44 FFFD 6D24 70A5 - FFFD 70A3 FFFD 70A2 70BB 70A0 70AA FFFD - FFFD 70A8 70B6 70B2 70A7 FFFD FFFD 70B9 - 722E FFFD 723C FFFD 726D FFFD FFFD 72E7 - 72ED FFFD 72EC 72E5 72E2 FFFD 73C4 73BD - 73CF 73C9 73C1 73D0 FFFD 73CE -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2E21 - srcEnd = 2E7E - mappingOffset = 04BD - Mapping = - 74ED 74EB FFFD 74EF 7549 7550 7546 754A - FFFD 754D 75A6 FFFD FFFD FFFD 75A8 FFFD - FFFD 76C7 76FF FFFD 76FD 77E6 780A FFFD - 7804 780B 7807 FFFD 7815 7808 FFFD 79D3 - 79D4 79D0 79D7 7A7C FFFD FFFD 7A7D 7A83 - 7A82 FFFD 7AD4 7AD5 7AD3 7AD0 7AD2 7AFE - 7AFC 7C77 7C7C 7C7B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7F8F 80D3 FFFD 80CB - 80D2 FFFD 8109 80E2 80DF 80C6 FFFD 8224 - 82F7 82D8 82DD FFFD FFFD 82F8 82FC FFFD - FFFD 82E9 FFFD 82EE FFFD 82D0 830E 82E2 - 830B 82FD 5179 8676 FFFD 8678 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 2F23 - srcEnd = 2F7E - mappingOffset = 051B - Mapping = - 8675 867D FFFD 8842 8866 FFFD 898C 8A05 - FFFD 8A06 FFFD 8C9F FFFD 8FF1 8FE7 8FE9 - 8FEF 90C2 90BC FFFD 90C6 90C0 FFFD FFFD - 90CD 90C9 FFFD 90C4 FFFD 9581 FFFD 9CEC - 5032 4FF9 501D 4FFF 5004 4FF0 5003 FFFD - 5002 4FFC 4FF2 5024 5008 5036 502E FFFD - 5010 5038 5039 4FFD 5056 4FFB 51A3 51A6 - 51A1 FFFD FFFD 51C7 51C9 5260 5264 5259 - 5265 5267 5257 5263 FFFD 5253 FFFD 52CF - FFFD 52CE 52D0 52D1 52CC FFFD FFFD FFFD - 550D 54F4 FFFD 5513 54EF 54F5 54F9 5502 - 5500 FFFD FFFD 5518 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 3021 - srcEnd = 307E - mappingOffset = 0577 - Mapping = - 54F0 54F6 FFFD FFFD 5519 FFFD 5705 57C9 - FFFD 57B7 57CD FFFD FFFD FFFD 57BE 57BB - FFFD 57DB 57C8 57C4 57C5 57D1 57CA 57C0 - FFFD FFFD 5A21 5A2A FFFD 5A1D FFFD 5A0B - FFFD FFFD FFFD FFFD 5A22 FFFD FFFD 5A24 - FFFD 5A14 5A31 FFFD 5A2F 5A1A 5A12 FFFD - FFFD 5A26 FFFD FFFD 5BBC 5BBB 5BB7 5C05 - 5C06 5C52 5C53 FFFD FFFD 5CFA 5CEB FFFD - 5CF3 5CF5 5CE9 5CEF FFFD 5E2A 5E30 5E2E - 5E2C 5E2F 5EAF 5EA9 FFFD 5EFD 5F32 5F8E - 5F93 5F8F 604F 6099 FFFD 607E FFFD 6074 - 604B 6073 6075 FFFD FFFD 6056 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 3121 - srcEnd = 317D - mappingOffset = 05D5 - Mapping = - 60A9 608B 60A6 FFFD 6093 60AE 609E 60A7 - 6245 FFFD FFFD 632E FFFD 6352 6330 635B - FFFD 6319 631B FFFD 6331 635D 6337 6335 - 6353 FFFD 635C 633F 654B FFFD FFFD 658B - FFFD 659A 6650 6646 664E 6640 FFFD 664B - 6648 FFFD 6660 6644 664D FFFD 6837 6824 - FFFD FFFD 681B 6836 FFFD 682C 6819 6856 - 6847 683E 681E FFFD 6815 6822 6827 6859 - 6858 6855 6830 6823 6B2E 6B2B 6B30 6B6C - FFFD 6B8B FFFD 6BE9 6BEA 6BE5 6D6B FFFD - FFFD 6D73 6D57 FFFD FFFD 6D5D 6D56 6D8F - 6D5B 6D1C 6D9A 6D9B 6D99 -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 3221 - srcEnd = 327C - mappingOffset = 0632 - Mapping = - 6D81 6D71 FFFD FFFD 6D72 6D5C 6D96 70C4 - 70DB 70CC 70D0 70E3 70DF FFFD 70D6 70EE - 70D5 FFFD FFFD FFFD FFFD 727A FFFD 72F5 - 7302 FFFD FFFD 73E2 73EC 73D5 73F9 73DF - 73E6 FFFD FFFD FFFD FFFD 73E4 73E1 74F3 - FFFD FFFD FFFD FFFD 7556 7555 7558 7557 - 755E 75C3 FFFD FFFD 75B4 FFFD 75B1 FFFD - FFFD 76CB 76CC 772A FFFD 7716 770F FFFD - FFFD 773F 772B 770E 7724 FFFD 7721 7718 - 77DD FFFD FFFD 7824 7836 FFFD 7958 7959 - FFFD 7962 79DA 79D9 FFFD 79E1 79E5 79E8 - 79DB FFFD 79E2 79F0 -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = 3323 - srcEnd = 337C - mappingOffset = 068E - Mapping = - 7ADA 7ADD FFFD 7ADB 7ADC FFFD FFFD 7B0D - 7B0B 7B14 7C8E 7C86 FFFD 7C87 7C83 7C8B - FFFD FFFD FFFD FFFD 7D24 FFFD FFFD FFFD - 7D25 7F62 7F93 7F99 7F97 FFFD FFFD 7FC4 - 7FC6 800A FFFD FFFD 8040 803C 803B 80F6 - 80FF 80EE 8104 8103 8107 FFFD FFFD 80F7 - FFFD FFFD 822D FFFD 8227 8229 831F 8357 - FFFD FFFD FFFD FFFD 8321 FFFD FFFD 8318 - 8358 FFFD FFFD FFFD FFFD FFFD 8684 869F - 869B 8689 86A6 8692 868F 86A0 884F 8878 - 887A 886E 887B 8884 8873 FFFD FFFD 8A0D - 8A0B 8A19 -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 3425 - srcEnd = 347D - mappingOffset = 06E8 - Mapping = - 8FF9 9009 9008 FFFD 90DE 9151 FFFD FFFD - 91DB 91DF 91DE 91D6 91E0 9585 9660 9659 - FFFD 9656 FFFD FFFD 96BD FFFD FFFD 5042 - 5059 FFFD 5044 5066 5052 5054 5071 5050 - 507B 507C 5058 FFFD FFFD 5079 506C 5078 - 51A8 51D1 51CF 5268 5276 52D4 FFFD 53A0 - 53C4 FFFD 5558 554C 5568 FFFD 5549 FFFD - FFFD 555D 5529 FFFD 5554 5553 FFFD 555A - FFFD 553A 553F 552B 57EA FFFD 57EF FFFD - FFFD 57DD 57FE FFFD 57DE 57E6 FFFD 57E8 - 57FF 5803 58F7 68A6 591F FFFD 595B 595D - 595E -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 3522 - srcEnd = 357D - mappingOffset = 0741 - Mapping = - 5A2B FFFD 5A3B FFFD FFFD 5A61 5A3A 5A6E - 5A4B 5A6B FFFD FFFD 5A45 5A4E 5A68 5A3D - 5A71 5A3F 5A6F 5A75 FFFD 5A73 5A2C 5A59 - 5A54 5A4F 5A63 FFFD FFFD 5BC8 FFFD 5BC3 - FFFD 5C5B 5C61 FFFD 5D21 5D0A 5D09 FFFD - 5D2C 5D08 FFFD FFFD 5D2A 5D15 FFFD 5D10 - 5D13 FFFD 5D2F 5D18 FFFD 5DE3 5E39 5E35 - 5E3A 5E32 FFFD FFFD FFFD FFFD 5EBB 5EBA - 5F34 5F39 FFFD FFFD FFFD FFFD 6098 FFFD - 60D0 FFFD FFFD FFFD 60D7 60AA FFFD 60A1 - 60A4 FFFD 60EE FFFD 60E7 FFFD FFFD 60DE - FFFD FFFD 637E 638B -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 3622 - srcEnd = 367D - mappingOffset = 079D - Mapping = - 6379 6386 6393 FFFD 6373 636A FFFD 636C - FFFD 637F FFFD 63B2 63BA FFFD FFFD 6366 - 6374 FFFD 655A FFFD 654E 654D 658D 658E - 65AD FFFD 65C7 65CA FFFD 65C9 FFFD 65E3 - 6657 FFFD 6663 6667 671A 6719 6716 FFFD - FFFD 689E 68B6 6898 6873 FFFD 689A 688E - 68B7 68DB 68A5 686C 68C1 6884 FFFD FFFD - 6895 687A 6899 FFFD 68B8 68B9 6870 FFFD - 6B35 FFFD 6B90 6BBB 6BED FFFD FFFD FFFD - 6DC1 6DC3 6DCE FFFD FFFD 6DAD 6E04 FFFD - 6DB9 FFFD 6DE7 FFFD 6E08 6E06 FFFD 6E0A - 6DB0 FFFD 6DF8 6E0C -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = 3721 - srcEnd = 377E - mappingOffset = 07F9 - Mapping = - 6DB1 FFFD 6E02 6E07 6E09 6E01 6E17 6DFF - 6E12 FFFD FFFD 7103 7107 7101 70F5 70F1 - 7108 70F2 710F FFFD 70FE FFFD FFFD FFFD - 731A 7310 730E 7402 73F3 FFFD FFFD 73FB - FFFD FFFD FFFD 751B 7523 7561 7568 FFFD - 7567 75D3 FFFD FFFD 7690 FFFD FFFD 76D5 - 76D7 76D6 7730 FFFD 7726 FFFD 7740 FFFD - 771E FFFD FFFD FFFD 7847 FFFD 784B 7851 - 784F 7842 7846 FFFD 796E 796C 79F2 FFFD - 79F1 79F5 79F3 79F9 FFFD FFFD FFFD 7A9A - 7A93 7A91 7AE1 FFFD FFFD 7B21 7B1C 7B16 - 7B17 7B36 7B1F FFFD 7C93 7C99 -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 3821 - srcEnd = 387E - mappingOffset = 0857 - Mapping = - 7C9A 7C9C FFFD 7D49 FFFD 7D34 7D37 FFFD - 7D2D FFFD 7D4C FFFD FFFD 7D48 FFFD FFFD - 7F3B FFFD FFFD FFFD FFFD 8008 801A FFFD - 801D FFFD 8049 8045 8044 7C9B FFFD FFFD - 812A 812E FFFD FFFD 8131 FFFD 811A 8134 - 8117 FFFD FFFD FFFD 831D 8371 8384 8380 - 8372 83A1 FFFD 8379 8391 FFFD 839F 83AD - FFFD FFFD 8323 FFFD 8385 839C 83B7 8658 - 865A FFFD 8657 86B2 FFFD 86AE FFFD FFFD - FFFD 8845 889C 8894 88A3 888F 88A5 88A9 - 88A6 888A 88A0 8890 8992 8991 8994 FFFD - 8A26 8A32 8A28 FFFD FFFD 8A1C -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 3922 - srcEnd = 397E - mappingOffset = 08B5 - Mapping = - 8A2B 8A20 FFFD 8A29 FFFD FFFD FFFD 8A21 - 8C3A FFFD 8C5B 8C58 8C7C FFFD 8CA6 8CAE - 8CAD 8D65 FFFD 8D7E FFFD 8D7C 8D7F 8D7A - 8DBD FFFD FFFD 8DC0 8DBB 8EAD 8EAF 8ED6 - FFFD FFFD FFFD FFFD FFFD 8ED9 FFFD FFFD - 9012 900E 9025 FFFD 9013 90EE FFFD 90AB - 90F7 FFFD 9159 9154 91F2 91F0 91E5 91F6 - FFFD FFFD 9587 FFFD 965A FFFD FFFD 966E - FFFD FFFD FFFD 9679 FFFD 98E1 98E6 FFFD - 9EC4 9ED2 4E80 FFFD 4E81 508F 5097 5088 - 5089 FFFD FFFD 5081 5160 FFFD FFFD 5E42 - 51D3 FFFD FFFD 51D2 51D6 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 3A21 - srcEnd = 3A7E - mappingOffset = 0912 - Mapping = - 5273 FFFD 5270 FFFD FFFD FFFD 53A8 53A6 - 53C5 5597 55DE FFFD FFFD 5596 55B4 FFFD - 5585 FFFD 559B 55A0 FFFD 5559 FFFD 5586 - FFFD FFFD 55AF 557A FFFD FFFD FFFD 559E - FFFD 55A9 570F 570E 581A FFFD 581F FFFD - 583C 5818 583E 5826 FFFD 583A FFFD 5822 - FFFD 58FB 5963 5964 FFFD 5AA8 5AA3 5A82 - 5A88 5AA1 5A85 5A98 FFFD 5A99 FFFD 5A89 - 5A81 5A96 5A80 FFFD FFFD 5A91 FFFD FFFD - FFFD FFFD 5ACF FFFD FFFD FFFD FFFD FFFD - FFFD 5A87 5AA0 FFFD 5A79 FFFD 5A86 5AAB - 5AAA 5AA4 5A8D 5A7E FFFD 5BD5 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 3B24 - srcEnd = 3B7E - mappingOffset = 0970 - Mapping = - 5C1E 5C5F 5C5E 5D44 5D3E FFFD 5D48 5D1C - FFFD 5D5B 5D4D FFFD FFFD 5D57 FFFD 5D53 - 5D4F FFFD 5D3B 5D46 FFFD FFFD 5E46 5E47 - FFFD 5E48 5EC0 5EBD 5EBF FFFD 5F11 FFFD - 5F3E 5F3B FFFD 5F3A FFFD FFFD FFFD 5FA7 - FFFD 60EA FFFD 6107 6122 610C FFFD FFFD - 60B3 60D6 60D2 FFFD 60E3 60E5 60E9 FFFD - FFFD 6111 60FD FFFD FFFD 611E 6120 6121 - 621E FFFD 63E2 63DE 63E6 FFFD FFFD FFFD - FFFD 63F8 FFFD 63FE 63C1 63BF 63F7 63D1 - 655F 6560 6561 FFFD FFFD 65D1 FFFD FFFD - 667D 666B 667F -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 3C23 - srcEnd = 3C7D - mappingOffset = 09CB - Mapping = - 6673 6681 666D 6669 FFFD FFFD 671E 68ED - FFFD FFFD FFFD FFFD 6903 FFFD 68FE 68E5 - 691E 6902 FFFD FFFD 6909 68CA 6900 FFFD - 6901 6918 68E2 68CF FFFD 692E 68C5 68FF - FFFD 691C 68C3 FFFD 6B6F FFFD 6B6E FFFD - 6BBE FFFD 6BF4 6C2D FFFD 6DB6 6E75 6E1E - FFFD 6E18 FFFD 6E48 FFFD 6E4F FFFD 6E42 - 6E6A 6E70 6DFE FFFD FFFD 6E6D FFFD 6E7B - 6E7E 6E59 FFFD 6E57 FFFD 6E80 6E50 FFFD - 6E29 6E76 6E2A 6E4C 712A FFFD 7135 712C - 7137 711D FFFD FFFD 7138 FFFD 7134 712B - 7133 7127 7124 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 3D21 - srcEnd = 3D7E - mappingOffset = 0A26 - Mapping = - 712D 7232 7283 7282 7287 7306 7324 7338 - 732A 732C 732B FFFD 732F 7328 7417 FFFD - FFFD 7419 7438 FFFD 741F 7414 743C 73F7 - 741C 7415 7418 7439 74F9 7524 FFFD FFFD - FFFD 756E 756D 7571 758E FFFD 75E5 FFFD - FFFD FFFD FFFD 7694 76B3 FFFD 76D9 FFFD - 7748 7749 7743 FFFD FFFD 7742 77DF FFFD - 7863 7876 FFFD 785F 7866 7966 7971 FFFD - FFFD 7976 7984 7975 79FF 7A07 FFFD 7A0E - 7A09 FFFD FFFD FFFD FFFD FFFD FFFD 7AE7 - 7AE2 7B55 FFFD FFFD 7B43 7B57 7B6C 7B42 - 7B53 FFFD 7B41 FFFD FFFD 7CA7 -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 3E21 - srcEnd = 3E7E - mappingOffset = 0A84 - Mapping = - 7CA0 7CA6 7CA4 7D74 FFFD 7D59 FFFD 7D60 - 7D57 7D6C 7D7E 7D64 FFFD 7D5A 7D5D FFFD - FFFD FFFD 7D76 7D4D 7D75 FFFD 7FD3 7FD6 - FFFD FFFD 8060 804E 8145 813B FFFD 8148 - 8142 8149 8140 8114 8141 FFFD 81EF 81F6 - 8203 FFFD 83ED FFFD 83DA 8418 83D2 8408 - FFFD 8400 FFFD FFFD FFFD 8417 8346 8414 - 83D3 8405 841F 8402 8416 83CD 83E6 FFFD - 865D 86D5 86E1 FFFD FFFD FFFD FFFD 86EE - 8847 8846 FFFD FFFD 88BB FFFD 88BF 88B4 - FFFD 88B5 FFFD 899A 8A43 FFFD FFFD 8A5A - FFFD FFFD FFFD 8A35 8A38 8A42 -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 3F21 - srcEnd = 3F7E - mappingOffset = 0AE2 - Mapping = - 8A49 8A5D 8A4B 8A3D FFFD FFFD FFFD FFFD - 8C60 8C5E 8C7F 8C7E 8C83 FFFD 8CB1 8D87 - FFFD FFFD 8D88 8D83 FFFD FFFD 8D86 8D8B - 8D82 8DCA 8DD2 FFFD FFFD 8DD4 8DC9 8EB0 - FFFD FFFD FFFD 8EF2 8EE4 8EF3 8EEA FFFD - 8EFD FFFD 8F9D 902B 902A FFFD 9028 9029 - 902C FFFD FFFD 903A 9030 9037 903B FFFD - 910A FFFD FFFD FFFD 91FE 9220 FFFD 920B - FFFD 9218 9222 FFFD 921B 9208 FFFD 920E - 9213 FFFD FFFD 9595 FFFD FFFD FFFD 968C - 967B 967F 9681 FFFD 9682 FFFD FFFD FFFD - FFFD FFFD 96EE 96ED FFFD 96EC -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 4021 - srcEnd = 407D - mappingOffset = 0B40 - Mapping = - 975F 976F FFFD 976D FFFD FFFD FFFD FFFD - FFFD FFFD 98F0 FFFD FFFD FFFD 9AA9 FFFD - FFFD 9AE0 4EB7 FFFD FFFD 50CC 50BC FFFD - 50AA 50B9 FFFD 50AB 50C3 50CD 517E 527E - 5279 FFFD FFFD 52E1 52E0 52E7 5380 53AB - 53AA 53A9 53E0 55EA FFFD 55D7 FFFD FFFD - 55C1 5715 FFFD 586C FFFD 585C 5850 5861 - 586A 5869 5856 5860 5866 585F 5923 5966 - 5968 FFFD FFFD 5ACE FFFD 5AC5 5AC3 FFFD - FFFD 5AD0 FFFD FFFD FFFD FFFD FFFD FFFD - 5B74 5B76 5BDC 5BD7 5BDA 5BDB FFFD 5C20 - 5D6D 5D66 FFFD 5D64 5D6E -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 4121 - srcEnd = 417E - mappingOffset = 0B9D - Mapping = - 5D60 5F42 5F5A 5F6E FFFD FFFD 6130 613A - 612A 6143 6119 6131 FFFD 613D FFFD FFFD - FFFD 6408 6432 6438 FFFD 6431 FFFD 6419 - FFFD 6411 FFFD FFFD 6429 641D FFFD FFFD - FFFD 643C FFFD 6446 6447 FFFD FFFD 643A - 6407 FFFD 656B FFFD 6570 656D FFFD 65E4 - 6693 FFFD FFFD FFFD FFFD 668F FFFD FFFD - 6692 FFFD 668E FFFD 6946 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 6931 FFFD FFFD 693E - FFFD 697C 6943 FFFD 6973 FFFD 6955 FFFD - FFFD 6985 694D 6950 6947 6967 6936 6964 - 6961 FFFD 697D 6B44 6B40 6B71 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 4221 - srcEnd = 427E - mappingOffset = 0BFB - Mapping = - 6B73 6B9C FFFD FFFD FFFD 6BC1 FFFD 6BFA - 6C31 6C32 FFFD FFFD 6EB8 6EA8 FFFD 6E91 - 6EBB FFFD 6E9A FFFD FFFD 6EA9 FFFD FFFD - 6EB5 6E6C 6EE8 FFFD 6EDD 6EDA 6EE6 6EAC - FFFD FFFD FFFD 6ED9 6EE3 6EE9 6EDB FFFD - 716F FFFD FFFD 7148 FFFD 714A 716B FFFD - 714F 7157 7174 FFFD FFFD FFFD 7145 7151 - 716D FFFD 7251 7250 724E FFFD 7341 FFFD - 732E 7346 FFFD 7427 FFFD 7448 7453 743D - FFFD 745D 7456 FFFD 741E 7447 7443 7458 - 7449 FFFD 744C 7445 743E FFFD 7501 751E - FFFD FFFD 757A 75EE 7602 7697 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 4321 - srcEnd = 437E - mappingOffset = 0C59 - Mapping = - 7698 FFFD FFFD FFFD 775D 7764 7753 7758 - 7882 7890 788A FFFD 787A 787D FFFD 788B - 7878 FFFD FFFD 788D 7888 7892 7881 797E - 7983 FFFD FFFD FFFD 7980 FFFD FFFD FFFD - 7A0F FFFD FFFD 7A1D FFFD 7AA1 7AA4 FFFD - 7AE9 7AEA FFFD 7B62 7B6B FFFD 7B5E FFFD - 7B79 FFFD FFFD 7B6F 7B68 FFFD FFFD 7CAE - FFFD FFFD FFFD 7CB0 FFFD 7D90 FFFD 7D8A - FFFD 7D8B 7D99 7D95 FFFD 7D87 7D78 7D97 - 7D89 7D98 FFFD FFFD FFFD 7FA3 FFFD FFFD - FFFD 7FDD 8057 FFFD 8163 816A 816C FFFD - FFFD FFFD 815D 8175 FFFD 815F -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 4422 - srcEnd = 447E - mappingOffset = 0CB7 - Mapping = - 817D 816D FFFD FFFD 8241 844F 8484 FFFD - 847F FFFD 8448 842A 847B 8472 8464 842E - 845C 8453 FFFD 8441 84C8 FFFD 8462 8480 - 843E 8483 8471 FFFD 844A 8455 8458 FFFD - FFFD FFFD 86FC 86FD 8715 FFFD 8716 86FF - FFFD FFFD FFFD 8858 88CF 88E0 FFFD FFFD - FFFD FFFD 89E7 8A6A 8A80 FFFD 8A6F 8A65 - FFFD 8A78 8A7D 8A88 FFFD FFFD 8A64 8A7E - FFFD 8A67 8C63 8C88 FFFD 8CCD FFFD 8CC9 - FFFD 8DED FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8EB1 FFFD FFFD 8F04 8F9E 8FA0 9043 - 9046 9048 9045 9040 904C -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 4523 - srcEnd = 457E - mappingOffset = 0D14 - Mapping = - 910C 9113 9115 FFFD 916B 9167 925D 9255 - 9235 FFFD 9259 922F 923C 928F 925C 926A - 9262 925F 926B 926E 923B 9244 9241 959A - FFFD 9599 FFFD FFFD FFFD 968F FFFD 9696 - FFFD FFFD FFFD 96F4 96FC FFFD 9755 FFFD - 9779 FFFD FFFD FFFD 97EE 97F5 FFFD 980B - FFFD 98F3 FFFD FFFD 98F7 98FF 98F5 FFFD - 98EC 98F1 FFFD FFFD 999A FFFD 9AE2 9B3D - 9B5D 9CE8 FFFD 9CEB 9CEF 9CEE 9E81 9F14 - 50D0 50D9 50DC 50D8 FFFD 50E1 50EB FFFD - FFFD 50F4 50E2 50DE FFFD FFFD FFFD 51F4 - FFFD FFFD FFFD 52ED -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 4621 - srcEnd = 467E - mappingOffset = 0D70 - Mapping = - 52EA FFFD 5332 FFFD 53AE 53B0 FFFD 55FB - 5603 560B FFFD 5607 FFFD 55F8 FFFD 5628 - 561E FFFD 5618 5611 5651 5605 5717 5892 - FFFD 588C FFFD 5878 5884 5873 58AD 5897 - 5895 5877 5872 5896 588D 5910 FFFD 596C - FFFD 5AE7 FFFD 5AE4 FFFD FFFD 5AEF 5626 - FFFD FFFD 5AF0 5D7B FFFD 5D83 FFFD FFFD - 5D8B 5D8C FFFD 5D78 5E52 FFFD FFFD 5ED0 - 5ECF FFFD 5FB3 5FB4 FFFD FFFD FFFD 617B - FFFD 616F 6181 613C 6142 6138 6133 FFFD - 6160 6169 617D 6186 622C 6228 FFFD 644C - FFFD 6457 647C FFFD FFFD 6455 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 4721 - srcEnd = 477E - mappingOffset = 0DCE - Mapping = - 6462 6471 646A 6456 643B 6481 FFFD 644F - 647E 6464 FFFD FFFD FFFD FFFD FFFD 6571 - FFFD FFFD 66A5 669A 669C FFFD 66A6 FFFD - 66A4 698F 69C5 69C8 6992 69B2 FFFD FFFD - FFFD 69E3 69C0 69D6 69D1 699F 69A2 69D2 - FFFD FFFD FFFD 69E1 69D5 699D FFFD FFFD - 6998 FFFD 6B74 6BA1 FFFD 6EF0 6EF3 FFFD - FFFD 6F1B 6F0C 6F1D 6F34 6F28 6F17 FFFD - 6F44 6F42 6F04 6F11 6EFA 6F4A 7191 718E - FFFD 718B 718D 717F 718C 717E 717C 7183 - FFFD 7188 FFFD FFFD 7294 FFFD 7355 7353 - 734F 7354 746C 7465 7466 7461 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 4821 - srcEnd = 4879 - mappingOffset = 0E2C - Mapping = - 746B 7468 7476 FFFD 7460 FFFD 7474 7506 - 760E FFFD 7607 FFFD FFFD 76B9 FFFD 76B7 - 76E2 FFFD 7774 7777 7776 7775 FFFD 7778 - 7771 FFFD 777A 715B 777B 78A6 78AE 78B8 - FFFD FFFD FFFD 78B1 78AF FFFD 7989 7987 - FFFD FFFD 7A29 FFFD 7A2A FFFD 7A2D 7A2C - FFFD 7A32 FFFD 7AEC 7AF0 7B81 7B9E 7B83 - FFFD 7B92 FFFD 7BA3 7B9F 7B93 FFFD 7B86 - 7CB8 7CB7 FFFD FFFD FFFD FFFD FFFD 7DC8 - 7DB6 FFFD 7DD1 FFFD 7DA8 7DAB FFFD 7DB3 - 7DCD FFFD 7DCF 7DA4 FFFD FFFD 7F41 7F6F - 7F71 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 4922 - srcEnd = 497D - mappingOffset = 0E85 - Mapping = - 8023 805B FFFD 8061 805F 8181 FFFD FFFD - 8184 8213 FFFD 824A 824C FFFD FFFD FFFD - 84BD 8495 FFFD 8492 84C3 FFFD 8496 84A5 - 84B5 84B3 84A3 84E4 84D8 84D5 FFFD 84B7 - 84AD 84DA 8493 8736 FFFD FFFD FFFD 873D - 872B 8747 8739 FFFD 8745 871D FFFD 88FF - 88EA FFFD 88F5 FFFD 8900 88ED 8903 88E9 - FFFD FFFD 89EA FFFD 8A9B 8A8E 8AA2 FFFD - 8A9C 8A94 8A90 8AA9 8AAC FFFD 8A9F FFFD - FFFD 8A9D FFFD 8C67 FFFD FFFD 8CD0 8CD6 - 8CD4 8D98 8D9A 8D97 FFFD FFFD FFFD 8E0B - 8E08 8E01 8EB4 8EB3 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 4A21 - srcEnd = 4A78 - mappingOffset = 0EE1 - Mapping = - 8FA1 8FA2 FFFD 905A FFFD 9061 905F FFFD - FFFD 9125 917B 9176 917C FFFD 9289 92F6 - 92B1 92AD 9292 9281 9284 FFFD 92AE 9290 - 929E FFFD FFFD FFFD 95A2 95A7 FFFD FFFD - FFFD FFFD FFFD 96A0 969D 969F 96D0 FFFD - 96D1 FFFD FFFD 9759 FFFD 9764 FFFD FFFD - FFFD 9819 FFFD 9814 9815 981A FFFD FFFD - FFFD FFFD 9906 FFFD 98F8 9901 FFFD 99BE - 99BC 99B7 99B6 99C0 FFFD 99B8 FFFD FFFD - FFFD 99C4 FFFD 99BF FFFD 9ADA 9AE4 9AE9 - 9AE8 9AEA 9AE5 FFFD 9B26 FFFD FFFD 9B40 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 4B22 - srcEnd = 4B7E - mappingOffset = 0F39 - Mapping = - 9EBD FFFD FFFD FFFD FFFD 510E FFFD 50F7 - FFFD 50FC 510D 5101 51DA 51D9 51DB 5286 - 528E 52EE 5333 53B1 FFFD 5647 562D 5654 - FFFD 564B 5652 5631 5644 5656 5650 562B - FFFD 564D 5637 564F 58A2 58B7 FFFD 58B2 - FFFD 58AA 58B5 58B0 FFFD 58B4 58A4 58A7 - FFFD 5926 5AFE FFFD 5B04 FFFD 5AFC FFFD - 5B06 5B0A 5AFA 5B0D 5B00 5B0E FFFD FFFD - FFFD 5D91 FFFD 5D8F 5D90 5D98 5DA4 5D9B - 5DA3 5D96 5DE4 5E5A FFFD FFFD 5E5E FFFD - 5FB8 6157 615C 61A6 6195 6188 FFFD 61A3 - 618F FFFD 6164 FFFD 6159 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 4C21 - srcEnd = 4C7E - mappingOffset = 0F96 - Mapping = - 6178 FFFD 6185 6187 619E FFFD FFFD 6198 - 619C FFFD FFFD 622F 6480 649B 648E 648D - 6494 64C6 FFFD 64A8 6483 FFFD 64B9 6486 - 64B4 64AF 6491 FFFD 64AA 64A1 64A7 66B6 - 66B3 FFFD 66BC 66AC FFFD 66AD 6A0E FFFD - 6A1C 6A1A FFFD FFFD 6A0B FFFD 69EF 6A0C - 69F0 6A22 FFFD 69D8 FFFD 6A12 69FA FFFD - 6A2A FFFD 6A10 FFFD FFFD 6A29 69F9 69EA - 6A2C 6A24 FFFD 69E9 6B52 6B4F 6B53 FFFD - FFFD 6F10 6F65 6F75 FFFD FFFD FFFD FFFD - 6FD0 FFFD 6F5C 6F3D 6F71 FFFD 6F91 6F0B - 6F79 6F81 6F8F FFFD 6F59 6F74 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 4D22 - srcEnd = 4D7E - mappingOffset = 0FF4 - Mapping = - 71AE FFFD 71A3 71AD FFFD FFFD 71AB 71A6 - 71A2 FFFD 52F2 7257 7255 7299 734B 747A - FFFD FFFD FFFD 748C 7484 FFFD FFFD 7482 - 7493 747B FFFD 7509 FFFD FFFD FFFD FFFD - FFFD FFFD 778A FFFD 7790 FFFD 78C6 78D3 - 78C0 78D2 78C7 78C2 FFFD 799F 799D 799E - FFFD 7A41 FFFD 7A38 7A3A 7A42 FFFD FFFD - 7A3E 7AB0 7BAE 7BB3 FFFD FFFD 7BBF FFFD - FFFD 7BCD FFFD 7BB2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7CC4 7CCD 7CC2 7CC6 7CC3 - 7CC9 7CC7 FFFD 7DF8 FFFD 7DED 7DE2 FFFD - FFFD FFFD 7DDC 7E02 7E01 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 4E22 - srcEnd = 4E7E - mappingOffset = 1051 - Mapping = - 7DD6 FFFD 7DE4 7DFE FFFD 7E00 7DFC 7DFD - FFFD 7DF5 7DFF FFFD 7DEB 7DE5 7F78 7FAE - 7FE7 FFFD 8065 806A 8066 8068 806B 8194 - 81A1 8192 8196 8193 FFFD FFFD 8501 FFFD - 84F8 FFFD 84F5 FFFD 8504 FFFD FFFD FFFD - FFFD 851B 8503 8533 8534 84ED FFFD FFFD - 8535 FFFD 8505 FFFD FFFD FFFD FFFD 877D - FFFD FFFD FFFD 8771 FFFD 885C 88E6 890F - 891B FFFD 89A9 89A5 89EE 8AB1 FFFD 8ACC - 8ACE FFFD 8AB7 FFFD 8AB5 8AE9 8AB4 FFFD - 8AB3 8AC1 8AAF 8ACA 8AD0 FFFD FFFD FFFD - 8C8E FFFD FFFD 8CE9 8CDB -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 4F22 - srcEnd = 4F7E - mappingOffset = 10AE - Mapping = - 8CEB 8DA4 FFFD 8DA2 8D9D FFFD FFFD FFFD - FFFD 8E2A 8E28 FFFD FFFD 8EB8 8EB6 8EB9 - 8EB7 8F22 8F2B 8F27 8F19 8FA4 FFFD 8FB3 - FFFD 9071 906A FFFD FFFD 9188 918C 92BF - 92B8 92BE 92DC 92E5 FFFD FFFD 92D4 92D6 - FFFD 92DA 92ED 92F3 92DB FFFD 92B9 92E2 - 92EB 95AF FFFD 95B2 95B3 FFFD FFFD FFFD - 96A3 96A5 FFFD FFFD FFFD FFFD 970A FFFD - 9787 9789 978C 97EF 982A 9822 FFFD 981F - FFFD 9919 FFFD 99CA 99DA FFFD FFFD FFFD - 99DE 99C8 99E0 FFFD 9AB6 9AB5 FFFD 9AF4 - FFFD 9B6B 9B69 9B72 9B63 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 5022 - srcEnd = 507E - mappingOffset = 110B - Mapping = - 9D0D FFFD 9D01 9D0C FFFD 9CF8 FFFD FFFD - 9CFE 9D02 9E84 FFFD 9EAB 9EAA 511D 5116 - FFFD 512B 511E 511B 5290 5294 5314 FFFD - FFFD 5667 FFFD 567B FFFD 565F 5661 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 58C3 58CA - 58BB 58C0 58C4 5901 5B1F 5B18 5B11 5B15 - FFFD 5B12 5B1C FFFD 5B22 5B79 5DA6 FFFD - 5DB3 5DAB 5EEA FFFD 5F5B FFFD FFFD 61B7 - 61CE 61B9 61BD 61CF 61C0 6199 6197 FFFD - 61BB 61D0 61C4 6231 FFFD 64D3 64C0 FFFD - FFFD FFFD FFFD 64DC 64D1 64C8 FFFD 64D5 - 66C3 FFFD FFFD 66BF 66C5 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 5122 - srcEnd = 517B - mappingOffset = 1168 - Mapping = - 66CD 66C1 6706 FFFD 6724 6A63 6A42 6A52 - FFFD 6A43 6A33 FFFD 6A6C 6A57 FFFD 6A4C - 6A6E FFFD FFFD FFFD FFFD FFFD 6A37 FFFD - 6A71 6A4A 6A36 FFFD 6A53 FFFD 6A45 6A70 - FFFD FFFD 6A5C 6B58 6B57 FFFD FFFD FFFD - FFFD FFFD FFFD 6FBB FFFD FFFD 6FBE FFFD - FFFD FFFD 6FB5 6FD3 6F9F FFFD 6FB7 6FF5 - 71B7 FFFD 71BB FFFD 71D1 FFFD 71BA FFFD - 71B6 71CC FFFD FFFD 71D3 749B FFFD FFFD - 7496 74A2 749D 750A 750E FFFD 7581 762C - 7637 7636 763B FFFD 76A1 FFFD FFFD 7798 - FFFD 7796 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 5221 - srcEnd = 527E - mappingOffset = 11C2 - Mapping = - 78D6 78EB FFFD 78DC FFFD 79A5 79A9 9834 - 7A53 7A45 FFFD 7A4F FFFD 7ABD 7ABB 7AF1 - FFFD FFFD 7BEC 7BED FFFD FFFD 7CD3 FFFD - 7CE1 FFFD 7E19 FFFD FFFD FFFD 7E27 7E26 - FFFD FFFD 806E 81AF FFFD FFFD 81AD FFFD - 81AA 8218 FFFD FFFD FFFD FFFD 856F 854C - FFFD 8542 FFFD 855C 8570 855F FFFD 855A - 854B 853F 878A FFFD 878B 87A1 878E FFFD - FFFD 8799 885E 885F 8924 89A7 8AEA 8AFD - 8AF9 8AE3 8AE5 FFFD FFFD 8AEC FFFD FFFD - FFFD FFFD 8CF2 FFFD 8CEF FFFD 8DA6 FFFD - FFFD FFFD 8E3B 8E43 FFFD 8E32 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 5321 - srcEnd = 537D - mappingOffset = 1220 - Mapping = - 8F31 8F30 FFFD 8F2D 8F3C 8FA7 8FA5 FFFD - FFFD FFFD 9137 9195 918E FFFD 9196 FFFD - 9345 930A FFFD FFFD 92FD 9317 931C 9307 - 9331 9332 932C 9330 9303 9305 FFFD 95C2 - FFFD 95B8 FFFD 95C1 FFFD FFFD FFFD 96AB - 96B7 FFFD FFFD 9715 9714 FFFD FFFD 970C - 9717 FFFD 9793 FFFD 97D2 FFFD FFFD 9836 - 9831 9833 983C 982E 983A FFFD 983D FFFD - 98B5 9922 9923 9920 991C 991D FFFD 99A0 - FFFD 99EF 99E8 99EB FFFD FFFD FFFD 99E1 - 99E6 FFFD FFFD 9AF8 9AF5 FFFD FFFD 9B83 - 9B94 9B84 FFFD 9B8B 9B8F -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 5421 - srcEnd = 547C - mappingOffset = 127D - Mapping = - 9B8C FFFD 9B89 FFFD 9B8E FFFD FFFD FFFD - 9D24 9D0F FFFD 9D13 9D0A FFFD FFFD FFFD - FFFD 9D2A 9D1A FFFD 9D27 9D16 9D21 FFFD - 9E85 9EAC 9EC6 9EC5 9ED7 9F53 FFFD 5128 - 5127 51DF FFFD 5335 53B3 FFFD 568A 567D - 5689 FFFD 58CD 58D0 FFFD 5B2B 5B33 5B29 - 5B35 5B31 5B37 5C36 5DBE FFFD 5DB9 FFFD - 5DBB FFFD 61E2 61DB 61DD 61DC 61DA FFFD - 61D9 FFFD FFFD 64DF FFFD FFFD 64E1 FFFD - 64EE FFFD 65B5 66D4 66D5 FFFD 66D0 66D1 - 66CE 66D7 FFFD FFFD 6A7D 6A8A FFFD 6AA7 - FFFD 6A99 6A82 6A88 -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 5521 - srcEnd = 557E - mappingOffset = 12D9 - Mapping = - 6A86 FFFD 6A98 6A9D FFFD FFFD 6A8F FFFD - 6AAA FFFD 6B5D FFFD 6C0A FFFD 6FD7 6FD6 - 6FE5 FFFD FFFD FFFD 6FD9 6FDA 6FEA FFFD - 6FF6 FFFD FFFD 71E3 FFFD 71E9 FFFD 71EB - 71EF 71F3 71EA FFFD FFFD FFFD FFFD FFFD - 7371 FFFD 74AE FFFD 74B3 FFFD 74AC FFFD - FFFD 7583 7645 764E 7644 76A3 76A5 77A6 - 77A4 FFFD 77A9 77AF FFFD FFFD FFFD 78F0 - 78F8 78F1 FFFD 7A49 FFFD FFFD FFFD 7AC2 - 7AF2 7AF3 7BFA FFFD 7BF6 7BFC 7C18 7C08 - 7C12 FFFD FFFD 7CDB 7CDA FFFD FFFD FFFD - 7E2C 7E4D FFFD FFFD 7F46 7FF6 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 5621 - srcEnd = 567B - mappingOffset = 1337 - Mapping = - 802B 8074 81B8 81C8 FFFD FFFD FFFD 8592 - 8593 FFFD 857F 85AB 8597 FFFD FFFD 85AC - FFFD FFFD FFFD 87CE FFFD 87CD FFFD FFFD - 87C1 87B1 87C7 FFFD 8940 FFFD 893F 8939 - FFFD 8943 FFFD FFFD FFFD 89AB FFFD 8B1F - 8B09 8B0C FFFD FFFD 8C40 FFFD 8C96 FFFD - 8CF6 8CF7 FFFD 8E46 8E4F FFFD FFFD FFFD - 8F3D 8F41 9366 9378 935D 9369 9374 937D - 936E 9372 9373 9362 9348 9353 935F 9368 - FFFD 937F 936B FFFD 95C4 FFFD 96AF 96AD - 96B2 FFFD FFFD 971A 971B FFFD FFFD FFFD - FFFD 979B 979F -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 5726 - srcEnd = 577E - mappingOffset = 1392 - Mapping = - 9840 FFFD 9847 FFFD 98B7 FFFD FFFD FFFD - FFFD FFFD 99A2 FFFD FFFD 9A00 99F3 FFFD - FFFD 99F5 FFFD FFFD 9ABD 9B00 9B02 FFFD - 9B34 9B49 9B9F FFFD 9BA3 9BCD 9B99 9B9D - FFFD FFFD 9D39 FFFD 9D44 FFFD FFFD 9D35 - FFFD FFFD 9EAF FFFD 512F FFFD FFFD 9F8E - FFFD 569F 569B 569E 5696 5694 56A0 FFFD - 5B3B FFFD FFFD 5B3A 5DC1 5F4D 5F5D 61F3 - FFFD FFFD FFFD FFFD 64F6 64E5 64EA 64E7 - 6505 FFFD 64F9 FFFD FFFD FFFD 6AAB 6AED - 6AB2 6AB0 6AB5 6ABE 6AC1 6AC8 FFFD 6AC0 - 6ABC -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 5821 - srcEnd = 587E - mappingOffset = 13EB - Mapping = - 6AB1 6AC4 6ABF FFFD FFFD 7008 7003 6FFD - 7010 7002 7013 FFFD 71FA 7200 74B9 74BC - FFFD 765B 7651 764F 76EB 77B8 FFFD 77B9 - 77C1 77C0 77BE 790B FFFD 7907 790A 7908 - FFFD 790D 7906 7915 79AF FFFD FFFD FFFD - 7AF5 FFFD FFFD 7C2E FFFD 7C1B FFFD 7C1A - 7C24 FFFD FFFD 7CE6 7CE3 FFFD FFFD 7E5D - 7E4F 7E66 7E5B 7F47 7FB4 FFFD FFFD FFFD - 7FFA 802E FFFD FFFD 81CE FFFD FFFD 8219 - FFFD FFFD 85CC 85B2 FFFD 85BB 85C1 FFFD - FFFD FFFD 87E9 87EE 87F0 87D6 880E 87DA - 8948 894A 894E 894D 89B1 89B0 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 5921 - srcEnd = 597E - mappingOffset = 1449 - Mapping = - 89B3 FFFD 8B38 8B32 FFFD 8B2D FFFD 8B34 - FFFD 8B29 8C74 FFFD FFFD 8D03 FFFD FFFD - 8DA9 8E58 FFFD FFFD 8EBF 8EC1 8F4A 8FAC - FFFD 9089 913D 913C 91A9 93A0 FFFD 9390 - FFFD 9393 938B 93AD 93BB 93B8 FFFD FFFD - 939C 95D8 95D7 FFFD FFFD FFFD 975D 97A9 - 97DA FFFD FFFD FFFD FFFD 9854 FFFD 9855 - 984B FFFD 983F 98B9 FFFD FFFD FFFD FFFD - 9938 9936 9940 FFFD 993B 9939 99A4 FFFD - FFFD 9A08 9A0C FFFD 9A10 FFFD 9B07 FFFD - 9BD2 FFFD 9BC2 9BBB 9BCC 9BCB FFFD FFFD - 9D4D 9D63 9D4E FFFD 9D50 9D55 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 5A22 - srcEnd = 5A7E - mappingOffset = 14A7 - Mapping = - 9D5E FFFD 9E90 9EB2 9EB1 FFFD 9ECA 9F02 - 9F27 9F26 FFFD 56AF 58E0 58DC FFFD 5B39 - FFFD FFFD 5B7C 5BF3 FFFD FFFD 5C6B 5DC4 - 650B 6508 650A FFFD FFFD 65DC FFFD FFFD - 66E1 66DF 6ACE 6AD4 6AE3 6AD7 6AE2 FFFD - FFFD FFFD FFFD 6AD8 6AD5 6AD2 FFFD FFFD - 701E 702C 7025 6FF3 7204 7208 7215 FFFD - 74C4 74C9 74C7 74C8 76A9 77C6 77C5 7918 - 791A 7920 FFFD 7A66 7A64 7A6A FFFD FFFD - FFFD FFFD FFFD FFFD 7C35 7C34 FFFD FFFD - 7E6C FFFD 7E6E 7E71 FFFD 81D4 81D6 821A - 8262 8265 8276 85DB 85D6 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 5B22 - srcEnd = 5B7E - mappingOffset = 1504 - Mapping = - 85E7 FFFD FFFD 85F4 FFFD 87FD 87D5 8807 - FFFD 880F 87F8 FFFD FFFD 8987 FFFD 89B5 - 89F5 FFFD 8B3F 8B43 8B4C FFFD 8D0B 8E6B - 8E68 8E70 8E75 8E77 FFFD 8EC3 FFFD 93E9 - 93EA 93CB 93C5 93C6 FFFD 93ED 93D3 FFFD - 93E5 FFFD FFFD 93DB 93EB 93E0 93C1 FFFD - FFFD 95DD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 97B2 97B4 97B1 97B5 97F2 - FFFD FFFD FFFD 9856 FFFD FFFD FFFD 9944 - FFFD 9A26 9A1F 9A18 9A21 9A17 FFFD 9B09 - FFFD FFFD 9BC5 9BDF FFFD 9BE3 FFFD 9BE9 - 9BEE FFFD FFFD 9D66 9D7A -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 5C22 - srcEnd = 5C7E - mappingOffset = 1561 - Mapping = - 9D6E 9D91 9D83 9D76 9D7E 9D6D FFFD 9E95 - 9EE3 FFFD FFFD 9F03 9F04 FFFD 9F17 FFFD - 5136 FFFD 5336 FFFD 5B42 FFFD FFFD 5B44 - 5B46 5B7E 5DCA 5DC8 5DCC 5EF0 FFFD 6585 - 66E5 66E7 FFFD FFFD FFFD 6AF4 FFFD 6AE9 - FFFD FFFD FFFD FFFD FFFD 703D FFFD 7036 - FFFD 7216 FFFD 7212 720F 7217 7211 720B - FFFD FFFD 74CD 74D0 74CC 74CE 74D1 FFFD - 7589 FFFD 7A6F 7C4B 7C44 FFFD FFFD FFFD - FFFD FFFD 7E7F 8B71 FFFD 802F 807A 807B - 807C FFFD FFFD FFFD 85FC 8610 8602 FFFD - FFFD 85EE 8603 FFFD 860D -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 5D21 - srcEnd = 5D7A - mappingOffset = 15BE - Mapping = - 8613 8608 860F 8818 8812 FFFD FFFD 8967 - 8965 89BB 8B69 8B62 FFFD 8B6E FFFD 8B61 - FFFD 8B64 8B4D 8C51 FFFD FFFD 8E83 8EC6 - FFFD 941F FFFD 9404 9417 9408 9405 FFFD - 93F3 941E 9402 941A 941B 9427 941C FFFD - 96B5 FFFD FFFD 9733 FFFD 9734 9731 97B8 - 97BA FFFD 97FC FFFD FFFD 98C3 FFFD 994D - FFFD 9A2F FFFD FFFD FFFD 9AC9 FFFD 9AC8 - 9AC4 9B2A 9B38 9B50 FFFD 9C0A 9BFB 9C04 - 9BFC 9BFE FFFD FFFD FFFD 9C02 9BF6 9C1B - 9BF9 9C15 9C10 9BFF 9C00 9C0C FFFD FFFD - 9D95 9DA5 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 5E21 - srcEnd = 5E7E - mappingOffset = 1618 - Mapping = - 9E98 9EC1 FFFD 9F5A 5164 56BB FFFD 58E6 - 5B49 5BF7 FFFD FFFD 5DD0 FFFD 5FC2 FFFD - 6511 FFFD 6AFF 6AFE 6AFD FFFD 6B01 FFFD - FFFD 704B 704D 7047 74D3 7668 7667 FFFD - FFFD 77D1 7930 7932 792E FFFD 9F9D 7AC9 - 7AC8 FFFD 7C56 7C51 FFFD FFFD FFFD 7E85 - 7E89 7E8E 7E84 FFFD 826A 862B 862F 8628 - FFFD 8616 8615 861D 881A FFFD FFFD FFFD - 89BC 8B75 8B7C FFFD 8D11 8D12 8F5C 91BB - FFFD 93F4 FFFD FFFD 942D FFFD FFFD 96E4 - 9737 9736 9767 97BE 97BD 97E2 9868 9866 - 98C8 98CA 98C7 98DC FFFD 994F -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 5F21 - srcEnd = 5F7E - mappingOffset = 1676 - Mapping = - 99A9 9A3C FFFD 9A3B 9ACE FFFD 9B14 9B53 - FFFD 9C2E FFFD 9C1F FFFD FFFD FFFD FFFD - 9DB0 9DBD FFFD FFFD 9DAE 9DC4 9E7B FFFD - FFFD 9E9E FFFD 9F05 FFFD 9F69 9FA1 56C7 - 571D 5B4A 5DD3 FFFD 5F72 6202 FFFD 6235 - 6527 651E 651F FFFD FFFD 6B07 6B06 FFFD - FFFD 7054 721C 7220 7AF8 FFFD 7C5D 7C58 - FFFD 7E92 7F4E FFFD FFFD FFFD 8827 FFFD - 8B81 8B83 FFFD 8C44 FFFD FFFD FFFD FFFD - 9442 944D 9454 944E FFFD 9443 FFFD FFFD - 973C 9740 97C0 FFFD FFFD FFFD FFFD 995A - 9A51 FFFD 9ADD FFFD FFFD 9C38 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 6022 - srcEnd = 607E - mappingOffset = 16D4 - Mapping = - 9C45 9C3A FFFD 9C35 FFFD FFFD FFFD 9EF1 - FFFD 9F93 529A FFFD FFFD 8641 5DD7 FFFD - 6528 FFFD FFFD FFFD 7053 7059 FFFD 7221 - FFFD 766F 7937 79B5 7C62 7C5E 7CF5 FFFD - FFFD 863D FFFD 882D 8989 8B8D 8B87 8B90 - 8D1A 8E99 FFFD FFFD FFFD 945F FFFD FFFD - 9456 9461 945B 945A 945C 9465 FFFD 9741 - FFFD FFFD 986E 986C 986D FFFD 99AA 9A5C - 9A58 9ADE FFFD 9C4F 9C51 FFFD 9C53 FFFD - FFFD FFFD 9DFC 9F39 FFFD 513E FFFD 56D2 - FFFD 5B4F 6B14 FFFD 7A72 7A73 FFFD FFFD - FFFD 8B91 FFFD FFFD 91BF -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 6122 - srcEnd = 617E - mappingOffset = 1731 - Mapping = - 946C FFFD FFFD 96E6 9745 FFFD 97C8 97E4 - 995D FFFD 9B21 FFFD 9B2C 9B57 FFFD FFFD - 9C5D 9C61 9C65 9E08 FFFD FFFD FFFD FFFD - FFFD 9F45 FFFD FFFD 6205 66EF 6B1B 6B1D - 7225 7224 7C6D FFFD 8642 8649 FFFD 8978 - 898A 8B97 FFFD 8C9B 8D1C FFFD 8EA2 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9C6C - FFFD 9C6F FFFD 9E0E FFFD 9F08 9F1D 9FA3 - FFFD FFFD 5F60 6B1C FFFD FFFD FFFD 7CF3 - FFFD 8B9B 8EA7 91C4 FFFD 947A FFFD FFFD - 9A61 9A63 9AD7 9C76 FFFD 9FA5 FFFD 7067 - FFFD 72AB 864A 897D 8B9D -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 6221 - srcEnd = 6279 - mappingOffset = 178E - Mapping = - 8C53 8F65 947B FFFD 98CD 98DD FFFD 9B30 - 9E16 FFFD FFFD FFFD FFFD FFFD 96E7 9E18 - 9EA2 FFFD 9F7C FFFD 7E9E 9484 FFFD 9E1C - FFFD 7C71 97CA FFFD FFFD FFFD 9EA3 FFFD - 9C7B 9F97 FFFD FFFD 9750 FFFD FFFD FFFD - 5727 5C13 FFFD FFFD FFFD FFFD FFFD FFFD - 5FC8 FFFD FFFD FFFD FFFD FFFD 6765 FFFD - FFFD 52BD FFFD 5B66 FFFD 65F9 6788 6CE6 - 6CCB FFFD 4FBD 5F8D FFFD 6018 6048 FFFD - 6B29 70A6 FFFD 7706 FFFD FFFD FFFD 5A10 - 5CFC 5CFE FFFD FFFD FFFD FFFD FFFD FFFD - 70C9 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 6323 - srcEnd = 6356 - mappingOffset = 17E7 - Mapping = - 9579 FFFD 96BA FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7B29 8128 FFFD 8A2E FFFD FFFD - FFFD 9AD9 FFFD 582B 5845 FFFD 63FA FFFD - FFFD FFFD 6E86 FFFD FFFD FFFD FFFD FFFD - 5867 FFFD 5BDD 656E FFFD FFFD FFFD 8C87 - FFFD 50D2 50DF FFFD FFFD FFFD FFFD 69BA - FFFD 6B9D FFFD 8059 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 6363 - srcEnd = 637B - mappingOffset = 181B - Mapping = - 6F8A FFFD FFFD 7BC3 7BC2 FFFD FFFD FFFD - FFFD 90F6 FFFD 9823 FFFD FFFD FFFD FFFD - FFFD 71CD 7499 FFFD FFFD FFFD FFFD FFFD - 9842 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 6422 - srcEnd = 6433 - mappingOffset = 1834 - Mapping = - 7F84 FFFD FFFD FFFD FFFD FFFD 8D0E FFFD - 9861 FFFD FFFD 8B73 FFFD 9C27 FFFD 9458 - 77D6 9B2D -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 6448 - srcEnd = 647E - mappingOffset = 1846 - Mapping = - 4F66 4F68 4FE7 503F FFFD 50A6 510F 523E - 5324 5365 539B 517F 54CB 5573 5571 556B - 55F4 5622 5620 5692 56BA 5691 56B0 5759 - 578A 580F 5812 5813 5847 589B 5900 594D - 5AD1 5AD3 5B67 5C57 5C77 5CD5 5D75 5D8E - 5DA5 5DB6 5DBF 5E65 5ECD 5EED 5F94 5F9A - 5FBA 6125 6150 62A3 6360 6364 63B6 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 6521 - srcEnd = 657E - mappingOffset = 187D - Mapping = - 6403 64B6 651A 7A25 5C21 66E2 6702 67A4 - 67AC 6810 6806 685E 685A 692C 6929 6A2D - 6A77 6A7A 6ACA 6AE6 6AF5 6B0D 6B0E 6BDC - 6BDD 6BF6 6C1E 6C63 6DA5 6E0F 6E8A 6E84 - 6E8B 6E7C 6F4C 6F48 6F49 6F9D 6F99 6FF8 - 702E 702D 705C 79CC 70BF 70EA 70E5 7111 - 7112 713F 7139 713B 713D 7177 7175 7176 - 7171 7196 7193 71B4 71DD 71DE 720E 5911 - 7218 7347 7348 73EF 7412 743B 74A4 748D - 74B4 7673 7677 76BC 7819 781B 783D 7853 - 7854 7858 78B7 78D8 78EE 7922 794D 7986 - 7999 79A3 79BC 7AA7 7B37 7B59 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 6621 - srcEnd = 667C - mappingOffset = 18DB - Mapping = - 7BD0 7C2F 7C32 7C42 7C4E 7C68 7CA9 7CED - 7DD0 7E07 7DD3 7E64 7F40 FFFD 8041 8063 - 80BB 6711 6725 8248 8310 8362 8312 8421 - 841E 84E2 84DE 84E1 8573 85D4 85F5 8637 - 8645 8672 874A 87A9 87A5 87F5 8834 8850 - 8887 8954 8984 8B03 8C52 8CD8 8D0C 8D18 - 8DB0 8EBC 8ED5 8FAA 909C FFFD 915C 922B - 9221 9273 92F4 92F5 933F 9342 9386 93BE - 93BC 93BD 93F1 93F2 93EF 9422 9423 9424 - 9467 9466 9597 95CE 95E7 973B 974D 98E4 - 9942 9B1D 9B98 FFFD 9D49 6449 5E71 5E85 - 61D3 990E 8002 781E -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 6721 - srcEnd = 672A - mappingOffset = 1937 - Mapping = - 5528 5572 55BA 55F0 55EE 56B8 56B9 56C4 - 8053 92B0 -End of Item 0048 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0049, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0017, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x00F2, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0000 */ -/* Total of Format 1 : 0x0049 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0017 Start of MapCell Array */ -/* 0000 */ 0x2121, 0x217D, 0x0000, -/* 0001 */ 0x2222, 0x227E, 0x005D, -/* 0002 */ 0x2322, 0x237E, 0x00BA, -/* 0003 */ 0x2421, 0x247E, 0x0117, -/* 0004 */ 0x2521, 0x257D, 0x0175, -/* 0005 */ 0x2621, 0x267E, 0x01D2, -/* 0006 */ 0x2721, 0x277D, 0x0230, -/* 0007 */ 0x2821, 0x287E, 0x028D, -/* 0008 */ 0x2921, 0x297C, 0x02EB, -/* 0009 */ 0x2A21, 0x2A7E, 0x0347, -/* 000A */ 0x2B21, 0x2B7C, 0x03A5, -/* 000B */ 0x2C21, 0x2C7E, 0x0401, -/* 000C */ 0x2D21, 0x2D7E, 0x045F, -/* 000D */ 0x2E21, 0x2E7E, 0x04BD, -/* 000E */ 0x2F23, 0x2F7E, 0x051B, -/* 000F */ 0x3021, 0x307E, 0x0577, -/* 0010 */ 0x3121, 0x317D, 0x05D5, -/* 0011 */ 0x3221, 0x327C, 0x0632, -/* 0012 */ 0x3323, 0x337C, 0x068E, -/* 0013 */ 0x3425, 0x347D, 0x06E8, -/* 0014 */ 0x3522, 0x357D, 0x0741, -/* 0015 */ 0x3622, 0x367D, 0x079D, -/* 0016 */ 0x3721, 0x377E, 0x07F9, -/* 0017 */ 0x3821, 0x387E, 0x0857, -/* 0018 */ 0x3922, 0x397E, 0x08B5, -/* 0019 */ 0x3A21, 0x3A7E, 0x0912, -/* 001A */ 0x3B24, 0x3B7E, 0x0970, -/* 001B */ 0x3C23, 0x3C7D, 0x09CB, -/* 001C */ 0x3D21, 0x3D7E, 0x0A26, -/* 001D */ 0x3E21, 0x3E7E, 0x0A84, -/* 001E */ 0x3F21, 0x3F7E, 0x0AE2, -/* 001F */ 0x4021, 0x407D, 0x0B40, -/* 0020 */ 0x4121, 0x417E, 0x0B9D, -/* 0021 */ 0x4221, 0x427E, 0x0BFB, -/* 0022 */ 0x4321, 0x437E, 0x0C59, -/* 0023 */ 0x4422, 0x447E, 0x0CB7, -/* 0024 */ 0x4523, 0x457E, 0x0D14, -/* 0025 */ 0x4621, 0x467E, 0x0D70, -/* 0026 */ 0x4721, 0x477E, 0x0DCE, -/* 0027 */ 0x4821, 0x4879, 0x0E2C, -/* 0028 */ 0x4922, 0x497D, 0x0E85, -/* 0029 */ 0x4A21, 0x4A78, 0x0EE1, -/* 002A */ 0x4B22, 0x4B7E, 0x0F39, -/* 002B */ 0x4C21, 0x4C7E, 0x0F96, -/* 002C */ 0x4D22, 0x4D7E, 0x0FF4, -/* 002D */ 0x4E22, 0x4E7E, 0x1051, -/* 002E */ 0x4F22, 0x4F7E, 0x10AE, -/* 002F */ 0x5022, 0x507E, 0x110B, -/* 0030 */ 0x5122, 0x517B, 0x1168, -/* 0031 */ 0x5221, 0x527E, 0x11C2, -/* 0032 */ 0x5321, 0x537D, 0x1220, -/* 0033 */ 0x5421, 0x547C, 0x127D, -/* 0034 */ 0x5521, 0x557E, 0x12D9, -/* 0035 */ 0x5621, 0x567B, 0x1337, -/* 0036 */ 0x5726, 0x577E, 0x1392, -/* 0037 */ 0x5821, 0x587E, 0x13EB, -/* 0038 */ 0x5921, 0x597E, 0x1449, -/* 0039 */ 0x5A22, 0x5A7E, 0x14A7, -/* 003A */ 0x5B22, 0x5B7E, 0x1504, -/* 003B */ 0x5C22, 0x5C7E, 0x1561, -/* 003C */ 0x5D21, 0x5D7A, 0x15BE, -/* 003D */ 0x5E21, 0x5E7E, 0x1618, -/* 003E */ 0x5F21, 0x5F7E, 0x1676, -/* 003F */ 0x6022, 0x607E, 0x16D4, -/* 0040 */ 0x6122, 0x617E, 0x1731, -/* 0041 */ 0x6221, 0x6279, 0x178E, -/* 0042 */ 0x6323, 0x6356, 0x17E7, -/* 0043 */ 0x6363, 0x637B, 0x181B, -/* 0044 */ 0x6422, 0x6433, 0x1834, -/* 0045 */ 0x6448, 0x647E, 0x1846, -/* 0046 */ 0x6521, 0x657E, 0x187D, -/* 0047 */ 0x6621, 0x667C, 0x18DB, -/* 0048 */ 0x6721, 0x672A, 0x1937, -/*-------------------------------------------------------*/ -/* Offset=0x00F2 Start of MappingTable */ - -/* 0000 */ 0x4E28, 0x4E36, 0x4E3F, 0x4E85, 0x4E05, 0x4E04, 0x5182, 0x5196, -/* 0008 */ 0x5338, 0x5369, 0x53B6, 0x4E2A, 0x4E87, 0x4E49, 0x51E2, 0x4E46, -/* 0010 */ 0x4E8F, 0x4EBC, 0x4EBE, 0x5166, 0x51E3, 0x5204, 0x529C, 0xFFFD, -/* 0018 */ 0x5902, 0x590A, 0x5B80, 0x5DDB, 0x5E7A, 0x5E7F, 0x5EF4, 0x5F50, -/* 0020 */ 0x5F51, 0x5F61, 0x961D, 0xFFFD, 0x4E63, 0x4E62, 0x4EA3, 0x5185, -/* 0028 */ 0x4EC5, 0x4ECF, 0x4ECE, 0x4ECC, 0x5184, 0x5186, 0xFFFD, 0xFFFD, -/* 0030 */ 0x51E4, 0x5205, 0x529E, 0x529D, 0x52FD, 0x5300, 0x533A, 0xFFFD, -/* 0038 */ 0x5346, 0x535D, 0x5386, 0x53B7, 0xFFFD, 0x53CC, 0xFFFD, 0x53CE, -/* 0040 */ 0x5721, 0xFFFD, 0x5E00, 0x5F0C, 0x6237, 0x6238, 0x6534, 0x6535, -/* 0048 */ 0x65E0, 0xFFFD, 0x738D, 0x4E97, 0x4EE0, 0xFFFD, 0xFFFD, 0x4EE7, -/* 0050 */ 0xFFFD, 0x4EE6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x56D8, 0x518B, -/* 0058 */ 0x518C, 0x5199, 0x51E5, 0xFFFD, 0x520B, 0x5304, 0x5303, 0x5307, -/* 0060 */ 0xFFFD, 0x531E, 0x535F, 0x536D, 0x5389, 0x53BA, 0x53D0, 0xFFFD, -/* 0068 */ 0x53F6, 0x53F7, 0x53F9, 0xFFFD, 0x53F4, 0xFFFD, 0xFFFD, 0x5724, -/* 0070 */ 0x5904, 0x5918, 0x5932, 0x5930, 0x5934, 0xFFFD, 0x5975, 0xFFFD, -/* 0078 */ 0x5B82, 0x5BF9, 0x5C14, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0x5E81, 0x5E83, 0x5F0D, 0x5F52, 0xFFFD, 0x5FCA, -/* 0088 */ 0x5FC7, 0x6239, 0xFFFD, 0x624F, 0x65E7, 0x672F, 0x6B7A, 0x6C39, -/* 0090 */ 0xFFFD, 0xFFFD, 0x6C37, 0x6C44, 0x6C45, 0x738C, 0x7592, 0x7676, -/* 0098 */ 0x9093, 0x9092, 0xFFFD, 0xFFFD, 0x4E21, 0x4E20, 0x4E22, 0x4E68, -/* 00A0 */ 0x4E89, 0x4E98, 0x4EF9, 0x4EEF, 0xFFFD, 0xFFFD, 0x4EF8, 0x4F06, -/* 00A8 */ 0x4F03, 0x4EFC, 0x4EEE, 0x4F16, 0xFFFD, 0x4F28, 0x4F1C, 0x4F07, -/* 00B0 */ 0x4F1A, 0x4EFA, 0x4F17, 0x514A, 0xFFFD, 0x5172, 0xFFFD, 0x51B4, -/* 00B8 */ 0x51B3, 0x51B2, 0x51E8, 0xFFFD, 0x5214, 0x520F, 0x5215, 0x5218, -/* 00C0 */ 0x52A8, 0xFFFD, 0x534B, 0x534F, 0xFFFD, 0x5350, 0xFFFD, 0x538B, -/* 00C8 */ 0xFFFD, 0x53BE, 0xFFFD, 0x53D2, 0x5416, 0x53FF, 0xFFFD, 0x5400, -/* 00D0 */ 0xFFFD, 0x5405, 0x5413, 0x5415, 0xFFFD, 0xFFFD, 0x56E3, 0x5735, -/* 00D8 */ 0x5736, 0x5731, 0x5732, 0x58EE, 0x5905, 0x4E54, 0xFFFD, 0x5936, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x597A, 0xFFFD, 0x5986, 0xFFFD, 0xFFFD, -/* 00E8 */ 0x5B86, 0x5F53, 0x5C18, 0xFFFD, 0x5C3D, 0x5C78, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xFFFD, 0xFFFD, 0x5C80, 0xFFFD, 0x5E08, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0x5EF5, 0x5F0E, 0xFFFD, 0xFFFD, 0xFFFD, 0x5FD3, 0x5FDA, -/* 0100 */ 0xFFFD, 0x5FDB, 0xFFFD, 0x620F, 0x625D, 0x625F, 0x6267, 0x6257, -/* 0108 */ 0x9F50, 0xFFFD, 0x65EB, 0x65EA, 0xFFFD, 0x6737, 0xFFFD, 0x6732, -/* 0110 */ 0x6736, 0x6B22, 0x6BCE, 0xFFFD, 0x6C58, 0x6C51, 0x6C77, 0x6C3C, -/* 0118 */ 0xFFFD, 0x6C5A, 0xFFFD, 0x6C53, 0x706F, 0x7072, 0x706E, 0xFFFD, -/* 0120 */ 0xFFFD, 0x7073, 0x72B1, 0x72B2, 0xFFFD, 0x738F, 0xFFFD, 0xFFFD, -/* 0128 */ 0xFFFD, 0x793C, 0xFFFD, 0x808D, 0x808E, 0xFFFD, 0x827B, 0xFFFD, -/* 0130 */ 0x8D71, 0x8FB9, 0x9096, 0x909A, 0xFFFD, 0x4E24, 0x4E71, 0xFFFD, -/* 0138 */ 0x4E9C, 0x4F45, 0x4F4A, 0x4F39, 0x4F37, 0xFFFD, 0x4F32, 0x4F42, -/* 0140 */ 0xFFFD, 0x4F44, 0x4F4B, 0xFFFD, 0x4F40, 0x4F35, 0x4F31, 0x5151, -/* 0148 */ 0xFFFD, 0x5150, 0x514E, 0xFFFD, 0xFFFD, 0x519D, 0xFFFD, 0x51B5, -/* 0150 */ 0x51B8, 0x51EC, 0x5223, 0x5227, 0x5226, 0x521F, 0x522B, 0x5220, -/* 0158 */ 0x52B4, 0x52B3, 0xFFFD, 0x5325, 0x533B, 0x5374, 0xFFFD, 0xFFFD, -/* 0160 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x544D, 0xFFFD, 0xFFFD, 0x543A, 0xFFFD, -/* 0168 */ 0xFFFD, 0x5444, 0x544C, 0x5423, 0x541A, 0x5432, 0x544B, 0x5421, -/* 0170 */ 0xFFFD, 0x5434, 0x5449, 0x5450, 0x5422, 0x543F, 0x5451, 0x545A, -/* 0178 */ 0x542F, 0xFFFD, 0x56E9, 0x56F2, 0x56F3, 0x56EF, 0x56ED, 0x56EC, -/* 0180 */ 0x56E6, 0x5748, 0xFFFD, 0x5744, 0x573F, 0x573C, 0x5753, 0x5756, -/* 0188 */ 0xFFFD, 0x575F, 0x5743, 0x5758, 0x5757, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0190 */ 0x5746, 0xFFFD, 0x573D, 0xFFFD, 0x5742, 0x5754, 0x5755, 0x58F1, -/* 0198 */ 0x58F2, 0x58F0, 0x590B, 0x9EA6, 0x56F1, 0x593D, 0xFFFD, 0x5994, -/* 01A0 */ 0x598C, 0xFFFD, 0x599C, 0xFFFD, 0xFFFD, 0x599F, 0xFFFD, 0x599B, -/* 01A8 */ 0xFFFD, 0x5989, 0x599A, 0xFFFD, 0x6588, 0xFFFD, 0x5B8D, 0xFFFD, -/* 01B0 */ 0x5BFE, 0x5BFF, 0x5BFD, 0x5C2B, 0xFFFD, 0x5C84, 0x5C8E, 0x5C9C, -/* 01B8 */ 0xFFFD, 0xFFFD, 0x5C85, 0x5DF5, 0x5E09, 0xFFFD, 0xFFFD, 0x5E0B, -/* 01C0 */ 0xFFFD, 0x5E92, 0x5E90, 0x5F03, 0xFFFD, 0x5F1E, 0x5F63, 0xFFFD, -/* 01C8 */ 0x5FE7, 0x5FFE, 0x5FE6, 0x5FDC, 0x5FCE, 0xFFFD, 0x5FFC, 0x5FDF, -/* 01D0 */ 0x5FEC, 0x5FF6, 0x5FF2, 0x5FF0, 0x5FF9, 0xFFFD, 0x6213, 0xFFFD, -/* 01D8 */ 0xFFFD, 0x623B, 0x623C, 0x6282, 0xFFFD, 0xFFFD, 0xFFFD, 0x6278, -/* 01E0 */ 0x628B, 0xFFFD, 0x629E, 0x62A5, 0x629B, 0x629C, 0x6299, 0x628D, -/* 01E8 */ 0x6285, 0x629D, 0x6275, 0xFFFD, 0xFFFD, 0xFFFD, 0x65F6, 0xFFFD, -/* 01F0 */ 0xFFFD, 0xFFFD, 0x66F5, 0x675B, 0xFFFD, 0x6754, 0x6752, 0xFFFD, -/* 01F8 */ 0x6758, 0x6744, 0x674A, 0x6761, 0xFFFD, 0x6C7F, 0x6C91, 0x6C9E, -/* 0200 */ 0xFFFD, 0x6C6E, 0x6C7C, 0x6C9F, 0x6C75, 0xFFFD, 0x6C56, 0x6CA2, -/* 0208 */ 0x6C79, 0xFFFD, 0x6CA1, 0xFFFD, 0x6CAA, 0x6CA0, 0xFFFD, 0x7079, -/* 0210 */ 0x7077, 0x707E, 0xFFFD, 0x7075, 0x707B, 0x7264, 0xFFFD, 0x72BB, -/* 0218 */ 0x72BC, 0x72C7, 0x72B9, 0x72BE, 0x72B6, 0xFFFD, 0xFFFD, 0x7398, -/* 0220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7593, 0x7680, 0xFFFD, 0x7683, -/* 0228 */ 0x76C0, 0x76C1, 0xFFFD, 0xFFFD, 0x77F4, 0x77F5, 0xFFFD, 0x7ACC, -/* 0230 */ 0x7ACD, 0x7CFA, 0x809F, 0x8091, 0x8097, 0x8094, 0xFFFD, 0x8286, -/* 0238 */ 0x828C, 0xFFFD, 0x8295, 0xFFFD, 0x866C, 0xFFFD, 0x8FB5, 0x8FBE, -/* 0240 */ 0x8FC7, 0xFFFD, 0x8FC1, 0x90A9, 0x90A4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0248 */ 0x90A8, 0x9627, 0x9626, 0x962B, 0x9633, 0x9634, 0x9629, 0x4E3D, -/* 0250 */ 0xFFFD, 0x4E9D, 0x4F93, 0x4F8A, 0xFFFD, 0xFFFD, 0x4F6D, 0x4F8E, -/* 0258 */ 0x4FA0, 0x4FA2, 0x4FA1, 0x4F9F, 0x4FA3, 0xFFFD, 0x4F72, 0xFFFD, -/* 0260 */ 0x4F8C, 0x5156, 0xFFFD, 0xFFFD, 0x5190, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0268 */ 0x51ED, 0x51FE, 0x522F, 0xFFFD, 0x523C, 0x5234, 0x5239, 0x52B9, -/* 0270 */ 0x52B5, 0x52BF, 0x5355, 0xFFFD, 0x5376, 0x537A, 0x5393, 0xFFFD, -/* 0278 */ 0x53C1, 0x53C2, 0x53D5, 0x5485, 0xFFFD, 0x545F, 0x5493, 0x5489, -/* 0280 */ 0x5479, 0x9EFE, 0x548F, 0x5469, 0x546D, 0xFFFD, 0x5494, 0x546A, -/* 0288 */ 0x548A, 0xFFFD, 0x56FD, 0x56FB, 0x56F8, 0x56FC, 0x56F6, 0x5765, -/* 0290 */ 0x5781, 0x5763, 0x5767, 0xFFFD, 0x576E, 0x5778, 0x577F, 0xFFFD, -/* 0298 */ 0xFFFD, 0x58F3, 0x594B, 0x594C, 0xFFFD, 0xFFFD, 0xFFFD, 0x59AD, -/* 02A0 */ 0xFFFD, 0x59C4, 0xFFFD, 0x59C2, 0x59B0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02A8 */ 0xFFFD, 0x59BF, 0xFFFD, 0x59C9, 0x59B8, 0x59AC, 0xFFFD, 0xFFFD, -/* 02B0 */ 0xFFFD, 0x59B7, 0x59D7, 0xFFFD, 0x5B60, 0xFFFD, 0x5B96, 0x5B9E, -/* 02B8 */ 0x5B94, 0x5B9F, 0x5B9D, 0xFFFD, 0x5C00, 0x5C19, 0xFFFD, 0xFFFD, -/* 02C0 */ 0x5C49, 0x5C4A, 0xFFFD, 0x5CBB, 0x5CC1, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02C8 */ 0x5CB9, 0x5C9E, 0x5CB4, 0x5CBA, 0x5DF6, 0x5E13, 0x5E12, 0x5E77, -/* 02D0 */ 0xFFFD, 0x5E98, 0xFFFD, 0x5E99, 0x5E9D, 0x5EF8, 0xFFFD, 0x5EF9, -/* 02D8 */ 0xFFFD, 0x5F06, 0x5F21, 0xFFFD, 0x5F25, 0x5F55, 0xFFFD, 0xFFFD, -/* 02E0 */ 0xFFFD, 0x5F84, 0x5F83, 0x6030, 0x6007, 0xFFFD, 0x6036, 0xFFFD, -/* 02E8 */ 0xFFFD, 0xFFFD, 0x5FE9, 0x603D, 0x6008, 0xFFFD, 0xFFFD, 0x62BA, -/* 02F0 */ 0x62B2, 0xFFFD, 0x62B7, 0x62E4, 0x62A7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02F8 */ 0x62D5, 0x62E1, 0x62DD, 0x62A6, 0x62C1, 0x62C5, 0x62C0, 0x62DF, -/* 0300 */ 0x62E0, 0x62DE, 0xFFFD, 0x6589, 0xFFFD, 0x65A6, 0x65BA, 0xFFFD, -/* 0308 */ 0x65FF, 0xFFFD, 0x6617, 0x6618, 0x6601, 0x65FE, 0xFFFD, 0x670C, -/* 0310 */ 0xFFFD, 0x676B, 0x6796, 0x6782, 0x678A, 0xFFFD, 0x67A3, 0xFFFD, -/* 0318 */ 0x67A2, 0x678F, 0xFFFD, 0x67F9, 0x6780, 0x6B26, 0x6B27, 0x6B68, -/* 0320 */ 0x6B69, 0xFFFD, 0x6B81, 0x6BB4, 0x6BD1, 0xFFFD, 0xFFFD, 0x6C1C, -/* 0328 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6C97, 0x6C6C, 0x6CDF, -/* 0330 */ 0xFFFD, 0x6CEA, 0xFFFD, 0x6CE4, 0x6CD8, 0x6CB2, 0x6CCE, 0x6CC8, -/* 0338 */ 0xFFFD, 0x708B, 0x7088, 0x7090, 0x708F, 0xFFFD, 0x7087, 0x7089, -/* 0340 */ 0x708D, 0x7081, 0xFFFD, 0x708C, 0xFFFD, 0xFFFD, 0x7240, 0x7265, -/* 0348 */ 0x7266, 0x7268, 0xFFFD, 0xFFFD, 0x72CD, 0x72D3, 0x72DB, 0xFFFD, -/* 0350 */ 0x72CF, 0x73A7, 0x73A3, 0x739E, 0xFFFD, 0x73AF, 0xFFFD, 0xFFFD, -/* 0358 */ 0x73AA, 0x739C, 0xFFFD, 0x7542, 0x7544, 0x753B, 0x7541, 0xFFFD, -/* 0360 */ 0x759B, 0x759E, 0xFFFD, 0x79C4, 0x79C3, 0x79C6, 0xFFFD, 0xFFFD, -/* 0368 */ 0x79C7, 0xFFFD, 0x79CA, 0xFFFD, 0xFFFD, 0x7ACF, 0x7C76, 0x7C74, -/* 0370 */ 0x7CFF, 0x7CFC, 0xFFFD, 0xFFFD, 0x7F59, 0x80A8, 0xFFFD, 0xFFFD, -/* 0378 */ 0x80B0, 0xFFFD, 0x80B3, 0xFFFD, 0x80A4, 0x80B6, 0x80A7, 0x80AC, -/* 0380 */ 0xFFFD, 0x80A6, 0x5367, 0x820E, 0x82C4, 0x833E, 0x829C, 0xFFFD, -/* 0388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x82AA, 0xFFFD, 0x82C9, 0xFFFD, -/* 0390 */ 0xFFFD, 0x82A6, 0x82B2, 0xFFFD, 0xFFFD, 0xFFFD, 0x8FCC, 0x8FD9, -/* 0398 */ 0x8FCA, 0x8FD8, 0x8FCF, 0x90B7, 0xFFFD, 0x90AD, 0x90B9, 0x9637, -/* 03A0 */ 0xFFFD, 0x9641, 0x963E, 0x96B6, 0x9751, 0x9763, 0x4E57, 0x4E79, -/* 03A8 */ 0x4EB2, 0x4EB0, 0x4EAF, 0x4EB1, 0x4FD2, 0x4FD5, 0xFFFD, 0x4FBE, -/* 03B0 */ 0x4FB8, 0x4FB0, 0x4FB1, 0x4FC8, 0xFFFD, 0xFFFD, 0x4FC6, 0x4FCC, -/* 03B8 */ 0x4FE5, 0x4FE3, 0x4FB4, 0x516A, 0xFFFD, 0x519F, 0xFFFD, 0x51C1, -/* 03C0 */ 0xFFFD, 0x51C2, 0x51C3, 0x5245, 0x5248, 0xFFFD, 0xFFFD, 0x524F, -/* 03C8 */ 0xFFFD, 0xFFFD, 0x52C5, 0x52CA, 0x52C4, 0x5327, 0x5358, 0x537D, -/* 03D0 */ 0xFFFD, 0x53DD, 0x53DC, 0x53DA, 0x53D9, 0x54B9, 0xFFFD, 0x54D0, -/* 03D8 */ 0x54B4, 0x54CA, 0xFFFD, 0x54A3, 0x54DA, 0x54A4, 0xFFFD, 0x54B2, -/* 03E0 */ 0x549E, 0x549F, 0x54B5, 0xFFFD, 0xFFFD, 0x54CD, 0xFFFD, 0x54CC, -/* 03E8 */ 0xFFFD, 0x5700, 0x57AC, 0x5791, 0x578E, 0x578D, 0x5792, 0x57A1, -/* 03F0 */ 0x5790, 0x57A6, 0x57A8, 0xFFFD, 0x579C, 0x5796, 0x57A7, 0xFFFD, -/* 03F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x58F5, 0xFFFD, 0x5909, 0x5908, 0xFFFD, -/* 0400 */ 0x5952, 0x59DF, 0xFFFD, 0x59EB, 0x59EF, 0x59F0, 0x59D5, 0x5A0D, -/* 0408 */ 0x5A04, 0x59F9, 0x5A02, 0x59F8, 0x59E2, 0x59D9, 0x59E7, 0x5B6A, -/* 0410 */ 0xFFFD, 0xFFFD, 0x5BAB, 0xFFFD, 0x5C1B, 0x5C2F, 0xFFFD, 0x663C, -/* 0418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5CD1, 0x5CDC, 0x5CE6, 0x5CE1, 0x5CCD, -/* 0420 */ 0xFFFD, 0x5CE2, 0x5CDD, 0x5CE5, 0x5DFB, 0x5DFA, 0x5E1E, 0xFFFD, -/* 0428 */ 0x5EA1, 0xFFFD, 0xFFFD, 0x5EFC, 0x5EFB, 0x5F2F, 0xFFFD, 0xFFFD, -/* 0430 */ 0x5F66, 0xFFFD, 0xFFFD, 0xFFFD, 0x605C, 0xFFFD, 0x604E, 0x6051, -/* 0438 */ 0xFFFD, 0xFFFD, 0x6023, 0x6031, 0x607C, 0x6052, 0xFFFD, 0x6060, -/* 0440 */ 0x604A, 0x6061, 0xFFFD, 0x6218, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x631F, 0x6317, 0x62EA, 0x6321, 0x6304, -/* 0450 */ 0x6305, 0xFFFD, 0x6531, 0x6544, 0x6540, 0xFFFD, 0x6542, 0x65BE, -/* 0458 */ 0xFFFD, 0x6629, 0x661B, 0xFFFD, 0x6623, 0x662C, 0x661A, 0x6630, -/* 0460 */ 0x663B, 0x661E, 0x6637, 0x6638, 0xFFFD, 0x670E, 0xFFFD, 0xFFFD, -/* 0468 */ 0x67E8, 0x67D6, 0xFFFD, 0x67C7, 0x67BC, 0x6852, 0x67BF, 0x67D5, -/* 0470 */ 0x67FE, 0x8363, 0x67FB, 0xFFFD, 0x67B1, 0x6801, 0x6805, 0x6800, -/* 0478 */ 0x67D7, 0xFFFD, 0x6B2A, 0x6B6B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0480 */ 0x6BE1, 0xFFFD, 0xFFFD, 0x6D23, 0x6CFF, 0x6D14, 0x6D05, 0x6D13, -/* 0488 */ 0x6D06, 0x6D21, 0xFFFD, 0x6D15, 0x6CAF, 0x6CF4, 0x6D02, 0x6D45, -/* 0490 */ 0xFFFD, 0x6D26, 0xFFFD, 0x6D44, 0xFFFD, 0x6D24, 0x70A5, 0xFFFD, -/* 0498 */ 0x70A3, 0xFFFD, 0x70A2, 0x70BB, 0x70A0, 0x70AA, 0xFFFD, 0xFFFD, -/* 04A0 */ 0x70A8, 0x70B6, 0x70B2, 0x70A7, 0xFFFD, 0xFFFD, 0x70B9, 0x722E, -/* 04A8 */ 0xFFFD, 0x723C, 0xFFFD, 0x726D, 0xFFFD, 0xFFFD, 0x72E7, 0x72ED, -/* 04B0 */ 0xFFFD, 0x72EC, 0x72E5, 0x72E2, 0xFFFD, 0x73C4, 0x73BD, 0x73CF, -/* 04B8 */ 0x73C9, 0x73C1, 0x73D0, 0xFFFD, 0x73CE, 0x74ED, 0x74EB, 0xFFFD, -/* 04C0 */ 0x74EF, 0x7549, 0x7550, 0x7546, 0x754A, 0xFFFD, 0x754D, 0x75A6, -/* 04C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x75A8, 0xFFFD, 0xFFFD, 0x76C7, 0x76FF, -/* 04D0 */ 0xFFFD, 0x76FD, 0x77E6, 0x780A, 0xFFFD, 0x7804, 0x780B, 0x7807, -/* 04D8 */ 0xFFFD, 0x7815, 0x7808, 0xFFFD, 0x79D3, 0x79D4, 0x79D0, 0x79D7, -/* 04E0 */ 0x7A7C, 0xFFFD, 0xFFFD, 0x7A7D, 0x7A83, 0x7A82, 0xFFFD, 0x7AD4, -/* 04E8 */ 0x7AD5, 0x7AD3, 0x7AD0, 0x7AD2, 0x7AFE, 0x7AFC, 0x7C77, 0x7C7C, -/* 04F0 */ 0x7C7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04F8 */ 0xFFFD, 0x7F8F, 0x80D3, 0xFFFD, 0x80CB, 0x80D2, 0xFFFD, 0x8109, -/* 0500 */ 0x80E2, 0x80DF, 0x80C6, 0xFFFD, 0x8224, 0x82F7, 0x82D8, 0x82DD, -/* 0508 */ 0xFFFD, 0xFFFD, 0x82F8, 0x82FC, 0xFFFD, 0xFFFD, 0x82E9, 0xFFFD, -/* 0510 */ 0x82EE, 0xFFFD, 0x82D0, 0x830E, 0x82E2, 0x830B, 0x82FD, 0x5179, -/* 0518 */ 0x8676, 0xFFFD, 0x8678, 0x8675, 0x867D, 0xFFFD, 0x8842, 0x8866, -/* 0520 */ 0xFFFD, 0x898C, 0x8A05, 0xFFFD, 0x8A06, 0xFFFD, 0x8C9F, 0xFFFD, -/* 0528 */ 0x8FF1, 0x8FE7, 0x8FE9, 0x8FEF, 0x90C2, 0x90BC, 0xFFFD, 0x90C6, -/* 0530 */ 0x90C0, 0xFFFD, 0xFFFD, 0x90CD, 0x90C9, 0xFFFD, 0x90C4, 0xFFFD, -/* 0538 */ 0x9581, 0xFFFD, 0x9CEC, 0x5032, 0x4FF9, 0x501D, 0x4FFF, 0x5004, -/* 0540 */ 0x4FF0, 0x5003, 0xFFFD, 0x5002, 0x4FFC, 0x4FF2, 0x5024, 0x5008, -/* 0548 */ 0x5036, 0x502E, 0xFFFD, 0x5010, 0x5038, 0x5039, 0x4FFD, 0x5056, -/* 0550 */ 0x4FFB, 0x51A3, 0x51A6, 0x51A1, 0xFFFD, 0xFFFD, 0x51C7, 0x51C9, -/* 0558 */ 0x5260, 0x5264, 0x5259, 0x5265, 0x5267, 0x5257, 0x5263, 0xFFFD, -/* 0560 */ 0x5253, 0xFFFD, 0x52CF, 0xFFFD, 0x52CE, 0x52D0, 0x52D1, 0x52CC, -/* 0568 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x550D, 0x54F4, 0xFFFD, 0x5513, 0x54EF, -/* 0570 */ 0x54F5, 0x54F9, 0x5502, 0x5500, 0xFFFD, 0xFFFD, 0x5518, 0x54F0, -/* 0578 */ 0x54F6, 0xFFFD, 0xFFFD, 0x5519, 0xFFFD, 0x5705, 0x57C9, 0xFFFD, -/* 0580 */ 0x57B7, 0x57CD, 0xFFFD, 0xFFFD, 0xFFFD, 0x57BE, 0x57BB, 0xFFFD, -/* 0588 */ 0x57DB, 0x57C8, 0x57C4, 0x57C5, 0x57D1, 0x57CA, 0x57C0, 0xFFFD, -/* 0590 */ 0xFFFD, 0x5A21, 0x5A2A, 0xFFFD, 0x5A1D, 0xFFFD, 0x5A0B, 0xFFFD, -/* 0598 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A22, 0xFFFD, 0xFFFD, 0x5A24, 0xFFFD, -/* 05A0 */ 0x5A14, 0x5A31, 0xFFFD, 0x5A2F, 0x5A1A, 0x5A12, 0xFFFD, 0xFFFD, -/* 05A8 */ 0x5A26, 0xFFFD, 0xFFFD, 0x5BBC, 0x5BBB, 0x5BB7, 0x5C05, 0x5C06, -/* 05B0 */ 0x5C52, 0x5C53, 0xFFFD, 0xFFFD, 0x5CFA, 0x5CEB, 0xFFFD, 0x5CF3, -/* 05B8 */ 0x5CF5, 0x5CE9, 0x5CEF, 0xFFFD, 0x5E2A, 0x5E30, 0x5E2E, 0x5E2C, -/* 05C0 */ 0x5E2F, 0x5EAF, 0x5EA9, 0xFFFD, 0x5EFD, 0x5F32, 0x5F8E, 0x5F93, -/* 05C8 */ 0x5F8F, 0x604F, 0x6099, 0xFFFD, 0x607E, 0xFFFD, 0x6074, 0x604B, -/* 05D0 */ 0x6073, 0x6075, 0xFFFD, 0xFFFD, 0x6056, 0x60A9, 0x608B, 0x60A6, -/* 05D8 */ 0xFFFD, 0x6093, 0x60AE, 0x609E, 0x60A7, 0x6245, 0xFFFD, 0xFFFD, -/* 05E0 */ 0x632E, 0xFFFD, 0x6352, 0x6330, 0x635B, 0xFFFD, 0x6319, 0x631B, -/* 05E8 */ 0xFFFD, 0x6331, 0x635D, 0x6337, 0x6335, 0x6353, 0xFFFD, 0x635C, -/* 05F0 */ 0x633F, 0x654B, 0xFFFD, 0xFFFD, 0x658B, 0xFFFD, 0x659A, 0x6650, -/* 05F8 */ 0x6646, 0x664E, 0x6640, 0xFFFD, 0x664B, 0x6648, 0xFFFD, 0x6660, -/* 0600 */ 0x6644, 0x664D, 0xFFFD, 0x6837, 0x6824, 0xFFFD, 0xFFFD, 0x681B, -/* 0608 */ 0x6836, 0xFFFD, 0x682C, 0x6819, 0x6856, 0x6847, 0x683E, 0x681E, -/* 0610 */ 0xFFFD, 0x6815, 0x6822, 0x6827, 0x6859, 0x6858, 0x6855, 0x6830, -/* 0618 */ 0x6823, 0x6B2E, 0x6B2B, 0x6B30, 0x6B6C, 0xFFFD, 0x6B8B, 0xFFFD, -/* 0620 */ 0x6BE9, 0x6BEA, 0x6BE5, 0x6D6B, 0xFFFD, 0xFFFD, 0x6D73, 0x6D57, -/* 0628 */ 0xFFFD, 0xFFFD, 0x6D5D, 0x6D56, 0x6D8F, 0x6D5B, 0x6D1C, 0x6D9A, -/* 0630 */ 0x6D9B, 0x6D99, 0x6D81, 0x6D71, 0xFFFD, 0xFFFD, 0x6D72, 0x6D5C, -/* 0638 */ 0x6D96, 0x70C4, 0x70DB, 0x70CC, 0x70D0, 0x70E3, 0x70DF, 0xFFFD, -/* 0640 */ 0x70D6, 0x70EE, 0x70D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x727A, -/* 0648 */ 0xFFFD, 0x72F5, 0x7302, 0xFFFD, 0xFFFD, 0x73E2, 0x73EC, 0x73D5, -/* 0650 */ 0x73F9, 0x73DF, 0x73E6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x73E4, -/* 0658 */ 0x73E1, 0x74F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7556, 0x7555, -/* 0660 */ 0x7558, 0x7557, 0x755E, 0x75C3, 0xFFFD, 0xFFFD, 0x75B4, 0xFFFD, -/* 0668 */ 0x75B1, 0xFFFD, 0xFFFD, 0x76CB, 0x76CC, 0x772A, 0xFFFD, 0x7716, -/* 0670 */ 0x770F, 0xFFFD, 0xFFFD, 0x773F, 0x772B, 0x770E, 0x7724, 0xFFFD, -/* 0678 */ 0x7721, 0x7718, 0x77DD, 0xFFFD, 0xFFFD, 0x7824, 0x7836, 0xFFFD, -/* 0680 */ 0x7958, 0x7959, 0xFFFD, 0x7962, 0x79DA, 0x79D9, 0xFFFD, 0x79E1, -/* 0688 */ 0x79E5, 0x79E8, 0x79DB, 0xFFFD, 0x79E2, 0x79F0, 0x7ADA, 0x7ADD, -/* 0690 */ 0xFFFD, 0x7ADB, 0x7ADC, 0xFFFD, 0xFFFD, 0x7B0D, 0x7B0B, 0x7B14, -/* 0698 */ 0x7C8E, 0x7C86, 0xFFFD, 0x7C87, 0x7C83, 0x7C8B, 0xFFFD, 0xFFFD, -/* 06A0 */ 0xFFFD, 0xFFFD, 0x7D24, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D25, 0x7F62, -/* 06A8 */ 0x7F93, 0x7F99, 0x7F97, 0xFFFD, 0xFFFD, 0x7FC4, 0x7FC6, 0x800A, -/* 06B0 */ 0xFFFD, 0xFFFD, 0x8040, 0x803C, 0x803B, 0x80F6, 0x80FF, 0x80EE, -/* 06B8 */ 0x8104, 0x8103, 0x8107, 0xFFFD, 0xFFFD, 0x80F7, 0xFFFD, 0xFFFD, -/* 06C0 */ 0x822D, 0xFFFD, 0x8227, 0x8229, 0x831F, 0x8357, 0xFFFD, 0xFFFD, -/* 06C8 */ 0xFFFD, 0xFFFD, 0x8321, 0xFFFD, 0xFFFD, 0x8318, 0x8358, 0xFFFD, -/* 06D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8684, 0x869F, 0x869B, 0x8689, -/* 06D8 */ 0x86A6, 0x8692, 0x868F, 0x86A0, 0x884F, 0x8878, 0x887A, 0x886E, -/* 06E0 */ 0x887B, 0x8884, 0x8873, 0xFFFD, 0xFFFD, 0x8A0D, 0x8A0B, 0x8A19, -/* 06E8 */ 0x8FF9, 0x9009, 0x9008, 0xFFFD, 0x90DE, 0x9151, 0xFFFD, 0xFFFD, -/* 06F0 */ 0x91DB, 0x91DF, 0x91DE, 0x91D6, 0x91E0, 0x9585, 0x9660, 0x9659, -/* 06F8 */ 0xFFFD, 0x9656, 0xFFFD, 0xFFFD, 0x96BD, 0xFFFD, 0xFFFD, 0x5042, -/* 0700 */ 0x5059, 0xFFFD, 0x5044, 0x5066, 0x5052, 0x5054, 0x5071, 0x5050, -/* 0708 */ 0x507B, 0x507C, 0x5058, 0xFFFD, 0xFFFD, 0x5079, 0x506C, 0x5078, -/* 0710 */ 0x51A8, 0x51D1, 0x51CF, 0x5268, 0x5276, 0x52D4, 0xFFFD, 0x53A0, -/* 0718 */ 0x53C4, 0xFFFD, 0x5558, 0x554C, 0x5568, 0xFFFD, 0x5549, 0xFFFD, -/* 0720 */ 0xFFFD, 0x555D, 0x5529, 0xFFFD, 0x5554, 0x5553, 0xFFFD, 0x555A, -/* 0728 */ 0xFFFD, 0x553A, 0x553F, 0x552B, 0x57EA, 0xFFFD, 0x57EF, 0xFFFD, -/* 0730 */ 0xFFFD, 0x57DD, 0x57FE, 0xFFFD, 0x57DE, 0x57E6, 0xFFFD, 0x57E8, -/* 0738 */ 0x57FF, 0x5803, 0x58F7, 0x68A6, 0x591F, 0xFFFD, 0x595B, 0x595D, -/* 0740 */ 0x595E, 0x5A2B, 0xFFFD, 0x5A3B, 0xFFFD, 0xFFFD, 0x5A61, 0x5A3A, -/* 0748 */ 0x5A6E, 0x5A4B, 0x5A6B, 0xFFFD, 0xFFFD, 0x5A45, 0x5A4E, 0x5A68, -/* 0750 */ 0x5A3D, 0x5A71, 0x5A3F, 0x5A6F, 0x5A75, 0xFFFD, 0x5A73, 0x5A2C, -/* 0758 */ 0x5A59, 0x5A54, 0x5A4F, 0x5A63, 0xFFFD, 0xFFFD, 0x5BC8, 0xFFFD, -/* 0760 */ 0x5BC3, 0xFFFD, 0x5C5B, 0x5C61, 0xFFFD, 0x5D21, 0x5D0A, 0x5D09, -/* 0768 */ 0xFFFD, 0x5D2C, 0x5D08, 0xFFFD, 0xFFFD, 0x5D2A, 0x5D15, 0xFFFD, -/* 0770 */ 0x5D10, 0x5D13, 0xFFFD, 0x5D2F, 0x5D18, 0xFFFD, 0x5DE3, 0x5E39, -/* 0778 */ 0x5E35, 0x5E3A, 0x5E32, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5EBB, -/* 0780 */ 0x5EBA, 0x5F34, 0x5F39, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6098, -/* 0788 */ 0xFFFD, 0x60D0, 0xFFFD, 0xFFFD, 0xFFFD, 0x60D7, 0x60AA, 0xFFFD, -/* 0790 */ 0x60A1, 0x60A4, 0xFFFD, 0x60EE, 0xFFFD, 0x60E7, 0xFFFD, 0xFFFD, -/* 0798 */ 0x60DE, 0xFFFD, 0xFFFD, 0x637E, 0x638B, 0x6379, 0x6386, 0x6393, -/* 07A0 */ 0xFFFD, 0x6373, 0x636A, 0xFFFD, 0x636C, 0xFFFD, 0x637F, 0xFFFD, -/* 07A8 */ 0x63B2, 0x63BA, 0xFFFD, 0xFFFD, 0x6366, 0x6374, 0xFFFD, 0x655A, -/* 07B0 */ 0xFFFD, 0x654E, 0x654D, 0x658D, 0x658E, 0x65AD, 0xFFFD, 0x65C7, -/* 07B8 */ 0x65CA, 0xFFFD, 0x65C9, 0xFFFD, 0x65E3, 0x6657, 0xFFFD, 0x6663, -/* 07C0 */ 0x6667, 0x671A, 0x6719, 0x6716, 0xFFFD, 0xFFFD, 0x689E, 0x68B6, -/* 07C8 */ 0x6898, 0x6873, 0xFFFD, 0x689A, 0x688E, 0x68B7, 0x68DB, 0x68A5, -/* 07D0 */ 0x686C, 0x68C1, 0x6884, 0xFFFD, 0xFFFD, 0x6895, 0x687A, 0x6899, -/* 07D8 */ 0xFFFD, 0x68B8, 0x68B9, 0x6870, 0xFFFD, 0x6B35, 0xFFFD, 0x6B90, -/* 07E0 */ 0x6BBB, 0x6BED, 0xFFFD, 0xFFFD, 0xFFFD, 0x6DC1, 0x6DC3, 0x6DCE, -/* 07E8 */ 0xFFFD, 0xFFFD, 0x6DAD, 0x6E04, 0xFFFD, 0x6DB9, 0xFFFD, 0x6DE7, -/* 07F0 */ 0xFFFD, 0x6E08, 0x6E06, 0xFFFD, 0x6E0A, 0x6DB0, 0xFFFD, 0x6DF8, -/* 07F8 */ 0x6E0C, 0x6DB1, 0xFFFD, 0x6E02, 0x6E07, 0x6E09, 0x6E01, 0x6E17, -/* 0800 */ 0x6DFF, 0x6E12, 0xFFFD, 0xFFFD, 0x7103, 0x7107, 0x7101, 0x70F5, -/* 0808 */ 0x70F1, 0x7108, 0x70F2, 0x710F, 0xFFFD, 0x70FE, 0xFFFD, 0xFFFD, -/* 0810 */ 0xFFFD, 0x731A, 0x7310, 0x730E, 0x7402, 0x73F3, 0xFFFD, 0xFFFD, -/* 0818 */ 0x73FB, 0xFFFD, 0xFFFD, 0xFFFD, 0x751B, 0x7523, 0x7561, 0x7568, -/* 0820 */ 0xFFFD, 0x7567, 0x75D3, 0xFFFD, 0xFFFD, 0x7690, 0xFFFD, 0xFFFD, -/* 0828 */ 0x76D5, 0x76D7, 0x76D6, 0x7730, 0xFFFD, 0x7726, 0xFFFD, 0x7740, -/* 0830 */ 0xFFFD, 0x771E, 0xFFFD, 0xFFFD, 0xFFFD, 0x7847, 0xFFFD, 0x784B, -/* 0838 */ 0x7851, 0x784F, 0x7842, 0x7846, 0xFFFD, 0x796E, 0x796C, 0x79F2, -/* 0840 */ 0xFFFD, 0x79F1, 0x79F5, 0x79F3, 0x79F9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0848 */ 0x7A9A, 0x7A93, 0x7A91, 0x7AE1, 0xFFFD, 0xFFFD, 0x7B21, 0x7B1C, -/* 0850 */ 0x7B16, 0x7B17, 0x7B36, 0x7B1F, 0xFFFD, 0x7C93, 0x7C99, 0x7C9A, -/* 0858 */ 0x7C9C, 0xFFFD, 0x7D49, 0xFFFD, 0x7D34, 0x7D37, 0xFFFD, 0x7D2D, -/* 0860 */ 0xFFFD, 0x7D4C, 0xFFFD, 0xFFFD, 0x7D48, 0xFFFD, 0xFFFD, 0x7F3B, -/* 0868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8008, 0x801A, 0xFFFD, 0x801D, -/* 0870 */ 0xFFFD, 0x8049, 0x8045, 0x8044, 0x7C9B, 0xFFFD, 0xFFFD, 0x812A, -/* 0878 */ 0x812E, 0xFFFD, 0xFFFD, 0x8131, 0xFFFD, 0x811A, 0x8134, 0x8117, -/* 0880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x831D, 0x8371, 0x8384, 0x8380, 0x8372, -/* 0888 */ 0x83A1, 0xFFFD, 0x8379, 0x8391, 0xFFFD, 0x839F, 0x83AD, 0xFFFD, -/* 0890 */ 0xFFFD, 0x8323, 0xFFFD, 0x8385, 0x839C, 0x83B7, 0x8658, 0x865A, -/* 0898 */ 0xFFFD, 0x8657, 0x86B2, 0xFFFD, 0x86AE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08A0 */ 0x8845, 0x889C, 0x8894, 0x88A3, 0x888F, 0x88A5, 0x88A9, 0x88A6, -/* 08A8 */ 0x888A, 0x88A0, 0x8890, 0x8992, 0x8991, 0x8994, 0xFFFD, 0x8A26, -/* 08B0 */ 0x8A32, 0x8A28, 0xFFFD, 0xFFFD, 0x8A1C, 0x8A2B, 0x8A20, 0xFFFD, -/* 08B8 */ 0x8A29, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A21, 0x8C3A, 0xFFFD, 0x8C5B, -/* 08C0 */ 0x8C58, 0x8C7C, 0xFFFD, 0x8CA6, 0x8CAE, 0x8CAD, 0x8D65, 0xFFFD, -/* 08C8 */ 0x8D7E, 0xFFFD, 0x8D7C, 0x8D7F, 0x8D7A, 0x8DBD, 0xFFFD, 0xFFFD, -/* 08D0 */ 0x8DC0, 0x8DBB, 0x8EAD, 0x8EAF, 0x8ED6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08D8 */ 0xFFFD, 0xFFFD, 0x8ED9, 0xFFFD, 0xFFFD, 0x9012, 0x900E, 0x9025, -/* 08E0 */ 0xFFFD, 0x9013, 0x90EE, 0xFFFD, 0x90AB, 0x90F7, 0xFFFD, 0x9159, -/* 08E8 */ 0x9154, 0x91F2, 0x91F0, 0x91E5, 0x91F6, 0xFFFD, 0xFFFD, 0x9587, -/* 08F0 */ 0xFFFD, 0x965A, 0xFFFD, 0xFFFD, 0x966E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08F8 */ 0x9679, 0xFFFD, 0x98E1, 0x98E6, 0xFFFD, 0x9EC4, 0x9ED2, 0x4E80, -/* 0900 */ 0xFFFD, 0x4E81, 0x508F, 0x5097, 0x5088, 0x5089, 0xFFFD, 0xFFFD, -/* 0908 */ 0x5081, 0x5160, 0xFFFD, 0xFFFD, 0x5E42, 0x51D3, 0xFFFD, 0xFFFD, -/* 0910 */ 0x51D2, 0x51D6, 0x5273, 0xFFFD, 0x5270, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0918 */ 0x53A8, 0x53A6, 0x53C5, 0x5597, 0x55DE, 0xFFFD, 0xFFFD, 0x5596, -/* 0920 */ 0x55B4, 0xFFFD, 0x5585, 0xFFFD, 0x559B, 0x55A0, 0xFFFD, 0x5559, -/* 0928 */ 0xFFFD, 0x5586, 0xFFFD, 0xFFFD, 0x55AF, 0x557A, 0xFFFD, 0xFFFD, -/* 0930 */ 0xFFFD, 0x559E, 0xFFFD, 0x55A9, 0x570F, 0x570E, 0x581A, 0xFFFD, -/* 0938 */ 0x581F, 0xFFFD, 0x583C, 0x5818, 0x583E, 0x5826, 0xFFFD, 0x583A, -/* 0940 */ 0xFFFD, 0x5822, 0xFFFD, 0x58FB, 0x5963, 0x5964, 0xFFFD, 0x5AA8, -/* 0948 */ 0x5AA3, 0x5A82, 0x5A88, 0x5AA1, 0x5A85, 0x5A98, 0xFFFD, 0x5A99, -/* 0950 */ 0xFFFD, 0x5A89, 0x5A81, 0x5A96, 0x5A80, 0xFFFD, 0xFFFD, 0x5A91, -/* 0958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5ACF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0960 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A87, 0x5AA0, 0xFFFD, 0x5A79, 0xFFFD, -/* 0968 */ 0x5A86, 0x5AAB, 0x5AAA, 0x5AA4, 0x5A8D, 0x5A7E, 0xFFFD, 0x5BD5, -/* 0970 */ 0x5C1E, 0x5C5F, 0x5C5E, 0x5D44, 0x5D3E, 0xFFFD, 0x5D48, 0x5D1C, -/* 0978 */ 0xFFFD, 0x5D5B, 0x5D4D, 0xFFFD, 0xFFFD, 0x5D57, 0xFFFD, 0x5D53, -/* 0980 */ 0x5D4F, 0xFFFD, 0x5D3B, 0x5D46, 0xFFFD, 0xFFFD, 0x5E46, 0x5E47, -/* 0988 */ 0xFFFD, 0x5E48, 0x5EC0, 0x5EBD, 0x5EBF, 0xFFFD, 0x5F11, 0xFFFD, -/* 0990 */ 0x5F3E, 0x5F3B, 0xFFFD, 0x5F3A, 0xFFFD, 0xFFFD, 0xFFFD, 0x5FA7, -/* 0998 */ 0xFFFD, 0x60EA, 0xFFFD, 0x6107, 0x6122, 0x610C, 0xFFFD, 0xFFFD, -/* 09A0 */ 0x60B3, 0x60D6, 0x60D2, 0xFFFD, 0x60E3, 0x60E5, 0x60E9, 0xFFFD, -/* 09A8 */ 0xFFFD, 0x6111, 0x60FD, 0xFFFD, 0xFFFD, 0x611E, 0x6120, 0x6121, -/* 09B0 */ 0x621E, 0xFFFD, 0x63E2, 0x63DE, 0x63E6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09B8 */ 0xFFFD, 0x63F8, 0xFFFD, 0x63FE, 0x63C1, 0x63BF, 0x63F7, 0x63D1, -/* 09C0 */ 0x655F, 0x6560, 0x6561, 0xFFFD, 0xFFFD, 0x65D1, 0xFFFD, 0xFFFD, -/* 09C8 */ 0x667D, 0x666B, 0x667F, 0x6673, 0x6681, 0x666D, 0x6669, 0xFFFD, -/* 09D0 */ 0xFFFD, 0x671E, 0x68ED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6903, -/* 09D8 */ 0xFFFD, 0x68FE, 0x68E5, 0x691E, 0x6902, 0xFFFD, 0xFFFD, 0x6909, -/* 09E0 */ 0x68CA, 0x6900, 0xFFFD, 0x6901, 0x6918, 0x68E2, 0x68CF, 0xFFFD, -/* 09E8 */ 0x692E, 0x68C5, 0x68FF, 0xFFFD, 0x691C, 0x68C3, 0xFFFD, 0x6B6F, -/* 09F0 */ 0xFFFD, 0x6B6E, 0xFFFD, 0x6BBE, 0xFFFD, 0x6BF4, 0x6C2D, 0xFFFD, -/* 09F8 */ 0x6DB6, 0x6E75, 0x6E1E, 0xFFFD, 0x6E18, 0xFFFD, 0x6E48, 0xFFFD, -/* 0A00 */ 0x6E4F, 0xFFFD, 0x6E42, 0x6E6A, 0x6E70, 0x6DFE, 0xFFFD, 0xFFFD, -/* 0A08 */ 0x6E6D, 0xFFFD, 0x6E7B, 0x6E7E, 0x6E59, 0xFFFD, 0x6E57, 0xFFFD, -/* 0A10 */ 0x6E80, 0x6E50, 0xFFFD, 0x6E29, 0x6E76, 0x6E2A, 0x6E4C, 0x712A, -/* 0A18 */ 0xFFFD, 0x7135, 0x712C, 0x7137, 0x711D, 0xFFFD, 0xFFFD, 0x7138, -/* 0A20 */ 0xFFFD, 0x7134, 0x712B, 0x7133, 0x7127, 0x7124, 0x712D, 0x7232, -/* 0A28 */ 0x7283, 0x7282, 0x7287, 0x7306, 0x7324, 0x7338, 0x732A, 0x732C, -/* 0A30 */ 0x732B, 0xFFFD, 0x732F, 0x7328, 0x7417, 0xFFFD, 0xFFFD, 0x7419, -/* 0A38 */ 0x7438, 0xFFFD, 0x741F, 0x7414, 0x743C, 0x73F7, 0x741C, 0x7415, -/* 0A40 */ 0x7418, 0x7439, 0x74F9, 0x7524, 0xFFFD, 0xFFFD, 0xFFFD, 0x756E, -/* 0A48 */ 0x756D, 0x7571, 0x758E, 0xFFFD, 0x75E5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A50 */ 0xFFFD, 0x7694, 0x76B3, 0xFFFD, 0x76D9, 0xFFFD, 0x7748, 0x7749, -/* 0A58 */ 0x7743, 0xFFFD, 0xFFFD, 0x7742, 0x77DF, 0xFFFD, 0x7863, 0x7876, -/* 0A60 */ 0xFFFD, 0x785F, 0x7866, 0x7966, 0x7971, 0xFFFD, 0xFFFD, 0x7976, -/* 0A68 */ 0x7984, 0x7975, 0x79FF, 0x7A07, 0xFFFD, 0x7A0E, 0x7A09, 0xFFFD, -/* 0A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7AE7, 0x7AE2, 0x7B55, -/* 0A78 */ 0xFFFD, 0xFFFD, 0x7B43, 0x7B57, 0x7B6C, 0x7B42, 0x7B53, 0xFFFD, -/* 0A80 */ 0x7B41, 0xFFFD, 0xFFFD, 0x7CA7, 0x7CA0, 0x7CA6, 0x7CA4, 0x7D74, -/* 0A88 */ 0xFFFD, 0x7D59, 0xFFFD, 0x7D60, 0x7D57, 0x7D6C, 0x7D7E, 0x7D64, -/* 0A90 */ 0xFFFD, 0x7D5A, 0x7D5D, 0xFFFD, 0xFFFD, 0xFFFD, 0x7D76, 0x7D4D, -/* 0A98 */ 0x7D75, 0xFFFD, 0x7FD3, 0x7FD6, 0xFFFD, 0xFFFD, 0x8060, 0x804E, -/* 0AA0 */ 0x8145, 0x813B, 0xFFFD, 0x8148, 0x8142, 0x8149, 0x8140, 0x8114, -/* 0AA8 */ 0x8141, 0xFFFD, 0x81EF, 0x81F6, 0x8203, 0xFFFD, 0x83ED, 0xFFFD, -/* 0AB0 */ 0x83DA, 0x8418, 0x83D2, 0x8408, 0xFFFD, 0x8400, 0xFFFD, 0xFFFD, -/* 0AB8 */ 0xFFFD, 0x8417, 0x8346, 0x8414, 0x83D3, 0x8405, 0x841F, 0x8402, -/* 0AC0 */ 0x8416, 0x83CD, 0x83E6, 0xFFFD, 0x865D, 0x86D5, 0x86E1, 0xFFFD, -/* 0AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x86EE, 0x8847, 0x8846, 0xFFFD, 0xFFFD, -/* 0AD0 */ 0x88BB, 0xFFFD, 0x88BF, 0x88B4, 0xFFFD, 0x88B5, 0xFFFD, 0x899A, -/* 0AD8 */ 0x8A43, 0xFFFD, 0xFFFD, 0x8A5A, 0xFFFD, 0xFFFD, 0xFFFD, 0x8A35, -/* 0AE0 */ 0x8A38, 0x8A42, 0x8A49, 0x8A5D, 0x8A4B, 0x8A3D, 0xFFFD, 0xFFFD, -/* 0AE8 */ 0xFFFD, 0xFFFD, 0x8C60, 0x8C5E, 0x8C7F, 0x8C7E, 0x8C83, 0xFFFD, -/* 0AF0 */ 0x8CB1, 0x8D87, 0xFFFD, 0xFFFD, 0x8D88, 0x8D83, 0xFFFD, 0xFFFD, -/* 0AF8 */ 0x8D86, 0x8D8B, 0x8D82, 0x8DCA, 0x8DD2, 0xFFFD, 0xFFFD, 0x8DD4, -/* 0B00 */ 0x8DC9, 0x8EB0, 0xFFFD, 0xFFFD, 0xFFFD, 0x8EF2, 0x8EE4, 0x8EF3, -/* 0B08 */ 0x8EEA, 0xFFFD, 0x8EFD, 0xFFFD, 0x8F9D, 0x902B, 0x902A, 0xFFFD, -/* 0B10 */ 0x9028, 0x9029, 0x902C, 0xFFFD, 0xFFFD, 0x903A, 0x9030, 0x9037, -/* 0B18 */ 0x903B, 0xFFFD, 0x910A, 0xFFFD, 0xFFFD, 0xFFFD, 0x91FE, 0x9220, -/* 0B20 */ 0xFFFD, 0x920B, 0xFFFD, 0x9218, 0x9222, 0xFFFD, 0x921B, 0x9208, -/* 0B28 */ 0xFFFD, 0x920E, 0x9213, 0xFFFD, 0xFFFD, 0x9595, 0xFFFD, 0xFFFD, -/* 0B30 */ 0xFFFD, 0x968C, 0x967B, 0x967F, 0x9681, 0xFFFD, 0x9682, 0xFFFD, -/* 0B38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96EE, 0x96ED, 0xFFFD, 0x96EC, -/* 0B40 */ 0x975F, 0x976F, 0xFFFD, 0x976D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B48 */ 0xFFFD, 0xFFFD, 0x98F0, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AA9, 0xFFFD, -/* 0B50 */ 0xFFFD, 0x9AE0, 0x4EB7, 0xFFFD, 0xFFFD, 0x50CC, 0x50BC, 0xFFFD, -/* 0B58 */ 0x50AA, 0x50B9, 0xFFFD, 0x50AB, 0x50C3, 0x50CD, 0x517E, 0x527E, -/* 0B60 */ 0x5279, 0xFFFD, 0xFFFD, 0x52E1, 0x52E0, 0x52E7, 0x5380, 0x53AB, -/* 0B68 */ 0x53AA, 0x53A9, 0x53E0, 0x55EA, 0xFFFD, 0x55D7, 0xFFFD, 0xFFFD, -/* 0B70 */ 0x55C1, 0x5715, 0xFFFD, 0x586C, 0xFFFD, 0x585C, 0x5850, 0x5861, -/* 0B78 */ 0x586A, 0x5869, 0x5856, 0x5860, 0x5866, 0x585F, 0x5923, 0x5966, -/* 0B80 */ 0x5968, 0xFFFD, 0xFFFD, 0x5ACE, 0xFFFD, 0x5AC5, 0x5AC3, 0xFFFD, -/* 0B88 */ 0xFFFD, 0x5AD0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B90 */ 0x5B74, 0x5B76, 0x5BDC, 0x5BD7, 0x5BDA, 0x5BDB, 0xFFFD, 0x5C20, -/* 0B98 */ 0x5D6D, 0x5D66, 0xFFFD, 0x5D64, 0x5D6E, 0x5D60, 0x5F42, 0x5F5A, -/* 0BA0 */ 0x5F6E, 0xFFFD, 0xFFFD, 0x6130, 0x613A, 0x612A, 0x6143, 0x6119, -/* 0BA8 */ 0x6131, 0xFFFD, 0x613D, 0xFFFD, 0xFFFD, 0xFFFD, 0x6408, 0x6432, -/* 0BB0 */ 0x6438, 0xFFFD, 0x6431, 0xFFFD, 0x6419, 0xFFFD, 0x6411, 0xFFFD, -/* 0BB8 */ 0xFFFD, 0x6429, 0x641D, 0xFFFD, 0xFFFD, 0xFFFD, 0x643C, 0xFFFD, -/* 0BC0 */ 0x6446, 0x6447, 0xFFFD, 0xFFFD, 0x643A, 0x6407, 0xFFFD, 0x656B, -/* 0BC8 */ 0xFFFD, 0x6570, 0x656D, 0xFFFD, 0x65E4, 0x6693, 0xFFFD, 0xFFFD, -/* 0BD0 */ 0xFFFD, 0xFFFD, 0x668F, 0xFFFD, 0xFFFD, 0x6692, 0xFFFD, 0x668E, -/* 0BD8 */ 0xFFFD, 0x6946, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BE0 */ 0xFFFD, 0x6931, 0xFFFD, 0xFFFD, 0x693E, 0xFFFD, 0x697C, 0x6943, -/* 0BE8 */ 0xFFFD, 0x6973, 0xFFFD, 0x6955, 0xFFFD, 0xFFFD, 0x6985, 0x694D, -/* 0BF0 */ 0x6950, 0x6947, 0x6967, 0x6936, 0x6964, 0x6961, 0xFFFD, 0x697D, -/* 0BF8 */ 0x6B44, 0x6B40, 0x6B71, 0x6B73, 0x6B9C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C00 */ 0x6BC1, 0xFFFD, 0x6BFA, 0x6C31, 0x6C32, 0xFFFD, 0xFFFD, 0x6EB8, -/* 0C08 */ 0x6EA8, 0xFFFD, 0x6E91, 0x6EBB, 0xFFFD, 0x6E9A, 0xFFFD, 0xFFFD, -/* 0C10 */ 0x6EA9, 0xFFFD, 0xFFFD, 0x6EB5, 0x6E6C, 0x6EE8, 0xFFFD, 0x6EDD, -/* 0C18 */ 0x6EDA, 0x6EE6, 0x6EAC, 0xFFFD, 0xFFFD, 0xFFFD, 0x6ED9, 0x6EE3, -/* 0C20 */ 0x6EE9, 0x6EDB, 0xFFFD, 0x716F, 0xFFFD, 0xFFFD, 0x7148, 0xFFFD, -/* 0C28 */ 0x714A, 0x716B, 0xFFFD, 0x714F, 0x7157, 0x7174, 0xFFFD, 0xFFFD, -/* 0C30 */ 0xFFFD, 0x7145, 0x7151, 0x716D, 0xFFFD, 0x7251, 0x7250, 0x724E, -/* 0C38 */ 0xFFFD, 0x7341, 0xFFFD, 0x732E, 0x7346, 0xFFFD, 0x7427, 0xFFFD, -/* 0C40 */ 0x7448, 0x7453, 0x743D, 0xFFFD, 0x745D, 0x7456, 0xFFFD, 0x741E, -/* 0C48 */ 0x7447, 0x7443, 0x7458, 0x7449, 0xFFFD, 0x744C, 0x7445, 0x743E, -/* 0C50 */ 0xFFFD, 0x7501, 0x751E, 0xFFFD, 0xFFFD, 0x757A, 0x75EE, 0x7602, -/* 0C58 */ 0x7697, 0x7698, 0xFFFD, 0xFFFD, 0xFFFD, 0x775D, 0x7764, 0x7753, -/* 0C60 */ 0x7758, 0x7882, 0x7890, 0x788A, 0xFFFD, 0x787A, 0x787D, 0xFFFD, -/* 0C68 */ 0x788B, 0x7878, 0xFFFD, 0xFFFD, 0x788D, 0x7888, 0x7892, 0x7881, -/* 0C70 */ 0x797E, 0x7983, 0xFFFD, 0xFFFD, 0xFFFD, 0x7980, 0xFFFD, 0xFFFD, -/* 0C78 */ 0xFFFD, 0x7A0F, 0xFFFD, 0xFFFD, 0x7A1D, 0xFFFD, 0x7AA1, 0x7AA4, -/* 0C80 */ 0xFFFD, 0x7AE9, 0x7AEA, 0xFFFD, 0x7B62, 0x7B6B, 0xFFFD, 0x7B5E, -/* 0C88 */ 0xFFFD, 0x7B79, 0xFFFD, 0xFFFD, 0x7B6F, 0x7B68, 0xFFFD, 0xFFFD, -/* 0C90 */ 0x7CAE, 0xFFFD, 0xFFFD, 0xFFFD, 0x7CB0, 0xFFFD, 0x7D90, 0xFFFD, -/* 0C98 */ 0x7D8A, 0xFFFD, 0x7D8B, 0x7D99, 0x7D95, 0xFFFD, 0x7D87, 0x7D78, -/* 0CA0 */ 0x7D97, 0x7D89, 0x7D98, 0xFFFD, 0xFFFD, 0xFFFD, 0x7FA3, 0xFFFD, -/* 0CA8 */ 0xFFFD, 0xFFFD, 0x7FDD, 0x8057, 0xFFFD, 0x8163, 0x816A, 0x816C, -/* 0CB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x815D, 0x8175, 0xFFFD, 0x815F, 0x817D, -/* 0CB8 */ 0x816D, 0xFFFD, 0xFFFD, 0x8241, 0x844F, 0x8484, 0xFFFD, 0x847F, -/* 0CC0 */ 0xFFFD, 0x8448, 0x842A, 0x847B, 0x8472, 0x8464, 0x842E, 0x845C, -/* 0CC8 */ 0x8453, 0xFFFD, 0x8441, 0x84C8, 0xFFFD, 0x8462, 0x8480, 0x843E, -/* 0CD0 */ 0x8483, 0x8471, 0xFFFD, 0x844A, 0x8455, 0x8458, 0xFFFD, 0xFFFD, -/* 0CD8 */ 0xFFFD, 0x86FC, 0x86FD, 0x8715, 0xFFFD, 0x8716, 0x86FF, 0xFFFD, -/* 0CE0 */ 0xFFFD, 0xFFFD, 0x8858, 0x88CF, 0x88E0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0xFFFD, 0x89E7, 0x8A6A, 0x8A80, 0xFFFD, 0x8A6F, 0x8A65, 0xFFFD, -/* 0CF0 */ 0x8A78, 0x8A7D, 0x8A88, 0xFFFD, 0xFFFD, 0x8A64, 0x8A7E, 0xFFFD, -/* 0CF8 */ 0x8A67, 0x8C63, 0x8C88, 0xFFFD, 0x8CCD, 0xFFFD, 0x8CC9, 0xFFFD, -/* 0D00 */ 0x8DED, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D08 */ 0x8EB1, 0xFFFD, 0xFFFD, 0x8F04, 0x8F9E, 0x8FA0, 0x9043, 0x9046, -/* 0D10 */ 0x9048, 0x9045, 0x9040, 0x904C, 0x910C, 0x9113, 0x9115, 0xFFFD, -/* 0D18 */ 0x916B, 0x9167, 0x925D, 0x9255, 0x9235, 0xFFFD, 0x9259, 0x922F, -/* 0D20 */ 0x923C, 0x928F, 0x925C, 0x926A, 0x9262, 0x925F, 0x926B, 0x926E, -/* 0D28 */ 0x923B, 0x9244, 0x9241, 0x959A, 0xFFFD, 0x9599, 0xFFFD, 0xFFFD, -/* 0D30 */ 0xFFFD, 0x968F, 0xFFFD, 0x9696, 0xFFFD, 0xFFFD, 0xFFFD, 0x96F4, -/* 0D38 */ 0x96FC, 0xFFFD, 0x9755, 0xFFFD, 0x9779, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D40 */ 0x97EE, 0x97F5, 0xFFFD, 0x980B, 0xFFFD, 0x98F3, 0xFFFD, 0xFFFD, -/* 0D48 */ 0x98F7, 0x98FF, 0x98F5, 0xFFFD, 0x98EC, 0x98F1, 0xFFFD, 0xFFFD, -/* 0D50 */ 0x999A, 0xFFFD, 0x9AE2, 0x9B3D, 0x9B5D, 0x9CE8, 0xFFFD, 0x9CEB, -/* 0D58 */ 0x9CEF, 0x9CEE, 0x9E81, 0x9F14, 0x50D0, 0x50D9, 0x50DC, 0x50D8, -/* 0D60 */ 0xFFFD, 0x50E1, 0x50EB, 0xFFFD, 0xFFFD, 0x50F4, 0x50E2, 0x50DE, -/* 0D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x51F4, 0xFFFD, 0xFFFD, 0xFFFD, 0x52ED, -/* 0D70 */ 0x52EA, 0xFFFD, 0x5332, 0xFFFD, 0x53AE, 0x53B0, 0xFFFD, 0x55FB, -/* 0D78 */ 0x5603, 0x560B, 0xFFFD, 0x5607, 0xFFFD, 0x55F8, 0xFFFD, 0x5628, -/* 0D80 */ 0x561E, 0xFFFD, 0x5618, 0x5611, 0x5651, 0x5605, 0x5717, 0x5892, -/* 0D88 */ 0xFFFD, 0x588C, 0xFFFD, 0x5878, 0x5884, 0x5873, 0x58AD, 0x5897, -/* 0D90 */ 0x5895, 0x5877, 0x5872, 0x5896, 0x588D, 0x5910, 0xFFFD, 0x596C, -/* 0D98 */ 0xFFFD, 0x5AE7, 0xFFFD, 0x5AE4, 0xFFFD, 0xFFFD, 0x5AEF, 0x5626, -/* 0DA0 */ 0xFFFD, 0xFFFD, 0x5AF0, 0x5D7B, 0xFFFD, 0x5D83, 0xFFFD, 0xFFFD, -/* 0DA8 */ 0x5D8B, 0x5D8C, 0xFFFD, 0x5D78, 0x5E52, 0xFFFD, 0xFFFD, 0x5ED0, -/* 0DB0 */ 0x5ECF, 0xFFFD, 0x5FB3, 0x5FB4, 0xFFFD, 0xFFFD, 0xFFFD, 0x617B, -/* 0DB8 */ 0xFFFD, 0x616F, 0x6181, 0x613C, 0x6142, 0x6138, 0x6133, 0xFFFD, -/* 0DC0 */ 0x6160, 0x6169, 0x617D, 0x6186, 0x622C, 0x6228, 0xFFFD, 0x644C, -/* 0DC8 */ 0xFFFD, 0x6457, 0x647C, 0xFFFD, 0xFFFD, 0x6455, 0x6462, 0x6471, -/* 0DD0 */ 0x646A, 0x6456, 0x643B, 0x6481, 0xFFFD, 0x644F, 0x647E, 0x6464, -/* 0DD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6571, 0xFFFD, 0xFFFD, -/* 0DE0 */ 0x66A5, 0x669A, 0x669C, 0xFFFD, 0x66A6, 0xFFFD, 0x66A4, 0x698F, -/* 0DE8 */ 0x69C5, 0x69C8, 0x6992, 0x69B2, 0xFFFD, 0xFFFD, 0xFFFD, 0x69E3, -/* 0DF0 */ 0x69C0, 0x69D6, 0x69D1, 0x699F, 0x69A2, 0x69D2, 0xFFFD, 0xFFFD, -/* 0DF8 */ 0xFFFD, 0x69E1, 0x69D5, 0x699D, 0xFFFD, 0xFFFD, 0x6998, 0xFFFD, -/* 0E00 */ 0x6B74, 0x6BA1, 0xFFFD, 0x6EF0, 0x6EF3, 0xFFFD, 0xFFFD, 0x6F1B, -/* 0E08 */ 0x6F0C, 0x6F1D, 0x6F34, 0x6F28, 0x6F17, 0xFFFD, 0x6F44, 0x6F42, -/* 0E10 */ 0x6F04, 0x6F11, 0x6EFA, 0x6F4A, 0x7191, 0x718E, 0xFFFD, 0x718B, -/* 0E18 */ 0x718D, 0x717F, 0x718C, 0x717E, 0x717C, 0x7183, 0xFFFD, 0x7188, -/* 0E20 */ 0xFFFD, 0xFFFD, 0x7294, 0xFFFD, 0x7355, 0x7353, 0x734F, 0x7354, -/* 0E28 */ 0x746C, 0x7465, 0x7466, 0x7461, 0x746B, 0x7468, 0x7476, 0xFFFD, -/* 0E30 */ 0x7460, 0xFFFD, 0x7474, 0x7506, 0x760E, 0xFFFD, 0x7607, 0xFFFD, -/* 0E38 */ 0xFFFD, 0x76B9, 0xFFFD, 0x76B7, 0x76E2, 0xFFFD, 0x7774, 0x7777, -/* 0E40 */ 0x7776, 0x7775, 0xFFFD, 0x7778, 0x7771, 0xFFFD, 0x777A, 0x715B, -/* 0E48 */ 0x777B, 0x78A6, 0x78AE, 0x78B8, 0xFFFD, 0xFFFD, 0xFFFD, 0x78B1, -/* 0E50 */ 0x78AF, 0xFFFD, 0x7989, 0x7987, 0xFFFD, 0xFFFD, 0x7A29, 0xFFFD, -/* 0E58 */ 0x7A2A, 0xFFFD, 0x7A2D, 0x7A2C, 0xFFFD, 0x7A32, 0xFFFD, 0x7AEC, -/* 0E60 */ 0x7AF0, 0x7B81, 0x7B9E, 0x7B83, 0xFFFD, 0x7B92, 0xFFFD, 0x7BA3, -/* 0E68 */ 0x7B9F, 0x7B93, 0xFFFD, 0x7B86, 0x7CB8, 0x7CB7, 0xFFFD, 0xFFFD, -/* 0E70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7DC8, 0x7DB6, 0xFFFD, 0x7DD1, 0xFFFD, -/* 0E78 */ 0x7DA8, 0x7DAB, 0xFFFD, 0x7DB3, 0x7DCD, 0xFFFD, 0x7DCF, 0x7DA4, -/* 0E80 */ 0xFFFD, 0xFFFD, 0x7F41, 0x7F6F, 0x7F71, 0x8023, 0x805B, 0xFFFD, -/* 0E88 */ 0x8061, 0x805F, 0x8181, 0xFFFD, 0xFFFD, 0x8184, 0x8213, 0xFFFD, -/* 0E90 */ 0x824A, 0x824C, 0xFFFD, 0xFFFD, 0xFFFD, 0x84BD, 0x8495, 0xFFFD, -/* 0E98 */ 0x8492, 0x84C3, 0xFFFD, 0x8496, 0x84A5, 0x84B5, 0x84B3, 0x84A3, -/* 0EA0 */ 0x84E4, 0x84D8, 0x84D5, 0xFFFD, 0x84B7, 0x84AD, 0x84DA, 0x8493, -/* 0EA8 */ 0x8736, 0xFFFD, 0xFFFD, 0xFFFD, 0x873D, 0x872B, 0x8747, 0x8739, -/* 0EB0 */ 0xFFFD, 0x8745, 0x871D, 0xFFFD, 0x88FF, 0x88EA, 0xFFFD, 0x88F5, -/* 0EB8 */ 0xFFFD, 0x8900, 0x88ED, 0x8903, 0x88E9, 0xFFFD, 0xFFFD, 0x89EA, -/* 0EC0 */ 0xFFFD, 0x8A9B, 0x8A8E, 0x8AA2, 0xFFFD, 0x8A9C, 0x8A94, 0x8A90, -/* 0EC8 */ 0x8AA9, 0x8AAC, 0xFFFD, 0x8A9F, 0xFFFD, 0xFFFD, 0x8A9D, 0xFFFD, -/* 0ED0 */ 0x8C67, 0xFFFD, 0xFFFD, 0x8CD0, 0x8CD6, 0x8CD4, 0x8D98, 0x8D9A, -/* 0ED8 */ 0x8D97, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E0B, 0x8E08, 0x8E01, 0x8EB4, -/* 0EE0 */ 0x8EB3, 0x8FA1, 0x8FA2, 0xFFFD, 0x905A, 0xFFFD, 0x9061, 0x905F, -/* 0EE8 */ 0xFFFD, 0xFFFD, 0x9125, 0x917B, 0x9176, 0x917C, 0xFFFD, 0x9289, -/* 0EF0 */ 0x92F6, 0x92B1, 0x92AD, 0x9292, 0x9281, 0x9284, 0xFFFD, 0x92AE, -/* 0EF8 */ 0x9290, 0x929E, 0xFFFD, 0xFFFD, 0xFFFD, 0x95A2, 0x95A7, 0xFFFD, -/* 0F00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96A0, 0x969D, 0x969F, 0x96D0, -/* 0F08 */ 0xFFFD, 0x96D1, 0xFFFD, 0xFFFD, 0x9759, 0xFFFD, 0x9764, 0xFFFD, -/* 0F10 */ 0xFFFD, 0xFFFD, 0x9819, 0xFFFD, 0x9814, 0x9815, 0x981A, 0xFFFD, -/* 0F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9906, 0xFFFD, 0x98F8, 0x9901, 0xFFFD, -/* 0F20 */ 0x99BE, 0x99BC, 0x99B7, 0x99B6, 0x99C0, 0xFFFD, 0x99B8, 0xFFFD, -/* 0F28 */ 0xFFFD, 0xFFFD, 0x99C4, 0xFFFD, 0x99BF, 0xFFFD, 0x9ADA, 0x9AE4, -/* 0F30 */ 0x9AE9, 0x9AE8, 0x9AEA, 0x9AE5, 0xFFFD, 0x9B26, 0xFFFD, 0xFFFD, -/* 0F38 */ 0x9B40, 0x9EBD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x510E, 0xFFFD, -/* 0F40 */ 0x50F7, 0xFFFD, 0x50FC, 0x510D, 0x5101, 0x51DA, 0x51D9, 0x51DB, -/* 0F48 */ 0x5286, 0x528E, 0x52EE, 0x5333, 0x53B1, 0xFFFD, 0x5647, 0x562D, -/* 0F50 */ 0x5654, 0xFFFD, 0x564B, 0x5652, 0x5631, 0x5644, 0x5656, 0x5650, -/* 0F58 */ 0x562B, 0xFFFD, 0x564D, 0x5637, 0x564F, 0x58A2, 0x58B7, 0xFFFD, -/* 0F60 */ 0x58B2, 0xFFFD, 0x58AA, 0x58B5, 0x58B0, 0xFFFD, 0x58B4, 0x58A4, -/* 0F68 */ 0x58A7, 0xFFFD, 0x5926, 0x5AFE, 0xFFFD, 0x5B04, 0xFFFD, 0x5AFC, -/* 0F70 */ 0xFFFD, 0x5B06, 0x5B0A, 0x5AFA, 0x5B0D, 0x5B00, 0x5B0E, 0xFFFD, -/* 0F78 */ 0xFFFD, 0xFFFD, 0x5D91, 0xFFFD, 0x5D8F, 0x5D90, 0x5D98, 0x5DA4, -/* 0F80 */ 0x5D9B, 0x5DA3, 0x5D96, 0x5DE4, 0x5E5A, 0xFFFD, 0xFFFD, 0x5E5E, -/* 0F88 */ 0xFFFD, 0x5FB8, 0x6157, 0x615C, 0x61A6, 0x6195, 0x6188, 0xFFFD, -/* 0F90 */ 0x61A3, 0x618F, 0xFFFD, 0x6164, 0xFFFD, 0x6159, 0x6178, 0xFFFD, -/* 0F98 */ 0x6185, 0x6187, 0x619E, 0xFFFD, 0xFFFD, 0x6198, 0x619C, 0xFFFD, -/* 0FA0 */ 0xFFFD, 0x622F, 0x6480, 0x649B, 0x648E, 0x648D, 0x6494, 0x64C6, -/* 0FA8 */ 0xFFFD, 0x64A8, 0x6483, 0xFFFD, 0x64B9, 0x6486, 0x64B4, 0x64AF, -/* 0FB0 */ 0x6491, 0xFFFD, 0x64AA, 0x64A1, 0x64A7, 0x66B6, 0x66B3, 0xFFFD, -/* 0FB8 */ 0x66BC, 0x66AC, 0xFFFD, 0x66AD, 0x6A0E, 0xFFFD, 0x6A1C, 0x6A1A, -/* 0FC0 */ 0xFFFD, 0xFFFD, 0x6A0B, 0xFFFD, 0x69EF, 0x6A0C, 0x69F0, 0x6A22, -/* 0FC8 */ 0xFFFD, 0x69D8, 0xFFFD, 0x6A12, 0x69FA, 0xFFFD, 0x6A2A, 0xFFFD, -/* 0FD0 */ 0x6A10, 0xFFFD, 0xFFFD, 0x6A29, 0x69F9, 0x69EA, 0x6A2C, 0x6A24, -/* 0FD8 */ 0xFFFD, 0x69E9, 0x6B52, 0x6B4F, 0x6B53, 0xFFFD, 0xFFFD, 0x6F10, -/* 0FE0 */ 0x6F65, 0x6F75, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6FD0, 0xFFFD, -/* 0FE8 */ 0x6F5C, 0x6F3D, 0x6F71, 0xFFFD, 0x6F91, 0x6F0B, 0x6F79, 0x6F81, -/* 0FF0 */ 0x6F8F, 0xFFFD, 0x6F59, 0x6F74, 0x71AE, 0xFFFD, 0x71A3, 0x71AD, -/* 0FF8 */ 0xFFFD, 0xFFFD, 0x71AB, 0x71A6, 0x71A2, 0xFFFD, 0x52F2, 0x7257, -/* 1000 */ 0x7255, 0x7299, 0x734B, 0x747A, 0xFFFD, 0xFFFD, 0xFFFD, 0x748C, -/* 1008 */ 0x7484, 0xFFFD, 0xFFFD, 0x7482, 0x7493, 0x747B, 0xFFFD, 0x7509, -/* 1010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x778A, 0xFFFD, -/* 1018 */ 0x7790, 0xFFFD, 0x78C6, 0x78D3, 0x78C0, 0x78D2, 0x78C7, 0x78C2, -/* 1020 */ 0xFFFD, 0x799F, 0x799D, 0x799E, 0xFFFD, 0x7A41, 0xFFFD, 0x7A38, -/* 1028 */ 0x7A3A, 0x7A42, 0xFFFD, 0xFFFD, 0x7A3E, 0x7AB0, 0x7BAE, 0x7BB3, -/* 1030 */ 0xFFFD, 0xFFFD, 0x7BBF, 0xFFFD, 0xFFFD, 0x7BCD, 0xFFFD, 0x7BB2, -/* 1038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7CC4, -/* 1040 */ 0x7CCD, 0x7CC2, 0x7CC6, 0x7CC3, 0x7CC9, 0x7CC7, 0xFFFD, 0x7DF8, -/* 1048 */ 0xFFFD, 0x7DED, 0x7DE2, 0xFFFD, 0xFFFD, 0xFFFD, 0x7DDC, 0x7E02, -/* 1050 */ 0x7E01, 0x7DD6, 0xFFFD, 0x7DE4, 0x7DFE, 0xFFFD, 0x7E00, 0x7DFC, -/* 1058 */ 0x7DFD, 0xFFFD, 0x7DF5, 0x7DFF, 0xFFFD, 0x7DEB, 0x7DE5, 0x7F78, -/* 1060 */ 0x7FAE, 0x7FE7, 0xFFFD, 0x8065, 0x806A, 0x8066, 0x8068, 0x806B, -/* 1068 */ 0x8194, 0x81A1, 0x8192, 0x8196, 0x8193, 0xFFFD, 0xFFFD, 0x8501, -/* 1070 */ 0xFFFD, 0x84F8, 0xFFFD, 0x84F5, 0xFFFD, 0x8504, 0xFFFD, 0xFFFD, -/* 1078 */ 0xFFFD, 0xFFFD, 0x851B, 0x8503, 0x8533, 0x8534, 0x84ED, 0xFFFD, -/* 1080 */ 0xFFFD, 0x8535, 0xFFFD, 0x8505, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1088 */ 0x877D, 0xFFFD, 0xFFFD, 0xFFFD, 0x8771, 0xFFFD, 0x885C, 0x88E6, -/* 1090 */ 0x890F, 0x891B, 0xFFFD, 0x89A9, 0x89A5, 0x89EE, 0x8AB1, 0xFFFD, -/* 1098 */ 0x8ACC, 0x8ACE, 0xFFFD, 0x8AB7, 0xFFFD, 0x8AB5, 0x8AE9, 0x8AB4, -/* 10A0 */ 0xFFFD, 0x8AB3, 0x8AC1, 0x8AAF, 0x8ACA, 0x8AD0, 0xFFFD, 0xFFFD, -/* 10A8 */ 0xFFFD, 0x8C8E, 0xFFFD, 0xFFFD, 0x8CE9, 0x8CDB, 0x8CEB, 0x8DA4, -/* 10B0 */ 0xFFFD, 0x8DA2, 0x8D9D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E2A, -/* 10B8 */ 0x8E28, 0xFFFD, 0xFFFD, 0x8EB8, 0x8EB6, 0x8EB9, 0x8EB7, 0x8F22, -/* 10C0 */ 0x8F2B, 0x8F27, 0x8F19, 0x8FA4, 0xFFFD, 0x8FB3, 0xFFFD, 0x9071, -/* 10C8 */ 0x906A, 0xFFFD, 0xFFFD, 0x9188, 0x918C, 0x92BF, 0x92B8, 0x92BE, -/* 10D0 */ 0x92DC, 0x92E5, 0xFFFD, 0xFFFD, 0x92D4, 0x92D6, 0xFFFD, 0x92DA, -/* 10D8 */ 0x92ED, 0x92F3, 0x92DB, 0xFFFD, 0x92B9, 0x92E2, 0x92EB, 0x95AF, -/* 10E0 */ 0xFFFD, 0x95B2, 0x95B3, 0xFFFD, 0xFFFD, 0xFFFD, 0x96A3, 0x96A5, -/* 10E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x970A, 0xFFFD, 0x9787, 0x9789, -/* 10F0 */ 0x978C, 0x97EF, 0x982A, 0x9822, 0xFFFD, 0x981F, 0xFFFD, 0x9919, -/* 10F8 */ 0xFFFD, 0x99CA, 0x99DA, 0xFFFD, 0xFFFD, 0xFFFD, 0x99DE, 0x99C8, -/* 1100 */ 0x99E0, 0xFFFD, 0x9AB6, 0x9AB5, 0xFFFD, 0x9AF4, 0xFFFD, 0x9B6B, -/* 1108 */ 0x9B69, 0x9B72, 0x9B63, 0x9D0D, 0xFFFD, 0x9D01, 0x9D0C, 0xFFFD, -/* 1110 */ 0x9CF8, 0xFFFD, 0xFFFD, 0x9CFE, 0x9D02, 0x9E84, 0xFFFD, 0x9EAB, -/* 1118 */ 0x9EAA, 0x511D, 0x5116, 0xFFFD, 0x512B, 0x511E, 0x511B, 0x5290, -/* 1120 */ 0x5294, 0x5314, 0xFFFD, 0xFFFD, 0x5667, 0xFFFD, 0x567B, 0xFFFD, -/* 1128 */ 0x565F, 0x5661, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1130 */ 0xFFFD, 0x58C3, 0x58CA, 0x58BB, 0x58C0, 0x58C4, 0x5901, 0x5B1F, -/* 1138 */ 0x5B18, 0x5B11, 0x5B15, 0xFFFD, 0x5B12, 0x5B1C, 0xFFFD, 0x5B22, -/* 1140 */ 0x5B79, 0x5DA6, 0xFFFD, 0x5DB3, 0x5DAB, 0x5EEA, 0xFFFD, 0x5F5B, -/* 1148 */ 0xFFFD, 0xFFFD, 0x61B7, 0x61CE, 0x61B9, 0x61BD, 0x61CF, 0x61C0, -/* 1150 */ 0x6199, 0x6197, 0xFFFD, 0x61BB, 0x61D0, 0x61C4, 0x6231, 0xFFFD, -/* 1158 */ 0x64D3, 0x64C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x64DC, 0x64D1, -/* 1160 */ 0x64C8, 0xFFFD, 0x64D5, 0x66C3, 0xFFFD, 0xFFFD, 0x66BF, 0x66C5, -/* 1168 */ 0x66CD, 0x66C1, 0x6706, 0xFFFD, 0x6724, 0x6A63, 0x6A42, 0x6A52, -/* 1170 */ 0xFFFD, 0x6A43, 0x6A33, 0xFFFD, 0x6A6C, 0x6A57, 0xFFFD, 0x6A4C, -/* 1178 */ 0x6A6E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A37, 0xFFFD, -/* 1180 */ 0x6A71, 0x6A4A, 0x6A36, 0xFFFD, 0x6A53, 0xFFFD, 0x6A45, 0x6A70, -/* 1188 */ 0xFFFD, 0xFFFD, 0x6A5C, 0x6B58, 0x6B57, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6FBB, 0xFFFD, 0xFFFD, 0x6FBE, 0xFFFD, -/* 1198 */ 0xFFFD, 0xFFFD, 0x6FB5, 0x6FD3, 0x6F9F, 0xFFFD, 0x6FB7, 0x6FF5, -/* 11A0 */ 0x71B7, 0xFFFD, 0x71BB, 0xFFFD, 0x71D1, 0xFFFD, 0x71BA, 0xFFFD, -/* 11A8 */ 0x71B6, 0x71CC, 0xFFFD, 0xFFFD, 0x71D3, 0x749B, 0xFFFD, 0xFFFD, -/* 11B0 */ 0x7496, 0x74A2, 0x749D, 0x750A, 0x750E, 0xFFFD, 0x7581, 0x762C, -/* 11B8 */ 0x7637, 0x7636, 0x763B, 0xFFFD, 0x76A1, 0xFFFD, 0xFFFD, 0x7798, -/* 11C0 */ 0xFFFD, 0x7796, 0x78D6, 0x78EB, 0xFFFD, 0x78DC, 0xFFFD, 0x79A5, -/* 11C8 */ 0x79A9, 0x9834, 0x7A53, 0x7A45, 0xFFFD, 0x7A4F, 0xFFFD, 0x7ABD, -/* 11D0 */ 0x7ABB, 0x7AF1, 0xFFFD, 0xFFFD, 0x7BEC, 0x7BED, 0xFFFD, 0xFFFD, -/* 11D8 */ 0x7CD3, 0xFFFD, 0x7CE1, 0xFFFD, 0x7E19, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11E0 */ 0x7E27, 0x7E26, 0xFFFD, 0xFFFD, 0x806E, 0x81AF, 0xFFFD, 0xFFFD, -/* 11E8 */ 0x81AD, 0xFFFD, 0x81AA, 0x8218, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11F0 */ 0x856F, 0x854C, 0xFFFD, 0x8542, 0xFFFD, 0x855C, 0x8570, 0x855F, -/* 11F8 */ 0xFFFD, 0x855A, 0x854B, 0x853F, 0x878A, 0xFFFD, 0x878B, 0x87A1, -/* 1200 */ 0x878E, 0xFFFD, 0xFFFD, 0x8799, 0x885E, 0x885F, 0x8924, 0x89A7, -/* 1208 */ 0x8AEA, 0x8AFD, 0x8AF9, 0x8AE3, 0x8AE5, 0xFFFD, 0xFFFD, 0x8AEC, -/* 1210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8CF2, 0xFFFD, 0x8CEF, 0xFFFD, -/* 1218 */ 0x8DA6, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E3B, 0x8E43, 0xFFFD, 0x8E32, -/* 1220 */ 0x8F31, 0x8F30, 0xFFFD, 0x8F2D, 0x8F3C, 0x8FA7, 0x8FA5, 0xFFFD, -/* 1228 */ 0xFFFD, 0xFFFD, 0x9137, 0x9195, 0x918E, 0xFFFD, 0x9196, 0xFFFD, -/* 1230 */ 0x9345, 0x930A, 0xFFFD, 0xFFFD, 0x92FD, 0x9317, 0x931C, 0x9307, -/* 1238 */ 0x9331, 0x9332, 0x932C, 0x9330, 0x9303, 0x9305, 0xFFFD, 0x95C2, -/* 1240 */ 0xFFFD, 0x95B8, 0xFFFD, 0x95C1, 0xFFFD, 0xFFFD, 0xFFFD, 0x96AB, -/* 1248 */ 0x96B7, 0xFFFD, 0xFFFD, 0x9715, 0x9714, 0xFFFD, 0xFFFD, 0x970C, -/* 1250 */ 0x9717, 0xFFFD, 0x9793, 0xFFFD, 0x97D2, 0xFFFD, 0xFFFD, 0x9836, -/* 1258 */ 0x9831, 0x9833, 0x983C, 0x982E, 0x983A, 0xFFFD, 0x983D, 0xFFFD, -/* 1260 */ 0x98B5, 0x9922, 0x9923, 0x9920, 0x991C, 0x991D, 0xFFFD, 0x99A0, -/* 1268 */ 0xFFFD, 0x99EF, 0x99E8, 0x99EB, 0xFFFD, 0xFFFD, 0xFFFD, 0x99E1, -/* 1270 */ 0x99E6, 0xFFFD, 0xFFFD, 0x9AF8, 0x9AF5, 0xFFFD, 0xFFFD, 0x9B83, -/* 1278 */ 0x9B94, 0x9B84, 0xFFFD, 0x9B8B, 0x9B8F, 0x9B8C, 0xFFFD, 0x9B89, -/* 1280 */ 0xFFFD, 0x9B8E, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D24, 0x9D0F, 0xFFFD, -/* 1288 */ 0x9D13, 0x9D0A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9D2A, 0x9D1A, -/* 1290 */ 0xFFFD, 0x9D27, 0x9D16, 0x9D21, 0xFFFD, 0x9E85, 0x9EAC, 0x9EC6, -/* 1298 */ 0x9EC5, 0x9ED7, 0x9F53, 0xFFFD, 0x5128, 0x5127, 0x51DF, 0xFFFD, -/* 12A0 */ 0x5335, 0x53B3, 0xFFFD, 0x568A, 0x567D, 0x5689, 0xFFFD, 0x58CD, -/* 12A8 */ 0x58D0, 0xFFFD, 0x5B2B, 0x5B33, 0x5B29, 0x5B35, 0x5B31, 0x5B37, -/* 12B0 */ 0x5C36, 0x5DBE, 0xFFFD, 0x5DB9, 0xFFFD, 0x5DBB, 0xFFFD, 0x61E2, -/* 12B8 */ 0x61DB, 0x61DD, 0x61DC, 0x61DA, 0xFFFD, 0x61D9, 0xFFFD, 0xFFFD, -/* 12C0 */ 0x64DF, 0xFFFD, 0xFFFD, 0x64E1, 0xFFFD, 0x64EE, 0xFFFD, 0x65B5, -/* 12C8 */ 0x66D4, 0x66D5, 0xFFFD, 0x66D0, 0x66D1, 0x66CE, 0x66D7, 0xFFFD, -/* 12D0 */ 0xFFFD, 0x6A7D, 0x6A8A, 0xFFFD, 0x6AA7, 0xFFFD, 0x6A99, 0x6A82, -/* 12D8 */ 0x6A88, 0x6A86, 0xFFFD, 0x6A98, 0x6A9D, 0xFFFD, 0xFFFD, 0x6A8F, -/* 12E0 */ 0xFFFD, 0x6AAA, 0xFFFD, 0x6B5D, 0xFFFD, 0x6C0A, 0xFFFD, 0x6FD7, -/* 12E8 */ 0x6FD6, 0x6FE5, 0xFFFD, 0xFFFD, 0xFFFD, 0x6FD9, 0x6FDA, 0x6FEA, -/* 12F0 */ 0xFFFD, 0x6FF6, 0xFFFD, 0xFFFD, 0x71E3, 0xFFFD, 0x71E9, 0xFFFD, -/* 12F8 */ 0x71EB, 0x71EF, 0x71F3, 0x71EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1300 */ 0xFFFD, 0x7371, 0xFFFD, 0x74AE, 0xFFFD, 0x74B3, 0xFFFD, 0x74AC, -/* 1308 */ 0xFFFD, 0xFFFD, 0x7583, 0x7645, 0x764E, 0x7644, 0x76A3, 0x76A5, -/* 1310 */ 0x77A6, 0x77A4, 0xFFFD, 0x77A9, 0x77AF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1318 */ 0x78F0, 0x78F8, 0x78F1, 0xFFFD, 0x7A49, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1320 */ 0x7AC2, 0x7AF2, 0x7AF3, 0x7BFA, 0xFFFD, 0x7BF6, 0x7BFC, 0x7C18, -/* 1328 */ 0x7C08, 0x7C12, 0xFFFD, 0xFFFD, 0x7CDB, 0x7CDA, 0xFFFD, 0xFFFD, -/* 1330 */ 0xFFFD, 0x7E2C, 0x7E4D, 0xFFFD, 0xFFFD, 0x7F46, 0x7FF6, 0x802B, -/* 1338 */ 0x8074, 0x81B8, 0x81C8, 0xFFFD, 0xFFFD, 0xFFFD, 0x8592, 0x8593, -/* 1340 */ 0xFFFD, 0x857F, 0x85AB, 0x8597, 0xFFFD, 0xFFFD, 0x85AC, 0xFFFD, -/* 1348 */ 0xFFFD, 0xFFFD, 0x87CE, 0xFFFD, 0x87CD, 0xFFFD, 0xFFFD, 0x87C1, -/* 1350 */ 0x87B1, 0x87C7, 0xFFFD, 0x8940, 0xFFFD, 0x893F, 0x8939, 0xFFFD, -/* 1358 */ 0x8943, 0xFFFD, 0xFFFD, 0xFFFD, 0x89AB, 0xFFFD, 0x8B1F, 0x8B09, -/* 1360 */ 0x8B0C, 0xFFFD, 0xFFFD, 0x8C40, 0xFFFD, 0x8C96, 0xFFFD, 0x8CF6, -/* 1368 */ 0x8CF7, 0xFFFD, 0x8E46, 0x8E4F, 0xFFFD, 0xFFFD, 0xFFFD, 0x8F3D, -/* 1370 */ 0x8F41, 0x9366, 0x9378, 0x935D, 0x9369, 0x9374, 0x937D, 0x936E, -/* 1378 */ 0x9372, 0x9373, 0x9362, 0x9348, 0x9353, 0x935F, 0x9368, 0xFFFD, -/* 1380 */ 0x937F, 0x936B, 0xFFFD, 0x95C4, 0xFFFD, 0x96AF, 0x96AD, 0x96B2, -/* 1388 */ 0xFFFD, 0xFFFD, 0x971A, 0x971B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1390 */ 0x979B, 0x979F, 0x9840, 0xFFFD, 0x9847, 0xFFFD, 0x98B7, 0xFFFD, -/* 1398 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99A2, 0xFFFD, 0xFFFD, 0x9A00, -/* 13A0 */ 0x99F3, 0xFFFD, 0xFFFD, 0x99F5, 0xFFFD, 0xFFFD, 0x9ABD, 0x9B00, -/* 13A8 */ 0x9B02, 0xFFFD, 0x9B34, 0x9B49, 0x9B9F, 0xFFFD, 0x9BA3, 0x9BCD, -/* 13B0 */ 0x9B99, 0x9B9D, 0xFFFD, 0xFFFD, 0x9D39, 0xFFFD, 0x9D44, 0xFFFD, -/* 13B8 */ 0xFFFD, 0x9D35, 0xFFFD, 0xFFFD, 0x9EAF, 0xFFFD, 0x512F, 0xFFFD, -/* 13C0 */ 0xFFFD, 0x9F8E, 0xFFFD, 0x569F, 0x569B, 0x569E, 0x5696, 0x5694, -/* 13C8 */ 0x56A0, 0xFFFD, 0x5B3B, 0xFFFD, 0xFFFD, 0x5B3A, 0x5DC1, 0x5F4D, -/* 13D0 */ 0x5F5D, 0x61F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x64F6, 0x64E5, -/* 13D8 */ 0x64EA, 0x64E7, 0x6505, 0xFFFD, 0x64F9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13E0 */ 0x6AAB, 0x6AED, 0x6AB2, 0x6AB0, 0x6AB5, 0x6ABE, 0x6AC1, 0x6AC8, -/* 13E8 */ 0xFFFD, 0x6AC0, 0x6ABC, 0x6AB1, 0x6AC4, 0x6ABF, 0xFFFD, 0xFFFD, -/* 13F0 */ 0x7008, 0x7003, 0x6FFD, 0x7010, 0x7002, 0x7013, 0xFFFD, 0x71FA, -/* 13F8 */ 0x7200, 0x74B9, 0x74BC, 0xFFFD, 0x765B, 0x7651, 0x764F, 0x76EB, -/* 1400 */ 0x77B8, 0xFFFD, 0x77B9, 0x77C1, 0x77C0, 0x77BE, 0x790B, 0xFFFD, -/* 1408 */ 0x7907, 0x790A, 0x7908, 0xFFFD, 0x790D, 0x7906, 0x7915, 0x79AF, -/* 1410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7AF5, 0xFFFD, 0xFFFD, 0x7C2E, 0xFFFD, -/* 1418 */ 0x7C1B, 0xFFFD, 0x7C1A, 0x7C24, 0xFFFD, 0xFFFD, 0x7CE6, 0x7CE3, -/* 1420 */ 0xFFFD, 0xFFFD, 0x7E5D, 0x7E4F, 0x7E66, 0x7E5B, 0x7F47, 0x7FB4, -/* 1428 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7FFA, 0x802E, 0xFFFD, 0xFFFD, 0x81CE, -/* 1430 */ 0xFFFD, 0xFFFD, 0x8219, 0xFFFD, 0xFFFD, 0x85CC, 0x85B2, 0xFFFD, -/* 1438 */ 0x85BB, 0x85C1, 0xFFFD, 0xFFFD, 0xFFFD, 0x87E9, 0x87EE, 0x87F0, -/* 1440 */ 0x87D6, 0x880E, 0x87DA, 0x8948, 0x894A, 0x894E, 0x894D, 0x89B1, -/* 1448 */ 0x89B0, 0x89B3, 0xFFFD, 0x8B38, 0x8B32, 0xFFFD, 0x8B2D, 0xFFFD, -/* 1450 */ 0x8B34, 0xFFFD, 0x8B29, 0x8C74, 0xFFFD, 0xFFFD, 0x8D03, 0xFFFD, -/* 1458 */ 0xFFFD, 0x8DA9, 0x8E58, 0xFFFD, 0xFFFD, 0x8EBF, 0x8EC1, 0x8F4A, -/* 1460 */ 0x8FAC, 0xFFFD, 0x9089, 0x913D, 0x913C, 0x91A9, 0x93A0, 0xFFFD, -/* 1468 */ 0x9390, 0xFFFD, 0x9393, 0x938B, 0x93AD, 0x93BB, 0x93B8, 0xFFFD, -/* 1470 */ 0xFFFD, 0x939C, 0x95D8, 0x95D7, 0xFFFD, 0xFFFD, 0xFFFD, 0x975D, -/* 1478 */ 0x97A9, 0x97DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9854, 0xFFFD, -/* 1480 */ 0x9855, 0x984B, 0xFFFD, 0x983F, 0x98B9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1488 */ 0xFFFD, 0x9938, 0x9936, 0x9940, 0xFFFD, 0x993B, 0x9939, 0x99A4, -/* 1490 */ 0xFFFD, 0xFFFD, 0x9A08, 0x9A0C, 0xFFFD, 0x9A10, 0xFFFD, 0x9B07, -/* 1498 */ 0xFFFD, 0x9BD2, 0xFFFD, 0x9BC2, 0x9BBB, 0x9BCC, 0x9BCB, 0xFFFD, -/* 14A0 */ 0xFFFD, 0x9D4D, 0x9D63, 0x9D4E, 0xFFFD, 0x9D50, 0x9D55, 0x9D5E, -/* 14A8 */ 0xFFFD, 0x9E90, 0x9EB2, 0x9EB1, 0xFFFD, 0x9ECA, 0x9F02, 0x9F27, -/* 14B0 */ 0x9F26, 0xFFFD, 0x56AF, 0x58E0, 0x58DC, 0xFFFD, 0x5B39, 0xFFFD, -/* 14B8 */ 0xFFFD, 0x5B7C, 0x5BF3, 0xFFFD, 0xFFFD, 0x5C6B, 0x5DC4, 0x650B, -/* 14C0 */ 0x6508, 0x650A, 0xFFFD, 0xFFFD, 0x65DC, 0xFFFD, 0xFFFD, 0x66E1, -/* 14C8 */ 0x66DF, 0x6ACE, 0x6AD4, 0x6AE3, 0x6AD7, 0x6AE2, 0xFFFD, 0xFFFD, -/* 14D0 */ 0xFFFD, 0xFFFD, 0x6AD8, 0x6AD5, 0x6AD2, 0xFFFD, 0xFFFD, 0x701E, -/* 14D8 */ 0x702C, 0x7025, 0x6FF3, 0x7204, 0x7208, 0x7215, 0xFFFD, 0x74C4, -/* 14E0 */ 0x74C9, 0x74C7, 0x74C8, 0x76A9, 0x77C6, 0x77C5, 0x7918, 0x791A, -/* 14E8 */ 0x7920, 0xFFFD, 0x7A66, 0x7A64, 0x7A6A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7C35, 0x7C34, 0xFFFD, 0xFFFD, 0x7E6C, -/* 14F8 */ 0xFFFD, 0x7E6E, 0x7E71, 0xFFFD, 0x81D4, 0x81D6, 0x821A, 0x8262, -/* 1500 */ 0x8265, 0x8276, 0x85DB, 0x85D6, 0x85E7, 0xFFFD, 0xFFFD, 0x85F4, -/* 1508 */ 0xFFFD, 0x87FD, 0x87D5, 0x8807, 0xFFFD, 0x880F, 0x87F8, 0xFFFD, -/* 1510 */ 0xFFFD, 0x8987, 0xFFFD, 0x89B5, 0x89F5, 0xFFFD, 0x8B3F, 0x8B43, -/* 1518 */ 0x8B4C, 0xFFFD, 0x8D0B, 0x8E6B, 0x8E68, 0x8E70, 0x8E75, 0x8E77, -/* 1520 */ 0xFFFD, 0x8EC3, 0xFFFD, 0x93E9, 0x93EA, 0x93CB, 0x93C5, 0x93C6, -/* 1528 */ 0xFFFD, 0x93ED, 0x93D3, 0xFFFD, 0x93E5, 0xFFFD, 0xFFFD, 0x93DB, -/* 1530 */ 0x93EB, 0x93E0, 0x93C1, 0xFFFD, 0xFFFD, 0x95DD, 0xFFFD, 0xFFFD, -/* 1538 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x97B2, -/* 1540 */ 0x97B4, 0x97B1, 0x97B5, 0x97F2, 0xFFFD, 0xFFFD, 0xFFFD, 0x9856, -/* 1548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9944, 0xFFFD, 0x9A26, 0x9A1F, 0x9A18, -/* 1550 */ 0x9A21, 0x9A17, 0xFFFD, 0x9B09, 0xFFFD, 0xFFFD, 0x9BC5, 0x9BDF, -/* 1558 */ 0xFFFD, 0x9BE3, 0xFFFD, 0x9BE9, 0x9BEE, 0xFFFD, 0xFFFD, 0x9D66, -/* 1560 */ 0x9D7A, 0x9D6E, 0x9D91, 0x9D83, 0x9D76, 0x9D7E, 0x9D6D, 0xFFFD, -/* 1568 */ 0x9E95, 0x9EE3, 0xFFFD, 0xFFFD, 0x9F03, 0x9F04, 0xFFFD, 0x9F17, -/* 1570 */ 0xFFFD, 0x5136, 0xFFFD, 0x5336, 0xFFFD, 0x5B42, 0xFFFD, 0xFFFD, -/* 1578 */ 0x5B44, 0x5B46, 0x5B7E, 0x5DCA, 0x5DC8, 0x5DCC, 0x5EF0, 0xFFFD, -/* 1580 */ 0x6585, 0x66E5, 0x66E7, 0xFFFD, 0xFFFD, 0xFFFD, 0x6AF4, 0xFFFD, -/* 1588 */ 0x6AE9, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x703D, 0xFFFD, -/* 1590 */ 0x7036, 0xFFFD, 0x7216, 0xFFFD, 0x7212, 0x720F, 0x7217, 0x7211, -/* 1598 */ 0x720B, 0xFFFD, 0xFFFD, 0x74CD, 0x74D0, 0x74CC, 0x74CE, 0x74D1, -/* 15A0 */ 0xFFFD, 0x7589, 0xFFFD, 0x7A6F, 0x7C4B, 0x7C44, 0xFFFD, 0xFFFD, -/* 15A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7E7F, 0x8B71, 0xFFFD, 0x802F, 0x807A, -/* 15B0 */ 0x807B, 0x807C, 0xFFFD, 0xFFFD, 0xFFFD, 0x85FC, 0x8610, 0x8602, -/* 15B8 */ 0xFFFD, 0xFFFD, 0x85EE, 0x8603, 0xFFFD, 0x860D, 0x8613, 0x8608, -/* 15C0 */ 0x860F, 0x8818, 0x8812, 0xFFFD, 0xFFFD, 0x8967, 0x8965, 0x89BB, -/* 15C8 */ 0x8B69, 0x8B62, 0xFFFD, 0x8B6E, 0xFFFD, 0x8B61, 0xFFFD, 0x8B64, -/* 15D0 */ 0x8B4D, 0x8C51, 0xFFFD, 0xFFFD, 0x8E83, 0x8EC6, 0xFFFD, 0x941F, -/* 15D8 */ 0xFFFD, 0x9404, 0x9417, 0x9408, 0x9405, 0xFFFD, 0x93F3, 0x941E, -/* 15E0 */ 0x9402, 0x941A, 0x941B, 0x9427, 0x941C, 0xFFFD, 0x96B5, 0xFFFD, -/* 15E8 */ 0xFFFD, 0x9733, 0xFFFD, 0x9734, 0x9731, 0x97B8, 0x97BA, 0xFFFD, -/* 15F0 */ 0x97FC, 0xFFFD, 0xFFFD, 0x98C3, 0xFFFD, 0x994D, 0xFFFD, 0x9A2F, -/* 15F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9AC9, 0xFFFD, 0x9AC8, 0x9AC4, 0x9B2A, -/* 1600 */ 0x9B38, 0x9B50, 0xFFFD, 0x9C0A, 0x9BFB, 0x9C04, 0x9BFC, 0x9BFE, -/* 1608 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9C02, 0x9BF6, 0x9C1B, 0x9BF9, 0x9C15, -/* 1610 */ 0x9C10, 0x9BFF, 0x9C00, 0x9C0C, 0xFFFD, 0xFFFD, 0x9D95, 0x9DA5, -/* 1618 */ 0x9E98, 0x9EC1, 0xFFFD, 0x9F5A, 0x5164, 0x56BB, 0xFFFD, 0x58E6, -/* 1620 */ 0x5B49, 0x5BF7, 0xFFFD, 0xFFFD, 0x5DD0, 0xFFFD, 0x5FC2, 0xFFFD, -/* 1628 */ 0x6511, 0xFFFD, 0x6AFF, 0x6AFE, 0x6AFD, 0xFFFD, 0x6B01, 0xFFFD, -/* 1630 */ 0xFFFD, 0x704B, 0x704D, 0x7047, 0x74D3, 0x7668, 0x7667, 0xFFFD, -/* 1638 */ 0xFFFD, 0x77D1, 0x7930, 0x7932, 0x792E, 0xFFFD, 0x9F9D, 0x7AC9, -/* 1640 */ 0x7AC8, 0xFFFD, 0x7C56, 0x7C51, 0xFFFD, 0xFFFD, 0xFFFD, 0x7E85, -/* 1648 */ 0x7E89, 0x7E8E, 0x7E84, 0xFFFD, 0x826A, 0x862B, 0x862F, 0x8628, -/* 1650 */ 0xFFFD, 0x8616, 0x8615, 0x861D, 0x881A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1658 */ 0x89BC, 0x8B75, 0x8B7C, 0xFFFD, 0x8D11, 0x8D12, 0x8F5C, 0x91BB, -/* 1660 */ 0xFFFD, 0x93F4, 0xFFFD, 0xFFFD, 0x942D, 0xFFFD, 0xFFFD, 0x96E4, -/* 1668 */ 0x9737, 0x9736, 0x9767, 0x97BE, 0x97BD, 0x97E2, 0x9868, 0x9866, -/* 1670 */ 0x98C8, 0x98CA, 0x98C7, 0x98DC, 0xFFFD, 0x994F, 0x99A9, 0x9A3C, -/* 1678 */ 0xFFFD, 0x9A3B, 0x9ACE, 0xFFFD, 0x9B14, 0x9B53, 0xFFFD, 0x9C2E, -/* 1680 */ 0xFFFD, 0x9C1F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DB0, 0x9DBD, -/* 1688 */ 0xFFFD, 0xFFFD, 0x9DAE, 0x9DC4, 0x9E7B, 0xFFFD, 0xFFFD, 0x9E9E, -/* 1690 */ 0xFFFD, 0x9F05, 0xFFFD, 0x9F69, 0x9FA1, 0x56C7, 0x571D, 0x5B4A, -/* 1698 */ 0x5DD3, 0xFFFD, 0x5F72, 0x6202, 0xFFFD, 0x6235, 0x6527, 0x651E, -/* 16A0 */ 0x651F, 0xFFFD, 0xFFFD, 0x6B07, 0x6B06, 0xFFFD, 0xFFFD, 0x7054, -/* 16A8 */ 0x721C, 0x7220, 0x7AF8, 0xFFFD, 0x7C5D, 0x7C58, 0xFFFD, 0x7E92, -/* 16B0 */ 0x7F4E, 0xFFFD, 0xFFFD, 0xFFFD, 0x8827, 0xFFFD, 0x8B81, 0x8B83, -/* 16B8 */ 0xFFFD, 0x8C44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9442, 0x944D, -/* 16C0 */ 0x9454, 0x944E, 0xFFFD, 0x9443, 0xFFFD, 0xFFFD, 0x973C, 0x9740, -/* 16C8 */ 0x97C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x995A, 0x9A51, 0xFFFD, -/* 16D0 */ 0x9ADD, 0xFFFD, 0xFFFD, 0x9C38, 0x9C45, 0x9C3A, 0xFFFD, 0x9C35, -/* 16D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9EF1, 0xFFFD, 0x9F93, 0x529A, 0xFFFD, -/* 16E0 */ 0xFFFD, 0x8641, 0x5DD7, 0xFFFD, 0x6528, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16E8 */ 0x7053, 0x7059, 0xFFFD, 0x7221, 0xFFFD, 0x766F, 0x7937, 0x79B5, -/* 16F0 */ 0x7C62, 0x7C5E, 0x7CF5, 0xFFFD, 0xFFFD, 0x863D, 0xFFFD, 0x882D, -/* 16F8 */ 0x8989, 0x8B8D, 0x8B87, 0x8B90, 0x8D1A, 0x8E99, 0xFFFD, 0xFFFD, -/* 1700 */ 0xFFFD, 0x945F, 0xFFFD, 0xFFFD, 0x9456, 0x9461, 0x945B, 0x945A, -/* 1708 */ 0x945C, 0x9465, 0xFFFD, 0x9741, 0xFFFD, 0xFFFD, 0x986E, 0x986C, -/* 1710 */ 0x986D, 0xFFFD, 0x99AA, 0x9A5C, 0x9A58, 0x9ADE, 0xFFFD, 0x9C4F, -/* 1718 */ 0x9C51, 0xFFFD, 0x9C53, 0xFFFD, 0xFFFD, 0xFFFD, 0x9DFC, 0x9F39, -/* 1720 */ 0xFFFD, 0x513E, 0xFFFD, 0x56D2, 0xFFFD, 0x5B4F, 0x6B14, 0xFFFD, -/* 1728 */ 0x7A72, 0x7A73, 0xFFFD, 0xFFFD, 0xFFFD, 0x8B91, 0xFFFD, 0xFFFD, -/* 1730 */ 0x91BF, 0x946C, 0xFFFD, 0xFFFD, 0x96E6, 0x9745, 0xFFFD, 0x97C8, -/* 1738 */ 0x97E4, 0x995D, 0xFFFD, 0x9B21, 0xFFFD, 0x9B2C, 0x9B57, 0xFFFD, -/* 1740 */ 0xFFFD, 0x9C5D, 0x9C61, 0x9C65, 0x9E08, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1748 */ 0xFFFD, 0xFFFD, 0x9F45, 0xFFFD, 0xFFFD, 0x6205, 0x66EF, 0x6B1B, -/* 1750 */ 0x6B1D, 0x7225, 0x7224, 0x7C6D, 0xFFFD, 0x8642, 0x8649, 0xFFFD, -/* 1758 */ 0x8978, 0x898A, 0x8B97, 0xFFFD, 0x8C9B, 0x8D1C, 0xFFFD, 0x8EA2, -/* 1760 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1768 */ 0x9C6C, 0xFFFD, 0x9C6F, 0xFFFD, 0x9E0E, 0xFFFD, 0x9F08, 0x9F1D, -/* 1770 */ 0x9FA3, 0xFFFD, 0xFFFD, 0x5F60, 0x6B1C, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1778 */ 0x7CF3, 0xFFFD, 0x8B9B, 0x8EA7, 0x91C4, 0xFFFD, 0x947A, 0xFFFD, -/* 1780 */ 0xFFFD, 0x9A61, 0x9A63, 0x9AD7, 0x9C76, 0xFFFD, 0x9FA5, 0xFFFD, -/* 1788 */ 0x7067, 0xFFFD, 0x72AB, 0x864A, 0x897D, 0x8B9D, 0x8C53, 0x8F65, -/* 1790 */ 0x947B, 0xFFFD, 0x98CD, 0x98DD, 0xFFFD, 0x9B30, 0x9E16, 0xFFFD, -/* 1798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x96E7, 0x9E18, 0x9EA2, 0xFFFD, -/* 17A0 */ 0x9F7C, 0xFFFD, 0x7E9E, 0x9484, 0xFFFD, 0x9E1C, 0xFFFD, 0x7C71, -/* 17A8 */ 0x97CA, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EA3, 0xFFFD, 0x9C7B, 0x9F97, -/* 17B0 */ 0xFFFD, 0xFFFD, 0x9750, 0xFFFD, 0xFFFD, 0xFFFD, 0x5727, 0x5C13, -/* 17B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5FC8, 0xFFFD, -/* 17C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6765, 0xFFFD, 0xFFFD, 0x52BD, -/* 17C8 */ 0xFFFD, 0x5B66, 0xFFFD, 0x65F9, 0x6788, 0x6CE6, 0x6CCB, 0xFFFD, -/* 17D0 */ 0x4FBD, 0x5F8D, 0xFFFD, 0x6018, 0x6048, 0xFFFD, 0x6B29, 0x70A6, -/* 17D8 */ 0xFFFD, 0x7706, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A10, 0x5CFC, 0x5CFE, -/* 17E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x70C9, 0x9579, -/* 17E8 */ 0xFFFD, 0x96BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F0 */ 0xFFFD, 0x7B29, 0x8128, 0xFFFD, 0x8A2E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F8 */ 0x9AD9, 0xFFFD, 0x582B, 0x5845, 0xFFFD, 0x63FA, 0xFFFD, 0xFFFD, -/* 1800 */ 0xFFFD, 0x6E86, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5867, -/* 1808 */ 0xFFFD, 0x5BDD, 0x656E, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C87, 0xFFFD, -/* 1810 */ 0x50D2, 0x50DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x69BA, 0xFFFD, -/* 1818 */ 0x6B9D, 0xFFFD, 0x8059, 0x6F8A, 0xFFFD, 0xFFFD, 0x7BC3, 0x7BC2, -/* 1820 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90F6, 0xFFFD, 0x9823, 0xFFFD, -/* 1828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x71CD, 0x7499, 0xFFFD, 0xFFFD, -/* 1830 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9842, 0x7F84, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1838 */ 0xFFFD, 0xFFFD, 0x8D0E, 0xFFFD, 0x9861, 0xFFFD, 0xFFFD, 0x8B73, -/* 1840 */ 0xFFFD, 0x9C27, 0xFFFD, 0x9458, 0x77D6, 0x9B2D, 0x4F66, 0x4F68, -/* 1848 */ 0x4FE7, 0x503F, 0xFFFD, 0x50A6, 0x510F, 0x523E, 0x5324, 0x5365, -/* 1850 */ 0x539B, 0x517F, 0x54CB, 0x5573, 0x5571, 0x556B, 0x55F4, 0x5622, -/* 1858 */ 0x5620, 0x5692, 0x56BA, 0x5691, 0x56B0, 0x5759, 0x578A, 0x580F, -/* 1860 */ 0x5812, 0x5813, 0x5847, 0x589B, 0x5900, 0x594D, 0x5AD1, 0x5AD3, -/* 1868 */ 0x5B67, 0x5C57, 0x5C77, 0x5CD5, 0x5D75, 0x5D8E, 0x5DA5, 0x5DB6, -/* 1870 */ 0x5DBF, 0x5E65, 0x5ECD, 0x5EED, 0x5F94, 0x5F9A, 0x5FBA, 0x6125, -/* 1878 */ 0x6150, 0x62A3, 0x6360, 0x6364, 0x63B6, 0x6403, 0x64B6, 0x651A, -/* 1880 */ 0x7A25, 0x5C21, 0x66E2, 0x6702, 0x67A4, 0x67AC, 0x6810, 0x6806, -/* 1888 */ 0x685E, 0x685A, 0x692C, 0x6929, 0x6A2D, 0x6A77, 0x6A7A, 0x6ACA, -/* 1890 */ 0x6AE6, 0x6AF5, 0x6B0D, 0x6B0E, 0x6BDC, 0x6BDD, 0x6BF6, 0x6C1E, -/* 1898 */ 0x6C63, 0x6DA5, 0x6E0F, 0x6E8A, 0x6E84, 0x6E8B, 0x6E7C, 0x6F4C, -/* 18A0 */ 0x6F48, 0x6F49, 0x6F9D, 0x6F99, 0x6FF8, 0x702E, 0x702D, 0x705C, -/* 18A8 */ 0x79CC, 0x70BF, 0x70EA, 0x70E5, 0x7111, 0x7112, 0x713F, 0x7139, -/* 18B0 */ 0x713B, 0x713D, 0x7177, 0x7175, 0x7176, 0x7171, 0x7196, 0x7193, -/* 18B8 */ 0x71B4, 0x71DD, 0x71DE, 0x720E, 0x5911, 0x7218, 0x7347, 0x7348, -/* 18C0 */ 0x73EF, 0x7412, 0x743B, 0x74A4, 0x748D, 0x74B4, 0x7673, 0x7677, -/* 18C8 */ 0x76BC, 0x7819, 0x781B, 0x783D, 0x7853, 0x7854, 0x7858, 0x78B7, -/* 18D0 */ 0x78D8, 0x78EE, 0x7922, 0x794D, 0x7986, 0x7999, 0x79A3, 0x79BC, -/* 18D8 */ 0x7AA7, 0x7B37, 0x7B59, 0x7BD0, 0x7C2F, 0x7C32, 0x7C42, 0x7C4E, -/* 18E0 */ 0x7C68, 0x7CA9, 0x7CED, 0x7DD0, 0x7E07, 0x7DD3, 0x7E64, 0x7F40, -/* 18E8 */ 0xFFFD, 0x8041, 0x8063, 0x80BB, 0x6711, 0x6725, 0x8248, 0x8310, -/* 18F0 */ 0x8362, 0x8312, 0x8421, 0x841E, 0x84E2, 0x84DE, 0x84E1, 0x8573, -/* 18F8 */ 0x85D4, 0x85F5, 0x8637, 0x8645, 0x8672, 0x874A, 0x87A9, 0x87A5, -/* 1900 */ 0x87F5, 0x8834, 0x8850, 0x8887, 0x8954, 0x8984, 0x8B03, 0x8C52, -/* 1908 */ 0x8CD8, 0x8D0C, 0x8D18, 0x8DB0, 0x8EBC, 0x8ED5, 0x8FAA, 0x909C, -/* 1910 */ 0xFFFD, 0x915C, 0x922B, 0x9221, 0x9273, 0x92F4, 0x92F5, 0x933F, -/* 1918 */ 0x9342, 0x9386, 0x93BE, 0x93BC, 0x93BD, 0x93F1, 0x93F2, 0x93EF, -/* 1920 */ 0x9422, 0x9423, 0x9424, 0x9467, 0x9466, 0x9597, 0x95CE, 0x95E7, -/* 1928 */ 0x973B, 0x974D, 0x98E4, 0x9942, 0x9B1D, 0x9B98, 0xFFFD, 0x9D49, -/* 1930 */ 0x6449, 0x5E71, 0x5E85, 0x61D3, 0x990E, 0x8002, 0x781E, 0x5528, -/* 1938 */ 0x5572, 0x55BA, 0x55F0, 0x55EE, 0x56B8, 0x56B9, 0x56C4, 0x8053, -/* 1940 */ 0x92B0, -/* End of table Total Length = 0x1A33 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cns_2.ut b/mozilla/lib/libi18n/unicode/utotbl/cns_2.ut deleted file mode 100644 index a1446fc4149..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cns_2.ut +++ /dev/null @@ -1,2730 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 1 - srcBegin = 2121 - srcEnd = 217E - mappingOffset = 0000 - Mapping = - 4E42 4E5C 51F5 531A 5382 4E07 4E0C 4E47 - 4E8D 56D7 5C6E 5F73 4E0F 5187 4E0E 4E2E - 4E93 4EC2 4EC9 4EC8 5198 52FC 536C 53B9 - 5720 5903 592C 5C10 5DFF 65E1 6BB3 6BCC - 6C14 723F 4E31 4E3C 4EE8 4EDC 4EE9 4EE1 - 4EDD 4EDA 520C 5209 531C 534C 5722 5723 - 5917 592F 5B81 5B84 5C12 5C3B 5C74 5C73 - 5E04 5E80 5E82 5FC9 6209 6250 6C15 6C36 - 6C43 6C3F 6C3B 72AE 72B0 738A 79B8 808A - 961E 4F0E 4F18 4F2C 4EF5 4F14 4EF1 4F00 - 4EF7 4F08 4F1D 4F02 4F05 4F22 4F13 4F04 - 4EF4 4F12 51B1 5213 5210 52A6 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 2221 - srcEnd = 227E - mappingOffset = 005E - Mapping = - 5322 531F 534D 538A 5407 56E1 56DF 572E - 572A 5734 593C 5980 597C 5985 597B 597E - 5977 597F 5B56 5C15 5C25 5C7C 5C7A 5C7B - 5C7E 5DDF 5E75 5E84 5F02 5F1A 5F74 5FD5 - 5FD4 5FCF 625C 625E 6264 6261 6266 6262 - 6259 6260 625A 6265 6537 65EF 65EE 673E - 6739 6738 673B 673A 673F 673C 6733 6C18 - 6C46 6C52 6C5C 6C4F 6C4A 6C54 6C4B 6C4C - 7071 725E 72B4 72B5 738E 752A 767F 7A75 - 7F51 8278 827C 8280 827D 827F 864D 897E - 9099 9097 9098 909B 9094 9622 9624 9620 - 9623 4F56 4F3B 4F62 4F49 4F53 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 2321 - srcEnd = 237E - mappingOffset = 00BC - Mapping = - 4F64 4F3E 4F67 4F52 4F5F 4F41 4F58 4F2D - 4F33 4F3F 4F61 518F 51B9 521C 521E 5221 - 52AD 52AE 5309 5363 5372 538E 538F 5430 - 5437 542A 5454 5445 5419 541C 5425 5418 - 543D 544F 5441 5428 5424 5447 56EE 56E7 - 56E5 5741 5745 574C 5749 574B 5752 5906 - 5940 59A6 5998 59A0 5997 598E 59A2 5990 - 598F 59A7 59A1 5B8E 5B92 5C28 5C2A 5C8D - 5C8F 5C88 5C8B 5C89 5C92 5C8A 5C86 5C93 - 5C95 5DE0 5E0A 5E0E 5E8B 5E89 5E8C 5E88 - 5E8D 5F05 5F1D 5F78 5F76 5FD2 5FD1 5FD0 - 5FED 5FE8 5FEE 5FF3 5FE1 5FE4 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 2421 - srcEnd = 247E - mappingOffset = 011A - Mapping = - 5FE3 5FFA 5FEF 5FF7 5FFB 6000 5FF4 623A - 6283 628C 628E 628F 6294 6287 6271 627B - 627A 6270 6281 6288 6277 627D 6272 6274 - 65F0 65F4 65F3 65F2 65F5 6745 6747 6759 - 6755 674C 6748 675D 674D 675A 674B 6BD0 - 6C19 6C1A 6C78 6C67 6C6B 6C84 6C8B 6C8F - 6C71 6C6F 6C69 6C9A 6C6D 6C87 6C95 6C9C - 6C66 6C73 6C65 6C7B 6C8E 7074 707A 7263 - 72BF 72BD 72C3 72C6 72C1 72BA 72C5 7395 - 7397 7393 7394 7392 753A 7539 7594 7595 - 7681 793D 8034 8095 8099 8090 8092 809C - 8290 828F 8285 828E 8291 8293 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 2521 - srcEnd = 257E - mappingOffset = 0178 - Mapping = - 828A 8283 8284 8C78 8FC9 8FBF 909F 90A1 - 90A5 909E 90A7 90A0 9630 9628 962F 962D - 4E33 4F98 4F7C 4F85 4F7D 4F80 4F87 4F76 - 4F74 4F89 4F84 4F77 4F4C 4F97 4F6A 4F9A - 4F79 4F81 4F78 4F90 4F9C 4F94 4F9E 4F92 - 4F82 4F95 4F6B 4F6E 519E 51BC 51BE 5235 - 5232 5233 5246 5231 52BC 530A 530B 533C - 5392 5394 5487 547F 5481 5491 5482 5488 - 546B 547A 547E 5465 546C 5474 5466 548D - 546F 5461 5460 5498 5463 5467 5464 56F7 - 56F9 576F 5772 576D 576B 5771 5770 5776 - 5780 5775 577B 5773 5774 5762 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 2621 - srcEnd = 267E - mappingOffset = 01D6 - Mapping = - 5768 577D 590C 5945 59B5 59BA 59CF 59CE - 59B2 59CC 59C1 59B6 59BC 59C3 59D6 59B1 - 59BD 59C0 59C8 59B4 59C7 5B62 5B65 5B93 - 5B95 5C44 5C47 5CAE 5CA4 5CA0 5CB5 5CAF - 5CA8 5CAC 5C9F 5CA3 5CAD 5CA2 5CAA 5CA7 - 5C9D 5CA5 5CB6 5CB0 5CA6 5E17 5E14 5E19 - 5F28 5F22 5F23 5F24 5F54 5F82 5F7E 5F7D - 5FDE 5FE5 602D 6026 6019 6032 600B 6034 - 600A 6017 6033 601A 601E 602C 6022 600D - 6010 602E 6013 6011 600C 6009 601C 6214 - 623D 62AD 62B4 62D1 62BE 62AA 62B6 62CA - 62AE 62B3 62AF 62BB 62A9 62B0 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 2721 - srcEnd = 277E - mappingOffset = 0234 - Mapping = - 62B8 653D 65A8 65BB 6609 65FC 6604 6612 - 6608 65FB 6603 660B 660D 6605 65FD 6611 - 6610 66F6 670A 6785 676C 678E 6792 6776 - 677B 6798 6786 6784 6774 678D 678C 677A - 679F 6791 6799 6783 677D 6781 6778 6779 - 6794 6B25 6B80 6B7E 6BDE 6C1D 6C93 6CEC - 6CEB 6CEE 6CD9 6CB6 6CD4 6CAD 6CE7 6CB7 - 6CD0 6CC2 6CBA 6CC3 6CC6 6CED 6CF2 6CD2 - 6CDD 6CB4 6C8A 6C9D 6C80 6CDE 6CC0 6D30 - 6CCD 6CC7 6CB0 6CF9 6CCF 6CE9 6CD1 7094 - 7098 7085 7093 7086 7084 7091 7096 7082 - 709A 7083 726A 72D6 72CB 72D8 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 2821 - srcEnd = 287E - mappingOffset = 0292 - Mapping = - 72C9 72DC 72D2 72D4 72DA 72CC 72D1 73A4 - 73A1 73AD 73A6 73A2 73A0 73AC 739D 74DD - 74E8 753F 7540 753E 758C 7598 76AF 76F3 - 76F1 76F0 76F5 77F8 77FC 77F9 77FB 77FA - 77F7 7942 793F 79C5 7A78 7A7B 7AFB 7C75 - 7CFD 8035 808F 80AE 80A3 80B8 80B5 80AD - 8220 82A0 82C0 82AB 829A 8298 829B 82B5 - 82A7 82AE 82BC 829E 82BA 82B4 82A8 82A1 - 82A9 82C2 82A4 82C3 82B6 82A2 8670 866F - 866D 866E 8C56 8FD2 8FCB 8FD3 8FCD 8FD6 - 8FD5 8FD7 90B2 90B4 90AF 90B3 90B0 9639 - 963D 963C 963A 9643 4FCD 4FC5 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 2921 - srcEnd = 297E - mappingOffset = 02F0 - Mapping = - 4FD3 4FB2 4FC9 4FCB 4FC1 4FD4 4FDC 4FD9 - 4FBB 4FB3 4FDB 4FC7 4FD6 4FBA 4FC0 4FB9 - 4FEC 5244 5249 52C0 52C2 533D 537C 5397 - 5396 5399 5398 54BA 54A1 54AD 54A5 54CF - 54C3 830D 54B7 54AE 54D6 54B6 54C5 54C6 - 54A0 5470 54BC 54A2 54BE 5472 54DE 54B0 - 57B5 579E 579F 57A4 578C 5797 579D 579B - 5794 5798 578F 5799 57A5 579A 5795 58F4 - 590D 5953 59E1 59DE 59EE 5A00 59F1 59DD - 59FA 59FD 59FC 59F6 59E4 59F2 59F7 59DB - 59E9 59F3 59F5 59E0 59FE 59F4 59ED 5BA8 - 5C4C 5CD0 5CD8 5CCC 5CD7 5CCB -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 2A21 - srcEnd = 2A7E - mappingOffset = 034E - Mapping = - 5CDB 5CDE 5CDA 5CC9 5CC7 5CCA 5CD6 5CD3 - 5CD4 5CCF 5CC8 5CC6 5CCE 5CDF 5CF8 5DF9 - 5E21 5E22 5E23 5E20 5E24 5EB0 5EA4 5EA2 - 5E9B 5EA3 5EA5 5F07 5F2E 5F56 5F86 6037 - 6039 6054 6072 605E 6045 6053 6047 6049 - 605B 604C 6040 6042 605F 6024 6044 6058 - 6066 606E 6242 6243 62CF 630D 630B 62F5 - 630E 6303 62EB 62F9 630F 630C 62F8 62F6 - 6300 6313 6314 62FA 6315 62FB 62F0 6541 - 6543 65AA 65BF 6636 6621 6632 6635 661C - 6626 6622 6633 662B 663A 661D 6634 6639 - 662E 670F 6710 67C1 67F2 67C8 -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 2B21 - srcEnd = 2B7E - mappingOffset = 03AC - Mapping = - 67BA 67DC 67BB 67F8 67D8 67C0 67B7 67C5 - 67EB 67E4 67DF 67B5 67CD 67B3 67F7 67F6 - 67EE 67E3 67C2 67B9 67CE 67E7 67F0 67B2 - 67FC 67C6 67ED 67CC 67AE 67E6 67DB 67FA - 67C9 67CA 67C3 67EA 67CB 6B28 6B82 6B84 - 6BB6 6BD6 6BD8 6BE0 6C20 6C21 6D28 6D34 - 6D2D 6D1F 6D3C 6D3F 6D12 6D0A 6CDA 6D33 - 6D04 6D19 6D3A 6D1A 6D11 6D00 6D1D 6D42 - 6D01 6D18 6D37 6D03 6D0F 6D40 6D07 6D20 - 6D2C 6D08 6D22 6D09 6D10 70B7 709F 70BE - 70B1 70B0 70A1 70B4 70B5 70A9 7241 7249 - 724A 726C 7270 7273 726E 72CA -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 2C21 - srcEnd = 2C7E - mappingOffset = 040A - Mapping = - 72E4 72E8 72EB 72DF 72EA 72E6 72E3 7385 - 73CC 73C2 73C8 73C5 73B9 73B6 73B5 73B4 - 73EB 73BF 73C7 73BE 73C3 73C6 73B8 73CB - 74EC 74EE 752E 7547 7548 75A7 75AA 7679 - 76C4 7708 7703 7704 7705 770A 76F7 76FB - 76FA 77E7 77E8 7806 7811 7812 7805 7810 - 780F 780E 7809 7803 7813 794A 794C 794B - 7945 7944 79D5 79CD 79CF 79D6 79CE 7A80 - 7A7E 7AD1 7B00 7B01 7C7A 7C78 7C79 7C7F - 7C80 7C81 7D03 7D08 7D01 7F58 7F91 7F8D - 7FBE 8007 800E 800F 8014 8037 80D8 80C7 - 80E0 80D1 80C8 80C2 80D0 80C5 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2D21 - srcEnd = 2D7E - mappingOffset = 0468 - Mapping = - 80E3 80D9 80DC 80CA 80D5 80C9 80CF 80D7 - 80E6 80CD 81FF 8221 8294 82D9 82FE 82F9 - 8307 82E8 8300 82D5 833A 82EB 82D6 82F4 - 82EC 82E1 82F2 82F5 830C 82FB 82F6 82F0 - 82EA 82E4 82E0 82FA 82F3 82ED 8677 8674 - 867C 8673 8841 884E 8867 886A 8869 89D3 - 8A04 8A07 8D72 8FE3 8FE1 8FEE 8FE0 90F1 - 90BD 90BF 90D5 90C5 90BE 90C7 90CB 90C8 - 91D4 91D3 9654 964F 9651 9653 964A 964E - 501E 5005 5007 5013 5022 5030 501B 4FF5 - 4FF4 5033 5037 502C 4FF6 4FF7 5017 501C - 5020 5027 5035 502F 5031 500E -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 2E21 - srcEnd = 2E7E - mappingOffset = 04C6 - Mapping = - 515A 5194 5193 51CA 51C4 51C5 51C8 51CE - 5261 525A 5252 525E 525F 5255 5262 52CD - 530E 539E 5526 54E2 5517 5512 54E7 54F3 - 54E4 551A 54FF 5504 5508 54EB 5511 5505 - 54F1 550A 54FB 54F7 54F8 54E0 550E 5503 - 550B 5701 5702 57CC 5832 57D5 57D2 57BA - 57C6 57BD 57BC 57B8 57B6 57BF 57C7 57D0 - 57B9 57C1 590E 594A 5A19 5A16 5A2D 5A2E - 5A15 5A0F 5A17 5A0A 5A1E 5A33 5B6C 5BA7 - 5BAD 5BAC 5C03 5C56 5C54 5CEC 5CFF 5CEE - 5CF1 5CF7 5D00 5CF9 5E29 5E28 5EA8 5EAE - 5EAA 5EAC 5F33 5F30 5F67 605D -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 2F21 - srcEnd = 2F7E - mappingOffset = 0524 - Mapping = - 605A 6067 6041 60A2 6088 6080 6092 6081 - 609D 6083 6095 609B 6097 6087 609C 608E - 6219 6246 62F2 6310 6356 632C 6344 6345 - 6336 6343 63E4 6339 634B 634A 633C 6329 - 6341 6334 6358 6354 6359 632D 6347 6333 - 635A 6351 6338 6357 6340 6348 654A 6546 - 65C6 65C3 65C4 65C2 664A 665F 6647 6651 - 6712 6713 681F 681A 6849 6832 6833 683B - 684B 684F 6816 6831 681C 6835 682B 682D - 682F 684E 6844 6834 681D 6812 6814 6826 - 6828 682E 684D 683A 6825 6820 6B2C 6B2F - 6B2D 6B31 6B34 6B6D 8082 6B88 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 3021 - srcEnd = 307E - mappingOffset = 0582 - Mapping = - 6BE6 6BE4 6BE8 6BE3 6BE2 6BE7 6C25 6D7A - 6D63 6D64 6D76 6D0D 6D61 6D92 6D58 6D62 - 6D6D 6D6F 6D91 6D8D 6DEF 6D7F 6D86 6D5E - 6D67 6D60 6D97 6D70 6D7C 6D5F 6D82 6D98 - 6D2F 6D68 6D8B 6D7E 6D80 6D84 6D16 6D83 - 6D7B 6D7D 6D75 6D90 70DC 70D3 70D1 70DD - 70CB 7F39 70E2 70D7 70D2 70DE 70E0 70D4 - 70CD 70C5 70C6 70C7 70DA 70CE 70E1 7242 - 7278 7277 7276 7300 72FA 72F4 72FE 72F6 - 72F3 72FB 7301 73D3 73D9 73E5 73D6 73BC - 73E7 73E3 73E9 73DC 73D2 73DB 73D4 73DD - 73DA 73D7 73D8 73E8 74DE 74DF -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 3121 - srcEnd = 317E - mappingOffset = 05E0 - Mapping = - 74F4 74F5 7521 755B 755F 75B0 75C1 75BB - 75C4 75C0 75BF 75B6 75BA 768A 76C9 771D - 771B 7710 7713 7712 7723 7711 7715 7719 - 771A 7722 7727 7823 782C 7822 7835 782F - 7828 782E 782B 7821 7829 7833 782A 7831 - 7954 795B 794F 795C 7953 7952 7951 79EB - 79EC 79E0 79EE 79ED 79EA 79DC 79DE 79DD - 7A86 7A89 7A85 7A8B 7A8C 7A8A 7A87 7AD8 - 7B10 7B04 7B13 7B05 7B0F 7B08 7B0A 7B0E - 7B09 7B12 7C84 7C91 7C8A 7C8C 7C88 7C8D - 7C85 7D1E 7D1D 7D11 7D0E 7D18 7D16 7D13 - 7D1F 7D12 7D0F 7D0C 7F5C 7F61 -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 3221 - srcEnd = 327E - mappingOffset = 063E - Mapping = - 7F5E 7F60 7F5D 7F5B 7F96 7F92 7FC3 7FC2 - 7FC0 8016 803E 8039 80FA 80F2 80F9 80F5 - 8101 80FB 8100 8201 822F 8225 8333 832D - 8344 8319 8351 8325 8356 833F 8341 8326 - 831C 8322 8342 834E 831B 832A 8308 833C - 834D 8316 8324 8320 8337 832F 8329 8347 - 8345 834C 8353 831E 832C 834B 8327 8348 - 8653 8652 86A2 86A8 8696 868D 8691 869E - 8687 8697 8686 868B 869A 8685 86A5 8699 - 86A1 86A7 8695 8698 868E 869D 8690 8694 - 8843 8844 886D 8875 8876 8872 8880 8871 - 887F 886F 8883 887E 8874 887C -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = 3321 - srcEnd = 337E - mappingOffset = 069C - Mapping = - 8A12 8C47 8C57 8C7B 8CA4 8CA3 8D76 8D78 - 8DB5 8DB7 8DB6 8ED1 8ED3 8FFE 8FF5 9002 - 8FFF 8FFB 9004 8FFC 8FF6 90D6 90E0 90D9 - 90DA 90E3 90DF 90E5 90D8 90DB 90D7 90DC - 90E4 9150 914E 914F 91D5 91E2 91DA 965C - 965F 96BC 98E3 9ADF 9B2F 4E7F 5070 506A - 5061 505E 5060 5053 504B 505D 5072 5048 - 504D 5041 505B 504A 5062 5015 5045 505F - 5069 506B 5063 5064 5046 5040 506E 5073 - 5057 5051 51D0 526B 526D 526C 526E 52D6 - 52D3 532D 539C 5575 5576 553C 554D 5550 - 5534 552A 5551 5562 5536 5535 -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 3421 - srcEnd = 347E - mappingOffset = 06FA - Mapping = - 5530 5552 5545 550C 5532 5565 554E 5539 - 5548 552D 553B 5540 554B 570A 5707 57FB - 5814 57E2 57F6 57DC 57F4 5800 57ED 57FD - 5808 57F8 580B 57F3 57CF 5807 57EE 57E3 - 57F2 57E5 57EC 57E1 580E 57FC 5810 57E7 - 5801 580C 57F1 57E9 57F0 580D 5804 595C - 5A60 5A58 5A55 5A67 5A5E 5A38 5A35 5A6D - 5A50 5A5F 5A65 5A6C 5A53 5A64 5A57 5A43 - 5A5D 5A52 5A44 5A5B 5A48 5A8E 5A3E 5A4D - 5A39 5A4C 5A70 5A69 5A47 5A51 5A56 5A42 - 5A5C 5B72 5B6E 5BC1 5BC0 5C59 5D1E 5D0B - 5D1D 5D1A 5D20 5D0C 5D28 5D0D -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 3521 - srcEnd = 357E - mappingOffset = 0758 - Mapping = - 5D26 5D25 5D0F 5D30 5D12 5D23 5D1F 5D2E - 5E3E 5E34 5EB1 5EB4 5EB9 5EB2 5EB3 5F36 - 5F38 5F9B 5F96 5F9F 608A 6090 6086 60BE - 60B0 60BA 60D3 60D4 60CF 60E4 60D9 60DD - 60C8 60B1 60DB 60B7 60CA 60BF 60C3 60CD - 60C0 6332 6365 638A 6382 637D 63BD 639E - 63AD 639D 6397 63AB 638E 636F 6387 6390 - 636E 63AF 6375 639C 636D 63AE 637C 63A4 - 633B 639F 6378 6385 6381 6391 638D 6370 - 6553 65CD 6665 6661 665B 6659 665C 6662 - 6718 6879 6887 6890 689C 686D 686E 68AE - 68AB 6956 686F 68A3 68AC 68A9 -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 3621 - srcEnd = 367E - mappingOffset = 07B6 - Mapping = - 6875 6874 68B2 688F 6877 6892 687C 686B - 6872 68AA 6880 6871 687E 689B 6896 688B - 68A0 6889 68A4 6878 687B 6891 688C 688A - 687D 6B36 6B33 6B37 6B38 6B91 6B8F 6B8D - 6B8E 6B8C 6C2A 6DC0 6DAB 6DB4 6DB3 6E74 - 6DAC 6DE9 6DE2 6DB7 6DF6 6DD4 6E00 6DC8 - 6DE0 6DDF 6DD6 6DBE 6DE5 6DDC 6DDD 6DDB - 6DF4 6DCA 6DBD 6DED 6DF0 6DBA 6DD5 6DC2 - 6DCF 6DC9 6DD0 6DF2 6DD3 6DFD 6DD7 6DCD - 6DE3 6DBB 70FA 710D 70F7 7117 70F4 710C - 70F0 7104 70F3 7110 70FC 70FF 7106 7113 - 7100 70F8 70F6 710B 7102 710E -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = 3721 - srcEnd = 377E - mappingOffset = 0814 - Mapping = - 727E 727B 727C 727F 731D 7317 7307 7311 - 7318 730A 7308 72FF 730F 731E 7388 73F6 - 73F8 73F5 7404 7401 73FD 7407 7400 73FA - 73FC 73FF 740C 740B 73F4 7408 7564 7563 - 75CE 75D2 75CF 75CB 75CC 75D1 75D0 768F - 7689 76D3 7739 772F 772D 7731 7732 7734 - 7733 773D 7725 773B 7735 7848 7852 7849 - 784D 784A 784C 7826 7845 7850 7964 7967 - 7969 796A 7963 796B 7961 79BB 79FA 79F8 - 79F6 79F7 7A8F 7A94 7A90 7B35 7B3B 7B34 - 7B25 7B30 7B22 7B24 7B33 7B18 7B2A 7B1D - 7B31 7B2B 7B2D 7B2F 7B32 7B38 -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 3821 - srcEnd = 387E - mappingOffset = 0872 - Mapping = - 7B1A 7B23 7C94 7C98 7C96 7CA3 7D35 7D3D - 7D38 7D36 7D3A 7D45 7D2C 7D29 7D41 7D47 - 7D3E 7D3F 7D4A 7D3B 7D28 7F63 7F95 7F9C - 7F9D 7F9B 7FCA 7FCB 7FCD 7FD0 7FD1 7FC7 - 7FCF 7FC9 801F 801E 801B 8047 8043 8048 - 8118 8125 8119 811B 812D 811F 812C 811E - 8121 8115 8127 811D 8122 8211 8238 8233 - 823A 8234 8232 8274 8390 83A3 83A8 838D - 837A 8373 83A4 8374 838F 8381 8395 8399 - 8375 8394 83A9 837D 8383 838C 839D 839B - 83AA 838B 837E 83A5 83AF 8388 8397 83B0 - 837F 83A6 8387 83AE 8376 8659 -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 3921 - srcEnd = 397E - mappingOffset = 08D0 - Mapping = - 8656 86BF 86B7 86C2 86C1 86C5 86BA 86B0 - 86C8 86B9 86B3 86B8 86CC 86B4 86BB 86BC - 86C3 86BD 86BE 8852 8889 8895 88A8 88A2 - 88AA 889A 8891 88A1 889F 8898 88A7 8899 - 889B 8897 88A4 88AC 888C 8893 888E 8982 - 89D6 89D9 89D5 8A30 8A27 8A2C 8A1E 8C39 - 8C3B 8C5C 8C5D 8C7D 8CA5 8D7D 8D7B 8D79 - 8DBC 8DC2 8DB9 8DBF 8DC1 8ED8 8EDE 8EDD - 8EDC 8ED7 8EE0 8EE1 9024 900B 9011 901C - 900C 9021 90EF 90EA 90F0 90F4 90F2 90F3 - 90D4 90EB 90EC 90E9 9156 9158 915A 9153 - 9155 91EC 91F4 91F1 91F3 91F8 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 3A21 - srcEnd = 3A7E - mappingOffset = 092E - Mapping = - 91E4 91F9 91EA 91EB 91F7 91E8 91EE 957A - 9586 9588 967C 966D 966B 9671 966F 96BF - 976A 9804 98E5 9997 509B 5095 5094 509E - 508B 50A3 5083 508C 508E 509D 5068 509C - 5092 5082 5087 515F 51D4 5312 5311 53A4 - 53A7 5591 55A8 55A5 55AD 5577 5645 55A2 - 5593 5588 558F 55B5 5581 55A3 5592 55A4 - 557D 558C 55A6 557F 5595 55A1 558E 570C - 5829 5837 5819 581E 5827 5823 5828 57F5 - 5848 5825 581C 581B 5833 583F 5836 582E - 5839 5838 582D 582C 583B 5961 5AAF 5A94 - 5A9F 5A7A 5AA2 5A9E 5A78 5AA6 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 3B21 - srcEnd = 3B7E - mappingOffset = 098C - Mapping = - 5A7C 5AA5 5AAC 5A95 5AAE 5A37 5A84 5A8A - 5A97 5A83 5A8B 5AA9 5A7B 5A7D 5A8C 5A9C - 5A8F 5A93 5A9D 5BEA 5BCD 5BCB 5BD4 5BD1 - 5BCA 5BCE 5C0C 5C30 5D37 5D43 5D6B 5D41 - 5D4B 5D3F 5D35 5D51 5D4E 5D55 5D33 5D3A - 5D52 5D3D 5D31 5D59 5D42 5D39 5D49 5D38 - 5D3C 5D32 5D36 5D40 5D45 5E44 5E41 5F58 - 5FA6 5FA5 5FAB 60C9 60B9 60CC 60E2 60CE - 60C4 6114 60F2 610A 6116 6105 60F5 6113 - 60F8 60FC 60FE 60C1 6103 6118 611D 6110 - 60FF 6104 610B 624A 6394 63B1 63B0 63CE - 63E5 63E8 63EF 63C3 649D 63F3 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 3C21 - srcEnd = 3C7E - mappingOffset = 09EA - Mapping = - 63CA 63E0 63F6 63D5 63F2 63F5 6461 63DF - 63BE 63DD 63DC 63C4 63D8 63D3 63C2 63C7 - 63CC 63CB 63C8 63F0 63D7 63D9 6532 6567 - 656A 6564 655C 6568 6565 658C 659D 659E - 65AE 65D0 65D2 667C 666C 667B 6680 6671 - 6679 666A 6672 6701 690C 68D3 6904 68DC - 692A 68EC 68EA 68F1 690F 68D6 68F7 68EB - 68E4 68F6 6913 6910 68F3 68E1 6907 68CC - 6908 6970 68B4 6911 68EF 68C6 6914 68F8 - 68D0 68FD 68FC 68E8 690B 690A 6917 68CE - 68C8 68DD 68DE 68E6 68F4 68D1 6906 68D4 - 68E9 6915 6925 68C7 6B39 6B3B -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 3D21 - srcEnd = 3D7E - mappingOffset = 0A48 - Mapping = - 6B3F 6B3C 6B94 6B97 6B99 6B95 6BBD 6BF0 - 6BF2 6BF3 6C30 6DFC 6E46 6E47 6E1F 6E49 - 6E88 6E3C 6E3D 6E45 6E62 6E2B 6E3F 6E41 - 6E5D 6E73 6E1C 6E33 6E4B 6E40 6E51 6E3B - 6E03 6E2E 6E5E 6E68 6E5C 6E61 6E31 6E28 - 6E60 6E71 6E6B 6E39 6E22 6E30 6E53 6E65 - 6E27 6E78 6E64 6E77 6E55 6E79 6E52 6E66 - 6E35 6E36 6E5A 7120 711E 712F 70FB 712E - 7131 7123 7125 7122 7132 711F 7128 713A - 711B 724B 725A 7288 7289 7286 7285 728B - 7312 730B 7330 7322 7331 7333 7327 7332 - 732D 7326 7323 7335 730C 742E -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 3E21 - srcEnd = 3E7E - mappingOffset = 0AA6 - Mapping = - 742C 7430 742B 7416 741A 7421 742D 7431 - 7424 7423 741D 7429 7420 7432 74FB 752F - 756F 756C 75E7 75DA 75E1 75E6 75DD 75DF - 75E4 75D7 7695 7692 76DA 7746 7747 7744 - 774D 7745 774A 774E 774B 774C 77DE 77EC - 7860 7864 7865 785C 786D 7871 786A 786E - 7870 7869 7868 785E 7862 7974 7973 7972 - 7970 7A02 7A0A 7A03 7A0C 7A04 7A99 7AE6 - 7AE4 7B4A 7B47 7B44 7B48 7B4C 7B4E 7B40 - 7B58 7B45 7CA2 7C9E 7CA8 7CA1 7D58 7D6F - 7D63 7D53 7D56 7D67 7D6A 7D4F 7D6D 7D5C - 7D6B 7D52 7D54 7D69 7D51 7D5F -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 3F21 - srcEnd = 3F7E - mappingOffset = 0B04 - Mapping = - 7D4E 7F3E 7F3F 7F65 7F66 7FA2 7FA0 7FA1 - 7FD7 8051 804F 8050 80FE 80D4 8143 814A - 8152 814F 8147 813D 814D 813A 81E6 81EE - 81F7 81F8 81F9 8204 823C 823D 823F 8275 - 833B 83CF 83F9 8423 83C0 83E8 8412 83E7 - 83E4 83FC 83F6 8410 83C6 83C8 83EB 83E3 - 83BF 8401 83DD 83E5 83D8 83FF 83E1 83CB - 83CE 83D6 83F5 83C9 8409 840F 83DE 8411 - 8406 83C2 83F3 83D5 83FA 83C7 83D1 83EA - 8413 839A 83C3 83EC 83EE 83C4 83FB 83D7 - 83E2 841B 83DB 83FE 86D8 86E2 86E6 86D3 - 86E3 86DA 86EA 86DD 86EB 86DC -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 4021 - srcEnd = 407E - mappingOffset = 0B62 - Mapping = - 86EC 86E9 86D7 86E8 86D1 8848 8856 8855 - 88BA 88D7 88B9 88B8 88C0 88BE 88B6 88BC - 88B7 88BD 88B2 8901 88C9 8995 8998 8997 - 89DD 89DA 89DB 8A4E 8A4D 8A39 8A59 8A40 - 8A57 8A58 8A44 8A45 8A52 8A48 8A51 8A4A - 8A4C 8A4F 8C5F 8C81 8C80 8CBA 8CBE 8CB0 - 8CB9 8CB5 8D84 8D80 8D89 8DD8 8DD3 8DCD - 8DC7 8DD6 8DDC 8DCF 8DD5 8DD9 8DC8 8DD7 - 8DC5 8EEF 8EF7 8EFA 8EF9 8EE6 8EEE 8EE5 - 8EF5 8EE7 8EE8 8EF6 8EEB 8EF1 8EEC 8EF4 - 8EE9 902D 9034 902F 9106 912C 9104 90FF - 90FC 9108 90F9 90FB 9101 9100 -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 4121 - srcEnd = 417E - mappingOffset = 0BC0 - Mapping = - 9107 9105 9103 9161 9164 915F 9162 9160 - 9201 920A 9225 9203 921A 9226 920F 920C - 9200 9212 91FF 91FD 9206 9204 9227 9202 - 921C 9224 9219 9217 9205 9216 957B 958D - 958C 9590 9687 967E 9688 9689 9683 9680 - 96C2 96C8 96C3 96F1 96F0 976C 9770 976E - 9807 98A9 98EB 9CE6 9EF9 4E83 4E84 4EB6 - 50BD 50BF 50C6 50AE 50C4 50CA 50B4 50C8 - 50C2 50B0 50C1 50BA 50B1 50CB 50C9 50B6 - 50B8 51D7 527A 5278 527B 527C 55C3 55DB - 55CC 55D0 55CB 55CA 55DD 55C0 55D4 55C4 - 55E9 55BF 55D2 558D 55CF 55D5 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 4221 - srcEnd = 427E - mappingOffset = 0C1E - Mapping = - 55E2 55D6 55C8 55F2 55CD 55D9 55C2 5714 - 5853 5868 5864 584F 584D 5849 586F 5855 - 584E 585D 5859 5865 585B 583D 5863 5871 - 58FC 5AC7 5AC4 5ACB 5ABA 5AB8 5AB1 5AB5 - 5AB0 5ABF 5AC8 5ABB 5AC6 5AB7 5AC0 5ACA - 5AB4 5AB6 5ACD 5AB9 5A90 5BD6 5BD8 5BD9 - 5C1F 5C33 5D71 5D63 5D4A 5D65 5D72 5D6C - 5D5E 5D68 5D67 5D62 5DF0 5E4F 5E4E 5E4A - 5E4D 5E4B 5EC5 5ECC 5EC6 5ECB 5EC7 5F40 - 5FAF 5FAD 60F7 6149 614A 612B 6145 6136 - 6132 612E 6146 612F 614F 6129 6140 6220 - 9168 6223 6225 6224 63C5 63F1 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 4321 - srcEnd = 437E - mappingOffset = 0C7C - Mapping = - 63EB 6410 6412 6409 6420 6424 6433 6443 - 641F 6415 6418 6439 6437 6422 6423 640C - 6426 6430 6428 6441 6435 642F 640A 641A - 6440 6425 6427 640B 63E7 641B 642E 6421 - 640E 656F 6592 65D3 6686 668C 6695 6690 - 668B 668A 6699 6694 6678 6720 6966 695F - 6938 694E 6962 6971 693F 6945 696A 6939 - 6942 6957 6959 697A 6948 6949 6935 696C - 6933 693D 6965 68F0 6978 6934 6969 6940 - 696F 6944 6976 6958 6941 6974 694C 693B - 694B 6937 695C 694F 6951 6932 6952 692F - 697B 693C 6B46 6B45 6B43 6B42 -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 4421 - srcEnd = 447E - mappingOffset = 0CDA - Mapping = - 6B48 6B41 6B9B 6BFB 6BFC 6BF9 6BF7 6BF8 - 6E9B 6ED6 6EC8 6E8F 6EC0 6E9F 6E93 6E94 - 6EA0 6EB1 6EB9 6EC6 6ED2 6EBD 6EC1 6E9E - 6EC9 6EB7 6EB0 6ECD 6EA6 6ECF 6EB2 6EBE - 6EC3 6EDC 6ED8 6E99 6E92 6E8E 6E8D 6EA4 - 6EA1 6EBF 6EB3 6ED0 6ECA 6E97 6EAE 6EA3 - 7147 7154 7152 7163 7160 7141 715D 7162 - 7172 7178 716A 7161 7142 7158 7143 714B - 7170 715F 7150 7153 7144 714D 715A 724F - 728D 728C 7291 7290 728E 733C 7342 733B - 733A 7340 734A 7349 7444 744A 744B 7452 - 7451 7457 7440 744F 7450 744E -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 4521 - srcEnd = 457E - mappingOffset = 0D38 - Mapping = - 7442 7446 744D 7454 74E1 74FF 74FE 74FD - 751D 7579 7577 6983 75EF 760F 7603 75F7 - 75FE 75FC 75F9 75F8 7610 75FB 75F6 75ED - 75F5 75FD 7699 76B5 76DD 7755 775F 7760 - 7752 7756 775A 7769 7767 7754 7759 776D - 77E0 7887 789A 7894 788F 7884 7895 7885 - 7886 78A1 7883 7879 7899 7880 7896 787B - 797C 7982 797D 7979 7A11 7A18 7A19 7A12 - 7A17 7A15 7A22 7A13 7A1B 7A10 7AA3 7AA2 - 7A9E 7AEB 7B66 7B64 7B6D 7B74 7B69 7B72 - 7B65 7B73 7B71 7B70 7B61 7B78 7B76 7B63 - 7CB2 7CB4 7CAF 7D88 7D86 7D80 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 4621 - srcEnd = 467E - mappingOffset = 0D96 - Mapping = - 7D8D 7D7F 7D85 7D7A 7D8E 7D7B 7D83 7D7C - 7D8C 7D94 7D84 7D7D 7D92 7F6D 7F6B 7F67 - 7F68 7F6C 7FA6 7FA5 7FA7 7FDB 7FDC 8021 - 8164 8160 8177 815C 8169 815B 8162 8172 - 6721 815E 8176 8167 816F 8144 8161 821D - 8249 8244 8240 8242 8245 84F1 843F 8456 - 8476 8479 848F 848D 8465 8451 8440 8486 - 8467 8430 844D 847D 845A 8459 8474 8473 - 845D 8507 845E 8437 843A 8434 847A 8443 - 8478 8432 8445 8429 83D9 844B 842F 8442 - 842D 845F 8470 8439 844E 844C 8452 846F - 84C5 848E 843B 8447 8436 8433 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 4721 - srcEnd = 477E - mappingOffset = 0DF4 - Mapping = - 8468 847E 8444 842B 8460 8454 846E 8450 - 870B 8704 86F7 870C 86FA 86D6 86F5 874D - 86F8 870E 8709 8701 86F6 870D 8705 88D6 - 88CB 88CD 88CE 88DE 88DB 88DA 88CC 88D0 - 8985 899B 89DF 89E5 89E4 89E1 89E0 89E2 - 89DC 89E6 8A76 8A86 8A7F 8A61 8A3F 8A77 - 8A82 8A84 8A75 8A83 8A81 8A74 8A7A 8C3C - 8C4B 8C4A 8C65 8C64 8C66 8C86 8C84 8C85 - 8CCC 8D68 8D69 8D91 8D8C 8D8E 8D8F 8D8D - 8D93 8D94 8D90 8D92 8DF0 8DE0 8DEC 8DF1 - 8DEE 8DD0 8DE9 8DE3 8DE2 8DE7 8DF2 8DEB - 8DF4 8F06 8EFF 8F01 8F00 8F05 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 4821 - srcEnd = 487E - mappingOffset = 0E52 - Mapping = - 8F07 8F08 8F02 8F0B 9052 903F 9044 9049 - 903D 9110 910D 910F 9111 9116 9114 910B - 910E 916E 916F 9248 9252 9230 923A 9266 - 9233 9265 925E 9283 922E 924A 9246 926D - 926C 924F 9260 9267 926F 9236 9261 9270 - 9231 9254 9263 9250 9272 924E 9253 924C - 9256 9232 959F 959C 959E 959B 9692 9693 - 9691 9697 96CE 96FA 96FD 96F8 96F5 9773 - 9777 9778 9772 980F 980D 980E 98AC 98F6 - 98F9 99AF 99B2 99B0 99B5 9AAD 9AAB 9B5B - 9CEA 9CED 9CE7 9E80 9EFD 50E6 50D4 50D7 - 50E8 50F3 50DB 50EA 50DD 50E4 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 4921 - srcEnd = 497E - mappingOffset = 0EB0 - Mapping = - 50D3 50EC 50F0 50EF 50E3 50E0 51D8 5280 - 5281 52E9 52EB 5330 53AC 5627 5615 560C - 5612 55FC 560F 561C 5601 5613 5602 55FA - 561D 5604 55FF 55F9 5889 587C 5890 5898 - 5886 5881 587F 5874 588B 587A 5887 5891 - 588E 5876 5882 5888 587B 5894 588F 58FE - 596B 5ADC 5AEE 5AE5 5AD5 5AEA 5ADA 5AED - 5AEB 5AF3 5AE2 5AE0 5ADB 5AEC 5ADE 5ADD - 5AD9 5AE8 5ADF 5B77 5BE0 5BE3 5C63 5D82 - 5D80 5D7D 5D86 5D7A 5D81 5D77 5D8A 5D89 - 5D88 5D7E 5D7C 5D8D 5D79 5D7F 5E58 5E59 - 5E53 5ED8 5ED1 5ED7 5ECE 5EDC -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 4A21 - srcEnd = 4A7E - mappingOffset = 0F0E - Mapping = - 5ED5 5ED9 5ED2 5ED4 5F44 5F43 5F6F 5FB6 - 612C 6128 6141 615E 6171 6173 6152 6153 - 6172 616C 6180 6174 6154 617A 615B 6165 - 613B 616A 6161 6156 6229 6227 622B 642B - 644D 645B 645D 6474 6476 6472 6473 647D - 6475 6466 64A6 644E 6482 645E 645C 644B - 6453 6460 6450 647F 643F 646C 646B 6459 - 6465 6477 6573 65A0 66A1 66A0 669F 6705 - 6704 6722 69B1 69B6 69C9 69A0 69CE 6996 - 69B0 69AC 69BC 6991 6999 698E 69A7 698D - 69A9 69BE 69AF 69BF 69C4 69BD 69A4 69D4 - 69B9 69CA 699A 69CF 69B3 6993 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 4B21 - srcEnd = 4B7E - mappingOffset = 0F6C - Mapping = - 69AA 69A1 699E 69D9 6997 6990 69C2 69B5 - 69A5 69C6 6B4A 6B4D 6B4B 6B9E 6B9F 6BA0 - 6BC3 6BC4 6BFE 6ECE 6EF5 6EF1 6F03 6F25 - 6EF8 6F37 6EFB 6F2E 6F09 6F4E 6F19 6F1A - 6F27 6F18 6F3B 6F12 6EED 6F0A 6F36 6F73 - 6EF9 6EEE 6F2D 6F40 6F30 6F3C 6F35 6EEB - 6F07 6F0E 6F43 6F05 6EFD 6EF6 6F39 6F1C - 6EFC 6F3A 6F1F 6F0D 6F1E 6F08 6F21 7187 - 7190 7189 7180 7185 7182 718F 717B 7186 - 7181 7197 7244 7253 7297 7295 7293 7343 - 734D 7351 734C 7462 7473 7471 7475 7472 - 7467 746E 7500 7502 7503 757D -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 4C21 - srcEnd = 4C7E - mappingOffset = 0FCA - Mapping = - 7590 7616 7608 760C 7615 7611 760A 7614 - 76B8 7781 777C 7785 7782 776E 7780 776F - 777E 7783 78B2 78AA 78B4 78AD 78A8 787E - 78AB 789E 78A5 78A0 78AC 78A2 78A4 7998 - 798A 798B 7996 7995 7994 7993 7997 7988 - 7992 7990 7A2B 7A4A 7A30 7A2F 7A28 7A26 - 7AA8 7AAB 7AAC 7AEE 7B88 7B9C 7B8A 7B91 - 7B90 7B96 7B8D 7B8C 7B9B 7B8E 7B85 7B98 - 5284 7B99 7BA4 7B82 7CBB 7CBF 7CBC 7CBA - 7DA7 7DB7 7DC2 7DA3 7DAA 7DC1 7DC0 7DC5 - 7D9D 7DCE 7DC4 7DC6 7DCB 7DCC 7DAF 7DB9 - 7D96 7DBC 7D9F 7DA6 7DAE 7DA9 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 4D21 - srcEnd = 4D7E - mappingOffset = 1028 - Mapping = - 7DA1 7DC9 7F73 7FE2 7FE3 7FE5 7FDE 8024 - 805D 805C 8189 8186 8183 8187 818D 818C - 818B 8215 8497 84A4 84A1 849F 84BA 84CE - 84C2 84AC 84AE 84AB 84B9 84B4 84C1 84CD - 84AA 849A 84B1 84D0 849D 84A7 84BB 84A2 - 8494 84C7 84CC 849B 84A9 84AF 84A8 84D6 - 8498 84B6 84CF 84A0 84D7 84D4 84D2 84DB - 84B0 8491 8661 8733 8723 8728 876B 8740 - 872E 871E 8721 8719 871B 8743 872C 8741 - 873E 8746 8720 8732 872A 872D 873C 8712 - 873A 8731 8735 8742 8726 8727 8738 8724 - 871A 8730 8711 88F7 88E7 88F1 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 4E21 - srcEnd = 4E7E - mappingOffset = 1086 - Mapping = - 88F2 88FA 88FE 88EE 88FC 88F6 88FB 88F0 - 88EC 88EB 899D 89A1 899F 899E 89E9 89EB - 89E8 8AAB 8A99 8A8B 8A92 8A8F 8A96 8C3D - 8C68 8C69 8CD5 8CCF 8CD7 8D96 8E09 8E02 - 8DFF 8E0D 8DFD 8E0A 8E03 8E07 8E06 8E05 - 8DFE 8E00 8E04 8F10 8F11 8F0E 8F0D 9123 - 911C 9120 9122 911F 911D 911A 9124 9121 - 911B 917A 9172 9179 9173 92A5 92A4 9276 - 929B 927A 92A0 9294 92AA 928D 92A6 929A - 92AB 9279 9297 927F 92A3 92EE 928E 9282 - 9295 92A2 927D 9288 92A1 928A 9286 928C - 9299 92A7 927E 9287 92A9 929D -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 4F21 - srcEnd = 4F7E - mappingOffset = 10E4 - Mapping = - 928B 922D 969E 96A1 96FF 9758 977D 977A - 977E 9783 9780 9782 977B 9784 9781 977F - 97CE 97CD 9816 98AD 98AE 9902 9900 9907 - 999D 999C 99C3 99B9 99BB 99BA 99C2 99BD - 99C7 9AB1 9AE3 9AE7 9B3E 9B3F 9B60 9B61 - 9B5F 9CF1 9CF2 9CF5 9EA7 50FF 5103 5130 - 50F8 5106 5107 50F6 50FE 510B 510C 50FD - 510A 528B 528C 52F1 52EF 5648 5642 564C - 5635 5641 564A 5649 5646 5658 565A 5640 - 5633 563D 562C 563E 5638 562A 563A 571A - 58AB 589D 58B1 58A0 58A3 58AF 58AC 58A5 - 58A1 58FF 5AFF 5AF4 5AFD 5AF7 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 5021 - srcEnd = 507E - mappingOffset = 1142 - Mapping = - 5AF6 5B03 5AF8 5B02 5AF9 5B01 5B07 5B05 - 5B0F 5C67 5D99 5D97 5D9F 5D92 5DA2 5D93 - 5D95 5DA0 5D9C 5DA1 5D9A 5D9E 5E69 5E5D - 5E60 5E5C 7DF3 5EDB 5EDE 5EE1 5F49 5FB2 - 618B 6183 6179 61B1 61B0 61A2 6189 619B - 6193 61AF 61AD 619F 6192 61AA 61A1 618D - 6166 61B3 622D 646E 6470 6496 64A0 6485 - 6497 649C 648F 648B 648A 648C 64A3 649F - 6468 64B1 6498 6576 657A 6579 657B 65B2 - 65B3 66B5 66B0 66A9 66B2 66B7 66AA 66AF - 6A00 6A06 6A17 69E5 69F8 6A15 69F1 69E4 - 6A20 69FF 69EC 69E2 6A1B 6A1D -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 5121 - srcEnd = 517E - mappingOffset = 11A0 - Mapping = - 69FE 6A27 69F2 69EE 6A14 69F7 69E7 6A40 - 6A08 69E6 69FB 6A0D 69FC 69EB 6A09 6A04 - 6A18 6A25 6A0F 69F6 6A26 6A07 69F4 6A16 - 6B51 6BA5 6BA3 6BA2 6BA6 6C01 6C00 6BFF - 6C02 6F41 6F26 6F7E 6F87 6FC6 6F92 6F8D - 6F89 6F8C 6F62 6F4F 6F85 6F5A 6F96 6F76 - 6F6C 6F82 6F55 6F72 6F52 6F50 6F57 6F94 - 6F93 6F5D 6F00 6F61 6F6B 6F7D 6F67 6F90 - 6F53 6F8B 6F69 6F7F 6F95 6F63 6F77 6F6A - 6F7B 71B2 71AF 719B 71B0 71A0 719A 71A9 - 71B5 719D 71A5 719E 71A4 71A1 71AA 719C - 71A7 71B3 7298 729A 7358 7352 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 5221 - srcEnd = 527E - mappingOffset = 11FE - Mapping = - 735E 735F 7360 735D 735B 7361 735A 7359 - 7362 7487 7489 748A 7486 7481 747D 7485 - 7488 747C 7479 7508 7507 757E 7625 761E - 7619 761D 761C 7623 761A 7628 761B 769C - 769D 769E 769B 778D 778F 7789 7788 78CD - 78BB 78CF 78CC 78D1 78CE 78D4 78C8 78C3 - 78C4 78C9 799A 79A1 79A0 799C 79A2 799B - 6B76 7A39 7AB2 7AB4 7AB3 7BB7 7BCB 7BBE - 7BAC 7BCE 7BAF 7BB9 7BCA 7BB5 7CC5 7CC8 - 7CCC 7CCB 7DF7 7DDB 7DEA 7DE7 7DD7 7DE1 - 7E03 7DFA 7DE6 7DF6 7DF1 7DF0 7DEE 7DDF - 7F76 7FAC 7FB0 7FAD 7FED 7FEB -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 5321 - srcEnd = 537E - mappingOffset = 125C - Mapping = - 7FEA 7FEC 7FE6 7FE8 8064 8067 81A3 819F - 819E 8195 81A2 8199 8197 8216 824F 8253 - 8252 8250 824E 8251 8524 853B 850F 8500 - 8529 850E 8509 850D 851F 850A 8527 851C - 84FB 852B 84FA 8508 850C 84F4 852A 84F2 - 8515 84F7 84EB 84F3 84FC 8512 84EA 84E9 - 8516 84FE 8528 851D 852E 8502 84FD 851E - 84F6 8531 8526 84E7 84E8 84F0 84EF 84F9 - 8518 8520 8530 850B 8519 852F 8662 8756 - 8763 8764 8777 87E1 8773 8758 8754 875B - 8752 8761 875A 8751 875E 876D 876A 8750 - 874E 875F 875D 876F 876C 877A -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 5421 - srcEnd = 547E - mappingOffset = 12BA - Mapping = - 876E 875C 8765 874F 877B 8775 8762 8767 - 8769 885A 8905 890C 8914 890B 8917 8918 - 8919 8906 8916 8911 890E 8909 89A2 89A4 - 89A3 89ED 89F0 89EC 8ACF 8AC6 8AB8 8AD3 - 8AD1 8AD4 8AD5 8ABB 8AD7 8ABE 8AC0 8AC5 - 8AD8 8AC3 8ABA 8ABD 8AD9 8C3E 8C4D 8C8F - 8CE5 8CDF 8CD9 8CE8 8CDA 8CDD 8CE7 8DA0 - 8D9C 8DA1 8D9B 8E20 8E23 8E25 8E24 8E2E - 8E15 8E1B 8E16 8E11 8E19 8E26 8E27 8E14 - 8E12 8E18 8E13 8E1C 8E17 8E1A 8F2C 8F24 - 8F18 8F1A 8F20 8F23 8F16 8F17 9073 9070 - 906F 9067 906B 912F 912B 9129 -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 5521 - srcEnd = 557E - mappingOffset = 1318 - Mapping = - 912A 9132 9126 912E 9185 9186 918A 9181 - 9182 9184 9180 92D0 92C3 92C4 92C0 92D9 - 92B6 92CF 92F1 92DF 92D8 92E9 92D7 92DD - 92CC 92EF 92C2 92E8 92CA 92C8 92CE 92E6 - 92CD 92D5 92C9 92E0 92DE 92E7 92D1 92D3 - 92B5 92E1 9325 92C6 92B4 957C 95AC 95AB - 95AE 95B0 96A4 96A2 96D3 9705 9708 9702 - 975A 978A 978E 9788 97D0 97CF 981E 981D - 9826 9829 9828 9820 981B 9827 98B2 9908 - 98FA 9911 9914 9916 9917 9915 99DC 99CD - 99CF 99D3 99D4 99CE 99C9 99D6 99D8 99CB - 99D7 99CC 9AB3 9AEC 9AEB 9AF3 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 5621 - srcEnd = 567E - mappingOffset = 1376 - Mapping = - 9AF2 9AF1 9B46 9B43 9B67 9B74 9B71 9B66 - 9B76 9B75 9B70 9B68 9B64 9B6C 9CFC 9CFA - 9CFD 9CFF 9CF7 9D07 9D00 9CF9 9CFB 9D08 - 9D05 9D04 9E83 9ED3 9F0F 9F10 511C 5113 - 5117 511A 5111 51DE 5334 53E1 5670 5660 - 566E 5673 5666 5663 566D 5672 565E 5677 - 571C 571B 58C8 58BD 58C9 58BF 58BA 58C2 - 58BC 58C6 5B17 5B19 5B1B 5B21 5B14 5B13 - 5B10 5B16 5B28 5B1A 5B20 5B1E 5BEF 5DAC - 5DB1 5DA9 5DA7 5DB5 5DB0 5DAE 5DAA 5DA8 - 5DB2 5DAD 5DAF 5DB4 5E67 5E68 5E66 5E6F - 5EE9 5EE7 5EE6 5EE8 5EE5 5F4B -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 5721 - srcEnd = 577E - mappingOffset = 13D4 - Mapping = - 5FBC 5FBB 619D 61A8 6196 61C5 61B4 61C6 - 61C1 61CC 61BA 61BF 61B8 618C 64D7 64D6 - 64D0 64CF 64C9 64BD 6489 64C3 64DB 64F3 - 64D9 6533 657F 657C 65A2 66C8 66BE 66C0 - 66CA 66CB 66CF 66BD 66BB 66BA 66CC 6723 - 6A34 6A66 6A49 6A67 6A32 6A68 6A3E 6A5D - 6A6D 6A76 6A5B 6A51 6A28 6A5A 6A3B 6A3F - 6A41 6A6A 6A64 6A50 6A4F 6A54 6A6F 6A69 - 6A60 6A3C 6A5E 6A56 6A55 6A4D 6A4E 6A46 - 6B55 6B54 6B56 6BA7 6BAA 6BAB 6BC8 6BC7 - 6C04 6C03 6C06 6FAD 6FCB 6FA3 6FC7 6FBC - 6FCE 6FC8 6F5E 6FC4 6FBD 6F9E -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 5821 - srcEnd = 587E - mappingOffset = 1432 - Mapping = - 6FCA 6FA8 7004 6FA5 6FAE 6FBA 6FAC 6FAA - 6FCF 6FBF 6FB8 6FA2 6FC9 6FAB 6FCD 6FAF - 6FB2 6FB0 71C5 71C2 71BF 71B8 71D6 71C0 - 71C1 71CB 71D4 71CA 71C7 71CF 71BD 71D8 - 71BC 71C6 71DA 71DB 729D 729E 7369 7366 - 7367 736C 7365 736B 736A 747F 749A 74A0 - 7494 7492 7495 74A1 750B 7580 762F 762D - 7631 763D 7633 763C 7635 7632 7630 76BB - 76E6 779A 779D 77A1 779C 779B 77A2 77A3 - 7795 7799 7797 78DD 78E9 78E5 78EA 78DE - 78E3 78DB 78E1 78E2 78ED 78DF 78E0 79A4 - 7A44 7A48 7A47 7AB6 7AB8 7AB5 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 5921 - srcEnd = 597E - mappingOffset = 1490 - Mapping = - 7AB1 7AB7 7BDE 7BE3 7BE7 7BDD 7BD5 7BE5 - 7BDA 7BE8 7BF9 7BD4 7BEA 7BE2 7BDC 7BEB - 7BD8 7BDF 7CD2 7CD4 7CD7 7CD0 7CD1 7E12 - 7E21 7E17 7E0C 7E1F 7E20 7E13 7E0E 7E1C - 7E15 7E1A 7E22 7E0B 7E0F 7E16 7E0D 7E14 - 7E25 7E24 7F43 7F7B 7F7C 7F7A 7FB1 7FEF - 802A 8029 806C 81B1 81A6 81AE 81B9 81B5 - 81AB 81B0 81AC 81B4 81B2 81B7 81A7 81F2 - 8255 8256 8257 8556 8545 856B 854D 8553 - 8561 8558 8540 8546 8564 8541 8562 8544 - 8551 8547 8563 853E 855B 8571 854E 856E - 8575 8555 8567 8560 858C 8566 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 5A21 - srcEnd = 5A7E - mappingOffset = 14EE - Mapping = - 855D 8554 8565 856C 8663 8665 8664 87A4 - 879B 878F 8797 8793 8792 8788 8781 8796 - 8798 8779 8787 87A3 8785 8790 8791 879D - 8784 8794 879C 879A 8789 891E 8926 8930 - 892D 892E 8927 8931 8922 8929 8923 892F - 892C 891F 89F1 8AE0 8AE2 8AF2 8AF4 8AF5 - 8ADD 8B14 8AE4 8ADF 8AF0 8AC8 8ADE 8AE1 - 8AE8 8AFF 8AEF 8AFB 8C91 8C92 8C90 8CF5 - 8CEE 8CF1 8CF0 8CF3 8D6C 8D6E 8DA5 8DA7 - 8E33 8E3E 8E38 8E40 8E45 8E36 8E3C 8E3D - 8E41 8E30 8E3F 8EBD 8F36 8F2E 8F35 8F32 - 8F39 8F37 8F34 9076 9079 907B -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 5B21 - srcEnd = 5B7E - mappingOffset = 154C - Mapping = - 9086 90FA 9133 9135 9136 9193 9190 9191 - 918D 918F 9327 931E 9308 931F 9306 930F - 937A 9338 933C 931B 9323 9312 9301 9346 - 932D 930E 930D 92CB 931D 92FA 9313 92F9 - 92F7 9334 9302 9324 92FF 9329 9339 9335 - 932A 9314 930C 930B 92FE 9309 9300 92FB - 9316 95BC 95CD 95BE 95B9 95BA 95B6 95BF - 95B5 95BD 96A9 96D4 970B 9712 9710 9799 - 9797 9794 97F0 97F8 9835 982F 9832 9924 - 991F 9927 9929 999E 99EE 99EC 99E5 99E4 - 99F0 99E3 99EA 99E9 99E7 9AB9 9ABF 9AB4 - 9ABB 9AF6 9AFA 9AF9 9AF7 9B33 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 5C21 - srcEnd = 5C7E - mappingOffset = 15AA - Mapping = - 9B80 9B85 9B87 9B7C 9B7E 9B7B 9B82 9B93 - 9B92 9B90 9B7A 9B95 9B7D 9B88 9D25 9D17 - 9D20 9D1E 9D14 9D29 9D1D 9D18 9D22 9D10 - 9D19 9D1F 9E88 9E86 9E87 9EAE 9EAD 9ED5 - 9ED6 9EFA 9F12 9F3D 5126 5125 5122 5124 - 5120 5129 52F4 5693 568C 568D 5686 5684 - 5683 567E 5682 567F 5681 58D6 58D4 58CF - 58D2 5B2D 5B25 5B32 5B23 5B2C 5B27 5B26 - 5B2F 5B2E 5B7B 5BF1 5BF2 5DB7 5E6C 5E6A - 5FBE 61C3 61B5 61BC 61E7 61E0 61E5 61E4 - 61E8 61DE 64EF 64E9 64E3 64EB 64E4 64E8 - 6581 6580 65B6 65DA 66D2 6A8D -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 5D21 - srcEnd = 5D7E - mappingOffset = 1608 - Mapping = - 6A96 6A81 6AA5 6A89 6A9F 6A9B 6AA1 6A9E - 6A87 6A93 6A8E 6A95 6A83 6AA8 6AA4 6A91 - 6A7F 6AA6 6A9A 6A85 6A8C 6A92 6B5B 6BAD - 6C09 6FCC 6FA9 6FF4 6FD4 6FE3 6FDC 6FED - 6FE7 6FE6 6FDE 6FF2 6FDD 6FE2 6FE8 71E1 - 71F1 71E8 71F2 71E4 71F0 71E2 7373 736E - 736F 7497 74B2 74AB 7490 74AA 74AD 74B1 - 74A5 74AF 7510 7511 7512 750F 7584 7643 - 7648 7649 7647 76A4 76E9 77B5 77AB 77B2 - 77B7 77B6 77B4 77B1 77A8 77F0 78F3 78FD - 7902 78FB 78FC 78FF 78F2 7905 78F9 78FE - 7904 79AB 79A8 7A5C 7A5B 7A56 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 5E21 - srcEnd = 5E7E - mappingOffset = 1666 - Mapping = - 7A58 7A54 7A5A 7ABE 7AC0 7AC1 7C05 7C0F - 7BF2 7C00 7BFF 7BFB 7C0E 7BF4 7C0B 7BF3 - 7C02 7C09 7C03 7C01 7BF8 7BFD 7C06 7BF0 - 7BF1 7C10 7C0A 7CE8 7E2D 7E3C 7E42 7E33 - 9848 7E38 7E2A 7E49 7E40 7E47 7E29 7E4C - 7E30 7E3B 7E36 7E44 7E3A 7F45 7F7F 7F7E - 7F7D 7FF4 7FF2 802C 81BB 81C4 81CC 81CA - 81C5 81C7 81BC 81E9 825B 825A 825C 8583 - 8580 858F 85A7 8595 85A0 858B 85A3 857B - 85A4 859A 859E 8577 857C 8589 85A1 857A - 8578 8557 858E 8596 8586 858D 8599 859D - 8581 85A2 8582 8588 8585 8579 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 5F21 - srcEnd = 5F7E - mappingOffset = 16C4 - Mapping = - 8576 8598 8590 859F 8668 87BE 87AA 87AD - 87C5 87B0 87AC 87B9 87B5 87BC 87AE 87C9 - 87C3 87C2 87CC 87B7 87AF 87C4 87CA 87B4 - 87B6 87BF 87B8 87BD 87DE 87B2 8935 8933 - 893C 893E 8941 8952 8937 8942 89AD 89AF - 89AE 89F2 89F3 8B1E 8B18 8B16 8B11 8B05 - 8B0B 8B22 8B0F 8B12 8B15 8B07 8B0D 8B08 - 8B06 8B1C 8B13 8B1A 8C4F 8C70 8C72 8C71 - 8C6F 8C95 8C94 8CF9 8D6F 8E4E 8E4D 8E53 - 8E50 8E4C 8E47 8F43 8F40 9085 907E 9138 - 919A 91A2 919B 9199 919F 91A1 919D 91A0 - 93A1 9383 93AF 9364 9356 9347 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 6021 - srcEnd = 607E - mappingOffset = 1722 - Mapping = - 937C 9358 935C 9376 9349 9350 9351 9360 - 936D 938F 934C 936A 9379 9357 9355 9352 - 934F 9371 9377 937B 9361 935E 9363 9367 - 934E 9359 95C7 95C0 95C9 95C3 95C5 95B7 - 96AE 96B0 96AC 9720 971F 9718 971D 9719 - 979A 97A1 979C 979E 979D 97D5 97D4 97F1 - 9841 9844 984A 9849 9845 9843 9925 992B - 992C 992A 9933 9932 992F 992D 9931 9930 - 9998 99A3 99A1 9A02 99FA 99F4 99F7 99F9 - 99F8 99F6 99FB 99FD 99FE 99FC 9A03 9ABE - 9AFE 9AFD 9B01 9AFC 9B48 9B9A 9BA8 9B9E - 9B9B 9BA6 9BA1 9BA5 9BA4 9B86 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 6121 - srcEnd = 617E - mappingOffset = 1780 - Mapping = - 9BA2 9BA0 9BAF 9D33 9D41 9D67 9D36 9D2E - 9D2F 9D31 9D38 9D30 9D45 9D42 9D43 9D3E - 9D37 9D40 9D3D 7FF5 9D2D 9E8A 9E89 9E8D - 9EB0 9EC8 9EDA 9EFB 9EFF 9F24 9F23 9F22 - 9F54 9FA0 5131 512D 512E 5698 569C 5697 - 569A 569D 5699 5970 5B3C 5C69 5C6A 5DC0 - 5E6D 5E6E 61D8 61DF 61ED 61EE 61F1 61EA - 61F0 61EB 61D6 61E9 64FF 6504 64FD 64F8 - 6501 6503 64FC 6594 65DB 66DA 66DB 66D8 - 6AC5 6AB9 6ABD 6AE1 6AC6 6ABA 6AB6 6AB7 - 6AC7 6AB4 6AAD 6B5E 6BC9 6C0B 7007 700C - 700D 7001 7005 7014 700E 6FFF -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 6221 - srcEnd = 627E - mappingOffset = 17DE - Mapping = - 7000 6FFB 7026 6FFC 6FF7 700A 7201 71FF - 71F9 7203 71FD 7376 74B8 74C0 74B5 74C1 - 74BE 74B6 74BB 74C2 7514 7513 765C 7664 - 7659 7650 7653 7657 765A 76A6 76BD 76EC - 77C2 77BA 790C 7913 7914 7909 7910 7912 - 7911 79AD 79AC 7A5F 7C1C 7C29 7C19 7C20 - 7C1F 7C2D 7C1D 7C26 7C28 7C22 7C25 7C30 - 7E5C 7E50 7E56 7E63 7E58 7E62 7E5F 7E51 - 7E60 7E57 7E53 7FB5 7FB3 7FF7 7FF8 8075 - 81D1 81D2 81D0 825F 825E 85B4 85C6 85C0 - 85C3 85C2 85B3 85B5 85BD 85C7 85C4 85BF - 85CB 85CE 85C8 85C5 85B1 85B6 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 6321 - srcEnd = 637E - mappingOffset = 183C - Mapping = - 85D2 8624 85B8 85B7 85BE 8669 87E7 87E6 - 87E2 87DB 87EB 87EA 87E5 87DF 87F3 87E4 - 87D4 87DC 87D3 87ED 87D8 87E3 87D7 87D9 - 8801 87F4 87E8 87DD 8953 894B 894F 894C - 8946 8950 8951 8949 8B2A 8B27 8B23 8B33 - 8B30 8B35 8B47 8B2F 8B3C 8B3E 8B31 8B25 - 8B37 8B26 8B36 8B2E 8B24 8B3B 8B3D 8B3A - 8C42 8C75 8C99 8C98 8C97 8CFE 8D04 8D02 - 8D00 8E5C 8E62 8E60 8E57 8E56 8E5E 8E65 - 8E67 8E5B 8E5A 8E61 8E5D 8E69 8E54 8F46 - 8F47 8F48 8F4B 9128 913A 913B 913E 91A8 - 91A5 91A7 91AF 91AA 93B5 938C -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 6421 - srcEnd = 647E - mappingOffset = 189A - Mapping = - 9392 93B7 939B 939D 9389 93A7 938E 93AA - 939E 93A6 9395 9388 9399 939F 9380 938D - 93B1 9391 93B2 93A4 93A8 93B4 93A3 95D2 - 95D3 95D1 96B3 96D7 96DA 5DC2 96DF 96D8 - 96DD 9723 9722 9725 97AC 97AE 97A8 97AB - 97A4 97AA 97A2 97A5 97D7 97D9 97D6 97D8 - 97FA 9850 9851 9852 98B8 9941 993C 993A - 9A0F 9A0B 9A09 9A0D 9A04 9A11 9A0A 9A05 - 9A07 9A06 9AC0 9ADC 9B08 9B04 9B05 9B29 - 9B35 9B4A 9B4C 9B4B 9BC7 9BC6 9BC3 9BBF - 9BC1 9BB5 9BB8 9BD3 9BB6 9BC4 9BB9 9BBD - 9D5C 9D53 9D4F 9D4A 9D5B 9D4B -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 6521 - srcEnd = 657E - mappingOffset = 18F8 - Mapping = - 9D59 9D56 9D4C 9D57 9D52 9D54 9D5F 9D58 - 9D5A 9E8E 9E8C 9EDF 9F01 9F00 9F16 9F25 - 9F2B 9F2A 9F29 9F28 9F4C 9F55 5134 5135 - 5296 52F7 53B4 56AB 56AD 56A6 56A7 56AA - 56AC 58DA 58DD 58DB 5912 5B3D 5B3E 5B3F - 5DC3 5E70 5FBF 61FB 6507 6510 650D 6509 - 650C 650E 6584 65DE 65DD 66DE 6AE7 6AE0 - 6ACC 6AD1 6AD9 6ACB 6ADF 6ADC 6AD0 6AEB - 6ACF 6ACD 6ADE 6B60 6BB0 6C0C 7019 7027 - 7020 7016 702B 7021 7022 7023 7029 7017 - 7024 701C 720C 720A 7207 7202 7205 72A5 - 72A6 72A4 72A3 72A1 74CB 74C5 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 6621 - srcEnd = 667E - mappingOffset = 1956 - Mapping = - 74B7 74C3 7516 7660 77C9 77CA 77C4 77F1 - 791D 791B 7921 791C 7917 791E 79B0 7A67 - 7A68 7C33 7C3C 7C39 7C2C 7C3B 7CEC 7CEA - 7E76 7E75 7E78 7E70 7E77 7E6F 7E7A 7E72 - 7E74 7E68 7F4B 7F4A 7F83 7F86 7FB7 7FFD - 7FFE 8078 81D7 81D5 820B 8264 8261 8263 - 85EB 85F1 85ED 85D9 85E1 85E8 85DA 85D7 - 85EC 85F2 85F8 85D8 85DF 85E3 85DC 85D1 - 85F0 85E6 85EF 85DE 85E2 8800 87FA 8803 - 87F6 87F7 8809 880C 880B 8806 87FC 8808 - 87FF 880A 8802 8962 895A 895B 8957 8961 - 895C 8958 895D 8959 8988 89B7 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 6721 - srcEnd = 677E - mappingOffset = 19B4 - Mapping = - 89B6 89F6 8B50 8B48 8B4A 8B40 8B53 8B56 - 8B54 8B4B 8B55 8B51 8B42 8B52 8B57 8C43 - 8C77 8C76 8C9A 8D06 8D07 8D09 8DAC 8DAA - 8DAD 8DAB 8E6D 8E78 8E73 8E6A 8E6F 8E7B - 8EC2 8F52 8F51 8F4F 8F50 8F53 8FB4 9140 - 913F 91B0 91AD 93DE 93C7 93CF 93C2 93DA - 93D0 93F9 93EC 93CC 93D9 93A9 93E6 93CA - 93D4 93EE 93E3 93D5 93C4 93CE 93C0 93D2 - 93A5 93E7 957D 95DA 95DB 96E1 9729 972B - 972C 9728 9726 97B3 97B7 97B6 97DD 97DE - 97DF 985C 9859 985D 9857 98BF 98BD 98BB - 98BE 9948 9947 9943 99A6 99A7 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 6821 - srcEnd = 687E - mappingOffset = 1A12 - Mapping = - 9A1A 9A15 9A25 9A1D 9A24 9A1B 9A22 9A20 - 9A27 9A23 9A1E 9A1C 9A14 9AC2 9B0B 9B0A - 9B0E 9B0C 9B37 9BEA 9BEB 9BE0 9BDE 9BE4 - 9BE6 9BE2 9BF0 9BD4 9BD7 9BEC 9BDC 9BD9 - 9BE5 9BD5 9BE1 9BDA 9D77 9D81 9D8A 9D84 - 9D88 9D71 9D80 9D78 9D86 9D8B 9D8C 9D7D - 9D6B 9D74 9D75 9D70 9D69 9D85 9D73 9D7B - 9D82 9D6F 9D79 9D7F 9D87 9D68 9E94 9E91 - 9EC0 9EFC 9F2D 9F40 9F41 9F4D 9F56 9F57 - 9F58 5337 56B2 56B5 56B3 58E3 5B45 5DC6 - 5DC7 5EEE 5EEF 5FC0 5FC1 61F9 6517 6516 - 6515 6513 65DF 66E8 66E3 66E4 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 6921 - srcEnd = 697E - mappingOffset = 1A70 - Mapping = - 6AF3 6AF0 6AEA 6AE8 6AF9 6AF1 6AEE 6AEF - 703C 7035 702F 7037 7034 7031 7042 7038 - 703F 703A 7039 702A 7040 703B 7033 7041 - 7213 7214 72A8 737D 737C 74BA 76AB 76AA - 76BE 76ED 77CC 77CE 77CF 77CD 77F2 7925 - 7923 7927 7928 7924 7929 79B2 7A6E 7A6C - 7A6D 7AF7 7C49 7C48 7C4A 7C47 7C45 7CEE - 7E7B 7E7E 7E81 7E80 7FBA 7FFF 8079 81DB - 81D9 8268 8269 8622 85FF 8601 85FE 861B - 8600 85F6 8604 8609 8605 860C 85FD 8819 - 8810 8811 8817 8813 8816 8963 8966 89B9 - 89F7 8B60 8B6A 8B5D 8B68 8B63 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 6A21 - srcEnd = 6A7E - mappingOffset = 1ACE - Mapping = - 8B65 8B67 8B6D 8DAE 8E86 8E88 8E84 8F59 - 8F56 8F57 8F55 8F58 8F5A 908D 9143 9141 - 91B7 91B5 91B2 91B3 940B 9413 93FB 9420 - 940F 9414 93FE 9415 9410 9428 9419 940D - 93F5 9400 93F7 9407 940E 9416 9412 93FA - 9409 93F8 943C 940A 93FF 93FC 940C 93F6 - 9411 9406 95DE 95E0 95DF 972E 972F 97B9 - 97BB 97FD 97FE 9860 9862 9863 985F 98C1 - 98C2 9950 994E 9959 994C 994B 9953 9A32 - 9A34 9A31 9A2C 9A2A 9A36 9A29 9A2E 9A38 - 9A2D 9AC7 9ACA 9AC6 9B10 9B12 9B11 9C0B - 9C08 9BF7 9C05 9C12 9BF8 9C40 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 6B21 - srcEnd = 6B7E - mappingOffset = 1B2C - Mapping = - 9C07 9C0E 9C06 9C17 9C14 9C09 9D9F 9D99 - 9DA4 9D9D 9D92 9D98 9D90 9D9B 9DA0 9D94 - 9D9C 9DAA 9D97 9DA1 9D9A 9DA2 9DA8 9D9E - 9DA3 9DBF 9DA9 9D96 9DA6 9DA7 9E99 9E9B - 9E9A 9EE5 9EE4 9EE7 9EE6 9F30 9F2E 9F5B - 9F60 9F5E 9F5D 9F59 9F91 513A 5139 5298 - 5297 56C3 56BD 56BE 5B48 5B47 5DCB 5DCF - 5EF1 61FD 651B 6B02 6AFC 6B03 6AF8 6B00 - 7043 7044 704A 7048 7049 7045 7046 721D - 721A 7219 737E 7517 766A 77D0 792D 7931 - 792F 7C54 7C53 7CF2 7E8A 7E87 7E88 7E8B - 7E86 7E8D 7F4D 7FBB 8030 81DD -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 6C21 - srcEnd = 6C7E - mappingOffset = 1B8A - Mapping = - 8618 862A 8626 861F 8623 861C 8619 8627 - 862E 8621 8620 8629 861E 8625 8829 881D - 881B 8820 8824 881C 882B 884A 896D 8969 - 896E 896B 89FA 8B79 8B78 8B45 8B7A 8B7B - 8D10 8D14 8DAF 8E8E 8E8C 8F5E 8F5B 8F5D - 9146 9144 9145 91B9 943F 943B 9436 9429 - 943D 9430 9439 942A 9437 942C 9440 9431 - 95E5 95E4 95E3 9735 973A 97BF 97E1 9864 - 98C9 98C6 98C0 9958 9956 9A39 9A3D 9A46 - 9A44 9A42 9A41 9A3A 9A3F 9ACD 9B15 9B17 - 9B18 9B16 9B3A 9B52 9C2B 9C1D 9C1C 9C2C - 9C23 9C28 9C29 9C24 9C21 9DB7 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 6D21 - srcEnd = 6D7E - mappingOffset = 1BE8 - Mapping = - 9DB6 9DBC 9DC1 9DC7 9DCA 9DCF 9DBE 9DC5 - 9DC3 9DBB 9DB5 9DCE 9DB9 9DBA 9DAC 9DC8 - 9DB1 9DAD 9DCC 9DB3 9DCD 9DB2 9E7A 9E9C - 9EEB 9EEE 9EED 9F1B 9F18 9F1A 9F31 9F4E - 9F65 9F64 9F92 4EB9 56C6 56C5 56CB 5971 - 5B4B 5B4C 5DD5 5DD1 5EF2 6521 6520 6526 - 6522 6B0B 6B08 6B09 6C0D 7055 7056 7057 - 7052 721E 721F 72A9 737F 74D8 74D5 74D9 - 74D7 766D 76AD 7935 79B4 7A70 7A71 7C57 - 7C5C 7C59 7C5B 7C5A 7CF4 7CF1 7E91 7F4F - 7F87 81DE 826B 8634 8635 8633 862C 8632 - 8636 882C 8828 8826 882A 8825 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 6E21 - srcEnd = 6E7E - mappingOffset = 1C46 - Mapping = - 8971 89BF 89BE 89FB 8B7E 8B84 8B82 8B86 - 8B85 8B7F 8D15 8E95 8E94 8E9A 8E92 8E90 - 8E96 8E97 8F60 8F62 9147 944C 9450 944A - 944B 944F 9447 9445 9448 9449 9446 973F - 97E3 986A 9869 98CB 9954 995B 9A4E 9A53 - 9A54 9A4C 9A4F 9A48 9A4A 9A49 9A52 9A50 - 9AD0 9B19 9B2B 9B3B 9B56 9B55 9C46 9C48 - 9C3F 9C44 9C39 9C33 9C41 9C3C 9C37 9C34 - 9C32 9C3D 9C36 9DDB 9DD2 9DDE 9DDA 9DCB - 9DD0 9DDC 9DD1 9DDF 9DE9 9DD9 9DD8 9DD6 - 9DF5 9DD5 9DDD 9EB6 9EF0 9F35 9F33 9F32 - 9F42 9F6B 9F95 9FA2 513D 5299 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 6F21 - srcEnd = 6F7E - mappingOffset = 1CA4 - Mapping = - 58E8 58E7 5972 5B4D 5DD8 882F 5F4F 6201 - 6203 6204 6529 6525 6596 66EB 6B11 6B12 - 6B0F 6BCA 705B 705A 7222 7382 7381 7383 - 7670 77D4 7C67 7C66 7E95 826C 863A 8640 - 8639 863C 8631 863B 863E 8830 8832 882E - 8833 8976 8974 8973 89FE 8B8C 8B8E 8B8B - 8B88 8C45 8D19 8E98 8F64 8F63 91BC 9462 - 9455 945D 9457 945E 97C4 97C5 9800 9A56 - 9A59 9B1E 9B1F 9B20 9C52 9C58 9C50 9C4A - 9C4D 9C4B 9C55 9C59 9C4C 9C4E 9DFB 9DF7 - 9DEF 9DE3 9DEB 9DF8 9DE4 9DF6 9DE1 9DEE - 9DE6 9DF2 9DF0 9DE2 9DEC 9DF4 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 7021 - srcEnd = 707E - mappingOffset = 1D02 - Mapping = - 9DF3 9DE8 9DED 9EC2 9ED0 9EF2 9EF3 9F06 - 9F1C 9F38 9F37 9F36 9F43 9F4F 9F71 9F70 - 9F6E 9F6F 56D3 56CD 5B4E 5C6D 652D 66ED - 66EE 6B13 705F 7061 705D 7060 7223 74DB - 74E5 77D5 7938 79B7 79B6 7C6A 7E97 7F89 - 826D 8643 8838 8837 8835 884B 8B94 8B95 - 8E9E 8E9F 8EA0 8E9D 91BE 91BD 91C2 946B - 9468 9469 96E5 9746 9743 9747 97C7 97E5 - 9A5E 9AD5 9B59 9C63 9C67 9C66 9C62 9C5E - 9C60 9E02 9DFE 9E07 9E03 9E06 9E05 9E00 - 9E01 9E09 9DFF 9DFD 9E04 9EA0 9F1E 9F46 - 9F74 9F75 9F76 56D4 652E 65B8 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 7121 - srcEnd = 717E - mappingOffset = 1D60 - Mapping = - 6B18 6B19 6B17 6B1A 7062 7226 72AA 77D8 - 77D9 7939 7C69 7C6B 7CF6 7E9A 7E98 7E9B - 7E99 81E0 81E1 8646 8647 8648 8979 897A - 897C 897B 89FF 8B98 8B99 8EA5 8EA4 8EA3 - 946E 946D 946F 9471 9473 9749 9872 995F - 9C68 9C6E 9C6D 9E0B 9E0D 9E10 9E0F 9E12 - 9E11 9EA1 9EF5 9F09 9F47 9F78 9F7B 9F7A - 9F79 571E 7066 7C6F 883C 8DB2 8EA6 91C3 - 9474 9478 9476 9475 9A60 9B2E 9C74 9C73 - 9C71 9C75 9E14 9E13 9EF6 9F0A 9FA4 7068 - 7065 7CF7 866A 883E 883D 883F 8B9E 8C9C - 8EA9 8EC9 974B 9873 9874 98CC -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 7221 - srcEnd = 7244 - mappingOffset = 1DBE - Mapping = - 9961 99AB 9A64 9A66 9A67 9B24 9E15 9E17 - 9F48 6207 6B1E 7227 864C 8EA8 9482 9480 - 9481 9A69 9A68 9E19 864B 8B9F 9483 9C79 - 9EB7 7675 9A6B 9C7A 9E1D 7069 706A 7229 - 9EA4 9F7E 9F49 9F98 -End of Item 0051 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0052, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0019, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x010F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0000 */ -/* Total of Format 1 : 0x0052 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x0019 Start of MapCell Array */ -/* 0000 */ 0x2121, 0x217E, 0x0000, -/* 0001 */ 0x2221, 0x227E, 0x005E, -/* 0002 */ 0x2321, 0x237E, 0x00BC, -/* 0003 */ 0x2421, 0x247E, 0x011A, -/* 0004 */ 0x2521, 0x257E, 0x0178, -/* 0005 */ 0x2621, 0x267E, 0x01D6, -/* 0006 */ 0x2721, 0x277E, 0x0234, -/* 0007 */ 0x2821, 0x287E, 0x0292, -/* 0008 */ 0x2921, 0x297E, 0x02F0, -/* 0009 */ 0x2A21, 0x2A7E, 0x034E, -/* 000A */ 0x2B21, 0x2B7E, 0x03AC, -/* 000B */ 0x2C21, 0x2C7E, 0x040A, -/* 000C */ 0x2D21, 0x2D7E, 0x0468, -/* 000D */ 0x2E21, 0x2E7E, 0x04C6, -/* 000E */ 0x2F21, 0x2F7E, 0x0524, -/* 000F */ 0x3021, 0x307E, 0x0582, -/* 0010 */ 0x3121, 0x317E, 0x05E0, -/* 0011 */ 0x3221, 0x327E, 0x063E, -/* 0012 */ 0x3321, 0x337E, 0x069C, -/* 0013 */ 0x3421, 0x347E, 0x06FA, -/* 0014 */ 0x3521, 0x357E, 0x0758, -/* 0015 */ 0x3621, 0x367E, 0x07B6, -/* 0016 */ 0x3721, 0x377E, 0x0814, -/* 0017 */ 0x3821, 0x387E, 0x0872, -/* 0018 */ 0x3921, 0x397E, 0x08D0, -/* 0019 */ 0x3A21, 0x3A7E, 0x092E, -/* 001A */ 0x3B21, 0x3B7E, 0x098C, -/* 001B */ 0x3C21, 0x3C7E, 0x09EA, -/* 001C */ 0x3D21, 0x3D7E, 0x0A48, -/* 001D */ 0x3E21, 0x3E7E, 0x0AA6, -/* 001E */ 0x3F21, 0x3F7E, 0x0B04, -/* 001F */ 0x4021, 0x407E, 0x0B62, -/* 0020 */ 0x4121, 0x417E, 0x0BC0, -/* 0021 */ 0x4221, 0x427E, 0x0C1E, -/* 0022 */ 0x4321, 0x437E, 0x0C7C, -/* 0023 */ 0x4421, 0x447E, 0x0CDA, -/* 0024 */ 0x4521, 0x457E, 0x0D38, -/* 0025 */ 0x4621, 0x467E, 0x0D96, -/* 0026 */ 0x4721, 0x477E, 0x0DF4, -/* 0027 */ 0x4821, 0x487E, 0x0E52, -/* 0028 */ 0x4921, 0x497E, 0x0EB0, -/* 0029 */ 0x4A21, 0x4A7E, 0x0F0E, -/* 002A */ 0x4B21, 0x4B7E, 0x0F6C, -/* 002B */ 0x4C21, 0x4C7E, 0x0FCA, -/* 002C */ 0x4D21, 0x4D7E, 0x1028, -/* 002D */ 0x4E21, 0x4E7E, 0x1086, -/* 002E */ 0x4F21, 0x4F7E, 0x10E4, -/* 002F */ 0x5021, 0x507E, 0x1142, -/* 0030 */ 0x5121, 0x517E, 0x11A0, -/* 0031 */ 0x5221, 0x527E, 0x11FE, -/* 0032 */ 0x5321, 0x537E, 0x125C, -/* 0033 */ 0x5421, 0x547E, 0x12BA, -/* 0034 */ 0x5521, 0x557E, 0x1318, -/* 0035 */ 0x5621, 0x567E, 0x1376, -/* 0036 */ 0x5721, 0x577E, 0x13D4, -/* 0037 */ 0x5821, 0x587E, 0x1432, -/* 0038 */ 0x5921, 0x597E, 0x1490, -/* 0039 */ 0x5A21, 0x5A7E, 0x14EE, -/* 003A */ 0x5B21, 0x5B7E, 0x154C, -/* 003B */ 0x5C21, 0x5C7E, 0x15AA, -/* 003C */ 0x5D21, 0x5D7E, 0x1608, -/* 003D */ 0x5E21, 0x5E7E, 0x1666, -/* 003E */ 0x5F21, 0x5F7E, 0x16C4, -/* 003F */ 0x6021, 0x607E, 0x1722, -/* 0040 */ 0x6121, 0x617E, 0x1780, -/* 0041 */ 0x6221, 0x627E, 0x17DE, -/* 0042 */ 0x6321, 0x637E, 0x183C, -/* 0043 */ 0x6421, 0x647E, 0x189A, -/* 0044 */ 0x6521, 0x657E, 0x18F8, -/* 0045 */ 0x6621, 0x667E, 0x1956, -/* 0046 */ 0x6721, 0x677E, 0x19B4, -/* 0047 */ 0x6821, 0x687E, 0x1A12, -/* 0048 */ 0x6921, 0x697E, 0x1A70, -/* 0049 */ 0x6A21, 0x6A7E, 0x1ACE, -/* 004A */ 0x6B21, 0x6B7E, 0x1B2C, -/* 004B */ 0x6C21, 0x6C7E, 0x1B8A, -/* 004C */ 0x6D21, 0x6D7E, 0x1BE8, -/* 004D */ 0x6E21, 0x6E7E, 0x1C46, -/* 004E */ 0x6F21, 0x6F7E, 0x1CA4, -/* 004F */ 0x7021, 0x707E, 0x1D02, -/* 0050 */ 0x7121, 0x717E, 0x1D60, -/* 0051 */ 0x7221, 0x7244, 0x1DBE, -/*-------------------------------------------------------*/ -/* Offset=0x010F Start of MappingTable */ - -/* 0000 */ 0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47, -/* 0008 */ 0x4E8D, 0x56D7, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E, 0x4E2E, -/* 0010 */ 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C, 0x53B9, -/* 0018 */ 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3, 0x6BCC, -/* 0020 */ 0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9, 0x4EE1, -/* 0028 */ 0x4EDD, 0x4EDA, 0x520C, 0x5209, 0x531C, 0x534C, 0x5722, 0x5723, -/* 0030 */ 0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74, 0x5C73, -/* 0038 */ 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15, 0x6C36, -/* 0040 */ 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, 0x79B8, 0x808A, -/* 0048 */ 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 0x4EF1, 0x4F00, -/* 0050 */ 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 0x4F13, 0x4F04, -/* 0058 */ 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5210, 0x52A6, 0x5322, 0x531F, -/* 0060 */ 0x534D, 0x538A, 0x5407, 0x56E1, 0x56DF, 0x572E, 0x572A, 0x5734, -/* 0068 */ 0x593C, 0x5980, 0x597C, 0x5985, 0x597B, 0x597E, 0x5977, 0x597F, -/* 0070 */ 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A, 0x5C7B, 0x5C7E, 0x5DDF, -/* 0078 */ 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74, 0x5FD5, 0x5FD4, 0x5FCF, -/* 0080 */ 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259, 0x6260, -/* 0088 */ 0x625A, 0x6265, 0x6537, 0x65EF, 0x65EE, 0x673E, 0x6739, 0x6738, -/* 0090 */ 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46, 0x6C52, -/* 0098 */ 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B, 0x6C4C, 0x7071, 0x725E, -/* 00A0 */ 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, 0x7A75, 0x7F51, 0x8278, -/* 00A8 */ 0x827C, 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099, 0x9097, -/* 00B0 */ 0x9098, 0x909B, 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, 0x4F56, -/* 00B8 */ 0x4F3B, 0x4F62, 0x4F49, 0x4F53, 0x4F64, 0x4F3E, 0x4F67, 0x4F52, -/* 00C0 */ 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, 0x4F33, 0x4F3F, 0x4F61, 0x518F, -/* 00C8 */ 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD, 0x52AE, 0x5309, 0x5363, -/* 00D0 */ 0x5372, 0x538E, 0x538F, 0x5430, 0x5437, 0x542A, 0x5454, 0x5445, -/* 00D8 */ 0x5419, 0x541C, 0x5425, 0x5418, 0x543D, 0x544F, 0x5441, 0x5428, -/* 00E0 */ 0x5424, 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741, 0x5745, 0x574C, -/* 00E8 */ 0x5749, 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0, -/* 00F0 */ 0x5997, 0x598E, 0x59A2, 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, -/* 00F8 */ 0x5B92, 0x5C28, 0x5C2A, 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89, -/* 0100 */ 0x5C92, 0x5C8A, 0x5C86, 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E, -/* 0108 */ 0x5E8B, 0x5E89, 0x5E8C, 0x5E88, 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, -/* 0110 */ 0x5F76, 0x5FD2, 0x5FD1, 0x5FD0, 0x5FED, 0x5FE8, 0x5FEE, 0x5FF3, -/* 0118 */ 0x5FE1, 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF, 0x5FF7, 0x5FFB, 0x6000, -/* 0120 */ 0x5FF4, 0x623A, 0x6283, 0x628C, 0x628E, 0x628F, 0x6294, 0x6287, -/* 0128 */ 0x6271, 0x627B, 0x627A, 0x6270, 0x6281, 0x6288, 0x6277, 0x627D, -/* 0130 */ 0x6272, 0x6274, 0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5, 0x6745, -/* 0138 */ 0x6747, 0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D, 0x675A, -/* 0140 */ 0x674B, 0x6BD0, 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, 0x6C84, -/* 0148 */ 0x6C8B, 0x6C8F, 0x6C71, 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, 0x6C87, -/* 0150 */ 0x6C95, 0x6C9C, 0x6C66, 0x6C73, 0x6C65, 0x6C7B, 0x6C8E, 0x7074, -/* 0158 */ 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3, 0x72C6, 0x72C1, 0x72BA, -/* 0160 */ 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753A, 0x7539, -/* 0168 */ 0x7594, 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099, 0x8090, -/* 0170 */ 0x8092, 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291, 0x8293, -/* 0178 */ 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F, 0x90A1, -/* 0180 */ 0x90A5, 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F, 0x962D, -/* 0188 */ 0x4E33, 0x4F98, 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, 0x4F87, 0x4F76, -/* 0190 */ 0x4F74, 0x4F89, 0x4F84, 0x4F77, 0x4F4C, 0x4F97, 0x4F6A, 0x4F9A, -/* 0198 */ 0x4F79, 0x4F81, 0x4F78, 0x4F90, 0x4F9C, 0x4F94, 0x4F9E, 0x4F92, -/* 01A0 */ 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, 0x51BC, 0x51BE, 0x5235, -/* 01A8 */ 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, 0x530B, 0x533C, -/* 01B0 */ 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482, 0x5488, -/* 01B8 */ 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466, 0x548D, -/* 01C0 */ 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56F7, -/* 01C8 */ 0x56F9, 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, 0x5770, 0x5776, -/* 01D0 */ 0x5780, 0x5775, 0x577B, 0x5773, 0x5774, 0x5762, 0x5768, 0x577D, -/* 01D8 */ 0x590C, 0x5945, 0x59B5, 0x59BA, 0x59CF, 0x59CE, 0x59B2, 0x59CC, -/* 01E0 */ 0x59C1, 0x59B6, 0x59BC, 0x59C3, 0x59D6, 0x59B1, 0x59BD, 0x59C0, -/* 01E8 */ 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, 0x5B93, 0x5B95, 0x5C44, -/* 01F0 */ 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF, 0x5CA8, 0x5CAC, -/* 01F8 */ 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, 0x5C9D, 0x5CA5, -/* 0200 */ 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19, 0x5F28, 0x5F22, -/* 0208 */ 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D, 0x5FDE, 0x5FE5, -/* 0210 */ 0x602D, 0x6026, 0x6019, 0x6032, 0x600B, 0x6034, 0x600A, 0x6017, -/* 0218 */ 0x6033, 0x601A, 0x601E, 0x602C, 0x6022, 0x600D, 0x6010, 0x602E, -/* 0220 */ 0x6013, 0x6011, 0x600C, 0x6009, 0x601C, 0x6214, 0x623D, 0x62AD, -/* 0228 */ 0x62B4, 0x62D1, 0x62BE, 0x62AA, 0x62B6, 0x62CA, 0x62AE, 0x62B3, -/* 0230 */ 0x62AF, 0x62BB, 0x62A9, 0x62B0, 0x62B8, 0x653D, 0x65A8, 0x65BB, -/* 0238 */ 0x6609, 0x65FC, 0x6604, 0x6612, 0x6608, 0x65FB, 0x6603, 0x660B, -/* 0240 */ 0x660D, 0x6605, 0x65FD, 0x6611, 0x6610, 0x66F6, 0x670A, 0x6785, -/* 0248 */ 0x676C, 0x678E, 0x6792, 0x6776, 0x677B, 0x6798, 0x6786, 0x6784, -/* 0250 */ 0x6774, 0x678D, 0x678C, 0x677A, 0x679F, 0x6791, 0x6799, 0x6783, -/* 0258 */ 0x677D, 0x6781, 0x6778, 0x6779, 0x6794, 0x6B25, 0x6B80, 0x6B7E, -/* 0260 */ 0x6BDE, 0x6C1D, 0x6C93, 0x6CEC, 0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6, -/* 0268 */ 0x6CD4, 0x6CAD, 0x6CE7, 0x6CB7, 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, -/* 0270 */ 0x6CC6, 0x6CED, 0x6CF2, 0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, -/* 0278 */ 0x6C80, 0x6CDE, 0x6CC0, 0x6D30, 0x6CCD, 0x6CC7, 0x6CB0, 0x6CF9, -/* 0280 */ 0x6CCF, 0x6CE9, 0x6CD1, 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, -/* 0288 */ 0x7084, 0x7091, 0x7096, 0x7082, 0x709A, 0x7083, 0x726A, 0x72D6, -/* 0290 */ 0x72CB, 0x72D8, 0x72C9, 0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC, -/* 0298 */ 0x72D1, 0x73A4, 0x73A1, 0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC, -/* 02A0 */ 0x739D, 0x74DD, 0x74E8, 0x753F, 0x7540, 0x753E, 0x758C, 0x7598, -/* 02A8 */ 0x76AF, 0x76F3, 0x76F1, 0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, -/* 02B0 */ 0x77FB, 0x77FA, 0x77F7, 0x7942, 0x793F, 0x79C5, 0x7A78, 0x7A7B, -/* 02B8 */ 0x7AFB, 0x7C75, 0x7CFD, 0x8035, 0x808F, 0x80AE, 0x80A3, 0x80B8, -/* 02C0 */ 0x80B5, 0x80AD, 0x8220, 0x82A0, 0x82C0, 0x82AB, 0x829A, 0x8298, -/* 02C8 */ 0x829B, 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA, 0x82B4, -/* 02D0 */ 0x82A8, 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, 0x82A2, -/* 02D8 */ 0x8670, 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3, -/* 02E0 */ 0x8FCD, 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, -/* 02E8 */ 0x90B0, 0x9639, 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, -/* 02F0 */ 0x4FD3, 0x4FB2, 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, -/* 02F8 */ 0x4FBB, 0x4FB3, 0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, -/* 0300 */ 0x4FEC, 0x5244, 0x5249, 0x52C0, 0x52C2, 0x533D, 0x537C, 0x5397, -/* 0308 */ 0x5396, 0x5399, 0x5398, 0x54BA, 0x54A1, 0x54AD, 0x54A5, 0x54CF, -/* 0310 */ 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5, 0x54C6, -/* 0318 */ 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, 0x54B0, -/* 0320 */ 0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B, -/* 0328 */ 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4, -/* 0330 */ 0x590D, 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD, -/* 0338 */ 0x59FA, 0x59FD, 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB, -/* 0340 */ 0x59E9, 0x59F3, 0x59F5, 0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8, -/* 0348 */ 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, 0x5CDB, 0x5CDE, -/* 0350 */ 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3, 0x5CD4, 0x5CCF, -/* 0358 */ 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, 0x5E21, 0x5E22, -/* 0360 */ 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, 0x5E9B, 0x5EA3, -/* 0368 */ 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, 0x6039, 0x6054, -/* 0370 */ 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, 0x605B, 0x604C, -/* 0378 */ 0x6040, 0x6042, 0x605F, 0x6024, 0x6044, 0x6058, 0x6066, 0x606E, -/* 0380 */ 0x6242, 0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5, 0x630E, 0x6303, -/* 0388 */ 0x62EB, 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6, 0x6300, 0x6313, -/* 0390 */ 0x6314, 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541, 0x6543, 0x65AA, -/* 0398 */ 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635, 0x661C, 0x6626, 0x6622, -/* 03A0 */ 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639, 0x662E, 0x670F, -/* 03A8 */ 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA, 0x67DC, 0x67BB, 0x67F8, -/* 03B0 */ 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4, 0x67DF, 0x67B5, -/* 03B8 */ 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE, 0x67E3, 0x67C2, 0x67B9, -/* 03C0 */ 0x67CE, 0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, 0x67ED, 0x67CC, -/* 03C8 */ 0x67AE, 0x67E6, 0x67DB, 0x67FA, 0x67C9, 0x67CA, 0x67C3, 0x67EA, -/* 03D0 */ 0x67CB, 0x6B28, 0x6B82, 0x6B84, 0x6BB6, 0x6BD6, 0x6BD8, 0x6BE0, -/* 03D8 */ 0x6C20, 0x6C21, 0x6D28, 0x6D34, 0x6D2D, 0x6D1F, 0x6D3C, 0x6D3F, -/* 03E0 */ 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04, 0x6D19, 0x6D3A, 0x6D1A, -/* 03E8 */ 0x6D11, 0x6D00, 0x6D1D, 0x6D42, 0x6D01, 0x6D18, 0x6D37, 0x6D03, -/* 03F0 */ 0x6D0F, 0x6D40, 0x6D07, 0x6D20, 0x6D2C, 0x6D08, 0x6D22, 0x6D09, -/* 03F8 */ 0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4, -/* 0400 */ 0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, 0x7270, 0x7273, -/* 0408 */ 0x726E, 0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, -/* 0410 */ 0x72E3, 0x7385, 0x73CC, 0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6, -/* 0418 */ 0x73B5, 0x73B4, 0x73EB, 0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6, -/* 0420 */ 0x73B8, 0x73CB, 0x74EC, 0x74EE, 0x752E, 0x7547, 0x7548, 0x75A7, -/* 0428 */ 0x75AA, 0x7679, 0x76C4, 0x7708, 0x7703, 0x7704, 0x7705, 0x770A, -/* 0430 */ 0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8, 0x7806, 0x7811, 0x7812, -/* 0438 */ 0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, 0x7813, 0x794A, -/* 0440 */ 0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6, -/* 0448 */ 0x79CE, 0x7A80, 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, -/* 0450 */ 0x7C79, 0x7C7F, 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58, -/* 0458 */ 0x7F91, 0x7F8D, 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037, -/* 0460 */ 0x80D8, 0x80C7, 0x80E0, 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5, -/* 0468 */ 0x80E3, 0x80D9, 0x80DC, 0x80CA, 0x80D5, 0x80C9, 0x80CF, 0x80D7, -/* 0470 */ 0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE, 0x82F9, -/* 0478 */ 0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6, 0x82F4, -/* 0480 */ 0x82EC, 0x82E1, 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, 0x82F0, -/* 0488 */ 0x82EA, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677, 0x8674, -/* 0490 */ 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, 0x89D3, -/* 0498 */ 0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, 0x90F1, -/* 04A0 */ 0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB, 0x90C8, -/* 04A8 */ 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, 0x964A, 0x964E, -/* 04B0 */ 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B, 0x4FF5, -/* 04B8 */ 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017, 0x501C, -/* 04C0 */ 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, 0x515A, 0x5194, -/* 04C8 */ 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261, 0x525A, -/* 04D0 */ 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, 0x539E, -/* 04D8 */ 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, 0x551A, -/* 04E0 */ 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1, 0x550A, -/* 04E8 */ 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B, 0x5701, -/* 04F0 */ 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6, 0x57BD, -/* 04F8 */ 0x57BC, 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, 0x57B9, 0x57C1, -/* 0500 */ 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, 0x5A15, 0x5A0F, -/* 0508 */ 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD, 0x5BAC, -/* 0510 */ 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1, 0x5CF7, -/* 0518 */ 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA, 0x5EAC, -/* 0520 */ 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, 0x6041, 0x60A2, -/* 0528 */ 0x6088, 0x6080, 0x6092, 0x6081, 0x609D, 0x6083, 0x6095, 0x609B, -/* 0530 */ 0x6097, 0x6087, 0x609C, 0x608E, 0x6219, 0x6246, 0x62F2, 0x6310, -/* 0538 */ 0x6356, 0x632C, 0x6344, 0x6345, 0x6336, 0x6343, 0x63E4, 0x6339, -/* 0540 */ 0x634B, 0x634A, 0x633C, 0x6329, 0x6341, 0x6334, 0x6358, 0x6354, -/* 0548 */ 0x6359, 0x632D, 0x6347, 0x6333, 0x635A, 0x6351, 0x6338, 0x6357, -/* 0550 */ 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, 0x65C3, 0x65C4, 0x65C2, -/* 0558 */ 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713, 0x681F, 0x681A, -/* 0560 */ 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F, 0x6816, 0x6831, -/* 0568 */ 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 0x684E, 0x6844, 0x6834, -/* 0570 */ 0x681D, 0x6812, 0x6814, 0x6826, 0x6828, 0x682E, 0x684D, 0x683A, -/* 0578 */ 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31, 0x6B34, 0x6B6D, -/* 0580 */ 0x8082, 0x6B88, 0x6BE6, 0x6BE4, 0x6BE8, 0x6BE3, 0x6BE2, 0x6BE7, -/* 0588 */ 0x6C25, 0x6D7A, 0x6D63, 0x6D64, 0x6D76, 0x6D0D, 0x6D61, 0x6D92, -/* 0590 */ 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91, 0x6D8D, 0x6DEF, 0x6D7F, -/* 0598 */ 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70, 0x6D7C, 0x6D5F, -/* 05A0 */ 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E, 0x6D80, 0x6D84, -/* 05A8 */ 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 0x6D75, 0x6D90, 0x70DC, 0x70D3, -/* 05B0 */ 0x70D1, 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7, 0x70D2, 0x70DE, -/* 05B8 */ 0x70E0, 0x70D4, 0x70CD, 0x70C5, 0x70C6, 0x70C7, 0x70DA, 0x70CE, -/* 05C0 */ 0x70E1, 0x7242, 0x7278, 0x7277, 0x7276, 0x7300, 0x72FA, 0x72F4, -/* 05C8 */ 0x72FE, 0x72F6, 0x72F3, 0x72FB, 0x7301, 0x73D3, 0x73D9, 0x73E5, -/* 05D0 */ 0x73D6, 0x73BC, 0x73E7, 0x73E3, 0x73E9, 0x73DC, 0x73D2, 0x73DB, -/* 05D8 */ 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8, 0x73E8, 0x74DE, 0x74DF, -/* 05E0 */ 0x74F4, 0x74F5, 0x7521, 0x755B, 0x755F, 0x75B0, 0x75C1, 0x75BB, -/* 05E8 */ 0x75C4, 0x75C0, 0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9, 0x771D, -/* 05F0 */ 0x771B, 0x7710, 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, -/* 05F8 */ 0x771A, 0x7722, 0x7727, 0x7823, 0x782C, 0x7822, 0x7835, 0x782F, -/* 0600 */ 0x7828, 0x782E, 0x782B, 0x7821, 0x7829, 0x7833, 0x782A, 0x7831, -/* 0608 */ 0x7954, 0x795B, 0x794F, 0x795C, 0x7953, 0x7952, 0x7951, 0x79EB, -/* 0610 */ 0x79EC, 0x79E0, 0x79EE, 0x79ED, 0x79EA, 0x79DC, 0x79DE, 0x79DD, -/* 0618 */ 0x7A86, 0x7A89, 0x7A85, 0x7A8B, 0x7A8C, 0x7A8A, 0x7A87, 0x7AD8, -/* 0620 */ 0x7B10, 0x7B04, 0x7B13, 0x7B05, 0x7B0F, 0x7B08, 0x7B0A, 0x7B0E, -/* 0628 */ 0x7B09, 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, 0x7C88, 0x7C8D, -/* 0630 */ 0x7C85, 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16, 0x7D13, -/* 0638 */ 0x7D1F, 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E, 0x7F60, -/* 0640 */ 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, 0x7FC0, 0x8016, -/* 0648 */ 0x803E, 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101, 0x80FB, -/* 0650 */ 0x8100, 0x8201, 0x822F, 0x8225, 0x8333, 0x832D, 0x8344, 0x8319, -/* 0658 */ 0x8351, 0x8325, 0x8356, 0x833F, 0x8341, 0x8326, 0x831C, 0x8322, -/* 0660 */ 0x8342, 0x834E, 0x831B, 0x832A, 0x8308, 0x833C, 0x834D, 0x8316, -/* 0668 */ 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, 0x8347, 0x8345, 0x834C, -/* 0670 */ 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348, 0x8653, 0x8652, -/* 0678 */ 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, 0x8687, 0x8697, -/* 0680 */ 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1, 0x86A7, -/* 0688 */ 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843, 0x8844, -/* 0690 */ 0x886D, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F, 0x886F, -/* 0698 */ 0x8883, 0x887E, 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57, 0x8C7B, -/* 06A0 */ 0x8CA4, 0x8CA3, 0x8D76, 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6, 0x8ED1, -/* 06A8 */ 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, 0x8FFF, 0x8FFB, 0x9004, 0x8FFC, -/* 06B0 */ 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA, 0x90E3, 0x90DF, 0x90E5, -/* 06B8 */ 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150, 0x914E, 0x914F, -/* 06C0 */ 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, 0x98E3, 0x9ADF, -/* 06C8 */ 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, 0x5060, 0x5053, -/* 06D0 */ 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041, 0x505B, 0x504A, -/* 06D8 */ 0x5062, 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, 0x5063, 0x5064, -/* 06E0 */ 0x5046, 0x5040, 0x506E, 0x5073, 0x5057, 0x5051, 0x51D0, 0x526B, -/* 06E8 */ 0x526D, 0x526C, 0x526E, 0x52D6, 0x52D3, 0x532D, 0x539C, 0x5575, -/* 06F0 */ 0x5576, 0x553C, 0x554D, 0x5550, 0x5534, 0x552A, 0x5551, 0x5562, -/* 06F8 */ 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550C, 0x5532, 0x5565, -/* 0700 */ 0x554E, 0x5539, 0x5548, 0x552D, 0x553B, 0x5540, 0x554B, 0x570A, -/* 0708 */ 0x5707, 0x57FB, 0x5814, 0x57E2, 0x57F6, 0x57DC, 0x57F4, 0x5800, -/* 0710 */ 0x57ED, 0x57FD, 0x5808, 0x57F8, 0x580B, 0x57F3, 0x57CF, 0x5807, -/* 0718 */ 0x57EE, 0x57E3, 0x57F2, 0x57E5, 0x57EC, 0x57E1, 0x580E, 0x57FC, -/* 0720 */ 0x5810, 0x57E7, 0x5801, 0x580C, 0x57F1, 0x57E9, 0x57F0, 0x580D, -/* 0728 */ 0x5804, 0x595C, 0x5A60, 0x5A58, 0x5A55, 0x5A67, 0x5A5E, 0x5A38, -/* 0730 */ 0x5A35, 0x5A6D, 0x5A50, 0x5A5F, 0x5A65, 0x5A6C, 0x5A53, 0x5A64, -/* 0738 */ 0x5A57, 0x5A43, 0x5A5D, 0x5A52, 0x5A44, 0x5A5B, 0x5A48, 0x5A8E, -/* 0740 */ 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C, 0x5A70, 0x5A69, 0x5A47, 0x5A51, -/* 0748 */ 0x5A56, 0x5A42, 0x5A5C, 0x5B72, 0x5B6E, 0x5BC1, 0x5BC0, 0x5C59, -/* 0750 */ 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, 0x5D20, 0x5D0C, 0x5D28, 0x5D0D, -/* 0758 */ 0x5D26, 0x5D25, 0x5D0F, 0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, -/* 0760 */ 0x5E3E, 0x5E34, 0x5EB1, 0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, -/* 0768 */ 0x5F38, 0x5F9B, 0x5F96, 0x5F9F, 0x608A, 0x6090, 0x6086, 0x60BE, -/* 0770 */ 0x60B0, 0x60BA, 0x60D3, 0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, -/* 0778 */ 0x60C8, 0x60B1, 0x60DB, 0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, -/* 0780 */ 0x60C0, 0x6332, 0x6365, 0x638A, 0x6382, 0x637D, 0x63BD, 0x639E, -/* 0788 */ 0x63AD, 0x639D, 0x6397, 0x63AB, 0x638E, 0x636F, 0x6387, 0x6390, -/* 0790 */ 0x636E, 0x63AF, 0x6375, 0x639C, 0x636D, 0x63AE, 0x637C, 0x63A4, -/* 0798 */ 0x633B, 0x639F, 0x6378, 0x6385, 0x6381, 0x6391, 0x638D, 0x6370, -/* 07A0 */ 0x6553, 0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, 0x665C, 0x6662, -/* 07A8 */ 0x6718, 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE, -/* 07B0 */ 0x68AB, 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, -/* 07B8 */ 0x68B2, 0x688F, 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, -/* 07C0 */ 0x6880, 0x6871, 0x687E, 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, -/* 07C8 */ 0x68A4, 0x6878, 0x687B, 0x6891, 0x688C, 0x688A, 0x687D, 0x6B36, -/* 07D0 */ 0x6B33, 0x6B37, 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E, 0x6B8C, -/* 07D8 */ 0x6C2A, 0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, 0x6DAC, 0x6DE9, -/* 07E0 */ 0x6DE2, 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0, 0x6DDF, -/* 07E8 */ 0x6DD6, 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA, -/* 07F0 */ 0x6DBD, 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9, -/* 07F8 */ 0x6DD0, 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB, -/* 0800 */ 0x70FA, 0x710D, 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104, -/* 0808 */ 0x70F3, 0x7110, 0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8, -/* 0810 */ 0x70F6, 0x710B, 0x7102, 0x710E, 0x727E, 0x727B, 0x727C, 0x727F, -/* 0818 */ 0x731D, 0x7317, 0x7307, 0x7311, 0x7318, 0x730A, 0x7308, 0x72FF, -/* 0820 */ 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, 0x7404, 0x7401, -/* 0828 */ 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, 0x740B, -/* 0830 */ 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF, 0x75CB, -/* 0838 */ 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 0x7739, 0x772F, -/* 0840 */ 0x772D, 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, 0x7725, 0x773B, -/* 0848 */ 0x7735, 0x7848, 0x7852, 0x7849, 0x784D, 0x784A, 0x784C, 0x7826, -/* 0850 */ 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796A, 0x7963, 0x796B, -/* 0858 */ 0x7961, 0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7, 0x7A8F, 0x7A94, -/* 0860 */ 0x7A90, 0x7B35, 0x7B3B, 0x7B34, 0x7B25, 0x7B30, 0x7B22, 0x7B24, -/* 0868 */ 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, 0x7B2D, 0x7B2F, -/* 0870 */ 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, 0x7C96, 0x7CA3, -/* 0878 */ 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 0x7D2C, 0x7D29, -/* 0880 */ 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 0x7D28, 0x7F63, -/* 0888 */ 0x7F95, 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, 0x7FCD, 0x7FD0, -/* 0890 */ 0x7FD1, 0x7FC7, 0x7FCF, 0x7FC9, 0x801F, 0x801E, 0x801B, 0x8047, -/* 0898 */ 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, 0x811B, 0x812D, 0x811F, -/* 08A0 */ 0x812C, 0x811E, 0x8121, 0x8115, 0x8127, 0x811D, 0x8122, 0x8211, -/* 08A8 */ 0x8238, 0x8233, 0x823A, 0x8234, 0x8232, 0x8274, 0x8390, 0x83A3, -/* 08B0 */ 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, 0x8374, 0x838F, 0x8381, -/* 08B8 */ 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, 0x8383, 0x838C, -/* 08C0 */ 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E, 0x83A5, 0x83AF, 0x8388, -/* 08C8 */ 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387, 0x83AE, 0x8376, 0x8659, -/* 08D0 */ 0x8656, 0x86BF, 0x86B7, 0x86C2, 0x86C1, 0x86C5, 0x86BA, 0x86B0, -/* 08D8 */ 0x86C8, 0x86B9, 0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB, 0x86BC, -/* 08E0 */ 0x86C3, 0x86BD, 0x86BE, 0x8852, 0x8889, 0x8895, 0x88A8, 0x88A2, -/* 08E8 */ 0x88AA, 0x889A, 0x8891, 0x88A1, 0x889F, 0x8898, 0x88A7, 0x8899, -/* 08F0 */ 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C, 0x8893, 0x888E, 0x8982, -/* 08F8 */ 0x89D6, 0x89D9, 0x89D5, 0x8A30, 0x8A27, 0x8A2C, 0x8A1E, 0x8C39, -/* 0900 */ 0x8C3B, 0x8C5C, 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B, 0x8D79, -/* 0908 */ 0x8DBC, 0x8DC2, 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE, 0x8EDD, -/* 0910 */ 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011, 0x901C, -/* 0918 */ 0x900C, 0x9021, 0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2, 0x90F3, -/* 0920 */ 0x90D4, 0x90EB, 0x90EC, 0x90E9, 0x9156, 0x9158, 0x915A, 0x9153, -/* 0928 */ 0x9155, 0x91EC, 0x91F4, 0x91F1, 0x91F3, 0x91F8, 0x91E4, 0x91F9, -/* 0930 */ 0x91EA, 0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A, 0x9586, 0x9588, -/* 0938 */ 0x967C, 0x966D, 0x966B, 0x9671, 0x966F, 0x96BF, 0x976A, 0x9804, -/* 0940 */ 0x98E5, 0x9997, 0x509B, 0x5095, 0x5094, 0x509E, 0x508B, 0x50A3, -/* 0948 */ 0x5083, 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092, 0x5082, -/* 0950 */ 0x5087, 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7, 0x5591, -/* 0958 */ 0x55A8, 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, 0x5593, 0x5588, -/* 0960 */ 0x558F, 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D, 0x558C, -/* 0968 */ 0x55A6, 0x557F, 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, 0x5837, -/* 0970 */ 0x5819, 0x581E, 0x5827, 0x5823, 0x5828, 0x57F5, 0x5848, 0x5825, -/* 0978 */ 0x581C, 0x581B, 0x5833, 0x583F, 0x5836, 0x582E, 0x5839, 0x5838, -/* 0980 */ 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, 0x5A94, 0x5A9F, 0x5A7A, -/* 0988 */ 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5, 0x5AAC, 0x5A95, -/* 0990 */ 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83, 0x5A8B, 0x5AA9, -/* 0998 */ 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, 0x5A9D, 0x5BEA, -/* 09A0 */ 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, 0x5C0C, 0x5C30, -/* 09A8 */ 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, 0x5D35, 0x5D51, -/* 09B0 */ 0x5D4E, 0x5D55, 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, 0x5D31, 0x5D59, -/* 09B8 */ 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, 0x5D32, 0x5D36, 0x5D40, -/* 09C0 */ 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, 0x5FA5, 0x5FAB, 0x60C9, -/* 09C8 */ 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, 0x6114, 0x60F2, 0x610A, -/* 09D0 */ 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC, 0x60FE, 0x60C1, -/* 09D8 */ 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104, 0x610B, 0x624A, -/* 09E0 */ 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8, 0x63EF, 0x63C3, -/* 09E8 */ 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5, 0x63F2, 0x63F5, -/* 09F0 */ 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4, 0x63D8, 0x63D3, -/* 09F8 */ 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, 0x63F0, 0x63D7, 0x63D9, -/* 0A00 */ 0x6532, 0x6567, 0x656A, 0x6564, 0x655C, 0x6568, 0x6565, 0x658C, -/* 0A08 */ 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2, 0x667C, 0x666C, 0x667B, -/* 0A10 */ 0x6680, 0x6671, 0x6679, 0x666A, 0x6672, 0x6701, 0x690C, 0x68D3, -/* 0A18 */ 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA, 0x68F1, 0x690F, 0x68D6, -/* 0A20 */ 0x68F7, 0x68EB, 0x68E4, 0x68F6, 0x6913, 0x6910, 0x68F3, 0x68E1, -/* 0A28 */ 0x6907, 0x68CC, 0x6908, 0x6970, 0x68B4, 0x6911, 0x68EF, 0x68C6, -/* 0A30 */ 0x6914, 0x68F8, 0x68D0, 0x68FD, 0x68FC, 0x68E8, 0x690B, 0x690A, -/* 0A38 */ 0x6917, 0x68CE, 0x68C8, 0x68DD, 0x68DE, 0x68E6, 0x68F4, 0x68D1, -/* 0A40 */ 0x6906, 0x68D4, 0x68E9, 0x6915, 0x6925, 0x68C7, 0x6B39, 0x6B3B, -/* 0A48 */ 0x6B3F, 0x6B3C, 0x6B94, 0x6B97, 0x6B99, 0x6B95, 0x6BBD, 0x6BF0, -/* 0A50 */ 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, 0x6E46, 0x6E47, 0x6E1F, 0x6E49, -/* 0A58 */ 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 0x6E62, 0x6E2B, 0x6E3F, 0x6E41, -/* 0A60 */ 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 0x6E4B, 0x6E40, 0x6E51, 0x6E3B, -/* 0A68 */ 0x6E03, 0x6E2E, 0x6E5E, 0x6E68, 0x6E5C, 0x6E61, 0x6E31, 0x6E28, -/* 0A70 */ 0x6E60, 0x6E71, 0x6E6B, 0x6E39, 0x6E22, 0x6E30, 0x6E53, 0x6E65, -/* 0A78 */ 0x6E27, 0x6E78, 0x6E64, 0x6E77, 0x6E55, 0x6E79, 0x6E52, 0x6E66, -/* 0A80 */ 0x6E35, 0x6E36, 0x6E5A, 0x7120, 0x711E, 0x712F, 0x70FB, 0x712E, -/* 0A88 */ 0x7131, 0x7123, 0x7125, 0x7122, 0x7132, 0x711F, 0x7128, 0x713A, -/* 0A90 */ 0x711B, 0x724B, 0x725A, 0x7288, 0x7289, 0x7286, 0x7285, 0x728B, -/* 0A98 */ 0x7312, 0x730B, 0x7330, 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, -/* 0AA0 */ 0x732D, 0x7326, 0x7323, 0x7335, 0x730C, 0x742E, 0x742C, 0x7430, -/* 0AA8 */ 0x742B, 0x7416, 0x741A, 0x7421, 0x742D, 0x7431, 0x7424, 0x7423, -/* 0AB0 */ 0x741D, 0x7429, 0x7420, 0x7432, 0x74FB, 0x752F, 0x756F, 0x756C, -/* 0AB8 */ 0x75E7, 0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF, 0x75E4, 0x75D7, -/* 0AC0 */ 0x7695, 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, 0x774D, 0x7745, -/* 0AC8 */ 0x774A, 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, 0x7860, 0x7864, -/* 0AD0 */ 0x7865, 0x785C, 0x786D, 0x7871, 0x786A, 0x786E, 0x7870, 0x7869, -/* 0AD8 */ 0x7868, 0x785E, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7A02, -/* 0AE0 */ 0x7A0A, 0x7A03, 0x7A0C, 0x7A04, 0x7A99, 0x7AE6, 0x7AE4, 0x7B4A, -/* 0AE8 */ 0x7B47, 0x7B44, 0x7B48, 0x7B4C, 0x7B4E, 0x7B40, 0x7B58, 0x7B45, -/* 0AF0 */ 0x7CA2, 0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, 0x7D6F, 0x7D63, 0x7D53, -/* 0AF8 */ 0x7D56, 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C, 0x7D6B, 0x7D52, -/* 0B00 */ 0x7D54, 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E, 0x7F3F, 0x7F65, -/* 0B08 */ 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, 0x804F, 0x8050, -/* 0B10 */ 0x80FE, 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F, 0x8147, 0x813D, -/* 0B18 */ 0x814D, 0x813A, 0x81E6, 0x81EE, 0x81F7, 0x81F8, 0x81F9, 0x8204, -/* 0B20 */ 0x823C, 0x823D, 0x823F, 0x8275, 0x833B, 0x83CF, 0x83F9, 0x8423, -/* 0B28 */ 0x83C0, 0x83E8, 0x8412, 0x83E7, 0x83E4, 0x83FC, 0x83F6, 0x8410, -/* 0B30 */ 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF, 0x8401, 0x83DD, 0x83E5, -/* 0B38 */ 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6, 0x83F5, 0x83C9, -/* 0B40 */ 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, 0x83F3, 0x83D5, -/* 0B48 */ 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x839A, 0x83C3, 0x83EC, -/* 0B50 */ 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB, 0x83FE, -/* 0B58 */ 0x86D8, 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA, 0x86DD, -/* 0B60 */ 0x86EB, 0x86DC, 0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1, 0x8848, -/* 0B68 */ 0x8856, 0x8855, 0x88BA, 0x88D7, 0x88B9, 0x88B8, 0x88C0, 0x88BE, -/* 0B70 */ 0x88B6, 0x88BC, 0x88B7, 0x88BD, 0x88B2, 0x8901, 0x88C9, 0x8995, -/* 0B78 */ 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, 0x8A4E, 0x8A4D, 0x8A39, -/* 0B80 */ 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, 0x8A52, 0x8A48, -/* 0B88 */ 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80, 0x8CBA, -/* 0B90 */ 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89, 0x8DD8, -/* 0B98 */ 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5, 0x8DD9, -/* 0BA0 */ 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA, 0x8EF9, 0x8EE6, -/* 0BA8 */ 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, 0x8EEB, 0x8EF1, -/* 0BB0 */ 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, 0x9034, 0x902F, 0x9106, 0x912C, -/* 0BB8 */ 0x9104, 0x90FF, 0x90FC, 0x9108, 0x90F9, 0x90FB, 0x9101, 0x9100, -/* 0BC0 */ 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915F, 0x9162, 0x9160, -/* 0BC8 */ 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226, 0x920F, 0x920C, -/* 0BD0 */ 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204, 0x9227, 0x9202, -/* 0BD8 */ 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, 0x957B, 0x958D, -/* 0BE0 */ 0x958C, 0x9590, 0x9687, 0x967E, 0x9688, 0x9689, 0x9683, 0x9680, -/* 0BE8 */ 0x96C2, 0x96C8, 0x96C3, 0x96F1, 0x96F0, 0x976C, 0x9770, 0x976E, -/* 0BF0 */ 0x9807, 0x98A9, 0x98EB, 0x9CE6, 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, -/* 0BF8 */ 0x50BD, 0x50BF, 0x50C6, 0x50AE, 0x50C4, 0x50CA, 0x50B4, 0x50C8, -/* 0C00 */ 0x50C2, 0x50B0, 0x50C1, 0x50BA, 0x50B1, 0x50CB, 0x50C9, 0x50B6, -/* 0C08 */ 0x50B8, 0x51D7, 0x527A, 0x5278, 0x527B, 0x527C, 0x55C3, 0x55DB, -/* 0C10 */ 0x55CC, 0x55D0, 0x55CB, 0x55CA, 0x55DD, 0x55C0, 0x55D4, 0x55C4, -/* 0C18 */ 0x55E9, 0x55BF, 0x55D2, 0x558D, 0x55CF, 0x55D5, 0x55E2, 0x55D6, -/* 0C20 */ 0x55C8, 0x55F2, 0x55CD, 0x55D9, 0x55C2, 0x5714, 0x5853, 0x5868, -/* 0C28 */ 0x5864, 0x584F, 0x584D, 0x5849, 0x586F, 0x5855, 0x584E, 0x585D, -/* 0C30 */ 0x5859, 0x5865, 0x585B, 0x583D, 0x5863, 0x5871, 0x58FC, 0x5AC7, -/* 0C38 */ 0x5AC4, 0x5ACB, 0x5ABA, 0x5AB8, 0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, -/* 0C40 */ 0x5AC8, 0x5ABB, 0x5AC6, 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, -/* 0C48 */ 0x5ACD, 0x5AB9, 0x5A90, 0x5BD6, 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, -/* 0C50 */ 0x5D71, 0x5D63, 0x5D4A, 0x5D65, 0x5D72, 0x5D6C, 0x5D5E, 0x5D68, -/* 0C58 */ 0x5D67, 0x5D62, 0x5DF0, 0x5E4F, 0x5E4E, 0x5E4A, 0x5E4D, 0x5E4B, -/* 0C60 */ 0x5EC5, 0x5ECC, 0x5EC6, 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, 0x5FAD, -/* 0C68 */ 0x60F7, 0x6149, 0x614A, 0x612B, 0x6145, 0x6136, 0x6132, 0x612E, -/* 0C70 */ 0x6146, 0x612F, 0x614F, 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, -/* 0C78 */ 0x6225, 0x6224, 0x63C5, 0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, -/* 0C80 */ 0x6420, 0x6424, 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, -/* 0C88 */ 0x6437, 0x6422, 0x6423, 0x640C, 0x6426, 0x6430, 0x6428, 0x6441, -/* 0C90 */ 0x6435, 0x642F, 0x640A, 0x641A, 0x6440, 0x6425, 0x6427, 0x640B, -/* 0C98 */ 0x63E7, 0x641B, 0x642E, 0x6421, 0x640E, 0x656F, 0x6592, 0x65D3, -/* 0CA0 */ 0x6686, 0x668C, 0x6695, 0x6690, 0x668B, 0x668A, 0x6699, 0x6694, -/* 0CA8 */ 0x6678, 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962, 0x6971, -/* 0CB0 */ 0x693F, 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A, -/* 0CB8 */ 0x6948, 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, -/* 0CC0 */ 0x6978, 0x6934, 0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, -/* 0CC8 */ 0x6941, 0x6974, 0x694C, 0x693B, 0x694B, 0x6937, 0x695C, 0x694F, -/* 0CD0 */ 0x6951, 0x6932, 0x6952, 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45, -/* 0CD8 */ 0x6B43, 0x6B42, 0x6B48, 0x6B41, 0x6B9B, 0x6BFB, 0x6BFC, 0x6BF9, -/* 0CE0 */ 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F, 0x6EC0, 0x6E9F, -/* 0CE8 */ 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, 0x6ED2, 0x6EBD, -/* 0CF0 */ 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6, 0x6ECF, -/* 0CF8 */ 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92, 0x6E8E, -/* 0D00 */ 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA, 0x6E97, -/* 0D08 */ 0x6EAE, 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, 0x7141, -/* 0D10 */ 0x715D, 0x7162, 0x7172, 0x7178, 0x716A, 0x7161, 0x7142, 0x7158, -/* 0D18 */ 0x7143, 0x714B, 0x7170, 0x715F, 0x7150, 0x7153, 0x7144, 0x714D, -/* 0D20 */ 0x715A, 0x724F, 0x728D, 0x728C, 0x7291, 0x7290, 0x728E, 0x733C, -/* 0D28 */ 0x7342, 0x733B, 0x733A, 0x7340, 0x734A, 0x7349, 0x7444, 0x744A, -/* 0D30 */ 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, 0x744F, 0x7450, 0x744E, -/* 0D38 */ 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, 0x74FF, 0x74FE, 0x74FD, -/* 0D40 */ 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, 0x760F, 0x7603, 0x75F7, -/* 0D48 */ 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, 0x75FB, 0x75F6, 0x75ED, -/* 0D50 */ 0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD, 0x7755, 0x775F, 0x7760, -/* 0D58 */ 0x7752, 0x7756, 0x775A, 0x7769, 0x7767, 0x7754, 0x7759, 0x776D, -/* 0D60 */ 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F, 0x7884, 0x7895, 0x7885, -/* 0D68 */ 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896, 0x787B, -/* 0D70 */ 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11, 0x7A18, 0x7A19, 0x7A12, -/* 0D78 */ 0x7A17, 0x7A15, 0x7A22, 0x7A13, 0x7A1B, 0x7A10, 0x7AA3, 0x7AA2, -/* 0D80 */ 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D, 0x7B74, 0x7B69, 0x7B72, -/* 0D88 */ 0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, 0x7B78, 0x7B76, 0x7B63, -/* 0D90 */ 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 0x7D86, 0x7D80, 0x7D8D, 0x7D7F, -/* 0D98 */ 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83, 0x7D7C, 0x7D8C, 0x7D94, -/* 0DA0 */ 0x7D84, 0x7D7D, 0x7D92, 0x7F6D, 0x7F6B, 0x7F67, 0x7F68, 0x7F6C, -/* 0DA8 */ 0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB, 0x7FDC, 0x8021, 0x8164, 0x8160, -/* 0DB0 */ 0x8177, 0x815C, 0x8169, 0x815B, 0x8162, 0x8172, 0x6721, 0x815E, -/* 0DB8 */ 0x8176, 0x8167, 0x816F, 0x8144, 0x8161, 0x821D, 0x8249, 0x8244, -/* 0DC0 */ 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, 0x8456, 0x8476, 0x8479, -/* 0DC8 */ 0x848F, 0x848D, 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, -/* 0DD0 */ 0x844D, 0x847D, 0x845A, 0x8459, 0x8474, 0x8473, 0x845D, 0x8507, -/* 0DD8 */ 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, 0x8443, 0x8478, 0x8432, -/* 0DE0 */ 0x8445, 0x8429, 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, 0x845F, -/* 0DE8 */ 0x8470, 0x8439, 0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, 0x848E, -/* 0DF0 */ 0x843B, 0x8447, 0x8436, 0x8433, 0x8468, 0x847E, 0x8444, 0x842B, -/* 0DF8 */ 0x8460, 0x8454, 0x846E, 0x8450, 0x870B, 0x8704, 0x86F7, 0x870C, -/* 0E00 */ 0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8, 0x870E, 0x8709, 0x8701, -/* 0E08 */ 0x86F6, 0x870D, 0x8705, 0x88D6, 0x88CB, 0x88CD, 0x88CE, 0x88DE, -/* 0E10 */ 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF, 0x89E5, -/* 0E18 */ 0x89E4, 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, 0x8A86, -/* 0E20 */ 0x8A7F, 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, 0x8A83, -/* 0E28 */ 0x8A81, 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65, 0x8C64, -/* 0E30 */ 0x8C66, 0x8C86, 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69, 0x8D91, -/* 0E38 */ 0x8D8C, 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, 0x8D94, 0x8D90, 0x8D92, -/* 0E40 */ 0x8DF0, 0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0, 0x8DE9, 0x8DE3, -/* 0E48 */ 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, 0x8F06, 0x8EFF, 0x8F01, -/* 0E50 */ 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, 0x9052, 0x903F, -/* 0E58 */ 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, 0x9111, 0x9116, -/* 0E60 */ 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248, 0x9252, 0x9230, -/* 0E68 */ 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283, 0x922E, 0x924A, -/* 0E70 */ 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, 0x926F, 0x9236, -/* 0E78 */ 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924E, -/* 0E80 */ 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, 0x959C, 0x959E, 0x959B, -/* 0E88 */ 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA, 0x96FD, 0x96F8, -/* 0E90 */ 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F, 0x980D, 0x980E, -/* 0E98 */ 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0, 0x99B5, 0x9AAD, -/* 0EA0 */ 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, 0x9EFD, 0x50E6, -/* 0EA8 */ 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, 0x50DD, 0x50E4, -/* 0EB0 */ 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0, 0x51D8, 0x5280, -/* 0EB8 */ 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627, 0x5615, 0x560C, -/* 0EC0 */ 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613, 0x5602, 0x55FA, -/* 0EC8 */ 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C, 0x5890, 0x5898, -/* 0ED0 */ 0x5886, 0x5881, 0x587F, 0x5874, 0x588B, 0x587A, 0x5887, 0x5891, -/* 0ED8 */ 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, 0x5894, 0x588F, 0x58FE, -/* 0EE0 */ 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA, 0x5ADA, 0x5AED, -/* 0EE8 */ 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC, 0x5ADE, 0x5ADD, -/* 0EF0 */ 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0, 0x5BE3, 0x5C63, 0x5D82, -/* 0EF8 */ 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81, 0x5D77, 0x5D8A, 0x5D89, -/* 0F00 */ 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79, 0x5D7F, 0x5E58, 0x5E59, -/* 0F08 */ 0x5E53, 0x5ED8, 0x5ED1, 0x5ED7, 0x5ECE, 0x5EDC, 0x5ED5, 0x5ED9, -/* 0F10 */ 0x5ED2, 0x5ED4, 0x5F44, 0x5F43, 0x5F6F, 0x5FB6, 0x612C, 0x6128, -/* 0F18 */ 0x6141, 0x615E, 0x6171, 0x6173, 0x6152, 0x6153, 0x6172, 0x616C, -/* 0F20 */ 0x6180, 0x6174, 0x6154, 0x617A, 0x615B, 0x6165, 0x613B, 0x616A, -/* 0F28 */ 0x6161, 0x6156, 0x6229, 0x6227, 0x622B, 0x642B, 0x644D, 0x645B, -/* 0F30 */ 0x645D, 0x6474, 0x6476, 0x6472, 0x6473, 0x647D, 0x6475, 0x6466, -/* 0F38 */ 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C, 0x644B, 0x6453, 0x6460, -/* 0F40 */ 0x6450, 0x647F, 0x643F, 0x646C, 0x646B, 0x6459, 0x6465, 0x6477, -/* 0F48 */ 0x6573, 0x65A0, 0x66A1, 0x66A0, 0x669F, 0x6705, 0x6704, 0x6722, -/* 0F50 */ 0x69B1, 0x69B6, 0x69C9, 0x69A0, 0x69CE, 0x6996, 0x69B0, 0x69AC, -/* 0F58 */ 0x69BC, 0x6991, 0x6999, 0x698E, 0x69A7, 0x698D, 0x69A9, 0x69BE, -/* 0F60 */ 0x69AF, 0x69BF, 0x69C4, 0x69BD, 0x69A4, 0x69D4, 0x69B9, 0x69CA, -/* 0F68 */ 0x699A, 0x69CF, 0x69B3, 0x6993, 0x69AA, 0x69A1, 0x699E, 0x69D9, -/* 0F70 */ 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5, 0x69C6, 0x6B4A, 0x6B4D, -/* 0F78 */ 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3, 0x6BC4, 0x6BFE, 0x6ECE, -/* 0F80 */ 0x6EF5, 0x6EF1, 0x6F03, 0x6F25, 0x6EF8, 0x6F37, 0x6EFB, 0x6F2E, -/* 0F88 */ 0x6F09, 0x6F4E, 0x6F19, 0x6F1A, 0x6F27, 0x6F18, 0x6F3B, 0x6F12, -/* 0F90 */ 0x6EED, 0x6F0A, 0x6F36, 0x6F73, 0x6EF9, 0x6EEE, 0x6F2D, 0x6F40, -/* 0F98 */ 0x6F30, 0x6F3C, 0x6F35, 0x6EEB, 0x6F07, 0x6F0E, 0x6F43, 0x6F05, -/* 0FA0 */ 0x6EFD, 0x6EF6, 0x6F39, 0x6F1C, 0x6EFC, 0x6F3A, 0x6F1F, 0x6F0D, -/* 0FA8 */ 0x6F1E, 0x6F08, 0x6F21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, -/* 0FB0 */ 0x7182, 0x718F, 0x717B, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, -/* 0FB8 */ 0x7297, 0x7295, 0x7293, 0x7343, 0x734D, 0x7351, 0x734C, 0x7462, -/* 0FC0 */ 0x7473, 0x7471, 0x7475, 0x7472, 0x7467, 0x746E, 0x7500, 0x7502, -/* 0FC8 */ 0x7503, 0x757D, 0x7590, 0x7616, 0x7608, 0x760C, 0x7615, 0x7611, -/* 0FD0 */ 0x760A, 0x7614, 0x76B8, 0x7781, 0x777C, 0x7785, 0x7782, 0x776E, -/* 0FD8 */ 0x7780, 0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA, 0x78B4, 0x78AD, -/* 0FE0 */ 0x78A8, 0x787E, 0x78AB, 0x789E, 0x78A5, 0x78A0, 0x78AC, 0x78A2, -/* 0FE8 */ 0x78A4, 0x7998, 0x798A, 0x798B, 0x7996, 0x7995, 0x7994, 0x7993, -/* 0FF0 */ 0x7997, 0x7988, 0x7992, 0x7990, 0x7A2B, 0x7A4A, 0x7A30, 0x7A2F, -/* 0FF8 */ 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, 0x7AEE, 0x7B88, 0x7B9C, -/* 1000 */ 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, 0x7B8C, 0x7B9B, 0x7B8E, -/* 1008 */ 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82, 0x7CBB, 0x7CBF, -/* 1010 */ 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1, -/* 1018 */ 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, 0x7DC6, 0x7DCB, 0x7DCC, -/* 1020 */ 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6, 0x7DAE, 0x7DA9, -/* 1028 */ 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, 0x7FDE, 0x8024, -/* 1030 */ 0x805D, 0x805C, 0x8189, 0x8186, 0x8183, 0x8187, 0x818D, 0x818C, -/* 1038 */ 0x818B, 0x8215, 0x8497, 0x84A4, 0x84A1, 0x849F, 0x84BA, 0x84CE, -/* 1040 */ 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, 0x84B4, 0x84C1, 0x84CD, -/* 1048 */ 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7, 0x84BB, 0x84A2, -/* 1050 */ 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, 0x84AF, 0x84A8, 0x84D6, -/* 1058 */ 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4, 0x84D2, 0x84DB, -/* 1060 */ 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876B, 0x8740, -/* 1068 */ 0x872E, 0x871E, 0x8721, 0x8719, 0x871B, 0x8743, 0x872C, 0x8741, -/* 1070 */ 0x873E, 0x8746, 0x8720, 0x8732, 0x872A, 0x872D, 0x873C, 0x8712, -/* 1078 */ 0x873A, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724, -/* 1080 */ 0x871A, 0x8730, 0x8711, 0x88F7, 0x88E7, 0x88F1, 0x88F2, 0x88FA, -/* 1088 */ 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB, 0x88F0, 0x88EC, 0x88EB, -/* 1090 */ 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9, 0x89EB, 0x89E8, 0x8AAB, -/* 1098 */ 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, 0x8C3D, 0x8C68, 0x8C69, -/* 10A0 */ 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, 0x8E02, 0x8DFF, 0x8E0D, -/* 10A8 */ 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06, 0x8E05, 0x8DFE, 0x8E00, -/* 10B0 */ 0x8E04, 0x8F10, 0x8F11, 0x8F0E, 0x8F0D, 0x9123, 0x911C, 0x9120, -/* 10B8 */ 0x9122, 0x911F, 0x911D, 0x911A, 0x9124, 0x9121, 0x911B, 0x917A, -/* 10C0 */ 0x9172, 0x9179, 0x9173, 0x92A5, 0x92A4, 0x9276, 0x929B, 0x927A, -/* 10C8 */ 0x92A0, 0x9294, 0x92AA, 0x928D, 0x92A6, 0x929A, 0x92AB, 0x9279, -/* 10D0 */ 0x9297, 0x927F, 0x92A3, 0x92EE, 0x928E, 0x9282, 0x9295, 0x92A2, -/* 10D8 */ 0x927D, 0x9288, 0x92A1, 0x928A, 0x9286, 0x928C, 0x9299, 0x92A7, -/* 10E0 */ 0x927E, 0x9287, 0x92A9, 0x929D, 0x928B, 0x922D, 0x969E, 0x96A1, -/* 10E8 */ 0x96FF, 0x9758, 0x977D, 0x977A, 0x977E, 0x9783, 0x9780, 0x9782, -/* 10F0 */ 0x977B, 0x9784, 0x9781, 0x977F, 0x97CE, 0x97CD, 0x9816, 0x98AD, -/* 10F8 */ 0x98AE, 0x9902, 0x9900, 0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, -/* 1100 */ 0x99BB, 0x99BA, 0x99C2, 0x99BD, 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, -/* 1108 */ 0x9B3E, 0x9B3F, 0x9B60, 0x9B61, 0x9B5F, 0x9CF1, 0x9CF2, 0x9CF5, -/* 1110 */ 0x9EA7, 0x50FF, 0x5103, 0x5130, 0x50F8, 0x5106, 0x5107, 0x50F6, -/* 1118 */ 0x50FE, 0x510B, 0x510C, 0x50FD, 0x510A, 0x528B, 0x528C, 0x52F1, -/* 1120 */ 0x52EF, 0x5648, 0x5642, 0x564C, 0x5635, 0x5641, 0x564A, 0x5649, -/* 1128 */ 0x5646, 0x5658, 0x565A, 0x5640, 0x5633, 0x563D, 0x562C, 0x563E, -/* 1130 */ 0x5638, 0x562A, 0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0, -/* 1138 */ 0x58A3, 0x58AF, 0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, -/* 1140 */ 0x5AFD, 0x5AF7, 0x5AF6, 0x5B03, 0x5AF8, 0x5B02, 0x5AF9, 0x5B01, -/* 1148 */ 0x5B07, 0x5B05, 0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F, 0x5D92, -/* 1150 */ 0x5DA2, 0x5D93, 0x5D95, 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, 0x5D9E, -/* 1158 */ 0x5E69, 0x5E5D, 0x5E60, 0x5E5C, 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1, -/* 1160 */ 0x5F49, 0x5FB2, 0x618B, 0x6183, 0x6179, 0x61B1, 0x61B0, 0x61A2, -/* 1168 */ 0x6189, 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, 0x6192, 0x61AA, -/* 1170 */ 0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470, 0x6496, -/* 1178 */ 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, 0x648B, 0x648A, 0x648C, -/* 1180 */ 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, 0x657A, 0x6579, -/* 1188 */ 0x657B, 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, 0x66B7, -/* 1190 */ 0x66AA, 0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15, -/* 1198 */ 0x69F1, 0x69E4, 0x6A20, 0x69FF, 0x69EC, 0x69E2, 0x6A1B, 0x6A1D, -/* 11A0 */ 0x69FE, 0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7, 0x69E7, 0x6A40, -/* 11A8 */ 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, 0x69EB, 0x6A09, 0x6A04, -/* 11B0 */ 0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07, 0x69F4, 0x6A16, -/* 11B8 */ 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, 0x6C00, 0x6BFF, -/* 11C0 */ 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92, 0x6F8D, -/* 11C8 */ 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96, 0x6F76, -/* 11D0 */ 0x6F6C, 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57, 0x6F94, -/* 11D8 */ 0x6F93, 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67, 0x6F90, -/* 11E0 */ 0x6F53, 0x6F8B, 0x6F69, 0x6F7F, 0x6F95, 0x6F63, 0x6F77, 0x6F6A, -/* 11E8 */ 0x6F7B, 0x71B2, 0x71AF, 0x719B, 0x71B0, 0x71A0, 0x719A, 0x71A9, -/* 11F0 */ 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4, 0x71A1, 0x71AA, 0x719C, -/* 11F8 */ 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, 0x735E, 0x735F, -/* 1200 */ 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359, 0x7362, 0x7487, -/* 1208 */ 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, 0x7485, 0x7488, 0x747C, -/* 1210 */ 0x7479, 0x7508, 0x7507, 0x757E, 0x7625, 0x761E, 0x7619, 0x761D, -/* 1218 */ 0x761C, 0x7623, 0x761A, 0x7628, 0x761B, 0x769C, 0x769D, 0x769E, -/* 1220 */ 0x769B, 0x778D, 0x778F, 0x7789, 0x7788, 0x78CD, 0x78BB, 0x78CF, -/* 1228 */ 0x78CC, 0x78D1, 0x78CE, 0x78D4, 0x78C8, 0x78C3, 0x78C4, 0x78C9, -/* 1230 */ 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2, 0x799B, 0x6B76, 0x7A39, -/* 1238 */ 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, 0x7BBE, 0x7BAC, 0x7BCE, -/* 1240 */ 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 0x7CC8, 0x7CCC, 0x7CCB, -/* 1248 */ 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, 0x7DE1, 0x7E03, 0x7DFA, -/* 1250 */ 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 0x7DDF, 0x7F76, 0x7FAC, -/* 1258 */ 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 0x7FEC, 0x7FE6, 0x7FE8, -/* 1260 */ 0x8064, 0x8067, 0x81A3, 0x819F, 0x819E, 0x8195, 0x81A2, 0x8199, -/* 1268 */ 0x8197, 0x8216, 0x824F, 0x8253, 0x8252, 0x8250, 0x824E, 0x8251, -/* 1270 */ 0x8524, 0x853B, 0x850F, 0x8500, 0x8529, 0x850E, 0x8509, 0x850D, -/* 1278 */ 0x851F, 0x850A, 0x8527, 0x851C, 0x84FB, 0x852B, 0x84FA, 0x8508, -/* 1280 */ 0x850C, 0x84F4, 0x852A, 0x84F2, 0x8515, 0x84F7, 0x84EB, 0x84F3, -/* 1288 */ 0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, 0x84FE, 0x8528, 0x851D, -/* 1290 */ 0x852E, 0x8502, 0x84FD, 0x851E, 0x84F6, 0x8531, 0x8526, 0x84E7, -/* 1298 */ 0x84E8, 0x84F0, 0x84EF, 0x84F9, 0x8518, 0x8520, 0x8530, 0x850B, -/* 12A0 */ 0x8519, 0x852F, 0x8662, 0x8756, 0x8763, 0x8764, 0x8777, 0x87E1, -/* 12A8 */ 0x8773, 0x8758, 0x8754, 0x875B, 0x8752, 0x8761, 0x875A, 0x8751, -/* 12B0 */ 0x875E, 0x876D, 0x876A, 0x8750, 0x874E, 0x875F, 0x875D, 0x876F, -/* 12B8 */ 0x876C, 0x877A, 0x876E, 0x875C, 0x8765, 0x874F, 0x877B, 0x8775, -/* 12C0 */ 0x8762, 0x8767, 0x8769, 0x885A, 0x8905, 0x890C, 0x8914, 0x890B, -/* 12C8 */ 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, 0x8911, 0x890E, 0x8909, -/* 12D0 */ 0x89A2, 0x89A4, 0x89A3, 0x89ED, 0x89F0, 0x89EC, 0x8ACF, 0x8AC6, -/* 12D8 */ 0x8AB8, 0x8AD3, 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7, 0x8ABE, -/* 12E0 */ 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, 0x8AD9, 0x8C3E, -/* 12E8 */ 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA, 0x8CDD, -/* 12F0 */ 0x8CE7, 0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23, 0x8E25, -/* 12F8 */ 0x8E24, 0x8E2E, 0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19, 0x8E26, -/* 1300 */ 0x8E27, 0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C, 0x8E17, 0x8E1A, -/* 1308 */ 0x8F2C, 0x8F24, 0x8F18, 0x8F1A, 0x8F20, 0x8F23, 0x8F16, 0x8F17, -/* 1310 */ 0x9073, 0x9070, 0x906F, 0x9067, 0x906B, 0x912F, 0x912B, 0x9129, -/* 1318 */ 0x912A, 0x9132, 0x9126, 0x912E, 0x9185, 0x9186, 0x918A, 0x9181, -/* 1320 */ 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0, 0x92D9, -/* 1328 */ 0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7, 0x92DD, -/* 1330 */ 0x92CC, 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE, 0x92E6, -/* 1338 */ 0x92CD, 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1, 0x92D3, -/* 1340 */ 0x92B5, 0x92E1, 0x9325, 0x92C6, 0x92B4, 0x957C, 0x95AC, 0x95AB, -/* 1348 */ 0x95AE, 0x95B0, 0x96A4, 0x96A2, 0x96D3, 0x9705, 0x9708, 0x9702, -/* 1350 */ 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0, 0x97CF, 0x981E, 0x981D, -/* 1358 */ 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, 0x98B2, 0x9908, -/* 1360 */ 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC, 0x99CD, -/* 1368 */ 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8, 0x99CB, -/* 1370 */ 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, 0x9AF1, -/* 1378 */ 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, 0x9B75, -/* 1380 */ 0x9B70, 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, 0x9CFF, -/* 1388 */ 0x9CF7, 0x9D07, 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, 0x9D04, -/* 1390 */ 0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, 0x5117, 0x511A, -/* 1398 */ 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, 0x566E, 0x5673, -/* 13A0 */ 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, 0x571C, 0x571B, -/* 13A8 */ 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, 0x58BC, 0x58C6, -/* 13B0 */ 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10, 0x5B16, -/* 13B8 */ 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1, 0x5DA9, -/* 13C0 */ 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2, 0x5DAD, -/* 13C8 */ 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9, 0x5EE7, -/* 13D0 */ 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x5FBB, 0x619D, 0x61A8, -/* 13D8 */ 0x6196, 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA, 0x61BF, -/* 13E0 */ 0x61B8, 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF, 0x64C9, 0x64BD, -/* 13E8 */ 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533, 0x657F, 0x657C, -/* 13F0 */ 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, 0x66CF, 0x66BD, -/* 13F8 */ 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, 0x6A49, 0x6A67, -/* 1400 */ 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, 0x6A5B, 0x6A51, -/* 1408 */ 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 0x6A64, 0x6A50, -/* 1410 */ 0x6A4F, 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E, 0x6A56, -/* 1418 */ 0x6A55, 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 0x6B56, 0x6BA7, -/* 1420 */ 0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03, 0x6C06, 0x6FAD, -/* 1428 */ 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8, 0x6F5E, 0x6FC4, -/* 1430 */ 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, 0x6FA5, 0x6FAE, 0x6FBA, -/* 1438 */ 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8, 0x6FA2, 0x6FC9, 0x6FAB, -/* 1440 */ 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2, 0x71BF, 0x71B8, -/* 1448 */ 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7, 0x71CF, -/* 1450 */ 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, 0x71DB, 0x729D, 0x729E, -/* 1458 */ 0x7369, 0x7366, 0x7367, 0x736C, 0x7365, 0x736B, 0x736A, 0x747F, -/* 1460 */ 0x749A, 0x74A0, 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B, 0x7580, -/* 1468 */ 0x762F, 0x762D, 0x7631, 0x763D, 0x7633, 0x763C, 0x7635, 0x7632, -/* 1470 */ 0x7630, 0x76BB, 0x76E6, 0x779A, 0x779D, 0x77A1, 0x779C, 0x779B, -/* 1478 */ 0x77A2, 0x77A3, 0x7795, 0x7799, 0x7797, 0x78DD, 0x78E9, 0x78E5, -/* 1480 */ 0x78EA, 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2, 0x78ED, 0x78DF, -/* 1488 */ 0x78E0, 0x79A4, 0x7A44, 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, 0x7AB5, -/* 1490 */ 0x7AB1, 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5, -/* 1498 */ 0x7BDA, 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB, -/* 14A0 */ 0x7BD8, 0x7BDF, 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, -/* 14A8 */ 0x7E21, 0x7E17, 0x7E0C, 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, -/* 14B0 */ 0x7E15, 0x7E1A, 0x7E22, 0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, 0x7E14, -/* 14B8 */ 0x7E25, 0x7E24, 0x7F43, 0x7F7B, 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF, -/* 14C0 */ 0x802A, 0x8029, 0x806C, 0x81B1, 0x81A6, 0x81AE, 0x81B9, 0x81B5, -/* 14C8 */ 0x81AB, 0x81B0, 0x81AC, 0x81B4, 0x81B2, 0x81B7, 0x81A7, 0x81F2, -/* 14D0 */ 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856B, 0x854D, 0x8553, -/* 14D8 */ 0x8561, 0x8558, 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, -/* 14E0 */ 0x8551, 0x8547, 0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, -/* 14E8 */ 0x8575, 0x8555, 0x8567, 0x8560, 0x858C, 0x8566, 0x855D, 0x8554, -/* 14F0 */ 0x8565, 0x856C, 0x8663, 0x8665, 0x8664, 0x87A4, 0x879B, 0x878F, -/* 14F8 */ 0x8797, 0x8793, 0x8792, 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, -/* 1500 */ 0x8787, 0x87A3, 0x8785, 0x8790, 0x8791, 0x879D, 0x8784, 0x8794, -/* 1508 */ 0x879C, 0x879A, 0x8789, 0x891E, 0x8926, 0x8930, 0x892D, 0x892E, -/* 1510 */ 0x8927, 0x8931, 0x8922, 0x8929, 0x8923, 0x892F, 0x892C, 0x891F, -/* 1518 */ 0x89F1, 0x8AE0, 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, 0x8B14, -/* 1520 */ 0x8AE4, 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF, -/* 1528 */ 0x8AEF, 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, -/* 1530 */ 0x8CF0, 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, -/* 1538 */ 0x8E38, 0x8E40, 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, -/* 1540 */ 0x8E3F, 0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, -/* 1548 */ 0x8F34, 0x9076, 0x9079, 0x907B, 0x9086, 0x90FA, 0x9133, 0x9135, -/* 1550 */ 0x9136, 0x9193, 0x9190, 0x9191, 0x918D, 0x918F, 0x9327, 0x931E, -/* 1558 */ 0x9308, 0x931F, 0x9306, 0x930F, 0x937A, 0x9338, 0x933C, 0x931B, -/* 1560 */ 0x9323, 0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D, 0x92CB, -/* 1568 */ 0x931D, 0x92FA, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324, -/* 1570 */ 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C, 0x930B, -/* 1578 */ 0x92FE, 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD, 0x95BE, -/* 1580 */ 0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9, 0x96D4, -/* 1588 */ 0x970B, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97F0, 0x97F8, -/* 1590 */ 0x9835, 0x982F, 0x9832, 0x9924, 0x991F, 0x9927, 0x9929, 0x999E, -/* 1598 */ 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0, 0x99E3, 0x99EA, 0x99E9, -/* 15A0 */ 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, 0x9AFA, 0x9AF9, -/* 15A8 */ 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E, 0x9B7B, -/* 15B0 */ 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95, 0x9B7D, 0x9B88, -/* 15B8 */ 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14, 0x9D29, 0x9D1D, 0x9D18, -/* 15C0 */ 0x9D22, 0x9D10, 0x9D19, 0x9D1F, 0x9E88, 0x9E86, 0x9E87, 0x9EAE, -/* 15C8 */ 0x9EAD, 0x9ED5, 0x9ED6, 0x9EFA, 0x9F12, 0x9F3D, 0x5126, 0x5125, -/* 15D0 */ 0x5122, 0x5124, 0x5120, 0x5129, 0x52F4, 0x5693, 0x568C, 0x568D, -/* 15D8 */ 0x5686, 0x5684, 0x5683, 0x567E, 0x5682, 0x567F, 0x5681, 0x58D6, -/* 15E0 */ 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25, 0x5B32, 0x5B23, 0x5B2C, -/* 15E8 */ 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B, 0x5BF1, 0x5BF2, 0x5DB7, -/* 15F0 */ 0x5E6C, 0x5E6A, 0x5FBE, 0x61C3, 0x61B5, 0x61BC, 0x61E7, 0x61E0, -/* 15F8 */ 0x61E5, 0x61E4, 0x61E8, 0x61DE, 0x64EF, 0x64E9, 0x64E3, 0x64EB, -/* 1600 */ 0x64E4, 0x64E8, 0x6581, 0x6580, 0x65B6, 0x65DA, 0x66D2, 0x6A8D, -/* 1608 */ 0x6A96, 0x6A81, 0x6AA5, 0x6A89, 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, -/* 1610 */ 0x6A87, 0x6A93, 0x6A8E, 0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, -/* 1618 */ 0x6A7F, 0x6AA6, 0x6A9A, 0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, -/* 1620 */ 0x6C09, 0x6FCC, 0x6FA9, 0x6FF4, 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, -/* 1628 */ 0x6FE7, 0x6FE6, 0x6FDE, 0x6FF2, 0x6FDD, 0x6FE2, 0x6FE8, 0x71E1, -/* 1630 */ 0x71F1, 0x71E8, 0x71F2, 0x71E4, 0x71F0, 0x71E2, 0x7373, 0x736E, -/* 1638 */ 0x736F, 0x7497, 0x74B2, 0x74AB, 0x7490, 0x74AA, 0x74AD, 0x74B1, -/* 1640 */ 0x74A5, 0x74AF, 0x7510, 0x7511, 0x7512, 0x750F, 0x7584, 0x7643, -/* 1648 */ 0x7648, 0x7649, 0x7647, 0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, -/* 1650 */ 0x77B7, 0x77B6, 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, 0x78FD, -/* 1658 */ 0x7902, 0x78FB, 0x78FC, 0x78FF, 0x78F2, 0x7905, 0x78F9, 0x78FE, -/* 1660 */ 0x7904, 0x79AB, 0x79A8, 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, -/* 1668 */ 0x7A5A, 0x7ABE, 0x7AC0, 0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, -/* 1670 */ 0x7BFF, 0x7BFB, 0x7C0E, 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09, -/* 1678 */ 0x7C03, 0x7C01, 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10, -/* 1680 */ 0x7C0A, 0x7CE8, 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, 0x7E38, -/* 1688 */ 0x7E2A, 0x7E49, 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, -/* 1690 */ 0x7E36, 0x7E44, 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, -/* 1698 */ 0x7FF2, 0x802C, 0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, -/* 16A0 */ 0x81BC, 0x81E9, 0x825B, 0x825A, 0x825C, 0x8583, 0x8580, 0x858F, -/* 16A8 */ 0x85A7, 0x8595, 0x85A0, 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, -/* 16B0 */ 0x859E, 0x8577, 0x857C, 0x8589, 0x85A1, 0x857A, 0x8578, 0x8557, -/* 16B8 */ 0x858E, 0x8596, 0x8586, 0x858D, 0x8599, 0x859D, 0x8581, 0x85A2, -/* 16C0 */ 0x8582, 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859F, -/* 16C8 */ 0x8668, 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, 0x87B9, -/* 16D0 */ 0x87B5, 0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, -/* 16D8 */ 0x87AF, 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, -/* 16E0 */ 0x87DE, 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, 0x8952, -/* 16E8 */ 0x8937, 0x8942, 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E, -/* 16F0 */ 0x8B18, 0x8B16, 0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 0x8B12, -/* 16F8 */ 0x8B15, 0x8B07, 0x8B0D, 0x8B08, 0x8B06, 0x8B1C, 0x8B13, 0x8B1A, -/* 1700 */ 0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94, 0x8CF9, -/* 1708 */ 0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47, 0x8F43, -/* 1710 */ 0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B, 0x9199, -/* 1718 */ 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, 0x9364, -/* 1720 */ 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 0x9350, -/* 1728 */ 0x9351, 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 0x9357, -/* 1730 */ 0x9355, 0x9352, 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, 0x935E, -/* 1738 */ 0x9363, 0x9367, 0x934E, 0x9359, 0x95C7, 0x95C0, 0x95C9, 0x95C3, -/* 1740 */ 0x95C5, 0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720, 0x971F, 0x9718, -/* 1748 */ 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C, 0x979E, 0x979D, 0x97D5, -/* 1750 */ 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A, 0x9849, 0x9845, 0x9843, -/* 1758 */ 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, 0x9932, 0x992F, 0x992D, -/* 1760 */ 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, 0x99FA, 0x99F4, -/* 1768 */ 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB, 0x99FD, 0x99FE, 0x99FC, -/* 1770 */ 0x9A03, 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 0x9AFC, 0x9B48, 0x9B9A, -/* 1778 */ 0x9BA8, 0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, 0x9BA4, 0x9B86, -/* 1780 */ 0x9BA2, 0x9BA0, 0x9BAF, 0x9D33, 0x9D41, 0x9D67, 0x9D36, 0x9D2E, -/* 1788 */ 0x9D2F, 0x9D31, 0x9D38, 0x9D30, 0x9D45, 0x9D42, 0x9D43, 0x9D3E, -/* 1790 */ 0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D, 0x9E8A, 0x9E89, 0x9E8D, -/* 1798 */ 0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24, 0x9F23, 0x9F22, -/* 17A0 */ 0x9F54, 0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, 0x569C, 0x5697, -/* 17A8 */ 0x569A, 0x569D, 0x5699, 0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0, -/* 17B0 */ 0x5E6D, 0x5E6E, 0x61D8, 0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA, -/* 17B8 */ 0x61F0, 0x61EB, 0x61D6, 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, -/* 17C0 */ 0x6501, 0x6503, 0x64FC, 0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8, -/* 17C8 */ 0x6AC5, 0x6AB9, 0x6ABD, 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, 0x6AB7, -/* 17D0 */ 0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E, 0x6BC9, 0x6C0B, 0x7007, 0x700C, -/* 17D8 */ 0x700D, 0x7001, 0x7005, 0x7014, 0x700E, 0x6FFF, 0x7000, 0x6FFB, -/* 17E0 */ 0x7026, 0x6FFC, 0x6FF7, 0x700A, 0x7201, 0x71FF, 0x71F9, 0x7203, -/* 17E8 */ 0x71FD, 0x7376, 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, 0x74B6, -/* 17F0 */ 0x74BB, 0x74C2, 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650, -/* 17F8 */ 0x7653, 0x7657, 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA, -/* 1800 */ 0x790C, 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79AD, -/* 1808 */ 0x79AC, 0x7A5F, 0x7C1C, 0x7C29, 0x7C19, 0x7C20, 0x7C1F, 0x7C2D, -/* 1810 */ 0x7C1D, 0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30, 0x7E5C, 0x7E50, -/* 1818 */ 0x7E56, 0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51, 0x7E60, 0x7E57, -/* 1820 */ 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, 0x8075, 0x81D1, 0x81D2, -/* 1828 */ 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0, 0x85C3, 0x85C2, -/* 1830 */ 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, 0x85CB, 0x85CE, -/* 1838 */ 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624, 0x85B8, 0x85B7, -/* 1840 */ 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB, 0x87EB, 0x87EA, -/* 1848 */ 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, 0x87D3, 0x87ED, -/* 1850 */ 0x87D8, 0x87E3, 0x87D7, 0x87D9, 0x8801, 0x87F4, 0x87E8, 0x87DD, -/* 1858 */ 0x8953, 0x894B, 0x894F, 0x894C, 0x8946, 0x8950, 0x8951, 0x8949, -/* 1860 */ 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30, 0x8B35, 0x8B47, 0x8B2F, -/* 1868 */ 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, 0x8B26, 0x8B36, 0x8B2E, -/* 1870 */ 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, 0x8C75, 0x8C99, 0x8C98, -/* 1878 */ 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00, 0x8E5C, 0x8E62, 0x8E60, -/* 1880 */ 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67, 0x8E5B, 0x8E5A, 0x8E61, -/* 1888 */ 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47, 0x8F48, 0x8F4B, 0x9128, -/* 1890 */ 0x913A, 0x913B, 0x913E, 0x91A8, 0x91A5, 0x91A7, 0x91AF, 0x91AA, -/* 1898 */ 0x93B5, 0x938C, 0x9392, 0x93B7, 0x939B, 0x939D, 0x9389, 0x93A7, -/* 18A0 */ 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395, 0x9388, 0x9399, 0x939F, -/* 18A8 */ 0x9380, 0x938D, 0x93B1, 0x9391, 0x93B2, 0x93A4, 0x93A8, 0x93B4, -/* 18B0 */ 0x93A3, 0x95D2, 0x95D3, 0x95D1, 0x96B3, 0x96D7, 0x96DA, 0x5DC2, -/* 18B8 */ 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722, 0x9725, 0x97AC, 0x97AE, -/* 18C0 */ 0x97A8, 0x97AB, 0x97A4, 0x97AA, 0x97A2, 0x97A5, 0x97D7, 0x97D9, -/* 18C8 */ 0x97D6, 0x97D8, 0x97FA, 0x9850, 0x9851, 0x9852, 0x98B8, 0x9941, -/* 18D0 */ 0x993C, 0x993A, 0x9A0F, 0x9A0B, 0x9A09, 0x9A0D, 0x9A04, 0x9A11, -/* 18D8 */ 0x9A0A, 0x9A05, 0x9A07, 0x9A06, 0x9AC0, 0x9ADC, 0x9B08, 0x9B04, -/* 18E0 */ 0x9B05, 0x9B29, 0x9B35, 0x9B4A, 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, -/* 18E8 */ 0x9BC3, 0x9BBF, 0x9BC1, 0x9BB5, 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, -/* 18F0 */ 0x9BB9, 0x9BBD, 0x9D5C, 0x9D53, 0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, -/* 18F8 */ 0x9D59, 0x9D56, 0x9D4C, 0x9D57, 0x9D52, 0x9D54, 0x9D5F, 0x9D58, -/* 1900 */ 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF, 0x9F01, 0x9F00, 0x9F16, 0x9F25, -/* 1908 */ 0x9F2B, 0x9F2A, 0x9F29, 0x9F28, 0x9F4C, 0x9F55, 0x5134, 0x5135, -/* 1910 */ 0x5296, 0x52F7, 0x53B4, 0x56AB, 0x56AD, 0x56A6, 0x56A7, 0x56AA, -/* 1918 */ 0x56AC, 0x58DA, 0x58DD, 0x58DB, 0x5912, 0x5B3D, 0x5B3E, 0x5B3F, -/* 1920 */ 0x5DC3, 0x5E70, 0x5FBF, 0x61FB, 0x6507, 0x6510, 0x650D, 0x6509, -/* 1928 */ 0x650C, 0x650E, 0x6584, 0x65DE, 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, -/* 1930 */ 0x6ACC, 0x6AD1, 0x6AD9, 0x6ACB, 0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, -/* 1938 */ 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60, 0x6BB0, 0x6C0C, 0x7019, 0x7027, -/* 1940 */ 0x7020, 0x7016, 0x702B, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, -/* 1948 */ 0x7024, 0x701C, 0x720C, 0x720A, 0x7207, 0x7202, 0x7205, 0x72A5, -/* 1950 */ 0x72A6, 0x72A4, 0x72A3, 0x72A1, 0x74CB, 0x74C5, 0x74B7, 0x74C3, -/* 1958 */ 0x7516, 0x7660, 0x77C9, 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B, -/* 1960 */ 0x7921, 0x791C, 0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68, 0x7C33, -/* 1968 */ 0x7C3C, 0x7C39, 0x7C2C, 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76, 0x7E75, -/* 1970 */ 0x7E78, 0x7E70, 0x7E77, 0x7E6F, 0x7E7A, 0x7E72, 0x7E74, 0x7E68, -/* 1978 */ 0x7F4B, 0x7F4A, 0x7F83, 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE, 0x8078, -/* 1980 */ 0x81D7, 0x81D5, 0x820B, 0x8264, 0x8261, 0x8263, 0x85EB, 0x85F1, -/* 1988 */ 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA, 0x85D7, 0x85EC, 0x85F2, -/* 1990 */ 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, 0x85D1, 0x85F0, 0x85E6, -/* 1998 */ 0x85EF, 0x85DE, 0x85E2, 0x8800, 0x87FA, 0x8803, 0x87F6, 0x87F7, -/* 19A0 */ 0x8809, 0x880C, 0x880B, 0x8806, 0x87FC, 0x8808, 0x87FF, 0x880A, -/* 19A8 */ 0x8802, 0x8962, 0x895A, 0x895B, 0x8957, 0x8961, 0x895C, 0x8958, -/* 19B0 */ 0x895D, 0x8959, 0x8988, 0x89B7, 0x89B6, 0x89F6, 0x8B50, 0x8B48, -/* 19B8 */ 0x8B4A, 0x8B40, 0x8B53, 0x8B56, 0x8B54, 0x8B4B, 0x8B55, 0x8B51, -/* 19C0 */ 0x8B42, 0x8B52, 0x8B57, 0x8C43, 0x8C77, 0x8C76, 0x8C9A, 0x8D06, -/* 19C8 */ 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, 0x8DAD, 0x8DAB, 0x8E6D, 0x8E78, -/* 19D0 */ 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2, 0x8F52, 0x8F51, 0x8F4F, -/* 19D8 */ 0x8F50, 0x8F53, 0x8FB4, 0x9140, 0x913F, 0x91B0, 0x91AD, 0x93DE, -/* 19E0 */ 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0, 0x93F9, 0x93EC, 0x93CC, -/* 19E8 */ 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4, 0x93EE, 0x93E3, 0x93D5, -/* 19F0 */ 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93A5, 0x93E7, 0x957D, 0x95DA, -/* 19F8 */ 0x95DB, 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728, 0x9726, 0x97B3, -/* 1A00 */ 0x97B7, 0x97B6, 0x97DD, 0x97DE, 0x97DF, 0x985C, 0x9859, 0x985D, -/* 1A08 */ 0x9857, 0x98BF, 0x98BD, 0x98BB, 0x98BE, 0x9948, 0x9947, 0x9943, -/* 1A10 */ 0x99A6, 0x99A7, 0x9A1A, 0x9A15, 0x9A25, 0x9A1D, 0x9A24, 0x9A1B, -/* 1A18 */ 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, 0x9A1C, 0x9A14, 0x9AC2, -/* 1A20 */ 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA, 0x9BEB, 0x9BE0, -/* 1A28 */ 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4, 0x9BD7, 0x9BEC, -/* 1A30 */ 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA, 0x9D77, 0x9D81, -/* 1A38 */ 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78, 0x9D86, 0x9D8B, -/* 1A40 */ 0x9D8C, 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70, 0x9D69, 0x9D85, -/* 1A48 */ 0x9D73, 0x9D7B, 0x9D82, 0x9D6F, 0x9D79, 0x9D7F, 0x9D87, 0x9D68, -/* 1A50 */ 0x9E94, 0x9E91, 0x9EC0, 0x9EFC, 0x9F2D, 0x9F40, 0x9F41, 0x9F4D, -/* 1A58 */ 0x9F56, 0x9F57, 0x9F58, 0x5337, 0x56B2, 0x56B5, 0x56B3, 0x58E3, -/* 1A60 */ 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF, 0x5FC0, 0x5FC1, 0x61F9, -/* 1A68 */ 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF, 0x66E8, 0x66E3, 0x66E4, -/* 1A70 */ 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, 0x6AF1, 0x6AEE, 0x6AEF, -/* 1A78 */ 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, 0x7031, 0x7042, 0x7038, -/* 1A80 */ 0x703F, 0x703A, 0x7039, 0x702A, 0x7040, 0x703B, 0x7033, 0x7041, -/* 1A88 */ 0x7213, 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA, 0x76AB, 0x76AA, -/* 1A90 */ 0x76BE, 0x76ED, 0x77CC, 0x77CE, 0x77CF, 0x77CD, 0x77F2, 0x7925, -/* 1A98 */ 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79B2, 0x7A6E, 0x7A6C, -/* 1AA0 */ 0x7A6D, 0x7AF7, 0x7C49, 0x7C48, 0x7C4A, 0x7C47, 0x7C45, 0x7CEE, -/* 1AA8 */ 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, 0x7FBA, 0x7FFF, 0x8079, 0x81DB, -/* 1AB0 */ 0x81D9, 0x8268, 0x8269, 0x8622, 0x85FF, 0x8601, 0x85FE, 0x861B, -/* 1AB8 */ 0x8600, 0x85F6, 0x8604, 0x8609, 0x8605, 0x860C, 0x85FD, 0x8819, -/* 1AC0 */ 0x8810, 0x8811, 0x8817, 0x8813, 0x8816, 0x8963, 0x8966, 0x89B9, -/* 1AC8 */ 0x89F7, 0x8B60, 0x8B6A, 0x8B5D, 0x8B68, 0x8B63, 0x8B65, 0x8B67, -/* 1AD0 */ 0x8B6D, 0x8DAE, 0x8E86, 0x8E88, 0x8E84, 0x8F59, 0x8F56, 0x8F57, -/* 1AD8 */ 0x8F55, 0x8F58, 0x8F5A, 0x908D, 0x9143, 0x9141, 0x91B7, 0x91B5, -/* 1AE0 */ 0x91B2, 0x91B3, 0x940B, 0x9413, 0x93FB, 0x9420, 0x940F, 0x9414, -/* 1AE8 */ 0x93FE, 0x9415, 0x9410, 0x9428, 0x9419, 0x940D, 0x93F5, 0x9400, -/* 1AF0 */ 0x93F7, 0x9407, 0x940E, 0x9416, 0x9412, 0x93FA, 0x9409, 0x93F8, -/* 1AF8 */ 0x943C, 0x940A, 0x93FF, 0x93FC, 0x940C, 0x93F6, 0x9411, 0x9406, -/* 1B00 */ 0x95DE, 0x95E0, 0x95DF, 0x972E, 0x972F, 0x97B9, 0x97BB, 0x97FD, -/* 1B08 */ 0x97FE, 0x9860, 0x9862, 0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950, -/* 1B10 */ 0x994E, 0x9959, 0x994C, 0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, -/* 1B18 */ 0x9A2C, 0x9A2A, 0x9A36, 0x9A29, 0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, -/* 1B20 */ 0x9ACA, 0x9AC6, 0x9B10, 0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7, -/* 1B28 */ 0x9C05, 0x9C12, 0x9BF8, 0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, -/* 1B30 */ 0x9C14, 0x9C09, 0x9D9F, 0x9D99, 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, -/* 1B38 */ 0x9D90, 0x9D9B, 0x9DA0, 0x9D94, 0x9D9C, 0x9DAA, 0x9D97, 0x9DA1, -/* 1B40 */ 0x9D9A, 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, 0x9DA9, 0x9D96, -/* 1B48 */ 0x9DA6, 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, 0x9EE7, -/* 1B50 */ 0x9EE6, 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59, -/* 1B58 */ 0x9F91, 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE, -/* 1B60 */ 0x5B48, 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, -/* 1B68 */ 0x6AFC, 0x6B03, 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, -/* 1B70 */ 0x7049, 0x7045, 0x7046, 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, -/* 1B78 */ 0x766A, 0x77D0, 0x792D, 0x7931, 0x792F, 0x7C54, 0x7C53, 0x7CF2, -/* 1B80 */ 0x7E8A, 0x7E87, 0x7E88, 0x7E8B, 0x7E86, 0x7E8D, 0x7F4D, 0x7FBB, -/* 1B88 */ 0x8030, 0x81DD, 0x8618, 0x862A, 0x8626, 0x861F, 0x8623, 0x861C, -/* 1B90 */ 0x8619, 0x8627, 0x862E, 0x8621, 0x8620, 0x8629, 0x861E, 0x8625, -/* 1B98 */ 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A, -/* 1BA0 */ 0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45, -/* 1BA8 */ 0x8B7A, 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E, -/* 1BB0 */ 0x8F5B, 0x8F5D, 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B, -/* 1BB8 */ 0x9436, 0x9429, 0x943D, 0x9430, 0x9439, 0x942A, 0x9437, 0x942C, -/* 1BC0 */ 0x9440, 0x9431, 0x95E5, 0x95E4, 0x95E3, 0x9735, 0x973A, 0x97BF, -/* 1BC8 */ 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0, 0x9958, 0x9956, 0x9A39, -/* 1BD0 */ 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A, 0x9A3F, 0x9ACD, -/* 1BD8 */ 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 0x9B52, 0x9C2B, 0x9C1D, -/* 1BE0 */ 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, 0x9C24, 0x9C21, 0x9DB7, -/* 1BE8 */ 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, 0x9DCF, 0x9DBE, 0x9DC5, -/* 1BF0 */ 0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, 0x9DBA, 0x9DAC, 0x9DC8, -/* 1BF8 */ 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD, 0x9DB2, 0x9E7A, 0x9E9C, -/* 1C00 */ 0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18, 0x9F1A, 0x9F31, 0x9F4E, -/* 1C08 */ 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6, 0x56C5, 0x56CB, 0x5971, -/* 1C10 */ 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, 0x6521, 0x6520, 0x6526, -/* 1C18 */ 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 0x7055, 0x7056, 0x7057, -/* 1C20 */ 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, 0x74D8, 0x74D5, 0x74D9, -/* 1C28 */ 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, 0x7A70, 0x7A71, 0x7C57, -/* 1C30 */ 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0x7CF4, 0x7CF1, 0x7E91, 0x7F4F, -/* 1C38 */ 0x7F87, 0x81DE, 0x826B, 0x8634, 0x8635, 0x8633, 0x862C, 0x8632, -/* 1C40 */ 0x8636, 0x882C, 0x8828, 0x8826, 0x882A, 0x8825, 0x8971, 0x89BF, -/* 1C48 */ 0x89BE, 0x89FB, 0x8B7E, 0x8B84, 0x8B82, 0x8B86, 0x8B85, 0x8B7F, -/* 1C50 */ 0x8D15, 0x8E95, 0x8E94, 0x8E9A, 0x8E92, 0x8E90, 0x8E96, 0x8E97, -/* 1C58 */ 0x8F60, 0x8F62, 0x9147, 0x944C, 0x9450, 0x944A, 0x944B, 0x944F, -/* 1C60 */ 0x9447, 0x9445, 0x9448, 0x9449, 0x9446, 0x973F, 0x97E3, 0x986A, -/* 1C68 */ 0x9869, 0x98CB, 0x9954, 0x995B, 0x9A4E, 0x9A53, 0x9A54, 0x9A4C, -/* 1C70 */ 0x9A4F, 0x9A48, 0x9A4A, 0x9A49, 0x9A52, 0x9A50, 0x9AD0, 0x9B19, -/* 1C78 */ 0x9B2B, 0x9B3B, 0x9B56, 0x9B55, 0x9C46, 0x9C48, 0x9C3F, 0x9C44, -/* 1C80 */ 0x9C39, 0x9C33, 0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32, 0x9C3D, -/* 1C88 */ 0x9C36, 0x9DDB, 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, 0x9DDC, -/* 1C90 */ 0x9DD1, 0x9DDF, 0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, 0x9DD5, -/* 1C98 */ 0x9DDD, 0x9EB6, 0x9EF0, 0x9F35, 0x9F33, 0x9F32, 0x9F42, 0x9F6B, -/* 1CA0 */ 0x9F95, 0x9FA2, 0x513D, 0x5299, 0x58E8, 0x58E7, 0x5972, 0x5B4D, -/* 1CA8 */ 0x5DD8, 0x882F, 0x5F4F, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, -/* 1CB0 */ 0x6596, 0x66EB, 0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B, 0x705A, -/* 1CB8 */ 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, 0x77D4, 0x7C67, 0x7C66, -/* 1CC0 */ 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, 0x863C, 0x8631, 0x863B, -/* 1CC8 */ 0x863E, 0x8830, 0x8832, 0x882E, 0x8833, 0x8976, 0x8974, 0x8973, -/* 1CD0 */ 0x89FE, 0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19, 0x8E98, -/* 1CD8 */ 0x8F64, 0x8F63, 0x91BC, 0x9462, 0x9455, 0x945D, 0x9457, 0x945E, -/* 1CE0 */ 0x97C4, 0x97C5, 0x9800, 0x9A56, 0x9A59, 0x9B1E, 0x9B1F, 0x9B20, -/* 1CE8 */ 0x9C52, 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, 0x9C4B, 0x9C55, 0x9C59, -/* 1CF0 */ 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3, 0x9DEB, 0x9DF8, -/* 1CF8 */ 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0, 0x9DE2, -/* 1D00 */ 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0, 0x9EF2, -/* 1D08 */ 0x9EF3, 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, 0x9F4F, -/* 1D10 */ 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, 0x5B4E, 0x5C6D, -/* 1D18 */ 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, 0x7061, 0x705D, 0x7060, -/* 1D20 */ 0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, 0x79B7, 0x79B6, 0x7C6A, -/* 1D28 */ 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838, 0x8837, 0x8835, 0x884B, -/* 1D30 */ 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D, 0x91BE, 0x91BD, -/* 1D38 */ 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, 0x9743, 0x9747, -/* 1D40 */ 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, 0x9C67, 0x9C66, -/* 1D48 */ 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, 0x9E03, 0x9E06, -/* 1D50 */ 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, 0x9E04, 0x9EA0, -/* 1D58 */ 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, 0x652E, 0x65B8, -/* 1D60 */ 0x6B18, 0x6B19, 0x6B17, 0x6B1A, 0x7062, 0x7226, 0x72AA, 0x77D8, -/* 1D68 */ 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6, 0x7E9A, 0x7E98, 0x7E9B, -/* 1D70 */ 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648, 0x8979, 0x897A, -/* 1D78 */ 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5, 0x8EA4, 0x8EA3, -/* 1D80 */ 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749, 0x9872, 0x995F, -/* 1D88 */ 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10, 0x9E0F, 0x9E12, -/* 1D90 */ 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78, 0x9F7B, 0x9F7A, -/* 1D98 */ 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2, 0x8EA6, 0x91C3, -/* 1DA0 */ 0x9474, 0x9478, 0x9476, 0x9475, 0x9A60, 0x9B2E, 0x9C74, 0x9C73, -/* 1DA8 */ 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, 0x9FA4, 0x7068, -/* 1DB0 */ 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D, 0x883F, 0x8B9E, 0x8C9C, -/* 1DB8 */ 0x8EA9, 0x8EC9, 0x974B, 0x9873, 0x9874, 0x98CC, 0x9961, 0x99AB, -/* 1DC0 */ 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, 0x9E17, 0x9F48, 0x6207, -/* 1DC8 */ 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 0x9480, 0x9481, 0x9A69, -/* 1DD0 */ 0x9A68, 0x9E19, 0x864B, 0x8B9F, 0x9483, 0x9C79, 0x9EB7, 0x7675, -/* 1DD8 */ 0x9A6B, 0x9C7A, 0x9E1D, 0x7069, 0x706A, 0x7229, 0x9EA4, 0x9F7E, -/* 1DE0 */ 0x9F49, 0x9F98, -/* End of table Total Length = 0x1EF1 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp037.ut b/mozilla/lib/libi18n/unicode/utotbl/cp037.ut deleted file mode 100644 index 826b5455ef2..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp037.ut +++ /dev/null @@ -1,185 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 001F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0020 - srcEnd = 003F - destBegin = F840 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0081 - srcEnd = 0089 - destBegin = 0061 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 0091 - srcEnd = 0099 - destBegin = 006A -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00A2 - srcEnd = 00A9 - destBegin = 0073 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 00C1 - srcEnd = 00C9 - destBegin = 0041 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 00D1 - srcEnd = 00D9 - destBegin = 004A -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 00E2 - srcEnd = 00E9 - destBegin = 0053 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 00F0 - srcEnd = 00F9 - destBegin = 0030 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 0040 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 0020 00A0 00E2 00E4 00E0 00E1 00E3 00E5 - 00E7 00F1 00A2 002E 003C 0028 002B 007C - 0026 00E9 00EA 00EB 00E8 00ED 00EE 00EF - 00EC 00DF 0021 0024 002A 0029 003B 00AC - 002D 002F 00C2 00C4 00C0 00C1 00C3 00C5 - 00C7 00D1 00A6 002C 0025 005F 003E 003F - 00F8 00C9 00CA 00CB 00C8 00CD 00CE 00CF - 00CC 0060 003A 0023 0040 0027 003D 0022 - 00D8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00AB 00BB 00F0 00FD 00FE 00B1 - 00B0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00AA 00BA 00E6 00B8 00C6 00A4 - 00B5 007E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00A1 00BF 00D0 00DD 00DE 00AE - 005E 00A3 00A5 00B7 00A9 00A7 00B6 00BC - 00BD 00BE 005B 005D 00AF 00A8 00B4 00D7 - 007B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00AD 00F4 00F6 00F2 00F3 00F5 - 007D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B9 00FB 00FC 00F9 00FA 00FF - 005C 00F7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B2 00D4 00D6 00D2 00D3 00D5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B3 00DB 00DC 00D9 00DA F860 -End of Item 0009 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0025, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0009 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x001F, 0x0000, -/* 0001 */ 0x0020, 0x003F, 0xF840, -/* 0002 */ 0x0081, 0x0089, 0x0061, -/* 0003 */ 0x0091, 0x0099, 0x006A, -/* 0004 */ 0x00A2, 0x00A9, 0x0073, -/* 0005 */ 0x00C1, 0x00C9, 0x0041, -/* 0006 */ 0x00D1, 0x00D9, 0x004A, -/* 0007 */ 0x00E2, 0x00E9, 0x0053, -/* 0008 */ 0x00F0, 0x00F9, 0x0030, -/* 0009 */ 0x0040, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0025 Start of MappingTable */ - -/* 0000 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5, -/* 0008 */ 0x00E7, 0x00F1, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, -/* 0010 */ 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF, -/* 0018 */ 0x00EC, 0x00DF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, -/* 0020 */ 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5, -/* 0028 */ 0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, -/* 0030 */ 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, -/* 0038 */ 0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, -/* 0040 */ 0x00D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1, -/* 0050 */ 0x00B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4, -/* 0060 */ 0x00B5, 0x007E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE, -/* 0070 */ 0x005E, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, -/* 0078 */ 0x00BD, 0x00BE, 0x005B, 0x005D, 0x00AF, 0x00A8, 0x00B4, 0x00D7, -/* 0080 */ 0x007B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5, -/* 0090 */ 0x007D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF, -/* 00A0 */ 0x005C, 0x00F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0xF860, -/* End of table Total Length = 0x00E5 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp1026.ut b/mozilla/lib/libi18n/unicode/utotbl/cp1026.ut deleted file mode 100644 index e22ea9900f9..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp1026.ut +++ /dev/null @@ -1,185 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 001F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0020 - srcEnd = 003F - destBegin = F866 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0081 - srcEnd = 0089 - destBegin = 0061 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 0091 - srcEnd = 0099 - destBegin = 006A -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00A2 - srcEnd = 00A9 - destBegin = 0073 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 00C1 - srcEnd = 00C9 - destBegin = 0041 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 00D1 - srcEnd = 00D9 - destBegin = 004A -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 00E2 - srcEnd = 00E9 - destBegin = 0053 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 00F0 - srcEnd = 00F9 - destBegin = 0030 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 0040 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 0020 00A0 00E2 00E4 00E0 00E1 00E3 00E5 - 007B 00F1 00C7 002E 003C 0028 002B 0021 - 0026 00E9 00EA 00EB 00E8 00ED 00EE 00EF - 00EC 00DF 011E 0130 002A 0029 003B 005E - 002D 002F 00C2 00C4 00C0 00C1 00C3 00C5 - 005B 00D1 015F 002C 0025 005F 003E 003F - 00F8 00C9 00CA 00CB 00C8 00CD 00CE 00CF - 00CC 0131 003A 00D6 015E 0027 003D 00DC - 00D8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00AB 00BB 007D 0060 00A6 00B1 - 00B0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00AA 00BA 00E6 00B8 00C6 00A4 - 00B5 00F6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00A1 00BF 005D 0024 0040 00AE - 00A2 00A3 00A5 00B7 00A9 00A7 00B6 00BC - 00BD 00BE 00AC 007C 00AF 00A8 00B4 00D7 - 00E7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00AD 00F4 007E 00F2 00F3 00F5 - 011F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B9 00FB 005C 00F9 00FA 00FF - 00FC 00F7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B2 00D4 0023 00D2 00D3 00D5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B3 00DB 0022 00D9 00DA F886 -End of Item 0009 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0025, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0009 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x001F, 0x0000, -/* 0001 */ 0x0020, 0x003F, 0xF866, -/* 0002 */ 0x0081, 0x0089, 0x0061, -/* 0003 */ 0x0091, 0x0099, 0x006A, -/* 0004 */ 0x00A2, 0x00A9, 0x0073, -/* 0005 */ 0x00C1, 0x00C9, 0x0041, -/* 0006 */ 0x00D1, 0x00D9, 0x004A, -/* 0007 */ 0x00E2, 0x00E9, 0x0053, -/* 0008 */ 0x00F0, 0x00F9, 0x0030, -/* 0009 */ 0x0040, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0025 Start of MappingTable */ - -/* 0000 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5, -/* 0008 */ 0x007B, 0x00F1, 0x00C7, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, -/* 0010 */ 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF, -/* 0018 */ 0x00EC, 0x00DF, 0x011E, 0x0130, 0x002A, 0x0029, 0x003B, 0x005E, -/* 0020 */ 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5, -/* 0028 */ 0x005B, 0x00D1, 0x015F, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, -/* 0030 */ 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, -/* 0038 */ 0x00CC, 0x0131, 0x003A, 0x00D6, 0x015E, 0x0027, 0x003D, 0x00DC, -/* 0040 */ 0x00D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0x00AB, 0x00BB, 0x007D, 0x0060, 0x00A6, 0x00B1, -/* 0050 */ 0x00B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4, -/* 0060 */ 0x00B5, 0x00F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0x00A1, 0x00BF, 0x005D, 0x0024, 0x0040, 0x00AE, -/* 0070 */ 0x00A2, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, -/* 0078 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x00AF, 0x00A8, 0x00B4, 0x00D7, -/* 0080 */ 0x00E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00AD, 0x00F4, 0x007E, 0x00F2, 0x00F3, 0x00F5, -/* 0090 */ 0x011F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0x00B9, 0x00FB, 0x005C, 0x00F9, 0x00FA, 0x00FF, -/* 00A0 */ 0x00FC, 0x00F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0x00B2, 0x00D4, 0x0023, 0x00D2, 0x00D3, 0x00D5, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0x00B3, 0x00DB, 0x0022, 0x00D9, 0x00DA, 0xF886, -/* End of table Total Length = 0x00E5 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp1250.ut b/mozilla/lib/libi18n/unicode/utotbl/cp1250.ut deleted file mode 100644 index 22045f6485b..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp1250.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 20AC FFFD 201A FFFD 201E 2026 2020 2021 - FFFD 2030 0160 2039 015A 0164 017D 0179 - FFFD 2018 2019 201C 201D 2022 2013 2014 - FFFD 2122 0161 203A 015B 0165 017E 017A - 00A0 02C7 02D8 0141 00A4 0104 00A6 00A7 - 00A8 00A9 015E 00AB 00AC 00AD 00AE 017B - 00B0 00B1 02DB 0142 00B4 00B5 00B6 00B7 - 00B8 0105 015F 00BB 013D 02DD 013E 017C - 0154 00C1 00C2 0102 00C4 0139 0106 00C7 - 010C 00C9 0118 00CB 011A 00CD 00CE 010E - 0110 0143 0147 00D3 00D4 0150 00D6 00D7 - 0158 016E 00DA 0170 00DC 00DD 0162 00DF - 0155 00E1 00E2 0103 00E4 013A 0107 00E7 - 010D 00E9 0119 00EB 011B 00ED 00EE 010F - 0111 0144 0148 00F3 00F4 0151 00F6 00F7 - 0159 016F 00FA 0171 00FC 00FD 0163 02D9 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x20AC, 0xFFFD, 0x201A, 0xFFFD, 0x201E, 0x2026, 0x2020, 0x2021, -/* 0008 */ 0xFFFD, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, -/* 0010 */ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, -/* 0018 */ 0xFFFD, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, -/* 0020 */ 0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, -/* 0028 */ 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B, -/* 0030 */ 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7, -/* 0038 */ 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, -/* 0040 */ 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, -/* 0048 */ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, -/* 0050 */ 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, -/* 0058 */ 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, -/* 0060 */ 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, -/* 0068 */ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, -/* 0070 */ 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, -/* 0078 */ 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp1251.ut b/mozilla/lib/libi18n/unicode/utotbl/cp1251.ut deleted file mode 100644 index 47d1894afe2..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp1251.ut +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00C0 - srcEnd = 00FF - destBegin = 0410 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0080 - srcEnd = 00BF - mappingOffset = 0000 - Mapping = - 0402 0403 201A 0453 201E 2026 2020 2021 - 20AC 2030 0409 2039 040A 040C 040B 040F - 0452 2018 2019 201C 201D 2022 2013 2014 - FFFD 2122 0459 203A 045A 045C 045B 045F - 00A0 040E 045E 0408 00A4 0490 00A6 00A7 - 0401 00A9 0404 00AB 00AC 00AD 00AE 0407 - 00B0 00B1 0406 0456 0491 00B5 00B6 00B7 - 0451 2116 0454 00BB 0458 0405 0455 0457 -End of Item 0002 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0003, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000E, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0100, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00C0, 0x00FF, 0x0410, -/* 0002 */ 0x0080, 0x00BF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000E Start of MappingTable */ - -/* 0000 */ 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, -/* 0008 */ 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, -/* 0010 */ 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, -/* 0018 */ 0xFFFD, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, -/* 0020 */ 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, -/* 0028 */ 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, -/* 0030 */ 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, -/* 0038 */ 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, -/* End of table Total Length = 0x004E * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp1252.ut b/mozilla/lib/libi18n/unicode/utotbl/cp1252.ut deleted file mode 100644 index ec7b51bfca2..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp1252.ut +++ /dev/null @@ -1,89 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A0 - srcEnd = 00FF - destBegin = 00A0 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0080 - srcEnd = 009F - mappingOffset = 0000 - Mapping = - 20AC FFFD 201A 0192 201E 2026 2020 2021 - 02C6 2030 0160 2039 0152 FFFD 017D FFFD - FFFD 2018 2019 201C 201D 2022 2013 2014 - 02DC 2122 0161 203A 0153 FFFD 017E 0178 -End of Item 0002 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0003, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000E, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0100, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00FF, 0x00A0, -/* 0002 */ 0x0080, 0x009F, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000E Start of MappingTable */ - -/* 0000 */ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, -/* 0008 */ 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFD, 0x017D, 0xFFFD, -/* 0010 */ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, -/* 0018 */ 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFD, 0x017E, 0x0178, -/* End of table Total Length = 0x002E * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp1253.ut b/mozilla/lib/libi18n/unicode/utotbl/cp1253.ut deleted file mode 100644 index a7640894579..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp1253.ut +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A3 - srcEnd = 00A9 - destBegin = 00A3 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00BE - srcEnd = 00D1 - destBegin = 038E -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00D3 - srcEnd = 00FE - destBegin = 03A3 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0080 - srcEnd = 00BD - mappingOffset = 0000 - Mapping = - 20AC FFFD 201A 0192 201E 2026 2020 2021 - FFFD 2030 FFFD 2039 FFFD FFFD FFFD FFFD - FFFD 2018 2019 201C 201D 2022 2013 2014 - FFFD 2122 FFFD 203A FFFD FFFD FFFD FFFD - 00A0 0385 0386 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 00AB 00AC 00AD 00AE 2015 - 00B0 00B1 00B2 00B3 0384 00B5 00B6 00B7 - 0388 0389 038A 00BB 038C 00BD -End of Item 0004 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A3, 0x00A9, 0x00A3, -/* 0002 */ 0x00BE, 0x00D1, 0x038E, -/* 0003 */ 0x00D3, 0x00FE, 0x03A3, -/* 0004 */ 0x0080, 0x00BD, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0015 Start of MappingTable */ - -/* 0000 */ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, -/* 0008 */ 0xFFFD, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, -/* 0018 */ 0xFFFD, 0x2122, 0xFFFD, 0x203A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0x00A0, 0x0385, 0x0386, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015, -/* 0030 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7, -/* 0038 */ 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, -/* End of table Total Length = 0x0053 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp1254.ut b/mozilla/lib/libi18n/unicode/utotbl/cp1254.ut deleted file mode 100644 index 6354d64b46c..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp1254.ut +++ /dev/null @@ -1,148 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A0 - srcEnd = 00CF - destBegin = 00A0 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00D1 - srcEnd = 00DC - destBegin = 00D1 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00DF - srcEnd = 00EF - destBegin = 00DF -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00F1 - srcEnd = 00FC - destBegin = 00F1 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 0080 - srcEnd = 009F - mappingOffset = 0000 - Mapping = - 20AC FFFD 201A 0192 201E 2026 2020 2021 - 02C6 2030 0160 2039 0152 FFFD FFFD FFFD - FFFD 2018 2019 201C 201D 2022 2013 2014 - 02DC 2122 0161 203A 0153 FFFD FFFD 0178 -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 00D0 - destBegin = 011E -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 00DD - srcEnd = 00DE - mappingOffset = 0020 - Mapping = - 0130 015E -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = 00F0 - destBegin = 011F -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 00FD - srcEnd = 00FF - mappingOffset = 0022 - Mapping = - 0131 015F 00FF -End of Item 0009 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0025, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0005 */ -/* Total of Format 1 : 0x0003 */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1210, 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00CF, 0x00A0, -/* 0002 */ 0x00D1, 0x00DC, 0x00D1, -/* 0003 */ 0x00DF, 0x00EF, 0x00DF, -/* 0004 */ 0x00F1, 0x00FC, 0x00F1, -/* 0005 */ 0x0080, 0x009F, 0x0000, -/* 0006 */ 0x00D0, 0x0000, 0x011E, -/* 0007 */ 0x00DD, 0x00DE, 0x0020, -/* 0008 */ 0x00F0, 0x0000, 0x011F, -/* 0009 */ 0x00FD, 0x00FF, 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0025 Start of MappingTable */ - -/* 0000 */ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, -/* 0008 */ 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, -/* 0018 */ 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFD, 0xFFFD, 0x0178, -/* 0020 */ 0x0130, 0x015E, 0x0131, 0x015F, 0x00FF, -/* End of table Total Length = 0x004A * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp1255.ut b/mozilla/lib/libi18n/unicode/utotbl/cp1255.ut deleted file mode 100644 index 6dbc2f0bd48..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp1255.ut +++ /dev/null @@ -1,148 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00AB - srcEnd = 00B9 - destBegin = 00AB -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00C0 - srcEnd = 00C9 - destBegin = 05B0 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00CB - srcEnd = 00D3 - destBegin = 05BB -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00E0 - srcEnd = 00FA - destBegin = 05D0 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 0080 - srcEnd = 00AA - mappingOffset = 0000 - Mapping = - 20AC FFFD 201A 0192 201E 2026 2020 2021 - 02C6 2030 FFFD 2039 FFFD FFFD FFFD FFFD - FFFD 2018 2019 201C 201D 2022 2013 2014 - 02DC 2122 FFFD 203A FFFD FFFD FFFD FFFD - 00A0 00A1 00A2 00A3 20AA 00A5 00A6 00A7 - 00A8 00A9 00D7 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 00BA - srcEnd = 00BF - mappingOffset = 002B - Mapping = - 00F7 00BB 00BC 00BD 00BE 00BF -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 00D4 - srcEnd = 00D8 - mappingOffset = 0031 - Mapping = - 05F0 05F1 05F2 05F3 05F4 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 00FD - srcEnd = 00FE - mappingOffset = 0036 - Mapping = - 200E 200F -End of Item 0008 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0005 */ -/* Total of Format 1 : 0x0004 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1110, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00AB, 0x00B9, 0x00AB, -/* 0002 */ 0x00C0, 0x00C9, 0x05B0, -/* 0003 */ 0x00CB, 0x00D3, 0x05BB, -/* 0004 */ 0x00E0, 0x00FA, 0x05D0, -/* 0005 */ 0x0080, 0x00AA, 0x0000, -/* 0006 */ 0x00BA, 0x00BF, 0x002B, -/* 0007 */ 0x00D4, 0x00D8, 0x0031, -/* 0008 */ 0x00FD, 0x00FE, 0x0036, -/*-------------------------------------------------------*/ -/* Offset=0x0022 Start of MappingTable */ - -/* 0000 */ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, -/* 0008 */ 0x02C6, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, -/* 0018 */ 0x02DC, 0x2122, 0xFFFD, 0x203A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AA, 0x00A5, 0x00A6, 0x00A7, -/* 0028 */ 0x00A8, 0x00A9, 0x00D7, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, -/* 0030 */ 0x00BF, 0x05F0, 0x05F1, 0x05F2, 0x05F3, 0x05F4, 0x200E, 0x200F, -/* End of table Total Length = 0x005A * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp1256.ut b/mozilla/lib/libi18n/unicode/utotbl/cp1256.ut deleted file mode 100644 index 107085722df..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp1256.ut +++ /dev/null @@ -1,136 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A2 - srcEnd = 00A9 - destBegin = 00A2 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00AB - srcEnd = 00B9 - destBegin = 00AB -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00C1 - srcEnd = 00D6 - destBegin = 0621 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0080 - srcEnd = 00A1 - mappingOffset = 0000 - Mapping = - 20AC 067E 201A 0192 201E 2026 2020 2021 - 02C6 2030 FFFD 2039 0152 0686 0698 FFFD - 06AF 2018 2019 201C 201D 2022 2013 2014 - FFFD 2122 FFFD 203A 0153 200C 200D FFFD - 00A0 060C -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00BA - srcEnd = 00BF - mappingOffset = 0022 - Mapping = - 061B 00BB 00BC 00BD 00BE 061F -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 00D7 - srcEnd = 00FE - mappingOffset = 0028 - Mapping = - 00D7 0637 0638 0639 063A 0640 0641 0642 - 0643 00E0 0644 00E2 0645 0646 0647 0648 - 00E7 00E8 00E9 00EA 00EB 0649 064A 00EE - 00EF 064B 064C 064D 064E 00F4 064F 0650 - 00F7 0651 00F9 0652 00FB 00FC 200E 200F -End of Item 0006 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0003 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0111, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A2, 0x00A9, 0x00A2, -/* 0002 */ 0x00AB, 0x00B9, 0x00AB, -/* 0003 */ 0x00C1, 0x00D6, 0x0621, -/* 0004 */ 0x0080, 0x00A1, 0x0000, -/* 0005 */ 0x00BA, 0x00BF, 0x0022, -/* 0006 */ 0x00D7, 0x00FE, 0x0028, -/*-------------------------------------------------------*/ -/* Offset=0x001B Start of MappingTable */ - -/* 0000 */ 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, -/* 0008 */ 0x02C6, 0x2030, 0xFFFD, 0x2039, 0x0152, 0x0686, 0x0698, 0xFFFD, -/* 0010 */ 0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, -/* 0018 */ 0xFFFD, 0x2122, 0xFFFD, 0x203A, 0x0153, 0x200C, 0x200D, 0xFFFD, -/* 0020 */ 0x00A0, 0x060C, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F, -/* 0028 */ 0x00D7, 0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, -/* 0030 */ 0x0643, 0x00E0, 0x0644, 0x00E2, 0x0645, 0x0646, 0x0647, 0x0648, -/* 0038 */ 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, -/* 0040 */ 0x00EF, 0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, -/* 0048 */ 0x00F7, 0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, -/* End of table Total Length = 0x006B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp1257.ut b/mozilla/lib/libi18n/unicode/utotbl/cp1257.ut deleted file mode 100644 index 22d707c4999..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp1257.ut +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00B0 - srcEnd = 00B7 - destBegin = 00B0 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 20AC FFFD 201A FFFD 201E 2026 2020 2021 - FFFD 2030 FFFD 2039 FFFD 00A8 02C7 00B8 - FFFD 2018 2019 201C 201D 2022 2013 2014 - FFFD 2122 FFFD 203A FFFD 00AF 02DB FFFD - 00A0 FFFD 00A2 00A3 00A4 FFFD 00A6 00A7 - 00D8 00A9 0156 00AB 00AC 00AD 00AE 00C6 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00F8 00B9 0157 00BB 00BC 00BD 00BE 00E6 - 0104 012E 0100 0106 00C4 00C5 0118 0112 - 010C 00C9 0179 0116 0122 0136 012A 013B - 0160 0143 0145 00D3 014C 00D5 00D6 00D7 - 0172 0141 015A 016A 00DC 017B 017D 00DF - 0105 012F 0101 0107 00E4 00E5 0119 0113 - 010D 00E9 017A 0117 0123 0137 012B 013C - 0161 0144 0146 00F3 014D 00F5 00F6 00F7 - 0173 0142 015B 016B 00FC 017C 017E 02D9 -End of Item 0002 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0003, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000E, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0100, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00B0, 0x00B7, 0x00B0, -/* 0002 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000E Start of MappingTable */ - -/* 0000 */ 0x20AC, 0xFFFD, 0x201A, 0xFFFD, 0x201E, 0x2026, 0x2020, 0x2021, -/* 0008 */ 0xFFFD, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0x00A8, 0x02C7, 0x00B8, -/* 0010 */ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, -/* 0018 */ 0xFFFD, 0x2122, 0xFFFD, 0x203A, 0xFFFD, 0x00AF, 0x02DB, 0xFFFD, -/* 0020 */ 0x00A0, 0xFFFD, 0x00A2, 0x00A3, 0x00A4, 0xFFFD, 0x00A6, 0x00A7, -/* 0028 */ 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, -/* 0040 */ 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, -/* 0048 */ 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, -/* 0050 */ 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, -/* 0058 */ 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, -/* 0060 */ 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, -/* 0068 */ 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, -/* 0070 */ 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, -/* 0078 */ 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9, -/* End of table Total Length = 0x008E * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp1258.ut b/mozilla/lib/libi18n/unicode/utotbl/cp1258.ut deleted file mode 100644 index bb55fdb9a0c..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp1258.ut +++ /dev/null @@ -1,146 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A0 - srcEnd = 00C2 - destBegin = 00A0 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00C4 - srcEnd = 00CB - destBegin = 00C4 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00D6 - srcEnd = 00DC - destBegin = 00D6 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00E4 - srcEnd = 00EB - destBegin = 00E4 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 00F6 - srcEnd = 00FC - destBegin = 00F6 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 0080 - srcEnd = 009F - mappingOffset = 0000 - Mapping = - 20AC FFFD 201A 0192 201E 2026 2020 2021 - 02C6 2030 FFFD 2039 0152 FFFD FFFD FFFD - FFFD 2018 2019 201C 201D 2022 2013 2014 - 02DC 2122 FFFD 203A 0153 FFFD FFFD 0178 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 00C3 - srcEnd = 00FF - mappingOffset = 0020 - Mapping = - 0102 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 0340 00CD 00CE 00CF 0110 00D1 0309 - 00D3 00D4 01A0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 01AF 0303 00DF 00E0 00E1 00E2 - 0103 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 0341 00ED 00EE 00EF 0111 00F1 0323 - 00F3 00F4 01A1 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 01B0 20AB 00FF -End of Item 0007 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0006 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1100, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00C2, 0x00A0, -/* 0002 */ 0x00C4, 0x00CB, 0x00C4, -/* 0003 */ 0x00D6, 0x00DC, 0x00D6, -/* 0004 */ 0x00E4, 0x00EB, 0x00E4, -/* 0005 */ 0x00F6, 0x00FC, 0x00F6, -/* 0006 */ 0x0080, 0x009F, 0x0000, -/* 0007 */ 0x00C3, 0x00FF, 0x0020, -/*-------------------------------------------------------*/ -/* Offset=0x001F Start of MappingTable */ - -/* 0000 */ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, -/* 0008 */ 0x02C6, 0x2030, 0xFFFD, 0x2039, 0x0152, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, -/* 0018 */ 0x02DC, 0x2122, 0xFFFD, 0x203A, 0x0153, 0xFFFD, 0xFFFD, 0x0178, -/* 0020 */ 0x0102, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0x0340, 0x00CD, 0x00CE, 0x00CF, 0x0110, 0x00D1, 0x0309, -/* 0030 */ 0x00D3, 0x00D4, 0x01A0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0x01AF, 0x0303, 0x00DF, 0x00E0, 0x00E1, 0x00E2, -/* 0040 */ 0x0103, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0x0341, 0x00ED, 0x00EE, 0x00EF, 0x0111, 0x00F1, 0x0323, -/* 0050 */ 0x00F3, 0x00F4, 0x01A1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0x01B0, 0x20AB, 0x00FF, -/* End of table Total Length = 0x007C * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp437.ut b/mozilla/lib/libi18n/unicode/utotbl/cp437.ut deleted file mode 100644 index 8c484c539ab..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp437.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C7 00FC 00E9 00E2 00E4 00E0 00E5 00E7 - 00EA 00EB 00E8 00EF 00EE 00EC 00C4 00C5 - 00C9 00E6 00C6 00F4 00F6 00F2 00FB 00F9 - 00FF 00D6 00DC 00A2 00A3 00A5 20A7 0192 - 00E1 00ED 00F3 00FA 00F1 00D1 00AA 00BA - 00BF 2310 00AC 00BD 00BC 00A1 00AB 00BB - 2591 2592 2593 2502 2524 2561 2562 2556 - 2555 2563 2551 2557 255D 255C 255B 2510 - 2514 2534 252C 251C 2500 253C 255E 255F - 255A 2554 2569 2566 2560 2550 256C 2567 - 2568 2564 2565 2559 2558 2552 2553 256B - 256A 2518 250C 2588 2584 258C 2590 2580 - 03B1 00DF 0393 03C0 03A3 03C3 00B5 03C4 - 03A6 0398 03A9 03B4 221E 03C6 03B5 2229 - 2261 00B1 2265 2264 2320 2321 00F7 2248 - 00B0 2219 00B7 221A 207F 00B2 25A0 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, -/* 0008 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, -/* 0010 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, -/* 0018 */ 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, -/* 0020 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, -/* 0028 */ 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, -/* 0030 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, -/* 0038 */ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, -/* 0040 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, -/* 0048 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, -/* 0050 */ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, -/* 0058 */ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, -/* 0060 */ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, -/* 0068 */ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, -/* 0070 */ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, -/* 0078 */ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp500.ut b/mozilla/lib/libi18n/unicode/utotbl/cp500.ut deleted file mode 100644 index b826b21437b..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp500.ut +++ /dev/null @@ -1,185 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 001F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0020 - srcEnd = 003F - destBegin = F89A -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0081 - srcEnd = 0089 - destBegin = 0061 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 0091 - srcEnd = 0099 - destBegin = 006A -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00A2 - srcEnd = 00A9 - destBegin = 0073 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 00C1 - srcEnd = 00C9 - destBegin = 0041 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 00D1 - srcEnd = 00D9 - destBegin = 004A -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 00E2 - srcEnd = 00E9 - destBegin = 0053 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 00F0 - srcEnd = 00F9 - destBegin = 0030 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 0040 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 0020 00A0 00E2 00E4 00E0 00E1 00E3 00E5 - 00E7 00F1 005B 002E 003C 0028 002B 0021 - 0026 00E9 00EA 00EB 00E8 00ED 00EE 00EF - 00EC 00DF 005D 0024 002A 0029 003B 005E - 002D 002F 00C2 00C4 00C0 00C1 00C3 00C5 - 00C7 00D1 00A6 002C 0025 005F 003E 003F - 00F8 00C9 00CA 00CB 00C8 00CD 00CE 00CF - 00CC 0060 003A 0023 0040 0027 003D 0022 - 00D8 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00AB 00BB 00F0 00FD 00FE 00B1 - 00B0 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00AA 00BA 00E6 00B8 00C6 00A4 - 00B5 007E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00A1 00BF 00D0 00DD 00DE 00AE - 00A2 00A3 00A5 00B7 00A9 00A7 00B6 00BC - 00BD 00BE 00AC 007C 00AF 00A8 00B4 00D7 - 007B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00AD 00F4 00F6 00F2 00F3 00F5 - 007D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B9 00FB 00FC 00F9 00FA 00FF - 005C 00F7 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B2 00D4 00D6 00D2 00D3 00D5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B3 00DB 00DC 00D9 00DA F8BA -End of Item 0009 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0025, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0009 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x001F, 0x0000, -/* 0001 */ 0x0020, 0x003F, 0xF89A, -/* 0002 */ 0x0081, 0x0089, 0x0061, -/* 0003 */ 0x0091, 0x0099, 0x006A, -/* 0004 */ 0x00A2, 0x00A9, 0x0073, -/* 0005 */ 0x00C1, 0x00C9, 0x0041, -/* 0006 */ 0x00D1, 0x00D9, 0x004A, -/* 0007 */ 0x00E2, 0x00E9, 0x0053, -/* 0008 */ 0x00F0, 0x00F9, 0x0030, -/* 0009 */ 0x0040, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0025 Start of MappingTable */ - -/* 0000 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5, -/* 0008 */ 0x00E7, 0x00F1, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, -/* 0010 */ 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF, -/* 0018 */ 0x00EC, 0x00DF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, -/* 0020 */ 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5, -/* 0028 */ 0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, -/* 0030 */ 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, -/* 0038 */ 0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, -/* 0040 */ 0x00D8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1, -/* 0050 */ 0x00B0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0xFFFD, 0xFFFD, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4, -/* 0060 */ 0x00B5, 0x007E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE, -/* 0070 */ 0x00A2, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, -/* 0078 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x00AF, 0x00A8, 0x00B4, 0x00D7, -/* 0080 */ 0x007B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5, -/* 0090 */ 0x007D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF, -/* 00A0 */ 0x005C, 0x00F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00A8 */ 0xFFFD, 0xFFFD, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5, -/* 00B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0xF8BA, -/* End of table Total Length = 0x00E5 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp737.ut b/mozilla/lib/libi18n/unicode/utotbl/cp737.ut deleted file mode 100644 index 12be0eb64d2..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp737.ut +++ /dev/null @@ -1,119 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0080 - srcEnd = 0090 - destBegin = 0391 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0091 - srcEnd = 0097 - destBegin = 03A3 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 0098 - srcEnd = 00A8 - destBegin = 03B1 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00A9 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 03C3 03C2 03C4 03C5 03C6 03C7 03C8 2591 - 2592 2593 2502 2524 2561 2562 2556 2555 - 2563 2551 2557 255D 255C 255B 2510 2514 - 2534 252C 251C 2500 253C 255E 255F 255A - 2554 2569 2566 2560 2550 256C 2567 2568 - 2564 2565 2559 2558 2552 2553 256B 256A - 2518 250C 2588 2584 258C 2590 2580 03C9 - 03AC 03AD 03AE 03CA 03AF 03CC 03CD 03CB - 03CE 0386 0388 0389 038A 038C 038E 038F - 00B1 2265 2264 03AA 03AB 00F7 2248 00B0 - 2219 00B7 221A 207F 00B2 25A0 00A0 -End of Item 0004 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x0090, 0x0391, -/* 0002 */ 0x0091, 0x0097, 0x03A3, -/* 0003 */ 0x0098, 0x00A8, 0x03B1, -/* 0004 */ 0x00A9, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0015 Start of MappingTable */ - -/* 0000 */ 0x03C3, 0x03C2, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x2591, -/* 0008 */ 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, -/* 0010 */ 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, 0x2514, -/* 0018 */ 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, -/* 0020 */ 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, 0x2568, -/* 0028 */ 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, -/* 0030 */ 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, 0x03C9, -/* 0038 */ 0x03AC, 0x03AD, 0x03AE, 0x03CA, 0x03AF, 0x03CC, 0x03CD, 0x03CB, -/* 0040 */ 0x03CE, 0x0386, 0x0388, 0x0389, 0x038A, 0x038C, 0x038E, 0x038F, -/* 0048 */ 0x00B1, 0x2265, 0x2264, 0x03AA, 0x03AB, 0x00F7, 0x2248, 0x00B0, -/* 0050 */ 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, -/* End of table Total Length = 0x006C * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp775.ut b/mozilla/lib/libi18n/unicode/utotbl/cp775.ut deleted file mode 100644 index d0c9e59ddd9..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp775.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 0106 00FC 00E9 0101 00E4 0123 00E5 0107 - 0142 0113 0156 0157 012B 0179 00C4 00C5 - 00C9 00E6 00C6 014D 00F6 0122 00A2 015A - 015B 00D6 00DC 00F8 00A3 00D8 00D7 00A4 - 0100 012A 00F3 017B 017C 017A 201D 00A6 - 00A9 00AE 00AC 00BD 00BC 0141 00AB 00BB - 2591 2592 2593 2502 2524 0104 010C 0118 - 0116 2563 2551 2557 255D 012E 0160 2510 - 2514 2534 252C 251C 2500 253C 0172 016A - 255A 2554 2569 2566 2560 2550 256C 017D - 0105 010D 0119 0117 012F 0161 0173 016B - 017E 2518 250C 2588 2584 258C 2590 2580 - 00D3 00DF 014C 0143 00F5 00D5 00B5 0144 - 0136 0137 013B 013C 0146 0112 0145 2019 - 00AD 00B1 201C 00BE 00B6 00A7 00F7 201E - 00B0 2219 00B7 00B9 00B3 00B2 25A0 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x0106, 0x00FC, 0x00E9, 0x0101, 0x00E4, 0x0123, 0x00E5, 0x0107, -/* 0008 */ 0x0142, 0x0113, 0x0156, 0x0157, 0x012B, 0x0179, 0x00C4, 0x00C5, -/* 0010 */ 0x00C9, 0x00E6, 0x00C6, 0x014D, 0x00F6, 0x0122, 0x00A2, 0x015A, -/* 0018 */ 0x015B, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x00A4, -/* 0020 */ 0x0100, 0x012A, 0x00F3, 0x017B, 0x017C, 0x017A, 0x201D, 0x00A6, -/* 0028 */ 0x00A9, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x0141, 0x00AB, 0x00BB, -/* 0030 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0104, 0x010C, 0x0118, -/* 0038 */ 0x0116, 0x2563, 0x2551, 0x2557, 0x255D, 0x012E, 0x0160, 0x2510, -/* 0040 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0172, 0x016A, -/* 0048 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x017D, -/* 0050 */ 0x0105, 0x010D, 0x0119, 0x0117, 0x012F, 0x0161, 0x0173, 0x016B, -/* 0058 */ 0x017E, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, -/* 0060 */ 0x00D3, 0x00DF, 0x014C, 0x0143, 0x00F5, 0x00D5, 0x00B5, 0x0144, -/* 0068 */ 0x0136, 0x0137, 0x013B, 0x013C, 0x0146, 0x0112, 0x0145, 0x2019, -/* 0070 */ 0x00AD, 0x00B1, 0x201C, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x201E, -/* 0078 */ 0x00B0, 0x2219, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp850.ut b/mozilla/lib/libi18n/unicode/utotbl/cp850.ut deleted file mode 100644 index 9d9bf749fd2..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp850.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C7 00FC 00E9 00E2 00E4 00E0 00E5 00E7 - 00EA 00EB 00E8 00EF 00EE 00EC 00C4 00C5 - 00C9 00E6 00C6 00F4 00F6 00F2 00FB 00F9 - 00FF 00D6 00DC 00F8 00A3 00D8 00D7 0192 - 00E1 00ED 00F3 00FA 00F1 00D1 00AA 00BA - 00BF 00AE 00AC 00BD 00BC 00A1 00AB 00BB - 2591 2592 2593 2502 2524 00C1 00C2 00C0 - 00A9 2563 2551 2557 255D 00A2 00A5 2510 - 2514 2534 252C 251C 2500 253C 00E3 00C3 - 255A 2554 2569 2566 2560 2550 256C 00A4 - 00F0 00D0 00CA 00CB 00C8 0131 00CD 00CE - 00CF 2518 250C 2588 2584 00A6 00CC 2580 - 00D3 00DF 00D4 00D2 00F5 00D5 00B5 00FE - 00DE 00DA 00DB 00D9 00FD 00DD 00AF 00B4 - 00AD 00B1 2017 00BE 00B6 00A7 00F7 00B8 - 00B0 00A8 00B7 00B9 00B3 00B2 25A0 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, -/* 0008 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, -/* 0010 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, -/* 0018 */ 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, -/* 0020 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, -/* 0028 */ 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, -/* 0030 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, -/* 0038 */ 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, -/* 0040 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, -/* 0048 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, -/* 0050 */ 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, -/* 0058 */ 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, -/* 0060 */ 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, -/* 0068 */ 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, -/* 0070 */ 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, -/* 0078 */ 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp852.ut b/mozilla/lib/libi18n/unicode/utotbl/cp852.ut deleted file mode 100644 index 67d6c39065b..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp852.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C7 00FC 00E9 00E2 00E4 016F 0107 00E7 - 0142 00EB 0150 0151 00EE 0179 00C4 0106 - 00C9 0139 013A 00F4 00F6 013D 013E 015A - 015B 00D6 00DC 0164 0165 0141 00D7 010D - 00E1 00ED 00F3 00FA 0104 0105 017D 017E - 0118 0119 00AC 017A 010C 015F 00AB 00BB - 2591 2592 2593 2502 2524 00C1 00C2 011A - 015E 2563 2551 2557 255D 017B 017C 2510 - 2514 2534 252C 251C 2500 253C 0102 0103 - 255A 2554 2569 2566 2560 2550 256C 00A4 - 0111 0110 010E 00CB 010F 0147 00CD 00CE - 011B 2518 250C 2588 2584 0162 016E 2580 - 00D3 00DF 00D4 0143 0144 0148 0160 0161 - 0154 00DA 0155 0170 00FD 00DD 0163 00B4 - 00AD 02DD 02DB 02C7 02D8 00A7 00F7 00B8 - 00B0 00A8 02D9 0171 0158 0159 25A0 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x016F, 0x0107, 0x00E7, -/* 0008 */ 0x0142, 0x00EB, 0x0150, 0x0151, 0x00EE, 0x0179, 0x00C4, 0x0106, -/* 0010 */ 0x00C9, 0x0139, 0x013A, 0x00F4, 0x00F6, 0x013D, 0x013E, 0x015A, -/* 0018 */ 0x015B, 0x00D6, 0x00DC, 0x0164, 0x0165, 0x0141, 0x00D7, 0x010D, -/* 0020 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x0104, 0x0105, 0x017D, 0x017E, -/* 0028 */ 0x0118, 0x0119, 0x00AC, 0x017A, 0x010C, 0x015F, 0x00AB, 0x00BB, -/* 0030 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x011A, -/* 0038 */ 0x015E, 0x2563, 0x2551, 0x2557, 0x255D, 0x017B, 0x017C, 0x2510, -/* 0040 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0102, 0x0103, -/* 0048 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, -/* 0050 */ 0x0111, 0x0110, 0x010E, 0x00CB, 0x010F, 0x0147, 0x00CD, 0x00CE, -/* 0058 */ 0x011B, 0x2518, 0x250C, 0x2588, 0x2584, 0x0162, 0x016E, 0x2580, -/* 0060 */ 0x00D3, 0x00DF, 0x00D4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161, -/* 0068 */ 0x0154, 0x00DA, 0x0155, 0x0170, 0x00FD, 0x00DD, 0x0163, 0x00B4, -/* 0070 */ 0x00AD, 0x02DD, 0x02DB, 0x02C7, 0x02D8, 0x00A7, 0x00F7, 0x00B8, -/* 0078 */ 0x00B0, 0x00A8, 0x02D9, 0x0171, 0x0158, 0x0159, 0x25A0, 0x00A0, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp855.ut b/mozilla/lib/libi18n/unicode/utotbl/cp855.ut deleted file mode 100644 index 6bc719718c9..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp855.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 0452 0402 0453 0403 0451 0401 0454 0404 - 0455 0405 0456 0406 0457 0407 0458 0408 - 0459 0409 045A 040A 045B 040B 045C 040C - 045E 040E 045F 040F 044E 042E 044A 042A - 0430 0410 0431 0411 0446 0426 0434 0414 - 0435 0415 0444 0424 0433 0413 00AB 00BB - 2591 2592 2593 2502 2524 0445 0425 0438 - 0418 2563 2551 2557 255D 0439 0419 2510 - 2514 2534 252C 251C 2500 253C 043A 041A - 255A 2554 2569 2566 2560 2550 256C 00A4 - 043B 041B 043C 041C 043D 041D 043E 041E - 043F 2518 250C 2588 2584 041F 044F 2580 - 042F 0440 0420 0441 0421 0442 0422 0443 - 0423 0436 0416 0432 0412 044C 042C 2116 - 00AD 044B 042B 0437 0417 0448 0428 044D - 042D 0449 0429 0447 0427 00A7 25A0 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404, -/* 0008 */ 0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408, -/* 0010 */ 0x0459, 0x0409, 0x045A, 0x040A, 0x045B, 0x040B, 0x045C, 0x040C, -/* 0018 */ 0x045E, 0x040E, 0x045F, 0x040F, 0x044E, 0x042E, 0x044A, 0x042A, -/* 0020 */ 0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414, -/* 0028 */ 0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00AB, 0x00BB, -/* 0030 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438, -/* 0038 */ 0x0418, 0x2563, 0x2551, 0x2557, 0x255D, 0x0439, 0x0419, 0x2510, -/* 0040 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x043A, 0x041A, -/* 0048 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, -/* 0050 */ 0x043B, 0x041B, 0x043C, 0x041C, 0x043D, 0x041D, 0x043E, 0x041E, -/* 0058 */ 0x043F, 0x2518, 0x250C, 0x2588, 0x2584, 0x041F, 0x044F, 0x2580, -/* 0060 */ 0x042F, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443, -/* 0068 */ 0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044C, 0x042C, 0x2116, -/* 0070 */ 0x00AD, 0x044B, 0x042B, 0x0437, 0x0417, 0x0448, 0x0428, 0x044D, -/* 0078 */ 0x042D, 0x0449, 0x0429, 0x0447, 0x0427, 0x00A7, 0x25A0, 0x00A0, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp857.ut b/mozilla/lib/libi18n/unicode/utotbl/cp857.ut deleted file mode 100644 index dcf8f3e5579..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp857.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C7 00FC 00E9 00E2 00E4 00E0 00E5 00E7 - 00EA 00EB 00E8 00EF 00EE 0131 00C4 00C5 - 00C9 00E6 00C6 00F4 00F6 00F2 00FB 00F9 - 0130 00D6 00DC 00F8 00A3 00D8 015E 015F - 00E1 00ED 00F3 00FA 00F1 00D1 011E 011F - 00BF 00AE 00AC 00BD 00BC 00A1 00AB 00BB - 2591 2592 2593 2502 2524 00C1 00C2 00C0 - 00A9 2563 2551 2557 255D 00A2 00A5 2510 - 2514 2534 252C 251C 2500 253C 00E3 00C3 - 255A 2554 2569 2566 2560 2550 256C 00A4 - 00BA 00AA 00CA 00CB 00C8 F8BB 00CD 00CE - 00CF 2518 250C 2588 2584 00A6 00CC 2580 - 00D3 00DF 00D4 00D2 00F5 00D5 00B5 F8BC - 00D7 00DA 00DB 00D9 00EC 00FF 00AF 00B4 - 00AD 00B1 F8BD 00BE 00B6 00A7 00F7 00B8 - 00B0 00A8 00B7 00B9 00B3 00B2 25A0 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, -/* 0008 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0131, 0x00C4, 0x00C5, -/* 0010 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, -/* 0018 */ 0x0130, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x015E, 0x015F, -/* 0020 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x011E, 0x011F, -/* 0028 */ 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, -/* 0030 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, -/* 0038 */ 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, -/* 0040 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, -/* 0048 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, -/* 0050 */ 0x00BA, 0x00AA, 0x00CA, 0x00CB, 0x00C8, 0xF8BB, 0x00CD, 0x00CE, -/* 0058 */ 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, -/* 0060 */ 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0xF8BC, -/* 0068 */ 0x00D7, 0x00DA, 0x00DB, 0x00D9, 0x00EC, 0x00FF, 0x00AF, 0x00B4, -/* 0070 */ 0x00AD, 0x00B1, 0xF8BD, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, -/* 0078 */ 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp860.ut b/mozilla/lib/libi18n/unicode/utotbl/cp860.ut deleted file mode 100644 index aa15d44cd96..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp860.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C7 00FC 00E9 00E2 00E3 00E0 00C1 00E7 - 00EA 00CA 00E8 00CD 00D4 00EC 00C3 00C2 - 00C9 00C0 00C8 00F4 00F5 00F2 00DA 00F9 - 00CC 00D5 00DC 00A2 00A3 00D9 20A7 00D3 - 00E1 00ED 00F3 00FA 00F1 00D1 00AA 00BA - 00BF 00D2 00AC 00BD 00BC 00A1 00AB 00BB - 2591 2592 2593 2502 2524 2561 2562 2556 - 2555 2563 2551 2557 255D 255C 255B 2510 - 2514 2534 252C 251C 2500 253C 255E 255F - 255A 2554 2569 2566 2560 2550 256C 2567 - 2568 2564 2565 2559 2558 2552 2553 256B - 256A 2518 250C 2588 2584 258C 2590 2580 - 03B1 00DF 0393 03C0 03A3 03C3 00B5 03C4 - 03A6 0398 03A9 03B4 221E 03C6 03B5 2229 - 2261 00B1 2265 2264 2320 2321 00F7 2248 - 00B0 2219 00B7 221A 207F 00B2 25A0 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E3, 0x00E0, 0x00C1, 0x00E7, -/* 0008 */ 0x00EA, 0x00CA, 0x00E8, 0x00CD, 0x00D4, 0x00EC, 0x00C3, 0x00C2, -/* 0010 */ 0x00C9, 0x00C0, 0x00C8, 0x00F4, 0x00F5, 0x00F2, 0x00DA, 0x00F9, -/* 0018 */ 0x00CC, 0x00D5, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D3, -/* 0020 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, -/* 0028 */ 0x00BF, 0x00D2, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, -/* 0030 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, -/* 0038 */ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, -/* 0040 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, -/* 0048 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, -/* 0050 */ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, -/* 0058 */ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, -/* 0060 */ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, -/* 0068 */ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, -/* 0070 */ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, -/* 0078 */ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp861.ut b/mozilla/lib/libi18n/unicode/utotbl/cp861.ut deleted file mode 100644 index 5582336ceaf..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp861.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C7 00FC 00E9 00E2 00E4 00E0 00E5 00E7 - 00EA 00EB 00E8 00D0 00F0 00DE 00C4 00C5 - 00C9 00E6 00C6 00F4 00F6 00FE 00FB 00DD - 00FD 00D6 00DC 00F8 00A3 00D8 20A7 0192 - 00E1 00ED 00F3 00FA 00C1 00CD 00D3 00DA - 00BF 2310 00AC 00BD 00BC 00A1 00AB 00BB - 2591 2592 2593 2502 2524 2561 2562 2556 - 2555 2563 2551 2557 255D 255C 255B 2510 - 2514 2534 252C 251C 2500 253C 255E 255F - 255A 2554 2569 2566 2560 2550 256C 2567 - 2568 2564 2565 2559 2558 2552 2553 256B - 256A 2518 250C 2588 2584 258C 2590 2580 - 03B1 00DF 0393 03C0 03A3 03C3 00B5 03C4 - 03A6 0398 03A9 03B4 221E 03C6 03B5 2229 - 2261 00B1 2265 2264 2320 2321 00F7 2248 - 00B0 2219 00B7 221A 207F 00B2 25A0 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, -/* 0008 */ 0x00EA, 0x00EB, 0x00E8, 0x00D0, 0x00F0, 0x00DE, 0x00C4, 0x00C5, -/* 0010 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00FE, 0x00FB, 0x00DD, -/* 0018 */ 0x00FD, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, -/* 0020 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00C1, 0x00CD, 0x00D3, 0x00DA, -/* 0028 */ 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, -/* 0030 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, -/* 0038 */ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, -/* 0040 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, -/* 0048 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, -/* 0050 */ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, -/* 0058 */ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, -/* 0060 */ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, -/* 0068 */ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, -/* 0070 */ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, -/* 0078 */ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp862.ut b/mozilla/lib/libi18n/unicode/utotbl/cp862.ut deleted file mode 100644 index ae64acd485d..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp862.ut +++ /dev/null @@ -1,107 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0080 - srcEnd = 009A - destBegin = 05D0 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 009B - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00A2 00A3 00A5 20A7 0192 00E1 00ED 00F3 - 00FA 00F1 00D1 00AA 00BA 00BF 2310 00AC - 00BD 00BC 00A1 00AB 00BB 2591 2592 2593 - 2502 2524 2561 2562 2556 2555 2563 2551 - 2557 255D 255C 255B 2510 2514 2534 252C - 251C 2500 253C 255E 255F 255A 2554 2569 - 2566 2560 2550 256C 2567 2568 2564 2565 - 2559 2558 2552 2553 256B 256A 2518 250C - 2588 2584 258C 2590 2580 03B1 00DF 0393 - 03C0 03A3 03C3 00B5 03C4 03A6 0398 03A9 - 03B4 221E 03C6 03B5 2229 2261 00B1 2265 - 2264 2320 2321 00F7 2248 00B0 2219 00B7 - 221A 207F 00B2 25A0 00A0 -End of Item 0002 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0003, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000E, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0100, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x009A, 0x05D0, -/* 0002 */ 0x009B, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000E Start of MappingTable */ - -/* 0000 */ 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, 0x00E1, 0x00ED, 0x00F3, -/* 0008 */ 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x2310, 0x00AC, -/* 0010 */ 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, 0x2591, 0x2592, 0x2593, -/* 0018 */ 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, -/* 0020 */ 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, 0x2514, 0x2534, 0x252C, -/* 0028 */ 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, -/* 0030 */ 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, 0x2568, 0x2564, 0x2565, -/* 0038 */ 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, -/* 0040 */ 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, 0x03B1, 0x00DF, 0x0393, -/* 0048 */ 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, -/* 0050 */ 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, 0x2261, 0x00B1, 0x2265, -/* 0058 */ 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, -/* 0060 */ 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, -/* End of table Total Length = 0x0073 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp863.ut b/mozilla/lib/libi18n/unicode/utotbl/cp863.ut deleted file mode 100644 index 627266ad3a3..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp863.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C7 00FC 00E9 00E2 00C2 00E0 00B6 00E7 - 00EA 00EB 00E8 00EF 00EE 2017 00C0 00A7 - 00C9 00C8 00CA 00F4 00CB 00CF 00FB 00F9 - 00A4 00D4 00DC 00A2 00A3 00D9 00DB 0192 - 00A6 00B4 00F3 00FA 00A8 00B8 00B3 00AF - 00CE 2310 00AC 00BD 00BC 00BE 00AB 00BB - 2591 2592 2593 2502 2524 2561 2562 2556 - 2555 2563 2551 2557 255D 255C 255B 2510 - 2514 2534 252C 251C 2500 253C 255E 255F - 255A 2554 2569 2566 2560 2550 256C 2567 - 2568 2564 2565 2559 2558 2552 2553 256B - 256A 2518 250C 2588 2584 258C 2590 2580 - 03B1 00DF 0393 03C0 03A3 03C3 00B5 03C4 - 03A6 0398 03A9 03B4 221E 03C6 03B5 2229 - 2261 00B1 2265 2264 2320 2321 00F7 2248 - 00B0 2219 00B7 221A 207F 00B2 25A0 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00C2, 0x00E0, 0x00B6, 0x00E7, -/* 0008 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x2017, 0x00C0, 0x00A7, -/* 0010 */ 0x00C9, 0x00C8, 0x00CA, 0x00F4, 0x00CB, 0x00CF, 0x00FB, 0x00F9, -/* 0018 */ 0x00A4, 0x00D4, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x00DB, 0x0192, -/* 0020 */ 0x00A6, 0x00B4, 0x00F3, 0x00FA, 0x00A8, 0x00B8, 0x00B3, 0x00AF, -/* 0028 */ 0x00CE, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00BE, 0x00AB, 0x00BB, -/* 0030 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, -/* 0038 */ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, -/* 0040 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, -/* 0048 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, -/* 0050 */ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, -/* 0058 */ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, -/* 0060 */ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, -/* 0068 */ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, -/* 0070 */ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, -/* 0078 */ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp864.ut b/mozilla/lib/libi18n/unicode/utotbl/cp864.ut deleted file mode 100644 index d6ed6279dfa..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp864.ut +++ /dev/null @@ -1,128 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 0024 - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0026 - srcEnd = 007F - destBegin = 0026 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00B0 - srcEnd = 00B9 - destBegin = 0660 -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 0025 - destBegin = 066A -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00B0 00B7 2219 221A 2592 2500 2502 253C - 2524 252C 251C 2534 2510 250C 2514 2518 - 03B2 221E 03C6 00B1 00BD 00BC 2248 00AB - 00BB FEF7 FEF8 009B 009C FEFB FEFC 009F - 00A0 00AD FE82 00A3 00A4 FE84 F8BE F8BF - FE8E FE8F FE95 FE99 060C FE9D FEA1 FEA5 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FED1 061B FEB1 FEB5 FEB9 061F - 00A2 FE80 FE81 FE83 FE85 FECC FE8A FE8D - FE90 FE93 FE96 FE9A FE9E FEA2 FEA6 FEA9 - FEAB FEAD FEAF FEB2 FEB6 FEBA FEBE FEC1 - FEC5 FECA FECE 00A6 00AC 00F7 00D7 FEC9 - 0640 FED2 FED6 FEDA FEDE FEE2 FEE6 FEEA - FEED FEEF FEF2 FEBD FECB FED0 FECD FEE1 - FE7D 0651 FEE5 FEE9 FEEB FEF0 FEF4 FECF - FED5 FEF5 FEF6 FEDD FED9 FEF1 25A0 F8C0 -End of Item 0004 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x2000, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x0024, 0x0000, -/* 0001 */ 0x0026, 0x007F, 0x0026, -/* 0002 */ 0x00B0, 0x00B9, 0x0660, -/* 0003 */ 0x0025, 0x0000, 0x066A, -/* 0004 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0015 Start of MappingTable */ - -/* 0000 */ 0x00B0, 0x00B7, 0x2219, 0x221A, 0x2592, 0x2500, 0x2502, 0x253C, -/* 0008 */ 0x2524, 0x252C, 0x251C, 0x2534, 0x2510, 0x250C, 0x2514, 0x2518, -/* 0010 */ 0x03B2, 0x221E, 0x03C6, 0x00B1, 0x00BD, 0x00BC, 0x2248, 0x00AB, -/* 0018 */ 0x00BB, 0xFEF7, 0xFEF8, 0x009B, 0x009C, 0xFEFB, 0xFEFC, 0x009F, -/* 0020 */ 0x00A0, 0x00AD, 0xFE82, 0x00A3, 0x00A4, 0xFE84, 0xF8BE, 0xF8BF, -/* 0028 */ 0xFE8E, 0xFE8F, 0xFE95, 0xFE99, 0x060C, 0xFE9D, 0xFEA1, 0xFEA5, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFED1, 0x061B, 0xFEB1, 0xFEB5, 0xFEB9, 0x061F, -/* 0040 */ 0x00A2, 0xFE80, 0xFE81, 0xFE83, 0xFE85, 0xFECC, 0xFE8A, 0xFE8D, -/* 0048 */ 0xFE90, 0xFE93, 0xFE96, 0xFE9A, 0xFE9E, 0xFEA2, 0xFEA6, 0xFEA9, -/* 0050 */ 0xFEAB, 0xFEAD, 0xFEAF, 0xFEB2, 0xFEB6, 0xFEBA, 0xFEBE, 0xFEC1, -/* 0058 */ 0xFEC5, 0xFECA, 0xFECE, 0x00A6, 0x00AC, 0x00F7, 0x00D7, 0xFEC9, -/* 0060 */ 0x0640, 0xFED2, 0xFED6, 0xFEDA, 0xFEDE, 0xFEE2, 0xFEE6, 0xFEEA, -/* 0068 */ 0xFEED, 0xFEEF, 0xFEF2, 0xFEBD, 0xFECB, 0xFED0, 0xFECD, 0xFEE1, -/* 0070 */ 0xFE7D, 0x0651, 0xFEE5, 0xFEE9, 0xFEEB, 0xFEF0, 0xFEF4, 0xFECF, -/* 0078 */ 0xFED5, 0xFEF5, 0xFEF6, 0xFEDD, 0xFED9, 0xFEF1, 0x25A0, 0xF8C0, -/* End of table Total Length = 0x0095 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp865.ut b/mozilla/lib/libi18n/unicode/utotbl/cp865.ut deleted file mode 100644 index 853c0e68f42..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp865.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C7 00FC 00E9 00E2 00E4 00E0 00E5 00E7 - 00EA 00EB 00E8 00EF 00EE 00EC 00C4 00C5 - 00C9 00E6 00C6 00F4 00F6 00F2 00FB 00F9 - 00FF 00D6 00DC 00F8 00A3 00D8 20A7 0192 - 00E1 00ED 00F3 00FA 00F1 00D1 00AA 00BA - 00BF 2310 00AC 00BD 00BC 00A1 00AB 00A4 - 2591 2592 2593 2502 2524 2561 2562 2556 - 2555 2563 2551 2557 255D 255C 255B 2510 - 2514 2534 252C 251C 2500 253C 255E 255F - 255A 2554 2569 2566 2560 2550 256C 2567 - 2568 2564 2565 2559 2558 2552 2553 256B - 256A 2518 250C 2588 2584 258C 2590 2580 - 03B1 00DF 0393 03C0 03A3 03C3 00B5 03C4 - 03A6 0398 03A9 03B4 221E 03C6 03B5 2229 - 2261 00B1 2265 2264 2320 2321 00F7 2248 - 00B0 2219 00B7 221A 207F 00B2 25A0 00A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, -/* 0008 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, -/* 0010 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, -/* 0018 */ 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, -/* 0020 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, -/* 0028 */ 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00A4, -/* 0030 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, -/* 0038 */ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, -/* 0040 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, -/* 0048 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, -/* 0050 */ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, -/* 0058 */ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, -/* 0060 */ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, -/* 0068 */ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, -/* 0070 */ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, -/* 0078 */ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp866.ut b/mozilla/lib/libi18n/unicode/utotbl/cp866.ut deleted file mode 100644 index f0a43de845c..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp866.ut +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0080 - srcEnd = 00AF - destBegin = 0410 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00E0 - srcEnd = 00EF - destBegin = 0440 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00B0 - srcEnd = 00DF - mappingOffset = 0000 - Mapping = - 2591 2592 2593 2502 2524 2561 2562 2556 - 2555 2563 2551 2557 255D 255C 255B 2510 - 2514 2534 252C 251C 2500 253C 255E 255F - 255A 2554 2569 2566 2560 2550 256C 2567 - 2568 2564 2565 2559 2558 2552 2553 256B - 256A 2518 250C 2588 2584 258C 2590 2580 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 00F0 - srcEnd = 00FF - mappingOffset = 0030 - Mapping = - 0401 0451 0404 0454 0407 0457 040E 045E - 00B0 2219 00B7 221A 2116 00A4 25A0 00A0 -End of Item 0004 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x0080, 0x00AF, 0x0410, -/* 0002 */ 0x00E0, 0x00EF, 0x0440, -/* 0003 */ 0x00B0, 0x00DF, 0x0000, -/* 0004 */ 0x00F0, 0x00FF, 0x0030, -/*-------------------------------------------------------*/ -/* Offset=0x0015 Start of MappingTable */ - -/* 0000 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, -/* 0008 */ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, -/* 0010 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, -/* 0018 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, -/* 0020 */ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, -/* 0028 */ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, -/* 0030 */ 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E, -/* 0038 */ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0, -/* End of table Total Length = 0x0055 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp869.ut b/mozilla/lib/libi18n/unicode/utotbl/cp869.ut deleted file mode 100644 index cf858f7e79b..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp869.ut +++ /dev/null @@ -1,135 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 0085 - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A4 - srcEnd = 00AA - destBegin = 0391 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00CF - srcEnd = 00D5 - destBegin = 03A3 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00E0 - srcEnd = 00EB - destBegin = 03B6 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0086 - srcEnd = 00DF - mappingOffset = 0000 - Mapping = - 0386 0087 00B7 00AC 00A6 2018 2019 0388 - 2015 0389 038A 03AA 038C 0093 0094 038E - 03AB 00A9 038F 00B2 00B3 03AC 00A3 03AD - 03AE 03AF 03CA 0390 03CC 03CD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00BD 0398 0399 - 00AB 00BB 2591 2592 2593 2502 2524 039A - 039B 039C 039D 2563 2551 2557 255D 039E - 039F 2510 2514 2534 252C 251C 2500 253C - 03A0 03A1 255A 2554 2569 2566 2560 2550 - 256C FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 03B1 03B2 03B3 2518 250C 2588 2584 03B4 - 03B5 2580 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00EC - srcEnd = 00FF - mappingOffset = 005A - Mapping = - 03C3 03C2 03C4 0384 00AD 00B1 03C5 03C6 - 03C7 00A7 03C8 0385 00B0 00A8 03C9 03CB - 03B0 03CE 25A0 00A0 -End of Item 0005 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0018, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x0085, 0x0000, -/* 0001 */ 0x00A4, 0x00AA, 0x0391, -/* 0002 */ 0x00CF, 0x00D5, 0x03A3, -/* 0003 */ 0x00E0, 0x00EB, 0x03B6, -/* 0004 */ 0x0086, 0x00DF, 0x0000, -/* 0005 */ 0x00EC, 0x00FF, 0x005A, -/*-------------------------------------------------------*/ -/* Offset=0x0018 Start of MappingTable */ - -/* 0000 */ 0x0386, 0x0087, 0x00B7, 0x00AC, 0x00A6, 0x2018, 0x2019, 0x0388, -/* 0008 */ 0x2015, 0x0389, 0x038A, 0x03AA, 0x038C, 0x0093, 0x0094, 0x038E, -/* 0010 */ 0x03AB, 0x00A9, 0x038F, 0x00B2, 0x00B3, 0x03AC, 0x00A3, 0x03AD, -/* 0018 */ 0x03AE, 0x03AF, 0x03CA, 0x0390, 0x03CC, 0x03CD, 0xFFFD, 0xFFFD, -/* 0020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00BD, 0x0398, 0x0399, -/* 0028 */ 0x00AB, 0x00BB, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039A, -/* 0030 */ 0x039B, 0x039C, 0x039D, 0x2563, 0x2551, 0x2557, 0x255D, 0x039E, -/* 0038 */ 0x039F, 0x2510, 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, -/* 0040 */ 0x03A0, 0x03A1, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, -/* 0048 */ 0x256C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0x03B1, 0x03B2, 0x03B3, 0x2518, 0x250C, 0x2588, 0x2584, 0x03B4, -/* 0058 */ 0x03B5, 0x2580, 0x03C3, 0x03C2, 0x03C4, 0x0384, 0x00AD, 0x00B1, -/* 0060 */ 0x03C5, 0x03C6, 0x03C7, 0x00A7, 0x03C8, 0x0385, 0x00B0, 0x00A8, -/* 0068 */ 0x03C9, 0x03CB, 0x03B0, 0x03CE, 0x25A0, 0x00A0, -/* End of table Total Length = 0x0086 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp874.ut b/mozilla/lib/libi18n/unicode/utotbl/cp874.ut deleted file mode 100644 index e0d89f65bfe..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp874.ut +++ /dev/null @@ -1,104 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A1 - srcEnd = 00DA - destBegin = 0E01 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00DF - srcEnd = 00FB - destBegin = 0E3F -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0080 - srcEnd = 0085 - mappingOffset = 0000 - Mapping = - 20AC FFFD FFFD FFFD FFFD 2026 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0091 - srcEnd = 00A0 - mappingOffset = 0006 - Mapping = - 2018 2019 201C 201D 2022 2013 2014 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 00A0 -End of Item 0004 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A1, 0x00DA, 0x0E01, -/* 0002 */ 0x00DF, 0x00FB, 0x0E3F, -/* 0003 */ 0x0080, 0x0085, 0x0000, -/* 0004 */ 0x0091, 0x00A0, 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0015 Start of MappingTable */ - -/* 0000 */ 0x20AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2026, 0x2018, 0x2019, -/* 0008 */ 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A0, -/* End of table Total Length = 0x002B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp875.ut b/mozilla/lib/libi18n/unicode/utotbl/cp875.ut deleted file mode 100644 index 911a8dadd7a..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp875.ut +++ /dev/null @@ -1,235 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 001F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0020 - srcEnd = 003F - destBegin = F8C9 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0041 - srcEnd = 0049 - destBegin = 0391 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 0051 - srcEnd = 0058 - destBegin = 039A -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 0062 - srcEnd = 0069 - destBegin = 03A4 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 0081 - srcEnd = 0089 - destBegin = 0061 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 008A - srcEnd = 008F - destBegin = 03B1 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 0091 - srcEnd = 0099 - destBegin = 006A -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 009A - srcEnd = 009F - destBegin = 03B7 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 00A2 - srcEnd = 00A9 - destBegin = 0073 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 00C1 - srcEnd = 00C9 - destBegin = 0041 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 00D1 - srcEnd = 00D9 - destBegin = 004A -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 00E2 - srcEnd = 00E9 - destBegin = 0053 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 00F0 - srcEnd = 00F9 - destBegin = 0030 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 0040 - srcEnd = 0080 - mappingOffset = 0000 - Mapping = - 0020 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 005B 002E 003C 0028 002B 0021 - 0026 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 03A3 005D 0024 002A 0029 003B 005E - 002D 002F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 007C 002C 0025 005F 003E 003F - 00A8 0386 0388 0389 00A0 038A 038C 038E - 038F 0060 003A 0023 0040 0027 003D 0022 - 0385 -End of Item 000E - -Begin of Item 000F - Format 2 - srcBegin = 0090 - destBegin = 00B0 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 00A0 - srcEnd = 00FF - mappingOffset = 0041 - Mapping = - 00B4 007E FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 03BD 03BE 03BF 03C0 03C1 03C3 - 00A3 03AC 03AD 03AE 03CA 03AF 03CC 03CD - 03CB 03CE 03C2 03C4 03C5 03C6 03C7 03C8 - 007B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00AD 03C9 0390 03B0 2018 2015 - 007D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B1 00BD F8E9 00B7 2019 00A6 - 005C F8EA FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B2 00A7 F8EB F8EC 00AB 00AC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 00B3 00A9 F8ED F8EE 00BB F8EF -End of Item 0010 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x003C, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x000E */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x2100, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0009 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x001F, 0x0000, -/* 0001 */ 0x0020, 0x003F, 0xF8C9, -/* 0002 */ 0x0041, 0x0049, 0x0391, -/* 0003 */ 0x0051, 0x0058, 0x039A, -/* 0004 */ 0x0062, 0x0069, 0x03A4, -/* 0005 */ 0x0081, 0x0089, 0x0061, -/* 0006 */ 0x008A, 0x008F, 0x03B1, -/* 0007 */ 0x0091, 0x0099, 0x006A, -/* 0008 */ 0x009A, 0x009F, 0x03B7, -/* 0009 */ 0x00A2, 0x00A9, 0x0073, -/* 000A */ 0x00C1, 0x00C9, 0x0041, -/* 000B */ 0x00D1, 0x00D9, 0x004A, -/* 000C */ 0x00E2, 0x00E9, 0x0053, -/* 000D */ 0x00F0, 0x00F9, 0x0030, -/* 000E */ 0x0040, 0x0080, 0x0000, -/* 000F */ 0x0090, 0x0000, 0x00B0, -/* 0010 */ 0x00A0, 0x00FF, 0x0041, -/*-------------------------------------------------------*/ -/* Offset=0x003C Start of MappingTable */ - -/* 0000 */ 0x0020, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, -/* 0010 */ 0x0026, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0x03A3, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, -/* 0020 */ 0x002D, 0x002F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0x007C, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, -/* 0030 */ 0x00A8, 0x0386, 0x0388, 0x0389, 0x00A0, 0x038A, 0x038C, 0x038E, -/* 0038 */ 0x038F, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, -/* 0040 */ 0x0385, 0x00B4, 0x007E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, -/* 0050 */ 0x03C3, 0x00A3, 0x03AC, 0x03AD, 0x03AE, 0x03CA, 0x03AF, 0x03CC, -/* 0058 */ 0x03CD, 0x03CB, 0x03CE, 0x03C2, 0x03C4, 0x03C5, 0x03C6, 0x03C7, -/* 0060 */ 0x03C8, 0x007B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00AD, 0x03C9, 0x0390, 0x03B0, 0x2018, -/* 0070 */ 0x2015, 0x007D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00B1, 0x00BD, 0xF8E9, 0x00B7, 0x2019, -/* 0080 */ 0x00A6, 0x005C, 0xF8EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00B2, 0x00A7, 0xF8EB, 0xF8EC, 0x00AB, -/* 0090 */ 0x00AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00B3, 0x00A9, 0xF8ED, 0xF8EE, 0x00BB, -/* 00A0 */ 0xF8EF, -/* End of table Total Length = 0x00DD * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp932.ut b/mozilla/lib/libi18n/unicode/utotbl/cp932.ut deleted file mode 100644 index 6244bdc5959..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp932.ut +++ /dev/null @@ -1,2523 +0,0 @@ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A1 - srcEnd = 00DF - destBegin = FF61 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 8171 - srcEnd = 817A - destBegin = 3008 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 824F - srcEnd = 8258 - destBegin = FF10 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 8260 - srcEnd = 8279 - destBegin = FF21 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 8281 - srcEnd = 829A - destBegin = FF41 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 829F - srcEnd = 82F1 - destBegin = 3041 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 8340 - srcEnd = 837E - destBegin = 30A1 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 8380 - srcEnd = 8396 - destBegin = 30E0 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 839F - srcEnd = 83AF - destBegin = 0391 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 83B0 - srcEnd = 83B6 - destBegin = 03A3 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 83BF - srcEnd = 83CF - destBegin = 03B1 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 83D0 - srcEnd = 83D6 - destBegin = 03C3 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 8440 - srcEnd = 8445 - destBegin = 0410 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 8447 - srcEnd = 8460 - destBegin = 0416 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 8470 - srcEnd = 8475 - destBegin = 0430 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 8477 - srcEnd = 847E - destBegin = 0436 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 8480 - srcEnd = 8491 - destBegin = 043E -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 8740 - srcEnd = 8753 - destBegin = 2460 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 8754 - srcEnd = 875D - destBegin = 2160 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = EEEF - srcEnd = EEF8 - destBegin = 2170 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = FA40 - srcEnd = FA49 - destBegin = 2170 -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = FA4A - srcEnd = FA53 - destBegin = 2160 -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 8140 - srcEnd = 81AC - mappingOffset = 0000 - Mapping = - 3000 3001 3002 FF0C FF0E 30FB FF1A FF1B - FF1F FF01 309B 309C 00B4 FF40 00A8 FF3E - FFE3 FF3F 30FD 30FE 309D 309E 3003 4EDD - 3005 3006 3007 30FC 2015 2010 FF0F FF3C - FF5E 2225 FF5C 2026 2025 2018 2019 201C - 201D FF08 FF09 3014 3015 FF3B FF3D FF5B - FF5D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FF0B FF0D 00B1 00D7 FFFD - 00F7 FF1D 2260 FF1C FF1E 2266 2267 221E - 2234 2642 2640 00B0 2032 2033 2103 FFE5 - FF04 FFE0 FFE1 FF05 FF03 FF06 FF0A FF20 - 00A7 2606 2605 25CB 25CF 25CE 25C7 25C6 - 25A1 25A0 25B3 25B2 25BD 25BC 203B 3012 - 2192 2190 2191 2193 3013 -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 81B8 - srcEnd = 81CE - mappingOffset = 006D - Mapping = - 2208 220B 2286 2287 2282 2283 222A 2229 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2227 2228 FFE2 21D2 21D4 2200 2203 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 81DA - srcEnd = 81FC - mappingOffset = 0084 - Mapping = - 2220 22A5 2312 2202 2207 2261 2252 226A - 226B 221A 223D 221D 2235 222B 222C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 212B 2030 - 266F 266D 266A 2020 2021 00B6 FFFD FFFD - FFFD FFFD 25EF -End of Item 0019 - -Begin of Item 001A - Format 2 - srcBegin = 8446 - destBegin = 0401 -End of Item 001A - -Begin of Item 001B - Format 2 - srcBegin = 8476 - destBegin = 0451 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 849F - srcEnd = 84BE - mappingOffset = 00A7 - Mapping = - 2500 2502 250C 2510 2518 2514 251C 252C - 2524 2534 253C 2501 2503 250F 2513 251B - 2517 2523 2533 252B 253B 254B 2520 252F - 2528 2537 253F 251D 2530 2525 2538 2542 -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 875F - srcEnd = 879C - mappingOffset = 00C7 - Mapping = - 3349 3314 3322 334D 3318 3327 3303 3336 - 3351 3357 330D 3326 3323 332B 334A 333B - 339C 339D 339E 338E 338F 33C4 33A1 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 337B - FFFD 301D 301F 2116 33CD 2121 32A4 32A5 - 32A6 32A7 32A8 3231 3232 3239 337E 337D - 337C 2252 2261 222B 222E 2211 221A 22A5 - 2220 221F 22BF 2235 2229 222A -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 889F - srcEnd = 88FC - mappingOffset = 0105 - Mapping = - 4E9C 5516 5A03 963F 54C0 611B 6328 59F6 - 9022 8475 831C 7A50 60AA 63E1 6E25 65ED - 8466 82A6 9BF5 6893 5727 65A1 6271 5B9B - 59D0 867B 98F4 7D62 7DBE 9B8E 6216 7C9F - 88B7 5B89 5EB5 6309 6697 6848 95C7 978D - 674F 4EE5 4F0A 4F4D 4F9D 5049 56F2 5937 - 59D4 5A01 5C09 60DF 610F 6170 6613 6905 - 70BA 754F 7570 79FB 7DAD 7DEF 80C3 840E - 8863 8B02 9055 907A 533B 4E95 4EA5 57DF - 80B2 90C1 78EF 4E00 58F1 6EA2 9038 7A32 - 8328 828B 9C2F 5141 5370 54BD 54E1 56E0 - 59FB 5F15 98F2 6DEB 80E4 852D -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 8940 - srcEnd = 89FC - mappingOffset = 0163 - Mapping = - 9662 9670 96A0 97FB 540B 53F3 5B87 70CF - 7FBD 8FC2 96E8 536F 9D5C 7ABA 4E11 7893 - 81FC 6E26 5618 5504 6B1D 851A 9C3B 59E5 - 53A9 6D66 74DC 958F 5642 4E91 904B 96F2 - 834F 990C 53E1 55B6 5B30 5F71 6620 66F3 - 6804 6C38 6CF3 6D29 745B 76C8 7A4E 9834 - 82F1 885B 8A60 92ED 6DB2 75AB 76CA 99C5 - 60A6 8B01 8D8A 95B2 698E 53AD 5186 FFFD - 5712 5830 5944 5BB4 5EF6 6028 63A9 63F4 - 6CBF 6F14 708E 7114 7159 71D5 733F 7E01 - 8276 82D1 8597 9060 925B 9D1B 5869 65BC - 6C5A 7525 51F9 592E 5965 5F80 5FDC 62BC - 65FA 6A2A 6B27 6BB4 738B 7FC1 8956 9D2C - 9D0E 9EC4 5CA1 6C96 837B 5104 5C4B 61B6 - 81C6 6876 7261 4E59 4FFA 5378 6069 6E29 - 7A4F 97F3 4E0B 5316 4EEE 4F55 4F3D 4FA1 - 4F73 52A0 53EF 5609 590F 5AC1 5BB6 5BE1 - 79D1 6687 679C 67B6 6B4C 6CB3 706B 73C2 - 798D 79BE 7A3C 7B87 82B1 82DB 8304 8377 - 83EF 83D3 8766 8AB2 5629 8CA8 8FE6 904E - 971E 868A 4FC4 5CE8 6211 7259 753B 81E5 - 82BD 86FE 8CC0 96C5 9913 99D5 4ECB 4F1A - 89E3 56DE 584A 58CA 5EFB 5FEB 602A 6094 - 6062 61D0 6212 62D0 6539 -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 8A40 - srcEnd = 8AFC - mappingOffset = 0220 - Mapping = - 9B41 6666 68B0 6D77 7070 754C 7686 7D75 - 82A5 87F9 958B 968E 8C9D 51F1 52BE 5916 - 54B3 5BB3 5D16 6168 6982 6DAF 788D 84CB - 8857 8A72 93A7 9AB8 6D6C 99A8 86D9 57A3 - 67FF 86CE 920E 5283 5687 5404 5ED3 62E1 - 64B9 683C 6838 6BBB 7372 78BA 7A6B 899A - 89D2 8D6B 8F03 90ED 95A3 9694 9769 5B66 - 5CB3 697D 984D 984E 639B 7B20 6A2B FFFD - 6A7F 68B6 9C0D 6F5F 5272 559D 6070 62EC - 6D3B 6E07 6ED1 845B 8910 8F44 4E14 9C39 - 53F6 691B 6A3A 9784 682A 515C 7AC3 84B2 - 91DC 938C 565B 9D28 6822 8305 8431 7CA5 - 5208 82C5 74E6 4E7E 4F83 51A0 5BD2 520A - 52D8 52E7 5DFB 559A 582A 59E6 5B8C 5B98 - 5BDB 5E72 5E79 60A3 611F 6163 61BE 63DB - 6562 67D1 6853 68FA 6B3E 6B53 6C57 6F22 - 6F97 6F45 74B0 7518 76E3 770B 7AFF 7BA1 - 7C21 7DE9 7F36 7FF0 809D 8266 839E 89B3 - 8ACC 8CAB 9084 9451 9593 9591 95A2 9665 - 97D3 9928 8218 4E38 542B 5CB8 5DCC 73A9 - 764C 773C 5CA9 7FEB 8D0B 96C1 9811 9854 - 9858 4F01 4F0E 5371 559C 5668 57FA 5947 - 5B09 5BC4 5C90 5E0C 5E7E 5FCC 63EE 673A - 65D7 65E2 671F 68CB 68C4 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 8B40 - srcEnd = 8BFC - mappingOffset = 02DD - Mapping = - 6A5F 5E30 6BC5 6C17 6C7D 757F 7948 5B63 - 7A00 7D00 5FBD 898F 8A18 8CB4 8D77 8ECC - 8F1D 98E2 9A0E 9B3C 4E80 507D 5100 5993 - 5B9C 622F 6280 64EC 6B3A 72A0 7591 7947 - 7FA9 87FB 8ABC 8B70 63AC 83CA 97A0 5409 - 5403 55AB 6854 6A58 8A70 7827 6775 9ECD - 5374 5BA2 811A 8650 9006 4E18 4E45 4EC7 - 4F11 53CA 5438 5BAE 5F13 6025 6551 FFFD - 673D 6C42 6C72 6CE3 7078 7403 7A76 7AAE - 7B08 7D1A 7CFE 7D66 65E7 725B 53BB 5C45 - 5DE8 62D2 62E0 6319 6E20 865A 8A31 8DDD - 92F8 6F01 79A6 9B5A 4EA8 4EAB 4EAC 4F9B - 4FA0 50D1 5147 7AF6 5171 51F6 5354 5321 - 537F 53EB 55AC 5883 5CE1 5F37 5F4A 602F - 6050 606D 631F 6559 6A4B 6CC1 72C2 72ED - 77EF 80F8 8105 8208 854E 90F7 93E1 97FF - 9957 9A5A 4EF0 51DD 5C2D 6681 696D 5C40 - 66F2 6975 7389 6850 7C81 50C5 52E4 5747 - 5DFE 9326 65A4 6B23 6B3D 7434 7981 79BD - 7B4B 7DCA 82B9 83CC 887F 895F 8B39 8FD1 - 91D1 541F 9280 4E5D 5036 53E5 533A 72D7 - 7396 77E9 82E6 8EAF 99C6 99C8 99D2 5177 - 611A 865E 55B0 7A7A 5076 5BD3 9047 9685 - 4E32 6ADB 91E7 5C51 5C48 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 8C40 - srcEnd = 8CFC - mappingOffset = 039A - Mapping = - 6398 7A9F 6C93 9774 8F61 7AAA 718A 9688 - 7C82 6817 7E70 6851 936C 52F2 541B 85AB - 8A13 7FA4 8ECD 90E1 5366 8888 7941 4FC2 - 50BE 5211 5144 5553 572D 73EA 578B 5951 - 5F62 5F84 6075 6176 6167 61A9 63B2 643A - 656C 666F 6842 6E13 7566 7A3D 7CFB 7D4C - 7D99 7E4B 7F6B 830E 834A 86CD 8A08 8A63 - 8B66 8EFD 981A 9D8F 82B8 8FCE 9BE8 FFFD - 5287 621F 6483 6FC0 9699 6841 5091 6B20 - 6C7A 6F54 7A74 7D50 8840 8A23 6708 4EF6 - 5039 5026 5065 517C 5238 5263 55A7 570F - 5805 5ACC 5EFA 61B2 61F8 62F3 6372 691C - 6A29 727D 72AC 732E 7814 786F 7D79 770C - 80A9 898B 8B19 8CE2 8ED2 9063 9375 967A - 9855 9A13 9E78 5143 539F 53B3 5E7B 5F26 - 6E1B 6E90 7384 73FE 7D43 8237 8A00 8AFA - 9650 4E4E 500B 53E4 547C 56FA 59D1 5B64 - 5DF1 5EAB 5F27 6238 6545 67AF 6E56 72D0 - 7CCA 88B4 80A1 80E1 83F0 864E 8A87 8DE8 - 9237 96C7 9867 9F13 4E94 4E92 4F0D 5348 - 5449 543E 5A2F 5F8C 5FA1 609F 68A7 6A8E - 745A 7881 8A9E 8AA4 8B77 9190 4E5E 9BC9 - 4EA4 4F7C 4FAF 5019 5016 5149 516C 529F - 52B9 52FE 539A 53E3 5411 -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 8D40 - srcEnd = 8DFC - mappingOffset = 0457 - Mapping = - 540E 5589 5751 57A2 597D 5B54 5B5D 5B8F - 5DE5 5DE7 5DF7 5E78 5E83 5E9A 5EB7 5F18 - 6052 614C 6297 62D8 63A7 653B 6602 6643 - 66F4 676D 6821 6897 69CB 6C5F 6D2A 6D69 - 6E2F 6E9D 7532 7687 786C 7A3F 7CE0 7D05 - 7D18 7D5E 7DB1 8015 8003 80AF 80B1 8154 - 818F 822A 8352 884C 8861 8B1B 8CA2 8CFC - 90CA 9175 9271 783F 92FC 95A4 964D FFFD - 9805 9999 9AD8 9D3B 525B 52AB 53F7 5408 - 58D5 62F7 6FE0 8C6A 8F5F 9EB9 514B 523B - 544A 56FD 7A40 9177 9D60 9ED2 7344 6F09 - 8170 7511 5FFD 60DA 9AA8 72DB 8FBC 6B64 - 9803 4ECA 56F0 5764 58BE 5A5A 6068 61C7 - 660F 6606 6839 68B1 6DF7 75D5 7D3A 826E - 9B42 4E9B 4F50 53C9 5506 5D6F 5DE6 5DEE - 67FB 6C99 7473 7802 8A50 9396 88DF 5750 - 5EA7 632B 50B5 50AC 518D 6700 54C9 585E - 59BB 5BB0 5F69 624D 63A1 683D 6B73 6E08 - 707D 91C7 7280 7815 7826 796D 658E 7D30 - 83DC 88C1 8F09 969B 5264 5728 6750 7F6A - 8CA1 51B4 5742 962A 583A 698A 80B4 54B2 - 5D0E 57FC 7895 9DFA 4F5C 524A 548B 643E - 6628 6714 67F5 7A84 7B56 7D22 932F 685C - 9BAD 7B39 5319 518A 5237 -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 8E40 - srcEnd = 8EFC - mappingOffset = 0514 - Mapping = - 5BDF 62F6 64AE 64E6 672D 6BBA 85A9 96D1 - 7690 9BD6 634C 9306 9BAB 76BF 6652 4E09 - 5098 53C2 5C71 60E8 6492 6563 685F 71E6 - 73CA 7523 7B97 7E82 8695 8B83 8CDB 9178 - 9910 65AC 66AB 6B8B 4ED5 4ED4 4F3A 4F7F - 523A 53F8 53F2 55E3 56DB 58EB 59CB 59C9 - 59FF 5B50 5C4D 5E02 5E2B 5FD7 601D 6307 - 652F 5B5C 65AF 65BD 65E8 679D 6B62 FFFD - 6B7B 6C0F 7345 7949 79C1 7CF8 7D19 7D2B - 80A2 8102 81F3 8996 8A5E 8A69 8A66 8A8C - 8AEE 8CC7 8CDC 96CC 98FC 6B6F 4E8B 4F3C - 4F8D 5150 5B57 5BFA 6148 6301 6642 6B21 - 6ECB 6CBB 723E 74BD 75D4 78C1 793A 800C - 8033 81EA 8494 8F9E 6C50 9E7F 5F0F 8B58 - 9D2B 7AFA 8EF8 5B8D 96EB 4E03 53F1 57F7 - 5931 5AC9 5BA4 6089 6E7F 6F06 75BE 8CEA - 5B9F 8500 7BE0 5072 67F4 829D 5C61 854A - 7E1E 820E 5199 5C04 6368 8D66 659C 716E - 793E 7D17 8005 8B1D 8ECA 906E 86C7 90AA - 501F 52FA 5C3A 6753 707C 7235 914C 91C8 - 932B 82E5 5BC2 5F31 60F9 4E3B 53D6 5B88 - 624B 6731 6B8A 72E9 73E0 7A2E 816B 8DA3 - 9152 9996 5112 53D7 546A 5BFF 6388 6A39 - 7DAC 9700 56DA 53CE 5468 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 8F40 - srcEnd = 8FFC - mappingOffset = 05D1 - Mapping = - 5B97 5C31 5DDE 4FEE 6101 62FE 6D32 79C0 - 79CB 7D42 7E4D 7FD2 81ED 821F 8490 8846 - 8972 8B90 8E74 8F2F 9031 914B 916C 96C6 - 919C 4EC0 4F4F 5145 5341 5F93 620E 67D4 - 6C41 6E0B 7363 7E26 91CD 9283 53D4 5919 - 5BBF 6DD1 795D 7E2E 7C9B 587E 719F 51FA - 8853 8FF0 4FCA 5CFB 6625 77AC 7AE3 821C - 99FF 51C6 5FAA 65EC 696F 6B89 6DF3 FFFD - 6E96 6F64 76FE 7D14 5DE1 9075 9187 9806 - 51E6 521D 6240 6691 66D9 6E1A 5EB6 7DD2 - 7F72 66F8 85AF 85F7 8AF8 52A9 53D9 5973 - 5E8F 5F90 6055 92E4 9664 50B7 511F 52DD - 5320 5347 53EC 54E8 5546 5531 5617 5968 - 59BE 5A3C 5BB5 5C06 5C0F 5C11 5C1A 5E84 - 5E8A 5EE0 5F70 627F 6284 62DB 638C 6377 - 6607 660C 662D 6676 677E 68A2 6A1F 6A35 - 6CBC 6D88 6E09 6E58 713C 7126 7167 75C7 - 7701 785D 7901 7965 79F0 7AE0 7B11 7CA7 - 7D39 8096 83D6 848B 8549 885D 88F3 8A1F - 8A3C 8A54 8A73 8C61 8CDE 91A4 9266 937E - 9418 969C 9798 4E0A 4E08 4E1E 4E57 5197 - 5270 57CE 5834 58CC 5B22 5E38 60C5 64FE - 6761 6756 6D44 72B6 7573 7A63 84B8 8B72 - 91B8 9320 5631 57F4 98FE -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 9040 - srcEnd = 90FC - mappingOffset = 068E - Mapping = - 62ED 690D 6B96 71ED 7E54 8077 8272 89E6 - 98DF 8755 8FB1 5C3B 4F38 4FE1 4FB5 5507 - 5A20 5BDD 5BE9 5FC3 614E 632F 65B0 664B - 68EE 699B 6D78 6DF1 7533 75B9 771F 795E - 79E6 7D33 81E3 82AF 85AA 89AA 8A3A 8EAB - 8F9B 9032 91DD 9707 4EBA 4EC1 5203 5875 - 58EC 5C0B 751A 5C3D 814E 8A0A 8FC5 9663 - 976D 7B25 8ACF 9808 9162 56F3 53A8 FFFD - 9017 5439 5782 5E25 63A8 6C34 708A 7761 - 7C8B 7FE0 8870 9042 9154 9310 9318 968F - 745E 9AC4 5D07 5D69 6570 67A2 8DA8 96DB - 636E 6749 6919 83C5 9817 96C0 88FE 6F84 - 647A 5BF8 4E16 702C 755D 662F 51C4 5236 - 52E2 59D3 5F81 6027 6210 653F 6574 661F - 6674 68F2 6816 6B63 6E05 7272 751F 76DB - 7CBE 8056 58F0 88FD 897F 8AA0 8A93 8ACB - 901D 9192 9752 9759 6589 7A0E 8106 96BB - 5E2D 60DC 621A 65A5 6614 6790 77F3 7A4D - 7C4D 7E3E 810A 8CAC 8D64 8DE1 8E5F 78A9 - 5207 62D9 63A5 6442 6298 8A2D 7A83 7BC0 - 8AAC 96EA 7D76 820C 8749 4ED9 5148 5343 - 5360 5BA3 5C02 5C16 5DDD 6226 6247 64B0 - 6813 6834 6CC9 6D45 6D17 67D3 6F5C 714E - 717D 65CB 7A7F 7BAD 7DDA -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 9140 - srcEnd = 91FC - mappingOffset = 074B - Mapping = - 7E4A 7FA8 817A 821B 8239 85A6 8A6E 8CCE - 8DF5 9078 9077 92AD 9291 9583 9BAE 524D - 5584 6F38 7136 5168 7985 7E55 81B3 7CCE - 564C 5851 5CA8 63AA 66FE 66FD 695A 72D9 - 758F 758E 790E 7956 79DF 7C97 7D20 7D44 - 8607 8A34 963B 9061 9F20 50E7 5275 53CC - 53E2 5009 55AA 58EE 594F 723D 5B8B 5C64 - 531D 60E3 60F3 635C 6383 633F 63BB FFFD - 64CD 65E9 66F9 5DE3 69CD 69FD 6F15 71E5 - 4E89 75E9 76F8 7A93 7CDF 7DCF 7D9C 8061 - 8349 8358 846C 84BC 85FB 88C5 8D70 9001 - 906D 9397 971C 9A12 50CF 5897 618E 81D3 - 8535 8D08 9020 4FC3 5074 5247 5373 606F - 6349 675F 6E2C 8DB3 901F 4FD7 5C5E 8CCA - 65CF 7D9A 5352 8896 5176 63C3 5B58 5B6B - 5C0A 640D 6751 905C 4ED6 591A 592A 6C70 - 8A51 553E 5815 59A5 60F0 6253 67C1 8235 - 6955 9640 99C4 9A28 4F53 5806 5BFE 8010 - 5CB1 5E2F 5F85 6020 614B 6234 66FF 6CF0 - 6EDE 80CE 817F 82D4 888B 8CB8 9000 902E - 968A 9EDB 9BDB 4EE3 53F0 5927 7B2C 918D - 984C 9DF9 6EDD 7027 5353 5544 5B85 6258 - 629E 62D3 6CA2 6FEF 7422 8A17 9438 6FC1 - 8AFE 8338 51E7 86F8 53EA -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 9240 - srcEnd = 92FC - mappingOffset = 0808 - Mapping = - 53E9 4F46 9054 8FB0 596A 8131 5DFD 7AEA - 8FBF 68DA 8C37 72F8 9C48 6A3D 8AB0 4E39 - 5358 5606 5766 62C5 63A2 65E6 6B4E 6DE1 - 6E5B 70AD 77ED 7AEF 7BAA 7DBB 803D 80C6 - 86CB 8A95 935B 56E3 58C7 5F3E 65AD 6696 - 6A80 6BB5 7537 8AC7 5024 77E5 5730 5F1B - 6065 667A 6C60 75F4 7A1A 7F6E 81F4 8718 - 9045 99B3 7BC9 755C 7AF9 7B51 84C4 FFFD - 9010 79E9 7A92 8336 5AE1 7740 4E2D 4EF2 - 5B99 5FE0 62BD 663C 67F1 6CE8 866B 8877 - 8A3B 914E 92F3 99D0 6A17 7026 732A 82E7 - 8457 8CAF 4E01 5146 51CB 558B 5BF5 5E16 - 5E33 5E81 5F14 5F35 5F6B 5FB4 61F2 6311 - 66A2 671D 6F6E 7252 753A 773A 8074 8139 - 8178 8776 8ABF 8ADC 8D85 8DF3 929A 9577 - 9802 9CE5 52C5 6357 76F4 6715 6C88 73CD - 8CC3 93AE 9673 6D25 589C 690E 69CC 8FFD - 939A 75DB 901A 585A 6802 63B4 69FB 4F43 - 6F2C 67D8 8FBB 8526 7DB4 9354 693F 6F70 - 576A 58F7 5B2C 7D2C 722A 540A 91E3 9DB4 - 4EAD 4F4E 505C 5075 5243 8C9E 5448 5824 - 5B9A 5E1D 5E95 5EAD 5EF7 5F1F 608C 62B5 - 633A 63D0 68AF 6C40 7887 798E 7A0B 7DE0 - 8247 8A02 8AE6 8E44 9013 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 9340 - srcEnd = 93FC - mappingOffset = 08C5 - Mapping = - 90B8 912D 91D8 9F0E 6CE5 6458 64E2 6575 - 6EF4 7684 7B1B 9069 93D1 6EBA 54F2 5FB9 - 64A4 8F4D 8FED 9244 5178 586B 5929 5C55 - 5E97 6DFB 7E8F 751C 8CBC 8EE2 985B 70B9 - 4F1D 6BBF 6FB1 7530 96FB 514E 5410 5835 - 5857 59AC 5C60 5F92 6597 675C 6E21 767B - 83DF 8CED 9014 90FD 934D 7825 783A 52AA - 5EA6 571F 5974 6012 5012 515A 51AC FFFD - 51CD 5200 5510 5854 5858 5957 5B95 5CF6 - 5D8B 60BC 6295 642D 6771 6843 68BC 68DF - 76D7 6DD8 6E6F 6D9B 706F 71C8 5F53 75D8 - 7977 7B49 7B54 7B52 7CD6 7D71 5230 8463 - 8569 85E4 8A0E 8B04 8C46 8E0F 9003 900F - 9419 9676 982D 9A30 95D8 50CD 52D5 540C - 5802 5C0E 61A7 649E 6D1E 77B3 7AE5 80F4 - 8404 9053 9285 5CE0 9D07 533F 5F97 5FB3 - 6D9C 7279 7763 79BF 7BE4 6BD2 72EC 8AAD - 6803 6A61 51F8 7A81 6934 5C4A 9CF6 82EB - 5BC5 9149 701E 5678 5C6F 60C7 6566 6C8C - 8C5A 9041 9813 5451 66C7 920D 5948 90A3 - 5185 4E4D 51EA 8599 8B0E 7058 637A 934B - 6962 99B4 7E04 7577 5357 6960 8EDF 96E3 - 6C5D 4E8C 5C3C 5F10 8FE9 5302 8CD1 8089 - 8679 5EFF 65E5 4E73 5165 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 9440 - srcEnd = 94FC - mappingOffset = 0982 - Mapping = - 5982 5C3F 97EE 4EFB 598A 5FCD 8A8D 6FE1 - 79B0 7962 5BE7 8471 732B 71B1 5E74 5FF5 - 637B 649A 71C3 7C98 4E43 5EFC 4E4B 57DC - 56A2 60A9 6FC3 7D0D 80FD 8133 81BF 8FB2 - 8997 86A4 5DF4 628A 64AD 8987 6777 6CE2 - 6D3E 7436 7834 5A46 7F75 82AD 99AC 4FF3 - 5EC3 62DD 6392 6557 676F 76C3 724C 80CC - 80BA 8F29 914D 500D 57F9 5A92 6885 FFFD - 6973 7164 72FD 8CB7 58F2 8CE0 966A 9019 - 877F 79E4 77E7 8429 4F2F 5265 535A 62CD - 67CF 6CCA 767D 7B94 7C95 8236 8584 8FEB - 66DD 6F20 7206 7E1B 83AB 99C1 9EA6 51FD - 7BB1 7872 7BB8 8087 7B48 6AE8 5E61 808C - 7551 7560 516B 9262 6E8C 767A 9197 9AEA - 4F10 7F70 629C 7B4F 95A5 9CE9 567A 5859 - 86E4 96BC 4F34 5224 534A 53CD 53DB 5E06 - 642C 6591 677F 6C3E 6C4E 7248 72AF 73ED - 7554 7E41 822C 85E9 8CA9 7BC4 91C6 7169 - 9812 98EF 633D 6669 756A 76E4 78D0 8543 - 86EE 532A 5351 5426 5983 5E87 5F7C 60B2 - 6249 6279 62AB 6590 6BD4 6CCC 75B2 76AE - 7891 79D8 7DCB 7F77 80A5 88AB 8AB9 8CBB - 907F 975E 98DB 6A0B 7C38 5099 5C3E 5FAE - 6787 6BD8 7435 7709 7F8E -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 9540 - srcEnd = 95FC - mappingOffset = 0A3F - Mapping = - 9F3B 67CA 7A17 5339 758B 9AED 5F66 819D - 83F1 8098 5F3C 5FC5 7562 7B46 903C 6867 - 59EB 5A9B 7D10 767E 8B2C 4FF5 5F6A 6A19 - 6C37 6F02 74E2 7968 8868 8A55 8C79 5EDF - 63CF 75C5 79D2 82D7 9328 92F2 849C 86ED - 9C2D 54C1 5F6C 658C 6D5C 7015 8CA7 8CD3 - 983B 654F 74F6 4E0D 4ED8 57E0 592B 5A66 - 5BCC 51A8 5E03 5E9C 6016 6276 6577 FFFD - 65A7 666E 6D6E 7236 7B26 8150 819A 8299 - 8B5C 8CA0 8CE6 8D74 961C 9644 4FAE 64AB - 6B66 821E 8461 856A 90E8 5C01 6953 98A8 - 847A 8557 4F0F 526F 5FA9 5E45 670D 798F - 8179 8907 8986 6DF5 5F17 6255 6CB8 4ECF - 7269 9B92 5206 543B 5674 58B3 61A4 626E - 711A 596E 7C89 7CDE 7D1B 96F0 6587 805E - 4E19 4F75 5175 5840 5E63 5E73 5F0A 67C4 - 4E26 853D 9589 965B 7C73 9801 50FB 58C1 - 7656 78A7 5225 77A5 8511 7B86 504F 5909 - 7247 7BC7 7DE8 8FBA 8FD4 904D 4FBF 52C9 - 5A29 5F01 97AD 4FDD 8217 92EA 5703 6355 - 6B69 752B 88DC 8F14 7A42 52DF 5893 6155 - 620A 66AE 6BCD 7C3F 83E9 5023 4FF8 5305 - 5446 5831 5949 5B9D 5CF0 5CEF 5D29 5E96 - 62B1 6367 653E 65B9 670B -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 9640 - srcEnd = 96FC - mappingOffset = 0AFC - Mapping = - 6CD5 6CE1 70F9 7832 7E2B 80DE 82B3 840C - 84EC 8702 8912 8A2A 8C4A 90A6 92D2 98FD - 9CF3 9D6C 4E4F 4EA1 508D 5256 574A 59A8 - 5E3D 5FD8 5FD9 623F 66B4 671B 67D0 68D2 - 5192 7D21 80AA 81A8 8B00 8C8C 8CBF 927E - 9632 5420 982C 5317 50D5 535C 58A8 64B2 - 6734 7267 7766 7A46 91E6 52C3 6CA1 6B86 - 5800 5E4C 5954 672C 7FFB 51E1 76C6 FFFD - 6469 78E8 9B54 9EBB 57CB 59B9 6627 679A - 6BCE 54E9 69D9 5E55 819C 6795 9BAA 67FE - 9C52 685D 4EA6 4FE3 53C8 62B9 672B 6CAB - 8FC4 4FAD 7E6D 9EBF 4E07 6162 6E80 6F2B - 8513 5473 672A 9B45 5DF3 7B95 5CAC 5BC6 - 871C 6E4A 84D1 7A14 8108 5999 7C8D 6C11 - 7720 52D9 5922 7121 725F 77DB 9727 9D61 - 690B 5A7F 5A18 51A5 540D 547D 660E 76DF - 8FF7 9298 9CF4 59EA 725D 6EC5 514D 68C9 - 7DBF 7DEC 9762 9EBA 6478 6A21 8302 5984 - 5B5F 6BDB 731B 76F2 7DB2 8017 8499 5132 - 6728 9ED9 76EE 6762 52FF 9905 5C24 623B - 7C7E 8CB0 554F 60B6 7D0B 9580 5301 4E5F - 51B6 591C 723A 8036 91CE 5F25 77E2 5384 - 5F79 7D04 85AC 8A33 8E8D 9756 67F3 85AE - 9453 6109 6108 6CB9 7652 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 9740 - srcEnd = 97FC - mappingOffset = 0BB9 - Mapping = - 8AED 8F38 552F 4F51 512A 52C7 53CB 5BA5 - 5E7D 60A0 6182 63D6 6709 67DA 6E67 6D8C - 7336 7337 7531 7950 88D5 8A98 904A 9091 - 90F5 96C4 878D 5915 4E88 4F59 4E0E 8A89 - 8F3F 9810 50AD 5E7C 5996 5BB9 5EB8 63DA - 63FA 64C1 66DC 694A 69D8 6D0B 6EB6 7194 - 7528 7AAF 7F8A 8000 8449 84C9 8981 8B21 - 8E0A 9065 967D 990A 617E 6291 6B32 FFFD - 6C83 6D74 7FCC 7FFC 6DC0 7F85 87BA 88F8 - 6765 83B1 983C 96F7 6D1B 7D61 843D 916A - 4E71 5375 5D50 6B04 6FEB 85CD 862D 89A7 - 5229 540F 5C65 674E 68A8 7406 7483 75E2 - 88CF 88E1 91CC 96E2 9678 5F8B 7387 7ACB - 844E 63A0 7565 5289 6D41 6E9C 7409 7559 - 786B 7C92 9686 7ADC 9F8D 4FB6 616E 65C5 - 865C 4E86 4EAE 50DA 4E21 51CC 5BEE 6599 - 6881 6DBC 731F 7642 77AD 7A1C 7CE7 826F - 8AD2 907C 91CF 9675 9818 529B 7DD1 502B - 5398 6797 6DCB 71D0 7433 81E8 8F2A 96A3 - 9C57 9E9F 7460 5841 6D99 7D2F 985E 4EE4 - 4F36 4F8B 51B7 52B1 5DBA 601C 73B2 793C - 82D3 9234 96B7 96F6 970A 9E97 9F62 66A6 - 6B74 5217 52A3 70C8 88C2 5EC9 604B 6190 - 6F23 7149 7C3E 7DF4 806F -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 9840 - srcEnd = 9872 - mappingOffset = 0C76 - Mapping = - 84EE 9023 932C 5442 9B6F 6AD3 7089 8CC2 - 8DEF 9732 52B4 5A41 5ECA 5F04 6717 697C - 6994 6D6A 6F0F 7262 72FC 7BED 8001 807E - 874B 90CE 516D 9E93 7984 808B 9332 8AD6 - 502D 548C 8A71 6B6A 8CC4 8107 60D1 67A0 - 9DF2 4E99 4E98 9C10 8A6B 85C1 8568 6900 - 6E7E 7897 8155 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 989F - srcEnd = 98FC - mappingOffset = 0CA9 - Mapping = - 5F0C 4E10 4E15 4E2A 4E31 4E36 4E3C 4E3F - 4E42 4E56 4E58 4E82 4E85 8C6B 4E8A 8212 - 5F0D 4E8E 4E9E 4E9F 4EA0 4EA2 4EB0 4EB3 - 4EB6 4ECE 4ECD 4EC4 4EC6 4EC2 4ED7 4EDE - 4EED 4EDF 4EF7 4F09 4F5A 4F30 4F5B 4F5D - 4F57 4F47 4F76 4F88 4F8F 4F98 4F7B 4F69 - 4F70 4F91 4F6F 4F86 4F96 5118 4FD4 4FDF - 4FCE 4FD8 4FDB 4FD1 4FDA 4FD0 4FE4 4FE5 - 501A 5028 5014 502A 5025 5005 4F1C 4FF6 - 5021 5029 502C 4FFE 4FEF 5011 5006 5043 - 5047 6703 5055 5050 5048 505A 5056 506C - 5078 5080 509A 5085 50B4 50B2 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 9940 - srcEnd = 99FC - mappingOffset = 0D07 - Mapping = - 50C9 50CA 50B3 50C2 50D6 50DE 50E5 50ED - 50E3 50EE 50F9 50F5 5109 5101 5102 5116 - 5115 5114 511A 5121 513A 5137 513C 513B - 513F 5140 5152 514C 5154 5162 7AF8 5169 - 516A 516E 5180 5182 56D8 518C 5189 518F - 5191 5193 5195 5196 51A4 51A6 51A2 51A9 - 51AA 51AB 51B3 51B1 51B2 51B0 51B5 51BD - 51C5 51C9 51DB 51E0 8655 51E9 51ED FFFD - 51F0 51F5 51FE 5204 520B 5214 520E 5227 - 522A 522E 5233 5239 524F 5244 524B 524C - 525E 5254 526A 5274 5269 5273 527F 527D - 528D 5294 5292 5271 5288 5291 8FA8 8FA7 - 52AC 52AD 52BC 52B5 52C1 52CD 52D7 52DE - 52E3 52E6 98ED 52E0 52F3 52F5 52F8 52F9 - 5306 5308 7538 530D 5310 530F 5315 531A - 5323 532F 5331 5333 5338 5340 5346 5345 - 4E17 5349 534D 51D6 535E 5369 536E 5918 - 537B 5377 5382 5396 53A0 53A6 53A5 53AE - 53B0 53B6 53C3 7C12 96D9 53DF 66FC 71EE - 53EE 53E8 53ED 53FA 5401 543D 5440 542C - 542D 543C 542E 5436 5429 541D 544E 548F - 5475 548E 545F 5471 5477 5470 5492 547B - 5480 5476 5484 5490 5486 54C7 54A2 54B8 - 54A5 54AC 54C4 54C8 54A8 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 9A40 - srcEnd = 9AFC - mappingOffset = 0DC4 - Mapping = - 54AB 54C2 54A4 54BE 54BC 54D8 54E5 54E6 - 550F 5514 54FD 54EE 54ED 54FA 54E2 5539 - 5540 5563 554C 552E 555C 5545 5556 5557 - 5538 5533 555D 5599 5580 54AF 558A 559F - 557B 557E 5598 559E 55AE 557C 5583 55A9 - 5587 55A8 55DA 55C5 55DF 55C4 55DC 55E4 - 55D4 5614 55F7 5616 55FE 55FD 561B 55F9 - 564E 5650 71DF 5634 5636 5632 5638 FFFD - 566B 5664 562F 566C 566A 5686 5680 568A - 56A0 5694 568F 56A5 56AE 56B6 56B4 56C2 - 56BC 56C1 56C3 56C0 56C8 56CE 56D1 56D3 - 56D7 56EE 56F9 5700 56FF 5704 5709 5708 - 570B 570D 5713 5718 5716 55C7 571C 5726 - 5737 5738 574E 573B 5740 574F 5769 57C0 - 5788 5761 577F 5789 5793 57A0 57B3 57A4 - 57AA 57B0 57C3 57C6 57D4 57D2 57D3 580A - 57D6 57E3 580B 5819 581D 5872 5821 5862 - 584B 5870 6BC0 5852 583D 5879 5885 58B9 - 589F 58AB 58BA 58DE 58BB 58B8 58AE 58C5 - 58D3 58D1 58D7 58D9 58D8 58E5 58DC 58E4 - 58DF 58EF 58FA 58F9 58FB 58FC 58FD 5902 - 590A 5910 591B 68A6 5925 592C 592D 5932 - 5938 593E 7AD2 5955 5950 594E 595A 5958 - 5962 5960 5967 596C 5969 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 9B40 - srcEnd = 9BFC - mappingOffset = 0E81 - Mapping = - 5978 5981 599D 4F5E 4FAB 59A3 59B2 59C6 - 59E8 59DC 598D 59D9 59DA 5A25 5A1F 5A11 - 5A1C 5A09 5A1A 5A40 5A6C 5A49 5A35 5A36 - 5A62 5A6A 5A9A 5ABC 5ABE 5ACB 5AC2 5ABD - 5AE3 5AD7 5AE6 5AE9 5AD6 5AFA 5AFB 5B0C - 5B0B 5B16 5B32 5AD0 5B2A 5B36 5B3E 5B43 - 5B45 5B40 5B51 5B55 5B5A 5B5B 5B65 5B69 - 5B70 5B73 5B75 5B78 6588 5B7A 5B80 FFFD - 5B83 5BA6 5BB8 5BC3 5BC7 5BC9 5BD4 5BD0 - 5BE4 5BE6 5BE2 5BDE 5BE5 5BEB 5BF0 5BF6 - 5BF3 5C05 5C07 5C08 5C0D 5C13 5C20 5C22 - 5C28 5C38 5C39 5C41 5C46 5C4E 5C53 5C50 - 5C4F 5B71 5C6C 5C6E 4E62 5C76 5C79 5C8C - 5C91 5C94 599B 5CAB 5CBB 5CB6 5CBC 5CB7 - 5CC5 5CBE 5CC7 5CD9 5CE9 5CFD 5CFA 5CED - 5D8C 5CEA 5D0B 5D15 5D17 5D5C 5D1F 5D1B - 5D11 5D14 5D22 5D1A 5D19 5D18 5D4C 5D52 - 5D4E 5D4B 5D6C 5D73 5D76 5D87 5D84 5D82 - 5DA2 5D9D 5DAC 5DAE 5DBD 5D90 5DB7 5DBC - 5DC9 5DCD 5DD3 5DD2 5DD6 5DDB 5DEB 5DF2 - 5DF5 5E0B 5E1A 5E19 5E11 5E1B 5E36 5E37 - 5E44 5E43 5E40 5E4E 5E57 5E54 5E5F 5E62 - 5E64 5E47 5E75 5E76 5E7A 9EBC 5E7F 5EA0 - 5EC1 5EC2 5EC8 5ED0 5ECF -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 9C40 - srcEnd = 9CFC - mappingOffset = 0F3E - Mapping = - 5ED6 5EE3 5EDD 5EDA 5EDB 5EE2 5EE1 5EE8 - 5EE9 5EEC 5EF1 5EF3 5EF0 5EF4 5EF8 5EFE - 5F03 5F09 5F5D 5F5C 5F0B 5F11 5F16 5F29 - 5F2D 5F38 5F41 5F48 5F4C 5F4E 5F2F 5F51 - 5F56 5F57 5F59 5F61 5F6D 5F73 5F77 5F83 - 5F82 5F7F 5F8A 5F88 5F91 5F87 5F9E 5F99 - 5F98 5FA0 5FA8 5FAD 5FBC 5FD6 5FFB 5FE4 - 5FF8 5FF1 5FDD 60B3 5FFF 6021 6060 FFFD - 6019 6010 6029 600E 6031 601B 6015 602B - 6026 600F 603A 605A 6041 606A 6077 605F - 604A 6046 604D 6063 6043 6064 6042 606C - 606B 6059 6081 608D 60E7 6083 609A 6084 - 609B 6096 6097 6092 60A7 608B 60E1 60B8 - 60E0 60D3 60B4 5FF0 60BD 60C6 60B5 60D8 - 614D 6115 6106 60F6 60F7 6100 60F4 60FA - 6103 6121 60FB 60F1 610D 610E 6147 613E - 6128 6127 614A 613F 613C 612C 6134 613D - 6142 6144 6173 6177 6158 6159 615A 616B - 6174 616F 6165 6171 615F 615D 6153 6175 - 6199 6196 6187 61AC 6194 619A 618A 6191 - 61AB 61AE 61CC 61CA 61C9 61F7 61C8 61C3 - 61C6 61BA 61CB 7F79 61CD 61E6 61E3 61F6 - 61FA 61F4 61FF 61FD 61FC 61FE 6200 6208 - 6209 620D 620C 6214 621B -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 9D40 - srcEnd = 9DFC - mappingOffset = 0FFB - Mapping = - 621E 6221 622A 622E 6230 6232 6233 6241 - 624E 625E 6263 625B 6260 6268 627C 6282 - 6289 627E 6292 6293 6296 62D4 6283 6294 - 62D7 62D1 62BB 62CF 62FF 62C6 64D4 62C8 - 62DC 62CC 62CA 62C2 62C7 629B 62C9 630C - 62EE 62F1 6327 6302 6308 62EF 62F5 6350 - 633E 634D 641C 634F 6396 638E 6380 63AB - 6376 63A3 638F 6389 639F 63B5 636B FFFD - 6369 63BE 63E9 63C0 63C6 63E3 63C9 63D2 - 63F6 63C4 6416 6434 6406 6413 6426 6436 - 651D 6417 6428 640F 6467 646F 6476 644E - 652A 6495 6493 64A5 64A9 6488 64BC 64DA - 64D2 64C5 64C7 64BB 64D8 64C2 64F1 64E7 - 8209 64E0 64E1 62AC 64E3 64EF 652C 64F6 - 64F4 64F2 64FA 6500 64FD 6518 651C 6505 - 6524 6523 652B 6534 6535 6537 6536 6538 - 754B 6548 6556 6555 654D 6558 655E 655D - 6572 6578 6582 6583 8B8A 659B 659F 65AB - 65B7 65C3 65C6 65C1 65C4 65CC 65D2 65DB - 65D9 65E0 65E1 65F1 6772 660A 6603 65FB - 6773 6635 6636 6634 661C 664F 6644 6649 - 6641 665E 665D 6664 6667 6668 665F 6662 - 6670 6683 6688 668E 6689 6684 6698 669D - 66C1 66B9 66C9 66BE 66BC -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 9E40 - srcEnd = 9EFC - mappingOffset = 10B8 - Mapping = - 66C4 66B8 66D6 66DA 66E0 663F 66E6 66E9 - 66F0 66F5 66F7 670F 6716 671E 6726 6727 - 9738 672E 673F 6736 6741 6738 6737 6746 - 675E 6760 6759 6763 6764 6789 6770 67A9 - 677C 676A 678C 678B 67A6 67A1 6785 67B7 - 67EF 67B4 67EC 67B3 67E9 67B8 67E4 67DE - 67DD 67E2 67EE 67B9 67CE 67C6 67E7 6A9C - 681E 6846 6829 6840 684D 6832 684E FFFD - 68B3 682B 6859 6863 6877 687F 689F 688F - 68AD 6894 689D 689B 6883 6AAE 68B9 6874 - 68B5 68A0 68BA 690F 688D 687E 6901 68CA - 6908 68D8 6922 6926 68E1 690C 68CD 68D4 - 68E7 68D5 6936 6912 6904 68D7 68E3 6925 - 68F9 68E0 68EF 6928 692A 691A 6923 6921 - 68C6 6979 6977 695C 6978 696B 6954 697E - 696E 6939 6974 693D 6959 6930 6961 695E - 695D 6981 696A 69B2 69AE 69D0 69BF 69C1 - 69D3 69BE 69CE 5BE8 69CA 69DD 69BB 69C3 - 69A7 6A2E 6991 69A0 699C 6995 69B4 69DE - 69E8 6A02 6A1B 69FF 6B0A 69F9 69F2 69E7 - 6A05 69B1 6A1E 69ED 6A14 69EB 6A0A 6A12 - 6AC1 6A23 6A13 6A44 6A0C 6A72 6A36 6A78 - 6A47 6A62 6A59 6A66 6A48 6A38 6A22 6A90 - 6A8D 6AA0 6A84 6AA2 6AA3 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 9F40 - srcEnd = 9FFC - mappingOffset = 1175 - Mapping = - 6A97 8617 6ABB 6AC3 6AC2 6AB8 6AB3 6AAC - 6ADE 6AD1 6ADF 6AAA 6ADA 6AEA 6AFB 6B05 - 8616 6AFA 6B12 6B16 9B31 6B1F 6B38 6B37 - 76DC 6B39 98EE 6B47 6B43 6B49 6B50 6B59 - 6B54 6B5B 6B5F 6B61 6B78 6B79 6B7F 6B80 - 6B84 6B83 6B8D 6B98 6B95 6B9E 6BA4 6BAA - 6BAB 6BAF 6BB2 6BB1 6BB3 6BB7 6BBC 6BC6 - 6BCB 6BD3 6BDF 6BEC 6BEB 6BF3 6BEF FFFD - 9EBE 6C08 6C13 6C14 6C1B 6C24 6C23 6C5E - 6C55 6C62 6C6A 6C82 6C8D 6C9A 6C81 6C9B - 6C7E 6C68 6C73 6C92 6C90 6CC4 6CF1 6CD3 - 6CBD 6CD7 6CC5 6CDD 6CAE 6CB1 6CBE 6CBA - 6CDB 6CEF 6CD9 6CEA 6D1F 884D 6D36 6D2B - 6D3D 6D38 6D19 6D35 6D33 6D12 6D0C 6D63 - 6D93 6D64 6D5A 6D79 6D59 6D8E 6D95 6FE4 - 6D85 6DF9 6E15 6E0A 6DB5 6DC7 6DE6 6DB8 - 6DC6 6DEC 6DDE 6DCC 6DE8 6DD2 6DC5 6DFA - 6DD9 6DE4 6DD5 6DEA 6DEE 6E2D 6E6E 6E2E - 6E19 6E72 6E5F 6E3E 6E23 6E6B 6E2B 6E76 - 6E4D 6E1F 6E43 6E3A 6E4E 6E24 6EFF 6E1D - 6E38 6E82 6EAA 6E98 6EC9 6EB7 6ED3 6EBD - 6EAF 6EC4 6EB2 6ED4 6ED5 6E8F 6EA5 6EC2 - 6E9F 6F41 6F11 704C 6EEC 6EF8 6EFE 6F3F - 6EF2 6F31 6EEF 6F32 6ECC -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = E040 - srcEnd = E0FC - mappingOffset = 1232 - Mapping = - 6F3E 6F13 6EF7 6F86 6F7A 6F78 6F81 6F80 - 6F6F 6F5B 6FF3 6F6D 6F82 6F7C 6F58 6F8E - 6F91 6FC2 6F66 6FB3 6FA3 6FA1 6FA4 6FB9 - 6FC6 6FAA 6FDF 6FD5 6FEC 6FD4 6FD8 6FF1 - 6FEE 6FDB 7009 700B 6FFA 7011 7001 700F - 6FFE 701B 701A 6F74 701D 7018 701F 7030 - 703E 7032 7051 7063 7099 7092 70AF 70F1 - 70AC 70B8 70B3 70AE 70DF 70CB 70DD FFFD - 70D9 7109 70FD 711C 7119 7165 7155 7188 - 7166 7162 714C 7156 716C 718F 71FB 7184 - 7195 71A8 71AC 71D7 71B9 71BE 71D2 71C9 - 71D4 71CE 71E0 71EC 71E7 71F5 71FC 71F9 - 71FF 720D 7210 721B 7228 722D 722C 7230 - 7232 723B 723C 723F 7240 7246 724B 7258 - 7274 727E 7282 7281 7287 7292 7296 72A2 - 72A7 72B9 72B2 72C3 72C6 72C4 72CE 72D2 - 72E2 72E0 72E1 72F9 72F7 500F 7317 730A - 731C 7316 731D 7334 732F 7329 7325 733E - 734E 734F 9ED8 7357 736A 7368 7370 7378 - 7375 737B 737A 73C8 73B3 73CE 73BB 73C0 - 73E5 73EE 73DE 74A2 7405 746F 7425 73F8 - 7432 743A 7455 743F 745F 7459 7441 745C - 7469 7470 7463 746A 7476 747E 748B 749E - 74A7 74CA 74CF 74D4 73F1 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = E140 - srcEnd = E1FC - mappingOffset = 12EF - Mapping = - 74E0 74E3 74E7 74E9 74EE 74F2 74F0 74F1 - 74F8 74F7 7504 7503 7505 750C 750E 750D - 7515 7513 751E 7526 752C 753C 7544 754D - 754A 7549 755B 7546 755A 7569 7564 7567 - 756B 756D 7578 7576 7586 7587 7574 758A - 7589 7582 7594 759A 759D 75A5 75A3 75C2 - 75B3 75C3 75B5 75BD 75B8 75BC 75B1 75CD - 75CA 75D2 75D9 75E3 75DE 75FE 75FF FFFD - 75FC 7601 75F0 75FA 75F2 75F3 760B 760D - 7609 761F 7627 7620 7621 7622 7624 7634 - 7630 763B 7647 7648 7646 765C 7658 7661 - 7662 7668 7669 766A 7667 766C 7670 7672 - 7676 7678 767C 7680 7683 7688 768B 768E - 7696 7693 7699 769A 76B0 76B4 76B8 76B9 - 76BA 76C2 76CD 76D6 76D2 76DE 76E1 76E5 - 76E7 76EA 862F 76FB 7708 7707 7704 7729 - 7724 771E 7725 7726 771B 7737 7738 7747 - 775A 7768 776B 775B 7765 777F 777E 7779 - 778E 778B 7791 77A0 779E 77B0 77B6 77B9 - 77BF 77BC 77BD 77BB 77C7 77CD 77D7 77DA - 77DC 77E3 77EE 77FC 780C 7812 7926 7820 - 792A 7845 788E 7874 7886 787C 789A 788C - 78A3 78B5 78AA 78AF 78D1 78C6 78CB 78D4 - 78BE 78BC 78C5 78CA 78EC -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = E240 - srcEnd = E2FC - mappingOffset = 13AC - Mapping = - 78E7 78DA 78FD 78F4 7907 7912 7911 7919 - 792C 792B 7940 7960 7957 795F 795A 7955 - 7953 797A 797F 798A 799D 79A7 9F4B 79AA - 79AE 79B3 79B9 79BA 79C9 79D5 79E7 79EC - 79E1 79E3 7A08 7A0D 7A18 7A19 7A20 7A1F - 7980 7A31 7A3B 7A3E 7A37 7A43 7A57 7A49 - 7A61 7A62 7A69 9F9D 7A70 7A79 7A7D 7A88 - 7A97 7A95 7A98 7A96 7AA9 7AC8 7AB0 FFFD - 7AB6 7AC5 7AC4 7ABF 9083 7AC7 7ACA 7ACD - 7ACF 7AD5 7AD3 7AD9 7ADA 7ADD 7AE1 7AE2 - 7AE6 7AED 7AF0 7B02 7B0F 7B0A 7B06 7B33 - 7B18 7B19 7B1E 7B35 7B28 7B36 7B50 7B7A - 7B04 7B4D 7B0B 7B4C 7B45 7B75 7B65 7B74 - 7B67 7B70 7B71 7B6C 7B6E 7B9D 7B98 7B9F - 7B8D 7B9C 7B9A 7B8B 7B92 7B8F 7B5D 7B99 - 7BCB 7BC1 7BCC 7BCF 7BB4 7BC6 7BDD 7BE9 - 7C11 7C14 7BE6 7BE5 7C60 7C00 7C07 7C13 - 7BF3 7BF7 7C17 7C0D 7BF6 7C23 7C27 7C2A - 7C1F 7C37 7C2B 7C3D 7C4C 7C43 7C54 7C4F - 7C40 7C50 7C58 7C5F 7C64 7C56 7C65 7C6C - 7C75 7C83 7C90 7CA4 7CAD 7CA2 7CAB 7CA1 - 7CA8 7CB3 7CB2 7CB1 7CAE 7CB9 7CBD 7CC0 - 7CC5 7CC2 7CD8 7CD2 7CDC 7CE2 9B3B 7CEF - 7CF2 7CF4 7CF6 7CFA 7D06 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = E340 - srcEnd = E3FC - mappingOffset = 1469 - Mapping = - 7D02 7D1C 7D15 7D0A 7D45 7D4B 7D2E 7D32 - 7D3F 7D35 7D46 7D73 7D56 7D4E 7D72 7D68 - 7D6E 7D4F 7D63 7D93 7D89 7D5B 7D8F 7D7D - 7D9B 7DBA 7DAE 7DA3 7DB5 7DC7 7DBD 7DAB - 7E3D 7DA2 7DAF 7DDC 7DB8 7D9F 7DB0 7DD8 - 7DDD 7DE4 7DDE 7DFB 7DF2 7DE1 7E05 7E0A - 7E23 7E21 7E12 7E31 7E1F 7E09 7E0B 7E22 - 7E46 7E66 7E3B 7E35 7E39 7E43 7E37 FFFD - 7E32 7E3A 7E67 7E5D 7E56 7E5E 7E59 7E5A - 7E79 7E6A 7E69 7E7C 7E7B 7E83 7DD5 7E7D - 8FAE 7E7F 7E88 7E89 7E8C 7E92 7E90 7E93 - 7E94 7E96 7E8E 7E9B 7E9C 7F38 7F3A 7F45 - 7F4C 7F4D 7F4E 7F50 7F51 7F55 7F54 7F58 - 7F5F 7F60 7F68 7F69 7F67 7F78 7F82 7F86 - 7F83 7F88 7F87 7F8C 7F94 7F9E 7F9D 7F9A - 7FA3 7FAF 7FB2 7FB9 7FAE 7FB6 7FB8 8B71 - 7FC5 7FC6 7FCA 7FD5 7FD4 7FE1 7FE6 7FE9 - 7FF3 7FF9 98DC 8006 8004 800B 8012 8018 - 8019 801C 8021 8028 803F 803B 804A 8046 - 8052 8058 805A 805F 8062 8068 8073 8072 - 8070 8076 8079 807D 807F 8084 8086 8085 - 809B 8093 809A 80AD 5190 80AC 80DB 80E5 - 80D9 80DD 80C4 80DA 80D6 8109 80EF 80F1 - 811B 8129 8123 812F 814B -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = E440 - srcEnd = E4FC - mappingOffset = 1526 - Mapping = - 968B 8146 813E 8153 8151 80FC 8171 816E - 8165 8166 8174 8183 8188 818A 8180 8182 - 81A0 8195 81A4 81A3 815F 8193 81A9 81B0 - 81B5 81BE 81B8 81BD 81C0 81C2 81BA 81C9 - 81CD 81D1 81D9 81D8 81C8 81DA 81DF 81E0 - 81E7 81FA 81FB 81FE 8201 8202 8205 8207 - 820A 820D 8210 8216 8229 822B 8238 8233 - 8240 8259 8258 825D 825A 825F 8264 FFFD - 8262 8268 826A 826B 822E 8271 8277 8278 - 827E 828D 8292 82AB 829F 82BB 82AC 82E1 - 82E3 82DF 82D2 82F4 82F3 82FA 8393 8303 - 82FB 82F9 82DE 8306 82DC 8309 82D9 8335 - 8334 8316 8332 8331 8340 8339 8350 8345 - 832F 832B 8317 8318 8385 839A 83AA 839F - 83A2 8396 8323 838E 8387 838A 837C 83B5 - 8373 8375 83A0 8389 83A8 83F4 8413 83EB - 83CE 83FD 8403 83D8 840B 83C1 83F7 8407 - 83E0 83F2 840D 8422 8420 83BD 8438 8506 - 83FB 846D 842A 843C 855A 8484 8477 846B - 84AD 846E 8482 8469 8446 842C 846F 8479 - 8435 84CA 8462 84B9 84BF 849F 84D9 84CD - 84BB 84DA 84D0 84C1 84C6 84D6 84A1 8521 - 84FF 84F4 8517 8518 852C 851F 8515 8514 - 84FC 8540 8563 8558 8548 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = E540 - srcEnd = E5FC - mappingOffset = 15E3 - Mapping = - 8541 8602 854B 8555 8580 85A4 8588 8591 - 858A 85A8 856D 8594 859B 85EA 8587 859C - 8577 857E 8590 85C9 85BA 85CF 85B9 85D0 - 85D5 85DD 85E5 85DC 85F9 860A 8613 860B - 85FE 85FA 8606 8622 861A 8630 863F 864D - 4E55 8654 865F 8667 8671 8693 86A3 86A9 - 86AA 868B 868C 86B6 86AF 86C4 86C6 86B0 - 86C9 8823 86AB 86D4 86DE 86E9 86EC FFFD - 86DF 86DB 86EF 8712 8706 8708 8700 8703 - 86FB 8711 8709 870D 86F9 870A 8734 873F - 8737 873B 8725 8729 871A 8760 875F 8778 - 874C 874E 8774 8757 8768 876E 8759 8753 - 8763 876A 8805 87A2 879F 8782 87AF 87CB - 87BD 87C0 87D0 96D6 87AB 87C4 87B3 87C7 - 87C6 87BB 87EF 87F2 87E0 880F 880D 87FE - 87F6 87F7 880E 87D2 8811 8816 8815 8822 - 8821 8831 8836 8839 8827 883B 8844 8842 - 8852 8859 885E 8862 886B 8881 887E 889E - 8875 887D 88B5 8872 8882 8897 8892 88AE - 8899 88A2 888D 88A4 88B0 88BF 88B1 88C3 - 88C4 88D4 88D8 88D9 88DD 88F9 8902 88FC - 88F4 88E8 88F2 8904 890C 890A 8913 8943 - 891E 8925 892A 892B 8941 8944 893B 8936 - 8938 894C 891D 8960 895E -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = E640 - srcEnd = E6FC - mappingOffset = 16A0 - Mapping = - 8966 8964 896D 896A 896F 8974 8977 897E - 8983 8988 898A 8993 8998 89A1 89A9 89A6 - 89AC 89AF 89B2 89BA 89BD 89BF 89C0 89DA - 89DC 89DD 89E7 89F4 89F8 8A03 8A16 8A10 - 8A0C 8A1B 8A1D 8A25 8A36 8A41 8A5B 8A52 - 8A46 8A48 8A7C 8A6D 8A6C 8A62 8A85 8A82 - 8A84 8AA8 8AA1 8A91 8AA5 8AA6 8A9A 8AA3 - 8AC4 8ACD 8AC2 8ADA 8AEB 8AF3 8AE7 FFFD - 8AE4 8AF1 8B14 8AE0 8AE2 8AF7 8ADE 8ADB - 8B0C 8B07 8B1A 8AE1 8B16 8B10 8B17 8B20 - 8B33 97AB 8B26 8B2B 8B3E 8B28 8B41 8B4C - 8B4F 8B4E 8B49 8B56 8B5B 8B5A 8B6B 8B5F - 8B6C 8B6F 8B74 8B7D 8B80 8B8C 8B8E 8B92 - 8B93 8B96 8B99 8B9A 8C3A 8C41 8C3F 8C48 - 8C4C 8C4E 8C50 8C55 8C62 8C6C 8C78 8C7A - 8C82 8C89 8C85 8C8A 8C8D 8C8E 8C94 8C7C - 8C98 621D 8CAD 8CAA 8CBD 8CB2 8CB3 8CAE - 8CB6 8CC8 8CC1 8CE4 8CE3 8CDA 8CFD 8CFA - 8CFB 8D04 8D05 8D0A 8D07 8D0F 8D0D 8D10 - 9F4E 8D13 8CCD 8D14 8D16 8D67 8D6D 8D71 - 8D73 8D81 8D99 8DC2 8DBE 8DBA 8DCF 8DDA - 8DD6 8DCC 8DDB 8DCB 8DEA 8DEB 8DDF 8DE3 - 8DFC 8E08 8E09 8DFF 8E1D 8E1E 8E10 8E1F - 8E42 8E35 8E30 8E34 8E4A -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = E740 - srcEnd = E7FC - mappingOffset = 175D - Mapping = - 8E47 8E49 8E4C 8E50 8E48 8E59 8E64 8E60 - 8E2A 8E63 8E55 8E76 8E72 8E7C 8E81 8E87 - 8E85 8E84 8E8B 8E8A 8E93 8E91 8E94 8E99 - 8EAA 8EA1 8EAC 8EB0 8EC6 8EB1 8EBE 8EC5 - 8EC8 8ECB 8EDB 8EE3 8EFC 8EFB 8EEB 8EFE - 8F0A 8F05 8F15 8F12 8F19 8F13 8F1C 8F1F - 8F1B 8F0C 8F26 8F33 8F3B 8F39 8F45 8F42 - 8F3E 8F4C 8F49 8F46 8F4E 8F57 8F5C FFFD - 8F62 8F63 8F64 8F9C 8F9F 8FA3 8FAD 8FAF - 8FB7 8FDA 8FE5 8FE2 8FEA 8FEF 9087 8FF4 - 9005 8FF9 8FFA 9011 9015 9021 900D 901E - 9016 900B 9027 9036 9035 9039 8FF8 904F - 9050 9051 9052 900E 9049 903E 9056 9058 - 905E 9068 906F 9076 96A8 9072 9082 907D - 9081 9080 908A 9089 908F 90A8 90AF 90B1 - 90B5 90E2 90E4 6248 90DB 9102 9112 9119 - 9132 9130 914A 9156 9158 9163 9165 9169 - 9173 9172 918B 9189 9182 91A2 91AB 91AF - 91AA 91B5 91B4 91BA 91C0 91C1 91C9 91CB - 91D0 91D6 91DF 91E1 91DB 91FC 91F5 91F6 - 921E 91FF 9214 922C 9215 9211 925E 9257 - 9245 9249 9264 9248 9295 923F 924B 9250 - 929C 9296 9293 929B 925A 92CF 92B9 92B7 - 92E9 930F 92FA 9344 932E -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = E840 - srcEnd = E8FC - mappingOffset = 181A - Mapping = - 9319 9322 931A 9323 933A 9335 933B 935C - 9360 937C 936E 9356 93B0 93AC 93AD 9394 - 93B9 93D6 93D7 93E8 93E5 93D8 93C3 93DD - 93D0 93C8 93E4 941A 9414 9413 9403 9407 - 9410 9436 942B 9435 9421 943A 9441 9452 - 9444 945B 9460 9462 945E 946A 9229 9470 - 9475 9477 947D 945A 947C 947E 9481 947F - 9582 9587 958A 9594 9596 9598 9599 FFFD - 95A0 95A8 95A7 95AD 95BC 95BB 95B9 95BE - 95CA 6FF6 95C3 95CD 95CC 95D5 95D4 95D6 - 95DC 95E1 95E5 95E2 9621 9628 962E 962F - 9642 964C 964F 964B 9677 965C 965E 965D - 965F 9666 9672 966C 968D 9698 9695 9697 - 96AA 96A7 96B1 96B2 96B0 96B4 96B6 96B8 - 96B9 96CE 96CB 96C9 96CD 894D 96DC 970D - 96D5 96F9 9704 9706 9708 9713 970E 9711 - 970F 9716 9719 9724 972A 9730 9739 973D - 973E 9744 9746 9748 9742 9749 975C 9760 - 9764 9766 9768 52D2 976B 9771 9779 9785 - 977C 9781 977A 9786 978B 978F 9790 979C - 97A8 97A6 97A3 97B3 97B4 97C3 97C6 97C8 - 97CB 97DC 97ED 9F4F 97F2 7ADF 97F6 97F5 - 980F 980C 9838 9824 9821 9837 983D 9846 - 984F 984B 986B 986F 9870 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = E940 - srcEnd = E9FC - mappingOffset = 18D7 - Mapping = - 9871 9874 9873 98AA 98AF 98B1 98B6 98C4 - 98C3 98C6 98E9 98EB 9903 9909 9912 9914 - 9918 9921 991D 991E 9924 9920 992C 992E - 993D 993E 9942 9949 9945 9950 994B 9951 - 9952 994C 9955 9997 9998 99A5 99AD 99AE - 99BC 99DF 99DB 99DD 99D8 99D1 99ED 99EE - 99F1 99F2 99FB 99F8 9A01 9A0F 9A05 99E2 - 9A19 9A2B 9A37 9A45 9A42 9A40 9A43 FFFD - 9A3E 9A55 9A4D 9A5B 9A57 9A5F 9A62 9A65 - 9A64 9A69 9A6B 9A6A 9AAD 9AB0 9ABC 9AC0 - 9ACF 9AD1 9AD3 9AD4 9ADE 9ADF 9AE2 9AE3 - 9AE6 9AEF 9AEB 9AEE 9AF4 9AF1 9AF7 9AFB - 9B06 9B18 9B1A 9B1F 9B22 9B23 9B25 9B27 - 9B28 9B29 9B2A 9B2E 9B2F 9B32 9B44 9B43 - 9B4F 9B4D 9B4E 9B51 9B58 9B74 9B93 9B83 - 9B91 9B96 9B97 9B9F 9BA0 9BA8 9BB4 9BC0 - 9BCA 9BB9 9BC6 9BCF 9BD1 9BD2 9BE3 9BE2 - 9BE4 9BD4 9BE1 9C3A 9BF2 9BF1 9BF0 9C15 - 9C14 9C09 9C13 9C0C 9C06 9C08 9C12 9C0A - 9C04 9C2E 9C1B 9C25 9C24 9C21 9C30 9C47 - 9C32 9C46 9C3E 9C5A 9C60 9C67 9C76 9C78 - 9CE7 9CEC 9CF0 9D09 9D08 9CEB 9D03 9D06 - 9D2A 9D26 9DAF 9D23 9D1F 9D44 9D15 9D12 - 9D41 9D3F 9D3E 9D46 9D48 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = EA40 - srcEnd = EAA4 - mappingOffset = 1994 - Mapping = - 9D5D 9D5E 9D64 9D51 9D50 9D59 9D72 9D89 - 9D87 9DAB 9D6F 9D7A 9D9A 9DA4 9DA9 9DB2 - 9DC4 9DC1 9DBB 9DB8 9DBA 9DC6 9DCF 9DC2 - 9DD9 9DD3 9DF8 9DE6 9DED 9DEF 9DFD 9E1A - 9E1B 9E1E 9E75 9E79 9E7D 9E81 9E88 9E8B - 9E8C 9E92 9E95 9E91 9E9D 9EA5 9EA9 9EB8 - 9EAA 9EAD 9761 9ECC 9ECE 9ECF 9ED0 9ED4 - 9EDC 9EDE 9EDD 9EE0 9EE5 9EE8 9EEF FFFD - 9EF4 9EF6 9EF7 9EF9 9EFB 9EFC 9EFD 9F07 - 9F08 76B7 9F15 9F21 9F2C 9F3E 9F4A 9F52 - 9F54 9F63 9F5F 9F60 9F61 9F66 9F67 9F6C - 9F6A 9F77 9F72 9F76 9F95 9F9C 9FA0 582F - 69C7 9059 7464 51DC 7199 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = ED40 - srcEnd = EDFC - mappingOffset = 19F9 - Mapping = - 7E8A 891C 9348 9288 84DC 4FC9 70BB 6631 - 68C8 92F9 66FB 5F45 4E28 4EE1 4EFC 4F00 - 4F03 4F39 4F56 4F92 4F8A 4F9A 4F94 4FCD - 5040 5022 4FFF 501E 5046 5070 5042 5094 - 50F4 50D8 514A 5164 519D 51BE 51EC 5215 - 529C 52A6 52C0 52DB 5300 5307 5324 5372 - 5393 53B2 53DD FA0E 549C 548A 54A9 54FF - 5586 5759 5765 57AC 57C8 57C7 FA0F FFFD - FA10 589E 58B2 590B 5953 595B 595D 5963 - 59A4 59BA 5B56 5BC0 752F 5BD8 5BEC 5C1E - 5CA6 5CBA 5CF5 5D27 5D53 FA11 5D42 5D6D - 5DB8 5DB9 5DD0 5F21 5F34 5F67 5FB7 5FDE - 605D 6085 608A 60DE 60D5 6120 60F2 6111 - 6137 6130 6198 6213 62A6 63F5 6460 649D - 64CE 654E 6600 6615 663B 6609 662E 661E - 6624 6665 6657 6659 FA12 6673 6699 66A0 - 66B2 66BF 66FA 670E F929 6766 67BB 6852 - 67C0 6801 6844 68CF FA13 6968 FA14 6998 - 69E2 6A30 6A6B 6A46 6A73 6A7E 6AE2 6AE4 - 6BD6 6C3F 6C5C 6C86 6C6F 6CDA 6D04 6D87 - 6D6F 6D96 6DAC 6DCF 6DF8 6DF2 6DFC 6E39 - 6E5C 6E27 6E3C 6EBF 6F88 6FB5 6FF5 7005 - 7007 7028 7085 70AB 710F 7104 715C 7146 - 7147 FA15 71C1 71FE 72B1 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = EE40 - srcEnd = EEEC - mappingOffset = 1AB6 - Mapping = - 72BE 7324 FA16 7377 73BD 73C9 73D6 73E3 - 73D2 7407 73F5 7426 742A 7429 742E 7462 - 7489 749F 7501 756F 7682 769C 769E 769B - 76A6 FA17 7746 52AF 7821 784E 7864 787A - 7930 FA18 FA19 FA1A 7994 FA1B 799B 7AD1 - 7AE7 FA1C 7AEB 7B9E FA1D 7D48 7D5C 7DB7 - 7DA0 7DD6 7E52 7F47 7FA1 FA1E 8301 8362 - 837F 83C7 83F6 8448 84B4 8553 8559 FFFD - 856B FA1F 85B0 FA20 FA21 8807 88F5 8A12 - 8A37 8A79 8AA7 8ABE 8ADF FA22 8AF6 8B53 - 8B7F 8CF0 8CF4 8D12 8D76 FA23 8ECF FA24 - FA25 9067 90DE FA26 9115 9127 91DA 91D7 - 91DE 91ED 91EE 91E4 91E5 9206 9210 920A - 923A 9240 923C 924E 9259 9251 9239 9267 - 92A7 9277 9278 92E7 92D7 92D9 92D0 FA27 - 92D5 92E0 92D3 9325 9321 92FB FA28 931E - 92FF 931D 9302 9370 9357 93A4 93C6 93DE - 93F8 9431 9445 9448 9592 F9DC FA29 969D - 96AF 9733 973B 9743 974D 974F 9751 9755 - 9857 9865 FA2A FA2B 9927 FA2C 999E 9A4E - 9AD9 9ADC 9B75 9B72 9B8F 9BB1 9BBB 9C00 - 9D70 9D6B FA2D 9E19 9ED1 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = EEF9 - srcEnd = EEFC - mappingOffset = 1B63 - Mapping = - FFE2 FFE4 FF07 FF02 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = FA54 - srcEnd = FAFC - mappingOffset = 1B67 - Mapping = - FFE2 FFE4 FF07 FF02 3231 2116 2121 2235 - 7E8A 891C 9348 9288 84DC 4FC9 70BB 6631 - 68C8 92F9 66FB 5F45 4E28 4EE1 4EFC 4F00 - 4F03 4F39 4F56 4F92 4F8A 4F9A 4F94 4FCD - 5040 5022 4FFF 501E 5046 5070 5042 5094 - 50F4 50D8 514A FFFD 5164 519D 51BE 51EC - 5215 529C 52A6 52C0 52DB 5300 5307 5324 - 5372 5393 53B2 53DD FA0E 549C 548A 54A9 - 54FF 5586 5759 5765 57AC 57C8 57C7 FA0F - FA10 589E 58B2 590B 5953 595B 595D 5963 - 59A4 59BA 5B56 5BC0 752F 5BD8 5BEC 5C1E - 5CA6 5CBA 5CF5 5D27 5D53 FA11 5D42 5D6D - 5DB8 5DB9 5DD0 5F21 5F34 5F67 5FB7 5FDE - 605D 6085 608A 60DE 60D5 6120 60F2 6111 - 6137 6130 6198 6213 62A6 63F5 6460 649D - 64CE 654E 6600 6615 663B 6609 662E 661E - 6624 6665 6657 6659 FA12 6673 6699 66A0 - 66B2 66BF 66FA 670E F929 6766 67BB 6852 - 67C0 6801 6844 68CF FA13 6968 FA14 6998 - 69E2 6A30 6A6B 6A46 6A73 6A7E 6AE2 6AE4 - 6BD6 6C3F 6C5C 6C86 6C6F 6CDA 6D04 6D87 - 6D6F -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = FB40 - srcEnd = FBFC - mappingOffset = 1C10 - Mapping = - 6D96 6DAC 6DCF 6DF8 6DF2 6DFC 6E39 6E5C - 6E27 6E3C 6EBF 6F88 6FB5 6FF5 7005 7007 - 7028 7085 70AB 710F 7104 715C 7146 7147 - FA15 71C1 71FE 72B1 72BE 7324 FA16 7377 - 73BD 73C9 73D6 73E3 73D2 7407 73F5 7426 - 742A 7429 742E 7462 7489 749F 7501 756F - 7682 769C 769E 769B 76A6 FA17 7746 52AF - 7821 784E 7864 787A 7930 FA18 FA19 FFFD - FA1A 7994 FA1B 799B 7AD1 7AE7 FA1C 7AEB - 7B9E FA1D 7D48 7D5C 7DB7 7DA0 7DD6 7E52 - 7F47 7FA1 FA1E 8301 8362 837F 83C7 83F6 - 8448 84B4 8553 8559 856B FA1F 85B0 FA20 - FA21 8807 88F5 8A12 8A37 8A79 8AA7 8ABE - 8ADF FA22 8AF6 8B53 8B7F 8CF0 8CF4 8D12 - 8D76 FA23 8ECF FA24 FA25 9067 90DE FA26 - 9115 9127 91DA 91D7 91DE 91ED 91EE 91E4 - 91E5 9206 9210 920A 923A 9240 923C 924E - 9259 9251 9239 9267 92A7 9277 9278 92E7 - 92D7 92D9 92D0 FA27 92D5 92E0 92D3 9325 - 9321 92FB FA28 931E 92FF 931D 9302 9370 - 9357 93A4 93C6 93DE 93F8 9431 9445 9448 - 9592 F9DC FA29 969D 96AF 9733 973B 9743 - 974D 974F 9751 9755 9857 9865 FA2A FA2B - 9927 FA2C 999E 9A4E 9AD9 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = FC40 - srcEnd = FC4B - mappingOffset = 1CCD - Mapping = - 9ADC 9B75 9B72 9B8F 9BB1 9BBB 9C00 9D70 - 9D6B FA2D 9E19 9ED1 -End of Item 0047 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0048, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0017, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x00EF, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0017 */ -/* Total of Format 1 : 0x002F */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x2211, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0017 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A1, 0x00DF, 0xFF61, -/* 0002 */ 0x8171, 0x817A, 0x3008, -/* 0003 */ 0x824F, 0x8258, 0xFF10, -/* 0004 */ 0x8260, 0x8279, 0xFF21, -/* 0005 */ 0x8281, 0x829A, 0xFF41, -/* 0006 */ 0x829F, 0x82F1, 0x3041, -/* 0007 */ 0x8340, 0x837E, 0x30A1, -/* 0008 */ 0x8380, 0x8396, 0x30E0, -/* 0009 */ 0x839F, 0x83AF, 0x0391, -/* 000A */ 0x83B0, 0x83B6, 0x03A3, -/* 000B */ 0x83BF, 0x83CF, 0x03B1, -/* 000C */ 0x83D0, 0x83D6, 0x03C3, -/* 000D */ 0x8440, 0x8445, 0x0410, -/* 000E */ 0x8447, 0x8460, 0x0416, -/* 000F */ 0x8470, 0x8475, 0x0430, -/* 0010 */ 0x8477, 0x847E, 0x0436, -/* 0011 */ 0x8480, 0x8491, 0x043E, -/* 0012 */ 0x8740, 0x8753, 0x2460, -/* 0013 */ 0x8754, 0x875D, 0x2160, -/* 0014 */ 0xEEEF, 0xEEF8, 0x2170, -/* 0015 */ 0xFA40, 0xFA49, 0x2170, -/* 0016 */ 0xFA4A, 0xFA53, 0x2160, -/* 0017 */ 0x8140, 0x81AC, 0x0000, -/* 0018 */ 0x81B8, 0x81CE, 0x006D, -/* 0019 */ 0x81DA, 0x81FC, 0x0084, -/* 001A */ 0x8446, 0x0000, 0x0401, -/* 001B */ 0x8476, 0x0000, 0x0451, -/* 001C */ 0x849F, 0x84BE, 0x00A7, -/* 001D */ 0x875F, 0x879C, 0x00C7, -/* 001E */ 0x889F, 0x88FC, 0x0105, -/* 001F */ 0x8940, 0x89FC, 0x0163, -/* 0020 */ 0x8A40, 0x8AFC, 0x0220, -/* 0021 */ 0x8B40, 0x8BFC, 0x02DD, -/* 0022 */ 0x8C40, 0x8CFC, 0x039A, -/* 0023 */ 0x8D40, 0x8DFC, 0x0457, -/* 0024 */ 0x8E40, 0x8EFC, 0x0514, -/* 0025 */ 0x8F40, 0x8FFC, 0x05D1, -/* 0026 */ 0x9040, 0x90FC, 0x068E, -/* 0027 */ 0x9140, 0x91FC, 0x074B, -/* 0028 */ 0x9240, 0x92FC, 0x0808, -/* 0029 */ 0x9340, 0x93FC, 0x08C5, -/* 002A */ 0x9440, 0x94FC, 0x0982, -/* 002B */ 0x9540, 0x95FC, 0x0A3F, -/* 002C */ 0x9640, 0x96FC, 0x0AFC, -/* 002D */ 0x9740, 0x97FC, 0x0BB9, -/* 002E */ 0x9840, 0x9872, 0x0C76, -/* 002F */ 0x989F, 0x98FC, 0x0CA9, -/* 0030 */ 0x9940, 0x99FC, 0x0D07, -/* 0031 */ 0x9A40, 0x9AFC, 0x0DC4, -/* 0032 */ 0x9B40, 0x9BFC, 0x0E81, -/* 0033 */ 0x9C40, 0x9CFC, 0x0F3E, -/* 0034 */ 0x9D40, 0x9DFC, 0x0FFB, -/* 0035 */ 0x9E40, 0x9EFC, 0x10B8, -/* 0036 */ 0x9F40, 0x9FFC, 0x1175, -/* 0037 */ 0xE040, 0xE0FC, 0x1232, -/* 0038 */ 0xE140, 0xE1FC, 0x12EF, -/* 0039 */ 0xE240, 0xE2FC, 0x13AC, -/* 003A */ 0xE340, 0xE3FC, 0x1469, -/* 003B */ 0xE440, 0xE4FC, 0x1526, -/* 003C */ 0xE540, 0xE5FC, 0x15E3, -/* 003D */ 0xE640, 0xE6FC, 0x16A0, -/* 003E */ 0xE740, 0xE7FC, 0x175D, -/* 003F */ 0xE840, 0xE8FC, 0x181A, -/* 0040 */ 0xE940, 0xE9FC, 0x18D7, -/* 0041 */ 0xEA40, 0xEAA4, 0x1994, -/* 0042 */ 0xED40, 0xEDFC, 0x19F9, -/* 0043 */ 0xEE40, 0xEEEC, 0x1AB6, -/* 0044 */ 0xEEF9, 0xEEFC, 0x1B63, -/* 0045 */ 0xFA54, 0xFAFC, 0x1B67, -/* 0046 */ 0xFB40, 0xFBFC, 0x1C10, -/* 0047 */ 0xFC40, 0xFC4B, 0x1CCD, -/*-------------------------------------------------------*/ -/* Offset=0x00EF Start of MappingTable */ - -/* 0000 */ 0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A, 0xFF1B, -/* 0008 */ 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, 0xFF3E, -/* 0010 */ 0xFFE3, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD, -/* 0018 */ 0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F, 0xFF3C, -/* 0020 */ 0xFF5E, 0x2225, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C, -/* 0028 */ 0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, -/* 0030 */ 0xFF5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFF0B, 0xFF0D, 0x00B1, 0x00D7, 0xFFFD, -/* 0040 */ 0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E, -/* 0048 */ 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFFE5, -/* 0050 */ 0xFF04, 0xFFE0, 0xFFE1, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, -/* 0058 */ 0x00A7, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, -/* 0060 */ 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B, 0x3012, -/* 0068 */ 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x2208, 0x220B, 0x2286, -/* 0070 */ 0x2287, 0x2282, 0x2283, 0x222A, 0x2229, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2227, 0x2228, 0xFFE2, -/* 0080 */ 0x21D2, 0x21D4, 0x2200, 0x2203, 0x2220, 0x22A5, 0x2312, 0x2202, -/* 0088 */ 0x2207, 0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, -/* 0090 */ 0x2235, 0x222B, 0x222C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020, -/* 00A0 */ 0x2021, 0x00B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x25EF, 0x2500, -/* 00A8 */ 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, -/* 00B0 */ 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, -/* 00B8 */ 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, 0x252F, 0x2528, -/* 00C0 */ 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, 0x2542, 0x3349, -/* 00C8 */ 0x3314, 0x3322, 0x334D, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351, -/* 00D0 */ 0x3357, 0x330D, 0x3326, 0x3323, 0x332B, 0x334A, 0x333B, 0x339C, -/* 00D8 */ 0x339D, 0x339E, 0x338E, 0x338F, 0x33C4, 0x33A1, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x337B, 0xFFFD, -/* 00E8 */ 0x301D, 0x301F, 0x2116, 0x33CD, 0x2121, 0x32A4, 0x32A5, 0x32A6, -/* 00F0 */ 0x32A7, 0x32A8, 0x3231, 0x3232, 0x3239, 0x337E, 0x337D, 0x337C, -/* 00F8 */ 0x2252, 0x2261, 0x222B, 0x222E, 0x2211, 0x221A, 0x22A5, 0x2220, -/* 0100 */ 0x221F, 0x22BF, 0x2235, 0x2229, 0x222A, 0x4E9C, 0x5516, 0x5A03, -/* 0108 */ 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6, 0x9022, 0x8475, 0x831C, -/* 0110 */ 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED, 0x8466, 0x82A6, 0x9BF5, -/* 0118 */ 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B, 0x59D0, 0x867B, 0x98F4, -/* 0120 */ 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F, 0x88B7, 0x5B89, 0x5EB5, -/* 0128 */ 0x6309, 0x6697, 0x6848, 0x95C7, 0x978D, 0x674F, 0x4EE5, 0x4F0A, -/* 0130 */ 0x4F4D, 0x4F9D, 0x5049, 0x56F2, 0x5937, 0x59D4, 0x5A01, 0x5C09, -/* 0138 */ 0x60DF, 0x610F, 0x6170, 0x6613, 0x6905, 0x70BA, 0x754F, 0x7570, -/* 0140 */ 0x79FB, 0x7DAD, 0x7DEF, 0x80C3, 0x840E, 0x8863, 0x8B02, 0x9055, -/* 0148 */ 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF, 0x80B2, 0x90C1, 0x78EF, -/* 0150 */ 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32, 0x8328, 0x828B, 0x9C2F, -/* 0158 */ 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0, 0x59FB, 0x5F15, 0x98F2, -/* 0160 */ 0x6DEB, 0x80E4, 0x852D, 0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B, -/* 0168 */ 0x53F3, 0x5B87, 0x70CF, 0x7FBD, 0x8FC2, 0x96E8, 0x536F, 0x9D5C, -/* 0170 */ 0x7ABA, 0x4E11, 0x7893, 0x81FC, 0x6E26, 0x5618, 0x5504, 0x6B1D, -/* 0178 */ 0x851A, 0x9C3B, 0x59E5, 0x53A9, 0x6D66, 0x74DC, 0x958F, 0x5642, -/* 0180 */ 0x4E91, 0x904B, 0x96F2, 0x834F, 0x990C, 0x53E1, 0x55B6, 0x5B30, -/* 0188 */ 0x5F71, 0x6620, 0x66F3, 0x6804, 0x6C38, 0x6CF3, 0x6D29, 0x745B, -/* 0190 */ 0x76C8, 0x7A4E, 0x9834, 0x82F1, 0x885B, 0x8A60, 0x92ED, 0x6DB2, -/* 0198 */ 0x75AB, 0x76CA, 0x99C5, 0x60A6, 0x8B01, 0x8D8A, 0x95B2, 0x698E, -/* 01A0 */ 0x53AD, 0x5186, 0xFFFD, 0x5712, 0x5830, 0x5944, 0x5BB4, 0x5EF6, -/* 01A8 */ 0x6028, 0x63A9, 0x63F4, 0x6CBF, 0x6F14, 0x708E, 0x7114, 0x7159, -/* 01B0 */ 0x71D5, 0x733F, 0x7E01, 0x8276, 0x82D1, 0x8597, 0x9060, 0x925B, -/* 01B8 */ 0x9D1B, 0x5869, 0x65BC, 0x6C5A, 0x7525, 0x51F9, 0x592E, 0x5965, -/* 01C0 */ 0x5F80, 0x5FDC, 0x62BC, 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, -/* 01C8 */ 0x7FC1, 0x8956, 0x9D2C, 0x9D0E, 0x9EC4, 0x5CA1, 0x6C96, 0x837B, -/* 01D0 */ 0x5104, 0x5C4B, 0x61B6, 0x81C6, 0x6876, 0x7261, 0x4E59, 0x4FFA, -/* 01D8 */ 0x5378, 0x6069, 0x6E29, 0x7A4F, 0x97F3, 0x4E0B, 0x5316, 0x4EEE, -/* 01E0 */ 0x4F55, 0x4F3D, 0x4FA1, 0x4F73, 0x52A0, 0x53EF, 0x5609, 0x590F, -/* 01E8 */ 0x5AC1, 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C, -/* 01F0 */ 0x6CB3, 0x706B, 0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, -/* 01F8 */ 0x82DB, 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, -/* 0200 */ 0x8CA8, 0x8FE6, 0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, -/* 0208 */ 0x7259, 0x753B, 0x81E5, 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, -/* 0210 */ 0x99D5, 0x4ECB, 0x4F1A, 0x89E3, 0x56DE, 0x584A, 0x58CA, 0x5EFB, -/* 0218 */ 0x5FEB, 0x602A, 0x6094, 0x6062, 0x61D0, 0x6212, 0x62D0, 0x6539, -/* 0220 */ 0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, 0x7686, 0x7D75, -/* 0228 */ 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE, 0x5916, -/* 0230 */ 0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB, -/* 0238 */ 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3, -/* 0240 */ 0x67FF, 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3, 0x62E1, -/* 0248 */ 0x64B9, 0x683C, 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B, 0x899A, -/* 0250 */ 0x89D2, 0x8D6B, 0x8F03, 0x90ED, 0x95A3, 0x9694, 0x9769, 0x5B66, -/* 0258 */ 0x5CB3, 0x697D, 0x984D, 0x984E, 0x639B, 0x7B20, 0x6A2B, 0xFFFD, -/* 0260 */ 0x6A7F, 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, 0x6070, 0x62EC, -/* 0268 */ 0x6D3B, 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, 0x9C39, -/* 0270 */ 0x53F6, 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2, -/* 0278 */ 0x91DC, 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431, 0x7CA5, -/* 0280 */ 0x5208, 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2, 0x520A, -/* 0288 */ 0x52D8, 0x52E7, 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C, 0x5B98, -/* 0290 */ 0x5BDB, 0x5E72, 0x5E79, 0x60A3, 0x611F, 0x6163, 0x61BE, 0x63DB, -/* 0298 */ 0x6562, 0x67D1, 0x6853, 0x68FA, 0x6B3E, 0x6B53, 0x6C57, 0x6F22, -/* 02A0 */ 0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3, 0x770B, 0x7AFF, 0x7BA1, -/* 02A8 */ 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266, 0x839E, 0x89B3, -/* 02B0 */ 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, 0x95A2, 0x9665, -/* 02B8 */ 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, 0x5DCC, 0x73A9, -/* 02C0 */ 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811, 0x9854, -/* 02C8 */ 0x9858, 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA, 0x5947, -/* 02D0 */ 0x5B09, 0x5BC4, 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE, 0x673A, -/* 02D8 */ 0x65D7, 0x65E2, 0x671F, 0x68CB, 0x68C4, 0x6A5F, 0x5E30, 0x6BC5, -/* 02E0 */ 0x6C17, 0x6C7D, 0x757F, 0x7948, 0x5B63, 0x7A00, 0x7D00, 0x5FBD, -/* 02E8 */ 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC, 0x8F1D, 0x98E2, 0x9A0E, -/* 02F0 */ 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993, 0x5B9C, 0x622F, 0x6280, -/* 02F8 */ 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947, 0x7FA9, 0x87FB, 0x8ABC, -/* 0300 */ 0x8B70, 0x63AC, 0x83CA, 0x97A0, 0x5409, 0x5403, 0x55AB, 0x6854, -/* 0308 */ 0x6A58, 0x8A70, 0x7827, 0x6775, 0x9ECD, 0x5374, 0x5BA2, 0x811A, -/* 0310 */ 0x8650, 0x9006, 0x4E18, 0x4E45, 0x4EC7, 0x4F11, 0x53CA, 0x5438, -/* 0318 */ 0x5BAE, 0x5F13, 0x6025, 0x6551, 0xFFFD, 0x673D, 0x6C42, 0x6C72, -/* 0320 */ 0x6CE3, 0x7078, 0x7403, 0x7A76, 0x7AAE, 0x7B08, 0x7D1A, 0x7CFE, -/* 0328 */ 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45, 0x5DE8, 0x62D2, 0x62E0, -/* 0330 */ 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8, 0x6F01, 0x79A6, -/* 0338 */ 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC, 0x4F9B, 0x4FA0, 0x50D1, 0x5147, -/* 0340 */ 0x7AF6, 0x5171, 0x51F6, 0x5354, 0x5321, 0x537F, 0x53EB, 0x55AC, -/* 0348 */ 0x5883, 0x5CE1, 0x5F37, 0x5F4A, 0x602F, 0x6050, 0x606D, 0x631F, -/* 0350 */ 0x6559, 0x6A4B, 0x6CC1, 0x72C2, 0x72ED, 0x77EF, 0x80F8, 0x8105, -/* 0358 */ 0x8208, 0x854E, 0x90F7, 0x93E1, 0x97FF, 0x9957, 0x9A5A, 0x4EF0, -/* 0360 */ 0x51DD, 0x5C2D, 0x6681, 0x696D, 0x5C40, 0x66F2, 0x6975, 0x7389, -/* 0368 */ 0x6850, 0x7C81, 0x50C5, 0x52E4, 0x5747, 0x5DFE, 0x9326, 0x65A4, -/* 0370 */ 0x6B23, 0x6B3D, 0x7434, 0x7981, 0x79BD, 0x7B4B, 0x7DCA, 0x82B9, -/* 0378 */ 0x83CC, 0x887F, 0x895F, 0x8B39, 0x8FD1, 0x91D1, 0x541F, 0x9280, -/* 0380 */ 0x4E5D, 0x5036, 0x53E5, 0x533A, 0x72D7, 0x7396, 0x77E9, 0x82E6, -/* 0388 */ 0x8EAF, 0x99C6, 0x99C8, 0x99D2, 0x5177, 0x611A, 0x865E, 0x55B0, -/* 0390 */ 0x7A7A, 0x5076, 0x5BD3, 0x9047, 0x9685, 0x4E32, 0x6ADB, 0x91E7, -/* 0398 */ 0x5C51, 0x5C48, 0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, -/* 03A0 */ 0x718A, 0x9688, 0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, -/* 03A8 */ 0x541B, 0x85AB, 0x8A13, 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, -/* 03B0 */ 0x7941, 0x4FC2, 0x50BE, 0x5211, 0x5144, 0x5553, 0x572D, 0x73EA, -/* 03B8 */ 0x578B, 0x5951, 0x5F62, 0x5F84, 0x6075, 0x6176, 0x6167, 0x61A9, -/* 03C0 */ 0x63B2, 0x643A, 0x656C, 0x666F, 0x6842, 0x6E13, 0x7566, 0x7A3D, -/* 03C8 */ 0x7CFB, 0x7D4C, 0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, 0x86CD, -/* 03D0 */ 0x8A08, 0x8A63, 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, -/* 03D8 */ 0x9BE8, 0xFFFD, 0x5287, 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, -/* 03E0 */ 0x5091, 0x6B20, 0x6C7A, 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, -/* 03E8 */ 0x6708, 0x4EF6, 0x5039, 0x5026, 0x5065, 0x517C, 0x5238, 0x5263, -/* 03F0 */ 0x55A7, 0x570F, 0x5805, 0x5ACC, 0x5EFA, 0x61B2, 0x61F8, 0x62F3, -/* 03F8 */ 0x6372, 0x691C, 0x6A29, 0x727D, 0x72AC, 0x732E, 0x7814, 0x786F, -/* 0400 */ 0x7D79, 0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2, 0x8ED2, 0x9063, -/* 0408 */ 0x9375, 0x967A, 0x9855, 0x9A13, 0x9E78, 0x5143, 0x539F, 0x53B3, -/* 0410 */ 0x5E7B, 0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237, -/* 0418 */ 0x8A00, 0x8AFA, 0x9650, 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA, -/* 0420 */ 0x59D1, 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF, -/* 0428 */ 0x6E56, 0x72D0, 0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E, -/* 0430 */ 0x8A87, 0x8DE8, 0x9237, 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92, -/* 0438 */ 0x4F0D, 0x5348, 0x5449, 0x543E, 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, -/* 0440 */ 0x68A7, 0x6A8E, 0x745A, 0x7881, 0x8A9E, 0x8AA4, 0x8B77, 0x9190, -/* 0448 */ 0x4E5E, 0x9BC9, 0x4EA4, 0x4F7C, 0x4FAF, 0x5019, 0x5016, 0x5149, -/* 0450 */ 0x516C, 0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, 0x5411, 0x540E, -/* 0458 */ 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, 0x5B8F, 0x5DE5, -/* 0460 */ 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, 0x5F18, 0x6052, -/* 0468 */ 0x614C, 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, 0x6643, 0x66F4, -/* 0470 */ 0x676D, 0x6821, 0x6897, 0x69CB, 0x6C5F, 0x6D2A, 0x6D69, 0x6E2F, -/* 0478 */ 0x6E9D, 0x7532, 0x7687, 0x786C, 0x7A3F, 0x7CE0, 0x7D05, 0x7D18, -/* 0480 */ 0x7D5E, 0x7DB1, 0x8015, 0x8003, 0x80AF, 0x80B1, 0x8154, 0x818F, -/* 0488 */ 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B, 0x8CA2, 0x8CFC, 0x90CA, -/* 0490 */ 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D, 0xFFFD, 0x9805, -/* 0498 */ 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408, 0x58D5, -/* 04A0 */ 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B, 0x544A, -/* 04A8 */ 0x56FD, 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09, 0x8170, -/* 04B0 */ 0x7511, 0x5FFD, 0x60DA, 0x9AA8, 0x72DB, 0x8FBC, 0x6B64, 0x9803, -/* 04B8 */ 0x4ECA, 0x56F0, 0x5764, 0x58BE, 0x5A5A, 0x6068, 0x61C7, 0x660F, -/* 04C0 */ 0x6606, 0x6839, 0x68B1, 0x6DF7, 0x75D5, 0x7D3A, 0x826E, 0x9B42, -/* 04C8 */ 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F, 0x5DE6, 0x5DEE, 0x67FB, -/* 04D0 */ 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF, 0x5750, 0x5EA7, -/* 04D8 */ 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700, 0x54C9, 0x585E, 0x59BB, -/* 04E0 */ 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D, 0x6B73, 0x6E08, 0x707D, -/* 04E8 */ 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D, 0x658E, 0x7D30, 0x83DC, -/* 04F0 */ 0x88C1, 0x8F09, 0x969B, 0x5264, 0x5728, 0x6750, 0x7F6A, 0x8CA1, -/* 04F8 */ 0x51B4, 0x5742, 0x962A, 0x583A, 0x698A, 0x80B4, 0x54B2, 0x5D0E, -/* 0500 */ 0x57FC, 0x7895, 0x9DFA, 0x4F5C, 0x524A, 0x548B, 0x643E, 0x6628, -/* 0508 */ 0x6714, 0x67F5, 0x7A84, 0x7B56, 0x7D22, 0x932F, 0x685C, 0x9BAD, -/* 0510 */ 0x7B39, 0x5319, 0x518A, 0x5237, 0x5BDF, 0x62F6, 0x64AE, 0x64E6, -/* 0518 */ 0x672D, 0x6BBA, 0x85A9, 0x96D1, 0x7690, 0x9BD6, 0x634C, 0x9306, -/* 0520 */ 0x9BAB, 0x76BF, 0x6652, 0x4E09, 0x5098, 0x53C2, 0x5C71, 0x60E8, -/* 0528 */ 0x6492, 0x6563, 0x685F, 0x71E6, 0x73CA, 0x7523, 0x7B97, 0x7E82, -/* 0530 */ 0x8695, 0x8B83, 0x8CDB, 0x9178, 0x9910, 0x65AC, 0x66AB, 0x6B8B, -/* 0538 */ 0x4ED5, 0x4ED4, 0x4F3A, 0x4F7F, 0x523A, 0x53F8, 0x53F2, 0x55E3, -/* 0540 */ 0x56DB, 0x58EB, 0x59CB, 0x59C9, 0x59FF, 0x5B50, 0x5C4D, 0x5E02, -/* 0548 */ 0x5E2B, 0x5FD7, 0x601D, 0x6307, 0x652F, 0x5B5C, 0x65AF, 0x65BD, -/* 0550 */ 0x65E8, 0x679D, 0x6B62, 0xFFFD, 0x6B7B, 0x6C0F, 0x7345, 0x7949, -/* 0558 */ 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2, 0x8102, 0x81F3, 0x8996, -/* 0560 */ 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE, 0x8CC7, 0x8CDC, 0x96CC, -/* 0568 */ 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D, 0x5150, 0x5B57, 0x5BFA, -/* 0570 */ 0x6148, 0x6301, 0x6642, 0x6B21, 0x6ECB, 0x6CBB, 0x723E, 0x74BD, -/* 0578 */ 0x75D4, 0x78C1, 0x793A, 0x800C, 0x8033, 0x81EA, 0x8494, 0x8F9E, -/* 0580 */ 0x6C50, 0x9E7F, 0x5F0F, 0x8B58, 0x9D2B, 0x7AFA, 0x8EF8, 0x5B8D, -/* 0588 */ 0x96EB, 0x4E03, 0x53F1, 0x57F7, 0x5931, 0x5AC9, 0x5BA4, 0x6089, -/* 0590 */ 0x6E7F, 0x6F06, 0x75BE, 0x8CEA, 0x5B9F, 0x8500, 0x7BE0, 0x5072, -/* 0598 */ 0x67F4, 0x829D, 0x5C61, 0x854A, 0x7E1E, 0x820E, 0x5199, 0x5C04, -/* 05A0 */ 0x6368, 0x8D66, 0x659C, 0x716E, 0x793E, 0x7D17, 0x8005, 0x8B1D, -/* 05A8 */ 0x8ECA, 0x906E, 0x86C7, 0x90AA, 0x501F, 0x52FA, 0x5C3A, 0x6753, -/* 05B0 */ 0x707C, 0x7235, 0x914C, 0x91C8, 0x932B, 0x82E5, 0x5BC2, 0x5F31, -/* 05B8 */ 0x60F9, 0x4E3B, 0x53D6, 0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, -/* 05C0 */ 0x73E0, 0x7A2E, 0x816B, 0x8DA3, 0x9152, 0x9996, 0x5112, 0x53D7, -/* 05C8 */ 0x546A, 0x5BFF, 0x6388, 0x6A39, 0x7DAC, 0x9700, 0x56DA, 0x53CE, -/* 05D0 */ 0x5468, 0x5B97, 0x5C31, 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32, -/* 05D8 */ 0x79C0, 0x79CB, 0x7D42, 0x7E4D, 0x7FD2, 0x81ED, 0x821F, 0x8490, -/* 05E0 */ 0x8846, 0x8972, 0x8B90, 0x8E74, 0x8F2F, 0x9031, 0x914B, 0x916C, -/* 05E8 */ 0x96C6, 0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341, 0x5F93, 0x620E, -/* 05F0 */ 0x67D4, 0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, 0x9283, 0x53D4, -/* 05F8 */ 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, 0x587E, 0x719F, -/* 0600 */ 0x51FA, 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC, 0x7AE3, -/* 0608 */ 0x821C, 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3, -/* 0610 */ 0xFFFD, 0x6E96, 0x6F64, 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, -/* 0618 */ 0x9806, 0x51E6, 0x521D, 0x6240, 0x6691, 0x66D9, 0x6E1A, 0x5EB6, -/* 0620 */ 0x7DD2, 0x7F72, 0x66F8, 0x85AF, 0x85F7, 0x8AF8, 0x52A9, 0x53D9, -/* 0628 */ 0x5973, 0x5E8F, 0x5F90, 0x6055, 0x92E4, 0x9664, 0x50B7, 0x511F, -/* 0630 */ 0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531, 0x5617, -/* 0638 */ 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11, 0x5C1A, -/* 0640 */ 0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB, 0x638C, -/* 0648 */ 0x6377, 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, 0x68A2, 0x6A1F, -/* 0650 */ 0x6A35, 0x6CBC, 0x6D88, 0x6E09, 0x6E58, 0x713C, 0x7126, 0x7167, -/* 0658 */ 0x75C7, 0x7701, 0x785D, 0x7901, 0x7965, 0x79F0, 0x7AE0, 0x7B11, -/* 0660 */ 0x7CA7, 0x7D39, 0x8096, 0x83D6, 0x848B, 0x8549, 0x885D, 0x88F3, -/* 0668 */ 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, 0x8CDE, 0x91A4, 0x9266, -/* 0670 */ 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, 0x4E1E, 0x4E57, -/* 0678 */ 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38, 0x60C5, -/* 0680 */ 0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63, 0x84B8, -/* 0688 */ 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE, 0x62ED, 0x690D, -/* 0690 */ 0x6B96, 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6, 0x98DF, 0x8755, -/* 0698 */ 0x8FB1, 0x5C3B, 0x4F38, 0x4FE1, 0x4FB5, 0x5507, 0x5A20, 0x5BDD, -/* 06A0 */ 0x5BE9, 0x5FC3, 0x614E, 0x632F, 0x65B0, 0x664B, 0x68EE, 0x699B, -/* 06A8 */ 0x6D78, 0x6DF1, 0x7533, 0x75B9, 0x771F, 0x795E, 0x79E6, 0x7D33, -/* 06B0 */ 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A, 0x8EAB, 0x8F9B, 0x9032, -/* 06B8 */ 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875, 0x58EC, 0x5C0B, -/* 06C0 */ 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663, 0x976D, 0x7B25, -/* 06C8 */ 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0xFFFD, 0x9017, 0x5439, -/* 06D0 */ 0x5782, 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B, 0x7FE0, -/* 06D8 */ 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968F, 0x745E, 0x9AC4, -/* 06E0 */ 0x5D07, 0x5D69, 0x6570, 0x67A2, 0x8DA8, 0x96DB, 0x636E, 0x6749, -/* 06E8 */ 0x6919, 0x83C5, 0x9817, 0x96C0, 0x88FE, 0x6F84, 0x647A, 0x5BF8, -/* 06F0 */ 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4, 0x5236, 0x52E2, 0x59D3, -/* 06F8 */ 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574, 0x661F, 0x6674, 0x68F2, -/* 0700 */ 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F, 0x76DB, 0x7CBE, 0x8056, -/* 0708 */ 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93, 0x8ACB, 0x901D, 0x9192, -/* 0710 */ 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106, 0x96BB, 0x5E2D, 0x60DC, -/* 0718 */ 0x621A, 0x65A5, 0x6614, 0x6790, 0x77F3, 0x7A4D, 0x7C4D, 0x7E3E, -/* 0720 */ 0x810A, 0x8CAC, 0x8D64, 0x8DE1, 0x8E5F, 0x78A9, 0x5207, 0x62D9, -/* 0728 */ 0x63A5, 0x6442, 0x6298, 0x8A2D, 0x7A83, 0x7BC0, 0x8AAC, 0x96EA, -/* 0730 */ 0x7D76, 0x820C, 0x8749, 0x4ED9, 0x5148, 0x5343, 0x5360, 0x5BA3, -/* 0738 */ 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247, 0x64B0, 0x6813, 0x6834, -/* 0740 */ 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C, 0x714E, 0x717D, 0x65CB, -/* 0748 */ 0x7A7F, 0x7BAD, 0x7DDA, 0x7E4A, 0x7FA8, 0x817A, 0x821B, 0x8239, -/* 0750 */ 0x85A6, 0x8A6E, 0x8CCE, 0x8DF5, 0x9078, 0x9077, 0x92AD, 0x9291, -/* 0758 */ 0x9583, 0x9BAE, 0x524D, 0x5584, 0x6F38, 0x7136, 0x5168, 0x7985, -/* 0760 */ 0x7E55, 0x81B3, 0x7CCE, 0x564C, 0x5851, 0x5CA8, 0x63AA, 0x66FE, -/* 0768 */ 0x66FD, 0x695A, 0x72D9, 0x758F, 0x758E, 0x790E, 0x7956, 0x79DF, -/* 0770 */ 0x7C97, 0x7D20, 0x7D44, 0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20, -/* 0778 */ 0x50E7, 0x5275, 0x53CC, 0x53E2, 0x5009, 0x55AA, 0x58EE, 0x594F, -/* 0780 */ 0x723D, 0x5B8B, 0x5C64, 0x531D, 0x60E3, 0x60F3, 0x635C, 0x6383, -/* 0788 */ 0x633F, 0x63BB, 0xFFFD, 0x64CD, 0x65E9, 0x66F9, 0x5DE3, 0x69CD, -/* 0790 */ 0x69FD, 0x6F15, 0x71E5, 0x4E89, 0x75E9, 0x76F8, 0x7A93, 0x7CDF, -/* 0798 */ 0x7DCF, 0x7D9C, 0x8061, 0x8349, 0x8358, 0x846C, 0x84BC, 0x85FB, -/* 07A0 */ 0x88C5, 0x8D70, 0x9001, 0x906D, 0x9397, 0x971C, 0x9A12, 0x50CF, -/* 07A8 */ 0x5897, 0x618E, 0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, -/* 07B0 */ 0x5247, 0x5373, 0x606F, 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, -/* 07B8 */ 0x4FD7, 0x5C5E, 0x8CCA, 0x65CF, 0x7D9A, 0x5352, 0x8896, 0x5176, -/* 07C0 */ 0x63C3, 0x5B58, 0x5B6B, 0x5C0A, 0x640D, 0x6751, 0x905C, 0x4ED6, -/* 07C8 */ 0x591A, 0x592A, 0x6C70, 0x8A51, 0x553E, 0x5815, 0x59A5, 0x60F0, -/* 07D0 */ 0x6253, 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28, 0x4F53, -/* 07D8 */ 0x5806, 0x5BFE, 0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B, -/* 07E0 */ 0x6234, 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, -/* 07E8 */ 0x8CB8, 0x9000, 0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, -/* 07F0 */ 0x5927, 0x7B2C, 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, -/* 07F8 */ 0x5544, 0x5B85, 0x6258, 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, -/* 0800 */ 0x8A17, 0x9438, 0x6FC1, 0x8AFE, 0x8338, 0x51E7, 0x86F8, 0x53EA, -/* 0808 */ 0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, 0x8131, 0x5DFD, 0x7AEA, -/* 0810 */ 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, 0x8AB0, 0x4E39, -/* 0818 */ 0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E, 0x6DE1, -/* 0820 */ 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6, -/* 0828 */ 0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD, 0x6696, -/* 0830 */ 0x6A80, 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730, 0x5F1B, -/* 0838 */ 0x6065, 0x667A, 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4, 0x8718, -/* 0840 */ 0x9045, 0x99B3, 0x7BC9, 0x755C, 0x7AF9, 0x7B51, 0x84C4, 0xFFFD, -/* 0848 */ 0x9010, 0x79E9, 0x7A92, 0x8336, 0x5AE1, 0x7740, 0x4E2D, 0x4EF2, -/* 0850 */ 0x5B99, 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, 0x866B, 0x8877, -/* 0858 */ 0x8A3B, 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, 0x82E7, -/* 0860 */ 0x8457, 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5, 0x5E16, -/* 0868 */ 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2, 0x6311, -/* 0870 */ 0x66A2, 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074, 0x8139, -/* 0878 */ 0x8178, 0x8776, 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A, 0x9577, -/* 0880 */ 0x9802, 0x9CE5, 0x52C5, 0x6357, 0x76F4, 0x6715, 0x6C88, 0x73CD, -/* 0888 */ 0x8CC3, 0x93AE, 0x9673, 0x6D25, 0x589C, 0x690E, 0x69CC, 0x8FFD, -/* 0890 */ 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802, 0x63B4, 0x69FB, 0x4F43, -/* 0898 */ 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354, 0x693F, 0x6F70, -/* 08A0 */ 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, 0x91E3, 0x9DB4, -/* 08A8 */ 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448, 0x5824, -/* 08B0 */ 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C, 0x62B5, -/* 08B8 */ 0x633A, 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B, 0x7DE0, -/* 08C0 */ 0x8247, 0x8A02, 0x8AE6, 0x8E44, 0x9013, 0x90B8, 0x912D, 0x91D8, -/* 08C8 */ 0x9F0E, 0x6CE5, 0x6458, 0x64E2, 0x6575, 0x6EF4, 0x7684, 0x7B1B, -/* 08D0 */ 0x9069, 0x93D1, 0x6EBA, 0x54F2, 0x5FB9, 0x64A4, 0x8F4D, 0x8FED, -/* 08D8 */ 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55, 0x5E97, 0x6DFB, 0x7E8F, -/* 08E0 */ 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9, 0x4F1D, 0x6BBF, 0x6FB1, -/* 08E8 */ 0x7530, 0x96FB, 0x514E, 0x5410, 0x5835, 0x5857, 0x59AC, 0x5C60, -/* 08F0 */ 0x5F92, 0x6597, 0x675C, 0x6E21, 0x767B, 0x83DF, 0x8CED, 0x9014, -/* 08F8 */ 0x90FD, 0x934D, 0x7825, 0x783A, 0x52AA, 0x5EA6, 0x571F, 0x5974, -/* 0900 */ 0x6012, 0x5012, 0x515A, 0x51AC, 0xFFFD, 0x51CD, 0x5200, 0x5510, -/* 0908 */ 0x5854, 0x5858, 0x5957, 0x5B95, 0x5CF6, 0x5D8B, 0x60BC, 0x6295, -/* 0910 */ 0x642D, 0x6771, 0x6843, 0x68BC, 0x68DF, 0x76D7, 0x6DD8, 0x6E6F, -/* 0918 */ 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8, 0x7977, 0x7B49, 0x7B54, -/* 0920 */ 0x7B52, 0x7CD6, 0x7D71, 0x5230, 0x8463, 0x8569, 0x85E4, 0x8A0E, -/* 0928 */ 0x8B04, 0x8C46, 0x8E0F, 0x9003, 0x900F, 0x9419, 0x9676, 0x982D, -/* 0930 */ 0x9A30, 0x95D8, 0x50CD, 0x52D5, 0x540C, 0x5802, 0x5C0E, 0x61A7, -/* 0938 */ 0x649E, 0x6D1E, 0x77B3, 0x7AE5, 0x80F4, 0x8404, 0x9053, 0x9285, -/* 0940 */ 0x5CE0, 0x9D07, 0x533F, 0x5F97, 0x5FB3, 0x6D9C, 0x7279, 0x7763, -/* 0948 */ 0x79BF, 0x7BE4, 0x6BD2, 0x72EC, 0x8AAD, 0x6803, 0x6A61, 0x51F8, -/* 0950 */ 0x7A81, 0x6934, 0x5C4A, 0x9CF6, 0x82EB, 0x5BC5, 0x9149, 0x701E, -/* 0958 */ 0x5678, 0x5C6F, 0x60C7, 0x6566, 0x6C8C, 0x8C5A, 0x9041, 0x9813, -/* 0960 */ 0x5451, 0x66C7, 0x920D, 0x5948, 0x90A3, 0x5185, 0x4E4D, 0x51EA, -/* 0968 */ 0x8599, 0x8B0E, 0x7058, 0x637A, 0x934B, 0x6962, 0x99B4, 0x7E04, -/* 0970 */ 0x7577, 0x5357, 0x6960, 0x8EDF, 0x96E3, 0x6C5D, 0x4E8C, 0x5C3C, -/* 0978 */ 0x5F10, 0x8FE9, 0x5302, 0x8CD1, 0x8089, 0x8679, 0x5EFF, 0x65E5, -/* 0980 */ 0x4E73, 0x5165, 0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, -/* 0988 */ 0x8A8D, 0x6FE1, 0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, -/* 0990 */ 0x5E74, 0x5FF5, 0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, -/* 0998 */ 0x4E4B, 0x57DC, 0x56A2, 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, -/* 09A0 */ 0x81BF, 0x8FB2, 0x8997, 0x86A4, 0x5DF4, 0x628A, 0x64AD, 0x8987, -/* 09A8 */ 0x6777, 0x6CE2, 0x6D3E, 0x7436, 0x7834, 0x5A46, 0x7F75, 0x82AD, -/* 09B0 */ 0x99AC, 0x4FF3, 0x5EC3, 0x62DD, 0x6392, 0x6557, 0x676F, 0x76C3, -/* 09B8 */ 0x724C, 0x80CC, 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, 0x5A92, -/* 09C0 */ 0x6885, 0xFFFD, 0x6973, 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, -/* 09C8 */ 0x966A, 0x9019, 0x877F, 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, -/* 09D0 */ 0x535A, 0x62CD, 0x67CF, 0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, -/* 09D8 */ 0x8584, 0x8FEB, 0x66DD, 0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, -/* 09E0 */ 0x9EA6, 0x51FD, 0x7BB1, 0x7872, 0x7BB8, 0x8087, 0x7B48, 0x6AE8, -/* 09E8 */ 0x5E61, 0x808C, 0x7551, 0x7560, 0x516B, 0x9262, 0x6E8C, 0x767A, -/* 09F0 */ 0x9197, 0x9AEA, 0x4F10, 0x7F70, 0x629C, 0x7B4F, 0x95A5, 0x9CE9, -/* 09F8 */ 0x567A, 0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, 0x534A, 0x53CD, -/* 0A00 */ 0x53DB, 0x5E06, 0x642C, 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248, -/* 0A08 */ 0x72AF, 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4, -/* 0A10 */ 0x91C6, 0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4, -/* 0A18 */ 0x78D0, 0x8543, 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87, -/* 0A20 */ 0x5F7C, 0x60B2, 0x6249, 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, -/* 0A28 */ 0x75B2, 0x76AE, 0x7891, 0x79D8, 0x7DCB, 0x7F77, 0x80A5, 0x88AB, -/* 0A30 */ 0x8AB9, 0x8CBB, 0x907F, 0x975E, 0x98DB, 0x6A0B, 0x7C38, 0x5099, -/* 0A38 */ 0x5C3E, 0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709, 0x7F8E, 0x9F3B, -/* 0A40 */ 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, 0x819D, 0x83F1, -/* 0A48 */ 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, 0x6867, 0x59EB, -/* 0A50 */ 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19, 0x6C37, -/* 0A58 */ 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79, 0x5EDF, 0x63CF, -/* 0A60 */ 0x75C5, 0x79D2, 0x82D7, 0x9328, 0x92F2, 0x849C, 0x86ED, 0x9C2D, -/* 0A68 */ 0x54C1, 0x5F6C, 0x658C, 0x6D5C, 0x7015, 0x8CA7, 0x8CD3, 0x983B, -/* 0A70 */ 0x654F, 0x74F6, 0x4E0D, 0x4ED8, 0x57E0, 0x592B, 0x5A66, 0x5BCC, -/* 0A78 */ 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, 0x6577, 0xFFFD, 0x65A7, -/* 0A80 */ 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299, 0x8B5C, -/* 0A88 */ 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB, 0x6B66, -/* 0A90 */ 0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8, 0x847A, -/* 0A98 */ 0x8557, 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D, 0x798F, 0x8179, -/* 0AA0 */ 0x8907, 0x8986, 0x6DF5, 0x5F17, 0x6255, 0x6CB8, 0x4ECF, 0x7269, -/* 0AA8 */ 0x9B92, 0x5206, 0x543B, 0x5674, 0x58B3, 0x61A4, 0x626E, 0x711A, -/* 0AB0 */ 0x596E, 0x7C89, 0x7CDE, 0x7D1B, 0x96F0, 0x6587, 0x805E, 0x4E19, -/* 0AB8 */ 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73, 0x5F0A, 0x67C4, 0x4E26, -/* 0AC0 */ 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801, 0x50FB, 0x58C1, 0x7656, -/* 0AC8 */ 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86, 0x504F, 0x5909, 0x7247, -/* 0AD0 */ 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D, 0x4FBF, 0x52C9, 0x5A29, -/* 0AD8 */ 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA, 0x5703, 0x6355, 0x6B69, -/* 0AE0 */ 0x752B, 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893, 0x6155, 0x620A, -/* 0AE8 */ 0x66AE, 0x6BCD, 0x7C3F, 0x83E9, 0x5023, 0x4FF8, 0x5305, 0x5446, -/* 0AF0 */ 0x5831, 0x5949, 0x5B9D, 0x5CF0, 0x5CEF, 0x5D29, 0x5E96, 0x62B1, -/* 0AF8 */ 0x6367, 0x653E, 0x65B9, 0x670B, 0x6CD5, 0x6CE1, 0x70F9, 0x7832, -/* 0B00 */ 0x7E2B, 0x80DE, 0x82B3, 0x840C, 0x84EC, 0x8702, 0x8912, 0x8A2A, -/* 0B08 */ 0x8C4A, 0x90A6, 0x92D2, 0x98FD, 0x9CF3, 0x9D6C, 0x4E4F, 0x4EA1, -/* 0B10 */ 0x508D, 0x5256, 0x574A, 0x59A8, 0x5E3D, 0x5FD8, 0x5FD9, 0x623F, -/* 0B18 */ 0x66B4, 0x671B, 0x67D0, 0x68D2, 0x5192, 0x7D21, 0x80AA, 0x81A8, -/* 0B20 */ 0x8B00, 0x8C8C, 0x8CBF, 0x927E, 0x9632, 0x5420, 0x982C, 0x5317, -/* 0B28 */ 0x50D5, 0x535C, 0x58A8, 0x64B2, 0x6734, 0x7267, 0x7766, 0x7A46, -/* 0B30 */ 0x91E6, 0x52C3, 0x6CA1, 0x6B86, 0x5800, 0x5E4C, 0x5954, 0x672C, -/* 0B38 */ 0x7FFB, 0x51E1, 0x76C6, 0xFFFD, 0x6469, 0x78E8, 0x9B54, 0x9EBB, -/* 0B40 */ 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE, 0x54E9, 0x69D9, 0x5E55, -/* 0B48 */ 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52, 0x685D, 0x4EA6, 0x4FE3, -/* 0B50 */ 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4, 0x4FAD, 0x7E6D, 0x9EBF, -/* 0B58 */ 0x4E07, 0x6162, 0x6E80, 0x6F2B, 0x8513, 0x5473, 0x672A, 0x9B45, -/* 0B60 */ 0x5DF3, 0x7B95, 0x5CAC, 0x5BC6, 0x871C, 0x6E4A, 0x84D1, 0x7A14, -/* 0B68 */ 0x8108, 0x5999, 0x7C8D, 0x6C11, 0x7720, 0x52D9, 0x5922, 0x7121, -/* 0B70 */ 0x725F, 0x77DB, 0x9727, 0x9D61, 0x690B, 0x5A7F, 0x5A18, 0x51A5, -/* 0B78 */ 0x540D, 0x547D, 0x660E, 0x76DF, 0x8FF7, 0x9298, 0x9CF4, 0x59EA, -/* 0B80 */ 0x725D, 0x6EC5, 0x514D, 0x68C9, 0x7DBF, 0x7DEC, 0x9762, 0x9EBA, -/* 0B88 */ 0x6478, 0x6A21, 0x8302, 0x5984, 0x5B5F, 0x6BDB, 0x731B, 0x76F2, -/* 0B90 */ 0x7DB2, 0x8017, 0x8499, 0x5132, 0x6728, 0x9ED9, 0x76EE, 0x6762, -/* 0B98 */ 0x52FF, 0x9905, 0x5C24, 0x623B, 0x7C7E, 0x8CB0, 0x554F, 0x60B6, -/* 0BA0 */ 0x7D0B, 0x9580, 0x5301, 0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036, -/* 0BA8 */ 0x91CE, 0x5F25, 0x77E2, 0x5384, 0x5F79, 0x7D04, 0x85AC, 0x8A33, -/* 0BB0 */ 0x8E8D, 0x9756, 0x67F3, 0x85AE, 0x9453, 0x6109, 0x6108, 0x6CB9, -/* 0BB8 */ 0x7652, 0x8AED, 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB, -/* 0BC0 */ 0x5BA5, 0x5E7D, 0x60A0, 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67, -/* 0BC8 */ 0x6D8C, 0x7336, 0x7337, 0x7531, 0x7950, 0x88D5, 0x8A98, 0x904A, -/* 0BD0 */ 0x9091, 0x90F5, 0x96C4, 0x878D, 0x5915, 0x4E88, 0x4F59, 0x4E0E, -/* 0BD8 */ 0x8A89, 0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996, 0x5BB9, 0x5EB8, -/* 0BE0 */ 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, 0x6D0B, 0x6EB6, -/* 0BE8 */ 0x7194, 0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9, 0x8981, -/* 0BF0 */ 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32, -/* 0BF8 */ 0xFFFD, 0x6C83, 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, -/* 0C00 */ 0x88F8, 0x6765, 0x83B1, 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, -/* 0C08 */ 0x916A, 0x4E71, 0x5375, 0x5D50, 0x6B04, 0x6FEB, 0x85CD, 0x862D, -/* 0C10 */ 0x89A7, 0x5229, 0x540F, 0x5C65, 0x674E, 0x68A8, 0x7406, 0x7483, -/* 0C18 */ 0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, 0x5F8B, 0x7387, -/* 0C20 */ 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C, 0x7409, -/* 0C28 */ 0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6, 0x616E, -/* 0C30 */ 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, 0x51CC, 0x5BEE, -/* 0C38 */ 0x6599, 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, 0x7A1C, 0x7CE7, -/* 0C40 */ 0x826F, 0x8AD2, 0x907C, 0x91CF, 0x9675, 0x9818, 0x529B, 0x7DD1, -/* 0C48 */ 0x502B, 0x5398, 0x6797, 0x6DCB, 0x71D0, 0x7433, 0x81E8, 0x8F2A, -/* 0C50 */ 0x96A3, 0x9C57, 0x9E9F, 0x7460, 0x5841, 0x6D99, 0x7D2F, 0x985E, -/* 0C58 */ 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, 0x5DBA, 0x601C, 0x73B2, -/* 0C60 */ 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, 0x9E97, 0x9F62, -/* 0C68 */ 0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9, 0x604B, -/* 0C70 */ 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F, 0x84EE, 0x9023, -/* 0C78 */ 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2, 0x8DEF, 0x9732, -/* 0C80 */ 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C, 0x6994, 0x6D6A, -/* 0C88 */ 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001, 0x807E, 0x874B, 0x90CE, -/* 0C90 */ 0x516D, 0x9E93, 0x7984, 0x808B, 0x9332, 0x8AD6, 0x502D, 0x548C, -/* 0C98 */ 0x8A71, 0x6B6A, 0x8CC4, 0x8107, 0x60D1, 0x67A0, 0x9DF2, 0x4E99, -/* 0CA0 */ 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568, 0x6900, 0x6E7E, 0x7897, -/* 0CA8 */ 0x8155, 0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, 0x4E36, 0x4E3C, -/* 0CB0 */ 0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, 0x4E8A, -/* 0CB8 */ 0x8212, 0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0, -/* 0CC0 */ 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7, -/* 0CC8 */ 0x4EDE, 0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, 0x4F30, 0x4F5B, -/* 0CD0 */ 0x4F5D, 0x4F57, 0x4F47, 0x4F76, 0x4F88, 0x4F8F, 0x4F98, 0x4F7B, -/* 0CD8 */ 0x4F69, 0x4F70, 0x4F91, 0x4F6F, 0x4F86, 0x4F96, 0x5118, 0x4FD4, -/* 0CE0 */ 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB, 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4, -/* 0CE8 */ 0x4FE5, 0x501A, 0x5028, 0x5014, 0x502A, 0x5025, 0x5005, 0x4F1C, -/* 0CF0 */ 0x4FF6, 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, 0x5011, 0x5006, -/* 0CF8 */ 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505A, 0x5056, -/* 0D00 */ 0x506C, 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, 0x50B2, 0x50C9, -/* 0D08 */ 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, 0x50ED, 0x50E3, -/* 0D10 */ 0x50EE, 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, 0x5116, 0x5115, -/* 0D18 */ 0x5114, 0x511A, 0x5121, 0x513A, 0x5137, 0x513C, 0x513B, 0x513F, -/* 0D20 */ 0x5140, 0x5152, 0x514C, 0x5154, 0x5162, 0x7AF8, 0x5169, 0x516A, -/* 0D28 */ 0x516E, 0x5180, 0x5182, 0x56D8, 0x518C, 0x5189, 0x518F, 0x5191, -/* 0D30 */ 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, 0x51A2, 0x51A9, 0x51AA, -/* 0D38 */ 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5, 0x51BD, 0x51C5, -/* 0D40 */ 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, 0xFFFD, 0x51F0, -/* 0D48 */ 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, 0x522A, -/* 0D50 */ 0x522E, 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C, 0x525E, -/* 0D58 */ 0x5254, 0x526A, 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, 0x528D, -/* 0D60 */ 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8FA8, 0x8FA7, 0x52AC, -/* 0D68 */ 0x52AD, 0x52BC, 0x52B5, 0x52C1, 0x52CD, 0x52D7, 0x52DE, 0x52E3, -/* 0D70 */ 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, 0x52F8, 0x52F9, 0x5306, -/* 0D78 */ 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315, 0x531A, 0x5323, -/* 0D80 */ 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345, 0x4E17, -/* 0D88 */ 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E, 0x5918, 0x537B, -/* 0D90 */ 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5, 0x53AE, 0x53B0, -/* 0D98 */ 0x53B6, 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC, 0x71EE, 0x53EE, -/* 0DA0 */ 0x53E8, 0x53ED, 0x53FA, 0x5401, 0x543D, 0x5440, 0x542C, 0x542D, -/* 0DA8 */ 0x543C, 0x542E, 0x5436, 0x5429, 0x541D, 0x544E, 0x548F, 0x5475, -/* 0DB0 */ 0x548E, 0x545F, 0x5471, 0x5477, 0x5470, 0x5492, 0x547B, 0x5480, -/* 0DB8 */ 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, 0x54A2, 0x54B8, 0x54A5, -/* 0DC0 */ 0x54AC, 0x54C4, 0x54C8, 0x54A8, 0x54AB, 0x54C2, 0x54A4, 0x54BE, -/* 0DC8 */ 0x54BC, 0x54D8, 0x54E5, 0x54E6, 0x550F, 0x5514, 0x54FD, 0x54EE, -/* 0DD0 */ 0x54ED, 0x54FA, 0x54E2, 0x5539, 0x5540, 0x5563, 0x554C, 0x552E, -/* 0DD8 */ 0x555C, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555D, 0x5599, -/* 0DE0 */ 0x5580, 0x54AF, 0x558A, 0x559F, 0x557B, 0x557E, 0x5598, 0x559E, -/* 0DE8 */ 0x55AE, 0x557C, 0x5583, 0x55A9, 0x5587, 0x55A8, 0x55DA, 0x55C5, -/* 0DF0 */ 0x55DF, 0x55C4, 0x55DC, 0x55E4, 0x55D4, 0x5614, 0x55F7, 0x5616, -/* 0DF8 */ 0x55FE, 0x55FD, 0x561B, 0x55F9, 0x564E, 0x5650, 0x71DF, 0x5634, -/* 0E00 */ 0x5636, 0x5632, 0x5638, 0xFFFD, 0x566B, 0x5664, 0x562F, 0x566C, -/* 0E08 */ 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0, 0x5694, 0x568F, 0x56A5, -/* 0E10 */ 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC, 0x56C1, 0x56C3, 0x56C0, -/* 0E18 */ 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7, 0x56EE, 0x56F9, 0x5700, -/* 0E20 */ 0x56FF, 0x5704, 0x5709, 0x5708, 0x570B, 0x570D, 0x5713, 0x5718, -/* 0E28 */ 0x5716, 0x55C7, 0x571C, 0x5726, 0x5737, 0x5738, 0x574E, 0x573B, -/* 0E30 */ 0x5740, 0x574F, 0x5769, 0x57C0, 0x5788, 0x5761, 0x577F, 0x5789, -/* 0E38 */ 0x5793, 0x57A0, 0x57B3, 0x57A4, 0x57AA, 0x57B0, 0x57C3, 0x57C6, -/* 0E40 */ 0x57D4, 0x57D2, 0x57D3, 0x580A, 0x57D6, 0x57E3, 0x580B, 0x5819, -/* 0E48 */ 0x581D, 0x5872, 0x5821, 0x5862, 0x584B, 0x5870, 0x6BC0, 0x5852, -/* 0E50 */ 0x583D, 0x5879, 0x5885, 0x58B9, 0x589F, 0x58AB, 0x58BA, 0x58DE, -/* 0E58 */ 0x58BB, 0x58B8, 0x58AE, 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, -/* 0E60 */ 0x58D8, 0x58E5, 0x58DC, 0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, -/* 0E68 */ 0x58FB, 0x58FC, 0x58FD, 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, -/* 0E70 */ 0x5925, 0x592C, 0x592D, 0x5932, 0x5938, 0x593E, 0x7AD2, 0x5955, -/* 0E78 */ 0x5950, 0x594E, 0x595A, 0x5958, 0x5962, 0x5960, 0x5967, 0x596C, -/* 0E80 */ 0x5969, 0x5978, 0x5981, 0x599D, 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, -/* 0E88 */ 0x59C6, 0x59E8, 0x59DC, 0x598D, 0x59D9, 0x59DA, 0x5A25, 0x5A1F, -/* 0E90 */ 0x5A11, 0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, 0x5A49, 0x5A35, -/* 0E98 */ 0x5A36, 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB, 0x5AC2, -/* 0EA0 */ 0x5ABD, 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB, -/* 0EA8 */ 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E, -/* 0EB0 */ 0x5B43, 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65, -/* 0EB8 */ 0x5B69, 0x5B70, 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80, -/* 0EC0 */ 0xFFFD, 0x5B83, 0x5BA6, 0x5BB8, 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, -/* 0EC8 */ 0x5BD0, 0x5BE4, 0x5BE6, 0x5BE2, 0x5BDE, 0x5BE5, 0x5BEB, 0x5BF0, -/* 0ED0 */ 0x5BF6, 0x5BF3, 0x5C05, 0x5C07, 0x5C08, 0x5C0D, 0x5C13, 0x5C20, -/* 0ED8 */ 0x5C22, 0x5C28, 0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E, 0x5C53, -/* 0EE0 */ 0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79, -/* 0EE8 */ 0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC, -/* 0EF0 */ 0x5CB7, 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA, -/* 0EF8 */ 0x5CED, 0x5D8C, 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F, -/* 0F00 */ 0x5D1B, 0x5D11, 0x5D14, 0x5D22, 0x5D1A, 0x5D19, 0x5D18, 0x5D4C, -/* 0F08 */ 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, 0x5D73, 0x5D76, 0x5D87, 0x5D84, -/* 0F10 */ 0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, 0x5DBD, 0x5D90, 0x5DB7, -/* 0F18 */ 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, 0x5DDB, 0x5DEB, -/* 0F20 */ 0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B, 0x5E36, -/* 0F28 */ 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F, -/* 0F30 */ 0x5E62, 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F, -/* 0F38 */ 0x5EA0, 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF, 0x5ED6, 0x5EE3, -/* 0F40 */ 0x5EDD, 0x5EDA, 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8, 0x5EE9, 0x5EEC, -/* 0F48 */ 0x5EF1, 0x5EF3, 0x5EF0, 0x5EF4, 0x5EF8, 0x5EFE, 0x5F03, 0x5F09, -/* 0F50 */ 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, 0x5F16, 0x5F29, 0x5F2D, 0x5F38, -/* 0F58 */ 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, 0x5F51, 0x5F56, 0x5F57, -/* 0F60 */ 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83, 0x5F82, 0x5F7F, -/* 0F68 */ 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99, 0x5F98, 0x5FA0, -/* 0F70 */ 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4, 0x5FF8, 0x5FF1, -/* 0F78 */ 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060, 0xFFFD, 0x6019, 0x6010, -/* 0F80 */ 0x6029, 0x600E, 0x6031, 0x601B, 0x6015, 0x602B, 0x6026, 0x600F, -/* 0F88 */ 0x603A, 0x605A, 0x6041, 0x606A, 0x6077, 0x605F, 0x604A, 0x6046, -/* 0F90 */ 0x604D, 0x6063, 0x6043, 0x6064, 0x6042, 0x606C, 0x606B, 0x6059, -/* 0F98 */ 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A, 0x6084, 0x609B, 0x6096, -/* 0FA0 */ 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1, 0x60B8, 0x60E0, 0x60D3, -/* 0FA8 */ 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5, 0x60D8, 0x614D, 0x6115, -/* 0FB0 */ 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4, 0x60FA, 0x6103, 0x6121, -/* 0FB8 */ 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147, 0x613E, 0x6128, 0x6127, -/* 0FC0 */ 0x614A, 0x613F, 0x613C, 0x612C, 0x6134, 0x613D, 0x6142, 0x6144, -/* 0FC8 */ 0x6173, 0x6177, 0x6158, 0x6159, 0x615A, 0x616B, 0x6174, 0x616F, -/* 0FD0 */ 0x6165, 0x6171, 0x615F, 0x615D, 0x6153, 0x6175, 0x6199, 0x6196, -/* 0FD8 */ 0x6187, 0x61AC, 0x6194, 0x619A, 0x618A, 0x6191, 0x61AB, 0x61AE, -/* 0FE0 */ 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8, 0x61C3, 0x61C6, 0x61BA, -/* 0FE8 */ 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3, 0x61F6, 0x61FA, 0x61F4, -/* 0FF0 */ 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200, 0x6208, 0x6209, 0x620D, -/* 0FF8 */ 0x620C, 0x6214, 0x621B, 0x621E, 0x6221, 0x622A, 0x622E, 0x6230, -/* 1000 */ 0x6232, 0x6233, 0x6241, 0x624E, 0x625E, 0x6263, 0x625B, 0x6260, -/* 1008 */ 0x6268, 0x627C, 0x6282, 0x6289, 0x627E, 0x6292, 0x6293, 0x6296, -/* 1010 */ 0x62D4, 0x6283, 0x6294, 0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, -/* 1018 */ 0x62C6, 0x64D4, 0x62C8, 0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, -/* 1020 */ 0x629B, 0x62C9, 0x630C, 0x62EE, 0x62F1, 0x6327, 0x6302, 0x6308, -/* 1028 */ 0x62EF, 0x62F5, 0x6350, 0x633E, 0x634D, 0x641C, 0x634F, 0x6396, -/* 1030 */ 0x638E, 0x6380, 0x63AB, 0x6376, 0x63A3, 0x638F, 0x6389, 0x639F, -/* 1038 */ 0x63B5, 0x636B, 0xFFFD, 0x6369, 0x63BE, 0x63E9, 0x63C0, 0x63C6, -/* 1040 */ 0x63E3, 0x63C9, 0x63D2, 0x63F6, 0x63C4, 0x6416, 0x6434, 0x6406, -/* 1048 */ 0x6413, 0x6426, 0x6436, 0x651D, 0x6417, 0x6428, 0x640F, 0x6467, -/* 1050 */ 0x646F, 0x6476, 0x644E, 0x652A, 0x6495, 0x6493, 0x64A5, 0x64A9, -/* 1058 */ 0x6488, 0x64BC, 0x64DA, 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, -/* 1060 */ 0x64C2, 0x64F1, 0x64E7, 0x8209, 0x64E0, 0x64E1, 0x62AC, 0x64E3, -/* 1068 */ 0x64EF, 0x652C, 0x64F6, 0x64F4, 0x64F2, 0x64FA, 0x6500, 0x64FD, -/* 1070 */ 0x6518, 0x651C, 0x6505, 0x6524, 0x6523, 0x652B, 0x6534, 0x6535, -/* 1078 */ 0x6537, 0x6536, 0x6538, 0x754B, 0x6548, 0x6556, 0x6555, 0x654D, -/* 1080 */ 0x6558, 0x655E, 0x655D, 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A, -/* 1088 */ 0x659B, 0x659F, 0x65AB, 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, -/* 1090 */ 0x65CC, 0x65D2, 0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, -/* 1098 */ 0x660A, 0x6603, 0x65FB, 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, -/* 10A0 */ 0x664F, 0x6644, 0x6649, 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, -/* 10A8 */ 0x6668, 0x665F, 0x6662, 0x6670, 0x6683, 0x6688, 0x668E, 0x6689, -/* 10B0 */ 0x6684, 0x6698, 0x669D, 0x66C1, 0x66B9, 0x66C9, 0x66BE, 0x66BC, -/* 10B8 */ 0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, 0x66E6, 0x66E9, -/* 10C0 */ 0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726, 0x6727, -/* 10C8 */ 0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746, -/* 10D0 */ 0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9, -/* 10D8 */ 0x677C, 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, 0x6785, 0x67B7, -/* 10E0 */ 0x67EF, 0x67B4, 0x67EC, 0x67B3, 0x67E9, 0x67B8, 0x67E4, 0x67DE, -/* 10E8 */ 0x67DD, 0x67E2, 0x67EE, 0x67B9, 0x67CE, 0x67C6, 0x67E7, 0x6A9C, -/* 10F0 */ 0x681E, 0x6846, 0x6829, 0x6840, 0x684D, 0x6832, 0x684E, 0xFFFD, -/* 10F8 */ 0x68B3, 0x682B, 0x6859, 0x6863, 0x6877, 0x687F, 0x689F, 0x688F, -/* 1100 */ 0x68AD, 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9, 0x6874, -/* 1108 */ 0x68B5, 0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA, -/* 1110 */ 0x6908, 0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, 0x68CD, 0x68D4, -/* 1118 */ 0x68E7, 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, 0x68E3, 0x6925, -/* 1120 */ 0x68F9, 0x68E0, 0x68EF, 0x6928, 0x692A, 0x691A, 0x6923, 0x6921, -/* 1128 */ 0x68C6, 0x6979, 0x6977, 0x695C, 0x6978, 0x696B, 0x6954, 0x697E, -/* 1130 */ 0x696E, 0x6939, 0x6974, 0x693D, 0x6959, 0x6930, 0x6961, 0x695E, -/* 1138 */ 0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE, 0x69D0, 0x69BF, 0x69C1, -/* 1140 */ 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD, 0x69BB, 0x69C3, -/* 1148 */ 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995, 0x69B4, 0x69DE, -/* 1150 */ 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9, 0x69F2, 0x69E7, -/* 1158 */ 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, 0x6A0A, 0x6A12, -/* 1160 */ 0x6AC1, 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, 0x6A36, 0x6A78, -/* 1168 */ 0x6A47, 0x6A62, 0x6A59, 0x6A66, 0x6A48, 0x6A38, 0x6A22, 0x6A90, -/* 1170 */ 0x6A8D, 0x6AA0, 0x6A84, 0x6AA2, 0x6AA3, 0x6A97, 0x8617, 0x6ABB, -/* 1178 */ 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, 0x6AAC, 0x6ADE, 0x6AD1, 0x6ADF, -/* 1180 */ 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05, 0x8616, 0x6AFA, 0x6B12, -/* 1188 */ 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37, 0x76DC, 0x6B39, 0x98EE, -/* 1190 */ 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59, 0x6B54, 0x6B5B, 0x6B5F, -/* 1198 */ 0x6B61, 0x6B78, 0x6B79, 0x6B7F, 0x6B80, 0x6B84, 0x6B83, 0x6B8D, -/* 11A0 */ 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, 0x6BAA, 0x6BAB, 0x6BAF, 0x6BB2, -/* 11A8 */ 0x6BB1, 0x6BB3, 0x6BB7, 0x6BBC, 0x6BC6, 0x6BCB, 0x6BD3, 0x6BDF, -/* 11B0 */ 0x6BEC, 0x6BEB, 0x6BF3, 0x6BEF, 0xFFFD, 0x9EBE, 0x6C08, 0x6C13, -/* 11B8 */ 0x6C14, 0x6C1B, 0x6C24, 0x6C23, 0x6C5E, 0x6C55, 0x6C62, 0x6C6A, -/* 11C0 */ 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B, 0x6C7E, 0x6C68, 0x6C73, -/* 11C8 */ 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD, 0x6CD7, 0x6CC5, -/* 11D0 */ 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE, 0x6CBA, 0x6CDB, 0x6CEF, 0x6CD9, -/* 11D8 */ 0x6CEA, 0x6D1F, 0x884D, 0x6D36, 0x6D2B, 0x6D3D, 0x6D38, 0x6D19, -/* 11E0 */ 0x6D35, 0x6D33, 0x6D12, 0x6D0C, 0x6D63, 0x6D93, 0x6D64, 0x6D5A, -/* 11E8 */ 0x6D79, 0x6D59, 0x6D8E, 0x6D95, 0x6FE4, 0x6D85, 0x6DF9, 0x6E15, -/* 11F0 */ 0x6E0A, 0x6DB5, 0x6DC7, 0x6DE6, 0x6DB8, 0x6DC6, 0x6DEC, 0x6DDE, -/* 11F8 */ 0x6DCC, 0x6DE8, 0x6DD2, 0x6DC5, 0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, -/* 1200 */ 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E, 0x6E2E, 0x6E19, 0x6E72, 0x6E5F, -/* 1208 */ 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B, 0x6E76, 0x6E4D, 0x6E1F, 0x6E43, -/* 1210 */ 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF, 0x6E1D, 0x6E38, 0x6E82, 0x6EAA, -/* 1218 */ 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3, 0x6EBD, 0x6EAF, 0x6EC4, 0x6EB2, -/* 1220 */ 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5, 0x6EC2, 0x6E9F, 0x6F41, 0x6F11, -/* 1228 */ 0x704C, 0x6EEC, 0x6EF8, 0x6EFE, 0x6F3F, 0x6EF2, 0x6F31, 0x6EEF, -/* 1230 */ 0x6F32, 0x6ECC, 0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, -/* 1238 */ 0x6F81, 0x6F80, 0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, -/* 1240 */ 0x6F58, 0x6F8E, 0x6F91, 0x6FC2, 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, -/* 1248 */ 0x6FA4, 0x6FB9, 0x6FC6, 0x6FAA, 0x6FDF, 0x6FD5, 0x6FEC, 0x6FD4, -/* 1250 */ 0x6FD8, 0x6FF1, 0x6FEE, 0x6FDB, 0x7009, 0x700B, 0x6FFA, 0x7011, -/* 1258 */ 0x7001, 0x700F, 0x6FFE, 0x701B, 0x701A, 0x6F74, 0x701D, 0x7018, -/* 1260 */ 0x701F, 0x7030, 0x703E, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, -/* 1268 */ 0x70AF, 0x70F1, 0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB, -/* 1270 */ 0x70DD, 0xFFFD, 0x70D9, 0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, -/* 1278 */ 0x7155, 0x7188, 0x7166, 0x7162, 0x714C, 0x7156, 0x716C, 0x718F, -/* 1280 */ 0x71FB, 0x7184, 0x7195, 0x71A8, 0x71AC, 0x71D7, 0x71B9, 0x71BE, -/* 1288 */ 0x71D2, 0x71C9, 0x71D4, 0x71CE, 0x71E0, 0x71EC, 0x71E7, 0x71F5, -/* 1290 */ 0x71FC, 0x71F9, 0x71FF, 0x720D, 0x7210, 0x721B, 0x7228, 0x722D, -/* 1298 */ 0x722C, 0x7230, 0x7232, 0x723B, 0x723C, 0x723F, 0x7240, 0x7246, -/* 12A0 */ 0x724B, 0x7258, 0x7274, 0x727E, 0x7282, 0x7281, 0x7287, 0x7292, -/* 12A8 */ 0x7296, 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, 0x72C6, 0x72C4, -/* 12B0 */ 0x72CE, 0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, 0x72F7, 0x500F, -/* 12B8 */ 0x7317, 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, 0x732F, 0x7329, -/* 12C0 */ 0x7325, 0x733E, 0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A, 0x7368, -/* 12C8 */ 0x7370, 0x7378, 0x7375, 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE, -/* 12D0 */ 0x73BB, 0x73C0, 0x73E5, 0x73EE, 0x73DE, 0x74A2, 0x7405, 0x746F, -/* 12D8 */ 0x7425, 0x73F8, 0x7432, 0x743A, 0x7455, 0x743F, 0x745F, 0x7459, -/* 12E0 */ 0x7441, 0x745C, 0x7469, 0x7470, 0x7463, 0x746A, 0x7476, 0x747E, -/* 12E8 */ 0x748B, 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, 0x73F1, 0x74E0, -/* 12F0 */ 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, 0x74F1, 0x74F8, -/* 12F8 */ 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, 0x750D, 0x7515, -/* 1300 */ 0x7513, 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, 0x754D, 0x754A, -/* 1308 */ 0x7549, 0x755B, 0x7546, 0x755A, 0x7569, 0x7564, 0x7567, 0x756B, -/* 1310 */ 0x756D, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758A, 0x7589, -/* 1318 */ 0x7582, 0x7594, 0x759A, 0x759D, 0x75A5, 0x75A3, 0x75C2, 0x75B3, -/* 1320 */ 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, 0x75B1, 0x75CD, 0x75CA, -/* 1328 */ 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF, 0xFFFD, 0x75FC, -/* 1330 */ 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, 0x7609, -/* 1338 */ 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630, -/* 1340 */ 0x763B, 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, 0x7662, -/* 1348 */ 0x7668, 0x7669, 0x766A, 0x7667, 0x766C, 0x7670, 0x7672, 0x7676, -/* 1350 */ 0x7678, 0x767C, 0x7680, 0x7683, 0x7688, 0x768B, 0x768E, 0x7696, -/* 1358 */ 0x7693, 0x7699, 0x769A, 0x76B0, 0x76B4, 0x76B8, 0x76B9, 0x76BA, -/* 1360 */ 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, 0x76E1, 0x76E5, 0x76E7, -/* 1368 */ 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704, 0x7729, 0x7724, -/* 1370 */ 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738, 0x7747, 0x775A, -/* 1378 */ 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E, 0x7779, 0x778E, -/* 1380 */ 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6, 0x77B9, 0x77BF, -/* 1388 */ 0x77BC, 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7, 0x77DA, 0x77DC, -/* 1390 */ 0x77E3, 0x77EE, 0x77FC, 0x780C, 0x7812, 0x7926, 0x7820, 0x792A, -/* 1398 */ 0x7845, 0x788E, 0x7874, 0x7886, 0x787C, 0x789A, 0x788C, 0x78A3, -/* 13A0 */ 0x78B5, 0x78AA, 0x78AF, 0x78D1, 0x78C6, 0x78CB, 0x78D4, 0x78BE, -/* 13A8 */ 0x78BC, 0x78C5, 0x78CA, 0x78EC, 0x78E7, 0x78DA, 0x78FD, 0x78F4, -/* 13B0 */ 0x7907, 0x7912, 0x7911, 0x7919, 0x792C, 0x792B, 0x7940, 0x7960, -/* 13B8 */ 0x7957, 0x795F, 0x795A, 0x7955, 0x7953, 0x797A, 0x797F, 0x798A, -/* 13C0 */ 0x799D, 0x79A7, 0x9F4B, 0x79AA, 0x79AE, 0x79B3, 0x79B9, 0x79BA, -/* 13C8 */ 0x79C9, 0x79D5, 0x79E7, 0x79EC, 0x79E1, 0x79E3, 0x7A08, 0x7A0D, -/* 13D0 */ 0x7A18, 0x7A19, 0x7A20, 0x7A1F, 0x7980, 0x7A31, 0x7A3B, 0x7A3E, -/* 13D8 */ 0x7A37, 0x7A43, 0x7A57, 0x7A49, 0x7A61, 0x7A62, 0x7A69, 0x9F9D, -/* 13E0 */ 0x7A70, 0x7A79, 0x7A7D, 0x7A88, 0x7A97, 0x7A95, 0x7A98, 0x7A96, -/* 13E8 */ 0x7AA9, 0x7AC8, 0x7AB0, 0xFFFD, 0x7AB6, 0x7AC5, 0x7AC4, 0x7ABF, -/* 13F0 */ 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF, 0x7AD5, 0x7AD3, 0x7AD9, -/* 13F8 */ 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6, 0x7AED, 0x7AF0, 0x7B02, -/* 1400 */ 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18, 0x7B19, 0x7B1E, 0x7B35, -/* 1408 */ 0x7B28, 0x7B36, 0x7B50, 0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, -/* 1410 */ 0x7B45, 0x7B75, 0x7B65, 0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, -/* 1418 */ 0x7B6E, 0x7B9D, 0x7B98, 0x7B9F, 0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, -/* 1420 */ 0x7B92, 0x7B8F, 0x7B5D, 0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, -/* 1428 */ 0x7BB4, 0x7BC6, 0x7BDD, 0x7BE9, 0x7C11, 0x7C14, 0x7BE6, 0x7BE5, -/* 1430 */ 0x7C60, 0x7C00, 0x7C07, 0x7C13, 0x7BF3, 0x7BF7, 0x7C17, 0x7C0D, -/* 1438 */ 0x7BF6, 0x7C23, 0x7C27, 0x7C2A, 0x7C1F, 0x7C37, 0x7C2B, 0x7C3D, -/* 1440 */ 0x7C4C, 0x7C43, 0x7C54, 0x7C4F, 0x7C40, 0x7C50, 0x7C58, 0x7C5F, -/* 1448 */ 0x7C64, 0x7C56, 0x7C65, 0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4, -/* 1450 */ 0x7CAD, 0x7CA2, 0x7CAB, 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, -/* 1458 */ 0x7CAE, 0x7CB9, 0x7CBD, 0x7CC0, 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, -/* 1460 */ 0x7CDC, 0x7CE2, 0x9B3B, 0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, -/* 1468 */ 0x7D06, 0x7D02, 0x7D1C, 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, -/* 1470 */ 0x7D32, 0x7D3F, 0x7D35, 0x7D46, 0x7D73, 0x7D56, 0x7D4E, 0x7D72, -/* 1478 */ 0x7D68, 0x7D6E, 0x7D4F, 0x7D63, 0x7D93, 0x7D89, 0x7D5B, 0x7D8F, -/* 1480 */ 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, 0x7DC7, 0x7DBD, -/* 1488 */ 0x7DAB, 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F, 0x7DB0, -/* 1490 */ 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05, -/* 1498 */ 0x7E0A, 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B, -/* 14A0 */ 0x7E22, 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37, -/* 14A8 */ 0xFFFD, 0x7E32, 0x7E3A, 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, -/* 14B0 */ 0x7E5A, 0x7E79, 0x7E6A, 0x7E69, 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, -/* 14B8 */ 0x7E7D, 0x8FAE, 0x7E7F, 0x7E88, 0x7E89, 0x7E8C, 0x7E92, 0x7E90, -/* 14C0 */ 0x7E93, 0x7E94, 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, 0x7F38, 0x7F3A, -/* 14C8 */ 0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55, 0x7F54, -/* 14D0 */ 0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82, -/* 14D8 */ 0x7F86, 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D, -/* 14E0 */ 0x7F9A, 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8, -/* 14E8 */ 0x8B71, 0x7FC5, 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6, -/* 14F0 */ 0x7FE9, 0x7FF3, 0x7FF9, 0x98DC, 0x8006, 0x8004, 0x800B, 0x8012, -/* 14F8 */ 0x8018, 0x8019, 0x801C, 0x8021, 0x8028, 0x803F, 0x803B, 0x804A, -/* 1500 */ 0x8046, 0x8052, 0x8058, 0x805A, 0x805F, 0x8062, 0x8068, 0x8073, -/* 1508 */ 0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, 0x8084, 0x8086, -/* 1510 */ 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC, 0x80DB, -/* 1518 */ 0x80E5, 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF, -/* 1520 */ 0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B, 0x968B, 0x8146, -/* 1528 */ 0x813E, 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E, 0x8165, 0x8166, -/* 1530 */ 0x8174, 0x8183, 0x8188, 0x818A, 0x8180, 0x8182, 0x81A0, 0x8195, -/* 1538 */ 0x81A4, 0x81A3, 0x815F, 0x8193, 0x81A9, 0x81B0, 0x81B5, 0x81BE, -/* 1540 */ 0x81B8, 0x81BD, 0x81C0, 0x81C2, 0x81BA, 0x81C9, 0x81CD, 0x81D1, -/* 1548 */ 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF, 0x81E0, 0x81E7, 0x81FA, -/* 1550 */ 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207, 0x820A, 0x820D, -/* 1558 */ 0x8210, 0x8216, 0x8229, 0x822B, 0x8238, 0x8233, 0x8240, 0x8259, -/* 1560 */ 0x8258, 0x825D, 0x825A, 0x825F, 0x8264, 0xFFFD, 0x8262, 0x8268, -/* 1568 */ 0x826A, 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, 0x827E, 0x828D, -/* 1570 */ 0x8292, 0x82AB, 0x829F, 0x82BB, 0x82AC, 0x82E1, 0x82E3, 0x82DF, -/* 1578 */ 0x82D2, 0x82F4, 0x82F3, 0x82FA, 0x8393, 0x8303, 0x82FB, 0x82F9, -/* 1580 */ 0x82DE, 0x8306, 0x82DC, 0x8309, 0x82D9, 0x8335, 0x8334, 0x8316, -/* 1588 */ 0x8332, 0x8331, 0x8340, 0x8339, 0x8350, 0x8345, 0x832F, 0x832B, -/* 1590 */ 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA, 0x839F, 0x83A2, 0x8396, -/* 1598 */ 0x8323, 0x838E, 0x8387, 0x838A, 0x837C, 0x83B5, 0x8373, 0x8375, -/* 15A0 */ 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413, 0x83EB, 0x83CE, 0x83FD, -/* 15A8 */ 0x8403, 0x83D8, 0x840B, 0x83C1, 0x83F7, 0x8407, 0x83E0, 0x83F2, -/* 15B0 */ 0x840D, 0x8422, 0x8420, 0x83BD, 0x8438, 0x8506, 0x83FB, 0x846D, -/* 15B8 */ 0x842A, 0x843C, 0x855A, 0x8484, 0x8477, 0x846B, 0x84AD, 0x846E, -/* 15C0 */ 0x8482, 0x8469, 0x8446, 0x842C, 0x846F, 0x8479, 0x8435, 0x84CA, -/* 15C8 */ 0x8462, 0x84B9, 0x84BF, 0x849F, 0x84D9, 0x84CD, 0x84BB, 0x84DA, -/* 15D0 */ 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1, 0x8521, 0x84FF, 0x84F4, -/* 15D8 */ 0x8517, 0x8518, 0x852C, 0x851F, 0x8515, 0x8514, 0x84FC, 0x8540, -/* 15E0 */ 0x8563, 0x8558, 0x8548, 0x8541, 0x8602, 0x854B, 0x8555, 0x8580, -/* 15E8 */ 0x85A4, 0x8588, 0x8591, 0x858A, 0x85A8, 0x856D, 0x8594, 0x859B, -/* 15F0 */ 0x85EA, 0x8587, 0x859C, 0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, -/* 15F8 */ 0x85CF, 0x85B9, 0x85D0, 0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, -/* 1600 */ 0x860A, 0x8613, 0x860B, 0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, -/* 1608 */ 0x8630, 0x863F, 0x864D, 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, -/* 1610 */ 0x8693, 0x86A3, 0x86A9, 0x86AA, 0x868B, 0x868C, 0x86B6, 0x86AF, -/* 1618 */ 0x86C4, 0x86C6, 0x86B0, 0x86C9, 0x8823, 0x86AB, 0x86D4, 0x86DE, -/* 1620 */ 0x86E9, 0x86EC, 0xFFFD, 0x86DF, 0x86DB, 0x86EF, 0x8712, 0x8706, -/* 1628 */ 0x8708, 0x8700, 0x8703, 0x86FB, 0x8711, 0x8709, 0x870D, 0x86F9, -/* 1630 */ 0x870A, 0x8734, 0x873F, 0x8737, 0x873B, 0x8725, 0x8729, 0x871A, -/* 1638 */ 0x8760, 0x875F, 0x8778, 0x874C, 0x874E, 0x8774, 0x8757, 0x8768, -/* 1640 */ 0x876E, 0x8759, 0x8753, 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, -/* 1648 */ 0x8782, 0x87AF, 0x87CB, 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, -/* 1650 */ 0x87C4, 0x87B3, 0x87C7, 0x87C6, 0x87BB, 0x87EF, 0x87F2, 0x87E0, -/* 1658 */ 0x880F, 0x880D, 0x87FE, 0x87F6, 0x87F7, 0x880E, 0x87D2, 0x8811, -/* 1660 */ 0x8816, 0x8815, 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, -/* 1668 */ 0x883B, 0x8844, 0x8842, 0x8852, 0x8859, 0x885E, 0x8862, 0x886B, -/* 1670 */ 0x8881, 0x887E, 0x889E, 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882, -/* 1678 */ 0x8897, 0x8892, 0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, -/* 1680 */ 0x88BF, 0x88B1, 0x88C3, 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, -/* 1688 */ 0x88F9, 0x8902, 0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, -/* 1690 */ 0x890A, 0x8913, 0x8943, 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, -/* 1698 */ 0x8944, 0x893B, 0x8936, 0x8938, 0x894C, 0x891D, 0x8960, 0x895E, -/* 16A0 */ 0x8966, 0x8964, 0x896D, 0x896A, 0x896F, 0x8974, 0x8977, 0x897E, -/* 16A8 */ 0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, 0x89A9, 0x89A6, -/* 16B0 */ 0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0, 0x89DA, -/* 16B8 */ 0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10, -/* 16C0 */ 0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, 0x8A5B, 0x8A52, -/* 16C8 */ 0x8A46, 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, 0x8A85, 0x8A82, -/* 16D0 */ 0x8A84, 0x8AA8, 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A, 0x8AA3, -/* 16D8 */ 0x8AC4, 0x8ACD, 0x8AC2, 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7, 0xFFFD, -/* 16E0 */ 0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, 0x8AF7, 0x8ADE, 0x8ADB, -/* 16E8 */ 0x8B0C, 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, 0x8B17, 0x8B20, -/* 16F0 */ 0x8B33, 0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41, 0x8B4C, -/* 16F8 */ 0x8B4F, 0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B, 0x8B5F, -/* 1700 */ 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, 0x8B8E, 0x8B92, -/* 1708 */ 0x8B93, 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, 0x8C3F, 0x8C48, -/* 1710 */ 0x8C4C, 0x8C4E, 0x8C50, 0x8C55, 0x8C62, 0x8C6C, 0x8C78, 0x8C7A, -/* 1718 */ 0x8C82, 0x8C89, 0x8C85, 0x8C8A, 0x8C8D, 0x8C8E, 0x8C94, 0x8C7C, -/* 1720 */ 0x8C98, 0x621D, 0x8CAD, 0x8CAA, 0x8CBD, 0x8CB2, 0x8CB3, 0x8CAE, -/* 1728 */ 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3, 0x8CDA, 0x8CFD, 0x8CFA, -/* 1730 */ 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F, 0x8D0D, 0x8D10, -/* 1738 */ 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67, 0x8D6D, 0x8D71, -/* 1740 */ 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, 0x8DCF, 0x8DDA, -/* 1748 */ 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, 0x8DDF, 0x8DE3, -/* 1750 */ 0x8DFC, 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, 0x8E10, 0x8E1F, -/* 1758 */ 0x8E42, 0x8E35, 0x8E30, 0x8E34, 0x8E4A, 0x8E47, 0x8E49, 0x8E4C, -/* 1760 */ 0x8E50, 0x8E48, 0x8E59, 0x8E64, 0x8E60, 0x8E2A, 0x8E63, 0x8E55, -/* 1768 */ 0x8E76, 0x8E72, 0x8E7C, 0x8E81, 0x8E87, 0x8E85, 0x8E84, 0x8E8B, -/* 1770 */ 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99, 0x8EAA, 0x8EA1, 0x8EAC, -/* 1778 */ 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5, 0x8EC8, 0x8ECB, 0x8EDB, -/* 1780 */ 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE, 0x8F0A, 0x8F05, 0x8F15, -/* 1788 */ 0x8F12, 0x8F19, 0x8F13, 0x8F1C, 0x8F1F, 0x8F1B, 0x8F0C, 0x8F26, -/* 1790 */ 0x8F33, 0x8F3B, 0x8F39, 0x8F45, 0x8F42, 0x8F3E, 0x8F4C, 0x8F49, -/* 1798 */ 0x8F46, 0x8F4E, 0x8F57, 0x8F5C, 0xFFFD, 0x8F62, 0x8F63, 0x8F64, -/* 17A0 */ 0x8F9C, 0x8F9F, 0x8FA3, 0x8FAD, 0x8FAF, 0x8FB7, 0x8FDA, 0x8FE5, -/* 17A8 */ 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, 0x8FF4, 0x9005, 0x8FF9, 0x8FFA, -/* 17B0 */ 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, 0x9016, 0x900B, 0x9027, -/* 17B8 */ 0x9036, 0x9035, 0x9039, 0x8FF8, 0x904F, 0x9050, 0x9051, 0x9052, -/* 17C0 */ 0x900E, 0x9049, 0x903E, 0x9056, 0x9058, 0x905E, 0x9068, 0x906F, -/* 17C8 */ 0x9076, 0x96A8, 0x9072, 0x9082, 0x907D, 0x9081, 0x9080, 0x908A, -/* 17D0 */ 0x9089, 0x908F, 0x90A8, 0x90AF, 0x90B1, 0x90B5, 0x90E2, 0x90E4, -/* 17D8 */ 0x6248, 0x90DB, 0x9102, 0x9112, 0x9119, 0x9132, 0x9130, 0x914A, -/* 17E0 */ 0x9156, 0x9158, 0x9163, 0x9165, 0x9169, 0x9173, 0x9172, 0x918B, -/* 17E8 */ 0x9189, 0x9182, 0x91A2, 0x91AB, 0x91AF, 0x91AA, 0x91B5, 0x91B4, -/* 17F0 */ 0x91BA, 0x91C0, 0x91C1, 0x91C9, 0x91CB, 0x91D0, 0x91D6, 0x91DF, -/* 17F8 */ 0x91E1, 0x91DB, 0x91FC, 0x91F5, 0x91F6, 0x921E, 0x91FF, 0x9214, -/* 1800 */ 0x922C, 0x9215, 0x9211, 0x925E, 0x9257, 0x9245, 0x9249, 0x9264, -/* 1808 */ 0x9248, 0x9295, 0x923F, 0x924B, 0x9250, 0x929C, 0x9296, 0x9293, -/* 1810 */ 0x929B, 0x925A, 0x92CF, 0x92B9, 0x92B7, 0x92E9, 0x930F, 0x92FA, -/* 1818 */ 0x9344, 0x932E, 0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, -/* 1820 */ 0x933B, 0x935C, 0x9360, 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, -/* 1828 */ 0x93AD, 0x9394, 0x93B9, 0x93D6, 0x93D7, 0x93E8, 0x93E5, 0x93D8, -/* 1830 */ 0x93C3, 0x93DD, 0x93D0, 0x93C8, 0x93E4, 0x941A, 0x9414, 0x9413, -/* 1838 */ 0x9403, 0x9407, 0x9410, 0x9436, 0x942B, 0x9435, 0x9421, 0x943A, -/* 1840 */ 0x9441, 0x9452, 0x9444, 0x945B, 0x9460, 0x9462, 0x945E, 0x946A, -/* 1848 */ 0x9229, 0x9470, 0x9475, 0x9477, 0x947D, 0x945A, 0x947C, 0x947E, -/* 1850 */ 0x9481, 0x947F, 0x9582, 0x9587, 0x958A, 0x9594, 0x9596, 0x9598, -/* 1858 */ 0x9599, 0xFFFD, 0x95A0, 0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, -/* 1860 */ 0x95B9, 0x95BE, 0x95CA, 0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, -/* 1868 */ 0x95D4, 0x95D6, 0x95DC, 0x95E1, 0x95E5, 0x95E2, 0x9621, 0x9628, -/* 1870 */ 0x962E, 0x962F, 0x9642, 0x964C, 0x964F, 0x964B, 0x9677, 0x965C, -/* 1878 */ 0x965E, 0x965D, 0x965F, 0x9666, 0x9672, 0x966C, 0x968D, 0x9698, -/* 1880 */ 0x9695, 0x9697, 0x96AA, 0x96A7, 0x96B1, 0x96B2, 0x96B0, 0x96B4, -/* 1888 */ 0x96B6, 0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9, 0x96CD, 0x894D, -/* 1890 */ 0x96DC, 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, 0x9708, 0x9713, -/* 1898 */ 0x970E, 0x9711, 0x970F, 0x9716, 0x9719, 0x9724, 0x972A, 0x9730, -/* 18A0 */ 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, -/* 18A8 */ 0x975C, 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, 0x976B, 0x9771, -/* 18B0 */ 0x9779, 0x9785, 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F, -/* 18B8 */ 0x9790, 0x979C, 0x97A8, 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3, -/* 18C0 */ 0x97C6, 0x97C8, 0x97CB, 0x97DC, 0x97ED, 0x9F4F, 0x97F2, 0x7ADF, -/* 18C8 */ 0x97F6, 0x97F5, 0x980F, 0x980C, 0x9838, 0x9824, 0x9821, 0x9837, -/* 18D0 */ 0x983D, 0x9846, 0x984F, 0x984B, 0x986B, 0x986F, 0x9870, 0x9871, -/* 18D8 */ 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, 0x98C4, 0x98C3, -/* 18E0 */ 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, 0x9914, 0x9918, -/* 18E8 */ 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, 0x992E, 0x993D, -/* 18F0 */ 0x993E, 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, 0x9951, 0x9952, -/* 18F8 */ 0x994C, 0x9955, 0x9997, 0x9998, 0x99A5, 0x99AD, 0x99AE, 0x99BC, -/* 1900 */ 0x99DF, 0x99DB, 0x99DD, 0x99D8, 0x99D1, 0x99ED, 0x99EE, 0x99F1, -/* 1908 */ 0x99F2, 0x99FB, 0x99F8, 0x9A01, 0x9A0F, 0x9A05, 0x99E2, 0x9A19, -/* 1910 */ 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, 0x9A43, 0xFFFD, 0x9A3E, -/* 1918 */ 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65, 0x9A64, -/* 1920 */ 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0, 0x9ACF, -/* 1928 */ 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, 0x9AE6, -/* 1930 */ 0x9AEF, 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7, 0x9AFB, 0x9B06, -/* 1938 */ 0x9B18, 0x9B1A, 0x9B1F, 0x9B22, 0x9B23, 0x9B25, 0x9B27, 0x9B28, -/* 1940 */ 0x9B29, 0x9B2A, 0x9B2E, 0x9B2F, 0x9B32, 0x9B44, 0x9B43, 0x9B4F, -/* 1948 */ 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, 0x9B74, 0x9B93, 0x9B83, 0x9B91, -/* 1950 */ 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, 0x9BB4, 0x9BC0, 0x9BCA, -/* 1958 */ 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3, 0x9BE2, 0x9BE4, -/* 1960 */ 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0, 0x9C15, 0x9C14, -/* 1968 */ 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12, 0x9C0A, 0x9C04, -/* 1970 */ 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30, 0x9C47, 0x9C32, -/* 1978 */ 0x9C46, 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76, 0x9C78, 0x9CE7, -/* 1980 */ 0x9CEC, 0x9CF0, 0x9D09, 0x9D08, 0x9CEB, 0x9D03, 0x9D06, 0x9D2A, -/* 1988 */ 0x9D26, 0x9DAF, 0x9D23, 0x9D1F, 0x9D44, 0x9D15, 0x9D12, 0x9D41, -/* 1990 */ 0x9D3F, 0x9D3E, 0x9D46, 0x9D48, 0x9D5D, 0x9D5E, 0x9D64, 0x9D51, -/* 1998 */ 0x9D50, 0x9D59, 0x9D72, 0x9D89, 0x9D87, 0x9DAB, 0x9D6F, 0x9D7A, -/* 19A0 */ 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2, 0x9DC4, 0x9DC1, 0x9DBB, 0x9DB8, -/* 19A8 */ 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2, 0x9DD9, 0x9DD3, 0x9DF8, 0x9DE6, -/* 19B0 */ 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A, 0x9E1B, 0x9E1E, 0x9E75, 0x9E79, -/* 19B8 */ 0x9E7D, 0x9E81, 0x9E88, 0x9E8B, 0x9E8C, 0x9E92, 0x9E95, 0x9E91, -/* 19C0 */ 0x9E9D, 0x9EA5, 0x9EA9, 0x9EB8, 0x9EAA, 0x9EAD, 0x9761, 0x9ECC, -/* 19C8 */ 0x9ECE, 0x9ECF, 0x9ED0, 0x9ED4, 0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, -/* 19D0 */ 0x9EE5, 0x9EE8, 0x9EEF, 0xFFFD, 0x9EF4, 0x9EF6, 0x9EF7, 0x9EF9, -/* 19D8 */ 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08, 0x76B7, 0x9F15, 0x9F21, -/* 19E0 */ 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54, 0x9F63, 0x9F5F, 0x9F60, -/* 19E8 */ 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A, 0x9F77, 0x9F72, 0x9F76, -/* 19F0 */ 0x9F95, 0x9F9C, 0x9FA0, 0x582F, 0x69C7, 0x9059, 0x7464, 0x51DC, -/* 19F8 */ 0x7199, 0x7E8A, 0x891C, 0x9348, 0x9288, 0x84DC, 0x4FC9, 0x70BB, -/* 1A00 */ 0x6631, 0x68C8, 0x92F9, 0x66FB, 0x5F45, 0x4E28, 0x4EE1, 0x4EFC, -/* 1A08 */ 0x4F00, 0x4F03, 0x4F39, 0x4F56, 0x4F92, 0x4F8A, 0x4F9A, 0x4F94, -/* 1A10 */ 0x4FCD, 0x5040, 0x5022, 0x4FFF, 0x501E, 0x5046, 0x5070, 0x5042, -/* 1A18 */ 0x5094, 0x50F4, 0x50D8, 0x514A, 0x5164, 0x519D, 0x51BE, 0x51EC, -/* 1A20 */ 0x5215, 0x529C, 0x52A6, 0x52C0, 0x52DB, 0x5300, 0x5307, 0x5324, -/* 1A28 */ 0x5372, 0x5393, 0x53B2, 0x53DD, 0xFA0E, 0x549C, 0x548A, 0x54A9, -/* 1A30 */ 0x54FF, 0x5586, 0x5759, 0x5765, 0x57AC, 0x57C8, 0x57C7, 0xFA0F, -/* 1A38 */ 0xFFFD, 0xFA10, 0x589E, 0x58B2, 0x590B, 0x5953, 0x595B, 0x595D, -/* 1A40 */ 0x5963, 0x59A4, 0x59BA, 0x5B56, 0x5BC0, 0x752F, 0x5BD8, 0x5BEC, -/* 1A48 */ 0x5C1E, 0x5CA6, 0x5CBA, 0x5CF5, 0x5D27, 0x5D53, 0xFA11, 0x5D42, -/* 1A50 */ 0x5D6D, 0x5DB8, 0x5DB9, 0x5DD0, 0x5F21, 0x5F34, 0x5F67, 0x5FB7, -/* 1A58 */ 0x5FDE, 0x605D, 0x6085, 0x608A, 0x60DE, 0x60D5, 0x6120, 0x60F2, -/* 1A60 */ 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62A6, 0x63F5, 0x6460, -/* 1A68 */ 0x649D, 0x64CE, 0x654E, 0x6600, 0x6615, 0x663B, 0x6609, 0x662E, -/* 1A70 */ 0x661E, 0x6624, 0x6665, 0x6657, 0x6659, 0xFA12, 0x6673, 0x6699, -/* 1A78 */ 0x66A0, 0x66B2, 0x66BF, 0x66FA, 0x670E, 0xF929, 0x6766, 0x67BB, -/* 1A80 */ 0x6852, 0x67C0, 0x6801, 0x6844, 0x68CF, 0xFA13, 0x6968, 0xFA14, -/* 1A88 */ 0x6998, 0x69E2, 0x6A30, 0x6A6B, 0x6A46, 0x6A73, 0x6A7E, 0x6AE2, -/* 1A90 */ 0x6AE4, 0x6BD6, 0x6C3F, 0x6C5C, 0x6C86, 0x6C6F, 0x6CDA, 0x6D04, -/* 1A98 */ 0x6D87, 0x6D6F, 0x6D96, 0x6DAC, 0x6DCF, 0x6DF8, 0x6DF2, 0x6DFC, -/* 1AA0 */ 0x6E39, 0x6E5C, 0x6E27, 0x6E3C, 0x6EBF, 0x6F88, 0x6FB5, 0x6FF5, -/* 1AA8 */ 0x7005, 0x7007, 0x7028, 0x7085, 0x70AB, 0x710F, 0x7104, 0x715C, -/* 1AB0 */ 0x7146, 0x7147, 0xFA15, 0x71C1, 0x71FE, 0x72B1, 0x72BE, 0x7324, -/* 1AB8 */ 0xFA16, 0x7377, 0x73BD, 0x73C9, 0x73D6, 0x73E3, 0x73D2, 0x7407, -/* 1AC0 */ 0x73F5, 0x7426, 0x742A, 0x7429, 0x742E, 0x7462, 0x7489, 0x749F, -/* 1AC8 */ 0x7501, 0x756F, 0x7682, 0x769C, 0x769E, 0x769B, 0x76A6, 0xFA17, -/* 1AD0 */ 0x7746, 0x52AF, 0x7821, 0x784E, 0x7864, 0x787A, 0x7930, 0xFA18, -/* 1AD8 */ 0xFA19, 0xFA1A, 0x7994, 0xFA1B, 0x799B, 0x7AD1, 0x7AE7, 0xFA1C, -/* 1AE0 */ 0x7AEB, 0x7B9E, 0xFA1D, 0x7D48, 0x7D5C, 0x7DB7, 0x7DA0, 0x7DD6, -/* 1AE8 */ 0x7E52, 0x7F47, 0x7FA1, 0xFA1E, 0x8301, 0x8362, 0x837F, 0x83C7, -/* 1AF0 */ 0x83F6, 0x8448, 0x84B4, 0x8553, 0x8559, 0xFFFD, 0x856B, 0xFA1F, -/* 1AF8 */ 0x85B0, 0xFA20, 0xFA21, 0x8807, 0x88F5, 0x8A12, 0x8A37, 0x8A79, -/* 1B00 */ 0x8AA7, 0x8ABE, 0x8ADF, 0xFA22, 0x8AF6, 0x8B53, 0x8B7F, 0x8CF0, -/* 1B08 */ 0x8CF4, 0x8D12, 0x8D76, 0xFA23, 0x8ECF, 0xFA24, 0xFA25, 0x9067, -/* 1B10 */ 0x90DE, 0xFA26, 0x9115, 0x9127, 0x91DA, 0x91D7, 0x91DE, 0x91ED, -/* 1B18 */ 0x91EE, 0x91E4, 0x91E5, 0x9206, 0x9210, 0x920A, 0x923A, 0x9240, -/* 1B20 */ 0x923C, 0x924E, 0x9259, 0x9251, 0x9239, 0x9267, 0x92A7, 0x9277, -/* 1B28 */ 0x9278, 0x92E7, 0x92D7, 0x92D9, 0x92D0, 0xFA27, 0x92D5, 0x92E0, -/* 1B30 */ 0x92D3, 0x9325, 0x9321, 0x92FB, 0xFA28, 0x931E, 0x92FF, 0x931D, -/* 1B38 */ 0x9302, 0x9370, 0x9357, 0x93A4, 0x93C6, 0x93DE, 0x93F8, 0x9431, -/* 1B40 */ 0x9445, 0x9448, 0x9592, 0xF9DC, 0xFA29, 0x969D, 0x96AF, 0x9733, -/* 1B48 */ 0x973B, 0x9743, 0x974D, 0x974F, 0x9751, 0x9755, 0x9857, 0x9865, -/* 1B50 */ 0xFA2A, 0xFA2B, 0x9927, 0xFA2C, 0x999E, 0x9A4E, 0x9AD9, 0x9ADC, -/* 1B58 */ 0x9B75, 0x9B72, 0x9B8F, 0x9BB1, 0x9BBB, 0x9C00, 0x9D70, 0x9D6B, -/* 1B60 */ 0xFA2D, 0x9E19, 0x9ED1, 0xFFE2, 0xFFE4, 0xFF07, 0xFF02, 0xFFE2, -/* 1B68 */ 0xFFE4, 0xFF07, 0xFF02, 0x3231, 0x2116, 0x2121, 0x2235, 0x7E8A, -/* 1B70 */ 0x891C, 0x9348, 0x9288, 0x84DC, 0x4FC9, 0x70BB, 0x6631, 0x68C8, -/* 1B78 */ 0x92F9, 0x66FB, 0x5F45, 0x4E28, 0x4EE1, 0x4EFC, 0x4F00, 0x4F03, -/* 1B80 */ 0x4F39, 0x4F56, 0x4F92, 0x4F8A, 0x4F9A, 0x4F94, 0x4FCD, 0x5040, -/* 1B88 */ 0x5022, 0x4FFF, 0x501E, 0x5046, 0x5070, 0x5042, 0x5094, 0x50F4, -/* 1B90 */ 0x50D8, 0x514A, 0xFFFD, 0x5164, 0x519D, 0x51BE, 0x51EC, 0x5215, -/* 1B98 */ 0x529C, 0x52A6, 0x52C0, 0x52DB, 0x5300, 0x5307, 0x5324, 0x5372, -/* 1BA0 */ 0x5393, 0x53B2, 0x53DD, 0xFA0E, 0x549C, 0x548A, 0x54A9, 0x54FF, -/* 1BA8 */ 0x5586, 0x5759, 0x5765, 0x57AC, 0x57C8, 0x57C7, 0xFA0F, 0xFA10, -/* 1BB0 */ 0x589E, 0x58B2, 0x590B, 0x5953, 0x595B, 0x595D, 0x5963, 0x59A4, -/* 1BB8 */ 0x59BA, 0x5B56, 0x5BC0, 0x752F, 0x5BD8, 0x5BEC, 0x5C1E, 0x5CA6, -/* 1BC0 */ 0x5CBA, 0x5CF5, 0x5D27, 0x5D53, 0xFA11, 0x5D42, 0x5D6D, 0x5DB8, -/* 1BC8 */ 0x5DB9, 0x5DD0, 0x5F21, 0x5F34, 0x5F67, 0x5FB7, 0x5FDE, 0x605D, -/* 1BD0 */ 0x6085, 0x608A, 0x60DE, 0x60D5, 0x6120, 0x60F2, 0x6111, 0x6137, -/* 1BD8 */ 0x6130, 0x6198, 0x6213, 0x62A6, 0x63F5, 0x6460, 0x649D, 0x64CE, -/* 1BE0 */ 0x654E, 0x6600, 0x6615, 0x663B, 0x6609, 0x662E, 0x661E, 0x6624, -/* 1BE8 */ 0x6665, 0x6657, 0x6659, 0xFA12, 0x6673, 0x6699, 0x66A0, 0x66B2, -/* 1BF0 */ 0x66BF, 0x66FA, 0x670E, 0xF929, 0x6766, 0x67BB, 0x6852, 0x67C0, -/* 1BF8 */ 0x6801, 0x6844, 0x68CF, 0xFA13, 0x6968, 0xFA14, 0x6998, 0x69E2, -/* 1C00 */ 0x6A30, 0x6A6B, 0x6A46, 0x6A73, 0x6A7E, 0x6AE2, 0x6AE4, 0x6BD6, -/* 1C08 */ 0x6C3F, 0x6C5C, 0x6C86, 0x6C6F, 0x6CDA, 0x6D04, 0x6D87, 0x6D6F, -/* 1C10 */ 0x6D96, 0x6DAC, 0x6DCF, 0x6DF8, 0x6DF2, 0x6DFC, 0x6E39, 0x6E5C, -/* 1C18 */ 0x6E27, 0x6E3C, 0x6EBF, 0x6F88, 0x6FB5, 0x6FF5, 0x7005, 0x7007, -/* 1C20 */ 0x7028, 0x7085, 0x70AB, 0x710F, 0x7104, 0x715C, 0x7146, 0x7147, -/* 1C28 */ 0xFA15, 0x71C1, 0x71FE, 0x72B1, 0x72BE, 0x7324, 0xFA16, 0x7377, -/* 1C30 */ 0x73BD, 0x73C9, 0x73D6, 0x73E3, 0x73D2, 0x7407, 0x73F5, 0x7426, -/* 1C38 */ 0x742A, 0x7429, 0x742E, 0x7462, 0x7489, 0x749F, 0x7501, 0x756F, -/* 1C40 */ 0x7682, 0x769C, 0x769E, 0x769B, 0x76A6, 0xFA17, 0x7746, 0x52AF, -/* 1C48 */ 0x7821, 0x784E, 0x7864, 0x787A, 0x7930, 0xFA18, 0xFA19, 0xFFFD, -/* 1C50 */ 0xFA1A, 0x7994, 0xFA1B, 0x799B, 0x7AD1, 0x7AE7, 0xFA1C, 0x7AEB, -/* 1C58 */ 0x7B9E, 0xFA1D, 0x7D48, 0x7D5C, 0x7DB7, 0x7DA0, 0x7DD6, 0x7E52, -/* 1C60 */ 0x7F47, 0x7FA1, 0xFA1E, 0x8301, 0x8362, 0x837F, 0x83C7, 0x83F6, -/* 1C68 */ 0x8448, 0x84B4, 0x8553, 0x8559, 0x856B, 0xFA1F, 0x85B0, 0xFA20, -/* 1C70 */ 0xFA21, 0x8807, 0x88F5, 0x8A12, 0x8A37, 0x8A79, 0x8AA7, 0x8ABE, -/* 1C78 */ 0x8ADF, 0xFA22, 0x8AF6, 0x8B53, 0x8B7F, 0x8CF0, 0x8CF4, 0x8D12, -/* 1C80 */ 0x8D76, 0xFA23, 0x8ECF, 0xFA24, 0xFA25, 0x9067, 0x90DE, 0xFA26, -/* 1C88 */ 0x9115, 0x9127, 0x91DA, 0x91D7, 0x91DE, 0x91ED, 0x91EE, 0x91E4, -/* 1C90 */ 0x91E5, 0x9206, 0x9210, 0x920A, 0x923A, 0x9240, 0x923C, 0x924E, -/* 1C98 */ 0x9259, 0x9251, 0x9239, 0x9267, 0x92A7, 0x9277, 0x9278, 0x92E7, -/* 1CA0 */ 0x92D7, 0x92D9, 0x92D0, 0xFA27, 0x92D5, 0x92E0, 0x92D3, 0x9325, -/* 1CA8 */ 0x9321, 0x92FB, 0xFA28, 0x931E, 0x92FF, 0x931D, 0x9302, 0x9370, -/* 1CB0 */ 0x9357, 0x93A4, 0x93C6, 0x93DE, 0x93F8, 0x9431, 0x9445, 0x9448, -/* 1CB8 */ 0x9592, 0xF9DC, 0xFA29, 0x969D, 0x96AF, 0x9733, 0x973B, 0x9743, -/* 1CC0 */ 0x974D, 0x974F, 0x9751, 0x9755, 0x9857, 0x9865, 0xFA2A, 0xFA2B, -/* 1CC8 */ 0x9927, 0xFA2C, 0x999E, 0x9A4E, 0x9AD9, 0x9ADC, 0x9B75, 0x9B72, -/* 1CD0 */ 0x9B8F, 0x9BB1, 0x9BBB, 0x9C00, 0x9D70, 0x9D6B, 0xFA2D, 0x9E19, -/* 1CD8 */ 0x9ED1, -/* End of table Total Length = 0x1DC8 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp936.ut b/mozilla/lib/libi18n/unicode/utotbl/cp936.ut deleted file mode 100644 index ccd010375d0..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp936.ut +++ /dev/null @@ -1,11335 +0,0 @@ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 8165 - srcEnd = 816A - destBegin = 4E6A -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 816C - srcEnd = 8175 - destBegin = 4E74 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 8176 - srcEnd = 817C - destBegin = 4E7F -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 81AC - srcEnd = 81B2 - destBegin = 4F02 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 81D0 - srcEnd = 81D5 - destBegin = 4F47 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 8248 - srcEnd = 8250 - destBegin = 4FB6 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 8273 - srcEnd = 827E - destBegin = 4FFF -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 8291 - srcEnd = 829B - destBegin = 502F -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 82B3 - srcEnd = 82BA - destBegin = 505D -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 82BB - srcEnd = 82C0 - destBegin = 5066 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 82C1 - srcEnd = 82C9 - destBegin = 506D -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 82D9 - srcEnd = 82ED - destBegin = 508E -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 82F7 - srcEnd = 82FD - destBegin = 50B3 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 8340 - srcEnd = 8351 - destBegin = 50BD -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 8352 - srcEnd = 8357 - destBegin = 50D0 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 835B - srcEnd = 8365 - destBegin = 50DB -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 8374 - srcEnd = 837D - destBegin = 50FC -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 8382 - srcEnd = 8387 - destBegin = 510C -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 8388 - srcEnd = 8395 - destBegin = 5113 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 8396 - srcEnd = 83B2 - destBegin = 5122 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 83F9 - srcEnd = 83FE - destBegin = 51D2 -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 8448 - srcEnd = 844D - destBegin = 51E5 -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 8471 - srcEnd = 8476 - destBegin = 5244 -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 8491 - srcEnd = 849A - destBegin = 5273 -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 84A2 - srcEnd = 84A8 - destBegin = 5289 -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = 84AB - srcEnd = 84B1 - destBegin = 5294 -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = 84BA - srcEnd = 84C3 - destBegin = 52B4 -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = 84D5 - srcEnd = 84DA - destBegin = 52D9 -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = 84DF - srcEnd = 84E9 - destBegin = 52E5 -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = 84EA - srcEnd = 84F1 - destBegin = 52F1 -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = 8552 - srcEnd = 855B - destBegin = 532F -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = 8593 - srcEnd = 8599 - destBegin = 53AF -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = 85E1 - srcEnd = 85E8 - destBegin = 5469 -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = 865D - srcEnd = 8662 - destBegin = 54F4 -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = 8672 - srcEnd = 8677 - destBegin = 5515 -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = 86A9 - srcEnd = 86AE - destBegin = 556F -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = 86C1 - srcEnd = 86C7 - destBegin = 55A0 -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = 86C8 - srcEnd = 86D0 - destBegin = 55A8 -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = 8745 - srcEnd = 874C - destBegin = 5610 -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = 8765 - srcEnd = 8770 - destBegin = 5640 -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = 8790 - srcEnd = 8797 - destBegin = 567D -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = 8798 - srcEnd = 879E - destBegin = 5687 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = 87A2 - srcEnd = 87B0 - destBegin = 5694 -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = 87B1 - srcEnd = 87BB - destBegin = 56A4 -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = 87BC - srcEnd = 87C2 - destBegin = 56B0 -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = 87C7 - srcEnd = 87D3 - destBegin = 56BD -End of Item 002E - -Begin of Item 002F - Format 0 - srcBegin = 87D4 - srcEnd = 87DC - destBegin = 56CB -End of Item 002F - -Begin of Item 0030 - Format 0 - srcBegin = 87E3 - srcEnd = 87E8 - destBegin = 56E5 -End of Item 0030 - -Begin of Item 0031 - Format 0 - srcBegin = 87F8 - srcEnd = 87FE - destBegin = 570B -End of Item 0031 - -Begin of Item 0032 - Format 0 - srcBegin = 8840 - srcEnd = 8849 - destBegin = 5712 -End of Item 0032 - -Begin of Item 0033 - Format 0 - srcBegin = 888A - srcEnd = 8890 - destBegin = 5794 -End of Item 0033 - -Begin of Item 0034 - Format 0 - srcBegin = 88A0 - srcEnd = 88A8 - destBegin = 57B9 -End of Item 0034 - -Begin of Item 0035 - Format 0 - srcBegin = 88A9 - srcEnd = 88AF - destBegin = 57C4 -End of Item 0035 - -Begin of Item 0036 - Format 0 - srcBegin = 88BD - srcEnd = 88C4 - destBegin = 57E5 -End of Item 0036 - -Begin of Item 0037 - Format 0 - srcBegin = 88F7 - srcEnd = 88FE - destBegin = 5836 -End of Item 0037 - -Begin of Item 0038 - Format 0 - srcBegin = 8940 - srcEnd = 8945 - destBegin = 583E -End of Item 0038 - -Begin of Item 0039 - Format 0 - srcBegin = 8946 - srcEnd = 894C - destBegin = 5845 -End of Item 0039 - -Begin of Item 003A - Format 0 - srcBegin = 895A - srcEnd = 895F - destBegin = 585F -End of Item 003A - -Begin of Item 003B - Format 0 - srcBegin = 8965 - srcEnd = 8975 - destBegin = 586D -End of Item 003B - -Begin of Item 003C - Format 0 - srcBegin = 898D - srcEnd = 8994 - destBegin = 58A0 -End of Item 003C - -Begin of Item 003D - Format 0 - srcBegin = 8995 - srcEnd = 89A6 - destBegin = 58AA -End of Item 003D - -Begin of Item 003E - Format 0 - srcBegin = 89AE - srcEnd = 89B8 - destBegin = 58C6 -End of Item 003E - -Begin of Item 003F - Format 0 - srcBegin = 89BC - srcEnd = 89C9 - destBegin = 58D6 -End of Item 003F - -Begin of Item 0040 - Format 0 - srcBegin = 89CA - srcEnd = 89CF - destBegin = 58E5 -End of Item 0040 - -Begin of Item 0041 - Format 0 - srcBegin = 89D8 - srcEnd = 89DF - destBegin = 58FA -End of Item 0041 - -Begin of Item 0042 - Format 0 - srcBegin = 8A56 - srcEnd = 8A62 - destBegin = 5966 -End of Item 0042 - -Begin of Item 0043 - Format 0 - srcBegin = 8A85 - srcEnd = 8A8A - destBegin = 59B3 -End of Item 0043 - -Begin of Item 0044 - Format 0 - srcBegin = 8A8E - srcEnd = 8A94 - destBegin = 59BF -End of Item 0044 - -Begin of Item 0045 - Format 0 - srcBegin = 8AAB - srcEnd = 8AB6 - destBegin = 59ED -End of Item 0045 - -Begin of Item 0046 - Format 0 - srcBegin = 8AD3 - srcEnd = 8AD9 - destBegin = 5A2A -End of Item 0046 - -Begin of Item 0047 - Format 0 - srcBegin = 8AEB - srcEnd = 8AF4 - destBegin = 5A4B -End of Item 0047 - -Begin of Item 0048 - Format 0 - srcBegin = 8AF9 - srcEnd = 8AFE - destBegin = 5A5B -End of Item 0048 - -Begin of Item 0049 - Format 0 - srcBegin = 8B47 - srcEnd = 8B4F - destBegin = 5A6B -End of Item 0049 - -Begin of Item 004A - Format 0 - srcBegin = 8B56 - srcEnd = 8B67 - destBegin = 5A80 -End of Item 004A - -Begin of Item 004B - Format 0 - srcBegin = 8B68 - srcEnd = 8B6E - destBegin = 5A93 -End of Item 004B - -Begin of Item 004C - Format 0 - srcBegin = 8B6F - srcEnd = 8B7C - destBegin = 5A9C -End of Item 004C - -Begin of Item 004D - Format 0 - srcBegin = 8B8F - srcEnd = 8B94 - destBegin = 5AC3 -End of Item 004D - -Begin of Item 004E - Format 0 - srcBegin = 8BB0 - srcEnd = 8BC6 - destBegin = 5AF2 -End of Item 004E - -Begin of Item 004F - Format 0 - srcBegin = 8BC7 - srcEnd = 8BD2 - destBegin = 5B0A -End of Item 004F - -Begin of Item 0050 - Format 0 - srcBegin = 8BD3 - srcEnd = 8BEC - destBegin = 5B18 -End of Item 0050 - -Begin of Item 0051 - Format 0 - srcBegin = 8BF0 - srcEnd = 8BF7 - destBegin = 5B38 -End of Item 0051 - -Begin of Item 0052 - Format 0 - srcBegin = 8BF8 - srcEnd = 8BFE - destBegin = 5B41 -End of Item 0052 - -Begin of Item 0053 - Format 0 - srcBegin = 8C40 - srcEnd = 8C47 - destBegin = 5B48 -End of Item 0053 - -Begin of Item 0054 - Format 0 - srcBegin = 8C81 - srcEnd = 8C89 - destBegin = 5BD4 -End of Item 0054 - -Begin of Item 0055 - Format 0 - srcBegin = 8C95 - srcEnd = 8C9B - destBegin = 5BF1 -End of Item 0055 - -Begin of Item 0056 - Format 0 - srcBegin = 8CD4 - srcEnd = 8CDA - destBegin = 5C67 -End of Item 0056 - -Begin of Item 0057 - Format 0 - srcBegin = 8CDC - srcEnd = 8CE2 - destBegin = 5C72 -End of Item 0057 - -Begin of Item 0058 - Format 0 - srcBegin = 8D4F - srcEnd = 8D54 - destBegin = 5CC5 -End of Item 0058 - -Begin of Item 0059 - Format 0 - srcBegin = 8D55 - srcEnd = 8D5A - destBegin = 5CCC -End of Item 0059 - -Begin of Item 005A - Format 0 - srcBegin = 8D5B - srcEnd = 8D60 - destBegin = 5CD3 -End of Item 005A - -Begin of Item 005B - Format 0 - srcBegin = 8D61 - srcEnd = 8D67 - destBegin = 5CDA -End of Item 005B - -Begin of Item 005C - Format 0 - srcBegin = 8D70 - srcEnd = 8D79 - destBegin = 5CF1 -End of Item 005C - -Begin of Item 005D - Format 0 - srcBegin = 8D83 - srcEnd = 8D88 - destBegin = 5D08 -End of Item 005D - -Begin of Item 005E - Format 0 - srcBegin = 8DA4 - srcEnd = 8DAB - destBegin = 5D35 -End of Item 005E - -Begin of Item 005F - Format 0 - srcBegin = 8DAC - srcEnd = 8DB3 - destBegin = 5D3F -End of Item 005F - -Begin of Item 0060 - Format 0 - srcBegin = 8DB6 - srcEnd = 8DC0 - destBegin = 5D4D -End of Item 0060 - -Begin of Item 0061 - Format 0 - srcBegin = 8DC4 - srcEnd = 8DCE - destBegin = 5D5E -End of Item 0061 - -Begin of Item 0062 - Format 0 - srcBegin = 8DD6 - srcEnd = 8DE2 - destBegin = 5D75 -End of Item 0062 - -Begin of Item 0063 - Format 0 - srcBegin = 8DE3 - srcEnd = 8DF8 - destBegin = 5D83 -End of Item 0063 - -Begin of Item 0064 - Format 0 - srcBegin = 8E40 - srcEnd = 8E55 - destBegin = 5DA1 -End of Item 0064 - -Begin of Item 0065 - Format 0 - srcBegin = 8E56 - srcEnd = 8E62 - destBegin = 5DB8 -End of Item 0065 - -Begin of Item 0066 - Format 0 - srcBegin = 8E63 - srcEnd = 8E69 - destBegin = 5DC6 -End of Item 0066 - -Begin of Item 0067 - Format 0 - srcBegin = 8E6A - srcEnd = 8E76 - destBegin = 5DCE -End of Item 0067 - -Begin of Item 0068 - Format 0 - srcBegin = 8E94 - srcEnd = 8E9B - destBegin = 5E1E -End of Item 0068 - -Begin of Item 0069 - Format 0 - srcBegin = 8EAF - srcEnd = 8EB4 - destBegin = 5E46 -End of Item 0069 - -Begin of Item 006A - Format 0 - srcBegin = 8EB5 - srcEnd = 8EBB - destBegin = 5E4D -End of Item 006A - -Begin of Item 006B - Format 0 - srcBegin = 8EC5 - srcEnd = 8ED3 - destBegin = 5E63 -End of Item 006B - -Begin of Item 006C - Format 0 - srcBegin = 8EF8 - srcEnd = 8EFE - destBegin = 5EBF -End of Item 006C - -Begin of Item 006D - Format 0 - srcBegin = 8F43 - srcEnd = 8F48 - destBegin = 5ECB -End of Item 006D - -Begin of Item 006E - Format 0 - srcBegin = 8F4F - srcEnd = 8F5A - destBegin = 5EDC -End of Item 006E - -Begin of Item 006F - Format 0 - srcBegin = 8F5C - srcEnd = 8F64 - destBegin = 5EEB -End of Item 006F - -Begin of Item 0070 - Format 0 - srcBegin = 8F85 - srcEnd = 8F8B - destBegin = 5F32 -End of Item 0070 - -Begin of Item 0071 - Format 0 - srcBegin = 8F90 - srcEnd = 8F9E - destBegin = 5F41 -End of Item 0071 - -Begin of Item 0072 - Format 0 - srcBegin = 8FC7 - srcEnd = 8FCC - destBegin = 5FA2 -End of Item 0072 - -Begin of Item 0073 - Format 0 - srcBegin = 8FD0 - srcEnd = 8FD5 - destBegin = 5FAF -End of Item 0073 - -Begin of Item 0074 - Format 0 - srcBegin = 905F - srcEnd = 9065 - destBegin = 6044 -End of Item 0074 - -Begin of Item 0075 - Format 0 - srcBegin = 90A2 - srcEnd = 90A9 - destBegin = 60BD -End of Item 0075 - -Begin of Item 0076 - Format 0 - srcBegin = 90E5 - srcEnd = 90F7 - destBegin = 612C -End of Item 0076 - -Begin of Item 0077 - Format 0 - srcBegin = 90F8 - srcEnd = 90FE - destBegin = 6140 -End of Item 0077 - -Begin of Item 0078 - Format 0 - srcBegin = 9149 - srcEnd = 914F - destBegin = 6156 -End of Item 0078 - -Begin of Item 0079 - Format 0 - srcBegin = 9158 - srcEnd = 915E - destBegin = 6169 -End of Item 0079 - -Begin of Item 007A - Format 0 - srcBegin = 9164 - srcEnd = 9176 - destBegin = 6178 -End of Item 007A - -Begin of Item 007B - Format 0 - srcBegin = 9180 - srcEnd = 9186 - destBegin = 6196 -End of Item 007B - -Begin of Item 007C - Format 0 - srcBegin = 9187 - srcEnd = 918F - destBegin = 619E -End of Item 007C - -Begin of Item 007D - Format 0 - srcBegin = 9192 - srcEnd = 919B - destBegin = 61AD -End of Item 007D - -Begin of Item 007E - Format 0 - srcBegin = 919C - srcEnd = 91A1 - destBegin = 61B8 -End of Item 007E - -Begin of Item 007F - Format 0 - srcBegin = 91B1 - srcEnd = 91C1 - destBegin = 61D5 -End of Item 007F - -Begin of Item 0080 - Format 0 - srcBegin = 91C2 - srcEnd = 91CF - destBegin = 61E7 -End of Item 0080 - -Begin of Item 0081 - Format 0 - srcBegin = 91D0 - srcEnd = 91D8 - destBegin = 61F6 -End of Item 0081 - -Begin of Item 0082 - Format 0 - srcBegin = 91D9 - srcEnd = 91DE - destBegin = 6200 -End of Item 0082 - -Begin of Item 0083 - Format 0 - srcBegin = 9247 - srcEnd = 924D - destBegin = 625C -End of Item 0083 - -Begin of Item 0084 - Format 0 - srcBegin = 9261 - srcEnd = 9266 - destBegin = 628B -End of Item 0084 - -Begin of Item 0085 - Format 0 - srcBegin = 92AE - srcEnd = 92B3 - destBegin = 6333 -End of Item 0085 - -Begin of Item 0086 - Format 0 - srcBegin = 92C2 - srcEnd = 92C9 - destBegin = 6356 -End of Item 0086 - -Begin of Item 0087 - Format 0 - srcBegin = 92EA - srcEnd = 92F0 - destBegin = 6399 -End of Item 0087 - -Begin of Item 0088 - Format 0 - srcBegin = 934D - srcEnd = 9353 - destBegin = 63D7 -End of Item 0088 - -Begin of Item 0089 - Format 0 - srcBegin = 9374 - srcEnd = 9379 - destBegin = 6415 -End of Item 0089 - -Begin of Item 008A - Format 0 - srcBegin = 9385 - srcEnd = 938A - destBegin = 642E -End of Item 008A - -Begin of Item 008B - Format 0 - srcBegin = 9397 - srcEnd = 939D - destBegin = 644B -End of Item 008B - -Begin of Item 008C - Format 0 - srcBegin = 93A7 - srcEnd = 93AE - destBegin = 645F -End of Item 008C - -Begin of Item 008D - Format 0 - srcBegin = 93B3 - srcEnd = 93BC - destBegin = 646E -End of Item 008D - -Begin of Item 008E - Format 0 - srcBegin = 93BD - srcEnd = 93C3 - destBegin = 647B -End of Item 008E - -Begin of Item 008F - Format 0 - srcBegin = 93C6 - srcEnd = 93CE - destBegin = 6488 -End of Item 008F - -Begin of Item 0090 - Format 0 - srcBegin = 93F0 - srcEnd = 93F6 - destBegin = 64C6 -End of Item 0090 - -Begin of Item 0091 - Format 0 - srcBegin = 9448 - srcEnd = 9460 - destBegin = 64E7 -End of Item 0091 - -Begin of Item 0092 - Format 0 - srcBegin = 9461 - srcEnd = 9468 - destBegin = 6501 -End of Item 0092 - -Begin of Item 0093 - Format 0 - srcBegin = 9469 - srcEnd = 9470 - destBegin = 650A -End of Item 0093 - -Begin of Item 0094 - Format 0 - srcBegin = 9476 - srcEnd = 947E - destBegin = 6519 -End of Item 0094 - -Begin of Item 0095 - Format 0 - srcBegin = 94B5 - srcEnd = 94C3 - destBegin = 6578 -End of Item 0095 - -Begin of Item 0096 - Format 0 - srcBegin = 94DA - srcEnd = 94E1 - destBegin = 65B1 -End of Item 0096 - -Begin of Item 0097 - Format 0 - srcBegin = 94F2 - srcEnd = 94F9 - destBegin = 65D8 -End of Item 0097 - -Begin of Item 0098 - Format 0 - srcBegin = 9573 - srcEnd = 9579 - destBegin = 6644 -End of Item 0098 - -Begin of Item 0099 - Format 0 - srcBegin = 95AF - srcEnd = 95B7 - destBegin = 669E -End of Item 0099 - -Begin of Item 009A - Format 0 - srcBegin = 95CA - srcEnd = 95E3 - destBegin = 66BF -End of Item 009A - -Begin of Item 009B - Format 0 - srcBegin = 95E5 - srcEnd = 95EC - destBegin = 66DE -End of Item 009B - -Begin of Item 009C - Format 0 - srcBegin = 95EF - srcEnd = 95F4 - destBegin = 66EA -End of Item 009C - -Begin of Item 009D - Format 0 - srcBegin = 9650 - srcEnd = 9655 - destBegin = 6720 -End of Item 009D - -Begin of Item 009E - Format 0 - srcBegin = 96A2 - srcEnd = 96A9 - destBegin = 67B9 -End of Item 009E - -Begin of Item 009F - Format 0 - srcBegin = 96AB - srcEnd = 96B4 - destBegin = 67C5 -End of Item 009F - -Begin of Item 00A0 - Format 0 - srcBegin = 96C5 - srcEnd = 96CC - destBegin = 67F5 -End of Item 00A0 - -Begin of Item 00A1 - Format 0 - srcBegin = 96E0 - srcEnd = 96E6 - destBegin = 6822 -End of Item 00A1 - -Begin of Item 00A2 - Format 0 - srcBegin = 96E7 - srcEnd = 96ED - destBegin = 682B -End of Item 00A2 - -Begin of Item 00A3 - Format 0 - srcBegin = 96F9 - srcEnd = 96FE - destBegin = 6856 -End of Item 00A3 - -Begin of Item 00A4 - Format 0 - srcBegin = 9745 - srcEnd = 974C - destBegin = 686C -End of Item 00A4 - -Begin of Item 00A5 - Format 0 - srcBegin = 974E - srcEnd = 9756 - destBegin = 6878 -End of Item 00A5 - -Begin of Item 00A6 - Format 0 - srcBegin = 9759 - srcEnd = 9760 - destBegin = 6887 -End of Item 00A6 - -Begin of Item 00A7 - Format 0 - srcBegin = 9767 - srcEnd = 9770 - destBegin = 6898 -End of Item 00A7 - -Begin of Item 00A8 - Format 0 - srcBegin = 9780 - srcEnd = 9786 - destBegin = 68B9 -End of Item 00A8 - -Begin of Item 00A9 - Format 0 - srcBegin = 9788 - srcEnd = 978D - destBegin = 68C3 -End of Item 00A9 - -Begin of Item 00AA - Format 0 - srcBegin = 97A0 - srcEnd = 97A9 - destBegin = 68E4 -End of Item 00AA - -Begin of Item 00AB - Format 0 - srcBegin = 97C1 - srcEnd = 97CC - destBegin = 6913 -End of Item 00AB - -Begin of Item 00AC - Format 0 - srcBegin = 97D0 - srcEnd = 97D7 - destBegin = 6925 -End of Item 00AC - -Begin of Item 00AD - Format 0 - srcBegin = 97E7 - srcEnd = 97F7 - destBegin = 6943 -End of Item 00AD - -Begin of Item 00AE - Format 0 - srcBegin = 985C - srcEnd = 9861 - destBegin = 698E -End of Item 00AE - -Begin of Item 00AF - Format 0 - srcBegin = 9866 - srcEnd = 986F - destBegin = 699D -End of Item 00AF - -Begin of Item 00B0 - Format 0 - srcBegin = 9883 - srcEnd = 988A - destBegin = 69C2 -End of Item 00B0 - -Begin of Item 00B1 - Format 0 - srcBegin = 9891 - srcEnd = 9896 - destBegin = 69D5 -End of Item 00B1 - -Begin of Item 00B2 - Format 0 - srcBegin = 989A - srcEnd = 98A5 - destBegin = 69E1 -End of Item 00B2 - -Begin of Item 00B3 - Format 0 - srcBegin = 98AA - srcEnd = 98B3 - destBegin = 69F3 -End of Item 00B3 - -Begin of Item 00B4 - Format 0 - srcBegin = 98B5 - srcEnd = 98BE - destBegin = 6A00 -End of Item 00B4 - -Begin of Item 00B5 - Format 0 - srcBegin = 98BF - srcEnd = 98CA - destBegin = 6A0B -End of Item 00B5 - -Begin of Item 00B6 - Format 0 - srcBegin = 98CB - srcEnd = 98D0 - destBegin = 6A19 -End of Item 00B6 - -Begin of Item 00B7 - Format 0 - srcBegin = 98D2 - srcEnd = 98D7 - destBegin = 6A22 -End of Item 00B7 - -Begin of Item 00B8 - Format 0 - srcBegin = 98E1 - srcEnd = 98E7 - destBegin = 6A36 -End of Item 00B8 - -Begin of Item 00B9 - Format 0 - srcBegin = 98EF - srcEnd = 98F6 - destBegin = 6A48 -End of Item 00B9 - -Begin of Item 00BA - Format 0 - srcBegin = 98F7 - srcEnd = 98FD - destBegin = 6A51 -End of Item 00BA - -Begin of Item 00BB - Format 0 - srcBegin = 9948 - srcEnd = 9952 - destBegin = 6A66 -End of Item 00BB - -Begin of Item 00BC - Format 0 - srcBegin = 9953 - srcEnd = 9959 - destBegin = 6A72 -End of Item 00BC - -Begin of Item 00BD - Format 0 - srcBegin = 9962 - srcEnd = 996A - destBegin = 6A85 -End of Item 00BD - -Begin of Item 00BE - Format 0 - srcBegin = 9971 - srcEnd = 9978 - destBegin = 6A98 -End of Item 00BE - -Begin of Item 00BF - Format 0 - srcBegin = 9979 - srcEnd = 997E - destBegin = 6AA1 -End of Item 00BF - -Begin of Item 00C0 - Format 0 - srcBegin = 9983 - srcEnd = 99F5 - destBegin = 6AAD -End of Item 00C0 - -Begin of Item 00C1 - Format 0 - srcBegin = 99F8 - srcEnd = 99FE - destBegin = 6B28 -End of Item 00C1 - -Begin of Item 00C2 - Format 0 - srcBegin = 9A54 - srcEnd = 9A5F - destBegin = 6B4D -End of Item 00C2 - -Begin of Item 00C3 - Format 0 - srcBegin = 9A60 - srcEnd = 9A67 - destBegin = 6B5A -End of Item 00C3 - -Begin of Item 00C4 - Format 0 - srcBegin = 9A6A - srcEnd = 9A77 - destBegin = 6B6B -End of Item 00C4 - -Begin of Item 00C5 - Format 0 - srcBegin = 9A8F - srcEnd = 9A96 - destBegin = 6BA2 -End of Item 00C5 - -Begin of Item 00C6 - Format 0 - srcBegin = 9A97 - srcEnd = 9A9E - destBegin = 6BAB -End of Item 00C6 - -Begin of Item 00C7 - Format 0 - srcBegin = 9AA0 - srcEnd = 9AA6 - destBegin = 6BB8 -End of Item 00C7 - -Begin of Item 00C8 - Format 0 - srcBegin = 9ABA - srcEnd = 9AC1 - destBegin = 6BE2 -End of Item 00C8 - -Begin of Item 00C9 - Format 0 - srcBegin = 9ACF - srcEnd = 9AD5 - destBegin = 6BFE -End of Item 00C9 - -Begin of Item 00CA - Format 0 - srcBegin = 9BA2 - srcEnd = 9BA7 - destBegin = 6D1F -End of Item 00CA - -Begin of Item 00CB - Format 0 - srcBegin = 9BF3 - srcEnd = 9BF8 - destBegin = 6DB9 -End of Item 00CB - -Begin of Item 00CC - Format 0 - srcBegin = 9C5D - srcEnd = 9C64 - destBegin = 6DFD -End of Item 00CC - -Begin of Item 00CD - Format 0 - srcBegin = 9C83 - srcEnd = 9C8A - destBegin = 6E3B -End of Item 00CD - -Begin of Item 00CE - Format 0 - srcBegin = 9C8B - srcEnd = 9C92 - destBegin = 6E45 -End of Item 00CE - -Begin of Item 00CF - Format 0 - srcBegin = 9C9E - srcEnd = 9CA8 - destBegin = 6E60 -End of Item 00CF - -Begin of Item 00D0 - Format 0 - srcBegin = 9CAB - srcEnd = 9CB9 - destBegin = 6E6F -End of Item 00D0 - -Begin of Item 00D1 - Format 0 - srcBegin = 9CC5 - srcEnd = 9CCB - destBegin = 6E91 -End of Item 00D1 - -Begin of Item 00D2 - Format 0 - srcBegin = 9CF9 - srcEnd = 9CFE - destBegin = 6EEA -End of Item 00D2 - -Begin of Item 00D3 - Format 0 - srcBegin = 9D48 - srcEnd = 9D4F - destBegin = 6EFA -End of Item 00D3 - -Begin of Item 00D4 - Format 0 - srcBegin = 9D5D - srcEnd = 9D66 - destBegin = 6F16 -End of Item 00D4 - -Begin of Item 00D5 - Format 0 - srcBegin = 9D74 - srcEnd = 9D7A - destBegin = 6F37 -End of Item 00D5 - -Begin of Item 00D6 - Format 0 - srcBegin = 9D87 - srcEnd = 9D90 - destBegin = 6F4E -End of Item 00D6 - -Begin of Item 00D7 - Format 0 - srcBegin = 9D9B - srcEnd = 9DA0 - destBegin = 6F67 -End of Item 00D7 - -Begin of Item 00D8 - Format 0 - srcBegin = 9DAA - srcEnd = 9DB0 - destBegin = 6F7D -End of Item 00D8 - -Begin of Item 00D9 - Format 0 - srcBegin = 9DB6 - srcEnd = 9DC2 - destBegin = 6F8F -End of Item 00D9 - -Begin of Item 00DA - Format 0 - srcBegin = 9DCC - srcEnd = 9DD6 - destBegin = 6FA8 -End of Item 00DA - -Begin of Item 00DB - Format 0 - srcBegin = 9DDB - srcEnd = 9DE0 - destBegin = 6FBA -End of Item 00DB - -Begin of Item 00DC - Format 0 - srcBegin = 9DE2 - srcEnd = 9DE7 - destBegin = 6FC3 -End of Item 00DC - -Begin of Item 00DD - Format 0 - srcBegin = 9DE8 - srcEnd = 9DEE - destBegin = 6FCA -End of Item 00DD - -Begin of Item 00DE - Format 0 - srcBegin = 9DEF - srcEnd = 9DF9 - destBegin = 6FD3 -End of Item 00DE - -Begin of Item 00DF - Format 0 - srcBegin = 9E40 - srcEnd = 9E47 - destBegin = 6FE6 -End of Item 00DF - -Begin of Item 00E0 - Format 0 - srcBegin = 9E48 - srcEnd = 9E68 - destBegin = 6FF0 -End of Item 00E0 - -Begin of Item 00E1 - Format 0 - srcBegin = 9E69 - srcEnd = 9E70 - destBegin = 7012 -End of Item 00E1 - -Begin of Item 00E2 - Format 0 - srcBegin = 9E71 - srcEnd = 9E77 - destBegin = 701C -End of Item 00E2 - -Begin of Item 00E3 - Format 0 - srcBegin = 9E78 - srcEnd = 9E7E - destBegin = 7024 -End of Item 00E3 - -Begin of Item 00E4 - Format 0 - srcBegin = 9E80 - srcEnd = 9E89 - destBegin = 702B -End of Item 00E4 - -Begin of Item 00E5 - Format 0 - srcBegin = 9E8D - srcEnd = 9E9E - destBegin = 703A -End of Item 00E5 - -Begin of Item 00E6 - Format 0 - srcBegin = 9EA1 - srcEnd = 9EAE - destBegin = 7050 -End of Item 00E6 - -Begin of Item 00E7 - Format 0 - srcBegin = 9EAF - srcEnd = 9EBA - destBegin = 705F -End of Item 00E7 - -Begin of Item 00E8 - Format 0 - srcBegin = 9ED7 - srcEnd = 9EE3 - destBegin = 709E -End of Item 00E8 - -Begin of Item 00E9 - Format 0 - srcBegin = 9EF1 - srcEnd = 9EFD - destBegin = 70CB -End of Item 00E9 - -Begin of Item 00EA - Format 0 - srcBegin = 9F4A - srcEnd = 9F50 - destBegin = 70F0 -End of Item 00EA - -Begin of Item 00EB - Format 0 - srcBegin = 9F55 - srcEnd = 9F5F - destBegin = 70FE -End of Item 00EB - -Begin of Item 00EC - Format 0 - srcBegin = 9F69 - srcEnd = 9F73 - destBegin = 711B -End of Item 00EC - -Begin of Item 00ED - Format 0 - srcBegin = 9F74 - srcEnd = 9F7B - destBegin = 7127 -End of Item 00ED - -Begin of Item 00EE - Format 0 - srcBegin = 9F81 - srcEnd = 9F8E - destBegin = 7137 -End of Item 00EE - -Begin of Item 00EF - Format 0 - srcBegin = 9F95 - srcEnd = 9FA1 - destBegin = 714F -End of Item 00EF - -Begin of Item 00F0 - Format 0 - srcBegin = 9FB8 - srcEnd = 9FBD - destBegin = 717E -End of Item 00F0 - -Begin of Item 00F1 - Format 0 - srcBegin = 9FD3 - srcEnd = 9FD9 - destBegin = 71A1 -End of Item 00F1 - -Begin of Item 00F2 - Format 0 - srcBegin = 9FDD - srcEnd = 9FE2 - destBegin = 71AD -End of Item 00F2 - -Begin of Item 00F3 - Format 0 - srcBegin = 9FE7 - srcEnd = 9FEF - destBegin = 71BA -End of Item 00F3 - -Begin of Item 00F4 - Format 0 - srcBegin = 9FF0 - srcEnd = 9FF9 - destBegin = 71C4 -End of Item 00F4 - -Begin of Item 00F5 - Format 0 - srcBegin = A040 - srcEnd = A049 - destBegin = 71D6 -End of Item 00F5 - -Begin of Item 00F6 - Format 0 - srcBegin = A04F - srcEnd = A054 - destBegin = 71E8 -End of Item 00F6 - -Begin of Item 00F7 - Format 0 - srcBegin = A055 - srcEnd = A05E - destBegin = 71EF -End of Item 00F7 - -Begin of Item 00F8 - Format 0 - srcBegin = A05F - srcEnd = A06A - destBegin = 71FA -End of Item 00F8 - -Begin of Item 00F9 - Format 0 - srcBegin = A06B - srcEnd = A07E - destBegin = 7207 -End of Item 00F9 - -Begin of Item 00FA - Format 0 - srcBegin = A082 - srcEnd = A08B - destBegin = 721E -End of Item 00FA - -Begin of Item 00FB - Format 0 - srcBegin = A097 - srcEnd = A09D - destBegin = 7240 -End of Item 00FB - -Begin of Item 00FC - Format 0 - srcBegin = A0CB - srcEnd = A0D6 - destBegin = 7293 -End of Item 00FC - -Begin of Item 00FD - Format 0 - srcBegin = A0D7 - srcEnd = A0E2 - destBegin = 72A0 -End of Item 00FD - -Begin of Item 00FE - Format 0 - srcBegin = A0E8 - srcEnd = A0EE - destBegin = 72BA -End of Item 00FE - -Begin of Item 00FF - Format 0 - srcBegin = A1B4 - srcEnd = A1BB - destBegin = 3008 -End of Item 00FF - -Begin of Item 0100 - Format 0 - srcBegin = A2A1 - srcEnd = A2AA - destBegin = 2170 -End of Item 0100 - -Begin of Item 0101 - Format 0 - srcBegin = A2B1 - srcEnd = A2C4 - destBegin = 2488 -End of Item 0101 - -Begin of Item 0102 - Format 0 - srcBegin = A2C5 - srcEnd = A2D8 - destBegin = 2474 -End of Item 0102 - -Begin of Item 0103 - Format 0 - srcBegin = A2D9 - srcEnd = A2E2 - destBegin = 2460 -End of Item 0103 - -Begin of Item 0104 - Format 0 - srcBegin = A2E5 - srcEnd = A2EE - destBegin = 3220 -End of Item 0104 - -Begin of Item 0105 - Format 0 - srcBegin = A2F1 - srcEnd = A2FC - destBegin = 2160 -End of Item 0105 - -Begin of Item 0106 - Format 0 - srcBegin = A3A5 - srcEnd = A3FD - destBegin = FF05 -End of Item 0106 - -Begin of Item 0107 - Format 0 - srcBegin = A4A1 - srcEnd = A4F3 - destBegin = 3041 -End of Item 0107 - -Begin of Item 0108 - Format 0 - srcBegin = A5A1 - srcEnd = A5F6 - destBegin = 30A1 -End of Item 0108 - -Begin of Item 0109 - Format 0 - srcBegin = A6A1 - srcEnd = A6B1 - destBegin = 0391 -End of Item 0109 - -Begin of Item 010A - Format 0 - srcBegin = A6B2 - srcEnd = A6B8 - destBegin = 03A3 -End of Item 010A - -Begin of Item 010B - Format 0 - srcBegin = A6C1 - srcEnd = A6D1 - destBegin = 03B1 -End of Item 010B - -Begin of Item 010C - Format 0 - srcBegin = A6D2 - srcEnd = A6D8 - destBegin = 03C3 -End of Item 010C - -Begin of Item 010D - Format 0 - srcBegin = A7A1 - srcEnd = A7A6 - destBegin = 0410 -End of Item 010D - -Begin of Item 010E - Format 0 - srcBegin = A7A8 - srcEnd = A7C1 - destBegin = 0416 -End of Item 010E - -Begin of Item 010F - Format 0 - srcBegin = A7D1 - srcEnd = A7D6 - destBegin = 0430 -End of Item 010F - -Begin of Item 0110 - Format 0 - srcBegin = A7D8 - srcEnd = A7F1 - destBegin = 0436 -End of Item 0110 - -Begin of Item 0111 - Format 0 - srcBegin = A854 - srcEnd = A877 - destBegin = 2550 -End of Item 0111 - -Begin of Item 0112 - Format 0 - srcBegin = A878 - srcEnd = A87E - destBegin = 2581 -End of Item 0112 - -Begin of Item 0113 - Format 0 - srcBegin = A880 - srcEnd = A887 - destBegin = 2588 -End of Item 0113 - -Begin of Item 0114 - Format 0 - srcBegin = A8C5 - srcEnd = A8E9 - destBegin = 3105 -End of Item 0114 - -Begin of Item 0115 - Format 0 - srcBegin = A940 - srcEnd = A948 - destBegin = 3021 -End of Item 0115 - -Begin of Item 0116 - Format 0 - srcBegin = A968 - srcEnd = A971 - destBegin = FE49 -End of Item 0116 - -Begin of Item 0117 - Format 0 - srcBegin = A976 - srcEnd = A97E - destBegin = FE59 -End of Item 0117 - -Begin of Item 0118 - Format 0 - srcBegin = A9A4 - srcEnd = A9EF - destBegin = 2500 -End of Item 0118 - -Begin of Item 0119 - Format 0 - srcBegin = AA43 - srcEnd = AA48 - destBegin = 72E2 -End of Item 0119 - -Begin of Item 011A - Format 0 - srcBegin = AA53 - srcEnd = AA58 - destBegin = 7304 -End of Item 011A - -Begin of Item 011B - Format 0 - srcBegin = AA76 - srcEnd = AA7E - destBegin = 7340 -End of Item 011B - -Begin of Item 011C - Format 0 - srcBegin = AA8B - srcEnd = AA92 - destBegin = 7358 -End of Item 011C - -Begin of Item 011D - Format 0 - srcBegin = AA93 - srcEnd = AA9D - destBegin = 7361 -End of Item 011D - -Begin of Item 011E - Format 0 - srcBegin = AB40 - srcEnd = AB4B - destBegin = 7372 -End of Item 011E - -Begin of Item 011F - Format 0 - srcBegin = AB66 - srcEnd = AB6B - destBegin = 73A3 -End of Item 011F - -Begin of Item 0120 - Format 0 - srcBegin = AB83 - srcEnd = AB89 - destBegin = 73D2 -End of Item 0120 - -Begin of Item 0121 - Format 0 - srcBegin = AC40 - srcEnd = AC4A - destBegin = 73F8 -End of Item 0121 - -Begin of Item 0122 - Format 0 - srcBegin = AC52 - srcEnd = AC5A - destBegin = 7411 -End of Item 0122 - -Begin of Item 0123 - Format 0 - srcBegin = AC5B - srcEnd = AC60 - destBegin = 741C -End of Item 0123 - -Begin of Item 0124 - Format 0 - srcBegin = AC73 - srcEnd = AC7E - destBegin = 7442 -End of Item 0124 - -Begin of Item 0125 - Format 0 - srcBegin = AC80 - srcEnd = AC86 - destBegin = 744E -End of Item 0125 - -Begin of Item 0126 - Format 0 - srcBegin = AC8A - srcEnd = AC96 - destBegin = 7460 -End of Item 0126 - -Begin of Item 0127 - Format 0 - srcBegin = AD4E - srcEnd = AD58 - destBegin = 7491 -End of Item 0127 - -Begin of Item 0128 - Format 0 - srcBegin = AD5A - srcEnd = AD61 - destBegin = 749F -End of Item 0128 - -Begin of Item 0129 - Format 0 - srcBegin = AD62 - srcEnd = AD71 - destBegin = 74AA -End of Item 0129 - -Begin of Item 012A - Format 0 - srcBegin = AD72 - srcEnd = AD7E - destBegin = 74BB -End of Item 012A - -Begin of Item 012B - Format 0 - srcBegin = AD80 - srcEnd = AD89 - destBegin = 74C8 -End of Item 012B - -Begin of Item 012C - Format 0 - srcBegin = AD8A - srcEnd = AD92 - destBegin = 74D3 -End of Item 012C - -Begin of Item 012D - Format 0 - srcBegin = AD97 - srcEnd = AD9D - destBegin = 74E7 -End of Item 012D - -Begin of Item 012E - Format 0 - srcBegin = AE42 - srcEnd = AE48 - destBegin = 74F8 -End of Item 012E - -Begin of Item 012F - Format 0 - srcBegin = AE4D - srcEnd = AE54 - destBegin = 7505 -End of Item 012F - -Begin of Item 0130 - Format 0 - srcBegin = AE80 - srcEnd = AE87 - destBegin = 755D -End of Item 0130 - -Begin of Item 0131 - Format 0 - srcBegin = AE8B - srcEnd = AE91 - destBegin = 756B -End of Item 0131 - -Begin of Item 0132 - Format 0 - srcBegin = B040 - srcEnd = B046 - destBegin = 7645 -End of Item 0132 - -Begin of Item 0133 - Format 0 - srcBegin = B047 - srcEnd = B04C - destBegin = 764E -End of Item 0133 - -Begin of Item 0134 - Format 0 - srcBegin = B058 - srcEnd = B05E - destBegin = 7664 -End of Item 0134 - -Begin of Item 0135 - Format 0 - srcBegin = B062 - srcEnd = B069 - destBegin = 7670 -End of Item 0135 - -Begin of Item 0136 - Format 0 - srcBegin = B080 - srcEnd = B087 - destBegin = 769C -End of Item 0136 - -Begin of Item 0137 - Format 0 - srcBegin = B088 - srcEnd = B090 - destBegin = 76A5 -End of Item 0137 - -Begin of Item 0138 - Format 0 - srcBegin = B094 - srcEnd = B09D - destBegin = 76B5 -End of Item 0138 - -Begin of Item 0139 - Format 0 - srcBegin = B151 - srcEnd = B158 - destBegin = 76E6 -End of Item 0139 - -Begin of Item 013A - Format 0 - srcBegin = B169 - srcEnd = B173 - destBegin = 770E -End of Item 013A - -Begin of Item 013B - Format 0 - srcBegin = B190 - srcEnd = B197 - destBegin = 7748 -End of Item 013B - -Begin of Item 013C - Format 0 - srcBegin = B198 - srcEnd = B19F - destBegin = 7752 -End of Item 013C - -Begin of Item 013D - Format 0 - srcBegin = B248 - srcEnd = B253 - destBegin = 776D -End of Item 013D - -Begin of Item 013E - Format 0 - srcBegin = B25A - srcEnd = B25F - destBegin = 7786 -End of Item 013E - -Begin of Item 013F - Format 0 - srcBegin = B262 - srcEnd = B26D - destBegin = 7793 -End of Item 013F - -Begin of Item 0140 - Format 0 - srcBegin = B282 - srcEnd = B28E - destBegin = 77C0 -End of Item 0140 - -Begin of Item 0141 - Format 0 - srcBegin = B28F - srcEnd = B297 - destBegin = 77CE -End of Item 0141 - -Begin of Item 0142 - Format 0 - srcBegin = B34E - srcEnd = B353 - destBegin = 7803 -End of Item 0142 - -Begin of Item 0143 - Format 0 - srcBegin = B382 - srcEnd = B38D - destBegin = 785E -End of Item 0143 - -Begin of Item 0144 - Format 0 - srcBegin = B38E - srcEnd = B395 - destBegin = 786F -End of Item 0144 - -Begin of Item 0145 - Format 0 - srcBegin = B39A - srcEnd = B3A0 - destBegin = 787D -End of Item 0145 - -Begin of Item 0146 - Format 0 - srcBegin = B453 - srcEnd = B45A - destBegin = 78A8 -End of Item 0146 - -Begin of Item 0147 - Format 0 - srcBegin = B475 - srcEnd = B47E - destBegin = 78DA -End of Item 0147 - -Begin of Item 0148 - Format 0 - srcBegin = B491 - srcEnd = B496 - destBegin = 78FB -End of Item 0148 - -Begin of Item 0149 - Format 0 - srcBegin = B49A - srcEnd = B4A0 - destBegin = 7906 -End of Item 0149 - -Begin of Item 014A - Format 0 - srcBegin = B540 - srcEnd = B545 - destBegin = 790D -End of Item 014A - -Begin of Item 014B - Format 0 - srcBegin = B546 - srcEnd = B54F - destBegin = 7914 -End of Item 014B - -Begin of Item 014C - Format 0 - srcBegin = B555 - srcEnd = B563 - destBegin = 7925 -End of Item 014C - -Begin of Item 014D - Format 0 - srcBegin = B570 - srcEnd = B578 - destBegin = 794A -End of Item 014D - -Begin of Item 014E - Format 0 - srcBegin = B587 - srcEnd = B58D - destBegin = 7970 -End of Item 014E - -Begin of Item 014F - Format 0 - srcBegin = B640 - srcEnd = B646 - destBegin = 7993 -End of Item 014F - -Begin of Item 0150 - Format 0 - srcBegin = B647 - srcEnd = B652 - destBegin = 799B -End of Item 0150 - -Begin of Item 0151 - Format 0 - srcBegin = B653 - srcEnd = B65D - destBegin = 79A8 -End of Item 0151 - -Begin of Item 0152 - Format 0 - srcBegin = B673 - srcEnd = B678 - destBegin = 79D9 -End of Item 0152 - -Begin of Item 0153 - Format 0 - srcBegin = B682 - srcEnd = B688 - destBegin = 79F1 -End of Item 0153 - -Begin of Item 0154 - Format 0 - srcBegin = B744 - srcEnd = B752 - destBegin = 7A24 -End of Item 0154 - -Begin of Item 0155 - Format 0 - srcBegin = B759 - srcEnd = B75E - destBegin = 7A40 -End of Item 0155 - -Begin of Item 0156 - Format 0 - srcBegin = B75F - srcEnd = B768 - destBegin = 7A47 -End of Item 0156 - -Begin of Item 0157 - Format 0 - srcBegin = B76E - srcEnd = B77E - destBegin = 7A58 -End of Item 0157 - -Begin of Item 0158 - Format 0 - srcBegin = B780 - srcEnd = B786 - destBegin = 7A69 -End of Item 0158 - -Begin of Item 0159 - Format 0 - srcBegin = B84B - srcEnd = B855 - destBegin = 7AB4 -End of Item 0159 - -Begin of Item 015A - Format 0 - srcBegin = B856 - srcEnd = B860 - destBegin = 7AC0 -End of Item 015A - -Begin of Item 015B - Format 0 - srcBegin = B861 - srcEnd = B86A - destBegin = 7ACC -End of Item 015B - -Begin of Item 015C - Format 0 - srcBegin = B874 - srcEnd = B879 - destBegin = 7AE7 -End of Item 015C - -Begin of Item 015D - Format 0 - srcBegin = B94A - srcEnd = B94F - destBegin = 7B3F -End of Item 015D - -Begin of Item 015E - Format 0 - srcBegin = B95D - srcEnd = B967 - destBegin = 7B63 -End of Item 015E - -Begin of Item 015F - Format 0 - srcBegin = B976 - srcEnd = B97C - destBegin = 7B86 -End of Item 015F - -Begin of Item 0160 - Format 0 - srcBegin = B996 - srcEnd = B99D - destBegin = 7BB9 -End of Item 0160 - -Begin of Item 0161 - Format 0 - srcBegin = BA69 - srcEnd = BA70 - destBegin = 7BFF -End of Item 0161 - -Begin of Item 0162 - Format 0 - srcBegin = BA76 - srcEnd = BA7B - destBegin = 7C10 -End of Item 0162 - -Begin of Item 0163 - Format 0 - srcBegin = BA85 - srcEnd = BA8A - destBegin = 7C20 -End of Item 0163 - -Begin of Item 0164 - Format 0 - srcBegin = BA8D - srcEnd = BA99 - destBegin = 7C2B -End of Item 0164 - -Begin of Item 0165 - Format 0 - srcBegin = BA9A - srcEnd = BA9F - destBegin = 7C39 -End of Item 0165 - -Begin of Item 0166 - Format 0 - srcBegin = BB40 - srcEnd = BB49 - destBegin = 7C43 -End of Item 0166 - -Begin of Item 0167 - Format 0 - srcBegin = BB4A - srcEnd = BB6E - destBegin = 7C4E -End of Item 0167 - -Begin of Item 0168 - Format 0 - srcBegin = BB6F - srcEnd = BB74 - destBegin = 7C75 -End of Item 0168 - -Begin of Item 0169 - Format 0 - srcBegin = BB75 - srcEnd = BB7E - destBegin = 7C7E -End of Item 0169 - -Begin of Item 016A - Format 0 - srcBegin = BB81 - srcEnd = BB87 - destBegin = 7C8A -End of Item 016A - -Begin of Item 016B - Format 0 - srcBegin = BC48 - srcEnd = BC4E - destBegin = 7CCE -End of Item 016B - -Begin of Item 016C - Format 0 - srcBegin = BC54 - srcEnd = BC5A - destBegin = 7CE1 -End of Item 016C - -Begin of Item 016D - Format 0 - srcBegin = BC5B - srcEnd = BC60 - destBegin = 7CE9 -End of Item 016D - -Begin of Item 016E - Format 0 - srcBegin = BC61 - srcEnd = BC68 - destBegin = 7CF0 -End of Item 016E - -Begin of Item 016F - Format 0 - srcBegin = BC6B - srcEnd = BC78 - destBegin = 7CFC -End of Item 016F - -Begin of Item 0170 - Format 0 - srcBegin = BC79 - srcEnd = BC7E - destBegin = 7D0B -End of Item 0170 - -Begin of Item 0171 - Format 0 - srcBegin = BC80 - srcEnd = BC8E - destBegin = 7D11 -End of Item 0171 - -Begin of Item 0172 - Format 0 - srcBegin = BC9A - srcEnd = BCA0 - destBegin = 7D30 -End of Item 0172 - -Begin of Item 0173 - Format 0 - srcBegin = BD40 - srcEnd = BD76 - destBegin = 7D37 -End of Item 0173 - -Begin of Item 0174 - Format 0 - srcBegin = BD77 - srcEnd = BD7E - destBegin = 7D6F -End of Item 0174 - -Begin of Item 0175 - Format 0 - srcBegin = BD80 - srcEnd = BDA0 - destBegin = 7D78 -End of Item 0175 - -Begin of Item 0176 - Format 0 - srcBegin = BE40 - srcEnd = BE4C - destBegin = 7D99 -End of Item 0176 - -Begin of Item 0177 - Format 0 - srcBegin = BE4D - srcEnd = BE53 - destBegin = 7DA7 -End of Item 0177 - -Begin of Item 0178 - Format 0 - srcBegin = BE54 - srcEnd = BE7E - destBegin = 7DAF -End of Item 0178 - -Begin of Item 0179 - Format 0 - srcBegin = BE80 - srcEnd = BEA0 - destBegin = 7DDA -End of Item 0179 - -Begin of Item 017A - Format 0 - srcBegin = BF40 - srcEnd = BF7E - destBegin = 7DFB -End of Item 017A - -Begin of Item 017B - Format 0 - srcBegin = BF8B - srcEnd = BFA0 - destBegin = 7E48 -End of Item 017B - -Begin of Item 017C - Format 0 - srcBegin = C040 - srcEnd = C063 - destBegin = 7E5E -End of Item 017C - -Begin of Item 017D - Format 0 - srcBegin = C064 - srcEnd = C07B - destBegin = 7E83 -End of Item 017D - -Begin of Item 017E - Format 0 - srcBegin = C08D - srcEnd = C093 - destBegin = 7F3B -End of Item 017E - -Begin of Item 017F - Format 0 - srcBegin = C095 - srcEnd = C09E - destBegin = 7F46 -End of Item 017F - -Begin of Item 0180 - Format 0 - srcBegin = C15C - srcEnd = C163 - destBegin = 7F82 -End of Item 0180 - -Begin of Item 0181 - Format 0 - srcBegin = C177 - srcEnd = C17D - destBegin = 7FA8 -End of Item 0181 - -Begin of Item 0182 - Format 0 - srcBegin = C199 - srcEnd = C19E - destBegin = 7FD9 -End of Item 0182 - -Begin of Item 0183 - Format 0 - srcBegin = C249 - srcEnd = C24F - destBegin = 7FF4 -End of Item 0183 - -Begin of Item 0184 - Format 0 - srcBegin = C264 - srcEnd = C269 - destBegin = 802B -End of Item 0184 - -Begin of Item 0185 - Format 0 - srcBegin = C281 - srcEnd = C28E - destBegin = 805B -End of Item 0185 - -Begin of Item 0186 - Format 0 - srcBegin = C28F - srcEnd = C294 - destBegin = 806B -End of Item 0186 - -Begin of Item 0187 - Format 0 - srcBegin = C295 - srcEnd = C2A0 - destBegin = 8072 -End of Item 0187 - -Begin of Item 0188 - Format 0 - srcBegin = C346 - srcEnd = C34B - destBegin = 808D -End of Item 0188 - -Begin of Item 0189 - Format 0 - srcBegin = C363 - srcEnd = C369 - destBegin = 80CF -End of Item 0189 - -Begin of Item 018A - Format 0 - srcBegin = C387 - srcEnd = C393 - destBegin = 811F -End of Item 018A - -Begin of Item 018B - Format 0 - srcBegin = C440 - srcEnd = C445 - destBegin = 8140 -End of Item 018B - -Begin of Item 018C - Format 0 - srcBegin = C470 - srcEnd = C475 - destBegin = 8192 -End of Item 018C - -Begin of Item 018D - Format 0 - srcBegin = C482 - srcEnd = C489 - destBegin = 81AB -End of Item 018D - -Begin of Item 018E - Format 0 - srcBegin = C48A - srcEnd = C48F - destBegin = 81B4 -End of Item 018E - -Begin of Item 018F - Format 0 - srcBegin = C49A - srcEnd = C4A0 - destBegin = 81CD -End of Item 018F - -Begin of Item 0190 - Format 0 - srcBegin = C540 - srcEnd = C54E - destBegin = 81D4 -End of Item 0190 - -Begin of Item 0191 - Format 0 - srcBegin = C55A - srcEnd = C55F - destBegin = 81F5 -End of Item 0191 - -Begin of Item 0192 - Format 0 - srcBegin = C56C - srcEnd = C571 - destBegin = 8215 -End of Item 0192 - -Begin of Item 0193 - Format 0 - srcBegin = C58B - srcEnd = C592 - destBegin = 8250 -End of Item 0193 - -Begin of Item 0194 - Format 0 - srcBegin = C598 - srcEnd = C59F - destBegin = 8260 -End of Item 0194 - -Begin of Item 0195 - Format 0 - srcBegin = C68F - srcEnd = C698 - destBegin = 831D -End of Item 0195 - -Begin of Item 0196 - Format 0 - srcBegin = C754 - srcEnd = C75A - destBegin = 8370 -End of Item 0196 - -Begin of Item 0197 - Format 0 - srcBegin = C75D - srcEnd = C763 - destBegin = 837E -End of Item 0197 - -Begin of Item 0198 - Format 0 - srcBegin = C775 - srcEnd = C77B - destBegin = 83A1 -End of Item 0198 - -Begin of Item 0199 - Format 0 - srcBegin = C854 - srcEnd = C859 - destBegin = 8412 -End of Item 0199 - -Begin of Item 019A - Format 0 - srcBegin = C85D - srcEnd = C862 - destBegin = 841E -End of Item 019A - -Begin of Item 019B - Format 0 - srcBegin = C863 - srcEnd = C86A - destBegin = 8429 -End of Item 019B - -Begin of Item 019C - Format 0 - srcBegin = C86B - srcEnd = C870 - destBegin = 8432 -End of Item 019C - -Begin of Item 019D - Format 0 - srcBegin = C874 - srcEnd = C87B - destBegin = 843E -End of Item 019D - -Begin of Item 019E - Format 0 - srcBegin = C880 - srcEnd = C886 - destBegin = 844A -End of Item 019E - -Begin of Item 019F - Format 0 - srcBegin = C94B - srcEnd = C952 - destBegin = 848F -End of Item 019F - -Begin of Item 01A0 - Format 0 - srcBegin = C95A - srcEnd = C966 - destBegin = 84A2 -End of Item 01A0 - -Begin of Item 01A1 - Format 0 - srcBegin = C991 - srcEnd = C99B - destBegin = 84F1 -End of Item 01A1 - -Begin of Item 01A2 - Format 0 - srcBegin = CA40 - srcEnd = CA48 - destBegin = 8503 -End of Item 01A2 - -Begin of Item 01A3 - Format 0 - srcBegin = CA58 - srcEnd = CA60 - destBegin = 8522 -End of Item 01A3 - -Begin of Item 01A4 - Format 0 - srcBegin = CA61 - srcEnd = CA6A - destBegin = 852D -End of Item 01A4 - -Begin of Item 01A5 - Format 0 - srcBegin = CA74 - srcEnd = CA7E - destBegin = 854B -End of Item 01A5 - -Begin of Item 01A6 - Format 0 - srcBegin = CA8E - srcEnd = CA96 - destBegin = 8569 -End of Item 01A6 - -Begin of Item 01A7 - Format 0 - srcBegin = CB43 - srcEnd = CB49 - destBegin = 8588 -End of Item 01A7 - -Begin of Item 01A8 - Format 0 - srcBegin = CB4A - srcEnd = CB54 - destBegin = 8590 -End of Item 01A8 - -Begin of Item 01A9 - Format 0 - srcBegin = CB55 - srcEnd = CB5B - destBegin = 859D -End of Item 01A9 - -Begin of Item 01AA - Format 0 - srcBegin = CB63 - srcEnd = CB68 - destBegin = 85B1 -End of Item 01AA - -Begin of Item 01AB - Format 0 - srcBegin = CB6A - srcEnd = CB70 - destBegin = 85BA -End of Item 01AB - -Begin of Item 01AC - Format 0 - srcBegin = CB71 - srcEnd = CB77 - destBegin = 85C2 -End of Item 01AC - -Begin of Item 01AD - Format 0 - srcBegin = CB81 - srcEnd = CB86 - destBegin = 85D6 -End of Item 01AD - -Begin of Item 01AE - Format 0 - srcBegin = CB87 - srcEnd = CB8D - destBegin = 85DD -End of Item 01AE - -Begin of Item 01AF - Format 0 - srcBegin = CB92 - srcEnd = CBA0 - destBegin = 85EA -End of Item 01AF - -Begin of Item 01B0 - Format 0 - srcBegin = CC4A - srcEnd = CC54 - destBegin = 8606 -End of Item 01B0 - -Begin of Item 01B1 - Format 0 - srcBegin = CC59 - srcEnd = CC68 - destBegin = 8617 -End of Item 01B1 - -Begin of Item 01B2 - Format 0 - srcBegin = CC6A - srcEnd = CC77 - destBegin = 862A -End of Item 01B2 - -Begin of Item 01B3 - Format 0 - srcBegin = CC80 - srcEnd = CC8B - destBegin = 8641 -End of Item 01B3 - -Begin of Item 01B4 - Format 0 - srcBegin = CC99 - srcEnd = CCA0 - destBegin = 8663 -End of Item 01B4 - -Begin of Item 01B5 - Format 0 - srcBegin = CD43 - srcEnd = CD49 - destBegin = 8672 -End of Item 01B5 - -Begin of Item 01B6 - Format 0 - srcBegin = CD4A - srcEnd = CD50 - destBegin = 8683 -End of Item 01B6 - -Begin of Item 01B7 - Format 0 - srcBegin = CD57 - srcEnd = CD5C - destBegin = 8696 -End of Item 01B7 - -Begin of Item 01B8 - Format 0 - srcBegin = CE58 - srcEnd = CE5E - destBegin = 8740 -End of Item 01B8 - -Begin of Item 01B9 - Format 0 - srcBegin = CE6A - srcEnd = CE6F - destBegin = 875A -End of Item 01B9 - -Begin of Item 01BA - Format 0 - srcBegin = CE72 - srcEnd = CE79 - destBegin = 8766 -End of Item 01BA - -Begin of Item 01BB - Format 0 - srcBegin = CE95 - srcEnd = CE9B - destBegin = 8798 -End of Item 01BB - -Begin of Item 01BC - Format 0 - srcBegin = CF5F - srcEnd = CF65 - destBegin = 87D4 -End of Item 01BC - -Begin of Item 01BD - Format 0 - srcBegin = CF75 - srcEnd = CF7E - destBegin = 87EF -End of Item 01BD - -Begin of Item 01BE - Format 0 - srcBegin = CF88 - srcEnd = CF8D - destBegin = 8804 -End of Item 01BE - -Begin of Item 01BF - Format 0 - srcBegin = CF8E - srcEnd = CF95 - destBegin = 880B -End of Item 01BF - -Begin of Item 01C0 - Format 0 - srcBegin = D040 - srcEnd = D04D - destBegin = 8824 -End of Item 01C0 - -Begin of Item 01C1 - Format 0 - srcBegin = D04E - srcEnd = D053 - destBegin = 8833 -End of Item 01C1 - -Begin of Item 01C2 - Format 0 - srcBegin = D05C - srcEnd = D061 - destBegin = 8846 -End of Item 01C2 - -Begin of Item 01C3 - Format 0 - srcBegin = D062 - srcEnd = D067 - destBegin = 884E -End of Item 01C3 - -Begin of Item 01C4 - Format 0 - srcBegin = D06B - srcEnd = D071 - destBegin = 885A -End of Item 01C4 - -Begin of Item 01C5 - Format 0 - srcBegin = D09B - srcEnd = D0A0 - destBegin = 88A5 -End of Item 01C5 - -Begin of Item 01C6 - Format 0 - srcBegin = D168 - srcEnd = D16E - destBegin = 88E9 -End of Item 01C6 - -Begin of Item 01C7 - Format 0 - srcBegin = D179 - srcEnd = D17E - destBegin = 8903 -End of Item 01C7 - -Begin of Item 01C8 - Format 0 - srcBegin = D240 - srcEnd = D248 - destBegin = 8938 -End of Item 01C8 - -Begin of Item 01C9 - Format 0 - srcBegin = D24B - srcEnd = D263 - destBegin = 8945 -End of Item 01C9 - -Begin of Item 01CA - Format 0 - srcBegin = D264 - srcEnd = D269 - destBegin = 8960 -End of Item 01CA - -Begin of Item 01CB - Format 0 - srcBegin = D26A - srcEnd = D27D - destBegin = 8967 -End of Item 01CB - -Begin of Item 01CC - Format 0 - srcBegin = D286 - srcEnd = D2A0 - destBegin = 8987 -End of Item 01CC - -Begin of Item 01CD - Format 0 - srcBegin = D340 - srcEnd = D35E - destBegin = 89A2 -End of Item 01CD - -Begin of Item 01CE - Format 0 - srcBegin = D378 - srcEnd = D37E - destBegin = 89F4 -End of Item 01CE - -Begin of Item 01CF - Format 0 - srcBegin = D385 - srcEnd = D38A - destBegin = 8A01 -End of Item 01CF - -Begin of Item 01D0 - Format 0 - srcBegin = D38B - srcEnd = D3A0 - destBegin = 8A08 -End of Item 01D0 - -Begin of Item 01D1 - Format 0 - srcBegin = D440 - srcEnd = D45F - destBegin = 8A1E -End of Item 01D1 - -Begin of Item 01D2 - Format 0 - srcBegin = D460 - srcEnd = D468 - destBegin = 8A3F -End of Item 01D2 - -Begin of Item 01D3 - Format 0 - srcBegin = D469 - srcEnd = D47E - destBegin = 8A49 -End of Item 01D3 - -Begin of Item 01D4 - Format 0 - srcBegin = D480 - srcEnd = D499 - destBegin = 8A5F -End of Item 01D4 - -Begin of Item 01D5 - Format 0 - srcBegin = D49A - srcEnd = D4A0 - destBegin = 8A7A -End of Item 01D5 - -Begin of Item 01D6 - Format 0 - srcBegin = D540 - srcEnd = D547 - destBegin = 8A81 -End of Item 01D6 - -Begin of Item 01D7 - Format 0 - srcBegin = D548 - srcEnd = D54F - destBegin = 8A8B -End of Item 01D7 - -Begin of Item 01D8 - Format 0 - srcBegin = D550 - srcEnd = D57E - destBegin = 8A94 -End of Item 01D8 - -Begin of Item 01D9 - Format 0 - srcBegin = D580 - srcEnd = D5A0 - destBegin = 8AC3 -End of Item 01D9 - -Begin of Item 01DA - Format 0 - srcBegin = D640 - srcEnd = D662 - destBegin = 8AE4 -End of Item 01DA - -Begin of Item 01DB - Format 0 - srcBegin = D663 - srcEnd = D67E - destBegin = 8B08 -End of Item 01DB - -Begin of Item 01DC - Format 0 - srcBegin = D682 - srcEnd = D6A0 - destBegin = 8B27 -End of Item 01DC - -Begin of Item 01DD - Format 0 - srcBegin = D740 - srcEnd = D75F - destBegin = 8B46 -End of Item 01DD - -Begin of Item 01DE - Format 0 - srcBegin = D765 - srcEnd = D77E - destBegin = 8B6D -End of Item 01DE - -Begin of Item 01DF - Format 0 - srcBegin = D780 - srcEnd = D798 - destBegin = 8B87 -End of Item 01DF - -Begin of Item 01E0 - Format 0 - srcBegin = D840 - srcEnd = D848 - destBegin = 8C38 -End of Item 01E0 - -Begin of Item 01E1 - Format 0 - srcBegin = D850 - srcEnd = D857 - destBegin = 8C4D -End of Item 01E1 - -Begin of Item 01E2 - Format 0 - srcBegin = D85C - srcEnd = D861 - destBegin = 8C5B -End of Item 01E2 - -Begin of Item 01E3 - Format 0 - srcBegin = D862 - srcEnd = D868 - destBegin = 8C63 -End of Item 01E3 - -Begin of Item 01E4 - Format 0 - srcBegin = D869 - srcEnd = D86F - destBegin = 8C6C -End of Item 01E4 - -Begin of Item 01E5 - Format 0 - srcBegin = D874 - srcEnd = D87A - destBegin = 8C7B -End of Item 01E5 - -Begin of Item 01E6 - Format 0 - srcBegin = D882 - srcEnd = D888 - destBegin = 8C8D -End of Item 01E6 - -Begin of Item 01E7 - Format 0 - srcBegin = D88C - srcEnd = D8A0 - destBegin = 8C99 -End of Item 01E7 - -Begin of Item 01E8 - Format 0 - srcBegin = D940 - srcEnd = D97E - destBegin = 8CAE -End of Item 01E8 - -Begin of Item 01E9 - Format 0 - srcBegin = D980 - srcEnd = D9A0 - destBegin = 8CED -End of Item 01E9 - -Begin of Item 01EA - Format 0 - srcBegin = DA40 - srcEnd = DA4E - destBegin = 8D0E -End of Item 01EA - -Begin of Item 01EB - Format 0 - srcBegin = DA5D - srcEnd = DA65 - destBegin = 8D78 -End of Item 01EB - -Begin of Item 01EC - Format 0 - srcBegin = DA73 - srcEnd = DA7C - destBegin = 8D95 -End of Item 01EC - -Begin of Item 01ED - Format 0 - srcBegin = DA81 - srcEnd = DA8D - destBegin = 8DA4 -End of Item 01ED - -Begin of Item 01EE - Format 0 - srcBegin = DB53 - srcEnd = DB59 - destBegin = 8DFE -End of Item 01EE - -Begin of Item 01EF - Format 0 - srcBegin = DB64 - srcEnd = DB6B - destBegin = 8E15 -End of Item 01EF - -Begin of Item 01F0 - Format 0 - srcBegin = DB89 - srcEnd = DB8E - destBegin = 8E53 -End of Item 01F0 - -Begin of Item 01F1 - Format 0 - srcBegin = DB8F - srcEnd = DB9A - destBegin = 8E5A -End of Item 01F1 - -Begin of Item 01F2 - Format 0 - srcBegin = DC4E - srcEnd = DC54 - destBegin = 8E88 -End of Item 01F2 - -Begin of Item 01F3 - Format 0 - srcBegin = DC58 - srcEnd = DC5E - destBegin = 8E95 -End of Item 01F3 - -Begin of Item 01F4 - Format 0 - srcBegin = DC60 - srcEnd = DC6B - destBegin = 8E9F -End of Item 01F4 - -Begin of Item 01F5 - Format 0 - srcBegin = DC70 - srcEnd = DC76 - destBegin = 8EB3 -End of Item 01F5 - -Begin of Item 01F6 - Format 0 - srcBegin = DC77 - srcEnd = DC7E - destBegin = 8EBB -End of Item 01F6 - -Begin of Item 01F7 - Format 0 - srcBegin = DC80 - srcEnd = DC8A - destBegin = 8EC3 -End of Item 01F7 - -Begin of Item 01F8 - Format 0 - srcBegin = DC8B - srcEnd = DCA0 - destBegin = 8ECF -End of Item 01F8 - -Begin of Item 01F9 - Format 0 - srcBegin = DD40 - srcEnd = DD7E - destBegin = 8EE5 -End of Item 01F9 - -Begin of Item 01FA - Format 0 - srcBegin = DD80 - srcEnd = DDA0 - destBegin = 8F24 -End of Item 01FA - -Begin of Item 01FB - Format 0 - srcBegin = DE40 - srcEnd = DE60 - destBegin = 8F45 -End of Item 01FB - -Begin of Item 01FC - Format 0 - srcBegin = DF45 - srcEnd = DF4A - destBegin = 9027 -End of Item 01FC - -Begin of Item 01FD - Format 0 - srcBegin = DF64 - srcEnd = DF69 - destBegin = 905C -End of Item 01FD - -Begin of Item 01FE - Format 0 - srcBegin = DF76 - srcEnd = DF7C - destBegin = 9076 -End of Item 01FE - -Begin of Item 01FF - Format 0 - srcBegin = E068 - srcEnd = E07B - destBegin = 9105 -End of Item 01FF - -Begin of Item 0200 - Format 0 - srcBegin = E084 - srcEnd = E08E - destBegin = 9124 -End of Item 0200 - -Begin of Item 0201 - Format 0 - srcBegin = E090 - srcEnd = E096 - destBegin = 9132 -End of Item 0201 - -Begin of Item 0202 - Format 0 - srcBegin = E097 - srcEnd = E09F - destBegin = 913A -End of Item 0202 - -Begin of Item 0203 - Format 0 - srcBegin = E161 - srcEnd = E167 - destBegin = 9193 -End of Item 0203 - -Begin of Item 0204 - Format 0 - srcBegin = E168 - srcEnd = E16D - destBegin = 919C -End of Item 0204 - -Begin of Item 0205 - Format 0 - srcBegin = E16E - srcEnd = E173 - destBegin = 91A4 -End of Item 0205 - -Begin of Item 0206 - Format 0 - srcBegin = E180 - srcEnd = E18A - destBegin = 91BC -End of Item 0206 - -Begin of Item 0207 - Format 0 - srcBegin = E18E - srcEnd = E197 - destBegin = 91D2 -End of Item 0207 - -Begin of Item 0208 - Format 0 - srcBegin = E198 - srcEnd = E1A0 - destBegin = 91DD -End of Item 0208 - -Begin of Item 0209 - Format 0 - srcBegin = E240 - srcEnd = E27E - destBegin = 91E6 -End of Item 0209 - -Begin of Item 020A - Format 0 - srcBegin = E280 - srcEnd = E2A0 - destBegin = 9225 -End of Item 020A - -Begin of Item 020B - Format 0 - srcBegin = E2BC - srcEnd = E2C1 - destBegin = 9967 -End of Item 020B - -Begin of Item 020C - Format 0 - srcBegin = E340 - srcEnd = E36D - destBegin = 9246 -End of Item 020C - -Begin of Item 020D - Format 0 - srcBegin = E36E - srcEnd = E37E - destBegin = 9275 -End of Item 020D - -Begin of Item 020E - Format 0 - srcBegin = E380 - srcEnd = E387 - destBegin = 9286 -End of Item 020E - -Begin of Item 020F - Format 0 - srcBegin = E388 - srcEnd = E3A0 - destBegin = 928F -End of Item 020F - -Begin of Item 0210 - Format 0 - srcBegin = E440 - srcEnd = E445 - destBegin = 92A8 -End of Item 0210 - -Begin of Item 0211 - Format 0 - srcBegin = E446 - srcEnd = E45E - destBegin = 92AF -End of Item 0211 - -Begin of Item 0212 - Format 0 - srcBegin = E45F - srcEnd = E47E - destBegin = 92C9 -End of Item 0212 - -Begin of Item 0213 - Format 0 - srcBegin = E480 - srcEnd = E4A0 - destBegin = 92E9 -End of Item 0213 - -Begin of Item 0214 - Format 0 - srcBegin = E540 - srcEnd = E573 - destBegin = 930A -End of Item 0214 - -Begin of Item 0215 - Format 0 - srcBegin = E574 - srcEnd = E57E - destBegin = 933F -End of Item 0215 - -Begin of Item 0216 - Format 0 - srcBegin = E580 - srcEnd = E59F - destBegin = 934A -End of Item 0216 - -Begin of Item 0217 - Format 0 - srcBegin = E640 - srcEnd = E662 - destBegin = 936C -End of Item 0217 - -Begin of Item 0218 - Format 0 - srcBegin = E663 - srcEnd = E67E - destBegin = 9390 -End of Item 0218 - -Begin of Item 0219 - Format 0 - srcBegin = E680 - srcEnd = E69D - destBegin = 93AC -End of Item 0219 - -Begin of Item 021A - Format 0 - srcBegin = E740 - srcEnd = E747 - destBegin = 93CE -End of Item 021A - -Begin of Item 021B - Format 0 - srcBegin = E748 - srcEnd = E77E - destBegin = 93D7 -End of Item 021B - -Begin of Item 021C - Format 0 - srcBegin = E780 - srcEnd = E7A0 - destBegin = 940E -End of Item 021C - -Begin of Item 021D - Format 0 - srcBegin = E7CA - srcEnd = E7D0 - destBegin = 7F21 -End of Item 021D - -Begin of Item 021E - Format 0 - srcBegin = E840 - srcEnd = E84E - destBegin = 942F -End of Item 021E - -Begin of Item 021F - Format 0 - srcBegin = E84F - srcEnd = E87A - destBegin = 943F -End of Item 021F - -Begin of Item 0220 - Format 0 - srcBegin = E880 - srcEnd = E894 - destBegin = 9470 -End of Item 0220 - -Begin of Item 0221 - Format 0 - srcBegin = E94C - srcEnd = E953 - destBegin = 9577 -End of Item 0221 - -Begin of Item 0222 - Format 0 - srcBegin = E954 - srcEnd = E97E - destBegin = 9580 -End of Item 0222 - -Begin of Item 0223 - Format 0 - srcBegin = E980 - srcEnd = E9A0 - destBegin = 95AB -End of Item 0223 - -Begin of Item 0224 - Format 0 - srcBegin = EA40 - srcEnd = EA5B - destBegin = 95CC -End of Item 0224 - -Begin of Item 0225 - Format 0 - srcBegin = EA64 - srcEnd = EA6A - destBegin = 9623 -End of Item 0225 - -Begin of Item 0226 - Format 0 - srcBegin = EA91 - srcEnd = EA9D - destBegin = 9678 -End of Item 0226 - -Begin of Item 0227 - Format 0 - srcBegin = EB49 - srcEnd = EB52 - destBegin = 969D -End of Item 0227 - -Begin of Item 0228 - Format 0 - srcBegin = EB53 - srcEnd = EB5A - destBegin = 96A8 -End of Item 0228 - -Begin of Item 0229 - Format 0 - srcBegin = EB6D - srcEnd = EB76 - destBegin = 96D6 -End of Item 0229 - -Begin of Item 022A - Format 0 - srcBegin = EB77 - srcEnd = EB7D - destBegin = 96E1 -End of Item 022A - -Begin of Item 022B - Format 0 - srcBegin = EC40 - srcEnd = EC48 - destBegin = 9721 -End of Item 022B - -Begin of Item 022C - Format 0 - srcBegin = EC57 - srcEnd = EC69 - destBegin = 973F -End of Item 022C - -Begin of Item 022D - Format 0 - srcBegin = EC77 - srcEnd = EC7E - destBegin = 976A -End of Item 022D - -Begin of Item 022E - Format 0 - srcBegin = EC87 - srcEnd = EC8E - destBegin = 977D -End of Item 022E - -Begin of Item 022F - Format 0 - srcBegin = ED44 - srcEnd = ED4A - destBegin = 97A4 -End of Item 022F - -Begin of Item 0230 - Format 0 - srcBegin = ED50 - srcEnd = ED7E - destBegin = 97B5 -End of Item 0230 - -Begin of Item 0231 - Format 0 - srcBegin = ED89 - srcEnd = EDA0 - destBegin = 97F7 -End of Item 0231 - -Begin of Item 0232 - Format 0 - srcBegin = EE40 - srcEnd = EE7E - destBegin = 980F -End of Item 0232 - -Begin of Item 0233 - Format 0 - srcBegin = EE80 - srcEnd = EEA0 - destBegin = 984E -End of Item 0233 - -Begin of Item 0234 - Format 0 - srcBegin = EEE6 - srcEnd = EEEC - destBegin = 94C8 -End of Item 0234 - -Begin of Item 0235 - Format 0 - srcBegin = EF40 - srcEnd = EF45 - destBegin = 986F -End of Item 0235 - -Begin of Item 0236 - Format 0 - srcBegin = EF4C - srcEnd = EF71 - destBegin = 98A8 -End of Item 0236 - -Begin of Item 0237 - Format 0 - srcBegin = EF82 - srcEnd = EFA0 - destBegin = 98E9 -End of Item 0237 - -Begin of Item 0238 - Format 0 - srcBegin = EFE4 - srcEnd = EFEC - destBegin = 9564 -End of Item 0238 - -Begin of Item 0239 - Format 0 - srcBegin = F047 - srcEnd = F063 - destBegin = 9911 -End of Item 0239 - -Begin of Item 023A - Format 0 - srcBegin = F064 - srcEnd = F07E - destBegin = 992F -End of Item 023A - -Begin of Item 023B - Format 0 - srcBegin = F080 - srcEnd = F089 - destBegin = 994A -End of Item 023B - -Begin of Item 023C - Format 0 - srcBegin = F08A - srcEnd = F096 - destBegin = 9956 -End of Item 023C - -Begin of Item 023D - Format 0 - srcBegin = F0D0 - srcEnd = F0D6 - destBegin = 9E66 -End of Item 023D - -Begin of Item 023E - Format 0 - srcBegin = F142 - srcEnd = F14C - destBegin = 999A -End of Item 023E - -Begin of Item 023F - Format 0 - srcBegin = F14F - srcEnd = F17E - destBegin = 99A9 -End of Item 023F - -Begin of Item 0240 - Format 0 - srcBegin = F180 - srcEnd = F1A0 - destBegin = 99D9 -End of Item 0240 - -Begin of Item 0241 - Format 0 - srcBegin = F240 - srcEnd = F27E - destBegin = 99FA -End of Item 0241 - -Begin of Item 0242 - Format 0 - srcBegin = F280 - srcEnd = F2A0 - destBegin = 9A39 -End of Item 0242 - -Begin of Item 0243 - Format 0 - srcBegin = F340 - srcEnd = F351 - destBegin = 9A5A -End of Item 0243 - -Begin of Item 0244 - Format 0 - srcBegin = F35B - srcEnd = F361 - destBegin = 9AA9 -End of Item 0244 - -Begin of Item 0245 - Format 0 - srcBegin = F38D - srcEnd = F395 - destBegin = 9AF0 -End of Item 0245 - -Begin of Item 0246 - Format 0 - srcBegin = F397 - srcEnd = F39D - destBegin = 9AFC -End of Item 0246 - -Begin of Item 0247 - Format 0 - srcBegin = F441 - srcEnd = F446 - destBegin = 9B09 -End of Item 0247 - -Begin of Item 0248 - Format 0 - srcBegin = F44A - srcEnd = F454 - destBegin = 9B14 -End of Item 0248 - -Begin of Item 0249 - Format 0 - srcBegin = F458 - srcEnd = F462 - destBegin = 9B24 -End of Item 0249 - -Begin of Item 024A - Format 0 - srcBegin = F465 - srcEnd = F46C - destBegin = 9B33 -End of Item 024A - -Begin of Item 024B - Format 0 - srcBegin = F479 - srcEnd = F47E - destBegin = 9B55 -End of Item 024B - -Begin of Item 024C - Format 0 - srcBegin = F480 - srcEnd = F4A0 - destBegin = 9B5B -End of Item 024C - -Begin of Item 024D - Format 0 - srcBegin = F540 - srcEnd = F57E - destBegin = 9B7C -End of Item 024D - -Begin of Item 024E - Format 0 - srcBegin = F580 - srcEnd = F5A0 - destBegin = 9BBB -End of Item 024E - -Begin of Item 024F - Format 0 - srcBegin = F640 - srcEnd = F67E - destBegin = 9BDC -End of Item 024F - -Begin of Item 0250 - Format 0 - srcBegin = F680 - srcEnd = F6A0 - destBegin = 9C1B -End of Item 0250 - -Begin of Item 0251 - Format 0 - srcBegin = F6B5 - srcEnd = F6BA - destBegin = 9F85 -End of Item 0251 - -Begin of Item 0252 - Format 0 - srcBegin = F6DF - srcEnd = F6E4 - destBegin = 9C9E -End of Item 0252 - -Begin of Item 0253 - Format 0 - srcBegin = F6ED - srcEnd = F6F4 - destBegin = 9CB0 -End of Item 0253 - -Begin of Item 0254 - Format 0 - srcBegin = F740 - srcEnd = F77E - destBegin = 9C3C -End of Item 0254 - -Begin of Item 0255 - Format 0 - srcBegin = F840 - srcEnd = F87E - destBegin = 9CE3 -End of Item 0255 - -Begin of Item 0256 - Format 0 - srcBegin = F880 - srcEnd = F8A0 - destBegin = 9D22 -End of Item 0256 - -Begin of Item 0257 - Format 0 - srcBegin = F940 - srcEnd = F97E - destBegin = 9D43 -End of Item 0257 - -Begin of Item 0258 - Format 0 - srcBegin = F980 - srcEnd = F9A0 - destBegin = 9D82 -End of Item 0258 - -Begin of Item 0259 - Format 0 - srcBegin = FA40 - srcEnd = FA7E - destBegin = 9DA3 -End of Item 0259 - -Begin of Item 025A - Format 0 - srcBegin = FA80 - srcEnd = FAA0 - destBegin = 9DE2 -End of Item 025A - -Begin of Item 025B - Format 0 - srcBegin = FB40 - srcEnd = FB5B - destBegin = 9E03 -End of Item 025B - -Begin of Item 025C - Format 0 - srcBegin = FB74 - srcEnd = FB7D - destBegin = 9E74 -End of Item 025C - -Begin of Item 025D - Format 0 - srcBegin = FB87 - srcEnd = FB8C - destBegin = 9E8C -End of Item 025D - -Begin of Item 025E - Format 0 - srcBegin = FB8D - srcEnd = FB95 - destBegin = 9E94 -End of Item 025E - -Begin of Item 025F - Format 0 - srcBegin = FB97 - srcEnd = FB9C - destBegin = 9EA0 -End of Item 025F - -Begin of Item 0260 - Format 0 - srcBegin = FC40 - srcEnd = FC48 - destBegin = 9EAB -End of Item 0260 - -Begin of Item 0261 - Format 0 - srcBegin = FC6D - srcEnd = FC75 - destBegin = 9EF0 -End of Item 0261 - -Begin of Item 0262 - Format 0 - srcBegin = FC78 - srcEnd = FC7E - destBegin = 9EFF -End of Item 0262 - -Begin of Item 0263 - Format 0 - srcBegin = FC8D - srcEnd = FC92 - destBegin = 9F1A -End of Item 0263 - -Begin of Item 0264 - Format 0 - srcBegin = FC94 - srcEnd = FC9C - destBegin = 9F23 -End of Item 0264 - -Begin of Item 0265 - Format 0 - srcBegin = FD4D - srcEnd = FD57 - destBegin = 9F45 -End of Item 0265 - -Begin of Item 0266 - Format 0 - srcBegin = FD58 - srcEnd = FD7E - destBegin = 9F52 -End of Item 0266 - -Begin of Item 0267 - Format 0 - srcBegin = FD80 - srcEnd = FD85 - destBegin = 9F79 -End of Item 0267 - -Begin of Item 0268 - Format 0 - srcBegin = FD88 - srcEnd = FD93 - destBegin = 9F8D -End of Item 0268 - -Begin of Item 0269 - Format 1 - srcBegin = 8140 - srcEnd = 816B - mappingOffset = 0000 - Mapping = - 4E02 4E04 4E05 4E06 4E0F 4E12 4E17 4E1F - 4E20 4E21 4E23 4E26 4E29 4E2E 4E2F 4E31 - 4E33 4E35 4E37 4E3C 4E40 4E41 4E42 4E44 - 4E46 4E4A 4E51 4E55 4E57 4E5A 4E5B 4E62 - 4E63 4E64 4E65 4E67 4E68 FFFD FFFD FFFD - FFFD FFFD FFFD 4E72 -End of Item 0269 - -Begin of Item 026A - Format 1 - srcBegin = 817D - srcEnd = 81FE - mappingOffset = 002C - Mapping = - 4E87 4E8A FFFD 4E90 4E96 4E97 4E99 4E9C - 4E9D 4E9E 4EA3 4EAA 4EAF 4EB0 4EB1 4EB4 - 4EB6 4EB7 4EB8 4EB9 4EBC 4EBD 4EBE 4EC8 - 4ECC 4ECF 4ED0 4ED2 4EDA 4EDB 4EDC 4EE0 - 4EE2 4EE6 4EE7 4EE9 4EED 4EEE 4EEF 4EF1 - 4EF4 4EF8 4EF9 4EFA 4EFC 4EFE 4F00 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4F0B 4F0C - 4F12 4F13 4F14 4F15 4F16 4F1C 4F1D 4F21 - 4F23 4F28 4F29 4F2C 4F2D 4F2E 4F31 4F33 - 4F35 4F37 4F39 4F3B 4F3E 4F3F 4F40 4F41 - 4F42 4F44 4F45 FFFD FFFD FFFD FFFD FFFD - FFFD 4F52 4F54 4F56 4F61 4F62 4F66 4F68 - 4F6A 4F6B 4F6D 4F6E 4F71 4F72 4F75 4F77 - 4F78 4F79 4F7A 4F7D 4F80 4F81 4F82 4F85 - 4F86 4F87 4F8A 4F8C 4F8E 4F90 4F92 4F93 - 4F95 4F96 4F98 4F99 4F9A 4F9C 4F9E 4F9F - 4FA1 4FA2 -End of Item 026A - -Begin of Item 026B - Format 1 - srcBegin = 8240 - srcEnd = 8272 - mappingOffset = 00AE - Mapping = - 4FA4 4FAB 4FAD 4FB0 4FB1 4FB2 4FB3 4FB4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4FC0 4FC1 4FC2 4FC6 4FC7 4FC8 4FC9 - 4FCB 4FCC 4FCD 4FD2 4FD3 4FD4 4FD5 4FD6 - 4FD9 4FDB 4FE0 4FE2 4FE4 4FE5 4FE7 4FEB - 4FEC 4FF0 4FF2 4FF4 4FF5 4FF6 4FF7 4FF9 - 4FFB 4FFC 4FFD -End of Item 026B - -Begin of Item 026C - Format 1 - srcBegin = 8280 - srcEnd = 8290 - mappingOffset = 00E1 - Mapping = - 500B 500E 5010 5011 5013 5015 5016 5017 - 501B 501D 501E 5020 5022 5023 5024 5027 - 502B -End of Item 026C - -Begin of Item 026D - Format 1 - srcBegin = 829C - srcEnd = 82B2 - mappingOffset = 00F2 - Mapping = - 503B 503D 503F 5040 5041 5042 5044 5045 - 5046 5049 504A 504B 504D 5050 5051 5052 - 5053 5054 5056 5057 5058 5059 505B -End of Item 026D - -Begin of Item 026E - Format 1 - srcBegin = 82CA - srcEnd = 82D8 - mappingOffset = 0109 - Mapping = - 5078 5079 507A 507C 507D 5081 5082 5083 - 5084 5086 5087 5089 508A 508B 508C -End of Item 026E - -Begin of Item 026F - Format 1 - srcBegin = 82EE - srcEnd = 82FE - mappingOffset = 0118 - Mapping = - 50A4 50A6 50AA 50AB 50AD 50AE 50AF 50B0 - 50B1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 50BC -End of Item 026F - -Begin of Item 0270 - Format 1 - srcBegin = 8358 - srcEnd = 835A - mappingOffset = 0129 - Mapping = - 50D7 50D8 50D9 -End of Item 0270 - -Begin of Item 0271 - Format 1 - srcBegin = 8366 - srcEnd = 8381 - mappingOffset = 012C - Mapping = - 50E8 50E9 50EA 50EB 50EF 50F0 50F1 50F2 - 50F4 50F6 50F7 50F8 50F9 50FA FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5108 FFFD 5109 510A -End of Item 0271 - -Begin of Item 0272 - Format 1 - srcBegin = 83B3 - srcEnd = 83F8 - mappingOffset = 0148 - Mapping = - 5142 5147 514A 514C 514E 514F 5150 5152 - 5153 5157 5158 5159 515B 515D 515E 515F - 5160 5161 5163 5164 5166 5167 5169 516A - 516F 5172 517A 517E 517F 5183 5184 5186 - 5187 518A 518B 518E 518F 5190 5191 5193 - 5194 5198 519A 519D 519E 519F 51A1 51A3 - 51A6 51A7 51A8 51A9 51AA 51AD 51AE 51B4 - 51B8 51B9 51BA 51BE 51BF 51C1 51C2 51C3 - 51C5 51C8 51CA 51CD 51CE 51D0 -End of Item 0272 - -Begin of Item 0273 - Format 1 - srcBegin = 8440 - srcEnd = 84DE - mappingOffset = 018E - Mapping = - 51D8 51D9 51DA 51DC 51DE 51DF 51E2 51E3 - FFFD FFFD FFFD FFFD FFFD FFFD 51EC 51EE - 51F1 51F2 51F4 51F7 51FE 5204 5205 5209 - 520B 520C 520F 5210 5213 5214 5215 521C - 521E 521F 5221 5222 5223 5225 5226 5227 - 522A 522C 522F 5231 5232 5234 5235 523C - 523E FFFD FFFD FFFD FFFD FFFD FFFD 524B - 524E 524F 5252 5253 5255 5257 5258 FFFD - 5259 525A 525B 525D 525F 5260 5262 5263 - 5264 5266 5268 526B 526C 526D 526E 5270 - 5271 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 527E 5280 5283 5284 5285 - 5286 5287 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5291 5292 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 529C 52A4 52A5 52A6 52A7 52AE - 52AF 52B0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 52C0 52C1 52C2 52C4 - 52C5 52C6 52C8 52CA 52CC 52CD 52CE 52CF - 52D1 52D3 52D4 52D5 52D7 FFFD FFFD FFFD - FFFD FFFD FFFD 52E0 52E1 52E2 52E3 -End of Item 0273 - -Begin of Item 0274 - Format 1 - srcBegin = 84F2 - srcEnd = 84FE - mappingOffset = 022D - Mapping = - 52FB 52FC 52FD 5301 5302 5303 5304 5307 - 5309 530A 530B 530C 530E -End of Item 0274 - -Begin of Item 0275 - Format 1 - srcBegin = 8540 - srcEnd = 85FE - mappingOffset = 023A - Mapping = - 5311 5312 5313 5314 5318 531B 531C 531E - 531F 5322 5324 5325 5327 5328 5329 532B - 532C 532D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 533C 533D 5340 5342 - 5344 5346 534B 534C 534D 5350 5354 5358 - 5359 535B 535D 5365 5368 536A 536C 536D - 5372 5376 5379 537B 537C 537D 537E 5380 - 5381 5383 5387 5388 538A 538E 538F FFFD - 5390 5391 5392 5393 5394 5396 5397 5399 - 539B 539C 539E 53A0 53A1 53A4 53A7 53AA - 53AB 53AC 53AD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 53B7 53B8 53B9 53BA 53BC 53BD - 53BE 53C0 53C3 53C4 53C5 53C6 53C7 53CE - 53CF 53D0 53D2 53D3 53D5 53DA 53DC 53DD - 53DE 53E1 53E2 53E7 53F4 53FA 53FE 53FF - 5400 5402 5405 5407 540B 5414 5418 5419 - 541A 541C 5422 5424 5425 542A 5430 5433 - 5436 5437 543A 543D 543F 5441 5442 5444 - 5445 5447 5449 544C 544D 544E 544F 5451 - 545A 545D 545E 545F 5460 5461 5463 5465 - 5467 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5474 5479 547A 547E 547F 5481 5483 - 5485 5487 5488 5489 548A 548D 5491 5493 - 5497 5498 549C 549E 549F 54A0 54A1 -End of Item 0275 - -Begin of Item 0276 - Format 1 - srcBegin = 8640 - srcEnd = 86C0 - mappingOffset = 02F9 - Mapping = - 54A2 54A5 54AE 54B0 54B2 54B5 54B6 54B7 - 54B9 54BA 54BC 54BE 54C3 54C5 54CA 54CB - 54D6 54D8 54DB 54E0 54E1 54E2 54E3 54E4 - 54EB 54EC 54EF 54F0 54F1 FFFD FFFD FFFD - FFFD FFFD FFFD 54FB 54FE 5500 5502 5503 - 5504 5505 5508 550A 550B 550C 550D 550E - 5512 5513 FFFD FFFD FFFD FFFD FFFD FFFD - 551C 551D 551E 551F 5521 5525 5526 FFFD - 5528 5529 552B 552D 5532 5534 5535 5536 - 5538 5539 553A 553B 553D 5540 5542 5545 - 5547 5548 554B 554C 554D 554E 554F 5551 - 5552 5553 5554 5557 5558 5559 555A 555B - 555D 555E 555F 5560 5562 5563 5568 5569 - 556B FFFD FFFD FFFD FFFD FFFD FFFD 5579 - 557A 557D 557F 5585 5586 558C 558D 558E - 5590 5592 5593 5595 5596 5597 559A 559B - 559E -End of Item 0276 - -Begin of Item 0277 - Format 1 - srcBegin = 86D1 - srcEnd = 86FE - mappingOffset = 037A - Mapping = - 55B2 55B4 55B6 55B8 55BA 55BC 55BF 55C0 - 55C1 55C2 55C3 55C6 55C7 55C8 55CA 55CB - 55CE 55CF 55D0 55D5 55D7 55D8 55D9 55DA - 55DB 55DE 55E0 55E2 55E7 55E9 55ED 55EE - 55F0 55F1 55F4 55F6 55F8 55F9 55FA 55FB - 55FC 55FF 5602 5603 5604 5605 -End of Item 0277 - -Begin of Item 0278 - Format 1 - srcBegin = 8740 - srcEnd = 8764 - mappingOffset = 03A8 - Mapping = - 5606 5607 560A 560B 560D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5619 561A 561C - 561D 5620 5621 5622 5625 5626 5628 5629 - 562A 562B 562E 562F 5630 5633 5635 5637 - 5638 563A 563C 563D 563E -End of Item 0278 - -Begin of Item 0279 - Format 1 - srcBegin = 8771 - srcEnd = 878F - mappingOffset = 03CD - Mapping = - 564F 5650 5651 5652 5653 5655 5656 565A - 565B 565D 565E 565F 5660 5661 FFFD 5663 - 5665 5666 5667 566D 566E 566F 5670 5672 - 5673 5674 5675 5677 5678 5679 567A -End of Item 0279 - -Begin of Item 027A - Format 1 - srcBegin = 879F - srcEnd = 87A1 - mappingOffset = 03EC - Mapping = - 5690 5691 5692 -End of Item 027A - -Begin of Item 027B - Format 1 - srcBegin = 87C3 - srcEnd = 87C6 - mappingOffset = 03EF - Mapping = - 56B8 56B9 56BA 56BB -End of Item 027B - -Begin of Item 027C - Format 1 - srcBegin = 87DD - srcEnd = 87F7 - mappingOffset = 03F3 - Mapping = - 56D5 56D6 56D8 56D9 56DC 56E3 FFFD FFFD - FFFD FFFD FFFD FFFD 56EC 56EE 56EF 56F2 - 56F3 56F6 56F7 56F8 56FB 56FC 5700 5701 - 5702 5705 5707 -End of Item 027C - -Begin of Item 027D - Format 1 - srcBegin = 884A - srcEnd = 889F - mappingOffset = 040E - Mapping = - 571D 571E 5720 5721 5722 5724 5725 5726 - 5727 572B 5731 5732 5734 5735 5736 5737 - 5738 573C 573D 573F 5741 5743 5744 5745 - 5746 5748 5749 574B 5752 5753 5754 5755 - 5756 5758 5759 5762 5763 5765 5767 576C - 576E 5770 5771 5772 5774 5775 5778 5779 - 577A 577D 577E 577F 5780 FFFD 5781 5787 - 5788 5789 578A 578D 578E 578F 5790 5791 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 579C - 579D 579E 579F 57A5 57A8 57AA 57AC 57AF - 57B0 57B1 57B3 57B5 57B6 57B7 -End of Item 027D - -Begin of Item 027E - Format 1 - srcBegin = 88B0 - srcEnd = 88F6 - mappingOffset = 0464 - Mapping = - 57CC 57CD 57D0 57D1 57D3 57D6 57D7 57DB - 57DC 57DE 57E1 57E2 57E3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 57EE 57F0 57F1 - 57F2 57F3 57F5 57F6 57F7 57FB 57FC 57FE - 57FF 5801 5803 5804 5805 5808 5809 580A - 580C 580E 580F 5810 5812 5813 5814 5816 - 5817 5818 581A 581B 581C 581D 581F 5822 - 5823 5825 5826 5827 5828 5829 582B 582C - 582D 582E 582F 5831 5832 5833 5834 -End of Item 027E - -Begin of Item 027F - Format 1 - srcBegin = 894D - srcEnd = 8964 - mappingOffset = 04AB - Mapping = - 584E 584F 5850 5852 5853 5855 5856 5857 - 5859 585A 585B 585C 585D FFFD FFFD FFFD - FFFD FFFD FFFD 5866 5867 5868 5869 586A -End of Item 027F - -Begin of Item 0280 - Format 1 - srcBegin = 8976 - srcEnd = 898C - mappingOffset = 04C3 - Mapping = - 587F 5882 5884 5886 5887 5888 588A 588B - 588C FFFD 588D 588E 588F 5890 5891 5894 - 5895 5896 5897 5898 589B 589C 589D -End of Item 0280 - -Begin of Item 0281 - Format 1 - srcBegin = 89A7 - srcEnd = 89AD - mappingOffset = 04DA - Mapping = - 58BD 58BE 58BF 58C0 58C2 58C3 58C4 -End of Item 0281 - -Begin of Item 0282 - Format 1 - srcBegin = 89B9 - srcEnd = 89BB - mappingOffset = 04E1 - Mapping = - 58D2 58D3 58D4 -End of Item 0282 - -Begin of Item 0283 - Format 1 - srcBegin = 89D0 - srcEnd = 89FE - mappingOffset = 04E4 - Mapping = - 58ED 58EF 58F1 58F2 58F4 58F5 58F7 58F8 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5903 5905 5906 5908 5909 590A 590B 590C - 590E 5910 5911 5912 5913 5917 5918 591B - 591D 591E 5920 5921 5922 5923 5926 5928 - 592C 5930 5932 5933 5935 5936 593B -End of Item 0283 - -Begin of Item 0284 - Format 1 - srcBegin = 8A40 - srcEnd = 8A55 - mappingOffset = 0513 - Mapping = - 593D 593E 593F 5940 5943 5945 5946 594A - 594C 594D 5950 5952 5953 5959 595B 595C - 595D 595E 595F 5961 5963 5964 -End of Item 0284 - -Begin of Item 0285 - Format 1 - srcBegin = 8A63 - srcEnd = 8AAA - mappingOffset = 0529 - Mapping = - 5975 5977 597A 597B 597C 597E 597F 5980 - 5985 5989 598B 598C 598E 598F 5990 5991 - 5994 5995 5998 599A 599B 599C 599D 599F - 59A0 59A1 59A2 59A6 FFFD 59A7 59AC 59AD - 59B0 59B1 FFFD FFFD FFFD FFFD FFFD FFFD - 59BA 59BC 59BD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 59C7 59C8 59C9 59CC 59CD 59CE - 59CF 59D5 59D6 59D9 59DB 59DE 59DF 59E0 - 59E1 59E2 59E4 59E6 59E7 59E9 59EA 59EB -End of Item 0285 - -Begin of Item 0286 - Format 1 - srcBegin = 8AB7 - srcEnd = 8AF8 - mappingOffset = 0571 - Mapping = - 59FA 59FC 59FD 59FE 5A00 5A02 5A0A 5A0B - 5A0D 5A0E 5A0F 5A10 5A12 5A14 5A15 5A16 - 5A17 5A19 5A1A 5A1B 5A1D 5A1E 5A21 5A22 - 5A24 5A26 5A27 5A28 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5A33 5A35 5A37 5A38 5A39 - 5A3A 5A3B 5A3D 5A3E 5A3F 5A41 5A42 5A43 - 5A44 5A45 5A47 5A48 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5A56 5A57 - 5A58 5A59 -End of Item 0286 - -Begin of Item 0287 - Format 1 - srcBegin = 8B40 - srcEnd = 8B55 - mappingOffset = 05B3 - Mapping = - 5A61 5A63 5A64 5A65 5A66 5A68 5A69 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5A78 5A79 5A7B 5A7C 5A7D 5A7E -End of Item 0287 - -Begin of Item 0288 - Format 1 - srcBegin = 8B7D - srcEnd = 8BAF - mappingOffset = 05C9 - Mapping = - 5AAB 5AAC FFFD 5AAD 5AAE 5AAF 5AB0 5AB1 - 5AB4 5AB6 5AB7 5AB9 5ABA 5ABB 5ABC 5ABD - 5ABF 5AC0 FFFD FFFD FFFD FFFD FFFD FFFD - 5ACA 5ACB 5ACD 5ACE 5ACF 5AD0 5AD1 5AD3 - 5AD5 5AD7 5AD9 5ADA 5ADB 5ADD 5ADE 5ADF - 5AE2 5AE4 5AE5 5AE7 5AE8 5AEA 5AEC 5AED - 5AEE 5AEF 5AF0 -End of Item 0288 - -Begin of Item 0289 - Format 1 - srcBegin = 8BED - srcEnd = 8BEF - mappingOffset = 05FC - Mapping = - 5B33 5B35 5B36 -End of Item 0289 - -Begin of Item 028A - Format 1 - srcBegin = 8C48 - srcEnd = 8CFE - mappingOffset = 05FF - Mapping = - 5B52 5B56 5B5E 5B60 5B61 5B67 5B68 5B6B - 5B6D 5B6E 5B6F 5B72 5B74 5B76 5B77 5B78 - 5B79 5B7B 5B7C 5B7E 5B7F 5B82 5B86 5B8A - 5B8D 5B8E 5B90 5B91 5B92 5B94 5B96 5B9F - 5BA7 5BA8 5BA9 5BAC 5BAD 5BAE 5BAF 5BB1 - 5BB2 5BB7 5BBA 5BBB 5BBC 5BC0 5BC1 5BC3 - 5BC8 5BC9 5BCA 5BCB 5BCD 5BCE 5BCF FFFD - 5BD1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5BE0 5BE2 5BE3 5BE6 5BE7 5BE9 - 5BEA 5BEB 5BEC 5BED 5BEF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5BFD 5BFE 5C00 5C02 - 5C03 5C05 5C07 5C08 5C0B 5C0C 5C0D 5C0E - 5C10 5C12 5C13 5C17 5C19 5C1B 5C1E 5C1F - 5C20 5C21 5C23 5C26 5C28 5C29 5C2A 5C2B - 5C2D 5C2E 5C2F 5C30 5C32 5C33 5C35 5C36 - 5C37 5C43 5C44 5C46 5C47 5C4C 5C4D 5C52 - 5C53 5C54 5C56 5C57 5C58 5C5A 5C5B 5C5C - 5C5D 5C5F 5C62 5C64 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5C70 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5C7B 5C7C 5C7D 5C7E 5C80 - 5C83 5C84 5C85 5C86 5C87 5C89 5C8A 5C8B - 5C8E 5C8F 5C92 5C93 5C95 5C9D 5C9E 5C9F - 5CA0 5CA1 5CA4 5CA5 5CA6 5CA7 5CA8 -End of Item 028A - -Begin of Item 028B - Format 1 - srcBegin = 8D40 - srcEnd = 8D4E - mappingOffset = 06B6 - Mapping = - 5CAA 5CAE 5CAF 5CB0 5CB2 5CB4 5CB6 5CB9 - 5CBA 5CBB 5CBC 5CBE 5CC0 5CC2 5CC3 -End of Item 028B - -Begin of Item 028C - Format 1 - srcBegin = 8D68 - srcEnd = 8DA3 - mappingOffset = 06C5 - Mapping = - 5CE2 5CE3 5CE7 5CE9 5CEB 5CEC 5CEE 5CEF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5CFC 5CFD 5CFE 5CFF 5D00 FFFD - 5D01 5D04 5D05 FFFD FFFD FFFD FFFD FFFD - FFFD 5D0F 5D10 5D11 5D12 5D13 5D15 5D17 - 5D18 5D19 5D1A 5D1C 5D1D 5D1F 5D20 5D21 - 5D22 5D23 5D25 5D28 5D2A 5D2B 5D2C 5D2F - 5D30 5D31 5D32 5D33 -End of Item 028C - -Begin of Item 028D - Format 1 - srcBegin = 8DB4 - srcEnd = 8DB5 - mappingOffset = 0701 - Mapping = - 5D48 5D49 -End of Item 028D - -Begin of Item 028E - Format 1 - srcBegin = 8DC1 - srcEnd = 8DC3 - mappingOffset = 0703 - Mapping = - 5D59 5D5A 5D5C -End of Item 028E - -Begin of Item 028F - Format 1 - srcBegin = 8DCF - srcEnd = 8DD5 - mappingOffset = 0706 - Mapping = - 5D6A 5D6D 5D6E 5D70 5D71 5D72 5D73 -End of Item 028F - -Begin of Item 0290 - Format 1 - srcBegin = 8DF9 - srcEnd = 8DFE - mappingOffset = 070D - Mapping = - 5D9A 5D9B 5D9C 5D9E 5D9F 5DA0 -End of Item 0290 - -Begin of Item 0291 - Format 1 - srcBegin = 8E77 - srcEnd = 8EAE - mappingOffset = 0713 - Mapping = - 5DDC 5DDF 5DE0 5DE3 5DE4 5DEA 5DEC 5DED - FFFD 5DF0 5DF5 5DF6 5DF8 5DF9 5DFA 5DFB - 5DFC 5DFF 5E00 5E04 5E07 5E09 5E0A 5E0B - 5E0D 5E0E 5E12 5E13 5E17 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5E28 5E29 5E2A - 5E2B 5E2C 5E2F 5E30 5E32 5E33 5E34 5E35 - 5E36 5E39 5E3A 5E3E 5E3F 5E40 5E41 5E43 -End of Item 0291 - -Begin of Item 0292 - Format 1 - srcBegin = 8EBC - srcEnd = 8EC4 - mappingOffset = 074B - Mapping = - 5E56 5E57 5E58 5E59 5E5A 5E5C 5E5D 5E5F - 5E60 -End of Item 0292 - -Begin of Item 0293 - Format 1 - srcBegin = 8ED4 - srcEnd = 8EF7 - mappingOffset = 0754 - Mapping = - 5E75 5E77 5E79 5E7E 5E81 5E82 5E83 5E85 - 5E88 5E89 5E8C 5E8D 5E8E 5E92 5E98 5E9B - 5E9D 5EA1 5EA2 5EA3 5EA4 5EA8 5EA9 5EAA - 5EAB 5EAC 5EAE 5EAF 5EB0 5EB1 5EB2 5EB4 - 5EBA 5EBB 5EBC 5EBD -End of Item 0293 - -Begin of Item 0294 - Format 1 - srcBegin = 8F40 - srcEnd = 8F4E - mappingOffset = 0778 - Mapping = - 5EC6 5EC7 5EC8 FFFD FFFD FFFD FFFD FFFD - FFFD 5ED4 5ED5 5ED7 5ED8 5ED9 5EDA -End of Item 0294 - -Begin of Item 0295 - Format 1 - srcBegin = 8F5B - srcEnd = 8F8F - mappingOffset = 0787 - Mapping = - 5EE9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5EF5 5EF8 5EF9 5EFB 5EFC 5EFD - 5F05 5F06 5F07 5F09 5F0C 5F0D 5F0E 5F10 - 5F12 5F14 5F16 5F19 5F1A 5F1C 5F1D 5F1E - 5F21 5F22 5F23 5F24 FFFD 5F28 5F2B 5F2C - 5F2E 5F30 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F3B 5F3D 5F3E 5F3F -End of Item 0295 - -Begin of Item 0296 - Format 1 - srcBegin = 8F9F - srcEnd = 8FFE - mappingOffset = 07BC - Mapping = - 5F51 5F54 5F59 5F5A 5F5B 5F5C 5F5E 5F5F - 5F60 5F63 5F65 5F67 5F68 5F6B 5F6E 5F6F - 5F72 5F74 5F75 5F76 5F78 5F7A 5F7D 5F7E - 5F7F 5F83 5F86 5F8D 5F8E 5F8F 5F91 5F93 - 5F94 5F96 5F9A 5F9B 5F9D 5F9E 5F9F 5FA0 - FFFD FFFD FFFD FFFD FFFD FFFD 5FA9 5FAB - 5FAC FFFD FFFD FFFD FFFD FFFD FFFD 5FB6 - 5FB8 5FB9 5FBA 5FBB 5FBE 5FBF 5FC0 5FC1 - 5FC2 5FC7 5FC8 5FCA 5FCB 5FCE 5FD3 5FD4 - 5FD5 5FDA 5FDB 5FDC 5FDE 5FDF 5FE2 5FE3 - 5FE5 5FE6 5FE8 5FE9 5FEC 5FEF 5FF0 5FF2 - 5FF3 5FF4 5FF6 5FF7 5FF9 5FFA 5FFC 6007 -End of Item 0296 - -Begin of Item 0297 - Format 1 - srcBegin = 9040 - srcEnd = 90E4 - mappingOffset = 081C - Mapping = - 6008 6009 600B 600C 6010 6011 6013 6017 - 6018 601A 601E 601F 6022 6023 6024 602C - 602D 602E 6030 6031 6032 6033 6034 6036 - 6037 6038 6039 603A 603D 603E 6040 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 604C 604E - 604F 6051 6053 6054 6056 6057 6058 605B - 605C 605E 605F 6060 6061 6065 6066 606E - 6071 6072 6074 6075 6077 607E 6080 FFFD - 6081 6082 6085 6086 6087 6088 608A 608B - 608E 608F 6090 6091 6093 6095 6097 6098 - 6099 609C 609E 60A1 60A2 60A4 60A5 60A7 - 60A9 60AA 60AE 60B0 60B3 60B5 60B6 60B7 - 60B9 60BA FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 60C7 60C8 60C9 60CC 60CD 60CE - 60CF 60D0 60D2 60D3 60D4 60D6 60D7 60D9 - 60DB 60DE 60E1 60E2 60E3 60E4 60E5 60EA - 60F1 60F2 60F5 60F7 60F8 60FB 60FC 60FD - 60FE 60FF 6102 6103 6104 6105 6107 610A - 610B 610C 6110 6111 6112 6113 6114 6116 - 6117 6118 6119 611B 611C 611D 611E 6121 - 6122 6125 6128 6129 612A -End of Item 0297 - -Begin of Item 0298 - Format 1 - srcBegin = 9140 - srcEnd = 9163 - mappingOffset = 08C1 - Mapping = - 6147 6149 614B 614D 614F 6150 6152 6153 - 6154 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 615E 615F 6160 6161 6163 6164 6165 6166 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6171 - 6172 6173 6174 6176 -End of Item 0298 - -Begin of Item 0299 - Format 1 - srcBegin = 9177 - srcEnd = 917E - mappingOffset = 08E5 - Mapping = - 618C 618D 618F 6190 6191 6192 6193 6195 -End of Item 0299 - -Begin of Item 029A - Format 1 - srcBegin = 9190 - srcEnd = 9191 - mappingOffset = 08ED - Mapping = - 61AA 61AB -End of Item 029A - -Begin of Item 029B - Format 1 - srcBegin = 91A2 - srcEnd = 91B0 - mappingOffset = 08EF - Mapping = - 61BF 61C0 61C1 61C3 61C4 61C5 61C6 61C7 - 61C9 61CC 61CD 61CE 61CF 61D0 61D3 -End of Item 029B - -Begin of Item 029C - Format 1 - srcBegin = 91DF - srcEnd = 91FE - mappingOffset = 08FE - Mapping = - 6207 6209 6213 6214 6219 621C 621D 621E - 6220 6223 6226 6227 6228 6229 622B 622D - 622F 6230 6231 6232 6235 6236 6238 6239 - 623A 623B 623C 6242 6244 6245 6246 624A -End of Item 029C - -Begin of Item 029D - Format 1 - srcBegin = 9240 - srcEnd = 92FE - mappingOffset = 091E - Mapping = - 624F 6250 6255 6256 6257 6259 625A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6264 6265 - 6268 6271 6272 6274 6275 6277 6278 627A - 627B 627D 6281 6282 6283 6285 6286 6287 - 6288 FFFD FFFD FFFD FFFD FFFD FFFD 6294 - 6299 629C 629D 629E 62A3 62A6 62A7 62A9 - 62AA 62AD 62AE 62AF 62B0 62B2 62B3 62B4 - 62B6 62B7 62B8 62BA 62BE 62C0 62C1 FFFD - 62C3 62CB 62CF 62D1 62D5 62DD 62DE 62E0 - 62E1 62E4 62EA 62EB 62F0 62F2 62F5 62F8 - 62F9 62FA 62FB 6300 6303 6304 6305 6306 - 630A 630B 630C 630D 630F 6310 6312 6313 - 6314 6315 6317 6318 6319 631C 6326 6327 - 6329 632C 632D 632E 6330 6331 FFFD FFFD - FFFD FFFD FFFD FFFD 633B 633C 633E 633F - 6340 6341 6344 6347 6348 634A 6351 6352 - 6353 6354 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6360 6364 6365 6366 6368 636A - 636B 636C 636F 6370 6372 6373 6374 6375 - 6378 6379 637C 637D 637E 637F 6381 6383 - 6384 6385 6386 638B 638D 6391 6393 6394 - 6395 6397 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 63A1 63A4 63A6 63AB 63AF 63B1 63B2 - 63B5 63B6 63B9 63BB 63BD 63BF 63C0 -End of Item 029D - -Begin of Item 029E - Format 1 - srcBegin = 9340 - srcEnd = 93B2 - mappingOffset = 09DD - Mapping = - 63C1 63C2 63C3 63C5 63C7 63C8 63CA 63CB - 63CC 63D1 63D3 63D4 63D5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 63DF 63E2 63E4 63E5 - 63E6 63E7 63E8 63EB 63EC 63EE 63EF 63F0 - 63F1 63F3 63F5 63F7 63F9 63FA 63FB 63FC - 63FE 6403 6404 6406 6407 6408 6409 640A - 640D 640E 6411 6412 FFFD FFFD FFFD FFFD - FFFD FFFD 641D 641F 6422 6423 6424 FFFD - 6425 6427 6428 6429 642B FFFD FFFD FFFD - FFFD FFFD FFFD 6435 6436 6437 6438 6439 - 643B 643C 643E 6440 6442 6443 6449 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6453 6455 - 6456 6457 6459 645A 645B 645C 645D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6468 - 646A 646B 646C -End of Item 029E - -Begin of Item 029F - Format 1 - srcBegin = 93C4 - srcEnd = 93FE - mappingOffset = 0A50 - Mapping = - 6483 6486 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6493 6494 6497 6498 649A - 649B 649C 649D 649F 64A0 64A1 64A2 64A3 - 64A5 64A6 64A7 64A8 64AA 64AB 64AF 64B1 - 64B2 64B3 64B4 64B6 64B9 64BB 64BD 64BE - 64BF 64C1 64C3 64C4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 64CF 64D1 64D3 64D4 64D5 - 64D6 64D9 64DA -End of Item 029F - -Begin of Item 02A0 - Format 1 - srcBegin = 9440 - srcEnd = 9447 - mappingOffset = 0A8B - Mapping = - 64DB 64DC 64DD 64DF 64E0 64E1 64E3 64E5 -End of Item 02A0 - -Begin of Item 02A1 - Format 1 - srcBegin = 9471 - srcEnd = 94B4 - mappingOffset = 0A93 - Mapping = - 6513 6514 6515 6516 6517 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6522 - 6523 6524 6526 6527 6528 6529 652A 652C - 652D 6530 6531 6532 6533 6537 653A 653C - 653D 6540 6541 6542 6543 6544 6546 6547 - 654A 654B 654D 654E 6550 6552 6553 6554 - 6557 6558 655A 655C 655F 6560 6561 6564 - 6565 6567 6568 6569 656A 656D 656E 656F - 6571 6573 6575 6576 -End of Item 02A1 - -Begin of Item 02A2 - Format 1 - srcBegin = 94C4 - srcEnd = 94FE - mappingOffset = 0AD7 - Mapping = - 6588 6589 658A 658D 658E 658F 6592 6594 - 6595 6596 6598 659A 659D 659E 65A0 65A2 - 65A3 65A6 65A8 65AA 65AC 65AE FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 65BA 65BB - 65BE 65BF 65C0 65C2 65C7 65C8 65C9 65CA - 65CD 65D0 65D1 65D3 65D4 65D5 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 65E1 65E3 - 65E4 65EA 65EB -End of Item 02A2 - -Begin of Item 02A3 - Format 1 - srcBegin = 9540 - srcEnd = 95C9 - mappingOffset = 0B12 - Mapping = - 65F2 65F3 65F4 65F5 65F8 65F9 65FB 65FC - 65FD 65FE 65FF 6601 6604 6605 6607 6608 - 6609 660B 660D 6610 6611 6612 6616 6617 - 6618 661A 661B 661C 661E 6621 6622 6623 - 6624 6626 6629 662A 662B 662C 662E 6630 - 6632 6633 6637 6638 6639 663A 663B 663D - 663F 6640 6642 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 664D 664E 6650 6651 6658 FFFD - 6659 665B 665C 665D 665E 6660 6662 6663 - 6665 6667 6669 666A 666B 666C 666D 6671 - 6672 6673 6675 6678 6679 667B 667C 667D - 667F 6680 6681 6683 6685 6686 6688 6689 - 668A 668B 668D 668E 668F 6690 6692 6693 - 6694 6695 6698 6699 669A 669B 669C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 66A9 66AA 66AB 66AC 66AD 66AF 66B0 66B1 - 66B2 66B3 66B5 66B6 66B7 66B8 66BA 66BB - 66BC 66BD -End of Item 02A3 - -Begin of Item 02A4 - Format 1 - srcBegin = 95E4 - srcEnd = 95FE - mappingOffset = 0B9C - Mapping = - 66DA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 66E7 66E8 FFFD FFFD FFFD FFFD FFFD - FFFD 66F1 66F5 66F6 66F8 66FA 66FB 66FD - 6701 6702 6703 -End of Item 02A4 - -Begin of Item 02A5 - Format 1 - srcBegin = 9640 - srcEnd = 96DF - mappingOffset = 0BB7 - Mapping = - 6704 6705 6706 6707 670C 670E 670F 6711 - 6712 6713 6716 6718 6719 671A 671C 671E - FFFD FFFD FFFD FFFD FFFD FFFD 6727 6729 - 672E 6730 6732 6733 6736 6737 6738 6739 - 673B 673C 673E 673F 6741 6744 6745 6747 - 674A 674B 674D 6752 6754 6755 6757 6758 - 6759 675A 675B 675D 6762 6763 6764 6766 - 6767 676B 676C 676E 6771 6774 6776 FFFD - 6778 6779 677A 677B 677D 6780 6782 6783 - 6785 6786 6788 678A 678C 678D 678E 678F - 6791 6792 6793 6794 6796 6799 679B 679F - 67A0 67A1 67A4 67A6 67A9 67AC 67AE 67B1 - 67B2 67B4 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 67C2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 67D5 67D6 67D7 - 67DB 67DF 67E1 67E3 67E4 67E6 67E7 67E8 - 67EA 67EB 67ED 67EE 67F2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 67FE 6801 6802 - 6803 6804 6806 680D 6810 6812 6814 6815 - 6818 6819 681A 681B 681C 681E 681F 6820 -End of Item 02A5 - -Begin of Item 02A6 - Format 1 - srcBegin = 96EE - srcEnd = 96F8 - mappingOffset = 0C57 - Mapping = - 6834 6835 6836 683A 683B 683F 6847 684B - 684D 684F 6852 -End of Item 02A6 - -Begin of Item 02A7 - Format 1 - srcBegin = 9740 - srcEnd = 97C0 - mappingOffset = 0C62 - Mapping = - 685C 685D 685E 685F 686A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6875 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6882 - 6884 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6890 6891 6892 6894 6895 6896 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 68A3 68A4 68A5 68A9 68AA 68AB 68AC - 68AE 68B1 68B2 68B4 68B6 68B7 68B8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 68C1 - FFFD FFFD FFFD FFFD FFFD FFFD 68CA 68CC - 68CE 68CF 68D0 68D1 68D3 68D4 68D6 68D7 - 68D9 68DB 68DC 68DD 68DE 68DF 68E1 68E2 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 68EF 68F2 68F3 68F4 68F6 68F7 - 68F8 68FB 68FD 68FE 68FF 6900 6902 6903 - 6904 6906 6907 6908 6909 690A 690C 690F - 6911 -End of Item 02A7 - -Begin of Item 02A8 - Format 1 - srcBegin = 97CD - srcEnd = 97E6 - mappingOffset = 0CE3 - Mapping = - 6921 6922 6923 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 692E 692F 6931 6932 6933 - 6935 6936 6937 6938 693A 693B 693C 693E - 6940 6941 -End of Item 02A8 - -Begin of Item 02A9 - Format 1 - srcBegin = 97F8 - srcEnd = 97FE - mappingOffset = 0CFD - Mapping = - 6955 6956 6958 6959 695B 695C 695F -End of Item 02A9 - -Begin of Item 02AA - Format 1 - srcBegin = 9840 - srcEnd = 9899 - mappingOffset = 0D04 - Mapping = - 6961 6962 6964 6965 6967 6968 6969 696A - 696C 696D 696F 6970 6972 6973 6974 6975 - 6976 697A 697B 697D 697E 697F 6981 6983 - 6985 698A 698B 698C FFFD FFFD FFFD FFFD - FFFD FFFD 6996 6997 6999 699A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 69A9 69AA 69AC 69AE 69AF 69B0 69B2 69B3 - 69B5 69B6 69B8 69B9 69BA 69BC 69BD FFFD - 69BE 69BF 69C0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 69CB 69CD 69CF 69D1 69D2 - 69D3 FFFD FFFD FFFD FFFD FFFD FFFD 69DC - 69DD 69DE -End of Item 02AA - -Begin of Item 02AB - Format 1 - srcBegin = 98A6 - srcEnd = 98B4 - mappingOffset = 0D5E - Mapping = - 69EE 69EF 69F0 69F1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 69FE -End of Item 02AB - -Begin of Item 02AC - Format 1 - srcBegin = 98D1 - srcEnd = 98EE - mappingOffset = 0D6D - Mapping = - 6A20 FFFD FFFD FFFD FFFD FFFD FFFD 6A29 - 6A2B 6A2C 6A2D 6A2E 6A30 6A32 6A33 6A34 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6A3F - 6A40 6A41 6A42 6A43 6A45 6A46 -End of Item 02AC - -Begin of Item 02AD - Format 2 - srcBegin = 98FE - destBegin = 6A5A -End of Item 02AD - -Begin of Item 02AE - Format 1 - srcBegin = 9940 - srcEnd = 9947 - mappingOffset = 0D8B - Mapping = - 6A5C 6A5D 6A5E 6A5F 6A60 6A62 6A63 6A64 -End of Item 02AE - -Begin of Item 02AF - Format 1 - srcBegin = 995A - srcEnd = 9970 - mappingOffset = 0D93 - Mapping = - 6A7A 6A7B 6A7D 6A7E 6A7F 6A81 6A82 6A83 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6A8F 6A92 6A93 6A94 6A95 6A96 -End of Item 02AF - -Begin of Item 02B0 - Format 1 - srcBegin = 9980 - srcEnd = 9982 - mappingOffset = 0DAA - Mapping = - 6AA7 6AA8 6AAA -End of Item 02B0 - -Begin of Item 02B1 - Format 1 - srcBegin = 99F6 - srcEnd = 99F7 - mappingOffset = 0DAD - Mapping = - 6B25 6B26 -End of Item 02B1 - -Begin of Item 02B2 - Format 1 - srcBegin = 9A40 - srcEnd = 9A53 - mappingOffset = 0DAF - Mapping = - 6B2F 6B30 6B31 6B33 6B34 6B35 6B36 6B38 - 6B3B 6B3C 6B3D 6B3F 6B40 6B41 6B42 6B44 - 6B45 6B48 6B4A 6B4B -End of Item 02B2 - -Begin of Item 02B3 - Format 1 - srcBegin = 9A68 - srcEnd = 9A69 - mappingOffset = 0DC3 - Mapping = - 6B68 6B69 -End of Item 02B3 - -Begin of Item 02B4 - Format 1 - srcBegin = 9A78 - srcEnd = 9A8E - mappingOffset = 0DC5 - Mapping = - 6B7A 6B7D 6B7E 6B7F 6B80 6B85 6B88 FFFD - 6B8C 6B8E 6B8F 6B90 6B91 6B94 6B95 6B97 - 6B98 6B99 6B9C 6B9D 6B9E 6B9F 6BA0 -End of Item 02B4 - -Begin of Item 02B5 - Format 1 - srcBegin = 9A9F - srcEnd = 9AFE - mappingOffset = 0DDC - Mapping = - 6BB6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6BC0 6BC3 6BC4 6BC6 6BC7 6BC8 6BC9 6BCA - 6BCC 6BCE 6BD0 6BD1 6BD8 6BDA 6BDC 6BDD - 6BDE 6BDF 6BE0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6BEC 6BED 6BEE 6BF0 6BF1 - 6BF2 6BF4 6BF6 6BF7 6BF8 6BFA 6BFB 6BFC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6C08 - 6C09 6C0A 6C0B 6C0C 6C0E 6C12 6C17 6C1C - 6C1D 6C1E 6C20 6C23 6C25 6C2B 6C2C 6C2D - 6C31 6C33 6C36 6C37 6C39 6C3A 6C3B 6C3C - 6C3E 6C3F 6C43 6C44 6C45 6C48 6C4B 6C4C - 6C4D 6C4E 6C4F 6C51 6C52 6C53 6C56 6C58 -End of Item 02B5 - -Begin of Item 02B6 - Format 1 - srcBegin = 9B40 - srcEnd = 9BFE - mappingOffset = 0E3C - Mapping = - 6C59 6C5A 6C62 6C63 6C65 6C66 6C67 6C6B - 6C6C 6C6D 6C6E 6C6F 6C71 6C73 6C75 6C77 - 6C78 6C7A 6C7B 6C7C 6C7F 6C80 6C84 6C87 - 6C8A 6C8B 6C8D 6C8E 6C91 6C92 6C95 6C96 - 6C97 6C98 6C9A 6C9C 6C9D 6C9E 6CA0 6CA2 - 6CA8 6CAC 6CAF 6CB0 6CB4 6CB5 6CB6 6CB7 - 6CBA 6CC0 6CC1 6CC2 6CC3 6CC6 6CC7 6CC8 - 6CCB 6CCD 6CCE 6CCF 6CD1 6CD2 6CD8 FFFD - 6CD9 6CDA 6CDC 6CDD 6CDF 6CE4 6CE6 6CE7 - 6CE9 6CEC 6CED 6CF2 6CF4 6CF9 6CFF 6D00 - 6D02 6D03 6D05 6D06 6D08 6D09 6D0A 6D0D - 6D0F 6D10 6D11 6D13 6D14 6D15 6D16 6D18 - 6D1C 6D1D FFFD FFFD FFFD FFFD FFFD FFFD - 6D26 6D28 6D29 6D2C 6D2D 6D2F 6D30 6D34 - 6D36 6D37 6D38 6D3A 6D3F 6D40 6D42 6D44 - 6D49 6D4C 6D50 6D55 6D56 6D57 6D58 6D5B - 6D5D 6D5F 6D61 6D62 6D64 6D65 6D67 6D68 - 6D6B 6D6C 6D6D 6D70 6D71 6D72 6D73 6D75 - 6D76 6D79 6D7A 6D7B 6D7D 6D7E 6D7F 6D80 - 6D81 6D83 6D84 6D86 6D87 6D8A 6D8B 6D8D - 6D8F 6D90 6D92 6D96 6D97 6D98 6D99 6D9A - 6D9C 6DA2 6DA5 6DAC 6DAD 6DB0 6DB1 6DB3 - 6DB4 6DB6 6DB7 FFFD FFFD FFFD FFFD FFFD - FFFD 6DC1 6DC2 6DC3 6DC8 6DC9 6DCA -End of Item 02B6 - -Begin of Item 02B7 - Format 1 - srcBegin = 9C40 - srcEnd = 9C82 - mappingOffset = 0EFB - Mapping = - 6DCD 6DCE 6DCF 6DD0 6DD2 6DD3 6DD4 6DD5 - 6DD7 6DDA 6DDB 6DDC 6DDF 6DE2 6DE3 6DE5 - 6DE7 6DE8 6DE9 6DEA 6DED 6DEF 6DF0 6DF2 - 6DF4 6DF5 6DF6 6DF8 6DFA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6E06 6E07 6E08 - 6E09 6E0B 6E0F 6E12 6E13 6E15 6E18 6E19 - 6E1B 6E1C 6E1E 6E1F 6E22 6E26 6E27 6E28 - 6E2A 6E2C 6E2E 6E30 6E31 6E33 6E35 FFFD - 6E36 6E37 6E39 -End of Item 02B7 - -Begin of Item 02B8 - Format 1 - srcBegin = 9C93 - srcEnd = 9C9D - mappingOffset = 0F3E - Mapping = - 6E4F 6E50 6E51 6E52 6E55 6E57 6E59 6E5A - 6E5C 6E5D 6E5E -End of Item 02B8 - -Begin of Item 02B9 - Format 1 - srcBegin = 9CA9 - srcEnd = 9CAA - mappingOffset = 0F49 - Mapping = - 6E6C 6E6D -End of Item 02B9 - -Begin of Item 02BA - Format 1 - srcBegin = 9CBA - srcEnd = 9CF8 - mappingOffset = 0F4B - Mapping = - 6E80 6E81 6E82 6E84 6E87 6E88 6E8A 6E8B - 6E8C 6E8D 6E8E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6E99 6E9A 6E9B 6E9D 6E9E 6EA0 - 6EA1 6EA3 6EA4 6EA6 6EA8 6EA9 6EAB 6EAC - 6EAD 6EAE 6EB0 6EB3 6EB5 6EB8 6EB9 6EBC - 6EBE 6EBF 6EC0 6EC3 6EC4 6EC5 6EC6 6EC8 - 6EC9 6ECA 6ECC 6ECD 6ECE 6ED0 6ED2 6ED6 - 6ED8 6ED9 6EDB 6EDC 6EDD 6EE3 6EE7 -End of Item 02BA - -Begin of Item 02BB - Format 1 - srcBegin = 9D40 - srcEnd = 9DB5 - mappingOffset = 0F8A - Mapping = - 6EF0 6EF1 6EF2 6EF3 6EF5 6EF6 6EF7 6EF8 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6F03 6F04 6F05 6F07 6F08 6F0A 6F0B 6F0C - 6F0D 6F0E 6F10 6F11 6F12 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6F21 - 6F22 6F23 6F25 6F26 6F27 6F28 6F2C 6F2E - 6F30 6F32 6F34 6F35 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6F3F 6F40 6F41 6F42 FFFD - 6F43 6F44 6F45 6F48 6F49 6F4A 6F4C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6F59 6F5A 6F5B 6F5D 6F5F 6F60 6F61 - 6F63 6F64 6F65 FFFD FFFD FFFD FFFD FFFD - FFFD 6F6F 6F70 6F71 6F73 6F75 6F76 6F77 - 6F79 6F7B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6F85 6F86 6F87 6F8A 6F8B -End of Item 02BB - -Begin of Item 02BC - Format 1 - srcBegin = 9DC3 - srcEnd = 9DCB - mappingOffset = 1000 - Mapping = - 6F9D 6F9E 6F9F 6FA0 6FA2 6FA3 6FA4 6FA5 - 6FA6 -End of Item 02BC - -Begin of Item 02BD - Format 1 - srcBegin = 9DD7 - srcEnd = 9DE1 - mappingOffset = 1009 - Mapping = - 6FB4 6FB5 6FB7 6FB8 FFFD FFFD FFFD FFFD - FFFD FFFD 6FC1 -End of Item 02BD - -Begin of Item 02BE - Format 1 - srcBegin = 9DFA - srcEnd = 9DFE - mappingOffset = 1014 - Mapping = - 6FDF 6FE2 6FE3 6FE4 6FE5 -End of Item 02BE - -Begin of Item 02BF - Format 1 - srcBegin = 9E8A - srcEnd = 9E8C - mappingOffset = 1019 - Mapping = - 7036 7037 7038 -End of Item 02BF - -Begin of Item 02C0 - Format 1 - srcBegin = 9E9F - srcEnd = 9EA0 - mappingOffset = 101C - Mapping = - 704D 704E -End of Item 02C0 - -Begin of Item 02C1 - Format 1 - srcBegin = 9EBB - srcEnd = 9ED6 - mappingOffset = 101E - Mapping = - 706E 7071 7072 7073 7074 7077 7079 707A - 707B 707D 7081 7082 7083 7084 7086 7087 - 7088 708B 708C 708D 708F 7090 7091 7093 - 7097 7098 709A 709B -End of Item 02C1 - -Begin of Item 02C2 - Format 1 - srcBegin = 9EE4 - srcEnd = 9EF0 - mappingOffset = 103A - Mapping = - 70B0 70B2 70B4 70B5 70B6 70BA 70BE 70BF - 70C4 70C5 70C6 70C7 70C9 -End of Item 02C2 - -Begin of Item 02C3 - Format 2 - srcBegin = 9EFE - destBegin = 70DA -End of Item 02C3 - -Begin of Item 02C4 - Format 1 - srcBegin = 9F40 - srcEnd = 9F54 - mappingOffset = 1047 - Mapping = - 70DC 70DD 70DE 70E0 70E1 70E2 70E3 70E5 - 70EA 70EE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 70F8 70FA 70FB 70FC -End of Item 02C4 - -Begin of Item 02C5 - Format 1 - srcBegin = 9F60 - srcEnd = 9F68 - mappingOffset = 105C - Mapping = - 710B 710C 710D 710E 710F 7111 7112 7114 - 7117 -End of Item 02C5 - -Begin of Item 02C6 - Format 1 - srcBegin = 9F7C - srcEnd = 9F80 - mappingOffset = 1065 - Mapping = - 7132 7133 7134 FFFD 7135 -End of Item 02C6 - -Begin of Item 02C7 - Format 1 - srcBegin = 9F8F - srcEnd = 9F94 - mappingOffset = 106A - Mapping = - 7146 7147 7148 7149 714B 714D -End of Item 02C7 - -Begin of Item 02C8 - Format 1 - srcBegin = 9FA2 - srcEnd = 9FE6 - mappingOffset = 1070 - Mapping = - 715D 715F 7160 7161 7162 7163 7165 7169 - 716A 716B 716C 716D 716F 7170 7171 7174 - 7175 7176 7177 7179 717B 717C FFFD FFFD - FFFD FFFD FFFD FFFD 7185 7186 7187 7188 - 7189 718B 718C 718D 718E 7190 7191 7192 - 7193 7195 7196 7197 719A 719B 719C 719D - 719E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 71A9 71AA 71AB FFFD FFFD FFFD FFFD FFFD - FFFD 71B4 71B6 71B7 71B8 -End of Item 02C8 - -Begin of Item 02C9 - Format 1 - srcBegin = 9FFA - srcEnd = 9FFE - mappingOffset = 10B5 - Mapping = - 71CF 71D0 71D1 71D2 71D3 -End of Item 02C9 - -Begin of Item 02CA - Format 1 - srcBegin = A04A - srcEnd = A04E - mappingOffset = 10BA - Mapping = - 71E1 71E2 71E3 71E4 71E6 -End of Item 02CA - -Begin of Item 02CB - Format 1 - srcBegin = A080 - srcEnd = A0CA - mappingOffset = 10BF - Mapping = - 721B 721C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7229 722B 722D 722E - 722F 7232 7233 7234 723A 723C 723E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7249 724A - 724B 724E 724F 7250 7251 7253 7254 7255 - 7257 7258 725A 725C 725E 7260 7263 7264 - 7265 7268 726A 726B 726C 726D 7270 7271 - 7273 7274 7276 7277 7278 727B 727C 727D - 7282 7283 7285 7286 7287 7288 7289 728C - 728E 7290 7291 -End of Item 02CB - -Begin of Item 02CC - Format 1 - srcBegin = A0E3 - srcEnd = A0FE - mappingOffset = 110A - Mapping = - 72AE 72B1 72B2 72B3 72B5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 72C5 72C6 72C7 72C9 - 72CA 72CB 72CC 72CF 72D1 72D3 72D4 72D5 - 72D6 72D8 72DA 72DB -End of Item 02CC - -Begin of Item 02CD - Format 1 - srcBegin = A1A1 - srcEnd = A1FE - mappingOffset = 1126 - Mapping = - 3000 3001 3002 00B7 02C9 02C7 00A8 3003 - 3005 2014 FF5E 2016 2026 2018 2019 201C - 201D 3014 3015 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3016 3017 3010 3011 00B1 - 00D7 00F7 2236 2227 2228 2211 220F 222A - 2229 2208 2237 221A 22A5 2225 2220 2312 - 2299 222B 222E 2261 224C 2248 223D 221D - 2260 226E 226F 2264 2265 221E 2235 2234 - 2642 2640 00B0 2032 2033 2103 FF04 00A4 - FFE0 FFE1 2030 00A7 2116 2606 2605 25CB - 25CF 25CE 25C7 25C6 25A1 25A0 25B3 25B2 - 203B 2192 2190 2191 2193 3013 -End of Item 02CD - -Begin of Item 02CE - Format 1 - srcBegin = A3A1 - srcEnd = A3A4 - mappingOffset = 1184 - Mapping = - FF01 FF02 FF03 FFE5 -End of Item 02CE - -Begin of Item 02CF - Format 2 - srcBegin = A3FE - destBegin = FFE3 -End of Item 02CF - -Begin of Item 02D0 - Format 1 - srcBegin = A6E0 - srcEnd = A6F5 - mappingOffset = 1188 - Mapping = - FE35 FE36 FE39 FE3A FE3F FE40 FE3D FE3E - FE41 FE42 FE43 FE44 FFFD FFFD FE3B FE3C - FE37 FE38 FE31 FFFD FE33 FE34 -End of Item 02D0 - -Begin of Item 02D1 - Format 2 - srcBegin = A7A7 - destBegin = 0401 -End of Item 02D1 - -Begin of Item 02D2 - Format 2 - srcBegin = A7D7 - destBegin = 0451 -End of Item 02D2 - -Begin of Item 02D3 - Format 1 - srcBegin = A840 - srcEnd = A853 - mappingOffset = 119E - Mapping = - 02CA 02CB 02D9 2013 2015 2025 2035 2105 - 2109 2196 2197 2198 2199 2215 221F 2223 - 2252 2266 2267 22BF -End of Item 02D3 - -Begin of Item 02D4 - Format 1 - srcBegin = A888 - srcEnd = A895 - mappingOffset = 11B2 - Mapping = - 2593 2594 2595 25BC 25BD 25E2 25E3 25E4 - 25E5 2609 2295 3012 301D 301E -End of Item 02D4 - -Begin of Item 02D5 - Format 1 - srcBegin = A8A1 - srcEnd = A8C0 - mappingOffset = 11C0 - Mapping = - 0101 00E1 01CE 00E0 0113 00E9 011B 00E8 - 012B 00ED 01D0 00EC 014D 00F3 01D2 00F2 - 016B 00FA 01D4 00F9 01D6 01D8 01DA 01DC - 00FC 00EA 0251 FFFD 0144 0148 FFFD 0261 -End of Item 02D5 - -Begin of Item 02D6 - Format 1 - srcBegin = A949 - srcEnd = A988 - mappingOffset = 11E0 - Mapping = - 32A3 338E 338F 339C 339D 339E 33A1 33C4 - 33CE 33D1 33D2 33D5 FE30 FFE2 FFE4 FFFD - 2121 3231 FFFD 2010 FFFD FFFD FFFD 30FC - 309B 309C 30FD 30FE 3006 309D 309E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FE54 FE55 FE56 FE57 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FE62 - FE63 FE64 FE65 FE66 FE68 FE69 FE6A FE6B -End of Item 02D6 - -Begin of Item 02D7 - Format 2 - srcBegin = A996 - destBegin = 3007 -End of Item 02D7 - -Begin of Item 02D8 - Format 1 - srcBegin = AA40 - srcEnd = AA8A - mappingOffset = 1220 - Mapping = - 72DC 72DD 72DF FFFD FFFD FFFD FFFD FFFD - FFFD 72EA 72EB 72F5 72F6 72F9 72FD 72FE - 72FF 7300 7302 FFFD FFFD FFFD FFFD FFFD - FFFD 730B 730C 730D 730F 7310 7311 7312 - 7314 7318 7319 731A 731F 7320 7323 7324 - 7326 7327 7328 732D 732F 7330 7332 7333 - 7335 7336 733A 733B 733C 733D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7349 734A 734B 734C 734E 734F 7351 7353 - 7354 7355 7356 -End of Item 02D8 - -Begin of Item 02D9 - Format 1 - srcBegin = AA9E - srcEnd = AAA0 - mappingOffset = 126B - Mapping = - 736E 7370 7371 -End of Item 02D9 - -Begin of Item 02DA - Format 1 - srcBegin = AB4C - srcEnd = ABA0 - mappingOffset = 126E - Mapping = - 737F 7380 7381 7382 7383 7385 7386 7388 - 738A 738C 738D 738F 7390 7392 7393 7394 - 7395 7397 7398 7399 739A 739C 739D 739E - 73A0 73A1 FFFD FFFD FFFD FFFD FFFD FFFD - 73AA 73AC 73AD 73B1 73B4 73B5 73B6 73B8 - 73B9 73BC 73BD 73BE 73BF 73C1 73C3 73C4 - 73C5 73C6 73C7 FFFD 73CB 73CC 73CE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 73DA 73DB - 73DC 73DD 73DF 73E1 73E2 73E3 73E4 73E6 - 73E8 73EA 73EB 73EC 73EE 73EF 73F0 73F1 - 73F3 73F4 73F5 73F6 73F7 -End of Item 02DA - -Begin of Item 02DB - Format 1 - srcBegin = AC4B - srcEnd = AC51 - mappingOffset = 12C3 - Mapping = - 7404 7407 7408 740B 740C 740D 740E -End of Item 02DB - -Begin of Item 02DC - Format 1 - srcBegin = AC61 - srcEnd = AC72 - mappingOffset = 12CA - Mapping = - 7423 7424 7427 7429 742B 742D 742F 7431 - 7432 7437 7438 7439 743A 743B 743D 743E - 743F 7440 -End of Item 02DC - -Begin of Item 02DD - Format 1 - srcBegin = AC87 - srcEnd = AC89 - mappingOffset = 12DC - Mapping = - 7456 7458 745D -End of Item 02DD - -Begin of Item 02DE - Format 1 - srcBegin = AC97 - srcEnd = ACA0 - mappingOffset = 12DF - Mapping = - 746E 746F 7471 7472 7473 7474 7475 7478 - 7479 747A -End of Item 02DE - -Begin of Item 02DF - Format 1 - srcBegin = AD40 - srcEnd = AD4D - mappingOffset = 12E9 - Mapping = - 747B 747C 747D 747F 7482 7484 7485 7486 - 7488 7489 748A 748C 748D 748F -End of Item 02DF - -Begin of Item 02E0 - Format 2 - srcBegin = AD59 - destBegin = 749D -End of Item 02E0 - -Begin of Item 02E1 - Format 1 - srcBegin = AD93 - srcEnd = ADA0 - mappingOffset = 12F7 - Mapping = - 74DD 74DF 74E1 74E5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 74F0 74F1 74F2 -End of Item 02E1 - -Begin of Item 02E2 - Format 1 - srcBegin = AE40 - srcEnd = AEA0 - mappingOffset = 1305 - Mapping = - 74F3 74F5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7500 7501 7502 7503 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 750E 7510 7512 - 7514 7515 7516 7517 751B 751D 751E 7520 - 7521 7522 7523 7524 7526 7527 752A 752E - 7534 7536 7539 753C 753D 753F 7541 7542 - 7543 7544 7546 7547 7549 754A 754D 7550 - 7551 7552 7553 7555 7556 7557 7558 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7567 7568 7569 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7573 7575 7576 7577 757A 757B - 757C 757D 757E 7580 7581 7582 7584 7585 - 7587 -End of Item 02E2 - -Begin of Item 02E3 - Format 1 - srcBegin = AF40 - srcEnd = AFA0 - mappingOffset = 1366 - Mapping = - 7588 7589 758A 758C 758D 758E 7590 7593 - 7595 7598 759B 759C 759E 75A2 75A6 75A7 - 75A8 75A9 75AA 75AD 75B6 75B7 75BA 75BB - 75BF 75C0 75C1 75C6 75CB 75CC 75CE 75CF - 75D0 75D1 75D3 75D7 75D9 75DA 75DC 75DD - 75DF 75E0 75E1 75E5 75E9 75EC 75ED 75EE - 75EF 75F2 75F3 75F5 75F6 75F7 75F8 75FA - 75FB 75FD 75FE 7602 7604 7606 7607 FFFD - 7608 7609 760B 760D 760E 760F 7611 7612 - 7613 7614 7616 761A 761C 761D 761E 7621 - 7623 7627 7628 762C 762E 762F 7631 7632 - 7636 7637 7639 763A 763B 763D 7641 7642 - 7644 -End of Item 02E3 - -Begin of Item 02E4 - Format 1 - srcBegin = B04D - srcEnd = B07E - mappingOffset = 13C7 - Mapping = - 7655 7657 7658 7659 765A 765B 765D 765F - 7660 7661 7662 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 766C 766D 766E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7679 767A 767C - 767F 7680 7681 7683 7685 7689 768A 768C - 768D 768F 7690 7692 7694 7695 7697 7698 - 769A 769B -End of Item 02E4 - -Begin of Item 02E5 - Format 1 - srcBegin = B091 - srcEnd = B0FE - mappingOffset = 13F9 - Mapping = - 76AF 76B0 76B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 76C0 76C1 76C3 - 554A 963F 57C3 6328 54CE 5509 54C0 7691 - 764C 853C 77EE 827E 788D 7231 9698 978D - 6C28 5B89 4FFA 6309 6697 5CB8 80FA 6848 - 80AE 6602 76CE 51F9 6556 71AC 7FF1 8884 - 50B2 5965 61CA 6FB3 82AD 634C 6252 53ED - 5427 7B06 516B 75A4 5DF4 62D4 8DCB 9776 - 628A 8019 575D 9738 7F62 7238 767D 67CF - 767E 6446 4F70 8D25 62DC 7A17 6591 73ED - 642C 6273 822C 9881 677F 7248 626E 62CC - 4F34 74E3 534A 529E 7ECA 90A6 5E2E 6886 - 699C 8180 7ED1 68D2 78C5 868C 9551 508D - 8C24 82DE 80DE 5305 8912 5265 -End of Item 02E5 - -Begin of Item 02E6 - Format 1 - srcBegin = B140 - srcEnd = B168 - mappingOffset = 1467 - Mapping = - 76C4 76C7 76C9 76CB 76CC 76D3 76D5 76D9 - 76DA 76DC 76DD 76DE 76E0 76E1 76E2 76E3 - 76E4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 76F0 76F3 76F5 76F6 76F7 76FA 76FB - 76FD 76FF 7700 7702 7703 7705 7706 770A - 770C -End of Item 02E6 - -Begin of Item 02E7 - Format 1 - srcBegin = B174 - srcEnd = B18F - mappingOffset = 1490 - Mapping = - 771B 771C 771D 771E 7721 7723 7724 7725 - 7727 772A 772B FFFD 772C 772E 7730 7731 - 7732 7733 7734 7739 773B 773D 773E 773F - 7742 7744 7745 7746 -End of Item 02E7 - -Begin of Item 02E8 - Format 1 - srcBegin = B1A0 - srcEnd = B1FE - mappingOffset = 14AC - Mapping = - 775C 8584 96F9 4FDD 5821 9971 5B9D 62B1 - 62A5 66B4 8C79 9C8D 7206 676F 7891 60B2 - 5351 5317 8F88 80CC 8D1D 94A1 500D 72C8 - 5907 60EB 7119 88AB 5954 82EF 672C 7B28 - 5D29 7EF7 752D 6CF5 8E66 8FF8 903C 9F3B - 6BD4 9119 7B14 5F7C 78A7 84D6 853D 6BD5 - 6BD9 6BD6 5E01 5E87 75F9 95ED 655D 5F0A - 5FC5 8F9F 58C1 81C2 907F 965B 97AD 8FB9 - 7F16 8D2C 6241 4FBF 53D8 535E 8FA8 8FA9 - 8FAB 904D 6807 5F6A 8198 8868 9CD6 618B - 522B 762A 5F6C 658C 6FD2 6EE8 5BBE 6448 - 5175 51B0 67C4 4E19 79C9 997C 70B3 -End of Item 02E8 - -Begin of Item 02E9 - Format 1 - srcBegin = B240 - srcEnd = B247 - mappingOffset = 150B - Mapping = - 775D 775E 775F 7760 7764 7767 7769 776A -End of Item 02E9 - -Begin of Item 02EA - Format 1 - srcBegin = B254 - srcEnd = B261 - mappingOffset = 1513 - Mapping = - 777A 777B 777C 7781 7782 7783 FFFD FFFD - FFFD FFFD FFFD FFFD 778F 7790 -End of Item 02EA - -Begin of Item 02EB - Format 1 - srcBegin = B26E - srcEnd = B281 - mappingOffset = 1521 - Mapping = - 77A1 77A3 77A4 77A6 77A8 77AB 77AD 77AE - 77AF 77B1 77B2 77B4 77B6 77B7 77B8 77B9 - 77BA FFFD 77BC 77BE -End of Item 02EB - -Begin of Item 02EC - Format 1 - srcBegin = B298 - srcEnd = B2FE - mappingOffset = 1535 - Mapping = - 77D8 77D9 77DA 77DD 77DE 77DF 77E0 77E1 - 77E4 75C5 5E76 73BB 83E0 64AD 62E8 94B5 - 6CE2 535A 52C3 640F 94C2 7B94 4F2F 5E1B - 8236 8116 818A 6E24 6CCA 9A73 6355 535C - 54FA 8865 57E0 4E0D 5E03 6B65 7C3F 90E8 - 6016 64E6 731C 88C1 6750 624D 8D22 776C - 8E29 91C7 5F69 83DC 8521 9910 53C2 8695 - 6B8B 60ED 60E8 707F 82CD 8231 4ED3 6CA7 - 85CF 64CD 7CD9 69FD 66F9 8349 5395 7B56 - 4FA7 518C 6D4B 5C42 8E6D 63D2 53C9 832C - 8336 67E5 78B4 643D 5BDF 5C94 5DEE 8BE7 - 62C6 67F4 8C7A 6400 63BA 8749 998B 8C17 - 7F20 94F2 4EA7 9610 98A4 660C 7316 -End of Item 02EC - -Begin of Item 02ED - Format 1 - srcBegin = B340 - srcEnd = B381 - mappingOffset = 159C - Mapping = - 77E6 77E8 77EA 77EF 77F0 77F1 77F2 77F4 - 77F5 77F7 77F9 77FA 77FB 77FC FFFD FFFD - FFFD FFFD FFFD FFFD 780A 780B 780E 780F - 7810 7813 7815 7819 781B 781E 7820 7821 - 7822 7824 7828 782A 782B 782E 782F 7831 - 7832 7833 7835 7836 783D 783F 7841 7842 - 7843 7844 7846 7848 7849 784A 784B 784D - 784F 7851 7853 7854 7858 7859 785A FFFD - 785B 785C -End of Item 02ED - -Begin of Item 02EE - Format 1 - srcBegin = B396 - srcEnd = B3FE - mappingOffset = 15DE - Mapping = - 7878 7879 787A 787B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 573A 5C1D 5E38 957F 507F - 80A0 5382 655E 7545 5531 5021 8D85 6284 - 949E 671D 5632 6F6E 5DE2 5435 7092 8F66 - 626F 64A4 63A3 5F7B 6F88 90F4 81E3 8FB0 - 5C18 6668 5FF1 6C89 9648 8D81 886C 6491 - 79F0 57CE 6A59 6210 5448 4E58 7A0B 60E9 - 6F84 8BDA 627F 901E 9A8B 79E4 5403 75F4 - 6301 5319 6C60 8FDF 5F1B 9A70 803B 9F7F - 4F88 5C3A 8D64 7FC5 65A5 70BD 5145 51B2 - 866B 5D07 5BA0 62BD 916C 7574 8E0C 7A20 - 6101 7B79 4EC7 7EF8 7785 4E11 81ED 521D - 51FA 6A71 53A8 8E87 9504 96CF 6EC1 9664 - 695A -End of Item 02EE - -Begin of Item 02EF - Format 1 - srcBegin = B440 - srcEnd = B474 - mappingOffset = 1647 - Mapping = - 7884 7885 7886 7888 788A 788B 788F 7890 - 7892 7894 7895 7896 7899 789D 789E 78A0 - 78A2 78A4 78A6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 78B5 78B6 78B7 78B8 78BA - 78BB 78BC 78BD 78BF 78C0 78C2 78C3 78C4 - 78C6 78C7 78C8 78CC 78CD 78CE 78CF 78D1 - 78D2 78D3 78D6 78D7 78D8 -End of Item 02EF - -Begin of Item 02F0 - Format 1 - srcBegin = B480 - srcEnd = B4FE - mappingOffset = 167C - Mapping = - 78E4 78E5 78E6 78E7 78E9 78EA 78EB 78ED - 78EE 78EF 78F0 78F1 78F3 78F5 78F6 78F8 - 78F9 FFFD FFFD FFFD FFFD FFFD FFFD 7902 - 7903 7904 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7840 50A8 77D7 6410 89E6 5904 63E3 - 5DDD 7A7F 693D 4F20 8239 5598 4E32 75AE - 7A97 5E62 5E8A 95EF 521B 5439 708A 6376 - 9524 5782 6625 693F 9187 5507 6DF3 7EAF - 8822 6233 7EF0 75B5 8328 78C1 96CC 8F9E - 6148 74F7 8BCD 6B64 523A 8D50 6B21 806A - 8471 56F1 5306 4ECE 4E1B 51D1 7C97 918B - 7C07 4FC3 8E7F 7BE1 7A9C 6467 5D14 50AC - 8106 7601 7CB9 6DEC 7FE0 6751 5B58 5BF8 - 78CB 64AE 6413 63AA 632B 9519 642D 8FBE - 7B54 7629 6253 5927 5446 6B79 50A3 6234 - 5E26 6B86 4EE3 8D37 888B 5F85 902E -End of Item 02F0 - -Begin of Item 02F1 - Format 1 - srcBegin = B550 - srcEnd = B554 - mappingOffset = 16FB - Mapping = - 791F 7920 7921 7922 7923 -End of Item 02F1 - -Begin of Item 02F2 - Format 1 - srcBegin = B564 - srcEnd = B5FE - mappingOffset = 1700 - Mapping = - 7935 7936 7937 7938 7939 793D 793F 7942 - 7943 7944 7945 7947 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7954 7955 7958 - 7959 7961 7963 FFFD 7964 7966 7969 796A - 796B 796C 796E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7979 797B 797C 797D 797E 797F - 7982 7983 7986 7987 7988 7989 798B 798C - 798D 798E 7990 7991 7992 6020 803D 62C5 - 4E39 5355 90F8 63B8 80C6 65E6 6C2E 4F46 - 60EE 6DE1 8BDE 5F39 86CB 5F53 6321 515A - 8361 6863 5200 6363 8E48 5012 5C9B 7977 - 5BFC 5230 7A3B 60BC 9053 76D7 5FB7 5F97 - 7684 8E6C 706F 767B 7B49 77AA 51F3 9093 - 5824 4F4E 6EF4 8FEA 654C 7B1B 72C4 6DA4 - 7FDF 5AE1 62B5 5E95 5730 8482 7B2C 5E1D - 5F1F 9012 7F14 98A0 6382 6EC7 7898 70B9 - 5178 975B 57AB 7535 4F43 7538 5E97 60E6 - 5960 6DC0 6BBF 7889 53FC 96D5 51CB 5201 - 6389 540A 9493 8C03 8DCC 7239 789F 8776 - 8FED 8C0D 53E0 -End of Item 02F2 - -Begin of Item 02F3 - Format 1 - srcBegin = B65E - srcEnd = B6FE - mappingOffset = 179B - Mapping = - 79B4 79B5 79B6 79B7 79B8 79BC 79BF 79C2 - 79C4 79C5 79C7 79C8 79CA 79CC 79CE 79CF - 79D0 79D3 79D4 79D6 79D7 FFFD FFFD FFFD - FFFD FFFD FFFD 79E0 79E1 79E2 79E5 79E8 - 79EA FFFD 79EC 79EE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 79F9 79FA 79FC 79FE 79FF - 7A01 7A04 7A05 7A07 7A08 7A09 7A0A 7A0C - 7A0F 7A10 7A11 7A12 7A13 7A15 7A16 7A18 - 7A19 7A1B 7A1C 4E01 76EF 53EE 9489 9876 - 9F0E 952D 5B9A 8BA2 4E22 4E1C 51AC 8463 - 61C2 52A8 680B 4F97 606B 51BB 6D1E 515C - 6296 6597 9661 8C46 9017 75D8 90FD 7763 - 6BD2 728A 72EC 8BFB 5835 7779 8D4C 675C - 9540 809A 5EA6 6E21 5992 7AEF 77ED 953B - 6BB5 65AD 7F0E 5806 5151 961F 5BF9 58A9 - 5428 8E72 6566 987F 56E4 949D 76FE 9041 - 6387 54C6 591A 593A 579B 8EB2 6735 8DFA - 8235 5241 60F0 5815 86FE 5CE8 9E45 4FC4 - 989D 8BB9 5A25 6076 5384 627C 904F 9102 - 997F 6069 800C 513F 8033 5C14 9975 6D31 - 4E8C -End of Item 02F3 - -Begin of Item 02F4 - Format 1 - srcBegin = B740 - srcEnd = B743 - mappingOffset = 183C - Mapping = - 7A1D 7A1F 7A21 7A22 -End of Item 02F4 - -Begin of Item 02F5 - Format 1 - srcBegin = B753 - srcEnd = B758 - mappingOffset = 1840 - Mapping = - 7A34 7A35 7A36 7A38 7A3A 7A3E -End of Item 02F5 - -Begin of Item 02F6 - Format 1 - srcBegin = B769 - srcEnd = B76D - mappingOffset = 1846 - Mapping = - 7A52 7A53 7A54 7A55 7A56 -End of Item 02F6 - -Begin of Item 02F7 - Format 1 - srcBegin = B787 - srcEnd = B7FE - mappingOffset = 184B - Mapping = - 7A71 7A72 7A73 7A75 7A7B 7A7C 7A7D 7A7E - 7A82 7A85 7A87 7A89 7A8A 7A8B 7A8C 7A8E - 7A8F 7A90 7A93 7A94 7A99 7A9A 7A9B 7A9E - 7AA1 7AA2 8D30 53D1 7F5A 7B4F 4F10 4E4F - 9600 6CD5 73D0 85E9 5E06 756A 7FFB 6A0A - 77FE 9492 7E41 51E1 70E6 53CD 8FD4 8303 - 8D29 72AF 996D 6CDB 574A 82B3 65B9 80AA - 623F 9632 59A8 4EFF 8BBF 7EBA 653E 83F2 - 975E 5561 98DE 80A5 532A 8BFD 5420 80BA - 5E9F 6CB8 8D39 82AC 915A 5429 6C1B 5206 - 7EB7 575F 711A 6C7E 7C89 594B 4EFD 5FFF - 6124 7CAA 4E30 5C01 67AB 8702 5CF0 950B - 98CE 75AF 70FD 9022 51AF 7F1D 8BBD 5949 - 51E4 4F5B 5426 592B 6577 80A4 5B75 6276 - 62C2 8F90 5E45 6C1F 7B26 4F0F 4FD8 670D -End of Item 02F7 - -Begin of Item 02F8 - Format 1 - srcBegin = B840 - srcEnd = B84A - mappingOffset = 18C3 - Mapping = - 7AA3 7AA4 7AA7 7AA9 7AAA 7AAB 7AAE 7AAF - 7AB0 7AB1 7AB2 -End of Item 02F8 - -Begin of Item 02F9 - Format 1 - srcBegin = B86B - srcEnd = B8FE - mappingOffset = 18CE - Mapping = - 7AD7 7AD8 7ADA 7ADB 7ADC 7ADD 7AE1 7AE2 - 7AE4 FFFD FFFD FFFD FFFD FFFD FFFD 7AEE - 7AF0 7AF1 7AF2 7AF3 FFFD 7AF4 7AF5 7AF6 - 7AF7 7AF8 7AFB 7AFC 7AFE 7B00 7B01 7B02 - 7B05 7B07 7B09 7B0C 7B0D 7B0E 7B10 7B12 - 7B13 7B16 7B17 7B18 7B1A 7B1C 7B1D 7B1F - 7B21 7B22 7B23 7B27 7B29 7B2D 6D6E 6DAA - 798F 88B1 5F17 752B 629A 8F85 4FEF 91DC - 65A7 812F 8151 5E9C 8150 8D74 526F 8986 - 8D4B 590D 5085 4ED8 961C 7236 8179 8D1F - 5BCC 8BA3 9644 5987 7F1A 5490 5676 560E - 8BE5 6539 6982 9499 76D6 6E89 5E72 7518 - 6746 67D1 7AFF 809D 8D76 611F 79C6 6562 - 8D63 5188 521A 94A2 7F38 809B 7EB2 5C97 - 6E2F 6760 7BD9 768B 9AD8 818F 7F94 7CD5 - 641E 9550 7A3F 544A 54E5 6B4C 6401 6208 - 9E3D 80F3 7599 5272 9769 845B 683C 86E4 - 9601 9694 94EC 4E2A 5404 7ED9 6839 8DDF - 8015 66F4 5E9A 7FB9 -End of Item 02F9 - -Begin of Item 02FA - Format 1 - srcBegin = B940 - srcEnd = B95C - mappingOffset = 1962 - Mapping = - 7B2F 7B30 7B32 7B34 7B35 7B36 7B37 7B39 - 7B3B 7B3D FFFD FFFD FFFD FFFD FFFD FFFD - 7B46 7B48 7B4A 7B4D 7B4E 7B53 7B55 7B57 - 7B59 7B5C 7B5E 7B5F 7B61 -End of Item 02FA - -Begin of Item 02FB - Format 1 - srcBegin = B968 - srcEnd = B9FE - mappingOffset = 197F - Mapping = - 7B6F 7B70 7B73 7B74 7B76 7B78 7B7A 7B7C - 7B7D 7B7F 7B81 7B82 7B83 7B84 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7B8E 7B8F FFFD - 7B91 7B92 7B93 7B96 7B98 7B99 7B9A 7B9B - 7B9E 7B9F 7BA0 7BA3 7BA4 7BA5 7BAE 7BAF - 7BB0 7BB2 7BB3 7BB5 7BB6 7BB7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7BC2 7BC3 - 7BC4 57C2 803F 6897 5DE5 653B 529F 606D - 9F9A 4F9B 8EAC 516C 5BAB 5F13 5DE9 6C5E - 62F1 8D21 5171 94A9 52FE 6C9F 82DF 72D7 - 57A2 6784 8D2D 591F 8F9C 83C7 5495 7B8D - 4F30 6CBD 5B64 59D1 9F13 53E4 86CA 9AA8 - 8C37 80A1 6545 987E 56FA 96C7 522E 74DC - 5250 5BE1 6302 8902 4E56 62D0 602A 68FA - 5173 5B98 51A0 89C2 7BA1 9986 7F50 60EF - 704C 8D2F 5149 5E7F 901B 7470 89C4 572D - 7845 5F52 9F9F 95FA 8F68 9B3C 8BE1 7678 - 6842 67DC 8DEA 8D35 523D 8F8A 6EDA 68CD - 9505 90ED 56FD 679C 88F9 8FC7 54C8 -End of Item 02FB - -Begin of Item 02FC - Format 1 - srcBegin = BA40 - srcEnd = BA8C - mappingOffset = 1A16 - Mapping = - 7BC5 7BC8 7BC9 7BCA 7BCB 7BCD 7BCE 7BCF - 7BD0 7BD2 7BD4 7BD5 7BD6 7BD7 7BD8 7BDB - 7BDC 7BDE 7BDF 7BE0 7BE2 7BE3 7BE4 7BE7 - 7BE8 7BE9 7BEB 7BEC 7BED 7BEF 7BF0 7BF2 - 7BF3 7BF4 7BF5 7BF6 7BF8 7BF9 7BFA 7BFB - 7BFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7C08 7C09 7C0A 7C0D 7C0E FFFD FFFD - FFFD FFFD FFFD FFFD 7C17 7C18 7C19 FFFD - 7C1A 7C1B 7C1C 7C1D 7C1E FFFD FFFD FFFD - FFFD FFFD FFFD 7C28 7C29 -End of Item 02FC - -Begin of Item 02FD - Format 1 - srcBegin = BAA0 - srcEnd = BAFE - mappingOffset = 1A63 - Mapping = - 7C42 9AB8 5B69 6D77 6C26 4EA5 5BB3 9A87 - 9163 61A8 90AF 97E9 542B 6DB5 5BD2 51FD - 558A 7F55 7FF0 64BC 634D 65F1 61BE 608D - 710A 6C57 6C49 592F 676D 822A 58D5 568E - 8C6A 6BEB 90DD 597D 8017 53F7 6D69 5475 - 559D 8377 83CF 6838 79BE 548C 4F55 5408 - 76D2 8C89 9602 6CB3 6DB8 8D6B 8910 9E64 - 8D3A 563F 9ED1 75D5 5F88 72E0 6068 54FC - 4EA8 6A2A 8861 6052 8F70 54C4 70D8 8679 - 9E3F 6D2A 5B8F 5F18 7EA2 5589 4FAF 7334 - 543C 539A 5019 540E 547C 4E4E 5FFD 745A - 58F6 846B 80E1 8774 72D0 7CCA 6E56 -End of Item 02FD - -Begin of Item 02FE - Format 1 - srcBegin = BB80 - srcEnd = BBFE - mappingOffset = 1AC2 - Mapping = - 7C88 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7C93 7C94 7C96 7C99 7C9A 7C9B 7CA0 7CA1 - 7CA3 7CA6 7CA7 7CA8 7CA9 7CAB 7CAC 7CAD - 7CAF 7CB0 7CB4 7CB5 7CB6 7CB7 7CB8 7CBA - 7CBB 5F27 864E 552C 62A4 4E92 6CAA 6237 - 82B1 54D7 534E 733E 6ED1 753B 5212 5316 - 8BDD 69D0 5F8A 6000 6DEE 574F 6B22 73AF - 6853 8FD8 7F13 6362 60A3 5524 75EA 8C62 - 7115 6DA3 5BA6 5E7B 8352 614C 9EC4 78FA - 8757 7C27 7687 51F0 60F6 714C 6643 5E4C - 604D 8C0E 7070 6325 8F89 5FBD 6062 86D4 - 56DE 6BC1 6094 6167 5349 60E0 6666 8D3F - 79FD 4F1A 70E9 6C47 8BB3 8BF2 7ED8 8364 - 660F 5A5A 9B42 6D51 6DF7 8C41 6D3B 4F19 - 706B 83B7 6216 60D1 970D 8D27 7978 51FB - 573E 57FA 673A 7578 7A3D 79EF 7B95 -End of Item 02FE - -Begin of Item 02FF - Format 1 - srcBegin = BC40 - srcEnd = BC53 - mappingOffset = 1B41 - Mapping = - 7CBF 7CC0 7CC2 7CC3 7CC4 7CC6 7CC9 7CCB - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7CD8 - 7CDA 7CDB 7CDD 7CDE -End of Item 02FF - -Begin of Item 0300 - Format 1 - srcBegin = BC69 - srcEnd = BC6A - mappingOffset = 1B55 - Mapping = - 7CF9 7CFA -End of Item 0300 - -Begin of Item 0301 - Format 1 - srcBegin = BC8F - srcEnd = BCFE - mappingOffset = 1B57 - Mapping = - 7D21 7D23 7D24 7D25 7D26 7D28 7D29 7D2A - 7D2C 7D2D 7D2E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 808C 9965 8FF9 6FC0 8BA5 9E21 - 59EC 7EE9 7F09 5409 6781 68D8 8F91 7C4D - 96C6 53CA 6025 75BE 6C72 5373 5AC9 7EA7 - 6324 51E0 810A 5DF1 84DF 6280 5180 5B63 - 4F0E 796D 5242 60B8 6D4E 5BC4 5BC2 8BA1 - 8BB0 65E2 5FCC 9645 5993 7EE7 7EAA 5609 - 67B7 5939 4F73 5BB6 52A0 835A 988A 8D3E - 7532 94BE 5047 7A3C 4EF7 67B6 9A7E 5AC1 - 6B7C 76D1 575A 5C16 7B3A 95F4 714E 517C - 80A9 8270 5978 7F04 8327 68C0 67EC 78B1 - 7877 62E3 6361 7B80 4FED 526A 51CF 8350 - 69DB 9274 8DF5 8D31 89C1 952E 7BAD 4EF6 -End of Item 0301 - -Begin of Item 0302 - Format 1 - srcBegin = BDA1 - srcEnd = BDFE - mappingOffset = 1BC7 - Mapping = - 5065 8230 5251 996F 6E10 6E85 6DA7 5EFA - 50F5 59DC 5C06 6D46 6C5F 7586 848B 6868 - 5956 8BB2 5320 9171 964D 8549 6912 7901 - 7126 80F6 4EA4 90CA 6D47 9A84 5A07 56BC - 6405 94F0 77EB 4FA5 811A 72E1 89D2 997A - 7F34 7EDE 527F 6559 9175 8F7F 8F83 53EB - 7A96 63ED 63A5 7686 79F8 8857 9636 622A - 52AB 8282 6854 6770 6377 776B 7AED 6D01 - 7ED3 89E3 59D0 6212 85C9 82A5 754C 501F - 4ECB 75A5 8BEB 5C4A 5DFE 7B4B 65A4 91D1 - 4ECA 6D25 895F 7D27 9526 4EC5 8C28 8FDB - 9773 664B 7981 8FD1 70EC 6D78 -End of Item 0302 - -Begin of Item 0303 - Format 1 - srcBegin = BEA1 - srcEnd = BEFE - mappingOffset = 1C25 - Mapping = - 5C3D 52B2 8346 5162 830E 775B 6676 9CB8 - 4EAC 60CA 7CBE 7CB3 7ECF 4E95 8B66 666F - 9888 9759 5883 656C 955C 5F84 75C9 9756 - 7ADF 7ADE 51C0 70AF 7A98 63EA 7A76 7EA0 - 7396 97ED 4E45 7078 4E5D 9152 53A9 6551 - 65E7 81FC 8205 548E 5C31 759A 97A0 62D8 - 72D9 75BD 5C45 9A79 83CA 5C40 5480 77E9 - 4E3E 6CAE 805A 62D2 636E 5DE8 5177 8DDD - 8E1E 952F 4FF1 53E5 60E7 70AC 5267 6350 - 9E43 5A1F 5026 7737 5377 7EE2 6485 652B - 6289 6398 5014 7235 89C9 51B3 8BC0 7EDD - 5747 83CC 94A7 519B 541B 5CFB -End of Item 0303 - -Begin of Item 0304 - Format 1 - srcBegin = BF80 - srcEnd = BF8A - mappingOffset = 1C83 - Mapping = - 7E3A 7E3C 7E3D 7E3E 7E3F 7E40 7E42 7E43 - 7E44 7E45 7E46 -End of Item 0304 - -Begin of Item 0305 - Format 1 - srcBegin = BFA1 - srcEnd = BFFE - mappingOffset = 1C8E - Mapping = - 4FCA 7AE3 6D5A 90E1 9A8F 5580 5496 5361 - 54AF 5F00 63E9 6977 51EF 6168 520A 582A - 52D8 574E 780D 770B 5EB7 6177 7CE0 625B - 6297 4EA2 7095 8003 62F7 70E4 9760 5777 - 82DB 67EF 68F5 78D5 9897 79D1 58F3 54B3 - 53EF 6E34 514B 523B 5BA2 8BFE 80AF 5543 - 57A6 6073 5751 542D 7A7A 6050 5B54 63A7 - 62A0 53E3 6263 5BC7 67AF 54ED 7A9F 82E6 - 9177 5E93 88E4 5938 57AE 630E 8DE8 80EF - 5757 7B77 4FA9 5FEB 5BBD 6B3E 5321 7B50 - 72C2 6846 77FF 7736 65F7 51B5 4E8F 76D4 - 5CBF 7AA5 8475 594E 9B41 5080 -End of Item 0305 - -Begin of Item 0306 - Format 1 - srcBegin = C07C - srcEnd = C0FE - mappingOffset = 1CEC - Mapping = - 7E9C 7E9D 7E9E FFFD 7EAE 7EB4 7EBB 7EBC - 7ED6 7EE4 7EEC 7EF9 7F0A 7F10 7F1E 7F37 - 7F39 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7F43 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7F52 7F53 9988 6127 6E83 - 5764 6606 6346 56F0 62EC 6269 5ED3 9614 - 5783 62C9 5587 8721 814A 8FA3 5566 83B1 - 6765 8D56 84DD 5A6A 680F 62E6 7BEE 9611 - 5170 6F9C 8C30 63FD 89C8 61D2 7F06 70C2 - 6EE5 7405 6994 72FC 5ECA 90CE 6717 6D6A - 635E 52B3 7262 8001 4F6C 59E5 916A 70D9 - 6D9D 52D2 4E50 96F7 956D 857E 78CA 7D2F - 5121 5792 64C2 808B 7C7B 6CEA 68F1 695E - 51B7 5398 68A8 7281 9ECE 7BF1 72F8 79BB - 6F13 7406 674E 91CC 9CA4 793C 8389 8354 - 540F 6817 4E3D 5389 52B1 783E 5386 5229 - 5088 4F8B 4FD0 -End of Item 0306 - -Begin of Item 0307 - Format 1 - srcBegin = C140 - srcEnd = C1FE - mappingOffset = 1D6F - Mapping = - 7F56 7F59 7F5B 7F5C 7F5D 7F5E 7F60 7F63 - 7F64 7F65 7F66 7F67 7F6B 7F6C 7F6D 7F6F - 7F70 7F73 7F75 7F76 7F77 7F78 7F7A 7F7B - 7F7C 7F7D 7F7F 7F80 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7F8B 7F8D 7F8F 7F90 - 7F91 7F92 7F93 7F95 7F96 7F97 7F98 7F99 - 7F9B 7F9C 7FA0 7FA2 7FA3 7FA5 7FA6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7FB1 FFFD - 7FB3 7FB4 7FB5 7FB6 7FB7 7FBA 7FBB 7FBE - 7FC0 7FC2 7FC3 7FC4 7FC6 7FC7 7FC8 7FC9 - 7FCB 7FCD 7FCF 7FD0 7FD1 7FD2 7FD3 7FD6 - 7FD7 FFFD FFFD FFFD FFFD FFFD FFFD 7FE2 - 7FE3 75E2 7ACB 7C92 6CA5 96B6 529B 7483 - 54E9 4FE9 8054 83B2 8FDE 9570 5EC9 601C - 6D9F 5E18 655B 8138 94FE 604B 70BC 7EC3 - 7CAE 51C9 6881 7CB1 826F 4E24 8F86 91CF - 667E 4EAE 8C05 64A9 804A 50DA 7597 71CE - 5BE5 8FBD 6F66 4E86 6482 9563 5ED6 6599 - 5217 88C2 70C8 52A3 730E 7433 6797 78F7 - 9716 4E34 90BB 9CDE 6DCB 51DB 8D41 541D - 62CE 73B2 83F1 96F6 9F84 94C3 4F36 7F9A - 51CC 7075 9675 5CAD 9886 53E6 4EE4 6E9C - 7409 69B4 786B 998F 7559 5218 7624 6D41 - 67F3 516D 9F99 804B 5499 7B3C 7ABF -End of Item 0307 - -Begin of Item 0308 - Format 1 - srcBegin = C240 - srcEnd = C280 - mappingOffset = 1E2E - Mapping = - 7FE4 7FE7 7FE8 7FEA 7FEB 7FEC 7FED 7FEF - 7FF2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7FFD 7FFE 7FFF 8002 8007 8008 8009 800A - 800E 800F 8011 8013 801A 801B 801D 801E - 801F 8021 8023 8024 FFFD FFFD FFFD FFFD - FFFD FFFD 8032 8034 8039 803A 803C 803E - 8040 8041 8044 8045 8047 8048 8049 804E - 804F 8050 8051 8053 8055 8056 8057 FFFD - 8059 -End of Item 0308 - -Begin of Item 0309 - Format 1 - srcBegin = C2A1 - srcEnd = C2FE - mappingOffset = 1E6F - Mapping = - 9686 5784 62E2 9647 697C 5A04 6402 7BD3 - 6F0F 964B 82A6 5362 9885 5E90 7089 63B3 - 5364 864F 9C81 9E93 788C 9732 8DEF 8D42 - 9E7F 6F5E 7984 5F55 9646 622E 9A74 5415 - 94DD 4FA3 65C5 5C65 5C61 7F15 8651 6C2F - 5F8B 7387 6EE4 7EFF 5CE6 631B 5B6A 6EE6 - 5375 4E71 63A0 7565 62A1 8F6E 4F26 4ED1 - 6CA6 7EB6 8BBA 841D 87BA 7F57 903B 9523 - 7BA9 9AA1 88F8 843D 6D1B 9A86 7EDC 5988 - 9EBB 739B 7801 8682 9A6C 9A82 561B 5417 - 57CB 4E70 9EA6 5356 8FC8 8109 7792 9992 - 86EE 6EE1 8513 66FC 6162 6F2B -End of Item 0309 - -Begin of Item 030A - Format 1 - srcBegin = C340 - srcEnd = C386 - mappingOffset = 1ECD - Mapping = - 807E 8081 8082 8085 8088 808A FFFD FFFD - FFFD FFFD FFFD FFFD 8094 8095 8097 8099 - 809E 80A3 80A6 80A7 80A8 80AC 80B0 80B3 - 80B5 80B6 80B8 80B9 80BB 80C5 80C7 80C8 - 80C9 80CA 80CB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 80D8 80DF 80E0 80E2 80E3 80E6 - 80EE 80F5 80F7 80F9 80FB 80FE 80FF 8100 - 8101 8103 8104 8105 8107 8108 810B FFFD - 810C 8115 8117 8119 811B 811C 811D -End of Item 030A - -Begin of Item 030B - Format 1 - srcBegin = C394 - srcEnd = C3FE - mappingOffset = 1F14 - Mapping = - 812D 812E 8130 8133 8134 8135 8137 8139 - 813A 813B 813C 813D 813F 8C29 8292 832B - 76F2 6C13 5FD9 83BD 732B 8305 951A 6BDB - 77DB 94C6 536F 8302 5192 5E3D 8C8C 8D38 - 4E48 73AB 679A 6885 9176 9709 7164 6CA1 - 7709 5A92 9541 6BCF 7F8E 6627 5BD0 59B9 - 5A9A 95E8 95F7 4EEC 840C 8499 6AAC 76DF - 9530 731B 68A6 5B5F 772F 919A 9761 7CDC - 8FF7 8C1C 5F25 7C73 79D8 89C5 6CCC 871C - 5BC6 5E42 68C9 7720 7EF5 5195 514D 52C9 - 5A29 7F05 9762 82D7 63CF 7784 85D0 79D2 - 6E3A 5E99 5999 8511 706D 6C11 62BF 76BF - 654F 60AF 95FD 660E 879F 9E23 94ED 540D - 547D 8C2C 6478 -End of Item 030B - -Begin of Item 030C - Format 1 - srcBegin = C446 - srcEnd = C481 - mappingOffset = 1F7F - Mapping = - 8147 8149 814D 814E 814F 8152 8156 8157 - 8158 815B 815C 815D 815E 815F 8161 8162 - 8163 8164 8166 8168 816A 816B 816C 816F - 8172 8173 8175 8176 8177 8178 8181 8183 - 8184 8185 8186 8187 8189 818B 818C 818D - 818E 8190 FFFD FFFD FFFD FFFD FFFD FFFD - 8199 819A 819E 819F 81A0 81A1 81A2 81A4 - 81A5 FFFD 81A7 81A9 -End of Item 030C - -Begin of Item 030D - Format 1 - srcBegin = C490 - srcEnd = C4FE - mappingOffset = 1FBB - Mapping = - 81BC 81BD 81BE 81BF 81C4 81C5 81C7 81C8 - 81C9 81CB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6479 8611 6A21 819C 78E8 6469 9B54 - 62B9 672B 83AB 58A8 9ED8 6CAB 6F20 5BDE - 964C 8C0B 725F 67D0 62C7 7261 4EA9 59C6 - 6BCD 5893 66AE 5E55 52DF 6155 6728 76EE - 7766 7267 7A46 62FF 54EA 5450 94A0 90A3 - 5A1C 7EB3 6C16 4E43 5976 8010 5948 5357 - 7537 96BE 56CA 6320 8111 607C 95F9 6DD6 - 5462 9981 5185 5AE9 80FD 59AE 9713 502A - 6CE5 5C3C 62DF 4F60 533F 817B 9006 6EBA - 852B 62C8 5E74 78BE 64B5 637B 5FF5 5A18 - 917F 9E1F 5C3F 634F 8042 5B7D 556E 954A - 954D 6D85 60A8 67E0 72DE 51DD 5B81 -End of Item 030D - -Begin of Item 030E - Format 1 - srcBegin = C54F - srcEnd = C5FE - mappingOffset = 202A - Mapping = - 81E4 81E5 81E6 81E8 81E9 81EB 81EE 81EF - 81F0 81F1 81F2 FFFD FFFD FFFD FFFD FFFD - FFFD 81FD 81FF 8203 8207 8208 8209 820A - 820B 820E 820F 8211 8213 FFFD FFFD FFFD - FFFD FFFD FFFD 821D 8220 8224 8225 8226 - 8227 8229 822E 8232 823A 823C 823D 823F - FFFD 8240 8241 8242 8243 8245 8246 8248 - 824A 824C 824D 824E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8259 825B 825C 825D - 825E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8269 62E7 6CDE 725B 626D 94AE 7EBD - 8113 6D53 519C 5F04 5974 52AA 6012 5973 - 6696 8650 759F 632A 61E6 7CEF 8BFA 54E6 - 6B27 9E25 6BB4 85D5 5455 5076 6CA4 556A - 8DB4 722C 5E15 6015 7436 62CD 6392 724C - 5F98 6E43 6D3E 6500 6F58 76D8 78D0 76FC - 7554 5224 53DB 4E53 5E9E 65C1 802A 80D6 - 629B 5486 5228 70AE 888D 8DD1 6CE1 5478 - 80DA 57F9 88F4 8D54 966A 914D 4F69 6C9B - 55B7 76C6 7830 62A8 70F9 6F8E 5F6D 84EC - 68DA 787C 7BF7 81A8 670B 9E4F 6367 78B0 - 576F 7812 9739 6279 62AB 5288 7435 6BD7 -End of Item 030E - -Begin of Item 030F - Format 1 - srcBegin = C640 - srcEnd = C6FE - mappingOffset = 20DA - Mapping = - 826A 826B 826C 826D 8271 8275 8276 8277 - 8278 827B 827C 8280 8281 8283 8285 8286 - 8287 8289 828C 8290 8293 8294 8295 8296 - 829A 829B 829E 82A0 82A2 82A3 82A7 82B2 - 82B5 82B6 82BA 82BB 82BC 82BF 82C0 82C2 - 82C3 82C5 82C6 82C9 82D0 82D6 82D9 82DA - 82DD 82E2 82E7 82E8 82E9 82EA 82EC 82ED - 82EE 82F0 82F2 82F3 82F5 82F6 82F8 FFFD - 82FA 82FC 82FD 82FE 82FF 8300 830A 830B - 830D 8310 8312 8313 8316 8318 8319 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8329 832A 832E 8330 8332 8337 833B - 833D 5564 813E 75B2 76AE 5339 75DE 50FB - 5C41 8B6C 7BC7 504F 7247 9A97 98D8 6F02 - 74E2 7968 6487 77A5 62FC 9891 8D2B 54C1 - 8058 4E52 576A 82F9 840D 5E73 51ED 74F6 - 8BC4 5C4F 5761 6CFC 9887 5A46 7834 9B44 - 8FEB 7C95 5256 6251 94FA 4EC6 8386 8461 - 83E9 84B2 57D4 6734 5703 666E 6D66 8C31 - 66DD 7011 671F 6B3A 6816 621A 59BB 4E03 - 51C4 6F06 67D2 6C8F 5176 68CB 5947 6B67 - 7566 5D0E 8110 9F50 65D7 7948 7941 9A91 - 8D77 5C82 4E5E 4F01 542F 5951 780C 5668 - 6C14 8FC4 5F03 6C7D 6CE3 8BAB 6390 -End of Item 030F - -Begin of Item 0310 - Format 1 - srcBegin = C740 - srcEnd = C7FE - mappingOffset = 2199 - Mapping = - 833E 833F 8341 8342 8344 8345 8348 834A - 834B 834C 834D 834E 8353 8355 8356 8357 - 8358 8359 835D 8362 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8379 837A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8387 8388 838A 838B - 838C 838D 838F 8390 8391 8394 8395 8396 - 8397 8399 839A 839D 839F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 83AC 83AD 83AE FFFD - 83AF 83B5 83BB 83BE 83BF 83C2 83C3 83C4 - 83C6 83C8 83C9 83CB 83CD 83CE 83D0 83D1 - 83D2 83D3 83D5 83D7 83D9 83DA 83DB 83DE - 83E2 83E3 83E4 83E6 83E7 83E8 83EB 83EC - 83ED 6070 6D3D 7275 6266 948E 94C5 5343 - 8FC1 7B7E 4EDF 8C26 4E7E 9ED4 94B1 94B3 - 524D 6F5C 9063 6D45 8C34 5811 5D4C 6B20 - 6B49 67AA 545B 8154 7F8C 5899 8537 5F3A - 62A2 6A47 9539 6572 6084 6865 77A7 4E54 - 4FA8 5DE7 9798 64AC 7FD8 5CED 4FCF 7A8D - 5207 8304 4E14 602F 7A83 94A6 4FB5 4EB2 - 79E6 7434 52E4 82B9 64D2 79BD 5BDD 6C81 - 9752 8F7B 6C22 503E 537F 6E05 64CE 6674 - 6C30 60C5 9877 8BF7 5E86 743C 7A77 79CB - 4E18 90B1 7403 6C42 56DA 914B 6CC5 8D8B - 533A 86C6 66F2 8EAF 5C48 9A71 6E20 -End of Item 0310 - -Begin of Item 0311 - Format 1 - srcBegin = C840 - srcEnd = C85C - mappingOffset = 2258 - Mapping = - 83EE 83EF 83F3 83F4 83F5 83F6 83F7 83FA - 83FB 83FC 83FE 83FF 8400 8402 8405 8407 - 8408 8409 840A 8410 FFFD FFFD FFFD FFFD - FFFD FFFD 8419 841A 841B -End of Item 0311 - -Begin of Item 0312 - Format 1 - srcBegin = C871 - srcEnd = C8FE - mappingOffset = 2275 - Mapping = - 8439 843A 843B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8447 8448 8449 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8452 8453 - 8454 8455 8456 8458 845D 845E 845F 8460 - 8462 8464 8465 8466 8467 8468 846A 846E - 846F 8470 8472 8474 8477 8479 847B 847C - 53D6 5A36 9F8B 8DA3 53BB 5708 98A7 6743 - 919B 6CC9 5168 75CA 62F3 72AC 5238 529D - 7F3A 7094 7638 5374 9E4A 69B7 786E 96C0 - 88D9 7FA4 7136 71C3 5189 67D3 74E4 58E4 - 6518 56B7 8BA9 9976 6270 7ED5 60F9 70ED - 58EC 4EC1 4EBA 5FCD 97E7 4EFB 8BA4 5203 - 598A 7EAB 6254 4ECD 65E5 620E 8338 84C9 - 8363 878D 7194 6EB6 5BB9 7ED2 5197 63C9 - 67D4 8089 8339 8815 5112 5B7A 5982 8FB1 - 4E73 6C5D 5165 8925 8F6F 962E 854A 745E - 9510 95F0 6DA6 82E5 5F31 6492 6D12 8428 - 816E 9CC3 585E 8D5B 4E09 53C1 -End of Item 0312 - -Begin of Item 0313 - Format 1 - srcBegin = C940 - srcEnd = C959 - mappingOffset = 2303 - Mapping = - 847D 847E 847F 8480 8481 8483 8484 8485 - 8486 848A 848D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8498 849A 849B 849D 849E - 849F 84A0 -End of Item 0313 - -Begin of Item 0314 - Format 1 - srcBegin = C967 - srcEnd = C990 - mappingOffset = 231D - Mapping = - 84B0 84B1 84B3 84B5 84B6 84B7 84BB 84BC - 84BE 84C0 84C2 84C3 84C5 84C6 84C7 84C8 - 84CB 84CC 84CE 84CF 84D2 84D4 84D5 84D7 - FFFD 84D8 84D9 84DA 84DB 84DC 84DE 84E1 - 84E2 84E4 84E7 84E8 84E9 84EA 84EB 84ED - 84EE 84EF -End of Item 0314 - -Begin of Item 0315 - Format 1 - srcBegin = C99C - srcEnd = C9FE - mappingOffset = 2347 - Mapping = - 84FD 84FE 8500 8501 8502 4F1E 6563 6851 - 55D3 4E27 6414 9A9A 626B 5AC2 745F 8272 - 6DA9 68EE 50E7 838E 7802 6740 5239 6C99 - 7EB1 50BB 5565 715E 7B5B 6652 73CA 82EB - 6749 5C71 5220 717D 886B 95EA 9655 64C5 - 8D61 81B3 5584 6C55 6247 7F2E 5892 4F24 - 5546 8D4F 664C 4E0A 5C1A 88F3 68A2 634E - 7A0D 70E7 828D 52FA 97F6 5C11 54E8 90B5 - 7ECD 5962 8D4A 86C7 820C 820D 8D66 6444 - 5C04 6151 6D89 793E 8BBE 7837 7533 547B - 4F38 8EAB 6DF1 5A20 7EC5 795E 6C88 5BA1 - 5A76 751A 80BE 614E 6E17 58F0 751F 7525 - 7272 5347 7EF3 -End of Item 0315 - -Begin of Item 0316 - Format 1 - srcBegin = CA49 - srcEnd = CA57 - mappingOffset = 23AA - Mapping = - 850D 850E 850F 8510 8512 8514 8515 8516 - 8518 8519 851B 851C 851D 851E 8520 -End of Item 0316 - -Begin of Item 0317 - Format 1 - srcBegin = CA6B - srcEnd = CA73 - mappingOffset = 23B9 - Mapping = - 853E 853F 8540 8541 8542 8544 8545 8546 - 8547 -End of Item 0317 - -Begin of Item 0318 - Format 1 - srcBegin = CA80 - srcEnd = CAFE - mappingOffset = 23C2 - Mapping = - 8557 8558 855A 855B 855C 855D 855F 8560 - 8561 8562 8563 8565 8566 8567 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8573 - 8575 8576 8577 8578 857C 857D 857F 8580 - 8581 7701 76DB 5269 80DC 5723 5E08 5931 - 72EE 65BD 6E7F 8BD7 5C38 8671 5341 77F3 - 62FE 65F6 4EC0 98DF 8680 5B9E 8BC6 53F2 - 77E2 4F7F 5C4E 9A76 59CB 5F0F 793A 58EB - 4E16 67FF 4E8B 62ED 8A93 901D 52BF 662F - 55DC 566C 9002 4ED5 4F8D 91CA 9970 6C0F - 5E02 6043 5BA4 89C6 8BD5 6536 624B 9996 - 5B88 5BFF 6388 552E 53D7 7626 517D 852C - 67A2 68B3 6B8A 6292 8F93 53D4 8212 6DD1 - 758F 4E66 8D4E 5B70 719F 85AF 6691 66D9 - 7F72 8700 9ECD 9F20 5C5E 672F 8FF0 6811 - 675F 620D 7AD6 5885 5EB6 6570 6F31 -End of Item 0318 - -Begin of Item 0319 - Format 1 - srcBegin = CB40 - srcEnd = CB42 - mappingOffset = 2441 - Mapping = - 8582 8583 8586 -End of Item 0319 - -Begin of Item 031A - Format 1 - srcBegin = CB5C - srcEnd = CB69 - mappingOffset = 2444 - Mapping = - 85A5 85A6 85A7 85A9 85AB 85AC 85AD FFFD - FFFD FFFD FFFD FFFD FFFD 85B8 -End of Item 031A - -Begin of Item 031B - Format 1 - srcBegin = CB78 - srcEnd = CB80 - mappingOffset = 2452 - Mapping = - 85CA 85CB 85CC 85CD 85CE 85D1 85D2 FFFD - 85D4 -End of Item 031B - -Begin of Item 031C - Format 1 - srcBegin = CB8E - srcEnd = CB91 - mappingOffset = 245B - Mapping = - 85E5 85E6 85E7 85E8 -End of Item 031C - -Begin of Item 031D - Format 1 - srcBegin = CBA1 - srcEnd = CBFE - mappingOffset = 245F - Mapping = - 6055 5237 800D 6454 8870 7529 5E05 6813 - 62F4 971C 53CC 723D 8C01 6C34 7761 7A0E - 542E 77AC 987A 821C 8BF4 7855 6714 70C1 - 65AF 6495 5636 601D 79C1 53F8 4E1D 6B7B - 8086 5BFA 55E3 56DB 4F3A 4F3C 9972 5DF3 - 677E 8038 6002 9882 9001 5B8B 8BBC 8BF5 - 641C 8258 64DE 55FD 82CF 9165 4FD7 7D20 - 901F 7C9F 50F3 5851 6EAF 5BBF 8BC9 8083 - 9178 849C 7B97 867D 968B 968F 7EE5 9AD3 - 788E 5C81 7A57 9042 96A7 795F 5B59 635F - 7B0B 84D1 68AD 5506 7F29 7410 7D22 9501 - 6240 584C 4ED6 5B83 5979 5854 -End of Item 031D - -Begin of Item 031E - Format 1 - srcBegin = CC40 - srcEnd = CC49 - mappingOffset = 24BD - Mapping = - 85F9 85FA 85FC 85FD 85FE 8600 8601 8602 - 8603 8604 -End of Item 031E - -Begin of Item 031F - Format 1 - srcBegin = CC55 - srcEnd = CC58 - mappingOffset = 24C7 - Mapping = - 8612 8613 8614 8615 -End of Item 031F - -Begin of Item 0320 - Format 2 - srcBegin = CC69 - destBegin = 8628 -End of Item 0320 - -Begin of Item 0321 - Format 1 - srcBegin = CC78 - srcEnd = CC7E - mappingOffset = 24CB - Mapping = - 8639 863A 863B 863D 863E 863F 8640 -End of Item 0321 - -Begin of Item 0322 - Format 1 - srcBegin = CC8C - srcEnd = CCFE - mappingOffset = 24D2 - Mapping = - 8652 8653 8655 8656 8657 8658 8659 865B - 865C 865D 865F 8660 8661 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 736D 631E 8E4B - 8E0F 80CE 82D4 62AC 53F0 6CF0 915E 592A - 6001 6C70 574D 644A 8D2A 762B 6EE9 575B - 6A80 75F0 6F6D 8C2D 8C08 5766 6BEF 8892 - 78B3 63A2 53F9 70AD 6C64 5858 642A 5802 - 68E0 819B 5510 7CD6 5018 8EBA 6DCC 8D9F - 70EB 638F 6D9B 6ED4 7EE6 8404 6843 9003 - 6DD8 9676 8BA8 5957 7279 85E4 817E 75BC - 8A8A 68AF 5254 8E22 9511 63D0 9898 8E44 - 557C 4F53 66FF 568F 60D5 6D95 5243 5C49 - 5929 6DFB 586B 7530 751C 606C 8214 8146 - 6311 6761 8FE2 773A 8DF3 8D34 94C1 5E16 - 5385 542C 70C3 -End of Item 0322 - -Begin of Item 0323 - Format 1 - srcBegin = CD40 - srcEnd = CD42 - mappingOffset = 2545 - Mapping = - 866D 866F 8670 -End of Item 0323 - -Begin of Item 0324 - Format 1 - srcBegin = CD51 - srcEnd = CDFE - mappingOffset = 2548 - Mapping = - 868E 868F 8690 8691 8692 8694 FFFD FFFD - FFFD FFFD FFFD FFFD 869E 869F 86A0 86A1 - 86A2 86A5 86A6 86AB 86AD 86AE 86B2 86B3 - 86B7 86B8 86B9 86BB 86BC 86BD 86BE 86BF - 86C1 86C2 86C3 86C5 86C8 86CC 86CD 86D2 - 86D3 86D5 86D6 86D7 86DA 86DC FFFD 86DD - 86E0 86E1 86E2 86E3 86E5 86E6 86E7 86E8 - 86EA 86EB 86EC 86EF 86F5 86F6 86F7 86FA - 86FB 86FC 86FD 86FF 8701 8704 8705 8706 - 870B 870C 870E 870F 8710 8711 8714 8716 - 6C40 5EF7 505C 4EAD 5EAD 633A 8247 901A - 6850 916E 77B3 540C 94DC 5F64 7AE5 6876 - 6345 7B52 7EDF 75DB 5077 6295 5934 900F - 51F8 79C3 7A81 56FE 5F92 9014 6D82 5C60 - 571F 5410 5154 6E4D 56E2 63A8 9893 817F - 8715 892A 9000 541E 5C6F 81C0 62D6 6258 - 8131 9E35 9640 9A6E 9A7C 692D 59A5 62D3 - 553E 6316 54C7 86D9 6D3C 5A03 74E6 889C - 6B6A 5916 8C4C 5F2F 6E7E 73A9 987D 4E38 - 70F7 5B8C 7897 633D 665A 7696 60CB 5B9B - 5A49 4E07 8155 6C6A 738B 4EA1 6789 7F51 - 5F80 65FA 671B 5FD8 5984 5A01 -End of Item 0324 - -Begin of Item 0325 - Format 1 - srcBegin = CE40 - srcEnd = CEFE - mappingOffset = 25F6 - Mapping = - 8719 871B 871D 871F 8720 8724 8726 8727 - 8728 872A 872B 872C 872D 872F 8730 8732 - 8733 8735 8736 8738 8739 873A 873C 873D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 874A - 874B 874D 874F 8750 8751 8752 8754 8755 - 8756 8758 FFFD FFFD FFFD FFFD FFFD FFFD - 8761 8762 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 876F 8771 8772 8773 8775 FFFD - 8777 8778 8779 877A 877F 8780 8781 8784 - 8786 8787 8789 878A 878C 878E 878F 8790 - 8791 8792 8794 8795 8796 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 87A0 87A1 87A2 87A3 - 87A4 5DCD 5FAE 5371 97E6 8FDD 6845 56F4 - 552F 60DF 4E3A 6F4D 7EF4 82C7 840E 59D4 - 4F1F 4F2A 5C3E 7EAC 672A 851A 5473 754F - 80C3 5582 9B4F 4F4D 6E2D 8C13 5C09 6170 - 536B 761F 6E29 868A 6587 95FB 7EB9 543B - 7A33 7D0A 95EE 55E1 7FC1 74EE 631D 8717 - 6DA1 7A9D 6211 65A1 5367 63E1 6C83 5DEB - 545C 94A8 4E4C 6C61 8BEC 5C4B 65E0 829C - 68A7 543E 5434 6BCB 6B66 4E94 6342 5348 - 821E 4F0D 4FAE 575E 620A 96FE 6664 7269 - 52FF 52A1 609F 8BEF 6614 7199 6790 897F - 7852 77FD 6670 563B 5438 9521 727A -End of Item 0325 - -Begin of Item 0326 - Format 1 - srcBegin = CF40 - srcEnd = CF74 - mappingOffset = 26B5 - Mapping = - 87A5 87A6 87A7 87A9 87AA 87AE 87B0 87B1 - 87B2 87B4 87B6 87B7 87B8 87B9 87BB 87BC - 87BE 87BF 87C1 87C2 87C3 87C4 87C5 87C7 - 87C8 87C9 87CC 87CD 87CE 87CF 87D0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 87DC 87DD - 87DE 87DF 87E1 87E2 87E3 87E4 87E6 87E7 - 87E8 87E9 87EB 87EC 87ED -End of Item 0326 - -Begin of Item 0327 - Format 1 - srcBegin = CF80 - srcEnd = CF87 - mappingOffset = 26EA - Mapping = - 87FA 87FB 87FC 87FD 87FF 8800 8801 8802 -End of Item 0327 - -Begin of Item 0328 - Format 1 - srcBegin = CF96 - srcEnd = CFFE - mappingOffset = 26F2 - Mapping = - 8814 8817 8818 8819 881A 881C 881D 881E - 881F 8820 8823 7A00 606F 5E0C 6089 819D - 5915 60DC 7184 70EF 6EAA 6C50 7280 6A84 - 88AD 5E2D 4E60 5AB3 559C 94E3 6D17 7CFB - 9699 620F 7EC6 778E 867E 5323 971E 8F96 - 6687 5CE1 4FA0 72ED 4E0B 53A6 590F 5413 - 6380 9528 5148 4ED9 9C9C 7EA4 54B8 8D24 - 8854 8237 95F2 6D8E 5F26 5ACC 663E 9669 - 73B0 732E 53BF 817A 9985 7FA1 5BAA 9677 - 9650 7EBF 76F8 53A2 9576 9999 7BB1 8944 - 6E58 4E61 7FD4 7965 8BE6 60F3 54CD 4EAB - 9879 5DF7 6A61 50CF 5411 8C61 8427 785D - 9704 524A 54EE 56A3 9500 6D88 5BB5 6DC6 - 6653 -End of Item 0328 - -Begin of Item 0329 - Format 1 - srcBegin = D054 - srcEnd = D05B - mappingOffset = 275B - Mapping = - 883A 883B 883D 883E 883F 8841 8842 8843 -End of Item 0329 - -Begin of Item 032A - Format 1 - srcBegin = D068 - srcEnd = D0FE - mappingOffset = 2763 - Mapping = - 8855 8856 8858 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8866 8867 886A 886D 886F 8871 - 8873 8874 8875 8876 8878 8879 887A FFFD - 887B 887C 8880 8883 8886 8887 8889 888A - 888C 888E 888F 8890 8891 8893 8894 8895 - 8897 8898 8899 889A 889B 889D 889E 889F - 88A0 88A1 88A3 FFFD FFFD FFFD FFFD FFFD - FFFD 5C0F 5B5D 6821 8096 5578 7B11 6548 - 6954 4E9B 6B47 874E 978B 534F 631F 643A - 90AA 659C 80C1 8C10 5199 68B0 5378 87F9 - 61C8 6CC4 6CFB 8C22 5C51 85AA 82AF 950C - 6B23 8F9B 65B0 5FFB 5FC3 4FE1 8845 661F - 8165 7329 60FA 5174 5211 578B 5F62 90A2 - 884C 9192 5E78 674F 6027 59D3 5144 51F6 - 80F8 5308 6C79 96C4 718A 4F11 4FEE 7F9E - 673D 55C5 9508 79C0 8896 7EE3 589F 620C - 9700 865A 5618 987B 5F90 8BB8 84C4 9157 - 53D9 65ED 5E8F 755C 6064 7D6E 5A7F 7EEA - 7EED 8F69 55A7 5BA3 60AC 65CB 7384 -End of Item 032A - -Begin of Item 032B - Format 1 - srcBegin = D140 - srcEnd = D1FE - mappingOffset = 27FA - Mapping = - 88AC 88AE 88AF 88B0 88B2 88B3 88B4 88B5 - 88B6 88B8 88B9 88BA 88BB 88BD 88BE 88BF - 88C0 88C3 88C4 88C7 88C8 88CA 88CB 88CC - 88CD 88CF 88D0 88D1 88D3 88D6 88D7 88DA - 88DB 88DC 88DD 88DE 88E0 88E1 88E6 88E7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 88F2 - 88F5 88F6 88F7 88FA 88FB 88FD 88FF 8900 - 8901 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8909 890B 890C 890D 890E 890F 8911 8914 - 8915 8916 8917 8918 891C 891D 891E 891F - 8920 8922 8923 8924 8926 8927 8928 8929 - 892C 892D 892E 892F 8931 8932 8933 8935 - 8937 9009 7663 7729 7EDA 9774 859B 5B66 - 7A74 96EA 8840 52CB 718F 5FAA 65EC 8BE2 - 5BFB 9A6F 5DE1 6B89 6C5B 8BAD 8BAF 900A - 8FC5 538B 62BC 9E26 9E2D 5440 4E2B 82BD - 7259 869C 5D16 8859 6DAF 96C5 54D1 4E9A - 8BB6 7109 54BD 9609 70DF 6DF9 76D0 4E25 - 7814 8712 5CA9 5EF6 8A00 989C 960E 708E - 6CBF 5944 63A9 773C 884D 6F14 8273 5830 - 71D5 538C 781A 96C1 5501 5F66 7130 5BB4 - 8C1A 9A8C 6B83 592E 9E2F 79E7 6768 626C - 4F6F 75A1 7F8A 6D0B 9633 6C27 4EF0 75D2 - 517B 6837 6F3E 9080 8170 5996 7476 -End of Item 032B - -Begin of Item 032C - Format 1 - srcBegin = D249 - srcEnd = D24A - mappingOffset = 28B9 - Mapping = - 8942 8943 -End of Item 032C - -Begin of Item 032D - Format 1 - srcBegin = D27E - srcEnd = D285 - mappingOffset = 28BB - Mapping = - 897C FFFD 897D 897E 8980 8982 8984 8985 -End of Item 032D - -Begin of Item 032E - Format 1 - srcBegin = D2A1 - srcEnd = D2FE - mappingOffset = 28C3 - Mapping = - 6447 5C27 9065 7A91 8C23 59DA 54AC 8200 - 836F 8981 8000 6930 564E 8036 7237 91CE - 51B6 4E5F 9875 6396 4E1A 53F6 66F3 814B - 591C 6DB2 4E00 58F9 533B 63D6 94F1 4F9D - 4F0A 8863 9890 5937 9057 79FB 4EEA 80F0 - 7591 6C82 5B9C 59E8 5F5D 6905 8681 501A - 5DF2 4E59 77E3 4EE5 827A 6291 6613 9091 - 5C79 4EBF 5F79 81C6 9038 8084 75AB 4EA6 - 88D4 610F 6BC5 5FC6 4E49 76CA 6EA2 8BE3 - 8BAE 8C0A 8BD1 5F02 7FFC 7FCC 7ECE 8335 - 836B 56E0 6BB7 97F3 9634 59FB 541F 94F6 - 6DEB 5BC5 996E 5C39 5F15 9690 -End of Item 032E - -Begin of Item 032F - Format 1 - srcBegin = D35F - srcEnd = D384 - mappingOffset = 2921 - Mapping = - 89C3 89CD 89D3 89D4 89D5 89D7 89D8 89D9 - 89DB 89DD 89DF 89E0 89E1 89E2 89E4 89E7 - 89E8 89E9 89EA 89EC 89ED 89EE 89F0 89F1 - 89F2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 89FB 89FC 89FD 89FE 89FF -End of Item 032F - -Begin of Item 0330 - Format 1 - srcBegin = D3A1 - srcEnd = D3FE - mappingOffset = 2947 - Mapping = - 5370 82F1 6A31 5A74 9E70 5E94 7F28 83B9 - 8424 8425 8367 8747 8FCE 8D62 76C8 5F71 - 9896 786C 6620 54DF 62E5 4F63 81C3 75C8 - 5EB8 96CD 8E0A 86F9 548F 6CF3 6D8C 6C38 - 607F 52C7 7528 5E7D 4F18 60A0 5FE7 5C24 - 7531 90AE 94C0 72B9 6CB9 6E38 9149 6709 - 53CB 53F3 4F51 91C9 8BF1 53C8 5E7C 8FC2 - 6DE4 4E8E 76C2 6986 865E 611A 8206 4F59 - 4FDE 903E 9C7C 6109 6E1D 6E14 9685 4E88 - 5A31 96E8 4E0E 5C7F 79B9 5B87 8BED 7FBD - 7389 57DF 828B 90C1 5401 9047 55BB 5CEA - 5FA1 6108 6B32 72F1 80B2 8A89 -End of Item 0330 - -Begin of Item 0331 - Format 1 - srcBegin = D4A1 - srcEnd = D4FE - mappingOffset = 29A5 - Mapping = - 6D74 5BD3 88D5 9884 8C6B 9A6D 9E33 6E0A - 51A4 5143 57A3 8881 539F 63F4 8F95 56ED - 5458 5706 733F 6E90 7F18 8FDC 82D1 613F - 6028 9662 66F0 7EA6 8D8A 8DC3 94A5 5CB3 - 7CA4 6708 60A6 9605 8018 4E91 90E7 5300 - 9668 5141 8FD0 8574 915D 6655 97F5 5B55 - 531D 7838 6742 683D 54C9 707E 5BB0 8F7D - 518D 5728 54B1 6512 6682 8D5E 8D43 810F - 846C 906D 7CDF 51FF 85FB 67A3 65E9 6FA1 - 86A4 8E81 566A 9020 7682 7076 71E5 8D23 - 62E9 5219 6CFD 8D3C 600E 589E 618E 66FE - 8D60 624E 55B3 6E23 672D 8F67 -End of Item 0331 - -Begin of Item 0332 - Format 1 - srcBegin = D5A1 - srcEnd = D5FE - mappingOffset = 2A03 - Mapping = - 94E1 95F8 7728 6805 69A8 548B 4E4D 70B8 - 8BC8 6458 658B 5B85 7A84 503A 5BE8 77BB - 6BE1 8A79 7C98 6CBE 76CF 65A9 8F97 5D2D - 5C55 8638 6808 5360 6218 7AD9 6E5B 7EFD - 6A1F 7AE0 5F70 6F33 5F20 638C 6DA8 6756 - 4E08 5E10 8D26 4ED7 80C0 7634 969C 62DB - 662D 627E 6CBC 8D75 7167 7F69 5146 8087 - 53EC 906E 6298 54F2 86F0 8F99 8005 9517 - 8517 8FD9 6D59 73CD 659F 771F 7504 7827 - 81FB 8D1E 9488 4FA6 6795 75B9 8BCA 9707 - 632F 9547 9635 84B8 6323 7741 5F81 72F0 - 4E89 6014 6574 62EF 6B63 653F -End of Item 0332 - -Begin of Item 0333 - Format 1 - srcBegin = D680 - srcEnd = D681 - mappingOffset = 2A61 - Mapping = - 8B24 8B25 -End of Item 0333 - -Begin of Item 0334 - Format 1 - srcBegin = D6A1 - srcEnd = D6FE - mappingOffset = 2A63 - Mapping = - 5E27 75C7 90D1 8BC1 829D 679D 652F 5431 - 8718 77E5 80A2 8102 6C41 4E4B 7EC7 804C - 76F4 690D 6B96 6267 503C 4F84 5740 6307 - 6B62 8DBE 53EA 65E8 7EB8 5FD7 631A 63B7 - 81F3 81F4 7F6E 5E1C 5CD9 5236 667A 79E9 - 7A1A 8D28 7099 75D4 6EDE 6CBB 7A92 4E2D - 76C5 5FE0 949F 8877 7EC8 79CD 80BF 91CD - 4EF2 4F17 821F 5468 5DDE 6D32 8BCC 7CA5 - 8F74 8098 5E1A 5492 76B1 5B99 663C 9AA4 - 73E0 682A 86DB 6731 732A 8BF8 8BDB 9010 - 7AF9 70DB 716E 62C4 77A9 5631 4E3B 8457 - 67F1 52A9 86C0 8D2E 94F8 7B51 -End of Item 0334 - -Begin of Item 0335 - Format 1 - srcBegin = D760 - srcEnd = D764 - mappingOffset = 2AC1 - Mapping = - 8B67 8B68 8B69 8B6A 8B6B -End of Item 0335 - -Begin of Item 0336 - Format 1 - srcBegin = D799 - srcEnd = D7F9 - mappingOffset = 2AC6 - Mapping = - 8BAC 8BB1 8BBB 8BC7 8BD0 8BEA 8C09 8C1E - 4F4F 6CE8 795D 9A7B 6293 722A 62FD 4E13 - 7816 8F6C 64B0 8D5A 7BC6 6869 5E84 88C5 - 5986 649E 58EE 72B6 690E 9525 8FFD 8D58 - 5760 7F00 8C06 51C6 6349 62D9 5353 684C - 7422 8301 914C 5544 7740 707C 6D4A 5179 - 54A8 8D44 59FF 6ECB 6DC4 5B5C 7D2B 4ED4 - 7C7D 6ED3 5B50 81EA 6E0D 5B57 9B03 68D5 - 8E2A 5B97 7EFC 603B 7EB5 90B9 8D70 594F - 63CD 79DF 8DB3 5352 65CF 7956 8BC5 963B - 7EC4 94BB 7E82 5634 9189 6700 7F6A 5C0A - 9075 6628 5DE6 4F50 67DE 505A 4F5C 5750 - 5EA7 -End of Item 0336 - -Begin of Item 0337 - Format 1 - srcBegin = D849 - srcEnd = D85B - mappingOffset = 2B27 - Mapping = - 8C42 8C43 8C44 8C45 8C48 8C4A 8C4B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8C56 - 8C57 8C58 8C59 -End of Item 0337 - -Begin of Item 0338 - Format 1 - srcBegin = D870 - srcEnd = D88B - mappingOffset = 2B3A - Mapping = - 8C74 8C75 8C76 8C77 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8C83 8C84 8C86 8C87 FFFD - 8C88 8C8B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8C95 8C96 8C97 -End of Item 0338 - -Begin of Item 0339 - Format 1 - srcBegin = D8A1 - srcEnd = D8FE - mappingOffset = 2B56 - Mapping = - 4E8D 4E0C 5140 4E10 5EFF 5345 4E15 4E98 - 4E1E 9B32 5B6C 5669 4E28 79BA 4E3F 5315 - 4E47 592D 723B 536E 6C10 56DF 80E4 9997 - 6BD3 777E 9F17 4E36 4E9F 9F10 4E5C 4E69 - 4E93 8288 5B5B 556C 560F 4EC4 538D 539D - 53A3 53A5 53AE 9765 8D5D 531A 53F5 5326 - 532E 533E 8D5C 5366 5363 5202 5208 520E - 522D 5233 523F 5240 524C 525E 5261 525C - 84AF 527D 5282 5281 5290 5293 5182 7F54 - 4EBB 4EC3 4EC9 4EC2 4EE8 4EE1 4EEB 4EDE - 4F1B 4EF3 4F22 4F64 4EF5 4F25 4F27 4F09 - 4F2B 4F5E 4F67 6538 4F5A 4F5D -End of Item 0339 - -Begin of Item 033A - Format 1 - srcBegin = D9A1 - srcEnd = D9FE - mappingOffset = 2BB4 - Mapping = - 4F5F 4F57 4F32 4F3D 4F76 4F74 4F91 4F89 - 4F83 4F8F 4F7E 4F7B 4FAA 4F7C 4FAC 4F94 - 4FE6 4FE8 4FEA 4FC5 4FDA 4FE3 4FDC 4FD1 - 4FDF 4FF8 5029 504C 4FF3 502C 500F 502E - 502D 4FFE 501C 500C 5025 5028 507E 5043 - 5055 5048 504E 506C 507B 50A5 50A7 50A9 - 50BA 50D6 5106 50ED 50EC 50E6 50EE 5107 - 510B 4EDD 6C3D 4F58 4F65 4FCE 9FA0 6C46 - 7C74 516E 5DFD 9EC9 9998 5181 5914 52F9 - 530D 8A07 5310 51EB 5919 5155 4EA0 5156 - 4EB3 886E 88A4 4EB5 8114 88D2 7980 5B34 - 8803 7FB8 51AB 51B1 51BD 51BC -End of Item 033A - -Begin of Item 033B - Format 1 - srcBegin = DA4F - srcEnd = DA80 - mappingOffset = 2C12 - Mapping = - 8D20 8D51 8D52 8D57 8D5F 8D65 8D68 8D69 - 8D6A 8D6C 8D6E 8D6F 8D71 8D72 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8D82 - 8D83 8D86 8D87 8D88 8D89 8D8C 8D8D 8D8E - 8D8F 8D90 8D92 8D93 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8DA0 8DA1 - FFFD 8DA2 -End of Item 033B - -Begin of Item 033C - Format 1 - srcBegin = DA8E - srcEnd = DAFE - mappingOffset = 2C44 - Mapping = - 8DB2 8DB6 8DB7 8DB9 8DBB 8DBD 8DC0 8DC1 - 8DC2 8DC5 8DC7 8DC8 8DC9 8DCA 8DCD 8DD0 - 8DD2 8DD3 8DD4 51C7 5196 51A2 51A5 8BA0 - 8BA6 8BA7 8BAA 8BB4 8BB5 8BB7 8BC2 8BC3 - 8BCB 8BCF 8BCE 8BD2 8BD3 8BD4 8BD6 8BD8 - 8BD9 8BDC 8BDF 8BE0 8BE4 8BE8 8BE9 8BEE - 8BF0 8BF3 8BF6 8BF9 8BFC 8BFF 8C00 8C02 - 8C04 8C07 8C0C 8C0F 8C11 8C12 8C14 8C15 - 8C16 8C19 8C1B 8C18 8C1D 8C1F 8C20 8C21 - 8C25 8C27 8C2A 8C2B 8C2E 8C2F 8C32 8C33 - 8C35 8C36 5369 537A 961D 9622 9621 9631 - 962A 963D 963C 9642 9649 9654 965F 9667 - 966C 9672 9674 9688 968D 9697 96B0 9097 - 909B 909D 9099 90AC 90A1 90B4 90B3 90B6 - 90BA -End of Item 033C - -Begin of Item 033D - Format 1 - srcBegin = DB40 - srcEnd = DB88 - mappingOffset = 2CB5 - Mapping = - 8DD5 8DD8 8DD9 8DDC 8DE0 8DE1 8DE2 8DE5 - 8DE6 8DE7 8DE9 8DED 8DEE 8DF0 8DF1 8DF2 - 8DF4 8DF6 8DFC FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8E06 8E07 8E08 8E0B 8E0D 8E0E - 8E10 8E11 8E12 8E13 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8E20 8E21 8E24 8E25 - 8E26 8E27 8E28 8E2B 8E2D 8E30 8E32 8E33 - 8E34 8E36 8E37 8E38 8E3B 8E3C 8E3E FFFD - 8E3F 8E43 8E45 8E46 8E4C 8E4D 8E4E 8E4F - 8E50 -End of Item 033D - -Begin of Item 033E - Format 1 - srcBegin = DB9B - srcEnd = DBFE - mappingOffset = 2CFE - Mapping = - 8E67 8E68 8E6A 8E6B 8E6E 8E71 90B8 90B0 - 90CF 90C5 90BE 90D0 90C4 90C7 90D3 90E6 - 90E2 90DC 90D7 90DB 90EB 90EF 90FE 9104 - 9122 911E 9123 9131 912F 9139 9143 9146 - 520D 5942 52A2 52AC 52AD 52BE 54FF 52D0 - 52D6 52F0 53DF 71EE 77CD 5EF4 51F5 51FC - 9B2F 53B6 5F01 755A 5DEF 574C 57A9 57A1 - 587E 58BC 58C5 58D1 5729 572C 572A 5733 - 5739 572E 572F 575C 573B 5742 5769 5785 - 576B 5786 577C 577B 5768 576D 5776 5773 - 57AD 57A4 578C 57B2 57CF 57A7 57B4 5793 - 57A0 57D5 57D8 57DA 57D9 57D2 57B8 57F4 - 57EF 57F8 57E4 57DD -End of Item 033E - -Begin of Item 033F - Format 1 - srcBegin = DC40 - srcEnd = DC5F - mappingOffset = 2D62 - Mapping = - 8E73 8E75 8E77 8E78 8E79 8E7A 8E7B 8E7D - 8E7E 8E80 8E82 8E83 8E84 8E86 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 8E91 8E92 8E93 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8E9D -End of Item 033F - -Begin of Item 0340 - Format 1 - srcBegin = DC6C - srcEnd = DC6F - mappingOffset = 2D82 - Mapping = - 8EAD 8EAE 8EB0 8EB1 -End of Item 0340 - -Begin of Item 0341 - Format 1 - srcBegin = DCA1 - srcEnd = DCFE - mappingOffset = 2D86 - Mapping = - 580B 580D 57FD 57ED 5800 581E 5819 5844 - 5820 5865 586C 5881 5889 589A 5880 99A8 - 9F19 61FF 8279 827D 827F 828F 828A 82A8 - 8284 828E 8291 8297 8299 82AB 82B8 82BE - 82B0 82C8 82CA 82E3 8298 82B7 82AE 82CB - 82CC 82C1 82A9 82B4 82A1 82AA 829F 82C4 - 82CE 82A4 82E1 8309 82F7 82E4 830F 8307 - 82DC 82F4 82D2 82D8 830C 82FB 82D3 8311 - 831A 8306 8314 8315 82E0 82D5 831C 8351 - 835B 835C 8308 8392 833C 8334 8331 839B - 835E 832F 834F 8347 8343 835F 8340 8317 - 8360 832D 833A 8333 8366 8365 -End of Item 0341 - -Begin of Item 0342 - Format 1 - srcBegin = DDA1 - srcEnd = DDFE - mappingOffset = 2DE4 - Mapping = - 8368 831B 8369 836C 836A 836D 836E 83B0 - 8378 83B3 83B4 83A0 83AA 8393 839C 8385 - 837C 83B6 83A9 837D 83B8 837B 8398 839E - 83A8 83BA 83BC 83C1 8401 83E5 83D8 5807 - 8418 840B 83DD 83FD 83D6 841C 8438 8411 - 8406 83D4 83DF 840F 8403 83F8 83F9 83EA - 83C5 83C0 8426 83F0 83E1 845C 8451 845A - 8459 8473 8487 8488 847A 8489 8478 843C - 8446 8469 8476 848C 848E 8431 846D 84C1 - 84CD 84D0 84E6 84BD 84D3 84CA 84BF 84BA - 84E0 84A1 84B9 84B4 8497 84E5 84E3 850C - 750D 8538 84F0 8539 851F 853A -End of Item 0342 - -Begin of Item 0343 - Format 1 - srcBegin = DE61 - srcEnd = DEFE - mappingOffset = 2E42 - Mapping = - 8F6A 8F80 8F8C 8F92 8F9D 8FA0 8FA1 8FA2 - 8FA4 8FA5 8FA6 8FA7 8FAA 8FAC 8FAD 8FAE - 8FAF 8FB2 8FB3 8FB4 8FB5 8FB7 8FB8 8FBA - 8FBB 8FBC 8FBF 8FC0 8FC3 8FC6 FFFD 8FC9 - 8FCA 8FCB 8FCC 8FCD 8FCF 8FD2 8FD6 8FD7 - 8FDA 8FE0 8FE1 8FE3 8FE7 8FEC 8FEF 8FF1 - 8FF2 8FF4 8FF5 8FF6 8FFA 8FFB 8FFC 8FFE - 8FFF 9007 9008 900C 900E 9013 9015 9018 - 8556 853B 84FF 84FC 8559 8548 8568 8564 - 855E 857A 77A2 8543 8572 857B 85A4 85A8 - 8587 858F 8579 85AE 859C 8585 85B9 85B7 - 85B0 85D3 85C1 85DC 85FF 8627 8605 8629 - 8616 863C 5EFE 5F08 593C 5941 8037 5955 - 595A 5958 530F 5C22 5C25 5C2C 5C34 624C - 626A 629F 62BB 62CA 62DA 62D7 62EE 6322 - 62F6 6339 634B 6343 63AD 63F6 6371 637A - 638E 63B4 636D 63AC 638A 6369 63AE 63BC - 63F2 63F8 63E0 63FF 63C4 63DE 63CE 6452 - 63C6 63BE 6445 6441 640B 641B 6420 640C - 6426 6421 645E 6484 646D 6496 -End of Item 0343 - -Begin of Item 0344 - Format 1 - srcBegin = DF40 - srcEnd = DFFE - mappingOffset = 2EE0 - Mapping = - 9019 901C 9023 9024 9025 FFFD FFFD FFFD - FFFD FFFD FFFD 9030 9031 9032 9033 9034 - 9037 9039 903A 903D 903F 9040 9043 9045 - 9046 9048 9049 904A 904B 904C 904E 9054 - 9055 9056 9059 905A FFFD FFFD FFFD FFFD - FFFD FFFD 9064 9066 9067 9069 906A 906B - 906C 906F 9070 9071 9072 9073 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 907E 9081 FFFD - 9084 9085 9086 9087 9089 908A 908C 908D - 908E 908F 9090 9092 9094 9096 9098 909A - 909C 909E 909F 90A0 90A4 90A5 90A7 90A8 - 90A9 90AB 90AD 90B2 90B7 90BC 90BD 90BF - 90C0 647A 64B7 64B8 6499 64BA 64C0 64D0 - 64D7 64E4 64E2 6509 6525 652E 5F0B 5FD2 - 7519 5F11 535F 53F1 53FD 53E9 53E8 53FB - 5412 5416 5406 544B 5452 5453 5454 5456 - 5443 5421 5457 5459 5423 5432 5482 5494 - 5477 5471 5464 549A 549B 5484 5476 5466 - 549D 54D0 54AD 54C2 54B4 54D2 54A7 54A6 - 54D3 54D4 5472 54A3 54D5 54BB 54BF 54CC - 54D9 54DA 54DC 54A9 54AA 54A4 54DD 54CF - 54DE 551B 54E7 5520 54FD 5514 54F3 5522 - 5523 550F 5511 5527 552A 5567 558F 55B5 - 5549 556D 5541 5555 553F 5550 553C -End of Item 0344 - -Begin of Item 0345 - Format 1 - srcBegin = E040 - srcEnd = E067 - mappingOffset = 2F9F - Mapping = - 90C2 90C3 90C6 90C8 90C9 90CB 90CC 90CD - 90D2 90D4 90D5 90D6 90D8 90D9 90DA 90DE - 90DF 90E0 90E3 90E4 90E5 90E9 90EA 90EC - 90EE 90F0 90F1 90F2 90F3 90F5 90F6 90F7 - 90F9 90FA 90FB 90FC 90FF 9100 9101 9103 -End of Item 0345 - -Begin of Item 0346 - Format 1 - srcBegin = E07C - srcEnd = E083 - mappingOffset = 2FC7 - Mapping = - 911A 911B 911C FFFD 911D 911F 9120 9121 -End of Item 0346 - -Begin of Item 0347 - Format 2 - srcBegin = E08F - destBegin = 9130 -End of Item 0347 - -Begin of Item 0348 - Format 1 - srcBegin = E0A0 - srcEnd = E0FE - mappingOffset = 2FCF - Mapping = - 9144 5537 5556 5575 5576 5577 5533 5530 - 555C 558B 55D2 5583 55B1 55B9 5588 5581 - 559F 557E 55D6 5591 557B 55DF 55BD 55BE - 5594 5599 55EA 55F7 55C9 561F 55D1 55EB - 55EC 55D4 55E6 55DD 55C4 55EF 55E5 55F2 - 55F3 55CC 55CD 55E8 55F5 55E4 8F94 561E - 5608 560C 5601 5624 5623 55FE 5600 5627 - 562D 5658 5639 5657 562C 564D 5662 5659 - 565C 564C 5654 5686 5664 5671 566B 567B - 567C 5685 5693 56AF 56D4 56D7 56DD 56E1 - 56F5 56EB 56F9 56FF 5704 570A 5709 571C - 5E0F 5E19 5E14 5E11 5E31 5E3B 5E3C -End of Item 0348 - -Begin of Item 0349 - Format 1 - srcBegin = E140 - srcEnd = E160 - mappingOffset = 302E - Mapping = - 9145 9147 9148 9151 9153 9154 9155 9156 - 9158 9159 915B 915C 915F 9160 9166 9167 - 9168 916B 916D 9173 917A 917B 917C 9180 - 9181 9182 9183 9184 9186 9188 918A 918E - 918F -End of Item 0349 - -Begin of Item 034A - Format 1 - srcBegin = E174 - srcEnd = E17E - mappingOffset = 304F - Mapping = - 91AB 91AC 91B0 91B1 91B2 91B3 91B6 91B7 - 91B8 91B9 91BB -End of Item 034A - -Begin of Item 034B - Format 1 - srcBegin = E18B - srcEnd = E18D - mappingOffset = 305A - Mapping = - 91C8 91CB 91D0 -End of Item 034B - -Begin of Item 034C - Format 1 - srcBegin = E1A1 - srcEnd = E1FE - mappingOffset = 305D - Mapping = - 5E37 5E44 5E54 5E5B 5E5E 5E61 5C8C 5C7A - 5C8D 5C90 5C96 5C88 5C98 5C99 5C91 5C9A - 5C9C 5CB5 5CA2 5CBD 5CAC 5CAB 5CB1 5CA3 - 5CC1 5CB7 5CC4 5CD2 5CE4 5CCB 5CE5 5D02 - 5D03 5D27 5D26 5D2E 5D24 5D1E 5D06 5D1B - 5D58 5D3E 5D34 5D3D 5D6C 5D5B 5D6F 5D5D - 5D6B 5D4B 5D4A 5D69 5D74 5D82 5D99 5D9D - 8C73 5DB7 5DC5 5F73 5F77 5F82 5F87 5F89 - 5F8C 5F95 5F99 5F9C 5FA8 5FAD 5FB5 5FBC - 8862 5F61 72AD 72B0 72B4 72B7 72B8 72C3 - 72C1 72CE 72CD 72D2 72E8 72EF 72E9 72F2 - 72F4 72F7 7301 72F3 7303 72FA -End of Item 034C - -Begin of Item 034D - Format 1 - srcBegin = E2A1 - srcEnd = E2FE - mappingOffset = 30BB - Mapping = - 72FB 7317 7313 7321 730A 731E 731D 7315 - 7322 7339 7325 732C 7338 7331 7350 734D - 7357 7360 736C 736F 737E 821B 5925 98E7 - 5924 5902 9963 FFFD FFFD FFFD FFFD FFFD - FFFD 9974 9977 997D 9980 9984 9987 998A - 998D 9990 9991 9993 9994 9995 5E80 5E91 - 5E8B 5E96 5EA5 5EA0 5EB9 5EB5 5EBE 5EB3 - 8D53 5ED2 5ED1 5EDB 5EE8 5EEA 81BA 5FC4 - 5FC9 5FD6 5FCF 6003 5FEE 6004 5FE1 5FE4 - 5FFE 6005 6006 5FEA 5FED 5FF8 6019 6035 - 6026 601B 600F 600D 6029 602B 600A 603F - 6021 6078 6079 607B 607A 6042 -End of Item 034D - -Begin of Item 034E - Format 1 - srcBegin = E3A1 - srcEnd = E3FE - mappingOffset = 3119 - Mapping = - 606A 607D 6096 609A 60AD 609D 6083 6092 - 608C 609B 60EC 60BB 60B1 60DD 60D8 60C6 - 60DA 60B4 6120 6126 6115 6123 60F4 6100 - 610E 612B 614A 6175 61AC 6194 61A7 61B7 - 61D4 61F5 5FDD 96B3 95E9 95EB 95F1 95F3 - 95F5 95F6 95FC 95FE 9603 9604 9606 9608 - 960A 960B 960C 960D 960F 9612 9615 9616 - 9617 9619 961A 4E2C 723F 6215 6C35 6C54 - 6C5C 6C4A 6CA3 6C85 6C90 6C94 6C8C 6C68 - 6C69 6C74 6C76 6C86 6CA9 6CD0 6CD4 6CAD - 6CF7 6CF8 6CF1 6CD7 6CB2 6CE0 6CD6 6CFA - 6CEB 6CEE 6CB1 6CD3 6CEF 6CFE -End of Item 034E - -Begin of Item 034F - Format 1 - srcBegin = E4A1 - srcEnd = E4FE - mappingOffset = 3177 - Mapping = - 6D39 6D27 6D0C 6D43 6D48 6D07 6D04 6D19 - 6D0E 6D2B 6D4D 6D2E 6D35 6D1A 6D4F 6D52 - 6D54 6D33 6D91 6D6F 6D9E 6DA0 6D5E 6D93 - 6D94 6D5C 6D60 6D7C 6D63 6E1A 6DC7 6DC5 - 6DDE 6E0E 6DBF 6DE0 6E11 6DE6 6DDD 6DD9 - 6E16 6DAB 6E0C 6DAE 6E2B 6E6E 6E4E 6E6B - 6EB2 6E5F 6E86 6E53 6E54 6E32 6E25 6E44 - 6EDF 6EB1 6E98 6EE0 6F2D 6EE2 6EA5 6EA7 - 6EBD 6EBB 6EB7 6ED7 6EB4 6ECF 6E8F 6EC2 - 6E9F 6F62 6F46 6F47 6F24 6F15 6EF9 6F2F - 6F36 6F4B 6F74 6F2A 6F09 6F29 6F89 6F8D - 6F8C 6F78 6F72 6F7C 6F7A 6FD1 -End of Item 034F - -Begin of Item 0350 - Format 1 - srcBegin = E5A0 - srcEnd = E5FE - mappingOffset = 31D5 - Mapping = - 936B 6FC9 6FA7 6FB9 6FB6 6FC2 6FE1 6FEE - 6FDE 6FE0 6FEF 701A 7023 701B 7039 7035 - 704F 705E 5B80 5B84 5B95 5B93 5BA5 5BB8 - 752F 9A9E 6434 5BE4 5BEE 8930 5BF0 8E47 - 8B07 8FB6 8FD3 8FD5 8FE5 8FEE 8FE4 8FE9 - 8FE6 8FF3 8FE8 9005 9004 900B 9026 9011 - 900D 9016 9021 9035 9036 902D 902F 9044 - 9051 9052 9050 9068 9058 9062 905B 66B9 - 9074 907D 9082 9088 9083 908B 5F50 5F57 - 5F56 5F58 5C3B 54AB 5C50 5C59 5B71 5C63 - 5C66 7FBC 5F2A 5F29 5F2D 8274 5F3C 9B3B - 5C6E 5981 5983 598D 59A9 59AA 59A3 -End of Item 0350 - -Begin of Item 0351 - Format 1 - srcBegin = E69E - srcEnd = E6FE - mappingOffset = 3234 - Mapping = - 93CB 93CC 93CD 5997 59CA 59AB 599E 59A4 - 59D2 59B2 59AF 59D7 59BE 5A05 5A06 59DD - 5A08 59E3 59D8 59F9 5A0C 5A09 5A32 5A34 - 5A11 5A23 5A13 5A40 5A67 5A4A 5A55 5A3C - 5A62 5A75 80EC 5AAA 5A9B 5A77 5A7A 5ABE - 5AEB 5AB2 5AD2 5AD4 5AB8 5AE0 5AE3 5AF1 - 5AD6 5AE6 5AD8 5ADC 5B09 5B17 5B16 5B32 - 5B37 5B40 5C15 5C1C 5B5A 5B65 5B73 5B51 - 5B53 5B62 9A75 9A77 9A78 9A7A 9A7F 9A7D - 9A80 9A81 9A85 9A88 9A8A 9A90 9A92 9A93 - 9A96 9A98 9A9B 9A9C 9A9D 9A9F 9AA0 9AA2 - 9AA3 9AA5 9AA7 7E9F 7EA1 7EA3 7EA5 7EA8 - 7EA9 -End of Item 0351 - -Begin of Item 0352 - Format 1 - srcBegin = E7A1 - srcEnd = E7FE - mappingOffset = 3295 - Mapping = - 7EAD 7EB0 7EBE 7EC0 7EC1 7EC2 7EC9 7ECB - 7ECC 7ED0 7ED4 7ED7 7EDB 7EE0 7EE1 7EE8 - 7EEB 7EEE 7EEF 7EF1 7EF2 7F0D 7EF6 7EFA - 7EFB 7EFE 7F01 7F02 7F03 7F07 7F08 7F0B - 7F0C 7F0F 7F11 7F12 7F17 7F19 7F1C 7F1B - 7F1F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7F2A 7F2B 7F2C 7F2D 7F2F 7F30 7F31 7F32 - 7F33 7F35 5E7A 757F 5DDB 753E 9095 738E - 7391 73AE 73A2 739F 73CF 73C2 73D1 73B7 - 73B3 73C0 73C9 73C8 73E5 73D9 987C 740A - 73E9 73E7 73DE 73BA 73F2 740F 742A 745B - 7426 7425 7428 7430 742E 742C -End of Item 0352 - -Begin of Item 0353 - Format 1 - srcBegin = E87B - srcEnd = E87E - mappingOffset = 32F3 - Mapping = - 946C 946D 946E 946F -End of Item 0353 - -Begin of Item 0354 - Format 1 - srcBegin = E895 - srcEnd = E8FE - mappingOffset = 32F7 - Mapping = - 9491 9496 9498 94C7 94CF 94D3 94D4 94DA - 94E6 94FB 951C 9520 741B 741A 7441 745C - 7457 7455 7459 7477 746D 747E 749C 748E - 7480 7481 7487 748B 749E 74A8 74A9 7490 - 74A7 74D2 74BA 97EA 97EB 97EC 674C 6753 - 675E 6748 6769 67A5 6787 676A 6773 6798 - 67A7 6775 67A8 679E 67AD 678B 6777 677C - 67F0 6809 67D8 680A 67E9 67B0 680C 67D9 - 67B5 67DA 67B3 67DD 6800 67C3 67B8 67E2 - 680E 67C1 67FD 6832 6833 6860 6861 684E - 6862 6844 6864 6883 681D 6855 6866 6841 - 6867 6840 683E 684A 6849 6829 68B5 688F - 6874 6877 6893 686B 68C2 696E 68FC 691F - 6920 68F9 -End of Item 0354 - -Begin of Item 0355 - Format 1 - srcBegin = E940 - srcEnd = E94B - mappingOffset = 3361 - Mapping = - 9527 9533 953D 9543 9548 954B 9555 955A - 9560 956E 9574 9575 -End of Item 0355 - -Begin of Item 0356 - Format 1 - srcBegin = E9A1 - srcEnd = E9FE - mappingOffset = 336D - Mapping = - 6924 68F0 690B 6901 6957 68E3 6910 6971 - 6939 6960 6942 695D 6984 696B 6980 6998 - 6978 6934 69CC 6987 6988 69CE 6989 6966 - 6963 6979 699B 69A7 69BB 69AB 69AD 69D4 - 69B1 69C1 69CA 69DF 6995 69E0 698D 69FF - 6A2F 69ED 6A17 6A18 6A65 69F2 6A44 6A3E - 6AA0 6A50 6A5B 6A35 6A8E 6A79 6A3D 6A28 - 6A58 6A7C 6A91 6A90 6AA9 6A97 6AAB 7337 - 7352 6B81 6B82 6B87 6B84 6B92 6B93 6B8D - 6B9A 6B9B 6BA1 6BAA 8F6B 8F6D 8F71 8F72 - 8F73 8F75 8F76 8F78 8F77 8F79 8F7A 8F7C - 8F7E 8F81 8F82 8F84 8F87 8F8B -End of Item 0356 - -Begin of Item 0357 - Format 1 - srcBegin = EA5C - srcEnd = EA90 - mappingOffset = 33CB - Mapping = - 95EC 95FF 9607 9613 9618 961B 961E 9620 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 962B - 962C 962D 962F 9630 9637 9638 9639 963A - 963E 9641 9643 964A 964E 964F 9651 9652 - 9653 9656 9657 FFFD 9658 9659 965A 965C - 965D 965E 9660 9663 9665 9666 966B 966D - 966E 966F 9670 9671 9673 -End of Item 0357 - -Begin of Item 0358 - Format 1 - srcBegin = EA9E - srcEnd = EAFE - mappingOffset = 3400 - Mapping = - 9687 9689 968A 8F8D 8F8E 8F8F 8F98 8F9A - 8ECE 620B 6217 621B 621F 6222 6221 6225 - 6224 622C 81E7 74EF 74F4 74FF 750F 7511 - 7513 6534 65EE 65EF 65F0 660A 6619 6772 - 6603 6615 6600 7085 66F7 661D 6634 6631 - 6636 6635 8006 665F 6654 6641 664F 6656 - 6661 6657 6677 6684 668C 66A7 669D 66BE - 66DB 66DC 66E6 66E9 8D32 8D33 8D36 8D3B - 8D3D 8D40 8D45 8D46 8D48 8D49 8D47 8D4D - 8D55 8D59 89C7 89CA 89CB 89CC 89CE 89CF - 89D0 89D1 726E 729F 725D 7266 726F 727E - 727F 7284 728B 728D 728F 7292 6308 6332 - 63B0 -End of Item 0358 - -Begin of Item 0359 - Format 1 - srcBegin = EB40 - srcEnd = EB48 - mappingOffset = 3461 - Mapping = - 968C 968E 9691 9692 9693 9695 9696 969A - 969B -End of Item 0359 - -Begin of Item 035A - Format 1 - srcBegin = EB5B - srcEnd = EB6C - mappingOffset = 346A - Mapping = - 96B1 96B2 96B4 96B5 96B7 96B8 96BA 96BB - 96BF 96C2 96C3 96C8 96CA 96CB 96D0 96D1 - 96D3 96D4 -End of Item 035A - -Begin of Item 035B - Format 1 - srcBegin = EB7E - srcEnd = EBFE - mappingOffset = 347C - Mapping = - 96EB FFFD 96EC 96ED 96EE 96F0 96F1 96F2 - 96F4 96F5 96F8 96FA 96FB 96FC 96FD 96FF - 9702 9703 9705 970A 970B 970C 9710 9711 - 9712 9714 9715 9717 9718 9719 971A 971B - 971D 971F 9720 643F 64D8 8004 6BEA 6BF3 - 6BFD 6BF5 6BF9 6C05 6C07 6C06 6C0D 6C15 - 6C18 6C19 6C1A 6C21 6C29 6C24 6C2A 6C32 - 6535 6555 656B 724D 7252 7256 7230 8662 - 5216 809F 809C 8093 80BC 670A 80BD 80B1 - 80AB 80AD 80B4 80B7 80E7 80E8 80E9 80EA - 80DB 80C2 80C4 80D9 80CD 80D7 6710 80DD - 80EB 80F1 80F4 80ED 810D 810E 80F2 80FC - 6715 8112 8C5A 8136 811E 812C 8118 8132 - 8148 814C 8153 8174 8159 815A 8171 8160 - 8169 817C 817D 816D 8167 584D 5AB5 8188 - 8182 8191 6ED5 81A3 81AA 81CC 6726 81CA - 81BB -End of Item 035B - -Begin of Item 035C - Format 1 - srcBegin = EC49 - srcEnd = EC56 - mappingOffset = 34FD - Mapping = - 972B 972C 972E 972F 9731 9733 9734 9735 - 9736 9737 973A 973B 973C 973D -End of Item 035C - -Begin of Item 035D - Format 1 - srcBegin = EC6A - srcEnd = ECFE - mappingOffset = 350B - Mapping = - 9754 9755 9757 9758 975A 975C 975D 975F - 9763 9764 9766 9767 9768 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9772 9775 - 9777 9778 9779 977A 977B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9786 9787 9788 - 9789 978A 978C 978E 978F 9790 9793 9795 - 9796 9797 9799 979A 979B 979C 979D 81C1 - 81A6 6B24 6B37 6B39 6B43 6B46 6B59 98D1 - 98D2 98D3 98D5 98D9 98DA 6BB3 5F40 6BC2 - 89F3 6590 9F51 6593 65BC 65C6 65C4 65C3 - 65CC 65CE 65D2 65D6 7080 709C 7096 709D - 70BB 70C0 70B7 70AB 70B1 70E8 70CA 7110 - 7113 7116 712F 7131 7173 715C 7168 7145 - 7172 714A 7178 717A 7198 71B3 71B5 71A8 - 71A0 71E0 71D4 71E7 71F9 721D 7228 706C - 7118 7166 71B9 623E 623D 6243 6248 6249 - 793B 7940 7946 7949 795B 795C 7953 795A - 7962 7957 7960 796F 7967 797A 7985 798A - 799A 79A7 79B3 5FD1 5FD0 -End of Item 035D - -Begin of Item 035E - Format 1 - srcBegin = ED40 - srcEnd = ED4F - mappingOffset = 35A0 - Mapping = - 979E 979F 97A1 97A2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 97AC 97AE 97B0 97B1 97B3 -End of Item 035E - -Begin of Item 035F - Format 1 - srcBegin = ED80 - srcEnd = ED88 - mappingOffset = 35B0 - Mapping = - 97E4 97E5 97E8 97EE 97EF 97F0 97F1 97F2 - 97F4 -End of Item 035F - -Begin of Item 0360 - Format 1 - srcBegin = EDA1 - srcEnd = EDFE - mappingOffset = 35B9 - Mapping = - 603C 605D 605A 6067 6041 6059 6063 60AB - 6106 610D 615D 61A9 619D 61CB 61D1 6206 - 8080 807F 6C93 6CF6 6DFC 77F6 77F8 7800 - 7809 7817 7818 7811 65AB 782D 781C 781D - 7839 783A 783B 781F 783C 7825 782C 7823 - 7829 784E 786D 7856 7857 7826 7850 7847 - 784C 786A 789B 7893 789A 7887 789C 78A1 - 78A3 78B2 78B9 78A5 78D4 78D9 78C9 78EC - 78F2 7905 78F4 7913 7924 791E 7934 9F9B - 9EF9 9EFB 9EFC 76F1 7704 770D 76F9 7707 - 7708 771A 7722 7719 772D 7726 7735 7738 - 7750 7751 7747 7743 775A 7768 -End of Item 0360 - -Begin of Item 0361 - Format 1 - srcBegin = EEA1 - srcEnd = EEFE - mappingOffset = 3617 - Mapping = - 7762 7765 777F 778D 777D 7780 778C 7791 - 779F 77A0 77B0 77B5 77BD 753A 7540 754E - 754B 7548 755B 7572 7579 7583 7F58 7F61 - 7F5F 8A48 7F68 7F74 7F71 7F79 7F81 7F7E - 76CD 76E5 8832 9485 9486 9487 948B 948A - 948C 948D 948F 9490 9494 9497 9495 949A - 949B 949C 94A3 94A4 94AB 94AA 94AD 94AC - 94AF 94B0 94B2 94B4 94B6 94B7 94B8 94B9 - 94BA 94BC 94BD 94BF 94C4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 94D0 94D1 94D2 94D5 - 94D6 94D7 94D9 94D8 94DB 94DE 94DF 94E0 - 94E2 94E4 94E5 94E7 94E8 94EA -End of Item 0361 - -Begin of Item 0362 - Format 1 - srcBegin = EF46 - srcEnd = EF4B - mappingOffset = 3675 - Mapping = - 988B 988E 9892 9895 9899 98A3 -End of Item 0362 - -Begin of Item 0363 - Format 1 - srcBegin = EF72 - srcEnd = EF81 - mappingOffset = 367B - Mapping = - 98CF 98D0 98D4 98D6 98D7 98DB 98DC 98DD - 98E0 98E1 98E2 98E3 98E4 FFFD 98E5 98E6 -End of Item 0363 - -Begin of Item 0364 - Format 1 - srcBegin = EFA1 - srcEnd = EFFE - mappingOffset = 368B - Mapping = - 94E9 94EB 94EE 94EF 94F3 94F4 94F5 94F7 - 94F9 94FC 94FD 94FF 9503 9502 9506 9507 - 9509 950A 950D 950E 950F 9512 9513 9514 - 9515 9516 9518 951B 951D 951E 951F 9522 - 952A 952B 9529 952C 9531 9532 9534 9536 - 9537 9538 953C 953E 953F 9542 9535 9544 - 9545 9546 9549 954C 954E 954F 9552 9553 - 9554 9556 9557 9558 9559 955B 955E 955F - 955D 9561 9562 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 956F 9571 9572 9573 - 953A 77E7 77EC 96C9 79D5 79ED 79E3 79EB - 7A06 5D47 7A03 7A02 7A1E 7A14 -End of Item 0364 - -Begin of Item 0365 - Format 1 - srcBegin = F040 - srcEnd = F046 - mappingOffset = 36E9 - Mapping = - 9908 9909 990A 990B 990C 990E 990F -End of Item 0365 - -Begin of Item 0366 - Format 1 - srcBegin = F097 - srcEnd = F0FE - mappingOffset = 36F0 - Mapping = - 9964 9966 9973 9978 9979 997B 997E 9982 - 9983 9989 7A39 7A37 7A51 9ECF 99A5 7A70 - 7688 768E 7693 7699 76A4 74DE 74E0 752C - 9E20 9E22 9E28 9E29 9E2A 9E2B 9E2C 9E32 - 9E31 9E36 9E38 9E37 9E39 9E3A 9E3E 9E41 - 9E42 9E44 9E46 9E47 9E48 9E49 9E4B 9E4C - 9E4E 9E51 9E55 9E57 9E5A 9E5B 9E5C 9E5E - 9E63 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9E71 9E6D 9E73 7592 7594 7596 75A0 759D - 75AC 75A3 75B3 75B4 75B8 75C4 75B1 75B0 - 75C3 75C2 75D6 75CD 75E3 75E8 75E6 75E4 - 75EB 75E7 7603 75F1 75FC 75FF 7610 7600 - 7605 760C 7617 760A 7625 7618 7615 7619 -End of Item 0366 - -Begin of Item 0367 - Format 1 - srcBegin = F140 - srcEnd = F141 - mappingOffset = 3758 - Mapping = - 998C 998E -End of Item 0367 - -Begin of Item 0368 - Format 1 - srcBegin = F14D - srcEnd = F14E - mappingOffset = 375A - Mapping = - 99A6 99A7 -End of Item 0368 - -Begin of Item 0369 - Format 1 - srcBegin = F1A1 - srcEnd = F1FE - mappingOffset = 375C - Mapping = - 761B 763C 7622 7620 7640 762D 7630 763F - 7635 7643 763E 7633 764D 765E 7654 765C - 7656 766B 766F 7FCA 7AE6 7A78 7A79 7A80 - 7A86 7A88 7A95 7AA6 7AA0 7AAC 7AA8 7AAD - 7AB3 8864 8869 8872 887D 887F 8882 88A2 - 88C6 88B7 88BC 88C9 88E2 88CE 88E3 88E5 - 88F1 891A 88FC 88E8 88FE 88F0 8921 8919 - 8913 891B 890A 8934 892B 8936 8941 8966 - 897B 758B 80E5 76B2 76B4 77DC 8012 8014 - 8016 801C 8020 8022 8025 8026 8027 8029 - 8028 8031 800B 8035 8043 8046 804D 8052 - 8069 8071 8983 9878 9880 9883 -End of Item 0369 - -Begin of Item 036A - Format 1 - srcBegin = F2A1 - srcEnd = F2FE - mappingOffset = 37BA - Mapping = - 9889 988C 988D 988F 9894 989A 989B 989E - 989F 98A1 98A2 98A5 98A6 864D 8654 866C - 866E 867F 867A 867C 867B 86A8 868D 868B - 86AC 869D 86A7 86A3 86AA 8693 86A9 86B6 - 86C4 86B5 86CE 86B0 86BA 86B1 86AF 86C9 - 86CF 86B4 86E9 86F1 86F2 86ED 86F3 86D0 - 8713 86DE 86F4 86DF 86D8 86D1 8703 8707 - 86F8 8708 870A 870D 8709 8723 873B 871E - 8725 872E 871A 873E 8748 8734 8731 8729 - 8737 873F 8782 8722 877D 877E 877B 8760 - 8770 874C 876E 878B 8753 8763 877C 8764 - 8759 8765 8793 87AF 87A8 87D2 -End of Item 036A - -Begin of Item 036B - Format 1 - srcBegin = F352 - srcEnd = F3FE - mappingOffset = 3818 - Mapping = - 9A72 9A83 9A89 9A8D 9A8E 9A94 9A95 9A99 - 9AA6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9AB2 9AB3 9AB4 9AB5 9AB9 9ABB 9ABD 9ABE - 9ABF 9AC3 9AC4 9AC6 9AC7 9AC8 9AC9 9ACA - 9ACD 9ACE 9ACF 9AD0 9AD2 9AD4 9AD5 9AD6 - 9AD7 9AD9 9ADA 9ADB 9ADC FFFD 9ADD 9ADE - 9AE0 9AE2 9AE3 9AE4 9AE5 9AE7 9AE8 9AE9 - 9AEA 9AEC 9AEE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9AFA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9B04 9B05 9B06 87C6 - 8788 8785 87AD 8797 8783 87AB 87E5 87AC - 87B5 87B3 87CB 87D3 87BD 87D1 87C0 87CA - 87DB 87EA 87E0 87EE 8816 8813 87FE 880A - 881B 8821 8839 883C 7F36 7F42 7F44 7F45 - 8210 7AFA 7AFD 7B08 7B03 7B04 7B15 7B0A - 7B2B 7B0F 7B47 7B38 7B2A 7B19 7B2E 7B31 - 7B20 7B25 7B24 7B33 7B3E 7B1E 7B58 7B5A - 7B45 7B75 7B4C 7B5D 7B60 7B6E 7B7B 7B62 - 7B72 7B71 7B90 7BA6 7BA7 7BB8 7BAC 7B9D - 7BA8 7B85 7BAA 7B9C 7BA2 7BAB 7BB4 7BD1 - 7BC1 7BCC 7BDD 7BDA 7BE5 7BE6 7BEA 7C0C - 7BFE 7BFC 7C0F 7C16 7C0B -End of Item 036B - -Begin of Item 036C - Format 1 - srcBegin = F440 - srcEnd = F449 - mappingOffset = 38C5 - Mapping = - 9B07 FFFD FFFD FFFD FFFD FFFD FFFD 9B10 - 9B11 9B12 -End of Item 036C - -Begin of Item 036D - Format 1 - srcBegin = F455 - srcEnd = F457 - mappingOffset = 38CF - Mapping = - 9B20 9B21 9B22 -End of Item 036D - -Begin of Item 036E - Format 1 - srcBegin = F463 - srcEnd = F478 - mappingOffset = 38D2 - Mapping = - 9B30 9B31 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9B3D 9B3E 9B3F 9B40 9B46 9B4A - 9B4B 9B4C 9B4E 9B50 9B52 9B53 -End of Item 036E - -Begin of Item 036F - Format 1 - srcBegin = F4A1 - srcEnd = F4FE - mappingOffset = 38E8 - Mapping = - 7C1F 7C2A 7C26 7C38 7C41 7C40 81FE 8201 - 8202 8204 81EC 8844 8221 8222 8223 822D - 822F 8228 822B 8238 823B 8233 8234 823E - 8244 8249 824B 824F 825A 825F 8268 887E - 8885 8888 88D8 88DF 895E 7F9D 7F9F 7FA7 - 7FAF 7FB0 7FB2 7C7C 6549 7C91 7C9D 7C9C - 7C9E 7CA2 7CB2 7CBC 7CBD 7CC1 7CC7 7CCC - 7CCD 7CC8 7CC5 7CD7 7CE8 826E 66A8 7FBF - 7FCE 7FD5 7FE5 7FE1 7FE6 7FE9 7FEE 7FF3 - 7CF8 7D77 7DA6 7DAE 7E47 7E9B 9EB8 9EB4 - 8D73 8D84 8D94 8D91 8DB1 8D67 8D6D 8C47 - 8C49 914A 9150 914E 914F 9164 -End of Item 036F - -Begin of Item 0370 - Format 1 - srcBegin = F5A1 - srcEnd = F5FE - mappingOffset = 3946 - Mapping = - 9162 9161 9170 9169 916F 917D 917E 9172 - 9174 9179 918C 9185 9190 918D 9191 91A2 - 91A3 91AA 91AD 91AE 91AF 91B5 91B4 91BA - 8C55 9E7E 8DB8 8DEB 8E05 8E59 8E69 8DB5 - 8DBF 8DBC 8DBA 8DC4 8DD6 8DD7 8DDA 8DDE - 8DCE 8DCF 8DDB 8DC6 8DEC 8DF7 8DF8 8DE3 - 8DF9 8DFB 8DE4 8E09 8DFD 8E14 8E1D 8E1F - 8E2C 8E2E 8E23 8E2F 8E3A 8E40 8E39 8E35 - 8E3D 8E31 8E49 8E41 8E42 8E51 8E52 8E4A - 8E70 8E76 8E7C 8E6F 8E74 8E85 8E8F 8E94 - 8E90 8E9C 8E9E 8C78 8C82 8C8A 8C85 8C98 - 8C94 659B 89D6 89DE 89DA 89DC -End of Item 0370 - -Begin of Item 0371 - Format 1 - srcBegin = F6A1 - srcEnd = F6FE - mappingOffset = 39A4 - Mapping = - 89E5 89EB 89EF 8A3E 8B26 9753 96E9 96F3 - 96EF 9706 9701 9708 970F 970E 972A 972D - 9730 973E 9F80 9F83 FFFD FFFD FFFD FFFD - FFFD FFFD 9F8C 9EFE 9F0B 9F0D 96B9 96BC - 96BD 96CE 96D2 77BF 96E0 928E 92AE 92C8 - 933E 936A 93CA 938F 943E 946B 9C7F 9C82 - 9C85 9C86 9C87 9C88 7A23 9C8B 9C8E 9C90 - 9C91 9C92 9C94 9C95 9C9A 9C9B FFFD FFFD - FFFD FFFD FFFD FFFD 9CA5 9CA6 9CA7 9CA8 - 9CA9 9CAB 9CAD 9CAE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9CBA 9CBB 9CBC 9CBD - 9CC4 9CC5 9CC6 9CC7 9CCA 9CCB -End of Item 0371 - -Begin of Item 0372 - Format 1 - srcBegin = F780 - srcEnd = F7FE - mappingOffset = 3A02 - Mapping = - 9C7B 9C7D 9C7E 9C80 9C83 9C84 9C89 9C8A - 9C8C 9C8F 9C93 9C96 9C97 9C98 9C99 9C9D - 9CAA 9CAC 9CAF 9CB9 9CBE 9CBF 9CC0 9CC1 - 9CC2 9CC8 9CC9 9CD1 9CD2 9CDA 9CDB 9CE0 - 9CE1 9CCC 9CCD 9CCE 9CCF 9CD0 9CD3 9CD4 - 9CD5 9CD7 9CD8 9CD9 9CDC 9CDD 9CDF 9CE2 - 977C 9785 9791 9792 9794 97AF 97AB 97A3 - 97B2 97B4 9AB1 9AB0 9AB7 9E58 9AB6 9ABA - 9ABC 9AC1 9AC0 9AC5 9AC2 9ACB 9ACC 9AD1 - 9B45 9B43 9B47 9B49 9B48 9B4D 9B51 98E8 - 990D 992E 9955 9954 9ADF 9AE1 9AE6 9AEF - 9AEB 9AFB 9AED 9AF9 9B08 9B0F 9B13 9B1F - 9B23 9EBD 9EBE 7E3B 9E82 9E87 9E88 9E8B - 9E92 93D6 9E9D 9E9F 9EDB 9EDC 9EDD 9EE0 - 9EDF 9EE2 9EE9 9EE7 9EE5 9EEA 9EEF 9F22 - 9F2C 9F2F 9F39 9F37 9F3D 9F3E 9F44 -End of Item 0372 - -Begin of Item 0373 - Format 1 - srcBegin = FB5C - srcEnd = FB86 - mappingOffset = 3A81 - Mapping = - 9E24 9E27 9E2E 9E30 9E34 9E3B 9E3C 9E40 - 9E4D 9E50 9E52 9E53 9E54 9E56 9E59 9E5D - 9E5F 9E60 9E61 9E62 9E65 9E6E 9E6F 9E72 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9E80 FFFD 9E81 9E83 9E84 9E85 - 9E86 9E89 9E8A -End of Item 0373 - -Begin of Item 0374 - Format 1 - srcBegin = FB96 - srcEnd = FBA0 - mappingOffset = 3AAC - Mapping = - 9E9E FFFD FFFD FFFD FFFD FFFD FFFD 9EA7 - 9EA8 9EA9 9EAA -End of Item 0374 - -Begin of Item 0375 - Format 1 - srcBegin = FC49 - srcEnd = FCA0 - mappingOffset = 3AB7 - Mapping = - 9EB5 9EB6 9EB7 9EB9 9EBA 9EBC 9EBF 9EC0 - 9EC1 9EC2 9EC3 9EC5 9EC6 9EC7 9EC8 9ECA - 9ECB 9ECC 9ED0 9ED2 9ED3 9ED5 9ED6 9ED7 - 9ED9 9EDA 9EDE 9EE1 9EE3 9EE4 9EE6 9EE8 - 9EEB 9EEC 9EED 9EEE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9EFA 9EFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9F06 - 9F07 9F08 9F09 9F0A 9F0C 9F0F 9F11 9F12 - 9F14 9F15 9F16 9F18 FFFD FFFD FFFD FFFD - FFFD FFFD 9F21 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9F2D 9F2E 9F30 9F31 -End of Item 0375 - -Begin of Item 0376 - Format 1 - srcBegin = FD40 - srcEnd = FD4C - mappingOffset = 3B0F - Mapping = - 9F32 9F33 9F34 9F35 9F36 9F38 9F3A 9F3C - 9F3F 9F40 9F41 9F42 9F43 -End of Item 0376 - -Begin of Item 0377 - Format 1 - srcBegin = FD86 - srcEnd = FD87 - mappingOffset = 3B1C - Mapping = - 9F81 9F82 -End of Item 0377 - -Begin of Item 0378 - Format 1 - srcBegin = FD94 - srcEnd = FDA0 - mappingOffset = 3B1E - Mapping = - 9F9C 9F9D 9F9E 9FA1 9FA2 9FA3 9FA4 9FA5 - F92C F979 F995 F9E7 F9F1 -End of Item 0378 - -Begin of Item 0379 - Format 1 - srcBegin = FE40 - srcEnd = FE4F - mappingOffset = 3B2B - Mapping = - FA0C FA0D FA0E FA0F FA11 FA13 FA14 FA18 - FA1F FA20 FA21 FA23 FA24 FA27 FA28 FA29 -End of Item 0379 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x037A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x00E3, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0B51, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0269 */ -/* Total of Format 1 : 0x0108 */ -/* Total of Format 2 : 0x0009 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x1110, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1121, 0x1111, 0x1111, 0x1111, 0x1111, -0x2111, 0x1111, 0x1111, 0x2111, 0x1221, 0x2111, 0x1111, 0x1111, -0x1112, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1112, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x2111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x00E3 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x8165, 0x816A, 0x4E6A, -/* 0002 */ 0x816C, 0x8175, 0x4E74, -/* 0003 */ 0x8176, 0x817C, 0x4E7F, -/* 0004 */ 0x81AC, 0x81B2, 0x4F02, -/* 0005 */ 0x81D0, 0x81D5, 0x4F47, -/* 0006 */ 0x8248, 0x8250, 0x4FB6, -/* 0007 */ 0x8273, 0x827E, 0x4FFF, -/* 0008 */ 0x8291, 0x829B, 0x502F, -/* 0009 */ 0x82B3, 0x82BA, 0x505D, -/* 000A */ 0x82BB, 0x82C0, 0x5066, -/* 000B */ 0x82C1, 0x82C9, 0x506D, -/* 000C */ 0x82D9, 0x82ED, 0x508E, -/* 000D */ 0x82F7, 0x82FD, 0x50B3, -/* 000E */ 0x8340, 0x8351, 0x50BD, -/* 000F */ 0x8352, 0x8357, 0x50D0, -/* 0010 */ 0x835B, 0x8365, 0x50DB, -/* 0011 */ 0x8374, 0x837D, 0x50FC, -/* 0012 */ 0x8382, 0x8387, 0x510C, -/* 0013 */ 0x8388, 0x8395, 0x5113, -/* 0014 */ 0x8396, 0x83B2, 0x5122, -/* 0015 */ 0x83F9, 0x83FE, 0x51D2, -/* 0016 */ 0x8448, 0x844D, 0x51E5, -/* 0017 */ 0x8471, 0x8476, 0x5244, -/* 0018 */ 0x8491, 0x849A, 0x5273, -/* 0019 */ 0x84A2, 0x84A8, 0x5289, -/* 001A */ 0x84AB, 0x84B1, 0x5294, -/* 001B */ 0x84BA, 0x84C3, 0x52B4, -/* 001C */ 0x84D5, 0x84DA, 0x52D9, -/* 001D */ 0x84DF, 0x84E9, 0x52E5, -/* 001E */ 0x84EA, 0x84F1, 0x52F1, -/* 001F */ 0x8552, 0x855B, 0x532F, -/* 0020 */ 0x8593, 0x8599, 0x53AF, -/* 0021 */ 0x85E1, 0x85E8, 0x5469, -/* 0022 */ 0x865D, 0x8662, 0x54F4, -/* 0023 */ 0x8672, 0x8677, 0x5515, -/* 0024 */ 0x86A9, 0x86AE, 0x556F, -/* 0025 */ 0x86C1, 0x86C7, 0x55A0, -/* 0026 */ 0x86C8, 0x86D0, 0x55A8, -/* 0027 */ 0x8745, 0x874C, 0x5610, -/* 0028 */ 0x8765, 0x8770, 0x5640, -/* 0029 */ 0x8790, 0x8797, 0x567D, -/* 002A */ 0x8798, 0x879E, 0x5687, -/* 002B */ 0x87A2, 0x87B0, 0x5694, -/* 002C */ 0x87B1, 0x87BB, 0x56A4, -/* 002D */ 0x87BC, 0x87C2, 0x56B0, -/* 002E */ 0x87C7, 0x87D3, 0x56BD, -/* 002F */ 0x87D4, 0x87DC, 0x56CB, -/* 0030 */ 0x87E3, 0x87E8, 0x56E5, -/* 0031 */ 0x87F8, 0x87FE, 0x570B, -/* 0032 */ 0x8840, 0x8849, 0x5712, -/* 0033 */ 0x888A, 0x8890, 0x5794, -/* 0034 */ 0x88A0, 0x88A8, 0x57B9, -/* 0035 */ 0x88A9, 0x88AF, 0x57C4, -/* 0036 */ 0x88BD, 0x88C4, 0x57E5, -/* 0037 */ 0x88F7, 0x88FE, 0x5836, -/* 0038 */ 0x8940, 0x8945, 0x583E, -/* 0039 */ 0x8946, 0x894C, 0x5845, -/* 003A */ 0x895A, 0x895F, 0x585F, -/* 003B */ 0x8965, 0x8975, 0x586D, -/* 003C */ 0x898D, 0x8994, 0x58A0, -/* 003D */ 0x8995, 0x89A6, 0x58AA, -/* 003E */ 0x89AE, 0x89B8, 0x58C6, -/* 003F */ 0x89BC, 0x89C9, 0x58D6, -/* 0040 */ 0x89CA, 0x89CF, 0x58E5, -/* 0041 */ 0x89D8, 0x89DF, 0x58FA, -/* 0042 */ 0x8A56, 0x8A62, 0x5966, -/* 0043 */ 0x8A85, 0x8A8A, 0x59B3, -/* 0044 */ 0x8A8E, 0x8A94, 0x59BF, -/* 0045 */ 0x8AAB, 0x8AB6, 0x59ED, -/* 0046 */ 0x8AD3, 0x8AD9, 0x5A2A, -/* 0047 */ 0x8AEB, 0x8AF4, 0x5A4B, -/* 0048 */ 0x8AF9, 0x8AFE, 0x5A5B, -/* 0049 */ 0x8B47, 0x8B4F, 0x5A6B, -/* 004A */ 0x8B56, 0x8B67, 0x5A80, -/* 004B */ 0x8B68, 0x8B6E, 0x5A93, -/* 004C */ 0x8B6F, 0x8B7C, 0x5A9C, -/* 004D */ 0x8B8F, 0x8B94, 0x5AC3, -/* 004E */ 0x8BB0, 0x8BC6, 0x5AF2, -/* 004F */ 0x8BC7, 0x8BD2, 0x5B0A, -/* 0050 */ 0x8BD3, 0x8BEC, 0x5B18, -/* 0051 */ 0x8BF0, 0x8BF7, 0x5B38, -/* 0052 */ 0x8BF8, 0x8BFE, 0x5B41, -/* 0053 */ 0x8C40, 0x8C47, 0x5B48, -/* 0054 */ 0x8C81, 0x8C89, 0x5BD4, -/* 0055 */ 0x8C95, 0x8C9B, 0x5BF1, -/* 0056 */ 0x8CD4, 0x8CDA, 0x5C67, -/* 0057 */ 0x8CDC, 0x8CE2, 0x5C72, -/* 0058 */ 0x8D4F, 0x8D54, 0x5CC5, -/* 0059 */ 0x8D55, 0x8D5A, 0x5CCC, -/* 005A */ 0x8D5B, 0x8D60, 0x5CD3, -/* 005B */ 0x8D61, 0x8D67, 0x5CDA, -/* 005C */ 0x8D70, 0x8D79, 0x5CF1, -/* 005D */ 0x8D83, 0x8D88, 0x5D08, -/* 005E */ 0x8DA4, 0x8DAB, 0x5D35, -/* 005F */ 0x8DAC, 0x8DB3, 0x5D3F, -/* 0060 */ 0x8DB6, 0x8DC0, 0x5D4D, -/* 0061 */ 0x8DC4, 0x8DCE, 0x5D5E, -/* 0062 */ 0x8DD6, 0x8DE2, 0x5D75, -/* 0063 */ 0x8DE3, 0x8DF8, 0x5D83, -/* 0064 */ 0x8E40, 0x8E55, 0x5DA1, -/* 0065 */ 0x8E56, 0x8E62, 0x5DB8, -/* 0066 */ 0x8E63, 0x8E69, 0x5DC6, -/* 0067 */ 0x8E6A, 0x8E76, 0x5DCE, -/* 0068 */ 0x8E94, 0x8E9B, 0x5E1E, -/* 0069 */ 0x8EAF, 0x8EB4, 0x5E46, -/* 006A */ 0x8EB5, 0x8EBB, 0x5E4D, -/* 006B */ 0x8EC5, 0x8ED3, 0x5E63, -/* 006C */ 0x8EF8, 0x8EFE, 0x5EBF, -/* 006D */ 0x8F43, 0x8F48, 0x5ECB, -/* 006E */ 0x8F4F, 0x8F5A, 0x5EDC, -/* 006F */ 0x8F5C, 0x8F64, 0x5EEB, -/* 0070 */ 0x8F85, 0x8F8B, 0x5F32, -/* 0071 */ 0x8F90, 0x8F9E, 0x5F41, -/* 0072 */ 0x8FC7, 0x8FCC, 0x5FA2, -/* 0073 */ 0x8FD0, 0x8FD5, 0x5FAF, -/* 0074 */ 0x905F, 0x9065, 0x6044, -/* 0075 */ 0x90A2, 0x90A9, 0x60BD, -/* 0076 */ 0x90E5, 0x90F7, 0x612C, -/* 0077 */ 0x90F8, 0x90FE, 0x6140, -/* 0078 */ 0x9149, 0x914F, 0x6156, -/* 0079 */ 0x9158, 0x915E, 0x6169, -/* 007A */ 0x9164, 0x9176, 0x6178, -/* 007B */ 0x9180, 0x9186, 0x6196, -/* 007C */ 0x9187, 0x918F, 0x619E, -/* 007D */ 0x9192, 0x919B, 0x61AD, -/* 007E */ 0x919C, 0x91A1, 0x61B8, -/* 007F */ 0x91B1, 0x91C1, 0x61D5, -/* 0080 */ 0x91C2, 0x91CF, 0x61E7, -/* 0081 */ 0x91D0, 0x91D8, 0x61F6, -/* 0082 */ 0x91D9, 0x91DE, 0x6200, -/* 0083 */ 0x9247, 0x924D, 0x625C, -/* 0084 */ 0x9261, 0x9266, 0x628B, -/* 0085 */ 0x92AE, 0x92B3, 0x6333, -/* 0086 */ 0x92C2, 0x92C9, 0x6356, -/* 0087 */ 0x92EA, 0x92F0, 0x6399, -/* 0088 */ 0x934D, 0x9353, 0x63D7, -/* 0089 */ 0x9374, 0x9379, 0x6415, -/* 008A */ 0x9385, 0x938A, 0x642E, -/* 008B */ 0x9397, 0x939D, 0x644B, -/* 008C */ 0x93A7, 0x93AE, 0x645F, -/* 008D */ 0x93B3, 0x93BC, 0x646E, -/* 008E */ 0x93BD, 0x93C3, 0x647B, -/* 008F */ 0x93C6, 0x93CE, 0x6488, -/* 0090 */ 0x93F0, 0x93F6, 0x64C6, -/* 0091 */ 0x9448, 0x9460, 0x64E7, -/* 0092 */ 0x9461, 0x9468, 0x6501, -/* 0093 */ 0x9469, 0x9470, 0x650A, -/* 0094 */ 0x9476, 0x947E, 0x6519, -/* 0095 */ 0x94B5, 0x94C3, 0x6578, -/* 0096 */ 0x94DA, 0x94E1, 0x65B1, -/* 0097 */ 0x94F2, 0x94F9, 0x65D8, -/* 0098 */ 0x9573, 0x9579, 0x6644, -/* 0099 */ 0x95AF, 0x95B7, 0x669E, -/* 009A */ 0x95CA, 0x95E3, 0x66BF, -/* 009B */ 0x95E5, 0x95EC, 0x66DE, -/* 009C */ 0x95EF, 0x95F4, 0x66EA, -/* 009D */ 0x9650, 0x9655, 0x6720, -/* 009E */ 0x96A2, 0x96A9, 0x67B9, -/* 009F */ 0x96AB, 0x96B4, 0x67C5, -/* 00A0 */ 0x96C5, 0x96CC, 0x67F5, -/* 00A1 */ 0x96E0, 0x96E6, 0x6822, -/* 00A2 */ 0x96E7, 0x96ED, 0x682B, -/* 00A3 */ 0x96F9, 0x96FE, 0x6856, -/* 00A4 */ 0x9745, 0x974C, 0x686C, -/* 00A5 */ 0x974E, 0x9756, 0x6878, -/* 00A6 */ 0x9759, 0x9760, 0x6887, -/* 00A7 */ 0x9767, 0x9770, 0x6898, -/* 00A8 */ 0x9780, 0x9786, 0x68B9, -/* 00A9 */ 0x9788, 0x978D, 0x68C3, -/* 00AA */ 0x97A0, 0x97A9, 0x68E4, -/* 00AB */ 0x97C1, 0x97CC, 0x6913, -/* 00AC */ 0x97D0, 0x97D7, 0x6925, -/* 00AD */ 0x97E7, 0x97F7, 0x6943, -/* 00AE */ 0x985C, 0x9861, 0x698E, -/* 00AF */ 0x9866, 0x986F, 0x699D, -/* 00B0 */ 0x9883, 0x988A, 0x69C2, -/* 00B1 */ 0x9891, 0x9896, 0x69D5, -/* 00B2 */ 0x989A, 0x98A5, 0x69E1, -/* 00B3 */ 0x98AA, 0x98B3, 0x69F3, -/* 00B4 */ 0x98B5, 0x98BE, 0x6A00, -/* 00B5 */ 0x98BF, 0x98CA, 0x6A0B, -/* 00B6 */ 0x98CB, 0x98D0, 0x6A19, -/* 00B7 */ 0x98D2, 0x98D7, 0x6A22, -/* 00B8 */ 0x98E1, 0x98E7, 0x6A36, -/* 00B9 */ 0x98EF, 0x98F6, 0x6A48, -/* 00BA */ 0x98F7, 0x98FD, 0x6A51, -/* 00BB */ 0x9948, 0x9952, 0x6A66, -/* 00BC */ 0x9953, 0x9959, 0x6A72, -/* 00BD */ 0x9962, 0x996A, 0x6A85, -/* 00BE */ 0x9971, 0x9978, 0x6A98, -/* 00BF */ 0x9979, 0x997E, 0x6AA1, -/* 00C0 */ 0x9983, 0x99F5, 0x6AAD, -/* 00C1 */ 0x99F8, 0x99FE, 0x6B28, -/* 00C2 */ 0x9A54, 0x9A5F, 0x6B4D, -/* 00C3 */ 0x9A60, 0x9A67, 0x6B5A, -/* 00C4 */ 0x9A6A, 0x9A77, 0x6B6B, -/* 00C5 */ 0x9A8F, 0x9A96, 0x6BA2, -/* 00C6 */ 0x9A97, 0x9A9E, 0x6BAB, -/* 00C7 */ 0x9AA0, 0x9AA6, 0x6BB8, -/* 00C8 */ 0x9ABA, 0x9AC1, 0x6BE2, -/* 00C9 */ 0x9ACF, 0x9AD5, 0x6BFE, -/* 00CA */ 0x9BA2, 0x9BA7, 0x6D1F, -/* 00CB */ 0x9BF3, 0x9BF8, 0x6DB9, -/* 00CC */ 0x9C5D, 0x9C64, 0x6DFD, -/* 00CD */ 0x9C83, 0x9C8A, 0x6E3B, -/* 00CE */ 0x9C8B, 0x9C92, 0x6E45, -/* 00CF */ 0x9C9E, 0x9CA8, 0x6E60, -/* 00D0 */ 0x9CAB, 0x9CB9, 0x6E6F, -/* 00D1 */ 0x9CC5, 0x9CCB, 0x6E91, -/* 00D2 */ 0x9CF9, 0x9CFE, 0x6EEA, -/* 00D3 */ 0x9D48, 0x9D4F, 0x6EFA, -/* 00D4 */ 0x9D5D, 0x9D66, 0x6F16, -/* 00D5 */ 0x9D74, 0x9D7A, 0x6F37, -/* 00D6 */ 0x9D87, 0x9D90, 0x6F4E, -/* 00D7 */ 0x9D9B, 0x9DA0, 0x6F67, -/* 00D8 */ 0x9DAA, 0x9DB0, 0x6F7D, -/* 00D9 */ 0x9DB6, 0x9DC2, 0x6F8F, -/* 00DA */ 0x9DCC, 0x9DD6, 0x6FA8, -/* 00DB */ 0x9DDB, 0x9DE0, 0x6FBA, -/* 00DC */ 0x9DE2, 0x9DE7, 0x6FC3, -/* 00DD */ 0x9DE8, 0x9DEE, 0x6FCA, -/* 00DE */ 0x9DEF, 0x9DF9, 0x6FD3, -/* 00DF */ 0x9E40, 0x9E47, 0x6FE6, -/* 00E0 */ 0x9E48, 0x9E68, 0x6FF0, -/* 00E1 */ 0x9E69, 0x9E70, 0x7012, -/* 00E2 */ 0x9E71, 0x9E77, 0x701C, -/* 00E3 */ 0x9E78, 0x9E7E, 0x7024, -/* 00E4 */ 0x9E80, 0x9E89, 0x702B, -/* 00E5 */ 0x9E8D, 0x9E9E, 0x703A, -/* 00E6 */ 0x9EA1, 0x9EAE, 0x7050, -/* 00E7 */ 0x9EAF, 0x9EBA, 0x705F, -/* 00E8 */ 0x9ED7, 0x9EE3, 0x709E, -/* 00E9 */ 0x9EF1, 0x9EFD, 0x70CB, -/* 00EA */ 0x9F4A, 0x9F50, 0x70F0, -/* 00EB */ 0x9F55, 0x9F5F, 0x70FE, -/* 00EC */ 0x9F69, 0x9F73, 0x711B, -/* 00ED */ 0x9F74, 0x9F7B, 0x7127, -/* 00EE */ 0x9F81, 0x9F8E, 0x7137, -/* 00EF */ 0x9F95, 0x9FA1, 0x714F, -/* 00F0 */ 0x9FB8, 0x9FBD, 0x717E, -/* 00F1 */ 0x9FD3, 0x9FD9, 0x71A1, -/* 00F2 */ 0x9FDD, 0x9FE2, 0x71AD, -/* 00F3 */ 0x9FE7, 0x9FEF, 0x71BA, -/* 00F4 */ 0x9FF0, 0x9FF9, 0x71C4, -/* 00F5 */ 0xA040, 0xA049, 0x71D6, -/* 00F6 */ 0xA04F, 0xA054, 0x71E8, -/* 00F7 */ 0xA055, 0xA05E, 0x71EF, -/* 00F8 */ 0xA05F, 0xA06A, 0x71FA, -/* 00F9 */ 0xA06B, 0xA07E, 0x7207, -/* 00FA */ 0xA082, 0xA08B, 0x721E, -/* 00FB */ 0xA097, 0xA09D, 0x7240, -/* 00FC */ 0xA0CB, 0xA0D6, 0x7293, -/* 00FD */ 0xA0D7, 0xA0E2, 0x72A0, -/* 00FE */ 0xA0E8, 0xA0EE, 0x72BA, -/* 00FF */ 0xA1B4, 0xA1BB, 0x3008, -/* 0100 */ 0xA2A1, 0xA2AA, 0x2170, -/* 0101 */ 0xA2B1, 0xA2C4, 0x2488, -/* 0102 */ 0xA2C5, 0xA2D8, 0x2474, -/* 0103 */ 0xA2D9, 0xA2E2, 0x2460, -/* 0104 */ 0xA2E5, 0xA2EE, 0x3220, -/* 0105 */ 0xA2F1, 0xA2FC, 0x2160, -/* 0106 */ 0xA3A5, 0xA3FD, 0xFF05, -/* 0107 */ 0xA4A1, 0xA4F3, 0x3041, -/* 0108 */ 0xA5A1, 0xA5F6, 0x30A1, -/* 0109 */ 0xA6A1, 0xA6B1, 0x0391, -/* 010A */ 0xA6B2, 0xA6B8, 0x03A3, -/* 010B */ 0xA6C1, 0xA6D1, 0x03B1, -/* 010C */ 0xA6D2, 0xA6D8, 0x03C3, -/* 010D */ 0xA7A1, 0xA7A6, 0x0410, -/* 010E */ 0xA7A8, 0xA7C1, 0x0416, -/* 010F */ 0xA7D1, 0xA7D6, 0x0430, -/* 0110 */ 0xA7D8, 0xA7F1, 0x0436, -/* 0111 */ 0xA854, 0xA877, 0x2550, -/* 0112 */ 0xA878, 0xA87E, 0x2581, -/* 0113 */ 0xA880, 0xA887, 0x2588, -/* 0114 */ 0xA8C5, 0xA8E9, 0x3105, -/* 0115 */ 0xA940, 0xA948, 0x3021, -/* 0116 */ 0xA968, 0xA971, 0xFE49, -/* 0117 */ 0xA976, 0xA97E, 0xFE59, -/* 0118 */ 0xA9A4, 0xA9EF, 0x2500, -/* 0119 */ 0xAA43, 0xAA48, 0x72E2, -/* 011A */ 0xAA53, 0xAA58, 0x7304, -/* 011B */ 0xAA76, 0xAA7E, 0x7340, -/* 011C */ 0xAA8B, 0xAA92, 0x7358, -/* 011D */ 0xAA93, 0xAA9D, 0x7361, -/* 011E */ 0xAB40, 0xAB4B, 0x7372, -/* 011F */ 0xAB66, 0xAB6B, 0x73A3, -/* 0120 */ 0xAB83, 0xAB89, 0x73D2, -/* 0121 */ 0xAC40, 0xAC4A, 0x73F8, -/* 0122 */ 0xAC52, 0xAC5A, 0x7411, -/* 0123 */ 0xAC5B, 0xAC60, 0x741C, -/* 0124 */ 0xAC73, 0xAC7E, 0x7442, -/* 0125 */ 0xAC80, 0xAC86, 0x744E, -/* 0126 */ 0xAC8A, 0xAC96, 0x7460, -/* 0127 */ 0xAD4E, 0xAD58, 0x7491, -/* 0128 */ 0xAD5A, 0xAD61, 0x749F, -/* 0129 */ 0xAD62, 0xAD71, 0x74AA, -/* 012A */ 0xAD72, 0xAD7E, 0x74BB, -/* 012B */ 0xAD80, 0xAD89, 0x74C8, -/* 012C */ 0xAD8A, 0xAD92, 0x74D3, -/* 012D */ 0xAD97, 0xAD9D, 0x74E7, -/* 012E */ 0xAE42, 0xAE48, 0x74F8, -/* 012F */ 0xAE4D, 0xAE54, 0x7505, -/* 0130 */ 0xAE80, 0xAE87, 0x755D, -/* 0131 */ 0xAE8B, 0xAE91, 0x756B, -/* 0132 */ 0xB040, 0xB046, 0x7645, -/* 0133 */ 0xB047, 0xB04C, 0x764E, -/* 0134 */ 0xB058, 0xB05E, 0x7664, -/* 0135 */ 0xB062, 0xB069, 0x7670, -/* 0136 */ 0xB080, 0xB087, 0x769C, -/* 0137 */ 0xB088, 0xB090, 0x76A5, -/* 0138 */ 0xB094, 0xB09D, 0x76B5, -/* 0139 */ 0xB151, 0xB158, 0x76E6, -/* 013A */ 0xB169, 0xB173, 0x770E, -/* 013B */ 0xB190, 0xB197, 0x7748, -/* 013C */ 0xB198, 0xB19F, 0x7752, -/* 013D */ 0xB248, 0xB253, 0x776D, -/* 013E */ 0xB25A, 0xB25F, 0x7786, -/* 013F */ 0xB262, 0xB26D, 0x7793, -/* 0140 */ 0xB282, 0xB28E, 0x77C0, -/* 0141 */ 0xB28F, 0xB297, 0x77CE, -/* 0142 */ 0xB34E, 0xB353, 0x7803, -/* 0143 */ 0xB382, 0xB38D, 0x785E, -/* 0144 */ 0xB38E, 0xB395, 0x786F, -/* 0145 */ 0xB39A, 0xB3A0, 0x787D, -/* 0146 */ 0xB453, 0xB45A, 0x78A8, -/* 0147 */ 0xB475, 0xB47E, 0x78DA, -/* 0148 */ 0xB491, 0xB496, 0x78FB, -/* 0149 */ 0xB49A, 0xB4A0, 0x7906, -/* 014A */ 0xB540, 0xB545, 0x790D, -/* 014B */ 0xB546, 0xB54F, 0x7914, -/* 014C */ 0xB555, 0xB563, 0x7925, -/* 014D */ 0xB570, 0xB578, 0x794A, -/* 014E */ 0xB587, 0xB58D, 0x7970, -/* 014F */ 0xB640, 0xB646, 0x7993, -/* 0150 */ 0xB647, 0xB652, 0x799B, -/* 0151 */ 0xB653, 0xB65D, 0x79A8, -/* 0152 */ 0xB673, 0xB678, 0x79D9, -/* 0153 */ 0xB682, 0xB688, 0x79F1, -/* 0154 */ 0xB744, 0xB752, 0x7A24, -/* 0155 */ 0xB759, 0xB75E, 0x7A40, -/* 0156 */ 0xB75F, 0xB768, 0x7A47, -/* 0157 */ 0xB76E, 0xB77E, 0x7A58, -/* 0158 */ 0xB780, 0xB786, 0x7A69, -/* 0159 */ 0xB84B, 0xB855, 0x7AB4, -/* 015A */ 0xB856, 0xB860, 0x7AC0, -/* 015B */ 0xB861, 0xB86A, 0x7ACC, -/* 015C */ 0xB874, 0xB879, 0x7AE7, -/* 015D */ 0xB94A, 0xB94F, 0x7B3F, -/* 015E */ 0xB95D, 0xB967, 0x7B63, -/* 015F */ 0xB976, 0xB97C, 0x7B86, -/* 0160 */ 0xB996, 0xB99D, 0x7BB9, -/* 0161 */ 0xBA69, 0xBA70, 0x7BFF, -/* 0162 */ 0xBA76, 0xBA7B, 0x7C10, -/* 0163 */ 0xBA85, 0xBA8A, 0x7C20, -/* 0164 */ 0xBA8D, 0xBA99, 0x7C2B, -/* 0165 */ 0xBA9A, 0xBA9F, 0x7C39, -/* 0166 */ 0xBB40, 0xBB49, 0x7C43, -/* 0167 */ 0xBB4A, 0xBB6E, 0x7C4E, -/* 0168 */ 0xBB6F, 0xBB74, 0x7C75, -/* 0169 */ 0xBB75, 0xBB7E, 0x7C7E, -/* 016A */ 0xBB81, 0xBB87, 0x7C8A, -/* 016B */ 0xBC48, 0xBC4E, 0x7CCE, -/* 016C */ 0xBC54, 0xBC5A, 0x7CE1, -/* 016D */ 0xBC5B, 0xBC60, 0x7CE9, -/* 016E */ 0xBC61, 0xBC68, 0x7CF0, -/* 016F */ 0xBC6B, 0xBC78, 0x7CFC, -/* 0170 */ 0xBC79, 0xBC7E, 0x7D0B, -/* 0171 */ 0xBC80, 0xBC8E, 0x7D11, -/* 0172 */ 0xBC9A, 0xBCA0, 0x7D30, -/* 0173 */ 0xBD40, 0xBD76, 0x7D37, -/* 0174 */ 0xBD77, 0xBD7E, 0x7D6F, -/* 0175 */ 0xBD80, 0xBDA0, 0x7D78, -/* 0176 */ 0xBE40, 0xBE4C, 0x7D99, -/* 0177 */ 0xBE4D, 0xBE53, 0x7DA7, -/* 0178 */ 0xBE54, 0xBE7E, 0x7DAF, -/* 0179 */ 0xBE80, 0xBEA0, 0x7DDA, -/* 017A */ 0xBF40, 0xBF7E, 0x7DFB, -/* 017B */ 0xBF8B, 0xBFA0, 0x7E48, -/* 017C */ 0xC040, 0xC063, 0x7E5E, -/* 017D */ 0xC064, 0xC07B, 0x7E83, -/* 017E */ 0xC08D, 0xC093, 0x7F3B, -/* 017F */ 0xC095, 0xC09E, 0x7F46, -/* 0180 */ 0xC15C, 0xC163, 0x7F82, -/* 0181 */ 0xC177, 0xC17D, 0x7FA8, -/* 0182 */ 0xC199, 0xC19E, 0x7FD9, -/* 0183 */ 0xC249, 0xC24F, 0x7FF4, -/* 0184 */ 0xC264, 0xC269, 0x802B, -/* 0185 */ 0xC281, 0xC28E, 0x805B, -/* 0186 */ 0xC28F, 0xC294, 0x806B, -/* 0187 */ 0xC295, 0xC2A0, 0x8072, -/* 0188 */ 0xC346, 0xC34B, 0x808D, -/* 0189 */ 0xC363, 0xC369, 0x80CF, -/* 018A */ 0xC387, 0xC393, 0x811F, -/* 018B */ 0xC440, 0xC445, 0x8140, -/* 018C */ 0xC470, 0xC475, 0x8192, -/* 018D */ 0xC482, 0xC489, 0x81AB, -/* 018E */ 0xC48A, 0xC48F, 0x81B4, -/* 018F */ 0xC49A, 0xC4A0, 0x81CD, -/* 0190 */ 0xC540, 0xC54E, 0x81D4, -/* 0191 */ 0xC55A, 0xC55F, 0x81F5, -/* 0192 */ 0xC56C, 0xC571, 0x8215, -/* 0193 */ 0xC58B, 0xC592, 0x8250, -/* 0194 */ 0xC598, 0xC59F, 0x8260, -/* 0195 */ 0xC68F, 0xC698, 0x831D, -/* 0196 */ 0xC754, 0xC75A, 0x8370, -/* 0197 */ 0xC75D, 0xC763, 0x837E, -/* 0198 */ 0xC775, 0xC77B, 0x83A1, -/* 0199 */ 0xC854, 0xC859, 0x8412, -/* 019A */ 0xC85D, 0xC862, 0x841E, -/* 019B */ 0xC863, 0xC86A, 0x8429, -/* 019C */ 0xC86B, 0xC870, 0x8432, -/* 019D */ 0xC874, 0xC87B, 0x843E, -/* 019E */ 0xC880, 0xC886, 0x844A, -/* 019F */ 0xC94B, 0xC952, 0x848F, -/* 01A0 */ 0xC95A, 0xC966, 0x84A2, -/* 01A1 */ 0xC991, 0xC99B, 0x84F1, -/* 01A2 */ 0xCA40, 0xCA48, 0x8503, -/* 01A3 */ 0xCA58, 0xCA60, 0x8522, -/* 01A4 */ 0xCA61, 0xCA6A, 0x852D, -/* 01A5 */ 0xCA74, 0xCA7E, 0x854B, -/* 01A6 */ 0xCA8E, 0xCA96, 0x8569, -/* 01A7 */ 0xCB43, 0xCB49, 0x8588, -/* 01A8 */ 0xCB4A, 0xCB54, 0x8590, -/* 01A9 */ 0xCB55, 0xCB5B, 0x859D, -/* 01AA */ 0xCB63, 0xCB68, 0x85B1, -/* 01AB */ 0xCB6A, 0xCB70, 0x85BA, -/* 01AC */ 0xCB71, 0xCB77, 0x85C2, -/* 01AD */ 0xCB81, 0xCB86, 0x85D6, -/* 01AE */ 0xCB87, 0xCB8D, 0x85DD, -/* 01AF */ 0xCB92, 0xCBA0, 0x85EA, -/* 01B0 */ 0xCC4A, 0xCC54, 0x8606, -/* 01B1 */ 0xCC59, 0xCC68, 0x8617, -/* 01B2 */ 0xCC6A, 0xCC77, 0x862A, -/* 01B3 */ 0xCC80, 0xCC8B, 0x8641, -/* 01B4 */ 0xCC99, 0xCCA0, 0x8663, -/* 01B5 */ 0xCD43, 0xCD49, 0x8672, -/* 01B6 */ 0xCD4A, 0xCD50, 0x8683, -/* 01B7 */ 0xCD57, 0xCD5C, 0x8696, -/* 01B8 */ 0xCE58, 0xCE5E, 0x8740, -/* 01B9 */ 0xCE6A, 0xCE6F, 0x875A, -/* 01BA */ 0xCE72, 0xCE79, 0x8766, -/* 01BB */ 0xCE95, 0xCE9B, 0x8798, -/* 01BC */ 0xCF5F, 0xCF65, 0x87D4, -/* 01BD */ 0xCF75, 0xCF7E, 0x87EF, -/* 01BE */ 0xCF88, 0xCF8D, 0x8804, -/* 01BF */ 0xCF8E, 0xCF95, 0x880B, -/* 01C0 */ 0xD040, 0xD04D, 0x8824, -/* 01C1 */ 0xD04E, 0xD053, 0x8833, -/* 01C2 */ 0xD05C, 0xD061, 0x8846, -/* 01C3 */ 0xD062, 0xD067, 0x884E, -/* 01C4 */ 0xD06B, 0xD071, 0x885A, -/* 01C5 */ 0xD09B, 0xD0A0, 0x88A5, -/* 01C6 */ 0xD168, 0xD16E, 0x88E9, -/* 01C7 */ 0xD179, 0xD17E, 0x8903, -/* 01C8 */ 0xD240, 0xD248, 0x8938, -/* 01C9 */ 0xD24B, 0xD263, 0x8945, -/* 01CA */ 0xD264, 0xD269, 0x8960, -/* 01CB */ 0xD26A, 0xD27D, 0x8967, -/* 01CC */ 0xD286, 0xD2A0, 0x8987, -/* 01CD */ 0xD340, 0xD35E, 0x89A2, -/* 01CE */ 0xD378, 0xD37E, 0x89F4, -/* 01CF */ 0xD385, 0xD38A, 0x8A01, -/* 01D0 */ 0xD38B, 0xD3A0, 0x8A08, -/* 01D1 */ 0xD440, 0xD45F, 0x8A1E, -/* 01D2 */ 0xD460, 0xD468, 0x8A3F, -/* 01D3 */ 0xD469, 0xD47E, 0x8A49, -/* 01D4 */ 0xD480, 0xD499, 0x8A5F, -/* 01D5 */ 0xD49A, 0xD4A0, 0x8A7A, -/* 01D6 */ 0xD540, 0xD547, 0x8A81, -/* 01D7 */ 0xD548, 0xD54F, 0x8A8B, -/* 01D8 */ 0xD550, 0xD57E, 0x8A94, -/* 01D9 */ 0xD580, 0xD5A0, 0x8AC3, -/* 01DA */ 0xD640, 0xD662, 0x8AE4, -/* 01DB */ 0xD663, 0xD67E, 0x8B08, -/* 01DC */ 0xD682, 0xD6A0, 0x8B27, -/* 01DD */ 0xD740, 0xD75F, 0x8B46, -/* 01DE */ 0xD765, 0xD77E, 0x8B6D, -/* 01DF */ 0xD780, 0xD798, 0x8B87, -/* 01E0 */ 0xD840, 0xD848, 0x8C38, -/* 01E1 */ 0xD850, 0xD857, 0x8C4D, -/* 01E2 */ 0xD85C, 0xD861, 0x8C5B, -/* 01E3 */ 0xD862, 0xD868, 0x8C63, -/* 01E4 */ 0xD869, 0xD86F, 0x8C6C, -/* 01E5 */ 0xD874, 0xD87A, 0x8C7B, -/* 01E6 */ 0xD882, 0xD888, 0x8C8D, -/* 01E7 */ 0xD88C, 0xD8A0, 0x8C99, -/* 01E8 */ 0xD940, 0xD97E, 0x8CAE, -/* 01E9 */ 0xD980, 0xD9A0, 0x8CED, -/* 01EA */ 0xDA40, 0xDA4E, 0x8D0E, -/* 01EB */ 0xDA5D, 0xDA65, 0x8D78, -/* 01EC */ 0xDA73, 0xDA7C, 0x8D95, -/* 01ED */ 0xDA81, 0xDA8D, 0x8DA4, -/* 01EE */ 0xDB53, 0xDB59, 0x8DFE, -/* 01EF */ 0xDB64, 0xDB6B, 0x8E15, -/* 01F0 */ 0xDB89, 0xDB8E, 0x8E53, -/* 01F1 */ 0xDB8F, 0xDB9A, 0x8E5A, -/* 01F2 */ 0xDC4E, 0xDC54, 0x8E88, -/* 01F3 */ 0xDC58, 0xDC5E, 0x8E95, -/* 01F4 */ 0xDC60, 0xDC6B, 0x8E9F, -/* 01F5 */ 0xDC70, 0xDC76, 0x8EB3, -/* 01F6 */ 0xDC77, 0xDC7E, 0x8EBB, -/* 01F7 */ 0xDC80, 0xDC8A, 0x8EC3, -/* 01F8 */ 0xDC8B, 0xDCA0, 0x8ECF, -/* 01F9 */ 0xDD40, 0xDD7E, 0x8EE5, -/* 01FA */ 0xDD80, 0xDDA0, 0x8F24, -/* 01FB */ 0xDE40, 0xDE60, 0x8F45, -/* 01FC */ 0xDF45, 0xDF4A, 0x9027, -/* 01FD */ 0xDF64, 0xDF69, 0x905C, -/* 01FE */ 0xDF76, 0xDF7C, 0x9076, -/* 01FF */ 0xE068, 0xE07B, 0x9105, -/* 0200 */ 0xE084, 0xE08E, 0x9124, -/* 0201 */ 0xE090, 0xE096, 0x9132, -/* 0202 */ 0xE097, 0xE09F, 0x913A, -/* 0203 */ 0xE161, 0xE167, 0x9193, -/* 0204 */ 0xE168, 0xE16D, 0x919C, -/* 0205 */ 0xE16E, 0xE173, 0x91A4, -/* 0206 */ 0xE180, 0xE18A, 0x91BC, -/* 0207 */ 0xE18E, 0xE197, 0x91D2, -/* 0208 */ 0xE198, 0xE1A0, 0x91DD, -/* 0209 */ 0xE240, 0xE27E, 0x91E6, -/* 020A */ 0xE280, 0xE2A0, 0x9225, -/* 020B */ 0xE2BC, 0xE2C1, 0x9967, -/* 020C */ 0xE340, 0xE36D, 0x9246, -/* 020D */ 0xE36E, 0xE37E, 0x9275, -/* 020E */ 0xE380, 0xE387, 0x9286, -/* 020F */ 0xE388, 0xE3A0, 0x928F, -/* 0210 */ 0xE440, 0xE445, 0x92A8, -/* 0211 */ 0xE446, 0xE45E, 0x92AF, -/* 0212 */ 0xE45F, 0xE47E, 0x92C9, -/* 0213 */ 0xE480, 0xE4A0, 0x92E9, -/* 0214 */ 0xE540, 0xE573, 0x930A, -/* 0215 */ 0xE574, 0xE57E, 0x933F, -/* 0216 */ 0xE580, 0xE59F, 0x934A, -/* 0217 */ 0xE640, 0xE662, 0x936C, -/* 0218 */ 0xE663, 0xE67E, 0x9390, -/* 0219 */ 0xE680, 0xE69D, 0x93AC, -/* 021A */ 0xE740, 0xE747, 0x93CE, -/* 021B */ 0xE748, 0xE77E, 0x93D7, -/* 021C */ 0xE780, 0xE7A0, 0x940E, -/* 021D */ 0xE7CA, 0xE7D0, 0x7F21, -/* 021E */ 0xE840, 0xE84E, 0x942F, -/* 021F */ 0xE84F, 0xE87A, 0x943F, -/* 0220 */ 0xE880, 0xE894, 0x9470, -/* 0221 */ 0xE94C, 0xE953, 0x9577, -/* 0222 */ 0xE954, 0xE97E, 0x9580, -/* 0223 */ 0xE980, 0xE9A0, 0x95AB, -/* 0224 */ 0xEA40, 0xEA5B, 0x95CC, -/* 0225 */ 0xEA64, 0xEA6A, 0x9623, -/* 0226 */ 0xEA91, 0xEA9D, 0x9678, -/* 0227 */ 0xEB49, 0xEB52, 0x969D, -/* 0228 */ 0xEB53, 0xEB5A, 0x96A8, -/* 0229 */ 0xEB6D, 0xEB76, 0x96D6, -/* 022A */ 0xEB77, 0xEB7D, 0x96E1, -/* 022B */ 0xEC40, 0xEC48, 0x9721, -/* 022C */ 0xEC57, 0xEC69, 0x973F, -/* 022D */ 0xEC77, 0xEC7E, 0x976A, -/* 022E */ 0xEC87, 0xEC8E, 0x977D, -/* 022F */ 0xED44, 0xED4A, 0x97A4, -/* 0230 */ 0xED50, 0xED7E, 0x97B5, -/* 0231 */ 0xED89, 0xEDA0, 0x97F7, -/* 0232 */ 0xEE40, 0xEE7E, 0x980F, -/* 0233 */ 0xEE80, 0xEEA0, 0x984E, -/* 0234 */ 0xEEE6, 0xEEEC, 0x94C8, -/* 0235 */ 0xEF40, 0xEF45, 0x986F, -/* 0236 */ 0xEF4C, 0xEF71, 0x98A8, -/* 0237 */ 0xEF82, 0xEFA0, 0x98E9, -/* 0238 */ 0xEFE4, 0xEFEC, 0x9564, -/* 0239 */ 0xF047, 0xF063, 0x9911, -/* 023A */ 0xF064, 0xF07E, 0x992F, -/* 023B */ 0xF080, 0xF089, 0x994A, -/* 023C */ 0xF08A, 0xF096, 0x9956, -/* 023D */ 0xF0D0, 0xF0D6, 0x9E66, -/* 023E */ 0xF142, 0xF14C, 0x999A, -/* 023F */ 0xF14F, 0xF17E, 0x99A9, -/* 0240 */ 0xF180, 0xF1A0, 0x99D9, -/* 0241 */ 0xF240, 0xF27E, 0x99FA, -/* 0242 */ 0xF280, 0xF2A0, 0x9A39, -/* 0243 */ 0xF340, 0xF351, 0x9A5A, -/* 0244 */ 0xF35B, 0xF361, 0x9AA9, -/* 0245 */ 0xF38D, 0xF395, 0x9AF0, -/* 0246 */ 0xF397, 0xF39D, 0x9AFC, -/* 0247 */ 0xF441, 0xF446, 0x9B09, -/* 0248 */ 0xF44A, 0xF454, 0x9B14, -/* 0249 */ 0xF458, 0xF462, 0x9B24, -/* 024A */ 0xF465, 0xF46C, 0x9B33, -/* 024B */ 0xF479, 0xF47E, 0x9B55, -/* 024C */ 0xF480, 0xF4A0, 0x9B5B, -/* 024D */ 0xF540, 0xF57E, 0x9B7C, -/* 024E */ 0xF580, 0xF5A0, 0x9BBB, -/* 024F */ 0xF640, 0xF67E, 0x9BDC, -/* 0250 */ 0xF680, 0xF6A0, 0x9C1B, -/* 0251 */ 0xF6B5, 0xF6BA, 0x9F85, -/* 0252 */ 0xF6DF, 0xF6E4, 0x9C9E, -/* 0253 */ 0xF6ED, 0xF6F4, 0x9CB0, -/* 0254 */ 0xF740, 0xF77E, 0x9C3C, -/* 0255 */ 0xF840, 0xF87E, 0x9CE3, -/* 0256 */ 0xF880, 0xF8A0, 0x9D22, -/* 0257 */ 0xF940, 0xF97E, 0x9D43, -/* 0258 */ 0xF980, 0xF9A0, 0x9D82, -/* 0259 */ 0xFA40, 0xFA7E, 0x9DA3, -/* 025A */ 0xFA80, 0xFAA0, 0x9DE2, -/* 025B */ 0xFB40, 0xFB5B, 0x9E03, -/* 025C */ 0xFB74, 0xFB7D, 0x9E74, -/* 025D */ 0xFB87, 0xFB8C, 0x9E8C, -/* 025E */ 0xFB8D, 0xFB95, 0x9E94, -/* 025F */ 0xFB97, 0xFB9C, 0x9EA0, -/* 0260 */ 0xFC40, 0xFC48, 0x9EAB, -/* 0261 */ 0xFC6D, 0xFC75, 0x9EF0, -/* 0262 */ 0xFC78, 0xFC7E, 0x9EFF, -/* 0263 */ 0xFC8D, 0xFC92, 0x9F1A, -/* 0264 */ 0xFC94, 0xFC9C, 0x9F23, -/* 0265 */ 0xFD4D, 0xFD57, 0x9F45, -/* 0266 */ 0xFD58, 0xFD7E, 0x9F52, -/* 0267 */ 0xFD80, 0xFD85, 0x9F79, -/* 0268 */ 0xFD88, 0xFD93, 0x9F8D, -/* 0269 */ 0x8140, 0x816B, 0x0000, -/* 026A */ 0x817D, 0x81FE, 0x002C, -/* 026B */ 0x8240, 0x8272, 0x00AE, -/* 026C */ 0x8280, 0x8290, 0x00E1, -/* 026D */ 0x829C, 0x82B2, 0x00F2, -/* 026E */ 0x82CA, 0x82D8, 0x0109, -/* 026F */ 0x82EE, 0x82FE, 0x0118, -/* 0270 */ 0x8358, 0x835A, 0x0129, -/* 0271 */ 0x8366, 0x8381, 0x012C, -/* 0272 */ 0x83B3, 0x83F8, 0x0148, -/* 0273 */ 0x8440, 0x84DE, 0x018E, -/* 0274 */ 0x84F2, 0x84FE, 0x022D, -/* 0275 */ 0x8540, 0x85FE, 0x023A, -/* 0276 */ 0x8640, 0x86C0, 0x02F9, -/* 0277 */ 0x86D1, 0x86FE, 0x037A, -/* 0278 */ 0x8740, 0x8764, 0x03A8, -/* 0279 */ 0x8771, 0x878F, 0x03CD, -/* 027A */ 0x879F, 0x87A1, 0x03EC, -/* 027B */ 0x87C3, 0x87C6, 0x03EF, -/* 027C */ 0x87DD, 0x87F7, 0x03F3, -/* 027D */ 0x884A, 0x889F, 0x040E, -/* 027E */ 0x88B0, 0x88F6, 0x0464, -/* 027F */ 0x894D, 0x8964, 0x04AB, -/* 0280 */ 0x8976, 0x898C, 0x04C3, -/* 0281 */ 0x89A7, 0x89AD, 0x04DA, -/* 0282 */ 0x89B9, 0x89BB, 0x04E1, -/* 0283 */ 0x89D0, 0x89FE, 0x04E4, -/* 0284 */ 0x8A40, 0x8A55, 0x0513, -/* 0285 */ 0x8A63, 0x8AAA, 0x0529, -/* 0286 */ 0x8AB7, 0x8AF8, 0x0571, -/* 0287 */ 0x8B40, 0x8B55, 0x05B3, -/* 0288 */ 0x8B7D, 0x8BAF, 0x05C9, -/* 0289 */ 0x8BED, 0x8BEF, 0x05FC, -/* 028A */ 0x8C48, 0x8CFE, 0x05FF, -/* 028B */ 0x8D40, 0x8D4E, 0x06B6, -/* 028C */ 0x8D68, 0x8DA3, 0x06C5, -/* 028D */ 0x8DB4, 0x8DB5, 0x0701, -/* 028E */ 0x8DC1, 0x8DC3, 0x0703, -/* 028F */ 0x8DCF, 0x8DD5, 0x0706, -/* 0290 */ 0x8DF9, 0x8DFE, 0x070D, -/* 0291 */ 0x8E77, 0x8EAE, 0x0713, -/* 0292 */ 0x8EBC, 0x8EC4, 0x074B, -/* 0293 */ 0x8ED4, 0x8EF7, 0x0754, -/* 0294 */ 0x8F40, 0x8F4E, 0x0778, -/* 0295 */ 0x8F5B, 0x8F8F, 0x0787, -/* 0296 */ 0x8F9F, 0x8FFE, 0x07BC, -/* 0297 */ 0x9040, 0x90E4, 0x081C, -/* 0298 */ 0x9140, 0x9163, 0x08C1, -/* 0299 */ 0x9177, 0x917E, 0x08E5, -/* 029A */ 0x9190, 0x9191, 0x08ED, -/* 029B */ 0x91A2, 0x91B0, 0x08EF, -/* 029C */ 0x91DF, 0x91FE, 0x08FE, -/* 029D */ 0x9240, 0x92FE, 0x091E, -/* 029E */ 0x9340, 0x93B2, 0x09DD, -/* 029F */ 0x93C4, 0x93FE, 0x0A50, -/* 02A0 */ 0x9440, 0x9447, 0x0A8B, -/* 02A1 */ 0x9471, 0x94B4, 0x0A93, -/* 02A2 */ 0x94C4, 0x94FE, 0x0AD7, -/* 02A3 */ 0x9540, 0x95C9, 0x0B12, -/* 02A4 */ 0x95E4, 0x95FE, 0x0B9C, -/* 02A5 */ 0x9640, 0x96DF, 0x0BB7, -/* 02A6 */ 0x96EE, 0x96F8, 0x0C57, -/* 02A7 */ 0x9740, 0x97C0, 0x0C62, -/* 02A8 */ 0x97CD, 0x97E6, 0x0CE3, -/* 02A9 */ 0x97F8, 0x97FE, 0x0CFD, -/* 02AA */ 0x9840, 0x9899, 0x0D04, -/* 02AB */ 0x98A6, 0x98B4, 0x0D5E, -/* 02AC */ 0x98D1, 0x98EE, 0x0D6D, -/* 02AD */ 0x98FE, 0x0000, 0x6A5A, -/* 02AE */ 0x9940, 0x9947, 0x0D8B, -/* 02AF */ 0x995A, 0x9970, 0x0D93, -/* 02B0 */ 0x9980, 0x9982, 0x0DAA, -/* 02B1 */ 0x99F6, 0x99F7, 0x0DAD, -/* 02B2 */ 0x9A40, 0x9A53, 0x0DAF, -/* 02B3 */ 0x9A68, 0x9A69, 0x0DC3, -/* 02B4 */ 0x9A78, 0x9A8E, 0x0DC5, -/* 02B5 */ 0x9A9F, 0x9AFE, 0x0DDC, -/* 02B6 */ 0x9B40, 0x9BFE, 0x0E3C, -/* 02B7 */ 0x9C40, 0x9C82, 0x0EFB, -/* 02B8 */ 0x9C93, 0x9C9D, 0x0F3E, -/* 02B9 */ 0x9CA9, 0x9CAA, 0x0F49, -/* 02BA */ 0x9CBA, 0x9CF8, 0x0F4B, -/* 02BB */ 0x9D40, 0x9DB5, 0x0F8A, -/* 02BC */ 0x9DC3, 0x9DCB, 0x1000, -/* 02BD */ 0x9DD7, 0x9DE1, 0x1009, -/* 02BE */ 0x9DFA, 0x9DFE, 0x1014, -/* 02BF */ 0x9E8A, 0x9E8C, 0x1019, -/* 02C0 */ 0x9E9F, 0x9EA0, 0x101C, -/* 02C1 */ 0x9EBB, 0x9ED6, 0x101E, -/* 02C2 */ 0x9EE4, 0x9EF0, 0x103A, -/* 02C3 */ 0x9EFE, 0x0000, 0x70DA, -/* 02C4 */ 0x9F40, 0x9F54, 0x1047, -/* 02C5 */ 0x9F60, 0x9F68, 0x105C, -/* 02C6 */ 0x9F7C, 0x9F80, 0x1065, -/* 02C7 */ 0x9F8F, 0x9F94, 0x106A, -/* 02C8 */ 0x9FA2, 0x9FE6, 0x1070, -/* 02C9 */ 0x9FFA, 0x9FFE, 0x10B5, -/* 02CA */ 0xA04A, 0xA04E, 0x10BA, -/* 02CB */ 0xA080, 0xA0CA, 0x10BF, -/* 02CC */ 0xA0E3, 0xA0FE, 0x110A, -/* 02CD */ 0xA1A1, 0xA1FE, 0x1126, -/* 02CE */ 0xA3A1, 0xA3A4, 0x1184, -/* 02CF */ 0xA3FE, 0x0000, 0xFFE3, -/* 02D0 */ 0xA6E0, 0xA6F5, 0x1188, -/* 02D1 */ 0xA7A7, 0x0000, 0x0401, -/* 02D2 */ 0xA7D7, 0x0000, 0x0451, -/* 02D3 */ 0xA840, 0xA853, 0x119E, -/* 02D4 */ 0xA888, 0xA895, 0x11B2, -/* 02D5 */ 0xA8A1, 0xA8C0, 0x11C0, -/* 02D6 */ 0xA949, 0xA988, 0x11E0, -/* 02D7 */ 0xA996, 0x0000, 0x3007, -/* 02D8 */ 0xAA40, 0xAA8A, 0x1220, -/* 02D9 */ 0xAA9E, 0xAAA0, 0x126B, -/* 02DA */ 0xAB4C, 0xABA0, 0x126E, -/* 02DB */ 0xAC4B, 0xAC51, 0x12C3, -/* 02DC */ 0xAC61, 0xAC72, 0x12CA, -/* 02DD */ 0xAC87, 0xAC89, 0x12DC, -/* 02DE */ 0xAC97, 0xACA0, 0x12DF, -/* 02DF */ 0xAD40, 0xAD4D, 0x12E9, -/* 02E0 */ 0xAD59, 0x0000, 0x749D, -/* 02E1 */ 0xAD93, 0xADA0, 0x12F7, -/* 02E2 */ 0xAE40, 0xAEA0, 0x1305, -/* 02E3 */ 0xAF40, 0xAFA0, 0x1366, -/* 02E4 */ 0xB04D, 0xB07E, 0x13C7, -/* 02E5 */ 0xB091, 0xB0FE, 0x13F9, -/* 02E6 */ 0xB140, 0xB168, 0x1467, -/* 02E7 */ 0xB174, 0xB18F, 0x1490, -/* 02E8 */ 0xB1A0, 0xB1FE, 0x14AC, -/* 02E9 */ 0xB240, 0xB247, 0x150B, -/* 02EA */ 0xB254, 0xB261, 0x1513, -/* 02EB */ 0xB26E, 0xB281, 0x1521, -/* 02EC */ 0xB298, 0xB2FE, 0x1535, -/* 02ED */ 0xB340, 0xB381, 0x159C, -/* 02EE */ 0xB396, 0xB3FE, 0x15DE, -/* 02EF */ 0xB440, 0xB474, 0x1647, -/* 02F0 */ 0xB480, 0xB4FE, 0x167C, -/* 02F1 */ 0xB550, 0xB554, 0x16FB, -/* 02F2 */ 0xB564, 0xB5FE, 0x1700, -/* 02F3 */ 0xB65E, 0xB6FE, 0x179B, -/* 02F4 */ 0xB740, 0xB743, 0x183C, -/* 02F5 */ 0xB753, 0xB758, 0x1840, -/* 02F6 */ 0xB769, 0xB76D, 0x1846, -/* 02F7 */ 0xB787, 0xB7FE, 0x184B, -/* 02F8 */ 0xB840, 0xB84A, 0x18C3, -/* 02F9 */ 0xB86B, 0xB8FE, 0x18CE, -/* 02FA */ 0xB940, 0xB95C, 0x1962, -/* 02FB */ 0xB968, 0xB9FE, 0x197F, -/* 02FC */ 0xBA40, 0xBA8C, 0x1A16, -/* 02FD */ 0xBAA0, 0xBAFE, 0x1A63, -/* 02FE */ 0xBB80, 0xBBFE, 0x1AC2, -/* 02FF */ 0xBC40, 0xBC53, 0x1B41, -/* 0300 */ 0xBC69, 0xBC6A, 0x1B55, -/* 0301 */ 0xBC8F, 0xBCFE, 0x1B57, -/* 0302 */ 0xBDA1, 0xBDFE, 0x1BC7, -/* 0303 */ 0xBEA1, 0xBEFE, 0x1C25, -/* 0304 */ 0xBF80, 0xBF8A, 0x1C83, -/* 0305 */ 0xBFA1, 0xBFFE, 0x1C8E, -/* 0306 */ 0xC07C, 0xC0FE, 0x1CEC, -/* 0307 */ 0xC140, 0xC1FE, 0x1D6F, -/* 0308 */ 0xC240, 0xC280, 0x1E2E, -/* 0309 */ 0xC2A1, 0xC2FE, 0x1E6F, -/* 030A */ 0xC340, 0xC386, 0x1ECD, -/* 030B */ 0xC394, 0xC3FE, 0x1F14, -/* 030C */ 0xC446, 0xC481, 0x1F7F, -/* 030D */ 0xC490, 0xC4FE, 0x1FBB, -/* 030E */ 0xC54F, 0xC5FE, 0x202A, -/* 030F */ 0xC640, 0xC6FE, 0x20DA, -/* 0310 */ 0xC740, 0xC7FE, 0x2199, -/* 0311 */ 0xC840, 0xC85C, 0x2258, -/* 0312 */ 0xC871, 0xC8FE, 0x2275, -/* 0313 */ 0xC940, 0xC959, 0x2303, -/* 0314 */ 0xC967, 0xC990, 0x231D, -/* 0315 */ 0xC99C, 0xC9FE, 0x2347, -/* 0316 */ 0xCA49, 0xCA57, 0x23AA, -/* 0317 */ 0xCA6B, 0xCA73, 0x23B9, -/* 0318 */ 0xCA80, 0xCAFE, 0x23C2, -/* 0319 */ 0xCB40, 0xCB42, 0x2441, -/* 031A */ 0xCB5C, 0xCB69, 0x2444, -/* 031B */ 0xCB78, 0xCB80, 0x2452, -/* 031C */ 0xCB8E, 0xCB91, 0x245B, -/* 031D */ 0xCBA1, 0xCBFE, 0x245F, -/* 031E */ 0xCC40, 0xCC49, 0x24BD, -/* 031F */ 0xCC55, 0xCC58, 0x24C7, -/* 0320 */ 0xCC69, 0x0000, 0x8628, -/* 0321 */ 0xCC78, 0xCC7E, 0x24CB, -/* 0322 */ 0xCC8C, 0xCCFE, 0x24D2, -/* 0323 */ 0xCD40, 0xCD42, 0x2545, -/* 0324 */ 0xCD51, 0xCDFE, 0x2548, -/* 0325 */ 0xCE40, 0xCEFE, 0x25F6, -/* 0326 */ 0xCF40, 0xCF74, 0x26B5, -/* 0327 */ 0xCF80, 0xCF87, 0x26EA, -/* 0328 */ 0xCF96, 0xCFFE, 0x26F2, -/* 0329 */ 0xD054, 0xD05B, 0x275B, -/* 032A */ 0xD068, 0xD0FE, 0x2763, -/* 032B */ 0xD140, 0xD1FE, 0x27FA, -/* 032C */ 0xD249, 0xD24A, 0x28B9, -/* 032D */ 0xD27E, 0xD285, 0x28BB, -/* 032E */ 0xD2A1, 0xD2FE, 0x28C3, -/* 032F */ 0xD35F, 0xD384, 0x2921, -/* 0330 */ 0xD3A1, 0xD3FE, 0x2947, -/* 0331 */ 0xD4A1, 0xD4FE, 0x29A5, -/* 0332 */ 0xD5A1, 0xD5FE, 0x2A03, -/* 0333 */ 0xD680, 0xD681, 0x2A61, -/* 0334 */ 0xD6A1, 0xD6FE, 0x2A63, -/* 0335 */ 0xD760, 0xD764, 0x2AC1, -/* 0336 */ 0xD799, 0xD7F9, 0x2AC6, -/* 0337 */ 0xD849, 0xD85B, 0x2B27, -/* 0338 */ 0xD870, 0xD88B, 0x2B3A, -/* 0339 */ 0xD8A1, 0xD8FE, 0x2B56, -/* 033A */ 0xD9A1, 0xD9FE, 0x2BB4, -/* 033B */ 0xDA4F, 0xDA80, 0x2C12, -/* 033C */ 0xDA8E, 0xDAFE, 0x2C44, -/* 033D */ 0xDB40, 0xDB88, 0x2CB5, -/* 033E */ 0xDB9B, 0xDBFE, 0x2CFE, -/* 033F */ 0xDC40, 0xDC5F, 0x2D62, -/* 0340 */ 0xDC6C, 0xDC6F, 0x2D82, -/* 0341 */ 0xDCA1, 0xDCFE, 0x2D86, -/* 0342 */ 0xDDA1, 0xDDFE, 0x2DE4, -/* 0343 */ 0xDE61, 0xDEFE, 0x2E42, -/* 0344 */ 0xDF40, 0xDFFE, 0x2EE0, -/* 0345 */ 0xE040, 0xE067, 0x2F9F, -/* 0346 */ 0xE07C, 0xE083, 0x2FC7, -/* 0347 */ 0xE08F, 0x0000, 0x9130, -/* 0348 */ 0xE0A0, 0xE0FE, 0x2FCF, -/* 0349 */ 0xE140, 0xE160, 0x302E, -/* 034A */ 0xE174, 0xE17E, 0x304F, -/* 034B */ 0xE18B, 0xE18D, 0x305A, -/* 034C */ 0xE1A1, 0xE1FE, 0x305D, -/* 034D */ 0xE2A1, 0xE2FE, 0x30BB, -/* 034E */ 0xE3A1, 0xE3FE, 0x3119, -/* 034F */ 0xE4A1, 0xE4FE, 0x3177, -/* 0350 */ 0xE5A0, 0xE5FE, 0x31D5, -/* 0351 */ 0xE69E, 0xE6FE, 0x3234, -/* 0352 */ 0xE7A1, 0xE7FE, 0x3295, -/* 0353 */ 0xE87B, 0xE87E, 0x32F3, -/* 0354 */ 0xE895, 0xE8FE, 0x32F7, -/* 0355 */ 0xE940, 0xE94B, 0x3361, -/* 0356 */ 0xE9A1, 0xE9FE, 0x336D, -/* 0357 */ 0xEA5C, 0xEA90, 0x33CB, -/* 0358 */ 0xEA9E, 0xEAFE, 0x3400, -/* 0359 */ 0xEB40, 0xEB48, 0x3461, -/* 035A */ 0xEB5B, 0xEB6C, 0x346A, -/* 035B */ 0xEB7E, 0xEBFE, 0x347C, -/* 035C */ 0xEC49, 0xEC56, 0x34FD, -/* 035D */ 0xEC6A, 0xECFE, 0x350B, -/* 035E */ 0xED40, 0xED4F, 0x35A0, -/* 035F */ 0xED80, 0xED88, 0x35B0, -/* 0360 */ 0xEDA1, 0xEDFE, 0x35B9, -/* 0361 */ 0xEEA1, 0xEEFE, 0x3617, -/* 0362 */ 0xEF46, 0xEF4B, 0x3675, -/* 0363 */ 0xEF72, 0xEF81, 0x367B, -/* 0364 */ 0xEFA1, 0xEFFE, 0x368B, -/* 0365 */ 0xF040, 0xF046, 0x36E9, -/* 0366 */ 0xF097, 0xF0FE, 0x36F0, -/* 0367 */ 0xF140, 0xF141, 0x3758, -/* 0368 */ 0xF14D, 0xF14E, 0x375A, -/* 0369 */ 0xF1A1, 0xF1FE, 0x375C, -/* 036A */ 0xF2A1, 0xF2FE, 0x37BA, -/* 036B */ 0xF352, 0xF3FE, 0x3818, -/* 036C */ 0xF440, 0xF449, 0x38C5, -/* 036D */ 0xF455, 0xF457, 0x38CF, -/* 036E */ 0xF463, 0xF478, 0x38D2, -/* 036F */ 0xF4A1, 0xF4FE, 0x38E8, -/* 0370 */ 0xF5A1, 0xF5FE, 0x3946, -/* 0371 */ 0xF6A1, 0xF6FE, 0x39A4, -/* 0372 */ 0xF780, 0xF7FE, 0x3A02, -/* 0373 */ 0xFB5C, 0xFB86, 0x3A81, -/* 0374 */ 0xFB96, 0xFBA0, 0x3AAC, -/* 0375 */ 0xFC49, 0xFCA0, 0x3AB7, -/* 0376 */ 0xFD40, 0xFD4C, 0x3B0F, -/* 0377 */ 0xFD86, 0xFD87, 0x3B1C, -/* 0378 */ 0xFD94, 0xFDA0, 0x3B1E, -/* 0379 */ 0xFE40, 0xFE4F, 0x3B2B, -/*-------------------------------------------------------*/ -/* Offset=0x0B51 Start of MappingTable */ - -/* 0000 */ 0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F, -/* 0008 */ 0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31, -/* 0010 */ 0x4E33, 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44, -/* 0018 */ 0x4E46, 0x4E4A, 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62, -/* 0020 */ 0x4E63, 0x4E64, 0x4E65, 0x4E67, 0x4E68, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E72, 0x4E87, 0x4E8A, 0xFFFD, 0x4E90, -/* 0030 */ 0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4E9E, 0x4EA3, 0x4EAA, -/* 0038 */ 0x4EAF, 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8, 0x4EB9, -/* 0040 */ 0x4EBC, 0x4EBD, 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0, 0x4ED2, -/* 0048 */ 0x4EDA, 0x4EDB, 0x4EDC, 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7, 0x4EE9, -/* 0050 */ 0x4EED, 0x4EEE, 0x4EEF, 0x4EF1, 0x4EF4, 0x4EF8, 0x4EF9, 0x4EFA, -/* 0058 */ 0x4EFC, 0x4EFE, 0x4F00, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13, 0x4F14, 0x4F15, -/* 0068 */ 0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29, 0x4F2C, -/* 0070 */ 0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39, 0x4F3B, -/* 0078 */ 0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F52, 0x4F54, 0x4F56, -/* 0088 */ 0x4F61, 0x4F62, 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D, 0x4F6E, -/* 0090 */ 0x4F71, 0x4F72, 0x4F75, 0x4F77, 0x4F78, 0x4F79, 0x4F7A, 0x4F7D, -/* 0098 */ 0x4F80, 0x4F81, 0x4F82, 0x4F85, 0x4F86, 0x4F87, 0x4F8A, 0x4F8C, -/* 00A0 */ 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F96, 0x4F98, 0x4F99, -/* 00A8 */ 0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2, 0x4FA4, 0x4FAB, -/* 00B0 */ 0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4FC0, -/* 00C0 */ 0x4FC1, 0x4FC2, 0x4FC6, 0x4FC7, 0x4FC8, 0x4FC9, 0x4FCB, 0x4FCC, -/* 00C8 */ 0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4, 0x4FD5, 0x4FD6, 0x4FD9, 0x4FDB, -/* 00D0 */ 0x4FE0, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB, 0x4FEC, 0x4FF0, -/* 00D8 */ 0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9, 0x4FFB, 0x4FFC, -/* 00E0 */ 0x4FFD, 0x500B, 0x500E, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, -/* 00E8 */ 0x5017, 0x501B, 0x501D, 0x501E, 0x5020, 0x5022, 0x5023, 0x5024, -/* 00F0 */ 0x5027, 0x502B, 0x503B, 0x503D, 0x503F, 0x5040, 0x5041, 0x5042, -/* 00F8 */ 0x5044, 0x5045, 0x5046, 0x5049, 0x504A, 0x504B, 0x504D, 0x5050, -/* 0100 */ 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 0x5058, 0x5059, -/* 0108 */ 0x505B, 0x5078, 0x5079, 0x507A, 0x507C, 0x507D, 0x5081, 0x5082, -/* 0110 */ 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508A, 0x508B, 0x508C, -/* 0118 */ 0x50A4, 0x50A6, 0x50AA, 0x50AB, 0x50AD, 0x50AE, 0x50AF, 0x50B0, -/* 0120 */ 0x50B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0128 */ 0x50BC, 0x50D7, 0x50D8, 0x50D9, 0x50E8, 0x50E9, 0x50EA, 0x50EB, -/* 0130 */ 0x50EF, 0x50F0, 0x50F1, 0x50F2, 0x50F4, 0x50F6, 0x50F7, 0x50F8, -/* 0138 */ 0x50F9, 0x50FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5108, 0xFFFD, 0x5109, 0x510A, -/* 0148 */ 0x5142, 0x5147, 0x514A, 0x514C, 0x514E, 0x514F, 0x5150, 0x5152, -/* 0150 */ 0x5153, 0x5157, 0x5158, 0x5159, 0x515B, 0x515D, 0x515E, 0x515F, -/* 0158 */ 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167, 0x5169, 0x516A, -/* 0160 */ 0x516F, 0x5172, 0x517A, 0x517E, 0x517F, 0x5183, 0x5184, 0x5186, -/* 0168 */ 0x5187, 0x518A, 0x518B, 0x518E, 0x518F, 0x5190, 0x5191, 0x5193, -/* 0170 */ 0x5194, 0x5198, 0x519A, 0x519D, 0x519E, 0x519F, 0x51A1, 0x51A3, -/* 0178 */ 0x51A6, 0x51A7, 0x51A8, 0x51A9, 0x51AA, 0x51AD, 0x51AE, 0x51B4, -/* 0180 */ 0x51B8, 0x51B9, 0x51BA, 0x51BE, 0x51BF, 0x51C1, 0x51C2, 0x51C3, -/* 0188 */ 0x51C5, 0x51C8, 0x51CA, 0x51CD, 0x51CE, 0x51D0, 0x51D8, 0x51D9, -/* 0190 */ 0x51DA, 0x51DC, 0x51DE, 0x51DF, 0x51E2, 0x51E3, 0xFFFD, 0xFFFD, -/* 0198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x51EC, 0x51EE, 0x51F1, 0x51F2, -/* 01A0 */ 0x51F4, 0x51F7, 0x51FE, 0x5204, 0x5205, 0x5209, 0x520B, 0x520C, -/* 01A8 */ 0x520F, 0x5210, 0x5213, 0x5214, 0x5215, 0x521C, 0x521E, 0x521F, -/* 01B0 */ 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227, 0x522A, 0x522C, -/* 01B8 */ 0x522F, 0x5231, 0x5232, 0x5234, 0x5235, 0x523C, 0x523E, 0xFFFD, -/* 01C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x524B, 0x524E, 0x524F, -/* 01C8 */ 0x5252, 0x5253, 0x5255, 0x5257, 0x5258, 0xFFFD, 0x5259, 0x525A, -/* 01D0 */ 0x525B, 0x525D, 0x525F, 0x5260, 0x5262, 0x5263, 0x5264, 0x5266, -/* 01D8 */ 0x5268, 0x526B, 0x526C, 0x526D, 0x526E, 0x5270, 0x5271, 0xFFFD, -/* 01E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E8 */ 0xFFFD, 0x527E, 0x5280, 0x5283, 0x5284, 0x5285, 0x5286, 0x5287, -/* 01F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5291, -/* 01F8 */ 0x5292, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0200 */ 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, 0x52AE, 0x52AF, 0x52B0, -/* 0208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0210 */ 0xFFFD, 0xFFFD, 0x52C0, 0x52C1, 0x52C2, 0x52C4, 0x52C5, 0x52C6, -/* 0218 */ 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE, 0x52CF, 0x52D1, 0x52D3, -/* 0220 */ 0x52D4, 0x52D5, 0x52D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0228 */ 0xFFFD, 0x52E0, 0x52E1, 0x52E2, 0x52E3, 0x52FB, 0x52FC, 0x52FD, -/* 0230 */ 0x5301, 0x5302, 0x5303, 0x5304, 0x5307, 0x5309, 0x530A, 0x530B, -/* 0238 */ 0x530C, 0x530E, 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, -/* 0240 */ 0x531C, 0x531E, 0x531F, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, -/* 0248 */ 0x5329, 0x532B, 0x532C, 0x532D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x533C, 0x533D, -/* 0258 */ 0x5340, 0x5342, 0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, -/* 0260 */ 0x5354, 0x5358, 0x5359, 0x535B, 0x535D, 0x5365, 0x5368, 0x536A, -/* 0268 */ 0x536C, 0x536D, 0x5372, 0x5376, 0x5379, 0x537B, 0x537C, 0x537D, -/* 0270 */ 0x537E, 0x5380, 0x5381, 0x5383, 0x5387, 0x5388, 0x538A, 0x538E, -/* 0278 */ 0x538F, 0xFFFD, 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, -/* 0280 */ 0x5397, 0x5399, 0x539B, 0x539C, 0x539E, 0x53A0, 0x53A1, 0x53A4, -/* 0288 */ 0x53A7, 0x53AA, 0x53AB, 0x53AC, 0x53AD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x53B7, 0x53B8, 0x53B9, 0x53BA, -/* 0298 */ 0x53BC, 0x53BD, 0x53BE, 0x53C0, 0x53C3, 0x53C4, 0x53C5, 0x53C6, -/* 02A0 */ 0x53C7, 0x53CE, 0x53CF, 0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, -/* 02A8 */ 0x53DC, 0x53DD, 0x53DE, 0x53E1, 0x53E2, 0x53E7, 0x53F4, 0x53FA, -/* 02B0 */ 0x53FE, 0x53FF, 0x5400, 0x5402, 0x5405, 0x5407, 0x540B, 0x5414, -/* 02B8 */ 0x5418, 0x5419, 0x541A, 0x541C, 0x5422, 0x5424, 0x5425, 0x542A, -/* 02C0 */ 0x5430, 0x5433, 0x5436, 0x5437, 0x543A, 0x543D, 0x543F, 0x5441, -/* 02C8 */ 0x5442, 0x5444, 0x5445, 0x5447, 0x5449, 0x544C, 0x544D, 0x544E, -/* 02D0 */ 0x544F, 0x5451, 0x545A, 0x545D, 0x545E, 0x545F, 0x5460, 0x5461, -/* 02D8 */ 0x5463, 0x5465, 0x5467, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5474, 0x5479, 0x547A, 0x547E, 0x547F, -/* 02E8 */ 0x5481, 0x5483, 0x5485, 0x5487, 0x5488, 0x5489, 0x548A, 0x548D, -/* 02F0 */ 0x5491, 0x5493, 0x5497, 0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, -/* 02F8 */ 0x54A1, 0x54A2, 0x54A5, 0x54AE, 0x54B0, 0x54B2, 0x54B5, 0x54B6, -/* 0300 */ 0x54B7, 0x54B9, 0x54BA, 0x54BC, 0x54BE, 0x54C3, 0x54C5, 0x54CA, -/* 0308 */ 0x54CB, 0x54D6, 0x54D8, 0x54DB, 0x54E0, 0x54E1, 0x54E2, 0x54E3, -/* 0310 */ 0x54E4, 0x54EB, 0x54EC, 0x54EF, 0x54F0, 0x54F1, 0xFFFD, 0xFFFD, -/* 0318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x54FB, 0x54FE, 0x5500, 0x5502, -/* 0320 */ 0x5503, 0x5504, 0x5505, 0x5508, 0x550A, 0x550B, 0x550C, 0x550D, -/* 0328 */ 0x550E, 0x5512, 0x5513, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0330 */ 0xFFFD, 0x551C, 0x551D, 0x551E, 0x551F, 0x5521, 0x5525, 0x5526, -/* 0338 */ 0xFFFD, 0x5528, 0x5529, 0x552B, 0x552D, 0x5532, 0x5534, 0x5535, -/* 0340 */ 0x5536, 0x5538, 0x5539, 0x553A, 0x553B, 0x553D, 0x5540, 0x5542, -/* 0348 */ 0x5545, 0x5547, 0x5548, 0x554B, 0x554C, 0x554D, 0x554E, 0x554F, -/* 0350 */ 0x5551, 0x5552, 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555A, -/* 0358 */ 0x555B, 0x555D, 0x555E, 0x555F, 0x5560, 0x5562, 0x5563, 0x5568, -/* 0360 */ 0x5569, 0x556B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0368 */ 0x5579, 0x557A, 0x557D, 0x557F, 0x5585, 0x5586, 0x558C, 0x558D, -/* 0370 */ 0x558E, 0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559A, -/* 0378 */ 0x559B, 0x559E, 0x55B2, 0x55B4, 0x55B6, 0x55B8, 0x55BA, 0x55BC, -/* 0380 */ 0x55BF, 0x55C0, 0x55C1, 0x55C2, 0x55C3, 0x55C6, 0x55C7, 0x55C8, -/* 0388 */ 0x55CA, 0x55CB, 0x55CE, 0x55CF, 0x55D0, 0x55D5, 0x55D7, 0x55D8, -/* 0390 */ 0x55D9, 0x55DA, 0x55DB, 0x55DE, 0x55E0, 0x55E2, 0x55E7, 0x55E9, -/* 0398 */ 0x55ED, 0x55EE, 0x55F0, 0x55F1, 0x55F4, 0x55F6, 0x55F8, 0x55F9, -/* 03A0 */ 0x55FA, 0x55FB, 0x55FC, 0x55FF, 0x5602, 0x5603, 0x5604, 0x5605, -/* 03A8 */ 0x5606, 0x5607, 0x560A, 0x560B, 0x560D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5619, 0x561A, 0x561C, -/* 03B8 */ 0x561D, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629, -/* 03C0 */ 0x562A, 0x562B, 0x562E, 0x562F, 0x5630, 0x5633, 0x5635, 0x5637, -/* 03C8 */ 0x5638, 0x563A, 0x563C, 0x563D, 0x563E, 0x564F, 0x5650, 0x5651, -/* 03D0 */ 0x5652, 0x5653, 0x5655, 0x5656, 0x565A, 0x565B, 0x565D, 0x565E, -/* 03D8 */ 0x565F, 0x5660, 0x5661, 0xFFFD, 0x5663, 0x5665, 0x5666, 0x5667, -/* 03E0 */ 0x566D, 0x566E, 0x566F, 0x5670, 0x5672, 0x5673, 0x5674, 0x5675, -/* 03E8 */ 0x5677, 0x5678, 0x5679, 0x567A, 0x5690, 0x5691, 0x5692, 0x56B8, -/* 03F0 */ 0x56B9, 0x56BA, 0x56BB, 0x56D5, 0x56D6, 0x56D8, 0x56D9, 0x56DC, -/* 03F8 */ 0x56E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x56EC, -/* 0400 */ 0x56EE, 0x56EF, 0x56F2, 0x56F3, 0x56F6, 0x56F7, 0x56F8, 0x56FB, -/* 0408 */ 0x56FC, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707, 0x571D, 0x571E, -/* 0410 */ 0x5720, 0x5721, 0x5722, 0x5724, 0x5725, 0x5726, 0x5727, 0x572B, -/* 0418 */ 0x5731, 0x5732, 0x5734, 0x5735, 0x5736, 0x5737, 0x5738, 0x573C, -/* 0420 */ 0x573D, 0x573F, 0x5741, 0x5743, 0x5744, 0x5745, 0x5746, 0x5748, -/* 0428 */ 0x5749, 0x574B, 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5758, -/* 0430 */ 0x5759, 0x5762, 0x5763, 0x5765, 0x5767, 0x576C, 0x576E, 0x5770, -/* 0438 */ 0x5771, 0x5772, 0x5774, 0x5775, 0x5778, 0x5779, 0x577A, 0x577D, -/* 0440 */ 0x577E, 0x577F, 0x5780, 0xFFFD, 0x5781, 0x5787, 0x5788, 0x5789, -/* 0448 */ 0x578A, 0x578D, 0x578E, 0x578F, 0x5790, 0x5791, 0xFFFD, 0xFFFD, -/* 0450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x579C, 0x579D, 0x579E, -/* 0458 */ 0x579F, 0x57A5, 0x57A8, 0x57AA, 0x57AC, 0x57AF, 0x57B0, 0x57B1, -/* 0460 */ 0x57B3, 0x57B5, 0x57B6, 0x57B7, 0x57CC, 0x57CD, 0x57D0, 0x57D1, -/* 0468 */ 0x57D3, 0x57D6, 0x57D7, 0x57DB, 0x57DC, 0x57DE, 0x57E1, 0x57E2, -/* 0470 */ 0x57E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0478 */ 0xFFFD, 0x57EE, 0x57F0, 0x57F1, 0x57F2, 0x57F3, 0x57F5, 0x57F6, -/* 0480 */ 0x57F7, 0x57FB, 0x57FC, 0x57FE, 0x57FF, 0x5801, 0x5803, 0x5804, -/* 0488 */ 0x5805, 0x5808, 0x5809, 0x580A, 0x580C, 0x580E, 0x580F, 0x5810, -/* 0490 */ 0x5812, 0x5813, 0x5814, 0x5816, 0x5817, 0x5818, 0x581A, 0x581B, -/* 0498 */ 0x581C, 0x581D, 0x581F, 0x5822, 0x5823, 0x5825, 0x5826, 0x5827, -/* 04A0 */ 0x5828, 0x5829, 0x582B, 0x582C, 0x582D, 0x582E, 0x582F, 0x5831, -/* 04A8 */ 0x5832, 0x5833, 0x5834, 0x584E, 0x584F, 0x5850, 0x5852, 0x5853, -/* 04B0 */ 0x5855, 0x5856, 0x5857, 0x5859, 0x585A, 0x585B, 0x585C, 0x585D, -/* 04B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5866, 0x5867, -/* 04C0 */ 0x5868, 0x5869, 0x586A, 0x587F, 0x5882, 0x5884, 0x5886, 0x5887, -/* 04C8 */ 0x5888, 0x588A, 0x588B, 0x588C, 0xFFFD, 0x588D, 0x588E, 0x588F, -/* 04D0 */ 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897, 0x5898, 0x589B, -/* 04D8 */ 0x589C, 0x589D, 0x58BD, 0x58BE, 0x58BF, 0x58C0, 0x58C2, 0x58C3, -/* 04E0 */ 0x58C4, 0x58D2, 0x58D3, 0x58D4, 0x58ED, 0x58EF, 0x58F1, 0x58F2, -/* 04E8 */ 0x58F4, 0x58F5, 0x58F7, 0x58F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5903, 0x5905, 0x5906, 0x5908, -/* 04F8 */ 0x5909, 0x590A, 0x590B, 0x590C, 0x590E, 0x5910, 0x5911, 0x5912, -/* 0500 */ 0x5913, 0x5917, 0x5918, 0x591B, 0x591D, 0x591E, 0x5920, 0x5921, -/* 0508 */ 0x5922, 0x5923, 0x5926, 0x5928, 0x592C, 0x5930, 0x5932, 0x5933, -/* 0510 */ 0x5935, 0x5936, 0x593B, 0x593D, 0x593E, 0x593F, 0x5940, 0x5943, -/* 0518 */ 0x5945, 0x5946, 0x594A, 0x594C, 0x594D, 0x5950, 0x5952, 0x5953, -/* 0520 */ 0x5959, 0x595B, 0x595C, 0x595D, 0x595E, 0x595F, 0x5961, 0x5963, -/* 0528 */ 0x5964, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C, 0x597E, 0x597F, -/* 0530 */ 0x5980, 0x5985, 0x5989, 0x598B, 0x598C, 0x598E, 0x598F, 0x5990, -/* 0538 */ 0x5991, 0x5994, 0x5995, 0x5998, 0x599A, 0x599B, 0x599C, 0x599D, -/* 0540 */ 0x599F, 0x59A0, 0x59A1, 0x59A2, 0x59A6, 0xFFFD, 0x59A7, 0x59AC, -/* 0548 */ 0x59AD, 0x59B0, 0x59B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0550 */ 0xFFFD, 0x59BA, 0x59BC, 0x59BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x59C7, 0x59C8, 0x59C9, 0x59CC, 0x59CD, -/* 0560 */ 0x59CE, 0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB, 0x59DE, 0x59DF, -/* 0568 */ 0x59E0, 0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7, 0x59E9, 0x59EA, -/* 0570 */ 0x59EB, 0x59FA, 0x59FC, 0x59FD, 0x59FE, 0x5A00, 0x5A02, 0x5A0A, -/* 0578 */ 0x5A0B, 0x5A0D, 0x5A0E, 0x5A0F, 0x5A10, 0x5A12, 0x5A14, 0x5A15, -/* 0580 */ 0x5A16, 0x5A17, 0x5A19, 0x5A1A, 0x5A1B, 0x5A1D, 0x5A1E, 0x5A21, -/* 0588 */ 0x5A22, 0x5A24, 0x5A26, 0x5A27, 0x5A28, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A33, 0x5A35, 0x5A37, 0x5A38, -/* 0598 */ 0x5A39, 0x5A3A, 0x5A3B, 0x5A3D, 0x5A3E, 0x5A3F, 0x5A41, 0x5A42, -/* 05A0 */ 0x5A43, 0x5A44, 0x5A45, 0x5A47, 0x5A48, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A56, -/* 05B0 */ 0x5A57, 0x5A58, 0x5A59, 0x5A61, 0x5A63, 0x5A64, 0x5A65, 0x5A66, -/* 05B8 */ 0x5A68, 0x5A69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A78, 0x5A79, 0x5A7B, 0x5A7C, 0x5A7D, -/* 05C8 */ 0x5A7E, 0x5AAB, 0x5AAC, 0xFFFD, 0x5AAD, 0x5AAE, 0x5AAF, 0x5AB0, -/* 05D0 */ 0x5AB1, 0x5AB4, 0x5AB6, 0x5AB7, 0x5AB9, 0x5ABA, 0x5ABB, 0x5ABC, -/* 05D8 */ 0x5ABD, 0x5ABF, 0x5AC0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05E0 */ 0xFFFD, 0x5ACA, 0x5ACB, 0x5ACD, 0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, -/* 05E8 */ 0x5AD3, 0x5AD5, 0x5AD7, 0x5AD9, 0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, -/* 05F0 */ 0x5ADF, 0x5AE2, 0x5AE4, 0x5AE5, 0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, -/* 05F8 */ 0x5AED, 0x5AEE, 0x5AEF, 0x5AF0, 0x5B33, 0x5B35, 0x5B36, 0x5B52, -/* 0600 */ 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67, 0x5B68, 0x5B6B, 0x5B6D, -/* 0608 */ 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76, 0x5B77, 0x5B78, 0x5B79, -/* 0610 */ 0x5B7B, 0x5B7C, 0x5B7E, 0x5B7F, 0x5B82, 0x5B86, 0x5B8A, 0x5B8D, -/* 0618 */ 0x5B8E, 0x5B90, 0x5B91, 0x5B92, 0x5B94, 0x5B96, 0x5B9F, 0x5BA7, -/* 0620 */ 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAE, 0x5BAF, 0x5BB1, 0x5BB2, -/* 0628 */ 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0, 0x5BC1, 0x5BC3, 0x5BC8, -/* 0630 */ 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE, 0x5BCF, 0xFFFD, 0x5BD1, -/* 0638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0640 */ 0xFFFD, 0x5BE0, 0x5BE2, 0x5BE3, 0x5BE6, 0x5BE7, 0x5BE9, 0x5BEA, -/* 0648 */ 0x5BEB, 0x5BEC, 0x5BED, 0x5BEF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5BFD, 0x5BFE, 0x5C00, 0x5C02, 0x5C03, -/* 0658 */ 0x5C05, 0x5C07, 0x5C08, 0x5C0B, 0x5C0C, 0x5C0D, 0x5C0E, 0x5C10, -/* 0660 */ 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E, 0x5C1F, 0x5C20, -/* 0668 */ 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A, 0x5C2B, 0x5C2D, -/* 0670 */ 0x5C2E, 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35, 0x5C36, 0x5C37, -/* 0678 */ 0x5C43, 0x5C44, 0x5C46, 0x5C47, 0x5C4C, 0x5C4D, 0x5C52, 0x5C53, -/* 0680 */ 0x5C54, 0x5C56, 0x5C57, 0x5C58, 0x5C5A, 0x5C5B, 0x5C5C, 0x5C5D, -/* 0688 */ 0x5C5F, 0x5C62, 0x5C64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0690 */ 0xFFFD, 0xFFFD, 0x5C70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0698 */ 0xFFFD, 0xFFFD, 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E, 0x5C80, 0x5C83, -/* 06A0 */ 0x5C84, 0x5C85, 0x5C86, 0x5C87, 0x5C89, 0x5C8A, 0x5C8B, 0x5C8E, -/* 06A8 */ 0x5C8F, 0x5C92, 0x5C93, 0x5C95, 0x5C9D, 0x5C9E, 0x5C9F, 0x5CA0, -/* 06B0 */ 0x5CA1, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8, 0x5CAA, 0x5CAE, -/* 06B8 */ 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9, 0x5CBA, 0x5CBB, -/* 06C0 */ 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CE2, 0x5CE3, 0x5CE7, -/* 06C8 */ 0x5CE9, 0x5CEB, 0x5CEC, 0x5CEE, 0x5CEF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5CFC, -/* 06D8 */ 0x5CFD, 0x5CFE, 0x5CFF, 0x5D00, 0xFFFD, 0x5D01, 0x5D04, 0x5D05, -/* 06E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D0F, 0x5D10, -/* 06E8 */ 0x5D11, 0x5D12, 0x5D13, 0x5D15, 0x5D17, 0x5D18, 0x5D19, 0x5D1A, -/* 06F0 */ 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20, 0x5D21, 0x5D22, 0x5D23, 0x5D25, -/* 06F8 */ 0x5D28, 0x5D2A, 0x5D2B, 0x5D2C, 0x5D2F, 0x5D30, 0x5D31, 0x5D32, -/* 0700 */ 0x5D33, 0x5D48, 0x5D49, 0x5D59, 0x5D5A, 0x5D5C, 0x5D6A, 0x5D6D, -/* 0708 */ 0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D9A, 0x5D9B, 0x5D9C, -/* 0710 */ 0x5D9E, 0x5D9F, 0x5DA0, 0x5DDC, 0x5DDF, 0x5DE0, 0x5DE3, 0x5DE4, -/* 0718 */ 0x5DEA, 0x5DEC, 0x5DED, 0xFFFD, 0x5DF0, 0x5DF5, 0x5DF6, 0x5DF8, -/* 0720 */ 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC, 0x5DFF, 0x5E00, 0x5E04, 0x5E07, -/* 0728 */ 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D, 0x5E0E, 0x5E12, 0x5E13, 0x5E17, -/* 0730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0738 */ 0x5E28, 0x5E29, 0x5E2A, 0x5E2B, 0x5E2C, 0x5E2F, 0x5E30, 0x5E32, -/* 0740 */ 0x5E33, 0x5E34, 0x5E35, 0x5E36, 0x5E39, 0x5E3A, 0x5E3E, 0x5E3F, -/* 0748 */ 0x5E40, 0x5E41, 0x5E43, 0x5E56, 0x5E57, 0x5E58, 0x5E59, 0x5E5A, -/* 0750 */ 0x5E5C, 0x5E5D, 0x5E5F, 0x5E60, 0x5E75, 0x5E77, 0x5E79, 0x5E7E, -/* 0758 */ 0x5E81, 0x5E82, 0x5E83, 0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D, -/* 0760 */ 0x5E8E, 0x5E92, 0x5E98, 0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3, -/* 0768 */ 0x5EA4, 0x5EA8, 0x5EA9, 0x5EAA, 0x5EAB, 0x5EAC, 0x5EAE, 0x5EAF, -/* 0770 */ 0x5EB0, 0x5EB1, 0x5EB2, 0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD, -/* 0778 */ 0x5EC6, 0x5EC7, 0x5EC8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0780 */ 0xFFFD, 0x5ED4, 0x5ED5, 0x5ED7, 0x5ED8, 0x5ED9, 0x5EDA, 0x5EE9, -/* 0788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0790 */ 0xFFFD, 0x5EF5, 0x5EF8, 0x5EF9, 0x5EFB, 0x5EFC, 0x5EFD, 0x5F05, -/* 0798 */ 0x5F06, 0x5F07, 0x5F09, 0x5F0C, 0x5F0D, 0x5F0E, 0x5F10, 0x5F12, -/* 07A0 */ 0x5F14, 0x5F16, 0x5F19, 0x5F1A, 0x5F1C, 0x5F1D, 0x5F1E, 0x5F21, -/* 07A8 */ 0x5F22, 0x5F23, 0x5F24, 0xFFFD, 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, -/* 07B0 */ 0x5F30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07B8 */ 0x5F3B, 0x5F3D, 0x5F3E, 0x5F3F, 0x5F51, 0x5F54, 0x5F59, 0x5F5A, -/* 07C0 */ 0x5F5B, 0x5F5C, 0x5F5E, 0x5F5F, 0x5F60, 0x5F63, 0x5F65, 0x5F67, -/* 07C8 */ 0x5F68, 0x5F6B, 0x5F6E, 0x5F6F, 0x5F72, 0x5F74, 0x5F75, 0x5F76, -/* 07D0 */ 0x5F78, 0x5F7A, 0x5F7D, 0x5F7E, 0x5F7F, 0x5F83, 0x5F86, 0x5F8D, -/* 07D8 */ 0x5F8E, 0x5F8F, 0x5F91, 0x5F93, 0x5F94, 0x5F96, 0x5F9A, 0x5F9B, -/* 07E0 */ 0x5F9D, 0x5F9E, 0x5F9F, 0x5FA0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07E8 */ 0xFFFD, 0xFFFD, 0x5FA9, 0x5FAB, 0x5FAC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5FB6, 0x5FB8, 0x5FB9, 0x5FBA, 0x5FBB, -/* 07F8 */ 0x5FBE, 0x5FBF, 0x5FC0, 0x5FC1, 0x5FC2, 0x5FC7, 0x5FC8, 0x5FCA, -/* 0800 */ 0x5FCB, 0x5FCE, 0x5FD3, 0x5FD4, 0x5FD5, 0x5FDA, 0x5FDB, 0x5FDC, -/* 0808 */ 0x5FDE, 0x5FDF, 0x5FE2, 0x5FE3, 0x5FE5, 0x5FE6, 0x5FE8, 0x5FE9, -/* 0810 */ 0x5FEC, 0x5FEF, 0x5FF0, 0x5FF2, 0x5FF3, 0x5FF4, 0x5FF6, 0x5FF7, -/* 0818 */ 0x5FF9, 0x5FFA, 0x5FFC, 0x6007, 0x6008, 0x6009, 0x600B, 0x600C, -/* 0820 */ 0x6010, 0x6011, 0x6013, 0x6017, 0x6018, 0x601A, 0x601E, 0x601F, -/* 0828 */ 0x6022, 0x6023, 0x6024, 0x602C, 0x602D, 0x602E, 0x6030, 0x6031, -/* 0830 */ 0x6032, 0x6033, 0x6034, 0x6036, 0x6037, 0x6038, 0x6039, 0x603A, -/* 0838 */ 0x603D, 0x603E, 0x6040, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0840 */ 0xFFFD, 0xFFFD, 0x604C, 0x604E, 0x604F, 0x6051, 0x6053, 0x6054, -/* 0848 */ 0x6056, 0x6057, 0x6058, 0x605B, 0x605C, 0x605E, 0x605F, 0x6060, -/* 0850 */ 0x6061, 0x6065, 0x6066, 0x606E, 0x6071, 0x6072, 0x6074, 0x6075, -/* 0858 */ 0x6077, 0x607E, 0x6080, 0xFFFD, 0x6081, 0x6082, 0x6085, 0x6086, -/* 0860 */ 0x6087, 0x6088, 0x608A, 0x608B, 0x608E, 0x608F, 0x6090, 0x6091, -/* 0868 */ 0x6093, 0x6095, 0x6097, 0x6098, 0x6099, 0x609C, 0x609E, 0x60A1, -/* 0870 */ 0x60A2, 0x60A4, 0x60A5, 0x60A7, 0x60A9, 0x60AA, 0x60AE, 0x60B0, -/* 0878 */ 0x60B3, 0x60B5, 0x60B6, 0x60B7, 0x60B9, 0x60BA, 0xFFFD, 0xFFFD, -/* 0880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x60C7, 0x60C8, -/* 0888 */ 0x60C9, 0x60CC, 0x60CD, 0x60CE, 0x60CF, 0x60D0, 0x60D2, 0x60D3, -/* 0890 */ 0x60D4, 0x60D6, 0x60D7, 0x60D9, 0x60DB, 0x60DE, 0x60E1, 0x60E2, -/* 0898 */ 0x60E3, 0x60E4, 0x60E5, 0x60EA, 0x60F1, 0x60F2, 0x60F5, 0x60F7, -/* 08A0 */ 0x60F8, 0x60FB, 0x60FC, 0x60FD, 0x60FE, 0x60FF, 0x6102, 0x6103, -/* 08A8 */ 0x6104, 0x6105, 0x6107, 0x610A, 0x610B, 0x610C, 0x6110, 0x6111, -/* 08B0 */ 0x6112, 0x6113, 0x6114, 0x6116, 0x6117, 0x6118, 0x6119, 0x611B, -/* 08B8 */ 0x611C, 0x611D, 0x611E, 0x6121, 0x6122, 0x6125, 0x6128, 0x6129, -/* 08C0 */ 0x612A, 0x6147, 0x6149, 0x614B, 0x614D, 0x614F, 0x6150, 0x6152, -/* 08C8 */ 0x6153, 0x6154, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08D0 */ 0xFFFD, 0x615E, 0x615F, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, -/* 08D8 */ 0x6166, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08E0 */ 0x6171, 0x6172, 0x6173, 0x6174, 0x6176, 0x618C, 0x618D, 0x618F, -/* 08E8 */ 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0x61AA, 0x61AB, 0x61BF, -/* 08F0 */ 0x61C0, 0x61C1, 0x61C3, 0x61C4, 0x61C5, 0x61C6, 0x61C7, 0x61C9, -/* 08F8 */ 0x61CC, 0x61CD, 0x61CE, 0x61CF, 0x61D0, 0x61D3, 0x6207, 0x6209, -/* 0900 */ 0x6213, 0x6214, 0x6219, 0x621C, 0x621D, 0x621E, 0x6220, 0x6223, -/* 0908 */ 0x6226, 0x6227, 0x6228, 0x6229, 0x622B, 0x622D, 0x622F, 0x6230, -/* 0910 */ 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A, 0x623B, -/* 0918 */ 0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A, 0x624F, 0x6250, -/* 0920 */ 0x6255, 0x6256, 0x6257, 0x6259, 0x625A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0928 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6264, 0x6265, 0x6268, 0x6271, -/* 0930 */ 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627A, 0x627B, 0x627D, -/* 0938 */ 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287, 0x6288, 0xFFFD, -/* 0940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6294, 0x6299, 0x629C, -/* 0948 */ 0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9, 0x62AA, 0x62AD, -/* 0950 */ 0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4, 0x62B6, 0x62B7, -/* 0958 */ 0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1, 0xFFFD, 0x62C3, 0x62CB, -/* 0960 */ 0x62CF, 0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0, 0x62E1, 0x62E4, -/* 0968 */ 0x62EA, 0x62EB, 0x62F0, 0x62F2, 0x62F5, 0x62F8, 0x62F9, 0x62FA, -/* 0970 */ 0x62FB, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 0x630A, 0x630B, -/* 0978 */ 0x630C, 0x630D, 0x630F, 0x6310, 0x6312, 0x6313, 0x6314, 0x6315, -/* 0980 */ 0x6317, 0x6318, 0x6319, 0x631C, 0x6326, 0x6327, 0x6329, 0x632C, -/* 0988 */ 0x632D, 0x632E, 0x6330, 0x6331, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0990 */ 0xFFFD, 0xFFFD, 0x633B, 0x633C, 0x633E, 0x633F, 0x6340, 0x6341, -/* 0998 */ 0x6344, 0x6347, 0x6348, 0x634A, 0x6351, 0x6352, 0x6353, 0x6354, -/* 09A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09A8 */ 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636A, 0x636B, 0x636C, -/* 09B0 */ 0x636F, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 0x6378, 0x6379, -/* 09B8 */ 0x637C, 0x637D, 0x637E, 0x637F, 0x6381, 0x6383, 0x6384, 0x6385, -/* 09C0 */ 0x6386, 0x638B, 0x638D, 0x6391, 0x6393, 0x6394, 0x6395, 0x6397, -/* 09C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x63A1, -/* 09D0 */ 0x63A4, 0x63A6, 0x63AB, 0x63AF, 0x63B1, 0x63B2, 0x63B5, 0x63B6, -/* 09D8 */ 0x63B9, 0x63BB, 0x63BD, 0x63BF, 0x63C0, 0x63C1, 0x63C2, 0x63C3, -/* 09E0 */ 0x63C5, 0x63C7, 0x63C8, 0x63CA, 0x63CB, 0x63CC, 0x63D1, 0x63D3, -/* 09E8 */ 0x63D4, 0x63D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09F0 */ 0xFFFD, 0x63DF, 0x63E2, 0x63E4, 0x63E5, 0x63E6, 0x63E7, 0x63E8, -/* 09F8 */ 0x63EB, 0x63EC, 0x63EE, 0x63EF, 0x63F0, 0x63F1, 0x63F3, 0x63F5, -/* 0A00 */ 0x63F7, 0x63F9, 0x63FA, 0x63FB, 0x63FC, 0x63FE, 0x6403, 0x6404, -/* 0A08 */ 0x6406, 0x6407, 0x6408, 0x6409, 0x640A, 0x640D, 0x640E, 0x6411, -/* 0A10 */ 0x6412, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x641D, -/* 0A18 */ 0x641F, 0x6422, 0x6423, 0x6424, 0xFFFD, 0x6425, 0x6427, 0x6428, -/* 0A20 */ 0x6429, 0x642B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A28 */ 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, 0x643B, 0x643C, 0x643E, -/* 0A30 */ 0x6440, 0x6442, 0x6443, 0x6449, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6453, 0x6455, 0x6456, 0x6457, 0x6459, -/* 0A40 */ 0x645A, 0x645B, 0x645C, 0x645D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6468, 0x646A, 0x646B, 0x646C, -/* 0A50 */ 0x6483, 0x6486, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6493, 0x6494, 0x6497, 0x6498, 0x649A, -/* 0A60 */ 0x649B, 0x649C, 0x649D, 0x649F, 0x64A0, 0x64A1, 0x64A2, 0x64A3, -/* 0A68 */ 0x64A5, 0x64A6, 0x64A7, 0x64A8, 0x64AA, 0x64AB, 0x64AF, 0x64B1, -/* 0A70 */ 0x64B2, 0x64B3, 0x64B4, 0x64B6, 0x64B9, 0x64BB, 0x64BD, 0x64BE, -/* 0A78 */ 0x64BF, 0x64C1, 0x64C3, 0x64C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x64CF, 0x64D1, 0x64D3, 0x64D4, 0x64D5, -/* 0A88 */ 0x64D6, 0x64D9, 0x64DA, 0x64DB, 0x64DC, 0x64DD, 0x64DF, 0x64E0, -/* 0A90 */ 0x64E1, 0x64E3, 0x64E5, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, -/* 0A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AA0 */ 0xFFFD, 0xFFFD, 0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, -/* 0AA8 */ 0x6529, 0x652A, 0x652C, 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, -/* 0AB0 */ 0x6537, 0x653A, 0x653C, 0x653D, 0x6540, 0x6541, 0x6542, 0x6543, -/* 0AB8 */ 0x6544, 0x6546, 0x6547, 0x654A, 0x654B, 0x654D, 0x654E, 0x6550, -/* 0AC0 */ 0x6552, 0x6553, 0x6554, 0x6557, 0x6558, 0x655A, 0x655C, 0x655F, -/* 0AC8 */ 0x6560, 0x6561, 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A, -/* 0AD0 */ 0x656D, 0x656E, 0x656F, 0x6571, 0x6573, 0x6575, 0x6576, 0x6588, -/* 0AD8 */ 0x6589, 0x658A, 0x658D, 0x658E, 0x658F, 0x6592, 0x6594, 0x6595, -/* 0AE0 */ 0x6596, 0x6598, 0x659A, 0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, -/* 0AE8 */ 0x65A6, 0x65A8, 0x65AA, 0x65AC, 0x65AE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x65BA, 0x65BB, 0x65BE, -/* 0AF8 */ 0x65BF, 0x65C0, 0x65C2, 0x65C7, 0x65C8, 0x65C9, 0x65CA, 0x65CD, -/* 0B00 */ 0x65D0, 0x65D1, 0x65D3, 0x65D4, 0x65D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x65E1, 0x65E3, 0x65E4, -/* 0B10 */ 0x65EA, 0x65EB, 0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, -/* 0B18 */ 0x65FB, 0x65FC, 0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, -/* 0B20 */ 0x6607, 0x6608, 0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, -/* 0B28 */ 0x6616, 0x6617, 0x6618, 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, -/* 0B30 */ 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662A, 0x662B, 0x662C, -/* 0B38 */ 0x662E, 0x6630, 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663A, -/* 0B40 */ 0x663B, 0x663D, 0x663F, 0x6640, 0x6642, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x664D, 0x664E, 0x6650, 0x6651, -/* 0B50 */ 0x6658, 0xFFFD, 0x6659, 0x665B, 0x665C, 0x665D, 0x665E, 0x6660, -/* 0B58 */ 0x6662, 0x6663, 0x6665, 0x6667, 0x6669, 0x666A, 0x666B, 0x666C, -/* 0B60 */ 0x666D, 0x6671, 0x6672, 0x6673, 0x6675, 0x6678, 0x6679, 0x667B, -/* 0B68 */ 0x667C, 0x667D, 0x667F, 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, -/* 0B70 */ 0x6688, 0x6689, 0x668A, 0x668B, 0x668D, 0x668E, 0x668F, 0x6690, -/* 0B78 */ 0x6692, 0x6693, 0x6694, 0x6695, 0x6698, 0x6699, 0x669A, 0x669B, -/* 0B80 */ 0x669C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B88 */ 0xFFFD, 0xFFFD, 0x66A9, 0x66AA, 0x66AB, 0x66AC, 0x66AD, 0x66AF, -/* 0B90 */ 0x66B0, 0x66B1, 0x66B2, 0x66B3, 0x66B5, 0x66B6, 0x66B7, 0x66B8, -/* 0B98 */ 0x66BA, 0x66BB, 0x66BC, 0x66BD, 0x66DA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x66E7, 0x66E8, 0xFFFD, -/* 0BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x66F1, 0x66F5, 0x66F6, -/* 0BB0 */ 0x66F8, 0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6703, 0x6704, -/* 0BB8 */ 0x6705, 0x6706, 0x6707, 0x670C, 0x670E, 0x670F, 0x6711, 0x6712, -/* 0BC0 */ 0x6713, 0x6716, 0x6718, 0x6719, 0x671A, 0x671C, 0x671E, 0xFFFD, -/* 0BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6727, 0x6729, 0x672E, -/* 0BD0 */ 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739, 0x673B, -/* 0BD8 */ 0x673C, 0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747, 0x674A, -/* 0BE0 */ 0x674B, 0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, 0x6759, -/* 0BE8 */ 0x675A, 0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766, 0x6767, -/* 0BF0 */ 0x676B, 0x676C, 0x676E, 0x6771, 0x6774, 0x6776, 0xFFFD, 0x6778, -/* 0BF8 */ 0x6779, 0x677A, 0x677B, 0x677D, 0x6780, 0x6782, 0x6783, 0x6785, -/* 0C00 */ 0x6786, 0x6788, 0x678A, 0x678C, 0x678D, 0x678E, 0x678F, 0x6791, -/* 0C08 */ 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679B, 0x679F, 0x67A0, -/* 0C10 */ 0x67A1, 0x67A4, 0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1, 0x67B2, -/* 0C18 */ 0x67B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C20 */ 0xFFFD, 0x67C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x67D5, 0x67D6, 0x67D7, 0x67DB, -/* 0C30 */ 0x67DF, 0x67E1, 0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8, 0x67EA, -/* 0C38 */ 0x67EB, 0x67ED, 0x67EE, 0x67F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x67FE, 0x6801, 0x6802, 0x6803, -/* 0C48 */ 0x6804, 0x6806, 0x680D, 0x6810, 0x6812, 0x6814, 0x6815, 0x6818, -/* 0C50 */ 0x6819, 0x681A, 0x681B, 0x681C, 0x681E, 0x681F, 0x6820, 0x6834, -/* 0C58 */ 0x6835, 0x6836, 0x683A, 0x683B, 0x683F, 0x6847, 0x684B, 0x684D, -/* 0C60 */ 0x684F, 0x6852, 0x685C, 0x685D, 0x685E, 0x685F, 0x686A, 0xFFFD, -/* 0C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6875, -/* 0C70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C78 */ 0xFFFD, 0x6882, 0x6884, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, -/* 0C88 */ 0x6896, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x68A3, 0x68A4, 0x68A5, 0x68A9, 0x68AA, -/* 0C98 */ 0x68AB, 0x68AC, 0x68AE, 0x68B1, 0x68B2, 0x68B4, 0x68B6, 0x68B7, -/* 0CA0 */ 0x68B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CA8 */ 0xFFFD, 0x68C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0x68CA, 0x68CC, 0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3, 0x68D4, -/* 0CB8 */ 0x68D6, 0x68D7, 0x68D9, 0x68DB, 0x68DC, 0x68DD, 0x68DE, 0x68DF, -/* 0CC0 */ 0x68E1, 0x68E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x68EF, 0x68F2, 0x68F3, 0x68F4, -/* 0CD0 */ 0x68F6, 0x68F7, 0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF, 0x6900, -/* 0CD8 */ 0x6902, 0x6903, 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690A, -/* 0CE0 */ 0x690C, 0x690F, 0x6911, 0x6921, 0x6922, 0x6923, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x692E, 0x692F, -/* 0CF0 */ 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937, 0x6938, 0x693A, -/* 0CF8 */ 0x693B, 0x693C, 0x693E, 0x6940, 0x6941, 0x6955, 0x6956, 0x6958, -/* 0D00 */ 0x6959, 0x695B, 0x695C, 0x695F, 0x6961, 0x6962, 0x6964, 0x6965, -/* 0D08 */ 0x6967, 0x6968, 0x6969, 0x696A, 0x696C, 0x696D, 0x696F, 0x6970, -/* 0D10 */ 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x697A, 0x697B, 0x697D, -/* 0D18 */ 0x697E, 0x697F, 0x6981, 0x6983, 0x6985, 0x698A, 0x698B, 0x698C, -/* 0D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6996, 0x6997, -/* 0D28 */ 0x6999, 0x699A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x69A9, 0x69AA, 0x69AC, 0x69AE, -/* 0D38 */ 0x69AF, 0x69B0, 0x69B2, 0x69B3, 0x69B5, 0x69B6, 0x69B8, 0x69B9, -/* 0D40 */ 0x69BA, 0x69BC, 0x69BD, 0xFFFD, 0x69BE, 0x69BF, 0x69C0, 0xFFFD, -/* 0D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x69CB, -/* 0D50 */ 0x69CD, 0x69CF, 0x69D1, 0x69D2, 0x69D3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x69DC, 0x69DD, 0x69DE, 0x69EE, 0x69EF, -/* 0D60 */ 0x69F0, 0x69F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x69FE, 0x6A20, 0xFFFD, 0xFFFD, -/* 0D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, -/* 0D78 */ 0x6A2E, 0x6A30, 0x6A32, 0x6A33, 0x6A34, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A3F, 0x6A40, 0x6A41, 0x6A42, -/* 0D88 */ 0x6A43, 0x6A45, 0x6A46, 0x6A5C, 0x6A5D, 0x6A5E, 0x6A5F, 0x6A60, -/* 0D90 */ 0x6A62, 0x6A63, 0x6A64, 0x6A7A, 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, -/* 0D98 */ 0x6A81, 0x6A82, 0x6A83, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A8F, 0x6A92, 0x6A93, 0x6A94, -/* 0DA8 */ 0x6A95, 0x6A96, 0x6AA7, 0x6AA8, 0x6AAA, 0x6B25, 0x6B26, 0x6B2F, -/* 0DB0 */ 0x6B30, 0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38, 0x6B3B, -/* 0DB8 */ 0x6B3C, 0x6B3D, 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44, 0x6B45, -/* 0DC0 */ 0x6B48, 0x6B4A, 0x6B4B, 0x6B68, 0x6B69, 0x6B7A, 0x6B7D, 0x6B7E, -/* 0DC8 */ 0x6B7F, 0x6B80, 0x6B85, 0x6B88, 0xFFFD, 0x6B8C, 0x6B8E, 0x6B8F, -/* 0DD0 */ 0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97, 0x6B98, 0x6B99, 0x6B9C, -/* 0DD8 */ 0x6B9D, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BB6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6BC0, 0x6BC3, 0x6BC4, 0x6BC6, -/* 0DE8 */ 0x6BC7, 0x6BC8, 0x6BC9, 0x6BCA, 0x6BCC, 0x6BCE, 0x6BD0, 0x6BD1, -/* 0DF0 */ 0x6BD8, 0x6BDA, 0x6BDC, 0x6BDD, 0x6BDE, 0x6BDF, 0x6BE0, 0xFFFD, -/* 0DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6BEC, -/* 0E00 */ 0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2, 0x6BF4, 0x6BF6, 0x6BF7, -/* 0E08 */ 0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C08, 0x6C09, 0x6C0A, 0x6C0B, 0x6C0C, -/* 0E18 */ 0x6C0E, 0x6C12, 0x6C17, 0x6C1C, 0x6C1D, 0x6C1E, 0x6C20, 0x6C23, -/* 0E20 */ 0x6C25, 0x6C2B, 0x6C2C, 0x6C2D, 0x6C31, 0x6C33, 0x6C36, 0x6C37, -/* 0E28 */ 0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E, 0x6C3F, 0x6C43, 0x6C44, -/* 0E30 */ 0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D, 0x6C4E, 0x6C4F, 0x6C51, -/* 0E38 */ 0x6C52, 0x6C53, 0x6C56, 0x6C58, 0x6C59, 0x6C5A, 0x6C62, 0x6C63, -/* 0E40 */ 0x6C65, 0x6C66, 0x6C67, 0x6C6B, 0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F, -/* 0E48 */ 0x6C71, 0x6C73, 0x6C75, 0x6C77, 0x6C78, 0x6C7A, 0x6C7B, 0x6C7C, -/* 0E50 */ 0x6C7F, 0x6C80, 0x6C84, 0x6C87, 0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E, -/* 0E58 */ 0x6C91, 0x6C92, 0x6C95, 0x6C96, 0x6C97, 0x6C98, 0x6C9A, 0x6C9C, -/* 0E60 */ 0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2, 0x6CA8, 0x6CAC, 0x6CAF, 0x6CB0, -/* 0E68 */ 0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7, 0x6CBA, 0x6CC0, 0x6CC1, 0x6CC2, -/* 0E70 */ 0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8, 0x6CCB, 0x6CCD, 0x6CCE, 0x6CCF, -/* 0E78 */ 0x6CD1, 0x6CD2, 0x6CD8, 0xFFFD, 0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, -/* 0E80 */ 0x6CDF, 0x6CE4, 0x6CE6, 0x6CE7, 0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, -/* 0E88 */ 0x6CF4, 0x6CF9, 0x6CFF, 0x6D00, 0x6D02, 0x6D03, 0x6D05, 0x6D06, -/* 0E90 */ 0x6D08, 0x6D09, 0x6D0A, 0x6D0D, 0x6D0F, 0x6D10, 0x6D11, 0x6D13, -/* 0E98 */ 0x6D14, 0x6D15, 0x6D16, 0x6D18, 0x6D1C, 0x6D1D, 0xFFFD, 0xFFFD, -/* 0EA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D26, 0x6D28, 0x6D29, 0x6D2C, -/* 0EA8 */ 0x6D2D, 0x6D2F, 0x6D30, 0x6D34, 0x6D36, 0x6D37, 0x6D38, 0x6D3A, -/* 0EB0 */ 0x6D3F, 0x6D40, 0x6D42, 0x6D44, 0x6D49, 0x6D4C, 0x6D50, 0x6D55, -/* 0EB8 */ 0x6D56, 0x6D57, 0x6D58, 0x6D5B, 0x6D5D, 0x6D5F, 0x6D61, 0x6D62, -/* 0EC0 */ 0x6D64, 0x6D65, 0x6D67, 0x6D68, 0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, -/* 0EC8 */ 0x6D71, 0x6D72, 0x6D73, 0x6D75, 0x6D76, 0x6D79, 0x6D7A, 0x6D7B, -/* 0ED0 */ 0x6D7D, 0x6D7E, 0x6D7F, 0x6D80, 0x6D81, 0x6D83, 0x6D84, 0x6D86, -/* 0ED8 */ 0x6D87, 0x6D8A, 0x6D8B, 0x6D8D, 0x6D8F, 0x6D90, 0x6D92, 0x6D96, -/* 0EE0 */ 0x6D97, 0x6D98, 0x6D99, 0x6D9A, 0x6D9C, 0x6DA2, 0x6DA5, 0x6DAC, -/* 0EE8 */ 0x6DAD, 0x6DB0, 0x6DB1, 0x6DB3, 0x6DB4, 0x6DB6, 0x6DB7, 0xFFFD, -/* 0EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6DC1, 0x6DC2, 0x6DC3, -/* 0EF8 */ 0x6DC8, 0x6DC9, 0x6DCA, 0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, -/* 0F00 */ 0x6DD3, 0x6DD4, 0x6DD5, 0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, -/* 0F08 */ 0x6DE2, 0x6DE3, 0x6DE5, 0x6DE7, 0x6DE8, 0x6DE9, 0x6DEA, 0x6DED, -/* 0F10 */ 0x6DEF, 0x6DF0, 0x6DF2, 0x6DF4, 0x6DF5, 0x6DF6, 0x6DF8, 0x6DFA, -/* 0F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F20 */ 0x6E06, 0x6E07, 0x6E08, 0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, -/* 0F28 */ 0x6E15, 0x6E18, 0x6E19, 0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, -/* 0F30 */ 0x6E26, 0x6E27, 0x6E28, 0x6E2A, 0x6E2C, 0x6E2E, 0x6E30, 0x6E31, -/* 0F38 */ 0x6E33, 0x6E35, 0xFFFD, 0x6E36, 0x6E37, 0x6E39, 0x6E4F, 0x6E50, -/* 0F40 */ 0x6E51, 0x6E52, 0x6E55, 0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, -/* 0F48 */ 0x6E5E, 0x6E6C, 0x6E6D, 0x6E80, 0x6E81, 0x6E82, 0x6E84, 0x6E87, -/* 0F50 */ 0x6E88, 0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E, 0xFFFD, 0xFFFD, -/* 0F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E99, 0x6E9A, 0x6E9B, -/* 0F60 */ 0x6E9D, 0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8, -/* 0F68 */ 0x6EA9, 0x6EAB, 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5, -/* 0F70 */ 0x6EB8, 0x6EB9, 0x6EBC, 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC4, -/* 0F78 */ 0x6EC5, 0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECC, 0x6ECD, 0x6ECE, -/* 0F80 */ 0x6ED0, 0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD, -/* 0F88 */ 0x6EE3, 0x6EE7, 0x6EF0, 0x6EF1, 0x6EF2, 0x6EF3, 0x6EF5, 0x6EF6, -/* 0F90 */ 0x6EF7, 0x6EF8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F98 */ 0xFFFD, 0xFFFD, 0x6F03, 0x6F04, 0x6F05, 0x6F07, 0x6F08, 0x6F0A, -/* 0FA0 */ 0x6F0B, 0x6F0C, 0x6F0D, 0x6F0E, 0x6F10, 0x6F11, 0x6F12, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FB0 */ 0xFFFD, 0x6F21, 0x6F22, 0x6F23, 0x6F25, 0x6F26, 0x6F27, 0x6F28, -/* 0FB8 */ 0x6F2C, 0x6F2E, 0x6F30, 0x6F32, 0x6F34, 0x6F35, 0xFFFD, 0xFFFD, -/* 0FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F3F, 0x6F40, 0x6F41, -/* 0FC8 */ 0x6F42, 0xFFFD, 0x6F43, 0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, -/* 0FD0 */ 0x6F4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F59, 0x6F5A, 0x6F5B, 0x6F5D, 0x6F5F, -/* 0FE0 */ 0x6F60, 0x6F61, 0x6F63, 0x6F64, 0x6F65, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F6F, 0x6F70, 0x6F71, 0x6F73, 0x6F75, -/* 0FF0 */ 0x6F76, 0x6F77, 0x6F79, 0x6F7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F85, 0x6F86, 0x6F87, 0x6F8A, 0x6F8B, -/* 1000 */ 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA0, 0x6FA2, 0x6FA3, 0x6FA4, 0x6FA5, -/* 1008 */ 0x6FA6, 0x6FB4, 0x6FB5, 0x6FB7, 0x6FB8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6FC1, 0x6FDF, 0x6FE2, 0x6FE3, 0x6FE4, -/* 1018 */ 0x6FE5, 0x7036, 0x7037, 0x7038, 0x704D, 0x704E, 0x706E, 0x7071, -/* 1020 */ 0x7072, 0x7073, 0x7074, 0x7077, 0x7079, 0x707A, 0x707B, 0x707D, -/* 1028 */ 0x7081, 0x7082, 0x7083, 0x7084, 0x7086, 0x7087, 0x7088, 0x708B, -/* 1030 */ 0x708C, 0x708D, 0x708F, 0x7090, 0x7091, 0x7093, 0x7097, 0x7098, -/* 1038 */ 0x709A, 0x709B, 0x70B0, 0x70B2, 0x70B4, 0x70B5, 0x70B6, 0x70BA, -/* 1040 */ 0x70BE, 0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7, 0x70C9, 0x70DC, -/* 1048 */ 0x70DD, 0x70DE, 0x70E0, 0x70E1, 0x70E2, 0x70E3, 0x70E5, 0x70EA, -/* 1050 */ 0x70EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1058 */ 0x70F8, 0x70FA, 0x70FB, 0x70FC, 0x710B, 0x710C, 0x710D, 0x710E, -/* 1060 */ 0x710F, 0x7111, 0x7112, 0x7114, 0x7117, 0x7132, 0x7133, 0x7134, -/* 1068 */ 0xFFFD, 0x7135, 0x7146, 0x7147, 0x7148, 0x7149, 0x714B, 0x714D, -/* 1070 */ 0x715D, 0x715F, 0x7160, 0x7161, 0x7162, 0x7163, 0x7165, 0x7169, -/* 1078 */ 0x716A, 0x716B, 0x716C, 0x716D, 0x716F, 0x7170, 0x7171, 0x7174, -/* 1080 */ 0x7175, 0x7176, 0x7177, 0x7179, 0x717B, 0x717C, 0xFFFD, 0xFFFD, -/* 1088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7185, 0x7186, 0x7187, 0x7188, -/* 1090 */ 0x7189, 0x718B, 0x718C, 0x718D, 0x718E, 0x7190, 0x7191, 0x7192, -/* 1098 */ 0x7193, 0x7195, 0x7196, 0x7197, 0x719A, 0x719B, 0x719C, 0x719D, -/* 10A0 */ 0x719E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10A8 */ 0x71A9, 0x71AA, 0x71AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10B0 */ 0xFFFD, 0x71B4, 0x71B6, 0x71B7, 0x71B8, 0x71CF, 0x71D0, 0x71D1, -/* 10B8 */ 0x71D2, 0x71D3, 0x71E1, 0x71E2, 0x71E3, 0x71E4, 0x71E6, 0x721B, -/* 10C0 */ 0x721C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7229, 0x722B, 0x722D, 0x722E, 0x722F, -/* 10D0 */ 0x7232, 0x7233, 0x7234, 0x723A, 0x723C, 0x723E, 0xFFFD, 0xFFFD, -/* 10D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7249, 0x724A, 0x724B, -/* 10E0 */ 0x724E, 0x724F, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257, -/* 10E8 */ 0x7258, 0x725A, 0x725C, 0x725E, 0x7260, 0x7263, 0x7264, 0x7265, -/* 10F0 */ 0x7268, 0x726A, 0x726B, 0x726C, 0x726D, 0x7270, 0x7271, 0x7273, -/* 10F8 */ 0x7274, 0x7276, 0x7277, 0x7278, 0x727B, 0x727C, 0x727D, 0x7282, -/* 1100 */ 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728C, 0x728E, -/* 1108 */ 0x7290, 0x7291, 0x72AE, 0x72B1, 0x72B2, 0x72B3, 0x72B5, 0xFFFD, -/* 1110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x72C5, 0x72C6, -/* 1118 */ 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF, 0x72D1, 0x72D3, -/* 1120 */ 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB, 0x3000, 0x3001, -/* 1128 */ 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003, 0x3005, 0x2014, -/* 1130 */ 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, 0x201C, 0x201D, 0x3014, -/* 1138 */ 0x3015, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1140 */ 0xFFFD, 0x3016, 0x3017, 0x3010, 0x3011, 0x00B1, 0x00D7, 0x00F7, -/* 1148 */ 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, 0x222A, 0x2229, 0x2208, -/* 1150 */ 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312, 0x2299, 0x222B, -/* 1158 */ 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D, 0x2260, 0x226E, -/* 1160 */ 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234, 0x2642, 0x2640, -/* 1168 */ 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4, 0xFFE0, 0xFFE1, -/* 1170 */ 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, -/* 1178 */ 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x203B, 0x2192, -/* 1180 */ 0x2190, 0x2191, 0x2193, 0x3013, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, -/* 1188 */ 0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E, -/* 1190 */ 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0xFFFD, 0xFFFD, 0xFE3B, 0xFE3C, -/* 1198 */ 0xFE37, 0xFE38, 0xFE31, 0xFFFD, 0xFE33, 0xFE34, 0x02CA, 0x02CB, -/* 11A0 */ 0x02D9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105, 0x2109, 0x2196, -/* 11A8 */ 0x2197, 0x2198, 0x2199, 0x2215, 0x221F, 0x2223, 0x2252, 0x2266, -/* 11B0 */ 0x2267, 0x22BF, 0x2593, 0x2594, 0x2595, 0x25BC, 0x25BD, 0x25E2, -/* 11B8 */ 0x25E3, 0x25E4, 0x25E5, 0x2609, 0x2295, 0x3012, 0x301D, 0x301E, -/* 11C0 */ 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 0x00E8, -/* 11C8 */ 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, -/* 11D0 */ 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, -/* 11D8 */ 0x00FC, 0x00EA, 0x0251, 0xFFFD, 0x0144, 0x0148, 0xFFFD, 0x0261, -/* 11E0 */ 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1, 0x33C4, -/* 11E8 */ 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4, 0xFFFD, -/* 11F0 */ 0x2121, 0x3231, 0xFFFD, 0x2010, 0xFFFD, 0xFFFD, 0xFFFD, 0x30FC, -/* 11F8 */ 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D, 0x309E, 0xFFFD, -/* 1200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1208 */ 0xFFFD, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFE62, -/* 1218 */ 0xFE63, 0xFE64, 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A, 0xFE6B, -/* 1220 */ 0x72DC, 0x72DD, 0x72DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1228 */ 0xFFFD, 0x72EA, 0x72EB, 0x72F5, 0x72F6, 0x72F9, 0x72FD, 0x72FE, -/* 1230 */ 0x72FF, 0x7300, 0x7302, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1238 */ 0xFFFD, 0x730B, 0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312, -/* 1240 */ 0x7314, 0x7318, 0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324, -/* 1248 */ 0x7326, 0x7327, 0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333, -/* 1250 */ 0x7335, 0x7336, 0x733A, 0x733B, 0x733C, 0x733D, 0xFFFD, 0xFFFD, -/* 1258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1260 */ 0x7349, 0x734A, 0x734B, 0x734C, 0x734E, 0x734F, 0x7351, 0x7353, -/* 1268 */ 0x7354, 0x7355, 0x7356, 0x736E, 0x7370, 0x7371, 0x737F, 0x7380, -/* 1270 */ 0x7381, 0x7382, 0x7383, 0x7385, 0x7386, 0x7388, 0x738A, 0x738C, -/* 1278 */ 0x738D, 0x738F, 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, -/* 1280 */ 0x7398, 0x7399, 0x739A, 0x739C, 0x739D, 0x739E, 0x73A0, 0x73A1, -/* 1288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x73AA, 0x73AC, -/* 1290 */ 0x73AD, 0x73B1, 0x73B4, 0x73B5, 0x73B6, 0x73B8, 0x73B9, 0x73BC, -/* 1298 */ 0x73BD, 0x73BE, 0x73BF, 0x73C1, 0x73C3, 0x73C4, 0x73C5, 0x73C6, -/* 12A0 */ 0x73C7, 0xFFFD, 0x73CB, 0x73CC, 0x73CE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x73DA, 0x73DB, 0x73DC, 0x73DD, -/* 12B0 */ 0x73DF, 0x73E1, 0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8, 0x73EA, -/* 12B8 */ 0x73EB, 0x73EC, 0x73EE, 0x73EF, 0x73F0, 0x73F1, 0x73F3, 0x73F4, -/* 12C0 */ 0x73F5, 0x73F6, 0x73F7, 0x7404, 0x7407, 0x7408, 0x740B, 0x740C, -/* 12C8 */ 0x740D, 0x740E, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B, 0x742D, -/* 12D0 */ 0x742F, 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A, 0x743B, -/* 12D8 */ 0x743D, 0x743E, 0x743F, 0x7440, 0x7456, 0x7458, 0x745D, 0x746E, -/* 12E0 */ 0x746F, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, -/* 12E8 */ 0x747A, 0x747B, 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, -/* 12F0 */ 0x7486, 0x7488, 0x7489, 0x748A, 0x748C, 0x748D, 0x748F, 0x74DD, -/* 12F8 */ 0x74DF, 0x74E1, 0x74E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1300 */ 0xFFFD, 0xFFFD, 0x74F0, 0x74F1, 0x74F2, 0x74F3, 0x74F5, 0xFFFD, -/* 1308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7500, 0x7501, -/* 1310 */ 0x7502, 0x7503, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1318 */ 0xFFFD, 0xFFFD, 0x750E, 0x7510, 0x7512, 0x7514, 0x7515, 0x7516, -/* 1320 */ 0x7517, 0x751B, 0x751D, 0x751E, 0x7520, 0x7521, 0x7522, 0x7523, -/* 1328 */ 0x7524, 0x7526, 0x7527, 0x752A, 0x752E, 0x7534, 0x7536, 0x7539, -/* 1330 */ 0x753C, 0x753D, 0x753F, 0x7541, 0x7542, 0x7543, 0x7544, 0x7546, -/* 1338 */ 0x7547, 0x7549, 0x754A, 0x754D, 0x7550, 0x7551, 0x7552, 0x7553, -/* 1340 */ 0x7555, 0x7556, 0x7557, 0x7558, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7567, 0x7568, 0x7569, -/* 1350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7573, -/* 1358 */ 0x7575, 0x7576, 0x7577, 0x757A, 0x757B, 0x757C, 0x757D, 0x757E, -/* 1360 */ 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 0x7587, 0x7588, 0x7589, -/* 1368 */ 0x758A, 0x758C, 0x758D, 0x758E, 0x7590, 0x7593, 0x7595, 0x7598, -/* 1370 */ 0x759B, 0x759C, 0x759E, 0x75A2, 0x75A6, 0x75A7, 0x75A8, 0x75A9, -/* 1378 */ 0x75AA, 0x75AD, 0x75B6, 0x75B7, 0x75BA, 0x75BB, 0x75BF, 0x75C0, -/* 1380 */ 0x75C1, 0x75C6, 0x75CB, 0x75CC, 0x75CE, 0x75CF, 0x75D0, 0x75D1, -/* 1388 */ 0x75D3, 0x75D7, 0x75D9, 0x75DA, 0x75DC, 0x75DD, 0x75DF, 0x75E0, -/* 1390 */ 0x75E1, 0x75E5, 0x75E9, 0x75EC, 0x75ED, 0x75EE, 0x75EF, 0x75F2, -/* 1398 */ 0x75F3, 0x75F5, 0x75F6, 0x75F7, 0x75F8, 0x75FA, 0x75FB, 0x75FD, -/* 13A0 */ 0x75FE, 0x7602, 0x7604, 0x7606, 0x7607, 0xFFFD, 0x7608, 0x7609, -/* 13A8 */ 0x760B, 0x760D, 0x760E, 0x760F, 0x7611, 0x7612, 0x7613, 0x7614, -/* 13B0 */ 0x7616, 0x761A, 0x761C, 0x761D, 0x761E, 0x7621, 0x7623, 0x7627, -/* 13B8 */ 0x7628, 0x762C, 0x762E, 0x762F, 0x7631, 0x7632, 0x7636, 0x7637, -/* 13C0 */ 0x7639, 0x763A, 0x763B, 0x763D, 0x7641, 0x7642, 0x7644, 0x7655, -/* 13C8 */ 0x7657, 0x7658, 0x7659, 0x765A, 0x765B, 0x765D, 0x765F, 0x7660, -/* 13D0 */ 0x7661, 0x7662, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13D8 */ 0xFFFD, 0x766C, 0x766D, 0x766E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7679, 0x767A, 0x767C, 0x767F, -/* 13E8 */ 0x7680, 0x7681, 0x7683, 0x7685, 0x7689, 0x768A, 0x768C, 0x768D, -/* 13F0 */ 0x768F, 0x7690, 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769A, -/* 13F8 */ 0x769B, 0x76AF, 0x76B0, 0x76B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x76C0, 0x76C1, -/* 1408 */ 0x76C3, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, 0x54C0, -/* 1410 */ 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, 0x9698, -/* 1418 */ 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA, -/* 1420 */ 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1, -/* 1428 */ 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252, -/* 1430 */ 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB, -/* 1438 */ 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D, -/* 1440 */ 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, 0x6591, -/* 1448 */ 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, 0x626E, -/* 1450 */ 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, 0x5E2E, -/* 1458 */ 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, 0x9551, -/* 1460 */ 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265, 0x76C4, -/* 1468 */ 0x76C7, 0x76C9, 0x76CB, 0x76CC, 0x76D3, 0x76D5, 0x76D9, 0x76DA, -/* 1470 */ 0x76DC, 0x76DD, 0x76DE, 0x76E0, 0x76E1, 0x76E2, 0x76E3, 0x76E4, -/* 1478 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1480 */ 0x76F0, 0x76F3, 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB, 0x76FD, -/* 1488 */ 0x76FF, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770A, 0x770C, -/* 1490 */ 0x771B, 0x771C, 0x771D, 0x771E, 0x7721, 0x7723, 0x7724, 0x7725, -/* 1498 */ 0x7727, 0x772A, 0x772B, 0xFFFD, 0x772C, 0x772E, 0x7730, 0x7731, -/* 14A0 */ 0x7732, 0x7733, 0x7734, 0x7739, 0x773B, 0x773D, 0x773E, 0x773F, -/* 14A8 */ 0x7742, 0x7744, 0x7745, 0x7746, 0x775C, 0x8584, 0x96F9, 0x4FDD, -/* 14B0 */ 0x5821, 0x9971, 0x5B9D, 0x62B1, 0x62A5, 0x66B4, 0x8C79, 0x9C8D, -/* 14B8 */ 0x7206, 0x676F, 0x7891, 0x60B2, 0x5351, 0x5317, 0x8F88, 0x80CC, -/* 14C0 */ 0x8D1D, 0x94A1, 0x500D, 0x72C8, 0x5907, 0x60EB, 0x7119, 0x88AB, -/* 14C8 */ 0x5954, 0x82EF, 0x672C, 0x7B28, 0x5D29, 0x7EF7, 0x752D, 0x6CF5, -/* 14D0 */ 0x8E66, 0x8FF8, 0x903C, 0x9F3B, 0x6BD4, 0x9119, 0x7B14, 0x5F7C, -/* 14D8 */ 0x78A7, 0x84D6, 0x853D, 0x6BD5, 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, -/* 14E0 */ 0x75F9, 0x95ED, 0x655D, 0x5F0A, 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, -/* 14E8 */ 0x907F, 0x965B, 0x97AD, 0x8FB9, 0x7F16, 0x8D2C, 0x6241, 0x4FBF, -/* 14F0 */ 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 0x8FAB, 0x904D, 0x6807, 0x5F6A, -/* 14F8 */ 0x8198, 0x8868, 0x9CD6, 0x618B, 0x522B, 0x762A, 0x5F6C, 0x658C, -/* 1500 */ 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 0x5175, 0x51B0, 0x67C4, 0x4E19, -/* 1508 */ 0x79C9, 0x997C, 0x70B3, 0x775D, 0x775E, 0x775F, 0x7760, 0x7764, -/* 1510 */ 0x7767, 0x7769, 0x776A, 0x777A, 0x777B, 0x777C, 0x7781, 0x7782, -/* 1518 */ 0x7783, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x778F, -/* 1520 */ 0x7790, 0x77A1, 0x77A3, 0x77A4, 0x77A6, 0x77A8, 0x77AB, 0x77AD, -/* 1528 */ 0x77AE, 0x77AF, 0x77B1, 0x77B2, 0x77B4, 0x77B6, 0x77B7, 0x77B8, -/* 1530 */ 0x77B9, 0x77BA, 0xFFFD, 0x77BC, 0x77BE, 0x77D8, 0x77D9, 0x77DA, -/* 1538 */ 0x77DD, 0x77DE, 0x77DF, 0x77E0, 0x77E1, 0x77E4, 0x75C5, 0x5E76, -/* 1540 */ 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, 0x6CE2, 0x535A, 0x52C3, -/* 1548 */ 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, 0x8236, 0x8116, 0x818A, -/* 1550 */ 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA, 0x8865, 0x57E0, -/* 1558 */ 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, 0x64E6, 0x731C, -/* 1560 */ 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 0x8E29, 0x91C7, 0x5F69, -/* 1568 */ 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 0x6B8B, 0x60ED, 0x60E8, -/* 1570 */ 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 0x85CF, 0x64CD, 0x7CD9, -/* 1578 */ 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, 0x4FA7, 0x518C, 0x6D4B, -/* 1580 */ 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 0x8336, 0x67E5, 0x78B4, -/* 1588 */ 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, 0x62C6, 0x67F4, 0x8C7A, -/* 1590 */ 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, 0x7F20, 0x94F2, 0x4EA7, -/* 1598 */ 0x9610, 0x98A4, 0x660C, 0x7316, 0x77E6, 0x77E8, 0x77EA, 0x77EF, -/* 15A0 */ 0x77F0, 0x77F1, 0x77F2, 0x77F4, 0x77F5, 0x77F7, 0x77F9, 0x77FA, -/* 15A8 */ 0x77FB, 0x77FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15B0 */ 0x780A, 0x780B, 0x780E, 0x780F, 0x7810, 0x7813, 0x7815, 0x7819, -/* 15B8 */ 0x781B, 0x781E, 0x7820, 0x7821, 0x7822, 0x7824, 0x7828, 0x782A, -/* 15C0 */ 0x782B, 0x782E, 0x782F, 0x7831, 0x7832, 0x7833, 0x7835, 0x7836, -/* 15C8 */ 0x783D, 0x783F, 0x7841, 0x7842, 0x7843, 0x7844, 0x7846, 0x7848, -/* 15D0 */ 0x7849, 0x784A, 0x784B, 0x784D, 0x784F, 0x7851, 0x7853, 0x7854, -/* 15D8 */ 0x7858, 0x7859, 0x785A, 0xFFFD, 0x785B, 0x785C, 0x7878, 0x7879, -/* 15E0 */ 0x787A, 0x787B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15E8 */ 0xFFFD, 0x573A, 0x5C1D, 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, -/* 15F0 */ 0x655E, 0x7545, 0x5531, 0x5021, 0x8D85, 0x6284, 0x949E, 0x671D, -/* 15F8 */ 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, 0x8F66, 0x626F, 0x64A4, -/* 1600 */ 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0, 0x5C18, 0x6668, -/* 1608 */ 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0, 0x57CE, -/* 1610 */ 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA, -/* 1618 */ 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, -/* 1620 */ 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A, -/* 1628 */ 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, -/* 1630 */ 0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, -/* 1638 */ 0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED, 0x521D, 0x51FA, 0x6A71, -/* 1640 */ 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, 0x9664, 0x695A, 0x7884, -/* 1648 */ 0x7885, 0x7886, 0x7888, 0x788A, 0x788B, 0x788F, 0x7890, 0x7892, -/* 1650 */ 0x7894, 0x7895, 0x7896, 0x7899, 0x789D, 0x789E, 0x78A0, 0x78A2, -/* 1658 */ 0x78A4, 0x78A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1660 */ 0xFFFD, 0xFFFD, 0x78B5, 0x78B6, 0x78B7, 0x78B8, 0x78BA, 0x78BB, -/* 1668 */ 0x78BC, 0x78BD, 0x78BF, 0x78C0, 0x78C2, 0x78C3, 0x78C4, 0x78C6, -/* 1670 */ 0x78C7, 0x78C8, 0x78CC, 0x78CD, 0x78CE, 0x78CF, 0x78D1, 0x78D2, -/* 1678 */ 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78E4, 0x78E5, 0x78E6, 0x78E7, -/* 1680 */ 0x78E9, 0x78EA, 0x78EB, 0x78ED, 0x78EE, 0x78EF, 0x78F0, 0x78F1, -/* 1688 */ 0x78F3, 0x78F5, 0x78F6, 0x78F8, 0x78F9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7902, 0x7903, 0x7904, 0xFFFD, 0xFFFD, -/* 1698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7840, 0x50A8, 0x77D7, -/* 16A0 */ 0x6410, 0x89E6, 0x5904, 0x63E3, 0x5DDD, 0x7A7F, 0x693D, 0x4F20, -/* 16A8 */ 0x8239, 0x5598, 0x4E32, 0x75AE, 0x7A97, 0x5E62, 0x5E8A, 0x95EF, -/* 16B0 */ 0x521B, 0x5439, 0x708A, 0x6376, 0x9524, 0x5782, 0x6625, 0x693F, -/* 16B8 */ 0x9187, 0x5507, 0x6DF3, 0x7EAF, 0x8822, 0x6233, 0x7EF0, 0x75B5, -/* 16C0 */ 0x8328, 0x78C1, 0x96CC, 0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64, -/* 16C8 */ 0x523A, 0x8D50, 0x6B21, 0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, -/* 16D0 */ 0x4E1B, 0x51D1, 0x7C97, 0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, -/* 16D8 */ 0x7A9C, 0x6467, 0x5D14, 0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, -/* 16E0 */ 0x7FE0, 0x6751, 0x5B58, 0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, -/* 16E8 */ 0x632B, 0x9519, 0x642D, 0x8FBE, 0x7B54, 0x7629, 0x6253, 0x5927, -/* 16F0 */ 0x5446, 0x6B79, 0x50A3, 0x6234, 0x5E26, 0x6B86, 0x4EE3, 0x8D37, -/* 16F8 */ 0x888B, 0x5F85, 0x902E, 0x791F, 0x7920, 0x7921, 0x7922, 0x7923, -/* 1700 */ 0x7935, 0x7936, 0x7937, 0x7938, 0x7939, 0x793D, 0x793F, 0x7942, -/* 1708 */ 0x7943, 0x7944, 0x7945, 0x7947, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7954, 0x7955, 0x7958, -/* 1718 */ 0x7959, 0x7961, 0x7963, 0xFFFD, 0x7964, 0x7966, 0x7969, 0x796A, -/* 1720 */ 0x796B, 0x796C, 0x796E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1728 */ 0xFFFD, 0xFFFD, 0x7979, 0x797B, 0x797C, 0x797D, 0x797E, 0x797F, -/* 1730 */ 0x7982, 0x7983, 0x7986, 0x7987, 0x7988, 0x7989, 0x798B, 0x798C, -/* 1738 */ 0x798D, 0x798E, 0x7990, 0x7991, 0x7992, 0x6020, 0x803D, 0x62C5, -/* 1740 */ 0x4E39, 0x5355, 0x90F8, 0x63B8, 0x80C6, 0x65E6, 0x6C2E, 0x4F46, -/* 1748 */ 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, 0x86CB, 0x5F53, 0x6321, 0x515A, -/* 1750 */ 0x8361, 0x6863, 0x5200, 0x6363, 0x8E48, 0x5012, 0x5C9B, 0x7977, -/* 1758 */ 0x5BFC, 0x5230, 0x7A3B, 0x60BC, 0x9053, 0x76D7, 0x5FB7, 0x5F97, -/* 1760 */ 0x7684, 0x8E6C, 0x706F, 0x767B, 0x7B49, 0x77AA, 0x51F3, 0x9093, -/* 1768 */ 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 0x654C, 0x7B1B, 0x72C4, 0x6DA4, -/* 1770 */ 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 0x5730, 0x8482, 0x7B2C, 0x5E1D, -/* 1778 */ 0x5F1F, 0x9012, 0x7F14, 0x98A0, 0x6382, 0x6EC7, 0x7898, 0x70B9, -/* 1780 */ 0x5178, 0x975B, 0x57AB, 0x7535, 0x4F43, 0x7538, 0x5E97, 0x60E6, -/* 1788 */ 0x5960, 0x6DC0, 0x6BBF, 0x7889, 0x53FC, 0x96D5, 0x51CB, 0x5201, -/* 1790 */ 0x6389, 0x540A, 0x9493, 0x8C03, 0x8DCC, 0x7239, 0x789F, 0x8776, -/* 1798 */ 0x8FED, 0x8C0D, 0x53E0, 0x79B4, 0x79B5, 0x79B6, 0x79B7, 0x79B8, -/* 17A0 */ 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5, 0x79C7, 0x79C8, 0x79CA, -/* 17A8 */ 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3, 0x79D4, 0x79D6, 0x79D7, -/* 17B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x79E0, 0x79E1, -/* 17B8 */ 0x79E2, 0x79E5, 0x79E8, 0x79EA, 0xFFFD, 0x79EC, 0x79EE, 0xFFFD, -/* 17C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x79F9, 0x79FA, -/* 17C8 */ 0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04, 0x7A05, 0x7A07, 0x7A08, -/* 17D0 */ 0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10, 0x7A11, 0x7A12, 0x7A13, -/* 17D8 */ 0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B, 0x7A1C, 0x4E01, 0x76EF, -/* 17E0 */ 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A, 0x8BA2, 0x4E22, -/* 17E8 */ 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, 0x4F97, 0x606B, -/* 17F0 */ 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, 0x8C46, 0x9017, -/* 17F8 */ 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, 0x8BFB, 0x5835, -/* 1800 */ 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, 0x5EA6, 0x6E21, 0x5992, -/* 1808 */ 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, 0x7F0E, 0x5806, 0x5151, -/* 1810 */ 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, 0x6566, 0x987F, 0x56E4, -/* 1818 */ 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, 0x591A, 0x593A, 0x579B, -/* 1820 */ 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 0x60F0, 0x5815, 0x86FE, -/* 1828 */ 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25, 0x6076, 0x5384, -/* 1830 */ 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, 0x513F, 0x8033, -/* 1838 */ 0x5C14, 0x9975, 0x6D31, 0x4E8C, 0x7A1D, 0x7A1F, 0x7A21, 0x7A22, -/* 1840 */ 0x7A34, 0x7A35, 0x7A36, 0x7A38, 0x7A3A, 0x7A3E, 0x7A52, 0x7A53, -/* 1848 */ 0x7A54, 0x7A55, 0x7A56, 0x7A71, 0x7A72, 0x7A73, 0x7A75, 0x7A7B, -/* 1850 */ 0x7A7C, 0x7A7D, 0x7A7E, 0x7A82, 0x7A85, 0x7A87, 0x7A89, 0x7A8A, -/* 1858 */ 0x7A8B, 0x7A8C, 0x7A8E, 0x7A8F, 0x7A90, 0x7A93, 0x7A94, 0x7A99, -/* 1860 */ 0x7A9A, 0x7A9B, 0x7A9E, 0x7AA1, 0x7AA2, 0x8D30, 0x53D1, 0x7F5A, -/* 1868 */ 0x7B4F, 0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0, 0x85E9, 0x5E06, -/* 1870 */ 0x756A, 0x7FFB, 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1, 0x70E6, -/* 1878 */ 0x53CD, 0x8FD4, 0x8303, 0x8D29, 0x72AF, 0x996D, 0x6CDB, 0x574A, -/* 1880 */ 0x82B3, 0x65B9, 0x80AA, 0x623F, 0x9632, 0x59A8, 0x4EFF, 0x8BBF, -/* 1888 */ 0x7EBA, 0x653E, 0x83F2, 0x975E, 0x5561, 0x98DE, 0x80A5, 0x532A, -/* 1890 */ 0x8BFD, 0x5420, 0x80BA, 0x5E9F, 0x6CB8, 0x8D39, 0x82AC, 0x915A, -/* 1898 */ 0x5429, 0x6C1B, 0x5206, 0x7EB7, 0x575F, 0x711A, 0x6C7E, 0x7C89, -/* 18A0 */ 0x594B, 0x4EFD, 0x5FFF, 0x6124, 0x7CAA, 0x4E30, 0x5C01, 0x67AB, -/* 18A8 */ 0x8702, 0x5CF0, 0x950B, 0x98CE, 0x75AF, 0x70FD, 0x9022, 0x51AF, -/* 18B0 */ 0x7F1D, 0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426, 0x592B, 0x6577, -/* 18B8 */ 0x80A4, 0x5B75, 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F, 0x7B26, -/* 18C0 */ 0x4F0F, 0x4FD8, 0x670D, 0x7AA3, 0x7AA4, 0x7AA7, 0x7AA9, 0x7AAA, -/* 18C8 */ 0x7AAB, 0x7AAE, 0x7AAF, 0x7AB0, 0x7AB1, 0x7AB2, 0x7AD7, 0x7AD8, -/* 18D0 */ 0x7ADA, 0x7ADB, 0x7ADC, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE4, 0xFFFD, -/* 18D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7AEE, 0x7AF0, 0x7AF1, -/* 18E0 */ 0x7AF2, 0x7AF3, 0xFFFD, 0x7AF4, 0x7AF5, 0x7AF6, 0x7AF7, 0x7AF8, -/* 18E8 */ 0x7AFB, 0x7AFC, 0x7AFE, 0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, -/* 18F0 */ 0x7B09, 0x7B0C, 0x7B0D, 0x7B0E, 0x7B10, 0x7B12, 0x7B13, 0x7B16, -/* 18F8 */ 0x7B17, 0x7B18, 0x7B1A, 0x7B1C, 0x7B1D, 0x7B1F, 0x7B21, 0x7B22, -/* 1900 */ 0x7B23, 0x7B27, 0x7B29, 0x7B2D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, -/* 1908 */ 0x5F17, 0x752B, 0x629A, 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, -/* 1910 */ 0x8151, 0x5E9C, 0x8150, 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, -/* 1918 */ 0x5085, 0x4ED8, 0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, -/* 1920 */ 0x9644, 0x5987, 0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, -/* 1928 */ 0x6982, 0x9499, 0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, -/* 1930 */ 0x7AFF, 0x809D, 0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, -/* 1938 */ 0x521A, 0x94A2, 0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, -/* 1940 */ 0x7BD9, 0x768B, 0x9AD8, 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, -/* 1948 */ 0x7A3F, 0x544A, 0x54E5, 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, -/* 1950 */ 0x7599, 0x5272, 0x9769, 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, -/* 1958 */ 0x94EC, 0x4E2A, 0x5404, 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, -/* 1960 */ 0x5E9A, 0x7FB9, 0x7B2F, 0x7B30, 0x7B32, 0x7B34, 0x7B35, 0x7B36, -/* 1968 */ 0x7B37, 0x7B39, 0x7B3B, 0x7B3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1970 */ 0xFFFD, 0xFFFD, 0x7B46, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E, 0x7B53, -/* 1978 */ 0x7B55, 0x7B57, 0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B6F, -/* 1980 */ 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C, 0x7B7D, -/* 1988 */ 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B8E, 0x7B8F, 0xFFFD, 0x7B91, -/* 1998 */ 0x7B92, 0x7B93, 0x7B96, 0x7B98, 0x7B99, 0x7B9A, 0x7B9B, 0x7B9E, -/* 19A0 */ 0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5, 0x7BAE, 0x7BAF, 0x7BB0, -/* 19A8 */ 0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7BC2, 0x7BC3, 0x7BC4, -/* 19B8 */ 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, 0x9F9A, -/* 19C0 */ 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, 0x62F1, -/* 19C8 */ 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, 0x57A2, -/* 19D0 */ 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 0x4F30, -/* 19D8 */ 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 0x8C37, -/* 19E0 */ 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 0x5250, -/* 19E8 */ 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 0x5173, -/* 19F0 */ 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF, 0x704C, -/* 19F8 */ 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, 0x7845, -/* 1A00 */ 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, 0x6842, -/* 1A08 */ 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, 0x9505, -/* 1A10 */ 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, 0x7BC5, 0x7BC8, -/* 1A18 */ 0x7BC9, 0x7BCA, 0x7BCB, 0x7BCD, 0x7BCE, 0x7BCF, 0x7BD0, 0x7BD2, -/* 1A20 */ 0x7BD4, 0x7BD5, 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB, 0x7BDC, 0x7BDE, -/* 1A28 */ 0x7BDF, 0x7BE0, 0x7BE2, 0x7BE3, 0x7BE4, 0x7BE7, 0x7BE8, 0x7BE9, -/* 1A30 */ 0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2, 0x7BF3, 0x7BF4, -/* 1A38 */ 0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB, 0x7BFD, 0xFFFD, -/* 1A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C08, -/* 1A48 */ 0x7C09, 0x7C0A, 0x7C0D, 0x7C0E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A50 */ 0xFFFD, 0xFFFD, 0x7C17, 0x7C18, 0x7C19, 0xFFFD, 0x7C1A, 0x7C1B, -/* 1A58 */ 0x7C1C, 0x7C1D, 0x7C1E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A60 */ 0xFFFD, 0x7C28, 0x7C29, 0x7C42, 0x9AB8, 0x5B69, 0x6D77, 0x6C26, -/* 1A68 */ 0x4EA5, 0x5BB3, 0x9A87, 0x9163, 0x61A8, 0x90AF, 0x97E9, 0x542B, -/* 1A70 */ 0x6DB5, 0x5BD2, 0x51FD, 0x558A, 0x7F55, 0x7FF0, 0x64BC, 0x634D, -/* 1A78 */ 0x65F1, 0x61BE, 0x608D, 0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D, -/* 1A80 */ 0x822A, 0x58D5, 0x568E, 0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, -/* 1A88 */ 0x53F7, 0x6D69, 0x5475, 0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, -/* 1A90 */ 0x548C, 0x4F55, 0x5408, 0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, -/* 1A98 */ 0x8D6B, 0x8910, 0x9E64, 0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, -/* 1AA0 */ 0x72E0, 0x6068, 0x54FC, 0x4EA8, 0x6A2A, 0x8861, 0x6052, 0x8F70, -/* 1AA8 */ 0x54C4, 0x70D8, 0x8679, 0x9E3F, 0x6D2A, 0x5B8F, 0x5F18, 0x7EA2, -/* 1AB0 */ 0x5589, 0x4FAF, 0x7334, 0x543C, 0x539A, 0x5019, 0x540E, 0x547C, -/* 1AB8 */ 0x4E4E, 0x5FFD, 0x745A, 0x58F6, 0x846B, 0x80E1, 0x8774, 0x72D0, -/* 1AC0 */ 0x7CCA, 0x6E56, 0x7C88, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC8 */ 0xFFFD, 0xFFFD, 0x7C93, 0x7C94, 0x7C96, 0x7C99, 0x7C9A, 0x7C9B, -/* 1AD0 */ 0x7CA0, 0x7CA1, 0x7CA3, 0x7CA6, 0x7CA7, 0x7CA8, 0x7CA9, 0x7CAB, -/* 1AD8 */ 0x7CAC, 0x7CAD, 0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5, 0x7CB6, 0x7CB7, -/* 1AE0 */ 0x7CB8, 0x7CBA, 0x7CBB, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, -/* 1AE8 */ 0x6CAA, 0x6237, 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, -/* 1AF0 */ 0x5212, 0x5316, 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, -/* 1AF8 */ 0x6B22, 0x73AF, 0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, -/* 1B00 */ 0x75EA, 0x8C62, 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352, 0x614C, -/* 1B08 */ 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, 0x714C, -/* 1B10 */ 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, 0x5FBD, -/* 1B18 */ 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, 0x60E0, -/* 1B20 */ 0x6666, 0x8D3F, 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, -/* 1B28 */ 0x7ED8, 0x8364, 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, -/* 1B30 */ 0x6D3B, 0x4F19, 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, -/* 1B38 */ 0x7978, 0x51FB, 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, -/* 1B40 */ 0x7B95, 0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3, 0x7CC4, 0x7CC6, 0x7CC9, -/* 1B48 */ 0x7CCB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B50 */ 0x7CD8, 0x7CDA, 0x7CDB, 0x7CDD, 0x7CDE, 0x7CF9, 0x7CFA, 0x7D21, -/* 1B58 */ 0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A, 0x7D2C, -/* 1B60 */ 0x7D2D, 0x7D2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B68 */ 0xFFFD, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC, -/* 1B70 */ 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, 0x96C6, -/* 1B78 */ 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7, 0x6324, -/* 1B80 */ 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63, 0x4F0E, -/* 1B88 */ 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, 0x8BB0, -/* 1B90 */ 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7, -/* 1B98 */ 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532, -/* 1BA0 */ 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C, -/* 1BA8 */ 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9, -/* 1BB0 */ 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877, -/* 1BB8 */ 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, 0x69DB, -/* 1BC0 */ 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6, 0x5065, -/* 1BC8 */ 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, 0x5EFA, 0x50F5, -/* 1BD0 */ 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 0x6868, 0x5956, -/* 1BD8 */ 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 0x7901, 0x7126, -/* 1BE0 */ 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 0x56BC, 0x6405, -/* 1BE8 */ 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 0x997A, 0x7F34, -/* 1BF0 */ 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83, 0x53EB, 0x7A96, -/* 1BF8 */ 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636, 0x622A, 0x52AB, -/* 1C00 */ 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED, 0x6D01, 0x7ED3, -/* 1C08 */ 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, 0x501F, 0x4ECB, -/* 1C10 */ 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, 0x91D1, 0x4ECA, -/* 1C18 */ 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 0x8FDB, 0x9773, -/* 1C20 */ 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, 0x5C3D, 0x52B2, 0x8346, -/* 1C28 */ 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, -/* 1C30 */ 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, 0x666F, 0x9888, 0x9759, 0x5883, -/* 1C38 */ 0x656C, 0x955C, 0x5F84, 0x75C9, 0x9756, 0x7ADF, 0x7ADE, 0x51C0, -/* 1C40 */ 0x70AF, 0x7A98, 0x63EA, 0x7A76, 0x7EA0, 0x7396, 0x97ED, 0x4E45, -/* 1C48 */ 0x7078, 0x4E5D, 0x9152, 0x53A9, 0x6551, 0x65E7, 0x81FC, 0x8205, -/* 1C50 */ 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8, 0x72D9, 0x75BD, 0x5C45, -/* 1C58 */ 0x9A79, 0x83CA, 0x5C40, 0x5480, 0x77E9, 0x4E3E, 0x6CAE, 0x805A, -/* 1C60 */ 0x62D2, 0x636E, 0x5DE8, 0x5177, 0x8DDD, 0x8E1E, 0x952F, 0x4FF1, -/* 1C68 */ 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350, 0x9E43, 0x5A1F, 0x5026, -/* 1C70 */ 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, 0x6289, 0x6398, 0x5014, -/* 1C78 */ 0x7235, 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, 0x5747, 0x83CC, 0x94A7, -/* 1C80 */ 0x519B, 0x541B, 0x5CFB, 0x7E3A, 0x7E3C, 0x7E3D, 0x7E3E, 0x7E3F, -/* 1C88 */ 0x7E40, 0x7E42, 0x7E43, 0x7E44, 0x7E45, 0x7E46, 0x4FCA, 0x7AE3, -/* 1C90 */ 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, 0x5361, 0x54AF, 0x5F00, -/* 1C98 */ 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8, 0x574E, -/* 1CA0 */ 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, -/* 1CA8 */ 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, -/* 1CB0 */ 0x68F5, 0x78D5, 0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, -/* 1CB8 */ 0x514B, 0x523B, 0x5BA2, 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, -/* 1CC0 */ 0x5751, 0x542D, 0x7A7A, 0x6050, 0x5B54, 0x63A7, 0x62A0, 0x53E3, -/* 1CC8 */ 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F, 0x82E6, 0x9177, 0x5E93, -/* 1CD0 */ 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8, 0x80EF, 0x5757, 0x7B77, -/* 1CD8 */ 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, 0x7B50, 0x72C2, 0x6846, -/* 1CE0 */ 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF, 0x7AA5, -/* 1CE8 */ 0x8475, 0x594E, 0x9B41, 0x5080, 0x7E9C, 0x7E9D, 0x7E9E, 0xFFFD, -/* 1CF0 */ 0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6, 0x7EE4, 0x7EEC, 0x7EF9, -/* 1CF8 */ 0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F52, -/* 1D10 */ 0x7F53, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, 0x56F0, -/* 1D18 */ 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, 0x8721, -/* 1D20 */ 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, 0x5A6A, -/* 1D28 */ 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD, -/* 1D30 */ 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC, -/* 1D38 */ 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001, -/* 1D40 */ 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7, -/* 1D48 */ 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B, -/* 1D50 */ 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, 0x7281, -/* 1D58 */ 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, 0x91CC, -/* 1D60 */ 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, 0x5389, -/* 1D68 */ 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0, 0x7F56, -/* 1D70 */ 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63, 0x7F64, -/* 1D78 */ 0x7F65, 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F, 0x7F70, -/* 1D80 */ 0x7F73, 0x7F75, 0x7F76, 0x7F77, 0x7F78, 0x7F7A, 0x7F7B, 0x7F7C, -/* 1D88 */ 0x7F7D, 0x7F7F, 0x7F80, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90, 0x7F91, -/* 1D98 */ 0x7F92, 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99, 0x7F9B, -/* 1DA0 */ 0x7F9C, 0x7FA0, 0x7FA2, 0x7FA3, 0x7FA5, 0x7FA6, 0xFFFD, 0xFFFD, -/* 1DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7FB1, 0xFFFD, 0x7FB3, -/* 1DB0 */ 0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE, 0x7FC0, -/* 1DB8 */ 0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9, 0x7FCB, -/* 1DC0 */ 0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD2, 0x7FD3, 0x7FD6, 0x7FD7, -/* 1DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7FE2, 0x7FE3, -/* 1DD0 */ 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 0x54E9, -/* 1DD8 */ 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 0x6D9F, -/* 1DE0 */ 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 0x7CAE, -/* 1DE8 */ 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF, 0x667E, -/* 1DF0 */ 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE, 0x5BE5, -/* 1DF8 */ 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599, 0x5217, -/* 1E00 */ 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7, 0x9716, -/* 1E08 */ 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, 0x62CE, -/* 1E10 */ 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 0x51CC, -/* 1E18 */ 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 0x7409, -/* 1E20 */ 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 0x67F3, -/* 1E28 */ 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF, 0x7FE4, 0x7FE7, -/* 1E30 */ 0x7FE8, 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF2, 0xFFFD, -/* 1E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7FFD, 0x7FFE, -/* 1E40 */ 0x7FFF, 0x8002, 0x8007, 0x8008, 0x8009, 0x800A, 0x800E, 0x800F, -/* 1E48 */ 0x8011, 0x8013, 0x801A, 0x801B, 0x801D, 0x801E, 0x801F, 0x8021, -/* 1E50 */ 0x8023, 0x8024, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E58 */ 0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E, 0x8040, 0x8041, -/* 1E60 */ 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804E, 0x804F, 0x8050, -/* 1E68 */ 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0xFFFD, 0x8059, 0x9686, -/* 1E70 */ 0x5784, 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, 0x7BD3, 0x6F0F, -/* 1E78 */ 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, 0x63B3, 0x5364, -/* 1E80 */ 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, 0x8D42, 0x9E7F, -/* 1E88 */ 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415, 0x94DD, -/* 1E90 */ 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 0x6C2F, 0x5F8B, -/* 1E98 */ 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 0x6EE6, 0x5375, -/* 1EA0 */ 0x4E71, 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 0x4ED1, 0x6CA6, -/* 1EA8 */ 0x7EB6, 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, 0x9523, 0x7BA9, -/* 1EB0 */ 0x9AA1, 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, 0x5988, 0x9EBB, -/* 1EB8 */ 0x739B, 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, 0x5417, 0x57CB, -/* 1EC0 */ 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, 0x9992, 0x86EE, -/* 1EC8 */ 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B, 0x807E, 0x8081, 0x8082, -/* 1ED0 */ 0x8085, 0x8088, 0x808A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1ED8 */ 0xFFFD, 0x8094, 0x8095, 0x8097, 0x8099, 0x809E, 0x80A3, 0x80A6, -/* 1EE0 */ 0x80A7, 0x80A8, 0x80AC, 0x80B0, 0x80B3, 0x80B5, 0x80B6, 0x80B8, -/* 1EE8 */ 0x80B9, 0x80BB, 0x80C5, 0x80C7, 0x80C8, 0x80C9, 0x80CA, 0x80CB, -/* 1EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x80D8, -/* 1EF8 */ 0x80DF, 0x80E0, 0x80E2, 0x80E3, 0x80E6, 0x80EE, 0x80F5, 0x80F7, -/* 1F00 */ 0x80F9, 0x80FB, 0x80FE, 0x80FF, 0x8100, 0x8101, 0x8103, 0x8104, -/* 1F08 */ 0x8105, 0x8107, 0x8108, 0x810B, 0xFFFD, 0x810C, 0x8115, 0x8117, -/* 1F10 */ 0x8119, 0x811B, 0x811C, 0x811D, 0x812D, 0x812E, 0x8130, 0x8133, -/* 1F18 */ 0x8134, 0x8135, 0x8137, 0x8139, 0x813A, 0x813B, 0x813C, 0x813D, -/* 1F20 */ 0x813F, 0x8C29, 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, -/* 1F28 */ 0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, -/* 1F30 */ 0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48, 0x73AB, 0x679A, 0x6885, -/* 1F38 */ 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, 0x5A92, 0x9541, 0x6BCF, -/* 1F40 */ 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8, 0x95F7, 0x4EEC, -/* 1F48 */ 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6, 0x5B5F, -/* 1F50 */ 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73, -/* 1F58 */ 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, -/* 1F60 */ 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, -/* 1F68 */ 0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, -/* 1F70 */ 0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, -/* 1F78 */ 0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D, 0x8C2C, 0x6478, 0x8147, -/* 1F80 */ 0x8149, 0x814D, 0x814E, 0x814F, 0x8152, 0x8156, 0x8157, 0x8158, -/* 1F88 */ 0x815B, 0x815C, 0x815D, 0x815E, 0x815F, 0x8161, 0x8162, 0x8163, -/* 1F90 */ 0x8164, 0x8166, 0x8168, 0x816A, 0x816B, 0x816C, 0x816F, 0x8172, -/* 1F98 */ 0x8173, 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, -/* 1FA0 */ 0x8185, 0x8186, 0x8187, 0x8189, 0x818B, 0x818C, 0x818D, 0x818E, -/* 1FA8 */ 0x8190, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8199, -/* 1FB0 */ 0x819A, 0x819E, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0x81A4, 0x81A5, -/* 1FB8 */ 0xFFFD, 0x81A7, 0x81A9, 0x81BC, 0x81BD, 0x81BE, 0x81BF, 0x81C4, -/* 1FC0 */ 0x81C5, 0x81C7, 0x81C8, 0x81C9, 0x81CB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6479, 0x8611, 0x6A21, 0x819C, -/* 1FD0 */ 0x78E8, 0x6469, 0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, -/* 1FD8 */ 0x6CAB, 0x6F20, 0x5BDE, 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, -/* 1FE0 */ 0x7261, 0x4EA9, 0x59C6, 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, -/* 1FE8 */ 0x6155, 0x6728, 0x76EE, 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, -/* 1FF0 */ 0x5450, 0x94A0, 0x90A3, 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, -/* 1FF8 */ 0x8010, 0x5948, 0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, -/* 2000 */ 0x607C, 0x95F9, 0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, -/* 2008 */ 0x59AE, 0x9713, 0x502A, 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, -/* 2010 */ 0x817B, 0x9006, 0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, -/* 2018 */ 0x637B, 0x5FF5, 0x5A18, 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, -/* 2020 */ 0x5B7D, 0x556E, 0x954A, 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, -/* 2028 */ 0x51DD, 0x5B81, 0x81E4, 0x81E5, 0x81E6, 0x81E8, 0x81E9, 0x81EB, -/* 2030 */ 0x81EE, 0x81EF, 0x81F0, 0x81F1, 0x81F2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x81FD, 0x81FF, 0x8203, 0x8207, 0x8208, -/* 2040 */ 0x8209, 0x820A, 0x820B, 0x820E, 0x820F, 0x8211, 0x8213, 0xFFFD, -/* 2048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x821D, 0x8220, 0x8224, -/* 2050 */ 0x8225, 0x8226, 0x8227, 0x8229, 0x822E, 0x8232, 0x823A, 0x823C, -/* 2058 */ 0x823D, 0x823F, 0xFFFD, 0x8240, 0x8241, 0x8242, 0x8243, 0x8245, -/* 2060 */ 0x8246, 0x8248, 0x824A, 0x824C, 0x824D, 0x824E, 0xFFFD, 0xFFFD, -/* 2068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8259, 0x825B, -/* 2070 */ 0x825C, 0x825D, 0x825E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8269, 0x62E7, 0x6CDE, 0x725B, 0x626D, -/* 2080 */ 0x94AE, 0x7EBD, 0x8113, 0x6D53, 0x519C, 0x5F04, 0x5974, 0x52AA, -/* 2088 */ 0x6012, 0x5973, 0x6696, 0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, -/* 2090 */ 0x8BFA, 0x54E6, 0x6B27, 0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, -/* 2098 */ 0x6CA4, 0x556A, 0x8DB4, 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, -/* 20A0 */ 0x6392, 0x724C, 0x5F98, 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, -/* 20A8 */ 0x78D0, 0x76FC, 0x7554, 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, -/* 20B0 */ 0x802A, 0x80D6, 0x629B, 0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, -/* 20B8 */ 0x6CE1, 0x5478, 0x80DA, 0x57F9, 0x88F4, 0x8D54, 0x966A, 0x914D, -/* 20C0 */ 0x4F69, 0x6C9B, 0x55B7, 0x76C6, 0x7830, 0x62A8, 0x70F9, 0x6F8E, -/* 20C8 */ 0x5F6D, 0x84EC, 0x68DA, 0x787C, 0x7BF7, 0x81A8, 0x670B, 0x9E4F, -/* 20D0 */ 0x6367, 0x78B0, 0x576F, 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, -/* 20D8 */ 0x7435, 0x6BD7, 0x826A, 0x826B, 0x826C, 0x826D, 0x8271, 0x8275, -/* 20E0 */ 0x8276, 0x8277, 0x8278, 0x827B, 0x827C, 0x8280, 0x8281, 0x8283, -/* 20E8 */ 0x8285, 0x8286, 0x8287, 0x8289, 0x828C, 0x8290, 0x8293, 0x8294, -/* 20F0 */ 0x8295, 0x8296, 0x829A, 0x829B, 0x829E, 0x82A0, 0x82A2, 0x82A3, -/* 20F8 */ 0x82A7, 0x82B2, 0x82B5, 0x82B6, 0x82BA, 0x82BB, 0x82BC, 0x82BF, -/* 2100 */ 0x82C0, 0x82C2, 0x82C3, 0x82C5, 0x82C6, 0x82C9, 0x82D0, 0x82D6, -/* 2108 */ 0x82D9, 0x82DA, 0x82DD, 0x82E2, 0x82E7, 0x82E8, 0x82E9, 0x82EA, -/* 2110 */ 0x82EC, 0x82ED, 0x82EE, 0x82F0, 0x82F2, 0x82F3, 0x82F5, 0x82F6, -/* 2118 */ 0x82F8, 0xFFFD, 0x82FA, 0x82FC, 0x82FD, 0x82FE, 0x82FF, 0x8300, -/* 2120 */ 0x830A, 0x830B, 0x830D, 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, -/* 2128 */ 0x8319, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8329, 0x832A, 0x832E, 0x8330, 0x8332, -/* 2138 */ 0x8337, 0x833B, 0x833D, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, -/* 2140 */ 0x75DE, 0x50FB, 0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, -/* 2148 */ 0x98D8, 0x6F02, 0x74E2, 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, -/* 2150 */ 0x8D2B, 0x54C1, 0x8058, 0x4E52, 0x576A, 0x82F9, 0x840D, 0x5E73, -/* 2158 */ 0x51ED, 0x74F6, 0x8BC4, 0x5C4F, 0x5761, 0x6CFC, 0x9887, 0x5A46, -/* 2160 */ 0x7834, 0x9B44, 0x8FEB, 0x7C95, 0x5256, 0x6251, 0x94FA, 0x4EC6, -/* 2168 */ 0x8386, 0x8461, 0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, 0x666E, -/* 2170 */ 0x6D66, 0x8C31, 0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, -/* 2178 */ 0x59BB, 0x4E03, 0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, -/* 2180 */ 0x5947, 0x6B67, 0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, -/* 2188 */ 0x7941, 0x9A91, 0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, -/* 2190 */ 0x780C, 0x5668, 0x6C14, 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, -/* 2198 */ 0x6390, 0x833E, 0x833F, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, -/* 21A0 */ 0x834A, 0x834B, 0x834C, 0x834D, 0x834E, 0x8353, 0x8355, 0x8356, -/* 21A8 */ 0x8357, 0x8358, 0x8359, 0x835D, 0x8362, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8379, 0x837A, 0xFFFD, 0xFFFD, -/* 21B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8387, 0x8388, 0x838A, -/* 21C0 */ 0x838B, 0x838C, 0x838D, 0x838F, 0x8390, 0x8391, 0x8394, 0x8395, -/* 21C8 */ 0x8396, 0x8397, 0x8399, 0x839A, 0x839D, 0x839F, 0xFFFD, 0xFFFD, -/* 21D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x83AC, 0x83AD, 0x83AE, -/* 21D8 */ 0xFFFD, 0x83AF, 0x83B5, 0x83BB, 0x83BE, 0x83BF, 0x83C2, 0x83C3, -/* 21E0 */ 0x83C4, 0x83C6, 0x83C8, 0x83C9, 0x83CB, 0x83CD, 0x83CE, 0x83D0, -/* 21E8 */ 0x83D1, 0x83D2, 0x83D3, 0x83D5, 0x83D7, 0x83D9, 0x83DA, 0x83DB, -/* 21F0 */ 0x83DE, 0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7, 0x83E8, 0x83EB, -/* 21F8 */ 0x83EC, 0x83ED, 0x6070, 0x6D3D, 0x7275, 0x6266, 0x948E, 0x94C5, -/* 2200 */ 0x5343, 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, 0x9ED4, 0x94B1, -/* 2208 */ 0x94B3, 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811, 0x5D4C, -/* 2210 */ 0x6B20, 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537, -/* 2218 */ 0x5F3A, 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, -/* 2220 */ 0x4E54, 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, -/* 2228 */ 0x7A8D, 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, -/* 2230 */ 0x4EB2, 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, -/* 2238 */ 0x6C81, 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, 0x6E05, 0x64CE, -/* 2240 */ 0x6674, 0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86, 0x743C, 0x7A77, -/* 2248 */ 0x79CB, 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, 0x914B, 0x6CC5, -/* 2250 */ 0x8D8B, 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71, 0x6E20, -/* 2258 */ 0x83EE, 0x83EF, 0x83F3, 0x83F4, 0x83F5, 0x83F6, 0x83F7, 0x83FA, -/* 2260 */ 0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402, 0x8405, 0x8407, -/* 2268 */ 0x8408, 0x8409, 0x840A, 0x8410, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2270 */ 0xFFFD, 0xFFFD, 0x8419, 0x841A, 0x841B, 0x8439, 0x843A, 0x843B, -/* 2278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2280 */ 0x8447, 0x8448, 0x8449, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, -/* 2290 */ 0x8458, 0x845D, 0x845E, 0x845F, 0x8460, 0x8462, 0x8464, 0x8465, -/* 2298 */ 0x8466, 0x8467, 0x8468, 0x846A, 0x846E, 0x846F, 0x8470, 0x8472, -/* 22A0 */ 0x8474, 0x8477, 0x8479, 0x847B, 0x847C, 0x53D6, 0x5A36, 0x9F8B, -/* 22A8 */ 0x8DA3, 0x53BB, 0x5708, 0x98A7, 0x6743, 0x919B, 0x6CC9, 0x5168, -/* 22B0 */ 0x75CA, 0x62F3, 0x72AC, 0x5238, 0x529D, 0x7F3A, 0x7094, 0x7638, -/* 22B8 */ 0x5374, 0x9E4A, 0x69B7, 0x786E, 0x96C0, 0x88D9, 0x7FA4, 0x7136, -/* 22C0 */ 0x71C3, 0x5189, 0x67D3, 0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9, -/* 22C8 */ 0x9976, 0x6270, 0x7ED5, 0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, -/* 22D0 */ 0x5FCD, 0x97E7, 0x4EFB, 0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, -/* 22D8 */ 0x4ECD, 0x65E5, 0x620E, 0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, -/* 22E0 */ 0x6EB6, 0x5BB9, 0x7ED2, 0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, -/* 22E8 */ 0x8815, 0x5112, 0x5B7A, 0x5982, 0x8FB1, 0x4E73, 0x6C5D, 0x5165, -/* 22F0 */ 0x8925, 0x8F6F, 0x962E, 0x854A, 0x745E, 0x9510, 0x95F0, 0x6DA6, -/* 22F8 */ 0x82E5, 0x5F31, 0x6492, 0x6D12, 0x8428, 0x816E, 0x9CC3, 0x585E, -/* 2300 */ 0x8D5B, 0x4E09, 0x53C1, 0x847D, 0x847E, 0x847F, 0x8480, 0x8481, -/* 2308 */ 0x8483, 0x8484, 0x8485, 0x8486, 0x848A, 0x848D, 0xFFFD, 0xFFFD, -/* 2310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8498, 0x849A, -/* 2318 */ 0x849B, 0x849D, 0x849E, 0x849F, 0x84A0, 0x84B0, 0x84B1, 0x84B3, -/* 2320 */ 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BC, 0x84BE, 0x84C0, 0x84C2, -/* 2328 */ 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CB, 0x84CC, 0x84CE, -/* 2330 */ 0x84CF, 0x84D2, 0x84D4, 0x84D5, 0x84D7, 0xFFFD, 0x84D8, 0x84D9, -/* 2338 */ 0x84DA, 0x84DB, 0x84DC, 0x84DE, 0x84E1, 0x84E2, 0x84E4, 0x84E7, -/* 2340 */ 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED, 0x84EE, 0x84EF, 0x84FD, -/* 2348 */ 0x84FE, 0x8500, 0x8501, 0x8502, 0x4F1E, 0x6563, 0x6851, 0x55D3, -/* 2350 */ 0x4E27, 0x6414, 0x9A9A, 0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, -/* 2358 */ 0x68EE, 0x50E7, 0x838E, 0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, -/* 2360 */ 0x50BB, 0x5565, 0x715E, 0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, -/* 2368 */ 0x5C71, 0x5220, 0x717D, 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, -/* 2370 */ 0x81B3, 0x5584, 0x6C55, 0x6247, 0x7F2E, 0x5892, 0x4F24, 0x5546, -/* 2378 */ 0x8D4F, 0x664C, 0x4E0A, 0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, -/* 2380 */ 0x70E7, 0x828D, 0x52FA, 0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7ECD, -/* 2388 */ 0x5962, 0x8D4A, 0x86C7, 0x820C, 0x820D, 0x8D66, 0x6444, 0x5C04, -/* 2390 */ 0x6151, 0x6D89, 0x793E, 0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, -/* 2398 */ 0x8EAB, 0x6DF1, 0x5A20, 0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, -/* 23A0 */ 0x751A, 0x80BE, 0x614E, 0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, -/* 23A8 */ 0x5347, 0x7EF3, 0x850D, 0x850E, 0x850F, 0x8510, 0x8512, 0x8514, -/* 23B0 */ 0x8515, 0x8516, 0x8518, 0x8519, 0x851B, 0x851C, 0x851D, 0x851E, -/* 23B8 */ 0x8520, 0x853E, 0x853F, 0x8540, 0x8541, 0x8542, 0x8544, 0x8545, -/* 23C0 */ 0x8546, 0x8547, 0x8557, 0x8558, 0x855A, 0x855B, 0x855C, 0x855D, -/* 23C8 */ 0x855F, 0x8560, 0x8561, 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, -/* 23D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23D8 */ 0xFFFD, 0x8573, 0x8575, 0x8576, 0x8577, 0x8578, 0x857C, 0x857D, -/* 23E0 */ 0x857F, 0x8580, 0x8581, 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, -/* 23E8 */ 0x5E08, 0x5931, 0x72EE, 0x65BD, 0x6E7F, 0x8BD7, 0x5C38, 0x8671, -/* 23F0 */ 0x5341, 0x77F3, 0x62FE, 0x65F6, 0x4EC0, 0x98DF, 0x8680, 0x5B9E, -/* 23F8 */ 0x8BC6, 0x53F2, 0x77E2, 0x4F7F, 0x5C4E, 0x9A76, 0x59CB, 0x5F0F, -/* 2400 */ 0x793A, 0x58EB, 0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93, 0x901D, -/* 2408 */ 0x52BF, 0x662F, 0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, -/* 2410 */ 0x9970, 0x6C0F, 0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, -/* 2418 */ 0x624B, 0x9996, 0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, -/* 2420 */ 0x517D, 0x852C, 0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, -/* 2428 */ 0x8212, 0x6DD1, 0x758F, 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, -/* 2430 */ 0x6691, 0x66D9, 0x7F72, 0x8700, 0x9ECD, 0x9F20, 0x5C5E, 0x672F, -/* 2438 */ 0x8FF0, 0x6811, 0x675F, 0x620D, 0x7AD6, 0x5885, 0x5EB6, 0x6570, -/* 2440 */ 0x6F31, 0x8582, 0x8583, 0x8586, 0x85A5, 0x85A6, 0x85A7, 0x85A9, -/* 2448 */ 0x85AB, 0x85AC, 0x85AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2450 */ 0xFFFD, 0x85B8, 0x85CA, 0x85CB, 0x85CC, 0x85CD, 0x85CE, 0x85D1, -/* 2458 */ 0x85D2, 0xFFFD, 0x85D4, 0x85E5, 0x85E6, 0x85E7, 0x85E8, 0x6055, -/* 2460 */ 0x5237, 0x800D, 0x6454, 0x8870, 0x7529, 0x5E05, 0x6813, 0x62F4, -/* 2468 */ 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, 0x7761, 0x7A0E, 0x542E, -/* 2470 */ 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714, 0x70C1, 0x65AF, -/* 2478 */ 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D, 0x6B7B, 0x8086, -/* 2480 */ 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E, -/* 2488 */ 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, -/* 2490 */ 0x8258, 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7, 0x7D20, 0x901F, -/* 2498 */ 0x7C9F, 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8BC9, 0x8083, 0x9178, -/* 24A0 */ 0x849C, 0x7B97, 0x867D, 0x968B, 0x968F, 0x7EE5, 0x9AD3, 0x788E, -/* 24A8 */ 0x5C81, 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B59, 0x635F, 0x7B0B, -/* 24B0 */ 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, 0x7D22, 0x9501, 0x6240, -/* 24B8 */ 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854, 0x85F9, 0x85FA, 0x85FC, -/* 24C0 */ 0x85FD, 0x85FE, 0x8600, 0x8601, 0x8602, 0x8603, 0x8604, 0x8612, -/* 24C8 */ 0x8613, 0x8614, 0x8615, 0x8639, 0x863A, 0x863B, 0x863D, 0x863E, -/* 24D0 */ 0x863F, 0x8640, 0x8652, 0x8653, 0x8655, 0x8656, 0x8657, 0x8658, -/* 24D8 */ 0x8659, 0x865B, 0x865C, 0x865D, 0x865F, 0x8660, 0x8661, 0xFFFD, -/* 24E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x736D, -/* 24E8 */ 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC, 0x53F0, 0x6CF0, -/* 24F0 */ 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A, 0x8D2A, 0x762B, -/* 24F8 */ 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D, 0x8C2D, 0x8C08, 0x5766, -/* 2500 */ 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9, 0x70AD, 0x6C64, 0x5858, -/* 2508 */ 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510, 0x7CD6, 0x5018, 0x8EBA, -/* 2510 */ 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, 0x6ED4, 0x7EE6, 0x8404, -/* 2518 */ 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957, 0x7279, 0x85E4, -/* 2520 */ 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22, 0x9511, 0x63D0, -/* 2528 */ 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F, 0x60D5, 0x6D95, -/* 2530 */ 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530, 0x751C, 0x606C, -/* 2538 */ 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A, 0x8DF3, 0x8D34, -/* 2540 */ 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3, 0x866D, 0x866F, 0x8670, -/* 2548 */ 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0xFFFD, 0xFFFD, -/* 2550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x869E, 0x869F, 0x86A0, 0x86A1, -/* 2558 */ 0x86A2, 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2, 0x86B3, -/* 2560 */ 0x86B7, 0x86B8, 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE, 0x86BF, -/* 2568 */ 0x86C1, 0x86C2, 0x86C3, 0x86C5, 0x86C8, 0x86CC, 0x86CD, 0x86D2, -/* 2570 */ 0x86D3, 0x86D5, 0x86D6, 0x86D7, 0x86DA, 0x86DC, 0xFFFD, 0x86DD, -/* 2578 */ 0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6, 0x86E7, 0x86E8, -/* 2580 */ 0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7, 0x86FA, -/* 2588 */ 0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705, 0x8706, -/* 2590 */ 0x870B, 0x870C, 0x870E, 0x870F, 0x8710, 0x8711, 0x8714, 0x8716, -/* 2598 */ 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, 0x901A, -/* 25A0 */ 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, 0x6876, -/* 25A8 */ 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 0x900F, -/* 25B0 */ 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 0x5C60, -/* 25B8 */ 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 0x817F, -/* 25C0 */ 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 0x6258, -/* 25C8 */ 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 0x62D3, -/* 25D0 */ 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6, 0x889C, -/* 25D8 */ 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, 0x4E38, -/* 25E0 */ 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, 0x5B9B, -/* 25E8 */ 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, 0x7F51, -/* 25F0 */ 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, 0x8719, 0x871B, -/* 25F8 */ 0x871D, 0x871F, 0x8720, 0x8724, 0x8726, 0x8727, 0x8728, 0x872A, -/* 2600 */ 0x872B, 0x872C, 0x872D, 0x872F, 0x8730, 0x8732, 0x8733, 0x8735, -/* 2608 */ 0x8736, 0x8738, 0x8739, 0x873A, 0x873C, 0x873D, 0xFFFD, 0xFFFD, -/* 2610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x874A, 0x874B, 0x874D, -/* 2618 */ 0x874F, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755, 0x8756, 0x8758, -/* 2620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8761, 0x8762, -/* 2628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2630 */ 0x876F, 0x8771, 0x8772, 0x8773, 0x8775, 0xFFFD, 0x8777, 0x8778, -/* 2638 */ 0x8779, 0x877A, 0x877F, 0x8780, 0x8781, 0x8784, 0x8786, 0x8787, -/* 2640 */ 0x8789, 0x878A, 0x878C, 0x878E, 0x878F, 0x8790, 0x8791, 0x8792, -/* 2648 */ 0x8794, 0x8795, 0x8796, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2650 */ 0xFFFD, 0xFFFD, 0x87A0, 0x87A1, 0x87A2, 0x87A3, 0x87A4, 0x5DCD, -/* 2658 */ 0x5FAE, 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, 0x60DF, -/* 2660 */ 0x4E3A, 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, 0x4F2A, -/* 2668 */ 0x5C3E, 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, 0x80C3, 0x5582, -/* 2670 */ 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, 0x536B, 0x761F, -/* 2678 */ 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, 0x7A33, 0x7D0A, -/* 2680 */ 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, 0x6DA1, 0x7A9D, -/* 2688 */ 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x545C, 0x94A8, -/* 2690 */ 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 0x68A7, 0x543E, -/* 2698 */ 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, 0x4F0D, -/* 26A0 */ 0x4FAE, 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, 0x52A1, -/* 26A8 */ 0x609F, 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, 0x77FD, -/* 26B0 */ 0x6670, 0x563B, 0x5438, 0x9521, 0x727A, 0x87A5, 0x87A6, 0x87A7, -/* 26B8 */ 0x87A9, 0x87AA, 0x87AE, 0x87B0, 0x87B1, 0x87B2, 0x87B4, 0x87B6, -/* 26C0 */ 0x87B7, 0x87B8, 0x87B9, 0x87BB, 0x87BC, 0x87BE, 0x87BF, 0x87C1, -/* 26C8 */ 0x87C2, 0x87C3, 0x87C4, 0x87C5, 0x87C7, 0x87C8, 0x87C9, 0x87CC, -/* 26D0 */ 0x87CD, 0x87CE, 0x87CF, 0x87D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x87DC, 0x87DD, 0x87DE, 0x87DF, 0x87E1, -/* 26E0 */ 0x87E2, 0x87E3, 0x87E4, 0x87E6, 0x87E7, 0x87E8, 0x87E9, 0x87EB, -/* 26E8 */ 0x87EC, 0x87ED, 0x87FA, 0x87FB, 0x87FC, 0x87FD, 0x87FF, 0x8800, -/* 26F0 */ 0x8801, 0x8802, 0x8814, 0x8817, 0x8818, 0x8819, 0x881A, 0x881C, -/* 26F8 */ 0x881D, 0x881E, 0x881F, 0x8820, 0x8823, 0x7A00, 0x606F, 0x5E0C, -/* 2700 */ 0x6089, 0x819D, 0x5915, 0x60DC, 0x7184, 0x70EF, 0x6EAA, 0x6C50, -/* 2708 */ 0x7280, 0x6A84, 0x88AD, 0x5E2D, 0x4E60, 0x5AB3, 0x559C, 0x94E3, -/* 2710 */ 0x6D17, 0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E, 0x867E, 0x5323, -/* 2718 */ 0x971E, 0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, -/* 2720 */ 0x590F, 0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, -/* 2728 */ 0x54B8, 0x8D24, 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, -/* 2730 */ 0x663E, 0x9669, 0x73B0, 0x732E, 0x53BF, 0x817A, 0x9985, 0x7FA1, -/* 2738 */ 0x5BAA, 0x9677, 0x9650, 0x7EBF, 0x76F8, 0x53A2, 0x9576, 0x9999, -/* 2740 */ 0x7BB1, 0x8944, 0x6E58, 0x4E61, 0x7FD4, 0x7965, 0x8BE6, 0x60F3, -/* 2748 */ 0x54CD, 0x4EAB, 0x9879, 0x5DF7, 0x6A61, 0x50CF, 0x5411, 0x8C61, -/* 2750 */ 0x8427, 0x785D, 0x9704, 0x524A, 0x54EE, 0x56A3, 0x9500, 0x6D88, -/* 2758 */ 0x5BB5, 0x6DC6, 0x6653, 0x883A, 0x883B, 0x883D, 0x883E, 0x883F, -/* 2760 */ 0x8841, 0x8842, 0x8843, 0x8855, 0x8856, 0x8858, 0xFFFD, 0xFFFD, -/* 2768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8866, 0x8867, 0x886A, -/* 2770 */ 0x886D, 0x886F, 0x8871, 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, -/* 2778 */ 0x8879, 0x887A, 0xFFFD, 0x887B, 0x887C, 0x8880, 0x8883, 0x8886, -/* 2780 */ 0x8887, 0x8889, 0x888A, 0x888C, 0x888E, 0x888F, 0x8890, 0x8891, -/* 2788 */ 0x8893, 0x8894, 0x8895, 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, -/* 2790 */ 0x889D, 0x889E, 0x889F, 0x88A0, 0x88A1, 0x88A3, 0xFFFD, 0xFFFD, -/* 2798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C0F, 0x5B5D, 0x6821, 0x8096, -/* 27A0 */ 0x5578, 0x7B11, 0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, -/* 27A8 */ 0x534F, 0x631F, 0x643A, 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, -/* 27B0 */ 0x68B0, 0x5378, 0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, -/* 27B8 */ 0x85AA, 0x82AF, 0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, -/* 27C0 */ 0x4FE1, 0x8845, 0x661F, 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, -/* 27C8 */ 0x578B, 0x5F62, 0x90A2, 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, -/* 27D0 */ 0x59D3, 0x5144, 0x51F6, 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, -/* 27D8 */ 0x4F11, 0x4FEE, 0x7F9E, 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, -/* 27E0 */ 0x7EE3, 0x589F, 0x620C, 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, -/* 27E8 */ 0x8BB8, 0x84C4, 0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, -/* 27F0 */ 0x7D6E, 0x5A7F, 0x7EEA, 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, -/* 27F8 */ 0x65CB, 0x7384, 0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, -/* 2800 */ 0x88B4, 0x88B5, 0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, -/* 2808 */ 0x88BE, 0x88BF, 0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CA, -/* 2810 */ 0x88CB, 0x88CC, 0x88CD, 0x88CF, 0x88D0, 0x88D1, 0x88D3, 0x88D6, -/* 2818 */ 0x88D7, 0x88DA, 0x88DB, 0x88DC, 0x88DD, 0x88DE, 0x88E0, 0x88E1, -/* 2820 */ 0x88E6, 0x88E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2828 */ 0xFFFD, 0x88F2, 0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FD, -/* 2830 */ 0x88FF, 0x8900, 0x8901, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2838 */ 0xFFFD, 0xFFFD, 0x8909, 0x890B, 0x890C, 0x890D, 0x890E, 0x890F, -/* 2840 */ 0x8911, 0x8914, 0x8915, 0x8916, 0x8917, 0x8918, 0x891C, 0x891D, -/* 2848 */ 0x891E, 0x891F, 0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, -/* 2850 */ 0x8928, 0x8929, 0x892C, 0x892D, 0x892E, 0x892F, 0x8931, 0x8932, -/* 2858 */ 0x8933, 0x8935, 0x8937, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, -/* 2860 */ 0x859B, 0x5B66, 0x7A74, 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, -/* 2868 */ 0x65EC, 0x8BE2, 0x5BFB, 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, -/* 2870 */ 0x8BAF, 0x900A, 0x8FC5, 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, -/* 2878 */ 0x4E2B, 0x82BD, 0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, -/* 2880 */ 0x54D1, 0x4E9A, 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, -/* 2888 */ 0x76D0, 0x4E25, 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, -/* 2890 */ 0x960E, 0x708E, 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, -/* 2898 */ 0x8273, 0x5830, 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, -/* 28A0 */ 0x7130, 0x5BB4, 0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, -/* 28A8 */ 0x6768, 0x626C, 0x4F6F, 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, -/* 28B0 */ 0x4EF0, 0x75D2, 0x517B, 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, -/* 28B8 */ 0x7476, 0x8942, 0x8943, 0x897C, 0xFFFD, 0x897D, 0x897E, 0x8980, -/* 28C0 */ 0x8982, 0x8984, 0x8985, 0x6447, 0x5C27, 0x9065, 0x7A91, 0x8C23, -/* 28C8 */ 0x59DA, 0x54AC, 0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, -/* 28D0 */ 0x8036, 0x7237, 0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, -/* 28D8 */ 0x53F6, 0x66F3, 0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, -/* 28E0 */ 0x63D6, 0x94F1, 0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, -/* 28E8 */ 0x79FB, 0x4EEA, 0x80F0, 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, -/* 28F0 */ 0x6905, 0x8681, 0x501A, 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x827A, -/* 28F8 */ 0x6291, 0x6613, 0x9091, 0x5C79, 0x4EBF, 0x5F79, 0x81C6, 0x9038, -/* 2900 */ 0x8084, 0x75AB, 0x4EA6, 0x88D4, 0x610F, 0x6BC5, 0x5FC6, 0x4E49, -/* 2908 */ 0x76CA, 0x6EA2, 0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, 0x7FFC, -/* 2910 */ 0x7FCC, 0x7ECE, 0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, -/* 2918 */ 0x59FB, 0x541F, 0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, -/* 2920 */ 0x9690, 0x89C3, 0x89CD, 0x89D3, 0x89D4, 0x89D5, 0x89D7, 0x89D8, -/* 2928 */ 0x89D9, 0x89DB, 0x89DD, 0x89DF, 0x89E0, 0x89E1, 0x89E2, 0x89E4, -/* 2930 */ 0x89E7, 0x89E8, 0x89E9, 0x89EA, 0x89EC, 0x89ED, 0x89EE, 0x89F0, -/* 2938 */ 0x89F1, 0x89F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2940 */ 0xFFFD, 0xFFFD, 0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF, 0x5370, -/* 2948 */ 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424, -/* 2950 */ 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, -/* 2958 */ 0x786C, 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, -/* 2960 */ 0x96CD, 0x8E0A, 0x86F9, 0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, -/* 2968 */ 0x52C7, 0x7528, 0x5E7D, 0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, -/* 2970 */ 0x90AE, 0x94C0, 0x72B9, 0x6CB9, 0x6E38, 0x9149, 0x6709, 0x53CB, -/* 2978 */ 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8, 0x5E7C, 0x8FC2, 0x6DE4, -/* 2980 */ 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206, 0x4F59, 0x4FDE, -/* 2988 */ 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, 0x4E88, 0x5A31, -/* 2990 */ 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389, -/* 2998 */ 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, -/* 29A0 */ 0x6108, 0x6B32, 0x72F1, 0x80B2, 0x8A89, 0x6D74, 0x5BD3, 0x88D5, -/* 29A8 */ 0x9884, 0x8C6B, 0x9A6D, 0x9E33, 0x6E0A, 0x51A4, 0x5143, 0x57A3, -/* 29B0 */ 0x8881, 0x539F, 0x63F4, 0x8F95, 0x56ED, 0x5458, 0x5706, 0x733F, -/* 29B8 */ 0x6E90, 0x7F18, 0x8FDC, 0x82D1, 0x613F, 0x6028, 0x9662, 0x66F0, -/* 29C0 */ 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5, 0x5CB3, 0x7CA4, 0x6708, 0x60A6, -/* 29C8 */ 0x9605, 0x8018, 0x4E91, 0x90E7, 0x5300, 0x9668, 0x5141, 0x8FD0, -/* 29D0 */ 0x8574, 0x915D, 0x6655, 0x97F5, 0x5B55, 0x531D, 0x7838, 0x6742, -/* 29D8 */ 0x683D, 0x54C9, 0x707E, 0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1, -/* 29E0 */ 0x6512, 0x6682, 0x8D5E, 0x8D43, 0x810F, 0x846C, 0x906D, 0x7CDF, -/* 29E8 */ 0x51FF, 0x85FB, 0x67A3, 0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, -/* 29F0 */ 0x9020, 0x7682, 0x7076, 0x71E5, 0x8D23, 0x62E9, 0x5219, 0x6CFD, -/* 29F8 */ 0x8D3C, 0x600E, 0x589E, 0x618E, 0x66FE, 0x8D60, 0x624E, 0x55B3, -/* 2A00 */ 0x6E23, 0x672D, 0x8F67, 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, -/* 2A08 */ 0x548B, 0x4E4D, 0x70B8, 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, -/* 2A10 */ 0x503A, 0x5BE8, 0x77BB, 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, -/* 2A18 */ 0x65A9, 0x8F97, 0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, -/* 2A20 */ 0x7AD9, 0x6E5B, 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, -/* 2A28 */ 0x638C, 0x6DA8, 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, -/* 2A30 */ 0x7634, 0x969C, 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, -/* 2A38 */ 0x7F69, 0x5146, 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, -/* 2A40 */ 0x8F99, 0x8005, 0x9517, 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, -/* 2A48 */ 0x771F, 0x7504, 0x7827, 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, -/* 2A50 */ 0x75B9, 0x8BCA, 0x9707, 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, -/* 2A58 */ 0x7741, 0x5F81, 0x72F0, 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, -/* 2A60 */ 0x653F, 0x8B24, 0x8B25, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, -/* 2A68 */ 0x679D, 0x652F, 0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, -/* 2A70 */ 0x4E4B, 0x7EC7, 0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, -/* 2A78 */ 0x4F84, 0x5740, 0x6307, 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, -/* 2A80 */ 0x5FD7, 0x631A, 0x63B7, 0x81F3, 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, -/* 2A88 */ 0x5236, 0x667A, 0x79E9, 0x7A1A, 0x8D28, 0x7099, 0x75D4, 0x6EDE, -/* 2A90 */ 0x6CBB, 0x7A92, 0x4E2D, 0x76C5, 0x5FE0, 0x949F, 0x8877, 0x7EC8, -/* 2A98 */ 0x79CD, 0x80BF, 0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, 0x5DDE, -/* 2AA0 */ 0x6D32, 0x8BCC, 0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, -/* 2AA8 */ 0x5B99, 0x663C, 0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, -/* 2AB0 */ 0x8BF8, 0x8BDB, 0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, -/* 2AB8 */ 0x5631, 0x4E3B, 0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, -/* 2AC0 */ 0x7B51, 0x8B67, 0x8B68, 0x8B69, 0x8B6A, 0x8B6B, 0x8BAC, 0x8BB1, -/* 2AC8 */ 0x8BBB, 0x8BC7, 0x8BD0, 0x8BEA, 0x8C09, 0x8C1E, 0x4F4F, 0x6CE8, -/* 2AD0 */ 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816, 0x8F6C, -/* 2AD8 */ 0x64B0, 0x8D5A, 0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E, -/* 2AE0 */ 0x58EE, 0x72B6, 0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, -/* 2AE8 */ 0x8C06, 0x51C6, 0x6349, 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, -/* 2AF0 */ 0x914C, 0x5544, 0x7740, 0x707C, 0x6D4A, 0x5179, 0x54A8, 0x8D44, -/* 2AF8 */ 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B, 0x4ED4, 0x7C7D, 0x6ED3, -/* 2B00 */ 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03, 0x68D5, 0x8E2A, 0x5B97, -/* 2B08 */ 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70, 0x594F, 0x63CD, 0x79DF, -/* 2B10 */ 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, 0x963B, 0x7EC4, 0x94BB, -/* 2B18 */ 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, -/* 2B20 */ 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7, 0x8C42, -/* 2B28 */ 0x8C43, 0x8C44, 0x8C45, 0x8C48, 0x8C4A, 0x8C4B, 0xFFFD, 0xFFFD, -/* 2B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C56, 0x8C57, -/* 2B38 */ 0x8C58, 0x8C59, 0x8C74, 0x8C75, 0x8C76, 0x8C77, 0xFFFD, 0xFFFD, -/* 2B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C83, 0x8C84, 0x8C86, -/* 2B48 */ 0x8C87, 0xFFFD, 0x8C88, 0x8C8B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8C95, 0x8C96, 0x8C97, 0x4E8D, 0x4E0C, -/* 2B58 */ 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15, 0x4E98, 0x4E1E, 0x9B32, -/* 2B60 */ 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F, 0x5315, 0x4E47, 0x592D, -/* 2B68 */ 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4, 0x9997, 0x6BD3, 0x777E, -/* 2B70 */ 0x9F17, 0x4E36, 0x4E9F, 0x9F10, 0x4E5C, 0x4E69, 0x4E93, 0x8288, -/* 2B78 */ 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D, 0x539D, 0x53A3, 0x53A5, -/* 2B80 */ 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5, 0x5326, 0x532E, 0x533E, -/* 2B88 */ 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208, 0x520E, 0x522D, 0x5233, -/* 2B90 */ 0x523F, 0x5240, 0x524C, 0x525E, 0x5261, 0x525C, 0x84AF, 0x527D, -/* 2B98 */ 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7F54, 0x4EBB, 0x4EC3, -/* 2BA0 */ 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, 0x4EDE, 0x4F1B, 0x4EF3, -/* 2BA8 */ 0x4F22, 0x4F64, 0x4EF5, 0x4F25, 0x4F27, 0x4F09, 0x4F2B, 0x4F5E, -/* 2BB0 */ 0x4F67, 0x6538, 0x4F5A, 0x4F5D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, -/* 2BB8 */ 0x4F76, 0x4F74, 0x4F91, 0x4F89, 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, -/* 2BC0 */ 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94, 0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, -/* 2BC8 */ 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1, 0x4FDF, 0x4FF8, 0x5029, 0x504C, -/* 2BD0 */ 0x4FF3, 0x502C, 0x500F, 0x502E, 0x502D, 0x4FFE, 0x501C, 0x500C, -/* 2BD8 */ 0x5025, 0x5028, 0x507E, 0x5043, 0x5055, 0x5048, 0x504E, 0x506C, -/* 2BE0 */ 0x507B, 0x50A5, 0x50A7, 0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, -/* 2BE8 */ 0x50EC, 0x50E6, 0x50EE, 0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, -/* 2BF0 */ 0x4F65, 0x4FCE, 0x9FA0, 0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, -/* 2BF8 */ 0x9998, 0x5181, 0x5914, 0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, -/* 2C00 */ 0x5919, 0x5155, 0x4EA0, 0x5156, 0x4EB3, 0x886E, 0x88A4, 0x4EB5, -/* 2C08 */ 0x8114, 0x88D2, 0x7980, 0x5B34, 0x8803, 0x7FB8, 0x51AB, 0x51B1, -/* 2C10 */ 0x51BD, 0x51BC, 0x8D20, 0x8D51, 0x8D52, 0x8D57, 0x8D5F, 0x8D65, -/* 2C18 */ 0x8D68, 0x8D69, 0x8D6A, 0x8D6C, 0x8D6E, 0x8D6F, 0x8D71, 0x8D72, -/* 2C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C28 */ 0xFFFD, 0x8D82, 0x8D83, 0x8D86, 0x8D87, 0x8D88, 0x8D89, 0x8D8C, -/* 2C30 */ 0x8D8D, 0x8D8E, 0x8D8F, 0x8D90, 0x8D92, 0x8D93, 0xFFFD, 0xFFFD, -/* 2C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C40 */ 0x8DA0, 0x8DA1, 0xFFFD, 0x8DA2, 0x8DB2, 0x8DB6, 0x8DB7, 0x8DB9, -/* 2C48 */ 0x8DBB, 0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5, 0x8DC7, 0x8DC8, -/* 2C50 */ 0x8DC9, 0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3, 0x8DD4, 0x51C7, -/* 2C58 */ 0x5196, 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4, -/* 2C60 */ 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, -/* 2C68 */ 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, 0x8BDF, 0x8BE0, -/* 2C70 */ 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, 0x8BF6, 0x8BF9, -/* 2C78 */ 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 0x8C0C, 0x8C0F, -/* 2C80 */ 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 0x8C1B, 0x8C18, -/* 2C88 */ 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 0x8C2A, 0x8C2B, -/* 2C90 */ 0x8C2E, 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 0x5369, 0x537A, -/* 2C98 */ 0x961D, 0x9622, 0x9621, 0x9631, 0x962A, 0x963D, 0x963C, 0x9642, -/* 2CA0 */ 0x9649, 0x9654, 0x965F, 0x9667, 0x966C, 0x9672, 0x9674, 0x9688, -/* 2CA8 */ 0x968D, 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, 0x9099, 0x90AC, -/* 2CB0 */ 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA, 0x8DD5, 0x8DD8, 0x8DD9, -/* 2CB8 */ 0x8DDC, 0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5, 0x8DE6, 0x8DE7, 0x8DE9, -/* 2CC0 */ 0x8DED, 0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2, 0x8DF4, 0x8DF6, 0x8DFC, -/* 2CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E06, -/* 2CD0 */ 0x8E07, 0x8E08, 0x8E0B, 0x8E0D, 0x8E0E, 0x8E10, 0x8E11, 0x8E12, -/* 2CD8 */ 0x8E13, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CE0 */ 0xFFFD, 0x8E20, 0x8E21, 0x8E24, 0x8E25, 0x8E26, 0x8E27, 0x8E28, -/* 2CE8 */ 0x8E2B, 0x8E2D, 0x8E30, 0x8E32, 0x8E33, 0x8E34, 0x8E36, 0x8E37, -/* 2CF0 */ 0x8E38, 0x8E3B, 0x8E3C, 0x8E3E, 0xFFFD, 0x8E3F, 0x8E43, 0x8E45, -/* 2CF8 */ 0x8E46, 0x8E4C, 0x8E4D, 0x8E4E, 0x8E4F, 0x8E50, 0x8E67, 0x8E68, -/* 2D00 */ 0x8E6A, 0x8E6B, 0x8E6E, 0x8E71, 0x90B8, 0x90B0, 0x90CF, 0x90C5, -/* 2D08 */ 0x90BE, 0x90D0, 0x90C4, 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, -/* 2D10 */ 0x90D7, 0x90DB, 0x90EB, 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, -/* 2D18 */ 0x9123, 0x9131, 0x912F, 0x9139, 0x9143, 0x9146, 0x520D, 0x5942, -/* 2D20 */ 0x52A2, 0x52AC, 0x52AD, 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, -/* 2D28 */ 0x53DF, 0x71EE, 0x77CD, 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, -/* 2D30 */ 0x5F01, 0x755A, 0x5DEF, 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, -/* 2D38 */ 0x58C5, 0x58D1, 0x5729, 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, -/* 2D40 */ 0x572F, 0x575C, 0x573B, 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, -/* 2D48 */ 0x577C, 0x577B, 0x5768, 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, -/* 2D50 */ 0x578C, 0x57B2, 0x57CF, 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, -/* 2D58 */ 0x57D8, 0x57DA, 0x57D9, 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, -/* 2D60 */ 0x57E4, 0x57DD, 0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7A, -/* 2D68 */ 0x8E7B, 0x8E7D, 0x8E7E, 0x8E80, 0x8E82, 0x8E83, 0x8E84, 0x8E86, -/* 2D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E91, -/* 2D78 */ 0x8E92, 0x8E93, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D80 */ 0xFFFD, 0x8E9D, 0x8EAD, 0x8EAE, 0x8EB0, 0x8EB1, 0x580B, 0x580D, -/* 2D88 */ 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819, 0x5844, 0x5820, 0x5865, -/* 2D90 */ 0x586C, 0x5881, 0x5889, 0x589A, 0x5880, 0x99A8, 0x9F19, 0x61FF, -/* 2D98 */ 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, 0x82A8, 0x8284, 0x828E, -/* 2DA0 */ 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8, 0x82BE, 0x82B0, 0x82C8, -/* 2DA8 */ 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, 0x82CB, 0x82CC, 0x82C1, -/* 2DB0 */ 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, 0x82C4, 0x82CE, 0x82A4, -/* 2DB8 */ 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F, 0x8307, 0x82DC, 0x82F4, -/* 2DC0 */ 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3, 0x8311, 0x831A, 0x8306, -/* 2DC8 */ 0x8314, 0x8315, 0x82E0, 0x82D5, 0x831C, 0x8351, 0x835B, 0x835C, -/* 2DD0 */ 0x8308, 0x8392, 0x833C, 0x8334, 0x8331, 0x839B, 0x835E, 0x832F, -/* 2DD8 */ 0x834F, 0x8347, 0x8343, 0x835F, 0x8340, 0x8317, 0x8360, 0x832D, -/* 2DE0 */ 0x833A, 0x8333, 0x8366, 0x8365, 0x8368, 0x831B, 0x8369, 0x836C, -/* 2DE8 */ 0x836A, 0x836D, 0x836E, 0x83B0, 0x8378, 0x83B3, 0x83B4, 0x83A0, -/* 2DF0 */ 0x83AA, 0x8393, 0x839C, 0x8385, 0x837C, 0x83B6, 0x83A9, 0x837D, -/* 2DF8 */ 0x83B8, 0x837B, 0x8398, 0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1, -/* 2E00 */ 0x8401, 0x83E5, 0x83D8, 0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, -/* 2E08 */ 0x83D6, 0x841C, 0x8438, 0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, -/* 2E10 */ 0x8403, 0x83F8, 0x83F9, 0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, -/* 2E18 */ 0x83E1, 0x845C, 0x8451, 0x845A, 0x8459, 0x8473, 0x8487, 0x8488, -/* 2E20 */ 0x847A, 0x8489, 0x8478, 0x843C, 0x8446, 0x8469, 0x8476, 0x848C, -/* 2E28 */ 0x848E, 0x8431, 0x846D, 0x84C1, 0x84CD, 0x84D0, 0x84E6, 0x84BD, -/* 2E30 */ 0x84D3, 0x84CA, 0x84BF, 0x84BA, 0x84E0, 0x84A1, 0x84B9, 0x84B4, -/* 2E38 */ 0x8497, 0x84E5, 0x84E3, 0x850C, 0x750D, 0x8538, 0x84F0, 0x8539, -/* 2E40 */ 0x851F, 0x853A, 0x8F6A, 0x8F80, 0x8F8C, 0x8F92, 0x8F9D, 0x8FA0, -/* 2E48 */ 0x8FA1, 0x8FA2, 0x8FA4, 0x8FA5, 0x8FA6, 0x8FA7, 0x8FAA, 0x8FAC, -/* 2E50 */ 0x8FAD, 0x8FAE, 0x8FAF, 0x8FB2, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, -/* 2E58 */ 0x8FB8, 0x8FBA, 0x8FBB, 0x8FBC, 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6, -/* 2E60 */ 0xFFFD, 0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC, 0x8FCD, 0x8FCF, 0x8FD2, -/* 2E68 */ 0x8FD6, 0x8FD7, 0x8FDA, 0x8FE0, 0x8FE1, 0x8FE3, 0x8FE7, 0x8FEC, -/* 2E70 */ 0x8FEF, 0x8FF1, 0x8FF2, 0x8FF4, 0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, -/* 2E78 */ 0x8FFC, 0x8FFE, 0x8FFF, 0x9007, 0x9008, 0x900C, 0x900E, 0x9013, -/* 2E80 */ 0x9015, 0x9018, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, -/* 2E88 */ 0x8568, 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, -/* 2E90 */ 0x85A4, 0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, -/* 2E98 */ 0x85B9, 0x85B7, 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, -/* 2EA0 */ 0x8605, 0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, -/* 2EA8 */ 0x8037, 0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25, 0x5C2C, -/* 2EB0 */ 0x5C34, 0x624C, 0x626A, 0x629F, 0x62BB, 0x62CA, 0x62DA, 0x62D7, -/* 2EB8 */ 0x62EE, 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, 0x63F6, -/* 2EC0 */ 0x6371, 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, 0x6369, -/* 2EC8 */ 0x63AE, 0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, -/* 2ED0 */ 0x63CE, 0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, -/* 2ED8 */ 0x6420, 0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496, -/* 2EE0 */ 0x9019, 0x901C, 0x9023, 0x9024, 0x9025, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034, -/* 2EF0 */ 0x9037, 0x9039, 0x903A, 0x903D, 0x903F, 0x9040, 0x9043, 0x9045, -/* 2EF8 */ 0x9046, 0x9048, 0x9049, 0x904A, 0x904B, 0x904C, 0x904E, 0x9054, -/* 2F00 */ 0x9055, 0x9056, 0x9059, 0x905A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F08 */ 0xFFFD, 0xFFFD, 0x9064, 0x9066, 0x9067, 0x9069, 0x906A, 0x906B, -/* 2F10 */ 0x906C, 0x906F, 0x9070, 0x9071, 0x9072, 0x9073, 0xFFFD, 0xFFFD, -/* 2F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x907E, 0x9081, 0xFFFD, -/* 2F20 */ 0x9084, 0x9085, 0x9086, 0x9087, 0x9089, 0x908A, 0x908C, 0x908D, -/* 2F28 */ 0x908E, 0x908F, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909A, -/* 2F30 */ 0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4, 0x90A5, 0x90A7, 0x90A8, -/* 2F38 */ 0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7, 0x90BC, 0x90BD, 0x90BF, -/* 2F40 */ 0x90C0, 0x647A, 0x64B7, 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, -/* 2F48 */ 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2, -/* 2F50 */ 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, 0x53E9, 0x53E8, 0x53FB, -/* 2F58 */ 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, 0x5454, 0x5456, -/* 2F60 */ 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, -/* 2F68 */ 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466, -/* 2F70 */ 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6, -/* 2F78 */ 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC, -/* 2F80 */ 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, -/* 2F88 */ 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, -/* 2F90 */ 0x5523, 0x550F, 0x5511, 0x5527, 0x552A, 0x5567, 0x558F, 0x55B5, -/* 2F98 */ 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, 0x5550, 0x553C, 0x90C2, -/* 2FA0 */ 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB, 0x90CC, 0x90CD, 0x90D2, -/* 2FA8 */ 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9, 0x90DA, 0x90DE, 0x90DF, -/* 2FB0 */ 0x90E0, 0x90E3, 0x90E4, 0x90E5, 0x90E9, 0x90EA, 0x90EC, 0x90EE, -/* 2FB8 */ 0x90F0, 0x90F1, 0x90F2, 0x90F3, 0x90F5, 0x90F6, 0x90F7, 0x90F9, -/* 2FC0 */ 0x90FA, 0x90FB, 0x90FC, 0x90FF, 0x9100, 0x9101, 0x9103, 0x911A, -/* 2FC8 */ 0x911B, 0x911C, 0xFFFD, 0x911D, 0x911F, 0x9120, 0x9121, 0x9144, -/* 2FD0 */ 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555C, -/* 2FD8 */ 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, 0x559F, -/* 2FE0 */ 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, 0x5594, -/* 2FE8 */ 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB, 0x55EC, -/* 2FF0 */ 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, 0x55F3, -/* 2FF8 */ 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, 0x561E, 0x5608, -/* 3000 */ 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, 0x5627, 0x562D, -/* 3008 */ 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659, 0x565C, -/* 3010 */ 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B, 0x567C, -/* 3018 */ 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, 0x56F5, -/* 3020 */ 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, 0x5E0F, -/* 3028 */ 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C, 0x9145, 0x9147, -/* 3030 */ 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156, 0x9158, 0x9159, -/* 3038 */ 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167, 0x9168, 0x916B, -/* 3040 */ 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180, 0x9181, 0x9182, -/* 3048 */ 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E, 0x918F, 0x91AB, -/* 3050 */ 0x91AC, 0x91B0, 0x91B1, 0x91B2, 0x91B3, 0x91B6, 0x91B7, 0x91B8, -/* 3058 */ 0x91B9, 0x91BB, 0x91C8, 0x91CB, 0x91D0, 0x5E37, 0x5E44, 0x5E54, -/* 3060 */ 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A, 0x5C8D, 0x5C90, 0x5C96, -/* 3068 */ 0x5C88, 0x5C98, 0x5C99, 0x5C91, 0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, -/* 3070 */ 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, -/* 3078 */ 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, 0x5D02, 0x5D03, 0x5D27, 0x5D26, -/* 3080 */ 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, -/* 3088 */ 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D5D, 0x5D6B, 0x5D4B, 0x5D4A, -/* 3090 */ 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D, 0x8C73, 0x5DB7, 0x5DC5, -/* 3098 */ 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89, 0x5F8C, 0x5F95, 0x5F99, -/* 30A0 */ 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC, 0x8862, 0x5F61, 0x72AD, -/* 30A8 */ 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3, 0x72C1, 0x72CE, 0x72CD, -/* 30B0 */ 0x72D2, 0x72E8, 0x72EF, 0x72E9, 0x72F2, 0x72F4, 0x72F7, 0x7301, -/* 30B8 */ 0x72F3, 0x7303, 0x72FA, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, -/* 30C0 */ 0x731E, 0x731D, 0x7315, 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, -/* 30C8 */ 0x7331, 0x7350, 0x734D, 0x7357, 0x7360, 0x736C, 0x736F, 0x737E, -/* 30D0 */ 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902, 0x9963, 0xFFFD, 0xFFFD, -/* 30D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9974, 0x9977, 0x997D, 0x9980, -/* 30E0 */ 0x9984, 0x9987, 0x998A, 0x998D, 0x9990, 0x9991, 0x9993, 0x9994, -/* 30E8 */ 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, -/* 30F0 */ 0x5EB5, 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, -/* 30F8 */ 0x5EEA, 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, -/* 3100 */ 0x6004, 0x5FE1, 0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, -/* 3108 */ 0x5FF8, 0x6019, 0x6035, 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, -/* 3110 */ 0x602B, 0x600A, 0x603F, 0x6021, 0x6078, 0x6079, 0x607B, 0x607A, -/* 3118 */ 0x6042, 0x606A, 0x607D, 0x6096, 0x609A, 0x60AD, 0x609D, 0x6083, -/* 3120 */ 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, 0x60DD, 0x60D8, -/* 3128 */ 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60F4, -/* 3130 */ 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7, -/* 3138 */ 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1, -/* 3140 */ 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606, -/* 3148 */ 0x9608, 0x960A, 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615, -/* 3150 */ 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35, -/* 3158 */ 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, 0x6C90, 0x6C94, 0x6C8C, -/* 3160 */ 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6CA9, 0x6CD0, 0x6CD4, -/* 3168 */ 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6, -/* 3170 */ 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE, 0x6D39, -/* 3178 */ 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, 0x6D19, 0x6D0E, -/* 3180 */ 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, 0x6D52, 0x6D54, -/* 3188 */ 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, 0x6D93, 0x6D94, -/* 3190 */ 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, 0x6DC5, 0x6DDE, -/* 3198 */ 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, 0x6DDD, 0x6DD9, 0x6E16, -/* 31A0 */ 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, 0x6E4E, 0x6E6B, 0x6EB2, -/* 31A8 */ 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, 0x6E25, 0x6E44, 0x6EDF, -/* 31B0 */ 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5, 0x6EA7, 0x6EBD, -/* 31B8 */ 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, 0x6EC2, 0x6E9F, -/* 31C0 */ 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, 0x6F2F, 0x6F36, -/* 31C8 */ 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, 0x6F8D, 0x6F8C, -/* 31D0 */ 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1, 0x936B, 0x6FC9, 0x6FA7, -/* 31D8 */ 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 0x6FDE, 0x6FE0, 0x6FEF, -/* 31E0 */ 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, 0x704F, 0x705E, 0x5B80, -/* 31E8 */ 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 0x752F, 0x9A9E, 0x6434, -/* 31F0 */ 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07, 0x8FB6, 0x8FD3, -/* 31F8 */ 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6, 0x8FF3, 0x8FE8, -/* 3200 */ 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 0x900D, 0x9016, 0x9021, -/* 3208 */ 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 0x9051, 0x9052, 0x9050, -/* 3210 */ 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074, 0x907D, 0x9082, -/* 3218 */ 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, 0x5F56, 0x5F58, 0x5C3B, -/* 3220 */ 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, 0x5C66, 0x7FBC, 0x5F2A, -/* 3228 */ 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 0x5C6E, 0x5981, 0x5983, -/* 3230 */ 0x598D, 0x59A9, 0x59AA, 0x59A3, 0x93CB, 0x93CC, 0x93CD, 0x5997, -/* 3238 */ 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 0x59AF, 0x59D7, -/* 3240 */ 0x59BE, 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 0x59D8, 0x59F9, -/* 3248 */ 0x5A0C, 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, 0x5A13, 0x5A40, -/* 3250 */ 0x5A67, 0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75, 0x80EC, 0x5AAA, -/* 3258 */ 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, -/* 3260 */ 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6, 0x5AD8, 0x5ADC, -/* 3268 */ 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, 0x5C15, 0x5C1C, -/* 3270 */ 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 0x9A75, 0x9A77, -/* 3278 */ 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 0x9A85, 0x9A88, -/* 3280 */ 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 0x9A9B, 0x9A9C, -/* 3288 */ 0x9A9D, 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, -/* 3290 */ 0x7EA1, 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9, 0x7EAD, 0x7EB0, 0x7EBE, -/* 3298 */ 0x7EC0, 0x7EC1, 0x7EC2, 0x7EC9, 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, -/* 32A0 */ 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1, 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, -/* 32A8 */ 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, -/* 32B0 */ 0x7F02, 0x7F03, 0x7F07, 0x7F08, 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, -/* 32B8 */ 0x7F12, 0x7F17, 0x7F19, 0x7F1C, 0x7F1B, 0x7F1F, 0xFFFD, 0xFFFD, -/* 32C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F2A, 0x7F2B, 0x7F2C, -/* 32C8 */ 0x7F2D, 0x7F2F, 0x7F30, 0x7F31, 0x7F32, 0x7F33, 0x7F35, 0x5E7A, -/* 32D0 */ 0x757F, 0x5DDB, 0x753E, 0x9095, 0x738E, 0x7391, 0x73AE, 0x73A2, -/* 32D8 */ 0x739F, 0x73CF, 0x73C2, 0x73D1, 0x73B7, 0x73B3, 0x73C0, 0x73C9, -/* 32E0 */ 0x73C8, 0x73E5, 0x73D9, 0x987C, 0x740A, 0x73E9, 0x73E7, 0x73DE, -/* 32E8 */ 0x73BA, 0x73F2, 0x740F, 0x742A, 0x745B, 0x7426, 0x7425, 0x7428, -/* 32F0 */ 0x7430, 0x742E, 0x742C, 0x946C, 0x946D, 0x946E, 0x946F, 0x9491, -/* 32F8 */ 0x9496, 0x9498, 0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA, 0x94E6, -/* 3300 */ 0x94FB, 0x951C, 0x9520, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, -/* 3308 */ 0x7455, 0x7459, 0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, -/* 3310 */ 0x7481, 0x7487, 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, -/* 3318 */ 0x74D2, 0x74BA, 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, -/* 3320 */ 0x6748, 0x6769, 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, -/* 3328 */ 0x6775, 0x67A8, 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, -/* 3330 */ 0x6809, 0x67D8, 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, -/* 3338 */ 0x67DA, 0x67B3, 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, -/* 3340 */ 0x67C1, 0x67FD, 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, -/* 3348 */ 0x6844, 0x6864, 0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, -/* 3350 */ 0x6840, 0x683E, 0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, -/* 3358 */ 0x6877, 0x6893, 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, -/* 3360 */ 0x68F9, 0x9527, 0x9533, 0x953D, 0x9543, 0x9548, 0x954B, 0x9555, -/* 3368 */ 0x955A, 0x9560, 0x956E, 0x9574, 0x9575, 0x6924, 0x68F0, 0x690B, -/* 3370 */ 0x6901, 0x6957, 0x68E3, 0x6910, 0x6971, 0x6939, 0x6960, 0x6942, -/* 3378 */ 0x695D, 0x6984, 0x696B, 0x6980, 0x6998, 0x6978, 0x6934, 0x69CC, -/* 3380 */ 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966, 0x6963, 0x6979, 0x699B, -/* 3388 */ 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4, 0x69B1, 0x69C1, 0x69CA, -/* 3390 */ 0x69DF, 0x6995, 0x69E0, 0x698D, 0x69FF, 0x6A2F, 0x69ED, 0x6A17, -/* 3398 */ 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, -/* 33A0 */ 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, 0x6A28, 0x6A58, 0x6A7C, 0x6A91, -/* 33A8 */ 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, 0x7337, 0x7352, 0x6B81, 0x6B82, -/* 33B0 */ 0x6B87, 0x6B84, 0x6B92, 0x6B93, 0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, -/* 33B8 */ 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, 0x8F72, 0x8F73, 0x8F75, 0x8F76, -/* 33C0 */ 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C, 0x8F7E, 0x8F81, 0x8F82, -/* 33C8 */ 0x8F84, 0x8F87, 0x8F8B, 0x95EC, 0x95FF, 0x9607, 0x9613, 0x9618, -/* 33D0 */ 0x961B, 0x961E, 0x9620, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33D8 */ 0xFFFD, 0xFFFD, 0x962B, 0x962C, 0x962D, 0x962F, 0x9630, 0x9637, -/* 33E0 */ 0x9638, 0x9639, 0x963A, 0x963E, 0x9641, 0x9643, 0x964A, 0x964E, -/* 33E8 */ 0x964F, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0xFFFD, 0x9658, -/* 33F0 */ 0x9659, 0x965A, 0x965C, 0x965D, 0x965E, 0x9660, 0x9663, 0x9665, -/* 33F8 */ 0x9666, 0x966B, 0x966D, 0x966E, 0x966F, 0x9670, 0x9671, 0x9673, -/* 3400 */ 0x9687, 0x9689, 0x968A, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F98, 0x8F9A, -/* 3408 */ 0x8ECE, 0x620B, 0x6217, 0x621B, 0x621F, 0x6222, 0x6221, 0x6225, -/* 3410 */ 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, -/* 3418 */ 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, -/* 3420 */ 0x6603, 0x6615, 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, -/* 3428 */ 0x6636, 0x6635, 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, -/* 3430 */ 0x6661, 0x6657, 0x6677, 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, -/* 3438 */ 0x66DB, 0x66DC, 0x66E6, 0x66E9, 0x8D32, 0x8D33, 0x8D36, 0x8D3B, -/* 3440 */ 0x8D3D, 0x8D40, 0x8D45, 0x8D46, 0x8D48, 0x8D49, 0x8D47, 0x8D4D, -/* 3448 */ 0x8D55, 0x8D59, 0x89C7, 0x89CA, 0x89CB, 0x89CC, 0x89CE, 0x89CF, -/* 3450 */ 0x89D0, 0x89D1, 0x726E, 0x729F, 0x725D, 0x7266, 0x726F, 0x727E, -/* 3458 */ 0x727F, 0x7284, 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, -/* 3460 */ 0x63B0, 0x968C, 0x968E, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, -/* 3468 */ 0x969A, 0x969B, 0x96B1, 0x96B2, 0x96B4, 0x96B5, 0x96B7, 0x96B8, -/* 3470 */ 0x96BA, 0x96BB, 0x96BF, 0x96C2, 0x96C3, 0x96C8, 0x96CA, 0x96CB, -/* 3478 */ 0x96D0, 0x96D1, 0x96D3, 0x96D4, 0x96EB, 0xFFFD, 0x96EC, 0x96ED, -/* 3480 */ 0x96EE, 0x96F0, 0x96F1, 0x96F2, 0x96F4, 0x96F5, 0x96F8, 0x96FA, -/* 3488 */ 0x96FB, 0x96FC, 0x96FD, 0x96FF, 0x9702, 0x9703, 0x9705, 0x970A, -/* 3490 */ 0x970B, 0x970C, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715, 0x9717, -/* 3498 */ 0x9718, 0x9719, 0x971A, 0x971B, 0x971D, 0x971F, 0x9720, 0x643F, -/* 34A0 */ 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, 0x6BF9, 0x6C05, -/* 34A8 */ 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, 0x6C1A, 0x6C21, -/* 34B0 */ 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, 0x656B, 0x724D, -/* 34B8 */ 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, 0x809C, 0x8093, -/* 34C0 */ 0x80BC, 0x670A, 0x80BD, 0x80B1, 0x80AB, 0x80AD, 0x80B4, 0x80B7, -/* 34C8 */ 0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80DB, 0x80C2, 0x80C4, 0x80D9, -/* 34D0 */ 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x80EB, 0x80F1, 0x80F4, 0x80ED, -/* 34D8 */ 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112, 0x8C5A, 0x8136, -/* 34E0 */ 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, 0x8153, 0x8174, -/* 34E8 */ 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, 0x817D, 0x816D, -/* 34F0 */ 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, 0x6ED5, 0x81A3, -/* 34F8 */ 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB, 0x972B, 0x972C, 0x972E, -/* 3500 */ 0x972F, 0x9731, 0x9733, 0x9734, 0x9735, 0x9736, 0x9737, 0x973A, -/* 3508 */ 0x973B, 0x973C, 0x973D, 0x9754, 0x9755, 0x9757, 0x9758, 0x975A, -/* 3510 */ 0x975C, 0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, -/* 3518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3520 */ 0xFFFD, 0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977A, 0x977B, -/* 3528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3530 */ 0x9786, 0x9787, 0x9788, 0x9789, 0x978A, 0x978C, 0x978E, 0x978F, -/* 3538 */ 0x9790, 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, 0x979B, -/* 3540 */ 0x979C, 0x979D, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, -/* 3548 */ 0x6B46, 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, -/* 3550 */ 0x6BB3, 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, -/* 3558 */ 0x65C6, 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, -/* 3560 */ 0x709C, 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, -/* 3568 */ 0x70E8, 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, -/* 3570 */ 0x715C, 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, -/* 3578 */ 0x71B3, 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, -/* 3580 */ 0x721D, 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, -/* 3588 */ 0x6243, 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, -/* 3590 */ 0x795C, 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, -/* 3598 */ 0x797A, 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0, -/* 35A0 */ 0x979E, 0x979F, 0x97A1, 0x97A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3, -/* 35B0 */ 0x97E4, 0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2, -/* 35B8 */ 0x97F4, 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, -/* 35C0 */ 0x60AB, 0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, -/* 35C8 */ 0x6206, 0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, -/* 35D0 */ 0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C, -/* 35D8 */ 0x781D, 0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C, -/* 35E0 */ 0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850, -/* 35E8 */ 0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C, -/* 35F0 */ 0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, -/* 35F8 */ 0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, -/* 3600 */ 0x9F9B, 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, -/* 3608 */ 0x7707, 0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, -/* 3610 */ 0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768, 0x7762, -/* 3618 */ 0x7765, 0x777F, 0x778D, 0x777D, 0x7780, 0x778C, 0x7791, 0x779F, -/* 3620 */ 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, 0x754E, 0x754B, -/* 3628 */ 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, 0x7F61, 0x7F5F, -/* 3630 */ 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 0x7F7E, 0x76CD, -/* 3638 */ 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 0x948A, 0x948C, -/* 3640 */ 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 0x949A, 0x949B, -/* 3648 */ 0x949C, 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 0x94AC, 0x94AF, -/* 3650 */ 0x94B0, 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, -/* 3658 */ 0x94BC, 0x94BD, 0x94BF, 0x94C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x94D0, 0x94D1, 0x94D2, 0x94D5, 0x94D6, -/* 3668 */ 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, 0x94E0, 0x94E2, -/* 3670 */ 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA, 0x988B, 0x988E, 0x9892, -/* 3678 */ 0x9895, 0x9899, 0x98A3, 0x98CF, 0x98D0, 0x98D4, 0x98D6, 0x98D7, -/* 3680 */ 0x98DB, 0x98DC, 0x98DD, 0x98E0, 0x98E1, 0x98E2, 0x98E3, 0x98E4, -/* 3688 */ 0xFFFD, 0x98E5, 0x98E6, 0x94E9, 0x94EB, 0x94EE, 0x94EF, 0x94F3, -/* 3690 */ 0x94F4, 0x94F5, 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, 0x9503, -/* 3698 */ 0x9502, 0x9506, 0x9507, 0x9509, 0x950A, 0x950D, 0x950E, 0x950F, -/* 36A0 */ 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, 0x951D, -/* 36A8 */ 0x951E, 0x951F, 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, -/* 36B0 */ 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, -/* 36B8 */ 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, -/* 36C0 */ 0x954F, 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, -/* 36C8 */ 0x955B, 0x955E, 0x955F, 0x955D, 0x9561, 0x9562, 0xFFFD, 0xFFFD, -/* 36D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x956F, -/* 36D8 */ 0x9571, 0x9572, 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, 0x79D5, -/* 36E0 */ 0x79ED, 0x79E3, 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, 0x7A1E, -/* 36E8 */ 0x7A14, 0x9908, 0x9909, 0x990A, 0x990B, 0x990C, 0x990E, 0x990F, -/* 36F0 */ 0x9964, 0x9966, 0x9973, 0x9978, 0x9979, 0x997B, 0x997E, 0x9982, -/* 36F8 */ 0x9983, 0x9989, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, -/* 3700 */ 0x7688, 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, -/* 3708 */ 0x9E20, 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, -/* 3710 */ 0x9E31, 0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, -/* 3718 */ 0x9E42, 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, -/* 3720 */ 0x9E4E, 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, -/* 3728 */ 0x9E63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3730 */ 0x9E71, 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, -/* 3738 */ 0x75AC, 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, -/* 3740 */ 0x75C3, 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, -/* 3748 */ 0x75EB, 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, -/* 3750 */ 0x7605, 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619, -/* 3758 */ 0x998C, 0x998E, 0x99A6, 0x99A7, 0x761B, 0x763C, 0x7622, 0x7620, -/* 3760 */ 0x7640, 0x762D, 0x7630, 0x763F, 0x7635, 0x7643, 0x763E, 0x7633, -/* 3768 */ 0x764D, 0x765E, 0x7654, 0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA, -/* 3770 */ 0x7AE6, 0x7A78, 0x7A79, 0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, -/* 3778 */ 0x7AA0, 0x7AAC, 0x7AA8, 0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, -/* 3780 */ 0x887D, 0x887F, 0x8882, 0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, -/* 3788 */ 0x88E2, 0x88CE, 0x88E3, 0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, -/* 3790 */ 0x88FE, 0x88F0, 0x8921, 0x8919, 0x8913, 0x891B, 0x890A, 0x8934, -/* 3798 */ 0x892B, 0x8936, 0x8941, 0x8966, 0x897B, 0x758B, 0x80E5, 0x76B2, -/* 37A0 */ 0x76B4, 0x77DC, 0x8012, 0x8014, 0x8016, 0x801C, 0x8020, 0x8022, -/* 37A8 */ 0x8025, 0x8026, 0x8027, 0x8029, 0x8028, 0x8031, 0x800B, 0x8035, -/* 37B0 */ 0x8043, 0x8046, 0x804D, 0x8052, 0x8069, 0x8071, 0x8983, 0x9878, -/* 37B8 */ 0x9880, 0x9883, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, -/* 37C0 */ 0x989B, 0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, -/* 37C8 */ 0x8654, 0x866C, 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, -/* 37D0 */ 0x868D, 0x868B, 0x86AC, 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, -/* 37D8 */ 0x86A9, 0x86B6, 0x86C4, 0x86B5, 0x86CE, 0x86B0, 0x86BA, 0x86B1, -/* 37E0 */ 0x86AF, 0x86C9, 0x86CF, 0x86B4, 0x86E9, 0x86F1, 0x86F2, 0x86ED, -/* 37E8 */ 0x86F3, 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, 0x86D8, 0x86D1, -/* 37F0 */ 0x8703, 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, 0x8723, -/* 37F8 */ 0x873B, 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, -/* 3800 */ 0x8731, 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, -/* 3808 */ 0x877B, 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, -/* 3810 */ 0x877C, 0x8764, 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2, -/* 3818 */ 0x9A72, 0x9A83, 0x9A89, 0x9A8D, 0x9A8E, 0x9A94, 0x9A95, 0x9A99, -/* 3820 */ 0x9AA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3828 */ 0x9AB2, 0x9AB3, 0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB, 0x9ABD, 0x9ABE, -/* 3830 */ 0x9ABF, 0x9AC3, 0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8, 0x9AC9, 0x9ACA, -/* 3838 */ 0x9ACD, 0x9ACE, 0x9ACF, 0x9AD0, 0x9AD2, 0x9AD4, 0x9AD5, 0x9AD6, -/* 3840 */ 0x9AD7, 0x9AD9, 0x9ADA, 0x9ADB, 0x9ADC, 0xFFFD, 0x9ADD, 0x9ADE, -/* 3848 */ 0x9AE0, 0x9AE2, 0x9AE3, 0x9AE4, 0x9AE5, 0x9AE7, 0x9AE8, 0x9AE9, -/* 3850 */ 0x9AEA, 0x9AEC, 0x9AEE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AFA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B04, 0x9B05, 0x9B06, 0x87C6, -/* 3868 */ 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB, 0x87E5, 0x87AC, -/* 3870 */ 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1, 0x87C0, 0x87CA, -/* 3878 */ 0x87DB, 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813, 0x87FE, 0x880A, -/* 3880 */ 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, 0x7F42, 0x7F44, 0x7F45, -/* 3888 */ 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04, 0x7B15, 0x7B0A, -/* 3890 */ 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, 0x7B2E, 0x7B31, -/* 3898 */ 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E, 0x7B58, 0x7B5A, -/* 38A0 */ 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E, 0x7B7B, 0x7B62, -/* 38A8 */ 0x7B72, 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, 0x7BAC, 0x7B9D, -/* 38B0 */ 0x7BA8, 0x7B85, 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, 0x7BB4, 0x7BD1, -/* 38B8 */ 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6, 0x7BEA, 0x7C0C, -/* 38C0 */ 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, 0x7C0B, 0x9B07, 0xFFFD, 0xFFFD, -/* 38C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B10, 0x9B11, 0x9B12, 0x9B20, -/* 38D0 */ 0x9B21, 0x9B22, 0x9B30, 0x9B31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B3D, 0x9B3E, 0x9B3F, 0x9B40, -/* 38E0 */ 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B4E, 0x9B50, 0x9B52, 0x9B53, -/* 38E8 */ 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, 0x8201, -/* 38F0 */ 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, 0x822D, -/* 38F8 */ 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, 0x823E, -/* 3900 */ 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, 0x887E, -/* 3908 */ 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, 0x7F9F, 0x7FA7, -/* 3910 */ 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, 0x7C9D, 0x7C9C, -/* 3918 */ 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, 0x7CC7, 0x7CCC, -/* 3920 */ 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8, 0x7FBF, -/* 3928 */ 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, 0x7FF3, -/* 3930 */ 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, 0x9EB4, -/* 3938 */ 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, 0x8C47, -/* 3940 */ 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164, 0x9162, 0x9161, -/* 3948 */ 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, 0x9172, 0x9174, 0x9179, -/* 3950 */ 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, 0x91A2, 0x91A3, 0x91AA, -/* 3958 */ 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, 0x91BA, 0x8C55, 0x9E7E, -/* 3960 */ 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 0x8DB5, 0x8DBF, 0x8DBC, -/* 3968 */ 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE, 0x8DCE, 0x8DCF, -/* 3970 */ 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 0x8DE3, 0x8DF9, 0x8DFB, -/* 3978 */ 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F, 0x8E2C, 0x8E2E, -/* 3980 */ 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 0x8E35, 0x8E3D, 0x8E31, -/* 3988 */ 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A, 0x8E70, 0x8E76, -/* 3990 */ 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, 0x8E94, 0x8E90, 0x8E9C, -/* 3998 */ 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 0x8C98, 0x8C94, 0x659B, -/* 39A0 */ 0x89D6, 0x89DE, 0x89DA, 0x89DC, 0x89E5, 0x89EB, 0x89EF, 0x8A3E, -/* 39A8 */ 0x8B26, 0x9753, 0x96E9, 0x96F3, 0x96EF, 0x9706, 0x9701, 0x9708, -/* 39B0 */ 0x970F, 0x970E, 0x972A, 0x972D, 0x9730, 0x973E, 0x9F80, 0x9F83, -/* 39B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F8C, 0x9EFE, -/* 39C0 */ 0x9F0B, 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, -/* 39C8 */ 0x96E0, 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, -/* 39D0 */ 0x943E, 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, -/* 39D8 */ 0x7A23, 0x9C8B, 0x9C8E, 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, -/* 39E0 */ 0x9C9A, 0x9C9B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39E8 */ 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8, 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, -/* 39F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39F8 */ 0x9CBA, 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, -/* 3A00 */ 0x9CCA, 0x9CCB, 0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83, 0x9C84, -/* 3A08 */ 0x9C89, 0x9C8A, 0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97, 0x9C98, -/* 3A10 */ 0x9C99, 0x9C9D, 0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE, 0x9CBF, -/* 3A18 */ 0x9CC0, 0x9CC1, 0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2, 0x9CDA, -/* 3A20 */ 0x9CDB, 0x9CE0, 0x9CE1, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, -/* 3A28 */ 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, -/* 3A30 */ 0x9CDF, 0x9CE2, 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, -/* 3A38 */ 0x97AB, 0x97A3, 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, -/* 3A40 */ 0x9AB6, 0x9ABA, 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, -/* 3A48 */ 0x9ACC, 0x9AD1, 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, 0x9B4D, -/* 3A50 */ 0x9B51, 0x98E8, 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, -/* 3A58 */ 0x9AE6, 0x9AEF, 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, -/* 3A60 */ 0x9B13, 0x9B1F, 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, -/* 3A68 */ 0x9E88, 0x9E8B, 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, -/* 3A70 */ 0x9EDD, 0x9EE0, 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, -/* 3A78 */ 0x9EEF, 0x9F22, 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, -/* 3A80 */ 0x9F44, 0x9E24, 0x9E27, 0x9E2E, 0x9E30, 0x9E34, 0x9E3B, 0x9E3C, -/* 3A88 */ 0x9E40, 0x9E4D, 0x9E50, 0x9E52, 0x9E53, 0x9E54, 0x9E56, 0x9E59, -/* 3A90 */ 0x9E5D, 0x9E5F, 0x9E60, 0x9E61, 0x9E62, 0x9E65, 0x9E6E, 0x9E6F, -/* 3A98 */ 0x9E72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9E80, 0xFFFD, 0x9E81, 0x9E83, 0x9E84, -/* 3AA8 */ 0x9E85, 0x9E86, 0x9E89, 0x9E8A, 0x9E9E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9EA7, 0x9EA8, 0x9EA9, 0x9EAA, 0x9EB5, -/* 3AB8 */ 0x9EB6, 0x9EB7, 0x9EB9, 0x9EBA, 0x9EBC, 0x9EBF, 0x9EC0, 0x9EC1, -/* 3AC0 */ 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6, 0x9EC7, 0x9EC8, 0x9ECA, 0x9ECB, -/* 3AC8 */ 0x9ECC, 0x9ED0, 0x9ED2, 0x9ED3, 0x9ED5, 0x9ED6, 0x9ED7, 0x9ED9, -/* 3AD0 */ 0x9EDA, 0x9EDE, 0x9EE1, 0x9EE3, 0x9EE4, 0x9EE6, 0x9EE8, 0x9EEB, -/* 3AD8 */ 0x9EEC, 0x9EED, 0x9EEE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EFA, 0x9EFD, 0xFFFD, 0xFFFD, -/* 3AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F06, 0x9F07, -/* 3AF0 */ 0x9F08, 0x9F09, 0x9F0A, 0x9F0C, 0x9F0F, 0x9F11, 0x9F12, 0x9F14, -/* 3AF8 */ 0x9F15, 0x9F16, 0x9F18, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B00 */ 0xFFFD, 0x9F21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9F2D, 0x9F2E, 0x9F30, 0x9F31, 0x9F32, -/* 3B10 */ 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C, 0x9F3F, -/* 3B18 */ 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F81, 0x9F82, 0x9F9C, 0x9F9D, -/* 3B20 */ 0x9F9E, 0x9FA1, 0x9FA2, 0x9FA3, 0x9FA4, 0x9FA5, 0xF92C, 0xF979, -/* 3B28 */ 0xF995, 0xF9E7, 0xF9F1, 0xFA0C, 0xFA0D, 0xFA0E, 0xFA0F, 0xFA11, -/* 3B30 */ 0xFA13, 0xFA14, 0xFA18, 0xFA1F, 0xFA20, 0xFA21, 0xFA23, 0xFA24, -/* 3B38 */ 0xFA27, 0xFA28, 0xFA29, -/* End of table Total Length = 0x468C * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp949.ut b/mozilla/lib/libi18n/unicode/utotbl/cp949.ut deleted file mode 100644 index cb9306e6a5f..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp949.ut +++ /dev/null @@ -1,10402 +0,0 @@ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 8150 - srcEnd = 8156 - destBegin = AC25 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 8169 - srcEnd = 8172 - destBegin = AC41 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 8174 - srcEnd = 8179 - destBegin = AC4E -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 8186 - srcEnd = 8198 - destBegin = AC5D -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 81AC - srcEnd = 81B2 - destBegin = AC95 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 81B4 - srcEnd = 81B9 - destBegin = ACA2 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 81BD - srcEnd = 81C3 - destBegin = ACB1 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 81D0 - srcEnd = 81D7 - destBegin = ACCD -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 81D9 - srcEnd = 81E0 - destBegin = ACD8 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 824B - srcEnd = 8252 - destBegin = AD21 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 8255 - srcEnd = 825A - destBegin = AD2E -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 8266 - srcEnd = 826C - destBegin = AD3D -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 826F - srcEnd = 8274 - destBegin = AD4A -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 8281 - srcEnd = 8288 - destBegin = AD59 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 828A - srcEnd = 8291 - destBegin = AD64 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 82A6 - srcEnd = 82B0 - destBegin = AD91 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 82B1 - srcEnd = 82B6 - destBegin = AD9E -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 82B7 - srcEnd = 82C8 - destBegin = ADA5 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 82C9 - srcEnd = 82D0 - destBegin = ADB8 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 82D6 - srcEnd = 82DC - destBegin = ADC9 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 82DE - srcEnd = 82E5 - destBegin = ADD4 -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 82EC - srcEnd = 82FE - destBegin = ADE5 -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 8345 - srcEnd = 834A - destBegin = AE02 -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 834D - srcEnd = 8352 - destBegin = AE0E -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 8353 - srcEnd = 835A - destBegin = AE15 -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = 8361 - srcEnd = 8373 - destBegin = AE1D -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = 839F - srcEnd = 83A5 - destBegin = AE71 -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = 83A7 - srcEnd = 83AC - destBegin = AE7E -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = 83AD - srcEnd = 83B2 - destBegin = AE86 -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = 83B3 - srcEnd = 83E1 - destBegin = AE8D -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = 83E6 - srcEnd = 83EC - destBegin = AEC5 -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = 83EE - srcEnd = 83F3 - destBegin = AED2 -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = 83F6 - srcEnd = 83FE - destBegin = AEDD -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = 8446 - srcEnd = 844B - destBegin = AEEE -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = 8452 - srcEnd = 845A - destBegin = AEFD -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = 8468 - srcEnd = 847A - destBegin = AF11 -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = 8481 - srcEnd = 8488 - destBegin = AF24 -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = 848D - srcEnd = 8493 - destBegin = AF35 -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = 849A - srcEnd = 849F - destBegin = AF4A -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = 84A0 - srcEnd = 84AA - destBegin = AF51 -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = 84AB - srcEnd = 84B0 - destBegin = AF5E -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = 84B1 - srcEnd = 84C3 - destBegin = AF66 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = 84C4 - srcEnd = 84C9 - destBegin = AF7A -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = 84D0 - srcEnd = 84D6 - destBegin = AF89 -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = 84DA - srcEnd = 84DF - destBegin = AF96 -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = 84E0 - srcEnd = 84FA - destBegin = AF9D -End of Item 002E - -Begin of Item 002F - Format 0 - srcBegin = 8542 - srcEnd = 8547 - destBegin = AFC1 -End of Item 002F - -Begin of Item 0030 - Format 0 - srcBegin = 854F - srcEnd = 8555 - destBegin = AFD5 -End of Item 0030 - -Begin of Item 0031 - Format 0 - srcBegin = 8561 - srcEnd = 8566 - destBegin = AFE2 -End of Item 0031 - -Begin of Item 0032 - Format 0 - srcBegin = 8567 - srcEnd = 856C - destBegin = AFEA -End of Item 0032 - -Begin of Item 0033 - Format 0 - srcBegin = 8572 - srcEnd = 8578 - destBegin = AFF9 -End of Item 0033 - -Begin of Item 0034 - Format 0 - srcBegin = 8581 - srcEnd = 8587 - destBegin = B005 -End of Item 0034 - -Begin of Item 0035 - Format 0 - srcBegin = 858E - srcEnd = 8594 - destBegin = B015 -End of Item 0035 - -Begin of Item 0036 - Format 0 - srcBegin = 8595 - srcEnd = 859E - destBegin = B01E -End of Item 0036 - -Begin of Item 0037 - Format 0 - srcBegin = 859F - srcEnd = 85B9 - destBegin = B029 -End of Item 0037 - -Begin of Item 0038 - Format 0 - srcBegin = 85C8 - srcEnd = 85E5 - destBegin = B05E -End of Item 0038 - -Begin of Item 0039 - Format 0 - srcBegin = 85EB - srcEnd = 85F1 - destBegin = B085 -End of Item 0039 - -Begin of Item 003A - Format 0 - srcBegin = 85F4 - srcEnd = 85F9 - destBegin = B092 -End of Item 003A - -Begin of Item 003B - Format 0 - srcBegin = 864C - srcEnd = 8652 - destBegin = B0BD -End of Item 003B - -Begin of Item 003C - Format 0 - srcBegin = 8654 - srcEnd = 8659 - destBegin = B0CA -End of Item 003C - -Begin of Item 003D - Format 0 - srcBegin = 8665 - srcEnd = 866B - destBegin = B0D9 -End of Item 003D - -Begin of Item 003E - Format 0 - srcBegin = 8670 - srcEnd = 867A - destBegin = B0E6 -End of Item 003E - -Begin of Item 003F - Format 0 - srcBegin = 8681 - srcEnd = 8697 - destBegin = B0F1 -End of Item 003F - -Begin of Item 0040 - Format 0 - srcBegin = 86AC - srcEnd = 86B2 - destBegin = B12D -End of Item 0040 - -Begin of Item 0041 - Format 0 - srcBegin = 86B4 - srcEnd = 86B9 - destBegin = B13A -End of Item 0041 - -Begin of Item 0042 - Format 0 - srcBegin = 86BF - srcEnd = 86C5 - destBegin = B149 -End of Item 0042 - -Begin of Item 0043 - Format 0 - srcBegin = 86D0 - srcEnd = 86E6 - destBegin = B161 -End of Item 0043 - -Begin of Item 0044 - Format 0 - srcBegin = 8741 - srcEnd = 874A - destBegin = B19E -End of Item 0044 - -Begin of Item 0045 - Format 0 - srcBegin = 874B - srcEnd = 875A - destBegin = B1A9 -End of Item 0045 - -Begin of Item 0046 - Format 0 - srcBegin = 8761 - srcEnd = 8773 - destBegin = B1B9 -End of Item 0046 - -Begin of Item 0047 - Format 0 - srcBegin = 8781 - srcEnd = 8786 - destBegin = B1D6 -End of Item 0047 - -Begin of Item 0048 - Format 0 - srcBegin = 8788 - srcEnd = 878F - destBegin = B1E0 -End of Item 0048 - -Begin of Item 0049 - Format 0 - srcBegin = 8795 - srcEnd = 879C - destBegin = B1F1 -End of Item 0049 - -Begin of Item 004A - Format 0 - srcBegin = 879F - srcEnd = 87A4 - destBegin = B1FE -End of Item 004A - -Begin of Item 004B - Format 0 - srcBegin = 87A9 - srcEnd = 87AF - destBegin = B20D -End of Item 004B - -Begin of Item 004C - Format 0 - srcBegin = 87B2 - srcEnd = 87B7 - destBegin = B21A -End of Item 004C - -Begin of Item 004D - Format 0 - srcBegin = 87B8 - srcEnd = 87CA - destBegin = B221 -End of Item 004D - -Begin of Item 004E - Format 0 - srcBegin = 87CB - srcEnd = 87D1 - destBegin = B235 -End of Item 004E - -Begin of Item 004F - Format 0 - srcBegin = 87D2 - srcEnd = 87EC - destBegin = B23D -End of Item 004F - -Begin of Item 0050 - Format 0 - srcBegin = 87F3 - srcEnd = 87F9 - destBegin = B261 -End of Item 0050 - -Begin of Item 0051 - Format 0 - srcBegin = 8846 - srcEnd = 884B - destBegin = B276 -End of Item 0051 - -Begin of Item 0052 - Format 0 - srcBegin = 884C - srcEnd = 8852 - destBegin = B27D -End of Item 0052 - -Begin of Item 0053 - Format 0 - srcBegin = 8881 - srcEnd = 8890 - destBegin = B2B8 -End of Item 0053 - -Begin of Item 0054 - Format 0 - srcBegin = 88B2 - srcEnd = 88B8 - destBegin = B309 -End of Item 0054 - -Begin of Item 0055 - Format 0 - srcBegin = 88BA - srcEnd = 88BF - destBegin = B316 -End of Item 0055 - -Begin of Item 0056 - Format 0 - srcBegin = 88C0 - srcEnd = 88F6 - destBegin = B31D -End of Item 0056 - -Begin of Item 0057 - Format 0 - srcBegin = 894C - srcEnd = 8952 - destBegin = B379 -End of Item 0057 - -Begin of Item 0058 - Format 0 - srcBegin = 8954 - srcEnd = 8959 - destBegin = B386 -End of Item 0058 - -Begin of Item 0059 - Format 0 - srcBegin = 8966 - srcEnd = 8970 - destBegin = B395 -End of Item 0059 - -Begin of Item 005A - Format 0 - srcBegin = 8971 - srcEnd = 8976 - destBegin = B3A2 -End of Item 005A - -Begin of Item 005B - Format 0 - srcBegin = 8981 - srcEnd = 8996 - destBegin = B3AE -End of Item 005B - -Begin of Item 005C - Format 0 - srcBegin = 89AC - srcEnd = 89BE - destBegin = B3E9 -End of Item 005C - -Begin of Item 005D - Format 0 - srcBegin = 89BF - srcEnd = 89D1 - destBegin = B3FD -End of Item 005D - -Begin of Item 005E - Format 0 - srcBegin = 89D2 - srcEnd = 89D8 - destBegin = B411 -End of Item 005E - -Begin of Item 005F - Format 0 - srcBegin = 89DF - srcEnd = 89E5 - destBegin = B421 -End of Item 005F - -Begin of Item 0060 - Format 0 - srcBegin = 89E7 - srcEnd = 89EE - destBegin = B42C -End of Item 0060 - -Begin of Item 0061 - Format 0 - srcBegin = 89EF - srcEnd = 89FE - destBegin = B435 -End of Item 0061 - -Begin of Item 0062 - Format 0 - srcBegin = 8A41 - srcEnd = 8A4B - destBegin = B445 -End of Item 0062 - -Begin of Item 0063 - Format 0 - srcBegin = 8A51 - srcEnd = 8A57 - destBegin = B459 -End of Item 0063 - -Begin of Item 0064 - Format 0 - srcBegin = 8A66 - srcEnd = 8A78 - destBegin = B46D -End of Item 0064 - -Begin of Item 0065 - Format 0 - srcBegin = 8A86 - srcEnd = 8A99 - destBegin = B489 -End of Item 0065 - -Begin of Item 0066 - Format 0 - srcBegin = 8A9A - srcEnd = 8A9F - destBegin = B49E -End of Item 0066 - -Begin of Item 0067 - Format 0 - srcBegin = 8AA6 - srcEnd = 8AAD - destBegin = B4AD -End of Item 0067 - -Begin of Item 0068 - Format 0 - srcBegin = 8AB0 - srcEnd = 8AB5 - destBegin = B4BA -End of Item 0068 - -Begin of Item 0069 - Format 0 - srcBegin = 8ABC - srcEnd = 8AC2 - destBegin = B4C9 -End of Item 0069 - -Begin of Item 006A - Format 0 - srcBegin = 8AC7 - srcEnd = 8ACC - destBegin = B4D6 -End of Item 006A - -Begin of Item 006B - Format 0 - srcBegin = 8AD9 - srcEnd = 8ADE - destBegin = B4F2 -End of Item 006B - -Begin of Item 006C - Format 0 - srcBegin = 8ADF - srcEnd = 8AF9 - destBegin = B4F9 -End of Item 006C - -Begin of Item 006D - Format 0 - srcBegin = 8B41 - srcEnd = 8B46 - destBegin = B51E -End of Item 006D - -Begin of Item 006E - Format 0 - srcBegin = 8B52 - srcEnd = 8B58 - destBegin = B539 -End of Item 006E - -Begin of Item 006F - Format 0 - srcBegin = 8B6A - srcEnd = 8B70 - destBegin = B555 -End of Item 006F - -Begin of Item 0070 - Format 0 - srcBegin = 8B72 - srcEnd = 8B7A - destBegin = B562 -End of Item 0070 - -Begin of Item 0071 - Format 0 - srcBegin = 8B81 - srcEnd = 8BB5 - destBegin = B56B -End of Item 0071 - -Begin of Item 0072 - Format 0 - srcBegin = 8BCB - srcEnd = 8BD1 - destBegin = B5C5 -End of Item 0072 - -Begin of Item 0073 - Format 0 - srcBegin = 8BD3 - srcEnd = 8BD8 - destBegin = B5D2 -End of Item 0073 - -Begin of Item 0074 - Format 0 - srcBegin = 8BD9 - srcEnd = 8BEB - destBegin = B5D9 -End of Item 0074 - -Begin of Item 0075 - Format 0 - srcBegin = 8BEC - srcEnd = 8BFE - destBegin = B5ED -End of Item 0075 - -Begin of Item 0076 - Format 0 - srcBegin = 8C41 - srcEnd = 8C50 - destBegin = B600 -End of Item 0076 - -Begin of Item 0077 - Format 0 - srcBegin = 8C61 - srcEnd = 8C67 - destBegin = B61E -End of Item 0077 - -Begin of Item 0078 - Format 0 - srcBegin = 8C68 - srcEnd = 8C6D - destBegin = B626 -End of Item 0078 - -Begin of Item 0079 - Format 0 - srcBegin = 8C6E - srcEnd = 8C74 - destBegin = B62D -End of Item 0079 - -Begin of Item 007A - Format 0 - srcBegin = 8C75 - srcEnd = 8C7A - destBegin = B635 -End of Item 007A - -Begin of Item 007B - Format 0 - srcBegin = 8C81 - srcEnd = 8C8D - destBegin = B63B -End of Item 007B - -Begin of Item 007C - Format 0 - srcBegin = 8C8E - srcEnd = 8CA8 - destBegin = B649 -End of Item 007C - -Begin of Item 007D - Format 0 - srcBegin = 8CAC - srcEnd = 8CDE - destBegin = B669 -End of Item 007D - -Begin of Item 007E - Format 0 - srcBegin = 8CE4 - srcEnd = 8CE9 - destBegin = B6A5 -End of Item 007E - -Begin of Item 007F - Format 0 - srcBegin = 8CEE - srcEnd = 8CFE - destBegin = B6B2 -End of Item 007F - -Begin of Item 0080 - Format 0 - srcBegin = 8D41 - srcEnd = 8D51 - destBegin = B6C3 -End of Item 0080 - -Begin of Item 0081 - Format 0 - srcBegin = 8D52 - srcEnd = 8D5A - destBegin = B6D5 -End of Item 0081 - -Begin of Item 0082 - Format 0 - srcBegin = 8D61 - srcEnd = 8D72 - destBegin = B6DE -End of Item 0082 - -Begin of Item 0083 - Format 0 - srcBegin = 8D89 - srcEnd = 8DAA - destBegin = B706 -End of Item 0083 - -Begin of Item 0084 - Format 0 - srcBegin = 8DAF - srcEnd = 8DB5 - destBegin = B731 -End of Item 0084 - -Begin of Item 0085 - Format 0 - srcBegin = 8DB7 - srcEnd = 8DBE - destBegin = B73C -End of Item 0085 - -Begin of Item 0086 - Format 0 - srcBegin = 8DC5 - srcEnd = 8DCB - destBegin = B74D -End of Item 0086 - -Begin of Item 0087 - Format 0 - srcBegin = 8DCC - srcEnd = 8DD5 - destBegin = B756 -End of Item 0087 - -Begin of Item 0088 - Format 0 - srcBegin = 8DDC - srcEnd = 8DE2 - destBegin = B769 -End of Item 0088 - -Begin of Item 0089 - Format 0 - srcBegin = 8DE5 - srcEnd = 8DEA - destBegin = B776 -End of Item 0089 - -Begin of Item 008A - Format 0 - srcBegin = 8DF0 - srcEnd = 8DF6 - destBegin = B785 -End of Item 008A - -Begin of Item 008B - Format 0 - srcBegin = 8E42 - srcEnd = 8E48 - destBegin = B7A1 -End of Item 008B - -Begin of Item 008C - Format 0 - srcBegin = 8E4A - srcEnd = 8E4F - destBegin = B7AE -End of Item 008C - -Begin of Item 008D - Format 0 - srcBegin = 8E52 - srcEnd = 8E5A - destBegin = B7B9 -End of Item 008D - -Begin of Item 008E - Format 0 - srcBegin = 8E67 - srcEnd = 8E7A - destBegin = B7CA -End of Item 008E - -Begin of Item 008F - Format 0 - srcBegin = 8E81 - srcEnd = 8E8E - destBegin = B7DE -End of Item 008F - -Begin of Item 0090 - Format 0 - srcBegin = 8E94 - srcEnd = 8E9A - destBegin = B7F5 -End of Item 0090 - -Begin of Item 0091 - Format 0 - srcBegin = 8EA6 - srcEnd = 8EAC - destBegin = B811 -End of Item 0091 - -Begin of Item 0092 - Format 0 - srcBegin = 8EAF - srcEnd = 8EB4 - destBegin = B81E -End of Item 0092 - -Begin of Item 0093 - Format 0 - srcBegin = 8EBA - srcEnd = 8EC0 - destBegin = B82D -End of Item 0093 - -Begin of Item 0094 - Format 0 - srcBegin = 8EC2 - srcEnd = 8EC7 - destBegin = B83A -End of Item 0094 - -Begin of Item 0095 - Format 0 - srcBegin = 8ECB - srcEnd = 8ED6 - destBegin = B845 -End of Item 0095 - -Begin of Item 0096 - Format 0 - srcBegin = 8ED8 - srcEnd = 8EDF - destBegin = B854 -End of Item 0096 - -Begin of Item 0097 - Format 0 - srcBegin = 8EE5 - srcEnd = 8EEB - destBegin = B865 -End of Item 0097 - -Begin of Item 0098 - Format 0 - srcBegin = 8EEE - srcEnd = 8EF3 - destBegin = B872 -End of Item 0098 - -Begin of Item 0099 - Format 0 - srcBegin = 8EF7 - srcEnd = 8EFE - destBegin = B87D -End of Item 0099 - -Begin of Item 009A - Format 0 - srcBegin = 8F41 - srcEnd = 8F48 - destBegin = B885 -End of Item 009A - -Begin of Item 009B - Format 0 - srcBegin = 8F49 - srcEnd = 8F5A - destBegin = B88E -End of Item 009B - -Begin of Item 009C - Format 0 - srcBegin = 8F61 - srcEnd = 8F68 - destBegin = B8A0 -End of Item 009C - -Begin of Item 009D - Format 0 - srcBegin = 8F69 - srcEnd = 8F6F - destBegin = B8A9 -End of Item 009D - -Begin of Item 009E - Format 0 - srcBegin = 8F85 - srcEnd = 8F8A - destBegin = B8C6 -End of Item 009E - -Begin of Item 009F - Format 0 - srcBegin = 8F91 - srcEnd = 8F98 - destBegin = B8D5 -End of Item 009F - -Begin of Item 00A0 - Format 0 - srcBegin = 8F9B - srcEnd = 8FA0 - destBegin = B8E2 -End of Item 00A0 - -Begin of Item 00A1 - Format 0 - srcBegin = 8FA6 - srcEnd = 8FAC - destBegin = B8F1 -End of Item 00A1 - -Begin of Item 00A2 - Format 0 - srcBegin = 8FAF - srcEnd = 8FB4 - destBegin = B8FE -End of Item 00A2 - -Begin of Item 00A3 - Format 0 - srcBegin = 8FB5 - srcEnd = 8FC7 - destBegin = B905 -End of Item 00A3 - -Begin of Item 00A4 - Format 0 - srcBegin = 8FC8 - srcEnd = 8FCE - destBegin = B919 -End of Item 00A4 - -Begin of Item 00A5 - Format 0 - srcBegin = 8FCF - srcEnd = 8FE9 - destBegin = B921 -End of Item 00A5 - -Begin of Item 00A6 - Format 0 - srcBegin = 8FEF - srcEnd = 8FF5 - destBegin = B945 -End of Item 00A6 - -Begin of Item 00A7 - Format 0 - srcBegin = 8FF9 - srcEnd = 8FFE - destBegin = B952 -End of Item 00A7 - -Begin of Item 00A8 - Format 0 - srcBegin = 9046 - srcEnd = 904C - destBegin = B961 -End of Item 00A8 - -Begin of Item 00A9 - Format 0 - srcBegin = 904F - srcEnd = 9054 - destBegin = B96E -End of Item 00A9 - -Begin of Item 00AA - Format 0 - srcBegin = 9061 - srcEnd = 9066 - destBegin = B97E -End of Item 00AA - -Begin of Item 00AB - Format 0 - srcBegin = 906B - srcEnd = 907A - destBegin = B98F -End of Item 00AB - -Begin of Item 00AC - Format 0 - srcBegin = 9081 - srcEnd = 908D - destBegin = B99F -End of Item 00AC - -Begin of Item 00AD - Format 0 - srcBegin = 9093 - srcEnd = 9099 - destBegin = B9B5 -End of Item 00AD - -Begin of Item 00AE - Format 0 - srcBegin = 909C - srcEnd = 90A1 - destBegin = B9C2 -End of Item 00AE - -Begin of Item 00AF - Format 0 - srcBegin = 90B4 - srcEnd = 90BA - destBegin = B9ED -End of Item 00AF - -Begin of Item 00B0 - Format 0 - srcBegin = 90C1 - srcEnd = 90C6 - destBegin = BA02 -End of Item 00B0 - -Begin of Item 00B1 - Format 0 - srcBegin = 90C7 - srcEnd = 90D2 - destBegin = BA09 -End of Item 00B1 - -Begin of Item 00B2 - Format 0 - srcBegin = 90D3 - srcEnd = 90F4 - destBegin = BA16 -End of Item 00B2 - -Begin of Item 00B3 - Format 0 - srcBegin = 914D - srcEnd = 9153 - destBegin = BA5D -End of Item 00B3 - -Begin of Item 00B4 - Format 0 - srcBegin = 9155 - srcEnd = 915A - destBegin = BA6A -End of Item 00B4 - -Begin of Item 00B5 - Format 0 - srcBegin = 9166 - srcEnd = 916F - destBegin = BA79 -End of Item 00B5 - -Begin of Item 00B6 - Format 0 - srcBegin = 9175 - srcEnd = 917A - destBegin = BA8D -End of Item 00B6 - -Begin of Item 00B7 - Format 0 - srcBegin = 9181 - srcEnd = 9195 - destBegin = BA93 -End of Item 00B7 - -Begin of Item 00B8 - Format 0 - srcBegin = 91A2 - srcEnd = 91A7 - destBegin = BABE -End of Item 00B8 - -Begin of Item 00B9 - Format 0 - srcBegin = 91AB - srcEnd = 91B9 - destBegin = BAC9 -End of Item 00B9 - -Begin of Item 00BA - Format 0 - srcBegin = 91BA - srcEnd = 91DB - destBegin = BADA -End of Item 00BA - -Begin of Item 00BB - Format 0 - srcBegin = 91E2 - srcEnd = 91E9 - destBegin = BB05 -End of Item 00BB - -Begin of Item 00BC - Format 0 - srcBegin = 91EC - srcEnd = 91F1 - destBegin = BB12 -End of Item 00BC - -Begin of Item 00BD - Format 0 - srcBegin = 91F8 - srcEnd = 91FE - destBegin = BB21 -End of Item 00BD - -Begin of Item 00BE - Format 0 - srcBegin = 9243 - srcEnd = 924A - destBegin = BB2C -End of Item 00BE - -Begin of Item 00BF - Format 0 - srcBegin = 9265 - srcEnd = 926C - destBegin = BB59 -End of Item 00BF - -Begin of Item 00C0 - Format 0 - srcBegin = 926E - srcEnd = 9275 - destBegin = BB64 -End of Item 00C0 - -Begin of Item 00C1 - Format 0 - srcBegin = 9281 - srcEnd = 9296 - destBegin = BB72 -End of Item 00C1 - -Begin of Item 00C2 - Format 0 - srcBegin = 929D - srcEnd = 92AF - destBegin = BB91 -End of Item 00C2 - -Begin of Item 00C3 - Format 0 - srcBegin = 92B6 - srcEnd = 92BC - destBegin = BBAD -End of Item 00C3 - -Begin of Item 00C4 - Format 0 - srcBegin = 92BF - srcEnd = 92C6 - destBegin = BBB8 -End of Item 00C4 - -Begin of Item 00C5 - Format 0 - srcBegin = 92CD - srcEnd = 92D3 - destBegin = BBC9 -End of Item 00C5 - -Begin of Item 00C6 - Format 0 - srcBegin = 92D6 - srcEnd = 92F9 - destBegin = BBD4 -End of Item 00C6 - -Begin of Item 00C7 - Format 0 - srcBegin = 9363 - srcEnd = 9369 - destBegin = BC39 -End of Item 00C7 - -Begin of Item 00C8 - Format 0 - srcBegin = 9372 - srcEnd = 937A - destBegin = BC51 -End of Item 00C8 - -Begin of Item 00C9 - Format 0 - srcBegin = 9384 - srcEnd = 93A9 - destBegin = BC5E -End of Item 00C9 - -Begin of Item 00CA - Format 0 - srcBegin = 93BF - srcEnd = 93C5 - destBegin = BCA9 -End of Item 00CA - -Begin of Item 00CB - Format 0 - srcBegin = 93C7 - srcEnd = 93CC - destBegin = BCB6 -End of Item 00CB - -Begin of Item 00CC - Format 0 - srcBegin = 93D2 - srcEnd = 93D9 - destBegin = BCC5 -End of Item 00CC - -Begin of Item 00CD - Format 0 - srcBegin = 93E3 - srcEnd = 93F9 - destBegin = BCDD -End of Item 00CD - -Begin of Item 00CE - Format 0 - srcBegin = 9441 - srcEnd = 9446 - destBegin = BCFE -End of Item 00CE - -Begin of Item 00CF - Format 0 - srcBegin = 9449 - srcEnd = 944E - destBegin = BD0A -End of Item 00CF - -Begin of Item 00D0 - Format 0 - srcBegin = 9452 - srcEnd = 945A - destBegin = BD15 -End of Item 00D0 - -Begin of Item 00D1 - Format 0 - srcBegin = 9461 - srcEnd = 9466 - destBegin = BD1E -End of Item 00D1 - -Begin of Item 00D2 - Format 0 - srcBegin = 9467 - srcEnd = 946D - destBegin = BD25 -End of Item 00D2 - -Begin of Item 00D3 - Format 0 - srcBegin = 946E - srcEnd = 947A - destBegin = BD2D -End of Item 00D3 - -Begin of Item 00D4 - Format 0 - srcBegin = 9481 - srcEnd = 9486 - destBegin = BD3A -End of Item 00D4 - -Begin of Item 00D5 - Format 0 - srcBegin = 9487 - srcEnd = 948D - destBegin = BD41 -End of Item 00D5 - -Begin of Item 00D6 - Format 0 - srcBegin = 9493 - srcEnd = 9499 - destBegin = BD51 -End of Item 00D6 - -Begin of Item 00D7 - Format 0 - srcBegin = 949A - srcEnd = 94A3 - destBegin = BD5A -End of Item 00D7 - -Begin of Item 00D8 - Format 0 - srcBegin = 94A7 - srcEnd = 94BD - destBegin = BD69 -End of Item 00D8 - -Begin of Item 00D9 - Format 0 - srcBegin = 94CD - srcEnd = 94D3 - destBegin = BD9D -End of Item 00D9 - -Begin of Item 00DA - Format 0 - srcBegin = 94D4 - srcEnd = 94DE - destBegin = BDA5 -End of Item 00DA - -Begin of Item 00DB - Format 0 - srcBegin = 94DF - srcEnd = 94E5 - destBegin = BDB1 -End of Item 00DB - -Begin of Item 00DC - Format 0 - srcBegin = 94E6 - srcEnd = 94FE - destBegin = BDB9 -End of Item 00DC - -Begin of Item 00DD - Format 0 - srcBegin = 9548 - srcEnd = 9553 - destBegin = BDDD -End of Item 00DD - -Begin of Item 00DE - Format 0 - srcBegin = 9554 - srcEnd = 9559 - destBegin = BDEA -End of Item 00DE - -Begin of Item 00DF - Format 0 - srcBegin = 9566 - srcEnd = 956C - destBegin = BDF9 -End of Item 00DF - -Begin of Item 00E0 - Format 0 - srcBegin = 9570 - srcEnd = 9575 - destBegin = BE06 -End of Item 00E0 - -Begin of Item 00E1 - Format 0 - srcBegin = 9581 - srcEnd = 9587 - destBegin = BE15 -End of Item 00E1 - -Begin of Item 00E2 - Format 0 - srcBegin = 9589 - srcEnd = 95AC - destBegin = BE20 -End of Item 00E2 - -Begin of Item 00E3 - Format 0 - srcBegin = 95D4 - srcEnd = 95DA - destBegin = BE85 -End of Item 00E3 - -Begin of Item 00E4 - Format 0 - srcBegin = 95DC - srcEnd = 95E1 - destBegin = BE92 -End of Item 00E4 - -Begin of Item 00E5 - Format 0 - srcBegin = 95E2 - srcEnd = 95EF - destBegin = BE9A -End of Item 00E5 - -Begin of Item 00E6 - Format 0 - srcBegin = 95F0 - srcEnd = 95FE - destBegin = BEA9 -End of Item 00E6 - -Begin of Item 00E7 - Format 0 - srcBegin = 9641 - srcEnd = 9658 - destBegin = BEB8 -End of Item 00E7 - -Begin of Item 00E8 - Format 0 - srcBegin = 9663 - srcEnd = 9669 - destBegin = BED9 -End of Item 00E8 - -Begin of Item 00E9 - Format 0 - srcBegin = 966C - srcEnd = 9671 - destBegin = BEE6 -End of Item 00E9 - -Begin of Item 00EA - Format 0 - srcBegin = 9672 - srcEnd = 967A - destBegin = BEED -End of Item 00EA - -Begin of Item 00EB - Format 0 - srcBegin = 9681 - srcEnd = 968B - destBegin = BEF6 -End of Item 00EB - -Begin of Item 00EC - Format 0 - srcBegin = 968C - srcEnd = 9691 - destBegin = BF02 -End of Item 00EC - -Begin of Item 00ED - Format 0 - srcBegin = 9692 - srcEnd = 969F - destBegin = BF0A -End of Item 00ED - -Begin of Item 00EE - Format 0 - srcBegin = 96A1 - srcEnd = 96C2 - destBegin = BF1E -End of Item 00EE - -Begin of Item 00EF - Format 0 - srcBegin = 96C8 - srcEnd = 96CE - destBegin = BF49 -End of Item 00EF - -Begin of Item 00F0 - Format 0 - srcBegin = 96D2 - srcEnd = 96FE - destBegin = BF56 -End of Item 00F0 - -Begin of Item 00F1 - Format 0 - srcBegin = 9741 - srcEnd = 9751 - destBegin = BF83 -End of Item 00F1 - -Begin of Item 00F2 - Format 0 - srcBegin = 9752 - srcEnd = 975A - destBegin = BF95 -End of Item 00F2 - -Begin of Item 00F3 - Format 0 - srcBegin = 9761 - srcEnd = 9772 - destBegin = BF9E -End of Item 00F3 - -Begin of Item 00F4 - Format 0 - srcBegin = 9773 - srcEnd = 977A - destBegin = BFB1 -End of Item 00F4 - -Begin of Item 00F5 - Format 0 - srcBegin = 9781 - srcEnd = 978C - destBegin = BFB9 -End of Item 00F5 - -Begin of Item 00F6 - Format 0 - srcBegin = 978D - srcEnd = 9792 - destBegin = BFC6 -End of Item 00F6 - -Begin of Item 00F7 - Format 0 - srcBegin = 9798 - srcEnd = 979E - destBegin = BFD5 -End of Item 00F7 - -Begin of Item 00F8 - Format 0 - srcBegin = 97A2 - srcEnd = 97FB - destBegin = BFE2 -End of Item 00F8 - -Begin of Item 00F9 - Format 0 - srcBegin = 9841 - srcEnd = 9851 - destBegin = C040 -End of Item 00F9 - -Begin of Item 00FA - Format 0 - srcBegin = 9852 - srcEnd = 9857 - destBegin = C052 -End of Item 00FA - -Begin of Item 00FB - Format 0 - srcBegin = 9864 - srcEnd = 986A - destBegin = C061 -End of Item 00FB - -Begin of Item 00FC - Format 0 - srcBegin = 986B - srcEnd = 987A - destBegin = C06A -End of Item 00FC - -Begin of Item 00FD - Format 0 - srcBegin = 9881 - srcEnd = 9896 - destBegin = C07A -End of Item 00FD - -Begin of Item 00FE - Format 0 - srcBegin = 989C - srcEnd = 98A2 - destBegin = C099 -End of Item 00FE - -Begin of Item 00FF - Format 0 - srcBegin = 98A5 - srcEnd = 98AA - destBegin = C0A6 -End of Item 00FF - -Begin of Item 0100 - Format 0 - srcBegin = 98BE - srcEnd = 98C4 - destBegin = C0D1 -End of Item 0100 - -Begin of Item 0101 - Format 0 - srcBegin = 98C6 - srcEnd = 98CB - destBegin = C0DE -End of Item 0101 - -Begin of Item 0102 - Format 0 - srcBegin = 98D1 - srcEnd = 98D7 - destBegin = C0ED -End of Item 0102 - -Begin of Item 0103 - Format 0 - srcBegin = 98DA - srcEnd = 98DF - destBegin = C0FA -End of Item 0103 - -Begin of Item 0104 - Format 0 - srcBegin = 98E6 - srcEnd = 98EC - destBegin = C109 -End of Item 0104 - -Begin of Item 0105 - Format 0 - srcBegin = 98F1 - srcEnd = 98F6 - destBegin = C116 -End of Item 0105 - -Begin of Item 0106 - Format 0 - srcBegin = 994B - srcEnd = 9951 - destBegin = C141 -End of Item 0106 - -Begin of Item 0107 - Format 0 - srcBegin = 9953 - srcEnd = 9958 - destBegin = C14E -End of Item 0107 - -Begin of Item 0108 - Format 0 - srcBegin = 9964 - srcEnd = 996A - destBegin = C15D -End of Item 0108 - -Begin of Item 0109 - Format 0 - srcBegin = 996C - srcEnd = 9971 - destBegin = C16A -End of Item 0109 - -Begin of Item 010A - Format 0 - srcBegin = 9981 - srcEnd = 9989 - destBegin = C17C -End of Item 010A - -Begin of Item 010B - Format 0 - srcBegin = 998A - srcEnd = 998F - destBegin = C186 -End of Item 010B - -Begin of Item 010C - Format 0 - srcBegin = 99A6 - srcEnd = 99B1 - destBegin = C1B1 -End of Item 010C - -Begin of Item 010D - Format 0 - srcBegin = 99B2 - srcEnd = 99B7 - destBegin = C1BE -End of Item 010D - -Begin of Item 010E - Format 0 - srcBegin = 99BE - srcEnd = 99C4 - destBegin = C1CD -End of Item 010E - -Begin of Item 010F - Format 0 - srcBegin = 99C7 - srcEnd = 99CD - destBegin = C1D9 -End of Item 010F - -Begin of Item 0110 - Format 0 - srcBegin = 99D4 - srcEnd = 99DA - destBegin = C1E9 -End of Item 0110 - -Begin of Item 0111 - Format 0 - srcBegin = 99DC - srcEnd = 99E3 - destBegin = C1F4 -End of Item 0111 - -Begin of Item 0112 - Format 0 - srcBegin = 99E9 - srcEnd = 99EF - destBegin = C205 -End of Item 0112 - -Begin of Item 0113 - Format 0 - srcBegin = 99F2 - srcEnd = 99F7 - destBegin = C212 -End of Item 0113 - -Begin of Item 0114 - Format 0 - srcBegin = 9A4A - srcEnd = 9A5A - destBegin = C235 -End of Item 0114 - -Begin of Item 0115 - Format 0 - srcBegin = 9A63 - srcEnd = 9A69 - destBegin = C249 -End of Item 0115 - -Begin of Item 0116 - Format 0 - srcBegin = 9A6F - srcEnd = 9A75 - destBegin = C259 -End of Item 0116 - -Begin of Item 0117 - Format 0 - srcBegin = 9A8B - srcEnd = 9A91 - destBegin = C275 -End of Item 0117 - -Begin of Item 0118 - Format 0 - srcBegin = 9A94 - srcEnd = 9A99 - destBegin = C282 -End of Item 0118 - -Begin of Item 0119 - Format 0 - srcBegin = 9A9A - srcEnd = 9A9F - destBegin = C28A -End of Item 0119 - -Begin of Item 011A - Format 0 - srcBegin = 9AA0 - srcEnd = 9AA6 - destBegin = C291 -End of Item 011A - -Begin of Item 011B - Format 0 - srcBegin = 9AAA - srcEnd = 9AAF - destBegin = C29E -End of Item 011B - -Begin of Item 011C - Format 0 - srcBegin = 9AB5 - srcEnd = 9ABA - destBegin = C2AE -End of Item 011C - -Begin of Item 011D - Format 0 - srcBegin = 9ABD - srcEnd = 9ADE - destBegin = C2BA -End of Item 011D - -Begin of Item 011E - Format 0 - srcBegin = 9AE3 - srcEnd = 9AE8 - destBegin = C2E5 -End of Item 011E - -Begin of Item 011F - Format 0 - srcBegin = 9AF4 - srcEnd = 9AFA - destBegin = C301 -End of Item 011F - -Begin of Item 0120 - Format 0 - srcBegin = 9B49 - srcEnd = 9B4F - destBegin = C31D -End of Item 0120 - -Begin of Item 0121 - Format 0 - srcBegin = 9B52 - srcEnd = 9B5A - destBegin = C32A -End of Item 0121 - -Begin of Item 0122 - Format 0 - srcBegin = 9B61 - srcEnd = 9B72 - destBegin = C333 -End of Item 0122 - -Begin of Item 0123 - Format 0 - srcBegin = 9B73 - srcEnd = 9B7A - destBegin = C346 -End of Item 0123 - -Begin of Item 0124 - Format 0 - srcBegin = 9B81 - srcEnd = 9B9A - destBegin = C34E -End of Item 0124 - -Begin of Item 0125 - Format 0 - srcBegin = 9BA8 - srcEnd = 9BAD - destBegin = C37E -End of Item 0125 - -Begin of Item 0126 - Format 0 - srcBegin = 9BB4 - srcEnd = 9BE6 - destBegin = C38D -End of Item 0126 - -Begin of Item 0127 - Format 0 - srcBegin = 9BE7 - srcEnd = 9BFD - destBegin = C3C1 -End of Item 0127 - -Begin of Item 0128 - Format 0 - srcBegin = 9C4D - srcEnd = 9C52 - destBegin = C3EE -End of Item 0128 - -Begin of Item 0129 - Format 0 - srcBegin = 9C55 - srcEnd = 9C5A - destBegin = C3F9 -End of Item 0129 - -Begin of Item 012A - Format 0 - srcBegin = 9C61 - srcEnd = 9C69 - destBegin = C3FF -End of Item 012A - -Begin of Item 012B - Format 0 - srcBegin = 9C6A - srcEnd = 9C70 - destBegin = C409 -End of Item 012B - -Begin of Item 012C - Format 0 - srcBegin = 9C71 - srcEnd = 9C7A - destBegin = C411 -End of Item 012C - -Begin of Item 012D - Format 0 - srcBegin = 9C81 - srcEnd = 9C89 - destBegin = C41B -End of Item 012D - -Begin of Item 012E - Format 0 - srcBegin = 9C8A - srcEnd = 9C90 - destBegin = C425 -End of Item 012E - -Begin of Item 012F - Format 0 - srcBegin = 9C97 - srcEnd = 9C9D - destBegin = C435 -End of Item 012F - -Begin of Item 0130 - Format 0 - srcBegin = 9C9E - srcEnd = 9CA7 - destBegin = C43E -End of Item 0130 - -Begin of Item 0131 - Format 0 - srcBegin = 9CA8 - srcEnd = 9CC2 - destBegin = C449 -End of Item 0131 - -Begin of Item 0132 - Format 0 - srcBegin = 9CC8 - srcEnd = 9CCE - destBegin = C46D -End of Item 0132 - -Begin of Item 0133 - Format 0 - srcBegin = 9CD2 - srcEnd = 9CD7 - destBegin = C47A -End of Item 0133 - -Begin of Item 0134 - Format 0 - srcBegin = 9CD8 - srcEnd = 9CEA - destBegin = C481 -End of Item 0134 - -Begin of Item 0135 - Format 0 - srcBegin = 9CEB - srcEnd = 9CF1 - destBegin = C495 -End of Item 0135 - -Begin of Item 0136 - Format 0 - srcBegin = 9CF2 - srcEnd = 9CFE - destBegin = C49D -End of Item 0136 - -Begin of Item 0137 - Format 0 - srcBegin = 9D41 - srcEnd = 9D4E - destBegin = C4AA -End of Item 0137 - -Begin of Item 0138 - Format 0 - srcBegin = 9D52 - srcEnd = 9D5A - destBegin = C4BD -End of Item 0138 - -Begin of Item 0139 - Format 0 - srcBegin = 9D61 - srcEnd = 9D7A - destBegin = C4C6 -End of Item 0139 - -Begin of Item 013A - Format 0 - srcBegin = 9D81 - srcEnd = 9D89 - destBegin = C4E0 -End of Item 013A - -Begin of Item 013B - Format 0 - srcBegin = 9D8A - srcEnd = 9D8F - destBegin = C4EA -End of Item 013B - -Begin of Item 013C - Format 0 - srcBegin = 9D9A - srcEnd = 9DA3 - destBegin = C502 -End of Item 013C - -Begin of Item 013D - Format 0 - srcBegin = 9DAA - srcEnd = 9DB0 - destBegin = C515 -End of Item 013D - -Begin of Item 013E - Format 0 - srcBegin = 9DB1 - srcEnd = 9DBB - destBegin = C51D -End of Item 013E - -Begin of Item 013F - Format 0 - srcBegin = 9DC1 - srcEnd = 9DC7 - destBegin = C531 -End of Item 013F - -Begin of Item 0140 - Format 0 - srcBegin = 9DCA - srcEnd = 9DCF - destBegin = C53E -End of Item 0140 - -Begin of Item 0141 - Format 0 - srcBegin = 9DE1 - srcEnd = 9DE7 - destBegin = C569 -End of Item 0141 - -Begin of Item 0142 - Format 0 - srcBegin = 9DE9 - srcEnd = 9DEE - destBegin = C576 -End of Item 0142 - -Begin of Item 0143 - Format 0 - srcBegin = 9E48 - srcEnd = 9E4F - destBegin = C5A1 -End of Item 0143 - -Begin of Item 0144 - Format 0 - srcBegin = 9E50 - srcEnd = 9E59 - destBegin = C5AA -End of Item 0144 - -Begin of Item 0145 - Format 0 - srcBegin = 9E70 - srcEnd = 9E76 - destBegin = C5D9 -End of Item 0145 - -Begin of Item 0146 - Format 0 - srcBegin = 9E97 - srcEnd = 9E9D - destBegin = C611 -End of Item 0146 - -Begin of Item 0147 - Format 0 - srcBegin = 9E9F - srcEnd = 9EA5 - destBegin = C61D -End of Item 0147 - -Begin of Item 0148 - Format 0 - srcBegin = 9EBA - srcEnd = 9EC0 - destBegin = C649 -End of Item 0148 - -Begin of Item 0149 - Format 0 - srcBegin = 9EC2 - srcEnd = 9EC7 - destBegin = C656 -End of Item 0149 - -Begin of Item 014A - Format 0 - srcBegin = 9ECA - srcEnd = 9ED4 - destBegin = C661 -End of Item 014A - -Begin of Item 014B - Format 0 - srcBegin = 9ED8 - srcEnd = 9EDD - destBegin = C672 -End of Item 014B - -Begin of Item 014C - Format 0 - srcBegin = 9EE3 - srcEnd = 9EE9 - destBegin = C681 -End of Item 014C - -Begin of Item 014D - Format 0 - srcBegin = 9EEC - srcEnd = 9EF1 - destBegin = C68E -End of Item 014D - -Begin of Item 014E - Format 0 - srcBegin = 9EF7 - srcEnd = 9EFD - destBegin = C69D -End of Item 014E - -Begin of Item 014F - Format 0 - srcBegin = 9F42 - srcEnd = 9F47 - destBegin = C6AA -End of Item 014F - -Begin of Item 0150 - Format 0 - srcBegin = 9F54 - srcEnd = 9F59 - destBegin = C6C6 -End of Item 0150 - -Begin of Item 0151 - Format 0 - srcBegin = 9F65 - srcEnd = 9F6B - destBegin = C6D5 -End of Item 0151 - -Begin of Item 0152 - Format 0 - srcBegin = 9F6E - srcEnd = 9F73 - destBegin = C6E2 -End of Item 0152 - -Begin of Item 0153 - Format 0 - srcBegin = 9F89 - srcEnd = 9F8E - destBegin = C6FE -End of Item 0153 - -Begin of Item 0154 - Format 0 - srcBegin = 9F94 - srcEnd = 9F9A - destBegin = C70D -End of Item 0154 - -Begin of Item 0155 - Format 0 - srcBegin = 9F9D - srcEnd = 9FA2 - destBegin = C71A -End of Item 0155 - -Begin of Item 0156 - Format 0 - srcBegin = 9FA8 - srcEnd = 9FAE - destBegin = C729 -End of Item 0156 - -Begin of Item 0157 - Format 0 - srcBegin = 9FC9 - srcEnd = 9FCF - destBegin = C761 -End of Item 0157 - -Begin of Item 0158 - Format 0 - srcBegin = 9FD2 - srcEnd = 9FD9 - destBegin = C76C -End of Item 0158 - -Begin of Item 0159 - Format 0 - srcBegin = A046 - srcEnd = A04B - destBegin = C7C2 -End of Item 0159 - -Begin of Item 015A - Format 0 - srcBegin = A050 - srcEnd = A056 - destBegin = C7D1 -End of Item 015A - -Begin of Item 015B - Format 0 - srcBegin = A061 - srcEnd = A066 - destBegin = C7DE -End of Item 015B - -Begin of Item 015C - Format 0 - srcBegin = A06D - srcEnd = A07A - destBegin = C7ED -End of Item 015C - -Begin of Item 015D - Format 0 - srcBegin = A09D - srcEnd = A0A3 - destBegin = C825 -End of Item 015D - -Begin of Item 015E - Format 0 - srcBegin = A0A6 - srcEnd = A0AB - destBegin = C832 -End of Item 015E - -Begin of Item 015F - Format 0 - srcBegin = A0B2 - srcEnd = A0B8 - destBegin = C841 -End of Item 015F - -Begin of Item 0160 - Format 0 - srcBegin = A0BB - srcEnd = A0C0 - destBegin = C84E -End of Item 0160 - -Begin of Item 0161 - Format 0 - srcBegin = A0C1 - srcEnd = A0DB - destBegin = C855 -End of Item 0161 - -Begin of Item 0162 - Format 0 - srcBegin = A0EC - srcEnd = A0F1 - destBegin = C88E -End of Item 0162 - -Begin of Item 0163 - Format 0 - srcBegin = A0F2 - srcEnd = A0F9 - destBegin = C895 -End of Item 0163 - -Begin of Item 0164 - Format 0 - srcBegin = A144 - srcEnd = A156 - destBegin = C8A9 -End of Item 0164 - -Begin of Item 0165 - Format 0 - srcBegin = A169 - srcEnd = A16F - destBegin = C8CD -End of Item 0165 - -Begin of Item 0166 - Format 0 - srcBegin = A172 - srcEnd = A177 - destBegin = C8DA -End of Item 0166 - -Begin of Item 0167 - Format 0 - srcBegin = A181 - srcEnd = A18F - destBegin = C8E6 -End of Item 0167 - -Begin of Item 0168 - Format 0 - srcBegin = A190 - srcEnd = A195 - destBegin = C8F6 -End of Item 0168 - -Begin of Item 0169 - Format 0 - srcBegin = A1B4 - srcEnd = A1BD - destBegin = 3008 -End of Item 0169 - -Begin of Item 016A - Format 0 - srcBegin = A242 - srcEnd = A247 - destBegin = C912 -End of Item 016A - -Begin of Item 016B - Format 0 - srcBegin = A248 - srcEnd = A25A - destBegin = C919 -End of Item 016B - -Begin of Item 016C - Format 0 - srcBegin = A261 - srcEnd = A267 - destBegin = C92D -End of Item 016C - -Begin of Item 016D - Format 0 - srcBegin = A268 - srcEnd = A27A - destBegin = C935 -End of Item 016D - -Begin of Item 016E - Format 0 - srcBegin = A281 - srcEnd = A288 - destBegin = C948 -End of Item 016E - -Begin of Item 016F - Format 0 - srcBegin = A28E - srcEnd = A294 - destBegin = C959 -End of Item 016F - -Begin of Item 0170 - Format 0 - srcBegin = A296 - srcEnd = A29D - destBegin = C964 -End of Item 0170 - -Begin of Item 0171 - Format 0 - srcBegin = A344 - srcEnd = A34A - destBegin = C975 -End of Item 0171 - -Begin of Item 0172 - Format 0 - srcBegin = A34B - srcEnd = A355 - destBegin = C97D -End of Item 0172 - -Begin of Item 0173 - Format 0 - srcBegin = A361 - srcEnd = A367 - destBegin = C991 -End of Item 0173 - -Begin of Item 0174 - Format 0 - srcBegin = A36A - srcEnd = A37A - destBegin = C99E -End of Item 0174 - -Begin of Item 0175 - Format 0 - srcBegin = A381 - srcEnd = A391 - destBegin = C9AF -End of Item 0175 - -Begin of Item 0176 - Format 0 - srcBegin = A3A1 - srcEnd = A3DB - destBegin = FF01 -End of Item 0176 - -Begin of Item 0177 - Format 0 - srcBegin = A3DD - srcEnd = A3FD - destBegin = FF3D -End of Item 0177 - -Begin of Item 0178 - Format 0 - srcBegin = A44C - srcEnd = A451 - destBegin = C9F2 -End of Item 0178 - -Begin of Item 0179 - Format 0 - srcBegin = A465 - srcEnd = A46A - destBegin = CA0E -End of Item 0179 - -Begin of Item 017A - Format 0 - srcBegin = A46E - srcEnd = A47A - destBegin = CA19 -End of Item 017A - -Begin of Item 017B - Format 0 - srcBegin = A484 - srcEnd = A4A0 - destBegin = CA2A -End of Item 017B - -Begin of Item 017C - Format 0 - srcBegin = A4A1 - srcEnd = A4FE - destBegin = 3131 -End of Item 017C - -Begin of Item 017D - Format 0 - srcBegin = A54B - srcEnd = A551 - destBegin = CA55 -End of Item 017D - -Begin of Item 017E - Format 0 - srcBegin = A553 - srcEnd = A558 - destBegin = CA62 -End of Item 017E - -Begin of Item 017F - Format 0 - srcBegin = A561 - srcEnd = A572 - destBegin = CA6B -End of Item 017F - -Begin of Item 0180 - Format 0 - srcBegin = A573 - srcEnd = A578 - destBegin = CA7E -End of Item 0180 - -Begin of Item 0181 - Format 0 - srcBegin = A581 - srcEnd = A591 - destBegin = CA87 -End of Item 0181 - -Begin of Item 0182 - Format 0 - srcBegin = A592 - srcEnd = A5A0 - destBegin = CA99 -End of Item 0182 - -Begin of Item 0183 - Format 0 - srcBegin = A5A1 - srcEnd = A5AA - destBegin = 2170 -End of Item 0183 - -Begin of Item 0184 - Format 0 - srcBegin = A5B0 - srcEnd = A5B9 - destBegin = 2160 -End of Item 0184 - -Begin of Item 0185 - Format 0 - srcBegin = A5C1 - srcEnd = A5D1 - destBegin = 0391 -End of Item 0185 - -Begin of Item 0186 - Format 0 - srcBegin = A5D2 - srcEnd = A5D8 - destBegin = 03A3 -End of Item 0186 - -Begin of Item 0187 - Format 0 - srcBegin = A5E1 - srcEnd = A5F1 - destBegin = 03B1 -End of Item 0187 - -Begin of Item 0188 - Format 0 - srcBegin = A5F2 - srcEnd = A5F8 - destBegin = 03C3 -End of Item 0188 - -Begin of Item 0189 - Format 0 - srcBegin = A641 - srcEnd = A654 - destBegin = CAA8 -End of Item 0189 - -Begin of Item 018A - Format 0 - srcBegin = A661 - srcEnd = A666 - destBegin = CAC6 -End of Item 018A - -Begin of Item 018B - Format 0 - srcBegin = A66E - srcEnd = A673 - destBegin = CADA -End of Item 018B - -Begin of Item 018C - Format 0 - srcBegin = A674 - srcEnd = A67A - destBegin = CAE1 -End of Item 018C - -Begin of Item 018D - Format 0 - srcBegin = A685 - srcEnd = A68B - destBegin = CAED -End of Item 018D - -Begin of Item 018E - Format 0 - srcBegin = A68C - srcEnd = A69E - destBegin = CAF5 -End of Item 018E - -Begin of Item 018F - Format 0 - srcBegin = A6DD - srcEnd = A6E4 - destBegin = 2543 -End of Item 018F - -Begin of Item 0190 - Format 0 - srcBegin = A74C - srcEnd = A752 - destBegin = CB19 -End of Item 0190 - -Begin of Item 0191 - Format 0 - srcBegin = A753 - srcEnd = A75A - destBegin = CB22 -End of Item 0191 - -Begin of Item 0192 - Format 0 - srcBegin = A761 - srcEnd = A777 - destBegin = CB2A -End of Item 0192 - -Begin of Item 0193 - Format 0 - srcBegin = A789 - srcEnd = A78F - destBegin = CB51 -End of Item 0193 - -Begin of Item 0194 - Format 0 - srcBegin = A793 - srcEnd = A798 - destBegin = CB5E -End of Item 0194 - -Begin of Item 0195 - Format 0 - srcBegin = A799 - srcEnd = A7A0 - destBegin = CB65 -End of Item 0195 - -Begin of Item 0196 - Format 0 - srcBegin = A7AB - srcEnd = A7B4 - destBegin = 3399 -End of Item 0196 - -Begin of Item 0197 - Format 0 - srcBegin = A7BF - srcEnd = A7C8 - destBegin = 33B0 -End of Item 0197 - -Begin of Item 0198 - Format 0 - srcBegin = A7CE - srcEnd = A7D3 - destBegin = 33BA -End of Item 0198 - -Begin of Item 0199 - Format 0 - srcBegin = A841 - srcEnd = A84B - destBegin = CB6D -End of Item 0199 - -Begin of Item 019A - Format 0 - srcBegin = A84C - srcEnd = A85A - destBegin = CB7A -End of Item 019A - -Begin of Item 019B - Format 0 - srcBegin = A861 - srcEnd = A873 - destBegin = CB89 -End of Item 019B - -Begin of Item 019C - Format 0 - srcBegin = A874 - srcEnd = A87A - destBegin = CB9D -End of Item 019C - -Begin of Item 019D - Format 0 - srcBegin = A881 - srcEnd = A894 - destBegin = CBA4 -End of Item 019D - -Begin of Item 019E - Format 0 - srcBegin = A895 - srcEnd = A8A0 - destBegin = CBB9 -End of Item 019E - -Begin of Item 019F - Format 0 - srcBegin = A8B1 - srcEnd = A8CC - destBegin = 3260 -End of Item 019F - -Begin of Item 01A0 - Format 0 - srcBegin = A8CD - srcEnd = A8E6 - destBegin = 24D0 -End of Item 01A0 - -Begin of Item 01A1 - Format 0 - srcBegin = A8E7 - srcEnd = A8F5 - destBegin = 2460 -End of Item 01A1 - -Begin of Item 01A2 - Format 0 - srcBegin = A941 - srcEnd = A94F - destBegin = CBC5 -End of Item 01A2 - -Begin of Item 01A3 - Format 0 - srcBegin = A950 - srcEnd = A95A - destBegin = CBD5 -End of Item 01A3 - -Begin of Item 01A4 - Format 0 - srcBegin = A968 - srcEnd = A97A - destBegin = CBEA -End of Item 01A4 - -Begin of Item 01A5 - Format 0 - srcBegin = A981 - srcEnd = A98F - destBegin = CBFD -End of Item 01A5 - -Begin of Item 01A6 - Format 0 - srcBegin = A995 - srcEnd = A99B - destBegin = CC15 -End of Item 01A6 - -Begin of Item 01A7 - Format 0 - srcBegin = A9B1 - srcEnd = A9CC - destBegin = 3200 -End of Item 01A7 - -Begin of Item 01A8 - Format 0 - srcBegin = A9CD - srcEnd = A9E6 - destBegin = 249C -End of Item 01A8 - -Begin of Item 01A9 - Format 0 - srcBegin = A9E7 - srcEnd = A9F5 - destBegin = 2474 -End of Item 01A9 - -Begin of Item 01AA - Format 0 - srcBegin = AA47 - srcEnd = AA4D - destBegin = CC31 -End of Item 01AA - -Begin of Item 01AB - Format 0 - srcBegin = AA67 - srcEnd = AA6C - destBegin = CC5A -End of Item 01AB - -Begin of Item 01AC - Format 0 - srcBegin = AA72 - srcEnd = AA78 - destBegin = CC69 -End of Item 01AC - -Begin of Item 01AD - Format 0 - srcBegin = AA83 - srcEnd = AAA0 - destBegin = CC76 -End of Item 01AD - -Begin of Item 01AE - Format 0 - srcBegin = AAA1 - srcEnd = AAF3 - destBegin = 3041 -End of Item 01AE - -Begin of Item 01AF - Format 0 - srcBegin = AB4A - srcEnd = AB50 - destBegin = CCA1 -End of Item 01AF - -Begin of Item 01B0 - Format 0 - srcBegin = AB52 - srcEnd = AB57 - destBegin = CCAE -End of Item 01B0 - -Begin of Item 01B1 - Format 0 - srcBegin = AB63 - srcEnd = AB69 - destBegin = CCBD -End of Item 01B1 - -Begin of Item 01B2 - Format 0 - srcBegin = AB6C - srcEnd = AB71 - destBegin = CCCA -End of Item 01B2 - -Begin of Item 01B3 - Format 0 - srcBegin = AB75 - srcEnd = AB7A - destBegin = CCD5 -End of Item 01B3 - -Begin of Item 01B4 - Format 0 - srcBegin = AB81 - srcEnd = AB89 - destBegin = CCDB -End of Item 01B4 - -Begin of Item 01B5 - Format 0 - srcBegin = AB8A - srcEnd = AB90 - destBegin = CCE5 -End of Item 01B5 - -Begin of Item 01B6 - Format 0 - srcBegin = AB94 - srcEnd = ABA0 - destBegin = CCF1 -End of Item 01B6 - -Begin of Item 01B7 - Format 0 - srcBegin = ABA1 - srcEnd = ABF6 - destBegin = 30A1 -End of Item 01B7 - -Begin of Item 01B8 - Format 0 - srcBegin = AC44 - srcEnd = AC49 - destBegin = CD02 -End of Item 01B8 - -Begin of Item 01B9 - Format 0 - srcBegin = AC4F - srcEnd = AC55 - destBegin = CD11 -End of Item 01B9 - -Begin of Item 01BA - Format 0 - srcBegin = AC6A - srcEnd = AC75 - destBegin = CD2D -End of Item 01BA - -Begin of Item 01BB - Format 0 - srcBegin = AC81 - srcEnd = AC9D - destBegin = CD3F -End of Item 01BB - -Begin of Item 01BC - Format 0 - srcBegin = ACA1 - srcEnd = ACA6 - destBegin = 0410 -End of Item 01BC - -Begin of Item 01BD - Format 0 - srcBegin = ACA8 - srcEnd = ACC1 - destBegin = 0416 -End of Item 01BD - -Begin of Item 01BE - Format 0 - srcBegin = ACD1 - srcEnd = ACD6 - destBegin = 0430 -End of Item 01BE - -Begin of Item 01BF - Format 0 - srcBegin = ACD8 - srcEnd = ACF1 - destBegin = 0436 -End of Item 01BF - -Begin of Item 01C0 - Format 0 - srcBegin = AD44 - srcEnd = AD4A - destBegin = CD65 -End of Item 01C0 - -Begin of Item 01C1 - Format 0 - srcBegin = AD4D - srcEnd = AD52 - destBegin = CD72 -End of Item 01C1 - -Begin of Item 01C2 - Format 0 - srcBegin = AD53 - srcEnd = AD5A - destBegin = CD79 -End of Item 01C2 - -Begin of Item 01C3 - Format 0 - srcBegin = AD61 - srcEnd = AD67 - destBegin = CD81 -End of Item 01C3 - -Begin of Item 01C4 - Format 0 - srcBegin = AD68 - srcEnd = AD72 - destBegin = CD89 -End of Item 01C4 - -Begin of Item 01C5 - Format 0 - srcBegin = AD87 - srcEnd = AD8C - destBegin = CDAA -End of Item 01C5 - -Begin of Item 01C6 - Format 0 - srcBegin = AD8D - srcEnd = AD9F - destBegin = CDB1 -End of Item 01C6 - -Begin of Item 01C7 - Format 0 - srcBegin = AE41 - srcEnd = AE46 - destBegin = CDC6 -End of Item 01C7 - -Begin of Item 01C8 - Format 0 - srcBegin = AE4A - srcEnd = AE5A - destBegin = CDD1 -End of Item 01C8 - -Begin of Item 01C9 - Format 0 - srcBegin = AE61 - srcEnd = AE66 - destBegin = CDE2 -End of Item 01C9 - -Begin of Item 01CA - Format 0 - srcBegin = AE6D - srcEnd = AE73 - destBegin = CDF1 -End of Item 01CA - -Begin of Item 01CB - Format 0 - srcBegin = AE88 - srcEnd = AE8E - destBegin = CE0D -End of Item 01CB - -Begin of Item 01CC - Format 0 - srcBegin = AE93 - srcEnd = AE98 - destBegin = CE1A -End of Item 01CC - -Begin of Item 01CD - Format 0 - srcBegin = AF47 - srcEnd = AF5A - destBegin = CE36 -End of Item 01CD - -Begin of Item 01CE - Format 0 - srcBegin = AF61 - srcEnd = AF6E - destBegin = CE4A -End of Item 01CE - -Begin of Item 01CF - Format 0 - srcBegin = AF73 - srcEnd = AF78 - destBegin = CE62 -End of Item 01CF - -Begin of Item 01D0 - Format 0 - srcBegin = AF81 - srcEnd = AF86 - destBegin = CE6E -End of Item 01D0 - -Begin of Item 01D1 - Format 0 - srcBegin = AF8C - srcEnd = AF92 - destBegin = CE7D -End of Item 01D1 - -Begin of Item 01D2 - Format 0 - srcBegin = AF95 - srcEnd = AF9A - destBegin = CE8A -End of Item 01D2 - -Begin of Item 01D3 - Format 0 - srcBegin = B041 - srcEnd = B046 - destBegin = CE9A -End of Item 01D3 - -Begin of Item 01D4 - Format 0 - srcBegin = B048 - srcEnd = B04D - destBegin = CEA6 -End of Item 01D4 - -Begin of Item 01D5 - Format 0 - srcBegin = B04E - srcEnd = B05A - destBegin = CEAE -End of Item 01D5 - -Begin of Item 01D6 - Format 0 - srcBegin = B061 - srcEnd = B066 - destBegin = CEBB -End of Item 01D6 - -Begin of Item 01D7 - Format 0 - srcBegin = B067 - srcEnd = B07A - destBegin = CEC2 -End of Item 01D7 - -Begin of Item 01D8 - Format 0 - srcBegin = B081 - srcEnd = B08E - destBegin = CED6 -End of Item 01D8 - -Begin of Item 01D9 - Format 0 - srcBegin = B093 - srcEnd = B099 - destBegin = CEED -End of Item 01D9 - -Begin of Item 01DA - Format 0 - srcBegin = B09B - srcEnd = B0A0 - destBegin = CEFA -End of Item 01DA - -Begin of Item 01DB - Format 0 - srcBegin = B0A8 - srcEnd = B0AF - destBegin = AC10 -End of Item 01DB - -Begin of Item 01DC - Format 0 - srcBegin = B146 - srcEnd = B14C - destBegin = CF09 -End of Item 01DC - -Begin of Item 01DD - Format 0 - srcBegin = B14F - srcEnd = B154 - destBegin = CF16 -End of Item 01DD - -Begin of Item 01DE - Format 0 - srcBegin = B161 - srcEnd = B167 - destBegin = CF25 -End of Item 01DE - -Begin of Item 01DF - Format 0 - srcBegin = B169 - srcEnd = B16E - destBegin = CF32 -End of Item 01DF - -Begin of Item 01E0 - Format 0 - srcBegin = B16F - srcEnd = B17A - destBegin = CF39 -End of Item 01E0 - -Begin of Item 01E1 - Format 0 - srcBegin = B181 - srcEnd = B18F - destBegin = CF45 -End of Item 01E1 - -Begin of Item 01E2 - Format 0 - srcBegin = B195 - srcEnd = B19B - destBegin = CF5D -End of Item 01E2 - -Begin of Item 01E3 - Format 0 - srcBegin = B249 - srcEnd = B24F - destBegin = CF79 -End of Item 01E3 - -Begin of Item 01E4 - Format 0 - srcBegin = B254 - srcEnd = B259 - destBegin = CF86 -End of Item 01E4 - -Begin of Item 01E5 - Format 0 - srcBegin = B261 - srcEnd = B273 - destBegin = CF8E -End of Item 01E5 - -Begin of Item 01E6 - Format 0 - srcBegin = B274 - srcEnd = B279 - destBegin = CFA2 -End of Item 01E6 - -Begin of Item 01E7 - Format 0 - srcBegin = B281 - srcEnd = B286 - destBegin = CFAA -End of Item 01E7 - -Begin of Item 01E8 - Format 0 - srcBegin = B287 - srcEnd = B299 - destBegin = CFB1 -End of Item 01E8 - -Begin of Item 01E9 - Format 0 - srcBegin = B29A - srcEnd = B2A0 - destBegin = CFC5 -End of Item 01E9 - -Begin of Item 01EA - Format 0 - srcBegin = B341 - srcEnd = B354 - destBegin = CFCC -End of Item 01EA - -Begin of Item 01EB - Format 0 - srcBegin = B361 - srcEnd = B366 - destBegin = CFEA -End of Item 01EB - -Begin of Item 01EC - Format 0 - srcBegin = B369 - srcEnd = B36E - destBegin = CFF6 -End of Item 01EC - -Begin of Item 01ED - Format 0 - srcBegin = B375 - srcEnd = B37A - destBegin = D005 -End of Item 01ED - -Begin of Item 01EE - Format 0 - srcBegin = B381 - srcEnd = B386 - destBegin = D00B -End of Item 01EE - -Begin of Item 01EF - Format 0 - srcBegin = B387 - srcEnd = B38C - destBegin = D012 -End of Item 01EF - -Begin of Item 01F0 - Format 0 - srcBegin = B38D - srcEnd = B3A0 - destBegin = D019 -End of Item 01F0 - -Begin of Item 01F1 - Format 0 - srcBegin = B441 - srcEnd = B446 - destBegin = D02E -End of Item 01F1 - -Begin of Item 01F2 - Format 0 - srcBegin = B44C - srcEnd = B452 - destBegin = D03D -End of Item 01F2 - -Begin of Item 01F3 - Format 0 - srcBegin = B455 - srcEnd = B45A - destBegin = D04A -End of Item 01F3 - -Begin of Item 01F4 - Format 0 - srcBegin = B467 - srcEnd = B46D - destBegin = D059 -End of Item 01F4 - -Begin of Item 01F5 - Format 0 - srcBegin = B46E - srcEnd = B478 - destBegin = D061 -End of Item 01F5 - -Begin of Item 01F6 - Format 0 - srcBegin = B484 - srcEnd = B48A - destBegin = D075 -End of Item 01F6 - -Begin of Item 01F7 - Format 0 - srcBegin = B48E - srcEnd = B4A0 - destBegin = D082 -End of Item 01F7 - -Begin of Item 01F8 - Format 0 - srcBegin = B541 - srcEnd = B54F - destBegin = D095 -End of Item 01F8 - -Begin of Item 01F9 - Format 0 - srcBegin = B555 - srcEnd = B55A - destBegin = D0AD -End of Item 01F9 - -Begin of Item 01FA - Format 0 - srcBegin = B564 - srcEnd = B569 - destBegin = D0BA -End of Item 01FA - -Begin of Item 01FB - Format 0 - srcBegin = B56F - srcEnd = B574 - destBegin = D0CA -End of Item 01FB - -Begin of Item 01FC - Format 0 - srcBegin = B587 - srcEnd = B58D - destBegin = D0E5 -End of Item 01FC - -Begin of Item 01FD - Format 0 - srcBegin = B58F - srcEnd = B594 - destBegin = D0F2 -End of Item 01FD - -Begin of Item 01FE - Format 0 - srcBegin = B595 - srcEnd = B5A0 - destBegin = D0F9 -End of Item 01FE - -Begin of Item 01FF - Format 0 - srcBegin = B641 - srcEnd = B648 - destBegin = D105 -End of Item 01FF - -Begin of Item 0200 - Format 0 - srcBegin = B649 - srcEnd = B65A - destBegin = D10E -End of Item 0200 - -Begin of Item 0201 - Format 0 - srcBegin = B661 - srcEnd = B670 - destBegin = D120 -End of Item 0201 - -Begin of Item 0202 - Format 0 - srcBegin = B683 - srcEnd = B688 - destBegin = D146 -End of Item 0202 - -Begin of Item 0203 - Format 0 - srcBegin = B68E - srcEnd = B694 - destBegin = D155 -End of Item 0203 - -Begin of Item 0204 - Format 0 - srcBegin = B697 - srcEnd = B69C - destBegin = D162 -End of Item 0204 - -Begin of Item 0205 - Format 0 - srcBegin = B741 - srcEnd = B74E - destBegin = D16E -End of Item 0205 - -Begin of Item 0206 - Format 0 - srcBegin = B74F - srcEnd = B755 - destBegin = D17D -End of Item 0206 - -Begin of Item 0207 - Format 0 - srcBegin = B761 - srcEnd = B775 - destBegin = D18B -End of Item 0207 - -Begin of Item 0208 - Format 0 - srcBegin = B781 - srcEnd = B787 - destBegin = D1A9 -End of Item 0208 - -Begin of Item 0209 - Format 0 - srcBegin = B792 - srcEnd = B7A0 - destBegin = D1C1 -End of Item 0209 - -Begin of Item 020A - Format 0 - srcBegin = B841 - srcEnd = B848 - destBegin = D1D0 -End of Item 020A - -Begin of Item 020B - Format 0 - srcBegin = B849 - srcEnd = B85A - destBegin = D1D9 -End of Item 020B - -Begin of Item 020C - Format 0 - srcBegin = B861 - srcEnd = B869 - destBegin = D1EB -End of Item 020C - -Begin of Item 020D - Format 0 - srcBegin = B86D - srcEnd = B87A - destBegin = D1F9 -End of Item 020D - -Begin of Item 020E - Format 0 - srcBegin = B882 - srcEnd = B887 - destBegin = D20A -End of Item 020E - -Begin of Item 020F - Format 0 - srcBegin = B888 - srcEnd = B8A0 - destBegin = D211 -End of Item 020F - -Begin of Item 0210 - Format 0 - srcBegin = B948 - srcEnd = B94E - destBegin = D235 -End of Item 0210 - -Begin of Item 0211 - Format 0 - srcBegin = B951 - srcEnd = B956 - destBegin = D242 -End of Item 0211 - -Begin of Item 0212 - Format 0 - srcBegin = B961 - srcEnd = B96F - destBegin = D24D -End of Item 0212 - -Begin of Item 0213 - Format 0 - srcBegin = B970 - srcEnd = B976 - destBegin = D25D -End of Item 0213 - -Begin of Item 0214 - Format 0 - srcBegin = B981 - srcEnd = B997 - destBegin = D269 -End of Item 0214 - -Begin of Item 0215 - Format 0 - srcBegin = BA47 - srcEnd = BA4C - destBegin = D296 -End of Item 0215 - -Begin of Item 0216 - Format 0 - srcBegin = BA53 - srcEnd = BA59 - destBegin = D2A5 -End of Item 0216 - -Begin of Item 0217 - Format 0 - srcBegin = BA64 - srcEnd = BA69 - destBegin = D2B2 -End of Item 0217 - -Begin of Item 0218 - Format 0 - srcBegin = BA75 - srcEnd = BA7A - destBegin = D2CC -End of Item 0218 - -Begin of Item 0219 - Format 0 - srcBegin = BA89 - srcEnd = BA8F - destBegin = D2DD -End of Item 0219 - -Begin of Item 021A - Format 0 - srcBegin = BA90 - srcEnd = BA99 - destBegin = D2E6 -End of Item 021A - -Begin of Item 021B - Format 0 - srcBegin = BB48 - srcEnd = BB4D - destBegin = D306 -End of Item 021B - -Begin of Item 021C - Format 0 - srcBegin = BB69 - srcEnd = BB6F - destBegin = D331 -End of Item 021C - -Begin of Item 021D - Format 0 - srcBegin = BB71 - srcEnd = BB76 - destBegin = D33E -End of Item 021D - -Begin of Item 021E - Format 0 - srcBegin = BB81 - srcEnd = BBA0 - destBegin = D34A -End of Item 021E - -Begin of Item 021F - Format 0 - srcBegin = BC41 - srcEnd = BC52 - destBegin = D36A -End of Item 021F - -Begin of Item 0220 - Format 0 - srcBegin = BC66 - srcEnd = BC6B - destBegin = D392 -End of Item 0220 - -Begin of Item 0221 - Format 0 - srcBegin = BC71 - srcEnd = BC77 - destBegin = D3A1 -End of Item 0221 - -Begin of Item 0222 - Format 0 - srcBegin = BC8C - srcEnd = BC92 - destBegin = D3BD -End of Item 0222 - -Begin of Item 0223 - Format 0 - srcBegin = BC95 - srcEnd = BC9A - destBegin = D3CA -End of Item 0223 - -Begin of Item 0224 - Format 0 - srcBegin = BC9B - srcEnd = BCA0 - destBegin = D3D1 -End of Item 0224 - -Begin of Item 0225 - Format 0 - srcBegin = BD42 - srcEnd = BD49 - destBegin = D3D9 -End of Item 0225 - -Begin of Item 0226 - Format 0 - srcBegin = BD4B - srcEnd = BD52 - destBegin = D3E4 -End of Item 0226 - -Begin of Item 0227 - Format 0 - srcBegin = BD67 - srcEnd = BD6C - destBegin = D402 -End of Item 0227 - -Begin of Item 0228 - Format 0 - srcBegin = BD6D - srcEnd = BD7A - destBegin = D409 -End of Item 0228 - -Begin of Item 0229 - Format 0 - srcBegin = BD81 - srcEnd = BD86 - destBegin = D417 -End of Item 0229 - -Begin of Item 022A - Format 0 - srcBegin = BD87 - srcEnd = BDA0 - destBegin = D41E -End of Item 022A - -Begin of Item 022B - Format 0 - srcBegin = BE41 - srcEnd = BE48 - destBegin = D438 -End of Item 022B - -Begin of Item 022C - Format 0 - srcBegin = BE4C - srcEnd = BE5A - destBegin = D445 -End of Item 022C - -Begin of Item 022D - Format 0 - srcBegin = BE61 - srcEnd = BE68 - destBegin = D454 -End of Item 022D - -Begin of Item 022E - Format 0 - srcBegin = BE6F - srcEnd = BE76 - destBegin = D465 -End of Item 022E - -Begin of Item 022F - Format 0 - srcBegin = BE92 - srcEnd = BE97 - destBegin = D48E -End of Item 022F - -Begin of Item 0230 - Format 0 - srcBegin = BE98 - srcEnd = BEA0 - destBegin = D495 -End of Item 0230 - -Begin of Item 0231 - Format 0 - srcBegin = BEF6 - srcEnd = BEFC - destBegin = C5C4 -End of Item 0231 - -Begin of Item 0232 - Format 0 - srcBegin = BF41 - srcEnd = BF4B - destBegin = D49E -End of Item 0232 - -Begin of Item 0233 - Format 0 - srcBegin = BF4C - srcEnd = BF5A - destBegin = D4AA -End of Item 0233 - -Begin of Item 0234 - Format 0 - srcBegin = BF61 - srcEnd = BF73 - destBegin = D4B9 -End of Item 0234 - -Begin of Item 0235 - Format 0 - srcBegin = BF81 - srcEnd = BF86 - destBegin = D4D6 -End of Item 0235 - -Begin of Item 0236 - Format 0 - srcBegin = BF89 - srcEnd = BF90 - destBegin = D4E0 -End of Item 0236 - -Begin of Item 0237 - Format 0 - srcBegin = BF97 - srcEnd = BF9D - destBegin = D4F1 -End of Item 0237 - -Begin of Item 0238 - Format 0 - srcBegin = BFB0 - srcEnd = BFB5 - destBegin = C5FC -End of Item 0238 - -Begin of Item 0239 - Format 0 - srcBegin = C041 - srcEnd = C046 - destBegin = D4FE -End of Item 0239 - -Begin of Item 023A - Format 0 - srcBegin = C04D - srcEnd = C053 - destBegin = D50D -End of Item 023A - -Begin of Item 023B - Format 0 - srcBegin = C055 - srcEnd = C05A - destBegin = D518 -End of Item 023B - -Begin of Item 023C - Format 0 - srcBegin = C061 - srcEnd = C07A - destBegin = D51E -End of Item 023C - -Begin of Item 023D - Format 0 - srcBegin = C08A - srcEnd = C090 - destBegin = D545 -End of Item 023D - -Begin of Item 023E - Format 0 - srcBegin = C093 - srcEnd = C098 - destBegin = D552 -End of Item 023E - -Begin of Item 023F - Format 0 - srcBegin = C0C0 - srcEnd = C0C7 - destBegin = C751 -End of Item 023F - -Begin of Item 0240 - Format 0 - srcBegin = C146 - srcEnd = C14B - destBegin = D56E -End of Item 0240 - -Begin of Item 0241 - Format 0 - srcBegin = C151 - srcEnd = C157 - destBegin = D57D -End of Item 0241 - -Begin of Item 0242 - Format 0 - srcBegin = C165 - srcEnd = C178 - destBegin = D591 -End of Item 0242 - -Begin of Item 0243 - Format 0 - srcBegin = C181 - srcEnd = C1A0 - destBegin = D5A8 -End of Item 0243 - -Begin of Item 0244 - Format 0 - srcBegin = C24E - srcEnd = C253 - destBegin = D5DE -End of Item 0244 - -Begin of Item 0245 - Format 0 - srcBegin = C268 - srcEnd = C26D - destBegin = D5FA -End of Item 0245 - -Begin of Item 0246 - Format 0 - srcBegin = C273 - srcEnd = C279 - destBegin = D609 -End of Item 0246 - -Begin of Item 0247 - Format 0 - srcBegin = C281 - srcEnd = C286 - destBegin = D616 -End of Item 0247 - -Begin of Item 0248 - Format 0 - srcBegin = C28D - srcEnd = C294 - destBegin = D625 -End of Item 0248 - -Begin of Item 0249 - Format 0 - srcBegin = C295 - srcEnd = C29E - destBegin = D62E -End of Item 0249 - -Begin of Item 024A - Format 0 - srcBegin = C367 - srcEnd = C36C - destBegin = D66A -End of Item 024A - -Begin of Item 024B - Format 0 - srcBegin = C36F - srcEnd = C37A - destBegin = D675 -End of Item 024B - -Begin of Item 024C - Format 0 - srcBegin = C384 - srcEnd = C389 - destBegin = D686 -End of Item 024C - -Begin of Item 024D - Format 0 - srcBegin = C38F - srcEnd = C396 - destBegin = D695 -End of Item 024D - -Begin of Item 024E - Format 0 - srcBegin = C399 - srcEnd = C39E - destBegin = D6A2 -End of Item 024E - -Begin of Item 024F - Format 0 - srcBegin = C445 - srcEnd = C44C - destBegin = D6B1 -End of Item 024F - -Begin of Item 0250 - Format 0 - srcBegin = C44E - srcEnd = C455 - destBegin = D6BC -End of Item 0250 - -Begin of Item 0251 - Format 0 - srcBegin = C46A - srcEnd = C46F - destBegin = D6DA -End of Item 0251 - -Begin of Item 0252 - Format 0 - srcBegin = C487 - srcEnd = C48C - destBegin = D6F6 -End of Item 0252 - -Begin of Item 0253 - Format 0 - srcBegin = C492 - srcEnd = C49D - destBegin = D705 -End of Item 0253 - -Begin of Item 0254 - Format 0 - srcBegin = C549 - srcEnd = C54F - destBegin = D721 -End of Item 0254 - -Begin of Item 0255 - Format 0 - srcBegin = C552 - srcEnd = C557 - destBegin = D72E -End of Item 0255 - -Begin of Item 0256 - Format 0 - srcBegin = C563 - srcEnd = C569 - destBegin = D73D -End of Item 0256 - -Begin of Item 0257 - Format 0 - srcBegin = C56D - srcEnd = C572 - destBegin = D74A -End of Item 0257 - -Begin of Item 0258 - Format 0 - srcBegin = C58F - srcEnd = C595 - destBegin = D775 -End of Item 0258 - -Begin of Item 0259 - Format 0 - srcBegin = C599 - srcEnd = C59E - destBegin = D782 -End of Item 0259 - -Begin of Item 025A - Format 0 - srcBegin = C644 - srcEnd = C64A - destBegin = D791 -End of Item 025A - -Begin of Item 025B - Format 0 - srcBegin = C64D - srcEnd = C652 - destBegin = D79E -End of Item 025B - -Begin of Item 025C - Format 0 - srcBegin = D1DB - srcEnd = D1E0 - destBegin = F90E -End of Item 025C - -Begin of Item 025D - Format 0 - srcBegin = D2C6 - srcEnd = D2CB - destBegin = F933 -End of Item 025D - -Begin of Item 025E - Format 0 - srcBegin = D2CD - srcEnd = D2D7 - destBegin = F939 -End of Item 025E - -Begin of Item 025F - Format 0 - srcBegin = D2E4 - srcEnd = D2EB - destBegin = F94A -End of Item 025F - -Begin of Item 0260 - Format 0 - srcBegin = D2F0 - srcEnd = D2F5 - destBegin = F952 -End of Item 0260 - -Begin of Item 0261 - Format 1 - srcBegin = 8141 - srcEnd = 8185 - mappingOffset = 0000 - Mapping = - AC02 AC03 AC05 AC06 AC0B AC0C AC0D AC0E - AC0F AC18 AC1E AC1F AC21 AC22 AC23 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD AC2E AC32 - AC33 AC34 FFFD FFFD FFFD FFFD FFFD FFFD - AC35 AC36 AC37 AC3A AC3B AC3D AC3E AC3F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD AC4C FFFD FFFD FFFD FFFD FFFD - FFFD AC55 FFFD FFFD FFFD FFFD FFFD FFFD - AC56 AC57 AC59 AC5A AC5B -End of Item 0261 - -Begin of Item 0262 - Format 1 - srcBegin = 8199 - srcEnd = 81FE - mappingOffset = 0045 - Mapping = - AC72 AC73 AC75 AC76 AC79 AC7B AC7C AC7D - AC7E AC7F AC82 AC87 AC88 AC8D AC8E AC8F - AC91 AC92 AC93 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD AC9E FFFD FFFD FFFD FFFD FFFD - FFFD ACAB ACAD ACAE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD ACBA ACBE ACBF ACC0 ACC2 - ACC3 ACC5 ACC6 ACC7 ACC9 ACCA ACCB FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD ACD6 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - ACE2 ACE3 ACE5 ACE6 ACE9 ACEB ACED ACEE - ACF2 ACF4 ACF7 ACF8 ACF9 ACFA ACFB ACFE - ACFF AD01 AD02 AD03 AD05 AD07 AD08 AD09 - AD0A AD0B AD0E AD10 AD12 AD13 -End of Item 0262 - -Begin of Item 0263 - Format 1 - srcBegin = 8241 - srcEnd = 8254 - mappingOffset = 00AB - Mapping = - AD14 AD15 AD16 AD17 AD19 AD1A AD1B AD1D - AD1E AD1F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD AD2A AD2B -End of Item 0263 - -Begin of Item 0264 - Format 1 - srcBegin = 8261 - srcEnd = 827A - mappingOffset = 00BF - Mapping = - AD36 AD37 AD39 AD3A AD3B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD AD46 AD48 FFFD FFFD - FFFD FFFD FFFD FFFD AD51 AD52 AD53 AD55 - AD56 AD57 -End of Item 0264 - -Begin of Item 0265 - Format 1 - srcBegin = 8289 - srcEnd = 82A5 - mappingOffset = 00D9 - Mapping = - AD62 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD AD6E AD6F AD71 AD72 AD77 AD78 AD79 - AD7A AD7E AD80 AD83 AD84 AD85 AD86 AD87 - AD8A AD8B AD8D AD8E AD8F -End of Item 0265 - -Begin of Item 0266 - Format 1 - srcBegin = 82D1 - srcEnd = 82EB - mappingOffset = 00F6 - Mapping = - ADC2 ADC3 ADC5 ADC6 ADC7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD ADD2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD ADDD ADDE ADDF - ADE1 ADE2 ADE3 -End of Item 0266 - -Begin of Item 0267 - Format 1 - srcBegin = 8341 - srcEnd = 834C - mappingOffset = 0111 - Mapping = - ADFA ADFB ADFD ADFE FFFD FFFD FFFD FFFD - FFFD FFFD AE0A AE0C -End of Item 0267 - -Begin of Item 0268 - Format 1 - srcBegin = 8374 - srcEnd = 83A6 - mappingOffset = 011D - Mapping = - AE32 AE33 AE35 AE36 AE39 AE3B AE3C FFFD - FFFD FFFD FFFD FFFD FFFD AE3D AE3E AE3F - AE42 AE44 AE47 AE48 AE49 AE4B AE4F AE51 - AE52 AE53 AE55 AE57 AE58 AE59 AE5A AE5B - AE5E AE62 AE63 AE64 AE66 AE67 AE6A AE6B - AE6D AE6E AE6F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD AE7A -End of Item 0268 - -Begin of Item 0269 - Format 1 - srcBegin = 83E2 - srcEnd = 83F5 - mappingOffset = 0150 - Mapping = - AEBF AEC1 AEC2 AEC3 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD AECE FFFD FFFD FFFD FFFD - FFFD FFFD AEDA AEDB -End of Item 0269 - -Begin of Item 026A - Format 1 - srcBegin = 8441 - srcEnd = 8451 - mappingOffset = 0164 - Mapping = - AEE6 AEE7 AEE9 AEEA AEEC FFFD FFFD FFFD - FFFD FFFD FFFD AEF5 AEF6 AEF7 AEF9 AEFA - AEFB -End of Item 026A - -Begin of Item 026B - Format 1 - srcBegin = 8461 - srcEnd = 8467 - mappingOffset = 0175 - Mapping = - AF06 AF09 AF0A AF0B AF0C AF0E AF0F -End of Item 026B - -Begin of Item 026C - Format 1 - srcBegin = 8489 - srcEnd = 8499 - mappingOffset = 017C - Mapping = - AF2E AF2F AF31 AF33 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD AF3E AF40 AF44 AF45 AF46 - AF47 -End of Item 026C - -Begin of Item 026D - Format 1 - srcBegin = 84CA - srcEnd = 84D9 - mappingOffset = 018D - Mapping = - AF81 AF82 AF83 AF85 AF86 AF87 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD AF92 AF93 AF94 -End of Item 026D - -Begin of Item 026E - Format 1 - srcBegin = 84FB - srcEnd = 84FE - mappingOffset = 019D - Mapping = - AFBA AFBB AFBD AFBE -End of Item 026E - -Begin of Item 026F - Format 1 - srcBegin = 8541 - srcEnd = 855A - mappingOffset = 01A1 - Mapping = - AFBF FFFD FFFD FFFD FFFD FFFD FFFD AFCA - AFCC AFCF AFD0 AFD1 AFD2 AFD3 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD AFDD AFDE AFDF - AFE0 AFE1 -End of Item 026F - -Begin of Item 0270 - Format 1 - srcBegin = 856D - srcEnd = 857A - mappingOffset = 01BB - Mapping = - AFF2 AFF3 AFF5 AFF6 AFF7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B002 B003 -End of Item 0270 - -Begin of Item 0271 - Format 1 - srcBegin = 8588 - srcEnd = 858D - mappingOffset = 01C9 - Mapping = - B00D B00E B00F B011 B012 B013 -End of Item 0271 - -Begin of Item 0272 - Format 1 - srcBegin = 85BA - srcEnd = 85C7 - mappingOffset = 01CF - Mapping = - B046 B047 B049 B04B B04D B04F B050 B051 - B052 B056 B058 B05A B05B B05C -End of Item 0272 - -Begin of Item 0273 - Format 1 - srcBegin = 85E6 - srcEnd = 85FE - mappingOffset = 01DD - Mapping = - B07E B07F B081 B082 B083 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B08E B090 FFFD FFFD - FFFD FFFD FFFD FFFD B09B B09D B09E B0A3 - B0A4 -End of Item 0273 - -Begin of Item 0274 - Format 1 - srcBegin = 8641 - srcEnd = 866F - mappingOffset = 01F6 - Mapping = - B0A5 B0A6 B0A7 B0AA B0B0 B0B2 B0B6 B0B7 - B0B9 B0BA B0BB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B0C6 FFFD FFFD FFFD FFFD FFFD - FFFD B0D2 FFFD FFFD FFFD FFFD FFFD FFFD - B0D3 B0D5 B0D6 B0D7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B0E1 B0E2 B0E3 B0E4 -End of Item 0274 - -Begin of Item 0275 - Format 1 - srcBegin = 8698 - srcEnd = 86CF - mappingOffset = 0225 - Mapping = - B10A B10D B10E B10F B111 B114 B115 B116 - B117 B11A B11E B11F B120 B121 B122 B126 - B127 B129 B12A B12B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B136 FFFD FFFD FFFD FFFD - FFFD FFFD B142 B143 B145 B146 B147 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B152 B153 - B156 B157 B159 B15A B15B B15D B15E B15F -End of Item 0275 - -Begin of Item 0276 - Format 1 - srcBegin = 86E7 - srcEnd = 86FE - mappingOffset = 025D - Mapping = - B17A B17B B17D B17E B17F B181 B183 B184 - B185 B186 B187 B18A B18C B18E B18F B190 - B191 B195 B196 B197 B199 B19A B19B B19D -End of Item 0276 - -Begin of Item 0277 - Format 1 - srcBegin = 8774 - srcEnd = 877A - mappingOffset = 0275 - Mapping = - B1CD B1CE B1CF B1D1 B1D2 B1D3 B1D5 -End of Item 0277 - -Begin of Item 0278 - Format 1 - srcBegin = 8787 - srcEnd = 87B1 - mappingOffset = 027C - Mapping = - B1DE FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B1EA B1EB B1ED B1EE B1EF FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B1FA B1FC - FFFD FFFD FFFD FFFD FFFD FFFD B206 B207 - B209 B20A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B216 B218 -End of Item 0278 - -Begin of Item 0279 - Format 1 - srcBegin = 87ED - srcEnd = 87FE - mappingOffset = 02A7 - Mapping = - B259 B25A B25B B25D B25E B25F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B26A B26B B26C - B26D B26E -End of Item 0279 - -Begin of Item 027A - Format 1 - srcBegin = 8841 - srcEnd = 8845 - mappingOffset = 02B9 - Mapping = - B26F B270 B271 B272 B273 -End of Item 027A - -Begin of Item 027B - Format 1 - srcBegin = 8853 - srcEnd = 887A - mappingOffset = 02BE - Mapping = - B286 B287 B288 B28A B28B B28C B28D B28E - FFFD FFFD FFFD FFFD FFFD FFFD B28F B292 - B293 B295 B296 B297 B29B B29C B29D B29E - B29F B2A2 B2A4 B2A7 B2A8 B2A9 B2AB B2AD - B2AE B2AF B2B1 B2B2 B2B3 B2B5 B2B6 B2B7 -End of Item 027B - -Begin of Item 027C - Format 1 - srcBegin = 8891 - srcEnd = 88B9 - mappingOffset = 02E6 - Mapping = - B2CA B2CB B2CD B2CE B2CF B2D1 B2D3 B2D4 - B2D5 B2D6 B2D7 B2DA B2DC B2DE B2DF B2E0 - B2E1 B2E3 B2E7 B2E9 B2EA B2F0 B2F1 B2F2 - B2F6 B2FC B2FD B2FE B302 B303 B305 B306 - B307 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B312 -End of Item 027C - -Begin of Item 027D - Format 1 - srcBegin = 88F7 - srcEnd = 88FE - mappingOffset = 030F - Mapping = - B357 B359 B35A B35D B360 B361 B362 B363 -End of Item 027D - -Begin of Item 027E - Format 1 - srcBegin = 8941 - srcEnd = 8965 - mappingOffset = 0317 - Mapping = - B366 B368 B36A B36C B36D B36F B372 B373 - B375 B376 B377 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B382 FFFD FFFD FFFD FFFD FFFD - FFFD B38D FFFD FFFD FFFD FFFD FFFD FFFD - B38E B38F B391 B392 B393 -End of Item 027E - -Begin of Item 027F - Format 1 - srcBegin = 8977 - srcEnd = 897A - mappingOffset = 033C - Mapping = - B3A9 B3AA B3AB B3AD -End of Item 027F - -Begin of Item 0280 - Format 1 - srcBegin = 8997 - srcEnd = 89AB - mappingOffset = 0340 - Mapping = - B3C6 B3C7 B3C9 B3CA B3CD B3CF B3D1 B3D2 - B3D3 B3D6 B3D8 B3DA B3DC B3DE B3DF B3E1 - B3E2 B3E3 B3E5 B3E6 B3E7 -End of Item 0280 - -Begin of Item 0281 - Format 1 - srcBegin = 89D9 - srcEnd = 89E6 - mappingOffset = 0355 - Mapping = - B419 B41A B41B B41D B41E B41F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B42A -End of Item 0281 - -Begin of Item 0282 - Format 1 - srcBegin = 8A4C - srcEnd = 8A65 - mappingOffset = 0363 - Mapping = - B452 B453 B455 B456 B457 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B462 B464 B466 FFFD - FFFD FFFD FFFD FFFD FFFD B467 B468 B469 - B46A B46B -End of Item 0282 - -Begin of Item 0283 - Format 1 - srcBegin = 8A79 - srcEnd = 8A85 - mappingOffset = 037D - Mapping = - B481 B482 FFFD FFFD FFFD FFFD FFFD FFFD - B483 B484 B485 B486 B487 -End of Item 0283 - -Begin of Item 0284 - Format 1 - srcBegin = 8AA0 - srcEnd = 8AD8 - mappingOffset = 038A - Mapping = - B4A5 B4A6 B4A7 B4A9 B4AA B4AB FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B4B6 B4B8 - FFFD FFFD FFFD FFFD FFFD FFFD B4C1 B4C2 - B4C3 B4C5 B4C6 B4C7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B4D1 B4D2 B4D3 B4D4 FFFD - FFFD FFFD FFFD FFFD FFFD B4DE B4DF B4E1 - B4E2 B4E5 B4E7 B4E8 B4E9 B4EA B4EB B4EE - B4F0 -End of Item 0284 - -Begin of Item 0285 - Format 1 - srcBegin = 8AFA - srcEnd = 8AFE - mappingOffset = 03C3 - Mapping = - B516 B517 B519 B51A B51D -End of Item 0285 - -Begin of Item 0286 - Format 1 - srcBegin = 8B47 - srcEnd = 8B71 - mappingOffset = 03C8 - Mapping = - B526 B52B B52C B52D B52E B52F B532 B533 - B535 B536 B537 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B542 B546 FFFD FFFD FFFD FFFD - FFFD FFFD B547 B548 B549 B54A B54E B54F - B551 B552 B553 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B55E -End of Item 0286 - -Begin of Item 0287 - Format 1 - srcBegin = 8BB6 - srcEnd = 8BD2 - mappingOffset = 03F3 - Mapping = - B5A2 B5A3 B5A5 B5A6 B5A7 B5A9 B5AC B5AD - B5AE B5AF B5B2 B5B6 B5B7 B5B8 B5B9 B5BA - B5BE B5BF B5C1 B5C2 B5C3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B5CE -End of Item 0287 - -Begin of Item 0288 - Format 1 - srcBegin = 8C51 - srcEnd = 8C5A - mappingOffset = 0410 - Mapping = - B612 B613 B615 B616 B617 B619 B61A B61B - B61C B61D -End of Item 0288 - -Begin of Item 0289 - Format 1 - srcBegin = 8CA9 - srcEnd = 8CAB - mappingOffset = 041A - Mapping = - B665 B666 B667 -End of Item 0289 - -Begin of Item 028A - Format 1 - srcBegin = 8CDF - srcEnd = 8CED - mappingOffset = 041D - Mapping = - B69E B69F B6A1 B6A2 B6A3 FFFD FFFD FFFD - FFFD FFFD FFFD B6AD B6AE B6AF B6B0 -End of Item 028A - -Begin of Item 028B - Format 1 - srcBegin = 8D73 - srcEnd = 8D88 - mappingOffset = 042C - Mapping = - B6F1 B6F2 B6F3 B6F5 B6F6 B6F7 B6F9 B6FA - FFFD FFFD FFFD FFFD FFFD FFFD B6FB B6FC - B6FD B6FE B6FF B702 B703 B704 -End of Item 028B - -Begin of Item 028C - Format 1 - srcBegin = 8DAB - srcEnd = 8DC4 - mappingOffset = 0442 - Mapping = - B72A B72B B72D B72E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD B73A FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B745 B746 B747 B749 - B74A B74B -End of Item 028C - -Begin of Item 028D - Format 1 - srcBegin = 8DD6 - srcEnd = 8DFE - mappingOffset = 045C - Mapping = - B761 B762 B763 B765 B766 B767 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B772 B774 FFFD - FFFD FFFD FFFD FFFD FFFD B77E B77F B781 - B782 B783 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B78E B793 B794 B795 B79A B79B B79D - B79E -End of Item 028D - -Begin of Item 028E - Format 1 - srcBegin = 8E41 - srcEnd = 8E51 - mappingOffset = 0485 - Mapping = - B79F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - B7AA FFFD FFFD FFFD FFFD FFFD FFFD B7B6 - B7B7 -End of Item 028E - -Begin of Item 028F - Format 1 - srcBegin = 8E61 - srcEnd = 8E66 - mappingOffset = 0496 - Mapping = - B7C2 B7C3 B7C4 B7C5 B7C6 B7C8 -End of Item 028F - -Begin of Item 0290 - Format 1 - srcBegin = 8E8F - srcEnd = 8ECA - mappingOffset = 049C - Mapping = - B7EE B7EF B7F1 B7F2 B7F3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B7FE B802 B803 B804 - B805 B806 B80A B80B B80D B80E B80F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD B81A B81C - FFFD FFFD FFFD FFFD FFFD FFFD B826 B827 - B829 B82A B82B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD B836 FFFD FFFD FFFD FFFD FFFD - FFFD B841 B842 B843 -End of Item 0290 - -Begin of Item 0291 - Format 1 - srcBegin = 8ED7 - srcEnd = 8EF6 - mappingOffset = 04D8 - Mapping = - B852 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B85E B85F B861 B862 B863 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B86E B870 FFFD - FFFD FFFD FFFD FFFD FFFD B879 B87A B87B -End of Item 0291 - -Begin of Item 0292 - Format 1 - srcBegin = 8F70 - srcEnd = 8FAE - mappingOffset = 04F8 - Mapping = - B8B1 B8B2 B8B3 B8B5 B8B6 B8B7 B8B9 B8BA - B8BB B8BC B8BD FFFD FFFD FFFD FFFD FFFD - FFFD B8BE B8BF B8C2 B8C4 FFFD FFFD FFFD - FFFD FFFD FFFD B8CD B8CE B8CF B8D1 B8D2 - B8D3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD B8DE B8E0 FFFD FFFD FFFD FFFD FFFD - FFFD B8EA B8EB B8ED B8EE B8EF FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B8FA B8FC -End of Item 0292 - -Begin of Item 0293 - Format 1 - srcBegin = 8FEA - srcEnd = 8FF8 - mappingOffset = 0537 - Mapping = - B93E B93F B941 B942 B943 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B94D B94E B950 -End of Item 0293 - -Begin of Item 0294 - Format 1 - srcBegin = 9041 - srcEnd = 905A - mappingOffset = 0546 - Mapping = - B95A B95B B95D B95E B95F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B96A B96C FFFD FFFD - FFFD FFFD FFFD FFFD B976 B977 B979 B97A - B97B B97D -End of Item 0294 - -Begin of Item 0295 - Format 1 - srcBegin = 9067 - srcEnd = 906A - mappingOffset = 0560 - Mapping = - B986 B988 B98B B98C -End of Item 0295 - -Begin of Item 0296 - Format 1 - srcBegin = 908E - srcEnd = 90C0 - mappingOffset = 0564 - Mapping = - B9AE B9AF B9B1 B9B2 B9B3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD B9BE B9C0 FFFD FFFD - FFFD FFFD FFFD FFFD B9CA B9CB B9CD B9D3 - B9D4 B9D5 B9D6 B9D7 B9DA B9DC B9DF B9E0 - B9E2 B9E6 B9E7 B9E9 B9EA B9EB FFFD FFFD - FFFD FFFD FFFD FFFD FFFD B9F6 B9FB B9FC - B9FD B9FE B9FF -End of Item 0296 - -Begin of Item 0297 - Format 1 - srcBegin = 90F5 - srcEnd = 90FE - mappingOffset = 0597 - Mapping = - BA3A BA3B BA3D BA3E BA3F BA41 BA43 BA44 - BA45 BA46 -End of Item 0297 - -Begin of Item 0298 - Format 1 - srcBegin = 9141 - srcEnd = 9154 - mappingOffset = 05A1 - Mapping = - BA47 BA4A BA4C BA4F BA50 BA51 BA52 BA56 - BA57 BA59 BA5A BA5B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD BA66 -End of Item 0298 - -Begin of Item 0299 - Format 1 - srcBegin = 9161 - srcEnd = 9174 - mappingOffset = 05B5 - Mapping = - BA72 BA73 BA75 BA76 BA77 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BA86 - BA88 BA89 BA8A BA8B -End of Item 0299 - -Begin of Item 029A - Format 1 - srcBegin = 9196 - srcEnd = 91AA - mappingOffset = 05C9 - Mapping = - BAAA BAAD BAAE BAAF BAB1 BAB3 BAB4 BAB5 - BAB6 BAB7 BABA BABC FFFD FFFD FFFD FFFD - FFFD FFFD BAC5 BAC6 BAC7 -End of Item 029A - -Begin of Item 029B - Format 1 - srcBegin = 91DC - srcEnd = 91F7 - mappingOffset = 05DE - Mapping = - BAFD BAFE BAFF BB01 BB02 BB03 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD BB0E BB10 - FFFD FFFD FFFD FFFD FFFD FFFD BB19 BB1A - BB1B BB1D BB1E BB1F -End of Item 029B - -Begin of Item 029C - Format 1 - srcBegin = 9241 - srcEnd = 927A - mappingOffset = 05FA - Mapping = - BB28 BB2A FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD BB37 BB39 BB3A BB3F BB40 BB41 - BB42 BB43 BB46 BB48 BB4A BB4B BB4C BB4E - BB51 BB52 FFFD FFFD FFFD FFFD FFFD FFFD - BB53 BB55 BB56 BB57 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BB62 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BB6D BB6E BB6F - BB70 BB71 -End of Item 029C - -Begin of Item 029D - Format 1 - srcBegin = 9297 - srcEnd = 929C - mappingOffset = 0634 - Mapping = - BB89 BB8A BB8B BB8D BB8E BB8F -End of Item 029D - -Begin of Item 029E - Format 1 - srcBegin = 92B0 - srcEnd = 92D5 - mappingOffset = 063A - Mapping = - BBA5 BBA6 BBA7 BBA9 BBAA BBAB FFFD FFFD - FFFD FFFD FFFD FFFD FFFD BBB5 BBB6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD BBC1 - BBC2 BBC3 BBC5 BBC6 BBC7 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BBD1 BBD2 -End of Item 029E - -Begin of Item 029F - Format 1 - srcBegin = 92FA - srcEnd = 92FE - mappingOffset = 0660 - Mapping = - BBFA BBFB BBFD BBFE BC01 -End of Item 029F - -Begin of Item 02A0 - Format 1 - srcBegin = 9341 - srcEnd = 9371 - mappingOffset = 0665 - Mapping = - BC03 BC04 BC05 BC06 BC07 BC0A BC0E BC10 - BC12 BC13 BC19 BC1A BC20 BC21 BC22 BC23 - BC26 BC28 BC2A BC2B BC2C BC2E BC2F BC32 - BC33 BC35 FFFD FFFD FFFD FFFD FFFD FFFD - BC36 BC37 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD BC42 BC46 BC47 BC48 BC4A BC4B BC4E - BC4F -End of Item 02A0 - -Begin of Item 02A1 - Format 1 - srcBegin = 9381 - srcEnd = 9383 - mappingOffset = 0696 - Mapping = - BC5A BC5B BC5C -End of Item 02A1 - -Begin of Item 02A2 - Format 1 - srcBegin = 93AA - srcEnd = 93E2 - mappingOffset = 0699 - Mapping = - BC86 BC87 BC89 BC8A BC8D BC8F BC90 BC91 - BC92 BC93 BC96 BC98 BC9B BC9C BC9D BC9E - BC9F BCA2 BCA3 BCA5 BCA6 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BCB2 FFFD FFFD FFFD - FFFD FFFD FFFD BCBE BCBF BCC1 BCC2 BCC3 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - BCCE BCD2 BCD3 BCD4 BCD6 BCD7 BCD9 BCDA - BCDB -End of Item 02A2 - -Begin of Item 02A3 - Format 1 - srcBegin = 93FA - srcEnd = 93FE - mappingOffset = 06D2 - Mapping = - BCF7 BCF9 BCFA BCFB BCFD -End of Item 02A3 - -Begin of Item 02A4 - Format 1 - srcBegin = 9447 - srcEnd = 9451 - mappingOffset = 06D7 - Mapping = - BD06 BD08 FFFD FFFD FFFD FFFD FFFD FFFD - BD11 BD12 BD13 -End of Item 02A4 - -Begin of Item 02A5 - Format 1 - srcBegin = 948E - srcEnd = 9492 - mappingOffset = 06E2 - Mapping = - BD4A BD4B BD4D BD4E BD4F -End of Item 02A5 - -Begin of Item 02A6 - Format 1 - srcBegin = 94A4 - srcEnd = 94A6 - mappingOffset = 06E7 - Mapping = - BD65 BD66 BD67 -End of Item 02A6 - -Begin of Item 02A7 - Format 1 - srcBegin = 94BE - srcEnd = 94CC - mappingOffset = 06EA - Mapping = - BD82 BD83 BD85 BD86 BD8B BD8C BD8D BD8E - BD8F BD92 BD94 BD96 BD97 BD98 BD9B -End of Item 02A7 - -Begin of Item 02A8 - Format 1 - srcBegin = 9541 - srcEnd = 9547 - mappingOffset = 06F9 - Mapping = - BDD2 BDD3 BDD6 BDD7 BDD9 BDDA BDDB -End of Item 02A8 - -Begin of Item 02A9 - Format 1 - srcBegin = 955A - srcEnd = 957A - mappingOffset = 0700 - Mapping = - BDF1 FFFD FFFD FFFD FFFD FFFD FFFD BDF2 - BDF3 BDF5 BDF6 BDF7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD BE01 BE02 BE04 FFFD FFFD - FFFD FFFD FFFD FFFD BE0E BE0F BE11 BE12 - BE13 -End of Item 02A9 - -Begin of Item 02AA - Format 2 - srcBegin = 9588 - destBegin = BE1E -End of Item 02AA - -Begin of Item 02AB - Format 1 - srcBegin = 95AD - srcEnd = 95DB - mappingOffset = 0721 - Mapping = - BE46 BE47 BE49 BE4A BE4B BE4D BE4F BE50 - BE51 BE52 BE53 BE56 BE58 BE5C BE5D BE5E - BE5F BE62 BE63 BE65 BE66 BE67 BE69 BE6B - BE6C BE6D BE6E BE6F BE72 BE76 BE77 BE78 - BE79 BE7A BE7E BE7F BE81 BE82 BE83 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD BE8E -End of Item 02AB - -Begin of Item 02AC - Format 1 - srcBegin = 9659 - srcEnd = 966B - mappingOffset = 0750 - Mapping = - BED2 BED3 FFFD FFFD FFFD FFFD FFFD FFFD - BED5 BED6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD BEE1 BEE2 -End of Item 02AC - -Begin of Item 02AD - Format 2 - srcBegin = 96A0 - destBegin = BF1A -End of Item 02AD - -Begin of Item 02AE - Format 1 - srcBegin = 96C3 - srcEnd = 96D1 - mappingOffset = 0763 - Mapping = - BF42 BF43 BF45 BF46 BF47 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BF52 BF53 BF54 -End of Item 02AE - -Begin of Item 02AF - Format 1 - srcBegin = 9793 - srcEnd = 97A1 - mappingOffset = 0772 - Mapping = - BFCE BFCF BFD1 BFD2 BFD3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD BFDD BFDE BFE0 -End of Item 02AF - -Begin of Item 02B0 - Format 1 - srcBegin = 97FC - srcEnd = 97FE - mappingOffset = 0781 - Mapping = - C03D C03E C03F -End of Item 02B0 - -Begin of Item 02B1 - Format 1 - srcBegin = 9858 - srcEnd = 9863 - mappingOffset = 0784 - Mapping = - C059 C05A C05B FFFD FFFD FFFD FFFD FFFD - FFFD C05D C05E C05F -End of Item 02B1 - -Begin of Item 02B2 - Format 1 - srcBegin = 9897 - srcEnd = 98FE - mappingOffset = 0790 - Mapping = - C092 C093 C095 C096 C097 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C0A2 C0A4 FFFD FFFD - FFFD FFFD FFFD FFFD C0AE C0B1 C0B2 C0B7 - C0B8 C0B9 C0BA C0BB C0BE C0C2 C0C3 C0C4 - C0C6 C0C7 C0CA C0CB C0CD C0CE C0CF FFFD - FFFD FFFD FFFD FFFD FFFD FFFD C0DA FFFD - FFFD FFFD FFFD FFFD FFFD C0E6 C0E7 C0E9 - C0EA C0EB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C0F6 C0F8 FFFD FFFD FFFD FFFD FFFD - FFFD C101 C102 C103 C105 C106 C107 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD C111 C112 - C113 C114 FFFD FFFD FFFD FFFD FFFD FFFD - C121 C122 C125 C128 C129 C12A C12B C12E -End of Item 02B2 - -Begin of Item 02B3 - Format 1 - srcBegin = 9941 - srcEnd = 997A - mappingOffset = 07F8 - Mapping = - C132 C133 C134 C135 C137 C13A C13B C13D - C13E C13F FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C14A FFFD FFFD FFFD FFFD FFFD FFFD - C156 C157 FFFD FFFD FFFD FFFD FFFD FFFD - C159 C15A C15B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C166 FFFD FFFD FFFD FFFD FFFD - FFFD C171 C172 C173 C175 C176 C177 C179 - C17A C17B -End of Item 02B3 - -Begin of Item 02B4 - Format 1 - srcBegin = 9990 - srcEnd = 99A5 - mappingOffset = 0832 - Mapping = - C18F C191 C192 C193 C195 C197 C198 C199 - C19A C19B C19E C1A0 C1A2 C1A3 C1A4 C1A6 - C1A7 C1AA C1AB C1AD C1AE C1AF -End of Item 02B4 - -Begin of Item 02B5 - Format 1 - srcBegin = 99B8 - srcEnd = 99FE - mappingOffset = 0848 - Mapping = - C1C5 C1C6 C1C7 C1C9 C1CA C1CB FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C1D5 C1D6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD C1E1 C1E2 - C1E3 C1E5 C1E6 C1E7 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C1F2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C1FE C1FF C201 C202 - C203 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C20E C210 FFFD FFFD FFFD FFFD FFFD FFFD - C21A C21B C21D C21E C221 C222 C223 -End of Item 02B5 - -Begin of Item 02B6 - Format 1 - srcBegin = 9A41 - srcEnd = 9A49 - mappingOffset = 088F - Mapping = - C224 C225 C226 C227 C22A C22C C22E C230 - C233 -End of Item 02B6 - -Begin of Item 02B7 - Format 1 - srcBegin = 9A61 - srcEnd = 9A93 - mappingOffset = 0898 - Mapping = - C246 C247 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C252 C253 C255 C256 C257 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C261 C262 C263 - C264 C266 FFFD FFFD FFFD FFFD FFFD FFFD - C267 C268 C269 C26A C26B C26E C26F C271 - C272 C273 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C27E C280 -End of Item 02B7 - -Begin of Item 02B8 - Format 1 - srcBegin = 9AA7 - srcEnd = 9ABC - mappingOffset = 08CB - Mapping = - C299 C29A C29C FFFD FFFD FFFD FFFD FFFD - FFFD C2A6 C2A7 C2A9 C2AA C2AB FFFD FFFD - FFFD FFFD FFFD FFFD C2B6 C2B8 -End of Item 02B8 - -Begin of Item 02B9 - Format 1 - srcBegin = 9ADF - srcEnd = 9AFE - mappingOffset = 08E1 - Mapping = - C2DE C2DF C2E1 C2E2 FFFD FFFD FFFD FFFD - FFFD FFFD C2EE C2F0 C2F2 C2F3 C2F4 C2F5 - C2F7 C2FA C2FD C2FE C2FF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C30A C30B C30E C30F -End of Item 02B9 - -Begin of Item 02BA - Format 1 - srcBegin = 9B41 - srcEnd = 9B51 - mappingOffset = 0901 - Mapping = - C310 C311 C312 C316 C317 C319 C31A C31B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C326 - C327 -End of Item 02BA - -Begin of Item 02BB - Format 1 - srcBegin = 9B9B - srcEnd = 9BB3 - mappingOffset = 0912 - Mapping = - C36A C36B C36D C36E C36F C371 C373 C374 - C375 C376 C377 C37A C37B FFFD FFFD FFFD - FFFD FFFD FFFD C385 C386 C387 C389 C38A - C38B -End of Item 02BB - -Begin of Item 02BC - Format 2 - srcBegin = 9BFE - destBegin = C3DA -End of Item 02BC - -Begin of Item 02BD - Format 1 - srcBegin = 9C41 - srcEnd = 9C54 - mappingOffset = 092B - Mapping = - C3DB C3DD C3DE C3E1 C3E3 C3E4 C3E5 C3E6 - C3E7 C3EA C3EB C3EC FFFD FFFD FFFD FFFD - FFFD FFFD C3F6 C3F7 -End of Item 02BD - -Begin of Item 02BE - Format 1 - srcBegin = 9C91 - srcEnd = 9C96 - mappingOffset = 093F - Mapping = - C42D C42E C42F C431 C432 C433 -End of Item 02BE - -Begin of Item 02BF - Format 1 - srcBegin = 9CC3 - srcEnd = 9CD1 - mappingOffset = 0945 - Mapping = - C466 C467 C469 C46A C46B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C476 C477 C478 -End of Item 02BF - -Begin of Item 02C0 - Format 1 - srcBegin = 9D4F - srcEnd = 9D51 - mappingOffset = 0954 - Mapping = - C4B9 C4BA C4BB -End of Item 02C0 - -Begin of Item 02C1 - Format 1 - srcBegin = 9D90 - srcEnd = 9DA9 - mappingOffset = 0957 - Mapping = - C4F2 C4F3 C4F5 C4F6 C4F7 C4F9 C4FB C4FC - C4FD C4FE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C50D C50E C50F C511 - C512 C513 -End of Item 02C1 - -Begin of Item 02C2 - Format 1 - srcBegin = 9DBC - srcEnd = 9DFE - mappingOffset = 0971 - Mapping = - C52A C52B C52D C52E C52F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C53A C53C FFFD FFFD - FFFD FFFD FFFD FFFD C546 C547 C54B C54F - C550 C551 C552 C556 C55A C55B C55C C55F - C562 C563 C565 C566 C567 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C572 FFFD FFFD FFFD - FFFD FFFD FFFD C57E C57F C581 C582 C583 - C585 C586 C588 C589 C58A C58B C58E C590 - C592 C593 C594 -End of Item 02C2 - -Begin of Item 02C3 - Format 1 - srcBegin = 9E41 - srcEnd = 9E47 - mappingOffset = 09B4 - Mapping = - C596 C599 C59A C59B C59D C59E C59F -End of Item 02C3 - -Begin of Item 02C4 - Format 1 - srcBegin = 9E5A - srcEnd = 9EC9 - mappingOffset = 09BB - Mapping = - C5B6 FFFD FFFD FFFD FFFD FFFD FFFD C5B7 - C5BA C5BF C5C0 C5C1 C5C2 C5C3 C5CB C5CD - C5CF C5D2 C5D3 C5D5 C5D6 C5D7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C5E2 C5E4 C5E6 - C5E7 FFFD FFFD FFFD FFFD FFFD FFFD C5E8 - C5E9 C5EA C5EB C5EF C5F1 C5F2 C5F3 C5F5 - C5F8 C5F9 C5FA C5FB C602 C603 C604 C609 - C60A C60B C60D C60E C60F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C61A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C626 C627 C629 C62A - C62B C62F C631 C632 C636 C638 C63A C63C - C63D C63E C63F C642 C643 C645 C646 C647 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C652 - FFFD FFFD FFFD FFFD FFFD FFFD C65E C65F -End of Item 02C4 - -Begin of Item 02C5 - Format 1 - srcBegin = 9ED5 - srcEnd = 9EFE - mappingOffset = 0A2B - Mapping = - C66D C66E C670 FFFD FFFD FFFD FFFD FFFD - FFFD C67A C67B C67D C67E C67F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C68A C68C FFFD - FFFD FFFD FFFD FFFD FFFD C696 C697 C699 - C69A C69B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C6A6 -End of Item 02C5 - -Begin of Item 02C6 - Format 1 - srcBegin = 9F41 - srcEnd = 9FFE - mappingOffset = 0A55 - Mapping = - C6A8 FFFD FFFD FFFD FFFD FFFD FFFD C6B2 - C6B3 C6B5 C6B6 C6B7 C6BB C6BC C6BD C6BE - C6BF C6C2 C6C4 FFFD FFFD FFFD FFFD FFFD - FFFD C6CE FFFD FFFD FFFD FFFD FFFD FFFD - C6CF C6D1 C6D2 C6D3 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C6DE C6DF FFFD FFFD FFFD - FFFD FFFD FFFD C6EA C6EB C6ED C6EE C6EF - C6F1 C6F2 FFFD FFFD FFFD FFFD FFFD FFFD - C6F3 C6F4 C6F5 C6F6 C6F7 C6FA C6FB C6FC - FFFD FFFD FFFD FFFD FFFD FFFD C706 C707 - C709 C70A C70B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD C716 C718 FFFD FFFD FFFD FFFD - FFFD FFFD C722 C723 C725 C726 C727 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD C732 C734 - C736 C738 C739 C73A C73B C73E C73F C741 - C742 C743 C745 C746 C747 C748 C749 C74B - C74E C750 C759 C75A C75B C75D C75E C75F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C769 - C76A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C776 C777 C779 C77A C77B C77F C780 - C781 C782 C786 C78B C78C C78D C78F C792 - C793 C795 C799 C79B C79C C79D C79E C79F - C7A2 C7A7 C7A8 C7A9 C7AA C7AB C7AE C7AF - C7B1 C7B2 C7B3 C7B5 C7B6 C7B7 -End of Item 02C6 - -Begin of Item 02C7 - Format 1 - srcBegin = A041 - srcEnd = A05A - mappingOffset = 0B13 - Mapping = - C7B8 C7B9 C7BA C7BB C7BE FFFD FFFD FFFD - FFFD FFFD FFFD C7CA C7CB C7CD C7CF FFFD - FFFD FFFD FFFD FFFD FFFD FFFD C7D9 C7DA - C7DB C7DC -End of Item 02C7 - -Begin of Item 02C8 - Format 1 - srcBegin = A067 - srcEnd = A06C - mappingOffset = 0B2D - Mapping = - C7E5 C7E6 C7E7 C7E9 C7EA C7EB -End of Item 02C8 - -Begin of Item 02C9 - Format 1 - srcBegin = A081 - srcEnd = A0BA - mappingOffset = 0B33 - Mapping = - C7FB C7FC C7FD C7FE C7FF C802 C803 C805 - C806 C807 C809 C80B C80C C80D C80E C80F - C812 C814 C817 C818 C819 C81A C81B C81E - C81F C821 C822 C823 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD C82E C830 FFFD FFFD FFFD - FFFD FFFD FFFD C839 C83A C83B C83D C83E - C83F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - C84A C84B -End of Item 02C9 - -Begin of Item 02CA - Format 1 - srcBegin = A0DC - srcEnd = A0EB - mappingOffset = 0B6D - Mapping = - C872 C873 C875 C876 C877 C879 C87B C87C - C87D C87E C87F C882 C884 C888 C889 C88A -End of Item 02CA - -Begin of Item 02CB - Format 1 - srcBegin = A0FA - srcEnd = A0FE - mappingOffset = 0B7D - Mapping = - C89E C8A0 C8A2 C8A3 C8A4 -End of Item 02CB - -Begin of Item 02CC - Format 1 - srcBegin = A141 - srcEnd = A143 - mappingOffset = 0B82 - Mapping = - C8A5 C8A6 C8A7 -End of Item 02CC - -Begin of Item 02CD - Format 1 - srcBegin = A157 - srcEnd = A17A - mappingOffset = 0B85 - Mapping = - C8BE C8BF C8C0 C8C1 FFFD FFFD FFFD FFFD - FFFD FFFD C8C2 C8C3 C8C5 C8C6 C8C7 C8C9 - C8CA C8CB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD C8D6 C8D8 FFFD FFFD FFFD FFFD FFFD - FFFD C8E2 C8E3 C8E5 -End of Item 02CD - -Begin of Item 02CE - Format 1 - srcBegin = A196 - srcEnd = A1FE - mappingOffset = 0BA9 - Mapping = - C8FE C8FF C901 C902 C903 C907 C908 C909 - C90A C90B C90E 3000 3001 3002 00B7 2025 - 2026 00A8 3003 00AD 2015 2225 FF3C 223C - 2018 2019 201C 201D 3014 3015 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00B1 00D7 00F7 2260 2264 2265 221E 2234 - 00B0 2032 2033 2103 212B FFE0 FFE1 FFE5 - 2642 2640 2220 22A5 2312 2202 2207 2261 - 2252 00A7 203B 2606 2605 25CB 25CF 25CE - 25C7 25C6 25A1 25A0 25B3 25B2 25BD 25BC - 2192 2190 2191 2193 2194 3013 226A 226B - 221A 223D 221D 2235 222B 222C 2208 220B - 2286 2287 2282 2283 222A 2229 2227 2228 - FFE2 -End of Item 02CE - -Begin of Item 02CF - Format 2 - srcBegin = A241 - destBegin = C910 -End of Item 02CF - -Begin of Item 02D0 - Format 1 - srcBegin = A289 - srcEnd = A2E5 - mappingOffset = 0C12 - Mapping = - C952 C953 C955 C956 C957 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C962 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD C96D C96E C96F - 21D2 21D4 2200 2203 00B4 FF5E 02C7 02D8 - 02DD 02DA 02D9 00B8 02DB 00A1 00BF 02D0 - 222E 2211 220F 00A4 2109 2030 25C1 25C0 - 25B7 25B6 2664 2660 2661 2665 2667 2663 - 2299 25C8 25A3 25D0 25D1 2592 25A4 25A5 - 25A8 25A7 25A6 25A9 2668 260F 260E 261C - 261E 00B6 2020 2021 2195 2197 2199 2196 - 2198 266D 2669 266A 266C 327F 321C 2116 - 33C7 2122 33C2 33D8 2121 -End of Item 02D0 - -Begin of Item 02D1 - Format 1 - srcBegin = A341 - srcEnd = A343 - mappingOffset = 0C6F - Mapping = - C971 C972 C973 -End of Item 02D1 - -Begin of Item 02D2 - Format 1 - srcBegin = A356 - srcEnd = A35A - mappingOffset = 0C72 - Mapping = - C98A C98B C98D C98E C98F -End of Item 02D2 - -Begin of Item 02D3 - Format 1 - srcBegin = A368 - srcEnd = A369 - mappingOffset = 0C77 - Mapping = - C99A C99C -End of Item 02D3 - -Begin of Item 02D4 - Format 1 - srcBegin = A392 - srcEnd = A3A0 - mappingOffset = 0C79 - Mapping = - C9C2 C9C3 C9C5 C9C6 C9C9 C9CB C9CC C9CD - C9CE C9CF C9D2 C9D4 C9D7 C9D8 C9DB -End of Item 02D4 - -Begin of Item 02D5 - Format 2 - srcBegin = A3DC - destBegin = FFE6 -End of Item 02D5 - -Begin of Item 02D6 - Format 2 - srcBegin = A3FE - destBegin = FFE3 -End of Item 02D6 - -Begin of Item 02D7 - Format 1 - srcBegin = A441 - srcEnd = A46D - mappingOffset = 0C88 - Mapping = - C9DE C9DF C9E1 C9E3 C9E5 C9E6 C9E8 C9E9 - C9EA C9EB C9EE FFFD FFFD FFFD FFFD FFFD - FFFD C9FA C9FB C9FD C9FE C9FF CA01 CA02 - CA03 CA04 FFFD FFFD FFFD FFFD FFFD FFFD - CA05 CA06 CA07 CA0A FFFD FFFD FFFD FFFD - FFFD FFFD CA15 CA16 CA17 -End of Item 02D7 - -Begin of Item 02D8 - Format 1 - srcBegin = A481 - srcEnd = A483 - mappingOffset = 0CB5 - Mapping = - CA26 CA27 CA28 -End of Item 02D8 - -Begin of Item 02D9 - Format 1 - srcBegin = A541 - srcEnd = A55A - mappingOffset = 0CB8 - Mapping = - CA47 CA48 CA49 CA4A CA4B CA4E CA4F CA51 - CA52 CA53 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CA5E FFFD FFFD FFFD FFFD FFFD FFFD - CA69 CA6A -End of Item 02D9 - -Begin of Item 02DA - Format 1 - srcBegin = A579 - srcEnd = A57A - mappingOffset = 0CD2 - Mapping = - CA85 CA86 -End of Item 02DA - -Begin of Item 02DB - Format 1 - srcBegin = A655 - srcEnd = A65A - mappingOffset = 0CD4 - Mapping = - CABE CABF CAC1 CAC2 CAC3 CAC5 -End of Item 02DB - -Begin of Item 02DC - Format 1 - srcBegin = A667 - srcEnd = A66D - mappingOffset = 0CDA - Mapping = - CACE CAD0 CAD2 CAD4 CAD5 CAD6 CAD7 -End of Item 02DC - -Begin of Item 02DD - Format 1 - srcBegin = A681 - srcEnd = A684 - mappingOffset = 0CE1 - Mapping = - CAE8 CAE9 CAEA CAEB -End of Item 02DD - -Begin of Item 02DE - Format 1 - srcBegin = A69F - srcEnd = A6DC - mappingOffset = 0CE5 - Mapping = - CB09 CB0A 2500 2502 250C 2510 2518 2514 - 251C 252C 2524 2534 253C 2501 2503 250F - 2513 251B 2517 2523 2533 252B 253B 254B - 2520 252F 2528 2537 253F 251D 2530 2525 - 2538 2542 2512 2511 251A 2519 2516 2515 - 250E 250D 251E 251F 2521 2522 2526 2527 - 2529 252A 252D 252E 2531 2532 2535 2536 - 2539 253A 253D 253E 2540 2541 -End of Item 02DE - -Begin of Item 02DF - Format 1 - srcBegin = A741 - srcEnd = A74B - mappingOffset = 0D23 - Mapping = - CB0B CB0C CB0D CB0E CB0F CB11 CB12 CB13 - CB15 CB16 CB17 -End of Item 02DF - -Begin of Item 02E0 - Format 1 - srcBegin = A778 - srcEnd = A792 - mappingOffset = 0D2E - Mapping = - CB42 CB43 CB44 FFFD FFFD FFFD FFFD FFFD - FFFD CB45 CB46 CB47 CB4A CB4B CB4D CB4E - CB4F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CB5A CB5B CB5C -End of Item 02E0 - -Begin of Item 02E1 - Format 1 - srcBegin = A7A1 - srcEnd = A7EF - mappingOffset = 0D49 - Mapping = - 3395 3396 3397 2113 3398 33C4 33A3 33A4 - 33A5 33A6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 33CA 338D 338E 338F - 33CF 3388 3389 33C8 33A7 33A8 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3380 3381 3382 3383 3384 FFFD FFFD FFFD - FFFD FFFD FFFD 3390 3391 3392 3393 3394 - 2126 33C0 33C1 338A 338B 338C 33D6 33C5 - 33AD 33AE 33AF 33DB 33A9 33AA 33AB 33AC - 33DD 33D0 33D3 33C3 33C9 33DC 33C6 -End of Item 02E1 - -Begin of Item 02E2 - Format 1 - srcBegin = A8A1 - srcEnd = A8AF - mappingOffset = 0D98 - Mapping = - 00C6 00D0 00AA 0126 FFFD 0132 FFFD 013F - 0141 00D8 0152 00BA 00DE 0166 014A -End of Item 02E2 - -Begin of Item 02E3 - Format 1 - srcBegin = A8F6 - srcEnd = A8FE - mappingOffset = 0DA7 - Mapping = - 00BD 2153 2154 00BC 00BE 215B 215C 215D - 215E -End of Item 02E3 - -Begin of Item 02E4 - Format 1 - srcBegin = A961 - srcEnd = A967 - mappingOffset = 0DB0 - Mapping = - CBE0 CBE1 CBE2 CBE3 CBE5 CBE6 CBE8 -End of Item 02E4 - -Begin of Item 02E5 - Format 1 - srcBegin = A990 - srcEnd = A9B0 - mappingOffset = 0DB7 - Mapping = - CC0E CC0F CC11 CC12 CC13 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CC1E CC1F CC20 CC23 - CC24 00E6 0111 00F0 0127 0131 0133 0138 - 0140 0142 00F8 0153 00DF 00FE 0167 014B - 0149 -End of Item 02E5 - -Begin of Item 02E6 - Format 1 - srcBegin = A9F6 - srcEnd = A9FE - mappingOffset = 0DD8 - Mapping = - 00B9 00B2 00B3 2074 207F 2081 2082 2083 - 2084 -End of Item 02E6 - -Begin of Item 02E7 - Format 1 - srcBegin = AA41 - srcEnd = AA82 - mappingOffset = 0DE1 - Mapping = - CC25 CC26 CC2A CC2B CC2D CC2F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CC3A CC3F CC40 - CC41 CC42 CC43 CC46 CC47 CC49 CC4A CC4B - CC4D CC4E FFFD FFFD FFFD FFFD FFFD FFFD - CC4F CC50 CC51 CC52 CC53 CC56 FFFD FFFD - FFFD FFFD FFFD FFFD CC61 CC62 CC63 CC65 - CC67 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CC71 CC72 FFFD FFFD FFFD FFFD FFFD FFFD - CC73 CC74 -End of Item 02E7 - -Begin of Item 02E8 - Format 1 - srcBegin = AB41 - srcEnd = AB74 - mappingOffset = 0E23 - Mapping = - CC94 CC95 CC96 CC97 CC9A CC9B CC9D CC9E - CC9F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CCAA FFFD FFFD FFFD FFFD FFFD FFFD CCB6 - CCB7 CCB9 FFFD FFFD FFFD FFFD FFFD FFFD - CCBA CCBB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD CCC6 CCC8 FFFD FFFD FFFD FFFD FFFD - FFFD CCD1 CCD2 CCD3 -End of Item 02E8 - -Begin of Item 02E9 - Format 1 - srcBegin = AB91 - srcEnd = AB93 - mappingOffset = 0E57 - Mapping = - CCED CCEE CCEF -End of Item 02E9 - -Begin of Item 02EA - Format 1 - srcBegin = AC41 - srcEnd = AC69 - mappingOffset = 0E5A - Mapping = - CCFE CCFF CD00 FFFD FFFD FFFD FFFD FFFD - FFFD CD0A CD0B CD0D CD0E CD0F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CD1A CD1C CD1E - CD1F CD20 FFFD FFFD FFFD FFFD FFFD FFFD - CD21 CD22 CD23 CD25 CD26 CD27 CD29 CD2A - CD2B -End of Item 02EA - -Begin of Item 02EB - Format 1 - srcBegin = AC76 - srcEnd = AC7A - mappingOffset = 0E83 - Mapping = - CD3A CD3B CD3C CD3D CD3E -End of Item 02EB - -Begin of Item 02EC - Format 1 - srcBegin = AC9E - srcEnd = ACA7 - mappingOffset = 0E88 - Mapping = - CD5D CD5E CD5F FFFD FFFD FFFD FFFD FFFD - FFFD 0401 -End of Item 02EC - -Begin of Item 02ED - Format 2 - srcBegin = ACD7 - destBegin = 0451 -End of Item 02ED - -Begin of Item 02EE - Format 1 - srcBegin = AD41 - srcEnd = AD4C - mappingOffset = 0E92 - Mapping = - CD61 CD62 CD63 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD CD6E CD70 -End of Item 02EE - -Begin of Item 02EF - Format 1 - srcBegin = AD73 - srcEnd = AD86 - mappingOffset = 0E9E - Mapping = - CD96 CD97 CD99 CD9A CD9B CD9D CD9E CD9F - FFFD FFFD FFFD FFFD FFFD FFFD CDA0 CDA1 - CDA2 CDA3 CDA6 CDA8 -End of Item 02EF - -Begin of Item 02F0 - Format 2 - srcBegin = ADA0 - destBegin = CDC5 -End of Item 02F0 - -Begin of Item 02F1 - Format 1 - srcBegin = AE47 - srcEnd = AE49 - mappingOffset = 0EB2 - Mapping = - CDCD CDCE CDCF -End of Item 02F1 - -Begin of Item 02F2 - Format 1 - srcBegin = AE67 - srcEnd = AEA0 - mappingOffset = 0EB5 - Mapping = - CDE9 CDEA CDEB CDED CDEE CDEF FFFD FFFD - FFFD FFFD FFFD FFFD FFFD CDFA CDFC CDFE - CDFF CE00 CE01 CE02 FFFD FFFD FFFD FFFD - FFFD FFFD CE03 CE05 CE06 CE07 CE09 CE0A - CE0B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - CE15 CE16 CE17 CE18 FFFD FFFD FFFD FFFD - FFFD FFFD CE22 CE23 CE25 CE26 CE27 CE29 - CE2A CE2B -End of Item 02F2 - -Begin of Item 02F3 - Format 1 - srcBegin = AF41 - srcEnd = AF46 - mappingOffset = 0EEF - Mapping = - CE2C CE2D CE2E CE2F CE32 CE34 -End of Item 02F3 - -Begin of Item 02F4 - Format 1 - srcBegin = AF6F - srcEnd = AF7A - mappingOffset = 0EF5 - Mapping = - CE5A CE5B CE5D CE5E FFFD FFFD FFFD FFFD - FFFD FFFD CE6A CE6C -End of Item 02F4 - -Begin of Item 02F5 - Format 1 - srcBegin = AF87 - srcEnd = AFA0 - mappingOffset = 0F01 - Mapping = - CE76 CE77 CE79 CE7A CE7B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CE86 CE88 FFFD FFFD - FFFD FFFD FFFD FFFD CE92 CE93 CE95 CE96 - CE97 CE99 -End of Item 02F5 - -Begin of Item 02F6 - Format 2 - srcBegin = B047 - destBegin = CEA2 -End of Item 02F6 - -Begin of Item 02F7 - Format 1 - srcBegin = B08F - srcEnd = B0FE - mappingOffset = 0F1B - Mapping = - CEE6 CEE7 CEE9 CEEA FFFD FFFD FFFD FFFD - FFFD FFFD FFFD CEF6 FFFD FFFD FFFD FFFD - FFFD FFFD AC00 AC01 AC04 AC07 AC08 AC09 - AC0A FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD AC19 AC1A AC1B AC1C AC1D AC20 AC24 - AC2C AC2D AC2F AC30 AC31 AC38 AC39 AC3C - AC40 AC4B AC4D AC54 AC58 AC5C AC70 AC71 - AC74 AC77 AC78 AC7A AC80 AC81 AC83 AC84 - AC85 AC86 AC89 AC8A AC8B AC8C AC90 AC94 - AC9C AC9D AC9F ACA0 ACA1 ACA8 ACA9 ACAA - ACAC ACAF ACB0 ACB8 ACB9 ACBB ACBC ACBD - ACC1 ACC4 ACC8 ACCC ACD5 ACD7 ACE0 ACE1 - ACE4 ACE7 ACE8 ACEA ACEC ACEF ACF0 ACF1 - ACF3 ACF5 ACF6 ACFC ACFD AD00 AD04 AD06 -End of Item 02F7 - -Begin of Item 02F8 - Format 1 - srcBegin = B141 - srcEnd = B15A - mappingOffset = 0F8B - Mapping = - CF02 CF03 CF05 CF06 CF07 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CF12 CF14 FFFD FFFD - FFFD FFFD FFFD FFFD CF1D CF1E CF1F CF21 - CF22 CF23 -End of Item 02F8 - -Begin of Item 02F9 - Format 2 - srcBegin = B168 - destBegin = CF2E -End of Item 02F9 - -Begin of Item 02FA - Format 1 - srcBegin = B190 - srcEnd = B1FE - mappingOffset = 0FA5 - Mapping = - CF56 CF57 CF59 CF5A CF5B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD CF66 CF68 CF6A CF6B - CF6C AD0C AD0D AD0F AD11 AD18 AD1C AD20 - AD29 AD2C AD2D AD34 AD35 AD38 AD3C AD44 - AD45 AD47 AD49 AD50 AD54 AD58 AD61 AD63 - AD6C AD6D AD70 AD73 AD74 AD75 AD76 AD7B - AD7C AD7D AD7F AD81 AD82 AD88 AD89 AD8C - AD90 AD9C AD9D ADA4 ADB7 ADC0 ADC1 ADC4 - ADC8 ADD0 ADD1 ADD3 ADDC ADE0 ADE4 ADF8 - ADF9 ADFC ADFF AE00 AE01 AE08 AE09 AE0B - AE0D AE14 AE30 AE31 AE34 AE37 AE38 AE3A - AE40 AE41 AE43 AE45 AE46 AE4A AE4C AE4D - AE4E AE50 AE54 AE56 AE5C AE5D AE5F AE60 - AE61 AE65 AE68 AE69 AE6C AE70 AE78 -End of Item 02FA - -Begin of Item 02FB - Format 1 - srcBegin = B241 - srcEnd = B25A - mappingOffset = 1014 - Mapping = - CF6D CF6E CF6F CF72 CF73 CF75 CF76 CF77 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD CF81 - CF82 CF83 CF84 FFFD FFFD FFFD FFFD FFFD - FFFD CF8D -End of Item 02FB - -Begin of Item 02FC - Format 2 - srcBegin = B27A - destBegin = CFA9 -End of Item 02FC - -Begin of Item 02FD - Format 1 - srcBegin = B2A1 - srcEnd = B2FE - mappingOffset = 102E - Mapping = - AE79 AE7B AE7C AE7D AE84 AE85 AE8C AEBC - AEBD AEBE AEC0 AEC4 AECC AECD AECF AED0 - AED1 AED8 AED9 AEDC AEE8 AEEB AEED AEF4 - AEF8 AEFC AF07 AF08 AF0D AF10 AF2C AF2D - AF30 AF32 AF34 AF3C AF3D AF3F AF41 AF42 - AF43 AF48 AF49 AF50 AF5C AF5D AF64 AF65 - AF79 AF80 AF84 AF88 AF90 AF91 AF95 AF9C - AFB8 AFB9 AFBC AFC0 AFC7 AFC8 AFC9 AFCB - AFCD AFCE AFD4 AFDC AFE8 AFE9 AFF0 AFF1 - AFF4 AFF8 B000 B001 B004 B00C B010 B014 - B01C B01D B028 B044 B045 B048 B04A B04C - B04E B053 B054 B055 B057 B059 -End of Item 02FD - -Begin of Item 02FE - Format 1 - srcBegin = B355 - srcEnd = B35A - mappingOffset = 108C - Mapping = - CFE2 CFE3 CFE5 CFE6 CFE7 CFE9 -End of Item 02FE - -Begin of Item 02FF - Format 1 - srcBegin = B367 - srcEnd = B374 - mappingOffset = 1092 - Mapping = - CFF2 CFF4 FFFD FFFD FFFD FFFD FFFD FFFD - CFFD CFFE CFFF D001 D002 D003 -End of Item 02FF - -Begin of Item 0300 - Format 1 - srcBegin = B3A1 - srcEnd = B3FE - mappingOffset = 10A0 - Mapping = - B05D B07C B07D B080 B084 B08C B08D B08F - B091 B098 B099 B09A B09C B09F B0A0 B0A1 - B0A2 B0A8 B0A9 B0AB B0AC B0AD B0AE B0AF - B0B1 B0B3 B0B4 B0B5 B0B8 B0BC B0C4 B0C5 - B0C7 B0C8 B0C9 B0D0 B0D1 B0D4 B0D8 B0E0 - B0E5 B108 B109 B10B B10C B110 B112 B113 - B118 B119 B11B B11C B11D B123 B124 B125 - B128 B12C B134 B135 B137 B138 B139 B140 - B141 B144 B148 B150 B151 B154 B155 B158 - B15C B160 B178 B179 B17C B180 B182 B188 - B189 B18B B18D B192 B193 B194 B198 B19C - B1A8 B1CC B1D0 B1D4 B1DC B1DD -End of Item 0300 - -Begin of Item 0301 - Format 1 - srcBegin = B447 - srcEnd = B454 - mappingOffset = 10FE - Mapping = - D036 D037 D039 D03A D03B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D046 D048 -End of Item 0301 - -Begin of Item 0302 - Format 1 - srcBegin = B461 - srcEnd = B466 - mappingOffset = 110C - Mapping = - D051 D052 D053 D055 D056 D057 -End of Item 0302 - -Begin of Item 0303 - Format 1 - srcBegin = B479 - srcEnd = B48D - mappingOffset = 1112 - Mapping = - D06E D06F FFFD FFFD FFFD FFFD FFFD FFFD - D071 D072 D073 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D07E D07F D080 -End of Item 0303 - -Begin of Item 0304 - Format 1 - srcBegin = B4A1 - srcEnd = B4FE - mappingOffset = 1127 - Mapping = - B1DF B1E8 B1E9 B1EC B1F0 B1F9 B1FB B1FD - B204 B205 B208 B20B B20C B214 B215 B217 - B219 B220 B234 B23C B258 B25C B260 B268 - B269 B274 B275 B27C B284 B285 B289 B290 - B291 B294 B298 B299 B29A B2A0 B2A1 B2A3 - B2A5 B2A6 B2AA B2AC B2B0 B2B4 B2C8 B2C9 - B2CC B2D0 B2D2 B2D8 B2D9 B2DB B2DD B2E2 - B2E4 B2E5 B2E6 B2E8 B2EB B2EC B2ED B2EE - B2EF B2F3 B2F4 B2F5 B2F7 B2F8 B2F9 B2FA - B2FB B2FF B300 B301 B304 B308 B310 B311 - B313 B314 B315 B31C B354 B355 B356 B358 - B35B B35C B35E B35F B364 B365 -End of Item 0304 - -Begin of Item 0305 - Format 1 - srcBegin = B550 - srcEnd = B554 - mappingOffset = 1185 - Mapping = - D0A6 D0A7 D0A9 D0AA D0AB -End of Item 0305 - -Begin of Item 0306 - Format 1 - srcBegin = B561 - srcEnd = B58E - mappingOffset = 118A - Mapping = - D0B3 D0B6 D0B8 FFFD FFFD FFFD FFFD FFFD - FFFD D0C2 D0C3 D0C5 D0C6 D0C7 FFFD FFFD - FFFD FFFD FFFD FFFD D0D2 D0D6 D0D7 D0D8 - D0D9 D0DA FFFD FFFD FFFD FFFD FFFD FFFD - D0DB D0DE D0DF D0E1 D0E2 D0E3 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D0EE -End of Item 0306 - -Begin of Item 0307 - Format 1 - srcBegin = B5A1 - srcEnd = B5FE - mappingOffset = 11B8 - Mapping = - B367 B369 B36B B36E B370 B371 B374 B378 - B380 B381 B383 B384 B385 B38C B390 B394 - B3A0 B3A1 B3A8 B3AC B3C4 B3C5 B3C8 B3CB - B3CC B3CE B3D0 B3D4 B3D5 B3D7 B3D9 B3DB - B3DD B3E0 B3E4 B3E8 B3FC B410 B418 B41C - B420 B428 B429 B42B B434 B450 B451 B454 - B458 B460 B461 B463 B465 B46C B480 B488 - B49D B4A4 B4A8 B4AC B4B5 B4B7 B4B9 B4C0 - B4C4 B4C8 B4D0 B4D5 B4DC B4DD B4E0 B4E3 - B4E4 B4E6 B4EC B4ED B4EF B4F1 B4F8 B514 - B515 B518 B51B B51C B524 B525 B527 B528 - B529 B52A B530 B531 B534 B538 -End of Item 0307 - -Begin of Item 0308 - Format 1 - srcBegin = B671 - srcEnd = B6FE - mappingOffset = 1216 - Mapping = - D132 D133 D135 D136 D137 D139 D13B D13C - D13D D13E FFFD FFFD FFFD FFFD FFFD FFFD - D13F D142 FFFD FFFD FFFD FFFD FFFD FFFD - D14E D14F D151 D152 D153 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D15E D160 FFFD FFFD - FFFD FFFD FFFD FFFD D169 D16A D16B D16D - B540 B541 B543 B544 B545 B54B B54C B54D - B550 B554 B55C B55D B55F B560 B561 B5A0 - B5A1 B5A4 B5A8 B5AA B5AB B5B0 B5B1 B5B3 - B5B4 B5B5 B5BB B5BC B5BD B5C0 B5C4 B5CC - B5CD B5CF B5D0 B5D1 B5D8 B5EC B610 B611 - B614 B618 B625 B62C B634 B648 B664 B668 - B69C B69D B6A0 B6A4 B6AB B6AC B6B1 B6D4 - B6F0 B6F4 B6F8 B700 B701 B705 B728 B729 - B72C B72F B730 B738 B739 B73B B744 B748 - B74C B754 B755 B760 B764 B768 B770 B771 - B773 B775 B77C B77D B780 B784 B78C B78D - B78F B790 B791 B792 B796 B797 -End of Item 0308 - -Begin of Item 0309 - Format 1 - srcBegin = B756 - srcEnd = B75A - mappingOffset = 12A4 - Mapping = - D185 D186 D187 D189 D18A -End of Item 0309 - -Begin of Item 030A - Format 1 - srcBegin = B776 - srcEnd = B77A - mappingOffset = 12A9 - Mapping = - D1A2 D1A3 D1A5 D1A6 D1A7 -End of Item 030A - -Begin of Item 030B - Format 1 - srcBegin = B788 - srcEnd = B791 - mappingOffset = 12AE - Mapping = - D1B2 D1B4 D1B6 D1B7 D1B8 D1B9 D1BB D1BD - D1BE D1BF -End of Item 030B - -Begin of Item 030C - Format 1 - srcBegin = B7A1 - srcEnd = B7FE - mappingOffset = 12B8 - Mapping = - B798 B799 B79C B7A0 B7A8 B7A9 B7AB B7AC - B7AD B7B4 B7B5 B7B8 B7C7 B7C9 B7EC B7ED - B7F0 B7F4 B7FC B7FD B7FF B800 B801 B807 - B808 B809 B80C B810 B818 B819 B81B B81D - B824 B825 B828 B82C B834 B835 B837 B838 - B839 B840 B844 B851 B853 B85C B85D B860 - B864 B86C B86D B86F B871 B878 B87C B88D - B8A8 B8B0 B8B4 B8B8 B8C0 B8C1 B8C3 B8C5 - B8CC B8D0 B8D4 B8DD B8DF B8E1 B8E8 B8E9 - B8EC B8F0 B8F8 B8F9 B8FB B8FD B904 B918 - B920 B93C B93D B940 B944 B94C B94F B951 - B958 B959 B95C B960 B968 B969 -End of Item 030C - -Begin of Item 030D - Format 1 - srcBegin = B86A - srcEnd = B86C - mappingOffset = 1316 - Mapping = - D1F5 D1F6 D1F7 -End of Item 030D - -Begin of Item 030E - Format 2 - srcBegin = B881 - destBegin = D208 -End of Item 030E - -Begin of Item 030F - Format 1 - srcBegin = B8A1 - srcEnd = B8FE - mappingOffset = 1319 - Mapping = - B96B B96D B974 B975 B978 B97C B984 B985 - B987 B989 B98A B98D B98E B9AC B9AD B9B0 - B9B4 B9BC B9BD B9BF B9C1 B9C8 B9C9 B9CC - B9CE B9CF B9D0 B9D1 B9D2 B9D8 B9D9 B9DB - B9DD B9DE B9E1 B9E3 B9E4 B9E5 B9E8 B9EC - B9F4 B9F5 B9F7 B9F8 B9F9 B9FA BA00 BA01 - BA08 BA15 BA38 BA39 BA3C BA40 BA42 BA48 - BA49 BA4B BA4D BA4E BA53 BA54 BA55 BA58 - BA5C BA64 BA65 BA67 BA68 BA69 BA70 BA71 - BA74 BA78 BA83 BA84 BA85 BA87 BA8C BAA8 - BAA9 BAAB BAAC BAB0 BAB2 BAB8 BAB9 BABB - BABD BAC4 BAC8 BAD8 BAD9 BAFC -End of Item 030F - -Begin of Item 0310 - Format 1 - srcBegin = B941 - srcEnd = B95A - mappingOffset = 1377 - Mapping = - D22A D22B D22E D22F D231 D232 D233 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D23E D240 - FFFD FFFD FFFD FFFD FFFD FFFD D249 D24A - D24B D24C -End of Item 0310 - -Begin of Item 0311 - Format 1 - srcBegin = B977 - srcEnd = B97A - mappingOffset = 1391 - Mapping = - D265 D266 D267 D268 -End of Item 0311 - -Begin of Item 0312 - Format 1 - srcBegin = B998 - srcEnd = B9FE - mappingOffset = 1395 - Mapping = - D282 D283 D285 D286 D287 D289 D28A D28B - D28C BB00 BB04 BB0D BB0F BB11 BB18 BB1C - BB20 BB29 BB2B BB34 BB35 BB36 BB38 BB3B - BB3C BB3D BB3E BB44 BB45 BB47 BB49 BB4D - BB4F BB50 BB54 BB58 BB61 BB63 BB6C BB88 - BB8C BB90 BBA4 BBA8 BBAC BBB4 BBB7 BBC0 - BBC4 BBC8 BBD0 BBD3 BBF8 BBF9 BBFC BBFF - BC00 BC02 BC08 BC09 BC0B BC0C BC0D BC0F - BC11 BC14 BC15 BC16 BC17 BC18 BC1B BC1C - BC1D BC1E BC1F BC24 BC25 BC27 BC29 BC2D - BC30 BC31 BC34 BC38 BC40 BC41 BC43 BC44 - BC45 BC49 BC4C BC4D BC50 BC5D BC84 BC85 - BC88 BC8B BC8C BC8E BC94 BC95 BC97 -End of Item 0312 - -Begin of Item 0313 - Format 1 - srcBegin = BA41 - srcEnd = BA74 - mappingOffset = 13FC - Mapping = - D28D D28E D28F D292 D293 D294 FFFD FFFD - FFFD FFFD FFFD FFFD D29D D29E D29F D2A1 - D2A2 D2A3 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D2AD FFFD FFFD FFFD FFFD FFFD FFFD - D2AE D2AF D2B0 FFFD FFFD FFFD FFFD FFFD - FFFD D2BA D2BB D2BD D2BE D2C1 D2C3 D2C4 - D2C5 D2C6 D2C7 D2CA -End of Item 0313 - -Begin of Item 0314 - Format 1 - srcBegin = BA81 - srcEnd = BA88 - mappingOffset = 1430 - Mapping = - D2D2 D2D3 D2D5 D2D6 D2D7 D2D9 D2DA D2DB -End of Item 0314 - -Begin of Item 0315 - Format 1 - srcBegin = BA9A - srcEnd = BAFE - mappingOffset = 1438 - Mapping = - D2F2 D2F3 D2F5 D2F6 D2F7 D2F9 D2FA BC99 - BC9A BCA0 BCA1 BCA4 BCA7 BCA8 BCB0 BCB1 - BCB3 BCB4 BCB5 BCBC BCBD BCC0 BCC4 BCCD - BCCF BCD0 BCD1 BCD5 BCD8 BCDC BCF4 BCF5 - BCF6 BCF8 BCFC BD04 BD05 BD07 BD09 BD10 - BD14 BD24 BD2C BD40 BD48 BD49 BD4C BD50 - BD58 BD59 BD64 BD68 BD80 BD81 BD84 BD87 - BD88 BD89 BD8A BD90 BD91 BD93 BD95 BD99 - BD9A BD9C BDA4 BDB0 BDB8 BDD4 BDD5 BDD8 - BDDC BDE9 BDF0 BDF4 BDF8 BE00 BE03 BE05 - BE0C BE0D BE10 BE14 BE1C BE1D BE1F BE44 - BE45 BE48 BE4C BE4E BE54 BE55 BE57 BE59 - BE5A BE5B BE60 BE61 BE64 -End of Item 0315 - -Begin of Item 0316 - Format 1 - srcBegin = BB41 - srcEnd = BB7A - mappingOffset = 149D - Mapping = - D2FB D2FC D2FD D2FE D2FF D302 D304 FFFD - FFFD FFFD FFFD FFFD FFFD D30F D311 D312 - D313 D315 D317 D318 D319 D31A D31B D31E - D322 D323 FFFD FFFD FFFD FFFD FFFD FFFD - D324 D326 D327 D32A D32B D32D D32E D32F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D33A - FFFD FFFD FFFD FFFD FFFD FFFD D346 D347 - D348 D349 -End of Item 0316 - -Begin of Item 0317 - Format 1 - srcBegin = BBA1 - srcEnd = BBFE - mappingOffset = 14D7 - Mapping = - BE68 BE6A BE70 BE71 BE73 BE74 BE75 BE7B - BE7C BE7D BE80 BE84 BE8C BE8D BE8F BE90 - BE91 BE98 BE99 BEA8 BED0 BED1 BED4 BED7 - BED8 BEE0 BEE3 BEE4 BEE5 BEEC BF01 BF08 - BF09 BF18 BF19 BF1B BF1C BF1D BF40 BF41 - BF44 BF48 BF50 BF51 BF55 BF94 BFB0 BFC5 - BFCC BFCD BFD0 BFD4 BFDC BFDF BFE1 C03C - C051 C058 C05C C060 C068 C069 C090 C091 - C094 C098 C0A0 C0A1 C0A3 C0A5 C0AC C0AD - C0AF C0B0 C0B3 C0B4 C0B5 C0B6 C0BC C0BD - C0BF C0C0 C0C1 C0C5 C0C8 C0C9 C0CC C0D0 - C0D8 C0D9 C0DB C0DC C0DD C0E4 -End of Item 0317 - -Begin of Item 0318 - Format 1 - srcBegin = BC53 - srcEnd = BC94 - mappingOffset = 1535 - Mapping = - D37E D37F D381 D382 D383 D385 D386 D387 - FFFD FFFD FFFD FFFD FFFD FFFD D388 D389 - D38A D38B D38E FFFD FFFD FFFD FFFD FFFD - FFFD D39A D39B D39D D39E D39F FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D3AA D3AC D3AE - FFFD FFFD FFFD FFFD FFFD FFFD D3AF D3B0 - D3B1 D3B2 D3B3 D3B5 D3B6 D3B7 D3B9 D3BA - D3BB FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D3C6 D3C7 -End of Item 0318 - -Begin of Item 0319 - Format 1 - srcBegin = BCA1 - srcEnd = BCFE - mappingOffset = 1577 - Mapping = - C0E5 C0E8 C0EC C0F4 C0F5 C0F7 C0F9 C100 - C104 C108 C110 C115 C11C C11D C11E C11F - C120 C123 C124 C126 C127 C12C C12D C12F - C130 C131 C136 C138 C139 C13C C140 C148 - C149 C14B C14C C14D C154 C155 C158 C15C - C164 C165 C167 C168 C169 C170 C174 C178 - C185 C18C C18D C18E C190 C194 C196 C19C - C19D C19F C1A1 C1A5 C1A8 C1A9 C1AC C1B0 - C1BD C1C4 C1C8 C1CC C1D4 C1D7 C1D8 C1E0 - C1E4 C1E8 C1F0 C1F1 C1F3 C1FC C1FD C200 - C204 C20C C20D C20F C211 C218 C219 C21C - C21F C220 C228 C229 C22B C22D -End of Item 0319 - -Begin of Item 031A - Format 1 - srcBegin = BD41 - srcEnd = BD66 - mappingOffset = 15D5 - Mapping = - D3D7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D3E2 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D3EE D3EF D3F1 D3F2 D3F3 D3F5 - D3F6 D3F7 FFFD FFFD FFFD FFFD FFFD FFFD - D3F8 D3F9 D3FA D3FB D3FE D400 -End of Item 031A - -Begin of Item 031B - Format 1 - srcBegin = BDA1 - srcEnd = BDFE - mappingOffset = 15FB - Mapping = - C22F C231 C232 C234 C248 C250 C251 C254 - C258 C260 C265 C26C C26D C270 C274 C27C - C27D C27F C281 C288 C289 C290 C298 C29B - C29D C2A4 C2A5 C2A8 C2AC C2AD C2B4 C2B5 - C2B7 C2B9 C2DC C2DD C2E0 C2E3 C2E4 C2EB - C2EC C2ED C2EF C2F1 C2F6 C2F8 C2F9 C2FB - C2FC C300 C308 C309 C30C C30D C313 C314 - C315 C318 C31C C324 C325 C328 C329 C345 - C368 C369 C36C C370 C372 C378 C379 C37C - C37D C384 C388 C38C C3C0 C3D8 C3D9 C3DC - C3DF C3E0 C3E2 C3E8 C3E9 C3ED C3F4 C3F5 - C3F8 C408 C410 C424 C42C C430 -End of Item 031B - -Begin of Item 031C - Format 1 - srcBegin = BE49 - srcEnd = BE4B - mappingOffset = 1659 - Mapping = - D441 D442 D443 -End of Item 031C - -Begin of Item 031D - Format 1 - srcBegin = BE69 - srcEnd = BE91 - mappingOffset = 165C - Mapping = - D45D D45E D45F D461 D462 D463 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D46E D470 - D471 D472 FFFD FFFD FFFD FFFD FFFD FFFD - D473 D474 D475 D476 D477 D47A D47B D47D - D47E D481 D483 D484 D485 D486 D487 D48A - D48C -End of Item 031D - -Begin of Item 031E - Format 1 - srcBegin = BEA1 - srcEnd = BEFE - mappingOffset = 1685 - Mapping = - C434 C43C C43D C448 C464 C465 C468 C46C - C474 C475 C479 C480 C494 C49C C4B8 C4BC - C4E9 C4F0 C4F1 C4F4 C4F8 C4FA C4FF C500 - C501 C50C C510 C514 C51C C528 C529 C52C - C530 C538 C539 C53B C53D C544 C545 C548 - C549 C54A C54C C54D C54E C553 C554 C555 - C557 C558 C559 C55D C55E C560 C561 C564 - C568 C570 C571 C573 C574 C575 C57C C57D - C580 C584 C587 C58C C58D C58F C591 C595 - C597 C598 C59C C5A0 C5A9 C5B4 C5B5 C5B8 - C5B9 C5BB C5BC C5BD C5BE FFFD FFFD FFFD - FFFD FFFD FFFD FFFD C5CC C5CE -End of Item 031E - -Begin of Item 031F - Format 1 - srcBegin = BF74 - srcEnd = BF7A - mappingOffset = 16E3 - Mapping = - D4CD D4CE D4CF D4D1 D4D2 D4D3 D4D5 -End of Item 031F - -Begin of Item 0320 - Format 1 - srcBegin = BF87 - srcEnd = BFFE - mappingOffset = 16EA - Mapping = - D4DD D4DE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D4E9 D4EA D4EB D4ED D4EE D4EF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D4F9 - D4FA D4FC C5D0 C5D1 C5D4 C5D8 C5E0 C5E1 - C5E3 C5E5 C5EC C5ED C5EE C5F0 C5F4 C5F6 - C5F7 FFFD FFFD FFFD FFFD FFFD FFFD C605 - C606 C607 C608 C60C C610 C618 C619 C61B - C61C C624 C625 C628 C62C C62D C62E C630 - C633 C634 C635 C637 C639 C63B C640 C641 - C644 C648 C650 C651 C653 C654 C655 C65C - C65D C660 C66C C66F C671 C678 C679 C67C - C680 C688 C689 C68B C68D C694 C695 C698 - C69C C6A4 C6A5 C6A7 C6A9 C6B0 C6B1 C6B4 - C6B8 C6B9 C6BA C6C0 C6C1 C6C3 C6C5 C6CC - C6CD C6D0 C6D4 C6DC C6DD C6E0 C6E1 C6E8 -End of Item 0320 - -Begin of Item 0321 - Format 1 - srcBegin = C047 - srcEnd = C054 - mappingOffset = 1762 - Mapping = - D505 D506 D507 D509 D50A D50B FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D516 -End of Item 0321 - -Begin of Item 0322 - Format 1 - srcBegin = C081 - srcEnd = C0FE - mappingOffset = 1770 - Mapping = - D538 D539 D53A D53B D53E D53F D541 D542 - D543 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - D54E D550 FFFD FFFD FFFD FFFD FFFD FFFD - D55A D55B D55D D55E D55F D561 D562 D563 - C6E9 C6EC C6F0 C6F8 C6F9 C6FD C704 C705 - C708 C70C C714 C715 C717 C719 C720 C721 - C724 C728 C730 C731 C733 C735 C737 C73C - C73D C740 C744 C74A C74C C74D C74F FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD C75C - C760 C768 C76B C774 C775 C778 C77C C77D - C77E C783 C784 C785 C787 C788 C789 C78A - C78E C790 C791 C794 C796 C797 C798 C79A - C7A0 C7A1 C7A3 C7A4 C7A5 C7A6 C7AC C7AD - C7B0 C7B4 C7BC C7BD C7BF C7C0 C7C1 C7C8 - C7C9 C7CC C7CE C7D0 C7D8 C7DD C7E4 C7E8 - C7EC C800 C801 C804 C808 C80A -End of Item 0322 - -Begin of Item 0323 - Format 1 - srcBegin = C141 - srcEnd = C164 - mappingOffset = 17EE - Mapping = - D564 D566 D567 D56A D56C FFFD FFFD FFFD - FFFD FFFD FFFD D576 D577 D579 D57A D57B - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D586 - D58A D58B FFFD FFFD FFFD FFFD FFFD FFFD - D58C D58D D58E D58F -End of Item 0323 - -Begin of Item 0324 - Format 1 - srcBegin = C179 - srcEnd = C17A - mappingOffset = 1812 - Mapping = - D5A6 D5A7 -End of Item 0324 - -Begin of Item 0325 - Format 1 - srcBegin = C1A1 - srcEnd = C1FE - mappingOffset = 1814 - Mapping = - C810 C811 C813 C815 C816 C81C C81D C820 - C824 C82C C82D C82F C831 C838 C83C C840 - C848 C849 C84C C84D C854 C870 C871 C874 - C878 C87A C880 C881 C883 C885 C886 C887 - C88B C88C C88D C894 C89D C89F C8A1 C8A8 - C8BC C8BD C8C4 C8C8 C8CC C8D4 C8D5 C8D7 - C8D9 C8E0 C8E1 C8E4 C8F5 C8FC C8FD C900 - C904 C905 C906 C90C C90D C90F C911 C918 - C92C C934 C950 C951 C954 C958 C960 C961 - C963 C96C C970 C974 C97C C988 C989 C98C - C990 C998 C999 C99B C99D C9C0 C9C1 C9C4 - C9C7 C9C8 C9CA C9D0 C9D1 C9D3 -End of Item 0325 - -Begin of Item 0326 - Format 1 - srcBegin = C241 - srcEnd = C27A - mappingOffset = 1872 - Mapping = - D5CA D5CB D5CD D5CE D5CF D5D1 D5D3 D5D4 - D5D5 D5D6 D5D7 D5DA D5DC FFFD FFFD FFFD - FFFD FFFD FFFD D5E6 D5E7 D5E9 D5EA D5EB - D5ED D5EE FFFD FFFD FFFD FFFD FFFD FFFD - D5EF D5F0 D5F1 D5F2 D5F3 D5F6 D5F8 FFFD - FFFD FFFD FFFD FFFD FFFD D602 D603 D605 - D606 D607 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D612 -End of Item 0326 - -Begin of Item 0327 - Format 1 - srcBegin = C287 - srcEnd = C28C - mappingOffset = 18AC - Mapping = - D61D D61E D61F D621 D622 D623 -End of Item 0327 - -Begin of Item 0328 - Format 1 - srcBegin = C29F - srcEnd = C2FE - mappingOffset = 18B2 - Mapping = - D63A D63B C9D5 C9D6 C9D9 C9DA C9DC C9DD - C9E0 C9E2 C9E4 C9E7 C9EC C9ED C9EF C9F0 - C9F1 C9F8 C9F9 C9FC CA00 CA08 CA09 CA0B - CA0C CA0D CA14 CA18 CA29 CA4C CA4D CA50 - CA54 CA5C CA5D CA5F CA60 CA61 CA68 CA7D - CA84 CA98 CABC CABD CAC0 CAC4 CACC CACD - CACF CAD1 CAD3 CAD8 CAD9 CAE0 CAEC CAF4 - CB08 CB10 CB14 CB18 CB20 CB21 CB41 CB48 - CB49 CB4C CB50 CB58 CB59 CB5D CB64 CB78 - CB79 CB9C CBB8 CBD4 CBE4 CBE7 CBE9 CC0C - CC0D CC10 CC14 CC1C CC1D CC21 CC22 CC27 - CC28 CC29 CC2C CC2E CC30 CC38 CC39 CC3B -End of Item 0328 - -Begin of Item 0329 - Format 1 - srcBegin = C341 - srcEnd = C36E - mappingOffset = 1912 - Mapping = - D63D D63E D63F D641 D642 D643 D644 D646 - D647 D64A D64C D64E D64F D650 D652 D653 - D656 D657 D659 D65A D65B D65D D65E D65F - D660 D661 FFFD FFFD FFFD FFFD FFFD FFFD - D662 D663 D664 D665 D666 D668 FFFD FFFD - FFFD FFFD FFFD FFFD D672 D673 -End of Item 0329 - -Begin of Item 032A - Format 1 - srcBegin = C381 - srcEnd = C3FE - mappingOffset = 1940 - Mapping = - D681 D682 D684 FFFD FFFD FFFD FFFD FFFD - FFFD D68E D68F D691 D692 D693 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD D69E D6A0 - FFFD FFFD FFFD FFFD FFFD FFFD D6A9 D6AA - CC3C CC3D CC3E CC44 CC45 CC48 CC4C CC54 - CC55 CC57 CC58 CC59 CC60 CC64 CC66 CC68 - CC70 CC75 CC98 CC99 CC9C CCA0 CCA8 CCA9 - CCAB CCAC CCAD CCB4 CCB5 CCB8 CCBC CCC4 - CCC5 CCC7 CCC9 CCD0 CCD4 CCE4 CCEC CCF0 - CD01 CD08 CD09 CD0C CD10 CD18 CD19 CD1B - CD1D CD24 CD28 CD2C CD39 CD5C CD60 CD64 - CD6C CD6D CD6F CD71 CD78 CD88 CD94 CD95 - CD98 CD9C CDA4 CDA5 CDA7 CDA9 CDB0 CDC4 - CDCC CDD0 CDE8 CDEC CDF0 CDF8 CDF9 CDFB - CDFD CE04 CE08 CE0C CE14 CE19 CE20 CE21 - CE24 CE28 CE30 CE31 CE33 CE35 -End of Item 032A - -Begin of Item 032B - Format 1 - srcBegin = C441 - srcEnd = C491 - mappingOffset = 19BE - Mapping = - D6AB D6AD D6AE D6AF FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD D6BA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D6C6 D6C7 D6C9 - D6CA D6CB FFFD FFFD FFFD FFFD FFFD FFFD - D6CD D6CE D6CF D6D0 D6D2 D6D3 D6D5 D6D6 - D6D8 FFFD FFFD FFFD FFFD FFFD FFFD D6E1 - D6E2 D6E3 D6E5 D6E6 D6E7 D6E9 D6EA D6EB - D6EC D6ED FFFD FFFD FFFD FFFD FFFD FFFD - D6EE D6EF D6F1 D6F2 D6F3 D6F4 FFFD FFFD - FFFD FFFD FFFD FFFD D6FE D6FF D701 D702 - D703 -End of Item 032B - -Begin of Item 032C - Format 1 - srcBegin = C49E - srcEnd = C4FE - mappingOffset = 1A0F - Mapping = - D712 D713 D714 CE58 CE59 CE5C CE5F CE60 - CE61 CE68 CE69 CE6B CE6D CE74 CE75 CE78 - CE7C CE84 CE85 CE87 CE89 CE90 CE91 CE94 - CE98 CEA0 CEA1 CEA3 CEA4 CEA5 CEAC CEAD - CEC1 CEE4 CEE5 CEE8 CEEB CEEC CEF4 CEF5 - CEF7 CEF8 CEF9 CF00 CF01 CF04 CF08 CF10 - CF11 CF13 CF15 CF1C CF20 CF24 CF2C CF2D - CF2F CF30 CF31 CF38 CF54 CF55 CF58 CF5C - CF64 CF65 CF67 CF69 CF70 CF71 CF74 CF78 - CF80 CF85 CF8C CFA1 CFA8 CFB0 CFC4 CFE0 - CFE1 CFE4 CFE8 CFF0 CFF1 CFF3 CFF5 CFFC - D000 D004 D011 D018 D02D D034 D035 D038 - D03C -End of Item 032C - -Begin of Item 032D - Format 1 - srcBegin = C541 - srcEnd = C5FE - mappingOffset = 1A70 - Mapping = - D715 D716 D717 D71A D71B D71D D71E D71F - FFFD FFFD FFFD FFFD FFFD FFFD FFFD D72A - D72C FFFD FFFD FFFD FFFD FFFD FFFD D736 - D737 D739 FFFD FFFD FFFD FFFD FFFD FFFD - D73A D73B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD D745 D746 D748 FFFD FFFD FFFD FFFD - FFFD FFFD D752 D753 D755 D75A D75B D75C - D75D D75E FFFD FFFD FFFD FFFD FFFD FFFD - D75F D762 D764 D766 D767 D768 D76A D76B - D76D D76E D76F D771 D772 D773 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD D77E D77F D780 - FFFD FFFD FFFD FFFD FFFD FFFD D78A D78B - D044 D045 D047 D049 D050 D054 D058 D060 - D06C D06D D070 D074 D07C D07D D081 D0A4 - D0A5 D0A8 D0AC D0B4 D0B5 D0B7 D0B9 D0C0 - D0C1 D0C4 D0C8 D0C9 D0D0 D0D1 D0D3 D0D4 - D0D5 D0DC D0DD D0E0 D0E4 D0EC D0ED D0EF - D0F0 D0F1 D0F8 D10D D130 D131 D134 D138 - D13A D140 D141 D143 D144 D145 D14C D14D - D150 D154 D15C D15D D15F D161 D168 D16C - D17C D184 D188 D1A0 D1A1 D1A4 D1A8 D1B0 - D1B1 D1B3 D1B5 D1BA D1BC D1C0 D1D8 D1F4 - D1F8 D207 D209 D210 D22C D22D D230 D234 - D23C D23D D23F D241 D248 D25C -End of Item 032D - -Begin of Item 032E - Format 1 - srcBegin = C641 - srcEnd = C64C - mappingOffset = 1B2E - Mapping = - D78D D78E D78F FFFD FFFD FFFD FFFD FFFD - FFFD FFFD D79A D79C -End of Item 032E - -Begin of Item 032F - Format 1 - srcBegin = C6A1 - srcEnd = C6FE - mappingOffset = 1B3A - Mapping = - D264 D280 D281 D284 D288 D290 D291 D295 - D29C D2A0 D2A4 D2AC D2B1 D2B8 D2B9 D2BC - D2BF D2C0 D2C2 D2C8 D2C9 D2CB D2D4 D2D8 - D2DC D2E4 D2E5 D2F0 D2F1 D2F4 D2F8 D300 - D301 D303 D305 D30C D30D D30E D310 D314 - D316 D31C D31D D31F D320 D321 D325 D328 - D329 D32C D330 D338 D339 D33B D33C D33D - D344 D345 D37C D37D D380 D384 D38C D38D - D38F D390 D391 D398 D399 D39C D3A0 D3A8 - D3A9 D3AB D3AD D3B4 D3B8 D3BC D3C4 D3C5 - D3C8 D3C9 D3D0 D3D8 D3E1 D3E3 D3EC D3ED - D3F0 D3F4 D3FC D3FD D3FF D401 -End of Item 032F - -Begin of Item 0330 - Format 1 - srcBegin = C7A1 - srcEnd = C7FE - mappingOffset = 1B98 - Mapping = - D408 D41D D440 D444 D45C D460 D464 D46D - D46F D478 D479 D47C D47F D480 D482 D488 - D489 D48B D48D D494 D4A9 D4CC D4D0 D4D4 - D4DC D4DF D4E8 D4EC D4F0 D4F8 D4FB D4FD - D504 D508 D50C D514 D515 D517 D53C D53D - D540 D544 D54C D54D D54F D551 D558 D559 - D55C D560 D565 D568 D569 D56B D56D D574 - D575 D578 D57C D584 D585 D587 D588 D589 - D590 D5A5 D5C8 D5C9 D5CC D5D0 D5D2 D5D8 - D5D9 D5DB D5DD D5E4 D5E5 D5E8 D5EC D5F4 - D5F5 D5F7 D5F9 D600 D601 D604 D608 D610 - D611 D613 D614 D615 D61C D620 -End of Item 0330 - -Begin of Item 0331 - Format 1 - srcBegin = C8A1 - srcEnd = C8FE - mappingOffset = 1BF6 - Mapping = - D624 D62D D638 D639 D63C D640 D645 D648 - D649 D64B D64D D651 D654 D655 D658 D65C - D667 D669 D670 D671 D674 D683 D685 D68C - D68D D690 D694 D69D D69F D6A1 D6A8 D6AC - D6B0 D6B9 D6BB D6C4 D6C5 D6C8 D6CC D6D1 - D6D4 D6D7 D6D9 D6E0 D6E4 D6E8 D6F0 D6F5 - D6FC D6FD D700 D704 D711 D718 D719 D71C - D720 D728 D729 D72B D72D D734 D735 D738 - D73C D744 D747 D749 D750 D751 D754 D756 - D757 D758 D759 D760 D761 D763 D765 D769 - D76C D770 D774 D77C D77D D781 D788 D789 - D78C D790 D798 D799 D79B D79D -End of Item 0331 - -Begin of Item 0332 - Format 1 - srcBegin = CAA1 - srcEnd = CAFE - mappingOffset = 1C54 - Mapping = - 4F3D 4F73 5047 50F9 52A0 53EF 5475 54E5 - 5609 5AC1 5BB6 6687 67B6 67B7 67EF 6B4C - 73C2 75C2 7A3C 82DB 8304 8857 8888 8A36 - 8CC8 8DCF 8EFB 8FE6 99D5 523B 5374 5404 - 606A 6164 6BBC 73CF 811A 89BA 89D2 95A3 - 4F83 520A 58BE 5978 59E6 5E72 5E79 61C7 - 63C0 6746 67EC 687F 6F97 764E 770B 78F5 - 7A08 7AFF 7C21 809D 826E 8271 8AEB 9593 - 4E6B 559D 66F7 6E34 78A3 7AED 845B 8910 - 874E 97A8 52D8 574E 582A 5D4C 611F 61BE - 6221 6562 67D1 6A44 6E1B 7518 75B3 76E3 - 77B0 7D3A 90AF 9451 9452 9F95 -End of Item 0332 - -Begin of Item 0333 - Format 1 - srcBegin = CBA1 - srcEnd = CBFE - mappingOffset = 1CB2 - Mapping = - 5323 5CAC 7532 80DB 9240 9598 525B 5808 - 59DC 5CA1 5D17 5EB7 5F3A 5F4A 6177 6C5F - 757A 7586 7CE0 7D73 7DB1 7F8C 8154 8221 - 8591 8941 8B1B 92FC 964D 9C47 4ECB 4EF7 - 500B 51F1 584F 6137 613E 6168 6539 69EA - 6F11 75A5 7686 76D6 7B87 82A5 84CB F900 - 93A7 958B 5580 5BA2 5751 F901 7CB3 7FB9 - 91B5 5028 53BB 5C45 5DE8 62D2 636E 64DA - 64E7 6E20 70AC 795B 8DDD 8E1E F902 907D - 9245 92F8 4E7E 4EF6 5065 5DFE 5EFA 6106 - 6957 8171 8654 8E47 9375 9A2B 4E5E 5091 - 6770 6840 5109 528D 5292 6AA2 -End of Item 0333 - -Begin of Item 0334 - Format 1 - srcBegin = CCA1 - srcEnd = CCFE - mappingOffset = 1D10 - Mapping = - 77BC 9210 9ED4 52AB 602F 8FF2 5048 61A9 - 63ED 64CA 683C 6A84 6FC0 8188 89A1 9694 - 5805 727D 72AC 7504 7D79 7E6D 80A9 898B - 8B74 9063 9D51 6289 6C7A 6F54 7D50 7F3A - 8A23 517C 614A 7B9D 8B19 9257 938C 4EAC - 4FD3 501E 50BE 5106 52C1 52CD 537F 5770 - 5883 5E9A 5F91 6176 61AC 64CE 656C 666F - 66BB 66F4 6897 6D87 7085 70F1 749F 74A5 - 74CA 75D9 786C 78EC 7ADF 7AF6 7D45 7D93 - 8015 803F 811B 8396 8B66 8F15 9015 93E1 - 9803 9838 9A5A 9BE8 4FC2 5553 583A 5951 - 5B63 5C46 60B8 6212 6842 68B0 -End of Item 0334 - -Begin of Item 0335 - Format 1 - srcBegin = CDA1 - srcEnd = CDFE - mappingOffset = 1D6E - Mapping = - 68E8 6EAA 754C 7678 78CE 7A3D 7CFB 7E6B - 7E7C 8A08 8AA1 8C3F 968E 9DC4 53E4 53E9 - 544A 5471 56FA 59D1 5B64 5C3B 5EAB 62F7 - 6537 6545 6572 66A0 67AF 69C1 6CBD 75FC - 7690 777E 7A3F 7F94 8003 80A1 818F 82E6 - 82FD 83F0 85C1 8831 88B4 8AA5 F903 8F9C - 932E 96C7 9867 9AD8 9F13 54ED 659B 66F2 - 688F 7A40 8C37 9D60 56F0 5764 5D11 6606 - 68B1 68CD 6EFE 7428 889E 9BE4 6C68 F904 - 9AA8 4F9B 516C 5171 529F 5B54 5DE5 6050 - 606D 62F1 63A7 653B 73D9 7A7A 86A3 8CA2 - 978F 4E32 5BE1 6208 679C 74DC -End of Item 0335 - -Begin of Item 0336 - Format 1 - srcBegin = CEA1 - srcEnd = CEFE - mappingOffset = 1DCC - Mapping = - 79D1 83D3 8A87 8AB2 8DE8 904E 934B 9846 - 5ED3 69E8 85FF 90ED F905 51A0 5B98 5BEC - 6163 68FA 6B3E 704C 742F 74D8 7BA1 7F50 - 83C5 89C0 8CAB 95DC 9928 522E 605D 62EC - 9002 4F8A 5149 5321 58D9 5EE3 66E0 6D38 - 709A 72C2 73D6 7B50 80F1 945B 5366 639B - 7F6B 4E56 5080 584A 58DE 602A 6127 62D0 - 69D0 9B41 5B8F 7D18 80B1 8F5F 4EA4 50D1 - 54AC 55AC 5B0C 5DA0 5DE7 652A 654E 6821 - 6A4B 72E1 768E 77EF 7D5E 7FF9 81A0 854E - 86DF 8F03 8F4E 90CA 9903 9A55 9BAB 4E18 - 4E45 4E5D 4EC7 4FF1 5177 52FE -End of Item 0336 - -Begin of Item 0337 - Format 1 - srcBegin = CFA1 - srcEnd = CFFE - mappingOffset = 1E2A - Mapping = - 5340 53E3 53E5 548E 5614 5775 57A2 5BC7 - 5D87 5ED0 61FC 62D8 6551 67B8 67E9 69CB - 6B50 6BC6 6BEC 6C42 6E9D 7078 72D7 7396 - 7403 77BF 77E9 7A76 7D7F 8009 81FC 8205 - 820A 82DF 8862 8B33 8CFC 8EC0 9011 90B1 - 9264 92B6 99D2 9A45 9CE9 9DD7 9F9C 570B - 5C40 83CA 97A0 97AB 9EB4 541B 7A98 7FA4 - 88D9 8ECD 90E1 5800 5C48 6398 7A9F 5BAE - 5F13 7A79 7AAE 828E 8EAC 5026 5238 52F8 - 5377 5708 62F3 6372 6B0A 6DC3 7737 53A5 - 7357 8568 8E76 95D5 673A 6AC3 6F70 8A6D - 8ECC 994B F906 6677 6B78 8CB4 -End of Item 0337 - -Begin of Item 0338 - Format 1 - srcBegin = D0A1 - srcEnd = D0FE - mappingOffset = 1E88 - Mapping = - 9B3C F907 53EB 572D 594E 63C6 69FB 73EA - 7845 7ABA 7AC5 7CFE 8475 898F 8D73 9035 - 95A8 52FB 5747 7547 7B60 83CC 921E F908 - 6A58 514B 524B 5287 621F 68D8 6975 9699 - 50C5 52A4 52E4 61C3 65A4 6839 69FF 747E - 7B4B 82B9 83EB 89B2 8B39 8FD1 9949 F909 - 4ECA 5997 64D2 6611 6A8E 7434 7981 79BD - 82A9 887E 887F 895F F90A 9326 4F0B 53CA - 6025 6271 6C72 7D1A 7D66 4E98 5162 77DC - 80AF 4F01 4F0E 5176 5180 55DC 5668 573B - 57FA 57FC 5914 5947 5993 5BC4 5C90 5D0E - 5DF1 5E7E 5FCC 6280 65D7 65E3 -End of Item 0338 - -Begin of Item 0339 - Format 1 - srcBegin = D1A1 - srcEnd = D1FE - mappingOffset = 1EE6 - Mapping = - 671E 671F 675E 68CB 68C4 6A5F 6B3A 6C23 - 6C7D 6C82 6DC7 7398 7426 742A 7482 74A3 - 7578 757F 7881 78EF 7941 7947 7948 797A - 7B95 7D00 7DBA 7F88 8006 802D 808C 8A18 - 8B4F 8C48 8D77 9321 9324 98E2 9951 9A0E - 9A0F 9A65 9E92 7DCA 4F76 5409 62EE 6854 - 91D1 55AB 513A F90B F90C 5A1C 61E6 F90D - 62CF 62FF FFFD FFFD FFFD FFFD FFFD FFFD - 90A3 F914 F915 F916 F917 F918 8AFE F919 - F91A F91B F91C 6696 F91D 7156 F91E F91F - 96E3 F920 634F 637A 5357 F921 678F 6960 - 6E73 F922 7537 F923 F924 F925 -End of Item 0339 - -Begin of Item 033A - Format 1 - srcBegin = D2A1 - srcEnd = D2CC - mappingOffset = 1F44 - Mapping = - 7D0D F926 F927 8872 56CA 5A18 F928 F929 - F92A F92B F92C 4E43 F92D 5167 5948 67F0 - 8010 F92E 5973 5E74 649A 79CA 5FF5 606C - 62C8 637B 5BE7 5BD7 52AA F92F 5974 5F29 - 6012 F930 F931 F932 7459 FFFD FFFD FFFD - FFFD FFFD FFFD 99D1 -End of Item 033A - -Begin of Item 033B - Format 1 - srcBegin = D2D8 - srcEnd = D2FE - mappingOffset = 1F70 - Mapping = - 6FC3 F944 F945 81BF 8FB2 60F1 F946 F947 - 8166 F948 F949 5C3F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5AE9 8A25 677B 7D10 - FFFD FFFD FFFD FFFD FFFD FFFD 80FD F958 - F959 5C3C 6CE5 533F 6EBA 591A 8336 -End of Item 033B - -Begin of Item 033C - Format 1 - srcBegin = D3A1 - srcEnd = D3FE - mappingOffset = 1F97 - Mapping = - 4E39 4EB6 4F46 55AE 5718 58C7 5F56 65B7 - 65E6 6A80 6BB5 6E4D 77ED 7AEF 7C1E 7DDE - 86CB 8892 9132 935B 64BB 6FBE 737A 75B8 - 9054 5556 574D 61BA 64D4 66C7 6DE1 6E5B - 6F6D 6FB9 75F0 8043 81BD 8541 8983 8AC7 - 8B5A 931F 6C93 7553 7B54 8E0F 905D 5510 - 5802 5858 5E62 6207 649E 68E0 7576 7CD6 - 87B3 9EE8 4EE3 5788 576E 5927 5C0D 5CB1 - 5E36 5F85 6234 64E1 73B3 81FA 888B 8CB8 - 968A 9EDB 5B85 5FB7 60B3 5012 5200 5230 - 5716 5835 5857 5C0E 5C60 5CF6 5D8B 5EA6 - 5F92 60BC 6311 6389 6417 6843 -End of Item 033C - -Begin of Item 033D - Format 1 - srcBegin = D4A1 - srcEnd = D4FE - mappingOffset = 1FF5 - Mapping = - 68F9 6AC2 6DD8 6E21 6ED4 6FE4 71FE 76DC - 7779 79B1 7A3B 8404 89A9 8CED 8DF3 8E48 - 9003 9014 9053 90FD 934D 9676 97DC 6BD2 - 7006 7258 72A2 7368 7763 79BF 7BE4 7E9B - 8B80 58A9 60C7 6566 65FD 66BE 6C8C 711E - 71C9 8C5A 9813 4E6D 7A81 4EDD 51AC 51CD - 52D5 540C 61A7 6771 6850 68DF 6D1E 6F7C - 75BC 77B3 7AE5 80F4 8463 9285 515C 6597 - 675C 6793 75D8 7AC7 8373 F95A 8C46 9017 - 982D 5C6F 81C0 829A 9041 906F 920D 5F97 - 5D9D 6A59 71C8 767B 7B49 85E4 8B04 9127 - 9A30 5587 61F6 F95B 7669 7F85 -End of Item 033D - -Begin of Item 033E - Format 1 - srcBegin = D5A1 - srcEnd = D5FE - mappingOffset = 2053 - Mapping = - 863F 87BA 88F8 908F F95C 6D1B 70D9 73DE - 7D61 843D F95D 916A 99F1 F95E 4E82 5375 - 6B04 6B12 703E 721B 862D 9E1E 524C 8FA3 - 5D50 64E5 652C 6B16 6FEB 7C43 7E9C 85CD - 8964 89BD 62C9 81D8 881F 5ECA 6717 6D6A - 72FC 7405 746F 8782 90DE 4F86 5D0D 5FA0 - 840A 51B7 63A0 7565 4EAE 5006 5169 51C9 - 6881 6A11 7CAE 7CB1 7CE7 826F 8AD2 8F1B - 91CF 4FB6 5137 52F5 5442 5EEC 616E 623E - 65C5 6ADA 6FFE 792A 85DC 8823 95AD 9A62 - 9A6A 9E97 9ECE 529B 66C6 6B77 701D 792B - 8F62 9742 6190 6200 6523 6F23 -End of Item 033E - -Begin of Item 033F - Format 1 - srcBegin = D6A1 - srcEnd = D6FE - mappingOffset = 20B1 - Mapping = - 7149 7489 7DF4 806F 84EE 8F26 9023 934A - 51BD 5217 52A3 6D0C 70C8 88C2 5EC9 6582 - 6BAE 6FC2 7C3E 7375 4EE4 4F36 56F9 F95F - 5CBA 5DBA 601C 73B2 7B2D 7F9A 7FCE 8046 - 901E 9234 96F6 9748 9818 9F61 4F8B 6FA7 - 79AE 91B4 96B7 52DE F960 6488 64C4 6AD3 - 6F5E 7018 7210 76E7 8001 8606 865C 8DEF - 8F05 9732 9B6F 9DFA 9E75 788C 797F 7DA0 - 83C9 9304 9E7F 9E93 8AD6 58DF 5F04 6727 - 7027 74CF 7C60 807E 5121 7028 7262 78CA - 8CC2 8CDA 8CF4 96F7 4E86 50DA 5BEE 5ED6 - 6599 71CE 7642 77AD 804A 84FC -End of Item 033F - -Begin of Item 0340 - Format 1 - srcBegin = D7A1 - srcEnd = D7FE - mappingOffset = 210F - Mapping = - 907C 9B27 9F8D 58D8 5A41 5C62 6A13 6DDA - 6F0F 763B 7D2F 7E37 851E 8938 93E4 964B - 5289 65D2 67F3 69B4 6D41 6E9C 700F 7409 - 7460 7559 7624 786B 8B2C 985E 516D 622E - 9678 4F96 502B 5D19 6DEA 7DB8 8F2A 5F8B - 6144 6817 F961 9686 52D2 808B 51DC 51CC - 695E 7A1C 7DBE 83F1 9675 4FDA 5229 5398 - 540F 550E 5C65 60A7 674E 68A8 6D6C 7281 - 72F8 7406 7483 F962 75E2 7C6C 7F79 7FB8 - 8389 88CF 88E1 91CC 91D0 96E2 9BC9 541D - 6F7E 71D0 7498 85FA 8EAA 96A3 9C57 9E9F - 6797 6DCB 7433 81E8 9716 782C -End of Item 0340 - -Begin of Item 0341 - Format 1 - srcBegin = D8A1 - srcEnd = D8FE - mappingOffset = 216D - Mapping = - 7ACB 7B20 7C92 6469 746A 75F2 78BC 78E8 - 99AC 9B54 9EBB 5BDE 5E55 6F20 819C 83AB - 9088 4E07 534D 5A29 5DD2 5F4E 6162 633D - 6669 66FC 6EFF 6F2B 7063 779E 842C 8513 - 883B 8F13 9945 9C3B 551C 62B9 672B 6CAB - 8309 896A 977A 4EA1 5984 5FD8 5FD9 671B - 7DB2 7F54 8292 832B 83BD 8F1E 9099 57CB - 59B9 5A92 5BD0 6627 679A 6885 6BCF 7164 - 7F75 8CB7 8CE3 9081 9B45 8108 8C8A 964C - 9A40 9EA5 5B5F 6C13 731B 76F2 76DF 840C - 51AA 8993 514D 5195 52C9 68C9 6C94 7704 - 7720 7DBF 7DEC 9762 9EB5 6EC5 -End of Item 0341 - -Begin of Item 0342 - Format 1 - srcBegin = D9A1 - srcEnd = D9FE - mappingOffset = 21CB - Mapping = - 8511 51A5 540D 547D 660E 669D 6927 6E9F - 76BF 7791 8317 84C2 879F 9169 9298 9CF4 - 8882 4FAE 5192 52DF 59C6 5E3D 6155 6478 - 6479 66AE 67D0 6A21 6BCD 6BDB 725F 7261 - 7441 7738 77DB 8017 82BC 8305 8B00 8B28 - 8C8C 6728 6C90 7267 76EE 7766 7A46 9DA9 - 6B7F 6C92 5922 6726 8499 536F 5893 5999 - 5EDF 63CF 6634 6773 6E3A 732B 7AD7 82D7 - 9328 52D9 5DEB 61AE 61CB 620A 62C7 64AB - 65E0 6959 6B66 6BCB 7121 73F7 755D 7E46 - 821E 8302 856A 8AA3 8CBF 9727 9D61 58A8 - 9ED8 5011 520E 543B 554F 6587 -End of Item 0342 - -Begin of Item 0343 - Format 1 - srcBegin = DAA1 - srcEnd = DAFE - mappingOffset = 2229 - Mapping = - 6C76 7D0A 7D0B 805E 868A 9580 96EF 52FF - 6C95 7269 5473 5A9A 5C3E 5D4B 5F4C 5FAE - 672A 68B6 6963 6E3C 6E44 7709 7C73 7F8E - 8587 8B0E 8FF7 9761 9EF4 5CB7 60B6 610D - 61AB 654F 65FB 65FC 6C11 6CEF 739F 73C9 - 7DE1 9594 5BC6 871C 8B10 525D 535A 62CD - 640F 64B2 6734 6A38 6CCA 73C0 749E 7B94 - 7C95 7E1B 818A 8236 8584 8FEB 96F9 99C1 - 4F34 534A 53CD 53DB 62CC 642C 6500 6591 - 69C3 6CEE 6F58 73ED 7554 7622 76E4 76FC - 78D0 78FB 792C 7D46 822C 87E0 8FD4 9812 - 98EF 52C3 62D4 64A5 6E24 6F51 -End of Item 0343 - -Begin of Item 0344 - Format 1 - srcBegin = DBA1 - srcEnd = DBFE - mappingOffset = 2287 - Mapping = - 767C 8DCB 91B1 9262 9AEE 9B43 5023 508D - 574A 59A8 5C28 5E47 5F77 623F 653E 65B9 - 65C1 6609 678B 699C 6EC2 78C5 7D21 80AA - 8180 822B 82B3 84A1 868C 8A2A 8B17 90A6 - 9632 9F90 500D 4FF3 F963 57F9 5F98 62DC - 6392 676F 6E43 7119 76C3 80CC 80DA 88F4 - 88F5 8919 8CE0 8F29 914D 966A 4F2F 4F70 - 5E1B 67CF 6822 767D 767E 9B44 5E61 6A0A - 7169 71D4 756A F964 7E41 8543 85E9 98DC - 4F10 7B4F 7F70 95A5 51E1 5E06 68B5 6C3E - 6C4E 6CDB 72AF 7BC4 8303 6CD5 743A 50FB - 5288 58C1 64D8 6A97 74A7 7656 -End of Item 0344 - -Begin of Item 0345 - Format 1 - srcBegin = DCA1 - srcEnd = DCFE - mappingOffset = 22E5 - Mapping = - 78A7 8617 95E2 9739 F965 535E 5F01 8B8A - 8FA8 8FAF 908A 5225 77A5 9C49 9F08 4E19 - 5002 5175 5C5B 5E77 661E 663A 67C4 68C5 - 70B3 7501 75C5 79C9 7ADD 8F27 9920 9A08 - 4FDD 5821 5831 5BF6 666E 6B65 6D11 6E7A - 6F7D 73E4 752B 83E9 88DC 8913 8B5C 8F14 - 4F0F 50D5 5310 535C 5B93 5FA9 670D 798F - 8179 832F 8514 8907 8986 8F39 8F3B 99A5 - 9C12 672C 4E76 4FF8 5949 5C01 5CEF 5CF0 - 6367 68D2 70FD 71A2 742B 7E2B 84EC 8702 - 9022 92D2 9CF3 4E0D 4ED8 4FEF 5085 5256 - 526F 5426 5490 57E0 592B 5A66 -End of Item 0345 - -Begin of Item 0346 - Format 1 - srcBegin = DDA1 - srcEnd = DDFE - mappingOffset = 2343 - Mapping = - 5B5A 5B75 5BCC 5E9C F966 6276 6577 65A7 - 6D6E 6EA5 7236 7B26 7C3F 7F36 8150 8151 - 819A 8240 8299 83A9 8A03 8CA0 8CE6 8CFB - 8D74 8DBA 90E8 91DC 961C 9644 99D9 9CE7 - 5317 5206 5429 5674 58B3 5954 596E 5FFF - 61A4 626E 6610 6C7E 711A 76C6 7C89 7CDE - 7D1B 82AC 8CC1 96F0 F967 4F5B 5F17 5F7F - 62C2 5D29 670B 68DA 787C 7E43 9D6C 4E15 - 5099 5315 532A 5351 5983 5A62 5E87 60B2 - 618A 6249 6279 6590 6787 69A7 6BD4 6BD6 - 6BD7 6BD8 6CB8 F968 7435 75FA 7812 7891 - 79D5 79D8 7C83 7DCB 7FE1 80A5 -End of Item 0346 - -Begin of Item 0347 - Format 1 - srcBegin = DEA1 - srcEnd = DEFE - mappingOffset = 23A1 - Mapping = - 813E 81C2 83F2 871A 88E8 8AB9 8B6C 8CBB - 9119 975E 98DB 9F3B 56AC 5B2A 5F6C 658C - 6AB3 6BAF 6D5C 6FF1 7015 725D 73AD 8CA7 - 8CD3 983B 6191 6C37 8058 9A01 4E4D 4E8B - 4E9B 4ED5 4F3A 4F3C 4F7F 4FDF 50FF 53F2 - 53F8 5506 55E3 56DB 58EB 5962 5A11 5BEB - 5BFA 5C04 5DF3 5E2B 5F99 601D 6368 659C - 65AF 67F6 67FB 68AD 6B7B 6C99 6CD7 6E23 - 7009 7345 7802 793E 7940 7960 79C1 7BE9 - 7D17 7D72 8086 820D 838E 84D1 86C7 88DF - 8A50 8A5E 8B1D 8CDC 8D66 8FAD 90AA 98FC - 99DF 9E9D 524A F969 6714 F96A -End of Item 0347 - -Begin of Item 0348 - Format 1 - srcBegin = DFA1 - srcEnd = DFFE - mappingOffset = 23FF - Mapping = - 5098 522A 5C71 6563 6C55 73CA 7523 759D - 7B97 849C 9178 9730 4E77 6492 6BBA 715E - 85A9 4E09 F96B 6749 68EE 6E17 829F 8518 - 886B 63F7 6F81 9212 98AF 4E0A 50B7 50CF - 511F 5546 55AA 5617 5B40 5C19 5CE0 5E38 - 5E8A 5EA0 5EC2 60F3 6851 6A61 6E58 723D - 7240 72C0 76F8 7965 7BB1 7FD4 88F3 89F4 - 8A73 8C61 8CDE 971C 585E 74BD 8CFD 55C7 - F96C 7A61 7D22 8272 7272 751F 7525 F96D - 7B19 5885 58FB 5DBC 5E8F 5EB6 5F90 6055 - 6292 637F 654D 6691 66D9 66F8 6816 68F2 - 7280 745E 7B6E 7D6E 7DD6 7F72 -End of Item 0348 - -Begin of Item 0349 - Format 1 - srcBegin = E0A1 - srcEnd = E0FE - mappingOffset = 245D - Mapping = - 80E5 8212 85AF 897F 8A93 901D 92E4 9ECD - 9F20 5915 596D 5E2D 60DC 6614 6673 6790 - 6C50 6DC5 6F5F 77F3 78A9 84C6 91CB 932B - 4ED9 50CA 5148 5584 5B0B 5BA3 6247 657E - 65CB 6E32 717D 7401 7444 7487 74BF 766C - 79AA 7DDA 7E55 7FA8 817A 81B3 8239 861A - 87EC 8A75 8DE3 9078 9291 9425 994D 9BAE - 5368 5C51 6954 6CC4 6D29 6E2B 820C 859B - 893B 8A2D 8AAA 96EA 9F67 5261 66B9 6BB2 - 7E96 87FE 8D0D 9583 965D 651D 6D89 71EE - F96E 57CE 59D3 5BAC 6027 60FA 6210 661F - 665F 7329 73F9 76DB 7701 7B6C -End of Item 0349 - -Begin of Item 034A - Format 1 - srcBegin = E1A1 - srcEnd = E1FE - mappingOffset = 24BB - Mapping = - 8056 8072 8165 8AA0 9192 4E16 52E2 6B72 - 6D17 7A05 7B39 7D30 F96F 8CB0 53EC 562F - 5851 5BB5 5C0F 5C11 5DE2 6240 6383 6414 - 662D 68B3 6CBC 6D88 6EAF 701F 70A4 71D2 - 7526 758F 758E 7619 7B11 7BE0 7C2B 7D20 - 7D39 852C 856D 8607 8A34 900D 9061 90B5 - 92B7 97F6 9A37 4FD7 5C6C 675F 6D91 7C9F - 7E8C 8B16 8D16 901F 5B6B 5DFD 640D 84C0 - 905C 98E1 7387 5B8B 609A 677E 6DDE 8A1F - 8AA6 9001 980C 5237 F970 7051 788E 9396 - 8870 91D7 4FEE 53D7 55FD 56DA 5782 58FD - 5AC2 5B88 5CAB 5CC0 5E25 6101 -End of Item 034A - -Begin of Item 034B - Format 1 - srcBegin = E2A1 - srcEnd = E2FE - mappingOffset = 2519 - Mapping = - 620D 624B 6388 641C 6536 6578 6A39 6B8A - 6C34 6D19 6F31 71E7 72E9 7378 7407 74B2 - 7626 7761 79C0 7A57 7AEA 7CB9 7D8F 7DAC - 7E61 7F9E 8129 8331 8490 84DA 85EA 8896 - 8AB0 8B90 8F38 9042 9083 916C 9296 92B9 - 968B 96A7 96A8 96D6 9700 9808 9996 9AD3 - 9B1A 53D4 587E 5919 5B70 5BBF 6DD1 6F5A - 719F 7421 74B9 8085 83FD 5DE1 5F87 5FAA - 6042 65EC 6812 696F 6A53 6B89 6D35 6DF3 - 73E3 76FE 77AC 7B4D 7D14 8123 821C 8340 - 84F4 8563 8A62 8AC4 9187 931E 9806 99B4 - 620C 8853 8FF0 9265 5D07 5D27 -End of Item 034B - -Begin of Item 034C - Format 1 - srcBegin = E3A1 - srcEnd = E3FE - mappingOffset = 2577 - Mapping = - 5D69 745F 819D 8768 6FD5 62FE 7FD2 8936 - 8972 4E1E 4E58 50E7 52DD 5347 627F 6607 - 7E69 8805 965E 4F8D 5319 5636 59CB 5AA4 - 5C38 5C4E 5C4D 5E02 5F11 6043 65BD 662F - 6642 67BE 67F4 731C 77E2 793A 7FC5 8494 - 84CD 8996 8A66 8A69 8AE1 8C55 8C7A 57F4 - 5BD4 5F0F 606F 62ED 690D 6B96 6E5C 7184 - 7BD2 8755 8B58 8EFE 98DF 98FE 4F38 4F81 - 4FE1 547B 5A20 5BB8 613C 65B0 6668 71FC - 7533 795E 7D33 814E 81E3 8398 85AA 85CE - 8703 8A0A 8EAB 8F9B F971 8FC5 5931 5BA4 - 5BE6 6089 5BE9 5C0B 5FC3 6C81 -End of Item 034C - -Begin of Item 034D - Format 1 - srcBegin = E4A1 - srcEnd = E4FE - mappingOffset = 25D5 - Mapping = - F972 6DF1 700B 751A 82AF 8AF6 4EC0 5341 - F973 96D9 6C0F 4E9E 4FC4 5152 555E 5A25 - 5CE8 6211 7259 82BD 83AA 86FE 8859 8A1D - 963F 96C5 9913 9D09 9D5D 580A 5CB3 5DBD - 5E44 60E1 6115 63E1 6A02 6E25 9102 9354 - 984E 9C10 9F77 5B89 5CB8 6309 664F 6848 - 773C 96C1 978D 9854 9B9F 65A1 8B01 8ECB - 95BC 5535 5CA9 5DD6 5EB5 6697 764C 83F4 - 95C7 58D3 62BC 72CE 9D28 4EF0 592E 600F - 663B 6B83 79E7 9D26 5393 54C0 57C3 5D16 - 611B 66D6 6DAF 788D 827E 9698 9744 5384 - 627C 6396 6DB2 7E0A 814B 984D -End of Item 034D - -Begin of Item 034E - Format 1 - srcBegin = E5A1 - srcEnd = E5FE - mappingOffset = 2633 - Mapping = - 6AFB 7F4C 9DAF 9E1A 4E5F 503B 51B6 591C - 60F9 63F6 6930 723A 8036 F974 91CE 5F31 - F975 F976 7D04 82E5 846F 84BB 85E5 8E8D - F977 4F6F F978 F979 58E4 5B43 6059 63DA - 6518 656D 6698 F97A 694A 6A23 6D0B 7001 - 716C 75D2 760D 79B3 7A70 F97B 7F8A F97C - 8944 F97D 8B93 91C0 967D F97E 990A 5704 - 5FA1 65BC 6F01 7600 79A6 8A9E 99AD 9B5A - 9F6C 5104 61B6 6291 6A8D 81C6 5043 5830 - 5F66 7109 8A00 8AFA 5B7C 8616 4FFA 513C - 56B4 5944 63A9 6DF9 5DAA 696D 5186 4E88 - 4F59 F97F F980 F981 5982 F982 -End of Item 034E - -Begin of Item 034F - Format 1 - srcBegin = E6A1 - srcEnd = E6FE - mappingOffset = 2691 - Mapping = - F983 6B5F 6C5D F984 74B5 7916 F985 8207 - 8245 8339 8F3F 8F5D F986 9918 F987 F988 - F989 4EA6 F98A 57DF 5F79 6613 F98B F98C - 75AB 7E79 8B6F F98D 9006 9A5B 56A5 5827 - 59F8 5A1F 5BB4 F98E 5EF6 F98F F990 6350 - 633B F991 693D 6C87 6CBF 6D8E 6D93 6DF5 - 6F14 F992 70DF 7136 7159 F993 71C3 71D5 - F994 784F 786F F995 7B75 7DE3 F996 7E2F - F997 884D 8EDF F998 F999 F99A 925B F99B - 9CF6 F99C F99D F99E 6085 6D85 F99F 71B1 - F9A0 F9A1 95B1 53AD F9A2 F9A3 F9A4 67D3 - F9A5 708E 7130 7430 8276 82D2 -End of Item 034F - -Begin of Item 0350 - Format 1 - srcBegin = E7A1 - srcEnd = E7FE - mappingOffset = 26EF - Mapping = - F9A6 95BB 9AE5 9E7D 66C4 F9A7 71C1 8449 - F9A8 F9A9 584B F9AA F9AB 5DB8 5F71 F9AC - 6620 668E 6979 69AE 6C38 6CF3 6E36 6F41 - 6FDA 701B 702F 7150 71DF 7370 F9AD 745B - F9AE 74D4 76C8 7A4E 7E93 F9AF F9B0 82F1 - 8A60 8FCE F9B1 9348 F9B2 9719 F9B3 F9B4 - 4E42 502A F9B5 5208 53E1 66F3 6C6D 6FCA - 730A 777F 7A62 82AE 85DD 8602 F9B6 88D4 - 8A63 8B7D 8C6B F9B7 92B3 F9B8 9713 9810 - 4E94 4F0D 4FC9 50B2 5348 543E 5433 55DA - 5862 58BA 5967 5A1B 5BE4 609F F9B9 61CA - 6556 65FF 6664 68A7 6C5A 6FB3 -End of Item 0350 - -Begin of Item 0351 - Format 1 - srcBegin = E8A1 - srcEnd = E8FE - mappingOffset = 274D - Mapping = - 70CF 71AC 7352 7B7D 8708 8AA4 9C32 9F07 - 5C4B 6C83 7344 7389 923A 6EAB 7465 761F - 7A69 7E15 860A 5140 58C5 64C1 74EE 7515 - 7670 7FC1 9095 96CD 9954 6E26 74E6 7AA9 - 7AAA 81E5 86D9 8778 8A1B 5A49 5B8C 5B9B - 68A1 6900 6D63 73A9 7413 742C 7897 7DE9 - 7FEB 8118 8155 839E 8C4C 962E 9811 66F0 - 5F80 65FA 6789 6C6A 738B 502D 5A03 6B6A - 77EE 5916 5D6C 5DCD 7325 754F F9BA F9BB - 50E5 51F9 582F 592D 5996 59DA 5BE5 F9BC - F9BD 5DA2 62D7 6416 6493 64FE F9BE 66DC - F9BF 6A48 F9C0 71FF 7464 F9C1 -End of Item 0351 - -Begin of Item 0352 - Format 1 - srcBegin = E9A1 - srcEnd = E9FE - mappingOffset = 27AB - Mapping = - 7A88 7AAF 7E47 7E5E 8000 8170 F9C2 87EF - 8981 8B20 9059 F9C3 9080 9952 617E 6B32 - 6D74 7E1F 8925 8FB1 4FD1 50AD 5197 52C7 - 57C7 5889 5BB9 5EB8 6142 6995 6D8C 6E67 - 6EB6 7194 7462 7528 752C 8073 8338 84C9 - 8E0A 9394 93DE F9C4 4E8E 4F51 5076 512A - 53C8 53CB 53F3 5B87 5BD3 5C24 611A 6182 - 65F4 725B 7397 7440 76C2 7950 7991 79B9 - 7D06 7FBD 828B 85D5 865E 8FC2 9047 90F5 - 91EA 9685 96E8 96E9 52D6 5F67 65ED 6631 - 682F 715C 7A36 90C1 980A 4E91 F9C5 6A52 - 6B9E 6F90 7189 8018 82B8 8553 -End of Item 0352 - -Begin of Item 0353 - Format 1 - srcBegin = EAA1 - srcEnd = EAFE - mappingOffset = 2809 - Mapping = - 904B 9695 96F2 97FB 851A 9B31 4E90 718A - 96C4 5143 539F 54E1 5713 5712 57A3 5A9B - 5AC4 5BC3 6028 613F 63F4 6C85 6D39 6E72 - 6E90 7230 733F 7457 82D1 8881 8F45 9060 - F9C6 9662 9858 9D1B 6708 8D8A 925E 4F4D - 5049 50DE 5371 570D 59D4 5A01 5C09 6170 - 6690 6E2D 7232 744B 7DEF 80C3 840E 8466 - 853F 875F 885B 8918 8B02 9055 97CB 9B4F - 4E73 4F91 5112 516A F9C7 552F 55A9 5B7A - 5BA5 5E7C 5E7D 5EBE 60A0 60DF 6108 6109 - 63C4 6538 6709 F9C8 67D4 67DA F9C9 6961 - 6962 6CB9 6D27 F9CA 6E38 F9CB -End of Item 0353 - -Begin of Item 0354 - Format 1 - srcBegin = EBA1 - srcEnd = EBFE - mappingOffset = 2867 - Mapping = - 6FE1 7336 7337 F9CC 745C 7531 F9CD 7652 - F9CE F9CF 7DAD 81FE 8438 88D5 8A98 8ADB - 8AED 8E30 8E42 904A 903E 907A 9149 91C9 - 936E F9D0 F9D1 5809 F9D2 6BD3 8089 80B2 - F9D3 F9D4 5141 596B 5C39 F9D5 F9D6 6F64 - 73A7 80E4 8D07 F9D7 9217 958F F9D8 F9D9 - F9DA F9DB 807F 620E 701C 7D68 878D F9DC - 57A0 6069 6147 6BB7 8ABE 9280 96B1 4E59 - 541F 6DEB 852D 9670 97F3 98EE 63D6 6CE3 - 9091 51DD 61C9 81BA 9DF9 4F9D 501A 5100 - 5B9C 610F 61FF 64EC 6905 6BC5 7591 77E3 - 7FA9 8264 858F 87FB 8863 8ABC -End of Item 0354 - -Begin of Item 0355 - Format 1 - srcBegin = ECA1 - srcEnd = ECFE - mappingOffset = 28C5 - Mapping = - 8B70 91AB 4E8C 4EE5 4F0A F9DD F9DE 5937 - 59E8 F9DF 5DF2 5F1B 5F5B 6021 F9E0 F9E1 - F9E2 F9E3 723E 73E5 F9E4 7570 75CD F9E5 - 79FB F9E6 800C 8033 8084 82E1 8351 F9E7 - F9E8 8CBD 8CB3 9087 F9E9 F9EA 98F4 990C - F9EB F9EC 7037 76CA 7FCA 7FCC 7FFC 8B1A - 4EBA 4EC1 5203 5370 F9ED 54BD 56E0 59FB - 5BC5 5F15 5FCD 6E6E F9EE F9EF 7D6A 8335 - F9F0 8693 8A8D F9F1 976D 9777 F9F2 F9F3 - 4E00 4F5A 4F7E 58F9 65E5 6EA2 9038 93B0 - 99B9 4EFB 58EC 598A 59D9 6041 F9F4 F9F5 - 7A14 F9F6 834F 8CC3 5165 5344 -End of Item 0355 - -Begin of Item 0356 - Format 1 - srcBegin = EDA1 - srcEnd = EDFE - mappingOffset = 2923 - Mapping = - F9F7 F9F8 F9F9 4ECD 5269 5B55 82BF 4ED4 - 523A 54A8 59C9 59FF 5B50 5B57 5B5C 6063 - 6148 6ECB 7099 716E 7386 74F7 75B5 78C1 - 7D2B 8005 81EA 8328 8517 85C9 8AEE 8CC7 - 96CC 4F5C 52FA 56BC 65AB 6628 707C 70B8 - 7235 7DBD 828D 914C 96C0 9D72 5B71 68E7 - 6B98 6F7A 76DE 5C91 66AB 6F5B 7BB4 7C2A - 8836 96DC 4E08 4ED7 5320 5834 58BB 58EF - 596C 5C07 5E33 5E84 5F35 638C 66B2 6756 - 6A1F 6AA3 6B0C 6F3F 7246 F9FA 7350 748B - 7AE0 7CA7 8178 81DF 81E7 838A 846C 8523 - 8594 85CF 88DD 8D13 91AC 9577 -End of Item 0356 - -Begin of Item 0357 - Format 1 - srcBegin = EEA1 - srcEnd = EEFE - mappingOffset = 2981 - Mapping = - 969C 518D 54C9 5728 5BB0 624D 6750 683D - 6893 6E3D 6ED3 707D 7E21 88C1 8CA1 8F09 - 9F4B 9F4E 722D 7B8F 8ACD 931A 4F47 4F4E - 5132 5480 59D0 5E95 62B5 6775 696E 6A17 - 6CAE 6E1A 72D9 732A 75BD 7BB8 7D35 82E7 - 83F9 8457 85F7 8A5B 8CAF 8E87 9019 90B8 - 96CE 9F5F 52E3 540A 5AE1 5BC2 6458 6575 - 6EF4 72C4 F9FB 7684 7A4D 7B1B 7C4D 7E3E - 7FDF 837B 8B2B 8CCA 8D64 8DE1 8E5F 8FEA - 8FF9 9069 93D1 4F43 4F7A 50B3 5168 5178 - 524D 526A 5861 587C 5960 5C08 5C55 5EDB - 609B 6230 6813 6BBF 6C08 6FB1 -End of Item 0357 - -Begin of Item 0358 - Format 1 - srcBegin = EFA1 - srcEnd = EFFE - mappingOffset = 29DF - Mapping = - 714E 7420 7530 7538 7551 7672 7B4C 7B8B - 7BAD 7BC6 7E8F 8A6E 8F3E 8F49 923F 9293 - 9322 942B 96FB 985A 986B 991E 5207 622A - 6298 6D59 7664 7ACA 7BC0 7D76 5360 5CBE - 5E97 6F38 70B9 7C98 9711 9B8E 9EDE 63A5 - 647A 8776 4E01 4E95 4EAD 505C 5075 5448 - 59C3 5B9A 5E40 5EAD 5EF7 5F81 60C5 633A - 653F 6574 65CC 6676 6678 67FE 6968 6A89 - 6B63 6C40 6DC0 6DE8 6E1F 6E5E 701E 70A1 - 738E 73FD 753A 775B 7887 798E 7A0B 7A7D - 7CBE 7D8E 8247 8A02 8AEA 8C9E 912D 914A - 91D8 9266 92CC 9320 9706 9756 -End of Item 0358 - -Begin of Item 0359 - Format 1 - srcBegin = F0A1 - srcEnd = F0FE - mappingOffset = 2A3D - Mapping = - 975C 9802 9F0E 5236 5291 557C 5824 5E1D - 5F1F 608C 63D0 68AF 6FDF 796D 7B2C 81CD - 85BA 88FD 8AF8 8E44 918D 9664 969B 973D - 984C 9F4A 4FCE 5146 51CB 52A9 5632 5F14 - 5F6B 63AA 64CD 65E9 6641 66FA 66F9 671D - 689D 68D7 69FD 6F15 6F6E 7167 71E5 722A - 74AA 773A 7956 795A 79DF 7A20 7A95 7C97 - 7CDF 7D44 7E70 8087 85FB 86A4 8A54 8ABF - 8D99 8E81 9020 906D 91E3 963B 96D5 9CE5 - 65CF 7C07 8DB3 93C3 5B58 5C0A 5352 62D9 - 731D 5027 5B97 5F9E 60B0 616B 68D5 6DD9 - 742E 7A2E 7D42 7D9C 7E31 816B -End of Item 0359 - -Begin of Item 035A - Format 1 - srcBegin = F1A1 - srcEnd = F1FE - mappingOffset = 2A9B - Mapping = - 8E2A 8E35 937E 9418 4F50 5750 5DE6 5EA7 - 632B 7F6A 4E3B 4F4F 4F8F 505A 59DD 80C4 - 546A 5468 55FE 594F 5B99 5DDE 5EDA 665D - 6731 67F1 682A 6CE8 6D32 6E4A 6F8D 70B7 - 73E0 7587 7C4C 7D02 7D2C 7DA2 821F 86DB - 8A3B 8A85 8D70 8E8A 8F33 9031 914E 9152 - 9444 99D0 7AF9 7CA5 4FCA 5101 51C6 57C8 - 5BEF 5CFB 6659 6A3D 6D5A 6E96 6FEC 710C - 756F 7AE3 8822 9021 9075 96CB 99FF 8301 - 4E2D 4EF2 8846 91CD 537D 6ADB 696B 6C41 - 847A 589E 618E 66FE 62EF 70DD 7511 75C7 - 7E52 84B8 8B49 8D08 4E4B 53EA -End of Item 035A - -Begin of Item 035B - Format 1 - srcBegin = F2A1 - srcEnd = F2FE - mappingOffset = 2AF9 - Mapping = - 54AB 5730 5740 5FD7 6301 6307 646F 652F - 65E8 667A 679D 67B3 6B62 6C60 6C9A 6F2C - 77E5 7825 7949 7957 7D19 80A2 8102 81F3 - 829D 82B7 8718 8A8C F9FC 8D04 8DBE 9072 - 76F4 7A19 7A37 7E54 8077 5507 55D4 5875 - 632F 6422 6649 664B 686D 699B 6B84 6D25 - 6EB1 73CD 7468 74A1 755B 75B9 76E1 771E - 778B 79E6 7E09 7E1D 81FB 852F 8897 8A3A - 8CD1 8EEB 8FB0 9032 93AD 9663 9673 9707 - 4F84 53F1 59EA 5AC9 5E19 684E 74C6 75BE - 79E9 7A92 81A3 86ED 8CEA 8DCC 8FED 659F - 6715 F9FD 57F7 6F57 7DDD 8F2F -End of Item 035B - -Begin of Item 035C - Format 1 - srcBegin = F3A1 - srcEnd = F3FE - mappingOffset = 2B57 - Mapping = - 93F6 96C6 5FB5 61F2 6F84 4E14 4F98 501F - 53C9 55DF 5D6F 5DEE 6B21 6B64 78CB 7B9A - F9FE 8E49 8ECA 906E 6349 643E 7740 7A84 - 932F 947F 9F6A 64B0 6FAF 71E6 74A8 74DA - 7AC4 7C12 7E82 7CB2 7E98 8B9A 8D0A 947D - 9910 994C 5239 5BDF 64E6 672D 7D2E 50ED - 53C3 5879 6158 6159 61FA 65AC 7AD9 8B92 - 8B96 5009 5021 5275 5531 5A3C 5EE0 5F70 - 6134 655E 660C 6636 66A2 69CD 6EC4 6F32 - 7316 7621 7A93 8139 8259 83D6 84BC 50B5 - 57F0 5BC0 5BE8 5F69 63A1 7826 7DB5 83DC - 8521 91C7 91F5 518A 67F5 7B56 -End of Item 035C - -Begin of Item 035D - Format 1 - srcBegin = F4A1 - srcEnd = F4FE - mappingOffset = 2BB5 - Mapping = - 8CAC 51C4 59BB 60BD 8655 501C F9FF 5254 - 5C3A 617D 621A 62D3 64F2 65A5 6ECC 7620 - 810A 8E60 965F 96BB 4EDF 5343 5598 5929 - 5DDD 64C5 6CC9 6DFA 7394 7A7F 821B 85A6 - 8CE4 8E10 9077 91E7 95E1 9621 97C6 51F8 - 54F2 5586 5FB9 64A4 6F88 7DB4 8F1F 8F4D - 9435 50C9 5C16 6CBE 6DFB 751B 77BB 7C3D - 7C64 8A79 8AC2 581E 59BE 5E16 6377 7252 - 758A 776B 8ADC 8CBC 8F12 5EF3 6674 6DF8 - 807D 83C1 8ACB 9751 9BD6 FA00 5243 66FF - 6D95 6EEF 7DE0 8AE6 902E 905E 9AD4 521D - 527F 54E8 6194 6284 62DB 68A2 -End of Item 035D - -Begin of Item 035E - Format 1 - srcBegin = F5A1 - srcEnd = F5FE - mappingOffset = 2C13 - Mapping = - 6912 695A 6A35 7092 7126 785D 7901 790E - 79D2 7A0D 8096 8278 82D5 8349 8549 8C82 - 8D85 9162 918B 91AE 4FC3 56D1 71ED 77D7 - 8700 89F8 5BF8 5FD6 6751 90A8 53E2 585A - 5BF5 60A4 6181 6460 7E3D 8070 8525 9283 - 64AE 50AC 5D14 6700 589C 62BD 63A8 690E - 6978 6A1E 6E6B 76BA 79CB 82BB 8429 8ACF - 8DA8 8FFD 9112 914B 919C 9310 9318 939A - 96DB 9A36 9C0D 4E11 755C 795D 7AFA 7B51 - 7BC9 7E2E 84C4 8E59 8E74 8EF8 9010 6625 - 693F 7443 51FA 672E 9EDC 5145 5FE0 6C96 - 87F2 885D 8877 60B4 81B5 8403 -End of Item 035E - -Begin of Item 035F - Format 1 - srcBegin = F6A1 - srcEnd = F6FE - mappingOffset = 2C71 - Mapping = - 8D05 53D6 5439 5634 5A36 5C31 708A 7FE0 - 805A 8106 81ED 8DA3 9189 9A5F 9DF2 5074 - 4EC4 53A0 60FB 6E2C 5C64 4F88 5024 55E4 - 5CD9 5E5F 6065 6894 6CBB 6DC4 71BE 75D4 - 75F4 7661 7A1A 7A49 7DC7 7DFB 7F6E 81F4 - 86A9 8F1C 96C9 99B3 9F52 5247 52C5 98ED - 89AA 4E03 67D2 6F06 4FB5 5BE2 6795 6C88 - 6D78 741B 7827 91DD 937C 87C4 79E4 7A31 - 5FEB 4ED6 54A4 553E 58AE 59A5 60F0 6253 - 62D6 6736 6955 8235 9640 99B1 99DD 502C - 5353 5544 577C FA01 6258 FA02 64E2 666B - 67DD 6FC1 6FEF 7422 7438 8A17 -End of Item 035F - -Begin of Item 0360 - Format 1 - srcBegin = F7A1 - srcEnd = F7FE - mappingOffset = 2CCF - Mapping = - 9438 5451 5606 5766 5F48 619A 6B4E 7058 - 70AD 7DBB 8A95 596A 812B 63A2 7708 803D - 8CAA 5854 642D 69BB 5B95 5E11 6E6F FA03 - 8569 514C 53F0 592A 6020 614B 6B86 6C70 - 6CF0 7B1E 80CE 82D4 8DC6 90B0 98B1 FA04 - 64C7 6FA4 6491 6504 514E 5410 571F 8A0E - 615F 6876 FA05 75DB 7B52 7D71 901A 5806 - 69CC 817F 892A 9000 9839 5078 5957 59AC - 6295 900F 9B2A 615D 7279 95D6 5761 5A46 - 5DF4 628A 64AD 64FA 6777 6CE2 6D3E 722C - 7436 7834 7F77 82AD 8DDB 9817 5224 5742 - 677F 7248 74E3 8CA9 8FA6 9211 -End of Item 0360 - -Begin of Item 0361 - Format 1 - srcBegin = F8A1 - srcEnd = F8FE - mappingOffset = 2D2D - Mapping = - 962A 516B 53ED 634C 4F69 5504 6096 6557 - 6C9B 6D7F 724C 72FD 7A17 8987 8C9D 5F6D - 6F8E 70F9 81A8 610E 4FBF 504F 6241 7247 - 7BC7 7DE8 7FE9 904D 97AD 9A19 8CB6 576A - 5E73 67B0 840D 8A55 5420 5B16 5E63 5EE2 - 5F0A 6583 80BA 853D 9589 965B 4F48 5305 - 530D 530F 5486 54FA 5703 5E03 6016 629B - 62B1 6355 FA06 6CE1 6D66 75B1 7832 80DE - 812F 82DE 8461 84B2 888D 8912 900B 92EA - 98FD 9B91 5E45 66B4 66DD 7011 7206 FA07 - 4FF5 527D 5F6A 6153 6753 6A19 6F02 74E2 - 7968 8868 8C79 98C7 98C4 9A43 -End of Item 0361 - -Begin of Item 0362 - Format 1 - srcBegin = F9A1 - srcEnd = F9FE - mappingOffset = 2D8B - Mapping = - 54C1 7A1F 6953 8AF7 8C4A 98A8 99AE 5F7C - 62AB 75B2 76AE 88AB 907F 9642 5339 5F3C - 5FC5 6CCC 73CC 7562 758B 7B46 82FE 999D - 4E4F 903C 4E0B 4F55 53A6 590F 5EC8 6630 - 6CB3 7455 8377 8766 8CC0 9050 971E 9C15 - 58D1 5B78 8650 8B14 9DB4 5BD2 6068 608D - 65F1 6C57 6F22 6FA3 701A 7F55 7FF0 9591 - 9592 9650 97D3 5272 8F44 51FD 542B 54B8 - 5563 558A 6ABB 6DB5 7DD8 8266 929C 9677 - 9E79 5408 54C8 76D2 86E4 95A4 95D4 965C - 4EA2 4F09 59EE 5AE6 5DF7 6052 6297 676D - 6841 6C86 6E2F 7F38 809B 822A -End of Item 0362 - -Begin of Item 0363 - Format 1 - srcBegin = FAA1 - srcEnd = FAFE - mappingOffset = 2DE9 - Mapping = - FA08 FA09 9805 4EA5 5055 54B3 5793 595A - 5B69 5BB3 61C8 6977 6D77 7023 87F9 89E3 - 8A72 8AE7 9082 99ED 9AB8 52BE 6838 5016 - 5E78 674F 8347 884C 4EAB 5411 56AE 73E6 - 9115 97FF 9909 9957 9999 5653 589F 865B - 8A31 61B2 6AF6 737B 8ED2 6B47 96AA 9A57 - 5955 7200 8D6B 9769 4FD4 5CF4 5F26 61F8 - 665B 6CEB 70AB 7384 73B9 73FE 7729 774D - 7D43 7D62 7E23 8237 8852 FA0A 8CE2 9249 - 986F 5B51 7A74 8840 9801 5ACC 4FE0 5354 - 593E 5CFD 633E 6D79 72F9 8105 8107 83A2 - 92CF 9830 4EA8 5144 5211 578B -End of Item 0363 - -Begin of Item 0364 - Format 1 - srcBegin = FBA1 - srcEnd = FBFE - mappingOffset = 2E47 - Mapping = - 5F62 6CC2 6ECE 7005 7050 70AF 7192 73E9 - 7469 834A 87A2 8861 9008 90A2 93A3 99A8 - 516E 5F57 60E0 6167 66B3 8559 8E4A 91AF - 978B 4E4E 4E92 547C 58D5 58FA 597D 5CB5 - 5F27 6236 6248 660A 6667 6BEB 6D69 6DCF - 6E56 6EF8 6F94 6FE0 6FE9 705D 72D0 7425 - 745A 74E0 7693 795C 7CCA 7E1E 80E1 82A6 - 846B 84BF 864E 865F 8774 8B77 8C6A 93AC - 9800 9865 60D1 6216 9177 5A5A 660F 6DF7 - 6E3E 743F 9B42 5FFD 60DA 7B0F 54C4 5F18 - 6C5E 6CD3 6D2A 70D8 7D05 8679 8A0C 9D3B - 5316 548C 5B05 6A3A 706B 7575 -End of Item 0364 - -Begin of Item 0365 - Format 1 - srcBegin = FCA1 - srcEnd = FCFE - mappingOffset = 2EA5 - Mapping = - 798D 79BE 82B1 83EF 8A71 8B41 8CA8 9774 - FA0B 64F4 652B 78BA 78BB 7A6B 4E38 559A - 5950 5BA6 5E7B 60A3 63DB 6B61 6665 6853 - 6E19 7165 74B0 7D08 9084 9A69 9C25 6D3B - 6ED1 733E 8C41 95CA 51F0 5E4C 5FA8 604D - 60F6 6130 614C 6643 6644 69A5 6CC1 6E5F - 6EC9 6F62 714C 749C 7687 7BC1 7C27 8352 - 8757 9051 968D 9EC3 532F 56DE 5EFB 5F8A - 6062 6094 61F7 6666 6703 6A9C 6DEE 6FAE - 7070 736A 7E6A 81BE 8334 86D4 8AA8 8CC4 - 5283 7372 5B96 6A6B 9404 54EE 5686 5B5D - 6548 6585 66C9 689F 6D8D 6DC6 -End of Item 0365 - -Begin of Item 0366 - Format 1 - srcBegin = FDA1 - srcEnd = FDFE - mappingOffset = 2F03 - Mapping = - 723B 80B4 9175 9A4D 4FAF 5019 539A 540E - 543C 5589 55C5 5E3F 5F8C 673D 7166 73DD - 9005 52DB 52F3 5864 58CE 7104 718F 71FB - 85B0 8A13 6688 85A8 55A7 6684 714A 8431 - 5349 5599 6BC1 5F59 5FBD 63EE 6689 7147 - 8AF1 8F1D 9EBE 4F11 643A 70CB 7566 8667 - 6064 8B4E 9DF8 5147 51F6 5308 6D36 80F8 - 9ED1 6615 6B23 7098 75D5 5403 5C79 7D07 - 8A16 6B20 6B3D 6B46 5438 6070 6D3D 7FD5 - 8208 50D6 51DE 559C 566B 56CD 59EC 5B09 - 5E0C 6199 6198 6231 665E 66E6 7199 71B9 - 71BA 72A7 79A7 7A00 7FB2 8A70 -End of Item 0366 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0367, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x00DE, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0B13, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0261 */ -/* Total of Format 1 : 0x00FA */ -/* Total of Format 2 : 0x000C */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x1110, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1211, 0x1121, 0x1111, 0x1111, 0x1111, 0x1112, -0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x1221, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1121, 0x1112, 0x1211, 0x1121, 0x1112, -0x1111, 0x1111, 0x1111, 0x1211, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x0111, -/*-------------------------------------------------------*/ -/* Offset=0x00DE Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x8150, 0x8156, 0xAC25, -/* 0002 */ 0x8169, 0x8172, 0xAC41, -/* 0003 */ 0x8174, 0x8179, 0xAC4E, -/* 0004 */ 0x8186, 0x8198, 0xAC5D, -/* 0005 */ 0x81AC, 0x81B2, 0xAC95, -/* 0006 */ 0x81B4, 0x81B9, 0xACA2, -/* 0007 */ 0x81BD, 0x81C3, 0xACB1, -/* 0008 */ 0x81D0, 0x81D7, 0xACCD, -/* 0009 */ 0x81D9, 0x81E0, 0xACD8, -/* 000A */ 0x824B, 0x8252, 0xAD21, -/* 000B */ 0x8255, 0x825A, 0xAD2E, -/* 000C */ 0x8266, 0x826C, 0xAD3D, -/* 000D */ 0x826F, 0x8274, 0xAD4A, -/* 000E */ 0x8281, 0x8288, 0xAD59, -/* 000F */ 0x828A, 0x8291, 0xAD64, -/* 0010 */ 0x82A6, 0x82B0, 0xAD91, -/* 0011 */ 0x82B1, 0x82B6, 0xAD9E, -/* 0012 */ 0x82B7, 0x82C8, 0xADA5, -/* 0013 */ 0x82C9, 0x82D0, 0xADB8, -/* 0014 */ 0x82D6, 0x82DC, 0xADC9, -/* 0015 */ 0x82DE, 0x82E5, 0xADD4, -/* 0016 */ 0x82EC, 0x82FE, 0xADE5, -/* 0017 */ 0x8345, 0x834A, 0xAE02, -/* 0018 */ 0x834D, 0x8352, 0xAE0E, -/* 0019 */ 0x8353, 0x835A, 0xAE15, -/* 001A */ 0x8361, 0x8373, 0xAE1D, -/* 001B */ 0x839F, 0x83A5, 0xAE71, -/* 001C */ 0x83A7, 0x83AC, 0xAE7E, -/* 001D */ 0x83AD, 0x83B2, 0xAE86, -/* 001E */ 0x83B3, 0x83E1, 0xAE8D, -/* 001F */ 0x83E6, 0x83EC, 0xAEC5, -/* 0020 */ 0x83EE, 0x83F3, 0xAED2, -/* 0021 */ 0x83F6, 0x83FE, 0xAEDD, -/* 0022 */ 0x8446, 0x844B, 0xAEEE, -/* 0023 */ 0x8452, 0x845A, 0xAEFD, -/* 0024 */ 0x8468, 0x847A, 0xAF11, -/* 0025 */ 0x8481, 0x8488, 0xAF24, -/* 0026 */ 0x848D, 0x8493, 0xAF35, -/* 0027 */ 0x849A, 0x849F, 0xAF4A, -/* 0028 */ 0x84A0, 0x84AA, 0xAF51, -/* 0029 */ 0x84AB, 0x84B0, 0xAF5E, -/* 002A */ 0x84B1, 0x84C3, 0xAF66, -/* 002B */ 0x84C4, 0x84C9, 0xAF7A, -/* 002C */ 0x84D0, 0x84D6, 0xAF89, -/* 002D */ 0x84DA, 0x84DF, 0xAF96, -/* 002E */ 0x84E0, 0x84FA, 0xAF9D, -/* 002F */ 0x8542, 0x8547, 0xAFC1, -/* 0030 */ 0x854F, 0x8555, 0xAFD5, -/* 0031 */ 0x8561, 0x8566, 0xAFE2, -/* 0032 */ 0x8567, 0x856C, 0xAFEA, -/* 0033 */ 0x8572, 0x8578, 0xAFF9, -/* 0034 */ 0x8581, 0x8587, 0xB005, -/* 0035 */ 0x858E, 0x8594, 0xB015, -/* 0036 */ 0x8595, 0x859E, 0xB01E, -/* 0037 */ 0x859F, 0x85B9, 0xB029, -/* 0038 */ 0x85C8, 0x85E5, 0xB05E, -/* 0039 */ 0x85EB, 0x85F1, 0xB085, -/* 003A */ 0x85F4, 0x85F9, 0xB092, -/* 003B */ 0x864C, 0x8652, 0xB0BD, -/* 003C */ 0x8654, 0x8659, 0xB0CA, -/* 003D */ 0x8665, 0x866B, 0xB0D9, -/* 003E */ 0x8670, 0x867A, 0xB0E6, -/* 003F */ 0x8681, 0x8697, 0xB0F1, -/* 0040 */ 0x86AC, 0x86B2, 0xB12D, -/* 0041 */ 0x86B4, 0x86B9, 0xB13A, -/* 0042 */ 0x86BF, 0x86C5, 0xB149, -/* 0043 */ 0x86D0, 0x86E6, 0xB161, -/* 0044 */ 0x8741, 0x874A, 0xB19E, -/* 0045 */ 0x874B, 0x875A, 0xB1A9, -/* 0046 */ 0x8761, 0x8773, 0xB1B9, -/* 0047 */ 0x8781, 0x8786, 0xB1D6, -/* 0048 */ 0x8788, 0x878F, 0xB1E0, -/* 0049 */ 0x8795, 0x879C, 0xB1F1, -/* 004A */ 0x879F, 0x87A4, 0xB1FE, -/* 004B */ 0x87A9, 0x87AF, 0xB20D, -/* 004C */ 0x87B2, 0x87B7, 0xB21A, -/* 004D */ 0x87B8, 0x87CA, 0xB221, -/* 004E */ 0x87CB, 0x87D1, 0xB235, -/* 004F */ 0x87D2, 0x87EC, 0xB23D, -/* 0050 */ 0x87F3, 0x87F9, 0xB261, -/* 0051 */ 0x8846, 0x884B, 0xB276, -/* 0052 */ 0x884C, 0x8852, 0xB27D, -/* 0053 */ 0x8881, 0x8890, 0xB2B8, -/* 0054 */ 0x88B2, 0x88B8, 0xB309, -/* 0055 */ 0x88BA, 0x88BF, 0xB316, -/* 0056 */ 0x88C0, 0x88F6, 0xB31D, -/* 0057 */ 0x894C, 0x8952, 0xB379, -/* 0058 */ 0x8954, 0x8959, 0xB386, -/* 0059 */ 0x8966, 0x8970, 0xB395, -/* 005A */ 0x8971, 0x8976, 0xB3A2, -/* 005B */ 0x8981, 0x8996, 0xB3AE, -/* 005C */ 0x89AC, 0x89BE, 0xB3E9, -/* 005D */ 0x89BF, 0x89D1, 0xB3FD, -/* 005E */ 0x89D2, 0x89D8, 0xB411, -/* 005F */ 0x89DF, 0x89E5, 0xB421, -/* 0060 */ 0x89E7, 0x89EE, 0xB42C, -/* 0061 */ 0x89EF, 0x89FE, 0xB435, -/* 0062 */ 0x8A41, 0x8A4B, 0xB445, -/* 0063 */ 0x8A51, 0x8A57, 0xB459, -/* 0064 */ 0x8A66, 0x8A78, 0xB46D, -/* 0065 */ 0x8A86, 0x8A99, 0xB489, -/* 0066 */ 0x8A9A, 0x8A9F, 0xB49E, -/* 0067 */ 0x8AA6, 0x8AAD, 0xB4AD, -/* 0068 */ 0x8AB0, 0x8AB5, 0xB4BA, -/* 0069 */ 0x8ABC, 0x8AC2, 0xB4C9, -/* 006A */ 0x8AC7, 0x8ACC, 0xB4D6, -/* 006B */ 0x8AD9, 0x8ADE, 0xB4F2, -/* 006C */ 0x8ADF, 0x8AF9, 0xB4F9, -/* 006D */ 0x8B41, 0x8B46, 0xB51E, -/* 006E */ 0x8B52, 0x8B58, 0xB539, -/* 006F */ 0x8B6A, 0x8B70, 0xB555, -/* 0070 */ 0x8B72, 0x8B7A, 0xB562, -/* 0071 */ 0x8B81, 0x8BB5, 0xB56B, -/* 0072 */ 0x8BCB, 0x8BD1, 0xB5C5, -/* 0073 */ 0x8BD3, 0x8BD8, 0xB5D2, -/* 0074 */ 0x8BD9, 0x8BEB, 0xB5D9, -/* 0075 */ 0x8BEC, 0x8BFE, 0xB5ED, -/* 0076 */ 0x8C41, 0x8C50, 0xB600, -/* 0077 */ 0x8C61, 0x8C67, 0xB61E, -/* 0078 */ 0x8C68, 0x8C6D, 0xB626, -/* 0079 */ 0x8C6E, 0x8C74, 0xB62D, -/* 007A */ 0x8C75, 0x8C7A, 0xB635, -/* 007B */ 0x8C81, 0x8C8D, 0xB63B, -/* 007C */ 0x8C8E, 0x8CA8, 0xB649, -/* 007D */ 0x8CAC, 0x8CDE, 0xB669, -/* 007E */ 0x8CE4, 0x8CE9, 0xB6A5, -/* 007F */ 0x8CEE, 0x8CFE, 0xB6B2, -/* 0080 */ 0x8D41, 0x8D51, 0xB6C3, -/* 0081 */ 0x8D52, 0x8D5A, 0xB6D5, -/* 0082 */ 0x8D61, 0x8D72, 0xB6DE, -/* 0083 */ 0x8D89, 0x8DAA, 0xB706, -/* 0084 */ 0x8DAF, 0x8DB5, 0xB731, -/* 0085 */ 0x8DB7, 0x8DBE, 0xB73C, -/* 0086 */ 0x8DC5, 0x8DCB, 0xB74D, -/* 0087 */ 0x8DCC, 0x8DD5, 0xB756, -/* 0088 */ 0x8DDC, 0x8DE2, 0xB769, -/* 0089 */ 0x8DE5, 0x8DEA, 0xB776, -/* 008A */ 0x8DF0, 0x8DF6, 0xB785, -/* 008B */ 0x8E42, 0x8E48, 0xB7A1, -/* 008C */ 0x8E4A, 0x8E4F, 0xB7AE, -/* 008D */ 0x8E52, 0x8E5A, 0xB7B9, -/* 008E */ 0x8E67, 0x8E7A, 0xB7CA, -/* 008F */ 0x8E81, 0x8E8E, 0xB7DE, -/* 0090 */ 0x8E94, 0x8E9A, 0xB7F5, -/* 0091 */ 0x8EA6, 0x8EAC, 0xB811, -/* 0092 */ 0x8EAF, 0x8EB4, 0xB81E, -/* 0093 */ 0x8EBA, 0x8EC0, 0xB82D, -/* 0094 */ 0x8EC2, 0x8EC7, 0xB83A, -/* 0095 */ 0x8ECB, 0x8ED6, 0xB845, -/* 0096 */ 0x8ED8, 0x8EDF, 0xB854, -/* 0097 */ 0x8EE5, 0x8EEB, 0xB865, -/* 0098 */ 0x8EEE, 0x8EF3, 0xB872, -/* 0099 */ 0x8EF7, 0x8EFE, 0xB87D, -/* 009A */ 0x8F41, 0x8F48, 0xB885, -/* 009B */ 0x8F49, 0x8F5A, 0xB88E, -/* 009C */ 0x8F61, 0x8F68, 0xB8A0, -/* 009D */ 0x8F69, 0x8F6F, 0xB8A9, -/* 009E */ 0x8F85, 0x8F8A, 0xB8C6, -/* 009F */ 0x8F91, 0x8F98, 0xB8D5, -/* 00A0 */ 0x8F9B, 0x8FA0, 0xB8E2, -/* 00A1 */ 0x8FA6, 0x8FAC, 0xB8F1, -/* 00A2 */ 0x8FAF, 0x8FB4, 0xB8FE, -/* 00A3 */ 0x8FB5, 0x8FC7, 0xB905, -/* 00A4 */ 0x8FC8, 0x8FCE, 0xB919, -/* 00A5 */ 0x8FCF, 0x8FE9, 0xB921, -/* 00A6 */ 0x8FEF, 0x8FF5, 0xB945, -/* 00A7 */ 0x8FF9, 0x8FFE, 0xB952, -/* 00A8 */ 0x9046, 0x904C, 0xB961, -/* 00A9 */ 0x904F, 0x9054, 0xB96E, -/* 00AA */ 0x9061, 0x9066, 0xB97E, -/* 00AB */ 0x906B, 0x907A, 0xB98F, -/* 00AC */ 0x9081, 0x908D, 0xB99F, -/* 00AD */ 0x9093, 0x9099, 0xB9B5, -/* 00AE */ 0x909C, 0x90A1, 0xB9C2, -/* 00AF */ 0x90B4, 0x90BA, 0xB9ED, -/* 00B0 */ 0x90C1, 0x90C6, 0xBA02, -/* 00B1 */ 0x90C7, 0x90D2, 0xBA09, -/* 00B2 */ 0x90D3, 0x90F4, 0xBA16, -/* 00B3 */ 0x914D, 0x9153, 0xBA5D, -/* 00B4 */ 0x9155, 0x915A, 0xBA6A, -/* 00B5 */ 0x9166, 0x916F, 0xBA79, -/* 00B6 */ 0x9175, 0x917A, 0xBA8D, -/* 00B7 */ 0x9181, 0x9195, 0xBA93, -/* 00B8 */ 0x91A2, 0x91A7, 0xBABE, -/* 00B9 */ 0x91AB, 0x91B9, 0xBAC9, -/* 00BA */ 0x91BA, 0x91DB, 0xBADA, -/* 00BB */ 0x91E2, 0x91E9, 0xBB05, -/* 00BC */ 0x91EC, 0x91F1, 0xBB12, -/* 00BD */ 0x91F8, 0x91FE, 0xBB21, -/* 00BE */ 0x9243, 0x924A, 0xBB2C, -/* 00BF */ 0x9265, 0x926C, 0xBB59, -/* 00C0 */ 0x926E, 0x9275, 0xBB64, -/* 00C1 */ 0x9281, 0x9296, 0xBB72, -/* 00C2 */ 0x929D, 0x92AF, 0xBB91, -/* 00C3 */ 0x92B6, 0x92BC, 0xBBAD, -/* 00C4 */ 0x92BF, 0x92C6, 0xBBB8, -/* 00C5 */ 0x92CD, 0x92D3, 0xBBC9, -/* 00C6 */ 0x92D6, 0x92F9, 0xBBD4, -/* 00C7 */ 0x9363, 0x9369, 0xBC39, -/* 00C8 */ 0x9372, 0x937A, 0xBC51, -/* 00C9 */ 0x9384, 0x93A9, 0xBC5E, -/* 00CA */ 0x93BF, 0x93C5, 0xBCA9, -/* 00CB */ 0x93C7, 0x93CC, 0xBCB6, -/* 00CC */ 0x93D2, 0x93D9, 0xBCC5, -/* 00CD */ 0x93E3, 0x93F9, 0xBCDD, -/* 00CE */ 0x9441, 0x9446, 0xBCFE, -/* 00CF */ 0x9449, 0x944E, 0xBD0A, -/* 00D0 */ 0x9452, 0x945A, 0xBD15, -/* 00D1 */ 0x9461, 0x9466, 0xBD1E, -/* 00D2 */ 0x9467, 0x946D, 0xBD25, -/* 00D3 */ 0x946E, 0x947A, 0xBD2D, -/* 00D4 */ 0x9481, 0x9486, 0xBD3A, -/* 00D5 */ 0x9487, 0x948D, 0xBD41, -/* 00D6 */ 0x9493, 0x9499, 0xBD51, -/* 00D7 */ 0x949A, 0x94A3, 0xBD5A, -/* 00D8 */ 0x94A7, 0x94BD, 0xBD69, -/* 00D9 */ 0x94CD, 0x94D3, 0xBD9D, -/* 00DA */ 0x94D4, 0x94DE, 0xBDA5, -/* 00DB */ 0x94DF, 0x94E5, 0xBDB1, -/* 00DC */ 0x94E6, 0x94FE, 0xBDB9, -/* 00DD */ 0x9548, 0x9553, 0xBDDD, -/* 00DE */ 0x9554, 0x9559, 0xBDEA, -/* 00DF */ 0x9566, 0x956C, 0xBDF9, -/* 00E0 */ 0x9570, 0x9575, 0xBE06, -/* 00E1 */ 0x9581, 0x9587, 0xBE15, -/* 00E2 */ 0x9589, 0x95AC, 0xBE20, -/* 00E3 */ 0x95D4, 0x95DA, 0xBE85, -/* 00E4 */ 0x95DC, 0x95E1, 0xBE92, -/* 00E5 */ 0x95E2, 0x95EF, 0xBE9A, -/* 00E6 */ 0x95F0, 0x95FE, 0xBEA9, -/* 00E7 */ 0x9641, 0x9658, 0xBEB8, -/* 00E8 */ 0x9663, 0x9669, 0xBED9, -/* 00E9 */ 0x966C, 0x9671, 0xBEE6, -/* 00EA */ 0x9672, 0x967A, 0xBEED, -/* 00EB */ 0x9681, 0x968B, 0xBEF6, -/* 00EC */ 0x968C, 0x9691, 0xBF02, -/* 00ED */ 0x9692, 0x969F, 0xBF0A, -/* 00EE */ 0x96A1, 0x96C2, 0xBF1E, -/* 00EF */ 0x96C8, 0x96CE, 0xBF49, -/* 00F0 */ 0x96D2, 0x96FE, 0xBF56, -/* 00F1 */ 0x9741, 0x9751, 0xBF83, -/* 00F2 */ 0x9752, 0x975A, 0xBF95, -/* 00F3 */ 0x9761, 0x9772, 0xBF9E, -/* 00F4 */ 0x9773, 0x977A, 0xBFB1, -/* 00F5 */ 0x9781, 0x978C, 0xBFB9, -/* 00F6 */ 0x978D, 0x9792, 0xBFC6, -/* 00F7 */ 0x9798, 0x979E, 0xBFD5, -/* 00F8 */ 0x97A2, 0x97FB, 0xBFE2, -/* 00F9 */ 0x9841, 0x9851, 0xC040, -/* 00FA */ 0x9852, 0x9857, 0xC052, -/* 00FB */ 0x9864, 0x986A, 0xC061, -/* 00FC */ 0x986B, 0x987A, 0xC06A, -/* 00FD */ 0x9881, 0x9896, 0xC07A, -/* 00FE */ 0x989C, 0x98A2, 0xC099, -/* 00FF */ 0x98A5, 0x98AA, 0xC0A6, -/* 0100 */ 0x98BE, 0x98C4, 0xC0D1, -/* 0101 */ 0x98C6, 0x98CB, 0xC0DE, -/* 0102 */ 0x98D1, 0x98D7, 0xC0ED, -/* 0103 */ 0x98DA, 0x98DF, 0xC0FA, -/* 0104 */ 0x98E6, 0x98EC, 0xC109, -/* 0105 */ 0x98F1, 0x98F6, 0xC116, -/* 0106 */ 0x994B, 0x9951, 0xC141, -/* 0107 */ 0x9953, 0x9958, 0xC14E, -/* 0108 */ 0x9964, 0x996A, 0xC15D, -/* 0109 */ 0x996C, 0x9971, 0xC16A, -/* 010A */ 0x9981, 0x9989, 0xC17C, -/* 010B */ 0x998A, 0x998F, 0xC186, -/* 010C */ 0x99A6, 0x99B1, 0xC1B1, -/* 010D */ 0x99B2, 0x99B7, 0xC1BE, -/* 010E */ 0x99BE, 0x99C4, 0xC1CD, -/* 010F */ 0x99C7, 0x99CD, 0xC1D9, -/* 0110 */ 0x99D4, 0x99DA, 0xC1E9, -/* 0111 */ 0x99DC, 0x99E3, 0xC1F4, -/* 0112 */ 0x99E9, 0x99EF, 0xC205, -/* 0113 */ 0x99F2, 0x99F7, 0xC212, -/* 0114 */ 0x9A4A, 0x9A5A, 0xC235, -/* 0115 */ 0x9A63, 0x9A69, 0xC249, -/* 0116 */ 0x9A6F, 0x9A75, 0xC259, -/* 0117 */ 0x9A8B, 0x9A91, 0xC275, -/* 0118 */ 0x9A94, 0x9A99, 0xC282, -/* 0119 */ 0x9A9A, 0x9A9F, 0xC28A, -/* 011A */ 0x9AA0, 0x9AA6, 0xC291, -/* 011B */ 0x9AAA, 0x9AAF, 0xC29E, -/* 011C */ 0x9AB5, 0x9ABA, 0xC2AE, -/* 011D */ 0x9ABD, 0x9ADE, 0xC2BA, -/* 011E */ 0x9AE3, 0x9AE8, 0xC2E5, -/* 011F */ 0x9AF4, 0x9AFA, 0xC301, -/* 0120 */ 0x9B49, 0x9B4F, 0xC31D, -/* 0121 */ 0x9B52, 0x9B5A, 0xC32A, -/* 0122 */ 0x9B61, 0x9B72, 0xC333, -/* 0123 */ 0x9B73, 0x9B7A, 0xC346, -/* 0124 */ 0x9B81, 0x9B9A, 0xC34E, -/* 0125 */ 0x9BA8, 0x9BAD, 0xC37E, -/* 0126 */ 0x9BB4, 0x9BE6, 0xC38D, -/* 0127 */ 0x9BE7, 0x9BFD, 0xC3C1, -/* 0128 */ 0x9C4D, 0x9C52, 0xC3EE, -/* 0129 */ 0x9C55, 0x9C5A, 0xC3F9, -/* 012A */ 0x9C61, 0x9C69, 0xC3FF, -/* 012B */ 0x9C6A, 0x9C70, 0xC409, -/* 012C */ 0x9C71, 0x9C7A, 0xC411, -/* 012D */ 0x9C81, 0x9C89, 0xC41B, -/* 012E */ 0x9C8A, 0x9C90, 0xC425, -/* 012F */ 0x9C97, 0x9C9D, 0xC435, -/* 0130 */ 0x9C9E, 0x9CA7, 0xC43E, -/* 0131 */ 0x9CA8, 0x9CC2, 0xC449, -/* 0132 */ 0x9CC8, 0x9CCE, 0xC46D, -/* 0133 */ 0x9CD2, 0x9CD7, 0xC47A, -/* 0134 */ 0x9CD8, 0x9CEA, 0xC481, -/* 0135 */ 0x9CEB, 0x9CF1, 0xC495, -/* 0136 */ 0x9CF2, 0x9CFE, 0xC49D, -/* 0137 */ 0x9D41, 0x9D4E, 0xC4AA, -/* 0138 */ 0x9D52, 0x9D5A, 0xC4BD, -/* 0139 */ 0x9D61, 0x9D7A, 0xC4C6, -/* 013A */ 0x9D81, 0x9D89, 0xC4E0, -/* 013B */ 0x9D8A, 0x9D8F, 0xC4EA, -/* 013C */ 0x9D9A, 0x9DA3, 0xC502, -/* 013D */ 0x9DAA, 0x9DB0, 0xC515, -/* 013E */ 0x9DB1, 0x9DBB, 0xC51D, -/* 013F */ 0x9DC1, 0x9DC7, 0xC531, -/* 0140 */ 0x9DCA, 0x9DCF, 0xC53E, -/* 0141 */ 0x9DE1, 0x9DE7, 0xC569, -/* 0142 */ 0x9DE9, 0x9DEE, 0xC576, -/* 0143 */ 0x9E48, 0x9E4F, 0xC5A1, -/* 0144 */ 0x9E50, 0x9E59, 0xC5AA, -/* 0145 */ 0x9E70, 0x9E76, 0xC5D9, -/* 0146 */ 0x9E97, 0x9E9D, 0xC611, -/* 0147 */ 0x9E9F, 0x9EA5, 0xC61D, -/* 0148 */ 0x9EBA, 0x9EC0, 0xC649, -/* 0149 */ 0x9EC2, 0x9EC7, 0xC656, -/* 014A */ 0x9ECA, 0x9ED4, 0xC661, -/* 014B */ 0x9ED8, 0x9EDD, 0xC672, -/* 014C */ 0x9EE3, 0x9EE9, 0xC681, -/* 014D */ 0x9EEC, 0x9EF1, 0xC68E, -/* 014E */ 0x9EF7, 0x9EFD, 0xC69D, -/* 014F */ 0x9F42, 0x9F47, 0xC6AA, -/* 0150 */ 0x9F54, 0x9F59, 0xC6C6, -/* 0151 */ 0x9F65, 0x9F6B, 0xC6D5, -/* 0152 */ 0x9F6E, 0x9F73, 0xC6E2, -/* 0153 */ 0x9F89, 0x9F8E, 0xC6FE, -/* 0154 */ 0x9F94, 0x9F9A, 0xC70D, -/* 0155 */ 0x9F9D, 0x9FA2, 0xC71A, -/* 0156 */ 0x9FA8, 0x9FAE, 0xC729, -/* 0157 */ 0x9FC9, 0x9FCF, 0xC761, -/* 0158 */ 0x9FD2, 0x9FD9, 0xC76C, -/* 0159 */ 0xA046, 0xA04B, 0xC7C2, -/* 015A */ 0xA050, 0xA056, 0xC7D1, -/* 015B */ 0xA061, 0xA066, 0xC7DE, -/* 015C */ 0xA06D, 0xA07A, 0xC7ED, -/* 015D */ 0xA09D, 0xA0A3, 0xC825, -/* 015E */ 0xA0A6, 0xA0AB, 0xC832, -/* 015F */ 0xA0B2, 0xA0B8, 0xC841, -/* 0160 */ 0xA0BB, 0xA0C0, 0xC84E, -/* 0161 */ 0xA0C1, 0xA0DB, 0xC855, -/* 0162 */ 0xA0EC, 0xA0F1, 0xC88E, -/* 0163 */ 0xA0F2, 0xA0F9, 0xC895, -/* 0164 */ 0xA144, 0xA156, 0xC8A9, -/* 0165 */ 0xA169, 0xA16F, 0xC8CD, -/* 0166 */ 0xA172, 0xA177, 0xC8DA, -/* 0167 */ 0xA181, 0xA18F, 0xC8E6, -/* 0168 */ 0xA190, 0xA195, 0xC8F6, -/* 0169 */ 0xA1B4, 0xA1BD, 0x3008, -/* 016A */ 0xA242, 0xA247, 0xC912, -/* 016B */ 0xA248, 0xA25A, 0xC919, -/* 016C */ 0xA261, 0xA267, 0xC92D, -/* 016D */ 0xA268, 0xA27A, 0xC935, -/* 016E */ 0xA281, 0xA288, 0xC948, -/* 016F */ 0xA28E, 0xA294, 0xC959, -/* 0170 */ 0xA296, 0xA29D, 0xC964, -/* 0171 */ 0xA344, 0xA34A, 0xC975, -/* 0172 */ 0xA34B, 0xA355, 0xC97D, -/* 0173 */ 0xA361, 0xA367, 0xC991, -/* 0174 */ 0xA36A, 0xA37A, 0xC99E, -/* 0175 */ 0xA381, 0xA391, 0xC9AF, -/* 0176 */ 0xA3A1, 0xA3DB, 0xFF01, -/* 0177 */ 0xA3DD, 0xA3FD, 0xFF3D, -/* 0178 */ 0xA44C, 0xA451, 0xC9F2, -/* 0179 */ 0xA465, 0xA46A, 0xCA0E, -/* 017A */ 0xA46E, 0xA47A, 0xCA19, -/* 017B */ 0xA484, 0xA4A0, 0xCA2A, -/* 017C */ 0xA4A1, 0xA4FE, 0x3131, -/* 017D */ 0xA54B, 0xA551, 0xCA55, -/* 017E */ 0xA553, 0xA558, 0xCA62, -/* 017F */ 0xA561, 0xA572, 0xCA6B, -/* 0180 */ 0xA573, 0xA578, 0xCA7E, -/* 0181 */ 0xA581, 0xA591, 0xCA87, -/* 0182 */ 0xA592, 0xA5A0, 0xCA99, -/* 0183 */ 0xA5A1, 0xA5AA, 0x2170, -/* 0184 */ 0xA5B0, 0xA5B9, 0x2160, -/* 0185 */ 0xA5C1, 0xA5D1, 0x0391, -/* 0186 */ 0xA5D2, 0xA5D8, 0x03A3, -/* 0187 */ 0xA5E1, 0xA5F1, 0x03B1, -/* 0188 */ 0xA5F2, 0xA5F8, 0x03C3, -/* 0189 */ 0xA641, 0xA654, 0xCAA8, -/* 018A */ 0xA661, 0xA666, 0xCAC6, -/* 018B */ 0xA66E, 0xA673, 0xCADA, -/* 018C */ 0xA674, 0xA67A, 0xCAE1, -/* 018D */ 0xA685, 0xA68B, 0xCAED, -/* 018E */ 0xA68C, 0xA69E, 0xCAF5, -/* 018F */ 0xA6DD, 0xA6E4, 0x2543, -/* 0190 */ 0xA74C, 0xA752, 0xCB19, -/* 0191 */ 0xA753, 0xA75A, 0xCB22, -/* 0192 */ 0xA761, 0xA777, 0xCB2A, -/* 0193 */ 0xA789, 0xA78F, 0xCB51, -/* 0194 */ 0xA793, 0xA798, 0xCB5E, -/* 0195 */ 0xA799, 0xA7A0, 0xCB65, -/* 0196 */ 0xA7AB, 0xA7B4, 0x3399, -/* 0197 */ 0xA7BF, 0xA7C8, 0x33B0, -/* 0198 */ 0xA7CE, 0xA7D3, 0x33BA, -/* 0199 */ 0xA841, 0xA84B, 0xCB6D, -/* 019A */ 0xA84C, 0xA85A, 0xCB7A, -/* 019B */ 0xA861, 0xA873, 0xCB89, -/* 019C */ 0xA874, 0xA87A, 0xCB9D, -/* 019D */ 0xA881, 0xA894, 0xCBA4, -/* 019E */ 0xA895, 0xA8A0, 0xCBB9, -/* 019F */ 0xA8B1, 0xA8CC, 0x3260, -/* 01A0 */ 0xA8CD, 0xA8E6, 0x24D0, -/* 01A1 */ 0xA8E7, 0xA8F5, 0x2460, -/* 01A2 */ 0xA941, 0xA94F, 0xCBC5, -/* 01A3 */ 0xA950, 0xA95A, 0xCBD5, -/* 01A4 */ 0xA968, 0xA97A, 0xCBEA, -/* 01A5 */ 0xA981, 0xA98F, 0xCBFD, -/* 01A6 */ 0xA995, 0xA99B, 0xCC15, -/* 01A7 */ 0xA9B1, 0xA9CC, 0x3200, -/* 01A8 */ 0xA9CD, 0xA9E6, 0x249C, -/* 01A9 */ 0xA9E7, 0xA9F5, 0x2474, -/* 01AA */ 0xAA47, 0xAA4D, 0xCC31, -/* 01AB */ 0xAA67, 0xAA6C, 0xCC5A, -/* 01AC */ 0xAA72, 0xAA78, 0xCC69, -/* 01AD */ 0xAA83, 0xAAA0, 0xCC76, -/* 01AE */ 0xAAA1, 0xAAF3, 0x3041, -/* 01AF */ 0xAB4A, 0xAB50, 0xCCA1, -/* 01B0 */ 0xAB52, 0xAB57, 0xCCAE, -/* 01B1 */ 0xAB63, 0xAB69, 0xCCBD, -/* 01B2 */ 0xAB6C, 0xAB71, 0xCCCA, -/* 01B3 */ 0xAB75, 0xAB7A, 0xCCD5, -/* 01B4 */ 0xAB81, 0xAB89, 0xCCDB, -/* 01B5 */ 0xAB8A, 0xAB90, 0xCCE5, -/* 01B6 */ 0xAB94, 0xABA0, 0xCCF1, -/* 01B7 */ 0xABA1, 0xABF6, 0x30A1, -/* 01B8 */ 0xAC44, 0xAC49, 0xCD02, -/* 01B9 */ 0xAC4F, 0xAC55, 0xCD11, -/* 01BA */ 0xAC6A, 0xAC75, 0xCD2D, -/* 01BB */ 0xAC81, 0xAC9D, 0xCD3F, -/* 01BC */ 0xACA1, 0xACA6, 0x0410, -/* 01BD */ 0xACA8, 0xACC1, 0x0416, -/* 01BE */ 0xACD1, 0xACD6, 0x0430, -/* 01BF */ 0xACD8, 0xACF1, 0x0436, -/* 01C0 */ 0xAD44, 0xAD4A, 0xCD65, -/* 01C1 */ 0xAD4D, 0xAD52, 0xCD72, -/* 01C2 */ 0xAD53, 0xAD5A, 0xCD79, -/* 01C3 */ 0xAD61, 0xAD67, 0xCD81, -/* 01C4 */ 0xAD68, 0xAD72, 0xCD89, -/* 01C5 */ 0xAD87, 0xAD8C, 0xCDAA, -/* 01C6 */ 0xAD8D, 0xAD9F, 0xCDB1, -/* 01C7 */ 0xAE41, 0xAE46, 0xCDC6, -/* 01C8 */ 0xAE4A, 0xAE5A, 0xCDD1, -/* 01C9 */ 0xAE61, 0xAE66, 0xCDE2, -/* 01CA */ 0xAE6D, 0xAE73, 0xCDF1, -/* 01CB */ 0xAE88, 0xAE8E, 0xCE0D, -/* 01CC */ 0xAE93, 0xAE98, 0xCE1A, -/* 01CD */ 0xAF47, 0xAF5A, 0xCE36, -/* 01CE */ 0xAF61, 0xAF6E, 0xCE4A, -/* 01CF */ 0xAF73, 0xAF78, 0xCE62, -/* 01D0 */ 0xAF81, 0xAF86, 0xCE6E, -/* 01D1 */ 0xAF8C, 0xAF92, 0xCE7D, -/* 01D2 */ 0xAF95, 0xAF9A, 0xCE8A, -/* 01D3 */ 0xB041, 0xB046, 0xCE9A, -/* 01D4 */ 0xB048, 0xB04D, 0xCEA6, -/* 01D5 */ 0xB04E, 0xB05A, 0xCEAE, -/* 01D6 */ 0xB061, 0xB066, 0xCEBB, -/* 01D7 */ 0xB067, 0xB07A, 0xCEC2, -/* 01D8 */ 0xB081, 0xB08E, 0xCED6, -/* 01D9 */ 0xB093, 0xB099, 0xCEED, -/* 01DA */ 0xB09B, 0xB0A0, 0xCEFA, -/* 01DB */ 0xB0A8, 0xB0AF, 0xAC10, -/* 01DC */ 0xB146, 0xB14C, 0xCF09, -/* 01DD */ 0xB14F, 0xB154, 0xCF16, -/* 01DE */ 0xB161, 0xB167, 0xCF25, -/* 01DF */ 0xB169, 0xB16E, 0xCF32, -/* 01E0 */ 0xB16F, 0xB17A, 0xCF39, -/* 01E1 */ 0xB181, 0xB18F, 0xCF45, -/* 01E2 */ 0xB195, 0xB19B, 0xCF5D, -/* 01E3 */ 0xB249, 0xB24F, 0xCF79, -/* 01E4 */ 0xB254, 0xB259, 0xCF86, -/* 01E5 */ 0xB261, 0xB273, 0xCF8E, -/* 01E6 */ 0xB274, 0xB279, 0xCFA2, -/* 01E7 */ 0xB281, 0xB286, 0xCFAA, -/* 01E8 */ 0xB287, 0xB299, 0xCFB1, -/* 01E9 */ 0xB29A, 0xB2A0, 0xCFC5, -/* 01EA */ 0xB341, 0xB354, 0xCFCC, -/* 01EB */ 0xB361, 0xB366, 0xCFEA, -/* 01EC */ 0xB369, 0xB36E, 0xCFF6, -/* 01ED */ 0xB375, 0xB37A, 0xD005, -/* 01EE */ 0xB381, 0xB386, 0xD00B, -/* 01EF */ 0xB387, 0xB38C, 0xD012, -/* 01F0 */ 0xB38D, 0xB3A0, 0xD019, -/* 01F1 */ 0xB441, 0xB446, 0xD02E, -/* 01F2 */ 0xB44C, 0xB452, 0xD03D, -/* 01F3 */ 0xB455, 0xB45A, 0xD04A, -/* 01F4 */ 0xB467, 0xB46D, 0xD059, -/* 01F5 */ 0xB46E, 0xB478, 0xD061, -/* 01F6 */ 0xB484, 0xB48A, 0xD075, -/* 01F7 */ 0xB48E, 0xB4A0, 0xD082, -/* 01F8 */ 0xB541, 0xB54F, 0xD095, -/* 01F9 */ 0xB555, 0xB55A, 0xD0AD, -/* 01FA */ 0xB564, 0xB569, 0xD0BA, -/* 01FB */ 0xB56F, 0xB574, 0xD0CA, -/* 01FC */ 0xB587, 0xB58D, 0xD0E5, -/* 01FD */ 0xB58F, 0xB594, 0xD0F2, -/* 01FE */ 0xB595, 0xB5A0, 0xD0F9, -/* 01FF */ 0xB641, 0xB648, 0xD105, -/* 0200 */ 0xB649, 0xB65A, 0xD10E, -/* 0201 */ 0xB661, 0xB670, 0xD120, -/* 0202 */ 0xB683, 0xB688, 0xD146, -/* 0203 */ 0xB68E, 0xB694, 0xD155, -/* 0204 */ 0xB697, 0xB69C, 0xD162, -/* 0205 */ 0xB741, 0xB74E, 0xD16E, -/* 0206 */ 0xB74F, 0xB755, 0xD17D, -/* 0207 */ 0xB761, 0xB775, 0xD18B, -/* 0208 */ 0xB781, 0xB787, 0xD1A9, -/* 0209 */ 0xB792, 0xB7A0, 0xD1C1, -/* 020A */ 0xB841, 0xB848, 0xD1D0, -/* 020B */ 0xB849, 0xB85A, 0xD1D9, -/* 020C */ 0xB861, 0xB869, 0xD1EB, -/* 020D */ 0xB86D, 0xB87A, 0xD1F9, -/* 020E */ 0xB882, 0xB887, 0xD20A, -/* 020F */ 0xB888, 0xB8A0, 0xD211, -/* 0210 */ 0xB948, 0xB94E, 0xD235, -/* 0211 */ 0xB951, 0xB956, 0xD242, -/* 0212 */ 0xB961, 0xB96F, 0xD24D, -/* 0213 */ 0xB970, 0xB976, 0xD25D, -/* 0214 */ 0xB981, 0xB997, 0xD269, -/* 0215 */ 0xBA47, 0xBA4C, 0xD296, -/* 0216 */ 0xBA53, 0xBA59, 0xD2A5, -/* 0217 */ 0xBA64, 0xBA69, 0xD2B2, -/* 0218 */ 0xBA75, 0xBA7A, 0xD2CC, -/* 0219 */ 0xBA89, 0xBA8F, 0xD2DD, -/* 021A */ 0xBA90, 0xBA99, 0xD2E6, -/* 021B */ 0xBB48, 0xBB4D, 0xD306, -/* 021C */ 0xBB69, 0xBB6F, 0xD331, -/* 021D */ 0xBB71, 0xBB76, 0xD33E, -/* 021E */ 0xBB81, 0xBBA0, 0xD34A, -/* 021F */ 0xBC41, 0xBC52, 0xD36A, -/* 0220 */ 0xBC66, 0xBC6B, 0xD392, -/* 0221 */ 0xBC71, 0xBC77, 0xD3A1, -/* 0222 */ 0xBC8C, 0xBC92, 0xD3BD, -/* 0223 */ 0xBC95, 0xBC9A, 0xD3CA, -/* 0224 */ 0xBC9B, 0xBCA0, 0xD3D1, -/* 0225 */ 0xBD42, 0xBD49, 0xD3D9, -/* 0226 */ 0xBD4B, 0xBD52, 0xD3E4, -/* 0227 */ 0xBD67, 0xBD6C, 0xD402, -/* 0228 */ 0xBD6D, 0xBD7A, 0xD409, -/* 0229 */ 0xBD81, 0xBD86, 0xD417, -/* 022A */ 0xBD87, 0xBDA0, 0xD41E, -/* 022B */ 0xBE41, 0xBE48, 0xD438, -/* 022C */ 0xBE4C, 0xBE5A, 0xD445, -/* 022D */ 0xBE61, 0xBE68, 0xD454, -/* 022E */ 0xBE6F, 0xBE76, 0xD465, -/* 022F */ 0xBE92, 0xBE97, 0xD48E, -/* 0230 */ 0xBE98, 0xBEA0, 0xD495, -/* 0231 */ 0xBEF6, 0xBEFC, 0xC5C4, -/* 0232 */ 0xBF41, 0xBF4B, 0xD49E, -/* 0233 */ 0xBF4C, 0xBF5A, 0xD4AA, -/* 0234 */ 0xBF61, 0xBF73, 0xD4B9, -/* 0235 */ 0xBF81, 0xBF86, 0xD4D6, -/* 0236 */ 0xBF89, 0xBF90, 0xD4E0, -/* 0237 */ 0xBF97, 0xBF9D, 0xD4F1, -/* 0238 */ 0xBFB0, 0xBFB5, 0xC5FC, -/* 0239 */ 0xC041, 0xC046, 0xD4FE, -/* 023A */ 0xC04D, 0xC053, 0xD50D, -/* 023B */ 0xC055, 0xC05A, 0xD518, -/* 023C */ 0xC061, 0xC07A, 0xD51E, -/* 023D */ 0xC08A, 0xC090, 0xD545, -/* 023E */ 0xC093, 0xC098, 0xD552, -/* 023F */ 0xC0C0, 0xC0C7, 0xC751, -/* 0240 */ 0xC146, 0xC14B, 0xD56E, -/* 0241 */ 0xC151, 0xC157, 0xD57D, -/* 0242 */ 0xC165, 0xC178, 0xD591, -/* 0243 */ 0xC181, 0xC1A0, 0xD5A8, -/* 0244 */ 0xC24E, 0xC253, 0xD5DE, -/* 0245 */ 0xC268, 0xC26D, 0xD5FA, -/* 0246 */ 0xC273, 0xC279, 0xD609, -/* 0247 */ 0xC281, 0xC286, 0xD616, -/* 0248 */ 0xC28D, 0xC294, 0xD625, -/* 0249 */ 0xC295, 0xC29E, 0xD62E, -/* 024A */ 0xC367, 0xC36C, 0xD66A, -/* 024B */ 0xC36F, 0xC37A, 0xD675, -/* 024C */ 0xC384, 0xC389, 0xD686, -/* 024D */ 0xC38F, 0xC396, 0xD695, -/* 024E */ 0xC399, 0xC39E, 0xD6A2, -/* 024F */ 0xC445, 0xC44C, 0xD6B1, -/* 0250 */ 0xC44E, 0xC455, 0xD6BC, -/* 0251 */ 0xC46A, 0xC46F, 0xD6DA, -/* 0252 */ 0xC487, 0xC48C, 0xD6F6, -/* 0253 */ 0xC492, 0xC49D, 0xD705, -/* 0254 */ 0xC549, 0xC54F, 0xD721, -/* 0255 */ 0xC552, 0xC557, 0xD72E, -/* 0256 */ 0xC563, 0xC569, 0xD73D, -/* 0257 */ 0xC56D, 0xC572, 0xD74A, -/* 0258 */ 0xC58F, 0xC595, 0xD775, -/* 0259 */ 0xC599, 0xC59E, 0xD782, -/* 025A */ 0xC644, 0xC64A, 0xD791, -/* 025B */ 0xC64D, 0xC652, 0xD79E, -/* 025C */ 0xD1DB, 0xD1E0, 0xF90E, -/* 025D */ 0xD2C6, 0xD2CB, 0xF933, -/* 025E */ 0xD2CD, 0xD2D7, 0xF939, -/* 025F */ 0xD2E4, 0xD2EB, 0xF94A, -/* 0260 */ 0xD2F0, 0xD2F5, 0xF952, -/* 0261 */ 0x8141, 0x8185, 0x0000, -/* 0262 */ 0x8199, 0x81FE, 0x0045, -/* 0263 */ 0x8241, 0x8254, 0x00AB, -/* 0264 */ 0x8261, 0x827A, 0x00BF, -/* 0265 */ 0x8289, 0x82A5, 0x00D9, -/* 0266 */ 0x82D1, 0x82EB, 0x00F6, -/* 0267 */ 0x8341, 0x834C, 0x0111, -/* 0268 */ 0x8374, 0x83A6, 0x011D, -/* 0269 */ 0x83E2, 0x83F5, 0x0150, -/* 026A */ 0x8441, 0x8451, 0x0164, -/* 026B */ 0x8461, 0x8467, 0x0175, -/* 026C */ 0x8489, 0x8499, 0x017C, -/* 026D */ 0x84CA, 0x84D9, 0x018D, -/* 026E */ 0x84FB, 0x84FE, 0x019D, -/* 026F */ 0x8541, 0x855A, 0x01A1, -/* 0270 */ 0x856D, 0x857A, 0x01BB, -/* 0271 */ 0x8588, 0x858D, 0x01C9, -/* 0272 */ 0x85BA, 0x85C7, 0x01CF, -/* 0273 */ 0x85E6, 0x85FE, 0x01DD, -/* 0274 */ 0x8641, 0x866F, 0x01F6, -/* 0275 */ 0x8698, 0x86CF, 0x0225, -/* 0276 */ 0x86E7, 0x86FE, 0x025D, -/* 0277 */ 0x8774, 0x877A, 0x0275, -/* 0278 */ 0x8787, 0x87B1, 0x027C, -/* 0279 */ 0x87ED, 0x87FE, 0x02A7, -/* 027A */ 0x8841, 0x8845, 0x02B9, -/* 027B */ 0x8853, 0x887A, 0x02BE, -/* 027C */ 0x8891, 0x88B9, 0x02E6, -/* 027D */ 0x88F7, 0x88FE, 0x030F, -/* 027E */ 0x8941, 0x8965, 0x0317, -/* 027F */ 0x8977, 0x897A, 0x033C, -/* 0280 */ 0x8997, 0x89AB, 0x0340, -/* 0281 */ 0x89D9, 0x89E6, 0x0355, -/* 0282 */ 0x8A4C, 0x8A65, 0x0363, -/* 0283 */ 0x8A79, 0x8A85, 0x037D, -/* 0284 */ 0x8AA0, 0x8AD8, 0x038A, -/* 0285 */ 0x8AFA, 0x8AFE, 0x03C3, -/* 0286 */ 0x8B47, 0x8B71, 0x03C8, -/* 0287 */ 0x8BB6, 0x8BD2, 0x03F3, -/* 0288 */ 0x8C51, 0x8C5A, 0x0410, -/* 0289 */ 0x8CA9, 0x8CAB, 0x041A, -/* 028A */ 0x8CDF, 0x8CED, 0x041D, -/* 028B */ 0x8D73, 0x8D88, 0x042C, -/* 028C */ 0x8DAB, 0x8DC4, 0x0442, -/* 028D */ 0x8DD6, 0x8DFE, 0x045C, -/* 028E */ 0x8E41, 0x8E51, 0x0485, -/* 028F */ 0x8E61, 0x8E66, 0x0496, -/* 0290 */ 0x8E8F, 0x8ECA, 0x049C, -/* 0291 */ 0x8ED7, 0x8EF6, 0x04D8, -/* 0292 */ 0x8F70, 0x8FAE, 0x04F8, -/* 0293 */ 0x8FEA, 0x8FF8, 0x0537, -/* 0294 */ 0x9041, 0x905A, 0x0546, -/* 0295 */ 0x9067, 0x906A, 0x0560, -/* 0296 */ 0x908E, 0x90C0, 0x0564, -/* 0297 */ 0x90F5, 0x90FE, 0x0597, -/* 0298 */ 0x9141, 0x9154, 0x05A1, -/* 0299 */ 0x9161, 0x9174, 0x05B5, -/* 029A */ 0x9196, 0x91AA, 0x05C9, -/* 029B */ 0x91DC, 0x91F7, 0x05DE, -/* 029C */ 0x9241, 0x927A, 0x05FA, -/* 029D */ 0x9297, 0x929C, 0x0634, -/* 029E */ 0x92B0, 0x92D5, 0x063A, -/* 029F */ 0x92FA, 0x92FE, 0x0660, -/* 02A0 */ 0x9341, 0x9371, 0x0665, -/* 02A1 */ 0x9381, 0x9383, 0x0696, -/* 02A2 */ 0x93AA, 0x93E2, 0x0699, -/* 02A3 */ 0x93FA, 0x93FE, 0x06D2, -/* 02A4 */ 0x9447, 0x9451, 0x06D7, -/* 02A5 */ 0x948E, 0x9492, 0x06E2, -/* 02A6 */ 0x94A4, 0x94A6, 0x06E7, -/* 02A7 */ 0x94BE, 0x94CC, 0x06EA, -/* 02A8 */ 0x9541, 0x9547, 0x06F9, -/* 02A9 */ 0x955A, 0x957A, 0x0700, -/* 02AA */ 0x9588, 0x0000, 0xBE1E, -/* 02AB */ 0x95AD, 0x95DB, 0x0721, -/* 02AC */ 0x9659, 0x966B, 0x0750, -/* 02AD */ 0x96A0, 0x0000, 0xBF1A, -/* 02AE */ 0x96C3, 0x96D1, 0x0763, -/* 02AF */ 0x9793, 0x97A1, 0x0772, -/* 02B0 */ 0x97FC, 0x97FE, 0x0781, -/* 02B1 */ 0x9858, 0x9863, 0x0784, -/* 02B2 */ 0x9897, 0x98FE, 0x0790, -/* 02B3 */ 0x9941, 0x997A, 0x07F8, -/* 02B4 */ 0x9990, 0x99A5, 0x0832, -/* 02B5 */ 0x99B8, 0x99FE, 0x0848, -/* 02B6 */ 0x9A41, 0x9A49, 0x088F, -/* 02B7 */ 0x9A61, 0x9A93, 0x0898, -/* 02B8 */ 0x9AA7, 0x9ABC, 0x08CB, -/* 02B9 */ 0x9ADF, 0x9AFE, 0x08E1, -/* 02BA */ 0x9B41, 0x9B51, 0x0901, -/* 02BB */ 0x9B9B, 0x9BB3, 0x0912, -/* 02BC */ 0x9BFE, 0x0000, 0xC3DA, -/* 02BD */ 0x9C41, 0x9C54, 0x092B, -/* 02BE */ 0x9C91, 0x9C96, 0x093F, -/* 02BF */ 0x9CC3, 0x9CD1, 0x0945, -/* 02C0 */ 0x9D4F, 0x9D51, 0x0954, -/* 02C1 */ 0x9D90, 0x9DA9, 0x0957, -/* 02C2 */ 0x9DBC, 0x9DFE, 0x0971, -/* 02C3 */ 0x9E41, 0x9E47, 0x09B4, -/* 02C4 */ 0x9E5A, 0x9EC9, 0x09BB, -/* 02C5 */ 0x9ED5, 0x9EFE, 0x0A2B, -/* 02C6 */ 0x9F41, 0x9FFE, 0x0A55, -/* 02C7 */ 0xA041, 0xA05A, 0x0B13, -/* 02C8 */ 0xA067, 0xA06C, 0x0B2D, -/* 02C9 */ 0xA081, 0xA0BA, 0x0B33, -/* 02CA */ 0xA0DC, 0xA0EB, 0x0B6D, -/* 02CB */ 0xA0FA, 0xA0FE, 0x0B7D, -/* 02CC */ 0xA141, 0xA143, 0x0B82, -/* 02CD */ 0xA157, 0xA17A, 0x0B85, -/* 02CE */ 0xA196, 0xA1FE, 0x0BA9, -/* 02CF */ 0xA241, 0x0000, 0xC910, -/* 02D0 */ 0xA289, 0xA2E5, 0x0C12, -/* 02D1 */ 0xA341, 0xA343, 0x0C6F, -/* 02D2 */ 0xA356, 0xA35A, 0x0C72, -/* 02D3 */ 0xA368, 0xA369, 0x0C77, -/* 02D4 */ 0xA392, 0xA3A0, 0x0C79, -/* 02D5 */ 0xA3DC, 0x0000, 0xFFE6, -/* 02D6 */ 0xA3FE, 0x0000, 0xFFE3, -/* 02D7 */ 0xA441, 0xA46D, 0x0C88, -/* 02D8 */ 0xA481, 0xA483, 0x0CB5, -/* 02D9 */ 0xA541, 0xA55A, 0x0CB8, -/* 02DA */ 0xA579, 0xA57A, 0x0CD2, -/* 02DB */ 0xA655, 0xA65A, 0x0CD4, -/* 02DC */ 0xA667, 0xA66D, 0x0CDA, -/* 02DD */ 0xA681, 0xA684, 0x0CE1, -/* 02DE */ 0xA69F, 0xA6DC, 0x0CE5, -/* 02DF */ 0xA741, 0xA74B, 0x0D23, -/* 02E0 */ 0xA778, 0xA792, 0x0D2E, -/* 02E1 */ 0xA7A1, 0xA7EF, 0x0D49, -/* 02E2 */ 0xA8A1, 0xA8AF, 0x0D98, -/* 02E3 */ 0xA8F6, 0xA8FE, 0x0DA7, -/* 02E4 */ 0xA961, 0xA967, 0x0DB0, -/* 02E5 */ 0xA990, 0xA9B0, 0x0DB7, -/* 02E6 */ 0xA9F6, 0xA9FE, 0x0DD8, -/* 02E7 */ 0xAA41, 0xAA82, 0x0DE1, -/* 02E8 */ 0xAB41, 0xAB74, 0x0E23, -/* 02E9 */ 0xAB91, 0xAB93, 0x0E57, -/* 02EA */ 0xAC41, 0xAC69, 0x0E5A, -/* 02EB */ 0xAC76, 0xAC7A, 0x0E83, -/* 02EC */ 0xAC9E, 0xACA7, 0x0E88, -/* 02ED */ 0xACD7, 0x0000, 0x0451, -/* 02EE */ 0xAD41, 0xAD4C, 0x0E92, -/* 02EF */ 0xAD73, 0xAD86, 0x0E9E, -/* 02F0 */ 0xADA0, 0x0000, 0xCDC5, -/* 02F1 */ 0xAE47, 0xAE49, 0x0EB2, -/* 02F2 */ 0xAE67, 0xAEA0, 0x0EB5, -/* 02F3 */ 0xAF41, 0xAF46, 0x0EEF, -/* 02F4 */ 0xAF6F, 0xAF7A, 0x0EF5, -/* 02F5 */ 0xAF87, 0xAFA0, 0x0F01, -/* 02F6 */ 0xB047, 0x0000, 0xCEA2, -/* 02F7 */ 0xB08F, 0xB0FE, 0x0F1B, -/* 02F8 */ 0xB141, 0xB15A, 0x0F8B, -/* 02F9 */ 0xB168, 0x0000, 0xCF2E, -/* 02FA */ 0xB190, 0xB1FE, 0x0FA5, -/* 02FB */ 0xB241, 0xB25A, 0x1014, -/* 02FC */ 0xB27A, 0x0000, 0xCFA9, -/* 02FD */ 0xB2A1, 0xB2FE, 0x102E, -/* 02FE */ 0xB355, 0xB35A, 0x108C, -/* 02FF */ 0xB367, 0xB374, 0x1092, -/* 0300 */ 0xB3A1, 0xB3FE, 0x10A0, -/* 0301 */ 0xB447, 0xB454, 0x10FE, -/* 0302 */ 0xB461, 0xB466, 0x110C, -/* 0303 */ 0xB479, 0xB48D, 0x1112, -/* 0304 */ 0xB4A1, 0xB4FE, 0x1127, -/* 0305 */ 0xB550, 0xB554, 0x1185, -/* 0306 */ 0xB561, 0xB58E, 0x118A, -/* 0307 */ 0xB5A1, 0xB5FE, 0x11B8, -/* 0308 */ 0xB671, 0xB6FE, 0x1216, -/* 0309 */ 0xB756, 0xB75A, 0x12A4, -/* 030A */ 0xB776, 0xB77A, 0x12A9, -/* 030B */ 0xB788, 0xB791, 0x12AE, -/* 030C */ 0xB7A1, 0xB7FE, 0x12B8, -/* 030D */ 0xB86A, 0xB86C, 0x1316, -/* 030E */ 0xB881, 0x0000, 0xD208, -/* 030F */ 0xB8A1, 0xB8FE, 0x1319, -/* 0310 */ 0xB941, 0xB95A, 0x1377, -/* 0311 */ 0xB977, 0xB97A, 0x1391, -/* 0312 */ 0xB998, 0xB9FE, 0x1395, -/* 0313 */ 0xBA41, 0xBA74, 0x13FC, -/* 0314 */ 0xBA81, 0xBA88, 0x1430, -/* 0315 */ 0xBA9A, 0xBAFE, 0x1438, -/* 0316 */ 0xBB41, 0xBB7A, 0x149D, -/* 0317 */ 0xBBA1, 0xBBFE, 0x14D7, -/* 0318 */ 0xBC53, 0xBC94, 0x1535, -/* 0319 */ 0xBCA1, 0xBCFE, 0x1577, -/* 031A */ 0xBD41, 0xBD66, 0x15D5, -/* 031B */ 0xBDA1, 0xBDFE, 0x15FB, -/* 031C */ 0xBE49, 0xBE4B, 0x1659, -/* 031D */ 0xBE69, 0xBE91, 0x165C, -/* 031E */ 0xBEA1, 0xBEFE, 0x1685, -/* 031F */ 0xBF74, 0xBF7A, 0x16E3, -/* 0320 */ 0xBF87, 0xBFFE, 0x16EA, -/* 0321 */ 0xC047, 0xC054, 0x1762, -/* 0322 */ 0xC081, 0xC0FE, 0x1770, -/* 0323 */ 0xC141, 0xC164, 0x17EE, -/* 0324 */ 0xC179, 0xC17A, 0x1812, -/* 0325 */ 0xC1A1, 0xC1FE, 0x1814, -/* 0326 */ 0xC241, 0xC27A, 0x1872, -/* 0327 */ 0xC287, 0xC28C, 0x18AC, -/* 0328 */ 0xC29F, 0xC2FE, 0x18B2, -/* 0329 */ 0xC341, 0xC36E, 0x1912, -/* 032A */ 0xC381, 0xC3FE, 0x1940, -/* 032B */ 0xC441, 0xC491, 0x19BE, -/* 032C */ 0xC49E, 0xC4FE, 0x1A0F, -/* 032D */ 0xC541, 0xC5FE, 0x1A70, -/* 032E */ 0xC641, 0xC64C, 0x1B2E, -/* 032F */ 0xC6A1, 0xC6FE, 0x1B3A, -/* 0330 */ 0xC7A1, 0xC7FE, 0x1B98, -/* 0331 */ 0xC8A1, 0xC8FE, 0x1BF6, -/* 0332 */ 0xCAA1, 0xCAFE, 0x1C54, -/* 0333 */ 0xCBA1, 0xCBFE, 0x1CB2, -/* 0334 */ 0xCCA1, 0xCCFE, 0x1D10, -/* 0335 */ 0xCDA1, 0xCDFE, 0x1D6E, -/* 0336 */ 0xCEA1, 0xCEFE, 0x1DCC, -/* 0337 */ 0xCFA1, 0xCFFE, 0x1E2A, -/* 0338 */ 0xD0A1, 0xD0FE, 0x1E88, -/* 0339 */ 0xD1A1, 0xD1FE, 0x1EE6, -/* 033A */ 0xD2A1, 0xD2CC, 0x1F44, -/* 033B */ 0xD2D8, 0xD2FE, 0x1F70, -/* 033C */ 0xD3A1, 0xD3FE, 0x1F97, -/* 033D */ 0xD4A1, 0xD4FE, 0x1FF5, -/* 033E */ 0xD5A1, 0xD5FE, 0x2053, -/* 033F */ 0xD6A1, 0xD6FE, 0x20B1, -/* 0340 */ 0xD7A1, 0xD7FE, 0x210F, -/* 0341 */ 0xD8A1, 0xD8FE, 0x216D, -/* 0342 */ 0xD9A1, 0xD9FE, 0x21CB, -/* 0343 */ 0xDAA1, 0xDAFE, 0x2229, -/* 0344 */ 0xDBA1, 0xDBFE, 0x2287, -/* 0345 */ 0xDCA1, 0xDCFE, 0x22E5, -/* 0346 */ 0xDDA1, 0xDDFE, 0x2343, -/* 0347 */ 0xDEA1, 0xDEFE, 0x23A1, -/* 0348 */ 0xDFA1, 0xDFFE, 0x23FF, -/* 0349 */ 0xE0A1, 0xE0FE, 0x245D, -/* 034A */ 0xE1A1, 0xE1FE, 0x24BB, -/* 034B */ 0xE2A1, 0xE2FE, 0x2519, -/* 034C */ 0xE3A1, 0xE3FE, 0x2577, -/* 034D */ 0xE4A1, 0xE4FE, 0x25D5, -/* 034E */ 0xE5A1, 0xE5FE, 0x2633, -/* 034F */ 0xE6A1, 0xE6FE, 0x2691, -/* 0350 */ 0xE7A1, 0xE7FE, 0x26EF, -/* 0351 */ 0xE8A1, 0xE8FE, 0x274D, -/* 0352 */ 0xE9A1, 0xE9FE, 0x27AB, -/* 0353 */ 0xEAA1, 0xEAFE, 0x2809, -/* 0354 */ 0xEBA1, 0xEBFE, 0x2867, -/* 0355 */ 0xECA1, 0xECFE, 0x28C5, -/* 0356 */ 0xEDA1, 0xEDFE, 0x2923, -/* 0357 */ 0xEEA1, 0xEEFE, 0x2981, -/* 0358 */ 0xEFA1, 0xEFFE, 0x29DF, -/* 0359 */ 0xF0A1, 0xF0FE, 0x2A3D, -/* 035A */ 0xF1A1, 0xF1FE, 0x2A9B, -/* 035B */ 0xF2A1, 0xF2FE, 0x2AF9, -/* 035C */ 0xF3A1, 0xF3FE, 0x2B57, -/* 035D */ 0xF4A1, 0xF4FE, 0x2BB5, -/* 035E */ 0xF5A1, 0xF5FE, 0x2C13, -/* 035F */ 0xF6A1, 0xF6FE, 0x2C71, -/* 0360 */ 0xF7A1, 0xF7FE, 0x2CCF, -/* 0361 */ 0xF8A1, 0xF8FE, 0x2D2D, -/* 0362 */ 0xF9A1, 0xF9FE, 0x2D8B, -/* 0363 */ 0xFAA1, 0xFAFE, 0x2DE9, -/* 0364 */ 0xFBA1, 0xFBFE, 0x2E47, -/* 0365 */ 0xFCA1, 0xFCFE, 0x2EA5, -/* 0366 */ 0xFDA1, 0xFDFE, 0x2F03, -/*-------------------------------------------------------*/ -/* Offset=0x0B13 Start of MappingTable */ - -/* 0000 */ 0xAC02, 0xAC03, 0xAC05, 0xAC06, 0xAC0B, 0xAC0C, 0xAC0D, 0xAC0E, -/* 0008 */ 0xAC0F, 0xAC18, 0xAC1E, 0xAC1F, 0xAC21, 0xAC22, 0xAC23, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAC2E, 0xAC32, -/* 0018 */ 0xAC33, 0xAC34, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0020 */ 0xAC35, 0xAC36, 0xAC37, 0xAC3A, 0xAC3B, 0xAC3D, 0xAC3E, 0xAC3F, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xAC4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0xAC55, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0040 */ 0xAC56, 0xAC57, 0xAC59, 0xAC5A, 0xAC5B, 0xAC72, 0xAC73, 0xAC75, -/* 0048 */ 0xAC76, 0xAC79, 0xAC7B, 0xAC7C, 0xAC7D, 0xAC7E, 0xAC7F, 0xAC82, -/* 0050 */ 0xAC87, 0xAC88, 0xAC8D, 0xAC8E, 0xAC8F, 0xAC91, 0xAC92, 0xAC93, -/* 0058 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAC9E, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xACAB, 0xACAD, -/* 0068 */ 0xACAE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xACBA, 0xACBE, 0xACBF, 0xACC0, 0xACC2, 0xACC3, 0xACC5, 0xACC6, -/* 0078 */ 0xACC7, 0xACC9, 0xACCA, 0xACCB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xACD6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xACE2, 0xACE3, 0xACE5, -/* 0090 */ 0xACE6, 0xACE9, 0xACEB, 0xACED, 0xACEE, 0xACF2, 0xACF4, 0xACF7, -/* 0098 */ 0xACF8, 0xACF9, 0xACFA, 0xACFB, 0xACFE, 0xACFF, 0xAD01, 0xAD02, -/* 00A0 */ 0xAD03, 0xAD05, 0xAD07, 0xAD08, 0xAD09, 0xAD0A, 0xAD0B, 0xAD0E, -/* 00A8 */ 0xAD10, 0xAD12, 0xAD13, 0xAD14, 0xAD15, 0xAD16, 0xAD17, 0xAD19, -/* 00B0 */ 0xAD1A, 0xAD1B, 0xAD1D, 0xAD1E, 0xAD1F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAD2A, 0xAD2B, 0xAD36, -/* 00C0 */ 0xAD37, 0xAD39, 0xAD3A, 0xAD3B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xAD46, 0xAD48, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xAD51, 0xAD52, 0xAD53, 0xAD55, 0xAD56, -/* 00D8 */ 0xAD57, 0xAD62, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0xAD6E, 0xAD6F, 0xAD71, 0xAD72, 0xAD77, 0xAD78, -/* 00E8 */ 0xAD79, 0xAD7A, 0xAD7E, 0xAD80, 0xAD83, 0xAD84, 0xAD85, 0xAD86, -/* 00F0 */ 0xAD87, 0xAD8A, 0xAD8B, 0xAD8D, 0xAD8E, 0xAD8F, 0xADC2, 0xADC3, -/* 00F8 */ 0xADC5, 0xADC6, 0xADC7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0100 */ 0xFFFD, 0xFFFD, 0xADD2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0108 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xADDD, 0xADDE, 0xADDF, 0xADE1, 0xADE2, -/* 0110 */ 0xADE3, 0xADFA, 0xADFB, 0xADFD, 0xADFE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xAE0A, 0xAE0C, 0xAE32, 0xAE33, 0xAE35, -/* 0120 */ 0xAE36, 0xAE39, 0xAE3B, 0xAE3C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0128 */ 0xFFFD, 0xFFFD, 0xAE3D, 0xAE3E, 0xAE3F, 0xAE42, 0xAE44, 0xAE47, -/* 0130 */ 0xAE48, 0xAE49, 0xAE4B, 0xAE4F, 0xAE51, 0xAE52, 0xAE53, 0xAE55, -/* 0138 */ 0xAE57, 0xAE58, 0xAE59, 0xAE5A, 0xAE5B, 0xAE5E, 0xAE62, 0xAE63, -/* 0140 */ 0xAE64, 0xAE66, 0xAE67, 0xAE6A, 0xAE6B, 0xAE6D, 0xAE6E, 0xAE6F, -/* 0148 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAE7A, -/* 0150 */ 0xAEBF, 0xAEC1, 0xAEC2, 0xAEC3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xAECE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0160 */ 0xFFFD, 0xFFFD, 0xAEDA, 0xAEDB, 0xAEE6, 0xAEE7, 0xAEE9, 0xAEEA, -/* 0168 */ 0xAEEC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAEF5, -/* 0170 */ 0xAEF6, 0xAEF7, 0xAEF9, 0xAEFA, 0xAEFB, 0xAF06, 0xAF09, 0xAF0A, -/* 0178 */ 0xAF0B, 0xAF0C, 0xAF0E, 0xAF0F, 0xAF2E, 0xAF2F, 0xAF31, 0xAF33, -/* 0180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAF3E, -/* 0188 */ 0xAF40, 0xAF44, 0xAF45, 0xAF46, 0xAF47, 0xAF81, 0xAF82, 0xAF83, -/* 0190 */ 0xAF85, 0xAF86, 0xAF87, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0198 */ 0xFFFD, 0xFFFD, 0xAF92, 0xAF93, 0xAF94, 0xAFBA, 0xAFBB, 0xAFBD, -/* 01A0 */ 0xAFBE, 0xAFBF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01A8 */ 0xAFCA, 0xAFCC, 0xAFCF, 0xAFD0, 0xAFD1, 0xAFD2, 0xAFD3, 0xFFFD, -/* 01B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAFDD, 0xAFDE, -/* 01B8 */ 0xAFDF, 0xAFE0, 0xAFE1, 0xAFF2, 0xAFF3, 0xAFF5, 0xAFF6, 0xAFF7, -/* 01C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB002, -/* 01C8 */ 0xB003, 0xB00D, 0xB00E, 0xB00F, 0xB011, 0xB012, 0xB013, 0xB046, -/* 01D0 */ 0xB047, 0xB049, 0xB04B, 0xB04D, 0xB04F, 0xB050, 0xB051, 0xB052, -/* 01D8 */ 0xB056, 0xB058, 0xB05A, 0xB05B, 0xB05C, 0xB07E, 0xB07F, 0xB081, -/* 01E0 */ 0xB082, 0xB083, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E8 */ 0xFFFD, 0xB08E, 0xB090, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01F0 */ 0xFFFD, 0xB09B, 0xB09D, 0xB09E, 0xB0A3, 0xB0A4, 0xB0A5, 0xB0A6, -/* 01F8 */ 0xB0A7, 0xB0AA, 0xB0B0, 0xB0B2, 0xB0B6, 0xB0B7, 0xB0B9, 0xB0BA, -/* 0200 */ 0xB0BB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0208 */ 0xB0C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0D2, -/* 0210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB0D3, 0xB0D5, -/* 0218 */ 0xB0D6, 0xB0D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0220 */ 0xFFFD, 0xB0E1, 0xB0E2, 0xB0E3, 0xB0E4, 0xB10A, 0xB10D, 0xB10E, -/* 0228 */ 0xB10F, 0xB111, 0xB114, 0xB115, 0xB116, 0xB117, 0xB11A, 0xB11E, -/* 0230 */ 0xB11F, 0xB120, 0xB121, 0xB122, 0xB126, 0xB127, 0xB129, 0xB12A, -/* 0238 */ 0xB12B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0240 */ 0xB136, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB142, -/* 0248 */ 0xB143, 0xB145, 0xB146, 0xB147, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB152, 0xB153, 0xB156, 0xB157, 0xB159, -/* 0258 */ 0xB15A, 0xB15B, 0xB15D, 0xB15E, 0xB15F, 0xB17A, 0xB17B, 0xB17D, -/* 0260 */ 0xB17E, 0xB17F, 0xB181, 0xB183, 0xB184, 0xB185, 0xB186, 0xB187, -/* 0268 */ 0xB18A, 0xB18C, 0xB18E, 0xB18F, 0xB190, 0xB191, 0xB195, 0xB196, -/* 0270 */ 0xB197, 0xB199, 0xB19A, 0xB19B, 0xB19D, 0xB1CD, 0xB1CE, 0xB1CF, -/* 0278 */ 0xB1D1, 0xB1D2, 0xB1D3, 0xB1D5, 0xB1DE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0280 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB1EA, 0xB1EB, 0xB1ED, -/* 0288 */ 0xB1EE, 0xB1EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0290 */ 0xFFFD, 0xFFFD, 0xB1FA, 0xB1FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0298 */ 0xFFFD, 0xFFFD, 0xB206, 0xB207, 0xB209, 0xB20A, 0xFFFD, 0xFFFD, -/* 02A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB216, 0xB218, 0xB259, -/* 02A8 */ 0xB25A, 0xB25B, 0xB25D, 0xB25E, 0xB25F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB26A, 0xB26B, 0xB26C, 0xB26D, -/* 02B8 */ 0xB26E, 0xB26F, 0xB270, 0xB271, 0xB272, 0xB273, 0xB286, 0xB287, -/* 02C0 */ 0xB288, 0xB28A, 0xB28B, 0xB28C, 0xB28D, 0xB28E, 0xFFFD, 0xFFFD, -/* 02C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB28F, 0xB292, 0xB293, 0xB295, -/* 02D0 */ 0xB296, 0xB297, 0xB29B, 0xB29C, 0xB29D, 0xB29E, 0xB29F, 0xB2A2, -/* 02D8 */ 0xB2A4, 0xB2A7, 0xB2A8, 0xB2A9, 0xB2AB, 0xB2AD, 0xB2AE, 0xB2AF, -/* 02E0 */ 0xB2B1, 0xB2B2, 0xB2B3, 0xB2B5, 0xB2B6, 0xB2B7, 0xB2CA, 0xB2CB, -/* 02E8 */ 0xB2CD, 0xB2CE, 0xB2CF, 0xB2D1, 0xB2D3, 0xB2D4, 0xB2D5, 0xB2D6, -/* 02F0 */ 0xB2D7, 0xB2DA, 0xB2DC, 0xB2DE, 0xB2DF, 0xB2E0, 0xB2E1, 0xB2E3, -/* 02F8 */ 0xB2E7, 0xB2E9, 0xB2EA, 0xB2F0, 0xB2F1, 0xB2F2, 0xB2F6, 0xB2FC, -/* 0300 */ 0xB2FD, 0xB2FE, 0xB302, 0xB303, 0xB305, 0xB306, 0xB307, 0xFFFD, -/* 0308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB312, 0xB357, -/* 0310 */ 0xB359, 0xB35A, 0xB35D, 0xB360, 0xB361, 0xB362, 0xB363, 0xB366, -/* 0318 */ 0xB368, 0xB36A, 0xB36C, 0xB36D, 0xB36F, 0xB372, 0xB373, 0xB375, -/* 0320 */ 0xB376, 0xB377, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0328 */ 0xFFFD, 0xB382, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0330 */ 0xB38D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB38E, -/* 0338 */ 0xB38F, 0xB391, 0xB392, 0xB393, 0xB3A9, 0xB3AA, 0xB3AB, 0xB3AD, -/* 0340 */ 0xB3C6, 0xB3C7, 0xB3C9, 0xB3CA, 0xB3CD, 0xB3CF, 0xB3D1, 0xB3D2, -/* 0348 */ 0xB3D3, 0xB3D6, 0xB3D8, 0xB3DA, 0xB3DC, 0xB3DE, 0xB3DF, 0xB3E1, -/* 0350 */ 0xB3E2, 0xB3E3, 0xB3E5, 0xB3E6, 0xB3E7, 0xB419, 0xB41A, 0xB41B, -/* 0358 */ 0xB41D, 0xB41E, 0xB41F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0360 */ 0xFFFD, 0xFFFD, 0xB42A, 0xB452, 0xB453, 0xB455, 0xB456, 0xB457, -/* 0368 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB462, -/* 0370 */ 0xB464, 0xB466, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0378 */ 0xB467, 0xB468, 0xB469, 0xB46A, 0xB46B, 0xB481, 0xB482, 0xFFFD, -/* 0380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB483, 0xB484, 0xB485, -/* 0388 */ 0xB486, 0xB487, 0xB4A5, 0xB4A6, 0xB4A7, 0xB4A9, 0xB4AA, 0xB4AB, -/* 0390 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0398 */ 0xB4B6, 0xB4B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03A0 */ 0xB4C1, 0xB4C2, 0xB4C3, 0xB4C5, 0xB4C6, 0xB4C7, 0xFFFD, 0xFFFD, -/* 03A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4D1, 0xB4D2, 0xB4D3, -/* 03B0 */ 0xB4D4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB4DE, -/* 03B8 */ 0xB4DF, 0xB4E1, 0xB4E2, 0xB4E5, 0xB4E7, 0xB4E8, 0xB4E9, 0xB4EA, -/* 03C0 */ 0xB4EB, 0xB4EE, 0xB4F0, 0xB516, 0xB517, 0xB519, 0xB51A, 0xB51D, -/* 03C8 */ 0xB526, 0xB52B, 0xB52C, 0xB52D, 0xB52E, 0xB52F, 0xB532, 0xB533, -/* 03D0 */ 0xB535, 0xB536, 0xB537, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03D8 */ 0xFFFD, 0xFFFD, 0xB542, 0xB546, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03E0 */ 0xFFFD, 0xFFFD, 0xB547, 0xB548, 0xB549, 0xB54A, 0xB54E, 0xB54F, -/* 03E8 */ 0xB551, 0xB552, 0xB553, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03F0 */ 0xFFFD, 0xFFFD, 0xB55E, 0xB5A2, 0xB5A3, 0xB5A5, 0xB5A6, 0xB5A7, -/* 03F8 */ 0xB5A9, 0xB5AC, 0xB5AD, 0xB5AE, 0xB5AF, 0xB5B2, 0xB5B6, 0xB5B7, -/* 0400 */ 0xB5B8, 0xB5B9, 0xB5BA, 0xB5BE, 0xB5BF, 0xB5C1, 0xB5C2, 0xB5C3, -/* 0408 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB5CE, -/* 0410 */ 0xB612, 0xB613, 0xB615, 0xB616, 0xB617, 0xB619, 0xB61A, 0xB61B, -/* 0418 */ 0xB61C, 0xB61D, 0xB665, 0xB666, 0xB667, 0xB69E, 0xB69F, 0xB6A1, -/* 0420 */ 0xB6A2, 0xB6A3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0428 */ 0xB6AD, 0xB6AE, 0xB6AF, 0xB6B0, 0xB6F1, 0xB6F2, 0xB6F3, 0xB6F5, -/* 0430 */ 0xB6F6, 0xB6F7, 0xB6F9, 0xB6FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0438 */ 0xFFFD, 0xFFFD, 0xB6FB, 0xB6FC, 0xB6FD, 0xB6FE, 0xB6FF, 0xB702, -/* 0440 */ 0xB703, 0xB704, 0xB72A, 0xB72B, 0xB72D, 0xB72E, 0xFFFD, 0xFFFD, -/* 0448 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB73A, 0xFFFD, 0xFFFD, -/* 0450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB745, 0xB746, -/* 0458 */ 0xB747, 0xB749, 0xB74A, 0xB74B, 0xB761, 0xB762, 0xB763, 0xB765, -/* 0460 */ 0xB766, 0xB767, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0468 */ 0xFFFD, 0xB772, 0xB774, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0470 */ 0xFFFD, 0xB77E, 0xB77F, 0xB781, 0xB782, 0xB783, 0xFFFD, 0xFFFD, -/* 0478 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB78E, 0xB793, 0xB794, -/* 0480 */ 0xB795, 0xB79A, 0xB79B, 0xB79D, 0xB79E, 0xB79F, 0xFFFD, 0xFFFD, -/* 0488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7AA, 0xFFFD, 0xFFFD, -/* 0490 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB7B6, 0xB7B7, 0xB7C2, 0xB7C3, -/* 0498 */ 0xB7C4, 0xB7C5, 0xB7C6, 0xB7C8, 0xB7EE, 0xB7EF, 0xB7F1, 0xB7F2, -/* 04A0 */ 0xB7F3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04A8 */ 0xB7FE, 0xB802, 0xB803, 0xB804, 0xB805, 0xB806, 0xB80A, 0xB80B, -/* 04B0 */ 0xB80D, 0xB80E, 0xB80F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04B8 */ 0xFFFD, 0xFFFD, 0xB81A, 0xB81C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04C0 */ 0xFFFD, 0xFFFD, 0xB826, 0xB827, 0xB829, 0xB82A, 0xB82B, 0xFFFD, -/* 04C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB836, 0xFFFD, -/* 04D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB841, 0xB842, 0xB843, -/* 04D8 */ 0xB852, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04E0 */ 0xFFFD, 0xB85E, 0xB85F, 0xB861, 0xB862, 0xB863, 0xFFFD, 0xFFFD, -/* 04E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB86E, 0xB870, 0xFFFD, -/* 04F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB879, 0xB87A, 0xB87B, -/* 04F8 */ 0xB8B1, 0xB8B2, 0xB8B3, 0xB8B5, 0xB8B6, 0xB8B7, 0xB8B9, 0xB8BA, -/* 0500 */ 0xB8BB, 0xB8BC, 0xB8BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0508 */ 0xFFFD, 0xB8BE, 0xB8BF, 0xB8C2, 0xB8C4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0510 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB8CD, 0xB8CE, 0xB8CF, 0xB8D1, 0xB8D2, -/* 0518 */ 0xB8D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0520 */ 0xFFFD, 0xB8DE, 0xB8E0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0528 */ 0xFFFD, 0xB8EA, 0xB8EB, 0xB8ED, 0xB8EE, 0xB8EF, 0xFFFD, 0xFFFD, -/* 0530 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xB8FA, 0xB8FC, 0xB93E, -/* 0538 */ 0xB93F, 0xB941, 0xB942, 0xB943, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xB94D, 0xB94E, 0xB950, 0xB95A, 0xB95B, -/* 0548 */ 0xB95D, 0xB95E, 0xB95F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0550 */ 0xFFFD, 0xFFFD, 0xB96A, 0xB96C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0558 */ 0xFFFD, 0xFFFD, 0xB976, 0xB977, 0xB979, 0xB97A, 0xB97B, 0xB97D, -/* 0560 */ 0xB986, 0xB988, 0xB98B, 0xB98C, 0xB9AE, 0xB9AF, 0xB9B1, 0xB9B2, -/* 0568 */ 0xB9B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0570 */ 0xB9BE, 0xB9C0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0578 */ 0xB9CA, 0xB9CB, 0xB9CD, 0xB9D3, 0xB9D4, 0xB9D5, 0xB9D6, 0xB9D7, -/* 0580 */ 0xB9DA, 0xB9DC, 0xB9DF, 0xB9E0, 0xB9E2, 0xB9E6, 0xB9E7, 0xB9E9, -/* 0588 */ 0xB9EA, 0xB9EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0590 */ 0xFFFD, 0xB9F6, 0xB9FB, 0xB9FC, 0xB9FD, 0xB9FE, 0xB9FF, 0xBA3A, -/* 0598 */ 0xBA3B, 0xBA3D, 0xBA3E, 0xBA3F, 0xBA41, 0xBA43, 0xBA44, 0xBA45, -/* 05A0 */ 0xBA46, 0xBA47, 0xBA4A, 0xBA4C, 0xBA4F, 0xBA50, 0xBA51, 0xBA52, -/* 05A8 */ 0xBA56, 0xBA57, 0xBA59, 0xBA5A, 0xBA5B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBA66, 0xBA72, 0xBA73, 0xBA75, -/* 05B8 */ 0xBA76, 0xBA77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBA86, 0xBA88, 0xBA89, 0xBA8A, -/* 05C8 */ 0xBA8B, 0xBAAA, 0xBAAD, 0xBAAE, 0xBAAF, 0xBAB1, 0xBAB3, 0xBAB4, -/* 05D0 */ 0xBAB5, 0xBAB6, 0xBAB7, 0xBABA, 0xBABC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBAC5, 0xBAC6, 0xBAC7, 0xBAFD, 0xBAFE, -/* 05E0 */ 0xBAFF, 0xBB01, 0xBB02, 0xBB03, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBB0E, 0xBB10, 0xFFFD, 0xFFFD, -/* 05F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBB19, 0xBB1A, 0xBB1B, 0xBB1D, -/* 05F8 */ 0xBB1E, 0xBB1F, 0xBB28, 0xBB2A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0600 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBB37, 0xBB39, 0xBB3A, 0xBB3F, -/* 0608 */ 0xBB40, 0xBB41, 0xBB42, 0xBB43, 0xBB46, 0xBB48, 0xBB4A, 0xBB4B, -/* 0610 */ 0xBB4C, 0xBB4E, 0xBB51, 0xBB52, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0618 */ 0xFFFD, 0xFFFD, 0xBB53, 0xBB55, 0xBB56, 0xBB57, 0xFFFD, 0xFFFD, -/* 0620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBB62, 0xFFFD, -/* 0628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBB6D, -/* 0630 */ 0xBB6E, 0xBB6F, 0xBB70, 0xBB71, 0xBB89, 0xBB8A, 0xBB8B, 0xBB8D, -/* 0638 */ 0xBB8E, 0xBB8F, 0xBBA5, 0xBBA6, 0xBBA7, 0xBBA9, 0xBBAA, 0xBBAB, -/* 0640 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBB5, -/* 0648 */ 0xBBB6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0650 */ 0xFFFD, 0xBBC1, 0xBBC2, 0xBBC3, 0xBBC5, 0xBBC6, 0xBBC7, 0xFFFD, -/* 0658 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBBD1, 0xBBD2, -/* 0660 */ 0xBBFA, 0xBBFB, 0xBBFD, 0xBBFE, 0xBC01, 0xBC03, 0xBC04, 0xBC05, -/* 0668 */ 0xBC06, 0xBC07, 0xBC0A, 0xBC0E, 0xBC10, 0xBC12, 0xBC13, 0xBC19, -/* 0670 */ 0xBC1A, 0xBC20, 0xBC21, 0xBC22, 0xBC23, 0xBC26, 0xBC28, 0xBC2A, -/* 0678 */ 0xBC2B, 0xBC2C, 0xBC2E, 0xBC2F, 0xBC32, 0xBC33, 0xBC35, 0xFFFD, -/* 0680 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBC36, 0xBC37, 0xFFFD, -/* 0688 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBC42, 0xBC46, -/* 0690 */ 0xBC47, 0xBC48, 0xBC4A, 0xBC4B, 0xBC4E, 0xBC4F, 0xBC5A, 0xBC5B, -/* 0698 */ 0xBC5C, 0xBC86, 0xBC87, 0xBC89, 0xBC8A, 0xBC8D, 0xBC8F, 0xBC90, -/* 06A0 */ 0xBC91, 0xBC92, 0xBC93, 0xBC96, 0xBC98, 0xBC9B, 0xBC9C, 0xBC9D, -/* 06A8 */ 0xBC9E, 0xBC9F, 0xBCA2, 0xBCA3, 0xBCA5, 0xBCA6, 0xFFFD, 0xFFFD, -/* 06B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCB2, 0xFFFD, 0xFFFD, -/* 06B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBCBE, 0xBCBF, 0xBCC1, 0xBCC2, -/* 06C0 */ 0xBCC3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06C8 */ 0xFFFD, 0xBCCE, 0xBCD2, 0xBCD3, 0xBCD4, 0xBCD6, 0xBCD7, 0xBCD9, -/* 06D0 */ 0xBCDA, 0xBCDB, 0xBCF7, 0xBCF9, 0xBCFA, 0xBCFB, 0xBCFD, 0xBD06, -/* 06D8 */ 0xBD08, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBD11, -/* 06E0 */ 0xBD12, 0xBD13, 0xBD4A, 0xBD4B, 0xBD4D, 0xBD4E, 0xBD4F, 0xBD65, -/* 06E8 */ 0xBD66, 0xBD67, 0xBD82, 0xBD83, 0xBD85, 0xBD86, 0xBD8B, 0xBD8C, -/* 06F0 */ 0xBD8D, 0xBD8E, 0xBD8F, 0xBD92, 0xBD94, 0xBD96, 0xBD97, 0xBD98, -/* 06F8 */ 0xBD9B, 0xBDD2, 0xBDD3, 0xBDD6, 0xBDD7, 0xBDD9, 0xBDDA, 0xBDDB, -/* 0700 */ 0xBDF1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBDF2, -/* 0708 */ 0xBDF3, 0xBDF5, 0xBDF6, 0xBDF7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xBE01, 0xBE02, 0xBE04, 0xFFFD, 0xFFFD, -/* 0718 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBE0E, 0xBE0F, 0xBE11, 0xBE12, -/* 0720 */ 0xBE13, 0xBE46, 0xBE47, 0xBE49, 0xBE4A, 0xBE4B, 0xBE4D, 0xBE4F, -/* 0728 */ 0xBE50, 0xBE51, 0xBE52, 0xBE53, 0xBE56, 0xBE58, 0xBE5C, 0xBE5D, -/* 0730 */ 0xBE5E, 0xBE5F, 0xBE62, 0xBE63, 0xBE65, 0xBE66, 0xBE67, 0xBE69, -/* 0738 */ 0xBE6B, 0xBE6C, 0xBE6D, 0xBE6E, 0xBE6F, 0xBE72, 0xBE76, 0xBE77, -/* 0740 */ 0xBE78, 0xBE79, 0xBE7A, 0xBE7E, 0xBE7F, 0xBE81, 0xBE82, 0xBE83, -/* 0748 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBE8E, -/* 0750 */ 0xBED2, 0xBED3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0758 */ 0xBED5, 0xBED6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0760 */ 0xFFFD, 0xBEE1, 0xBEE2, 0xBF42, 0xBF43, 0xBF45, 0xBF46, 0xBF47, -/* 0768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBF52, -/* 0770 */ 0xBF53, 0xBF54, 0xBFCE, 0xBFCF, 0xBFD1, 0xBFD2, 0xBFD3, 0xFFFD, -/* 0778 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xBFDD, 0xBFDE, -/* 0780 */ 0xBFE0, 0xC03D, 0xC03E, 0xC03F, 0xC059, 0xC05A, 0xC05B, 0xFFFD, -/* 0788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC05D, 0xC05E, 0xC05F, -/* 0790 */ 0xC092, 0xC093, 0xC095, 0xC096, 0xC097, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0A2, 0xC0A4, 0xFFFD, 0xFFFD, -/* 07A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0AE, 0xC0B1, 0xC0B2, 0xC0B7, -/* 07A8 */ 0xC0B8, 0xC0B9, 0xC0BA, 0xC0BB, 0xC0BE, 0xC0C2, 0xC0C3, 0xC0C4, -/* 07B0 */ 0xC0C6, 0xC0C7, 0xC0CA, 0xC0CB, 0xC0CD, 0xC0CE, 0xC0CF, 0xFFFD, -/* 07B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0DA, 0xFFFD, -/* 07C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC0E6, 0xC0E7, 0xC0E9, -/* 07C8 */ 0xC0EA, 0xC0EB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D0 */ 0xFFFD, 0xC0F6, 0xC0F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07D8 */ 0xFFFD, 0xC101, 0xC102, 0xC103, 0xC105, 0xC106, 0xC107, 0xFFFD, -/* 07E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC111, 0xC112, -/* 07E8 */ 0xC113, 0xC114, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07F0 */ 0xC121, 0xC122, 0xC125, 0xC128, 0xC129, 0xC12A, 0xC12B, 0xC12E, -/* 07F8 */ 0xC132, 0xC133, 0xC134, 0xC135, 0xC137, 0xC13A, 0xC13B, 0xC13D, -/* 0800 */ 0xC13E, 0xC13F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0808 */ 0xFFFD, 0xC14A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0810 */ 0xC156, 0xC157, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0818 */ 0xC159, 0xC15A, 0xC15B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0820 */ 0xFFFD, 0xFFFD, 0xC166, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0828 */ 0xFFFD, 0xC171, 0xC172, 0xC173, 0xC175, 0xC176, 0xC177, 0xC179, -/* 0830 */ 0xC17A, 0xC17B, 0xC18F, 0xC191, 0xC192, 0xC193, 0xC195, 0xC197, -/* 0838 */ 0xC198, 0xC199, 0xC19A, 0xC19B, 0xC19E, 0xC1A0, 0xC1A2, 0xC1A3, -/* 0840 */ 0xC1A4, 0xC1A6, 0xC1A7, 0xC1AA, 0xC1AB, 0xC1AD, 0xC1AE, 0xC1AF, -/* 0848 */ 0xC1C5, 0xC1C6, 0xC1C7, 0xC1C9, 0xC1CA, 0xC1CB, 0xFFFD, 0xFFFD, -/* 0850 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1D5, 0xC1D6, 0xFFFD, -/* 0858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1E1, 0xC1E2, -/* 0860 */ 0xC1E3, 0xC1E5, 0xC1E6, 0xC1E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0868 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC1F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0870 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC1FE, 0xC1FF, 0xC201, 0xC202, -/* 0878 */ 0xC203, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0880 */ 0xC20E, 0xC210, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0888 */ 0xC21A, 0xC21B, 0xC21D, 0xC21E, 0xC221, 0xC222, 0xC223, 0xC224, -/* 0890 */ 0xC225, 0xC226, 0xC227, 0xC22A, 0xC22C, 0xC22E, 0xC230, 0xC233, -/* 0898 */ 0xC246, 0xC247, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08A0 */ 0xFFFD, 0xC252, 0xC253, 0xC255, 0xC256, 0xC257, 0xFFFD, 0xFFFD, -/* 08A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC261, 0xC262, 0xC263, -/* 08B0 */ 0xC264, 0xC266, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08B8 */ 0xC267, 0xC268, 0xC269, 0xC26A, 0xC26B, 0xC26E, 0xC26F, 0xC271, -/* 08C0 */ 0xC272, 0xC273, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08C8 */ 0xFFFD, 0xC27E, 0xC280, 0xC299, 0xC29A, 0xC29C, 0xFFFD, 0xFFFD, -/* 08D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2A6, 0xC2A7, 0xC2A9, 0xC2AA, -/* 08D8 */ 0xC2AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC2B6, -/* 08E0 */ 0xC2B8, 0xC2DE, 0xC2DF, 0xC2E1, 0xC2E2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC2EE, 0xC2F0, 0xC2F2, 0xC2F3, 0xC2F4, -/* 08F0 */ 0xC2F5, 0xC2F7, 0xC2FA, 0xC2FD, 0xC2FE, 0xC2FF, 0xFFFD, 0xFFFD, -/* 08F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC30A, 0xC30B, 0xC30E, -/* 0900 */ 0xC30F, 0xC310, 0xC311, 0xC312, 0xC316, 0xC317, 0xC319, 0xC31A, -/* 0908 */ 0xC31B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0910 */ 0xC326, 0xC327, 0xC36A, 0xC36B, 0xC36D, 0xC36E, 0xC36F, 0xC371, -/* 0918 */ 0xC373, 0xC374, 0xC375, 0xC376, 0xC377, 0xC37A, 0xC37B, 0xFFFD, -/* 0920 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC385, 0xC386, 0xC387, -/* 0928 */ 0xC389, 0xC38A, 0xC38B, 0xC3DB, 0xC3DD, 0xC3DE, 0xC3E1, 0xC3E3, -/* 0930 */ 0xC3E4, 0xC3E5, 0xC3E6, 0xC3E7, 0xC3EA, 0xC3EB, 0xC3EC, 0xFFFD, -/* 0938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC3F6, 0xC3F7, 0xC42D, -/* 0940 */ 0xC42E, 0xC42F, 0xC431, 0xC432, 0xC433, 0xC466, 0xC467, 0xC469, -/* 0948 */ 0xC46A, 0xC46B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0950 */ 0xFFFD, 0xC476, 0xC477, 0xC478, 0xC4B9, 0xC4BA, 0xC4BB, 0xC4F2, -/* 0958 */ 0xC4F3, 0xC4F5, 0xC4F6, 0xC4F7, 0xC4F9, 0xC4FB, 0xC4FC, 0xC4FD, -/* 0960 */ 0xC4FE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0968 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC50D, 0xC50E, 0xC50F, 0xC511, 0xC512, -/* 0970 */ 0xC513, 0xC52A, 0xC52B, 0xC52D, 0xC52E, 0xC52F, 0xFFFD, 0xFFFD, -/* 0978 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC53A, 0xC53C, 0xFFFD, -/* 0980 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC546, 0xC547, 0xC54B, -/* 0988 */ 0xC54F, 0xC550, 0xC551, 0xC552, 0xC556, 0xC55A, 0xC55B, 0xC55C, -/* 0990 */ 0xC55F, 0xC562, 0xC563, 0xC565, 0xC566, 0xC567, 0xFFFD, 0xFFFD, -/* 0998 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC572, 0xFFFD, 0xFFFD, -/* 09A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC57E, 0xC57F, 0xC581, 0xC582, -/* 09A8 */ 0xC583, 0xC585, 0xC586, 0xC588, 0xC589, 0xC58A, 0xC58B, 0xC58E, -/* 09B0 */ 0xC590, 0xC592, 0xC593, 0xC594, 0xC596, 0xC599, 0xC59A, 0xC59B, -/* 09B8 */ 0xC59D, 0xC59E, 0xC59F, 0xC5B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09C0 */ 0xFFFD, 0xFFFD, 0xC5B7, 0xC5BA, 0xC5BF, 0xC5C0, 0xC5C1, 0xC5C2, -/* 09C8 */ 0xC5C3, 0xC5CB, 0xC5CD, 0xC5CF, 0xC5D2, 0xC5D3, 0xC5D5, 0xC5D6, -/* 09D0 */ 0xC5D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09D8 */ 0xC5E2, 0xC5E4, 0xC5E6, 0xC5E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09E0 */ 0xFFFD, 0xFFFD, 0xC5E8, 0xC5E9, 0xC5EA, 0xC5EB, 0xC5EF, 0xC5F1, -/* 09E8 */ 0xC5F2, 0xC5F3, 0xC5F5, 0xC5F8, 0xC5F9, 0xC5FA, 0xC5FB, 0xC602, -/* 09F0 */ 0xC603, 0xC604, 0xC609, 0xC60A, 0xC60B, 0xC60D, 0xC60E, 0xC60F, -/* 09F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC61A, -/* 0A00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC626, -/* 0A08 */ 0xC627, 0xC629, 0xC62A, 0xC62B, 0xC62F, 0xC631, 0xC632, 0xC636, -/* 0A10 */ 0xC638, 0xC63A, 0xC63C, 0xC63D, 0xC63E, 0xC63F, 0xC642, 0xC643, -/* 0A18 */ 0xC645, 0xC646, 0xC647, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A20 */ 0xFFFD, 0xFFFD, 0xC652, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A28 */ 0xFFFD, 0xC65E, 0xC65F, 0xC66D, 0xC66E, 0xC670, 0xFFFD, 0xFFFD, -/* 0A30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC67A, 0xC67B, 0xC67D, 0xC67E, -/* 0A38 */ 0xC67F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A40 */ 0xC68A, 0xC68C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A48 */ 0xC696, 0xC697, 0xC699, 0xC69A, 0xC69B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6A6, 0xC6A8, 0xFFFD, 0xFFFD, -/* 0A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6B2, 0xC6B3, 0xC6B5, 0xC6B6, -/* 0A60 */ 0xC6B7, 0xC6BB, 0xC6BC, 0xC6BD, 0xC6BE, 0xC6BF, 0xC6C2, 0xC6C4, -/* 0A68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6CE, 0xFFFD, -/* 0A70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6CF, 0xC6D1, 0xC6D2, -/* 0A78 */ 0xC6D3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A80 */ 0xC6DE, 0xC6DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A88 */ 0xC6EA, 0xC6EB, 0xC6ED, 0xC6EE, 0xC6EF, 0xC6F1, 0xC6F2, 0xFFFD, -/* 0A90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC6F3, 0xC6F4, 0xC6F5, -/* 0A98 */ 0xC6F6, 0xC6F7, 0xC6FA, 0xC6FB, 0xC6FC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC706, 0xC707, 0xC709, 0xC70A, 0xC70B, -/* 0AA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC716, -/* 0AB0 */ 0xC718, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC722, -/* 0AB8 */ 0xC723, 0xC725, 0xC726, 0xC727, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC732, 0xC734, 0xC736, 0xC738, 0xC739, -/* 0AC8 */ 0xC73A, 0xC73B, 0xC73E, 0xC73F, 0xC741, 0xC742, 0xC743, 0xC745, -/* 0AD0 */ 0xC746, 0xC747, 0xC748, 0xC749, 0xC74B, 0xC74E, 0xC750, 0xC759, -/* 0AD8 */ 0xC75A, 0xC75B, 0xC75D, 0xC75E, 0xC75F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC769, 0xC76A, 0xFFFD, 0xFFFD, -/* 0AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC776, 0xC777, -/* 0AF0 */ 0xC779, 0xC77A, 0xC77B, 0xC77F, 0xC780, 0xC781, 0xC782, 0xC786, -/* 0AF8 */ 0xC78B, 0xC78C, 0xC78D, 0xC78F, 0xC792, 0xC793, 0xC795, 0xC799, -/* 0B00 */ 0xC79B, 0xC79C, 0xC79D, 0xC79E, 0xC79F, 0xC7A2, 0xC7A7, 0xC7A8, -/* 0B08 */ 0xC7A9, 0xC7AA, 0xC7AB, 0xC7AE, 0xC7AF, 0xC7B1, 0xC7B2, 0xC7B3, -/* 0B10 */ 0xC7B5, 0xC7B6, 0xC7B7, 0xC7B8, 0xC7B9, 0xC7BA, 0xC7BB, 0xC7BE, -/* 0B18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC7CA, 0xC7CB, -/* 0B20 */ 0xC7CD, 0xC7CF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B28 */ 0xFFFD, 0xC7D9, 0xC7DA, 0xC7DB, 0xC7DC, 0xC7E5, 0xC7E6, 0xC7E7, -/* 0B30 */ 0xC7E9, 0xC7EA, 0xC7EB, 0xC7FB, 0xC7FC, 0xC7FD, 0xC7FE, 0xC7FF, -/* 0B38 */ 0xC802, 0xC803, 0xC805, 0xC806, 0xC807, 0xC809, 0xC80B, 0xC80C, -/* 0B40 */ 0xC80D, 0xC80E, 0xC80F, 0xC812, 0xC814, 0xC817, 0xC818, 0xC819, -/* 0B48 */ 0xC81A, 0xC81B, 0xC81E, 0xC81F, 0xC821, 0xC822, 0xC823, 0xFFFD, -/* 0B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC82E, 0xC830, -/* 0B58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC839, 0xC83A, -/* 0B60 */ 0xC83B, 0xC83D, 0xC83E, 0xC83F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xC84A, 0xC84B, 0xC872, 0xC873, 0xC875, -/* 0B70 */ 0xC876, 0xC877, 0xC879, 0xC87B, 0xC87C, 0xC87D, 0xC87E, 0xC87F, -/* 0B78 */ 0xC882, 0xC884, 0xC888, 0xC889, 0xC88A, 0xC89E, 0xC8A0, 0xC8A2, -/* 0B80 */ 0xC8A3, 0xC8A4, 0xC8A5, 0xC8A6, 0xC8A7, 0xC8BE, 0xC8BF, 0xC8C0, -/* 0B88 */ 0xC8C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8C2, -/* 0B90 */ 0xC8C3, 0xC8C5, 0xC8C6, 0xC8C7, 0xC8C9, 0xC8CA, 0xC8CB, 0xFFFD, -/* 0B98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8D6, 0xC8D8, -/* 0BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC8E2, 0xC8E3, -/* 0BA8 */ 0xC8E5, 0xC8FE, 0xC8FF, 0xC901, 0xC902, 0xC903, 0xC907, 0xC908, -/* 0BB0 */ 0xC909, 0xC90A, 0xC90B, 0xC90E, 0x3000, 0x3001, 0x3002, 0x00B7, -/* 0BB8 */ 0x2025, 0x2026, 0x00A8, 0x3003, 0x00AD, 0x2015, 0x2225, 0xFF3C, -/* 0BC0 */ 0x223C, 0x2018, 0x2019, 0x201C, 0x201D, 0x3014, 0x3015, 0xFFFD, -/* 0BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BD0 */ 0xFFFD, 0x00B1, 0x00D7, 0x00F7, 0x2260, 0x2264, 0x2265, 0x221E, -/* 0BD8 */ 0x2234, 0x00B0, 0x2032, 0x2033, 0x2103, 0x212B, 0xFFE0, 0xFFE1, -/* 0BE0 */ 0xFFE5, 0x2642, 0x2640, 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, -/* 0BE8 */ 0x2261, 0x2252, 0x00A7, 0x203B, 0x2606, 0x2605, 0x25CB, 0x25CF, -/* 0BF0 */ 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, -/* 0BF8 */ 0x25BC, 0x2192, 0x2190, 0x2191, 0x2193, 0x2194, 0x3013, 0x226A, -/* 0C00 */ 0x226B, 0x221A, 0x223D, 0x221D, 0x2235, 0x222B, 0x222C, 0x2208, -/* 0C08 */ 0x220B, 0x2286, 0x2287, 0x2282, 0x2283, 0x222A, 0x2229, 0x2227, -/* 0C10 */ 0x2228, 0xFFE2, 0xC952, 0xC953, 0xC955, 0xC956, 0xC957, 0xFFFD, -/* 0C18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC962, 0xFFFD, -/* 0C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC96D, -/* 0C28 */ 0xC96E, 0xC96F, 0x21D2, 0x21D4, 0x2200, 0x2203, 0x00B4, 0xFF5E, -/* 0C30 */ 0x02C7, 0x02D8, 0x02DD, 0x02DA, 0x02D9, 0x00B8, 0x02DB, 0x00A1, -/* 0C38 */ 0x00BF, 0x02D0, 0x222E, 0x2211, 0x220F, 0x00A4, 0x2109, 0x2030, -/* 0C40 */ 0x25C1, 0x25C0, 0x25B7, 0x25B6, 0x2664, 0x2660, 0x2661, 0x2665, -/* 0C48 */ 0x2667, 0x2663, 0x2299, 0x25C8, 0x25A3, 0x25D0, 0x25D1, 0x2592, -/* 0C50 */ 0x25A4, 0x25A5, 0x25A8, 0x25A7, 0x25A6, 0x25A9, 0x2668, 0x260F, -/* 0C58 */ 0x260E, 0x261C, 0x261E, 0x00B6, 0x2020, 0x2021, 0x2195, 0x2197, -/* 0C60 */ 0x2199, 0x2196, 0x2198, 0x266D, 0x2669, 0x266A, 0x266C, 0x327F, -/* 0C68 */ 0x321C, 0x2116, 0x33C7, 0x2122, 0x33C2, 0x33D8, 0x2121, 0xC971, -/* 0C70 */ 0xC972, 0xC973, 0xC98A, 0xC98B, 0xC98D, 0xC98E, 0xC98F, 0xC99A, -/* 0C78 */ 0xC99C, 0xC9C2, 0xC9C3, 0xC9C5, 0xC9C6, 0xC9C9, 0xC9CB, 0xC9CC, -/* 0C80 */ 0xC9CD, 0xC9CE, 0xC9CF, 0xC9D2, 0xC9D4, 0xC9D7, 0xC9D8, 0xC9DB, -/* 0C88 */ 0xC9DE, 0xC9DF, 0xC9E1, 0xC9E3, 0xC9E5, 0xC9E6, 0xC9E8, 0xC9E9, -/* 0C90 */ 0xC9EA, 0xC9EB, 0xC9EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C98 */ 0xFFFD, 0xC9FA, 0xC9FB, 0xC9FD, 0xC9FE, 0xC9FF, 0xCA01, 0xCA02, -/* 0CA0 */ 0xCA03, 0xCA04, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CA8 */ 0xCA05, 0xCA06, 0xCA07, 0xCA0A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0xFFFD, 0xFFFD, 0xCA15, 0xCA16, 0xCA17, 0xCA26, 0xCA27, 0xCA28, -/* 0CB8 */ 0xCA47, 0xCA48, 0xCA49, 0xCA4A, 0xCA4B, 0xCA4E, 0xCA4F, 0xCA51, -/* 0CC0 */ 0xCA52, 0xCA53, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC8 */ 0xFFFD, 0xCA5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CD0 */ 0xCA69, 0xCA6A, 0xCA85, 0xCA86, 0xCABE, 0xCABF, 0xCAC1, 0xCAC2, -/* 0CD8 */ 0xCAC3, 0xCAC5, 0xCACE, 0xCAD0, 0xCAD2, 0xCAD4, 0xCAD5, 0xCAD6, -/* 0CE0 */ 0xCAD7, 0xCAE8, 0xCAE9, 0xCAEA, 0xCAEB, 0xCB09, 0xCB0A, 0x2500, -/* 0CE8 */ 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, -/* 0CF0 */ 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, -/* 0CF8 */ 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, 0x252F, 0x2528, -/* 0D00 */ 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, 0x2542, 0x2512, -/* 0D08 */ 0x2511, 0x251A, 0x2519, 0x2516, 0x2515, 0x250E, 0x250D, 0x251E, -/* 0D10 */ 0x251F, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252A, 0x252D, -/* 0D18 */ 0x252E, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253A, 0x253D, -/* 0D20 */ 0x253E, 0x2540, 0x2541, 0xCB0B, 0xCB0C, 0xCB0D, 0xCB0E, 0xCB0F, -/* 0D28 */ 0xCB11, 0xCB12, 0xCB13, 0xCB15, 0xCB16, 0xCB17, 0xCB42, 0xCB43, -/* 0D30 */ 0xCB44, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCB45, -/* 0D38 */ 0xCB46, 0xCB47, 0xCB4A, 0xCB4B, 0xCB4D, 0xCB4E, 0xCB4F, 0xFFFD, -/* 0D40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCB5A, 0xCB5B, -/* 0D48 */ 0xCB5C, 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33C4, 0x33A3, -/* 0D50 */ 0x33A4, 0x33A5, 0x33A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x33CA, 0x338D, 0x338E, -/* 0D60 */ 0x338F, 0x33CF, 0x3388, 0x3389, 0x33C8, 0x33A7, 0x33A8, 0xFFFD, -/* 0D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D70 */ 0xFFFD, 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0xFFFD, 0xFFFD, -/* 0D78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3390, 0x3391, 0x3392, 0x3393, -/* 0D80 */ 0x3394, 0x2126, 0x33C0, 0x33C1, 0x338A, 0x338B, 0x338C, 0x33D6, -/* 0D88 */ 0x33C5, 0x33AD, 0x33AE, 0x33AF, 0x33DB, 0x33A9, 0x33AA, 0x33AB, -/* 0D90 */ 0x33AC, 0x33DD, 0x33D0, 0x33D3, 0x33C3, 0x33C9, 0x33DC, 0x33C6, -/* 0D98 */ 0x00C6, 0x00D0, 0x00AA, 0x0126, 0xFFFD, 0x0132, 0xFFFD, 0x013F, -/* 0DA0 */ 0x0141, 0x00D8, 0x0152, 0x00BA, 0x00DE, 0x0166, 0x014A, 0x00BD, -/* 0DA8 */ 0x2153, 0x2154, 0x00BC, 0x00BE, 0x215B, 0x215C, 0x215D, 0x215E, -/* 0DB0 */ 0xCBE0, 0xCBE1, 0xCBE2, 0xCBE3, 0xCBE5, 0xCBE6, 0xCBE8, 0xCC0E, -/* 0DB8 */ 0xCC0F, 0xCC11, 0xCC12, 0xCC13, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCC1E, 0xCC1F, 0xCC20, 0xCC23, 0xCC24, -/* 0DC8 */ 0x00E6, 0x0111, 0x00F0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140, -/* 0DD0 */ 0x0142, 0x00F8, 0x0153, 0x00DF, 0x00FE, 0x0167, 0x014B, 0x0149, -/* 0DD8 */ 0x00B9, 0x00B2, 0x00B3, 0x2074, 0x207F, 0x2081, 0x2082, 0x2083, -/* 0DE0 */ 0x2084, 0xCC25, 0xCC26, 0xCC2A, 0xCC2B, 0xCC2D, 0xCC2F, 0xFFFD, -/* 0DE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCC3A, 0xCC3F, -/* 0DF0 */ 0xCC40, 0xCC41, 0xCC42, 0xCC43, 0xCC46, 0xCC47, 0xCC49, 0xCC4A, -/* 0DF8 */ 0xCC4B, 0xCC4D, 0xCC4E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E00 */ 0xFFFD, 0xCC4F, 0xCC50, 0xCC51, 0xCC52, 0xCC53, 0xCC56, 0xFFFD, -/* 0E08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCC61, 0xCC62, 0xCC63, -/* 0E10 */ 0xCC65, 0xCC67, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E18 */ 0xFFFD, 0xCC71, 0xCC72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E20 */ 0xFFFD, 0xCC73, 0xCC74, 0xCC94, 0xCC95, 0xCC96, 0xCC97, 0xCC9A, -/* 0E28 */ 0xCC9B, 0xCC9D, 0xCC9E, 0xCC9F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCCAA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E38 */ 0xFFFD, 0xFFFD, 0xCCB6, 0xCCB7, 0xCCB9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCCBA, 0xCCBB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCC6, 0xCCC8, 0xFFFD, 0xFFFD, -/* 0E50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCCD1, 0xCCD2, 0xCCD3, 0xCCED, -/* 0E58 */ 0xCCEE, 0xCCEF, 0xCCFE, 0xCCFF, 0xCD00, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCD0A, 0xCD0B, 0xCD0D, 0xCD0E, 0xCD0F, -/* 0E68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCD1A, -/* 0E70 */ 0xCD1C, 0xCD1E, 0xCD1F, 0xCD20, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E78 */ 0xFFFD, 0xFFFD, 0xCD21, 0xCD22, 0xCD23, 0xCD25, 0xCD26, 0xCD27, -/* 0E80 */ 0xCD29, 0xCD2A, 0xCD2B, 0xCD3A, 0xCD3B, 0xCD3C, 0xCD3D, 0xCD3E, -/* 0E88 */ 0xCD5D, 0xCD5E, 0xCD5F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E90 */ 0xFFFD, 0x0401, 0xCD61, 0xCD62, 0xCD63, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCD6E, 0xCD70, 0xCD96, 0xCD97, -/* 0EA0 */ 0xCD99, 0xCD9A, 0xCD9B, 0xCD9D, 0xCD9E, 0xCD9F, 0xFFFD, 0xFFFD, -/* 0EA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCDA0, 0xCDA1, 0xCDA2, 0xCDA3, -/* 0EB0 */ 0xCDA6, 0xCDA8, 0xCDCD, 0xCDCE, 0xCDCF, 0xCDE9, 0xCDEA, 0xCDEB, -/* 0EB8 */ 0xCDED, 0xCDEE, 0xCDEF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0EC0 */ 0xFFFD, 0xFFFD, 0xCDFA, 0xCDFC, 0xCDFE, 0xCDFF, 0xCE00, 0xCE01, -/* 0EC8 */ 0xCE02, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE03, -/* 0ED0 */ 0xCE05, 0xCE06, 0xCE07, 0xCE09, 0xCE0A, 0xCE0B, 0xFFFD, 0xFFFD, -/* 0ED8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE15, 0xCE16, 0xCE17, -/* 0EE0 */ 0xCE18, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE22, -/* 0EE8 */ 0xCE23, 0xCE25, 0xCE26, 0xCE27, 0xCE29, 0xCE2A, 0xCE2B, 0xCE2C, -/* 0EF0 */ 0xCE2D, 0xCE2E, 0xCE2F, 0xCE32, 0xCE34, 0xCE5A, 0xCE5B, 0xCE5D, -/* 0EF8 */ 0xCE5E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE6A, -/* 0F00 */ 0xCE6C, 0xCE76, 0xCE77, 0xCE79, 0xCE7A, 0xCE7B, 0xFFFD, 0xFFFD, -/* 0F08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE86, 0xCE88, 0xFFFD, -/* 0F10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCE92, 0xCE93, 0xCE95, -/* 0F18 */ 0xCE96, 0xCE97, 0xCE99, 0xCEE6, 0xCEE7, 0xCEE9, 0xCEEA, 0xFFFD, -/* 0F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCEF6, 0xFFFD, -/* 0F28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAC00, 0xAC01, 0xAC04, -/* 0F30 */ 0xAC07, 0xAC08, 0xAC09, 0xAC0A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xAC19, 0xAC1A, 0xAC1B, 0xAC1C, -/* 0F40 */ 0xAC1D, 0xAC20, 0xAC24, 0xAC2C, 0xAC2D, 0xAC2F, 0xAC30, 0xAC31, -/* 0F48 */ 0xAC38, 0xAC39, 0xAC3C, 0xAC40, 0xAC4B, 0xAC4D, 0xAC54, 0xAC58, -/* 0F50 */ 0xAC5C, 0xAC70, 0xAC71, 0xAC74, 0xAC77, 0xAC78, 0xAC7A, 0xAC80, -/* 0F58 */ 0xAC81, 0xAC83, 0xAC84, 0xAC85, 0xAC86, 0xAC89, 0xAC8A, 0xAC8B, -/* 0F60 */ 0xAC8C, 0xAC90, 0xAC94, 0xAC9C, 0xAC9D, 0xAC9F, 0xACA0, 0xACA1, -/* 0F68 */ 0xACA8, 0xACA9, 0xACAA, 0xACAC, 0xACAF, 0xACB0, 0xACB8, 0xACB9, -/* 0F70 */ 0xACBB, 0xACBC, 0xACBD, 0xACC1, 0xACC4, 0xACC8, 0xACCC, 0xACD5, -/* 0F78 */ 0xACD7, 0xACE0, 0xACE1, 0xACE4, 0xACE7, 0xACE8, 0xACEA, 0xACEC, -/* 0F80 */ 0xACEF, 0xACF0, 0xACF1, 0xACF3, 0xACF5, 0xACF6, 0xACFC, 0xACFD, -/* 0F88 */ 0xAD00, 0xAD04, 0xAD06, 0xCF02, 0xCF03, 0xCF05, 0xCF06, 0xCF07, -/* 0F90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCF12, -/* 0F98 */ 0xCF14, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCF1D, -/* 0FA0 */ 0xCF1E, 0xCF1F, 0xCF21, 0xCF22, 0xCF23, 0xCF56, 0xCF57, 0xCF59, -/* 0FA8 */ 0xCF5A, 0xCF5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FB0 */ 0xFFFD, 0xCF66, 0xCF68, 0xCF6A, 0xCF6B, 0xCF6C, 0xAD0C, 0xAD0D, -/* 0FB8 */ 0xAD0F, 0xAD11, 0xAD18, 0xAD1C, 0xAD20, 0xAD29, 0xAD2C, 0xAD2D, -/* 0FC0 */ 0xAD34, 0xAD35, 0xAD38, 0xAD3C, 0xAD44, 0xAD45, 0xAD47, 0xAD49, -/* 0FC8 */ 0xAD50, 0xAD54, 0xAD58, 0xAD61, 0xAD63, 0xAD6C, 0xAD6D, 0xAD70, -/* 0FD0 */ 0xAD73, 0xAD74, 0xAD75, 0xAD76, 0xAD7B, 0xAD7C, 0xAD7D, 0xAD7F, -/* 0FD8 */ 0xAD81, 0xAD82, 0xAD88, 0xAD89, 0xAD8C, 0xAD90, 0xAD9C, 0xAD9D, -/* 0FE0 */ 0xADA4, 0xADB7, 0xADC0, 0xADC1, 0xADC4, 0xADC8, 0xADD0, 0xADD1, -/* 0FE8 */ 0xADD3, 0xADDC, 0xADE0, 0xADE4, 0xADF8, 0xADF9, 0xADFC, 0xADFF, -/* 0FF0 */ 0xAE00, 0xAE01, 0xAE08, 0xAE09, 0xAE0B, 0xAE0D, 0xAE14, 0xAE30, -/* 0FF8 */ 0xAE31, 0xAE34, 0xAE37, 0xAE38, 0xAE3A, 0xAE40, 0xAE41, 0xAE43, -/* 1000 */ 0xAE45, 0xAE46, 0xAE4A, 0xAE4C, 0xAE4D, 0xAE4E, 0xAE50, 0xAE54, -/* 1008 */ 0xAE56, 0xAE5C, 0xAE5D, 0xAE5F, 0xAE60, 0xAE61, 0xAE65, 0xAE68, -/* 1010 */ 0xAE69, 0xAE6C, 0xAE70, 0xAE78, 0xCF6D, 0xCF6E, 0xCF6F, 0xCF72, -/* 1018 */ 0xCF73, 0xCF75, 0xCF76, 0xCF77, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1020 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xCF81, 0xCF82, 0xCF83, 0xCF84, 0xFFFD, -/* 1028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xCF8D, 0xAE79, 0xAE7B, -/* 1030 */ 0xAE7C, 0xAE7D, 0xAE84, 0xAE85, 0xAE8C, 0xAEBC, 0xAEBD, 0xAEBE, -/* 1038 */ 0xAEC0, 0xAEC4, 0xAECC, 0xAECD, 0xAECF, 0xAED0, 0xAED1, 0xAED8, -/* 1040 */ 0xAED9, 0xAEDC, 0xAEE8, 0xAEEB, 0xAEED, 0xAEF4, 0xAEF8, 0xAEFC, -/* 1048 */ 0xAF07, 0xAF08, 0xAF0D, 0xAF10, 0xAF2C, 0xAF2D, 0xAF30, 0xAF32, -/* 1050 */ 0xAF34, 0xAF3C, 0xAF3D, 0xAF3F, 0xAF41, 0xAF42, 0xAF43, 0xAF48, -/* 1058 */ 0xAF49, 0xAF50, 0xAF5C, 0xAF5D, 0xAF64, 0xAF65, 0xAF79, 0xAF80, -/* 1060 */ 0xAF84, 0xAF88, 0xAF90, 0xAF91, 0xAF95, 0xAF9C, 0xAFB8, 0xAFB9, -/* 1068 */ 0xAFBC, 0xAFC0, 0xAFC7, 0xAFC8, 0xAFC9, 0xAFCB, 0xAFCD, 0xAFCE, -/* 1070 */ 0xAFD4, 0xAFDC, 0xAFE8, 0xAFE9, 0xAFF0, 0xAFF1, 0xAFF4, 0xAFF8, -/* 1078 */ 0xB000, 0xB001, 0xB004, 0xB00C, 0xB010, 0xB014, 0xB01C, 0xB01D, -/* 1080 */ 0xB028, 0xB044, 0xB045, 0xB048, 0xB04A, 0xB04C, 0xB04E, 0xB053, -/* 1088 */ 0xB054, 0xB055, 0xB057, 0xB059, 0xCFE2, 0xCFE3, 0xCFE5, 0xCFE6, -/* 1090 */ 0xCFE7, 0xCFE9, 0xCFF2, 0xCFF4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1098 */ 0xFFFD, 0xFFFD, 0xCFFD, 0xCFFE, 0xCFFF, 0xD001, 0xD002, 0xD003, -/* 10A0 */ 0xB05D, 0xB07C, 0xB07D, 0xB080, 0xB084, 0xB08C, 0xB08D, 0xB08F, -/* 10A8 */ 0xB091, 0xB098, 0xB099, 0xB09A, 0xB09C, 0xB09F, 0xB0A0, 0xB0A1, -/* 10B0 */ 0xB0A2, 0xB0A8, 0xB0A9, 0xB0AB, 0xB0AC, 0xB0AD, 0xB0AE, 0xB0AF, -/* 10B8 */ 0xB0B1, 0xB0B3, 0xB0B4, 0xB0B5, 0xB0B8, 0xB0BC, 0xB0C4, 0xB0C5, -/* 10C0 */ 0xB0C7, 0xB0C8, 0xB0C9, 0xB0D0, 0xB0D1, 0xB0D4, 0xB0D8, 0xB0E0, -/* 10C8 */ 0xB0E5, 0xB108, 0xB109, 0xB10B, 0xB10C, 0xB110, 0xB112, 0xB113, -/* 10D0 */ 0xB118, 0xB119, 0xB11B, 0xB11C, 0xB11D, 0xB123, 0xB124, 0xB125, -/* 10D8 */ 0xB128, 0xB12C, 0xB134, 0xB135, 0xB137, 0xB138, 0xB139, 0xB140, -/* 10E0 */ 0xB141, 0xB144, 0xB148, 0xB150, 0xB151, 0xB154, 0xB155, 0xB158, -/* 10E8 */ 0xB15C, 0xB160, 0xB178, 0xB179, 0xB17C, 0xB180, 0xB182, 0xB188, -/* 10F0 */ 0xB189, 0xB18B, 0xB18D, 0xB192, 0xB193, 0xB194, 0xB198, 0xB19C, -/* 10F8 */ 0xB1A8, 0xB1CC, 0xB1D0, 0xB1D4, 0xB1DC, 0xB1DD, 0xD036, 0xD037, -/* 1100 */ 0xD039, 0xD03A, 0xD03B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1108 */ 0xFFFD, 0xFFFD, 0xD046, 0xD048, 0xD051, 0xD052, 0xD053, 0xD055, -/* 1110 */ 0xD056, 0xD057, 0xD06E, 0xD06F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1118 */ 0xFFFD, 0xFFFD, 0xD071, 0xD072, 0xD073, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD07E, 0xD07F, 0xD080, 0xB1DF, -/* 1128 */ 0xB1E8, 0xB1E9, 0xB1EC, 0xB1F0, 0xB1F9, 0xB1FB, 0xB1FD, 0xB204, -/* 1130 */ 0xB205, 0xB208, 0xB20B, 0xB20C, 0xB214, 0xB215, 0xB217, 0xB219, -/* 1138 */ 0xB220, 0xB234, 0xB23C, 0xB258, 0xB25C, 0xB260, 0xB268, 0xB269, -/* 1140 */ 0xB274, 0xB275, 0xB27C, 0xB284, 0xB285, 0xB289, 0xB290, 0xB291, -/* 1148 */ 0xB294, 0xB298, 0xB299, 0xB29A, 0xB2A0, 0xB2A1, 0xB2A3, 0xB2A5, -/* 1150 */ 0xB2A6, 0xB2AA, 0xB2AC, 0xB2B0, 0xB2B4, 0xB2C8, 0xB2C9, 0xB2CC, -/* 1158 */ 0xB2D0, 0xB2D2, 0xB2D8, 0xB2D9, 0xB2DB, 0xB2DD, 0xB2E2, 0xB2E4, -/* 1160 */ 0xB2E5, 0xB2E6, 0xB2E8, 0xB2EB, 0xB2EC, 0xB2ED, 0xB2EE, 0xB2EF, -/* 1168 */ 0xB2F3, 0xB2F4, 0xB2F5, 0xB2F7, 0xB2F8, 0xB2F9, 0xB2FA, 0xB2FB, -/* 1170 */ 0xB2FF, 0xB300, 0xB301, 0xB304, 0xB308, 0xB310, 0xB311, 0xB313, -/* 1178 */ 0xB314, 0xB315, 0xB31C, 0xB354, 0xB355, 0xB356, 0xB358, 0xB35B, -/* 1180 */ 0xB35C, 0xB35E, 0xB35F, 0xB364, 0xB365, 0xD0A6, 0xD0A7, 0xD0A9, -/* 1188 */ 0xD0AA, 0xD0AB, 0xD0B3, 0xD0B6, 0xD0B8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1190 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD0C2, 0xD0C3, 0xD0C5, 0xD0C6, 0xD0C7, -/* 1198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0D2, 0xD0D6, -/* 11A0 */ 0xD0D7, 0xD0D8, 0xD0D9, 0xD0DA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 11A8 */ 0xFFFD, 0xFFFD, 0xD0DB, 0xD0DE, 0xD0DF, 0xD0E1, 0xD0E2, 0xD0E3, -/* 11B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD0EE, -/* 11B8 */ 0xB367, 0xB369, 0xB36B, 0xB36E, 0xB370, 0xB371, 0xB374, 0xB378, -/* 11C0 */ 0xB380, 0xB381, 0xB383, 0xB384, 0xB385, 0xB38C, 0xB390, 0xB394, -/* 11C8 */ 0xB3A0, 0xB3A1, 0xB3A8, 0xB3AC, 0xB3C4, 0xB3C5, 0xB3C8, 0xB3CB, -/* 11D0 */ 0xB3CC, 0xB3CE, 0xB3D0, 0xB3D4, 0xB3D5, 0xB3D7, 0xB3D9, 0xB3DB, -/* 11D8 */ 0xB3DD, 0xB3E0, 0xB3E4, 0xB3E8, 0xB3FC, 0xB410, 0xB418, 0xB41C, -/* 11E0 */ 0xB420, 0xB428, 0xB429, 0xB42B, 0xB434, 0xB450, 0xB451, 0xB454, -/* 11E8 */ 0xB458, 0xB460, 0xB461, 0xB463, 0xB465, 0xB46C, 0xB480, 0xB488, -/* 11F0 */ 0xB49D, 0xB4A4, 0xB4A8, 0xB4AC, 0xB4B5, 0xB4B7, 0xB4B9, 0xB4C0, -/* 11F8 */ 0xB4C4, 0xB4C8, 0xB4D0, 0xB4D5, 0xB4DC, 0xB4DD, 0xB4E0, 0xB4E3, -/* 1200 */ 0xB4E4, 0xB4E6, 0xB4EC, 0xB4ED, 0xB4EF, 0xB4F1, 0xB4F8, 0xB514, -/* 1208 */ 0xB515, 0xB518, 0xB51B, 0xB51C, 0xB524, 0xB525, 0xB527, 0xB528, -/* 1210 */ 0xB529, 0xB52A, 0xB530, 0xB531, 0xB534, 0xB538, 0xD132, 0xD133, -/* 1218 */ 0xD135, 0xD136, 0xD137, 0xD139, 0xD13B, 0xD13C, 0xD13D, 0xD13E, -/* 1220 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD13F, 0xD142, -/* 1228 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD14E, 0xD14F, -/* 1230 */ 0xD151, 0xD152, 0xD153, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1238 */ 0xFFFD, 0xFFFD, 0xD15E, 0xD160, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1240 */ 0xFFFD, 0xFFFD, 0xD169, 0xD16A, 0xD16B, 0xD16D, 0xB540, 0xB541, -/* 1248 */ 0xB543, 0xB544, 0xB545, 0xB54B, 0xB54C, 0xB54D, 0xB550, 0xB554, -/* 1250 */ 0xB55C, 0xB55D, 0xB55F, 0xB560, 0xB561, 0xB5A0, 0xB5A1, 0xB5A4, -/* 1258 */ 0xB5A8, 0xB5AA, 0xB5AB, 0xB5B0, 0xB5B1, 0xB5B3, 0xB5B4, 0xB5B5, -/* 1260 */ 0xB5BB, 0xB5BC, 0xB5BD, 0xB5C0, 0xB5C4, 0xB5CC, 0xB5CD, 0xB5CF, -/* 1268 */ 0xB5D0, 0xB5D1, 0xB5D8, 0xB5EC, 0xB610, 0xB611, 0xB614, 0xB618, -/* 1270 */ 0xB625, 0xB62C, 0xB634, 0xB648, 0xB664, 0xB668, 0xB69C, 0xB69D, -/* 1278 */ 0xB6A0, 0xB6A4, 0xB6AB, 0xB6AC, 0xB6B1, 0xB6D4, 0xB6F0, 0xB6F4, -/* 1280 */ 0xB6F8, 0xB700, 0xB701, 0xB705, 0xB728, 0xB729, 0xB72C, 0xB72F, -/* 1288 */ 0xB730, 0xB738, 0xB739, 0xB73B, 0xB744, 0xB748, 0xB74C, 0xB754, -/* 1290 */ 0xB755, 0xB760, 0xB764, 0xB768, 0xB770, 0xB771, 0xB773, 0xB775, -/* 1298 */ 0xB77C, 0xB77D, 0xB780, 0xB784, 0xB78C, 0xB78D, 0xB78F, 0xB790, -/* 12A0 */ 0xB791, 0xB792, 0xB796, 0xB797, 0xD185, 0xD186, 0xD187, 0xD189, -/* 12A8 */ 0xD18A, 0xD1A2, 0xD1A3, 0xD1A5, 0xD1A6, 0xD1A7, 0xD1B2, 0xD1B4, -/* 12B0 */ 0xD1B6, 0xD1B7, 0xD1B8, 0xD1B9, 0xD1BB, 0xD1BD, 0xD1BE, 0xD1BF, -/* 12B8 */ 0xB798, 0xB799, 0xB79C, 0xB7A0, 0xB7A8, 0xB7A9, 0xB7AB, 0xB7AC, -/* 12C0 */ 0xB7AD, 0xB7B4, 0xB7B5, 0xB7B8, 0xB7C7, 0xB7C9, 0xB7EC, 0xB7ED, -/* 12C8 */ 0xB7F0, 0xB7F4, 0xB7FC, 0xB7FD, 0xB7FF, 0xB800, 0xB801, 0xB807, -/* 12D0 */ 0xB808, 0xB809, 0xB80C, 0xB810, 0xB818, 0xB819, 0xB81B, 0xB81D, -/* 12D8 */ 0xB824, 0xB825, 0xB828, 0xB82C, 0xB834, 0xB835, 0xB837, 0xB838, -/* 12E0 */ 0xB839, 0xB840, 0xB844, 0xB851, 0xB853, 0xB85C, 0xB85D, 0xB860, -/* 12E8 */ 0xB864, 0xB86C, 0xB86D, 0xB86F, 0xB871, 0xB878, 0xB87C, 0xB88D, -/* 12F0 */ 0xB8A8, 0xB8B0, 0xB8B4, 0xB8B8, 0xB8C0, 0xB8C1, 0xB8C3, 0xB8C5, -/* 12F8 */ 0xB8CC, 0xB8D0, 0xB8D4, 0xB8DD, 0xB8DF, 0xB8E1, 0xB8E8, 0xB8E9, -/* 1300 */ 0xB8EC, 0xB8F0, 0xB8F8, 0xB8F9, 0xB8FB, 0xB8FD, 0xB904, 0xB918, -/* 1308 */ 0xB920, 0xB93C, 0xB93D, 0xB940, 0xB944, 0xB94C, 0xB94F, 0xB951, -/* 1310 */ 0xB958, 0xB959, 0xB95C, 0xB960, 0xB968, 0xB969, 0xD1F5, 0xD1F6, -/* 1318 */ 0xD1F7, 0xB96B, 0xB96D, 0xB974, 0xB975, 0xB978, 0xB97C, 0xB984, -/* 1320 */ 0xB985, 0xB987, 0xB989, 0xB98A, 0xB98D, 0xB98E, 0xB9AC, 0xB9AD, -/* 1328 */ 0xB9B0, 0xB9B4, 0xB9BC, 0xB9BD, 0xB9BF, 0xB9C1, 0xB9C8, 0xB9C9, -/* 1330 */ 0xB9CC, 0xB9CE, 0xB9CF, 0xB9D0, 0xB9D1, 0xB9D2, 0xB9D8, 0xB9D9, -/* 1338 */ 0xB9DB, 0xB9DD, 0xB9DE, 0xB9E1, 0xB9E3, 0xB9E4, 0xB9E5, 0xB9E8, -/* 1340 */ 0xB9EC, 0xB9F4, 0xB9F5, 0xB9F7, 0xB9F8, 0xB9F9, 0xB9FA, 0xBA00, -/* 1348 */ 0xBA01, 0xBA08, 0xBA15, 0xBA38, 0xBA39, 0xBA3C, 0xBA40, 0xBA42, -/* 1350 */ 0xBA48, 0xBA49, 0xBA4B, 0xBA4D, 0xBA4E, 0xBA53, 0xBA54, 0xBA55, -/* 1358 */ 0xBA58, 0xBA5C, 0xBA64, 0xBA65, 0xBA67, 0xBA68, 0xBA69, 0xBA70, -/* 1360 */ 0xBA71, 0xBA74, 0xBA78, 0xBA83, 0xBA84, 0xBA85, 0xBA87, 0xBA8C, -/* 1368 */ 0xBAA8, 0xBAA9, 0xBAAB, 0xBAAC, 0xBAB0, 0xBAB2, 0xBAB8, 0xBAB9, -/* 1370 */ 0xBABB, 0xBABD, 0xBAC4, 0xBAC8, 0xBAD8, 0xBAD9, 0xBAFC, 0xD22A, -/* 1378 */ 0xD22B, 0xD22E, 0xD22F, 0xD231, 0xD232, 0xD233, 0xFFFD, 0xFFFD, -/* 1380 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD23E, 0xD240, 0xFFFD, -/* 1388 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD249, 0xD24A, 0xD24B, -/* 1390 */ 0xD24C, 0xD265, 0xD266, 0xD267, 0xD268, 0xD282, 0xD283, 0xD285, -/* 1398 */ 0xD286, 0xD287, 0xD289, 0xD28A, 0xD28B, 0xD28C, 0xBB00, 0xBB04, -/* 13A0 */ 0xBB0D, 0xBB0F, 0xBB11, 0xBB18, 0xBB1C, 0xBB20, 0xBB29, 0xBB2B, -/* 13A8 */ 0xBB34, 0xBB35, 0xBB36, 0xBB38, 0xBB3B, 0xBB3C, 0xBB3D, 0xBB3E, -/* 13B0 */ 0xBB44, 0xBB45, 0xBB47, 0xBB49, 0xBB4D, 0xBB4F, 0xBB50, 0xBB54, -/* 13B8 */ 0xBB58, 0xBB61, 0xBB63, 0xBB6C, 0xBB88, 0xBB8C, 0xBB90, 0xBBA4, -/* 13C0 */ 0xBBA8, 0xBBAC, 0xBBB4, 0xBBB7, 0xBBC0, 0xBBC4, 0xBBC8, 0xBBD0, -/* 13C8 */ 0xBBD3, 0xBBF8, 0xBBF9, 0xBBFC, 0xBBFF, 0xBC00, 0xBC02, 0xBC08, -/* 13D0 */ 0xBC09, 0xBC0B, 0xBC0C, 0xBC0D, 0xBC0F, 0xBC11, 0xBC14, 0xBC15, -/* 13D8 */ 0xBC16, 0xBC17, 0xBC18, 0xBC1B, 0xBC1C, 0xBC1D, 0xBC1E, 0xBC1F, -/* 13E0 */ 0xBC24, 0xBC25, 0xBC27, 0xBC29, 0xBC2D, 0xBC30, 0xBC31, 0xBC34, -/* 13E8 */ 0xBC38, 0xBC40, 0xBC41, 0xBC43, 0xBC44, 0xBC45, 0xBC49, 0xBC4C, -/* 13F0 */ 0xBC4D, 0xBC50, 0xBC5D, 0xBC84, 0xBC85, 0xBC88, 0xBC8B, 0xBC8C, -/* 13F8 */ 0xBC8E, 0xBC94, 0xBC95, 0xBC97, 0xD28D, 0xD28E, 0xD28F, 0xD292, -/* 1400 */ 0xD293, 0xD294, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1408 */ 0xD29D, 0xD29E, 0xD29F, 0xD2A1, 0xD2A2, 0xD2A3, 0xFFFD, 0xFFFD, -/* 1410 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2AD, 0xFFFD, 0xFFFD, -/* 1418 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2AE, 0xD2AF, 0xD2B0, 0xFFFD, -/* 1420 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD2BA, 0xD2BB, 0xD2BD, -/* 1428 */ 0xD2BE, 0xD2C1, 0xD2C3, 0xD2C4, 0xD2C5, 0xD2C6, 0xD2C7, 0xD2CA, -/* 1430 */ 0xD2D2, 0xD2D3, 0xD2D5, 0xD2D6, 0xD2D7, 0xD2D9, 0xD2DA, 0xD2DB, -/* 1438 */ 0xD2F2, 0xD2F3, 0xD2F5, 0xD2F6, 0xD2F7, 0xD2F9, 0xD2FA, 0xBC99, -/* 1440 */ 0xBC9A, 0xBCA0, 0xBCA1, 0xBCA4, 0xBCA7, 0xBCA8, 0xBCB0, 0xBCB1, -/* 1448 */ 0xBCB3, 0xBCB4, 0xBCB5, 0xBCBC, 0xBCBD, 0xBCC0, 0xBCC4, 0xBCCD, -/* 1450 */ 0xBCCF, 0xBCD0, 0xBCD1, 0xBCD5, 0xBCD8, 0xBCDC, 0xBCF4, 0xBCF5, -/* 1458 */ 0xBCF6, 0xBCF8, 0xBCFC, 0xBD04, 0xBD05, 0xBD07, 0xBD09, 0xBD10, -/* 1460 */ 0xBD14, 0xBD24, 0xBD2C, 0xBD40, 0xBD48, 0xBD49, 0xBD4C, 0xBD50, -/* 1468 */ 0xBD58, 0xBD59, 0xBD64, 0xBD68, 0xBD80, 0xBD81, 0xBD84, 0xBD87, -/* 1470 */ 0xBD88, 0xBD89, 0xBD8A, 0xBD90, 0xBD91, 0xBD93, 0xBD95, 0xBD99, -/* 1478 */ 0xBD9A, 0xBD9C, 0xBDA4, 0xBDB0, 0xBDB8, 0xBDD4, 0xBDD5, 0xBDD8, -/* 1480 */ 0xBDDC, 0xBDE9, 0xBDF0, 0xBDF4, 0xBDF8, 0xBE00, 0xBE03, 0xBE05, -/* 1488 */ 0xBE0C, 0xBE0D, 0xBE10, 0xBE14, 0xBE1C, 0xBE1D, 0xBE1F, 0xBE44, -/* 1490 */ 0xBE45, 0xBE48, 0xBE4C, 0xBE4E, 0xBE54, 0xBE55, 0xBE57, 0xBE59, -/* 1498 */ 0xBE5A, 0xBE5B, 0xBE60, 0xBE61, 0xBE64, 0xD2FB, 0xD2FC, 0xD2FD, -/* 14A0 */ 0xD2FE, 0xD2FF, 0xD302, 0xD304, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14A8 */ 0xFFFD, 0xFFFD, 0xD30F, 0xD311, 0xD312, 0xD313, 0xD315, 0xD317, -/* 14B0 */ 0xD318, 0xD319, 0xD31A, 0xD31B, 0xD31E, 0xD322, 0xD323, 0xFFFD, -/* 14B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD324, 0xD326, 0xD327, -/* 14C0 */ 0xD32A, 0xD32B, 0xD32D, 0xD32E, 0xD32F, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD33A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD346, 0xD347, 0xD348, 0xD349, 0xBE68, -/* 14D8 */ 0xBE6A, 0xBE70, 0xBE71, 0xBE73, 0xBE74, 0xBE75, 0xBE7B, 0xBE7C, -/* 14E0 */ 0xBE7D, 0xBE80, 0xBE84, 0xBE8C, 0xBE8D, 0xBE8F, 0xBE90, 0xBE91, -/* 14E8 */ 0xBE98, 0xBE99, 0xBEA8, 0xBED0, 0xBED1, 0xBED4, 0xBED7, 0xBED8, -/* 14F0 */ 0xBEE0, 0xBEE3, 0xBEE4, 0xBEE5, 0xBEEC, 0xBF01, 0xBF08, 0xBF09, -/* 14F8 */ 0xBF18, 0xBF19, 0xBF1B, 0xBF1C, 0xBF1D, 0xBF40, 0xBF41, 0xBF44, -/* 1500 */ 0xBF48, 0xBF50, 0xBF51, 0xBF55, 0xBF94, 0xBFB0, 0xBFC5, 0xBFCC, -/* 1508 */ 0xBFCD, 0xBFD0, 0xBFD4, 0xBFDC, 0xBFDF, 0xBFE1, 0xC03C, 0xC051, -/* 1510 */ 0xC058, 0xC05C, 0xC060, 0xC068, 0xC069, 0xC090, 0xC091, 0xC094, -/* 1518 */ 0xC098, 0xC0A0, 0xC0A1, 0xC0A3, 0xC0A5, 0xC0AC, 0xC0AD, 0xC0AF, -/* 1520 */ 0xC0B0, 0xC0B3, 0xC0B4, 0xC0B5, 0xC0B6, 0xC0BC, 0xC0BD, 0xC0BF, -/* 1528 */ 0xC0C0, 0xC0C1, 0xC0C5, 0xC0C8, 0xC0C9, 0xC0CC, 0xC0D0, 0xC0D8, -/* 1530 */ 0xC0D9, 0xC0DB, 0xC0DC, 0xC0DD, 0xC0E4, 0xD37E, 0xD37F, 0xD381, -/* 1538 */ 0xD382, 0xD383, 0xD385, 0xD386, 0xD387, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1540 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD388, 0xD389, 0xD38A, 0xD38B, 0xD38E, -/* 1548 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD39A, 0xD39B, -/* 1550 */ 0xD39D, 0xD39E, 0xD39F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1558 */ 0xFFFD, 0xFFFD, 0xD3AA, 0xD3AC, 0xD3AE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1560 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD3AF, 0xD3B0, 0xD3B1, 0xD3B2, 0xD3B3, -/* 1568 */ 0xD3B5, 0xD3B6, 0xD3B7, 0xD3B9, 0xD3BA, 0xD3BB, 0xFFFD, 0xFFFD, -/* 1570 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3C6, 0xD3C7, 0xC0E5, -/* 1578 */ 0xC0E8, 0xC0EC, 0xC0F4, 0xC0F5, 0xC0F7, 0xC0F9, 0xC100, 0xC104, -/* 1580 */ 0xC108, 0xC110, 0xC115, 0xC11C, 0xC11D, 0xC11E, 0xC11F, 0xC120, -/* 1588 */ 0xC123, 0xC124, 0xC126, 0xC127, 0xC12C, 0xC12D, 0xC12F, 0xC130, -/* 1590 */ 0xC131, 0xC136, 0xC138, 0xC139, 0xC13C, 0xC140, 0xC148, 0xC149, -/* 1598 */ 0xC14B, 0xC14C, 0xC14D, 0xC154, 0xC155, 0xC158, 0xC15C, 0xC164, -/* 15A0 */ 0xC165, 0xC167, 0xC168, 0xC169, 0xC170, 0xC174, 0xC178, 0xC185, -/* 15A8 */ 0xC18C, 0xC18D, 0xC18E, 0xC190, 0xC194, 0xC196, 0xC19C, 0xC19D, -/* 15B0 */ 0xC19F, 0xC1A1, 0xC1A5, 0xC1A8, 0xC1A9, 0xC1AC, 0xC1B0, 0xC1BD, -/* 15B8 */ 0xC1C4, 0xC1C8, 0xC1CC, 0xC1D4, 0xC1D7, 0xC1D8, 0xC1E0, 0xC1E4, -/* 15C0 */ 0xC1E8, 0xC1F0, 0xC1F1, 0xC1F3, 0xC1FC, 0xC1FD, 0xC200, 0xC204, -/* 15C8 */ 0xC20C, 0xC20D, 0xC20F, 0xC211, 0xC218, 0xC219, 0xC21C, 0xC21F, -/* 15D0 */ 0xC220, 0xC228, 0xC229, 0xC22B, 0xC22D, 0xD3D7, 0xFFFD, 0xFFFD, -/* 15D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3E2, 0xFFFD, -/* 15E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3EE, -/* 15E8 */ 0xD3EF, 0xD3F1, 0xD3F2, 0xD3F3, 0xD3F5, 0xD3F6, 0xD3F7, 0xFFFD, -/* 15F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD3F8, 0xD3F9, 0xD3FA, -/* 15F8 */ 0xD3FB, 0xD3FE, 0xD400, 0xC22F, 0xC231, 0xC232, 0xC234, 0xC248, -/* 1600 */ 0xC250, 0xC251, 0xC254, 0xC258, 0xC260, 0xC265, 0xC26C, 0xC26D, -/* 1608 */ 0xC270, 0xC274, 0xC27C, 0xC27D, 0xC27F, 0xC281, 0xC288, 0xC289, -/* 1610 */ 0xC290, 0xC298, 0xC29B, 0xC29D, 0xC2A4, 0xC2A5, 0xC2A8, 0xC2AC, -/* 1618 */ 0xC2AD, 0xC2B4, 0xC2B5, 0xC2B7, 0xC2B9, 0xC2DC, 0xC2DD, 0xC2E0, -/* 1620 */ 0xC2E3, 0xC2E4, 0xC2EB, 0xC2EC, 0xC2ED, 0xC2EF, 0xC2F1, 0xC2F6, -/* 1628 */ 0xC2F8, 0xC2F9, 0xC2FB, 0xC2FC, 0xC300, 0xC308, 0xC309, 0xC30C, -/* 1630 */ 0xC30D, 0xC313, 0xC314, 0xC315, 0xC318, 0xC31C, 0xC324, 0xC325, -/* 1638 */ 0xC328, 0xC329, 0xC345, 0xC368, 0xC369, 0xC36C, 0xC370, 0xC372, -/* 1640 */ 0xC378, 0xC379, 0xC37C, 0xC37D, 0xC384, 0xC388, 0xC38C, 0xC3C0, -/* 1648 */ 0xC3D8, 0xC3D9, 0xC3DC, 0xC3DF, 0xC3E0, 0xC3E2, 0xC3E8, 0xC3E9, -/* 1650 */ 0xC3ED, 0xC3F4, 0xC3F5, 0xC3F8, 0xC408, 0xC410, 0xC424, 0xC42C, -/* 1658 */ 0xC430, 0xD441, 0xD442, 0xD443, 0xD45D, 0xD45E, 0xD45F, 0xD461, -/* 1660 */ 0xD462, 0xD463, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1668 */ 0xFFFD, 0xFFFD, 0xD46E, 0xD470, 0xD471, 0xD472, 0xFFFD, 0xFFFD, -/* 1670 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD473, 0xD474, 0xD475, 0xD476, -/* 1678 */ 0xD477, 0xD47A, 0xD47B, 0xD47D, 0xD47E, 0xD481, 0xD483, 0xD484, -/* 1680 */ 0xD485, 0xD486, 0xD487, 0xD48A, 0xD48C, 0xC434, 0xC43C, 0xC43D, -/* 1688 */ 0xC448, 0xC464, 0xC465, 0xC468, 0xC46C, 0xC474, 0xC475, 0xC479, -/* 1690 */ 0xC480, 0xC494, 0xC49C, 0xC4B8, 0xC4BC, 0xC4E9, 0xC4F0, 0xC4F1, -/* 1698 */ 0xC4F4, 0xC4F8, 0xC4FA, 0xC4FF, 0xC500, 0xC501, 0xC50C, 0xC510, -/* 16A0 */ 0xC514, 0xC51C, 0xC528, 0xC529, 0xC52C, 0xC530, 0xC538, 0xC539, -/* 16A8 */ 0xC53B, 0xC53D, 0xC544, 0xC545, 0xC548, 0xC549, 0xC54A, 0xC54C, -/* 16B0 */ 0xC54D, 0xC54E, 0xC553, 0xC554, 0xC555, 0xC557, 0xC558, 0xC559, -/* 16B8 */ 0xC55D, 0xC55E, 0xC560, 0xC561, 0xC564, 0xC568, 0xC570, 0xC571, -/* 16C0 */ 0xC573, 0xC574, 0xC575, 0xC57C, 0xC57D, 0xC580, 0xC584, 0xC587, -/* 16C8 */ 0xC58C, 0xC58D, 0xC58F, 0xC591, 0xC595, 0xC597, 0xC598, 0xC59C, -/* 16D0 */ 0xC5A0, 0xC5A9, 0xC5B4, 0xC5B5, 0xC5B8, 0xC5B9, 0xC5BB, 0xC5BC, -/* 16D8 */ 0xC5BD, 0xC5BE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16E0 */ 0xFFFD, 0xC5CC, 0xC5CE, 0xD4CD, 0xD4CE, 0xD4CF, 0xD4D1, 0xD4D2, -/* 16E8 */ 0xD4D3, 0xD4D5, 0xD4DD, 0xD4DE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 16F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD4E9, 0xD4EA, 0xD4EB, 0xD4ED, -/* 16F8 */ 0xD4EE, 0xD4EF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1700 */ 0xFFFD, 0xD4F9, 0xD4FA, 0xD4FC, 0xC5D0, 0xC5D1, 0xC5D4, 0xC5D8, -/* 1708 */ 0xC5E0, 0xC5E1, 0xC5E3, 0xC5E5, 0xC5EC, 0xC5ED, 0xC5EE, 0xC5F0, -/* 1710 */ 0xC5F4, 0xC5F6, 0xC5F7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1718 */ 0xFFFD, 0xC605, 0xC606, 0xC607, 0xC608, 0xC60C, 0xC610, 0xC618, -/* 1720 */ 0xC619, 0xC61B, 0xC61C, 0xC624, 0xC625, 0xC628, 0xC62C, 0xC62D, -/* 1728 */ 0xC62E, 0xC630, 0xC633, 0xC634, 0xC635, 0xC637, 0xC639, 0xC63B, -/* 1730 */ 0xC640, 0xC641, 0xC644, 0xC648, 0xC650, 0xC651, 0xC653, 0xC654, -/* 1738 */ 0xC655, 0xC65C, 0xC65D, 0xC660, 0xC66C, 0xC66F, 0xC671, 0xC678, -/* 1740 */ 0xC679, 0xC67C, 0xC680, 0xC688, 0xC689, 0xC68B, 0xC68D, 0xC694, -/* 1748 */ 0xC695, 0xC698, 0xC69C, 0xC6A4, 0xC6A5, 0xC6A7, 0xC6A9, 0xC6B0, -/* 1750 */ 0xC6B1, 0xC6B4, 0xC6B8, 0xC6B9, 0xC6BA, 0xC6C0, 0xC6C1, 0xC6C3, -/* 1758 */ 0xC6C5, 0xC6CC, 0xC6CD, 0xC6D0, 0xC6D4, 0xC6DC, 0xC6DD, 0xC6E0, -/* 1760 */ 0xC6E1, 0xC6E8, 0xD505, 0xD506, 0xD507, 0xD509, 0xD50A, 0xD50B, -/* 1768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD516, -/* 1770 */ 0xD538, 0xD539, 0xD53A, 0xD53B, 0xD53E, 0xD53F, 0xD541, 0xD542, -/* 1778 */ 0xD543, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1780 */ 0xD54E, 0xD550, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1788 */ 0xD55A, 0xD55B, 0xD55D, 0xD55E, 0xD55F, 0xD561, 0xD562, 0xD563, -/* 1790 */ 0xC6E9, 0xC6EC, 0xC6F0, 0xC6F8, 0xC6F9, 0xC6FD, 0xC704, 0xC705, -/* 1798 */ 0xC708, 0xC70C, 0xC714, 0xC715, 0xC717, 0xC719, 0xC720, 0xC721, -/* 17A0 */ 0xC724, 0xC728, 0xC730, 0xC731, 0xC733, 0xC735, 0xC737, 0xC73C, -/* 17A8 */ 0xC73D, 0xC740, 0xC744, 0xC74A, 0xC74C, 0xC74D, 0xC74F, 0xFFFD, -/* 17B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xC75C, -/* 17B8 */ 0xC760, 0xC768, 0xC76B, 0xC774, 0xC775, 0xC778, 0xC77C, 0xC77D, -/* 17C0 */ 0xC77E, 0xC783, 0xC784, 0xC785, 0xC787, 0xC788, 0xC789, 0xC78A, -/* 17C8 */ 0xC78E, 0xC790, 0xC791, 0xC794, 0xC796, 0xC797, 0xC798, 0xC79A, -/* 17D0 */ 0xC7A0, 0xC7A1, 0xC7A3, 0xC7A4, 0xC7A5, 0xC7A6, 0xC7AC, 0xC7AD, -/* 17D8 */ 0xC7B0, 0xC7B4, 0xC7BC, 0xC7BD, 0xC7BF, 0xC7C0, 0xC7C1, 0xC7C8, -/* 17E0 */ 0xC7C9, 0xC7CC, 0xC7CE, 0xC7D0, 0xC7D8, 0xC7DD, 0xC7E4, 0xC7E8, -/* 17E8 */ 0xC7EC, 0xC800, 0xC801, 0xC804, 0xC808, 0xC80A, 0xD564, 0xD566, -/* 17F0 */ 0xD567, 0xD56A, 0xD56C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17F8 */ 0xFFFD, 0xD576, 0xD577, 0xD579, 0xD57A, 0xD57B, 0xFFFD, 0xFFFD, -/* 1800 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD586, 0xD58A, 0xD58B, -/* 1808 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD58C, 0xD58D, -/* 1810 */ 0xD58E, 0xD58F, 0xD5A6, 0xD5A7, 0xC810, 0xC811, 0xC813, 0xC815, -/* 1818 */ 0xC816, 0xC81C, 0xC81D, 0xC820, 0xC824, 0xC82C, 0xC82D, 0xC82F, -/* 1820 */ 0xC831, 0xC838, 0xC83C, 0xC840, 0xC848, 0xC849, 0xC84C, 0xC84D, -/* 1828 */ 0xC854, 0xC870, 0xC871, 0xC874, 0xC878, 0xC87A, 0xC880, 0xC881, -/* 1830 */ 0xC883, 0xC885, 0xC886, 0xC887, 0xC88B, 0xC88C, 0xC88D, 0xC894, -/* 1838 */ 0xC89D, 0xC89F, 0xC8A1, 0xC8A8, 0xC8BC, 0xC8BD, 0xC8C4, 0xC8C8, -/* 1840 */ 0xC8CC, 0xC8D4, 0xC8D5, 0xC8D7, 0xC8D9, 0xC8E0, 0xC8E1, 0xC8E4, -/* 1848 */ 0xC8F5, 0xC8FC, 0xC8FD, 0xC900, 0xC904, 0xC905, 0xC906, 0xC90C, -/* 1850 */ 0xC90D, 0xC90F, 0xC911, 0xC918, 0xC92C, 0xC934, 0xC950, 0xC951, -/* 1858 */ 0xC954, 0xC958, 0xC960, 0xC961, 0xC963, 0xC96C, 0xC970, 0xC974, -/* 1860 */ 0xC97C, 0xC988, 0xC989, 0xC98C, 0xC990, 0xC998, 0xC999, 0xC99B, -/* 1868 */ 0xC99D, 0xC9C0, 0xC9C1, 0xC9C4, 0xC9C7, 0xC9C8, 0xC9CA, 0xC9D0, -/* 1870 */ 0xC9D1, 0xC9D3, 0xD5CA, 0xD5CB, 0xD5CD, 0xD5CE, 0xD5CF, 0xD5D1, -/* 1878 */ 0xD5D3, 0xD5D4, 0xD5D5, 0xD5D6, 0xD5D7, 0xD5DA, 0xD5DC, 0xFFFD, -/* 1880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD5E6, 0xD5E7, 0xD5E9, -/* 1888 */ 0xD5EA, 0xD5EB, 0xD5ED, 0xD5EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1890 */ 0xFFFD, 0xFFFD, 0xD5EF, 0xD5F0, 0xD5F1, 0xD5F2, 0xD5F3, 0xD5F6, -/* 1898 */ 0xD5F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD602, -/* 18A0 */ 0xD603, 0xD605, 0xD606, 0xD607, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 18A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD612, 0xD61D, 0xD61E, 0xD61F, 0xD621, -/* 18B0 */ 0xD622, 0xD623, 0xD63A, 0xD63B, 0xC9D5, 0xC9D6, 0xC9D9, 0xC9DA, -/* 18B8 */ 0xC9DC, 0xC9DD, 0xC9E0, 0xC9E2, 0xC9E4, 0xC9E7, 0xC9EC, 0xC9ED, -/* 18C0 */ 0xC9EF, 0xC9F0, 0xC9F1, 0xC9F8, 0xC9F9, 0xC9FC, 0xCA00, 0xCA08, -/* 18C8 */ 0xCA09, 0xCA0B, 0xCA0C, 0xCA0D, 0xCA14, 0xCA18, 0xCA29, 0xCA4C, -/* 18D0 */ 0xCA4D, 0xCA50, 0xCA54, 0xCA5C, 0xCA5D, 0xCA5F, 0xCA60, 0xCA61, -/* 18D8 */ 0xCA68, 0xCA7D, 0xCA84, 0xCA98, 0xCABC, 0xCABD, 0xCAC0, 0xCAC4, -/* 18E0 */ 0xCACC, 0xCACD, 0xCACF, 0xCAD1, 0xCAD3, 0xCAD8, 0xCAD9, 0xCAE0, -/* 18E8 */ 0xCAEC, 0xCAF4, 0xCB08, 0xCB10, 0xCB14, 0xCB18, 0xCB20, 0xCB21, -/* 18F0 */ 0xCB41, 0xCB48, 0xCB49, 0xCB4C, 0xCB50, 0xCB58, 0xCB59, 0xCB5D, -/* 18F8 */ 0xCB64, 0xCB78, 0xCB79, 0xCB9C, 0xCBB8, 0xCBD4, 0xCBE4, 0xCBE7, -/* 1900 */ 0xCBE9, 0xCC0C, 0xCC0D, 0xCC10, 0xCC14, 0xCC1C, 0xCC1D, 0xCC21, -/* 1908 */ 0xCC22, 0xCC27, 0xCC28, 0xCC29, 0xCC2C, 0xCC2E, 0xCC30, 0xCC38, -/* 1910 */ 0xCC39, 0xCC3B, 0xD63D, 0xD63E, 0xD63F, 0xD641, 0xD642, 0xD643, -/* 1918 */ 0xD644, 0xD646, 0xD647, 0xD64A, 0xD64C, 0xD64E, 0xD64F, 0xD650, -/* 1920 */ 0xD652, 0xD653, 0xD656, 0xD657, 0xD659, 0xD65A, 0xD65B, 0xD65D, -/* 1928 */ 0xD65E, 0xD65F, 0xD660, 0xD661, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1930 */ 0xFFFD, 0xFFFD, 0xD662, 0xD663, 0xD664, 0xD665, 0xD666, 0xD668, -/* 1938 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD672, 0xD673, -/* 1940 */ 0xD681, 0xD682, 0xD684, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1948 */ 0xFFFD, 0xD68E, 0xD68F, 0xD691, 0xD692, 0xD693, 0xFFFD, 0xFFFD, -/* 1950 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD69E, 0xD6A0, -/* 1958 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6A9, 0xD6AA, -/* 1960 */ 0xCC3C, 0xCC3D, 0xCC3E, 0xCC44, 0xCC45, 0xCC48, 0xCC4C, 0xCC54, -/* 1968 */ 0xCC55, 0xCC57, 0xCC58, 0xCC59, 0xCC60, 0xCC64, 0xCC66, 0xCC68, -/* 1970 */ 0xCC70, 0xCC75, 0xCC98, 0xCC99, 0xCC9C, 0xCCA0, 0xCCA8, 0xCCA9, -/* 1978 */ 0xCCAB, 0xCCAC, 0xCCAD, 0xCCB4, 0xCCB5, 0xCCB8, 0xCCBC, 0xCCC4, -/* 1980 */ 0xCCC5, 0xCCC7, 0xCCC9, 0xCCD0, 0xCCD4, 0xCCE4, 0xCCEC, 0xCCF0, -/* 1988 */ 0xCD01, 0xCD08, 0xCD09, 0xCD0C, 0xCD10, 0xCD18, 0xCD19, 0xCD1B, -/* 1990 */ 0xCD1D, 0xCD24, 0xCD28, 0xCD2C, 0xCD39, 0xCD5C, 0xCD60, 0xCD64, -/* 1998 */ 0xCD6C, 0xCD6D, 0xCD6F, 0xCD71, 0xCD78, 0xCD88, 0xCD94, 0xCD95, -/* 19A0 */ 0xCD98, 0xCD9C, 0xCDA4, 0xCDA5, 0xCDA7, 0xCDA9, 0xCDB0, 0xCDC4, -/* 19A8 */ 0xCDCC, 0xCDD0, 0xCDE8, 0xCDEC, 0xCDF0, 0xCDF8, 0xCDF9, 0xCDFB, -/* 19B0 */ 0xCDFD, 0xCE04, 0xCE08, 0xCE0C, 0xCE14, 0xCE19, 0xCE20, 0xCE21, -/* 19B8 */ 0xCE24, 0xCE28, 0xCE30, 0xCE31, 0xCE33, 0xCE35, 0xD6AB, 0xD6AD, -/* 19C0 */ 0xD6AE, 0xD6AF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19C8 */ 0xFFFD, 0xFFFD, 0xD6BA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xD6C6, 0xD6C7, 0xD6C9, 0xD6CA, 0xD6CB, -/* 19D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6CD, 0xD6CE, -/* 19E0 */ 0xD6CF, 0xD6D0, 0xD6D2, 0xD6D3, 0xD6D5, 0xD6D6, 0xD6D8, 0xFFFD, -/* 19E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6E1, 0xD6E2, 0xD6E3, -/* 19F0 */ 0xD6E5, 0xD6E6, 0xD6E7, 0xD6E9, 0xD6EA, 0xD6EB, 0xD6EC, 0xD6ED, -/* 19F8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD6EE, 0xD6EF, -/* 1A00 */ 0xD6F1, 0xD6F2, 0xD6F3, 0xD6F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A08 */ 0xFFFD, 0xFFFD, 0xD6FE, 0xD6FF, 0xD701, 0xD702, 0xD703, 0xD712, -/* 1A10 */ 0xD713, 0xD714, 0xCE58, 0xCE59, 0xCE5C, 0xCE5F, 0xCE60, 0xCE61, -/* 1A18 */ 0xCE68, 0xCE69, 0xCE6B, 0xCE6D, 0xCE74, 0xCE75, 0xCE78, 0xCE7C, -/* 1A20 */ 0xCE84, 0xCE85, 0xCE87, 0xCE89, 0xCE90, 0xCE91, 0xCE94, 0xCE98, -/* 1A28 */ 0xCEA0, 0xCEA1, 0xCEA3, 0xCEA4, 0xCEA5, 0xCEAC, 0xCEAD, 0xCEC1, -/* 1A30 */ 0xCEE4, 0xCEE5, 0xCEE8, 0xCEEB, 0xCEEC, 0xCEF4, 0xCEF5, 0xCEF7, -/* 1A38 */ 0xCEF8, 0xCEF9, 0xCF00, 0xCF01, 0xCF04, 0xCF08, 0xCF10, 0xCF11, -/* 1A40 */ 0xCF13, 0xCF15, 0xCF1C, 0xCF20, 0xCF24, 0xCF2C, 0xCF2D, 0xCF2F, -/* 1A48 */ 0xCF30, 0xCF31, 0xCF38, 0xCF54, 0xCF55, 0xCF58, 0xCF5C, 0xCF64, -/* 1A50 */ 0xCF65, 0xCF67, 0xCF69, 0xCF70, 0xCF71, 0xCF74, 0xCF78, 0xCF80, -/* 1A58 */ 0xCF85, 0xCF8C, 0xCFA1, 0xCFA8, 0xCFB0, 0xCFC4, 0xCFE0, 0xCFE1, -/* 1A60 */ 0xCFE4, 0xCFE8, 0xCFF0, 0xCFF1, 0xCFF3, 0xCFF5, 0xCFFC, 0xD000, -/* 1A68 */ 0xD004, 0xD011, 0xD018, 0xD02D, 0xD034, 0xD035, 0xD038, 0xD03C, -/* 1A70 */ 0xD715, 0xD716, 0xD717, 0xD71A, 0xD71B, 0xD71D, 0xD71E, 0xD71F, -/* 1A78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD72A, -/* 1A80 */ 0xD72C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD736, -/* 1A88 */ 0xD737, 0xD739, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A90 */ 0xD73A, 0xD73B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A98 */ 0xFFFD, 0xD745, 0xD746, 0xD748, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AA0 */ 0xFFFD, 0xFFFD, 0xD752, 0xD753, 0xD755, 0xD75A, 0xD75B, 0xD75C, -/* 1AA8 */ 0xD75D, 0xD75E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AB0 */ 0xD75F, 0xD762, 0xD764, 0xD766, 0xD767, 0xD768, 0xD76A, 0xD76B, -/* 1AB8 */ 0xD76D, 0xD76E, 0xD76F, 0xD771, 0xD772, 0xD773, 0xFFFD, 0xFFFD, -/* 1AC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD77E, 0xD77F, 0xD780, -/* 1AC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xD78A, 0xD78B, -/* 1AD0 */ 0xD044, 0xD045, 0xD047, 0xD049, 0xD050, 0xD054, 0xD058, 0xD060, -/* 1AD8 */ 0xD06C, 0xD06D, 0xD070, 0xD074, 0xD07C, 0xD07D, 0xD081, 0xD0A4, -/* 1AE0 */ 0xD0A5, 0xD0A8, 0xD0AC, 0xD0B4, 0xD0B5, 0xD0B7, 0xD0B9, 0xD0C0, -/* 1AE8 */ 0xD0C1, 0xD0C4, 0xD0C8, 0xD0C9, 0xD0D0, 0xD0D1, 0xD0D3, 0xD0D4, -/* 1AF0 */ 0xD0D5, 0xD0DC, 0xD0DD, 0xD0E0, 0xD0E4, 0xD0EC, 0xD0ED, 0xD0EF, -/* 1AF8 */ 0xD0F0, 0xD0F1, 0xD0F8, 0xD10D, 0xD130, 0xD131, 0xD134, 0xD138, -/* 1B00 */ 0xD13A, 0xD140, 0xD141, 0xD143, 0xD144, 0xD145, 0xD14C, 0xD14D, -/* 1B08 */ 0xD150, 0xD154, 0xD15C, 0xD15D, 0xD15F, 0xD161, 0xD168, 0xD16C, -/* 1B10 */ 0xD17C, 0xD184, 0xD188, 0xD1A0, 0xD1A1, 0xD1A4, 0xD1A8, 0xD1B0, -/* 1B18 */ 0xD1B1, 0xD1B3, 0xD1B5, 0xD1BA, 0xD1BC, 0xD1C0, 0xD1D8, 0xD1F4, -/* 1B20 */ 0xD1F8, 0xD207, 0xD209, 0xD210, 0xD22C, 0xD22D, 0xD230, 0xD234, -/* 1B28 */ 0xD23C, 0xD23D, 0xD23F, 0xD241, 0xD248, 0xD25C, 0xD78D, 0xD78E, -/* 1B30 */ 0xD78F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B38 */ 0xD79A, 0xD79C, 0xD264, 0xD280, 0xD281, 0xD284, 0xD288, 0xD290, -/* 1B40 */ 0xD291, 0xD295, 0xD29C, 0xD2A0, 0xD2A4, 0xD2AC, 0xD2B1, 0xD2B8, -/* 1B48 */ 0xD2B9, 0xD2BC, 0xD2BF, 0xD2C0, 0xD2C2, 0xD2C8, 0xD2C9, 0xD2CB, -/* 1B50 */ 0xD2D4, 0xD2D8, 0xD2DC, 0xD2E4, 0xD2E5, 0xD2F0, 0xD2F1, 0xD2F4, -/* 1B58 */ 0xD2F8, 0xD300, 0xD301, 0xD303, 0xD305, 0xD30C, 0xD30D, 0xD30E, -/* 1B60 */ 0xD310, 0xD314, 0xD316, 0xD31C, 0xD31D, 0xD31F, 0xD320, 0xD321, -/* 1B68 */ 0xD325, 0xD328, 0xD329, 0xD32C, 0xD330, 0xD338, 0xD339, 0xD33B, -/* 1B70 */ 0xD33C, 0xD33D, 0xD344, 0xD345, 0xD37C, 0xD37D, 0xD380, 0xD384, -/* 1B78 */ 0xD38C, 0xD38D, 0xD38F, 0xD390, 0xD391, 0xD398, 0xD399, 0xD39C, -/* 1B80 */ 0xD3A0, 0xD3A8, 0xD3A9, 0xD3AB, 0xD3AD, 0xD3B4, 0xD3B8, 0xD3BC, -/* 1B88 */ 0xD3C4, 0xD3C5, 0xD3C8, 0xD3C9, 0xD3D0, 0xD3D8, 0xD3E1, 0xD3E3, -/* 1B90 */ 0xD3EC, 0xD3ED, 0xD3F0, 0xD3F4, 0xD3FC, 0xD3FD, 0xD3FF, 0xD401, -/* 1B98 */ 0xD408, 0xD41D, 0xD440, 0xD444, 0xD45C, 0xD460, 0xD464, 0xD46D, -/* 1BA0 */ 0xD46F, 0xD478, 0xD479, 0xD47C, 0xD47F, 0xD480, 0xD482, 0xD488, -/* 1BA8 */ 0xD489, 0xD48B, 0xD48D, 0xD494, 0xD4A9, 0xD4CC, 0xD4D0, 0xD4D4, -/* 1BB0 */ 0xD4DC, 0xD4DF, 0xD4E8, 0xD4EC, 0xD4F0, 0xD4F8, 0xD4FB, 0xD4FD, -/* 1BB8 */ 0xD504, 0xD508, 0xD50C, 0xD514, 0xD515, 0xD517, 0xD53C, 0xD53D, -/* 1BC0 */ 0xD540, 0xD544, 0xD54C, 0xD54D, 0xD54F, 0xD551, 0xD558, 0xD559, -/* 1BC8 */ 0xD55C, 0xD560, 0xD565, 0xD568, 0xD569, 0xD56B, 0xD56D, 0xD574, -/* 1BD0 */ 0xD575, 0xD578, 0xD57C, 0xD584, 0xD585, 0xD587, 0xD588, 0xD589, -/* 1BD8 */ 0xD590, 0xD5A5, 0xD5C8, 0xD5C9, 0xD5CC, 0xD5D0, 0xD5D2, 0xD5D8, -/* 1BE0 */ 0xD5D9, 0xD5DB, 0xD5DD, 0xD5E4, 0xD5E5, 0xD5E8, 0xD5EC, 0xD5F4, -/* 1BE8 */ 0xD5F5, 0xD5F7, 0xD5F9, 0xD600, 0xD601, 0xD604, 0xD608, 0xD610, -/* 1BF0 */ 0xD611, 0xD613, 0xD614, 0xD615, 0xD61C, 0xD620, 0xD624, 0xD62D, -/* 1BF8 */ 0xD638, 0xD639, 0xD63C, 0xD640, 0xD645, 0xD648, 0xD649, 0xD64B, -/* 1C00 */ 0xD64D, 0xD651, 0xD654, 0xD655, 0xD658, 0xD65C, 0xD667, 0xD669, -/* 1C08 */ 0xD670, 0xD671, 0xD674, 0xD683, 0xD685, 0xD68C, 0xD68D, 0xD690, -/* 1C10 */ 0xD694, 0xD69D, 0xD69F, 0xD6A1, 0xD6A8, 0xD6AC, 0xD6B0, 0xD6B9, -/* 1C18 */ 0xD6BB, 0xD6C4, 0xD6C5, 0xD6C8, 0xD6CC, 0xD6D1, 0xD6D4, 0xD6D7, -/* 1C20 */ 0xD6D9, 0xD6E0, 0xD6E4, 0xD6E8, 0xD6F0, 0xD6F5, 0xD6FC, 0xD6FD, -/* 1C28 */ 0xD700, 0xD704, 0xD711, 0xD718, 0xD719, 0xD71C, 0xD720, 0xD728, -/* 1C30 */ 0xD729, 0xD72B, 0xD72D, 0xD734, 0xD735, 0xD738, 0xD73C, 0xD744, -/* 1C38 */ 0xD747, 0xD749, 0xD750, 0xD751, 0xD754, 0xD756, 0xD757, 0xD758, -/* 1C40 */ 0xD759, 0xD760, 0xD761, 0xD763, 0xD765, 0xD769, 0xD76C, 0xD770, -/* 1C48 */ 0xD774, 0xD77C, 0xD77D, 0xD781, 0xD788, 0xD789, 0xD78C, 0xD790, -/* 1C50 */ 0xD798, 0xD799, 0xD79B, 0xD79D, 0x4F3D, 0x4F73, 0x5047, 0x50F9, -/* 1C58 */ 0x52A0, 0x53EF, 0x5475, 0x54E5, 0x5609, 0x5AC1, 0x5BB6, 0x6687, -/* 1C60 */ 0x67B6, 0x67B7, 0x67EF, 0x6B4C, 0x73C2, 0x75C2, 0x7A3C, 0x82DB, -/* 1C68 */ 0x8304, 0x8857, 0x8888, 0x8A36, 0x8CC8, 0x8DCF, 0x8EFB, 0x8FE6, -/* 1C70 */ 0x99D5, 0x523B, 0x5374, 0x5404, 0x606A, 0x6164, 0x6BBC, 0x73CF, -/* 1C78 */ 0x811A, 0x89BA, 0x89D2, 0x95A3, 0x4F83, 0x520A, 0x58BE, 0x5978, -/* 1C80 */ 0x59E6, 0x5E72, 0x5E79, 0x61C7, 0x63C0, 0x6746, 0x67EC, 0x687F, -/* 1C88 */ 0x6F97, 0x764E, 0x770B, 0x78F5, 0x7A08, 0x7AFF, 0x7C21, 0x809D, -/* 1C90 */ 0x826E, 0x8271, 0x8AEB, 0x9593, 0x4E6B, 0x559D, 0x66F7, 0x6E34, -/* 1C98 */ 0x78A3, 0x7AED, 0x845B, 0x8910, 0x874E, 0x97A8, 0x52D8, 0x574E, -/* 1CA0 */ 0x582A, 0x5D4C, 0x611F, 0x61BE, 0x6221, 0x6562, 0x67D1, 0x6A44, -/* 1CA8 */ 0x6E1B, 0x7518, 0x75B3, 0x76E3, 0x77B0, 0x7D3A, 0x90AF, 0x9451, -/* 1CB0 */ 0x9452, 0x9F95, 0x5323, 0x5CAC, 0x7532, 0x80DB, 0x9240, 0x9598, -/* 1CB8 */ 0x525B, 0x5808, 0x59DC, 0x5CA1, 0x5D17, 0x5EB7, 0x5F3A, 0x5F4A, -/* 1CC0 */ 0x6177, 0x6C5F, 0x757A, 0x7586, 0x7CE0, 0x7D73, 0x7DB1, 0x7F8C, -/* 1CC8 */ 0x8154, 0x8221, 0x8591, 0x8941, 0x8B1B, 0x92FC, 0x964D, 0x9C47, -/* 1CD0 */ 0x4ECB, 0x4EF7, 0x500B, 0x51F1, 0x584F, 0x6137, 0x613E, 0x6168, -/* 1CD8 */ 0x6539, 0x69EA, 0x6F11, 0x75A5, 0x7686, 0x76D6, 0x7B87, 0x82A5, -/* 1CE0 */ 0x84CB, 0xF900, 0x93A7, 0x958B, 0x5580, 0x5BA2, 0x5751, 0xF901, -/* 1CE8 */ 0x7CB3, 0x7FB9, 0x91B5, 0x5028, 0x53BB, 0x5C45, 0x5DE8, 0x62D2, -/* 1CF0 */ 0x636E, 0x64DA, 0x64E7, 0x6E20, 0x70AC, 0x795B, 0x8DDD, 0x8E1E, -/* 1CF8 */ 0xF902, 0x907D, 0x9245, 0x92F8, 0x4E7E, 0x4EF6, 0x5065, 0x5DFE, -/* 1D00 */ 0x5EFA, 0x6106, 0x6957, 0x8171, 0x8654, 0x8E47, 0x9375, 0x9A2B, -/* 1D08 */ 0x4E5E, 0x5091, 0x6770, 0x6840, 0x5109, 0x528D, 0x5292, 0x6AA2, -/* 1D10 */ 0x77BC, 0x9210, 0x9ED4, 0x52AB, 0x602F, 0x8FF2, 0x5048, 0x61A9, -/* 1D18 */ 0x63ED, 0x64CA, 0x683C, 0x6A84, 0x6FC0, 0x8188, 0x89A1, 0x9694, -/* 1D20 */ 0x5805, 0x727D, 0x72AC, 0x7504, 0x7D79, 0x7E6D, 0x80A9, 0x898B, -/* 1D28 */ 0x8B74, 0x9063, 0x9D51, 0x6289, 0x6C7A, 0x6F54, 0x7D50, 0x7F3A, -/* 1D30 */ 0x8A23, 0x517C, 0x614A, 0x7B9D, 0x8B19, 0x9257, 0x938C, 0x4EAC, -/* 1D38 */ 0x4FD3, 0x501E, 0x50BE, 0x5106, 0x52C1, 0x52CD, 0x537F, 0x5770, -/* 1D40 */ 0x5883, 0x5E9A, 0x5F91, 0x6176, 0x61AC, 0x64CE, 0x656C, 0x666F, -/* 1D48 */ 0x66BB, 0x66F4, 0x6897, 0x6D87, 0x7085, 0x70F1, 0x749F, 0x74A5, -/* 1D50 */ 0x74CA, 0x75D9, 0x786C, 0x78EC, 0x7ADF, 0x7AF6, 0x7D45, 0x7D93, -/* 1D58 */ 0x8015, 0x803F, 0x811B, 0x8396, 0x8B66, 0x8F15, 0x9015, 0x93E1, -/* 1D60 */ 0x9803, 0x9838, 0x9A5A, 0x9BE8, 0x4FC2, 0x5553, 0x583A, 0x5951, -/* 1D68 */ 0x5B63, 0x5C46, 0x60B8, 0x6212, 0x6842, 0x68B0, 0x68E8, 0x6EAA, -/* 1D70 */ 0x754C, 0x7678, 0x78CE, 0x7A3D, 0x7CFB, 0x7E6B, 0x7E7C, 0x8A08, -/* 1D78 */ 0x8AA1, 0x8C3F, 0x968E, 0x9DC4, 0x53E4, 0x53E9, 0x544A, 0x5471, -/* 1D80 */ 0x56FA, 0x59D1, 0x5B64, 0x5C3B, 0x5EAB, 0x62F7, 0x6537, 0x6545, -/* 1D88 */ 0x6572, 0x66A0, 0x67AF, 0x69C1, 0x6CBD, 0x75FC, 0x7690, 0x777E, -/* 1D90 */ 0x7A3F, 0x7F94, 0x8003, 0x80A1, 0x818F, 0x82E6, 0x82FD, 0x83F0, -/* 1D98 */ 0x85C1, 0x8831, 0x88B4, 0x8AA5, 0xF903, 0x8F9C, 0x932E, 0x96C7, -/* 1DA0 */ 0x9867, 0x9AD8, 0x9F13, 0x54ED, 0x659B, 0x66F2, 0x688F, 0x7A40, -/* 1DA8 */ 0x8C37, 0x9D60, 0x56F0, 0x5764, 0x5D11, 0x6606, 0x68B1, 0x68CD, -/* 1DB0 */ 0x6EFE, 0x7428, 0x889E, 0x9BE4, 0x6C68, 0xF904, 0x9AA8, 0x4F9B, -/* 1DB8 */ 0x516C, 0x5171, 0x529F, 0x5B54, 0x5DE5, 0x6050, 0x606D, 0x62F1, -/* 1DC0 */ 0x63A7, 0x653B, 0x73D9, 0x7A7A, 0x86A3, 0x8CA2, 0x978F, 0x4E32, -/* 1DC8 */ 0x5BE1, 0x6208, 0x679C, 0x74DC, 0x79D1, 0x83D3, 0x8A87, 0x8AB2, -/* 1DD0 */ 0x8DE8, 0x904E, 0x934B, 0x9846, 0x5ED3, 0x69E8, 0x85FF, 0x90ED, -/* 1DD8 */ 0xF905, 0x51A0, 0x5B98, 0x5BEC, 0x6163, 0x68FA, 0x6B3E, 0x704C, -/* 1DE0 */ 0x742F, 0x74D8, 0x7BA1, 0x7F50, 0x83C5, 0x89C0, 0x8CAB, 0x95DC, -/* 1DE8 */ 0x9928, 0x522E, 0x605D, 0x62EC, 0x9002, 0x4F8A, 0x5149, 0x5321, -/* 1DF0 */ 0x58D9, 0x5EE3, 0x66E0, 0x6D38, 0x709A, 0x72C2, 0x73D6, 0x7B50, -/* 1DF8 */ 0x80F1, 0x945B, 0x5366, 0x639B, 0x7F6B, 0x4E56, 0x5080, 0x584A, -/* 1E00 */ 0x58DE, 0x602A, 0x6127, 0x62D0, 0x69D0, 0x9B41, 0x5B8F, 0x7D18, -/* 1E08 */ 0x80B1, 0x8F5F, 0x4EA4, 0x50D1, 0x54AC, 0x55AC, 0x5B0C, 0x5DA0, -/* 1E10 */ 0x5DE7, 0x652A, 0x654E, 0x6821, 0x6A4B, 0x72E1, 0x768E, 0x77EF, -/* 1E18 */ 0x7D5E, 0x7FF9, 0x81A0, 0x854E, 0x86DF, 0x8F03, 0x8F4E, 0x90CA, -/* 1E20 */ 0x9903, 0x9A55, 0x9BAB, 0x4E18, 0x4E45, 0x4E5D, 0x4EC7, 0x4FF1, -/* 1E28 */ 0x5177, 0x52FE, 0x5340, 0x53E3, 0x53E5, 0x548E, 0x5614, 0x5775, -/* 1E30 */ 0x57A2, 0x5BC7, 0x5D87, 0x5ED0, 0x61FC, 0x62D8, 0x6551, 0x67B8, -/* 1E38 */ 0x67E9, 0x69CB, 0x6B50, 0x6BC6, 0x6BEC, 0x6C42, 0x6E9D, 0x7078, -/* 1E40 */ 0x72D7, 0x7396, 0x7403, 0x77BF, 0x77E9, 0x7A76, 0x7D7F, 0x8009, -/* 1E48 */ 0x81FC, 0x8205, 0x820A, 0x82DF, 0x8862, 0x8B33, 0x8CFC, 0x8EC0, -/* 1E50 */ 0x9011, 0x90B1, 0x9264, 0x92B6, 0x99D2, 0x9A45, 0x9CE9, 0x9DD7, -/* 1E58 */ 0x9F9C, 0x570B, 0x5C40, 0x83CA, 0x97A0, 0x97AB, 0x9EB4, 0x541B, -/* 1E60 */ 0x7A98, 0x7FA4, 0x88D9, 0x8ECD, 0x90E1, 0x5800, 0x5C48, 0x6398, -/* 1E68 */ 0x7A9F, 0x5BAE, 0x5F13, 0x7A79, 0x7AAE, 0x828E, 0x8EAC, 0x5026, -/* 1E70 */ 0x5238, 0x52F8, 0x5377, 0x5708, 0x62F3, 0x6372, 0x6B0A, 0x6DC3, -/* 1E78 */ 0x7737, 0x53A5, 0x7357, 0x8568, 0x8E76, 0x95D5, 0x673A, 0x6AC3, -/* 1E80 */ 0x6F70, 0x8A6D, 0x8ECC, 0x994B, 0xF906, 0x6677, 0x6B78, 0x8CB4, -/* 1E88 */ 0x9B3C, 0xF907, 0x53EB, 0x572D, 0x594E, 0x63C6, 0x69FB, 0x73EA, -/* 1E90 */ 0x7845, 0x7ABA, 0x7AC5, 0x7CFE, 0x8475, 0x898F, 0x8D73, 0x9035, -/* 1E98 */ 0x95A8, 0x52FB, 0x5747, 0x7547, 0x7B60, 0x83CC, 0x921E, 0xF908, -/* 1EA0 */ 0x6A58, 0x514B, 0x524B, 0x5287, 0x621F, 0x68D8, 0x6975, 0x9699, -/* 1EA8 */ 0x50C5, 0x52A4, 0x52E4, 0x61C3, 0x65A4, 0x6839, 0x69FF, 0x747E, -/* 1EB0 */ 0x7B4B, 0x82B9, 0x83EB, 0x89B2, 0x8B39, 0x8FD1, 0x9949, 0xF909, -/* 1EB8 */ 0x4ECA, 0x5997, 0x64D2, 0x6611, 0x6A8E, 0x7434, 0x7981, 0x79BD, -/* 1EC0 */ 0x82A9, 0x887E, 0x887F, 0x895F, 0xF90A, 0x9326, 0x4F0B, 0x53CA, -/* 1EC8 */ 0x6025, 0x6271, 0x6C72, 0x7D1A, 0x7D66, 0x4E98, 0x5162, 0x77DC, -/* 1ED0 */ 0x80AF, 0x4F01, 0x4F0E, 0x5176, 0x5180, 0x55DC, 0x5668, 0x573B, -/* 1ED8 */ 0x57FA, 0x57FC, 0x5914, 0x5947, 0x5993, 0x5BC4, 0x5C90, 0x5D0E, -/* 1EE0 */ 0x5DF1, 0x5E7E, 0x5FCC, 0x6280, 0x65D7, 0x65E3, 0x671E, 0x671F, -/* 1EE8 */ 0x675E, 0x68CB, 0x68C4, 0x6A5F, 0x6B3A, 0x6C23, 0x6C7D, 0x6C82, -/* 1EF0 */ 0x6DC7, 0x7398, 0x7426, 0x742A, 0x7482, 0x74A3, 0x7578, 0x757F, -/* 1EF8 */ 0x7881, 0x78EF, 0x7941, 0x7947, 0x7948, 0x797A, 0x7B95, 0x7D00, -/* 1F00 */ 0x7DBA, 0x7F88, 0x8006, 0x802D, 0x808C, 0x8A18, 0x8B4F, 0x8C48, -/* 1F08 */ 0x8D77, 0x9321, 0x9324, 0x98E2, 0x9951, 0x9A0E, 0x9A0F, 0x9A65, -/* 1F10 */ 0x9E92, 0x7DCA, 0x4F76, 0x5409, 0x62EE, 0x6854, 0x91D1, 0x55AB, -/* 1F18 */ 0x513A, 0xF90B, 0xF90C, 0x5A1C, 0x61E6, 0xF90D, 0x62CF, 0x62FF, -/* 1F20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x90A3, 0xF914, -/* 1F28 */ 0xF915, 0xF916, 0xF917, 0xF918, 0x8AFE, 0xF919, 0xF91A, 0xF91B, -/* 1F30 */ 0xF91C, 0x6696, 0xF91D, 0x7156, 0xF91E, 0xF91F, 0x96E3, 0xF920, -/* 1F38 */ 0x634F, 0x637A, 0x5357, 0xF921, 0x678F, 0x6960, 0x6E73, 0xF922, -/* 1F40 */ 0x7537, 0xF923, 0xF924, 0xF925, 0x7D0D, 0xF926, 0xF927, 0x8872, -/* 1F48 */ 0x56CA, 0x5A18, 0xF928, 0xF929, 0xF92A, 0xF92B, 0xF92C, 0x4E43, -/* 1F50 */ 0xF92D, 0x5167, 0x5948, 0x67F0, 0x8010, 0xF92E, 0x5973, 0x5E74, -/* 1F58 */ 0x649A, 0x79CA, 0x5FF5, 0x606C, 0x62C8, 0x637B, 0x5BE7, 0x5BD7, -/* 1F60 */ 0x52AA, 0xF92F, 0x5974, 0x5F29, 0x6012, 0xF930, 0xF931, 0xF932, -/* 1F68 */ 0x7459, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x99D1, -/* 1F70 */ 0x6FC3, 0xF944, 0xF945, 0x81BF, 0x8FB2, 0x60F1, 0xF946, 0xF947, -/* 1F78 */ 0x8166, 0xF948, 0xF949, 0x5C3F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1F80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5AE9, 0x8A25, 0x677B, 0x7D10, -/* 1F88 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x80FD, 0xF958, -/* 1F90 */ 0xF959, 0x5C3C, 0x6CE5, 0x533F, 0x6EBA, 0x591A, 0x8336, 0x4E39, -/* 1F98 */ 0x4EB6, 0x4F46, 0x55AE, 0x5718, 0x58C7, 0x5F56, 0x65B7, 0x65E6, -/* 1FA0 */ 0x6A80, 0x6BB5, 0x6E4D, 0x77ED, 0x7AEF, 0x7C1E, 0x7DDE, 0x86CB, -/* 1FA8 */ 0x8892, 0x9132, 0x935B, 0x64BB, 0x6FBE, 0x737A, 0x75B8, 0x9054, -/* 1FB0 */ 0x5556, 0x574D, 0x61BA, 0x64D4, 0x66C7, 0x6DE1, 0x6E5B, 0x6F6D, -/* 1FB8 */ 0x6FB9, 0x75F0, 0x8043, 0x81BD, 0x8541, 0x8983, 0x8AC7, 0x8B5A, -/* 1FC0 */ 0x931F, 0x6C93, 0x7553, 0x7B54, 0x8E0F, 0x905D, 0x5510, 0x5802, -/* 1FC8 */ 0x5858, 0x5E62, 0x6207, 0x649E, 0x68E0, 0x7576, 0x7CD6, 0x87B3, -/* 1FD0 */ 0x9EE8, 0x4EE3, 0x5788, 0x576E, 0x5927, 0x5C0D, 0x5CB1, 0x5E36, -/* 1FD8 */ 0x5F85, 0x6234, 0x64E1, 0x73B3, 0x81FA, 0x888B, 0x8CB8, 0x968A, -/* 1FE0 */ 0x9EDB, 0x5B85, 0x5FB7, 0x60B3, 0x5012, 0x5200, 0x5230, 0x5716, -/* 1FE8 */ 0x5835, 0x5857, 0x5C0E, 0x5C60, 0x5CF6, 0x5D8B, 0x5EA6, 0x5F92, -/* 1FF0 */ 0x60BC, 0x6311, 0x6389, 0x6417, 0x6843, 0x68F9, 0x6AC2, 0x6DD8, -/* 1FF8 */ 0x6E21, 0x6ED4, 0x6FE4, 0x71FE, 0x76DC, 0x7779, 0x79B1, 0x7A3B, -/* 2000 */ 0x8404, 0x89A9, 0x8CED, 0x8DF3, 0x8E48, 0x9003, 0x9014, 0x9053, -/* 2008 */ 0x90FD, 0x934D, 0x9676, 0x97DC, 0x6BD2, 0x7006, 0x7258, 0x72A2, -/* 2010 */ 0x7368, 0x7763, 0x79BF, 0x7BE4, 0x7E9B, 0x8B80, 0x58A9, 0x60C7, -/* 2018 */ 0x6566, 0x65FD, 0x66BE, 0x6C8C, 0x711E, 0x71C9, 0x8C5A, 0x9813, -/* 2020 */ 0x4E6D, 0x7A81, 0x4EDD, 0x51AC, 0x51CD, 0x52D5, 0x540C, 0x61A7, -/* 2028 */ 0x6771, 0x6850, 0x68DF, 0x6D1E, 0x6F7C, 0x75BC, 0x77B3, 0x7AE5, -/* 2030 */ 0x80F4, 0x8463, 0x9285, 0x515C, 0x6597, 0x675C, 0x6793, 0x75D8, -/* 2038 */ 0x7AC7, 0x8373, 0xF95A, 0x8C46, 0x9017, 0x982D, 0x5C6F, 0x81C0, -/* 2040 */ 0x829A, 0x9041, 0x906F, 0x920D, 0x5F97, 0x5D9D, 0x6A59, 0x71C8, -/* 2048 */ 0x767B, 0x7B49, 0x85E4, 0x8B04, 0x9127, 0x9A30, 0x5587, 0x61F6, -/* 2050 */ 0xF95B, 0x7669, 0x7F85, 0x863F, 0x87BA, 0x88F8, 0x908F, 0xF95C, -/* 2058 */ 0x6D1B, 0x70D9, 0x73DE, 0x7D61, 0x843D, 0xF95D, 0x916A, 0x99F1, -/* 2060 */ 0xF95E, 0x4E82, 0x5375, 0x6B04, 0x6B12, 0x703E, 0x721B, 0x862D, -/* 2068 */ 0x9E1E, 0x524C, 0x8FA3, 0x5D50, 0x64E5, 0x652C, 0x6B16, 0x6FEB, -/* 2070 */ 0x7C43, 0x7E9C, 0x85CD, 0x8964, 0x89BD, 0x62C9, 0x81D8, 0x881F, -/* 2078 */ 0x5ECA, 0x6717, 0x6D6A, 0x72FC, 0x7405, 0x746F, 0x8782, 0x90DE, -/* 2080 */ 0x4F86, 0x5D0D, 0x5FA0, 0x840A, 0x51B7, 0x63A0, 0x7565, 0x4EAE, -/* 2088 */ 0x5006, 0x5169, 0x51C9, 0x6881, 0x6A11, 0x7CAE, 0x7CB1, 0x7CE7, -/* 2090 */ 0x826F, 0x8AD2, 0x8F1B, 0x91CF, 0x4FB6, 0x5137, 0x52F5, 0x5442, -/* 2098 */ 0x5EEC, 0x616E, 0x623E, 0x65C5, 0x6ADA, 0x6FFE, 0x792A, 0x85DC, -/* 20A0 */ 0x8823, 0x95AD, 0x9A62, 0x9A6A, 0x9E97, 0x9ECE, 0x529B, 0x66C6, -/* 20A8 */ 0x6B77, 0x701D, 0x792B, 0x8F62, 0x9742, 0x6190, 0x6200, 0x6523, -/* 20B0 */ 0x6F23, 0x7149, 0x7489, 0x7DF4, 0x806F, 0x84EE, 0x8F26, 0x9023, -/* 20B8 */ 0x934A, 0x51BD, 0x5217, 0x52A3, 0x6D0C, 0x70C8, 0x88C2, 0x5EC9, -/* 20C0 */ 0x6582, 0x6BAE, 0x6FC2, 0x7C3E, 0x7375, 0x4EE4, 0x4F36, 0x56F9, -/* 20C8 */ 0xF95F, 0x5CBA, 0x5DBA, 0x601C, 0x73B2, 0x7B2D, 0x7F9A, 0x7FCE, -/* 20D0 */ 0x8046, 0x901E, 0x9234, 0x96F6, 0x9748, 0x9818, 0x9F61, 0x4F8B, -/* 20D8 */ 0x6FA7, 0x79AE, 0x91B4, 0x96B7, 0x52DE, 0xF960, 0x6488, 0x64C4, -/* 20E0 */ 0x6AD3, 0x6F5E, 0x7018, 0x7210, 0x76E7, 0x8001, 0x8606, 0x865C, -/* 20E8 */ 0x8DEF, 0x8F05, 0x9732, 0x9B6F, 0x9DFA, 0x9E75, 0x788C, 0x797F, -/* 20F0 */ 0x7DA0, 0x83C9, 0x9304, 0x9E7F, 0x9E93, 0x8AD6, 0x58DF, 0x5F04, -/* 20F8 */ 0x6727, 0x7027, 0x74CF, 0x7C60, 0x807E, 0x5121, 0x7028, 0x7262, -/* 2100 */ 0x78CA, 0x8CC2, 0x8CDA, 0x8CF4, 0x96F7, 0x4E86, 0x50DA, 0x5BEE, -/* 2108 */ 0x5ED6, 0x6599, 0x71CE, 0x7642, 0x77AD, 0x804A, 0x84FC, 0x907C, -/* 2110 */ 0x9B27, 0x9F8D, 0x58D8, 0x5A41, 0x5C62, 0x6A13, 0x6DDA, 0x6F0F, -/* 2118 */ 0x763B, 0x7D2F, 0x7E37, 0x851E, 0x8938, 0x93E4, 0x964B, 0x5289, -/* 2120 */ 0x65D2, 0x67F3, 0x69B4, 0x6D41, 0x6E9C, 0x700F, 0x7409, 0x7460, -/* 2128 */ 0x7559, 0x7624, 0x786B, 0x8B2C, 0x985E, 0x516D, 0x622E, 0x9678, -/* 2130 */ 0x4F96, 0x502B, 0x5D19, 0x6DEA, 0x7DB8, 0x8F2A, 0x5F8B, 0x6144, -/* 2138 */ 0x6817, 0xF961, 0x9686, 0x52D2, 0x808B, 0x51DC, 0x51CC, 0x695E, -/* 2140 */ 0x7A1C, 0x7DBE, 0x83F1, 0x9675, 0x4FDA, 0x5229, 0x5398, 0x540F, -/* 2148 */ 0x550E, 0x5C65, 0x60A7, 0x674E, 0x68A8, 0x6D6C, 0x7281, 0x72F8, -/* 2150 */ 0x7406, 0x7483, 0xF962, 0x75E2, 0x7C6C, 0x7F79, 0x7FB8, 0x8389, -/* 2158 */ 0x88CF, 0x88E1, 0x91CC, 0x91D0, 0x96E2, 0x9BC9, 0x541D, 0x6F7E, -/* 2160 */ 0x71D0, 0x7498, 0x85FA, 0x8EAA, 0x96A3, 0x9C57, 0x9E9F, 0x6797, -/* 2168 */ 0x6DCB, 0x7433, 0x81E8, 0x9716, 0x782C, 0x7ACB, 0x7B20, 0x7C92, -/* 2170 */ 0x6469, 0x746A, 0x75F2, 0x78BC, 0x78E8, 0x99AC, 0x9B54, 0x9EBB, -/* 2178 */ 0x5BDE, 0x5E55, 0x6F20, 0x819C, 0x83AB, 0x9088, 0x4E07, 0x534D, -/* 2180 */ 0x5A29, 0x5DD2, 0x5F4E, 0x6162, 0x633D, 0x6669, 0x66FC, 0x6EFF, -/* 2188 */ 0x6F2B, 0x7063, 0x779E, 0x842C, 0x8513, 0x883B, 0x8F13, 0x9945, -/* 2190 */ 0x9C3B, 0x551C, 0x62B9, 0x672B, 0x6CAB, 0x8309, 0x896A, 0x977A, -/* 2198 */ 0x4EA1, 0x5984, 0x5FD8, 0x5FD9, 0x671B, 0x7DB2, 0x7F54, 0x8292, -/* 21A0 */ 0x832B, 0x83BD, 0x8F1E, 0x9099, 0x57CB, 0x59B9, 0x5A92, 0x5BD0, -/* 21A8 */ 0x6627, 0x679A, 0x6885, 0x6BCF, 0x7164, 0x7F75, 0x8CB7, 0x8CE3, -/* 21B0 */ 0x9081, 0x9B45, 0x8108, 0x8C8A, 0x964C, 0x9A40, 0x9EA5, 0x5B5F, -/* 21B8 */ 0x6C13, 0x731B, 0x76F2, 0x76DF, 0x840C, 0x51AA, 0x8993, 0x514D, -/* 21C0 */ 0x5195, 0x52C9, 0x68C9, 0x6C94, 0x7704, 0x7720, 0x7DBF, 0x7DEC, -/* 21C8 */ 0x9762, 0x9EB5, 0x6EC5, 0x8511, 0x51A5, 0x540D, 0x547D, 0x660E, -/* 21D0 */ 0x669D, 0x6927, 0x6E9F, 0x76BF, 0x7791, 0x8317, 0x84C2, 0x879F, -/* 21D8 */ 0x9169, 0x9298, 0x9CF4, 0x8882, 0x4FAE, 0x5192, 0x52DF, 0x59C6, -/* 21E0 */ 0x5E3D, 0x6155, 0x6478, 0x6479, 0x66AE, 0x67D0, 0x6A21, 0x6BCD, -/* 21E8 */ 0x6BDB, 0x725F, 0x7261, 0x7441, 0x7738, 0x77DB, 0x8017, 0x82BC, -/* 21F0 */ 0x8305, 0x8B00, 0x8B28, 0x8C8C, 0x6728, 0x6C90, 0x7267, 0x76EE, -/* 21F8 */ 0x7766, 0x7A46, 0x9DA9, 0x6B7F, 0x6C92, 0x5922, 0x6726, 0x8499, -/* 2200 */ 0x536F, 0x5893, 0x5999, 0x5EDF, 0x63CF, 0x6634, 0x6773, 0x6E3A, -/* 2208 */ 0x732B, 0x7AD7, 0x82D7, 0x9328, 0x52D9, 0x5DEB, 0x61AE, 0x61CB, -/* 2210 */ 0x620A, 0x62C7, 0x64AB, 0x65E0, 0x6959, 0x6B66, 0x6BCB, 0x7121, -/* 2218 */ 0x73F7, 0x755D, 0x7E46, 0x821E, 0x8302, 0x856A, 0x8AA3, 0x8CBF, -/* 2220 */ 0x9727, 0x9D61, 0x58A8, 0x9ED8, 0x5011, 0x520E, 0x543B, 0x554F, -/* 2228 */ 0x6587, 0x6C76, 0x7D0A, 0x7D0B, 0x805E, 0x868A, 0x9580, 0x96EF, -/* 2230 */ 0x52FF, 0x6C95, 0x7269, 0x5473, 0x5A9A, 0x5C3E, 0x5D4B, 0x5F4C, -/* 2238 */ 0x5FAE, 0x672A, 0x68B6, 0x6963, 0x6E3C, 0x6E44, 0x7709, 0x7C73, -/* 2240 */ 0x7F8E, 0x8587, 0x8B0E, 0x8FF7, 0x9761, 0x9EF4, 0x5CB7, 0x60B6, -/* 2248 */ 0x610D, 0x61AB, 0x654F, 0x65FB, 0x65FC, 0x6C11, 0x6CEF, 0x739F, -/* 2250 */ 0x73C9, 0x7DE1, 0x9594, 0x5BC6, 0x871C, 0x8B10, 0x525D, 0x535A, -/* 2258 */ 0x62CD, 0x640F, 0x64B2, 0x6734, 0x6A38, 0x6CCA, 0x73C0, 0x749E, -/* 2260 */ 0x7B94, 0x7C95, 0x7E1B, 0x818A, 0x8236, 0x8584, 0x8FEB, 0x96F9, -/* 2268 */ 0x99C1, 0x4F34, 0x534A, 0x53CD, 0x53DB, 0x62CC, 0x642C, 0x6500, -/* 2270 */ 0x6591, 0x69C3, 0x6CEE, 0x6F58, 0x73ED, 0x7554, 0x7622, 0x76E4, -/* 2278 */ 0x76FC, 0x78D0, 0x78FB, 0x792C, 0x7D46, 0x822C, 0x87E0, 0x8FD4, -/* 2280 */ 0x9812, 0x98EF, 0x52C3, 0x62D4, 0x64A5, 0x6E24, 0x6F51, 0x767C, -/* 2288 */ 0x8DCB, 0x91B1, 0x9262, 0x9AEE, 0x9B43, 0x5023, 0x508D, 0x574A, -/* 2290 */ 0x59A8, 0x5C28, 0x5E47, 0x5F77, 0x623F, 0x653E, 0x65B9, 0x65C1, -/* 2298 */ 0x6609, 0x678B, 0x699C, 0x6EC2, 0x78C5, 0x7D21, 0x80AA, 0x8180, -/* 22A0 */ 0x822B, 0x82B3, 0x84A1, 0x868C, 0x8A2A, 0x8B17, 0x90A6, 0x9632, -/* 22A8 */ 0x9F90, 0x500D, 0x4FF3, 0xF963, 0x57F9, 0x5F98, 0x62DC, 0x6392, -/* 22B0 */ 0x676F, 0x6E43, 0x7119, 0x76C3, 0x80CC, 0x80DA, 0x88F4, 0x88F5, -/* 22B8 */ 0x8919, 0x8CE0, 0x8F29, 0x914D, 0x966A, 0x4F2F, 0x4F70, 0x5E1B, -/* 22C0 */ 0x67CF, 0x6822, 0x767D, 0x767E, 0x9B44, 0x5E61, 0x6A0A, 0x7169, -/* 22C8 */ 0x71D4, 0x756A, 0xF964, 0x7E41, 0x8543, 0x85E9, 0x98DC, 0x4F10, -/* 22D0 */ 0x7B4F, 0x7F70, 0x95A5, 0x51E1, 0x5E06, 0x68B5, 0x6C3E, 0x6C4E, -/* 22D8 */ 0x6CDB, 0x72AF, 0x7BC4, 0x8303, 0x6CD5, 0x743A, 0x50FB, 0x5288, -/* 22E0 */ 0x58C1, 0x64D8, 0x6A97, 0x74A7, 0x7656, 0x78A7, 0x8617, 0x95E2, -/* 22E8 */ 0x9739, 0xF965, 0x535E, 0x5F01, 0x8B8A, 0x8FA8, 0x8FAF, 0x908A, -/* 22F0 */ 0x5225, 0x77A5, 0x9C49, 0x9F08, 0x4E19, 0x5002, 0x5175, 0x5C5B, -/* 22F8 */ 0x5E77, 0x661E, 0x663A, 0x67C4, 0x68C5, 0x70B3, 0x7501, 0x75C5, -/* 2300 */ 0x79C9, 0x7ADD, 0x8F27, 0x9920, 0x9A08, 0x4FDD, 0x5821, 0x5831, -/* 2308 */ 0x5BF6, 0x666E, 0x6B65, 0x6D11, 0x6E7A, 0x6F7D, 0x73E4, 0x752B, -/* 2310 */ 0x83E9, 0x88DC, 0x8913, 0x8B5C, 0x8F14, 0x4F0F, 0x50D5, 0x5310, -/* 2318 */ 0x535C, 0x5B93, 0x5FA9, 0x670D, 0x798F, 0x8179, 0x832F, 0x8514, -/* 2320 */ 0x8907, 0x8986, 0x8F39, 0x8F3B, 0x99A5, 0x9C12, 0x672C, 0x4E76, -/* 2328 */ 0x4FF8, 0x5949, 0x5C01, 0x5CEF, 0x5CF0, 0x6367, 0x68D2, 0x70FD, -/* 2330 */ 0x71A2, 0x742B, 0x7E2B, 0x84EC, 0x8702, 0x9022, 0x92D2, 0x9CF3, -/* 2338 */ 0x4E0D, 0x4ED8, 0x4FEF, 0x5085, 0x5256, 0x526F, 0x5426, 0x5490, -/* 2340 */ 0x57E0, 0x592B, 0x5A66, 0x5B5A, 0x5B75, 0x5BCC, 0x5E9C, 0xF966, -/* 2348 */ 0x6276, 0x6577, 0x65A7, 0x6D6E, 0x6EA5, 0x7236, 0x7B26, 0x7C3F, -/* 2350 */ 0x7F36, 0x8150, 0x8151, 0x819A, 0x8240, 0x8299, 0x83A9, 0x8A03, -/* 2358 */ 0x8CA0, 0x8CE6, 0x8CFB, 0x8D74, 0x8DBA, 0x90E8, 0x91DC, 0x961C, -/* 2360 */ 0x9644, 0x99D9, 0x9CE7, 0x5317, 0x5206, 0x5429, 0x5674, 0x58B3, -/* 2368 */ 0x5954, 0x596E, 0x5FFF, 0x61A4, 0x626E, 0x6610, 0x6C7E, 0x711A, -/* 2370 */ 0x76C6, 0x7C89, 0x7CDE, 0x7D1B, 0x82AC, 0x8CC1, 0x96F0, 0xF967, -/* 2378 */ 0x4F5B, 0x5F17, 0x5F7F, 0x62C2, 0x5D29, 0x670B, 0x68DA, 0x787C, -/* 2380 */ 0x7E43, 0x9D6C, 0x4E15, 0x5099, 0x5315, 0x532A, 0x5351, 0x5983, -/* 2388 */ 0x5A62, 0x5E87, 0x60B2, 0x618A, 0x6249, 0x6279, 0x6590, 0x6787, -/* 2390 */ 0x69A7, 0x6BD4, 0x6BD6, 0x6BD7, 0x6BD8, 0x6CB8, 0xF968, 0x7435, -/* 2398 */ 0x75FA, 0x7812, 0x7891, 0x79D5, 0x79D8, 0x7C83, 0x7DCB, 0x7FE1, -/* 23A0 */ 0x80A5, 0x813E, 0x81C2, 0x83F2, 0x871A, 0x88E8, 0x8AB9, 0x8B6C, -/* 23A8 */ 0x8CBB, 0x9119, 0x975E, 0x98DB, 0x9F3B, 0x56AC, 0x5B2A, 0x5F6C, -/* 23B0 */ 0x658C, 0x6AB3, 0x6BAF, 0x6D5C, 0x6FF1, 0x7015, 0x725D, 0x73AD, -/* 23B8 */ 0x8CA7, 0x8CD3, 0x983B, 0x6191, 0x6C37, 0x8058, 0x9A01, 0x4E4D, -/* 23C0 */ 0x4E8B, 0x4E9B, 0x4ED5, 0x4F3A, 0x4F3C, 0x4F7F, 0x4FDF, 0x50FF, -/* 23C8 */ 0x53F2, 0x53F8, 0x5506, 0x55E3, 0x56DB, 0x58EB, 0x5962, 0x5A11, -/* 23D0 */ 0x5BEB, 0x5BFA, 0x5C04, 0x5DF3, 0x5E2B, 0x5F99, 0x601D, 0x6368, -/* 23D8 */ 0x659C, 0x65AF, 0x67F6, 0x67FB, 0x68AD, 0x6B7B, 0x6C99, 0x6CD7, -/* 23E0 */ 0x6E23, 0x7009, 0x7345, 0x7802, 0x793E, 0x7940, 0x7960, 0x79C1, -/* 23E8 */ 0x7BE9, 0x7D17, 0x7D72, 0x8086, 0x820D, 0x838E, 0x84D1, 0x86C7, -/* 23F0 */ 0x88DF, 0x8A50, 0x8A5E, 0x8B1D, 0x8CDC, 0x8D66, 0x8FAD, 0x90AA, -/* 23F8 */ 0x98FC, 0x99DF, 0x9E9D, 0x524A, 0xF969, 0x6714, 0xF96A, 0x5098, -/* 2400 */ 0x522A, 0x5C71, 0x6563, 0x6C55, 0x73CA, 0x7523, 0x759D, 0x7B97, -/* 2408 */ 0x849C, 0x9178, 0x9730, 0x4E77, 0x6492, 0x6BBA, 0x715E, 0x85A9, -/* 2410 */ 0x4E09, 0xF96B, 0x6749, 0x68EE, 0x6E17, 0x829F, 0x8518, 0x886B, -/* 2418 */ 0x63F7, 0x6F81, 0x9212, 0x98AF, 0x4E0A, 0x50B7, 0x50CF, 0x511F, -/* 2420 */ 0x5546, 0x55AA, 0x5617, 0x5B40, 0x5C19, 0x5CE0, 0x5E38, 0x5E8A, -/* 2428 */ 0x5EA0, 0x5EC2, 0x60F3, 0x6851, 0x6A61, 0x6E58, 0x723D, 0x7240, -/* 2430 */ 0x72C0, 0x76F8, 0x7965, 0x7BB1, 0x7FD4, 0x88F3, 0x89F4, 0x8A73, -/* 2438 */ 0x8C61, 0x8CDE, 0x971C, 0x585E, 0x74BD, 0x8CFD, 0x55C7, 0xF96C, -/* 2440 */ 0x7A61, 0x7D22, 0x8272, 0x7272, 0x751F, 0x7525, 0xF96D, 0x7B19, -/* 2448 */ 0x5885, 0x58FB, 0x5DBC, 0x5E8F, 0x5EB6, 0x5F90, 0x6055, 0x6292, -/* 2450 */ 0x637F, 0x654D, 0x6691, 0x66D9, 0x66F8, 0x6816, 0x68F2, 0x7280, -/* 2458 */ 0x745E, 0x7B6E, 0x7D6E, 0x7DD6, 0x7F72, 0x80E5, 0x8212, 0x85AF, -/* 2460 */ 0x897F, 0x8A93, 0x901D, 0x92E4, 0x9ECD, 0x9F20, 0x5915, 0x596D, -/* 2468 */ 0x5E2D, 0x60DC, 0x6614, 0x6673, 0x6790, 0x6C50, 0x6DC5, 0x6F5F, -/* 2470 */ 0x77F3, 0x78A9, 0x84C6, 0x91CB, 0x932B, 0x4ED9, 0x50CA, 0x5148, -/* 2478 */ 0x5584, 0x5B0B, 0x5BA3, 0x6247, 0x657E, 0x65CB, 0x6E32, 0x717D, -/* 2480 */ 0x7401, 0x7444, 0x7487, 0x74BF, 0x766C, 0x79AA, 0x7DDA, 0x7E55, -/* 2488 */ 0x7FA8, 0x817A, 0x81B3, 0x8239, 0x861A, 0x87EC, 0x8A75, 0x8DE3, -/* 2490 */ 0x9078, 0x9291, 0x9425, 0x994D, 0x9BAE, 0x5368, 0x5C51, 0x6954, -/* 2498 */ 0x6CC4, 0x6D29, 0x6E2B, 0x820C, 0x859B, 0x893B, 0x8A2D, 0x8AAA, -/* 24A0 */ 0x96EA, 0x9F67, 0x5261, 0x66B9, 0x6BB2, 0x7E96, 0x87FE, 0x8D0D, -/* 24A8 */ 0x9583, 0x965D, 0x651D, 0x6D89, 0x71EE, 0xF96E, 0x57CE, 0x59D3, -/* 24B0 */ 0x5BAC, 0x6027, 0x60FA, 0x6210, 0x661F, 0x665F, 0x7329, 0x73F9, -/* 24B8 */ 0x76DB, 0x7701, 0x7B6C, 0x8056, 0x8072, 0x8165, 0x8AA0, 0x9192, -/* 24C0 */ 0x4E16, 0x52E2, 0x6B72, 0x6D17, 0x7A05, 0x7B39, 0x7D30, 0xF96F, -/* 24C8 */ 0x8CB0, 0x53EC, 0x562F, 0x5851, 0x5BB5, 0x5C0F, 0x5C11, 0x5DE2, -/* 24D0 */ 0x6240, 0x6383, 0x6414, 0x662D, 0x68B3, 0x6CBC, 0x6D88, 0x6EAF, -/* 24D8 */ 0x701F, 0x70A4, 0x71D2, 0x7526, 0x758F, 0x758E, 0x7619, 0x7B11, -/* 24E0 */ 0x7BE0, 0x7C2B, 0x7D20, 0x7D39, 0x852C, 0x856D, 0x8607, 0x8A34, -/* 24E8 */ 0x900D, 0x9061, 0x90B5, 0x92B7, 0x97F6, 0x9A37, 0x4FD7, 0x5C6C, -/* 24F0 */ 0x675F, 0x6D91, 0x7C9F, 0x7E8C, 0x8B16, 0x8D16, 0x901F, 0x5B6B, -/* 24F8 */ 0x5DFD, 0x640D, 0x84C0, 0x905C, 0x98E1, 0x7387, 0x5B8B, 0x609A, -/* 2500 */ 0x677E, 0x6DDE, 0x8A1F, 0x8AA6, 0x9001, 0x980C, 0x5237, 0xF970, -/* 2508 */ 0x7051, 0x788E, 0x9396, 0x8870, 0x91D7, 0x4FEE, 0x53D7, 0x55FD, -/* 2510 */ 0x56DA, 0x5782, 0x58FD, 0x5AC2, 0x5B88, 0x5CAB, 0x5CC0, 0x5E25, -/* 2518 */ 0x6101, 0x620D, 0x624B, 0x6388, 0x641C, 0x6536, 0x6578, 0x6A39, -/* 2520 */ 0x6B8A, 0x6C34, 0x6D19, 0x6F31, 0x71E7, 0x72E9, 0x7378, 0x7407, -/* 2528 */ 0x74B2, 0x7626, 0x7761, 0x79C0, 0x7A57, 0x7AEA, 0x7CB9, 0x7D8F, -/* 2530 */ 0x7DAC, 0x7E61, 0x7F9E, 0x8129, 0x8331, 0x8490, 0x84DA, 0x85EA, -/* 2538 */ 0x8896, 0x8AB0, 0x8B90, 0x8F38, 0x9042, 0x9083, 0x916C, 0x9296, -/* 2540 */ 0x92B9, 0x968B, 0x96A7, 0x96A8, 0x96D6, 0x9700, 0x9808, 0x9996, -/* 2548 */ 0x9AD3, 0x9B1A, 0x53D4, 0x587E, 0x5919, 0x5B70, 0x5BBF, 0x6DD1, -/* 2550 */ 0x6F5A, 0x719F, 0x7421, 0x74B9, 0x8085, 0x83FD, 0x5DE1, 0x5F87, -/* 2558 */ 0x5FAA, 0x6042, 0x65EC, 0x6812, 0x696F, 0x6A53, 0x6B89, 0x6D35, -/* 2560 */ 0x6DF3, 0x73E3, 0x76FE, 0x77AC, 0x7B4D, 0x7D14, 0x8123, 0x821C, -/* 2568 */ 0x8340, 0x84F4, 0x8563, 0x8A62, 0x8AC4, 0x9187, 0x931E, 0x9806, -/* 2570 */ 0x99B4, 0x620C, 0x8853, 0x8FF0, 0x9265, 0x5D07, 0x5D27, 0x5D69, -/* 2578 */ 0x745F, 0x819D, 0x8768, 0x6FD5, 0x62FE, 0x7FD2, 0x8936, 0x8972, -/* 2580 */ 0x4E1E, 0x4E58, 0x50E7, 0x52DD, 0x5347, 0x627F, 0x6607, 0x7E69, -/* 2588 */ 0x8805, 0x965E, 0x4F8D, 0x5319, 0x5636, 0x59CB, 0x5AA4, 0x5C38, -/* 2590 */ 0x5C4E, 0x5C4D, 0x5E02, 0x5F11, 0x6043, 0x65BD, 0x662F, 0x6642, -/* 2598 */ 0x67BE, 0x67F4, 0x731C, 0x77E2, 0x793A, 0x7FC5, 0x8494, 0x84CD, -/* 25A0 */ 0x8996, 0x8A66, 0x8A69, 0x8AE1, 0x8C55, 0x8C7A, 0x57F4, 0x5BD4, -/* 25A8 */ 0x5F0F, 0x606F, 0x62ED, 0x690D, 0x6B96, 0x6E5C, 0x7184, 0x7BD2, -/* 25B0 */ 0x8755, 0x8B58, 0x8EFE, 0x98DF, 0x98FE, 0x4F38, 0x4F81, 0x4FE1, -/* 25B8 */ 0x547B, 0x5A20, 0x5BB8, 0x613C, 0x65B0, 0x6668, 0x71FC, 0x7533, -/* 25C0 */ 0x795E, 0x7D33, 0x814E, 0x81E3, 0x8398, 0x85AA, 0x85CE, 0x8703, -/* 25C8 */ 0x8A0A, 0x8EAB, 0x8F9B, 0xF971, 0x8FC5, 0x5931, 0x5BA4, 0x5BE6, -/* 25D0 */ 0x6089, 0x5BE9, 0x5C0B, 0x5FC3, 0x6C81, 0xF972, 0x6DF1, 0x700B, -/* 25D8 */ 0x751A, 0x82AF, 0x8AF6, 0x4EC0, 0x5341, 0xF973, 0x96D9, 0x6C0F, -/* 25E0 */ 0x4E9E, 0x4FC4, 0x5152, 0x555E, 0x5A25, 0x5CE8, 0x6211, 0x7259, -/* 25E8 */ 0x82BD, 0x83AA, 0x86FE, 0x8859, 0x8A1D, 0x963F, 0x96C5, 0x9913, -/* 25F0 */ 0x9D09, 0x9D5D, 0x580A, 0x5CB3, 0x5DBD, 0x5E44, 0x60E1, 0x6115, -/* 25F8 */ 0x63E1, 0x6A02, 0x6E25, 0x9102, 0x9354, 0x984E, 0x9C10, 0x9F77, -/* 2600 */ 0x5B89, 0x5CB8, 0x6309, 0x664F, 0x6848, 0x773C, 0x96C1, 0x978D, -/* 2608 */ 0x9854, 0x9B9F, 0x65A1, 0x8B01, 0x8ECB, 0x95BC, 0x5535, 0x5CA9, -/* 2610 */ 0x5DD6, 0x5EB5, 0x6697, 0x764C, 0x83F4, 0x95C7, 0x58D3, 0x62BC, -/* 2618 */ 0x72CE, 0x9D28, 0x4EF0, 0x592E, 0x600F, 0x663B, 0x6B83, 0x79E7, -/* 2620 */ 0x9D26, 0x5393, 0x54C0, 0x57C3, 0x5D16, 0x611B, 0x66D6, 0x6DAF, -/* 2628 */ 0x788D, 0x827E, 0x9698, 0x9744, 0x5384, 0x627C, 0x6396, 0x6DB2, -/* 2630 */ 0x7E0A, 0x814B, 0x984D, 0x6AFB, 0x7F4C, 0x9DAF, 0x9E1A, 0x4E5F, -/* 2638 */ 0x503B, 0x51B6, 0x591C, 0x60F9, 0x63F6, 0x6930, 0x723A, 0x8036, -/* 2640 */ 0xF974, 0x91CE, 0x5F31, 0xF975, 0xF976, 0x7D04, 0x82E5, 0x846F, -/* 2648 */ 0x84BB, 0x85E5, 0x8E8D, 0xF977, 0x4F6F, 0xF978, 0xF979, 0x58E4, -/* 2650 */ 0x5B43, 0x6059, 0x63DA, 0x6518, 0x656D, 0x6698, 0xF97A, 0x694A, -/* 2658 */ 0x6A23, 0x6D0B, 0x7001, 0x716C, 0x75D2, 0x760D, 0x79B3, 0x7A70, -/* 2660 */ 0xF97B, 0x7F8A, 0xF97C, 0x8944, 0xF97D, 0x8B93, 0x91C0, 0x967D, -/* 2668 */ 0xF97E, 0x990A, 0x5704, 0x5FA1, 0x65BC, 0x6F01, 0x7600, 0x79A6, -/* 2670 */ 0x8A9E, 0x99AD, 0x9B5A, 0x9F6C, 0x5104, 0x61B6, 0x6291, 0x6A8D, -/* 2678 */ 0x81C6, 0x5043, 0x5830, 0x5F66, 0x7109, 0x8A00, 0x8AFA, 0x5B7C, -/* 2680 */ 0x8616, 0x4FFA, 0x513C, 0x56B4, 0x5944, 0x63A9, 0x6DF9, 0x5DAA, -/* 2688 */ 0x696D, 0x5186, 0x4E88, 0x4F59, 0xF97F, 0xF980, 0xF981, 0x5982, -/* 2690 */ 0xF982, 0xF983, 0x6B5F, 0x6C5D, 0xF984, 0x74B5, 0x7916, 0xF985, -/* 2698 */ 0x8207, 0x8245, 0x8339, 0x8F3F, 0x8F5D, 0xF986, 0x9918, 0xF987, -/* 26A0 */ 0xF988, 0xF989, 0x4EA6, 0xF98A, 0x57DF, 0x5F79, 0x6613, 0xF98B, -/* 26A8 */ 0xF98C, 0x75AB, 0x7E79, 0x8B6F, 0xF98D, 0x9006, 0x9A5B, 0x56A5, -/* 26B0 */ 0x5827, 0x59F8, 0x5A1F, 0x5BB4, 0xF98E, 0x5EF6, 0xF98F, 0xF990, -/* 26B8 */ 0x6350, 0x633B, 0xF991, 0x693D, 0x6C87, 0x6CBF, 0x6D8E, 0x6D93, -/* 26C0 */ 0x6DF5, 0x6F14, 0xF992, 0x70DF, 0x7136, 0x7159, 0xF993, 0x71C3, -/* 26C8 */ 0x71D5, 0xF994, 0x784F, 0x786F, 0xF995, 0x7B75, 0x7DE3, 0xF996, -/* 26D0 */ 0x7E2F, 0xF997, 0x884D, 0x8EDF, 0xF998, 0xF999, 0xF99A, 0x925B, -/* 26D8 */ 0xF99B, 0x9CF6, 0xF99C, 0xF99D, 0xF99E, 0x6085, 0x6D85, 0xF99F, -/* 26E0 */ 0x71B1, 0xF9A0, 0xF9A1, 0x95B1, 0x53AD, 0xF9A2, 0xF9A3, 0xF9A4, -/* 26E8 */ 0x67D3, 0xF9A5, 0x708E, 0x7130, 0x7430, 0x8276, 0x82D2, 0xF9A6, -/* 26F0 */ 0x95BB, 0x9AE5, 0x9E7D, 0x66C4, 0xF9A7, 0x71C1, 0x8449, 0xF9A8, -/* 26F8 */ 0xF9A9, 0x584B, 0xF9AA, 0xF9AB, 0x5DB8, 0x5F71, 0xF9AC, 0x6620, -/* 2700 */ 0x668E, 0x6979, 0x69AE, 0x6C38, 0x6CF3, 0x6E36, 0x6F41, 0x6FDA, -/* 2708 */ 0x701B, 0x702F, 0x7150, 0x71DF, 0x7370, 0xF9AD, 0x745B, 0xF9AE, -/* 2710 */ 0x74D4, 0x76C8, 0x7A4E, 0x7E93, 0xF9AF, 0xF9B0, 0x82F1, 0x8A60, -/* 2718 */ 0x8FCE, 0xF9B1, 0x9348, 0xF9B2, 0x9719, 0xF9B3, 0xF9B4, 0x4E42, -/* 2720 */ 0x502A, 0xF9B5, 0x5208, 0x53E1, 0x66F3, 0x6C6D, 0x6FCA, 0x730A, -/* 2728 */ 0x777F, 0x7A62, 0x82AE, 0x85DD, 0x8602, 0xF9B6, 0x88D4, 0x8A63, -/* 2730 */ 0x8B7D, 0x8C6B, 0xF9B7, 0x92B3, 0xF9B8, 0x9713, 0x9810, 0x4E94, -/* 2738 */ 0x4F0D, 0x4FC9, 0x50B2, 0x5348, 0x543E, 0x5433, 0x55DA, 0x5862, -/* 2740 */ 0x58BA, 0x5967, 0x5A1B, 0x5BE4, 0x609F, 0xF9B9, 0x61CA, 0x6556, -/* 2748 */ 0x65FF, 0x6664, 0x68A7, 0x6C5A, 0x6FB3, 0x70CF, 0x71AC, 0x7352, -/* 2750 */ 0x7B7D, 0x8708, 0x8AA4, 0x9C32, 0x9F07, 0x5C4B, 0x6C83, 0x7344, -/* 2758 */ 0x7389, 0x923A, 0x6EAB, 0x7465, 0x761F, 0x7A69, 0x7E15, 0x860A, -/* 2760 */ 0x5140, 0x58C5, 0x64C1, 0x74EE, 0x7515, 0x7670, 0x7FC1, 0x9095, -/* 2768 */ 0x96CD, 0x9954, 0x6E26, 0x74E6, 0x7AA9, 0x7AAA, 0x81E5, 0x86D9, -/* 2770 */ 0x8778, 0x8A1B, 0x5A49, 0x5B8C, 0x5B9B, 0x68A1, 0x6900, 0x6D63, -/* 2778 */ 0x73A9, 0x7413, 0x742C, 0x7897, 0x7DE9, 0x7FEB, 0x8118, 0x8155, -/* 2780 */ 0x839E, 0x8C4C, 0x962E, 0x9811, 0x66F0, 0x5F80, 0x65FA, 0x6789, -/* 2788 */ 0x6C6A, 0x738B, 0x502D, 0x5A03, 0x6B6A, 0x77EE, 0x5916, 0x5D6C, -/* 2790 */ 0x5DCD, 0x7325, 0x754F, 0xF9BA, 0xF9BB, 0x50E5, 0x51F9, 0x582F, -/* 2798 */ 0x592D, 0x5996, 0x59DA, 0x5BE5, 0xF9BC, 0xF9BD, 0x5DA2, 0x62D7, -/* 27A0 */ 0x6416, 0x6493, 0x64FE, 0xF9BE, 0x66DC, 0xF9BF, 0x6A48, 0xF9C0, -/* 27A8 */ 0x71FF, 0x7464, 0xF9C1, 0x7A88, 0x7AAF, 0x7E47, 0x7E5E, 0x8000, -/* 27B0 */ 0x8170, 0xF9C2, 0x87EF, 0x8981, 0x8B20, 0x9059, 0xF9C3, 0x9080, -/* 27B8 */ 0x9952, 0x617E, 0x6B32, 0x6D74, 0x7E1F, 0x8925, 0x8FB1, 0x4FD1, -/* 27C0 */ 0x50AD, 0x5197, 0x52C7, 0x57C7, 0x5889, 0x5BB9, 0x5EB8, 0x6142, -/* 27C8 */ 0x6995, 0x6D8C, 0x6E67, 0x6EB6, 0x7194, 0x7462, 0x7528, 0x752C, -/* 27D0 */ 0x8073, 0x8338, 0x84C9, 0x8E0A, 0x9394, 0x93DE, 0xF9C4, 0x4E8E, -/* 27D8 */ 0x4F51, 0x5076, 0x512A, 0x53C8, 0x53CB, 0x53F3, 0x5B87, 0x5BD3, -/* 27E0 */ 0x5C24, 0x611A, 0x6182, 0x65F4, 0x725B, 0x7397, 0x7440, 0x76C2, -/* 27E8 */ 0x7950, 0x7991, 0x79B9, 0x7D06, 0x7FBD, 0x828B, 0x85D5, 0x865E, -/* 27F0 */ 0x8FC2, 0x9047, 0x90F5, 0x91EA, 0x9685, 0x96E8, 0x96E9, 0x52D6, -/* 27F8 */ 0x5F67, 0x65ED, 0x6631, 0x682F, 0x715C, 0x7A36, 0x90C1, 0x980A, -/* 2800 */ 0x4E91, 0xF9C5, 0x6A52, 0x6B9E, 0x6F90, 0x7189, 0x8018, 0x82B8, -/* 2808 */ 0x8553, 0x904B, 0x9695, 0x96F2, 0x97FB, 0x851A, 0x9B31, 0x4E90, -/* 2810 */ 0x718A, 0x96C4, 0x5143, 0x539F, 0x54E1, 0x5713, 0x5712, 0x57A3, -/* 2818 */ 0x5A9B, 0x5AC4, 0x5BC3, 0x6028, 0x613F, 0x63F4, 0x6C85, 0x6D39, -/* 2820 */ 0x6E72, 0x6E90, 0x7230, 0x733F, 0x7457, 0x82D1, 0x8881, 0x8F45, -/* 2828 */ 0x9060, 0xF9C6, 0x9662, 0x9858, 0x9D1B, 0x6708, 0x8D8A, 0x925E, -/* 2830 */ 0x4F4D, 0x5049, 0x50DE, 0x5371, 0x570D, 0x59D4, 0x5A01, 0x5C09, -/* 2838 */ 0x6170, 0x6690, 0x6E2D, 0x7232, 0x744B, 0x7DEF, 0x80C3, 0x840E, -/* 2840 */ 0x8466, 0x853F, 0x875F, 0x885B, 0x8918, 0x8B02, 0x9055, 0x97CB, -/* 2848 */ 0x9B4F, 0x4E73, 0x4F91, 0x5112, 0x516A, 0xF9C7, 0x552F, 0x55A9, -/* 2850 */ 0x5B7A, 0x5BA5, 0x5E7C, 0x5E7D, 0x5EBE, 0x60A0, 0x60DF, 0x6108, -/* 2858 */ 0x6109, 0x63C4, 0x6538, 0x6709, 0xF9C8, 0x67D4, 0x67DA, 0xF9C9, -/* 2860 */ 0x6961, 0x6962, 0x6CB9, 0x6D27, 0xF9CA, 0x6E38, 0xF9CB, 0x6FE1, -/* 2868 */ 0x7336, 0x7337, 0xF9CC, 0x745C, 0x7531, 0xF9CD, 0x7652, 0xF9CE, -/* 2870 */ 0xF9CF, 0x7DAD, 0x81FE, 0x8438, 0x88D5, 0x8A98, 0x8ADB, 0x8AED, -/* 2878 */ 0x8E30, 0x8E42, 0x904A, 0x903E, 0x907A, 0x9149, 0x91C9, 0x936E, -/* 2880 */ 0xF9D0, 0xF9D1, 0x5809, 0xF9D2, 0x6BD3, 0x8089, 0x80B2, 0xF9D3, -/* 2888 */ 0xF9D4, 0x5141, 0x596B, 0x5C39, 0xF9D5, 0xF9D6, 0x6F64, 0x73A7, -/* 2890 */ 0x80E4, 0x8D07, 0xF9D7, 0x9217, 0x958F, 0xF9D8, 0xF9D9, 0xF9DA, -/* 2898 */ 0xF9DB, 0x807F, 0x620E, 0x701C, 0x7D68, 0x878D, 0xF9DC, 0x57A0, -/* 28A0 */ 0x6069, 0x6147, 0x6BB7, 0x8ABE, 0x9280, 0x96B1, 0x4E59, 0x541F, -/* 28A8 */ 0x6DEB, 0x852D, 0x9670, 0x97F3, 0x98EE, 0x63D6, 0x6CE3, 0x9091, -/* 28B0 */ 0x51DD, 0x61C9, 0x81BA, 0x9DF9, 0x4F9D, 0x501A, 0x5100, 0x5B9C, -/* 28B8 */ 0x610F, 0x61FF, 0x64EC, 0x6905, 0x6BC5, 0x7591, 0x77E3, 0x7FA9, -/* 28C0 */ 0x8264, 0x858F, 0x87FB, 0x8863, 0x8ABC, 0x8B70, 0x91AB, 0x4E8C, -/* 28C8 */ 0x4EE5, 0x4F0A, 0xF9DD, 0xF9DE, 0x5937, 0x59E8, 0xF9DF, 0x5DF2, -/* 28D0 */ 0x5F1B, 0x5F5B, 0x6021, 0xF9E0, 0xF9E1, 0xF9E2, 0xF9E3, 0x723E, -/* 28D8 */ 0x73E5, 0xF9E4, 0x7570, 0x75CD, 0xF9E5, 0x79FB, 0xF9E6, 0x800C, -/* 28E0 */ 0x8033, 0x8084, 0x82E1, 0x8351, 0xF9E7, 0xF9E8, 0x8CBD, 0x8CB3, -/* 28E8 */ 0x9087, 0xF9E9, 0xF9EA, 0x98F4, 0x990C, 0xF9EB, 0xF9EC, 0x7037, -/* 28F0 */ 0x76CA, 0x7FCA, 0x7FCC, 0x7FFC, 0x8B1A, 0x4EBA, 0x4EC1, 0x5203, -/* 28F8 */ 0x5370, 0xF9ED, 0x54BD, 0x56E0, 0x59FB, 0x5BC5, 0x5F15, 0x5FCD, -/* 2900 */ 0x6E6E, 0xF9EE, 0xF9EF, 0x7D6A, 0x8335, 0xF9F0, 0x8693, 0x8A8D, -/* 2908 */ 0xF9F1, 0x976D, 0x9777, 0xF9F2, 0xF9F3, 0x4E00, 0x4F5A, 0x4F7E, -/* 2910 */ 0x58F9, 0x65E5, 0x6EA2, 0x9038, 0x93B0, 0x99B9, 0x4EFB, 0x58EC, -/* 2918 */ 0x598A, 0x59D9, 0x6041, 0xF9F4, 0xF9F5, 0x7A14, 0xF9F6, 0x834F, -/* 2920 */ 0x8CC3, 0x5165, 0x5344, 0xF9F7, 0xF9F8, 0xF9F9, 0x4ECD, 0x5269, -/* 2928 */ 0x5B55, 0x82BF, 0x4ED4, 0x523A, 0x54A8, 0x59C9, 0x59FF, 0x5B50, -/* 2930 */ 0x5B57, 0x5B5C, 0x6063, 0x6148, 0x6ECB, 0x7099, 0x716E, 0x7386, -/* 2938 */ 0x74F7, 0x75B5, 0x78C1, 0x7D2B, 0x8005, 0x81EA, 0x8328, 0x8517, -/* 2940 */ 0x85C9, 0x8AEE, 0x8CC7, 0x96CC, 0x4F5C, 0x52FA, 0x56BC, 0x65AB, -/* 2948 */ 0x6628, 0x707C, 0x70B8, 0x7235, 0x7DBD, 0x828D, 0x914C, 0x96C0, -/* 2950 */ 0x9D72, 0x5B71, 0x68E7, 0x6B98, 0x6F7A, 0x76DE, 0x5C91, 0x66AB, -/* 2958 */ 0x6F5B, 0x7BB4, 0x7C2A, 0x8836, 0x96DC, 0x4E08, 0x4ED7, 0x5320, -/* 2960 */ 0x5834, 0x58BB, 0x58EF, 0x596C, 0x5C07, 0x5E33, 0x5E84, 0x5F35, -/* 2968 */ 0x638C, 0x66B2, 0x6756, 0x6A1F, 0x6AA3, 0x6B0C, 0x6F3F, 0x7246, -/* 2970 */ 0xF9FA, 0x7350, 0x748B, 0x7AE0, 0x7CA7, 0x8178, 0x81DF, 0x81E7, -/* 2978 */ 0x838A, 0x846C, 0x8523, 0x8594, 0x85CF, 0x88DD, 0x8D13, 0x91AC, -/* 2980 */ 0x9577, 0x969C, 0x518D, 0x54C9, 0x5728, 0x5BB0, 0x624D, 0x6750, -/* 2988 */ 0x683D, 0x6893, 0x6E3D, 0x6ED3, 0x707D, 0x7E21, 0x88C1, 0x8CA1, -/* 2990 */ 0x8F09, 0x9F4B, 0x9F4E, 0x722D, 0x7B8F, 0x8ACD, 0x931A, 0x4F47, -/* 2998 */ 0x4F4E, 0x5132, 0x5480, 0x59D0, 0x5E95, 0x62B5, 0x6775, 0x696E, -/* 29A0 */ 0x6A17, 0x6CAE, 0x6E1A, 0x72D9, 0x732A, 0x75BD, 0x7BB8, 0x7D35, -/* 29A8 */ 0x82E7, 0x83F9, 0x8457, 0x85F7, 0x8A5B, 0x8CAF, 0x8E87, 0x9019, -/* 29B0 */ 0x90B8, 0x96CE, 0x9F5F, 0x52E3, 0x540A, 0x5AE1, 0x5BC2, 0x6458, -/* 29B8 */ 0x6575, 0x6EF4, 0x72C4, 0xF9FB, 0x7684, 0x7A4D, 0x7B1B, 0x7C4D, -/* 29C0 */ 0x7E3E, 0x7FDF, 0x837B, 0x8B2B, 0x8CCA, 0x8D64, 0x8DE1, 0x8E5F, -/* 29C8 */ 0x8FEA, 0x8FF9, 0x9069, 0x93D1, 0x4F43, 0x4F7A, 0x50B3, 0x5168, -/* 29D0 */ 0x5178, 0x524D, 0x526A, 0x5861, 0x587C, 0x5960, 0x5C08, 0x5C55, -/* 29D8 */ 0x5EDB, 0x609B, 0x6230, 0x6813, 0x6BBF, 0x6C08, 0x6FB1, 0x714E, -/* 29E0 */ 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7B4C, 0x7B8B, 0x7BAD, -/* 29E8 */ 0x7BC6, 0x7E8F, 0x8A6E, 0x8F3E, 0x8F49, 0x923F, 0x9293, 0x9322, -/* 29F0 */ 0x942B, 0x96FB, 0x985A, 0x986B, 0x991E, 0x5207, 0x622A, 0x6298, -/* 29F8 */ 0x6D59, 0x7664, 0x7ACA, 0x7BC0, 0x7D76, 0x5360, 0x5CBE, 0x5E97, -/* 2A00 */ 0x6F38, 0x70B9, 0x7C98, 0x9711, 0x9B8E, 0x9EDE, 0x63A5, 0x647A, -/* 2A08 */ 0x8776, 0x4E01, 0x4E95, 0x4EAD, 0x505C, 0x5075, 0x5448, 0x59C3, -/* 2A10 */ 0x5B9A, 0x5E40, 0x5EAD, 0x5EF7, 0x5F81, 0x60C5, 0x633A, 0x653F, -/* 2A18 */ 0x6574, 0x65CC, 0x6676, 0x6678, 0x67FE, 0x6968, 0x6A89, 0x6B63, -/* 2A20 */ 0x6C40, 0x6DC0, 0x6DE8, 0x6E1F, 0x6E5E, 0x701E, 0x70A1, 0x738E, -/* 2A28 */ 0x73FD, 0x753A, 0x775B, 0x7887, 0x798E, 0x7A0B, 0x7A7D, 0x7CBE, -/* 2A30 */ 0x7D8E, 0x8247, 0x8A02, 0x8AEA, 0x8C9E, 0x912D, 0x914A, 0x91D8, -/* 2A38 */ 0x9266, 0x92CC, 0x9320, 0x9706, 0x9756, 0x975C, 0x9802, 0x9F0E, -/* 2A40 */ 0x5236, 0x5291, 0x557C, 0x5824, 0x5E1D, 0x5F1F, 0x608C, 0x63D0, -/* 2A48 */ 0x68AF, 0x6FDF, 0x796D, 0x7B2C, 0x81CD, 0x85BA, 0x88FD, 0x8AF8, -/* 2A50 */ 0x8E44, 0x918D, 0x9664, 0x969B, 0x973D, 0x984C, 0x9F4A, 0x4FCE, -/* 2A58 */ 0x5146, 0x51CB, 0x52A9, 0x5632, 0x5F14, 0x5F6B, 0x63AA, 0x64CD, -/* 2A60 */ 0x65E9, 0x6641, 0x66FA, 0x66F9, 0x671D, 0x689D, 0x68D7, 0x69FD, -/* 2A68 */ 0x6F15, 0x6F6E, 0x7167, 0x71E5, 0x722A, 0x74AA, 0x773A, 0x7956, -/* 2A70 */ 0x795A, 0x79DF, 0x7A20, 0x7A95, 0x7C97, 0x7CDF, 0x7D44, 0x7E70, -/* 2A78 */ 0x8087, 0x85FB, 0x86A4, 0x8A54, 0x8ABF, 0x8D99, 0x8E81, 0x9020, -/* 2A80 */ 0x906D, 0x91E3, 0x963B, 0x96D5, 0x9CE5, 0x65CF, 0x7C07, 0x8DB3, -/* 2A88 */ 0x93C3, 0x5B58, 0x5C0A, 0x5352, 0x62D9, 0x731D, 0x5027, 0x5B97, -/* 2A90 */ 0x5F9E, 0x60B0, 0x616B, 0x68D5, 0x6DD9, 0x742E, 0x7A2E, 0x7D42, -/* 2A98 */ 0x7D9C, 0x7E31, 0x816B, 0x8E2A, 0x8E35, 0x937E, 0x9418, 0x4F50, -/* 2AA0 */ 0x5750, 0x5DE6, 0x5EA7, 0x632B, 0x7F6A, 0x4E3B, 0x4F4F, 0x4F8F, -/* 2AA8 */ 0x505A, 0x59DD, 0x80C4, 0x546A, 0x5468, 0x55FE, 0x594F, 0x5B99, -/* 2AB0 */ 0x5DDE, 0x5EDA, 0x665D, 0x6731, 0x67F1, 0x682A, 0x6CE8, 0x6D32, -/* 2AB8 */ 0x6E4A, 0x6F8D, 0x70B7, 0x73E0, 0x7587, 0x7C4C, 0x7D02, 0x7D2C, -/* 2AC0 */ 0x7DA2, 0x821F, 0x86DB, 0x8A3B, 0x8A85, 0x8D70, 0x8E8A, 0x8F33, -/* 2AC8 */ 0x9031, 0x914E, 0x9152, 0x9444, 0x99D0, 0x7AF9, 0x7CA5, 0x4FCA, -/* 2AD0 */ 0x5101, 0x51C6, 0x57C8, 0x5BEF, 0x5CFB, 0x6659, 0x6A3D, 0x6D5A, -/* 2AD8 */ 0x6E96, 0x6FEC, 0x710C, 0x756F, 0x7AE3, 0x8822, 0x9021, 0x9075, -/* 2AE0 */ 0x96CB, 0x99FF, 0x8301, 0x4E2D, 0x4EF2, 0x8846, 0x91CD, 0x537D, -/* 2AE8 */ 0x6ADB, 0x696B, 0x6C41, 0x847A, 0x589E, 0x618E, 0x66FE, 0x62EF, -/* 2AF0 */ 0x70DD, 0x7511, 0x75C7, 0x7E52, 0x84B8, 0x8B49, 0x8D08, 0x4E4B, -/* 2AF8 */ 0x53EA, 0x54AB, 0x5730, 0x5740, 0x5FD7, 0x6301, 0x6307, 0x646F, -/* 2B00 */ 0x652F, 0x65E8, 0x667A, 0x679D, 0x67B3, 0x6B62, 0x6C60, 0x6C9A, -/* 2B08 */ 0x6F2C, 0x77E5, 0x7825, 0x7949, 0x7957, 0x7D19, 0x80A2, 0x8102, -/* 2B10 */ 0x81F3, 0x829D, 0x82B7, 0x8718, 0x8A8C, 0xF9FC, 0x8D04, 0x8DBE, -/* 2B18 */ 0x9072, 0x76F4, 0x7A19, 0x7A37, 0x7E54, 0x8077, 0x5507, 0x55D4, -/* 2B20 */ 0x5875, 0x632F, 0x6422, 0x6649, 0x664B, 0x686D, 0x699B, 0x6B84, -/* 2B28 */ 0x6D25, 0x6EB1, 0x73CD, 0x7468, 0x74A1, 0x755B, 0x75B9, 0x76E1, -/* 2B30 */ 0x771E, 0x778B, 0x79E6, 0x7E09, 0x7E1D, 0x81FB, 0x852F, 0x8897, -/* 2B38 */ 0x8A3A, 0x8CD1, 0x8EEB, 0x8FB0, 0x9032, 0x93AD, 0x9663, 0x9673, -/* 2B40 */ 0x9707, 0x4F84, 0x53F1, 0x59EA, 0x5AC9, 0x5E19, 0x684E, 0x74C6, -/* 2B48 */ 0x75BE, 0x79E9, 0x7A92, 0x81A3, 0x86ED, 0x8CEA, 0x8DCC, 0x8FED, -/* 2B50 */ 0x659F, 0x6715, 0xF9FD, 0x57F7, 0x6F57, 0x7DDD, 0x8F2F, 0x93F6, -/* 2B58 */ 0x96C6, 0x5FB5, 0x61F2, 0x6F84, 0x4E14, 0x4F98, 0x501F, 0x53C9, -/* 2B60 */ 0x55DF, 0x5D6F, 0x5DEE, 0x6B21, 0x6B64, 0x78CB, 0x7B9A, 0xF9FE, -/* 2B68 */ 0x8E49, 0x8ECA, 0x906E, 0x6349, 0x643E, 0x7740, 0x7A84, 0x932F, -/* 2B70 */ 0x947F, 0x9F6A, 0x64B0, 0x6FAF, 0x71E6, 0x74A8, 0x74DA, 0x7AC4, -/* 2B78 */ 0x7C12, 0x7E82, 0x7CB2, 0x7E98, 0x8B9A, 0x8D0A, 0x947D, 0x9910, -/* 2B80 */ 0x994C, 0x5239, 0x5BDF, 0x64E6, 0x672D, 0x7D2E, 0x50ED, 0x53C3, -/* 2B88 */ 0x5879, 0x6158, 0x6159, 0x61FA, 0x65AC, 0x7AD9, 0x8B92, 0x8B96, -/* 2B90 */ 0x5009, 0x5021, 0x5275, 0x5531, 0x5A3C, 0x5EE0, 0x5F70, 0x6134, -/* 2B98 */ 0x655E, 0x660C, 0x6636, 0x66A2, 0x69CD, 0x6EC4, 0x6F32, 0x7316, -/* 2BA0 */ 0x7621, 0x7A93, 0x8139, 0x8259, 0x83D6, 0x84BC, 0x50B5, 0x57F0, -/* 2BA8 */ 0x5BC0, 0x5BE8, 0x5F69, 0x63A1, 0x7826, 0x7DB5, 0x83DC, 0x8521, -/* 2BB0 */ 0x91C7, 0x91F5, 0x518A, 0x67F5, 0x7B56, 0x8CAC, 0x51C4, 0x59BB, -/* 2BB8 */ 0x60BD, 0x8655, 0x501C, 0xF9FF, 0x5254, 0x5C3A, 0x617D, 0x621A, -/* 2BC0 */ 0x62D3, 0x64F2, 0x65A5, 0x6ECC, 0x7620, 0x810A, 0x8E60, 0x965F, -/* 2BC8 */ 0x96BB, 0x4EDF, 0x5343, 0x5598, 0x5929, 0x5DDD, 0x64C5, 0x6CC9, -/* 2BD0 */ 0x6DFA, 0x7394, 0x7A7F, 0x821B, 0x85A6, 0x8CE4, 0x8E10, 0x9077, -/* 2BD8 */ 0x91E7, 0x95E1, 0x9621, 0x97C6, 0x51F8, 0x54F2, 0x5586, 0x5FB9, -/* 2BE0 */ 0x64A4, 0x6F88, 0x7DB4, 0x8F1F, 0x8F4D, 0x9435, 0x50C9, 0x5C16, -/* 2BE8 */ 0x6CBE, 0x6DFB, 0x751B, 0x77BB, 0x7C3D, 0x7C64, 0x8A79, 0x8AC2, -/* 2BF0 */ 0x581E, 0x59BE, 0x5E16, 0x6377, 0x7252, 0x758A, 0x776B, 0x8ADC, -/* 2BF8 */ 0x8CBC, 0x8F12, 0x5EF3, 0x6674, 0x6DF8, 0x807D, 0x83C1, 0x8ACB, -/* 2C00 */ 0x9751, 0x9BD6, 0xFA00, 0x5243, 0x66FF, 0x6D95, 0x6EEF, 0x7DE0, -/* 2C08 */ 0x8AE6, 0x902E, 0x905E, 0x9AD4, 0x521D, 0x527F, 0x54E8, 0x6194, -/* 2C10 */ 0x6284, 0x62DB, 0x68A2, 0x6912, 0x695A, 0x6A35, 0x7092, 0x7126, -/* 2C18 */ 0x785D, 0x7901, 0x790E, 0x79D2, 0x7A0D, 0x8096, 0x8278, 0x82D5, -/* 2C20 */ 0x8349, 0x8549, 0x8C82, 0x8D85, 0x9162, 0x918B, 0x91AE, 0x4FC3, -/* 2C28 */ 0x56D1, 0x71ED, 0x77D7, 0x8700, 0x89F8, 0x5BF8, 0x5FD6, 0x6751, -/* 2C30 */ 0x90A8, 0x53E2, 0x585A, 0x5BF5, 0x60A4, 0x6181, 0x6460, 0x7E3D, -/* 2C38 */ 0x8070, 0x8525, 0x9283, 0x64AE, 0x50AC, 0x5D14, 0x6700, 0x589C, -/* 2C40 */ 0x62BD, 0x63A8, 0x690E, 0x6978, 0x6A1E, 0x6E6B, 0x76BA, 0x79CB, -/* 2C48 */ 0x82BB, 0x8429, 0x8ACF, 0x8DA8, 0x8FFD, 0x9112, 0x914B, 0x919C, -/* 2C50 */ 0x9310, 0x9318, 0x939A, 0x96DB, 0x9A36, 0x9C0D, 0x4E11, 0x755C, -/* 2C58 */ 0x795D, 0x7AFA, 0x7B51, 0x7BC9, 0x7E2E, 0x84C4, 0x8E59, 0x8E74, -/* 2C60 */ 0x8EF8, 0x9010, 0x6625, 0x693F, 0x7443, 0x51FA, 0x672E, 0x9EDC, -/* 2C68 */ 0x5145, 0x5FE0, 0x6C96, 0x87F2, 0x885D, 0x8877, 0x60B4, 0x81B5, -/* 2C70 */ 0x8403, 0x8D05, 0x53D6, 0x5439, 0x5634, 0x5A36, 0x5C31, 0x708A, -/* 2C78 */ 0x7FE0, 0x805A, 0x8106, 0x81ED, 0x8DA3, 0x9189, 0x9A5F, 0x9DF2, -/* 2C80 */ 0x5074, 0x4EC4, 0x53A0, 0x60FB, 0x6E2C, 0x5C64, 0x4F88, 0x5024, -/* 2C88 */ 0x55E4, 0x5CD9, 0x5E5F, 0x6065, 0x6894, 0x6CBB, 0x6DC4, 0x71BE, -/* 2C90 */ 0x75D4, 0x75F4, 0x7661, 0x7A1A, 0x7A49, 0x7DC7, 0x7DFB, 0x7F6E, -/* 2C98 */ 0x81F4, 0x86A9, 0x8F1C, 0x96C9, 0x99B3, 0x9F52, 0x5247, 0x52C5, -/* 2CA0 */ 0x98ED, 0x89AA, 0x4E03, 0x67D2, 0x6F06, 0x4FB5, 0x5BE2, 0x6795, -/* 2CA8 */ 0x6C88, 0x6D78, 0x741B, 0x7827, 0x91DD, 0x937C, 0x87C4, 0x79E4, -/* 2CB0 */ 0x7A31, 0x5FEB, 0x4ED6, 0x54A4, 0x553E, 0x58AE, 0x59A5, 0x60F0, -/* 2CB8 */ 0x6253, 0x62D6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99B1, 0x99DD, -/* 2CC0 */ 0x502C, 0x5353, 0x5544, 0x577C, 0xFA01, 0x6258, 0xFA02, 0x64E2, -/* 2CC8 */ 0x666B, 0x67DD, 0x6FC1, 0x6FEF, 0x7422, 0x7438, 0x8A17, 0x9438, -/* 2CD0 */ 0x5451, 0x5606, 0x5766, 0x5F48, 0x619A, 0x6B4E, 0x7058, 0x70AD, -/* 2CD8 */ 0x7DBB, 0x8A95, 0x596A, 0x812B, 0x63A2, 0x7708, 0x803D, 0x8CAA, -/* 2CE0 */ 0x5854, 0x642D, 0x69BB, 0x5B95, 0x5E11, 0x6E6F, 0xFA03, 0x8569, -/* 2CE8 */ 0x514C, 0x53F0, 0x592A, 0x6020, 0x614B, 0x6B86, 0x6C70, 0x6CF0, -/* 2CF0 */ 0x7B1E, 0x80CE, 0x82D4, 0x8DC6, 0x90B0, 0x98B1, 0xFA04, 0x64C7, -/* 2CF8 */ 0x6FA4, 0x6491, 0x6504, 0x514E, 0x5410, 0x571F, 0x8A0E, 0x615F, -/* 2D00 */ 0x6876, 0xFA05, 0x75DB, 0x7B52, 0x7D71, 0x901A, 0x5806, 0x69CC, -/* 2D08 */ 0x817F, 0x892A, 0x9000, 0x9839, 0x5078, 0x5957, 0x59AC, 0x6295, -/* 2D10 */ 0x900F, 0x9B2A, 0x615D, 0x7279, 0x95D6, 0x5761, 0x5A46, 0x5DF4, -/* 2D18 */ 0x628A, 0x64AD, 0x64FA, 0x6777, 0x6CE2, 0x6D3E, 0x722C, 0x7436, -/* 2D20 */ 0x7834, 0x7F77, 0x82AD, 0x8DDB, 0x9817, 0x5224, 0x5742, 0x677F, -/* 2D28 */ 0x7248, 0x74E3, 0x8CA9, 0x8FA6, 0x9211, 0x962A, 0x516B, 0x53ED, -/* 2D30 */ 0x634C, 0x4F69, 0x5504, 0x6096, 0x6557, 0x6C9B, 0x6D7F, 0x724C, -/* 2D38 */ 0x72FD, 0x7A17, 0x8987, 0x8C9D, 0x5F6D, 0x6F8E, 0x70F9, 0x81A8, -/* 2D40 */ 0x610E, 0x4FBF, 0x504F, 0x6241, 0x7247, 0x7BC7, 0x7DE8, 0x7FE9, -/* 2D48 */ 0x904D, 0x97AD, 0x9A19, 0x8CB6, 0x576A, 0x5E73, 0x67B0, 0x840D, -/* 2D50 */ 0x8A55, 0x5420, 0x5B16, 0x5E63, 0x5EE2, 0x5F0A, 0x6583, 0x80BA, -/* 2D58 */ 0x853D, 0x9589, 0x965B, 0x4F48, 0x5305, 0x530D, 0x530F, 0x5486, -/* 2D60 */ 0x54FA, 0x5703, 0x5E03, 0x6016, 0x629B, 0x62B1, 0x6355, 0xFA06, -/* 2D68 */ 0x6CE1, 0x6D66, 0x75B1, 0x7832, 0x80DE, 0x812F, 0x82DE, 0x8461, -/* 2D70 */ 0x84B2, 0x888D, 0x8912, 0x900B, 0x92EA, 0x98FD, 0x9B91, 0x5E45, -/* 2D78 */ 0x66B4, 0x66DD, 0x7011, 0x7206, 0xFA07, 0x4FF5, 0x527D, 0x5F6A, -/* 2D80 */ 0x6153, 0x6753, 0x6A19, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8C79, -/* 2D88 */ 0x98C7, 0x98C4, 0x9A43, 0x54C1, 0x7A1F, 0x6953, 0x8AF7, 0x8C4A, -/* 2D90 */ 0x98A8, 0x99AE, 0x5F7C, 0x62AB, 0x75B2, 0x76AE, 0x88AB, 0x907F, -/* 2D98 */ 0x9642, 0x5339, 0x5F3C, 0x5FC5, 0x6CCC, 0x73CC, 0x7562, 0x758B, -/* 2DA0 */ 0x7B46, 0x82FE, 0x999D, 0x4E4F, 0x903C, 0x4E0B, 0x4F55, 0x53A6, -/* 2DA8 */ 0x590F, 0x5EC8, 0x6630, 0x6CB3, 0x7455, 0x8377, 0x8766, 0x8CC0, -/* 2DB0 */ 0x9050, 0x971E, 0x9C15, 0x58D1, 0x5B78, 0x8650, 0x8B14, 0x9DB4, -/* 2DB8 */ 0x5BD2, 0x6068, 0x608D, 0x65F1, 0x6C57, 0x6F22, 0x6FA3, 0x701A, -/* 2DC0 */ 0x7F55, 0x7FF0, 0x9591, 0x9592, 0x9650, 0x97D3, 0x5272, 0x8F44, -/* 2DC8 */ 0x51FD, 0x542B, 0x54B8, 0x5563, 0x558A, 0x6ABB, 0x6DB5, 0x7DD8, -/* 2DD0 */ 0x8266, 0x929C, 0x9677, 0x9E79, 0x5408, 0x54C8, 0x76D2, 0x86E4, -/* 2DD8 */ 0x95A4, 0x95D4, 0x965C, 0x4EA2, 0x4F09, 0x59EE, 0x5AE6, 0x5DF7, -/* 2DE0 */ 0x6052, 0x6297, 0x676D, 0x6841, 0x6C86, 0x6E2F, 0x7F38, 0x809B, -/* 2DE8 */ 0x822A, 0xFA08, 0xFA09, 0x9805, 0x4EA5, 0x5055, 0x54B3, 0x5793, -/* 2DF0 */ 0x595A, 0x5B69, 0x5BB3, 0x61C8, 0x6977, 0x6D77, 0x7023, 0x87F9, -/* 2DF8 */ 0x89E3, 0x8A72, 0x8AE7, 0x9082, 0x99ED, 0x9AB8, 0x52BE, 0x6838, -/* 2E00 */ 0x5016, 0x5E78, 0x674F, 0x8347, 0x884C, 0x4EAB, 0x5411, 0x56AE, -/* 2E08 */ 0x73E6, 0x9115, 0x97FF, 0x9909, 0x9957, 0x9999, 0x5653, 0x589F, -/* 2E10 */ 0x865B, 0x8A31, 0x61B2, 0x6AF6, 0x737B, 0x8ED2, 0x6B47, 0x96AA, -/* 2E18 */ 0x9A57, 0x5955, 0x7200, 0x8D6B, 0x9769, 0x4FD4, 0x5CF4, 0x5F26, -/* 2E20 */ 0x61F8, 0x665B, 0x6CEB, 0x70AB, 0x7384, 0x73B9, 0x73FE, 0x7729, -/* 2E28 */ 0x774D, 0x7D43, 0x7D62, 0x7E23, 0x8237, 0x8852, 0xFA0A, 0x8CE2, -/* 2E30 */ 0x9249, 0x986F, 0x5B51, 0x7A74, 0x8840, 0x9801, 0x5ACC, 0x4FE0, -/* 2E38 */ 0x5354, 0x593E, 0x5CFD, 0x633E, 0x6D79, 0x72F9, 0x8105, 0x8107, -/* 2E40 */ 0x83A2, 0x92CF, 0x9830, 0x4EA8, 0x5144, 0x5211, 0x578B, 0x5F62, -/* 2E48 */ 0x6CC2, 0x6ECE, 0x7005, 0x7050, 0x70AF, 0x7192, 0x73E9, 0x7469, -/* 2E50 */ 0x834A, 0x87A2, 0x8861, 0x9008, 0x90A2, 0x93A3, 0x99A8, 0x516E, -/* 2E58 */ 0x5F57, 0x60E0, 0x6167, 0x66B3, 0x8559, 0x8E4A, 0x91AF, 0x978B, -/* 2E60 */ 0x4E4E, 0x4E92, 0x547C, 0x58D5, 0x58FA, 0x597D, 0x5CB5, 0x5F27, -/* 2E68 */ 0x6236, 0x6248, 0x660A, 0x6667, 0x6BEB, 0x6D69, 0x6DCF, 0x6E56, -/* 2E70 */ 0x6EF8, 0x6F94, 0x6FE0, 0x6FE9, 0x705D, 0x72D0, 0x7425, 0x745A, -/* 2E78 */ 0x74E0, 0x7693, 0x795C, 0x7CCA, 0x7E1E, 0x80E1, 0x82A6, 0x846B, -/* 2E80 */ 0x84BF, 0x864E, 0x865F, 0x8774, 0x8B77, 0x8C6A, 0x93AC, 0x9800, -/* 2E88 */ 0x9865, 0x60D1, 0x6216, 0x9177, 0x5A5A, 0x660F, 0x6DF7, 0x6E3E, -/* 2E90 */ 0x743F, 0x9B42, 0x5FFD, 0x60DA, 0x7B0F, 0x54C4, 0x5F18, 0x6C5E, -/* 2E98 */ 0x6CD3, 0x6D2A, 0x70D8, 0x7D05, 0x8679, 0x8A0C, 0x9D3B, 0x5316, -/* 2EA0 */ 0x548C, 0x5B05, 0x6A3A, 0x706B, 0x7575, 0x798D, 0x79BE, 0x82B1, -/* 2EA8 */ 0x83EF, 0x8A71, 0x8B41, 0x8CA8, 0x9774, 0xFA0B, 0x64F4, 0x652B, -/* 2EB0 */ 0x78BA, 0x78BB, 0x7A6B, 0x4E38, 0x559A, 0x5950, 0x5BA6, 0x5E7B, -/* 2EB8 */ 0x60A3, 0x63DB, 0x6B61, 0x6665, 0x6853, 0x6E19, 0x7165, 0x74B0, -/* 2EC0 */ 0x7D08, 0x9084, 0x9A69, 0x9C25, 0x6D3B, 0x6ED1, 0x733E, 0x8C41, -/* 2EC8 */ 0x95CA, 0x51F0, 0x5E4C, 0x5FA8, 0x604D, 0x60F6, 0x6130, 0x614C, -/* 2ED0 */ 0x6643, 0x6644, 0x69A5, 0x6CC1, 0x6E5F, 0x6EC9, 0x6F62, 0x714C, -/* 2ED8 */ 0x749C, 0x7687, 0x7BC1, 0x7C27, 0x8352, 0x8757, 0x9051, 0x968D, -/* 2EE0 */ 0x9EC3, 0x532F, 0x56DE, 0x5EFB, 0x5F8A, 0x6062, 0x6094, 0x61F7, -/* 2EE8 */ 0x6666, 0x6703, 0x6A9C, 0x6DEE, 0x6FAE, 0x7070, 0x736A, 0x7E6A, -/* 2EF0 */ 0x81BE, 0x8334, 0x86D4, 0x8AA8, 0x8CC4, 0x5283, 0x7372, 0x5B96, -/* 2EF8 */ 0x6A6B, 0x9404, 0x54EE, 0x5686, 0x5B5D, 0x6548, 0x6585, 0x66C9, -/* 2F00 */ 0x689F, 0x6D8D, 0x6DC6, 0x723B, 0x80B4, 0x9175, 0x9A4D, 0x4FAF, -/* 2F08 */ 0x5019, 0x539A, 0x540E, 0x543C, 0x5589, 0x55C5, 0x5E3F, 0x5F8C, -/* 2F10 */ 0x673D, 0x7166, 0x73DD, 0x9005, 0x52DB, 0x52F3, 0x5864, 0x58CE, -/* 2F18 */ 0x7104, 0x718F, 0x71FB, 0x85B0, 0x8A13, 0x6688, 0x85A8, 0x55A7, -/* 2F20 */ 0x6684, 0x714A, 0x8431, 0x5349, 0x5599, 0x6BC1, 0x5F59, 0x5FBD, -/* 2F28 */ 0x63EE, 0x6689, 0x7147, 0x8AF1, 0x8F1D, 0x9EBE, 0x4F11, 0x643A, -/* 2F30 */ 0x70CB, 0x7566, 0x8667, 0x6064, 0x8B4E, 0x9DF8, 0x5147, 0x51F6, -/* 2F38 */ 0x5308, 0x6D36, 0x80F8, 0x9ED1, 0x6615, 0x6B23, 0x7098, 0x75D5, -/* 2F40 */ 0x5403, 0x5C79, 0x7D07, 0x8A16, 0x6B20, 0x6B3D, 0x6B46, 0x5438, -/* 2F48 */ 0x6070, 0x6D3D, 0x7FD5, 0x8208, 0x50D6, 0x51DE, 0x559C, 0x566B, -/* 2F50 */ 0x56CD, 0x59EC, 0x5B09, 0x5E0C, 0x6199, 0x6198, 0x6231, 0x665E, -/* 2F58 */ 0x66E6, 0x7199, 0x71B9, 0x71BA, 0x72A7, 0x79A7, 0x7A00, 0x7FB2, -/* 2F60 */ 0x8A70, -/* End of table Total Length = 0x3A74 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/cp950.ut b/mozilla/lib/libi18n/unicode/utotbl/cp950.ut deleted file mode 100644 index e215bfac57e..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/cp950.ut +++ /dev/null @@ -1,5079 +0,0 @@ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = A262 - srcEnd = A269 - destBegin = 2581 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = A2AF - srcEnd = A2B8 - destBegin = FF10 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = A2B9 - srcEnd = A2C2 - destBegin = 2160 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = A2C3 - srcEnd = A2CB - destBegin = 3021 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = A2CF - srcEnd = A2E8 - destBegin = FF21 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = A2E9 - srcEnd = A2FE - destBegin = FF41 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = A344 - srcEnd = A354 - destBegin = 0391 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = A355 - srcEnd = A35B - destBegin = 03A3 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = A35C - srcEnd = A36C - destBegin = 03B1 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = A36D - srcEnd = A373 - destBegin = 03C3 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = A374 - srcEnd = A37E - destBegin = 3105 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = A3A1 - srcEnd = A3BA - destBegin = 3110 -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = A140 - srcEnd = A17E - mappingOffset = 0000 - Mapping = - 3000 FF0C 3001 3002 FF0E 2027 FF1B FF1A - FF1F FF01 FE30 2026 2025 FE50 FE51 FE52 - 00B7 FE54 FE55 FE56 FE57 FF5C 2013 FE31 - 2014 FE33 2574 FE34 FE4F FF08 FF09 FE35 - FE36 FF5B FF5D FE37 FE38 3014 3015 FE39 - FE3A 3010 3011 FE3B FE3C 300A 300B FE3D - FE3E 3008 3009 FE3F FE40 300C 300D FE41 - FE42 300E 300F FE43 FE44 FE59 FE5A -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = A1A1 - srcEnd = A1FE - mappingOffset = 003F - Mapping = - FE5B FE5C FE5D FE5E 2018 2019 201C 201D - 301D 301E 2035 2032 FF03 FF06 FF0A 203B - 00A7 3003 25CB 25CF 25B3 25B2 25CE 2606 - 2605 25C7 25C6 25A1 25A0 25BD 25BC 32A3 - 2105 00AF FFE3 FF3F 02CD FE49 FE4A FE4D - FE4E FE4B FE4C FE5F FE60 FE61 FF0B FF0D - 00D7 00F7 00B1 221A FF1C FF1E FF1D 2266 - 2267 2260 221E 2252 2261 FE62 FE63 FE64 - FE65 FE66 FF5E 2229 222A 22A5 2220 221F - 22BF 33D2 33D1 222B 222E 2235 2234 2640 - 2642 2295 2299 2191 2193 2190 2192 2196 - 2197 2199 2198 2225 2223 FF0F -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = A240 - srcEnd = A27E - mappingOffset = 009D - Mapping = - FF3C 2215 FE68 FF04 FFE5 3012 FFE0 FFE1 - FF05 FF20 2103 2109 FE69 FE6A FE6B 33D5 - 339C 339D 339E 33CE 33A1 338E 338F 33C4 - 00B0 5159 515B 515E 515D 5161 5163 55E7 - 74E9 7CCE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 258F 258E 258D 258C 258B 258A - 2589 253C 2534 252C 2524 251C 2594 2500 - 2502 2595 250C 2510 2514 2518 256D -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = A2A1 - srcEnd = A2AE - mappingOffset = 00DC - Mapping = - 256E 2570 256F 2550 255E 256A 2561 25E2 - 25E3 25E5 25E4 2571 2572 2573 -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = A2CC - srcEnd = A2CE - mappingOffset = 00EA - Mapping = - 5341 5344 5345 -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = A340 - srcEnd = A343 - mappingOffset = 00ED - Mapping = - FF57 FF58 FF59 FF5A -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = A3BB - srcEnd = A3BF - mappingOffset = 00F1 - Mapping = - 02D9 02C9 02CA 02C7 02CB -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = A440 - srcEnd = A47E - mappingOffset = 00F6 - Mapping = - 4E00 4E59 4E01 4E03 4E43 4E5D 4E86 4E8C - 4EBA 513F 5165 516B 51E0 5200 5201 529B - 5315 5341 535C 53C8 4E09 4E0B 4E08 4E0A - 4E2B 4E38 51E1 4E45 4E48 4E5F 4E5E 4E8E - 4EA1 5140 5203 52FA 5343 53C9 53E3 571F - 58EB 5915 5927 5973 5B50 5B51 5B53 5BF8 - 5C0F 5C22 5C38 5C71 5DDD 5DE5 5DF1 5DF2 - 5DF3 5DFE 5E72 5EFE 5F0B 5F13 624D -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = A4A1 - srcEnd = A4FE - mappingOffset = 0135 - Mapping = - 4E11 4E10 4E0D 4E2D 4E30 4E39 4E4B 5C39 - 4E88 4E91 4E95 4E92 4E94 4EA2 4EC1 4EC0 - 4EC3 4EC6 4EC7 4ECD 4ECA 4ECB 4EC4 5143 - 5141 5167 516D 516E 516C 5197 51F6 5206 - 5207 5208 52FB 52FE 52FF 5316 5339 5348 - 5347 5345 535E 5384 53CB 53CA 53CD 58EC - 5929 592B 592A 592D 5B54 5C11 5C24 5C3A - 5C6F 5DF4 5E7B 5EFF 5F14 5F15 5FC3 6208 - 6236 624B 624E 652F 6587 6597 65A4 65B9 - 65E5 66F0 6708 6728 6B20 6B62 6B79 6BCB - 6BD4 6BDB 6C0F 6C34 706B 722A 7236 723B - 7247 7259 725B 72AC 738B 4E19 -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = A540 - srcEnd = A57E - mappingOffset = 0193 - Mapping = - 4E16 4E15 4E14 4E18 4E3B 4E4D 4E4F 4E4E - 4EE5 4ED8 4ED4 4ED5 4ED6 4ED7 4EE3 4EE4 - 4ED9 4EDE 5145 5144 5189 518A 51AC 51F9 - 51FA 51F8 520A 52A0 529F 5305 5306 5317 - 531D 4EDF 534A 5349 5361 5360 536F 536E - 53BB 53EF 53E4 53F3 53EC 53EE 53E9 53E8 - 53FC 53F8 53F5 53EB 53E6 53EA 53F2 53F1 - 53F0 53E5 53ED 53FB 56DB 56DA 5916 -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = A5A1 - srcEnd = A5FE - mappingOffset = 01D2 - Mapping = - 592E 5931 5974 5976 5B55 5B83 5C3C 5DE8 - 5DE7 5DE6 5E02 5E03 5E73 5E7C 5F01 5F18 - 5F17 5FC5 620A 6253 6254 6252 6251 65A5 - 65E6 672E 672C 672A 672B 672D 6B63 6BCD - 6C11 6C10 6C38 6C41 6C40 6C3E 72AF 7384 - 7389 74DC 74E6 7518 751F 7528 7529 7530 - 7531 7532 7533 758B 767D 76AE 76BF 76EE - 77DB 77E2 77F3 793A 79BE 7A74 7ACB 4E1E - 4E1F 4E52 4E53 4E69 4E99 4EA4 4EA6 4EA5 - 4EFF 4F09 4F19 4F0A 4F15 4F0D 4F10 4F11 - 4F0F 4EF2 4EF6 4EFB 4EF0 4EF3 4EFD 4F01 - 4F0B 5149 5147 5146 5148 5168 -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = A640 - srcEnd = A67E - mappingOffset = 0230 - Mapping = - 5171 518D 51B0 5217 5211 5212 520E 5216 - 52A3 5308 5321 5320 5370 5371 5409 540F - 540C 540A 5410 5401 540B 5404 5411 540D - 5408 5403 540E 5406 5412 56E0 56DE 56DD - 5733 5730 5728 572D 572C 572F 5729 5919 - 591A 5937 5938 5984 5978 5983 597D 5979 - 5982 5981 5B57 5B58 5B87 5B88 5B85 5B89 - 5BFA 5C16 5C79 5DDE 5E06 5E76 5E74 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = A6A1 - srcEnd = A6FE - mappingOffset = 026F - Mapping = - 5F0F 5F1B 5FD9 5FD6 620E 620C 620D 6210 - 6263 625B 6258 6536 65E9 65E8 65EC 65ED - 66F2 66F3 6709 673D 6734 6731 6735 6B21 - 6B64 6B7B 6C16 6C5D 6C57 6C59 6C5F 6C60 - 6C50 6C55 6C61 6C5B 6C4D 6C4E 7070 725F - 725D 767E 7AF9 7C73 7CF8 7F36 7F8A 7FBD - 8001 8003 800C 8012 8033 807F 8089 808B - 808C 81E3 81EA 81F3 81FC 820C 821B 821F - 826E 8272 827E 866B 8840 884C 8863 897F - 9621 4E32 4EA8 4F4D 4F4F 4F47 4F57 4F5E - 4F34 4F5B 4F55 4F30 4F50 4F51 4F3D 4F3A - 4F38 4F43 4F54 4F3C 4F46 4F63 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = A740 - srcEnd = A77E - mappingOffset = 02CD - Mapping = - 4F5C 4F60 4F2F 4F4E 4F36 4F59 4F5D 4F48 - 4F5A 514C 514B 514D 5175 51B6 51B7 5225 - 5224 5229 522A 5228 52AB 52A9 52AA 52AC - 5323 5373 5375 541D 542D 541E 543E 5426 - 544E 5427 5446 5443 5433 5448 5442 541B - 5429 544A 5439 543B 5438 542E 5435 5436 - 5420 543C 5440 5431 542B 541F 542C 56EA - 56F0 56E4 56EB 574A 5751 5740 574D -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = A7A1 - srcEnd = A7FE - mappingOffset = 030C - Mapping = - 5747 574E 573E 5750 574F 573B 58EF 593E - 599D 5992 59A8 599E 59A3 5999 5996 598D - 59A4 5993 598A 59A5 5B5D 5B5C 5B5A 5B5B - 5B8C 5B8B 5B8F 5C2C 5C40 5C41 5C3F 5C3E - 5C90 5C91 5C94 5C8C 5DEB 5E0C 5E8F 5E87 - 5E8A 5EF7 5F04 5F1F 5F64 5F62 5F77 5F79 - 5FD8 5FCC 5FD7 5FCD 5FF1 5FEB 5FF8 5FEA - 6212 6211 6284 6297 6296 6280 6276 6289 - 626D 628A 627C 627E 6279 6273 6292 626F - 6298 626E 6295 6293 6291 6286 6539 653B - 6538 65F1 66F4 675F 674E 674F 6750 6751 - 675C 6756 675E 6749 6746 6760 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = A840 - srcEnd = A87E - mappingOffset = 036A - Mapping = - 6753 6757 6B65 6BCF 6C42 6C5E 6C99 6C81 - 6C88 6C89 6C85 6C9B 6C6A 6C7A 6C90 6C70 - 6C8C 6C68 6C96 6C92 6C7D 6C83 6C72 6C7E - 6C74 6C86 6C76 6C8D 6C94 6C98 6C82 7076 - 707C 707D 7078 7262 7261 7260 72C4 72C2 - 7396 752C 752B 7537 7538 7682 76EF 77E3 - 79C1 79C0 79BF 7A76 7CFB 7F55 8096 8093 - 809D 8098 809B 809A 80B2 826F 8292 -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = A8A1 - srcEnd = A8FE - mappingOffset = 03A9 - Mapping = - 828B 828D 898B 89D2 8A00 8C37 8C46 8C55 - 8C9D 8D64 8D70 8DB3 8EAB 8ECA 8F9B 8FB0 - 8FC2 8FC6 8FC5 8FC4 5DE1 9091 90A2 90AA - 90A6 90A3 9149 91C6 91CC 9632 962E 9631 - 962A 962C 4E26 4E56 4E73 4E8B 4E9B 4E9E - 4EAB 4EAC 4F6F 4F9D 4F8D 4F73 4F7F 4F6C - 4F9B 4F8B 4F86 4F83 4F70 4F75 4F88 4F69 - 4F7B 4F96 4F7E 4F8F 4F91 4F7A 5154 5152 - 5155 5169 5177 5176 5178 51BD 51FD 523B - 5238 5237 523A 5230 522E 5236 5241 52BE - 52BB 5352 5354 5353 5351 5366 5377 5378 - 5379 53D6 53D4 53D7 5473 5475 -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = A940 - srcEnd = A97E - mappingOffset = 0407 - Mapping = - 5496 5478 5495 5480 547B 5477 5484 5492 - 5486 547C 5490 5471 5476 548C 549A 5462 - 5468 548B 547D 548E 56FA 5783 5777 576A - 5769 5761 5766 5764 577C 591C 5949 5947 - 5948 5944 5954 59BE 59BB 59D4 59B9 59AE - 59D1 59C6 59D0 59CD 59CB 59D3 59CA 59AF - 59B3 59D2 59C5 5B5F 5B64 5B63 5B97 5B9A - 5B98 5B9C 5B99 5B9B 5C1A 5C48 5C45 -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = A9A1 - srcEnd = A9FE - mappingOffset = 0446 - Mapping = - 5C46 5CB7 5CA1 5CB8 5CA9 5CAB 5CB1 5CB3 - 5E18 5E1A 5E16 5E15 5E1B 5E11 5E78 5E9A - 5E97 5E9C 5E95 5E96 5EF6 5F26 5F27 5F29 - 5F80 5F81 5F7F 5F7C 5FDD 5FE0 5FFD 5FF5 - 5FFF 600F 6014 602F 6035 6016 602A 6015 - 6021 6027 6029 602B 601B 6216 6215 623F - 623E 6240 627F 62C9 62CC 62C4 62BF 62C2 - 62B9 62D2 62DB 62AB 62D3 62D4 62CB 62C8 - 62A8 62BD 62BC 62D0 62D9 62C7 62CD 62B5 - 62DA 62B1 62D8 62D6 62D7 62C6 62AC 62CE - 653E 65A7 65BC 65FA 6614 6613 660C 6606 - 6602 660E 6600 660F 6615 660A -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = AA40 - srcEnd = AA7E - mappingOffset = 04A4 - Mapping = - 6607 670D 670B 676D 678B 6795 6771 679C - 6773 6777 6787 679D 6797 676F 6770 677F - 6789 677E 6790 6775 679A 6793 677C 676A - 6772 6B23 6B66 6B67 6B7F 6C13 6C1B 6CE3 - 6CE8 6CF3 6CB1 6CCC 6CE5 6CB3 6CBD 6CBE - 6CBC 6CE2 6CAB 6CD5 6CD3 6CB8 6CC4 6CB9 - 6CC1 6CAE 6CD7 6CC5 6CF1 6CBF 6CBB 6CE1 - 6CDB 6CCA 6CAC 6CEF 6CDC 6CD6 6CE0 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = AAA1 - srcEnd = AAFE - mappingOffset = 04E3 - Mapping = - 7095 708E 7092 708A 7099 722C 722D 7238 - 7248 7267 7269 72C0 72CE 72D9 72D7 72D0 - 73A9 73A8 739F 73AB 73A5 753D 759D 7599 - 759A 7684 76C2 76F2 76F4 77E5 77FD 793E - 7940 7941 79C9 79C8 7A7A 7A79 7AFA 7CFE - 7F54 7F8C 7F8B 8005 80BA 80A5 80A2 80B1 - 80A1 80AB 80A9 80B4 80AA 80AF 81E5 81FE - 820D 82B3 829D 8299 82AD 82BD 829F 82B9 - 82B1 82AC 82A5 82AF 82B8 82A3 82B0 82BE - 82B7 864E 8671 521D 8868 8ECB 8FCE 8FD4 - 8FD1 90B5 90B8 90B1 90B6 91C7 91D1 9577 - 9580 961C 9640 963F 963B 9644 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = AB40 - srcEnd = AB7E - mappingOffset = 0541 - Mapping = - 9642 96B9 96E8 9752 975E 4E9F 4EAD 4EAE - 4FE1 4FB5 4FAF 4FBF 4FE0 4FD1 4FCF 4FDD - 4FC3 4FB6 4FD8 4FDF 4FCA 4FD7 4FAE 4FD0 - 4FC4 4FC2 4FDA 4FCE 4FDE 4FB7 5157 5192 - 5191 51A0 524E 5243 524A 524D 524C 524B - 5247 52C7 52C9 52C3 52C1 530D 5357 537B - 539A 53DB 54AC 54C0 54A8 54CE 54C9 54B8 - 54A6 54B3 54C7 54C2 54BD 54AA 54C1 -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = ABA1 - srcEnd = ABFE - mappingOffset = 0580 - Mapping = - 54C4 54C8 54AF 54AB 54B1 54BB 54A9 54A7 - 54BF 56FF 5782 578B 57A0 57A3 57A2 57CE - 57AE 5793 5955 5951 594F 594E 5950 59DC - 59D8 59FF 59E3 59E8 5A03 59E5 59EA 59DA - 59E6 5A01 59FB 5B69 5BA3 5BA6 5BA4 5BA2 - 5BA5 5C01 5C4E 5C4F 5C4D 5C4B 5CD9 5CD2 - 5DF7 5E1D 5E25 5E1F 5E7D 5EA0 5EA6 5EFA - 5F08 5F2D 5F65 5F88 5F85 5F8A 5F8B 5F87 - 5F8C 5F89 6012 601D 6020 6025 600E 6028 - 604D 6070 6068 6062 6046 6043 606C 606B - 606A 6064 6241 62DC 6316 6309 62FC 62ED - 6301 62EE 62FD 6307 62F1 62F7 -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = AC40 - srcEnd = AC7E - mappingOffset = 05DE - Mapping = - 62EF 62EC 62FE 62F4 6311 6302 653F 6545 - 65AB 65BD 65E2 6625 662D 6620 6627 662F - 661F 6628 6631 6624 66F7 67FF 67D3 67F1 - 67D4 67D0 67EC 67B6 67AF 67F5 67E9 67EF - 67C4 67D1 67B4 67DA 67E5 67B8 67CF 67DE - 67F3 67B0 67D9 67E2 67DD 67D2 6B6A 6B83 - 6B86 6BB5 6BD2 6BD7 6C1F 6CC9 6D0B 6D32 - 6D2A 6D41 6D25 6D0C 6D31 6D1E 6D17 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = ACA1 - srcEnd = ACFE - mappingOffset = 061D - Mapping = - 6D3B 6D3D 6D3E 6D36 6D1B 6CF5 6D39 6D27 - 6D38 6D29 6D2E 6D35 6D0E 6D2B 70AB 70BA - 70B3 70AC 70AF 70AD 70B8 70AE 70A4 7230 - 7272 726F 7274 72E9 72E0 72E1 73B7 73CA - 73BB 73B2 73CD 73C0 73B3 751A 752D 754F - 754C 754E 754B 75AB 75A4 75A5 75A2 75A3 - 7678 7686 7687 7688 76C8 76C6 76C3 76C5 - 7701 76F9 76F8 7709 770B 76FE 76FC 7707 - 77DC 7802 7814 780C 780D 7946 7949 7948 - 7947 79B9 79BA 79D1 79D2 79CB 7A7F 7A81 - 7AFF 7AFD 7C7D 7D02 7D05 7D00 7D09 7D07 - 7D04 7D06 7F38 7F8E 7FBF 8004 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = AD40 - srcEnd = AD7E - mappingOffset = 067B - Mapping = - 8010 800D 8011 8036 80D6 80E5 80DA 80C3 - 80C4 80CC 80E1 80DB 80CE 80DE 80E4 80DD - 81F4 8222 82E7 8303 8305 82E3 82DB 82E6 - 8304 82E5 8302 8309 82D2 82D7 82F1 8301 - 82DC 82D4 82D1 82DE 82D3 82DF 82EF 8306 - 8650 8679 867B 867A 884D 886B 8981 89D4 - 8A08 8A02 8A03 8C9E 8CA0 8D74 8D73 8DB4 - 8ECD 8ECC 8FF0 8FE6 8FE2 8FEA 8FE5 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = ADA1 - srcEnd = ADFE - mappingOffset = 06BA - Mapping = - 8FED 8FEB 8FE4 8FE8 90CA 90CE 90C1 90C3 - 914B 914A 91CD 9582 9650 964B 964C 964D - 9762 9769 97CB 97ED 97F3 9801 98A8 98DB - 98DF 9996 9999 4E58 4EB3 500C 500D 5023 - 4FEF 5026 5025 4FF8 5029 5016 5006 503C - 501F 501A 5012 5011 4FFA 5000 5014 5028 - 4FF1 5021 500B 5019 5018 4FF3 4FEE 502D - 502A 4FFE 502B 5009 517C 51A4 51A5 51A2 - 51CD 51CC 51C6 51CB 5256 525C 5254 525B - 525D 532A 537F 539F 539D 53DF 54E8 5510 - 5501 5537 54FC 54E5 54F2 5506 54FA 5514 - 54E9 54ED 54E1 5509 54EE 54EA -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = AE40 - srcEnd = AE7E - mappingOffset = 0718 - Mapping = - 54E6 5527 5507 54FD 550F 5703 5704 57C2 - 57D4 57CB 57C3 5809 590F 5957 5958 595A - 5A11 5A18 5A1C 5A1F 5A1B 5A13 59EC 5A20 - 5A23 5A29 5A25 5A0C 5A09 5B6B 5C58 5BB0 - 5BB3 5BB6 5BB4 5BAE 5BB5 5BB9 5BB8 5C04 - 5C51 5C55 5C50 5CED 5CFD 5CFB 5CEA 5CE8 - 5CF0 5CF6 5D01 5CF4 5DEE 5E2D 5E2B 5EAB - 5EAD 5EA7 5F31 5F92 5F91 5F90 6059 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = AEA1 - srcEnd = AEFE - mappingOffset = 0757 - Mapping = - 6063 6065 6050 6055 606D 6069 606F 6084 - 609F 609A 608D 6094 608C 6085 6096 6247 - 62F3 6308 62FF 634E 633E 632F 6355 6342 - 6346 634F 6349 633A 6350 633D 632A 632B - 6328 634D 634C 6548 6549 6599 65C1 65C5 - 6642 6649 664F 6643 6652 664C 6645 6641 - 66F8 6714 6715 6717 6821 6838 6848 6846 - 6853 6839 6842 6854 6829 68B3 6817 684C - 6851 683D 67F4 6850 6840 683C 6843 682A - 6845 6813 6818 6841 6B8A 6B89 6BB7 6C23 - 6C27 6C28 6C26 6C24 6CF0 6D6A 6D95 6D88 - 6D87 6D66 6D78 6D77 6D59 6D93 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = AF40 - srcEnd = AF7E - mappingOffset = 07B5 - Mapping = - 6D6C 6D89 6D6E 6D5A 6D74 6D69 6D8C 6D8A - 6D79 6D85 6D65 6D94 70CA 70D8 70E4 70D9 - 70C8 70CF 7239 7279 72FC 72F9 72FD 72F8 - 72F7 7386 73ED 7409 73EE 73E0 73EA 73DE - 7554 755D 755C 755A 7559 75BE 75C5 75C7 - 75B2 75B3 75BD 75BC 75B9 75C2 75B8 768B - 76B0 76CA 76CD 76CE 7729 771F 7720 7728 - 77E9 7830 7827 7838 781D 7834 7837 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = AFA1 - srcEnd = AFFE - mappingOffset = 07F4 - Mapping = - 7825 782D 7820 781F 7832 7955 7950 7960 - 795F 7956 795E 795D 7957 795A 79E4 79E3 - 79E7 79DF 79E6 79E9 79D8 7A84 7A88 7AD9 - 7B06 7B11 7C89 7D21 7D17 7D0B 7D0A 7D20 - 7D22 7D14 7D10 7D15 7D1A 7D1C 7D0D 7D19 - 7D1B 7F3A 7F5F 7F94 7FC5 7FC1 8006 8018 - 8015 8019 8017 803D 803F 80F1 8102 80F0 - 8105 80ED 80F4 8106 80F8 80F3 8108 80FD - 810A 80FC 80EF 81ED 81EC 8200 8210 822A - 822B 8228 822C 82BB 832B 8352 8354 834A - 8338 8350 8349 8335 8334 834F 8332 8339 - 8336 8317 8340 8331 8328 8343 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = B040 - srcEnd = B07E - mappingOffset = 0852 - Mapping = - 8654 868A 86AA 8693 86A4 86A9 868C 86A3 - 869C 8870 8877 8881 8882 887D 8879 8A18 - 8A10 8A0E 8A0C 8A15 8A0A 8A17 8A13 8A16 - 8A0F 8A11 8C48 8C7A 8C79 8CA1 8CA2 8D77 - 8EAC 8ED2 8ED4 8ECF 8FB1 9001 9006 8FF7 - 9000 8FFA 8FF4 9003 8FFD 9005 8FF8 9095 - 90E1 90DD 90E2 9152 914D 914C 91D8 91DD - 91D7 91DC 91D9 9583 9662 9663 9661 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = B0A1 - srcEnd = B0FE - mappingOffset = 0891 - Mapping = - 965B 965D 9664 9658 965E 96BB 98E2 99AC - 9AA8 9AD8 9B25 9B32 9B3C 4E7E 507A 507D - 505C 5047 5043 504C 505A 5049 5065 5076 - 504E 5055 5075 5074 5077 504F 500F 506F - 506D 515C 5195 51F0 526A 526F 52D2 52D9 - 52D8 52D5 5310 530F 5319 533F 5340 533E - 53C3 66FC 5546 556A 5566 5544 555E 5561 - 5543 554A 5531 5556 554F 5555 552F 5564 - 5538 552E 555C 552C 5563 5533 5541 5557 - 5708 570B 5709 57DF 5805 580A 5806 57E0 - 57E4 57FA 5802 5835 57F7 57F9 5920 5962 - 5A36 5A41 5A49 5A66 5A6A 5A40 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = B140 - srcEnd = B17E - mappingOffset = 08EF - Mapping = - 5A3C 5A62 5A5A 5A46 5A4A 5B70 5BC7 5BC5 - 5BC4 5BC2 5BBF 5BC6 5C09 5C08 5C07 5C60 - 5C5C 5C5D 5D07 5D06 5D0E 5D1B 5D16 5D22 - 5D11 5D29 5D14 5D19 5D24 5D27 5D17 5DE2 - 5E38 5E36 5E33 5E37 5EB7 5EB8 5EB6 5EB5 - 5EBE 5F35 5F37 5F57 5F6C 5F69 5F6B 5F97 - 5F99 5F9E 5F98 5FA1 5FA0 5F9C 607F 60A3 - 6089 60A0 60A8 60CB 60B4 60E6 60BD -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = B1A1 - srcEnd = B1FE - mappingOffset = 092E - Mapping = - 60C5 60BB 60B5 60DC 60BC 60D8 60D5 60C6 - 60DF 60B8 60DA 60C7 621A 621B 6248 63A0 - 63A7 6372 6396 63A2 63A5 6377 6367 6398 - 63AA 6371 63A9 6389 6383 639B 636B 63A8 - 6384 6388 6399 63A1 63AC 6392 638F 6380 - 637B 6369 6368 637A 655D 6556 6551 6559 - 6557 555F 654F 6558 6555 6554 659C 659B - 65AC 65CF 65CB 65CC 65CE 665D 665A 6664 - 6668 6666 665E 66F9 52D7 671B 6881 68AF - 68A2 6893 68B5 687F 6876 68B1 68A7 6897 - 68B0 6883 68C4 68AD 6886 6885 6894 689D - 68A8 689F 68A1 6882 6B32 6BBA -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = B240 - srcEnd = B27E - mappingOffset = 098C - Mapping = - 6BEB 6BEC 6C2B 6D8E 6DBC 6DF3 6DD9 6DB2 - 6DE1 6DCC 6DE4 6DFB 6DFA 6E05 6DC7 6DCB - 6DAF 6DD1 6DAE 6DDE 6DF9 6DB8 6DF7 6DF5 - 6DC5 6DD2 6E1A 6DB5 6DDA 6DEB 6DD8 6DEA - 6DF1 6DEE 6DE8 6DC6 6DC4 6DAA 6DEC 6DBF - 6DE6 70F9 7109 710A 70FD 70EF 723D 727D - 7281 731C 731B 7316 7313 7319 7387 7405 - 740A 7403 7406 73FE 740D 74E0 74F6 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = B2A1 - srcEnd = B2FE - mappingOffset = 09CB - Mapping = - 74F7 751C 7522 7565 7566 7562 7570 758F - 75D4 75D5 75B5 75CA 75CD 768E 76D4 76D2 - 76DB 7737 773E 773C 7736 7738 773A 786B - 7843 784E 7965 7968 796D 79FB 7A92 7A95 - 7B20 7B28 7B1B 7B2C 7B26 7B19 7B1E 7B2E - 7C92 7C97 7C95 7D46 7D43 7D71 7D2E 7D39 - 7D3C 7D40 7D30 7D33 7D44 7D2F 7D42 7D32 - 7D31 7F3D 7F9E 7F9A 7FCC 7FCE 7FD2 801C - 804A 8046 812F 8116 8123 812B 8129 8130 - 8124 8202 8235 8237 8236 8239 838E 839E - 8398 8378 83A2 8396 83BD 83AB 8392 838A - 8393 8389 83A0 8377 837B 837C -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = B340 - srcEnd = B37E - mappingOffset = 0A29 - Mapping = - 8386 83A7 8655 5F6A 86C7 86C0 86B6 86C4 - 86B5 86C6 86CB 86B1 86AF 86C9 8853 889E - 8888 88AB 8892 8896 888D 888B 8993 898F - 8A2A 8A1D 8A23 8A25 8A31 8A2D 8A1F 8A1B - 8A22 8C49 8C5A 8CA9 8CAC 8CAB 8CA8 8CAA - 8CA7 8D67 8D66 8DBE 8DBA 8EDB 8EDF 9019 - 900D 901A 9017 9023 901F 901D 9010 9015 - 901E 9020 900F 9022 9016 901B 9014 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = B3A1 - srcEnd = B3FE - mappingOffset = 0A68 - Mapping = - 90E8 90ED 90FD 9157 91CE 91F5 91E6 91E3 - 91E7 91ED 91E9 9589 966A 9675 9673 9678 - 9670 9674 9676 9677 966C 96C0 96EA 96E9 - 7AE0 7ADF 9802 9803 9B5A 9CE5 9E75 9E7F - 9EA5 9EBB 50A2 508D 5085 5099 5091 5080 - 5096 5098 509A 6700 51F1 5272 5274 5275 - 5269 52DE 52DD 52DB 535A 53A5 557B 5580 - 55A7 557C 558A 559D 5598 5582 559C 55AA - 5594 5587 558B 5583 55B3 55AE 559F 553E - 55B2 559A 55BB 55AC 55B1 557E 5589 55AB - 5599 570D 582F 582A 5834 5824 5830 5831 - 5821 581D 5820 58F9 58FA 5960 -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = B440 - srcEnd = B47E - mappingOffset = 0AC6 - Mapping = - 5A77 5A9A 5A7F 5A92 5A9B 5AA7 5B73 5B71 - 5BD2 5BCC 5BD3 5BD0 5C0A 5C0B 5C31 5D4C - 5D50 5D34 5D47 5DFD 5E45 5E3D 5E40 5E43 - 5E7E 5ECA 5EC1 5EC2 5EC4 5F3C 5F6D 5FA9 - 5FAA 5FA8 60D1 60E1 60B2 60B6 60E0 611C - 6123 60FA 6115 60F0 60FB 60F4 6168 60F1 - 610E 60F6 6109 6100 6112 621F 6249 63A3 - 638C 63CF 63C0 63E9 63C9 63C6 63CD -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = B4A1 - srcEnd = B4FE - mappingOffset = 0B05 - Mapping = - 63D2 63E3 63D0 63E1 63D6 63ED 63EE 6376 - 63F4 63EA 63DB 6452 63DA 63F9 655E 6566 - 6562 6563 6591 6590 65AF 666E 6670 6674 - 6676 666F 6691 667A 667E 6677 66FE 66FF - 671F 671D 68FA 68D5 68E0 68D8 68D7 6905 - 68DF 68F5 68EE 68E7 68F9 68D2 68F2 68E3 - 68CB 68CD 690D 6912 690E 68C9 68DA 696E - 68FB 6B3E 6B3A 6B3D 6B98 6B96 6BBC 6BEF - 6C2E 6C2F 6C2C 6E2F 6E38 6E54 6E21 6E32 - 6E67 6E4A 6E20 6E25 6E23 6E1B 6E5B 6E58 - 6E24 6E56 6E6E 6E2D 6E26 6E6F 6E34 6E4D - 6E3A 6E2C 6E43 6E1D 6E3E 6ECB -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = B540 - srcEnd = B57E - mappingOffset = 0B63 - Mapping = - 6E89 6E19 6E4E 6E63 6E44 6E72 6E69 6E5F - 7119 711A 7126 7130 7121 7136 716E 711C - 724C 7284 7280 7336 7325 7334 7329 743A - 742A 7433 7422 7425 7435 7436 7434 742F - 741B 7426 7428 7525 7526 756B 756A 75E2 - 75DB 75E3 75D9 75D8 75DE 75E0 767B 767C - 7696 7693 76B4 76DC 774F 77ED 785D 786C - 786F 7A0D 7A08 7A0B 7A05 7A00 7A98 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = B5A1 - srcEnd = B5FE - mappingOffset = 0BA2 - Mapping = - 7A97 7A96 7AE5 7AE3 7B49 7B56 7B46 7B50 - 7B52 7B54 7B4D 7B4B 7B4F 7B51 7C9F 7CA5 - 7D5E 7D50 7D68 7D55 7D2B 7D6E 7D72 7D61 - 7D66 7D62 7D70 7D73 5584 7FD4 7FD5 800B - 8052 8085 8155 8154 814B 8151 814E 8139 - 8146 813E 814C 8153 8174 8212 821C 83E9 - 8403 83F8 840D 83E0 83C5 840B 83C1 83EF - 83F1 83F4 8457 840A 83F0 840C 83CC 83FD - 83F2 83CA 8438 840E 8404 83DC 8407 83D4 - 83DF 865B 86DF 86D9 86ED 86D4 86DB 86E4 - 86D0 86DE 8857 88C1 88C2 88B1 8983 8996 - 8A3B 8A60 8A55 8A5E 8A3C 8A41 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = B640 - srcEnd = B67E - mappingOffset = 0C00 - Mapping = - 8A54 8A5B 8A50 8A46 8A34 8A3A 8A36 8A56 - 8C61 8C82 8CAF 8CBC 8CB3 8CBD 8CC1 8CBB - 8CC0 8CB4 8CB7 8CB6 8CBF 8CB8 8D8A 8D85 - 8D81 8DCE 8DDD 8DCB 8DDA 8DD1 8DCC 8DDB - 8DC6 8EFB 8EF8 8EFC 8F9C 902E 9035 9031 - 9038 9032 9036 9102 90F5 9109 90FE 9163 - 9165 91CF 9214 9215 9223 9209 921E 920D - 9210 9207 9211 9594 958F 958B 9591 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = B6A1 - srcEnd = B6FE - mappingOffset = 0C3F - Mapping = - 9593 9592 958E 968A 968E 968B 967D 9685 - 9686 968D 9672 9684 96C1 96C5 96C4 96C6 - 96C7 96EF 96F2 97CC 9805 9806 9808 98E7 - 98EA 98EF 98E9 98F2 98ED 99AE 99AD 9EC3 - 9ECD 9ED1 4E82 50AD 50B5 50B2 50B3 50C5 - 50BE 50AC 50B7 50BB 50AF 50C7 527F 5277 - 527D 52DF 52E6 52E4 52E2 52E3 532F 55DF - 55E8 55D3 55E6 55CE 55DC 55C7 55D1 55E3 - 55E4 55EF 55DA 55E1 55C5 55C6 55E5 55C9 - 5712 5713 585E 5851 5858 5857 585A 5854 - 586B 584C 586D 584A 5862 5852 584B 5967 - 5AC1 5AC9 5ACC 5ABE 5ABD 5ABC -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = B740 - srcEnd = B77E - mappingOffset = 0C9D - Mapping = - 5AB3 5AC2 5AB2 5D69 5D6F 5E4C 5E79 5EC9 - 5EC8 5F12 5F59 5FAC 5FAE 611A 610F 6148 - 611F 60F3 611B 60F9 6101 6108 614E 614C - 6144 614D 613E 6134 6127 610D 6106 6137 - 6221 6222 6413 643E 641E 642A 642D 643D - 642C 640F 641C 6414 640D 6436 6416 6417 - 6406 656C 659F 65B0 6697 6689 6687 6688 - 6696 6684 6698 668D 6703 6994 696D -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = B7A1 - srcEnd = B7FE - mappingOffset = 0CDC - Mapping = - 695A 6977 6960 6954 6975 6930 6982 694A - 6968 696B 695E 6953 6979 6986 695D 6963 - 695B 6B47 6B72 6BC0 6BBF 6BD3 6BFD 6EA2 - 6EAF 6ED3 6EB6 6EC2 6E90 6E9D 6EC7 6EC5 - 6EA5 6E98 6EBC 6EBA 6EAB 6ED1 6E96 6E9C - 6EC4 6ED4 6EAA 6EA7 6EB4 714E 7159 7169 - 7164 7149 7167 715C 716C 7166 714C 7165 - 715E 7146 7168 7156 723A 7252 7337 7345 - 733F 733E 746F 745A 7455 745F 745E 7441 - 743F 7459 745B 745C 7576 7578 7600 75F0 - 7601 75F2 75F1 75FA 75FF 75F4 75F3 76DE - 76DF 775B 776B 7766 775E 7763 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = B840 - srcEnd = B87E - mappingOffset = 0D3A - Mapping = - 7779 776A 776C 775C 7765 7768 7762 77EE - 788E 78B0 7897 7898 788C 7889 787C 7891 - 7893 787F 797A 797F 7981 842C 79BD 7A1C - 7A1A 7A20 7A14 7A1F 7A1E 7A9F 7AA0 7B77 - 7BC0 7B60 7B6E 7B67 7CB1 7CB3 7CB5 7D93 - 7D79 7D91 7D81 7D8F 7D5B 7F6E 7F69 7F6A - 7F72 7FA9 7FA8 7FA4 8056 8058 8086 8084 - 8171 8170 8178 8165 816E 8173 816B -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = B8A1 - srcEnd = B8FE - mappingOffset = 0D79 - Mapping = - 8179 817A 8166 8205 8247 8482 8477 843D - 8431 8475 8466 846B 8449 846C 845B 843C - 8435 8461 8463 8469 846D 8446 865E 865C - 865F 86F9 8713 8708 8707 8700 86FE 86FB - 8702 8703 8706 870A 8859 88DF 88D4 88D9 - 88DC 88D8 88DD 88E1 88CA 88D5 88D2 899C - 89E3 8A6B 8A72 8A73 8A66 8A69 8A70 8A87 - 8A7C 8A63 8AA0 8A71 8A85 8A6D 8A62 8A6E - 8A6C 8A79 8A7B 8A3E 8A68 8C62 8C8A 8C89 - 8CCA 8CC7 8CC8 8CC4 8CB2 8CC3 8CC2 8CC5 - 8DE1 8DDF 8DE8 8DEF 8DF3 8DFA 8DEA 8DE4 - 8DE6 8EB2 8F03 8F09 8EFE 8F0A -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = B940 - srcEnd = B97E - mappingOffset = 0DD7 - Mapping = - 8F9F 8FB2 904B 904A 9053 9042 9054 903C - 9055 9050 9047 904F 904E 904D 9051 903E - 9041 9112 9117 916C 916A 9169 91C9 9237 - 9257 9238 923D 9240 923E 925B 924B 9264 - 9251 9234 9249 924D 9245 9239 923F 925A - 9598 9698 9694 9695 96CD 96CB 96C9 96CA - 96F7 96FB 96F9 96F6 9756 9774 9776 9810 - 9811 9813 980A 9812 980C 98FC 98F4 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = B9A1 - srcEnd = B9FE - mappingOffset = 0E16 - Mapping = - 98FD 98FE 99B3 99B1 99B4 9AE1 9CE9 9E82 - 9F0E 9F13 9F20 50E7 50EE 50E5 50D6 50ED - 50DA 50D5 50CF 50D1 50F1 50CE 50E9 5162 - 51F3 5283 5282 5331 53AD 55FE 5600 561B - 5617 55FD 5614 5606 5609 560D 560E 55F7 - 5616 561F 5608 5610 55F6 5718 5716 5875 - 587E 5883 5893 588A 5879 5885 587D 58FD - 5925 5922 5924 596A 5969 5AE1 5AE6 5AE9 - 5AD7 5AD6 5AD8 5AE3 5B75 5BDE 5BE7 5BE1 - 5BE5 5BE6 5BE8 5BE2 5BE4 5BDF 5C0D 5C62 - 5D84 5D87 5E5B 5E63 5E55 5E57 5E54 5ED3 - 5ED6 5F0A 5F46 5F70 5FB9 6147 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = BA40 - srcEnd = BA7E - mappingOffset = 0E74 - Mapping = - 613F 614B 6177 6162 6163 615F 615A 6158 - 6175 622A 6487 6458 6454 64A4 6478 645F - 647A 6451 6467 6434 646D 647B 6572 65A1 - 65D7 65D6 66A2 66A8 669D 699C 69A8 6995 - 69C1 69AE 69D3 69CB 699B 69B7 69BB 69AB - 69B4 69D0 69CD 69AD 69CC 69A6 69C3 69A3 - 6B49 6B4C 6C33 6F33 6F14 6EFE 6F13 6EF4 - 6F29 6F3E 6F20 6F2C 6F0F 6F02 6F22 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = BAA1 - srcEnd = BAFE - mappingOffset = 0EB3 - Mapping = - 6EFF 6EEF 6F06 6F31 6F38 6F32 6F23 6F15 - 6F2B 6F2F 6F88 6F2A 6EEC 6F01 6EF2 6ECC - 6EF7 7194 7199 717D 718A 7184 7192 723E - 7292 7296 7344 7350 7464 7463 746A 7470 - 746D 7504 7591 7627 760D 760B 7609 7613 - 76E1 76E3 7784 777D 777F 7761 78C1 789F - 78A7 78B3 78A9 78A3 798E 798F 798D 7A2E - 7A31 7AAA 7AA9 7AED 7AEF 7BA1 7B95 7B8B - 7B75 7B97 7B9D 7B94 7B8F 7BB8 7B87 7B84 - 7CB9 7CBD 7CBE 7DBB 7DB0 7D9C 7DBD 7DBE - 7DA0 7DCA 7DB4 7DB2 7DB1 7DBA 7DA2 7DBF - 7DB5 7DB8 7DAD 7DD2 7DC7 7DAC -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = BB40 - srcEnd = BB7E - mappingOffset = 0F11 - Mapping = - 7F70 7FE0 7FE1 7FDF 805E 805A 8087 8150 - 8180 818F 8188 818A 817F 8182 81E7 81FA - 8207 8214 821E 824B 84C9 84BF 84C6 84C4 - 8499 849E 84B2 849C 84CB 84B8 84C0 84D3 - 8490 84BC 84D1 84CA 873F 871C 873B 8722 - 8725 8734 8718 8755 8737 8729 88F3 8902 - 88F4 88F9 88F8 88FD 88E8 891A 88EF 8AA6 - 8A8C 8A9E 8AA3 8A8D 8AA1 8A93 8AA4 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = BBA1 - srcEnd = BBFE - mappingOffset = 0F50 - Mapping = - 8AAA 8AA5 8AA8 8A98 8A91 8A9A 8AA7 8C6A - 8C8D 8C8C 8CD3 8CD1 8CD2 8D6B 8D99 8D95 - 8DFC 8F14 8F12 8F15 8F13 8FA3 9060 9058 - 905C 9063 9059 905E 9062 905D 905B 9119 - 9118 911E 9175 9178 9177 9174 9278 9280 - 9285 9298 9296 927B 9293 929C 92A8 927C - 9291 95A1 95A8 95A9 95A3 95A5 95A4 9699 - 969C 969B 96CC 96D2 9700 977C 9785 97F6 - 9817 9818 98AF 98B1 9903 9905 990C 9909 - 99C1 9AAF 9AB0 9AE6 9B41 9B42 9CF4 9CF6 - 9CF3 9EBC 9F3B 9F4A 5104 5100 50FB 50F5 - 50F9 5102 5108 5109 5105 51DC -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = BC40 - srcEnd = BC7E - mappingOffset = 0FAE - Mapping = - 5287 5288 5289 528D 528A 52F0 53B2 562E - 563B 5639 5632 563F 5634 5629 5653 564E - 5657 5674 5636 562F 5630 5880 589F 589E - 58B3 589C 58AE 58A9 58A6 596D 5B09 5AFB - 5B0B 5AF5 5B0C 5B08 5BEE 5BEC 5BE9 5BEB - 5C64 5C65 5D9D 5D94 5E62 5E5F 5E61 5EE2 - 5EDA 5EDF 5EDD 5EE3 5EE0 5F48 5F71 5FB7 - 5FB5 6176 6167 616E 615D 6155 6182 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = BCA1 - srcEnd = BCFE - mappingOffset = 0FED - Mapping = - 617C 6170 616B 617E 61A7 6190 61AB 618E - 61AC 619A 61A4 6194 61AE 622E 6469 646F - 6479 649E 64B2 6488 6490 64B0 64A5 6493 - 6495 64A9 6492 64AE 64AD 64AB 649A 64AC - 6499 64A2 64B3 6575 6577 6578 66AE 66AB - 66B4 66B1 6A23 6A1F 69E8 6A01 6A1E 6A19 - 69FD 6A21 6A13 6A0A 69F3 6A02 6A05 69ED - 6A11 6B50 6B4E 6BA4 6BC5 6BC6 6F3F 6F7C - 6F84 6F51 6F66 6F54 6F86 6F6D 6F5B 6F78 - 6F6E 6F8E 6F7A 6F70 6F64 6F97 6F58 6ED5 - 6F6F 6F60 6F5F 719F 71AC 71B1 71A8 7256 - 729B 734E 7357 7469 748B 7483 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = BD40 - srcEnd = BD7E - mappingOffset = 104B - Mapping = - 747E 7480 757F 7620 7629 761F 7624 7626 - 7621 7622 769A 76BA 76E4 778E 7787 778C - 7791 778B 78CB 78C5 78BA 78CA 78BE 78D5 - 78BC 78D0 7A3F 7A3C 7A40 7A3D 7A37 7A3B - 7AAF 7AAE 7BAD 7BB1 7BC4 7BB4 7BC6 7BC7 - 7BC1 7BA0 7BCC 7CCA 7DE0 7DF4 7DEF 7DFB - 7DD8 7DEC 7DDD 7DE8 7DE3 7DDA 7DDE 7DE9 - 7D9E 7DD9 7DF2 7DF9 7F75 7F77 7FAF -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = BDA1 - srcEnd = BDFE - mappingOffset = 108A - Mapping = - 7FE9 8026 819B 819C 819D 81A0 819A 8198 - 8517 853D 851A 84EE 852C 852D 8513 8511 - 8523 8521 8514 84EC 8525 84FF 8506 8782 - 8774 8776 8760 8766 8778 8768 8759 8757 - 874C 8753 885B 885D 8910 8907 8912 8913 - 8915 890A 8ABC 8AD2 8AC7 8AC4 8A95 8ACB - 8AF8 8AB2 8AC9 8AC2 8ABF 8AB0 8AD6 8ACD - 8AB6 8AB9 8ADB 8C4C 8C4E 8C6C 8CE0 8CDE - 8CE6 8CE4 8CEC 8CED 8CE2 8CE3 8CDC 8CEA - 8CE1 8D6D 8D9F 8DA3 8E2B 8E10 8E1D 8E22 - 8E0F 8E29 8E1F 8E21 8E1E 8EBA 8F1D 8F1B - 8F1F 8F29 8F26 8F2A 8F1C 8F1E -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = BE40 - srcEnd = BE7E - mappingOffset = 10E8 - Mapping = - 8F25 9069 906E 9068 906D 9077 9130 912D - 9127 9131 9187 9189 918B 9183 92C5 92BB - 92B7 92EA 92AC 92E4 92C1 92B3 92BC 92D2 - 92C7 92F0 92B2 95AD 95B1 9704 9706 9707 - 9709 9760 978D 978B 978F 9821 982B 981C - 98B3 990A 9913 9912 9918 99DD 99D0 99DF - 99DB 99D1 99D5 99D2 99D9 9AB7 9AEE 9AEF - 9B27 9B45 9B44 9B77 9B6F 9D06 9D09 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = BEA1 - srcEnd = BEFE - mappingOffset = 1127 - Mapping = - 9D03 9EA9 9EBE 9ECE 58A8 9F52 5112 5118 - 5114 5110 5115 5180 51AA 51DD 5291 5293 - 52F3 5659 566B 5679 5669 5664 5678 566A - 5668 5665 5671 566F 566C 5662 5676 58C1 - 58BE 58C7 58C5 596E 5B1D 5B34 5B78 5BF0 - 5C0E 5F4A 61B2 6191 61A9 618A 61CD 61B6 - 61BE 61CA 61C8 6230 64C5 64C1 64CB 64BB - 64BC 64DA 64C4 64C7 64C2 64CD 64BF 64D2 - 64D4 64BE 6574 66C6 66C9 66B9 66C4 66C7 - 66B8 6A3D 6A38 6A3A 6A59 6A6B 6A58 6A39 - 6A44 6A62 6A61 6A4B 6A47 6A35 6A5F 6A48 - 6B59 6B77 6C05 6FC2 6FB1 6FA1 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = BF40 - srcEnd = BF7E - mappingOffset = 1185 - Mapping = - 6FC3 6FA4 6FC1 6FA7 6FB3 6FC0 6FB9 6FB6 - 6FA6 6FA0 6FB4 71BE 71C9 71D0 71D2 71C8 - 71D5 71B9 71CE 71D9 71DC 71C3 71C4 7368 - 749C 74A3 7498 749F 749E 74E2 750C 750D - 7634 7638 763A 76E7 76E5 77A0 779E 779F - 77A5 78E8 78DA 78EC 78E7 79A6 7A4D 7A4E - 7A46 7A4C 7A4B 7ABA 7BD9 7C11 7BC9 7BE4 - 7BDB 7BE1 7BE9 7BE6 7CD5 7CD6 7E0A -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = BFA1 - srcEnd = BFFE - mappingOffset = 11C4 - Mapping = - 7E11 7E08 7E1B 7E23 7E1E 7E1D 7E09 7E10 - 7F79 7FB2 7FF0 7FF1 7FEE 8028 81B3 81A9 - 81A8 81FB 8208 8258 8259 854A 8559 8548 - 8568 8569 8543 8549 856D 856A 855E 8783 - 879F 879E 87A2 878D 8861 892A 8932 8925 - 892B 8921 89AA 89A6 8AE6 8AFA 8AEB 8AF1 - 8B00 8ADC 8AE7 8AEE 8AFE 8B01 8B02 8AF7 - 8AED 8AF3 8AF6 8AFC 8C6B 8C6D 8C93 8CF4 - 8E44 8E31 8E34 8E42 8E39 8E35 8F3B 8F2F - 8F38 8F33 8FA8 8FA6 9075 9074 9078 9072 - 907C 907A 9134 9192 9320 9336 92F8 9333 - 932F 9322 92FC 932B 9304 931A -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = C040 - srcEnd = C07E - mappingOffset = 1222 - Mapping = - 9310 9326 9321 9315 932E 9319 95BB 96A7 - 96A8 96AA 96D5 970E 9711 9716 970D 9713 - 970F 975B 975C 9766 9798 9830 9838 983B - 9837 982D 9839 9824 9910 9928 991E 991B - 9921 991A 99ED 99E2 99F1 9AB8 9ABC 9AFB - 9AED 9B28 9B91 9D15 9D23 9D26 9D28 9D12 - 9D1B 9ED8 9ED4 9F8D 9F9C 512A 511F 5121 - 5132 52F5 568E 5680 5690 5685 5687 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = C0A1 - srcEnd = C0FE - mappingOffset = 1261 - Mapping = - 568F 58D5 58D3 58D1 58CE 5B30 5B2A 5B24 - 5B7A 5C37 5C68 5DBC 5DBA 5DBD 5DB8 5E6B - 5F4C 5FBD 61C9 61C2 61C7 61E6 61CB 6232 - 6234 64CE 64CA 64D8 64E0 64F0 64E6 64EC - 64F1 64E2 64ED 6582 6583 66D9 66D6 6A80 - 6A94 6A84 6AA2 6A9C 6ADB 6AA3 6A7E 6A97 - 6A90 6AA0 6B5C 6BAE 6BDA 6C08 6FD8 6FF1 - 6FDF 6FE0 6FDB 6FE4 6FEB 6FEF 6F80 6FEC - 6FE1 6FE9 6FD5 6FEE 6FF0 71E7 71DF 71EE - 71E6 71E5 71ED 71EC 71F4 71E0 7235 7246 - 7370 7372 74A9 74B0 74A6 74A8 7646 7642 - 764C 76EA 77B3 77AA 77B0 77AC -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = C140 - srcEnd = C17E - mappingOffset = 12BF - Mapping = - 77A7 77AD 77EF 78F7 78FA 78F4 78EF 7901 - 79A7 79AA 7A57 7ABF 7C07 7C0D 7BFE 7BF7 - 7C0C 7BE0 7CE0 7CDC 7CDE 7CE2 7CDF 7CD9 - 7CDD 7E2E 7E3E 7E46 7E37 7E32 7E43 7E2B - 7E3D 7E31 7E45 7E41 7E34 7E39 7E48 7E35 - 7E3F 7E2F 7F44 7FF3 7FFC 8071 8072 8070 - 806F 8073 81C6 81C3 81BA 81C2 81C0 81BF - 81BD 81C9 81BE 81E8 8209 8271 85AA -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = C1A1 - srcEnd = C1FE - mappingOffset = 12FE - Mapping = - 8584 857E 859C 8591 8594 85AF 859B 8587 - 85A8 858A 8667 87C0 87D1 87B3 87D2 87C6 - 87AB 87BB 87BA 87C8 87CB 893B 8936 8944 - 8938 893D 89AC 8B0E 8B17 8B19 8B1B 8B0A - 8B20 8B1D 8B04 8B10 8C41 8C3F 8C73 8CFA - 8CFD 8CFC 8CF8 8CFB 8DA8 8E49 8E4B 8E48 - 8E4A 8F44 8F3E 8F42 8F45 8F3F 907F 907D - 9084 9081 9082 9080 9139 91A3 919E 919C - 934D 9382 9328 9375 934A 9365 934B 9318 - 937E 936C 935B 9370 935A 9354 95CA 95CB - 95CC 95C8 95C6 96B1 96B8 96D6 971C 971E - 97A0 97D3 9846 98B6 9935 9A01 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = C240 - srcEnd = C27E - mappingOffset = 135C - Mapping = - 99FF 9BAE 9BAB 9BAA 9BAD 9D3B 9D3F 9E8B - 9ECF 9EDE 9EDC 9EDD 9EDB 9F3E 9F4B 53E2 - 5695 56AE 58D9 58D8 5B38 5F5D 61E3 6233 - 64F4 64F2 64FE 6506 64FA 64FB 64F7 65B7 - 66DC 6726 6AB3 6AAC 6AC3 6ABB 6AB8 6AC2 - 6AAE 6AAF 6B5F 6B78 6BAF 7009 700B 6FFE - 7006 6FFA 7011 700F 71FB 71FC 71FE 71F8 - 7377 7375 74A7 74BF 7515 7656 7658 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = C2A1 - srcEnd = C2FE - mappingOffset = 139B - Mapping = - 7652 77BD 77BF 77BB 77BC 790E 79AE 7A61 - 7A62 7A60 7AC4 7AC5 7C2B 7C27 7C2A 7C1E - 7C23 7C21 7CE7 7E54 7E55 7E5E 7E5A 7E61 - 7E52 7E59 7F48 7FF9 7FFB 8077 8076 81CD - 81CF 820A 85CF 85A9 85CD 85D0 85C9 85B0 - 85BA 85B9 85A6 87EF 87EC 87F2 87E0 8986 - 89B2 89F4 8B28 8B39 8B2C 8B2B 8C50 8D05 - 8E59 8E63 8E66 8E64 8E5F 8E55 8EC0 8F49 - 8F4D 9087 9083 9088 91AB 91AC 91D0 9394 - 938A 9396 93A2 93B3 93AE 93AC 93B0 9398 - 939A 9397 95D4 95D6 95D0 95D5 96E2 96DC - 96D9 96DB 96DE 9724 97A3 97A6 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = C340 - srcEnd = C37E - mappingOffset = 13F9 - Mapping = - 97AD 97F9 984D 984F 984C 984E 9853 98BA - 993E 993F 993D 992E 99A5 9A0E 9AC1 9B03 - 9B06 9B4F 9B4E 9B4D 9BCA 9BC9 9BFD 9BC8 - 9BC0 9D51 9D5D 9D60 9EE0 9F15 9F2C 5133 - 56A5 58DE 58DF 58E2 5BF5 9F90 5EEC 61F2 - 61F7 61F6 61F5 6500 650F 66E0 66DD 6AE5 - 6ADD 6ADA 6AD3 701B 701F 7028 701A 701D - 7015 7018 7206 720D 7258 72A2 7378 -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = C3A1 - srcEnd = C3FE - mappingOffset = 1438 - Mapping = - 737A 74BD 74CA 74E3 7587 7586 765F 7661 - 77C7 7919 79B1 7A6B 7A69 7C3E 7C3F 7C38 - 7C3D 7C37 7C40 7E6B 7E6D 7E79 7E69 7E6A - 7F85 7E73 7FB6 7FB9 7FB8 81D8 85E9 85DD - 85EA 85D5 85E4 85E5 85F7 87FB 8805 880D - 87F9 87FE 8960 895F 8956 895E 8B41 8B5C - 8B58 8B49 8B5A 8B4E 8B4F 8B46 8B59 8D08 - 8D0A 8E7C 8E72 8E87 8E76 8E6C 8E7A 8E74 - 8F54 8F4E 8FAD 908A 908B 91B1 91AE 93E1 - 93D1 93DF 93C3 93C8 93DC 93DD 93D6 93E2 - 93CD 93D8 93E4 93D7 93E8 95DC 96B4 96E3 - 972A 9727 9761 97DC 97FB 985E -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = C440 - srcEnd = C47E - mappingOffset = 1496 - Mapping = - 9858 985B 98BC 9945 9949 9A16 9A19 9B0D - 9BE8 9BE7 9BD6 9BDB 9D89 9D61 9D72 9D6A - 9D6C 9E92 9E97 9E93 9EB4 52F8 56A8 56B7 - 56B6 56B4 56BC 58E4 5B40 5B43 5B7D 5BF6 - 5DC9 61F8 61FA 6518 6514 6519 66E6 6727 - 6AEC 703E 7030 7032 7210 737B 74CF 7662 - 7665 7926 792A 792C 792B 7AC7 7AF6 7C4C - 7C43 7C4D 7CEF 7CF0 8FAE 7E7D 7E7C -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = C4A1 - srcEnd = C4FE - mappingOffset = 14D5 - Mapping = - 7E82 7F4C 8000 81DA 8266 85FB 85F9 8611 - 85FA 8606 860B 8607 860A 8814 8815 8964 - 89BA 89F8 8B70 8B6C 8B66 8B6F 8B5F 8B6B - 8D0F 8D0D 8E89 8E81 8E85 8E82 91B4 91CB - 9418 9403 93FD 95E1 9730 98C4 9952 9951 - 99A8 9A2B 9A30 9A37 9A35 9C13 9C0D 9E79 - 9EB5 9EE8 9F2F 9F5F 9F63 9F61 5137 5138 - 56C1 56C0 56C2 5914 5C6C 5DCD 61FC 61FE - 651D 651C 6595 66E9 6AFB 6B04 6AFA 6BB2 - 704C 721B 72A7 74D6 74D4 7669 77D3 7C50 - 7E8F 7E8C 7FBC 8617 862D 861A 8823 8822 - 8821 881F 896A 896C 89BD 8B74 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = C540 - srcEnd = C57E - mappingOffset = 1533 - Mapping = - 8B77 8B7D 8D13 8E8A 8E8D 8E8B 8F5F 8FAF - 91BA 942E 9433 9435 943A 9438 9432 942B - 95E2 9738 9739 9732 97FF 9867 9865 9957 - 9A45 9A43 9A40 9A3E 9ACF 9B54 9B51 9C2D - 9C25 9DAF 9DB4 9DC2 9DB8 9E9D 9EEF 9F19 - 9F5C 9F66 9F67 513C 513B 56C8 56CA 56C9 - 5B7F 5DD4 5DD2 5F4E 61FF 6524 6B0A 6B61 - 7051 7058 7380 74E4 758A 766E 766C -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = C5A1 - srcEnd = C5FE - mappingOffset = 1572 - Mapping = - 79B3 7C60 7C5F 807E 807D 81DF 8972 896F - 89FC 8B80 8D16 8D17 8E91 8E93 8F61 9148 - 9444 9451 9452 973D 973E 97C3 97C1 986B - 9955 9A55 9A4D 9AD2 9B1A 9C49 9C31 9C3E - 9C3B 9DD3 9DD7 9F34 9F6C 9F6A 9F94 56CC - 5DD6 6200 6523 652B 652A 66EC 6B10 74DA - 7ACA 7C64 7C63 7C65 7E93 7E96 7E94 81E2 - 8638 863F 8831 8B8A 9090 908F 9463 9460 - 9464 9768 986F 995C 9A5A 9A5B 9A57 9AD3 - 9AD4 9AD1 9C54 9C57 9C56 9DE5 9E9F 9EF4 - 56D1 58E9 652C 705E 7671 7672 77D7 7F50 - 7F88 8836 8839 8862 8B93 8B92 -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = C640 - srcEnd = C67E - mappingOffset = 15D0 - Mapping = - 8B96 8277 8D1B 91C0 946A 9742 9748 9744 - 97C6 9870 9A5F 9B22 9B58 9C5F 9DF9 9DFA - 9E7C 9E7D 9F07 9F77 9F72 5EF3 6B16 7063 - 7C6C 7C6E 883B 89C0 8EA1 91C1 9472 9470 - 9871 995E 9AD6 9B23 9ECC 7064 77DA 8B9A - 9477 97C9 9A62 9A65 7E9C 8B9C 8EAA 91C5 - 947D 947E 947C 9C77 9C78 9EF7 8C54 947F - 9E1A 7228 9A6A 9B31 9E1B 9E1E 7C72 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = C940 - srcEnd = C97E - mappingOffset = 160F - Mapping = - 4E42 4E5C 51F5 531A 5382 4E07 4E0C 4E47 - 4E8D 56D7 FA0C 5C6E 5F73 4E0F 5187 4E0E - 4E2E 4E93 4EC2 4EC9 4EC8 5198 52FC 536C - 53B9 5720 5903 592C 5C10 5DFF 65E1 6BB3 - 6BCC 6C14 723F 4E31 4E3C 4EE8 4EDC 4EE9 - 4EE1 4EDD 4EDA 520C 531C 534C 5722 5723 - 5917 592F 5B81 5B84 5C12 5C3B 5C74 5C73 - 5E04 5E80 5E82 5FC9 6209 6250 6C15 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = C9A1 - srcEnd = C9FE - mappingOffset = 164E - Mapping = - 6C36 6C43 6C3F 6C3B 72AE 72B0 738A 79B8 - 808A 961E 4F0E 4F18 4F2C 4EF5 4F14 4EF1 - 4F00 4EF7 4F08 4F1D 4F02 4F05 4F22 4F13 - 4F04 4EF4 4F12 51B1 5213 5209 5210 52A6 - 5322 531F 534D 538A 5407 56E1 56DF 572E - 572A 5734 593C 5980 597C 5985 597B 597E - 5977 597F 5B56 5C15 5C25 5C7C 5C7A 5C7B - 5C7E 5DDF 5E75 5E84 5F02 5F1A 5F74 5FD5 - 5FD4 5FCF 625C 625E 6264 6261 6266 6262 - 6259 6260 625A 6265 65EF 65EE 673E 6739 - 6738 673B 673A 673F 673C 6733 6C18 6C46 - 6C52 6C5C 6C4F 6C4A 6C54 6C4B -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = CA40 - srcEnd = CA7E - mappingOffset = 16AC - Mapping = - 6C4C 7071 725E 72B4 72B5 738E 752A 767F - 7A75 7F51 8278 827C 8280 827D 827F 864D - 897E 9099 9097 9098 909B 9094 9622 9624 - 9620 9623 4F56 4F3B 4F62 4F49 4F53 4F64 - 4F3E 4F67 4F52 4F5F 4F41 4F58 4F2D 4F33 - 4F3F 4F61 518F 51B9 521C 521E 5221 52AD - 52AE 5309 5363 5372 538E 538F 5430 5437 - 542A 5454 5445 5419 541C 5425 5418 -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = CAA1 - srcEnd = CAFE - mappingOffset = 16EB - Mapping = - 543D 544F 5441 5428 5424 5447 56EE 56E7 - 56E5 5741 5745 574C 5749 574B 5752 5906 - 5940 59A6 5998 59A0 5997 598E 59A2 5990 - 598F 59A7 59A1 5B8E 5B92 5C28 5C2A 5C8D - 5C8F 5C88 5C8B 5C89 5C92 5C8A 5C86 5C93 - 5C95 5DE0 5E0A 5E0E 5E8B 5E89 5E8C 5E88 - 5E8D 5F05 5F1D 5F78 5F76 5FD2 5FD1 5FD0 - 5FED 5FE8 5FEE 5FF3 5FE1 5FE4 5FE3 5FFA - 5FEF 5FF7 5FFB 6000 5FF4 623A 6283 628C - 628E 628F 6294 6287 6271 627B 627A 6270 - 6281 6288 6277 627D 6272 6274 6537 65F0 - 65F4 65F3 65F2 65F5 6745 6747 -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = CB40 - srcEnd = CB7E - mappingOffset = 1749 - Mapping = - 6759 6755 674C 6748 675D 674D 675A 674B - 6BD0 6C19 6C1A 6C78 6C67 6C6B 6C84 6C8B - 6C8F 6C71 6C6F 6C69 6C9A 6C6D 6C87 6C95 - 6C9C 6C66 6C73 6C65 6C7B 6C8E 7074 707A - 7263 72BF 72BD 72C3 72C6 72C1 72BA 72C5 - 7395 7397 7393 7394 7392 753A 7539 7594 - 7595 7681 793D 8034 8095 8099 8090 8092 - 809C 8290 828F 8285 828E 8291 8293 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = CBA1 - srcEnd = CBFE - mappingOffset = 1788 - Mapping = - 828A 8283 8284 8C78 8FC9 8FBF 909F 90A1 - 90A5 909E 90A7 90A0 9630 9628 962F 962D - 4E33 4F98 4F7C 4F85 4F7D 4F80 4F87 4F76 - 4F74 4F89 4F84 4F77 4F4C 4F97 4F6A 4F9A - 4F79 4F81 4F78 4F90 4F9C 4F94 4F9E 4F92 - 4F82 4F95 4F6B 4F6E 519E 51BC 51BE 5235 - 5232 5233 5246 5231 52BC 530A 530B 533C - 5392 5394 5487 547F 5481 5491 5482 5488 - 546B 547A 547E 5465 546C 5474 5466 548D - 546F 5461 5460 5498 5463 5467 5464 56F7 - 56F9 576F 5772 576D 576B 5771 5770 5776 - 5780 5775 577B 5773 5774 5762 -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = CC40 - srcEnd = CC7E - mappingOffset = 17E6 - Mapping = - 5768 577D 590C 5945 59B5 59BA 59CF 59CE - 59B2 59CC 59C1 59B6 59BC 59C3 59D6 59B1 - 59BD 59C0 59C8 59B4 59C7 5B62 5B65 5B93 - 5B95 5C44 5C47 5CAE 5CA4 5CA0 5CB5 5CAF - 5CA8 5CAC 5C9F 5CA3 5CAD 5CA2 5CAA 5CA7 - 5C9D 5CA5 5CB6 5CB0 5CA6 5E17 5E14 5E19 - 5F28 5F22 5F23 5F24 5F54 5F82 5F7E 5F7D - 5FDE 5FE5 602D 6026 6019 6032 600B -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = CCA1 - srcEnd = CCFE - mappingOffset = 1825 - Mapping = - 6034 600A 6017 6033 601A 601E 602C 6022 - 600D 6010 602E 6013 6011 600C 6009 601C - 6214 623D 62AD 62B4 62D1 62BE 62AA 62B6 - 62CA 62AE 62B3 62AF 62BB 62A9 62B0 62B8 - 653D 65A8 65BB 6609 65FC 6604 6612 6608 - 65FB 6603 660B 660D 6605 65FD 6611 6610 - 66F6 670A 6785 676C 678E 6792 6776 677B - 6798 6786 6784 6774 678D 678C 677A 679F - 6791 6799 6783 677D 6781 6778 6779 6794 - 6B25 6B80 6B7E 6BDE 6C1D 6C93 6CEC 6CEB - 6CEE 6CD9 6CB6 6CD4 6CAD 6CE7 6CB7 6CD0 - 6CC2 6CBA 6CC3 6CC6 6CED 6CF2 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = CD40 - srcEnd = CD7E - mappingOffset = 1883 - Mapping = - 6CD2 6CDD 6CB4 6C8A 6C9D 6C80 6CDE 6CC0 - 6D30 6CCD 6CC7 6CB0 6CF9 6CCF 6CE9 6CD1 - 7094 7098 7085 7093 7086 7084 7091 7096 - 7082 709A 7083 726A 72D6 72CB 72D8 72C9 - 72DC 72D2 72D4 72DA 72CC 72D1 73A4 73A1 - 73AD 73A6 73A2 73A0 73AC 739D 74DD 74E8 - 753F 7540 753E 758C 7598 76AF 76F3 76F1 - 76F0 76F5 77F8 77FC 77F9 77FB 77FA -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = CDA1 - srcEnd = CDFE - mappingOffset = 18C2 - Mapping = - 77F7 7942 793F 79C5 7A78 7A7B 7AFB 7C75 - 7CFD 8035 808F 80AE 80A3 80B8 80B5 80AD - 8220 82A0 82C0 82AB 829A 8298 829B 82B5 - 82A7 82AE 82BC 829E 82BA 82B4 82A8 82A1 - 82A9 82C2 82A4 82C3 82B6 82A2 8670 866F - 866D 866E 8C56 8FD2 8FCB 8FD3 8FCD 8FD6 - 8FD5 8FD7 90B2 90B4 90AF 90B3 90B0 9639 - 963D 963C 963A 9643 4FCD 4FC5 4FD3 4FB2 - 4FC9 4FCB 4FC1 4FD4 4FDC 4FD9 4FBB 4FB3 - 4FDB 4FC7 4FD6 4FBA 4FC0 4FB9 4FEC 5244 - 5249 52C0 52C2 533D 537C 5397 5396 5399 - 5398 54BA 54A1 54AD 54A5 54CF -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = CE40 - srcEnd = CE7E - mappingOffset = 1920 - Mapping = - 54C3 830D 54B7 54AE 54D6 54B6 54C5 54C6 - 54A0 5470 54BC 54A2 54BE 5472 54DE 54B0 - 57B5 579E 579F 57A4 578C 5797 579D 579B - 5794 5798 578F 5799 57A5 579A 5795 58F4 - 590D 5953 59E1 59DE 59EE 5A00 59F1 59DD - 59FA 59FD 59FC 59F6 59E4 59F2 59F7 59DB - 59E9 59F3 59F5 59E0 59FE 59F4 59ED 5BA8 - 5C4C 5CD0 5CD8 5CCC 5CD7 5CCB 5CDB -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = CEA1 - srcEnd = CEFE - mappingOffset = 195F - Mapping = - 5CDE 5CDA 5CC9 5CC7 5CCA 5CD6 5CD3 5CD4 - 5CCF 5CC8 5CC6 5CCE 5CDF 5CF8 5DF9 5E21 - 5E22 5E23 5E20 5E24 5EB0 5EA4 5EA2 5E9B - 5EA3 5EA5 5F07 5F2E 5F56 5F86 6037 6039 - 6054 6072 605E 6045 6053 6047 6049 605B - 604C 6040 6042 605F 6024 6044 6058 6066 - 606E 6242 6243 62CF 630D 630B 62F5 630E - 6303 62EB 62F9 630F 630C 62F8 62F6 6300 - 6313 6314 62FA 6315 62FB 62F0 6541 6543 - 65AA 65BF 6636 6621 6632 6635 661C 6626 - 6622 6633 662B 663A 661D 6634 6639 662E - 670F 6710 67C1 67F2 67C8 67BA -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = CF40 - srcEnd = CF7E - mappingOffset = 19BD - Mapping = - 67DC 67BB 67F8 67D8 67C0 67B7 67C5 67EB - 67E4 67DF 67B5 67CD 67B3 67F7 67F6 67EE - 67E3 67C2 67B9 67CE 67E7 67F0 67B2 67FC - 67C6 67ED 67CC 67AE 67E6 67DB 67FA 67C9 - 67CA 67C3 67EA 67CB 6B28 6B82 6B84 6BB6 - 6BD6 6BD8 6BE0 6C20 6C21 6D28 6D34 6D2D - 6D1F 6D3C 6D3F 6D12 6D0A 6CDA 6D33 6D04 - 6D19 6D3A 6D1A 6D11 6D00 6D1D 6D42 -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = CFA1 - srcEnd = CFFE - mappingOffset = 19FC - Mapping = - 6D01 6D18 6D37 6D03 6D0F 6D40 6D07 6D20 - 6D2C 6D08 6D22 6D09 6D10 70B7 709F 70BE - 70B1 70B0 70A1 70B4 70B5 70A9 7241 7249 - 724A 726C 7270 7273 726E 72CA 72E4 72E8 - 72EB 72DF 72EA 72E6 72E3 7385 73CC 73C2 - 73C8 73C5 73B9 73B6 73B5 73B4 73EB 73BF - 73C7 73BE 73C3 73C6 73B8 73CB 74EC 74EE - 752E 7547 7548 75A7 75AA 7679 76C4 7708 - 7703 7704 7705 770A 76F7 76FB 76FA 77E7 - 77E8 7806 7811 7812 7805 7810 780F 780E - 7809 7803 7813 794A 794C 794B 7945 7944 - 79D5 79CD 79CF 79D6 79CE 7A80 -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = D040 - srcEnd = D07E - mappingOffset = 1A5A - Mapping = - 7A7E 7AD1 7B00 7B01 7C7A 7C78 7C79 7C7F - 7C80 7C81 7D03 7D08 7D01 7F58 7F91 7F8D - 7FBE 8007 800E 800F 8014 8037 80D8 80C7 - 80E0 80D1 80C8 80C2 80D0 80C5 80E3 80D9 - 80DC 80CA 80D5 80C9 80CF 80D7 80E6 80CD - 81FF 8221 8294 82D9 82FE 82F9 8307 82E8 - 8300 82D5 833A 82EB 82D6 82F4 82EC 82E1 - 82F2 82F5 830C 82FB 82F6 82F0 82EA -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = D0A1 - srcEnd = D0FE - mappingOffset = 1A99 - Mapping = - 82E4 82E0 82FA 82F3 82ED 8677 8674 867C - 8673 8841 884E 8867 886A 8869 89D3 8A04 - 8A07 8D72 8FE3 8FE1 8FEE 8FE0 90F1 90BD - 90BF 90D5 90C5 90BE 90C7 90CB 90C8 91D4 - 91D3 9654 964F 9651 9653 964A 964E 501E - 5005 5007 5013 5022 5030 501B 4FF5 4FF4 - 5033 5037 502C 4FF6 4FF7 5017 501C 5020 - 5027 5035 502F 5031 500E 515A 5194 5193 - 51CA 51C4 51C5 51C8 51CE 5261 525A 5252 - 525E 525F 5255 5262 52CD 530E 539E 5526 - 54E2 5517 5512 54E7 54F3 54E4 551A 54FF - 5504 5508 54EB 5511 5505 54F1 -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = D140 - srcEnd = D17E - mappingOffset = 1AF7 - Mapping = - 550A 54FB 54F7 54F8 54E0 550E 5503 550B - 5701 5702 57CC 5832 57D5 57D2 57BA 57C6 - 57BD 57BC 57B8 57B6 57BF 57C7 57D0 57B9 - 57C1 590E 594A 5A19 5A16 5A2D 5A2E 5A15 - 5A0F 5A17 5A0A 5A1E 5A33 5B6C 5BA7 5BAD - 5BAC 5C03 5C56 5C54 5CEC 5CFF 5CEE 5CF1 - 5CF7 5D00 5CF9 5E29 5E28 5EA8 5EAE 5EAA - 5EAC 5F33 5F30 5F67 605D 605A 6067 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = D1A1 - srcEnd = D1FE - mappingOffset = 1B36 - Mapping = - 6041 60A2 6088 6080 6092 6081 609D 6083 - 6095 609B 6097 6087 609C 608E 6219 6246 - 62F2 6310 6356 632C 6344 6345 6336 6343 - 63E4 6339 634B 634A 633C 6329 6341 6334 - 6358 6354 6359 632D 6347 6333 635A 6351 - 6338 6357 6340 6348 654A 6546 65C6 65C3 - 65C4 65C2 664A 665F 6647 6651 6712 6713 - 681F 681A 6849 6832 6833 683B 684B 684F - 6816 6831 681C 6835 682B 682D 682F 684E - 6844 6834 681D 6812 6814 6826 6828 682E - 684D 683A 6825 6820 6B2C 6B2F 6B2D 6B31 - 6B34 6B6D 8082 6B88 6BE6 6BE4 -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = D240 - srcEnd = D27E - mappingOffset = 1B94 - Mapping = - 6BE8 6BE3 6BE2 6BE7 6C25 6D7A 6D63 6D64 - 6D76 6D0D 6D61 6D92 6D58 6D62 6D6D 6D6F - 6D91 6D8D 6DEF 6D7F 6D86 6D5E 6D67 6D60 - 6D97 6D70 6D7C 6D5F 6D82 6D98 6D2F 6D68 - 6D8B 6D7E 6D80 6D84 6D16 6D83 6D7B 6D7D - 6D75 6D90 70DC 70D3 70D1 70DD 70CB 7F39 - 70E2 70D7 70D2 70DE 70E0 70D4 70CD 70C5 - 70C6 70C7 70DA 70CE 70E1 7242 7278 -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = D2A1 - srcEnd = D2FE - mappingOffset = 1BD3 - Mapping = - 7277 7276 7300 72FA 72F4 72FE 72F6 72F3 - 72FB 7301 73D3 73D9 73E5 73D6 73BC 73E7 - 73E3 73E9 73DC 73D2 73DB 73D4 73DD 73DA - 73D7 73D8 73E8 74DE 74DF 74F4 74F5 7521 - 755B 755F 75B0 75C1 75BB 75C4 75C0 75BF - 75B6 75BA 768A 76C9 771D 771B 7710 7713 - 7712 7723 7711 7715 7719 771A 7722 7727 - 7823 782C 7822 7835 782F 7828 782E 782B - 7821 7829 7833 782A 7831 7954 795B 794F - 795C 7953 7952 7951 79EB 79EC 79E0 79EE - 79ED 79EA 79DC 79DE 79DD 7A86 7A89 7A85 - 7A8B 7A8C 7A8A 7A87 7AD8 7B10 -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = D340 - srcEnd = D37E - mappingOffset = 1C31 - Mapping = - 7B04 7B13 7B05 7B0F 7B08 7B0A 7B0E 7B09 - 7B12 7C84 7C91 7C8A 7C8C 7C88 7C8D 7C85 - 7D1E 7D1D 7D11 7D0E 7D18 7D16 7D13 7D1F - 7D12 7D0F 7D0C 7F5C 7F61 7F5E 7F60 7F5D - 7F5B 7F96 7F92 7FC3 7FC2 7FC0 8016 803E - 8039 80FA 80F2 80F9 80F5 8101 80FB 8100 - 8201 822F 8225 8333 832D 8344 8319 8351 - 8325 8356 833F 8341 8326 831C 8322 -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = D3A1 - srcEnd = D3FE - mappingOffset = 1C70 - Mapping = - 8342 834E 831B 832A 8308 833C 834D 8316 - 8324 8320 8337 832F 8329 8347 8345 834C - 8353 831E 832C 834B 8327 8348 8653 8652 - 86A2 86A8 8696 868D 8691 869E 8687 8697 - 8686 868B 869A 8685 86A5 8699 86A1 86A7 - 8695 8698 868E 869D 8690 8694 8843 8844 - 886D 8875 8876 8872 8880 8871 887F 886F - 8883 887E 8874 887C 8A12 8C47 8C57 8C7B - 8CA4 8CA3 8D76 8D78 8DB5 8DB7 8DB6 8ED1 - 8ED3 8FFE 8FF5 9002 8FFF 8FFB 9004 8FFC - 8FF6 90D6 90E0 90D9 90DA 90E3 90DF 90E5 - 90D8 90DB 90D7 90DC 90E4 9150 -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = D440 - srcEnd = D47E - mappingOffset = 1CCE - Mapping = - 914E 914F 91D5 91E2 91DA 965C 965F 96BC - 98E3 9ADF 9B2F 4E7F 5070 506A 5061 505E - 5060 5053 504B 505D 5072 5048 504D 5041 - 505B 504A 5062 5015 5045 505F 5069 506B - 5063 5064 5046 5040 506E 5073 5057 5051 - 51D0 526B 526D 526C 526E 52D6 52D3 532D - 539C 5575 5576 553C 554D 5550 5534 552A - 5551 5562 5536 5535 5530 5552 5545 -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = D4A1 - srcEnd = D4FE - mappingOffset = 1D0D - Mapping = - 550C 5532 5565 554E 5539 5548 552D 553B - 5540 554B 570A 5707 57FB 5814 57E2 57F6 - 57DC 57F4 5800 57ED 57FD 5808 57F8 580B - 57F3 57CF 5807 57EE 57E3 57F2 57E5 57EC - 57E1 580E 57FC 5810 57E7 5801 580C 57F1 - 57E9 57F0 580D 5804 595C 5A60 5A58 5A55 - 5A67 5A5E 5A38 5A35 5A6D 5A50 5A5F 5A65 - 5A6C 5A53 5A64 5A57 5A43 5A5D 5A52 5A44 - 5A5B 5A48 5A8E 5A3E 5A4D 5A39 5A4C 5A70 - 5A69 5A47 5A51 5A56 5A42 5A5C 5B72 5B6E - 5BC1 5BC0 5C59 5D1E 5D0B 5D1D 5D1A 5D20 - 5D0C 5D28 5D0D 5D26 5D25 5D0F -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = D540 - srcEnd = D57E - mappingOffset = 1D6B - Mapping = - 5D30 5D12 5D23 5D1F 5D2E 5E3E 5E34 5EB1 - 5EB4 5EB9 5EB2 5EB3 5F36 5F38 5F9B 5F96 - 5F9F 608A 6090 6086 60BE 60B0 60BA 60D3 - 60D4 60CF 60E4 60D9 60DD 60C8 60B1 60DB - 60B7 60CA 60BF 60C3 60CD 60C0 6332 6365 - 638A 6382 637D 63BD 639E 63AD 639D 6397 - 63AB 638E 636F 6387 6390 636E 63AF 6375 - 639C 636D 63AE 637C 63A4 633B 639F -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = D5A1 - srcEnd = D5FE - mappingOffset = 1DAA - Mapping = - 6378 6385 6381 6391 638D 6370 6553 65CD - 6665 6661 665B 6659 665C 6662 6718 6879 - 6887 6890 689C 686D 686E 68AE 68AB 6956 - 686F 68A3 68AC 68A9 6875 6874 68B2 688F - 6877 6892 687C 686B 6872 68AA 6880 6871 - 687E 689B 6896 688B 68A0 6889 68A4 6878 - 687B 6891 688C 688A 687D 6B36 6B33 6B37 - 6B38 6B91 6B8F 6B8D 6B8E 6B8C 6C2A 6DC0 - 6DAB 6DB4 6DB3 6E74 6DAC 6DE9 6DE2 6DB7 - 6DF6 6DD4 6E00 6DC8 6DE0 6DDF 6DD6 6DBE - 6DE5 6DDC 6DDD 6DDB 6DF4 6DCA 6DBD 6DED - 6DF0 6DBA 6DD5 6DC2 6DCF 6DC9 -End of Item 0072 - -Begin of Item 0073 - Format 1 - srcBegin = D640 - srcEnd = D67E - mappingOffset = 1E08 - Mapping = - 6DD0 6DF2 6DD3 6DFD 6DD7 6DCD 6DE3 6DBB - 70FA 710D 70F7 7117 70F4 710C 70F0 7104 - 70F3 7110 70FC 70FF 7106 7113 7100 70F8 - 70F6 710B 7102 710E 727E 727B 727C 727F - 731D 7317 7307 7311 7318 730A 7308 72FF - 730F 731E 7388 73F6 73F8 73F5 7404 7401 - 73FD 7407 7400 73FA 73FC 73FF 740C 740B - 73F4 7408 7564 7563 75CE 75D2 75CF -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = D6A1 - srcEnd = D6FE - mappingOffset = 1E47 - Mapping = - 75CB 75CC 75D1 75D0 768F 7689 76D3 7739 - 772F 772D 7731 7732 7734 7733 773D 7725 - 773B 7735 7848 7852 7849 784D 784A 784C - 7826 7845 7850 7964 7967 7969 796A 7963 - 796B 7961 79BB 79FA 79F8 79F6 79F7 7A8F - 7A94 7A90 7B35 7B47 7B34 7B25 7B30 7B22 - 7B24 7B33 7B18 7B2A 7B1D 7B31 7B2B 7B2D - 7B2F 7B32 7B38 7B1A 7B23 7C94 7C98 7C96 - 7CA3 7D35 7D3D 7D38 7D36 7D3A 7D45 7D2C - 7D29 7D41 7D47 7D3E 7D3F 7D4A 7D3B 7D28 - 7F63 7F95 7F9C 7F9D 7F9B 7FCA 7FCB 7FCD - 7FD0 7FD1 7FC7 7FCF 7FC9 801F -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = D740 - srcEnd = D77E - mappingOffset = 1EA5 - Mapping = - 801E 801B 8047 8043 8048 8118 8125 8119 - 811B 812D 811F 812C 811E 8121 8115 8127 - 811D 8122 8211 8238 8233 823A 8234 8232 - 8274 8390 83A3 83A8 838D 837A 8373 83A4 - 8374 838F 8381 8395 8399 8375 8394 83A9 - 837D 8383 838C 839D 839B 83AA 838B 837E - 83A5 83AF 8388 8397 83B0 837F 83A6 8387 - 83AE 8376 839A 8659 8656 86BF 86B7 -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = D7A1 - srcEnd = D7FE - mappingOffset = 1EE4 - Mapping = - 86C2 86C1 86C5 86BA 86B0 86C8 86B9 86B3 - 86B8 86CC 86B4 86BB 86BC 86C3 86BD 86BE - 8852 8889 8895 88A8 88A2 88AA 889A 8891 - 88A1 889F 8898 88A7 8899 889B 8897 88A4 - 88AC 888C 8893 888E 8982 89D6 89D9 89D5 - 8A30 8A27 8A2C 8A1E 8C39 8C3B 8C5C 8C5D - 8C7D 8CA5 8D7D 8D7B 8D79 8DBC 8DC2 8DB9 - 8DBF 8DC1 8ED8 8EDE 8EDD 8EDC 8ED7 8EE0 - 8EE1 9024 900B 9011 901C 900C 9021 90EF - 90EA 90F0 90F4 90F2 90F3 90D4 90EB 90EC - 90E9 9156 9158 915A 9153 9155 91EC 91F4 - 91F1 91F3 91F8 91E4 91F9 91EA -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = D840 - srcEnd = D87E - mappingOffset = 1F42 - Mapping = - 91EB 91F7 91E8 91EE 957A 9586 9588 967C - 966D 966B 9671 966F 96BF 976A 9804 98E5 - 9997 509B 5095 5094 509E 508B 50A3 5083 - 508C 508E 509D 5068 509C 5092 5082 5087 - 515F 51D4 5312 5311 53A4 53A7 5591 55A8 - 55A5 55AD 5577 5645 55A2 5593 5588 558F - 55B5 5581 55A3 5592 55A4 557D 558C 55A6 - 557F 5595 55A1 558E 570C 5829 5837 -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = D8A1 - srcEnd = D8FE - mappingOffset = 1F81 - Mapping = - 5819 581E 5827 5823 5828 57F5 5848 5825 - 581C 581B 5833 583F 5836 582E 5839 5838 - 582D 582C 583B 5961 5AAF 5A94 5A9F 5A7A - 5AA2 5A9E 5A78 5AA6 5A7C 5AA5 5AAC 5A95 - 5AAE 5A37 5A84 5A8A 5A97 5A83 5A8B 5AA9 - 5A7B 5A7D 5A8C 5A9C 5A8F 5A93 5A9D 5BEA - 5BCD 5BCB 5BD4 5BD1 5BCA 5BCE 5C0C 5C30 - 5D37 5D43 5D6B 5D41 5D4B 5D3F 5D35 5D51 - 5D4E 5D55 5D33 5D3A 5D52 5D3D 5D31 5D59 - 5D42 5D39 5D49 5D38 5D3C 5D32 5D36 5D40 - 5D45 5E44 5E41 5F58 5FA6 5FA5 5FAB 60C9 - 60B9 60CC 60E2 60CE 60C4 6114 -End of Item 0078 - -Begin of Item 0079 - Format 1 - srcBegin = D940 - srcEnd = D97E - mappingOffset = 1FDF - Mapping = - 60F2 610A 6116 6105 60F5 6113 60F8 60FC - 60FE 60C1 6103 6118 611D 6110 60FF 6104 - 610B 624A 6394 63B1 63B0 63CE 63E5 63E8 - 63EF 63C3 649D 63F3 63CA 63E0 63F6 63D5 - 63F2 63F5 6461 63DF 63BE 63DD 63DC 63C4 - 63D8 63D3 63C2 63C7 63CC 63CB 63C8 63F0 - 63D7 63D9 6532 6567 656A 6564 655C 6568 - 6565 658C 659D 659E 65AE 65D0 65D2 -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = D9A1 - srcEnd = D9FE - mappingOffset = 201E - Mapping = - 667C 666C 667B 6680 6671 6679 666A 6672 - 6701 690C 68D3 6904 68DC 692A 68EC 68EA - 68F1 690F 68D6 68F7 68EB 68E4 68F6 6913 - 6910 68F3 68E1 6907 68CC 6908 6970 68B4 - 6911 68EF 68C6 6914 68F8 68D0 68FD 68FC - 68E8 690B 690A 6917 68CE 68C8 68DD 68DE - 68E6 68F4 68D1 6906 68D4 68E9 6915 6925 - 68C7 6B39 6B3B 6B3F 6B3C 6B94 6B97 6B99 - 6B95 6BBD 6BF0 6BF2 6BF3 6C30 6DFC 6E46 - 6E47 6E1F 6E49 6E88 6E3C 6E3D 6E45 6E62 - 6E2B 6E3F 6E41 6E5D 6E73 6E1C 6E33 6E4B - 6E40 6E51 6E3B 6E03 6E2E 6E5E -End of Item 007A - -Begin of Item 007B - Format 1 - srcBegin = DA40 - srcEnd = DA7E - mappingOffset = 207C - Mapping = - 6E68 6E5C 6E61 6E31 6E28 6E60 6E71 6E6B - 6E39 6E22 6E30 6E53 6E65 6E27 6E78 6E64 - 6E77 6E55 6E79 6E52 6E66 6E35 6E36 6E5A - 7120 711E 712F 70FB 712E 7131 7123 7125 - 7122 7132 711F 7128 713A 711B 724B 725A - 7288 7289 7286 7285 728B 7312 730B 7330 - 7322 7331 7333 7327 7332 732D 7326 7323 - 7335 730C 742E 742C 7430 742B 7416 -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = DAA1 - srcEnd = DAFE - mappingOffset = 20BB - Mapping = - 741A 7421 742D 7431 7424 7423 741D 7429 - 7420 7432 74FB 752F 756F 756C 75E7 75DA - 75E1 75E6 75DD 75DF 75E4 75D7 7695 7692 - 76DA 7746 7747 7744 774D 7745 774A 774E - 774B 774C 77DE 77EC 7860 7864 7865 785C - 786D 7871 786A 786E 7870 7869 7868 785E - 7862 7974 7973 7972 7970 7A02 7A0A 7A03 - 7A0C 7A04 7A99 7AE6 7AE4 7B4A 7B3B 7B44 - 7B48 7B4C 7B4E 7B40 7B58 7B45 7CA2 7C9E - 7CA8 7CA1 7D58 7D6F 7D63 7D53 7D56 7D67 - 7D6A 7D4F 7D6D 7D5C 7D6B 7D52 7D54 7D69 - 7D51 7D5F 7D4E 7F3E 7F3F 7F65 -End of Item 007C - -Begin of Item 007D - Format 1 - srcBegin = DB40 - srcEnd = DB7E - mappingOffset = 2119 - Mapping = - 7F66 7FA2 7FA0 7FA1 7FD7 8051 804F 8050 - 80FE 80D4 8143 814A 8152 814F 8147 813D - 814D 813A 81E6 81EE 81F7 81F8 81F9 8204 - 823C 823D 823F 8275 833B 83CF 83F9 8423 - 83C0 83E8 8412 83E7 83E4 83FC 83F6 8410 - 83C6 83C8 83EB 83E3 83BF 8401 83DD 83E5 - 83D8 83FF 83E1 83CB 83CE 83D6 83F5 83C9 - 8409 840F 83DE 8411 8406 83C2 83F3 -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = DBA1 - srcEnd = DBFE - mappingOffset = 2158 - Mapping = - 83D5 83FA 83C7 83D1 83EA 8413 83C3 83EC - 83EE 83C4 83FB 83D7 83E2 841B 83DB 83FE - 86D8 86E2 86E6 86D3 86E3 86DA 86EA 86DD - 86EB 86DC 86EC 86E9 86D7 86E8 86D1 8848 - 8856 8855 88BA 88D7 88B9 88B8 88C0 88BE - 88B6 88BC 88B7 88BD 88B2 8901 88C9 8995 - 8998 8997 89DD 89DA 89DB 8A4E 8A4D 8A39 - 8A59 8A40 8A57 8A58 8A44 8A45 8A52 8A48 - 8A51 8A4A 8A4C 8A4F 8C5F 8C81 8C80 8CBA - 8CBE 8CB0 8CB9 8CB5 8D84 8D80 8D89 8DD8 - 8DD3 8DCD 8DC7 8DD6 8DDC 8DCF 8DD5 8DD9 - 8DC8 8DD7 8DC5 8EEF 8EF7 8EFA -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = DC40 - srcEnd = DC7E - mappingOffset = 21B6 - Mapping = - 8EF9 8EE6 8EEE 8EE5 8EF5 8EE7 8EE8 8EF6 - 8EEB 8EF1 8EEC 8EF4 8EE9 902D 9034 902F - 9106 912C 9104 90FF 90FC 9108 90F9 90FB - 9101 9100 9107 9105 9103 9161 9164 915F - 9162 9160 9201 920A 9225 9203 921A 9226 - 920F 920C 9200 9212 91FF 91FD 9206 9204 - 9227 9202 921C 9224 9219 9217 9205 9216 - 957B 958D 958C 9590 9687 967E 9688 -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = DCA1 - srcEnd = DCFE - mappingOffset = 21F5 - Mapping = - 9689 9683 9680 96C2 96C8 96C3 96F1 96F0 - 976C 9770 976E 9807 98A9 98EB 9CE6 9EF9 - 4E83 4E84 4EB6 50BD 50BF 50C6 50AE 50C4 - 50CA 50B4 50C8 50C2 50B0 50C1 50BA 50B1 - 50CB 50C9 50B6 50B8 51D7 527A 5278 527B - 527C 55C3 55DB 55CC 55D0 55CB 55CA 55DD - 55C0 55D4 55C4 55E9 55BF 55D2 558D 55CF - 55D5 55E2 55D6 55C8 55F2 55CD 55D9 55C2 - 5714 5853 5868 5864 584F 584D 5849 586F - 5855 584E 585D 5859 5865 585B 583D 5863 - 5871 58FC 5AC7 5AC4 5ACB 5ABA 5AB8 5AB1 - 5AB5 5AB0 5ABF 5AC8 5ABB 5AC6 -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = DD40 - srcEnd = DD7E - mappingOffset = 2253 - Mapping = - 5AB7 5AC0 5ACA 5AB4 5AB6 5ACD 5AB9 5A90 - 5BD6 5BD8 5BD9 5C1F 5C33 5D71 5D63 5D4A - 5D65 5D72 5D6C 5D5E 5D68 5D67 5D62 5DF0 - 5E4F 5E4E 5E4A 5E4D 5E4B 5EC5 5ECC 5EC6 - 5ECB 5EC7 5F40 5FAF 5FAD 60F7 6149 614A - 612B 6145 6136 6132 612E 6146 612F 614F - 6129 6140 6220 9168 6223 6225 6224 63C5 - 63F1 63EB 6410 6412 6409 6420 6424 -End of Item 0081 - -Begin of Item 0082 - Format 1 - srcBegin = DDA1 - srcEnd = DDFE - mappingOffset = 2292 - Mapping = - 6433 6443 641F 6415 6418 6439 6437 6422 - 6423 640C 6426 6430 6428 6441 6435 642F - 640A 641A 6440 6425 6427 640B 63E7 641B - 642E 6421 640E 656F 6592 65D3 6686 668C - 6695 6690 668B 668A 6699 6694 6678 6720 - 6966 695F 6938 694E 6962 6971 693F 6945 - 696A 6939 6942 6957 6959 697A 6948 6949 - 6935 696C 6933 693D 6965 68F0 6978 6934 - 6969 6940 696F 6944 6976 6958 6941 6974 - 694C 693B 694B 6937 695C 694F 6951 6932 - 6952 692F 697B 693C 6B46 6B45 6B43 6B42 - 6B48 6B41 6B9B FA0D 6BFB 6BFC -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = DE40 - srcEnd = DE7E - mappingOffset = 22F0 - Mapping = - 6BF9 6BF7 6BF8 6E9B 6ED6 6EC8 6E8F 6EC0 - 6E9F 6E93 6E94 6EA0 6EB1 6EB9 6EC6 6ED2 - 6EBD 6EC1 6E9E 6EC9 6EB7 6EB0 6ECD 6EA6 - 6ECF 6EB2 6EBE 6EC3 6EDC 6ED8 6E99 6E92 - 6E8E 6E8D 6EA4 6EA1 6EBF 6EB3 6ED0 6ECA - 6E97 6EAE 6EA3 7147 7154 7152 7163 7160 - 7141 715D 7162 7172 7178 716A 7161 7142 - 7158 7143 714B 7170 715F 7150 7153 -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = DEA1 - srcEnd = DEFE - mappingOffset = 232F - Mapping = - 7144 714D 715A 724F 728D 728C 7291 7290 - 728E 733C 7342 733B 733A 7340 734A 7349 - 7444 744A 744B 7452 7451 7457 7440 744F - 7450 744E 7442 7446 744D 7454 74E1 74FF - 74FE 74FD 751D 7579 7577 6983 75EF 760F - 7603 75F7 75FE 75FC 75F9 75F8 7610 75FB - 75F6 75ED 75F5 75FD 7699 76B5 76DD 7755 - 775F 7760 7752 7756 775A 7769 7767 7754 - 7759 776D 77E0 7887 789A 7894 788F 7884 - 7895 7885 7886 78A1 7883 7879 7899 7880 - 7896 787B 797C 7982 797D 7979 7A11 7A18 - 7A19 7A12 7A17 7A15 7A22 7A13 -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = DF40 - srcEnd = DF7E - mappingOffset = 238D - Mapping = - 7A1B 7A10 7AA3 7AA2 7A9E 7AEB 7B66 7B64 - 7B6D 7B74 7B69 7B72 7B65 7B73 7B71 7B70 - 7B61 7B78 7B76 7B63 7CB2 7CB4 7CAF 7D88 - 7D86 7D80 7D8D 7D7F 7D85 7D7A 7D8E 7D7B - 7D83 7D7C 7D8C 7D94 7D84 7D7D 7D92 7F6D - 7F6B 7F67 7F68 7F6C 7FA6 7FA5 7FA7 7FDB - 7FDC 8021 8164 8160 8177 815C 8169 815B - 8162 8172 6721 815E 8176 8167 816F -End of Item 0085 - -Begin of Item 0086 - Format 1 - srcBegin = DFA1 - srcEnd = DFFE - mappingOffset = 23CC - Mapping = - 8144 8161 821D 8249 8244 8240 8242 8245 - 84F1 843F 8456 8476 8479 848F 848D 8465 - 8451 8440 8486 8467 8430 844D 847D 845A - 8459 8474 8473 845D 8507 845E 8437 843A - 8434 847A 8443 8478 8432 8445 8429 83D9 - 844B 842F 8442 842D 845F 8470 8439 844E - 844C 8452 846F 84C5 848E 843B 8447 8436 - 8433 8468 847E 8444 842B 8460 8454 846E - 8450 870B 8704 86F7 870C 86FA 86D6 86F5 - 874D 86F8 870E 8709 8701 86F6 870D 8705 - 88D6 88CB 88CD 88CE 88DE 88DB 88DA 88CC - 88D0 8985 899B 89DF 89E5 89E4 -End of Item 0086 - -Begin of Item 0087 - Format 1 - srcBegin = E040 - srcEnd = E07E - mappingOffset = 242A - Mapping = - 89E1 89E0 89E2 89DC 89E6 8A76 8A86 8A7F - 8A61 8A3F 8A77 8A82 8A84 8A75 8A83 8A81 - 8A74 8A7A 8C3C 8C4B 8C4A 8C65 8C64 8C66 - 8C86 8C84 8C85 8CCC 8D68 8D69 8D91 8D8C - 8D8E 8D8F 8D8D 8D93 8D94 8D90 8D92 8DF0 - 8DE0 8DEC 8DF1 8DEE 8DD0 8DE9 8DE3 8DE2 - 8DE7 8DF2 8DEB 8DF4 8F06 8EFF 8F01 8F00 - 8F05 8F07 8F08 8F02 8F0B 9052 903F -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = E0A1 - srcEnd = E0FE - mappingOffset = 2469 - Mapping = - 9044 9049 903D 9110 910D 910F 9111 9116 - 9114 910B 910E 916E 916F 9248 9252 9230 - 923A 9266 9233 9265 925E 9283 922E 924A - 9246 926D 926C 924F 9260 9267 926F 9236 - 9261 9270 9231 9254 9263 9250 9272 924E - 9253 924C 9256 9232 959F 959C 959E 959B - 9692 9693 9691 9697 96CE 96FA 96FD 96F8 - 96F5 9773 9777 9778 9772 980F 980D 980E - 98AC 98F6 98F9 99AF 99B2 99B0 99B5 9AAD - 9AAB 9B5B 9CEA 9CED 9CE7 9E80 9EFD 50E6 - 50D4 50D7 50E8 50F3 50DB 50EA 50DD 50E4 - 50D3 50EC 50F0 50EF 50E3 50E0 -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = E140 - srcEnd = E17E - mappingOffset = 24C7 - Mapping = - 51D8 5280 5281 52E9 52EB 5330 53AC 5627 - 5615 560C 5612 55FC 560F 561C 5601 5613 - 5602 55FA 561D 5604 55FF 55F9 5889 587C - 5890 5898 5886 5881 587F 5874 588B 587A - 5887 5891 588E 5876 5882 5888 587B 5894 - 588F 58FE 596B 5ADC 5AEE 5AE5 5AD5 5AEA - 5ADA 5AED 5AEB 5AF3 5AE2 5AE0 5ADB 5AEC - 5ADE 5ADD 5AD9 5AE8 5ADF 5B77 5BE0 -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = E1A1 - srcEnd = E1FE - mappingOffset = 2506 - Mapping = - 5BE3 5C63 5D82 5D80 5D7D 5D86 5D7A 5D81 - 5D77 5D8A 5D89 5D88 5D7E 5D7C 5D8D 5D79 - 5D7F 5E58 5E59 5E53 5ED8 5ED1 5ED7 5ECE - 5EDC 5ED5 5ED9 5ED2 5ED4 5F44 5F43 5F6F - 5FB6 612C 6128 6141 615E 6171 6173 6152 - 6153 6172 616C 6180 6174 6154 617A 615B - 6165 613B 616A 6161 6156 6229 6227 622B - 642B 644D 645B 645D 6474 6476 6472 6473 - 647D 6475 6466 64A6 644E 6482 645E 645C - 644B 6453 6460 6450 647F 643F 646C 646B - 6459 6465 6477 6573 65A0 66A1 66A0 669F - 6705 6704 6722 69B1 69B6 69C9 -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = E240 - srcEnd = E27E - mappingOffset = 2564 - Mapping = - 69A0 69CE 6996 69B0 69AC 69BC 6991 6999 - 698E 69A7 698D 69A9 69BE 69AF 69BF 69C4 - 69BD 69A4 69D4 69B9 69CA 699A 69CF 69B3 - 6993 69AA 69A1 699E 69D9 6997 6990 69C2 - 69B5 69A5 69C6 6B4A 6B4D 6B4B 6B9E 6B9F - 6BA0 6BC3 6BC4 6BFE 6ECE 6EF5 6EF1 6F03 - 6F25 6EF8 6F37 6EFB 6F2E 6F09 6F4E 6F19 - 6F1A 6F27 6F18 6F3B 6F12 6EED 6F0A -End of Item 008B - -Begin of Item 008C - Format 1 - srcBegin = E2A1 - srcEnd = E2FE - mappingOffset = 25A3 - Mapping = - 6F36 6F73 6EF9 6EEE 6F2D 6F40 6F30 6F3C - 6F35 6EEB 6F07 6F0E 6F43 6F05 6EFD 6EF6 - 6F39 6F1C 6EFC 6F3A 6F1F 6F0D 6F1E 6F08 - 6F21 7187 7190 7189 7180 7185 7182 718F - 717B 7186 7181 7197 7244 7253 7297 7295 - 7293 7343 734D 7351 734C 7462 7473 7471 - 7475 7472 7467 746E 7500 7502 7503 757D - 7590 7616 7608 760C 7615 7611 760A 7614 - 76B8 7781 777C 7785 7782 776E 7780 776F - 777E 7783 78B2 78AA 78B4 78AD 78A8 787E - 78AB 789E 78A5 78A0 78AC 78A2 78A4 7998 - 798A 798B 7996 7995 7994 7993 -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = E340 - srcEnd = E37E - mappingOffset = 2601 - Mapping = - 7997 7988 7992 7990 7A2B 7A4A 7A30 7A2F - 7A28 7A26 7AA8 7AAB 7AAC 7AEE 7B88 7B9C - 7B8A 7B91 7B90 7B96 7B8D 7B8C 7B9B 7B8E - 7B85 7B98 5284 7B99 7BA4 7B82 7CBB 7CBF - 7CBC 7CBA 7DA7 7DB7 7DC2 7DA3 7DAA 7DC1 - 7DC0 7DC5 7D9D 7DCE 7DC4 7DC6 7DCB 7DCC - 7DAF 7DB9 7D96 7DBC 7D9F 7DA6 7DAE 7DA9 - 7DA1 7DC9 7F73 7FE2 7FE3 7FE5 7FDE -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = E3A1 - srcEnd = E3FE - mappingOffset = 2640 - Mapping = - 8024 805D 805C 8189 8186 8183 8187 818D - 818C 818B 8215 8497 84A4 84A1 849F 84BA - 84CE 84C2 84AC 84AE 84AB 84B9 84B4 84C1 - 84CD 84AA 849A 84B1 84D0 849D 84A7 84BB - 84A2 8494 84C7 84CC 849B 84A9 84AF 84A8 - 84D6 8498 84B6 84CF 84A0 84D7 84D4 84D2 - 84DB 84B0 8491 8661 8733 8723 8728 876B - 8740 872E 871E 8721 8719 871B 8743 872C - 8741 873E 8746 8720 8732 872A 872D 873C - 8712 873A 8731 8735 8742 8726 8727 8738 - 8724 871A 8730 8711 88F7 88E7 88F1 88F2 - 88FA 88FE 88EE 88FC 88F6 88FB -End of Item 008E - -Begin of Item 008F - Format 1 - srcBegin = E440 - srcEnd = E47E - mappingOffset = 269E - Mapping = - 88F0 88EC 88EB 899D 89A1 899F 899E 89E9 - 89EB 89E8 8AAB 8A99 8A8B 8A92 8A8F 8A96 - 8C3D 8C68 8C69 8CD5 8CCF 8CD7 8D96 8E09 - 8E02 8DFF 8E0D 8DFD 8E0A 8E03 8E07 8E06 - 8E05 8DFE 8E00 8E04 8F10 8F11 8F0E 8F0D - 9123 911C 9120 9122 911F 911D 911A 9124 - 9121 911B 917A 9172 9179 9173 92A5 92A4 - 9276 929B 927A 92A0 9294 92AA 928D -End of Item 008F - -Begin of Item 0090 - Format 1 - srcBegin = E4A1 - srcEnd = E4FE - mappingOffset = 26DD - Mapping = - 92A6 929A 92AB 9279 9297 927F 92A3 92EE - 928E 9282 9295 92A2 927D 9288 92A1 928A - 9286 928C 9299 92A7 927E 9287 92A9 929D - 928B 922D 969E 96A1 96FF 9758 977D 977A - 977E 9783 9780 9782 977B 9784 9781 977F - 97CE 97CD 9816 98AD 98AE 9902 9900 9907 - 999D 999C 99C3 99B9 99BB 99BA 99C2 99BD - 99C7 9AB1 9AE3 9AE7 9B3E 9B3F 9B60 9B61 - 9B5F 9CF1 9CF2 9CF5 9EA7 50FF 5103 5130 - 50F8 5106 5107 50F6 50FE 510B 510C 50FD - 510A 528B 528C 52F1 52EF 5648 5642 564C - 5635 5641 564A 5649 5646 5658 -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = E540 - srcEnd = E57E - mappingOffset = 273B - Mapping = - 565A 5640 5633 563D 562C 563E 5638 562A - 563A 571A 58AB 589D 58B1 58A0 58A3 58AF - 58AC 58A5 58A1 58FF 5AFF 5AF4 5AFD 5AF7 - 5AF6 5B03 5AF8 5B02 5AF9 5B01 5B07 5B05 - 5B0F 5C67 5D99 5D97 5D9F 5D92 5DA2 5D93 - 5D95 5DA0 5D9C 5DA1 5D9A 5D9E 5E69 5E5D - 5E60 5E5C 7DF3 5EDB 5EDE 5EE1 5F49 5FB2 - 618B 6183 6179 61B1 61B0 61A2 6189 -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = E5A1 - srcEnd = E5FE - mappingOffset = 277A - Mapping = - 619B 6193 61AF 61AD 619F 6192 61AA 61A1 - 618D 6166 61B3 622D 646E 6470 6496 64A0 - 6485 6497 649C 648F 648B 648A 648C 64A3 - 649F 6468 64B1 6498 6576 657A 6579 657B - 65B2 65B3 66B5 66B0 66A9 66B2 66B7 66AA - 66AF 6A00 6A06 6A17 69E5 69F8 6A15 69F1 - 69E4 6A20 69FF 69EC 69E2 6A1B 6A1D 69FE - 6A27 69F2 69EE 6A14 69F7 69E7 6A40 6A08 - 69E6 69FB 6A0D 69FC 69EB 6A09 6A04 6A18 - 6A25 6A0F 69F6 6A26 6A07 69F4 6A16 6B51 - 6BA5 6BA3 6BA2 6BA6 6C01 6C00 6BFF 6C02 - 6F41 6F26 6F7E 6F87 6FC6 6F92 -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = E640 - srcEnd = E67E - mappingOffset = 27D8 - Mapping = - 6F8D 6F89 6F8C 6F62 6F4F 6F85 6F5A 6F96 - 6F76 6F6C 6F82 6F55 6F72 6F52 6F50 6F57 - 6F94 6F93 6F5D 6F00 6F61 6F6B 6F7D 6F67 - 6F90 6F53 6F8B 6F69 6F7F 6F95 6F63 6F77 - 6F6A 6F7B 71B2 71AF 719B 71B0 71A0 719A - 71A9 71B5 719D 71A5 719E 71A4 71A1 71AA - 719C 71A7 71B3 7298 729A 7358 7352 735E - 735F 7360 735D 735B 7361 735A 7359 -End of Item 0093 - -Begin of Item 0094 - Format 1 - srcBegin = E6A1 - srcEnd = E6FE - mappingOffset = 2817 - Mapping = - 7362 7487 7489 748A 7486 7481 747D 7485 - 7488 747C 7479 7508 7507 757E 7625 761E - 7619 761D 761C 7623 761A 7628 761B 769C - 769D 769E 769B 778D 778F 7789 7788 78CD - 78BB 78CF 78CC 78D1 78CE 78D4 78C8 78C3 - 78C4 78C9 799A 79A1 79A0 799C 79A2 799B - 6B76 7A39 7AB2 7AB4 7AB3 7BB7 7BCB 7BBE - 7BAC 7BCE 7BAF 7BB9 7BCA 7BB5 7CC5 7CC8 - 7CCC 7CCB 7DF7 7DDB 7DEA 7DE7 7DD7 7DE1 - 7E03 7DFA 7DE6 7DF6 7DF1 7DF0 7DEE 7DDF - 7F76 7FAC 7FB0 7FAD 7FED 7FEB 7FEA 7FEC - 7FE6 7FE8 8064 8067 81A3 819F -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = E740 - srcEnd = E77E - mappingOffset = 2875 - Mapping = - 819E 8195 81A2 8199 8197 8216 824F 8253 - 8252 8250 824E 8251 8524 853B 850F 8500 - 8529 850E 8509 850D 851F 850A 8527 851C - 84FB 852B 84FA 8508 850C 84F4 852A 84F2 - 8515 84F7 84EB 84F3 84FC 8512 84EA 84E9 - 8516 84FE 8528 851D 852E 8502 84FD 851E - 84F6 8531 8526 84E7 84E8 84F0 84EF 84F9 - 8518 8520 8530 850B 8519 852F 8662 -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = E7A1 - srcEnd = E7FE - mappingOffset = 28B4 - Mapping = - 8756 8763 8764 8777 87E1 8773 8758 8754 - 875B 8752 8761 875A 8751 875E 876D 876A - 8750 874E 875F 875D 876F 876C 877A 876E - 875C 8765 874F 877B 8775 8762 8767 8769 - 885A 8905 890C 8914 890B 8917 8918 8919 - 8906 8916 8911 890E 8909 89A2 89A4 89A3 - 89ED 89F0 89EC 8ACF 8AC6 8AB8 8AD3 8AD1 - 8AD4 8AD5 8ABB 8AD7 8ABE 8AC0 8AC5 8AD8 - 8AC3 8ABA 8ABD 8AD9 8C3E 8C4D 8C8F 8CE5 - 8CDF 8CD9 8CE8 8CDA 8CDD 8CE7 8DA0 8D9C - 8DA1 8D9B 8E20 8E23 8E25 8E24 8E2E 8E15 - 8E1B 8E16 8E11 8E19 8E26 8E27 -End of Item 0096 - -Begin of Item 0097 - Format 1 - srcBegin = E840 - srcEnd = E87E - mappingOffset = 2912 - Mapping = - 8E14 8E12 8E18 8E13 8E1C 8E17 8E1A 8F2C - 8F24 8F18 8F1A 8F20 8F23 8F16 8F17 9073 - 9070 906F 9067 906B 912F 912B 9129 912A - 9132 9126 912E 9185 9186 918A 9181 9182 - 9184 9180 92D0 92C3 92C4 92C0 92D9 92B6 - 92CF 92F1 92DF 92D8 92E9 92D7 92DD 92CC - 92EF 92C2 92E8 92CA 92C8 92CE 92E6 92CD - 92D5 92C9 92E0 92DE 92E7 92D1 92D3 -End of Item 0097 - -Begin of Item 0098 - Format 1 - srcBegin = E8A1 - srcEnd = E8FE - mappingOffset = 2951 - Mapping = - 92B5 92E1 92C6 92B4 957C 95AC 95AB 95AE - 95B0 96A4 96A2 96D3 9705 9708 9702 975A - 978A 978E 9788 97D0 97CF 981E 981D 9826 - 9829 9828 9820 981B 9827 98B2 9908 98FA - 9911 9914 9916 9917 9915 99DC 99CD 99CF - 99D3 99D4 99CE 99C9 99D6 99D8 99CB 99D7 - 99CC 9AB3 9AEC 9AEB 9AF3 9AF2 9AF1 9B46 - 9B43 9B67 9B74 9B71 9B66 9B76 9B75 9B70 - 9B68 9B64 9B6C 9CFC 9CFA 9CFD 9CFF 9CF7 - 9D07 9D00 9CF9 9CFB 9D08 9D05 9D04 9E83 - 9ED3 9F0F 9F10 511C 5113 5117 511A 5111 - 51DE 5334 53E1 5670 5660 566E -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = E940 - srcEnd = E97E - mappingOffset = 29AF - Mapping = - 5673 5666 5663 566D 5672 565E 5677 571C - 571B 58C8 58BD 58C9 58BF 58BA 58C2 58BC - 58C6 5B17 5B19 5B1B 5B21 5B14 5B13 5B10 - 5B16 5B28 5B1A 5B20 5B1E 5BEF 5DAC 5DB1 - 5DA9 5DA7 5DB5 5DB0 5DAE 5DAA 5DA8 5DB2 - 5DAD 5DAF 5DB4 5E67 5E68 5E66 5E6F 5EE9 - 5EE7 5EE6 5EE8 5EE5 5F4B 5FBC 619D 61A8 - 6196 61C5 61B4 61C6 61C1 61CC 61BA -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = E9A1 - srcEnd = E9FE - mappingOffset = 29EE - Mapping = - 61BF 61B8 618C 64D7 64D6 64D0 64CF 64C9 - 64BD 6489 64C3 64DB 64F3 64D9 6533 657F - 657C 65A2 66C8 66BE 66C0 66CA 66CB 66CF - 66BD 66BB 66BA 66CC 6723 6A34 6A66 6A49 - 6A67 6A32 6A68 6A3E 6A5D 6A6D 6A76 6A5B - 6A51 6A28 6A5A 6A3B 6A3F 6A41 6A6A 6A64 - 6A50 6A4F 6A54 6A6F 6A69 6A60 6A3C 6A5E - 6A56 6A55 6A4D 6A4E 6A46 6B55 6B54 6B56 - 6BA7 6BAA 6BAB 6BC8 6BC7 6C04 6C03 6C06 - 6FAD 6FCB 6FA3 6FC7 6FBC 6FCE 6FC8 6F5E - 6FC4 6FBD 6F9E 6FCA 6FA8 7004 6FA5 6FAE - 6FBA 6FAC 6FAA 6FCF 6FBF 6FB8 -End of Item 009A - -Begin of Item 009B - Format 1 - srcBegin = EA40 - srcEnd = EA7E - mappingOffset = 2A4C - Mapping = - 6FA2 6FC9 6FAB 6FCD 6FAF 6FB2 6FB0 71C5 - 71C2 71BF 71B8 71D6 71C0 71C1 71CB 71D4 - 71CA 71C7 71CF 71BD 71D8 71BC 71C6 71DA - 71DB 729D 729E 7369 7366 7367 736C 7365 - 736B 736A 747F 749A 74A0 7494 7492 7495 - 74A1 750B 7580 762F 762D 7631 763D 7633 - 763C 7635 7632 7630 76BB 76E6 779A 779D - 77A1 779C 779B 77A2 77A3 7795 7799 -End of Item 009B - -Begin of Item 009C - Format 1 - srcBegin = EAA1 - srcEnd = EAFE - mappingOffset = 2A8B - Mapping = - 7797 78DD 78E9 78E5 78EA 78DE 78E3 78DB - 78E1 78E2 78ED 78DF 78E0 79A4 7A44 7A48 - 7A47 7AB6 7AB8 7AB5 7AB1 7AB7 7BDE 7BE3 - 7BE7 7BDD 7BD5 7BE5 7BDA 7BE8 7BF9 7BD4 - 7BEA 7BE2 7BDC 7BEB 7BD8 7BDF 7CD2 7CD4 - 7CD7 7CD0 7CD1 7E12 7E21 7E17 7E0C 7E1F - 7E20 7E13 7E0E 7E1C 7E15 7E1A 7E22 7E0B - 7E0F 7E16 7E0D 7E14 7E25 7E24 7F43 7F7B - 7F7C 7F7A 7FB1 7FEF 802A 8029 806C 81B1 - 81A6 81AE 81B9 81B5 81AB 81B0 81AC 81B4 - 81B2 81B7 81A7 81F2 8255 8256 8257 8556 - 8545 856B 854D 8553 8561 8558 -End of Item 009C - -Begin of Item 009D - Format 1 - srcBegin = EB40 - srcEnd = EB7E - mappingOffset = 2AE9 - Mapping = - 8540 8546 8564 8541 8562 8544 8551 8547 - 8563 853E 855B 8571 854E 856E 8575 8555 - 8567 8560 858C 8566 855D 8554 8565 856C - 8663 8665 8664 879B 878F 8797 8793 8792 - 8788 8781 8796 8798 8779 8787 87A3 8785 - 8790 8791 879D 8784 8794 879C 879A 8789 - 891E 8926 8930 892D 892E 8927 8931 8922 - 8929 8923 892F 892C 891F 89F1 8AE0 -End of Item 009D - -Begin of Item 009E - Format 1 - srcBegin = EBA1 - srcEnd = EBFE - mappingOffset = 2B28 - Mapping = - 8AE2 8AF2 8AF4 8AF5 8ADD 8B14 8AE4 8ADF - 8AF0 8AC8 8ADE 8AE1 8AE8 8AFF 8AEF 8AFB - 8C91 8C92 8C90 8CF5 8CEE 8CF1 8CF0 8CF3 - 8D6C 8D6E 8DA5 8DA7 8E33 8E3E 8E38 8E40 - 8E45 8E36 8E3C 8E3D 8E41 8E30 8E3F 8EBD - 8F36 8F2E 8F35 8F32 8F39 8F37 8F34 9076 - 9079 907B 9086 90FA 9133 9135 9136 9193 - 9190 9191 918D 918F 9327 931E 9308 931F - 9306 930F 937A 9338 933C 931B 9323 9312 - 9301 9346 932D 930E 930D 92CB 931D 92FA - 9325 9313 92F9 92F7 9334 9302 9324 92FF - 9329 9339 9335 932A 9314 930C -End of Item 009E - -Begin of Item 009F - Format 1 - srcBegin = EC40 - srcEnd = EC7E - mappingOffset = 2B86 - Mapping = - 930B 92FE 9309 9300 92FB 9316 95BC 95CD - 95BE 95B9 95BA 95B6 95BF 95B5 95BD 96A9 - 96D4 970B 9712 9710 9799 9797 9794 97F0 - 97F8 9835 982F 9832 9924 991F 9927 9929 - 999E 99EE 99EC 99E5 99E4 99F0 99E3 99EA - 99E9 99E7 9AB9 9ABF 9AB4 9ABB 9AF6 9AFA - 9AF9 9AF7 9B33 9B80 9B85 9B87 9B7C 9B7E - 9B7B 9B82 9B93 9B92 9B90 9B7A 9B95 -End of Item 009F - -Begin of Item 00A0 - Format 1 - srcBegin = ECA1 - srcEnd = ECFE - mappingOffset = 2BC5 - Mapping = - 9B7D 9B88 9D25 9D17 9D20 9D1E 9D14 9D29 - 9D1D 9D18 9D22 9D10 9D19 9D1F 9E88 9E86 - 9E87 9EAE 9EAD 9ED5 9ED6 9EFA 9F12 9F3D - 5126 5125 5122 5124 5120 5129 52F4 5693 - 568C 568D 5686 5684 5683 567E 5682 567F - 5681 58D6 58D4 58CF 58D2 5B2D 5B25 5B32 - 5B23 5B2C 5B27 5B26 5B2F 5B2E 5B7B 5BF1 - 5BF2 5DB7 5E6C 5E6A 5FBE 5FBB 61C3 61B5 - 61BC 61E7 61E0 61E5 61E4 61E8 61DE 64EF - 64E9 64E3 64EB 64E4 64E8 6581 6580 65B6 - 65DA 66D2 6A8D 6A96 6A81 6AA5 6A89 6A9F - 6A9B 6AA1 6A9E 6A87 6A93 6A8E -End of Item 00A0 - -Begin of Item 00A1 - Format 1 - srcBegin = ED40 - srcEnd = ED7E - mappingOffset = 2C23 - Mapping = - 6A95 6A83 6AA8 6AA4 6A91 6A7F 6AA6 6A9A - 6A85 6A8C 6A92 6B5B 6BAD 6C09 6FCC 6FA9 - 6FF4 6FD4 6FE3 6FDC 6FED 6FE7 6FE6 6FDE - 6FF2 6FDD 6FE2 6FE8 71E1 71F1 71E8 71F2 - 71E4 71F0 71E2 7373 736E 736F 7497 74B2 - 74AB 7490 74AA 74AD 74B1 74A5 74AF 7510 - 7511 7512 750F 7584 7643 7648 7649 7647 - 76A4 76E9 77B5 77AB 77B2 77B7 77B6 -End of Item 00A1 - -Begin of Item 00A2 - Format 1 - srcBegin = EDA1 - srcEnd = EDFE - mappingOffset = 2C62 - Mapping = - 77B4 77B1 77A8 77F0 78F3 78FD 7902 78FB - 78FC 78F2 7905 78F9 78FE 7904 79AB 79A8 - 7A5C 7A5B 7A56 7A58 7A54 7A5A 7ABE 7AC0 - 7AC1 7C05 7C0F 7BF2 7C00 7BFF 7BFB 7C0E - 7BF4 7C0B 7BF3 7C02 7C09 7C03 7C01 7BF8 - 7BFD 7C06 7BF0 7BF1 7C10 7C0A 7CE8 7E2D - 7E3C 7E42 7E33 9848 7E38 7E2A 7E49 7E40 - 7E47 7E29 7E4C 7E30 7E3B 7E36 7E44 7E3A - 7F45 7F7F 7F7E 7F7D 7FF4 7FF2 802C 81BB - 81C4 81CC 81CA 81C5 81C7 81BC 81E9 825B - 825A 825C 8583 8580 858F 85A7 8595 85A0 - 858B 85A3 857B 85A4 859A 859E -End of Item 00A2 - -Begin of Item 00A3 - Format 1 - srcBegin = EE40 - srcEnd = EE7E - mappingOffset = 2CC0 - Mapping = - 8577 857C 8589 85A1 857A 8578 8557 858E - 8596 8586 858D 8599 859D 8581 85A2 8582 - 8588 8585 8579 8576 8598 8590 859F 8668 - 87BE 87AA 87AD 87C5 87B0 87AC 87B9 87B5 - 87BC 87AE 87C9 87C3 87C2 87CC 87B7 87AF - 87C4 87CA 87B4 87B6 87BF 87B8 87BD 87DE - 87B2 8935 8933 893C 893E 8941 8952 8937 - 8942 89AD 89AF 89AE 89F2 89F3 8B1E -End of Item 00A3 - -Begin of Item 00A4 - Format 1 - srcBegin = EEA1 - srcEnd = EEFE - mappingOffset = 2CFF - Mapping = - 8B18 8B16 8B11 8B05 8B0B 8B22 8B0F 8B12 - 8B15 8B07 8B0D 8B08 8B06 8B1C 8B13 8B1A - 8C4F 8C70 8C72 8C71 8C6F 8C95 8C94 8CF9 - 8D6F 8E4E 8E4D 8E53 8E50 8E4C 8E47 8F43 - 8F40 9085 907E 9138 919A 91A2 919B 9199 - 919F 91A1 919D 91A0 93A1 9383 93AF 9364 - 9356 9347 937C 9358 935C 9376 9349 9350 - 9351 9360 936D 938F 934C 936A 9379 9357 - 9355 9352 934F 9371 9377 937B 9361 935E - 9363 9367 9380 934E 9359 95C7 95C0 95C9 - 95C3 95C5 95B7 96AE 96B0 96AC 9720 971F - 9718 971D 9719 979A 97A1 979C -End of Item 00A4 - -Begin of Item 00A5 - Format 1 - srcBegin = EF40 - srcEnd = EF7E - mappingOffset = 2D5D - Mapping = - 979E 979D 97D5 97D4 97F1 9841 9844 984A - 9849 9845 9843 9925 992B 992C 992A 9933 - 9932 992F 992D 9931 9930 9998 99A3 99A1 - 9A02 99FA 99F4 99F7 99F9 99F8 99F6 99FB - 99FD 99FE 99FC 9A03 9ABE 9AFE 9AFD 9B01 - 9AFC 9B48 9B9A 9BA8 9B9E 9B9B 9BA6 9BA1 - 9BA5 9BA4 9B86 9BA2 9BA0 9BAF 9D33 9D41 - 9D67 9D36 9D2E 9D2F 9D31 9D38 9D30 -End of Item 00A5 - -Begin of Item 00A6 - Format 1 - srcBegin = EFA1 - srcEnd = EFFE - mappingOffset = 2D9C - Mapping = - 9D45 9D42 9D43 9D3E 9D37 9D40 9D3D 7FF5 - 9D2D 9E8A 9E89 9E8D 9EB0 9EC8 9EDA 9EFB - 9EFF 9F24 9F23 9F22 9F54 9FA0 5131 512D - 512E 5698 569C 5697 569A 569D 5699 5970 - 5B3C 5C69 5C6A 5DC0 5E6D 5E6E 61D8 61DF - 61ED 61EE 61F1 61EA 61F0 61EB 61D6 61E9 - 64FF 6504 64FD 64F8 6501 6503 64FC 6594 - 65DB 66DA 66DB 66D8 6AC5 6AB9 6ABD 6AE1 - 6AC6 6ABA 6AB6 6AB7 6AC7 6AB4 6AAD 6B5E - 6BC9 6C0B 7007 700C 700D 7001 7005 7014 - 700E 6FFF 7000 6FFB 7026 6FFC 6FF7 700A - 7201 71FF 71F9 7203 71FD 7376 -End of Item 00A6 - -Begin of Item 00A7 - Format 1 - srcBegin = F040 - srcEnd = F07E - mappingOffset = 2DFA - Mapping = - 74B8 74C0 74B5 74C1 74BE 74B6 74BB 74C2 - 7514 7513 765C 7664 7659 7650 7653 7657 - 765A 76A6 76BD 76EC 77C2 77BA 78FF 790C - 7913 7914 7909 7910 7912 7911 79AD 79AC - 7A5F 7C1C 7C29 7C19 7C20 7C1F 7C2D 7C1D - 7C26 7C28 7C22 7C25 7C30 7E5C 7E50 7E56 - 7E63 7E58 7E62 7E5F 7E51 7E60 7E57 7E53 - 7FB5 7FB3 7FF7 7FF8 8075 81D1 81D2 -End of Item 00A7 - -Begin of Item 00A8 - Format 1 - srcBegin = F0A1 - srcEnd = F0FE - mappingOffset = 2E39 - Mapping = - 81D0 825F 825E 85B4 85C6 85C0 85C3 85C2 - 85B3 85B5 85BD 85C7 85C4 85BF 85CB 85CE - 85C8 85C5 85B1 85B6 85D2 8624 85B8 85B7 - 85BE 8669 87E7 87E6 87E2 87DB 87EB 87EA - 87E5 87DF 87F3 87E4 87D4 87DC 87D3 87ED - 87D8 87E3 87A4 87D7 87D9 8801 87F4 87E8 - 87DD 8953 894B 894F 894C 8946 8950 8951 - 8949 8B2A 8B27 8B23 8B33 8B30 8B35 8B47 - 8B2F 8B3C 8B3E 8B31 8B25 8B37 8B26 8B36 - 8B2E 8B24 8B3B 8B3D 8B3A 8C42 8C75 8C99 - 8C98 8C97 8CFE 8D04 8D02 8D00 8E5C 8E62 - 8E60 8E57 8E56 8E5E 8E65 8E67 -End of Item 00A8 - -Begin of Item 00A9 - Format 1 - srcBegin = F140 - srcEnd = F17E - mappingOffset = 2E97 - Mapping = - 8E5B 8E5A 8E61 8E5D 8E69 8E54 8F46 8F47 - 8F48 8F4B 9128 913A 913B 913E 91A8 91A5 - 91A7 91AF 91AA 93B5 938C 9392 93B7 939B - 939D 9389 93A7 938E 93AA 939E 93A6 9395 - 9388 9399 939F 938D 93B1 9391 93B2 93A4 - 93A8 93B4 93A3 93A5 95D2 95D3 95D1 96B3 - 96D7 96DA 5DC2 96DF 96D8 96DD 9723 9722 - 9725 97AC 97AE 97A8 97AB 97A4 97AA -End of Item 00A9 - -Begin of Item 00AA - Format 1 - srcBegin = F1A1 - srcEnd = F1FE - mappingOffset = 2ED6 - Mapping = - 97A2 97A5 97D7 97D9 97D6 97D8 97FA 9850 - 9851 9852 98B8 9941 993C 993A 9A0F 9A0B - 9A09 9A0D 9A04 9A11 9A0A 9A05 9A07 9A06 - 9AC0 9ADC 9B08 9B04 9B05 9B29 9B35 9B4A - 9B4C 9B4B 9BC7 9BC6 9BC3 9BBF 9BC1 9BB5 - 9BB8 9BD3 9BB6 9BC4 9BB9 9BBD 9D5C 9D53 - 9D4F 9D4A 9D5B 9D4B 9D59 9D56 9D4C 9D57 - 9D52 9D54 9D5F 9D58 9D5A 9E8E 9E8C 9EDF - 9F01 9F00 9F16 9F25 9F2B 9F2A 9F29 9F28 - 9F4C 9F55 5134 5135 5296 52F7 53B4 56AB - 56AD 56A6 56A7 56AA 56AC 58DA 58DD 58DB - 5912 5B3D 5B3E 5B3F 5DC3 5E70 -End of Item 00AA - -Begin of Item 00AB - Format 1 - srcBegin = F240 - srcEnd = F27E - mappingOffset = 2F34 - Mapping = - 5FBF 61FB 6507 6510 650D 6509 650C 650E - 6584 65DE 65DD 66DE 6AE7 6AE0 6ACC 6AD1 - 6AD9 6ACB 6ADF 6ADC 6AD0 6AEB 6ACF 6ACD - 6ADE 6B60 6BB0 6C0C 7019 7027 7020 7016 - 702B 7021 7022 7023 7029 7017 7024 701C - 702A 720C 720A 7207 7202 7205 72A5 72A6 - 72A4 72A3 72A1 74CB 74C5 74B7 74C3 7516 - 7660 77C9 77CA 77C4 77F1 791D 791B -End of Item 00AB - -Begin of Item 00AC - Format 1 - srcBegin = F2A1 - srcEnd = F2FE - mappingOffset = 2F73 - Mapping = - 7921 791C 7917 791E 79B0 7A67 7A68 7C33 - 7C3C 7C39 7C2C 7C3B 7CEC 7CEA 7E76 7E75 - 7E78 7E70 7E77 7E6F 7E7A 7E72 7E74 7E68 - 7F4B 7F4A 7F83 7F86 7FB7 7FFD 7FFE 8078 - 81D7 81D5 8264 8261 8263 85EB 85F1 85ED - 85D9 85E1 85E8 85DA 85D7 85EC 85F2 85F8 - 85D8 85DF 85E3 85DC 85D1 85F0 85E6 85EF - 85DE 85E2 8800 87FA 8803 87F6 87F7 8809 - 880C 880B 8806 87FC 8808 87FF 880A 8802 - 8962 895A 895B 8957 8961 895C 8958 895D - 8959 8988 89B7 89B6 89F6 8B50 8B48 8B4A - 8B40 8B53 8B56 8B54 8B4B 8B55 -End of Item 00AC - -Begin of Item 00AD - Format 1 - srcBegin = F340 - srcEnd = F37E - mappingOffset = 2FD1 - Mapping = - 8B51 8B42 8B52 8B57 8C43 8C77 8C76 8C9A - 8D06 8D07 8D09 8DAC 8DAA 8DAD 8DAB 8E6D - 8E78 8E73 8E6A 8E6F 8E7B 8EC2 8F52 8F51 - 8F4F 8F50 8F53 8FB4 9140 913F 91B0 91AD - 93DE 93C7 93CF 93C2 93DA 93D0 93F9 93EC - 93CC 93D9 93A9 93E6 93CA 93D4 93EE 93E3 - 93D5 93C4 93CE 93C0 93D2 93E7 957D 95DA - 95DB 96E1 9729 972B 972C 9728 9726 -End of Item 00AD - -Begin of Item 00AE - Format 1 - srcBegin = F3A1 - srcEnd = F3FE - mappingOffset = 3010 - Mapping = - 97B3 97B7 97B6 97DD 97DE 97DF 985C 9859 - 985D 9857 98BF 98BD 98BB 98BE 9948 9947 - 9943 99A6 99A7 9A1A 9A15 9A25 9A1D 9A24 - 9A1B 9A22 9A20 9A27 9A23 9A1E 9A1C 9A14 - 9AC2 9B0B 9B0A 9B0E 9B0C 9B37 9BEA 9BEB - 9BE0 9BDE 9BE4 9BE6 9BE2 9BF0 9BD4 9BD7 - 9BEC 9BDC 9BD9 9BE5 9BD5 9BE1 9BDA 9D77 - 9D81 9D8A 9D84 9D88 9D71 9D80 9D78 9D86 - 9D8B 9D8C 9D7D 9D6B 9D74 9D75 9D70 9D69 - 9D85 9D73 9D7B 9D82 9D6F 9D79 9D7F 9D87 - 9D68 9E94 9E91 9EC0 9EFC 9F2D 9F40 9F41 - 9F4D 9F56 9F57 9F58 5337 56B2 -End of Item 00AE - -Begin of Item 00AF - Format 1 - srcBegin = F440 - srcEnd = F47E - mappingOffset = 306E - Mapping = - 56B5 56B3 58E3 5B45 5DC6 5DC7 5EEE 5EEF - 5FC0 5FC1 61F9 6517 6516 6515 6513 65DF - 66E8 66E3 66E4 6AF3 6AF0 6AEA 6AE8 6AF9 - 6AF1 6AEE 6AEF 703C 7035 702F 7037 7034 - 7031 7042 7038 703F 703A 7039 7040 703B - 7033 7041 7213 7214 72A8 737D 737C 74BA - 76AB 76AA 76BE 76ED 77CC 77CE 77CF 77CD - 77F2 7925 7923 7927 7928 7924 7929 -End of Item 00AF - -Begin of Item 00B0 - Format 1 - srcBegin = F4A1 - srcEnd = F4FE - mappingOffset = 30AD - Mapping = - 79B2 7A6E 7A6C 7A6D 7AF7 7C49 7C48 7C4A - 7C47 7C45 7CEE 7E7B 7E7E 7E81 7E80 7FBA - 7FFF 8079 81DB 81D9 820B 8268 8269 8622 - 85FF 8601 85FE 861B 8600 85F6 8604 8609 - 8605 860C 85FD 8819 8810 8811 8817 8813 - 8816 8963 8966 89B9 89F7 8B60 8B6A 8B5D - 8B68 8B63 8B65 8B67 8B6D 8DAE 8E86 8E88 - 8E84 8F59 8F56 8F57 8F55 8F58 8F5A 908D - 9143 9141 91B7 91B5 91B2 91B3 940B 9413 - 93FB 9420 940F 9414 93FE 9415 9410 9428 - 9419 940D 93F5 9400 93F7 9407 940E 9416 - 9412 93FA 9409 93F8 940A 93FF -End of Item 00B0 - -Begin of Item 00B1 - Format 1 - srcBegin = F540 - srcEnd = F57E - mappingOffset = 310B - Mapping = - 93FC 940C 93F6 9411 9406 95DE 95E0 95DF - 972E 972F 97B9 97BB 97FD 97FE 9860 9862 - 9863 985F 98C1 98C2 9950 994E 9959 994C - 994B 9953 9A32 9A34 9A31 9A2C 9A2A 9A36 - 9A29 9A2E 9A38 9A2D 9AC7 9ACA 9AC6 9B10 - 9B12 9B11 9C0B 9C08 9BF7 9C05 9C12 9BF8 - 9C40 9C07 9C0E 9C06 9C17 9C14 9C09 9D9F - 9D99 9DA4 9D9D 9D92 9D98 9D90 9D9B -End of Item 00B1 - -Begin of Item 00B2 - Format 1 - srcBegin = F5A1 - srcEnd = F5FE - mappingOffset = 314A - Mapping = - 9DA0 9D94 9D9C 9DAA 9D97 9DA1 9D9A 9DA2 - 9DA8 9D9E 9DA3 9DBF 9DA9 9D96 9DA6 9DA7 - 9E99 9E9B 9E9A 9EE5 9EE4 9EE7 9EE6 9F30 - 9F2E 9F5B 9F60 9F5E 9F5D 9F59 9F91 513A - 5139 5298 5297 56C3 56BD 56BE 5B48 5B47 - 5DCB 5DCF 5EF1 61FD 651B 6B02 6AFC 6B03 - 6AF8 6B00 7043 7044 704A 7048 7049 7045 - 7046 721D 721A 7219 737E 7517 766A 77D0 - 792D 7931 792F 7C54 7C53 7CF2 7E8A 7E87 - 7E88 7E8B 7E86 7E8D 7F4D 7FBB 8030 81DD - 8618 862A 8626 861F 8623 861C 8619 8627 - 862E 8621 8620 8629 861E 8625 -End of Item 00B2 - -Begin of Item 00B3 - Format 1 - srcBegin = F640 - srcEnd = F67E - mappingOffset = 31A8 - Mapping = - 8829 881D 881B 8820 8824 881C 882B 884A - 896D 8969 896E 896B 89FA 8B79 8B78 8B45 - 8B7A 8B7B 8D10 8D14 8DAF 8E8E 8E8C 8F5E - 8F5B 8F5D 9146 9144 9145 91B9 943F 943B - 9436 9429 943D 943C 9430 9439 942A 9437 - 942C 9440 9431 95E5 95E4 95E3 9735 973A - 97BF 97E1 9864 98C9 98C6 98C0 9958 9956 - 9A39 9A3D 9A46 9A44 9A42 9A41 9A3A -End of Item 00B3 - -Begin of Item 00B4 - Format 1 - srcBegin = F6A1 - srcEnd = F6FE - mappingOffset = 31E7 - Mapping = - 9A3F 9ACD 9B15 9B17 9B18 9B16 9B3A 9B52 - 9C2B 9C1D 9C1C 9C2C 9C23 9C28 9C29 9C24 - 9C21 9DB7 9DB6 9DBC 9DC1 9DC7 9DCA 9DCF - 9DBE 9DC5 9DC3 9DBB 9DB5 9DCE 9DB9 9DBA - 9DAC 9DC8 9DB1 9DAD 9DCC 9DB3 9DCD 9DB2 - 9E7A 9E9C 9EEB 9EEE 9EED 9F1B 9F18 9F1A - 9F31 9F4E 9F65 9F64 9F92 4EB9 56C6 56C5 - 56CB 5971 5B4B 5B4C 5DD5 5DD1 5EF2 6521 - 6520 6526 6522 6B0B 6B08 6B09 6C0D 7055 - 7056 7057 7052 721E 721F 72A9 737F 74D8 - 74D5 74D9 74D7 766D 76AD 7935 79B4 7A70 - 7A71 7C57 7C5C 7C59 7C5B 7C5A -End of Item 00B4 - -Begin of Item 00B5 - Format 1 - srcBegin = F740 - srcEnd = F77E - mappingOffset = 3245 - Mapping = - 7CF4 7CF1 7E91 7F4F 7F87 81DE 826B 8634 - 8635 8633 862C 8632 8636 882C 8828 8826 - 882A 8825 8971 89BF 89BE 89FB 8B7E 8B84 - 8B82 8B86 8B85 8B7F 8D15 8E95 8E94 8E9A - 8E92 8E90 8E96 8E97 8F60 8F62 9147 944C - 9450 944A 944B 944F 9447 9445 9448 9449 - 9446 973F 97E3 986A 9869 98CB 9954 995B - 9A4E 9A53 9A54 9A4C 9A4F 9A48 9A4A -End of Item 00B5 - -Begin of Item 00B6 - Format 1 - srcBegin = F7A1 - srcEnd = F7FE - mappingOffset = 3284 - Mapping = - 9A49 9A52 9A50 9AD0 9B19 9B2B 9B3B 9B56 - 9B55 9C46 9C48 9C3F 9C44 9C39 9C33 9C41 - 9C3C 9C37 9C34 9C32 9C3D 9C36 9DDB 9DD2 - 9DDE 9DDA 9DCB 9DD0 9DDC 9DD1 9DDF 9DE9 - 9DD9 9DD8 9DD6 9DF5 9DD5 9DDD 9EB6 9EF0 - 9F35 9F33 9F32 9F42 9F6B 9F95 9FA2 513D - 5299 58E8 58E7 5972 5B4D 5DD8 882F 5F4F - 6201 6203 6204 6529 6525 6596 66EB 6B11 - 6B12 6B0F 6BCA 705B 705A 7222 7382 7381 - 7383 7670 77D4 7C67 7C66 7E95 826C 863A - 8640 8639 863C 8631 863B 863E 8830 8832 - 882E 8833 8976 8974 8973 89FE -End of Item 00B6 - -Begin of Item 00B7 - Format 1 - srcBegin = F840 - srcEnd = F87E - mappingOffset = 32E2 - Mapping = - 8B8C 8B8E 8B8B 8B88 8C45 8D19 8E98 8F64 - 8F63 91BC 9462 9455 945D 9457 945E 97C4 - 97C5 9800 9A56 9A59 9B1E 9B1F 9B20 9C52 - 9C58 9C50 9C4A 9C4D 9C4B 9C55 9C59 9C4C - 9C4E 9DFB 9DF7 9DEF 9DE3 9DEB 9DF8 9DE4 - 9DF6 9DE1 9DEE 9DE6 9DF2 9DF0 9DE2 9DEC - 9DF4 9DF3 9DE8 9DED 9EC2 9ED0 9EF2 9EF3 - 9F06 9F1C 9F38 9F37 9F36 9F43 9F4F -End of Item 00B7 - -Begin of Item 00B8 - Format 1 - srcBegin = F8A1 - srcEnd = F8FE - mappingOffset = 3321 - Mapping = - 9F71 9F70 9F6E 9F6F 56D3 56CD 5B4E 5C6D - 652D 66ED 66EE 6B13 705F 7061 705D 7060 - 7223 74DB 74E5 77D5 7938 79B7 79B6 7C6A - 7E97 7F89 826D 8643 8838 8837 8835 884B - 8B94 8B95 8E9E 8E9F 8EA0 8E9D 91BE 91BD - 91C2 946B 9468 9469 96E5 9746 9743 9747 - 97C7 97E5 9A5E 9AD5 9B59 9C63 9C67 9C66 - 9C62 9C5E 9C60 9E02 9DFE 9E07 9E03 9E06 - 9E05 9E00 9E01 9E09 9DFF 9DFD 9E04 9EA0 - 9F1E 9F46 9F74 9F75 9F76 56D4 652E 65B8 - 6B18 6B19 6B17 6B1A 7062 7226 72AA 77D8 - 77D9 7939 7C69 7C6B 7CF6 7E9A -End of Item 00B8 - -Begin of Item 00B9 - Format 1 - srcBegin = F940 - srcEnd = F97E - mappingOffset = 337F - Mapping = - 7E98 7E9B 7E99 81E0 81E1 8646 8647 8648 - 8979 897A 897C 897B 89FF 8B98 8B99 8EA5 - 8EA4 8EA3 946E 946D 946F 9471 9473 9749 - 9872 995F 9C68 9C6E 9C6D 9E0B 9E0D 9E10 - 9E0F 9E12 9E11 9EA1 9EF5 9F09 9F47 9F78 - 9F7B 9F7A 9F79 571E 7066 7C6F 883C 8DB2 - 8EA6 91C3 9474 9478 9476 9475 9A60 9C74 - 9C73 9C71 9C75 9E14 9E13 9EF6 9F0A -End of Item 00B9 - -Begin of Item 00BA - Format 1 - srcBegin = F9A1 - srcEnd = F9FE - mappingOffset = 33BE - Mapping = - 9FA4 7068 7065 7CF7 866A 883E 883D 883F - 8B9E 8C9C 8EA9 8EC9 974B 9873 9874 98CC - 9961 99AB 9A64 9A66 9A67 9B24 9E15 9E17 - 9F48 6207 6B1E 7227 864C 8EA8 9482 9480 - 9481 9A69 9A68 9B2E 9E19 7229 864B 8B9F - 9483 9C79 9EB7 7675 9A6B 9C7A 9E1D 7069 - 706A 9EA4 9F7E 9F49 9F98 7881 92B9 88CF - 58BB 6052 7CA7 5AFA 2554 2566 2557 2560 - 256C 2563 255A 2569 255D 2552 2564 2555 - 255E 256A 2561 2558 2567 255B 2553 2565 - 2556 255F 256B 2562 2559 2568 255C 2551 - 2550 256D 256E 2570 256F 2593 -End of Item 00BA - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x00BB, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0033, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0264, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x000D */ -/* Total of Format 1 : 0x00AE */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x1110, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x0111, -/*-------------------------------------------------------*/ -/* Offset=0x0033 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0xA262, 0xA269, 0x2581, -/* 0002 */ 0xA2AF, 0xA2B8, 0xFF10, -/* 0003 */ 0xA2B9, 0xA2C2, 0x2160, -/* 0004 */ 0xA2C3, 0xA2CB, 0x3021, -/* 0005 */ 0xA2CF, 0xA2E8, 0xFF21, -/* 0006 */ 0xA2E9, 0xA2FE, 0xFF41, -/* 0007 */ 0xA344, 0xA354, 0x0391, -/* 0008 */ 0xA355, 0xA35B, 0x03A3, -/* 0009 */ 0xA35C, 0xA36C, 0x03B1, -/* 000A */ 0xA36D, 0xA373, 0x03C3, -/* 000B */ 0xA374, 0xA37E, 0x3105, -/* 000C */ 0xA3A1, 0xA3BA, 0x3110, -/* 000D */ 0xA140, 0xA17E, 0x0000, -/* 000E */ 0xA1A1, 0xA1FE, 0x003F, -/* 000F */ 0xA240, 0xA27E, 0x009D, -/* 0010 */ 0xA2A1, 0xA2AE, 0x00DC, -/* 0011 */ 0xA2CC, 0xA2CE, 0x00EA, -/* 0012 */ 0xA340, 0xA343, 0x00ED, -/* 0013 */ 0xA3BB, 0xA3BF, 0x00F1, -/* 0014 */ 0xA440, 0xA47E, 0x00F6, -/* 0015 */ 0xA4A1, 0xA4FE, 0x0135, -/* 0016 */ 0xA540, 0xA57E, 0x0193, -/* 0017 */ 0xA5A1, 0xA5FE, 0x01D2, -/* 0018 */ 0xA640, 0xA67E, 0x0230, -/* 0019 */ 0xA6A1, 0xA6FE, 0x026F, -/* 001A */ 0xA740, 0xA77E, 0x02CD, -/* 001B */ 0xA7A1, 0xA7FE, 0x030C, -/* 001C */ 0xA840, 0xA87E, 0x036A, -/* 001D */ 0xA8A1, 0xA8FE, 0x03A9, -/* 001E */ 0xA940, 0xA97E, 0x0407, -/* 001F */ 0xA9A1, 0xA9FE, 0x0446, -/* 0020 */ 0xAA40, 0xAA7E, 0x04A4, -/* 0021 */ 0xAAA1, 0xAAFE, 0x04E3, -/* 0022 */ 0xAB40, 0xAB7E, 0x0541, -/* 0023 */ 0xABA1, 0xABFE, 0x0580, -/* 0024 */ 0xAC40, 0xAC7E, 0x05DE, -/* 0025 */ 0xACA1, 0xACFE, 0x061D, -/* 0026 */ 0xAD40, 0xAD7E, 0x067B, -/* 0027 */ 0xADA1, 0xADFE, 0x06BA, -/* 0028 */ 0xAE40, 0xAE7E, 0x0718, -/* 0029 */ 0xAEA1, 0xAEFE, 0x0757, -/* 002A */ 0xAF40, 0xAF7E, 0x07B5, -/* 002B */ 0xAFA1, 0xAFFE, 0x07F4, -/* 002C */ 0xB040, 0xB07E, 0x0852, -/* 002D */ 0xB0A1, 0xB0FE, 0x0891, -/* 002E */ 0xB140, 0xB17E, 0x08EF, -/* 002F */ 0xB1A1, 0xB1FE, 0x092E, -/* 0030 */ 0xB240, 0xB27E, 0x098C, -/* 0031 */ 0xB2A1, 0xB2FE, 0x09CB, -/* 0032 */ 0xB340, 0xB37E, 0x0A29, -/* 0033 */ 0xB3A1, 0xB3FE, 0x0A68, -/* 0034 */ 0xB440, 0xB47E, 0x0AC6, -/* 0035 */ 0xB4A1, 0xB4FE, 0x0B05, -/* 0036 */ 0xB540, 0xB57E, 0x0B63, -/* 0037 */ 0xB5A1, 0xB5FE, 0x0BA2, -/* 0038 */ 0xB640, 0xB67E, 0x0C00, -/* 0039 */ 0xB6A1, 0xB6FE, 0x0C3F, -/* 003A */ 0xB740, 0xB77E, 0x0C9D, -/* 003B */ 0xB7A1, 0xB7FE, 0x0CDC, -/* 003C */ 0xB840, 0xB87E, 0x0D3A, -/* 003D */ 0xB8A1, 0xB8FE, 0x0D79, -/* 003E */ 0xB940, 0xB97E, 0x0DD7, -/* 003F */ 0xB9A1, 0xB9FE, 0x0E16, -/* 0040 */ 0xBA40, 0xBA7E, 0x0E74, -/* 0041 */ 0xBAA1, 0xBAFE, 0x0EB3, -/* 0042 */ 0xBB40, 0xBB7E, 0x0F11, -/* 0043 */ 0xBBA1, 0xBBFE, 0x0F50, -/* 0044 */ 0xBC40, 0xBC7E, 0x0FAE, -/* 0045 */ 0xBCA1, 0xBCFE, 0x0FED, -/* 0046 */ 0xBD40, 0xBD7E, 0x104B, -/* 0047 */ 0xBDA1, 0xBDFE, 0x108A, -/* 0048 */ 0xBE40, 0xBE7E, 0x10E8, -/* 0049 */ 0xBEA1, 0xBEFE, 0x1127, -/* 004A */ 0xBF40, 0xBF7E, 0x1185, -/* 004B */ 0xBFA1, 0xBFFE, 0x11C4, -/* 004C */ 0xC040, 0xC07E, 0x1222, -/* 004D */ 0xC0A1, 0xC0FE, 0x1261, -/* 004E */ 0xC140, 0xC17E, 0x12BF, -/* 004F */ 0xC1A1, 0xC1FE, 0x12FE, -/* 0050 */ 0xC240, 0xC27E, 0x135C, -/* 0051 */ 0xC2A1, 0xC2FE, 0x139B, -/* 0052 */ 0xC340, 0xC37E, 0x13F9, -/* 0053 */ 0xC3A1, 0xC3FE, 0x1438, -/* 0054 */ 0xC440, 0xC47E, 0x1496, -/* 0055 */ 0xC4A1, 0xC4FE, 0x14D5, -/* 0056 */ 0xC540, 0xC57E, 0x1533, -/* 0057 */ 0xC5A1, 0xC5FE, 0x1572, -/* 0058 */ 0xC640, 0xC67E, 0x15D0, -/* 0059 */ 0xC940, 0xC97E, 0x160F, -/* 005A */ 0xC9A1, 0xC9FE, 0x164E, -/* 005B */ 0xCA40, 0xCA7E, 0x16AC, -/* 005C */ 0xCAA1, 0xCAFE, 0x16EB, -/* 005D */ 0xCB40, 0xCB7E, 0x1749, -/* 005E */ 0xCBA1, 0xCBFE, 0x1788, -/* 005F */ 0xCC40, 0xCC7E, 0x17E6, -/* 0060 */ 0xCCA1, 0xCCFE, 0x1825, -/* 0061 */ 0xCD40, 0xCD7E, 0x1883, -/* 0062 */ 0xCDA1, 0xCDFE, 0x18C2, -/* 0063 */ 0xCE40, 0xCE7E, 0x1920, -/* 0064 */ 0xCEA1, 0xCEFE, 0x195F, -/* 0065 */ 0xCF40, 0xCF7E, 0x19BD, -/* 0066 */ 0xCFA1, 0xCFFE, 0x19FC, -/* 0067 */ 0xD040, 0xD07E, 0x1A5A, -/* 0068 */ 0xD0A1, 0xD0FE, 0x1A99, -/* 0069 */ 0xD140, 0xD17E, 0x1AF7, -/* 006A */ 0xD1A1, 0xD1FE, 0x1B36, -/* 006B */ 0xD240, 0xD27E, 0x1B94, -/* 006C */ 0xD2A1, 0xD2FE, 0x1BD3, -/* 006D */ 0xD340, 0xD37E, 0x1C31, -/* 006E */ 0xD3A1, 0xD3FE, 0x1C70, -/* 006F */ 0xD440, 0xD47E, 0x1CCE, -/* 0070 */ 0xD4A1, 0xD4FE, 0x1D0D, -/* 0071 */ 0xD540, 0xD57E, 0x1D6B, -/* 0072 */ 0xD5A1, 0xD5FE, 0x1DAA, -/* 0073 */ 0xD640, 0xD67E, 0x1E08, -/* 0074 */ 0xD6A1, 0xD6FE, 0x1E47, -/* 0075 */ 0xD740, 0xD77E, 0x1EA5, -/* 0076 */ 0xD7A1, 0xD7FE, 0x1EE4, -/* 0077 */ 0xD840, 0xD87E, 0x1F42, -/* 0078 */ 0xD8A1, 0xD8FE, 0x1F81, -/* 0079 */ 0xD940, 0xD97E, 0x1FDF, -/* 007A */ 0xD9A1, 0xD9FE, 0x201E, -/* 007B */ 0xDA40, 0xDA7E, 0x207C, -/* 007C */ 0xDAA1, 0xDAFE, 0x20BB, -/* 007D */ 0xDB40, 0xDB7E, 0x2119, -/* 007E */ 0xDBA1, 0xDBFE, 0x2158, -/* 007F */ 0xDC40, 0xDC7E, 0x21B6, -/* 0080 */ 0xDCA1, 0xDCFE, 0x21F5, -/* 0081 */ 0xDD40, 0xDD7E, 0x2253, -/* 0082 */ 0xDDA1, 0xDDFE, 0x2292, -/* 0083 */ 0xDE40, 0xDE7E, 0x22F0, -/* 0084 */ 0xDEA1, 0xDEFE, 0x232F, -/* 0085 */ 0xDF40, 0xDF7E, 0x238D, -/* 0086 */ 0xDFA1, 0xDFFE, 0x23CC, -/* 0087 */ 0xE040, 0xE07E, 0x242A, -/* 0088 */ 0xE0A1, 0xE0FE, 0x2469, -/* 0089 */ 0xE140, 0xE17E, 0x24C7, -/* 008A */ 0xE1A1, 0xE1FE, 0x2506, -/* 008B */ 0xE240, 0xE27E, 0x2564, -/* 008C */ 0xE2A1, 0xE2FE, 0x25A3, -/* 008D */ 0xE340, 0xE37E, 0x2601, -/* 008E */ 0xE3A1, 0xE3FE, 0x2640, -/* 008F */ 0xE440, 0xE47E, 0x269E, -/* 0090 */ 0xE4A1, 0xE4FE, 0x26DD, -/* 0091 */ 0xE540, 0xE57E, 0x273B, -/* 0092 */ 0xE5A1, 0xE5FE, 0x277A, -/* 0093 */ 0xE640, 0xE67E, 0x27D8, -/* 0094 */ 0xE6A1, 0xE6FE, 0x2817, -/* 0095 */ 0xE740, 0xE77E, 0x2875, -/* 0096 */ 0xE7A1, 0xE7FE, 0x28B4, -/* 0097 */ 0xE840, 0xE87E, 0x2912, -/* 0098 */ 0xE8A1, 0xE8FE, 0x2951, -/* 0099 */ 0xE940, 0xE97E, 0x29AF, -/* 009A */ 0xE9A1, 0xE9FE, 0x29EE, -/* 009B */ 0xEA40, 0xEA7E, 0x2A4C, -/* 009C */ 0xEAA1, 0xEAFE, 0x2A8B, -/* 009D */ 0xEB40, 0xEB7E, 0x2AE9, -/* 009E */ 0xEBA1, 0xEBFE, 0x2B28, -/* 009F */ 0xEC40, 0xEC7E, 0x2B86, -/* 00A0 */ 0xECA1, 0xECFE, 0x2BC5, -/* 00A1 */ 0xED40, 0xED7E, 0x2C23, -/* 00A2 */ 0xEDA1, 0xEDFE, 0x2C62, -/* 00A3 */ 0xEE40, 0xEE7E, 0x2CC0, -/* 00A4 */ 0xEEA1, 0xEEFE, 0x2CFF, -/* 00A5 */ 0xEF40, 0xEF7E, 0x2D5D, -/* 00A6 */ 0xEFA1, 0xEFFE, 0x2D9C, -/* 00A7 */ 0xF040, 0xF07E, 0x2DFA, -/* 00A8 */ 0xF0A1, 0xF0FE, 0x2E39, -/* 00A9 */ 0xF140, 0xF17E, 0x2E97, -/* 00AA */ 0xF1A1, 0xF1FE, 0x2ED6, -/* 00AB */ 0xF240, 0xF27E, 0x2F34, -/* 00AC */ 0xF2A1, 0xF2FE, 0x2F73, -/* 00AD */ 0xF340, 0xF37E, 0x2FD1, -/* 00AE */ 0xF3A1, 0xF3FE, 0x3010, -/* 00AF */ 0xF440, 0xF47E, 0x306E, -/* 00B0 */ 0xF4A1, 0xF4FE, 0x30AD, -/* 00B1 */ 0xF540, 0xF57E, 0x310B, -/* 00B2 */ 0xF5A1, 0xF5FE, 0x314A, -/* 00B3 */ 0xF640, 0xF67E, 0x31A8, -/* 00B4 */ 0xF6A1, 0xF6FE, 0x31E7, -/* 00B5 */ 0xF740, 0xF77E, 0x3245, -/* 00B6 */ 0xF7A1, 0xF7FE, 0x3284, -/* 00B7 */ 0xF840, 0xF87E, 0x32E2, -/* 00B8 */ 0xF8A1, 0xF8FE, 0x3321, -/* 00B9 */ 0xF940, 0xF97E, 0x337F, -/* 00BA */ 0xF9A1, 0xF9FE, 0x33BE, -/*-------------------------------------------------------*/ -/* Offset=0x0264 Start of MappingTable */ - -/* 0000 */ 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2027, 0xFF1B, 0xFF1A, -/* 0008 */ 0xFF1F, 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFE51, 0xFE52, -/* 0010 */ 0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31, -/* 0018 */ 0x2014, 0xFE33, 0x2574, 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35, -/* 0020 */ 0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39, -/* 0028 */ 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D, -/* 0030 */ 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, 0x300D, 0xFE41, -/* 0038 */ 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A, 0xFE5B, -/* 0040 */ 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 0x201D, 0x301D, -/* 0048 */ 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A, 0x203B, 0x00A7, -/* 0050 */ 0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 0x2606, 0x2605, -/* 0058 */ 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC, 0x32A3, 0x2105, -/* 0060 */ 0x00AF, 0xFFE3, 0xFF3F, 0x02CD, 0xFE49, 0xFE4A, 0xFE4D, 0xFE4E, -/* 0068 */ 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B, 0xFF0D, 0x00D7, -/* 0070 */ 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D, 0x2266, 0x2267, -/* 0078 */ 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, 0xFE64, 0xFE65, -/* 0080 */ 0xFE66, 0xFF5E, 0x2229, 0x222A, 0x22A5, 0x2220, 0x221F, 0x22BF, -/* 0088 */ 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 0x2640, 0x2642, -/* 0090 */ 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197, -/* 0098 */ 0x2199, 0x2198, 0x2225, 0x2223, 0xFF0F, 0xFF3C, 0x2215, 0xFE68, -/* 00A0 */ 0xFF04, 0xFFE5, 0x3012, 0xFFE0, 0xFFE1, 0xFF05, 0xFF20, 0x2103, -/* 00A8 */ 0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5, 0x339C, 0x339D, 0x339E, -/* 00B0 */ 0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4, 0x00B0, 0x5159, 0x515B, -/* 00B8 */ 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7, 0x74E9, 0x7CCE, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x258F, -/* 00C8 */ 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, 0x2589, 0x253C, 0x2534, -/* 00D0 */ 0x252C, 0x2524, 0x251C, 0x2594, 0x2500, 0x2502, 0x2595, 0x250C, -/* 00D8 */ 0x2510, 0x2514, 0x2518, 0x256D, 0x256E, 0x2570, 0x256F, 0x2550, -/* 00E0 */ 0x255E, 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571, -/* 00E8 */ 0x2572, 0x2573, 0x5341, 0x5344, 0x5345, 0xFF57, 0xFF58, 0xFF59, -/* 00F0 */ 0xFF5A, 0x02D9, 0x02C9, 0x02CA, 0x02C7, 0x02CB, 0x4E00, 0x4E59, -/* 00F8 */ 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C, 0x4EBA, 0x513F, -/* 0100 */ 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B, 0x5315, 0x5341, -/* 0108 */ 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A, 0x4E2B, 0x4E38, -/* 0110 */ 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E, 0x4EA1, 0x5140, -/* 0118 */ 0x5203, 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F, 0x58EB, 0x5915, -/* 0120 */ 0x5927, 0x5973, 0x5B50, 0x5B51, 0x5B53, 0x5BF8, 0x5C0F, 0x5C22, -/* 0128 */ 0x5C38, 0x5C71, 0x5DDD, 0x5DE5, 0x5DF1, 0x5DF2, 0x5DF3, 0x5DFE, -/* 0130 */ 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, 0x624D, 0x4E11, 0x4E10, 0x4E0D, -/* 0138 */ 0x4E2D, 0x4E30, 0x4E39, 0x4E4B, 0x5C39, 0x4E88, 0x4E91, 0x4E95, -/* 0140 */ 0x4E92, 0x4E94, 0x4EA2, 0x4EC1, 0x4EC0, 0x4EC3, 0x4EC6, 0x4EC7, -/* 0148 */ 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4, 0x5143, 0x5141, 0x5167, 0x516D, -/* 0150 */ 0x516E, 0x516C, 0x5197, 0x51F6, 0x5206, 0x5207, 0x5208, 0x52FB, -/* 0158 */ 0x52FE, 0x52FF, 0x5316, 0x5339, 0x5348, 0x5347, 0x5345, 0x535E, -/* 0160 */ 0x5384, 0x53CB, 0x53CA, 0x53CD, 0x58EC, 0x5929, 0x592B, 0x592A, -/* 0168 */ 0x592D, 0x5B54, 0x5C11, 0x5C24, 0x5C3A, 0x5C6F, 0x5DF4, 0x5E7B, -/* 0170 */ 0x5EFF, 0x5F14, 0x5F15, 0x5FC3, 0x6208, 0x6236, 0x624B, 0x624E, -/* 0178 */ 0x652F, 0x6587, 0x6597, 0x65A4, 0x65B9, 0x65E5, 0x66F0, 0x6708, -/* 0180 */ 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BCB, 0x6BD4, 0x6BDB, 0x6C0F, -/* 0188 */ 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, 0x7247, 0x7259, 0x725B, -/* 0190 */ 0x72AC, 0x738B, 0x4E19, 0x4E16, 0x4E15, 0x4E14, 0x4E18, 0x4E3B, -/* 0198 */ 0x4E4D, 0x4E4F, 0x4E4E, 0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6, -/* 01A0 */ 0x4ED7, 0x4EE3, 0x4EE4, 0x4ED9, 0x4EDE, 0x5145, 0x5144, 0x5189, -/* 01A8 */ 0x518A, 0x51AC, 0x51F9, 0x51FA, 0x51F8, 0x520A, 0x52A0, 0x529F, -/* 01B0 */ 0x5305, 0x5306, 0x5317, 0x531D, 0x4EDF, 0x534A, 0x5349, 0x5361, -/* 01B8 */ 0x5360, 0x536F, 0x536E, 0x53BB, 0x53EF, 0x53E4, 0x53F3, 0x53EC, -/* 01C0 */ 0x53EE, 0x53E9, 0x53E8, 0x53FC, 0x53F8, 0x53F5, 0x53EB, 0x53E6, -/* 01C8 */ 0x53EA, 0x53F2, 0x53F1, 0x53F0, 0x53E5, 0x53ED, 0x53FB, 0x56DB, -/* 01D0 */ 0x56DA, 0x5916, 0x592E, 0x5931, 0x5974, 0x5976, 0x5B55, 0x5B83, -/* 01D8 */ 0x5C3C, 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73, 0x5E7C, -/* 01E0 */ 0x5F01, 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, 0x6252, -/* 01E8 */ 0x6251, 0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, 0x672D, -/* 01F0 */ 0x6B63, 0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, 0x6C3E, -/* 01F8 */ 0x72AF, 0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, 0x7528, -/* 0200 */ 0x7529, 0x7530, 0x7531, 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, -/* 0208 */ 0x76BF, 0x76EE, 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE, 0x7A74, -/* 0210 */ 0x7ACB, 0x4E1E, 0x4E1F, 0x4E52, 0x4E53, 0x4E69, 0x4E99, 0x4EA4, -/* 0218 */ 0x4EA6, 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, 0x4F15, 0x4F0D, -/* 0220 */ 0x4F10, 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, 0x4EF3, -/* 0228 */ 0x4EFD, 0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, -/* 0230 */ 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, 0x5216, -/* 0238 */ 0x52A3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F, -/* 0240 */ 0x540C, 0x540A, 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D, -/* 0248 */ 0x5408, 0x5403, 0x540E, 0x5406, 0x5412, 0x56E0, 0x56DE, 0x56DD, -/* 0250 */ 0x5733, 0x5730, 0x5728, 0x572D, 0x572C, 0x572F, 0x5729, 0x5919, -/* 0258 */ 0x591A, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597D, 0x5979, -/* 0260 */ 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88, 0x5B85, 0x5B89, -/* 0268 */ 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74, 0x5F0F, -/* 0270 */ 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 0x6210, 0x6263, -/* 0278 */ 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, 0x65ED, 0x66F2, -/* 0280 */ 0x66F3, 0x6709, 0x673D, 0x6734, 0x6731, 0x6735, 0x6B21, 0x6B64, -/* 0288 */ 0x6B7B, 0x6C16, 0x6C5D, 0x6C57, 0x6C59, 0x6C5F, 0x6C60, 0x6C50, -/* 0290 */ 0x6C55, 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, 0x7070, 0x725F, 0x725D, -/* 0298 */ 0x767E, 0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A, 0x7FBD, 0x8001, -/* 02A0 */ 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, 0x8089, 0x808B, 0x808C, -/* 02A8 */ 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, 0x821F, 0x826E, -/* 02B0 */ 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 0x897F, 0x9621, -/* 02B8 */ 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 0x4F5E, 0x4F34, -/* 02C0 */ 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D, 0x4F3A, 0x4F38, -/* 02C8 */ 0x4F43, 0x4F54, 0x4F3C, 0x4F46, 0x4F63, 0x4F5C, 0x4F60, 0x4F2F, -/* 02D0 */ 0x4F4E, 0x4F36, 0x4F59, 0x4F5D, 0x4F48, 0x4F5A, 0x514C, 0x514B, -/* 02D8 */ 0x514D, 0x5175, 0x51B6, 0x51B7, 0x5225, 0x5224, 0x5229, 0x522A, -/* 02E0 */ 0x5228, 0x52AB, 0x52A9, 0x52AA, 0x52AC, 0x5323, 0x5373, 0x5375, -/* 02E8 */ 0x541D, 0x542D, 0x541E, 0x543E, 0x5426, 0x544E, 0x5427, 0x5446, -/* 02F0 */ 0x5443, 0x5433, 0x5448, 0x5442, 0x541B, 0x5429, 0x544A, 0x5439, -/* 02F8 */ 0x543B, 0x5438, 0x542E, 0x5435, 0x5436, 0x5420, 0x543C, 0x5440, -/* 0300 */ 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA, 0x56F0, 0x56E4, 0x56EB, -/* 0308 */ 0x574A, 0x5751, 0x5740, 0x574D, 0x5747, 0x574E, 0x573E, 0x5750, -/* 0310 */ 0x574F, 0x573B, 0x58EF, 0x593E, 0x599D, 0x5992, 0x59A8, 0x599E, -/* 0318 */ 0x59A3, 0x5999, 0x5996, 0x598D, 0x59A4, 0x5993, 0x598A, 0x59A5, -/* 0320 */ 0x5B5D, 0x5B5C, 0x5B5A, 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C, -/* 0328 */ 0x5C40, 0x5C41, 0x5C3F, 0x5C3E, 0x5C90, 0x5C91, 0x5C94, 0x5C8C, -/* 0330 */ 0x5DEB, 0x5E0C, 0x5E8F, 0x5E87, 0x5E8A, 0x5EF7, 0x5F04, 0x5F1F, -/* 0338 */ 0x5F64, 0x5F62, 0x5F77, 0x5F79, 0x5FD8, 0x5FCC, 0x5FD7, 0x5FCD, -/* 0340 */ 0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA, 0x6212, 0x6211, 0x6284, 0x6297, -/* 0348 */ 0x6296, 0x6280, 0x6276, 0x6289, 0x626D, 0x628A, 0x627C, 0x627E, -/* 0350 */ 0x6279, 0x6273, 0x6292, 0x626F, 0x6298, 0x626E, 0x6295, 0x6293, -/* 0358 */ 0x6291, 0x6286, 0x6539, 0x653B, 0x6538, 0x65F1, 0x66F4, 0x675F, -/* 0360 */ 0x674E, 0x674F, 0x6750, 0x6751, 0x675C, 0x6756, 0x675E, 0x6749, -/* 0368 */ 0x6746, 0x6760, 0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E, -/* 0370 */ 0x6C99, 0x6C81, 0x6C88, 0x6C89, 0x6C85, 0x6C9B, 0x6C6A, 0x6C7A, -/* 0378 */ 0x6C90, 0x6C70, 0x6C8C, 0x6C68, 0x6C96, 0x6C92, 0x6C7D, 0x6C83, -/* 0380 */ 0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76, 0x6C8D, 0x6C94, 0x6C98, -/* 0388 */ 0x6C82, 0x7076, 0x707C, 0x707D, 0x7078, 0x7262, 0x7261, 0x7260, -/* 0390 */ 0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, 0x7537, 0x7538, 0x7682, -/* 0398 */ 0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55, -/* 03A0 */ 0x8096, 0x8093, 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F, -/* 03A8 */ 0x8292, 0x828B, 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37, 0x8C46, -/* 03B0 */ 0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, 0x8F9B, -/* 03B8 */ 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, 0x5DE1, 0x9091, 0x90A2, -/* 03C0 */ 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, 0x91CC, 0x9632, 0x962E, -/* 03C8 */ 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, 0x4E8B, 0x4E9B, -/* 03D0 */ 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, 0x4F7F, -/* 03D8 */ 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, 0x4F88, -/* 03E0 */ 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, 0x5154, -/* 03E8 */ 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, 0x51FD, -/* 03F0 */ 0x523B, 0x5238, 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, 0x5241, -/* 03F8 */ 0x52BE, 0x52BB, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, -/* 0400 */ 0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7, 0x5473, 0x5475, 0x5496, -/* 0408 */ 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492, 0x5486, -/* 0410 */ 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462, 0x5468, -/* 0418 */ 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A, 0x5769, -/* 0420 */ 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947, 0x5948, -/* 0428 */ 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE, 0x59D1, -/* 0430 */ 0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF, 0x59B3, -/* 0438 */ 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A, 0x5B98, -/* 0440 */ 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45, 0x5C46, 0x5CB7, -/* 0448 */ 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1, 0x5CB3, 0x5E18, 0x5E1A, -/* 0450 */ 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78, 0x5E9A, 0x5E97, 0x5E9C, -/* 0458 */ 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, 0x5F29, 0x5F80, 0x5F81, -/* 0460 */ 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, 0x5FF5, 0x5FFF, 0x600F, -/* 0468 */ 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, 0x6015, 0x6021, 0x6027, -/* 0470 */ 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, 0x623F, 0x623E, 0x6240, -/* 0478 */ 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF, 0x62C2, 0x62B9, 0x62D2, -/* 0480 */ 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB, 0x62C8, 0x62A8, 0x62BD, -/* 0488 */ 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD, 0x62B5, 0x62DA, 0x62B1, -/* 0490 */ 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC, 0x62CE, 0x653E, 0x65A7, -/* 0498 */ 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, 0x6606, 0x6602, 0x660E, -/* 04A0 */ 0x6600, 0x660F, 0x6615, 0x660A, 0x6607, 0x670D, 0x670B, 0x676D, -/* 04A8 */ 0x678B, 0x6795, 0x6771, 0x679C, 0x6773, 0x6777, 0x6787, 0x679D, -/* 04B0 */ 0x6797, 0x676F, 0x6770, 0x677F, 0x6789, 0x677E, 0x6790, 0x6775, -/* 04B8 */ 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, 0x6B23, 0x6B66, 0x6B67, -/* 04C0 */ 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, 0x6CF3, 0x6CB1, 0x6CCC, -/* 04C8 */ 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE, 0x6CBC, 0x6CE2, 0x6CAB, 0x6CD5, -/* 04D0 */ 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9, 0x6CC1, 0x6CAE, 0x6CD7, 0x6CC5, -/* 04D8 */ 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, 0x6CDB, 0x6CCA, 0x6CAC, 0x6CEF, -/* 04E0 */ 0x6CDC, 0x6CD6, 0x6CE0, 0x7095, 0x708E, 0x7092, 0x708A, 0x7099, -/* 04E8 */ 0x722C, 0x722D, 0x7238, 0x7248, 0x7267, 0x7269, 0x72C0, 0x72CE, -/* 04F0 */ 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB, 0x73A5, -/* 04F8 */ 0x753D, 0x759D, 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, 0x76F4, -/* 0500 */ 0x77E5, 0x77FD, 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, 0x7A7A, -/* 0508 */ 0x7A79, 0x7AFA, 0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005, 0x80BA, -/* 0510 */ 0x80A5, 0x80A2, 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4, 0x80AA, -/* 0518 */ 0x80AF, 0x81E5, 0x81FE, 0x820D, 0x82B3, 0x829D, 0x8299, 0x82AD, -/* 0520 */ 0x82BD, 0x829F, 0x82B9, 0x82B1, 0x82AC, 0x82A5, 0x82AF, 0x82B8, -/* 0528 */ 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E, 0x8671, 0x521D, 0x8868, -/* 0530 */ 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5, 0x90B8, 0x90B1, 0x90B6, -/* 0538 */ 0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C, 0x9640, 0x963F, 0x963B, -/* 0540 */ 0x9644, 0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F, 0x4EAD, -/* 0548 */ 0x4EAE, 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1, 0x4FCF, -/* 0550 */ 0x4FDD, 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, 0x4FAE, -/* 0558 */ 0x4FD0, 0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7, 0x5157, -/* 0560 */ 0x5192, 0x5191, 0x51A0, 0x524E, 0x5243, 0x524A, 0x524D, 0x524C, -/* 0568 */ 0x524B, 0x5247, 0x52C7, 0x52C9, 0x52C3, 0x52C1, 0x530D, 0x5357, -/* 0570 */ 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0, 0x54A8, 0x54CE, 0x54C9, -/* 0578 */ 0x54B8, 0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD, 0x54AA, 0x54C1, -/* 0580 */ 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9, 0x54A7, -/* 0588 */ 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2, 0x57CE, -/* 0590 */ 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950, 0x59DC, -/* 0598 */ 0x59D8, 0x59FF, 0x59E3, 0x59E8, 0x5A03, 0x59E5, 0x59EA, 0x59DA, -/* 05A0 */ 0x59E6, 0x5A01, 0x59FB, 0x5B69, 0x5BA3, 0x5BA6, 0x5BA4, 0x5BA2, -/* 05A8 */ 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9, 0x5CD2, -/* 05B0 */ 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, 0x5E7D, 0x5EA0, 0x5EA6, 0x5EFA, -/* 05B8 */ 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, 0x5F8A, 0x5F8B, 0x5F87, -/* 05C0 */ 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, 0x600E, 0x6028, -/* 05C8 */ 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C, 0x606B, -/* 05D0 */ 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC, 0x62ED, -/* 05D8 */ 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, 0x62F7, 0x62EF, 0x62EC, -/* 05E0 */ 0x62FE, 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545, 0x65AB, 0x65BD, -/* 05E8 */ 0x65E2, 0x6625, 0x662D, 0x6620, 0x6627, 0x662F, 0x661F, 0x6628, -/* 05F0 */ 0x6631, 0x6624, 0x66F7, 0x67FF, 0x67D3, 0x67F1, 0x67D4, 0x67D0, -/* 05F8 */ 0x67EC, 0x67B6, 0x67AF, 0x67F5, 0x67E9, 0x67EF, 0x67C4, 0x67D1, -/* 0600 */ 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, 0x67DE, 0x67F3, 0x67B0, -/* 0608 */ 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83, 0x6B86, 0x6BB5, -/* 0610 */ 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, 0x6D32, 0x6D2A, 0x6D41, -/* 0618 */ 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17, 0x6D3B, 0x6D3D, 0x6D3E, -/* 0620 */ 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, 0x6D27, 0x6D38, 0x6D29, 0x6D2E, -/* 0628 */ 0x6D35, 0x6D0E, 0x6D2B, 0x70AB, 0x70BA, 0x70B3, 0x70AC, 0x70AF, -/* 0630 */ 0x70AD, 0x70B8, 0x70AE, 0x70A4, 0x7230, 0x7272, 0x726F, 0x7274, -/* 0638 */ 0x72E9, 0x72E0, 0x72E1, 0x73B7, 0x73CA, 0x73BB, 0x73B2, 0x73CD, -/* 0640 */ 0x73C0, 0x73B3, 0x751A, 0x752D, 0x754F, 0x754C, 0x754E, 0x754B, -/* 0648 */ 0x75AB, 0x75A4, 0x75A5, 0x75A2, 0x75A3, 0x7678, 0x7686, 0x7687, -/* 0650 */ 0x7688, 0x76C8, 0x76C6, 0x76C3, 0x76C5, 0x7701, 0x76F9, 0x76F8, -/* 0658 */ 0x7709, 0x770B, 0x76FE, 0x76FC, 0x7707, 0x77DC, 0x7802, 0x7814, -/* 0660 */ 0x780C, 0x780D, 0x7946, 0x7949, 0x7948, 0x7947, 0x79B9, 0x79BA, -/* 0668 */ 0x79D1, 0x79D2, 0x79CB, 0x7A7F, 0x7A81, 0x7AFF, 0x7AFD, 0x7C7D, -/* 0670 */ 0x7D02, 0x7D05, 0x7D00, 0x7D09, 0x7D07, 0x7D04, 0x7D06, 0x7F38, -/* 0678 */ 0x7F8E, 0x7FBF, 0x8004, 0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, -/* 0680 */ 0x80E5, 0x80DA, 0x80C3, 0x80C4, 0x80CC, 0x80E1, 0x80DB, 0x80CE, -/* 0688 */ 0x80DE, 0x80E4, 0x80DD, 0x81F4, 0x8222, 0x82E7, 0x8303, 0x8305, -/* 0690 */ 0x82E3, 0x82DB, 0x82E6, 0x8304, 0x82E5, 0x8302, 0x8309, 0x82D2, -/* 0698 */ 0x82D7, 0x82F1, 0x8301, 0x82DC, 0x82D4, 0x82D1, 0x82DE, 0x82D3, -/* 06A0 */ 0x82DF, 0x82EF, 0x8306, 0x8650, 0x8679, 0x867B, 0x867A, 0x884D, -/* 06A8 */ 0x886B, 0x8981, 0x89D4, 0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, -/* 06B0 */ 0x8D74, 0x8D73, 0x8DB4, 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, -/* 06B8 */ 0x8FEA, 0x8FE5, 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, -/* 06C0 */ 0x90C1, 0x90C3, 0x914B, 0x914A, 0x91CD, 0x9582, 0x9650, 0x964B, -/* 06C8 */ 0x964C, 0x964D, 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3, 0x9801, -/* 06D0 */ 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3, 0x500C, -/* 06D8 */ 0x500D, 0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029, 0x5016, -/* 06E0 */ 0x5006, 0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, 0x5000, -/* 06E8 */ 0x5014, 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3, -/* 06F0 */ 0x4FEE, 0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, -/* 06F8 */ 0x51A5, 0x51A2, 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, -/* 0700 */ 0x5254, 0x525B, 0x525D, 0x532A, 0x537F, 0x539F, 0x539D, 0x53DF, -/* 0708 */ 0x54E8, 0x5510, 0x5501, 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, -/* 0710 */ 0x54FA, 0x5514, 0x54E9, 0x54ED, 0x54E1, 0x5509, 0x54EE, 0x54EA, -/* 0718 */ 0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, 0x5703, 0x5704, 0x57C2, -/* 0720 */ 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, 0x5958, 0x595A, -/* 0728 */ 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, 0x5A20, -/* 0730 */ 0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0, -/* 0738 */ 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04, -/* 0740 */ 0x5C51, 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8, -/* 0748 */ 0x5CF0, 0x5CF6, 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB, -/* 0750 */ 0x5EAD, 0x5EA7, 0x5F31, 0x5F92, 0x5F91, 0x5F90, 0x6059, 0x6063, -/* 0758 */ 0x6065, 0x6050, 0x6055, 0x606D, 0x6069, 0x606F, 0x6084, 0x609F, -/* 0760 */ 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, 0x6096, 0x6247, 0x62F3, -/* 0768 */ 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355, 0x6342, 0x6346, -/* 0770 */ 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, 0x632A, 0x632B, 0x6328, -/* 0778 */ 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, 0x65C5, 0x6642, -/* 0780 */ 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645, 0x6641, 0x66F8, -/* 0788 */ 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853, -/* 0790 */ 0x6839, 0x6842, 0x6854, 0x6829, 0x68B3, 0x6817, 0x684C, 0x6851, -/* 0798 */ 0x683D, 0x67F4, 0x6850, 0x6840, 0x683C, 0x6843, 0x682A, 0x6845, -/* 07A0 */ 0x6813, 0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7, 0x6C23, 0x6C27, -/* 07A8 */ 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, 0x6D95, 0x6D88, 0x6D87, -/* 07B0 */ 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93, 0x6D6C, 0x6D89, 0x6D6E, -/* 07B8 */ 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 0x6D79, 0x6D85, 0x6D65, -/* 07C0 */ 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9, 0x70C8, 0x70CF, 0x7239, -/* 07C8 */ 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8, 0x72F7, 0x7386, 0x73ED, -/* 07D0 */ 0x7409, 0x73EE, 0x73E0, 0x73EA, 0x73DE, 0x7554, 0x755D, 0x755C, -/* 07D8 */ 0x755A, 0x7559, 0x75BE, 0x75C5, 0x75C7, 0x75B2, 0x75B3, 0x75BD, -/* 07E0 */ 0x75BC, 0x75B9, 0x75C2, 0x75B8, 0x768B, 0x76B0, 0x76CA, 0x76CD, -/* 07E8 */ 0x76CE, 0x7729, 0x771F, 0x7720, 0x7728, 0x77E9, 0x7830, 0x7827, -/* 07F0 */ 0x7838, 0x781D, 0x7834, 0x7837, 0x7825, 0x782D, 0x7820, 0x781F, -/* 07F8 */ 0x7832, 0x7955, 0x7950, 0x7960, 0x795F, 0x7956, 0x795E, 0x795D, -/* 0800 */ 0x7957, 0x795A, 0x79E4, 0x79E3, 0x79E7, 0x79DF, 0x79E6, 0x79E9, -/* 0808 */ 0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21, -/* 0810 */ 0x7D17, 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, -/* 0818 */ 0x7D1A, 0x7D1C, 0x7D0D, 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, -/* 0820 */ 0x7FC5, 0x7FC1, 0x8006, 0x8018, 0x8015, 0x8019, 0x8017, 0x803D, -/* 0828 */ 0x803F, 0x80F1, 0x8102, 0x80F0, 0x8105, 0x80ED, 0x80F4, 0x8106, -/* 0830 */ 0x80F8, 0x80F3, 0x8108, 0x80FD, 0x810A, 0x80FC, 0x80EF, 0x81ED, -/* 0838 */ 0x81EC, 0x8200, 0x8210, 0x822A, 0x822B, 0x8228, 0x822C, 0x82BB, -/* 0840 */ 0x832B, 0x8352, 0x8354, 0x834A, 0x8338, 0x8350, 0x8349, 0x8335, -/* 0848 */ 0x8334, 0x834F, 0x8332, 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, -/* 0850 */ 0x8328, 0x8343, 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, 0x86A9, -/* 0858 */ 0x868C, 0x86A3, 0x869C, 0x8870, 0x8877, 0x8881, 0x8882, 0x887D, -/* 0860 */ 0x8879, 0x8A18, 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, 0x8A17, -/* 0868 */ 0x8A13, 0x8A16, 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, 0x8CA1, -/* 0870 */ 0x8CA2, 0x8D77, 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, 0x9001, -/* 0878 */ 0x9006, 0x8FF7, 0x9000, 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, 0x9005, -/* 0880 */ 0x8FF8, 0x9095, 0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D, 0x914C, -/* 0888 */ 0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662, 0x9663, -/* 0890 */ 0x9661, 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, 0x96BB, 0x98E2, -/* 0898 */ 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E, 0x507A, -/* 08A0 */ 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, 0x5065, -/* 08A8 */ 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, 0x500F, -/* 08B0 */ 0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F, 0x52D2, -/* 08B8 */ 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, 0x5340, -/* 08C0 */ 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544, 0x555E, -/* 08C8 */ 0x5561, 0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555, 0x552F, -/* 08D0 */ 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, 0x5563, 0x5533, 0x5541, -/* 08D8 */ 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, 0x580A, 0x5806, -/* 08E0 */ 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9, 0x5920, -/* 08E8 */ 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40, 0x5A3C, -/* 08F0 */ 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5, 0x5BC4, -/* 08F8 */ 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60, 0x5C5C, -/* 0900 */ 0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22, 0x5D11, -/* 0908 */ 0x5D29, 0x5D14, 0x5D19, 0x5D24, 0x5D27, 0x5D17, 0x5DE2, 0x5E38, -/* 0910 */ 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, 0x5EB6, 0x5EB5, 0x5EBE, -/* 0918 */ 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, 0x5F6B, 0x5F97, 0x5F99, -/* 0920 */ 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, 0x60A3, 0x6089, -/* 0928 */ 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD, 0x60C5, 0x60BB, -/* 0930 */ 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 0x60C6, 0x60DF, 0x60B8, -/* 0938 */ 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, 0x63A0, 0x63A7, 0x6372, -/* 0940 */ 0x6396, 0x63A2, 0x63A5, 0x6377, 0x6367, 0x6398, 0x63AA, 0x6371, -/* 0948 */ 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B, 0x63A8, 0x6384, 0x6388, -/* 0950 */ 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F, 0x6380, 0x637B, 0x6369, -/* 0958 */ 0x6368, 0x637A, 0x655D, 0x6556, 0x6551, 0x6559, 0x6557, 0x555F, -/* 0960 */ 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, 0x659B, 0x65AC, 0x65CF, -/* 0968 */ 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 0x6664, 0x6668, 0x6666, -/* 0970 */ 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 0x68AF, 0x68A2, 0x6893, -/* 0978 */ 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, 0x6897, 0x68B0, 0x6883, -/* 0980 */ 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, 0x689D, 0x68A8, 0x689F, -/* 0988 */ 0x68A1, 0x6882, 0x6B32, 0x6BBA, 0x6BEB, 0x6BEC, 0x6C2B, 0x6D8E, -/* 0990 */ 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2, 0x6DE1, 0x6DCC, 0x6DE4, 0x6DFB, -/* 0998 */ 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB, 0x6DAF, 0x6DD1, 0x6DAE, 0x6DDE, -/* 09A0 */ 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, 0x6DC5, 0x6DD2, 0x6E1A, 0x6DB5, -/* 09A8 */ 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1, 0x6DEE, 0x6DE8, 0x6DC6, -/* 09B0 */ 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, 0x70F9, 0x7109, 0x710A, -/* 09B8 */ 0x70FD, 0x70EF, 0x723D, 0x727D, 0x7281, 0x731C, 0x731B, 0x7316, -/* 09C0 */ 0x7313, 0x7319, 0x7387, 0x7405, 0x740A, 0x7403, 0x7406, 0x73FE, -/* 09C8 */ 0x740D, 0x74E0, 0x74F6, 0x74F7, 0x751C, 0x7522, 0x7565, 0x7566, -/* 09D0 */ 0x7562, 0x7570, 0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA, 0x75CD, -/* 09D8 */ 0x768E, 0x76D4, 0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C, 0x7736, -/* 09E0 */ 0x7738, 0x773A, 0x786B, 0x7843, 0x784E, 0x7965, 0x7968, 0x796D, -/* 09E8 */ 0x79FB, 0x7A92, 0x7A95, 0x7B20, 0x7B28, 0x7B1B, 0x7B2C, 0x7B26, -/* 09F0 */ 0x7B19, 0x7B1E, 0x7B2E, 0x7C92, 0x7C97, 0x7C95, 0x7D46, 0x7D43, -/* 09F8 */ 0x7D71, 0x7D2E, 0x7D39, 0x7D3C, 0x7D40, 0x7D30, 0x7D33, 0x7D44, -/* 0A00 */ 0x7D2F, 0x7D42, 0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A, 0x7FCC, -/* 0A08 */ 0x7FCE, 0x7FD2, 0x801C, 0x804A, 0x8046, 0x812F, 0x8116, 0x8123, -/* 0A10 */ 0x812B, 0x8129, 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, -/* 0A18 */ 0x8239, 0x838E, 0x839E, 0x8398, 0x8378, 0x83A2, 0x8396, 0x83BD, -/* 0A20 */ 0x83AB, 0x8392, 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377, 0x837B, -/* 0A28 */ 0x837C, 0x8386, 0x83A7, 0x8655, 0x5F6A, 0x86C7, 0x86C0, 0x86B6, -/* 0A30 */ 0x86C4, 0x86B5, 0x86C6, 0x86CB, 0x86B1, 0x86AF, 0x86C9, 0x8853, -/* 0A38 */ 0x889E, 0x8888, 0x88AB, 0x8892, 0x8896, 0x888D, 0x888B, 0x8993, -/* 0A40 */ 0x898F, 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31, 0x8A2D, 0x8A1F, -/* 0A48 */ 0x8A1B, 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB, 0x8CA8, -/* 0A50 */ 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA, 0x8EDB, 0x8EDF, -/* 0A58 */ 0x9019, 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D, 0x9010, -/* 0A60 */ 0x9015, 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, 0x9014, -/* 0A68 */ 0x90E8, 0x90ED, 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6, 0x91E3, -/* 0A70 */ 0x91E7, 0x91ED, 0x91E9, 0x9589, 0x966A, 0x9675, 0x9673, 0x9678, -/* 0A78 */ 0x9670, 0x9674, 0x9676, 0x9677, 0x966C, 0x96C0, 0x96EA, 0x96E9, -/* 0A80 */ 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A, 0x9CE5, 0x9E75, 0x9E7F, -/* 0A88 */ 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099, 0x5091, 0x5080, -/* 0A90 */ 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274, 0x5275, -/* 0A98 */ 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B, 0x5580, -/* 0AA0 */ 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C, 0x55AA, -/* 0AA8 */ 0x5594, 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F, 0x553E, -/* 0AB0 */ 0x55B2, 0x559A, 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589, 0x55AB, -/* 0AB8 */ 0x5599, 0x570D, 0x582F, 0x582A, 0x5834, 0x5824, 0x5830, 0x5831, -/* 0AC0 */ 0x5821, 0x581D, 0x5820, 0x58F9, 0x58FA, 0x5960, 0x5A77, 0x5A9A, -/* 0AC8 */ 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, 0x5B71, 0x5BD2, 0x5BCC, -/* 0AD0 */ 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C, 0x5D50, 0x5D34, -/* 0AD8 */ 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43, 0x5E7E, 0x5ECA, -/* 0AE0 */ 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9, 0x5FAA, 0x5FA8, -/* 0AE8 */ 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C, 0x6123, 0x60FA, -/* 0AF0 */ 0x6115, 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1, 0x610E, 0x60F6, -/* 0AF8 */ 0x6109, 0x6100, 0x6112, 0x621F, 0x6249, 0x63A3, 0x638C, 0x63CF, -/* 0B00 */ 0x63C0, 0x63E9, 0x63C9, 0x63C6, 0x63CD, 0x63D2, 0x63E3, 0x63D0, -/* 0B08 */ 0x63E1, 0x63D6, 0x63ED, 0x63EE, 0x6376, 0x63F4, 0x63EA, 0x63DB, -/* 0B10 */ 0x6452, 0x63DA, 0x63F9, 0x655E, 0x6566, 0x6562, 0x6563, 0x6591, -/* 0B18 */ 0x6590, 0x65AF, 0x666E, 0x6670, 0x6674, 0x6676, 0x666F, 0x6691, -/* 0B20 */ 0x667A, 0x667E, 0x6677, 0x66FE, 0x66FF, 0x671F, 0x671D, 0x68FA, -/* 0B28 */ 0x68D5, 0x68E0, 0x68D8, 0x68D7, 0x6905, 0x68DF, 0x68F5, 0x68EE, -/* 0B30 */ 0x68E7, 0x68F9, 0x68D2, 0x68F2, 0x68E3, 0x68CB, 0x68CD, 0x690D, -/* 0B38 */ 0x6912, 0x690E, 0x68C9, 0x68DA, 0x696E, 0x68FB, 0x6B3E, 0x6B3A, -/* 0B40 */ 0x6B3D, 0x6B98, 0x6B96, 0x6BBC, 0x6BEF, 0x6C2E, 0x6C2F, 0x6C2C, -/* 0B48 */ 0x6E2F, 0x6E38, 0x6E54, 0x6E21, 0x6E32, 0x6E67, 0x6E4A, 0x6E20, -/* 0B50 */ 0x6E25, 0x6E23, 0x6E1B, 0x6E5B, 0x6E58, 0x6E24, 0x6E56, 0x6E6E, -/* 0B58 */ 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, 0x6E4D, 0x6E3A, 0x6E2C, 0x6E43, -/* 0B60 */ 0x6E1D, 0x6E3E, 0x6ECB, 0x6E89, 0x6E19, 0x6E4E, 0x6E63, 0x6E44, -/* 0B68 */ 0x6E72, 0x6E69, 0x6E5F, 0x7119, 0x711A, 0x7126, 0x7130, 0x7121, -/* 0B70 */ 0x7136, 0x716E, 0x711C, 0x724C, 0x7284, 0x7280, 0x7336, 0x7325, -/* 0B78 */ 0x7334, 0x7329, 0x743A, 0x742A, 0x7433, 0x7422, 0x7425, 0x7435, -/* 0B80 */ 0x7436, 0x7434, 0x742F, 0x741B, 0x7426, 0x7428, 0x7525, 0x7526, -/* 0B88 */ 0x756B, 0x756A, 0x75E2, 0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE, -/* 0B90 */ 0x75E0, 0x767B, 0x767C, 0x7696, 0x7693, 0x76B4, 0x76DC, 0x774F, -/* 0B98 */ 0x77ED, 0x785D, 0x786C, 0x786F, 0x7A0D, 0x7A08, 0x7A0B, 0x7A05, -/* 0BA0 */ 0x7A00, 0x7A98, 0x7A97, 0x7A96, 0x7AE5, 0x7AE3, 0x7B49, 0x7B56, -/* 0BA8 */ 0x7B46, 0x7B50, 0x7B52, 0x7B54, 0x7B4D, 0x7B4B, 0x7B4F, 0x7B51, -/* 0BB0 */ 0x7C9F, 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B, 0x7D6E, -/* 0BB8 */ 0x7D72, 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, 0x7FD4, -/* 0BC0 */ 0x7FD5, 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151, -/* 0BC8 */ 0x814E, 0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, 0x8212, -/* 0BD0 */ 0x821C, 0x83E9, 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, 0x840B, -/* 0BD8 */ 0x83C1, 0x83EF, 0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, -/* 0BE0 */ 0x83CC, 0x83FD, 0x83F2, 0x83CA, 0x8438, 0x840E, 0x8404, 0x83DC, -/* 0BE8 */ 0x8407, 0x83D4, 0x83DF, 0x865B, 0x86DF, 0x86D9, 0x86ED, 0x86D4, -/* 0BF0 */ 0x86DB, 0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1, 0x88C2, 0x88B1, -/* 0BF8 */ 0x8983, 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, 0x8A41, -/* 0C00 */ 0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56, -/* 0C08 */ 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, 0x8CBB, -/* 0C10 */ 0x8CC0, 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85, -/* 0C18 */ 0x8D81, 0x8DCE, 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB, -/* 0C20 */ 0x8DC6, 0x8EFB, 0x8EF8, 0x8EFC, 0x8F9C, 0x902E, 0x9035, 0x9031, -/* 0C28 */ 0x9038, 0x9032, 0x9036, 0x9102, 0x90F5, 0x9109, 0x90FE, 0x9163, -/* 0C30 */ 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, 0x9209, 0x921E, 0x920D, -/* 0C38 */ 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B, 0x9591, 0x9593, -/* 0C40 */ 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, 0x967D, 0x9685, 0x9686, -/* 0C48 */ 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, 0x96C6, 0x96C7, -/* 0C50 */ 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, 0x98E7, 0x98EA, -/* 0C58 */ 0x98EF, 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD, 0x9EC3, 0x9ECD, -/* 0C60 */ 0x9ED1, 0x4E82, 0x50AD, 0x50B5, 0x50B2, 0x50B3, 0x50C5, 0x50BE, -/* 0C68 */ 0x50AC, 0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F, 0x5277, 0x527D, -/* 0C70 */ 0x52DF, 0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F, 0x55DF, 0x55E8, -/* 0C78 */ 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, 0x55D1, 0x55E3, 0x55E4, -/* 0C80 */ 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5, 0x55C9, 0x5712, -/* 0C88 */ 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 0x5854, 0x586B, -/* 0C90 */ 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, 0x584B, 0x5967, 0x5AC1, -/* 0C98 */ 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC, 0x5AB3, 0x5AC2, 0x5AB2, -/* 0CA0 */ 0x5D69, 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 0x5EC8, 0x5F12, 0x5F59, -/* 0CA8 */ 0x5FAC, 0x5FAE, 0x611A, 0x610F, 0x6148, 0x611F, 0x60F3, 0x611B, -/* 0CB0 */ 0x60F9, 0x6101, 0x6108, 0x614E, 0x614C, 0x6144, 0x614D, 0x613E, -/* 0CB8 */ 0x6134, 0x6127, 0x610D, 0x6106, 0x6137, 0x6221, 0x6222, 0x6413, -/* 0CC0 */ 0x643E, 0x641E, 0x642A, 0x642D, 0x643D, 0x642C, 0x640F, 0x641C, -/* 0CC8 */ 0x6414, 0x640D, 0x6436, 0x6416, 0x6417, 0x6406, 0x656C, 0x659F, -/* 0CD0 */ 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688, 0x6696, 0x6684, 0x6698, -/* 0CD8 */ 0x668D, 0x6703, 0x6994, 0x696D, 0x695A, 0x6977, 0x6960, 0x6954, -/* 0CE0 */ 0x6975, 0x6930, 0x6982, 0x694A, 0x6968, 0x696B, 0x695E, 0x6953, -/* 0CE8 */ 0x6979, 0x6986, 0x695D, 0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0, -/* 0CF0 */ 0x6BBF, 0x6BD3, 0x6BFD, 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2, -/* 0CF8 */ 0x6E90, 0x6E9D, 0x6EC7, 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, 0x6EBA, -/* 0D00 */ 0x6EAB, 0x6ED1, 0x6E96, 0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7, -/* 0D08 */ 0x6EB4, 0x714E, 0x7159, 0x7169, 0x7164, 0x7149, 0x7167, 0x715C, -/* 0D10 */ 0x716C, 0x7166, 0x714C, 0x7165, 0x715E, 0x7146, 0x7168, 0x7156, -/* 0D18 */ 0x723A, 0x7252, 0x7337, 0x7345, 0x733F, 0x733E, 0x746F, 0x745A, -/* 0D20 */ 0x7455, 0x745F, 0x745E, 0x7441, 0x743F, 0x7459, 0x745B, 0x745C, -/* 0D28 */ 0x7576, 0x7578, 0x7600, 0x75F0, 0x7601, 0x75F2, 0x75F1, 0x75FA, -/* 0D30 */ 0x75FF, 0x75F4, 0x75F3, 0x76DE, 0x76DF, 0x775B, 0x776B, 0x7766, -/* 0D38 */ 0x775E, 0x7763, 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768, -/* 0D40 */ 0x7762, 0x77EE, 0x788E, 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889, -/* 0D48 */ 0x787C, 0x7891, 0x7893, 0x787F, 0x797A, 0x797F, 0x7981, 0x842C, -/* 0D50 */ 0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14, 0x7A1F, 0x7A1E, 0x7A9F, -/* 0D58 */ 0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, 0x7CB1, 0x7CB3, -/* 0D60 */ 0x7CB5, 0x7D93, 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, 0x7F6E, -/* 0D68 */ 0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, 0x8058, -/* 0D70 */ 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173, -/* 0D78 */ 0x816B, 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, -/* 0D80 */ 0x843D, 0x8431, 0x8475, 0x8466, 0x846B, 0x8449, 0x846C, 0x845B, -/* 0D88 */ 0x843C, 0x8435, 0x8461, 0x8463, 0x8469, 0x846D, 0x8446, 0x865E, -/* 0D90 */ 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86FE, -/* 0D98 */ 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF, 0x88D4, -/* 0DA0 */ 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, 0x88D5, 0x88D2, -/* 0DA8 */ 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69, 0x8A70, -/* 0DB0 */ 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, 0x8A62, -/* 0DB8 */ 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, 0x8C8A, -/* 0DC0 */ 0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, 0x8CC2, -/* 0DC8 */ 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, 0x8DEA, -/* 0DD0 */ 0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, 0x8EFE, 0x8F0A, 0x8F9F, -/* 0DD8 */ 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, 0x9054, 0x903C, 0x9055, -/* 0DE0 */ 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051, 0x903E, 0x9041, -/* 0DE8 */ 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237, 0x9257, -/* 0DF0 */ 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264, 0x9251, -/* 0DF8 */ 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A, 0x9598, -/* 0E00 */ 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA, 0x96F7, -/* 0E08 */ 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810, 0x9811, -/* 0E10 */ 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, 0x98F4, 0x98FD, 0x98FE, -/* 0E18 */ 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9, 0x9E82, 0x9F0E, 0x9F13, -/* 0E20 */ 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6, 0x50ED, 0x50DA, 0x50D5, -/* 0E28 */ 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, 0x5162, 0x51F3, 0x5283, -/* 0E30 */ 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, 0x561B, 0x5617, 0x55FD, -/* 0E38 */ 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, 0x55F7, 0x5616, 0x561F, -/* 0E40 */ 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, 0x5875, 0x587E, 0x5883, -/* 0E48 */ 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, 0x58FD, 0x5925, 0x5922, -/* 0E50 */ 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6, 0x5AE9, 0x5AD7, 0x5AD6, -/* 0E58 */ 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7, 0x5BE1, 0x5BE5, 0x5BE6, -/* 0E60 */ 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D, 0x5C62, 0x5D84, 0x5D87, -/* 0E68 */ 0x5E5B, 0x5E63, 0x5E55, 0x5E57, 0x5E54, 0x5ED3, 0x5ED6, 0x5F0A, -/* 0E70 */ 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0x613F, 0x614B, 0x6177, 0x6162, -/* 0E78 */ 0x6163, 0x615F, 0x615A, 0x6158, 0x6175, 0x622A, 0x6487, 0x6458, -/* 0E80 */ 0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, 0x6451, 0x6467, 0x6434, -/* 0E88 */ 0x646D, 0x647B, 0x6572, 0x65A1, 0x65D7, 0x65D6, 0x66A2, 0x66A8, -/* 0E90 */ 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, 0x69AE, 0x69D3, 0x69CB, -/* 0E98 */ 0x699B, 0x69B7, 0x69BB, 0x69AB, 0x69B4, 0x69D0, 0x69CD, 0x69AD, -/* 0EA0 */ 0x69CC, 0x69A6, 0x69C3, 0x69A3, 0x6B49, 0x6B4C, 0x6C33, 0x6F33, -/* 0EA8 */ 0x6F14, 0x6EFE, 0x6F13, 0x6EF4, 0x6F29, 0x6F3E, 0x6F20, 0x6F2C, -/* 0EB0 */ 0x6F0F, 0x6F02, 0x6F22, 0x6EFF, 0x6EEF, 0x6F06, 0x6F31, 0x6F38, -/* 0EB8 */ 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F, 0x6F88, 0x6F2A, 0x6EEC, -/* 0EC0 */ 0x6F01, 0x6EF2, 0x6ECC, 0x6EF7, 0x7194, 0x7199, 0x717D, 0x718A, -/* 0EC8 */ 0x7184, 0x7192, 0x723E, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, -/* 0ED0 */ 0x7463, 0x746A, 0x7470, 0x746D, 0x7504, 0x7591, 0x7627, 0x760D, -/* 0ED8 */ 0x760B, 0x7609, 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, 0x777F, -/* 0EE0 */ 0x7761, 0x78C1, 0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3, 0x798E, -/* 0EE8 */ 0x798F, 0x798D, 0x7A2E, 0x7A31, 0x7AAA, 0x7AA9, 0x7AED, 0x7AEF, -/* 0EF0 */ 0x7BA1, 0x7B95, 0x7B8B, 0x7B75, 0x7B97, 0x7B9D, 0x7B94, 0x7B8F, -/* 0EF8 */ 0x7BB8, 0x7B87, 0x7B84, 0x7CB9, 0x7CBD, 0x7CBE, 0x7DBB, 0x7DB0, -/* 0F00 */ 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0, 0x7DCA, 0x7DB4, 0x7DB2, 0x7DB1, -/* 0F08 */ 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, 0x7DD2, 0x7DC7, -/* 0F10 */ 0x7DAC, 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A, 0x8087, -/* 0F18 */ 0x8150, 0x8180, 0x818F, 0x8188, 0x818A, 0x817F, 0x8182, 0x81E7, -/* 0F20 */ 0x81FA, 0x8207, 0x8214, 0x821E, 0x824B, 0x84C9, 0x84BF, 0x84C6, -/* 0F28 */ 0x84C4, 0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8, 0x84C0, -/* 0F30 */ 0x84D3, 0x8490, 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C, 0x873B, -/* 0F38 */ 0x8722, 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88F3, -/* 0F40 */ 0x8902, 0x88F4, 0x88F9, 0x88F8, 0x88FD, 0x88E8, 0x891A, 0x88EF, -/* 0F48 */ 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, 0x8AA1, 0x8A93, 0x8AA4, -/* 0F50 */ 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, 0x8AA7, 0x8C6A, -/* 0F58 */ 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99, 0x8D95, -/* 0F60 */ 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060, 0x9058, -/* 0F68 */ 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B, 0x9119, -/* 0F70 */ 0x9118, 0x911E, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, -/* 0F78 */ 0x9285, 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, 0x92A8, 0x927C, -/* 0F80 */ 0x9291, 0x95A1, 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4, 0x9699, -/* 0F88 */ 0x969C, 0x969B, 0x96CC, 0x96D2, 0x9700, 0x977C, 0x9785, 0x97F6, -/* 0F90 */ 0x9817, 0x9818, 0x98AF, 0x98B1, 0x9903, 0x9905, 0x990C, 0x9909, -/* 0F98 */ 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, 0x9B42, 0x9CF4, 0x9CF6, -/* 0FA0 */ 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100, 0x50FB, 0x50F5, -/* 0FA8 */ 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51DC, 0x5287, 0x5288, -/* 0FB0 */ 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E, 0x563B, 0x5639, -/* 0FB8 */ 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E, 0x5657, 0x5674, -/* 0FC0 */ 0x5636, 0x562F, 0x5630, 0x5880, 0x589F, 0x589E, 0x58B3, 0x589C, -/* 0FC8 */ 0x58AE, 0x58A9, 0x58A6, 0x596D, 0x5B09, 0x5AFB, 0x5B0B, 0x5AF5, -/* 0FD0 */ 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC, 0x5BE9, 0x5BEB, 0x5C64, 0x5C65, -/* 0FD8 */ 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, 0x5E61, 0x5EE2, 0x5EDA, 0x5EDF, -/* 0FE0 */ 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, 0x5FB7, 0x5FB5, 0x6176, -/* 0FE8 */ 0x6167, 0x616E, 0x615D, 0x6155, 0x6182, 0x617C, 0x6170, 0x616B, -/* 0FF0 */ 0x617E, 0x61A7, 0x6190, 0x61AB, 0x618E, 0x61AC, 0x619A, 0x61A4, -/* 0FF8 */ 0x6194, 0x61AE, 0x622E, 0x6469, 0x646F, 0x6479, 0x649E, 0x64B2, -/* 1000 */ 0x6488, 0x6490, 0x64B0, 0x64A5, 0x6493, 0x6495, 0x64A9, 0x6492, -/* 1008 */ 0x64AE, 0x64AD, 0x64AB, 0x649A, 0x64AC, 0x6499, 0x64A2, 0x64B3, -/* 1010 */ 0x6575, 0x6577, 0x6578, 0x66AE, 0x66AB, 0x66B4, 0x66B1, 0x6A23, -/* 1018 */ 0x6A1F, 0x69E8, 0x6A01, 0x6A1E, 0x6A19, 0x69FD, 0x6A21, 0x6A13, -/* 1020 */ 0x6A0A, 0x69F3, 0x6A02, 0x6A05, 0x69ED, 0x6A11, 0x6B50, 0x6B4E, -/* 1028 */ 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, 0x6F7C, 0x6F84, 0x6F51, 0x6F66, -/* 1030 */ 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, 0x6F78, 0x6F6E, 0x6F8E, 0x6F7A, -/* 1038 */ 0x6F70, 0x6F64, 0x6F97, 0x6F58, 0x6ED5, 0x6F6F, 0x6F60, 0x6F5F, -/* 1040 */ 0x719F, 0x71AC, 0x71B1, 0x71A8, 0x7256, 0x729B, 0x734E, 0x7357, -/* 1048 */ 0x7469, 0x748B, 0x7483, 0x747E, 0x7480, 0x757F, 0x7620, 0x7629, -/* 1050 */ 0x761F, 0x7624, 0x7626, 0x7621, 0x7622, 0x769A, 0x76BA, 0x76E4, -/* 1058 */ 0x778E, 0x7787, 0x778C, 0x7791, 0x778B, 0x78CB, 0x78C5, 0x78BA, -/* 1060 */ 0x78CA, 0x78BE, 0x78D5, 0x78BC, 0x78D0, 0x7A3F, 0x7A3C, 0x7A40, -/* 1068 */ 0x7A3D, 0x7A37, 0x7A3B, 0x7AAF, 0x7AAE, 0x7BAD, 0x7BB1, 0x7BC4, -/* 1070 */ 0x7BB4, 0x7BC6, 0x7BC7, 0x7BC1, 0x7BA0, 0x7BCC, 0x7CCA, 0x7DE0, -/* 1078 */ 0x7DF4, 0x7DEF, 0x7DFB, 0x7DD8, 0x7DEC, 0x7DDD, 0x7DE8, 0x7DE3, -/* 1080 */ 0x7DDA, 0x7DDE, 0x7DE9, 0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9, 0x7F75, -/* 1088 */ 0x7F77, 0x7FAF, 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, 0x81A0, -/* 1090 */ 0x819A, 0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, 0x852D, -/* 1098 */ 0x8513, 0x8511, 0x8523, 0x8521, 0x8514, 0x84EC, 0x8525, 0x84FF, -/* 10A0 */ 0x8506, 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, -/* 10A8 */ 0x8759, 0x8757, 0x874C, 0x8753, 0x885B, 0x885D, 0x8910, 0x8907, -/* 10B0 */ 0x8912, 0x8913, 0x8915, 0x890A, 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, -/* 10B8 */ 0x8A95, 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, 0x8AC2, 0x8ABF, 0x8AB0, -/* 10C0 */ 0x8AD6, 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, 0x8C4E, 0x8C6C, -/* 10C8 */ 0x8CE0, 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, 0x8CE3, -/* 10D0 */ 0x8CDC, 0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10, -/* 10D8 */ 0x8E1D, 0x8E22, 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E, 0x8EBA, -/* 10E0 */ 0x8F1D, 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, 0x8F1E, -/* 10E8 */ 0x8F25, 0x9069, 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D, -/* 10F0 */ 0x9127, 0x9131, 0x9187, 0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB, -/* 10F8 */ 0x92B7, 0x92EA, 0x92AC, 0x92E4, 0x92C1, 0x92B3, 0x92BC, 0x92D2, -/* 1100 */ 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704, 0x9706, 0x9707, -/* 1108 */ 0x9709, 0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B, 0x981C, -/* 1110 */ 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, 0x99DF, -/* 1118 */ 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, 0x9AEF, -/* 1120 */ 0x9B27, 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09, 0x9D03, -/* 1128 */ 0x9EA9, 0x9EBE, 0x9ECE, 0x58A8, 0x9F52, 0x5112, 0x5118, 0x5114, -/* 1130 */ 0x5110, 0x5115, 0x5180, 0x51AA, 0x51DD, 0x5291, 0x5293, 0x52F3, -/* 1138 */ 0x5659, 0x566B, 0x5679, 0x5669, 0x5664, 0x5678, 0x566A, 0x5668, -/* 1140 */ 0x5665, 0x5671, 0x566F, 0x566C, 0x5662, 0x5676, 0x58C1, 0x58BE, -/* 1148 */ 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78, 0x5BF0, 0x5C0E, -/* 1150 */ 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD, 0x61B6, 0x61BE, -/* 1158 */ 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 0x64BB, 0x64BC, -/* 1160 */ 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 0x64D2, 0x64D4, -/* 1168 */ 0x64BE, 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, 0x66C7, 0x66B8, -/* 1170 */ 0x6A3D, 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 0x6A39, 0x6A44, -/* 1178 */ 0x6A62, 0x6A61, 0x6A4B, 0x6A47, 0x6A35, 0x6A5F, 0x6A48, 0x6B59, -/* 1180 */ 0x6B77, 0x6C05, 0x6FC2, 0x6FB1, 0x6FA1, 0x6FC3, 0x6FA4, 0x6FC1, -/* 1188 */ 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, 0x6FA6, 0x6FA0, 0x6FB4, -/* 1190 */ 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, 0x71D5, 0x71B9, 0x71CE, -/* 1198 */ 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, 0x749C, 0x74A3, 0x7498, -/* 11A0 */ 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D, 0x7634, 0x7638, 0x763A, -/* 11A8 */ 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F, 0x77A5, 0x78E8, 0x78DA, -/* 11B0 */ 0x78EC, 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, 0x7A46, 0x7A4C, 0x7A4B, -/* 11B8 */ 0x7ABA, 0x7BD9, 0x7C11, 0x7BC9, 0x7BE4, 0x7BDB, 0x7BE1, 0x7BE9, -/* 11C0 */ 0x7BE6, 0x7CD5, 0x7CD6, 0x7E0A, 0x7E11, 0x7E08, 0x7E1B, 0x7E23, -/* 11C8 */ 0x7E1E, 0x7E1D, 0x7E09, 0x7E10, 0x7F79, 0x7FB2, 0x7FF0, 0x7FF1, -/* 11D0 */ 0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8, 0x81FB, 0x8208, 0x8258, -/* 11D8 */ 0x8259, 0x854A, 0x8559, 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, -/* 11E0 */ 0x856D, 0x856A, 0x855E, 0x8783, 0x879F, 0x879E, 0x87A2, 0x878D, -/* 11E8 */ 0x8861, 0x892A, 0x8932, 0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6, -/* 11F0 */ 0x8AE6, 0x8AFA, 0x8AEB, 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE, -/* 11F8 */ 0x8AFE, 0x8B01, 0x8B02, 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC, -/* 1200 */ 0x8C6B, 0x8C6D, 0x8C93, 0x8CF4, 0x8E44, 0x8E31, 0x8E34, 0x8E42, -/* 1208 */ 0x8E39, 0x8E35, 0x8F3B, 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, 0x8FA6, -/* 1210 */ 0x9075, 0x9074, 0x9078, 0x9072, 0x907C, 0x907A, 0x9134, 0x9192, -/* 1218 */ 0x9320, 0x9336, 0x92F8, 0x9333, 0x932F, 0x9322, 0x92FC, 0x932B, -/* 1220 */ 0x9304, 0x931A, 0x9310, 0x9326, 0x9321, 0x9315, 0x932E, 0x9319, -/* 1228 */ 0x95BB, 0x96A7, 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, 0x9716, -/* 1230 */ 0x970D, 0x9713, 0x970F, 0x975B, 0x975C, 0x9766, 0x9798, 0x9830, -/* 1238 */ 0x9838, 0x983B, 0x9837, 0x982D, 0x9839, 0x9824, 0x9910, 0x9928, -/* 1240 */ 0x991E, 0x991B, 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, 0x9AB8, -/* 1248 */ 0x9ABC, 0x9AFB, 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, 0x9D26, -/* 1250 */ 0x9D28, 0x9D12, 0x9D1B, 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A, -/* 1258 */ 0x511F, 0x5121, 0x5132, 0x52F5, 0x568E, 0x5680, 0x5690, 0x5685, -/* 1260 */ 0x5687, 0x568F, 0x58D5, 0x58D3, 0x58D1, 0x58CE, 0x5B30, 0x5B2A, -/* 1268 */ 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, 0x5DBD, 0x5DB8, -/* 1270 */ 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6, 0x61CB, -/* 1278 */ 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0, 0x64E6, -/* 1280 */ 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, 0x66D6, -/* 1288 */ 0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, 0x6A7E, -/* 1290 */ 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, 0x6FD8, -/* 1298 */ 0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, 0x6F80, -/* 12A0 */ 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7, 0x71DF, -/* 12A8 */ 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, 0x71F4, 0x71E0, 0x7235, -/* 12B0 */ 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, 0x74A8, 0x7646, -/* 12B8 */ 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC, 0x77A7, -/* 12C0 */ 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901, 0x79A7, -/* 12C8 */ 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7, 0x7C0C, -/* 12D0 */ 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9, 0x7CDD, -/* 12D8 */ 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B, 0x7E3D, -/* 12E0 */ 0x7E31, 0x7E45, 0x7E41, 0x7E34, 0x7E39, 0x7E48, 0x7E35, 0x7E3F, -/* 12E8 */ 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071, 0x8072, 0x8070, 0x806F, -/* 12F0 */ 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, 0x81C0, 0x81BF, 0x81BD, -/* 12F8 */ 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA, 0x8584, 0x857E, -/* 1300 */ 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, 0x8587, 0x85A8, 0x858A, -/* 1308 */ 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, 0x87C6, 0x87AB, 0x87BB, -/* 1310 */ 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, 0x8944, 0x8938, 0x893D, -/* 1318 */ 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, 0x8B0A, 0x8B20, 0x8B1D, -/* 1320 */ 0x8B04, 0x8B10, 0x8C41, 0x8C3F, 0x8C73, 0x8CFA, 0x8CFD, 0x8CFC, -/* 1328 */ 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B, 0x8E48, 0x8E4A, 0x8F44, -/* 1330 */ 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F, 0x907D, 0x9084, 0x9081, -/* 1338 */ 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E, 0x919C, 0x934D, 0x9382, -/* 1340 */ 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, 0x9318, 0x937E, 0x936C, -/* 1348 */ 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 0x95CB, 0x95CC, 0x95C8, -/* 1350 */ 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, 0x971E, 0x97A0, 0x97D3, -/* 1358 */ 0x9846, 0x98B6, 0x9935, 0x9A01, 0x99FF, 0x9BAE, 0x9BAB, 0x9BAA, -/* 1360 */ 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF, 0x9EDE, 0x9EDC, 0x9EDD, -/* 1368 */ 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2, 0x5695, 0x56AE, 0x58D9, 0x58D8, -/* 1370 */ 0x5B38, 0x5F5D, 0x61E3, 0x6233, 0x64F4, 0x64F2, 0x64FE, 0x6506, -/* 1378 */ 0x64FA, 0x64FB, 0x64F7, 0x65B7, 0x66DC, 0x6726, 0x6AB3, 0x6AAC, -/* 1380 */ 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, 0x6AAE, 0x6AAF, 0x6B5F, 0x6B78, -/* 1388 */ 0x6BAF, 0x7009, 0x700B, 0x6FFE, 0x7006, 0x6FFA, 0x7011, 0x700F, -/* 1390 */ 0x71FB, 0x71FC, 0x71FE, 0x71F8, 0x7377, 0x7375, 0x74A7, 0x74BF, -/* 1398 */ 0x7515, 0x7656, 0x7658, 0x7652, 0x77BD, 0x77BF, 0x77BB, 0x77BC, -/* 13A0 */ 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60, 0x7AC4, 0x7AC5, 0x7C2B, -/* 13A8 */ 0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54, 0x7E55, -/* 13B0 */ 0x7E5E, 0x7E5A, 0x7E61, 0x7E52, 0x7E59, 0x7F48, 0x7FF9, 0x7FFB, -/* 13B8 */ 0x8077, 0x8076, 0x81CD, 0x81CF, 0x820A, 0x85CF, 0x85A9, 0x85CD, -/* 13C0 */ 0x85D0, 0x85C9, 0x85B0, 0x85BA, 0x85B9, 0x85A6, 0x87EF, 0x87EC, -/* 13C8 */ 0x87F2, 0x87E0, 0x8986, 0x89B2, 0x89F4, 0x8B28, 0x8B39, 0x8B2C, -/* 13D0 */ 0x8B2B, 0x8C50, 0x8D05, 0x8E59, 0x8E63, 0x8E66, 0x8E64, 0x8E5F, -/* 13D8 */ 0x8E55, 0x8EC0, 0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088, 0x91AB, -/* 13E0 */ 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3, 0x93AE, -/* 13E8 */ 0x93AC, 0x93B0, 0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6, 0x95D0, -/* 13F0 */ 0x95D5, 0x96E2, 0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724, 0x97A3, -/* 13F8 */ 0x97A6, 0x97AD, 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, 0x9853, -/* 1400 */ 0x98BA, 0x993E, 0x993F, 0x993D, 0x992E, 0x99A5, 0x9A0E, 0x9AC1, -/* 1408 */ 0x9B03, 0x9B06, 0x9B4F, 0x9B4E, 0x9B4D, 0x9BCA, 0x9BC9, 0x9BFD, -/* 1410 */ 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, 0x9EE0, 0x9F15, 0x9F2C, -/* 1418 */ 0x5133, 0x56A5, 0x58DE, 0x58DF, 0x58E2, 0x5BF5, 0x9F90, 0x5EEC, -/* 1420 */ 0x61F2, 0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F, 0x66E0, 0x66DD, -/* 1428 */ 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, 0x7028, 0x701A, -/* 1430 */ 0x701D, 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2, 0x7378, -/* 1438 */ 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F, 0x7661, -/* 1440 */ 0x77C7, 0x7919, 0x79B1, 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F, 0x7C38, -/* 1448 */ 0x7C3D, 0x7C37, 0x7C40, 0x7E6B, 0x7E6D, 0x7E79, 0x7E69, 0x7E6A, -/* 1450 */ 0x7F85, 0x7E73, 0x7FB6, 0x7FB9, 0x7FB8, 0x81D8, 0x85E9, 0x85DD, -/* 1458 */ 0x85EA, 0x85D5, 0x85E4, 0x85E5, 0x85F7, 0x87FB, 0x8805, 0x880D, -/* 1460 */ 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, 0x895E, 0x8B41, 0x8B5C, -/* 1468 */ 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46, 0x8B59, 0x8D08, -/* 1470 */ 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A, 0x8E74, -/* 1478 */ 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE, 0x93E1, -/* 1480 */ 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, 0x93DD, 0x93D6, 0x93E2, -/* 1488 */ 0x93CD, 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, 0x96B4, 0x96E3, -/* 1490 */ 0x972A, 0x9727, 0x9761, 0x97DC, 0x97FB, 0x985E, 0x9858, 0x985B, -/* 1498 */ 0x98BC, 0x9945, 0x9949, 0x9A16, 0x9A19, 0x9B0D, 0x9BE8, 0x9BE7, -/* 14A0 */ 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, 0x9D72, 0x9D6A, 0x9D6C, 0x9E92, -/* 14A8 */ 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56A8, 0x56B7, 0x56B6, 0x56B4, -/* 14B0 */ 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6, 0x5DC9, 0x61F8, -/* 14B8 */ 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, 0x6727, 0x6AEC, 0x703E, -/* 14C0 */ 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662, 0x7665, 0x7926, -/* 14C8 */ 0x792A, 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C, 0x7C43, 0x7C4D, -/* 14D0 */ 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D, 0x7E7C, 0x7E82, 0x7F4C, 0x8000, -/* 14D8 */ 0x81DA, 0x8266, 0x85FB, 0x85F9, 0x8611, 0x85FA, 0x8606, 0x860B, -/* 14E0 */ 0x8607, 0x860A, 0x8814, 0x8815, 0x8964, 0x89BA, 0x89F8, 0x8B70, -/* 14E8 */ 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F, 0x8B6B, 0x8D0F, 0x8D0D, 0x8E89, -/* 14F0 */ 0x8E81, 0x8E85, 0x8E82, 0x91B4, 0x91CB, 0x9418, 0x9403, 0x93FD, -/* 14F8 */ 0x95E1, 0x9730, 0x98C4, 0x9952, 0x9951, 0x99A8, 0x9A2B, 0x9A30, -/* 1500 */ 0x9A37, 0x9A35, 0x9C13, 0x9C0D, 0x9E79, 0x9EB5, 0x9EE8, 0x9F2F, -/* 1508 */ 0x9F5F, 0x9F63, 0x9F61, 0x5137, 0x5138, 0x56C1, 0x56C0, 0x56C2, -/* 1510 */ 0x5914, 0x5C6C, 0x5DCD, 0x61FC, 0x61FE, 0x651D, 0x651C, 0x6595, -/* 1518 */ 0x66E9, 0x6AFB, 0x6B04, 0x6AFA, 0x6BB2, 0x704C, 0x721B, 0x72A7, -/* 1520 */ 0x74D6, 0x74D4, 0x7669, 0x77D3, 0x7C50, 0x7E8F, 0x7E8C, 0x7FBC, -/* 1528 */ 0x8617, 0x862D, 0x861A, 0x8823, 0x8822, 0x8821, 0x881F, 0x896A, -/* 1530 */ 0x896C, 0x89BD, 0x8B74, 0x8B77, 0x8B7D, 0x8D13, 0x8E8A, 0x8E8D, -/* 1538 */ 0x8E8B, 0x8F5F, 0x8FAF, 0x91BA, 0x942E, 0x9433, 0x9435, 0x943A, -/* 1540 */ 0x9438, 0x9432, 0x942B, 0x95E2, 0x9738, 0x9739, 0x9732, 0x97FF, -/* 1548 */ 0x9867, 0x9865, 0x9957, 0x9A45, 0x9A43, 0x9A40, 0x9A3E, 0x9ACF, -/* 1550 */ 0x9B54, 0x9B51, 0x9C2D, 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, 0x9DB8, -/* 1558 */ 0x9E9D, 0x9EEF, 0x9F19, 0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B, -/* 1560 */ 0x56C8, 0x56CA, 0x56C9, 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, -/* 1568 */ 0x6524, 0x6B0A, 0x6B61, 0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, -/* 1570 */ 0x766E, 0x766C, 0x79B3, 0x7C60, 0x7C5F, 0x807E, 0x807D, 0x81DF, -/* 1578 */ 0x8972, 0x896F, 0x89FC, 0x8B80, 0x8D16, 0x8D17, 0x8E91, 0x8E93, -/* 1580 */ 0x8F61, 0x9148, 0x9444, 0x9451, 0x9452, 0x973D, 0x973E, 0x97C3, -/* 1588 */ 0x97C1, 0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A, 0x9C49, -/* 1590 */ 0x9C31, 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, 0x9F6A, -/* 1598 */ 0x9F94, 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, -/* 15A0 */ 0x6B10, 0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, -/* 15A8 */ 0x7E94, 0x81E2, 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, 0x908F, -/* 15B0 */ 0x9463, 0x9460, 0x9464, 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B, -/* 15B8 */ 0x9A57, 0x9AD3, 0x9AD4, 0x9AD1, 0x9C54, 0x9C57, 0x9C56, 0x9DE5, -/* 15C0 */ 0x9E9F, 0x9EF4, 0x56D1, 0x58E9, 0x652C, 0x705E, 0x7671, 0x7672, -/* 15C8 */ 0x77D7, 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862, 0x8B93, 0x8B92, -/* 15D0 */ 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, 0x9744, -/* 15D8 */ 0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA, -/* 15E0 */ 0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, 0x7063, -/* 15E8 */ 0x7C6C, 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, 0x9470, -/* 15F0 */ 0x9871, 0x995E, 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, 0x8B9A, -/* 15F8 */ 0x9477, 0x97C9, 0x9A62, 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, 0x91C5, -/* 1600 */ 0x947D, 0x947E, 0x947C, 0x9C77, 0x9C78, 0x9EF7, 0x8C54, 0x947F, -/* 1608 */ 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72, 0x4E42, -/* 1610 */ 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47, 0x4E8D, -/* 1618 */ 0x56D7, 0xFA0C, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E, 0x4E2E, -/* 1620 */ 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C, 0x53B9, -/* 1628 */ 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3, 0x6BCC, -/* 1630 */ 0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9, 0x4EE1, -/* 1638 */ 0x4EDD, 0x4EDA, 0x520C, 0x531C, 0x534C, 0x5722, 0x5723, 0x5917, -/* 1640 */ 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74, 0x5C73, 0x5E04, -/* 1648 */ 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15, 0x6C36, 0x6C43, -/* 1650 */ 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, 0x79B8, 0x808A, 0x961E, -/* 1658 */ 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 0x4EF1, 0x4F00, 0x4EF7, -/* 1660 */ 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 0x4F13, 0x4F04, 0x4EF4, -/* 1668 */ 0x4F12, 0x51B1, 0x5213, 0x5209, 0x5210, 0x52A6, 0x5322, 0x531F, -/* 1670 */ 0x534D, 0x538A, 0x5407, 0x56E1, 0x56DF, 0x572E, 0x572A, 0x5734, -/* 1678 */ 0x593C, 0x5980, 0x597C, 0x5985, 0x597B, 0x597E, 0x5977, 0x597F, -/* 1680 */ 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A, 0x5C7B, 0x5C7E, 0x5DDF, -/* 1688 */ 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74, 0x5FD5, 0x5FD4, 0x5FCF, -/* 1690 */ 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259, 0x6260, -/* 1698 */ 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E, 0x6739, 0x6738, 0x673B, -/* 16A0 */ 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46, 0x6C52, 0x6C5C, -/* 16A8 */ 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B, 0x6C4C, 0x7071, 0x725E, 0x72B4, -/* 16B0 */ 0x72B5, 0x738E, 0x752A, 0x767F, 0x7A75, 0x7F51, 0x8278, 0x827C, -/* 16B8 */ 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099, 0x9097, 0x9098, -/* 16C0 */ 0x909B, 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, 0x4F56, 0x4F3B, -/* 16C8 */ 0x4F62, 0x4F49, 0x4F53, 0x4F64, 0x4F3E, 0x4F67, 0x4F52, 0x4F5F, -/* 16D0 */ 0x4F41, 0x4F58, 0x4F2D, 0x4F33, 0x4F3F, 0x4F61, 0x518F, 0x51B9, -/* 16D8 */ 0x521C, 0x521E, 0x5221, 0x52AD, 0x52AE, 0x5309, 0x5363, 0x5372, -/* 16E0 */ 0x538E, 0x538F, 0x5430, 0x5437, 0x542A, 0x5454, 0x5445, 0x5419, -/* 16E8 */ 0x541C, 0x5425, 0x5418, 0x543D, 0x544F, 0x5441, 0x5428, 0x5424, -/* 16F0 */ 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741, 0x5745, 0x574C, 0x5749, -/* 16F8 */ 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0, 0x5997, -/* 1700 */ 0x598E, 0x59A2, 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, 0x5B92, -/* 1708 */ 0x5C28, 0x5C2A, 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89, 0x5C92, -/* 1710 */ 0x5C8A, 0x5C86, 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E, 0x5E8B, -/* 1718 */ 0x5E89, 0x5E8C, 0x5E88, 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, 0x5F76, -/* 1720 */ 0x5FD2, 0x5FD1, 0x5FD0, 0x5FED, 0x5FE8, 0x5FEE, 0x5FF3, 0x5FE1, -/* 1728 */ 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF, 0x5FF7, 0x5FFB, 0x6000, 0x5FF4, -/* 1730 */ 0x623A, 0x6283, 0x628C, 0x628E, 0x628F, 0x6294, 0x6287, 0x6271, -/* 1738 */ 0x627B, 0x627A, 0x6270, 0x6281, 0x6288, 0x6277, 0x627D, 0x6272, -/* 1740 */ 0x6274, 0x6537, 0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5, 0x6745, -/* 1748 */ 0x6747, 0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D, 0x675A, -/* 1750 */ 0x674B, 0x6BD0, 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, 0x6C84, -/* 1758 */ 0x6C8B, 0x6C8F, 0x6C71, 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, 0x6C87, -/* 1760 */ 0x6C95, 0x6C9C, 0x6C66, 0x6C73, 0x6C65, 0x6C7B, 0x6C8E, 0x7074, -/* 1768 */ 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3, 0x72C6, 0x72C1, 0x72BA, -/* 1770 */ 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753A, 0x7539, -/* 1778 */ 0x7594, 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099, 0x8090, -/* 1780 */ 0x8092, 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291, 0x8293, -/* 1788 */ 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F, 0x90A1, -/* 1790 */ 0x90A5, 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F, 0x962D, -/* 1798 */ 0x4E33, 0x4F98, 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, 0x4F87, 0x4F76, -/* 17A0 */ 0x4F74, 0x4F89, 0x4F84, 0x4F77, 0x4F4C, 0x4F97, 0x4F6A, 0x4F9A, -/* 17A8 */ 0x4F79, 0x4F81, 0x4F78, 0x4F90, 0x4F9C, 0x4F94, 0x4F9E, 0x4F92, -/* 17B0 */ 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, 0x51BC, 0x51BE, 0x5235, -/* 17B8 */ 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, 0x530B, 0x533C, -/* 17C0 */ 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482, 0x5488, -/* 17C8 */ 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466, 0x548D, -/* 17D0 */ 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56F7, -/* 17D8 */ 0x56F9, 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, 0x5770, 0x5776, -/* 17E0 */ 0x5780, 0x5775, 0x577B, 0x5773, 0x5774, 0x5762, 0x5768, 0x577D, -/* 17E8 */ 0x590C, 0x5945, 0x59B5, 0x59BA, 0x59CF, 0x59CE, 0x59B2, 0x59CC, -/* 17F0 */ 0x59C1, 0x59B6, 0x59BC, 0x59C3, 0x59D6, 0x59B1, 0x59BD, 0x59C0, -/* 17F8 */ 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, 0x5B93, 0x5B95, 0x5C44, -/* 1800 */ 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF, 0x5CA8, 0x5CAC, -/* 1808 */ 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, 0x5C9D, 0x5CA5, -/* 1810 */ 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19, 0x5F28, 0x5F22, -/* 1818 */ 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D, 0x5FDE, 0x5FE5, -/* 1820 */ 0x602D, 0x6026, 0x6019, 0x6032, 0x600B, 0x6034, 0x600A, 0x6017, -/* 1828 */ 0x6033, 0x601A, 0x601E, 0x602C, 0x6022, 0x600D, 0x6010, 0x602E, -/* 1830 */ 0x6013, 0x6011, 0x600C, 0x6009, 0x601C, 0x6214, 0x623D, 0x62AD, -/* 1838 */ 0x62B4, 0x62D1, 0x62BE, 0x62AA, 0x62B6, 0x62CA, 0x62AE, 0x62B3, -/* 1840 */ 0x62AF, 0x62BB, 0x62A9, 0x62B0, 0x62B8, 0x653D, 0x65A8, 0x65BB, -/* 1848 */ 0x6609, 0x65FC, 0x6604, 0x6612, 0x6608, 0x65FB, 0x6603, 0x660B, -/* 1850 */ 0x660D, 0x6605, 0x65FD, 0x6611, 0x6610, 0x66F6, 0x670A, 0x6785, -/* 1858 */ 0x676C, 0x678E, 0x6792, 0x6776, 0x677B, 0x6798, 0x6786, 0x6784, -/* 1860 */ 0x6774, 0x678D, 0x678C, 0x677A, 0x679F, 0x6791, 0x6799, 0x6783, -/* 1868 */ 0x677D, 0x6781, 0x6778, 0x6779, 0x6794, 0x6B25, 0x6B80, 0x6B7E, -/* 1870 */ 0x6BDE, 0x6C1D, 0x6C93, 0x6CEC, 0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6, -/* 1878 */ 0x6CD4, 0x6CAD, 0x6CE7, 0x6CB7, 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, -/* 1880 */ 0x6CC6, 0x6CED, 0x6CF2, 0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, -/* 1888 */ 0x6C80, 0x6CDE, 0x6CC0, 0x6D30, 0x6CCD, 0x6CC7, 0x6CB0, 0x6CF9, -/* 1890 */ 0x6CCF, 0x6CE9, 0x6CD1, 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, -/* 1898 */ 0x7084, 0x7091, 0x7096, 0x7082, 0x709A, 0x7083, 0x726A, 0x72D6, -/* 18A0 */ 0x72CB, 0x72D8, 0x72C9, 0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC, -/* 18A8 */ 0x72D1, 0x73A4, 0x73A1, 0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC, -/* 18B0 */ 0x739D, 0x74DD, 0x74E8, 0x753F, 0x7540, 0x753E, 0x758C, 0x7598, -/* 18B8 */ 0x76AF, 0x76F3, 0x76F1, 0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, -/* 18C0 */ 0x77FB, 0x77FA, 0x77F7, 0x7942, 0x793F, 0x79C5, 0x7A78, 0x7A7B, -/* 18C8 */ 0x7AFB, 0x7C75, 0x7CFD, 0x8035, 0x808F, 0x80AE, 0x80A3, 0x80B8, -/* 18D0 */ 0x80B5, 0x80AD, 0x8220, 0x82A0, 0x82C0, 0x82AB, 0x829A, 0x8298, -/* 18D8 */ 0x829B, 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA, 0x82B4, -/* 18E0 */ 0x82A8, 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, 0x82A2, -/* 18E8 */ 0x8670, 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3, -/* 18F0 */ 0x8FCD, 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, -/* 18F8 */ 0x90B0, 0x9639, 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, -/* 1900 */ 0x4FD3, 0x4FB2, 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, -/* 1908 */ 0x4FBB, 0x4FB3, 0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, -/* 1910 */ 0x4FEC, 0x5244, 0x5249, 0x52C0, 0x52C2, 0x533D, 0x537C, 0x5397, -/* 1918 */ 0x5396, 0x5399, 0x5398, 0x54BA, 0x54A1, 0x54AD, 0x54A5, 0x54CF, -/* 1920 */ 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5, 0x54C6, -/* 1928 */ 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, 0x54B0, -/* 1930 */ 0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B, -/* 1938 */ 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4, -/* 1940 */ 0x590D, 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD, -/* 1948 */ 0x59FA, 0x59FD, 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB, -/* 1950 */ 0x59E9, 0x59F3, 0x59F5, 0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8, -/* 1958 */ 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, 0x5CDB, 0x5CDE, -/* 1960 */ 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3, 0x5CD4, 0x5CCF, -/* 1968 */ 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, 0x5E21, 0x5E22, -/* 1970 */ 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, 0x5E9B, 0x5EA3, -/* 1978 */ 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, 0x6039, 0x6054, -/* 1980 */ 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, 0x605B, 0x604C, -/* 1988 */ 0x6040, 0x6042, 0x605F, 0x6024, 0x6044, 0x6058, 0x6066, 0x606E, -/* 1990 */ 0x6242, 0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5, 0x630E, 0x6303, -/* 1998 */ 0x62EB, 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6, 0x6300, 0x6313, -/* 19A0 */ 0x6314, 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541, 0x6543, 0x65AA, -/* 19A8 */ 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635, 0x661C, 0x6626, 0x6622, -/* 19B0 */ 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639, 0x662E, 0x670F, -/* 19B8 */ 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA, 0x67DC, 0x67BB, 0x67F8, -/* 19C0 */ 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4, 0x67DF, 0x67B5, -/* 19C8 */ 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE, 0x67E3, 0x67C2, 0x67B9, -/* 19D0 */ 0x67CE, 0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, 0x67ED, 0x67CC, -/* 19D8 */ 0x67AE, 0x67E6, 0x67DB, 0x67FA, 0x67C9, 0x67CA, 0x67C3, 0x67EA, -/* 19E0 */ 0x67CB, 0x6B28, 0x6B82, 0x6B84, 0x6BB6, 0x6BD6, 0x6BD8, 0x6BE0, -/* 19E8 */ 0x6C20, 0x6C21, 0x6D28, 0x6D34, 0x6D2D, 0x6D1F, 0x6D3C, 0x6D3F, -/* 19F0 */ 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04, 0x6D19, 0x6D3A, 0x6D1A, -/* 19F8 */ 0x6D11, 0x6D00, 0x6D1D, 0x6D42, 0x6D01, 0x6D18, 0x6D37, 0x6D03, -/* 1A00 */ 0x6D0F, 0x6D40, 0x6D07, 0x6D20, 0x6D2C, 0x6D08, 0x6D22, 0x6D09, -/* 1A08 */ 0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4, -/* 1A10 */ 0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, 0x7270, 0x7273, -/* 1A18 */ 0x726E, 0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, -/* 1A20 */ 0x72E3, 0x7385, 0x73CC, 0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6, -/* 1A28 */ 0x73B5, 0x73B4, 0x73EB, 0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6, -/* 1A30 */ 0x73B8, 0x73CB, 0x74EC, 0x74EE, 0x752E, 0x7547, 0x7548, 0x75A7, -/* 1A38 */ 0x75AA, 0x7679, 0x76C4, 0x7708, 0x7703, 0x7704, 0x7705, 0x770A, -/* 1A40 */ 0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8, 0x7806, 0x7811, 0x7812, -/* 1A48 */ 0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, 0x7813, 0x794A, -/* 1A50 */ 0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6, -/* 1A58 */ 0x79CE, 0x7A80, 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, -/* 1A60 */ 0x7C79, 0x7C7F, 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58, -/* 1A68 */ 0x7F91, 0x7F8D, 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037, -/* 1A70 */ 0x80D8, 0x80C7, 0x80E0, 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5, -/* 1A78 */ 0x80E3, 0x80D9, 0x80DC, 0x80CA, 0x80D5, 0x80C9, 0x80CF, 0x80D7, -/* 1A80 */ 0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE, 0x82F9, -/* 1A88 */ 0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6, 0x82F4, -/* 1A90 */ 0x82EC, 0x82E1, 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, 0x82F0, -/* 1A98 */ 0x82EA, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677, 0x8674, -/* 1AA0 */ 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, 0x89D3, -/* 1AA8 */ 0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, 0x90F1, -/* 1AB0 */ 0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB, 0x90C8, -/* 1AB8 */ 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, 0x964A, 0x964E, -/* 1AC0 */ 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B, 0x4FF5, -/* 1AC8 */ 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017, 0x501C, -/* 1AD0 */ 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, 0x515A, 0x5194, -/* 1AD8 */ 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261, 0x525A, -/* 1AE0 */ 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, 0x539E, -/* 1AE8 */ 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, 0x551A, -/* 1AF0 */ 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1, 0x550A, -/* 1AF8 */ 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B, 0x5701, -/* 1B00 */ 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6, 0x57BD, -/* 1B08 */ 0x57BC, 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, 0x57B9, 0x57C1, -/* 1B10 */ 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, 0x5A15, 0x5A0F, -/* 1B18 */ 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD, 0x5BAC, -/* 1B20 */ 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1, 0x5CF7, -/* 1B28 */ 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA, 0x5EAC, -/* 1B30 */ 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, 0x6041, 0x60A2, -/* 1B38 */ 0x6088, 0x6080, 0x6092, 0x6081, 0x609D, 0x6083, 0x6095, 0x609B, -/* 1B40 */ 0x6097, 0x6087, 0x609C, 0x608E, 0x6219, 0x6246, 0x62F2, 0x6310, -/* 1B48 */ 0x6356, 0x632C, 0x6344, 0x6345, 0x6336, 0x6343, 0x63E4, 0x6339, -/* 1B50 */ 0x634B, 0x634A, 0x633C, 0x6329, 0x6341, 0x6334, 0x6358, 0x6354, -/* 1B58 */ 0x6359, 0x632D, 0x6347, 0x6333, 0x635A, 0x6351, 0x6338, 0x6357, -/* 1B60 */ 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, 0x65C3, 0x65C4, 0x65C2, -/* 1B68 */ 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713, 0x681F, 0x681A, -/* 1B70 */ 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F, 0x6816, 0x6831, -/* 1B78 */ 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 0x684E, 0x6844, 0x6834, -/* 1B80 */ 0x681D, 0x6812, 0x6814, 0x6826, 0x6828, 0x682E, 0x684D, 0x683A, -/* 1B88 */ 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31, 0x6B34, 0x6B6D, -/* 1B90 */ 0x8082, 0x6B88, 0x6BE6, 0x6BE4, 0x6BE8, 0x6BE3, 0x6BE2, 0x6BE7, -/* 1B98 */ 0x6C25, 0x6D7A, 0x6D63, 0x6D64, 0x6D76, 0x6D0D, 0x6D61, 0x6D92, -/* 1BA0 */ 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91, 0x6D8D, 0x6DEF, 0x6D7F, -/* 1BA8 */ 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70, 0x6D7C, 0x6D5F, -/* 1BB0 */ 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E, 0x6D80, 0x6D84, -/* 1BB8 */ 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 0x6D75, 0x6D90, 0x70DC, 0x70D3, -/* 1BC0 */ 0x70D1, 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7, 0x70D2, 0x70DE, -/* 1BC8 */ 0x70E0, 0x70D4, 0x70CD, 0x70C5, 0x70C6, 0x70C7, 0x70DA, 0x70CE, -/* 1BD0 */ 0x70E1, 0x7242, 0x7278, 0x7277, 0x7276, 0x7300, 0x72FA, 0x72F4, -/* 1BD8 */ 0x72FE, 0x72F6, 0x72F3, 0x72FB, 0x7301, 0x73D3, 0x73D9, 0x73E5, -/* 1BE0 */ 0x73D6, 0x73BC, 0x73E7, 0x73E3, 0x73E9, 0x73DC, 0x73D2, 0x73DB, -/* 1BE8 */ 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8, 0x73E8, 0x74DE, 0x74DF, -/* 1BF0 */ 0x74F4, 0x74F5, 0x7521, 0x755B, 0x755F, 0x75B0, 0x75C1, 0x75BB, -/* 1BF8 */ 0x75C4, 0x75C0, 0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9, 0x771D, -/* 1C00 */ 0x771B, 0x7710, 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, -/* 1C08 */ 0x771A, 0x7722, 0x7727, 0x7823, 0x782C, 0x7822, 0x7835, 0x782F, -/* 1C10 */ 0x7828, 0x782E, 0x782B, 0x7821, 0x7829, 0x7833, 0x782A, 0x7831, -/* 1C18 */ 0x7954, 0x795B, 0x794F, 0x795C, 0x7953, 0x7952, 0x7951, 0x79EB, -/* 1C20 */ 0x79EC, 0x79E0, 0x79EE, 0x79ED, 0x79EA, 0x79DC, 0x79DE, 0x79DD, -/* 1C28 */ 0x7A86, 0x7A89, 0x7A85, 0x7A8B, 0x7A8C, 0x7A8A, 0x7A87, 0x7AD8, -/* 1C30 */ 0x7B10, 0x7B04, 0x7B13, 0x7B05, 0x7B0F, 0x7B08, 0x7B0A, 0x7B0E, -/* 1C38 */ 0x7B09, 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, 0x7C88, 0x7C8D, -/* 1C40 */ 0x7C85, 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16, 0x7D13, -/* 1C48 */ 0x7D1F, 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E, 0x7F60, -/* 1C50 */ 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, 0x7FC0, 0x8016, -/* 1C58 */ 0x803E, 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101, 0x80FB, -/* 1C60 */ 0x8100, 0x8201, 0x822F, 0x8225, 0x8333, 0x832D, 0x8344, 0x8319, -/* 1C68 */ 0x8351, 0x8325, 0x8356, 0x833F, 0x8341, 0x8326, 0x831C, 0x8322, -/* 1C70 */ 0x8342, 0x834E, 0x831B, 0x832A, 0x8308, 0x833C, 0x834D, 0x8316, -/* 1C78 */ 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, 0x8347, 0x8345, 0x834C, -/* 1C80 */ 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348, 0x8653, 0x8652, -/* 1C88 */ 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, 0x8687, 0x8697, -/* 1C90 */ 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1, 0x86A7, -/* 1C98 */ 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843, 0x8844, -/* 1CA0 */ 0x886D, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F, 0x886F, -/* 1CA8 */ 0x8883, 0x887E, 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57, 0x8C7B, -/* 1CB0 */ 0x8CA4, 0x8CA3, 0x8D76, 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6, 0x8ED1, -/* 1CB8 */ 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, 0x8FFF, 0x8FFB, 0x9004, 0x8FFC, -/* 1CC0 */ 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA, 0x90E3, 0x90DF, 0x90E5, -/* 1CC8 */ 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150, 0x914E, 0x914F, -/* 1CD0 */ 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, 0x98E3, 0x9ADF, -/* 1CD8 */ 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, 0x5060, 0x5053, -/* 1CE0 */ 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041, 0x505B, 0x504A, -/* 1CE8 */ 0x5062, 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, 0x5063, 0x5064, -/* 1CF0 */ 0x5046, 0x5040, 0x506E, 0x5073, 0x5057, 0x5051, 0x51D0, 0x526B, -/* 1CF8 */ 0x526D, 0x526C, 0x526E, 0x52D6, 0x52D3, 0x532D, 0x539C, 0x5575, -/* 1D00 */ 0x5576, 0x553C, 0x554D, 0x5550, 0x5534, 0x552A, 0x5551, 0x5562, -/* 1D08 */ 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550C, 0x5532, 0x5565, -/* 1D10 */ 0x554E, 0x5539, 0x5548, 0x552D, 0x553B, 0x5540, 0x554B, 0x570A, -/* 1D18 */ 0x5707, 0x57FB, 0x5814, 0x57E2, 0x57F6, 0x57DC, 0x57F4, 0x5800, -/* 1D20 */ 0x57ED, 0x57FD, 0x5808, 0x57F8, 0x580B, 0x57F3, 0x57CF, 0x5807, -/* 1D28 */ 0x57EE, 0x57E3, 0x57F2, 0x57E5, 0x57EC, 0x57E1, 0x580E, 0x57FC, -/* 1D30 */ 0x5810, 0x57E7, 0x5801, 0x580C, 0x57F1, 0x57E9, 0x57F0, 0x580D, -/* 1D38 */ 0x5804, 0x595C, 0x5A60, 0x5A58, 0x5A55, 0x5A67, 0x5A5E, 0x5A38, -/* 1D40 */ 0x5A35, 0x5A6D, 0x5A50, 0x5A5F, 0x5A65, 0x5A6C, 0x5A53, 0x5A64, -/* 1D48 */ 0x5A57, 0x5A43, 0x5A5D, 0x5A52, 0x5A44, 0x5A5B, 0x5A48, 0x5A8E, -/* 1D50 */ 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C, 0x5A70, 0x5A69, 0x5A47, 0x5A51, -/* 1D58 */ 0x5A56, 0x5A42, 0x5A5C, 0x5B72, 0x5B6E, 0x5BC1, 0x5BC0, 0x5C59, -/* 1D60 */ 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, 0x5D20, 0x5D0C, 0x5D28, 0x5D0D, -/* 1D68 */ 0x5D26, 0x5D25, 0x5D0F, 0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, -/* 1D70 */ 0x5E3E, 0x5E34, 0x5EB1, 0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, -/* 1D78 */ 0x5F38, 0x5F9B, 0x5F96, 0x5F9F, 0x608A, 0x6090, 0x6086, 0x60BE, -/* 1D80 */ 0x60B0, 0x60BA, 0x60D3, 0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, -/* 1D88 */ 0x60C8, 0x60B1, 0x60DB, 0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, -/* 1D90 */ 0x60C0, 0x6332, 0x6365, 0x638A, 0x6382, 0x637D, 0x63BD, 0x639E, -/* 1D98 */ 0x63AD, 0x639D, 0x6397, 0x63AB, 0x638E, 0x636F, 0x6387, 0x6390, -/* 1DA0 */ 0x636E, 0x63AF, 0x6375, 0x639C, 0x636D, 0x63AE, 0x637C, 0x63A4, -/* 1DA8 */ 0x633B, 0x639F, 0x6378, 0x6385, 0x6381, 0x6391, 0x638D, 0x6370, -/* 1DB0 */ 0x6553, 0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, 0x665C, 0x6662, -/* 1DB8 */ 0x6718, 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE, -/* 1DC0 */ 0x68AB, 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, -/* 1DC8 */ 0x68B2, 0x688F, 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, -/* 1DD0 */ 0x6880, 0x6871, 0x687E, 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, -/* 1DD8 */ 0x68A4, 0x6878, 0x687B, 0x6891, 0x688C, 0x688A, 0x687D, 0x6B36, -/* 1DE0 */ 0x6B33, 0x6B37, 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E, 0x6B8C, -/* 1DE8 */ 0x6C2A, 0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, 0x6DAC, 0x6DE9, -/* 1DF0 */ 0x6DE2, 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0, 0x6DDF, -/* 1DF8 */ 0x6DD6, 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA, -/* 1E00 */ 0x6DBD, 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9, -/* 1E08 */ 0x6DD0, 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB, -/* 1E10 */ 0x70FA, 0x710D, 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104, -/* 1E18 */ 0x70F3, 0x7110, 0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8, -/* 1E20 */ 0x70F6, 0x710B, 0x7102, 0x710E, 0x727E, 0x727B, 0x727C, 0x727F, -/* 1E28 */ 0x731D, 0x7317, 0x7307, 0x7311, 0x7318, 0x730A, 0x7308, 0x72FF, -/* 1E30 */ 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, 0x7404, 0x7401, -/* 1E38 */ 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, 0x740B, -/* 1E40 */ 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF, 0x75CB, -/* 1E48 */ 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 0x7739, 0x772F, -/* 1E50 */ 0x772D, 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, 0x7725, 0x773B, -/* 1E58 */ 0x7735, 0x7848, 0x7852, 0x7849, 0x784D, 0x784A, 0x784C, 0x7826, -/* 1E60 */ 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796A, 0x7963, 0x796B, -/* 1E68 */ 0x7961, 0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7, 0x7A8F, 0x7A94, -/* 1E70 */ 0x7A90, 0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30, 0x7B22, 0x7B24, -/* 1E78 */ 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, 0x7B2D, 0x7B2F, -/* 1E80 */ 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, 0x7C96, 0x7CA3, -/* 1E88 */ 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 0x7D2C, 0x7D29, -/* 1E90 */ 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 0x7D28, 0x7F63, -/* 1E98 */ 0x7F95, 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, 0x7FCD, 0x7FD0, -/* 1EA0 */ 0x7FD1, 0x7FC7, 0x7FCF, 0x7FC9, 0x801F, 0x801E, 0x801B, 0x8047, -/* 1EA8 */ 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, 0x811B, 0x812D, 0x811F, -/* 1EB0 */ 0x812C, 0x811E, 0x8121, 0x8115, 0x8127, 0x811D, 0x8122, 0x8211, -/* 1EB8 */ 0x8238, 0x8233, 0x823A, 0x8234, 0x8232, 0x8274, 0x8390, 0x83A3, -/* 1EC0 */ 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, 0x8374, 0x838F, 0x8381, -/* 1EC8 */ 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, 0x8383, 0x838C, -/* 1ED0 */ 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E, 0x83A5, 0x83AF, 0x8388, -/* 1ED8 */ 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387, 0x83AE, 0x8376, 0x839A, -/* 1EE0 */ 0x8659, 0x8656, 0x86BF, 0x86B7, 0x86C2, 0x86C1, 0x86C5, 0x86BA, -/* 1EE8 */ 0x86B0, 0x86C8, 0x86B9, 0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB, -/* 1EF0 */ 0x86BC, 0x86C3, 0x86BD, 0x86BE, 0x8852, 0x8889, 0x8895, 0x88A8, -/* 1EF8 */ 0x88A2, 0x88AA, 0x889A, 0x8891, 0x88A1, 0x889F, 0x8898, 0x88A7, -/* 1F00 */ 0x8899, 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C, 0x8893, 0x888E, -/* 1F08 */ 0x8982, 0x89D6, 0x89D9, 0x89D5, 0x8A30, 0x8A27, 0x8A2C, 0x8A1E, -/* 1F10 */ 0x8C39, 0x8C3B, 0x8C5C, 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B, -/* 1F18 */ 0x8D79, 0x8DBC, 0x8DC2, 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE, -/* 1F20 */ 0x8EDD, 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011, -/* 1F28 */ 0x901C, 0x900C, 0x9021, 0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2, -/* 1F30 */ 0x90F3, 0x90D4, 0x90EB, 0x90EC, 0x90E9, 0x9156, 0x9158, 0x915A, -/* 1F38 */ 0x9153, 0x9155, 0x91EC, 0x91F4, 0x91F1, 0x91F3, 0x91F8, 0x91E4, -/* 1F40 */ 0x91F9, 0x91EA, 0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A, 0x9586, -/* 1F48 */ 0x9588, 0x967C, 0x966D, 0x966B, 0x9671, 0x966F, 0x96BF, 0x976A, -/* 1F50 */ 0x9804, 0x98E5, 0x9997, 0x509B, 0x5095, 0x5094, 0x509E, 0x508B, -/* 1F58 */ 0x50A3, 0x5083, 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092, -/* 1F60 */ 0x5082, 0x5087, 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7, -/* 1F68 */ 0x5591, 0x55A8, 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, 0x5593, -/* 1F70 */ 0x5588, 0x558F, 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D, -/* 1F78 */ 0x558C, 0x55A6, 0x557F, 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, -/* 1F80 */ 0x5837, 0x5819, 0x581E, 0x5827, 0x5823, 0x5828, 0x57F5, 0x5848, -/* 1F88 */ 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, 0x5836, 0x582E, 0x5839, -/* 1F90 */ 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, 0x5A94, 0x5A9F, -/* 1F98 */ 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5, 0x5AAC, -/* 1FA0 */ 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83, 0x5A8B, -/* 1FA8 */ 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, 0x5A9D, -/* 1FB0 */ 0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, 0x5C0C, -/* 1FB8 */ 0x5C30, 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, 0x5D35, -/* 1FC0 */ 0x5D51, 0x5D4E, 0x5D55, 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, 0x5D31, -/* 1FC8 */ 0x5D59, 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, 0x5D32, 0x5D36, -/* 1FD0 */ 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, 0x5FA5, 0x5FAB, -/* 1FD8 */ 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, 0x6114, 0x60F2, -/* 1FE0 */ 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC, 0x60FE, -/* 1FE8 */ 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104, 0x610B, -/* 1FF0 */ 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8, 0x63EF, -/* 1FF8 */ 0x63C3, 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5, 0x63F2, -/* 2000 */ 0x63F5, 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4, 0x63D8, -/* 2008 */ 0x63D3, 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, 0x63F0, 0x63D7, -/* 2010 */ 0x63D9, 0x6532, 0x6567, 0x656A, 0x6564, 0x655C, 0x6568, 0x6565, -/* 2018 */ 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2, 0x667C, 0x666C, -/* 2020 */ 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 0x6672, 0x6701, 0x690C, -/* 2028 */ 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA, 0x68F1, 0x690F, -/* 2030 */ 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6, 0x6913, 0x6910, 0x68F3, -/* 2038 */ 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, 0x68B4, 0x6911, 0x68EF, -/* 2040 */ 0x68C6, 0x6914, 0x68F8, 0x68D0, 0x68FD, 0x68FC, 0x68E8, 0x690B, -/* 2048 */ 0x690A, 0x6917, 0x68CE, 0x68C8, 0x68DD, 0x68DE, 0x68E6, 0x68F4, -/* 2050 */ 0x68D1, 0x6906, 0x68D4, 0x68E9, 0x6915, 0x6925, 0x68C7, 0x6B39, -/* 2058 */ 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97, 0x6B99, 0x6B95, 0x6BBD, -/* 2060 */ 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, 0x6E46, 0x6E47, 0x6E1F, -/* 2068 */ 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 0x6E62, 0x6E2B, 0x6E3F, -/* 2070 */ 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 0x6E4B, 0x6E40, 0x6E51, -/* 2078 */ 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E, 0x6E68, 0x6E5C, 0x6E61, 0x6E31, -/* 2080 */ 0x6E28, 0x6E60, 0x6E71, 0x6E6B, 0x6E39, 0x6E22, 0x6E30, 0x6E53, -/* 2088 */ 0x6E65, 0x6E27, 0x6E78, 0x6E64, 0x6E77, 0x6E55, 0x6E79, 0x6E52, -/* 2090 */ 0x6E66, 0x6E35, 0x6E36, 0x6E5A, 0x7120, 0x711E, 0x712F, 0x70FB, -/* 2098 */ 0x712E, 0x7131, 0x7123, 0x7125, 0x7122, 0x7132, 0x711F, 0x7128, -/* 20A0 */ 0x713A, 0x711B, 0x724B, 0x725A, 0x7288, 0x7289, 0x7286, 0x7285, -/* 20A8 */ 0x728B, 0x7312, 0x730B, 0x7330, 0x7322, 0x7331, 0x7333, 0x7327, -/* 20B0 */ 0x7332, 0x732D, 0x7326, 0x7323, 0x7335, 0x730C, 0x742E, 0x742C, -/* 20B8 */ 0x7430, 0x742B, 0x7416, 0x741A, 0x7421, 0x742D, 0x7431, 0x7424, -/* 20C0 */ 0x7423, 0x741D, 0x7429, 0x7420, 0x7432, 0x74FB, 0x752F, 0x756F, -/* 20C8 */ 0x756C, 0x75E7, 0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF, 0x75E4, -/* 20D0 */ 0x75D7, 0x7695, 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, 0x774D, -/* 20D8 */ 0x7745, 0x774A, 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, 0x7860, -/* 20E0 */ 0x7864, 0x7865, 0x785C, 0x786D, 0x7871, 0x786A, 0x786E, 0x7870, -/* 20E8 */ 0x7869, 0x7868, 0x785E, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, -/* 20F0 */ 0x7A02, 0x7A0A, 0x7A03, 0x7A0C, 0x7A04, 0x7A99, 0x7AE6, 0x7AE4, -/* 20F8 */ 0x7B4A, 0x7B3B, 0x7B44, 0x7B48, 0x7B4C, 0x7B4E, 0x7B40, 0x7B58, -/* 2100 */ 0x7B45, 0x7CA2, 0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, 0x7D6F, 0x7D63, -/* 2108 */ 0x7D53, 0x7D56, 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C, 0x7D6B, -/* 2110 */ 0x7D52, 0x7D54, 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E, 0x7F3F, -/* 2118 */ 0x7F65, 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, 0x804F, -/* 2120 */ 0x8050, 0x80FE, 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F, 0x8147, -/* 2128 */ 0x813D, 0x814D, 0x813A, 0x81E6, 0x81EE, 0x81F7, 0x81F8, 0x81F9, -/* 2130 */ 0x8204, 0x823C, 0x823D, 0x823F, 0x8275, 0x833B, 0x83CF, 0x83F9, -/* 2138 */ 0x8423, 0x83C0, 0x83E8, 0x8412, 0x83E7, 0x83E4, 0x83FC, 0x83F6, -/* 2140 */ 0x8410, 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF, 0x8401, 0x83DD, -/* 2148 */ 0x83E5, 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6, 0x83F5, -/* 2150 */ 0x83C9, 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, 0x83F3, -/* 2158 */ 0x83D5, 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x83C3, 0x83EC, -/* 2160 */ 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB, 0x83FE, -/* 2168 */ 0x86D8, 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA, 0x86DD, -/* 2170 */ 0x86EB, 0x86DC, 0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1, 0x8848, -/* 2178 */ 0x8856, 0x8855, 0x88BA, 0x88D7, 0x88B9, 0x88B8, 0x88C0, 0x88BE, -/* 2180 */ 0x88B6, 0x88BC, 0x88B7, 0x88BD, 0x88B2, 0x8901, 0x88C9, 0x8995, -/* 2188 */ 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, 0x8A4E, 0x8A4D, 0x8A39, -/* 2190 */ 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, 0x8A52, 0x8A48, -/* 2198 */ 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80, 0x8CBA, -/* 21A0 */ 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89, 0x8DD8, -/* 21A8 */ 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5, 0x8DD9, -/* 21B0 */ 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA, 0x8EF9, 0x8EE6, -/* 21B8 */ 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, 0x8EEB, 0x8EF1, -/* 21C0 */ 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, 0x9034, 0x902F, 0x9106, 0x912C, -/* 21C8 */ 0x9104, 0x90FF, 0x90FC, 0x9108, 0x90F9, 0x90FB, 0x9101, 0x9100, -/* 21D0 */ 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915F, 0x9162, 0x9160, -/* 21D8 */ 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226, 0x920F, 0x920C, -/* 21E0 */ 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204, 0x9227, 0x9202, -/* 21E8 */ 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, 0x957B, 0x958D, -/* 21F0 */ 0x958C, 0x9590, 0x9687, 0x967E, 0x9688, 0x9689, 0x9683, 0x9680, -/* 21F8 */ 0x96C2, 0x96C8, 0x96C3, 0x96F1, 0x96F0, 0x976C, 0x9770, 0x976E, -/* 2200 */ 0x9807, 0x98A9, 0x98EB, 0x9CE6, 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, -/* 2208 */ 0x50BD, 0x50BF, 0x50C6, 0x50AE, 0x50C4, 0x50CA, 0x50B4, 0x50C8, -/* 2210 */ 0x50C2, 0x50B0, 0x50C1, 0x50BA, 0x50B1, 0x50CB, 0x50C9, 0x50B6, -/* 2218 */ 0x50B8, 0x51D7, 0x527A, 0x5278, 0x527B, 0x527C, 0x55C3, 0x55DB, -/* 2220 */ 0x55CC, 0x55D0, 0x55CB, 0x55CA, 0x55DD, 0x55C0, 0x55D4, 0x55C4, -/* 2228 */ 0x55E9, 0x55BF, 0x55D2, 0x558D, 0x55CF, 0x55D5, 0x55E2, 0x55D6, -/* 2230 */ 0x55C8, 0x55F2, 0x55CD, 0x55D9, 0x55C2, 0x5714, 0x5853, 0x5868, -/* 2238 */ 0x5864, 0x584F, 0x584D, 0x5849, 0x586F, 0x5855, 0x584E, 0x585D, -/* 2240 */ 0x5859, 0x5865, 0x585B, 0x583D, 0x5863, 0x5871, 0x58FC, 0x5AC7, -/* 2248 */ 0x5AC4, 0x5ACB, 0x5ABA, 0x5AB8, 0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, -/* 2250 */ 0x5AC8, 0x5ABB, 0x5AC6, 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, -/* 2258 */ 0x5ACD, 0x5AB9, 0x5A90, 0x5BD6, 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, -/* 2260 */ 0x5D71, 0x5D63, 0x5D4A, 0x5D65, 0x5D72, 0x5D6C, 0x5D5E, 0x5D68, -/* 2268 */ 0x5D67, 0x5D62, 0x5DF0, 0x5E4F, 0x5E4E, 0x5E4A, 0x5E4D, 0x5E4B, -/* 2270 */ 0x5EC5, 0x5ECC, 0x5EC6, 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, 0x5FAD, -/* 2278 */ 0x60F7, 0x6149, 0x614A, 0x612B, 0x6145, 0x6136, 0x6132, 0x612E, -/* 2280 */ 0x6146, 0x612F, 0x614F, 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, -/* 2288 */ 0x6225, 0x6224, 0x63C5, 0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, -/* 2290 */ 0x6420, 0x6424, 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, -/* 2298 */ 0x6437, 0x6422, 0x6423, 0x640C, 0x6426, 0x6430, 0x6428, 0x6441, -/* 22A0 */ 0x6435, 0x642F, 0x640A, 0x641A, 0x6440, 0x6425, 0x6427, 0x640B, -/* 22A8 */ 0x63E7, 0x641B, 0x642E, 0x6421, 0x640E, 0x656F, 0x6592, 0x65D3, -/* 22B0 */ 0x6686, 0x668C, 0x6695, 0x6690, 0x668B, 0x668A, 0x6699, 0x6694, -/* 22B8 */ 0x6678, 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962, 0x6971, -/* 22C0 */ 0x693F, 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A, -/* 22C8 */ 0x6948, 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, -/* 22D0 */ 0x6978, 0x6934, 0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, -/* 22D8 */ 0x6941, 0x6974, 0x694C, 0x693B, 0x694B, 0x6937, 0x695C, 0x694F, -/* 22E0 */ 0x6951, 0x6932, 0x6952, 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45, -/* 22E8 */ 0x6B43, 0x6B42, 0x6B48, 0x6B41, 0x6B9B, 0xFA0D, 0x6BFB, 0x6BFC, -/* 22F0 */ 0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F, 0x6EC0, -/* 22F8 */ 0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, 0x6ED2, -/* 2300 */ 0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6, -/* 2308 */ 0x6ECF, 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92, -/* 2310 */ 0x6E8E, 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA, -/* 2318 */ 0x6E97, 0x6EAE, 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, -/* 2320 */ 0x7141, 0x715D, 0x7162, 0x7172, 0x7178, 0x716A, 0x7161, 0x7142, -/* 2328 */ 0x7158, 0x7143, 0x714B, 0x7170, 0x715F, 0x7150, 0x7153, 0x7144, -/* 2330 */ 0x714D, 0x715A, 0x724F, 0x728D, 0x728C, 0x7291, 0x7290, 0x728E, -/* 2338 */ 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A, 0x7349, 0x7444, -/* 2340 */ 0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, 0x744F, 0x7450, -/* 2348 */ 0x744E, 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, 0x74FF, 0x74FE, -/* 2350 */ 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, 0x760F, 0x7603, -/* 2358 */ 0x75F7, 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, 0x75FB, 0x75F6, -/* 2360 */ 0x75ED, 0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD, 0x7755, 0x775F, -/* 2368 */ 0x7760, 0x7752, 0x7756, 0x775A, 0x7769, 0x7767, 0x7754, 0x7759, -/* 2370 */ 0x776D, 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F, 0x7884, 0x7895, -/* 2378 */ 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896, -/* 2380 */ 0x787B, 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11, 0x7A18, 0x7A19, -/* 2388 */ 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13, 0x7A1B, 0x7A10, 0x7AA3, -/* 2390 */ 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D, 0x7B74, 0x7B69, -/* 2398 */ 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, 0x7B78, 0x7B76, -/* 23A0 */ 0x7B63, 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 0x7D86, 0x7D80, 0x7D8D, -/* 23A8 */ 0x7D7F, 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83, 0x7D7C, 0x7D8C, -/* 23B0 */ 0x7D94, 0x7D84, 0x7D7D, 0x7D92, 0x7F6D, 0x7F6B, 0x7F67, 0x7F68, -/* 23B8 */ 0x7F6C, 0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB, 0x7FDC, 0x8021, 0x8164, -/* 23C0 */ 0x8160, 0x8177, 0x815C, 0x8169, 0x815B, 0x8162, 0x8172, 0x6721, -/* 23C8 */ 0x815E, 0x8176, 0x8167, 0x816F, 0x8144, 0x8161, 0x821D, 0x8249, -/* 23D0 */ 0x8244, 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, 0x8456, 0x8476, -/* 23D8 */ 0x8479, 0x848F, 0x848D, 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, -/* 23E0 */ 0x8430, 0x844D, 0x847D, 0x845A, 0x8459, 0x8474, 0x8473, 0x845D, -/* 23E8 */ 0x8507, 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, 0x8443, 0x8478, -/* 23F0 */ 0x8432, 0x8445, 0x8429, 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, -/* 23F8 */ 0x845F, 0x8470, 0x8439, 0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, -/* 2400 */ 0x848E, 0x843B, 0x8447, 0x8436, 0x8433, 0x8468, 0x847E, 0x8444, -/* 2408 */ 0x842B, 0x8460, 0x8454, 0x846E, 0x8450, 0x870B, 0x8704, 0x86F7, -/* 2410 */ 0x870C, 0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8, 0x870E, 0x8709, -/* 2418 */ 0x8701, 0x86F6, 0x870D, 0x8705, 0x88D6, 0x88CB, 0x88CD, 0x88CE, -/* 2420 */ 0x88DE, 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF, -/* 2428 */ 0x89E5, 0x89E4, 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, -/* 2430 */ 0x8A86, 0x8A7F, 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, -/* 2438 */ 0x8A83, 0x8A81, 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65, -/* 2440 */ 0x8C64, 0x8C66, 0x8C86, 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69, -/* 2448 */ 0x8D91, 0x8D8C, 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, 0x8D94, 0x8D90, -/* 2450 */ 0x8D92, 0x8DF0, 0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0, 0x8DE9, -/* 2458 */ 0x8DE3, 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, 0x8F06, 0x8EFF, -/* 2460 */ 0x8F01, 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, 0x9052, -/* 2468 */ 0x903F, 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, 0x9111, -/* 2470 */ 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248, 0x9252, -/* 2478 */ 0x9230, 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283, 0x922E, -/* 2480 */ 0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, 0x926F, -/* 2488 */ 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, -/* 2490 */ 0x924E, 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, 0x959C, 0x959E, -/* 2498 */ 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA, 0x96FD, -/* 24A0 */ 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F, 0x980D, -/* 24A8 */ 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0, 0x99B5, -/* 24B0 */ 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, 0x9EFD, -/* 24B8 */ 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, 0x50DD, -/* 24C0 */ 0x50E4, 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0, 0x51D8, -/* 24C8 */ 0x5280, 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627, 0x5615, -/* 24D0 */ 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613, 0x5602, -/* 24D8 */ 0x55FA, 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C, 0x5890, -/* 24E0 */ 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, 0x588B, 0x587A, 0x5887, -/* 24E8 */ 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, 0x5894, 0x588F, -/* 24F0 */ 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA, 0x5ADA, -/* 24F8 */ 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC, 0x5ADE, -/* 2500 */ 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0, 0x5BE3, 0x5C63, -/* 2508 */ 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81, 0x5D77, 0x5D8A, -/* 2510 */ 0x5D89, 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79, 0x5D7F, 0x5E58, -/* 2518 */ 0x5E59, 0x5E53, 0x5ED8, 0x5ED1, 0x5ED7, 0x5ECE, 0x5EDC, 0x5ED5, -/* 2520 */ 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, 0x5F43, 0x5F6F, 0x5FB6, 0x612C, -/* 2528 */ 0x6128, 0x6141, 0x615E, 0x6171, 0x6173, 0x6152, 0x6153, 0x6172, -/* 2530 */ 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, 0x615B, 0x6165, 0x613B, -/* 2538 */ 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, 0x622B, 0x642B, 0x644D, -/* 2540 */ 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, 0x6473, 0x647D, 0x6475, -/* 2548 */ 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C, 0x644B, 0x6453, -/* 2550 */ 0x6460, 0x6450, 0x647F, 0x643F, 0x646C, 0x646B, 0x6459, 0x6465, -/* 2558 */ 0x6477, 0x6573, 0x65A0, 0x66A1, 0x66A0, 0x669F, 0x6705, 0x6704, -/* 2560 */ 0x6722, 0x69B1, 0x69B6, 0x69C9, 0x69A0, 0x69CE, 0x6996, 0x69B0, -/* 2568 */ 0x69AC, 0x69BC, 0x6991, 0x6999, 0x698E, 0x69A7, 0x698D, 0x69A9, -/* 2570 */ 0x69BE, 0x69AF, 0x69BF, 0x69C4, 0x69BD, 0x69A4, 0x69D4, 0x69B9, -/* 2578 */ 0x69CA, 0x699A, 0x69CF, 0x69B3, 0x6993, 0x69AA, 0x69A1, 0x699E, -/* 2580 */ 0x69D9, 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5, 0x69C6, 0x6B4A, -/* 2588 */ 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3, 0x6BC4, 0x6BFE, -/* 2590 */ 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03, 0x6F25, 0x6EF8, 0x6F37, 0x6EFB, -/* 2598 */ 0x6F2E, 0x6F09, 0x6F4E, 0x6F19, 0x6F1A, 0x6F27, 0x6F18, 0x6F3B, -/* 25A0 */ 0x6F12, 0x6EED, 0x6F0A, 0x6F36, 0x6F73, 0x6EF9, 0x6EEE, 0x6F2D, -/* 25A8 */ 0x6F40, 0x6F30, 0x6F3C, 0x6F35, 0x6EEB, 0x6F07, 0x6F0E, 0x6F43, -/* 25B0 */ 0x6F05, 0x6EFD, 0x6EF6, 0x6F39, 0x6F1C, 0x6EFC, 0x6F3A, 0x6F1F, -/* 25B8 */ 0x6F0D, 0x6F1E, 0x6F08, 0x6F21, 0x7187, 0x7190, 0x7189, 0x7180, -/* 25C0 */ 0x7185, 0x7182, 0x718F, 0x717B, 0x7186, 0x7181, 0x7197, 0x7244, -/* 25C8 */ 0x7253, 0x7297, 0x7295, 0x7293, 0x7343, 0x734D, 0x7351, 0x734C, -/* 25D0 */ 0x7462, 0x7473, 0x7471, 0x7475, 0x7472, 0x7467, 0x746E, 0x7500, -/* 25D8 */ 0x7502, 0x7503, 0x757D, 0x7590, 0x7616, 0x7608, 0x760C, 0x7615, -/* 25E0 */ 0x7611, 0x760A, 0x7614, 0x76B8, 0x7781, 0x777C, 0x7785, 0x7782, -/* 25E8 */ 0x776E, 0x7780, 0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA, 0x78B4, -/* 25F0 */ 0x78AD, 0x78A8, 0x787E, 0x78AB, 0x789E, 0x78A5, 0x78A0, 0x78AC, -/* 25F8 */ 0x78A2, 0x78A4, 0x7998, 0x798A, 0x798B, 0x7996, 0x7995, 0x7994, -/* 2600 */ 0x7993, 0x7997, 0x7988, 0x7992, 0x7990, 0x7A2B, 0x7A4A, 0x7A30, -/* 2608 */ 0x7A2F, 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, 0x7AEE, 0x7B88, -/* 2610 */ 0x7B9C, 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, 0x7B8C, 0x7B9B, -/* 2618 */ 0x7B8E, 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82, 0x7CBB, -/* 2620 */ 0x7CBF, 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3, 0x7DAA, -/* 2628 */ 0x7DC1, 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, 0x7DC6, 0x7DCB, -/* 2630 */ 0x7DCC, 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6, 0x7DAE, -/* 2638 */ 0x7DA9, 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, 0x7FDE, -/* 2640 */ 0x8024, 0x805D, 0x805C, 0x8189, 0x8186, 0x8183, 0x8187, 0x818D, -/* 2648 */ 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4, 0x84A1, 0x849F, 0x84BA, -/* 2650 */ 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, 0x84B4, 0x84C1, -/* 2658 */ 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7, 0x84BB, -/* 2660 */ 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, 0x84AF, 0x84A8, -/* 2668 */ 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4, 0x84D2, -/* 2670 */ 0x84DB, 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876B, -/* 2678 */ 0x8740, 0x872E, 0x871E, 0x8721, 0x8719, 0x871B, 0x8743, 0x872C, -/* 2680 */ 0x8741, 0x873E, 0x8746, 0x8720, 0x8732, 0x872A, 0x872D, 0x873C, -/* 2688 */ 0x8712, 0x873A, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, -/* 2690 */ 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7, 0x88E7, 0x88F1, 0x88F2, -/* 2698 */ 0x88FA, 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB, 0x88F0, 0x88EC, -/* 26A0 */ 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9, 0x89EB, 0x89E8, -/* 26A8 */ 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, 0x8C3D, 0x8C68, -/* 26B0 */ 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, 0x8E02, 0x8DFF, -/* 26B8 */ 0x8E0D, 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06, 0x8E05, 0x8DFE, -/* 26C0 */ 0x8E00, 0x8E04, 0x8F10, 0x8F11, 0x8F0E, 0x8F0D, 0x9123, 0x911C, -/* 26C8 */ 0x9120, 0x9122, 0x911F, 0x911D, 0x911A, 0x9124, 0x9121, 0x911B, -/* 26D0 */ 0x917A, 0x9172, 0x9179, 0x9173, 0x92A5, 0x92A4, 0x9276, 0x929B, -/* 26D8 */ 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D, 0x92A6, 0x929A, 0x92AB, -/* 26E0 */ 0x9279, 0x9297, 0x927F, 0x92A3, 0x92EE, 0x928E, 0x9282, 0x9295, -/* 26E8 */ 0x92A2, 0x927D, 0x9288, 0x92A1, 0x928A, 0x9286, 0x928C, 0x9299, -/* 26F0 */ 0x92A7, 0x927E, 0x9287, 0x92A9, 0x929D, 0x928B, 0x922D, 0x969E, -/* 26F8 */ 0x96A1, 0x96FF, 0x9758, 0x977D, 0x977A, 0x977E, 0x9783, 0x9780, -/* 2700 */ 0x9782, 0x977B, 0x9784, 0x9781, 0x977F, 0x97CE, 0x97CD, 0x9816, -/* 2708 */ 0x98AD, 0x98AE, 0x9902, 0x9900, 0x9907, 0x999D, 0x999C, 0x99C3, -/* 2710 */ 0x99B9, 0x99BB, 0x99BA, 0x99C2, 0x99BD, 0x99C7, 0x9AB1, 0x9AE3, -/* 2718 */ 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60, 0x9B61, 0x9B5F, 0x9CF1, 0x9CF2, -/* 2720 */ 0x9CF5, 0x9EA7, 0x50FF, 0x5103, 0x5130, 0x50F8, 0x5106, 0x5107, -/* 2728 */ 0x50F6, 0x50FE, 0x510B, 0x510C, 0x50FD, 0x510A, 0x528B, 0x528C, -/* 2730 */ 0x52F1, 0x52EF, 0x5648, 0x5642, 0x564C, 0x5635, 0x5641, 0x564A, -/* 2738 */ 0x5649, 0x5646, 0x5658, 0x565A, 0x5640, 0x5633, 0x563D, 0x562C, -/* 2740 */ 0x563E, 0x5638, 0x562A, 0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, -/* 2748 */ 0x58A0, 0x58A3, 0x58AF, 0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, -/* 2750 */ 0x5AF4, 0x5AFD, 0x5AF7, 0x5AF6, 0x5B03, 0x5AF8, 0x5B02, 0x5AF9, -/* 2758 */ 0x5B01, 0x5B07, 0x5B05, 0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F, -/* 2760 */ 0x5D92, 0x5DA2, 0x5D93, 0x5D95, 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, -/* 2768 */ 0x5D9E, 0x5E69, 0x5E5D, 0x5E60, 0x5E5C, 0x7DF3, 0x5EDB, 0x5EDE, -/* 2770 */ 0x5EE1, 0x5F49, 0x5FB2, 0x618B, 0x6183, 0x6179, 0x61B1, 0x61B0, -/* 2778 */ 0x61A2, 0x6189, 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, 0x6192, -/* 2780 */ 0x61AA, 0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470, -/* 2788 */ 0x6496, 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, 0x648B, 0x648A, -/* 2790 */ 0x648C, 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, 0x657A, -/* 2798 */ 0x6579, 0x657B, 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, -/* 27A0 */ 0x66B7, 0x66AA, 0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, -/* 27A8 */ 0x6A15, 0x69F1, 0x69E4, 0x6A20, 0x69FF, 0x69EC, 0x69E2, 0x6A1B, -/* 27B0 */ 0x6A1D, 0x69FE, 0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7, 0x69E7, -/* 27B8 */ 0x6A40, 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, 0x69EB, 0x6A09, -/* 27C0 */ 0x6A04, 0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07, 0x69F4, -/* 27C8 */ 0x6A16, 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, 0x6C00, -/* 27D0 */ 0x6BFF, 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92, -/* 27D8 */ 0x6F8D, 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96, -/* 27E0 */ 0x6F76, 0x6F6C, 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57, -/* 27E8 */ 0x6F94, 0x6F93, 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67, -/* 27F0 */ 0x6F90, 0x6F53, 0x6F8B, 0x6F69, 0x6F7F, 0x6F95, 0x6F63, 0x6F77, -/* 27F8 */ 0x6F6A, 0x6F7B, 0x71B2, 0x71AF, 0x719B, 0x71B0, 0x71A0, 0x719A, -/* 2800 */ 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4, 0x71A1, 0x71AA, -/* 2808 */ 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, 0x735E, -/* 2810 */ 0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359, 0x7362, -/* 2818 */ 0x7487, 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, 0x7485, 0x7488, -/* 2820 */ 0x747C, 0x7479, 0x7508, 0x7507, 0x757E, 0x7625, 0x761E, 0x7619, -/* 2828 */ 0x761D, 0x761C, 0x7623, 0x761A, 0x7628, 0x761B, 0x769C, 0x769D, -/* 2830 */ 0x769E, 0x769B, 0x778D, 0x778F, 0x7789, 0x7788, 0x78CD, 0x78BB, -/* 2838 */ 0x78CF, 0x78CC, 0x78D1, 0x78CE, 0x78D4, 0x78C8, 0x78C3, 0x78C4, -/* 2840 */ 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2, 0x799B, 0x6B76, -/* 2848 */ 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, 0x7BBE, 0x7BAC, -/* 2850 */ 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 0x7CC8, 0x7CCC, -/* 2858 */ 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, 0x7DE1, 0x7E03, -/* 2860 */ 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 0x7DDF, 0x7F76, -/* 2868 */ 0x7FAC, 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 0x7FEC, 0x7FE6, -/* 2870 */ 0x7FE8, 0x8064, 0x8067, 0x81A3, 0x819F, 0x819E, 0x8195, 0x81A2, -/* 2878 */ 0x8199, 0x8197, 0x8216, 0x824F, 0x8253, 0x8252, 0x8250, 0x824E, -/* 2880 */ 0x8251, 0x8524, 0x853B, 0x850F, 0x8500, 0x8529, 0x850E, 0x8509, -/* 2888 */ 0x850D, 0x851F, 0x850A, 0x8527, 0x851C, 0x84FB, 0x852B, 0x84FA, -/* 2890 */ 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2, 0x8515, 0x84F7, 0x84EB, -/* 2898 */ 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, 0x84FE, 0x8528, -/* 28A0 */ 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E, 0x84F6, 0x8531, 0x8526, -/* 28A8 */ 0x84E7, 0x84E8, 0x84F0, 0x84EF, 0x84F9, 0x8518, 0x8520, 0x8530, -/* 28B0 */ 0x850B, 0x8519, 0x852F, 0x8662, 0x8756, 0x8763, 0x8764, 0x8777, -/* 28B8 */ 0x87E1, 0x8773, 0x8758, 0x8754, 0x875B, 0x8752, 0x8761, 0x875A, -/* 28C0 */ 0x8751, 0x875E, 0x876D, 0x876A, 0x8750, 0x874E, 0x875F, 0x875D, -/* 28C8 */ 0x876F, 0x876C, 0x877A, 0x876E, 0x875C, 0x8765, 0x874F, 0x877B, -/* 28D0 */ 0x8775, 0x8762, 0x8767, 0x8769, 0x885A, 0x8905, 0x890C, 0x8914, -/* 28D8 */ 0x890B, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, 0x8911, 0x890E, -/* 28E0 */ 0x8909, 0x89A2, 0x89A4, 0x89A3, 0x89ED, 0x89F0, 0x89EC, 0x8ACF, -/* 28E8 */ 0x8AC6, 0x8AB8, 0x8AD3, 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7, -/* 28F0 */ 0x8ABE, 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, 0x8AD9, -/* 28F8 */ 0x8C3E, 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA, -/* 2900 */ 0x8CDD, 0x8CE7, 0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23, -/* 2908 */ 0x8E25, 0x8E24, 0x8E2E, 0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19, -/* 2910 */ 0x8E26, 0x8E27, 0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C, 0x8E17, -/* 2918 */ 0x8E1A, 0x8F2C, 0x8F24, 0x8F18, 0x8F1A, 0x8F20, 0x8F23, 0x8F16, -/* 2920 */ 0x8F17, 0x9073, 0x9070, 0x906F, 0x9067, 0x906B, 0x912F, 0x912B, -/* 2928 */ 0x9129, 0x912A, 0x9132, 0x9126, 0x912E, 0x9185, 0x9186, 0x918A, -/* 2930 */ 0x9181, 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0, -/* 2938 */ 0x92D9, 0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7, -/* 2940 */ 0x92DD, 0x92CC, 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE, -/* 2948 */ 0x92E6, 0x92CD, 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1, -/* 2950 */ 0x92D3, 0x92B5, 0x92E1, 0x92C6, 0x92B4, 0x957C, 0x95AC, 0x95AB, -/* 2958 */ 0x95AE, 0x95B0, 0x96A4, 0x96A2, 0x96D3, 0x9705, 0x9708, 0x9702, -/* 2960 */ 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0, 0x97CF, 0x981E, 0x981D, -/* 2968 */ 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, 0x98B2, 0x9908, -/* 2970 */ 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC, 0x99CD, -/* 2978 */ 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8, 0x99CB, -/* 2980 */ 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, 0x9AF1, -/* 2988 */ 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, 0x9B75, -/* 2990 */ 0x9B70, 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, 0x9CFF, -/* 2998 */ 0x9CF7, 0x9D07, 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, 0x9D04, -/* 29A0 */ 0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, 0x5117, 0x511A, -/* 29A8 */ 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, 0x566E, 0x5673, -/* 29B0 */ 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, 0x571C, 0x571B, -/* 29B8 */ 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, 0x58BC, 0x58C6, -/* 29C0 */ 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10, 0x5B16, -/* 29C8 */ 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1, 0x5DA9, -/* 29D0 */ 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2, 0x5DAD, -/* 29D8 */ 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9, 0x5EE7, -/* 29E0 */ 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x619D, 0x61A8, 0x6196, -/* 29E8 */ 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA, 0x61BF, 0x61B8, -/* 29F0 */ 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF, 0x64C9, 0x64BD, 0x6489, -/* 29F8 */ 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533, 0x657F, 0x657C, 0x65A2, -/* 2A00 */ 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, 0x66CF, 0x66BD, 0x66BB, -/* 2A08 */ 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, 0x6A49, 0x6A67, 0x6A32, -/* 2A10 */ 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, 0x6A5B, 0x6A51, 0x6A28, -/* 2A18 */ 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 0x6A64, 0x6A50, 0x6A4F, -/* 2A20 */ 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E, 0x6A56, 0x6A55, -/* 2A28 */ 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 0x6B56, 0x6BA7, 0x6BAA, -/* 2A30 */ 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03, 0x6C06, 0x6FAD, 0x6FCB, -/* 2A38 */ 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8, 0x6F5E, 0x6FC4, 0x6FBD, -/* 2A40 */ 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, 0x6FA5, 0x6FAE, 0x6FBA, 0x6FAC, -/* 2A48 */ 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8, 0x6FA2, 0x6FC9, 0x6FAB, 0x6FCD, -/* 2A50 */ 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2, 0x71BF, 0x71B8, 0x71D6, -/* 2A58 */ 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7, 0x71CF, 0x71BD, -/* 2A60 */ 0x71D8, 0x71BC, 0x71C6, 0x71DA, 0x71DB, 0x729D, 0x729E, 0x7369, -/* 2A68 */ 0x7366, 0x7367, 0x736C, 0x7365, 0x736B, 0x736A, 0x747F, 0x749A, -/* 2A70 */ 0x74A0, 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B, 0x7580, 0x762F, -/* 2A78 */ 0x762D, 0x7631, 0x763D, 0x7633, 0x763C, 0x7635, 0x7632, 0x7630, -/* 2A80 */ 0x76BB, 0x76E6, 0x779A, 0x779D, 0x77A1, 0x779C, 0x779B, 0x77A2, -/* 2A88 */ 0x77A3, 0x7795, 0x7799, 0x7797, 0x78DD, 0x78E9, 0x78E5, 0x78EA, -/* 2A90 */ 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2, 0x78ED, 0x78DF, 0x78E0, -/* 2A98 */ 0x79A4, 0x7A44, 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, 0x7AB5, 0x7AB1, -/* 2AA0 */ 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5, 0x7BDA, -/* 2AA8 */ 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB, 0x7BD8, -/* 2AB0 */ 0x7BDF, 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, 0x7E21, -/* 2AB8 */ 0x7E17, 0x7E0C, 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, 0x7E15, -/* 2AC0 */ 0x7E1A, 0x7E22, 0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, 0x7E14, 0x7E25, -/* 2AC8 */ 0x7E24, 0x7F43, 0x7F7B, 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF, 0x802A, -/* 2AD0 */ 0x8029, 0x806C, 0x81B1, 0x81A6, 0x81AE, 0x81B9, 0x81B5, 0x81AB, -/* 2AD8 */ 0x81B0, 0x81AC, 0x81B4, 0x81B2, 0x81B7, 0x81A7, 0x81F2, 0x8255, -/* 2AE0 */ 0x8256, 0x8257, 0x8556, 0x8545, 0x856B, 0x854D, 0x8553, 0x8561, -/* 2AE8 */ 0x8558, 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, -/* 2AF0 */ 0x8547, 0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, 0x8575, -/* 2AF8 */ 0x8555, 0x8567, 0x8560, 0x858C, 0x8566, 0x855D, 0x8554, 0x8565, -/* 2B00 */ 0x856C, 0x8663, 0x8665, 0x8664, 0x879B, 0x878F, 0x8797, 0x8793, -/* 2B08 */ 0x8792, 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87A3, -/* 2B10 */ 0x8785, 0x8790, 0x8791, 0x879D, 0x8784, 0x8794, 0x879C, 0x879A, -/* 2B18 */ 0x8789, 0x891E, 0x8926, 0x8930, 0x892D, 0x892E, 0x8927, 0x8931, -/* 2B20 */ 0x8922, 0x8929, 0x8923, 0x892F, 0x892C, 0x891F, 0x89F1, 0x8AE0, -/* 2B28 */ 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, 0x8B14, 0x8AE4, 0x8ADF, -/* 2B30 */ 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF, 0x8AEF, 0x8AFB, -/* 2B38 */ 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, 0x8CF0, 0x8CF3, -/* 2B40 */ 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, 0x8E38, 0x8E40, -/* 2B48 */ 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, 0x8E3F, 0x8EBD, -/* 2B50 */ 0x8F36, 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, 0x8F34, 0x9076, -/* 2B58 */ 0x9079, 0x907B, 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136, 0x9193, -/* 2B60 */ 0x9190, 0x9191, 0x918D, 0x918F, 0x9327, 0x931E, 0x9308, 0x931F, -/* 2B68 */ 0x9306, 0x930F, 0x937A, 0x9338, 0x933C, 0x931B, 0x9323, 0x9312, -/* 2B70 */ 0x9301, 0x9346, 0x932D, 0x930E, 0x930D, 0x92CB, 0x931D, 0x92FA, -/* 2B78 */ 0x9325, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324, 0x92FF, -/* 2B80 */ 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C, 0x930B, 0x92FE, -/* 2B88 */ 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD, 0x95BE, 0x95B9, -/* 2B90 */ 0x95BA, 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9, 0x96D4, 0x970B, -/* 2B98 */ 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97F0, 0x97F8, 0x9835, -/* 2BA0 */ 0x982F, 0x9832, 0x9924, 0x991F, 0x9927, 0x9929, 0x999E, 0x99EE, -/* 2BA8 */ 0x99EC, 0x99E5, 0x99E4, 0x99F0, 0x99E3, 0x99EA, 0x99E9, 0x99E7, -/* 2BB0 */ 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, 0x9AFA, 0x9AF9, 0x9AF7, -/* 2BB8 */ 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E, 0x9B7B, 0x9B82, -/* 2BC0 */ 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95, 0x9B7D, 0x9B88, 0x9D25, -/* 2BC8 */ 0x9D17, 0x9D20, 0x9D1E, 0x9D14, 0x9D29, 0x9D1D, 0x9D18, 0x9D22, -/* 2BD0 */ 0x9D10, 0x9D19, 0x9D1F, 0x9E88, 0x9E86, 0x9E87, 0x9EAE, 0x9EAD, -/* 2BD8 */ 0x9ED5, 0x9ED6, 0x9EFA, 0x9F12, 0x9F3D, 0x5126, 0x5125, 0x5122, -/* 2BE0 */ 0x5124, 0x5120, 0x5129, 0x52F4, 0x5693, 0x568C, 0x568D, 0x5686, -/* 2BE8 */ 0x5684, 0x5683, 0x567E, 0x5682, 0x567F, 0x5681, 0x58D6, 0x58D4, -/* 2BF0 */ 0x58CF, 0x58D2, 0x5B2D, 0x5B25, 0x5B32, 0x5B23, 0x5B2C, 0x5B27, -/* 2BF8 */ 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B, 0x5BF1, 0x5BF2, 0x5DB7, 0x5E6C, -/* 2C00 */ 0x5E6A, 0x5FBE, 0x5FBB, 0x61C3, 0x61B5, 0x61BC, 0x61E7, 0x61E0, -/* 2C08 */ 0x61E5, 0x61E4, 0x61E8, 0x61DE, 0x64EF, 0x64E9, 0x64E3, 0x64EB, -/* 2C10 */ 0x64E4, 0x64E8, 0x6581, 0x6580, 0x65B6, 0x65DA, 0x66D2, 0x6A8D, -/* 2C18 */ 0x6A96, 0x6A81, 0x6AA5, 0x6A89, 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, -/* 2C20 */ 0x6A87, 0x6A93, 0x6A8E, 0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, -/* 2C28 */ 0x6A7F, 0x6AA6, 0x6A9A, 0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, -/* 2C30 */ 0x6C09, 0x6FCC, 0x6FA9, 0x6FF4, 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, -/* 2C38 */ 0x6FE7, 0x6FE6, 0x6FDE, 0x6FF2, 0x6FDD, 0x6FE2, 0x6FE8, 0x71E1, -/* 2C40 */ 0x71F1, 0x71E8, 0x71F2, 0x71E4, 0x71F0, 0x71E2, 0x7373, 0x736E, -/* 2C48 */ 0x736F, 0x7497, 0x74B2, 0x74AB, 0x7490, 0x74AA, 0x74AD, 0x74B1, -/* 2C50 */ 0x74A5, 0x74AF, 0x7510, 0x7511, 0x7512, 0x750F, 0x7584, 0x7643, -/* 2C58 */ 0x7648, 0x7649, 0x7647, 0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, -/* 2C60 */ 0x77B7, 0x77B6, 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, 0x78FD, -/* 2C68 */ 0x7902, 0x78FB, 0x78FC, 0x78F2, 0x7905, 0x78F9, 0x78FE, 0x7904, -/* 2C70 */ 0x79AB, 0x79A8, 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, 0x7A5A, -/* 2C78 */ 0x7ABE, 0x7AC0, 0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, 0x7BFF, -/* 2C80 */ 0x7BFB, 0x7C0E, 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09, 0x7C03, -/* 2C88 */ 0x7C01, 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10, 0x7C0A, -/* 2C90 */ 0x7CE8, 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, 0x7E38, 0x7E2A, -/* 2C98 */ 0x7E49, 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, 0x7E36, -/* 2CA0 */ 0x7E44, 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2, -/* 2CA8 */ 0x802C, 0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, 0x81BC, -/* 2CB0 */ 0x81E9, 0x825B, 0x825A, 0x825C, 0x8583, 0x8580, 0x858F, 0x85A7, -/* 2CB8 */ 0x8595, 0x85A0, 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, 0x859E, -/* 2CC0 */ 0x8577, 0x857C, 0x8589, 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E, -/* 2CC8 */ 0x8596, 0x8586, 0x858D, 0x8599, 0x859D, 0x8581, 0x85A2, 0x8582, -/* 2CD0 */ 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859F, 0x8668, -/* 2CD8 */ 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, 0x87B9, 0x87B5, -/* 2CE0 */ 0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, 0x87AF, -/* 2CE8 */ 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, 0x87DE, -/* 2CF0 */ 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, 0x8952, 0x8937, -/* 2CF8 */ 0x8942, 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E, 0x8B18, -/* 2D00 */ 0x8B16, 0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 0x8B12, 0x8B15, -/* 2D08 */ 0x8B07, 0x8B0D, 0x8B08, 0x8B06, 0x8B1C, 0x8B13, 0x8B1A, 0x8C4F, -/* 2D10 */ 0x8C70, 0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94, 0x8CF9, 0x8D6F, -/* 2D18 */ 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47, 0x8F43, 0x8F40, -/* 2D20 */ 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B, 0x9199, 0x919F, -/* 2D28 */ 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, 0x9364, 0x9356, -/* 2D30 */ 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 0x9350, 0x9351, -/* 2D38 */ 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 0x9357, 0x9355, -/* 2D40 */ 0x9352, 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, 0x935E, 0x9363, -/* 2D48 */ 0x9367, 0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0, 0x95C9, 0x95C3, -/* 2D50 */ 0x95C5, 0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720, 0x971F, 0x9718, -/* 2D58 */ 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C, 0x979E, 0x979D, 0x97D5, -/* 2D60 */ 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A, 0x9849, 0x9845, 0x9843, -/* 2D68 */ 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, 0x9932, 0x992F, 0x992D, -/* 2D70 */ 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, 0x99FA, 0x99F4, -/* 2D78 */ 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB, 0x99FD, 0x99FE, 0x99FC, -/* 2D80 */ 0x9A03, 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 0x9AFC, 0x9B48, 0x9B9A, -/* 2D88 */ 0x9BA8, 0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, 0x9BA4, 0x9B86, -/* 2D90 */ 0x9BA2, 0x9BA0, 0x9BAF, 0x9D33, 0x9D41, 0x9D67, 0x9D36, 0x9D2E, -/* 2D98 */ 0x9D2F, 0x9D31, 0x9D38, 0x9D30, 0x9D45, 0x9D42, 0x9D43, 0x9D3E, -/* 2DA0 */ 0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D, 0x9E8A, 0x9E89, 0x9E8D, -/* 2DA8 */ 0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24, 0x9F23, 0x9F22, -/* 2DB0 */ 0x9F54, 0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, 0x569C, 0x5697, -/* 2DB8 */ 0x569A, 0x569D, 0x5699, 0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0, -/* 2DC0 */ 0x5E6D, 0x5E6E, 0x61D8, 0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA, -/* 2DC8 */ 0x61F0, 0x61EB, 0x61D6, 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, -/* 2DD0 */ 0x6501, 0x6503, 0x64FC, 0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8, -/* 2DD8 */ 0x6AC5, 0x6AB9, 0x6ABD, 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, 0x6AB7, -/* 2DE0 */ 0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E, 0x6BC9, 0x6C0B, 0x7007, 0x700C, -/* 2DE8 */ 0x700D, 0x7001, 0x7005, 0x7014, 0x700E, 0x6FFF, 0x7000, 0x6FFB, -/* 2DF0 */ 0x7026, 0x6FFC, 0x6FF7, 0x700A, 0x7201, 0x71FF, 0x71F9, 0x7203, -/* 2DF8 */ 0x71FD, 0x7376, 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, 0x74B6, -/* 2E00 */ 0x74BB, 0x74C2, 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650, -/* 2E08 */ 0x7653, 0x7657, 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA, -/* 2E10 */ 0x78FF, 0x790C, 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, -/* 2E18 */ 0x79AD, 0x79AC, 0x7A5F, 0x7C1C, 0x7C29, 0x7C19, 0x7C20, 0x7C1F, -/* 2E20 */ 0x7C2D, 0x7C1D, 0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30, 0x7E5C, -/* 2E28 */ 0x7E50, 0x7E56, 0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51, 0x7E60, -/* 2E30 */ 0x7E57, 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, 0x8075, 0x81D1, -/* 2E38 */ 0x81D2, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0, 0x85C3, -/* 2E40 */ 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, 0x85CB, -/* 2E48 */ 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624, 0x85B8, -/* 2E50 */ 0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB, 0x87EB, -/* 2E58 */ 0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, 0x87D3, -/* 2E60 */ 0x87ED, 0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, 0x8801, 0x87F4, -/* 2E68 */ 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, 0x894C, 0x8946, 0x8950, -/* 2E70 */ 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30, 0x8B35, -/* 2E78 */ 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, 0x8B26, -/* 2E80 */ 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, 0x8C75, -/* 2E88 */ 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00, 0x8E5C, -/* 2E90 */ 0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67, 0x8E5B, -/* 2E98 */ 0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47, 0x8F48, -/* 2EA0 */ 0x8F4B, 0x9128, 0x913A, 0x913B, 0x913E, 0x91A8, 0x91A5, 0x91A7, -/* 2EA8 */ 0x91AF, 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7, 0x939B, 0x939D, -/* 2EB0 */ 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395, 0x9388, -/* 2EB8 */ 0x9399, 0x939F, 0x938D, 0x93B1, 0x9391, 0x93B2, 0x93A4, 0x93A8, -/* 2EC0 */ 0x93B4, 0x93A3, 0x93A5, 0x95D2, 0x95D3, 0x95D1, 0x96B3, 0x96D7, -/* 2EC8 */ 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722, 0x9725, -/* 2ED0 */ 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA, 0x97A2, 0x97A5, -/* 2ED8 */ 0x97D7, 0x97D9, 0x97D6, 0x97D8, 0x97FA, 0x9850, 0x9851, 0x9852, -/* 2EE0 */ 0x98B8, 0x9941, 0x993C, 0x993A, 0x9A0F, 0x9A0B, 0x9A09, 0x9A0D, -/* 2EE8 */ 0x9A04, 0x9A11, 0x9A0A, 0x9A05, 0x9A07, 0x9A06, 0x9AC0, 0x9ADC, -/* 2EF0 */ 0x9B08, 0x9B04, 0x9B05, 0x9B29, 0x9B35, 0x9B4A, 0x9B4C, 0x9B4B, -/* 2EF8 */ 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1, 0x9BB5, 0x9BB8, 0x9BD3, -/* 2F00 */ 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, 0x9D53, 0x9D4F, 0x9D4A, -/* 2F08 */ 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 0x9D57, 0x9D52, 0x9D54, -/* 2F10 */ 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF, 0x9F01, 0x9F00, -/* 2F18 */ 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, 0x9F28, 0x9F4C, 0x9F55, -/* 2F20 */ 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4, 0x56AB, 0x56AD, 0x56A6, -/* 2F28 */ 0x56A7, 0x56AA, 0x56AC, 0x58DA, 0x58DD, 0x58DB, 0x5912, 0x5B3D, -/* 2F30 */ 0x5B3E, 0x5B3F, 0x5DC3, 0x5E70, 0x5FBF, 0x61FB, 0x6507, 0x6510, -/* 2F38 */ 0x650D, 0x6509, 0x650C, 0x650E, 0x6584, 0x65DE, 0x65DD, 0x66DE, -/* 2F40 */ 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 0x6AD9, 0x6ACB, 0x6ADF, 0x6ADC, -/* 2F48 */ 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60, 0x6BB0, 0x6C0C, -/* 2F50 */ 0x7019, 0x7027, 0x7020, 0x7016, 0x702B, 0x7021, 0x7022, 0x7023, -/* 2F58 */ 0x7029, 0x7017, 0x7024, 0x701C, 0x702A, 0x720C, 0x720A, 0x7207, -/* 2F60 */ 0x7202, 0x7205, 0x72A5, 0x72A6, 0x72A4, 0x72A3, 0x72A1, 0x74CB, -/* 2F68 */ 0x74C5, 0x74B7, 0x74C3, 0x7516, 0x7660, 0x77C9, 0x77CA, 0x77C4, -/* 2F70 */ 0x77F1, 0x791D, 0x791B, 0x7921, 0x791C, 0x7917, 0x791E, 0x79B0, -/* 2F78 */ 0x7A67, 0x7A68, 0x7C33, 0x7C3C, 0x7C39, 0x7C2C, 0x7C3B, 0x7CEC, -/* 2F80 */ 0x7CEA, 0x7E76, 0x7E75, 0x7E78, 0x7E70, 0x7E77, 0x7E6F, 0x7E7A, -/* 2F88 */ 0x7E72, 0x7E74, 0x7E68, 0x7F4B, 0x7F4A, 0x7F83, 0x7F86, 0x7FB7, -/* 2F90 */ 0x7FFD, 0x7FFE, 0x8078, 0x81D7, 0x81D5, 0x8264, 0x8261, 0x8263, -/* 2F98 */ 0x85EB, 0x85F1, 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA, 0x85D7, -/* 2FA0 */ 0x85EC, 0x85F2, 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, 0x85D1, -/* 2FA8 */ 0x85F0, 0x85E6, 0x85EF, 0x85DE, 0x85E2, 0x8800, 0x87FA, 0x8803, -/* 2FB0 */ 0x87F6, 0x87F7, 0x8809, 0x880C, 0x880B, 0x8806, 0x87FC, 0x8808, -/* 2FB8 */ 0x87FF, 0x880A, 0x8802, 0x8962, 0x895A, 0x895B, 0x8957, 0x8961, -/* 2FC0 */ 0x895C, 0x8958, 0x895D, 0x8959, 0x8988, 0x89B7, 0x89B6, 0x89F6, -/* 2FC8 */ 0x8B50, 0x8B48, 0x8B4A, 0x8B40, 0x8B53, 0x8B56, 0x8B54, 0x8B4B, -/* 2FD0 */ 0x8B55, 0x8B51, 0x8B42, 0x8B52, 0x8B57, 0x8C43, 0x8C77, 0x8C76, -/* 2FD8 */ 0x8C9A, 0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, 0x8DAD, 0x8DAB, -/* 2FE0 */ 0x8E6D, 0x8E78, 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2, 0x8F52, -/* 2FE8 */ 0x8F51, 0x8F4F, 0x8F50, 0x8F53, 0x8FB4, 0x9140, 0x913F, 0x91B0, -/* 2FF0 */ 0x91AD, 0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0, 0x93F9, -/* 2FF8 */ 0x93EC, 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4, 0x93EE, -/* 3000 */ 0x93E3, 0x93D5, 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93E7, 0x957D, -/* 3008 */ 0x95DA, 0x95DB, 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728, 0x9726, -/* 3010 */ 0x97B3, 0x97B7, 0x97B6, 0x97DD, 0x97DE, 0x97DF, 0x985C, 0x9859, -/* 3018 */ 0x985D, 0x9857, 0x98BF, 0x98BD, 0x98BB, 0x98BE, 0x9948, 0x9947, -/* 3020 */ 0x9943, 0x99A6, 0x99A7, 0x9A1A, 0x9A15, 0x9A25, 0x9A1D, 0x9A24, -/* 3028 */ 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, 0x9A1C, 0x9A14, -/* 3030 */ 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA, 0x9BEB, -/* 3038 */ 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4, 0x9BD7, -/* 3040 */ 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA, 0x9D77, -/* 3048 */ 0x9D81, 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78, 0x9D86, -/* 3050 */ 0x9D8B, 0x9D8C, 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70, 0x9D69, -/* 3058 */ 0x9D85, 0x9D73, 0x9D7B, 0x9D82, 0x9D6F, 0x9D79, 0x9D7F, 0x9D87, -/* 3060 */ 0x9D68, 0x9E94, 0x9E91, 0x9EC0, 0x9EFC, 0x9F2D, 0x9F40, 0x9F41, -/* 3068 */ 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337, 0x56B2, 0x56B5, 0x56B3, -/* 3070 */ 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF, 0x5FC0, 0x5FC1, -/* 3078 */ 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF, 0x66E8, 0x66E3, -/* 3080 */ 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, 0x6AF1, 0x6AEE, -/* 3088 */ 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, 0x7031, 0x7042, -/* 3090 */ 0x7038, 0x703F, 0x703A, 0x7039, 0x7040, 0x703B, 0x7033, 0x7041, -/* 3098 */ 0x7213, 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA, 0x76AB, 0x76AA, -/* 30A0 */ 0x76BE, 0x76ED, 0x77CC, 0x77CE, 0x77CF, 0x77CD, 0x77F2, 0x7925, -/* 30A8 */ 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79B2, 0x7A6E, 0x7A6C, -/* 30B0 */ 0x7A6D, 0x7AF7, 0x7C49, 0x7C48, 0x7C4A, 0x7C47, 0x7C45, 0x7CEE, -/* 30B8 */ 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, 0x7FBA, 0x7FFF, 0x8079, 0x81DB, -/* 30C0 */ 0x81D9, 0x820B, 0x8268, 0x8269, 0x8622, 0x85FF, 0x8601, 0x85FE, -/* 30C8 */ 0x861B, 0x8600, 0x85F6, 0x8604, 0x8609, 0x8605, 0x860C, 0x85FD, -/* 30D0 */ 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816, 0x8963, 0x8966, -/* 30D8 */ 0x89B9, 0x89F7, 0x8B60, 0x8B6A, 0x8B5D, 0x8B68, 0x8B63, 0x8B65, -/* 30E0 */ 0x8B67, 0x8B6D, 0x8DAE, 0x8E86, 0x8E88, 0x8E84, 0x8F59, 0x8F56, -/* 30E8 */ 0x8F57, 0x8F55, 0x8F58, 0x8F5A, 0x908D, 0x9143, 0x9141, 0x91B7, -/* 30F0 */ 0x91B5, 0x91B2, 0x91B3, 0x940B, 0x9413, 0x93FB, 0x9420, 0x940F, -/* 30F8 */ 0x9414, 0x93FE, 0x9415, 0x9410, 0x9428, 0x9419, 0x940D, 0x93F5, -/* 3100 */ 0x9400, 0x93F7, 0x9407, 0x940E, 0x9416, 0x9412, 0x93FA, 0x9409, -/* 3108 */ 0x93F8, 0x940A, 0x93FF, 0x93FC, 0x940C, 0x93F6, 0x9411, 0x9406, -/* 3110 */ 0x95DE, 0x95E0, 0x95DF, 0x972E, 0x972F, 0x97B9, 0x97BB, 0x97FD, -/* 3118 */ 0x97FE, 0x9860, 0x9862, 0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950, -/* 3120 */ 0x994E, 0x9959, 0x994C, 0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, -/* 3128 */ 0x9A2C, 0x9A2A, 0x9A36, 0x9A29, 0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, -/* 3130 */ 0x9ACA, 0x9AC6, 0x9B10, 0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7, -/* 3138 */ 0x9C05, 0x9C12, 0x9BF8, 0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, -/* 3140 */ 0x9C14, 0x9C09, 0x9D9F, 0x9D99, 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, -/* 3148 */ 0x9D90, 0x9D9B, 0x9DA0, 0x9D94, 0x9D9C, 0x9DAA, 0x9D97, 0x9DA1, -/* 3150 */ 0x9D9A, 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, 0x9DA9, 0x9D96, -/* 3158 */ 0x9DA6, 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, 0x9EE7, -/* 3160 */ 0x9EE6, 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59, -/* 3168 */ 0x9F91, 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE, -/* 3170 */ 0x5B48, 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, -/* 3178 */ 0x6AFC, 0x6B03, 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, -/* 3180 */ 0x7049, 0x7045, 0x7046, 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, -/* 3188 */ 0x766A, 0x77D0, 0x792D, 0x7931, 0x792F, 0x7C54, 0x7C53, 0x7CF2, -/* 3190 */ 0x7E8A, 0x7E87, 0x7E88, 0x7E8B, 0x7E86, 0x7E8D, 0x7F4D, 0x7FBB, -/* 3198 */ 0x8030, 0x81DD, 0x8618, 0x862A, 0x8626, 0x861F, 0x8623, 0x861C, -/* 31A0 */ 0x8619, 0x8627, 0x862E, 0x8621, 0x8620, 0x8629, 0x861E, 0x8625, -/* 31A8 */ 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A, -/* 31B0 */ 0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45, -/* 31B8 */ 0x8B7A, 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E, -/* 31C0 */ 0x8F5B, 0x8F5D, 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B, -/* 31C8 */ 0x9436, 0x9429, 0x943D, 0x943C, 0x9430, 0x9439, 0x942A, 0x9437, -/* 31D0 */ 0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4, 0x95E3, 0x9735, 0x973A, -/* 31D8 */ 0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0, 0x9958, 0x9956, -/* 31E0 */ 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A, 0x9A3F, -/* 31E8 */ 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 0x9B52, 0x9C2B, -/* 31F0 */ 0x9C1D, 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, 0x9C24, 0x9C21, -/* 31F8 */ 0x9DB7, 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, 0x9DCF, 0x9DBE, -/* 3200 */ 0x9DC5, 0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, 0x9DBA, 0x9DAC, -/* 3208 */ 0x9DC8, 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD, 0x9DB2, 0x9E7A, -/* 3210 */ 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18, 0x9F1A, 0x9F31, -/* 3218 */ 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6, 0x56C5, 0x56CB, -/* 3220 */ 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, 0x6521, 0x6520, -/* 3228 */ 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 0x7055, 0x7056, -/* 3230 */ 0x7057, 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, 0x74D8, 0x74D5, -/* 3238 */ 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, 0x7A70, 0x7A71, -/* 3240 */ 0x7C57, 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0x7CF4, 0x7CF1, 0x7E91, -/* 3248 */ 0x7F4F, 0x7F87, 0x81DE, 0x826B, 0x8634, 0x8635, 0x8633, 0x862C, -/* 3250 */ 0x8632, 0x8636, 0x882C, 0x8828, 0x8826, 0x882A, 0x8825, 0x8971, -/* 3258 */ 0x89BF, 0x89BE, 0x89FB, 0x8B7E, 0x8B84, 0x8B82, 0x8B86, 0x8B85, -/* 3260 */ 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A, 0x8E92, 0x8E90, 0x8E96, -/* 3268 */ 0x8E97, 0x8F60, 0x8F62, 0x9147, 0x944C, 0x9450, 0x944A, 0x944B, -/* 3270 */ 0x944F, 0x9447, 0x9445, 0x9448, 0x9449, 0x9446, 0x973F, 0x97E3, -/* 3278 */ 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B, 0x9A4E, 0x9A53, 0x9A54, -/* 3280 */ 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A, 0x9A49, 0x9A52, 0x9A50, 0x9AD0, -/* 3288 */ 0x9B19, 0x9B2B, 0x9B3B, 0x9B56, 0x9B55, 0x9C46, 0x9C48, 0x9C3F, -/* 3290 */ 0x9C44, 0x9C39, 0x9C33, 0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32, -/* 3298 */ 0x9C3D, 0x9C36, 0x9DDB, 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, -/* 32A0 */ 0x9DDC, 0x9DD1, 0x9DDF, 0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, -/* 32A8 */ 0x9DD5, 0x9DDD, 0x9EB6, 0x9EF0, 0x9F35, 0x9F33, 0x9F32, 0x9F42, -/* 32B0 */ 0x9F6B, 0x9F95, 0x9FA2, 0x513D, 0x5299, 0x58E8, 0x58E7, 0x5972, -/* 32B8 */ 0x5B4D, 0x5DD8, 0x882F, 0x5F4F, 0x6201, 0x6203, 0x6204, 0x6529, -/* 32C0 */ 0x6525, 0x6596, 0x66EB, 0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B, -/* 32C8 */ 0x705A, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, 0x77D4, 0x7C67, -/* 32D0 */ 0x7C66, 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, 0x863C, 0x8631, -/* 32D8 */ 0x863B, 0x863E, 0x8830, 0x8832, 0x882E, 0x8833, 0x8976, 0x8974, -/* 32E0 */ 0x8973, 0x89FE, 0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19, -/* 32E8 */ 0x8E98, 0x8F64, 0x8F63, 0x91BC, 0x9462, 0x9455, 0x945D, 0x9457, -/* 32F0 */ 0x945E, 0x97C4, 0x97C5, 0x9800, 0x9A56, 0x9A59, 0x9B1E, 0x9B1F, -/* 32F8 */ 0x9B20, 0x9C52, 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, 0x9C4B, 0x9C55, -/* 3300 */ 0x9C59, 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3, 0x9DEB, -/* 3308 */ 0x9DF8, 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0, -/* 3310 */ 0x9DE2, 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0, -/* 3318 */ 0x9EF2, 0x9EF3, 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, -/* 3320 */ 0x9F4F, 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, 0x5B4E, -/* 3328 */ 0x5C6D, 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, 0x7061, 0x705D, -/* 3330 */ 0x7060, 0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, 0x79B7, 0x79B6, -/* 3338 */ 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838, 0x8837, 0x8835, -/* 3340 */ 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D, 0x91BE, -/* 3348 */ 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, 0x9743, -/* 3350 */ 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, 0x9C67, -/* 3358 */ 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, 0x9E03, -/* 3360 */ 0x9E06, 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, 0x9E04, -/* 3368 */ 0x9EA0, 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, 0x652E, -/* 3370 */ 0x65B8, 0x6B18, 0x6B19, 0x6B17, 0x6B1A, 0x7062, 0x7226, 0x72AA, -/* 3378 */ 0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6, 0x7E9A, 0x7E98, -/* 3380 */ 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648, 0x8979, -/* 3388 */ 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5, 0x8EA4, -/* 3390 */ 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749, 0x9872, -/* 3398 */ 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10, 0x9E0F, -/* 33A0 */ 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78, 0x9F7B, -/* 33A8 */ 0x9F7A, 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2, 0x8EA6, -/* 33B0 */ 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9A60, 0x9C74, 0x9C73, -/* 33B8 */ 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, 0x9FA4, 0x7068, -/* 33C0 */ 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D, 0x883F, 0x8B9E, 0x8C9C, -/* 33C8 */ 0x8EA9, 0x8EC9, 0x974B, 0x9873, 0x9874, 0x98CC, 0x9961, 0x99AB, -/* 33D0 */ 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, 0x9E17, 0x9F48, 0x6207, -/* 33D8 */ 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 0x9480, 0x9481, 0x9A69, -/* 33E0 */ 0x9A68, 0x9B2E, 0x9E19, 0x7229, 0x864B, 0x8B9F, 0x9483, 0x9C79, -/* 33E8 */ 0x9EB7, 0x7675, 0x9A6B, 0x9C7A, 0x9E1D, 0x7069, 0x706A, 0x9EA4, -/* 33F0 */ 0x9F7E, 0x9F49, 0x9F98, 0x7881, 0x92B9, 0x88CF, 0x58BB, 0x6052, -/* 33F8 */ 0x7CA7, 0x5AFA, 0x2554, 0x2566, 0x2557, 0x2560, 0x256C, 0x2563, -/* 3400 */ 0x255A, 0x2569, 0x255D, 0x2552, 0x2564, 0x2555, 0x255E, 0x256A, -/* 3408 */ 0x2561, 0x2558, 0x2567, 0x255B, 0x2553, 0x2565, 0x2556, 0x255F, -/* 3410 */ 0x256B, 0x2562, 0x2559, 0x2568, 0x255C, 0x2551, 0x2550, 0x256D, -/* 3418 */ 0x256E, 0x2570, 0x256F, 0x2593, -/* End of table Total Length = 0x3680 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/gb12345.ut b/mozilla/lib/libi18n/unicode/utotbl/gb12345.ut deleted file mode 100644 index e35fc869f2c..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/gb12345.ut +++ /dev/null @@ -1,2694 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 2134 - srcEnd = 213B - destBegin = 3008 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 2231 - srcEnd = 2244 - destBegin = 2488 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 2245 - srcEnd = 2258 - destBegin = 2474 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 2259 - srcEnd = 2262 - destBegin = 2460 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 2265 - srcEnd = 226E - destBegin = 3220 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 2271 - srcEnd = 227C - destBegin = 2160 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 2325 - srcEnd = 237D - destBegin = FF05 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 2421 - srcEnd = 2473 - destBegin = 3041 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2521 - srcEnd = 2576 - destBegin = 30A1 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2621 - srcEnd = 2631 - destBegin = 0391 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2632 - srcEnd = 2638 - destBegin = 03A3 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2641 - srcEnd = 2651 - destBegin = 03B1 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 2652 - srcEnd = 2658 - destBegin = 03C3 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 2721 - srcEnd = 2726 - destBegin = 0410 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 2728 - srcEnd = 2741 - destBegin = 0416 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 2751 - srcEnd = 2756 - destBegin = 0430 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 2758 - srcEnd = 2771 - destBegin = 0436 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 2845 - srcEnd = 2869 - destBegin = 3105 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 2924 - srcEnd = 296F - destBegin = 2500 -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 2121 - srcEnd = 217E - mappingOffset = 0000 - Mapping = - 3000 3001 3002 30FB 02C9 02C7 00A8 3003 - 3005 2015 FF5E 2225 2026 2018 2019 201C - 201D 3014 3015 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3016 3017 3010 3011 00B1 - 00D7 00F7 2236 2227 2228 2211 220F 222A - 2229 2208 2237 221A 22A5 2225 2220 2312 - 2299 222B 222E 2261 224C 2248 223D 221D - 2260 226E 226F 2264 2265 221E 2235 2234 - 2642 2640 00B0 2032 2033 2103 FF04 00A4 - FFE0 FFE1 2030 00A7 2116 2606 2605 25CB - 25CF 25CE 25C7 25C6 25A1 25A0 25B3 25B2 - 203B 2192 2190 2191 2193 3013 -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 2321 - srcEnd = 2324 - mappingOffset = 005E - Mapping = - FF01 FF02 FF03 FFE5 -End of Item 0014 - -Begin of Item 0015 - Format 2 - srcBegin = 237E - destBegin = FFE3 -End of Item 0015 - -Begin of Item 0016 - Format 2 - srcBegin = 2727 - destBegin = 0401 -End of Item 0016 - -Begin of Item 0017 - Format 2 - srcBegin = 2757 - destBegin = 0451 -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 2821 - srcEnd = 283A - mappingOffset = 0062 - Mapping = - 0101 00E1 01CE 00E0 0113 00E9 011B 00E8 - 012B 00ED 01D0 00EC 014D 00F3 01D2 00F2 - 016B 00FA 01D4 00F9 01D6 01D8 01DA 01DC - 00FC 00EA -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 3021 - srcEnd = 307E - mappingOffset = 007C - Mapping = - 554A 963F 57C3 6328 54CE 5509 54C0 769A - 764C 85F9 77EE 827E 7919 611B 9698 978D - 6C28 5B89 4FFA 6309 6697 5CB8 80FA 6848 - 9AAF 6602 76CE 51F9 6556 71AC 7FF1 8956 - 50B2 5965 61CA 6FB3 82AD 634C 6252 53ED - 5427 7B06 516B 75A4 5DF4 62D4 8DCB 9776 - 628A 8019 58E9 9738 7F77 7238 767D 67CF - 767E 64FA 4F70 6557 62DC 7A17 6591 73ED - 642C 6273 822C 9812 677F 7248 626E 62CC - 4F34 74E3 534A 8FA6 7D46 90A6 5E6B 6886 - 699C 8180 7D81 68D2 78C5 868C 938A 508D - 8B17 82DE 80DE 5305 8912 5265 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 3121 - srcEnd = 317E - mappingOffset = 00DA - Mapping = - 8584 96F9 4FDD 5821 98FD 5BF6 62B1 5831 - 66B4 8C79 9B91 7206 676F 7891 60B2 5351 - 5317 8F29 80CC 8C9D 92C7 500D 72FD 5099 - 618A 7119 88AB 5954 82EF 672C 7B28 5D29 - 7DB3 752D 6CF5 8E66 8FF8 903C 9F3B 6BD4 - 9119 7B46 5F7C 78A7 84D6 853D 7562 6583 - 6BD6 5E63 5E87 75F9 9589 655D 5F0A 5FC5 - 8F9F 58C1 81C2 907F 965B 97AD 908A 7DE8 - 8CB6 6241 4FBF 8B8A 535E 8FA8 8FAF 8FAE - 904D 6A19 5F6A 8198 8868 9C49 618B 522B - 765F 5F6C 658C 7015 6FF1 8CD3 64EF 5175 - 51B0 67C4 4E19 79C9 9905 70B3 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 3221 - srcEnd = 327E - mappingOffset = 0138 - Mapping = - 75C5 5E76 73BB 83E0 64AD 64A5 9262 6CE2 - 535A 52C3 640F 9251 7B94 4F2F 5E1B 8236 - 8116 818A 6E24 6CCA 99C1 6355 535C 54FA - 88DC 57E0 4E0D 5E03 6B65 7C3F 90E8 6016 - 64E6 731C 88C1 6750 624D 8CA1 776C 8E29 - 91C7 5F69 83DC 8521 9910 53C3 8836 6B98 - 615A 6158 71E6 84BC 8259 5009 6EC4 85CF - 64CD 7CD9 69FD 66F9 8349 53A0 7B56 5074 - 518C 6E2C 5C64 8E6D 63D2 53C9 832C 8336 - 67E5 78B4 643D 5BDF 5C94 5DEE 8A6B 62C6 - 67F4 8C7A 6519 647B 87EC 995E 8B92 7E8F - 93DF 7523 95E1 986B 660C 7316 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 3321 - srcEnd = 337E - mappingOffset = 0196 - Mapping = - 5834 5617 5E38 9577 511F 8178 5EE0 655E - 66A2 5531 5021 8D85 6284 9214 671D 5632 - 6F6E 5DE2 5435 7092 8ECA 626F 64A4 63A3 - 5FB9 6F88 90F4 81E3 8FB0 5875 6668 5FF1 - 6C89 9673 8D81 896F 6491 7A31 57CE 6A59 - 6210 5448 4E58 7A0B 61F2 6F84 8AA0 627F - 901E 9A01 79E4 5403 75F4 6301 5319 6C60 - 9072 5F1B 99B3 803B 9F52 4F88 5C3A 8D64 - 7FC5 65A5 71BE 5145 885D 87F2 5D07 5BF5 - 62BD 916C 7587 8E8A 7A20 6101 7C4C 4EC7 - 7DA2 7785 919C 81ED 521D 51FA 6A71 53A8 - 8E87 92E4 96DB 6EC1 9664 695A -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 3421 - srcEnd = 347E - mappingOffset = 01F4 - Mapping = - 790E 5132 77D7 6410 89F8 8655 63E3 5DDD - 7A7F 693D 50B3 8239 5598 4E32 7621 7A97 - 5E62 5E8A 95D6 5275 5439 708A 6376 9318 - 5782 6625 693F 9187 5507 6DF3 7D14 8822 - 6233 7DBD 75B5 8328 78C1 96CC 8FAD 6148 - 74F7 8A5E 6B64 523A 8CDC 6B21 8070 8471 - 56F1 5306 5F9E 53E2 51D1 7C97 918B 7C07 - 4FC3 8EA5 7BE1 7AC4 6467 5D14 50AC 8106 - 7601 7CB9 6DEC 7FE0 6751 5B58 5BF8 78CB - 64AE 6413 63AA 632B 932F 642D 9054 7B54 - 7629 6253 5927 5446 6B79 50A3 6234 5E36 - 6B86 4EE3 8CB8 888B 5F85 902E -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 3521 - srcEnd = 357E - mappingOffset = 0252 - Mapping = - 6020 803D 64D4 4E39 55AE 9132 64A3 81BD - 65E6 6C2E 4F46 619A 6DE1 8A95 5F48 86CB - 7576 64CB 9EE8 8569 6A94 5200 6417 8E48 - 5012 5CF6 79B1 5C0E 5230 7A3B 60BC 9053 - 76D7 5FB7 5F97 7684 8E6C 71C8 767B 7B49 - 77AA 51F3 9127 5824 4F4E 6EF4 8FEA 6575 - 7B1B 72C4 6ECC 7FDF 5AE1 62B5 5E95 5730 - 8482 7B2C 5E1D 5F1F 905E 7DE0 985B 6382 - 6EC7 7898 9EDE 5178 975B 588A 96FB 4F43 - 7538 5E97 60E6 5960 6FB1 6BBF 7889 53FC - 96D5 51CB 5201 6389 540A 91E3 8ABF 8DCC - 7239 789F 8776 8FED 8ADC 758A -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 3621 - srcEnd = 367E - mappingOffset = 02B0 - Mapping = - 4E01 76EF 53EE 91D8 9802 9F0E 9320 5B9A - 8A02 4E22 6771 51AC 8463 61C2 52D5 68DF - 4F97 606B 51CD 6D1E 515C 6296 9B25 9661 - 8C46 9017 75D8 90FD 7763 6BD2 72A2 7368 - 8B80 5835 7779 8CED 675C 934D 809A 5EA6 - 6E21 5992 7AEF 77ED 935B 6BB5 65B7 7DDE - 5806 5151 968A 5C0D 58A9 5678 8E72 6566 - 9813 56E4 920D 76FE 9041 6387 54C6 591A - 596A 579B 8EB2 6735 8DFA 8235 5241 60F0 - 58AE 86FE 5CE8 9D5D 4FC4 984D 8A1B 5A25 - 60E1 5384 627C 904F 9102 9913 6069 800C - 5152 8033 723E 990C 6D31 4E8C -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 3721 - srcEnd = 377E - mappingOffset = 030E - Mapping = - 8CB3 767C 7F70 7B4F 4F10 4E4F 95A5 6CD5 - 73D0 85E9 5E06 756A 7FFB 6A0A 792C 91E9 - 7E41 51E1 7169 53CD 8FD4 7BC4 8CA9 72AF - 98EF 6CDB 574A 82B3 65B9 80AA 623F 9632 - 59A8 4EFF 8A2A 7D21 653E 83F2 975E 5561 - 98DB 80A5 532A 8AB9 5420 80BA 5EE2 6CB8 - 8CBB 82AC 915A 5429 6C1B 5206 7D1B 58B3 - 711A 6C7E 7C89 596E 4EFD 5FFF 61A4 7CDE - 8C50 5C01 6953 8702 5CF0 92D2 98A8 760B - 70FD 9022 99AE 7E2B 8AF7 5949 9CF3 4F5B - 5426 592B 6577 819A 5B75 6276 62C2 8F3B - 5E45 6C1F 7B26 4F0F 4FD8 670D -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 3821 - srcEnd = 387E - mappingOffset = 036C - Mapping = - 6D6E 6DAA 798F 88B1 5F17 752B 64AB 8F14 - 4FEF 91DC 65A7 812F 8151 5E9C 8150 8D74 - 526F 8986 8CE6 5FA9 5085 4ED8 961C 7236 - 8179 8CA0 5BCC 8A03 9644 5A66 7E1B 5490 - 5676 560E 8A72 6539 6982 9223 84CB 6E89 - 5E79 7518 6746 67D1 7AFF 809D 8D95 611F - 79C6 6562 8D1B 5CA1 525B 92FC 7F38 809B - 7DB1 5D17 6E2F 6760 7BD9 768B 9AD8 818F - 7F94 7CD5 641E 93AC 7A3F 544A 54E5 6B4C - 64F1 6208 9D3F 80F3 7599 5272 9769 845B - 683C 86E4 95A3 9694 927B 500B 5404 7D66 - 6839 8DDF 8015 66F4 5E9A 7FB9 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 3921 - srcEnd = 397E - mappingOffset = 03CA - Mapping = - 57C2 803F 6897 5DE5 653B 529F 606D 9F94 - 4F9B 8EAC 516C 5BAB 5F13 978F 6C5E 62F1 - 8CA2 5171 920E 52FE 6E9D 82DF 72D7 57A2 - 69CB 8CFC 591F 8F9C 83C7 5495 7B8D 4F30 - 6CBD 5B64 59D1 9F13 53E4 8831 9AA8 8C37 - 80A1 6545 9867 56FA 96C7 522E 74DC 526E - 5BE1 6302 8902 4E56 62D0 602A 68FA 95DC - 5B98 51A0 89C0 7BA1 9928 7F50 6163 704C - 8CAB 5149 5EE3 901B 7470 898F 572D 7845 - 6B78 9F9C 95A8 8ECC 9B3C 8A6D 7678 6842 - 6AC3 8DEA 8CB4 528A 8F25 6EDA 68CD 934B - 90ED 570B 679C 88F9 904E 54C8 -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 3A21 - srcEnd = 3A7E - mappingOffset = 0428 - Mapping = - 9AB8 5B69 6D77 6C26 4EA5 5BB3 99ED 9163 - 61A8 90AF 97D3 542B 6DB5 5BD2 51FD 558A - 7F55 7FF0 64BC 634D 65F1 61BE 608D 710A - 6C57 6F22 592F 676D 822A 58D5 568E 8C6A - 6BEB 90DD 597D 8017 865F 6D69 5475 559D - 8377 83CF 6838 79BE 548C 4F55 5408 76D2 - 8C89 95A1 6CB3 6DB8 8D6B 8910 9DB4 8CC0 - 563F 9ED1 75D5 5F88 72E0 6068 54FC 4EA8 - 6A2A 8861 6052 8F5F 54C4 70D8 8679 9D3B - 6D2A 5B8F 5F18 7D05 5589 4FAF 7334 543C - 539A 5019 5F8C 547C 4E4E 5FFD 745A 58FA - 846B 80E1 8774 72D0 7CCA 6E56 -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 3B21 - srcEnd = 3B7E - mappingOffset = 0486 - Mapping = - 5F27 864E 552C 8B77 4E92 6EEC 6237 82B1 - 5629 83EF 733E 6ED1 756B 5283 5316 8A71 - 69D0 5F8A 61F7 6DEE 58DE 6B61 74B0 6853 - 9084 7DE9 63DB 60A3 559A 7613 8C62 7165 - 6E19 5BA6 5E7B 8352 614C 9EC4 78FA 8757 - 7C27 7687 51F0 60F6 714C 6643 5E4C 604D - 8B0A 7070 63EE 8F1D 5FBD 6062 86D4 56DE - 6BC1 6094 6167 5349 60E0 6666 8CC4 7A62 - 6703 71F4 532F 8AF1 8AA8 7E6A 8477 660F - 5A5A 9B42 6E3E 6DF7 8C41 6D3B 4F19 706B - 7372 6216 60D1 970D 8CA8 798D 64CA 573E - 57FA 6A5F 7578 7A3D 7A4D 7B95 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 3C21 - srcEnd = 3C7E - mappingOffset = 04E4 - Mapping = - 808C 9951 8FF9 6FC0 8B4F 9DC4 59EC 7E3E - 7DDD 5409 6975 68D8 8F2F 7C4D 96C6 53CA - 6025 75BE 6C72 5373 5AC9 7D1A 64E0 5E7E - 810A 5DF1 858A 6280 5180 5B63 4F0E 796D - 5291 60B8 6FDF 5BC4 5BC2 8A08 8A18 65E2 - 5FCC 969B 5993 7E7C 7D00 5609 67B7 593E - 4F73 5BB6 52A0 83A2 9830 8CC8 7532 9240 - 5047 7A3C 50F9 67B6 99D5 5AC1 6BB2 76E3 - 5805 5C16 7B8B 9593 714E 517C 80A9 8271 - 5978 7DD8 7E6D 6AA2 67EC 78B1 9E7C 63C0 - 64BF 7C21 5109 526A 51CF 85A6 6ABB 9452 - 8E10 8CE4 898B 9375 7BAD 4EF6 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 3D21 - srcEnd = 3D7E - mappingOffset = 0542 - Mapping = - 5065 8266 528D 991E 6F38 6FFA 6F97 5EFA - 50F5 59DC 5C07 6F3F 6C5F 7586 8523 69F3 - 596C 8B1B 5320 91AC 964D 8549 6912 7901 - 7126 81A0 4EA4 90CA 6F86 9A55 5B0C 56BC - 652A 9278 77EF 50E5 811A 72E1 89D2 9903 - 7E73 7D5E 527F 6559 9175 8F4E 8F03 53EB - 7A96 63ED 63A5 7686 79F8 8857 968E 622A - 52AB 7BC0 6854 6770 6377 776B 7AED 6F54 - 7D50 89E3 59D0 6212 85C9 82A5 754C 501F - 4ECB 75A5 8AA1 5C4A 5DFE 7B4B 65A4 91D1 - 4ECA 6D25 895F 7DCA 9326 50C5 8B39 9032 - 9773 6649 7981 8FD1 71FC 6D78 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 3E21 - srcEnd = 3E7E - mappingOffset = 05A0 - Mapping = - 76E1 52C1 8346 5162 8396 775B 6676 9BE8 - 4EAC 9A5A 7CBE 7CB3 7D93 4E95 8B66 666F - 9838 975C 5883 656C 93E1 5F91 75D9 9756 - 7ADF 7AF6 51C8 70AF 7A98 63EA 7A76 7CFE - 7396 97ED 4E45 7078 4E5D 9152 53A9 6551 - 820A 81FC 8205 548E 5C31 759A 97A0 62D8 - 72D9 75BD 5C45 99D2 83CA 5C40 5480 77E9 - 8209 6CAE 805A 62D2 64DA 5DE8 5177 8DDD - 8E1E 92F8 4FF1 53E5 61FC 70AC 5287 6350 - 9D51 5A1F 5026 7737 5377 7D79 6485 652B - 6289 6398 5014 7235 89BA 51B3 8A23 7D76 - 5747 83CC 921E 8ECD 541B 5CFB -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 3F21 - srcEnd = 3F7E - mappingOffset = 05FE - Mapping = - 4FCA 7AE3 6D5A 90E1 99FF 5580 5496 5361 - 54AF 958B 63E9 6977 51F1 6168 520A 582A - 52D8 574E 780D 770B 5EB7 6177 7CE0 625B - 6297 4EA2 7095 8003 62F7 70E4 9760 5777 - 82DB 67EF 68F5 78D5 9846 79D1 6BBB 54B3 - 53EF 6E34 514B 523B 5BA2 8AB2 80AF 5543 - 58BE 61C7 5751 542D 7A7A 6050 5B54 63A7 - 6473 53E3 6263 5BC7 67AF 54ED 7A9F 82E6 - 9177 5EAB 8932 8A87 57AE 630E 8DE8 80EF - 584A 7B77 5108 5FEB 5BEC 6B3E 5321 7B50 - 72C2 6846 7926 7736 66E0 51B5 8667 76D4 - 5DCB 7ABA 8475 594E 9B41 5080 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 4021 - srcEnd = 407E - mappingOffset = 065C - Mapping = - 994B 6127 6F70 5764 6606 6346 56F0 62EC - 64F4 5ED3 95CA 5783 62C9 5587 881F 81D8 - 8FA3 5566 840A 4F86 8CF4 85CD 5A6A 6B04 - 6514 7C43 95CC 862D 703E 8B95 652C 89BD - 61F6 7E9C 721B 6FEB 7405 6994 72FC 5ECA - 90CE 6717 6D6A 6488 52DE 7262 8001 4F6C - 59E5 916A 70D9 6F87 52D2 6A02 96F7 9433 - 857E 78CA 7D2F 5121 58D8 64C2 808B 985E - 6CEA 68F1 695E 51B7 5398 68A8 7281 9ECE - 7C6C 72F8 96E2 7055 7406 674E 88CF 9BC9 - 79AE 8389 8354 540F 6817 9E97 53B2 52F5 - 792B 6B77 5229 5088 4F8B 4FD0 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 4121 - srcEnd = 417E - mappingOffset = 06BA - Mapping = - 75E2 7ACB 7C92 701D 96B8 529B 7483 54E9 - 5006 806F 84EE 9023 942E 5EC9 6190 6F23 - 7C3E 6582 81C9 93C8 6200 7149 7DF4 7CE7 - 51C9 6881 7CB1 826F 5169 8F1B 91CF 667E - 4EAE 8AD2 64A9 804A 50DA 7642 71CE 5BE5 - 907C 6F66 4E86 6482 9410 5ED6 6599 5217 - 88C2 70C8 52A3 7375 7433 6797 78F7 9716 - 81E8 9130 9C57 6DCB 51DB 8CC3 541D 62CE - 73B2 83F1 96F6 9F61 9234 4F36 7F9A 51CC - 9748 9675 5DBA 9818 53E6 4EE4 6E9C 7409 - 69B4 786B 993E 7559 5289 7624 6D41 67F3 - 516D 9F8D 807E 56A8 7C60 7ABF -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 4221 - srcEnd = 427E - mappingOffset = 0718 - Mapping = - 9686 58DF 650F 96B4 6A13 5A41 645F 7C0D - 6F0F 964B 8606 76E7 9871 5EEC 7210 64C4 - 6EF7 865C 9B6F 9E93 788C 9732 8DEF 8CC2 - 9E7F 6F5E 7984 9332 9678 622E 9A62 5415 - 92C1 4FA3 65C5 5C65 5C62 7E37 616E 6C2F - 5F8B 7387 6FFE 7DD1 5DD2 6523 5B7F 7064 - 5375 4E82 63A0 7565 6384 8F2A 502B 4F96 - 6DEA 7DB8 8AD6 863F 87BA 7F85 908F 947C - 7C6E 9A3E 88F8 843D 6D1B 99F1 7D61 5ABD - 9EBB 746A 78BC 879E 99AC 99E1 561B 55CE - 57CB 8CB7 9EA5 8CE3 9081 8109 779E 9945 - 883B 6EFF 8513 66FC 6162 6F2B -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 4321 - srcEnd = 437E - mappingOffset = 0776 - Mapping = - 8B3E 8292 832B 76F2 6C13 5FD9 83BD 732B - 8305 9328 6BDB 77DB 925A 536F 8302 5192 - 5E3D 8C8C 8CBF 9EBD 73AB 679A 6885 9176 - 9709 7164 6CA1 7709 5A92 9382 6BCF 7F8E - 6627 5BD0 59B9 5A9A 9580 60B6 5011 840C - 8499 6AAC 76DF 9333 731B 5922 5B5F 772F - 919A 9761 7CDC 8FF7 8B0E 5F4C 7C73 79D8 - 8993 6CCC 871C 5BC6 5E42 68C9 7720 7DBF - 5195 514D 52C9 5A29 7DEC 9762 82D7 63CF - 7784 85D0 79D2 6E3A 5EDF 5999 8511 6EC5 - 6C11 62BF 76BF 654F 61AB 95A9 660E 879F - 9CF4 9298 540D 547D 8B2C 6478 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 4421 - srcEnd = 447E - mappingOffset = 07D4 - Mapping = - 6479 8611 6A21 819C 78E8 6469 9B54 62B9 - 672B 83AB 58A8 9ED8 6CAB 6F20 5BDE 964C - 8B00 725F 67D0 62C7 7261 755D 59C6 6BCD - 5893 66AE 5E55 52DF 6155 6728 76EE 7766 - 7267 7A46 62FF 54EA 5450 9209 90A3 5A1C - 7D0D 6C16 4E43 5976 8010 5948 5357 7537 - 96E3 56CA 6493 8166 60F1 9B27 6DD6 5462 - 9912 5185 5AE9 80FD 59AE 9713 502A 6CE5 - 5C3C 64EC 4F60 533F 81A9 9006 6EBA 852B - 62C8 5E74 78BE 6506 637B 5FF5 5A18 91C0 - 9CE5 5C3F 634F 8076 5B7D 5699 9477 93B3 - 6D85 60A8 6AB8 7370 51DD 5BE7 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 4521 - srcEnd = 457E - mappingOffset = 0832 - Mapping = - 64F0 6FD8 725B 626D 9215 7D10 81BF 6FC3 - 8FB2 5F04 5974 52AA 6012 5973 6696 8650 - 7627 632A 61E6 7CEF 8AFE 54E6 6B50 9DD7 - 6BC6 85D5 5614 5076 6F1A 556A 8DB4 722C - 5E15 6015 7436 62CD 6392 724C 5F98 6E43 - 6D3E 6500 6F58 76E4 78D0 76FC 7554 5224 - 53DB 4E53 9F90 65C1 802A 80D6 629B 5486 - 5228 70AE 888D 8DD1 6CE1 5478 80DA 57F9 - 88F4 8CE0 966A 914D 4F69 6C9B 5674 76C6 - 7830 62A8 70F9 6F8E 5F6D 84EC 68DA 787C - 7BF7 81A8 670B 9D6C 6367 78B0 576F 7812 - 9739 6279 62AB 5288 7435 6BD7 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 4621 - srcEnd = 467E - mappingOffset = 0890 - Mapping = - 5564 813E 75B2 76AE 5339 75DE 50FB 5C41 - 8B6C 7BC7 504F 7247 9A19 98C4 6F02 74E2 - 7968 6487 77A5 62FC 983B 8CA7 54C1 8058 - 4E52 576A 860B 840D 5E73 6191 74F6 8A55 - 5C4F 5761 6F51 9817 5A46 7834 9B44 8FEB - 7C95 5256 64B2 92EA 50D5 8386 8461 83E9 - 84B2 57D4 6A38 5703 666E 6D66 8B5C 66DD - 7011 671F 6B3A 68F2 621A 59BB 4E03 51C4 - 6F06 67D2 6C8F 5176 68CB 5947 6B67 7566 - 5D0E 81CD 9F4A 65D7 7948 7941 9A0E 8D77 - 8C48 4E5E 4F01 5553 5951 780C 5668 6C23 - 8FC4 68C4 6C7D 6CE3 8A16 6390 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 4721 - srcEnd = 477E - mappingOffset = 08EE - Mapping = - 6070 6D3D 727D 6266 91FA 925B 5343 9077 - 7C3D 4EDF 8B19 4E7E 9ED4 9322 9257 524D - 6F5B 9063 6DFA 8B74 5879 5D4C 6B20 6B49 - 69CD 55C6 8154 7F8C 58BB 8594 5F3A 6436 - 6A47 936C 6572 6084 6A4B 77A7 55AC 50D1 - 5DE7 9798 64AC 7FF9 5CED 4FCF 7AC5 5207 - 8304 4E14 602F 7ACA 6B3D 4FB5 89AA 79E6 - 7434 52E4 82B9 64D2 79BD 5BE2 6C81 9752 - 8F15 6C2B 50BE 537F 6E05 64CE 6674 6C30 - 60C5 9803 8ACB 6176 74CA 7AAE 79CB 4E18 - 90B1 7403 6C42 56DA 914B 6CC5 8DA8 5340 - 86C6 66F2 8EC0 5C48 9A45 6E20 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 4821 - srcEnd = 487E - mappingOffset = 094C - Mapping = - 53D6 5A36 9F72 8DA3 53BB 5708 9874 6B0A - 919B 6CC9 5168 75CA 62F3 72AC 5238 52F8 - 7F3A 7094 7638 5374 9D72 69B7 78BA 96C0 - 88D9 7FA4 7136 71C3 5189 67D3 74E4 58E4 - 6518 56B7 8B93 9952 64FE 7E5E 60F9 71B1 - 58EC 4EC1 4EBA 5FCD 97CC 4EFB 8A8D 5203 - 598A 7D09 6254 4ECD 65E5 620E 8338 84C9 - 69AE 878D 7194 6EB6 5BB9 7D68 5197 63C9 - 67D4 8089 8339 8815 5112 5B7A 5982 8FB1 - 4E73 6C5D 5165 8925 8EDF 962E 854A 745E - 92ED 958F 6F64 82E5 5F31 6492 7051 85A9 - 816E 9C13 585E 8CFD 4E09 53C1 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 4921 - srcEnd = 497E - mappingOffset = 09AA - Mapping = - 5098 6563 6851 55D3 55AA 6414 9A37 6383 - 5AC2 745F 8272 6F80 68EE 50E7 838E 7802 - 6BBA 5239 6C99 7D17 50BB 5565 715E 7BE9 - 66EC 73CA 82EB 6749 5C71 5220 717D 886B - 9583 965D 64C5 8D0D 81B3 5584 6C55 6247 - 7E55 5892 50B7 5546 8CDE 664C 4E0A 5C1A - 88F3 68A2 634E 7A0D 71D2 828D 52FA 97F6 - 5C11 54E8 90B5 7D39 5962 8CD2 86C7 820C - 6368 8D66 651D 5C04 61FE 6D89 793E 8A2D - 7837 7533 547B 4F38 8EAB 6DF1 5A20 7D33 - 795E 6C88 5BE9 5B38 751A 814E 614E 6EF2 - 8072 751F 7525 7272 5347 7E69 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 4A21 - srcEnd = 4A7E - mappingOffset = 0A08 - Mapping = - 7701 76DB 5269 52DD 8056 5E2B 5931 7345 - 65BD 6FD5 8A69 5C38 8671 5341 77F3 62FE - 6642 4EC0 98DF 8755 5BE6 8B58 53F2 77E2 - 4F7F 5C4E 99DB 59CB 5F0F 793A 58EB 4E16 - 67FF 4E8B 62ED 8A93 901D 52E2 662F 55DC - 566C 9069 4ED5 4F8D 91CB 98FE 6C0F 5E02 - 6043 5BA4 8996 8A66 6536 624B 9996 5B88 - 58FD 6388 552E 53D7 7626 7378 852C 6A1E - 68B3 6B8A 6292 8F38 53D4 8212 6DD1 758F - 66F8 8D16 5B70 719F 85AF 6691 66D9 7F72 - 8700 9ECD 9F20 5C6C 8853 8FF0 6A39 675F - 620D 7AEA 5885 5EB6 6578 6F31 -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 4B21 - srcEnd = 4B7E - mappingOffset = 0A66 - Mapping = - 6055 5237 800D 6454 8870 7529 5E25 6813 - 62F4 971C 96D9 723D 8AB0 6C34 7761 7A0E - 542E 77AC 9806 821C 8AAC 78A9 6714 720D - 65AF 6495 5636 601D 79C1 53F8 7D72 6B7B - 8086 5BFA 55E3 56DB 4F3A 4F3C 98FC 5DF3 - 9B06 8073 616B 980C 9001 5B8B 8A1F 8AA6 - 641C 8258 64FB 55FD 8607 9165 4FD7 7D20 - 901F 7C9F 50F3 5851 6EAF 5BBF 8A34 8085 - 9178 849C 7B97 96D6 968B 96A8 7D8F 9AD3 - 788E 6B72 7A57 9042 96A7 795F 5B6B 640D - 7B0B 84D1 68AD 5506 7E2E 7463 7D22 9396 - 6240 584C 4ED6 5B83 5979 5854 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 4C21 - srcEnd = 4C7E - mappingOffset = 0AC4 - Mapping = - 737A 64BB 8E4B 8E0F 80CE 82D4 62AC 81FA - 6CF0 915E 592A 614B 6C70 574D 6524 8CAA - 7671 7058 58C7 6A80 75F0 6F6D 8B5A 8AC7 - 5766 6BEF 8892 78B3 63A2 5606 70AD 6E6F - 5858 642A 5802 68E0 819B 5510 7CD6 5018 - 8EBA 6DCC 8D9F 71D9 638F 6FE4 6ED4 7E27 - 8404 6843 9003 6DD8 9676 8A0E 5957 7279 - 85E4 9A30 75BC 8B04 68AF 5254 8E22 92BB - 63D0 984C 8E44 557C 9AD4 66FF 568F 60D5 - 6D95 5243 5C49 5929 6DFB 586B 7530 751C - 606C 8214 8146 6311 689D 8FE2 773A 8DF3 - 8CBC 9435 5E16 5EF3 807D 70F4 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 4D21 - srcEnd = 4D7E - mappingOffset = 0B22 - Mapping = - 6C40 5EF7 505C 4EAD 5EAD 633A 8247 901A - 6850 916E 77B3 540C 9285 5F64 7AE5 6876 - 6345 7B52 7D71 75DB 5077 6295 982D 900F - 51F8 79C3 7A81 5716 5F92 9014 5857 5C60 - 571F 5410 5154 6E4D 5718 63A8 983D 817F - 8715 892A 9000 541E 5C6F 81C0 62D6 6258 - 8131 9D15 9640 99B1 99DD 6A62 59A5 62D3 - 553E 6316 54C7 86D9 7AAA 5A03 74E6 896A - 6B6A 5916 8C4C 5F4E 7063 73A9 9811 4E38 - 70F7 5B8C 7897 633D 665A 7696 60CB 5B9B - 5A49 842C 8155 6C6A 738B 4EA1 6789 7DB2 - 5F80 65FA 671B 5FD8 5984 5A01 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 4E21 - srcEnd = 4E7E - mappingOffset = 0B80 - Mapping = - 5DCD 5FAE 5371 97CB 9055 6845 570D 552F - 60DF 7232 6FF0 7DAD 8466 840E 59D4 5049 - 50DE 5C3E 7DEF 672A 851A 5473 754F 80C3 - 5582 9B4F 4F4D 6E2D 8B02 5C09 6170 885B - 761F 6E29 868A 6587 805E 7D0B 543B 7A69 - 7D0A 554F 55E1 7FC1 74EE 64BE 8778 6E26 - 7AA9 6211 65A1 5367 63E1 6C83 5DEB 55DA - 93A2 70CF 6C61 8AA3 5C4B 7121 856A 68A7 - 543E 5434 6BCB 6B66 4E94 6342 5348 821E - 4F0D 4FAE 5862 620A 9727 6664 7269 52FF - 52D9 609F 8AA4 6614 7199 6790 897F 7852 - 77FD 6670 563B 5438 932B 72A7 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 4F21 - srcEnd = 4F7E - mappingOffset = 0BDE - Mapping = - 7A00 606F 5E0C 6089 819D 5915 60DC 7184 - 70EF 6EAA 6C50 7280 6A84 8972 5E2D 7FD2 - 5AB3 559C 9291 6D17 7CFB 9699 6232 7D30 - 778E 8766 5323 971E 8F44 6687 5CFD 4FE0 - 72F9 4E0B 53A6 590F 5687 6380 9341 5148 - 4ED9 9BAE 7E96 54B8 8CE2 929C 8237 9591 - 6D8E 5F26 5ACC 986F 96AA 73FE 737B 7E23 - 817A 9921 7FA1 61B2 9677 9650 7DAB 76F8 - 53A2 9472 9999 7BB1 8944 6E58 9109 7FD4 - 7965 8A73 60F3 97FF 4EAB 9805 5DF7 6A61 - 50CF 5411 8C61 856D 785D 9704 524A 54EE - 56C2 92B7 6D88 5BB5 6DC6 66C9 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 5021 - srcEnd = 507E - mappingOffset = 0C3C - Mapping = - 5C0F 5B5D 6821 8096 562F 7B11 6548 6954 - 4E9B 6B47 874E 978B 5354 633E 643A 90AA - 659C 8105 8AE7 5BEB 68B0 5378 87F9 61C8 - 6CC4 7009 8B1D 5C51 85AA 82AF 92C5 6B23 - 8F9B 65B0 5FFB 5FC3 4FE1 91C1 661F 8165 - 7329 60FA 8208 5211 578B 5F62 90A2 884C - 9192 5E78 674F 6027 59D3 5144 51F6 80F8 - 5308 6C79 96C4 718A 4F11 4FEE 7F9E 673D - 55C5 92B9 79C0 8896 7D89 589F 620C 9700 - 865A 5618 9808 5F90 8A31 84C4 9157 53D9 - 65ED 5E8F 755C 6064 7D6E 5A7F 7DD2 7E8C - 8ED2 55A7 5BA3 61F8 65CB 7384 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 5121 - srcEnd = 517E - mappingOffset = 0C9A - Mapping = - 9078 766C 7729 7D62 9774 859B 5B78 7A74 - 96EA 8840 52DB 718F 5FAA 65EC 8A62 5C0B - 99B4 5DE1 6B89 6C5B 8A13 8A0A 905C 8FC5 - 58D3 62BC 9D09 9D28 5440 4E2B 82BD 7259 - 869C 5D16 8859 6DAF 96C5 555E 4E9E 8A1D - 7109 54BD 95B9 70DF 6DF9 9E7D 56B4 7814 - 8712 5CA9 5EF6 8A00 9854 95BB 708E 6CBF - 5944 63A9 773C 884D 6F14 8277 5830 71D5 - 53AD 786F 96C1 5501 5F66 7130 5BB4 8AFA - 9A57 6B83 592E 9D26 79E7 694A 63DA 4F6F - 760D 7F8A 6D0B 967D 6C27 4EF0 7662 990A - 6A23 6F3E 9080 8170 5996 7476 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 5221 - srcEnd = 527E - mappingOffset = 0CF8 - Mapping = - 6447 582F 9065 7A91 8B21 59DA 54AC 8200 - 85E5 8981 8000 6930 564E 8036 723A 91CE - 51B6 4E5F 9801 6396 696D 8449 66F3 814B - 591C 6DB2 4E00 58F9 91AB 63D6 92A5 4F9D - 4F0A 8863 9824 5937 907A 79FB 5100 80F0 - 7591 6C82 5B9C 59E8 5F5D 6905 87FB 501A - 5DF2 4E59 77E3 4EE5 85DD 6291 6613 9091 - 5C79 5104 5F79 81C6 9038 8084 75AB 4EA6 - 88D4 610F 6BC5 61B6 7FA9 76CA 6EA2 8A63 - 8B70 8ABC 8B6F 5F02 7FFC 7FCC 7E79 8335 - 852D 56E0 6BB7 97F3 9670 59FB 541F 9280 - 6DEB 5BC5 98F2 5C39 5F15 96B1 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 5321 - srcEnd = 537E - mappingOffset = 0D56 - Mapping = - 5370 82F1 6AFB 5B30 9DF9 61C9 7E93 7469 - 87A2 71DF 7192 8805 8FCE 8D0F 76C8 5F71 - 7A4E 786C 6620 55B2 64C1 50AD 81C3 7670 - 5EB8 96CD 8E34 86F9 548F 6CF3 6D8C 6C38 - 607F 52C7 7528 5E7D 512A 60A0 6182 5C24 - 7531 90F5 923E 7336 6CB9 6E38 9149 6709 - 53CB 53F3 4F51 91C9 8A98 53C8 5E7C 8FC2 - 6DE4 4E8E 76C2 6986 865E 611A 8F3F 9918 - 4FDE 903E 9B5A 6109 6E1D 6F01 9685 4E88 - 5A31 96E8 8207 5DBC 79B9 5B87 8A9E 7FBD - 7389 57DF 828B 9B31 5401 9047 55BB 5CEA - 5FA1 6108 6B32 7344 80B2 8B7D -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 5421 - srcEnd = 547E - mappingOffset = 0DB4 - Mapping = - 6D74 5BD3 88D5 9810 8C6B 99AD 9D1B 6DF5 - 51A4 5143 57A3 8881 539F 63F4 8F45 5712 - 54E1 5713 733F 6E90 7DE3 9060 82D1 9858 - 6028 9662 66F0 7D04 8D8A 8E8D 9470 5CB3 - 7CA4 6708 60A6 95B2 8018 96F2 9116 5300 - 9695 5141 904B 85F4 9196 6688 97F5 5B55 - 531D 7838 96DC 683D 54C9 707E 5BB0 8F09 - 518D 5728 54B1 6522 66AB 8D0A 8D1C 81DF - 846C 906D 7CDF 947F 85FB 68D7 65E9 6FA1 - 86A4 8E81 566A 9020 7682 7AC8 71E5 8CAC - 64C7 5247 6FA4 8CCA 600E 589E 618E 66FE - 8D08 624E 55B3 6E23 672D 8ECB -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 5521 - srcEnd = 557E - mappingOffset = 0E12 - Mapping = - 9358 9598 7728 6805 69A8 548B 4E4D 70B8 - 8A50 6458 9F4B 5B85 7A84 50B5 5BE8 77BB - 6C08 8A79 7C98 6CBE 76DE 65AC 8F3E 5D84 - 5C55 8638 68E7 5360 6230 7AD9 6E5B 7DBB - 6A1F 7AE0 5F70 6F33 5F35 638C 6F32 6756 - 4E08 5E33 8CEC 4ED7 8139 7634 969C 62DB - 662D 627E 6CBC 8D99 7167 7F69 5146 8087 - 53EC 906E 6298 54F2 87C4 8F4D 8005 937A - 8517 9019 6D59 73CD 659F 771F 7504 7827 - 81FB 8C9E 91DD 5075 6795 75B9 8A3A 9707 - 632F 93AE 9663 84B8 6399 775C 5F81 7319 - 722D 6014 6574 62EF 6B63 653F -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 5621 - srcEnd = 567E - mappingOffset = 0E70 - Mapping = - 5E40 7665 912D 8B49 829D 679D 652F 5431 - 8718 77E5 80A2 8102 6C41 4E4B 7E54 8077 - 76F4 690D 6B96 57F7 503C 4F84 5740 6307 - 6B62 8DBE 8879 65E8 7D19 5FD7 646F 64F2 - 81F3 81F4 7F6E 5E5F 5CD9 5236 667A 79E9 - 7A1A 8CEA 7099 75D4 6EEF 6CBB 7A92 4E2D - 76C5 5FE0 9418 8877 7D42 7A2E 816B 91CD - 4EF2 8846 821F 5468 5DDE 6D32 8B05 7CA5 - 8EF8 8098 5E1A 5492 76BA 5B99 665D 9A5F - 73E0 682A 86DB 6731 732A 8AF8 8A85 9010 - 7AF9 71ED 716E 62C4 77DA 56D1 4E3B 8457 - 67F1 52A9 86C0 8CAF 9444 7BC9 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 5721 - srcEnd = 5779 - mappingOffset = 0ECE - Mapping = - 4F4F 6CE8 795D 99D0 6293 722A 62FD 5C08 - 78DA 8F49 64B0 8CFA 7BC6 6A01 838A 88DD - 599D 649E 58EF 72C0 690E 9310 8FFD 8D05 - 589C 7DB4 8AC4 6E96 6349 62D9 5353 684C - 7422 8301 914C 5544 7740 707C 6FC1 5179 - 54A8 8CC7 59FF 6ECB 6DC4 5B5C 7D2B 4ED4 - 7C7D 6ED3 5B50 81EA 6F2C 5B57 9B03 68D5 - 8E2A 5B97 7D9C 7E3D 7E31 9112 8D70 594F - 63CD 79DF 8DB3 5352 65CF 7956 8A5B 963B - 7D44 947D 7E82 5634 9189 6700 7F6A 5C0A - 9075 6628 5DE6 4F50 67DE 505A 4F5C 5750 - 5EA7 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 5821 - srcEnd = 587E - mappingOffset = 0F27 - Mapping = - 4E8D 4E0C 5140 4E10 5EFF 5345 4E15 4E98 - 4E1E 9B32 5B6C 5669 4E28 79BA 4E3F 5315 - 4E47 592D 723B 536E 6C10 56DF 80E4 9997 - 6BD3 777E 9F17 4E36 4E9F 9F10 4E5C 4E69 - 4E93 8288 5B5B 55C7 560F 4EC4 5399 539D - 53B4 53A5 53AE 9768 8D0B 531A 53F5 532D - 5331 533E 8CFE 5366 5363 5202 5208 520E - 5244 5233 528C 5274 524C 525E 5261 525C - 84AF 527D 5282 5281 5290 5293 5182 7F54 - 4EBB 4EC3 4EC9 4EC2 4EE8 4EE1 4EEB 4EDE - 50B4 4EF3 4F22 4F64 4EF5 5000 5096 4F09 - 4F47 4F5E 4F67 6538 4F5A 4F5D -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 5921 - srcEnd = 597E - mappingOffset = 0F85 - Mapping = - 4F5F 4F57 4F32 4F3D 4F76 4F74 4F91 4F89 - 4F83 4F8F 4F7E 4F7B 5115 4F7C 5102 4F94 - 5114 513C 5137 4FC5 4FDA 4FE3 4FDC 4FD1 - 4FDF 4FF8 5029 504C 4FF3 502C 500F 502E - 502D 4FFE 501C 500C 5025 5028 50E8 5043 - 5055 5048 504E 506C 50C2 513B 5110 513A - 50BA 50D6 5106 50ED 50EC 50E6 50EE 5107 - 510B 4EDD 6C3D 4F58 50C9 4FCE 9FA0 6C46 - 7CF4 516E 5DFD 9ECC 9998 56C5 5914 52F9 - 530D 8A07 5310 9CEC 5919 5155 4EA0 5156 - 4EB3 886E 88A4 893B 81E0 88D2 7980 5B34 - 8803 7FB8 51AB 51B1 51BD 51BC -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 5A21 - srcEnd = 5A7E - mappingOffset = 0FE3 - Mapping = - 51C7 5196 51A2 51A5 8A01 8A10 8A0C 8A15 - 8B33 8A4E 8A25 8A41 8A36 8A46 8A54 8A58 - 8A52 8A86 8A84 8A7F 8A70 8A7C 8A75 8A6C - 8A6E 8ACD 8AE2 8A61 8A9A 8AA5 8A91 8A92 - 8ACF 8AD1 8AC9 8ADB 8AD7 8AC2 8AB6 8AF6 - 8AEB 8B14 8B01 8AE4 8AED 8AFC 8AF3 8AE6 - 8AEE 8ADE 8B28 8B9C 8B16 8B1A 8B10 8B2B - 8B2D 8B56 8B59 8B4E 8B9E 8B6B 8B96 5369 - 537A 961D 9622 9621 9631 962A 963D 963C - 9642 9658 9654 965F 9689 966C 9672 9674 - 9688 968D 9697 96B0 9097 909B 913A 9099 - 9114 90A1 90B4 90B3 90B6 9134 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 5B21 - srcEnd = 5B7E - mappingOffset = 1041 - Mapping = - 90B8 90B0 90DF 90C5 90BE 9136 90C4 90C7 - 9106 9148 90E2 90DC 90D7 90DB 90EB 90EF - 90FE 9104 9122 911E 9123 9131 912F 9139 - 9143 9146 82BB 5950 52F1 52AC 52AD 52BE - 54FF 52D0 52D6 52F0 53DF 71EE 77CD 5EF4 - 51F5 51FC 9B2F 53B6 5F01 755A 5DF0 574C - 580A 57A1 587E 58BC 58C5 58D1 5729 572C - 572A 5733 58D9 572E 572F 58E2 573B 5742 - 5769 58E0 576B 58DA 577C 577B 5768 576D - 5776 5773 57E1 57A4 578C 584F 57CF 57A7 - 5816 5793 57A0 57D5 5852 581D 5864 57D2 - 57B8 57F4 57EF 57F8 57E4 57DD -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 5C21 - srcEnd = 5C7E - mappingOffset = 109F - Mapping = - 580B 580D 57FD 57ED 5800 581E 5819 5844 - 5820 5865 586C 5881 5889 589A 5880 99A8 - 9F19 61FF 8279 827D 827F 828F 828A 82A8 - 8284 828E 8291 858C 8299 82AB 8553 82BE - 82B0 85F6 82CA 82E3 8298 82B7 82AE 83A7 - 8407 84EF 82A9 82B4 82A1 82AA 829F 82C4 - 82E7 82A4 82E1 8309 82F7 82E4 8622 8307 - 82DC 82F4 82D2 82D8 830C 82FB 82D3 8526 - 831A 8306 584B 7162 82E0 82D5 831C 8351 - 8558 84FD 8308 8392 833C 8334 8331 839B - 854E 832F 834F 8347 8343 8588 8340 8317 - 85BA 832D 833A 8333 7296 6ECE -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 5D21 - srcEnd = 5D7E - mappingOffset = 10FD - Mapping = - 8541 831B 85CE 8552 84C0 8452 8464 83B0 - 8378 8494 8435 83A0 83AA 8393 839C 8385 - 837C 859F 83A9 837D 8555 837B 8398 839E - 83A8 9DAF 8493 83C1 8401 83E5 83D8 5807 - 8418 840B 83DD 83FD 83D6 841C 8438 8411 - 8406 83D4 83DF 840F 8403 83F8 83F9 83EA - 83C5 83C0 7E08 83F0 83E1 845C 8451 845A - 8459 8473 8546 8488 847A 8562 8478 843C - 8446 8469 8476 851E 848E 8431 846D 84C1 - 84CD 84D0 9A40 84BD 84D3 84CA 84BF 84BA - 863A 84A1 84B9 84B4 8497 93A3 8577 850C - 750D 8538 84F0 861E 851F 85FA -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 5E21 - srcEnd = 5E7E - mappingOffset = 115B - Mapping = - 8556 853B 84FF 84FC 8559 8548 8568 8564 - 855E 857A 77A2 8543 8604 857B 85A4 85A8 - 8587 858F 8579 85EA 859C 8585 85B9 85B7 - 85B0 861A 85C1 85DC 85FF 8627 8605 8629 - 8616 863C 5EFE 5F08 593C 5969 8037 5955 - 595A 5958 530F 5C22 5C25 5C2C 5C37 624C - 636B 6476 62BB 62CA 62DA 62D7 62EE 649F - 62F6 6339 634B 6343 63AD 63F6 6371 637A - 638E 6451 636D 63AC 638A 6369 63AE 645C - 63F2 63F8 63E0 64B3 63C4 63DE 63CE 6452 - 63C6 63BE 6504 6441 640B 641B 6420 640C - 6426 6421 645E 6516 646D 6496 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 5F21 - srcEnd = 5F7E - mappingOffset = 11B9 - Mapping = - 647A 64F7 64FC 6499 651B 64C0 64D0 64D7 - 64E4 64E2 6509 6525 652E 5F0B 5FD2 7519 - 5F11 535F 53F1 5630 53E9 53E8 53FB 5412 - 5416 5406 544B 5638 56C8 5454 56A6 5443 - 5421 5504 54BC 5423 5432 5482 5494 5477 - 5471 5464 549A 5680 5484 5476 5466 565D - 54D0 54AD 54C2 54B4 5660 54A7 54A6 5635 - 55F6 5472 54A3 5666 54BB 54BF 54CC 5672 - 54DA 568C 54A9 54AA 54A4 5665 54CF 54DE - 561C 54E7 562E 54FD 5514 54F3 55E9 5523 - 550F 5511 5527 552A 5616 558F 55B5 5549 - 56C0 5541 5555 553F 5550 553C -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 6021 - srcEnd = 607E - mappingOffset = 1217 - Mapping = - 5537 5556 5575 5576 5577 5533 5530 555C - 558B 55D2 5583 55B1 55B9 5588 5581 559F - 557E 55D6 5591 557B 55DF 560D 56B3 5594 - 5599 55EA 55F7 55C9 561F 55D1 56C1 55EC - 55D4 55E6 55DD 55C4 55EF 55E5 55F2 566F - 55CC 55CD 55E8 55F5 55E4 8F61 561E 5608 - 560C 5601 56B6 5623 55FE 5600 5627 562D - 5658 5639 5657 562C 564D 5662 5659 5695 - 564C 5654 5686 5664 5671 566B 567B 567C - 5685 5693 56AF 56D4 56D7 56DD 56E1 5707 - 56EB 56F9 56FF 5704 570A 5709 571C 5E43 - 5E19 5E14 5E11 5E6C 5E58 5E57 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 6121 - srcEnd = 617E - mappingOffset = 1275 - Mapping = - 5E37 5E44 5E54 5E5B 5E5E 5E61 5C8C 5C7A - 5C8D 5C90 5D87 5C88 5CF4 5C99 5C91 5D50 - 5C9C 5CB5 5CA2 5D2C 5CAC 5CAB 5CB1 5CA3 - 5CC1 5CB7 5DA7 5CD2 5DA0 5CCB 5D22 5D97 - 5D0D 5D27 5D26 5D2E 5D24 5D1E 5D06 5D1B - 5DB8 5D3E 5D34 5D3D 5D6C 5D5B 5D6F 5D81 - 5D6B 5D4B 5D4A 5D69 5D74 5D82 5D99 5D9D - 8C73 5DB7 5DD4 5F73 5F77 5F82 5F87 5F89 - 540E 5FA0 5F99 5F9C 5FA8 5FAD 5FB5 5FBC - 8862 5F61 72AD 72B0 72B4 7377 7341 72C3 - 72C1 72CE 72CD 72D2 72E8 736A 72E9 733B - 72F4 72F7 7301 72F3 736B 72FA -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 6221 - srcEnd = 627E - mappingOffset = 12D3 - Mapping = - 72FB 7317 7313 7380 730A 731E 731D 737C - 7322 7339 7325 732C 7338 7331 7350 734D - 7357 7360 736C 736F 737E 821B 5925 98E7 - 5924 5902 98E0 9933 98E9 993C 98EA 98EB - 98ED 98F4 9909 9911 4F59 991B 9937 993F - 9943 9948 9949 994A 994C 9962 5E80 5EE1 - 5E8B 5E96 5EA5 5EA0 5EB9 5EB5 5EBE 5EB3 - 8CE1 5ED2 5ED1 5EDB 5EE8 5EEA 81BA 5FC4 - 5FC9 5FD6 61FA 61AE 5FEE 616A 5FE1 5FE4 - 613E 60B5 6134 5FEA 5FED 5FF8 6019 6035 - 6026 601B 600F 600D 6029 602B 600A 61CC - 6021 615F 61E8 60FB 6137 6042 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 6321 - srcEnd = 637E - mappingOffset = 1331 - Mapping = - 606A 60F2 6096 609A 6173 609D 6083 6092 - 608C 609B 611C 60BB 60B1 60DD 60D8 60C6 - 60DA 60B4 6120 6192 6115 6123 60F4 6100 - 610E 612B 614A 6175 61AC 6194 61A7 61B7 - 61D4 61F5 5FDD 96B3 9582 9586 95C8 958E - 9594 958C 95E5 95AD 95AB 9B2E 95AC 95BE - 95B6 9B29 95BF 95BD 95BC 95C3 95CB 95D4 - 95D0 95D5 95DE 4E2C 723F 6215 6C35 6C54 - 6C5C 6C4A 7043 6C85 6C90 6C94 6C8C 6C68 - 6C69 6C74 6C76 6C86 6F59 6CD0 6CD4 6CAD - 7027 7018 6CF1 6CD7 6CB2 6CE0 6CD6 6FFC - 6CEB 6CEE 6CB1 6CD3 6CEF 6D87 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 6421 - srcEnd = 647E - mappingOffset = 138F - Mapping = - 6D39 6D27 6D0C 6D79 6E5E 6D07 6D04 6D19 - 6D0E 6D2B 6FAE 6D2E 6D35 6D1A 700F 6EF8 - 6F6F 6D33 6D91 6D6F 6DF6 6F7F 6D5E 6D93 - 6D94 6D5C 6D60 6D7C 6D63 6E1A 6DC7 6DC5 - 6DDE 7006 6DBF 6DE0 6FA0 6DE6 6DDD 6DD9 - 700B 6DAB 6E0C 6DAE 6E2B 6E6E 6E4E 6E6B - 6EB2 6E5F 6E86 6E53 6E54 6E32 6E25 6E44 - 7067 6EB1 6E98 7044 6F2D 7005 6EA5 6EA7 - 6EBD 6EBB 6EB7 6F77 6EB4 6ECF 6E8F 6EC2 - 6E9F 6F62 7020 701F 6F24 6F15 6EF9 6F2F - 6F36 7032 6F74 6F2A 6F09 6F29 6F89 6F8D - 6F8C 6F78 6F72 6F7C 6F7A 7028 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 6521 - srcEnd = 657E - mappingOffset = 13ED - Mapping = - 6FC9 6FA7 6FB9 6FB6 6FC2 6FE1 6FEE 6FDE - 6FE0 6FEF 701A 7023 701B 7039 7035 705D - 705E 5B80 5B84 5B95 5B93 5BA5 5BB8 752F - 9A2B 6434 5BE4 5BEE 8930 5BF0 8E47 8B07 - 8FB6 8FD3 8FD5 8FE5 8FEE 8FE4 9087 8FE6 - 9015 8FE8 9005 9004 900B 9090 9011 900D - 9016 9021 9035 9036 902D 902F 9044 9051 - 9052 9050 9068 9058 9062 905B 66B9 9074 - 907D 9082 9088 9083 908B 5F50 5F57 5F56 - 5F58 5C3B 54AB 5C50 5C59 5B71 5C63 5C68 - 7FBC 5F33 5F29 5F2D 8274 5F3C 9B3B 5C6E - 5981 5983 598D 5AF5 5AD7 59A3 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 6621 - srcEnd = 667E - mappingOffset = 144B - Mapping = - 5997 59CA 5B00 599E 59A4 59D2 59B2 59AF - 59D7 59BE 5A6D 5B08 59DD 5B4C 59E3 59D8 - 59F9 5A0C 5A09 5AA7 5AFB 5A11 5A23 5A13 - 5A40 5A67 5A4A 5A55 5A3C 5A62 5B0B 80EC - 5AAA 5A9B 5A77 5A7A 5ABE 5AEB 5AB2 5B21 - 5B2A 5AB8 5AE0 5AE3 5B19 5AD6 5AE6 5AD8 - 5ADC 5B09 5B17 5B16 5B32 5B37 5B40 5C15 - 5C1C 5B5A 5B65 5B73 5B51 5B53 5B62 99D4 - 99DF 99D9 9A36 9A5B 99D1 99D8 9A4D 9A4A - 99E2 9A6A 9A0F 9A0D 9A05 9A42 9A2D 9A16 - 9A41 9A2E 9A38 9A43 9A44 9A4F 9A65 9A64 - 7CF9 7D06 7D02 7D07 7D08 7E8A -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 6721 - srcEnd = 677E - mappingOffset = 14A9 - Mapping = - 7D1C 7D15 7D13 7D3A 7D32 7D31 7E10 7D3C - 7D40 7D3F 7D5D 7D4E 7D73 7D86 7D83 7D88 - 7DBE 7DBA 7DCB 7DD4 7DC4 7D9E 7DAC 7DB9 - 7DA3 7DB0 7DC7 7DD9 7DD7 7DF9 7DF2 7E62 - 7DE6 7DF6 7DF1 7E0B 7DE1 7E09 7E1D 7E1F - 7E1E 7E2D 7E0A 7E11 7E7D 7E39 7E35 7E32 - 7E46 7E45 7E88 7E5A 7E52 7E6E 7E7E 7E70 - 7E6F 7E98 5E7A 757F 5DDB 753E 9095 738E - 74A3 744B 73A2 739F 73CF 73C2 74CF 73B7 - 73B3 73C0 73C9 73C8 73E5 73D9 980A 740A - 73E9 73E7 73DE 74BD 743F 7489 742A 745B - 7426 7425 7428 7430 742E 742C -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 6821 - srcEnd = 687E - mappingOffset = 1507 - Mapping = - 741B 741A 7441 745C 7457 7455 7459 74A6 - 746D 747E 749C 74D4 7480 7481 7487 748B - 749E 74A8 74A9 7490 74A7 74DA 74BA 97D9 - 97DE 97DC 674C 6753 675E 6748 69AA 6AEA - 6787 676A 6773 6798 6898 6775 68D6 6A05 - 689F 678B 6777 677C 67F0 6ADB 67D8 6AF3 - 67E9 67B0 6AE8 67D9 67B5 67DA 67B3 67DD - 6800 67C3 67B8 67E2 6ADF 67C1 6A89 6832 - 6833 690F 6A48 684E 6968 6844 69BF 6883 - 681D 6855 6A3A 6841 6A9C 6840 6B12 684A - 6849 6829 68B5 688F 6874 6877 6893 686B - 6B1E 696E 68FC 6ADD 69E7 68F9 -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 6921 - srcEnd = 697E - mappingOffset = 1565 - Mapping = - 6B0F 68F0 690B 6901 6957 68E3 6910 6971 - 6939 6960 6942 695D 6B16 696B 6980 6998 - 6978 6934 69CC 6AEC 6ADA 69CE 6AF8 6966 - 6963 6979 699B 69A7 69BB 69AB 69AD 69D4 - 69B1 69C1 69CA 6AB3 6995 6AE7 698D 69FF - 6AA3 69ED 6A17 6A18 6A65 69F2 6A44 6A3E - 6AA0 6A50 6A5B 6A35 6A8E 6AD3 6A3D 6A28 - 6A58 6ADE 6A91 6A90 6AA9 6A97 6AAB 7337 - 7352 6B81 6B82 6BA4 6B84 6B9E 6BAE 6B8D - 6BAB 6B9B 6BAF 6BAA 8ED4 8EDB 8EF2 8EFB - 8F64 8EF9 8EFC 8EEB 8EE4 8F62 8EFA 8EFE - 8F0A 8F07 8F05 8F12 8F26 8F1E -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 6A21 - srcEnd = 6A7E - mappingOffset = 15C3 - Mapping = - 8F1F 8F1C 8F33 8F46 8F54 8ECE 6214 6227 - 621B 621F 6222 6221 6225 6224 6229 81E7 - 750C 74F4 74FF 750F 7511 7513 6534 65EE - 65EF 65F0 660A 66C7 6772 6603 6615 6600 - 7085 66F7 661D 6634 6631 6636 6635 8006 - 665F 66C4 6641 664F 6689 6661 6657 6677 - 6684 668C 66D6 669D 66BE 66DB 66DC 66E6 - 66E9 8CC1 8CB0 8CBA 8CBD 8D04 8CB2 8CC5 - 8D10 8CD1 8CDA 8CD5 8CEB 8CE7 8CFB 8998 - 89AC 89A1 89BF 89A6 89AF 89B2 89B7 726E - 729F 725D 7266 726F 727E 727F 7284 728B - 728D 728F 7292 6308 6332 63B0 -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 6B21 - srcEnd = 6B7E - mappingOffset = 1621 - Mapping = - 643F 64D8 8004 6BEA 6BF3 6BFD 6BFF 6BF9 - 6C05 6C0C 6C06 6C0D 6C15 6C18 6C19 6C1A - 6C21 6C2C 6C24 6C2A 6C32 6535 6555 656B - 7258 7252 7256 7230 8662 5216 809F 809C - 8093 80BC 670A 80BD 80B1 80AB 80AD 80B4 - 80B7 6727 8156 80E9 81DA 80DB 80C2 80C4 - 80D9 80CD 80D7 6710 80DD 811B 80F1 80F4 - 80ED 81BE 810E 80F2 80FC 6715 8112 8C5A - 8161 811E 812C 8118 8132 8148 814C 8153 - 8174 8159 815A 8171 8160 8169 817C 817D - 816D 8167 584D 5AB5 8188 8182 81CF 6ED5 - 81A3 81AA 81CC 6726 81CA 81BB -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 6C21 - srcEnd = 6C7E - mappingOffset = 167F - Mapping = - 81C1 81A6 6B5F 6B37 6B39 6B43 6B46 6B59 - 98AE 98AF 98B6 98BC 98C6 98C8 6BB3 5F40 - 8F42 89F3 6590 9F4F 6595 65BC 65C6 65C4 - 65C3 65CC 65CE 65D2 65D6 716C 7152 7096 - 7197 70BB 70C0 70B7 70AB 70B1 71C1 70CA - 7110 7113 71DC 712F 7131 7173 715C 7168 - 7145 7172 714A 7178 717A 7198 71B3 71B5 - 71A8 71A0 71E0 71D4 71E7 71F9 721D 7228 - 706C 71FE 7166 71B9 623E 623D 6243 6248 - 6249 793B 7940 7946 7949 795B 795C 7953 - 795A 79B0 7957 7960 798E 7967 797A 79AA - 798A 799A 79A7 79B3 5FD1 5FD0 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 6D21 - srcEnd = 6D7E - mappingOffset = 16DD - Mapping = - 61DF 605D 605A 6067 6041 6059 6063 6164 - 6106 610D 615D 61A9 619D 61CB 61E3 6207 - 8080 807F 6C93 6FA9 6DFC 78EF 77F8 78AD - 7809 7868 7818 7811 65AB 782D 78B8 781D - 7839 792A 7931 781F 783C 7825 782C 7823 - 7829 784E 786D 7864 78FD 7826 7850 7847 - 784C 786A 78E7 7893 789A 7887 78E3 78A1 - 78A3 78B2 78B9 78A5 78D4 78D9 78C9 78EC - 78F2 7905 78F4 7913 7924 791E 7934 9F95 - 9EF9 9EFB 9EFC 76F1 7704 7798 76F9 7707 - 7708 771A 7722 7719 772D 7726 7735 7738 - 775E 77BC 7747 7743 775A 7768 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 6E21 - srcEnd = 6E7E - mappingOffset = 173B - Mapping = - 7762 7765 777F 778D 777D 7780 778C 7791 - 779F 77A0 77B0 77B5 77BD 753A 7540 754E - 754B 7548 755B 7572 7579 7583 7F58 7F61 - 7F5F 8A48 7F68 7F86 7F71 7F79 7F88 7F7E - 76CD 76E5 8832 91D2 91D3 91D4 91D9 91D7 - 91D5 91F7 91E7 91E4 9346 91F5 91F9 9208 - 9226 9245 9211 9210 9201 9227 9204 9225 - 9200 923A 9266 9237 9233 9255 923D 9238 - 925E 926C 926D 923F 9460 9230 9249 9248 - 924D 922E 9239 9438 92AC 92A0 927A 92AA - 92EE 92CF 9403 92E3 943A 92B1 92A6 93A7 - 9296 92CC 92A9 93F5 9293 927F -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 6F21 - srcEnd = 6F7E - mappingOffset = 1799 - Mapping = - 93A9 929A 931A 92AB 9283 940B 92A8 92A3 - 9412 9338 92F1 93D7 92E5 92F0 92EF 92E8 - 92BC 92DD 92F6 9426 9427 92C3 92DF 92E6 - 9312 9306 9369 931B 9340 9301 9315 932E - 9343 9307 9308 931F 9319 9365 9347 9376 - 9354 9364 93AA 9370 9384 93E4 93D8 9428 - 9387 93CC 9398 93B8 93BF 93A6 93B0 93B5 - 944C 93E2 93DC 93DD 93CD 93DE 93C3 93C7 - 93D1 9414 941D 93F7 9465 9413 946D 9420 - 9479 93F9 9419 944A 9432 943F 9454 9463 - 937E 77E7 77EC 96C9 79D5 79ED 79E3 79EB - 7A06 5D47 7A03 7A02 7A1E 7A14 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 7021 - srcEnd = 707E - mappingOffset = 17F7 - Mapping = - 7A39 7A37 7A61 9ECF 99A5 7A70 7688 768E - 7693 7699 76A4 74DE 74E0 752C 9CE9 9CF6 - 9D07 9D06 9D23 9D87 9E15 9D1D 9D1F 9DE5 - 9D2F 9DD9 9D30 9D42 9E1E 9D53 9E1D 9D60 - 9D52 9DF3 9D5C 9D61 9D93 9D6A 9D6F 9D89 - 9D98 9D9A 9DC0 9DA5 9DA9 9DC2 9DBC 9E1A - 9DD3 9DDA 9DEF 9DE6 9DF2 9DF8 9E0C 9DFA - 9E1B 7592 7594 7664 7658 759D 7667 75A3 - 75B3 75B4 75B8 75C4 75B1 75B0 75C3 75C2 - 7602 75CD 75E3 7646 75E6 75E4 7647 75E7 - 7603 75F1 75FC 75FF 7610 7600 7649 760C - 761E 760A 7625 763B 7615 7619 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 7121 - srcEnd = 717E - mappingOffset = 1855 - Mapping = - 761B 763C 7622 7620 7640 762D 7630 766D - 7635 7643 766E 7633 764D 7669 7654 765C - 7656 7672 766F 7FCA 7AE6 7A78 7A79 7A80 - 7A86 7A88 7A95 7AC7 7AA0 7AAC 7AA8 7AB6 - 7AB3 8864 8869 8872 887D 887F 8882 88A2 - 8960 88B7 88BC 88C9 8933 88CE 895D 8947 - 88F1 891A 88FC 88E8 88FE 88F0 8921 8919 - 8913 8938 890A 8964 892B 8936 8941 8966 - 897B 758B 80E5 76B8 76B4 77DC 8012 8014 - 8016 801C 8020 802E 8025 8026 802C 8029 - 8028 8031 800B 8035 8043 8046 8079 8052 - 8075 8071 8983 9807 980E 980F -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 7221 - srcEnd = 727E - mappingOffset = 18B3 - Mapping = - 9821 981C 6F41 9826 9837 984E 9853 9873 - 9862 9859 9865 986C 9870 864D 8654 866C - 87E3 8806 867A 867C 867B 86A8 868D 868B - 8706 869D 86A7 86A3 86AA 8693 86A9 86B6 - 86C4 86B5 8823 86B0 86BA 86B1 86AF 86C9 - 87F6 86B4 86E9 86FA 87EF 86ED 8784 86D0 - 8713 86DE 8810 86DF 86D8 86D1 8703 8707 - 86F8 8708 870A 870D 8709 8723 873B 871E - 8725 872E 871A 873E 87C8 8734 8731 8729 - 8737 873F 8782 8722 877D 8811 877B 8760 - 8770 874C 876E 878B 8753 8763 87BB 8764 - 8759 8765 8793 87AF 87CE 87D2 -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 7321 - srcEnd = 737E - mappingOffset = 1911 - Mapping = - 87C6 8788 8785 87AD 8797 8783 87AB 87E5 - 87AC 87B5 87B3 87CB 87D3 87BD 87D1 87C0 - 87CA 87DB 87EA 87E0 87EE 8816 8813 87FE - 880A 881B 8821 8839 883C 7F36 7F4C 7F44 - 7F45 8210 7AFA 7AFD 7B08 7BE4 7B04 7B67 - 7B0A 7B2B 7B0F 7B47 7B38 7B2A 7B19 7B2E - 7B31 7B20 7B25 7B24 7B33 7C69 7B1E 7B58 - 7BF3 7B45 7B75 7B4C 7B8F 7B60 7B6E 7B7B - 7B62 7B72 7B71 7B90 7C00 7BCB 7BB8 7BAC - 7B9D 7C5C 7B85 7C1E 7B9C 7BA2 7C2B 7BB4 - 7C23 7BC1 7BCC 7BDD 7BDA 7BE5 7BE6 7BEA - 7C0C 7BFE 7BFC 7C0F 7C6A 7C0B -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 7421 - srcEnd = 747E - mappingOffset = 196F - Mapping = - 7C1F 7C2A 7C26 7C38 7C5F 7C40 81FE 8201 - 8202 8204 81EC 8844 8221 8222 8264 822D - 822F 8228 822B 8238 826B 8233 8234 823E - 8244 8249 824B 824F 825A 825F 8268 887E - 88CA 8888 88D8 88DF 895E 7F9D 7FA5 7FA7 - 7FAF 7FB0 7FB2 7C7C 6549 7C91 7CF2 7CF6 - 7C9E 7CA2 7CB2 7CBC 7CBD 7CDD 7CC7 7CCC - 7CCD 7CC8 7CC5 7CD7 7CE8 826E 66A8 7FBF - 7FCE 7FD5 7FE5 7FE1 7FE6 7FE9 7FEE 7FF3 - 7CF8 7E36 7DA6 7DAE 7E47 7E9B 9EA9 9EB4 - 8D73 8D84 8D94 8D91 8DB2 8D67 8D6D 8C47 - 8C49 914A 9150 914E 914F 9164 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 7521 - srcEnd = 757E - mappingOffset = 19CD - Mapping = - 9162 9161 9170 9169 916F 91C5 91C3 9172 - 9174 9179 918C 9185 9190 918D 9191 91A2 - 91A3 91AA 91AD 91AE 91AF 91B5 91B4 91BA - 8C55 9E7A 8E89 8DEB 8E05 8E59 8E69 8DB5 - 8DBF 8DBC 8DBA 8E4C 8DD6 8DD7 8DDA 8E92 - 8DCE 8DCF 8DDB 8DC6 8DEC 8E7A 8E55 8DE3 - 8E9A 8E8B 8DE4 8E09 8DFD 8E14 8E1D 8E1F - 8E93 8E2E 8E23 8E91 8E3A 8E40 8E39 8E35 - 8E3D 8E31 8E49 8E41 8E42 8EA1 8E63 8E4A - 8E70 8E76 8E7C 8E6F 8E74 8E85 8EAA 8E94 - 8E90 8EA6 8E9E 8C78 8C82 8C8A 8C85 8C98 - 8C94 659B 89D6 89F4 89DA 89DC -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 7621 - srcEnd = 767E - mappingOffset = 1A2B - Mapping = - 89E5 89EB 89F6 8A3E 8B26 975A 96E9 9742 - 96EF 9706 973D 9708 970F 970E 972A 9744 - 9730 973E 9F54 9F5F 9F59 9F60 9F5C 9F66 - 9F6C 9F6A 9F77 9EFD 9EFF 9F09 96B9 96BC - 96BD 96CE 96D2 77BF 8B8E 928E 947E 92C8 - 93E8 936A 93CA 938F 943E 946B 9B77 9B74 - 9B81 9B83 9B8E 9C78 7A4C 9B92 9C5F 9B90 - 9BAD 9B9A 9BAA 9B9E 9C6D 9BAB 9B9D 9C58 - 9BC1 9C7A 9C31 9C39 9C23 9C37 9BC0 9BCA - 9BC7 9BFD 9BD6 9BEA 9BEB 9BE1 9BE4 9BE7 - 9BDD 9BE2 9BF0 9BDB 9BF4 9BD4 9C5D 9C08 - 9C10 9C0D 9C12 9C09 9BFF 9C20 -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 7721 - srcEnd = 777E - mappingOffset = 1A89 - Mapping = - 9C32 9C2D 9C28 9C25 9C29 9C33 9C3E 9C48 - 9C3B 9C35 9C45 9C56 9C54 9C52 9C67 977C - 9785 97C3 97BD 9794 97C9 97AB 97A3 97B2 - 97B4 9AB1 9AB0 9AB7 9DBB 9AB6 9ABA 9ABC - 9AC1 9AC0 9ACF 9AC2 9AD6 9AD5 9AD1 9B45 - 9B43 9B58 9B4E 9B48 9B4D 9B51 9957 995C - 992E 9955 9954 9ADF 9AE1 9AE6 9AEF 9AEB - 9AFB 9AED 9AF9 9B08 9B0F 9B22 9B1F 9B23 - 4E48 9EBE 7E3B 9E82 9E87 9E88 9E8B 9E92 - 93D6 9E9D 9E9F 9EDB 9EDC 9EDD 9EE0 9EDF - 9EE2 9EF7 9EE7 9EE5 9EF2 9EEF 9F22 9F2C - 9F2F 9F39 9F37 9F3D 9F3E 9F44 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 7821 - srcEnd = 787E - mappingOffset = 1AE7 - Mapping = - 896C 95C6 9336 5F46 8514 7E94 5382 51B2 - 4E11 9F63 5679 515A 6DC0 9F15 6597 5641 - 9AEE 8303 4E30 8907 5E72 7A40 98B3 5E7F - 95A4 9B0D 5212 8FF4 5F59 7A6B 98E2 51E0 - 50A2 4EF7 8350 8591 5118 636E 6372 524B - 5938 774F 8721 814A 7E8D 91CC 66C6 5E18 - 77AD 9E75 56C9 9EF4 6FDB 61DE 77C7 7030 - 9EB5 884A 95E2 82F9 51ED 6251 4EC6 6734 - 97C6 7C64 7E34 97A6 9EAF 786E 820D 672F - 677E 56CC 53F0 98B1 6AAF 7F4E 6D82 7CF0 - 4E07 4FC2 7E6B 9E79 56AE 9B1A 846F 53F6 - 90C1 79A6 7C72 613F 4E91 9AD2 -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 7921 - srcEnd = 7929 - mappingOffset = 1B45 - Mapping = - 75C7 96BB 53EA 7DFB 88FD 79CD 7843 7B51 - 51C6 -End of Item 0062 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0063, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x001D, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0146, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0013 */ -/* Total of Format 1 : 0x004D */ -/* Total of Format 2 : 0x0003 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x2221, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x0111, -/*-------------------------------------------------------*/ -/* Offset=0x001D Start of MapCell Array */ -/* 0000 */ 0x2134, 0x213B, 0x3008, -/* 0001 */ 0x2231, 0x2244, 0x2488, -/* 0002 */ 0x2245, 0x2258, 0x2474, -/* 0003 */ 0x2259, 0x2262, 0x2460, -/* 0004 */ 0x2265, 0x226E, 0x3220, -/* 0005 */ 0x2271, 0x227C, 0x2160, -/* 0006 */ 0x2325, 0x237D, 0xFF05, -/* 0007 */ 0x2421, 0x2473, 0x3041, -/* 0008 */ 0x2521, 0x2576, 0x30A1, -/* 0009 */ 0x2621, 0x2631, 0x0391, -/* 000A */ 0x2632, 0x2638, 0x03A3, -/* 000B */ 0x2641, 0x2651, 0x03B1, -/* 000C */ 0x2652, 0x2658, 0x03C3, -/* 000D */ 0x2721, 0x2726, 0x0410, -/* 000E */ 0x2728, 0x2741, 0x0416, -/* 000F */ 0x2751, 0x2756, 0x0430, -/* 0010 */ 0x2758, 0x2771, 0x0436, -/* 0011 */ 0x2845, 0x2869, 0x3105, -/* 0012 */ 0x2924, 0x296F, 0x2500, -/* 0013 */ 0x2121, 0x217E, 0x0000, -/* 0014 */ 0x2321, 0x2324, 0x005E, -/* 0015 */ 0x237E, 0x0000, 0xFFE3, -/* 0016 */ 0x2727, 0x0000, 0x0401, -/* 0017 */ 0x2757, 0x0000, 0x0451, -/* 0018 */ 0x2821, 0x283A, 0x0062, -/* 0019 */ 0x3021, 0x307E, 0x007C, -/* 001A */ 0x3121, 0x317E, 0x00DA, -/* 001B */ 0x3221, 0x327E, 0x0138, -/* 001C */ 0x3321, 0x337E, 0x0196, -/* 001D */ 0x3421, 0x347E, 0x01F4, -/* 001E */ 0x3521, 0x357E, 0x0252, -/* 001F */ 0x3621, 0x367E, 0x02B0, -/* 0020 */ 0x3721, 0x377E, 0x030E, -/* 0021 */ 0x3821, 0x387E, 0x036C, -/* 0022 */ 0x3921, 0x397E, 0x03CA, -/* 0023 */ 0x3A21, 0x3A7E, 0x0428, -/* 0024 */ 0x3B21, 0x3B7E, 0x0486, -/* 0025 */ 0x3C21, 0x3C7E, 0x04E4, -/* 0026 */ 0x3D21, 0x3D7E, 0x0542, -/* 0027 */ 0x3E21, 0x3E7E, 0x05A0, -/* 0028 */ 0x3F21, 0x3F7E, 0x05FE, -/* 0029 */ 0x4021, 0x407E, 0x065C, -/* 002A */ 0x4121, 0x417E, 0x06BA, -/* 002B */ 0x4221, 0x427E, 0x0718, -/* 002C */ 0x4321, 0x437E, 0x0776, -/* 002D */ 0x4421, 0x447E, 0x07D4, -/* 002E */ 0x4521, 0x457E, 0x0832, -/* 002F */ 0x4621, 0x467E, 0x0890, -/* 0030 */ 0x4721, 0x477E, 0x08EE, -/* 0031 */ 0x4821, 0x487E, 0x094C, -/* 0032 */ 0x4921, 0x497E, 0x09AA, -/* 0033 */ 0x4A21, 0x4A7E, 0x0A08, -/* 0034 */ 0x4B21, 0x4B7E, 0x0A66, -/* 0035 */ 0x4C21, 0x4C7E, 0x0AC4, -/* 0036 */ 0x4D21, 0x4D7E, 0x0B22, -/* 0037 */ 0x4E21, 0x4E7E, 0x0B80, -/* 0038 */ 0x4F21, 0x4F7E, 0x0BDE, -/* 0039 */ 0x5021, 0x507E, 0x0C3C, -/* 003A */ 0x5121, 0x517E, 0x0C9A, -/* 003B */ 0x5221, 0x527E, 0x0CF8, -/* 003C */ 0x5321, 0x537E, 0x0D56, -/* 003D */ 0x5421, 0x547E, 0x0DB4, -/* 003E */ 0x5521, 0x557E, 0x0E12, -/* 003F */ 0x5621, 0x567E, 0x0E70, -/* 0040 */ 0x5721, 0x5779, 0x0ECE, -/* 0041 */ 0x5821, 0x587E, 0x0F27, -/* 0042 */ 0x5921, 0x597E, 0x0F85, -/* 0043 */ 0x5A21, 0x5A7E, 0x0FE3, -/* 0044 */ 0x5B21, 0x5B7E, 0x1041, -/* 0045 */ 0x5C21, 0x5C7E, 0x109F, -/* 0046 */ 0x5D21, 0x5D7E, 0x10FD, -/* 0047 */ 0x5E21, 0x5E7E, 0x115B, -/* 0048 */ 0x5F21, 0x5F7E, 0x11B9, -/* 0049 */ 0x6021, 0x607E, 0x1217, -/* 004A */ 0x6121, 0x617E, 0x1275, -/* 004B */ 0x6221, 0x627E, 0x12D3, -/* 004C */ 0x6321, 0x637E, 0x1331, -/* 004D */ 0x6421, 0x647E, 0x138F, -/* 004E */ 0x6521, 0x657E, 0x13ED, -/* 004F */ 0x6621, 0x667E, 0x144B, -/* 0050 */ 0x6721, 0x677E, 0x14A9, -/* 0051 */ 0x6821, 0x687E, 0x1507, -/* 0052 */ 0x6921, 0x697E, 0x1565, -/* 0053 */ 0x6A21, 0x6A7E, 0x15C3, -/* 0054 */ 0x6B21, 0x6B7E, 0x1621, -/* 0055 */ 0x6C21, 0x6C7E, 0x167F, -/* 0056 */ 0x6D21, 0x6D7E, 0x16DD, -/* 0057 */ 0x6E21, 0x6E7E, 0x173B, -/* 0058 */ 0x6F21, 0x6F7E, 0x1799, -/* 0059 */ 0x7021, 0x707E, 0x17F7, -/* 005A */ 0x7121, 0x717E, 0x1855, -/* 005B */ 0x7221, 0x727E, 0x18B3, -/* 005C */ 0x7321, 0x737E, 0x1911, -/* 005D */ 0x7421, 0x747E, 0x196F, -/* 005E */ 0x7521, 0x757E, 0x19CD, -/* 005F */ 0x7621, 0x767E, 0x1A2B, -/* 0060 */ 0x7721, 0x777E, 0x1A89, -/* 0061 */ 0x7821, 0x787E, 0x1AE7, -/* 0062 */ 0x7921, 0x7929, 0x1B45, -/*-------------------------------------------------------*/ -/* Offset=0x0146 Start of MappingTable */ - -/* 0000 */ 0x3000, 0x3001, 0x3002, 0x30FB, 0x02C9, 0x02C7, 0x00A8, 0x3003, -/* 0008 */ 0x3005, 0x2015, 0xFF5E, 0x2225, 0x2026, 0x2018, 0x2019, 0x201C, -/* 0010 */ 0x201D, 0x3014, 0x3015, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3016, 0x3017, 0x3010, 0x3011, 0x00B1, -/* 0020 */ 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, 0x222A, -/* 0028 */ 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312, -/* 0030 */ 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D, -/* 0038 */ 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234, -/* 0040 */ 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4, -/* 0048 */ 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB, -/* 0050 */ 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, -/* 0058 */ 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0xFF01, 0xFF02, -/* 0060 */ 0xFF03, 0xFFE5, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, -/* 0068 */ 0x011B, 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, -/* 0070 */ 0x01D2, 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, -/* 0078 */ 0x01DA, 0x01DC, 0x00FC, 0x00EA, 0x554A, 0x963F, 0x57C3, 0x6328, -/* 0080 */ 0x54CE, 0x5509, 0x54C0, 0x769A, 0x764C, 0x85F9, 0x77EE, 0x827E, -/* 0088 */ 0x7919, 0x611B, 0x9698, 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, -/* 0090 */ 0x6697, 0x5CB8, 0x80FA, 0x6848, 0x9AAF, 0x6602, 0x76CE, 0x51F9, -/* 0098 */ 0x6556, 0x71AC, 0x7FF1, 0x8956, 0x50B2, 0x5965, 0x61CA, 0x6FB3, -/* 00A0 */ 0x82AD, 0x634C, 0x6252, 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, -/* 00A8 */ 0x5DF4, 0x62D4, 0x8DCB, 0x9776, 0x628A, 0x8019, 0x58E9, 0x9738, -/* 00B0 */ 0x7F77, 0x7238, 0x767D, 0x67CF, 0x767E, 0x64FA, 0x4F70, 0x6557, -/* 00B8 */ 0x62DC, 0x7A17, 0x6591, 0x73ED, 0x642C, 0x6273, 0x822C, 0x9812, -/* 00C0 */ 0x677F, 0x7248, 0x626E, 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x8FA6, -/* 00C8 */ 0x7D46, 0x90A6, 0x5E6B, 0x6886, 0x699C, 0x8180, 0x7D81, 0x68D2, -/* 00D0 */ 0x78C5, 0x868C, 0x938A, 0x508D, 0x8B17, 0x82DE, 0x80DE, 0x5305, -/* 00D8 */ 0x8912, 0x5265, 0x8584, 0x96F9, 0x4FDD, 0x5821, 0x98FD, 0x5BF6, -/* 00E0 */ 0x62B1, 0x5831, 0x66B4, 0x8C79, 0x9B91, 0x7206, 0x676F, 0x7891, -/* 00E8 */ 0x60B2, 0x5351, 0x5317, 0x8F29, 0x80CC, 0x8C9D, 0x92C7, 0x500D, -/* 00F0 */ 0x72FD, 0x5099, 0x618A, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, -/* 00F8 */ 0x7B28, 0x5D29, 0x7DB3, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, -/* 0100 */ 0x9F3B, 0x6BD4, 0x9119, 0x7B46, 0x5F7C, 0x78A7, 0x84D6, 0x853D, -/* 0108 */ 0x7562, 0x6583, 0x6BD6, 0x5E63, 0x5E87, 0x75F9, 0x9589, 0x655D, -/* 0110 */ 0x5F0A, 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, -/* 0118 */ 0x908A, 0x7DE8, 0x8CB6, 0x6241, 0x4FBF, 0x8B8A, 0x535E, 0x8FA8, -/* 0120 */ 0x8FAF, 0x8FAE, 0x904D, 0x6A19, 0x5F6A, 0x8198, 0x8868, 0x9C49, -/* 0128 */ 0x618B, 0x522B, 0x765F, 0x5F6C, 0x658C, 0x7015, 0x6FF1, 0x8CD3, -/* 0130 */ 0x64EF, 0x5175, 0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x9905, 0x70B3, -/* 0138 */ 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x64A5, 0x9262, 0x6CE2, -/* 0140 */ 0x535A, 0x52C3, 0x640F, 0x9251, 0x7B94, 0x4F2F, 0x5E1B, 0x8236, -/* 0148 */ 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x99C1, 0x6355, 0x535C, 0x54FA, -/* 0150 */ 0x88DC, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, -/* 0158 */ 0x64E6, 0x731C, 0x88C1, 0x6750, 0x624D, 0x8CA1, 0x776C, 0x8E29, -/* 0160 */ 0x91C7, 0x5F69, 0x83DC, 0x8521, 0x9910, 0x53C3, 0x8836, 0x6B98, -/* 0168 */ 0x615A, 0x6158, 0x71E6, 0x84BC, 0x8259, 0x5009, 0x6EC4, 0x85CF, -/* 0170 */ 0x64CD, 0x7CD9, 0x69FD, 0x66F9, 0x8349, 0x53A0, 0x7B56, 0x5074, -/* 0178 */ 0x518C, 0x6E2C, 0x5C64, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 0x8336, -/* 0180 */ 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8A6B, 0x62C6, -/* 0188 */ 0x67F4, 0x8C7A, 0x6519, 0x647B, 0x87EC, 0x995E, 0x8B92, 0x7E8F, -/* 0190 */ 0x93DF, 0x7523, 0x95E1, 0x986B, 0x660C, 0x7316, 0x5834, 0x5617, -/* 0198 */ 0x5E38, 0x9577, 0x511F, 0x8178, 0x5EE0, 0x655E, 0x66A2, 0x5531, -/* 01A0 */ 0x5021, 0x8D85, 0x6284, 0x9214, 0x671D, 0x5632, 0x6F6E, 0x5DE2, -/* 01A8 */ 0x5435, 0x7092, 0x8ECA, 0x626F, 0x64A4, 0x63A3, 0x5FB9, 0x6F88, -/* 01B0 */ 0x90F4, 0x81E3, 0x8FB0, 0x5875, 0x6668, 0x5FF1, 0x6C89, 0x9673, -/* 01B8 */ 0x8D81, 0x896F, 0x6491, 0x7A31, 0x57CE, 0x6A59, 0x6210, 0x5448, -/* 01C0 */ 0x4E58, 0x7A0B, 0x61F2, 0x6F84, 0x8AA0, 0x627F, 0x901E, 0x9A01, -/* 01C8 */ 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, 0x6C60, 0x9072, 0x5F1B, -/* 01D0 */ 0x99B3, 0x803B, 0x9F52, 0x4F88, 0x5C3A, 0x8D64, 0x7FC5, 0x65A5, -/* 01D8 */ 0x71BE, 0x5145, 0x885D, 0x87F2, 0x5D07, 0x5BF5, 0x62BD, 0x916C, -/* 01E0 */ 0x7587, 0x8E8A, 0x7A20, 0x6101, 0x7C4C, 0x4EC7, 0x7DA2, 0x7785, -/* 01E8 */ 0x919C, 0x81ED, 0x521D, 0x51FA, 0x6A71, 0x53A8, 0x8E87, 0x92E4, -/* 01F0 */ 0x96DB, 0x6EC1, 0x9664, 0x695A, 0x790E, 0x5132, 0x77D7, 0x6410, -/* 01F8 */ 0x89F8, 0x8655, 0x63E3, 0x5DDD, 0x7A7F, 0x693D, 0x50B3, 0x8239, -/* 0200 */ 0x5598, 0x4E32, 0x7621, 0x7A97, 0x5E62, 0x5E8A, 0x95D6, 0x5275, -/* 0208 */ 0x5439, 0x708A, 0x6376, 0x9318, 0x5782, 0x6625, 0x693F, 0x9187, -/* 0210 */ 0x5507, 0x6DF3, 0x7D14, 0x8822, 0x6233, 0x7DBD, 0x75B5, 0x8328, -/* 0218 */ 0x78C1, 0x96CC, 0x8FAD, 0x6148, 0x74F7, 0x8A5E, 0x6B64, 0x523A, -/* 0220 */ 0x8CDC, 0x6B21, 0x8070, 0x8471, 0x56F1, 0x5306, 0x5F9E, 0x53E2, -/* 0228 */ 0x51D1, 0x7C97, 0x918B, 0x7C07, 0x4FC3, 0x8EA5, 0x7BE1, 0x7AC4, -/* 0230 */ 0x6467, 0x5D14, 0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, -/* 0238 */ 0x6751, 0x5B58, 0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, -/* 0240 */ 0x932F, 0x642D, 0x9054, 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, -/* 0248 */ 0x6B79, 0x50A3, 0x6234, 0x5E36, 0x6B86, 0x4EE3, 0x8CB8, 0x888B, -/* 0250 */ 0x5F85, 0x902E, 0x6020, 0x803D, 0x64D4, 0x4E39, 0x55AE, 0x9132, -/* 0258 */ 0x64A3, 0x81BD, 0x65E6, 0x6C2E, 0x4F46, 0x619A, 0x6DE1, 0x8A95, -/* 0260 */ 0x5F48, 0x86CB, 0x7576, 0x64CB, 0x9EE8, 0x8569, 0x6A94, 0x5200, -/* 0268 */ 0x6417, 0x8E48, 0x5012, 0x5CF6, 0x79B1, 0x5C0E, 0x5230, 0x7A3B, -/* 0270 */ 0x60BC, 0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x71C8, -/* 0278 */ 0x767B, 0x7B49, 0x77AA, 0x51F3, 0x9127, 0x5824, 0x4F4E, 0x6EF4, -/* 0280 */ 0x8FEA, 0x6575, 0x7B1B, 0x72C4, 0x6ECC, 0x7FDF, 0x5AE1, 0x62B5, -/* 0288 */ 0x5E95, 0x5730, 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x905E, 0x7DE0, -/* 0290 */ 0x985B, 0x6382, 0x6EC7, 0x7898, 0x9EDE, 0x5178, 0x975B, 0x588A, -/* 0298 */ 0x96FB, 0x4F43, 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6FB1, 0x6BBF, -/* 02A0 */ 0x7889, 0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x91E3, -/* 02A8 */ 0x8ABF, 0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8ADC, 0x758A, -/* 02B0 */ 0x4E01, 0x76EF, 0x53EE, 0x91D8, 0x9802, 0x9F0E, 0x9320, 0x5B9A, -/* 02B8 */ 0x8A02, 0x4E22, 0x6771, 0x51AC, 0x8463, 0x61C2, 0x52D5, 0x68DF, -/* 02C0 */ 0x4F97, 0x606B, 0x51CD, 0x6D1E, 0x515C, 0x6296, 0x9B25, 0x9661, -/* 02C8 */ 0x8C46, 0x9017, 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x72A2, 0x7368, -/* 02D0 */ 0x8B80, 0x5835, 0x7779, 0x8CED, 0x675C, 0x934D, 0x809A, 0x5EA6, -/* 02D8 */ 0x6E21, 0x5992, 0x7AEF, 0x77ED, 0x935B, 0x6BB5, 0x65B7, 0x7DDE, -/* 02E0 */ 0x5806, 0x5151, 0x968A, 0x5C0D, 0x58A9, 0x5678, 0x8E72, 0x6566, -/* 02E8 */ 0x9813, 0x56E4, 0x920D, 0x76FE, 0x9041, 0x6387, 0x54C6, 0x591A, -/* 02F0 */ 0x596A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 0x60F0, -/* 02F8 */ 0x58AE, 0x86FE, 0x5CE8, 0x9D5D, 0x4FC4, 0x984D, 0x8A1B, 0x5A25, -/* 0300 */ 0x60E1, 0x5384, 0x627C, 0x904F, 0x9102, 0x9913, 0x6069, 0x800C, -/* 0308 */ 0x5152, 0x8033, 0x723E, 0x990C, 0x6D31, 0x4E8C, 0x8CB3, 0x767C, -/* 0310 */ 0x7F70, 0x7B4F, 0x4F10, 0x4E4F, 0x95A5, 0x6CD5, 0x73D0, 0x85E9, -/* 0318 */ 0x5E06, 0x756A, 0x7FFB, 0x6A0A, 0x792C, 0x91E9, 0x7E41, 0x51E1, -/* 0320 */ 0x7169, 0x53CD, 0x8FD4, 0x7BC4, 0x8CA9, 0x72AF, 0x98EF, 0x6CDB, -/* 0328 */ 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F, 0x9632, 0x59A8, 0x4EFF, -/* 0330 */ 0x8A2A, 0x7D21, 0x653E, 0x83F2, 0x975E, 0x5561, 0x98DB, 0x80A5, -/* 0338 */ 0x532A, 0x8AB9, 0x5420, 0x80BA, 0x5EE2, 0x6CB8, 0x8CBB, 0x82AC, -/* 0340 */ 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7D1B, 0x58B3, 0x711A, 0x6C7E, -/* 0348 */ 0x7C89, 0x596E, 0x4EFD, 0x5FFF, 0x61A4, 0x7CDE, 0x8C50, 0x5C01, -/* 0350 */ 0x6953, 0x8702, 0x5CF0, 0x92D2, 0x98A8, 0x760B, 0x70FD, 0x9022, -/* 0358 */ 0x99AE, 0x7E2B, 0x8AF7, 0x5949, 0x9CF3, 0x4F5B, 0x5426, 0x592B, -/* 0360 */ 0x6577, 0x819A, 0x5B75, 0x6276, 0x62C2, 0x8F3B, 0x5E45, 0x6C1F, -/* 0368 */ 0x7B26, 0x4F0F, 0x4FD8, 0x670D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, -/* 0370 */ 0x5F17, 0x752B, 0x64AB, 0x8F14, 0x4FEF, 0x91DC, 0x65A7, 0x812F, -/* 0378 */ 0x8151, 0x5E9C, 0x8150, 0x8D74, 0x526F, 0x8986, 0x8CE6, 0x5FA9, -/* 0380 */ 0x5085, 0x4ED8, 0x961C, 0x7236, 0x8179, 0x8CA0, 0x5BCC, 0x8A03, -/* 0388 */ 0x9644, 0x5A66, 0x7E1B, 0x5490, 0x5676, 0x560E, 0x8A72, 0x6539, -/* 0390 */ 0x6982, 0x9223, 0x84CB, 0x6E89, 0x5E79, 0x7518, 0x6746, 0x67D1, -/* 0398 */ 0x7AFF, 0x809D, 0x8D95, 0x611F, 0x79C6, 0x6562, 0x8D1B, 0x5CA1, -/* 03A0 */ 0x525B, 0x92FC, 0x7F38, 0x809B, 0x7DB1, 0x5D17, 0x6E2F, 0x6760, -/* 03A8 */ 0x7BD9, 0x768B, 0x9AD8, 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x93AC, -/* 03B0 */ 0x7A3F, 0x544A, 0x54E5, 0x6B4C, 0x64F1, 0x6208, 0x9D3F, 0x80F3, -/* 03B8 */ 0x7599, 0x5272, 0x9769, 0x845B, 0x683C, 0x86E4, 0x95A3, 0x9694, -/* 03C0 */ 0x927B, 0x500B, 0x5404, 0x7D66, 0x6839, 0x8DDF, 0x8015, 0x66F4, -/* 03C8 */ 0x5E9A, 0x7FB9, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, -/* 03D0 */ 0x606D, 0x9F94, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x978F, -/* 03D8 */ 0x6C5E, 0x62F1, 0x8CA2, 0x5171, 0x920E, 0x52FE, 0x6E9D, 0x82DF, -/* 03E0 */ 0x72D7, 0x57A2, 0x69CB, 0x8CFC, 0x591F, 0x8F9C, 0x83C7, 0x5495, -/* 03E8 */ 0x7B8D, 0x4F30, 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x8831, -/* 03F0 */ 0x9AA8, 0x8C37, 0x80A1, 0x6545, 0x9867, 0x56FA, 0x96C7, 0x522E, -/* 03F8 */ 0x74DC, 0x526E, 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, -/* 0400 */ 0x68FA, 0x95DC, 0x5B98, 0x51A0, 0x89C0, 0x7BA1, 0x9928, 0x7F50, -/* 0408 */ 0x6163, 0x704C, 0x8CAB, 0x5149, 0x5EE3, 0x901B, 0x7470, 0x898F, -/* 0410 */ 0x572D, 0x7845, 0x6B78, 0x9F9C, 0x95A8, 0x8ECC, 0x9B3C, 0x8A6D, -/* 0418 */ 0x7678, 0x6842, 0x6AC3, 0x8DEA, 0x8CB4, 0x528A, 0x8F25, 0x6EDA, -/* 0420 */ 0x68CD, 0x934B, 0x90ED, 0x570B, 0x679C, 0x88F9, 0x904E, 0x54C8, -/* 0428 */ 0x9AB8, 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x99ED, 0x9163, -/* 0430 */ 0x61A8, 0x90AF, 0x97D3, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 0x558A, -/* 0438 */ 0x7F55, 0x7FF0, 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, 0x710A, -/* 0440 */ 0x6C57, 0x6F22, 0x592F, 0x676D, 0x822A, 0x58D5, 0x568E, 0x8C6A, -/* 0448 */ 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x865F, 0x6D69, 0x5475, 0x559D, -/* 0450 */ 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408, 0x76D2, -/* 0458 */ 0x8C89, 0x95A1, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9DB4, 0x8CC0, -/* 0460 */ 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 0x4EA8, -/* 0468 */ 0x6A2A, 0x8861, 0x6052, 0x8F5F, 0x54C4, 0x70D8, 0x8679, 0x9D3B, -/* 0470 */ 0x6D2A, 0x5B8F, 0x5F18, 0x7D05, 0x5589, 0x4FAF, 0x7334, 0x543C, -/* 0478 */ 0x539A, 0x5019, 0x5F8C, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 0x58FA, -/* 0480 */ 0x846B, 0x80E1, 0x8774, 0x72D0, 0x7CCA, 0x6E56, 0x5F27, 0x864E, -/* 0488 */ 0x552C, 0x8B77, 0x4E92, 0x6EEC, 0x6237, 0x82B1, 0x5629, 0x83EF, -/* 0490 */ 0x733E, 0x6ED1, 0x756B, 0x5283, 0x5316, 0x8A71, 0x69D0, 0x5F8A, -/* 0498 */ 0x61F7, 0x6DEE, 0x58DE, 0x6B61, 0x74B0, 0x6853, 0x9084, 0x7DE9, -/* 04A0 */ 0x63DB, 0x60A3, 0x559A, 0x7613, 0x8C62, 0x7165, 0x6E19, 0x5BA6, -/* 04A8 */ 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, -/* 04B0 */ 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C, 0x604D, 0x8B0A, 0x7070, -/* 04B8 */ 0x63EE, 0x8F1D, 0x5FBD, 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, -/* 04C0 */ 0x6167, 0x5349, 0x60E0, 0x6666, 0x8CC4, 0x7A62, 0x6703, 0x71F4, -/* 04C8 */ 0x532F, 0x8AF1, 0x8AA8, 0x7E6A, 0x8477, 0x660F, 0x5A5A, 0x9B42, -/* 04D0 */ 0x6E3E, 0x6DF7, 0x8C41, 0x6D3B, 0x4F19, 0x706B, 0x7372, 0x6216, -/* 04D8 */ 0x60D1, 0x970D, 0x8CA8, 0x798D, 0x64CA, 0x573E, 0x57FA, 0x6A5F, -/* 04E0 */ 0x7578, 0x7A3D, 0x7A4D, 0x7B95, 0x808C, 0x9951, 0x8FF9, 0x6FC0, -/* 04E8 */ 0x8B4F, 0x9DC4, 0x59EC, 0x7E3E, 0x7DDD, 0x5409, 0x6975, 0x68D8, -/* 04F0 */ 0x8F2F, 0x7C4D, 0x96C6, 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, -/* 04F8 */ 0x5AC9, 0x7D1A, 0x64E0, 0x5E7E, 0x810A, 0x5DF1, 0x858A, 0x6280, -/* 0500 */ 0x5180, 0x5B63, 0x4F0E, 0x796D, 0x5291, 0x60B8, 0x6FDF, 0x5BC4, -/* 0508 */ 0x5BC2, 0x8A08, 0x8A18, 0x65E2, 0x5FCC, 0x969B, 0x5993, 0x7E7C, -/* 0510 */ 0x7D00, 0x5609, 0x67B7, 0x593E, 0x4F73, 0x5BB6, 0x52A0, 0x83A2, -/* 0518 */ 0x9830, 0x8CC8, 0x7532, 0x9240, 0x5047, 0x7A3C, 0x50F9, 0x67B6, -/* 0520 */ 0x99D5, 0x5AC1, 0x6BB2, 0x76E3, 0x5805, 0x5C16, 0x7B8B, 0x9593, -/* 0528 */ 0x714E, 0x517C, 0x80A9, 0x8271, 0x5978, 0x7DD8, 0x7E6D, 0x6AA2, -/* 0530 */ 0x67EC, 0x78B1, 0x9E7C, 0x63C0, 0x64BF, 0x7C21, 0x5109, 0x526A, -/* 0538 */ 0x51CF, 0x85A6, 0x6ABB, 0x9452, 0x8E10, 0x8CE4, 0x898B, 0x9375, -/* 0540 */ 0x7BAD, 0x4EF6, 0x5065, 0x8266, 0x528D, 0x991E, 0x6F38, 0x6FFA, -/* 0548 */ 0x6F97, 0x5EFA, 0x50F5, 0x59DC, 0x5C07, 0x6F3F, 0x6C5F, 0x7586, -/* 0550 */ 0x8523, 0x69F3, 0x596C, 0x8B1B, 0x5320, 0x91AC, 0x964D, 0x8549, -/* 0558 */ 0x6912, 0x7901, 0x7126, 0x81A0, 0x4EA4, 0x90CA, 0x6F86, 0x9A55, -/* 0560 */ 0x5B0C, 0x56BC, 0x652A, 0x9278, 0x77EF, 0x50E5, 0x811A, 0x72E1, -/* 0568 */ 0x89D2, 0x9903, 0x7E73, 0x7D5E, 0x527F, 0x6559, 0x9175, 0x8F4E, -/* 0570 */ 0x8F03, 0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, -/* 0578 */ 0x968E, 0x622A, 0x52AB, 0x7BC0, 0x6854, 0x6770, 0x6377, 0x776B, -/* 0580 */ 0x7AED, 0x6F54, 0x7D50, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, -/* 0588 */ 0x754C, 0x501F, 0x4ECB, 0x75A5, 0x8AA1, 0x5C4A, 0x5DFE, 0x7B4B, -/* 0590 */ 0x65A4, 0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7DCA, 0x9326, 0x50C5, -/* 0598 */ 0x8B39, 0x9032, 0x9773, 0x6649, 0x7981, 0x8FD1, 0x71FC, 0x6D78, -/* 05A0 */ 0x76E1, 0x52C1, 0x8346, 0x5162, 0x8396, 0x775B, 0x6676, 0x9BE8, -/* 05A8 */ 0x4EAC, 0x9A5A, 0x7CBE, 0x7CB3, 0x7D93, 0x4E95, 0x8B66, 0x666F, -/* 05B0 */ 0x9838, 0x975C, 0x5883, 0x656C, 0x93E1, 0x5F91, 0x75D9, 0x9756, -/* 05B8 */ 0x7ADF, 0x7AF6, 0x51C8, 0x70AF, 0x7A98, 0x63EA, 0x7A76, 0x7CFE, -/* 05C0 */ 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, 0x6551, -/* 05C8 */ 0x820A, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8, -/* 05D0 */ 0x72D9, 0x75BD, 0x5C45, 0x99D2, 0x83CA, 0x5C40, 0x5480, 0x77E9, -/* 05D8 */ 0x8209, 0x6CAE, 0x805A, 0x62D2, 0x64DA, 0x5DE8, 0x5177, 0x8DDD, -/* 05E0 */ 0x8E1E, 0x92F8, 0x4FF1, 0x53E5, 0x61FC, 0x70AC, 0x5287, 0x6350, -/* 05E8 */ 0x9D51, 0x5A1F, 0x5026, 0x7737, 0x5377, 0x7D79, 0x6485, 0x652B, -/* 05F0 */ 0x6289, 0x6398, 0x5014, 0x7235, 0x89BA, 0x51B3, 0x8A23, 0x7D76, -/* 05F8 */ 0x5747, 0x83CC, 0x921E, 0x8ECD, 0x541B, 0x5CFB, 0x4FCA, 0x7AE3, -/* 0600 */ 0x6D5A, 0x90E1, 0x99FF, 0x5580, 0x5496, 0x5361, 0x54AF, 0x958B, -/* 0608 */ 0x63E9, 0x6977, 0x51F1, 0x6168, 0x520A, 0x582A, 0x52D8, 0x574E, -/* 0610 */ 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, -/* 0618 */ 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, -/* 0620 */ 0x68F5, 0x78D5, 0x9846, 0x79D1, 0x6BBB, 0x54B3, 0x53EF, 0x6E34, -/* 0628 */ 0x514B, 0x523B, 0x5BA2, 0x8AB2, 0x80AF, 0x5543, 0x58BE, 0x61C7, -/* 0630 */ 0x5751, 0x542D, 0x7A7A, 0x6050, 0x5B54, 0x63A7, 0x6473, 0x53E3, -/* 0638 */ 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F, 0x82E6, 0x9177, 0x5EAB, -/* 0640 */ 0x8932, 0x8A87, 0x57AE, 0x630E, 0x8DE8, 0x80EF, 0x584A, 0x7B77, -/* 0648 */ 0x5108, 0x5FEB, 0x5BEC, 0x6B3E, 0x5321, 0x7B50, 0x72C2, 0x6846, -/* 0650 */ 0x7926, 0x7736, 0x66E0, 0x51B5, 0x8667, 0x76D4, 0x5DCB, 0x7ABA, -/* 0658 */ 0x8475, 0x594E, 0x9B41, 0x5080, 0x994B, 0x6127, 0x6F70, 0x5764, -/* 0660 */ 0x6606, 0x6346, 0x56F0, 0x62EC, 0x64F4, 0x5ED3, 0x95CA, 0x5783, -/* 0668 */ 0x62C9, 0x5587, 0x881F, 0x81D8, 0x8FA3, 0x5566, 0x840A, 0x4F86, -/* 0670 */ 0x8CF4, 0x85CD, 0x5A6A, 0x6B04, 0x6514, 0x7C43, 0x95CC, 0x862D, -/* 0678 */ 0x703E, 0x8B95, 0x652C, 0x89BD, 0x61F6, 0x7E9C, 0x721B, 0x6FEB, -/* 0680 */ 0x7405, 0x6994, 0x72FC, 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x6488, -/* 0688 */ 0x52DE, 0x7262, 0x8001, 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6F87, -/* 0690 */ 0x52D2, 0x6A02, 0x96F7, 0x9433, 0x857E, 0x78CA, 0x7D2F, 0x5121, -/* 0698 */ 0x58D8, 0x64C2, 0x808B, 0x985E, 0x6CEA, 0x68F1, 0x695E, 0x51B7, -/* 06A0 */ 0x5398, 0x68A8, 0x7281, 0x9ECE, 0x7C6C, 0x72F8, 0x96E2, 0x7055, -/* 06A8 */ 0x7406, 0x674E, 0x88CF, 0x9BC9, 0x79AE, 0x8389, 0x8354, 0x540F, -/* 06B0 */ 0x6817, 0x9E97, 0x53B2, 0x52F5, 0x792B, 0x6B77, 0x5229, 0x5088, -/* 06B8 */ 0x4F8B, 0x4FD0, 0x75E2, 0x7ACB, 0x7C92, 0x701D, 0x96B8, 0x529B, -/* 06C0 */ 0x7483, 0x54E9, 0x5006, 0x806F, 0x84EE, 0x9023, 0x942E, 0x5EC9, -/* 06C8 */ 0x6190, 0x6F23, 0x7C3E, 0x6582, 0x81C9, 0x93C8, 0x6200, 0x7149, -/* 06D0 */ 0x7DF4, 0x7CE7, 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x5169, 0x8F1B, -/* 06D8 */ 0x91CF, 0x667E, 0x4EAE, 0x8AD2, 0x64A9, 0x804A, 0x50DA, 0x7642, -/* 06E0 */ 0x71CE, 0x5BE5, 0x907C, 0x6F66, 0x4E86, 0x6482, 0x9410, 0x5ED6, -/* 06E8 */ 0x6599, 0x5217, 0x88C2, 0x70C8, 0x52A3, 0x7375, 0x7433, 0x6797, -/* 06F0 */ 0x78F7, 0x9716, 0x81E8, 0x9130, 0x9C57, 0x6DCB, 0x51DB, 0x8CC3, -/* 06F8 */ 0x541D, 0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F61, 0x9234, 0x4F36, -/* 0700 */ 0x7F9A, 0x51CC, 0x9748, 0x9675, 0x5DBA, 0x9818, 0x53E6, 0x4EE4, -/* 0708 */ 0x6E9C, 0x7409, 0x69B4, 0x786B, 0x993E, 0x7559, 0x5289, 0x7624, -/* 0710 */ 0x6D41, 0x67F3, 0x516D, 0x9F8D, 0x807E, 0x56A8, 0x7C60, 0x7ABF, -/* 0718 */ 0x9686, 0x58DF, 0x650F, 0x96B4, 0x6A13, 0x5A41, 0x645F, 0x7C0D, -/* 0720 */ 0x6F0F, 0x964B, 0x8606, 0x76E7, 0x9871, 0x5EEC, 0x7210, 0x64C4, -/* 0728 */ 0x6EF7, 0x865C, 0x9B6F, 0x9E93, 0x788C, 0x9732, 0x8DEF, 0x8CC2, -/* 0730 */ 0x9E7F, 0x6F5E, 0x7984, 0x9332, 0x9678, 0x622E, 0x9A62, 0x5415, -/* 0738 */ 0x92C1, 0x4FA3, 0x65C5, 0x5C65, 0x5C62, 0x7E37, 0x616E, 0x6C2F, -/* 0740 */ 0x5F8B, 0x7387, 0x6FFE, 0x7DD1, 0x5DD2, 0x6523, 0x5B7F, 0x7064, -/* 0748 */ 0x5375, 0x4E82, 0x63A0, 0x7565, 0x6384, 0x8F2A, 0x502B, 0x4F96, -/* 0750 */ 0x6DEA, 0x7DB8, 0x8AD6, 0x863F, 0x87BA, 0x7F85, 0x908F, 0x947C, -/* 0758 */ 0x7C6E, 0x9A3E, 0x88F8, 0x843D, 0x6D1B, 0x99F1, 0x7D61, 0x5ABD, -/* 0760 */ 0x9EBB, 0x746A, 0x78BC, 0x879E, 0x99AC, 0x99E1, 0x561B, 0x55CE, -/* 0768 */ 0x57CB, 0x8CB7, 0x9EA5, 0x8CE3, 0x9081, 0x8109, 0x779E, 0x9945, -/* 0770 */ 0x883B, 0x6EFF, 0x8513, 0x66FC, 0x6162, 0x6F2B, 0x8B3E, 0x8292, -/* 0778 */ 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, 0x732B, 0x8305, 0x9328, -/* 0780 */ 0x6BDB, 0x77DB, 0x925A, 0x536F, 0x8302, 0x5192, 0x5E3D, 0x8C8C, -/* 0788 */ 0x8CBF, 0x9EBD, 0x73AB, 0x679A, 0x6885, 0x9176, 0x9709, 0x7164, -/* 0790 */ 0x6CA1, 0x7709, 0x5A92, 0x9382, 0x6BCF, 0x7F8E, 0x6627, 0x5BD0, -/* 0798 */ 0x59B9, 0x5A9A, 0x9580, 0x60B6, 0x5011, 0x840C, 0x8499, 0x6AAC, -/* 07A0 */ 0x76DF, 0x9333, 0x731B, 0x5922, 0x5B5F, 0x772F, 0x919A, 0x9761, -/* 07A8 */ 0x7CDC, 0x8FF7, 0x8B0E, 0x5F4C, 0x7C73, 0x79D8, 0x8993, 0x6CCC, -/* 07B0 */ 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, 0x7DBF, 0x5195, 0x514D, -/* 07B8 */ 0x52C9, 0x5A29, 0x7DEC, 0x9762, 0x82D7, 0x63CF, 0x7784, 0x85D0, -/* 07C0 */ 0x79D2, 0x6E3A, 0x5EDF, 0x5999, 0x8511, 0x6EC5, 0x6C11, 0x62BF, -/* 07C8 */ 0x76BF, 0x654F, 0x61AB, 0x95A9, 0x660E, 0x879F, 0x9CF4, 0x9298, -/* 07D0 */ 0x540D, 0x547D, 0x8B2C, 0x6478, 0x6479, 0x8611, 0x6A21, 0x819C, -/* 07D8 */ 0x78E8, 0x6469, 0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, -/* 07E0 */ 0x6CAB, 0x6F20, 0x5BDE, 0x964C, 0x8B00, 0x725F, 0x67D0, 0x62C7, -/* 07E8 */ 0x7261, 0x755D, 0x59C6, 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, -/* 07F0 */ 0x6155, 0x6728, 0x76EE, 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, -/* 07F8 */ 0x5450, 0x9209, 0x90A3, 0x5A1C, 0x7D0D, 0x6C16, 0x4E43, 0x5976, -/* 0800 */ 0x8010, 0x5948, 0x5357, 0x7537, 0x96E3, 0x56CA, 0x6493, 0x8166, -/* 0808 */ 0x60F1, 0x9B27, 0x6DD6, 0x5462, 0x9912, 0x5185, 0x5AE9, 0x80FD, -/* 0810 */ 0x59AE, 0x9713, 0x502A, 0x6CE5, 0x5C3C, 0x64EC, 0x4F60, 0x533F, -/* 0818 */ 0x81A9, 0x9006, 0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x6506, -/* 0820 */ 0x637B, 0x5FF5, 0x5A18, 0x91C0, 0x9CE5, 0x5C3F, 0x634F, 0x8076, -/* 0828 */ 0x5B7D, 0x5699, 0x9477, 0x93B3, 0x6D85, 0x60A8, 0x6AB8, 0x7370, -/* 0830 */ 0x51DD, 0x5BE7, 0x64F0, 0x6FD8, 0x725B, 0x626D, 0x9215, 0x7D10, -/* 0838 */ 0x81BF, 0x6FC3, 0x8FB2, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, -/* 0840 */ 0x6696, 0x8650, 0x7627, 0x632A, 0x61E6, 0x7CEF, 0x8AFE, 0x54E6, -/* 0848 */ 0x6B50, 0x9DD7, 0x6BC6, 0x85D5, 0x5614, 0x5076, 0x6F1A, 0x556A, -/* 0850 */ 0x8DB4, 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, -/* 0858 */ 0x5F98, 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76E4, 0x78D0, 0x76FC, -/* 0860 */ 0x7554, 0x5224, 0x53DB, 0x4E53, 0x9F90, 0x65C1, 0x802A, 0x80D6, -/* 0868 */ 0x629B, 0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, -/* 0870 */ 0x80DA, 0x57F9, 0x88F4, 0x8CE0, 0x966A, 0x914D, 0x4F69, 0x6C9B, -/* 0878 */ 0x5674, 0x76C6, 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, -/* 0880 */ 0x68DA, 0x787C, 0x7BF7, 0x81A8, 0x670B, 0x9D6C, 0x6367, 0x78B0, -/* 0888 */ 0x576F, 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7, -/* 0890 */ 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, 0x5C41, -/* 0898 */ 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A19, 0x98C4, 0x6F02, 0x74E2, -/* 08A0 */ 0x7968, 0x6487, 0x77A5, 0x62FC, 0x983B, 0x8CA7, 0x54C1, 0x8058, -/* 08A8 */ 0x4E52, 0x576A, 0x860B, 0x840D, 0x5E73, 0x6191, 0x74F6, 0x8A55, -/* 08B0 */ 0x5C4F, 0x5761, 0x6F51, 0x9817, 0x5A46, 0x7834, 0x9B44, 0x8FEB, -/* 08B8 */ 0x7C95, 0x5256, 0x64B2, 0x92EA, 0x50D5, 0x8386, 0x8461, 0x83E9, -/* 08C0 */ 0x84B2, 0x57D4, 0x6A38, 0x5703, 0x666E, 0x6D66, 0x8B5C, 0x66DD, -/* 08C8 */ 0x7011, 0x671F, 0x6B3A, 0x68F2, 0x621A, 0x59BB, 0x4E03, 0x51C4, -/* 08D0 */ 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, 0x7566, -/* 08D8 */ 0x5D0E, 0x81CD, 0x9F4A, 0x65D7, 0x7948, 0x7941, 0x9A0E, 0x8D77, -/* 08E0 */ 0x8C48, 0x4E5E, 0x4F01, 0x5553, 0x5951, 0x780C, 0x5668, 0x6C23, -/* 08E8 */ 0x8FC4, 0x68C4, 0x6C7D, 0x6CE3, 0x8A16, 0x6390, 0x6070, 0x6D3D, -/* 08F0 */ 0x727D, 0x6266, 0x91FA, 0x925B, 0x5343, 0x9077, 0x7C3D, 0x4EDF, -/* 08F8 */ 0x8B19, 0x4E7E, 0x9ED4, 0x9322, 0x9257, 0x524D, 0x6F5B, 0x9063, -/* 0900 */ 0x6DFA, 0x8B74, 0x5879, 0x5D4C, 0x6B20, 0x6B49, 0x69CD, 0x55C6, -/* 0908 */ 0x8154, 0x7F8C, 0x58BB, 0x8594, 0x5F3A, 0x6436, 0x6A47, 0x936C, -/* 0910 */ 0x6572, 0x6084, 0x6A4B, 0x77A7, 0x55AC, 0x50D1, 0x5DE7, 0x9798, -/* 0918 */ 0x64AC, 0x7FF9, 0x5CED, 0x4FCF, 0x7AC5, 0x5207, 0x8304, 0x4E14, -/* 0920 */ 0x602F, 0x7ACA, 0x6B3D, 0x4FB5, 0x89AA, 0x79E6, 0x7434, 0x52E4, -/* 0928 */ 0x82B9, 0x64D2, 0x79BD, 0x5BE2, 0x6C81, 0x9752, 0x8F15, 0x6C2B, -/* 0930 */ 0x50BE, 0x537F, 0x6E05, 0x64CE, 0x6674, 0x6C30, 0x60C5, 0x9803, -/* 0938 */ 0x8ACB, 0x6176, 0x74CA, 0x7AAE, 0x79CB, 0x4E18, 0x90B1, 0x7403, -/* 0940 */ 0x6C42, 0x56DA, 0x914B, 0x6CC5, 0x8DA8, 0x5340, 0x86C6, 0x66F2, -/* 0948 */ 0x8EC0, 0x5C48, 0x9A45, 0x6E20, 0x53D6, 0x5A36, 0x9F72, 0x8DA3, -/* 0950 */ 0x53BB, 0x5708, 0x9874, 0x6B0A, 0x919B, 0x6CC9, 0x5168, 0x75CA, -/* 0958 */ 0x62F3, 0x72AC, 0x5238, 0x52F8, 0x7F3A, 0x7094, 0x7638, 0x5374, -/* 0960 */ 0x9D72, 0x69B7, 0x78BA, 0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, -/* 0968 */ 0x5189, 0x67D3, 0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8B93, 0x9952, -/* 0970 */ 0x64FE, 0x7E5E, 0x60F9, 0x71B1, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, -/* 0978 */ 0x97CC, 0x4EFB, 0x8A8D, 0x5203, 0x598A, 0x7D09, 0x6254, 0x4ECD, -/* 0980 */ 0x65E5, 0x620E, 0x8338, 0x84C9, 0x69AE, 0x878D, 0x7194, 0x6EB6, -/* 0988 */ 0x5BB9, 0x7D68, 0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, -/* 0990 */ 0x5112, 0x5B7A, 0x5982, 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, -/* 0998 */ 0x8EDF, 0x962E, 0x854A, 0x745E, 0x92ED, 0x958F, 0x6F64, 0x82E5, -/* 09A0 */ 0x5F31, 0x6492, 0x7051, 0x85A9, 0x816E, 0x9C13, 0x585E, 0x8CFD, -/* 09A8 */ 0x4E09, 0x53C1, 0x5098, 0x6563, 0x6851, 0x55D3, 0x55AA, 0x6414, -/* 09B0 */ 0x9A37, 0x6383, 0x5AC2, 0x745F, 0x8272, 0x6F80, 0x68EE, 0x50E7, -/* 09B8 */ 0x838E, 0x7802, 0x6BBA, 0x5239, 0x6C99, 0x7D17, 0x50BB, 0x5565, -/* 09C0 */ 0x715E, 0x7BE9, 0x66EC, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, -/* 09C8 */ 0x717D, 0x886B, 0x9583, 0x965D, 0x64C5, 0x8D0D, 0x81B3, 0x5584, -/* 09D0 */ 0x6C55, 0x6247, 0x7E55, 0x5892, 0x50B7, 0x5546, 0x8CDE, 0x664C, -/* 09D8 */ 0x4E0A, 0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x71D2, 0x828D, -/* 09E0 */ 0x52FA, 0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7D39, 0x5962, 0x8CD2, -/* 09E8 */ 0x86C7, 0x820C, 0x6368, 0x8D66, 0x651D, 0x5C04, 0x61FE, 0x6D89, -/* 09F0 */ 0x793E, 0x8A2D, 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, -/* 09F8 */ 0x5A20, 0x7D33, 0x795E, 0x6C88, 0x5BE9, 0x5B38, 0x751A, 0x814E, -/* 0A00 */ 0x614E, 0x6EF2, 0x8072, 0x751F, 0x7525, 0x7272, 0x5347, 0x7E69, -/* 0A08 */ 0x7701, 0x76DB, 0x5269, 0x52DD, 0x8056, 0x5E2B, 0x5931, 0x7345, -/* 0A10 */ 0x65BD, 0x6FD5, 0x8A69, 0x5C38, 0x8671, 0x5341, 0x77F3, 0x62FE, -/* 0A18 */ 0x6642, 0x4EC0, 0x98DF, 0x8755, 0x5BE6, 0x8B58, 0x53F2, 0x77E2, -/* 0A20 */ 0x4F7F, 0x5C4E, 0x99DB, 0x59CB, 0x5F0F, 0x793A, 0x58EB, 0x4E16, -/* 0A28 */ 0x67FF, 0x4E8B, 0x62ED, 0x8A93, 0x901D, 0x52E2, 0x662F, 0x55DC, -/* 0A30 */ 0x566C, 0x9069, 0x4ED5, 0x4F8D, 0x91CB, 0x98FE, 0x6C0F, 0x5E02, -/* 0A38 */ 0x6043, 0x5BA4, 0x8996, 0x8A66, 0x6536, 0x624B, 0x9996, 0x5B88, -/* 0A40 */ 0x58FD, 0x6388, 0x552E, 0x53D7, 0x7626, 0x7378, 0x852C, 0x6A1E, -/* 0A48 */ 0x68B3, 0x6B8A, 0x6292, 0x8F38, 0x53D4, 0x8212, 0x6DD1, 0x758F, -/* 0A50 */ 0x66F8, 0x8D16, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 0x7F72, -/* 0A58 */ 0x8700, 0x9ECD, 0x9F20, 0x5C6C, 0x8853, 0x8FF0, 0x6A39, 0x675F, -/* 0A60 */ 0x620D, 0x7AEA, 0x5885, 0x5EB6, 0x6578, 0x6F31, 0x6055, 0x5237, -/* 0A68 */ 0x800D, 0x6454, 0x8870, 0x7529, 0x5E25, 0x6813, 0x62F4, 0x971C, -/* 0A70 */ 0x96D9, 0x723D, 0x8AB0, 0x6C34, 0x7761, 0x7A0E, 0x542E, 0x77AC, -/* 0A78 */ 0x9806, 0x821C, 0x8AAC, 0x78A9, 0x6714, 0x720D, 0x65AF, 0x6495, -/* 0A80 */ 0x5636, 0x601D, 0x79C1, 0x53F8, 0x7D72, 0x6B7B, 0x8086, 0x5BFA, -/* 0A88 */ 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x98FC, 0x5DF3, 0x9B06, 0x8073, -/* 0A90 */ 0x616B, 0x980C, 0x9001, 0x5B8B, 0x8A1F, 0x8AA6, 0x641C, 0x8258, -/* 0A98 */ 0x64FB, 0x55FD, 0x8607, 0x9165, 0x4FD7, 0x7D20, 0x901F, 0x7C9F, -/* 0AA0 */ 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8A34, 0x8085, 0x9178, 0x849C, -/* 0AA8 */ 0x7B97, 0x96D6, 0x968B, 0x96A8, 0x7D8F, 0x9AD3, 0x788E, 0x6B72, -/* 0AB0 */ 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B6B, 0x640D, 0x7B0B, 0x84D1, -/* 0AB8 */ 0x68AD, 0x5506, 0x7E2E, 0x7463, 0x7D22, 0x9396, 0x6240, 0x584C, -/* 0AC0 */ 0x4ED6, 0x5B83, 0x5979, 0x5854, 0x737A, 0x64BB, 0x8E4B, 0x8E0F, -/* 0AC8 */ 0x80CE, 0x82D4, 0x62AC, 0x81FA, 0x6CF0, 0x915E, 0x592A, 0x614B, -/* 0AD0 */ 0x6C70, 0x574D, 0x6524, 0x8CAA, 0x7671, 0x7058, 0x58C7, 0x6A80, -/* 0AD8 */ 0x75F0, 0x6F6D, 0x8B5A, 0x8AC7, 0x5766, 0x6BEF, 0x8892, 0x78B3, -/* 0AE0 */ 0x63A2, 0x5606, 0x70AD, 0x6E6F, 0x5858, 0x642A, 0x5802, 0x68E0, -/* 0AE8 */ 0x819B, 0x5510, 0x7CD6, 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x71D9, -/* 0AF0 */ 0x638F, 0x6FE4, 0x6ED4, 0x7E27, 0x8404, 0x6843, 0x9003, 0x6DD8, -/* 0AF8 */ 0x9676, 0x8A0E, 0x5957, 0x7279, 0x85E4, 0x9A30, 0x75BC, 0x8B04, -/* 0B00 */ 0x68AF, 0x5254, 0x8E22, 0x92BB, 0x63D0, 0x984C, 0x8E44, 0x557C, -/* 0B08 */ 0x9AD4, 0x66FF, 0x568F, 0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, -/* 0B10 */ 0x6DFB, 0x586B, 0x7530, 0x751C, 0x606C, 0x8214, 0x8146, 0x6311, -/* 0B18 */ 0x689D, 0x8FE2, 0x773A, 0x8DF3, 0x8CBC, 0x9435, 0x5E16, 0x5EF3, -/* 0B20 */ 0x807D, 0x70F4, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, -/* 0B28 */ 0x8247, 0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x9285, 0x5F64, -/* 0B30 */ 0x7AE5, 0x6876, 0x6345, 0x7B52, 0x7D71, 0x75DB, 0x5077, 0x6295, -/* 0B38 */ 0x982D, 0x900F, 0x51F8, 0x79C3, 0x7A81, 0x5716, 0x5F92, 0x9014, -/* 0B40 */ 0x5857, 0x5C60, 0x571F, 0x5410, 0x5154, 0x6E4D, 0x5718, 0x63A8, -/* 0B48 */ 0x983D, 0x817F, 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, -/* 0B50 */ 0x62D6, 0x6258, 0x8131, 0x9D15, 0x9640, 0x99B1, 0x99DD, 0x6A62, -/* 0B58 */ 0x59A5, 0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, 0x7AAA, 0x5A03, -/* 0B60 */ 0x74E6, 0x896A, 0x6B6A, 0x5916, 0x8C4C, 0x5F4E, 0x7063, 0x73A9, -/* 0B68 */ 0x9811, 0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, -/* 0B70 */ 0x60CB, 0x5B9B, 0x5A49, 0x842C, 0x8155, 0x6C6A, 0x738B, 0x4EA1, -/* 0B78 */ 0x6789, 0x7DB2, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, -/* 0B80 */ 0x5DCD, 0x5FAE, 0x5371, 0x97CB, 0x9055, 0x6845, 0x570D, 0x552F, -/* 0B88 */ 0x60DF, 0x7232, 0x6FF0, 0x7DAD, 0x8466, 0x840E, 0x59D4, 0x5049, -/* 0B90 */ 0x50DE, 0x5C3E, 0x7DEF, 0x672A, 0x851A, 0x5473, 0x754F, 0x80C3, -/* 0B98 */ 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8B02, 0x5C09, 0x6170, 0x885B, -/* 0BA0 */ 0x761F, 0x6E29, 0x868A, 0x6587, 0x805E, 0x7D0B, 0x543B, 0x7A69, -/* 0BA8 */ 0x7D0A, 0x554F, 0x55E1, 0x7FC1, 0x74EE, 0x64BE, 0x8778, 0x6E26, -/* 0BB0 */ 0x7AA9, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x55DA, -/* 0BB8 */ 0x93A2, 0x70CF, 0x6C61, 0x8AA3, 0x5C4B, 0x7121, 0x856A, 0x68A7, -/* 0BC0 */ 0x543E, 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, -/* 0BC8 */ 0x4F0D, 0x4FAE, 0x5862, 0x620A, 0x9727, 0x6664, 0x7269, 0x52FF, -/* 0BD0 */ 0x52D9, 0x609F, 0x8AA4, 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, -/* 0BD8 */ 0x77FD, 0x6670, 0x563B, 0x5438, 0x932B, 0x72A7, 0x7A00, 0x606F, -/* 0BE0 */ 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC, 0x7184, 0x70EF, 0x6EAA, -/* 0BE8 */ 0x6C50, 0x7280, 0x6A84, 0x8972, 0x5E2D, 0x7FD2, 0x5AB3, 0x559C, -/* 0BF0 */ 0x9291, 0x6D17, 0x7CFB, 0x9699, 0x6232, 0x7D30, 0x778E, 0x8766, -/* 0BF8 */ 0x5323, 0x971E, 0x8F44, 0x6687, 0x5CFD, 0x4FE0, 0x72F9, 0x4E0B, -/* 0C00 */ 0x53A6, 0x590F, 0x5687, 0x6380, 0x9341, 0x5148, 0x4ED9, 0x9BAE, -/* 0C08 */ 0x7E96, 0x54B8, 0x8CE2, 0x929C, 0x8237, 0x9591, 0x6D8E, 0x5F26, -/* 0C10 */ 0x5ACC, 0x986F, 0x96AA, 0x73FE, 0x737B, 0x7E23, 0x817A, 0x9921, -/* 0C18 */ 0x7FA1, 0x61B2, 0x9677, 0x9650, 0x7DAB, 0x76F8, 0x53A2, 0x9472, -/* 0C20 */ 0x9999, 0x7BB1, 0x8944, 0x6E58, 0x9109, 0x7FD4, 0x7965, 0x8A73, -/* 0C28 */ 0x60F3, 0x97FF, 0x4EAB, 0x9805, 0x5DF7, 0x6A61, 0x50CF, 0x5411, -/* 0C30 */ 0x8C61, 0x856D, 0x785D, 0x9704, 0x524A, 0x54EE, 0x56C2, 0x92B7, -/* 0C38 */ 0x6D88, 0x5BB5, 0x6DC6, 0x66C9, 0x5C0F, 0x5B5D, 0x6821, 0x8096, -/* 0C40 */ 0x562F, 0x7B11, 0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, -/* 0C48 */ 0x5354, 0x633E, 0x643A, 0x90AA, 0x659C, 0x8105, 0x8AE7, 0x5BEB, -/* 0C50 */ 0x68B0, 0x5378, 0x87F9, 0x61C8, 0x6CC4, 0x7009, 0x8B1D, 0x5C51, -/* 0C58 */ 0x85AA, 0x82AF, 0x92C5, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, -/* 0C60 */ 0x4FE1, 0x91C1, 0x661F, 0x8165, 0x7329, 0x60FA, 0x8208, 0x5211, -/* 0C68 */ 0x578B, 0x5F62, 0x90A2, 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, -/* 0C70 */ 0x59D3, 0x5144, 0x51F6, 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, -/* 0C78 */ 0x4F11, 0x4FEE, 0x7F9E, 0x673D, 0x55C5, 0x92B9, 0x79C0, 0x8896, -/* 0C80 */ 0x7D89, 0x589F, 0x620C, 0x9700, 0x865A, 0x5618, 0x9808, 0x5F90, -/* 0C88 */ 0x8A31, 0x84C4, 0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, -/* 0C90 */ 0x7D6E, 0x5A7F, 0x7DD2, 0x7E8C, 0x8ED2, 0x55A7, 0x5BA3, 0x61F8, -/* 0C98 */ 0x65CB, 0x7384, 0x9078, 0x766C, 0x7729, 0x7D62, 0x9774, 0x859B, -/* 0CA0 */ 0x5B78, 0x7A74, 0x96EA, 0x8840, 0x52DB, 0x718F, 0x5FAA, 0x65EC, -/* 0CA8 */ 0x8A62, 0x5C0B, 0x99B4, 0x5DE1, 0x6B89, 0x6C5B, 0x8A13, 0x8A0A, -/* 0CB0 */ 0x905C, 0x8FC5, 0x58D3, 0x62BC, 0x9D09, 0x9D28, 0x5440, 0x4E2B, -/* 0CB8 */ 0x82BD, 0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x555E, -/* 0CC0 */ 0x4E9E, 0x8A1D, 0x7109, 0x54BD, 0x95B9, 0x70DF, 0x6DF9, 0x9E7D, -/* 0CC8 */ 0x56B4, 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x9854, 0x95BB, -/* 0CD0 */ 0x708E, 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8277, -/* 0CD8 */ 0x5830, 0x71D5, 0x53AD, 0x786F, 0x96C1, 0x5501, 0x5F66, 0x7130, -/* 0CE0 */ 0x5BB4, 0x8AFA, 0x9A57, 0x6B83, 0x592E, 0x9D26, 0x79E7, 0x694A, -/* 0CE8 */ 0x63DA, 0x4F6F, 0x760D, 0x7F8A, 0x6D0B, 0x967D, 0x6C27, 0x4EF0, -/* 0CF0 */ 0x7662, 0x990A, 0x6A23, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476, -/* 0CF8 */ 0x6447, 0x582F, 0x9065, 0x7A91, 0x8B21, 0x59DA, 0x54AC, 0x8200, -/* 0D00 */ 0x85E5, 0x8981, 0x8000, 0x6930, 0x564E, 0x8036, 0x723A, 0x91CE, -/* 0D08 */ 0x51B6, 0x4E5F, 0x9801, 0x6396, 0x696D, 0x8449, 0x66F3, 0x814B, -/* 0D10 */ 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x91AB, 0x63D6, 0x92A5, 0x4F9D, -/* 0D18 */ 0x4F0A, 0x8863, 0x9824, 0x5937, 0x907A, 0x79FB, 0x5100, 0x80F0, -/* 0D20 */ 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x87FB, 0x501A, -/* 0D28 */ 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x85DD, 0x6291, 0x6613, 0x9091, -/* 0D30 */ 0x5C79, 0x5104, 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 0x4EA6, -/* 0D38 */ 0x88D4, 0x610F, 0x6BC5, 0x61B6, 0x7FA9, 0x76CA, 0x6EA2, 0x8A63, -/* 0D40 */ 0x8B70, 0x8ABC, 0x8B6F, 0x5F02, 0x7FFC, 0x7FCC, 0x7E79, 0x8335, -/* 0D48 */ 0x852D, 0x56E0, 0x6BB7, 0x97F3, 0x9670, 0x59FB, 0x541F, 0x9280, -/* 0D50 */ 0x6DEB, 0x5BC5, 0x98F2, 0x5C39, 0x5F15, 0x96B1, 0x5370, 0x82F1, -/* 0D58 */ 0x6AFB, 0x5B30, 0x9DF9, 0x61C9, 0x7E93, 0x7469, 0x87A2, 0x71DF, -/* 0D60 */ 0x7192, 0x8805, 0x8FCE, 0x8D0F, 0x76C8, 0x5F71, 0x7A4E, 0x786C, -/* 0D68 */ 0x6620, 0x55B2, 0x64C1, 0x50AD, 0x81C3, 0x7670, 0x5EB8, 0x96CD, -/* 0D70 */ 0x8E34, 0x86F9, 0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, 0x52C7, -/* 0D78 */ 0x7528, 0x5E7D, 0x512A, 0x60A0, 0x6182, 0x5C24, 0x7531, 0x90F5, -/* 0D80 */ 0x923E, 0x7336, 0x6CB9, 0x6E38, 0x9149, 0x6709, 0x53CB, 0x53F3, -/* 0D88 */ 0x4F51, 0x91C9, 0x8A98, 0x53C8, 0x5E7C, 0x8FC2, 0x6DE4, 0x4E8E, -/* 0D90 */ 0x76C2, 0x6986, 0x865E, 0x611A, 0x8F3F, 0x9918, 0x4FDE, 0x903E, -/* 0D98 */ 0x9B5A, 0x6109, 0x6E1D, 0x6F01, 0x9685, 0x4E88, 0x5A31, 0x96E8, -/* 0DA0 */ 0x8207, 0x5DBC, 0x79B9, 0x5B87, 0x8A9E, 0x7FBD, 0x7389, 0x57DF, -/* 0DA8 */ 0x828B, 0x9B31, 0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, 0x6108, -/* 0DB0 */ 0x6B32, 0x7344, 0x80B2, 0x8B7D, 0x6D74, 0x5BD3, 0x88D5, 0x9810, -/* 0DB8 */ 0x8C6B, 0x99AD, 0x9D1B, 0x6DF5, 0x51A4, 0x5143, 0x57A3, 0x8881, -/* 0DC0 */ 0x539F, 0x63F4, 0x8F45, 0x5712, 0x54E1, 0x5713, 0x733F, 0x6E90, -/* 0DC8 */ 0x7DE3, 0x9060, 0x82D1, 0x9858, 0x6028, 0x9662, 0x66F0, 0x7D04, -/* 0DD0 */ 0x8D8A, 0x8E8D, 0x9470, 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x95B2, -/* 0DD8 */ 0x8018, 0x96F2, 0x9116, 0x5300, 0x9695, 0x5141, 0x904B, 0x85F4, -/* 0DE0 */ 0x9196, 0x6688, 0x97F5, 0x5B55, 0x531D, 0x7838, 0x96DC, 0x683D, -/* 0DE8 */ 0x54C9, 0x707E, 0x5BB0, 0x8F09, 0x518D, 0x5728, 0x54B1, 0x6522, -/* 0DF0 */ 0x66AB, 0x8D0A, 0x8D1C, 0x81DF, 0x846C, 0x906D, 0x7CDF, 0x947F, -/* 0DF8 */ 0x85FB, 0x68D7, 0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, -/* 0E00 */ 0x7682, 0x7AC8, 0x71E5, 0x8CAC, 0x64C7, 0x5247, 0x6FA4, 0x8CCA, -/* 0E08 */ 0x600E, 0x589E, 0x618E, 0x66FE, 0x8D08, 0x624E, 0x55B3, 0x6E23, -/* 0E10 */ 0x672D, 0x8ECB, 0x9358, 0x9598, 0x7728, 0x6805, 0x69A8, 0x548B, -/* 0E18 */ 0x4E4D, 0x70B8, 0x8A50, 0x6458, 0x9F4B, 0x5B85, 0x7A84, 0x50B5, -/* 0E20 */ 0x5BE8, 0x77BB, 0x6C08, 0x8A79, 0x7C98, 0x6CBE, 0x76DE, 0x65AC, -/* 0E28 */ 0x8F3E, 0x5D84, 0x5C55, 0x8638, 0x68E7, 0x5360, 0x6230, 0x7AD9, -/* 0E30 */ 0x6E5B, 0x7DBB, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F35, 0x638C, -/* 0E38 */ 0x6F32, 0x6756, 0x4E08, 0x5E33, 0x8CEC, 0x4ED7, 0x8139, 0x7634, -/* 0E40 */ 0x969C, 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D99, 0x7167, 0x7F69, -/* 0E48 */ 0x5146, 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x87C4, 0x8F4D, -/* 0E50 */ 0x8005, 0x937A, 0x8517, 0x9019, 0x6D59, 0x73CD, 0x659F, 0x771F, -/* 0E58 */ 0x7504, 0x7827, 0x81FB, 0x8C9E, 0x91DD, 0x5075, 0x6795, 0x75B9, -/* 0E60 */ 0x8A3A, 0x9707, 0x632F, 0x93AE, 0x9663, 0x84B8, 0x6399, 0x775C, -/* 0E68 */ 0x5F81, 0x7319, 0x722D, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F, -/* 0E70 */ 0x5E40, 0x7665, 0x912D, 0x8B49, 0x829D, 0x679D, 0x652F, 0x5431, -/* 0E78 */ 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7E54, 0x8077, -/* 0E80 */ 0x76F4, 0x690D, 0x6B96, 0x57F7, 0x503C, 0x4F84, 0x5740, 0x6307, -/* 0E88 */ 0x6B62, 0x8DBE, 0x8879, 0x65E8, 0x7D19, 0x5FD7, 0x646F, 0x64F2, -/* 0E90 */ 0x81F3, 0x81F4, 0x7F6E, 0x5E5F, 0x5CD9, 0x5236, 0x667A, 0x79E9, -/* 0E98 */ 0x7A1A, 0x8CEA, 0x7099, 0x75D4, 0x6EEF, 0x6CBB, 0x7A92, 0x4E2D, -/* 0EA0 */ 0x76C5, 0x5FE0, 0x9418, 0x8877, 0x7D42, 0x7A2E, 0x816B, 0x91CD, -/* 0EA8 */ 0x4EF2, 0x8846, 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8B05, 0x7CA5, -/* 0EB0 */ 0x8EF8, 0x8098, 0x5E1A, 0x5492, 0x76BA, 0x5B99, 0x665D, 0x9A5F, -/* 0EB8 */ 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8AF8, 0x8A85, 0x9010, -/* 0EC0 */ 0x7AF9, 0x71ED, 0x716E, 0x62C4, 0x77DA, 0x56D1, 0x4E3B, 0x8457, -/* 0EC8 */ 0x67F1, 0x52A9, 0x86C0, 0x8CAF, 0x9444, 0x7BC9, 0x4F4F, 0x6CE8, -/* 0ED0 */ 0x795D, 0x99D0, 0x6293, 0x722A, 0x62FD, 0x5C08, 0x78DA, 0x8F49, -/* 0ED8 */ 0x64B0, 0x8CFA, 0x7BC6, 0x6A01, 0x838A, 0x88DD, 0x599D, 0x649E, -/* 0EE0 */ 0x58EF, 0x72C0, 0x690E, 0x9310, 0x8FFD, 0x8D05, 0x589C, 0x7DB4, -/* 0EE8 */ 0x8AC4, 0x6E96, 0x6349, 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, -/* 0EF0 */ 0x914C, 0x5544, 0x7740, 0x707C, 0x6FC1, 0x5179, 0x54A8, 0x8CC7, -/* 0EF8 */ 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B, 0x4ED4, 0x7C7D, 0x6ED3, -/* 0F00 */ 0x5B50, 0x81EA, 0x6F2C, 0x5B57, 0x9B03, 0x68D5, 0x8E2A, 0x5B97, -/* 0F08 */ 0x7D9C, 0x7E3D, 0x7E31, 0x9112, 0x8D70, 0x594F, 0x63CD, 0x79DF, -/* 0F10 */ 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8A5B, 0x963B, 0x7D44, 0x947D, -/* 0F18 */ 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, -/* 0F20 */ 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7, 0x4E8D, -/* 0F28 */ 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15, 0x4E98, 0x4E1E, -/* 0F30 */ 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F, 0x5315, 0x4E47, -/* 0F38 */ 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4, 0x9997, 0x6BD3, -/* 0F40 */ 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, 0x4E5C, 0x4E69, 0x4E93, -/* 0F48 */ 0x8288, 0x5B5B, 0x55C7, 0x560F, 0x4EC4, 0x5399, 0x539D, 0x53B4, -/* 0F50 */ 0x53A5, 0x53AE, 0x9768, 0x8D0B, 0x531A, 0x53F5, 0x532D, 0x5331, -/* 0F58 */ 0x533E, 0x8CFE, 0x5366, 0x5363, 0x5202, 0x5208, 0x520E, 0x5244, -/* 0F60 */ 0x5233, 0x528C, 0x5274, 0x524C, 0x525E, 0x5261, 0x525C, 0x84AF, -/* 0F68 */ 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7F54, 0x4EBB, -/* 0F70 */ 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, 0x4EDE, 0x50B4, -/* 0F78 */ 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x5000, 0x5096, 0x4F09, 0x4F47, -/* 0F80 */ 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D, 0x4F5F, 0x4F57, 0x4F32, -/* 0F88 */ 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 0x4F89, 0x4F83, 0x4F8F, 0x4F7E, -/* 0F90 */ 0x4F7B, 0x5115, 0x4F7C, 0x5102, 0x4F94, 0x5114, 0x513C, 0x5137, -/* 0F98 */ 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1, 0x4FDF, 0x4FF8, 0x5029, -/* 0FA0 */ 0x504C, 0x4FF3, 0x502C, 0x500F, 0x502E, 0x502D, 0x4FFE, 0x501C, -/* 0FA8 */ 0x500C, 0x5025, 0x5028, 0x50E8, 0x5043, 0x5055, 0x5048, 0x504E, -/* 0FB0 */ 0x506C, 0x50C2, 0x513B, 0x5110, 0x513A, 0x50BA, 0x50D6, 0x5106, -/* 0FB8 */ 0x50ED, 0x50EC, 0x50E6, 0x50EE, 0x5107, 0x510B, 0x4EDD, 0x6C3D, -/* 0FC0 */ 0x4F58, 0x50C9, 0x4FCE, 0x9FA0, 0x6C46, 0x7CF4, 0x516E, 0x5DFD, -/* 0FC8 */ 0x9ECC, 0x9998, 0x56C5, 0x5914, 0x52F9, 0x530D, 0x8A07, 0x5310, -/* 0FD0 */ 0x9CEC, 0x5919, 0x5155, 0x4EA0, 0x5156, 0x4EB3, 0x886E, 0x88A4, -/* 0FD8 */ 0x893B, 0x81E0, 0x88D2, 0x7980, 0x5B34, 0x8803, 0x7FB8, 0x51AB, -/* 0FE0 */ 0x51B1, 0x51BD, 0x51BC, 0x51C7, 0x5196, 0x51A2, 0x51A5, 0x8A01, -/* 0FE8 */ 0x8A10, 0x8A0C, 0x8A15, 0x8B33, 0x8A4E, 0x8A25, 0x8A41, 0x8A36, -/* 0FF0 */ 0x8A46, 0x8A54, 0x8A58, 0x8A52, 0x8A86, 0x8A84, 0x8A7F, 0x8A70, -/* 0FF8 */ 0x8A7C, 0x8A75, 0x8A6C, 0x8A6E, 0x8ACD, 0x8AE2, 0x8A61, 0x8A9A, -/* 1000 */ 0x8AA5, 0x8A91, 0x8A92, 0x8ACF, 0x8AD1, 0x8AC9, 0x8ADB, 0x8AD7, -/* 1008 */ 0x8AC2, 0x8AB6, 0x8AF6, 0x8AEB, 0x8B14, 0x8B01, 0x8AE4, 0x8AED, -/* 1010 */ 0x8AFC, 0x8AF3, 0x8AE6, 0x8AEE, 0x8ADE, 0x8B28, 0x8B9C, 0x8B16, -/* 1018 */ 0x8B1A, 0x8B10, 0x8B2B, 0x8B2D, 0x8B56, 0x8B59, 0x8B4E, 0x8B9E, -/* 1020 */ 0x8B6B, 0x8B96, 0x5369, 0x537A, 0x961D, 0x9622, 0x9621, 0x9631, -/* 1028 */ 0x962A, 0x963D, 0x963C, 0x9642, 0x9658, 0x9654, 0x965F, 0x9689, -/* 1030 */ 0x966C, 0x9672, 0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097, -/* 1038 */ 0x909B, 0x913A, 0x9099, 0x9114, 0x90A1, 0x90B4, 0x90B3, 0x90B6, -/* 1040 */ 0x9134, 0x90B8, 0x90B0, 0x90DF, 0x90C5, 0x90BE, 0x9136, 0x90C4, -/* 1048 */ 0x90C7, 0x9106, 0x9148, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB, -/* 1050 */ 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, 0x9123, 0x9131, 0x912F, -/* 1058 */ 0x9139, 0x9143, 0x9146, 0x82BB, 0x5950, 0x52F1, 0x52AC, 0x52AD, -/* 1060 */ 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, 0x53DF, 0x71EE, 0x77CD, -/* 1068 */ 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01, 0x755A, 0x5DF0, -/* 1070 */ 0x574C, 0x580A, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1, 0x5729, -/* 1078 */ 0x572C, 0x572A, 0x5733, 0x58D9, 0x572E, 0x572F, 0x58E2, 0x573B, -/* 1080 */ 0x5742, 0x5769, 0x58E0, 0x576B, 0x58DA, 0x577C, 0x577B, 0x5768, -/* 1088 */ 0x576D, 0x5776, 0x5773, 0x57E1, 0x57A4, 0x578C, 0x584F, 0x57CF, -/* 1090 */ 0x57A7, 0x5816, 0x5793, 0x57A0, 0x57D5, 0x5852, 0x581D, 0x5864, -/* 1098 */ 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, 0x57E4, 0x57DD, 0x580B, -/* 10A0 */ 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819, 0x5844, 0x5820, -/* 10A8 */ 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, 0x5880, 0x99A8, 0x9F19, -/* 10B0 */ 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, 0x82A8, 0x8284, -/* 10B8 */ 0x828E, 0x8291, 0x858C, 0x8299, 0x82AB, 0x8553, 0x82BE, 0x82B0, -/* 10C0 */ 0x85F6, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, 0x83A7, 0x8407, -/* 10C8 */ 0x84EF, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, 0x82C4, 0x82E7, -/* 10D0 */ 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x8622, 0x8307, 0x82DC, -/* 10D8 */ 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3, 0x8526, 0x831A, -/* 10E0 */ 0x8306, 0x584B, 0x7162, 0x82E0, 0x82D5, 0x831C, 0x8351, 0x8558, -/* 10E8 */ 0x84FD, 0x8308, 0x8392, 0x833C, 0x8334, 0x8331, 0x839B, 0x854E, -/* 10F0 */ 0x832F, 0x834F, 0x8347, 0x8343, 0x8588, 0x8340, 0x8317, 0x85BA, -/* 10F8 */ 0x832D, 0x833A, 0x8333, 0x7296, 0x6ECE, 0x8541, 0x831B, 0x85CE, -/* 1100 */ 0x8552, 0x84C0, 0x8452, 0x8464, 0x83B0, 0x8378, 0x8494, 0x8435, -/* 1108 */ 0x83A0, 0x83AA, 0x8393, 0x839C, 0x8385, 0x837C, 0x859F, 0x83A9, -/* 1110 */ 0x837D, 0x8555, 0x837B, 0x8398, 0x839E, 0x83A8, 0x9DAF, 0x8493, -/* 1118 */ 0x83C1, 0x8401, 0x83E5, 0x83D8, 0x5807, 0x8418, 0x840B, 0x83DD, -/* 1120 */ 0x83FD, 0x83D6, 0x841C, 0x8438, 0x8411, 0x8406, 0x83D4, 0x83DF, -/* 1128 */ 0x840F, 0x8403, 0x83F8, 0x83F9, 0x83EA, 0x83C5, 0x83C0, 0x7E08, -/* 1130 */ 0x83F0, 0x83E1, 0x845C, 0x8451, 0x845A, 0x8459, 0x8473, 0x8546, -/* 1138 */ 0x8488, 0x847A, 0x8562, 0x8478, 0x843C, 0x8446, 0x8469, 0x8476, -/* 1140 */ 0x851E, 0x848E, 0x8431, 0x846D, 0x84C1, 0x84CD, 0x84D0, 0x9A40, -/* 1148 */ 0x84BD, 0x84D3, 0x84CA, 0x84BF, 0x84BA, 0x863A, 0x84A1, 0x84B9, -/* 1150 */ 0x84B4, 0x8497, 0x93A3, 0x8577, 0x850C, 0x750D, 0x8538, 0x84F0, -/* 1158 */ 0x861E, 0x851F, 0x85FA, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, -/* 1160 */ 0x8548, 0x8568, 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8604, -/* 1168 */ 0x857B, 0x85A4, 0x85A8, 0x8587, 0x858F, 0x8579, 0x85EA, 0x859C, -/* 1170 */ 0x8585, 0x85B9, 0x85B7, 0x85B0, 0x861A, 0x85C1, 0x85DC, 0x85FF, -/* 1178 */ 0x8627, 0x8605, 0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08, 0x593C, -/* 1180 */ 0x5969, 0x8037, 0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25, -/* 1188 */ 0x5C2C, 0x5C37, 0x624C, 0x636B, 0x6476, 0x62BB, 0x62CA, 0x62DA, -/* 1190 */ 0x62D7, 0x62EE, 0x649F, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, -/* 1198 */ 0x63F6, 0x6371, 0x637A, 0x638E, 0x6451, 0x636D, 0x63AC, 0x638A, -/* 11A0 */ 0x6369, 0x63AE, 0x645C, 0x63F2, 0x63F8, 0x63E0, 0x64B3, 0x63C4, -/* 11A8 */ 0x63DE, 0x63CE, 0x6452, 0x63C6, 0x63BE, 0x6504, 0x6441, 0x640B, -/* 11B0 */ 0x641B, 0x6420, 0x640C, 0x6426, 0x6421, 0x645E, 0x6516, 0x646D, -/* 11B8 */ 0x6496, 0x647A, 0x64F7, 0x64FC, 0x6499, 0x651B, 0x64C0, 0x64D0, -/* 11C0 */ 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2, -/* 11C8 */ 0x7519, 0x5F11, 0x535F, 0x53F1, 0x5630, 0x53E9, 0x53E8, 0x53FB, -/* 11D0 */ 0x5412, 0x5416, 0x5406, 0x544B, 0x5638, 0x56C8, 0x5454, 0x56A6, -/* 11D8 */ 0x5443, 0x5421, 0x5504, 0x54BC, 0x5423, 0x5432, 0x5482, 0x5494, -/* 11E0 */ 0x5477, 0x5471, 0x5464, 0x549A, 0x5680, 0x5484, 0x5476, 0x5466, -/* 11E8 */ 0x565D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x5660, 0x54A7, 0x54A6, -/* 11F0 */ 0x5635, 0x55F6, 0x5472, 0x54A3, 0x5666, 0x54BB, 0x54BF, 0x54CC, -/* 11F8 */ 0x5672, 0x54DA, 0x568C, 0x54A9, 0x54AA, 0x54A4, 0x5665, 0x54CF, -/* 1200 */ 0x54DE, 0x561C, 0x54E7, 0x562E, 0x54FD, 0x5514, 0x54F3, 0x55E9, -/* 1208 */ 0x5523, 0x550F, 0x5511, 0x5527, 0x552A, 0x5616, 0x558F, 0x55B5, -/* 1210 */ 0x5549, 0x56C0, 0x5541, 0x5555, 0x553F, 0x5550, 0x553C, 0x5537, -/* 1218 */ 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555C, 0x558B, -/* 1220 */ 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, 0x559F, 0x557E, -/* 1228 */ 0x55D6, 0x5591, 0x557B, 0x55DF, 0x560D, 0x56B3, 0x5594, 0x5599, -/* 1230 */ 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x56C1, 0x55EC, 0x55D4, -/* 1238 */ 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, 0x566F, 0x55CC, -/* 1240 */ 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F61, 0x561E, 0x5608, 0x560C, -/* 1248 */ 0x5601, 0x56B6, 0x5623, 0x55FE, 0x5600, 0x5627, 0x562D, 0x5658, -/* 1250 */ 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659, 0x5695, 0x564C, -/* 1258 */ 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B, 0x567C, 0x5685, -/* 1260 */ 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, 0x5707, 0x56EB, -/* 1268 */ 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, 0x5E43, 0x5E19, -/* 1270 */ 0x5E14, 0x5E11, 0x5E6C, 0x5E58, 0x5E57, 0x5E37, 0x5E44, 0x5E54, -/* 1278 */ 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A, 0x5C8D, 0x5C90, 0x5D87, -/* 1280 */ 0x5C88, 0x5CF4, 0x5C99, 0x5C91, 0x5D50, 0x5C9C, 0x5CB5, 0x5CA2, -/* 1288 */ 0x5D2C, 0x5CAC, 0x5CAB, 0x5CB1, 0x5CA3, 0x5CC1, 0x5CB7, 0x5DA7, -/* 1290 */ 0x5CD2, 0x5DA0, 0x5CCB, 0x5D22, 0x5D97, 0x5D0D, 0x5D27, 0x5D26, -/* 1298 */ 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, 0x5D1B, 0x5DB8, 0x5D3E, 0x5D34, -/* 12A0 */ 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D81, 0x5D6B, 0x5D4B, 0x5D4A, -/* 12A8 */ 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D, 0x8C73, 0x5DB7, 0x5DD4, -/* 12B0 */ 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89, 0x540E, 0x5FA0, 0x5F99, -/* 12B8 */ 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC, 0x8862, 0x5F61, 0x72AD, -/* 12C0 */ 0x72B0, 0x72B4, 0x7377, 0x7341, 0x72C3, 0x72C1, 0x72CE, 0x72CD, -/* 12C8 */ 0x72D2, 0x72E8, 0x736A, 0x72E9, 0x733B, 0x72F4, 0x72F7, 0x7301, -/* 12D0 */ 0x72F3, 0x736B, 0x72FA, 0x72FB, 0x7317, 0x7313, 0x7380, 0x730A, -/* 12D8 */ 0x731E, 0x731D, 0x737C, 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, -/* 12E0 */ 0x7331, 0x7350, 0x734D, 0x7357, 0x7360, 0x736C, 0x736F, 0x737E, -/* 12E8 */ 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902, 0x98E0, 0x9933, 0x98E9, -/* 12F0 */ 0x993C, 0x98EA, 0x98EB, 0x98ED, 0x98F4, 0x9909, 0x9911, 0x4F59, -/* 12F8 */ 0x991B, 0x9937, 0x993F, 0x9943, 0x9948, 0x9949, 0x994A, 0x994C, -/* 1300 */ 0x9962, 0x5E80, 0x5EE1, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, -/* 1308 */ 0x5EB5, 0x5EBE, 0x5EB3, 0x8CE1, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, -/* 1310 */ 0x5EEA, 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6, 0x61FA, 0x61AE, 0x5FEE, -/* 1318 */ 0x616A, 0x5FE1, 0x5FE4, 0x613E, 0x60B5, 0x6134, 0x5FEA, 0x5FED, -/* 1320 */ 0x5FF8, 0x6019, 0x6035, 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, -/* 1328 */ 0x602B, 0x600A, 0x61CC, 0x6021, 0x615F, 0x61E8, 0x60FB, 0x6137, -/* 1330 */ 0x6042, 0x606A, 0x60F2, 0x6096, 0x609A, 0x6173, 0x609D, 0x6083, -/* 1338 */ 0x6092, 0x608C, 0x609B, 0x611C, 0x60BB, 0x60B1, 0x60DD, 0x60D8, -/* 1340 */ 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6192, 0x6115, 0x6123, 0x60F4, -/* 1348 */ 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7, -/* 1350 */ 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x9582, 0x9586, 0x95C8, -/* 1358 */ 0x958E, 0x9594, 0x958C, 0x95E5, 0x95AD, 0x95AB, 0x9B2E, 0x95AC, -/* 1360 */ 0x95BE, 0x95B6, 0x9B29, 0x95BF, 0x95BD, 0x95BC, 0x95C3, 0x95CB, -/* 1368 */ 0x95D4, 0x95D0, 0x95D5, 0x95DE, 0x4E2C, 0x723F, 0x6215, 0x6C35, -/* 1370 */ 0x6C54, 0x6C5C, 0x6C4A, 0x7043, 0x6C85, 0x6C90, 0x6C94, 0x6C8C, -/* 1378 */ 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6F59, 0x6CD0, 0x6CD4, -/* 1380 */ 0x6CAD, 0x7027, 0x7018, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6, -/* 1388 */ 0x6FFC, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6D87, 0x6D39, -/* 1390 */ 0x6D27, 0x6D0C, 0x6D79, 0x6E5E, 0x6D07, 0x6D04, 0x6D19, 0x6D0E, -/* 1398 */ 0x6D2B, 0x6FAE, 0x6D2E, 0x6D35, 0x6D1A, 0x700F, 0x6EF8, 0x6F6F, -/* 13A0 */ 0x6D33, 0x6D91, 0x6D6F, 0x6DF6, 0x6F7F, 0x6D5E, 0x6D93, 0x6D94, -/* 13A8 */ 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, 0x6DC5, 0x6DDE, -/* 13B0 */ 0x7006, 0x6DBF, 0x6DE0, 0x6FA0, 0x6DE6, 0x6DDD, 0x6DD9, 0x700B, -/* 13B8 */ 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, 0x6E4E, 0x6E6B, 0x6EB2, -/* 13C0 */ 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, 0x6E25, 0x6E44, 0x7067, -/* 13C8 */ 0x6EB1, 0x6E98, 0x7044, 0x6F2D, 0x7005, 0x6EA5, 0x6EA7, 0x6EBD, -/* 13D0 */ 0x6EBB, 0x6EB7, 0x6F77, 0x6EB4, 0x6ECF, 0x6E8F, 0x6EC2, 0x6E9F, -/* 13D8 */ 0x6F62, 0x7020, 0x701F, 0x6F24, 0x6F15, 0x6EF9, 0x6F2F, 0x6F36, -/* 13E0 */ 0x7032, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, 0x6F8D, 0x6F8C, -/* 13E8 */ 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x7028, 0x6FC9, 0x6FA7, 0x6FB9, -/* 13F0 */ 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 0x6FDE, 0x6FE0, 0x6FEF, 0x701A, -/* 13F8 */ 0x7023, 0x701B, 0x7039, 0x7035, 0x705D, 0x705E, 0x5B80, 0x5B84, -/* 1400 */ 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 0x752F, 0x9A2B, 0x6434, 0x5BE4, -/* 1408 */ 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07, 0x8FB6, 0x8FD3, 0x8FD5, -/* 1410 */ 0x8FE5, 0x8FEE, 0x8FE4, 0x9087, 0x8FE6, 0x9015, 0x8FE8, 0x9005, -/* 1418 */ 0x9004, 0x900B, 0x9090, 0x9011, 0x900D, 0x9016, 0x9021, 0x9035, -/* 1420 */ 0x9036, 0x902D, 0x902F, 0x9044, 0x9051, 0x9052, 0x9050, 0x9068, -/* 1428 */ 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074, 0x907D, 0x9082, 0x9088, -/* 1430 */ 0x9083, 0x908B, 0x5F50, 0x5F57, 0x5F56, 0x5F58, 0x5C3B, 0x54AB, -/* 1438 */ 0x5C50, 0x5C59, 0x5B71, 0x5C63, 0x5C68, 0x7FBC, 0x5F33, 0x5F29, -/* 1440 */ 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 0x5C6E, 0x5981, 0x5983, 0x598D, -/* 1448 */ 0x5AF5, 0x5AD7, 0x59A3, 0x5997, 0x59CA, 0x5B00, 0x599E, 0x59A4, -/* 1450 */ 0x59D2, 0x59B2, 0x59AF, 0x59D7, 0x59BE, 0x5A6D, 0x5B08, 0x59DD, -/* 1458 */ 0x5B4C, 0x59E3, 0x59D8, 0x59F9, 0x5A0C, 0x5A09, 0x5AA7, 0x5AFB, -/* 1460 */ 0x5A11, 0x5A23, 0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55, 0x5A3C, -/* 1468 */ 0x5A62, 0x5B0B, 0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, -/* 1470 */ 0x5AEB, 0x5AB2, 0x5B21, 0x5B2A, 0x5AB8, 0x5AE0, 0x5AE3, 0x5B19, -/* 1478 */ 0x5AD6, 0x5AE6, 0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, -/* 1480 */ 0x5B37, 0x5B40, 0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, -/* 1488 */ 0x5B53, 0x5B62, 0x99D4, 0x99DF, 0x99D9, 0x9A36, 0x9A5B, 0x99D1, -/* 1490 */ 0x99D8, 0x9A4D, 0x9A4A, 0x99E2, 0x9A6A, 0x9A0F, 0x9A0D, 0x9A05, -/* 1498 */ 0x9A42, 0x9A2D, 0x9A16, 0x9A41, 0x9A2E, 0x9A38, 0x9A43, 0x9A44, -/* 14A0 */ 0x9A4F, 0x9A65, 0x9A64, 0x7CF9, 0x7D06, 0x7D02, 0x7D07, 0x7D08, -/* 14A8 */ 0x7E8A, 0x7D1C, 0x7D15, 0x7D13, 0x7D3A, 0x7D32, 0x7D31, 0x7E10, -/* 14B0 */ 0x7D3C, 0x7D40, 0x7D3F, 0x7D5D, 0x7D4E, 0x7D73, 0x7D86, 0x7D83, -/* 14B8 */ 0x7D88, 0x7DBE, 0x7DBA, 0x7DCB, 0x7DD4, 0x7DC4, 0x7D9E, 0x7DAC, -/* 14C0 */ 0x7DB9, 0x7DA3, 0x7DB0, 0x7DC7, 0x7DD9, 0x7DD7, 0x7DF9, 0x7DF2, -/* 14C8 */ 0x7E62, 0x7DE6, 0x7DF6, 0x7DF1, 0x7E0B, 0x7DE1, 0x7E09, 0x7E1D, -/* 14D0 */ 0x7E1F, 0x7E1E, 0x7E2D, 0x7E0A, 0x7E11, 0x7E7D, 0x7E39, 0x7E35, -/* 14D8 */ 0x7E32, 0x7E46, 0x7E45, 0x7E88, 0x7E5A, 0x7E52, 0x7E6E, 0x7E7E, -/* 14E0 */ 0x7E70, 0x7E6F, 0x7E98, 0x5E7A, 0x757F, 0x5DDB, 0x753E, 0x9095, -/* 14E8 */ 0x738E, 0x74A3, 0x744B, 0x73A2, 0x739F, 0x73CF, 0x73C2, 0x74CF, -/* 14F0 */ 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, 0x980A, -/* 14F8 */ 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x74BD, 0x743F, 0x7489, 0x742A, -/* 1500 */ 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C, 0x741B, -/* 1508 */ 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, 0x7459, 0x74A6, 0x746D, -/* 1510 */ 0x747E, 0x749C, 0x74D4, 0x7480, 0x7481, 0x7487, 0x748B, 0x749E, -/* 1518 */ 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74DA, 0x74BA, 0x97D9, 0x97DE, -/* 1520 */ 0x97DC, 0x674C, 0x6753, 0x675E, 0x6748, 0x69AA, 0x6AEA, 0x6787, -/* 1528 */ 0x676A, 0x6773, 0x6798, 0x6898, 0x6775, 0x68D6, 0x6A05, 0x689F, -/* 1530 */ 0x678B, 0x6777, 0x677C, 0x67F0, 0x6ADB, 0x67D8, 0x6AF3, 0x67E9, -/* 1538 */ 0x67B0, 0x6AE8, 0x67D9, 0x67B5, 0x67DA, 0x67B3, 0x67DD, 0x6800, -/* 1540 */ 0x67C3, 0x67B8, 0x67E2, 0x6ADF, 0x67C1, 0x6A89, 0x6832, 0x6833, -/* 1548 */ 0x690F, 0x6A48, 0x684E, 0x6968, 0x6844, 0x69BF, 0x6883, 0x681D, -/* 1550 */ 0x6855, 0x6A3A, 0x6841, 0x6A9C, 0x6840, 0x6B12, 0x684A, 0x6849, -/* 1558 */ 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, 0x6893, 0x686B, 0x6B1E, -/* 1560 */ 0x696E, 0x68FC, 0x6ADD, 0x69E7, 0x68F9, 0x6B0F, 0x68F0, 0x690B, -/* 1568 */ 0x6901, 0x6957, 0x68E3, 0x6910, 0x6971, 0x6939, 0x6960, 0x6942, -/* 1570 */ 0x695D, 0x6B16, 0x696B, 0x6980, 0x6998, 0x6978, 0x6934, 0x69CC, -/* 1578 */ 0x6AEC, 0x6ADA, 0x69CE, 0x6AF8, 0x6966, 0x6963, 0x6979, 0x699B, -/* 1580 */ 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4, 0x69B1, 0x69C1, 0x69CA, -/* 1588 */ 0x6AB3, 0x6995, 0x6AE7, 0x698D, 0x69FF, 0x6AA3, 0x69ED, 0x6A17, -/* 1590 */ 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, -/* 1598 */ 0x6A35, 0x6A8E, 0x6AD3, 0x6A3D, 0x6A28, 0x6A58, 0x6ADE, 0x6A91, -/* 15A0 */ 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, 0x7337, 0x7352, 0x6B81, 0x6B82, -/* 15A8 */ 0x6BA4, 0x6B84, 0x6B9E, 0x6BAE, 0x6B8D, 0x6BAB, 0x6B9B, 0x6BAF, -/* 15B0 */ 0x6BAA, 0x8ED4, 0x8EDB, 0x8EF2, 0x8EFB, 0x8F64, 0x8EF9, 0x8EFC, -/* 15B8 */ 0x8EEB, 0x8EE4, 0x8F62, 0x8EFA, 0x8EFE, 0x8F0A, 0x8F07, 0x8F05, -/* 15C0 */ 0x8F12, 0x8F26, 0x8F1E, 0x8F1F, 0x8F1C, 0x8F33, 0x8F46, 0x8F54, -/* 15C8 */ 0x8ECE, 0x6214, 0x6227, 0x621B, 0x621F, 0x6222, 0x6221, 0x6225, -/* 15D0 */ 0x6224, 0x6229, 0x81E7, 0x750C, 0x74F4, 0x74FF, 0x750F, 0x7511, -/* 15D8 */ 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x66C7, 0x6772, -/* 15E0 */ 0x6603, 0x6615, 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, -/* 15E8 */ 0x6636, 0x6635, 0x8006, 0x665F, 0x66C4, 0x6641, 0x664F, 0x6689, -/* 15F0 */ 0x6661, 0x6657, 0x6677, 0x6684, 0x668C, 0x66D6, 0x669D, 0x66BE, -/* 15F8 */ 0x66DB, 0x66DC, 0x66E6, 0x66E9, 0x8CC1, 0x8CB0, 0x8CBA, 0x8CBD, -/* 1600 */ 0x8D04, 0x8CB2, 0x8CC5, 0x8D10, 0x8CD1, 0x8CDA, 0x8CD5, 0x8CEB, -/* 1608 */ 0x8CE7, 0x8CFB, 0x8998, 0x89AC, 0x89A1, 0x89BF, 0x89A6, 0x89AF, -/* 1610 */ 0x89B2, 0x89B7, 0x726E, 0x729F, 0x725D, 0x7266, 0x726F, 0x727E, -/* 1618 */ 0x727F, 0x7284, 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, -/* 1620 */ 0x63B0, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BFF, -/* 1628 */ 0x6BF9, 0x6C05, 0x6C0C, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, -/* 1630 */ 0x6C1A, 0x6C21, 0x6C2C, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, -/* 1638 */ 0x656B, 0x7258, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, -/* 1640 */ 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD, 0x80B1, 0x80AB, 0x80AD, -/* 1648 */ 0x80B4, 0x80B7, 0x6727, 0x8156, 0x80E9, 0x81DA, 0x80DB, 0x80C2, -/* 1650 */ 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x811B, 0x80F1, -/* 1658 */ 0x80F4, 0x80ED, 0x81BE, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112, -/* 1660 */ 0x8C5A, 0x8161, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, -/* 1668 */ 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, -/* 1670 */ 0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x81CF, -/* 1678 */ 0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB, 0x81C1, -/* 1680 */ 0x81A6, 0x6B5F, 0x6B37, 0x6B39, 0x6B43, 0x6B46, 0x6B59, 0x98AE, -/* 1688 */ 0x98AF, 0x98B6, 0x98BC, 0x98C6, 0x98C8, 0x6BB3, 0x5F40, 0x8F42, -/* 1690 */ 0x89F3, 0x6590, 0x9F4F, 0x6595, 0x65BC, 0x65C6, 0x65C4, 0x65C3, -/* 1698 */ 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x716C, 0x7152, 0x7096, 0x7197, -/* 16A0 */ 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x71C1, 0x70CA, 0x7110, -/* 16A8 */ 0x7113, 0x71DC, 0x712F, 0x7131, 0x7173, 0x715C, 0x7168, 0x7145, -/* 16B0 */ 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3, 0x71B5, 0x71A8, -/* 16B8 */ 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D, 0x7228, 0x706C, -/* 16C0 */ 0x71FE, 0x7166, 0x71B9, 0x623E, 0x623D, 0x6243, 0x6248, 0x6249, -/* 16C8 */ 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, 0x795C, 0x7953, 0x795A, -/* 16D0 */ 0x79B0, 0x7957, 0x7960, 0x798E, 0x7967, 0x797A, 0x79AA, 0x798A, -/* 16D8 */ 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0, 0x61DF, 0x605D, 0x605A, -/* 16E0 */ 0x6067, 0x6041, 0x6059, 0x6063, 0x6164, 0x6106, 0x610D, 0x615D, -/* 16E8 */ 0x61A9, 0x619D, 0x61CB, 0x61E3, 0x6207, 0x8080, 0x807F, 0x6C93, -/* 16F0 */ 0x6FA9, 0x6DFC, 0x78EF, 0x77F8, 0x78AD, 0x7809, 0x7868, 0x7818, -/* 16F8 */ 0x7811, 0x65AB, 0x782D, 0x78B8, 0x781D, 0x7839, 0x792A, 0x7931, -/* 1700 */ 0x781F, 0x783C, 0x7825, 0x782C, 0x7823, 0x7829, 0x784E, 0x786D, -/* 1708 */ 0x7864, 0x78FD, 0x7826, 0x7850, 0x7847, 0x784C, 0x786A, 0x78E7, -/* 1710 */ 0x7893, 0x789A, 0x7887, 0x78E3, 0x78A1, 0x78A3, 0x78B2, 0x78B9, -/* 1718 */ 0x78A5, 0x78D4, 0x78D9, 0x78C9, 0x78EC, 0x78F2, 0x7905, 0x78F4, -/* 1720 */ 0x7913, 0x7924, 0x791E, 0x7934, 0x9F95, 0x9EF9, 0x9EFB, 0x9EFC, -/* 1728 */ 0x76F1, 0x7704, 0x7798, 0x76F9, 0x7707, 0x7708, 0x771A, 0x7722, -/* 1730 */ 0x7719, 0x772D, 0x7726, 0x7735, 0x7738, 0x775E, 0x77BC, 0x7747, -/* 1738 */ 0x7743, 0x775A, 0x7768, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D, -/* 1740 */ 0x7780, 0x778C, 0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, -/* 1748 */ 0x753A, 0x7540, 0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, -/* 1750 */ 0x7583, 0x7F58, 0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F86, 0x7F71, -/* 1758 */ 0x7F79, 0x7F88, 0x7F7E, 0x76CD, 0x76E5, 0x8832, 0x91D2, 0x91D3, -/* 1760 */ 0x91D4, 0x91D9, 0x91D7, 0x91D5, 0x91F7, 0x91E7, 0x91E4, 0x9346, -/* 1768 */ 0x91F5, 0x91F9, 0x9208, 0x9226, 0x9245, 0x9211, 0x9210, 0x9201, -/* 1770 */ 0x9227, 0x9204, 0x9225, 0x9200, 0x923A, 0x9266, 0x9237, 0x9233, -/* 1778 */ 0x9255, 0x923D, 0x9238, 0x925E, 0x926C, 0x926D, 0x923F, 0x9460, -/* 1780 */ 0x9230, 0x9249, 0x9248, 0x924D, 0x922E, 0x9239, 0x9438, 0x92AC, -/* 1788 */ 0x92A0, 0x927A, 0x92AA, 0x92EE, 0x92CF, 0x9403, 0x92E3, 0x943A, -/* 1790 */ 0x92B1, 0x92A6, 0x93A7, 0x9296, 0x92CC, 0x92A9, 0x93F5, 0x9293, -/* 1798 */ 0x927F, 0x93A9, 0x929A, 0x931A, 0x92AB, 0x9283, 0x940B, 0x92A8, -/* 17A0 */ 0x92A3, 0x9412, 0x9338, 0x92F1, 0x93D7, 0x92E5, 0x92F0, 0x92EF, -/* 17A8 */ 0x92E8, 0x92BC, 0x92DD, 0x92F6, 0x9426, 0x9427, 0x92C3, 0x92DF, -/* 17B0 */ 0x92E6, 0x9312, 0x9306, 0x9369, 0x931B, 0x9340, 0x9301, 0x9315, -/* 17B8 */ 0x932E, 0x9343, 0x9307, 0x9308, 0x931F, 0x9319, 0x9365, 0x9347, -/* 17C0 */ 0x9376, 0x9354, 0x9364, 0x93AA, 0x9370, 0x9384, 0x93E4, 0x93D8, -/* 17C8 */ 0x9428, 0x9387, 0x93CC, 0x9398, 0x93B8, 0x93BF, 0x93A6, 0x93B0, -/* 17D0 */ 0x93B5, 0x944C, 0x93E2, 0x93DC, 0x93DD, 0x93CD, 0x93DE, 0x93C3, -/* 17D8 */ 0x93C7, 0x93D1, 0x9414, 0x941D, 0x93F7, 0x9465, 0x9413, 0x946D, -/* 17E0 */ 0x9420, 0x9479, 0x93F9, 0x9419, 0x944A, 0x9432, 0x943F, 0x9454, -/* 17E8 */ 0x9463, 0x937E, 0x77E7, 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3, -/* 17F0 */ 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, 0x7A1E, 0x7A14, 0x7A39, -/* 17F8 */ 0x7A37, 0x7A61, 0x9ECF, 0x99A5, 0x7A70, 0x7688, 0x768E, 0x7693, -/* 1800 */ 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9CE9, 0x9CF6, 0x9D07, -/* 1808 */ 0x9D06, 0x9D23, 0x9D87, 0x9E15, 0x9D1D, 0x9D1F, 0x9DE5, 0x9D2F, -/* 1810 */ 0x9DD9, 0x9D30, 0x9D42, 0x9E1E, 0x9D53, 0x9E1D, 0x9D60, 0x9D52, -/* 1818 */ 0x9DF3, 0x9D5C, 0x9D61, 0x9D93, 0x9D6A, 0x9D6F, 0x9D89, 0x9D98, -/* 1820 */ 0x9D9A, 0x9DC0, 0x9DA5, 0x9DA9, 0x9DC2, 0x9DBC, 0x9E1A, 0x9DD3, -/* 1828 */ 0x9DDA, 0x9DEF, 0x9DE6, 0x9DF2, 0x9DF8, 0x9E0C, 0x9DFA, 0x9E1B, -/* 1830 */ 0x7592, 0x7594, 0x7664, 0x7658, 0x759D, 0x7667, 0x75A3, 0x75B3, -/* 1838 */ 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, 0x75C3, 0x75C2, 0x7602, -/* 1840 */ 0x75CD, 0x75E3, 0x7646, 0x75E6, 0x75E4, 0x7647, 0x75E7, 0x7603, -/* 1848 */ 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7649, 0x760C, 0x761E, -/* 1850 */ 0x760A, 0x7625, 0x763B, 0x7615, 0x7619, 0x761B, 0x763C, 0x7622, -/* 1858 */ 0x7620, 0x7640, 0x762D, 0x7630, 0x766D, 0x7635, 0x7643, 0x766E, -/* 1860 */ 0x7633, 0x764D, 0x7669, 0x7654, 0x765C, 0x7656, 0x7672, 0x766F, -/* 1868 */ 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, 0x7A80, 0x7A86, 0x7A88, 0x7A95, -/* 1870 */ 0x7AC7, 0x7AA0, 0x7AAC, 0x7AA8, 0x7AB6, 0x7AB3, 0x8864, 0x8869, -/* 1878 */ 0x8872, 0x887D, 0x887F, 0x8882, 0x88A2, 0x8960, 0x88B7, 0x88BC, -/* 1880 */ 0x88C9, 0x8933, 0x88CE, 0x895D, 0x8947, 0x88F1, 0x891A, 0x88FC, -/* 1888 */ 0x88E8, 0x88FE, 0x88F0, 0x8921, 0x8919, 0x8913, 0x8938, 0x890A, -/* 1890 */ 0x8964, 0x892B, 0x8936, 0x8941, 0x8966, 0x897B, 0x758B, 0x80E5, -/* 1898 */ 0x76B8, 0x76B4, 0x77DC, 0x8012, 0x8014, 0x8016, 0x801C, 0x8020, -/* 18A0 */ 0x802E, 0x8025, 0x8026, 0x802C, 0x8029, 0x8028, 0x8031, 0x800B, -/* 18A8 */ 0x8035, 0x8043, 0x8046, 0x8079, 0x8052, 0x8075, 0x8071, 0x8983, -/* 18B0 */ 0x9807, 0x980E, 0x980F, 0x9821, 0x981C, 0x6F41, 0x9826, 0x9837, -/* 18B8 */ 0x984E, 0x9853, 0x9873, 0x9862, 0x9859, 0x9865, 0x986C, 0x9870, -/* 18C0 */ 0x864D, 0x8654, 0x866C, 0x87E3, 0x8806, 0x867A, 0x867C, 0x867B, -/* 18C8 */ 0x86A8, 0x868D, 0x868B, 0x8706, 0x869D, 0x86A7, 0x86A3, 0x86AA, -/* 18D0 */ 0x8693, 0x86A9, 0x86B6, 0x86C4, 0x86B5, 0x8823, 0x86B0, 0x86BA, -/* 18D8 */ 0x86B1, 0x86AF, 0x86C9, 0x87F6, 0x86B4, 0x86E9, 0x86FA, 0x87EF, -/* 18E0 */ 0x86ED, 0x8784, 0x86D0, 0x8713, 0x86DE, 0x8810, 0x86DF, 0x86D8, -/* 18E8 */ 0x86D1, 0x8703, 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, -/* 18F0 */ 0x8723, 0x873B, 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x87C8, -/* 18F8 */ 0x8734, 0x8731, 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, -/* 1900 */ 0x8811, 0x877B, 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, -/* 1908 */ 0x8763, 0x87BB, 0x8764, 0x8759, 0x8765, 0x8793, 0x87AF, 0x87CE, -/* 1910 */ 0x87D2, 0x87C6, 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB, -/* 1918 */ 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1, -/* 1920 */ 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813, -/* 1928 */ 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, 0x7F4C, -/* 1930 */ 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7BE4, 0x7B04, -/* 1938 */ 0x7B67, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, -/* 1940 */ 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7C69, 0x7B1E, -/* 1948 */ 0x7B58, 0x7BF3, 0x7B45, 0x7B75, 0x7B4C, 0x7B8F, 0x7B60, 0x7B6E, -/* 1950 */ 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, 0x7C00, 0x7BCB, 0x7BB8, -/* 1958 */ 0x7BAC, 0x7B9D, 0x7C5C, 0x7B85, 0x7C1E, 0x7B9C, 0x7BA2, 0x7C2B, -/* 1960 */ 0x7BB4, 0x7C23, 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6, -/* 1968 */ 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C6A, 0x7C0B, 0x7C1F, -/* 1970 */ 0x7C2A, 0x7C26, 0x7C38, 0x7C5F, 0x7C40, 0x81FE, 0x8201, 0x8202, -/* 1978 */ 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8264, 0x822D, 0x822F, -/* 1980 */ 0x8228, 0x822B, 0x8238, 0x826B, 0x8233, 0x8234, 0x823E, 0x8244, -/* 1988 */ 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, 0x887E, 0x88CA, -/* 1990 */ 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, 0x7FA5, 0x7FA7, 0x7FAF, -/* 1998 */ 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, 0x7CF2, 0x7CF6, 0x7C9E, -/* 19A0 */ 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CDD, 0x7CC7, 0x7CCC, 0x7CCD, -/* 19A8 */ 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8, 0x7FBF, 0x7FCE, -/* 19B0 */ 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, 0x7FF3, 0x7CF8, -/* 19B8 */ 0x7E36, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EA9, 0x9EB4, 0x8D73, -/* 19C0 */ 0x8D84, 0x8D94, 0x8D91, 0x8DB2, 0x8D67, 0x8D6D, 0x8C47, 0x8C49, -/* 19C8 */ 0x914A, 0x9150, 0x914E, 0x914F, 0x9164, 0x9162, 0x9161, 0x9170, -/* 19D0 */ 0x9169, 0x916F, 0x91C5, 0x91C3, 0x9172, 0x9174, 0x9179, 0x918C, -/* 19D8 */ 0x9185, 0x9190, 0x918D, 0x9191, 0x91A2, 0x91A3, 0x91AA, 0x91AD, -/* 19E0 */ 0x91AE, 0x91AF, 0x91B5, 0x91B4, 0x91BA, 0x8C55, 0x9E7A, 0x8E89, -/* 19E8 */ 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, -/* 19F0 */ 0x8E4C, 0x8DD6, 0x8DD7, 0x8DDA, 0x8E92, 0x8DCE, 0x8DCF, 0x8DDB, -/* 19F8 */ 0x8DC6, 0x8DEC, 0x8E7A, 0x8E55, 0x8DE3, 0x8E9A, 0x8E8B, 0x8DE4, -/* 1A00 */ 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F, 0x8E93, 0x8E2E, 0x8E23, -/* 1A08 */ 0x8E91, 0x8E3A, 0x8E40, 0x8E39, 0x8E35, 0x8E3D, 0x8E31, 0x8E49, -/* 1A10 */ 0x8E41, 0x8E42, 0x8EA1, 0x8E63, 0x8E4A, 0x8E70, 0x8E76, 0x8E7C, -/* 1A18 */ 0x8E6F, 0x8E74, 0x8E85, 0x8EAA, 0x8E94, 0x8E90, 0x8EA6, 0x8E9E, -/* 1A20 */ 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 0x8C98, 0x8C94, 0x659B, 0x89D6, -/* 1A28 */ 0x89F4, 0x89DA, 0x89DC, 0x89E5, 0x89EB, 0x89F6, 0x8A3E, 0x8B26, -/* 1A30 */ 0x975A, 0x96E9, 0x9742, 0x96EF, 0x9706, 0x973D, 0x9708, 0x970F, -/* 1A38 */ 0x970E, 0x972A, 0x9744, 0x9730, 0x973E, 0x9F54, 0x9F5F, 0x9F59, -/* 1A40 */ 0x9F60, 0x9F5C, 0x9F66, 0x9F6C, 0x9F6A, 0x9F77, 0x9EFD, 0x9EFF, -/* 1A48 */ 0x9F09, 0x96B9, 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, 0x8B8E, -/* 1A50 */ 0x928E, 0x947E, 0x92C8, 0x93E8, 0x936A, 0x93CA, 0x938F, 0x943E, -/* 1A58 */ 0x946B, 0x9B77, 0x9B74, 0x9B81, 0x9B83, 0x9B8E, 0x9C78, 0x7A4C, -/* 1A60 */ 0x9B92, 0x9C5F, 0x9B90, 0x9BAD, 0x9B9A, 0x9BAA, 0x9B9E, 0x9C6D, -/* 1A68 */ 0x9BAB, 0x9B9D, 0x9C58, 0x9BC1, 0x9C7A, 0x9C31, 0x9C39, 0x9C23, -/* 1A70 */ 0x9C37, 0x9BC0, 0x9BCA, 0x9BC7, 0x9BFD, 0x9BD6, 0x9BEA, 0x9BEB, -/* 1A78 */ 0x9BE1, 0x9BE4, 0x9BE7, 0x9BDD, 0x9BE2, 0x9BF0, 0x9BDB, 0x9BF4, -/* 1A80 */ 0x9BD4, 0x9C5D, 0x9C08, 0x9C10, 0x9C0D, 0x9C12, 0x9C09, 0x9BFF, -/* 1A88 */ 0x9C20, 0x9C32, 0x9C2D, 0x9C28, 0x9C25, 0x9C29, 0x9C33, 0x9C3E, -/* 1A90 */ 0x9C48, 0x9C3B, 0x9C35, 0x9C45, 0x9C56, 0x9C54, 0x9C52, 0x9C67, -/* 1A98 */ 0x977C, 0x9785, 0x97C3, 0x97BD, 0x9794, 0x97C9, 0x97AB, 0x97A3, -/* 1AA0 */ 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9DBB, 0x9AB6, 0x9ABA, -/* 1AA8 */ 0x9ABC, 0x9AC1, 0x9AC0, 0x9ACF, 0x9AC2, 0x9AD6, 0x9AD5, 0x9AD1, -/* 1AB0 */ 0x9B45, 0x9B43, 0x9B58, 0x9B4E, 0x9B48, 0x9B4D, 0x9B51, 0x9957, -/* 1AB8 */ 0x995C, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF, -/* 1AC0 */ 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, 0x9B22, 0x9B1F, -/* 1AC8 */ 0x9B23, 0x4E48, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, 0x9E88, 0x9E8B, -/* 1AD0 */ 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EE0, -/* 1AD8 */ 0x9EDF, 0x9EE2, 0x9EF7, 0x9EE7, 0x9EE5, 0x9EF2, 0x9EEF, 0x9F22, -/* 1AE0 */ 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44, 0x896C, -/* 1AE8 */ 0x95C6, 0x9336, 0x5F46, 0x8514, 0x7E94, 0x5382, 0x51B2, 0x4E11, -/* 1AF0 */ 0x9F63, 0x5679, 0x515A, 0x6DC0, 0x9F15, 0x6597, 0x5641, 0x9AEE, -/* 1AF8 */ 0x8303, 0x4E30, 0x8907, 0x5E72, 0x7A40, 0x98B3, 0x5E7F, 0x95A4, -/* 1B00 */ 0x9B0D, 0x5212, 0x8FF4, 0x5F59, 0x7A6B, 0x98E2, 0x51E0, 0x50A2, -/* 1B08 */ 0x4EF7, 0x8350, 0x8591, 0x5118, 0x636E, 0x6372, 0x524B, 0x5938, -/* 1B10 */ 0x774F, 0x8721, 0x814A, 0x7E8D, 0x91CC, 0x66C6, 0x5E18, 0x77AD, -/* 1B18 */ 0x9E75, 0x56C9, 0x9EF4, 0x6FDB, 0x61DE, 0x77C7, 0x7030, 0x9EB5, -/* 1B20 */ 0x884A, 0x95E2, 0x82F9, 0x51ED, 0x6251, 0x4EC6, 0x6734, 0x97C6, -/* 1B28 */ 0x7C64, 0x7E34, 0x97A6, 0x9EAF, 0x786E, 0x820D, 0x672F, 0x677E, -/* 1B30 */ 0x56CC, 0x53F0, 0x98B1, 0x6AAF, 0x7F4E, 0x6D82, 0x7CF0, 0x4E07, -/* 1B38 */ 0x4FC2, 0x7E6B, 0x9E79, 0x56AE, 0x9B1A, 0x846F, 0x53F6, 0x90C1, -/* 1B40 */ 0x79A6, 0x7C72, 0x613F, 0x4E91, 0x9AD2, 0x75C7, 0x96BB, 0x53EA, -/* 1B48 */ 0x7DFB, 0x88FD, 0x79CD, 0x7843, 0x7B51, 0x51C6, -/* End of table Total Length = 0x1C94 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/gb13000.ut b/mozilla/lib/libi18n/unicode/utotbl/gb13000.ut deleted file mode 100644 index caed94dff49..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/gb13000.ut +++ /dev/null @@ -1,11372 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 8165 - srcEnd = 816A - destBegin = 4E6A -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 816C - srcEnd = 8175 - destBegin = 4E74 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 8176 - srcEnd = 817C - destBegin = 4E7F -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 81AC - srcEnd = 81B2 - destBegin = 4F02 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 81D0 - srcEnd = 81D5 - destBegin = 4F47 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 8248 - srcEnd = 8250 - destBegin = 4FB6 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 8273 - srcEnd = 827E - destBegin = 4FFF -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 8291 - srcEnd = 829B - destBegin = 502F -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 82B3 - srcEnd = 82BA - destBegin = 505D -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 82BB - srcEnd = 82C0 - destBegin = 5066 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 82C1 - srcEnd = 82C9 - destBegin = 506D -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 82D9 - srcEnd = 82ED - destBegin = 508E -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 82F7 - srcEnd = 82FD - destBegin = 50B3 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 8340 - srcEnd = 8351 - destBegin = 50BD -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 8352 - srcEnd = 8357 - destBegin = 50D0 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 835B - srcEnd = 8365 - destBegin = 50DB -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 8374 - srcEnd = 837D - destBegin = 50FC -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 8382 - srcEnd = 8387 - destBegin = 510C -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 8388 - srcEnd = 8395 - destBegin = 5113 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 8396 - srcEnd = 83B2 - destBegin = 5122 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 83F9 - srcEnd = 83FE - destBegin = 51D2 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 8448 - srcEnd = 844D - destBegin = 51E5 -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 8471 - srcEnd = 8476 - destBegin = 5244 -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 8491 - srcEnd = 849A - destBegin = 5273 -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 84A2 - srcEnd = 84A8 - destBegin = 5289 -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 84AB - srcEnd = 84B1 - destBegin = 5294 -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = 84BA - srcEnd = 84C3 - destBegin = 52B4 -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = 84D5 - srcEnd = 84DA - destBegin = 52D9 -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = 84DF - srcEnd = 84E9 - destBegin = 52E5 -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = 84EA - srcEnd = 84F1 - destBegin = 52F1 -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = 8552 - srcEnd = 855B - destBegin = 532F -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = 8593 - srcEnd = 8599 - destBegin = 53AF -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = 85E1 - srcEnd = 85E8 - destBegin = 5469 -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = 865D - srcEnd = 8662 - destBegin = 54F4 -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = 8672 - srcEnd = 8677 - destBegin = 5515 -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = 86A9 - srcEnd = 86AE - destBegin = 556F -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = 86C1 - srcEnd = 86C7 - destBegin = 55A0 -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = 86C8 - srcEnd = 86D0 - destBegin = 55A8 -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = 8745 - srcEnd = 874C - destBegin = 5610 -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = 8765 - srcEnd = 8770 - destBegin = 5640 -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = 8790 - srcEnd = 8797 - destBegin = 567D -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = 8798 - srcEnd = 879E - destBegin = 5687 -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = 87A2 - srcEnd = 87B0 - destBegin = 5694 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = 87B1 - srcEnd = 87BB - destBegin = 56A4 -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = 87BC - srcEnd = 87C2 - destBegin = 56B0 -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = 87C7 - srcEnd = 87D3 - destBegin = 56BD -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = 87D4 - srcEnd = 87DC - destBegin = 56CB -End of Item 002E - -Begin of Item 002F - Format 0 - srcBegin = 87E3 - srcEnd = 87E8 - destBegin = 56E5 -End of Item 002F - -Begin of Item 0030 - Format 0 - srcBegin = 87F8 - srcEnd = 87FE - destBegin = 570B -End of Item 0030 - -Begin of Item 0031 - Format 0 - srcBegin = 8840 - srcEnd = 8849 - destBegin = 5712 -End of Item 0031 - -Begin of Item 0032 - Format 0 - srcBegin = 888A - srcEnd = 8890 - destBegin = 5794 -End of Item 0032 - -Begin of Item 0033 - Format 0 - srcBegin = 88A0 - srcEnd = 88A8 - destBegin = 57B9 -End of Item 0033 - -Begin of Item 0034 - Format 0 - srcBegin = 88A9 - srcEnd = 88AF - destBegin = 57C4 -End of Item 0034 - -Begin of Item 0035 - Format 0 - srcBegin = 88BD - srcEnd = 88C4 - destBegin = 57E5 -End of Item 0035 - -Begin of Item 0036 - Format 0 - srcBegin = 88F7 - srcEnd = 88FE - destBegin = 5836 -End of Item 0036 - -Begin of Item 0037 - Format 0 - srcBegin = 8940 - srcEnd = 8945 - destBegin = 583E -End of Item 0037 - -Begin of Item 0038 - Format 0 - srcBegin = 8946 - srcEnd = 894C - destBegin = 5845 -End of Item 0038 - -Begin of Item 0039 - Format 0 - srcBegin = 895A - srcEnd = 895F - destBegin = 585F -End of Item 0039 - -Begin of Item 003A - Format 0 - srcBegin = 8965 - srcEnd = 8975 - destBegin = 586D -End of Item 003A - -Begin of Item 003B - Format 0 - srcBegin = 898D - srcEnd = 8994 - destBegin = 58A0 -End of Item 003B - -Begin of Item 003C - Format 0 - srcBegin = 8995 - srcEnd = 89A6 - destBegin = 58AA -End of Item 003C - -Begin of Item 003D - Format 0 - srcBegin = 89AE - srcEnd = 89B8 - destBegin = 58C6 -End of Item 003D - -Begin of Item 003E - Format 0 - srcBegin = 89BC - srcEnd = 89C9 - destBegin = 58D6 -End of Item 003E - -Begin of Item 003F - Format 0 - srcBegin = 89CA - srcEnd = 89CF - destBegin = 58E5 -End of Item 003F - -Begin of Item 0040 - Format 0 - srcBegin = 89D8 - srcEnd = 89DF - destBegin = 58FA -End of Item 0040 - -Begin of Item 0041 - Format 0 - srcBegin = 8A56 - srcEnd = 8A62 - destBegin = 5966 -End of Item 0041 - -Begin of Item 0042 - Format 0 - srcBegin = 8A85 - srcEnd = 8A8A - destBegin = 59B3 -End of Item 0042 - -Begin of Item 0043 - Format 0 - srcBegin = 8A8E - srcEnd = 8A94 - destBegin = 59BF -End of Item 0043 - -Begin of Item 0044 - Format 0 - srcBegin = 8AAB - srcEnd = 8AB6 - destBegin = 59ED -End of Item 0044 - -Begin of Item 0045 - Format 0 - srcBegin = 8AD3 - srcEnd = 8AD9 - destBegin = 5A2A -End of Item 0045 - -Begin of Item 0046 - Format 0 - srcBegin = 8AEB - srcEnd = 8AF4 - destBegin = 5A4B -End of Item 0046 - -Begin of Item 0047 - Format 0 - srcBegin = 8AF9 - srcEnd = 8AFE - destBegin = 5A5B -End of Item 0047 - -Begin of Item 0048 - Format 0 - srcBegin = 8B47 - srcEnd = 8B4F - destBegin = 5A6B -End of Item 0048 - -Begin of Item 0049 - Format 0 - srcBegin = 8B56 - srcEnd = 8B67 - destBegin = 5A80 -End of Item 0049 - -Begin of Item 004A - Format 0 - srcBegin = 8B68 - srcEnd = 8B6E - destBegin = 5A93 -End of Item 004A - -Begin of Item 004B - Format 0 - srcBegin = 8B6F - srcEnd = 8B7C - destBegin = 5A9C -End of Item 004B - -Begin of Item 004C - Format 0 - srcBegin = 8B8F - srcEnd = 8B94 - destBegin = 5AC3 -End of Item 004C - -Begin of Item 004D - Format 0 - srcBegin = 8BB0 - srcEnd = 8BC6 - destBegin = 5AF2 -End of Item 004D - -Begin of Item 004E - Format 0 - srcBegin = 8BC7 - srcEnd = 8BD2 - destBegin = 5B0A -End of Item 004E - -Begin of Item 004F - Format 0 - srcBegin = 8BD3 - srcEnd = 8BEC - destBegin = 5B18 -End of Item 004F - -Begin of Item 0050 - Format 0 - srcBegin = 8BF0 - srcEnd = 8BF7 - destBegin = 5B38 -End of Item 0050 - -Begin of Item 0051 - Format 0 - srcBegin = 8BF8 - srcEnd = 8BFE - destBegin = 5B41 -End of Item 0051 - -Begin of Item 0052 - Format 0 - srcBegin = 8C40 - srcEnd = 8C47 - destBegin = 5B48 -End of Item 0052 - -Begin of Item 0053 - Format 0 - srcBegin = 8C81 - srcEnd = 8C89 - destBegin = 5BD4 -End of Item 0053 - -Begin of Item 0054 - Format 0 - srcBegin = 8C95 - srcEnd = 8C9B - destBegin = 5BF1 -End of Item 0054 - -Begin of Item 0055 - Format 0 - srcBegin = 8CD4 - srcEnd = 8CDA - destBegin = 5C67 -End of Item 0055 - -Begin of Item 0056 - Format 0 - srcBegin = 8CDC - srcEnd = 8CE2 - destBegin = 5C72 -End of Item 0056 - -Begin of Item 0057 - Format 0 - srcBegin = 8D4F - srcEnd = 8D54 - destBegin = 5CC5 -End of Item 0057 - -Begin of Item 0058 - Format 0 - srcBegin = 8D55 - srcEnd = 8D5A - destBegin = 5CCC -End of Item 0058 - -Begin of Item 0059 - Format 0 - srcBegin = 8D5B - srcEnd = 8D60 - destBegin = 5CD3 -End of Item 0059 - -Begin of Item 005A - Format 0 - srcBegin = 8D61 - srcEnd = 8D67 - destBegin = 5CDA -End of Item 005A - -Begin of Item 005B - Format 0 - srcBegin = 8D70 - srcEnd = 8D79 - destBegin = 5CF1 -End of Item 005B - -Begin of Item 005C - Format 0 - srcBegin = 8D83 - srcEnd = 8D88 - destBegin = 5D08 -End of Item 005C - -Begin of Item 005D - Format 0 - srcBegin = 8DA4 - srcEnd = 8DAB - destBegin = 5D35 -End of Item 005D - -Begin of Item 005E - Format 0 - srcBegin = 8DAC - srcEnd = 8DB3 - destBegin = 5D3F -End of Item 005E - -Begin of Item 005F - Format 0 - srcBegin = 8DB6 - srcEnd = 8DC0 - destBegin = 5D4D -End of Item 005F - -Begin of Item 0060 - Format 0 - srcBegin = 8DC4 - srcEnd = 8DCE - destBegin = 5D5E -End of Item 0060 - -Begin of Item 0061 - Format 0 - srcBegin = 8DD6 - srcEnd = 8DE2 - destBegin = 5D75 -End of Item 0061 - -Begin of Item 0062 - Format 0 - srcBegin = 8DE3 - srcEnd = 8DF8 - destBegin = 5D83 -End of Item 0062 - -Begin of Item 0063 - Format 0 - srcBegin = 8E40 - srcEnd = 8E55 - destBegin = 5DA1 -End of Item 0063 - -Begin of Item 0064 - Format 0 - srcBegin = 8E56 - srcEnd = 8E62 - destBegin = 5DB8 -End of Item 0064 - -Begin of Item 0065 - Format 0 - srcBegin = 8E63 - srcEnd = 8E69 - destBegin = 5DC6 -End of Item 0065 - -Begin of Item 0066 - Format 0 - srcBegin = 8E6A - srcEnd = 8E76 - destBegin = 5DCE -End of Item 0066 - -Begin of Item 0067 - Format 0 - srcBegin = 8E94 - srcEnd = 8E9B - destBegin = 5E1E -End of Item 0067 - -Begin of Item 0068 - Format 0 - srcBegin = 8EAF - srcEnd = 8EB4 - destBegin = 5E46 -End of Item 0068 - -Begin of Item 0069 - Format 0 - srcBegin = 8EB5 - srcEnd = 8EBB - destBegin = 5E4D -End of Item 0069 - -Begin of Item 006A - Format 0 - srcBegin = 8EC5 - srcEnd = 8ED3 - destBegin = 5E63 -End of Item 006A - -Begin of Item 006B - Format 0 - srcBegin = 8EF8 - srcEnd = 8EFE - destBegin = 5EBF -End of Item 006B - -Begin of Item 006C - Format 0 - srcBegin = 8F43 - srcEnd = 8F48 - destBegin = 5ECB -End of Item 006C - -Begin of Item 006D - Format 0 - srcBegin = 8F4F - srcEnd = 8F5A - destBegin = 5EDC -End of Item 006D - -Begin of Item 006E - Format 0 - srcBegin = 8F5C - srcEnd = 8F64 - destBegin = 5EEB -End of Item 006E - -Begin of Item 006F - Format 0 - srcBegin = 8F85 - srcEnd = 8F8B - destBegin = 5F32 -End of Item 006F - -Begin of Item 0070 - Format 0 - srcBegin = 8F90 - srcEnd = 8F9E - destBegin = 5F41 -End of Item 0070 - -Begin of Item 0071 - Format 0 - srcBegin = 8FC7 - srcEnd = 8FCC - destBegin = 5FA2 -End of Item 0071 - -Begin of Item 0072 - Format 0 - srcBegin = 8FD0 - srcEnd = 8FD5 - destBegin = 5FAF -End of Item 0072 - -Begin of Item 0073 - Format 0 - srcBegin = 905F - srcEnd = 9065 - destBegin = 6044 -End of Item 0073 - -Begin of Item 0074 - Format 0 - srcBegin = 90A2 - srcEnd = 90A9 - destBegin = 60BD -End of Item 0074 - -Begin of Item 0075 - Format 0 - srcBegin = 90E5 - srcEnd = 90F7 - destBegin = 612C -End of Item 0075 - -Begin of Item 0076 - Format 0 - srcBegin = 90F8 - srcEnd = 90FE - destBegin = 6140 -End of Item 0076 - -Begin of Item 0077 - Format 0 - srcBegin = 9149 - srcEnd = 914F - destBegin = 6156 -End of Item 0077 - -Begin of Item 0078 - Format 0 - srcBegin = 9158 - srcEnd = 915E - destBegin = 6169 -End of Item 0078 - -Begin of Item 0079 - Format 0 - srcBegin = 9164 - srcEnd = 9176 - destBegin = 6178 -End of Item 0079 - -Begin of Item 007A - Format 0 - srcBegin = 9180 - srcEnd = 9186 - destBegin = 6196 -End of Item 007A - -Begin of Item 007B - Format 0 - srcBegin = 9187 - srcEnd = 918F - destBegin = 619E -End of Item 007B - -Begin of Item 007C - Format 0 - srcBegin = 9192 - srcEnd = 919B - destBegin = 61AD -End of Item 007C - -Begin of Item 007D - Format 0 - srcBegin = 919C - srcEnd = 91A1 - destBegin = 61B8 -End of Item 007D - -Begin of Item 007E - Format 0 - srcBegin = 91B1 - srcEnd = 91C1 - destBegin = 61D5 -End of Item 007E - -Begin of Item 007F - Format 0 - srcBegin = 91C2 - srcEnd = 91CF - destBegin = 61E7 -End of Item 007F - -Begin of Item 0080 - Format 0 - srcBegin = 91D0 - srcEnd = 91D8 - destBegin = 61F6 -End of Item 0080 - -Begin of Item 0081 - Format 0 - srcBegin = 91D9 - srcEnd = 91DE - destBegin = 6200 -End of Item 0081 - -Begin of Item 0082 - Format 0 - srcBegin = 9247 - srcEnd = 924D - destBegin = 625C -End of Item 0082 - -Begin of Item 0083 - Format 0 - srcBegin = 9261 - srcEnd = 9266 - destBegin = 628B -End of Item 0083 - -Begin of Item 0084 - Format 0 - srcBegin = 92AE - srcEnd = 92B3 - destBegin = 6333 -End of Item 0084 - -Begin of Item 0085 - Format 0 - srcBegin = 92C2 - srcEnd = 92C9 - destBegin = 6356 -End of Item 0085 - -Begin of Item 0086 - Format 0 - srcBegin = 92EA - srcEnd = 92F0 - destBegin = 6399 -End of Item 0086 - -Begin of Item 0087 - Format 0 - srcBegin = 934D - srcEnd = 9353 - destBegin = 63D7 -End of Item 0087 - -Begin of Item 0088 - Format 0 - srcBegin = 9374 - srcEnd = 9379 - destBegin = 6415 -End of Item 0088 - -Begin of Item 0089 - Format 0 - srcBegin = 9385 - srcEnd = 938A - destBegin = 642E -End of Item 0089 - -Begin of Item 008A - Format 0 - srcBegin = 9397 - srcEnd = 939D - destBegin = 644B -End of Item 008A - -Begin of Item 008B - Format 0 - srcBegin = 93A7 - srcEnd = 93AE - destBegin = 645F -End of Item 008B - -Begin of Item 008C - Format 0 - srcBegin = 93B3 - srcEnd = 93BC - destBegin = 646E -End of Item 008C - -Begin of Item 008D - Format 0 - srcBegin = 93BD - srcEnd = 93C3 - destBegin = 647B -End of Item 008D - -Begin of Item 008E - Format 0 - srcBegin = 93C6 - srcEnd = 93CE - destBegin = 6488 -End of Item 008E - -Begin of Item 008F - Format 0 - srcBegin = 93F0 - srcEnd = 93F6 - destBegin = 64C6 -End of Item 008F - -Begin of Item 0090 - Format 0 - srcBegin = 9448 - srcEnd = 9460 - destBegin = 64E7 -End of Item 0090 - -Begin of Item 0091 - Format 0 - srcBegin = 9461 - srcEnd = 9468 - destBegin = 6501 -End of Item 0091 - -Begin of Item 0092 - Format 0 - srcBegin = 9469 - srcEnd = 9470 - destBegin = 650A -End of Item 0092 - -Begin of Item 0093 - Format 0 - srcBegin = 9476 - srcEnd = 947E - destBegin = 6519 -End of Item 0093 - -Begin of Item 0094 - Format 0 - srcBegin = 94B5 - srcEnd = 94C3 - destBegin = 6578 -End of Item 0094 - -Begin of Item 0095 - Format 0 - srcBegin = 94DA - srcEnd = 94E1 - destBegin = 65B1 -End of Item 0095 - -Begin of Item 0096 - Format 0 - srcBegin = 94F2 - srcEnd = 94F9 - destBegin = 65D8 -End of Item 0096 - -Begin of Item 0097 - Format 0 - srcBegin = 9573 - srcEnd = 9579 - destBegin = 6644 -End of Item 0097 - -Begin of Item 0098 - Format 0 - srcBegin = 95AF - srcEnd = 95B7 - destBegin = 669E -End of Item 0098 - -Begin of Item 0099 - Format 0 - srcBegin = 95CA - srcEnd = 95E3 - destBegin = 66BF -End of Item 0099 - -Begin of Item 009A - Format 0 - srcBegin = 95E5 - srcEnd = 95EC - destBegin = 66DE -End of Item 009A - -Begin of Item 009B - Format 0 - srcBegin = 95EF - srcEnd = 95F4 - destBegin = 66EA -End of Item 009B - -Begin of Item 009C - Format 0 - srcBegin = 9650 - srcEnd = 9655 - destBegin = 6720 -End of Item 009C - -Begin of Item 009D - Format 0 - srcBegin = 96A2 - srcEnd = 96A9 - destBegin = 67B9 -End of Item 009D - -Begin of Item 009E - Format 0 - srcBegin = 96AB - srcEnd = 96B4 - destBegin = 67C5 -End of Item 009E - -Begin of Item 009F - Format 0 - srcBegin = 96C5 - srcEnd = 96CC - destBegin = 67F5 -End of Item 009F - -Begin of Item 00A0 - Format 0 - srcBegin = 96E0 - srcEnd = 96E6 - destBegin = 6822 -End of Item 00A0 - -Begin of Item 00A1 - Format 0 - srcBegin = 96E7 - srcEnd = 96ED - destBegin = 682B -End of Item 00A1 - -Begin of Item 00A2 - Format 0 - srcBegin = 96F9 - srcEnd = 96FE - destBegin = 6856 -End of Item 00A2 - -Begin of Item 00A3 - Format 0 - srcBegin = 9745 - srcEnd = 974C - destBegin = 686C -End of Item 00A3 - -Begin of Item 00A4 - Format 0 - srcBegin = 974E - srcEnd = 9756 - destBegin = 6878 -End of Item 00A4 - -Begin of Item 00A5 - Format 0 - srcBegin = 9759 - srcEnd = 9760 - destBegin = 6887 -End of Item 00A5 - -Begin of Item 00A6 - Format 0 - srcBegin = 9767 - srcEnd = 9770 - destBegin = 6898 -End of Item 00A6 - -Begin of Item 00A7 - Format 0 - srcBegin = 9780 - srcEnd = 9786 - destBegin = 68B9 -End of Item 00A7 - -Begin of Item 00A8 - Format 0 - srcBegin = 9788 - srcEnd = 978D - destBegin = 68C3 -End of Item 00A8 - -Begin of Item 00A9 - Format 0 - srcBegin = 97A0 - srcEnd = 97A9 - destBegin = 68E4 -End of Item 00A9 - -Begin of Item 00AA - Format 0 - srcBegin = 97C1 - srcEnd = 97CC - destBegin = 6913 -End of Item 00AA - -Begin of Item 00AB - Format 0 - srcBegin = 97D0 - srcEnd = 97D7 - destBegin = 6925 -End of Item 00AB - -Begin of Item 00AC - Format 0 - srcBegin = 97E7 - srcEnd = 97F7 - destBegin = 6943 -End of Item 00AC - -Begin of Item 00AD - Format 0 - srcBegin = 985C - srcEnd = 9861 - destBegin = 698E -End of Item 00AD - -Begin of Item 00AE - Format 0 - srcBegin = 9866 - srcEnd = 986F - destBegin = 699D -End of Item 00AE - -Begin of Item 00AF - Format 0 - srcBegin = 9883 - srcEnd = 988A - destBegin = 69C2 -End of Item 00AF - -Begin of Item 00B0 - Format 0 - srcBegin = 9891 - srcEnd = 9896 - destBegin = 69D5 -End of Item 00B0 - -Begin of Item 00B1 - Format 0 - srcBegin = 989A - srcEnd = 98A5 - destBegin = 69E1 -End of Item 00B1 - -Begin of Item 00B2 - Format 0 - srcBegin = 98AA - srcEnd = 98B3 - destBegin = 69F3 -End of Item 00B2 - -Begin of Item 00B3 - Format 0 - srcBegin = 98B5 - srcEnd = 98BE - destBegin = 6A00 -End of Item 00B3 - -Begin of Item 00B4 - Format 0 - srcBegin = 98BF - srcEnd = 98CA - destBegin = 6A0B -End of Item 00B4 - -Begin of Item 00B5 - Format 0 - srcBegin = 98CB - srcEnd = 98D0 - destBegin = 6A19 -End of Item 00B5 - -Begin of Item 00B6 - Format 0 - srcBegin = 98D2 - srcEnd = 98D7 - destBegin = 6A22 -End of Item 00B6 - -Begin of Item 00B7 - Format 0 - srcBegin = 98E1 - srcEnd = 98E7 - destBegin = 6A36 -End of Item 00B7 - -Begin of Item 00B8 - Format 0 - srcBegin = 98EF - srcEnd = 98F6 - destBegin = 6A48 -End of Item 00B8 - -Begin of Item 00B9 - Format 0 - srcBegin = 98F7 - srcEnd = 98FD - destBegin = 6A51 -End of Item 00B9 - -Begin of Item 00BA - Format 0 - srcBegin = 9948 - srcEnd = 9952 - destBegin = 6A66 -End of Item 00BA - -Begin of Item 00BB - Format 0 - srcBegin = 9953 - srcEnd = 9959 - destBegin = 6A72 -End of Item 00BB - -Begin of Item 00BC - Format 0 - srcBegin = 9962 - srcEnd = 996A - destBegin = 6A85 -End of Item 00BC - -Begin of Item 00BD - Format 0 - srcBegin = 9971 - srcEnd = 9978 - destBegin = 6A98 -End of Item 00BD - -Begin of Item 00BE - Format 0 - srcBegin = 9979 - srcEnd = 997E - destBegin = 6AA1 -End of Item 00BE - -Begin of Item 00BF - Format 0 - srcBegin = 9983 - srcEnd = 99F5 - destBegin = 6AAD -End of Item 00BF - -Begin of Item 00C0 - Format 0 - srcBegin = 99F8 - srcEnd = 99FE - destBegin = 6B28 -End of Item 00C0 - -Begin of Item 00C1 - Format 0 - srcBegin = 9A54 - srcEnd = 9A5F - destBegin = 6B4D -End of Item 00C1 - -Begin of Item 00C2 - Format 0 - srcBegin = 9A60 - srcEnd = 9A67 - destBegin = 6B5A -End of Item 00C2 - -Begin of Item 00C3 - Format 0 - srcBegin = 9A6A - srcEnd = 9A77 - destBegin = 6B6B -End of Item 00C3 - -Begin of Item 00C4 - Format 0 - srcBegin = 9A8F - srcEnd = 9A96 - destBegin = 6BA2 -End of Item 00C4 - -Begin of Item 00C5 - Format 0 - srcBegin = 9A97 - srcEnd = 9A9E - destBegin = 6BAB -End of Item 00C5 - -Begin of Item 00C6 - Format 0 - srcBegin = 9AA0 - srcEnd = 9AA6 - destBegin = 6BB8 -End of Item 00C6 - -Begin of Item 00C7 - Format 0 - srcBegin = 9ABA - srcEnd = 9AC1 - destBegin = 6BE2 -End of Item 00C7 - -Begin of Item 00C8 - Format 0 - srcBegin = 9ACF - srcEnd = 9AD5 - destBegin = 6BFE -End of Item 00C8 - -Begin of Item 00C9 - Format 0 - srcBegin = 9BA2 - srcEnd = 9BA7 - destBegin = 6D1F -End of Item 00C9 - -Begin of Item 00CA - Format 0 - srcBegin = 9BF3 - srcEnd = 9BF8 - destBegin = 6DB9 -End of Item 00CA - -Begin of Item 00CB - Format 0 - srcBegin = 9C5D - srcEnd = 9C64 - destBegin = 6DFD -End of Item 00CB - -Begin of Item 00CC - Format 0 - srcBegin = 9C83 - srcEnd = 9C8A - destBegin = 6E3B -End of Item 00CC - -Begin of Item 00CD - Format 0 - srcBegin = 9C8B - srcEnd = 9C92 - destBegin = 6E45 -End of Item 00CD - -Begin of Item 00CE - Format 0 - srcBegin = 9C9E - srcEnd = 9CA8 - destBegin = 6E60 -End of Item 00CE - -Begin of Item 00CF - Format 0 - srcBegin = 9CAB - srcEnd = 9CB9 - destBegin = 6E6F -End of Item 00CF - -Begin of Item 00D0 - Format 0 - srcBegin = 9CC5 - srcEnd = 9CCB - destBegin = 6E91 -End of Item 00D0 - -Begin of Item 00D1 - Format 0 - srcBegin = 9CF9 - srcEnd = 9CFE - destBegin = 6EEA -End of Item 00D1 - -Begin of Item 00D2 - Format 0 - srcBegin = 9D48 - srcEnd = 9D4F - destBegin = 6EFA -End of Item 00D2 - -Begin of Item 00D3 - Format 0 - srcBegin = 9D5D - srcEnd = 9D66 - destBegin = 6F16 -End of Item 00D3 - -Begin of Item 00D4 - Format 0 - srcBegin = 9D74 - srcEnd = 9D7A - destBegin = 6F37 -End of Item 00D4 - -Begin of Item 00D5 - Format 0 - srcBegin = 9D87 - srcEnd = 9D90 - destBegin = 6F4E -End of Item 00D5 - -Begin of Item 00D6 - Format 0 - srcBegin = 9D9B - srcEnd = 9DA0 - destBegin = 6F67 -End of Item 00D6 - -Begin of Item 00D7 - Format 0 - srcBegin = 9DAA - srcEnd = 9DB0 - destBegin = 6F7D -End of Item 00D7 - -Begin of Item 00D8 - Format 0 - srcBegin = 9DB6 - srcEnd = 9DC2 - destBegin = 6F8F -End of Item 00D8 - -Begin of Item 00D9 - Format 0 - srcBegin = 9DCC - srcEnd = 9DD6 - destBegin = 6FA8 -End of Item 00D9 - -Begin of Item 00DA - Format 0 - srcBegin = 9DDB - srcEnd = 9DE0 - destBegin = 6FBA -End of Item 00DA - -Begin of Item 00DB - Format 0 - srcBegin = 9DE2 - srcEnd = 9DE7 - destBegin = 6FC3 -End of Item 00DB - -Begin of Item 00DC - Format 0 - srcBegin = 9DE8 - srcEnd = 9DEE - destBegin = 6FCA -End of Item 00DC - -Begin of Item 00DD - Format 0 - srcBegin = 9DEF - srcEnd = 9DF9 - destBegin = 6FD3 -End of Item 00DD - -Begin of Item 00DE - Format 0 - srcBegin = 9E40 - srcEnd = 9E47 - destBegin = 6FE6 -End of Item 00DE - -Begin of Item 00DF - Format 0 - srcBegin = 9E48 - srcEnd = 9E68 - destBegin = 6FF0 -End of Item 00DF - -Begin of Item 00E0 - Format 0 - srcBegin = 9E69 - srcEnd = 9E70 - destBegin = 7012 -End of Item 00E0 - -Begin of Item 00E1 - Format 0 - srcBegin = 9E71 - srcEnd = 9E77 - destBegin = 701C -End of Item 00E1 - -Begin of Item 00E2 - Format 0 - srcBegin = 9E78 - srcEnd = 9E7E - destBegin = 7024 -End of Item 00E2 - -Begin of Item 00E3 - Format 0 - srcBegin = 9E80 - srcEnd = 9E89 - destBegin = 702B -End of Item 00E3 - -Begin of Item 00E4 - Format 0 - srcBegin = 9E8D - srcEnd = 9E9E - destBegin = 703A -End of Item 00E4 - -Begin of Item 00E5 - Format 0 - srcBegin = 9EA1 - srcEnd = 9EAE - destBegin = 7050 -End of Item 00E5 - -Begin of Item 00E6 - Format 0 - srcBegin = 9EAF - srcEnd = 9EBA - destBegin = 705F -End of Item 00E6 - -Begin of Item 00E7 - Format 0 - srcBegin = 9ED7 - srcEnd = 9EE3 - destBegin = 709E -End of Item 00E7 - -Begin of Item 00E8 - Format 0 - srcBegin = 9EF1 - srcEnd = 9EFD - destBegin = 70CB -End of Item 00E8 - -Begin of Item 00E9 - Format 0 - srcBegin = 9F4A - srcEnd = 9F50 - destBegin = 70F0 -End of Item 00E9 - -Begin of Item 00EA - Format 0 - srcBegin = 9F55 - srcEnd = 9F5F - destBegin = 70FE -End of Item 00EA - -Begin of Item 00EB - Format 0 - srcBegin = 9F69 - srcEnd = 9F73 - destBegin = 711B -End of Item 00EB - -Begin of Item 00EC - Format 0 - srcBegin = 9F74 - srcEnd = 9F7B - destBegin = 7127 -End of Item 00EC - -Begin of Item 00ED - Format 0 - srcBegin = 9F81 - srcEnd = 9F8E - destBegin = 7137 -End of Item 00ED - -Begin of Item 00EE - Format 0 - srcBegin = 9F95 - srcEnd = 9FA1 - destBegin = 714F -End of Item 00EE - -Begin of Item 00EF - Format 0 - srcBegin = 9FB8 - srcEnd = 9FBD - destBegin = 717E -End of Item 00EF - -Begin of Item 00F0 - Format 0 - srcBegin = 9FD3 - srcEnd = 9FD9 - destBegin = 71A1 -End of Item 00F0 - -Begin of Item 00F1 - Format 0 - srcBegin = 9FDD - srcEnd = 9FE2 - destBegin = 71AD -End of Item 00F1 - -Begin of Item 00F2 - Format 0 - srcBegin = 9FE7 - srcEnd = 9FEF - destBegin = 71BA -End of Item 00F2 - -Begin of Item 00F3 - Format 0 - srcBegin = 9FF0 - srcEnd = 9FF9 - destBegin = 71C4 -End of Item 00F3 - -Begin of Item 00F4 - Format 0 - srcBegin = A040 - srcEnd = A049 - destBegin = 71D6 -End of Item 00F4 - -Begin of Item 00F5 - Format 0 - srcBegin = A04F - srcEnd = A054 - destBegin = 71E8 -End of Item 00F5 - -Begin of Item 00F6 - Format 0 - srcBegin = A055 - srcEnd = A05E - destBegin = 71EF -End of Item 00F6 - -Begin of Item 00F7 - Format 0 - srcBegin = A05F - srcEnd = A06A - destBegin = 71FA -End of Item 00F7 - -Begin of Item 00F8 - Format 0 - srcBegin = A06B - srcEnd = A07E - destBegin = 7207 -End of Item 00F8 - -Begin of Item 00F9 - Format 0 - srcBegin = A082 - srcEnd = A08B - destBegin = 721E -End of Item 00F9 - -Begin of Item 00FA - Format 0 - srcBegin = A097 - srcEnd = A09D - destBegin = 7240 -End of Item 00FA - -Begin of Item 00FB - Format 0 - srcBegin = A0CB - srcEnd = A0D6 - destBegin = 7293 -End of Item 00FB - -Begin of Item 00FC - Format 0 - srcBegin = A0D7 - srcEnd = A0E2 - destBegin = 72A0 -End of Item 00FC - -Begin of Item 00FD - Format 0 - srcBegin = A0E8 - srcEnd = A0EE - destBegin = 72BA -End of Item 00FD - -Begin of Item 00FE - Format 0 - srcBegin = A1B4 - srcEnd = A1BB - destBegin = 3008 -End of Item 00FE - -Begin of Item 00FF - Format 0 - srcBegin = A2A1 - srcEnd = A2AA - destBegin = 2170 -End of Item 00FF - -Begin of Item 0100 - Format 0 - srcBegin = A2B1 - srcEnd = A2C4 - destBegin = 2488 -End of Item 0100 - -Begin of Item 0101 - Format 0 - srcBegin = A2C5 - srcEnd = A2D8 - destBegin = 2474 -End of Item 0101 - -Begin of Item 0102 - Format 0 - srcBegin = A2D9 - srcEnd = A2E2 - destBegin = 2460 -End of Item 0102 - -Begin of Item 0103 - Format 0 - srcBegin = A2E5 - srcEnd = A2EE - destBegin = 3220 -End of Item 0103 - -Begin of Item 0104 - Format 0 - srcBegin = A2F1 - srcEnd = A2FC - destBegin = 2160 -End of Item 0104 - -Begin of Item 0105 - Format 0 - srcBegin = A3A5 - srcEnd = A3FD - destBegin = FF05 -End of Item 0105 - -Begin of Item 0106 - Format 0 - srcBegin = A4A1 - srcEnd = A4F3 - destBegin = 3041 -End of Item 0106 - -Begin of Item 0107 - Format 0 - srcBegin = A5A1 - srcEnd = A5F6 - destBegin = 30A1 -End of Item 0107 - -Begin of Item 0108 - Format 0 - srcBegin = A6A1 - srcEnd = A6B1 - destBegin = 0391 -End of Item 0108 - -Begin of Item 0109 - Format 0 - srcBegin = A6B2 - srcEnd = A6B8 - destBegin = 03A3 -End of Item 0109 - -Begin of Item 010A - Format 0 - srcBegin = A6C1 - srcEnd = A6D1 - destBegin = 03B1 -End of Item 010A - -Begin of Item 010B - Format 0 - srcBegin = A6D2 - srcEnd = A6D8 - destBegin = 03C3 -End of Item 010B - -Begin of Item 010C - Format 0 - srcBegin = A7A1 - srcEnd = A7A6 - destBegin = 0410 -End of Item 010C - -Begin of Item 010D - Format 0 - srcBegin = A7A8 - srcEnd = A7C1 - destBegin = 0416 -End of Item 010D - -Begin of Item 010E - Format 0 - srcBegin = A7D1 - srcEnd = A7D6 - destBegin = 0430 -End of Item 010E - -Begin of Item 010F - Format 0 - srcBegin = A7D8 - srcEnd = A7F1 - destBegin = 0436 -End of Item 010F - -Begin of Item 0110 - Format 0 - srcBegin = A854 - srcEnd = A877 - destBegin = 2550 -End of Item 0110 - -Begin of Item 0111 - Format 0 - srcBegin = A878 - srcEnd = A87E - destBegin = 2581 -End of Item 0111 - -Begin of Item 0112 - Format 0 - srcBegin = A880 - srcEnd = A887 - destBegin = 2588 -End of Item 0112 - -Begin of Item 0113 - Format 0 - srcBegin = A8C5 - srcEnd = A8E9 - destBegin = 3105 -End of Item 0113 - -Begin of Item 0114 - Format 0 - srcBegin = A940 - srcEnd = A948 - destBegin = 3021 -End of Item 0114 - -Begin of Item 0115 - Format 0 - srcBegin = A968 - srcEnd = A971 - destBegin = FE49 -End of Item 0115 - -Begin of Item 0116 - Format 0 - srcBegin = A976 - srcEnd = A97E - destBegin = FE59 -End of Item 0116 - -Begin of Item 0117 - Format 0 - srcBegin = A989 - srcEnd = A995 - destBegin = E7E7 -End of Item 0117 - -Begin of Item 0118 - Format 0 - srcBegin = A9A4 - srcEnd = A9EF - destBegin = 2500 -End of Item 0118 - -Begin of Item 0119 - Format 0 - srcBegin = AA43 - srcEnd = AA48 - destBegin = 72E2 -End of Item 0119 - -Begin of Item 011A - Format 0 - srcBegin = AA53 - srcEnd = AA58 - destBegin = 7304 -End of Item 011A - -Begin of Item 011B - Format 0 - srcBegin = AA76 - srcEnd = AA7E - destBegin = 7340 -End of Item 011B - -Begin of Item 011C - Format 0 - srcBegin = AA8B - srcEnd = AA92 - destBegin = 7358 -End of Item 011C - -Begin of Item 011D - Format 0 - srcBegin = AA93 - srcEnd = AA9D - destBegin = 7361 -End of Item 011D - -Begin of Item 011E - Format 0 - srcBegin = AB40 - srcEnd = AB4B - destBegin = 7372 -End of Item 011E - -Begin of Item 011F - Format 0 - srcBegin = AB66 - srcEnd = AB6B - destBegin = 73A3 -End of Item 011F - -Begin of Item 0120 - Format 0 - srcBegin = AB83 - srcEnd = AB89 - destBegin = 73D2 -End of Item 0120 - -Begin of Item 0121 - Format 0 - srcBegin = AC40 - srcEnd = AC4A - destBegin = 73F8 -End of Item 0121 - -Begin of Item 0122 - Format 0 - srcBegin = AC52 - srcEnd = AC5A - destBegin = 7411 -End of Item 0122 - -Begin of Item 0123 - Format 0 - srcBegin = AC5B - srcEnd = AC60 - destBegin = 741C -End of Item 0123 - -Begin of Item 0124 - Format 0 - srcBegin = AC73 - srcEnd = AC7E - destBegin = 7442 -End of Item 0124 - -Begin of Item 0125 - Format 0 - srcBegin = AC80 - srcEnd = AC86 - destBegin = 744E -End of Item 0125 - -Begin of Item 0126 - Format 0 - srcBegin = AC8A - srcEnd = AC96 - destBegin = 7460 -End of Item 0126 - -Begin of Item 0127 - Format 0 - srcBegin = AD4E - srcEnd = AD58 - destBegin = 7491 -End of Item 0127 - -Begin of Item 0128 - Format 0 - srcBegin = AD5A - srcEnd = AD61 - destBegin = 749F -End of Item 0128 - -Begin of Item 0129 - Format 0 - srcBegin = AD62 - srcEnd = AD71 - destBegin = 74AA -End of Item 0129 - -Begin of Item 012A - Format 0 - srcBegin = AD72 - srcEnd = AD7E - destBegin = 74BB -End of Item 012A - -Begin of Item 012B - Format 0 - srcBegin = AD80 - srcEnd = AD89 - destBegin = 74C8 -End of Item 012B - -Begin of Item 012C - Format 0 - srcBegin = AD8A - srcEnd = AD92 - destBegin = 74D3 -End of Item 012C - -Begin of Item 012D - Format 0 - srcBegin = AD97 - srcEnd = AD9D - destBegin = 74E7 -End of Item 012D - -Begin of Item 012E - Format 0 - srcBegin = AE42 - srcEnd = AE48 - destBegin = 74F8 -End of Item 012E - -Begin of Item 012F - Format 0 - srcBegin = AE4D - srcEnd = AE54 - destBegin = 7505 -End of Item 012F - -Begin of Item 0130 - Format 0 - srcBegin = AE80 - srcEnd = AE87 - destBegin = 755D -End of Item 0130 - -Begin of Item 0131 - Format 0 - srcBegin = AE8B - srcEnd = AE91 - destBegin = 756B -End of Item 0131 - -Begin of Item 0132 - Format 0 - srcBegin = B040 - srcEnd = B046 - destBegin = 7645 -End of Item 0132 - -Begin of Item 0133 - Format 0 - srcBegin = B047 - srcEnd = B04C - destBegin = 764E -End of Item 0133 - -Begin of Item 0134 - Format 0 - srcBegin = B058 - srcEnd = B05E - destBegin = 7664 -End of Item 0134 - -Begin of Item 0135 - Format 0 - srcBegin = B062 - srcEnd = B069 - destBegin = 7670 -End of Item 0135 - -Begin of Item 0136 - Format 0 - srcBegin = B080 - srcEnd = B087 - destBegin = 769C -End of Item 0136 - -Begin of Item 0137 - Format 0 - srcBegin = B088 - srcEnd = B090 - destBegin = 76A5 -End of Item 0137 - -Begin of Item 0138 - Format 0 - srcBegin = B094 - srcEnd = B09D - destBegin = 76B5 -End of Item 0138 - -Begin of Item 0139 - Format 0 - srcBegin = B151 - srcEnd = B158 - destBegin = 76E6 -End of Item 0139 - -Begin of Item 013A - Format 0 - srcBegin = B169 - srcEnd = B173 - destBegin = 770E -End of Item 013A - -Begin of Item 013B - Format 0 - srcBegin = B190 - srcEnd = B197 - destBegin = 7748 -End of Item 013B - -Begin of Item 013C - Format 0 - srcBegin = B198 - srcEnd = B19F - destBegin = 7752 -End of Item 013C - -Begin of Item 013D - Format 0 - srcBegin = B248 - srcEnd = B253 - destBegin = 776D -End of Item 013D - -Begin of Item 013E - Format 0 - srcBegin = B25A - srcEnd = B25F - destBegin = 7786 -End of Item 013E - -Begin of Item 013F - Format 0 - srcBegin = B262 - srcEnd = B26D - destBegin = 7793 -End of Item 013F - -Begin of Item 0140 - Format 0 - srcBegin = B282 - srcEnd = B28E - destBegin = 77C0 -End of Item 0140 - -Begin of Item 0141 - Format 0 - srcBegin = B28F - srcEnd = B297 - destBegin = 77CE -End of Item 0141 - -Begin of Item 0142 - Format 0 - srcBegin = B34E - srcEnd = B353 - destBegin = 7803 -End of Item 0142 - -Begin of Item 0143 - Format 0 - srcBegin = B382 - srcEnd = B38D - destBegin = 785E -End of Item 0143 - -Begin of Item 0144 - Format 0 - srcBegin = B38E - srcEnd = B395 - destBegin = 786F -End of Item 0144 - -Begin of Item 0145 - Format 0 - srcBegin = B39A - srcEnd = B3A0 - destBegin = 787D -End of Item 0145 - -Begin of Item 0146 - Format 0 - srcBegin = B453 - srcEnd = B45A - destBegin = 78A8 -End of Item 0146 - -Begin of Item 0147 - Format 0 - srcBegin = B475 - srcEnd = B47E - destBegin = 78DA -End of Item 0147 - -Begin of Item 0148 - Format 0 - srcBegin = B491 - srcEnd = B496 - destBegin = 78FB -End of Item 0148 - -Begin of Item 0149 - Format 0 - srcBegin = B49A - srcEnd = B4A0 - destBegin = 7906 -End of Item 0149 - -Begin of Item 014A - Format 0 - srcBegin = B540 - srcEnd = B545 - destBegin = 790D -End of Item 014A - -Begin of Item 014B - Format 0 - srcBegin = B546 - srcEnd = B54F - destBegin = 7914 -End of Item 014B - -Begin of Item 014C - Format 0 - srcBegin = B555 - srcEnd = B563 - destBegin = 7925 -End of Item 014C - -Begin of Item 014D - Format 0 - srcBegin = B570 - srcEnd = B578 - destBegin = 794A -End of Item 014D - -Begin of Item 014E - Format 0 - srcBegin = B587 - srcEnd = B58D - destBegin = 7970 -End of Item 014E - -Begin of Item 014F - Format 0 - srcBegin = B640 - srcEnd = B646 - destBegin = 7993 -End of Item 014F - -Begin of Item 0150 - Format 0 - srcBegin = B647 - srcEnd = B652 - destBegin = 799B -End of Item 0150 - -Begin of Item 0151 - Format 0 - srcBegin = B653 - srcEnd = B65D - destBegin = 79A8 -End of Item 0151 - -Begin of Item 0152 - Format 0 - srcBegin = B673 - srcEnd = B678 - destBegin = 79D9 -End of Item 0152 - -Begin of Item 0153 - Format 0 - srcBegin = B682 - srcEnd = B688 - destBegin = 79F1 -End of Item 0153 - -Begin of Item 0154 - Format 0 - srcBegin = B744 - srcEnd = B752 - destBegin = 7A24 -End of Item 0154 - -Begin of Item 0155 - Format 0 - srcBegin = B759 - srcEnd = B75E - destBegin = 7A40 -End of Item 0155 - -Begin of Item 0156 - Format 0 - srcBegin = B75F - srcEnd = B768 - destBegin = 7A47 -End of Item 0156 - -Begin of Item 0157 - Format 0 - srcBegin = B76E - srcEnd = B77E - destBegin = 7A58 -End of Item 0157 - -Begin of Item 0158 - Format 0 - srcBegin = B780 - srcEnd = B786 - destBegin = 7A69 -End of Item 0158 - -Begin of Item 0159 - Format 0 - srcBegin = B84B - srcEnd = B855 - destBegin = 7AB4 -End of Item 0159 - -Begin of Item 015A - Format 0 - srcBegin = B856 - srcEnd = B860 - destBegin = 7AC0 -End of Item 015A - -Begin of Item 015B - Format 0 - srcBegin = B861 - srcEnd = B86A - destBegin = 7ACC -End of Item 015B - -Begin of Item 015C - Format 0 - srcBegin = B874 - srcEnd = B879 - destBegin = 7AE7 -End of Item 015C - -Begin of Item 015D - Format 0 - srcBegin = B94A - srcEnd = B94F - destBegin = 7B3F -End of Item 015D - -Begin of Item 015E - Format 0 - srcBegin = B95D - srcEnd = B967 - destBegin = 7B63 -End of Item 015E - -Begin of Item 015F - Format 0 - srcBegin = B976 - srcEnd = B97C - destBegin = 7B86 -End of Item 015F - -Begin of Item 0160 - Format 0 - srcBegin = B996 - srcEnd = B99D - destBegin = 7BB9 -End of Item 0160 - -Begin of Item 0161 - Format 0 - srcBegin = BA69 - srcEnd = BA70 - destBegin = 7BFF -End of Item 0161 - -Begin of Item 0162 - Format 0 - srcBegin = BA76 - srcEnd = BA7B - destBegin = 7C10 -End of Item 0162 - -Begin of Item 0163 - Format 0 - srcBegin = BA85 - srcEnd = BA8A - destBegin = 7C20 -End of Item 0163 - -Begin of Item 0164 - Format 0 - srcBegin = BA8D - srcEnd = BA99 - destBegin = 7C2B -End of Item 0164 - -Begin of Item 0165 - Format 0 - srcBegin = BA9A - srcEnd = BA9F - destBegin = 7C39 -End of Item 0165 - -Begin of Item 0166 - Format 0 - srcBegin = BB40 - srcEnd = BB49 - destBegin = 7C43 -End of Item 0166 - -Begin of Item 0167 - Format 0 - srcBegin = BB4A - srcEnd = BB6E - destBegin = 7C4E -End of Item 0167 - -Begin of Item 0168 - Format 0 - srcBegin = BB6F - srcEnd = BB74 - destBegin = 7C75 -End of Item 0168 - -Begin of Item 0169 - Format 0 - srcBegin = BB75 - srcEnd = BB7E - destBegin = 7C7E -End of Item 0169 - -Begin of Item 016A - Format 0 - srcBegin = BB81 - srcEnd = BB87 - destBegin = 7C8A -End of Item 016A - -Begin of Item 016B - Format 0 - srcBegin = BC48 - srcEnd = BC4E - destBegin = 7CCE -End of Item 016B - -Begin of Item 016C - Format 0 - srcBegin = BC54 - srcEnd = BC5A - destBegin = 7CE1 -End of Item 016C - -Begin of Item 016D - Format 0 - srcBegin = BC5B - srcEnd = BC60 - destBegin = 7CE9 -End of Item 016D - -Begin of Item 016E - Format 0 - srcBegin = BC61 - srcEnd = BC68 - destBegin = 7CF0 -End of Item 016E - -Begin of Item 016F - Format 0 - srcBegin = BC6B - srcEnd = BC78 - destBegin = 7CFC -End of Item 016F - -Begin of Item 0170 - Format 0 - srcBegin = BC79 - srcEnd = BC7E - destBegin = 7D0B -End of Item 0170 - -Begin of Item 0171 - Format 0 - srcBegin = BC80 - srcEnd = BC8E - destBegin = 7D11 -End of Item 0171 - -Begin of Item 0172 - Format 0 - srcBegin = BC9A - srcEnd = BCA0 - destBegin = 7D30 -End of Item 0172 - -Begin of Item 0173 - Format 0 - srcBegin = BD40 - srcEnd = BD76 - destBegin = 7D37 -End of Item 0173 - -Begin of Item 0174 - Format 0 - srcBegin = BD77 - srcEnd = BD7E - destBegin = 7D6F -End of Item 0174 - -Begin of Item 0175 - Format 0 - srcBegin = BD80 - srcEnd = BDA0 - destBegin = 7D78 -End of Item 0175 - -Begin of Item 0176 - Format 0 - srcBegin = BE40 - srcEnd = BE4C - destBegin = 7D99 -End of Item 0176 - -Begin of Item 0177 - Format 0 - srcBegin = BE4D - srcEnd = BE53 - destBegin = 7DA7 -End of Item 0177 - -Begin of Item 0178 - Format 0 - srcBegin = BE54 - srcEnd = BE7E - destBegin = 7DAF -End of Item 0178 - -Begin of Item 0179 - Format 0 - srcBegin = BE80 - srcEnd = BEA0 - destBegin = 7DDA -End of Item 0179 - -Begin of Item 017A - Format 0 - srcBegin = BF40 - srcEnd = BF7E - destBegin = 7DFB -End of Item 017A - -Begin of Item 017B - Format 0 - srcBegin = BF8B - srcEnd = BFA0 - destBegin = 7E48 -End of Item 017B - -Begin of Item 017C - Format 0 - srcBegin = C040 - srcEnd = C063 - destBegin = 7E5E -End of Item 017C - -Begin of Item 017D - Format 0 - srcBegin = C064 - srcEnd = C07B - destBegin = 7E83 -End of Item 017D - -Begin of Item 017E - Format 0 - srcBegin = C08D - srcEnd = C093 - destBegin = 7F3B -End of Item 017E - -Begin of Item 017F - Format 0 - srcBegin = C095 - srcEnd = C09E - destBegin = 7F46 -End of Item 017F - -Begin of Item 0180 - Format 0 - srcBegin = C15C - srcEnd = C163 - destBegin = 7F82 -End of Item 0180 - -Begin of Item 0181 - Format 0 - srcBegin = C177 - srcEnd = C17D - destBegin = 7FA8 -End of Item 0181 - -Begin of Item 0182 - Format 0 - srcBegin = C199 - srcEnd = C19E - destBegin = 7FD9 -End of Item 0182 - -Begin of Item 0183 - Format 0 - srcBegin = C249 - srcEnd = C24F - destBegin = 7FF4 -End of Item 0183 - -Begin of Item 0184 - Format 0 - srcBegin = C264 - srcEnd = C269 - destBegin = 802B -End of Item 0184 - -Begin of Item 0185 - Format 0 - srcBegin = C281 - srcEnd = C28E - destBegin = 805B -End of Item 0185 - -Begin of Item 0186 - Format 0 - srcBegin = C28F - srcEnd = C294 - destBegin = 806B -End of Item 0186 - -Begin of Item 0187 - Format 0 - srcBegin = C295 - srcEnd = C2A0 - destBegin = 8072 -End of Item 0187 - -Begin of Item 0188 - Format 0 - srcBegin = C346 - srcEnd = C34B - destBegin = 808D -End of Item 0188 - -Begin of Item 0189 - Format 0 - srcBegin = C363 - srcEnd = C369 - destBegin = 80CF -End of Item 0189 - -Begin of Item 018A - Format 0 - srcBegin = C387 - srcEnd = C393 - destBegin = 811F -End of Item 018A - -Begin of Item 018B - Format 0 - srcBegin = C440 - srcEnd = C445 - destBegin = 8140 -End of Item 018B - -Begin of Item 018C - Format 0 - srcBegin = C470 - srcEnd = C475 - destBegin = 8192 -End of Item 018C - -Begin of Item 018D - Format 0 - srcBegin = C482 - srcEnd = C489 - destBegin = 81AB -End of Item 018D - -Begin of Item 018E - Format 0 - srcBegin = C48A - srcEnd = C48F - destBegin = 81B4 -End of Item 018E - -Begin of Item 018F - Format 0 - srcBegin = C49A - srcEnd = C4A0 - destBegin = 81CD -End of Item 018F - -Begin of Item 0190 - Format 0 - srcBegin = C540 - srcEnd = C54E - destBegin = 81D4 -End of Item 0190 - -Begin of Item 0191 - Format 0 - srcBegin = C55A - srcEnd = C55F - destBegin = 81F5 -End of Item 0191 - -Begin of Item 0192 - Format 0 - srcBegin = C56C - srcEnd = C571 - destBegin = 8215 -End of Item 0192 - -Begin of Item 0193 - Format 0 - srcBegin = C58B - srcEnd = C592 - destBegin = 8250 -End of Item 0193 - -Begin of Item 0194 - Format 0 - srcBegin = C598 - srcEnd = C59F - destBegin = 8260 -End of Item 0194 - -Begin of Item 0195 - Format 0 - srcBegin = C68F - srcEnd = C698 - destBegin = 831D -End of Item 0195 - -Begin of Item 0196 - Format 0 - srcBegin = C754 - srcEnd = C75A - destBegin = 8370 -End of Item 0196 - -Begin of Item 0197 - Format 0 - srcBegin = C75D - srcEnd = C763 - destBegin = 837E -End of Item 0197 - -Begin of Item 0198 - Format 0 - srcBegin = C775 - srcEnd = C77B - destBegin = 83A1 -End of Item 0198 - -Begin of Item 0199 - Format 0 - srcBegin = C854 - srcEnd = C859 - destBegin = 8412 -End of Item 0199 - -Begin of Item 019A - Format 0 - srcBegin = C85D - srcEnd = C862 - destBegin = 841E -End of Item 019A - -Begin of Item 019B - Format 0 - srcBegin = C863 - srcEnd = C86A - destBegin = 8429 -End of Item 019B - -Begin of Item 019C - Format 0 - srcBegin = C86B - srcEnd = C870 - destBegin = 8432 -End of Item 019C - -Begin of Item 019D - Format 0 - srcBegin = C874 - srcEnd = C87B - destBegin = 843E -End of Item 019D - -Begin of Item 019E - Format 0 - srcBegin = C880 - srcEnd = C886 - destBegin = 844A -End of Item 019E - -Begin of Item 019F - Format 0 - srcBegin = C94B - srcEnd = C952 - destBegin = 848F -End of Item 019F - -Begin of Item 01A0 - Format 0 - srcBegin = C95A - srcEnd = C966 - destBegin = 84A2 -End of Item 01A0 - -Begin of Item 01A1 - Format 0 - srcBegin = C991 - srcEnd = C99B - destBegin = 84F1 -End of Item 01A1 - -Begin of Item 01A2 - Format 0 - srcBegin = CA40 - srcEnd = CA48 - destBegin = 8503 -End of Item 01A2 - -Begin of Item 01A3 - Format 0 - srcBegin = CA58 - srcEnd = CA60 - destBegin = 8522 -End of Item 01A3 - -Begin of Item 01A4 - Format 0 - srcBegin = CA61 - srcEnd = CA6A - destBegin = 852D -End of Item 01A4 - -Begin of Item 01A5 - Format 0 - srcBegin = CA74 - srcEnd = CA7E - destBegin = 854B -End of Item 01A5 - -Begin of Item 01A6 - Format 0 - srcBegin = CA8E - srcEnd = CA96 - destBegin = 8569 -End of Item 01A6 - -Begin of Item 01A7 - Format 0 - srcBegin = CB43 - srcEnd = CB49 - destBegin = 8588 -End of Item 01A7 - -Begin of Item 01A8 - Format 0 - srcBegin = CB4A - srcEnd = CB54 - destBegin = 8590 -End of Item 01A8 - -Begin of Item 01A9 - Format 0 - srcBegin = CB55 - srcEnd = CB5B - destBegin = 859D -End of Item 01A9 - -Begin of Item 01AA - Format 0 - srcBegin = CB63 - srcEnd = CB68 - destBegin = 85B1 -End of Item 01AA - -Begin of Item 01AB - Format 0 - srcBegin = CB6A - srcEnd = CB70 - destBegin = 85BA -End of Item 01AB - -Begin of Item 01AC - Format 0 - srcBegin = CB71 - srcEnd = CB77 - destBegin = 85C2 -End of Item 01AC - -Begin of Item 01AD - Format 0 - srcBegin = CB81 - srcEnd = CB86 - destBegin = 85D6 -End of Item 01AD - -Begin of Item 01AE - Format 0 - srcBegin = CB87 - srcEnd = CB8D - destBegin = 85DD -End of Item 01AE - -Begin of Item 01AF - Format 0 - srcBegin = CB92 - srcEnd = CBA0 - destBegin = 85EA -End of Item 01AF - -Begin of Item 01B0 - Format 0 - srcBegin = CC4A - srcEnd = CC54 - destBegin = 8606 -End of Item 01B0 - -Begin of Item 01B1 - Format 0 - srcBegin = CC59 - srcEnd = CC68 - destBegin = 8617 -End of Item 01B1 - -Begin of Item 01B2 - Format 0 - srcBegin = CC6A - srcEnd = CC77 - destBegin = 862A -End of Item 01B2 - -Begin of Item 01B3 - Format 0 - srcBegin = CC80 - srcEnd = CC8B - destBegin = 8641 -End of Item 01B3 - -Begin of Item 01B4 - Format 0 - srcBegin = CC99 - srcEnd = CCA0 - destBegin = 8663 -End of Item 01B4 - -Begin of Item 01B5 - Format 0 - srcBegin = CD43 - srcEnd = CD49 - destBegin = 8672 -End of Item 01B5 - -Begin of Item 01B6 - Format 0 - srcBegin = CD4A - srcEnd = CD50 - destBegin = 8683 -End of Item 01B6 - -Begin of Item 01B7 - Format 0 - srcBegin = CD57 - srcEnd = CD5C - destBegin = 8696 -End of Item 01B7 - -Begin of Item 01B8 - Format 0 - srcBegin = CE58 - srcEnd = CE5E - destBegin = 8740 -End of Item 01B8 - -Begin of Item 01B9 - Format 0 - srcBegin = CE6A - srcEnd = CE6F - destBegin = 875A -End of Item 01B9 - -Begin of Item 01BA - Format 0 - srcBegin = CE72 - srcEnd = CE79 - destBegin = 8766 -End of Item 01BA - -Begin of Item 01BB - Format 0 - srcBegin = CE95 - srcEnd = CE9B - destBegin = 8798 -End of Item 01BB - -Begin of Item 01BC - Format 0 - srcBegin = CF5F - srcEnd = CF65 - destBegin = 87D4 -End of Item 01BC - -Begin of Item 01BD - Format 0 - srcBegin = CF75 - srcEnd = CF7E - destBegin = 87EF -End of Item 01BD - -Begin of Item 01BE - Format 0 - srcBegin = CF88 - srcEnd = CF8D - destBegin = 8804 -End of Item 01BE - -Begin of Item 01BF - Format 0 - srcBegin = CF8E - srcEnd = CF95 - destBegin = 880B -End of Item 01BF - -Begin of Item 01C0 - Format 0 - srcBegin = D040 - srcEnd = D04D - destBegin = 8824 -End of Item 01C0 - -Begin of Item 01C1 - Format 0 - srcBegin = D04E - srcEnd = D053 - destBegin = 8833 -End of Item 01C1 - -Begin of Item 01C2 - Format 0 - srcBegin = D05C - srcEnd = D061 - destBegin = 8846 -End of Item 01C2 - -Begin of Item 01C3 - Format 0 - srcBegin = D062 - srcEnd = D067 - destBegin = 884E -End of Item 01C3 - -Begin of Item 01C4 - Format 0 - srcBegin = D06B - srcEnd = D071 - destBegin = 885A -End of Item 01C4 - -Begin of Item 01C5 - Format 0 - srcBegin = D09B - srcEnd = D0A0 - destBegin = 88A5 -End of Item 01C5 - -Begin of Item 01C6 - Format 0 - srcBegin = D168 - srcEnd = D16E - destBegin = 88E9 -End of Item 01C6 - -Begin of Item 01C7 - Format 0 - srcBegin = D179 - srcEnd = D17E - destBegin = 8903 -End of Item 01C7 - -Begin of Item 01C8 - Format 0 - srcBegin = D240 - srcEnd = D248 - destBegin = 8938 -End of Item 01C8 - -Begin of Item 01C9 - Format 0 - srcBegin = D24B - srcEnd = D263 - destBegin = 8945 -End of Item 01C9 - -Begin of Item 01CA - Format 0 - srcBegin = D264 - srcEnd = D269 - destBegin = 8960 -End of Item 01CA - -Begin of Item 01CB - Format 0 - srcBegin = D26A - srcEnd = D27D - destBegin = 8967 -End of Item 01CB - -Begin of Item 01CC - Format 0 - srcBegin = D286 - srcEnd = D2A0 - destBegin = 8987 -End of Item 01CC - -Begin of Item 01CD - Format 0 - srcBegin = D340 - srcEnd = D35E - destBegin = 89A2 -End of Item 01CD - -Begin of Item 01CE - Format 0 - srcBegin = D378 - srcEnd = D37E - destBegin = 89F4 -End of Item 01CE - -Begin of Item 01CF - Format 0 - srcBegin = D385 - srcEnd = D38A - destBegin = 8A01 -End of Item 01CF - -Begin of Item 01D0 - Format 0 - srcBegin = D38B - srcEnd = D3A0 - destBegin = 8A08 -End of Item 01D0 - -Begin of Item 01D1 - Format 0 - srcBegin = D440 - srcEnd = D45F - destBegin = 8A1E -End of Item 01D1 - -Begin of Item 01D2 - Format 0 - srcBegin = D460 - srcEnd = D468 - destBegin = 8A3F -End of Item 01D2 - -Begin of Item 01D3 - Format 0 - srcBegin = D469 - srcEnd = D47E - destBegin = 8A49 -End of Item 01D3 - -Begin of Item 01D4 - Format 0 - srcBegin = D480 - srcEnd = D499 - destBegin = 8A5F -End of Item 01D4 - -Begin of Item 01D5 - Format 0 - srcBegin = D49A - srcEnd = D4A0 - destBegin = 8A7A -End of Item 01D5 - -Begin of Item 01D6 - Format 0 - srcBegin = D540 - srcEnd = D547 - destBegin = 8A81 -End of Item 01D6 - -Begin of Item 01D7 - Format 0 - srcBegin = D548 - srcEnd = D54F - destBegin = 8A8B -End of Item 01D7 - -Begin of Item 01D8 - Format 0 - srcBegin = D550 - srcEnd = D57E - destBegin = 8A94 -End of Item 01D8 - -Begin of Item 01D9 - Format 0 - srcBegin = D580 - srcEnd = D5A0 - destBegin = 8AC3 -End of Item 01D9 - -Begin of Item 01DA - Format 0 - srcBegin = D640 - srcEnd = D662 - destBegin = 8AE4 -End of Item 01DA - -Begin of Item 01DB - Format 0 - srcBegin = D663 - srcEnd = D67E - destBegin = 8B08 -End of Item 01DB - -Begin of Item 01DC - Format 0 - srcBegin = D682 - srcEnd = D6A0 - destBegin = 8B27 -End of Item 01DC - -Begin of Item 01DD - Format 0 - srcBegin = D740 - srcEnd = D75F - destBegin = 8B46 -End of Item 01DD - -Begin of Item 01DE - Format 0 - srcBegin = D765 - srcEnd = D77E - destBegin = 8B6D -End of Item 01DE - -Begin of Item 01DF - Format 0 - srcBegin = D780 - srcEnd = D798 - destBegin = 8B87 -End of Item 01DF - -Begin of Item 01E0 - Format 0 - srcBegin = D840 - srcEnd = D848 - destBegin = 8C38 -End of Item 01E0 - -Begin of Item 01E1 - Format 0 - srcBegin = D850 - srcEnd = D857 - destBegin = 8C4D -End of Item 01E1 - -Begin of Item 01E2 - Format 0 - srcBegin = D85C - srcEnd = D861 - destBegin = 8C5B -End of Item 01E2 - -Begin of Item 01E3 - Format 0 - srcBegin = D862 - srcEnd = D868 - destBegin = 8C63 -End of Item 01E3 - -Begin of Item 01E4 - Format 0 - srcBegin = D869 - srcEnd = D86F - destBegin = 8C6C -End of Item 01E4 - -Begin of Item 01E5 - Format 0 - srcBegin = D874 - srcEnd = D87A - destBegin = 8C7B -End of Item 01E5 - -Begin of Item 01E6 - Format 0 - srcBegin = D882 - srcEnd = D888 - destBegin = 8C8D -End of Item 01E6 - -Begin of Item 01E7 - Format 0 - srcBegin = D88C - srcEnd = D8A0 - destBegin = 8C99 -End of Item 01E7 - -Begin of Item 01E8 - Format 0 - srcBegin = D940 - srcEnd = D97E - destBegin = 8CAE -End of Item 01E8 - -Begin of Item 01E9 - Format 0 - srcBegin = D980 - srcEnd = D9A0 - destBegin = 8CED -End of Item 01E9 - -Begin of Item 01EA - Format 0 - srcBegin = DA40 - srcEnd = DA4E - destBegin = 8D0E -End of Item 01EA - -Begin of Item 01EB - Format 0 - srcBegin = DA5D - srcEnd = DA65 - destBegin = 8D78 -End of Item 01EB - -Begin of Item 01EC - Format 0 - srcBegin = DA73 - srcEnd = DA7C - destBegin = 8D95 -End of Item 01EC - -Begin of Item 01ED - Format 0 - srcBegin = DA81 - srcEnd = DA8D - destBegin = 8DA4 -End of Item 01ED - -Begin of Item 01EE - Format 0 - srcBegin = DB53 - srcEnd = DB59 - destBegin = 8DFE -End of Item 01EE - -Begin of Item 01EF - Format 0 - srcBegin = DB64 - srcEnd = DB6B - destBegin = 8E15 -End of Item 01EF - -Begin of Item 01F0 - Format 0 - srcBegin = DB89 - srcEnd = DB8E - destBegin = 8E53 -End of Item 01F0 - -Begin of Item 01F1 - Format 0 - srcBegin = DB8F - srcEnd = DB9A - destBegin = 8E5A -End of Item 01F1 - -Begin of Item 01F2 - Format 0 - srcBegin = DC4E - srcEnd = DC54 - destBegin = 8E88 -End of Item 01F2 - -Begin of Item 01F3 - Format 0 - srcBegin = DC58 - srcEnd = DC5E - destBegin = 8E95 -End of Item 01F3 - -Begin of Item 01F4 - Format 0 - srcBegin = DC60 - srcEnd = DC6B - destBegin = 8E9F -End of Item 01F4 - -Begin of Item 01F5 - Format 0 - srcBegin = DC70 - srcEnd = DC76 - destBegin = 8EB3 -End of Item 01F5 - -Begin of Item 01F6 - Format 0 - srcBegin = DC77 - srcEnd = DC7E - destBegin = 8EBB -End of Item 01F6 - -Begin of Item 01F7 - Format 0 - srcBegin = DC80 - srcEnd = DC8A - destBegin = 8EC3 -End of Item 01F7 - -Begin of Item 01F8 - Format 0 - srcBegin = DC8B - srcEnd = DCA0 - destBegin = 8ECF -End of Item 01F8 - -Begin of Item 01F9 - Format 0 - srcBegin = DD40 - srcEnd = DD7E - destBegin = 8EE5 -End of Item 01F9 - -Begin of Item 01FA - Format 0 - srcBegin = DD80 - srcEnd = DDA0 - destBegin = 8F24 -End of Item 01FA - -Begin of Item 01FB - Format 0 - srcBegin = DE40 - srcEnd = DE60 - destBegin = 8F45 -End of Item 01FB - -Begin of Item 01FC - Format 0 - srcBegin = DF45 - srcEnd = DF4A - destBegin = 9027 -End of Item 01FC - -Begin of Item 01FD - Format 0 - srcBegin = DF64 - srcEnd = DF69 - destBegin = 905C -End of Item 01FD - -Begin of Item 01FE - Format 0 - srcBegin = DF76 - srcEnd = DF7C - destBegin = 9076 -End of Item 01FE - -Begin of Item 01FF - Format 0 - srcBegin = E068 - srcEnd = E07B - destBegin = 9105 -End of Item 01FF - -Begin of Item 0200 - Format 0 - srcBegin = E084 - srcEnd = E08E - destBegin = 9124 -End of Item 0200 - -Begin of Item 0201 - Format 0 - srcBegin = E090 - srcEnd = E096 - destBegin = 9132 -End of Item 0201 - -Begin of Item 0202 - Format 0 - srcBegin = E097 - srcEnd = E09F - destBegin = 913A -End of Item 0202 - -Begin of Item 0203 - Format 0 - srcBegin = E161 - srcEnd = E167 - destBegin = 9193 -End of Item 0203 - -Begin of Item 0204 - Format 0 - srcBegin = E168 - srcEnd = E16D - destBegin = 919C -End of Item 0204 - -Begin of Item 0205 - Format 0 - srcBegin = E16E - srcEnd = E173 - destBegin = 91A4 -End of Item 0205 - -Begin of Item 0206 - Format 0 - srcBegin = E180 - srcEnd = E18A - destBegin = 91BC -End of Item 0206 - -Begin of Item 0207 - Format 0 - srcBegin = E18E - srcEnd = E197 - destBegin = 91D2 -End of Item 0207 - -Begin of Item 0208 - Format 0 - srcBegin = E198 - srcEnd = E1A0 - destBegin = 91DD -End of Item 0208 - -Begin of Item 0209 - Format 0 - srcBegin = E240 - srcEnd = E27E - destBegin = 91E6 -End of Item 0209 - -Begin of Item 020A - Format 0 - srcBegin = E280 - srcEnd = E2A0 - destBegin = 9225 -End of Item 020A - -Begin of Item 020B - Format 0 - srcBegin = E2BC - srcEnd = E2C1 - destBegin = 9967 -End of Item 020B - -Begin of Item 020C - Format 0 - srcBegin = E340 - srcEnd = E36D - destBegin = 9246 -End of Item 020C - -Begin of Item 020D - Format 0 - srcBegin = E36E - srcEnd = E37E - destBegin = 9275 -End of Item 020D - -Begin of Item 020E - Format 0 - srcBegin = E380 - srcEnd = E387 - destBegin = 9286 -End of Item 020E - -Begin of Item 020F - Format 0 - srcBegin = E388 - srcEnd = E3A0 - destBegin = 928F -End of Item 020F - -Begin of Item 0210 - Format 0 - srcBegin = E440 - srcEnd = E445 - destBegin = 92A8 -End of Item 0210 - -Begin of Item 0211 - Format 0 - srcBegin = E446 - srcEnd = E45E - destBegin = 92AF -End of Item 0211 - -Begin of Item 0212 - Format 0 - srcBegin = E45F - srcEnd = E47E - destBegin = 92C9 -End of Item 0212 - -Begin of Item 0213 - Format 0 - srcBegin = E480 - srcEnd = E4A0 - destBegin = 92E9 -End of Item 0213 - -Begin of Item 0214 - Format 0 - srcBegin = E540 - srcEnd = E573 - destBegin = 930A -End of Item 0214 - -Begin of Item 0215 - Format 0 - srcBegin = E574 - srcEnd = E57E - destBegin = 933F -End of Item 0215 - -Begin of Item 0216 - Format 0 - srcBegin = E580 - srcEnd = E59F - destBegin = 934A -End of Item 0216 - -Begin of Item 0217 - Format 0 - srcBegin = E640 - srcEnd = E662 - destBegin = 936C -End of Item 0217 - -Begin of Item 0218 - Format 0 - srcBegin = E663 - srcEnd = E67E - destBegin = 9390 -End of Item 0218 - -Begin of Item 0219 - Format 0 - srcBegin = E680 - srcEnd = E69D - destBegin = 93AC -End of Item 0219 - -Begin of Item 021A - Format 0 - srcBegin = E740 - srcEnd = E747 - destBegin = 93CE -End of Item 021A - -Begin of Item 021B - Format 0 - srcBegin = E748 - srcEnd = E77E - destBegin = 93D7 -End of Item 021B - -Begin of Item 021C - Format 0 - srcBegin = E780 - srcEnd = E7A0 - destBegin = 940E -End of Item 021C - -Begin of Item 021D - Format 0 - srcBegin = E7CA - srcEnd = E7D0 - destBegin = 7F21 -End of Item 021D - -Begin of Item 021E - Format 0 - srcBegin = E840 - srcEnd = E84E - destBegin = 942F -End of Item 021E - -Begin of Item 021F - Format 0 - srcBegin = E84F - srcEnd = E87A - destBegin = 943F -End of Item 021F - -Begin of Item 0220 - Format 0 - srcBegin = E880 - srcEnd = E894 - destBegin = 9470 -End of Item 0220 - -Begin of Item 0221 - Format 0 - srcBegin = E94C - srcEnd = E953 - destBegin = 9577 -End of Item 0221 - -Begin of Item 0222 - Format 0 - srcBegin = E954 - srcEnd = E97E - destBegin = 9580 -End of Item 0222 - -Begin of Item 0223 - Format 0 - srcBegin = E980 - srcEnd = E9A0 - destBegin = 95AB -End of Item 0223 - -Begin of Item 0224 - Format 0 - srcBegin = EA40 - srcEnd = EA5B - destBegin = 95CC -End of Item 0224 - -Begin of Item 0225 - Format 0 - srcBegin = EA64 - srcEnd = EA6A - destBegin = 9623 -End of Item 0225 - -Begin of Item 0226 - Format 0 - srcBegin = EA91 - srcEnd = EA9D - destBegin = 9678 -End of Item 0226 - -Begin of Item 0227 - Format 0 - srcBegin = EB49 - srcEnd = EB52 - destBegin = 969D -End of Item 0227 - -Begin of Item 0228 - Format 0 - srcBegin = EB53 - srcEnd = EB5A - destBegin = 96A8 -End of Item 0228 - -Begin of Item 0229 - Format 0 - srcBegin = EB6D - srcEnd = EB76 - destBegin = 96D6 -End of Item 0229 - -Begin of Item 022A - Format 0 - srcBegin = EB77 - srcEnd = EB7D - destBegin = 96E1 -End of Item 022A - -Begin of Item 022B - Format 0 - srcBegin = EC40 - srcEnd = EC48 - destBegin = 9721 -End of Item 022B - -Begin of Item 022C - Format 0 - srcBegin = EC57 - srcEnd = EC69 - destBegin = 973F -End of Item 022C - -Begin of Item 022D - Format 0 - srcBegin = EC77 - srcEnd = EC7E - destBegin = 976A -End of Item 022D - -Begin of Item 022E - Format 0 - srcBegin = EC87 - srcEnd = EC8E - destBegin = 977D -End of Item 022E - -Begin of Item 022F - Format 0 - srcBegin = ED44 - srcEnd = ED4A - destBegin = 97A4 -End of Item 022F - -Begin of Item 0230 - Format 0 - srcBegin = ED50 - srcEnd = ED7E - destBegin = 97B5 -End of Item 0230 - -Begin of Item 0231 - Format 0 - srcBegin = ED89 - srcEnd = EDA0 - destBegin = 97F7 -End of Item 0231 - -Begin of Item 0232 - Format 0 - srcBegin = EE40 - srcEnd = EE7E - destBegin = 980F -End of Item 0232 - -Begin of Item 0233 - Format 0 - srcBegin = EE80 - srcEnd = EEA0 - destBegin = 984E -End of Item 0233 - -Begin of Item 0234 - Format 0 - srcBegin = EEE6 - srcEnd = EEEC - destBegin = 94C8 -End of Item 0234 - -Begin of Item 0235 - Format 0 - srcBegin = EF40 - srcEnd = EF45 - destBegin = 986F -End of Item 0235 - -Begin of Item 0236 - Format 0 - srcBegin = EF4C - srcEnd = EF71 - destBegin = 98A8 -End of Item 0236 - -Begin of Item 0237 - Format 0 - srcBegin = EF82 - srcEnd = EFA0 - destBegin = 98E9 -End of Item 0237 - -Begin of Item 0238 - Format 0 - srcBegin = EFE4 - srcEnd = EFEC - destBegin = 9564 -End of Item 0238 - -Begin of Item 0239 - Format 0 - srcBegin = F047 - srcEnd = F063 - destBegin = 9911 -End of Item 0239 - -Begin of Item 023A - Format 0 - srcBegin = F064 - srcEnd = F07E - destBegin = 992F -End of Item 023A - -Begin of Item 023B - Format 0 - srcBegin = F080 - srcEnd = F089 - destBegin = 994A -End of Item 023B - -Begin of Item 023C - Format 0 - srcBegin = F08A - srcEnd = F096 - destBegin = 9956 -End of Item 023C - -Begin of Item 023D - Format 0 - srcBegin = F0D0 - srcEnd = F0D6 - destBegin = 9E66 -End of Item 023D - -Begin of Item 023E - Format 0 - srcBegin = F142 - srcEnd = F14C - destBegin = 999A -End of Item 023E - -Begin of Item 023F - Format 0 - srcBegin = F14F - srcEnd = F17E - destBegin = 99A9 -End of Item 023F - -Begin of Item 0240 - Format 0 - srcBegin = F180 - srcEnd = F1A0 - destBegin = 99D9 -End of Item 0240 - -Begin of Item 0241 - Format 0 - srcBegin = F240 - srcEnd = F27E - destBegin = 99FA -End of Item 0241 - -Begin of Item 0242 - Format 0 - srcBegin = F280 - srcEnd = F2A0 - destBegin = 9A39 -End of Item 0242 - -Begin of Item 0243 - Format 0 - srcBegin = F340 - srcEnd = F351 - destBegin = 9A5A -End of Item 0243 - -Begin of Item 0244 - Format 0 - srcBegin = F35B - srcEnd = F361 - destBegin = 9AA9 -End of Item 0244 - -Begin of Item 0245 - Format 0 - srcBegin = F38D - srcEnd = F395 - destBegin = 9AF0 -End of Item 0245 - -Begin of Item 0246 - Format 0 - srcBegin = F397 - srcEnd = F39D - destBegin = 9AFC -End of Item 0246 - -Begin of Item 0247 - Format 0 - srcBegin = F441 - srcEnd = F446 - destBegin = 9B09 -End of Item 0247 - -Begin of Item 0248 - Format 0 - srcBegin = F44A - srcEnd = F454 - destBegin = 9B14 -End of Item 0248 - -Begin of Item 0249 - Format 0 - srcBegin = F458 - srcEnd = F462 - destBegin = 9B24 -End of Item 0249 - -Begin of Item 024A - Format 0 - srcBegin = F465 - srcEnd = F46C - destBegin = 9B33 -End of Item 024A - -Begin of Item 024B - Format 0 - srcBegin = F479 - srcEnd = F47E - destBegin = 9B55 -End of Item 024B - -Begin of Item 024C - Format 0 - srcBegin = F480 - srcEnd = F4A0 - destBegin = 9B5B -End of Item 024C - -Begin of Item 024D - Format 0 - srcBegin = F540 - srcEnd = F57E - destBegin = 9B7C -End of Item 024D - -Begin of Item 024E - Format 0 - srcBegin = F580 - srcEnd = F5A0 - destBegin = 9BBB -End of Item 024E - -Begin of Item 024F - Format 0 - srcBegin = F640 - srcEnd = F67E - destBegin = 9BDC -End of Item 024F - -Begin of Item 0250 - Format 0 - srcBegin = F680 - srcEnd = F6A0 - destBegin = 9C1B -End of Item 0250 - -Begin of Item 0251 - Format 0 - srcBegin = F6B5 - srcEnd = F6BA - destBegin = 9F85 -End of Item 0251 - -Begin of Item 0252 - Format 0 - srcBegin = F6DF - srcEnd = F6E4 - destBegin = 9C9E -End of Item 0252 - -Begin of Item 0253 - Format 0 - srcBegin = F6ED - srcEnd = F6F4 - destBegin = 9CB0 -End of Item 0253 - -Begin of Item 0254 - Format 0 - srcBegin = F740 - srcEnd = F77E - destBegin = 9C3C -End of Item 0254 - -Begin of Item 0255 - Format 0 - srcBegin = F840 - srcEnd = F87E - destBegin = 9CE3 -End of Item 0255 - -Begin of Item 0256 - Format 0 - srcBegin = F880 - srcEnd = F8A0 - destBegin = 9D22 -End of Item 0256 - -Begin of Item 0257 - Format 0 - srcBegin = F940 - srcEnd = F97E - destBegin = 9D43 -End of Item 0257 - -Begin of Item 0258 - Format 0 - srcBegin = F980 - srcEnd = F9A0 - destBegin = 9D82 -End of Item 0258 - -Begin of Item 0259 - Format 0 - srcBegin = FA40 - srcEnd = FA7E - destBegin = 9DA3 -End of Item 0259 - -Begin of Item 025A - Format 0 - srcBegin = FA80 - srcEnd = FAA0 - destBegin = 9DE2 -End of Item 025A - -Begin of Item 025B - Format 0 - srcBegin = FB40 - srcEnd = FB5B - destBegin = 9E03 -End of Item 025B - -Begin of Item 025C - Format 0 - srcBegin = FB74 - srcEnd = FB7D - destBegin = 9E74 -End of Item 025C - -Begin of Item 025D - Format 0 - srcBegin = FB87 - srcEnd = FB8C - destBegin = 9E8C -End of Item 025D - -Begin of Item 025E - Format 0 - srcBegin = FB8D - srcEnd = FB95 - destBegin = 9E94 -End of Item 025E - -Begin of Item 025F - Format 0 - srcBegin = FB97 - srcEnd = FB9C - destBegin = 9EA0 -End of Item 025F - -Begin of Item 0260 - Format 0 - srcBegin = FC40 - srcEnd = FC48 - destBegin = 9EAB -End of Item 0260 - -Begin of Item 0261 - Format 0 - srcBegin = FC6D - srcEnd = FC75 - destBegin = 9EF0 -End of Item 0261 - -Begin of Item 0262 - Format 0 - srcBegin = FC78 - srcEnd = FC7E - destBegin = 9EFF -End of Item 0262 - -Begin of Item 0263 - Format 0 - srcBegin = FC8D - srcEnd = FC92 - destBegin = 9F1A -End of Item 0263 - -Begin of Item 0264 - Format 0 - srcBegin = FC94 - srcEnd = FC9C - destBegin = 9F23 -End of Item 0264 - -Begin of Item 0265 - Format 0 - srcBegin = FD4D - srcEnd = FD57 - destBegin = 9F45 -End of Item 0265 - -Begin of Item 0266 - Format 0 - srcBegin = FD58 - srcEnd = FD7E - destBegin = 9F52 -End of Item 0266 - -Begin of Item 0267 - Format 0 - srcBegin = FD80 - srcEnd = FD85 - destBegin = 9F79 -End of Item 0267 - -Begin of Item 0268 - Format 0 - srcBegin = FD88 - srcEnd = FD93 - destBegin = 9F8D -End of Item 0268 - -Begin of Item 0269 - Format 0 - srcBegin = FE50 - srcEnd = FE7E - destBegin = E815 -End of Item 0269 - -Begin of Item 026A - Format 0 - srcBegin = FE80 - srcEnd = FEA0 - destBegin = E844 -End of Item 026A - -Begin of Item 026B - Format 1 - srcBegin = 8140 - srcEnd = 816B - mappingOffset = 0000 - Mapping = - 4E02 4E04 4E05 4E06 4E0F 4E12 4E17 4E1F - 4E20 4E21 4E23 4E26 4E29 4E2E 4E2F 4E31 - 4E33 4E35 4E37 4E3C 4E40 4E41 4E42 4E44 - 4E46 4E4A 4E51 4E55 4E57 4E5A 4E5B 4E62 - 4E63 4E64 4E65 4E67 4E68 FFFD FFFD FFFD - FFFD FFFD FFFD 4E72 -End of Item 026B - -Begin of Item 026C - Format 1 - srcBegin = 817D - srcEnd = 81FE - mappingOffset = 002C - Mapping = - 4E87 4E8A FFFD 4E90 4E96 4E97 4E99 4E9C - 4E9D 4E9E 4EA3 4EAA 4EAF 4EB0 4EB1 4EB4 - 4EB6 4EB7 4EB8 4EB9 4EBC 4EBD 4EBE 4EC8 - 4ECC 4ECF 4ED0 4ED2 4EDA 4EDB 4EDC 4EE0 - 4EE2 4EE6 4EE7 4EE9 4EED 4EEE 4EEF 4EF1 - 4EF4 4EF8 4EF9 4EFA 4EFC 4EFE 4F00 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 4F0B 4F0C - 4F12 4F13 4F14 4F15 4F16 4F1C 4F1D 4F21 - 4F23 4F28 4F29 4F2C 4F2D 4F2E 4F31 4F33 - 4F35 4F37 4F39 4F3B 4F3E 4F3F 4F40 4F41 - 4F42 4F44 4F45 FFFD FFFD FFFD FFFD FFFD - FFFD 4F52 4F54 4F56 4F61 4F62 4F66 4F68 - 4F6A 4F6B 4F6D 4F6E 4F71 4F72 4F75 4F77 - 4F78 4F79 4F7A 4F7D 4F80 4F81 4F82 4F85 - 4F86 4F87 4F8A 4F8C 4F8E 4F90 4F92 4F93 - 4F95 4F96 4F98 4F99 4F9A 4F9C 4F9E 4F9F - 4FA1 4FA2 -End of Item 026C - -Begin of Item 026D - Format 1 - srcBegin = 8240 - srcEnd = 8272 - mappingOffset = 00AE - Mapping = - 4FA4 4FAB 4FAD 4FB0 4FB1 4FB2 4FB3 4FB4 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 4FC0 4FC1 4FC2 4FC6 4FC7 4FC8 4FC9 - 4FCB 4FCC 4FCD 4FD2 4FD3 4FD4 4FD5 4FD6 - 4FD9 4FDB 4FE0 4FE2 4FE4 4FE5 4FE7 4FEB - 4FEC 4FF0 4FF2 4FF4 4FF5 4FF6 4FF7 4FF9 - 4FFB 4FFC 4FFD -End of Item 026D - -Begin of Item 026E - Format 1 - srcBegin = 8280 - srcEnd = 8290 - mappingOffset = 00E1 - Mapping = - 500B 500E 5010 5011 5013 5015 5016 5017 - 501B 501D 501E 5020 5022 5023 5024 5027 - 502B -End of Item 026E - -Begin of Item 026F - Format 1 - srcBegin = 829C - srcEnd = 82B2 - mappingOffset = 00F2 - Mapping = - 503B 503D 503F 5040 5041 5042 5044 5045 - 5046 5049 504A 504B 504D 5050 5051 5052 - 5053 5054 5056 5057 5058 5059 505B -End of Item 026F - -Begin of Item 0270 - Format 1 - srcBegin = 82CA - srcEnd = 82D8 - mappingOffset = 0109 - Mapping = - 5078 5079 507A 507C 507D 5081 5082 5083 - 5084 5086 5087 5089 508A 508B 508C -End of Item 0270 - -Begin of Item 0271 - Format 1 - srcBegin = 82EE - srcEnd = 82FE - mappingOffset = 0118 - Mapping = - 50A4 50A6 50AA 50AB 50AD 50AE 50AF 50B0 - 50B1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 50BC -End of Item 0271 - -Begin of Item 0272 - Format 1 - srcBegin = 8358 - srcEnd = 835A - mappingOffset = 0129 - Mapping = - 50D7 50D8 50D9 -End of Item 0272 - -Begin of Item 0273 - Format 1 - srcBegin = 8366 - srcEnd = 8381 - mappingOffset = 012C - Mapping = - 50E8 50E9 50EA 50EB 50EF 50F0 50F1 50F2 - 50F4 50F6 50F7 50F8 50F9 50FA FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5108 FFFD 5109 510A -End of Item 0273 - -Begin of Item 0274 - Format 1 - srcBegin = 83B3 - srcEnd = 83F8 - mappingOffset = 0148 - Mapping = - 5142 5147 514A 514C 514E 514F 5150 5152 - 5153 5157 5158 5159 515B 515D 515E 515F - 5160 5161 5163 5164 5166 5167 5169 516A - 516F 5172 517A 517E 517F 5183 5184 5186 - 5187 518A 518B 518E 518F 5190 5191 5193 - 5194 5198 519A 519D 519E 519F 51A1 51A3 - 51A6 51A7 51A8 51A9 51AA 51AD 51AE 51B4 - 51B8 51B9 51BA 51BE 51BF 51C1 51C2 51C3 - 51C5 51C8 51CA 51CD 51CE 51D0 -End of Item 0274 - -Begin of Item 0275 - Format 1 - srcBegin = 8440 - srcEnd = 84DE - mappingOffset = 018E - Mapping = - 51D8 51D9 51DA 51DC 51DE 51DF 51E2 51E3 - FFFD FFFD FFFD FFFD FFFD FFFD 51EC 51EE - 51F1 51F2 51F4 51F7 51FE 5204 5205 5209 - 520B 520C 520F 5210 5213 5214 5215 521C - 521E 521F 5221 5222 5223 5225 5226 5227 - 522A 522C 522F 5231 5232 5234 5235 523C - 523E FFFD FFFD FFFD FFFD FFFD FFFD 524B - 524E 524F 5252 5253 5255 5257 5258 FFFD - 5259 525A 525B 525D 525F 5260 5262 5263 - 5264 5266 5268 526B 526C 526D 526E 5270 - 5271 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 527E 5280 5283 5284 5285 - 5286 5287 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5291 5292 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 529C 52A4 52A5 52A6 52A7 52AE - 52AF 52B0 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 52C0 52C1 52C2 52C4 - 52C5 52C6 52C8 52CA 52CC 52CD 52CE 52CF - 52D1 52D3 52D4 52D5 52D7 FFFD FFFD FFFD - FFFD FFFD FFFD 52E0 52E1 52E2 52E3 -End of Item 0275 - -Begin of Item 0276 - Format 1 - srcBegin = 84F2 - srcEnd = 84FE - mappingOffset = 022D - Mapping = - 52FB 52FC 52FD 5301 5302 5303 5304 5307 - 5309 530A 530B 530C 530E -End of Item 0276 - -Begin of Item 0277 - Format 1 - srcBegin = 8540 - srcEnd = 85FE - mappingOffset = 023A - Mapping = - 5311 5312 5313 5314 5318 531B 531C 531E - 531F 5322 5324 5325 5327 5328 5329 532B - 532C 532D FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 533C 533D 5340 5342 - 5344 5346 534B 534C 534D 5350 5354 5358 - 5359 535B 535D 5365 5368 536A 536C 536D - 5372 5376 5379 537B 537C 537D 537E 5380 - 5381 5383 5387 5388 538A 538E 538F FFFD - 5390 5391 5392 5393 5394 5396 5397 5399 - 539B 539C 539E 53A0 53A1 53A4 53A7 53AA - 53AB 53AC 53AD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 53B7 53B8 53B9 53BA 53BC 53BD - 53BE 53C0 53C3 53C4 53C5 53C6 53C7 53CE - 53CF 53D0 53D2 53D3 53D5 53DA 53DC 53DD - 53DE 53E1 53E2 53E7 53F4 53FA 53FE 53FF - 5400 5402 5405 5407 540B 5414 5418 5419 - 541A 541C 5422 5424 5425 542A 5430 5433 - 5436 5437 543A 543D 543F 5441 5442 5444 - 5445 5447 5449 544C 544D 544E 544F 5451 - 545A 545D 545E 545F 5460 5461 5463 5465 - 5467 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5474 5479 547A 547E 547F 5481 5483 - 5485 5487 5488 5489 548A 548D 5491 5493 - 5497 5498 549C 549E 549F 54A0 54A1 -End of Item 0277 - -Begin of Item 0278 - Format 1 - srcBegin = 8640 - srcEnd = 86C0 - mappingOffset = 02F9 - Mapping = - 54A2 54A5 54AE 54B0 54B2 54B5 54B6 54B7 - 54B9 54BA 54BC 54BE 54C3 54C5 54CA 54CB - 54D6 54D8 54DB 54E0 54E1 54E2 54E3 54E4 - 54EB 54EC 54EF 54F0 54F1 FFFD FFFD FFFD - FFFD FFFD FFFD 54FB 54FE 5500 5502 5503 - 5504 5505 5508 550A 550B 550C 550D 550E - 5512 5513 FFFD FFFD FFFD FFFD FFFD FFFD - 551C 551D 551E 551F 5521 5525 5526 FFFD - 5528 5529 552B 552D 5532 5534 5535 5536 - 5538 5539 553A 553B 553D 5540 5542 5545 - 5547 5548 554B 554C 554D 554E 554F 5551 - 5552 5553 5554 5557 5558 5559 555A 555B - 555D 555E 555F 5560 5562 5563 5568 5569 - 556B FFFD FFFD FFFD FFFD FFFD FFFD 5579 - 557A 557D 557F 5585 5586 558C 558D 558E - 5590 5592 5593 5595 5596 5597 559A 559B - 559E -End of Item 0278 - -Begin of Item 0279 - Format 1 - srcBegin = 86D1 - srcEnd = 86FE - mappingOffset = 037A - Mapping = - 55B2 55B4 55B6 55B8 55BA 55BC 55BF 55C0 - 55C1 55C2 55C3 55C6 55C7 55C8 55CA 55CB - 55CE 55CF 55D0 55D5 55D7 55D8 55D9 55DA - 55DB 55DE 55E0 55E2 55E7 55E9 55ED 55EE - 55F0 55F1 55F4 55F6 55F8 55F9 55FA 55FB - 55FC 55FF 5602 5603 5604 5605 -End of Item 0279 - -Begin of Item 027A - Format 1 - srcBegin = 8740 - srcEnd = 8764 - mappingOffset = 03A8 - Mapping = - 5606 5607 560A 560B 560D FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5619 561A 561C - 561D 5620 5621 5622 5625 5626 5628 5629 - 562A 562B 562E 562F 5630 5633 5635 5637 - 5638 563A 563C 563D 563E -End of Item 027A - -Begin of Item 027B - Format 1 - srcBegin = 8771 - srcEnd = 878F - mappingOffset = 03CD - Mapping = - 564F 5650 5651 5652 5653 5655 5656 565A - 565B 565D 565E 565F 5660 5661 FFFD 5663 - 5665 5666 5667 566D 566E 566F 5670 5672 - 5673 5674 5675 5677 5678 5679 567A -End of Item 027B - -Begin of Item 027C - Format 1 - srcBegin = 879F - srcEnd = 87A1 - mappingOffset = 03EC - Mapping = - 5690 5691 5692 -End of Item 027C - -Begin of Item 027D - Format 1 - srcBegin = 87C3 - srcEnd = 87C6 - mappingOffset = 03EF - Mapping = - 56B8 56B9 56BA 56BB -End of Item 027D - -Begin of Item 027E - Format 1 - srcBegin = 87DD - srcEnd = 87F7 - mappingOffset = 03F3 - Mapping = - 56D5 56D6 56D8 56D9 56DC 56E3 FFFD FFFD - FFFD FFFD FFFD FFFD 56EC 56EE 56EF 56F2 - 56F3 56F6 56F7 56F8 56FB 56FC 5700 5701 - 5702 5705 5707 -End of Item 027E - -Begin of Item 027F - Format 1 - srcBegin = 884A - srcEnd = 889F - mappingOffset = 040E - Mapping = - 571D 571E 5720 5721 5722 5724 5725 5726 - 5727 572B 5731 5732 5734 5735 5736 5737 - 5738 573C 573D 573F 5741 5743 5744 5745 - 5746 5748 5749 574B 5752 5753 5754 5755 - 5756 5758 5759 5762 5763 5765 5767 576C - 576E 5770 5771 5772 5774 5775 5778 5779 - 577A 577D 577E 577F 5780 FFFD 5781 5787 - 5788 5789 578A 578D 578E 578F 5790 5791 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 579C - 579D 579E 579F 57A5 57A8 57AA 57AC 57AF - 57B0 57B1 57B3 57B5 57B6 57B7 -End of Item 027F - -Begin of Item 0280 - Format 1 - srcBegin = 88B0 - srcEnd = 88F6 - mappingOffset = 0464 - Mapping = - 57CC 57CD 57D0 57D1 57D3 57D6 57D7 57DB - 57DC 57DE 57E1 57E2 57E3 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 57EE 57F0 57F1 - 57F2 57F3 57F5 57F6 57F7 57FB 57FC 57FE - 57FF 5801 5803 5804 5805 5808 5809 580A - 580C 580E 580F 5810 5812 5813 5814 5816 - 5817 5818 581A 581B 581C 581D 581F 5822 - 5823 5825 5826 5827 5828 5829 582B 582C - 582D 582E 582F 5831 5832 5833 5834 -End of Item 0280 - -Begin of Item 0281 - Format 1 - srcBegin = 894D - srcEnd = 8964 - mappingOffset = 04AB - Mapping = - 584E 584F 5850 5852 5853 5855 5856 5857 - 5859 585A 585B 585C 585D FFFD FFFD FFFD - FFFD FFFD FFFD 5866 5867 5868 5869 586A -End of Item 0281 - -Begin of Item 0282 - Format 1 - srcBegin = 8976 - srcEnd = 898C - mappingOffset = 04C3 - Mapping = - 587F 5882 5884 5886 5887 5888 588A 588B - 588C FFFD 588D 588E 588F 5890 5891 5894 - 5895 5896 5897 5898 589B 589C 589D -End of Item 0282 - -Begin of Item 0283 - Format 1 - srcBegin = 89A7 - srcEnd = 89AD - mappingOffset = 04DA - Mapping = - 58BD 58BE 58BF 58C0 58C2 58C3 58C4 -End of Item 0283 - -Begin of Item 0284 - Format 1 - srcBegin = 89B9 - srcEnd = 89BB - mappingOffset = 04E1 - Mapping = - 58D2 58D3 58D4 -End of Item 0284 - -Begin of Item 0285 - Format 1 - srcBegin = 89D0 - srcEnd = 89FE - mappingOffset = 04E4 - Mapping = - 58ED 58EF 58F1 58F2 58F4 58F5 58F7 58F8 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5903 5905 5906 5908 5909 590A 590B 590C - 590E 5910 5911 5912 5913 5917 5918 591B - 591D 591E 5920 5921 5922 5923 5926 5928 - 592C 5930 5932 5933 5935 5936 593B -End of Item 0285 - -Begin of Item 0286 - Format 1 - srcBegin = 8A40 - srcEnd = 8A55 - mappingOffset = 0513 - Mapping = - 593D 593E 593F 5940 5943 5945 5946 594A - 594C 594D 5950 5952 5953 5959 595B 595C - 595D 595E 595F 5961 5963 5964 -End of Item 0286 - -Begin of Item 0287 - Format 1 - srcBegin = 8A63 - srcEnd = 8AAA - mappingOffset = 0529 - Mapping = - 5975 5977 597A 597B 597C 597E 597F 5980 - 5985 5989 598B 598C 598E 598F 5990 5991 - 5994 5995 5998 599A 599B 599C 599D 599F - 59A0 59A1 59A2 59A6 FFFD 59A7 59AC 59AD - 59B0 59B1 FFFD FFFD FFFD FFFD FFFD FFFD - 59BA 59BC 59BD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 59C7 59C8 59C9 59CC 59CD 59CE - 59CF 59D5 59D6 59D9 59DB 59DE 59DF 59E0 - 59E1 59E2 59E4 59E6 59E7 59E9 59EA 59EB -End of Item 0287 - -Begin of Item 0288 - Format 1 - srcBegin = 8AB7 - srcEnd = 8AF8 - mappingOffset = 0571 - Mapping = - 59FA 59FC 59FD 59FE 5A00 5A02 5A0A 5A0B - 5A0D 5A0E 5A0F 5A10 5A12 5A14 5A15 5A16 - 5A17 5A19 5A1A 5A1B 5A1D 5A1E 5A21 5A22 - 5A24 5A26 5A27 5A28 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5A33 5A35 5A37 5A38 5A39 - 5A3A 5A3B 5A3D 5A3E 5A3F 5A41 5A42 5A43 - 5A44 5A45 5A47 5A48 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 5A56 5A57 - 5A58 5A59 -End of Item 0288 - -Begin of Item 0289 - Format 1 - srcBegin = 8B40 - srcEnd = 8B55 - mappingOffset = 05B3 - Mapping = - 5A61 5A63 5A64 5A65 5A66 5A68 5A69 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 5A78 5A79 5A7B 5A7C 5A7D 5A7E -End of Item 0289 - -Begin of Item 028A - Format 1 - srcBegin = 8B7D - srcEnd = 8BAF - mappingOffset = 05C9 - Mapping = - 5AAB 5AAC FFFD 5AAD 5AAE 5AAF 5AB0 5AB1 - 5AB4 5AB6 5AB7 5AB9 5ABA 5ABB 5ABC 5ABD - 5ABF 5AC0 FFFD FFFD FFFD FFFD FFFD FFFD - 5ACA 5ACB 5ACD 5ACE 5ACF 5AD0 5AD1 5AD3 - 5AD5 5AD7 5AD9 5ADA 5ADB 5ADD 5ADE 5ADF - 5AE2 5AE4 5AE5 5AE7 5AE8 5AEA 5AEC 5AED - 5AEE 5AEF 5AF0 -End of Item 028A - -Begin of Item 028B - Format 1 - srcBegin = 8BED - srcEnd = 8BEF - mappingOffset = 05FC - Mapping = - 5B33 5B35 5B36 -End of Item 028B - -Begin of Item 028C - Format 1 - srcBegin = 8C48 - srcEnd = 8CFE - mappingOffset = 05FF - Mapping = - 5B52 5B56 5B5E 5B60 5B61 5B67 5B68 5B6B - 5B6D 5B6E 5B6F 5B72 5B74 5B76 5B77 5B78 - 5B79 5B7B 5B7C 5B7E 5B7F 5B82 5B86 5B8A - 5B8D 5B8E 5B90 5B91 5B92 5B94 5B96 5B9F - 5BA7 5BA8 5BA9 5BAC 5BAD 5BAE 5BAF 5BB1 - 5BB2 5BB7 5BBA 5BBB 5BBC 5BC0 5BC1 5BC3 - 5BC8 5BC9 5BCA 5BCB 5BCD 5BCE 5BCF FFFD - 5BD1 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5BE0 5BE2 5BE3 5BE6 5BE7 5BE9 - 5BEA 5BEB 5BEC 5BED 5BEF FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5BFD 5BFE 5C00 5C02 - 5C03 5C05 5C07 5C08 5C0B 5C0C 5C0D 5C0E - 5C10 5C12 5C13 5C17 5C19 5C1B 5C1E 5C1F - 5C20 5C21 5C23 5C26 5C28 5C29 5C2A 5C2B - 5C2D 5C2E 5C2F 5C30 5C32 5C33 5C35 5C36 - 5C37 5C43 5C44 5C46 5C47 5C4C 5C4D 5C52 - 5C53 5C54 5C56 5C57 5C58 5C5A 5C5B 5C5C - 5C5D 5C5F 5C62 5C64 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5C70 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 5C7B 5C7C 5C7D 5C7E 5C80 - 5C83 5C84 5C85 5C86 5C87 5C89 5C8A 5C8B - 5C8E 5C8F 5C92 5C93 5C95 5C9D 5C9E 5C9F - 5CA0 5CA1 5CA4 5CA5 5CA6 5CA7 5CA8 -End of Item 028C - -Begin of Item 028D - Format 1 - srcBegin = 8D40 - srcEnd = 8D4E - mappingOffset = 06B6 - Mapping = - 5CAA 5CAE 5CAF 5CB0 5CB2 5CB4 5CB6 5CB9 - 5CBA 5CBB 5CBC 5CBE 5CC0 5CC2 5CC3 -End of Item 028D - -Begin of Item 028E - Format 1 - srcBegin = 8D68 - srcEnd = 8DA3 - mappingOffset = 06C5 - Mapping = - 5CE2 5CE3 5CE7 5CE9 5CEB 5CEC 5CEE 5CEF - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5CFC 5CFD 5CFE 5CFF 5D00 FFFD - 5D01 5D04 5D05 FFFD FFFD FFFD FFFD FFFD - FFFD 5D0F 5D10 5D11 5D12 5D13 5D15 5D17 - 5D18 5D19 5D1A 5D1C 5D1D 5D1F 5D20 5D21 - 5D22 5D23 5D25 5D28 5D2A 5D2B 5D2C 5D2F - 5D30 5D31 5D32 5D33 -End of Item 028E - -Begin of Item 028F - Format 1 - srcBegin = 8DB4 - srcEnd = 8DB5 - mappingOffset = 0701 - Mapping = - 5D48 5D49 -End of Item 028F - -Begin of Item 0290 - Format 1 - srcBegin = 8DC1 - srcEnd = 8DC3 - mappingOffset = 0703 - Mapping = - 5D59 5D5A 5D5C -End of Item 0290 - -Begin of Item 0291 - Format 1 - srcBegin = 8DCF - srcEnd = 8DD5 - mappingOffset = 0706 - Mapping = - 5D6A 5D6D 5D6E 5D70 5D71 5D72 5D73 -End of Item 0291 - -Begin of Item 0292 - Format 1 - srcBegin = 8DF9 - srcEnd = 8DFE - mappingOffset = 070D - Mapping = - 5D9A 5D9B 5D9C 5D9E 5D9F 5DA0 -End of Item 0292 - -Begin of Item 0293 - Format 1 - srcBegin = 8E77 - srcEnd = 8EAE - mappingOffset = 0713 - Mapping = - 5DDC 5DDF 5DE0 5DE3 5DE4 5DEA 5DEC 5DED - FFFD 5DF0 5DF5 5DF6 5DF8 5DF9 5DFA 5DFB - 5DFC 5DFF 5E00 5E04 5E07 5E09 5E0A 5E0B - 5E0D 5E0E 5E12 5E13 5E17 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 5E28 5E29 5E2A - 5E2B 5E2C 5E2F 5E30 5E32 5E33 5E34 5E35 - 5E36 5E39 5E3A 5E3E 5E3F 5E40 5E41 5E43 -End of Item 0293 - -Begin of Item 0294 - Format 1 - srcBegin = 8EBC - srcEnd = 8EC4 - mappingOffset = 074B - Mapping = - 5E56 5E57 5E58 5E59 5E5A 5E5C 5E5D 5E5F - 5E60 -End of Item 0294 - -Begin of Item 0295 - Format 1 - srcBegin = 8ED4 - srcEnd = 8EF7 - mappingOffset = 0754 - Mapping = - 5E75 5E77 5E79 5E7E 5E81 5E82 5E83 5E85 - 5E88 5E89 5E8C 5E8D 5E8E 5E92 5E98 5E9B - 5E9D 5EA1 5EA2 5EA3 5EA4 5EA8 5EA9 5EAA - 5EAB 5EAC 5EAE 5EAF 5EB0 5EB1 5EB2 5EB4 - 5EBA 5EBB 5EBC 5EBD -End of Item 0295 - -Begin of Item 0296 - Format 1 - srcBegin = 8F40 - srcEnd = 8F4E - mappingOffset = 0778 - Mapping = - 5EC6 5EC7 5EC8 FFFD FFFD FFFD FFFD FFFD - FFFD 5ED4 5ED5 5ED7 5ED8 5ED9 5EDA -End of Item 0296 - -Begin of Item 0297 - Format 1 - srcBegin = 8F5B - srcEnd = 8F8F - mappingOffset = 0787 - Mapping = - 5EE9 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 5EF5 5EF8 5EF9 5EFB 5EFC 5EFD - 5F05 5F06 5F07 5F09 5F0C 5F0D 5F0E 5F10 - 5F12 5F14 5F16 5F19 5F1A 5F1C 5F1D 5F1E - 5F21 5F22 5F23 5F24 FFFD 5F28 5F2B 5F2C - 5F2E 5F30 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 5F3B 5F3D 5F3E 5F3F -End of Item 0297 - -Begin of Item 0298 - Format 1 - srcBegin = 8F9F - srcEnd = 8FFE - mappingOffset = 07BC - Mapping = - 5F51 5F54 5F59 5F5A 5F5B 5F5C 5F5E 5F5F - 5F60 5F63 5F65 5F67 5F68 5F6B 5F6E 5F6F - 5F72 5F74 5F75 5F76 5F78 5F7A 5F7D 5F7E - 5F7F 5F83 5F86 5F8D 5F8E 5F8F 5F91 5F93 - 5F94 5F96 5F9A 5F9B 5F9D 5F9E 5F9F 5FA0 - FFFD FFFD FFFD FFFD FFFD FFFD 5FA9 5FAB - 5FAC FFFD FFFD FFFD FFFD FFFD FFFD 5FB6 - 5FB8 5FB9 5FBA 5FBB 5FBE 5FBF 5FC0 5FC1 - 5FC2 5FC7 5FC8 5FCA 5FCB 5FCE 5FD3 5FD4 - 5FD5 5FDA 5FDB 5FDC 5FDE 5FDF 5FE2 5FE3 - 5FE5 5FE6 5FE8 5FE9 5FEC 5FEF 5FF0 5FF2 - 5FF3 5FF4 5FF6 5FF7 5FF9 5FFA 5FFC 6007 -End of Item 0298 - -Begin of Item 0299 - Format 1 - srcBegin = 9040 - srcEnd = 90E4 - mappingOffset = 081C - Mapping = - 6008 6009 600B 600C 6010 6011 6013 6017 - 6018 601A 601E 601F 6022 6023 6024 602C - 602D 602E 6030 6031 6032 6033 6034 6036 - 6037 6038 6039 603A 603D 603E 6040 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 604C 604E - 604F 6051 6053 6054 6056 6057 6058 605B - 605C 605E 605F 6060 6061 6065 6066 606E - 6071 6072 6074 6075 6077 607E 6080 FFFD - 6081 6082 6085 6086 6087 6088 608A 608B - 608E 608F 6090 6091 6093 6095 6097 6098 - 6099 609C 609E 60A1 60A2 60A4 60A5 60A7 - 60A9 60AA 60AE 60B0 60B3 60B5 60B6 60B7 - 60B9 60BA FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 60C7 60C8 60C9 60CC 60CD 60CE - 60CF 60D0 60D2 60D3 60D4 60D6 60D7 60D9 - 60DB 60DE 60E1 60E2 60E3 60E4 60E5 60EA - 60F1 60F2 60F5 60F7 60F8 60FB 60FC 60FD - 60FE 60FF 6102 6103 6104 6105 6107 610A - 610B 610C 6110 6111 6112 6113 6114 6116 - 6117 6118 6119 611B 611C 611D 611E 6121 - 6122 6125 6128 6129 612A -End of Item 0299 - -Begin of Item 029A - Format 1 - srcBegin = 9140 - srcEnd = 9163 - mappingOffset = 08C1 - Mapping = - 6147 6149 614B 614D 614F 6150 6152 6153 - 6154 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 615E 615F 6160 6161 6163 6164 6165 6166 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6171 - 6172 6173 6174 6176 -End of Item 029A - -Begin of Item 029B - Format 1 - srcBegin = 9177 - srcEnd = 917E - mappingOffset = 08E5 - Mapping = - 618C 618D 618F 6190 6191 6192 6193 6195 -End of Item 029B - -Begin of Item 029C - Format 1 - srcBegin = 9190 - srcEnd = 9191 - mappingOffset = 08ED - Mapping = - 61AA 61AB -End of Item 029C - -Begin of Item 029D - Format 1 - srcBegin = 91A2 - srcEnd = 91B0 - mappingOffset = 08EF - Mapping = - 61BF 61C0 61C1 61C3 61C4 61C5 61C6 61C7 - 61C9 61CC 61CD 61CE 61CF 61D0 61D3 -End of Item 029D - -Begin of Item 029E - Format 1 - srcBegin = 91DF - srcEnd = 91FE - mappingOffset = 08FE - Mapping = - 6207 6209 6213 6214 6219 621C 621D 621E - 6220 6223 6226 6227 6228 6229 622B 622D - 622F 6230 6231 6232 6235 6236 6238 6239 - 623A 623B 623C 6242 6244 6245 6246 624A -End of Item 029E - -Begin of Item 029F - Format 1 - srcBegin = 9240 - srcEnd = 92FE - mappingOffset = 091E - Mapping = - 624F 6250 6255 6256 6257 6259 625A FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6264 6265 - 6268 6271 6272 6274 6275 6277 6278 627A - 627B 627D 6281 6282 6283 6285 6286 6287 - 6288 FFFD FFFD FFFD FFFD FFFD FFFD 6294 - 6299 629C 629D 629E 62A3 62A6 62A7 62A9 - 62AA 62AD 62AE 62AF 62B0 62B2 62B3 62B4 - 62B6 62B7 62B8 62BA 62BE 62C0 62C1 FFFD - 62C3 62CB 62CF 62D1 62D5 62DD 62DE 62E0 - 62E1 62E4 62EA 62EB 62F0 62F2 62F5 62F8 - 62F9 62FA 62FB 6300 6303 6304 6305 6306 - 630A 630B 630C 630D 630F 6310 6312 6313 - 6314 6315 6317 6318 6319 631C 6326 6327 - 6329 632C 632D 632E 6330 6331 FFFD FFFD - FFFD FFFD FFFD FFFD 633B 633C 633E 633F - 6340 6341 6344 6347 6348 634A 6351 6352 - 6353 6354 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6360 6364 6365 6366 6368 636A - 636B 636C 636F 6370 6372 6373 6374 6375 - 6378 6379 637C 637D 637E 637F 6381 6383 - 6384 6385 6386 638B 638D 6391 6393 6394 - 6395 6397 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 63A1 63A4 63A6 63AB 63AF 63B1 63B2 - 63B5 63B6 63B9 63BB 63BD 63BF 63C0 -End of Item 029F - -Begin of Item 02A0 - Format 1 - srcBegin = 9340 - srcEnd = 93B2 - mappingOffset = 09DD - Mapping = - 63C1 63C2 63C3 63C5 63C7 63C8 63CA 63CB - 63CC 63D1 63D3 63D4 63D5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 63DF 63E2 63E4 63E5 - 63E6 63E7 63E8 63EB 63EC 63EE 63EF 63F0 - 63F1 63F3 63F5 63F7 63F9 63FA 63FB 63FC - 63FE 6403 6404 6406 6407 6408 6409 640A - 640D 640E 6411 6412 FFFD FFFD FFFD FFFD - FFFD FFFD 641D 641F 6422 6423 6424 FFFD - 6425 6427 6428 6429 642B FFFD FFFD FFFD - FFFD FFFD FFFD 6435 6436 6437 6438 6439 - 643B 643C 643E 6440 6442 6443 6449 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 6453 6455 - 6456 6457 6459 645A 645B 645C 645D FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6468 - 646A 646B 646C -End of Item 02A0 - -Begin of Item 02A1 - Format 1 - srcBegin = 93C4 - srcEnd = 93FE - mappingOffset = 0A50 - Mapping = - 6483 6486 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6493 6494 6497 6498 649A - 649B 649C 649D 649F 64A0 64A1 64A2 64A3 - 64A5 64A6 64A7 64A8 64AA 64AB 64AF 64B1 - 64B2 64B3 64B4 64B6 64B9 64BB 64BD 64BE - 64BF 64C1 64C3 64C4 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 64CF 64D1 64D3 64D4 64D5 - 64D6 64D9 64DA -End of Item 02A1 - -Begin of Item 02A2 - Format 1 - srcBegin = 9440 - srcEnd = 9447 - mappingOffset = 0A8B - Mapping = - 64DB 64DC 64DD 64DF 64E0 64E1 64E3 64E5 -End of Item 02A2 - -Begin of Item 02A3 - Format 1 - srcBegin = 9471 - srcEnd = 94B4 - mappingOffset = 0A93 - Mapping = - 6513 6514 6515 6516 6517 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6522 - 6523 6524 6526 6527 6528 6529 652A 652C - 652D 6530 6531 6532 6533 6537 653A 653C - 653D 6540 6541 6542 6543 6544 6546 6547 - 654A 654B 654D 654E 6550 6552 6553 6554 - 6557 6558 655A 655C 655F 6560 6561 6564 - 6565 6567 6568 6569 656A 656D 656E 656F - 6571 6573 6575 6576 -End of Item 02A3 - -Begin of Item 02A4 - Format 1 - srcBegin = 94C4 - srcEnd = 94FE - mappingOffset = 0AD7 - Mapping = - 6588 6589 658A 658D 658E 658F 6592 6594 - 6595 6596 6598 659A 659D 659E 65A0 65A2 - 65A3 65A6 65A8 65AA 65AC 65AE FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 65BA 65BB - 65BE 65BF 65C0 65C2 65C7 65C8 65C9 65CA - 65CD 65D0 65D1 65D3 65D4 65D5 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 65E1 65E3 - 65E4 65EA 65EB -End of Item 02A4 - -Begin of Item 02A5 - Format 1 - srcBegin = 9540 - srcEnd = 95C9 - mappingOffset = 0B12 - Mapping = - 65F2 65F3 65F4 65F5 65F8 65F9 65FB 65FC - 65FD 65FE 65FF 6601 6604 6605 6607 6608 - 6609 660B 660D 6610 6611 6612 6616 6617 - 6618 661A 661B 661C 661E 6621 6622 6623 - 6624 6626 6629 662A 662B 662C 662E 6630 - 6632 6633 6637 6638 6639 663A 663B 663D - 663F 6640 6642 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 664D 664E 6650 6651 6658 FFFD - 6659 665B 665C 665D 665E 6660 6662 6663 - 6665 6667 6669 666A 666B 666C 666D 6671 - 6672 6673 6675 6678 6679 667B 667C 667D - 667F 6680 6681 6683 6685 6686 6688 6689 - 668A 668B 668D 668E 668F 6690 6692 6693 - 6694 6695 6698 6699 669A 669B 669C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 66A9 66AA 66AB 66AC 66AD 66AF 66B0 66B1 - 66B2 66B3 66B5 66B6 66B7 66B8 66BA 66BB - 66BC 66BD -End of Item 02A5 - -Begin of Item 02A6 - Format 1 - srcBegin = 95E4 - srcEnd = 95FE - mappingOffset = 0B9C - Mapping = - 66DA FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 66E7 66E8 FFFD FFFD FFFD FFFD FFFD - FFFD 66F1 66F5 66F6 66F8 66FA 66FB 66FD - 6701 6702 6703 -End of Item 02A6 - -Begin of Item 02A7 - Format 1 - srcBegin = 9640 - srcEnd = 96DF - mappingOffset = 0BB7 - Mapping = - 6704 6705 6706 6707 670C 670E 670F 6711 - 6712 6713 6716 6718 6719 671A 671C 671E - FFFD FFFD FFFD FFFD FFFD FFFD 6727 6729 - 672E 6730 6732 6733 6736 6737 6738 6739 - 673B 673C 673E 673F 6741 6744 6745 6747 - 674A 674B 674D 6752 6754 6755 6757 6758 - 6759 675A 675B 675D 6762 6763 6764 6766 - 6767 676B 676C 676E 6771 6774 6776 FFFD - 6778 6779 677A 677B 677D 6780 6782 6783 - 6785 6786 6788 678A 678C 678D 678E 678F - 6791 6792 6793 6794 6796 6799 679B 679F - 67A0 67A1 67A4 67A6 67A9 67AC 67AE 67B1 - 67B2 67B4 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 67C2 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 67D5 67D6 67D7 - 67DB 67DF 67E1 67E3 67E4 67E6 67E7 67E8 - 67EA 67EB 67ED 67EE 67F2 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 67FE 6801 6802 - 6803 6804 6806 680D 6810 6812 6814 6815 - 6818 6819 681A 681B 681C 681E 681F 6820 -End of Item 02A7 - -Begin of Item 02A8 - Format 1 - srcBegin = 96EE - srcEnd = 96F8 - mappingOffset = 0C57 - Mapping = - 6834 6835 6836 683A 683B 683F 6847 684B - 684D 684F 6852 -End of Item 02A8 - -Begin of Item 02A9 - Format 1 - srcBegin = 9740 - srcEnd = 97C0 - mappingOffset = 0C62 - Mapping = - 685C 685D 685E 685F 686A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6875 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6882 - 6884 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6890 6891 6892 6894 6895 6896 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 68A3 68A4 68A5 68A9 68AA 68AB 68AC - 68AE 68B1 68B2 68B4 68B6 68B7 68B8 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 68C1 - FFFD FFFD FFFD FFFD FFFD FFFD 68CA 68CC - 68CE 68CF 68D0 68D1 68D3 68D4 68D6 68D7 - 68D9 68DB 68DC 68DD 68DE 68DF 68E1 68E2 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 68EF 68F2 68F3 68F4 68F6 68F7 - 68F8 68FB 68FD 68FE 68FF 6900 6902 6903 - 6904 6906 6907 6908 6909 690A 690C 690F - 6911 -End of Item 02A9 - -Begin of Item 02AA - Format 1 - srcBegin = 97CD - srcEnd = 97E6 - mappingOffset = 0CE3 - Mapping = - 6921 6922 6923 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 692E 692F 6931 6932 6933 - 6935 6936 6937 6938 693A 693B 693C 693E - 6940 6941 -End of Item 02AA - -Begin of Item 02AB - Format 1 - srcBegin = 97F8 - srcEnd = 97FE - mappingOffset = 0CFD - Mapping = - 6955 6956 6958 6959 695B 695C 695F -End of Item 02AB - -Begin of Item 02AC - Format 1 - srcBegin = 9840 - srcEnd = 9899 - mappingOffset = 0D04 - Mapping = - 6961 6962 6964 6965 6967 6968 6969 696A - 696C 696D 696F 6970 6972 6973 6974 6975 - 6976 697A 697B 697D 697E 697F 6981 6983 - 6985 698A 698B 698C FFFD FFFD FFFD FFFD - FFFD FFFD 6996 6997 6999 699A FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 69A9 69AA 69AC 69AE 69AF 69B0 69B2 69B3 - 69B5 69B6 69B8 69B9 69BA 69BC 69BD FFFD - 69BE 69BF 69C0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 69CB 69CD 69CF 69D1 69D2 - 69D3 FFFD FFFD FFFD FFFD FFFD FFFD 69DC - 69DD 69DE -End of Item 02AC - -Begin of Item 02AD - Format 1 - srcBegin = 98A6 - srcEnd = 98B4 - mappingOffset = 0D5E - Mapping = - 69EE 69EF 69F0 69F1 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 69FE -End of Item 02AD - -Begin of Item 02AE - Format 1 - srcBegin = 98D1 - srcEnd = 98EE - mappingOffset = 0D6D - Mapping = - 6A20 FFFD FFFD FFFD FFFD FFFD FFFD 6A29 - 6A2B 6A2C 6A2D 6A2E 6A30 6A32 6A33 6A34 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6A3F - 6A40 6A41 6A42 6A43 6A45 6A46 -End of Item 02AE - -Begin of Item 02AF - Format 2 - srcBegin = 98FE - destBegin = 6A5A -End of Item 02AF - -Begin of Item 02B0 - Format 1 - srcBegin = 9940 - srcEnd = 9947 - mappingOffset = 0D8B - Mapping = - 6A5C 6A5D 6A5E 6A5F 6A60 6A62 6A63 6A64 -End of Item 02B0 - -Begin of Item 02B1 - Format 1 - srcBegin = 995A - srcEnd = 9970 - mappingOffset = 0D93 - Mapping = - 6A7A 6A7B 6A7D 6A7E 6A7F 6A81 6A82 6A83 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6A8F 6A92 6A93 6A94 6A95 6A96 -End of Item 02B1 - -Begin of Item 02B2 - Format 1 - srcBegin = 9980 - srcEnd = 9982 - mappingOffset = 0DAA - Mapping = - 6AA7 6AA8 6AAA -End of Item 02B2 - -Begin of Item 02B3 - Format 1 - srcBegin = 99F6 - srcEnd = 99F7 - mappingOffset = 0DAD - Mapping = - 6B25 6B26 -End of Item 02B3 - -Begin of Item 02B4 - Format 1 - srcBegin = 9A40 - srcEnd = 9A53 - mappingOffset = 0DAF - Mapping = - 6B2F 6B30 6B31 6B33 6B34 6B35 6B36 6B38 - 6B3B 6B3C 6B3D 6B3F 6B40 6B41 6B42 6B44 - 6B45 6B48 6B4A 6B4B -End of Item 02B4 - -Begin of Item 02B5 - Format 1 - srcBegin = 9A68 - srcEnd = 9A69 - mappingOffset = 0DC3 - Mapping = - 6B68 6B69 -End of Item 02B5 - -Begin of Item 02B6 - Format 1 - srcBegin = 9A78 - srcEnd = 9A8E - mappingOffset = 0DC5 - Mapping = - 6B7A 6B7D 6B7E 6B7F 6B80 6B85 6B88 FFFD - 6B8C 6B8E 6B8F 6B90 6B91 6B94 6B95 6B97 - 6B98 6B99 6B9C 6B9D 6B9E 6B9F 6BA0 -End of Item 02B6 - -Begin of Item 02B7 - Format 1 - srcBegin = 9A9F - srcEnd = 9AFE - mappingOffset = 0DDC - Mapping = - 6BB6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6BC0 6BC3 6BC4 6BC6 6BC7 6BC8 6BC9 6BCA - 6BCC 6BCE 6BD0 6BD1 6BD8 6BDA 6BDC 6BDD - 6BDE 6BDF 6BE0 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6BEC 6BED 6BEE 6BF0 6BF1 - 6BF2 6BF4 6BF6 6BF7 6BF8 6BFA 6BFB 6BFC - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6C08 - 6C09 6C0A 6C0B 6C0C 6C0E 6C12 6C17 6C1C - 6C1D 6C1E 6C20 6C23 6C25 6C2B 6C2C 6C2D - 6C31 6C33 6C36 6C37 6C39 6C3A 6C3B 6C3C - 6C3E 6C3F 6C43 6C44 6C45 6C48 6C4B 6C4C - 6C4D 6C4E 6C4F 6C51 6C52 6C53 6C56 6C58 -End of Item 02B7 - -Begin of Item 02B8 - Format 1 - srcBegin = 9B40 - srcEnd = 9BFE - mappingOffset = 0E3C - Mapping = - 6C59 6C5A 6C62 6C63 6C65 6C66 6C67 6C6B - 6C6C 6C6D 6C6E 6C6F 6C71 6C73 6C75 6C77 - 6C78 6C7A 6C7B 6C7C 6C7F 6C80 6C84 6C87 - 6C8A 6C8B 6C8D 6C8E 6C91 6C92 6C95 6C96 - 6C97 6C98 6C9A 6C9C 6C9D 6C9E 6CA0 6CA2 - 6CA8 6CAC 6CAF 6CB0 6CB4 6CB5 6CB6 6CB7 - 6CBA 6CC0 6CC1 6CC2 6CC3 6CC6 6CC7 6CC8 - 6CCB 6CCD 6CCE 6CCF 6CD1 6CD2 6CD8 FFFD - 6CD9 6CDA 6CDC 6CDD 6CDF 6CE4 6CE6 6CE7 - 6CE9 6CEC 6CED 6CF2 6CF4 6CF9 6CFF 6D00 - 6D02 6D03 6D05 6D06 6D08 6D09 6D0A 6D0D - 6D0F 6D10 6D11 6D13 6D14 6D15 6D16 6D18 - 6D1C 6D1D FFFD FFFD FFFD FFFD FFFD FFFD - 6D26 6D28 6D29 6D2C 6D2D 6D2F 6D30 6D34 - 6D36 6D37 6D38 6D3A 6D3F 6D40 6D42 6D44 - 6D49 6D4C 6D50 6D55 6D56 6D57 6D58 6D5B - 6D5D 6D5F 6D61 6D62 6D64 6D65 6D67 6D68 - 6D6B 6D6C 6D6D 6D70 6D71 6D72 6D73 6D75 - 6D76 6D79 6D7A 6D7B 6D7D 6D7E 6D7F 6D80 - 6D81 6D83 6D84 6D86 6D87 6D8A 6D8B 6D8D - 6D8F 6D90 6D92 6D96 6D97 6D98 6D99 6D9A - 6D9C 6DA2 6DA5 6DAC 6DAD 6DB0 6DB1 6DB3 - 6DB4 6DB6 6DB7 FFFD FFFD FFFD FFFD FFFD - FFFD 6DC1 6DC2 6DC3 6DC8 6DC9 6DCA -End of Item 02B8 - -Begin of Item 02B9 - Format 1 - srcBegin = 9C40 - srcEnd = 9C82 - mappingOffset = 0EFB - Mapping = - 6DCD 6DCE 6DCF 6DD0 6DD2 6DD3 6DD4 6DD5 - 6DD7 6DDA 6DDB 6DDC 6DDF 6DE2 6DE3 6DE5 - 6DE7 6DE8 6DE9 6DEA 6DED 6DEF 6DF0 6DF2 - 6DF4 6DF5 6DF6 6DF8 6DFA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 6E06 6E07 6E08 - 6E09 6E0B 6E0F 6E12 6E13 6E15 6E18 6E19 - 6E1B 6E1C 6E1E 6E1F 6E22 6E26 6E27 6E28 - 6E2A 6E2C 6E2E 6E30 6E31 6E33 6E35 FFFD - 6E36 6E37 6E39 -End of Item 02B9 - -Begin of Item 02BA - Format 1 - srcBegin = 9C93 - srcEnd = 9C9D - mappingOffset = 0F3E - Mapping = - 6E4F 6E50 6E51 6E52 6E55 6E57 6E59 6E5A - 6E5C 6E5D 6E5E -End of Item 02BA - -Begin of Item 02BB - Format 1 - srcBegin = 9CA9 - srcEnd = 9CAA - mappingOffset = 0F49 - Mapping = - 6E6C 6E6D -End of Item 02BB - -Begin of Item 02BC - Format 1 - srcBegin = 9CBA - srcEnd = 9CF8 - mappingOffset = 0F4B - Mapping = - 6E80 6E81 6E82 6E84 6E87 6E88 6E8A 6E8B - 6E8C 6E8D 6E8E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 6E99 6E9A 6E9B 6E9D 6E9E 6EA0 - 6EA1 6EA3 6EA4 6EA6 6EA8 6EA9 6EAB 6EAC - 6EAD 6EAE 6EB0 6EB3 6EB5 6EB8 6EB9 6EBC - 6EBE 6EBF 6EC0 6EC3 6EC4 6EC5 6EC6 6EC8 - 6EC9 6ECA 6ECC 6ECD 6ECE 6ED0 6ED2 6ED6 - 6ED8 6ED9 6EDB 6EDC 6EDD 6EE3 6EE7 -End of Item 02BC - -Begin of Item 02BD - Format 1 - srcBegin = 9D40 - srcEnd = 9DB5 - mappingOffset = 0F8A - Mapping = - 6EF0 6EF1 6EF2 6EF3 6EF5 6EF6 6EF7 6EF8 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 6F03 6F04 6F05 6F07 6F08 6F0A 6F0B 6F0C - 6F0D 6F0E 6F10 6F11 6F12 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 6F21 - 6F22 6F23 6F25 6F26 6F27 6F28 6F2C 6F2E - 6F30 6F32 6F34 6F35 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 6F3F 6F40 6F41 6F42 FFFD - 6F43 6F44 6F45 6F48 6F49 6F4A 6F4C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6F59 6F5A 6F5B 6F5D 6F5F 6F60 6F61 - 6F63 6F64 6F65 FFFD FFFD FFFD FFFD FFFD - FFFD 6F6F 6F70 6F71 6F73 6F75 6F76 6F77 - 6F79 6F7B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6F85 6F86 6F87 6F8A 6F8B -End of Item 02BD - -Begin of Item 02BE - Format 1 - srcBegin = 9DC3 - srcEnd = 9DCB - mappingOffset = 1000 - Mapping = - 6F9D 6F9E 6F9F 6FA0 6FA2 6FA3 6FA4 6FA5 - 6FA6 -End of Item 02BE - -Begin of Item 02BF - Format 1 - srcBegin = 9DD7 - srcEnd = 9DE1 - mappingOffset = 1009 - Mapping = - 6FB4 6FB5 6FB7 6FB8 FFFD FFFD FFFD FFFD - FFFD FFFD 6FC1 -End of Item 02BF - -Begin of Item 02C0 - Format 1 - srcBegin = 9DFA - srcEnd = 9DFE - mappingOffset = 1014 - Mapping = - 6FDF 6FE2 6FE3 6FE4 6FE5 -End of Item 02C0 - -Begin of Item 02C1 - Format 1 - srcBegin = 9E8A - srcEnd = 9E8C - mappingOffset = 1019 - Mapping = - 7036 7037 7038 -End of Item 02C1 - -Begin of Item 02C2 - Format 1 - srcBegin = 9E9F - srcEnd = 9EA0 - mappingOffset = 101C - Mapping = - 704D 704E -End of Item 02C2 - -Begin of Item 02C3 - Format 1 - srcBegin = 9EBB - srcEnd = 9ED6 - mappingOffset = 101E - Mapping = - 706E 7071 7072 7073 7074 7077 7079 707A - 707B 707D 7081 7082 7083 7084 7086 7087 - 7088 708B 708C 708D 708F 7090 7091 7093 - 7097 7098 709A 709B -End of Item 02C3 - -Begin of Item 02C4 - Format 1 - srcBegin = 9EE4 - srcEnd = 9EF0 - mappingOffset = 103A - Mapping = - 70B0 70B2 70B4 70B5 70B6 70BA 70BE 70BF - 70C4 70C5 70C6 70C7 70C9 -End of Item 02C4 - -Begin of Item 02C5 - Format 2 - srcBegin = 9EFE - destBegin = 70DA -End of Item 02C5 - -Begin of Item 02C6 - Format 1 - srcBegin = 9F40 - srcEnd = 9F54 - mappingOffset = 1047 - Mapping = - 70DC 70DD 70DE 70E0 70E1 70E2 70E3 70E5 - 70EA 70EE FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 70F8 70FA 70FB 70FC -End of Item 02C6 - -Begin of Item 02C7 - Format 1 - srcBegin = 9F60 - srcEnd = 9F68 - mappingOffset = 105C - Mapping = - 710B 710C 710D 710E 710F 7111 7112 7114 - 7117 -End of Item 02C7 - -Begin of Item 02C8 - Format 1 - srcBegin = 9F7C - srcEnd = 9F80 - mappingOffset = 1065 - Mapping = - 7132 7133 7134 FFFD 7135 -End of Item 02C8 - -Begin of Item 02C9 - Format 1 - srcBegin = 9F8F - srcEnd = 9F94 - mappingOffset = 106A - Mapping = - 7146 7147 7148 7149 714B 714D -End of Item 02C9 - -Begin of Item 02CA - Format 1 - srcBegin = 9FA2 - srcEnd = 9FE6 - mappingOffset = 1070 - Mapping = - 715D 715F 7160 7161 7162 7163 7165 7169 - 716A 716B 716C 716D 716F 7170 7171 7174 - 7175 7176 7177 7179 717B 717C FFFD FFFD - FFFD FFFD FFFD FFFD 7185 7186 7187 7188 - 7189 718B 718C 718D 718E 7190 7191 7192 - 7193 7195 7196 7197 719A 719B 719C 719D - 719E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 71A9 71AA 71AB FFFD FFFD FFFD FFFD FFFD - FFFD 71B4 71B6 71B7 71B8 -End of Item 02CA - -Begin of Item 02CB - Format 1 - srcBegin = 9FFA - srcEnd = 9FFE - mappingOffset = 10B5 - Mapping = - 71CF 71D0 71D1 71D2 71D3 -End of Item 02CB - -Begin of Item 02CC - Format 1 - srcBegin = A04A - srcEnd = A04E - mappingOffset = 10BA - Mapping = - 71E1 71E2 71E3 71E4 71E6 -End of Item 02CC - -Begin of Item 02CD - Format 1 - srcBegin = A080 - srcEnd = A0CA - mappingOffset = 10BF - Mapping = - 721B 721C FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7229 722B 722D 722E - 722F 7232 7233 7234 723A 723C 723E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7249 724A - 724B 724E 724F 7250 7251 7253 7254 7255 - 7257 7258 725A 725C 725E 7260 7263 7264 - 7265 7268 726A 726B 726C 726D 7270 7271 - 7273 7274 7276 7277 7278 727B 727C 727D - 7282 7283 7285 7286 7287 7288 7289 728C - 728E 7290 7291 -End of Item 02CD - -Begin of Item 02CE - Format 1 - srcBegin = A0E3 - srcEnd = A0FE - mappingOffset = 110A - Mapping = - 72AE 72B1 72B2 72B3 72B5 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 72C5 72C6 72C7 72C9 - 72CA 72CB 72CC 72CF 72D1 72D3 72D4 72D5 - 72D6 72D8 72DA 72DB -End of Item 02CE - -Begin of Item 02CF - Format 1 - srcBegin = A1A1 - srcEnd = A1FE - mappingOffset = 1126 - Mapping = - 3000 3001 3002 00B7 02C9 02C7 00A8 3003 - 3005 2015 FF5E 2016 2026 2018 2019 201C - 201D 3014 3015 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3016 3017 3010 3011 00B1 - 00D7 00F7 2236 2227 2228 2211 220F 222A - 2229 2208 2237 221A 22A5 2225 2220 2312 - 2299 222B 222E 2261 224C 2248 223D 221D - 2260 226E 226F 2264 2265 221E 2235 2234 - 2642 2640 00B0 2032 2033 2103 FF04 00A4 - FFE0 FFE1 2030 00A7 2116 2606 2605 25CB - 25CF 25CE 25C7 25C6 25A1 25A0 25B3 25B2 - 203B 2192 2190 2191 2193 3013 -End of Item 02CF - -Begin of Item 02D0 - Format 1 - srcBegin = A3A1 - srcEnd = A3A4 - mappingOffset = 1184 - Mapping = - FF01 FF02 FF03 FFE5 -End of Item 02D0 - -Begin of Item 02D1 - Format 2 - srcBegin = A3FE - destBegin = FFE3 -End of Item 02D1 - -Begin of Item 02D2 - Format 1 - srcBegin = A6E0 - srcEnd = A6F5 - mappingOffset = 1188 - Mapping = - FE35 FE36 FE39 FE3A FE3F FE40 FE3D FE3E - FE41 FE42 FE43 FE44 FFFD FFFD FE3B FE3C - FE37 FE38 FE31 FFFD FE33 FE34 -End of Item 02D2 - -Begin of Item 02D3 - Format 2 - srcBegin = A7A7 - destBegin = 0401 -End of Item 02D3 - -Begin of Item 02D4 - Format 2 - srcBegin = A7D7 - destBegin = 0451 -End of Item 02D4 - -Begin of Item 02D5 - Format 1 - srcBegin = A840 - srcEnd = A853 - mappingOffset = 119E - Mapping = - 02CA 02CB 02D9 2013 2014 2025 2035 2105 - 2109 2196 2197 2198 2199 2215 221F 2223 - 2252 2266 2267 22BF -End of Item 02D5 - -Begin of Item 02D6 - Format 1 - srcBegin = A888 - srcEnd = A895 - mappingOffset = 11B2 - Mapping = - 2593 2594 2595 25BC 25BD 25E2 25E3 25E4 - 25E5 2609 2295 3012 301D 301E -End of Item 02D6 - -Begin of Item 02D7 - Format 1 - srcBegin = A8A1 - srcEnd = A8C0 - mappingOffset = 11C0 - Mapping = - 0101 00E1 01CE 00E0 0113 00E9 011B 00E8 - 012B 00ED 01D0 00EC 014D 00F3 01D2 00F2 - 016B 00FA 01D4 00F9 01D6 01D8 01DA 01DC - 00FC 00EA 0251 E7C7 0144 0148 E7C8 0261 -End of Item 02D7 - -Begin of Item 02D8 - Format 1 - srcBegin = A949 - srcEnd = A988 - mappingOffset = 11E0 - Mapping = - 32A3 338E 338F 339C 339D 339E 33A1 33C4 - 33CE 33D1 33D2 33D5 FE30 FFE2 FFE4 FFFD - 2121 3231 FFFD 2010 FFFD FFFD FFFD 30FC - 309B 309C 30FD 30FE 3006 309D 309E FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FE54 FE55 FE56 FE57 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FE62 - FE63 FE64 FE65 FE66 FE68 FE69 FE6A FE6B -End of Item 02D8 - -Begin of Item 02D9 - Format 2 - srcBegin = A996 - destBegin = 3007 -End of Item 02D9 - -Begin of Item 02DA - Format 1 - srcBegin = AA40 - srcEnd = AA8A - mappingOffset = 1220 - Mapping = - 72DC 72DD 72DF FFFD FFFD FFFD FFFD FFFD - FFFD 72EA 72EB 72F5 72F6 72F9 72FD 72FE - 72FF 7300 7302 FFFD FFFD FFFD FFFD FFFD - FFFD 730B 730C 730D 730F 7310 7311 7312 - 7314 7318 7319 731A 731F 7320 7323 7324 - 7326 7327 7328 732D 732F 7330 7332 7333 - 7335 7336 733A 733B 733C 733D FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7349 734A 734B 734C 734E 734F 7351 7353 - 7354 7355 7356 -End of Item 02DA - -Begin of Item 02DB - Format 1 - srcBegin = AA9E - srcEnd = AAA0 - mappingOffset = 126B - Mapping = - 736E 7370 7371 -End of Item 02DB - -Begin of Item 02DC - Format 1 - srcBegin = AB4C - srcEnd = ABA0 - mappingOffset = 126E - Mapping = - 737F 7380 7381 7382 7383 7385 7386 7388 - 738A 738C 738D 738F 7390 7392 7393 7394 - 7395 7397 7398 7399 739A 739C 739D 739E - 73A0 73A1 FFFD FFFD FFFD FFFD FFFD FFFD - 73AA 73AC 73AD 73B1 73B4 73B5 73B6 73B8 - 73B9 73BC 73BD 73BE 73BF 73C1 73C3 73C4 - 73C5 73C6 73C7 FFFD 73CB 73CC 73CE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 73DA 73DB - 73DC 73DD 73DF 73E1 73E2 73E3 73E4 73E6 - 73E8 73EA 73EB 73EC 73EE 73EF 73F0 73F1 - 73F3 73F4 73F5 73F6 73F7 -End of Item 02DC - -Begin of Item 02DD - Format 1 - srcBegin = AC4B - srcEnd = AC51 - mappingOffset = 12C3 - Mapping = - 7404 7407 7408 740B 740C 740D 740E -End of Item 02DD - -Begin of Item 02DE - Format 1 - srcBegin = AC61 - srcEnd = AC72 - mappingOffset = 12CA - Mapping = - 7423 7424 7427 7429 742B 742D 742F 7431 - 7432 7437 7438 7439 743A 743B 743D 743E - 743F 7440 -End of Item 02DE - -Begin of Item 02DF - Format 1 - srcBegin = AC87 - srcEnd = AC89 - mappingOffset = 12DC - Mapping = - 7456 7458 745D -End of Item 02DF - -Begin of Item 02E0 - Format 1 - srcBegin = AC97 - srcEnd = ACA0 - mappingOffset = 12DF - Mapping = - 746E 746F 7471 7472 7473 7474 7475 7478 - 7479 747A -End of Item 02E0 - -Begin of Item 02E1 - Format 1 - srcBegin = AD40 - srcEnd = AD4D - mappingOffset = 12E9 - Mapping = - 747B 747C 747D 747F 7482 7484 7485 7486 - 7488 7489 748A 748C 748D 748F -End of Item 02E1 - -Begin of Item 02E2 - Format 2 - srcBegin = AD59 - destBegin = 749D -End of Item 02E2 - -Begin of Item 02E3 - Format 1 - srcBegin = AD93 - srcEnd = ADA0 - mappingOffset = 12F7 - Mapping = - 74DD 74DF 74E1 74E5 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 74F0 74F1 74F2 -End of Item 02E3 - -Begin of Item 02E4 - Format 1 - srcBegin = AE40 - srcEnd = AEA0 - mappingOffset = 1305 - Mapping = - 74F3 74F5 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7500 7501 7502 7503 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 750E 7510 7512 - 7514 7515 7516 7517 751B 751D 751E 7520 - 7521 7522 7523 7524 7526 7527 752A 752E - 7534 7536 7539 753C 753D 753F 7541 7542 - 7543 7544 7546 7547 7549 754A 754D 7550 - 7551 7552 7553 7555 7556 7557 7558 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7567 7568 7569 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7573 7575 7576 7577 757A 757B - 757C 757D 757E 7580 7581 7582 7584 7585 - 7587 -End of Item 02E4 - -Begin of Item 02E5 - Format 1 - srcBegin = AF40 - srcEnd = AFA0 - mappingOffset = 1366 - Mapping = - 7588 7589 758A 758C 758D 758E 7590 7593 - 7595 7598 759B 759C 759E 75A2 75A6 75A7 - 75A8 75A9 75AA 75AD 75B6 75B7 75BA 75BB - 75BF 75C0 75C1 75C6 75CB 75CC 75CE 75CF - 75D0 75D1 75D3 75D7 75D9 75DA 75DC 75DD - 75DF 75E0 75E1 75E5 75E9 75EC 75ED 75EE - 75EF 75F2 75F3 75F5 75F6 75F7 75F8 75FA - 75FB 75FD 75FE 7602 7604 7606 7607 FFFD - 7608 7609 760B 760D 760E 760F 7611 7612 - 7613 7614 7616 761A 761C 761D 761E 7621 - 7623 7627 7628 762C 762E 762F 7631 7632 - 7636 7637 7639 763A 763B 763D 7641 7642 - 7644 -End of Item 02E5 - -Begin of Item 02E6 - Format 1 - srcBegin = B04D - srcEnd = B07E - mappingOffset = 13C7 - Mapping = - 7655 7657 7658 7659 765A 765B 765D 765F - 7660 7661 7662 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 766C 766D 766E FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7679 767A 767C - 767F 7680 7681 7683 7685 7689 768A 768C - 768D 768F 7690 7692 7694 7695 7697 7698 - 769A 769B -End of Item 02E6 - -Begin of Item 02E7 - Format 1 - srcBegin = B091 - srcEnd = B0FE - mappingOffset = 13F9 - Mapping = - 76AF 76B0 76B3 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 76C0 76C1 76C3 - 554A 963F 57C3 6328 54CE 5509 54C0 7691 - 764C 853C 77EE 827E 788D 7231 9698 978D - 6C28 5B89 4FFA 6309 6697 5CB8 80FA 6848 - 80AE 6602 76CE 51F9 6556 71AC 7FF1 8884 - 50B2 5965 61CA 6FB3 82AD 634C 6252 53ED - 5427 7B06 516B 75A4 5DF4 62D4 8DCB 9776 - 628A 8019 575D 9738 7F62 7238 767D 67CF - 767E 6446 4F70 8D25 62DC 7A17 6591 73ED - 642C 6273 822C 9881 677F 7248 626E 62CC - 4F34 74E3 534A 529E 7ECA 90A6 5E2E 6886 - 699C 8180 7ED1 68D2 78C5 868C 9551 508D - 8C24 82DE 80DE 5305 8912 5265 -End of Item 02E7 - -Begin of Item 02E8 - Format 1 - srcBegin = B140 - srcEnd = B168 - mappingOffset = 1467 - Mapping = - 76C4 76C7 76C9 76CB 76CC 76D3 76D5 76D9 - 76DA 76DC 76DD 76DE 76E0 76E1 76E2 76E3 - 76E4 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 76F0 76F3 76F5 76F6 76F7 76FA 76FB - 76FD 76FF 7700 7702 7703 7705 7706 770A - 770C -End of Item 02E8 - -Begin of Item 02E9 - Format 1 - srcBegin = B174 - srcEnd = B18F - mappingOffset = 1490 - Mapping = - 771B 771C 771D 771E 7721 7723 7724 7725 - 7727 772A 772B FFFD 772C 772E 7730 7731 - 7732 7733 7734 7739 773B 773D 773E 773F - 7742 7744 7745 7746 -End of Item 02E9 - -Begin of Item 02EA - Format 1 - srcBegin = B1A0 - srcEnd = B1FE - mappingOffset = 14AC - Mapping = - 775C 8584 96F9 4FDD 5821 9971 5B9D 62B1 - 62A5 66B4 8C79 9C8D 7206 676F 7891 60B2 - 5351 5317 8F88 80CC 8D1D 94A1 500D 72C8 - 5907 60EB 7119 88AB 5954 82EF 672C 7B28 - 5D29 7EF7 752D 6CF5 8E66 8FF8 903C 9F3B - 6BD4 9119 7B14 5F7C 78A7 84D6 853D 6BD5 - 6BD9 6BD6 5E01 5E87 75F9 95ED 655D 5F0A - 5FC5 8F9F 58C1 81C2 907F 965B 97AD 8FB9 - 7F16 8D2C 6241 4FBF 53D8 535E 8FA8 8FA9 - 8FAB 904D 6807 5F6A 8198 8868 9CD6 618B - 522B 762A 5F6C 658C 6FD2 6EE8 5BBE 6448 - 5175 51B0 67C4 4E19 79C9 997C 70B3 -End of Item 02EA - -Begin of Item 02EB - Format 1 - srcBegin = B240 - srcEnd = B247 - mappingOffset = 150B - Mapping = - 775D 775E 775F 7760 7764 7767 7769 776A -End of Item 02EB - -Begin of Item 02EC - Format 1 - srcBegin = B254 - srcEnd = B261 - mappingOffset = 1513 - Mapping = - 777A 777B 777C 7781 7782 7783 FFFD FFFD - FFFD FFFD FFFD FFFD 778F 7790 -End of Item 02EC - -Begin of Item 02ED - Format 1 - srcBegin = B26E - srcEnd = B281 - mappingOffset = 1521 - Mapping = - 77A1 77A3 77A4 77A6 77A8 77AB 77AD 77AE - 77AF 77B1 77B2 77B4 77B6 77B7 77B8 77B9 - 77BA FFFD 77BC 77BE -End of Item 02ED - -Begin of Item 02EE - Format 1 - srcBegin = B298 - srcEnd = B2FE - mappingOffset = 1535 - Mapping = - 77D8 77D9 77DA 77DD 77DE 77DF 77E0 77E1 - 77E4 75C5 5E76 73BB 83E0 64AD 62E8 94B5 - 6CE2 535A 52C3 640F 94C2 7B94 4F2F 5E1B - 8236 8116 818A 6E24 6CCA 9A73 6355 535C - 54FA 8865 57E0 4E0D 5E03 6B65 7C3F 90E8 - 6016 64E6 731C 88C1 6750 624D 8D22 776C - 8E29 91C7 5F69 83DC 8521 9910 53C2 8695 - 6B8B 60ED 60E8 707F 82CD 8231 4ED3 6CA7 - 85CF 64CD 7CD9 69FD 66F9 8349 5395 7B56 - 4FA7 518C 6D4B 5C42 8E6D 63D2 53C9 832C - 8336 67E5 78B4 643D 5BDF 5C94 5DEE 8BE7 - 62C6 67F4 8C7A 6400 63BA 8749 998B 8C17 - 7F20 94F2 4EA7 9610 98A4 660C 7316 -End of Item 02EE - -Begin of Item 02EF - Format 1 - srcBegin = B340 - srcEnd = B381 - mappingOffset = 159C - Mapping = - 77E6 77E8 77EA 77EF 77F0 77F1 77F2 77F4 - 77F5 77F7 77F9 77FA 77FB 77FC FFFD FFFD - FFFD FFFD FFFD FFFD 780A 780B 780E 780F - 7810 7813 7815 7819 781B 781E 7820 7821 - 7822 7824 7828 782A 782B 782E 782F 7831 - 7832 7833 7835 7836 783D 783F 7841 7842 - 7843 7844 7846 7848 7849 784A 784B 784D - 784F 7851 7853 7854 7858 7859 785A FFFD - 785B 785C -End of Item 02EF - -Begin of Item 02F0 - Format 1 - srcBegin = B396 - srcEnd = B3FE - mappingOffset = 15DE - Mapping = - 7878 7879 787A 787B FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 573A 5C1D 5E38 957F 507F - 80A0 5382 655E 7545 5531 5021 8D85 6284 - 949E 671D 5632 6F6E 5DE2 5435 7092 8F66 - 626F 64A4 63A3 5F7B 6F88 90F4 81E3 8FB0 - 5C18 6668 5FF1 6C89 9648 8D81 886C 6491 - 79F0 57CE 6A59 6210 5448 4E58 7A0B 60E9 - 6F84 8BDA 627F 901E 9A8B 79E4 5403 75F4 - 6301 5319 6C60 8FDF 5F1B 9A70 803B 9F7F - 4F88 5C3A 8D64 7FC5 65A5 70BD 5145 51B2 - 866B 5D07 5BA0 62BD 916C 7574 8E0C 7A20 - 6101 7B79 4EC7 7EF8 7785 4E11 81ED 521D - 51FA 6A71 53A8 8E87 9504 96CF 6EC1 9664 - 695A -End of Item 02F0 - -Begin of Item 02F1 - Format 1 - srcBegin = B440 - srcEnd = B474 - mappingOffset = 1647 - Mapping = - 7884 7885 7886 7888 788A 788B 788F 7890 - 7892 7894 7895 7896 7899 789D 789E 78A0 - 78A2 78A4 78A6 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 78B5 78B6 78B7 78B8 78BA - 78BB 78BC 78BD 78BF 78C0 78C2 78C3 78C4 - 78C6 78C7 78C8 78CC 78CD 78CE 78CF 78D1 - 78D2 78D3 78D6 78D7 78D8 -End of Item 02F1 - -Begin of Item 02F2 - Format 1 - srcBegin = B480 - srcEnd = B4FE - mappingOffset = 167C - Mapping = - 78E4 78E5 78E6 78E7 78E9 78EA 78EB 78ED - 78EE 78EF 78F0 78F1 78F3 78F5 78F6 78F8 - 78F9 FFFD FFFD FFFD FFFD FFFD FFFD 7902 - 7903 7904 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7840 50A8 77D7 6410 89E6 5904 63E3 - 5DDD 7A7F 693D 4F20 8239 5598 4E32 75AE - 7A97 5E62 5E8A 95EF 521B 5439 708A 6376 - 9524 5782 6625 693F 9187 5507 6DF3 7EAF - 8822 6233 7EF0 75B5 8328 78C1 96CC 8F9E - 6148 74F7 8BCD 6B64 523A 8D50 6B21 806A - 8471 56F1 5306 4ECE 4E1B 51D1 7C97 918B - 7C07 4FC3 8E7F 7BE1 7A9C 6467 5D14 50AC - 8106 7601 7CB9 6DEC 7FE0 6751 5B58 5BF8 - 78CB 64AE 6413 63AA 632B 9519 642D 8FBE - 7B54 7629 6253 5927 5446 6B79 50A3 6234 - 5E26 6B86 4EE3 8D37 888B 5F85 902E -End of Item 02F2 - -Begin of Item 02F3 - Format 1 - srcBegin = B550 - srcEnd = B554 - mappingOffset = 16FB - Mapping = - 791F 7920 7921 7922 7923 -End of Item 02F3 - -Begin of Item 02F4 - Format 1 - srcBegin = B564 - srcEnd = B5FE - mappingOffset = 1700 - Mapping = - 7935 7936 7937 7938 7939 793D 793F 7942 - 7943 7944 7945 7947 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7954 7955 7958 - 7959 7961 7963 FFFD 7964 7966 7969 796A - 796B 796C 796E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 7979 797B 797C 797D 797E 797F - 7982 7983 7986 7987 7988 7989 798B 798C - 798D 798E 7990 7991 7992 6020 803D 62C5 - 4E39 5355 90F8 63B8 80C6 65E6 6C2E 4F46 - 60EE 6DE1 8BDE 5F39 86CB 5F53 6321 515A - 8361 6863 5200 6363 8E48 5012 5C9B 7977 - 5BFC 5230 7A3B 60BC 9053 76D7 5FB7 5F97 - 7684 8E6C 706F 767B 7B49 77AA 51F3 9093 - 5824 4F4E 6EF4 8FEA 654C 7B1B 72C4 6DA4 - 7FDF 5AE1 62B5 5E95 5730 8482 7B2C 5E1D - 5F1F 9012 7F14 98A0 6382 6EC7 7898 70B9 - 5178 975B 57AB 7535 4F43 7538 5E97 60E6 - 5960 6DC0 6BBF 7889 53FC 96D5 51CB 5201 - 6389 540A 9493 8C03 8DCC 7239 789F 8776 - 8FED 8C0D 53E0 -End of Item 02F4 - -Begin of Item 02F5 - Format 1 - srcBegin = B65E - srcEnd = B6FE - mappingOffset = 179B - Mapping = - 79B4 79B5 79B6 79B7 79B8 79BC 79BF 79C2 - 79C4 79C5 79C7 79C8 79CA 79CC 79CE 79CF - 79D0 79D3 79D4 79D6 79D7 FFFD FFFD FFFD - FFFD FFFD FFFD 79E0 79E1 79E2 79E5 79E8 - 79EA FFFD 79EC 79EE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 79F9 79FA 79FC 79FE 79FF - 7A01 7A04 7A05 7A07 7A08 7A09 7A0A 7A0C - 7A0F 7A10 7A11 7A12 7A13 7A15 7A16 7A18 - 7A19 7A1B 7A1C 4E01 76EF 53EE 9489 9876 - 9F0E 952D 5B9A 8BA2 4E22 4E1C 51AC 8463 - 61C2 52A8 680B 4F97 606B 51BB 6D1E 515C - 6296 6597 9661 8C46 9017 75D8 90FD 7763 - 6BD2 728A 72EC 8BFB 5835 7779 8D4C 675C - 9540 809A 5EA6 6E21 5992 7AEF 77ED 953B - 6BB5 65AD 7F0E 5806 5151 961F 5BF9 58A9 - 5428 8E72 6566 987F 56E4 949D 76FE 9041 - 6387 54C6 591A 593A 579B 8EB2 6735 8DFA - 8235 5241 60F0 5815 86FE 5CE8 9E45 4FC4 - 989D 8BB9 5A25 6076 5384 627C 904F 9102 - 997F 6069 800C 513F 8033 5C14 9975 6D31 - 4E8C -End of Item 02F5 - -Begin of Item 02F6 - Format 1 - srcBegin = B740 - srcEnd = B743 - mappingOffset = 183C - Mapping = - 7A1D 7A1F 7A21 7A22 -End of Item 02F6 - -Begin of Item 02F7 - Format 1 - srcBegin = B753 - srcEnd = B758 - mappingOffset = 1840 - Mapping = - 7A34 7A35 7A36 7A38 7A3A 7A3E -End of Item 02F7 - -Begin of Item 02F8 - Format 1 - srcBegin = B769 - srcEnd = B76D - mappingOffset = 1846 - Mapping = - 7A52 7A53 7A54 7A55 7A56 -End of Item 02F8 - -Begin of Item 02F9 - Format 1 - srcBegin = B787 - srcEnd = B7FE - mappingOffset = 184B - Mapping = - 7A71 7A72 7A73 7A75 7A7B 7A7C 7A7D 7A7E - 7A82 7A85 7A87 7A89 7A8A 7A8B 7A8C 7A8E - 7A8F 7A90 7A93 7A94 7A99 7A9A 7A9B 7A9E - 7AA1 7AA2 8D30 53D1 7F5A 7B4F 4F10 4E4F - 9600 6CD5 73D0 85E9 5E06 756A 7FFB 6A0A - 77FE 9492 7E41 51E1 70E6 53CD 8FD4 8303 - 8D29 72AF 996D 6CDB 574A 82B3 65B9 80AA - 623F 9632 59A8 4EFF 8BBF 7EBA 653E 83F2 - 975E 5561 98DE 80A5 532A 8BFD 5420 80BA - 5E9F 6CB8 8D39 82AC 915A 5429 6C1B 5206 - 7EB7 575F 711A 6C7E 7C89 594B 4EFD 5FFF - 6124 7CAA 4E30 5C01 67AB 8702 5CF0 950B - 98CE 75AF 70FD 9022 51AF 7F1D 8BBD 5949 - 51E4 4F5B 5426 592B 6577 80A4 5B75 6276 - 62C2 8F90 5E45 6C1F 7B26 4F0F 4FD8 670D -End of Item 02F9 - -Begin of Item 02FA - Format 1 - srcBegin = B840 - srcEnd = B84A - mappingOffset = 18C3 - Mapping = - 7AA3 7AA4 7AA7 7AA9 7AAA 7AAB 7AAE 7AAF - 7AB0 7AB1 7AB2 -End of Item 02FA - -Begin of Item 02FB - Format 1 - srcBegin = B86B - srcEnd = B8FE - mappingOffset = 18CE - Mapping = - 7AD7 7AD8 7ADA 7ADB 7ADC 7ADD 7AE1 7AE2 - 7AE4 FFFD FFFD FFFD FFFD FFFD FFFD 7AEE - 7AF0 7AF1 7AF2 7AF3 FFFD 7AF4 7AF5 7AF6 - 7AF7 7AF8 7AFB 7AFC 7AFE 7B00 7B01 7B02 - 7B05 7B07 7B09 7B0C 7B0D 7B0E 7B10 7B12 - 7B13 7B16 7B17 7B18 7B1A 7B1C 7B1D 7B1F - 7B21 7B22 7B23 7B27 7B29 7B2D 6D6E 6DAA - 798F 88B1 5F17 752B 629A 8F85 4FEF 91DC - 65A7 812F 8151 5E9C 8150 8D74 526F 8986 - 8D4B 590D 5085 4ED8 961C 7236 8179 8D1F - 5BCC 8BA3 9644 5987 7F1A 5490 5676 560E - 8BE5 6539 6982 9499 76D6 6E89 5E72 7518 - 6746 67D1 7AFF 809D 8D76 611F 79C6 6562 - 8D63 5188 521A 94A2 7F38 809B 7EB2 5C97 - 6E2F 6760 7BD9 768B 9AD8 818F 7F94 7CD5 - 641E 9550 7A3F 544A 54E5 6B4C 6401 6208 - 9E3D 80F3 7599 5272 9769 845B 683C 86E4 - 9601 9694 94EC 4E2A 5404 7ED9 6839 8DDF - 8015 66F4 5E9A 7FB9 -End of Item 02FB - -Begin of Item 02FC - Format 1 - srcBegin = B940 - srcEnd = B95C - mappingOffset = 1962 - Mapping = - 7B2F 7B30 7B32 7B34 7B35 7B36 7B37 7B39 - 7B3B 7B3D FFFD FFFD FFFD FFFD FFFD FFFD - 7B46 7B48 7B4A 7B4D 7B4E 7B53 7B55 7B57 - 7B59 7B5C 7B5E 7B5F 7B61 -End of Item 02FC - -Begin of Item 02FD - Format 1 - srcBegin = B968 - srcEnd = B9FE - mappingOffset = 197F - Mapping = - 7B6F 7B70 7B73 7B74 7B76 7B78 7B7A 7B7C - 7B7D 7B7F 7B81 7B82 7B83 7B84 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7B8E 7B8F FFFD - 7B91 7B92 7B93 7B96 7B98 7B99 7B9A 7B9B - 7B9E 7B9F 7BA0 7BA3 7BA4 7BA5 7BAE 7BAF - 7BB0 7BB2 7BB3 7BB5 7BB6 7BB7 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7BC2 7BC3 - 7BC4 57C2 803F 6897 5DE5 653B 529F 606D - 9F9A 4F9B 8EAC 516C 5BAB 5F13 5DE9 6C5E - 62F1 8D21 5171 94A9 52FE 6C9F 82DF 72D7 - 57A2 6784 8D2D 591F 8F9C 83C7 5495 7B8D - 4F30 6CBD 5B64 59D1 9F13 53E4 86CA 9AA8 - 8C37 80A1 6545 987E 56FA 96C7 522E 74DC - 5250 5BE1 6302 8902 4E56 62D0 602A 68FA - 5173 5B98 51A0 89C2 7BA1 9986 7F50 60EF - 704C 8D2F 5149 5E7F 901B 7470 89C4 572D - 7845 5F52 9F9F 95FA 8F68 9B3C 8BE1 7678 - 6842 67DC 8DEA 8D35 523D 8F8A 6EDA 68CD - 9505 90ED 56FD 679C 88F9 8FC7 54C8 -End of Item 02FD - -Begin of Item 02FE - Format 1 - srcBegin = BA40 - srcEnd = BA8C - mappingOffset = 1A16 - Mapping = - 7BC5 7BC8 7BC9 7BCA 7BCB 7BCD 7BCE 7BCF - 7BD0 7BD2 7BD4 7BD5 7BD6 7BD7 7BD8 7BDB - 7BDC 7BDE 7BDF 7BE0 7BE2 7BE3 7BE4 7BE7 - 7BE8 7BE9 7BEB 7BEC 7BED 7BEF 7BF0 7BF2 - 7BF3 7BF4 7BF5 7BF6 7BF8 7BF9 7BFA 7BFB - 7BFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 7C08 7C09 7C0A 7C0D 7C0E FFFD FFFD - FFFD FFFD FFFD FFFD 7C17 7C18 7C19 FFFD - 7C1A 7C1B 7C1C 7C1D 7C1E FFFD FFFD FFFD - FFFD FFFD FFFD 7C28 7C29 -End of Item 02FE - -Begin of Item 02FF - Format 1 - srcBegin = BAA0 - srcEnd = BAFE - mappingOffset = 1A63 - Mapping = - 7C42 9AB8 5B69 6D77 6C26 4EA5 5BB3 9A87 - 9163 61A8 90AF 97E9 542B 6DB5 5BD2 51FD - 558A 7F55 7FF0 64BC 634D 65F1 61BE 608D - 710A 6C57 6C49 592F 676D 822A 58D5 568E - 8C6A 6BEB 90DD 597D 8017 53F7 6D69 5475 - 559D 8377 83CF 6838 79BE 548C 4F55 5408 - 76D2 8C89 9602 6CB3 6DB8 8D6B 8910 9E64 - 8D3A 563F 9ED1 75D5 5F88 72E0 6068 54FC - 4EA8 6A2A 8861 6052 8F70 54C4 70D8 8679 - 9E3F 6D2A 5B8F 5F18 7EA2 5589 4FAF 7334 - 543C 539A 5019 540E 547C 4E4E 5FFD 745A - 58F6 846B 80E1 8774 72D0 7CCA 6E56 -End of Item 02FF - -Begin of Item 0300 - Format 1 - srcBegin = BB80 - srcEnd = BBFE - mappingOffset = 1AC2 - Mapping = - 7C88 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7C93 7C94 7C96 7C99 7C9A 7C9B 7CA0 7CA1 - 7CA3 7CA6 7CA7 7CA8 7CA9 7CAB 7CAC 7CAD - 7CAF 7CB0 7CB4 7CB5 7CB6 7CB7 7CB8 7CBA - 7CBB 5F27 864E 552C 62A4 4E92 6CAA 6237 - 82B1 54D7 534E 733E 6ED1 753B 5212 5316 - 8BDD 69D0 5F8A 6000 6DEE 574F 6B22 73AF - 6853 8FD8 7F13 6362 60A3 5524 75EA 8C62 - 7115 6DA3 5BA6 5E7B 8352 614C 9EC4 78FA - 8757 7C27 7687 51F0 60F6 714C 6643 5E4C - 604D 8C0E 7070 6325 8F89 5FBD 6062 86D4 - 56DE 6BC1 6094 6167 5349 60E0 6666 8D3F - 79FD 4F1A 70E9 6C47 8BB3 8BF2 7ED8 8364 - 660F 5A5A 9B42 6D51 6DF7 8C41 6D3B 4F19 - 706B 83B7 6216 60D1 970D 8D27 7978 51FB - 573E 57FA 673A 7578 7A3D 79EF 7B95 -End of Item 0300 - -Begin of Item 0301 - Format 1 - srcBegin = BC40 - srcEnd = BC53 - mappingOffset = 1B41 - Mapping = - 7CBF 7CC0 7CC2 7CC3 7CC4 7CC6 7CC9 7CCB - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 7CD8 - 7CDA 7CDB 7CDD 7CDE -End of Item 0301 - -Begin of Item 0302 - Format 1 - srcBegin = BC69 - srcEnd = BC6A - mappingOffset = 1B55 - Mapping = - 7CF9 7CFA -End of Item 0302 - -Begin of Item 0303 - Format 1 - srcBegin = BC8F - srcEnd = BCFE - mappingOffset = 1B57 - Mapping = - 7D21 7D23 7D24 7D25 7D26 7D28 7D29 7D2A - 7D2C 7D2D 7D2E FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 808C 9965 8FF9 6FC0 8BA5 9E21 - 59EC 7EE9 7F09 5409 6781 68D8 8F91 7C4D - 96C6 53CA 6025 75BE 6C72 5373 5AC9 7EA7 - 6324 51E0 810A 5DF1 84DF 6280 5180 5B63 - 4F0E 796D 5242 60B8 6D4E 5BC4 5BC2 8BA1 - 8BB0 65E2 5FCC 9645 5993 7EE7 7EAA 5609 - 67B7 5939 4F73 5BB6 52A0 835A 988A 8D3E - 7532 94BE 5047 7A3C 4EF7 67B6 9A7E 5AC1 - 6B7C 76D1 575A 5C16 7B3A 95F4 714E 517C - 80A9 8270 5978 7F04 8327 68C0 67EC 78B1 - 7877 62E3 6361 7B80 4FED 526A 51CF 8350 - 69DB 9274 8DF5 8D31 89C1 952E 7BAD 4EF6 -End of Item 0303 - -Begin of Item 0304 - Format 1 - srcBegin = BDA1 - srcEnd = BDFE - mappingOffset = 1BC7 - Mapping = - 5065 8230 5251 996F 6E10 6E85 6DA7 5EFA - 50F5 59DC 5C06 6D46 6C5F 7586 848B 6868 - 5956 8BB2 5320 9171 964D 8549 6912 7901 - 7126 80F6 4EA4 90CA 6D47 9A84 5A07 56BC - 6405 94F0 77EB 4FA5 811A 72E1 89D2 997A - 7F34 7EDE 527F 6559 9175 8F7F 8F83 53EB - 7A96 63ED 63A5 7686 79F8 8857 9636 622A - 52AB 8282 6854 6770 6377 776B 7AED 6D01 - 7ED3 89E3 59D0 6212 85C9 82A5 754C 501F - 4ECB 75A5 8BEB 5C4A 5DFE 7B4B 65A4 91D1 - 4ECA 6D25 895F 7D27 9526 4EC5 8C28 8FDB - 9773 664B 7981 8FD1 70EC 6D78 -End of Item 0304 - -Begin of Item 0305 - Format 1 - srcBegin = BEA1 - srcEnd = BEFE - mappingOffset = 1C25 - Mapping = - 5C3D 52B2 8346 5162 830E 775B 6676 9CB8 - 4EAC 60CA 7CBE 7CB3 7ECF 4E95 8B66 666F - 9888 9759 5883 656C 955C 5F84 75C9 9756 - 7ADF 7ADE 51C0 70AF 7A98 63EA 7A76 7EA0 - 7396 97ED 4E45 7078 4E5D 9152 53A9 6551 - 65E7 81FC 8205 548E 5C31 759A 97A0 62D8 - 72D9 75BD 5C45 9A79 83CA 5C40 5480 77E9 - 4E3E 6CAE 805A 62D2 636E 5DE8 5177 8DDD - 8E1E 952F 4FF1 53E5 60E7 70AC 5267 6350 - 9E43 5A1F 5026 7737 5377 7EE2 6485 652B - 6289 6398 5014 7235 89C9 51B3 8BC0 7EDD - 5747 83CC 94A7 519B 541B 5CFB -End of Item 0305 - -Begin of Item 0306 - Format 1 - srcBegin = BF80 - srcEnd = BF8A - mappingOffset = 1C83 - Mapping = - 7E3A 7E3C 7E3D 7E3E 7E3F 7E40 7E42 7E43 - 7E44 7E45 7E46 -End of Item 0306 - -Begin of Item 0307 - Format 1 - srcBegin = BFA1 - srcEnd = BFFE - mappingOffset = 1C8E - Mapping = - 4FCA 7AE3 6D5A 90E1 9A8F 5580 5496 5361 - 54AF 5F00 63E9 6977 51EF 6168 520A 582A - 52D8 574E 780D 770B 5EB7 6177 7CE0 625B - 6297 4EA2 7095 8003 62F7 70E4 9760 5777 - 82DB 67EF 68F5 78D5 9897 79D1 58F3 54B3 - 53EF 6E34 514B 523B 5BA2 8BFE 80AF 5543 - 57A6 6073 5751 542D 7A7A 6050 5B54 63A7 - 62A0 53E3 6263 5BC7 67AF 54ED 7A9F 82E6 - 9177 5E93 88E4 5938 57AE 630E 8DE8 80EF - 5757 7B77 4FA9 5FEB 5BBD 6B3E 5321 7B50 - 72C2 6846 77FF 7736 65F7 51B5 4E8F 76D4 - 5CBF 7AA5 8475 594E 9B41 5080 -End of Item 0307 - -Begin of Item 0308 - Format 1 - srcBegin = C07C - srcEnd = C0FE - mappingOffset = 1CEC - Mapping = - 7E9C 7E9D 7E9E FFFD 7EAE 7EB4 7EBB 7EBC - 7ED6 7EE4 7EEC 7EF9 7F0A 7F10 7F1E 7F37 - 7F39 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7F43 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 7F52 7F53 9988 6127 6E83 - 5764 6606 6346 56F0 62EC 6269 5ED3 9614 - 5783 62C9 5587 8721 814A 8FA3 5566 83B1 - 6765 8D56 84DD 5A6A 680F 62E6 7BEE 9611 - 5170 6F9C 8C30 63FD 89C8 61D2 7F06 70C2 - 6EE5 7405 6994 72FC 5ECA 90CE 6717 6D6A - 635E 52B3 7262 8001 4F6C 59E5 916A 70D9 - 6D9D 52D2 4E50 96F7 956D 857E 78CA 7D2F - 5121 5792 64C2 808B 7C7B 6CEA 68F1 695E - 51B7 5398 68A8 7281 9ECE 7BF1 72F8 79BB - 6F13 7406 674E 91CC 9CA4 793C 8389 8354 - 540F 6817 4E3D 5389 52B1 783E 5386 5229 - 5088 4F8B 4FD0 -End of Item 0308 - -Begin of Item 0309 - Format 1 - srcBegin = C140 - srcEnd = C1FE - mappingOffset = 1D6F - Mapping = - 7F56 7F59 7F5B 7F5C 7F5D 7F5E 7F60 7F63 - 7F64 7F65 7F66 7F67 7F6B 7F6C 7F6D 7F6F - 7F70 7F73 7F75 7F76 7F77 7F78 7F7A 7F7B - 7F7C 7F7D 7F7F 7F80 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 7F8B 7F8D 7F8F 7F90 - 7F91 7F92 7F93 7F95 7F96 7F97 7F98 7F99 - 7F9B 7F9C 7FA0 7FA2 7FA3 7FA5 7FA6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 7FB1 FFFD - 7FB3 7FB4 7FB5 7FB6 7FB7 7FBA 7FBB 7FBE - 7FC0 7FC2 7FC3 7FC4 7FC6 7FC7 7FC8 7FC9 - 7FCB 7FCD 7FCF 7FD0 7FD1 7FD2 7FD3 7FD6 - 7FD7 FFFD FFFD FFFD FFFD FFFD FFFD 7FE2 - 7FE3 75E2 7ACB 7C92 6CA5 96B6 529B 7483 - 54E9 4FE9 8054 83B2 8FDE 9570 5EC9 601C - 6D9F 5E18 655B 8138 94FE 604B 70BC 7EC3 - 7CAE 51C9 6881 7CB1 826F 4E24 8F86 91CF - 667E 4EAE 8C05 64A9 804A 50DA 7597 71CE - 5BE5 8FBD 6F66 4E86 6482 9563 5ED6 6599 - 5217 88C2 70C8 52A3 730E 7433 6797 78F7 - 9716 4E34 90BB 9CDE 6DCB 51DB 8D41 541D - 62CE 73B2 83F1 96F6 9F84 94C3 4F36 7F9A - 51CC 7075 9675 5CAD 9886 53E6 4EE4 6E9C - 7409 69B4 786B 998F 7559 5218 7624 6D41 - 67F3 516D 9F99 804B 5499 7B3C 7ABF -End of Item 0309 - -Begin of Item 030A - Format 1 - srcBegin = C240 - srcEnd = C280 - mappingOffset = 1E2E - Mapping = - 7FE4 7FE7 7FE8 7FEA 7FEB 7FEC 7FED 7FEF - 7FF2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7FFD 7FFE 7FFF 8002 8007 8008 8009 800A - 800E 800F 8011 8013 801A 801B 801D 801E - 801F 8021 8023 8024 FFFD FFFD FFFD FFFD - FFFD FFFD 8032 8034 8039 803A 803C 803E - 8040 8041 8044 8045 8047 8048 8049 804E - 804F 8050 8051 8053 8055 8056 8057 FFFD - 8059 -End of Item 030A - -Begin of Item 030B - Format 1 - srcBegin = C2A1 - srcEnd = C2FE - mappingOffset = 1E6F - Mapping = - 9686 5784 62E2 9647 697C 5A04 6402 7BD3 - 6F0F 964B 82A6 5362 9885 5E90 7089 63B3 - 5364 864F 9C81 9E93 788C 9732 8DEF 8D42 - 9E7F 6F5E 7984 5F55 9646 622E 9A74 5415 - 94DD 4FA3 65C5 5C65 5C61 7F15 8651 6C2F - 5F8B 7387 6EE4 7EFF 5CE6 631B 5B6A 6EE6 - 5375 4E71 63A0 7565 62A1 8F6E 4F26 4ED1 - 6CA6 7EB6 8BBA 841D 87BA 7F57 903B 9523 - 7BA9 9AA1 88F8 843D 6D1B 9A86 7EDC 5988 - 9EBB 739B 7801 8682 9A6C 9A82 561B 5417 - 57CB 4E70 9EA6 5356 8FC8 8109 7792 9992 - 86EE 6EE1 8513 66FC 6162 6F2B -End of Item 030B - -Begin of Item 030C - Format 1 - srcBegin = C340 - srcEnd = C386 - mappingOffset = 1ECD - Mapping = - 807E 8081 8082 8085 8088 808A FFFD FFFD - FFFD FFFD FFFD FFFD 8094 8095 8097 8099 - 809E 80A3 80A6 80A7 80A8 80AC 80B0 80B3 - 80B5 80B6 80B8 80B9 80BB 80C5 80C7 80C8 - 80C9 80CA 80CB FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 80D8 80DF 80E0 80E2 80E3 80E6 - 80EE 80F5 80F7 80F9 80FB 80FE 80FF 8100 - 8101 8103 8104 8105 8107 8108 810B FFFD - 810C 8115 8117 8119 811B 811C 811D -End of Item 030C - -Begin of Item 030D - Format 1 - srcBegin = C394 - srcEnd = C3FE - mappingOffset = 1F14 - Mapping = - 812D 812E 8130 8133 8134 8135 8137 8139 - 813A 813B 813C 813D 813F 8C29 8292 832B - 76F2 6C13 5FD9 83BD 732B 8305 951A 6BDB - 77DB 94C6 536F 8302 5192 5E3D 8C8C 8D38 - 4E48 73AB 679A 6885 9176 9709 7164 6CA1 - 7709 5A92 9541 6BCF 7F8E 6627 5BD0 59B9 - 5A9A 95E8 95F7 4EEC 840C 8499 6AAC 76DF - 9530 731B 68A6 5B5F 772F 919A 9761 7CDC - 8FF7 8C1C 5F25 7C73 79D8 89C5 6CCC 871C - 5BC6 5E42 68C9 7720 7EF5 5195 514D 52C9 - 5A29 7F05 9762 82D7 63CF 7784 85D0 79D2 - 6E3A 5E99 5999 8511 706D 6C11 62BF 76BF - 654F 60AF 95FD 660E 879F 9E23 94ED 540D - 547D 8C2C 6478 -End of Item 030D - -Begin of Item 030E - Format 1 - srcBegin = C446 - srcEnd = C481 - mappingOffset = 1F7F - Mapping = - 8147 8149 814D 814E 814F 8152 8156 8157 - 8158 815B 815C 815D 815E 815F 8161 8162 - 8163 8164 8166 8168 816A 816B 816C 816F - 8172 8173 8175 8176 8177 8178 8181 8183 - 8184 8185 8186 8187 8189 818B 818C 818D - 818E 8190 FFFD FFFD FFFD FFFD FFFD FFFD - 8199 819A 819E 819F 81A0 81A1 81A2 81A4 - 81A5 FFFD 81A7 81A9 -End of Item 030E - -Begin of Item 030F - Format 1 - srcBegin = C490 - srcEnd = C4FE - mappingOffset = 1FBB - Mapping = - 81BC 81BD 81BE 81BF 81C4 81C5 81C7 81C8 - 81C9 81CB FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 6479 8611 6A21 819C 78E8 6469 9B54 - 62B9 672B 83AB 58A8 9ED8 6CAB 6F20 5BDE - 964C 8C0B 725F 67D0 62C7 7261 4EA9 59C6 - 6BCD 5893 66AE 5E55 52DF 6155 6728 76EE - 7766 7267 7A46 62FF 54EA 5450 94A0 90A3 - 5A1C 7EB3 6C16 4E43 5976 8010 5948 5357 - 7537 96BE 56CA 6320 8111 607C 95F9 6DD6 - 5462 9981 5185 5AE9 80FD 59AE 9713 502A - 6CE5 5C3C 62DF 4F60 533F 817B 9006 6EBA - 852B 62C8 5E74 78BE 64B5 637B 5FF5 5A18 - 917F 9E1F 5C3F 634F 8042 5B7D 556E 954A - 954D 6D85 60A8 67E0 72DE 51DD 5B81 -End of Item 030F - -Begin of Item 0310 - Format 1 - srcBegin = C54F - srcEnd = C5FE - mappingOffset = 202A - Mapping = - 81E4 81E5 81E6 81E8 81E9 81EB 81EE 81EF - 81F0 81F1 81F2 FFFD FFFD FFFD FFFD FFFD - FFFD 81FD 81FF 8203 8207 8208 8209 820A - 820B 820E 820F 8211 8213 FFFD FFFD FFFD - FFFD FFFD FFFD 821D 8220 8224 8225 8226 - 8227 8229 822E 8232 823A 823C 823D 823F - FFFD 8240 8241 8242 8243 8245 8246 8248 - 824A 824C 824D 824E FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8259 825B 825C 825D - 825E FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8269 62E7 6CDE 725B 626D 94AE 7EBD - 8113 6D53 519C 5F04 5974 52AA 6012 5973 - 6696 8650 759F 632A 61E6 7CEF 8BFA 54E6 - 6B27 9E25 6BB4 85D5 5455 5076 6CA4 556A - 8DB4 722C 5E15 6015 7436 62CD 6392 724C - 5F98 6E43 6D3E 6500 6F58 76D8 78D0 76FC - 7554 5224 53DB 4E53 5E9E 65C1 802A 80D6 - 629B 5486 5228 70AE 888D 8DD1 6CE1 5478 - 80DA 57F9 88F4 8D54 966A 914D 4F69 6C9B - 55B7 76C6 7830 62A8 70F9 6F8E 5F6D 84EC - 68DA 787C 7BF7 81A8 670B 9E4F 6367 78B0 - 576F 7812 9739 6279 62AB 5288 7435 6BD7 -End of Item 0310 - -Begin of Item 0311 - Format 1 - srcBegin = C640 - srcEnd = C6FE - mappingOffset = 20DA - Mapping = - 826A 826B 826C 826D 8271 8275 8276 8277 - 8278 827B 827C 8280 8281 8283 8285 8286 - 8287 8289 828C 8290 8293 8294 8295 8296 - 829A 829B 829E 82A0 82A2 82A3 82A7 82B2 - 82B5 82B6 82BA 82BB 82BC 82BF 82C0 82C2 - 82C3 82C5 82C6 82C9 82D0 82D6 82D9 82DA - 82DD 82E2 82E7 82E8 82E9 82EA 82EC 82ED - 82EE 82F0 82F2 82F3 82F5 82F6 82F8 FFFD - 82FA 82FC 82FD 82FE 82FF 8300 830A 830B - 830D 8310 8312 8313 8316 8318 8319 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8329 832A 832E 8330 8332 8337 833B - 833D 5564 813E 75B2 76AE 5339 75DE 50FB - 5C41 8B6C 7BC7 504F 7247 9A97 98D8 6F02 - 74E2 7968 6487 77A5 62FC 9891 8D2B 54C1 - 8058 4E52 576A 82F9 840D 5E73 51ED 74F6 - 8BC4 5C4F 5761 6CFC 9887 5A46 7834 9B44 - 8FEB 7C95 5256 6251 94FA 4EC6 8386 8461 - 83E9 84B2 57D4 6734 5703 666E 6D66 8C31 - 66DD 7011 671F 6B3A 6816 621A 59BB 4E03 - 51C4 6F06 67D2 6C8F 5176 68CB 5947 6B67 - 7566 5D0E 8110 9F50 65D7 7948 7941 9A91 - 8D77 5C82 4E5E 4F01 542F 5951 780C 5668 - 6C14 8FC4 5F03 6C7D 6CE3 8BAB 6390 -End of Item 0311 - -Begin of Item 0312 - Format 1 - srcBegin = C740 - srcEnd = C7FE - mappingOffset = 2199 - Mapping = - 833E 833F 8341 8342 8344 8345 8348 834A - 834B 834C 834D 834E 8353 8355 8356 8357 - 8358 8359 835D 8362 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8379 837A FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8387 8388 838A 838B - 838C 838D 838F 8390 8391 8394 8395 8396 - 8397 8399 839A 839D 839F FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 83AC 83AD 83AE FFFD - 83AF 83B5 83BB 83BE 83BF 83C2 83C3 83C4 - 83C6 83C8 83C9 83CB 83CD 83CE 83D0 83D1 - 83D2 83D3 83D5 83D7 83D9 83DA 83DB 83DE - 83E2 83E3 83E4 83E6 83E7 83E8 83EB 83EC - 83ED 6070 6D3D 7275 6266 948E 94C5 5343 - 8FC1 7B7E 4EDF 8C26 4E7E 9ED4 94B1 94B3 - 524D 6F5C 9063 6D45 8C34 5811 5D4C 6B20 - 6B49 67AA 545B 8154 7F8C 5899 8537 5F3A - 62A2 6A47 9539 6572 6084 6865 77A7 4E54 - 4FA8 5DE7 9798 64AC 7FD8 5CED 4FCF 7A8D - 5207 8304 4E14 602F 7A83 94A6 4FB5 4EB2 - 79E6 7434 52E4 82B9 64D2 79BD 5BDD 6C81 - 9752 8F7B 6C22 503E 537F 6E05 64CE 6674 - 6C30 60C5 9877 8BF7 5E86 743C 7A77 79CB - 4E18 90B1 7403 6C42 56DA 914B 6CC5 8D8B - 533A 86C6 66F2 8EAF 5C48 9A71 6E20 -End of Item 0312 - -Begin of Item 0313 - Format 1 - srcBegin = C840 - srcEnd = C85C - mappingOffset = 2258 - Mapping = - 83EE 83EF 83F3 83F4 83F5 83F6 83F7 83FA - 83FB 83FC 83FE 83FF 8400 8402 8405 8407 - 8408 8409 840A 8410 FFFD FFFD FFFD FFFD - FFFD FFFD 8419 841A 841B -End of Item 0313 - -Begin of Item 0314 - Format 1 - srcBegin = C871 - srcEnd = C8FE - mappingOffset = 2275 - Mapping = - 8439 843A 843B FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8447 8448 8449 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8452 8453 - 8454 8455 8456 8458 845D 845E 845F 8460 - 8462 8464 8465 8466 8467 8468 846A 846E - 846F 8470 8472 8474 8477 8479 847B 847C - 53D6 5A36 9F8B 8DA3 53BB 5708 98A7 6743 - 919B 6CC9 5168 75CA 62F3 72AC 5238 529D - 7F3A 7094 7638 5374 9E4A 69B7 786E 96C0 - 88D9 7FA4 7136 71C3 5189 67D3 74E4 58E4 - 6518 56B7 8BA9 9976 6270 7ED5 60F9 70ED - 58EC 4EC1 4EBA 5FCD 97E7 4EFB 8BA4 5203 - 598A 7EAB 6254 4ECD 65E5 620E 8338 84C9 - 8363 878D 7194 6EB6 5BB9 7ED2 5197 63C9 - 67D4 8089 8339 8815 5112 5B7A 5982 8FB1 - 4E73 6C5D 5165 8925 8F6F 962E 854A 745E - 9510 95F0 6DA6 82E5 5F31 6492 6D12 8428 - 816E 9CC3 585E 8D5B 4E09 53C1 -End of Item 0314 - -Begin of Item 0315 - Format 1 - srcBegin = C940 - srcEnd = C959 - mappingOffset = 2303 - Mapping = - 847D 847E 847F 8480 8481 8483 8484 8485 - 8486 848A 848D FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8498 849A 849B 849D 849E - 849F 84A0 -End of Item 0315 - -Begin of Item 0316 - Format 1 - srcBegin = C967 - srcEnd = C990 - mappingOffset = 231D - Mapping = - 84B0 84B1 84B3 84B5 84B6 84B7 84BB 84BC - 84BE 84C0 84C2 84C3 84C5 84C6 84C7 84C8 - 84CB 84CC 84CE 84CF 84D2 84D4 84D5 84D7 - FFFD 84D8 84D9 84DA 84DB 84DC 84DE 84E1 - 84E2 84E4 84E7 84E8 84E9 84EA 84EB 84ED - 84EE 84EF -End of Item 0316 - -Begin of Item 0317 - Format 1 - srcBegin = C99C - srcEnd = C9FE - mappingOffset = 2347 - Mapping = - 84FD 84FE 8500 8501 8502 4F1E 6563 6851 - 55D3 4E27 6414 9A9A 626B 5AC2 745F 8272 - 6DA9 68EE 50E7 838E 7802 6740 5239 6C99 - 7EB1 50BB 5565 715E 7B5B 6652 73CA 82EB - 6749 5C71 5220 717D 886B 95EA 9655 64C5 - 8D61 81B3 5584 6C55 6247 7F2E 5892 4F24 - 5546 8D4F 664C 4E0A 5C1A 88F3 68A2 634E - 7A0D 70E7 828D 52FA 97F6 5C11 54E8 90B5 - 7ECD 5962 8D4A 86C7 820C 820D 8D66 6444 - 5C04 6151 6D89 793E 8BBE 7837 7533 547B - 4F38 8EAB 6DF1 5A20 7EC5 795E 6C88 5BA1 - 5A76 751A 80BE 614E 6E17 58F0 751F 7525 - 7272 5347 7EF3 -End of Item 0317 - -Begin of Item 0318 - Format 1 - srcBegin = CA49 - srcEnd = CA57 - mappingOffset = 23AA - Mapping = - 850D 850E 850F 8510 8512 8514 8515 8516 - 8518 8519 851B 851C 851D 851E 8520 -End of Item 0318 - -Begin of Item 0319 - Format 1 - srcBegin = CA6B - srcEnd = CA73 - mappingOffset = 23B9 - Mapping = - 853E 853F 8540 8541 8542 8544 8545 8546 - 8547 -End of Item 0319 - -Begin of Item 031A - Format 1 - srcBegin = CA80 - srcEnd = CAFE - mappingOffset = 23C2 - Mapping = - 8557 8558 855A 855B 855C 855D 855F 8560 - 8561 8562 8563 8565 8566 8567 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8573 - 8575 8576 8577 8578 857C 857D 857F 8580 - 8581 7701 76DB 5269 80DC 5723 5E08 5931 - 72EE 65BD 6E7F 8BD7 5C38 8671 5341 77F3 - 62FE 65F6 4EC0 98DF 8680 5B9E 8BC6 53F2 - 77E2 4F7F 5C4E 9A76 59CB 5F0F 793A 58EB - 4E16 67FF 4E8B 62ED 8A93 901D 52BF 662F - 55DC 566C 9002 4ED5 4F8D 91CA 9970 6C0F - 5E02 6043 5BA4 89C6 8BD5 6536 624B 9996 - 5B88 5BFF 6388 552E 53D7 7626 517D 852C - 67A2 68B3 6B8A 6292 8F93 53D4 8212 6DD1 - 758F 4E66 8D4E 5B70 719F 85AF 6691 66D9 - 7F72 8700 9ECD 9F20 5C5E 672F 8FF0 6811 - 675F 620D 7AD6 5885 5EB6 6570 6F31 -End of Item 031A - -Begin of Item 031B - Format 1 - srcBegin = CB40 - srcEnd = CB42 - mappingOffset = 2441 - Mapping = - 8582 8583 8586 -End of Item 031B - -Begin of Item 031C - Format 1 - srcBegin = CB5C - srcEnd = CB69 - mappingOffset = 2444 - Mapping = - 85A5 85A6 85A7 85A9 85AB 85AC 85AD FFFD - FFFD FFFD FFFD FFFD FFFD 85B8 -End of Item 031C - -Begin of Item 031D - Format 1 - srcBegin = CB78 - srcEnd = CB80 - mappingOffset = 2452 - Mapping = - 85CA 85CB 85CC 85CD 85CE 85D1 85D2 FFFD - 85D4 -End of Item 031D - -Begin of Item 031E - Format 1 - srcBegin = CB8E - srcEnd = CB91 - mappingOffset = 245B - Mapping = - 85E5 85E6 85E7 85E8 -End of Item 031E - -Begin of Item 031F - Format 1 - srcBegin = CBA1 - srcEnd = CBFE - mappingOffset = 245F - Mapping = - 6055 5237 800D 6454 8870 7529 5E05 6813 - 62F4 971C 53CC 723D 8C01 6C34 7761 7A0E - 542E 77AC 987A 821C 8BF4 7855 6714 70C1 - 65AF 6495 5636 601D 79C1 53F8 4E1D 6B7B - 8086 5BFA 55E3 56DB 4F3A 4F3C 9972 5DF3 - 677E 8038 6002 9882 9001 5B8B 8BBC 8BF5 - 641C 8258 64DE 55FD 82CF 9165 4FD7 7D20 - 901F 7C9F 50F3 5851 6EAF 5BBF 8BC9 8083 - 9178 849C 7B97 867D 968B 968F 7EE5 9AD3 - 788E 5C81 7A57 9042 96A7 795F 5B59 635F - 7B0B 84D1 68AD 5506 7F29 7410 7D22 9501 - 6240 584C 4ED6 5B83 5979 5854 -End of Item 031F - -Begin of Item 0320 - Format 1 - srcBegin = CC40 - srcEnd = CC49 - mappingOffset = 24BD - Mapping = - 85F9 85FA 85FC 85FD 85FE 8600 8601 8602 - 8603 8604 -End of Item 0320 - -Begin of Item 0321 - Format 1 - srcBegin = CC55 - srcEnd = CC58 - mappingOffset = 24C7 - Mapping = - 8612 8613 8614 8615 -End of Item 0321 - -Begin of Item 0322 - Format 2 - srcBegin = CC69 - destBegin = 8628 -End of Item 0322 - -Begin of Item 0323 - Format 1 - srcBegin = CC78 - srcEnd = CC7E - mappingOffset = 24CB - Mapping = - 8639 863A 863B 863D 863E 863F 8640 -End of Item 0323 - -Begin of Item 0324 - Format 1 - srcBegin = CC8C - srcEnd = CCFE - mappingOffset = 24D2 - Mapping = - 8652 8653 8655 8656 8657 8658 8659 865B - 865C 865D 865F 8660 8661 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 736D 631E 8E4B - 8E0F 80CE 82D4 62AC 53F0 6CF0 915E 592A - 6001 6C70 574D 644A 8D2A 762B 6EE9 575B - 6A80 75F0 6F6D 8C2D 8C08 5766 6BEF 8892 - 78B3 63A2 53F9 70AD 6C64 5858 642A 5802 - 68E0 819B 5510 7CD6 5018 8EBA 6DCC 8D9F - 70EB 638F 6D9B 6ED4 7EE6 8404 6843 9003 - 6DD8 9676 8BA8 5957 7279 85E4 817E 75BC - 8A8A 68AF 5254 8E22 9511 63D0 9898 8E44 - 557C 4F53 66FF 568F 60D5 6D95 5243 5C49 - 5929 6DFB 586B 7530 751C 606C 8214 8146 - 6311 6761 8FE2 773A 8DF3 8D34 94C1 5E16 - 5385 542C 70C3 -End of Item 0324 - -Begin of Item 0325 - Format 1 - srcBegin = CD40 - srcEnd = CD42 - mappingOffset = 2545 - Mapping = - 866D 866F 8670 -End of Item 0325 - -Begin of Item 0326 - Format 1 - srcBegin = CD51 - srcEnd = CDFE - mappingOffset = 2548 - Mapping = - 868E 868F 8690 8691 8692 8694 FFFD FFFD - FFFD FFFD FFFD FFFD 869E 869F 86A0 86A1 - 86A2 86A5 86A6 86AB 86AD 86AE 86B2 86B3 - 86B7 86B8 86B9 86BB 86BC 86BD 86BE 86BF - 86C1 86C2 86C3 86C5 86C8 86CC 86CD 86D2 - 86D3 86D5 86D6 86D7 86DA 86DC FFFD 86DD - 86E0 86E1 86E2 86E3 86E5 86E6 86E7 86E8 - 86EA 86EB 86EC 86EF 86F5 86F6 86F7 86FA - 86FB 86FC 86FD 86FF 8701 8704 8705 8706 - 870B 870C 870E 870F 8710 8711 8714 8716 - 6C40 5EF7 505C 4EAD 5EAD 633A 8247 901A - 6850 916E 77B3 540C 94DC 5F64 7AE5 6876 - 6345 7B52 7EDF 75DB 5077 6295 5934 900F - 51F8 79C3 7A81 56FE 5F92 9014 6D82 5C60 - 571F 5410 5154 6E4D 56E2 63A8 9893 817F - 8715 892A 9000 541E 5C6F 81C0 62D6 6258 - 8131 9E35 9640 9A6E 9A7C 692D 59A5 62D3 - 553E 6316 54C7 86D9 6D3C 5A03 74E6 889C - 6B6A 5916 8C4C 5F2F 6E7E 73A9 987D 4E38 - 70F7 5B8C 7897 633D 665A 7696 60CB 5B9B - 5A49 4E07 8155 6C6A 738B 4EA1 6789 7F51 - 5F80 65FA 671B 5FD8 5984 5A01 -End of Item 0326 - -Begin of Item 0327 - Format 1 - srcBegin = CE40 - srcEnd = CEFE - mappingOffset = 25F6 - Mapping = - 8719 871B 871D 871F 8720 8724 8726 8727 - 8728 872A 872B 872C 872D 872F 8730 8732 - 8733 8735 8736 8738 8739 873A 873C 873D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 874A - 874B 874D 874F 8750 8751 8752 8754 8755 - 8756 8758 FFFD FFFD FFFD FFFD FFFD FFFD - 8761 8762 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 876F 8771 8772 8773 8775 FFFD - 8777 8778 8779 877A 877F 8780 8781 8784 - 8786 8787 8789 878A 878C 878E 878F 8790 - 8791 8792 8794 8795 8796 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 87A0 87A1 87A2 87A3 - 87A4 5DCD 5FAE 5371 97E6 8FDD 6845 56F4 - 552F 60DF 4E3A 6F4D 7EF4 82C7 840E 59D4 - 4F1F 4F2A 5C3E 7EAC 672A 851A 5473 754F - 80C3 5582 9B4F 4F4D 6E2D 8C13 5C09 6170 - 536B 761F 6E29 868A 6587 95FB 7EB9 543B - 7A33 7D0A 95EE 55E1 7FC1 74EE 631D 8717 - 6DA1 7A9D 6211 65A1 5367 63E1 6C83 5DEB - 545C 94A8 4E4C 6C61 8BEC 5C4B 65E0 829C - 68A7 543E 5434 6BCB 6B66 4E94 6342 5348 - 821E 4F0D 4FAE 575E 620A 96FE 6664 7269 - 52FF 52A1 609F 8BEF 6614 7199 6790 897F - 7852 77FD 6670 563B 5438 9521 727A -End of Item 0327 - -Begin of Item 0328 - Format 1 - srcBegin = CF40 - srcEnd = CF74 - mappingOffset = 26B5 - Mapping = - 87A5 87A6 87A7 87A9 87AA 87AE 87B0 87B1 - 87B2 87B4 87B6 87B7 87B8 87B9 87BB 87BC - 87BE 87BF 87C1 87C2 87C3 87C4 87C5 87C7 - 87C8 87C9 87CC 87CD 87CE 87CF 87D0 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 87DC 87DD - 87DE 87DF 87E1 87E2 87E3 87E4 87E6 87E7 - 87E8 87E9 87EB 87EC 87ED -End of Item 0328 - -Begin of Item 0329 - Format 1 - srcBegin = CF80 - srcEnd = CF87 - mappingOffset = 26EA - Mapping = - 87FA 87FB 87FC 87FD 87FF 8800 8801 8802 -End of Item 0329 - -Begin of Item 032A - Format 1 - srcBegin = CF96 - srcEnd = CFFE - mappingOffset = 26F2 - Mapping = - 8814 8817 8818 8819 881A 881C 881D 881E - 881F 8820 8823 7A00 606F 5E0C 6089 819D - 5915 60DC 7184 70EF 6EAA 6C50 7280 6A84 - 88AD 5E2D 4E60 5AB3 559C 94E3 6D17 7CFB - 9699 620F 7EC6 778E 867E 5323 971E 8F96 - 6687 5CE1 4FA0 72ED 4E0B 53A6 590F 5413 - 6380 9528 5148 4ED9 9C9C 7EA4 54B8 8D24 - 8854 8237 95F2 6D8E 5F26 5ACC 663E 9669 - 73B0 732E 53BF 817A 9985 7FA1 5BAA 9677 - 9650 7EBF 76F8 53A2 9576 9999 7BB1 8944 - 6E58 4E61 7FD4 7965 8BE6 60F3 54CD 4EAB - 9879 5DF7 6A61 50CF 5411 8C61 8427 785D - 9704 524A 54EE 56A3 9500 6D88 5BB5 6DC6 - 6653 -End of Item 032A - -Begin of Item 032B - Format 1 - srcBegin = D054 - srcEnd = D05B - mappingOffset = 275B - Mapping = - 883A 883B 883D 883E 883F 8841 8842 8843 -End of Item 032B - -Begin of Item 032C - Format 1 - srcBegin = D068 - srcEnd = D0FE - mappingOffset = 2763 - Mapping = - 8855 8856 8858 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8866 8867 886A 886D 886F 8871 - 8873 8874 8875 8876 8878 8879 887A FFFD - 887B 887C 8880 8883 8886 8887 8889 888A - 888C 888E 888F 8890 8891 8893 8894 8895 - 8897 8898 8899 889A 889B 889D 889E 889F - 88A0 88A1 88A3 FFFD FFFD FFFD FFFD FFFD - FFFD 5C0F 5B5D 6821 8096 5578 7B11 6548 - 6954 4E9B 6B47 874E 978B 534F 631F 643A - 90AA 659C 80C1 8C10 5199 68B0 5378 87F9 - 61C8 6CC4 6CFB 8C22 5C51 85AA 82AF 950C - 6B23 8F9B 65B0 5FFB 5FC3 4FE1 8845 661F - 8165 7329 60FA 5174 5211 578B 5F62 90A2 - 884C 9192 5E78 674F 6027 59D3 5144 51F6 - 80F8 5308 6C79 96C4 718A 4F11 4FEE 7F9E - 673D 55C5 9508 79C0 8896 7EE3 589F 620C - 9700 865A 5618 987B 5F90 8BB8 84C4 9157 - 53D9 65ED 5E8F 755C 6064 7D6E 5A7F 7EEA - 7EED 8F69 55A7 5BA3 60AC 65CB 7384 -End of Item 032C - -Begin of Item 032D - Format 1 - srcBegin = D140 - srcEnd = D1FE - mappingOffset = 27FA - Mapping = - 88AC 88AE 88AF 88B0 88B2 88B3 88B4 88B5 - 88B6 88B8 88B9 88BA 88BB 88BD 88BE 88BF - 88C0 88C3 88C4 88C7 88C8 88CA 88CB 88CC - 88CD 88CF 88D0 88D1 88D3 88D6 88D7 88DA - 88DB 88DC 88DD 88DE 88E0 88E1 88E6 88E7 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 88F2 - 88F5 88F6 88F7 88FA 88FB 88FD 88FF 8900 - 8901 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 8909 890B 890C 890D 890E 890F 8911 8914 - 8915 8916 8917 8918 891C 891D 891E 891F - 8920 8922 8923 8924 8926 8927 8928 8929 - 892C 892D 892E 892F 8931 8932 8933 8935 - 8937 9009 7663 7729 7EDA 9774 859B 5B66 - 7A74 96EA 8840 52CB 718F 5FAA 65EC 8BE2 - 5BFB 9A6F 5DE1 6B89 6C5B 8BAD 8BAF 900A - 8FC5 538B 62BC 9E26 9E2D 5440 4E2B 82BD - 7259 869C 5D16 8859 6DAF 96C5 54D1 4E9A - 8BB6 7109 54BD 9609 70DF 6DF9 76D0 4E25 - 7814 8712 5CA9 5EF6 8A00 989C 960E 708E - 6CBF 5944 63A9 773C 884D 6F14 8273 5830 - 71D5 538C 781A 96C1 5501 5F66 7130 5BB4 - 8C1A 9A8C 6B83 592E 9E2F 79E7 6768 626C - 4F6F 75A1 7F8A 6D0B 9633 6C27 4EF0 75D2 - 517B 6837 6F3E 9080 8170 5996 7476 -End of Item 032D - -Begin of Item 032E - Format 1 - srcBegin = D249 - srcEnd = D24A - mappingOffset = 28B9 - Mapping = - 8942 8943 -End of Item 032E - -Begin of Item 032F - Format 1 - srcBegin = D27E - srcEnd = D285 - mappingOffset = 28BB - Mapping = - 897C FFFD 897D 897E 8980 8982 8984 8985 -End of Item 032F - -Begin of Item 0330 - Format 1 - srcBegin = D2A1 - srcEnd = D2FE - mappingOffset = 28C3 - Mapping = - 6447 5C27 9065 7A91 8C23 59DA 54AC 8200 - 836F 8981 8000 6930 564E 8036 7237 91CE - 51B6 4E5F 9875 6396 4E1A 53F6 66F3 814B - 591C 6DB2 4E00 58F9 533B 63D6 94F1 4F9D - 4F0A 8863 9890 5937 9057 79FB 4EEA 80F0 - 7591 6C82 5B9C 59E8 5F5D 6905 8681 501A - 5DF2 4E59 77E3 4EE5 827A 6291 6613 9091 - 5C79 4EBF 5F79 81C6 9038 8084 75AB 4EA6 - 88D4 610F 6BC5 5FC6 4E49 76CA 6EA2 8BE3 - 8BAE 8C0A 8BD1 5F02 7FFC 7FCC 7ECE 8335 - 836B 56E0 6BB7 97F3 9634 59FB 541F 94F6 - 6DEB 5BC5 996E 5C39 5F15 9690 -End of Item 0330 - -Begin of Item 0331 - Format 1 - srcBegin = D35F - srcEnd = D384 - mappingOffset = 2921 - Mapping = - 89C3 89CD 89D3 89D4 89D5 89D7 89D8 89D9 - 89DB 89DD 89DF 89E0 89E1 89E2 89E4 89E7 - 89E8 89E9 89EA 89EC 89ED 89EE 89F0 89F1 - 89F2 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 89FB 89FC 89FD 89FE 89FF -End of Item 0331 - -Begin of Item 0332 - Format 1 - srcBegin = D3A1 - srcEnd = D3FE - mappingOffset = 2947 - Mapping = - 5370 82F1 6A31 5A74 9E70 5E94 7F28 83B9 - 8424 8425 8367 8747 8FCE 8D62 76C8 5F71 - 9896 786C 6620 54DF 62E5 4F63 81C3 75C8 - 5EB8 96CD 8E0A 86F9 548F 6CF3 6D8C 6C38 - 607F 52C7 7528 5E7D 4F18 60A0 5FE7 5C24 - 7531 90AE 94C0 72B9 6CB9 6E38 9149 6709 - 53CB 53F3 4F51 91C9 8BF1 53C8 5E7C 8FC2 - 6DE4 4E8E 76C2 6986 865E 611A 8206 4F59 - 4FDE 903E 9C7C 6109 6E1D 6E14 9685 4E88 - 5A31 96E8 4E0E 5C7F 79B9 5B87 8BED 7FBD - 7389 57DF 828B 90C1 5401 9047 55BB 5CEA - 5FA1 6108 6B32 72F1 80B2 8A89 -End of Item 0332 - -Begin of Item 0333 - Format 1 - srcBegin = D4A1 - srcEnd = D4FE - mappingOffset = 29A5 - Mapping = - 6D74 5BD3 88D5 9884 8C6B 9A6D 9E33 6E0A - 51A4 5143 57A3 8881 539F 63F4 8F95 56ED - 5458 5706 733F 6E90 7F18 8FDC 82D1 613F - 6028 9662 66F0 7EA6 8D8A 8DC3 94A5 5CB3 - 7CA4 6708 60A6 9605 8018 4E91 90E7 5300 - 9668 5141 8FD0 8574 915D 6655 97F5 5B55 - 531D 7838 6742 683D 54C9 707E 5BB0 8F7D - 518D 5728 54B1 6512 6682 8D5E 8D43 810F - 846C 906D 7CDF 51FF 85FB 67A3 65E9 6FA1 - 86A4 8E81 566A 9020 7682 7076 71E5 8D23 - 62E9 5219 6CFD 8D3C 600E 589E 618E 66FE - 8D60 624E 55B3 6E23 672D 8F67 -End of Item 0333 - -Begin of Item 0334 - Format 1 - srcBegin = D5A1 - srcEnd = D5FE - mappingOffset = 2A03 - Mapping = - 94E1 95F8 7728 6805 69A8 548B 4E4D 70B8 - 8BC8 6458 658B 5B85 7A84 503A 5BE8 77BB - 6BE1 8A79 7C98 6CBE 76CF 65A9 8F97 5D2D - 5C55 8638 6808 5360 6218 7AD9 6E5B 7EFD - 6A1F 7AE0 5F70 6F33 5F20 638C 6DA8 6756 - 4E08 5E10 8D26 4ED7 80C0 7634 969C 62DB - 662D 627E 6CBC 8D75 7167 7F69 5146 8087 - 53EC 906E 6298 54F2 86F0 8F99 8005 9517 - 8517 8FD9 6D59 73CD 659F 771F 7504 7827 - 81FB 8D1E 9488 4FA6 6795 75B9 8BCA 9707 - 632F 9547 9635 84B8 6323 7741 5F81 72F0 - 4E89 6014 6574 62EF 6B63 653F -End of Item 0334 - -Begin of Item 0335 - Format 1 - srcBegin = D680 - srcEnd = D681 - mappingOffset = 2A61 - Mapping = - 8B24 8B25 -End of Item 0335 - -Begin of Item 0336 - Format 1 - srcBegin = D6A1 - srcEnd = D6FE - mappingOffset = 2A63 - Mapping = - 5E27 75C7 90D1 8BC1 829D 679D 652F 5431 - 8718 77E5 80A2 8102 6C41 4E4B 7EC7 804C - 76F4 690D 6B96 6267 503C 4F84 5740 6307 - 6B62 8DBE 53EA 65E8 7EB8 5FD7 631A 63B7 - 81F3 81F4 7F6E 5E1C 5CD9 5236 667A 79E9 - 7A1A 8D28 7099 75D4 6EDE 6CBB 7A92 4E2D - 76C5 5FE0 949F 8877 7EC8 79CD 80BF 91CD - 4EF2 4F17 821F 5468 5DDE 6D32 8BCC 7CA5 - 8F74 8098 5E1A 5492 76B1 5B99 663C 9AA4 - 73E0 682A 86DB 6731 732A 8BF8 8BDB 9010 - 7AF9 70DB 716E 62C4 77A9 5631 4E3B 8457 - 67F1 52A9 86C0 8D2E 94F8 7B51 -End of Item 0336 - -Begin of Item 0337 - Format 1 - srcBegin = D760 - srcEnd = D764 - mappingOffset = 2AC1 - Mapping = - 8B67 8B68 8B69 8B6A 8B6B -End of Item 0337 - -Begin of Item 0338 - Format 1 - srcBegin = D799 - srcEnd = D7F9 - mappingOffset = 2AC6 - Mapping = - 8BAC 8BB1 8BBB 8BC7 8BD0 8BEA 8C09 8C1E - 4F4F 6CE8 795D 9A7B 6293 722A 62FD 4E13 - 7816 8F6C 64B0 8D5A 7BC6 6869 5E84 88C5 - 5986 649E 58EE 72B6 690E 9525 8FFD 8D58 - 5760 7F00 8C06 51C6 6349 62D9 5353 684C - 7422 8301 914C 5544 7740 707C 6D4A 5179 - 54A8 8D44 59FF 6ECB 6DC4 5B5C 7D2B 4ED4 - 7C7D 6ED3 5B50 81EA 6E0D 5B57 9B03 68D5 - 8E2A 5B97 7EFC 603B 7EB5 90B9 8D70 594F - 63CD 79DF 8DB3 5352 65CF 7956 8BC5 963B - 7EC4 94BB 7E82 5634 9189 6700 7F6A 5C0A - 9075 6628 5DE6 4F50 67DE 505A 4F5C 5750 - 5EA7 -End of Item 0338 - -Begin of Item 0339 - Format 1 - srcBegin = D849 - srcEnd = D85B - mappingOffset = 2B27 - Mapping = - 8C42 8C43 8C44 8C45 8C48 8C4A 8C4B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8C56 - 8C57 8C58 8C59 -End of Item 0339 - -Begin of Item 033A - Format 1 - srcBegin = D870 - srcEnd = D88B - mappingOffset = 2B3A - Mapping = - 8C74 8C75 8C76 8C77 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 8C83 8C84 8C86 8C87 FFFD - 8C88 8C8B FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 8C95 8C96 8C97 -End of Item 033A - -Begin of Item 033B - Format 1 - srcBegin = D8A1 - srcEnd = D8FE - mappingOffset = 2B56 - Mapping = - 4E8D 4E0C 5140 4E10 5EFF 5345 4E15 4E98 - 4E1E 9B32 5B6C 5669 4E28 79BA 4E3F 5315 - 4E47 592D 723B 536E 6C10 56DF 80E4 9997 - 6BD3 777E 9F17 4E36 4E9F 9F10 4E5C 4E69 - 4E93 8288 5B5B 556C 560F 4EC4 538D 539D - 53A3 53A5 53AE 9765 8D5D 531A 53F5 5326 - 532E 533E 8D5C 5366 5363 5202 5208 520E - 522D 5233 523F 5240 524C 525E 5261 525C - 84AF 527D 5282 5281 5290 5293 5182 7F54 - 4EBB 4EC3 4EC9 4EC2 4EE8 4EE1 4EEB 4EDE - 4F1B 4EF3 4F22 4F64 4EF5 4F25 4F27 4F09 - 4F2B 4F5E 4F67 6538 4F5A 4F5D -End of Item 033B - -Begin of Item 033C - Format 1 - srcBegin = D9A1 - srcEnd = D9FE - mappingOffset = 2BB4 - Mapping = - 4F5F 4F57 4F32 4F3D 4F76 4F74 4F91 4F89 - 4F83 4F8F 4F7E 4F7B 4FAA 4F7C 4FAC 4F94 - 4FE6 4FE8 4FEA 4FC5 4FDA 4FE3 4FDC 4FD1 - 4FDF 4FF8 5029 504C 4FF3 502C 500F 502E - 502D 4FFE 501C 500C 5025 5028 507E 5043 - 5055 5048 504E 506C 507B 50A5 50A7 50A9 - 50BA 50D6 5106 50ED 50EC 50E6 50EE 5107 - 510B 4EDD 6C3D 4F58 4F65 4FCE 9FA0 6C46 - 7C74 516E 5DFD 9EC9 9998 5181 5914 52F9 - 530D 8A07 5310 51EB 5919 5155 4EA0 5156 - 4EB3 886E 88A4 4EB5 8114 88D2 7980 5B34 - 8803 7FB8 51AB 51B1 51BD 51BC -End of Item 033C - -Begin of Item 033D - Format 1 - srcBegin = DA4F - srcEnd = DA80 - mappingOffset = 2C12 - Mapping = - 8D20 8D51 8D52 8D57 8D5F 8D65 8D68 8D69 - 8D6A 8D6C 8D6E 8D6F 8D71 8D72 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8D82 - 8D83 8D86 8D87 8D88 8D89 8D8C 8D8D 8D8E - 8D8F 8D90 8D92 8D93 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 8DA0 8DA1 - FFFD 8DA2 -End of Item 033D - -Begin of Item 033E - Format 1 - srcBegin = DA8E - srcEnd = DAFE - mappingOffset = 2C44 - Mapping = - 8DB2 8DB6 8DB7 8DB9 8DBB 8DBD 8DC0 8DC1 - 8DC2 8DC5 8DC7 8DC8 8DC9 8DCA 8DCD 8DD0 - 8DD2 8DD3 8DD4 51C7 5196 51A2 51A5 8BA0 - 8BA6 8BA7 8BAA 8BB4 8BB5 8BB7 8BC2 8BC3 - 8BCB 8BCF 8BCE 8BD2 8BD3 8BD4 8BD6 8BD8 - 8BD9 8BDC 8BDF 8BE0 8BE4 8BE8 8BE9 8BEE - 8BF0 8BF3 8BF6 8BF9 8BFC 8BFF 8C00 8C02 - 8C04 8C07 8C0C 8C0F 8C11 8C12 8C14 8C15 - 8C16 8C19 8C1B 8C18 8C1D 8C1F 8C20 8C21 - 8C25 8C27 8C2A 8C2B 8C2E 8C2F 8C32 8C33 - 8C35 8C36 5369 537A 961D 9622 9621 9631 - 962A 963D 963C 9642 9649 9654 965F 9667 - 966C 9672 9674 9688 968D 9697 96B0 9097 - 909B 909D 9099 90AC 90A1 90B4 90B3 90B6 - 90BA -End of Item 033E - -Begin of Item 033F - Format 1 - srcBegin = DB40 - srcEnd = DB88 - mappingOffset = 2CB5 - Mapping = - 8DD5 8DD8 8DD9 8DDC 8DE0 8DE1 8DE2 8DE5 - 8DE6 8DE7 8DE9 8DED 8DEE 8DF0 8DF1 8DF2 - 8DF4 8DF6 8DFC FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 8E06 8E07 8E08 8E0B 8E0D 8E0E - 8E10 8E11 8E12 8E13 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 8E20 8E21 8E24 8E25 - 8E26 8E27 8E28 8E2B 8E2D 8E30 8E32 8E33 - 8E34 8E36 8E37 8E38 8E3B 8E3C 8E3E FFFD - 8E3F 8E43 8E45 8E46 8E4C 8E4D 8E4E 8E4F - 8E50 -End of Item 033F - -Begin of Item 0340 - Format 1 - srcBegin = DB9B - srcEnd = DBFE - mappingOffset = 2CFE - Mapping = - 8E67 8E68 8E6A 8E6B 8E6E 8E71 90B8 90B0 - 90CF 90C5 90BE 90D0 90C4 90C7 90D3 90E6 - 90E2 90DC 90D7 90DB 90EB 90EF 90FE 9104 - 9122 911E 9123 9131 912F 9139 9143 9146 - 520D 5942 52A2 52AC 52AD 52BE 54FF 52D0 - 52D6 52F0 53DF 71EE 77CD 5EF4 51F5 51FC - 9B2F 53B6 5F01 755A 5DEF 574C 57A9 57A1 - 587E 58BC 58C5 58D1 5729 572C 572A 5733 - 5739 572E 572F 575C 573B 5742 5769 5785 - 576B 5786 577C 577B 5768 576D 5776 5773 - 57AD 57A4 578C 57B2 57CF 57A7 57B4 5793 - 57A0 57D5 57D8 57DA 57D9 57D2 57B8 57F4 - 57EF 57F8 57E4 57DD -End of Item 0340 - -Begin of Item 0341 - Format 1 - srcBegin = DC40 - srcEnd = DC5F - mappingOffset = 2D62 - Mapping = - 8E73 8E75 8E77 8E78 8E79 8E7A 8E7B 8E7D - 8E7E 8E80 8E82 8E83 8E84 8E86 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 8E91 8E92 8E93 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8E9D -End of Item 0341 - -Begin of Item 0342 - Format 1 - srcBegin = DC6C - srcEnd = DC6F - mappingOffset = 2D82 - Mapping = - 8EAD 8EAE 8EB0 8EB1 -End of Item 0342 - -Begin of Item 0343 - Format 1 - srcBegin = DCA1 - srcEnd = DCFE - mappingOffset = 2D86 - Mapping = - 580B 580D 57FD 57ED 5800 581E 5819 5844 - 5820 5865 586C 5881 5889 589A 5880 99A8 - 9F19 61FF 8279 827D 827F 828F 828A 82A8 - 8284 828E 8291 8297 8299 82AB 82B8 82BE - 82B0 82C8 82CA 82E3 8298 82B7 82AE 82CB - 82CC 82C1 82A9 82B4 82A1 82AA 829F 82C4 - 82CE 82A4 82E1 8309 82F7 82E4 830F 8307 - 82DC 82F4 82D2 82D8 830C 82FB 82D3 8311 - 831A 8306 8314 8315 82E0 82D5 831C 8351 - 835B 835C 8308 8392 833C 8334 8331 839B - 835E 832F 834F 8347 8343 835F 8340 8317 - 8360 832D 833A 8333 8366 8365 -End of Item 0343 - -Begin of Item 0344 - Format 1 - srcBegin = DDA1 - srcEnd = DDFE - mappingOffset = 2DE4 - Mapping = - 8368 831B 8369 836C 836A 836D 836E 83B0 - 8378 83B3 83B4 83A0 83AA 8393 839C 8385 - 837C 83B6 83A9 837D 83B8 837B 8398 839E - 83A8 83BA 83BC 83C1 8401 83E5 83D8 5807 - 8418 840B 83DD 83FD 83D6 841C 8438 8411 - 8406 83D4 83DF 840F 8403 83F8 83F9 83EA - 83C5 83C0 8426 83F0 83E1 845C 8451 845A - 8459 8473 8487 8488 847A 8489 8478 843C - 8446 8469 8476 848C 848E 8431 846D 84C1 - 84CD 84D0 84E6 84BD 84D3 84CA 84BF 84BA - 84E0 84A1 84B9 84B4 8497 84E5 84E3 850C - 750D 8538 84F0 8539 851F 853A -End of Item 0344 - -Begin of Item 0345 - Format 1 - srcBegin = DE61 - srcEnd = DEFE - mappingOffset = 2E42 - Mapping = - 8F6A 8F80 8F8C 8F92 8F9D 8FA0 8FA1 8FA2 - 8FA4 8FA5 8FA6 8FA7 8FAA 8FAC 8FAD 8FAE - 8FAF 8FB2 8FB3 8FB4 8FB5 8FB7 8FB8 8FBA - 8FBB 8FBC 8FBF 8FC0 8FC3 8FC6 FFFD 8FC9 - 8FCA 8FCB 8FCC 8FCD 8FCF 8FD2 8FD6 8FD7 - 8FDA 8FE0 8FE1 8FE3 8FE7 8FEC 8FEF 8FF1 - 8FF2 8FF4 8FF5 8FF6 8FFA 8FFB 8FFC 8FFE - 8FFF 9007 9008 900C 900E 9013 9015 9018 - 8556 853B 84FF 84FC 8559 8548 8568 8564 - 855E 857A 77A2 8543 8572 857B 85A4 85A8 - 8587 858F 8579 85AE 859C 8585 85B9 85B7 - 85B0 85D3 85C1 85DC 85FF 8627 8605 8629 - 8616 863C 5EFE 5F08 593C 5941 8037 5955 - 595A 5958 530F 5C22 5C25 5C2C 5C34 624C - 626A 629F 62BB 62CA 62DA 62D7 62EE 6322 - 62F6 6339 634B 6343 63AD 63F6 6371 637A - 638E 63B4 636D 63AC 638A 6369 63AE 63BC - 63F2 63F8 63E0 63FF 63C4 63DE 63CE 6452 - 63C6 63BE 6445 6441 640B 641B 6420 640C - 6426 6421 645E 6484 646D 6496 -End of Item 0345 - -Begin of Item 0346 - Format 1 - srcBegin = DF40 - srcEnd = DFFE - mappingOffset = 2EE0 - Mapping = - 9019 901C 9023 9024 9025 FFFD FFFD FFFD - FFFD FFFD FFFD 9030 9031 9032 9033 9034 - 9037 9039 903A 903D 903F 9040 9043 9045 - 9046 9048 9049 904A 904B 904C 904E 9054 - 9055 9056 9059 905A FFFD FFFD FFFD FFFD - FFFD FFFD 9064 9066 9067 9069 906A 906B - 906C 906F 9070 9071 9072 9073 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 907E 9081 FFFD - 9084 9085 9086 9087 9089 908A 908C 908D - 908E 908F 9090 9092 9094 9096 9098 909A - 909C 909E 909F 90A0 90A4 90A5 90A7 90A8 - 90A9 90AB 90AD 90B2 90B7 90BC 90BD 90BF - 90C0 647A 64B7 64B8 6499 64BA 64C0 64D0 - 64D7 64E4 64E2 6509 6525 652E 5F0B 5FD2 - 7519 5F11 535F 53F1 53FD 53E9 53E8 53FB - 5412 5416 5406 544B 5452 5453 5454 5456 - 5443 5421 5457 5459 5423 5432 5482 5494 - 5477 5471 5464 549A 549B 5484 5476 5466 - 549D 54D0 54AD 54C2 54B4 54D2 54A7 54A6 - 54D3 54D4 5472 54A3 54D5 54BB 54BF 54CC - 54D9 54DA 54DC 54A9 54AA 54A4 54DD 54CF - 54DE 551B 54E7 5520 54FD 5514 54F3 5522 - 5523 550F 5511 5527 552A 5567 558F 55B5 - 5549 556D 5541 5555 553F 5550 553C -End of Item 0346 - -Begin of Item 0347 - Format 1 - srcBegin = E040 - srcEnd = E067 - mappingOffset = 2F9F - Mapping = - 90C2 90C3 90C6 90C8 90C9 90CB 90CC 90CD - 90D2 90D4 90D5 90D6 90D8 90D9 90DA 90DE - 90DF 90E0 90E3 90E4 90E5 90E9 90EA 90EC - 90EE 90F0 90F1 90F2 90F3 90F5 90F6 90F7 - 90F9 90FA 90FB 90FC 90FF 9100 9101 9103 -End of Item 0347 - -Begin of Item 0348 - Format 1 - srcBegin = E07C - srcEnd = E083 - mappingOffset = 2FC7 - Mapping = - 911A 911B 911C FFFD 911D 911F 9120 9121 -End of Item 0348 - -Begin of Item 0349 - Format 2 - srcBegin = E08F - destBegin = 9130 -End of Item 0349 - -Begin of Item 034A - Format 1 - srcBegin = E0A0 - srcEnd = E0FE - mappingOffset = 2FCF - Mapping = - 9144 5537 5556 5575 5576 5577 5533 5530 - 555C 558B 55D2 5583 55B1 55B9 5588 5581 - 559F 557E 55D6 5591 557B 55DF 55BD 55BE - 5594 5599 55EA 55F7 55C9 561F 55D1 55EB - 55EC 55D4 55E6 55DD 55C4 55EF 55E5 55F2 - 55F3 55CC 55CD 55E8 55F5 55E4 8F94 561E - 5608 560C 5601 5624 5623 55FE 5600 5627 - 562D 5658 5639 5657 562C 564D 5662 5659 - 565C 564C 5654 5686 5664 5671 566B 567B - 567C 5685 5693 56AF 56D4 56D7 56DD 56E1 - 56F5 56EB 56F9 56FF 5704 570A 5709 571C - 5E0F 5E19 5E14 5E11 5E31 5E3B 5E3C -End of Item 034A - -Begin of Item 034B - Format 1 - srcBegin = E140 - srcEnd = E160 - mappingOffset = 302E - Mapping = - 9145 9147 9148 9151 9153 9154 9155 9156 - 9158 9159 915B 915C 915F 9160 9166 9167 - 9168 916B 916D 9173 917A 917B 917C 9180 - 9181 9182 9183 9184 9186 9188 918A 918E - 918F -End of Item 034B - -Begin of Item 034C - Format 1 - srcBegin = E174 - srcEnd = E17E - mappingOffset = 304F - Mapping = - 91AB 91AC 91B0 91B1 91B2 91B3 91B6 91B7 - 91B8 91B9 91BB -End of Item 034C - -Begin of Item 034D - Format 1 - srcBegin = E18B - srcEnd = E18D - mappingOffset = 305A - Mapping = - 91C8 91CB 91D0 -End of Item 034D - -Begin of Item 034E - Format 1 - srcBegin = E1A1 - srcEnd = E1FE - mappingOffset = 305D - Mapping = - 5E37 5E44 5E54 5E5B 5E5E 5E61 5C8C 5C7A - 5C8D 5C90 5C96 5C88 5C98 5C99 5C91 5C9A - 5C9C 5CB5 5CA2 5CBD 5CAC 5CAB 5CB1 5CA3 - 5CC1 5CB7 5CC4 5CD2 5CE4 5CCB 5CE5 5D02 - 5D03 5D27 5D26 5D2E 5D24 5D1E 5D06 5D1B - 5D58 5D3E 5D34 5D3D 5D6C 5D5B 5D6F 5D5D - 5D6B 5D4B 5D4A 5D69 5D74 5D82 5D99 5D9D - 8C73 5DB7 5DC5 5F73 5F77 5F82 5F87 5F89 - 5F8C 5F95 5F99 5F9C 5FA8 5FAD 5FB5 5FBC - 8862 5F61 72AD 72B0 72B4 72B7 72B8 72C3 - 72C1 72CE 72CD 72D2 72E8 72EF 72E9 72F2 - 72F4 72F7 7301 72F3 7303 72FA -End of Item 034E - -Begin of Item 034F - Format 1 - srcBegin = E2A1 - srcEnd = E2FE - mappingOffset = 30BB - Mapping = - 72FB 7317 7313 7321 730A 731E 731D 7315 - 7322 7339 7325 732C 7338 7331 7350 734D - 7357 7360 736C 736F 737E 821B 5925 98E7 - 5924 5902 9963 FFFD FFFD FFFD FFFD FFFD - FFFD 9974 9977 997D 9980 9984 9987 998A - 998D 9990 9991 9993 9994 9995 5E80 5E91 - 5E8B 5E96 5EA5 5EA0 5EB9 5EB5 5EBE 5EB3 - 8D53 5ED2 5ED1 5EDB 5EE8 5EEA 81BA 5FC4 - 5FC9 5FD6 5FCF 6003 5FEE 6004 5FE1 5FE4 - 5FFE 6005 6006 5FEA 5FED 5FF8 6019 6035 - 6026 601B 600F 600D 6029 602B 600A 603F - 6021 6078 6079 607B 607A 6042 -End of Item 034F - -Begin of Item 0350 - Format 1 - srcBegin = E3A1 - srcEnd = E3FE - mappingOffset = 3119 - Mapping = - 606A 607D 6096 609A 60AD 609D 6083 6092 - 608C 609B 60EC 60BB 60B1 60DD 60D8 60C6 - 60DA 60B4 6120 6126 6115 6123 60F4 6100 - 610E 612B 614A 6175 61AC 6194 61A7 61B7 - 61D4 61F5 5FDD 96B3 95E9 95EB 95F1 95F3 - 95F5 95F6 95FC 95FE 9603 9604 9606 9608 - 960A 960B 960C 960D 960F 9612 9615 9616 - 9617 9619 961A 4E2C 723F 6215 6C35 6C54 - 6C5C 6C4A 6CA3 6C85 6C90 6C94 6C8C 6C68 - 6C69 6C74 6C76 6C86 6CA9 6CD0 6CD4 6CAD - 6CF7 6CF8 6CF1 6CD7 6CB2 6CE0 6CD6 6CFA - 6CEB 6CEE 6CB1 6CD3 6CEF 6CFE -End of Item 0350 - -Begin of Item 0351 - Format 1 - srcBegin = E4A1 - srcEnd = E4FE - mappingOffset = 3177 - Mapping = - 6D39 6D27 6D0C 6D43 6D48 6D07 6D04 6D19 - 6D0E 6D2B 6D4D 6D2E 6D35 6D1A 6D4F 6D52 - 6D54 6D33 6D91 6D6F 6D9E 6DA0 6D5E 6D93 - 6D94 6D5C 6D60 6D7C 6D63 6E1A 6DC7 6DC5 - 6DDE 6E0E 6DBF 6DE0 6E11 6DE6 6DDD 6DD9 - 6E16 6DAB 6E0C 6DAE 6E2B 6E6E 6E4E 6E6B - 6EB2 6E5F 6E86 6E53 6E54 6E32 6E25 6E44 - 6EDF 6EB1 6E98 6EE0 6F2D 6EE2 6EA5 6EA7 - 6EBD 6EBB 6EB7 6ED7 6EB4 6ECF 6E8F 6EC2 - 6E9F 6F62 6F46 6F47 6F24 6F15 6EF9 6F2F - 6F36 6F4B 6F74 6F2A 6F09 6F29 6F89 6F8D - 6F8C 6F78 6F72 6F7C 6F7A 6FD1 -End of Item 0351 - -Begin of Item 0352 - Format 1 - srcBegin = E5A0 - srcEnd = E5FE - mappingOffset = 31D5 - Mapping = - 936B 6FC9 6FA7 6FB9 6FB6 6FC2 6FE1 6FEE - 6FDE 6FE0 6FEF 701A 7023 701B 7039 7035 - 704F 705E 5B80 5B84 5B95 5B93 5BA5 5BB8 - 752F 9A9E 6434 5BE4 5BEE 8930 5BF0 8E47 - 8B07 8FB6 8FD3 8FD5 8FE5 8FEE 8FE4 8FE9 - 8FE6 8FF3 8FE8 9005 9004 900B 9026 9011 - 900D 9016 9021 9035 9036 902D 902F 9044 - 9051 9052 9050 9068 9058 9062 905B 66B9 - 9074 907D 9082 9088 9083 908B 5F50 5F57 - 5F56 5F58 5C3B 54AB 5C50 5C59 5B71 5C63 - 5C66 7FBC 5F2A 5F29 5F2D 8274 5F3C 9B3B - 5C6E 5981 5983 598D 59A9 59AA 59A3 -End of Item 0352 - -Begin of Item 0353 - Format 1 - srcBegin = E69E - srcEnd = E6FE - mappingOffset = 3234 - Mapping = - 93CB 93CC 93CD 5997 59CA 59AB 599E 59A4 - 59D2 59B2 59AF 59D7 59BE 5A05 5A06 59DD - 5A08 59E3 59D8 59F9 5A0C 5A09 5A32 5A34 - 5A11 5A23 5A13 5A40 5A67 5A4A 5A55 5A3C - 5A62 5A75 80EC 5AAA 5A9B 5A77 5A7A 5ABE - 5AEB 5AB2 5AD2 5AD4 5AB8 5AE0 5AE3 5AF1 - 5AD6 5AE6 5AD8 5ADC 5B09 5B17 5B16 5B32 - 5B37 5B40 5C15 5C1C 5B5A 5B65 5B73 5B51 - 5B53 5B62 9A75 9A77 9A78 9A7A 9A7F 9A7D - 9A80 9A81 9A85 9A88 9A8A 9A90 9A92 9A93 - 9A96 9A98 9A9B 9A9C 9A9D 9A9F 9AA0 9AA2 - 9AA3 9AA5 9AA7 7E9F 7EA1 7EA3 7EA5 7EA8 - 7EA9 -End of Item 0353 - -Begin of Item 0354 - Format 1 - srcBegin = E7A1 - srcEnd = E7FE - mappingOffset = 3295 - Mapping = - 7EAD 7EB0 7EBE 7EC0 7EC1 7EC2 7EC9 7ECB - 7ECC 7ED0 7ED4 7ED7 7EDB 7EE0 7EE1 7EE8 - 7EEB 7EEE 7EEF 7EF1 7EF2 7F0D 7EF6 7EFA - 7EFB 7EFE 7F01 7F02 7F03 7F07 7F08 7F0B - 7F0C 7F0F 7F11 7F12 7F17 7F19 7F1C 7F1B - 7F1F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7F2A 7F2B 7F2C 7F2D 7F2F 7F30 7F31 7F32 - 7F33 7F35 5E7A 757F 5DDB 753E 9095 738E - 7391 73AE 73A2 739F 73CF 73C2 73D1 73B7 - 73B3 73C0 73C9 73C8 73E5 73D9 987C 740A - 73E9 73E7 73DE 73BA 73F2 740F 742A 745B - 7426 7425 7428 7430 742E 742C -End of Item 0354 - -Begin of Item 0355 - Format 1 - srcBegin = E87B - srcEnd = E87E - mappingOffset = 32F3 - Mapping = - 946C 946D 946E 946F -End of Item 0355 - -Begin of Item 0356 - Format 1 - srcBegin = E895 - srcEnd = E8FE - mappingOffset = 32F7 - Mapping = - 9491 9496 9498 94C7 94CF 94D3 94D4 94DA - 94E6 94FB 951C 9520 741B 741A 7441 745C - 7457 7455 7459 7477 746D 747E 749C 748E - 7480 7481 7487 748B 749E 74A8 74A9 7490 - 74A7 74D2 74BA 97EA 97EB 97EC 674C 6753 - 675E 6748 6769 67A5 6787 676A 6773 6798 - 67A7 6775 67A8 679E 67AD 678B 6777 677C - 67F0 6809 67D8 680A 67E9 67B0 680C 67D9 - 67B5 67DA 67B3 67DD 6800 67C3 67B8 67E2 - 680E 67C1 67FD 6832 6833 6860 6861 684E - 6862 6844 6864 6883 681D 6855 6866 6841 - 6867 6840 683E 684A 6849 6829 68B5 688F - 6874 6877 6893 686B 68C2 696E 68FC 691F - 6920 68F9 -End of Item 0356 - -Begin of Item 0357 - Format 1 - srcBegin = E940 - srcEnd = E94B - mappingOffset = 3361 - Mapping = - 9527 9533 953D 9543 9548 954B 9555 955A - 9560 956E 9574 9575 -End of Item 0357 - -Begin of Item 0358 - Format 1 - srcBegin = E9A1 - srcEnd = E9FE - mappingOffset = 336D - Mapping = - 6924 68F0 690B 6901 6957 68E3 6910 6971 - 6939 6960 6942 695D 6984 696B 6980 6998 - 6978 6934 69CC 6987 6988 69CE 6989 6966 - 6963 6979 699B 69A7 69BB 69AB 69AD 69D4 - 69B1 69C1 69CA 69DF 6995 69E0 698D 69FF - 6A2F 69ED 6A17 6A18 6A65 69F2 6A44 6A3E - 6AA0 6A50 6A5B 6A35 6A8E 6A79 6A3D 6A28 - 6A58 6A7C 6A91 6A90 6AA9 6A97 6AAB 7337 - 7352 6B81 6B82 6B87 6B84 6B92 6B93 6B8D - 6B9A 6B9B 6BA1 6BAA 8F6B 8F6D 8F71 8F72 - 8F73 8F75 8F76 8F78 8F77 8F79 8F7A 8F7C - 8F7E 8F81 8F82 8F84 8F87 8F8B -End of Item 0358 - -Begin of Item 0359 - Format 1 - srcBegin = EA5C - srcEnd = EA90 - mappingOffset = 33CB - Mapping = - 95EC 95FF 9607 9613 9618 961B 961E 9620 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 962B - 962C 962D 962F 9630 9637 9638 9639 963A - 963E 9641 9643 964A 964E 964F 9651 9652 - 9653 9656 9657 FFFD 9658 9659 965A 965C - 965D 965E 9660 9663 9665 9666 966B 966D - 966E 966F 9670 9671 9673 -End of Item 0359 - -Begin of Item 035A - Format 1 - srcBegin = EA9E - srcEnd = EAFE - mappingOffset = 3400 - Mapping = - 9687 9689 968A 8F8D 8F8E 8F8F 8F98 8F9A - 8ECE 620B 6217 621B 621F 6222 6221 6225 - 6224 622C 81E7 74EF 74F4 74FF 750F 7511 - 7513 6534 65EE 65EF 65F0 660A 6619 6772 - 6603 6615 6600 7085 66F7 661D 6634 6631 - 6636 6635 8006 665F 6654 6641 664F 6656 - 6661 6657 6677 6684 668C 66A7 669D 66BE - 66DB 66DC 66E6 66E9 8D32 8D33 8D36 8D3B - 8D3D 8D40 8D45 8D46 8D48 8D49 8D47 8D4D - 8D55 8D59 89C7 89CA 89CB 89CC 89CE 89CF - 89D0 89D1 726E 729F 725D 7266 726F 727E - 727F 7284 728B 728D 728F 7292 6308 6332 - 63B0 -End of Item 035A - -Begin of Item 035B - Format 1 - srcBegin = EB40 - srcEnd = EB48 - mappingOffset = 3461 - Mapping = - 968C 968E 9691 9692 9693 9695 9696 969A - 969B -End of Item 035B - -Begin of Item 035C - Format 1 - srcBegin = EB5B - srcEnd = EB6C - mappingOffset = 346A - Mapping = - 96B1 96B2 96B4 96B5 96B7 96B8 96BA 96BB - 96BF 96C2 96C3 96C8 96CA 96CB 96D0 96D1 - 96D3 96D4 -End of Item 035C - -Begin of Item 035D - Format 1 - srcBegin = EB7E - srcEnd = EBFE - mappingOffset = 347C - Mapping = - 96EB FFFD 96EC 96ED 96EE 96F0 96F1 96F2 - 96F4 96F5 96F8 96FA 96FB 96FC 96FD 96FF - 9702 9703 9705 970A 970B 970C 9710 9711 - 9712 9714 9715 9717 9718 9719 971A 971B - 971D 971F 9720 643F 64D8 8004 6BEA 6BF3 - 6BFD 6BF5 6BF9 6C05 6C07 6C06 6C0D 6C15 - 6C18 6C19 6C1A 6C21 6C29 6C24 6C2A 6C32 - 6535 6555 656B 724D 7252 7256 7230 8662 - 5216 809F 809C 8093 80BC 670A 80BD 80B1 - 80AB 80AD 80B4 80B7 80E7 80E8 80E9 80EA - 80DB 80C2 80C4 80D9 80CD 80D7 6710 80DD - 80EB 80F1 80F4 80ED 810D 810E 80F2 80FC - 6715 8112 8C5A 8136 811E 812C 8118 8132 - 8148 814C 8153 8174 8159 815A 8171 8160 - 8169 817C 817D 816D 8167 584D 5AB5 8188 - 8182 8191 6ED5 81A3 81AA 81CC 6726 81CA - 81BB -End of Item 035D - -Begin of Item 035E - Format 1 - srcBegin = EC49 - srcEnd = EC56 - mappingOffset = 34FD - Mapping = - 972B 972C 972E 972F 9731 9733 9734 9735 - 9736 9737 973A 973B 973C 973D -End of Item 035E - -Begin of Item 035F - Format 1 - srcBegin = EC6A - srcEnd = ECFE - mappingOffset = 350B - Mapping = - 9754 9755 9757 9758 975A 975C 975D 975F - 9763 9764 9766 9767 9768 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9772 9775 - 9777 9778 9779 977A 977B FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9786 9787 9788 - 9789 978A 978C 978E 978F 9790 9793 9795 - 9796 9797 9799 979A 979B 979C 979D 81C1 - 81A6 6B24 6B37 6B39 6B43 6B46 6B59 98D1 - 98D2 98D3 98D5 98D9 98DA 6BB3 5F40 6BC2 - 89F3 6590 9F51 6593 65BC 65C6 65C4 65C3 - 65CC 65CE 65D2 65D6 7080 709C 7096 709D - 70BB 70C0 70B7 70AB 70B1 70E8 70CA 7110 - 7113 7116 712F 7131 7173 715C 7168 7145 - 7172 714A 7178 717A 7198 71B3 71B5 71A8 - 71A0 71E0 71D4 71E7 71F9 721D 7228 706C - 7118 7166 71B9 623E 623D 6243 6248 6249 - 793B 7940 7946 7949 795B 795C 7953 795A - 7962 7957 7960 796F 7967 797A 7985 798A - 799A 79A7 79B3 5FD1 5FD0 -End of Item 035F - -Begin of Item 0360 - Format 1 - srcBegin = ED40 - srcEnd = ED4F - mappingOffset = 35A0 - Mapping = - 979E 979F 97A1 97A2 FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 97AC 97AE 97B0 97B1 97B3 -End of Item 0360 - -Begin of Item 0361 - Format 1 - srcBegin = ED80 - srcEnd = ED88 - mappingOffset = 35B0 - Mapping = - 97E4 97E5 97E8 97EE 97EF 97F0 97F1 97F2 - 97F4 -End of Item 0361 - -Begin of Item 0362 - Format 1 - srcBegin = EDA1 - srcEnd = EDFE - mappingOffset = 35B9 - Mapping = - 603C 605D 605A 6067 6041 6059 6063 60AB - 6106 610D 615D 61A9 619D 61CB 61D1 6206 - 8080 807F 6C93 6CF6 6DFC 77F6 77F8 7800 - 7809 7817 7818 7811 65AB 782D 781C 781D - 7839 783A 783B 781F 783C 7825 782C 7823 - 7829 784E 786D 7856 7857 7826 7850 7847 - 784C 786A 789B 7893 789A 7887 789C 78A1 - 78A3 78B2 78B9 78A5 78D4 78D9 78C9 78EC - 78F2 7905 78F4 7913 7924 791E 7934 9F9B - 9EF9 9EFB 9EFC 76F1 7704 770D 76F9 7707 - 7708 771A 7722 7719 772D 7726 7735 7738 - 7750 7751 7747 7743 775A 7768 -End of Item 0362 - -Begin of Item 0363 - Format 1 - srcBegin = EEA1 - srcEnd = EEFE - mappingOffset = 3617 - Mapping = - 7762 7765 777F 778D 777D 7780 778C 7791 - 779F 77A0 77B0 77B5 77BD 753A 7540 754E - 754B 7548 755B 7572 7579 7583 7F58 7F61 - 7F5F 8A48 7F68 7F74 7F71 7F79 7F81 7F7E - 76CD 76E5 8832 9485 9486 9487 948B 948A - 948C 948D 948F 9490 9494 9497 9495 949A - 949B 949C 94A3 94A4 94AB 94AA 94AD 94AC - 94AF 94B0 94B2 94B4 94B6 94B7 94B8 94B9 - 94BA 94BC 94BD 94BF 94C4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 94D0 94D1 94D2 94D5 - 94D6 94D7 94D9 94D8 94DB 94DE 94DF 94E0 - 94E2 94E4 94E5 94E7 94E8 94EA -End of Item 0363 - -Begin of Item 0364 - Format 1 - srcBegin = EF46 - srcEnd = EF4B - mappingOffset = 3675 - Mapping = - 988B 988E 9892 9895 9899 98A3 -End of Item 0364 - -Begin of Item 0365 - Format 1 - srcBegin = EF72 - srcEnd = EF81 - mappingOffset = 367B - Mapping = - 98CF 98D0 98D4 98D6 98D7 98DB 98DC 98DD - 98E0 98E1 98E2 98E3 98E4 FFFD 98E5 98E6 -End of Item 0365 - -Begin of Item 0366 - Format 1 - srcBegin = EFA1 - srcEnd = EFFE - mappingOffset = 368B - Mapping = - 94E9 94EB 94EE 94EF 94F3 94F4 94F5 94F7 - 94F9 94FC 94FD 94FF 9503 9502 9506 9507 - 9509 950A 950D 950E 950F 9512 9513 9514 - 9515 9516 9518 951B 951D 951E 951F 9522 - 952A 952B 9529 952C 9531 9532 9534 9536 - 9537 9538 953C 953E 953F 9542 9535 9544 - 9545 9546 9549 954C 954E 954F 9552 9553 - 9554 9556 9557 9558 9559 955B 955E 955F - 955D 9561 9562 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 956F 9571 9572 9573 - 953A 77E7 77EC 96C9 79D5 79ED 79E3 79EB - 7A06 5D47 7A03 7A02 7A1E 7A14 -End of Item 0366 - -Begin of Item 0367 - Format 1 - srcBegin = F040 - srcEnd = F046 - mappingOffset = 36E9 - Mapping = - 9908 9909 990A 990B 990C 990E 990F -End of Item 0367 - -Begin of Item 0368 - Format 1 - srcBegin = F097 - srcEnd = F0FE - mappingOffset = 36F0 - Mapping = - 9964 9966 9973 9978 9979 997B 997E 9982 - 9983 9989 7A39 7A37 7A51 9ECF 99A5 7A70 - 7688 768E 7693 7699 76A4 74DE 74E0 752C - 9E20 9E22 9E28 9E29 9E2A 9E2B 9E2C 9E32 - 9E31 9E36 9E38 9E37 9E39 9E3A 9E3E 9E41 - 9E42 9E44 9E46 9E47 9E48 9E49 9E4B 9E4C - 9E4E 9E51 9E55 9E57 9E5A 9E5B 9E5C 9E5E - 9E63 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9E71 9E6D 9E73 7592 7594 7596 75A0 759D - 75AC 75A3 75B3 75B4 75B8 75C4 75B1 75B0 - 75C3 75C2 75D6 75CD 75E3 75E8 75E6 75E4 - 75EB 75E7 7603 75F1 75FC 75FF 7610 7600 - 7605 760C 7617 760A 7625 7618 7615 7619 -End of Item 0368 - -Begin of Item 0369 - Format 1 - srcBegin = F140 - srcEnd = F141 - mappingOffset = 3758 - Mapping = - 998C 998E -End of Item 0369 - -Begin of Item 036A - Format 1 - srcBegin = F14D - srcEnd = F14E - mappingOffset = 375A - Mapping = - 99A6 99A7 -End of Item 036A - -Begin of Item 036B - Format 1 - srcBegin = F1A1 - srcEnd = F1FE - mappingOffset = 375C - Mapping = - 761B 763C 7622 7620 7640 762D 7630 763F - 7635 7643 763E 7633 764D 765E 7654 765C - 7656 766B 766F 7FCA 7AE6 7A78 7A79 7A80 - 7A86 7A88 7A95 7AA6 7AA0 7AAC 7AA8 7AAD - 7AB3 8864 8869 8872 887D 887F 8882 88A2 - 88C6 88B7 88BC 88C9 88E2 88CE 88E3 88E5 - 88F1 891A 88FC 88E8 88FE 88F0 8921 8919 - 8913 891B 890A 8934 892B 8936 8941 8966 - 897B 758B 80E5 76B2 76B4 77DC 8012 8014 - 8016 801C 8020 8022 8025 8026 8027 8029 - 8028 8031 800B 8035 8043 8046 804D 8052 - 8069 8071 8983 9878 9880 9883 -End of Item 036B - -Begin of Item 036C - Format 1 - srcBegin = F2A1 - srcEnd = F2FE - mappingOffset = 37BA - Mapping = - 9889 988C 988D 988F 9894 989A 989B 989E - 989F 98A1 98A2 98A5 98A6 864D 8654 866C - 866E 867F 867A 867C 867B 86A8 868D 868B - 86AC 869D 86A7 86A3 86AA 8693 86A9 86B6 - 86C4 86B5 86CE 86B0 86BA 86B1 86AF 86C9 - 86CF 86B4 86E9 86F1 86F2 86ED 86F3 86D0 - 8713 86DE 86F4 86DF 86D8 86D1 8703 8707 - 86F8 8708 870A 870D 8709 8723 873B 871E - 8725 872E 871A 873E 8748 8734 8731 8729 - 8737 873F 8782 8722 877D 877E 877B 8760 - 8770 874C 876E 878B 8753 8763 877C 8764 - 8759 8765 8793 87AF 87A8 87D2 -End of Item 036C - -Begin of Item 036D - Format 1 - srcBegin = F352 - srcEnd = F3FE - mappingOffset = 3818 - Mapping = - 9A72 9A83 9A89 9A8D 9A8E 9A94 9A95 9A99 - 9AA6 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 9AB2 9AB3 9AB4 9AB5 9AB9 9ABB 9ABD 9ABE - 9ABF 9AC3 9AC4 9AC6 9AC7 9AC8 9AC9 9ACA - 9ACD 9ACE 9ACF 9AD0 9AD2 9AD4 9AD5 9AD6 - 9AD7 9AD9 9ADA 9ADB 9ADC FFFD 9ADD 9ADE - 9AE0 9AE2 9AE3 9AE4 9AE5 9AE7 9AE8 9AE9 - 9AEA 9AEC 9AEE FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9AFA FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9B04 9B05 9B06 87C6 - 8788 8785 87AD 8797 8783 87AB 87E5 87AC - 87B5 87B3 87CB 87D3 87BD 87D1 87C0 87CA - 87DB 87EA 87E0 87EE 8816 8813 87FE 880A - 881B 8821 8839 883C 7F36 7F42 7F44 7F45 - 8210 7AFA 7AFD 7B08 7B03 7B04 7B15 7B0A - 7B2B 7B0F 7B47 7B38 7B2A 7B19 7B2E 7B31 - 7B20 7B25 7B24 7B33 7B3E 7B1E 7B58 7B5A - 7B45 7B75 7B4C 7B5D 7B60 7B6E 7B7B 7B62 - 7B72 7B71 7B90 7BA6 7BA7 7BB8 7BAC 7B9D - 7BA8 7B85 7BAA 7B9C 7BA2 7BAB 7BB4 7BD1 - 7BC1 7BCC 7BDD 7BDA 7BE5 7BE6 7BEA 7C0C - 7BFE 7BFC 7C0F 7C16 7C0B -End of Item 036D - -Begin of Item 036E - Format 1 - srcBegin = F440 - srcEnd = F449 - mappingOffset = 38C5 - Mapping = - 9B07 FFFD FFFD FFFD FFFD FFFD FFFD 9B10 - 9B11 9B12 -End of Item 036E - -Begin of Item 036F - Format 1 - srcBegin = F455 - srcEnd = F457 - mappingOffset = 38CF - Mapping = - 9B20 9B21 9B22 -End of Item 036F - -Begin of Item 0370 - Format 1 - srcBegin = F463 - srcEnd = F478 - mappingOffset = 38D2 - Mapping = - 9B30 9B31 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9B3D 9B3E 9B3F 9B40 9B46 9B4A - 9B4B 9B4C 9B4E 9B50 9B52 9B53 -End of Item 0370 - -Begin of Item 0371 - Format 1 - srcBegin = F4A1 - srcEnd = F4FE - mappingOffset = 38E8 - Mapping = - 7C1F 7C2A 7C26 7C38 7C41 7C40 81FE 8201 - 8202 8204 81EC 8844 8221 8222 8223 822D - 822F 8228 822B 8238 823B 8233 8234 823E - 8244 8249 824B 824F 825A 825F 8268 887E - 8885 8888 88D8 88DF 895E 7F9D 7F9F 7FA7 - 7FAF 7FB0 7FB2 7C7C 6549 7C91 7C9D 7C9C - 7C9E 7CA2 7CB2 7CBC 7CBD 7CC1 7CC7 7CCC - 7CCD 7CC8 7CC5 7CD7 7CE8 826E 66A8 7FBF - 7FCE 7FD5 7FE5 7FE1 7FE6 7FE9 7FEE 7FF3 - 7CF8 7D77 7DA6 7DAE 7E47 7E9B 9EB8 9EB4 - 8D73 8D84 8D94 8D91 8DB1 8D67 8D6D 8C47 - 8C49 914A 9150 914E 914F 9164 -End of Item 0371 - -Begin of Item 0372 - Format 1 - srcBegin = F5A1 - srcEnd = F5FE - mappingOffset = 3946 - Mapping = - 9162 9161 9170 9169 916F 917D 917E 9172 - 9174 9179 918C 9185 9190 918D 9191 91A2 - 91A3 91AA 91AD 91AE 91AF 91B5 91B4 91BA - 8C55 9E7E 8DB8 8DEB 8E05 8E59 8E69 8DB5 - 8DBF 8DBC 8DBA 8DC4 8DD6 8DD7 8DDA 8DDE - 8DCE 8DCF 8DDB 8DC6 8DEC 8DF7 8DF8 8DE3 - 8DF9 8DFB 8DE4 8E09 8DFD 8E14 8E1D 8E1F - 8E2C 8E2E 8E23 8E2F 8E3A 8E40 8E39 8E35 - 8E3D 8E31 8E49 8E41 8E42 8E51 8E52 8E4A - 8E70 8E76 8E7C 8E6F 8E74 8E85 8E8F 8E94 - 8E90 8E9C 8E9E 8C78 8C82 8C8A 8C85 8C98 - 8C94 659B 89D6 89DE 89DA 89DC -End of Item 0372 - -Begin of Item 0373 - Format 1 - srcBegin = F6A1 - srcEnd = F6FE - mappingOffset = 39A4 - Mapping = - 89E5 89EB 89EF 8A3E 8B26 9753 96E9 96F3 - 96EF 9706 9701 9708 970F 970E 972A 972D - 9730 973E 9F80 9F83 FFFD FFFD FFFD FFFD - FFFD FFFD 9F8C 9EFE 9F0B 9F0D 96B9 96BC - 96BD 96CE 96D2 77BF 96E0 928E 92AE 92C8 - 933E 936A 93CA 938F 943E 946B 9C7F 9C82 - 9C85 9C86 9C87 9C88 7A23 9C8B 9C8E 9C90 - 9C91 9C92 9C94 9C95 9C9A 9C9B FFFD FFFD - FFFD FFFD FFFD FFFD 9CA5 9CA6 9CA7 9CA8 - 9CA9 9CAB 9CAD 9CAE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9CBA 9CBB 9CBC 9CBD - 9CC4 9CC5 9CC6 9CC7 9CCA 9CCB -End of Item 0373 - -Begin of Item 0374 - Format 1 - srcBegin = F780 - srcEnd = F7FE - mappingOffset = 3A02 - Mapping = - 9C7B 9C7D 9C7E 9C80 9C83 9C84 9C89 9C8A - 9C8C 9C8F 9C93 9C96 9C97 9C98 9C99 9C9D - 9CAA 9CAC 9CAF 9CB9 9CBE 9CBF 9CC0 9CC1 - 9CC2 9CC8 9CC9 9CD1 9CD2 9CDA 9CDB 9CE0 - 9CE1 9CCC 9CCD 9CCE 9CCF 9CD0 9CD3 9CD4 - 9CD5 9CD7 9CD8 9CD9 9CDC 9CDD 9CDF 9CE2 - 977C 9785 9791 9792 9794 97AF 97AB 97A3 - 97B2 97B4 9AB1 9AB0 9AB7 9E58 9AB6 9ABA - 9ABC 9AC1 9AC0 9AC5 9AC2 9ACB 9ACC 9AD1 - 9B45 9B43 9B47 9B49 9B48 9B4D 9B51 98E8 - 990D 992E 9955 9954 9ADF 9AE1 9AE6 9AEF - 9AEB 9AFB 9AED 9AF9 9B08 9B0F 9B13 9B1F - 9B23 9EBD 9EBE 7E3B 9E82 9E87 9E88 9E8B - 9E92 93D6 9E9D 9E9F 9EDB 9EDC 9EDD 9EE0 - 9EDF 9EE2 9EE9 9EE7 9EE5 9EEA 9EEF 9F22 - 9F2C 9F2F 9F39 9F37 9F3D 9F3E 9F44 -End of Item 0374 - -Begin of Item 0375 - Format 1 - srcBegin = FB5C - srcEnd = FB86 - mappingOffset = 3A81 - Mapping = - 9E24 9E27 9E2E 9E30 9E34 9E3B 9E3C 9E40 - 9E4D 9E50 9E52 9E53 9E54 9E56 9E59 9E5D - 9E5F 9E60 9E61 9E62 9E65 9E6E 9E6F 9E72 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 9E80 FFFD 9E81 9E83 9E84 9E85 - 9E86 9E89 9E8A -End of Item 0375 - -Begin of Item 0376 - Format 1 - srcBegin = FB96 - srcEnd = FBA0 - mappingOffset = 3AAC - Mapping = - 9E9E FFFD FFFD FFFD FFFD FFFD FFFD 9EA7 - 9EA8 9EA9 9EAA -End of Item 0376 - -Begin of Item 0377 - Format 1 - srcBegin = FC49 - srcEnd = FCA0 - mappingOffset = 3AB7 - Mapping = - 9EB5 9EB6 9EB7 9EB9 9EBA 9EBC 9EBF 9EC0 - 9EC1 9EC2 9EC3 9EC5 9EC6 9EC7 9EC8 9ECA - 9ECB 9ECC 9ED0 9ED2 9ED3 9ED5 9ED6 9ED7 - 9ED9 9EDA 9EDE 9EE1 9EE3 9EE4 9EE6 9EE8 - 9EEB 9EEC 9EED 9EEE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 9EFA 9EFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 9F06 - 9F07 9F08 9F09 9F0A 9F0C 9F0F 9F11 9F12 - 9F14 9F15 9F16 9F18 FFFD FFFD FFFD FFFD - FFFD FFFD 9F21 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9F2D 9F2E 9F30 9F31 -End of Item 0377 - -Begin of Item 0378 - Format 1 - srcBegin = FD40 - srcEnd = FD4C - mappingOffset = 3B0F - Mapping = - 9F32 9F33 9F34 9F35 9F36 9F38 9F3A 9F3C - 9F3F 9F40 9F41 9F42 9F43 -End of Item 0378 - -Begin of Item 0379 - Format 1 - srcBegin = FD86 - srcEnd = FD87 - mappingOffset = 3B1C - Mapping = - 9F81 9F82 -End of Item 0379 - -Begin of Item 037A - Format 1 - srcBegin = FD94 - srcEnd = FDA0 - mappingOffset = 3B1E - Mapping = - 9F9C 9F9D 9F9E 9FA1 9FA2 9FA3 9FA4 9FA5 - F92C F979 F995 F9E7 F9F1 -End of Item 037A - -Begin of Item 037B - Format 1 - srcBegin = FE40 - srcEnd = FE4F - mappingOffset = 3B2B - Mapping = - FA0C FA0D FA0E FA0F FA11 FA13 FA14 FA18 - FA1F FA20 FA21 FA23 FA24 FA27 FA28 FA29 -End of Item 037B - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x037C, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x00E4, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0B58, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x026B */ -/* Total of Format 1 : 0x0108 */ -/* Total of Format 2 : 0x0009 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x1000, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x2111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1121, 0x1111, 0x1111, 0x2121, 0x1112, 0x1121, 0x1111, -0x1211, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1211, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1121, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x00E4 Start of MapCell Array */ -/* 0000 */ 0x8165, 0x816A, 0x4E6A, -/* 0001 */ 0x816C, 0x8175, 0x4E74, -/* 0002 */ 0x8176, 0x817C, 0x4E7F, -/* 0003 */ 0x81AC, 0x81B2, 0x4F02, -/* 0004 */ 0x81D0, 0x81D5, 0x4F47, -/* 0005 */ 0x8248, 0x8250, 0x4FB6, -/* 0006 */ 0x8273, 0x827E, 0x4FFF, -/* 0007 */ 0x8291, 0x829B, 0x502F, -/* 0008 */ 0x82B3, 0x82BA, 0x505D, -/* 0009 */ 0x82BB, 0x82C0, 0x5066, -/* 000A */ 0x82C1, 0x82C9, 0x506D, -/* 000B */ 0x82D9, 0x82ED, 0x508E, -/* 000C */ 0x82F7, 0x82FD, 0x50B3, -/* 000D */ 0x8340, 0x8351, 0x50BD, -/* 000E */ 0x8352, 0x8357, 0x50D0, -/* 000F */ 0x835B, 0x8365, 0x50DB, -/* 0010 */ 0x8374, 0x837D, 0x50FC, -/* 0011 */ 0x8382, 0x8387, 0x510C, -/* 0012 */ 0x8388, 0x8395, 0x5113, -/* 0013 */ 0x8396, 0x83B2, 0x5122, -/* 0014 */ 0x83F9, 0x83FE, 0x51D2, -/* 0015 */ 0x8448, 0x844D, 0x51E5, -/* 0016 */ 0x8471, 0x8476, 0x5244, -/* 0017 */ 0x8491, 0x849A, 0x5273, -/* 0018 */ 0x84A2, 0x84A8, 0x5289, -/* 0019 */ 0x84AB, 0x84B1, 0x5294, -/* 001A */ 0x84BA, 0x84C3, 0x52B4, -/* 001B */ 0x84D5, 0x84DA, 0x52D9, -/* 001C */ 0x84DF, 0x84E9, 0x52E5, -/* 001D */ 0x84EA, 0x84F1, 0x52F1, -/* 001E */ 0x8552, 0x855B, 0x532F, -/* 001F */ 0x8593, 0x8599, 0x53AF, -/* 0020 */ 0x85E1, 0x85E8, 0x5469, -/* 0021 */ 0x865D, 0x8662, 0x54F4, -/* 0022 */ 0x8672, 0x8677, 0x5515, -/* 0023 */ 0x86A9, 0x86AE, 0x556F, -/* 0024 */ 0x86C1, 0x86C7, 0x55A0, -/* 0025 */ 0x86C8, 0x86D0, 0x55A8, -/* 0026 */ 0x8745, 0x874C, 0x5610, -/* 0027 */ 0x8765, 0x8770, 0x5640, -/* 0028 */ 0x8790, 0x8797, 0x567D, -/* 0029 */ 0x8798, 0x879E, 0x5687, -/* 002A */ 0x87A2, 0x87B0, 0x5694, -/* 002B */ 0x87B1, 0x87BB, 0x56A4, -/* 002C */ 0x87BC, 0x87C2, 0x56B0, -/* 002D */ 0x87C7, 0x87D3, 0x56BD, -/* 002E */ 0x87D4, 0x87DC, 0x56CB, -/* 002F */ 0x87E3, 0x87E8, 0x56E5, -/* 0030 */ 0x87F8, 0x87FE, 0x570B, -/* 0031 */ 0x8840, 0x8849, 0x5712, -/* 0032 */ 0x888A, 0x8890, 0x5794, -/* 0033 */ 0x88A0, 0x88A8, 0x57B9, -/* 0034 */ 0x88A9, 0x88AF, 0x57C4, -/* 0035 */ 0x88BD, 0x88C4, 0x57E5, -/* 0036 */ 0x88F7, 0x88FE, 0x5836, -/* 0037 */ 0x8940, 0x8945, 0x583E, -/* 0038 */ 0x8946, 0x894C, 0x5845, -/* 0039 */ 0x895A, 0x895F, 0x585F, -/* 003A */ 0x8965, 0x8975, 0x586D, -/* 003B */ 0x898D, 0x8994, 0x58A0, -/* 003C */ 0x8995, 0x89A6, 0x58AA, -/* 003D */ 0x89AE, 0x89B8, 0x58C6, -/* 003E */ 0x89BC, 0x89C9, 0x58D6, -/* 003F */ 0x89CA, 0x89CF, 0x58E5, -/* 0040 */ 0x89D8, 0x89DF, 0x58FA, -/* 0041 */ 0x8A56, 0x8A62, 0x5966, -/* 0042 */ 0x8A85, 0x8A8A, 0x59B3, -/* 0043 */ 0x8A8E, 0x8A94, 0x59BF, -/* 0044 */ 0x8AAB, 0x8AB6, 0x59ED, -/* 0045 */ 0x8AD3, 0x8AD9, 0x5A2A, -/* 0046 */ 0x8AEB, 0x8AF4, 0x5A4B, -/* 0047 */ 0x8AF9, 0x8AFE, 0x5A5B, -/* 0048 */ 0x8B47, 0x8B4F, 0x5A6B, -/* 0049 */ 0x8B56, 0x8B67, 0x5A80, -/* 004A */ 0x8B68, 0x8B6E, 0x5A93, -/* 004B */ 0x8B6F, 0x8B7C, 0x5A9C, -/* 004C */ 0x8B8F, 0x8B94, 0x5AC3, -/* 004D */ 0x8BB0, 0x8BC6, 0x5AF2, -/* 004E */ 0x8BC7, 0x8BD2, 0x5B0A, -/* 004F */ 0x8BD3, 0x8BEC, 0x5B18, -/* 0050 */ 0x8BF0, 0x8BF7, 0x5B38, -/* 0051 */ 0x8BF8, 0x8BFE, 0x5B41, -/* 0052 */ 0x8C40, 0x8C47, 0x5B48, -/* 0053 */ 0x8C81, 0x8C89, 0x5BD4, -/* 0054 */ 0x8C95, 0x8C9B, 0x5BF1, -/* 0055 */ 0x8CD4, 0x8CDA, 0x5C67, -/* 0056 */ 0x8CDC, 0x8CE2, 0x5C72, -/* 0057 */ 0x8D4F, 0x8D54, 0x5CC5, -/* 0058 */ 0x8D55, 0x8D5A, 0x5CCC, -/* 0059 */ 0x8D5B, 0x8D60, 0x5CD3, -/* 005A */ 0x8D61, 0x8D67, 0x5CDA, -/* 005B */ 0x8D70, 0x8D79, 0x5CF1, -/* 005C */ 0x8D83, 0x8D88, 0x5D08, -/* 005D */ 0x8DA4, 0x8DAB, 0x5D35, -/* 005E */ 0x8DAC, 0x8DB3, 0x5D3F, -/* 005F */ 0x8DB6, 0x8DC0, 0x5D4D, -/* 0060 */ 0x8DC4, 0x8DCE, 0x5D5E, -/* 0061 */ 0x8DD6, 0x8DE2, 0x5D75, -/* 0062 */ 0x8DE3, 0x8DF8, 0x5D83, -/* 0063 */ 0x8E40, 0x8E55, 0x5DA1, -/* 0064 */ 0x8E56, 0x8E62, 0x5DB8, -/* 0065 */ 0x8E63, 0x8E69, 0x5DC6, -/* 0066 */ 0x8E6A, 0x8E76, 0x5DCE, -/* 0067 */ 0x8E94, 0x8E9B, 0x5E1E, -/* 0068 */ 0x8EAF, 0x8EB4, 0x5E46, -/* 0069 */ 0x8EB5, 0x8EBB, 0x5E4D, -/* 006A */ 0x8EC5, 0x8ED3, 0x5E63, -/* 006B */ 0x8EF8, 0x8EFE, 0x5EBF, -/* 006C */ 0x8F43, 0x8F48, 0x5ECB, -/* 006D */ 0x8F4F, 0x8F5A, 0x5EDC, -/* 006E */ 0x8F5C, 0x8F64, 0x5EEB, -/* 006F */ 0x8F85, 0x8F8B, 0x5F32, -/* 0070 */ 0x8F90, 0x8F9E, 0x5F41, -/* 0071 */ 0x8FC7, 0x8FCC, 0x5FA2, -/* 0072 */ 0x8FD0, 0x8FD5, 0x5FAF, -/* 0073 */ 0x905F, 0x9065, 0x6044, -/* 0074 */ 0x90A2, 0x90A9, 0x60BD, -/* 0075 */ 0x90E5, 0x90F7, 0x612C, -/* 0076 */ 0x90F8, 0x90FE, 0x6140, -/* 0077 */ 0x9149, 0x914F, 0x6156, -/* 0078 */ 0x9158, 0x915E, 0x6169, -/* 0079 */ 0x9164, 0x9176, 0x6178, -/* 007A */ 0x9180, 0x9186, 0x6196, -/* 007B */ 0x9187, 0x918F, 0x619E, -/* 007C */ 0x9192, 0x919B, 0x61AD, -/* 007D */ 0x919C, 0x91A1, 0x61B8, -/* 007E */ 0x91B1, 0x91C1, 0x61D5, -/* 007F */ 0x91C2, 0x91CF, 0x61E7, -/* 0080 */ 0x91D0, 0x91D8, 0x61F6, -/* 0081 */ 0x91D9, 0x91DE, 0x6200, -/* 0082 */ 0x9247, 0x924D, 0x625C, -/* 0083 */ 0x9261, 0x9266, 0x628B, -/* 0084 */ 0x92AE, 0x92B3, 0x6333, -/* 0085 */ 0x92C2, 0x92C9, 0x6356, -/* 0086 */ 0x92EA, 0x92F0, 0x6399, -/* 0087 */ 0x934D, 0x9353, 0x63D7, -/* 0088 */ 0x9374, 0x9379, 0x6415, -/* 0089 */ 0x9385, 0x938A, 0x642E, -/* 008A */ 0x9397, 0x939D, 0x644B, -/* 008B */ 0x93A7, 0x93AE, 0x645F, -/* 008C */ 0x93B3, 0x93BC, 0x646E, -/* 008D */ 0x93BD, 0x93C3, 0x647B, -/* 008E */ 0x93C6, 0x93CE, 0x6488, -/* 008F */ 0x93F0, 0x93F6, 0x64C6, -/* 0090 */ 0x9448, 0x9460, 0x64E7, -/* 0091 */ 0x9461, 0x9468, 0x6501, -/* 0092 */ 0x9469, 0x9470, 0x650A, -/* 0093 */ 0x9476, 0x947E, 0x6519, -/* 0094 */ 0x94B5, 0x94C3, 0x6578, -/* 0095 */ 0x94DA, 0x94E1, 0x65B1, -/* 0096 */ 0x94F2, 0x94F9, 0x65D8, -/* 0097 */ 0x9573, 0x9579, 0x6644, -/* 0098 */ 0x95AF, 0x95B7, 0x669E, -/* 0099 */ 0x95CA, 0x95E3, 0x66BF, -/* 009A */ 0x95E5, 0x95EC, 0x66DE, -/* 009B */ 0x95EF, 0x95F4, 0x66EA, -/* 009C */ 0x9650, 0x9655, 0x6720, -/* 009D */ 0x96A2, 0x96A9, 0x67B9, -/* 009E */ 0x96AB, 0x96B4, 0x67C5, -/* 009F */ 0x96C5, 0x96CC, 0x67F5, -/* 00A0 */ 0x96E0, 0x96E6, 0x6822, -/* 00A1 */ 0x96E7, 0x96ED, 0x682B, -/* 00A2 */ 0x96F9, 0x96FE, 0x6856, -/* 00A3 */ 0x9745, 0x974C, 0x686C, -/* 00A4 */ 0x974E, 0x9756, 0x6878, -/* 00A5 */ 0x9759, 0x9760, 0x6887, -/* 00A6 */ 0x9767, 0x9770, 0x6898, -/* 00A7 */ 0x9780, 0x9786, 0x68B9, -/* 00A8 */ 0x9788, 0x978D, 0x68C3, -/* 00A9 */ 0x97A0, 0x97A9, 0x68E4, -/* 00AA */ 0x97C1, 0x97CC, 0x6913, -/* 00AB */ 0x97D0, 0x97D7, 0x6925, -/* 00AC */ 0x97E7, 0x97F7, 0x6943, -/* 00AD */ 0x985C, 0x9861, 0x698E, -/* 00AE */ 0x9866, 0x986F, 0x699D, -/* 00AF */ 0x9883, 0x988A, 0x69C2, -/* 00B0 */ 0x9891, 0x9896, 0x69D5, -/* 00B1 */ 0x989A, 0x98A5, 0x69E1, -/* 00B2 */ 0x98AA, 0x98B3, 0x69F3, -/* 00B3 */ 0x98B5, 0x98BE, 0x6A00, -/* 00B4 */ 0x98BF, 0x98CA, 0x6A0B, -/* 00B5 */ 0x98CB, 0x98D0, 0x6A19, -/* 00B6 */ 0x98D2, 0x98D7, 0x6A22, -/* 00B7 */ 0x98E1, 0x98E7, 0x6A36, -/* 00B8 */ 0x98EF, 0x98F6, 0x6A48, -/* 00B9 */ 0x98F7, 0x98FD, 0x6A51, -/* 00BA */ 0x9948, 0x9952, 0x6A66, -/* 00BB */ 0x9953, 0x9959, 0x6A72, -/* 00BC */ 0x9962, 0x996A, 0x6A85, -/* 00BD */ 0x9971, 0x9978, 0x6A98, -/* 00BE */ 0x9979, 0x997E, 0x6AA1, -/* 00BF */ 0x9983, 0x99F5, 0x6AAD, -/* 00C0 */ 0x99F8, 0x99FE, 0x6B28, -/* 00C1 */ 0x9A54, 0x9A5F, 0x6B4D, -/* 00C2 */ 0x9A60, 0x9A67, 0x6B5A, -/* 00C3 */ 0x9A6A, 0x9A77, 0x6B6B, -/* 00C4 */ 0x9A8F, 0x9A96, 0x6BA2, -/* 00C5 */ 0x9A97, 0x9A9E, 0x6BAB, -/* 00C6 */ 0x9AA0, 0x9AA6, 0x6BB8, -/* 00C7 */ 0x9ABA, 0x9AC1, 0x6BE2, -/* 00C8 */ 0x9ACF, 0x9AD5, 0x6BFE, -/* 00C9 */ 0x9BA2, 0x9BA7, 0x6D1F, -/* 00CA */ 0x9BF3, 0x9BF8, 0x6DB9, -/* 00CB */ 0x9C5D, 0x9C64, 0x6DFD, -/* 00CC */ 0x9C83, 0x9C8A, 0x6E3B, -/* 00CD */ 0x9C8B, 0x9C92, 0x6E45, -/* 00CE */ 0x9C9E, 0x9CA8, 0x6E60, -/* 00CF */ 0x9CAB, 0x9CB9, 0x6E6F, -/* 00D0 */ 0x9CC5, 0x9CCB, 0x6E91, -/* 00D1 */ 0x9CF9, 0x9CFE, 0x6EEA, -/* 00D2 */ 0x9D48, 0x9D4F, 0x6EFA, -/* 00D3 */ 0x9D5D, 0x9D66, 0x6F16, -/* 00D4 */ 0x9D74, 0x9D7A, 0x6F37, -/* 00D5 */ 0x9D87, 0x9D90, 0x6F4E, -/* 00D6 */ 0x9D9B, 0x9DA0, 0x6F67, -/* 00D7 */ 0x9DAA, 0x9DB0, 0x6F7D, -/* 00D8 */ 0x9DB6, 0x9DC2, 0x6F8F, -/* 00D9 */ 0x9DCC, 0x9DD6, 0x6FA8, -/* 00DA */ 0x9DDB, 0x9DE0, 0x6FBA, -/* 00DB */ 0x9DE2, 0x9DE7, 0x6FC3, -/* 00DC */ 0x9DE8, 0x9DEE, 0x6FCA, -/* 00DD */ 0x9DEF, 0x9DF9, 0x6FD3, -/* 00DE */ 0x9E40, 0x9E47, 0x6FE6, -/* 00DF */ 0x9E48, 0x9E68, 0x6FF0, -/* 00E0 */ 0x9E69, 0x9E70, 0x7012, -/* 00E1 */ 0x9E71, 0x9E77, 0x701C, -/* 00E2 */ 0x9E78, 0x9E7E, 0x7024, -/* 00E3 */ 0x9E80, 0x9E89, 0x702B, -/* 00E4 */ 0x9E8D, 0x9E9E, 0x703A, -/* 00E5 */ 0x9EA1, 0x9EAE, 0x7050, -/* 00E6 */ 0x9EAF, 0x9EBA, 0x705F, -/* 00E7 */ 0x9ED7, 0x9EE3, 0x709E, -/* 00E8 */ 0x9EF1, 0x9EFD, 0x70CB, -/* 00E9 */ 0x9F4A, 0x9F50, 0x70F0, -/* 00EA */ 0x9F55, 0x9F5F, 0x70FE, -/* 00EB */ 0x9F69, 0x9F73, 0x711B, -/* 00EC */ 0x9F74, 0x9F7B, 0x7127, -/* 00ED */ 0x9F81, 0x9F8E, 0x7137, -/* 00EE */ 0x9F95, 0x9FA1, 0x714F, -/* 00EF */ 0x9FB8, 0x9FBD, 0x717E, -/* 00F0 */ 0x9FD3, 0x9FD9, 0x71A1, -/* 00F1 */ 0x9FDD, 0x9FE2, 0x71AD, -/* 00F2 */ 0x9FE7, 0x9FEF, 0x71BA, -/* 00F3 */ 0x9FF0, 0x9FF9, 0x71C4, -/* 00F4 */ 0xA040, 0xA049, 0x71D6, -/* 00F5 */ 0xA04F, 0xA054, 0x71E8, -/* 00F6 */ 0xA055, 0xA05E, 0x71EF, -/* 00F7 */ 0xA05F, 0xA06A, 0x71FA, -/* 00F8 */ 0xA06B, 0xA07E, 0x7207, -/* 00F9 */ 0xA082, 0xA08B, 0x721E, -/* 00FA */ 0xA097, 0xA09D, 0x7240, -/* 00FB */ 0xA0CB, 0xA0D6, 0x7293, -/* 00FC */ 0xA0D7, 0xA0E2, 0x72A0, -/* 00FD */ 0xA0E8, 0xA0EE, 0x72BA, -/* 00FE */ 0xA1B4, 0xA1BB, 0x3008, -/* 00FF */ 0xA2A1, 0xA2AA, 0x2170, -/* 0100 */ 0xA2B1, 0xA2C4, 0x2488, -/* 0101 */ 0xA2C5, 0xA2D8, 0x2474, -/* 0102 */ 0xA2D9, 0xA2E2, 0x2460, -/* 0103 */ 0xA2E5, 0xA2EE, 0x3220, -/* 0104 */ 0xA2F1, 0xA2FC, 0x2160, -/* 0105 */ 0xA3A5, 0xA3FD, 0xFF05, -/* 0106 */ 0xA4A1, 0xA4F3, 0x3041, -/* 0107 */ 0xA5A1, 0xA5F6, 0x30A1, -/* 0108 */ 0xA6A1, 0xA6B1, 0x0391, -/* 0109 */ 0xA6B2, 0xA6B8, 0x03A3, -/* 010A */ 0xA6C1, 0xA6D1, 0x03B1, -/* 010B */ 0xA6D2, 0xA6D8, 0x03C3, -/* 010C */ 0xA7A1, 0xA7A6, 0x0410, -/* 010D */ 0xA7A8, 0xA7C1, 0x0416, -/* 010E */ 0xA7D1, 0xA7D6, 0x0430, -/* 010F */ 0xA7D8, 0xA7F1, 0x0436, -/* 0110 */ 0xA854, 0xA877, 0x2550, -/* 0111 */ 0xA878, 0xA87E, 0x2581, -/* 0112 */ 0xA880, 0xA887, 0x2588, -/* 0113 */ 0xA8C5, 0xA8E9, 0x3105, -/* 0114 */ 0xA940, 0xA948, 0x3021, -/* 0115 */ 0xA968, 0xA971, 0xFE49, -/* 0116 */ 0xA976, 0xA97E, 0xFE59, -/* 0117 */ 0xA989, 0xA995, 0xE7E7, -/* 0118 */ 0xA9A4, 0xA9EF, 0x2500, -/* 0119 */ 0xAA43, 0xAA48, 0x72E2, -/* 011A */ 0xAA53, 0xAA58, 0x7304, -/* 011B */ 0xAA76, 0xAA7E, 0x7340, -/* 011C */ 0xAA8B, 0xAA92, 0x7358, -/* 011D */ 0xAA93, 0xAA9D, 0x7361, -/* 011E */ 0xAB40, 0xAB4B, 0x7372, -/* 011F */ 0xAB66, 0xAB6B, 0x73A3, -/* 0120 */ 0xAB83, 0xAB89, 0x73D2, -/* 0121 */ 0xAC40, 0xAC4A, 0x73F8, -/* 0122 */ 0xAC52, 0xAC5A, 0x7411, -/* 0123 */ 0xAC5B, 0xAC60, 0x741C, -/* 0124 */ 0xAC73, 0xAC7E, 0x7442, -/* 0125 */ 0xAC80, 0xAC86, 0x744E, -/* 0126 */ 0xAC8A, 0xAC96, 0x7460, -/* 0127 */ 0xAD4E, 0xAD58, 0x7491, -/* 0128 */ 0xAD5A, 0xAD61, 0x749F, -/* 0129 */ 0xAD62, 0xAD71, 0x74AA, -/* 012A */ 0xAD72, 0xAD7E, 0x74BB, -/* 012B */ 0xAD80, 0xAD89, 0x74C8, -/* 012C */ 0xAD8A, 0xAD92, 0x74D3, -/* 012D */ 0xAD97, 0xAD9D, 0x74E7, -/* 012E */ 0xAE42, 0xAE48, 0x74F8, -/* 012F */ 0xAE4D, 0xAE54, 0x7505, -/* 0130 */ 0xAE80, 0xAE87, 0x755D, -/* 0131 */ 0xAE8B, 0xAE91, 0x756B, -/* 0132 */ 0xB040, 0xB046, 0x7645, -/* 0133 */ 0xB047, 0xB04C, 0x764E, -/* 0134 */ 0xB058, 0xB05E, 0x7664, -/* 0135 */ 0xB062, 0xB069, 0x7670, -/* 0136 */ 0xB080, 0xB087, 0x769C, -/* 0137 */ 0xB088, 0xB090, 0x76A5, -/* 0138 */ 0xB094, 0xB09D, 0x76B5, -/* 0139 */ 0xB151, 0xB158, 0x76E6, -/* 013A */ 0xB169, 0xB173, 0x770E, -/* 013B */ 0xB190, 0xB197, 0x7748, -/* 013C */ 0xB198, 0xB19F, 0x7752, -/* 013D */ 0xB248, 0xB253, 0x776D, -/* 013E */ 0xB25A, 0xB25F, 0x7786, -/* 013F */ 0xB262, 0xB26D, 0x7793, -/* 0140 */ 0xB282, 0xB28E, 0x77C0, -/* 0141 */ 0xB28F, 0xB297, 0x77CE, -/* 0142 */ 0xB34E, 0xB353, 0x7803, -/* 0143 */ 0xB382, 0xB38D, 0x785E, -/* 0144 */ 0xB38E, 0xB395, 0x786F, -/* 0145 */ 0xB39A, 0xB3A0, 0x787D, -/* 0146 */ 0xB453, 0xB45A, 0x78A8, -/* 0147 */ 0xB475, 0xB47E, 0x78DA, -/* 0148 */ 0xB491, 0xB496, 0x78FB, -/* 0149 */ 0xB49A, 0xB4A0, 0x7906, -/* 014A */ 0xB540, 0xB545, 0x790D, -/* 014B */ 0xB546, 0xB54F, 0x7914, -/* 014C */ 0xB555, 0xB563, 0x7925, -/* 014D */ 0xB570, 0xB578, 0x794A, -/* 014E */ 0xB587, 0xB58D, 0x7970, -/* 014F */ 0xB640, 0xB646, 0x7993, -/* 0150 */ 0xB647, 0xB652, 0x799B, -/* 0151 */ 0xB653, 0xB65D, 0x79A8, -/* 0152 */ 0xB673, 0xB678, 0x79D9, -/* 0153 */ 0xB682, 0xB688, 0x79F1, -/* 0154 */ 0xB744, 0xB752, 0x7A24, -/* 0155 */ 0xB759, 0xB75E, 0x7A40, -/* 0156 */ 0xB75F, 0xB768, 0x7A47, -/* 0157 */ 0xB76E, 0xB77E, 0x7A58, -/* 0158 */ 0xB780, 0xB786, 0x7A69, -/* 0159 */ 0xB84B, 0xB855, 0x7AB4, -/* 015A */ 0xB856, 0xB860, 0x7AC0, -/* 015B */ 0xB861, 0xB86A, 0x7ACC, -/* 015C */ 0xB874, 0xB879, 0x7AE7, -/* 015D */ 0xB94A, 0xB94F, 0x7B3F, -/* 015E */ 0xB95D, 0xB967, 0x7B63, -/* 015F */ 0xB976, 0xB97C, 0x7B86, -/* 0160 */ 0xB996, 0xB99D, 0x7BB9, -/* 0161 */ 0xBA69, 0xBA70, 0x7BFF, -/* 0162 */ 0xBA76, 0xBA7B, 0x7C10, -/* 0163 */ 0xBA85, 0xBA8A, 0x7C20, -/* 0164 */ 0xBA8D, 0xBA99, 0x7C2B, -/* 0165 */ 0xBA9A, 0xBA9F, 0x7C39, -/* 0166 */ 0xBB40, 0xBB49, 0x7C43, -/* 0167 */ 0xBB4A, 0xBB6E, 0x7C4E, -/* 0168 */ 0xBB6F, 0xBB74, 0x7C75, -/* 0169 */ 0xBB75, 0xBB7E, 0x7C7E, -/* 016A */ 0xBB81, 0xBB87, 0x7C8A, -/* 016B */ 0xBC48, 0xBC4E, 0x7CCE, -/* 016C */ 0xBC54, 0xBC5A, 0x7CE1, -/* 016D */ 0xBC5B, 0xBC60, 0x7CE9, -/* 016E */ 0xBC61, 0xBC68, 0x7CF0, -/* 016F */ 0xBC6B, 0xBC78, 0x7CFC, -/* 0170 */ 0xBC79, 0xBC7E, 0x7D0B, -/* 0171 */ 0xBC80, 0xBC8E, 0x7D11, -/* 0172 */ 0xBC9A, 0xBCA0, 0x7D30, -/* 0173 */ 0xBD40, 0xBD76, 0x7D37, -/* 0174 */ 0xBD77, 0xBD7E, 0x7D6F, -/* 0175 */ 0xBD80, 0xBDA0, 0x7D78, -/* 0176 */ 0xBE40, 0xBE4C, 0x7D99, -/* 0177 */ 0xBE4D, 0xBE53, 0x7DA7, -/* 0178 */ 0xBE54, 0xBE7E, 0x7DAF, -/* 0179 */ 0xBE80, 0xBEA0, 0x7DDA, -/* 017A */ 0xBF40, 0xBF7E, 0x7DFB, -/* 017B */ 0xBF8B, 0xBFA0, 0x7E48, -/* 017C */ 0xC040, 0xC063, 0x7E5E, -/* 017D */ 0xC064, 0xC07B, 0x7E83, -/* 017E */ 0xC08D, 0xC093, 0x7F3B, -/* 017F */ 0xC095, 0xC09E, 0x7F46, -/* 0180 */ 0xC15C, 0xC163, 0x7F82, -/* 0181 */ 0xC177, 0xC17D, 0x7FA8, -/* 0182 */ 0xC199, 0xC19E, 0x7FD9, -/* 0183 */ 0xC249, 0xC24F, 0x7FF4, -/* 0184 */ 0xC264, 0xC269, 0x802B, -/* 0185 */ 0xC281, 0xC28E, 0x805B, -/* 0186 */ 0xC28F, 0xC294, 0x806B, -/* 0187 */ 0xC295, 0xC2A0, 0x8072, -/* 0188 */ 0xC346, 0xC34B, 0x808D, -/* 0189 */ 0xC363, 0xC369, 0x80CF, -/* 018A */ 0xC387, 0xC393, 0x811F, -/* 018B */ 0xC440, 0xC445, 0x8140, -/* 018C */ 0xC470, 0xC475, 0x8192, -/* 018D */ 0xC482, 0xC489, 0x81AB, -/* 018E */ 0xC48A, 0xC48F, 0x81B4, -/* 018F */ 0xC49A, 0xC4A0, 0x81CD, -/* 0190 */ 0xC540, 0xC54E, 0x81D4, -/* 0191 */ 0xC55A, 0xC55F, 0x81F5, -/* 0192 */ 0xC56C, 0xC571, 0x8215, -/* 0193 */ 0xC58B, 0xC592, 0x8250, -/* 0194 */ 0xC598, 0xC59F, 0x8260, -/* 0195 */ 0xC68F, 0xC698, 0x831D, -/* 0196 */ 0xC754, 0xC75A, 0x8370, -/* 0197 */ 0xC75D, 0xC763, 0x837E, -/* 0198 */ 0xC775, 0xC77B, 0x83A1, -/* 0199 */ 0xC854, 0xC859, 0x8412, -/* 019A */ 0xC85D, 0xC862, 0x841E, -/* 019B */ 0xC863, 0xC86A, 0x8429, -/* 019C */ 0xC86B, 0xC870, 0x8432, -/* 019D */ 0xC874, 0xC87B, 0x843E, -/* 019E */ 0xC880, 0xC886, 0x844A, -/* 019F */ 0xC94B, 0xC952, 0x848F, -/* 01A0 */ 0xC95A, 0xC966, 0x84A2, -/* 01A1 */ 0xC991, 0xC99B, 0x84F1, -/* 01A2 */ 0xCA40, 0xCA48, 0x8503, -/* 01A3 */ 0xCA58, 0xCA60, 0x8522, -/* 01A4 */ 0xCA61, 0xCA6A, 0x852D, -/* 01A5 */ 0xCA74, 0xCA7E, 0x854B, -/* 01A6 */ 0xCA8E, 0xCA96, 0x8569, -/* 01A7 */ 0xCB43, 0xCB49, 0x8588, -/* 01A8 */ 0xCB4A, 0xCB54, 0x8590, -/* 01A9 */ 0xCB55, 0xCB5B, 0x859D, -/* 01AA */ 0xCB63, 0xCB68, 0x85B1, -/* 01AB */ 0xCB6A, 0xCB70, 0x85BA, -/* 01AC */ 0xCB71, 0xCB77, 0x85C2, -/* 01AD */ 0xCB81, 0xCB86, 0x85D6, -/* 01AE */ 0xCB87, 0xCB8D, 0x85DD, -/* 01AF */ 0xCB92, 0xCBA0, 0x85EA, -/* 01B0 */ 0xCC4A, 0xCC54, 0x8606, -/* 01B1 */ 0xCC59, 0xCC68, 0x8617, -/* 01B2 */ 0xCC6A, 0xCC77, 0x862A, -/* 01B3 */ 0xCC80, 0xCC8B, 0x8641, -/* 01B4 */ 0xCC99, 0xCCA0, 0x8663, -/* 01B5 */ 0xCD43, 0xCD49, 0x8672, -/* 01B6 */ 0xCD4A, 0xCD50, 0x8683, -/* 01B7 */ 0xCD57, 0xCD5C, 0x8696, -/* 01B8 */ 0xCE58, 0xCE5E, 0x8740, -/* 01B9 */ 0xCE6A, 0xCE6F, 0x875A, -/* 01BA */ 0xCE72, 0xCE79, 0x8766, -/* 01BB */ 0xCE95, 0xCE9B, 0x8798, -/* 01BC */ 0xCF5F, 0xCF65, 0x87D4, -/* 01BD */ 0xCF75, 0xCF7E, 0x87EF, -/* 01BE */ 0xCF88, 0xCF8D, 0x8804, -/* 01BF */ 0xCF8E, 0xCF95, 0x880B, -/* 01C0 */ 0xD040, 0xD04D, 0x8824, -/* 01C1 */ 0xD04E, 0xD053, 0x8833, -/* 01C2 */ 0xD05C, 0xD061, 0x8846, -/* 01C3 */ 0xD062, 0xD067, 0x884E, -/* 01C4 */ 0xD06B, 0xD071, 0x885A, -/* 01C5 */ 0xD09B, 0xD0A0, 0x88A5, -/* 01C6 */ 0xD168, 0xD16E, 0x88E9, -/* 01C7 */ 0xD179, 0xD17E, 0x8903, -/* 01C8 */ 0xD240, 0xD248, 0x8938, -/* 01C9 */ 0xD24B, 0xD263, 0x8945, -/* 01CA */ 0xD264, 0xD269, 0x8960, -/* 01CB */ 0xD26A, 0xD27D, 0x8967, -/* 01CC */ 0xD286, 0xD2A0, 0x8987, -/* 01CD */ 0xD340, 0xD35E, 0x89A2, -/* 01CE */ 0xD378, 0xD37E, 0x89F4, -/* 01CF */ 0xD385, 0xD38A, 0x8A01, -/* 01D0 */ 0xD38B, 0xD3A0, 0x8A08, -/* 01D1 */ 0xD440, 0xD45F, 0x8A1E, -/* 01D2 */ 0xD460, 0xD468, 0x8A3F, -/* 01D3 */ 0xD469, 0xD47E, 0x8A49, -/* 01D4 */ 0xD480, 0xD499, 0x8A5F, -/* 01D5 */ 0xD49A, 0xD4A0, 0x8A7A, -/* 01D6 */ 0xD540, 0xD547, 0x8A81, -/* 01D7 */ 0xD548, 0xD54F, 0x8A8B, -/* 01D8 */ 0xD550, 0xD57E, 0x8A94, -/* 01D9 */ 0xD580, 0xD5A0, 0x8AC3, -/* 01DA */ 0xD640, 0xD662, 0x8AE4, -/* 01DB */ 0xD663, 0xD67E, 0x8B08, -/* 01DC */ 0xD682, 0xD6A0, 0x8B27, -/* 01DD */ 0xD740, 0xD75F, 0x8B46, -/* 01DE */ 0xD765, 0xD77E, 0x8B6D, -/* 01DF */ 0xD780, 0xD798, 0x8B87, -/* 01E0 */ 0xD840, 0xD848, 0x8C38, -/* 01E1 */ 0xD850, 0xD857, 0x8C4D, -/* 01E2 */ 0xD85C, 0xD861, 0x8C5B, -/* 01E3 */ 0xD862, 0xD868, 0x8C63, -/* 01E4 */ 0xD869, 0xD86F, 0x8C6C, -/* 01E5 */ 0xD874, 0xD87A, 0x8C7B, -/* 01E6 */ 0xD882, 0xD888, 0x8C8D, -/* 01E7 */ 0xD88C, 0xD8A0, 0x8C99, -/* 01E8 */ 0xD940, 0xD97E, 0x8CAE, -/* 01E9 */ 0xD980, 0xD9A0, 0x8CED, -/* 01EA */ 0xDA40, 0xDA4E, 0x8D0E, -/* 01EB */ 0xDA5D, 0xDA65, 0x8D78, -/* 01EC */ 0xDA73, 0xDA7C, 0x8D95, -/* 01ED */ 0xDA81, 0xDA8D, 0x8DA4, -/* 01EE */ 0xDB53, 0xDB59, 0x8DFE, -/* 01EF */ 0xDB64, 0xDB6B, 0x8E15, -/* 01F0 */ 0xDB89, 0xDB8E, 0x8E53, -/* 01F1 */ 0xDB8F, 0xDB9A, 0x8E5A, -/* 01F2 */ 0xDC4E, 0xDC54, 0x8E88, -/* 01F3 */ 0xDC58, 0xDC5E, 0x8E95, -/* 01F4 */ 0xDC60, 0xDC6B, 0x8E9F, -/* 01F5 */ 0xDC70, 0xDC76, 0x8EB3, -/* 01F6 */ 0xDC77, 0xDC7E, 0x8EBB, -/* 01F7 */ 0xDC80, 0xDC8A, 0x8EC3, -/* 01F8 */ 0xDC8B, 0xDCA0, 0x8ECF, -/* 01F9 */ 0xDD40, 0xDD7E, 0x8EE5, -/* 01FA */ 0xDD80, 0xDDA0, 0x8F24, -/* 01FB */ 0xDE40, 0xDE60, 0x8F45, -/* 01FC */ 0xDF45, 0xDF4A, 0x9027, -/* 01FD */ 0xDF64, 0xDF69, 0x905C, -/* 01FE */ 0xDF76, 0xDF7C, 0x9076, -/* 01FF */ 0xE068, 0xE07B, 0x9105, -/* 0200 */ 0xE084, 0xE08E, 0x9124, -/* 0201 */ 0xE090, 0xE096, 0x9132, -/* 0202 */ 0xE097, 0xE09F, 0x913A, -/* 0203 */ 0xE161, 0xE167, 0x9193, -/* 0204 */ 0xE168, 0xE16D, 0x919C, -/* 0205 */ 0xE16E, 0xE173, 0x91A4, -/* 0206 */ 0xE180, 0xE18A, 0x91BC, -/* 0207 */ 0xE18E, 0xE197, 0x91D2, -/* 0208 */ 0xE198, 0xE1A0, 0x91DD, -/* 0209 */ 0xE240, 0xE27E, 0x91E6, -/* 020A */ 0xE280, 0xE2A0, 0x9225, -/* 020B */ 0xE2BC, 0xE2C1, 0x9967, -/* 020C */ 0xE340, 0xE36D, 0x9246, -/* 020D */ 0xE36E, 0xE37E, 0x9275, -/* 020E */ 0xE380, 0xE387, 0x9286, -/* 020F */ 0xE388, 0xE3A0, 0x928F, -/* 0210 */ 0xE440, 0xE445, 0x92A8, -/* 0211 */ 0xE446, 0xE45E, 0x92AF, -/* 0212 */ 0xE45F, 0xE47E, 0x92C9, -/* 0213 */ 0xE480, 0xE4A0, 0x92E9, -/* 0214 */ 0xE540, 0xE573, 0x930A, -/* 0215 */ 0xE574, 0xE57E, 0x933F, -/* 0216 */ 0xE580, 0xE59F, 0x934A, -/* 0217 */ 0xE640, 0xE662, 0x936C, -/* 0218 */ 0xE663, 0xE67E, 0x9390, -/* 0219 */ 0xE680, 0xE69D, 0x93AC, -/* 021A */ 0xE740, 0xE747, 0x93CE, -/* 021B */ 0xE748, 0xE77E, 0x93D7, -/* 021C */ 0xE780, 0xE7A0, 0x940E, -/* 021D */ 0xE7CA, 0xE7D0, 0x7F21, -/* 021E */ 0xE840, 0xE84E, 0x942F, -/* 021F */ 0xE84F, 0xE87A, 0x943F, -/* 0220 */ 0xE880, 0xE894, 0x9470, -/* 0221 */ 0xE94C, 0xE953, 0x9577, -/* 0222 */ 0xE954, 0xE97E, 0x9580, -/* 0223 */ 0xE980, 0xE9A0, 0x95AB, -/* 0224 */ 0xEA40, 0xEA5B, 0x95CC, -/* 0225 */ 0xEA64, 0xEA6A, 0x9623, -/* 0226 */ 0xEA91, 0xEA9D, 0x9678, -/* 0227 */ 0xEB49, 0xEB52, 0x969D, -/* 0228 */ 0xEB53, 0xEB5A, 0x96A8, -/* 0229 */ 0xEB6D, 0xEB76, 0x96D6, -/* 022A */ 0xEB77, 0xEB7D, 0x96E1, -/* 022B */ 0xEC40, 0xEC48, 0x9721, -/* 022C */ 0xEC57, 0xEC69, 0x973F, -/* 022D */ 0xEC77, 0xEC7E, 0x976A, -/* 022E */ 0xEC87, 0xEC8E, 0x977D, -/* 022F */ 0xED44, 0xED4A, 0x97A4, -/* 0230 */ 0xED50, 0xED7E, 0x97B5, -/* 0231 */ 0xED89, 0xEDA0, 0x97F7, -/* 0232 */ 0xEE40, 0xEE7E, 0x980F, -/* 0233 */ 0xEE80, 0xEEA0, 0x984E, -/* 0234 */ 0xEEE6, 0xEEEC, 0x94C8, -/* 0235 */ 0xEF40, 0xEF45, 0x986F, -/* 0236 */ 0xEF4C, 0xEF71, 0x98A8, -/* 0237 */ 0xEF82, 0xEFA0, 0x98E9, -/* 0238 */ 0xEFE4, 0xEFEC, 0x9564, -/* 0239 */ 0xF047, 0xF063, 0x9911, -/* 023A */ 0xF064, 0xF07E, 0x992F, -/* 023B */ 0xF080, 0xF089, 0x994A, -/* 023C */ 0xF08A, 0xF096, 0x9956, -/* 023D */ 0xF0D0, 0xF0D6, 0x9E66, -/* 023E */ 0xF142, 0xF14C, 0x999A, -/* 023F */ 0xF14F, 0xF17E, 0x99A9, -/* 0240 */ 0xF180, 0xF1A0, 0x99D9, -/* 0241 */ 0xF240, 0xF27E, 0x99FA, -/* 0242 */ 0xF280, 0xF2A0, 0x9A39, -/* 0243 */ 0xF340, 0xF351, 0x9A5A, -/* 0244 */ 0xF35B, 0xF361, 0x9AA9, -/* 0245 */ 0xF38D, 0xF395, 0x9AF0, -/* 0246 */ 0xF397, 0xF39D, 0x9AFC, -/* 0247 */ 0xF441, 0xF446, 0x9B09, -/* 0248 */ 0xF44A, 0xF454, 0x9B14, -/* 0249 */ 0xF458, 0xF462, 0x9B24, -/* 024A */ 0xF465, 0xF46C, 0x9B33, -/* 024B */ 0xF479, 0xF47E, 0x9B55, -/* 024C */ 0xF480, 0xF4A0, 0x9B5B, -/* 024D */ 0xF540, 0xF57E, 0x9B7C, -/* 024E */ 0xF580, 0xF5A0, 0x9BBB, -/* 024F */ 0xF640, 0xF67E, 0x9BDC, -/* 0250 */ 0xF680, 0xF6A0, 0x9C1B, -/* 0251 */ 0xF6B5, 0xF6BA, 0x9F85, -/* 0252 */ 0xF6DF, 0xF6E4, 0x9C9E, -/* 0253 */ 0xF6ED, 0xF6F4, 0x9CB0, -/* 0254 */ 0xF740, 0xF77E, 0x9C3C, -/* 0255 */ 0xF840, 0xF87E, 0x9CE3, -/* 0256 */ 0xF880, 0xF8A0, 0x9D22, -/* 0257 */ 0xF940, 0xF97E, 0x9D43, -/* 0258 */ 0xF980, 0xF9A0, 0x9D82, -/* 0259 */ 0xFA40, 0xFA7E, 0x9DA3, -/* 025A */ 0xFA80, 0xFAA0, 0x9DE2, -/* 025B */ 0xFB40, 0xFB5B, 0x9E03, -/* 025C */ 0xFB74, 0xFB7D, 0x9E74, -/* 025D */ 0xFB87, 0xFB8C, 0x9E8C, -/* 025E */ 0xFB8D, 0xFB95, 0x9E94, -/* 025F */ 0xFB97, 0xFB9C, 0x9EA0, -/* 0260 */ 0xFC40, 0xFC48, 0x9EAB, -/* 0261 */ 0xFC6D, 0xFC75, 0x9EF0, -/* 0262 */ 0xFC78, 0xFC7E, 0x9EFF, -/* 0263 */ 0xFC8D, 0xFC92, 0x9F1A, -/* 0264 */ 0xFC94, 0xFC9C, 0x9F23, -/* 0265 */ 0xFD4D, 0xFD57, 0x9F45, -/* 0266 */ 0xFD58, 0xFD7E, 0x9F52, -/* 0267 */ 0xFD80, 0xFD85, 0x9F79, -/* 0268 */ 0xFD88, 0xFD93, 0x9F8D, -/* 0269 */ 0xFE50, 0xFE7E, 0xE815, -/* 026A */ 0xFE80, 0xFEA0, 0xE844, -/* 026B */ 0x8140, 0x816B, 0x0000, -/* 026C */ 0x817D, 0x81FE, 0x002C, -/* 026D */ 0x8240, 0x8272, 0x00AE, -/* 026E */ 0x8280, 0x8290, 0x00E1, -/* 026F */ 0x829C, 0x82B2, 0x00F2, -/* 0270 */ 0x82CA, 0x82D8, 0x0109, -/* 0271 */ 0x82EE, 0x82FE, 0x0118, -/* 0272 */ 0x8358, 0x835A, 0x0129, -/* 0273 */ 0x8366, 0x8381, 0x012C, -/* 0274 */ 0x83B3, 0x83F8, 0x0148, -/* 0275 */ 0x8440, 0x84DE, 0x018E, -/* 0276 */ 0x84F2, 0x84FE, 0x022D, -/* 0277 */ 0x8540, 0x85FE, 0x023A, -/* 0278 */ 0x8640, 0x86C0, 0x02F9, -/* 0279 */ 0x86D1, 0x86FE, 0x037A, -/* 027A */ 0x8740, 0x8764, 0x03A8, -/* 027B */ 0x8771, 0x878F, 0x03CD, -/* 027C */ 0x879F, 0x87A1, 0x03EC, -/* 027D */ 0x87C3, 0x87C6, 0x03EF, -/* 027E */ 0x87DD, 0x87F7, 0x03F3, -/* 027F */ 0x884A, 0x889F, 0x040E, -/* 0280 */ 0x88B0, 0x88F6, 0x0464, -/* 0281 */ 0x894D, 0x8964, 0x04AB, -/* 0282 */ 0x8976, 0x898C, 0x04C3, -/* 0283 */ 0x89A7, 0x89AD, 0x04DA, -/* 0284 */ 0x89B9, 0x89BB, 0x04E1, -/* 0285 */ 0x89D0, 0x89FE, 0x04E4, -/* 0286 */ 0x8A40, 0x8A55, 0x0513, -/* 0287 */ 0x8A63, 0x8AAA, 0x0529, -/* 0288 */ 0x8AB7, 0x8AF8, 0x0571, -/* 0289 */ 0x8B40, 0x8B55, 0x05B3, -/* 028A */ 0x8B7D, 0x8BAF, 0x05C9, -/* 028B */ 0x8BED, 0x8BEF, 0x05FC, -/* 028C */ 0x8C48, 0x8CFE, 0x05FF, -/* 028D */ 0x8D40, 0x8D4E, 0x06B6, -/* 028E */ 0x8D68, 0x8DA3, 0x06C5, -/* 028F */ 0x8DB4, 0x8DB5, 0x0701, -/* 0290 */ 0x8DC1, 0x8DC3, 0x0703, -/* 0291 */ 0x8DCF, 0x8DD5, 0x0706, -/* 0292 */ 0x8DF9, 0x8DFE, 0x070D, -/* 0293 */ 0x8E77, 0x8EAE, 0x0713, -/* 0294 */ 0x8EBC, 0x8EC4, 0x074B, -/* 0295 */ 0x8ED4, 0x8EF7, 0x0754, -/* 0296 */ 0x8F40, 0x8F4E, 0x0778, -/* 0297 */ 0x8F5B, 0x8F8F, 0x0787, -/* 0298 */ 0x8F9F, 0x8FFE, 0x07BC, -/* 0299 */ 0x9040, 0x90E4, 0x081C, -/* 029A */ 0x9140, 0x9163, 0x08C1, -/* 029B */ 0x9177, 0x917E, 0x08E5, -/* 029C */ 0x9190, 0x9191, 0x08ED, -/* 029D */ 0x91A2, 0x91B0, 0x08EF, -/* 029E */ 0x91DF, 0x91FE, 0x08FE, -/* 029F */ 0x9240, 0x92FE, 0x091E, -/* 02A0 */ 0x9340, 0x93B2, 0x09DD, -/* 02A1 */ 0x93C4, 0x93FE, 0x0A50, -/* 02A2 */ 0x9440, 0x9447, 0x0A8B, -/* 02A3 */ 0x9471, 0x94B4, 0x0A93, -/* 02A4 */ 0x94C4, 0x94FE, 0x0AD7, -/* 02A5 */ 0x9540, 0x95C9, 0x0B12, -/* 02A6 */ 0x95E4, 0x95FE, 0x0B9C, -/* 02A7 */ 0x9640, 0x96DF, 0x0BB7, -/* 02A8 */ 0x96EE, 0x96F8, 0x0C57, -/* 02A9 */ 0x9740, 0x97C0, 0x0C62, -/* 02AA */ 0x97CD, 0x97E6, 0x0CE3, -/* 02AB */ 0x97F8, 0x97FE, 0x0CFD, -/* 02AC */ 0x9840, 0x9899, 0x0D04, -/* 02AD */ 0x98A6, 0x98B4, 0x0D5E, -/* 02AE */ 0x98D1, 0x98EE, 0x0D6D, -/* 02AF */ 0x98FE, 0x0000, 0x6A5A, -/* 02B0 */ 0x9940, 0x9947, 0x0D8B, -/* 02B1 */ 0x995A, 0x9970, 0x0D93, -/* 02B2 */ 0x9980, 0x9982, 0x0DAA, -/* 02B3 */ 0x99F6, 0x99F7, 0x0DAD, -/* 02B4 */ 0x9A40, 0x9A53, 0x0DAF, -/* 02B5 */ 0x9A68, 0x9A69, 0x0DC3, -/* 02B6 */ 0x9A78, 0x9A8E, 0x0DC5, -/* 02B7 */ 0x9A9F, 0x9AFE, 0x0DDC, -/* 02B8 */ 0x9B40, 0x9BFE, 0x0E3C, -/* 02B9 */ 0x9C40, 0x9C82, 0x0EFB, -/* 02BA */ 0x9C93, 0x9C9D, 0x0F3E, -/* 02BB */ 0x9CA9, 0x9CAA, 0x0F49, -/* 02BC */ 0x9CBA, 0x9CF8, 0x0F4B, -/* 02BD */ 0x9D40, 0x9DB5, 0x0F8A, -/* 02BE */ 0x9DC3, 0x9DCB, 0x1000, -/* 02BF */ 0x9DD7, 0x9DE1, 0x1009, -/* 02C0 */ 0x9DFA, 0x9DFE, 0x1014, -/* 02C1 */ 0x9E8A, 0x9E8C, 0x1019, -/* 02C2 */ 0x9E9F, 0x9EA0, 0x101C, -/* 02C3 */ 0x9EBB, 0x9ED6, 0x101E, -/* 02C4 */ 0x9EE4, 0x9EF0, 0x103A, -/* 02C5 */ 0x9EFE, 0x0000, 0x70DA, -/* 02C6 */ 0x9F40, 0x9F54, 0x1047, -/* 02C7 */ 0x9F60, 0x9F68, 0x105C, -/* 02C8 */ 0x9F7C, 0x9F80, 0x1065, -/* 02C9 */ 0x9F8F, 0x9F94, 0x106A, -/* 02CA */ 0x9FA2, 0x9FE6, 0x1070, -/* 02CB */ 0x9FFA, 0x9FFE, 0x10B5, -/* 02CC */ 0xA04A, 0xA04E, 0x10BA, -/* 02CD */ 0xA080, 0xA0CA, 0x10BF, -/* 02CE */ 0xA0E3, 0xA0FE, 0x110A, -/* 02CF */ 0xA1A1, 0xA1FE, 0x1126, -/* 02D0 */ 0xA3A1, 0xA3A4, 0x1184, -/* 02D1 */ 0xA3FE, 0x0000, 0xFFE3, -/* 02D2 */ 0xA6E0, 0xA6F5, 0x1188, -/* 02D3 */ 0xA7A7, 0x0000, 0x0401, -/* 02D4 */ 0xA7D7, 0x0000, 0x0451, -/* 02D5 */ 0xA840, 0xA853, 0x119E, -/* 02D6 */ 0xA888, 0xA895, 0x11B2, -/* 02D7 */ 0xA8A1, 0xA8C0, 0x11C0, -/* 02D8 */ 0xA949, 0xA988, 0x11E0, -/* 02D9 */ 0xA996, 0x0000, 0x3007, -/* 02DA */ 0xAA40, 0xAA8A, 0x1220, -/* 02DB */ 0xAA9E, 0xAAA0, 0x126B, -/* 02DC */ 0xAB4C, 0xABA0, 0x126E, -/* 02DD */ 0xAC4B, 0xAC51, 0x12C3, -/* 02DE */ 0xAC61, 0xAC72, 0x12CA, -/* 02DF */ 0xAC87, 0xAC89, 0x12DC, -/* 02E0 */ 0xAC97, 0xACA0, 0x12DF, -/* 02E1 */ 0xAD40, 0xAD4D, 0x12E9, -/* 02E2 */ 0xAD59, 0x0000, 0x749D, -/* 02E3 */ 0xAD93, 0xADA0, 0x12F7, -/* 02E4 */ 0xAE40, 0xAEA0, 0x1305, -/* 02E5 */ 0xAF40, 0xAFA0, 0x1366, -/* 02E6 */ 0xB04D, 0xB07E, 0x13C7, -/* 02E7 */ 0xB091, 0xB0FE, 0x13F9, -/* 02E8 */ 0xB140, 0xB168, 0x1467, -/* 02E9 */ 0xB174, 0xB18F, 0x1490, -/* 02EA */ 0xB1A0, 0xB1FE, 0x14AC, -/* 02EB */ 0xB240, 0xB247, 0x150B, -/* 02EC */ 0xB254, 0xB261, 0x1513, -/* 02ED */ 0xB26E, 0xB281, 0x1521, -/* 02EE */ 0xB298, 0xB2FE, 0x1535, -/* 02EF */ 0xB340, 0xB381, 0x159C, -/* 02F0 */ 0xB396, 0xB3FE, 0x15DE, -/* 02F1 */ 0xB440, 0xB474, 0x1647, -/* 02F2 */ 0xB480, 0xB4FE, 0x167C, -/* 02F3 */ 0xB550, 0xB554, 0x16FB, -/* 02F4 */ 0xB564, 0xB5FE, 0x1700, -/* 02F5 */ 0xB65E, 0xB6FE, 0x179B, -/* 02F6 */ 0xB740, 0xB743, 0x183C, -/* 02F7 */ 0xB753, 0xB758, 0x1840, -/* 02F8 */ 0xB769, 0xB76D, 0x1846, -/* 02F9 */ 0xB787, 0xB7FE, 0x184B, -/* 02FA */ 0xB840, 0xB84A, 0x18C3, -/* 02FB */ 0xB86B, 0xB8FE, 0x18CE, -/* 02FC */ 0xB940, 0xB95C, 0x1962, -/* 02FD */ 0xB968, 0xB9FE, 0x197F, -/* 02FE */ 0xBA40, 0xBA8C, 0x1A16, -/* 02FF */ 0xBAA0, 0xBAFE, 0x1A63, -/* 0300 */ 0xBB80, 0xBBFE, 0x1AC2, -/* 0301 */ 0xBC40, 0xBC53, 0x1B41, -/* 0302 */ 0xBC69, 0xBC6A, 0x1B55, -/* 0303 */ 0xBC8F, 0xBCFE, 0x1B57, -/* 0304 */ 0xBDA1, 0xBDFE, 0x1BC7, -/* 0305 */ 0xBEA1, 0xBEFE, 0x1C25, -/* 0306 */ 0xBF80, 0xBF8A, 0x1C83, -/* 0307 */ 0xBFA1, 0xBFFE, 0x1C8E, -/* 0308 */ 0xC07C, 0xC0FE, 0x1CEC, -/* 0309 */ 0xC140, 0xC1FE, 0x1D6F, -/* 030A */ 0xC240, 0xC280, 0x1E2E, -/* 030B */ 0xC2A1, 0xC2FE, 0x1E6F, -/* 030C */ 0xC340, 0xC386, 0x1ECD, -/* 030D */ 0xC394, 0xC3FE, 0x1F14, -/* 030E */ 0xC446, 0xC481, 0x1F7F, -/* 030F */ 0xC490, 0xC4FE, 0x1FBB, -/* 0310 */ 0xC54F, 0xC5FE, 0x202A, -/* 0311 */ 0xC640, 0xC6FE, 0x20DA, -/* 0312 */ 0xC740, 0xC7FE, 0x2199, -/* 0313 */ 0xC840, 0xC85C, 0x2258, -/* 0314 */ 0xC871, 0xC8FE, 0x2275, -/* 0315 */ 0xC940, 0xC959, 0x2303, -/* 0316 */ 0xC967, 0xC990, 0x231D, -/* 0317 */ 0xC99C, 0xC9FE, 0x2347, -/* 0318 */ 0xCA49, 0xCA57, 0x23AA, -/* 0319 */ 0xCA6B, 0xCA73, 0x23B9, -/* 031A */ 0xCA80, 0xCAFE, 0x23C2, -/* 031B */ 0xCB40, 0xCB42, 0x2441, -/* 031C */ 0xCB5C, 0xCB69, 0x2444, -/* 031D */ 0xCB78, 0xCB80, 0x2452, -/* 031E */ 0xCB8E, 0xCB91, 0x245B, -/* 031F */ 0xCBA1, 0xCBFE, 0x245F, -/* 0320 */ 0xCC40, 0xCC49, 0x24BD, -/* 0321 */ 0xCC55, 0xCC58, 0x24C7, -/* 0322 */ 0xCC69, 0x0000, 0x8628, -/* 0323 */ 0xCC78, 0xCC7E, 0x24CB, -/* 0324 */ 0xCC8C, 0xCCFE, 0x24D2, -/* 0325 */ 0xCD40, 0xCD42, 0x2545, -/* 0326 */ 0xCD51, 0xCDFE, 0x2548, -/* 0327 */ 0xCE40, 0xCEFE, 0x25F6, -/* 0328 */ 0xCF40, 0xCF74, 0x26B5, -/* 0329 */ 0xCF80, 0xCF87, 0x26EA, -/* 032A */ 0xCF96, 0xCFFE, 0x26F2, -/* 032B */ 0xD054, 0xD05B, 0x275B, -/* 032C */ 0xD068, 0xD0FE, 0x2763, -/* 032D */ 0xD140, 0xD1FE, 0x27FA, -/* 032E */ 0xD249, 0xD24A, 0x28B9, -/* 032F */ 0xD27E, 0xD285, 0x28BB, -/* 0330 */ 0xD2A1, 0xD2FE, 0x28C3, -/* 0331 */ 0xD35F, 0xD384, 0x2921, -/* 0332 */ 0xD3A1, 0xD3FE, 0x2947, -/* 0333 */ 0xD4A1, 0xD4FE, 0x29A5, -/* 0334 */ 0xD5A1, 0xD5FE, 0x2A03, -/* 0335 */ 0xD680, 0xD681, 0x2A61, -/* 0336 */ 0xD6A1, 0xD6FE, 0x2A63, -/* 0337 */ 0xD760, 0xD764, 0x2AC1, -/* 0338 */ 0xD799, 0xD7F9, 0x2AC6, -/* 0339 */ 0xD849, 0xD85B, 0x2B27, -/* 033A */ 0xD870, 0xD88B, 0x2B3A, -/* 033B */ 0xD8A1, 0xD8FE, 0x2B56, -/* 033C */ 0xD9A1, 0xD9FE, 0x2BB4, -/* 033D */ 0xDA4F, 0xDA80, 0x2C12, -/* 033E */ 0xDA8E, 0xDAFE, 0x2C44, -/* 033F */ 0xDB40, 0xDB88, 0x2CB5, -/* 0340 */ 0xDB9B, 0xDBFE, 0x2CFE, -/* 0341 */ 0xDC40, 0xDC5F, 0x2D62, -/* 0342 */ 0xDC6C, 0xDC6F, 0x2D82, -/* 0343 */ 0xDCA1, 0xDCFE, 0x2D86, -/* 0344 */ 0xDDA1, 0xDDFE, 0x2DE4, -/* 0345 */ 0xDE61, 0xDEFE, 0x2E42, -/* 0346 */ 0xDF40, 0xDFFE, 0x2EE0, -/* 0347 */ 0xE040, 0xE067, 0x2F9F, -/* 0348 */ 0xE07C, 0xE083, 0x2FC7, -/* 0349 */ 0xE08F, 0x0000, 0x9130, -/* 034A */ 0xE0A0, 0xE0FE, 0x2FCF, -/* 034B */ 0xE140, 0xE160, 0x302E, -/* 034C */ 0xE174, 0xE17E, 0x304F, -/* 034D */ 0xE18B, 0xE18D, 0x305A, -/* 034E */ 0xE1A1, 0xE1FE, 0x305D, -/* 034F */ 0xE2A1, 0xE2FE, 0x30BB, -/* 0350 */ 0xE3A1, 0xE3FE, 0x3119, -/* 0351 */ 0xE4A1, 0xE4FE, 0x3177, -/* 0352 */ 0xE5A0, 0xE5FE, 0x31D5, -/* 0353 */ 0xE69E, 0xE6FE, 0x3234, -/* 0354 */ 0xE7A1, 0xE7FE, 0x3295, -/* 0355 */ 0xE87B, 0xE87E, 0x32F3, -/* 0356 */ 0xE895, 0xE8FE, 0x32F7, -/* 0357 */ 0xE940, 0xE94B, 0x3361, -/* 0358 */ 0xE9A1, 0xE9FE, 0x336D, -/* 0359 */ 0xEA5C, 0xEA90, 0x33CB, -/* 035A */ 0xEA9E, 0xEAFE, 0x3400, -/* 035B */ 0xEB40, 0xEB48, 0x3461, -/* 035C */ 0xEB5B, 0xEB6C, 0x346A, -/* 035D */ 0xEB7E, 0xEBFE, 0x347C, -/* 035E */ 0xEC49, 0xEC56, 0x34FD, -/* 035F */ 0xEC6A, 0xECFE, 0x350B, -/* 0360 */ 0xED40, 0xED4F, 0x35A0, -/* 0361 */ 0xED80, 0xED88, 0x35B0, -/* 0362 */ 0xEDA1, 0xEDFE, 0x35B9, -/* 0363 */ 0xEEA1, 0xEEFE, 0x3617, -/* 0364 */ 0xEF46, 0xEF4B, 0x3675, -/* 0365 */ 0xEF72, 0xEF81, 0x367B, -/* 0366 */ 0xEFA1, 0xEFFE, 0x368B, -/* 0367 */ 0xF040, 0xF046, 0x36E9, -/* 0368 */ 0xF097, 0xF0FE, 0x36F0, -/* 0369 */ 0xF140, 0xF141, 0x3758, -/* 036A */ 0xF14D, 0xF14E, 0x375A, -/* 036B */ 0xF1A1, 0xF1FE, 0x375C, -/* 036C */ 0xF2A1, 0xF2FE, 0x37BA, -/* 036D */ 0xF352, 0xF3FE, 0x3818, -/* 036E */ 0xF440, 0xF449, 0x38C5, -/* 036F */ 0xF455, 0xF457, 0x38CF, -/* 0370 */ 0xF463, 0xF478, 0x38D2, -/* 0371 */ 0xF4A1, 0xF4FE, 0x38E8, -/* 0372 */ 0xF5A1, 0xF5FE, 0x3946, -/* 0373 */ 0xF6A1, 0xF6FE, 0x39A4, -/* 0374 */ 0xF780, 0xF7FE, 0x3A02, -/* 0375 */ 0xFB5C, 0xFB86, 0x3A81, -/* 0376 */ 0xFB96, 0xFBA0, 0x3AAC, -/* 0377 */ 0xFC49, 0xFCA0, 0x3AB7, -/* 0378 */ 0xFD40, 0xFD4C, 0x3B0F, -/* 0379 */ 0xFD86, 0xFD87, 0x3B1C, -/* 037A */ 0xFD94, 0xFDA0, 0x3B1E, -/* 037B */ 0xFE40, 0xFE4F, 0x3B2B, -/*-------------------------------------------------------*/ -/* Offset=0x0B58 Start of MappingTable */ - -/* 0000 */ 0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F, -/* 0008 */ 0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31, -/* 0010 */ 0x4E33, 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44, -/* 0018 */ 0x4E46, 0x4E4A, 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62, -/* 0020 */ 0x4E63, 0x4E64, 0x4E65, 0x4E67, 0x4E68, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x4E72, 0x4E87, 0x4E8A, 0xFFFD, 0x4E90, -/* 0030 */ 0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4E9E, 0x4EA3, 0x4EAA, -/* 0038 */ 0x4EAF, 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8, 0x4EB9, -/* 0040 */ 0x4EBC, 0x4EBD, 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0, 0x4ED2, -/* 0048 */ 0x4EDA, 0x4EDB, 0x4EDC, 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7, 0x4EE9, -/* 0050 */ 0x4EED, 0x4EEE, 0x4EEF, 0x4EF1, 0x4EF4, 0x4EF8, 0x4EF9, 0x4EFA, -/* 0058 */ 0x4EFC, 0x4EFE, 0x4F00, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13, 0x4F14, 0x4F15, -/* 0068 */ 0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29, 0x4F2C, -/* 0070 */ 0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39, 0x4F3B, -/* 0078 */ 0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4F52, 0x4F54, 0x4F56, -/* 0088 */ 0x4F61, 0x4F62, 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D, 0x4F6E, -/* 0090 */ 0x4F71, 0x4F72, 0x4F75, 0x4F77, 0x4F78, 0x4F79, 0x4F7A, 0x4F7D, -/* 0098 */ 0x4F80, 0x4F81, 0x4F82, 0x4F85, 0x4F86, 0x4F87, 0x4F8A, 0x4F8C, -/* 00A0 */ 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F96, 0x4F98, 0x4F99, -/* 00A8 */ 0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2, 0x4FA4, 0x4FAB, -/* 00B0 */ 0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4, 0xFFFD, 0xFFFD, -/* 00B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x4FC0, -/* 00C0 */ 0x4FC1, 0x4FC2, 0x4FC6, 0x4FC7, 0x4FC8, 0x4FC9, 0x4FCB, 0x4FCC, -/* 00C8 */ 0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4, 0x4FD5, 0x4FD6, 0x4FD9, 0x4FDB, -/* 00D0 */ 0x4FE0, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB, 0x4FEC, 0x4FF0, -/* 00D8 */ 0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9, 0x4FFB, 0x4FFC, -/* 00E0 */ 0x4FFD, 0x500B, 0x500E, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, -/* 00E8 */ 0x5017, 0x501B, 0x501D, 0x501E, 0x5020, 0x5022, 0x5023, 0x5024, -/* 00F0 */ 0x5027, 0x502B, 0x503B, 0x503D, 0x503F, 0x5040, 0x5041, 0x5042, -/* 00F8 */ 0x5044, 0x5045, 0x5046, 0x5049, 0x504A, 0x504B, 0x504D, 0x5050, -/* 0100 */ 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 0x5058, 0x5059, -/* 0108 */ 0x505B, 0x5078, 0x5079, 0x507A, 0x507C, 0x507D, 0x5081, 0x5082, -/* 0110 */ 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508A, 0x508B, 0x508C, -/* 0118 */ 0x50A4, 0x50A6, 0x50AA, 0x50AB, 0x50AD, 0x50AE, 0x50AF, 0x50B0, -/* 0120 */ 0x50B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0128 */ 0x50BC, 0x50D7, 0x50D8, 0x50D9, 0x50E8, 0x50E9, 0x50EA, 0x50EB, -/* 0130 */ 0x50EF, 0x50F0, 0x50F1, 0x50F2, 0x50F4, 0x50F6, 0x50F7, 0x50F8, -/* 0138 */ 0x50F9, 0x50FA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0140 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5108, 0xFFFD, 0x5109, 0x510A, -/* 0148 */ 0x5142, 0x5147, 0x514A, 0x514C, 0x514E, 0x514F, 0x5150, 0x5152, -/* 0150 */ 0x5153, 0x5157, 0x5158, 0x5159, 0x515B, 0x515D, 0x515E, 0x515F, -/* 0158 */ 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167, 0x5169, 0x516A, -/* 0160 */ 0x516F, 0x5172, 0x517A, 0x517E, 0x517F, 0x5183, 0x5184, 0x5186, -/* 0168 */ 0x5187, 0x518A, 0x518B, 0x518E, 0x518F, 0x5190, 0x5191, 0x5193, -/* 0170 */ 0x5194, 0x5198, 0x519A, 0x519D, 0x519E, 0x519F, 0x51A1, 0x51A3, -/* 0178 */ 0x51A6, 0x51A7, 0x51A8, 0x51A9, 0x51AA, 0x51AD, 0x51AE, 0x51B4, -/* 0180 */ 0x51B8, 0x51B9, 0x51BA, 0x51BE, 0x51BF, 0x51C1, 0x51C2, 0x51C3, -/* 0188 */ 0x51C5, 0x51C8, 0x51CA, 0x51CD, 0x51CE, 0x51D0, 0x51D8, 0x51D9, -/* 0190 */ 0x51DA, 0x51DC, 0x51DE, 0x51DF, 0x51E2, 0x51E3, 0xFFFD, 0xFFFD, -/* 0198 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x51EC, 0x51EE, 0x51F1, 0x51F2, -/* 01A0 */ 0x51F4, 0x51F7, 0x51FE, 0x5204, 0x5205, 0x5209, 0x520B, 0x520C, -/* 01A8 */ 0x520F, 0x5210, 0x5213, 0x5214, 0x5215, 0x521C, 0x521E, 0x521F, -/* 01B0 */ 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227, 0x522A, 0x522C, -/* 01B8 */ 0x522F, 0x5231, 0x5232, 0x5234, 0x5235, 0x523C, 0x523E, 0xFFFD, -/* 01C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x524B, 0x524E, 0x524F, -/* 01C8 */ 0x5252, 0x5253, 0x5255, 0x5257, 0x5258, 0xFFFD, 0x5259, 0x525A, -/* 01D0 */ 0x525B, 0x525D, 0x525F, 0x5260, 0x5262, 0x5263, 0x5264, 0x5266, -/* 01D8 */ 0x5268, 0x526B, 0x526C, 0x526D, 0x526E, 0x5270, 0x5271, 0xFFFD, -/* 01E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E8 */ 0xFFFD, 0x527E, 0x5280, 0x5283, 0x5284, 0x5285, 0x5286, 0x5287, -/* 01F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5291, -/* 01F8 */ 0x5292, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0200 */ 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, 0x52AE, 0x52AF, 0x52B0, -/* 0208 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0210 */ 0xFFFD, 0xFFFD, 0x52C0, 0x52C1, 0x52C2, 0x52C4, 0x52C5, 0x52C6, -/* 0218 */ 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE, 0x52CF, 0x52D1, 0x52D3, -/* 0220 */ 0x52D4, 0x52D5, 0x52D7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0228 */ 0xFFFD, 0x52E0, 0x52E1, 0x52E2, 0x52E3, 0x52FB, 0x52FC, 0x52FD, -/* 0230 */ 0x5301, 0x5302, 0x5303, 0x5304, 0x5307, 0x5309, 0x530A, 0x530B, -/* 0238 */ 0x530C, 0x530E, 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, -/* 0240 */ 0x531C, 0x531E, 0x531F, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, -/* 0248 */ 0x5329, 0x532B, 0x532C, 0x532D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0250 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x533C, 0x533D, -/* 0258 */ 0x5340, 0x5342, 0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, -/* 0260 */ 0x5354, 0x5358, 0x5359, 0x535B, 0x535D, 0x5365, 0x5368, 0x536A, -/* 0268 */ 0x536C, 0x536D, 0x5372, 0x5376, 0x5379, 0x537B, 0x537C, 0x537D, -/* 0270 */ 0x537E, 0x5380, 0x5381, 0x5383, 0x5387, 0x5388, 0x538A, 0x538E, -/* 0278 */ 0x538F, 0xFFFD, 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, -/* 0280 */ 0x5397, 0x5399, 0x539B, 0x539C, 0x539E, 0x53A0, 0x53A1, 0x53A4, -/* 0288 */ 0x53A7, 0x53AA, 0x53AB, 0x53AC, 0x53AD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0290 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x53B7, 0x53B8, 0x53B9, 0x53BA, -/* 0298 */ 0x53BC, 0x53BD, 0x53BE, 0x53C0, 0x53C3, 0x53C4, 0x53C5, 0x53C6, -/* 02A0 */ 0x53C7, 0x53CE, 0x53CF, 0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, -/* 02A8 */ 0x53DC, 0x53DD, 0x53DE, 0x53E1, 0x53E2, 0x53E7, 0x53F4, 0x53FA, -/* 02B0 */ 0x53FE, 0x53FF, 0x5400, 0x5402, 0x5405, 0x5407, 0x540B, 0x5414, -/* 02B8 */ 0x5418, 0x5419, 0x541A, 0x541C, 0x5422, 0x5424, 0x5425, 0x542A, -/* 02C0 */ 0x5430, 0x5433, 0x5436, 0x5437, 0x543A, 0x543D, 0x543F, 0x5441, -/* 02C8 */ 0x5442, 0x5444, 0x5445, 0x5447, 0x5449, 0x544C, 0x544D, 0x544E, -/* 02D0 */ 0x544F, 0x5451, 0x545A, 0x545D, 0x545E, 0x545F, 0x5460, 0x5461, -/* 02D8 */ 0x5463, 0x5465, 0x5467, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 02E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5474, 0x5479, 0x547A, 0x547E, 0x547F, -/* 02E8 */ 0x5481, 0x5483, 0x5485, 0x5487, 0x5488, 0x5489, 0x548A, 0x548D, -/* 02F0 */ 0x5491, 0x5493, 0x5497, 0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, -/* 02F8 */ 0x54A1, 0x54A2, 0x54A5, 0x54AE, 0x54B0, 0x54B2, 0x54B5, 0x54B6, -/* 0300 */ 0x54B7, 0x54B9, 0x54BA, 0x54BC, 0x54BE, 0x54C3, 0x54C5, 0x54CA, -/* 0308 */ 0x54CB, 0x54D6, 0x54D8, 0x54DB, 0x54E0, 0x54E1, 0x54E2, 0x54E3, -/* 0310 */ 0x54E4, 0x54EB, 0x54EC, 0x54EF, 0x54F0, 0x54F1, 0xFFFD, 0xFFFD, -/* 0318 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x54FB, 0x54FE, 0x5500, 0x5502, -/* 0320 */ 0x5503, 0x5504, 0x5505, 0x5508, 0x550A, 0x550B, 0x550C, 0x550D, -/* 0328 */ 0x550E, 0x5512, 0x5513, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0330 */ 0xFFFD, 0x551C, 0x551D, 0x551E, 0x551F, 0x5521, 0x5525, 0x5526, -/* 0338 */ 0xFFFD, 0x5528, 0x5529, 0x552B, 0x552D, 0x5532, 0x5534, 0x5535, -/* 0340 */ 0x5536, 0x5538, 0x5539, 0x553A, 0x553B, 0x553D, 0x5540, 0x5542, -/* 0348 */ 0x5545, 0x5547, 0x5548, 0x554B, 0x554C, 0x554D, 0x554E, 0x554F, -/* 0350 */ 0x5551, 0x5552, 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555A, -/* 0358 */ 0x555B, 0x555D, 0x555E, 0x555F, 0x5560, 0x5562, 0x5563, 0x5568, -/* 0360 */ 0x5569, 0x556B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0368 */ 0x5579, 0x557A, 0x557D, 0x557F, 0x5585, 0x5586, 0x558C, 0x558D, -/* 0370 */ 0x558E, 0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559A, -/* 0378 */ 0x559B, 0x559E, 0x55B2, 0x55B4, 0x55B6, 0x55B8, 0x55BA, 0x55BC, -/* 0380 */ 0x55BF, 0x55C0, 0x55C1, 0x55C2, 0x55C3, 0x55C6, 0x55C7, 0x55C8, -/* 0388 */ 0x55CA, 0x55CB, 0x55CE, 0x55CF, 0x55D0, 0x55D5, 0x55D7, 0x55D8, -/* 0390 */ 0x55D9, 0x55DA, 0x55DB, 0x55DE, 0x55E0, 0x55E2, 0x55E7, 0x55E9, -/* 0398 */ 0x55ED, 0x55EE, 0x55F0, 0x55F1, 0x55F4, 0x55F6, 0x55F8, 0x55F9, -/* 03A0 */ 0x55FA, 0x55FB, 0x55FC, 0x55FF, 0x5602, 0x5603, 0x5604, 0x5605, -/* 03A8 */ 0x5606, 0x5607, 0x560A, 0x560B, 0x560D, 0xFFFD, 0xFFFD, 0xFFFD, -/* 03B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5619, 0x561A, 0x561C, -/* 03B8 */ 0x561D, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629, -/* 03C0 */ 0x562A, 0x562B, 0x562E, 0x562F, 0x5630, 0x5633, 0x5635, 0x5637, -/* 03C8 */ 0x5638, 0x563A, 0x563C, 0x563D, 0x563E, 0x564F, 0x5650, 0x5651, -/* 03D0 */ 0x5652, 0x5653, 0x5655, 0x5656, 0x565A, 0x565B, 0x565D, 0x565E, -/* 03D8 */ 0x565F, 0x5660, 0x5661, 0xFFFD, 0x5663, 0x5665, 0x5666, 0x5667, -/* 03E0 */ 0x566D, 0x566E, 0x566F, 0x5670, 0x5672, 0x5673, 0x5674, 0x5675, -/* 03E8 */ 0x5677, 0x5678, 0x5679, 0x567A, 0x5690, 0x5691, 0x5692, 0x56B8, -/* 03F0 */ 0x56B9, 0x56BA, 0x56BB, 0x56D5, 0x56D6, 0x56D8, 0x56D9, 0x56DC, -/* 03F8 */ 0x56E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x56EC, -/* 0400 */ 0x56EE, 0x56EF, 0x56F2, 0x56F3, 0x56F6, 0x56F7, 0x56F8, 0x56FB, -/* 0408 */ 0x56FC, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707, 0x571D, 0x571E, -/* 0410 */ 0x5720, 0x5721, 0x5722, 0x5724, 0x5725, 0x5726, 0x5727, 0x572B, -/* 0418 */ 0x5731, 0x5732, 0x5734, 0x5735, 0x5736, 0x5737, 0x5738, 0x573C, -/* 0420 */ 0x573D, 0x573F, 0x5741, 0x5743, 0x5744, 0x5745, 0x5746, 0x5748, -/* 0428 */ 0x5749, 0x574B, 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5758, -/* 0430 */ 0x5759, 0x5762, 0x5763, 0x5765, 0x5767, 0x576C, 0x576E, 0x5770, -/* 0438 */ 0x5771, 0x5772, 0x5774, 0x5775, 0x5778, 0x5779, 0x577A, 0x577D, -/* 0440 */ 0x577E, 0x577F, 0x5780, 0xFFFD, 0x5781, 0x5787, 0x5788, 0x5789, -/* 0448 */ 0x578A, 0x578D, 0x578E, 0x578F, 0x5790, 0x5791, 0xFFFD, 0xFFFD, -/* 0450 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x579C, 0x579D, 0x579E, -/* 0458 */ 0x579F, 0x57A5, 0x57A8, 0x57AA, 0x57AC, 0x57AF, 0x57B0, 0x57B1, -/* 0460 */ 0x57B3, 0x57B5, 0x57B6, 0x57B7, 0x57CC, 0x57CD, 0x57D0, 0x57D1, -/* 0468 */ 0x57D3, 0x57D6, 0x57D7, 0x57DB, 0x57DC, 0x57DE, 0x57E1, 0x57E2, -/* 0470 */ 0x57E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0478 */ 0xFFFD, 0x57EE, 0x57F0, 0x57F1, 0x57F2, 0x57F3, 0x57F5, 0x57F6, -/* 0480 */ 0x57F7, 0x57FB, 0x57FC, 0x57FE, 0x57FF, 0x5801, 0x5803, 0x5804, -/* 0488 */ 0x5805, 0x5808, 0x5809, 0x580A, 0x580C, 0x580E, 0x580F, 0x5810, -/* 0490 */ 0x5812, 0x5813, 0x5814, 0x5816, 0x5817, 0x5818, 0x581A, 0x581B, -/* 0498 */ 0x581C, 0x581D, 0x581F, 0x5822, 0x5823, 0x5825, 0x5826, 0x5827, -/* 04A0 */ 0x5828, 0x5829, 0x582B, 0x582C, 0x582D, 0x582E, 0x582F, 0x5831, -/* 04A8 */ 0x5832, 0x5833, 0x5834, 0x584E, 0x584F, 0x5850, 0x5852, 0x5853, -/* 04B0 */ 0x5855, 0x5856, 0x5857, 0x5859, 0x585A, 0x585B, 0x585C, 0x585D, -/* 04B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5866, 0x5867, -/* 04C0 */ 0x5868, 0x5869, 0x586A, 0x587F, 0x5882, 0x5884, 0x5886, 0x5887, -/* 04C8 */ 0x5888, 0x588A, 0x588B, 0x588C, 0xFFFD, 0x588D, 0x588E, 0x588F, -/* 04D0 */ 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897, 0x5898, 0x589B, -/* 04D8 */ 0x589C, 0x589D, 0x58BD, 0x58BE, 0x58BF, 0x58C0, 0x58C2, 0x58C3, -/* 04E0 */ 0x58C4, 0x58D2, 0x58D3, 0x58D4, 0x58ED, 0x58EF, 0x58F1, 0x58F2, -/* 04E8 */ 0x58F4, 0x58F5, 0x58F7, 0x58F8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 04F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5903, 0x5905, 0x5906, 0x5908, -/* 04F8 */ 0x5909, 0x590A, 0x590B, 0x590C, 0x590E, 0x5910, 0x5911, 0x5912, -/* 0500 */ 0x5913, 0x5917, 0x5918, 0x591B, 0x591D, 0x591E, 0x5920, 0x5921, -/* 0508 */ 0x5922, 0x5923, 0x5926, 0x5928, 0x592C, 0x5930, 0x5932, 0x5933, -/* 0510 */ 0x5935, 0x5936, 0x593B, 0x593D, 0x593E, 0x593F, 0x5940, 0x5943, -/* 0518 */ 0x5945, 0x5946, 0x594A, 0x594C, 0x594D, 0x5950, 0x5952, 0x5953, -/* 0520 */ 0x5959, 0x595B, 0x595C, 0x595D, 0x595E, 0x595F, 0x5961, 0x5963, -/* 0528 */ 0x5964, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C, 0x597E, 0x597F, -/* 0530 */ 0x5980, 0x5985, 0x5989, 0x598B, 0x598C, 0x598E, 0x598F, 0x5990, -/* 0538 */ 0x5991, 0x5994, 0x5995, 0x5998, 0x599A, 0x599B, 0x599C, 0x599D, -/* 0540 */ 0x599F, 0x59A0, 0x59A1, 0x59A2, 0x59A6, 0xFFFD, 0x59A7, 0x59AC, -/* 0548 */ 0x59AD, 0x59B0, 0x59B1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0550 */ 0xFFFD, 0x59BA, 0x59BC, 0x59BD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0558 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x59C7, 0x59C8, 0x59C9, 0x59CC, 0x59CD, -/* 0560 */ 0x59CE, 0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB, 0x59DE, 0x59DF, -/* 0568 */ 0x59E0, 0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7, 0x59E9, 0x59EA, -/* 0570 */ 0x59EB, 0x59FA, 0x59FC, 0x59FD, 0x59FE, 0x5A00, 0x5A02, 0x5A0A, -/* 0578 */ 0x5A0B, 0x5A0D, 0x5A0E, 0x5A0F, 0x5A10, 0x5A12, 0x5A14, 0x5A15, -/* 0580 */ 0x5A16, 0x5A17, 0x5A19, 0x5A1A, 0x5A1B, 0x5A1D, 0x5A1E, 0x5A21, -/* 0588 */ 0x5A22, 0x5A24, 0x5A26, 0x5A27, 0x5A28, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0590 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A33, 0x5A35, 0x5A37, 0x5A38, -/* 0598 */ 0x5A39, 0x5A3A, 0x5A3B, 0x5A3D, 0x5A3E, 0x5A3F, 0x5A41, 0x5A42, -/* 05A0 */ 0x5A43, 0x5A44, 0x5A45, 0x5A47, 0x5A48, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5A56, -/* 05B0 */ 0x5A57, 0x5A58, 0x5A59, 0x5A61, 0x5A63, 0x5A64, 0x5A65, 0x5A66, -/* 05B8 */ 0x5A68, 0x5A69, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5A78, 0x5A79, 0x5A7B, 0x5A7C, 0x5A7D, -/* 05C8 */ 0x5A7E, 0x5AAB, 0x5AAC, 0xFFFD, 0x5AAD, 0x5AAE, 0x5AAF, 0x5AB0, -/* 05D0 */ 0x5AB1, 0x5AB4, 0x5AB6, 0x5AB7, 0x5AB9, 0x5ABA, 0x5ABB, 0x5ABC, -/* 05D8 */ 0x5ABD, 0x5ABF, 0x5AC0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 05E0 */ 0xFFFD, 0x5ACA, 0x5ACB, 0x5ACD, 0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, -/* 05E8 */ 0x5AD3, 0x5AD5, 0x5AD7, 0x5AD9, 0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, -/* 05F0 */ 0x5ADF, 0x5AE2, 0x5AE4, 0x5AE5, 0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, -/* 05F8 */ 0x5AED, 0x5AEE, 0x5AEF, 0x5AF0, 0x5B33, 0x5B35, 0x5B36, 0x5B52, -/* 0600 */ 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67, 0x5B68, 0x5B6B, 0x5B6D, -/* 0608 */ 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76, 0x5B77, 0x5B78, 0x5B79, -/* 0610 */ 0x5B7B, 0x5B7C, 0x5B7E, 0x5B7F, 0x5B82, 0x5B86, 0x5B8A, 0x5B8D, -/* 0618 */ 0x5B8E, 0x5B90, 0x5B91, 0x5B92, 0x5B94, 0x5B96, 0x5B9F, 0x5BA7, -/* 0620 */ 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAE, 0x5BAF, 0x5BB1, 0x5BB2, -/* 0628 */ 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0, 0x5BC1, 0x5BC3, 0x5BC8, -/* 0630 */ 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE, 0x5BCF, 0xFFFD, 0x5BD1, -/* 0638 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0640 */ 0xFFFD, 0x5BE0, 0x5BE2, 0x5BE3, 0x5BE6, 0x5BE7, 0x5BE9, 0x5BEA, -/* 0648 */ 0x5BEB, 0x5BEC, 0x5BED, 0x5BEF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0650 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5BFD, 0x5BFE, 0x5C00, 0x5C02, 0x5C03, -/* 0658 */ 0x5C05, 0x5C07, 0x5C08, 0x5C0B, 0x5C0C, 0x5C0D, 0x5C0E, 0x5C10, -/* 0660 */ 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E, 0x5C1F, 0x5C20, -/* 0668 */ 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A, 0x5C2B, 0x5C2D, -/* 0670 */ 0x5C2E, 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35, 0x5C36, 0x5C37, -/* 0678 */ 0x5C43, 0x5C44, 0x5C46, 0x5C47, 0x5C4C, 0x5C4D, 0x5C52, 0x5C53, -/* 0680 */ 0x5C54, 0x5C56, 0x5C57, 0x5C58, 0x5C5A, 0x5C5B, 0x5C5C, 0x5C5D, -/* 0688 */ 0x5C5F, 0x5C62, 0x5C64, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0690 */ 0xFFFD, 0xFFFD, 0x5C70, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0698 */ 0xFFFD, 0xFFFD, 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E, 0x5C80, 0x5C83, -/* 06A0 */ 0x5C84, 0x5C85, 0x5C86, 0x5C87, 0x5C89, 0x5C8A, 0x5C8B, 0x5C8E, -/* 06A8 */ 0x5C8F, 0x5C92, 0x5C93, 0x5C95, 0x5C9D, 0x5C9E, 0x5C9F, 0x5CA0, -/* 06B0 */ 0x5CA1, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8, 0x5CAA, 0x5CAE, -/* 06B8 */ 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9, 0x5CBA, 0x5CBB, -/* 06C0 */ 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CE2, 0x5CE3, 0x5CE7, -/* 06C8 */ 0x5CE9, 0x5CEB, 0x5CEC, 0x5CEE, 0x5CEF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 06D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5CFC, -/* 06D8 */ 0x5CFD, 0x5CFE, 0x5CFF, 0x5D00, 0xFFFD, 0x5D01, 0x5D04, 0x5D05, -/* 06E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5D0F, 0x5D10, -/* 06E8 */ 0x5D11, 0x5D12, 0x5D13, 0x5D15, 0x5D17, 0x5D18, 0x5D19, 0x5D1A, -/* 06F0 */ 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20, 0x5D21, 0x5D22, 0x5D23, 0x5D25, -/* 06F8 */ 0x5D28, 0x5D2A, 0x5D2B, 0x5D2C, 0x5D2F, 0x5D30, 0x5D31, 0x5D32, -/* 0700 */ 0x5D33, 0x5D48, 0x5D49, 0x5D59, 0x5D5A, 0x5D5C, 0x5D6A, 0x5D6D, -/* 0708 */ 0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D9A, 0x5D9B, 0x5D9C, -/* 0710 */ 0x5D9E, 0x5D9F, 0x5DA0, 0x5DDC, 0x5DDF, 0x5DE0, 0x5DE3, 0x5DE4, -/* 0718 */ 0x5DEA, 0x5DEC, 0x5DED, 0xFFFD, 0x5DF0, 0x5DF5, 0x5DF6, 0x5DF8, -/* 0720 */ 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC, 0x5DFF, 0x5E00, 0x5E04, 0x5E07, -/* 0728 */ 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D, 0x5E0E, 0x5E12, 0x5E13, 0x5E17, -/* 0730 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0738 */ 0x5E28, 0x5E29, 0x5E2A, 0x5E2B, 0x5E2C, 0x5E2F, 0x5E30, 0x5E32, -/* 0740 */ 0x5E33, 0x5E34, 0x5E35, 0x5E36, 0x5E39, 0x5E3A, 0x5E3E, 0x5E3F, -/* 0748 */ 0x5E40, 0x5E41, 0x5E43, 0x5E56, 0x5E57, 0x5E58, 0x5E59, 0x5E5A, -/* 0750 */ 0x5E5C, 0x5E5D, 0x5E5F, 0x5E60, 0x5E75, 0x5E77, 0x5E79, 0x5E7E, -/* 0758 */ 0x5E81, 0x5E82, 0x5E83, 0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D, -/* 0760 */ 0x5E8E, 0x5E92, 0x5E98, 0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3, -/* 0768 */ 0x5EA4, 0x5EA8, 0x5EA9, 0x5EAA, 0x5EAB, 0x5EAC, 0x5EAE, 0x5EAF, -/* 0770 */ 0x5EB0, 0x5EB1, 0x5EB2, 0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD, -/* 0778 */ 0x5EC6, 0x5EC7, 0x5EC8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0780 */ 0xFFFD, 0x5ED4, 0x5ED5, 0x5ED7, 0x5ED8, 0x5ED9, 0x5EDA, 0x5EE9, -/* 0788 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0790 */ 0xFFFD, 0x5EF5, 0x5EF8, 0x5EF9, 0x5EFB, 0x5EFC, 0x5EFD, 0x5F05, -/* 0798 */ 0x5F06, 0x5F07, 0x5F09, 0x5F0C, 0x5F0D, 0x5F0E, 0x5F10, 0x5F12, -/* 07A0 */ 0x5F14, 0x5F16, 0x5F19, 0x5F1A, 0x5F1C, 0x5F1D, 0x5F1E, 0x5F21, -/* 07A8 */ 0x5F22, 0x5F23, 0x5F24, 0xFFFD, 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, -/* 07B0 */ 0x5F30, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07B8 */ 0x5F3B, 0x5F3D, 0x5F3E, 0x5F3F, 0x5F51, 0x5F54, 0x5F59, 0x5F5A, -/* 07C0 */ 0x5F5B, 0x5F5C, 0x5F5E, 0x5F5F, 0x5F60, 0x5F63, 0x5F65, 0x5F67, -/* 07C8 */ 0x5F68, 0x5F6B, 0x5F6E, 0x5F6F, 0x5F72, 0x5F74, 0x5F75, 0x5F76, -/* 07D0 */ 0x5F78, 0x5F7A, 0x5F7D, 0x5F7E, 0x5F7F, 0x5F83, 0x5F86, 0x5F8D, -/* 07D8 */ 0x5F8E, 0x5F8F, 0x5F91, 0x5F93, 0x5F94, 0x5F96, 0x5F9A, 0x5F9B, -/* 07E0 */ 0x5F9D, 0x5F9E, 0x5F9F, 0x5FA0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07E8 */ 0xFFFD, 0xFFFD, 0x5FA9, 0x5FAB, 0x5FAC, 0xFFFD, 0xFFFD, 0xFFFD, -/* 07F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x5FB6, 0x5FB8, 0x5FB9, 0x5FBA, 0x5FBB, -/* 07F8 */ 0x5FBE, 0x5FBF, 0x5FC0, 0x5FC1, 0x5FC2, 0x5FC7, 0x5FC8, 0x5FCA, -/* 0800 */ 0x5FCB, 0x5FCE, 0x5FD3, 0x5FD4, 0x5FD5, 0x5FDA, 0x5FDB, 0x5FDC, -/* 0808 */ 0x5FDE, 0x5FDF, 0x5FE2, 0x5FE3, 0x5FE5, 0x5FE6, 0x5FE8, 0x5FE9, -/* 0810 */ 0x5FEC, 0x5FEF, 0x5FF0, 0x5FF2, 0x5FF3, 0x5FF4, 0x5FF6, 0x5FF7, -/* 0818 */ 0x5FF9, 0x5FFA, 0x5FFC, 0x6007, 0x6008, 0x6009, 0x600B, 0x600C, -/* 0820 */ 0x6010, 0x6011, 0x6013, 0x6017, 0x6018, 0x601A, 0x601E, 0x601F, -/* 0828 */ 0x6022, 0x6023, 0x6024, 0x602C, 0x602D, 0x602E, 0x6030, 0x6031, -/* 0830 */ 0x6032, 0x6033, 0x6034, 0x6036, 0x6037, 0x6038, 0x6039, 0x603A, -/* 0838 */ 0x603D, 0x603E, 0x6040, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0840 */ 0xFFFD, 0xFFFD, 0x604C, 0x604E, 0x604F, 0x6051, 0x6053, 0x6054, -/* 0848 */ 0x6056, 0x6057, 0x6058, 0x605B, 0x605C, 0x605E, 0x605F, 0x6060, -/* 0850 */ 0x6061, 0x6065, 0x6066, 0x606E, 0x6071, 0x6072, 0x6074, 0x6075, -/* 0858 */ 0x6077, 0x607E, 0x6080, 0xFFFD, 0x6081, 0x6082, 0x6085, 0x6086, -/* 0860 */ 0x6087, 0x6088, 0x608A, 0x608B, 0x608E, 0x608F, 0x6090, 0x6091, -/* 0868 */ 0x6093, 0x6095, 0x6097, 0x6098, 0x6099, 0x609C, 0x609E, 0x60A1, -/* 0870 */ 0x60A2, 0x60A4, 0x60A5, 0x60A7, 0x60A9, 0x60AA, 0x60AE, 0x60B0, -/* 0878 */ 0x60B3, 0x60B5, 0x60B6, 0x60B7, 0x60B9, 0x60BA, 0xFFFD, 0xFFFD, -/* 0880 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x60C7, 0x60C8, -/* 0888 */ 0x60C9, 0x60CC, 0x60CD, 0x60CE, 0x60CF, 0x60D0, 0x60D2, 0x60D3, -/* 0890 */ 0x60D4, 0x60D6, 0x60D7, 0x60D9, 0x60DB, 0x60DE, 0x60E1, 0x60E2, -/* 0898 */ 0x60E3, 0x60E4, 0x60E5, 0x60EA, 0x60F1, 0x60F2, 0x60F5, 0x60F7, -/* 08A0 */ 0x60F8, 0x60FB, 0x60FC, 0x60FD, 0x60FE, 0x60FF, 0x6102, 0x6103, -/* 08A8 */ 0x6104, 0x6105, 0x6107, 0x610A, 0x610B, 0x610C, 0x6110, 0x6111, -/* 08B0 */ 0x6112, 0x6113, 0x6114, 0x6116, 0x6117, 0x6118, 0x6119, 0x611B, -/* 08B8 */ 0x611C, 0x611D, 0x611E, 0x6121, 0x6122, 0x6125, 0x6128, 0x6129, -/* 08C0 */ 0x612A, 0x6147, 0x6149, 0x614B, 0x614D, 0x614F, 0x6150, 0x6152, -/* 08C8 */ 0x6153, 0x6154, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08D0 */ 0xFFFD, 0x615E, 0x615F, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, -/* 08D8 */ 0x6166, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 08E0 */ 0x6171, 0x6172, 0x6173, 0x6174, 0x6176, 0x618C, 0x618D, 0x618F, -/* 08E8 */ 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0x61AA, 0x61AB, 0x61BF, -/* 08F0 */ 0x61C0, 0x61C1, 0x61C3, 0x61C4, 0x61C5, 0x61C6, 0x61C7, 0x61C9, -/* 08F8 */ 0x61CC, 0x61CD, 0x61CE, 0x61CF, 0x61D0, 0x61D3, 0x6207, 0x6209, -/* 0900 */ 0x6213, 0x6214, 0x6219, 0x621C, 0x621D, 0x621E, 0x6220, 0x6223, -/* 0908 */ 0x6226, 0x6227, 0x6228, 0x6229, 0x622B, 0x622D, 0x622F, 0x6230, -/* 0910 */ 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A, 0x623B, -/* 0918 */ 0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A, 0x624F, 0x6250, -/* 0920 */ 0x6255, 0x6256, 0x6257, 0x6259, 0x625A, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0928 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6264, 0x6265, 0x6268, 0x6271, -/* 0930 */ 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627A, 0x627B, 0x627D, -/* 0938 */ 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287, 0x6288, 0xFFFD, -/* 0940 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6294, 0x6299, 0x629C, -/* 0948 */ 0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9, 0x62AA, 0x62AD, -/* 0950 */ 0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4, 0x62B6, 0x62B7, -/* 0958 */ 0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1, 0xFFFD, 0x62C3, 0x62CB, -/* 0960 */ 0x62CF, 0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0, 0x62E1, 0x62E4, -/* 0968 */ 0x62EA, 0x62EB, 0x62F0, 0x62F2, 0x62F5, 0x62F8, 0x62F9, 0x62FA, -/* 0970 */ 0x62FB, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 0x630A, 0x630B, -/* 0978 */ 0x630C, 0x630D, 0x630F, 0x6310, 0x6312, 0x6313, 0x6314, 0x6315, -/* 0980 */ 0x6317, 0x6318, 0x6319, 0x631C, 0x6326, 0x6327, 0x6329, 0x632C, -/* 0988 */ 0x632D, 0x632E, 0x6330, 0x6331, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0990 */ 0xFFFD, 0xFFFD, 0x633B, 0x633C, 0x633E, 0x633F, 0x6340, 0x6341, -/* 0998 */ 0x6344, 0x6347, 0x6348, 0x634A, 0x6351, 0x6352, 0x6353, 0x6354, -/* 09A0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09A8 */ 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636A, 0x636B, 0x636C, -/* 09B0 */ 0x636F, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 0x6378, 0x6379, -/* 09B8 */ 0x637C, 0x637D, 0x637E, 0x637F, 0x6381, 0x6383, 0x6384, 0x6385, -/* 09C0 */ 0x6386, 0x638B, 0x638D, 0x6391, 0x6393, 0x6394, 0x6395, 0x6397, -/* 09C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x63A1, -/* 09D0 */ 0x63A4, 0x63A6, 0x63AB, 0x63AF, 0x63B1, 0x63B2, 0x63B5, 0x63B6, -/* 09D8 */ 0x63B9, 0x63BB, 0x63BD, 0x63BF, 0x63C0, 0x63C1, 0x63C2, 0x63C3, -/* 09E0 */ 0x63C5, 0x63C7, 0x63C8, 0x63CA, 0x63CB, 0x63CC, 0x63D1, 0x63D3, -/* 09E8 */ 0x63D4, 0x63D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 09F0 */ 0xFFFD, 0x63DF, 0x63E2, 0x63E4, 0x63E5, 0x63E6, 0x63E7, 0x63E8, -/* 09F8 */ 0x63EB, 0x63EC, 0x63EE, 0x63EF, 0x63F0, 0x63F1, 0x63F3, 0x63F5, -/* 0A00 */ 0x63F7, 0x63F9, 0x63FA, 0x63FB, 0x63FC, 0x63FE, 0x6403, 0x6404, -/* 0A08 */ 0x6406, 0x6407, 0x6408, 0x6409, 0x640A, 0x640D, 0x640E, 0x6411, -/* 0A10 */ 0x6412, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x641D, -/* 0A18 */ 0x641F, 0x6422, 0x6423, 0x6424, 0xFFFD, 0x6425, 0x6427, 0x6428, -/* 0A20 */ 0x6429, 0x642B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A28 */ 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, 0x643B, 0x643C, 0x643E, -/* 0A30 */ 0x6440, 0x6442, 0x6443, 0x6449, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6453, 0x6455, 0x6456, 0x6457, 0x6459, -/* 0A40 */ 0x645A, 0x645B, 0x645C, 0x645D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6468, 0x646A, 0x646B, 0x646C, -/* 0A50 */ 0x6483, 0x6486, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6493, 0x6494, 0x6497, 0x6498, 0x649A, -/* 0A60 */ 0x649B, 0x649C, 0x649D, 0x649F, 0x64A0, 0x64A1, 0x64A2, 0x64A3, -/* 0A68 */ 0x64A5, 0x64A6, 0x64A7, 0x64A8, 0x64AA, 0x64AB, 0x64AF, 0x64B1, -/* 0A70 */ 0x64B2, 0x64B3, 0x64B4, 0x64B6, 0x64B9, 0x64BB, 0x64BD, 0x64BE, -/* 0A78 */ 0x64BF, 0x64C1, 0x64C3, 0x64C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0A80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x64CF, 0x64D1, 0x64D3, 0x64D4, 0x64D5, -/* 0A88 */ 0x64D6, 0x64D9, 0x64DA, 0x64DB, 0x64DC, 0x64DD, 0x64DF, 0x64E0, -/* 0A90 */ 0x64E1, 0x64E3, 0x64E5, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, -/* 0A98 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AA0 */ 0xFFFD, 0xFFFD, 0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, -/* 0AA8 */ 0x6529, 0x652A, 0x652C, 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, -/* 0AB0 */ 0x6537, 0x653A, 0x653C, 0x653D, 0x6540, 0x6541, 0x6542, 0x6543, -/* 0AB8 */ 0x6544, 0x6546, 0x6547, 0x654A, 0x654B, 0x654D, 0x654E, 0x6550, -/* 0AC0 */ 0x6552, 0x6553, 0x6554, 0x6557, 0x6558, 0x655A, 0x655C, 0x655F, -/* 0AC8 */ 0x6560, 0x6561, 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A, -/* 0AD0 */ 0x656D, 0x656E, 0x656F, 0x6571, 0x6573, 0x6575, 0x6576, 0x6588, -/* 0AD8 */ 0x6589, 0x658A, 0x658D, 0x658E, 0x658F, 0x6592, 0x6594, 0x6595, -/* 0AE0 */ 0x6596, 0x6598, 0x659A, 0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, -/* 0AE8 */ 0x65A6, 0x65A8, 0x65AA, 0x65AC, 0x65AE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0AF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x65BA, 0x65BB, 0x65BE, -/* 0AF8 */ 0x65BF, 0x65C0, 0x65C2, 0x65C7, 0x65C8, 0x65C9, 0x65CA, 0x65CD, -/* 0B00 */ 0x65D0, 0x65D1, 0x65D3, 0x65D4, 0x65D5, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x65E1, 0x65E3, 0x65E4, -/* 0B10 */ 0x65EA, 0x65EB, 0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, -/* 0B18 */ 0x65FB, 0x65FC, 0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, -/* 0B20 */ 0x6607, 0x6608, 0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, -/* 0B28 */ 0x6616, 0x6617, 0x6618, 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, -/* 0B30 */ 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662A, 0x662B, 0x662C, -/* 0B38 */ 0x662E, 0x6630, 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663A, -/* 0B40 */ 0x663B, 0x663D, 0x663F, 0x6640, 0x6642, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x664D, 0x664E, 0x6650, 0x6651, -/* 0B50 */ 0x6658, 0xFFFD, 0x6659, 0x665B, 0x665C, 0x665D, 0x665E, 0x6660, -/* 0B58 */ 0x6662, 0x6663, 0x6665, 0x6667, 0x6669, 0x666A, 0x666B, 0x666C, -/* 0B60 */ 0x666D, 0x6671, 0x6672, 0x6673, 0x6675, 0x6678, 0x6679, 0x667B, -/* 0B68 */ 0x667C, 0x667D, 0x667F, 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, -/* 0B70 */ 0x6688, 0x6689, 0x668A, 0x668B, 0x668D, 0x668E, 0x668F, 0x6690, -/* 0B78 */ 0x6692, 0x6693, 0x6694, 0x6695, 0x6698, 0x6699, 0x669A, 0x669B, -/* 0B80 */ 0x669C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B88 */ 0xFFFD, 0xFFFD, 0x66A9, 0x66AA, 0x66AB, 0x66AC, 0x66AD, 0x66AF, -/* 0B90 */ 0x66B0, 0x66B1, 0x66B2, 0x66B3, 0x66B5, 0x66B6, 0x66B7, 0x66B8, -/* 0B98 */ 0x66BA, 0x66BB, 0x66BC, 0x66BD, 0x66DA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x66E7, 0x66E8, 0xFFFD, -/* 0BA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x66F1, 0x66F5, 0x66F6, -/* 0BB0 */ 0x66F8, 0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6703, 0x6704, -/* 0BB8 */ 0x6705, 0x6706, 0x6707, 0x670C, 0x670E, 0x670F, 0x6711, 0x6712, -/* 0BC0 */ 0x6713, 0x6716, 0x6718, 0x6719, 0x671A, 0x671C, 0x671E, 0xFFFD, -/* 0BC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6727, 0x6729, 0x672E, -/* 0BD0 */ 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739, 0x673B, -/* 0BD8 */ 0x673C, 0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747, 0x674A, -/* 0BE0 */ 0x674B, 0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, 0x6759, -/* 0BE8 */ 0x675A, 0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766, 0x6767, -/* 0BF0 */ 0x676B, 0x676C, 0x676E, 0x6771, 0x6774, 0x6776, 0xFFFD, 0x6778, -/* 0BF8 */ 0x6779, 0x677A, 0x677B, 0x677D, 0x6780, 0x6782, 0x6783, 0x6785, -/* 0C00 */ 0x6786, 0x6788, 0x678A, 0x678C, 0x678D, 0x678E, 0x678F, 0x6791, -/* 0C08 */ 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679B, 0x679F, 0x67A0, -/* 0C10 */ 0x67A1, 0x67A4, 0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1, 0x67B2, -/* 0C18 */ 0x67B4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C20 */ 0xFFFD, 0x67C2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C28 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x67D5, 0x67D6, 0x67D7, 0x67DB, -/* 0C30 */ 0x67DF, 0x67E1, 0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8, 0x67EA, -/* 0C38 */ 0x67EB, 0x67ED, 0x67EE, 0x67F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x67FE, 0x6801, 0x6802, 0x6803, -/* 0C48 */ 0x6804, 0x6806, 0x680D, 0x6810, 0x6812, 0x6814, 0x6815, 0x6818, -/* 0C50 */ 0x6819, 0x681A, 0x681B, 0x681C, 0x681E, 0x681F, 0x6820, 0x6834, -/* 0C58 */ 0x6835, 0x6836, 0x683A, 0x683B, 0x683F, 0x6847, 0x684B, 0x684D, -/* 0C60 */ 0x684F, 0x6852, 0x685C, 0x685D, 0x685E, 0x685F, 0x686A, 0xFFFD, -/* 0C68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6875, -/* 0C70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C78 */ 0xFFFD, 0x6882, 0x6884, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, -/* 0C88 */ 0x6896, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x68A3, 0x68A4, 0x68A5, 0x68A9, 0x68AA, -/* 0C98 */ 0x68AB, 0x68AC, 0x68AE, 0x68B1, 0x68B2, 0x68B4, 0x68B6, 0x68B7, -/* 0CA0 */ 0x68B8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CA8 */ 0xFFFD, 0x68C1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CB0 */ 0x68CA, 0x68CC, 0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3, 0x68D4, -/* 0CB8 */ 0x68D6, 0x68D7, 0x68D9, 0x68DB, 0x68DC, 0x68DD, 0x68DE, 0x68DF, -/* 0CC0 */ 0x68E1, 0x68E2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x68EF, 0x68F2, 0x68F3, 0x68F4, -/* 0CD0 */ 0x68F6, 0x68F7, 0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF, 0x6900, -/* 0CD8 */ 0x6902, 0x6903, 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690A, -/* 0CE0 */ 0x690C, 0x690F, 0x6911, 0x6921, 0x6922, 0x6923, 0xFFFD, 0xFFFD, -/* 0CE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x692E, 0x692F, -/* 0CF0 */ 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937, 0x6938, 0x693A, -/* 0CF8 */ 0x693B, 0x693C, 0x693E, 0x6940, 0x6941, 0x6955, 0x6956, 0x6958, -/* 0D00 */ 0x6959, 0x695B, 0x695C, 0x695F, 0x6961, 0x6962, 0x6964, 0x6965, -/* 0D08 */ 0x6967, 0x6968, 0x6969, 0x696A, 0x696C, 0x696D, 0x696F, 0x6970, -/* 0D10 */ 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x697A, 0x697B, 0x697D, -/* 0D18 */ 0x697E, 0x697F, 0x6981, 0x6983, 0x6985, 0x698A, 0x698B, 0x698C, -/* 0D20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6996, 0x6997, -/* 0D28 */ 0x6999, 0x699A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x69A9, 0x69AA, 0x69AC, 0x69AE, -/* 0D38 */ 0x69AF, 0x69B0, 0x69B2, 0x69B3, 0x69B5, 0x69B6, 0x69B8, 0x69B9, -/* 0D40 */ 0x69BA, 0x69BC, 0x69BD, 0xFFFD, 0x69BE, 0x69BF, 0x69C0, 0xFFFD, -/* 0D48 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x69CB, -/* 0D50 */ 0x69CD, 0x69CF, 0x69D1, 0x69D2, 0x69D3, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x69DC, 0x69DD, 0x69DE, 0x69EE, 0x69EF, -/* 0D60 */ 0x69F0, 0x69F1, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D68 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x69FE, 0x6A20, 0xFFFD, 0xFFFD, -/* 0D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, -/* 0D78 */ 0x6A2E, 0x6A30, 0x6A32, 0x6A33, 0x6A34, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0D80 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A3F, 0x6A40, 0x6A41, 0x6A42, -/* 0D88 */ 0x6A43, 0x6A45, 0x6A46, 0x6A5C, 0x6A5D, 0x6A5E, 0x6A5F, 0x6A60, -/* 0D90 */ 0x6A62, 0x6A63, 0x6A64, 0x6A7A, 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, -/* 0D98 */ 0x6A81, 0x6A82, 0x6A83, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6A8F, 0x6A92, 0x6A93, 0x6A94, -/* 0DA8 */ 0x6A95, 0x6A96, 0x6AA7, 0x6AA8, 0x6AAA, 0x6B25, 0x6B26, 0x6B2F, -/* 0DB0 */ 0x6B30, 0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38, 0x6B3B, -/* 0DB8 */ 0x6B3C, 0x6B3D, 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44, 0x6B45, -/* 0DC0 */ 0x6B48, 0x6B4A, 0x6B4B, 0x6B68, 0x6B69, 0x6B7A, 0x6B7D, 0x6B7E, -/* 0DC8 */ 0x6B7F, 0x6B80, 0x6B85, 0x6B88, 0xFFFD, 0x6B8C, 0x6B8E, 0x6B8F, -/* 0DD0 */ 0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97, 0x6B98, 0x6B99, 0x6B9C, -/* 0DD8 */ 0x6B9D, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BB6, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0DE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6BC0, 0x6BC3, 0x6BC4, 0x6BC6, -/* 0DE8 */ 0x6BC7, 0x6BC8, 0x6BC9, 0x6BCA, 0x6BCC, 0x6BCE, 0x6BD0, 0x6BD1, -/* 0DF0 */ 0x6BD8, 0x6BDA, 0x6BDC, 0x6BDD, 0x6BDE, 0x6BDF, 0x6BE0, 0xFFFD, -/* 0DF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6BEC, -/* 0E00 */ 0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2, 0x6BF4, 0x6BF6, 0x6BF7, -/* 0E08 */ 0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0E10 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6C08, 0x6C09, 0x6C0A, 0x6C0B, 0x6C0C, -/* 0E18 */ 0x6C0E, 0x6C12, 0x6C17, 0x6C1C, 0x6C1D, 0x6C1E, 0x6C20, 0x6C23, -/* 0E20 */ 0x6C25, 0x6C2B, 0x6C2C, 0x6C2D, 0x6C31, 0x6C33, 0x6C36, 0x6C37, -/* 0E28 */ 0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E, 0x6C3F, 0x6C43, 0x6C44, -/* 0E30 */ 0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D, 0x6C4E, 0x6C4F, 0x6C51, -/* 0E38 */ 0x6C52, 0x6C53, 0x6C56, 0x6C58, 0x6C59, 0x6C5A, 0x6C62, 0x6C63, -/* 0E40 */ 0x6C65, 0x6C66, 0x6C67, 0x6C6B, 0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F, -/* 0E48 */ 0x6C71, 0x6C73, 0x6C75, 0x6C77, 0x6C78, 0x6C7A, 0x6C7B, 0x6C7C, -/* 0E50 */ 0x6C7F, 0x6C80, 0x6C84, 0x6C87, 0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E, -/* 0E58 */ 0x6C91, 0x6C92, 0x6C95, 0x6C96, 0x6C97, 0x6C98, 0x6C9A, 0x6C9C, -/* 0E60 */ 0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2, 0x6CA8, 0x6CAC, 0x6CAF, 0x6CB0, -/* 0E68 */ 0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7, 0x6CBA, 0x6CC0, 0x6CC1, 0x6CC2, -/* 0E70 */ 0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8, 0x6CCB, 0x6CCD, 0x6CCE, 0x6CCF, -/* 0E78 */ 0x6CD1, 0x6CD2, 0x6CD8, 0xFFFD, 0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, -/* 0E80 */ 0x6CDF, 0x6CE4, 0x6CE6, 0x6CE7, 0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, -/* 0E88 */ 0x6CF4, 0x6CF9, 0x6CFF, 0x6D00, 0x6D02, 0x6D03, 0x6D05, 0x6D06, -/* 0E90 */ 0x6D08, 0x6D09, 0x6D0A, 0x6D0D, 0x6D0F, 0x6D10, 0x6D11, 0x6D13, -/* 0E98 */ 0x6D14, 0x6D15, 0x6D16, 0x6D18, 0x6D1C, 0x6D1D, 0xFFFD, 0xFFFD, -/* 0EA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6D26, 0x6D28, 0x6D29, 0x6D2C, -/* 0EA8 */ 0x6D2D, 0x6D2F, 0x6D30, 0x6D34, 0x6D36, 0x6D37, 0x6D38, 0x6D3A, -/* 0EB0 */ 0x6D3F, 0x6D40, 0x6D42, 0x6D44, 0x6D49, 0x6D4C, 0x6D50, 0x6D55, -/* 0EB8 */ 0x6D56, 0x6D57, 0x6D58, 0x6D5B, 0x6D5D, 0x6D5F, 0x6D61, 0x6D62, -/* 0EC0 */ 0x6D64, 0x6D65, 0x6D67, 0x6D68, 0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, -/* 0EC8 */ 0x6D71, 0x6D72, 0x6D73, 0x6D75, 0x6D76, 0x6D79, 0x6D7A, 0x6D7B, -/* 0ED0 */ 0x6D7D, 0x6D7E, 0x6D7F, 0x6D80, 0x6D81, 0x6D83, 0x6D84, 0x6D86, -/* 0ED8 */ 0x6D87, 0x6D8A, 0x6D8B, 0x6D8D, 0x6D8F, 0x6D90, 0x6D92, 0x6D96, -/* 0EE0 */ 0x6D97, 0x6D98, 0x6D99, 0x6D9A, 0x6D9C, 0x6DA2, 0x6DA5, 0x6DAC, -/* 0EE8 */ 0x6DAD, 0x6DB0, 0x6DB1, 0x6DB3, 0x6DB4, 0x6DB6, 0x6DB7, 0xFFFD, -/* 0EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6DC1, 0x6DC2, 0x6DC3, -/* 0EF8 */ 0x6DC8, 0x6DC9, 0x6DCA, 0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, -/* 0F00 */ 0x6DD3, 0x6DD4, 0x6DD5, 0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, -/* 0F08 */ 0x6DE2, 0x6DE3, 0x6DE5, 0x6DE7, 0x6DE8, 0x6DE9, 0x6DEA, 0x6DED, -/* 0F10 */ 0x6DEF, 0x6DF0, 0x6DF2, 0x6DF4, 0x6DF5, 0x6DF6, 0x6DF8, 0x6DFA, -/* 0F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F20 */ 0x6E06, 0x6E07, 0x6E08, 0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, -/* 0F28 */ 0x6E15, 0x6E18, 0x6E19, 0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, -/* 0F30 */ 0x6E26, 0x6E27, 0x6E28, 0x6E2A, 0x6E2C, 0x6E2E, 0x6E30, 0x6E31, -/* 0F38 */ 0x6E33, 0x6E35, 0xFFFD, 0x6E36, 0x6E37, 0x6E39, 0x6E4F, 0x6E50, -/* 0F40 */ 0x6E51, 0x6E52, 0x6E55, 0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, -/* 0F48 */ 0x6E5E, 0x6E6C, 0x6E6D, 0x6E80, 0x6E81, 0x6E82, 0x6E84, 0x6E87, -/* 0F50 */ 0x6E88, 0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E, 0xFFFD, 0xFFFD, -/* 0F58 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6E99, 0x6E9A, 0x6E9B, -/* 0F60 */ 0x6E9D, 0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8, -/* 0F68 */ 0x6EA9, 0x6EAB, 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5, -/* 0F70 */ 0x6EB8, 0x6EB9, 0x6EBC, 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC4, -/* 0F78 */ 0x6EC5, 0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECC, 0x6ECD, 0x6ECE, -/* 0F80 */ 0x6ED0, 0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD, -/* 0F88 */ 0x6EE3, 0x6EE7, 0x6EF0, 0x6EF1, 0x6EF2, 0x6EF3, 0x6EF5, 0x6EF6, -/* 0F90 */ 0x6EF7, 0x6EF8, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0F98 */ 0xFFFD, 0xFFFD, 0x6F03, 0x6F04, 0x6F05, 0x6F07, 0x6F08, 0x6F0A, -/* 0FA0 */ 0x6F0B, 0x6F0C, 0x6F0D, 0x6F0E, 0x6F10, 0x6F11, 0x6F12, 0xFFFD, -/* 0FA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FB0 */ 0xFFFD, 0x6F21, 0x6F22, 0x6F23, 0x6F25, 0x6F26, 0x6F27, 0x6F28, -/* 0FB8 */ 0x6F2C, 0x6F2E, 0x6F30, 0x6F32, 0x6F34, 0x6F35, 0xFFFD, 0xFFFD, -/* 0FC0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6F3F, 0x6F40, 0x6F41, -/* 0FC8 */ 0x6F42, 0xFFFD, 0x6F43, 0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, -/* 0FD0 */ 0x6F4C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FD8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F59, 0x6F5A, 0x6F5B, 0x6F5D, 0x6F5F, -/* 0FE0 */ 0x6F60, 0x6F61, 0x6F63, 0x6F64, 0x6F65, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F6F, 0x6F70, 0x6F71, 0x6F73, 0x6F75, -/* 0FF0 */ 0x6F76, 0x6F77, 0x6F79, 0x6F7B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0FF8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6F85, 0x6F86, 0x6F87, 0x6F8A, 0x6F8B, -/* 1000 */ 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA0, 0x6FA2, 0x6FA3, 0x6FA4, 0x6FA5, -/* 1008 */ 0x6FA6, 0x6FB4, 0x6FB5, 0x6FB7, 0x6FB8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x6FC1, 0x6FDF, 0x6FE2, 0x6FE3, 0x6FE4, -/* 1018 */ 0x6FE5, 0x7036, 0x7037, 0x7038, 0x704D, 0x704E, 0x706E, 0x7071, -/* 1020 */ 0x7072, 0x7073, 0x7074, 0x7077, 0x7079, 0x707A, 0x707B, 0x707D, -/* 1028 */ 0x7081, 0x7082, 0x7083, 0x7084, 0x7086, 0x7087, 0x7088, 0x708B, -/* 1030 */ 0x708C, 0x708D, 0x708F, 0x7090, 0x7091, 0x7093, 0x7097, 0x7098, -/* 1038 */ 0x709A, 0x709B, 0x70B0, 0x70B2, 0x70B4, 0x70B5, 0x70B6, 0x70BA, -/* 1040 */ 0x70BE, 0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7, 0x70C9, 0x70DC, -/* 1048 */ 0x70DD, 0x70DE, 0x70E0, 0x70E1, 0x70E2, 0x70E3, 0x70E5, 0x70EA, -/* 1050 */ 0x70EE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1058 */ 0x70F8, 0x70FA, 0x70FB, 0x70FC, 0x710B, 0x710C, 0x710D, 0x710E, -/* 1060 */ 0x710F, 0x7111, 0x7112, 0x7114, 0x7117, 0x7132, 0x7133, 0x7134, -/* 1068 */ 0xFFFD, 0x7135, 0x7146, 0x7147, 0x7148, 0x7149, 0x714B, 0x714D, -/* 1070 */ 0x715D, 0x715F, 0x7160, 0x7161, 0x7162, 0x7163, 0x7165, 0x7169, -/* 1078 */ 0x716A, 0x716B, 0x716C, 0x716D, 0x716F, 0x7170, 0x7171, 0x7174, -/* 1080 */ 0x7175, 0x7176, 0x7177, 0x7179, 0x717B, 0x717C, 0xFFFD, 0xFFFD, -/* 1088 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7185, 0x7186, 0x7187, 0x7188, -/* 1090 */ 0x7189, 0x718B, 0x718C, 0x718D, 0x718E, 0x7190, 0x7191, 0x7192, -/* 1098 */ 0x7193, 0x7195, 0x7196, 0x7197, 0x719A, 0x719B, 0x719C, 0x719D, -/* 10A0 */ 0x719E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10A8 */ 0x71A9, 0x71AA, 0x71AB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10B0 */ 0xFFFD, 0x71B4, 0x71B6, 0x71B7, 0x71B8, 0x71CF, 0x71D0, 0x71D1, -/* 10B8 */ 0x71D2, 0x71D3, 0x71E1, 0x71E2, 0x71E3, 0x71E4, 0x71E6, 0x721B, -/* 10C0 */ 0x721C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 10C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7229, 0x722B, 0x722D, 0x722E, 0x722F, -/* 10D0 */ 0x7232, 0x7233, 0x7234, 0x723A, 0x723C, 0x723E, 0xFFFD, 0xFFFD, -/* 10D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7249, 0x724A, 0x724B, -/* 10E0 */ 0x724E, 0x724F, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257, -/* 10E8 */ 0x7258, 0x725A, 0x725C, 0x725E, 0x7260, 0x7263, 0x7264, 0x7265, -/* 10F0 */ 0x7268, 0x726A, 0x726B, 0x726C, 0x726D, 0x7270, 0x7271, 0x7273, -/* 10F8 */ 0x7274, 0x7276, 0x7277, 0x7278, 0x727B, 0x727C, 0x727D, 0x7282, -/* 1100 */ 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728C, 0x728E, -/* 1108 */ 0x7290, 0x7291, 0x72AE, 0x72B1, 0x72B2, 0x72B3, 0x72B5, 0xFFFD, -/* 1110 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x72C5, 0x72C6, -/* 1118 */ 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF, 0x72D1, 0x72D3, -/* 1120 */ 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB, 0x3000, 0x3001, -/* 1128 */ 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003, 0x3005, 0x2015, -/* 1130 */ 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, 0x201C, 0x201D, 0x3014, -/* 1138 */ 0x3015, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1140 */ 0xFFFD, 0x3016, 0x3017, 0x3010, 0x3011, 0x00B1, 0x00D7, 0x00F7, -/* 1148 */ 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, 0x222A, 0x2229, 0x2208, -/* 1150 */ 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312, 0x2299, 0x222B, -/* 1158 */ 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D, 0x2260, 0x226E, -/* 1160 */ 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234, 0x2642, 0x2640, -/* 1168 */ 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4, 0xFFE0, 0xFFE1, -/* 1170 */ 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, -/* 1178 */ 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x203B, 0x2192, -/* 1180 */ 0x2190, 0x2191, 0x2193, 0x3013, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, -/* 1188 */ 0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E, -/* 1190 */ 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0xFFFD, 0xFFFD, 0xFE3B, 0xFE3C, -/* 1198 */ 0xFE37, 0xFE38, 0xFE31, 0xFFFD, 0xFE33, 0xFE34, 0x02CA, 0x02CB, -/* 11A0 */ 0x02D9, 0x2013, 0x2014, 0x2025, 0x2035, 0x2105, 0x2109, 0x2196, -/* 11A8 */ 0x2197, 0x2198, 0x2199, 0x2215, 0x221F, 0x2223, 0x2252, 0x2266, -/* 11B0 */ 0x2267, 0x22BF, 0x2593, 0x2594, 0x2595, 0x25BC, 0x25BD, 0x25E2, -/* 11B8 */ 0x25E3, 0x25E4, 0x25E5, 0x2609, 0x2295, 0x3012, 0x301D, 0x301E, -/* 11C0 */ 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 0x00E8, -/* 11C8 */ 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, -/* 11D0 */ 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, -/* 11D8 */ 0x00FC, 0x00EA, 0x0251, 0xE7C7, 0x0144, 0x0148, 0xE7C8, 0x0261, -/* 11E0 */ 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1, 0x33C4, -/* 11E8 */ 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4, 0xFFFD, -/* 11F0 */ 0x2121, 0x3231, 0xFFFD, 0x2010, 0xFFFD, 0xFFFD, 0xFFFD, 0x30FC, -/* 11F8 */ 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D, 0x309E, 0xFFFD, -/* 1200 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1208 */ 0xFFFD, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1210 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFE62, -/* 1218 */ 0xFE63, 0xFE64, 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A, 0xFE6B, -/* 1220 */ 0x72DC, 0x72DD, 0x72DF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1228 */ 0xFFFD, 0x72EA, 0x72EB, 0x72F5, 0x72F6, 0x72F9, 0x72FD, 0x72FE, -/* 1230 */ 0x72FF, 0x7300, 0x7302, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1238 */ 0xFFFD, 0x730B, 0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312, -/* 1240 */ 0x7314, 0x7318, 0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324, -/* 1248 */ 0x7326, 0x7327, 0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333, -/* 1250 */ 0x7335, 0x7336, 0x733A, 0x733B, 0x733C, 0x733D, 0xFFFD, 0xFFFD, -/* 1258 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1260 */ 0x7349, 0x734A, 0x734B, 0x734C, 0x734E, 0x734F, 0x7351, 0x7353, -/* 1268 */ 0x7354, 0x7355, 0x7356, 0x736E, 0x7370, 0x7371, 0x737F, 0x7380, -/* 1270 */ 0x7381, 0x7382, 0x7383, 0x7385, 0x7386, 0x7388, 0x738A, 0x738C, -/* 1278 */ 0x738D, 0x738F, 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, -/* 1280 */ 0x7398, 0x7399, 0x739A, 0x739C, 0x739D, 0x739E, 0x73A0, 0x73A1, -/* 1288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x73AA, 0x73AC, -/* 1290 */ 0x73AD, 0x73B1, 0x73B4, 0x73B5, 0x73B6, 0x73B8, 0x73B9, 0x73BC, -/* 1298 */ 0x73BD, 0x73BE, 0x73BF, 0x73C1, 0x73C3, 0x73C4, 0x73C5, 0x73C6, -/* 12A0 */ 0x73C7, 0xFFFD, 0x73CB, 0x73CC, 0x73CE, 0xFFFD, 0xFFFD, 0xFFFD, -/* 12A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x73DA, 0x73DB, 0x73DC, 0x73DD, -/* 12B0 */ 0x73DF, 0x73E1, 0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8, 0x73EA, -/* 12B8 */ 0x73EB, 0x73EC, 0x73EE, 0x73EF, 0x73F0, 0x73F1, 0x73F3, 0x73F4, -/* 12C0 */ 0x73F5, 0x73F6, 0x73F7, 0x7404, 0x7407, 0x7408, 0x740B, 0x740C, -/* 12C8 */ 0x740D, 0x740E, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B, 0x742D, -/* 12D0 */ 0x742F, 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A, 0x743B, -/* 12D8 */ 0x743D, 0x743E, 0x743F, 0x7440, 0x7456, 0x7458, 0x745D, 0x746E, -/* 12E0 */ 0x746F, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, -/* 12E8 */ 0x747A, 0x747B, 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, -/* 12F0 */ 0x7486, 0x7488, 0x7489, 0x748A, 0x748C, 0x748D, 0x748F, 0x74DD, -/* 12F8 */ 0x74DF, 0x74E1, 0x74E5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1300 */ 0xFFFD, 0xFFFD, 0x74F0, 0x74F1, 0x74F2, 0x74F3, 0x74F5, 0xFFFD, -/* 1308 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7500, 0x7501, -/* 1310 */ 0x7502, 0x7503, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1318 */ 0xFFFD, 0xFFFD, 0x750E, 0x7510, 0x7512, 0x7514, 0x7515, 0x7516, -/* 1320 */ 0x7517, 0x751B, 0x751D, 0x751E, 0x7520, 0x7521, 0x7522, 0x7523, -/* 1328 */ 0x7524, 0x7526, 0x7527, 0x752A, 0x752E, 0x7534, 0x7536, 0x7539, -/* 1330 */ 0x753C, 0x753D, 0x753F, 0x7541, 0x7542, 0x7543, 0x7544, 0x7546, -/* 1338 */ 0x7547, 0x7549, 0x754A, 0x754D, 0x7550, 0x7551, 0x7552, 0x7553, -/* 1340 */ 0x7555, 0x7556, 0x7557, 0x7558, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1348 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7567, 0x7568, 0x7569, -/* 1350 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7573, -/* 1358 */ 0x7575, 0x7576, 0x7577, 0x757A, 0x757B, 0x757C, 0x757D, 0x757E, -/* 1360 */ 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 0x7587, 0x7588, 0x7589, -/* 1368 */ 0x758A, 0x758C, 0x758D, 0x758E, 0x7590, 0x7593, 0x7595, 0x7598, -/* 1370 */ 0x759B, 0x759C, 0x759E, 0x75A2, 0x75A6, 0x75A7, 0x75A8, 0x75A9, -/* 1378 */ 0x75AA, 0x75AD, 0x75B6, 0x75B7, 0x75BA, 0x75BB, 0x75BF, 0x75C0, -/* 1380 */ 0x75C1, 0x75C6, 0x75CB, 0x75CC, 0x75CE, 0x75CF, 0x75D0, 0x75D1, -/* 1388 */ 0x75D3, 0x75D7, 0x75D9, 0x75DA, 0x75DC, 0x75DD, 0x75DF, 0x75E0, -/* 1390 */ 0x75E1, 0x75E5, 0x75E9, 0x75EC, 0x75ED, 0x75EE, 0x75EF, 0x75F2, -/* 1398 */ 0x75F3, 0x75F5, 0x75F6, 0x75F7, 0x75F8, 0x75FA, 0x75FB, 0x75FD, -/* 13A0 */ 0x75FE, 0x7602, 0x7604, 0x7606, 0x7607, 0xFFFD, 0x7608, 0x7609, -/* 13A8 */ 0x760B, 0x760D, 0x760E, 0x760F, 0x7611, 0x7612, 0x7613, 0x7614, -/* 13B0 */ 0x7616, 0x761A, 0x761C, 0x761D, 0x761E, 0x7621, 0x7623, 0x7627, -/* 13B8 */ 0x7628, 0x762C, 0x762E, 0x762F, 0x7631, 0x7632, 0x7636, 0x7637, -/* 13C0 */ 0x7639, 0x763A, 0x763B, 0x763D, 0x7641, 0x7642, 0x7644, 0x7655, -/* 13C8 */ 0x7657, 0x7658, 0x7659, 0x765A, 0x765B, 0x765D, 0x765F, 0x7660, -/* 13D0 */ 0x7661, 0x7662, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13D8 */ 0xFFFD, 0x766C, 0x766D, 0x766E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7679, 0x767A, 0x767C, 0x767F, -/* 13E8 */ 0x7680, 0x7681, 0x7683, 0x7685, 0x7689, 0x768A, 0x768C, 0x768D, -/* 13F0 */ 0x768F, 0x7690, 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769A, -/* 13F8 */ 0x769B, 0x76AF, 0x76B0, 0x76B3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1400 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x76C0, 0x76C1, -/* 1408 */ 0x76C3, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, 0x54C0, -/* 1410 */ 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, 0x9698, -/* 1418 */ 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA, -/* 1420 */ 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1, -/* 1428 */ 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252, -/* 1430 */ 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB, -/* 1438 */ 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D, -/* 1440 */ 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, 0x6591, -/* 1448 */ 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, 0x626E, -/* 1450 */ 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, 0x5E2E, -/* 1458 */ 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, 0x9551, -/* 1460 */ 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265, 0x76C4, -/* 1468 */ 0x76C7, 0x76C9, 0x76CB, 0x76CC, 0x76D3, 0x76D5, 0x76D9, 0x76DA, -/* 1470 */ 0x76DC, 0x76DD, 0x76DE, 0x76E0, 0x76E1, 0x76E2, 0x76E3, 0x76E4, -/* 1478 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1480 */ 0x76F0, 0x76F3, 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB, 0x76FD, -/* 1488 */ 0x76FF, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770A, 0x770C, -/* 1490 */ 0x771B, 0x771C, 0x771D, 0x771E, 0x7721, 0x7723, 0x7724, 0x7725, -/* 1498 */ 0x7727, 0x772A, 0x772B, 0xFFFD, 0x772C, 0x772E, 0x7730, 0x7731, -/* 14A0 */ 0x7732, 0x7733, 0x7734, 0x7739, 0x773B, 0x773D, 0x773E, 0x773F, -/* 14A8 */ 0x7742, 0x7744, 0x7745, 0x7746, 0x775C, 0x8584, 0x96F9, 0x4FDD, -/* 14B0 */ 0x5821, 0x9971, 0x5B9D, 0x62B1, 0x62A5, 0x66B4, 0x8C79, 0x9C8D, -/* 14B8 */ 0x7206, 0x676F, 0x7891, 0x60B2, 0x5351, 0x5317, 0x8F88, 0x80CC, -/* 14C0 */ 0x8D1D, 0x94A1, 0x500D, 0x72C8, 0x5907, 0x60EB, 0x7119, 0x88AB, -/* 14C8 */ 0x5954, 0x82EF, 0x672C, 0x7B28, 0x5D29, 0x7EF7, 0x752D, 0x6CF5, -/* 14D0 */ 0x8E66, 0x8FF8, 0x903C, 0x9F3B, 0x6BD4, 0x9119, 0x7B14, 0x5F7C, -/* 14D8 */ 0x78A7, 0x84D6, 0x853D, 0x6BD5, 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, -/* 14E0 */ 0x75F9, 0x95ED, 0x655D, 0x5F0A, 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, -/* 14E8 */ 0x907F, 0x965B, 0x97AD, 0x8FB9, 0x7F16, 0x8D2C, 0x6241, 0x4FBF, -/* 14F0 */ 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 0x8FAB, 0x904D, 0x6807, 0x5F6A, -/* 14F8 */ 0x8198, 0x8868, 0x9CD6, 0x618B, 0x522B, 0x762A, 0x5F6C, 0x658C, -/* 1500 */ 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 0x5175, 0x51B0, 0x67C4, 0x4E19, -/* 1508 */ 0x79C9, 0x997C, 0x70B3, 0x775D, 0x775E, 0x775F, 0x7760, 0x7764, -/* 1510 */ 0x7767, 0x7769, 0x776A, 0x777A, 0x777B, 0x777C, 0x7781, 0x7782, -/* 1518 */ 0x7783, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x778F, -/* 1520 */ 0x7790, 0x77A1, 0x77A3, 0x77A4, 0x77A6, 0x77A8, 0x77AB, 0x77AD, -/* 1528 */ 0x77AE, 0x77AF, 0x77B1, 0x77B2, 0x77B4, 0x77B6, 0x77B7, 0x77B8, -/* 1530 */ 0x77B9, 0x77BA, 0xFFFD, 0x77BC, 0x77BE, 0x77D8, 0x77D9, 0x77DA, -/* 1538 */ 0x77DD, 0x77DE, 0x77DF, 0x77E0, 0x77E1, 0x77E4, 0x75C5, 0x5E76, -/* 1540 */ 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, 0x6CE2, 0x535A, 0x52C3, -/* 1548 */ 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, 0x8236, 0x8116, 0x818A, -/* 1550 */ 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA, 0x8865, 0x57E0, -/* 1558 */ 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, 0x64E6, 0x731C, -/* 1560 */ 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 0x8E29, 0x91C7, 0x5F69, -/* 1568 */ 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 0x6B8B, 0x60ED, 0x60E8, -/* 1570 */ 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 0x85CF, 0x64CD, 0x7CD9, -/* 1578 */ 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, 0x4FA7, 0x518C, 0x6D4B, -/* 1580 */ 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 0x8336, 0x67E5, 0x78B4, -/* 1588 */ 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, 0x62C6, 0x67F4, 0x8C7A, -/* 1590 */ 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, 0x7F20, 0x94F2, 0x4EA7, -/* 1598 */ 0x9610, 0x98A4, 0x660C, 0x7316, 0x77E6, 0x77E8, 0x77EA, 0x77EF, -/* 15A0 */ 0x77F0, 0x77F1, 0x77F2, 0x77F4, 0x77F5, 0x77F7, 0x77F9, 0x77FA, -/* 15A8 */ 0x77FB, 0x77FC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15B0 */ 0x780A, 0x780B, 0x780E, 0x780F, 0x7810, 0x7813, 0x7815, 0x7819, -/* 15B8 */ 0x781B, 0x781E, 0x7820, 0x7821, 0x7822, 0x7824, 0x7828, 0x782A, -/* 15C0 */ 0x782B, 0x782E, 0x782F, 0x7831, 0x7832, 0x7833, 0x7835, 0x7836, -/* 15C8 */ 0x783D, 0x783F, 0x7841, 0x7842, 0x7843, 0x7844, 0x7846, 0x7848, -/* 15D0 */ 0x7849, 0x784A, 0x784B, 0x784D, 0x784F, 0x7851, 0x7853, 0x7854, -/* 15D8 */ 0x7858, 0x7859, 0x785A, 0xFFFD, 0x785B, 0x785C, 0x7878, 0x7879, -/* 15E0 */ 0x787A, 0x787B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 15E8 */ 0xFFFD, 0x573A, 0x5C1D, 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, -/* 15F0 */ 0x655E, 0x7545, 0x5531, 0x5021, 0x8D85, 0x6284, 0x949E, 0x671D, -/* 15F8 */ 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, 0x8F66, 0x626F, 0x64A4, -/* 1600 */ 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0, 0x5C18, 0x6668, -/* 1608 */ 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0, 0x57CE, -/* 1610 */ 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA, -/* 1618 */ 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, -/* 1620 */ 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A, -/* 1628 */ 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, -/* 1630 */ 0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, -/* 1638 */ 0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED, 0x521D, 0x51FA, 0x6A71, -/* 1640 */ 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, 0x9664, 0x695A, 0x7884, -/* 1648 */ 0x7885, 0x7886, 0x7888, 0x788A, 0x788B, 0x788F, 0x7890, 0x7892, -/* 1650 */ 0x7894, 0x7895, 0x7896, 0x7899, 0x789D, 0x789E, 0x78A0, 0x78A2, -/* 1658 */ 0x78A4, 0x78A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1660 */ 0xFFFD, 0xFFFD, 0x78B5, 0x78B6, 0x78B7, 0x78B8, 0x78BA, 0x78BB, -/* 1668 */ 0x78BC, 0x78BD, 0x78BF, 0x78C0, 0x78C2, 0x78C3, 0x78C4, 0x78C6, -/* 1670 */ 0x78C7, 0x78C8, 0x78CC, 0x78CD, 0x78CE, 0x78CF, 0x78D1, 0x78D2, -/* 1678 */ 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78E4, 0x78E5, 0x78E6, 0x78E7, -/* 1680 */ 0x78E9, 0x78EA, 0x78EB, 0x78ED, 0x78EE, 0x78EF, 0x78F0, 0x78F1, -/* 1688 */ 0x78F3, 0x78F5, 0x78F6, 0x78F8, 0x78F9, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1690 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7902, 0x7903, 0x7904, 0xFFFD, 0xFFFD, -/* 1698 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7840, 0x50A8, 0x77D7, -/* 16A0 */ 0x6410, 0x89E6, 0x5904, 0x63E3, 0x5DDD, 0x7A7F, 0x693D, 0x4F20, -/* 16A8 */ 0x8239, 0x5598, 0x4E32, 0x75AE, 0x7A97, 0x5E62, 0x5E8A, 0x95EF, -/* 16B0 */ 0x521B, 0x5439, 0x708A, 0x6376, 0x9524, 0x5782, 0x6625, 0x693F, -/* 16B8 */ 0x9187, 0x5507, 0x6DF3, 0x7EAF, 0x8822, 0x6233, 0x7EF0, 0x75B5, -/* 16C0 */ 0x8328, 0x78C1, 0x96CC, 0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64, -/* 16C8 */ 0x523A, 0x8D50, 0x6B21, 0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, -/* 16D0 */ 0x4E1B, 0x51D1, 0x7C97, 0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, -/* 16D8 */ 0x7A9C, 0x6467, 0x5D14, 0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, -/* 16E0 */ 0x7FE0, 0x6751, 0x5B58, 0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, -/* 16E8 */ 0x632B, 0x9519, 0x642D, 0x8FBE, 0x7B54, 0x7629, 0x6253, 0x5927, -/* 16F0 */ 0x5446, 0x6B79, 0x50A3, 0x6234, 0x5E26, 0x6B86, 0x4EE3, 0x8D37, -/* 16F8 */ 0x888B, 0x5F85, 0x902E, 0x791F, 0x7920, 0x7921, 0x7922, 0x7923, -/* 1700 */ 0x7935, 0x7936, 0x7937, 0x7938, 0x7939, 0x793D, 0x793F, 0x7942, -/* 1708 */ 0x7943, 0x7944, 0x7945, 0x7947, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1710 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7954, 0x7955, 0x7958, -/* 1718 */ 0x7959, 0x7961, 0x7963, 0xFFFD, 0x7964, 0x7966, 0x7969, 0x796A, -/* 1720 */ 0x796B, 0x796C, 0x796E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1728 */ 0xFFFD, 0xFFFD, 0x7979, 0x797B, 0x797C, 0x797D, 0x797E, 0x797F, -/* 1730 */ 0x7982, 0x7983, 0x7986, 0x7987, 0x7988, 0x7989, 0x798B, 0x798C, -/* 1738 */ 0x798D, 0x798E, 0x7990, 0x7991, 0x7992, 0x6020, 0x803D, 0x62C5, -/* 1740 */ 0x4E39, 0x5355, 0x90F8, 0x63B8, 0x80C6, 0x65E6, 0x6C2E, 0x4F46, -/* 1748 */ 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, 0x86CB, 0x5F53, 0x6321, 0x515A, -/* 1750 */ 0x8361, 0x6863, 0x5200, 0x6363, 0x8E48, 0x5012, 0x5C9B, 0x7977, -/* 1758 */ 0x5BFC, 0x5230, 0x7A3B, 0x60BC, 0x9053, 0x76D7, 0x5FB7, 0x5F97, -/* 1760 */ 0x7684, 0x8E6C, 0x706F, 0x767B, 0x7B49, 0x77AA, 0x51F3, 0x9093, -/* 1768 */ 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 0x654C, 0x7B1B, 0x72C4, 0x6DA4, -/* 1770 */ 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 0x5730, 0x8482, 0x7B2C, 0x5E1D, -/* 1778 */ 0x5F1F, 0x9012, 0x7F14, 0x98A0, 0x6382, 0x6EC7, 0x7898, 0x70B9, -/* 1780 */ 0x5178, 0x975B, 0x57AB, 0x7535, 0x4F43, 0x7538, 0x5E97, 0x60E6, -/* 1788 */ 0x5960, 0x6DC0, 0x6BBF, 0x7889, 0x53FC, 0x96D5, 0x51CB, 0x5201, -/* 1790 */ 0x6389, 0x540A, 0x9493, 0x8C03, 0x8DCC, 0x7239, 0x789F, 0x8776, -/* 1798 */ 0x8FED, 0x8C0D, 0x53E0, 0x79B4, 0x79B5, 0x79B6, 0x79B7, 0x79B8, -/* 17A0 */ 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5, 0x79C7, 0x79C8, 0x79CA, -/* 17A8 */ 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3, 0x79D4, 0x79D6, 0x79D7, -/* 17B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x79E0, 0x79E1, -/* 17B8 */ 0x79E2, 0x79E5, 0x79E8, 0x79EA, 0xFFFD, 0x79EC, 0x79EE, 0xFFFD, -/* 17C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x79F9, 0x79FA, -/* 17C8 */ 0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04, 0x7A05, 0x7A07, 0x7A08, -/* 17D0 */ 0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10, 0x7A11, 0x7A12, 0x7A13, -/* 17D8 */ 0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B, 0x7A1C, 0x4E01, 0x76EF, -/* 17E0 */ 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A, 0x8BA2, 0x4E22, -/* 17E8 */ 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, 0x4F97, 0x606B, -/* 17F0 */ 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, 0x8C46, 0x9017, -/* 17F8 */ 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, 0x8BFB, 0x5835, -/* 1800 */ 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, 0x5EA6, 0x6E21, 0x5992, -/* 1808 */ 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, 0x7F0E, 0x5806, 0x5151, -/* 1810 */ 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, 0x6566, 0x987F, 0x56E4, -/* 1818 */ 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, 0x591A, 0x593A, 0x579B, -/* 1820 */ 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 0x60F0, 0x5815, 0x86FE, -/* 1828 */ 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25, 0x6076, 0x5384, -/* 1830 */ 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, 0x513F, 0x8033, -/* 1838 */ 0x5C14, 0x9975, 0x6D31, 0x4E8C, 0x7A1D, 0x7A1F, 0x7A21, 0x7A22, -/* 1840 */ 0x7A34, 0x7A35, 0x7A36, 0x7A38, 0x7A3A, 0x7A3E, 0x7A52, 0x7A53, -/* 1848 */ 0x7A54, 0x7A55, 0x7A56, 0x7A71, 0x7A72, 0x7A73, 0x7A75, 0x7A7B, -/* 1850 */ 0x7A7C, 0x7A7D, 0x7A7E, 0x7A82, 0x7A85, 0x7A87, 0x7A89, 0x7A8A, -/* 1858 */ 0x7A8B, 0x7A8C, 0x7A8E, 0x7A8F, 0x7A90, 0x7A93, 0x7A94, 0x7A99, -/* 1860 */ 0x7A9A, 0x7A9B, 0x7A9E, 0x7AA1, 0x7AA2, 0x8D30, 0x53D1, 0x7F5A, -/* 1868 */ 0x7B4F, 0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0, 0x85E9, 0x5E06, -/* 1870 */ 0x756A, 0x7FFB, 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1, 0x70E6, -/* 1878 */ 0x53CD, 0x8FD4, 0x8303, 0x8D29, 0x72AF, 0x996D, 0x6CDB, 0x574A, -/* 1880 */ 0x82B3, 0x65B9, 0x80AA, 0x623F, 0x9632, 0x59A8, 0x4EFF, 0x8BBF, -/* 1888 */ 0x7EBA, 0x653E, 0x83F2, 0x975E, 0x5561, 0x98DE, 0x80A5, 0x532A, -/* 1890 */ 0x8BFD, 0x5420, 0x80BA, 0x5E9F, 0x6CB8, 0x8D39, 0x82AC, 0x915A, -/* 1898 */ 0x5429, 0x6C1B, 0x5206, 0x7EB7, 0x575F, 0x711A, 0x6C7E, 0x7C89, -/* 18A0 */ 0x594B, 0x4EFD, 0x5FFF, 0x6124, 0x7CAA, 0x4E30, 0x5C01, 0x67AB, -/* 18A8 */ 0x8702, 0x5CF0, 0x950B, 0x98CE, 0x75AF, 0x70FD, 0x9022, 0x51AF, -/* 18B0 */ 0x7F1D, 0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426, 0x592B, 0x6577, -/* 18B8 */ 0x80A4, 0x5B75, 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F, 0x7B26, -/* 18C0 */ 0x4F0F, 0x4FD8, 0x670D, 0x7AA3, 0x7AA4, 0x7AA7, 0x7AA9, 0x7AAA, -/* 18C8 */ 0x7AAB, 0x7AAE, 0x7AAF, 0x7AB0, 0x7AB1, 0x7AB2, 0x7AD7, 0x7AD8, -/* 18D0 */ 0x7ADA, 0x7ADB, 0x7ADC, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE4, 0xFFFD, -/* 18D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7AEE, 0x7AF0, 0x7AF1, -/* 18E0 */ 0x7AF2, 0x7AF3, 0xFFFD, 0x7AF4, 0x7AF5, 0x7AF6, 0x7AF7, 0x7AF8, -/* 18E8 */ 0x7AFB, 0x7AFC, 0x7AFE, 0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, -/* 18F0 */ 0x7B09, 0x7B0C, 0x7B0D, 0x7B0E, 0x7B10, 0x7B12, 0x7B13, 0x7B16, -/* 18F8 */ 0x7B17, 0x7B18, 0x7B1A, 0x7B1C, 0x7B1D, 0x7B1F, 0x7B21, 0x7B22, -/* 1900 */ 0x7B23, 0x7B27, 0x7B29, 0x7B2D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, -/* 1908 */ 0x5F17, 0x752B, 0x629A, 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, -/* 1910 */ 0x8151, 0x5E9C, 0x8150, 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, -/* 1918 */ 0x5085, 0x4ED8, 0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, -/* 1920 */ 0x9644, 0x5987, 0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, -/* 1928 */ 0x6982, 0x9499, 0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, -/* 1930 */ 0x7AFF, 0x809D, 0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, -/* 1938 */ 0x521A, 0x94A2, 0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, -/* 1940 */ 0x7BD9, 0x768B, 0x9AD8, 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, -/* 1948 */ 0x7A3F, 0x544A, 0x54E5, 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, -/* 1950 */ 0x7599, 0x5272, 0x9769, 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, -/* 1958 */ 0x94EC, 0x4E2A, 0x5404, 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, -/* 1960 */ 0x5E9A, 0x7FB9, 0x7B2F, 0x7B30, 0x7B32, 0x7B34, 0x7B35, 0x7B36, -/* 1968 */ 0x7B37, 0x7B39, 0x7B3B, 0x7B3D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1970 */ 0xFFFD, 0xFFFD, 0x7B46, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E, 0x7B53, -/* 1978 */ 0x7B55, 0x7B57, 0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B6F, -/* 1980 */ 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C, 0x7B7D, -/* 1988 */ 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1990 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7B8E, 0x7B8F, 0xFFFD, 0x7B91, -/* 1998 */ 0x7B92, 0x7B93, 0x7B96, 0x7B98, 0x7B99, 0x7B9A, 0x7B9B, 0x7B9E, -/* 19A0 */ 0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5, 0x7BAE, 0x7BAF, 0x7BB0, -/* 19A8 */ 0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0xFFFD, 0xFFFD, 0xFFFD, -/* 19B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7BC2, 0x7BC3, 0x7BC4, -/* 19B8 */ 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, 0x9F9A, -/* 19C0 */ 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, 0x62F1, -/* 19C8 */ 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, 0x57A2, -/* 19D0 */ 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 0x4F30, -/* 19D8 */ 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 0x8C37, -/* 19E0 */ 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 0x5250, -/* 19E8 */ 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 0x5173, -/* 19F0 */ 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF, 0x704C, -/* 19F8 */ 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, 0x7845, -/* 1A00 */ 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, 0x6842, -/* 1A08 */ 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, 0x9505, -/* 1A10 */ 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, 0x7BC5, 0x7BC8, -/* 1A18 */ 0x7BC9, 0x7BCA, 0x7BCB, 0x7BCD, 0x7BCE, 0x7BCF, 0x7BD0, 0x7BD2, -/* 1A20 */ 0x7BD4, 0x7BD5, 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB, 0x7BDC, 0x7BDE, -/* 1A28 */ 0x7BDF, 0x7BE0, 0x7BE2, 0x7BE3, 0x7BE4, 0x7BE7, 0x7BE8, 0x7BE9, -/* 1A30 */ 0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2, 0x7BF3, 0x7BF4, -/* 1A38 */ 0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB, 0x7BFD, 0xFFFD, -/* 1A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7C08, -/* 1A48 */ 0x7C09, 0x7C0A, 0x7C0D, 0x7C0E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A50 */ 0xFFFD, 0xFFFD, 0x7C17, 0x7C18, 0x7C19, 0xFFFD, 0x7C1A, 0x7C1B, -/* 1A58 */ 0x7C1C, 0x7C1D, 0x7C1E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1A60 */ 0xFFFD, 0x7C28, 0x7C29, 0x7C42, 0x9AB8, 0x5B69, 0x6D77, 0x6C26, -/* 1A68 */ 0x4EA5, 0x5BB3, 0x9A87, 0x9163, 0x61A8, 0x90AF, 0x97E9, 0x542B, -/* 1A70 */ 0x6DB5, 0x5BD2, 0x51FD, 0x558A, 0x7F55, 0x7FF0, 0x64BC, 0x634D, -/* 1A78 */ 0x65F1, 0x61BE, 0x608D, 0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D, -/* 1A80 */ 0x822A, 0x58D5, 0x568E, 0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, -/* 1A88 */ 0x53F7, 0x6D69, 0x5475, 0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, -/* 1A90 */ 0x548C, 0x4F55, 0x5408, 0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, -/* 1A98 */ 0x8D6B, 0x8910, 0x9E64, 0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, -/* 1AA0 */ 0x72E0, 0x6068, 0x54FC, 0x4EA8, 0x6A2A, 0x8861, 0x6052, 0x8F70, -/* 1AA8 */ 0x54C4, 0x70D8, 0x8679, 0x9E3F, 0x6D2A, 0x5B8F, 0x5F18, 0x7EA2, -/* 1AB0 */ 0x5589, 0x4FAF, 0x7334, 0x543C, 0x539A, 0x5019, 0x540E, 0x547C, -/* 1AB8 */ 0x4E4E, 0x5FFD, 0x745A, 0x58F6, 0x846B, 0x80E1, 0x8774, 0x72D0, -/* 1AC0 */ 0x7CCA, 0x6E56, 0x7C88, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1AC8 */ 0xFFFD, 0xFFFD, 0x7C93, 0x7C94, 0x7C96, 0x7C99, 0x7C9A, 0x7C9B, -/* 1AD0 */ 0x7CA0, 0x7CA1, 0x7CA3, 0x7CA6, 0x7CA7, 0x7CA8, 0x7CA9, 0x7CAB, -/* 1AD8 */ 0x7CAC, 0x7CAD, 0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5, 0x7CB6, 0x7CB7, -/* 1AE0 */ 0x7CB8, 0x7CBA, 0x7CBB, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, -/* 1AE8 */ 0x6CAA, 0x6237, 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, -/* 1AF0 */ 0x5212, 0x5316, 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, -/* 1AF8 */ 0x6B22, 0x73AF, 0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, -/* 1B00 */ 0x75EA, 0x8C62, 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352, 0x614C, -/* 1B08 */ 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, 0x714C, -/* 1B10 */ 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, 0x5FBD, -/* 1B18 */ 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, 0x60E0, -/* 1B20 */ 0x6666, 0x8D3F, 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, -/* 1B28 */ 0x7ED8, 0x8364, 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, -/* 1B30 */ 0x6D3B, 0x4F19, 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, -/* 1B38 */ 0x7978, 0x51FB, 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, -/* 1B40 */ 0x7B95, 0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3, 0x7CC4, 0x7CC6, 0x7CC9, -/* 1B48 */ 0x7CCB, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B50 */ 0x7CD8, 0x7CDA, 0x7CDB, 0x7CDD, 0x7CDE, 0x7CF9, 0x7CFA, 0x7D21, -/* 1B58 */ 0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A, 0x7D2C, -/* 1B60 */ 0x7D2D, 0x7D2E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1B68 */ 0xFFFD, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC, -/* 1B70 */ 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, 0x96C6, -/* 1B78 */ 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7, 0x6324, -/* 1B80 */ 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63, 0x4F0E, -/* 1B88 */ 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, 0x8BB0, -/* 1B90 */ 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7, -/* 1B98 */ 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532, -/* 1BA0 */ 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C, -/* 1BA8 */ 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9, -/* 1BB0 */ 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877, -/* 1BB8 */ 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, 0x69DB, -/* 1BC0 */ 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6, 0x5065, -/* 1BC8 */ 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, 0x5EFA, 0x50F5, -/* 1BD0 */ 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 0x6868, 0x5956, -/* 1BD8 */ 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 0x7901, 0x7126, -/* 1BE0 */ 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 0x56BC, 0x6405, -/* 1BE8 */ 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 0x997A, 0x7F34, -/* 1BF0 */ 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83, 0x53EB, 0x7A96, -/* 1BF8 */ 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636, 0x622A, 0x52AB, -/* 1C00 */ 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED, 0x6D01, 0x7ED3, -/* 1C08 */ 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, 0x501F, 0x4ECB, -/* 1C10 */ 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, 0x91D1, 0x4ECA, -/* 1C18 */ 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 0x8FDB, 0x9773, -/* 1C20 */ 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, 0x5C3D, 0x52B2, 0x8346, -/* 1C28 */ 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, -/* 1C30 */ 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, 0x666F, 0x9888, 0x9759, 0x5883, -/* 1C38 */ 0x656C, 0x955C, 0x5F84, 0x75C9, 0x9756, 0x7ADF, 0x7ADE, 0x51C0, -/* 1C40 */ 0x70AF, 0x7A98, 0x63EA, 0x7A76, 0x7EA0, 0x7396, 0x97ED, 0x4E45, -/* 1C48 */ 0x7078, 0x4E5D, 0x9152, 0x53A9, 0x6551, 0x65E7, 0x81FC, 0x8205, -/* 1C50 */ 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8, 0x72D9, 0x75BD, 0x5C45, -/* 1C58 */ 0x9A79, 0x83CA, 0x5C40, 0x5480, 0x77E9, 0x4E3E, 0x6CAE, 0x805A, -/* 1C60 */ 0x62D2, 0x636E, 0x5DE8, 0x5177, 0x8DDD, 0x8E1E, 0x952F, 0x4FF1, -/* 1C68 */ 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350, 0x9E43, 0x5A1F, 0x5026, -/* 1C70 */ 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, 0x6289, 0x6398, 0x5014, -/* 1C78 */ 0x7235, 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, 0x5747, 0x83CC, 0x94A7, -/* 1C80 */ 0x519B, 0x541B, 0x5CFB, 0x7E3A, 0x7E3C, 0x7E3D, 0x7E3E, 0x7E3F, -/* 1C88 */ 0x7E40, 0x7E42, 0x7E43, 0x7E44, 0x7E45, 0x7E46, 0x4FCA, 0x7AE3, -/* 1C90 */ 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, 0x5361, 0x54AF, 0x5F00, -/* 1C98 */ 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8, 0x574E, -/* 1CA0 */ 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, -/* 1CA8 */ 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, -/* 1CB0 */ 0x68F5, 0x78D5, 0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, -/* 1CB8 */ 0x514B, 0x523B, 0x5BA2, 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, -/* 1CC0 */ 0x5751, 0x542D, 0x7A7A, 0x6050, 0x5B54, 0x63A7, 0x62A0, 0x53E3, -/* 1CC8 */ 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F, 0x82E6, 0x9177, 0x5E93, -/* 1CD0 */ 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8, 0x80EF, 0x5757, 0x7B77, -/* 1CD8 */ 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, 0x7B50, 0x72C2, 0x6846, -/* 1CE0 */ 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF, 0x7AA5, -/* 1CE8 */ 0x8475, 0x594E, 0x9B41, 0x5080, 0x7E9C, 0x7E9D, 0x7E9E, 0xFFFD, -/* 1CF0 */ 0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6, 0x7EE4, 0x7EEC, 0x7EF9, -/* 1CF8 */ 0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D00 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F43, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F52, -/* 1D10 */ 0x7F53, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, 0x56F0, -/* 1D18 */ 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, 0x8721, -/* 1D20 */ 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, 0x5A6A, -/* 1D28 */ 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD, -/* 1D30 */ 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC, -/* 1D38 */ 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001, -/* 1D40 */ 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7, -/* 1D48 */ 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B, -/* 1D50 */ 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, 0x7281, -/* 1D58 */ 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, 0x91CC, -/* 1D60 */ 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, 0x5389, -/* 1D68 */ 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0, 0x7F56, -/* 1D70 */ 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63, 0x7F64, -/* 1D78 */ 0x7F65, 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F, 0x7F70, -/* 1D80 */ 0x7F73, 0x7F75, 0x7F76, 0x7F77, 0x7F78, 0x7F7A, 0x7F7B, 0x7F7C, -/* 1D88 */ 0x7F7D, 0x7F7F, 0x7F80, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1D90 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90, 0x7F91, -/* 1D98 */ 0x7F92, 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99, 0x7F9B, -/* 1DA0 */ 0x7F9C, 0x7FA0, 0x7FA2, 0x7FA3, 0x7FA5, 0x7FA6, 0xFFFD, 0xFFFD, -/* 1DA8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7FB1, 0xFFFD, 0x7FB3, -/* 1DB0 */ 0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE, 0x7FC0, -/* 1DB8 */ 0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9, 0x7FCB, -/* 1DC0 */ 0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD2, 0x7FD3, 0x7FD6, 0x7FD7, -/* 1DC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7FE2, 0x7FE3, -/* 1DD0 */ 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 0x54E9, -/* 1DD8 */ 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 0x6D9F, -/* 1DE0 */ 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 0x7CAE, -/* 1DE8 */ 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF, 0x667E, -/* 1DF0 */ 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE, 0x5BE5, -/* 1DF8 */ 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599, 0x5217, -/* 1E00 */ 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7, 0x9716, -/* 1E08 */ 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, 0x62CE, -/* 1E10 */ 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 0x51CC, -/* 1E18 */ 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 0x7409, -/* 1E20 */ 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 0x67F3, -/* 1E28 */ 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF, 0x7FE4, 0x7FE7, -/* 1E30 */ 0x7FE8, 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF2, 0xFFFD, -/* 1E38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7FFD, 0x7FFE, -/* 1E40 */ 0x7FFF, 0x8002, 0x8007, 0x8008, 0x8009, 0x800A, 0x800E, 0x800F, -/* 1E48 */ 0x8011, 0x8013, 0x801A, 0x801B, 0x801D, 0x801E, 0x801F, 0x8021, -/* 1E50 */ 0x8023, 0x8024, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1E58 */ 0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E, 0x8040, 0x8041, -/* 1E60 */ 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804E, 0x804F, 0x8050, -/* 1E68 */ 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0xFFFD, 0x8059, 0x9686, -/* 1E70 */ 0x5784, 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, 0x7BD3, 0x6F0F, -/* 1E78 */ 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, 0x63B3, 0x5364, -/* 1E80 */ 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, 0x8D42, 0x9E7F, -/* 1E88 */ 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415, 0x94DD, -/* 1E90 */ 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 0x6C2F, 0x5F8B, -/* 1E98 */ 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 0x6EE6, 0x5375, -/* 1EA0 */ 0x4E71, 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 0x4ED1, 0x6CA6, -/* 1EA8 */ 0x7EB6, 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, 0x9523, 0x7BA9, -/* 1EB0 */ 0x9AA1, 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, 0x5988, 0x9EBB, -/* 1EB8 */ 0x739B, 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, 0x5417, 0x57CB, -/* 1EC0 */ 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, 0x9992, 0x86EE, -/* 1EC8 */ 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B, 0x807E, 0x8081, 0x8082, -/* 1ED0 */ 0x8085, 0x8088, 0x808A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1ED8 */ 0xFFFD, 0x8094, 0x8095, 0x8097, 0x8099, 0x809E, 0x80A3, 0x80A6, -/* 1EE0 */ 0x80A7, 0x80A8, 0x80AC, 0x80B0, 0x80B3, 0x80B5, 0x80B6, 0x80B8, -/* 1EE8 */ 0x80B9, 0x80BB, 0x80C5, 0x80C7, 0x80C8, 0x80C9, 0x80CA, 0x80CB, -/* 1EF0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x80D8, -/* 1EF8 */ 0x80DF, 0x80E0, 0x80E2, 0x80E3, 0x80E6, 0x80EE, 0x80F5, 0x80F7, -/* 1F00 */ 0x80F9, 0x80FB, 0x80FE, 0x80FF, 0x8100, 0x8101, 0x8103, 0x8104, -/* 1F08 */ 0x8105, 0x8107, 0x8108, 0x810B, 0xFFFD, 0x810C, 0x8115, 0x8117, -/* 1F10 */ 0x8119, 0x811B, 0x811C, 0x811D, 0x812D, 0x812E, 0x8130, 0x8133, -/* 1F18 */ 0x8134, 0x8135, 0x8137, 0x8139, 0x813A, 0x813B, 0x813C, 0x813D, -/* 1F20 */ 0x813F, 0x8C29, 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, -/* 1F28 */ 0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, -/* 1F30 */ 0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48, 0x73AB, 0x679A, 0x6885, -/* 1F38 */ 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, 0x5A92, 0x9541, 0x6BCF, -/* 1F40 */ 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8, 0x95F7, 0x4EEC, -/* 1F48 */ 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6, 0x5B5F, -/* 1F50 */ 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73, -/* 1F58 */ 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, -/* 1F60 */ 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, -/* 1F68 */ 0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, -/* 1F70 */ 0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, -/* 1F78 */ 0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D, 0x8C2C, 0x6478, 0x8147, -/* 1F80 */ 0x8149, 0x814D, 0x814E, 0x814F, 0x8152, 0x8156, 0x8157, 0x8158, -/* 1F88 */ 0x815B, 0x815C, 0x815D, 0x815E, 0x815F, 0x8161, 0x8162, 0x8163, -/* 1F90 */ 0x8164, 0x8166, 0x8168, 0x816A, 0x816B, 0x816C, 0x816F, 0x8172, -/* 1F98 */ 0x8173, 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, -/* 1FA0 */ 0x8185, 0x8186, 0x8187, 0x8189, 0x818B, 0x818C, 0x818D, 0x818E, -/* 1FA8 */ 0x8190, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8199, -/* 1FB0 */ 0x819A, 0x819E, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0x81A4, 0x81A5, -/* 1FB8 */ 0xFFFD, 0x81A7, 0x81A9, 0x81BC, 0x81BD, 0x81BE, 0x81BF, 0x81C4, -/* 1FC0 */ 0x81C5, 0x81C7, 0x81C8, 0x81C9, 0x81CB, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1FC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x6479, 0x8611, 0x6A21, 0x819C, -/* 1FD0 */ 0x78E8, 0x6469, 0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, -/* 1FD8 */ 0x6CAB, 0x6F20, 0x5BDE, 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, -/* 1FE0 */ 0x7261, 0x4EA9, 0x59C6, 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, -/* 1FE8 */ 0x6155, 0x6728, 0x76EE, 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, -/* 1FF0 */ 0x5450, 0x94A0, 0x90A3, 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, -/* 1FF8 */ 0x8010, 0x5948, 0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, -/* 2000 */ 0x607C, 0x95F9, 0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, -/* 2008 */ 0x59AE, 0x9713, 0x502A, 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, -/* 2010 */ 0x817B, 0x9006, 0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, -/* 2018 */ 0x637B, 0x5FF5, 0x5A18, 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, -/* 2020 */ 0x5B7D, 0x556E, 0x954A, 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, -/* 2028 */ 0x51DD, 0x5B81, 0x81E4, 0x81E5, 0x81E6, 0x81E8, 0x81E9, 0x81EB, -/* 2030 */ 0x81EE, 0x81EF, 0x81F0, 0x81F1, 0x81F2, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x81FD, 0x81FF, 0x8203, 0x8207, 0x8208, -/* 2040 */ 0x8209, 0x820A, 0x820B, 0x820E, 0x820F, 0x8211, 0x8213, 0xFFFD, -/* 2048 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x821D, 0x8220, 0x8224, -/* 2050 */ 0x8225, 0x8226, 0x8227, 0x8229, 0x822E, 0x8232, 0x823A, 0x823C, -/* 2058 */ 0x823D, 0x823F, 0xFFFD, 0x8240, 0x8241, 0x8242, 0x8243, 0x8245, -/* 2060 */ 0x8246, 0x8248, 0x824A, 0x824C, 0x824D, 0x824E, 0xFFFD, 0xFFFD, -/* 2068 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8259, 0x825B, -/* 2070 */ 0x825C, 0x825D, 0x825E, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8269, 0x62E7, 0x6CDE, 0x725B, 0x626D, -/* 2080 */ 0x94AE, 0x7EBD, 0x8113, 0x6D53, 0x519C, 0x5F04, 0x5974, 0x52AA, -/* 2088 */ 0x6012, 0x5973, 0x6696, 0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, -/* 2090 */ 0x8BFA, 0x54E6, 0x6B27, 0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, -/* 2098 */ 0x6CA4, 0x556A, 0x8DB4, 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, -/* 20A0 */ 0x6392, 0x724C, 0x5F98, 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, -/* 20A8 */ 0x78D0, 0x76FC, 0x7554, 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, -/* 20B0 */ 0x802A, 0x80D6, 0x629B, 0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, -/* 20B8 */ 0x6CE1, 0x5478, 0x80DA, 0x57F9, 0x88F4, 0x8D54, 0x966A, 0x914D, -/* 20C0 */ 0x4F69, 0x6C9B, 0x55B7, 0x76C6, 0x7830, 0x62A8, 0x70F9, 0x6F8E, -/* 20C8 */ 0x5F6D, 0x84EC, 0x68DA, 0x787C, 0x7BF7, 0x81A8, 0x670B, 0x9E4F, -/* 20D0 */ 0x6367, 0x78B0, 0x576F, 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, -/* 20D8 */ 0x7435, 0x6BD7, 0x826A, 0x826B, 0x826C, 0x826D, 0x8271, 0x8275, -/* 20E0 */ 0x8276, 0x8277, 0x8278, 0x827B, 0x827C, 0x8280, 0x8281, 0x8283, -/* 20E8 */ 0x8285, 0x8286, 0x8287, 0x8289, 0x828C, 0x8290, 0x8293, 0x8294, -/* 20F0 */ 0x8295, 0x8296, 0x829A, 0x829B, 0x829E, 0x82A0, 0x82A2, 0x82A3, -/* 20F8 */ 0x82A7, 0x82B2, 0x82B5, 0x82B6, 0x82BA, 0x82BB, 0x82BC, 0x82BF, -/* 2100 */ 0x82C0, 0x82C2, 0x82C3, 0x82C5, 0x82C6, 0x82C9, 0x82D0, 0x82D6, -/* 2108 */ 0x82D9, 0x82DA, 0x82DD, 0x82E2, 0x82E7, 0x82E8, 0x82E9, 0x82EA, -/* 2110 */ 0x82EC, 0x82ED, 0x82EE, 0x82F0, 0x82F2, 0x82F3, 0x82F5, 0x82F6, -/* 2118 */ 0x82F8, 0xFFFD, 0x82FA, 0x82FC, 0x82FD, 0x82FE, 0x82FF, 0x8300, -/* 2120 */ 0x830A, 0x830B, 0x830D, 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, -/* 2128 */ 0x8319, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2130 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8329, 0x832A, 0x832E, 0x8330, 0x8332, -/* 2138 */ 0x8337, 0x833B, 0x833D, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, -/* 2140 */ 0x75DE, 0x50FB, 0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, -/* 2148 */ 0x98D8, 0x6F02, 0x74E2, 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, -/* 2150 */ 0x8D2B, 0x54C1, 0x8058, 0x4E52, 0x576A, 0x82F9, 0x840D, 0x5E73, -/* 2158 */ 0x51ED, 0x74F6, 0x8BC4, 0x5C4F, 0x5761, 0x6CFC, 0x9887, 0x5A46, -/* 2160 */ 0x7834, 0x9B44, 0x8FEB, 0x7C95, 0x5256, 0x6251, 0x94FA, 0x4EC6, -/* 2168 */ 0x8386, 0x8461, 0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, 0x666E, -/* 2170 */ 0x6D66, 0x8C31, 0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, -/* 2178 */ 0x59BB, 0x4E03, 0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, -/* 2180 */ 0x5947, 0x6B67, 0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, -/* 2188 */ 0x7941, 0x9A91, 0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, -/* 2190 */ 0x780C, 0x5668, 0x6C14, 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, -/* 2198 */ 0x6390, 0x833E, 0x833F, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, -/* 21A0 */ 0x834A, 0x834B, 0x834C, 0x834D, 0x834E, 0x8353, 0x8355, 0x8356, -/* 21A8 */ 0x8357, 0x8358, 0x8359, 0x835D, 0x8362, 0xFFFD, 0xFFFD, 0xFFFD, -/* 21B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8379, 0x837A, 0xFFFD, 0xFFFD, -/* 21B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8387, 0x8388, 0x838A, -/* 21C0 */ 0x838B, 0x838C, 0x838D, 0x838F, 0x8390, 0x8391, 0x8394, 0x8395, -/* 21C8 */ 0x8396, 0x8397, 0x8399, 0x839A, 0x839D, 0x839F, 0xFFFD, 0xFFFD, -/* 21D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x83AC, 0x83AD, 0x83AE, -/* 21D8 */ 0xFFFD, 0x83AF, 0x83B5, 0x83BB, 0x83BE, 0x83BF, 0x83C2, 0x83C3, -/* 21E0 */ 0x83C4, 0x83C6, 0x83C8, 0x83C9, 0x83CB, 0x83CD, 0x83CE, 0x83D0, -/* 21E8 */ 0x83D1, 0x83D2, 0x83D3, 0x83D5, 0x83D7, 0x83D9, 0x83DA, 0x83DB, -/* 21F0 */ 0x83DE, 0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7, 0x83E8, 0x83EB, -/* 21F8 */ 0x83EC, 0x83ED, 0x6070, 0x6D3D, 0x7275, 0x6266, 0x948E, 0x94C5, -/* 2200 */ 0x5343, 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, 0x9ED4, 0x94B1, -/* 2208 */ 0x94B3, 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811, 0x5D4C, -/* 2210 */ 0x6B20, 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537, -/* 2218 */ 0x5F3A, 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, -/* 2220 */ 0x4E54, 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, -/* 2228 */ 0x7A8D, 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, -/* 2230 */ 0x4EB2, 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, -/* 2238 */ 0x6C81, 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, 0x6E05, 0x64CE, -/* 2240 */ 0x6674, 0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86, 0x743C, 0x7A77, -/* 2248 */ 0x79CB, 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, 0x914B, 0x6CC5, -/* 2250 */ 0x8D8B, 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71, 0x6E20, -/* 2258 */ 0x83EE, 0x83EF, 0x83F3, 0x83F4, 0x83F5, 0x83F6, 0x83F7, 0x83FA, -/* 2260 */ 0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402, 0x8405, 0x8407, -/* 2268 */ 0x8408, 0x8409, 0x840A, 0x8410, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2270 */ 0xFFFD, 0xFFFD, 0x8419, 0x841A, 0x841B, 0x8439, 0x843A, 0x843B, -/* 2278 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2280 */ 0x8447, 0x8448, 0x8449, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2288 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, -/* 2290 */ 0x8458, 0x845D, 0x845E, 0x845F, 0x8460, 0x8462, 0x8464, 0x8465, -/* 2298 */ 0x8466, 0x8467, 0x8468, 0x846A, 0x846E, 0x846F, 0x8470, 0x8472, -/* 22A0 */ 0x8474, 0x8477, 0x8479, 0x847B, 0x847C, 0x53D6, 0x5A36, 0x9F8B, -/* 22A8 */ 0x8DA3, 0x53BB, 0x5708, 0x98A7, 0x6743, 0x919B, 0x6CC9, 0x5168, -/* 22B0 */ 0x75CA, 0x62F3, 0x72AC, 0x5238, 0x529D, 0x7F3A, 0x7094, 0x7638, -/* 22B8 */ 0x5374, 0x9E4A, 0x69B7, 0x786E, 0x96C0, 0x88D9, 0x7FA4, 0x7136, -/* 22C0 */ 0x71C3, 0x5189, 0x67D3, 0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9, -/* 22C8 */ 0x9976, 0x6270, 0x7ED5, 0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, -/* 22D0 */ 0x5FCD, 0x97E7, 0x4EFB, 0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, -/* 22D8 */ 0x4ECD, 0x65E5, 0x620E, 0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, -/* 22E0 */ 0x6EB6, 0x5BB9, 0x7ED2, 0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, -/* 22E8 */ 0x8815, 0x5112, 0x5B7A, 0x5982, 0x8FB1, 0x4E73, 0x6C5D, 0x5165, -/* 22F0 */ 0x8925, 0x8F6F, 0x962E, 0x854A, 0x745E, 0x9510, 0x95F0, 0x6DA6, -/* 22F8 */ 0x82E5, 0x5F31, 0x6492, 0x6D12, 0x8428, 0x816E, 0x9CC3, 0x585E, -/* 2300 */ 0x8D5B, 0x4E09, 0x53C1, 0x847D, 0x847E, 0x847F, 0x8480, 0x8481, -/* 2308 */ 0x8483, 0x8484, 0x8485, 0x8486, 0x848A, 0x848D, 0xFFFD, 0xFFFD, -/* 2310 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8498, 0x849A, -/* 2318 */ 0x849B, 0x849D, 0x849E, 0x849F, 0x84A0, 0x84B0, 0x84B1, 0x84B3, -/* 2320 */ 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BC, 0x84BE, 0x84C0, 0x84C2, -/* 2328 */ 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CB, 0x84CC, 0x84CE, -/* 2330 */ 0x84CF, 0x84D2, 0x84D4, 0x84D5, 0x84D7, 0xFFFD, 0x84D8, 0x84D9, -/* 2338 */ 0x84DA, 0x84DB, 0x84DC, 0x84DE, 0x84E1, 0x84E2, 0x84E4, 0x84E7, -/* 2340 */ 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED, 0x84EE, 0x84EF, 0x84FD, -/* 2348 */ 0x84FE, 0x8500, 0x8501, 0x8502, 0x4F1E, 0x6563, 0x6851, 0x55D3, -/* 2350 */ 0x4E27, 0x6414, 0x9A9A, 0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, -/* 2358 */ 0x68EE, 0x50E7, 0x838E, 0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, -/* 2360 */ 0x50BB, 0x5565, 0x715E, 0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, -/* 2368 */ 0x5C71, 0x5220, 0x717D, 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, -/* 2370 */ 0x81B3, 0x5584, 0x6C55, 0x6247, 0x7F2E, 0x5892, 0x4F24, 0x5546, -/* 2378 */ 0x8D4F, 0x664C, 0x4E0A, 0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, -/* 2380 */ 0x70E7, 0x828D, 0x52FA, 0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7ECD, -/* 2388 */ 0x5962, 0x8D4A, 0x86C7, 0x820C, 0x820D, 0x8D66, 0x6444, 0x5C04, -/* 2390 */ 0x6151, 0x6D89, 0x793E, 0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, -/* 2398 */ 0x8EAB, 0x6DF1, 0x5A20, 0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, -/* 23A0 */ 0x751A, 0x80BE, 0x614E, 0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, -/* 23A8 */ 0x5347, 0x7EF3, 0x850D, 0x850E, 0x850F, 0x8510, 0x8512, 0x8514, -/* 23B0 */ 0x8515, 0x8516, 0x8518, 0x8519, 0x851B, 0x851C, 0x851D, 0x851E, -/* 23B8 */ 0x8520, 0x853E, 0x853F, 0x8540, 0x8541, 0x8542, 0x8544, 0x8545, -/* 23C0 */ 0x8546, 0x8547, 0x8557, 0x8558, 0x855A, 0x855B, 0x855C, 0x855D, -/* 23C8 */ 0x855F, 0x8560, 0x8561, 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, -/* 23D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 23D8 */ 0xFFFD, 0x8573, 0x8575, 0x8576, 0x8577, 0x8578, 0x857C, 0x857D, -/* 23E0 */ 0x857F, 0x8580, 0x8581, 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, -/* 23E8 */ 0x5E08, 0x5931, 0x72EE, 0x65BD, 0x6E7F, 0x8BD7, 0x5C38, 0x8671, -/* 23F0 */ 0x5341, 0x77F3, 0x62FE, 0x65F6, 0x4EC0, 0x98DF, 0x8680, 0x5B9E, -/* 23F8 */ 0x8BC6, 0x53F2, 0x77E2, 0x4F7F, 0x5C4E, 0x9A76, 0x59CB, 0x5F0F, -/* 2400 */ 0x793A, 0x58EB, 0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93, 0x901D, -/* 2408 */ 0x52BF, 0x662F, 0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, -/* 2410 */ 0x9970, 0x6C0F, 0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, -/* 2418 */ 0x624B, 0x9996, 0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, -/* 2420 */ 0x517D, 0x852C, 0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, -/* 2428 */ 0x8212, 0x6DD1, 0x758F, 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, -/* 2430 */ 0x6691, 0x66D9, 0x7F72, 0x8700, 0x9ECD, 0x9F20, 0x5C5E, 0x672F, -/* 2438 */ 0x8FF0, 0x6811, 0x675F, 0x620D, 0x7AD6, 0x5885, 0x5EB6, 0x6570, -/* 2440 */ 0x6F31, 0x8582, 0x8583, 0x8586, 0x85A5, 0x85A6, 0x85A7, 0x85A9, -/* 2448 */ 0x85AB, 0x85AC, 0x85AD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2450 */ 0xFFFD, 0x85B8, 0x85CA, 0x85CB, 0x85CC, 0x85CD, 0x85CE, 0x85D1, -/* 2458 */ 0x85D2, 0xFFFD, 0x85D4, 0x85E5, 0x85E6, 0x85E7, 0x85E8, 0x6055, -/* 2460 */ 0x5237, 0x800D, 0x6454, 0x8870, 0x7529, 0x5E05, 0x6813, 0x62F4, -/* 2468 */ 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, 0x7761, 0x7A0E, 0x542E, -/* 2470 */ 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714, 0x70C1, 0x65AF, -/* 2478 */ 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D, 0x6B7B, 0x8086, -/* 2480 */ 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E, -/* 2488 */ 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, -/* 2490 */ 0x8258, 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7, 0x7D20, 0x901F, -/* 2498 */ 0x7C9F, 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8BC9, 0x8083, 0x9178, -/* 24A0 */ 0x849C, 0x7B97, 0x867D, 0x968B, 0x968F, 0x7EE5, 0x9AD3, 0x788E, -/* 24A8 */ 0x5C81, 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B59, 0x635F, 0x7B0B, -/* 24B0 */ 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, 0x7D22, 0x9501, 0x6240, -/* 24B8 */ 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854, 0x85F9, 0x85FA, 0x85FC, -/* 24C0 */ 0x85FD, 0x85FE, 0x8600, 0x8601, 0x8602, 0x8603, 0x8604, 0x8612, -/* 24C8 */ 0x8613, 0x8614, 0x8615, 0x8639, 0x863A, 0x863B, 0x863D, 0x863E, -/* 24D0 */ 0x863F, 0x8640, 0x8652, 0x8653, 0x8655, 0x8656, 0x8657, 0x8658, -/* 24D8 */ 0x8659, 0x865B, 0x865C, 0x865D, 0x865F, 0x8660, 0x8661, 0xFFFD, -/* 24E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x736D, -/* 24E8 */ 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC, 0x53F0, 0x6CF0, -/* 24F0 */ 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A, 0x8D2A, 0x762B, -/* 24F8 */ 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D, 0x8C2D, 0x8C08, 0x5766, -/* 2500 */ 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9, 0x70AD, 0x6C64, 0x5858, -/* 2508 */ 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510, 0x7CD6, 0x5018, 0x8EBA, -/* 2510 */ 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, 0x6ED4, 0x7EE6, 0x8404, -/* 2518 */ 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957, 0x7279, 0x85E4, -/* 2520 */ 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22, 0x9511, 0x63D0, -/* 2528 */ 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F, 0x60D5, 0x6D95, -/* 2530 */ 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530, 0x751C, 0x606C, -/* 2538 */ 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A, 0x8DF3, 0x8D34, -/* 2540 */ 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3, 0x866D, 0x866F, 0x8670, -/* 2548 */ 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0xFFFD, 0xFFFD, -/* 2550 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x869E, 0x869F, 0x86A0, 0x86A1, -/* 2558 */ 0x86A2, 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2, 0x86B3, -/* 2560 */ 0x86B7, 0x86B8, 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE, 0x86BF, -/* 2568 */ 0x86C1, 0x86C2, 0x86C3, 0x86C5, 0x86C8, 0x86CC, 0x86CD, 0x86D2, -/* 2570 */ 0x86D3, 0x86D5, 0x86D6, 0x86D7, 0x86DA, 0x86DC, 0xFFFD, 0x86DD, -/* 2578 */ 0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6, 0x86E7, 0x86E8, -/* 2580 */ 0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7, 0x86FA, -/* 2588 */ 0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705, 0x8706, -/* 2590 */ 0x870B, 0x870C, 0x870E, 0x870F, 0x8710, 0x8711, 0x8714, 0x8716, -/* 2598 */ 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, 0x901A, -/* 25A0 */ 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, 0x6876, -/* 25A8 */ 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 0x900F, -/* 25B0 */ 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 0x5C60, -/* 25B8 */ 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 0x817F, -/* 25C0 */ 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 0x6258, -/* 25C8 */ 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 0x62D3, -/* 25D0 */ 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6, 0x889C, -/* 25D8 */ 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, 0x4E38, -/* 25E0 */ 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, 0x5B9B, -/* 25E8 */ 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, 0x7F51, -/* 25F0 */ 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, 0x8719, 0x871B, -/* 25F8 */ 0x871D, 0x871F, 0x8720, 0x8724, 0x8726, 0x8727, 0x8728, 0x872A, -/* 2600 */ 0x872B, 0x872C, 0x872D, 0x872F, 0x8730, 0x8732, 0x8733, 0x8735, -/* 2608 */ 0x8736, 0x8738, 0x8739, 0x873A, 0x873C, 0x873D, 0xFFFD, 0xFFFD, -/* 2610 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x874A, 0x874B, 0x874D, -/* 2618 */ 0x874F, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755, 0x8756, 0x8758, -/* 2620 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8761, 0x8762, -/* 2628 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2630 */ 0x876F, 0x8771, 0x8772, 0x8773, 0x8775, 0xFFFD, 0x8777, 0x8778, -/* 2638 */ 0x8779, 0x877A, 0x877F, 0x8780, 0x8781, 0x8784, 0x8786, 0x8787, -/* 2640 */ 0x8789, 0x878A, 0x878C, 0x878E, 0x878F, 0x8790, 0x8791, 0x8792, -/* 2648 */ 0x8794, 0x8795, 0x8796, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2650 */ 0xFFFD, 0xFFFD, 0x87A0, 0x87A1, 0x87A2, 0x87A3, 0x87A4, 0x5DCD, -/* 2658 */ 0x5FAE, 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, 0x60DF, -/* 2660 */ 0x4E3A, 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, 0x4F2A, -/* 2668 */ 0x5C3E, 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, 0x80C3, 0x5582, -/* 2670 */ 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, 0x536B, 0x761F, -/* 2678 */ 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, 0x7A33, 0x7D0A, -/* 2680 */ 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, 0x6DA1, 0x7A9D, -/* 2688 */ 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x545C, 0x94A8, -/* 2690 */ 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 0x68A7, 0x543E, -/* 2698 */ 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, 0x4F0D, -/* 26A0 */ 0x4FAE, 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, 0x52A1, -/* 26A8 */ 0x609F, 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, 0x77FD, -/* 26B0 */ 0x6670, 0x563B, 0x5438, 0x9521, 0x727A, 0x87A5, 0x87A6, 0x87A7, -/* 26B8 */ 0x87A9, 0x87AA, 0x87AE, 0x87B0, 0x87B1, 0x87B2, 0x87B4, 0x87B6, -/* 26C0 */ 0x87B7, 0x87B8, 0x87B9, 0x87BB, 0x87BC, 0x87BE, 0x87BF, 0x87C1, -/* 26C8 */ 0x87C2, 0x87C3, 0x87C4, 0x87C5, 0x87C7, 0x87C8, 0x87C9, 0x87CC, -/* 26D0 */ 0x87CD, 0x87CE, 0x87CF, 0x87D0, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 26D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x87DC, 0x87DD, 0x87DE, 0x87DF, 0x87E1, -/* 26E0 */ 0x87E2, 0x87E3, 0x87E4, 0x87E6, 0x87E7, 0x87E8, 0x87E9, 0x87EB, -/* 26E8 */ 0x87EC, 0x87ED, 0x87FA, 0x87FB, 0x87FC, 0x87FD, 0x87FF, 0x8800, -/* 26F0 */ 0x8801, 0x8802, 0x8814, 0x8817, 0x8818, 0x8819, 0x881A, 0x881C, -/* 26F8 */ 0x881D, 0x881E, 0x881F, 0x8820, 0x8823, 0x7A00, 0x606F, 0x5E0C, -/* 2700 */ 0x6089, 0x819D, 0x5915, 0x60DC, 0x7184, 0x70EF, 0x6EAA, 0x6C50, -/* 2708 */ 0x7280, 0x6A84, 0x88AD, 0x5E2D, 0x4E60, 0x5AB3, 0x559C, 0x94E3, -/* 2710 */ 0x6D17, 0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E, 0x867E, 0x5323, -/* 2718 */ 0x971E, 0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, -/* 2720 */ 0x590F, 0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, -/* 2728 */ 0x54B8, 0x8D24, 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, -/* 2730 */ 0x663E, 0x9669, 0x73B0, 0x732E, 0x53BF, 0x817A, 0x9985, 0x7FA1, -/* 2738 */ 0x5BAA, 0x9677, 0x9650, 0x7EBF, 0x76F8, 0x53A2, 0x9576, 0x9999, -/* 2740 */ 0x7BB1, 0x8944, 0x6E58, 0x4E61, 0x7FD4, 0x7965, 0x8BE6, 0x60F3, -/* 2748 */ 0x54CD, 0x4EAB, 0x9879, 0x5DF7, 0x6A61, 0x50CF, 0x5411, 0x8C61, -/* 2750 */ 0x8427, 0x785D, 0x9704, 0x524A, 0x54EE, 0x56A3, 0x9500, 0x6D88, -/* 2758 */ 0x5BB5, 0x6DC6, 0x6653, 0x883A, 0x883B, 0x883D, 0x883E, 0x883F, -/* 2760 */ 0x8841, 0x8842, 0x8843, 0x8855, 0x8856, 0x8858, 0xFFFD, 0xFFFD, -/* 2768 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8866, 0x8867, 0x886A, -/* 2770 */ 0x886D, 0x886F, 0x8871, 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, -/* 2778 */ 0x8879, 0x887A, 0xFFFD, 0x887B, 0x887C, 0x8880, 0x8883, 0x8886, -/* 2780 */ 0x8887, 0x8889, 0x888A, 0x888C, 0x888E, 0x888F, 0x8890, 0x8891, -/* 2788 */ 0x8893, 0x8894, 0x8895, 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, -/* 2790 */ 0x889D, 0x889E, 0x889F, 0x88A0, 0x88A1, 0x88A3, 0xFFFD, 0xFFFD, -/* 2798 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5C0F, 0x5B5D, 0x6821, 0x8096, -/* 27A0 */ 0x5578, 0x7B11, 0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, -/* 27A8 */ 0x534F, 0x631F, 0x643A, 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, -/* 27B0 */ 0x68B0, 0x5378, 0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, -/* 27B8 */ 0x85AA, 0x82AF, 0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, -/* 27C0 */ 0x4FE1, 0x8845, 0x661F, 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, -/* 27C8 */ 0x578B, 0x5F62, 0x90A2, 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, -/* 27D0 */ 0x59D3, 0x5144, 0x51F6, 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, -/* 27D8 */ 0x4F11, 0x4FEE, 0x7F9E, 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, -/* 27E0 */ 0x7EE3, 0x589F, 0x620C, 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, -/* 27E8 */ 0x8BB8, 0x84C4, 0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, -/* 27F0 */ 0x7D6E, 0x5A7F, 0x7EEA, 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, -/* 27F8 */ 0x65CB, 0x7384, 0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, -/* 2800 */ 0x88B4, 0x88B5, 0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, -/* 2808 */ 0x88BE, 0x88BF, 0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CA, -/* 2810 */ 0x88CB, 0x88CC, 0x88CD, 0x88CF, 0x88D0, 0x88D1, 0x88D3, 0x88D6, -/* 2818 */ 0x88D7, 0x88DA, 0x88DB, 0x88DC, 0x88DD, 0x88DE, 0x88E0, 0x88E1, -/* 2820 */ 0x88E6, 0x88E7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2828 */ 0xFFFD, 0x88F2, 0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FD, -/* 2830 */ 0x88FF, 0x8900, 0x8901, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2838 */ 0xFFFD, 0xFFFD, 0x8909, 0x890B, 0x890C, 0x890D, 0x890E, 0x890F, -/* 2840 */ 0x8911, 0x8914, 0x8915, 0x8916, 0x8917, 0x8918, 0x891C, 0x891D, -/* 2848 */ 0x891E, 0x891F, 0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, -/* 2850 */ 0x8928, 0x8929, 0x892C, 0x892D, 0x892E, 0x892F, 0x8931, 0x8932, -/* 2858 */ 0x8933, 0x8935, 0x8937, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, -/* 2860 */ 0x859B, 0x5B66, 0x7A74, 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, -/* 2868 */ 0x65EC, 0x8BE2, 0x5BFB, 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, -/* 2870 */ 0x8BAF, 0x900A, 0x8FC5, 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, -/* 2878 */ 0x4E2B, 0x82BD, 0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, -/* 2880 */ 0x54D1, 0x4E9A, 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, -/* 2888 */ 0x76D0, 0x4E25, 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, -/* 2890 */ 0x960E, 0x708E, 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, -/* 2898 */ 0x8273, 0x5830, 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, -/* 28A0 */ 0x7130, 0x5BB4, 0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, -/* 28A8 */ 0x6768, 0x626C, 0x4F6F, 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, -/* 28B0 */ 0x4EF0, 0x75D2, 0x517B, 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, -/* 28B8 */ 0x7476, 0x8942, 0x8943, 0x897C, 0xFFFD, 0x897D, 0x897E, 0x8980, -/* 28C0 */ 0x8982, 0x8984, 0x8985, 0x6447, 0x5C27, 0x9065, 0x7A91, 0x8C23, -/* 28C8 */ 0x59DA, 0x54AC, 0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, -/* 28D0 */ 0x8036, 0x7237, 0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, -/* 28D8 */ 0x53F6, 0x66F3, 0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, -/* 28E0 */ 0x63D6, 0x94F1, 0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, -/* 28E8 */ 0x79FB, 0x4EEA, 0x80F0, 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, -/* 28F0 */ 0x6905, 0x8681, 0x501A, 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x827A, -/* 28F8 */ 0x6291, 0x6613, 0x9091, 0x5C79, 0x4EBF, 0x5F79, 0x81C6, 0x9038, -/* 2900 */ 0x8084, 0x75AB, 0x4EA6, 0x88D4, 0x610F, 0x6BC5, 0x5FC6, 0x4E49, -/* 2908 */ 0x76CA, 0x6EA2, 0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, 0x7FFC, -/* 2910 */ 0x7FCC, 0x7ECE, 0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, -/* 2918 */ 0x59FB, 0x541F, 0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, -/* 2920 */ 0x9690, 0x89C3, 0x89CD, 0x89D3, 0x89D4, 0x89D5, 0x89D7, 0x89D8, -/* 2928 */ 0x89D9, 0x89DB, 0x89DD, 0x89DF, 0x89E0, 0x89E1, 0x89E2, 0x89E4, -/* 2930 */ 0x89E7, 0x89E8, 0x89E9, 0x89EA, 0x89EC, 0x89ED, 0x89EE, 0x89F0, -/* 2938 */ 0x89F1, 0x89F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2940 */ 0xFFFD, 0xFFFD, 0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF, 0x5370, -/* 2948 */ 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424, -/* 2950 */ 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, -/* 2958 */ 0x786C, 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, -/* 2960 */ 0x96CD, 0x8E0A, 0x86F9, 0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, -/* 2968 */ 0x52C7, 0x7528, 0x5E7D, 0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, -/* 2970 */ 0x90AE, 0x94C0, 0x72B9, 0x6CB9, 0x6E38, 0x9149, 0x6709, 0x53CB, -/* 2978 */ 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8, 0x5E7C, 0x8FC2, 0x6DE4, -/* 2980 */ 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206, 0x4F59, 0x4FDE, -/* 2988 */ 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, 0x4E88, 0x5A31, -/* 2990 */ 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389, -/* 2998 */ 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, -/* 29A0 */ 0x6108, 0x6B32, 0x72F1, 0x80B2, 0x8A89, 0x6D74, 0x5BD3, 0x88D5, -/* 29A8 */ 0x9884, 0x8C6B, 0x9A6D, 0x9E33, 0x6E0A, 0x51A4, 0x5143, 0x57A3, -/* 29B0 */ 0x8881, 0x539F, 0x63F4, 0x8F95, 0x56ED, 0x5458, 0x5706, 0x733F, -/* 29B8 */ 0x6E90, 0x7F18, 0x8FDC, 0x82D1, 0x613F, 0x6028, 0x9662, 0x66F0, -/* 29C0 */ 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5, 0x5CB3, 0x7CA4, 0x6708, 0x60A6, -/* 29C8 */ 0x9605, 0x8018, 0x4E91, 0x90E7, 0x5300, 0x9668, 0x5141, 0x8FD0, -/* 29D0 */ 0x8574, 0x915D, 0x6655, 0x97F5, 0x5B55, 0x531D, 0x7838, 0x6742, -/* 29D8 */ 0x683D, 0x54C9, 0x707E, 0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1, -/* 29E0 */ 0x6512, 0x6682, 0x8D5E, 0x8D43, 0x810F, 0x846C, 0x906D, 0x7CDF, -/* 29E8 */ 0x51FF, 0x85FB, 0x67A3, 0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, -/* 29F0 */ 0x9020, 0x7682, 0x7076, 0x71E5, 0x8D23, 0x62E9, 0x5219, 0x6CFD, -/* 29F8 */ 0x8D3C, 0x600E, 0x589E, 0x618E, 0x66FE, 0x8D60, 0x624E, 0x55B3, -/* 2A00 */ 0x6E23, 0x672D, 0x8F67, 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, -/* 2A08 */ 0x548B, 0x4E4D, 0x70B8, 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, -/* 2A10 */ 0x503A, 0x5BE8, 0x77BB, 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, -/* 2A18 */ 0x65A9, 0x8F97, 0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, -/* 2A20 */ 0x7AD9, 0x6E5B, 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, -/* 2A28 */ 0x638C, 0x6DA8, 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, -/* 2A30 */ 0x7634, 0x969C, 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, -/* 2A38 */ 0x7F69, 0x5146, 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, -/* 2A40 */ 0x8F99, 0x8005, 0x9517, 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, -/* 2A48 */ 0x771F, 0x7504, 0x7827, 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, -/* 2A50 */ 0x75B9, 0x8BCA, 0x9707, 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, -/* 2A58 */ 0x7741, 0x5F81, 0x72F0, 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, -/* 2A60 */ 0x653F, 0x8B24, 0x8B25, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, -/* 2A68 */ 0x679D, 0x652F, 0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, -/* 2A70 */ 0x4E4B, 0x7EC7, 0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, -/* 2A78 */ 0x4F84, 0x5740, 0x6307, 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, -/* 2A80 */ 0x5FD7, 0x631A, 0x63B7, 0x81F3, 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, -/* 2A88 */ 0x5236, 0x667A, 0x79E9, 0x7A1A, 0x8D28, 0x7099, 0x75D4, 0x6EDE, -/* 2A90 */ 0x6CBB, 0x7A92, 0x4E2D, 0x76C5, 0x5FE0, 0x949F, 0x8877, 0x7EC8, -/* 2A98 */ 0x79CD, 0x80BF, 0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, 0x5DDE, -/* 2AA0 */ 0x6D32, 0x8BCC, 0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, -/* 2AA8 */ 0x5B99, 0x663C, 0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, -/* 2AB0 */ 0x8BF8, 0x8BDB, 0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, -/* 2AB8 */ 0x5631, 0x4E3B, 0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, -/* 2AC0 */ 0x7B51, 0x8B67, 0x8B68, 0x8B69, 0x8B6A, 0x8B6B, 0x8BAC, 0x8BB1, -/* 2AC8 */ 0x8BBB, 0x8BC7, 0x8BD0, 0x8BEA, 0x8C09, 0x8C1E, 0x4F4F, 0x6CE8, -/* 2AD0 */ 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816, 0x8F6C, -/* 2AD8 */ 0x64B0, 0x8D5A, 0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E, -/* 2AE0 */ 0x58EE, 0x72B6, 0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, -/* 2AE8 */ 0x8C06, 0x51C6, 0x6349, 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, -/* 2AF0 */ 0x914C, 0x5544, 0x7740, 0x707C, 0x6D4A, 0x5179, 0x54A8, 0x8D44, -/* 2AF8 */ 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B, 0x4ED4, 0x7C7D, 0x6ED3, -/* 2B00 */ 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03, 0x68D5, 0x8E2A, 0x5B97, -/* 2B08 */ 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70, 0x594F, 0x63CD, 0x79DF, -/* 2B10 */ 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, 0x963B, 0x7EC4, 0x94BB, -/* 2B18 */ 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, -/* 2B20 */ 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7, 0x8C42, -/* 2B28 */ 0x8C43, 0x8C44, 0x8C45, 0x8C48, 0x8C4A, 0x8C4B, 0xFFFD, 0xFFFD, -/* 2B30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C56, 0x8C57, -/* 2B38 */ 0x8C58, 0x8C59, 0x8C74, 0x8C75, 0x8C76, 0x8C77, 0xFFFD, 0xFFFD, -/* 2B40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8C83, 0x8C84, 0x8C86, -/* 2B48 */ 0x8C87, 0xFFFD, 0x8C88, 0x8C8B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2B50 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x8C95, 0x8C96, 0x8C97, 0x4E8D, 0x4E0C, -/* 2B58 */ 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15, 0x4E98, 0x4E1E, 0x9B32, -/* 2B60 */ 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F, 0x5315, 0x4E47, 0x592D, -/* 2B68 */ 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4, 0x9997, 0x6BD3, 0x777E, -/* 2B70 */ 0x9F17, 0x4E36, 0x4E9F, 0x9F10, 0x4E5C, 0x4E69, 0x4E93, 0x8288, -/* 2B78 */ 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D, 0x539D, 0x53A3, 0x53A5, -/* 2B80 */ 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5, 0x5326, 0x532E, 0x533E, -/* 2B88 */ 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208, 0x520E, 0x522D, 0x5233, -/* 2B90 */ 0x523F, 0x5240, 0x524C, 0x525E, 0x5261, 0x525C, 0x84AF, 0x527D, -/* 2B98 */ 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7F54, 0x4EBB, 0x4EC3, -/* 2BA0 */ 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, 0x4EDE, 0x4F1B, 0x4EF3, -/* 2BA8 */ 0x4F22, 0x4F64, 0x4EF5, 0x4F25, 0x4F27, 0x4F09, 0x4F2B, 0x4F5E, -/* 2BB0 */ 0x4F67, 0x6538, 0x4F5A, 0x4F5D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, -/* 2BB8 */ 0x4F76, 0x4F74, 0x4F91, 0x4F89, 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, -/* 2BC0 */ 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94, 0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, -/* 2BC8 */ 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1, 0x4FDF, 0x4FF8, 0x5029, 0x504C, -/* 2BD0 */ 0x4FF3, 0x502C, 0x500F, 0x502E, 0x502D, 0x4FFE, 0x501C, 0x500C, -/* 2BD8 */ 0x5025, 0x5028, 0x507E, 0x5043, 0x5055, 0x5048, 0x504E, 0x506C, -/* 2BE0 */ 0x507B, 0x50A5, 0x50A7, 0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, -/* 2BE8 */ 0x50EC, 0x50E6, 0x50EE, 0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, -/* 2BF0 */ 0x4F65, 0x4FCE, 0x9FA0, 0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, -/* 2BF8 */ 0x9998, 0x5181, 0x5914, 0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, -/* 2C00 */ 0x5919, 0x5155, 0x4EA0, 0x5156, 0x4EB3, 0x886E, 0x88A4, 0x4EB5, -/* 2C08 */ 0x8114, 0x88D2, 0x7980, 0x5B34, 0x8803, 0x7FB8, 0x51AB, 0x51B1, -/* 2C10 */ 0x51BD, 0x51BC, 0x8D20, 0x8D51, 0x8D52, 0x8D57, 0x8D5F, 0x8D65, -/* 2C18 */ 0x8D68, 0x8D69, 0x8D6A, 0x8D6C, 0x8D6E, 0x8D6F, 0x8D71, 0x8D72, -/* 2C20 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C28 */ 0xFFFD, 0x8D82, 0x8D83, 0x8D86, 0x8D87, 0x8D88, 0x8D89, 0x8D8C, -/* 2C30 */ 0x8D8D, 0x8D8E, 0x8D8F, 0x8D90, 0x8D92, 0x8D93, 0xFFFD, 0xFFFD, -/* 2C38 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2C40 */ 0x8DA0, 0x8DA1, 0xFFFD, 0x8DA2, 0x8DB2, 0x8DB6, 0x8DB7, 0x8DB9, -/* 2C48 */ 0x8DBB, 0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5, 0x8DC7, 0x8DC8, -/* 2C50 */ 0x8DC9, 0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3, 0x8DD4, 0x51C7, -/* 2C58 */ 0x5196, 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4, -/* 2C60 */ 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, -/* 2C68 */ 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, 0x8BDF, 0x8BE0, -/* 2C70 */ 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, 0x8BF6, 0x8BF9, -/* 2C78 */ 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 0x8C0C, 0x8C0F, -/* 2C80 */ 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 0x8C1B, 0x8C18, -/* 2C88 */ 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 0x8C2A, 0x8C2B, -/* 2C90 */ 0x8C2E, 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 0x5369, 0x537A, -/* 2C98 */ 0x961D, 0x9622, 0x9621, 0x9631, 0x962A, 0x963D, 0x963C, 0x9642, -/* 2CA0 */ 0x9649, 0x9654, 0x965F, 0x9667, 0x966C, 0x9672, 0x9674, 0x9688, -/* 2CA8 */ 0x968D, 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, 0x9099, 0x90AC, -/* 2CB0 */ 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA, 0x8DD5, 0x8DD8, 0x8DD9, -/* 2CB8 */ 0x8DDC, 0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5, 0x8DE6, 0x8DE7, 0x8DE9, -/* 2CC0 */ 0x8DED, 0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2, 0x8DF4, 0x8DF6, 0x8DFC, -/* 2CC8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E06, -/* 2CD0 */ 0x8E07, 0x8E08, 0x8E0B, 0x8E0D, 0x8E0E, 0x8E10, 0x8E11, 0x8E12, -/* 2CD8 */ 0x8E13, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2CE0 */ 0xFFFD, 0x8E20, 0x8E21, 0x8E24, 0x8E25, 0x8E26, 0x8E27, 0x8E28, -/* 2CE8 */ 0x8E2B, 0x8E2D, 0x8E30, 0x8E32, 0x8E33, 0x8E34, 0x8E36, 0x8E37, -/* 2CF0 */ 0x8E38, 0x8E3B, 0x8E3C, 0x8E3E, 0xFFFD, 0x8E3F, 0x8E43, 0x8E45, -/* 2CF8 */ 0x8E46, 0x8E4C, 0x8E4D, 0x8E4E, 0x8E4F, 0x8E50, 0x8E67, 0x8E68, -/* 2D00 */ 0x8E6A, 0x8E6B, 0x8E6E, 0x8E71, 0x90B8, 0x90B0, 0x90CF, 0x90C5, -/* 2D08 */ 0x90BE, 0x90D0, 0x90C4, 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, -/* 2D10 */ 0x90D7, 0x90DB, 0x90EB, 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, -/* 2D18 */ 0x9123, 0x9131, 0x912F, 0x9139, 0x9143, 0x9146, 0x520D, 0x5942, -/* 2D20 */ 0x52A2, 0x52AC, 0x52AD, 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, -/* 2D28 */ 0x53DF, 0x71EE, 0x77CD, 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, -/* 2D30 */ 0x5F01, 0x755A, 0x5DEF, 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, -/* 2D38 */ 0x58C5, 0x58D1, 0x5729, 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, -/* 2D40 */ 0x572F, 0x575C, 0x573B, 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, -/* 2D48 */ 0x577C, 0x577B, 0x5768, 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, -/* 2D50 */ 0x578C, 0x57B2, 0x57CF, 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, -/* 2D58 */ 0x57D8, 0x57DA, 0x57D9, 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, -/* 2D60 */ 0x57E4, 0x57DD, 0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7A, -/* 2D68 */ 0x8E7B, 0x8E7D, 0x8E7E, 0x8E80, 0x8E82, 0x8E83, 0x8E84, 0x8E86, -/* 2D70 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x8E91, -/* 2D78 */ 0x8E92, 0x8E93, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2D80 */ 0xFFFD, 0x8E9D, 0x8EAD, 0x8EAE, 0x8EB0, 0x8EB1, 0x580B, 0x580D, -/* 2D88 */ 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819, 0x5844, 0x5820, 0x5865, -/* 2D90 */ 0x586C, 0x5881, 0x5889, 0x589A, 0x5880, 0x99A8, 0x9F19, 0x61FF, -/* 2D98 */ 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, 0x82A8, 0x8284, 0x828E, -/* 2DA0 */ 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8, 0x82BE, 0x82B0, 0x82C8, -/* 2DA8 */ 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, 0x82CB, 0x82CC, 0x82C1, -/* 2DB0 */ 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, 0x82C4, 0x82CE, 0x82A4, -/* 2DB8 */ 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F, 0x8307, 0x82DC, 0x82F4, -/* 2DC0 */ 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3, 0x8311, 0x831A, 0x8306, -/* 2DC8 */ 0x8314, 0x8315, 0x82E0, 0x82D5, 0x831C, 0x8351, 0x835B, 0x835C, -/* 2DD0 */ 0x8308, 0x8392, 0x833C, 0x8334, 0x8331, 0x839B, 0x835E, 0x832F, -/* 2DD8 */ 0x834F, 0x8347, 0x8343, 0x835F, 0x8340, 0x8317, 0x8360, 0x832D, -/* 2DE0 */ 0x833A, 0x8333, 0x8366, 0x8365, 0x8368, 0x831B, 0x8369, 0x836C, -/* 2DE8 */ 0x836A, 0x836D, 0x836E, 0x83B0, 0x8378, 0x83B3, 0x83B4, 0x83A0, -/* 2DF0 */ 0x83AA, 0x8393, 0x839C, 0x8385, 0x837C, 0x83B6, 0x83A9, 0x837D, -/* 2DF8 */ 0x83B8, 0x837B, 0x8398, 0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1, -/* 2E00 */ 0x8401, 0x83E5, 0x83D8, 0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, -/* 2E08 */ 0x83D6, 0x841C, 0x8438, 0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, -/* 2E10 */ 0x8403, 0x83F8, 0x83F9, 0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, -/* 2E18 */ 0x83E1, 0x845C, 0x8451, 0x845A, 0x8459, 0x8473, 0x8487, 0x8488, -/* 2E20 */ 0x847A, 0x8489, 0x8478, 0x843C, 0x8446, 0x8469, 0x8476, 0x848C, -/* 2E28 */ 0x848E, 0x8431, 0x846D, 0x84C1, 0x84CD, 0x84D0, 0x84E6, 0x84BD, -/* 2E30 */ 0x84D3, 0x84CA, 0x84BF, 0x84BA, 0x84E0, 0x84A1, 0x84B9, 0x84B4, -/* 2E38 */ 0x8497, 0x84E5, 0x84E3, 0x850C, 0x750D, 0x8538, 0x84F0, 0x8539, -/* 2E40 */ 0x851F, 0x853A, 0x8F6A, 0x8F80, 0x8F8C, 0x8F92, 0x8F9D, 0x8FA0, -/* 2E48 */ 0x8FA1, 0x8FA2, 0x8FA4, 0x8FA5, 0x8FA6, 0x8FA7, 0x8FAA, 0x8FAC, -/* 2E50 */ 0x8FAD, 0x8FAE, 0x8FAF, 0x8FB2, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, -/* 2E58 */ 0x8FB8, 0x8FBA, 0x8FBB, 0x8FBC, 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6, -/* 2E60 */ 0xFFFD, 0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC, 0x8FCD, 0x8FCF, 0x8FD2, -/* 2E68 */ 0x8FD6, 0x8FD7, 0x8FDA, 0x8FE0, 0x8FE1, 0x8FE3, 0x8FE7, 0x8FEC, -/* 2E70 */ 0x8FEF, 0x8FF1, 0x8FF2, 0x8FF4, 0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, -/* 2E78 */ 0x8FFC, 0x8FFE, 0x8FFF, 0x9007, 0x9008, 0x900C, 0x900E, 0x9013, -/* 2E80 */ 0x9015, 0x9018, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, -/* 2E88 */ 0x8568, 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, -/* 2E90 */ 0x85A4, 0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, -/* 2E98 */ 0x85B9, 0x85B7, 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, -/* 2EA0 */ 0x8605, 0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, -/* 2EA8 */ 0x8037, 0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25, 0x5C2C, -/* 2EB0 */ 0x5C34, 0x624C, 0x626A, 0x629F, 0x62BB, 0x62CA, 0x62DA, 0x62D7, -/* 2EB8 */ 0x62EE, 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, 0x63F6, -/* 2EC0 */ 0x6371, 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, 0x6369, -/* 2EC8 */ 0x63AE, 0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, -/* 2ED0 */ 0x63CE, 0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, -/* 2ED8 */ 0x6420, 0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496, -/* 2EE0 */ 0x9019, 0x901C, 0x9023, 0x9024, 0x9025, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2EE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034, -/* 2EF0 */ 0x9037, 0x9039, 0x903A, 0x903D, 0x903F, 0x9040, 0x9043, 0x9045, -/* 2EF8 */ 0x9046, 0x9048, 0x9049, 0x904A, 0x904B, 0x904C, 0x904E, 0x9054, -/* 2F00 */ 0x9055, 0x9056, 0x9059, 0x905A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 2F08 */ 0xFFFD, 0xFFFD, 0x9064, 0x9066, 0x9067, 0x9069, 0x906A, 0x906B, -/* 2F10 */ 0x906C, 0x906F, 0x9070, 0x9071, 0x9072, 0x9073, 0xFFFD, 0xFFFD, -/* 2F18 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x907E, 0x9081, 0xFFFD, -/* 2F20 */ 0x9084, 0x9085, 0x9086, 0x9087, 0x9089, 0x908A, 0x908C, 0x908D, -/* 2F28 */ 0x908E, 0x908F, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909A, -/* 2F30 */ 0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4, 0x90A5, 0x90A7, 0x90A8, -/* 2F38 */ 0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7, 0x90BC, 0x90BD, 0x90BF, -/* 2F40 */ 0x90C0, 0x647A, 0x64B7, 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, -/* 2F48 */ 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2, -/* 2F50 */ 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, 0x53E9, 0x53E8, 0x53FB, -/* 2F58 */ 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, 0x5454, 0x5456, -/* 2F60 */ 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, -/* 2F68 */ 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466, -/* 2F70 */ 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6, -/* 2F78 */ 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC, -/* 2F80 */ 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, -/* 2F88 */ 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, -/* 2F90 */ 0x5523, 0x550F, 0x5511, 0x5527, 0x552A, 0x5567, 0x558F, 0x55B5, -/* 2F98 */ 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, 0x5550, 0x553C, 0x90C2, -/* 2FA0 */ 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB, 0x90CC, 0x90CD, 0x90D2, -/* 2FA8 */ 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9, 0x90DA, 0x90DE, 0x90DF, -/* 2FB0 */ 0x90E0, 0x90E3, 0x90E4, 0x90E5, 0x90E9, 0x90EA, 0x90EC, 0x90EE, -/* 2FB8 */ 0x90F0, 0x90F1, 0x90F2, 0x90F3, 0x90F5, 0x90F6, 0x90F7, 0x90F9, -/* 2FC0 */ 0x90FA, 0x90FB, 0x90FC, 0x90FF, 0x9100, 0x9101, 0x9103, 0x911A, -/* 2FC8 */ 0x911B, 0x911C, 0xFFFD, 0x911D, 0x911F, 0x9120, 0x9121, 0x9144, -/* 2FD0 */ 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555C, -/* 2FD8 */ 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, 0x559F, -/* 2FE0 */ 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, 0x5594, -/* 2FE8 */ 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB, 0x55EC, -/* 2FF0 */ 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, 0x55F3, -/* 2FF8 */ 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, 0x561E, 0x5608, -/* 3000 */ 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, 0x5627, 0x562D, -/* 3008 */ 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659, 0x565C, -/* 3010 */ 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B, 0x567C, -/* 3018 */ 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, 0x56F5, -/* 3020 */ 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, 0x5E0F, -/* 3028 */ 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C, 0x9145, 0x9147, -/* 3030 */ 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156, 0x9158, 0x9159, -/* 3038 */ 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167, 0x9168, 0x916B, -/* 3040 */ 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180, 0x9181, 0x9182, -/* 3048 */ 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E, 0x918F, 0x91AB, -/* 3050 */ 0x91AC, 0x91B0, 0x91B1, 0x91B2, 0x91B3, 0x91B6, 0x91B7, 0x91B8, -/* 3058 */ 0x91B9, 0x91BB, 0x91C8, 0x91CB, 0x91D0, 0x5E37, 0x5E44, 0x5E54, -/* 3060 */ 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A, 0x5C8D, 0x5C90, 0x5C96, -/* 3068 */ 0x5C88, 0x5C98, 0x5C99, 0x5C91, 0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, -/* 3070 */ 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, -/* 3078 */ 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, 0x5D02, 0x5D03, 0x5D27, 0x5D26, -/* 3080 */ 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, -/* 3088 */ 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D5D, 0x5D6B, 0x5D4B, 0x5D4A, -/* 3090 */ 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D, 0x8C73, 0x5DB7, 0x5DC5, -/* 3098 */ 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89, 0x5F8C, 0x5F95, 0x5F99, -/* 30A0 */ 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC, 0x8862, 0x5F61, 0x72AD, -/* 30A8 */ 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3, 0x72C1, 0x72CE, 0x72CD, -/* 30B0 */ 0x72D2, 0x72E8, 0x72EF, 0x72E9, 0x72F2, 0x72F4, 0x72F7, 0x7301, -/* 30B8 */ 0x72F3, 0x7303, 0x72FA, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, -/* 30C0 */ 0x731E, 0x731D, 0x7315, 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, -/* 30C8 */ 0x7331, 0x7350, 0x734D, 0x7357, 0x7360, 0x736C, 0x736F, 0x737E, -/* 30D0 */ 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902, 0x9963, 0xFFFD, 0xFFFD, -/* 30D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9974, 0x9977, 0x997D, 0x9980, -/* 30E0 */ 0x9984, 0x9987, 0x998A, 0x998D, 0x9990, 0x9991, 0x9993, 0x9994, -/* 30E8 */ 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, -/* 30F0 */ 0x5EB5, 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, -/* 30F8 */ 0x5EEA, 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, -/* 3100 */ 0x6004, 0x5FE1, 0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, -/* 3108 */ 0x5FF8, 0x6019, 0x6035, 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, -/* 3110 */ 0x602B, 0x600A, 0x603F, 0x6021, 0x6078, 0x6079, 0x607B, 0x607A, -/* 3118 */ 0x6042, 0x606A, 0x607D, 0x6096, 0x609A, 0x60AD, 0x609D, 0x6083, -/* 3120 */ 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, 0x60DD, 0x60D8, -/* 3128 */ 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60F4, -/* 3130 */ 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7, -/* 3138 */ 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1, -/* 3140 */ 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606, -/* 3148 */ 0x9608, 0x960A, 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615, -/* 3150 */ 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35, -/* 3158 */ 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, 0x6C90, 0x6C94, 0x6C8C, -/* 3160 */ 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6CA9, 0x6CD0, 0x6CD4, -/* 3168 */ 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6, -/* 3170 */ 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE, 0x6D39, -/* 3178 */ 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, 0x6D19, 0x6D0E, -/* 3180 */ 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, 0x6D52, 0x6D54, -/* 3188 */ 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, 0x6D93, 0x6D94, -/* 3190 */ 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, 0x6DC5, 0x6DDE, -/* 3198 */ 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, 0x6DDD, 0x6DD9, 0x6E16, -/* 31A0 */ 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, 0x6E4E, 0x6E6B, 0x6EB2, -/* 31A8 */ 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, 0x6E25, 0x6E44, 0x6EDF, -/* 31B0 */ 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5, 0x6EA7, 0x6EBD, -/* 31B8 */ 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, 0x6EC2, 0x6E9F, -/* 31C0 */ 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, 0x6F2F, 0x6F36, -/* 31C8 */ 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, 0x6F8D, 0x6F8C, -/* 31D0 */ 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1, 0x936B, 0x6FC9, 0x6FA7, -/* 31D8 */ 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 0x6FDE, 0x6FE0, 0x6FEF, -/* 31E0 */ 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, 0x704F, 0x705E, 0x5B80, -/* 31E8 */ 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 0x752F, 0x9A9E, 0x6434, -/* 31F0 */ 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07, 0x8FB6, 0x8FD3, -/* 31F8 */ 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6, 0x8FF3, 0x8FE8, -/* 3200 */ 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 0x900D, 0x9016, 0x9021, -/* 3208 */ 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 0x9051, 0x9052, 0x9050, -/* 3210 */ 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074, 0x907D, 0x9082, -/* 3218 */ 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, 0x5F56, 0x5F58, 0x5C3B, -/* 3220 */ 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, 0x5C66, 0x7FBC, 0x5F2A, -/* 3228 */ 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 0x5C6E, 0x5981, 0x5983, -/* 3230 */ 0x598D, 0x59A9, 0x59AA, 0x59A3, 0x93CB, 0x93CC, 0x93CD, 0x5997, -/* 3238 */ 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 0x59AF, 0x59D7, -/* 3240 */ 0x59BE, 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 0x59D8, 0x59F9, -/* 3248 */ 0x5A0C, 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, 0x5A13, 0x5A40, -/* 3250 */ 0x5A67, 0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75, 0x80EC, 0x5AAA, -/* 3258 */ 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, -/* 3260 */ 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6, 0x5AD8, 0x5ADC, -/* 3268 */ 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, 0x5C15, 0x5C1C, -/* 3270 */ 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 0x9A75, 0x9A77, -/* 3278 */ 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 0x9A85, 0x9A88, -/* 3280 */ 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 0x9A9B, 0x9A9C, -/* 3288 */ 0x9A9D, 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, -/* 3290 */ 0x7EA1, 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9, 0x7EAD, 0x7EB0, 0x7EBE, -/* 3298 */ 0x7EC0, 0x7EC1, 0x7EC2, 0x7EC9, 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, -/* 32A0 */ 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1, 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, -/* 32A8 */ 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, -/* 32B0 */ 0x7F02, 0x7F03, 0x7F07, 0x7F08, 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, -/* 32B8 */ 0x7F12, 0x7F17, 0x7F19, 0x7F1C, 0x7F1B, 0x7F1F, 0xFFFD, 0xFFFD, -/* 32C0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F2A, 0x7F2B, 0x7F2C, -/* 32C8 */ 0x7F2D, 0x7F2F, 0x7F30, 0x7F31, 0x7F32, 0x7F33, 0x7F35, 0x5E7A, -/* 32D0 */ 0x757F, 0x5DDB, 0x753E, 0x9095, 0x738E, 0x7391, 0x73AE, 0x73A2, -/* 32D8 */ 0x739F, 0x73CF, 0x73C2, 0x73D1, 0x73B7, 0x73B3, 0x73C0, 0x73C9, -/* 32E0 */ 0x73C8, 0x73E5, 0x73D9, 0x987C, 0x740A, 0x73E9, 0x73E7, 0x73DE, -/* 32E8 */ 0x73BA, 0x73F2, 0x740F, 0x742A, 0x745B, 0x7426, 0x7425, 0x7428, -/* 32F0 */ 0x7430, 0x742E, 0x742C, 0x946C, 0x946D, 0x946E, 0x946F, 0x9491, -/* 32F8 */ 0x9496, 0x9498, 0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA, 0x94E6, -/* 3300 */ 0x94FB, 0x951C, 0x9520, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, -/* 3308 */ 0x7455, 0x7459, 0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, -/* 3310 */ 0x7481, 0x7487, 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, -/* 3318 */ 0x74D2, 0x74BA, 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, -/* 3320 */ 0x6748, 0x6769, 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, -/* 3328 */ 0x6775, 0x67A8, 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, -/* 3330 */ 0x6809, 0x67D8, 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, -/* 3338 */ 0x67DA, 0x67B3, 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, -/* 3340 */ 0x67C1, 0x67FD, 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, -/* 3348 */ 0x6844, 0x6864, 0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, -/* 3350 */ 0x6840, 0x683E, 0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, -/* 3358 */ 0x6877, 0x6893, 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, -/* 3360 */ 0x68F9, 0x9527, 0x9533, 0x953D, 0x9543, 0x9548, 0x954B, 0x9555, -/* 3368 */ 0x955A, 0x9560, 0x956E, 0x9574, 0x9575, 0x6924, 0x68F0, 0x690B, -/* 3370 */ 0x6901, 0x6957, 0x68E3, 0x6910, 0x6971, 0x6939, 0x6960, 0x6942, -/* 3378 */ 0x695D, 0x6984, 0x696B, 0x6980, 0x6998, 0x6978, 0x6934, 0x69CC, -/* 3380 */ 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966, 0x6963, 0x6979, 0x699B, -/* 3388 */ 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4, 0x69B1, 0x69C1, 0x69CA, -/* 3390 */ 0x69DF, 0x6995, 0x69E0, 0x698D, 0x69FF, 0x6A2F, 0x69ED, 0x6A17, -/* 3398 */ 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, -/* 33A0 */ 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, 0x6A28, 0x6A58, 0x6A7C, 0x6A91, -/* 33A8 */ 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, 0x7337, 0x7352, 0x6B81, 0x6B82, -/* 33B0 */ 0x6B87, 0x6B84, 0x6B92, 0x6B93, 0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, -/* 33B8 */ 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, 0x8F72, 0x8F73, 0x8F75, 0x8F76, -/* 33C0 */ 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C, 0x8F7E, 0x8F81, 0x8F82, -/* 33C8 */ 0x8F84, 0x8F87, 0x8F8B, 0x95EC, 0x95FF, 0x9607, 0x9613, 0x9618, -/* 33D0 */ 0x961B, 0x961E, 0x9620, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 33D8 */ 0xFFFD, 0xFFFD, 0x962B, 0x962C, 0x962D, 0x962F, 0x9630, 0x9637, -/* 33E0 */ 0x9638, 0x9639, 0x963A, 0x963E, 0x9641, 0x9643, 0x964A, 0x964E, -/* 33E8 */ 0x964F, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0xFFFD, 0x9658, -/* 33F0 */ 0x9659, 0x965A, 0x965C, 0x965D, 0x965E, 0x9660, 0x9663, 0x9665, -/* 33F8 */ 0x9666, 0x966B, 0x966D, 0x966E, 0x966F, 0x9670, 0x9671, 0x9673, -/* 3400 */ 0x9687, 0x9689, 0x968A, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F98, 0x8F9A, -/* 3408 */ 0x8ECE, 0x620B, 0x6217, 0x621B, 0x621F, 0x6222, 0x6221, 0x6225, -/* 3410 */ 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, -/* 3418 */ 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, -/* 3420 */ 0x6603, 0x6615, 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, -/* 3428 */ 0x6636, 0x6635, 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, -/* 3430 */ 0x6661, 0x6657, 0x6677, 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, -/* 3438 */ 0x66DB, 0x66DC, 0x66E6, 0x66E9, 0x8D32, 0x8D33, 0x8D36, 0x8D3B, -/* 3440 */ 0x8D3D, 0x8D40, 0x8D45, 0x8D46, 0x8D48, 0x8D49, 0x8D47, 0x8D4D, -/* 3448 */ 0x8D55, 0x8D59, 0x89C7, 0x89CA, 0x89CB, 0x89CC, 0x89CE, 0x89CF, -/* 3450 */ 0x89D0, 0x89D1, 0x726E, 0x729F, 0x725D, 0x7266, 0x726F, 0x727E, -/* 3458 */ 0x727F, 0x7284, 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, -/* 3460 */ 0x63B0, 0x968C, 0x968E, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, -/* 3468 */ 0x969A, 0x969B, 0x96B1, 0x96B2, 0x96B4, 0x96B5, 0x96B7, 0x96B8, -/* 3470 */ 0x96BA, 0x96BB, 0x96BF, 0x96C2, 0x96C3, 0x96C8, 0x96CA, 0x96CB, -/* 3478 */ 0x96D0, 0x96D1, 0x96D3, 0x96D4, 0x96EB, 0xFFFD, 0x96EC, 0x96ED, -/* 3480 */ 0x96EE, 0x96F0, 0x96F1, 0x96F2, 0x96F4, 0x96F5, 0x96F8, 0x96FA, -/* 3488 */ 0x96FB, 0x96FC, 0x96FD, 0x96FF, 0x9702, 0x9703, 0x9705, 0x970A, -/* 3490 */ 0x970B, 0x970C, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715, 0x9717, -/* 3498 */ 0x9718, 0x9719, 0x971A, 0x971B, 0x971D, 0x971F, 0x9720, 0x643F, -/* 34A0 */ 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, 0x6BF9, 0x6C05, -/* 34A8 */ 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, 0x6C1A, 0x6C21, -/* 34B0 */ 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, 0x656B, 0x724D, -/* 34B8 */ 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, 0x809C, 0x8093, -/* 34C0 */ 0x80BC, 0x670A, 0x80BD, 0x80B1, 0x80AB, 0x80AD, 0x80B4, 0x80B7, -/* 34C8 */ 0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80DB, 0x80C2, 0x80C4, 0x80D9, -/* 34D0 */ 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x80EB, 0x80F1, 0x80F4, 0x80ED, -/* 34D8 */ 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112, 0x8C5A, 0x8136, -/* 34E0 */ 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, 0x8153, 0x8174, -/* 34E8 */ 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, 0x817D, 0x816D, -/* 34F0 */ 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, 0x6ED5, 0x81A3, -/* 34F8 */ 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB, 0x972B, 0x972C, 0x972E, -/* 3500 */ 0x972F, 0x9731, 0x9733, 0x9734, 0x9735, 0x9736, 0x9737, 0x973A, -/* 3508 */ 0x973B, 0x973C, 0x973D, 0x9754, 0x9755, 0x9757, 0x9758, 0x975A, -/* 3510 */ 0x975C, 0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, -/* 3518 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3520 */ 0xFFFD, 0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977A, 0x977B, -/* 3528 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3530 */ 0x9786, 0x9787, 0x9788, 0x9789, 0x978A, 0x978C, 0x978E, 0x978F, -/* 3538 */ 0x9790, 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, 0x979B, -/* 3540 */ 0x979C, 0x979D, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, -/* 3548 */ 0x6B46, 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, -/* 3550 */ 0x6BB3, 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, -/* 3558 */ 0x65C6, 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, -/* 3560 */ 0x709C, 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, -/* 3568 */ 0x70E8, 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, -/* 3570 */ 0x715C, 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, -/* 3578 */ 0x71B3, 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, -/* 3580 */ 0x721D, 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, -/* 3588 */ 0x6243, 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, -/* 3590 */ 0x795C, 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, -/* 3598 */ 0x797A, 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0, -/* 35A0 */ 0x979E, 0x979F, 0x97A1, 0x97A2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 35A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3, -/* 35B0 */ 0x97E4, 0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2, -/* 35B8 */ 0x97F4, 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, -/* 35C0 */ 0x60AB, 0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, -/* 35C8 */ 0x6206, 0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, -/* 35D0 */ 0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C, -/* 35D8 */ 0x781D, 0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C, -/* 35E0 */ 0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850, -/* 35E8 */ 0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C, -/* 35F0 */ 0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, -/* 35F8 */ 0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, -/* 3600 */ 0x9F9B, 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, -/* 3608 */ 0x7707, 0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, -/* 3610 */ 0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768, 0x7762, -/* 3618 */ 0x7765, 0x777F, 0x778D, 0x777D, 0x7780, 0x778C, 0x7791, 0x779F, -/* 3620 */ 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, 0x754E, 0x754B, -/* 3628 */ 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, 0x7F61, 0x7F5F, -/* 3630 */ 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 0x7F7E, 0x76CD, -/* 3638 */ 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 0x948A, 0x948C, -/* 3640 */ 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 0x949A, 0x949B, -/* 3648 */ 0x949C, 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 0x94AC, 0x94AF, -/* 3650 */ 0x94B0, 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, -/* 3658 */ 0x94BC, 0x94BD, 0x94BF, 0x94C4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3660 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x94D0, 0x94D1, 0x94D2, 0x94D5, 0x94D6, -/* 3668 */ 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, 0x94E0, 0x94E2, -/* 3670 */ 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA, 0x988B, 0x988E, 0x9892, -/* 3678 */ 0x9895, 0x9899, 0x98A3, 0x98CF, 0x98D0, 0x98D4, 0x98D6, 0x98D7, -/* 3680 */ 0x98DB, 0x98DC, 0x98DD, 0x98E0, 0x98E1, 0x98E2, 0x98E3, 0x98E4, -/* 3688 */ 0xFFFD, 0x98E5, 0x98E6, 0x94E9, 0x94EB, 0x94EE, 0x94EF, 0x94F3, -/* 3690 */ 0x94F4, 0x94F5, 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, 0x9503, -/* 3698 */ 0x9502, 0x9506, 0x9507, 0x9509, 0x950A, 0x950D, 0x950E, 0x950F, -/* 36A0 */ 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, 0x951D, -/* 36A8 */ 0x951E, 0x951F, 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, -/* 36B0 */ 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, -/* 36B8 */ 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, -/* 36C0 */ 0x954F, 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, -/* 36C8 */ 0x955B, 0x955E, 0x955F, 0x955D, 0x9561, 0x9562, 0xFFFD, 0xFFFD, -/* 36D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x956F, -/* 36D8 */ 0x9571, 0x9572, 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, 0x79D5, -/* 36E0 */ 0x79ED, 0x79E3, 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, 0x7A1E, -/* 36E8 */ 0x7A14, 0x9908, 0x9909, 0x990A, 0x990B, 0x990C, 0x990E, 0x990F, -/* 36F0 */ 0x9964, 0x9966, 0x9973, 0x9978, 0x9979, 0x997B, 0x997E, 0x9982, -/* 36F8 */ 0x9983, 0x9989, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, -/* 3700 */ 0x7688, 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, -/* 3708 */ 0x9E20, 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, -/* 3710 */ 0x9E31, 0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, -/* 3718 */ 0x9E42, 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, -/* 3720 */ 0x9E4E, 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, -/* 3728 */ 0x9E63, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3730 */ 0x9E71, 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, -/* 3738 */ 0x75AC, 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, -/* 3740 */ 0x75C3, 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, -/* 3748 */ 0x75EB, 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, -/* 3750 */ 0x7605, 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619, -/* 3758 */ 0x998C, 0x998E, 0x99A6, 0x99A7, 0x761B, 0x763C, 0x7622, 0x7620, -/* 3760 */ 0x7640, 0x762D, 0x7630, 0x763F, 0x7635, 0x7643, 0x763E, 0x7633, -/* 3768 */ 0x764D, 0x765E, 0x7654, 0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA, -/* 3770 */ 0x7AE6, 0x7A78, 0x7A79, 0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, -/* 3778 */ 0x7AA0, 0x7AAC, 0x7AA8, 0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, -/* 3780 */ 0x887D, 0x887F, 0x8882, 0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, -/* 3788 */ 0x88E2, 0x88CE, 0x88E3, 0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, -/* 3790 */ 0x88FE, 0x88F0, 0x8921, 0x8919, 0x8913, 0x891B, 0x890A, 0x8934, -/* 3798 */ 0x892B, 0x8936, 0x8941, 0x8966, 0x897B, 0x758B, 0x80E5, 0x76B2, -/* 37A0 */ 0x76B4, 0x77DC, 0x8012, 0x8014, 0x8016, 0x801C, 0x8020, 0x8022, -/* 37A8 */ 0x8025, 0x8026, 0x8027, 0x8029, 0x8028, 0x8031, 0x800B, 0x8035, -/* 37B0 */ 0x8043, 0x8046, 0x804D, 0x8052, 0x8069, 0x8071, 0x8983, 0x9878, -/* 37B8 */ 0x9880, 0x9883, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, -/* 37C0 */ 0x989B, 0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, -/* 37C8 */ 0x8654, 0x866C, 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, -/* 37D0 */ 0x868D, 0x868B, 0x86AC, 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, -/* 37D8 */ 0x86A9, 0x86B6, 0x86C4, 0x86B5, 0x86CE, 0x86B0, 0x86BA, 0x86B1, -/* 37E0 */ 0x86AF, 0x86C9, 0x86CF, 0x86B4, 0x86E9, 0x86F1, 0x86F2, 0x86ED, -/* 37E8 */ 0x86F3, 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, 0x86D8, 0x86D1, -/* 37F0 */ 0x8703, 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, 0x8723, -/* 37F8 */ 0x873B, 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, -/* 3800 */ 0x8731, 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, -/* 3808 */ 0x877B, 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, -/* 3810 */ 0x877C, 0x8764, 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2, -/* 3818 */ 0x9A72, 0x9A83, 0x9A89, 0x9A8D, 0x9A8E, 0x9A94, 0x9A95, 0x9A99, -/* 3820 */ 0x9AA6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3828 */ 0x9AB2, 0x9AB3, 0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB, 0x9ABD, 0x9ABE, -/* 3830 */ 0x9ABF, 0x9AC3, 0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8, 0x9AC9, 0x9ACA, -/* 3838 */ 0x9ACD, 0x9ACE, 0x9ACF, 0x9AD0, 0x9AD2, 0x9AD4, 0x9AD5, 0x9AD6, -/* 3840 */ 0x9AD7, 0x9AD9, 0x9ADA, 0x9ADB, 0x9ADC, 0xFFFD, 0x9ADD, 0x9ADE, -/* 3848 */ 0x9AE0, 0x9AE2, 0x9AE3, 0x9AE4, 0x9AE5, 0x9AE7, 0x9AE8, 0x9AE9, -/* 3850 */ 0x9AEA, 0x9AEC, 0x9AEE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3858 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9AFA, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3860 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B04, 0x9B05, 0x9B06, 0x87C6, -/* 3868 */ 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB, 0x87E5, 0x87AC, -/* 3870 */ 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1, 0x87C0, 0x87CA, -/* 3878 */ 0x87DB, 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813, 0x87FE, 0x880A, -/* 3880 */ 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, 0x7F42, 0x7F44, 0x7F45, -/* 3888 */ 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04, 0x7B15, 0x7B0A, -/* 3890 */ 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, 0x7B2E, 0x7B31, -/* 3898 */ 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E, 0x7B58, 0x7B5A, -/* 38A0 */ 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E, 0x7B7B, 0x7B62, -/* 38A8 */ 0x7B72, 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, 0x7BAC, 0x7B9D, -/* 38B0 */ 0x7BA8, 0x7B85, 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, 0x7BB4, 0x7BD1, -/* 38B8 */ 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6, 0x7BEA, 0x7C0C, -/* 38C0 */ 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, 0x7C0B, 0x9B07, 0xFFFD, 0xFFFD, -/* 38C8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B10, 0x9B11, 0x9B12, 0x9B20, -/* 38D0 */ 0x9B21, 0x9B22, 0x9B30, 0x9B31, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 38D8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9B3D, 0x9B3E, 0x9B3F, 0x9B40, -/* 38E0 */ 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B4E, 0x9B50, 0x9B52, 0x9B53, -/* 38E8 */ 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, 0x8201, -/* 38F0 */ 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, 0x822D, -/* 38F8 */ 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, 0x823E, -/* 3900 */ 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, 0x887E, -/* 3908 */ 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, 0x7F9F, 0x7FA7, -/* 3910 */ 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, 0x7C9D, 0x7C9C, -/* 3918 */ 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, 0x7CC7, 0x7CCC, -/* 3920 */ 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8, 0x7FBF, -/* 3928 */ 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, 0x7FF3, -/* 3930 */ 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, 0x9EB4, -/* 3938 */ 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, 0x8C47, -/* 3940 */ 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164, 0x9162, 0x9161, -/* 3948 */ 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, 0x9172, 0x9174, 0x9179, -/* 3950 */ 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, 0x91A2, 0x91A3, 0x91AA, -/* 3958 */ 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, 0x91BA, 0x8C55, 0x9E7E, -/* 3960 */ 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 0x8DB5, 0x8DBF, 0x8DBC, -/* 3968 */ 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE, 0x8DCE, 0x8DCF, -/* 3970 */ 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 0x8DE3, 0x8DF9, 0x8DFB, -/* 3978 */ 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F, 0x8E2C, 0x8E2E, -/* 3980 */ 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 0x8E35, 0x8E3D, 0x8E31, -/* 3988 */ 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A, 0x8E70, 0x8E76, -/* 3990 */ 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, 0x8E94, 0x8E90, 0x8E9C, -/* 3998 */ 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 0x8C98, 0x8C94, 0x659B, -/* 39A0 */ 0x89D6, 0x89DE, 0x89DA, 0x89DC, 0x89E5, 0x89EB, 0x89EF, 0x8A3E, -/* 39A8 */ 0x8B26, 0x9753, 0x96E9, 0x96F3, 0x96EF, 0x9706, 0x9701, 0x9708, -/* 39B0 */ 0x970F, 0x970E, 0x972A, 0x972D, 0x9730, 0x973E, 0x9F80, 0x9F83, -/* 39B8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F8C, 0x9EFE, -/* 39C0 */ 0x9F0B, 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, -/* 39C8 */ 0x96E0, 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, -/* 39D0 */ 0x943E, 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, -/* 39D8 */ 0x7A23, 0x9C8B, 0x9C8E, 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, -/* 39E0 */ 0x9C9A, 0x9C9B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39E8 */ 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8, 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, -/* 39F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 39F8 */ 0x9CBA, 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, -/* 3A00 */ 0x9CCA, 0x9CCB, 0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83, 0x9C84, -/* 3A08 */ 0x9C89, 0x9C8A, 0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97, 0x9C98, -/* 3A10 */ 0x9C99, 0x9C9D, 0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE, 0x9CBF, -/* 3A18 */ 0x9CC0, 0x9CC1, 0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2, 0x9CDA, -/* 3A20 */ 0x9CDB, 0x9CE0, 0x9CE1, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, -/* 3A28 */ 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, -/* 3A30 */ 0x9CDF, 0x9CE2, 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, -/* 3A38 */ 0x97AB, 0x97A3, 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, -/* 3A40 */ 0x9AB6, 0x9ABA, 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, -/* 3A48 */ 0x9ACC, 0x9AD1, 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, 0x9B4D, -/* 3A50 */ 0x9B51, 0x98E8, 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, -/* 3A58 */ 0x9AE6, 0x9AEF, 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, -/* 3A60 */ 0x9B13, 0x9B1F, 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, -/* 3A68 */ 0x9E88, 0x9E8B, 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, -/* 3A70 */ 0x9EDD, 0x9EE0, 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, -/* 3A78 */ 0x9EEF, 0x9F22, 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, -/* 3A80 */ 0x9F44, 0x9E24, 0x9E27, 0x9E2E, 0x9E30, 0x9E34, 0x9E3B, 0x9E3C, -/* 3A88 */ 0x9E40, 0x9E4D, 0x9E50, 0x9E52, 0x9E53, 0x9E54, 0x9E56, 0x9E59, -/* 3A90 */ 0x9E5D, 0x9E5F, 0x9E60, 0x9E61, 0x9E62, 0x9E65, 0x9E6E, 0x9E6F, -/* 3A98 */ 0x9E72, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AA0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9E80, 0xFFFD, 0x9E81, 0x9E83, 0x9E84, -/* 3AA8 */ 0x9E85, 0x9E86, 0x9E89, 0x9E8A, 0x9E9E, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AB0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9EA7, 0x9EA8, 0x9EA9, 0x9EAA, 0x9EB5, -/* 3AB8 */ 0x9EB6, 0x9EB7, 0x9EB9, 0x9EBA, 0x9EBC, 0x9EBF, 0x9EC0, 0x9EC1, -/* 3AC0 */ 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6, 0x9EC7, 0x9EC8, 0x9ECA, 0x9ECB, -/* 3AC8 */ 0x9ECC, 0x9ED0, 0x9ED2, 0x9ED3, 0x9ED5, 0x9ED6, 0x9ED7, 0x9ED9, -/* 3AD0 */ 0x9EDA, 0x9EDE, 0x9EE1, 0x9EE3, 0x9EE4, 0x9EE6, 0x9EE8, 0x9EEB, -/* 3AD8 */ 0x9EEC, 0x9EED, 0x9EEE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3AE0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9EFA, 0x9EFD, 0xFFFD, 0xFFFD, -/* 3AE8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F06, 0x9F07, -/* 3AF0 */ 0x9F08, 0x9F09, 0x9F0A, 0x9F0C, 0x9F0F, 0x9F11, 0x9F12, 0x9F14, -/* 3AF8 */ 0x9F15, 0x9F16, 0x9F18, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B00 */ 0xFFFD, 0x9F21, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 3B08 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x9F2D, 0x9F2E, 0x9F30, 0x9F31, 0x9F32, -/* 3B10 */ 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C, 0x9F3F, -/* 3B18 */ 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F81, 0x9F82, 0x9F9C, 0x9F9D, -/* 3B20 */ 0x9F9E, 0x9FA1, 0x9FA2, 0x9FA3, 0x9FA4, 0x9FA5, 0xF92C, 0xF979, -/* 3B28 */ 0xF995, 0xF9E7, 0xF9F1, 0xFA0C, 0xFA0D, 0xFA0E, 0xFA0F, 0xFA11, -/* 3B30 */ 0xFA13, 0xFA14, 0xFA18, 0xFA1F, 0xFA20, 0xFA21, 0xFA23, 0xFA24, -/* 3B38 */ 0xFA27, 0xFA28, 0xFA29, -/* End of table Total Length = 0x4693 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/gb2312.ut b/mozilla/lib/libi18n/unicode/utotbl/gb2312.ut deleted file mode 100644 index b8c5067e7e3..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/gb2312.ut +++ /dev/null @@ -1,2713 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 2134 - srcEnd = 213B - destBegin = 3008 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 2231 - srcEnd = 2244 - destBegin = 2488 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 2245 - srcEnd = 2258 - destBegin = 2474 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 2259 - srcEnd = 2262 - destBegin = 2460 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 2265 - srcEnd = 226E - destBegin = 3220 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 2271 - srcEnd = 227C - destBegin = 2160 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 2325 - srcEnd = 237D - destBegin = FF05 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 2421 - srcEnd = 2473 - destBegin = 3041 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2521 - srcEnd = 2576 - destBegin = 30A1 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2621 - srcEnd = 2631 - destBegin = 0391 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2632 - srcEnd = 2638 - destBegin = 03A3 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2641 - srcEnd = 2651 - destBegin = 03B1 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 2652 - srcEnd = 2658 - destBegin = 03C3 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 2721 - srcEnd = 2726 - destBegin = 0410 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 2728 - srcEnd = 2741 - destBegin = 0416 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 2751 - srcEnd = 2756 - destBegin = 0430 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 2758 - srcEnd = 2771 - destBegin = 0436 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 2845 - srcEnd = 2869 - destBegin = 3105 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 2924 - srcEnd = 296F - destBegin = 2500 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 623C - srcEnd = 6241 - destBegin = 9967 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 674A - srcEnd = 6750 - destBegin = 7F21 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 6E66 - srcEnd = 6E6C - destBegin = 94C8 -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 6F64 - srcEnd = 6F6C - destBegin = 9564 -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 7050 - srcEnd = 7056 - destBegin = 9E66 -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 7635 - srcEnd = 763A - destBegin = 9F85 -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 765F - srcEnd = 7664 - destBegin = 9C9E -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = 766D - srcEnd = 7674 - destBegin = 9CB0 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 2121 - srcEnd = 217E - mappingOffset = 0000 - Mapping = - 3000 3001 3002 30FB 02C9 02C7 00A8 3003 - 3005 2015 FF5E 2225 2026 2018 2019 201C - 201D 3014 3015 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 3016 3017 3010 3011 00B1 - 00D7 00F7 2236 2227 2228 2211 220F 222A - 2229 2208 2237 221A 22A5 2225 2220 2312 - 2299 222B 222E 2261 224C 2248 223D 221D - 2260 226E 226F 2264 2265 221E 2235 2234 - 2642 2640 00B0 2032 2033 2103 FF04 00A4 - FFE0 FFE1 2030 00A7 2116 2606 2605 25CB - 25CF 25CE 25C7 25C6 25A1 25A0 25B3 25B2 - 203B 2192 2190 2191 2193 3013 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 2321 - srcEnd = 2324 - mappingOffset = 005E - Mapping = - FF01 FF02 FF03 FFE5 -End of Item 001C - -Begin of Item 001D - Format 2 - srcBegin = 237E - destBegin = FFE3 -End of Item 001D - -Begin of Item 001E - Format 2 - srcBegin = 2727 - destBegin = 0401 -End of Item 001E - -Begin of Item 001F - Format 2 - srcBegin = 2757 - destBegin = 0451 -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 2821 - srcEnd = 283A - mappingOffset = 0062 - Mapping = - 0101 00E1 01CE 00E0 0113 00E9 011B 00E8 - 012B 00ED 01D0 00EC 014D 00F3 01D2 00F2 - 016B 00FA 01D4 00F9 01D6 01D8 01DA 01DC - 00FC 00EA -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 3021 - srcEnd = 307E - mappingOffset = 007C - Mapping = - 554A 963F 57C3 6328 54CE 5509 54C0 7691 - 764C 853C 77EE 827E 788D 7231 9698 978D - 6C28 5B89 4FFA 6309 6697 5CB8 80FA 6848 - 80AE 6602 76CE 51F9 6556 71AC 7FF1 8884 - 50B2 5965 61CA 6FB3 82AD 634C 6252 53ED - 5427 7B06 516B 75A4 5DF4 62D4 8DCB 9776 - 628A 8019 575D 9738 7F62 7238 767D 67CF - 767E 6446 4F70 8D25 62DC 7A17 6591 73ED - 642C 6273 822C 9881 677F 7248 626E 62CC - 4F34 74E3 534A 529E 7ECA 90A6 5E2E 6886 - 699C 8180 7ED1 68D2 78C5 868C 9551 508D - 8C24 82DE 80DE 5305 8912 5265 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 3121 - srcEnd = 317E - mappingOffset = 00DA - Mapping = - 8584 96F9 4FDD 5821 9971 5B9D 62B1 62A5 - 66B4 8C79 9C8D 7206 676F 7891 60B2 5351 - 5317 8F88 80CC 8D1D 94A1 500D 72C8 5907 - 60EB 7119 88AB 5954 82EF 672C 7B28 5D29 - 7EF7 752D 6CF5 8E66 8FF8 903C 9F3B 6BD4 - 9119 7B14 5F7C 78A7 84D6 853D 6BD5 6BD9 - 6BD6 5E01 5E87 75F9 95ED 655D 5F0A 5FC5 - 8F9F 58C1 81C2 907F 965B 97AD 8FB9 7F16 - 8D2C 6241 4FBF 53D8 535E 8FA8 8FA9 8FAB - 904D 6807 5F6A 8198 8868 9CD6 618B 522B - 762A 5F6C 658C 6FD2 6EE8 5BBE 6448 5175 - 51B0 67C4 4E19 79C9 997C 70B3 -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 3221 - srcEnd = 327E - mappingOffset = 0138 - Mapping = - 75C5 5E76 73BB 83E0 64AD 62E8 94B5 6CE2 - 535A 52C3 640F 94C2 7B94 4F2F 5E1B 8236 - 8116 818A 6E24 6CCA 9A73 6355 535C 54FA - 8865 57E0 4E0D 5E03 6B65 7C3F 90E8 6016 - 64E6 731C 88C1 6750 624D 8D22 776C 8E29 - 91C7 5F69 83DC 8521 9910 53C2 8695 6B8B - 60ED 60E8 707F 82CD 8231 4ED3 6CA7 85CF - 64CD 7CD9 69FD 66F9 8349 5395 7B56 4FA7 - 518C 6D4B 5C42 8E6D 63D2 53C9 832C 8336 - 67E5 78B4 643D 5BDF 5C94 5DEE 8BE7 62C6 - 67F4 8C7A 6400 63BA 8749 998B 8C17 7F20 - 94F2 4EA7 9610 98A4 660C 7316 -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 3321 - srcEnd = 337E - mappingOffset = 0196 - Mapping = - 573A 5C1D 5E38 957F 507F 80A0 5382 655E - 7545 5531 5021 8D85 6284 949E 671D 5632 - 6F6E 5DE2 5435 7092 8F66 626F 64A4 63A3 - 5F7B 6F88 90F4 81E3 8FB0 5C18 6668 5FF1 - 6C89 9648 8D81 886C 6491 79F0 57CE 6A59 - 6210 5448 4E58 7A0B 60E9 6F84 8BDA 627F - 901E 9A8B 79E4 5403 75F4 6301 5319 6C60 - 8FDF 5F1B 9A70 803B 9F7F 4F88 5C3A 8D64 - 7FC5 65A5 70BD 5145 51B2 866B 5D07 5BA0 - 62BD 916C 7574 8E0C 7A20 6101 7B79 4EC7 - 7EF8 7785 4E11 81ED 521D 51FA 6A71 53A8 - 8E87 9504 96CF 6EC1 9664 695A -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 3421 - srcEnd = 347E - mappingOffset = 01F4 - Mapping = - 7840 50A8 77D7 6410 89E6 5904 63E3 5DDD - 7A7F 693D 4F20 8239 5598 4E32 75AE 7A97 - 5E62 5E8A 95EF 521B 5439 708A 6376 9524 - 5782 6625 693F 9187 5507 6DF3 7EAF 8822 - 6233 7EF0 75B5 8328 78C1 96CC 8F9E 6148 - 74F7 8BCD 6B64 523A 8D50 6B21 806A 8471 - 56F1 5306 4ECE 4E1B 51D1 7C97 918B 7C07 - 4FC3 8E7F 7BE1 7A9C 6467 5D14 50AC 8106 - 7601 7CB9 6DEC 7FE0 6751 5B58 5BF8 78CB - 64AE 6413 63AA 632B 9519 642D 8FBE 7B54 - 7629 6253 5927 5446 6B79 50A3 6234 5E26 - 6B86 4EE3 8D37 888B 5F85 902E -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 3521 - srcEnd = 357E - mappingOffset = 0252 - Mapping = - 6020 803D 62C5 4E39 5355 90F8 63B8 80C6 - 65E6 6C2E 4F46 60EE 6DE1 8BDE 5F39 86CB - 5F53 6321 515A 8361 6863 5200 6363 8E48 - 5012 5C9B 7977 5BFC 5230 7A3B 60BC 9053 - 76D7 5FB7 5F97 7684 8E6C 706F 767B 7B49 - 77AA 51F3 9093 5824 4F4E 6EF4 8FEA 654C - 7B1B 72C4 6DA4 7FDF 5AE1 62B5 5E95 5730 - 8482 7B2C 5E1D 5F1F 9012 7F14 98A0 6382 - 6EC7 7898 70B9 5178 975B 57AB 7535 4F43 - 7538 5E97 60E6 5960 6DC0 6BBF 7889 53FC - 96D5 51CB 5201 6389 540A 9493 8C03 8DCC - 7239 789F 8776 8FED 8C0D 53E0 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 3621 - srcEnd = 367E - mappingOffset = 02B0 - Mapping = - 4E01 76EF 53EE 9489 9876 9F0E 952D 5B9A - 8BA2 4E22 4E1C 51AC 8463 61C2 52A8 680B - 4F97 606B 51BB 6D1E 515C 6296 6597 9661 - 8C46 9017 75D8 90FD 7763 6BD2 728A 72EC - 8BFB 5835 7779 8D4C 675C 9540 809A 5EA6 - 6E21 5992 7AEF 77ED 953B 6BB5 65AD 7F0E - 5806 5151 961F 5BF9 58A9 5428 8E72 6566 - 987F 56E4 949D 76FE 9041 6387 54C6 591A - 593A 579B 8EB2 6735 8DFA 8235 5241 60F0 - 5815 86FE 5CE8 9E45 4FC4 989D 8BB9 5A25 - 6076 5384 627C 904F 9102 997F 6069 800C - 513F 8033 5C14 9975 6D31 4E8C -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 3721 - srcEnd = 377E - mappingOffset = 030E - Mapping = - 8D30 53D1 7F5A 7B4F 4F10 4E4F 9600 6CD5 - 73D0 85E9 5E06 756A 7FFB 6A0A 77FE 9492 - 7E41 51E1 70E6 53CD 8FD4 8303 8D29 72AF - 996D 6CDB 574A 82B3 65B9 80AA 623F 9632 - 59A8 4EFF 8BBF 7EBA 653E 83F2 975E 5561 - 98DE 80A5 532A 8BFD 5420 80BA 5E9F 6CB8 - 8D39 82AC 915A 5429 6C1B 5206 7EB7 575F - 711A 6C7E 7C89 594B 4EFD 5FFF 6124 7CAA - 4E30 5C01 67AB 8702 5CF0 950B 98CE 75AF - 70FD 9022 51AF 7F1D 8BBD 5949 51E4 4F5B - 5426 592B 6577 80A4 5B75 6276 62C2 8F90 - 5E45 6C1F 7B26 4F0F 4FD8 670D -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 3821 - srcEnd = 387E - mappingOffset = 036C - Mapping = - 6D6E 6DAA 798F 88B1 5F17 752B 629A 8F85 - 4FEF 91DC 65A7 812F 8151 5E9C 8150 8D74 - 526F 8986 8D4B 590D 5085 4ED8 961C 7236 - 8179 8D1F 5BCC 8BA3 9644 5987 7F1A 5490 - 5676 560E 8BE5 6539 6982 9499 76D6 6E89 - 5E72 7518 6746 67D1 7AFF 809D 8D76 611F - 79C6 6562 8D63 5188 521A 94A2 7F38 809B - 7EB2 5C97 6E2F 6760 7BD9 768B 9AD8 818F - 7F94 7CD5 641E 9550 7A3F 544A 54E5 6B4C - 6401 6208 9E3D 80F3 7599 5272 9769 845B - 683C 86E4 9601 9694 94EC 4E2A 5404 7ED9 - 6839 8DDF 8015 66F4 5E9A 7FB9 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 3921 - srcEnd = 397E - mappingOffset = 03CA - Mapping = - 57C2 803F 6897 5DE5 653B 529F 606D 9F9A - 4F9B 8EAC 516C 5BAB 5F13 5DE9 6C5E 62F1 - 8D21 5171 94A9 52FE 6C9F 82DF 72D7 57A2 - 6784 8D2D 591F 8F9C 83C7 5495 7B8D 4F30 - 6CBD 5B64 59D1 9F13 53E4 86CA 9AA8 8C37 - 80A1 6545 987E 56FA 96C7 522E 74DC 5250 - 5BE1 6302 8902 4E56 62D0 602A 68FA 5173 - 5B98 51A0 89C2 7BA1 9986 7F50 60EF 704C - 8D2F 5149 5E7F 901B 7470 89C4 572D 7845 - 5F52 9F9F 95FA 8F68 9B3C 8BE1 7678 6842 - 67DC 8DEA 8D35 523D 8F8A 6EDA 68CD 9505 - 90ED 56FD 679C 88F9 8FC7 54C8 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 3A21 - srcEnd = 3A7E - mappingOffset = 0428 - Mapping = - 9AB8 5B69 6D77 6C26 4EA5 5BB3 9A87 9163 - 61A8 90AF 97E9 542B 6DB5 5BD2 51FD 558A - 7F55 7FF0 64BC 634D 65F1 61BE 608D 710A - 6C57 6C49 592F 676D 822A 58D5 568E 8C6A - 6BEB 90DD 597D 8017 53F7 6D69 5475 559D - 8377 83CF 6838 79BE 548C 4F55 5408 76D2 - 8C89 9602 6CB3 6DB8 8D6B 8910 9E64 8D3A - 563F 9ED1 75D5 5F88 72E0 6068 54FC 4EA8 - 6A2A 8861 6052 8F70 54C4 70D8 8679 9E3F - 6D2A 5B8F 5F18 7EA2 5589 4FAF 7334 543C - 539A 5019 540E 547C 4E4E 5FFD 745A 58F6 - 846B 80E1 8774 72D0 7CCA 6E56 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 3B21 - srcEnd = 3B7E - mappingOffset = 0486 - Mapping = - 5F27 864E 552C 62A4 4E92 6CAA 6237 82B1 - 54D7 534E 733E 6ED1 753B 5212 5316 8BDD - 69D0 5F8A 6000 6DEE 574F 6B22 73AF 6853 - 8FD8 7F13 6362 60A3 5524 75EA 8C62 7115 - 6DA3 5BA6 5E7B 8352 614C 9EC4 78FA 8757 - 7C27 7687 51F0 60F6 714C 6643 5E4C 604D - 8C0E 7070 6325 8F89 5FBD 6062 86D4 56DE - 6BC1 6094 6167 5349 60E0 6666 8D3F 79FD - 4F1A 70E9 6C47 8BB3 8BF2 7ED8 8364 660F - 5A5A 9B42 6D51 6DF7 8C41 6D3B 4F19 706B - 83B7 6216 60D1 970D 8D27 7978 51FB 573E - 57FA 673A 7578 7A3D 79EF 7B95 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 3C21 - srcEnd = 3C7E - mappingOffset = 04E4 - Mapping = - 808C 9965 8FF9 6FC0 8BA5 9E21 59EC 7EE9 - 7F09 5409 6781 68D8 8F91 7C4D 96C6 53CA - 6025 75BE 6C72 5373 5AC9 7EA7 6324 51E0 - 810A 5DF1 84DF 6280 5180 5B63 4F0E 796D - 5242 60B8 6D4E 5BC4 5BC2 8BA1 8BB0 65E2 - 5FCC 9645 5993 7EE7 7EAA 5609 67B7 5939 - 4F73 5BB6 52A0 835A 988A 8D3E 7532 94BE - 5047 7A3C 4EF7 67B6 9A7E 5AC1 6B7C 76D1 - 575A 5C16 7B3A 95F4 714E 517C 80A9 8270 - 5978 7F04 8327 68C0 67EC 78B1 7877 62E3 - 6361 7B80 4FED 526A 51CF 8350 69DB 9274 - 8DF5 8D31 89C1 952E 7BAD 4EF6 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 3D21 - srcEnd = 3D7E - mappingOffset = 0542 - Mapping = - 5065 8230 5251 996F 6E10 6E85 6DA7 5EFA - 50F5 59DC 5C06 6D46 6C5F 7586 848B 6868 - 5956 8BB2 5320 9171 964D 8549 6912 7901 - 7126 80F6 4EA4 90CA 6D47 9A84 5A07 56BC - 6405 94F0 77EB 4FA5 811A 72E1 89D2 997A - 7F34 7EDE 527F 6559 9175 8F7F 8F83 53EB - 7A96 63ED 63A5 7686 79F8 8857 9636 622A - 52AB 8282 6854 6770 6377 776B 7AED 6D01 - 7ED3 89E3 59D0 6212 85C9 82A5 754C 501F - 4ECB 75A5 8BEB 5C4A 5DFE 7B4B 65A4 91D1 - 4ECA 6D25 895F 7D27 9526 4EC5 8C28 8FDB - 9773 664B 7981 8FD1 70EC 6D78 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 3E21 - srcEnd = 3E7E - mappingOffset = 05A0 - Mapping = - 5C3D 52B2 8346 5162 830E 775B 6676 9CB8 - 4EAC 60CA 7CBE 7CB3 7ECF 4E95 8B66 666F - 9888 9759 5883 656C 955C 5F84 75C9 9756 - 7ADF 7ADE 51C0 70AF 7A98 63EA 7A76 7EA0 - 7396 97ED 4E45 7078 4E5D 9152 53A9 6551 - 65E7 81FC 8205 548E 5C31 759A 97A0 62D8 - 72D9 75BD 5C45 9A79 83CA 5C40 5480 77E9 - 4E3E 6CAE 805A 62D2 636E 5DE8 5177 8DDD - 8E1E 952F 4FF1 53E5 60E7 70AC 5267 6350 - 9E43 5A1F 5026 7737 5377 7EE2 6485 652B - 6289 6398 5014 7235 89C9 51B3 8BC0 7EDD - 5747 83CC 94A7 519B 541B 5CFB -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 3F21 - srcEnd = 3F7E - mappingOffset = 05FE - Mapping = - 4FCA 7AE3 6D5A 90E1 9A8F 5580 5496 5361 - 54AF 5F00 63E9 6977 51EF 6168 520A 582A - 52D8 574E 780D 770B 5EB7 6177 7CE0 625B - 6297 4EA2 7095 8003 62F7 70E4 9760 5777 - 82DB 67EF 68F5 78D5 9897 79D1 58F3 54B3 - 53EF 6E34 514B 523B 5BA2 8BFE 80AF 5543 - 57A6 6073 5751 542D 7A7A 6050 5B54 63A7 - 62A0 53E3 6263 5BC7 67AF 54ED 7A9F 82E6 - 9177 5E93 88E4 5938 57AE 630E 8DE8 80EF - 5757 7B77 4FA9 5FEB 5BBD 6B3E 5321 7B50 - 72C2 6846 77FF 7736 65F7 51B5 4E8F 76D4 - 5CBF 7AA5 8475 594E 9B41 5080 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 4021 - srcEnd = 407E - mappingOffset = 065C - Mapping = - 9988 6127 6E83 5764 6606 6346 56F0 62EC - 6269 5ED3 9614 5783 62C9 5587 8721 814A - 8FA3 5566 83B1 6765 8D56 84DD 5A6A 680F - 62E6 7BEE 9611 5170 6F9C 8C30 63FD 89C8 - 61D2 7F06 70C2 6EE5 7405 6994 72FC 5ECA - 90CE 6717 6D6A 635E 52B3 7262 8001 4F6C - 59E5 916A 70D9 6D9D 52D2 4E50 96F7 956D - 857E 78CA 7D2F 5121 5792 64C2 808B 7C7B - 6CEA 68F1 695E 51B7 5398 68A8 7281 9ECE - 7BF1 72F8 79BB 6F13 7406 674E 91CC 9CA4 - 793C 8389 8354 540F 6817 4E3D 5389 52B1 - 783E 5386 5229 5088 4F8B 4FD0 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 4121 - srcEnd = 417E - mappingOffset = 06BA - Mapping = - 75E2 7ACB 7C92 6CA5 96B6 529B 7483 54E9 - 4FE9 8054 83B2 8FDE 9570 5EC9 601C 6D9F - 5E18 655B 8138 94FE 604B 70BC 7EC3 7CAE - 51C9 6881 7CB1 826F 4E24 8F86 91CF 667E - 4EAE 8C05 64A9 804A 50DA 7597 71CE 5BE5 - 8FBD 6F66 4E86 6482 9563 5ED6 6599 5217 - 88C2 70C8 52A3 730E 7433 6797 78F7 9716 - 4E34 90BB 9CDE 6DCB 51DB 8D41 541D 62CE - 73B2 83F1 96F6 9F84 94C3 4F36 7F9A 51CC - 7075 9675 5CAD 9886 53E6 4EE4 6E9C 7409 - 69B4 786B 998F 7559 5218 7624 6D41 67F3 - 516D 9F99 804B 5499 7B3C 7ABF -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 4221 - srcEnd = 427E - mappingOffset = 0718 - Mapping = - 9686 5784 62E2 9647 697C 5A04 6402 7BD3 - 6F0F 964B 82A6 5362 9885 5E90 7089 63B3 - 5364 864F 9C81 9E93 788C 9732 8DEF 8D42 - 9E7F 6F5E 7984 5F55 9646 622E 9A74 5415 - 94DD 4FA3 65C5 5C65 5C61 7F15 8651 6C2F - 5F8B 7387 6EE4 7EFF 5CE6 631B 5B6A 6EE6 - 5375 4E71 63A0 7565 62A1 8F6E 4F26 4ED1 - 6CA6 7EB6 8BBA 841D 87BA 7F57 903B 9523 - 7BA9 9AA1 88F8 843D 6D1B 9A86 7EDC 5988 - 9EBB 739B 7801 8682 9A6C 9A82 561B 5417 - 57CB 4E70 9EA6 5356 8FC8 8109 7792 9992 - 86EE 6EE1 8513 66FC 6162 6F2B -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 4321 - srcEnd = 437E - mappingOffset = 0776 - Mapping = - 8C29 8292 832B 76F2 6C13 5FD9 83BD 732B - 8305 951A 6BDB 77DB 94C6 536F 8302 5192 - 5E3D 8C8C 8D38 4E48 73AB 679A 6885 9176 - 9709 7164 6CA1 7709 5A92 9541 6BCF 7F8E - 6627 5BD0 59B9 5A9A 95E8 95F7 4EEC 840C - 8499 6AAC 76DF 9530 731B 68A6 5B5F 772F - 919A 9761 7CDC 8FF7 8C1C 5F25 7C73 79D8 - 89C5 6CCC 871C 5BC6 5E42 68C9 7720 7EF5 - 5195 514D 52C9 5A29 7F05 9762 82D7 63CF - 7784 85D0 79D2 6E3A 5E99 5999 8511 706D - 6C11 62BF 76BF 654F 60AF 95FD 660E 879F - 9E23 94ED 540D 547D 8C2C 6478 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 4421 - srcEnd = 447E - mappingOffset = 07D4 - Mapping = - 6479 8611 6A21 819C 78E8 6469 9B54 62B9 - 672B 83AB 58A8 9ED8 6CAB 6F20 5BDE 964C - 8C0B 725F 67D0 62C7 7261 4EA9 59C6 6BCD - 5893 66AE 5E55 52DF 6155 6728 76EE 7766 - 7267 7A46 62FF 54EA 5450 94A0 90A3 5A1C - 7EB3 6C16 4E43 5976 8010 5948 5357 7537 - 96BE 56CA 6320 8111 607C 95F9 6DD6 5462 - 9981 5185 5AE9 80FD 59AE 9713 502A 6CE5 - 5C3C 62DF 4F60 533F 817B 9006 6EBA 852B - 62C8 5E74 78BE 64B5 637B 5FF5 5A18 917F - 9E1F 5C3F 634F 8042 5B7D 556E 954A 954D - 6D85 60A8 67E0 72DE 51DD 5B81 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 4521 - srcEnd = 457E - mappingOffset = 0832 - Mapping = - 62E7 6CDE 725B 626D 94AE 7EBD 8113 6D53 - 519C 5F04 5974 52AA 6012 5973 6696 8650 - 759F 632A 61E6 7CEF 8BFA 54E6 6B27 9E25 - 6BB4 85D5 5455 5076 6CA4 556A 8DB4 722C - 5E15 6015 7436 62CD 6392 724C 5F98 6E43 - 6D3E 6500 6F58 76D8 78D0 76FC 7554 5224 - 53DB 4E53 5E9E 65C1 802A 80D6 629B 5486 - 5228 70AE 888D 8DD1 6CE1 5478 80DA 57F9 - 88F4 8D54 966A 914D 4F69 6C9B 55B7 76C6 - 7830 62A8 70F9 6F8E 5F6D 84EC 68DA 787C - 7BF7 81A8 670B 9E4F 6367 78B0 576F 7812 - 9739 6279 62AB 5288 7435 6BD7 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 4621 - srcEnd = 467E - mappingOffset = 0890 - Mapping = - 5564 813E 75B2 76AE 5339 75DE 50FB 5C41 - 8B6C 7BC7 504F 7247 9A97 98D8 6F02 74E2 - 7968 6487 77A5 62FC 9891 8D2B 54C1 8058 - 4E52 576A 82F9 840D 5E73 51ED 74F6 8BC4 - 5C4F 5761 6CFC 9887 5A46 7834 9B44 8FEB - 7C95 5256 6251 94FA 4EC6 8386 8461 83E9 - 84B2 57D4 6734 5703 666E 6D66 8C31 66DD - 7011 671F 6B3A 6816 621A 59BB 4E03 51C4 - 6F06 67D2 6C8F 5176 68CB 5947 6B67 7566 - 5D0E 8110 9F50 65D7 7948 7941 9A91 8D77 - 5C82 4E5E 4F01 542F 5951 780C 5668 6C14 - 8FC4 5F03 6C7D 6CE3 8BAB 6390 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 4721 - srcEnd = 477E - mappingOffset = 08EE - Mapping = - 6070 6D3D 7275 6266 948E 94C5 5343 8FC1 - 7B7E 4EDF 8C26 4E7E 9ED4 94B1 94B3 524D - 6F5C 9063 6D45 8C34 5811 5D4C 6B20 6B49 - 67AA 545B 8154 7F8C 5899 8537 5F3A 62A2 - 6A47 9539 6572 6084 6865 77A7 4E54 4FA8 - 5DE7 9798 64AC 7FD8 5CED 4FCF 7A8D 5207 - 8304 4E14 602F 7A83 94A6 4FB5 4EB2 79E6 - 7434 52E4 82B9 64D2 79BD 5BDD 6C81 9752 - 8F7B 6C22 503E 537F 6E05 64CE 6674 6C30 - 60C5 9877 8BF7 5E86 743C 7A77 79CB 4E18 - 90B1 7403 6C42 56DA 914B 6CC5 8D8B 533A - 86C6 66F2 8EAF 5C48 9A71 6E20 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 4821 - srcEnd = 487E - mappingOffset = 094C - Mapping = - 53D6 5A36 9F8B 8DA3 53BB 5708 98A7 6743 - 919B 6CC9 5168 75CA 62F3 72AC 5238 529D - 7F3A 7094 7638 5374 9E4A 69B7 786E 96C0 - 88D9 7FA4 7136 71C3 5189 67D3 74E4 58E4 - 6518 56B7 8BA9 9976 6270 7ED5 60F9 70ED - 58EC 4EC1 4EBA 5FCD 97E7 4EFB 8BA4 5203 - 598A 7EAB 6254 4ECD 65E5 620E 8338 84C9 - 8363 878D 7194 6EB6 5BB9 7ED2 5197 63C9 - 67D4 8089 8339 8815 5112 5B7A 5982 8FB1 - 4E73 6C5D 5165 8925 8F6F 962E 854A 745E - 9510 95F0 6DA6 82E5 5F31 6492 6D12 8428 - 816E 9CC3 585E 8D5B 4E09 53C1 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 4921 - srcEnd = 497E - mappingOffset = 09AA - Mapping = - 4F1E 6563 6851 55D3 4E27 6414 9A9A 626B - 5AC2 745F 8272 6DA9 68EE 50E7 838E 7802 - 6740 5239 6C99 7EB1 50BB 5565 715E 7B5B - 6652 73CA 82EB 6749 5C71 5220 717D 886B - 95EA 9655 64C5 8D61 81B3 5584 6C55 6247 - 7F2E 5892 4F24 5546 8D4F 664C 4E0A 5C1A - 88F3 68A2 634E 7A0D 70E7 828D 52FA 97F6 - 5C11 54E8 90B5 7ECD 5962 8D4A 86C7 820C - 820D 8D66 6444 5C04 6151 6D89 793E 8BBE - 7837 7533 547B 4F38 8EAB 6DF1 5A20 7EC5 - 795E 6C88 5BA1 5A76 751A 80BE 614E 6E17 - 58F0 751F 7525 7272 5347 7EF3 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 4A21 - srcEnd = 4A7E - mappingOffset = 0A08 - Mapping = - 7701 76DB 5269 80DC 5723 5E08 5931 72EE - 65BD 6E7F 8BD7 5C38 8671 5341 77F3 62FE - 65F6 4EC0 98DF 8680 5B9E 8BC6 53F2 77E2 - 4F7F 5C4E 9A76 59CB 5F0F 793A 58EB 4E16 - 67FF 4E8B 62ED 8A93 901D 52BF 662F 55DC - 566C 9002 4ED5 4F8D 91CA 9970 6C0F 5E02 - 6043 5BA4 89C6 8BD5 6536 624B 9996 5B88 - 5BFF 6388 552E 53D7 7626 517D 852C 67A2 - 68B3 6B8A 6292 8F93 53D4 8212 6DD1 758F - 4E66 8D4E 5B70 719F 85AF 6691 66D9 7F72 - 8700 9ECD 9F20 5C5E 672F 8FF0 6811 675F - 620D 7AD6 5885 5EB6 6570 6F31 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 4B21 - srcEnd = 4B7E - mappingOffset = 0A66 - Mapping = - 6055 5237 800D 6454 8870 7529 5E05 6813 - 62F4 971C 53CC 723D 8C01 6C34 7761 7A0E - 542E 77AC 987A 821C 8BF4 7855 6714 70C1 - 65AF 6495 5636 601D 79C1 53F8 4E1D 6B7B - 8086 5BFA 55E3 56DB 4F3A 4F3C 9972 5DF3 - 677E 8038 6002 9882 9001 5B8B 8BBC 8BF5 - 641C 8258 64DE 55FD 82CF 9165 4FD7 7D20 - 901F 7C9F 50F3 5851 6EAF 5BBF 8BC9 8083 - 9178 849C 7B97 867D 968B 968F 7EE5 9AD3 - 788E 5C81 7A57 9042 96A7 795F 5B59 635F - 7B0B 84D1 68AD 5506 7F29 7410 7D22 9501 - 6240 584C 4ED6 5B83 5979 5854 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 4C21 - srcEnd = 4C7E - mappingOffset = 0AC4 - Mapping = - 736D 631E 8E4B 8E0F 80CE 82D4 62AC 53F0 - 6CF0 915E 592A 6001 6C70 574D 644A 8D2A - 762B 6EE9 575B 6A80 75F0 6F6D 8C2D 8C08 - 5766 6BEF 8892 78B3 63A2 53F9 70AD 6C64 - 5858 642A 5802 68E0 819B 5510 7CD6 5018 - 8EBA 6DCC 8D9F 70EB 638F 6D9B 6ED4 7EE6 - 8404 6843 9003 6DD8 9676 8BA8 5957 7279 - 85E4 817E 75BC 8A8A 68AF 5254 8E22 9511 - 63D0 9898 8E44 557C 4F53 66FF 568F 60D5 - 6D95 5243 5C49 5929 6DFB 586B 7530 751C - 606C 8214 8146 6311 6761 8FE2 773A 8DF3 - 8D34 94C1 5E16 5385 542C 70C3 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 4D21 - srcEnd = 4D7E - mappingOffset = 0B22 - Mapping = - 6C40 5EF7 505C 4EAD 5EAD 633A 8247 901A - 6850 916E 77B3 540C 94DC 5F64 7AE5 6876 - 6345 7B52 7EDF 75DB 5077 6295 5934 900F - 51F8 79C3 7A81 56FE 5F92 9014 6D82 5C60 - 571F 5410 5154 6E4D 56E2 63A8 9893 817F - 8715 892A 9000 541E 5C6F 81C0 62D6 6258 - 8131 9E35 9640 9A6E 9A7C 692D 59A5 62D3 - 553E 6316 54C7 86D9 6D3C 5A03 74E6 889C - 6B6A 5916 8C4C 5F2F 6E7E 73A9 987D 4E38 - 70F7 5B8C 7897 633D 665A 7696 60CB 5B9B - 5A49 4E07 8155 6C6A 738B 4EA1 6789 7F51 - 5F80 65FA 671B 5FD8 5984 5A01 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 4E21 - srcEnd = 4E7E - mappingOffset = 0B80 - Mapping = - 5DCD 5FAE 5371 97E6 8FDD 6845 56F4 552F - 60DF 4E3A 6F4D 7EF4 82C7 840E 59D4 4F1F - 4F2A 5C3E 7EAC 672A 851A 5473 754F 80C3 - 5582 9B4F 4F4D 6E2D 8C13 5C09 6170 536B - 761F 6E29 868A 6587 95FB 7EB9 543B 7A33 - 7D0A 95EE 55E1 7FC1 74EE 631D 8717 6DA1 - 7A9D 6211 65A1 5367 63E1 6C83 5DEB 545C - 94A8 4E4C 6C61 8BEC 5C4B 65E0 829C 68A7 - 543E 5434 6BCB 6B66 4E94 6342 5348 821E - 4F0D 4FAE 575E 620A 96FE 6664 7269 52FF - 52A1 609F 8BEF 6614 7199 6790 897F 7852 - 77FD 6670 563B 5438 9521 727A -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 4F21 - srcEnd = 4F7E - mappingOffset = 0BDE - Mapping = - 7A00 606F 5E0C 6089 819D 5915 60DC 7184 - 70EF 6EAA 6C50 7280 6A84 88AD 5E2D 4E60 - 5AB3 559C 94E3 6D17 7CFB 9699 620F 7EC6 - 778E 867E 5323 971E 8F96 6687 5CE1 4FA0 - 72ED 4E0B 53A6 590F 5413 6380 9528 5148 - 4ED9 9C9C 7EA4 54B8 8D24 8854 8237 95F2 - 6D8E 5F26 5ACC 663E 9669 73B0 732E 53BF - 817A 9985 7FA1 5BAA 9677 9650 7EBF 76F8 - 53A2 9576 9999 7BB1 8944 6E58 4E61 7FD4 - 7965 8BE6 60F3 54CD 4EAB 9879 5DF7 6A61 - 50CF 5411 8C61 8427 785D 9704 524A 54EE - 56A3 9500 6D88 5BB5 6DC6 6653 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 5021 - srcEnd = 507E - mappingOffset = 0C3C - Mapping = - 5C0F 5B5D 6821 8096 5578 7B11 6548 6954 - 4E9B 6B47 874E 978B 534F 631F 643A 90AA - 659C 80C1 8C10 5199 68B0 5378 87F9 61C8 - 6CC4 6CFB 8C22 5C51 85AA 82AF 950C 6B23 - 8F9B 65B0 5FFB 5FC3 4FE1 8845 661F 8165 - 7329 60FA 5174 5211 578B 5F62 90A2 884C - 9192 5E78 674F 6027 59D3 5144 51F6 80F8 - 5308 6C79 96C4 718A 4F11 4FEE 7F9E 673D - 55C5 9508 79C0 8896 7EE3 589F 620C 9700 - 865A 5618 987B 5F90 8BB8 84C4 9157 53D9 - 65ED 5E8F 755C 6064 7D6E 5A7F 7EEA 7EED - 8F69 55A7 5BA3 60AC 65CB 7384 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 5121 - srcEnd = 517E - mappingOffset = 0C9A - Mapping = - 9009 7663 7729 7EDA 9774 859B 5B66 7A74 - 96EA 8840 52CB 718F 5FAA 65EC 8BE2 5BFB - 9A6F 5DE1 6B89 6C5B 8BAD 8BAF 900A 8FC5 - 538B 62BC 9E26 9E2D 5440 4E2B 82BD 7259 - 869C 5D16 8859 6DAF 96C5 54D1 4E9A 8BB6 - 7109 54BD 9609 70DF 6DF9 76D0 4E25 7814 - 8712 5CA9 5EF6 8A00 989C 960E 708E 6CBF - 5944 63A9 773C 884D 6F14 8273 5830 71D5 - 538C 781A 96C1 5501 5F66 7130 5BB4 8C1A - 9A8C 6B83 592E 9E2F 79E7 6768 626C 4F6F - 75A1 7F8A 6D0B 9633 6C27 4EF0 75D2 517B - 6837 6F3E 9080 8170 5996 7476 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 5221 - srcEnd = 527E - mappingOffset = 0CF8 - Mapping = - 6447 5C27 9065 7A91 8C23 59DA 54AC 8200 - 836F 8981 8000 6930 564E 8036 7237 91CE - 51B6 4E5F 9875 6396 4E1A 53F6 66F3 814B - 591C 6DB2 4E00 58F9 533B 63D6 94F1 4F9D - 4F0A 8863 9890 5937 9057 79FB 4EEA 80F0 - 7591 6C82 5B9C 59E8 5F5D 6905 8681 501A - 5DF2 4E59 77E3 4EE5 827A 6291 6613 9091 - 5C79 4EBF 5F79 81C6 9038 8084 75AB 4EA6 - 88D4 610F 6BC5 5FC6 4E49 76CA 6EA2 8BE3 - 8BAE 8C0A 8BD1 5F02 7FFC 7FCC 7ECE 8335 - 836B 56E0 6BB7 97F3 9634 59FB 541F 94F6 - 6DEB 5BC5 996E 5C39 5F15 9690 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 5321 - srcEnd = 537E - mappingOffset = 0D56 - Mapping = - 5370 82F1 6A31 5A74 9E70 5E94 7F28 83B9 - 8424 8425 8367 8747 8FCE 8D62 76C8 5F71 - 9896 786C 6620 54DF 62E5 4F63 81C3 75C8 - 5EB8 96CD 8E0A 86F9 548F 6CF3 6D8C 6C38 - 607F 52C7 7528 5E7D 4F18 60A0 5FE7 5C24 - 7531 90AE 94C0 72B9 6CB9 6E38 9149 6709 - 53CB 53F3 4F51 91C9 8BF1 53C8 5E7C 8FC2 - 6DE4 4E8E 76C2 6986 865E 611A 8206 4F59 - 4FDE 903E 9C7C 6109 6E1D 6E14 9685 4E88 - 5A31 96E8 4E0E 5C7F 79B9 5B87 8BED 7FBD - 7389 57DF 828B 90C1 5401 9047 55BB 5CEA - 5FA1 6108 6B32 72F1 80B2 8A89 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 5421 - srcEnd = 547E - mappingOffset = 0DB4 - Mapping = - 6D74 5BD3 88D5 9884 8C6B 9A6D 9E33 6E0A - 51A4 5143 57A3 8881 539F 63F4 8F95 56ED - 5458 5706 733F 6E90 7F18 8FDC 82D1 613F - 6028 9662 66F0 7EA6 8D8A 8DC3 94A5 5CB3 - 7CA4 6708 60A6 9605 8018 4E91 90E7 5300 - 9668 5141 8FD0 8574 915D 6655 97F5 5B55 - 531D 7838 6742 683D 54C9 707E 5BB0 8F7D - 518D 5728 54B1 6512 6682 8D5E 8D43 810F - 846C 906D 7CDF 51FF 85FB 67A3 65E9 6FA1 - 86A4 8E81 566A 9020 7682 7076 71E5 8D23 - 62E9 5219 6CFD 8D3C 600E 589E 618E 66FE - 8D60 624E 55B3 6E23 672D 8F67 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 5521 - srcEnd = 557E - mappingOffset = 0E12 - Mapping = - 94E1 95F8 7728 6805 69A8 548B 4E4D 70B8 - 8BC8 6458 658B 5B85 7A84 503A 5BE8 77BB - 6BE1 8A79 7C98 6CBE 76CF 65A9 8F97 5D2D - 5C55 8638 6808 5360 6218 7AD9 6E5B 7EFD - 6A1F 7AE0 5F70 6F33 5F20 638C 6DA8 6756 - 4E08 5E10 8D26 4ED7 80C0 7634 969C 62DB - 662D 627E 6CBC 8D75 7167 7F69 5146 8087 - 53EC 906E 6298 54F2 86F0 8F99 8005 9517 - 8517 8FD9 6D59 73CD 659F 771F 7504 7827 - 81FB 8D1E 9488 4FA6 6795 75B9 8BCA 9707 - 632F 9547 9635 84B8 6323 7741 5F81 72F0 - 4E89 6014 6574 62EF 6B63 653F -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 5621 - srcEnd = 567E - mappingOffset = 0E70 - Mapping = - 5E27 75C7 90D1 8BC1 829D 679D 652F 5431 - 8718 77E5 80A2 8102 6C41 4E4B 7EC7 804C - 76F4 690D 6B96 6267 503C 4F84 5740 6307 - 6B62 8DBE 53EA 65E8 7EB8 5FD7 631A 63B7 - 81F3 81F4 7F6E 5E1C 5CD9 5236 667A 79E9 - 7A1A 8D28 7099 75D4 6EDE 6CBB 7A92 4E2D - 76C5 5FE0 949F 8877 7EC8 79CD 80BF 91CD - 4EF2 4F17 821F 5468 5DDE 6D32 8BCC 7CA5 - 8F74 8098 5E1A 5492 76B1 5B99 663C 9AA4 - 73E0 682A 86DB 6731 732A 8BF8 8BDB 9010 - 7AF9 70DB 716E 62C4 77A9 5631 4E3B 8457 - 67F1 52A9 86C0 8D2E 94F8 7B51 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 5721 - srcEnd = 5779 - mappingOffset = 0ECE - Mapping = - 4F4F 6CE8 795D 9A7B 6293 722A 62FD 4E13 - 7816 8F6C 64B0 8D5A 7BC6 6869 5E84 88C5 - 5986 649E 58EE 72B6 690E 9525 8FFD 8D58 - 5760 7F00 8C06 51C6 6349 62D9 5353 684C - 7422 8301 914C 5544 7740 707C 6D4A 5179 - 54A8 8D44 59FF 6ECB 6DC4 5B5C 7D2B 4ED4 - 7C7D 6ED3 5B50 81EA 6E0D 5B57 9B03 68D5 - 8E2A 5B97 7EFC 603B 7EB5 90B9 8D70 594F - 63CD 79DF 8DB3 5352 65CF 7956 8BC5 963B - 7EC4 94BB 7E82 5634 9189 6700 7F6A 5C0A - 9075 6628 5DE6 4F50 67DE 505A 4F5C 5750 - 5EA7 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 5821 - srcEnd = 587E - mappingOffset = 0F27 - Mapping = - 4E8D 4E0C 5140 4E10 5EFF 5345 4E15 4E98 - 4E1E 9B32 5B6C 5669 4E28 79BA 4E3F 5315 - 4E47 592D 723B 536E 6C10 56DF 80E4 9997 - 6BD3 777E 9F17 4E36 4E9F 9F10 4E5C 4E69 - 4E93 8288 5B5B 556C 560F 4EC4 538D 539D - 53A3 53A5 53AE 9765 8D5D 531A 53F5 5326 - 532E 533E 8D5C 5366 5363 5202 5208 520E - 522D 5233 523F 5240 524C 525E 5261 525C - 84AF 527D 5282 5281 5290 5293 5182 7F54 - 4EBB 4EC3 4EC9 4EC2 4EE8 4EE1 4EEB 4EDE - 4F1B 4EF3 4F22 4F64 4EF5 4F25 4F27 4F09 - 4F2B 4F5E 4F67 6538 4F5A 4F5D -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 5921 - srcEnd = 597E - mappingOffset = 0F85 - Mapping = - 4F5F 4F57 4F32 4F3D 4F76 4F74 4F91 4F89 - 4F83 4F8F 4F7E 4F7B 4FAA 4F7C 4FAC 4F94 - 4FE6 4FE8 4FEA 4FC5 4FDA 4FE3 4FDC 4FD1 - 4FDF 4FF8 5029 504C 4FF3 502C 500F 502E - 502D 4FFE 501C 500C 5025 5028 507E 5043 - 5055 5048 504E 506C 507B 50A5 50A7 50A9 - 50BA 50D6 5106 50ED 50EC 50E6 50EE 5107 - 510B 4EDD 6C3D 4F58 4F65 4FCE 9FA0 6C46 - 7C74 516E 5DFD 9EC9 9998 5181 5914 52F9 - 530D 8A07 5310 51EB 5919 5155 4EA0 5156 - 4EB3 886E 88A4 4EB5 8114 88D2 7980 5B34 - 8803 7FB8 51AB 51B1 51BD 51BC -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 5A21 - srcEnd = 5A7E - mappingOffset = 0FE3 - Mapping = - 51C7 5196 51A2 51A5 8BA0 8BA6 8BA7 8BAA - 8BB4 8BB5 8BB7 8BC2 8BC3 8BCB 8BCF 8BCE - 8BD2 8BD3 8BD4 8BD6 8BD8 8BD9 8BDC 8BDF - 8BE0 8BE4 8BE8 8BE9 8BEE 8BF0 8BF3 8BF6 - 8BF9 8BFC 8BFF 8C00 8C02 8C04 8C07 8C0C - 8C0F 8C11 8C12 8C14 8C15 8C16 8C19 8C1B - 8C18 8C1D 8C1F 8C20 8C21 8C25 8C27 8C2A - 8C2B 8C2E 8C2F 8C32 8C33 8C35 8C36 5369 - 537A 961D 9622 9621 9631 962A 963D 963C - 9642 9649 9654 965F 9667 966C 9672 9674 - 9688 968D 9697 96B0 9097 909B 909D 9099 - 90AC 90A1 90B4 90B3 90B6 90BA -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 5B21 - srcEnd = 5B7E - mappingOffset = 1041 - Mapping = - 90B8 90B0 90CF 90C5 90BE 90D0 90C4 90C7 - 90D3 90E6 90E2 90DC 90D7 90DB 90EB 90EF - 90FE 9104 9122 911E 9123 9131 912F 9139 - 9143 9146 520D 5942 52A2 52AC 52AD 52BE - 54FF 52D0 52D6 52F0 53DF 71EE 77CD 5EF4 - 51F5 51FC 9B2F 53B6 5F01 755A 5DEF 574C - 57A9 57A1 587E 58BC 58C5 58D1 5729 572C - 572A 5733 5739 572E 572F 575C 573B 5742 - 5769 5785 576B 5786 577C 577B 5768 576D - 5776 5773 57AD 57A4 578C 57B2 57CF 57A7 - 57B4 5793 57A0 57D5 57D8 57DA 57D9 57D2 - 57B8 57F4 57EF 57F8 57E4 57DD -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 5C21 - srcEnd = 5C7E - mappingOffset = 109F - Mapping = - 580B 580D 57FD 57ED 5800 581E 5819 5844 - 5820 5865 586C 5881 5889 589A 5880 99A8 - 9F19 61FF 8279 827D 827F 828F 828A 82A8 - 8284 828E 8291 8297 8299 82AB 82B8 82BE - 82B0 82C8 82CA 82E3 8298 82B7 82AE 82CB - 82CC 82C1 82A9 82B4 82A1 82AA 829F 82C4 - 82CE 82A4 82E1 8309 82F7 82E4 830F 8307 - 82DC 82F4 82D2 82D8 830C 82FB 82D3 8311 - 831A 8306 8314 8315 82E0 82D5 831C 8351 - 835B 835C 8308 8392 833C 8334 8331 839B - 835E 832F 834F 8347 8343 835F 8340 8317 - 8360 832D 833A 8333 8366 8365 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 5D21 - srcEnd = 5D7E - mappingOffset = 10FD - Mapping = - 8368 831B 8369 836C 836A 836D 836E 83B0 - 8378 83B3 83B4 83A0 83AA 8393 839C 8385 - 837C 83B6 83A9 837D 83B8 837B 8398 839E - 83A8 83BA 83BC 83C1 8401 83E5 83D8 5807 - 8418 840B 83DD 83FD 83D6 841C 8438 8411 - 8406 83D4 83DF 840F 8403 83F8 83F9 83EA - 83C5 83C0 8426 83F0 83E1 845C 8451 845A - 8459 8473 8487 8488 847A 8489 8478 843C - 8446 8469 8476 848C 848E 8431 846D 84C1 - 84CD 84D0 84E6 84BD 84D3 84CA 84BF 84BA - 84E0 84A1 84B9 84B4 8497 84E5 84E3 850C - 750D 8538 84F0 8539 851F 853A -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 5E21 - srcEnd = 5E7E - mappingOffset = 115B - Mapping = - 8556 853B 84FF 84FC 8559 8548 8568 8564 - 855E 857A 77A2 8543 8572 857B 85A4 85A8 - 8587 858F 8579 85AE 859C 8585 85B9 85B7 - 85B0 85D3 85C1 85DC 85FF 8627 8605 8629 - 8616 863C 5EFE 5F08 593C 5941 8037 5955 - 595A 5958 530F 5C22 5C25 5C2C 5C34 624C - 626A 629F 62BB 62CA 62DA 62D7 62EE 6322 - 62F6 6339 634B 6343 63AD 63F6 6371 637A - 638E 63B4 636D 63AC 638A 6369 63AE 63BC - 63F2 63F8 63E0 63FF 63C4 63DE 63CE 6452 - 63C6 63BE 6445 6441 640B 641B 6420 640C - 6426 6421 645E 6484 646D 6496 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 5F21 - srcEnd = 5F7E - mappingOffset = 11B9 - Mapping = - 647A 64B7 64B8 6499 64BA 64C0 64D0 64D7 - 64E4 64E2 6509 6525 652E 5F0B 5FD2 7519 - 5F11 535F 53F1 53FD 53E9 53E8 53FB 5412 - 5416 5406 544B 5452 5453 5454 5456 5443 - 5421 5457 5459 5423 5432 5482 5494 5477 - 5471 5464 549A 549B 5484 5476 5466 549D - 54D0 54AD 54C2 54B4 54D2 54A7 54A6 54D3 - 54D4 5472 54A3 54D5 54BB 54BF 54CC 54D9 - 54DA 54DC 54A9 54AA 54A4 54DD 54CF 54DE - 551B 54E7 5520 54FD 5514 54F3 5522 5523 - 550F 5511 5527 552A 5567 558F 55B5 5549 - 556D 5541 5555 553F 5550 553C -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 6021 - srcEnd = 607E - mappingOffset = 1217 - Mapping = - 5537 5556 5575 5576 5577 5533 5530 555C - 558B 55D2 5583 55B1 55B9 5588 5581 559F - 557E 55D6 5591 557B 55DF 55BD 55BE 5594 - 5599 55EA 55F7 55C9 561F 55D1 55EB 55EC - 55D4 55E6 55DD 55C4 55EF 55E5 55F2 55F3 - 55CC 55CD 55E8 55F5 55E4 8F94 561E 5608 - 560C 5601 5624 5623 55FE 5600 5627 562D - 5658 5639 5657 562C 564D 5662 5659 565C - 564C 5654 5686 5664 5671 566B 567B 567C - 5685 5693 56AF 56D4 56D7 56DD 56E1 56F5 - 56EB 56F9 56FF 5704 570A 5709 571C 5E0F - 5E19 5E14 5E11 5E31 5E3B 5E3C -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 6121 - srcEnd = 617E - mappingOffset = 1275 - Mapping = - 5E37 5E44 5E54 5E5B 5E5E 5E61 5C8C 5C7A - 5C8D 5C90 5C96 5C88 5C98 5C99 5C91 5C9A - 5C9C 5CB5 5CA2 5CBD 5CAC 5CAB 5CB1 5CA3 - 5CC1 5CB7 5CC4 5CD2 5CE4 5CCB 5CE5 5D02 - 5D03 5D27 5D26 5D2E 5D24 5D1E 5D06 5D1B - 5D58 5D3E 5D34 5D3D 5D6C 5D5B 5D6F 5D5D - 5D6B 5D4B 5D4A 5D69 5D74 5D82 5D99 5D9D - 8C73 5DB7 5DC5 5F73 5F77 5F82 5F87 5F89 - 5F8C 5F95 5F99 5F9C 5FA8 5FAD 5FB5 5FBC - 8862 5F61 72AD 72B0 72B4 72B7 72B8 72C3 - 72C1 72CE 72CD 72D2 72E8 72EF 72E9 72F2 - 72F4 72F7 7301 72F3 7303 72FA -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 6221 - srcEnd = 627E - mappingOffset = 12D3 - Mapping = - 72FB 7317 7313 7321 730A 731E 731D 7315 - 7322 7339 7325 732C 7338 7331 7350 734D - 7357 7360 736C 736F 737E 821B 5925 98E7 - 5924 5902 9963 FFFD FFFD FFFD FFFD FFFD - FFFD 9974 9977 997D 9980 9984 9987 998A - 998D 9990 9991 9993 9994 9995 5E80 5E91 - 5E8B 5E96 5EA5 5EA0 5EB9 5EB5 5EBE 5EB3 - 8D53 5ED2 5ED1 5EDB 5EE8 5EEA 81BA 5FC4 - 5FC9 5FD6 5FCF 6003 5FEE 6004 5FE1 5FE4 - 5FFE 6005 6006 5FEA 5FED 5FF8 6019 6035 - 6026 601B 600F 600D 6029 602B 600A 603F - 6021 6078 6079 607B 607A 6042 -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 6321 - srcEnd = 637E - mappingOffset = 1331 - Mapping = - 606A 607D 6096 609A 60AD 609D 6083 6092 - 608C 609B 60EC 60BB 60B1 60DD 60D8 60C6 - 60DA 60B4 6120 6126 6115 6123 60F4 6100 - 610E 612B 614A 6175 61AC 6194 61A7 61B7 - 61D4 61F5 5FDD 96B3 95E9 95EB 95F1 95F3 - 95F5 95F6 95FC 95FE 9603 9604 9606 9608 - 960A 960B 960C 960D 960F 9612 9615 9616 - 9617 9619 961A 4E2C 723F 6215 6C35 6C54 - 6C5C 6C4A 6CA3 6C85 6C90 6C94 6C8C 6C68 - 6C69 6C74 6C76 6C86 6CA9 6CD0 6CD4 6CAD - 6CF7 6CF8 6CF1 6CD7 6CB2 6CE0 6CD6 6CFA - 6CEB 6CEE 6CB1 6CD3 6CEF 6CFE -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 6421 - srcEnd = 647E - mappingOffset = 138F - Mapping = - 6D39 6D27 6D0C 6D43 6D48 6D07 6D04 6D19 - 6D0E 6D2B 6D4D 6D2E 6D35 6D1A 6D4F 6D52 - 6D54 6D33 6D91 6D6F 6D9E 6DA0 6D5E 6D93 - 6D94 6D5C 6D60 6D7C 6D63 6E1A 6DC7 6DC5 - 6DDE 6E0E 6DBF 6DE0 6E11 6DE6 6DDD 6DD9 - 6E16 6DAB 6E0C 6DAE 6E2B 6E6E 6E4E 6E6B - 6EB2 6E5F 6E86 6E53 6E54 6E32 6E25 6E44 - 6EDF 6EB1 6E98 6EE0 6F2D 6EE2 6EA5 6EA7 - 6EBD 6EBB 6EB7 6ED7 6EB4 6ECF 6E8F 6EC2 - 6E9F 6F62 6F46 6F47 6F24 6F15 6EF9 6F2F - 6F36 6F4B 6F74 6F2A 6F09 6F29 6F89 6F8D - 6F8C 6F78 6F72 6F7C 6F7A 6FD1 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 6521 - srcEnd = 657E - mappingOffset = 13ED - Mapping = - 6FC9 6FA7 6FB9 6FB6 6FC2 6FE1 6FEE 6FDE - 6FE0 6FEF 701A 7023 701B 7039 7035 704F - 705E 5B80 5B84 5B95 5B93 5BA5 5BB8 752F - 9A9E 6434 5BE4 5BEE 8930 5BF0 8E47 8B07 - 8FB6 8FD3 8FD5 8FE5 8FEE 8FE4 8FE9 8FE6 - 8FF3 8FE8 9005 9004 900B 9026 9011 900D - 9016 9021 9035 9036 902D 902F 9044 9051 - 9052 9050 9068 9058 9062 905B 66B9 9074 - 907D 9082 9088 9083 908B 5F50 5F57 5F56 - 5F58 5C3B 54AB 5C50 5C59 5B71 5C63 5C66 - 7FBC 5F2A 5F29 5F2D 8274 5F3C 9B3B 5C6E - 5981 5983 598D 59A9 59AA 59A3 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 6621 - srcEnd = 667E - mappingOffset = 144B - Mapping = - 5997 59CA 59AB 599E 59A4 59D2 59B2 59AF - 59D7 59BE 5A05 5A06 59DD 5A08 59E3 59D8 - 59F9 5A0C 5A09 5A32 5A34 5A11 5A23 5A13 - 5A40 5A67 5A4A 5A55 5A3C 5A62 5A75 80EC - 5AAA 5A9B 5A77 5A7A 5ABE 5AEB 5AB2 5AD2 - 5AD4 5AB8 5AE0 5AE3 5AF1 5AD6 5AE6 5AD8 - 5ADC 5B09 5B17 5B16 5B32 5B37 5B40 5C15 - 5C1C 5B5A 5B65 5B73 5B51 5B53 5B62 9A75 - 9A77 9A78 9A7A 9A7F 9A7D 9A80 9A81 9A85 - 9A88 9A8A 9A90 9A92 9A93 9A96 9A98 9A9B - 9A9C 9A9D 9A9F 9AA0 9AA2 9AA3 9AA5 9AA7 - 7E9F 7EA1 7EA3 7EA5 7EA8 7EA9 -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 6721 - srcEnd = 677E - mappingOffset = 14A9 - Mapping = - 7EAD 7EB0 7EBE 7EC0 7EC1 7EC2 7EC9 7ECB - 7ECC 7ED0 7ED4 7ED7 7EDB 7EE0 7EE1 7EE8 - 7EEB 7EEE 7EEF 7EF1 7EF2 7F0D 7EF6 7EFA - 7EFB 7EFE 7F01 7F02 7F03 7F07 7F08 7F0B - 7F0C 7F0F 7F11 7F12 7F17 7F19 7F1C 7F1B - 7F1F FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 7F2A 7F2B 7F2C 7F2D 7F2F 7F30 7F31 7F32 - 7F33 7F35 5E7A 757F 5DDB 753E 9095 738E - 7391 73AE 73A2 739F 73CF 73C2 73D1 73B7 - 73B3 73C0 73C9 73C8 73E5 73D9 987C 740A - 73E9 73E7 73DE 73BA 73F2 740F 742A 745B - 7426 7425 7428 7430 742E 742C -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 6821 - srcEnd = 687E - mappingOffset = 1507 - Mapping = - 741B 741A 7441 745C 7457 7455 7459 7477 - 746D 747E 749C 748E 7480 7481 7487 748B - 749E 74A8 74A9 7490 74A7 74D2 74BA 97EA - 97EB 97EC 674C 6753 675E 6748 6769 67A5 - 6787 676A 6773 6798 67A7 6775 67A8 679E - 67AD 678B 6777 677C 67F0 6809 67D8 680A - 67E9 67B0 680C 67D9 67B5 67DA 67B3 67DD - 6800 67C3 67B8 67E2 680E 67C1 67FD 6832 - 6833 6860 6861 684E 6862 6844 6864 6883 - 681D 6855 6866 6841 6867 6840 683E 684A - 6849 6829 68B5 688F 6874 6877 6893 686B - 68C2 696E 68FC 691F 6920 68F9 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 6921 - srcEnd = 697E - mappingOffset = 1565 - Mapping = - 6924 68F0 690B 6901 6957 68E3 6910 6971 - 6939 6960 6942 695D 6984 696B 6980 6998 - 6978 6934 69CC 6987 6988 69CE 6989 6966 - 6963 6979 699B 69A7 69BB 69AB 69AD 69D4 - 69B1 69C1 69CA 69DF 6995 69E0 698D 69FF - 6A2F 69ED 6A17 6A18 6A65 69F2 6A44 6A3E - 6AA0 6A50 6A5B 6A35 6A8E 6A79 6A3D 6A28 - 6A58 6A7C 6A91 6A90 6AA9 6A97 6AAB 7337 - 7352 6B81 6B82 6B87 6B84 6B92 6B93 6B8D - 6B9A 6B9B 6BA1 6BAA 8F6B 8F6D 8F71 8F72 - 8F73 8F75 8F76 8F78 8F77 8F79 8F7A 8F7C - 8F7E 8F81 8F82 8F84 8F87 8F8B -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 6A21 - srcEnd = 6A7E - mappingOffset = 15C3 - Mapping = - 8F8D 8F8E 8F8F 8F98 8F9A 8ECE 620B 6217 - 621B 621F 6222 6221 6225 6224 622C 81E7 - 74EF 74F4 74FF 750F 7511 7513 6534 65EE - 65EF 65F0 660A 6619 6772 6603 6615 6600 - 7085 66F7 661D 6634 6631 6636 6635 8006 - 665F 6654 6641 664F 6656 6661 6657 6677 - 6684 668C 66A7 669D 66BE 66DB 66DC 66E6 - 66E9 8D32 8D33 8D36 8D3B 8D3D 8D40 8D45 - 8D46 8D48 8D49 8D47 8D4D 8D55 8D59 89C7 - 89CA 89CB 89CC 89CE 89CF 89D0 89D1 726E - 729F 725D 7266 726F 727E 727F 7284 728B - 728D 728F 7292 6308 6332 63B0 -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 6B21 - srcEnd = 6B7E - mappingOffset = 1621 - Mapping = - 643F 64D8 8004 6BEA 6BF3 6BFD 6BF5 6BF9 - 6C05 6C07 6C06 6C0D 6C15 6C18 6C19 6C1A - 6C21 6C29 6C24 6C2A 6C32 6535 6555 656B - 724D 7252 7256 7230 8662 5216 809F 809C - 8093 80BC 670A 80BD 80B1 80AB 80AD 80B4 - 80B7 80E7 80E8 80E9 80EA 80DB 80C2 80C4 - 80D9 80CD 80D7 6710 80DD 80EB 80F1 80F4 - 80ED 810D 810E 80F2 80FC 6715 8112 8C5A - 8136 811E 812C 8118 8132 8148 814C 8153 - 8174 8159 815A 8171 8160 8169 817C 817D - 816D 8167 584D 5AB5 8188 8182 8191 6ED5 - 81A3 81AA 81CC 6726 81CA 81BB -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 6C21 - srcEnd = 6C7E - mappingOffset = 167F - Mapping = - 81C1 81A6 6B24 6B37 6B39 6B43 6B46 6B59 - 98D1 98D2 98D3 98D5 98D9 98DA 6BB3 5F40 - 6BC2 89F3 6590 9F51 6593 65BC 65C6 65C4 - 65C3 65CC 65CE 65D2 65D6 7080 709C 7096 - 709D 70BB 70C0 70B7 70AB 70B1 70E8 70CA - 7110 7113 7116 712F 7131 7173 715C 7168 - 7145 7172 714A 7178 717A 7198 71B3 71B5 - 71A8 71A0 71E0 71D4 71E7 71F9 721D 7228 - 706C 7118 7166 71B9 623E 623D 6243 6248 - 6249 793B 7940 7946 7949 795B 795C 7953 - 795A 7962 7957 7960 796F 7967 797A 7985 - 798A 799A 79A7 79B3 5FD1 5FD0 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 6D21 - srcEnd = 6D7E - mappingOffset = 16DD - Mapping = - 603C 605D 605A 6067 6041 6059 6063 60AB - 6106 610D 615D 61A9 619D 61CB 61D1 6206 - 8080 807F 6C93 6CF6 6DFC 77F6 77F8 7800 - 7809 7817 7818 7811 65AB 782D 781C 781D - 7839 783A 783B 781F 783C 7825 782C 7823 - 7829 784E 786D 7856 7857 7826 7850 7847 - 784C 786A 789B 7893 789A 7887 789C 78A1 - 78A3 78B2 78B9 78A5 78D4 78D9 78C9 78EC - 78F2 7905 78F4 7913 7924 791E 7934 9F9B - 9EF9 9EFB 9EFC 76F1 7704 770D 76F9 7707 - 7708 771A 7722 7719 772D 7726 7735 7738 - 7750 7751 7747 7743 775A 7768 -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 6E21 - srcEnd = 6E7E - mappingOffset = 173B - Mapping = - 7762 7765 777F 778D 777D 7780 778C 7791 - 779F 77A0 77B0 77B5 77BD 753A 7540 754E - 754B 7548 755B 7572 7579 7583 7F58 7F61 - 7F5F 8A48 7F68 7F74 7F71 7F79 7F81 7F7E - 76CD 76E5 8832 9485 9486 9487 948B 948A - 948C 948D 948F 9490 9494 9497 9495 949A - 949B 949C 94A3 94A4 94AB 94AA 94AD 94AC - 94AF 94B0 94B2 94B4 94B6 94B7 94B8 94B9 - 94BA 94BC 94BD 94BF 94C4 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 94D0 94D1 94D2 94D5 - 94D6 94D7 94D9 94D8 94DB 94DE 94DF 94E0 - 94E2 94E4 94E5 94E7 94E8 94EA -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 6F21 - srcEnd = 6F7E - mappingOffset = 1799 - Mapping = - 94E9 94EB 94EE 94EF 94F3 94F4 94F5 94F7 - 94F9 94FC 94FD 94FF 9503 9502 9506 9507 - 9509 950A 950D 950E 950F 9512 9513 9514 - 9515 9516 9518 951B 951D 951E 951F 9522 - 952A 952B 9529 952C 9531 9532 9534 9536 - 9537 9538 953C 953E 953F 9542 9535 9544 - 9545 9546 9549 954C 954E 954F 9552 9553 - 9554 9556 9557 9558 9559 955B 955E 955F - 955D 9561 9562 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 956F 9571 9572 9573 - 953A 77E7 77EC 96C9 79D5 79ED 79E3 79EB - 7A06 5D47 7A03 7A02 7A1E 7A14 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 7021 - srcEnd = 707E - mappingOffset = 17F7 - Mapping = - 7A39 7A37 7A51 9ECF 99A5 7A70 7688 768E - 7693 7699 76A4 74DE 74E0 752C 9E20 9E22 - 9E28 9E29 9E2A 9E2B 9E2C 9E32 9E31 9E36 - 9E38 9E37 9E39 9E3A 9E3E 9E41 9E42 9E44 - 9E46 9E47 9E48 9E49 9E4B 9E4C 9E4E 9E51 - 9E55 9E57 9E5A 9E5B 9E5C 9E5E 9E63 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 9E71 9E6D - 9E73 7592 7594 7596 75A0 759D 75AC 75A3 - 75B3 75B4 75B8 75C4 75B1 75B0 75C3 75C2 - 75D6 75CD 75E3 75E8 75E6 75E4 75EB 75E7 - 7603 75F1 75FC 75FF 7610 7600 7605 760C - 7617 760A 7625 7618 7615 7619 -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 7121 - srcEnd = 717E - mappingOffset = 1855 - Mapping = - 761B 763C 7622 7620 7640 762D 7630 763F - 7635 7643 763E 7633 764D 765E 7654 765C - 7656 766B 766F 7FCA 7AE6 7A78 7A79 7A80 - 7A86 7A88 7A95 7AA6 7AA0 7AAC 7AA8 7AAD - 7AB3 8864 8869 8872 887D 887F 8882 88A2 - 88C6 88B7 88BC 88C9 88E2 88CE 88E3 88E5 - 88F1 891A 88FC 88E8 88FE 88F0 8921 8919 - 8913 891B 890A 8934 892B 8936 8941 8966 - 897B 758B 80E5 76B2 76B4 77DC 8012 8014 - 8016 801C 8020 8022 8025 8026 8027 8029 - 8028 8031 800B 8035 8043 8046 804D 8052 - 8069 8071 8983 9878 9880 9883 -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 7221 - srcEnd = 727E - mappingOffset = 18B3 - Mapping = - 9889 988C 988D 988F 9894 989A 989B 989E - 989F 98A1 98A2 98A5 98A6 864D 8654 866C - 866E 867F 867A 867C 867B 86A8 868D 868B - 86AC 869D 86A7 86A3 86AA 8693 86A9 86B6 - 86C4 86B5 86CE 86B0 86BA 86B1 86AF 86C9 - 86CF 86B4 86E9 86F1 86F2 86ED 86F3 86D0 - 8713 86DE 86F4 86DF 86D8 86D1 8703 8707 - 86F8 8708 870A 870D 8709 8723 873B 871E - 8725 872E 871A 873E 8748 8734 8731 8729 - 8737 873F 8782 8722 877D 877E 877B 8760 - 8770 874C 876E 878B 8753 8763 877C 8764 - 8759 8765 8793 87AF 87A8 87D2 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 7321 - srcEnd = 737E - mappingOffset = 1911 - Mapping = - 87C6 8788 8785 87AD 8797 8783 87AB 87E5 - 87AC 87B5 87B3 87CB 87D3 87BD 87D1 87C0 - 87CA 87DB 87EA 87E0 87EE 8816 8813 87FE - 880A 881B 8821 8839 883C 7F36 7F42 7F44 - 7F45 8210 7AFA 7AFD 7B08 7B03 7B04 7B15 - 7B0A 7B2B 7B0F 7B47 7B38 7B2A 7B19 7B2E - 7B31 7B20 7B25 7B24 7B33 7B3E 7B1E 7B58 - 7B5A 7B45 7B75 7B4C 7B5D 7B60 7B6E 7B7B - 7B62 7B72 7B71 7B90 7BA6 7BA7 7BB8 7BAC - 7B9D 7BA8 7B85 7BAA 7B9C 7BA2 7BAB 7BB4 - 7BD1 7BC1 7BCC 7BDD 7BDA 7BE5 7BE6 7BEA - 7C0C 7BFE 7BFC 7C0F 7C16 7C0B -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 7421 - srcEnd = 747E - mappingOffset = 196F - Mapping = - 7C1F 7C2A 7C26 7C38 7C41 7C40 81FE 8201 - 8202 8204 81EC 8844 8221 8222 8223 822D - 822F 8228 822B 8238 823B 8233 8234 823E - 8244 8249 824B 824F 825A 825F 8268 887E - 8885 8888 88D8 88DF 895E 7F9D 7F9F 7FA7 - 7FAF 7FB0 7FB2 7C7C 6549 7C91 7C9D 7C9C - 7C9E 7CA2 7CB2 7CBC 7CBD 7CC1 7CC7 7CCC - 7CCD 7CC8 7CC5 7CD7 7CE8 826E 66A8 7FBF - 7FCE 7FD5 7FE5 7FE1 7FE6 7FE9 7FEE 7FF3 - 7CF8 7D77 7DA6 7DAE 7E47 7E9B 9EB8 9EB4 - 8D73 8D84 8D94 8D91 8DB1 8D67 8D6D 8C47 - 8C49 914A 9150 914E 914F 9164 -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 7521 - srcEnd = 757E - mappingOffset = 19CD - Mapping = - 9162 9161 9170 9169 916F 917D 917E 9172 - 9174 9179 918C 9185 9190 918D 9191 91A2 - 91A3 91AA 91AD 91AE 91AF 91B5 91B4 91BA - 8C55 9E7E 8DB8 8DEB 8E05 8E59 8E69 8DB5 - 8DBF 8DBC 8DBA 8DC4 8DD6 8DD7 8DDA 8DDE - 8DCE 8DCF 8DDB 8DC6 8DEC 8DF7 8DF8 8DE3 - 8DF9 8DFB 8DE4 8E09 8DFD 8E14 8E1D 8E1F - 8E2C 8E2E 8E23 8E2F 8E3A 8E40 8E39 8E35 - 8E3D 8E31 8E49 8E41 8E42 8E51 8E52 8E4A - 8E70 8E76 8E7C 8E6F 8E74 8E85 8E8F 8E94 - 8E90 8E9C 8E9E 8C78 8C82 8C8A 8C85 8C98 - 8C94 659B 89D6 89DE 89DA 89DC -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 7621 - srcEnd = 767E - mappingOffset = 1A2B - Mapping = - 89E5 89EB 89EF 8A3E 8B26 9753 96E9 96F3 - 96EF 9706 9701 9708 970F 970E 972A 972D - 9730 973E 9F80 9F83 FFFD FFFD FFFD FFFD - FFFD FFFD 9F8C 9EFE 9F0B 9F0D 96B9 96BC - 96BD 96CE 96D2 77BF 96E0 928E 92AE 92C8 - 933E 936A 93CA 938F 943E 946B 9C7F 9C82 - 9C85 9C86 9C87 9C88 7A23 9C8B 9C8E 9C90 - 9C91 9C92 9C94 9C95 9C9A 9C9B FFFD FFFD - FFFD FFFD FFFD FFFD 9CA5 9CA6 9CA7 9CA8 - 9CA9 9CAB 9CAD 9CAE FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 9CBA 9CBB 9CBC 9CBD - 9CC4 9CC5 9CC6 9CC7 9CCA 9CCB -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 7721 - srcEnd = 777E - mappingOffset = 1A89 - Mapping = - 9CCC 9CCD 9CCE 9CCF 9CD0 9CD3 9CD4 9CD5 - 9CD7 9CD8 9CD9 9CDC 9CDD 9CDF 9CE2 977C - 9785 9791 9792 9794 97AF 97AB 97A3 97B2 - 97B4 9AB1 9AB0 9AB7 9E58 9AB6 9ABA 9ABC - 9AC1 9AC0 9AC5 9AC2 9ACB 9ACC 9AD1 9B45 - 9B43 9B47 9B49 9B48 9B4D 9B51 98E8 990D - 992E 9955 9954 9ADF 9AE1 9AE6 9AEF 9AEB - 9AFB 9AED 9AF9 9B08 9B0F 9B13 9B1F 9B23 - 9EBD 9EBE 7E3B 9E82 9E87 9E88 9E8B 9E92 - 93D6 9E9D 9E9F 9EDB 9EDC 9EDD 9EE0 9EDF - 9EE2 9EE9 9EE7 9EE5 9EEA 9EEF 9F22 9F2C - 9F2F 9F39 9F37 9F3D 9F3E 9F44 -End of Item 0068 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0069, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x001F, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x015A, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x001B */ -/* Total of Format 1 : 0x004B */ -/* Total of Format 2 : 0x0003 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x2221, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x001F Start of MapCell Array */ -/* 0000 */ 0x2134, 0x213B, 0x3008, -/* 0001 */ 0x2231, 0x2244, 0x2488, -/* 0002 */ 0x2245, 0x2258, 0x2474, -/* 0003 */ 0x2259, 0x2262, 0x2460, -/* 0004 */ 0x2265, 0x226E, 0x3220, -/* 0005 */ 0x2271, 0x227C, 0x2160, -/* 0006 */ 0x2325, 0x237D, 0xFF05, -/* 0007 */ 0x2421, 0x2473, 0x3041, -/* 0008 */ 0x2521, 0x2576, 0x30A1, -/* 0009 */ 0x2621, 0x2631, 0x0391, -/* 000A */ 0x2632, 0x2638, 0x03A3, -/* 000B */ 0x2641, 0x2651, 0x03B1, -/* 000C */ 0x2652, 0x2658, 0x03C3, -/* 000D */ 0x2721, 0x2726, 0x0410, -/* 000E */ 0x2728, 0x2741, 0x0416, -/* 000F */ 0x2751, 0x2756, 0x0430, -/* 0010 */ 0x2758, 0x2771, 0x0436, -/* 0011 */ 0x2845, 0x2869, 0x3105, -/* 0012 */ 0x2924, 0x296F, 0x2500, -/* 0013 */ 0x623C, 0x6241, 0x9967, -/* 0014 */ 0x674A, 0x6750, 0x7F21, -/* 0015 */ 0x6E66, 0x6E6C, 0x94C8, -/* 0016 */ 0x6F64, 0x6F6C, 0x9564, -/* 0017 */ 0x7050, 0x7056, 0x9E66, -/* 0018 */ 0x7635, 0x763A, 0x9F85, -/* 0019 */ 0x765F, 0x7664, 0x9C9E, -/* 001A */ 0x766D, 0x7674, 0x9CB0, -/* 001B */ 0x2121, 0x217E, 0x0000, -/* 001C */ 0x2321, 0x2324, 0x005E, -/* 001D */ 0x237E, 0x0000, 0xFFE3, -/* 001E */ 0x2727, 0x0000, 0x0401, -/* 001F */ 0x2757, 0x0000, 0x0451, -/* 0020 */ 0x2821, 0x283A, 0x0062, -/* 0021 */ 0x3021, 0x307E, 0x007C, -/* 0022 */ 0x3121, 0x317E, 0x00DA, -/* 0023 */ 0x3221, 0x327E, 0x0138, -/* 0024 */ 0x3321, 0x337E, 0x0196, -/* 0025 */ 0x3421, 0x347E, 0x01F4, -/* 0026 */ 0x3521, 0x357E, 0x0252, -/* 0027 */ 0x3621, 0x367E, 0x02B0, -/* 0028 */ 0x3721, 0x377E, 0x030E, -/* 0029 */ 0x3821, 0x387E, 0x036C, -/* 002A */ 0x3921, 0x397E, 0x03CA, -/* 002B */ 0x3A21, 0x3A7E, 0x0428, -/* 002C */ 0x3B21, 0x3B7E, 0x0486, -/* 002D */ 0x3C21, 0x3C7E, 0x04E4, -/* 002E */ 0x3D21, 0x3D7E, 0x0542, -/* 002F */ 0x3E21, 0x3E7E, 0x05A0, -/* 0030 */ 0x3F21, 0x3F7E, 0x05FE, -/* 0031 */ 0x4021, 0x407E, 0x065C, -/* 0032 */ 0x4121, 0x417E, 0x06BA, -/* 0033 */ 0x4221, 0x427E, 0x0718, -/* 0034 */ 0x4321, 0x437E, 0x0776, -/* 0035 */ 0x4421, 0x447E, 0x07D4, -/* 0036 */ 0x4521, 0x457E, 0x0832, -/* 0037 */ 0x4621, 0x467E, 0x0890, -/* 0038 */ 0x4721, 0x477E, 0x08EE, -/* 0039 */ 0x4821, 0x487E, 0x094C, -/* 003A */ 0x4921, 0x497E, 0x09AA, -/* 003B */ 0x4A21, 0x4A7E, 0x0A08, -/* 003C */ 0x4B21, 0x4B7E, 0x0A66, -/* 003D */ 0x4C21, 0x4C7E, 0x0AC4, -/* 003E */ 0x4D21, 0x4D7E, 0x0B22, -/* 003F */ 0x4E21, 0x4E7E, 0x0B80, -/* 0040 */ 0x4F21, 0x4F7E, 0x0BDE, -/* 0041 */ 0x5021, 0x507E, 0x0C3C, -/* 0042 */ 0x5121, 0x517E, 0x0C9A, -/* 0043 */ 0x5221, 0x527E, 0x0CF8, -/* 0044 */ 0x5321, 0x537E, 0x0D56, -/* 0045 */ 0x5421, 0x547E, 0x0DB4, -/* 0046 */ 0x5521, 0x557E, 0x0E12, -/* 0047 */ 0x5621, 0x567E, 0x0E70, -/* 0048 */ 0x5721, 0x5779, 0x0ECE, -/* 0049 */ 0x5821, 0x587E, 0x0F27, -/* 004A */ 0x5921, 0x597E, 0x0F85, -/* 004B */ 0x5A21, 0x5A7E, 0x0FE3, -/* 004C */ 0x5B21, 0x5B7E, 0x1041, -/* 004D */ 0x5C21, 0x5C7E, 0x109F, -/* 004E */ 0x5D21, 0x5D7E, 0x10FD, -/* 004F */ 0x5E21, 0x5E7E, 0x115B, -/* 0050 */ 0x5F21, 0x5F7E, 0x11B9, -/* 0051 */ 0x6021, 0x607E, 0x1217, -/* 0052 */ 0x6121, 0x617E, 0x1275, -/* 0053 */ 0x6221, 0x627E, 0x12D3, -/* 0054 */ 0x6321, 0x637E, 0x1331, -/* 0055 */ 0x6421, 0x647E, 0x138F, -/* 0056 */ 0x6521, 0x657E, 0x13ED, -/* 0057 */ 0x6621, 0x667E, 0x144B, -/* 0058 */ 0x6721, 0x677E, 0x14A9, -/* 0059 */ 0x6821, 0x687E, 0x1507, -/* 005A */ 0x6921, 0x697E, 0x1565, -/* 005B */ 0x6A21, 0x6A7E, 0x15C3, -/* 005C */ 0x6B21, 0x6B7E, 0x1621, -/* 005D */ 0x6C21, 0x6C7E, 0x167F, -/* 005E */ 0x6D21, 0x6D7E, 0x16DD, -/* 005F */ 0x6E21, 0x6E7E, 0x173B, -/* 0060 */ 0x6F21, 0x6F7E, 0x1799, -/* 0061 */ 0x7021, 0x707E, 0x17F7, -/* 0062 */ 0x7121, 0x717E, 0x1855, -/* 0063 */ 0x7221, 0x727E, 0x18B3, -/* 0064 */ 0x7321, 0x737E, 0x1911, -/* 0065 */ 0x7421, 0x747E, 0x196F, -/* 0066 */ 0x7521, 0x757E, 0x19CD, -/* 0067 */ 0x7621, 0x767E, 0x1A2B, -/* 0068 */ 0x7721, 0x777E, 0x1A89, -/*-------------------------------------------------------*/ -/* Offset=0x015A Start of MappingTable */ - -/* 0000 */ 0x3000, 0x3001, 0x3002, 0x30FB, 0x02C9, 0x02C7, 0x00A8, 0x3003, -/* 0008 */ 0x3005, 0x2015, 0xFF5E, 0x2225, 0x2026, 0x2018, 0x2019, 0x201C, -/* 0010 */ 0x201D, 0x3014, 0x3015, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x3016, 0x3017, 0x3010, 0x3011, 0x00B1, -/* 0020 */ 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, 0x222A, -/* 0028 */ 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312, -/* 0030 */ 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D, -/* 0038 */ 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234, -/* 0040 */ 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4, -/* 0048 */ 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB, -/* 0050 */ 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, -/* 0058 */ 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0xFF01, 0xFF02, -/* 0060 */ 0xFF03, 0xFFE5, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, -/* 0068 */ 0x011B, 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, -/* 0070 */ 0x01D2, 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, -/* 0078 */ 0x01DA, 0x01DC, 0x00FC, 0x00EA, 0x554A, 0x963F, 0x57C3, 0x6328, -/* 0080 */ 0x54CE, 0x5509, 0x54C0, 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, -/* 0088 */ 0x788D, 0x7231, 0x9698, 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, -/* 0090 */ 0x6697, 0x5CB8, 0x80FA, 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, -/* 0098 */ 0x6556, 0x71AC, 0x7FF1, 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, -/* 00A0 */ 0x82AD, 0x634C, 0x6252, 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, -/* 00A8 */ 0x5DF4, 0x62D4, 0x8DCB, 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, -/* 00B0 */ 0x7F62, 0x7238, 0x767D, 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, -/* 00B8 */ 0x62DC, 0x7A17, 0x6591, 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, -/* 00C0 */ 0x677F, 0x7248, 0x626E, 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, -/* 00C8 */ 0x7ECA, 0x90A6, 0x5E2E, 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, -/* 00D0 */ 0x78C5, 0x868C, 0x9551, 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, -/* 00D8 */ 0x8912, 0x5265, 0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, -/* 00E0 */ 0x62B1, 0x62A5, 0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, -/* 00E8 */ 0x60B2, 0x5351, 0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, -/* 00F0 */ 0x72C8, 0x5907, 0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, -/* 00F8 */ 0x7B28, 0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, -/* 0100 */ 0x9F3B, 0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, -/* 0108 */ 0x6BD5, 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, -/* 0110 */ 0x5F0A, 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, -/* 0118 */ 0x8FB9, 0x7F16, 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, -/* 0120 */ 0x8FA9, 0x8FAB, 0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, -/* 0128 */ 0x618B, 0x522B, 0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, -/* 0130 */ 0x6448, 0x5175, 0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3, -/* 0138 */ 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, 0x6CE2, -/* 0140 */ 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, 0x8236, -/* 0148 */ 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA, -/* 0150 */ 0x8865, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, -/* 0158 */ 0x64E6, 0x731C, 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 0x8E29, -/* 0160 */ 0x91C7, 0x5F69, 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 0x6B8B, -/* 0168 */ 0x60ED, 0x60E8, 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 0x85CF, -/* 0170 */ 0x64CD, 0x7CD9, 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56, 0x4FA7, -/* 0178 */ 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 0x8336, -/* 0180 */ 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, 0x62C6, -/* 0188 */ 0x67F4, 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, 0x7F20, -/* 0190 */ 0x94F2, 0x4EA7, 0x9610, 0x98A4, 0x660C, 0x7316, 0x573A, 0x5C1D, -/* 0198 */ 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, 0x655E, 0x7545, 0x5531, -/* 01A0 */ 0x5021, 0x8D85, 0x6284, 0x949E, 0x671D, 0x5632, 0x6F6E, 0x5DE2, -/* 01A8 */ 0x5435, 0x7092, 0x8F66, 0x626F, 0x64A4, 0x63A3, 0x5F7B, 0x6F88, -/* 01B0 */ 0x90F4, 0x81E3, 0x8FB0, 0x5C18, 0x6668, 0x5FF1, 0x6C89, 0x9648, -/* 01B8 */ 0x8D81, 0x886C, 0x6491, 0x79F0, 0x57CE, 0x6A59, 0x6210, 0x5448, -/* 01C0 */ 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA, 0x627F, 0x901E, 0x9A8B, -/* 01C8 */ 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, 0x6C60, 0x8FDF, 0x5F1B, -/* 01D0 */ 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A, 0x8D64, 0x7FC5, 0x65A5, -/* 01D8 */ 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, 0x5BA0, 0x62BD, 0x916C, -/* 01E0 */ 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, 0x4EC7, 0x7EF8, 0x7785, -/* 01E8 */ 0x4E11, 0x81ED, 0x521D, 0x51FA, 0x6A71, 0x53A8, 0x8E87, 0x9504, -/* 01F0 */ 0x96CF, 0x6EC1, 0x9664, 0x695A, 0x7840, 0x50A8, 0x77D7, 0x6410, -/* 01F8 */ 0x89E6, 0x5904, 0x63E3, 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, -/* 0200 */ 0x5598, 0x4E32, 0x75AE, 0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, -/* 0208 */ 0x5439, 0x708A, 0x6376, 0x9524, 0x5782, 0x6625, 0x693F, 0x9187, -/* 0210 */ 0x5507, 0x6DF3, 0x7EAF, 0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, -/* 0218 */ 0x78C1, 0x96CC, 0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, -/* 0220 */ 0x8D50, 0x6B21, 0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, -/* 0228 */ 0x51D1, 0x7C97, 0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, -/* 0230 */ 0x6467, 0x5D14, 0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, -/* 0238 */ 0x6751, 0x5B58, 0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, -/* 0240 */ 0x9519, 0x642D, 0x8FBE, 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, -/* 0248 */ 0x6B79, 0x50A3, 0x6234, 0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, -/* 0250 */ 0x5F85, 0x902E, 0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, -/* 0258 */ 0x63B8, 0x80C6, 0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, -/* 0260 */ 0x5F39, 0x86CB, 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, -/* 0268 */ 0x6363, 0x8E48, 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, -/* 0270 */ 0x60BC, 0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, -/* 0278 */ 0x767B, 0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, -/* 0280 */ 0x8FEA, 0x654C, 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, -/* 0288 */ 0x5E95, 0x5730, 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, -/* 0290 */ 0x98A0, 0x6382, 0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, -/* 0298 */ 0x7535, 0x4F43, 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, -/* 02A0 */ 0x7889, 0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, -/* 02A8 */ 0x8C03, 0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0, -/* 02B0 */ 0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A, -/* 02B8 */ 0x8BA2, 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, -/* 02C0 */ 0x4F97, 0x606B, 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, -/* 02C8 */ 0x8C46, 0x9017, 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, -/* 02D0 */ 0x8BFB, 0x5835, 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A, 0x5EA6, -/* 02D8 */ 0x6E21, 0x5992, 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD, 0x7F0E, -/* 02E0 */ 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72, 0x6566, -/* 02E8 */ 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6, 0x591A, -/* 02F0 */ 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 0x60F0, -/* 02F8 */ 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25, -/* 0300 */ 0x6076, 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, -/* 0308 */ 0x513F, 0x8033, 0x5C14, 0x9975, 0x6D31, 0x4E8C, 0x8D30, 0x53D1, -/* 0310 */ 0x7F5A, 0x7B4F, 0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0, 0x85E9, -/* 0318 */ 0x5E06, 0x756A, 0x7FFB, 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1, -/* 0320 */ 0x70E6, 0x53CD, 0x8FD4, 0x8303, 0x8D29, 0x72AF, 0x996D, 0x6CDB, -/* 0328 */ 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F, 0x9632, 0x59A8, 0x4EFF, -/* 0330 */ 0x8BBF, 0x7EBA, 0x653E, 0x83F2, 0x975E, 0x5561, 0x98DE, 0x80A5, -/* 0338 */ 0x532A, 0x8BFD, 0x5420, 0x80BA, 0x5E9F, 0x6CB8, 0x8D39, 0x82AC, -/* 0340 */ 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7EB7, 0x575F, 0x711A, 0x6C7E, -/* 0348 */ 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124, 0x7CAA, 0x4E30, 0x5C01, -/* 0350 */ 0x67AB, 0x8702, 0x5CF0, 0x950B, 0x98CE, 0x75AF, 0x70FD, 0x9022, -/* 0358 */ 0x51AF, 0x7F1D, 0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426, 0x592B, -/* 0360 */ 0x6577, 0x80A4, 0x5B75, 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F, -/* 0368 */ 0x7B26, 0x4F0F, 0x4FD8, 0x670D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, -/* 0370 */ 0x5F17, 0x752B, 0x629A, 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, -/* 0378 */ 0x8151, 0x5E9C, 0x8150, 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, -/* 0380 */ 0x5085, 0x4ED8, 0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, -/* 0388 */ 0x9644, 0x5987, 0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, -/* 0390 */ 0x6982, 0x9499, 0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, -/* 0398 */ 0x7AFF, 0x809D, 0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, -/* 03A0 */ 0x521A, 0x94A2, 0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, -/* 03A8 */ 0x7BD9, 0x768B, 0x9AD8, 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, -/* 03B0 */ 0x7A3F, 0x544A, 0x54E5, 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, -/* 03B8 */ 0x7599, 0x5272, 0x9769, 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, -/* 03C0 */ 0x94EC, 0x4E2A, 0x5404, 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, -/* 03C8 */ 0x5E9A, 0x7FB9, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, -/* 03D0 */ 0x606D, 0x9F9A, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, -/* 03D8 */ 0x6C5E, 0x62F1, 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, -/* 03E0 */ 0x72D7, 0x57A2, 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, -/* 03E8 */ 0x7B8D, 0x4F30, 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, -/* 03F0 */ 0x9AA8, 0x8C37, 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, -/* 03F8 */ 0x74DC, 0x5250, 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, -/* 0400 */ 0x68FA, 0x5173, 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, -/* 0408 */ 0x60EF, 0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, -/* 0410 */ 0x572D, 0x7845, 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, -/* 0418 */ 0x7678, 0x6842, 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, -/* 0420 */ 0x68CD, 0x9505, 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, -/* 0428 */ 0x9AB8, 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 0x9163, -/* 0430 */ 0x61A8, 0x90AF, 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 0x558A, -/* 0438 */ 0x7F55, 0x7FF0, 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, 0x710A, -/* 0440 */ 0x6C57, 0x6C49, 0x592F, 0x676D, 0x822A, 0x58D5, 0x568E, 0x8C6A, -/* 0448 */ 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475, 0x559D, -/* 0450 */ 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408, 0x76D2, -/* 0458 */ 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, 0x8D3A, -/* 0460 */ 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 0x4EA8, -/* 0468 */ 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 0x9E3F, -/* 0470 */ 0x6D2A, 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 0x543C, -/* 0478 */ 0x539A, 0x5019, 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 0x58F6, -/* 0480 */ 0x846B, 0x80E1, 0x8774, 0x72D0, 0x7CCA, 0x6E56, 0x5F27, 0x864E, -/* 0488 */ 0x552C, 0x62A4, 0x4E92, 0x6CAA, 0x6237, 0x82B1, 0x54D7, 0x534E, -/* 0490 */ 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316, 0x8BDD, 0x69D0, 0x5F8A, -/* 0498 */ 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF, 0x6853, 0x8FD8, 0x7F13, -/* 04A0 */ 0x6362, 0x60A3, 0x5524, 0x75EA, 0x8C62, 0x7115, 0x6DA3, 0x5BA6, -/* 04A8 */ 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, -/* 04B0 */ 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, -/* 04B8 */ 0x6325, 0x8F89, 0x5FBD, 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, -/* 04C0 */ 0x6167, 0x5349, 0x60E0, 0x6666, 0x8D3F, 0x79FD, 0x4F1A, 0x70E9, -/* 04C8 */ 0x6C47, 0x8BB3, 0x8BF2, 0x7ED8, 0x8364, 0x660F, 0x5A5A, 0x9B42, -/* 04D0 */ 0x6D51, 0x6DF7, 0x8C41, 0x6D3B, 0x4F19, 0x706B, 0x83B7, 0x6216, -/* 04D8 */ 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB, 0x573E, 0x57FA, 0x673A, -/* 04E0 */ 0x7578, 0x7A3D, 0x79EF, 0x7B95, 0x808C, 0x9965, 0x8FF9, 0x6FC0, -/* 04E8 */ 0x8BA5, 0x9E21, 0x59EC, 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, -/* 04F0 */ 0x8F91, 0x7C4D, 0x96C6, 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, -/* 04F8 */ 0x5AC9, 0x7EA7, 0x6324, 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, -/* 0500 */ 0x5180, 0x5B63, 0x4F0E, 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, -/* 0508 */ 0x5BC2, 0x8BA1, 0x8BB0, 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, -/* 0510 */ 0x7EAA, 0x5609, 0x67B7, 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, -/* 0518 */ 0x988A, 0x8D3E, 0x7532, 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, -/* 0520 */ 0x9A7E, 0x5AC1, 0x6B7C, 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, -/* 0528 */ 0x714E, 0x517C, 0x80A9, 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, -/* 0530 */ 0x67EC, 0x78B1, 0x7877, 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, -/* 0538 */ 0x51CF, 0x8350, 0x69DB, 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, -/* 0540 */ 0x7BAD, 0x4EF6, 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, -/* 0548 */ 0x6DA7, 0x5EFA, 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, -/* 0550 */ 0x848B, 0x6868, 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, -/* 0558 */ 0x6912, 0x7901, 0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, -/* 0560 */ 0x5A07, 0x56BC, 0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, -/* 0568 */ 0x89D2, 0x997A, 0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, -/* 0570 */ 0x8F83, 0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, -/* 0578 */ 0x9636, 0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, -/* 0580 */ 0x7AED, 0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, -/* 0588 */ 0x754C, 0x501F, 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, -/* 0590 */ 0x65A4, 0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, -/* 0598 */ 0x8C28, 0x8FDB, 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, -/* 05A0 */ 0x5C3D, 0x52B2, 0x8346, 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, -/* 05A8 */ 0x4EAC, 0x60CA, 0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, 0x666F, -/* 05B0 */ 0x9888, 0x9759, 0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9, 0x9756, -/* 05B8 */ 0x7ADF, 0x7ADE, 0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76, 0x7EA0, -/* 05C0 */ 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, 0x6551, -/* 05C8 */ 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8, -/* 05D0 */ 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, 0x77E9, -/* 05D8 */ 0x4E3E, 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, 0x8DDD, -/* 05E0 */ 0x8E1E, 0x952F, 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350, -/* 05E8 */ 0x9E43, 0x5A1F, 0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, -/* 05F0 */ 0x6289, 0x6398, 0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, -/* 05F8 */ 0x5747, 0x83CC, 0x94A7, 0x519B, 0x541B, 0x5CFB, 0x4FCA, 0x7AE3, -/* 0600 */ 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, 0x5361, 0x54AF, 0x5F00, -/* 0608 */ 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8, 0x574E, -/* 0610 */ 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, -/* 0618 */ 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, -/* 0620 */ 0x68F5, 0x78D5, 0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, -/* 0628 */ 0x514B, 0x523B, 0x5BA2, 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, -/* 0630 */ 0x5751, 0x542D, 0x7A7A, 0x6050, 0x5B54, 0x63A7, 0x62A0, 0x53E3, -/* 0638 */ 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F, 0x82E6, 0x9177, 0x5E93, -/* 0640 */ 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8, 0x80EF, 0x5757, 0x7B77, -/* 0648 */ 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, 0x7B50, 0x72C2, 0x6846, -/* 0650 */ 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF, 0x7AA5, -/* 0658 */ 0x8475, 0x594E, 0x9B41, 0x5080, 0x9988, 0x6127, 0x6E83, 0x5764, -/* 0660 */ 0x6606, 0x6346, 0x56F0, 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, -/* 0668 */ 0x62C9, 0x5587, 0x8721, 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, -/* 0670 */ 0x8D56, 0x84DD, 0x5A6A, 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, -/* 0678 */ 0x6F9C, 0x8C30, 0x63FD, 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, -/* 0680 */ 0x7405, 0x6994, 0x72FC, 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, -/* 0688 */ 0x52B3, 0x7262, 0x8001, 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, -/* 0690 */ 0x52D2, 0x4E50, 0x96F7, 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, -/* 0698 */ 0x5792, 0x64C2, 0x808B, 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, -/* 06A0 */ 0x5398, 0x68A8, 0x7281, 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, -/* 06A8 */ 0x7406, 0x674E, 0x91CC, 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, -/* 06B0 */ 0x6817, 0x4E3D, 0x5389, 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, -/* 06B8 */ 0x4F8B, 0x4FD0, 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, -/* 06C0 */ 0x7483, 0x54E9, 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, -/* 06C8 */ 0x601C, 0x6D9F, 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, -/* 06D0 */ 0x7EC3, 0x7CAE, 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, -/* 06D8 */ 0x91CF, 0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, -/* 06E0 */ 0x71CE, 0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, -/* 06E8 */ 0x6599, 0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, -/* 06F0 */ 0x78F7, 0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, -/* 06F8 */ 0x541D, 0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, -/* 0700 */ 0x7F9A, 0x51CC, 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, -/* 0708 */ 0x6E9C, 0x7409, 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, -/* 0710 */ 0x6D41, 0x67F3, 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF, -/* 0718 */ 0x9686, 0x5784, 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, 0x7BD3, -/* 0720 */ 0x6F0F, 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, 0x63B3, -/* 0728 */ 0x5364, 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, 0x8D42, -/* 0730 */ 0x9E7F, 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415, -/* 0738 */ 0x94DD, 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 0x6C2F, -/* 0740 */ 0x5F8B, 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 0x6EE6, -/* 0748 */ 0x5375, 0x4E71, 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 0x4ED1, -/* 0750 */ 0x6CA6, 0x7EB6, 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B, 0x9523, -/* 0758 */ 0x7BA9, 0x9AA1, 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, 0x5988, -/* 0760 */ 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, 0x5417, -/* 0768 */ 0x57CB, 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, 0x9992, -/* 0770 */ 0x86EE, 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B, 0x8C29, 0x8292, -/* 0778 */ 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, 0x732B, 0x8305, 0x951A, -/* 0780 */ 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, 0x5192, 0x5E3D, 0x8C8C, -/* 0788 */ 0x8D38, 0x4E48, 0x73AB, 0x679A, 0x6885, 0x9176, 0x9709, 0x7164, -/* 0790 */ 0x6CA1, 0x7709, 0x5A92, 0x9541, 0x6BCF, 0x7F8E, 0x6627, 0x5BD0, -/* 0798 */ 0x59B9, 0x5A9A, 0x95E8, 0x95F7, 0x4EEC, 0x840C, 0x8499, 0x6AAC, -/* 07A0 */ 0x76DF, 0x9530, 0x731B, 0x68A6, 0x5B5F, 0x772F, 0x919A, 0x9761, -/* 07A8 */ 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73, 0x79D8, 0x89C5, 0x6CCC, -/* 07B0 */ 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, 0x7EF5, 0x5195, 0x514D, -/* 07B8 */ 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, 0x63CF, 0x7784, 0x85D0, -/* 07C0 */ 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, 0x706D, 0x6C11, 0x62BF, -/* 07C8 */ 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, 0x879F, 0x9E23, 0x94ED, -/* 07D0 */ 0x540D, 0x547D, 0x8C2C, 0x6478, 0x6479, 0x8611, 0x6A21, 0x819C, -/* 07D8 */ 0x78E8, 0x6469, 0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, -/* 07E0 */ 0x6CAB, 0x6F20, 0x5BDE, 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, -/* 07E8 */ 0x7261, 0x4EA9, 0x59C6, 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, -/* 07F0 */ 0x6155, 0x6728, 0x76EE, 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, -/* 07F8 */ 0x5450, 0x94A0, 0x90A3, 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, -/* 0800 */ 0x8010, 0x5948, 0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, -/* 0808 */ 0x607C, 0x95F9, 0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, -/* 0810 */ 0x59AE, 0x9713, 0x502A, 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, -/* 0818 */ 0x817B, 0x9006, 0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, -/* 0820 */ 0x637B, 0x5FF5, 0x5A18, 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, -/* 0828 */ 0x5B7D, 0x556E, 0x954A, 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, -/* 0830 */ 0x51DD, 0x5B81, 0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, -/* 0838 */ 0x8113, 0x6D53, 0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, -/* 0840 */ 0x6696, 0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, -/* 0848 */ 0x6B27, 0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, -/* 0850 */ 0x8DB4, 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, -/* 0858 */ 0x5F98, 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, -/* 0860 */ 0x7554, 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, -/* 0868 */ 0x629B, 0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, -/* 0870 */ 0x80DA, 0x57F9, 0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, -/* 0878 */ 0x55B7, 0x76C6, 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, -/* 0880 */ 0x68DA, 0x787C, 0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, -/* 0888 */ 0x576F, 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7, -/* 0890 */ 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, 0x5C41, -/* 0898 */ 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 0x74E2, -/* 08A0 */ 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 0x8058, -/* 08A8 */ 0x4E52, 0x576A, 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, 0x8BC4, -/* 08B0 */ 0x5C4F, 0x5761, 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, 0x8FEB, -/* 08B8 */ 0x7C95, 0x5256, 0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461, 0x83E9, -/* 08C0 */ 0x84B2, 0x57D4, 0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31, 0x66DD, -/* 08C8 */ 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03, 0x51C4, -/* 08D0 */ 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, 0x7566, -/* 08D8 */ 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, 0x8D77, -/* 08E0 */ 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 0x6C14, -/* 08E8 */ 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, 0x6390, 0x6070, 0x6D3D, -/* 08F0 */ 0x7275, 0x6266, 0x948E, 0x94C5, 0x5343, 0x8FC1, 0x7B7E, 0x4EDF, -/* 08F8 */ 0x8C26, 0x4E7E, 0x9ED4, 0x94B1, 0x94B3, 0x524D, 0x6F5C, 0x9063, -/* 0900 */ 0x6D45, 0x8C34, 0x5811, 0x5D4C, 0x6B20, 0x6B49, 0x67AA, 0x545B, -/* 0908 */ 0x8154, 0x7F8C, 0x5899, 0x8537, 0x5F3A, 0x62A2, 0x6A47, 0x9539, -/* 0910 */ 0x6572, 0x6084, 0x6865, 0x77A7, 0x4E54, 0x4FA8, 0x5DE7, 0x9798, -/* 0918 */ 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, 0x7A8D, 0x5207, 0x8304, 0x4E14, -/* 0920 */ 0x602F, 0x7A83, 0x94A6, 0x4FB5, 0x4EB2, 0x79E6, 0x7434, 0x52E4, -/* 0928 */ 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81, 0x9752, 0x8F7B, 0x6C22, -/* 0930 */ 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674, 0x6C30, 0x60C5, 0x9877, -/* 0938 */ 0x8BF7, 0x5E86, 0x743C, 0x7A77, 0x79CB, 0x4E18, 0x90B1, 0x7403, -/* 0940 */ 0x6C42, 0x56DA, 0x914B, 0x6CC5, 0x8D8B, 0x533A, 0x86C6, 0x66F2, -/* 0948 */ 0x8EAF, 0x5C48, 0x9A71, 0x6E20, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, -/* 0950 */ 0x53BB, 0x5708, 0x98A7, 0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, -/* 0958 */ 0x62F3, 0x72AC, 0x5238, 0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, -/* 0960 */ 0x9E4A, 0x69B7, 0x786E, 0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, -/* 0968 */ 0x5189, 0x67D3, 0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, -/* 0970 */ 0x6270, 0x7ED5, 0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, -/* 0978 */ 0x97E7, 0x4EFB, 0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, -/* 0980 */ 0x65E5, 0x620E, 0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, -/* 0988 */ 0x5BB9, 0x7ED2, 0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, -/* 0990 */ 0x5112, 0x5B7A, 0x5982, 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, -/* 0998 */ 0x8F6F, 0x962E, 0x854A, 0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, -/* 09A0 */ 0x5F31, 0x6492, 0x6D12, 0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, -/* 09A8 */ 0x4E09, 0x53C1, 0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, -/* 09B0 */ 0x9A9A, 0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, -/* 09B8 */ 0x838E, 0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, -/* 09C0 */ 0x715E, 0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, -/* 09C8 */ 0x717D, 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, -/* 09D0 */ 0x6C55, 0x6247, 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, -/* 09D8 */ 0x4E0A, 0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, -/* 09E0 */ 0x52FA, 0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, -/* 09E8 */ 0x86C7, 0x820C, 0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, -/* 09F0 */ 0x793E, 0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, -/* 09F8 */ 0x5A20, 0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, -/* 0A00 */ 0x614E, 0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3, -/* 0A08 */ 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 0x72EE, -/* 0A10 */ 0x65BD, 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 0x62FE, -/* 0A18 */ 0x65F6, 0x4EC0, 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 0x77E2, -/* 0A20 */ 0x4F7F, 0x5C4E, 0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB, 0x4E16, -/* 0A28 */ 0x67FF, 0x4E8B, 0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F, 0x55DC, -/* 0A30 */ 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F, 0x5E02, -/* 0A38 */ 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996, 0x5B88, -/* 0A40 */ 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, 0x67A2, -/* 0A48 */ 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 0x758F, -/* 0A50 */ 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 0x7F72, -/* 0A58 */ 0x8700, 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 0x675F, -/* 0A60 */ 0x620D, 0x7AD6, 0x5885, 0x5EB6, 0x6570, 0x6F31, 0x6055, 0x5237, -/* 0A68 */ 0x800D, 0x6454, 0x8870, 0x7529, 0x5E05, 0x6813, 0x62F4, 0x971C, -/* 0A70 */ 0x53CC, 0x723D, 0x8C01, 0x6C34, 0x7761, 0x7A0E, 0x542E, 0x77AC, -/* 0A78 */ 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714, 0x70C1, 0x65AF, 0x6495, -/* 0A80 */ 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D, 0x6B7B, 0x8086, 0x5BFA, -/* 0A88 */ 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E, 0x8038, -/* 0A90 */ 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, 0x8258, -/* 0A98 */ 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7, 0x7D20, 0x901F, 0x7C9F, -/* 0AA0 */ 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8BC9, 0x8083, 0x9178, 0x849C, -/* 0AA8 */ 0x7B97, 0x867D, 0x968B, 0x968F, 0x7EE5, 0x9AD3, 0x788E, 0x5C81, -/* 0AB0 */ 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B59, 0x635F, 0x7B0B, 0x84D1, -/* 0AB8 */ 0x68AD, 0x5506, 0x7F29, 0x7410, 0x7D22, 0x9501, 0x6240, 0x584C, -/* 0AC0 */ 0x4ED6, 0x5B83, 0x5979, 0x5854, 0x736D, 0x631E, 0x8E4B, 0x8E0F, -/* 0AC8 */ 0x80CE, 0x82D4, 0x62AC, 0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, -/* 0AD0 */ 0x6C70, 0x574D, 0x644A, 0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, -/* 0AD8 */ 0x75F0, 0x6F6D, 0x8C2D, 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, -/* 0AE0 */ 0x63A2, 0x53F9, 0x70AD, 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, -/* 0AE8 */ 0x819B, 0x5510, 0x7CD6, 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, -/* 0AF0 */ 0x638F, 0x6D9B, 0x6ED4, 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, -/* 0AF8 */ 0x9676, 0x8BA8, 0x5957, 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, -/* 0B00 */ 0x68AF, 0x5254, 0x8E22, 0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, -/* 0B08 */ 0x4F53, 0x66FF, 0x568F, 0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, -/* 0B10 */ 0x6DFB, 0x586B, 0x7530, 0x751C, 0x606C, 0x8214, 0x8146, 0x6311, -/* 0B18 */ 0x6761, 0x8FE2, 0x773A, 0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, -/* 0B20 */ 0x542C, 0x70C3, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, -/* 0B28 */ 0x8247, 0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, -/* 0B30 */ 0x7AE5, 0x6876, 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, -/* 0B38 */ 0x5934, 0x900F, 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, -/* 0B40 */ 0x6D82, 0x5C60, 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, -/* 0B48 */ 0x9893, 0x817F, 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, -/* 0B50 */ 0x62D6, 0x6258, 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, -/* 0B58 */ 0x59A5, 0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, -/* 0B60 */ 0x74E6, 0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, -/* 0B68 */ 0x987D, 0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, -/* 0B70 */ 0x60CB, 0x5B9B, 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, -/* 0B78 */ 0x6789, 0x7F51, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, -/* 0B80 */ 0x5DCD, 0x5FAE, 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, -/* 0B88 */ 0x60DF, 0x4E3A, 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, -/* 0B90 */ 0x4F2A, 0x5C3E, 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, 0x80C3, -/* 0B98 */ 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170, 0x536B, -/* 0BA0 */ 0x761F, 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B, 0x7A33, -/* 0BA8 */ 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, 0x6DA1, -/* 0BB0 */ 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x545C, -/* 0BB8 */ 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 0x68A7, -/* 0BC0 */ 0x543E, 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, -/* 0BC8 */ 0x4F0D, 0x4FAE, 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, -/* 0BD0 */ 0x52A1, 0x609F, 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, -/* 0BD8 */ 0x77FD, 0x6670, 0x563B, 0x5438, 0x9521, 0x727A, 0x7A00, 0x606F, -/* 0BE0 */ 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC, 0x7184, 0x70EF, 0x6EAA, -/* 0BE8 */ 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D, 0x4E60, 0x5AB3, 0x559C, -/* 0BF0 */ 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E, 0x867E, -/* 0BF8 */ 0x5323, 0x971E, 0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B, -/* 0C00 */ 0x53A6, 0x590F, 0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, -/* 0C08 */ 0x7EA4, 0x54B8, 0x8D24, 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, -/* 0C10 */ 0x5ACC, 0x663E, 0x9669, 0x73B0, 0x732E, 0x53BF, 0x817A, 0x9985, -/* 0C18 */ 0x7FA1, 0x5BAA, 0x9677, 0x9650, 0x7EBF, 0x76F8, 0x53A2, 0x9576, -/* 0C20 */ 0x9999, 0x7BB1, 0x8944, 0x6E58, 0x4E61, 0x7FD4, 0x7965, 0x8BE6, -/* 0C28 */ 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7, 0x6A61, 0x50CF, 0x5411, -/* 0C30 */ 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A, 0x54EE, 0x56A3, 0x9500, -/* 0C38 */ 0x6D88, 0x5BB5, 0x6DC6, 0x6653, 0x5C0F, 0x5B5D, 0x6821, 0x8096, -/* 0C40 */ 0x5578, 0x7B11, 0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, -/* 0C48 */ 0x534F, 0x631F, 0x643A, 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, -/* 0C50 */ 0x68B0, 0x5378, 0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, -/* 0C58 */ 0x85AA, 0x82AF, 0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, -/* 0C60 */ 0x4FE1, 0x8845, 0x661F, 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, -/* 0C68 */ 0x578B, 0x5F62, 0x90A2, 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, -/* 0C70 */ 0x59D3, 0x5144, 0x51F6, 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, -/* 0C78 */ 0x4F11, 0x4FEE, 0x7F9E, 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, -/* 0C80 */ 0x7EE3, 0x589F, 0x620C, 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, -/* 0C88 */ 0x8BB8, 0x84C4, 0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, -/* 0C90 */ 0x7D6E, 0x5A7F, 0x7EEA, 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, -/* 0C98 */ 0x65CB, 0x7384, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, -/* 0CA0 */ 0x5B66, 0x7A74, 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, -/* 0CA8 */ 0x8BE2, 0x5BFB, 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, -/* 0CB0 */ 0x900A, 0x8FC5, 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, -/* 0CB8 */ 0x82BD, 0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, -/* 0CC0 */ 0x4E9A, 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, -/* 0CC8 */ 0x4E25, 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, -/* 0CD0 */ 0x708E, 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, -/* 0CD8 */ 0x5830, 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, -/* 0CE0 */ 0x5BB4, 0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, -/* 0CE8 */ 0x626C, 0x4F6F, 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, -/* 0CF0 */ 0x75D2, 0x517B, 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476, -/* 0CF8 */ 0x6447, 0x5C27, 0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC, 0x8200, -/* 0D00 */ 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, 0x8036, 0x7237, 0x91CE, -/* 0D08 */ 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3, 0x814B, -/* 0D10 */ 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, 0x4F9D, -/* 0D18 */ 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, 0x80F0, -/* 0D20 */ 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, 0x501A, -/* 0D28 */ 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, 0x9091, -/* 0D30 */ 0x5C79, 0x4EBF, 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 0x4EA6, -/* 0D38 */ 0x88D4, 0x610F, 0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 0x8BE3, -/* 0D40 */ 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE, 0x8335, -/* 0D48 */ 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F, 0x94F6, -/* 0D50 */ 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, 0x9690, 0x5370, 0x82F1, -/* 0D58 */ 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424, 0x8425, -/* 0D60 */ 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, 0x786C, -/* 0D68 */ 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, 0x96CD, -/* 0D70 */ 0x8E0A, 0x86F9, 0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, 0x52C7, -/* 0D78 */ 0x7528, 0x5E7D, 0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, 0x90AE, -/* 0D80 */ 0x94C0, 0x72B9, 0x6CB9, 0x6E38, 0x9149, 0x6709, 0x53CB, 0x53F3, -/* 0D88 */ 0x4F51, 0x91C9, 0x8BF1, 0x53C8, 0x5E7C, 0x8FC2, 0x6DE4, 0x4E8E, -/* 0D90 */ 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206, 0x4F59, 0x4FDE, 0x903E, -/* 0D98 */ 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, 0x4E88, 0x5A31, 0x96E8, -/* 0DA0 */ 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389, 0x57DF, -/* 0DA8 */ 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, 0x6108, -/* 0DB0 */ 0x6B32, 0x72F1, 0x80B2, 0x8A89, 0x6D74, 0x5BD3, 0x88D5, 0x9884, -/* 0DB8 */ 0x8C6B, 0x9A6D, 0x9E33, 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, -/* 0DC0 */ 0x539F, 0x63F4, 0x8F95, 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, -/* 0DC8 */ 0x7F18, 0x8FDC, 0x82D1, 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, -/* 0DD0 */ 0x8D8A, 0x8DC3, 0x94A5, 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, -/* 0DD8 */ 0x8018, 0x4E91, 0x90E7, 0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, -/* 0DE0 */ 0x915D, 0x6655, 0x97F5, 0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, -/* 0DE8 */ 0x54C9, 0x707E, 0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, -/* 0DF0 */ 0x6682, 0x8D5E, 0x8D43, 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, -/* 0DF8 */ 0x85FB, 0x67A3, 0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, -/* 0E00 */ 0x7682, 0x7076, 0x71E5, 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, -/* 0E08 */ 0x600E, 0x589E, 0x618E, 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, -/* 0E10 */ 0x672D, 0x8F67, 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, -/* 0E18 */ 0x4E4D, 0x70B8, 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, -/* 0E20 */ 0x5BE8, 0x77BB, 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, -/* 0E28 */ 0x8F97, 0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, -/* 0E30 */ 0x6E5B, 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, -/* 0E38 */ 0x6DA8, 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, -/* 0E40 */ 0x969C, 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, -/* 0E48 */ 0x5146, 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, -/* 0E50 */ 0x8005, 0x9517, 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, -/* 0E58 */ 0x7504, 0x7827, 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, -/* 0E60 */ 0x8BCA, 0x9707, 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, -/* 0E68 */ 0x5F81, 0x72F0, 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F, -/* 0E70 */ 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F, 0x5431, -/* 0E78 */ 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, 0x804C, -/* 0E80 */ 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 0x6307, -/* 0E88 */ 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 0x63B7, -/* 0E90 */ 0x81F3, 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, 0x79E9, -/* 0E98 */ 0x7A1A, 0x8D28, 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, 0x4E2D, -/* 0EA0 */ 0x76C5, 0x5FE0, 0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF, 0x91CD, -/* 0EA8 */ 0x4EF2, 0x4F17, 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC, 0x7CA5, -/* 0EB0 */ 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C, 0x9AA4, -/* 0EB8 */ 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB, 0x9010, -/* 0EC0 */ 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, 0x8457, -/* 0EC8 */ 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, 0x7B51, 0x4F4F, 0x6CE8, -/* 0ED0 */ 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816, 0x8F6C, -/* 0ED8 */ 0x64B0, 0x8D5A, 0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E, -/* 0EE0 */ 0x58EE, 0x72B6, 0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, -/* 0EE8 */ 0x8C06, 0x51C6, 0x6349, 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, -/* 0EF0 */ 0x914C, 0x5544, 0x7740, 0x707C, 0x6D4A, 0x5179, 0x54A8, 0x8D44, -/* 0EF8 */ 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B, 0x4ED4, 0x7C7D, 0x6ED3, -/* 0F00 */ 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03, 0x68D5, 0x8E2A, 0x5B97, -/* 0F08 */ 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70, 0x594F, 0x63CD, 0x79DF, -/* 0F10 */ 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, 0x963B, 0x7EC4, 0x94BB, -/* 0F18 */ 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, -/* 0F20 */ 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7, 0x4E8D, -/* 0F28 */ 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15, 0x4E98, 0x4E1E, -/* 0F30 */ 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F, 0x5315, 0x4E47, -/* 0F38 */ 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4, 0x9997, 0x6BD3, -/* 0F40 */ 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, 0x4E5C, 0x4E69, 0x4E93, -/* 0F48 */ 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D, 0x539D, 0x53A3, -/* 0F50 */ 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5, 0x5326, 0x532E, -/* 0F58 */ 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208, 0x520E, 0x522D, -/* 0F60 */ 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261, 0x525C, 0x84AF, -/* 0F68 */ 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7F54, 0x4EBB, -/* 0F70 */ 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, 0x4EDE, 0x4F1B, -/* 0F78 */ 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25, 0x4F27, 0x4F09, 0x4F2B, -/* 0F80 */ 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D, 0x4F5F, 0x4F57, 0x4F32, -/* 0F88 */ 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 0x4F89, 0x4F83, 0x4F8F, 0x4F7E, -/* 0F90 */ 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94, 0x4FE6, 0x4FE8, 0x4FEA, -/* 0F98 */ 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1, 0x4FDF, 0x4FF8, 0x5029, -/* 0FA0 */ 0x504C, 0x4FF3, 0x502C, 0x500F, 0x502E, 0x502D, 0x4FFE, 0x501C, -/* 0FA8 */ 0x500C, 0x5025, 0x5028, 0x507E, 0x5043, 0x5055, 0x5048, 0x504E, -/* 0FB0 */ 0x506C, 0x507B, 0x50A5, 0x50A7, 0x50A9, 0x50BA, 0x50D6, 0x5106, -/* 0FB8 */ 0x50ED, 0x50EC, 0x50E6, 0x50EE, 0x5107, 0x510B, 0x4EDD, 0x6C3D, -/* 0FC0 */ 0x4F58, 0x4F65, 0x4FCE, 0x9FA0, 0x6C46, 0x7C74, 0x516E, 0x5DFD, -/* 0FC8 */ 0x9EC9, 0x9998, 0x5181, 0x5914, 0x52F9, 0x530D, 0x8A07, 0x5310, -/* 0FD0 */ 0x51EB, 0x5919, 0x5155, 0x4EA0, 0x5156, 0x4EB3, 0x886E, 0x88A4, -/* 0FD8 */ 0x4EB5, 0x8114, 0x88D2, 0x7980, 0x5B34, 0x8803, 0x7FB8, 0x51AB, -/* 0FE0 */ 0x51B1, 0x51BD, 0x51BC, 0x51C7, 0x5196, 0x51A2, 0x51A5, 0x8BA0, -/* 0FE8 */ 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4, 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, -/* 0FF0 */ 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, -/* 0FF8 */ 0x8BD9, 0x8BDC, 0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, -/* 1000 */ 0x8BF0, 0x8BF3, 0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, -/* 1008 */ 0x8C04, 0x8C07, 0x8C0C, 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15, -/* 1010 */ 0x8C16, 0x8C19, 0x8C1B, 0x8C18, 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, -/* 1018 */ 0x8C25, 0x8C27, 0x8C2A, 0x8C2B, 0x8C2E, 0x8C2F, 0x8C32, 0x8C33, -/* 1020 */ 0x8C35, 0x8C36, 0x5369, 0x537A, 0x961D, 0x9622, 0x9621, 0x9631, -/* 1028 */ 0x962A, 0x963D, 0x963C, 0x9642, 0x9649, 0x9654, 0x965F, 0x9667, -/* 1030 */ 0x966C, 0x9672, 0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097, -/* 1038 */ 0x909B, 0x909D, 0x9099, 0x90AC, 0x90A1, 0x90B4, 0x90B3, 0x90B6, -/* 1040 */ 0x90BA, 0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4, -/* 1048 */ 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB, -/* 1050 */ 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, 0x9123, 0x9131, 0x912F, -/* 1058 */ 0x9139, 0x9143, 0x9146, 0x520D, 0x5942, 0x52A2, 0x52AC, 0x52AD, -/* 1060 */ 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, 0x53DF, 0x71EE, 0x77CD, -/* 1068 */ 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01, 0x755A, 0x5DEF, -/* 1070 */ 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1, 0x5729, -/* 1078 */ 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B, -/* 1080 */ 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768, -/* 1088 */ 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF, -/* 1090 */ 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9, -/* 1098 */ 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, 0x57E4, 0x57DD, 0x580B, -/* 10A0 */ 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819, 0x5844, 0x5820, -/* 10A8 */ 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, 0x5880, 0x99A8, 0x9F19, -/* 10B0 */ 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, 0x82A8, 0x8284, -/* 10B8 */ 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8, 0x82BE, 0x82B0, -/* 10C0 */ 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, 0x82CB, 0x82CC, -/* 10C8 */ 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, 0x82C4, 0x82CE, -/* 10D0 */ 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F, 0x8307, 0x82DC, -/* 10D8 */ 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3, 0x8311, 0x831A, -/* 10E0 */ 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5, 0x831C, 0x8351, 0x835B, -/* 10E8 */ 0x835C, 0x8308, 0x8392, 0x833C, 0x8334, 0x8331, 0x839B, 0x835E, -/* 10F0 */ 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, 0x8340, 0x8317, 0x8360, -/* 10F8 */ 0x832D, 0x833A, 0x8333, 0x8366, 0x8365, 0x8368, 0x831B, 0x8369, -/* 1100 */ 0x836C, 0x836A, 0x836D, 0x836E, 0x83B0, 0x8378, 0x83B3, 0x83B4, -/* 1108 */ 0x83A0, 0x83AA, 0x8393, 0x839C, 0x8385, 0x837C, 0x83B6, 0x83A9, -/* 1110 */ 0x837D, 0x83B8, 0x837B, 0x8398, 0x839E, 0x83A8, 0x83BA, 0x83BC, -/* 1118 */ 0x83C1, 0x8401, 0x83E5, 0x83D8, 0x5807, 0x8418, 0x840B, 0x83DD, -/* 1120 */ 0x83FD, 0x83D6, 0x841C, 0x8438, 0x8411, 0x8406, 0x83D4, 0x83DF, -/* 1128 */ 0x840F, 0x8403, 0x83F8, 0x83F9, 0x83EA, 0x83C5, 0x83C0, 0x8426, -/* 1130 */ 0x83F0, 0x83E1, 0x845C, 0x8451, 0x845A, 0x8459, 0x8473, 0x8487, -/* 1138 */ 0x8488, 0x847A, 0x8489, 0x8478, 0x843C, 0x8446, 0x8469, 0x8476, -/* 1140 */ 0x848C, 0x848E, 0x8431, 0x846D, 0x84C1, 0x84CD, 0x84D0, 0x84E6, -/* 1148 */ 0x84BD, 0x84D3, 0x84CA, 0x84BF, 0x84BA, 0x84E0, 0x84A1, 0x84B9, -/* 1150 */ 0x84B4, 0x8497, 0x84E5, 0x84E3, 0x850C, 0x750D, 0x8538, 0x84F0, -/* 1158 */ 0x8539, 0x851F, 0x853A, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, -/* 1160 */ 0x8548, 0x8568, 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, -/* 1168 */ 0x857B, 0x85A4, 0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, -/* 1170 */ 0x8585, 0x85B9, 0x85B7, 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, -/* 1178 */ 0x8627, 0x8605, 0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08, 0x593C, -/* 1180 */ 0x5941, 0x8037, 0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25, -/* 1188 */ 0x5C2C, 0x5C34, 0x624C, 0x626A, 0x629F, 0x62BB, 0x62CA, 0x62DA, -/* 1190 */ 0x62D7, 0x62EE, 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, -/* 1198 */ 0x63F6, 0x6371, 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, -/* 11A0 */ 0x6369, 0x63AE, 0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, -/* 11A8 */ 0x63DE, 0x63CE, 0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, -/* 11B0 */ 0x641B, 0x6420, 0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, -/* 11B8 */ 0x6496, 0x647A, 0x64B7, 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, -/* 11C0 */ 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2, -/* 11C8 */ 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, 0x53E9, 0x53E8, 0x53FB, -/* 11D0 */ 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, 0x5454, 0x5456, -/* 11D8 */ 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, -/* 11E0 */ 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466, -/* 11E8 */ 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6, -/* 11F0 */ 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC, -/* 11F8 */ 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, -/* 1200 */ 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, -/* 1208 */ 0x5523, 0x550F, 0x5511, 0x5527, 0x552A, 0x5567, 0x558F, 0x55B5, -/* 1210 */ 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, 0x5550, 0x553C, 0x5537, -/* 1218 */ 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555C, 0x558B, -/* 1220 */ 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, 0x559F, 0x557E, -/* 1228 */ 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, 0x5594, 0x5599, -/* 1230 */ 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB, 0x55EC, 0x55D4, -/* 1238 */ 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, 0x55F3, 0x55CC, -/* 1240 */ 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, 0x561E, 0x5608, 0x560C, -/* 1248 */ 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, 0x5627, 0x562D, 0x5658, -/* 1250 */ 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659, 0x565C, 0x564C, -/* 1258 */ 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B, 0x567C, 0x5685, -/* 1260 */ 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, 0x56F5, 0x56EB, -/* 1268 */ 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, 0x5E0F, 0x5E19, -/* 1270 */ 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C, 0x5E37, 0x5E44, 0x5E54, -/* 1278 */ 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A, 0x5C8D, 0x5C90, 0x5C96, -/* 1280 */ 0x5C88, 0x5C98, 0x5C99, 0x5C91, 0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, -/* 1288 */ 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, -/* 1290 */ 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, 0x5D02, 0x5D03, 0x5D27, 0x5D26, -/* 1298 */ 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, -/* 12A0 */ 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D5D, 0x5D6B, 0x5D4B, 0x5D4A, -/* 12A8 */ 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D, 0x8C73, 0x5DB7, 0x5DC5, -/* 12B0 */ 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89, 0x5F8C, 0x5F95, 0x5F99, -/* 12B8 */ 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC, 0x8862, 0x5F61, 0x72AD, -/* 12C0 */ 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3, 0x72C1, 0x72CE, 0x72CD, -/* 12C8 */ 0x72D2, 0x72E8, 0x72EF, 0x72E9, 0x72F2, 0x72F4, 0x72F7, 0x7301, -/* 12D0 */ 0x72F3, 0x7303, 0x72FA, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, -/* 12D8 */ 0x731E, 0x731D, 0x7315, 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, -/* 12E0 */ 0x7331, 0x7350, 0x734D, 0x7357, 0x7360, 0x736C, 0x736F, 0x737E, -/* 12E8 */ 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902, 0x9963, 0xFFFD, 0xFFFD, -/* 12F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9974, 0x9977, 0x997D, 0x9980, -/* 12F8 */ 0x9984, 0x9987, 0x998A, 0x998D, 0x9990, 0x9991, 0x9993, 0x9994, -/* 1300 */ 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, -/* 1308 */ 0x5EB5, 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, -/* 1310 */ 0x5EEA, 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, -/* 1318 */ 0x6004, 0x5FE1, 0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, -/* 1320 */ 0x5FF8, 0x6019, 0x6035, 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, -/* 1328 */ 0x602B, 0x600A, 0x603F, 0x6021, 0x6078, 0x6079, 0x607B, 0x607A, -/* 1330 */ 0x6042, 0x606A, 0x607D, 0x6096, 0x609A, 0x60AD, 0x609D, 0x6083, -/* 1338 */ 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, 0x60DD, 0x60D8, -/* 1340 */ 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60F4, -/* 1348 */ 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7, -/* 1350 */ 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1, -/* 1358 */ 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606, -/* 1360 */ 0x9608, 0x960A, 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615, -/* 1368 */ 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35, -/* 1370 */ 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, 0x6C90, 0x6C94, 0x6C8C, -/* 1378 */ 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6CA9, 0x6CD0, 0x6CD4, -/* 1380 */ 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6, -/* 1388 */ 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE, 0x6D39, -/* 1390 */ 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, 0x6D19, 0x6D0E, -/* 1398 */ 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, 0x6D52, 0x6D54, -/* 13A0 */ 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, 0x6D93, 0x6D94, -/* 13A8 */ 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, 0x6DC5, 0x6DDE, -/* 13B0 */ 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, 0x6DDD, 0x6DD9, 0x6E16, -/* 13B8 */ 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, 0x6E4E, 0x6E6B, 0x6EB2, -/* 13C0 */ 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, 0x6E25, 0x6E44, 0x6EDF, -/* 13C8 */ 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5, 0x6EA7, 0x6EBD, -/* 13D0 */ 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, 0x6EC2, 0x6E9F, -/* 13D8 */ 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, 0x6F2F, 0x6F36, -/* 13E0 */ 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, 0x6F8D, 0x6F8C, -/* 13E8 */ 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1, 0x6FC9, 0x6FA7, 0x6FB9, -/* 13F0 */ 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 0x6FDE, 0x6FE0, 0x6FEF, 0x701A, -/* 13F8 */ 0x7023, 0x701B, 0x7039, 0x7035, 0x704F, 0x705E, 0x5B80, 0x5B84, -/* 1400 */ 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 0x752F, 0x9A9E, 0x6434, 0x5BE4, -/* 1408 */ 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07, 0x8FB6, 0x8FD3, 0x8FD5, -/* 1410 */ 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6, 0x8FF3, 0x8FE8, 0x9005, -/* 1418 */ 0x9004, 0x900B, 0x9026, 0x9011, 0x900D, 0x9016, 0x9021, 0x9035, -/* 1420 */ 0x9036, 0x902D, 0x902F, 0x9044, 0x9051, 0x9052, 0x9050, 0x9068, -/* 1428 */ 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074, 0x907D, 0x9082, 0x9088, -/* 1430 */ 0x9083, 0x908B, 0x5F50, 0x5F57, 0x5F56, 0x5F58, 0x5C3B, 0x54AB, -/* 1438 */ 0x5C50, 0x5C59, 0x5B71, 0x5C63, 0x5C66, 0x7FBC, 0x5F2A, 0x5F29, -/* 1440 */ 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 0x5C6E, 0x5981, 0x5983, 0x598D, -/* 1448 */ 0x59A9, 0x59AA, 0x59A3, 0x5997, 0x59CA, 0x59AB, 0x599E, 0x59A4, -/* 1450 */ 0x59D2, 0x59B2, 0x59AF, 0x59D7, 0x59BE, 0x5A05, 0x5A06, 0x59DD, -/* 1458 */ 0x5A08, 0x59E3, 0x59D8, 0x59F9, 0x5A0C, 0x5A09, 0x5A32, 0x5A34, -/* 1460 */ 0x5A11, 0x5A23, 0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55, 0x5A3C, -/* 1468 */ 0x5A62, 0x5A75, 0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, -/* 1470 */ 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, -/* 1478 */ 0x5AD6, 0x5AE6, 0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, -/* 1480 */ 0x5B37, 0x5B40, 0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, -/* 1488 */ 0x5B53, 0x5B62, 0x9A75, 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, -/* 1490 */ 0x9A80, 0x9A81, 0x9A85, 0x9A88, 0x9A8A, 0x9A90, 0x9A92, 0x9A93, -/* 1498 */ 0x9A96, 0x9A98, 0x9A9B, 0x9A9C, 0x9A9D, 0x9A9F, 0x9AA0, 0x9AA2, -/* 14A0 */ 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, 0x7EA1, 0x7EA3, 0x7EA5, 0x7EA8, -/* 14A8 */ 0x7EA9, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2, 0x7EC9, -/* 14B0 */ 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1, -/* 14B8 */ 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, -/* 14C0 */ 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, 0x7F03, 0x7F07, 0x7F08, -/* 14C8 */ 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12, 0x7F17, 0x7F19, 0x7F1C, -/* 14D0 */ 0x7F1B, 0x7F1F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 14D8 */ 0xFFFD, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, 0x7F2F, 0x7F30, 0x7F31, -/* 14E0 */ 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, 0x5DDB, 0x753E, 0x9095, -/* 14E8 */ 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF, 0x73C2, 0x73D1, -/* 14F0 */ 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, 0x987C, -/* 14F8 */ 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A, -/* 1500 */ 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C, 0x741B, -/* 1508 */ 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, 0x7459, 0x7477, 0x746D, -/* 1510 */ 0x747E, 0x749C, 0x748E, 0x7480, 0x7481, 0x7487, 0x748B, 0x749E, -/* 1518 */ 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2, 0x74BA, 0x97EA, 0x97EB, -/* 1520 */ 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748, 0x6769, 0x67A5, 0x6787, -/* 1528 */ 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, 0x67A8, 0x679E, 0x67AD, -/* 1530 */ 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, 0x67D8, 0x680A, 0x67E9, -/* 1538 */ 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, 0x67B3, 0x67DD, 0x6800, -/* 1540 */ 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD, 0x6832, 0x6833, -/* 1548 */ 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864, 0x6883, 0x681D, -/* 1550 */ 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683E, 0x684A, 0x6849, -/* 1558 */ 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, 0x6893, 0x686B, 0x68C2, -/* 1560 */ 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9, 0x6924, 0x68F0, 0x690B, -/* 1568 */ 0x6901, 0x6957, 0x68E3, 0x6910, 0x6971, 0x6939, 0x6960, 0x6942, -/* 1570 */ 0x695D, 0x6984, 0x696B, 0x6980, 0x6998, 0x6978, 0x6934, 0x69CC, -/* 1578 */ 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966, 0x6963, 0x6979, 0x699B, -/* 1580 */ 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4, 0x69B1, 0x69C1, 0x69CA, -/* 1588 */ 0x69DF, 0x6995, 0x69E0, 0x698D, 0x69FF, 0x6A2F, 0x69ED, 0x6A17, -/* 1590 */ 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, -/* 1598 */ 0x6A35, 0x6A8E, 0x6A79, 0x6A3D, 0x6A28, 0x6A58, 0x6A7C, 0x6A91, -/* 15A0 */ 0x6A90, 0x6AA9, 0x6A97, 0x6AAB, 0x7337, 0x7352, 0x6B81, 0x6B82, -/* 15A8 */ 0x6B87, 0x6B84, 0x6B92, 0x6B93, 0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, -/* 15B0 */ 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, 0x8F72, 0x8F73, 0x8F75, 0x8F76, -/* 15B8 */ 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C, 0x8F7E, 0x8F81, 0x8F82, -/* 15C0 */ 0x8F84, 0x8F87, 0x8F8B, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F98, 0x8F9A, -/* 15C8 */ 0x8ECE, 0x620B, 0x6217, 0x621B, 0x621F, 0x6222, 0x6221, 0x6225, -/* 15D0 */ 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, -/* 15D8 */ 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, -/* 15E0 */ 0x6603, 0x6615, 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, -/* 15E8 */ 0x6636, 0x6635, 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, -/* 15F0 */ 0x6661, 0x6657, 0x6677, 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, -/* 15F8 */ 0x66DB, 0x66DC, 0x66E6, 0x66E9, 0x8D32, 0x8D33, 0x8D36, 0x8D3B, -/* 1600 */ 0x8D3D, 0x8D40, 0x8D45, 0x8D46, 0x8D48, 0x8D49, 0x8D47, 0x8D4D, -/* 1608 */ 0x8D55, 0x8D59, 0x89C7, 0x89CA, 0x89CB, 0x89CC, 0x89CE, 0x89CF, -/* 1610 */ 0x89D0, 0x89D1, 0x726E, 0x729F, 0x725D, 0x7266, 0x726F, 0x727E, -/* 1618 */ 0x727F, 0x7284, 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, -/* 1620 */ 0x63B0, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, -/* 1628 */ 0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, -/* 1630 */ 0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, -/* 1638 */ 0x656B, 0x724D, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, -/* 1640 */ 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD, 0x80B1, 0x80AB, 0x80AD, -/* 1648 */ 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80DB, 0x80C2, -/* 1650 */ 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x80EB, 0x80F1, -/* 1658 */ 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112, -/* 1660 */ 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, -/* 1668 */ 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, -/* 1670 */ 0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, -/* 1678 */ 0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB, 0x81C1, -/* 1680 */ 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, 0x6B46, 0x6B59, 0x98D1, -/* 1688 */ 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, 0x6BB3, 0x5F40, 0x6BC2, -/* 1690 */ 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, 0x65C6, 0x65C4, 0x65C3, -/* 1698 */ 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, 0x709C, 0x7096, 0x709D, -/* 16A0 */ 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x70E8, 0x70CA, 0x7110, -/* 16A8 */ 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, 0x715C, 0x7168, 0x7145, -/* 16B0 */ 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3, 0x71B5, 0x71A8, -/* 16B8 */ 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D, 0x7228, 0x706C, -/* 16C0 */ 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, 0x6243, 0x6248, 0x6249, -/* 16C8 */ 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, 0x795C, 0x7953, 0x795A, -/* 16D0 */ 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, 0x797A, 0x7985, 0x798A, -/* 16D8 */ 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0, 0x603C, 0x605D, 0x605A, -/* 16E0 */ 0x6067, 0x6041, 0x6059, 0x6063, 0x60AB, 0x6106, 0x610D, 0x615D, -/* 16E8 */ 0x61A9, 0x619D, 0x61CB, 0x61D1, 0x6206, 0x8080, 0x807F, 0x6C93, -/* 16F0 */ 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 0x7800, 0x7809, 0x7817, 0x7818, -/* 16F8 */ 0x7811, 0x65AB, 0x782D, 0x781C, 0x781D, 0x7839, 0x783A, 0x783B, -/* 1700 */ 0x781F, 0x783C, 0x7825, 0x782C, 0x7823, 0x7829, 0x784E, 0x786D, -/* 1708 */ 0x7856, 0x7857, 0x7826, 0x7850, 0x7847, 0x784C, 0x786A, 0x789B, -/* 1710 */ 0x7893, 0x789A, 0x7887, 0x789C, 0x78A1, 0x78A3, 0x78B2, 0x78B9, -/* 1718 */ 0x78A5, 0x78D4, 0x78D9, 0x78C9, 0x78EC, 0x78F2, 0x7905, 0x78F4, -/* 1720 */ 0x7913, 0x7924, 0x791E, 0x7934, 0x9F9B, 0x9EF9, 0x9EFB, 0x9EFC, -/* 1728 */ 0x76F1, 0x7704, 0x770D, 0x76F9, 0x7707, 0x7708, 0x771A, 0x7722, -/* 1730 */ 0x7719, 0x772D, 0x7726, 0x7735, 0x7738, 0x7750, 0x7751, 0x7747, -/* 1738 */ 0x7743, 0x775A, 0x7768, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D, -/* 1740 */ 0x7780, 0x778C, 0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, -/* 1748 */ 0x753A, 0x7540, 0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, -/* 1750 */ 0x7583, 0x7F58, 0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F74, 0x7F71, -/* 1758 */ 0x7F79, 0x7F81, 0x7F7E, 0x76CD, 0x76E5, 0x8832, 0x9485, 0x9486, -/* 1760 */ 0x9487, 0x948B, 0x948A, 0x948C, 0x948D, 0x948F, 0x9490, 0x9494, -/* 1768 */ 0x9497, 0x9495, 0x949A, 0x949B, 0x949C, 0x94A3, 0x94A4, 0x94AB, -/* 1770 */ 0x94AA, 0x94AD, 0x94AC, 0x94AF, 0x94B0, 0x94B2, 0x94B4, 0x94B6, -/* 1778 */ 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF, 0x94C4, -/* 1780 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x94D0, -/* 1788 */ 0x94D1, 0x94D2, 0x94D5, 0x94D6, 0x94D7, 0x94D9, 0x94D8, 0x94DB, -/* 1790 */ 0x94DE, 0x94DF, 0x94E0, 0x94E2, 0x94E4, 0x94E5, 0x94E7, 0x94E8, -/* 1798 */ 0x94EA, 0x94E9, 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5, -/* 17A0 */ 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506, -/* 17A8 */ 0x9507, 0x9509, 0x950A, 0x950D, 0x950E, 0x950F, 0x9512, 0x9513, -/* 17B0 */ 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, 0x951D, 0x951E, 0x951F, -/* 17B8 */ 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, 0x9532, 0x9534, -/* 17C0 */ 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, 0x9542, 0x9535, -/* 17C8 */ 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F, 0x9552, -/* 17D0 */ 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E, -/* 17D8 */ 0x955F, 0x955D, 0x9561, 0x9562, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 17E0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x956F, 0x9571, 0x9572, -/* 17E8 */ 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3, -/* 17F0 */ 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, 0x7A1E, 0x7A14, 0x7A39, -/* 17F8 */ 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, 0x7688, 0x768E, 0x7693, -/* 1800 */ 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20, 0x9E22, 0x9E28, -/* 1808 */ 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31, 0x9E36, 0x9E38, -/* 1810 */ 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, 0x9E42, 0x9E44, 0x9E46, -/* 1818 */ 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, 0x9E4E, 0x9E51, 0x9E55, -/* 1820 */ 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, 0x9E63, 0xFFFD, 0xFFFD, -/* 1828 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9E71, 0x9E6D, 0x9E73, -/* 1830 */ 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, 0x75AC, 0x75A3, 0x75B3, -/* 1838 */ 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, 0x75C3, 0x75C2, 0x75D6, -/* 1840 */ 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, 0x75EB, 0x75E7, 0x7603, -/* 1848 */ 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605, 0x760C, 0x7617, -/* 1850 */ 0x760A, 0x7625, 0x7618, 0x7615, 0x7619, 0x761B, 0x763C, 0x7622, -/* 1858 */ 0x7620, 0x7640, 0x762D, 0x7630, 0x763F, 0x7635, 0x7643, 0x763E, -/* 1860 */ 0x7633, 0x764D, 0x765E, 0x7654, 0x765C, 0x7656, 0x766B, 0x766F, -/* 1868 */ 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, 0x7A80, 0x7A86, 0x7A88, 0x7A95, -/* 1870 */ 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8, 0x7AAD, 0x7AB3, 0x8864, 0x8869, -/* 1878 */ 0x8872, 0x887D, 0x887F, 0x8882, 0x88A2, 0x88C6, 0x88B7, 0x88BC, -/* 1880 */ 0x88C9, 0x88E2, 0x88CE, 0x88E3, 0x88E5, 0x88F1, 0x891A, 0x88FC, -/* 1888 */ 0x88E8, 0x88FE, 0x88F0, 0x8921, 0x8919, 0x8913, 0x891B, 0x890A, -/* 1890 */ 0x8934, 0x892B, 0x8936, 0x8941, 0x8966, 0x897B, 0x758B, 0x80E5, -/* 1898 */ 0x76B2, 0x76B4, 0x77DC, 0x8012, 0x8014, 0x8016, 0x801C, 0x8020, -/* 18A0 */ 0x8022, 0x8025, 0x8026, 0x8027, 0x8029, 0x8028, 0x8031, 0x800B, -/* 18A8 */ 0x8035, 0x8043, 0x8046, 0x804D, 0x8052, 0x8069, 0x8071, 0x8983, -/* 18B0 */ 0x9878, 0x9880, 0x9883, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, -/* 18B8 */ 0x989A, 0x989B, 0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, -/* 18C0 */ 0x864D, 0x8654, 0x866C, 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, -/* 18C8 */ 0x86A8, 0x868D, 0x868B, 0x86AC, 0x869D, 0x86A7, 0x86A3, 0x86AA, -/* 18D0 */ 0x8693, 0x86A9, 0x86B6, 0x86C4, 0x86B5, 0x86CE, 0x86B0, 0x86BA, -/* 18D8 */ 0x86B1, 0x86AF, 0x86C9, 0x86CF, 0x86B4, 0x86E9, 0x86F1, 0x86F2, -/* 18E0 */ 0x86ED, 0x86F3, 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, 0x86D8, -/* 18E8 */ 0x86D1, 0x8703, 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, -/* 18F0 */ 0x8723, 0x873B, 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, -/* 18F8 */ 0x8734, 0x8731, 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, -/* 1900 */ 0x877E, 0x877B, 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, -/* 1908 */ 0x8763, 0x877C, 0x8764, 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, -/* 1910 */ 0x87D2, 0x87C6, 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB, -/* 1918 */ 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1, -/* 1920 */ 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813, -/* 1928 */ 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, 0x7F42, -/* 1930 */ 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04, -/* 1938 */ 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, -/* 1940 */ 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E, -/* 1948 */ 0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E, -/* 1950 */ 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, -/* 1958 */ 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, -/* 1960 */ 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6, -/* 1968 */ 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, 0x7C0B, 0x7C1F, -/* 1970 */ 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, 0x8201, 0x8202, -/* 1978 */ 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, 0x822D, 0x822F, -/* 1980 */ 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, 0x823E, 0x8244, -/* 1988 */ 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, 0x887E, 0x8885, -/* 1990 */ 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, 0x7F9F, 0x7FA7, 0x7FAF, -/* 1998 */ 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, 0x7C9D, 0x7C9C, 0x7C9E, -/* 19A0 */ 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, 0x7CC7, 0x7CCC, 0x7CCD, -/* 19A8 */ 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8, 0x7FBF, 0x7FCE, -/* 19B0 */ 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, 0x7FF3, 0x7CF8, -/* 19B8 */ 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, 0x9EB4, 0x8D73, -/* 19C0 */ 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, 0x8C47, 0x8C49, -/* 19C8 */ 0x914A, 0x9150, 0x914E, 0x914F, 0x9164, 0x9162, 0x9161, 0x9170, -/* 19D0 */ 0x9169, 0x916F, 0x917D, 0x917E, 0x9172, 0x9174, 0x9179, 0x918C, -/* 19D8 */ 0x9185, 0x9190, 0x918D, 0x9191, 0x91A2, 0x91A3, 0x91AA, 0x91AD, -/* 19E0 */ 0x91AE, 0x91AF, 0x91B5, 0x91B4, 0x91BA, 0x8C55, 0x9E7E, 0x8DB8, -/* 19E8 */ 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, -/* 19F0 */ 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE, 0x8DCE, 0x8DCF, 0x8DDB, -/* 19F8 */ 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 0x8DE3, 0x8DF9, 0x8DFB, 0x8DE4, -/* 1A00 */ 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F, 0x8E2C, 0x8E2E, 0x8E23, -/* 1A08 */ 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 0x8E35, 0x8E3D, 0x8E31, 0x8E49, -/* 1A10 */ 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A, 0x8E70, 0x8E76, 0x8E7C, -/* 1A18 */ 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, 0x8E94, 0x8E90, 0x8E9C, 0x8E9E, -/* 1A20 */ 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 0x8C98, 0x8C94, 0x659B, 0x89D6, -/* 1A28 */ 0x89DE, 0x89DA, 0x89DC, 0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, -/* 1A30 */ 0x9753, 0x96E9, 0x96F3, 0x96EF, 0x9706, 0x9701, 0x9708, 0x970F, -/* 1A38 */ 0x970E, 0x972A, 0x972D, 0x9730, 0x973E, 0x9F80, 0x9F83, 0xFFFD, -/* 1A40 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9F8C, 0x9EFE, 0x9F0B, -/* 1A48 */ 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, 0x96E0, -/* 1A50 */ 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E, -/* 1A58 */ 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, -/* 1A60 */ 0x9C8B, 0x9C8E, 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, -/* 1A68 */ 0x9C9B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CA5, -/* 1A70 */ 0x9CA6, 0x9CA7, 0x9CA8, 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0xFFFD, -/* 1A78 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9CBA, -/* 1A80 */ 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CCA, -/* 1A88 */ 0x9CCB, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD3, 0x9CD4, -/* 1A90 */ 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, 0x9CE2, -/* 1A98 */ 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3, -/* 1AA0 */ 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA, -/* 1AA8 */ 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, 0x9ACC, 0x9AD1, -/* 1AB0 */ 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, 0x9B4D, 0x9B51, 0x98E8, -/* 1AB8 */ 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF, -/* 1AC0 */ 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, 0x9B13, 0x9B1F, -/* 1AC8 */ 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, 0x9E88, 0x9E8B, -/* 1AD0 */ 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EE0, -/* 1AD8 */ 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF, 0x9F22, -/* 1AE0 */ 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44, -/* End of table Total Length = 0x1C41 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/jis0201.ut b/mozilla/lib/libi18n/unicode/utotbl/jis0201.ut deleted file mode 100644 index b9618261f6d..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/jis0201.ut +++ /dev/null @@ -1,94 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 005B - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 005D - srcEnd = 007D - destBegin = 005D -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00A1 - srcEnd = 00DF - destBegin = FF61 -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = 005C - destBegin = 00A5 -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 007E - destBegin = 203E -End of Item 0004 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0000 */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x2000, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x005D, 0x007D, 0x005D, -/* 0002 */ 0x00A1, 0x00DF, 0xFF61, -/* 0003 */ 0x005C, 0x0000, 0x00A5, -/* 0004 */ 0x007E, 0x0000, 0x203E, -/*-------------------------------------------------------*/ -/* Offset=0x0015 Start of MappingTable */ - -/* End of table Total Length = 0x0015 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/jis0208.ut b/mozilla/lib/libi18n/unicode/utotbl/jis0208.ut deleted file mode 100644 index 57ff1c07c59..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/jis0208.ut +++ /dev/null @@ -1,2508 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 2152 - srcEnd = 215B - destBegin = 3008 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 2330 - srcEnd = 2339 - destBegin = FF10 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 2341 - srcEnd = 235A - destBegin = FF21 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 2361 - srcEnd = 237A - destBegin = FF41 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 2421 - srcEnd = 2473 - destBegin = 3041 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 2521 - srcEnd = 2576 - destBegin = 30A1 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 2621 - srcEnd = 2631 - destBegin = 0391 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 2632 - srcEnd = 2638 - destBegin = 03A3 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2641 - srcEnd = 2651 - destBegin = 03B1 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2652 - srcEnd = 2658 - destBegin = 03C3 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 2721 - srcEnd = 2726 - destBegin = 0410 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 2728 - srcEnd = 2741 - destBegin = 0416 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 2751 - srcEnd = 2756 - destBegin = 0430 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 2758 - srcEnd = 2771 - destBegin = 0436 -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 2121 - srcEnd = 217E - mappingOffset = 0000 - Mapping = - 3000 3001 3002 FF0C FF0E 30FB FF1A FF1B - FF1F FF01 309B 309C 00B4 FF40 00A8 FF3E - FFE3 FF3F 30FD 30FE 309D 309E 3003 4EDD - 3005 3006 3007 30FC 2015 2010 FF0F 005C - 301C 2016 FF5C 2026 2025 2018 2019 201C - 201D FF08 FF09 3014 3015 FF3B FF3D FF5B - FF5D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FF0B 2212 00B1 00D7 00F7 - FF1D 2260 FF1C FF1E 2266 2267 221E 2234 - 2642 2640 00B0 2032 2033 2103 FFE5 FF04 - 00A2 00A3 FF05 FF03 FF06 FF0A FF20 00A7 - 2606 2605 25CB 25CF 25CE 25C7 -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 2221 - srcEnd = 222E - mappingOffset = 005E - Mapping = - 25C6 25A1 25A0 25B3 25B2 25BD 25BC 203B - 3012 2192 2190 2191 2193 3013 -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 223A - srcEnd = 2250 - mappingOffset = 006C - Mapping = - 2208 220B 2286 2287 2282 2283 222A 2229 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2227 2228 00AC 21D2 21D4 2200 2203 -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 225C - srcEnd = 227E - mappingOffset = 0083 - Mapping = - 2220 22A5 2312 2202 2207 2261 2252 226A - 226B 221A 223D 221D 2235 222B 222C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 212B 2030 - 266F 266D 266A 2020 2021 00B6 FFFD FFFD - FFFD FFFD 25EF -End of Item 0011 - -Begin of Item 0012 - Format 2 - srcBegin = 2727 - destBegin = 0401 -End of Item 0012 - -Begin of Item 0013 - Format 2 - srcBegin = 2757 - destBegin = 0451 -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 2821 - srcEnd = 2840 - mappingOffset = 00A6 - Mapping = - 2500 2502 250C 2510 2518 2514 251C 252C - 2524 2534 253C 2501 2503 250F 2513 251B - 2517 2523 2533 252B 253B 254B 2520 252F - 2528 2537 253F 251D 2530 2525 2538 2542 -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 3021 - srcEnd = 307E - mappingOffset = 00C6 - Mapping = - 4E9C 5516 5A03 963F 54C0 611B 6328 59F6 - 9022 8475 831C 7A50 60AA 63E1 6E25 65ED - 8466 82A6 9BF5 6893 5727 65A1 6271 5B9B - 59D0 867B 98F4 7D62 7DBE 9B8E 6216 7C9F - 88B7 5B89 5EB5 6309 6697 6848 95C7 978D - 674F 4EE5 4F0A 4F4D 4F9D 5049 56F2 5937 - 59D4 5A01 5C09 60DF 610F 6170 6613 6905 - 70BA 754F 7570 79FB 7DAD 7DEF 80C3 840E - 8863 8B02 9055 907A 533B 4E95 4EA5 57DF - 80B2 90C1 78EF 4E00 58F1 6EA2 9038 7A32 - 8328 828B 9C2F 5141 5370 54BD 54E1 56E0 - 59FB 5F15 98F2 6DEB 80E4 852D -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = 3121 - srcEnd = 317E - mappingOffset = 0124 - Mapping = - 9662 9670 96A0 97FB 540B 53F3 5B87 70CF - 7FBD 8FC2 96E8 536F 9D5C 7ABA 4E11 7893 - 81FC 6E26 5618 5504 6B1D 851A 9C3B 59E5 - 53A9 6D66 74DC 958F 5642 4E91 904B 96F2 - 834F 990C 53E1 55B6 5B30 5F71 6620 66F3 - 6804 6C38 6CF3 6D29 745B 76C8 7A4E 9834 - 82F1 885B 8A60 92ED 6DB2 75AB 76CA 99C5 - 60A6 8B01 8D8A 95B2 698E 53AD 5186 5712 - 5830 5944 5BB4 5EF6 6028 63A9 63F4 6CBF - 6F14 708E 7114 7159 71D5 733F 7E01 8276 - 82D1 8597 9060 925B 9D1B 5869 65BC 6C5A - 7525 51F9 592E 5965 5F80 5FDC -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 3221 - srcEnd = 327E - mappingOffset = 0182 - Mapping = - 62BC 65FA 6A2A 6B27 6BB4 738B 7FC1 8956 - 9D2C 9D0E 9EC4 5CA1 6C96 837B 5104 5C4B - 61B6 81C6 6876 7261 4E59 4FFA 5378 6069 - 6E29 7A4F 97F3 4E0B 5316 4EEE 4F55 4F3D - 4FA1 4F73 52A0 53EF 5609 590F 5AC1 5BB6 - 5BE1 79D1 6687 679C 67B6 6B4C 6CB3 706B - 73C2 798D 79BE 7A3C 7B87 82B1 82DB 8304 - 8377 83EF 83D3 8766 8AB2 5629 8CA8 8FE6 - 904E 971E 868A 4FC4 5CE8 6211 7259 753B - 81E5 82BD 86FE 8CC0 96C5 9913 99D5 4ECB - 4F1A 89E3 56DE 584A 58CA 5EFB 5FEB 602A - 6094 6062 61D0 6212 62D0 6539 -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 3321 - srcEnd = 337E - mappingOffset = 01E0 - Mapping = - 9B41 6666 68B0 6D77 7070 754C 7686 7D75 - 82A5 87F9 958B 968E 8C9D 51F1 52BE 5916 - 54B3 5BB3 5D16 6168 6982 6DAF 788D 84CB - 8857 8A72 93A7 9AB8 6D6C 99A8 86D9 57A3 - 67FF 86CE 920E 5283 5687 5404 5ED3 62E1 - 64B9 683C 6838 6BBB 7372 78BA 7A6B 899A - 89D2 8D6B 8F03 90ED 95A3 9694 9769 5B66 - 5CB3 697D 984D 984E 639B 7B20 6A2B 6A7F - 68B6 9C0D 6F5F 5272 559D 6070 62EC 6D3B - 6E07 6ED1 845B 8910 8F44 4E14 9C39 53F6 - 691B 6A3A 9784 682A 515C 7AC3 84B2 91DC - 938C 565B 9D28 6822 8305 8431 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 3421 - srcEnd = 347E - mappingOffset = 023E - Mapping = - 7CA5 5208 82C5 74E6 4E7E 4F83 51A0 5BD2 - 520A 52D8 52E7 5DFB 559A 582A 59E6 5B8C - 5B98 5BDB 5E72 5E79 60A3 611F 6163 61BE - 63DB 6562 67D1 6853 68FA 6B3E 6B53 6C57 - 6F22 6F97 6F45 74B0 7518 76E3 770B 7AFF - 7BA1 7C21 7DE9 7F36 7FF0 809D 8266 839E - 89B3 8ACC 8CAB 9084 9451 9593 9591 95A2 - 9665 97D3 9928 8218 4E38 542B 5CB8 5DCC - 73A9 764C 773C 5CA9 7FEB 8D0B 96C1 9811 - 9854 9858 4F01 4F0E 5371 559C 5668 57FA - 5947 5B09 5BC4 5C90 5E0C 5E7E 5FCC 63EE - 673A 65D7 65E2 671F 68CB 68C4 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 3521 - srcEnd = 357E - mappingOffset = 029C - Mapping = - 6A5F 5E30 6BC5 6C17 6C7D 757F 7948 5B63 - 7A00 7D00 5FBD 898F 8A18 8CB4 8D77 8ECC - 8F1D 98E2 9A0E 9B3C 4E80 507D 5100 5993 - 5B9C 622F 6280 64EC 6B3A 72A0 7591 7947 - 7FA9 87FB 8ABC 8B70 63AC 83CA 97A0 5409 - 5403 55AB 6854 6A58 8A70 7827 6775 9ECD - 5374 5BA2 811A 8650 9006 4E18 4E45 4EC7 - 4F11 53CA 5438 5BAE 5F13 6025 6551 673D - 6C42 6C72 6CE3 7078 7403 7A76 7AAE 7B08 - 7D1A 7CFE 7D66 65E7 725B 53BB 5C45 5DE8 - 62D2 62E0 6319 6E20 865A 8A31 8DDD 92F8 - 6F01 79A6 9B5A 4EA8 4EAB 4EAC -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 3621 - srcEnd = 367E - mappingOffset = 02FA - Mapping = - 4F9B 4FA0 50D1 5147 7AF6 5171 51F6 5354 - 5321 537F 53EB 55AC 5883 5CE1 5F37 5F4A - 602F 6050 606D 631F 6559 6A4B 6CC1 72C2 - 72ED 77EF 80F8 8105 8208 854E 90F7 93E1 - 97FF 9957 9A5A 4EF0 51DD 5C2D 6681 696D - 5C40 66F2 6975 7389 6850 7C81 50C5 52E4 - 5747 5DFE 9326 65A4 6B23 6B3D 7434 7981 - 79BD 7B4B 7DCA 82B9 83CC 887F 895F 8B39 - 8FD1 91D1 541F 9280 4E5D 5036 53E5 533A - 72D7 7396 77E9 82E6 8EAF 99C6 99C8 99D2 - 5177 611A 865E 55B0 7A7A 5076 5BD3 9047 - 9685 4E32 6ADB 91E7 5C51 5C48 -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 3721 - srcEnd = 377E - mappingOffset = 0358 - Mapping = - 6398 7A9F 6C93 9774 8F61 7AAA 718A 9688 - 7C82 6817 7E70 6851 936C 52F2 541B 85AB - 8A13 7FA4 8ECD 90E1 5366 8888 7941 4FC2 - 50BE 5211 5144 5553 572D 73EA 578B 5951 - 5F62 5F84 6075 6176 6167 61A9 63B2 643A - 656C 666F 6842 6E13 7566 7A3D 7CFB 7D4C - 7D99 7E4B 7F6B 830E 834A 86CD 8A08 8A63 - 8B66 8EFD 981A 9D8F 82B8 8FCE 9BE8 5287 - 621F 6483 6FC0 9699 6841 5091 6B20 6C7A - 6F54 7A74 7D50 8840 8A23 6708 4EF6 5039 - 5026 5065 517C 5238 5263 55A7 570F 5805 - 5ACC 5EFA 61B2 61F8 62F3 6372 -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 3821 - srcEnd = 387E - mappingOffset = 03B6 - Mapping = - 691C 6A29 727D 72AC 732E 7814 786F 7D79 - 770C 80A9 898B 8B19 8CE2 8ED2 9063 9375 - 967A 9855 9A13 9E78 5143 539F 53B3 5E7B - 5F26 6E1B 6E90 7384 73FE 7D43 8237 8A00 - 8AFA 9650 4E4E 500B 53E4 547C 56FA 59D1 - 5B64 5DF1 5EAB 5F27 6238 6545 67AF 6E56 - 72D0 7CCA 88B4 80A1 80E1 83F0 864E 8A87 - 8DE8 9237 96C7 9867 9F13 4E94 4E92 4F0D - 5348 5449 543E 5A2F 5F8C 5FA1 609F 68A7 - 6A8E 745A 7881 8A9E 8AA4 8B77 9190 4E5E - 9BC9 4EA4 4F7C 4FAF 5019 5016 5149 516C - 529F 52B9 52FE 539A 53E3 5411 -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 3921 - srcEnd = 397E - mappingOffset = 0414 - Mapping = - 540E 5589 5751 57A2 597D 5B54 5B5D 5B8F - 5DE5 5DE7 5DF7 5E78 5E83 5E9A 5EB7 5F18 - 6052 614C 6297 62D8 63A7 653B 6602 6643 - 66F4 676D 6821 6897 69CB 6C5F 6D2A 6D69 - 6E2F 6E9D 7532 7687 786C 7A3F 7CE0 7D05 - 7D18 7D5E 7DB1 8015 8003 80AF 80B1 8154 - 818F 822A 8352 884C 8861 8B1B 8CA2 8CFC - 90CA 9175 9271 783F 92FC 95A4 964D 9805 - 9999 9AD8 9D3B 525B 52AB 53F7 5408 58D5 - 62F7 6FE0 8C6A 8F5F 9EB9 514B 523B 544A - 56FD 7A40 9177 9D60 9ED2 7344 6F09 8170 - 7511 5FFD 60DA 9AA8 72DB 8FBC -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 3A21 - srcEnd = 3A7E - mappingOffset = 0472 - Mapping = - 6B64 9803 4ECA 56F0 5764 58BE 5A5A 6068 - 61C7 660F 6606 6839 68B1 6DF7 75D5 7D3A - 826E 9B42 4E9B 4F50 53C9 5506 5D6F 5DE6 - 5DEE 67FB 6C99 7473 7802 8A50 9396 88DF - 5750 5EA7 632B 50B5 50AC 518D 6700 54C9 - 585E 59BB 5BB0 5F69 624D 63A1 683D 6B73 - 6E08 707D 91C7 7280 7815 7826 796D 658E - 7D30 83DC 88C1 8F09 969B 5264 5728 6750 - 7F6A 8CA1 51B4 5742 962A 583A 698A 80B4 - 54B2 5D0E 57FC 7895 9DFA 4F5C 524A 548B - 643E 6628 6714 67F5 7A84 7B56 7D22 932F - 685C 9BAD 7B39 5319 518A 5237 -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 3B21 - srcEnd = 3B7E - mappingOffset = 04D0 - Mapping = - 5BDF 62F6 64AE 64E6 672D 6BBA 85A9 96D1 - 7690 9BD6 634C 9306 9BAB 76BF 6652 4E09 - 5098 53C2 5C71 60E8 6492 6563 685F 71E6 - 73CA 7523 7B97 7E82 8695 8B83 8CDB 9178 - 9910 65AC 66AB 6B8B 4ED5 4ED4 4F3A 4F7F - 523A 53F8 53F2 55E3 56DB 58EB 59CB 59C9 - 59FF 5B50 5C4D 5E02 5E2B 5FD7 601D 6307 - 652F 5B5C 65AF 65BD 65E8 679D 6B62 6B7B - 6C0F 7345 7949 79C1 7CF8 7D19 7D2B 80A2 - 8102 81F3 8996 8A5E 8A69 8A66 8A8C 8AEE - 8CC7 8CDC 96CC 98FC 6B6F 4E8B 4F3C 4F8D - 5150 5B57 5BFA 6148 6301 6642 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 3C21 - srcEnd = 3C7E - mappingOffset = 052E - Mapping = - 6B21 6ECB 6CBB 723E 74BD 75D4 78C1 793A - 800C 8033 81EA 8494 8F9E 6C50 9E7F 5F0F - 8B58 9D2B 7AFA 8EF8 5B8D 96EB 4E03 53F1 - 57F7 5931 5AC9 5BA4 6089 6E7F 6F06 75BE - 8CEA 5B9F 8500 7BE0 5072 67F4 829D 5C61 - 854A 7E1E 820E 5199 5C04 6368 8D66 659C - 716E 793E 7D17 8005 8B1D 8ECA 906E 86C7 - 90AA 501F 52FA 5C3A 6753 707C 7235 914C - 91C8 932B 82E5 5BC2 5F31 60F9 4E3B 53D6 - 5B88 624B 6731 6B8A 72E9 73E0 7A2E 816B - 8DA3 9152 9996 5112 53D7 546A 5BFF 6388 - 6A39 7DAC 9700 56DA 53CE 5468 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 3D21 - srcEnd = 3D7E - mappingOffset = 058C - Mapping = - 5B97 5C31 5DDE 4FEE 6101 62FE 6D32 79C0 - 79CB 7D42 7E4D 7FD2 81ED 821F 8490 8846 - 8972 8B90 8E74 8F2F 9031 914B 916C 96C6 - 919C 4EC0 4F4F 5145 5341 5F93 620E 67D4 - 6C41 6E0B 7363 7E26 91CD 9283 53D4 5919 - 5BBF 6DD1 795D 7E2E 7C9B 587E 719F 51FA - 8853 8FF0 4FCA 5CFB 6625 77AC 7AE3 821C - 99FF 51C6 5FAA 65EC 696F 6B89 6DF3 6E96 - 6F64 76FE 7D14 5DE1 9075 9187 9806 51E6 - 521D 6240 6691 66D9 6E1A 5EB6 7DD2 7F72 - 66F8 85AF 85F7 8AF8 52A9 53D9 5973 5E8F - 5F90 6055 92E4 9664 50B7 511F -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 3E21 - srcEnd = 3E7E - mappingOffset = 05EA - Mapping = - 52DD 5320 5347 53EC 54E8 5546 5531 5617 - 5968 59BE 5A3C 5BB5 5C06 5C0F 5C11 5C1A - 5E84 5E8A 5EE0 5F70 627F 6284 62DB 638C - 6377 6607 660C 662D 6676 677E 68A2 6A1F - 6A35 6CBC 6D88 6E09 6E58 713C 7126 7167 - 75C7 7701 785D 7901 7965 79F0 7AE0 7B11 - 7CA7 7D39 8096 83D6 848B 8549 885D 88F3 - 8A1F 8A3C 8A54 8A73 8C61 8CDE 91A4 9266 - 937E 9418 969C 9798 4E0A 4E08 4E1E 4E57 - 5197 5270 57CE 5834 58CC 5B22 5E38 60C5 - 64FE 6761 6756 6D44 72B6 7573 7A63 84B8 - 8B72 91B8 9320 5631 57F4 98FE -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 3F21 - srcEnd = 3F7E - mappingOffset = 0648 - Mapping = - 62ED 690D 6B96 71ED 7E54 8077 8272 89E6 - 98DF 8755 8FB1 5C3B 4F38 4FE1 4FB5 5507 - 5A20 5BDD 5BE9 5FC3 614E 632F 65B0 664B - 68EE 699B 6D78 6DF1 7533 75B9 771F 795E - 79E6 7D33 81E3 82AF 85AA 89AA 8A3A 8EAB - 8F9B 9032 91DD 9707 4EBA 4EC1 5203 5875 - 58EC 5C0B 751A 5C3D 814E 8A0A 8FC5 9663 - 976D 7B25 8ACF 9808 9162 56F3 53A8 9017 - 5439 5782 5E25 63A8 6C34 708A 7761 7C8B - 7FE0 8870 9042 9154 9310 9318 968F 745E - 9AC4 5D07 5D69 6570 67A2 8DA8 96DB 636E - 6749 6919 83C5 9817 96C0 88FE -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 4021 - srcEnd = 407E - mappingOffset = 06A6 - Mapping = - 6F84 647A 5BF8 4E16 702C 755D 662F 51C4 - 5236 52E2 59D3 5F81 6027 6210 653F 6574 - 661F 6674 68F2 6816 6B63 6E05 7272 751F - 76DB 7CBE 8056 58F0 88FD 897F 8AA0 8A93 - 8ACB 901D 9192 9752 9759 6589 7A0E 8106 - 96BB 5E2D 60DC 621A 65A5 6614 6790 77F3 - 7A4D 7C4D 7E3E 810A 8CAC 8D64 8DE1 8E5F - 78A9 5207 62D9 63A5 6442 6298 8A2D 7A83 - 7BC0 8AAC 96EA 7D76 820C 8749 4ED9 5148 - 5343 5360 5BA3 5C02 5C16 5DDD 6226 6247 - 64B0 6813 6834 6CC9 6D45 6D17 67D3 6F5C - 714E 717D 65CB 7A7F 7BAD 7DDA -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 4121 - srcEnd = 417E - mappingOffset = 0704 - Mapping = - 7E4A 7FA8 817A 821B 8239 85A6 8A6E 8CCE - 8DF5 9078 9077 92AD 9291 9583 9BAE 524D - 5584 6F38 7136 5168 7985 7E55 81B3 7CCE - 564C 5851 5CA8 63AA 66FE 66FD 695A 72D9 - 758F 758E 790E 7956 79DF 7C97 7D20 7D44 - 8607 8A34 963B 9061 9F20 50E7 5275 53CC - 53E2 5009 55AA 58EE 594F 723D 5B8B 5C64 - 531D 60E3 60F3 635C 6383 633F 63BB 64CD - 65E9 66F9 5DE3 69CD 69FD 6F15 71E5 4E89 - 75E9 76F8 7A93 7CDF 7DCF 7D9C 8061 8349 - 8358 846C 84BC 85FB 88C5 8D70 9001 906D - 9397 971C 9A12 50CF 5897 618E -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 4221 - srcEnd = 427E - mappingOffset = 0762 - Mapping = - 81D3 8535 8D08 9020 4FC3 5074 5247 5373 - 606F 6349 675F 6E2C 8DB3 901F 4FD7 5C5E - 8CCA 65CF 7D9A 5352 8896 5176 63C3 5B58 - 5B6B 5C0A 640D 6751 905C 4ED6 591A 592A - 6C70 8A51 553E 5815 59A5 60F0 6253 67C1 - 8235 6955 9640 99C4 9A28 4F53 5806 5BFE - 8010 5CB1 5E2F 5F85 6020 614B 6234 66FF - 6CF0 6EDE 80CE 817F 82D4 888B 8CB8 9000 - 902E 968A 9EDB 9BDB 4EE3 53F0 5927 7B2C - 918D 984C 9DF9 6EDD 7027 5353 5544 5B85 - 6258 629E 62D3 6CA2 6FEF 7422 8A17 9438 - 6FC1 8AFE 8338 51E7 86F8 53EA -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 4321 - srcEnd = 437E - mappingOffset = 07C0 - Mapping = - 53E9 4F46 9054 8FB0 596A 8131 5DFD 7AEA - 8FBF 68DA 8C37 72F8 9C48 6A3D 8AB0 4E39 - 5358 5606 5766 62C5 63A2 65E6 6B4E 6DE1 - 6E5B 70AD 77ED 7AEF 7BAA 7DBB 803D 80C6 - 86CB 8A95 935B 56E3 58C7 5F3E 65AD 6696 - 6A80 6BB5 7537 8AC7 5024 77E5 5730 5F1B - 6065 667A 6C60 75F4 7A1A 7F6E 81F4 8718 - 9045 99B3 7BC9 755C 7AF9 7B51 84C4 9010 - 79E9 7A92 8336 5AE1 7740 4E2D 4EF2 5B99 - 5FE0 62BD 663C 67F1 6CE8 866B 8877 8A3B - 914E 92F3 99D0 6A17 7026 732A 82E7 8457 - 8CAF 4E01 5146 51CB 558B 5BF5 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 4421 - srcEnd = 447E - mappingOffset = 081E - Mapping = - 5E16 5E33 5E81 5F14 5F35 5F6B 5FB4 61F2 - 6311 66A2 671D 6F6E 7252 753A 773A 8074 - 8139 8178 8776 8ABF 8ADC 8D85 8DF3 929A - 9577 9802 9CE5 52C5 6357 76F4 6715 6C88 - 73CD 8CC3 93AE 9673 6D25 589C 690E 69CC - 8FFD 939A 75DB 901A 585A 6802 63B4 69FB - 4F43 6F2C 67D8 8FBB 8526 7DB4 9354 693F - 6F70 576A 58F7 5B2C 7D2C 722A 540A 91E3 - 9DB4 4EAD 4F4E 505C 5075 5243 8C9E 5448 - 5824 5B9A 5E1D 5E95 5EAD 5EF7 5F1F 608C - 62B5 633A 63D0 68AF 6C40 7887 798E 7A0B - 7DE0 8247 8A02 8AE6 8E44 9013 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 4521 - srcEnd = 457E - mappingOffset = 087C - Mapping = - 90B8 912D 91D8 9F0E 6CE5 6458 64E2 6575 - 6EF4 7684 7B1B 9069 93D1 6EBA 54F2 5FB9 - 64A4 8F4D 8FED 9244 5178 586B 5929 5C55 - 5E97 6DFB 7E8F 751C 8CBC 8EE2 985B 70B9 - 4F1D 6BBF 6FB1 7530 96FB 514E 5410 5835 - 5857 59AC 5C60 5F92 6597 675C 6E21 767B - 83DF 8CED 9014 90FD 934D 7825 783A 52AA - 5EA6 571F 5974 6012 5012 515A 51AC 51CD - 5200 5510 5854 5858 5957 5B95 5CF6 5D8B - 60BC 6295 642D 6771 6843 68BC 68DF 76D7 - 6DD8 6E6F 6D9B 706F 71C8 5F53 75D8 7977 - 7B49 7B54 7B52 7CD6 7D71 5230 -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 4621 - srcEnd = 467E - mappingOffset = 08DA - Mapping = - 8463 8569 85E4 8A0E 8B04 8C46 8E0F 9003 - 900F 9419 9676 982D 9A30 95D8 50CD 52D5 - 540C 5802 5C0E 61A7 649E 6D1E 77B3 7AE5 - 80F4 8404 9053 9285 5CE0 9D07 533F 5F97 - 5FB3 6D9C 7279 7763 79BF 7BE4 6BD2 72EC - 8AAD 6803 6A61 51F8 7A81 6934 5C4A 9CF6 - 82EB 5BC5 9149 701E 5678 5C6F 60C7 6566 - 6C8C 8C5A 9041 9813 5451 66C7 920D 5948 - 90A3 5185 4E4D 51EA 8599 8B0E 7058 637A - 934B 6962 99B4 7E04 7577 5357 6960 8EDF - 96E3 6C5D 4E8C 5C3C 5F10 8FE9 5302 8CD1 - 8089 8679 5EFF 65E5 4E73 5165 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 4721 - srcEnd = 477E - mappingOffset = 0938 - Mapping = - 5982 5C3F 97EE 4EFB 598A 5FCD 8A8D 6FE1 - 79B0 7962 5BE7 8471 732B 71B1 5E74 5FF5 - 637B 649A 71C3 7C98 4E43 5EFC 4E4B 57DC - 56A2 60A9 6FC3 7D0D 80FD 8133 81BF 8FB2 - 8997 86A4 5DF4 628A 64AD 8987 6777 6CE2 - 6D3E 7436 7834 5A46 7F75 82AD 99AC 4FF3 - 5EC3 62DD 6392 6557 676F 76C3 724C 80CC - 80BA 8F29 914D 500D 57F9 5A92 6885 6973 - 7164 72FD 8CB7 58F2 8CE0 966A 9019 877F - 79E4 77E7 8429 4F2F 5265 535A 62CD 67CF - 6CCA 767D 7B94 7C95 8236 8584 8FEB 66DD - 6F20 7206 7E1B 83AB 99C1 9EA6 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 4821 - srcEnd = 487E - mappingOffset = 0996 - Mapping = - 51FD 7BB1 7872 7BB8 8087 7B48 6AE8 5E61 - 808C 7551 7560 516B 9262 6E8C 767A 9197 - 9AEA 4F10 7F70 629C 7B4F 95A5 9CE9 567A - 5859 86E4 96BC 4F34 5224 534A 53CD 53DB - 5E06 642C 6591 677F 6C3E 6C4E 7248 72AF - 73ED 7554 7E41 822C 85E9 8CA9 7BC4 91C6 - 7169 9812 98EF 633D 6669 756A 76E4 78D0 - 8543 86EE 532A 5351 5426 5983 5E87 5F7C - 60B2 6249 6279 62AB 6590 6BD4 6CCC 75B2 - 76AE 7891 79D8 7DCB 7F77 80A5 88AB 8AB9 - 8CBB 907F 975E 98DB 6A0B 7C38 5099 5C3E - 5FAE 6787 6BD8 7435 7709 7F8E -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 4921 - srcEnd = 497E - mappingOffset = 09F4 - Mapping = - 9F3B 67CA 7A17 5339 758B 9AED 5F66 819D - 83F1 8098 5F3C 5FC5 7562 7B46 903C 6867 - 59EB 5A9B 7D10 767E 8B2C 4FF5 5F6A 6A19 - 6C37 6F02 74E2 7968 8868 8A55 8C79 5EDF - 63CF 75C5 79D2 82D7 9328 92F2 849C 86ED - 9C2D 54C1 5F6C 658C 6D5C 7015 8CA7 8CD3 - 983B 654F 74F6 4E0D 4ED8 57E0 592B 5A66 - 5BCC 51A8 5E03 5E9C 6016 6276 6577 65A7 - 666E 6D6E 7236 7B26 8150 819A 8299 8B5C - 8CA0 8CE6 8D74 961C 9644 4FAE 64AB 6B66 - 821E 8461 856A 90E8 5C01 6953 98A8 847A - 8557 4F0F 526F 5FA9 5E45 670D -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 4A21 - srcEnd = 4A7E - mappingOffset = 0A52 - Mapping = - 798F 8179 8907 8986 6DF5 5F17 6255 6CB8 - 4ECF 7269 9B92 5206 543B 5674 58B3 61A4 - 626E 711A 596E 7C89 7CDE 7D1B 96F0 6587 - 805E 4E19 4F75 5175 5840 5E63 5E73 5F0A - 67C4 4E26 853D 9589 965B 7C73 9801 50FB - 58C1 7656 78A7 5225 77A5 8511 7B86 504F - 5909 7247 7BC7 7DE8 8FBA 8FD4 904D 4FBF - 52C9 5A29 5F01 97AD 4FDD 8217 92EA 5703 - 6355 6B69 752B 88DC 8F14 7A42 52DF 5893 - 6155 620A 66AE 6BCD 7C3F 83E9 5023 4FF8 - 5305 5446 5831 5949 5B9D 5CF0 5CEF 5D29 - 5E96 62B1 6367 653E 65B9 670B -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 4B21 - srcEnd = 4B7E - mappingOffset = 0AB0 - Mapping = - 6CD5 6CE1 70F9 7832 7E2B 80DE 82B3 840C - 84EC 8702 8912 8A2A 8C4A 90A6 92D2 98FD - 9CF3 9D6C 4E4F 4EA1 508D 5256 574A 59A8 - 5E3D 5FD8 5FD9 623F 66B4 671B 67D0 68D2 - 5192 7D21 80AA 81A8 8B00 8C8C 8CBF 927E - 9632 5420 982C 5317 50D5 535C 58A8 64B2 - 6734 7267 7766 7A46 91E6 52C3 6CA1 6B86 - 5800 5E4C 5954 672C 7FFB 51E1 76C6 6469 - 78E8 9B54 9EBB 57CB 59B9 6627 679A 6BCE - 54E9 69D9 5E55 819C 6795 9BAA 67FE 9C52 - 685D 4EA6 4FE3 53C8 62B9 672B 6CAB 8FC4 - 4FAD 7E6D 9EBF 4E07 6162 6E80 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 4C21 - srcEnd = 4C7E - mappingOffset = 0B0E - Mapping = - 6F2B 8513 5473 672A 9B45 5DF3 7B95 5CAC - 5BC6 871C 6E4A 84D1 7A14 8108 5999 7C8D - 6C11 7720 52D9 5922 7121 725F 77DB 9727 - 9D61 690B 5A7F 5A18 51A5 540D 547D 660E - 76DF 8FF7 9298 9CF4 59EA 725D 6EC5 514D - 68C9 7DBF 7DEC 9762 9EBA 6478 6A21 8302 - 5984 5B5F 6BDB 731B 76F2 7DB2 8017 8499 - 5132 6728 9ED9 76EE 6762 52FF 9905 5C24 - 623B 7C7E 8CB0 554F 60B6 7D0B 9580 5301 - 4E5F 51B6 591C 723A 8036 91CE 5F25 77E2 - 5384 5F79 7D04 85AC 8A33 8E8D 9756 67F3 - 85AE 9453 6109 6108 6CB9 7652 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 4D21 - srcEnd = 4D7E - mappingOffset = 0B6C - Mapping = - 8AED 8F38 552F 4F51 512A 52C7 53CB 5BA5 - 5E7D 60A0 6182 63D6 6709 67DA 6E67 6D8C - 7336 7337 7531 7950 88D5 8A98 904A 9091 - 90F5 96C4 878D 5915 4E88 4F59 4E0E 8A89 - 8F3F 9810 50AD 5E7C 5996 5BB9 5EB8 63DA - 63FA 64C1 66DC 694A 69D8 6D0B 6EB6 7194 - 7528 7AAF 7F8A 8000 8449 84C9 8981 8B21 - 8E0A 9065 967D 990A 617E 6291 6B32 6C83 - 6D74 7FCC 7FFC 6DC0 7F85 87BA 88F8 6765 - 83B1 983C 96F7 6D1B 7D61 843D 916A 4E71 - 5375 5D50 6B04 6FEB 85CD 862D 89A7 5229 - 540F 5C65 674E 68A8 7406 7483 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 4E21 - srcEnd = 4E7E - mappingOffset = 0BCA - Mapping = - 75E2 88CF 88E1 91CC 96E2 9678 5F8B 7387 - 7ACB 844E 63A0 7565 5289 6D41 6E9C 7409 - 7559 786B 7C92 9686 7ADC 9F8D 4FB6 616E - 65C5 865C 4E86 4EAE 50DA 4E21 51CC 5BEE - 6599 6881 6DBC 731F 7642 77AD 7A1C 7CE7 - 826F 8AD2 907C 91CF 9675 9818 529B 7DD1 - 502B 5398 6797 6DCB 71D0 7433 81E8 8F2A - 96A3 9C57 9E9F 7460 5841 6D99 7D2F 985E - 4EE4 4F36 4F8B 51B7 52B1 5DBA 601C 73B2 - 793C 82D3 9234 96B7 96F6 970A 9E97 9F62 - 66A6 6B74 5217 52A3 70C8 88C2 5EC9 604B - 6190 6F23 7149 7C3E 7DF4 806F -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 4F21 - srcEnd = 4F53 - mappingOffset = 0C28 - Mapping = - 84EE 9023 932C 5442 9B6F 6AD3 7089 8CC2 - 8DEF 9732 52B4 5A41 5ECA 5F04 6717 697C - 6994 6D6A 6F0F 7262 72FC 7BED 8001 807E - 874B 90CE 516D 9E93 7984 808B 9332 8AD6 - 502D 548C 8A71 6B6A 8CC4 8107 60D1 67A0 - 9DF2 4E99 4E98 9C10 8A6B 85C1 8568 6900 - 6E7E 7897 8155 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 5021 - srcEnd = 507E - mappingOffset = 0C5B - Mapping = - 5F0C 4E10 4E15 4E2A 4E31 4E36 4E3C 4E3F - 4E42 4E56 4E58 4E82 4E85 8C6B 4E8A 8212 - 5F0D 4E8E 4E9E 4E9F 4EA0 4EA2 4EB0 4EB3 - 4EB6 4ECE 4ECD 4EC4 4EC6 4EC2 4ED7 4EDE - 4EED 4EDF 4EF7 4F09 4F5A 4F30 4F5B 4F5D - 4F57 4F47 4F76 4F88 4F8F 4F98 4F7B 4F69 - 4F70 4F91 4F6F 4F86 4F96 5118 4FD4 4FDF - 4FCE 4FD8 4FDB 4FD1 4FDA 4FD0 4FE4 4FE5 - 501A 5028 5014 502A 5025 5005 4F1C 4FF6 - 5021 5029 502C 4FFE 4FEF 5011 5006 5043 - 5047 6703 5055 5050 5048 505A 5056 506C - 5078 5080 509A 5085 50B4 50B2 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 5121 - srcEnd = 517E - mappingOffset = 0CB9 - Mapping = - 50C9 50CA 50B3 50C2 50D6 50DE 50E5 50ED - 50E3 50EE 50F9 50F5 5109 5101 5102 5116 - 5115 5114 511A 5121 513A 5137 513C 513B - 513F 5140 5152 514C 5154 5162 7AF8 5169 - 516A 516E 5180 5182 56D8 518C 5189 518F - 5191 5193 5195 5196 51A4 51A6 51A2 51A9 - 51AA 51AB 51B3 51B1 51B2 51B0 51B5 51BD - 51C5 51C9 51DB 51E0 8655 51E9 51ED 51F0 - 51F5 51FE 5204 520B 5214 520E 5227 522A - 522E 5233 5239 524F 5244 524B 524C 525E - 5254 526A 5274 5269 5273 527F 527D 528D - 5294 5292 5271 5288 5291 8FA8 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 5221 - srcEnd = 527E - mappingOffset = 0D17 - Mapping = - 8FA7 52AC 52AD 52BC 52B5 52C1 52CD 52D7 - 52DE 52E3 52E6 98ED 52E0 52F3 52F5 52F8 - 52F9 5306 5308 7538 530D 5310 530F 5315 - 531A 5323 532F 5331 5333 5338 5340 5346 - 5345 4E17 5349 534D 51D6 535E 5369 536E - 5918 537B 5377 5382 5396 53A0 53A6 53A5 - 53AE 53B0 53B6 53C3 7C12 96D9 53DF 66FC - 71EE 53EE 53E8 53ED 53FA 5401 543D 5440 - 542C 542D 543C 542E 5436 5429 541D 544E - 548F 5475 548E 545F 5471 5477 5470 5492 - 547B 5480 5476 5484 5490 5486 54C7 54A2 - 54B8 54A5 54AC 54C4 54C8 54A8 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 5321 - srcEnd = 537E - mappingOffset = 0D75 - Mapping = - 54AB 54C2 54A4 54BE 54BC 54D8 54E5 54E6 - 550F 5514 54FD 54EE 54ED 54FA 54E2 5539 - 5540 5563 554C 552E 555C 5545 5556 5557 - 5538 5533 555D 5599 5580 54AF 558A 559F - 557B 557E 5598 559E 55AE 557C 5583 55A9 - 5587 55A8 55DA 55C5 55DF 55C4 55DC 55E4 - 55D4 5614 55F7 5616 55FE 55FD 561B 55F9 - 564E 5650 71DF 5634 5636 5632 5638 566B - 5664 562F 566C 566A 5686 5680 568A 56A0 - 5694 568F 56A5 56AE 56B6 56B4 56C2 56BC - 56C1 56C3 56C0 56C8 56CE 56D1 56D3 56D7 - 56EE 56F9 5700 56FF 5704 5709 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 5421 - srcEnd = 547E - mappingOffset = 0DD3 - Mapping = - 5708 570B 570D 5713 5718 5716 55C7 571C - 5726 5737 5738 574E 573B 5740 574F 5769 - 57C0 5788 5761 577F 5789 5793 57A0 57B3 - 57A4 57AA 57B0 57C3 57C6 57D4 57D2 57D3 - 580A 57D6 57E3 580B 5819 581D 5872 5821 - 5862 584B 5870 6BC0 5852 583D 5879 5885 - 58B9 589F 58AB 58BA 58DE 58BB 58B8 58AE - 58C5 58D3 58D1 58D7 58D9 58D8 58E5 58DC - 58E4 58DF 58EF 58FA 58F9 58FB 58FC 58FD - 5902 590A 5910 591B 68A6 5925 592C 592D - 5932 5938 593E 7AD2 5955 5950 594E 595A - 5958 5962 5960 5967 596C 5969 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 5521 - srcEnd = 557E - mappingOffset = 0E31 - Mapping = - 5978 5981 599D 4F5E 4FAB 59A3 59B2 59C6 - 59E8 59DC 598D 59D9 59DA 5A25 5A1F 5A11 - 5A1C 5A09 5A1A 5A40 5A6C 5A49 5A35 5A36 - 5A62 5A6A 5A9A 5ABC 5ABE 5ACB 5AC2 5ABD - 5AE3 5AD7 5AE6 5AE9 5AD6 5AFA 5AFB 5B0C - 5B0B 5B16 5B32 5AD0 5B2A 5B36 5B3E 5B43 - 5B45 5B40 5B51 5B55 5B5A 5B5B 5B65 5B69 - 5B70 5B73 5B75 5B78 6588 5B7A 5B80 5B83 - 5BA6 5BB8 5BC3 5BC7 5BC9 5BD4 5BD0 5BE4 - 5BE6 5BE2 5BDE 5BE5 5BEB 5BF0 5BF6 5BF3 - 5C05 5C07 5C08 5C0D 5C13 5C20 5C22 5C28 - 5C38 5C39 5C41 5C46 5C4E 5C53 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 5621 - srcEnd = 567E - mappingOffset = 0E8F - Mapping = - 5C50 5C4F 5B71 5C6C 5C6E 4E62 5C76 5C79 - 5C8C 5C91 5C94 599B 5CAB 5CBB 5CB6 5CBC - 5CB7 5CC5 5CBE 5CC7 5CD9 5CE9 5CFD 5CFA - 5CED 5D8C 5CEA 5D0B 5D15 5D17 5D5C 5D1F - 5D1B 5D11 5D14 5D22 5D1A 5D19 5D18 5D4C - 5D52 5D4E 5D4B 5D6C 5D73 5D76 5D87 5D84 - 5D82 5DA2 5D9D 5DAC 5DAE 5DBD 5D90 5DB7 - 5DBC 5DC9 5DCD 5DD3 5DD2 5DD6 5DDB 5DEB - 5DF2 5DF5 5E0B 5E1A 5E19 5E11 5E1B 5E36 - 5E37 5E44 5E43 5E40 5E4E 5E57 5E54 5E5F - 5E62 5E64 5E47 5E75 5E76 5E7A 9EBC 5E7F - 5EA0 5EC1 5EC2 5EC8 5ED0 5ECF -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 5721 - srcEnd = 577E - mappingOffset = 0EED - Mapping = - 5ED6 5EE3 5EDD 5EDA 5EDB 5EE2 5EE1 5EE8 - 5EE9 5EEC 5EF1 5EF3 5EF0 5EF4 5EF8 5EFE - 5F03 5F09 5F5D 5F5C 5F0B 5F11 5F16 5F29 - 5F2D 5F38 5F41 5F48 5F4C 5F4E 5F2F 5F51 - 5F56 5F57 5F59 5F61 5F6D 5F73 5F77 5F83 - 5F82 5F7F 5F8A 5F88 5F91 5F87 5F9E 5F99 - 5F98 5FA0 5FA8 5FAD 5FBC 5FD6 5FFB 5FE4 - 5FF8 5FF1 5FDD 60B3 5FFF 6021 6060 6019 - 6010 6029 600E 6031 601B 6015 602B 6026 - 600F 603A 605A 6041 606A 6077 605F 604A - 6046 604D 6063 6043 6064 6042 606C 606B - 6059 6081 608D 60E7 6083 609A -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 5821 - srcEnd = 587E - mappingOffset = 0F4B - Mapping = - 6084 609B 6096 6097 6092 60A7 608B 60E1 - 60B8 60E0 60D3 60B4 5FF0 60BD 60C6 60B5 - 60D8 614D 6115 6106 60F6 60F7 6100 60F4 - 60FA 6103 6121 60FB 60F1 610D 610E 6147 - 613E 6128 6127 614A 613F 613C 612C 6134 - 613D 6142 6144 6173 6177 6158 6159 615A - 616B 6174 616F 6165 6171 615F 615D 6153 - 6175 6199 6196 6187 61AC 6194 619A 618A - 6191 61AB 61AE 61CC 61CA 61C9 61F7 61C8 - 61C3 61C6 61BA 61CB 7F79 61CD 61E6 61E3 - 61F6 61FA 61F4 61FF 61FD 61FC 61FE 6200 - 6208 6209 620D 620C 6214 621B -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 5921 - srcEnd = 597E - mappingOffset = 0FA9 - Mapping = - 621E 6221 622A 622E 6230 6232 6233 6241 - 624E 625E 6263 625B 6260 6268 627C 6282 - 6289 627E 6292 6293 6296 62D4 6283 6294 - 62D7 62D1 62BB 62CF 62FF 62C6 64D4 62C8 - 62DC 62CC 62CA 62C2 62C7 629B 62C9 630C - 62EE 62F1 6327 6302 6308 62EF 62F5 6350 - 633E 634D 641C 634F 6396 638E 6380 63AB - 6376 63A3 638F 6389 639F 63B5 636B 6369 - 63BE 63E9 63C0 63C6 63E3 63C9 63D2 63F6 - 63C4 6416 6434 6406 6413 6426 6436 651D - 6417 6428 640F 6467 646F 6476 644E 652A - 6495 6493 64A5 64A9 6488 64BC -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 5A21 - srcEnd = 5A7E - mappingOffset = 1007 - Mapping = - 64DA 64D2 64C5 64C7 64BB 64D8 64C2 64F1 - 64E7 8209 64E0 64E1 62AC 64E3 64EF 652C - 64F6 64F4 64F2 64FA 6500 64FD 6518 651C - 6505 6524 6523 652B 6534 6535 6537 6536 - 6538 754B 6548 6556 6555 654D 6558 655E - 655D 6572 6578 6582 6583 8B8A 659B 659F - 65AB 65B7 65C3 65C6 65C1 65C4 65CC 65D2 - 65DB 65D9 65E0 65E1 65F1 6772 660A 6603 - 65FB 6773 6635 6636 6634 661C 664F 6644 - 6649 6641 665E 665D 6664 6667 6668 665F - 6662 6670 6683 6688 668E 6689 6684 6698 - 669D 66C1 66B9 66C9 66BE 66BC -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 5B21 - srcEnd = 5B7E - mappingOffset = 1065 - Mapping = - 66C4 66B8 66D6 66DA 66E0 663F 66E6 66E9 - 66F0 66F5 66F7 670F 6716 671E 6726 6727 - 9738 672E 673F 6736 6741 6738 6737 6746 - 675E 6760 6759 6763 6764 6789 6770 67A9 - 677C 676A 678C 678B 67A6 67A1 6785 67B7 - 67EF 67B4 67EC 67B3 67E9 67B8 67E4 67DE - 67DD 67E2 67EE 67B9 67CE 67C6 67E7 6A9C - 681E 6846 6829 6840 684D 6832 684E 68B3 - 682B 6859 6863 6877 687F 689F 688F 68AD - 6894 689D 689B 6883 6AAE 68B9 6874 68B5 - 68A0 68BA 690F 688D 687E 6901 68CA 6908 - 68D8 6922 6926 68E1 690C 68CD -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 5C21 - srcEnd = 5C7E - mappingOffset = 10C3 - Mapping = - 68D4 68E7 68D5 6936 6912 6904 68D7 68E3 - 6925 68F9 68E0 68EF 6928 692A 691A 6923 - 6921 68C6 6979 6977 695C 6978 696B 6954 - 697E 696E 6939 6974 693D 6959 6930 6961 - 695E 695D 6981 696A 69B2 69AE 69D0 69BF - 69C1 69D3 69BE 69CE 5BE8 69CA 69DD 69BB - 69C3 69A7 6A2E 6991 69A0 699C 6995 69B4 - 69DE 69E8 6A02 6A1B 69FF 6B0A 69F9 69F2 - 69E7 6A05 69B1 6A1E 69ED 6A14 69EB 6A0A - 6A12 6AC1 6A23 6A13 6A44 6A0C 6A72 6A36 - 6A78 6A47 6A62 6A59 6A66 6A48 6A38 6A22 - 6A90 6A8D 6AA0 6A84 6AA2 6AA3 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 5D21 - srcEnd = 5D7E - mappingOffset = 1121 - Mapping = - 6A97 8617 6ABB 6AC3 6AC2 6AB8 6AB3 6AAC - 6ADE 6AD1 6ADF 6AAA 6ADA 6AEA 6AFB 6B05 - 8616 6AFA 6B12 6B16 9B31 6B1F 6B38 6B37 - 76DC 6B39 98EE 6B47 6B43 6B49 6B50 6B59 - 6B54 6B5B 6B5F 6B61 6B78 6B79 6B7F 6B80 - 6B84 6B83 6B8D 6B98 6B95 6B9E 6BA4 6BAA - 6BAB 6BAF 6BB2 6BB1 6BB3 6BB7 6BBC 6BC6 - 6BCB 6BD3 6BDF 6BEC 6BEB 6BF3 6BEF 9EBE - 6C08 6C13 6C14 6C1B 6C24 6C23 6C5E 6C55 - 6C62 6C6A 6C82 6C8D 6C9A 6C81 6C9B 6C7E - 6C68 6C73 6C92 6C90 6CC4 6CF1 6CD3 6CBD - 6CD7 6CC5 6CDD 6CAE 6CB1 6CBE -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 5E21 - srcEnd = 5E7E - mappingOffset = 117F - Mapping = - 6CBA 6CDB 6CEF 6CD9 6CEA 6D1F 884D 6D36 - 6D2B 6D3D 6D38 6D19 6D35 6D33 6D12 6D0C - 6D63 6D93 6D64 6D5A 6D79 6D59 6D8E 6D95 - 6FE4 6D85 6DF9 6E15 6E0A 6DB5 6DC7 6DE6 - 6DB8 6DC6 6DEC 6DDE 6DCC 6DE8 6DD2 6DC5 - 6DFA 6DD9 6DE4 6DD5 6DEA 6DEE 6E2D 6E6E - 6E2E 6E19 6E72 6E5F 6E3E 6E23 6E6B 6E2B - 6E76 6E4D 6E1F 6E43 6E3A 6E4E 6E24 6EFF - 6E1D 6E38 6E82 6EAA 6E98 6EC9 6EB7 6ED3 - 6EBD 6EAF 6EC4 6EB2 6ED4 6ED5 6E8F 6EA5 - 6EC2 6E9F 6F41 6F11 704C 6EEC 6EF8 6EFE - 6F3F 6EF2 6F31 6EEF 6F32 6ECC -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 5F21 - srcEnd = 5F7E - mappingOffset = 11DD - Mapping = - 6F3E 6F13 6EF7 6F86 6F7A 6F78 6F81 6F80 - 6F6F 6F5B 6FF3 6F6D 6F82 6F7C 6F58 6F8E - 6F91 6FC2 6F66 6FB3 6FA3 6FA1 6FA4 6FB9 - 6FC6 6FAA 6FDF 6FD5 6FEC 6FD4 6FD8 6FF1 - 6FEE 6FDB 7009 700B 6FFA 7011 7001 700F - 6FFE 701B 701A 6F74 701D 7018 701F 7030 - 703E 7032 7051 7063 7099 7092 70AF 70F1 - 70AC 70B8 70B3 70AE 70DF 70CB 70DD 70D9 - 7109 70FD 711C 7119 7165 7155 7188 7166 - 7162 714C 7156 716C 718F 71FB 7184 7195 - 71A8 71AC 71D7 71B9 71BE 71D2 71C9 71D4 - 71CE 71E0 71EC 71E7 71F5 71FC -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 6021 - srcEnd = 607E - mappingOffset = 123B - Mapping = - 71F9 71FF 720D 7210 721B 7228 722D 722C - 7230 7232 723B 723C 723F 7240 7246 724B - 7258 7274 727E 7282 7281 7287 7292 7296 - 72A2 72A7 72B9 72B2 72C3 72C6 72C4 72CE - 72D2 72E2 72E0 72E1 72F9 72F7 500F 7317 - 730A 731C 7316 731D 7334 732F 7329 7325 - 733E 734E 734F 9ED8 7357 736A 7368 7370 - 7378 7375 737B 737A 73C8 73B3 73CE 73BB - 73C0 73E5 73EE 73DE 74A2 7405 746F 7425 - 73F8 7432 743A 7455 743F 745F 7459 7441 - 745C 7469 7470 7463 746A 7476 747E 748B - 749E 74A7 74CA 74CF 74D4 73F1 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 6121 - srcEnd = 617E - mappingOffset = 1299 - Mapping = - 74E0 74E3 74E7 74E9 74EE 74F2 74F0 74F1 - 74F8 74F7 7504 7503 7505 750C 750E 750D - 7515 7513 751E 7526 752C 753C 7544 754D - 754A 7549 755B 7546 755A 7569 7564 7567 - 756B 756D 7578 7576 7586 7587 7574 758A - 7589 7582 7594 759A 759D 75A5 75A3 75C2 - 75B3 75C3 75B5 75BD 75B8 75BC 75B1 75CD - 75CA 75D2 75D9 75E3 75DE 75FE 75FF 75FC - 7601 75F0 75FA 75F2 75F3 760B 760D 7609 - 761F 7627 7620 7621 7622 7624 7634 7630 - 763B 7647 7648 7646 765C 7658 7661 7662 - 7668 7669 766A 7667 766C 7670 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 6221 - srcEnd = 627E - mappingOffset = 12F7 - Mapping = - 7672 7676 7678 767C 7680 7683 7688 768B - 768E 7696 7693 7699 769A 76B0 76B4 76B8 - 76B9 76BA 76C2 76CD 76D6 76D2 76DE 76E1 - 76E5 76E7 76EA 862F 76FB 7708 7707 7704 - 7729 7724 771E 7725 7726 771B 7737 7738 - 7747 775A 7768 776B 775B 7765 777F 777E - 7779 778E 778B 7791 77A0 779E 77B0 77B6 - 77B9 77BF 77BC 77BD 77BB 77C7 77CD 77D7 - 77DA 77DC 77E3 77EE 77FC 780C 7812 7926 - 7820 792A 7845 788E 7874 7886 787C 789A - 788C 78A3 78B5 78AA 78AF 78D1 78C6 78CB - 78D4 78BE 78BC 78C5 78CA 78EC -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 6321 - srcEnd = 637E - mappingOffset = 1355 - Mapping = - 78E7 78DA 78FD 78F4 7907 7912 7911 7919 - 792C 792B 7940 7960 7957 795F 795A 7955 - 7953 797A 797F 798A 799D 79A7 9F4B 79AA - 79AE 79B3 79B9 79BA 79C9 79D5 79E7 79EC - 79E1 79E3 7A08 7A0D 7A18 7A19 7A20 7A1F - 7980 7A31 7A3B 7A3E 7A37 7A43 7A57 7A49 - 7A61 7A62 7A69 9F9D 7A70 7A79 7A7D 7A88 - 7A97 7A95 7A98 7A96 7AA9 7AC8 7AB0 7AB6 - 7AC5 7AC4 7ABF 9083 7AC7 7ACA 7ACD 7ACF - 7AD5 7AD3 7AD9 7ADA 7ADD 7AE1 7AE2 7AE6 - 7AED 7AF0 7B02 7B0F 7B0A 7B06 7B33 7B18 - 7B19 7B1E 7B35 7B28 7B36 7B50 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 6421 - srcEnd = 647E - mappingOffset = 13B3 - Mapping = - 7B7A 7B04 7B4D 7B0B 7B4C 7B45 7B75 7B65 - 7B74 7B67 7B70 7B71 7B6C 7B6E 7B9D 7B98 - 7B9F 7B8D 7B9C 7B9A 7B8B 7B92 7B8F 7B5D - 7B99 7BCB 7BC1 7BCC 7BCF 7BB4 7BC6 7BDD - 7BE9 7C11 7C14 7BE6 7BE5 7C60 7C00 7C07 - 7C13 7BF3 7BF7 7C17 7C0D 7BF6 7C23 7C27 - 7C2A 7C1F 7C37 7C2B 7C3D 7C4C 7C43 7C54 - 7C4F 7C40 7C50 7C58 7C5F 7C64 7C56 7C65 - 7C6C 7C75 7C83 7C90 7CA4 7CAD 7CA2 7CAB - 7CA1 7CA8 7CB3 7CB2 7CB1 7CAE 7CB9 7CBD - 7CC0 7CC5 7CC2 7CD8 7CD2 7CDC 7CE2 9B3B - 7CEF 7CF2 7CF4 7CF6 7CFA 7D06 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 6521 - srcEnd = 657E - mappingOffset = 1411 - Mapping = - 7D02 7D1C 7D15 7D0A 7D45 7D4B 7D2E 7D32 - 7D3F 7D35 7D46 7D73 7D56 7D4E 7D72 7D68 - 7D6E 7D4F 7D63 7D93 7D89 7D5B 7D8F 7D7D - 7D9B 7DBA 7DAE 7DA3 7DB5 7DC7 7DBD 7DAB - 7E3D 7DA2 7DAF 7DDC 7DB8 7D9F 7DB0 7DD8 - 7DDD 7DE4 7DDE 7DFB 7DF2 7DE1 7E05 7E0A - 7E23 7E21 7E12 7E31 7E1F 7E09 7E0B 7E22 - 7E46 7E66 7E3B 7E35 7E39 7E43 7E37 7E32 - 7E3A 7E67 7E5D 7E56 7E5E 7E59 7E5A 7E79 - 7E6A 7E69 7E7C 7E7B 7E83 7DD5 7E7D 8FAE - 7E7F 7E88 7E89 7E8C 7E92 7E90 7E93 7E94 - 7E96 7E8E 7E9B 7E9C 7F38 7F3A -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 6621 - srcEnd = 667E - mappingOffset = 146F - Mapping = - 7F45 7F4C 7F4D 7F4E 7F50 7F51 7F55 7F54 - 7F58 7F5F 7F60 7F68 7F69 7F67 7F78 7F82 - 7F86 7F83 7F88 7F87 7F8C 7F94 7F9E 7F9D - 7F9A 7FA3 7FAF 7FB2 7FB9 7FAE 7FB6 7FB8 - 8B71 7FC5 7FC6 7FCA 7FD5 7FD4 7FE1 7FE6 - 7FE9 7FF3 7FF9 98DC 8006 8004 800B 8012 - 8018 8019 801C 8021 8028 803F 803B 804A - 8046 8052 8058 805A 805F 8062 8068 8073 - 8072 8070 8076 8079 807D 807F 8084 8086 - 8085 809B 8093 809A 80AD 5190 80AC 80DB - 80E5 80D9 80DD 80C4 80DA 80D6 8109 80EF - 80F1 811B 8129 8123 812F 814B -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 6721 - srcEnd = 677E - mappingOffset = 14CD - Mapping = - 968B 8146 813E 8153 8151 80FC 8171 816E - 8165 8166 8174 8183 8188 818A 8180 8182 - 81A0 8195 81A4 81A3 815F 8193 81A9 81B0 - 81B5 81BE 81B8 81BD 81C0 81C2 81BA 81C9 - 81CD 81D1 81D9 81D8 81C8 81DA 81DF 81E0 - 81E7 81FA 81FB 81FE 8201 8202 8205 8207 - 820A 820D 8210 8216 8229 822B 8238 8233 - 8240 8259 8258 825D 825A 825F 8264 8262 - 8268 826A 826B 822E 8271 8277 8278 827E - 828D 8292 82AB 829F 82BB 82AC 82E1 82E3 - 82DF 82D2 82F4 82F3 82FA 8393 8303 82FB - 82F9 82DE 8306 82DC 8309 82D9 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 6821 - srcEnd = 687E - mappingOffset = 152B - Mapping = - 8335 8334 8316 8332 8331 8340 8339 8350 - 8345 832F 832B 8317 8318 8385 839A 83AA - 839F 83A2 8396 8323 838E 8387 838A 837C - 83B5 8373 8375 83A0 8389 83A8 83F4 8413 - 83EB 83CE 83FD 8403 83D8 840B 83C1 83F7 - 8407 83E0 83F2 840D 8422 8420 83BD 8438 - 8506 83FB 846D 842A 843C 855A 8484 8477 - 846B 84AD 846E 8482 8469 8446 842C 846F - 8479 8435 84CA 8462 84B9 84BF 849F 84D9 - 84CD 84BB 84DA 84D0 84C1 84C6 84D6 84A1 - 8521 84FF 84F4 8517 8518 852C 851F 8515 - 8514 84FC 8540 8563 8558 8548 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 6921 - srcEnd = 697E - mappingOffset = 1589 - Mapping = - 8541 8602 854B 8555 8580 85A4 8588 8591 - 858A 85A8 856D 8594 859B 85EA 8587 859C - 8577 857E 8590 85C9 85BA 85CF 85B9 85D0 - 85D5 85DD 85E5 85DC 85F9 860A 8613 860B - 85FE 85FA 8606 8622 861A 8630 863F 864D - 4E55 8654 865F 8667 8671 8693 86A3 86A9 - 86AA 868B 868C 86B6 86AF 86C4 86C6 86B0 - 86C9 8823 86AB 86D4 86DE 86E9 86EC 86DF - 86DB 86EF 8712 8706 8708 8700 8703 86FB - 8711 8709 870D 86F9 870A 8734 873F 8737 - 873B 8725 8729 871A 8760 875F 8778 874C - 874E 8774 8757 8768 876E 8759 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 6A21 - srcEnd = 6A7E - mappingOffset = 15E7 - Mapping = - 8753 8763 876A 8805 87A2 879F 8782 87AF - 87CB 87BD 87C0 87D0 96D6 87AB 87C4 87B3 - 87C7 87C6 87BB 87EF 87F2 87E0 880F 880D - 87FE 87F6 87F7 880E 87D2 8811 8816 8815 - 8822 8821 8831 8836 8839 8827 883B 8844 - 8842 8852 8859 885E 8862 886B 8881 887E - 889E 8875 887D 88B5 8872 8882 8897 8892 - 88AE 8899 88A2 888D 88A4 88B0 88BF 88B1 - 88C3 88C4 88D4 88D8 88D9 88DD 88F9 8902 - 88FC 88F4 88E8 88F2 8904 890C 890A 8913 - 8943 891E 8925 892A 892B 8941 8944 893B - 8936 8938 894C 891D 8960 895E -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 6B21 - srcEnd = 6B7E - mappingOffset = 1645 - Mapping = - 8966 8964 896D 896A 896F 8974 8977 897E - 8983 8988 898A 8993 8998 89A1 89A9 89A6 - 89AC 89AF 89B2 89BA 89BD 89BF 89C0 89DA - 89DC 89DD 89E7 89F4 89F8 8A03 8A16 8A10 - 8A0C 8A1B 8A1D 8A25 8A36 8A41 8A5B 8A52 - 8A46 8A48 8A7C 8A6D 8A6C 8A62 8A85 8A82 - 8A84 8AA8 8AA1 8A91 8AA5 8AA6 8A9A 8AA3 - 8AC4 8ACD 8AC2 8ADA 8AEB 8AF3 8AE7 8AE4 - 8AF1 8B14 8AE0 8AE2 8AF7 8ADE 8ADB 8B0C - 8B07 8B1A 8AE1 8B16 8B10 8B17 8B20 8B33 - 97AB 8B26 8B2B 8B3E 8B28 8B41 8B4C 8B4F - 8B4E 8B49 8B56 8B5B 8B5A 8B6B -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 6C21 - srcEnd = 6C7E - mappingOffset = 16A3 - Mapping = - 8B5F 8B6C 8B6F 8B74 8B7D 8B80 8B8C 8B8E - 8B92 8B93 8B96 8B99 8B9A 8C3A 8C41 8C3F - 8C48 8C4C 8C4E 8C50 8C55 8C62 8C6C 8C78 - 8C7A 8C82 8C89 8C85 8C8A 8C8D 8C8E 8C94 - 8C7C 8C98 621D 8CAD 8CAA 8CBD 8CB2 8CB3 - 8CAE 8CB6 8CC8 8CC1 8CE4 8CE3 8CDA 8CFD - 8CFA 8CFB 8D04 8D05 8D0A 8D07 8D0F 8D0D - 8D10 9F4E 8D13 8CCD 8D14 8D16 8D67 8D6D - 8D71 8D73 8D81 8D99 8DC2 8DBE 8DBA 8DCF - 8DDA 8DD6 8DCC 8DDB 8DCB 8DEA 8DEB 8DDF - 8DE3 8DFC 8E08 8E09 8DFF 8E1D 8E1E 8E10 - 8E1F 8E42 8E35 8E30 8E34 8E4A -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 6D21 - srcEnd = 6D7E - mappingOffset = 1701 - Mapping = - 8E47 8E49 8E4C 8E50 8E48 8E59 8E64 8E60 - 8E2A 8E63 8E55 8E76 8E72 8E7C 8E81 8E87 - 8E85 8E84 8E8B 8E8A 8E93 8E91 8E94 8E99 - 8EAA 8EA1 8EAC 8EB0 8EC6 8EB1 8EBE 8EC5 - 8EC8 8ECB 8EDB 8EE3 8EFC 8EFB 8EEB 8EFE - 8F0A 8F05 8F15 8F12 8F19 8F13 8F1C 8F1F - 8F1B 8F0C 8F26 8F33 8F3B 8F39 8F45 8F42 - 8F3E 8F4C 8F49 8F46 8F4E 8F57 8F5C 8F62 - 8F63 8F64 8F9C 8F9F 8FA3 8FAD 8FAF 8FB7 - 8FDA 8FE5 8FE2 8FEA 8FEF 9087 8FF4 9005 - 8FF9 8FFA 9011 9015 9021 900D 901E 9016 - 900B 9027 9036 9035 9039 8FF8 -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 6E21 - srcEnd = 6E7E - mappingOffset = 175F - Mapping = - 904F 9050 9051 9052 900E 9049 903E 9056 - 9058 905E 9068 906F 9076 96A8 9072 9082 - 907D 9081 9080 908A 9089 908F 90A8 90AF - 90B1 90B5 90E2 90E4 6248 90DB 9102 9112 - 9119 9132 9130 914A 9156 9158 9163 9165 - 9169 9173 9172 918B 9189 9182 91A2 91AB - 91AF 91AA 91B5 91B4 91BA 91C0 91C1 91C9 - 91CB 91D0 91D6 91DF 91E1 91DB 91FC 91F5 - 91F6 921E 91FF 9214 922C 9215 9211 925E - 9257 9245 9249 9264 9248 9295 923F 924B - 9250 929C 9296 9293 929B 925A 92CF 92B9 - 92B7 92E9 930F 92FA 9344 932E -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 6F21 - srcEnd = 6F7E - mappingOffset = 17BD - Mapping = - 9319 9322 931A 9323 933A 9335 933B 935C - 9360 937C 936E 9356 93B0 93AC 93AD 9394 - 93B9 93D6 93D7 93E8 93E5 93D8 93C3 93DD - 93D0 93C8 93E4 941A 9414 9413 9403 9407 - 9410 9436 942B 9435 9421 943A 9441 9452 - 9444 945B 9460 9462 945E 946A 9229 9470 - 9475 9477 947D 945A 947C 947E 9481 947F - 9582 9587 958A 9594 9596 9598 9599 95A0 - 95A8 95A7 95AD 95BC 95BB 95B9 95BE 95CA - 6FF6 95C3 95CD 95CC 95D5 95D4 95D6 95DC - 95E1 95E5 95E2 9621 9628 962E 962F 9642 - 964C 964F 964B 9677 965C 965E -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 7021 - srcEnd = 707E - mappingOffset = 181B - Mapping = - 965D 965F 9666 9672 966C 968D 9698 9695 - 9697 96AA 96A7 96B1 96B2 96B0 96B4 96B6 - 96B8 96B9 96CE 96CB 96C9 96CD 894D 96DC - 970D 96D5 96F9 9704 9706 9708 9713 970E - 9711 970F 9716 9719 9724 972A 9730 9739 - 973D 973E 9744 9746 9748 9742 9749 975C - 9760 9764 9766 9768 52D2 976B 9771 9779 - 9785 977C 9781 977A 9786 978B 978F 9790 - 979C 97A8 97A6 97A3 97B3 97B4 97C3 97C6 - 97C8 97CB 97DC 97ED 9F4F 97F2 7ADF 97F6 - 97F5 980F 980C 9838 9824 9821 9837 983D - 9846 984F 984B 986B 986F 9870 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 7121 - srcEnd = 717E - mappingOffset = 1879 - Mapping = - 9871 9874 9873 98AA 98AF 98B1 98B6 98C4 - 98C3 98C6 98E9 98EB 9903 9909 9912 9914 - 9918 9921 991D 991E 9924 9920 992C 992E - 993D 993E 9942 9949 9945 9950 994B 9951 - 9952 994C 9955 9997 9998 99A5 99AD 99AE - 99BC 99DF 99DB 99DD 99D8 99D1 99ED 99EE - 99F1 99F2 99FB 99F8 9A01 9A0F 9A05 99E2 - 9A19 9A2B 9A37 9A45 9A42 9A40 9A43 9A3E - 9A55 9A4D 9A5B 9A57 9A5F 9A62 9A65 9A64 - 9A69 9A6B 9A6A 9AAD 9AB0 9ABC 9AC0 9ACF - 9AD1 9AD3 9AD4 9ADE 9ADF 9AE2 9AE3 9AE6 - 9AEF 9AEB 9AEE 9AF4 9AF1 9AF7 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 7221 - srcEnd = 727E - mappingOffset = 18D7 - Mapping = - 9AFB 9B06 9B18 9B1A 9B1F 9B22 9B23 9B25 - 9B27 9B28 9B29 9B2A 9B2E 9B2F 9B32 9B44 - 9B43 9B4F 9B4D 9B4E 9B51 9B58 9B74 9B93 - 9B83 9B91 9B96 9B97 9B9F 9BA0 9BA8 9BB4 - 9BC0 9BCA 9BB9 9BC6 9BCF 9BD1 9BD2 9BE3 - 9BE2 9BE4 9BD4 9BE1 9C3A 9BF2 9BF1 9BF0 - 9C15 9C14 9C09 9C13 9C0C 9C06 9C08 9C12 - 9C0A 9C04 9C2E 9C1B 9C25 9C24 9C21 9C30 - 9C47 9C32 9C46 9C3E 9C5A 9C60 9C67 9C76 - 9C78 9CE7 9CEC 9CF0 9D09 9D08 9CEB 9D03 - 9D06 9D2A 9D26 9DAF 9D23 9D1F 9D44 9D15 - 9D12 9D41 9D3F 9D3E 9D46 9D48 -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 7321 - srcEnd = 737E - mappingOffset = 1935 - Mapping = - 9D5D 9D5E 9D64 9D51 9D50 9D59 9D72 9D89 - 9D87 9DAB 9D6F 9D7A 9D9A 9DA4 9DA9 9DB2 - 9DC4 9DC1 9DBB 9DB8 9DBA 9DC6 9DCF 9DC2 - 9DD9 9DD3 9DF8 9DE6 9DED 9DEF 9DFD 9E1A - 9E1B 9E1E 9E75 9E79 9E7D 9E81 9E88 9E8B - 9E8C 9E92 9E95 9E91 9E9D 9EA5 9EA9 9EB8 - 9EAA 9EAD 9761 9ECC 9ECE 9ECF 9ED0 9ED4 - 9EDC 9EDE 9EDD 9EE0 9EE5 9EE8 9EEF 9EF4 - 9EF6 9EF7 9EF9 9EFB 9EFC 9EFD 9F07 9F08 - 76B7 9F15 9F21 9F2C 9F3E 9F4A 9F52 9F54 - 9F63 9F5F 9F60 9F61 9F66 9F67 9F6C 9F6A - 9F77 9F72 9F76 9F95 9F9C 9FA0 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 7421 - srcEnd = 7426 - mappingOffset = 1993 - Mapping = - 582F 69C7 9059 7464 51DC 7199 -End of Item 0059 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x005A, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x001B, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0129, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x000E */ -/* Total of Format 1 : 0x004A */ -/* Total of Format 2 : 0x0002 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x1100, 0x2211, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x001B Start of MapCell Array */ -/* 0000 */ 0x2152, 0x215B, 0x3008, -/* 0001 */ 0x2330, 0x2339, 0xFF10, -/* 0002 */ 0x2341, 0x235A, 0xFF21, -/* 0003 */ 0x2361, 0x237A, 0xFF41, -/* 0004 */ 0x2421, 0x2473, 0x3041, -/* 0005 */ 0x2521, 0x2576, 0x30A1, -/* 0006 */ 0x2621, 0x2631, 0x0391, -/* 0007 */ 0x2632, 0x2638, 0x03A3, -/* 0008 */ 0x2641, 0x2651, 0x03B1, -/* 0009 */ 0x2652, 0x2658, 0x03C3, -/* 000A */ 0x2721, 0x2726, 0x0410, -/* 000B */ 0x2728, 0x2741, 0x0416, -/* 000C */ 0x2751, 0x2756, 0x0430, -/* 000D */ 0x2758, 0x2771, 0x0436, -/* 000E */ 0x2121, 0x217E, 0x0000, -/* 000F */ 0x2221, 0x222E, 0x005E, -/* 0010 */ 0x223A, 0x2250, 0x006C, -/* 0011 */ 0x225C, 0x227E, 0x0083, -/* 0012 */ 0x2727, 0x0000, 0x0401, -/* 0013 */ 0x2757, 0x0000, 0x0451, -/* 0014 */ 0x2821, 0x2840, 0x00A6, -/* 0015 */ 0x3021, 0x307E, 0x00C6, -/* 0016 */ 0x3121, 0x317E, 0x0124, -/* 0017 */ 0x3221, 0x327E, 0x0182, -/* 0018 */ 0x3321, 0x337E, 0x01E0, -/* 0019 */ 0x3421, 0x347E, 0x023E, -/* 001A */ 0x3521, 0x357E, 0x029C, -/* 001B */ 0x3621, 0x367E, 0x02FA, -/* 001C */ 0x3721, 0x377E, 0x0358, -/* 001D */ 0x3821, 0x387E, 0x03B6, -/* 001E */ 0x3921, 0x397E, 0x0414, -/* 001F */ 0x3A21, 0x3A7E, 0x0472, -/* 0020 */ 0x3B21, 0x3B7E, 0x04D0, -/* 0021 */ 0x3C21, 0x3C7E, 0x052E, -/* 0022 */ 0x3D21, 0x3D7E, 0x058C, -/* 0023 */ 0x3E21, 0x3E7E, 0x05EA, -/* 0024 */ 0x3F21, 0x3F7E, 0x0648, -/* 0025 */ 0x4021, 0x407E, 0x06A6, -/* 0026 */ 0x4121, 0x417E, 0x0704, -/* 0027 */ 0x4221, 0x427E, 0x0762, -/* 0028 */ 0x4321, 0x437E, 0x07C0, -/* 0029 */ 0x4421, 0x447E, 0x081E, -/* 002A */ 0x4521, 0x457E, 0x087C, -/* 002B */ 0x4621, 0x467E, 0x08DA, -/* 002C */ 0x4721, 0x477E, 0x0938, -/* 002D */ 0x4821, 0x487E, 0x0996, -/* 002E */ 0x4921, 0x497E, 0x09F4, -/* 002F */ 0x4A21, 0x4A7E, 0x0A52, -/* 0030 */ 0x4B21, 0x4B7E, 0x0AB0, -/* 0031 */ 0x4C21, 0x4C7E, 0x0B0E, -/* 0032 */ 0x4D21, 0x4D7E, 0x0B6C, -/* 0033 */ 0x4E21, 0x4E7E, 0x0BCA, -/* 0034 */ 0x4F21, 0x4F53, 0x0C28, -/* 0035 */ 0x5021, 0x507E, 0x0C5B, -/* 0036 */ 0x5121, 0x517E, 0x0CB9, -/* 0037 */ 0x5221, 0x527E, 0x0D17, -/* 0038 */ 0x5321, 0x537E, 0x0D75, -/* 0039 */ 0x5421, 0x547E, 0x0DD3, -/* 003A */ 0x5521, 0x557E, 0x0E31, -/* 003B */ 0x5621, 0x567E, 0x0E8F, -/* 003C */ 0x5721, 0x577E, 0x0EED, -/* 003D */ 0x5821, 0x587E, 0x0F4B, -/* 003E */ 0x5921, 0x597E, 0x0FA9, -/* 003F */ 0x5A21, 0x5A7E, 0x1007, -/* 0040 */ 0x5B21, 0x5B7E, 0x1065, -/* 0041 */ 0x5C21, 0x5C7E, 0x10C3, -/* 0042 */ 0x5D21, 0x5D7E, 0x1121, -/* 0043 */ 0x5E21, 0x5E7E, 0x117F, -/* 0044 */ 0x5F21, 0x5F7E, 0x11DD, -/* 0045 */ 0x6021, 0x607E, 0x123B, -/* 0046 */ 0x6121, 0x617E, 0x1299, -/* 0047 */ 0x6221, 0x627E, 0x12F7, -/* 0048 */ 0x6321, 0x637E, 0x1355, -/* 0049 */ 0x6421, 0x647E, 0x13B3, -/* 004A */ 0x6521, 0x657E, 0x1411, -/* 004B */ 0x6621, 0x667E, 0x146F, -/* 004C */ 0x6721, 0x677E, 0x14CD, -/* 004D */ 0x6821, 0x687E, 0x152B, -/* 004E */ 0x6921, 0x697E, 0x1589, -/* 004F */ 0x6A21, 0x6A7E, 0x15E7, -/* 0050 */ 0x6B21, 0x6B7E, 0x1645, -/* 0051 */ 0x6C21, 0x6C7E, 0x16A3, -/* 0052 */ 0x6D21, 0x6D7E, 0x1701, -/* 0053 */ 0x6E21, 0x6E7E, 0x175F, -/* 0054 */ 0x6F21, 0x6F7E, 0x17BD, -/* 0055 */ 0x7021, 0x707E, 0x181B, -/* 0056 */ 0x7121, 0x717E, 0x1879, -/* 0057 */ 0x7221, 0x727E, 0x18D7, -/* 0058 */ 0x7321, 0x737E, 0x1935, -/* 0059 */ 0x7421, 0x7426, 0x1993, -/*-------------------------------------------------------*/ -/* Offset=0x0129 Start of MappingTable */ - -/* 0000 */ 0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A, 0xFF1B, -/* 0008 */ 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, 0xFF3E, -/* 0010 */ 0xFFE3, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD, -/* 0018 */ 0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F, 0x005C, -/* 0020 */ 0x301C, 0x2016, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C, -/* 0028 */ 0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, -/* 0030 */ 0xFF5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFF0B, 0x2212, 0x00B1, 0x00D7, 0x00F7, -/* 0040 */ 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E, 0x2234, -/* 0048 */ 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFFE5, 0xFF04, -/* 0050 */ 0x00A2, 0x00A3, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, 0x00A7, -/* 0058 */ 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, -/* 0060 */ 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B, 0x3012, 0x2192, -/* 0068 */ 0x2190, 0x2191, 0x2193, 0x3013, 0x2208, 0x220B, 0x2286, 0x2287, -/* 0070 */ 0x2282, 0x2283, 0x222A, 0x2229, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2227, 0x2228, 0x00AC, 0x21D2, -/* 0080 */ 0x21D4, 0x2200, 0x2203, 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, -/* 0088 */ 0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, 0x2235, -/* 0090 */ 0x222B, 0x222C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020, 0x2021, -/* 00A0 */ 0x00B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x25EF, 0x2500, 0x2502, -/* 00A8 */ 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, 0x2534, -/* 00B0 */ 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, 0x2523, -/* 00B8 */ 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, 0x252F, 0x2528, 0x2537, -/* 00C0 */ 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, 0x2542, 0x4E9C, 0x5516, -/* 00C8 */ 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6, 0x9022, 0x8475, -/* 00D0 */ 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED, 0x8466, 0x82A6, -/* 00D8 */ 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B, 0x59D0, 0x867B, -/* 00E0 */ 0x98F4, 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F, 0x88B7, 0x5B89, -/* 00E8 */ 0x5EB5, 0x6309, 0x6697, 0x6848, 0x95C7, 0x978D, 0x674F, 0x4EE5, -/* 00F0 */ 0x4F0A, 0x4F4D, 0x4F9D, 0x5049, 0x56F2, 0x5937, 0x59D4, 0x5A01, -/* 00F8 */ 0x5C09, 0x60DF, 0x610F, 0x6170, 0x6613, 0x6905, 0x70BA, 0x754F, -/* 0100 */ 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3, 0x840E, 0x8863, 0x8B02, -/* 0108 */ 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF, 0x80B2, 0x90C1, -/* 0110 */ 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32, 0x8328, 0x828B, -/* 0118 */ 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0, 0x59FB, 0x5F15, -/* 0120 */ 0x98F2, 0x6DEB, 0x80E4, 0x852D, 0x9662, 0x9670, 0x96A0, 0x97FB, -/* 0128 */ 0x540B, 0x53F3, 0x5B87, 0x70CF, 0x7FBD, 0x8FC2, 0x96E8, 0x536F, -/* 0130 */ 0x9D5C, 0x7ABA, 0x4E11, 0x7893, 0x81FC, 0x6E26, 0x5618, 0x5504, -/* 0138 */ 0x6B1D, 0x851A, 0x9C3B, 0x59E5, 0x53A9, 0x6D66, 0x74DC, 0x958F, -/* 0140 */ 0x5642, 0x4E91, 0x904B, 0x96F2, 0x834F, 0x990C, 0x53E1, 0x55B6, -/* 0148 */ 0x5B30, 0x5F71, 0x6620, 0x66F3, 0x6804, 0x6C38, 0x6CF3, 0x6D29, -/* 0150 */ 0x745B, 0x76C8, 0x7A4E, 0x9834, 0x82F1, 0x885B, 0x8A60, 0x92ED, -/* 0158 */ 0x6DB2, 0x75AB, 0x76CA, 0x99C5, 0x60A6, 0x8B01, 0x8D8A, 0x95B2, -/* 0160 */ 0x698E, 0x53AD, 0x5186, 0x5712, 0x5830, 0x5944, 0x5BB4, 0x5EF6, -/* 0168 */ 0x6028, 0x63A9, 0x63F4, 0x6CBF, 0x6F14, 0x708E, 0x7114, 0x7159, -/* 0170 */ 0x71D5, 0x733F, 0x7E01, 0x8276, 0x82D1, 0x8597, 0x9060, 0x925B, -/* 0178 */ 0x9D1B, 0x5869, 0x65BC, 0x6C5A, 0x7525, 0x51F9, 0x592E, 0x5965, -/* 0180 */ 0x5F80, 0x5FDC, 0x62BC, 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, -/* 0188 */ 0x7FC1, 0x8956, 0x9D2C, 0x9D0E, 0x9EC4, 0x5CA1, 0x6C96, 0x837B, -/* 0190 */ 0x5104, 0x5C4B, 0x61B6, 0x81C6, 0x6876, 0x7261, 0x4E59, 0x4FFA, -/* 0198 */ 0x5378, 0x6069, 0x6E29, 0x7A4F, 0x97F3, 0x4E0B, 0x5316, 0x4EEE, -/* 01A0 */ 0x4F55, 0x4F3D, 0x4FA1, 0x4F73, 0x52A0, 0x53EF, 0x5609, 0x590F, -/* 01A8 */ 0x5AC1, 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C, -/* 01B0 */ 0x6CB3, 0x706B, 0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, -/* 01B8 */ 0x82DB, 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, -/* 01C0 */ 0x8CA8, 0x8FE6, 0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, -/* 01C8 */ 0x7259, 0x753B, 0x81E5, 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, -/* 01D0 */ 0x99D5, 0x4ECB, 0x4F1A, 0x89E3, 0x56DE, 0x584A, 0x58CA, 0x5EFB, -/* 01D8 */ 0x5FEB, 0x602A, 0x6094, 0x6062, 0x61D0, 0x6212, 0x62D0, 0x6539, -/* 01E0 */ 0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, 0x7686, 0x7D75, -/* 01E8 */ 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE, 0x5916, -/* 01F0 */ 0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB, -/* 01F8 */ 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3, -/* 0200 */ 0x67FF, 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3, 0x62E1, -/* 0208 */ 0x64B9, 0x683C, 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B, 0x899A, -/* 0210 */ 0x89D2, 0x8D6B, 0x8F03, 0x90ED, 0x95A3, 0x9694, 0x9769, 0x5B66, -/* 0218 */ 0x5CB3, 0x697D, 0x984D, 0x984E, 0x639B, 0x7B20, 0x6A2B, 0x6A7F, -/* 0220 */ 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, 0x6070, 0x62EC, 0x6D3B, -/* 0228 */ 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, 0x9C39, 0x53F6, -/* 0230 */ 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2, 0x91DC, -/* 0238 */ 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431, 0x7CA5, 0x5208, -/* 0240 */ 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2, 0x520A, 0x52D8, -/* 0248 */ 0x52E7, 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C, 0x5B98, 0x5BDB, -/* 0250 */ 0x5E72, 0x5E79, 0x60A3, 0x611F, 0x6163, 0x61BE, 0x63DB, 0x6562, -/* 0258 */ 0x67D1, 0x6853, 0x68FA, 0x6B3E, 0x6B53, 0x6C57, 0x6F22, 0x6F97, -/* 0260 */ 0x6F45, 0x74B0, 0x7518, 0x76E3, 0x770B, 0x7AFF, 0x7BA1, 0x7C21, -/* 0268 */ 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266, 0x839E, 0x89B3, 0x8ACC, -/* 0270 */ 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, 0x95A2, 0x9665, 0x97D3, -/* 0278 */ 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, 0x5DCC, 0x73A9, 0x764C, -/* 0280 */ 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811, 0x9854, 0x9858, -/* 0288 */ 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA, 0x5947, 0x5B09, -/* 0290 */ 0x5BC4, 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE, 0x673A, 0x65D7, -/* 0298 */ 0x65E2, 0x671F, 0x68CB, 0x68C4, 0x6A5F, 0x5E30, 0x6BC5, 0x6C17, -/* 02A0 */ 0x6C7D, 0x757F, 0x7948, 0x5B63, 0x7A00, 0x7D00, 0x5FBD, 0x898F, -/* 02A8 */ 0x8A18, 0x8CB4, 0x8D77, 0x8ECC, 0x8F1D, 0x98E2, 0x9A0E, 0x9B3C, -/* 02B0 */ 0x4E80, 0x507D, 0x5100, 0x5993, 0x5B9C, 0x622F, 0x6280, 0x64EC, -/* 02B8 */ 0x6B3A, 0x72A0, 0x7591, 0x7947, 0x7FA9, 0x87FB, 0x8ABC, 0x8B70, -/* 02C0 */ 0x63AC, 0x83CA, 0x97A0, 0x5409, 0x5403, 0x55AB, 0x6854, 0x6A58, -/* 02C8 */ 0x8A70, 0x7827, 0x6775, 0x9ECD, 0x5374, 0x5BA2, 0x811A, 0x8650, -/* 02D0 */ 0x9006, 0x4E18, 0x4E45, 0x4EC7, 0x4F11, 0x53CA, 0x5438, 0x5BAE, -/* 02D8 */ 0x5F13, 0x6025, 0x6551, 0x673D, 0x6C42, 0x6C72, 0x6CE3, 0x7078, -/* 02E0 */ 0x7403, 0x7A76, 0x7AAE, 0x7B08, 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, -/* 02E8 */ 0x725B, 0x53BB, 0x5C45, 0x5DE8, 0x62D2, 0x62E0, 0x6319, 0x6E20, -/* 02F0 */ 0x865A, 0x8A31, 0x8DDD, 0x92F8, 0x6F01, 0x79A6, 0x9B5A, 0x4EA8, -/* 02F8 */ 0x4EAB, 0x4EAC, 0x4F9B, 0x4FA0, 0x50D1, 0x5147, 0x7AF6, 0x5171, -/* 0300 */ 0x51F6, 0x5354, 0x5321, 0x537F, 0x53EB, 0x55AC, 0x5883, 0x5CE1, -/* 0308 */ 0x5F37, 0x5F4A, 0x602F, 0x6050, 0x606D, 0x631F, 0x6559, 0x6A4B, -/* 0310 */ 0x6CC1, 0x72C2, 0x72ED, 0x77EF, 0x80F8, 0x8105, 0x8208, 0x854E, -/* 0318 */ 0x90F7, 0x93E1, 0x97FF, 0x9957, 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, -/* 0320 */ 0x6681, 0x696D, 0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850, 0x7C81, -/* 0328 */ 0x50C5, 0x52E4, 0x5747, 0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D, -/* 0330 */ 0x7434, 0x7981, 0x79BD, 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, -/* 0338 */ 0x895F, 0x8B39, 0x8FD1, 0x91D1, 0x541F, 0x9280, 0x4E5D, 0x5036, -/* 0340 */ 0x53E5, 0x533A, 0x72D7, 0x7396, 0x77E9, 0x82E6, 0x8EAF, 0x99C6, -/* 0348 */ 0x99C8, 0x99D2, 0x5177, 0x611A, 0x865E, 0x55B0, 0x7A7A, 0x5076, -/* 0350 */ 0x5BD3, 0x9047, 0x9685, 0x4E32, 0x6ADB, 0x91E7, 0x5C51, 0x5C48, -/* 0358 */ 0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A, 0x9688, -/* 0360 */ 0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B, 0x85AB, -/* 0368 */ 0x8A13, 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941, 0x4FC2, -/* 0370 */ 0x50BE, 0x5211, 0x5144, 0x5553, 0x572D, 0x73EA, 0x578B, 0x5951, -/* 0378 */ 0x5F62, 0x5F84, 0x6075, 0x6176, 0x6167, 0x61A9, 0x63B2, 0x643A, -/* 0380 */ 0x656C, 0x666F, 0x6842, 0x6E13, 0x7566, 0x7A3D, 0x7CFB, 0x7D4C, -/* 0388 */ 0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, 0x86CD, 0x8A08, 0x8A63, -/* 0390 */ 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, 0x9BE8, 0x5287, -/* 0398 */ 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20, 0x6C7A, -/* 03A0 */ 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6, 0x5039, -/* 03A8 */ 0x5026, 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805, -/* 03B0 */ 0x5ACC, 0x5EFA, 0x61B2, 0x61F8, 0x62F3, 0x6372, 0x691C, 0x6A29, -/* 03B8 */ 0x727D, 0x72AC, 0x732E, 0x7814, 0x786F, 0x7D79, 0x770C, 0x80A9, -/* 03C0 */ 0x898B, 0x8B19, 0x8CE2, 0x8ED2, 0x9063, 0x9375, 0x967A, 0x9855, -/* 03C8 */ 0x9A13, 0x9E78, 0x5143, 0x539F, 0x53B3, 0x5E7B, 0x5F26, 0x6E1B, -/* 03D0 */ 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237, 0x8A00, 0x8AFA, 0x9650, -/* 03D8 */ 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA, 0x59D1, 0x5B64, 0x5DF1, -/* 03E0 */ 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF, 0x6E56, 0x72D0, 0x7CCA, -/* 03E8 */ 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E, 0x8A87, 0x8DE8, 0x9237, -/* 03F0 */ 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92, 0x4F0D, 0x5348, 0x5449, -/* 03F8 */ 0x543E, 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, 0x68A7, 0x6A8E, 0x745A, -/* 0400 */ 0x7881, 0x8A9E, 0x8AA4, 0x8B77, 0x9190, 0x4E5E, 0x9BC9, 0x4EA4, -/* 0408 */ 0x4F7C, 0x4FAF, 0x5019, 0x5016, 0x5149, 0x516C, 0x529F, 0x52B9, -/* 0410 */ 0x52FE, 0x539A, 0x53E3, 0x5411, 0x540E, 0x5589, 0x5751, 0x57A2, -/* 0418 */ 0x597D, 0x5B54, 0x5B5D, 0x5B8F, 0x5DE5, 0x5DE7, 0x5DF7, 0x5E78, -/* 0420 */ 0x5E83, 0x5E9A, 0x5EB7, 0x5F18, 0x6052, 0x614C, 0x6297, 0x62D8, -/* 0428 */ 0x63A7, 0x653B, 0x6602, 0x6643, 0x66F4, 0x676D, 0x6821, 0x6897, -/* 0430 */ 0x69CB, 0x6C5F, 0x6D2A, 0x6D69, 0x6E2F, 0x6E9D, 0x7532, 0x7687, -/* 0438 */ 0x786C, 0x7A3F, 0x7CE0, 0x7D05, 0x7D18, 0x7D5E, 0x7DB1, 0x8015, -/* 0440 */ 0x8003, 0x80AF, 0x80B1, 0x8154, 0x818F, 0x822A, 0x8352, 0x884C, -/* 0448 */ 0x8861, 0x8B1B, 0x8CA2, 0x8CFC, 0x90CA, 0x9175, 0x9271, 0x783F, -/* 0450 */ 0x92FC, 0x95A4, 0x964D, 0x9805, 0x9999, 0x9AD8, 0x9D3B, 0x525B, -/* 0458 */ 0x52AB, 0x53F7, 0x5408, 0x58D5, 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, -/* 0460 */ 0x9EB9, 0x514B, 0x523B, 0x544A, 0x56FD, 0x7A40, 0x9177, 0x9D60, -/* 0468 */ 0x9ED2, 0x7344, 0x6F09, 0x8170, 0x7511, 0x5FFD, 0x60DA, 0x9AA8, -/* 0470 */ 0x72DB, 0x8FBC, 0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764, 0x58BE, -/* 0478 */ 0x5A5A, 0x6068, 0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, -/* 0480 */ 0x75D5, 0x7D3A, 0x826E, 0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, -/* 0488 */ 0x5D6F, 0x5DE6, 0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, -/* 0490 */ 0x9396, 0x88DF, 0x5750, 0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, -/* 0498 */ 0x6700, 0x54C9, 0x585E, 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, -/* 04A0 */ 0x683D, 0x6B73, 0x6E08, 0x707D, 0x91C7, 0x7280, 0x7815, 0x7826, -/* 04A8 */ 0x796D, 0x658E, 0x7D30, 0x83DC, 0x88C1, 0x8F09, 0x969B, 0x5264, -/* 04B0 */ 0x5728, 0x6750, 0x7F6A, 0x8CA1, 0x51B4, 0x5742, 0x962A, 0x583A, -/* 04B8 */ 0x698A, 0x80B4, 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, 0x4F5C, -/* 04C0 */ 0x524A, 0x548B, 0x643E, 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, -/* 04C8 */ 0x7D22, 0x932F, 0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237, -/* 04D0 */ 0x5BDF, 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1, -/* 04D8 */ 0x7690, 0x9BD6, 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09, -/* 04E0 */ 0x5098, 0x53C2, 0x5C71, 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6, -/* 04E8 */ 0x73CA, 0x7523, 0x7B97, 0x7E82, 0x8695, 0x8B83, 0x8CDB, 0x9178, -/* 04F0 */ 0x9910, 0x65AC, 0x66AB, 0x6B8B, 0x4ED5, 0x4ED4, 0x4F3A, 0x4F7F, -/* 04F8 */ 0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB, 0x58EB, 0x59CB, 0x59C9, -/* 0500 */ 0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D, 0x6307, -/* 0508 */ 0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62, 0x6B7B, -/* 0510 */ 0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2, -/* 0518 */ 0x8102, 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE, -/* 0520 */ 0x8CC7, 0x8CDC, 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D, -/* 0528 */ 0x5150, 0x5B57, 0x5BFA, 0x6148, 0x6301, 0x6642, 0x6B21, 0x6ECB, -/* 0530 */ 0x6CBB, 0x723E, 0x74BD, 0x75D4, 0x78C1, 0x793A, 0x800C, 0x8033, -/* 0538 */ 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F, 0x5F0F, 0x8B58, 0x9D2B, -/* 0540 */ 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1, 0x57F7, 0x5931, -/* 0548 */ 0x5AC9, 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE, 0x8CEA, 0x5B9F, -/* 0550 */ 0x8500, 0x7BE0, 0x5072, 0x67F4, 0x829D, 0x5C61, 0x854A, 0x7E1E, -/* 0558 */ 0x820E, 0x5199, 0x5C04, 0x6368, 0x8D66, 0x659C, 0x716E, 0x793E, -/* 0560 */ 0x7D17, 0x8005, 0x8B1D, 0x8ECA, 0x906E, 0x86C7, 0x90AA, 0x501F, -/* 0568 */ 0x52FA, 0x5C3A, 0x6753, 0x707C, 0x7235, 0x914C, 0x91C8, 0x932B, -/* 0570 */ 0x82E5, 0x5BC2, 0x5F31, 0x60F9, 0x4E3B, 0x53D6, 0x5B88, 0x624B, -/* 0578 */ 0x6731, 0x6B8A, 0x72E9, 0x73E0, 0x7A2E, 0x816B, 0x8DA3, 0x9152, -/* 0580 */ 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF, 0x6388, 0x6A39, 0x7DAC, -/* 0588 */ 0x9700, 0x56DA, 0x53CE, 0x5468, 0x5B97, 0x5C31, 0x5DDE, 0x4FEE, -/* 0590 */ 0x6101, 0x62FE, 0x6D32, 0x79C0, 0x79CB, 0x7D42, 0x7E4D, 0x7FD2, -/* 0598 */ 0x81ED, 0x821F, 0x8490, 0x8846, 0x8972, 0x8B90, 0x8E74, 0x8F2F, -/* 05A0 */ 0x9031, 0x914B, 0x916C, 0x96C6, 0x919C, 0x4EC0, 0x4F4F, 0x5145, -/* 05A8 */ 0x5341, 0x5F93, 0x620E, 0x67D4, 0x6C41, 0x6E0B, 0x7363, 0x7E26, -/* 05B0 */ 0x91CD, 0x9283, 0x53D4, 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, -/* 05B8 */ 0x7C9B, 0x587E, 0x719F, 0x51FA, 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, -/* 05C0 */ 0x6625, 0x77AC, 0x7AE3, 0x821C, 0x99FF, 0x51C6, 0x5FAA, 0x65EC, -/* 05C8 */ 0x696F, 0x6B89, 0x6DF3, 0x6E96, 0x6F64, 0x76FE, 0x7D14, 0x5DE1, -/* 05D0 */ 0x9075, 0x9187, 0x9806, 0x51E6, 0x521D, 0x6240, 0x6691, 0x66D9, -/* 05D8 */ 0x6E1A, 0x5EB6, 0x7DD2, 0x7F72, 0x66F8, 0x85AF, 0x85F7, 0x8AF8, -/* 05E0 */ 0x52A9, 0x53D9, 0x5973, 0x5E8F, 0x5F90, 0x6055, 0x92E4, 0x9664, -/* 05E8 */ 0x50B7, 0x511F, 0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, -/* 05F0 */ 0x5531, 0x5617, 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, -/* 05F8 */ 0x5C11, 0x5C1A, 0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, -/* 0600 */ 0x62DB, 0x638C, 0x6377, 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, -/* 0608 */ 0x68A2, 0x6A1F, 0x6A35, 0x6CBC, 0x6D88, 0x6E09, 0x6E58, 0x713C, -/* 0610 */ 0x7126, 0x7167, 0x75C7, 0x7701, 0x785D, 0x7901, 0x7965, 0x79F0, -/* 0618 */ 0x7AE0, 0x7B11, 0x7CA7, 0x7D39, 0x8096, 0x83D6, 0x848B, 0x8549, -/* 0620 */ 0x885D, 0x88F3, 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, 0x8CDE, -/* 0628 */ 0x91A4, 0x9266, 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, -/* 0630 */ 0x4E1E, 0x4E57, 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, -/* 0638 */ 0x5E38, 0x60C5, 0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, -/* 0640 */ 0x7A63, 0x84B8, 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE, -/* 0648 */ 0x62ED, 0x690D, 0x6B96, 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6, -/* 0650 */ 0x98DF, 0x8755, 0x8FB1, 0x5C3B, 0x4F38, 0x4FE1, 0x4FB5, 0x5507, -/* 0658 */ 0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E, 0x632F, 0x65B0, 0x664B, -/* 0660 */ 0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9, 0x771F, 0x795E, -/* 0668 */ 0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A, 0x8EAB, -/* 0670 */ 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875, -/* 0678 */ 0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663, -/* 0680 */ 0x976D, 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0x9017, -/* 0688 */ 0x5439, 0x5782, 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B, -/* 0690 */ 0x7FE0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968F, 0x745E, -/* 0698 */ 0x9AC4, 0x5D07, 0x5D69, 0x6570, 0x67A2, 0x8DA8, 0x96DB, 0x636E, -/* 06A0 */ 0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0, 0x88FE, 0x6F84, 0x647A, -/* 06A8 */ 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4, 0x5236, 0x52E2, -/* 06B0 */ 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574, 0x661F, 0x6674, -/* 06B8 */ 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F, 0x76DB, 0x7CBE, -/* 06C0 */ 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93, 0x8ACB, 0x901D, -/* 06C8 */ 0x9192, 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106, 0x96BB, 0x5E2D, -/* 06D0 */ 0x60DC, 0x621A, 0x65A5, 0x6614, 0x6790, 0x77F3, 0x7A4D, 0x7C4D, -/* 06D8 */ 0x7E3E, 0x810A, 0x8CAC, 0x8D64, 0x8DE1, 0x8E5F, 0x78A9, 0x5207, -/* 06E0 */ 0x62D9, 0x63A5, 0x6442, 0x6298, 0x8A2D, 0x7A83, 0x7BC0, 0x8AAC, -/* 06E8 */ 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9, 0x5148, 0x5343, 0x5360, -/* 06F0 */ 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247, 0x64B0, 0x6813, -/* 06F8 */ 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C, 0x714E, 0x717D, -/* 0700 */ 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA, 0x7E4A, 0x7FA8, 0x817A, 0x821B, -/* 0708 */ 0x8239, 0x85A6, 0x8A6E, 0x8CCE, 0x8DF5, 0x9078, 0x9077, 0x92AD, -/* 0710 */ 0x9291, 0x9583, 0x9BAE, 0x524D, 0x5584, 0x6F38, 0x7136, 0x5168, -/* 0718 */ 0x7985, 0x7E55, 0x81B3, 0x7CCE, 0x564C, 0x5851, 0x5CA8, 0x63AA, -/* 0720 */ 0x66FE, 0x66FD, 0x695A, 0x72D9, 0x758F, 0x758E, 0x790E, 0x7956, -/* 0728 */ 0x79DF, 0x7C97, 0x7D20, 0x7D44, 0x8607, 0x8A34, 0x963B, 0x9061, -/* 0730 */ 0x9F20, 0x50E7, 0x5275, 0x53CC, 0x53E2, 0x5009, 0x55AA, 0x58EE, -/* 0738 */ 0x594F, 0x723D, 0x5B8B, 0x5C64, 0x531D, 0x60E3, 0x60F3, 0x635C, -/* 0740 */ 0x6383, 0x633F, 0x63BB, 0x64CD, 0x65E9, 0x66F9, 0x5DE3, 0x69CD, -/* 0748 */ 0x69FD, 0x6F15, 0x71E5, 0x4E89, 0x75E9, 0x76F8, 0x7A93, 0x7CDF, -/* 0750 */ 0x7DCF, 0x7D9C, 0x8061, 0x8349, 0x8358, 0x846C, 0x84BC, 0x85FB, -/* 0758 */ 0x88C5, 0x8D70, 0x9001, 0x906D, 0x9397, 0x971C, 0x9A12, 0x50CF, -/* 0760 */ 0x5897, 0x618E, 0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, -/* 0768 */ 0x5247, 0x5373, 0x606F, 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, -/* 0770 */ 0x4FD7, 0x5C5E, 0x8CCA, 0x65CF, 0x7D9A, 0x5352, 0x8896, 0x5176, -/* 0778 */ 0x63C3, 0x5B58, 0x5B6B, 0x5C0A, 0x640D, 0x6751, 0x905C, 0x4ED6, -/* 0780 */ 0x591A, 0x592A, 0x6C70, 0x8A51, 0x553E, 0x5815, 0x59A5, 0x60F0, -/* 0788 */ 0x6253, 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28, 0x4F53, -/* 0790 */ 0x5806, 0x5BFE, 0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B, -/* 0798 */ 0x6234, 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, -/* 07A0 */ 0x8CB8, 0x9000, 0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, -/* 07A8 */ 0x5927, 0x7B2C, 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, -/* 07B0 */ 0x5544, 0x5B85, 0x6258, 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, -/* 07B8 */ 0x8A17, 0x9438, 0x6FC1, 0x8AFE, 0x8338, 0x51E7, 0x86F8, 0x53EA, -/* 07C0 */ 0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, 0x8131, 0x5DFD, 0x7AEA, -/* 07C8 */ 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, 0x8AB0, 0x4E39, -/* 07D0 */ 0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E, 0x6DE1, -/* 07D8 */ 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6, -/* 07E0 */ 0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD, 0x6696, -/* 07E8 */ 0x6A80, 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730, 0x5F1B, -/* 07F0 */ 0x6065, 0x667A, 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4, 0x8718, -/* 07F8 */ 0x9045, 0x99B3, 0x7BC9, 0x755C, 0x7AF9, 0x7B51, 0x84C4, 0x9010, -/* 0800 */ 0x79E9, 0x7A92, 0x8336, 0x5AE1, 0x7740, 0x4E2D, 0x4EF2, 0x5B99, -/* 0808 */ 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, 0x866B, 0x8877, 0x8A3B, -/* 0810 */ 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, 0x82E7, 0x8457, -/* 0818 */ 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5, 0x5E16, 0x5E33, -/* 0820 */ 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2, 0x6311, 0x66A2, -/* 0828 */ 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074, 0x8139, 0x8178, -/* 0830 */ 0x8776, 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A, 0x9577, 0x9802, -/* 0838 */ 0x9CE5, 0x52C5, 0x6357, 0x76F4, 0x6715, 0x6C88, 0x73CD, 0x8CC3, -/* 0840 */ 0x93AE, 0x9673, 0x6D25, 0x589C, 0x690E, 0x69CC, 0x8FFD, 0x939A, -/* 0848 */ 0x75DB, 0x901A, 0x585A, 0x6802, 0x63B4, 0x69FB, 0x4F43, 0x6F2C, -/* 0850 */ 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354, 0x693F, 0x6F70, 0x576A, -/* 0858 */ 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, 0x91E3, 0x9DB4, 0x4EAD, -/* 0860 */ 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448, 0x5824, 0x5B9A, -/* 0868 */ 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C, 0x62B5, 0x633A, -/* 0870 */ 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B, 0x7DE0, 0x8247, -/* 0878 */ 0x8A02, 0x8AE6, 0x8E44, 0x9013, 0x90B8, 0x912D, 0x91D8, 0x9F0E, -/* 0880 */ 0x6CE5, 0x6458, 0x64E2, 0x6575, 0x6EF4, 0x7684, 0x7B1B, 0x9069, -/* 0888 */ 0x93D1, 0x6EBA, 0x54F2, 0x5FB9, 0x64A4, 0x8F4D, 0x8FED, 0x9244, -/* 0890 */ 0x5178, 0x586B, 0x5929, 0x5C55, 0x5E97, 0x6DFB, 0x7E8F, 0x751C, -/* 0898 */ 0x8CBC, 0x8EE2, 0x985B, 0x70B9, 0x4F1D, 0x6BBF, 0x6FB1, 0x7530, -/* 08A0 */ 0x96FB, 0x514E, 0x5410, 0x5835, 0x5857, 0x59AC, 0x5C60, 0x5F92, -/* 08A8 */ 0x6597, 0x675C, 0x6E21, 0x767B, 0x83DF, 0x8CED, 0x9014, 0x90FD, -/* 08B0 */ 0x934D, 0x7825, 0x783A, 0x52AA, 0x5EA6, 0x571F, 0x5974, 0x6012, -/* 08B8 */ 0x5012, 0x515A, 0x51AC, 0x51CD, 0x5200, 0x5510, 0x5854, 0x5858, -/* 08C0 */ 0x5957, 0x5B95, 0x5CF6, 0x5D8B, 0x60BC, 0x6295, 0x642D, 0x6771, -/* 08C8 */ 0x6843, 0x68BC, 0x68DF, 0x76D7, 0x6DD8, 0x6E6F, 0x6D9B, 0x706F, -/* 08D0 */ 0x71C8, 0x5F53, 0x75D8, 0x7977, 0x7B49, 0x7B54, 0x7B52, 0x7CD6, -/* 08D8 */ 0x7D71, 0x5230, 0x8463, 0x8569, 0x85E4, 0x8A0E, 0x8B04, 0x8C46, -/* 08E0 */ 0x8E0F, 0x9003, 0x900F, 0x9419, 0x9676, 0x982D, 0x9A30, 0x95D8, -/* 08E8 */ 0x50CD, 0x52D5, 0x540C, 0x5802, 0x5C0E, 0x61A7, 0x649E, 0x6D1E, -/* 08F0 */ 0x77B3, 0x7AE5, 0x80F4, 0x8404, 0x9053, 0x9285, 0x5CE0, 0x9D07, -/* 08F8 */ 0x533F, 0x5F97, 0x5FB3, 0x6D9C, 0x7279, 0x7763, 0x79BF, 0x7BE4, -/* 0900 */ 0x6BD2, 0x72EC, 0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81, 0x6934, -/* 0908 */ 0x5C4A, 0x9CF6, 0x82EB, 0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F, -/* 0910 */ 0x60C7, 0x6566, 0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, -/* 0918 */ 0x920D, 0x5948, 0x90A3, 0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, -/* 0920 */ 0x7058, 0x637A, 0x934B, 0x6962, 0x99B4, 0x7E04, 0x7577, 0x5357, -/* 0928 */ 0x6960, 0x8EDF, 0x96E3, 0x6C5D, 0x4E8C, 0x5C3C, 0x5F10, 0x8FE9, -/* 0930 */ 0x5302, 0x8CD1, 0x8089, 0x8679, 0x5EFF, 0x65E5, 0x4E73, 0x5165, -/* 0938 */ 0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D, 0x6FE1, -/* 0940 */ 0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74, 0x5FF5, -/* 0948 */ 0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B, 0x57DC, -/* 0950 */ 0x56A2, 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, 0x81BF, 0x8FB2, -/* 0958 */ 0x8997, 0x86A4, 0x5DF4, 0x628A, 0x64AD, 0x8987, 0x6777, 0x6CE2, -/* 0960 */ 0x6D3E, 0x7436, 0x7834, 0x5A46, 0x7F75, 0x82AD, 0x99AC, 0x4FF3, -/* 0968 */ 0x5EC3, 0x62DD, 0x6392, 0x6557, 0x676F, 0x76C3, 0x724C, 0x80CC, -/* 0970 */ 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, 0x5A92, 0x6885, 0x6973, -/* 0978 */ 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A, 0x9019, 0x877F, -/* 0980 */ 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD, 0x67CF, -/* 0988 */ 0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD, -/* 0990 */ 0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, 0x9EA6, 0x51FD, 0x7BB1, -/* 0998 */ 0x7872, 0x7BB8, 0x8087, 0x7B48, 0x6AE8, 0x5E61, 0x808C, 0x7551, -/* 09A0 */ 0x7560, 0x516B, 0x9262, 0x6E8C, 0x767A, 0x9197, 0x9AEA, 0x4F10, -/* 09A8 */ 0x7F70, 0x629C, 0x7B4F, 0x95A5, 0x9CE9, 0x567A, 0x5859, 0x86E4, -/* 09B0 */ 0x96BC, 0x4F34, 0x5224, 0x534A, 0x53CD, 0x53DB, 0x5E06, 0x642C, -/* 09B8 */ 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248, 0x72AF, 0x73ED, 0x7554, -/* 09C0 */ 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4, 0x91C6, 0x7169, 0x9812, -/* 09C8 */ 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4, 0x78D0, 0x8543, 0x86EE, -/* 09D0 */ 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87, 0x5F7C, 0x60B2, 0x6249, -/* 09D8 */ 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, 0x75B2, 0x76AE, 0x7891, -/* 09E0 */ 0x79D8, 0x7DCB, 0x7F77, 0x80A5, 0x88AB, 0x8AB9, 0x8CBB, 0x907F, -/* 09E8 */ 0x975E, 0x98DB, 0x6A0B, 0x7C38, 0x5099, 0x5C3E, 0x5FAE, 0x6787, -/* 09F0 */ 0x6BD8, 0x7435, 0x7709, 0x7F8E, 0x9F3B, 0x67CA, 0x7A17, 0x5339, -/* 09F8 */ 0x758B, 0x9AED, 0x5F66, 0x819D, 0x83F1, 0x8098, 0x5F3C, 0x5FC5, -/* 0A00 */ 0x7562, 0x7B46, 0x903C, 0x6867, 0x59EB, 0x5A9B, 0x7D10, 0x767E, -/* 0A08 */ 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19, 0x6C37, 0x6F02, 0x74E2, 0x7968, -/* 0A10 */ 0x8868, 0x8A55, 0x8C79, 0x5EDF, 0x63CF, 0x75C5, 0x79D2, 0x82D7, -/* 0A18 */ 0x9328, 0x92F2, 0x849C, 0x86ED, 0x9C2D, 0x54C1, 0x5F6C, 0x658C, -/* 0A20 */ 0x6D5C, 0x7015, 0x8CA7, 0x8CD3, 0x983B, 0x654F, 0x74F6, 0x4E0D, -/* 0A28 */ 0x4ED8, 0x57E0, 0x592B, 0x5A66, 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, -/* 0A30 */ 0x6016, 0x6276, 0x6577, 0x65A7, 0x666E, 0x6D6E, 0x7236, 0x7B26, -/* 0A38 */ 0x8150, 0x819A, 0x8299, 0x8B5C, 0x8CA0, 0x8CE6, 0x8D74, 0x961C, -/* 0A40 */ 0x9644, 0x4FAE, 0x64AB, 0x6B66, 0x821E, 0x8461, 0x856A, 0x90E8, -/* 0A48 */ 0x5C01, 0x6953, 0x98A8, 0x847A, 0x8557, 0x4F0F, 0x526F, 0x5FA9, -/* 0A50 */ 0x5E45, 0x670D, 0x798F, 0x8179, 0x8907, 0x8986, 0x6DF5, 0x5F17, -/* 0A58 */ 0x6255, 0x6CB8, 0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B, 0x5674, -/* 0A60 */ 0x58B3, 0x61A4, 0x626E, 0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B, -/* 0A68 */ 0x96F0, 0x6587, 0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, -/* 0A70 */ 0x5E73, 0x5F0A, 0x67C4, 0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, -/* 0A78 */ 0x9801, 0x50FB, 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, -/* 0A80 */ 0x7B86, 0x504F, 0x5909, 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, -/* 0A88 */ 0x904D, 0x4FBF, 0x52C9, 0x5A29, 0x5F01, 0x97AD, 0x4FDD, 0x8217, -/* 0A90 */ 0x92EA, 0x5703, 0x6355, 0x6B69, 0x752B, 0x88DC, 0x8F14, 0x7A42, -/* 0A98 */ 0x52DF, 0x5893, 0x6155, 0x620A, 0x66AE, 0x6BCD, 0x7C3F, 0x83E9, -/* 0AA0 */ 0x5023, 0x4FF8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5B9D, 0x5CF0, -/* 0AA8 */ 0x5CEF, 0x5D29, 0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B, -/* 0AB0 */ 0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C, -/* 0AB8 */ 0x84EC, 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD, -/* 0AC0 */ 0x9CF3, 0x9D6C, 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8, -/* 0AC8 */ 0x5E3D, 0x5FD8, 0x5FD9, 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2, -/* 0AD0 */ 0x5192, 0x7D21, 0x80AA, 0x81A8, 0x8B00, 0x8C8C, 0x8CBF, 0x927E, -/* 0AD8 */ 0x9632, 0x5420, 0x982C, 0x5317, 0x50D5, 0x535C, 0x58A8, 0x64B2, -/* 0AE0 */ 0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3, 0x6CA1, 0x6B86, -/* 0AE8 */ 0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6, 0x6469, -/* 0AF0 */ 0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE, -/* 0AF8 */ 0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52, -/* 0B00 */ 0x685D, 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4, -/* 0B08 */ 0x4FAD, 0x7E6D, 0x9EBF, 0x4E07, 0x6162, 0x6E80, 0x6F2B, 0x8513, -/* 0B10 */ 0x5473, 0x672A, 0x9B45, 0x5DF3, 0x7B95, 0x5CAC, 0x5BC6, 0x871C, -/* 0B18 */ 0x6E4A, 0x84D1, 0x7A14, 0x8108, 0x5999, 0x7C8D, 0x6C11, 0x7720, -/* 0B20 */ 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB, 0x9727, 0x9D61, 0x690B, -/* 0B28 */ 0x5A7F, 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E, 0x76DF, 0x8FF7, -/* 0B30 */ 0x9298, 0x9CF4, 0x59EA, 0x725D, 0x6EC5, 0x514D, 0x68C9, 0x7DBF, -/* 0B38 */ 0x7DEC, 0x9762, 0x9EBA, 0x6478, 0x6A21, 0x8302, 0x5984, 0x5B5F, -/* 0B40 */ 0x6BDB, 0x731B, 0x76F2, 0x7DB2, 0x8017, 0x8499, 0x5132, 0x6728, -/* 0B48 */ 0x9ED9, 0x76EE, 0x6762, 0x52FF, 0x9905, 0x5C24, 0x623B, 0x7C7E, -/* 0B50 */ 0x8CB0, 0x554F, 0x60B6, 0x7D0B, 0x9580, 0x5301, 0x4E5F, 0x51B6, -/* 0B58 */ 0x591C, 0x723A, 0x8036, 0x91CE, 0x5F25, 0x77E2, 0x5384, 0x5F79, -/* 0B60 */ 0x7D04, 0x85AC, 0x8A33, 0x8E8D, 0x9756, 0x67F3, 0x85AE, 0x9453, -/* 0B68 */ 0x6109, 0x6108, 0x6CB9, 0x7652, 0x8AED, 0x8F38, 0x552F, 0x4F51, -/* 0B70 */ 0x512A, 0x52C7, 0x53CB, 0x5BA5, 0x5E7D, 0x60A0, 0x6182, 0x63D6, -/* 0B78 */ 0x6709, 0x67DA, 0x6E67, 0x6D8C, 0x7336, 0x7337, 0x7531, 0x7950, -/* 0B80 */ 0x88D5, 0x8A98, 0x904A, 0x9091, 0x90F5, 0x96C4, 0x878D, 0x5915, -/* 0B88 */ 0x4E88, 0x4F59, 0x4E0E, 0x8A89, 0x8F3F, 0x9810, 0x50AD, 0x5E7C, -/* 0B90 */ 0x5996, 0x5BB9, 0x5EB8, 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, -/* 0B98 */ 0x69D8, 0x6D0B, 0x6EB6, 0x7194, 0x7528, 0x7AAF, 0x7F8A, 0x8000, -/* 0BA0 */ 0x8449, 0x84C9, 0x8981, 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, -/* 0BA8 */ 0x617E, 0x6291, 0x6B32, 0x6C83, 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, -/* 0BB0 */ 0x7F85, 0x87BA, 0x88F8, 0x6765, 0x83B1, 0x983C, 0x96F7, 0x6D1B, -/* 0BB8 */ 0x7D61, 0x843D, 0x916A, 0x4E71, 0x5375, 0x5D50, 0x6B04, 0x6FEB, -/* 0BC0 */ 0x85CD, 0x862D, 0x89A7, 0x5229, 0x540F, 0x5C65, 0x674E, 0x68A8, -/* 0BC8 */ 0x7406, 0x7483, 0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, -/* 0BD0 */ 0x5F8B, 0x7387, 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, -/* 0BD8 */ 0x6E9C, 0x7409, 0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, -/* 0BE0 */ 0x4FB6, 0x616E, 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, -/* 0BE8 */ 0x51CC, 0x5BEE, 0x6599, 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, -/* 0BF0 */ 0x7A1C, 0x7CE7, 0x826F, 0x8AD2, 0x907C, 0x91CF, 0x9675, 0x9818, -/* 0BF8 */ 0x529B, 0x7DD1, 0x502B, 0x5398, 0x6797, 0x6DCB, 0x71D0, 0x7433, -/* 0C00 */ 0x81E8, 0x8F2A, 0x96A3, 0x9C57, 0x9E9F, 0x7460, 0x5841, 0x6D99, -/* 0C08 */ 0x7D2F, 0x985E, 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, 0x5DBA, -/* 0C10 */ 0x601C, 0x73B2, 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, -/* 0C18 */ 0x9E97, 0x9F62, 0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, -/* 0C20 */ 0x5EC9, 0x604B, 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F, -/* 0C28 */ 0x84EE, 0x9023, 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2, -/* 0C30 */ 0x8DEF, 0x9732, 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C, -/* 0C38 */ 0x6994, 0x6D6A, 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001, 0x807E, -/* 0C40 */ 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, 0x808B, 0x9332, 0x8AD6, -/* 0C48 */ 0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, 0x60D1, 0x67A0, -/* 0C50 */ 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568, 0x6900, -/* 0C58 */ 0x6E7E, 0x7897, 0x8155, 0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, -/* 0C60 */ 0x4E36, 0x4E3C, 0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, -/* 0C68 */ 0x8C6B, 0x4E8A, 0x8212, 0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, -/* 0C70 */ 0x4EA2, 0x4EB0, 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, -/* 0C78 */ 0x4EC2, 0x4ED7, 0x4EDE, 0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, -/* 0C80 */ 0x4F30, 0x4F5B, 0x4F5D, 0x4F57, 0x4F47, 0x4F76, 0x4F88, 0x4F8F, -/* 0C88 */ 0x4F98, 0x4F7B, 0x4F69, 0x4F70, 0x4F91, 0x4F6F, 0x4F86, 0x4F96, -/* 0C90 */ 0x5118, 0x4FD4, 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB, 0x4FD1, 0x4FDA, -/* 0C98 */ 0x4FD0, 0x4FE4, 0x4FE5, 0x501A, 0x5028, 0x5014, 0x502A, 0x5025, -/* 0CA0 */ 0x5005, 0x4F1C, 0x4FF6, 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, -/* 0CA8 */ 0x5011, 0x5006, 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, -/* 0CB0 */ 0x505A, 0x5056, 0x506C, 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, -/* 0CB8 */ 0x50B2, 0x50C9, 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, -/* 0CC0 */ 0x50ED, 0x50E3, 0x50EE, 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, -/* 0CC8 */ 0x5116, 0x5115, 0x5114, 0x511A, 0x5121, 0x513A, 0x5137, 0x513C, -/* 0CD0 */ 0x513B, 0x513F, 0x5140, 0x5152, 0x514C, 0x5154, 0x5162, 0x7AF8, -/* 0CD8 */ 0x5169, 0x516A, 0x516E, 0x5180, 0x5182, 0x56D8, 0x518C, 0x5189, -/* 0CE0 */ 0x518F, 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, 0x51A2, -/* 0CE8 */ 0x51A9, 0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5, -/* 0CF0 */ 0x51BD, 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, -/* 0CF8 */ 0x51F0, 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, -/* 0D00 */ 0x522A, 0x522E, 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C, -/* 0D08 */ 0x525E, 0x5254, 0x526A, 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, -/* 0D10 */ 0x528D, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8FA8, 0x8FA7, -/* 0D18 */ 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, 0x52CD, 0x52D7, 0x52DE, -/* 0D20 */ 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, 0x52F8, 0x52F9, -/* 0D28 */ 0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315, 0x531A, -/* 0D30 */ 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345, -/* 0D38 */ 0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E, 0x5918, -/* 0D40 */ 0x537B, 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5, 0x53AE, -/* 0D48 */ 0x53B0, 0x53B6, 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC, 0x71EE, -/* 0D50 */ 0x53EE, 0x53E8, 0x53ED, 0x53FA, 0x5401, 0x543D, 0x5440, 0x542C, -/* 0D58 */ 0x542D, 0x543C, 0x542E, 0x5436, 0x5429, 0x541D, 0x544E, 0x548F, -/* 0D60 */ 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, 0x5470, 0x5492, 0x547B, -/* 0D68 */ 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, 0x54A2, 0x54B8, -/* 0D70 */ 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8, 0x54AB, 0x54C2, 0x54A4, -/* 0D78 */ 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6, 0x550F, 0x5514, 0x54FD, -/* 0D80 */ 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539, 0x5540, 0x5563, 0x554C, -/* 0D88 */ 0x552E, 0x555C, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555D, -/* 0D90 */ 0x5599, 0x5580, 0x54AF, 0x558A, 0x559F, 0x557B, 0x557E, 0x5598, -/* 0D98 */ 0x559E, 0x55AE, 0x557C, 0x5583, 0x55A9, 0x5587, 0x55A8, 0x55DA, -/* 0DA0 */ 0x55C5, 0x55DF, 0x55C4, 0x55DC, 0x55E4, 0x55D4, 0x5614, 0x55F7, -/* 0DA8 */ 0x5616, 0x55FE, 0x55FD, 0x561B, 0x55F9, 0x564E, 0x5650, 0x71DF, -/* 0DB0 */ 0x5634, 0x5636, 0x5632, 0x5638, 0x566B, 0x5664, 0x562F, 0x566C, -/* 0DB8 */ 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0, 0x5694, 0x568F, 0x56A5, -/* 0DC0 */ 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC, 0x56C1, 0x56C3, 0x56C0, -/* 0DC8 */ 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7, 0x56EE, 0x56F9, 0x5700, -/* 0DD0 */ 0x56FF, 0x5704, 0x5709, 0x5708, 0x570B, 0x570D, 0x5713, 0x5718, -/* 0DD8 */ 0x5716, 0x55C7, 0x571C, 0x5726, 0x5737, 0x5738, 0x574E, 0x573B, -/* 0DE0 */ 0x5740, 0x574F, 0x5769, 0x57C0, 0x5788, 0x5761, 0x577F, 0x5789, -/* 0DE8 */ 0x5793, 0x57A0, 0x57B3, 0x57A4, 0x57AA, 0x57B0, 0x57C3, 0x57C6, -/* 0DF0 */ 0x57D4, 0x57D2, 0x57D3, 0x580A, 0x57D6, 0x57E3, 0x580B, 0x5819, -/* 0DF8 */ 0x581D, 0x5872, 0x5821, 0x5862, 0x584B, 0x5870, 0x6BC0, 0x5852, -/* 0E00 */ 0x583D, 0x5879, 0x5885, 0x58B9, 0x589F, 0x58AB, 0x58BA, 0x58DE, -/* 0E08 */ 0x58BB, 0x58B8, 0x58AE, 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, -/* 0E10 */ 0x58D8, 0x58E5, 0x58DC, 0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, -/* 0E18 */ 0x58FB, 0x58FC, 0x58FD, 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, -/* 0E20 */ 0x5925, 0x592C, 0x592D, 0x5932, 0x5938, 0x593E, 0x7AD2, 0x5955, -/* 0E28 */ 0x5950, 0x594E, 0x595A, 0x5958, 0x5962, 0x5960, 0x5967, 0x596C, -/* 0E30 */ 0x5969, 0x5978, 0x5981, 0x599D, 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, -/* 0E38 */ 0x59C6, 0x59E8, 0x59DC, 0x598D, 0x59D9, 0x59DA, 0x5A25, 0x5A1F, -/* 0E40 */ 0x5A11, 0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, 0x5A49, 0x5A35, -/* 0E48 */ 0x5A36, 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB, 0x5AC2, -/* 0E50 */ 0x5ABD, 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB, -/* 0E58 */ 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E, -/* 0E60 */ 0x5B43, 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65, -/* 0E68 */ 0x5B69, 0x5B70, 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80, -/* 0E70 */ 0x5B83, 0x5BA6, 0x5BB8, 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0, -/* 0E78 */ 0x5BE4, 0x5BE6, 0x5BE2, 0x5BDE, 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6, -/* 0E80 */ 0x5BF3, 0x5C05, 0x5C07, 0x5C08, 0x5C0D, 0x5C13, 0x5C20, 0x5C22, -/* 0E88 */ 0x5C28, 0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E, 0x5C53, 0x5C50, -/* 0E90 */ 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79, 0x5C8C, -/* 0E98 */ 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC, 0x5CB7, -/* 0EA0 */ 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA, 0x5CED, -/* 0EA8 */ 0x5D8C, 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F, 0x5D1B, -/* 0EB0 */ 0x5D11, 0x5D14, 0x5D22, 0x5D1A, 0x5D19, 0x5D18, 0x5D4C, 0x5D52, -/* 0EB8 */ 0x5D4E, 0x5D4B, 0x5D6C, 0x5D73, 0x5D76, 0x5D87, 0x5D84, 0x5D82, -/* 0EC0 */ 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, 0x5DBD, 0x5D90, 0x5DB7, 0x5DBC, -/* 0EC8 */ 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, 0x5DDB, 0x5DEB, 0x5DF2, -/* 0ED0 */ 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B, 0x5E36, 0x5E37, -/* 0ED8 */ 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F, 0x5E62, -/* 0EE0 */ 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F, 0x5EA0, -/* 0EE8 */ 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF, 0x5ED6, 0x5EE3, 0x5EDD, -/* 0EF0 */ 0x5EDA, 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8, 0x5EE9, 0x5EEC, 0x5EF1, -/* 0EF8 */ 0x5EF3, 0x5EF0, 0x5EF4, 0x5EF8, 0x5EFE, 0x5F03, 0x5F09, 0x5F5D, -/* 0F00 */ 0x5F5C, 0x5F0B, 0x5F11, 0x5F16, 0x5F29, 0x5F2D, 0x5F38, 0x5F41, -/* 0F08 */ 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, 0x5F51, 0x5F56, 0x5F57, 0x5F59, -/* 0F10 */ 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83, 0x5F82, 0x5F7F, 0x5F8A, -/* 0F18 */ 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99, 0x5F98, 0x5FA0, 0x5FA8, -/* 0F20 */ 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4, 0x5FF8, 0x5FF1, 0x5FDD, -/* 0F28 */ 0x60B3, 0x5FFF, 0x6021, 0x6060, 0x6019, 0x6010, 0x6029, 0x600E, -/* 0F30 */ 0x6031, 0x601B, 0x6015, 0x602B, 0x6026, 0x600F, 0x603A, 0x605A, -/* 0F38 */ 0x6041, 0x606A, 0x6077, 0x605F, 0x604A, 0x6046, 0x604D, 0x6063, -/* 0F40 */ 0x6043, 0x6064, 0x6042, 0x606C, 0x606B, 0x6059, 0x6081, 0x608D, -/* 0F48 */ 0x60E7, 0x6083, 0x609A, 0x6084, 0x609B, 0x6096, 0x6097, 0x6092, -/* 0F50 */ 0x60A7, 0x608B, 0x60E1, 0x60B8, 0x60E0, 0x60D3, 0x60B4, 0x5FF0, -/* 0F58 */ 0x60BD, 0x60C6, 0x60B5, 0x60D8, 0x614D, 0x6115, 0x6106, 0x60F6, -/* 0F60 */ 0x60F7, 0x6100, 0x60F4, 0x60FA, 0x6103, 0x6121, 0x60FB, 0x60F1, -/* 0F68 */ 0x610D, 0x610E, 0x6147, 0x613E, 0x6128, 0x6127, 0x614A, 0x613F, -/* 0F70 */ 0x613C, 0x612C, 0x6134, 0x613D, 0x6142, 0x6144, 0x6173, 0x6177, -/* 0F78 */ 0x6158, 0x6159, 0x615A, 0x616B, 0x6174, 0x616F, 0x6165, 0x6171, -/* 0F80 */ 0x615F, 0x615D, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, -/* 0F88 */ 0x6194, 0x619A, 0x618A, 0x6191, 0x61AB, 0x61AE, 0x61CC, 0x61CA, -/* 0F90 */ 0x61C9, 0x61F7, 0x61C8, 0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, -/* 0F98 */ 0x61CD, 0x61E6, 0x61E3, 0x61F6, 0x61FA, 0x61F4, 0x61FF, 0x61FD, -/* 0FA0 */ 0x61FC, 0x61FE, 0x6200, 0x6208, 0x6209, 0x620D, 0x620C, 0x6214, -/* 0FA8 */ 0x621B, 0x621E, 0x6221, 0x622A, 0x622E, 0x6230, 0x6232, 0x6233, -/* 0FB0 */ 0x6241, 0x624E, 0x625E, 0x6263, 0x625B, 0x6260, 0x6268, 0x627C, -/* 0FB8 */ 0x6282, 0x6289, 0x627E, 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283, -/* 0FC0 */ 0x6294, 0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, 0x62C6, 0x64D4, -/* 0FC8 */ 0x62C8, 0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, 0x629B, 0x62C9, -/* 0FD0 */ 0x630C, 0x62EE, 0x62F1, 0x6327, 0x6302, 0x6308, 0x62EF, 0x62F5, -/* 0FD8 */ 0x6350, 0x633E, 0x634D, 0x641C, 0x634F, 0x6396, 0x638E, 0x6380, -/* 0FE0 */ 0x63AB, 0x6376, 0x63A3, 0x638F, 0x6389, 0x639F, 0x63B5, 0x636B, -/* 0FE8 */ 0x6369, 0x63BE, 0x63E9, 0x63C0, 0x63C6, 0x63E3, 0x63C9, 0x63D2, -/* 0FF0 */ 0x63F6, 0x63C4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, -/* 0FF8 */ 0x651D, 0x6417, 0x6428, 0x640F, 0x6467, 0x646F, 0x6476, 0x644E, -/* 1000 */ 0x652A, 0x6495, 0x6493, 0x64A5, 0x64A9, 0x6488, 0x64BC, 0x64DA, -/* 1008 */ 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2, 0x64F1, 0x64E7, -/* 1010 */ 0x8209, 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF, 0x652C, 0x64F6, -/* 1018 */ 0x64F4, 0x64F2, 0x64FA, 0x6500, 0x64FD, 0x6518, 0x651C, 0x6505, -/* 1020 */ 0x6524, 0x6523, 0x652B, 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, -/* 1028 */ 0x754B, 0x6548, 0x6556, 0x6555, 0x654D, 0x6558, 0x655E, 0x655D, -/* 1030 */ 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A, 0x659B, 0x659F, 0x65AB, -/* 1038 */ 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, 0x65CC, 0x65D2, 0x65DB, -/* 1040 */ 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A, 0x6603, 0x65FB, -/* 1048 */ 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F, 0x6644, 0x6649, -/* 1050 */ 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668, 0x665F, 0x6662, -/* 1058 */ 0x6670, 0x6683, 0x6688, 0x668E, 0x6689, 0x6684, 0x6698, 0x669D, -/* 1060 */ 0x66C1, 0x66B9, 0x66C9, 0x66BE, 0x66BC, 0x66C4, 0x66B8, 0x66D6, -/* 1068 */ 0x66DA, 0x66E0, 0x663F, 0x66E6, 0x66E9, 0x66F0, 0x66F5, 0x66F7, -/* 1070 */ 0x670F, 0x6716, 0x671E, 0x6726, 0x6727, 0x9738, 0x672E, 0x673F, -/* 1078 */ 0x6736, 0x6741, 0x6738, 0x6737, 0x6746, 0x675E, 0x6760, 0x6759, -/* 1080 */ 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9, 0x677C, 0x676A, 0x678C, -/* 1088 */ 0x678B, 0x67A6, 0x67A1, 0x6785, 0x67B7, 0x67EF, 0x67B4, 0x67EC, -/* 1090 */ 0x67B3, 0x67E9, 0x67B8, 0x67E4, 0x67DE, 0x67DD, 0x67E2, 0x67EE, -/* 1098 */ 0x67B9, 0x67CE, 0x67C6, 0x67E7, 0x6A9C, 0x681E, 0x6846, 0x6829, -/* 10A0 */ 0x6840, 0x684D, 0x6832, 0x684E, 0x68B3, 0x682B, 0x6859, 0x6863, -/* 10A8 */ 0x6877, 0x687F, 0x689F, 0x688F, 0x68AD, 0x6894, 0x689D, 0x689B, -/* 10B0 */ 0x6883, 0x6AAE, 0x68B9, 0x6874, 0x68B5, 0x68A0, 0x68BA, 0x690F, -/* 10B8 */ 0x688D, 0x687E, 0x6901, 0x68CA, 0x6908, 0x68D8, 0x6922, 0x6926, -/* 10C0 */ 0x68E1, 0x690C, 0x68CD, 0x68D4, 0x68E7, 0x68D5, 0x6936, 0x6912, -/* 10C8 */ 0x6904, 0x68D7, 0x68E3, 0x6925, 0x68F9, 0x68E0, 0x68EF, 0x6928, -/* 10D0 */ 0x692A, 0x691A, 0x6923, 0x6921, 0x68C6, 0x6979, 0x6977, 0x695C, -/* 10D8 */ 0x6978, 0x696B, 0x6954, 0x697E, 0x696E, 0x6939, 0x6974, 0x693D, -/* 10E0 */ 0x6959, 0x6930, 0x6961, 0x695E, 0x695D, 0x6981, 0x696A, 0x69B2, -/* 10E8 */ 0x69AE, 0x69D0, 0x69BF, 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, -/* 10F0 */ 0x69CA, 0x69DD, 0x69BB, 0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, -/* 10F8 */ 0x699C, 0x6995, 0x69B4, 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, -/* 1100 */ 0x6B0A, 0x69F9, 0x69F2, 0x69E7, 0x6A05, 0x69B1, 0x6A1E, 0x69ED, -/* 1108 */ 0x6A14, 0x69EB, 0x6A0A, 0x6A12, 0x6AC1, 0x6A23, 0x6A13, 0x6A44, -/* 1110 */ 0x6A0C, 0x6A72, 0x6A36, 0x6A78, 0x6A47, 0x6A62, 0x6A59, 0x6A66, -/* 1118 */ 0x6A48, 0x6A38, 0x6A22, 0x6A90, 0x6A8D, 0x6AA0, 0x6A84, 0x6AA2, -/* 1120 */ 0x6AA3, 0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, -/* 1128 */ 0x6AAC, 0x6ADE, 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, -/* 1130 */ 0x6B05, 0x8616, 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, -/* 1138 */ 0x6B37, 0x76DC, 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50, -/* 1140 */ 0x6B59, 0x6B54, 0x6B5B, 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F, -/* 1148 */ 0x6B80, 0x6B84, 0x6B83, 0x6B8D, 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, -/* 1150 */ 0x6BAA, 0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1, 0x6BB3, 0x6BB7, 0x6BBC, -/* 1158 */ 0x6BC6, 0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, 0x6BF3, 0x6BEF, -/* 1160 */ 0x9EBE, 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, 0x6C5E, -/* 1168 */ 0x6C55, 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B, -/* 1170 */ 0x6C7E, 0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, -/* 1178 */ 0x6CBD, 0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE, 0x6CBA, -/* 1180 */ 0x6CDB, 0x6CEF, 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36, 0x6D2B, -/* 1188 */ 0x6D3D, 0x6D38, 0x6D19, 0x6D35, 0x6D33, 0x6D12, 0x6D0C, 0x6D63, -/* 1190 */ 0x6D93, 0x6D64, 0x6D5A, 0x6D79, 0x6D59, 0x6D8E, 0x6D95, 0x6FE4, -/* 1198 */ 0x6D85, 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5, 0x6DC7, 0x6DE6, 0x6DB8, -/* 11A0 */ 0x6DC6, 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2, 0x6DC5, 0x6DFA, -/* 11A8 */ 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E, 0x6E2E, -/* 11B0 */ 0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B, 0x6E76, -/* 11B8 */ 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF, 0x6E1D, -/* 11C0 */ 0x6E38, 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3, 0x6EBD, -/* 11C8 */ 0x6EAF, 0x6EC4, 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5, 0x6EC2, -/* 11D0 */ 0x6E9F, 0x6F41, 0x6F11, 0x704C, 0x6EEC, 0x6EF8, 0x6EFE, 0x6F3F, -/* 11D8 */ 0x6EF2, 0x6F31, 0x6EEF, 0x6F32, 0x6ECC, 0x6F3E, 0x6F13, 0x6EF7, -/* 11E0 */ 0x6F86, 0x6F7A, 0x6F78, 0x6F81, 0x6F80, 0x6F6F, 0x6F5B, 0x6FF3, -/* 11E8 */ 0x6F6D, 0x6F82, 0x6F7C, 0x6F58, 0x6F8E, 0x6F91, 0x6FC2, 0x6F66, -/* 11F0 */ 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9, 0x6FC6, 0x6FAA, 0x6FDF, -/* 11F8 */ 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1, 0x6FEE, 0x6FDB, 0x7009, -/* 1200 */ 0x700B, 0x6FFA, 0x7011, 0x7001, 0x700F, 0x6FFE, 0x701B, 0x701A, -/* 1208 */ 0x6F74, 0x701D, 0x7018, 0x701F, 0x7030, 0x703E, 0x7032, 0x7051, -/* 1210 */ 0x7063, 0x7099, 0x7092, 0x70AF, 0x70F1, 0x70AC, 0x70B8, 0x70B3, -/* 1218 */ 0x70AE, 0x70DF, 0x70CB, 0x70DD, 0x70D9, 0x7109, 0x70FD, 0x711C, -/* 1220 */ 0x7119, 0x7165, 0x7155, 0x7188, 0x7166, 0x7162, 0x714C, 0x7156, -/* 1228 */ 0x716C, 0x718F, 0x71FB, 0x7184, 0x7195, 0x71A8, 0x71AC, 0x71D7, -/* 1230 */ 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4, 0x71CE, 0x71E0, 0x71EC, -/* 1238 */ 0x71E7, 0x71F5, 0x71FC, 0x71F9, 0x71FF, 0x720D, 0x7210, 0x721B, -/* 1240 */ 0x7228, 0x722D, 0x722C, 0x7230, 0x7232, 0x723B, 0x723C, 0x723F, -/* 1248 */ 0x7240, 0x7246, 0x724B, 0x7258, 0x7274, 0x727E, 0x7282, 0x7281, -/* 1250 */ 0x7287, 0x7292, 0x7296, 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, -/* 1258 */ 0x72C6, 0x72C4, 0x72CE, 0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, -/* 1260 */ 0x72F7, 0x500F, 0x7317, 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, -/* 1268 */ 0x732F, 0x7329, 0x7325, 0x733E, 0x734E, 0x734F, 0x9ED8, 0x7357, -/* 1270 */ 0x736A, 0x7368, 0x7370, 0x7378, 0x7375, 0x737B, 0x737A, 0x73C8, -/* 1278 */ 0x73B3, 0x73CE, 0x73BB, 0x73C0, 0x73E5, 0x73EE, 0x73DE, 0x74A2, -/* 1280 */ 0x7405, 0x746F, 0x7425, 0x73F8, 0x7432, 0x743A, 0x7455, 0x743F, -/* 1288 */ 0x745F, 0x7459, 0x7441, 0x745C, 0x7469, 0x7470, 0x7463, 0x746A, -/* 1290 */ 0x7476, 0x747E, 0x748B, 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, -/* 1298 */ 0x73F1, 0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, -/* 12A0 */ 0x74F1, 0x74F8, 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, -/* 12A8 */ 0x750D, 0x7515, 0x7513, 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, -/* 12B0 */ 0x754D, 0x754A, 0x7549, 0x755B, 0x7546, 0x755A, 0x7569, 0x7564, -/* 12B8 */ 0x7567, 0x756B, 0x756D, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, -/* 12C0 */ 0x758A, 0x7589, 0x7582, 0x7594, 0x759A, 0x759D, 0x75A5, 0x75A3, -/* 12C8 */ 0x75C2, 0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, 0x75B1, -/* 12D0 */ 0x75CD, 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF, -/* 12D8 */ 0x75FC, 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, -/* 12E0 */ 0x7609, 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, -/* 12E8 */ 0x7630, 0x763B, 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, -/* 12F0 */ 0x7662, 0x7668, 0x7669, 0x766A, 0x7667, 0x766C, 0x7670, 0x7672, -/* 12F8 */ 0x7676, 0x7678, 0x767C, 0x7680, 0x7683, 0x7688, 0x768B, 0x768E, -/* 1300 */ 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, 0x76B4, 0x76B8, 0x76B9, -/* 1308 */ 0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, 0x76E1, 0x76E5, -/* 1310 */ 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704, 0x7729, -/* 1318 */ 0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738, 0x7747, -/* 1320 */ 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E, 0x7779, -/* 1328 */ 0x778E, 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6, 0x77B9, -/* 1330 */ 0x77BF, 0x77BC, 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7, 0x77DA, -/* 1338 */ 0x77DC, 0x77E3, 0x77EE, 0x77FC, 0x780C, 0x7812, 0x7926, 0x7820, -/* 1340 */ 0x792A, 0x7845, 0x788E, 0x7874, 0x7886, 0x787C, 0x789A, 0x788C, -/* 1348 */ 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, 0x78C6, 0x78CB, 0x78D4, -/* 1350 */ 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC, 0x78E7, 0x78DA, 0x78FD, -/* 1358 */ 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919, 0x792C, 0x792B, 0x7940, -/* 1360 */ 0x7960, 0x7957, 0x795F, 0x795A, 0x7955, 0x7953, 0x797A, 0x797F, -/* 1368 */ 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA, 0x79AE, 0x79B3, 0x79B9, -/* 1370 */ 0x79BA, 0x79C9, 0x79D5, 0x79E7, 0x79EC, 0x79E1, 0x79E3, 0x7A08, -/* 1378 */ 0x7A0D, 0x7A18, 0x7A19, 0x7A20, 0x7A1F, 0x7980, 0x7A31, 0x7A3B, -/* 1380 */ 0x7A3E, 0x7A37, 0x7A43, 0x7A57, 0x7A49, 0x7A61, 0x7A62, 0x7A69, -/* 1388 */ 0x9F9D, 0x7A70, 0x7A79, 0x7A7D, 0x7A88, 0x7A97, 0x7A95, 0x7A98, -/* 1390 */ 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0, 0x7AB6, 0x7AC5, 0x7AC4, 0x7ABF, -/* 1398 */ 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF, 0x7AD5, 0x7AD3, 0x7AD9, -/* 13A0 */ 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6, 0x7AED, 0x7AF0, 0x7B02, -/* 13A8 */ 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18, 0x7B19, 0x7B1E, 0x7B35, -/* 13B0 */ 0x7B28, 0x7B36, 0x7B50, 0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, -/* 13B8 */ 0x7B45, 0x7B75, 0x7B65, 0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, -/* 13C0 */ 0x7B6E, 0x7B9D, 0x7B98, 0x7B9F, 0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, -/* 13C8 */ 0x7B92, 0x7B8F, 0x7B5D, 0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, -/* 13D0 */ 0x7BB4, 0x7BC6, 0x7BDD, 0x7BE9, 0x7C11, 0x7C14, 0x7BE6, 0x7BE5, -/* 13D8 */ 0x7C60, 0x7C00, 0x7C07, 0x7C13, 0x7BF3, 0x7BF7, 0x7C17, 0x7C0D, -/* 13E0 */ 0x7BF6, 0x7C23, 0x7C27, 0x7C2A, 0x7C1F, 0x7C37, 0x7C2B, 0x7C3D, -/* 13E8 */ 0x7C4C, 0x7C43, 0x7C54, 0x7C4F, 0x7C40, 0x7C50, 0x7C58, 0x7C5F, -/* 13F0 */ 0x7C64, 0x7C56, 0x7C65, 0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4, -/* 13F8 */ 0x7CAD, 0x7CA2, 0x7CAB, 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, -/* 1400 */ 0x7CAE, 0x7CB9, 0x7CBD, 0x7CC0, 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, -/* 1408 */ 0x7CDC, 0x7CE2, 0x9B3B, 0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, -/* 1410 */ 0x7D06, 0x7D02, 0x7D1C, 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, -/* 1418 */ 0x7D32, 0x7D3F, 0x7D35, 0x7D46, 0x7D73, 0x7D56, 0x7D4E, 0x7D72, -/* 1420 */ 0x7D68, 0x7D6E, 0x7D4F, 0x7D63, 0x7D93, 0x7D89, 0x7D5B, 0x7D8F, -/* 1428 */ 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, 0x7DC7, 0x7DBD, -/* 1430 */ 0x7DAB, 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F, 0x7DB0, -/* 1438 */ 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05, -/* 1440 */ 0x7E0A, 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B, -/* 1448 */ 0x7E22, 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37, -/* 1450 */ 0x7E32, 0x7E3A, 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A, -/* 1458 */ 0x7E79, 0x7E6A, 0x7E69, 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D, -/* 1460 */ 0x8FAE, 0x7E7F, 0x7E88, 0x7E89, 0x7E8C, 0x7E92, 0x7E90, 0x7E93, -/* 1468 */ 0x7E94, 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, 0x7F38, 0x7F3A, 0x7F45, -/* 1470 */ 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55, 0x7F54, 0x7F58, -/* 1478 */ 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82, 0x7F86, -/* 1480 */ 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D, 0x7F9A, -/* 1488 */ 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8, 0x8B71, -/* 1490 */ 0x7FC5, 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6, 0x7FE9, -/* 1498 */ 0x7FF3, 0x7FF9, 0x98DC, 0x8006, 0x8004, 0x800B, 0x8012, 0x8018, -/* 14A0 */ 0x8019, 0x801C, 0x8021, 0x8028, 0x803F, 0x803B, 0x804A, 0x8046, -/* 14A8 */ 0x8052, 0x8058, 0x805A, 0x805F, 0x8062, 0x8068, 0x8073, 0x8072, -/* 14B0 */ 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, 0x8084, 0x8086, 0x8085, -/* 14B8 */ 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC, 0x80DB, 0x80E5, -/* 14C0 */ 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF, 0x80F1, -/* 14C8 */ 0x811B, 0x8129, 0x8123, 0x812F, 0x814B, 0x968B, 0x8146, 0x813E, -/* 14D0 */ 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E, 0x8165, 0x8166, 0x8174, -/* 14D8 */ 0x8183, 0x8188, 0x818A, 0x8180, 0x8182, 0x81A0, 0x8195, 0x81A4, -/* 14E0 */ 0x81A3, 0x815F, 0x8193, 0x81A9, 0x81B0, 0x81B5, 0x81BE, 0x81B8, -/* 14E8 */ 0x81BD, 0x81C0, 0x81C2, 0x81BA, 0x81C9, 0x81CD, 0x81D1, 0x81D9, -/* 14F0 */ 0x81D8, 0x81C8, 0x81DA, 0x81DF, 0x81E0, 0x81E7, 0x81FA, 0x81FB, -/* 14F8 */ 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207, 0x820A, 0x820D, 0x8210, -/* 1500 */ 0x8216, 0x8229, 0x822B, 0x8238, 0x8233, 0x8240, 0x8259, 0x8258, -/* 1508 */ 0x825D, 0x825A, 0x825F, 0x8264, 0x8262, 0x8268, 0x826A, 0x826B, -/* 1510 */ 0x822E, 0x8271, 0x8277, 0x8278, 0x827E, 0x828D, 0x8292, 0x82AB, -/* 1518 */ 0x829F, 0x82BB, 0x82AC, 0x82E1, 0x82E3, 0x82DF, 0x82D2, 0x82F4, -/* 1520 */ 0x82F3, 0x82FA, 0x8393, 0x8303, 0x82FB, 0x82F9, 0x82DE, 0x8306, -/* 1528 */ 0x82DC, 0x8309, 0x82D9, 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, -/* 1530 */ 0x8340, 0x8339, 0x8350, 0x8345, 0x832F, 0x832B, 0x8317, 0x8318, -/* 1538 */ 0x8385, 0x839A, 0x83AA, 0x839F, 0x83A2, 0x8396, 0x8323, 0x838E, -/* 1540 */ 0x8387, 0x838A, 0x837C, 0x83B5, 0x8373, 0x8375, 0x83A0, 0x8389, -/* 1548 */ 0x83A8, 0x83F4, 0x8413, 0x83EB, 0x83CE, 0x83FD, 0x8403, 0x83D8, -/* 1550 */ 0x840B, 0x83C1, 0x83F7, 0x8407, 0x83E0, 0x83F2, 0x840D, 0x8422, -/* 1558 */ 0x8420, 0x83BD, 0x8438, 0x8506, 0x83FB, 0x846D, 0x842A, 0x843C, -/* 1560 */ 0x855A, 0x8484, 0x8477, 0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, -/* 1568 */ 0x8446, 0x842C, 0x846F, 0x8479, 0x8435, 0x84CA, 0x8462, 0x84B9, -/* 1570 */ 0x84BF, 0x849F, 0x84D9, 0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, -/* 1578 */ 0x84C6, 0x84D6, 0x84A1, 0x8521, 0x84FF, 0x84F4, 0x8517, 0x8518, -/* 1580 */ 0x852C, 0x851F, 0x8515, 0x8514, 0x84FC, 0x8540, 0x8563, 0x8558, -/* 1588 */ 0x8548, 0x8541, 0x8602, 0x854B, 0x8555, 0x8580, 0x85A4, 0x8588, -/* 1590 */ 0x8591, 0x858A, 0x85A8, 0x856D, 0x8594, 0x859B, 0x85EA, 0x8587, -/* 1598 */ 0x859C, 0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, 0x85CF, 0x85B9, -/* 15A0 */ 0x85D0, 0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, 0x860A, 0x8613, -/* 15A8 */ 0x860B, 0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, 0x8630, 0x863F, -/* 15B0 */ 0x864D, 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, 0x8693, 0x86A3, -/* 15B8 */ 0x86A9, 0x86AA, 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4, 0x86C6, -/* 15C0 */ 0x86B0, 0x86C9, 0x8823, 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC, -/* 15C8 */ 0x86DF, 0x86DB, 0x86EF, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, -/* 15D0 */ 0x86FB, 0x8711, 0x8709, 0x870D, 0x86F9, 0x870A, 0x8734, 0x873F, -/* 15D8 */ 0x8737, 0x873B, 0x8725, 0x8729, 0x871A, 0x8760, 0x875F, 0x8778, -/* 15E0 */ 0x874C, 0x874E, 0x8774, 0x8757, 0x8768, 0x876E, 0x8759, 0x8753, -/* 15E8 */ 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782, 0x87AF, 0x87CB, -/* 15F0 */ 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4, 0x87B3, 0x87C7, -/* 15F8 */ 0x87C6, 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F, 0x880D, 0x87FE, -/* 1600 */ 0x87F6, 0x87F7, 0x880E, 0x87D2, 0x8811, 0x8816, 0x8815, 0x8822, -/* 1608 */ 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883B, 0x8844, 0x8842, -/* 1610 */ 0x8852, 0x8859, 0x885E, 0x8862, 0x886B, 0x8881, 0x887E, 0x889E, -/* 1618 */ 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882, 0x8897, 0x8892, 0x88AE, -/* 1620 */ 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF, 0x88B1, 0x88C3, -/* 1628 */ 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9, 0x8902, 0x88FC, -/* 1630 */ 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A, 0x8913, 0x8943, -/* 1638 */ 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944, 0x893B, 0x8936, -/* 1640 */ 0x8938, 0x894C, 0x891D, 0x8960, 0x895E, 0x8966, 0x8964, 0x896D, -/* 1648 */ 0x896A, 0x896F, 0x8974, 0x8977, 0x897E, 0x8983, 0x8988, 0x898A, -/* 1650 */ 0x8993, 0x8998, 0x89A1, 0x89A9, 0x89A6, 0x89AC, 0x89AF, 0x89B2, -/* 1658 */ 0x89BA, 0x89BD, 0x89BF, 0x89C0, 0x89DA, 0x89DC, 0x89DD, 0x89E7, -/* 1660 */ 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10, 0x8A0C, 0x8A1B, 0x8A1D, -/* 1668 */ 0x8A25, 0x8A36, 0x8A41, 0x8A5B, 0x8A52, 0x8A46, 0x8A48, 0x8A7C, -/* 1670 */ 0x8A6D, 0x8A6C, 0x8A62, 0x8A85, 0x8A82, 0x8A84, 0x8AA8, 0x8AA1, -/* 1678 */ 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A, 0x8AA3, 0x8AC4, 0x8ACD, 0x8AC2, -/* 1680 */ 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7, 0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, -/* 1688 */ 0x8AE2, 0x8AF7, 0x8ADE, 0x8ADB, 0x8B0C, 0x8B07, 0x8B1A, 0x8AE1, -/* 1690 */ 0x8B16, 0x8B10, 0x8B17, 0x8B20, 0x8B33, 0x97AB, 0x8B26, 0x8B2B, -/* 1698 */ 0x8B3E, 0x8B28, 0x8B41, 0x8B4C, 0x8B4F, 0x8B4E, 0x8B49, 0x8B56, -/* 16A0 */ 0x8B5B, 0x8B5A, 0x8B6B, 0x8B5F, 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, -/* 16A8 */ 0x8B80, 0x8B8C, 0x8B8E, 0x8B92, 0x8B93, 0x8B96, 0x8B99, 0x8B9A, -/* 16B0 */ 0x8C3A, 0x8C41, 0x8C3F, 0x8C48, 0x8C4C, 0x8C4E, 0x8C50, 0x8C55, -/* 16B8 */ 0x8C62, 0x8C6C, 0x8C78, 0x8C7A, 0x8C82, 0x8C89, 0x8C85, 0x8C8A, -/* 16C0 */ 0x8C8D, 0x8C8E, 0x8C94, 0x8C7C, 0x8C98, 0x621D, 0x8CAD, 0x8CAA, -/* 16C8 */ 0x8CBD, 0x8CB2, 0x8CB3, 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, -/* 16D0 */ 0x8CE3, 0x8CDA, 0x8CFD, 0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, -/* 16D8 */ 0x8D07, 0x8D0F, 0x8D0D, 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, -/* 16E0 */ 0x8D16, 0x8D67, 0x8D6D, 0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, -/* 16E8 */ 0x8DBE, 0x8DBA, 0x8DCF, 0x8DDA, 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, -/* 16F0 */ 0x8DEA, 0x8DEB, 0x8DDF, 0x8DE3, 0x8DFC, 0x8E08, 0x8E09, 0x8DFF, -/* 16F8 */ 0x8E1D, 0x8E1E, 0x8E10, 0x8E1F, 0x8E42, 0x8E35, 0x8E30, 0x8E34, -/* 1700 */ 0x8E4A, 0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, 0x8E64, -/* 1708 */ 0x8E60, 0x8E2A, 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81, -/* 1710 */ 0x8E87, 0x8E85, 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, -/* 1718 */ 0x8E99, 0x8EAA, 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, -/* 1720 */ 0x8EC5, 0x8EC8, 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, -/* 1728 */ 0x8EFE, 0x8F0A, 0x8F05, 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C, -/* 1730 */ 0x8F1F, 0x8F1B, 0x8F0C, 0x8F26, 0x8F33, 0x8F3B, 0x8F39, 0x8F45, -/* 1738 */ 0x8F42, 0x8F3E, 0x8F4C, 0x8F49, 0x8F46, 0x8F4E, 0x8F57, 0x8F5C, -/* 1740 */ 0x8F62, 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, 0x8FAD, 0x8FAF, -/* 1748 */ 0x8FB7, 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, 0x8FF4, -/* 1750 */ 0x9005, 0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, -/* 1758 */ 0x9016, 0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8, 0x904F, -/* 1760 */ 0x9050, 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056, 0x9058, -/* 1768 */ 0x905E, 0x9068, 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082, 0x907D, -/* 1770 */ 0x9081, 0x9080, 0x908A, 0x9089, 0x908F, 0x90A8, 0x90AF, 0x90B1, -/* 1778 */ 0x90B5, 0x90E2, 0x90E4, 0x6248, 0x90DB, 0x9102, 0x9112, 0x9119, -/* 1780 */ 0x9132, 0x9130, 0x914A, 0x9156, 0x9158, 0x9163, 0x9165, 0x9169, -/* 1788 */ 0x9173, 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2, 0x91AB, 0x91AF, -/* 1790 */ 0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C9, 0x91CB, -/* 1798 */ 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC, 0x91F5, 0x91F6, -/* 17A0 */ 0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E, 0x9257, -/* 17A8 */ 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B, 0x9250, -/* 17B0 */ 0x929C, 0x9296, 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9, 0x92B7, -/* 17B8 */ 0x92E9, 0x930F, 0x92FA, 0x9344, 0x932E, 0x9319, 0x9322, 0x931A, -/* 17C0 */ 0x9323, 0x933A, 0x9335, 0x933B, 0x935C, 0x9360, 0x937C, 0x936E, -/* 17C8 */ 0x9356, 0x93B0, 0x93AC, 0x93AD, 0x9394, 0x93B9, 0x93D6, 0x93D7, -/* 17D0 */ 0x93E8, 0x93E5, 0x93D8, 0x93C3, 0x93DD, 0x93D0, 0x93C8, 0x93E4, -/* 17D8 */ 0x941A, 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436, 0x942B, -/* 17E0 */ 0x9435, 0x9421, 0x943A, 0x9441, 0x9452, 0x9444, 0x945B, 0x9460, -/* 17E8 */ 0x9462, 0x945E, 0x946A, 0x9229, 0x9470, 0x9475, 0x9477, 0x947D, -/* 17F0 */ 0x945A, 0x947C, 0x947E, 0x9481, 0x947F, 0x9582, 0x9587, 0x958A, -/* 17F8 */ 0x9594, 0x9596, 0x9598, 0x9599, 0x95A0, 0x95A8, 0x95A7, 0x95AD, -/* 1800 */ 0x95BC, 0x95BB, 0x95B9, 0x95BE, 0x95CA, 0x6FF6, 0x95C3, 0x95CD, -/* 1808 */ 0x95CC, 0x95D5, 0x95D4, 0x95D6, 0x95DC, 0x95E1, 0x95E5, 0x95E2, -/* 1810 */ 0x9621, 0x9628, 0x962E, 0x962F, 0x9642, 0x964C, 0x964F, 0x964B, -/* 1818 */ 0x9677, 0x965C, 0x965E, 0x965D, 0x965F, 0x9666, 0x9672, 0x966C, -/* 1820 */ 0x968D, 0x9698, 0x9695, 0x9697, 0x96AA, 0x96A7, 0x96B1, 0x96B2, -/* 1828 */ 0x96B0, 0x96B4, 0x96B6, 0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9, -/* 1830 */ 0x96CD, 0x894D, 0x96DC, 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, -/* 1838 */ 0x9708, 0x9713, 0x970E, 0x9711, 0x970F, 0x9716, 0x9719, 0x9724, -/* 1840 */ 0x972A, 0x9730, 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, -/* 1848 */ 0x9742, 0x9749, 0x975C, 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, -/* 1850 */ 0x976B, 0x9771, 0x9779, 0x9785, 0x977C, 0x9781, 0x977A, 0x9786, -/* 1858 */ 0x978B, 0x978F, 0x9790, 0x979C, 0x97A8, 0x97A6, 0x97A3, 0x97B3, -/* 1860 */ 0x97B4, 0x97C3, 0x97C6, 0x97C8, 0x97CB, 0x97DC, 0x97ED, 0x9F4F, -/* 1868 */ 0x97F2, 0x7ADF, 0x97F6, 0x97F5, 0x980F, 0x980C, 0x9838, 0x9824, -/* 1870 */ 0x9821, 0x9837, 0x983D, 0x9846, 0x984F, 0x984B, 0x986B, 0x986F, -/* 1878 */ 0x9870, 0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, -/* 1880 */ 0x98C4, 0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, -/* 1888 */ 0x9914, 0x9918, 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, -/* 1890 */ 0x992E, 0x993D, 0x993E, 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, -/* 1898 */ 0x9951, 0x9952, 0x994C, 0x9955, 0x9997, 0x9998, 0x99A5, 0x99AD, -/* 18A0 */ 0x99AE, 0x99BC, 0x99DF, 0x99DB, 0x99DD, 0x99D8, 0x99D1, 0x99ED, -/* 18A8 */ 0x99EE, 0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, 0x9A0F, 0x9A05, -/* 18B0 */ 0x99E2, 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, 0x9A43, -/* 18B8 */ 0x9A3E, 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65, -/* 18C0 */ 0x9A64, 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0, -/* 18C8 */ 0x9ACF, 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, -/* 18D0 */ 0x9AE6, 0x9AEF, 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7, 0x9AFB, -/* 18D8 */ 0x9B06, 0x9B18, 0x9B1A, 0x9B1F, 0x9B22, 0x9B23, 0x9B25, 0x9B27, -/* 18E0 */ 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, 0x9B2F, 0x9B32, 0x9B44, 0x9B43, -/* 18E8 */ 0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, 0x9B74, 0x9B93, 0x9B83, -/* 18F0 */ 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, 0x9BB4, 0x9BC0, -/* 18F8 */ 0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3, 0x9BE2, -/* 1900 */ 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0, 0x9C15, -/* 1908 */ 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12, 0x9C0A, -/* 1910 */ 0x9C04, 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30, 0x9C47, -/* 1918 */ 0x9C32, 0x9C46, 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76, 0x9C78, -/* 1920 */ 0x9CE7, 0x9CEC, 0x9CF0, 0x9D09, 0x9D08, 0x9CEB, 0x9D03, 0x9D06, -/* 1928 */ 0x9D2A, 0x9D26, 0x9DAF, 0x9D23, 0x9D1F, 0x9D44, 0x9D15, 0x9D12, -/* 1930 */ 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48, 0x9D5D, 0x9D5E, 0x9D64, -/* 1938 */ 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89, 0x9D87, 0x9DAB, 0x9D6F, -/* 1940 */ 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2, 0x9DC4, 0x9DC1, 0x9DBB, -/* 1948 */ 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2, 0x9DD9, 0x9DD3, 0x9DF8, -/* 1950 */ 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A, 0x9E1B, 0x9E1E, 0x9E75, -/* 1958 */ 0x9E79, 0x9E7D, 0x9E81, 0x9E88, 0x9E8B, 0x9E8C, 0x9E92, 0x9E95, -/* 1960 */ 0x9E91, 0x9E9D, 0x9EA5, 0x9EA9, 0x9EB8, 0x9EAA, 0x9EAD, 0x9761, -/* 1968 */ 0x9ECC, 0x9ECE, 0x9ECF, 0x9ED0, 0x9ED4, 0x9EDC, 0x9EDE, 0x9EDD, -/* 1970 */ 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF, 0x9EF4, 0x9EF6, 0x9EF7, 0x9EF9, -/* 1978 */ 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08, 0x76B7, 0x9F15, 0x9F21, -/* 1980 */ 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54, 0x9F63, 0x9F5F, 0x9F60, -/* 1988 */ 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A, 0x9F77, 0x9F72, 0x9F76, -/* 1990 */ 0x9F95, 0x9F9C, 0x9FA0, 0x582F, 0x69C7, 0x9059, 0x7464, 0x51DC, -/* 1998 */ 0x7199, -/* End of table Total Length = 0x1AC2 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/jis0212.ut b/mozilla/lib/libi18n/unicode/utotbl/jis0212.ut deleted file mode 100644 index 7e79e0daa53..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/jis0212.ut +++ /dev/null @@ -1,2311 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 2742 - srcEnd = 274C - destBegin = 0402 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 2772 - srcEnd = 277C - destBegin = 0452 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 362D - srcEnd = 3632 - destBegin = 560D -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 4C2C - srcEnd = 4C35 - destBegin = 7428 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 4D3D - srcEnd = 4D42 - destBegin = 7579 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 4E3F - srcEnd = 4E45 - destBegin = 76A2 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 5279 - srcEnd = 527E - destBegin = 7C59 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 5949 - srcEnd = 594F - destBegin = 855C -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 5B38 - srcEnd = 5B3E - destBegin = 8783 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 632E - srcEnd = 6333 - destBegin = 91EC -End of Item 0009 - -Begin of Item 000A - Format 1 - srcBegin = 222F - srcEnd = 2244 - mappingOffset = 0000 - Mapping = - 02D8 02C7 00B8 02D9 02DD 00AF 02DB 02DA - 007E 0384 0385 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD 00A1 00A6 00BF -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 226B - srcEnd = 2271 - mappingOffset = 0016 - Mapping = - 00BA 00AA 00A9 00AE 2122 00A4 2116 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 2661 - srcEnd = 267C - mappingOffset = 001D - Mapping = - 0386 0388 0389 038A 03AA FFFD 038C FFFD - 038E 03AB FFFD 038F FFFD FFFD FFFD FFFD - 03AC 03AD 03AE 03AF 03CA 0390 03CC 03C2 - 03CD 03CB 03B0 03CE -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 274D - srcEnd = 274E - mappingOffset = 0039 - Mapping = - 040E 040F -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = 277D - srcEnd = 277E - mappingOffset = 003B - Mapping = - 045E 045F -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = 2921 - srcEnd = 2930 - mappingOffset = 003D - Mapping = - 00C6 0110 FFFD 0126 FFFD 0132 FFFD 0141 - 013F FFFD 014A 00D8 0152 FFFD 0166 00DE -End of Item 000F - -Begin of Item 0010 - Format 1 - srcBegin = 2941 - srcEnd = 2950 - mappingOffset = 004D - Mapping = - 00E6 0111 00F0 0127 0131 0133 0138 0142 - 0140 0149 014B 00F8 0153 00DF 0167 00FE -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = 2A21 - srcEnd = 2A77 - mappingOffset = 005D - Mapping = - 00C1 00C0 00C4 00C2 0102 01CD 0100 0104 - 00C5 00C3 0106 0108 010C 00C7 010A 010E - 00C9 00C8 00CB 00CA 011A 0116 0112 0118 - FFFD 011C 011E 0122 0120 0124 00CD 00CC - 00CF 00CE 01CF 0130 012A 012E 0128 0134 - 0136 0139 013D 013B 0143 0147 0145 00D1 - 00D3 00D2 00D6 00D4 01D1 0150 014C 00D5 - 0154 0158 0156 015A 015C 0160 015E 0164 - 0162 00DA 00D9 00DC 00DB 016C 01D3 0170 - 016A 0172 016E 0168 01D7 01DB 01D9 01D5 - 0174 00DD 0178 0176 0179 017D 017B -End of Item 0011 - -Begin of Item 0012 - Format 1 - srcBegin = 2B21 - srcEnd = 2B77 - mappingOffset = 00B4 - Mapping = - 00E1 00E0 00E4 00E2 0103 01CE 0101 0105 - 00E5 00E3 0107 0109 010D 00E7 010B 010F - 00E9 00E8 00EB 00EA 011B 0117 0113 0119 - 01F5 011D 011F FFFD 0121 0125 00ED 00EC - 00EF 00EE 01D0 FFFD 012B 012F 0129 0135 - 0137 013A 013E 013C 0144 0148 0146 00F1 - 00F3 00F2 00F6 00F4 01D2 0151 014D 00F5 - 0155 0159 0157 015B 015D 0161 015F 0165 - 0163 00FA 00F9 00FC 00FB 016D 01D4 0171 - 016B 0173 016F 0169 01D8 01DC 01DA 01D6 - 0175 00FD 00FF 0177 017A 017E 017C -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = 3021 - srcEnd = 307E - mappingOffset = 010B - Mapping = - 4E02 4E04 4E05 4E0C 4E12 4E1F 4E23 4E24 - 4E28 4E2B 4E2E 4E2F 4E30 4E35 4E40 4E41 - 4E44 4E47 4E51 4E5A 4E5C 4E63 4E68 4E69 - 4E74 4E75 4E79 4E7F 4E8D 4E96 4E97 4E9D - 4EAF 4EB9 4EC3 4ED0 4EDA 4EDB 4EE0 4EE1 - 4EE2 4EE8 4EEF 4EF1 4EF3 4EF5 4EFD 4EFE - 4EFF 4F00 4F02 4F03 4F08 4F0B 4F0C 4F12 - 4F15 4F16 4F17 4F19 4F2E 4F31 4F60 4F33 - 4F35 4F37 4F39 4F3B 4F3E 4F40 4F42 4F48 - 4F49 4F4B 4F4C 4F52 4F54 4F56 4F58 4F5F - 4F63 4F6A 4F6C 4F6E 4F71 4F77 4F78 4F79 - 4F7A 4F7D 4F7E 4F81 4F82 4F84 -End of Item 0013 - -Begin of Item 0014 - Format 1 - srcBegin = 3121 - srcEnd = 317E - mappingOffset = 0169 - Mapping = - 4F85 4F89 4F8A 4F8C 4F8E 4F90 4F92 4F93 - 4F94 4F97 4F99 4F9A 4F9E 4F9F 4FB2 4FB7 - 4FB9 4FBB 4FBC 4FBD 4FBE 4FC0 4FC1 4FC5 - 4FC6 4FC8 4FC9 4FCB 4FCC 4FCD 4FCF 4FD2 - 4FDC 4FE0 4FE2 4FF0 4FF2 4FFC 4FFD 4FFF - 5000 5001 5004 5007 500A 500C 500E 5010 - 5013 5017 5018 501B 501C 501D 501E 5022 - 5027 502E 5030 5032 5033 5035 5040 5041 - 5042 5045 5046 504A 504C 504E 5051 5052 - 5053 5057 5059 505F 5060 5062 5063 5066 - 5067 506A 506D 5070 5071 503B 5081 5083 - 5084 5086 508A 508E 508F 5090 -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 3221 - srcEnd = 327E - mappingOffset = 01C7 - Mapping = - 5092 5093 5094 5096 509B 509C 509E 509F - 50A0 50A1 50A2 50AA 50AF 50B0 50B9 50BA - 50BD 50C0 50C3 50C4 50C7 50CC 50CE 50D0 - 50D3 50D4 50D8 50DC 50DD 50DF 50E2 50E4 - 50E6 50E8 50E9 50EF 50F1 50F6 50FA 50FE - 5103 5106 5107 5108 510B 510C 510D 510E - 50F2 5110 5117 5119 511B 511C 511D 511E - 5123 5127 5128 512C 512D 512F 5131 5133 - 5134 5135 5138 5139 5142 514A 514F 5153 - 5155 5157 5158 515F 5164 5166 517E 5183 - 5184 518B 518E 5198 519D 51A1 51A3 51AD - 51B8 51BA 51BC 51BE 51BF 51C2 -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = 3321 - srcEnd = 337E - mappingOffset = 0225 - Mapping = - 51C8 51CF 51D1 51D2 51D3 51D5 51D8 51DE - 51E2 51E5 51EE 51F2 51F3 51F4 51F7 5201 - 5202 5205 5212 5213 5215 5216 5218 5222 - 5228 5231 5232 5235 523C 5245 5249 5255 - 5257 5258 525A 525C 525F 5260 5261 5266 - 526E 5277 5278 5279 5280 5282 5285 528A - 528C 5293 5295 5296 5297 5298 529A 529C - 52A4 52A5 52A6 52A7 52AF 52B0 52B6 52B7 - 52B8 52BA 52BB 52BD 52C0 52C4 52C6 52C8 - 52CC 52CF 52D1 52D4 52D6 52DB 52DC 52E1 - 52E5 52E8 52E9 52EA 52EC 52F0 52F1 52F4 - 52F6 52F7 5300 5303 530A 530B -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 3421 - srcEnd = 347E - mappingOffset = 0283 - Mapping = - 530C 5311 5313 5318 531B 531C 531E 531F - 5325 5327 5328 5329 532B 532C 532D 5330 - 5332 5335 533C 533D 533E 5342 534C 534B - 5359 535B 5361 5363 5365 536C 536D 5372 - 5379 537E 5383 5387 5388 538E 5393 5394 - 5399 539D 53A1 53A4 53AA 53AB 53AF 53B2 - 53B4 53B5 53B7 53B8 53BA 53BD 53C0 53C5 - 53CF 53D2 53D3 53D5 53DA 53DD 53DE 53E0 - 53E6 53E7 53F5 5402 5413 541A 5421 5427 - 5428 542A 542F 5431 5434 5435 5443 5444 - 5447 544D 544F 545E 5462 5464 5466 5467 - 5469 546B 546D 546E 5474 547F -End of Item 0017 - -Begin of Item 0018 - Format 1 - srcBegin = 3521 - srcEnd = 357E - mappingOffset = 02E1 - Mapping = - 5481 5483 5485 5488 5489 548D 5491 5495 - 5496 549C 549F 54A1 54A6 54A7 54A9 54AA - 54AD 54AE 54B1 54B7 54B9 54BA 54BB 54BF - 54C6 54CA 54CD 54CE 54E0 54EA 54EC 54EF - 54F6 54FC 54FE 54FF 5500 5501 5505 5508 - 5509 550C 550D 550E 5515 552A 552B 5532 - 5535 5536 553B 553C 553D 5541 5547 5549 - 554A 554D 5550 5551 5558 555A 555B 555E - 5560 5561 5564 5566 557F 5581 5582 5586 - 5588 558E 558F 5591 5592 5593 5594 5597 - 55A3 55A4 55AD 55B2 55BF 55C1 55C3 55C6 - 55C9 55CB 55CC 55CE 55D1 55D2 -End of Item 0018 - -Begin of Item 0019 - Format 1 - srcBegin = 3621 - srcEnd = 367E - mappingOffset = 033F - Mapping = - 55D3 55D7 55D8 55DB 55DE 55E2 55E9 55F6 - 55FF 5605 5608 560A FFFD FFFD FFFD FFFD - FFFD FFFD 5619 562C 5630 5633 5635 5637 - 5639 563B 563C 563D 563F 5640 5641 5643 - 5644 5646 5649 564B 564D 564F 5654 565E - 5660 5661 5662 5663 5666 5669 566D 566F - 5671 5672 5675 5684 5685 5688 568B 568C - 5695 5699 569A 569D 569E 569F 56A6 56A7 - 56A8 56A9 56AB 56AC 56AD 56B1 56B3 56B7 - 56BE 56C5 56C9 56CA 56CB 56CF 56D0 56CC - 56CD 56D9 56DC 56DD 56DF 56E1 56E4 56E5 - 56E6 56E7 56E8 56F1 56EB 56ED -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 3721 - srcEnd = 377E - mappingOffset = 039D - Mapping = - 56F6 56F7 5701 5702 5707 570A 570C 5711 - 5715 571A 571B 571D 5720 5722 5723 5724 - 5725 5729 572A 572C 572E 572F 5733 5734 - 573D 573E 573F 5745 5746 574C 574D 5752 - 5762 5765 5767 5768 576B 576D 576E 576F - 5770 5771 5773 5774 5775 5777 5779 577A - 577B 577C 577E 5781 5783 578C 5794 5797 - 5799 579A 579C 579D 579E 579F 57A1 5795 - 57A7 57A8 57A9 57AC 57B8 57BD 57C7 57C8 - 57CC 57CF 57D5 57DD 57DE 57E4 57E6 57E7 - 57E9 57ED 57F0 57F5 57F6 57F8 57FD 57FE - 57FF 5803 5804 5808 5809 57E1 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 3821 - srcEnd = 387E - mappingOffset = 03FB - Mapping = - 580C 580D 581B 581E 581F 5820 5826 5827 - 582D 5832 5839 583F 5849 584C 584D 584F - 5850 5855 585F 5861 5864 5867 5868 5878 - 587C 587F 5880 5881 5887 5888 5889 588A - 588C 588D 588F 5890 5894 5896 589D 58A0 - 58A1 58A2 58A6 58A9 58B1 58B2 58C4 58BC - 58C2 58C8 58CD 58CE 58D0 58D2 58D4 58D6 - 58DA 58DD 58E1 58E2 58E9 58F3 5905 5906 - 590B 590C 5912 5913 5914 8641 591D 5921 - 5923 5924 5928 592F 5930 5933 5935 5936 - 593F 5943 5946 5952 5953 5959 595B 595D - 595E 595F 5961 5963 596B 596D -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 3921 - srcEnd = 397E - mappingOffset = 0459 - Mapping = - 596F 5972 5975 5976 5979 597B 597C 598B - 598C 598E 5992 5995 5997 599F 59A4 59A7 - 59AD 59AE 59AF 59B0 59B3 59B7 59BA 59BC - 59C1 59C3 59C4 59C8 59CA 59CD 59D2 59DD - 59DE 59DF 59E3 59E4 59E7 59EE 59EF 59F1 - 59F2 59F4 59F7 5A00 5A04 5A0C 5A0D 5A0E - 5A12 5A13 5A1E 5A23 5A24 5A27 5A28 5A2A - 5A2D 5A30 5A44 5A45 5A47 5A48 5A4C 5A50 - 5A55 5A5E 5A63 5A65 5A67 5A6D 5A77 5A7A - 5A7B 5A7E 5A8B 5A90 5A93 5A96 5A99 5A9C - 5A9E 5A9F 5AA0 5AA2 5AA7 5AAC 5AB1 5AB2 - 5AB3 5AB5 5AB8 5ABA 5ABB 5ABF -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 3A21 - srcEnd = 3A7E - mappingOffset = 04B7 - Mapping = - 5AC4 5AC6 5AC8 5ACF 5ADA 5ADC 5AE0 5AE5 - 5AEA 5AEE 5AF5 5AF6 5AFD 5B00 5B01 5B08 - 5B17 5B34 5B19 5B1B 5B1D 5B21 5B25 5B2D - 5B38 5B41 5B4B 5B4C 5B52 5B56 5B5E 5B68 - 5B6E 5B6F 5B7C 5B7D 5B7E 5B7F 5B81 5B84 - 5B86 5B8A 5B8E 5B90 5B91 5B93 5B94 5B96 - 5BA8 5BA9 5BAC 5BAD 5BAF 5BB1 5BB2 5BB7 - 5BBA 5BBC 5BC0 5BC1 5BCD 5BCF 5BD6 5BD7 - 5BD8 5BD9 5BDA 5BE0 5BEF 5BF1 5BF4 5BFD - 5C0C 5C17 5C1E 5C1F 5C23 5C26 5C29 5C2B - 5C2C 5C2E 5C30 5C32 5C35 5C36 5C59 5C5A - 5C5C 5C62 5C63 5C67 5C68 5C69 -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 3B21 - srcEnd = 3B7E - mappingOffset = 0515 - Mapping = - 5C6D 5C70 5C74 5C75 5C7A 5C7B 5C7C 5C7D - 5C87 5C88 5C8A 5C8F 5C92 5C9D 5C9F 5CA0 - 5CA2 5CA3 5CA6 5CAA 5CB2 5CB4 5CB5 5CBA - 5CC9 5CCB 5CD2 5CDD 5CD7 5CEE 5CF1 5CF2 - 5CF4 5D01 5D06 5D0D 5D12 5D2B 5D23 5D24 - 5D26 5D27 5D31 5D34 5D39 5D3D 5D3F 5D42 - 5D43 5D46 5D48 5D55 5D51 5D59 5D4A 5D5F - 5D60 5D61 5D62 5D64 5D6A 5D6D 5D70 5D79 - 5D7A 5D7E 5D7F 5D81 5D83 5D88 5D8A 5D92 - 5D93 5D94 5D95 5D99 5D9B 5D9F 5DA0 5DA7 - 5DAB 5DB0 5DB4 5DB8 5DB9 5DC3 5DC7 5DCB - 5DD0 5DCE 5DD8 5DD9 5DE0 5DE4 -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 3C21 - srcEnd = 3C7E - mappingOffset = 0573 - Mapping = - 5DE9 5DF8 5DF9 5E00 5E07 5E0D 5E12 5E14 - 5E15 5E18 5E1F 5E20 5E2E 5E28 5E32 5E35 - 5E3E 5E4B 5E50 5E49 5E51 5E56 5E58 5E5B - 5E5C 5E5E 5E68 5E6A 5E6B 5E6C 5E6D 5E6E - 5E70 5E80 5E8B 5E8E 5EA2 5EA4 5EA5 5EA8 - 5EAA 5EAC 5EB1 5EB3 5EBD 5EBE 5EBF 5EC6 - 5ECC 5ECB 5ECE 5ED1 5ED2 5ED4 5ED5 5EDC - 5EDE 5EE5 5EEB 5F02 5F06 5F07 5F08 5F0E - 5F19 5F1C 5F1D 5F21 5F22 5F23 5F24 5F28 - 5F2B 5F2C 5F2E 5F30 5F34 5F36 5F3B 5F3D - 5F3F 5F40 5F44 5F45 5F47 5F4D 5F50 5F54 - 5F58 5F5B 5F60 5F63 5F64 5F67 -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 3D21 - srcEnd = 3D7E - mappingOffset = 05D1 - Mapping = - 5F6F 5F72 5F74 5F75 5F78 5F7A 5F7D 5F7E - 5F89 5F8D 5F8F 5F96 5F9C 5F9D 5FA2 5FA7 - 5FAB 5FA4 5FAC 5FAF 5FB0 5FB1 5FB8 5FC4 - 5FC7 5FC8 5FC9 5FCB 5FD0 5FD1 5FD2 5FD3 - 5FD4 5FDE 5FE1 5FE2 5FE8 5FE9 5FEA 5FEC - 5FED 5FEE 5FEF 5FF2 5FF3 5FF6 5FFA 5FFC - 6007 600A 600D 6013 6014 6017 6018 601A - 601F 6024 602D 6033 6035 6040 6047 6048 - 6049 604C 6051 6054 6056 6057 605D 6061 - 6067 6071 607E 607F 6082 6086 6088 608A - 608E 6091 6093 6095 6098 609D 609E 60A2 - 60A4 60A5 60A8 60B0 60B1 60B7 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 3E21 - srcEnd = 3E7E - mappingOffset = 062F - Mapping = - 60BB 60BE 60C2 60C4 60C8 60C9 60CA 60CB - 60CE 60CF 60D4 60D5 60D9 60DB 60DD 60DE - 60E2 60E5 60F2 60F5 60F8 60FC 60FD 6102 - 6107 610A 610C 6110 6111 6112 6113 6114 - 6116 6117 6119 611C 611E 6122 612A 612B - 6130 6131 6135 6136 6137 6139 6141 6145 - 6146 6149 615E 6160 616C 6172 6178 617B - 617C 617F 6180 6181 6183 6184 618B 618D - 6192 6193 6197 6198 619C 619D 619F 61A0 - 61A5 61A8 61AA 61AD 61B8 61B9 61BC 61C0 - 61C1 61C2 61CE 61CF 61D5 61DC 61DD 61DE - 61DF 61E1 61E2 61E7 61E9 61E5 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 3F21 - srcEnd = 3F7E - mappingOffset = 068D - Mapping = - 61EC 61ED 61EF 6201 6203 6204 6207 6213 - 6215 621C 6220 6222 6223 6227 6229 622B - 6239 623D 6242 6243 6244 6246 624C 6250 - 6251 6252 6254 6256 625A 625C 6264 626D - 626F 6273 627A 627D 628D 628E 628F 6290 - 62A6 62A8 62B3 62B6 62B7 62BA 62BE 62BF - 62C4 62CE 62D5 62D6 62DA 62EA 62F2 62F4 - 62FC 62FD 6303 6304 630A 630B 630D 6310 - 6313 6316 6318 6329 632A 632D 6335 6336 - 6339 633C 6341 6342 6343 6344 6346 634A - 634B 634E 6352 6353 6354 6358 635B 6365 - 6366 636C 636D 6371 6374 6375 -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 4021 - srcEnd = 407E - mappingOffset = 06EB - Mapping = - 6378 637C 637D 637F 6382 6384 6387 638A - 6390 6394 6395 6399 639A 639E 63A4 63A6 - 63AD 63AE 63AF 63BD 63C1 63C5 63C8 63CE - 63D1 63D3 63D4 63D5 63DC 63E0 63E5 63EA - 63EC 63F2 63F3 63F5 63F8 63F9 6409 640A - 6410 6412 6414 6418 641E 6420 6422 6424 - 6425 6429 642A 642F 6430 6435 643D 643F - 644B 644F 6451 6452 6453 6454 645A 645B - 645C 645D 645F 6460 6461 6463 646D 6473 - 6474 647B 647D 6485 6487 648F 6490 6491 - 6498 6499 649B 649D 649F 64A1 64A3 64A6 - 64A8 64AC 64B3 64BD 64BE 64BF -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 4121 - srcEnd = 417E - mappingOffset = 0749 - Mapping = - 64C4 64C9 64CA 64CB 64CC 64CE 64D0 64D1 - 64D5 64D7 64E4 64E5 64E9 64EA 64ED 64F0 - 64F5 64F7 64FB 64FF 6501 6504 6508 6509 - 650A 650F 6513 6514 6516 6519 651B 651E - 651F 6522 6526 6529 652E 6531 653A 653C - 653D 6543 6547 6549 6550 6552 6554 655F - 6560 6567 656B 657A 657D 6581 6585 658A - 6592 6595 6598 659D 65A0 65A3 65A6 65AE - 65B2 65B3 65B4 65BF 65C2 65C8 65C9 65CE - 65D0 65D4 65D6 65D8 65DF 65F0 65F2 65F4 - 65F5 65F9 65FE 65FF 6600 6604 6608 6609 - 660D 6611 6612 6615 6616 661D -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 4221 - srcEnd = 427E - mappingOffset = 07A7 - Mapping = - 661E 6621 6622 6623 6624 6626 6629 662A - 662B 662C 662E 6630 6631 6633 6639 6637 - 6640 6645 6646 664A 664C 6651 664E 6657 - 6658 6659 665B 665C 6660 6661 66FB 666A - 666B 666C 667E 6673 6675 667F 6677 6678 - 6679 667B 6680 667C 668B 668C 668D 6690 - 6692 6699 669A 669B 669C 669F 66A0 66A4 - 66AD 66B1 66B2 66B5 66BB 66BF 66C0 66C2 - 66C3 66C8 66CC 66CE 66CF 66D4 66DB 66DF - 66E8 66EB 66EC 66EE 66FA 6705 6707 670E - 6713 6719 671C 6720 6722 6733 673E 6745 - 6747 6748 674C 6754 6755 675D -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 4321 - srcEnd = 437E - mappingOffset = 0805 - Mapping = - 6766 676C 676E 6774 6776 677B 6781 6784 - 678E 678F 6791 6793 6796 6798 6799 679B - 67B0 67B1 67B2 67B5 67BB 67BC 67BD 67F9 - 67C0 67C2 67C3 67C5 67C8 67C9 67D2 67D7 - 67D9 67DC 67E1 67E6 67F0 67F2 67F6 67F7 - 6852 6814 6819 681D 681F 6828 6827 682C - 682D 682F 6830 6831 6833 683B 683F 6844 - 6845 684A 684C 6855 6857 6858 685B 686B - 686E 686F 6870 6871 6872 6875 6879 687A - 687B 687C 6882 6884 6886 6888 6896 6898 - 689A 689C 68A1 68A3 68A5 68A9 68AA 68AE - 68B2 68BB 68C5 68C8 68CC 68CF -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 4421 - srcEnd = 447E - mappingOffset = 0863 - Mapping = - 68D0 68D1 68D3 68D6 68D9 68DC 68DD 68E5 - 68E8 68EA 68EB 68EC 68ED 68F0 68F1 68F5 - 68F6 68FB 68FC 68FD 6906 6909 690A 6910 - 6911 6913 6916 6917 6931 6933 6935 6938 - 693B 6942 6945 6949 694E 6957 695B 6963 - 6964 6965 6966 6968 6969 696C 6970 6971 - 6972 697A 697B 697F 6980 698D 6992 6996 - 6998 69A1 69A5 69A6 69A8 69AB 69AD 69AF - 69B7 69B8 69BA 69BC 69C5 69C8 69D1 69D6 - 69D7 69E2 69E5 69EE 69EF 69F1 69F3 69F5 - 69FE 6A00 6A01 6A03 6A0F 6A11 6A15 6A1A - 6A1D 6A20 6A24 6A28 6A30 6A32 -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 4521 - srcEnd = 457E - mappingOffset = 08C1 - Mapping = - 6A34 6A37 6A3B 6A3E 6A3F 6A45 6A46 6A49 - 6A4A 6A4E 6A50 6A51 6A52 6A55 6A56 6A5B - 6A64 6A67 6A6A 6A71 6A73 6A7E 6A81 6A83 - 6A86 6A87 6A89 6A8B 6A91 6A9B 6A9D 6A9E - 6A9F 6AA5 6AAB 6AAF 6AB0 6AB1 6AB4 6ABD - 6ABE 6ABF 6AC6 6AC9 6AC8 6ACC 6AD0 6AD4 - 6AD5 6AD6 6ADC 6ADD 6AE4 6AE7 6AEC 6AF0 - 6AF1 6AF2 6AFC 6AFD 6B02 6B03 6B06 6B07 - 6B09 6B0F 6B10 6B11 6B17 6B1B 6B1E 6B24 - 6B28 6B2B 6B2C 6B2F 6B35 6B36 6B3B 6B3F - 6B46 6B4A 6B4D 6B52 6B56 6B58 6B5D 6B60 - 6B67 6B6B 6B6E 6B70 6B75 6B7D -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 4621 - srcEnd = 467E - mappingOffset = 091F - Mapping = - 6B7E 6B82 6B85 6B97 6B9B 6B9F 6BA0 6BA2 - 6BA3 6BA8 6BA9 6BAC 6BAD 6BAE 6BB0 6BB8 - 6BB9 6BBD 6BBE 6BC3 6BC4 6BC9 6BCC 6BD6 - 6BDA 6BE1 6BE3 6BE6 6BE7 6BEE 6BF1 6BF7 - 6BF9 6BFF 6C02 6C04 6C05 6C09 6C0D 6C0E - 6C10 6C12 6C19 6C1F 6C26 6C27 6C28 6C2C - 6C2E 6C33 6C35 6C36 6C3A 6C3B 6C3F 6C4A - 6C4B 6C4D 6C4F 6C52 6C54 6C59 6C5B 6C5C - 6C6B 6C6D 6C6F 6C74 6C76 6C78 6C79 6C7B - 6C85 6C86 6C87 6C89 6C94 6C95 6C97 6C98 - 6C9C 6C9F 6CB0 6CB2 6CB4 6CC2 6CC6 6CCD - 6CCF 6CD0 6CD1 6CD2 6CD4 6CD6 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 4721 - srcEnd = 477E - mappingOffset = 097D - Mapping = - 6CDA 6CDC 6CE0 6CE7 6CE9 6CEB 6CEC 6CEE - 6CF2 6CF4 6D04 6D07 6D0A 6D0E 6D0F 6D11 - 6D13 6D1A 6D26 6D27 6D28 6C67 6D2E 6D2F - 6D31 6D39 6D3C 6D3F 6D57 6D5E 6D5F 6D61 - 6D65 6D67 6D6F 6D70 6D7C 6D82 6D87 6D91 - 6D92 6D94 6D96 6D97 6D98 6DAA 6DAC 6DB4 - 6DB7 6DB9 6DBD 6DBF 6DC4 6DC8 6DCA 6DCE - 6DCF 6DD6 6DDB 6DDD 6DDF 6DE0 6DE2 6DE5 - 6DE9 6DEF 6DF0 6DF4 6DF6 6DFC 6E00 6E04 - 6E1E 6E22 6E27 6E32 6E36 6E39 6E3B 6E3C - 6E44 6E45 6E48 6E49 6E4B 6E4F 6E51 6E52 - 6E53 6E54 6E57 6E5C 6E5D 6E5E -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 4821 - srcEnd = 487E - mappingOffset = 09DB - Mapping = - 6E62 6E63 6E68 6E73 6E7B 6E7D 6E8D 6E93 - 6E99 6EA0 6EA7 6EAD 6EAE 6EB1 6EB3 6EBB - 6EBF 6EC0 6EC1 6EC3 6EC7 6EC8 6ECA 6ECD - 6ECE 6ECF 6EEB 6EED 6EEE 6EF9 6EFB 6EFD - 6F04 6F08 6F0A 6F0C 6F0D 6F16 6F18 6F1A - 6F1B 6F26 6F29 6F2A 6F2F 6F30 6F33 6F36 - 6F3B 6F3C 6F2D 6F4F 6F51 6F52 6F53 6F57 - 6F59 6F5A 6F5D 6F5E 6F61 6F62 6F68 6F6C - 6F7D 6F7E 6F83 6F87 6F88 6F8B 6F8C 6F8D - 6F90 6F92 6F93 6F94 6F96 6F9A 6F9F 6FA0 - 6FA5 6FA6 6FA7 6FA8 6FAE 6FAF 6FB0 6FB5 - 6FB6 6FBC 6FC5 6FC7 6FC8 6FCA -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 4921 - srcEnd = 497E - mappingOffset = 0A39 - Mapping = - 6FDA 6FDE 6FE8 6FE9 6FF0 6FF5 6FF9 6FFC - 6FFD 7000 7005 7006 7007 700D 7017 7020 - 7023 702F 7034 7037 7039 703C 7043 7044 - 7048 7049 704A 704B 7054 7055 705D 705E - 704E 7064 7065 706C 706E 7075 7076 707E - 7081 7085 7086 7094 7095 7096 7097 7098 - 709B 70A4 70AB 70B0 70B1 70B4 70B7 70CA - 70D1 70D3 70D4 70D5 70D6 70D8 70DC 70E4 - 70FA 7103 7104 7105 7106 7107 710B 710C - 710F 711E 7120 712B 712D 712F 7130 7131 - 7138 7141 7145 7146 7147 714A 714B 7150 - 7152 7157 715A 715C 715E 7160 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 4A21 - srcEnd = 4A7E - mappingOffset = 0A97 - Mapping = - 7168 7179 7180 7185 7187 718C 7192 719A - 719B 71A0 71A2 71AF 71B0 71B2 71B3 71BA - 71BF 71C0 71C1 71C4 71CB 71CC 71D3 71D6 - 71D9 71DA 71DC 71F8 71FE 7200 7207 7208 - 7209 7213 7217 721A 721D 721F 7224 722B - 722F 7234 7238 7239 7241 7242 7243 7245 - 724E 724F 7250 7253 7255 7256 725A 725C - 725E 7260 7263 7268 726B 726E 726F 7271 - 7277 7278 727B 727C 727F 7284 7289 728D - 728E 7293 729B 72A8 72AD 72AE 72B1 72B4 - 72BE 72C1 72C7 72C9 72CC 72D5 72D6 72D8 - 72DF 72E5 72F3 72F4 72FA 72FB -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 4B21 - srcEnd = 4B7E - mappingOffset = 0AF5 - Mapping = - 72FE 7302 7304 7305 7307 730B 730D 7312 - 7313 7318 7319 731E 7322 7324 7327 7328 - 732C 7331 7332 7335 733A 733B 733D 7343 - 734D 7350 7352 7356 7358 735D 735E 735F - 7360 7366 7367 7369 736B 736C 736E 736F - 7371 7377 7379 737C 7380 7381 7383 7385 - 7386 738E 7390 7393 7395 7397 7398 739C - 739E 739F 73A0 73A2 73A5 73A6 73AA 73AB - 73AD 73B5 73B7 73B9 73BC 73BD 73BF 73C5 - 73C6 73C9 73CB 73CC 73CF 73D2 73D3 73D6 - 73D9 73DD 73E1 73E3 73E6 73E7 73E9 73F4 - 73F5 73F7 73F9 73FA 73FB 73FD -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 4C21 - srcEnd = 4C7E - mappingOffset = 0B53 - Mapping = - 73FF 7400 7401 7404 7407 740A 7411 741A - 741B 7424 7426 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 7439 7440 7443 - 7444 7446 7447 744B 744D 7451 7452 7457 - 745D 7462 7466 7467 7468 746B 746D 746E - 7471 7472 7480 7481 7485 7486 7487 7489 - 748F 7490 7491 7492 7498 7499 749A 749C - 749F 74A0 74A1 74A3 74A6 74A8 74A9 74AA - 74AB 74AE 74AF 74B1 74B2 74B5 74B9 74BB - 74BF 74C8 74C9 74CC 74D0 74D3 74D8 74DA - 74DB 74DE 74DF 74E4 74E8 74EA 74EB 74EF - 74F4 74FA 74FB 74FC 74FF 7506 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 4D21 - srcEnd = 4D7E - mappingOffset = 0BB1 - Mapping = - 7512 7516 7517 7520 7521 7524 7527 7529 - 752A 752F 7536 7539 753D 753E 753F 7540 - 7543 7547 7548 754E 7550 7552 7557 755E - 755F 7561 756F 7571 FFFD FFFD FFFD FFFD - FFFD FFFD 7581 7585 7590 7592 7593 7595 - 7599 759C 75A2 75A4 75B4 75BA 75BF 75C0 - 75C1 75C4 75C6 75CC 75CE 75CF 75D7 75DC - 75DF 75E0 75E1 75E4 75E7 75EC 75EE 75EF - 75F1 75F9 7600 7602 7603 7604 7607 7608 - 760A 760C 760F 7612 7613 7615 7616 7619 - 761B 761C 761D 761E 7623 7625 7626 7629 - 762D 7632 7633 7635 7638 7639 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 4E21 - srcEnd = 4E7E - mappingOffset = 0C0F - Mapping = - 763A 763C 764A 7640 7641 7643 7644 7645 - 7649 764B 7655 7659 765F 7664 7665 766D - 766E 766F 7671 7674 7681 7685 768C 768D - 7695 769B 769C 769D 769F 76A0 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 76AA 76AD 76BD - 76C1 76C5 76C9 76CB 76CC 76CE 76D4 76D9 - 76E0 76E6 76E8 76EC 76F0 76F1 76F6 76F9 - 76FC 7700 7706 770A 770E 7712 7714 7715 - 7717 7719 771A 771C 7722 7728 772D 772E - 772F 7734 7735 7736 7739 773D 773E 7742 - 7745 7746 774A 774D 774E 774F 7752 7756 - 7757 775C 775E 775F 7760 7762 -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 4F21 - srcEnd = 4F7E - mappingOffset = 0C6D - Mapping = - 7764 7767 776A 776C 7770 7772 7773 7774 - 777A 777D 7780 7784 778C 778D 7794 7795 - 7796 779A 779F 77A2 77A7 77AA 77AE 77AF - 77B1 77B5 77BE 77C3 77C9 77D1 77D2 77D5 - 77D9 77DE 77DF 77E0 77E4 77E6 77EA 77EC - 77F0 77F1 77F4 77F8 77FB 7805 7806 7809 - 780D 780E 7811 781D 7821 7822 7823 782D - 782E 7830 7835 7837 7843 7844 7847 7848 - 784C 784E 7852 785C 785E 7860 7861 7863 - 7864 7868 786A 786E 787A 787E 788A 788F - 7894 7898 78A1 789D 789E 789F 78A4 78A8 - 78AC 78AD 78B0 78B1 78B2 78B3 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 5021 - srcEnd = 507E - mappingOffset = 0CCB - Mapping = - 78BB 78BD 78BF 78C7 78C8 78C9 78CC 78CE - 78D2 78D3 78D5 78D6 78E4 78DB 78DF 78E0 - 78E1 78E6 78EA 78F2 78F3 7900 78F6 78F7 - 78FA 78FB 78FF 7906 790C 7910 791A 791C - 791E 791F 7920 7925 7927 7929 792D 7931 - 7934 7935 793B 793D 793F 7944 7945 7946 - 794A 794B 794F 7951 7954 7958 795B 795C - 7967 7969 796B 7972 7979 797B 797C 797E - 798B 798C 7991 7993 7994 7995 7996 7998 - 799B 799C 79A1 79A8 79A9 79AB 79AF 79B1 - 79B4 79B8 79BB 79C2 79C4 79C7 79C8 79CA - 79CF 79D4 79D6 79DA 79DD 79DE -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 5121 - srcEnd = 517E - mappingOffset = 0D29 - Mapping = - 79E0 79E2 79E5 79EA 79EB 79ED 79F1 79F8 - 79FC 7A02 7A03 7A07 7A09 7A0A 7A0C 7A11 - 7A15 7A1B 7A1E 7A21 7A27 7A2B 7A2D 7A2F - 7A30 7A34 7A35 7A38 7A39 7A3A 7A44 7A45 - 7A47 7A48 7A4C 7A55 7A56 7A59 7A5C 7A5D - 7A5F 7A60 7A65 7A67 7A6A 7A6D 7A75 7A78 - 7A7E 7A80 7A82 7A85 7A86 7A8A 7A8B 7A90 - 7A91 7A94 7A9E 7AA0 7AA3 7AAC 7AB3 7AB5 - 7AB9 7ABB 7ABC 7AC6 7AC9 7ACC 7ACE 7AD1 - 7ADB 7AE8 7AE9 7AEB 7AEC 7AF1 7AF4 7AFB - 7AFD 7AFE 7B07 7B14 7B1F 7B23 7B27 7B29 - 7B2A 7B2B 7B2D 7B2E 7B2F 7B30 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 5221 - srcEnd = 5278 - mappingOffset = 0D87 - Mapping = - 7B31 7B34 7B3D 7B3F 7B40 7B41 7B47 7B4E - 7B55 7B60 7B64 7B66 7B69 7B6A 7B6D 7B6F - 7B72 7B73 7B77 7B84 7B89 7B8E 7B90 7B91 - 7B96 7B9B 7B9E 7BA0 7BA5 7BAC 7BAF 7BB0 - 7BB2 7BB5 7BB6 7BBA 7BBB 7BBC 7BBD 7BC2 - 7BC5 7BC8 7BCA 7BD4 7BD6 7BD7 7BD9 7BDA - 7BDB 7BE8 7BEA 7BF2 7BF4 7BF5 7BF8 7BF9 - 7BFA 7BFC 7BFE 7C01 7C02 7C03 7C04 7C06 - 7C09 7C0B 7C0C 7C0E 7C0F 7C19 7C1B 7C20 - 7C25 7C26 7C28 7C2C 7C31 7C33 7C34 7C36 - 7C39 7C3A 7C46 7C4A 7C55 7C51 7C52 7C53 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 5321 - srcEnd = 537E - mappingOffset = 0DDF - Mapping = - 7C61 7C63 7C67 7C69 7C6D 7C6E 7C70 7C72 - 7C79 7C7C 7C7D 7C86 7C87 7C8F 7C94 7C9E - 7CA0 7CA6 7CB0 7CB6 7CB7 7CBA 7CBB 7CBC - 7CBF 7CC4 7CC7 7CC8 7CC9 7CCD 7CCF 7CD3 - 7CD4 7CD5 7CD7 7CD9 7CDA 7CDD 7CE6 7CE9 - 7CEB 7CF5 7D03 7D07 7D08 7D09 7D0F 7D11 - 7D12 7D13 7D16 7D1D 7D1E 7D23 7D26 7D2A - 7D2D 7D31 7D3C 7D3D 7D3E 7D40 7D41 7D47 - 7D48 7D4D 7D51 7D53 7D57 7D59 7D5A 7D5C - 7D5D 7D65 7D67 7D6A 7D70 7D78 7D7A 7D7B - 7D7F 7D81 7D82 7D83 7D85 7D86 7D88 7D8B - 7D8C 7D8D 7D91 7D96 7D97 7D9D -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 5421 - srcEnd = 547E - mappingOffset = 0E3D - Mapping = - 7D9E 7DA6 7DA7 7DAA 7DB3 7DB6 7DB7 7DB9 - 7DC2 7DC3 7DC4 7DC5 7DC6 7DCC 7DCD 7DCE - 7DD7 7DD9 7E00 7DE2 7DE5 7DE6 7DEA 7DEB - 7DED 7DF1 7DF5 7DF6 7DF9 7DFA 7E08 7E10 - 7E11 7E15 7E17 7E1C 7E1D 7E20 7E27 7E28 - 7E2C 7E2D 7E2F 7E33 7E36 7E3F 7E44 7E45 - 7E47 7E4E 7E50 7E52 7E58 7E5F 7E61 7E62 - 7E65 7E6B 7E6E 7E6F 7E73 7E78 7E7E 7E81 - 7E86 7E87 7E8A 7E8D 7E91 7E95 7E98 7E9A - 7E9D 7E9E 7F3C 7F3B 7F3D 7F3E 7F3F 7F43 - 7F44 7F47 7F4F 7F52 7F53 7F5B 7F5C 7F5D - 7F61 7F63 7F64 7F65 7F66 7F6D -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 5521 - srcEnd = 557E - mappingOffset = 0E9B - Mapping = - 7F71 7F7D 7F7E 7F7F 7F80 7F8B 7F8D 7F8F - 7F90 7F91 7F96 7F97 7F9C 7FA1 7FA2 7FA6 - 7FAA 7FAD 7FB4 7FBC 7FBF 7FC0 7FC3 7FC8 - 7FCE 7FCF 7FDB 7FDF 7FE3 7FE5 7FE8 7FEC - 7FEE 7FEF 7FF2 7FFA 7FFD 7FFE 7FFF 8007 - 8008 800A 800D 800E 800F 8011 8013 8014 - 8016 801D 801E 801F 8020 8024 8026 802C - 802E 8030 8034 8035 8037 8039 803A 803C - 803E 8040 8044 8060 8064 8066 806D 8071 - 8075 8081 8088 808E 809C 809E 80A6 80A7 - 80AB 80B8 80B9 80C8 80CD 80CF 80D2 80D4 - 80D5 80D7 80D8 80E0 80ED 80EE -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 5621 - srcEnd = 567E - mappingOffset = 0EF9 - Mapping = - 80F0 80F2 80F3 80F6 80F9 80FA 80FE 8103 - 810B 8116 8117 8118 811C 811E 8120 8124 - 8127 812C 8130 8135 813A 813C 8145 8147 - 814A 814C 8152 8157 8160 8161 8167 8168 - 8169 816D 816F 8177 8181 8190 8184 8185 - 8186 818B 818E 8196 8198 819B 819E 81A2 - 81AE 81B2 81B4 81BB 81CB 81C3 81C5 81CA - 81CE 81CF 81D5 81D7 81DB 81DD 81DE 81E1 - 81E4 81EB 81EC 81F0 81F1 81F2 81F5 81F6 - 81F8 81F9 81FD 81FF 8200 8203 820F 8213 - 8214 8219 821A 821D 8221 8222 8228 8232 - 8234 823A 8243 8244 8245 8246 -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 5721 - srcEnd = 577E - mappingOffset = 0F57 - Mapping = - 824B 824E 824F 8251 8256 825C 8260 8263 - 8267 826D 8274 827B 827D 827F 8280 8281 - 8283 8284 8287 8289 828A 828E 8291 8294 - 8296 8298 829A 829B 82A0 82A1 82A3 82A4 - 82A7 82A8 82A9 82AA 82AE 82B0 82B2 82B4 - 82B7 82BA 82BC 82BE 82BF 82C6 82D0 82D5 - 82DA 82E0 82E2 82E4 82E8 82EA 82ED 82EF - 82F6 82F7 82FD 82FE 8300 8301 8307 8308 - 830A 830B 8354 831B 831D 831E 831F 8321 - 8322 832C 832D 832E 8330 8333 8337 833A - 833C 833D 8342 8343 8344 8347 834D 834E - 8351 8355 8356 8357 8370 8378 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 5821 - srcEnd = 587E - mappingOffset = 0FB5 - Mapping = - 837D 837F 8380 8382 8384 8386 838D 8392 - 8394 8395 8398 8399 839B 839C 839D 83A6 - 83A7 83A9 83AC 83BE 83BF 83C0 83C7 83C9 - 83CF 83D0 83D1 83D4 83DD 8353 83E8 83EA - 83F6 83F8 83F9 83FC 8401 8406 840A 840F - 8411 8415 8419 83AD 842F 8439 8445 8447 - 8448 844A 844D 844F 8451 8452 8456 8458 - 8459 845A 845C 8460 8464 8465 8467 846A - 8470 8473 8474 8476 8478 847C 847D 8481 - 8485 8492 8493 8495 849E 84A6 84A8 84A9 - 84AA 84AF 84B1 84B4 84BA 84BD 84BE 84C0 - 84C2 84C7 84C8 84CC 84CF 84D3 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 5921 - srcEnd = 597E - mappingOffset = 1013 - Mapping = - 84DC 84E7 84EA 84EF 84F0 84F1 84F2 84F7 - 8532 84FA 84FB 84FD 8502 8503 8507 850C - 850E 8510 851C 851E 8522 8523 8524 8525 - 8527 852A 852B 852F 8533 8534 8536 853F - 8546 854F 8550 8551 8552 8553 8556 8559 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD 8564 - 856B 856F 8579 857A 857B 857D 857F 8581 - 8585 8586 8589 858B 858C 858F 8593 8598 - 859D 859F 85A0 85A2 85A5 85A7 85B4 85B6 - 85B7 85B8 85BC 85BD 85BE 85BF 85C2 85C7 - 85CA 85CB 85CE 85AD 85D8 85DA 85DF 85E0 - 85E6 85E8 85ED 85F3 85F6 85FC -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 5A21 - srcEnd = 5A7E - mappingOffset = 1071 - Mapping = - 85FF 8600 8604 8605 860D 860E 8610 8611 - 8612 8618 8619 861B 861E 8621 8627 8629 - 8636 8638 863A 863C 863D 8640 8642 8646 - 8652 8653 8656 8657 8658 8659 865D 8660 - 8661 8662 8663 8664 8669 866C 866F 8675 - 8676 8677 867A 868D 8691 8696 8698 869A - 869C 86A1 86A6 86A7 86A8 86AD 86B1 86B3 - 86B4 86B5 86B7 86B8 86B9 86BF 86C0 86C1 - 86C3 86C5 86D1 86D2 86D5 86D7 86DA 86DC - 86E0 86E3 86E5 86E7 8688 86FA 86FC 86FD - 8704 8705 8707 870B 870E 870F 8710 8713 - 8714 8719 871E 871F 8721 8723 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 5B21 - srcEnd = 5B7E - mappingOffset = 10CF - Mapping = - 8728 872E 872F 8731 8732 8739 873A 873C - 873D 873E 8740 8743 8745 874D 8758 875D - 8761 8764 8765 876F 8771 8772 877B FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 878B 878C - 8790 8793 8795 8797 8798 8799 879E 87A0 - 87A3 87A7 87AC 87AD 87AE 87B1 87B5 87BE - 87BF 87C1 87C8 87C9 87CA 87CE 87D5 87D6 - 87D9 87DA 87DC 87DF 87E2 87E3 87E4 87EA - 87EB 87ED 87F1 87F3 87F8 87FA 87FF 8801 - 8803 8806 8809 880A 880B 8810 8819 8812 - 8813 8814 8818 881A 881B 881C 881E 881F - 8828 882D 882E 8830 8832 8835 -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 5C21 - srcEnd = 5C7E - mappingOffset = 112D - Mapping = - 883A 883C 8841 8843 8845 8848 8849 884A - 884B 884E 8851 8855 8856 8858 885A 885C - 885F 8860 8864 8869 8871 8879 887B 8880 - 8898 889A 889B 889C 889F 88A0 88A8 88AA - 88BA 88BD 88BE 88C0 88CA 88CB 88CC 88CD - 88CE 88D1 88D2 88D3 88DB 88DE 88E7 88EF - 88F0 88F1 88F5 88F7 8901 8906 890D 890E - 890F 8915 8916 8918 8919 891A 891C 8920 - 8926 8927 8928 8930 8931 8932 8935 8939 - 893A 893E 8940 8942 8945 8946 8949 894F - 8952 8957 895A 895B 895C 8961 8962 8963 - 896B 896E 8970 8973 8975 897A -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 5D21 - srcEnd = 5D7E - mappingOffset = 118B - Mapping = - 897B 897C 897D 8989 898D 8990 8994 8995 - 899B 899C 899F 89A0 89A5 89B0 89B4 89B5 - 89B6 89B7 89BC 89D4 89D5 89D6 89D7 89D8 - 89E5 89E9 89EB 89ED 89F1 89F3 89F6 89F9 - 89FD 89FF 8A04 8A05 8A07 8A0F 8A11 8A12 - 8A14 8A15 8A1E 8A20 8A22 8A24 8A26 8A2B - 8A2C 8A2F 8A35 8A37 8A3D 8A3E 8A40 8A43 - 8A45 8A47 8A49 8A4D 8A4E 8A53 8A56 8A57 - 8A58 8A5C 8A5D 8A61 8A65 8A67 8A75 8A76 - 8A77 8A79 8A7A 8A7B 8A7E 8A7F 8A80 8A83 - 8A86 8A8B 8A8F 8A90 8A92 8A96 8A97 8A99 - 8A9F 8AA7 8AA9 8AAE 8AAF 8AB3 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 5E21 - srcEnd = 5E7E - mappingOffset = 11E9 - Mapping = - 8AB6 8AB7 8ABB 8ABE 8AC3 8AC6 8AC8 8AC9 - 8ACA 8AD1 8AD3 8AD4 8AD5 8AD7 8ADD 8ADF - 8AEC 8AF0 8AF4 8AF5 8AF6 8AFC 8AFF 8B05 - 8B06 8B0B 8B11 8B1C 8B1E 8B1F 8B0A 8B2D - 8B30 8B37 8B3C 8B42 8B43 8B44 8B45 8B46 - 8B48 8B52 8B53 8B54 8B59 8B4D 8B5E 8B63 - 8B6D 8B76 8B78 8B79 8B7C 8B7E 8B81 8B84 - 8B85 8B8B 8B8D 8B8F 8B94 8B95 8B9C 8B9E - 8B9F 8C38 8C39 8C3D 8C3E 8C45 8C47 8C49 - 8C4B 8C4F 8C51 8C53 8C54 8C57 8C58 8C5B - 8C5D 8C59 8C63 8C64 8C66 8C68 8C69 8C6D - 8C73 8C75 8C76 8C7B 8C7E 8C86 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 5F21 - srcEnd = 5F7E - mappingOffset = 1247 - Mapping = - 8C87 8C8B 8C90 8C92 8C93 8C99 8C9B 8C9C - 8CA4 8CB9 8CBA 8CC5 8CC6 8CC9 8CCB 8CCF - 8CD6 8CD5 8CD9 8CDD 8CE1 8CE8 8CEC 8CEF - 8CF0 8CF2 8CF5 8CF7 8CF8 8CFE 8CFF 8D01 - 8D03 8D09 8D12 8D17 8D1B 8D65 8D69 8D6C - 8D6E 8D7F 8D82 8D84 8D88 8D8D 8D90 8D91 - 8D95 8D9E 8D9F 8DA0 8DA6 8DAB 8DAC 8DAF - 8DB2 8DB5 8DB7 8DB9 8DBB 8DC0 8DC5 8DC6 - 8DC7 8DC8 8DCA 8DCE 8DD1 8DD4 8DD5 8DD7 - 8DD9 8DE4 8DE5 8DE7 8DEC 8DF0 8DBC 8DF1 - 8DF2 8DF4 8DFD 8E01 8E04 8E05 8E06 8E0B - 8E11 8E14 8E16 8E20 8E21 8E22 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 6021 - srcEnd = 607E - mappingOffset = 12A5 - Mapping = - 8E23 8E26 8E27 8E31 8E33 8E36 8E37 8E38 - 8E39 8E3D 8E40 8E41 8E4B 8E4D 8E4E 8E4F - 8E54 8E5B 8E5C 8E5D 8E5E 8E61 8E62 8E69 - 8E6C 8E6D 8E6F 8E70 8E71 8E79 8E7A 8E7B - 8E82 8E83 8E89 8E90 8E92 8E95 8E9A 8E9B - 8E9D 8E9E 8EA2 8EA7 8EA9 8EAD 8EAE 8EB3 - 8EB5 8EBA 8EBB 8EC0 8EC1 8EC3 8EC4 8EC7 - 8ECF 8ED1 8ED4 8EDC 8EE8 8EEE 8EF0 8EF1 - 8EF7 8EF9 8EFA 8EED 8F00 8F02 8F07 8F08 - 8F0F 8F10 8F16 8F17 8F18 8F1E 8F20 8F21 - 8F23 8F25 8F27 8F28 8F2C 8F2D 8F2E 8F34 - 8F35 8F36 8F37 8F3A 8F40 8F41 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 6121 - srcEnd = 617E - mappingOffset = 1303 - Mapping = - 8F43 8F47 8F4F 8F51 8F52 8F53 8F54 8F55 - 8F58 8F5D 8F5E 8F65 8F9D 8FA0 8FA1 8FA4 - 8FA5 8FA6 8FB5 8FB6 8FB8 8FBE 8FC0 8FC1 - 8FC6 8FCA 8FCB 8FCD 8FD0 8FD2 8FD3 8FD5 - 8FE0 8FE3 8FE4 8FE8 8FEE 8FF1 8FF5 8FF6 - 8FFB 8FFE 9002 9004 9008 900C 9018 901B - 9028 9029 902F 902A 902C 902D 9033 9034 - 9037 903F 9043 9044 904C 905B 905D 9062 - 9066 9067 906C 9070 9074 9079 9085 9088 - 908B 908C 908E 9090 9095 9097 9098 9099 - 909B 90A0 90A1 90A2 90A5 90B0 90B2 90B3 - 90B4 90B6 90BD 90CC 90BE 90C3 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 6221 - srcEnd = 627E - mappingOffset = 1361 - Mapping = - 90C4 90C5 90C7 90C8 90D5 90D7 90D8 90D9 - 90DC 90DD 90DF 90E5 90D2 90F6 90EB 90EF - 90F0 90F4 90FE 90FF 9100 9104 9105 9106 - 9108 910D 9110 9114 9116 9117 9118 911A - 911C 911E 9120 9125 9122 9123 9127 9129 - 912E 912F 9131 9134 9136 9137 9139 913A - 913C 913D 9143 9147 9148 914F 9153 9157 - 9159 915A 915B 9161 9164 9167 916D 9174 - 9179 917A 917B 9181 9183 9185 9186 918A - 918E 9191 9193 9194 9195 9198 919E 91A1 - 91A6 91A8 91AC 91AD 91AE 91B0 91B1 91B2 - 91B3 91B6 91BB 91BC 91BD 91BF -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 6321 - srcEnd = 637E - mappingOffset = 13BF - Mapping = - 91C2 91C3 91C5 91D3 91D4 91D7 91D9 91DA - 91DE 91E4 91E5 91E9 91EA FFFD FFFD FFFD - FFFD FFFD FFFD 91F7 91F9 91FB 91FD 9200 - 9201 9204 9205 9206 9207 9209 920A 920C - 9210 9212 9213 9216 9218 921C 921D 9223 - 9224 9225 9226 9228 922E 922F 9230 9233 - 9235 9236 9238 9239 923A 923C 923E 9240 - 9242 9243 9246 9247 924A 924D 924E 924F - 9251 9258 9259 925C 925D 9260 9261 9265 - 9267 9268 9269 926E 926F 9270 9275 9276 - 9277 9278 9279 927B 927C 927D 927F 9288 - 9289 928A 928D 928E 9292 9297 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 6421 - srcEnd = 647E - mappingOffset = 141D - Mapping = - 9299 929F 92A0 92A4 92A5 92A7 92A8 92AB - 92AF 92B2 92B6 92B8 92BA 92BB 92BC 92BD - 92BF 92C0 92C1 92C2 92C3 92C5 92C6 92C7 - 92C8 92CB 92CC 92CD 92CE 92D0 92D3 92D5 - 92D7 92D8 92D9 92DC 92DD 92DF 92E0 92E1 - 92E3 92E5 92E7 92E8 92EC 92EE 92F0 92F9 - 92FB 92FF 9300 9302 9308 930D 9311 9314 - 9315 931C 931D 931E 931F 9321 9324 9325 - 9327 9329 932A 9333 9334 9336 9337 9347 - 9348 9349 9350 9351 9352 9355 9357 9358 - 935A 935E 9364 9365 9367 9369 936A 936D - 936F 9370 9371 9373 9374 9376 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 6521 - srcEnd = 657E - mappingOffset = 147B - Mapping = - 937A 937D 937F 9380 9381 9382 9388 938A - 938B 938D 938F 9392 9395 9398 939B 939E - 93A1 93A3 93A4 93A6 93A8 93AB 93B4 93B5 - 93B6 93BA 93A9 93C1 93C4 93C5 93C6 93C7 - 93C9 93CA 93CB 93CC 93CD 93D3 93D9 93DC - 93DE 93DF 93E2 93E6 93E7 93F9 93F7 93F8 - 93FA 93FB 93FD 9401 9402 9404 9408 9409 - 940D 940E 940F 9415 9416 9417 941F 942E - 942F 9431 9432 9433 9434 943B 943F 943D - 9443 9445 9448 944A 944C 9455 9459 945C - 945F 9461 9463 9468 946B 946D 946E 946F - 9471 9472 9484 9483 9578 9579 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 6621 - srcEnd = 667E - mappingOffset = 14D9 - Mapping = - 957E 9584 9588 958C 958D 958E 959D 959E - 959F 95A1 95A6 95A9 95AB 95AC 95B4 95B6 - 95BA 95BD 95BF 95C6 95C8 95C9 95CB 95D0 - 95D1 95D2 95D3 95D9 95DA 95DD 95DE 95DF - 95E0 95E4 95E6 961D 961E 9622 9624 9625 - 9626 962C 9631 9633 9637 9638 9639 963A - 963C 963D 9641 9652 9654 9656 9657 9658 - 9661 966E 9674 967B 967C 967E 967F 9681 - 9682 9683 9684 9689 9691 9696 969A 969D - 969F 96A4 96A5 96A6 96A9 96AE 96AF 96B3 - 96BA 96CA 96D2 5DB2 96D8 96DA 96DD 96DE - 96DF 96E9 96EF 96F1 96FA 9702 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 6721 - srcEnd = 677E - mappingOffset = 1537 - Mapping = - 9703 9705 9709 971A 971B 971D 9721 9722 - 9723 9728 9731 9733 9741 9743 974A 974E - 974F 9755 9757 9758 975A 975B 9763 9767 - 976A 976E 9773 9776 9777 9778 977B 977D - 977F 9780 9789 9795 9796 9797 9799 979A - 979E 979F 97A2 97AC 97AE 97B1 97B2 97B5 - 97B6 97B8 97B9 97BA 97BC 97BE 97BF 97C1 - 97C4 97C5 97C7 97C9 97CA 97CC 97CD 97CE - 97D0 97D1 97D4 97D7 97D8 97D9 97DD 97DE - 97E0 97DB 97E1 97E4 97EF 97F1 97F4 97F7 - 97F8 97FA 9807 980A 9819 980D 980E 9814 - 9816 981C 981E 9820 9823 9826 -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 6821 - srcEnd = 687E - mappingOffset = 1595 - Mapping = - 982B 982E 982F 9830 9832 9833 9835 9825 - 983E 9844 9847 984A 9851 9852 9853 9856 - 9857 9859 985A 9862 9863 9865 9866 986A - 986C 98AB 98AD 98AE 98B0 98B4 98B7 98B8 - 98BA 98BB 98BF 98C2 98C5 98C8 98CC 98E1 - 98E3 98E5 98E6 98E7 98EA 98F3 98F6 9902 - 9907 9908 9911 9915 9916 9917 991A 991B - 991C 991F 9922 9926 9927 992B 9931 9932 - 9933 9934 9935 9939 993A 993B 993C 9940 - 9941 9946 9947 9948 994D 994E 9954 9958 - 9959 995B 995C 995E 995F 9960 999B 999D - 999F 99A6 99B0 99B1 99B2 99B5 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 6921 - srcEnd = 697E - mappingOffset = 15F3 - Mapping = - 99B9 99BA 99BD 99BF 99C3 99C9 99D3 99D4 - 99D9 99DA 99DC 99DE 99E7 99EA 99EB 99EC - 99F0 99F4 99F5 99F9 99FD 99FE 9A02 9A03 - 9A04 9A0B 9A0C 9A10 9A11 9A16 9A1E 9A20 - 9A22 9A23 9A24 9A27 9A2D 9A2E 9A33 9A35 - 9A36 9A38 9A47 9A41 9A44 9A4A 9A4B 9A4C - 9A4E 9A51 9A54 9A56 9A5D 9AAA 9AAC 9AAE - 9AAF 9AB2 9AB4 9AB5 9AB6 9AB9 9ABB 9ABE - 9ABF 9AC1 9AC3 9AC6 9AC8 9ACE 9AD0 9AD2 - 9AD5 9AD6 9AD7 9ADB 9ADC 9AE0 9AE4 9AE5 - 9AE7 9AE9 9AEC 9AF2 9AF3 9AF5 9AF9 9AFA - 9AFD 9AFF 9B00 9B01 9B02 9B03 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 6A21 - srcEnd = 6A7E - mappingOffset = 1651 - Mapping = - 9B04 9B05 9B08 9B09 9B0B 9B0C 9B0D 9B0E - 9B10 9B12 9B16 9B19 9B1B 9B1C 9B20 9B26 - 9B2B 9B2D 9B33 9B34 9B35 9B37 9B39 9B3A - 9B3D 9B48 9B4B 9B4C 9B55 9B56 9B57 9B5B - 9B5E 9B61 9B63 9B65 9B66 9B68 9B6A 9B6B - 9B6C 9B6D 9B6E 9B73 9B75 9B77 9B78 9B79 - 9B7F 9B80 9B84 9B85 9B86 9B87 9B89 9B8A - 9B8B 9B8D 9B8F 9B90 9B94 9B9A 9B9D 9B9E - 9BA6 9BA7 9BA9 9BAC 9BB0 9BB1 9BB2 9BB7 - 9BB8 9BBB 9BBC 9BBE 9BBF 9BC1 9BC7 9BC8 - 9BCE 9BD0 9BD7 9BD8 9BDD 9BDF 9BE5 9BE7 - 9BEA 9BEB 9BEF 9BF3 9BF7 9BF8 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 6B21 - srcEnd = 6B7E - mappingOffset = 16AF - Mapping = - 9BF9 9BFA 9BFD 9BFF 9C00 9C02 9C0B 9C0F - 9C11 9C16 9C18 9C19 9C1A 9C1C 9C1E 9C22 - 9C23 9C26 9C27 9C28 9C29 9C2A 9C31 9C35 - 9C36 9C37 9C3D 9C41 9C43 9C44 9C45 9C49 - 9C4A 9C4E 9C4F 9C50 9C53 9C54 9C56 9C58 - 9C5B 9C5D 9C5E 9C5F 9C63 9C69 9C6A 9C5C - 9C6B 9C68 9C6E 9C70 9C72 9C75 9C77 9C7B - 9CE6 9CF2 9CF7 9CF9 9D0B 9D02 9D11 9D17 - 9D18 9D1C 9D1D 9D1E 9D2F 9D30 9D32 9D33 - 9D34 9D3A 9D3C 9D45 9D3D 9D42 9D43 9D47 - 9D4A 9D53 9D54 9D5F 9D63 9D62 9D65 9D69 - 9D6A 9D6B 9D70 9D76 9D77 9D7B -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 6C21 - srcEnd = 6C7E - mappingOffset = 170D - Mapping = - 9D7C 9D7E 9D83 9D84 9D86 9D8A 9D8D 9D8E - 9D92 9D93 9D95 9D96 9D97 9D98 9DA1 9DAA - 9DAC 9DAE 9DB1 9DB5 9DB9 9DBC 9DBF 9DC3 - 9DC7 9DC9 9DCA 9DD4 9DD5 9DD6 9DD7 9DDA - 9DDE 9DDF 9DE0 9DE5 9DE7 9DE9 9DEB 9DEE - 9DF0 9DF3 9DF4 9DFE 9E0A 9E02 9E07 9E0E - 9E10 9E11 9E12 9E15 9E16 9E19 9E1C 9E1D - 9E7A 9E7B 9E7C 9E80 9E82 9E83 9E84 9E85 - 9E87 9E8E 9E8F 9E96 9E98 9E9B 9E9E 9EA4 - 9EA8 9EAC 9EAE 9EAF 9EB0 9EB3 9EB4 9EB5 - 9EC6 9EC8 9ECB 9ED5 9EDF 9EE4 9EE7 9EEC - 9EED 9EEE 9EF0 9EF1 9EF2 9EF5 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 6D21 - srcEnd = 6D63 - mappingOffset = 176B - Mapping = - 9EF8 9EFF 9F02 9F03 9F09 9F0F 9F10 9F11 - 9F12 9F14 9F16 9F17 9F19 9F1A 9F1B 9F1F - 9F22 9F26 9F2A 9F2B 9F2F 9F31 9F32 9F34 - 9F37 9F39 9F3A 9F3C 9F3D 9F3F 9F41 9F43 - 9F44 9F45 9F46 9F47 9F53 9F55 9F56 9F57 - 9F58 9F5A 9F5D 9F5E 9F68 9F69 9F6D 9F6E - 9F6F 9F70 9F71 9F73 9F75 9F7A 9F7D 9F8F - 9F90 9F91 9F92 9F94 9F96 9F97 9F9E 9FA1 - 9FA2 9FA3 9FA5 -End of Item 0050 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0051, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0019, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x010C, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x000A */ -/* Total of Format 1 : 0x0047 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x1100, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0019 Start of MapCell Array */ -/* 0000 */ 0x2742, 0x274C, 0x0402, -/* 0001 */ 0x2772, 0x277C, 0x0452, -/* 0002 */ 0x362D, 0x3632, 0x560D, -/* 0003 */ 0x4C2C, 0x4C35, 0x7428, -/* 0004 */ 0x4D3D, 0x4D42, 0x7579, -/* 0005 */ 0x4E3F, 0x4E45, 0x76A2, -/* 0006 */ 0x5279, 0x527E, 0x7C59, -/* 0007 */ 0x5949, 0x594F, 0x855C, -/* 0008 */ 0x5B38, 0x5B3E, 0x8783, -/* 0009 */ 0x632E, 0x6333, 0x91EC, -/* 000A */ 0x222F, 0x2244, 0x0000, -/* 000B */ 0x226B, 0x2271, 0x0016, -/* 000C */ 0x2661, 0x267C, 0x001D, -/* 000D */ 0x274D, 0x274E, 0x0039, -/* 000E */ 0x277D, 0x277E, 0x003B, -/* 000F */ 0x2921, 0x2930, 0x003D, -/* 0010 */ 0x2941, 0x2950, 0x004D, -/* 0011 */ 0x2A21, 0x2A77, 0x005D, -/* 0012 */ 0x2B21, 0x2B77, 0x00B4, -/* 0013 */ 0x3021, 0x307E, 0x010B, -/* 0014 */ 0x3121, 0x317E, 0x0169, -/* 0015 */ 0x3221, 0x327E, 0x01C7, -/* 0016 */ 0x3321, 0x337E, 0x0225, -/* 0017 */ 0x3421, 0x347E, 0x0283, -/* 0018 */ 0x3521, 0x357E, 0x02E1, -/* 0019 */ 0x3621, 0x367E, 0x033F, -/* 001A */ 0x3721, 0x377E, 0x039D, -/* 001B */ 0x3821, 0x387E, 0x03FB, -/* 001C */ 0x3921, 0x397E, 0x0459, -/* 001D */ 0x3A21, 0x3A7E, 0x04B7, -/* 001E */ 0x3B21, 0x3B7E, 0x0515, -/* 001F */ 0x3C21, 0x3C7E, 0x0573, -/* 0020 */ 0x3D21, 0x3D7E, 0x05D1, -/* 0021 */ 0x3E21, 0x3E7E, 0x062F, -/* 0022 */ 0x3F21, 0x3F7E, 0x068D, -/* 0023 */ 0x4021, 0x407E, 0x06EB, -/* 0024 */ 0x4121, 0x417E, 0x0749, -/* 0025 */ 0x4221, 0x427E, 0x07A7, -/* 0026 */ 0x4321, 0x437E, 0x0805, -/* 0027 */ 0x4421, 0x447E, 0x0863, -/* 0028 */ 0x4521, 0x457E, 0x08C1, -/* 0029 */ 0x4621, 0x467E, 0x091F, -/* 002A */ 0x4721, 0x477E, 0x097D, -/* 002B */ 0x4821, 0x487E, 0x09DB, -/* 002C */ 0x4921, 0x497E, 0x0A39, -/* 002D */ 0x4A21, 0x4A7E, 0x0A97, -/* 002E */ 0x4B21, 0x4B7E, 0x0AF5, -/* 002F */ 0x4C21, 0x4C7E, 0x0B53, -/* 0030 */ 0x4D21, 0x4D7E, 0x0BB1, -/* 0031 */ 0x4E21, 0x4E7E, 0x0C0F, -/* 0032 */ 0x4F21, 0x4F7E, 0x0C6D, -/* 0033 */ 0x5021, 0x507E, 0x0CCB, -/* 0034 */ 0x5121, 0x517E, 0x0D29, -/* 0035 */ 0x5221, 0x5278, 0x0D87, -/* 0036 */ 0x5321, 0x537E, 0x0DDF, -/* 0037 */ 0x5421, 0x547E, 0x0E3D, -/* 0038 */ 0x5521, 0x557E, 0x0E9B, -/* 0039 */ 0x5621, 0x567E, 0x0EF9, -/* 003A */ 0x5721, 0x577E, 0x0F57, -/* 003B */ 0x5821, 0x587E, 0x0FB5, -/* 003C */ 0x5921, 0x597E, 0x1013, -/* 003D */ 0x5A21, 0x5A7E, 0x1071, -/* 003E */ 0x5B21, 0x5B7E, 0x10CF, -/* 003F */ 0x5C21, 0x5C7E, 0x112D, -/* 0040 */ 0x5D21, 0x5D7E, 0x118B, -/* 0041 */ 0x5E21, 0x5E7E, 0x11E9, -/* 0042 */ 0x5F21, 0x5F7E, 0x1247, -/* 0043 */ 0x6021, 0x607E, 0x12A5, -/* 0044 */ 0x6121, 0x617E, 0x1303, -/* 0045 */ 0x6221, 0x627E, 0x1361, -/* 0046 */ 0x6321, 0x637E, 0x13BF, -/* 0047 */ 0x6421, 0x647E, 0x141D, -/* 0048 */ 0x6521, 0x657E, 0x147B, -/* 0049 */ 0x6621, 0x667E, 0x14D9, -/* 004A */ 0x6721, 0x677E, 0x1537, -/* 004B */ 0x6821, 0x687E, 0x1595, -/* 004C */ 0x6921, 0x697E, 0x15F3, -/* 004D */ 0x6A21, 0x6A7E, 0x1651, -/* 004E */ 0x6B21, 0x6B7E, 0x16AF, -/* 004F */ 0x6C21, 0x6C7E, 0x170D, -/* 0050 */ 0x6D21, 0x6D63, 0x176B, -/*-------------------------------------------------------*/ -/* Offset=0x010C Start of MappingTable */ - -/* 0000 */ 0x02D8, 0x02C7, 0x00B8, 0x02D9, 0x02DD, 0x00AF, 0x02DB, 0x02DA, -/* 0008 */ 0x007E, 0x0384, 0x0385, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00A1, 0x00A6, 0x00BF, 0x00BA, 0x00AA, -/* 0018 */ 0x00A9, 0x00AE, 0x2122, 0x00A4, 0x2116, 0x0386, 0x0388, 0x0389, -/* 0020 */ 0x038A, 0x03AA, 0xFFFD, 0x038C, 0xFFFD, 0x038E, 0x03AB, 0xFFFD, -/* 0028 */ 0x038F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x03AC, 0x03AD, 0x03AE, -/* 0030 */ 0x03AF, 0x03CA, 0x0390, 0x03CC, 0x03C2, 0x03CD, 0x03CB, 0x03B0, -/* 0038 */ 0x03CE, 0x040E, 0x040F, 0x045E, 0x045F, 0x00C6, 0x0110, 0xFFFD, -/* 0040 */ 0x0126, 0xFFFD, 0x0132, 0xFFFD, 0x0141, 0x013F, 0xFFFD, 0x014A, -/* 0048 */ 0x00D8, 0x0152, 0xFFFD, 0x0166, 0x00DE, 0x00E6, 0x0111, 0x00F0, -/* 0050 */ 0x0127, 0x0131, 0x0133, 0x0138, 0x0142, 0x0140, 0x0149, 0x014B, -/* 0058 */ 0x00F8, 0x0153, 0x00DF, 0x0167, 0x00FE, 0x00C1, 0x00C0, 0x00C4, -/* 0060 */ 0x00C2, 0x0102, 0x01CD, 0x0100, 0x0104, 0x00C5, 0x00C3, 0x0106, -/* 0068 */ 0x0108, 0x010C, 0x00C7, 0x010A, 0x010E, 0x00C9, 0x00C8, 0x00CB, -/* 0070 */ 0x00CA, 0x011A, 0x0116, 0x0112, 0x0118, 0xFFFD, 0x011C, 0x011E, -/* 0078 */ 0x0122, 0x0120, 0x0124, 0x00CD, 0x00CC, 0x00CF, 0x00CE, 0x01CF, -/* 0080 */ 0x0130, 0x012A, 0x012E, 0x0128, 0x0134, 0x0136, 0x0139, 0x013D, -/* 0088 */ 0x013B, 0x0143, 0x0147, 0x0145, 0x00D1, 0x00D3, 0x00D2, 0x00D6, -/* 0090 */ 0x00D4, 0x01D1, 0x0150, 0x014C, 0x00D5, 0x0154, 0x0158, 0x0156, -/* 0098 */ 0x015A, 0x015C, 0x0160, 0x015E, 0x0164, 0x0162, 0x00DA, 0x00D9, -/* 00A0 */ 0x00DC, 0x00DB, 0x016C, 0x01D3, 0x0170, 0x016A, 0x0172, 0x016E, -/* 00A8 */ 0x0168, 0x01D7, 0x01DB, 0x01D9, 0x01D5, 0x0174, 0x00DD, 0x0178, -/* 00B0 */ 0x0176, 0x0179, 0x017D, 0x017B, 0x00E1, 0x00E0, 0x00E4, 0x00E2, -/* 00B8 */ 0x0103, 0x01CE, 0x0101, 0x0105, 0x00E5, 0x00E3, 0x0107, 0x0109, -/* 00C0 */ 0x010D, 0x00E7, 0x010B, 0x010F, 0x00E9, 0x00E8, 0x00EB, 0x00EA, -/* 00C8 */ 0x011B, 0x0117, 0x0113, 0x0119, 0x01F5, 0x011D, 0x011F, 0xFFFD, -/* 00D0 */ 0x0121, 0x0125, 0x00ED, 0x00EC, 0x00EF, 0x00EE, 0x01D0, 0xFFFD, -/* 00D8 */ 0x012B, 0x012F, 0x0129, 0x0135, 0x0137, 0x013A, 0x013E, 0x013C, -/* 00E0 */ 0x0144, 0x0148, 0x0146, 0x00F1, 0x00F3, 0x00F2, 0x00F6, 0x00F4, -/* 00E8 */ 0x01D2, 0x0151, 0x014D, 0x00F5, 0x0155, 0x0159, 0x0157, 0x015B, -/* 00F0 */ 0x015D, 0x0161, 0x015F, 0x0165, 0x0163, 0x00FA, 0x00F9, 0x00FC, -/* 00F8 */ 0x00FB, 0x016D, 0x01D4, 0x0171, 0x016B, 0x0173, 0x016F, 0x0169, -/* 0100 */ 0x01D8, 0x01DC, 0x01DA, 0x01D6, 0x0175, 0x00FD, 0x00FF, 0x0177, -/* 0108 */ 0x017A, 0x017E, 0x017C, 0x4E02, 0x4E04, 0x4E05, 0x4E0C, 0x4E12, -/* 0110 */ 0x4E1F, 0x4E23, 0x4E24, 0x4E28, 0x4E2B, 0x4E2E, 0x4E2F, 0x4E30, -/* 0118 */ 0x4E35, 0x4E40, 0x4E41, 0x4E44, 0x4E47, 0x4E51, 0x4E5A, 0x4E5C, -/* 0120 */ 0x4E63, 0x4E68, 0x4E69, 0x4E74, 0x4E75, 0x4E79, 0x4E7F, 0x4E8D, -/* 0128 */ 0x4E96, 0x4E97, 0x4E9D, 0x4EAF, 0x4EB9, 0x4EC3, 0x4ED0, 0x4EDA, -/* 0130 */ 0x4EDB, 0x4EE0, 0x4EE1, 0x4EE2, 0x4EE8, 0x4EEF, 0x4EF1, 0x4EF3, -/* 0138 */ 0x4EF5, 0x4EFD, 0x4EFE, 0x4EFF, 0x4F00, 0x4F02, 0x4F03, 0x4F08, -/* 0140 */ 0x4F0B, 0x4F0C, 0x4F12, 0x4F15, 0x4F16, 0x4F17, 0x4F19, 0x4F2E, -/* 0148 */ 0x4F31, 0x4F60, 0x4F33, 0x4F35, 0x4F37, 0x4F39, 0x4F3B, 0x4F3E, -/* 0150 */ 0x4F40, 0x4F42, 0x4F48, 0x4F49, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54, -/* 0158 */ 0x4F56, 0x4F58, 0x4F5F, 0x4F63, 0x4F6A, 0x4F6C, 0x4F6E, 0x4F71, -/* 0160 */ 0x4F77, 0x4F78, 0x4F79, 0x4F7A, 0x4F7D, 0x4F7E, 0x4F81, 0x4F82, -/* 0168 */ 0x4F84, 0x4F85, 0x4F89, 0x4F8A, 0x4F8C, 0x4F8E, 0x4F90, 0x4F92, -/* 0170 */ 0x4F93, 0x4F94, 0x4F97, 0x4F99, 0x4F9A, 0x4F9E, 0x4F9F, 0x4FB2, -/* 0178 */ 0x4FB7, 0x4FB9, 0x4FBB, 0x4FBC, 0x4FBD, 0x4FBE, 0x4FC0, 0x4FC1, -/* 0180 */ 0x4FC5, 0x4FC6, 0x4FC8, 0x4FC9, 0x4FCB, 0x4FCC, 0x4FCD, 0x4FCF, -/* 0188 */ 0x4FD2, 0x4FDC, 0x4FE0, 0x4FE2, 0x4FF0, 0x4FF2, 0x4FFC, 0x4FFD, -/* 0190 */ 0x4FFF, 0x5000, 0x5001, 0x5004, 0x5007, 0x500A, 0x500C, 0x500E, -/* 0198 */ 0x5010, 0x5013, 0x5017, 0x5018, 0x501B, 0x501C, 0x501D, 0x501E, -/* 01A0 */ 0x5022, 0x5027, 0x502E, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040, -/* 01A8 */ 0x5041, 0x5042, 0x5045, 0x5046, 0x504A, 0x504C, 0x504E, 0x5051, -/* 01B0 */ 0x5052, 0x5053, 0x5057, 0x5059, 0x505F, 0x5060, 0x5062, 0x5063, -/* 01B8 */ 0x5066, 0x5067, 0x506A, 0x506D, 0x5070, 0x5071, 0x503B, 0x5081, -/* 01C0 */ 0x5083, 0x5084, 0x5086, 0x508A, 0x508E, 0x508F, 0x5090, 0x5092, -/* 01C8 */ 0x5093, 0x5094, 0x5096, 0x509B, 0x509C, 0x509E, 0x509F, 0x50A0, -/* 01D0 */ 0x50A1, 0x50A2, 0x50AA, 0x50AF, 0x50B0, 0x50B9, 0x50BA, 0x50BD, -/* 01D8 */ 0x50C0, 0x50C3, 0x50C4, 0x50C7, 0x50CC, 0x50CE, 0x50D0, 0x50D3, -/* 01E0 */ 0x50D4, 0x50D8, 0x50DC, 0x50DD, 0x50DF, 0x50E2, 0x50E4, 0x50E6, -/* 01E8 */ 0x50E8, 0x50E9, 0x50EF, 0x50F1, 0x50F6, 0x50FA, 0x50FE, 0x5103, -/* 01F0 */ 0x5106, 0x5107, 0x5108, 0x510B, 0x510C, 0x510D, 0x510E, 0x50F2, -/* 01F8 */ 0x5110, 0x5117, 0x5119, 0x511B, 0x511C, 0x511D, 0x511E, 0x5123, -/* 0200 */ 0x5127, 0x5128, 0x512C, 0x512D, 0x512F, 0x5131, 0x5133, 0x5134, -/* 0208 */ 0x5135, 0x5138, 0x5139, 0x5142, 0x514A, 0x514F, 0x5153, 0x5155, -/* 0210 */ 0x5157, 0x5158, 0x515F, 0x5164, 0x5166, 0x517E, 0x5183, 0x5184, -/* 0218 */ 0x518B, 0x518E, 0x5198, 0x519D, 0x51A1, 0x51A3, 0x51AD, 0x51B8, -/* 0220 */ 0x51BA, 0x51BC, 0x51BE, 0x51BF, 0x51C2, 0x51C8, 0x51CF, 0x51D1, -/* 0228 */ 0x51D2, 0x51D3, 0x51D5, 0x51D8, 0x51DE, 0x51E2, 0x51E5, 0x51EE, -/* 0230 */ 0x51F2, 0x51F3, 0x51F4, 0x51F7, 0x5201, 0x5202, 0x5205, 0x5212, -/* 0238 */ 0x5213, 0x5215, 0x5216, 0x5218, 0x5222, 0x5228, 0x5231, 0x5232, -/* 0240 */ 0x5235, 0x523C, 0x5245, 0x5249, 0x5255, 0x5257, 0x5258, 0x525A, -/* 0248 */ 0x525C, 0x525F, 0x5260, 0x5261, 0x5266, 0x526E, 0x5277, 0x5278, -/* 0250 */ 0x5279, 0x5280, 0x5282, 0x5285, 0x528A, 0x528C, 0x5293, 0x5295, -/* 0258 */ 0x5296, 0x5297, 0x5298, 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, -/* 0260 */ 0x52A7, 0x52AF, 0x52B0, 0x52B6, 0x52B7, 0x52B8, 0x52BA, 0x52BB, -/* 0268 */ 0x52BD, 0x52C0, 0x52C4, 0x52C6, 0x52C8, 0x52CC, 0x52CF, 0x52D1, -/* 0270 */ 0x52D4, 0x52D6, 0x52DB, 0x52DC, 0x52E1, 0x52E5, 0x52E8, 0x52E9, -/* 0278 */ 0x52EA, 0x52EC, 0x52F0, 0x52F1, 0x52F4, 0x52F6, 0x52F7, 0x5300, -/* 0280 */ 0x5303, 0x530A, 0x530B, 0x530C, 0x5311, 0x5313, 0x5318, 0x531B, -/* 0288 */ 0x531C, 0x531E, 0x531F, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B, -/* 0290 */ 0x532C, 0x532D, 0x5330, 0x5332, 0x5335, 0x533C, 0x533D, 0x533E, -/* 0298 */ 0x5342, 0x534C, 0x534B, 0x5359, 0x535B, 0x5361, 0x5363, 0x5365, -/* 02A0 */ 0x536C, 0x536D, 0x5372, 0x5379, 0x537E, 0x5383, 0x5387, 0x5388, -/* 02A8 */ 0x538E, 0x5393, 0x5394, 0x5399, 0x539D, 0x53A1, 0x53A4, 0x53AA, -/* 02B0 */ 0x53AB, 0x53AF, 0x53B2, 0x53B4, 0x53B5, 0x53B7, 0x53B8, 0x53BA, -/* 02B8 */ 0x53BD, 0x53C0, 0x53C5, 0x53CF, 0x53D2, 0x53D3, 0x53D5, 0x53DA, -/* 02C0 */ 0x53DD, 0x53DE, 0x53E0, 0x53E6, 0x53E7, 0x53F5, 0x5402, 0x5413, -/* 02C8 */ 0x541A, 0x5421, 0x5427, 0x5428, 0x542A, 0x542F, 0x5431, 0x5434, -/* 02D0 */ 0x5435, 0x5443, 0x5444, 0x5447, 0x544D, 0x544F, 0x545E, 0x5462, -/* 02D8 */ 0x5464, 0x5466, 0x5467, 0x5469, 0x546B, 0x546D, 0x546E, 0x5474, -/* 02E0 */ 0x547F, 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548D, 0x5491, -/* 02E8 */ 0x5495, 0x5496, 0x549C, 0x549F, 0x54A1, 0x54A6, 0x54A7, 0x54A9, -/* 02F0 */ 0x54AA, 0x54AD, 0x54AE, 0x54B1, 0x54B7, 0x54B9, 0x54BA, 0x54BB, -/* 02F8 */ 0x54BF, 0x54C6, 0x54CA, 0x54CD, 0x54CE, 0x54E0, 0x54EA, 0x54EC, -/* 0300 */ 0x54EF, 0x54F6, 0x54FC, 0x54FE, 0x54FF, 0x5500, 0x5501, 0x5505, -/* 0308 */ 0x5508, 0x5509, 0x550C, 0x550D, 0x550E, 0x5515, 0x552A, 0x552B, -/* 0310 */ 0x5532, 0x5535, 0x5536, 0x553B, 0x553C, 0x553D, 0x5541, 0x5547, -/* 0318 */ 0x5549, 0x554A, 0x554D, 0x5550, 0x5551, 0x5558, 0x555A, 0x555B, -/* 0320 */ 0x555E, 0x5560, 0x5561, 0x5564, 0x5566, 0x557F, 0x5581, 0x5582, -/* 0328 */ 0x5586, 0x5588, 0x558E, 0x558F, 0x5591, 0x5592, 0x5593, 0x5594, -/* 0330 */ 0x5597, 0x55A3, 0x55A4, 0x55AD, 0x55B2, 0x55BF, 0x55C1, 0x55C3, -/* 0338 */ 0x55C6, 0x55C9, 0x55CB, 0x55CC, 0x55CE, 0x55D1, 0x55D2, 0x55D3, -/* 0340 */ 0x55D7, 0x55D8, 0x55DB, 0x55DE, 0x55E2, 0x55E9, 0x55F6, 0x55FF, -/* 0348 */ 0x5605, 0x5608, 0x560A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0350 */ 0xFFFD, 0x5619, 0x562C, 0x5630, 0x5633, 0x5635, 0x5637, 0x5639, -/* 0358 */ 0x563B, 0x563C, 0x563D, 0x563F, 0x5640, 0x5641, 0x5643, 0x5644, -/* 0360 */ 0x5646, 0x5649, 0x564B, 0x564D, 0x564F, 0x5654, 0x565E, 0x5660, -/* 0368 */ 0x5661, 0x5662, 0x5663, 0x5666, 0x5669, 0x566D, 0x566F, 0x5671, -/* 0370 */ 0x5672, 0x5675, 0x5684, 0x5685, 0x5688, 0x568B, 0x568C, 0x5695, -/* 0378 */ 0x5699, 0x569A, 0x569D, 0x569E, 0x569F, 0x56A6, 0x56A7, 0x56A8, -/* 0380 */ 0x56A9, 0x56AB, 0x56AC, 0x56AD, 0x56B1, 0x56B3, 0x56B7, 0x56BE, -/* 0388 */ 0x56C5, 0x56C9, 0x56CA, 0x56CB, 0x56CF, 0x56D0, 0x56CC, 0x56CD, -/* 0390 */ 0x56D9, 0x56DC, 0x56DD, 0x56DF, 0x56E1, 0x56E4, 0x56E5, 0x56E6, -/* 0398 */ 0x56E7, 0x56E8, 0x56F1, 0x56EB, 0x56ED, 0x56F6, 0x56F7, 0x5701, -/* 03A0 */ 0x5702, 0x5707, 0x570A, 0x570C, 0x5711, 0x5715, 0x571A, 0x571B, -/* 03A8 */ 0x571D, 0x5720, 0x5722, 0x5723, 0x5724, 0x5725, 0x5729, 0x572A, -/* 03B0 */ 0x572C, 0x572E, 0x572F, 0x5733, 0x5734, 0x573D, 0x573E, 0x573F, -/* 03B8 */ 0x5745, 0x5746, 0x574C, 0x574D, 0x5752, 0x5762, 0x5765, 0x5767, -/* 03C0 */ 0x5768, 0x576B, 0x576D, 0x576E, 0x576F, 0x5770, 0x5771, 0x5773, -/* 03C8 */ 0x5774, 0x5775, 0x5777, 0x5779, 0x577A, 0x577B, 0x577C, 0x577E, -/* 03D0 */ 0x5781, 0x5783, 0x578C, 0x5794, 0x5797, 0x5799, 0x579A, 0x579C, -/* 03D8 */ 0x579D, 0x579E, 0x579F, 0x57A1, 0x5795, 0x57A7, 0x57A8, 0x57A9, -/* 03E0 */ 0x57AC, 0x57B8, 0x57BD, 0x57C7, 0x57C8, 0x57CC, 0x57CF, 0x57D5, -/* 03E8 */ 0x57DD, 0x57DE, 0x57E4, 0x57E6, 0x57E7, 0x57E9, 0x57ED, 0x57F0, -/* 03F0 */ 0x57F5, 0x57F6, 0x57F8, 0x57FD, 0x57FE, 0x57FF, 0x5803, 0x5804, -/* 03F8 */ 0x5808, 0x5809, 0x57E1, 0x580C, 0x580D, 0x581B, 0x581E, 0x581F, -/* 0400 */ 0x5820, 0x5826, 0x5827, 0x582D, 0x5832, 0x5839, 0x583F, 0x5849, -/* 0408 */ 0x584C, 0x584D, 0x584F, 0x5850, 0x5855, 0x585F, 0x5861, 0x5864, -/* 0410 */ 0x5867, 0x5868, 0x5878, 0x587C, 0x587F, 0x5880, 0x5881, 0x5887, -/* 0418 */ 0x5888, 0x5889, 0x588A, 0x588C, 0x588D, 0x588F, 0x5890, 0x5894, -/* 0420 */ 0x5896, 0x589D, 0x58A0, 0x58A1, 0x58A2, 0x58A6, 0x58A9, 0x58B1, -/* 0428 */ 0x58B2, 0x58C4, 0x58BC, 0x58C2, 0x58C8, 0x58CD, 0x58CE, 0x58D0, -/* 0430 */ 0x58D2, 0x58D4, 0x58D6, 0x58DA, 0x58DD, 0x58E1, 0x58E2, 0x58E9, -/* 0438 */ 0x58F3, 0x5905, 0x5906, 0x590B, 0x590C, 0x5912, 0x5913, 0x5914, -/* 0440 */ 0x8641, 0x591D, 0x5921, 0x5923, 0x5924, 0x5928, 0x592F, 0x5930, -/* 0448 */ 0x5933, 0x5935, 0x5936, 0x593F, 0x5943, 0x5946, 0x5952, 0x5953, -/* 0450 */ 0x5959, 0x595B, 0x595D, 0x595E, 0x595F, 0x5961, 0x5963, 0x596B, -/* 0458 */ 0x596D, 0x596F, 0x5972, 0x5975, 0x5976, 0x5979, 0x597B, 0x597C, -/* 0460 */ 0x598B, 0x598C, 0x598E, 0x5992, 0x5995, 0x5997, 0x599F, 0x59A4, -/* 0468 */ 0x59A7, 0x59AD, 0x59AE, 0x59AF, 0x59B0, 0x59B3, 0x59B7, 0x59BA, -/* 0470 */ 0x59BC, 0x59C1, 0x59C3, 0x59C4, 0x59C8, 0x59CA, 0x59CD, 0x59D2, -/* 0478 */ 0x59DD, 0x59DE, 0x59DF, 0x59E3, 0x59E4, 0x59E7, 0x59EE, 0x59EF, -/* 0480 */ 0x59F1, 0x59F2, 0x59F4, 0x59F7, 0x5A00, 0x5A04, 0x5A0C, 0x5A0D, -/* 0488 */ 0x5A0E, 0x5A12, 0x5A13, 0x5A1E, 0x5A23, 0x5A24, 0x5A27, 0x5A28, -/* 0490 */ 0x5A2A, 0x5A2D, 0x5A30, 0x5A44, 0x5A45, 0x5A47, 0x5A48, 0x5A4C, -/* 0498 */ 0x5A50, 0x5A55, 0x5A5E, 0x5A63, 0x5A65, 0x5A67, 0x5A6D, 0x5A77, -/* 04A0 */ 0x5A7A, 0x5A7B, 0x5A7E, 0x5A8B, 0x5A90, 0x5A93, 0x5A96, 0x5A99, -/* 04A8 */ 0x5A9C, 0x5A9E, 0x5A9F, 0x5AA0, 0x5AA2, 0x5AA7, 0x5AAC, 0x5AB1, -/* 04B0 */ 0x5AB2, 0x5AB3, 0x5AB5, 0x5AB8, 0x5ABA, 0x5ABB, 0x5ABF, 0x5AC4, -/* 04B8 */ 0x5AC6, 0x5AC8, 0x5ACF, 0x5ADA, 0x5ADC, 0x5AE0, 0x5AE5, 0x5AEA, -/* 04C0 */ 0x5AEE, 0x5AF5, 0x5AF6, 0x5AFD, 0x5B00, 0x5B01, 0x5B08, 0x5B17, -/* 04C8 */ 0x5B34, 0x5B19, 0x5B1B, 0x5B1D, 0x5B21, 0x5B25, 0x5B2D, 0x5B38, -/* 04D0 */ 0x5B41, 0x5B4B, 0x5B4C, 0x5B52, 0x5B56, 0x5B5E, 0x5B68, 0x5B6E, -/* 04D8 */ 0x5B6F, 0x5B7C, 0x5B7D, 0x5B7E, 0x5B7F, 0x5B81, 0x5B84, 0x5B86, -/* 04E0 */ 0x5B8A, 0x5B8E, 0x5B90, 0x5B91, 0x5B93, 0x5B94, 0x5B96, 0x5BA8, -/* 04E8 */ 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAF, 0x5BB1, 0x5BB2, 0x5BB7, 0x5BBA, -/* 04F0 */ 0x5BBC, 0x5BC0, 0x5BC1, 0x5BCD, 0x5BCF, 0x5BD6, 0x5BD7, 0x5BD8, -/* 04F8 */ 0x5BD9, 0x5BDA, 0x5BE0, 0x5BEF, 0x5BF1, 0x5BF4, 0x5BFD, 0x5C0C, -/* 0500 */ 0x5C17, 0x5C1E, 0x5C1F, 0x5C23, 0x5C26, 0x5C29, 0x5C2B, 0x5C2C, -/* 0508 */ 0x5C2E, 0x5C30, 0x5C32, 0x5C35, 0x5C36, 0x5C59, 0x5C5A, 0x5C5C, -/* 0510 */ 0x5C62, 0x5C63, 0x5C67, 0x5C68, 0x5C69, 0x5C6D, 0x5C70, 0x5C74, -/* 0518 */ 0x5C75, 0x5C7A, 0x5C7B, 0x5C7C, 0x5C7D, 0x5C87, 0x5C88, 0x5C8A, -/* 0520 */ 0x5C8F, 0x5C92, 0x5C9D, 0x5C9F, 0x5CA0, 0x5CA2, 0x5CA3, 0x5CA6, -/* 0528 */ 0x5CAA, 0x5CB2, 0x5CB4, 0x5CB5, 0x5CBA, 0x5CC9, 0x5CCB, 0x5CD2, -/* 0530 */ 0x5CDD, 0x5CD7, 0x5CEE, 0x5CF1, 0x5CF2, 0x5CF4, 0x5D01, 0x5D06, -/* 0538 */ 0x5D0D, 0x5D12, 0x5D2B, 0x5D23, 0x5D24, 0x5D26, 0x5D27, 0x5D31, -/* 0540 */ 0x5D34, 0x5D39, 0x5D3D, 0x5D3F, 0x5D42, 0x5D43, 0x5D46, 0x5D48, -/* 0548 */ 0x5D55, 0x5D51, 0x5D59, 0x5D4A, 0x5D5F, 0x5D60, 0x5D61, 0x5D62, -/* 0550 */ 0x5D64, 0x5D6A, 0x5D6D, 0x5D70, 0x5D79, 0x5D7A, 0x5D7E, 0x5D7F, -/* 0558 */ 0x5D81, 0x5D83, 0x5D88, 0x5D8A, 0x5D92, 0x5D93, 0x5D94, 0x5D95, -/* 0560 */ 0x5D99, 0x5D9B, 0x5D9F, 0x5DA0, 0x5DA7, 0x5DAB, 0x5DB0, 0x5DB4, -/* 0568 */ 0x5DB8, 0x5DB9, 0x5DC3, 0x5DC7, 0x5DCB, 0x5DD0, 0x5DCE, 0x5DD8, -/* 0570 */ 0x5DD9, 0x5DE0, 0x5DE4, 0x5DE9, 0x5DF8, 0x5DF9, 0x5E00, 0x5E07, -/* 0578 */ 0x5E0D, 0x5E12, 0x5E14, 0x5E15, 0x5E18, 0x5E1F, 0x5E20, 0x5E2E, -/* 0580 */ 0x5E28, 0x5E32, 0x5E35, 0x5E3E, 0x5E4B, 0x5E50, 0x5E49, 0x5E51, -/* 0588 */ 0x5E56, 0x5E58, 0x5E5B, 0x5E5C, 0x5E5E, 0x5E68, 0x5E6A, 0x5E6B, -/* 0590 */ 0x5E6C, 0x5E6D, 0x5E6E, 0x5E70, 0x5E80, 0x5E8B, 0x5E8E, 0x5EA2, -/* 0598 */ 0x5EA4, 0x5EA5, 0x5EA8, 0x5EAA, 0x5EAC, 0x5EB1, 0x5EB3, 0x5EBD, -/* 05A0 */ 0x5EBE, 0x5EBF, 0x5EC6, 0x5ECC, 0x5ECB, 0x5ECE, 0x5ED1, 0x5ED2, -/* 05A8 */ 0x5ED4, 0x5ED5, 0x5EDC, 0x5EDE, 0x5EE5, 0x5EEB, 0x5F02, 0x5F06, -/* 05B0 */ 0x5F07, 0x5F08, 0x5F0E, 0x5F19, 0x5F1C, 0x5F1D, 0x5F21, 0x5F22, -/* 05B8 */ 0x5F23, 0x5F24, 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, 0x5F30, 0x5F34, -/* 05C0 */ 0x5F36, 0x5F3B, 0x5F3D, 0x5F3F, 0x5F40, 0x5F44, 0x5F45, 0x5F47, -/* 05C8 */ 0x5F4D, 0x5F50, 0x5F54, 0x5F58, 0x5F5B, 0x5F60, 0x5F63, 0x5F64, -/* 05D0 */ 0x5F67, 0x5F6F, 0x5F72, 0x5F74, 0x5F75, 0x5F78, 0x5F7A, 0x5F7D, -/* 05D8 */ 0x5F7E, 0x5F89, 0x5F8D, 0x5F8F, 0x5F96, 0x5F9C, 0x5F9D, 0x5FA2, -/* 05E0 */ 0x5FA7, 0x5FAB, 0x5FA4, 0x5FAC, 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB8, -/* 05E8 */ 0x5FC4, 0x5FC7, 0x5FC8, 0x5FC9, 0x5FCB, 0x5FD0, 0x5FD1, 0x5FD2, -/* 05F0 */ 0x5FD3, 0x5FD4, 0x5FDE, 0x5FE1, 0x5FE2, 0x5FE8, 0x5FE9, 0x5FEA, -/* 05F8 */ 0x5FEC, 0x5FED, 0x5FEE, 0x5FEF, 0x5FF2, 0x5FF3, 0x5FF6, 0x5FFA, -/* 0600 */ 0x5FFC, 0x6007, 0x600A, 0x600D, 0x6013, 0x6014, 0x6017, 0x6018, -/* 0608 */ 0x601A, 0x601F, 0x6024, 0x602D, 0x6033, 0x6035, 0x6040, 0x6047, -/* 0610 */ 0x6048, 0x6049, 0x604C, 0x6051, 0x6054, 0x6056, 0x6057, 0x605D, -/* 0618 */ 0x6061, 0x6067, 0x6071, 0x607E, 0x607F, 0x6082, 0x6086, 0x6088, -/* 0620 */ 0x608A, 0x608E, 0x6091, 0x6093, 0x6095, 0x6098, 0x609D, 0x609E, -/* 0628 */ 0x60A2, 0x60A4, 0x60A5, 0x60A8, 0x60B0, 0x60B1, 0x60B7, 0x60BB, -/* 0630 */ 0x60BE, 0x60C2, 0x60C4, 0x60C8, 0x60C9, 0x60CA, 0x60CB, 0x60CE, -/* 0638 */ 0x60CF, 0x60D4, 0x60D5, 0x60D9, 0x60DB, 0x60DD, 0x60DE, 0x60E2, -/* 0640 */ 0x60E5, 0x60F2, 0x60F5, 0x60F8, 0x60FC, 0x60FD, 0x6102, 0x6107, -/* 0648 */ 0x610A, 0x610C, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, -/* 0650 */ 0x6117, 0x6119, 0x611C, 0x611E, 0x6122, 0x612A, 0x612B, 0x6130, -/* 0658 */ 0x6131, 0x6135, 0x6136, 0x6137, 0x6139, 0x6141, 0x6145, 0x6146, -/* 0660 */ 0x6149, 0x615E, 0x6160, 0x616C, 0x6172, 0x6178, 0x617B, 0x617C, -/* 0668 */ 0x617F, 0x6180, 0x6181, 0x6183, 0x6184, 0x618B, 0x618D, 0x6192, -/* 0670 */ 0x6193, 0x6197, 0x6198, 0x619C, 0x619D, 0x619F, 0x61A0, 0x61A5, -/* 0678 */ 0x61A8, 0x61AA, 0x61AD, 0x61B8, 0x61B9, 0x61BC, 0x61C0, 0x61C1, -/* 0680 */ 0x61C2, 0x61CE, 0x61CF, 0x61D5, 0x61DC, 0x61DD, 0x61DE, 0x61DF, -/* 0688 */ 0x61E1, 0x61E2, 0x61E7, 0x61E9, 0x61E5, 0x61EC, 0x61ED, 0x61EF, -/* 0690 */ 0x6201, 0x6203, 0x6204, 0x6207, 0x6213, 0x6215, 0x621C, 0x6220, -/* 0698 */ 0x6222, 0x6223, 0x6227, 0x6229, 0x622B, 0x6239, 0x623D, 0x6242, -/* 06A0 */ 0x6243, 0x6244, 0x6246, 0x624C, 0x6250, 0x6251, 0x6252, 0x6254, -/* 06A8 */ 0x6256, 0x625A, 0x625C, 0x6264, 0x626D, 0x626F, 0x6273, 0x627A, -/* 06B0 */ 0x627D, 0x628D, 0x628E, 0x628F, 0x6290, 0x62A6, 0x62A8, 0x62B3, -/* 06B8 */ 0x62B6, 0x62B7, 0x62BA, 0x62BE, 0x62BF, 0x62C4, 0x62CE, 0x62D5, -/* 06C0 */ 0x62D6, 0x62DA, 0x62EA, 0x62F2, 0x62F4, 0x62FC, 0x62FD, 0x6303, -/* 06C8 */ 0x6304, 0x630A, 0x630B, 0x630D, 0x6310, 0x6313, 0x6316, 0x6318, -/* 06D0 */ 0x6329, 0x632A, 0x632D, 0x6335, 0x6336, 0x6339, 0x633C, 0x6341, -/* 06D8 */ 0x6342, 0x6343, 0x6344, 0x6346, 0x634A, 0x634B, 0x634E, 0x6352, -/* 06E0 */ 0x6353, 0x6354, 0x6358, 0x635B, 0x6365, 0x6366, 0x636C, 0x636D, -/* 06E8 */ 0x6371, 0x6374, 0x6375, 0x6378, 0x637C, 0x637D, 0x637F, 0x6382, -/* 06F0 */ 0x6384, 0x6387, 0x638A, 0x6390, 0x6394, 0x6395, 0x6399, 0x639A, -/* 06F8 */ 0x639E, 0x63A4, 0x63A6, 0x63AD, 0x63AE, 0x63AF, 0x63BD, 0x63C1, -/* 0700 */ 0x63C5, 0x63C8, 0x63CE, 0x63D1, 0x63D3, 0x63D4, 0x63D5, 0x63DC, -/* 0708 */ 0x63E0, 0x63E5, 0x63EA, 0x63EC, 0x63F2, 0x63F3, 0x63F5, 0x63F8, -/* 0710 */ 0x63F9, 0x6409, 0x640A, 0x6410, 0x6412, 0x6414, 0x6418, 0x641E, -/* 0718 */ 0x6420, 0x6422, 0x6424, 0x6425, 0x6429, 0x642A, 0x642F, 0x6430, -/* 0720 */ 0x6435, 0x643D, 0x643F, 0x644B, 0x644F, 0x6451, 0x6452, 0x6453, -/* 0728 */ 0x6454, 0x645A, 0x645B, 0x645C, 0x645D, 0x645F, 0x6460, 0x6461, -/* 0730 */ 0x6463, 0x646D, 0x6473, 0x6474, 0x647B, 0x647D, 0x6485, 0x6487, -/* 0738 */ 0x648F, 0x6490, 0x6491, 0x6498, 0x6499, 0x649B, 0x649D, 0x649F, -/* 0740 */ 0x64A1, 0x64A3, 0x64A6, 0x64A8, 0x64AC, 0x64B3, 0x64BD, 0x64BE, -/* 0748 */ 0x64BF, 0x64C4, 0x64C9, 0x64CA, 0x64CB, 0x64CC, 0x64CE, 0x64D0, -/* 0750 */ 0x64D1, 0x64D5, 0x64D7, 0x64E4, 0x64E5, 0x64E9, 0x64EA, 0x64ED, -/* 0758 */ 0x64F0, 0x64F5, 0x64F7, 0x64FB, 0x64FF, 0x6501, 0x6504, 0x6508, -/* 0760 */ 0x6509, 0x650A, 0x650F, 0x6513, 0x6514, 0x6516, 0x6519, 0x651B, -/* 0768 */ 0x651E, 0x651F, 0x6522, 0x6526, 0x6529, 0x652E, 0x6531, 0x653A, -/* 0770 */ 0x653C, 0x653D, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554, -/* 0778 */ 0x655F, 0x6560, 0x6567, 0x656B, 0x657A, 0x657D, 0x6581, 0x6585, -/* 0780 */ 0x658A, 0x6592, 0x6595, 0x6598, 0x659D, 0x65A0, 0x65A3, 0x65A6, -/* 0788 */ 0x65AE, 0x65B2, 0x65B3, 0x65B4, 0x65BF, 0x65C2, 0x65C8, 0x65C9, -/* 0790 */ 0x65CE, 0x65D0, 0x65D4, 0x65D6, 0x65D8, 0x65DF, 0x65F0, 0x65F2, -/* 0798 */ 0x65F4, 0x65F5, 0x65F9, 0x65FE, 0x65FF, 0x6600, 0x6604, 0x6608, -/* 07A0 */ 0x6609, 0x660D, 0x6611, 0x6612, 0x6615, 0x6616, 0x661D, 0x661E, -/* 07A8 */ 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662A, 0x662B, -/* 07B0 */ 0x662C, 0x662E, 0x6630, 0x6631, 0x6633, 0x6639, 0x6637, 0x6640, -/* 07B8 */ 0x6645, 0x6646, 0x664A, 0x664C, 0x6651, 0x664E, 0x6657, 0x6658, -/* 07C0 */ 0x6659, 0x665B, 0x665C, 0x6660, 0x6661, 0x66FB, 0x666A, 0x666B, -/* 07C8 */ 0x666C, 0x667E, 0x6673, 0x6675, 0x667F, 0x6677, 0x6678, 0x6679, -/* 07D0 */ 0x667B, 0x6680, 0x667C, 0x668B, 0x668C, 0x668D, 0x6690, 0x6692, -/* 07D8 */ 0x6699, 0x669A, 0x669B, 0x669C, 0x669F, 0x66A0, 0x66A4, 0x66AD, -/* 07E0 */ 0x66B1, 0x66B2, 0x66B5, 0x66BB, 0x66BF, 0x66C0, 0x66C2, 0x66C3, -/* 07E8 */ 0x66C8, 0x66CC, 0x66CE, 0x66CF, 0x66D4, 0x66DB, 0x66DF, 0x66E8, -/* 07F0 */ 0x66EB, 0x66EC, 0x66EE, 0x66FA, 0x6705, 0x6707, 0x670E, 0x6713, -/* 07F8 */ 0x6719, 0x671C, 0x6720, 0x6722, 0x6733, 0x673E, 0x6745, 0x6747, -/* 0800 */ 0x6748, 0x674C, 0x6754, 0x6755, 0x675D, 0x6766, 0x676C, 0x676E, -/* 0808 */ 0x6774, 0x6776, 0x677B, 0x6781, 0x6784, 0x678E, 0x678F, 0x6791, -/* 0810 */ 0x6793, 0x6796, 0x6798, 0x6799, 0x679B, 0x67B0, 0x67B1, 0x67B2, -/* 0818 */ 0x67B5, 0x67BB, 0x67BC, 0x67BD, 0x67F9, 0x67C0, 0x67C2, 0x67C3, -/* 0820 */ 0x67C5, 0x67C8, 0x67C9, 0x67D2, 0x67D7, 0x67D9, 0x67DC, 0x67E1, -/* 0828 */ 0x67E6, 0x67F0, 0x67F2, 0x67F6, 0x67F7, 0x6852, 0x6814, 0x6819, -/* 0830 */ 0x681D, 0x681F, 0x6828, 0x6827, 0x682C, 0x682D, 0x682F, 0x6830, -/* 0838 */ 0x6831, 0x6833, 0x683B, 0x683F, 0x6844, 0x6845, 0x684A, 0x684C, -/* 0840 */ 0x6855, 0x6857, 0x6858, 0x685B, 0x686B, 0x686E, 0x686F, 0x6870, -/* 0848 */ 0x6871, 0x6872, 0x6875, 0x6879, 0x687A, 0x687B, 0x687C, 0x6882, -/* 0850 */ 0x6884, 0x6886, 0x6888, 0x6896, 0x6898, 0x689A, 0x689C, 0x68A1, -/* 0858 */ 0x68A3, 0x68A5, 0x68A9, 0x68AA, 0x68AE, 0x68B2, 0x68BB, 0x68C5, -/* 0860 */ 0x68C8, 0x68CC, 0x68CF, 0x68D0, 0x68D1, 0x68D3, 0x68D6, 0x68D9, -/* 0868 */ 0x68DC, 0x68DD, 0x68E5, 0x68E8, 0x68EA, 0x68EB, 0x68EC, 0x68ED, -/* 0870 */ 0x68F0, 0x68F1, 0x68F5, 0x68F6, 0x68FB, 0x68FC, 0x68FD, 0x6906, -/* 0878 */ 0x6909, 0x690A, 0x6910, 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, -/* 0880 */ 0x6933, 0x6935, 0x6938, 0x693B, 0x6942, 0x6945, 0x6949, 0x694E, -/* 0888 */ 0x6957, 0x695B, 0x6963, 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, -/* 0890 */ 0x696C, 0x6970, 0x6971, 0x6972, 0x697A, 0x697B, 0x697F, 0x6980, -/* 0898 */ 0x698D, 0x6992, 0x6996, 0x6998, 0x69A1, 0x69A5, 0x69A6, 0x69A8, -/* 08A0 */ 0x69AB, 0x69AD, 0x69AF, 0x69B7, 0x69B8, 0x69BA, 0x69BC, 0x69C5, -/* 08A8 */ 0x69C8, 0x69D1, 0x69D6, 0x69D7, 0x69E2, 0x69E5, 0x69EE, 0x69EF, -/* 08B0 */ 0x69F1, 0x69F3, 0x69F5, 0x69FE, 0x6A00, 0x6A01, 0x6A03, 0x6A0F, -/* 08B8 */ 0x6A11, 0x6A15, 0x6A1A, 0x6A1D, 0x6A20, 0x6A24, 0x6A28, 0x6A30, -/* 08C0 */ 0x6A32, 0x6A34, 0x6A37, 0x6A3B, 0x6A3E, 0x6A3F, 0x6A45, 0x6A46, -/* 08C8 */ 0x6A49, 0x6A4A, 0x6A4E, 0x6A50, 0x6A51, 0x6A52, 0x6A55, 0x6A56, -/* 08D0 */ 0x6A5B, 0x6A64, 0x6A67, 0x6A6A, 0x6A71, 0x6A73, 0x6A7E, 0x6A81, -/* 08D8 */ 0x6A83, 0x6A86, 0x6A87, 0x6A89, 0x6A8B, 0x6A91, 0x6A9B, 0x6A9D, -/* 08E0 */ 0x6A9E, 0x6A9F, 0x6AA5, 0x6AAB, 0x6AAF, 0x6AB0, 0x6AB1, 0x6AB4, -/* 08E8 */ 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC6, 0x6AC9, 0x6AC8, 0x6ACC, 0x6AD0, -/* 08F0 */ 0x6AD4, 0x6AD5, 0x6AD6, 0x6ADC, 0x6ADD, 0x6AE4, 0x6AE7, 0x6AEC, -/* 08F8 */ 0x6AF0, 0x6AF1, 0x6AF2, 0x6AFC, 0x6AFD, 0x6B02, 0x6B03, 0x6B06, -/* 0900 */ 0x6B07, 0x6B09, 0x6B0F, 0x6B10, 0x6B11, 0x6B17, 0x6B1B, 0x6B1E, -/* 0908 */ 0x6B24, 0x6B28, 0x6B2B, 0x6B2C, 0x6B2F, 0x6B35, 0x6B36, 0x6B3B, -/* 0910 */ 0x6B3F, 0x6B46, 0x6B4A, 0x6B4D, 0x6B52, 0x6B56, 0x6B58, 0x6B5D, -/* 0918 */ 0x6B60, 0x6B67, 0x6B6B, 0x6B6E, 0x6B70, 0x6B75, 0x6B7D, 0x6B7E, -/* 0920 */ 0x6B82, 0x6B85, 0x6B97, 0x6B9B, 0x6B9F, 0x6BA0, 0x6BA2, 0x6BA3, -/* 0928 */ 0x6BA8, 0x6BA9, 0x6BAC, 0x6BAD, 0x6BAE, 0x6BB0, 0x6BB8, 0x6BB9, -/* 0930 */ 0x6BBD, 0x6BBE, 0x6BC3, 0x6BC4, 0x6BC9, 0x6BCC, 0x6BD6, 0x6BDA, -/* 0938 */ 0x6BE1, 0x6BE3, 0x6BE6, 0x6BE7, 0x6BEE, 0x6BF1, 0x6BF7, 0x6BF9, -/* 0940 */ 0x6BFF, 0x6C02, 0x6C04, 0x6C05, 0x6C09, 0x6C0D, 0x6C0E, 0x6C10, -/* 0948 */ 0x6C12, 0x6C19, 0x6C1F, 0x6C26, 0x6C27, 0x6C28, 0x6C2C, 0x6C2E, -/* 0950 */ 0x6C33, 0x6C35, 0x6C36, 0x6C3A, 0x6C3B, 0x6C3F, 0x6C4A, 0x6C4B, -/* 0958 */ 0x6C4D, 0x6C4F, 0x6C52, 0x6C54, 0x6C59, 0x6C5B, 0x6C5C, 0x6C6B, -/* 0960 */ 0x6C6D, 0x6C6F, 0x6C74, 0x6C76, 0x6C78, 0x6C79, 0x6C7B, 0x6C85, -/* 0968 */ 0x6C86, 0x6C87, 0x6C89, 0x6C94, 0x6C95, 0x6C97, 0x6C98, 0x6C9C, -/* 0970 */ 0x6C9F, 0x6CB0, 0x6CB2, 0x6CB4, 0x6CC2, 0x6CC6, 0x6CCD, 0x6CCF, -/* 0978 */ 0x6CD0, 0x6CD1, 0x6CD2, 0x6CD4, 0x6CD6, 0x6CDA, 0x6CDC, 0x6CE0, -/* 0980 */ 0x6CE7, 0x6CE9, 0x6CEB, 0x6CEC, 0x6CEE, 0x6CF2, 0x6CF4, 0x6D04, -/* 0988 */ 0x6D07, 0x6D0A, 0x6D0E, 0x6D0F, 0x6D11, 0x6D13, 0x6D1A, 0x6D26, -/* 0990 */ 0x6D27, 0x6D28, 0x6C67, 0x6D2E, 0x6D2F, 0x6D31, 0x6D39, 0x6D3C, -/* 0998 */ 0x6D3F, 0x6D57, 0x6D5E, 0x6D5F, 0x6D61, 0x6D65, 0x6D67, 0x6D6F, -/* 09A0 */ 0x6D70, 0x6D7C, 0x6D82, 0x6D87, 0x6D91, 0x6D92, 0x6D94, 0x6D96, -/* 09A8 */ 0x6D97, 0x6D98, 0x6DAA, 0x6DAC, 0x6DB4, 0x6DB7, 0x6DB9, 0x6DBD, -/* 09B0 */ 0x6DBF, 0x6DC4, 0x6DC8, 0x6DCA, 0x6DCE, 0x6DCF, 0x6DD6, 0x6DDB, -/* 09B8 */ 0x6DDD, 0x6DDF, 0x6DE0, 0x6DE2, 0x6DE5, 0x6DE9, 0x6DEF, 0x6DF0, -/* 09C0 */ 0x6DF4, 0x6DF6, 0x6DFC, 0x6E00, 0x6E04, 0x6E1E, 0x6E22, 0x6E27, -/* 09C8 */ 0x6E32, 0x6E36, 0x6E39, 0x6E3B, 0x6E3C, 0x6E44, 0x6E45, 0x6E48, -/* 09D0 */ 0x6E49, 0x6E4B, 0x6E4F, 0x6E51, 0x6E52, 0x6E53, 0x6E54, 0x6E57, -/* 09D8 */ 0x6E5C, 0x6E5D, 0x6E5E, 0x6E62, 0x6E63, 0x6E68, 0x6E73, 0x6E7B, -/* 09E0 */ 0x6E7D, 0x6E8D, 0x6E93, 0x6E99, 0x6EA0, 0x6EA7, 0x6EAD, 0x6EAE, -/* 09E8 */ 0x6EB1, 0x6EB3, 0x6EBB, 0x6EBF, 0x6EC0, 0x6EC1, 0x6EC3, 0x6EC7, -/* 09F0 */ 0x6EC8, 0x6ECA, 0x6ECD, 0x6ECE, 0x6ECF, 0x6EEB, 0x6EED, 0x6EEE, -/* 09F8 */ 0x6EF9, 0x6EFB, 0x6EFD, 0x6F04, 0x6F08, 0x6F0A, 0x6F0C, 0x6F0D, -/* 0A00 */ 0x6F16, 0x6F18, 0x6F1A, 0x6F1B, 0x6F26, 0x6F29, 0x6F2A, 0x6F2F, -/* 0A08 */ 0x6F30, 0x6F33, 0x6F36, 0x6F3B, 0x6F3C, 0x6F2D, 0x6F4F, 0x6F51, -/* 0A10 */ 0x6F52, 0x6F53, 0x6F57, 0x6F59, 0x6F5A, 0x6F5D, 0x6F5E, 0x6F61, -/* 0A18 */ 0x6F62, 0x6F68, 0x6F6C, 0x6F7D, 0x6F7E, 0x6F83, 0x6F87, 0x6F88, -/* 0A20 */ 0x6F8B, 0x6F8C, 0x6F8D, 0x6F90, 0x6F92, 0x6F93, 0x6F94, 0x6F96, -/* 0A28 */ 0x6F9A, 0x6F9F, 0x6FA0, 0x6FA5, 0x6FA6, 0x6FA7, 0x6FA8, 0x6FAE, -/* 0A30 */ 0x6FAF, 0x6FB0, 0x6FB5, 0x6FB6, 0x6FBC, 0x6FC5, 0x6FC7, 0x6FC8, -/* 0A38 */ 0x6FCA, 0x6FDA, 0x6FDE, 0x6FE8, 0x6FE9, 0x6FF0, 0x6FF5, 0x6FF9, -/* 0A40 */ 0x6FFC, 0x6FFD, 0x7000, 0x7005, 0x7006, 0x7007, 0x700D, 0x7017, -/* 0A48 */ 0x7020, 0x7023, 0x702F, 0x7034, 0x7037, 0x7039, 0x703C, 0x7043, -/* 0A50 */ 0x7044, 0x7048, 0x7049, 0x704A, 0x704B, 0x7054, 0x7055, 0x705D, -/* 0A58 */ 0x705E, 0x704E, 0x7064, 0x7065, 0x706C, 0x706E, 0x7075, 0x7076, -/* 0A60 */ 0x707E, 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097, -/* 0A68 */ 0x7098, 0x709B, 0x70A4, 0x70AB, 0x70B0, 0x70B1, 0x70B4, 0x70B7, -/* 0A70 */ 0x70CA, 0x70D1, 0x70D3, 0x70D4, 0x70D5, 0x70D6, 0x70D8, 0x70DC, -/* 0A78 */ 0x70E4, 0x70FA, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710B, -/* 0A80 */ 0x710C, 0x710F, 0x711E, 0x7120, 0x712B, 0x712D, 0x712F, 0x7130, -/* 0A88 */ 0x7131, 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714A, 0x714B, -/* 0A90 */ 0x7150, 0x7152, 0x7157, 0x715A, 0x715C, 0x715E, 0x7160, 0x7168, -/* 0A98 */ 0x7179, 0x7180, 0x7185, 0x7187, 0x718C, 0x7192, 0x719A, 0x719B, -/* 0AA0 */ 0x71A0, 0x71A2, 0x71AF, 0x71B0, 0x71B2, 0x71B3, 0x71BA, 0x71BF, -/* 0AA8 */ 0x71C0, 0x71C1, 0x71C4, 0x71CB, 0x71CC, 0x71D3, 0x71D6, 0x71D9, -/* 0AB0 */ 0x71DA, 0x71DC, 0x71F8, 0x71FE, 0x7200, 0x7207, 0x7208, 0x7209, -/* 0AB8 */ 0x7213, 0x7217, 0x721A, 0x721D, 0x721F, 0x7224, 0x722B, 0x722F, -/* 0AC0 */ 0x7234, 0x7238, 0x7239, 0x7241, 0x7242, 0x7243, 0x7245, 0x724E, -/* 0AC8 */ 0x724F, 0x7250, 0x7253, 0x7255, 0x7256, 0x725A, 0x725C, 0x725E, -/* 0AD0 */ 0x7260, 0x7263, 0x7268, 0x726B, 0x726E, 0x726F, 0x7271, 0x7277, -/* 0AD8 */ 0x7278, 0x727B, 0x727C, 0x727F, 0x7284, 0x7289, 0x728D, 0x728E, -/* 0AE0 */ 0x7293, 0x729B, 0x72A8, 0x72AD, 0x72AE, 0x72B1, 0x72B4, 0x72BE, -/* 0AE8 */ 0x72C1, 0x72C7, 0x72C9, 0x72CC, 0x72D5, 0x72D6, 0x72D8, 0x72DF, -/* 0AF0 */ 0x72E5, 0x72F3, 0x72F4, 0x72FA, 0x72FB, 0x72FE, 0x7302, 0x7304, -/* 0AF8 */ 0x7305, 0x7307, 0x730B, 0x730D, 0x7312, 0x7313, 0x7318, 0x7319, -/* 0B00 */ 0x731E, 0x7322, 0x7324, 0x7327, 0x7328, 0x732C, 0x7331, 0x7332, -/* 0B08 */ 0x7335, 0x733A, 0x733B, 0x733D, 0x7343, 0x734D, 0x7350, 0x7352, -/* 0B10 */ 0x7356, 0x7358, 0x735D, 0x735E, 0x735F, 0x7360, 0x7366, 0x7367, -/* 0B18 */ 0x7369, 0x736B, 0x736C, 0x736E, 0x736F, 0x7371, 0x7377, 0x7379, -/* 0B20 */ 0x737C, 0x7380, 0x7381, 0x7383, 0x7385, 0x7386, 0x738E, 0x7390, -/* 0B28 */ 0x7393, 0x7395, 0x7397, 0x7398, 0x739C, 0x739E, 0x739F, 0x73A0, -/* 0B30 */ 0x73A2, 0x73A5, 0x73A6, 0x73AA, 0x73AB, 0x73AD, 0x73B5, 0x73B7, -/* 0B38 */ 0x73B9, 0x73BC, 0x73BD, 0x73BF, 0x73C5, 0x73C6, 0x73C9, 0x73CB, -/* 0B40 */ 0x73CC, 0x73CF, 0x73D2, 0x73D3, 0x73D6, 0x73D9, 0x73DD, 0x73E1, -/* 0B48 */ 0x73E3, 0x73E6, 0x73E7, 0x73E9, 0x73F4, 0x73F5, 0x73F7, 0x73F9, -/* 0B50 */ 0x73FA, 0x73FB, 0x73FD, 0x73FF, 0x7400, 0x7401, 0x7404, 0x7407, -/* 0B58 */ 0x740A, 0x7411, 0x741A, 0x741B, 0x7424, 0x7426, 0xFFFD, 0xFFFD, -/* 0B60 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0B68 */ 0x7439, 0x7440, 0x7443, 0x7444, 0x7446, 0x7447, 0x744B, 0x744D, -/* 0B70 */ 0x7451, 0x7452, 0x7457, 0x745D, 0x7462, 0x7466, 0x7467, 0x7468, -/* 0B78 */ 0x746B, 0x746D, 0x746E, 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, -/* 0B80 */ 0x7486, 0x7487, 0x7489, 0x748F, 0x7490, 0x7491, 0x7492, 0x7498, -/* 0B88 */ 0x7499, 0x749A, 0x749C, 0x749F, 0x74A0, 0x74A1, 0x74A3, 0x74A6, -/* 0B90 */ 0x74A8, 0x74A9, 0x74AA, 0x74AB, 0x74AE, 0x74AF, 0x74B1, 0x74B2, -/* 0B98 */ 0x74B5, 0x74B9, 0x74BB, 0x74BF, 0x74C8, 0x74C9, 0x74CC, 0x74D0, -/* 0BA0 */ 0x74D3, 0x74D8, 0x74DA, 0x74DB, 0x74DE, 0x74DF, 0x74E4, 0x74E8, -/* 0BA8 */ 0x74EA, 0x74EB, 0x74EF, 0x74F4, 0x74FA, 0x74FB, 0x74FC, 0x74FF, -/* 0BB0 */ 0x7506, 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527, -/* 0BB8 */ 0x7529, 0x752A, 0x752F, 0x7536, 0x7539, 0x753D, 0x753E, 0x753F, -/* 0BC0 */ 0x7540, 0x7543, 0x7547, 0x7548, 0x754E, 0x7550, 0x7552, 0x7557, -/* 0BC8 */ 0x755E, 0x755F, 0x7561, 0x756F, 0x7571, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0BD0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593, -/* 0BD8 */ 0x7595, 0x7599, 0x759C, 0x75A2, 0x75A4, 0x75B4, 0x75BA, 0x75BF, -/* 0BE0 */ 0x75C0, 0x75C1, 0x75C4, 0x75C6, 0x75CC, 0x75CE, 0x75CF, 0x75D7, -/* 0BE8 */ 0x75DC, 0x75DF, 0x75E0, 0x75E1, 0x75E4, 0x75E7, 0x75EC, 0x75EE, -/* 0BF0 */ 0x75EF, 0x75F1, 0x75F9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607, -/* 0BF8 */ 0x7608, 0x760A, 0x760C, 0x760F, 0x7612, 0x7613, 0x7615, 0x7616, -/* 0C00 */ 0x7619, 0x761B, 0x761C, 0x761D, 0x761E, 0x7623, 0x7625, 0x7626, -/* 0C08 */ 0x7629, 0x762D, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639, 0x763A, -/* 0C10 */ 0x763C, 0x764A, 0x7640, 0x7641, 0x7643, 0x7644, 0x7645, 0x7649, -/* 0C18 */ 0x764B, 0x7655, 0x7659, 0x765F, 0x7664, 0x7665, 0x766D, 0x766E, -/* 0C20 */ 0x766F, 0x7671, 0x7674, 0x7681, 0x7685, 0x768C, 0x768D, 0x7695, -/* 0C28 */ 0x769B, 0x769C, 0x769D, 0x769F, 0x76A0, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0C30 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x76AA, 0x76AD, 0x76BD, 0x76C1, -/* 0C38 */ 0x76C5, 0x76C9, 0x76CB, 0x76CC, 0x76CE, 0x76D4, 0x76D9, 0x76E0, -/* 0C40 */ 0x76E6, 0x76E8, 0x76EC, 0x76F0, 0x76F1, 0x76F6, 0x76F9, 0x76FC, -/* 0C48 */ 0x7700, 0x7706, 0x770A, 0x770E, 0x7712, 0x7714, 0x7715, 0x7717, -/* 0C50 */ 0x7719, 0x771A, 0x771C, 0x7722, 0x7728, 0x772D, 0x772E, 0x772F, -/* 0C58 */ 0x7734, 0x7735, 0x7736, 0x7739, 0x773D, 0x773E, 0x7742, 0x7745, -/* 0C60 */ 0x7746, 0x774A, 0x774D, 0x774E, 0x774F, 0x7752, 0x7756, 0x7757, -/* 0C68 */ 0x775C, 0x775E, 0x775F, 0x7760, 0x7762, 0x7764, 0x7767, 0x776A, -/* 0C70 */ 0x776C, 0x7770, 0x7772, 0x7773, 0x7774, 0x777A, 0x777D, 0x7780, -/* 0C78 */ 0x7784, 0x778C, 0x778D, 0x7794, 0x7795, 0x7796, 0x779A, 0x779F, -/* 0C80 */ 0x77A2, 0x77A7, 0x77AA, 0x77AE, 0x77AF, 0x77B1, 0x77B5, 0x77BE, -/* 0C88 */ 0x77C3, 0x77C9, 0x77D1, 0x77D2, 0x77D5, 0x77D9, 0x77DE, 0x77DF, -/* 0C90 */ 0x77E0, 0x77E4, 0x77E6, 0x77EA, 0x77EC, 0x77F0, 0x77F1, 0x77F4, -/* 0C98 */ 0x77F8, 0x77FB, 0x7805, 0x7806, 0x7809, 0x780D, 0x780E, 0x7811, -/* 0CA0 */ 0x781D, 0x7821, 0x7822, 0x7823, 0x782D, 0x782E, 0x7830, 0x7835, -/* 0CA8 */ 0x7837, 0x7843, 0x7844, 0x7847, 0x7848, 0x784C, 0x784E, 0x7852, -/* 0CB0 */ 0x785C, 0x785E, 0x7860, 0x7861, 0x7863, 0x7864, 0x7868, 0x786A, -/* 0CB8 */ 0x786E, 0x787A, 0x787E, 0x788A, 0x788F, 0x7894, 0x7898, 0x78A1, -/* 0CC0 */ 0x789D, 0x789E, 0x789F, 0x78A4, 0x78A8, 0x78AC, 0x78AD, 0x78B0, -/* 0CC8 */ 0x78B1, 0x78B2, 0x78B3, 0x78BB, 0x78BD, 0x78BF, 0x78C7, 0x78C8, -/* 0CD0 */ 0x78C9, 0x78CC, 0x78CE, 0x78D2, 0x78D3, 0x78D5, 0x78D6, 0x78E4, -/* 0CD8 */ 0x78DB, 0x78DF, 0x78E0, 0x78E1, 0x78E6, 0x78EA, 0x78F2, 0x78F3, -/* 0CE0 */ 0x7900, 0x78F6, 0x78F7, 0x78FA, 0x78FB, 0x78FF, 0x7906, 0x790C, -/* 0CE8 */ 0x7910, 0x791A, 0x791C, 0x791E, 0x791F, 0x7920, 0x7925, 0x7927, -/* 0CF0 */ 0x7929, 0x792D, 0x7931, 0x7934, 0x7935, 0x793B, 0x793D, 0x793F, -/* 0CF8 */ 0x7944, 0x7945, 0x7946, 0x794A, 0x794B, 0x794F, 0x7951, 0x7954, -/* 0D00 */ 0x7958, 0x795B, 0x795C, 0x7967, 0x7969, 0x796B, 0x7972, 0x7979, -/* 0D08 */ 0x797B, 0x797C, 0x797E, 0x798B, 0x798C, 0x7991, 0x7993, 0x7994, -/* 0D10 */ 0x7995, 0x7996, 0x7998, 0x799B, 0x799C, 0x79A1, 0x79A8, 0x79A9, -/* 0D18 */ 0x79AB, 0x79AF, 0x79B1, 0x79B4, 0x79B8, 0x79BB, 0x79C2, 0x79C4, -/* 0D20 */ 0x79C7, 0x79C8, 0x79CA, 0x79CF, 0x79D4, 0x79D6, 0x79DA, 0x79DD, -/* 0D28 */ 0x79DE, 0x79E0, 0x79E2, 0x79E5, 0x79EA, 0x79EB, 0x79ED, 0x79F1, -/* 0D30 */ 0x79F8, 0x79FC, 0x7A02, 0x7A03, 0x7A07, 0x7A09, 0x7A0A, 0x7A0C, -/* 0D38 */ 0x7A11, 0x7A15, 0x7A1B, 0x7A1E, 0x7A21, 0x7A27, 0x7A2B, 0x7A2D, -/* 0D40 */ 0x7A2F, 0x7A30, 0x7A34, 0x7A35, 0x7A38, 0x7A39, 0x7A3A, 0x7A44, -/* 0D48 */ 0x7A45, 0x7A47, 0x7A48, 0x7A4C, 0x7A55, 0x7A56, 0x7A59, 0x7A5C, -/* 0D50 */ 0x7A5D, 0x7A5F, 0x7A60, 0x7A65, 0x7A67, 0x7A6A, 0x7A6D, 0x7A75, -/* 0D58 */ 0x7A78, 0x7A7E, 0x7A80, 0x7A82, 0x7A85, 0x7A86, 0x7A8A, 0x7A8B, -/* 0D60 */ 0x7A90, 0x7A91, 0x7A94, 0x7A9E, 0x7AA0, 0x7AA3, 0x7AAC, 0x7AB3, -/* 0D68 */ 0x7AB5, 0x7AB9, 0x7ABB, 0x7ABC, 0x7AC6, 0x7AC9, 0x7ACC, 0x7ACE, -/* 0D70 */ 0x7AD1, 0x7ADB, 0x7AE8, 0x7AE9, 0x7AEB, 0x7AEC, 0x7AF1, 0x7AF4, -/* 0D78 */ 0x7AFB, 0x7AFD, 0x7AFE, 0x7B07, 0x7B14, 0x7B1F, 0x7B23, 0x7B27, -/* 0D80 */ 0x7B29, 0x7B2A, 0x7B2B, 0x7B2D, 0x7B2E, 0x7B2F, 0x7B30, 0x7B31, -/* 0D88 */ 0x7B34, 0x7B3D, 0x7B3F, 0x7B40, 0x7B41, 0x7B47, 0x7B4E, 0x7B55, -/* 0D90 */ 0x7B60, 0x7B64, 0x7B66, 0x7B69, 0x7B6A, 0x7B6D, 0x7B6F, 0x7B72, -/* 0D98 */ 0x7B73, 0x7B77, 0x7B84, 0x7B89, 0x7B8E, 0x7B90, 0x7B91, 0x7B96, -/* 0DA0 */ 0x7B9B, 0x7B9E, 0x7BA0, 0x7BA5, 0x7BAC, 0x7BAF, 0x7BB0, 0x7BB2, -/* 0DA8 */ 0x7BB5, 0x7BB6, 0x7BBA, 0x7BBB, 0x7BBC, 0x7BBD, 0x7BC2, 0x7BC5, -/* 0DB0 */ 0x7BC8, 0x7BCA, 0x7BD4, 0x7BD6, 0x7BD7, 0x7BD9, 0x7BDA, 0x7BDB, -/* 0DB8 */ 0x7BE8, 0x7BEA, 0x7BF2, 0x7BF4, 0x7BF5, 0x7BF8, 0x7BF9, 0x7BFA, -/* 0DC0 */ 0x7BFC, 0x7BFE, 0x7C01, 0x7C02, 0x7C03, 0x7C04, 0x7C06, 0x7C09, -/* 0DC8 */ 0x7C0B, 0x7C0C, 0x7C0E, 0x7C0F, 0x7C19, 0x7C1B, 0x7C20, 0x7C25, -/* 0DD0 */ 0x7C26, 0x7C28, 0x7C2C, 0x7C31, 0x7C33, 0x7C34, 0x7C36, 0x7C39, -/* 0DD8 */ 0x7C3A, 0x7C46, 0x7C4A, 0x7C55, 0x7C51, 0x7C52, 0x7C53, 0x7C61, -/* 0DE0 */ 0x7C63, 0x7C67, 0x7C69, 0x7C6D, 0x7C6E, 0x7C70, 0x7C72, 0x7C79, -/* 0DE8 */ 0x7C7C, 0x7C7D, 0x7C86, 0x7C87, 0x7C8F, 0x7C94, 0x7C9E, 0x7CA0, -/* 0DF0 */ 0x7CA6, 0x7CB0, 0x7CB6, 0x7CB7, 0x7CBA, 0x7CBB, 0x7CBC, 0x7CBF, -/* 0DF8 */ 0x7CC4, 0x7CC7, 0x7CC8, 0x7CC9, 0x7CCD, 0x7CCF, 0x7CD3, 0x7CD4, -/* 0E00 */ 0x7CD5, 0x7CD7, 0x7CD9, 0x7CDA, 0x7CDD, 0x7CE6, 0x7CE9, 0x7CEB, -/* 0E08 */ 0x7CF5, 0x7D03, 0x7D07, 0x7D08, 0x7D09, 0x7D0F, 0x7D11, 0x7D12, -/* 0E10 */ 0x7D13, 0x7D16, 0x7D1D, 0x7D1E, 0x7D23, 0x7D26, 0x7D2A, 0x7D2D, -/* 0E18 */ 0x7D31, 0x7D3C, 0x7D3D, 0x7D3E, 0x7D40, 0x7D41, 0x7D47, 0x7D48, -/* 0E20 */ 0x7D4D, 0x7D51, 0x7D53, 0x7D57, 0x7D59, 0x7D5A, 0x7D5C, 0x7D5D, -/* 0E28 */ 0x7D65, 0x7D67, 0x7D6A, 0x7D70, 0x7D78, 0x7D7A, 0x7D7B, 0x7D7F, -/* 0E30 */ 0x7D81, 0x7D82, 0x7D83, 0x7D85, 0x7D86, 0x7D88, 0x7D8B, 0x7D8C, -/* 0E38 */ 0x7D8D, 0x7D91, 0x7D96, 0x7D97, 0x7D9D, 0x7D9E, 0x7DA6, 0x7DA7, -/* 0E40 */ 0x7DAA, 0x7DB3, 0x7DB6, 0x7DB7, 0x7DB9, 0x7DC2, 0x7DC3, 0x7DC4, -/* 0E48 */ 0x7DC5, 0x7DC6, 0x7DCC, 0x7DCD, 0x7DCE, 0x7DD7, 0x7DD9, 0x7E00, -/* 0E50 */ 0x7DE2, 0x7DE5, 0x7DE6, 0x7DEA, 0x7DEB, 0x7DED, 0x7DF1, 0x7DF5, -/* 0E58 */ 0x7DF6, 0x7DF9, 0x7DFA, 0x7E08, 0x7E10, 0x7E11, 0x7E15, 0x7E17, -/* 0E60 */ 0x7E1C, 0x7E1D, 0x7E20, 0x7E27, 0x7E28, 0x7E2C, 0x7E2D, 0x7E2F, -/* 0E68 */ 0x7E33, 0x7E36, 0x7E3F, 0x7E44, 0x7E45, 0x7E47, 0x7E4E, 0x7E50, -/* 0E70 */ 0x7E52, 0x7E58, 0x7E5F, 0x7E61, 0x7E62, 0x7E65, 0x7E6B, 0x7E6E, -/* 0E78 */ 0x7E6F, 0x7E73, 0x7E78, 0x7E7E, 0x7E81, 0x7E86, 0x7E87, 0x7E8A, -/* 0E80 */ 0x7E8D, 0x7E91, 0x7E95, 0x7E98, 0x7E9A, 0x7E9D, 0x7E9E, 0x7F3C, -/* 0E88 */ 0x7F3B, 0x7F3D, 0x7F3E, 0x7F3F, 0x7F43, 0x7F44, 0x7F47, 0x7F4F, -/* 0E90 */ 0x7F52, 0x7F53, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F61, 0x7F63, 0x7F64, -/* 0E98 */ 0x7F65, 0x7F66, 0x7F6D, 0x7F71, 0x7F7D, 0x7F7E, 0x7F7F, 0x7F80, -/* 0EA0 */ 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90, 0x7F91, 0x7F96, 0x7F97, 0x7F9C, -/* 0EA8 */ 0x7FA1, 0x7FA2, 0x7FA6, 0x7FAA, 0x7FAD, 0x7FB4, 0x7FBC, 0x7FBF, -/* 0EB0 */ 0x7FC0, 0x7FC3, 0x7FC8, 0x7FCE, 0x7FCF, 0x7FDB, 0x7FDF, 0x7FE3, -/* 0EB8 */ 0x7FE5, 0x7FE8, 0x7FEC, 0x7FEE, 0x7FEF, 0x7FF2, 0x7FFA, 0x7FFD, -/* 0EC0 */ 0x7FFE, 0x7FFF, 0x8007, 0x8008, 0x800A, 0x800D, 0x800E, 0x800F, -/* 0EC8 */ 0x8011, 0x8013, 0x8014, 0x8016, 0x801D, 0x801E, 0x801F, 0x8020, -/* 0ED0 */ 0x8024, 0x8026, 0x802C, 0x802E, 0x8030, 0x8034, 0x8035, 0x8037, -/* 0ED8 */ 0x8039, 0x803A, 0x803C, 0x803E, 0x8040, 0x8044, 0x8060, 0x8064, -/* 0EE0 */ 0x8066, 0x806D, 0x8071, 0x8075, 0x8081, 0x8088, 0x808E, 0x809C, -/* 0EE8 */ 0x809E, 0x80A6, 0x80A7, 0x80AB, 0x80B8, 0x80B9, 0x80C8, 0x80CD, -/* 0EF0 */ 0x80CF, 0x80D2, 0x80D4, 0x80D5, 0x80D7, 0x80D8, 0x80E0, 0x80ED, -/* 0EF8 */ 0x80EE, 0x80F0, 0x80F2, 0x80F3, 0x80F6, 0x80F9, 0x80FA, 0x80FE, -/* 0F00 */ 0x8103, 0x810B, 0x8116, 0x8117, 0x8118, 0x811C, 0x811E, 0x8120, -/* 0F08 */ 0x8124, 0x8127, 0x812C, 0x8130, 0x8135, 0x813A, 0x813C, 0x8145, -/* 0F10 */ 0x8147, 0x814A, 0x814C, 0x8152, 0x8157, 0x8160, 0x8161, 0x8167, -/* 0F18 */ 0x8168, 0x8169, 0x816D, 0x816F, 0x8177, 0x8181, 0x8190, 0x8184, -/* 0F20 */ 0x8185, 0x8186, 0x818B, 0x818E, 0x8196, 0x8198, 0x819B, 0x819E, -/* 0F28 */ 0x81A2, 0x81AE, 0x81B2, 0x81B4, 0x81BB, 0x81CB, 0x81C3, 0x81C5, -/* 0F30 */ 0x81CA, 0x81CE, 0x81CF, 0x81D5, 0x81D7, 0x81DB, 0x81DD, 0x81DE, -/* 0F38 */ 0x81E1, 0x81E4, 0x81EB, 0x81EC, 0x81F0, 0x81F1, 0x81F2, 0x81F5, -/* 0F40 */ 0x81F6, 0x81F8, 0x81F9, 0x81FD, 0x81FF, 0x8200, 0x8203, 0x820F, -/* 0F48 */ 0x8213, 0x8214, 0x8219, 0x821A, 0x821D, 0x8221, 0x8222, 0x8228, -/* 0F50 */ 0x8232, 0x8234, 0x823A, 0x8243, 0x8244, 0x8245, 0x8246, 0x824B, -/* 0F58 */ 0x824E, 0x824F, 0x8251, 0x8256, 0x825C, 0x8260, 0x8263, 0x8267, -/* 0F60 */ 0x826D, 0x8274, 0x827B, 0x827D, 0x827F, 0x8280, 0x8281, 0x8283, -/* 0F68 */ 0x8284, 0x8287, 0x8289, 0x828A, 0x828E, 0x8291, 0x8294, 0x8296, -/* 0F70 */ 0x8298, 0x829A, 0x829B, 0x82A0, 0x82A1, 0x82A3, 0x82A4, 0x82A7, -/* 0F78 */ 0x82A8, 0x82A9, 0x82AA, 0x82AE, 0x82B0, 0x82B2, 0x82B4, 0x82B7, -/* 0F80 */ 0x82BA, 0x82BC, 0x82BE, 0x82BF, 0x82C6, 0x82D0, 0x82D5, 0x82DA, -/* 0F88 */ 0x82E0, 0x82E2, 0x82E4, 0x82E8, 0x82EA, 0x82ED, 0x82EF, 0x82F6, -/* 0F90 */ 0x82F7, 0x82FD, 0x82FE, 0x8300, 0x8301, 0x8307, 0x8308, 0x830A, -/* 0F98 */ 0x830B, 0x8354, 0x831B, 0x831D, 0x831E, 0x831F, 0x8321, 0x8322, -/* 0FA0 */ 0x832C, 0x832D, 0x832E, 0x8330, 0x8333, 0x8337, 0x833A, 0x833C, -/* 0FA8 */ 0x833D, 0x8342, 0x8343, 0x8344, 0x8347, 0x834D, 0x834E, 0x8351, -/* 0FB0 */ 0x8355, 0x8356, 0x8357, 0x8370, 0x8378, 0x837D, 0x837F, 0x8380, -/* 0FB8 */ 0x8382, 0x8384, 0x8386, 0x838D, 0x8392, 0x8394, 0x8395, 0x8398, -/* 0FC0 */ 0x8399, 0x839B, 0x839C, 0x839D, 0x83A6, 0x83A7, 0x83A9, 0x83AC, -/* 0FC8 */ 0x83BE, 0x83BF, 0x83C0, 0x83C7, 0x83C9, 0x83CF, 0x83D0, 0x83D1, -/* 0FD0 */ 0x83D4, 0x83DD, 0x8353, 0x83E8, 0x83EA, 0x83F6, 0x83F8, 0x83F9, -/* 0FD8 */ 0x83FC, 0x8401, 0x8406, 0x840A, 0x840F, 0x8411, 0x8415, 0x8419, -/* 0FE0 */ 0x83AD, 0x842F, 0x8439, 0x8445, 0x8447, 0x8448, 0x844A, 0x844D, -/* 0FE8 */ 0x844F, 0x8451, 0x8452, 0x8456, 0x8458, 0x8459, 0x845A, 0x845C, -/* 0FF0 */ 0x8460, 0x8464, 0x8465, 0x8467, 0x846A, 0x8470, 0x8473, 0x8474, -/* 0FF8 */ 0x8476, 0x8478, 0x847C, 0x847D, 0x8481, 0x8485, 0x8492, 0x8493, -/* 1000 */ 0x8495, 0x849E, 0x84A6, 0x84A8, 0x84A9, 0x84AA, 0x84AF, 0x84B1, -/* 1008 */ 0x84B4, 0x84BA, 0x84BD, 0x84BE, 0x84C0, 0x84C2, 0x84C7, 0x84C8, -/* 1010 */ 0x84CC, 0x84CF, 0x84D3, 0x84DC, 0x84E7, 0x84EA, 0x84EF, 0x84F0, -/* 1018 */ 0x84F1, 0x84F2, 0x84F7, 0x8532, 0x84FA, 0x84FB, 0x84FD, 0x8502, -/* 1020 */ 0x8503, 0x8507, 0x850C, 0x850E, 0x8510, 0x851C, 0x851E, 0x8522, -/* 1028 */ 0x8523, 0x8524, 0x8525, 0x8527, 0x852A, 0x852B, 0x852F, 0x8533, -/* 1030 */ 0x8534, 0x8536, 0x853F, 0x8546, 0x854F, 0x8550, 0x8551, 0x8552, -/* 1038 */ 0x8553, 0x8556, 0x8559, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 1040 */ 0xFFFD, 0xFFFD, 0x8564, 0x856B, 0x856F, 0x8579, 0x857A, 0x857B, -/* 1048 */ 0x857D, 0x857F, 0x8581, 0x8585, 0x8586, 0x8589, 0x858B, 0x858C, -/* 1050 */ 0x858F, 0x8593, 0x8598, 0x859D, 0x859F, 0x85A0, 0x85A2, 0x85A5, -/* 1058 */ 0x85A7, 0x85B4, 0x85B6, 0x85B7, 0x85B8, 0x85BC, 0x85BD, 0x85BE, -/* 1060 */ 0x85BF, 0x85C2, 0x85C7, 0x85CA, 0x85CB, 0x85CE, 0x85AD, 0x85D8, -/* 1068 */ 0x85DA, 0x85DF, 0x85E0, 0x85E6, 0x85E8, 0x85ED, 0x85F3, 0x85F6, -/* 1070 */ 0x85FC, 0x85FF, 0x8600, 0x8604, 0x8605, 0x860D, 0x860E, 0x8610, -/* 1078 */ 0x8611, 0x8612, 0x8618, 0x8619, 0x861B, 0x861E, 0x8621, 0x8627, -/* 1080 */ 0x8629, 0x8636, 0x8638, 0x863A, 0x863C, 0x863D, 0x8640, 0x8642, -/* 1088 */ 0x8646, 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, 0x865D, -/* 1090 */ 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8669, 0x866C, 0x866F, -/* 1098 */ 0x8675, 0x8676, 0x8677, 0x867A, 0x868D, 0x8691, 0x8696, 0x8698, -/* 10A0 */ 0x869A, 0x869C, 0x86A1, 0x86A6, 0x86A7, 0x86A8, 0x86AD, 0x86B1, -/* 10A8 */ 0x86B3, 0x86B4, 0x86B5, 0x86B7, 0x86B8, 0x86B9, 0x86BF, 0x86C0, -/* 10B0 */ 0x86C1, 0x86C3, 0x86C5, 0x86D1, 0x86D2, 0x86D5, 0x86D7, 0x86DA, -/* 10B8 */ 0x86DC, 0x86E0, 0x86E3, 0x86E5, 0x86E7, 0x8688, 0x86FA, 0x86FC, -/* 10C0 */ 0x86FD, 0x8704, 0x8705, 0x8707, 0x870B, 0x870E, 0x870F, 0x8710, -/* 10C8 */ 0x8713, 0x8714, 0x8719, 0x871E, 0x871F, 0x8721, 0x8723, 0x8728, -/* 10D0 */ 0x872E, 0x872F, 0x8731, 0x8732, 0x8739, 0x873A, 0x873C, 0x873D, -/* 10D8 */ 0x873E, 0x8740, 0x8743, 0x8745, 0x874D, 0x8758, 0x875D, 0x8761, -/* 10E0 */ 0x8764, 0x8765, 0x876F, 0x8771, 0x8772, 0x877B, 0xFFFD, 0xFFFD, -/* 10E8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x878B, 0x878C, 0x8790, -/* 10F0 */ 0x8793, 0x8795, 0x8797, 0x8798, 0x8799, 0x879E, 0x87A0, 0x87A3, -/* 10F8 */ 0x87A7, 0x87AC, 0x87AD, 0x87AE, 0x87B1, 0x87B5, 0x87BE, 0x87BF, -/* 1100 */ 0x87C1, 0x87C8, 0x87C9, 0x87CA, 0x87CE, 0x87D5, 0x87D6, 0x87D9, -/* 1108 */ 0x87DA, 0x87DC, 0x87DF, 0x87E2, 0x87E3, 0x87E4, 0x87EA, 0x87EB, -/* 1110 */ 0x87ED, 0x87F1, 0x87F3, 0x87F8, 0x87FA, 0x87FF, 0x8801, 0x8803, -/* 1118 */ 0x8806, 0x8809, 0x880A, 0x880B, 0x8810, 0x8819, 0x8812, 0x8813, -/* 1120 */ 0x8814, 0x8818, 0x881A, 0x881B, 0x881C, 0x881E, 0x881F, 0x8828, -/* 1128 */ 0x882D, 0x882E, 0x8830, 0x8832, 0x8835, 0x883A, 0x883C, 0x8841, -/* 1130 */ 0x8843, 0x8845, 0x8848, 0x8849, 0x884A, 0x884B, 0x884E, 0x8851, -/* 1138 */ 0x8855, 0x8856, 0x8858, 0x885A, 0x885C, 0x885F, 0x8860, 0x8864, -/* 1140 */ 0x8869, 0x8871, 0x8879, 0x887B, 0x8880, 0x8898, 0x889A, 0x889B, -/* 1148 */ 0x889C, 0x889F, 0x88A0, 0x88A8, 0x88AA, 0x88BA, 0x88BD, 0x88BE, -/* 1150 */ 0x88C0, 0x88CA, 0x88CB, 0x88CC, 0x88CD, 0x88CE, 0x88D1, 0x88D2, -/* 1158 */ 0x88D3, 0x88DB, 0x88DE, 0x88E7, 0x88EF, 0x88F0, 0x88F1, 0x88F5, -/* 1160 */ 0x88F7, 0x8901, 0x8906, 0x890D, 0x890E, 0x890F, 0x8915, 0x8916, -/* 1168 */ 0x8918, 0x8919, 0x891A, 0x891C, 0x8920, 0x8926, 0x8927, 0x8928, -/* 1170 */ 0x8930, 0x8931, 0x8932, 0x8935, 0x8939, 0x893A, 0x893E, 0x8940, -/* 1178 */ 0x8942, 0x8945, 0x8946, 0x8949, 0x894F, 0x8952, 0x8957, 0x895A, -/* 1180 */ 0x895B, 0x895C, 0x8961, 0x8962, 0x8963, 0x896B, 0x896E, 0x8970, -/* 1188 */ 0x8973, 0x8975, 0x897A, 0x897B, 0x897C, 0x897D, 0x8989, 0x898D, -/* 1190 */ 0x8990, 0x8994, 0x8995, 0x899B, 0x899C, 0x899F, 0x89A0, 0x89A5, -/* 1198 */ 0x89B0, 0x89B4, 0x89B5, 0x89B6, 0x89B7, 0x89BC, 0x89D4, 0x89D5, -/* 11A0 */ 0x89D6, 0x89D7, 0x89D8, 0x89E5, 0x89E9, 0x89EB, 0x89ED, 0x89F1, -/* 11A8 */ 0x89F3, 0x89F6, 0x89F9, 0x89FD, 0x89FF, 0x8A04, 0x8A05, 0x8A07, -/* 11B0 */ 0x8A0F, 0x8A11, 0x8A12, 0x8A14, 0x8A15, 0x8A1E, 0x8A20, 0x8A22, -/* 11B8 */ 0x8A24, 0x8A26, 0x8A2B, 0x8A2C, 0x8A2F, 0x8A35, 0x8A37, 0x8A3D, -/* 11C0 */ 0x8A3E, 0x8A40, 0x8A43, 0x8A45, 0x8A47, 0x8A49, 0x8A4D, 0x8A4E, -/* 11C8 */ 0x8A53, 0x8A56, 0x8A57, 0x8A58, 0x8A5C, 0x8A5D, 0x8A61, 0x8A65, -/* 11D0 */ 0x8A67, 0x8A75, 0x8A76, 0x8A77, 0x8A79, 0x8A7A, 0x8A7B, 0x8A7E, -/* 11D8 */ 0x8A7F, 0x8A80, 0x8A83, 0x8A86, 0x8A8B, 0x8A8F, 0x8A90, 0x8A92, -/* 11E0 */ 0x8A96, 0x8A97, 0x8A99, 0x8A9F, 0x8AA7, 0x8AA9, 0x8AAE, 0x8AAF, -/* 11E8 */ 0x8AB3, 0x8AB6, 0x8AB7, 0x8ABB, 0x8ABE, 0x8AC3, 0x8AC6, 0x8AC8, -/* 11F0 */ 0x8AC9, 0x8ACA, 0x8AD1, 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD7, 0x8ADD, -/* 11F8 */ 0x8ADF, 0x8AEC, 0x8AF0, 0x8AF4, 0x8AF5, 0x8AF6, 0x8AFC, 0x8AFF, -/* 1200 */ 0x8B05, 0x8B06, 0x8B0B, 0x8B11, 0x8B1C, 0x8B1E, 0x8B1F, 0x8B0A, -/* 1208 */ 0x8B2D, 0x8B30, 0x8B37, 0x8B3C, 0x8B42, 0x8B43, 0x8B44, 0x8B45, -/* 1210 */ 0x8B46, 0x8B48, 0x8B52, 0x8B53, 0x8B54, 0x8B59, 0x8B4D, 0x8B5E, -/* 1218 */ 0x8B63, 0x8B6D, 0x8B76, 0x8B78, 0x8B79, 0x8B7C, 0x8B7E, 0x8B81, -/* 1220 */ 0x8B84, 0x8B85, 0x8B8B, 0x8B8D, 0x8B8F, 0x8B94, 0x8B95, 0x8B9C, -/* 1228 */ 0x8B9E, 0x8B9F, 0x8C38, 0x8C39, 0x8C3D, 0x8C3E, 0x8C45, 0x8C47, -/* 1230 */ 0x8C49, 0x8C4B, 0x8C4F, 0x8C51, 0x8C53, 0x8C54, 0x8C57, 0x8C58, -/* 1238 */ 0x8C5B, 0x8C5D, 0x8C59, 0x8C63, 0x8C64, 0x8C66, 0x8C68, 0x8C69, -/* 1240 */ 0x8C6D, 0x8C73, 0x8C75, 0x8C76, 0x8C7B, 0x8C7E, 0x8C86, 0x8C87, -/* 1248 */ 0x8C8B, 0x8C90, 0x8C92, 0x8C93, 0x8C99, 0x8C9B, 0x8C9C, 0x8CA4, -/* 1250 */ 0x8CB9, 0x8CBA, 0x8CC5, 0x8CC6, 0x8CC9, 0x8CCB, 0x8CCF, 0x8CD6, -/* 1258 */ 0x8CD5, 0x8CD9, 0x8CDD, 0x8CE1, 0x8CE8, 0x8CEC, 0x8CEF, 0x8CF0, -/* 1260 */ 0x8CF2, 0x8CF5, 0x8CF7, 0x8CF8, 0x8CFE, 0x8CFF, 0x8D01, 0x8D03, -/* 1268 */ 0x8D09, 0x8D12, 0x8D17, 0x8D1B, 0x8D65, 0x8D69, 0x8D6C, 0x8D6E, -/* 1270 */ 0x8D7F, 0x8D82, 0x8D84, 0x8D88, 0x8D8D, 0x8D90, 0x8D91, 0x8D95, -/* 1278 */ 0x8D9E, 0x8D9F, 0x8DA0, 0x8DA6, 0x8DAB, 0x8DAC, 0x8DAF, 0x8DB2, -/* 1280 */ 0x8DB5, 0x8DB7, 0x8DB9, 0x8DBB, 0x8DC0, 0x8DC5, 0x8DC6, 0x8DC7, -/* 1288 */ 0x8DC8, 0x8DCA, 0x8DCE, 0x8DD1, 0x8DD4, 0x8DD5, 0x8DD7, 0x8DD9, -/* 1290 */ 0x8DE4, 0x8DE5, 0x8DE7, 0x8DEC, 0x8DF0, 0x8DBC, 0x8DF1, 0x8DF2, -/* 1298 */ 0x8DF4, 0x8DFD, 0x8E01, 0x8E04, 0x8E05, 0x8E06, 0x8E0B, 0x8E11, -/* 12A0 */ 0x8E14, 0x8E16, 0x8E20, 0x8E21, 0x8E22, 0x8E23, 0x8E26, 0x8E27, -/* 12A8 */ 0x8E31, 0x8E33, 0x8E36, 0x8E37, 0x8E38, 0x8E39, 0x8E3D, 0x8E40, -/* 12B0 */ 0x8E41, 0x8E4B, 0x8E4D, 0x8E4E, 0x8E4F, 0x8E54, 0x8E5B, 0x8E5C, -/* 12B8 */ 0x8E5D, 0x8E5E, 0x8E61, 0x8E62, 0x8E69, 0x8E6C, 0x8E6D, 0x8E6F, -/* 12C0 */ 0x8E70, 0x8E71, 0x8E79, 0x8E7A, 0x8E7B, 0x8E82, 0x8E83, 0x8E89, -/* 12C8 */ 0x8E90, 0x8E92, 0x8E95, 0x8E9A, 0x8E9B, 0x8E9D, 0x8E9E, 0x8EA2, -/* 12D0 */ 0x8EA7, 0x8EA9, 0x8EAD, 0x8EAE, 0x8EB3, 0x8EB5, 0x8EBA, 0x8EBB, -/* 12D8 */ 0x8EC0, 0x8EC1, 0x8EC3, 0x8EC4, 0x8EC7, 0x8ECF, 0x8ED1, 0x8ED4, -/* 12E0 */ 0x8EDC, 0x8EE8, 0x8EEE, 0x8EF0, 0x8EF1, 0x8EF7, 0x8EF9, 0x8EFA, -/* 12E8 */ 0x8EED, 0x8F00, 0x8F02, 0x8F07, 0x8F08, 0x8F0F, 0x8F10, 0x8F16, -/* 12F0 */ 0x8F17, 0x8F18, 0x8F1E, 0x8F20, 0x8F21, 0x8F23, 0x8F25, 0x8F27, -/* 12F8 */ 0x8F28, 0x8F2C, 0x8F2D, 0x8F2E, 0x8F34, 0x8F35, 0x8F36, 0x8F37, -/* 1300 */ 0x8F3A, 0x8F40, 0x8F41, 0x8F43, 0x8F47, 0x8F4F, 0x8F51, 0x8F52, -/* 1308 */ 0x8F53, 0x8F54, 0x8F55, 0x8F58, 0x8F5D, 0x8F5E, 0x8F65, 0x8F9D, -/* 1310 */ 0x8FA0, 0x8FA1, 0x8FA4, 0x8FA5, 0x8FA6, 0x8FB5, 0x8FB6, 0x8FB8, -/* 1318 */ 0x8FBE, 0x8FC0, 0x8FC1, 0x8FC6, 0x8FCA, 0x8FCB, 0x8FCD, 0x8FD0, -/* 1320 */ 0x8FD2, 0x8FD3, 0x8FD5, 0x8FE0, 0x8FE3, 0x8FE4, 0x8FE8, 0x8FEE, -/* 1328 */ 0x8FF1, 0x8FF5, 0x8FF6, 0x8FFB, 0x8FFE, 0x9002, 0x9004, 0x9008, -/* 1330 */ 0x900C, 0x9018, 0x901B, 0x9028, 0x9029, 0x902F, 0x902A, 0x902C, -/* 1338 */ 0x902D, 0x9033, 0x9034, 0x9037, 0x903F, 0x9043, 0x9044, 0x904C, -/* 1340 */ 0x905B, 0x905D, 0x9062, 0x9066, 0x9067, 0x906C, 0x9070, 0x9074, -/* 1348 */ 0x9079, 0x9085, 0x9088, 0x908B, 0x908C, 0x908E, 0x9090, 0x9095, -/* 1350 */ 0x9097, 0x9098, 0x9099, 0x909B, 0x90A0, 0x90A1, 0x90A2, 0x90A5, -/* 1358 */ 0x90B0, 0x90B2, 0x90B3, 0x90B4, 0x90B6, 0x90BD, 0x90CC, 0x90BE, -/* 1360 */ 0x90C3, 0x90C4, 0x90C5, 0x90C7, 0x90C8, 0x90D5, 0x90D7, 0x90D8, -/* 1368 */ 0x90D9, 0x90DC, 0x90DD, 0x90DF, 0x90E5, 0x90D2, 0x90F6, 0x90EB, -/* 1370 */ 0x90EF, 0x90F0, 0x90F4, 0x90FE, 0x90FF, 0x9100, 0x9104, 0x9105, -/* 1378 */ 0x9106, 0x9108, 0x910D, 0x9110, 0x9114, 0x9116, 0x9117, 0x9118, -/* 1380 */ 0x911A, 0x911C, 0x911E, 0x9120, 0x9125, 0x9122, 0x9123, 0x9127, -/* 1388 */ 0x9129, 0x912E, 0x912F, 0x9131, 0x9134, 0x9136, 0x9137, 0x9139, -/* 1390 */ 0x913A, 0x913C, 0x913D, 0x9143, 0x9147, 0x9148, 0x914F, 0x9153, -/* 1398 */ 0x9157, 0x9159, 0x915A, 0x915B, 0x9161, 0x9164, 0x9167, 0x916D, -/* 13A0 */ 0x9174, 0x9179, 0x917A, 0x917B, 0x9181, 0x9183, 0x9185, 0x9186, -/* 13A8 */ 0x918A, 0x918E, 0x9191, 0x9193, 0x9194, 0x9195, 0x9198, 0x919E, -/* 13B0 */ 0x91A1, 0x91A6, 0x91A8, 0x91AC, 0x91AD, 0x91AE, 0x91B0, 0x91B1, -/* 13B8 */ 0x91B2, 0x91B3, 0x91B6, 0x91BB, 0x91BC, 0x91BD, 0x91BF, 0x91C2, -/* 13C0 */ 0x91C3, 0x91C5, 0x91D3, 0x91D4, 0x91D7, 0x91D9, 0x91DA, 0x91DE, -/* 13C8 */ 0x91E4, 0x91E5, 0x91E9, 0x91EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 13D0 */ 0xFFFD, 0xFFFD, 0x91F7, 0x91F9, 0x91FB, 0x91FD, 0x9200, 0x9201, -/* 13D8 */ 0x9204, 0x9205, 0x9206, 0x9207, 0x9209, 0x920A, 0x920C, 0x9210, -/* 13E0 */ 0x9212, 0x9213, 0x9216, 0x9218, 0x921C, 0x921D, 0x9223, 0x9224, -/* 13E8 */ 0x9225, 0x9226, 0x9228, 0x922E, 0x922F, 0x9230, 0x9233, 0x9235, -/* 13F0 */ 0x9236, 0x9238, 0x9239, 0x923A, 0x923C, 0x923E, 0x9240, 0x9242, -/* 13F8 */ 0x9243, 0x9246, 0x9247, 0x924A, 0x924D, 0x924E, 0x924F, 0x9251, -/* 1400 */ 0x9258, 0x9259, 0x925C, 0x925D, 0x9260, 0x9261, 0x9265, 0x9267, -/* 1408 */ 0x9268, 0x9269, 0x926E, 0x926F, 0x9270, 0x9275, 0x9276, 0x9277, -/* 1410 */ 0x9278, 0x9279, 0x927B, 0x927C, 0x927D, 0x927F, 0x9288, 0x9289, -/* 1418 */ 0x928A, 0x928D, 0x928E, 0x9292, 0x9297, 0x9299, 0x929F, 0x92A0, -/* 1420 */ 0x92A4, 0x92A5, 0x92A7, 0x92A8, 0x92AB, 0x92AF, 0x92B2, 0x92B6, -/* 1428 */ 0x92B8, 0x92BA, 0x92BB, 0x92BC, 0x92BD, 0x92BF, 0x92C0, 0x92C1, -/* 1430 */ 0x92C2, 0x92C3, 0x92C5, 0x92C6, 0x92C7, 0x92C8, 0x92CB, 0x92CC, -/* 1438 */ 0x92CD, 0x92CE, 0x92D0, 0x92D3, 0x92D5, 0x92D7, 0x92D8, 0x92D9, -/* 1440 */ 0x92DC, 0x92DD, 0x92DF, 0x92E0, 0x92E1, 0x92E3, 0x92E5, 0x92E7, -/* 1448 */ 0x92E8, 0x92EC, 0x92EE, 0x92F0, 0x92F9, 0x92FB, 0x92FF, 0x9300, -/* 1450 */ 0x9302, 0x9308, 0x930D, 0x9311, 0x9314, 0x9315, 0x931C, 0x931D, -/* 1458 */ 0x931E, 0x931F, 0x9321, 0x9324, 0x9325, 0x9327, 0x9329, 0x932A, -/* 1460 */ 0x9333, 0x9334, 0x9336, 0x9337, 0x9347, 0x9348, 0x9349, 0x9350, -/* 1468 */ 0x9351, 0x9352, 0x9355, 0x9357, 0x9358, 0x935A, 0x935E, 0x9364, -/* 1470 */ 0x9365, 0x9367, 0x9369, 0x936A, 0x936D, 0x936F, 0x9370, 0x9371, -/* 1478 */ 0x9373, 0x9374, 0x9376, 0x937A, 0x937D, 0x937F, 0x9380, 0x9381, -/* 1480 */ 0x9382, 0x9388, 0x938A, 0x938B, 0x938D, 0x938F, 0x9392, 0x9395, -/* 1488 */ 0x9398, 0x939B, 0x939E, 0x93A1, 0x93A3, 0x93A4, 0x93A6, 0x93A8, -/* 1490 */ 0x93AB, 0x93B4, 0x93B5, 0x93B6, 0x93BA, 0x93A9, 0x93C1, 0x93C4, -/* 1498 */ 0x93C5, 0x93C6, 0x93C7, 0x93C9, 0x93CA, 0x93CB, 0x93CC, 0x93CD, -/* 14A0 */ 0x93D3, 0x93D9, 0x93DC, 0x93DE, 0x93DF, 0x93E2, 0x93E6, 0x93E7, -/* 14A8 */ 0x93F9, 0x93F7, 0x93F8, 0x93FA, 0x93FB, 0x93FD, 0x9401, 0x9402, -/* 14B0 */ 0x9404, 0x9408, 0x9409, 0x940D, 0x940E, 0x940F, 0x9415, 0x9416, -/* 14B8 */ 0x9417, 0x941F, 0x942E, 0x942F, 0x9431, 0x9432, 0x9433, 0x9434, -/* 14C0 */ 0x943B, 0x943F, 0x943D, 0x9443, 0x9445, 0x9448, 0x944A, 0x944C, -/* 14C8 */ 0x9455, 0x9459, 0x945C, 0x945F, 0x9461, 0x9463, 0x9468, 0x946B, -/* 14D0 */ 0x946D, 0x946E, 0x946F, 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, -/* 14D8 */ 0x9579, 0x957E, 0x9584, 0x9588, 0x958C, 0x958D, 0x958E, 0x959D, -/* 14E0 */ 0x959E, 0x959F, 0x95A1, 0x95A6, 0x95A9, 0x95AB, 0x95AC, 0x95B4, -/* 14E8 */ 0x95B6, 0x95BA, 0x95BD, 0x95BF, 0x95C6, 0x95C8, 0x95C9, 0x95CB, -/* 14F0 */ 0x95D0, 0x95D1, 0x95D2, 0x95D3, 0x95D9, 0x95DA, 0x95DD, 0x95DE, -/* 14F8 */ 0x95DF, 0x95E0, 0x95E4, 0x95E6, 0x961D, 0x961E, 0x9622, 0x9624, -/* 1500 */ 0x9625, 0x9626, 0x962C, 0x9631, 0x9633, 0x9637, 0x9638, 0x9639, -/* 1508 */ 0x963A, 0x963C, 0x963D, 0x9641, 0x9652, 0x9654, 0x9656, 0x9657, -/* 1510 */ 0x9658, 0x9661, 0x966E, 0x9674, 0x967B, 0x967C, 0x967E, 0x967F, -/* 1518 */ 0x9681, 0x9682, 0x9683, 0x9684, 0x9689, 0x9691, 0x9696, 0x969A, -/* 1520 */ 0x969D, 0x969F, 0x96A4, 0x96A5, 0x96A6, 0x96A9, 0x96AE, 0x96AF, -/* 1528 */ 0x96B3, 0x96BA, 0x96CA, 0x96D2, 0x5DB2, 0x96D8, 0x96DA, 0x96DD, -/* 1530 */ 0x96DE, 0x96DF, 0x96E9, 0x96EF, 0x96F1, 0x96FA, 0x9702, 0x9703, -/* 1538 */ 0x9705, 0x9709, 0x971A, 0x971B, 0x971D, 0x9721, 0x9722, 0x9723, -/* 1540 */ 0x9728, 0x9731, 0x9733, 0x9741, 0x9743, 0x974A, 0x974E, 0x974F, -/* 1548 */ 0x9755, 0x9757, 0x9758, 0x975A, 0x975B, 0x9763, 0x9767, 0x976A, -/* 1550 */ 0x976E, 0x9773, 0x9776, 0x9777, 0x9778, 0x977B, 0x977D, 0x977F, -/* 1558 */ 0x9780, 0x9789, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, 0x979E, -/* 1560 */ 0x979F, 0x97A2, 0x97AC, 0x97AE, 0x97B1, 0x97B2, 0x97B5, 0x97B6, -/* 1568 */ 0x97B8, 0x97B9, 0x97BA, 0x97BC, 0x97BE, 0x97BF, 0x97C1, 0x97C4, -/* 1570 */ 0x97C5, 0x97C7, 0x97C9, 0x97CA, 0x97CC, 0x97CD, 0x97CE, 0x97D0, -/* 1578 */ 0x97D1, 0x97D4, 0x97D7, 0x97D8, 0x97D9, 0x97DD, 0x97DE, 0x97E0, -/* 1580 */ 0x97DB, 0x97E1, 0x97E4, 0x97EF, 0x97F1, 0x97F4, 0x97F7, 0x97F8, -/* 1588 */ 0x97FA, 0x9807, 0x980A, 0x9819, 0x980D, 0x980E, 0x9814, 0x9816, -/* 1590 */ 0x981C, 0x981E, 0x9820, 0x9823, 0x9826, 0x982B, 0x982E, 0x982F, -/* 1598 */ 0x9830, 0x9832, 0x9833, 0x9835, 0x9825, 0x983E, 0x9844, 0x9847, -/* 15A0 */ 0x984A, 0x9851, 0x9852, 0x9853, 0x9856, 0x9857, 0x9859, 0x985A, -/* 15A8 */ 0x9862, 0x9863, 0x9865, 0x9866, 0x986A, 0x986C, 0x98AB, 0x98AD, -/* 15B0 */ 0x98AE, 0x98B0, 0x98B4, 0x98B7, 0x98B8, 0x98BA, 0x98BB, 0x98BF, -/* 15B8 */ 0x98C2, 0x98C5, 0x98C8, 0x98CC, 0x98E1, 0x98E3, 0x98E5, 0x98E6, -/* 15C0 */ 0x98E7, 0x98EA, 0x98F3, 0x98F6, 0x9902, 0x9907, 0x9908, 0x9911, -/* 15C8 */ 0x9915, 0x9916, 0x9917, 0x991A, 0x991B, 0x991C, 0x991F, 0x9922, -/* 15D0 */ 0x9926, 0x9927, 0x992B, 0x9931, 0x9932, 0x9933, 0x9934, 0x9935, -/* 15D8 */ 0x9939, 0x993A, 0x993B, 0x993C, 0x9940, 0x9941, 0x9946, 0x9947, -/* 15E0 */ 0x9948, 0x994D, 0x994E, 0x9954, 0x9958, 0x9959, 0x995B, 0x995C, -/* 15E8 */ 0x995E, 0x995F, 0x9960, 0x999B, 0x999D, 0x999F, 0x99A6, 0x99B0, -/* 15F0 */ 0x99B1, 0x99B2, 0x99B5, 0x99B9, 0x99BA, 0x99BD, 0x99BF, 0x99C3, -/* 15F8 */ 0x99C9, 0x99D3, 0x99D4, 0x99D9, 0x99DA, 0x99DC, 0x99DE, 0x99E7, -/* 1600 */ 0x99EA, 0x99EB, 0x99EC, 0x99F0, 0x99F4, 0x99F5, 0x99F9, 0x99FD, -/* 1608 */ 0x99FE, 0x9A02, 0x9A03, 0x9A04, 0x9A0B, 0x9A0C, 0x9A10, 0x9A11, -/* 1610 */ 0x9A16, 0x9A1E, 0x9A20, 0x9A22, 0x9A23, 0x9A24, 0x9A27, 0x9A2D, -/* 1618 */ 0x9A2E, 0x9A33, 0x9A35, 0x9A36, 0x9A38, 0x9A47, 0x9A41, 0x9A44, -/* 1620 */ 0x9A4A, 0x9A4B, 0x9A4C, 0x9A4E, 0x9A51, 0x9A54, 0x9A56, 0x9A5D, -/* 1628 */ 0x9AAA, 0x9AAC, 0x9AAE, 0x9AAF, 0x9AB2, 0x9AB4, 0x9AB5, 0x9AB6, -/* 1630 */ 0x9AB9, 0x9ABB, 0x9ABE, 0x9ABF, 0x9AC1, 0x9AC3, 0x9AC6, 0x9AC8, -/* 1638 */ 0x9ACE, 0x9AD0, 0x9AD2, 0x9AD5, 0x9AD6, 0x9AD7, 0x9ADB, 0x9ADC, -/* 1640 */ 0x9AE0, 0x9AE4, 0x9AE5, 0x9AE7, 0x9AE9, 0x9AEC, 0x9AF2, 0x9AF3, -/* 1648 */ 0x9AF5, 0x9AF9, 0x9AFA, 0x9AFD, 0x9AFF, 0x9B00, 0x9B01, 0x9B02, -/* 1650 */ 0x9B03, 0x9B04, 0x9B05, 0x9B08, 0x9B09, 0x9B0B, 0x9B0C, 0x9B0D, -/* 1658 */ 0x9B0E, 0x9B10, 0x9B12, 0x9B16, 0x9B19, 0x9B1B, 0x9B1C, 0x9B20, -/* 1660 */ 0x9B26, 0x9B2B, 0x9B2D, 0x9B33, 0x9B34, 0x9B35, 0x9B37, 0x9B39, -/* 1668 */ 0x9B3A, 0x9B3D, 0x9B48, 0x9B4B, 0x9B4C, 0x9B55, 0x9B56, 0x9B57, -/* 1670 */ 0x9B5B, 0x9B5E, 0x9B61, 0x9B63, 0x9B65, 0x9B66, 0x9B68, 0x9B6A, -/* 1678 */ 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B73, 0x9B75, 0x9B77, 0x9B78, -/* 1680 */ 0x9B79, 0x9B7F, 0x9B80, 0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B89, -/* 1688 */ 0x9B8A, 0x9B8B, 0x9B8D, 0x9B8F, 0x9B90, 0x9B94, 0x9B9A, 0x9B9D, -/* 1690 */ 0x9B9E, 0x9BA6, 0x9BA7, 0x9BA9, 0x9BAC, 0x9BB0, 0x9BB1, 0x9BB2, -/* 1698 */ 0x9BB7, 0x9BB8, 0x9BBB, 0x9BBC, 0x9BBE, 0x9BBF, 0x9BC1, 0x9BC7, -/* 16A0 */ 0x9BC8, 0x9BCE, 0x9BD0, 0x9BD7, 0x9BD8, 0x9BDD, 0x9BDF, 0x9BE5, -/* 16A8 */ 0x9BE7, 0x9BEA, 0x9BEB, 0x9BEF, 0x9BF3, 0x9BF7, 0x9BF8, 0x9BF9, -/* 16B0 */ 0x9BFA, 0x9BFD, 0x9BFF, 0x9C00, 0x9C02, 0x9C0B, 0x9C0F, 0x9C11, -/* 16B8 */ 0x9C16, 0x9C18, 0x9C19, 0x9C1A, 0x9C1C, 0x9C1E, 0x9C22, 0x9C23, -/* 16C0 */ 0x9C26, 0x9C27, 0x9C28, 0x9C29, 0x9C2A, 0x9C31, 0x9C35, 0x9C36, -/* 16C8 */ 0x9C37, 0x9C3D, 0x9C41, 0x9C43, 0x9C44, 0x9C45, 0x9C49, 0x9C4A, -/* 16D0 */ 0x9C4E, 0x9C4F, 0x9C50, 0x9C53, 0x9C54, 0x9C56, 0x9C58, 0x9C5B, -/* 16D8 */ 0x9C5D, 0x9C5E, 0x9C5F, 0x9C63, 0x9C69, 0x9C6A, 0x9C5C, 0x9C6B, -/* 16E0 */ 0x9C68, 0x9C6E, 0x9C70, 0x9C72, 0x9C75, 0x9C77, 0x9C7B, 0x9CE6, -/* 16E8 */ 0x9CF2, 0x9CF7, 0x9CF9, 0x9D0B, 0x9D02, 0x9D11, 0x9D17, 0x9D18, -/* 16F0 */ 0x9D1C, 0x9D1D, 0x9D1E, 0x9D2F, 0x9D30, 0x9D32, 0x9D33, 0x9D34, -/* 16F8 */ 0x9D3A, 0x9D3C, 0x9D45, 0x9D3D, 0x9D42, 0x9D43, 0x9D47, 0x9D4A, -/* 1700 */ 0x9D53, 0x9D54, 0x9D5F, 0x9D63, 0x9D62, 0x9D65, 0x9D69, 0x9D6A, -/* 1708 */ 0x9D6B, 0x9D70, 0x9D76, 0x9D77, 0x9D7B, 0x9D7C, 0x9D7E, 0x9D83, -/* 1710 */ 0x9D84, 0x9D86, 0x9D8A, 0x9D8D, 0x9D8E, 0x9D92, 0x9D93, 0x9D95, -/* 1718 */ 0x9D96, 0x9D97, 0x9D98, 0x9DA1, 0x9DAA, 0x9DAC, 0x9DAE, 0x9DB1, -/* 1720 */ 0x9DB5, 0x9DB9, 0x9DBC, 0x9DBF, 0x9DC3, 0x9DC7, 0x9DC9, 0x9DCA, -/* 1728 */ 0x9DD4, 0x9DD5, 0x9DD6, 0x9DD7, 0x9DDA, 0x9DDE, 0x9DDF, 0x9DE0, -/* 1730 */ 0x9DE5, 0x9DE7, 0x9DE9, 0x9DEB, 0x9DEE, 0x9DF0, 0x9DF3, 0x9DF4, -/* 1738 */ 0x9DFE, 0x9E0A, 0x9E02, 0x9E07, 0x9E0E, 0x9E10, 0x9E11, 0x9E12, -/* 1740 */ 0x9E15, 0x9E16, 0x9E19, 0x9E1C, 0x9E1D, 0x9E7A, 0x9E7B, 0x9E7C, -/* 1748 */ 0x9E80, 0x9E82, 0x9E83, 0x9E84, 0x9E85, 0x9E87, 0x9E8E, 0x9E8F, -/* 1750 */ 0x9E96, 0x9E98, 0x9E9B, 0x9E9E, 0x9EA4, 0x9EA8, 0x9EAC, 0x9EAE, -/* 1758 */ 0x9EAF, 0x9EB0, 0x9EB3, 0x9EB4, 0x9EB5, 0x9EC6, 0x9EC8, 0x9ECB, -/* 1760 */ 0x9ED5, 0x9EDF, 0x9EE4, 0x9EE7, 0x9EEC, 0x9EED, 0x9EEE, 0x9EF0, -/* 1768 */ 0x9EF1, 0x9EF2, 0x9EF5, 0x9EF8, 0x9EFF, 0x9F02, 0x9F03, 0x9F09, -/* 1770 */ 0x9F0F, 0x9F10, 0x9F11, 0x9F12, 0x9F14, 0x9F16, 0x9F17, 0x9F19, -/* 1778 */ 0x9F1A, 0x9F1B, 0x9F1F, 0x9F22, 0x9F26, 0x9F2A, 0x9F2B, 0x9F2F, -/* 1780 */ 0x9F31, 0x9F32, 0x9F34, 0x9F37, 0x9F39, 0x9F3A, 0x9F3C, 0x9F3D, -/* 1788 */ 0x9F3F, 0x9F41, 0x9F43, 0x9F44, 0x9F45, 0x9F46, 0x9F47, 0x9F53, -/* 1790 */ 0x9F55, 0x9F56, 0x9F57, 0x9F58, 0x9F5A, 0x9F5D, 0x9F5E, 0x9F68, -/* 1798 */ 0x9F69, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, 0x9F73, 0x9F75, -/* 17A0 */ 0x9F7A, 0x9F7D, 0x9F8F, 0x9F90, 0x9F91, 0x9F92, 0x9F94, 0x9F96, -/* 17A8 */ 0x9F97, 0x9F9E, 0x9FA1, 0x9FA2, 0x9FA3, 0x9FA5, -/* End of table Total Length = 0x18BA * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/koi8r.ut b/mozilla/lib/libi18n/unicode/utotbl/koi8r.ut deleted file mode 100755 index 05b0dc72eef..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/koi8r.ut +++ /dev/null @@ -1,148 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A4 - srcEnd = 00B2 - destBegin = 2553 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00B4 - srcEnd = 00BE - destBegin = 2562 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00C9 - srcEnd = 00D0 - destBegin = 0438 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00E9 - srcEnd = 00F0 - destBegin = 0418 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 0080 - srcEnd = 00A3 - mappingOffset = 0000 - Mapping = - 2500 2502 250C 2510 2514 2518 251C 2524 - 252C 2534 253C 2580 2584 2588 258C 2590 - 2591 2592 2593 2320 25A0 2219 221A 2248 - 2264 2265 00A0 2321 00B0 00B2 00B7 00F7 - 2550 2551 2552 0451 -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = 00B3 - destBegin = 0401 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = 00BF - srcEnd = 00FF - mappingOffset = 0024 - Mapping = - 00A9 044E 0430 0431 0446 0434 0435 0444 - 0433 0445 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 044F 0440 0441 0442 0443 0436 - 0432 044C 044B 0437 0448 044D 0449 0447 - 044A 042E 0410 0411 0426 0414 0415 0424 - 0413 0425 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD 042F 0420 0421 0422 0423 0416 - 0412 042C 042B 0417 0428 042D 0429 0427 - 042A -End of Item 0007 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x001F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0005 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x1210, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A4, 0x00B2, 0x2553, -/* 0002 */ 0x00B4, 0x00BE, 0x2562, -/* 0003 */ 0x00C9, 0x00D0, 0x0438, -/* 0004 */ 0x00E9, 0x00F0, 0x0418, -/* 0005 */ 0x0080, 0x00A3, 0x0000, -/* 0006 */ 0x00B3, 0x0000, 0x0401, -/* 0007 */ 0x00BF, 0x00FF, 0x0024, -/*-------------------------------------------------------*/ -/* Offset=0x001F Start of MappingTable */ - -/* 0000 */ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, -/* 0008 */ 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, -/* 0010 */ 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, -/* 0018 */ 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, -/* 0020 */ 0x2550, 0x2551, 0x2552, 0x0451, 0x00A9, 0x044E, 0x0430, 0x0431, -/* 0028 */ 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0xFFFD, 0xFFFD, -/* 0030 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x044F, 0x0440, -/* 0038 */ 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044C, 0x044B, 0x0437, -/* 0040 */ 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, 0x042E, 0x0410, 0x0411, -/* 0048 */ 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x042F, 0x0420, -/* 0058 */ 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042C, 0x042B, 0x0417, -/* 0060 */ 0x0428, 0x042D, 0x0429, 0x0427, 0x042A, -/* End of table Total Length = 0x0084 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/koi8u.ut b/mozilla/lib/libi18n/unicode/utotbl/koi8u.ut deleted file mode 100644 index af173aad2a3..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/koi8u.ut +++ /dev/null @@ -1,121 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00C9 - srcEnd = 00D0 - destBegin = 0438 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00E9 - srcEnd = 00F0 - destBegin = 0418 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 2500 2502 250C 2510 2514 2518 251C 2524 - 252C 2534 253C 2580 2584 2588 258C 2590 - 2591 2592 2593 2320 25A0 2219 221A 2248 - 2264 2265 00A0 2321 00B0 00B2 00B7 00F7 - 2550 2551 2552 0451 0454 2554 0456 0457 - 2557 2558 2559 255A 255B 0491 255D 255E - 255F 2560 2561 0401 0404 2563 0406 0407 - 2566 2567 2568 2569 256A 0490 256C 00A9 - 044E 0430 0431 0446 0434 0435 0444 0433 - 0445 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 044F 0440 0441 0442 0443 0436 0432 - 044C 044B 0437 0448 044D 0449 0447 044A - 042E 0410 0411 0426 0414 0415 0424 0413 - 0425 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 042F 0420 0421 0422 0423 0416 0412 - 042C 042B 0417 0428 042D 0429 0427 042A -End of Item 0003 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00C9, 0x00D0, 0x0438, -/* 0002 */ 0x00E9, 0x00F0, 0x0418, -/* 0003 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0012 Start of MappingTable */ - -/* 0000 */ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, -/* 0008 */ 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, -/* 0010 */ 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, -/* 0018 */ 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, -/* 0020 */ 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, -/* 0028 */ 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x0491, 0x255D, 0x255E, -/* 0030 */ 0x255F, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, -/* 0038 */ 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x256C, 0x00A9, -/* 0040 */ 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, -/* 0048 */ 0x0445, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0050 */ 0xFFFD, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, -/* 0058 */ 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, -/* 0060 */ 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, -/* 0068 */ 0x0425, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, -/* 0078 */ 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A, -/* End of table Total Length = 0x0092 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/ksc5601.ut b/mozilla/lib/libi18n/unicode/utotbl/ksc5601.ut deleted file mode 100644 index e6c9fac4f7d..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/ksc5601.ut +++ /dev/null @@ -1,2408 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 2134 - srcEnd = 213D - destBegin = 3008 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 2321 - srcEnd = 235B - destBegin = FF01 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 235D - srcEnd = 237D - destBegin = FF3D -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 2421 - srcEnd = 247E - destBegin = 3131 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 2521 - srcEnd = 252A - destBegin = 2170 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 2530 - srcEnd = 2539 - destBegin = 2160 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 2541 - srcEnd = 2551 - destBegin = 0391 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 2552 - srcEnd = 2558 - destBegin = 03A3 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2561 - srcEnd = 2571 - destBegin = 03B1 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2572 - srcEnd = 2578 - destBegin = 03C3 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 265D - srcEnd = 2664 - destBegin = 2543 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 272B - srcEnd = 2734 - destBegin = 3399 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 273F - srcEnd = 2748 - destBegin = 33B0 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 274E - srcEnd = 2753 - destBegin = 33BA -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 2831 - srcEnd = 284C - destBegin = 3260 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 284D - srcEnd = 2866 - destBegin = 24D0 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 2867 - srcEnd = 2875 - destBegin = 2460 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 2931 - srcEnd = 294C - destBegin = 3200 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 294D - srcEnd = 2966 - destBegin = 249C -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 2967 - srcEnd = 2975 - destBegin = 2474 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 2A21 - srcEnd = 2A73 - destBegin = 3041 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 2B21 - srcEnd = 2B76 - destBegin = 30A1 -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 2C21 - srcEnd = 2C26 - destBegin = 0410 -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 2C28 - srcEnd = 2C41 - destBegin = 0416 -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 2C51 - srcEnd = 2C56 - destBegin = 0430 -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 2C58 - srcEnd = 2C71 - destBegin = 0436 -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = 3021 - srcEnd = 307E - destBegin = 3400 -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = 3121 - srcEnd = 317E - destBegin = 345E -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = 3221 - srcEnd = 327E - destBegin = 34BC -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = 3321 - srcEnd = 337E - destBegin = 351A -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = 3421 - srcEnd = 347E - destBegin = 3578 -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = 3521 - srcEnd = 357E - destBegin = 35D6 -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = 3621 - srcEnd = 367E - destBegin = 3634 -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = 3721 - srcEnd = 377E - destBegin = 3692 -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = 3821 - srcEnd = 387E - destBegin = 36F0 -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = 3921 - srcEnd = 397E - destBegin = 374E -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = 3A21 - srcEnd = 3A7E - destBegin = 37AC -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = 3B21 - srcEnd = 3B7E - destBegin = 380A -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = 3C21 - srcEnd = 3C7E - destBegin = 3868 -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = 3D21 - srcEnd = 3D7E - destBegin = 38C6 -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = 3E21 - srcEnd = 3E7E - destBegin = 3924 -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = 3F21 - srcEnd = 3F7E - destBegin = 3982 -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = 4021 - srcEnd = 407E - destBegin = 39E0 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = 4121 - srcEnd = 417E - destBegin = 3A3E -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = 4221 - srcEnd = 427E - destBegin = 3A9C -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = 4321 - srcEnd = 437E - destBegin = 3AFA -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = 4421 - srcEnd = 447E - destBegin = 3B58 -End of Item 002E - -Begin of Item 002F - Format 0 - srcBegin = 4521 - srcEnd = 457E - destBegin = 3BB6 -End of Item 002F - -Begin of Item 0030 - Format 0 - srcBegin = 4621 - srcEnd = 467E - destBegin = 3C14 -End of Item 0030 - -Begin of Item 0031 - Format 0 - srcBegin = 4721 - srcEnd = 477E - destBegin = 3C72 -End of Item 0031 - -Begin of Item 0032 - Format 0 - srcBegin = 4821 - srcEnd = 487E - destBegin = 3CD0 -End of Item 0032 - -Begin of Item 0033 - Format 0 - srcBegin = 515B - srcEnd = 5160 - destBegin = F90E -End of Item 0033 - -Begin of Item 0034 - Format 0 - srcBegin = 5246 - srcEnd = 524B - destBegin = F933 -End of Item 0034 - -Begin of Item 0035 - Format 0 - srcBegin = 524D - srcEnd = 5257 - destBegin = F939 -End of Item 0035 - -Begin of Item 0036 - Format 0 - srcBegin = 5264 - srcEnd = 526B - destBegin = F94A -End of Item 0036 - -Begin of Item 0037 - Format 0 - srcBegin = 5270 - srcEnd = 5275 - destBegin = F952 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 2121 - srcEnd = 217E - mappingOffset = 0000 - Mapping = - 3000 3001 3002 30FB 2025 2026 00A8 3003 - 2013 2014 2016 FF3C FF5E 2018 2019 201C - 201D 3014 3015 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 00B1 00D7 00F7 - 2260 2264 2265 221E 2234 00B0 2032 2033 - 2103 212B FFE0 FFE1 FFE5 2642 2640 2220 - 22A5 2312 2202 2207 2261 2252 00A7 203B - 2606 2605 25CB 25CF 25CE 25C7 25C6 25A1 - 25A0 25B3 25B2 25BD 25BC 2192 2190 2191 - 2193 2194 3013 00AB 00BB 221A 223D 221D - 2235 222B 222C 2208 220B 2286 2287 2282 - 2283 222A 2229 2227 2228 FFE2 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 2221 - srcEnd = 2265 - mappingOffset = 005E - Mapping = - 21D2 21D4 2200 2203 00B4 02DC 02C7 02D8 - 02DD 02DA 02D9 00B8 02DB 00A1 00BF 2236 - 222E 2211 220F 00A4 2109 2030 25C1 25C0 - 25B7 25B6 2664 2660 2661 2665 2667 2663 - 25C9 25C8 25A3 25D0 25D1 2592 25A4 25A5 - 25A8 25A7 25A6 25A9 2668 260F 260E 261C - 261E 00B6 2020 2021 2195 2197 2199 2196 - 2198 266D 2669 266A 266C 327F 321C 2116 - 33C7 2122 33C2 33D8 2121 -End of Item 0039 - -Begin of Item 003A - Format 2 - srcBegin = 235C - destBegin = FFE6 -End of Item 003A - -Begin of Item 003B - Format 2 - srcBegin = 237E - destBegin = FFE3 -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = 2621 - srcEnd = 265C - mappingOffset = 00A3 - Mapping = - 2500 2502 250C 2510 2518 2514 251C 252C - 2524 2534 253C 2501 2503 250F 2513 251B - 2517 2523 2533 252B 253B 254B 2520 252F - 2528 2537 253F 251D 2530 2525 2538 2542 - 2512 2511 251A 2519 2516 2515 250E 250D - 251E 251F 2521 2522 2526 2527 2529 252A - 252D 252E 2531 2532 2535 2536 2539 253A - 253D 253E 2540 2541 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = 2721 - srcEnd = 276F - mappingOffset = 00DF - Mapping = - 3395 3396 3397 2113 3398 33C4 33A3 33A4 - 33A5 33A6 FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 33CA 338D 338E 338F - 33CF 3388 3389 33C8 33A7 33A8 FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 3380 3381 3382 3383 3384 FFFD FFFD FFFD - FFFD FFFD FFFD 3390 3391 3392 3393 3394 - 2126 33C0 33C1 338A 338B 338C 33D6 33C5 - 33AD 33AE 33AF 33DB 33A9 33AA 33AB 33AC - 33DD 33D0 33D3 33C3 33C9 33DC 33C6 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 2821 - srcEnd = 282F - mappingOffset = 012E - Mapping = - 00C6 00D0 00AA 0126 FFFD 0132 FFFD 013F - 0141 00D8 0152 00BA 00DE 0166 014A -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 2876 - srcEnd = 287E - mappingOffset = 013D - Mapping = - 00BD 2153 2154 00BC 00BE 215B 215C 215D - 215E -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 2921 - srcEnd = 2930 - mappingOffset = 0146 - Mapping = - 00E6 0111 00F0 0127 0131 0133 0138 0140 - 0142 00F8 0153 00DF 00FE 0167 014B 0149 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 2976 - srcEnd = 297E - mappingOffset = 0156 - Mapping = - 00B9 00B2 00B3 2074 207F 2081 2082 2083 - 2084 -End of Item 0041 - -Begin of Item 0042 - Format 2 - srcBegin = 2C27 - destBegin = 0401 -End of Item 0042 - -Begin of Item 0043 - Format 2 - srcBegin = 2C57 - destBegin = 0451 -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 4A21 - srcEnd = 4A7E - mappingOffset = 015F - Mapping = - 4F3D 4F73 5047 50F9 52A0 53EF 5475 54E5 - 5609 5AC1 5BB6 6687 67B6 67B7 67EF 6B4C - 73C2 75C2 7A3C 82DB 8304 8857 8888 8A36 - 8CC8 8DCF 8EFB 8FE6 99D5 523B 5374 5404 - 606A 6164 6BBC 73CF 811A 89BA 89D2 95A3 - 4F83 520A 58BE 5978 59E6 5E72 5E79 61C7 - 63C0 6746 67EC 687F 6F97 764E 770B 78F5 - 7A08 7AFF 7C21 809D 826E 8271 8AEB 9593 - 4E6B 559D 66F7 6E34 78A3 7AED 845B 8910 - 874E 97A8 52D8 574E 582A 5D4C 611F 61BE - 6221 6562 67D1 6A44 6E1B 7518 75B3 76E3 - 77B0 7D3A 90AF 9451 9452 9F95 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 4B21 - srcEnd = 4B7E - mappingOffset = 01BD - Mapping = - 5323 5CAC 7532 80DB 9240 9598 525B 5808 - 59DC 5CA1 5D17 5EB7 5F3A 5F4A 6177 6C5F - 757A 7586 7CE0 7D73 7DB1 7F8C 8154 8221 - 8591 8941 8B1B 92FC 964D 9C47 4ECB 4EF7 - 500B 51F1 584F 6137 613E 6168 6539 69EA - 6F11 75A5 7686 76D6 7B87 82A5 84CB F900 - 93A7 958B 5580 5BA2 5751 F901 7CB3 7FB9 - 91B5 5028 53BB 5C45 5DE8 62D2 636E 64DA - 64E7 6E20 70AC 795B 8DDD 8E1E F902 907D - 9245 92F8 4E7E 4EF6 5065 5DFE 5EFA 6106 - 6957 8171 8654 8E47 9375 9A2B 4E5E 5091 - 6770 6840 5109 528D 5292 6AA2 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 4C21 - srcEnd = 4C7E - mappingOffset = 021B - Mapping = - 77BC 9210 9ED4 52AB 602F 8FF2 5048 61A9 - 63ED 64CA 683C 6A84 6FC0 8188 89A1 9694 - 5805 727D 72AC 7504 7D79 7E6D 80A9 898B - 8B74 9063 9D51 6289 6C7A 6F54 7D50 7F3A - 8A23 517C 614A 7B9D 8B19 9257 938C 4EAC - 4FD3 501E 50BE 5106 52C1 52CD 537F 5770 - 5883 5E9A 5F91 6176 61AC 64CE 656C 666F - 66BB 66F4 6897 6D87 7085 70F1 749F 74A5 - 74CA 75D9 786C 78EC 7ADF 7AF6 7D45 7D93 - 8015 803F 811B 8396 8B66 8F15 9015 93E1 - 9803 9838 9A5A 9BE8 4FC2 5553 583A 5951 - 5B63 5C46 60B8 6212 6842 68B0 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 4D21 - srcEnd = 4D7E - mappingOffset = 0279 - Mapping = - 68E8 6EAA 754C 7678 78CE 7A3D 7CFB 7E6B - 7E7C 8A08 8AA1 8C3F 968E 9DC4 53E4 53E9 - 544A 5471 56FA 59D1 5B64 5C3B 5EAB 62F7 - 6537 6545 6572 66A0 67AF 69C1 6CBD 75FC - 7690 777E 7A3F 7F94 8003 80A1 818F 82E6 - 82FD 83F0 85C1 8831 88B4 8AA5 F903 8F9C - 932E 96C7 9867 9AD8 9F13 54ED 659B 66F2 - 688F 7A40 8C37 9D60 56F0 5764 5D11 6606 - 68B1 68CD 6EFE 7428 889E 9BE4 6C68 F904 - 9AA8 4F9B 516C 5171 529F 5B54 5DE5 6050 - 606D 62F1 63A7 653B 73D9 7A7A 86A3 8CA2 - 978F 4E32 5BE1 6208 679C 74DC -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 4E21 - srcEnd = 4E7E - mappingOffset = 02D7 - Mapping = - 79D1 83D3 8A87 8AB2 8DE8 904E 934B 9846 - 5ED3 69E8 85FF 90ED F905 51A0 5B98 5BEC - 6163 68FA 6B3E 704C 742F 74D8 7BA1 7F50 - 83C5 89C0 8CAB 95DC 9928 522E 605D 62EC - 9002 4F8A 5149 5321 58D9 5EE3 66E0 6D38 - 709A 72C2 73D6 7B50 80F1 945B 5366 639B - 7F6B 4E56 5080 584A 58DE 602A 6127 62D0 - 69D0 9B41 5B8F 7D18 80B1 8F5F 4EA4 50D1 - 54AC 55AC 5B0C 5DA0 5DE7 652A 654E 6821 - 6A4B 72E1 768E 77EF 7D5E 7FF9 81A0 854E - 86DF 8F03 8F4E 90CA 9903 9A55 9BAB 4E18 - 4E45 4E5D 4EC7 4FF1 5177 52FE -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 4F21 - srcEnd = 4F7E - mappingOffset = 0335 - Mapping = - 5340 53E3 53E5 548E 5614 5775 57A2 5BC7 - 5D87 5ED0 61FC 62D8 6551 67B8 67E9 69CB - 6B50 6BC6 6BEC 6C42 6E9D 7078 72D7 7396 - 7403 77BF 77E9 7A76 7D7F 8009 81FC 8205 - 820A 82DF 8862 8B33 8CFC 8EC0 9011 90B1 - 9264 92B6 99D2 9A45 9CE9 9DD7 9F9C 570B - 5C40 83CA 97A0 97AB 9EB4 541B 7A98 7FA4 - 88D9 8ECD 90E1 5800 5C48 6398 7A9F 5BAE - 5F13 7A79 7AAE 828E 8EAC 5026 5238 52F8 - 5377 5708 62F3 6372 6B0A 6DC3 7737 53A5 - 7357 8568 8E76 95D5 673A 6AC3 6F70 8A6D - 8ECC 994B F906 6677 6B78 8CB4 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 5021 - srcEnd = 507E - mappingOffset = 0393 - Mapping = - 9B3C F907 53EB 572D 594E 63C6 69FB 73EA - 7845 7ABA 7AC5 7CFE 8475 898F 8D73 9035 - 95A8 52FB 5747 7547 7B60 83CC 921E F908 - 6A58 514B 524B 5287 621F 68D8 6975 9699 - 50C5 52A4 52E4 61C3 65A4 6839 69FF 747E - 7B4B 82B9 83EB 89B2 8B39 8FD1 9949 F909 - 4ECA 5997 64D2 6611 6A8E 7434 7981 79BD - 82A9 887E 887F 895F F90A 9326 4F0B 53CA - 6025 6271 6C72 7D1A 7D66 4E98 5162 77DC - 80AF 4F01 4F0E 5176 5180 55DC 5668 573B - 57FA 57FC 5914 5947 5993 5BC4 5C90 5D0E - 5DF1 5E7E 5FCC 6280 65D7 65E3 -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 5121 - srcEnd = 517E - mappingOffset = 03F1 - Mapping = - 671E 671F 675E 68CB 68C4 6A5F 6B3A 6C23 - 6C7D 6C82 6DC7 7398 7426 742A 7482 74A3 - 7578 757F 7881 78EF 7941 7947 7948 797A - 7B95 7D00 7DBA 7F88 8006 802D 808C 8A18 - 8B4F 8C48 8D77 9321 9324 98E2 9951 9A0E - 9A0F 9A65 9E92 7DCA 4F76 5409 62EE 6854 - 91D1 55AB 513A F90B F90C 5A1C 61E6 F90D - 62CF 62FF FFFD FFFD FFFD FFFD FFFD FFFD - 90A3 F914 F915 F916 F917 F918 8AFE F919 - F91A F91B F91C 6696 F91D 7156 F91E F91F - 96E3 F920 634F 637A 5357 F921 678F 6960 - 6E73 F922 7537 F923 F924 F925 -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 5221 - srcEnd = 524C - mappingOffset = 044F - Mapping = - 7D0D F926 F927 8872 56CA 5A18 F928 F929 - F92A F92B F92C 4E43 F92D 5167 5948 67F0 - 8010 F92E 5973 5E74 649A 79CA 5FF5 606C - 62C8 637B 5BE7 5BD7 52AA F92F 5974 5F29 - 6012 F930 F931 F932 7459 FFFD FFFD FFFD - FFFD FFFD FFFD 99D1 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 5258 - srcEnd = 527E - mappingOffset = 047B - Mapping = - 6FC3 F944 F945 81BF 8FB2 60F1 F946 F947 - 8166 F948 F949 5C3F FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD 5AE9 8A25 677B 7D10 - FFFD FFFD FFFD FFFD FFFD FFFD 80FD F958 - F959 5C3C 6CE5 533F 6EBA 591A 8336 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 5321 - srcEnd = 537E - mappingOffset = 04A2 - Mapping = - 4E39 4EB6 4F46 55AE 5718 58C7 5F56 65B7 - 65E6 6A80 6BB5 6E4D 77ED 7AEF 7C1E 7DDE - 86CB 8892 9132 935B 64BB 6FBE 737A 75B8 - 9054 5556 574D 61BA 64D4 66C7 6DE1 6E5B - 6F6D 6FB9 75F0 8043 81BD 8541 8983 8AC7 - 8B5A 931F 6C93 7553 7B54 8E0F 905D 5510 - 5802 5858 5E62 6207 649E 68E0 7576 7CD6 - 87B3 9EE8 4EE3 5788 576E 5927 5C0D 5CB1 - 5E36 5F85 6234 64E1 73B3 81FA 888B 8CB8 - 968A 9EDB 5B85 5FB7 60B3 5012 5200 5230 - 5716 5835 5857 5C0E 5C60 5CF6 5D8B 5EA6 - 5F92 60BC 6311 6389 6417 6843 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 5421 - srcEnd = 547E - mappingOffset = 0500 - Mapping = - 68F9 6AC2 6DD8 6E21 6ED4 6FE4 71FE 76DC - 7779 79B1 7A3B 8404 89A9 8CED 8DF3 8E48 - 9003 9014 9053 90FD 934D 9676 97DC 6BD2 - 7006 7258 72A2 7368 7763 79BF 7BE4 7E9B - 8B80 58A9 60C7 6566 65FD 66BE 6C8C 711E - 71C9 8C5A 9813 4E6D 7A81 4EDD 51AC 51CD - 52D5 540C 61A7 6771 6850 68DF 6D1E 6F7C - 75BC 77B3 7AE5 80F4 8463 9285 515C 6597 - 675C 6793 75D8 7AC7 8373 F95A 8C46 9017 - 982D 5C6F 81C0 829A 9041 906F 920D 5F97 - 5D9D 6A59 71C8 767B 7B49 85E4 8B04 9127 - 9A30 5587 61F6 F95B 7669 7F85 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 5521 - srcEnd = 557E - mappingOffset = 055E - Mapping = - 863F 87BA 88F8 908F F95C 6D1B 70D9 73DE - 7D61 843D F95D 916A 99F1 F95E 4E82 5375 - 6B04 6B12 703E 721B 862D 9E1E 524C 8FA3 - 5D50 64E5 652C 6B16 6FEB 7C43 7E9C 85CD - 8964 89BD 62C9 81D8 881F 5ECA 6717 6D6A - 72FC 7405 746F 8782 90DE 4F86 5D0D 5FA0 - 840A 51B7 63A0 7565 4EAE 5006 5169 51C9 - 6881 6A11 7CAE 7CB1 7CE7 826F 8AD2 8F1B - 91CF 4FB6 5137 52F5 5442 5EEC 616E 623E - 65C5 6ADA 6FFE 792A 85DC 8823 95AD 9A62 - 9A6A 9E97 9ECE 529B 66C6 6B77 701D 792B - 8F62 9742 6190 6200 6523 6F23 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 5621 - srcEnd = 567E - mappingOffset = 05BC - Mapping = - 7149 7489 7DF4 806F 84EE 8F26 9023 934A - 51BD 5217 52A3 6D0C 70C8 88C2 5EC9 6582 - 6BAE 6FC2 7C3E 7375 4EE4 4F36 56F9 F95F - 5CBA 5DBA 601C 73B2 7B2D 7F9A 7FCE 8046 - 901E 9234 96F6 9748 9818 9F61 4F8B 6FA7 - 79AE 91B4 96B7 52DE F960 6488 64C4 6AD3 - 6F5E 7018 7210 76E7 8001 8606 865C 8DEF - 8F05 9732 9B6F 9DFA 9E75 788C 797F 7DA0 - 83C9 9304 9E7F 9E93 8AD6 58DF 5F04 6727 - 7027 74CF 7C60 807E 5121 7028 7262 78CA - 8CC2 8CDA 8CF4 96F7 4E86 50DA 5BEE 5ED6 - 6599 71CE 7642 77AD 804A 84FC -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 5721 - srcEnd = 577E - mappingOffset = 061A - Mapping = - 907C 9B27 9F8D 58D8 5A41 5C62 6A13 6DDA - 6F0F 763B 7D2F 7E37 851E 8938 93E4 964B - 5289 65D2 67F3 69B4 6D41 6E9C 700F 7409 - 7460 7559 7624 786B 8B2C 985E 516D 622E - 9678 4F96 502B 5D19 6DEA 7DB8 8F2A 5F8B - 6144 6817 F961 9686 52D2 808B 51DC 51CC - 695E 7A1C 7DBE 83F1 9675 4FDA 5229 5398 - 540F 550E 5C65 60A7 674E 68A8 6D6C 7281 - 72F8 7406 7483 F962 75E2 7C6C 7F79 7FB8 - 8389 88CF 88E1 91CC 91D0 96E2 9BC9 541D - 6F7E 71D0 7498 85FA 8EAA 96A3 9C57 9E9F - 6797 6DCB 7433 81E8 9716 782C -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 5821 - srcEnd = 587E - mappingOffset = 0678 - Mapping = - 7ACB 7B20 7C92 6469 746A 75F2 78BC 78E8 - 99AC 9B54 9EBB 5BDE 5E55 6F20 819C 83AB - 9088 4E07 534D 5A29 5DD2 5F4E 6162 633D - 6669 66FC 6EFF 6F2B 7063 779E 842C 8513 - 883B 8F13 9945 9C3B 551C 62B9 672B 6CAB - 8309 896A 977A 4EA1 5984 5FD8 5FD9 671B - 7DB2 7F54 8292 832B 83BD 8F1E 9099 57CB - 59B9 5A92 5BD0 6627 679A 6885 6BCF 7164 - 7F75 8CB7 8CE3 9081 9B45 8108 8C8A 964C - 9A40 9EA5 5B5F 6C13 731B 76F2 76DF 840C - 51AA 8993 514D 5195 52C9 68C9 6C94 7704 - 7720 7DBF 7DEC 9762 9EB5 6EC5 -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 5921 - srcEnd = 597E - mappingOffset = 06D6 - Mapping = - 8511 51A5 540D 547D 660E 669D 6927 6E9F - 76BF 7791 8317 84C2 879F 9169 9298 9CF4 - 8882 4FAE 5192 52DF 59C6 5E3D 6155 6478 - 6479 66AE 67D0 6A21 6BCD 6BDB 725F 7261 - 7441 7738 77DB 8017 82BC 8305 8B00 8B28 - 8C8C 6728 6C90 7267 76EE 7766 7A46 9DA9 - 6B7F 6C92 5922 6726 8499 536F 5893 5999 - 5EDF 63CF 6634 6773 6E3A 732B 7AD7 82D7 - 9328 52D9 5DEB 61AE 61CB 620A 62C7 64AB - 65E0 6959 6B66 6BCB 7121 73F7 755D 7E46 - 821E 8302 856A 8AA3 8CBF 9727 9D61 58A8 - 9ED8 5011 520E 543B 554F 6587 -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 5A21 - srcEnd = 5A7E - mappingOffset = 0734 - Mapping = - 6C76 7D0A 7D0B 805E 868A 9580 96EF 52FF - 6C95 7269 5473 5A9A 5C3E 5D4B 5F4C 5FAE - 672A 68B6 6963 6E3C 6E44 7709 7C73 7F8E - 8587 8B0E 8FF7 9761 9EF4 5CB7 60B6 610D - 61AB 654F 65FB 65FC 6C11 6CEF 739F 73C9 - 7DE1 9594 5BC6 871C 8B10 525D 535A 62CD - 640F 64B2 6734 6A38 6CCA 73C0 749E 7B94 - 7C95 7E1B 818A 8236 8584 8FEB 96F9 99C1 - 4F34 534A 53CD 53DB 62CC 642C 6500 6591 - 69C3 6CEE 6F58 73ED 7554 7622 76E4 76FC - 78D0 78FB 792C 7D46 822C 87E0 8FD4 9812 - 98EF 52C3 62D4 64A5 6E24 6F51 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 5B21 - srcEnd = 5B7E - mappingOffset = 0792 - Mapping = - 767C 8DCB 91B1 9262 9AEE 9B43 5023 508D - 574A 59A8 5C28 5E47 5F77 623F 653E 65B9 - 65C1 6609 678B 699C 6EC2 78C5 7D21 80AA - 8180 822B 82B3 84A1 868C 8A2A 8B17 90A6 - 9632 9F90 500D 4FF3 F963 57F9 5F98 62DC - 6392 676F 6E43 7119 76C3 80CC 80DA 88F4 - 88F5 8919 8CE0 8F29 914D 966A 4F2F 4F70 - 5E1B 67CF 6822 767D 767E 9B44 5E61 6A0A - 7169 71D4 756A F964 7E41 8543 85E9 98DC - 4F10 7B4F 7F70 95A5 51E1 5E06 68B5 6C3E - 6C4E 6CDB 72AF 7BC4 8303 6CD5 743A 50FB - 5288 58C1 64D8 6A97 74A7 7656 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 5C21 - srcEnd = 5C7E - mappingOffset = 07F0 - Mapping = - 78A7 8617 95E2 9739 F965 535E 5F01 8B8A - 8FA8 8FAF 908A 5225 77A5 9C49 9F08 4E19 - 5002 5175 5C5B 5E77 661E 663A 67C4 68C5 - 70B3 7501 75C5 79C9 7ADD 8F27 9920 9A08 - 4FDD 5821 5831 5BF6 666E 6B65 6D11 6E7A - 6F7D 73E4 752B 83E9 88DC 8913 8B5C 8F14 - 4F0F 50D5 5310 535C 5B93 5FA9 670D 798F - 8179 832F 8514 8907 8986 8F39 8F3B 99A5 - 9C12 672C 4E76 4FF8 5949 5C01 5CEF 5CF0 - 6367 68D2 70FD 71A2 742B 7E2B 84EC 8702 - 9022 92D2 9CF3 4E0D 4ED8 4FEF 5085 5256 - 526F 5426 5490 57E0 592B 5A66 -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 5D21 - srcEnd = 5D7E - mappingOffset = 084E - Mapping = - 5B5A 5B75 5BCC 5E9C F966 6276 6577 65A7 - 6D6E 6EA5 7236 7B26 7C3F 7F36 8150 8151 - 819A 8240 8299 83A9 8A03 8CA0 8CE6 8CFB - 8D74 8DBA 90E8 91DC 961C 9644 99D9 9CE7 - 5317 5206 5429 5674 58B3 5954 596E 5FFF - 61A4 626E 6610 6C7E 711A 76C6 7C89 7CDE - 7D1B 82AC 8CC1 96F0 F967 4F5B 5F17 5F7F - 62C2 5D29 670B 68DA 787C 7E43 9D6C 4E15 - 5099 5315 532A 5351 5983 5A62 5E87 60B2 - 618A 6249 6279 6590 6787 69A7 6BD4 6BD6 - 6BD7 6BD8 6CB8 F968 7435 75FA 7812 7891 - 79D5 79D8 7C83 7DCB 7FE1 80A5 -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 5E21 - srcEnd = 5E7E - mappingOffset = 08AC - Mapping = - 813E 81C2 83F2 871A 88E8 8AB9 8B6C 8CBB - 9119 975E 98DB 9F3B 56AC 5B2A 5F6C 658C - 6AB3 6BAF 6D5C 6FF1 7015 725D 73AD 8CA7 - 8CD3 983B 6191 6C37 8058 9A01 4E4D 4E8B - 4E9B 4ED5 4F3A 4F3C 4F7F 4FDF 50FF 53F2 - 53F8 5506 55E3 56DB 58EB 5962 5A11 5BEB - 5BFA 5C04 5DF3 5E2B 5F99 601D 6368 659C - 65AF 67F6 67FB 68AD 6B7B 6C99 6CD7 6E23 - 7009 7345 7802 793E 7940 7960 79C1 7BE9 - 7D17 7D72 8086 820D 838E 84D1 86C7 88DF - 8A50 8A5E 8B1D 8CDC 8D66 8FAD 90AA 98FC - 99DF 9E9D 524A F969 6714 F96A -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 5F21 - srcEnd = 5F7E - mappingOffset = 090A - Mapping = - 5098 522A 5C71 6563 6C55 73CA 7523 759D - 7B97 849C 9178 9730 4E77 6492 6BBA 715E - 85A9 4E09 F96B 6749 68EE 6E17 829F 8518 - 886B 63F7 6F81 9212 98AF 4E0A 50B7 50CF - 511F 5546 55AA 5617 5B40 5C19 5CE0 5E38 - 5E8A 5EA0 5EC2 60F3 6851 6A61 6E58 723D - 7240 72C0 76F8 7965 7BB1 7FD4 88F3 89F4 - 8A73 8C61 8CDE 971C 585E 74BD 8CFD 55C7 - F96C 7A61 7D22 8272 7272 751F 7525 F96D - 7B19 5885 58FB 5DBC 5E8F 5EB6 5F90 6055 - 6292 637F 654D 6691 66D9 66F8 6816 68F2 - 7280 745E 7B6E 7D6E 7DD6 7F72 -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 6021 - srcEnd = 607E - mappingOffset = 0968 - Mapping = - 80E5 8212 85AF 897F 8A93 901D 92E4 9ECD - 9F20 5915 596D 5E2D 60DC 6614 6673 6790 - 6C50 6DC5 6F5F 77F3 78A9 84C6 91CB 932B - 4ED9 50CA 5148 5584 5B0B 5BA3 6247 657E - 65CB 6E32 717D 7401 7444 7487 74BF 766C - 79AA 7DDA 7E55 7FA8 817A 81B3 8239 861A - 87EC 8A75 8DE3 9078 9291 9425 994D 9BAE - 5368 5C51 6954 6CC4 6D29 6E2B 820C 859B - 893B 8A2D 8AAA 96EA 9F67 5261 66B9 6BB2 - 7E96 87FE 8D0D 9583 965D 651D 6D89 71EE - F96E 57CE 59D3 5BAC 6027 60FA 6210 661F - 665F 7329 73F9 76DB 7701 7B6C -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 6121 - srcEnd = 617E - mappingOffset = 09C6 - Mapping = - 8056 8072 8165 8AA0 9192 4E16 52E2 6B72 - 6D17 7A05 7B39 7D30 F96F 8CB0 53EC 562F - 5851 5BB5 5C0F 5C11 5DE2 6240 6383 6414 - 662D 68B3 6CBC 6D88 6EAF 701F 70A4 71D2 - 7526 758F 758E 7619 7B11 7BE0 7C2B 7D20 - 7D39 852C 856D 8607 8A34 900D 9061 90B5 - 92B7 97F6 9A37 4FD7 5C6C 675F 6D91 7C9F - 7E8C 8B16 8D16 901F 5B6B 5DFD 640D 84C0 - 905C 98E1 7387 5B8B 609A 677E 6DDE 8A1F - 8AA6 9001 980C 5237 F970 7051 788E 9396 - 8870 91D7 4FEE 53D7 55FD 56DA 5782 58FD - 5AC2 5B88 5CAB 5CC0 5E25 6101 -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 6221 - srcEnd = 627E - mappingOffset = 0A24 - Mapping = - 620D 624B 6388 641C 6536 6578 6A39 6B8A - 6C34 6D19 6F31 71E7 72E9 7378 7407 74B2 - 7626 7761 79C0 7A57 7AEA 7CB9 7D8F 7DAC - 7E61 7F9E 8129 8331 8490 84DA 85EA 8896 - 8AB0 8B90 8F38 9042 9083 916C 9296 92B9 - 968B 96A7 96A8 96D6 9700 9808 9996 9AD3 - 9B1A 53D4 587E 5919 5B70 5BBF 6DD1 6F5A - 719F 7421 74B9 8085 83FD 5DE1 5F87 5FAA - 6042 65EC 6812 696F 6A53 6B89 6D35 6DF3 - 73E3 76FE 77AC 7B4D 7D14 8123 821C 8340 - 84F4 8563 8A62 8AC4 9187 931E 9806 99B4 - 620C 8853 8FF0 9265 5D07 5D27 -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 6321 - srcEnd = 637E - mappingOffset = 0A82 - Mapping = - 5D69 745F 819D 8768 6FD5 62FE 7FD2 8936 - 8972 4E1E 4E58 50E7 52DD 5347 627F 6607 - 7E69 8805 965E 4F8D 5319 5636 59CB 5AA4 - 5C38 5C4E 5C4D 5E02 5F11 6043 65BD 662F - 6642 67BE 67F4 731C 77E2 793A 7FC5 8494 - 84CD 8996 8A66 8A69 8AE1 8C55 8C7A 57F4 - 5BD4 5F0F 606F 62ED 690D 6B96 6E5C 7184 - 7BD2 8755 8B58 8EFE 98DF 98FE 4F38 4F81 - 4FE1 547B 5A20 5BB8 613C 65B0 6668 71FC - 7533 795E 7D33 814E 81E3 8398 85AA 85CE - 8703 8A0A 8EAB 8F9B F971 8FC5 5931 5BA4 - 5BE6 6089 5BE9 5C0B 5FC3 6C81 -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 6421 - srcEnd = 647E - mappingOffset = 0AE0 - Mapping = - F972 6DF1 700B 751A 82AF 8AF6 4EC0 5341 - F973 96D9 6C0F 4E9E 4FC4 5152 555E 5A25 - 5CE8 6211 7259 82BD 83AA 86FE 8859 8A1D - 963F 96C5 9913 9D09 9D5D 580A 5CB3 5DBD - 5E44 60E1 6115 63E1 6A02 6E25 9102 9354 - 984E 9C10 9F77 5B89 5CB8 6309 664F 6848 - 773C 96C1 978D 9854 9B9F 65A1 8B01 8ECB - 95BC 5535 5CA9 5DD6 5EB5 6697 764C 83F4 - 95C7 58D3 62BC 72CE 9D28 4EF0 592E 600F - 663B 6B83 79E7 9D26 5393 54C0 57C3 5D16 - 611B 66D6 6DAF 788D 827E 9698 9744 5384 - 627C 6396 6DB2 7E0A 814B 984D -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 6521 - srcEnd = 657E - mappingOffset = 0B3E - Mapping = - 6AFB 7F4C 9DAF 9E1A 4E5F 503B 51B6 591C - 60F9 63F6 6930 723A 8036 F974 91CE 5F31 - F975 F976 7D04 82E5 846F 84BB 85E5 8E8D - F977 4F6F F978 F979 58E4 5B43 6059 63DA - 6518 656D 6698 F97A 694A 6A23 6D0B 7001 - 716C 75D2 760D 79B3 7A70 F97B 7F8A F97C - 8944 F97D 8B93 91C0 967D F97E 990A 5704 - 5FA1 65BC 6F01 7600 79A6 8A9E 99AD 9B5A - 9F6C 5104 61B6 6291 6A8D 81C6 5043 5830 - 5F66 7109 8A00 8AFA 5B7C 8616 4FFA 513C - 56B4 5944 63A9 6DF9 5DAA 696D 5186 4E88 - 4F59 F97F F980 F981 5982 F982 -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 6621 - srcEnd = 667E - mappingOffset = 0B9C - Mapping = - F983 6B5F 6C5D F984 74B5 7916 F985 8207 - 8245 8339 8F3F 8F5D F986 9918 F987 F988 - F989 4EA6 F98A 57DF 5F79 6613 F98B F98C - 75AB 7E79 8B6F F98D 9006 9A5B 56A5 5827 - 59F8 5A1F 5BB4 F98E 5EF6 F98F F990 6350 - 633B F991 693D 6C87 6CBF 6D8E 6D93 6DF5 - 6F14 F992 70DF 7136 7159 F993 71C3 71D5 - F994 784F 786F F995 7B75 7DE3 F996 7E2F - F997 884D 8EDF F998 F999 F99A 925B F99B - 9CF6 F99C F99D F99E 6085 6D85 F99F 71B1 - F9A0 F9A1 95B1 53AD F9A2 F9A3 F9A4 67D3 - F9A5 708E 7130 7430 8276 82D2 -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 6721 - srcEnd = 677E - mappingOffset = 0BFA - Mapping = - F9A6 95BB 9AE5 9E7D 66C4 F9A7 71C1 8449 - F9A8 F9A9 584B F9AA F9AB 5DB8 5F71 F9AC - 6620 668E 6979 69AE 6C38 6CF3 6E36 6F41 - 6FDA 701B 702F 7150 71DF 7370 F9AD 745B - F9AE 74D4 76C8 7A4E 7E93 F9AF F9B0 82F1 - 8A60 8FCE F9B1 9348 F9B2 9719 F9B3 F9B4 - 4E42 502A F9B5 5208 53E1 66F3 6C6D 6FCA - 730A 777F 7A62 82AE 85DD 8602 F9B6 88D4 - 8A63 8B7D 8C6B F9B7 92B3 F9B8 9713 9810 - 4E94 4F0D 4FC9 50B2 5348 543E 5433 55DA - 5862 58BA 5967 5A1B 5BE4 609F F9B9 61CA - 6556 65FF 6664 68A7 6C5A 6FB3 -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 6821 - srcEnd = 687E - mappingOffset = 0C58 - Mapping = - 70CF 71AC 7352 7B7D 8708 8AA4 9C32 9F07 - 5C4B 6C83 7344 7389 923A 6EAB 7465 761F - 7A69 7E15 860A 5140 58C5 64C1 74EE 7515 - 7670 7FC1 9095 96CD 9954 6E26 74E6 7AA9 - 7AAA 81E5 86D9 8778 8A1B 5A49 5B8C 5B9B - 68A1 6900 6D63 73A9 7413 742C 7897 7DE9 - 7FEB 8118 8155 839E 8C4C 962E 9811 66F0 - 5F80 65FA 6789 6C6A 738B 502D 5A03 6B6A - 77EE 5916 5D6C 5DCD 7325 754F F9BA F9BB - 50E5 51F9 582F 592D 5996 59DA 5BE5 F9BC - F9BD 5DA2 62D7 6416 6493 64FE F9BE 66DC - F9BF 6A48 F9C0 71FF 7464 F9C1 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 6921 - srcEnd = 697E - mappingOffset = 0CB6 - Mapping = - 7A88 7AAF 7E47 7E5E 8000 8170 F9C2 87EF - 8981 8B20 9059 F9C3 9080 9952 617E 6B32 - 6D74 7E1F 8925 8FB1 4FD1 50AD 5197 52C7 - 57C7 5889 5BB9 5EB8 6142 6995 6D8C 6E67 - 6EB6 7194 7462 7528 752C 8073 8338 84C9 - 8E0A 9394 93DE F9C4 4E8E 4F51 5076 512A - 53C8 53CB 53F3 5B87 5BD3 5C24 611A 6182 - 65F4 725B 7397 7440 76C2 7950 7991 79B9 - 7D06 7FBD 828B 85D5 865E 8FC2 9047 90F5 - 91EA 9685 96E8 96E9 52D6 5F67 65ED 6631 - 682F 715C 7A36 90C1 980A 4E91 F9C5 6A52 - 6B9E 6F90 7189 8018 82B8 8553 -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 6A21 - srcEnd = 6A7E - mappingOffset = 0D14 - Mapping = - 904B 9695 96F2 97FB 851A 9B31 4E90 718A - 96C4 5143 539F 54E1 5713 5712 57A3 5A9B - 5AC4 5BC3 6028 613F 63F4 6C85 6D39 6E72 - 6E90 7230 733F 7457 82D1 8881 8F45 9060 - F9C6 9662 9858 9D1B 6708 8D8A 925E 4F4D - 5049 50DE 5371 570D 59D4 5A01 5C09 6170 - 6690 6E2D 7232 744B 7DEF 80C3 840E 8466 - 853F 875F 885B 8918 8B02 9055 97CB 9B4F - 4E73 4F91 5112 516A F9C7 552F 55A9 5B7A - 5BA5 5E7C 5E7D 5EBE 60A0 60DF 6108 6109 - 63C4 6538 6709 F9C8 67D4 67DA F9C9 6961 - 6962 6CB9 6D27 F9CA 6E38 F9CB -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 6B21 - srcEnd = 6B7E - mappingOffset = 0D72 - Mapping = - 6FE1 7336 7337 F9CC 745C 7531 F9CD 7652 - F9CE F9CF 7DAD 81FE 8438 88D5 8A98 8ADB - 8AED 8E30 8E42 904A 903E 907A 9149 91C9 - 936E F9D0 F9D1 5809 F9D2 6BD3 8089 80B2 - F9D3 F9D4 5141 596B 5C39 F9D5 F9D6 6F64 - 73A7 80E4 8D07 F9D7 9217 958F F9D8 F9D9 - F9DA F9DB 807F 620E 701C 7D68 878D F9DC - 57A0 6069 6147 6BB7 8ABE 9280 96B1 4E59 - 541F 6DEB 852D 9670 97F3 98EE 63D6 6CE3 - 9091 51DD 61C9 81BA 9DF9 4F9D 501A 5100 - 5B9C 610F 61FF 64EC 6905 6BC5 7591 77E3 - 7FA9 8264 858F 87FB 8863 8ABC -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 6C21 - srcEnd = 6C7E - mappingOffset = 0DD0 - Mapping = - 8B70 91AB 4E8C 4EE5 4F0A F9DD F9DE 5937 - 59E8 F9DF 5DF2 5F1B 5F5B 6021 F9E0 F9E1 - F9E2 F9E3 723E 73E5 F9E4 7570 75CD F9E5 - 79FB F9E6 800C 8033 8084 82E1 8351 F9E7 - F9E8 8CBD 8CB3 9087 F9E9 F9EA 98F4 990C - F9EB F9EC 7037 76CA 7FCA 7FCC 7FFC 8B1A - 4EBA 4EC1 5203 5370 F9ED 54BD 56E0 59FB - 5BC5 5F15 5FCD 6E6E F9EE F9EF 7D6A 8335 - F9F0 8693 8A8D F9F1 976D 9777 F9F2 F9F3 - 4E00 4F5A 4F7E 58F9 65E5 6EA2 9038 93B0 - 99B9 4EFB 58EC 598A 59D9 6041 F9F4 F9F5 - 7A14 F9F6 834F 8CC3 5165 5344 -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 6D21 - srcEnd = 6D7E - mappingOffset = 0E2E - Mapping = - F9F7 F9F8 F9F9 4ECD 5269 5B55 82BF 4ED4 - 523A 54A8 59C9 59FF 5B50 5B57 5B5C 6063 - 6148 6ECB 7099 716E 7386 74F7 75B5 78C1 - 7D2B 8005 81EA 8328 8517 85C9 8AEE 8CC7 - 96CC 4F5C 52FA 56BC 65AB 6628 707C 70B8 - 7235 7DBD 828D 914C 96C0 9D72 5B71 68E7 - 6B98 6F7A 76DE 5C91 66AB 6F5B 7BB4 7C2A - 8836 96DC 4E08 4ED7 5320 5834 58BB 58EF - 596C 5C07 5E33 5E84 5F35 638C 66B2 6756 - 6A1F 6AA3 6B0C 6F3F 7246 F9FA 7350 748B - 7AE0 7CA7 8178 81DF 81E7 838A 846C 8523 - 8594 85CF 88DD 8D13 91AC 9577 -End of Item 0068 - -Begin of Item 0069 - Format 1 - srcBegin = 6E21 - srcEnd = 6E7E - mappingOffset = 0E8C - Mapping = - 969C 518D 54C9 5728 5BB0 624D 6750 683D - 6893 6E3D 6ED3 707D 7E21 88C1 8CA1 8F09 - 9F4B 9F4E 722D 7B8F 8ACD 931A 4F47 4F4E - 5132 5480 59D0 5E95 62B5 6775 696E 6A17 - 6CAE 6E1A 72D9 732A 75BD 7BB8 7D35 82E7 - 83F9 8457 85F7 8A5B 8CAF 8E87 9019 90B8 - 96CE 9F5F 52E3 540A 5AE1 5BC2 6458 6575 - 6EF4 72C4 F9FB 7684 7A4D 7B1B 7C4D 7E3E - 7FDF 837B 8B2B 8CCA 8D64 8DE1 8E5F 8FEA - 8FF9 9069 93D1 4F43 4F7A 50B3 5168 5178 - 524D 526A 5861 587C 5960 5C08 5C55 5EDB - 609B 6230 6813 6BBF 6C08 6FB1 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 6F21 - srcEnd = 6F7E - mappingOffset = 0EEA - Mapping = - 714E 7420 7530 7538 7551 7672 7B4C 7B8B - 7BAD 7BC6 7E8F 8A6E 8F3E 8F49 923F 9293 - 9322 942B 96FB 985A 986B 991E 5207 622A - 6298 6D59 7664 7ACA 7BC0 7D76 5360 5CBE - 5E97 6F38 70B9 7C98 9711 9B8E 9EDE 63A5 - 647A 8776 4E01 4E95 4EAD 505C 5075 5448 - 59C3 5B9A 5E40 5EAD 5EF7 5F81 60C5 633A - 653F 6574 65CC 6676 6678 67FE 6968 6A89 - 6B63 6C40 6DC0 6DE8 6E1F 6E5E 701E 70A1 - 738E 73FD 753A 775B 7887 798E 7A0B 7A7D - 7CBE 7D8E 8247 8A02 8AEA 8C9E 912D 914A - 91D8 9266 92CC 9320 9706 9756 -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = 7021 - srcEnd = 707E - mappingOffset = 0F48 - Mapping = - 975C 9802 9F0E 5236 5291 557C 5824 5E1D - 5F1F 608C 63D0 68AF 6FDF 796D 7B2C 81CD - 85BA 88FD 8AF8 8E44 918D 9664 969B 973D - 984C 9F4A 4FCE 5146 51CB 52A9 5632 5F14 - 5F6B 63AA 64CD 65E9 6641 66FA 66F9 671D - 689D 68D7 69FD 6F15 6F6E 7167 71E5 722A - 74AA 773A 7956 795A 79DF 7A20 7A95 7C97 - 7CDF 7D44 7E70 8087 85FB 86A4 8A54 8ABF - 8D99 8E81 9020 906D 91E3 963B 96D5 9CE5 - 65CF 7C07 8DB3 93C3 5B58 5C0A 5352 62D9 - 731D 5027 5B97 5F9E 60B0 616B 68D5 6DD9 - 742E 7A2E 7D42 7D9C 7E31 816B -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 7121 - srcEnd = 717E - mappingOffset = 0FA6 - Mapping = - 8E2A 8E35 937E 9418 4F50 5750 5DE6 5EA7 - 632B 7F6A 4E3B 4F4F 4F8F 505A 59DD 80C4 - 546A 5468 55FE 594F 5B99 5DDE 5EDA 665D - 6731 67F1 682A 6CE8 6D32 6E4A 6F8D 70B7 - 73E0 7587 7C4C 7D02 7D2C 7DA2 821F 86DB - 8A3B 8A85 8D70 8E8A 8F33 9031 914E 9152 - 9444 99D0 7AF9 7CA5 4FCA 5101 51C6 57C8 - 5BEF 5CFB 6659 6A3D 6D5A 6E96 6FEC 710C - 756F 7AE3 8822 9021 9075 96CB 99FF 8301 - 4E2D 4EF2 8846 91CD 537D 6ADB 696B 6C41 - 847A 589E 618E 66FE 62EF 70DD 7511 75C7 - 7E52 84B8 8B49 8D08 4E4B 53EA -End of Item 006C - -Begin of Item 006D - Format 1 - srcBegin = 7221 - srcEnd = 727E - mappingOffset = 1004 - Mapping = - 54AB 5730 5740 5FD7 6301 6307 646F 652F - 65E8 667A 679D 67B3 6B62 6C60 6C9A 6F2C - 77E5 7825 7949 7957 7D19 80A2 8102 81F3 - 829D 82B7 8718 8A8C F9FC 8D04 8DBE 9072 - 76F4 7A19 7A37 7E54 8077 5507 55D4 5875 - 632F 6422 6649 664B 686D 699B 6B84 6D25 - 6EB1 73CD 7468 74A1 755B 75B9 76E1 771E - 778B 79E6 7E09 7E1D 81FB 852F 8897 8A3A - 8CD1 8EEB 8FB0 9032 93AD 9663 9673 9707 - 4F84 53F1 59EA 5AC9 5E19 684E 74C6 75BE - 79E9 7A92 81A3 86ED 8CEA 8DCC 8FED 659F - 6715 F9FD 57F7 6F57 7DDD 8F2F -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = 7321 - srcEnd = 737E - mappingOffset = 1062 - Mapping = - 93F6 96C6 5FB5 61F2 6F84 4E14 4F98 501F - 53C9 55DF 5D6F 5DEE 6B21 6B64 78CB 7B9A - F9FE 8E49 8ECA 906E 6349 643E 7740 7A84 - 932F 947F 9F6A 64B0 6FAF 71E6 74A8 74DA - 7AC4 7C12 7E82 7CB2 7E98 8B9A 8D0A 947D - 9910 994C 5239 5BDF 64E6 672D 7D2E 50ED - 53C3 5879 6158 6159 61FA 65AC 7AD9 8B92 - 8B96 5009 5021 5275 5531 5A3C 5EE0 5F70 - 6134 655E 660C 6636 66A2 69CD 6EC4 6F32 - 7316 7621 7A93 8139 8259 83D6 84BC 50B5 - 57F0 5BC0 5BE8 5F69 63A1 7826 7DB5 83DC - 8521 91C7 91F5 518A 67F5 7B56 -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = 7421 - srcEnd = 747E - mappingOffset = 10C0 - Mapping = - 8CAC 51C4 59BB 60BD 8655 501C F9FF 5254 - 5C3A 617D 621A 62D3 64F2 65A5 6ECC 7620 - 810A 8E60 965F 96BB 4EDF 5343 5598 5929 - 5DDD 64C5 6CC9 6DFA 7394 7A7F 821B 85A6 - 8CE4 8E10 9077 91E7 95E1 9621 97C6 51F8 - 54F2 5586 5FB9 64A4 6F88 7DB4 8F1F 8F4D - 9435 50C9 5C16 6CBE 6DFB 751B 77BB 7C3D - 7C64 8A79 8AC2 581E 59BE 5E16 6377 7252 - 758A 776B 8ADC 8CBC 8F12 5EF3 6674 6DF8 - 807D 83C1 8ACB 9751 9BD6 FA00 5243 66FF - 6D95 6EEF 7DE0 8AE6 902E 905E 9AD4 521D - 527F 54E8 6194 6284 62DB 68A2 -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 7521 - srcEnd = 757E - mappingOffset = 111E - Mapping = - 6912 695A 6A35 7092 7126 785D 7901 790E - 79D2 7A0D 8096 8278 82D5 8349 8549 8C82 - 8D85 9162 918B 91AE 4FC3 56D1 71ED 77D7 - 8700 89F8 5BF8 5FD6 6751 90A8 53E2 585A - 5BF5 60A4 6181 6460 7E3D 8070 8525 9283 - 64AE 50AC 5D14 6700 589C 62BD 63A8 690E - 6978 6A1E 6E6B 76BA 79CB 82BB 8429 8ACF - 8DA8 8FFD 9112 914B 919C 9310 9318 939A - 96DB 9A36 9C0D 4E11 755C 795D 7AFA 7B51 - 7BC9 7E2E 84C4 8E59 8E74 8EF8 9010 6625 - 693F 7443 51FA 672E 9EDC 5145 5FE0 6C96 - 87F2 885D 8877 60B4 81B5 8403 -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 7621 - srcEnd = 767E - mappingOffset = 117C - Mapping = - 8D05 53D6 5439 5634 5A36 5C31 708A 7FE0 - 805A 8106 81ED 8DA3 9189 9A5F 9DF2 5074 - 4EC4 53A0 60FB 6E2C 5C64 4F88 5024 55E4 - 5CD9 5E5F 6065 6894 6CBB 6DC4 71BE 75D4 - 75F4 7661 7A1A 7A49 7DC7 7DFB 7F6E 81F4 - 86A9 8F1C 96C9 99B3 9F52 5247 52C5 98ED - 89AA 4E03 67D2 6F06 4FB5 5BE2 6795 6C88 - 6D78 741B 7827 91DD 937C 87C4 79E4 7A31 - 5FEB 4ED6 54A4 553E 58AE 59A5 60F0 6253 - 62D6 6736 6955 8235 9640 99B1 99DD 502C - 5353 5544 577C FA01 6258 FA02 64E2 666B - 67DD 6FC1 6FEF 7422 7438 8A17 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 7721 - srcEnd = 777E - mappingOffset = 11DA - Mapping = - 9438 5451 5606 5766 5F48 619A 6B4E 7058 - 70AD 7DBB 8A95 596A 812B 63A2 7708 803D - 8CAA 5854 642D 69BB 5B95 5E11 6E6F FA03 - 8569 514C 53F0 592A 6020 614B 6B86 6C70 - 6CF0 7B1E 80CE 82D4 8DC6 90B0 98B1 FA04 - 64C7 6FA4 6491 6504 514E 5410 571F 8A0E - 615F 6876 FA05 75DB 7B52 7D71 901A 5806 - 69CC 817F 892A 9000 9839 5078 5957 59AC - 6295 900F 9B2A 615D 7279 95D6 5761 5A46 - 5DF4 628A 64AD 64FA 6777 6CE2 6D3E 722C - 7436 7834 7F77 82AD 8DDB 9817 5224 5742 - 677F 7248 74E3 8CA9 8FA6 9211 -End of Item 0072 - -Begin of Item 0073 - Format 1 - srcBegin = 7821 - srcEnd = 787E - mappingOffset = 1238 - Mapping = - 962A 516B 53ED 634C 4F69 5504 6096 6557 - 6C9B 6D7F 724C 72FD 7A17 8987 8C9D 5F6D - 6F8E 70F9 81A8 610E 4FBF 504F 6241 7247 - 7BC7 7DE8 7FE9 904D 97AD 9A19 8CB6 576A - 5E73 67B0 840D 8A55 5420 5B16 5E63 5EE2 - 5F0A 6583 80BA 853D 9589 965B 4F48 5305 - 530D 530F 5486 54FA 5703 5E03 6016 629B - 62B1 6355 FA06 6CE1 6D66 75B1 7832 80DE - 812F 82DE 8461 84B2 888D 8912 900B 92EA - 98FD 9B91 5E45 66B4 66DD 7011 7206 FA07 - 4FF5 527D 5F6A 6153 6753 6A19 6F02 74E2 - 7968 8868 8C79 98C7 98C4 9A43 -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = 7921 - srcEnd = 797E - mappingOffset = 1296 - Mapping = - 54C1 7A1F 6953 8AF7 8C4A 98A8 99AE 5F7C - 62AB 75B2 76AE 88AB 907F 9642 5339 5F3C - 5FC5 6CCC 73CC 7562 758B 7B46 82FE 999D - 4E4F 903C 4E0B 4F55 53A6 590F 5EC8 6630 - 6CB3 7455 8377 8766 8CC0 9050 971E 9C15 - 58D1 5B78 8650 8B14 9DB4 5BD2 6068 608D - 65F1 6C57 6F22 6FA3 701A 7F55 7FF0 9591 - 9592 9650 97D3 5272 8F44 51FD 542B 54B8 - 5563 558A 6ABB 6DB5 7DD8 8266 929C 9677 - 9E79 5408 54C8 76D2 86E4 95A4 95D4 965C - 4EA2 4F09 59EE 5AE6 5DF7 6052 6297 676D - 6841 6C86 6E2F 7F38 809B 822A -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 7A21 - srcEnd = 7A7E - mappingOffset = 12F4 - Mapping = - FA08 FA09 9805 4EA5 5055 54B3 5793 595A - 5B69 5BB3 61C8 6977 6D77 7023 87F9 89E3 - 8A72 8AE7 9082 99ED 9AB8 52BE 6838 5016 - 5E78 674F 8347 884C 4EAB 5411 56AE 73E6 - 9115 97FF 9909 9957 9999 5653 589F 865B - 8A31 61B2 6AF6 737B 8ED2 6B47 96AA 9A57 - 5955 7200 8D6B 9769 4FD4 5CF4 5F26 61F8 - 665B 6CEB 70AB 7384 73B9 73FE 7729 774D - 7D43 7D62 7E23 8237 8852 FA0A 8CE2 9249 - 986F 5B51 7A74 8840 9801 5ACC 4FE0 5354 - 593E 5CFD 633E 6D79 72F9 8105 8107 83A2 - 92CF 9830 4EA8 5144 5211 578B -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = 7B21 - srcEnd = 7B7E - mappingOffset = 1352 - Mapping = - 5F62 6CC2 6ECE 7005 7050 70AF 7192 73E9 - 7469 834A 87A2 8861 9008 90A2 93A3 99A8 - 516E 5F57 60E0 6167 66B3 8559 8E4A 91AF - 978B 4E4E 4E92 547C 58D5 58FA 597D 5CB5 - 5F27 6236 6248 660A 6667 6BEB 6D69 6DCF - 6E56 6EF8 6F94 6FE0 6FE9 705D 72D0 7425 - 745A 74E0 7693 795C 7CCA 7E1E 80E1 82A6 - 846B 84BF 864E 865F 8774 8B77 8C6A 93AC - 9800 9865 60D1 6216 9177 5A5A 660F 6DF7 - 6E3E 743F 9B42 5FFD 60DA 7B0F 54C4 5F18 - 6C5E 6CD3 6D2A 70D8 7D05 8679 8A0C 9D3B - 5316 548C 5B05 6A3A 706B 7575 -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = 7C21 - srcEnd = 7C7E - mappingOffset = 13B0 - Mapping = - 798D 79BE 82B1 83EF 8A71 8B41 8CA8 9774 - FA0B 64F4 652B 78BA 78BB 7A6B 4E38 559A - 5950 5BA6 5E7B 60A3 63DB 6B61 6665 6853 - 6E19 7165 74B0 7D08 9084 9A69 9C25 6D3B - 6ED1 733E 8C41 95CA 51F0 5E4C 5FA8 604D - 60F6 6130 614C 6643 6644 69A5 6CC1 6E5F - 6EC9 6F62 714C 749C 7687 7BC1 7C27 8352 - 8757 9051 968D 9EC3 532F 56DE 5EFB 5F8A - 6062 6094 61F7 6666 6703 6A9C 6DEE 6FAE - 7070 736A 7E6A 81BE 8334 86D4 8AA8 8CC4 - 5283 7372 5B96 6A6B 9404 54EE 5686 5B5D - 6548 6585 66C9 689F 6D8D 6DC6 -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 7D21 - srcEnd = 7D7E - mappingOffset = 140E - Mapping = - 723B 80B4 9175 9A4D 4FAF 5019 539A 540E - 543C 5589 55C5 5E3F 5F8C 673D 7166 73DD - 9005 52DB 52F3 5864 58CE 7104 718F 71FB - 85B0 8A13 6688 85A8 55A7 6684 714A 8431 - 5349 5599 6BC1 5F59 5FBD 63EE 6689 7147 - 8AF1 8F1D 9EBE 4F11 643A 70CB 7566 8667 - 6064 8B4E 9DF8 5147 51F6 5308 6D36 80F8 - 9ED1 6615 6B23 7098 75D5 5403 5C79 7D07 - 8A16 6B20 6B3D 6B46 5438 6070 6D3D 7FD5 - 8208 50D6 51DE 559C 566B 56CD 59EC 5B09 - 5E0C 6199 6198 6231 665E 66E6 7199 71B9 - 71BA 72A7 79A7 7A00 7FB2 8A70 -End of Item 0078 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0079, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0023, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x018E, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0038 */ -/* Total of Format 1 : 0x003D */ -/* Total of Format 2 : 0x0004 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2211, 0x1111, -0x2211, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0023 Start of MapCell Array */ -/* 0000 */ 0x2134, 0x213D, 0x3008, -/* 0001 */ 0x2321, 0x235B, 0xFF01, -/* 0002 */ 0x235D, 0x237D, 0xFF3D, -/* 0003 */ 0x2421, 0x247E, 0x3131, -/* 0004 */ 0x2521, 0x252A, 0x2170, -/* 0005 */ 0x2530, 0x2539, 0x2160, -/* 0006 */ 0x2541, 0x2551, 0x0391, -/* 0007 */ 0x2552, 0x2558, 0x03A3, -/* 0008 */ 0x2561, 0x2571, 0x03B1, -/* 0009 */ 0x2572, 0x2578, 0x03C3, -/* 000A */ 0x265D, 0x2664, 0x2543, -/* 000B */ 0x272B, 0x2734, 0x3399, -/* 000C */ 0x273F, 0x2748, 0x33B0, -/* 000D */ 0x274E, 0x2753, 0x33BA, -/* 000E */ 0x2831, 0x284C, 0x3260, -/* 000F */ 0x284D, 0x2866, 0x24D0, -/* 0010 */ 0x2867, 0x2875, 0x2460, -/* 0011 */ 0x2931, 0x294C, 0x3200, -/* 0012 */ 0x294D, 0x2966, 0x249C, -/* 0013 */ 0x2967, 0x2975, 0x2474, -/* 0014 */ 0x2A21, 0x2A73, 0x3041, -/* 0015 */ 0x2B21, 0x2B76, 0x30A1, -/* 0016 */ 0x2C21, 0x2C26, 0x0410, -/* 0017 */ 0x2C28, 0x2C41, 0x0416, -/* 0018 */ 0x2C51, 0x2C56, 0x0430, -/* 0019 */ 0x2C58, 0x2C71, 0x0436, -/* 001A */ 0x3021, 0x307E, 0x3400, -/* 001B */ 0x3121, 0x317E, 0x345E, -/* 001C */ 0x3221, 0x327E, 0x34BC, -/* 001D */ 0x3321, 0x337E, 0x351A, -/* 001E */ 0x3421, 0x347E, 0x3578, -/* 001F */ 0x3521, 0x357E, 0x35D6, -/* 0020 */ 0x3621, 0x367E, 0x3634, -/* 0021 */ 0x3721, 0x377E, 0x3692, -/* 0022 */ 0x3821, 0x387E, 0x36F0, -/* 0023 */ 0x3921, 0x397E, 0x374E, -/* 0024 */ 0x3A21, 0x3A7E, 0x37AC, -/* 0025 */ 0x3B21, 0x3B7E, 0x380A, -/* 0026 */ 0x3C21, 0x3C7E, 0x3868, -/* 0027 */ 0x3D21, 0x3D7E, 0x38C6, -/* 0028 */ 0x3E21, 0x3E7E, 0x3924, -/* 0029 */ 0x3F21, 0x3F7E, 0x3982, -/* 002A */ 0x4021, 0x407E, 0x39E0, -/* 002B */ 0x4121, 0x417E, 0x3A3E, -/* 002C */ 0x4221, 0x427E, 0x3A9C, -/* 002D */ 0x4321, 0x437E, 0x3AFA, -/* 002E */ 0x4421, 0x447E, 0x3B58, -/* 002F */ 0x4521, 0x457E, 0x3BB6, -/* 0030 */ 0x4621, 0x467E, 0x3C14, -/* 0031 */ 0x4721, 0x477E, 0x3C72, -/* 0032 */ 0x4821, 0x487E, 0x3CD0, -/* 0033 */ 0x515B, 0x5160, 0xF90E, -/* 0034 */ 0x5246, 0x524B, 0xF933, -/* 0035 */ 0x524D, 0x5257, 0xF939, -/* 0036 */ 0x5264, 0x526B, 0xF94A, -/* 0037 */ 0x5270, 0x5275, 0xF952, -/* 0038 */ 0x2121, 0x217E, 0x0000, -/* 0039 */ 0x2221, 0x2265, 0x005E, -/* 003A */ 0x235C, 0x0000, 0xFFE6, -/* 003B */ 0x237E, 0x0000, 0xFFE3, -/* 003C */ 0x2621, 0x265C, 0x00A3, -/* 003D */ 0x2721, 0x276F, 0x00DF, -/* 003E */ 0x2821, 0x282F, 0x012E, -/* 003F */ 0x2876, 0x287E, 0x013D, -/* 0040 */ 0x2921, 0x2930, 0x0146, -/* 0041 */ 0x2976, 0x297E, 0x0156, -/* 0042 */ 0x2C27, 0x0000, 0x0401, -/* 0043 */ 0x2C57, 0x0000, 0x0451, -/* 0044 */ 0x4A21, 0x4A7E, 0x015F, -/* 0045 */ 0x4B21, 0x4B7E, 0x01BD, -/* 0046 */ 0x4C21, 0x4C7E, 0x021B, -/* 0047 */ 0x4D21, 0x4D7E, 0x0279, -/* 0048 */ 0x4E21, 0x4E7E, 0x02D7, -/* 0049 */ 0x4F21, 0x4F7E, 0x0335, -/* 004A */ 0x5021, 0x507E, 0x0393, -/* 004B */ 0x5121, 0x517E, 0x03F1, -/* 004C */ 0x5221, 0x524C, 0x044F, -/* 004D */ 0x5258, 0x527E, 0x047B, -/* 004E */ 0x5321, 0x537E, 0x04A2, -/* 004F */ 0x5421, 0x547E, 0x0500, -/* 0050 */ 0x5521, 0x557E, 0x055E, -/* 0051 */ 0x5621, 0x567E, 0x05BC, -/* 0052 */ 0x5721, 0x577E, 0x061A, -/* 0053 */ 0x5821, 0x587E, 0x0678, -/* 0054 */ 0x5921, 0x597E, 0x06D6, -/* 0055 */ 0x5A21, 0x5A7E, 0x0734, -/* 0056 */ 0x5B21, 0x5B7E, 0x0792, -/* 0057 */ 0x5C21, 0x5C7E, 0x07F0, -/* 0058 */ 0x5D21, 0x5D7E, 0x084E, -/* 0059 */ 0x5E21, 0x5E7E, 0x08AC, -/* 005A */ 0x5F21, 0x5F7E, 0x090A, -/* 005B */ 0x6021, 0x607E, 0x0968, -/* 005C */ 0x6121, 0x617E, 0x09C6, -/* 005D */ 0x6221, 0x627E, 0x0A24, -/* 005E */ 0x6321, 0x637E, 0x0A82, -/* 005F */ 0x6421, 0x647E, 0x0AE0, -/* 0060 */ 0x6521, 0x657E, 0x0B3E, -/* 0061 */ 0x6621, 0x667E, 0x0B9C, -/* 0062 */ 0x6721, 0x677E, 0x0BFA, -/* 0063 */ 0x6821, 0x687E, 0x0C58, -/* 0064 */ 0x6921, 0x697E, 0x0CB6, -/* 0065 */ 0x6A21, 0x6A7E, 0x0D14, -/* 0066 */ 0x6B21, 0x6B7E, 0x0D72, -/* 0067 */ 0x6C21, 0x6C7E, 0x0DD0, -/* 0068 */ 0x6D21, 0x6D7E, 0x0E2E, -/* 0069 */ 0x6E21, 0x6E7E, 0x0E8C, -/* 006A */ 0x6F21, 0x6F7E, 0x0EEA, -/* 006B */ 0x7021, 0x707E, 0x0F48, -/* 006C */ 0x7121, 0x717E, 0x0FA6, -/* 006D */ 0x7221, 0x727E, 0x1004, -/* 006E */ 0x7321, 0x737E, 0x1062, -/* 006F */ 0x7421, 0x747E, 0x10C0, -/* 0070 */ 0x7521, 0x757E, 0x111E, -/* 0071 */ 0x7621, 0x767E, 0x117C, -/* 0072 */ 0x7721, 0x777E, 0x11DA, -/* 0073 */ 0x7821, 0x787E, 0x1238, -/* 0074 */ 0x7921, 0x797E, 0x1296, -/* 0075 */ 0x7A21, 0x7A7E, 0x12F4, -/* 0076 */ 0x7B21, 0x7B7E, 0x1352, -/* 0077 */ 0x7C21, 0x7C7E, 0x13B0, -/* 0078 */ 0x7D21, 0x7D7E, 0x140E, -/*-------------------------------------------------------*/ -/* Offset=0x018E Start of MappingTable */ - -/* 0000 */ 0x3000, 0x3001, 0x3002, 0x30FB, 0x2025, 0x2026, 0x00A8, 0x3003, -/* 0008 */ 0x2013, 0x2014, 0x2016, 0xFF3C, 0xFF5E, 0x2018, 0x2019, 0x201C, -/* 0010 */ 0x201D, 0x3014, 0x3015, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0018 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B1, 0x00D7, 0x00F7, -/* 0020 */ 0x2260, 0x2264, 0x2265, 0x221E, 0x2234, 0x00B0, 0x2032, 0x2033, -/* 0028 */ 0x2103, 0x212B, 0xFFE0, 0xFFE1, 0xFFE5, 0x2642, 0x2640, 0x2220, -/* 0030 */ 0x22A5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00A7, 0x203B, -/* 0038 */ 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, -/* 0040 */ 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x2192, 0x2190, 0x2191, -/* 0048 */ 0x2193, 0x2194, 0x3013, 0x00AB, 0x00BB, 0x221A, 0x223D, 0x221D, -/* 0050 */ 0x2235, 0x222B, 0x222C, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, -/* 0058 */ 0x2283, 0x222A, 0x2229, 0x2227, 0x2228, 0xFFE2, 0x21D2, 0x21D4, -/* 0060 */ 0x2200, 0x2203, 0x00B4, 0x02DC, 0x02C7, 0x02D8, 0x02DD, 0x02DA, -/* 0068 */ 0x02D9, 0x00B8, 0x02DB, 0x00A1, 0x00BF, 0x2236, 0x222E, 0x2211, -/* 0070 */ 0x220F, 0x00A4, 0x2109, 0x2030, 0x25C1, 0x25C0, 0x25B7, 0x25B6, -/* 0078 */ 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663, 0x25C9, 0x25C8, -/* 0080 */ 0x25A3, 0x25D0, 0x25D1, 0x2592, 0x25A4, 0x25A5, 0x25A8, 0x25A7, -/* 0088 */ 0x25A6, 0x25A9, 0x2668, 0x260F, 0x260E, 0x261C, 0x261E, 0x00B6, -/* 0090 */ 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196, 0x2198, 0x266D, -/* 0098 */ 0x2669, 0x266A, 0x266C, 0x327F, 0x321C, 0x2116, 0x33C7, 0x2122, -/* 00A0 */ 0x33C2, 0x33D8, 0x2121, 0x2500, 0x2502, 0x250C, 0x2510, 0x2518, -/* 00A8 */ 0x2514, 0x251C, 0x252C, 0x2524, 0x2534, 0x253C, 0x2501, 0x2503, -/* 00B0 */ 0x250F, 0x2513, 0x251B, 0x2517, 0x2523, 0x2533, 0x252B, 0x253B, -/* 00B8 */ 0x254B, 0x2520, 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, -/* 00C0 */ 0x2525, 0x2538, 0x2542, 0x2512, 0x2511, 0x251A, 0x2519, 0x2516, -/* 00C8 */ 0x2515, 0x250E, 0x250D, 0x251E, 0x251F, 0x2521, 0x2522, 0x2526, -/* 00D0 */ 0x2527, 0x2529, 0x252A, 0x252D, 0x252E, 0x2531, 0x2532, 0x2535, -/* 00D8 */ 0x2536, 0x2539, 0x253A, 0x253D, 0x253E, 0x2540, 0x2541, 0x3395, -/* 00E0 */ 0x3396, 0x3397, 0x2113, 0x3398, 0x33C4, 0x33A3, 0x33A4, 0x33A5, -/* 00E8 */ 0x33A6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x33CA, 0x338D, 0x338E, 0x338F, 0x33CF, -/* 00F8 */ 0x3388, 0x3389, 0x33C8, 0x33A7, 0x33A8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0100 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x3380, -/* 0108 */ 0x3381, 0x3382, 0x3383, 0x3384, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0110 */ 0xFFFD, 0xFFFD, 0x3390, 0x3391, 0x3392, 0x3393, 0x3394, 0x2126, -/* 0118 */ 0x33C0, 0x33C1, 0x338A, 0x338B, 0x338C, 0x33D6, 0x33C5, 0x33AD, -/* 0120 */ 0x33AE, 0x33AF, 0x33DB, 0x33A9, 0x33AA, 0x33AB, 0x33AC, 0x33DD, -/* 0128 */ 0x33D0, 0x33D3, 0x33C3, 0x33C9, 0x33DC, 0x33C6, 0x00C6, 0x00D0, -/* 0130 */ 0x00AA, 0x0126, 0xFFFD, 0x0132, 0xFFFD, 0x013F, 0x0141, 0x00D8, -/* 0138 */ 0x0152, 0x00BA, 0x00DE, 0x0166, 0x014A, 0x00BD, 0x2153, 0x2154, -/* 0140 */ 0x00BC, 0x00BE, 0x215B, 0x215C, 0x215D, 0x215E, 0x00E6, 0x0111, -/* 0148 */ 0x00F0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140, 0x0142, 0x00F8, -/* 0150 */ 0x0153, 0x00DF, 0x00FE, 0x0167, 0x014B, 0x0149, 0x00B9, 0x00B2, -/* 0158 */ 0x00B3, 0x2074, 0x207F, 0x2081, 0x2082, 0x2083, 0x2084, 0x4F3D, -/* 0160 */ 0x4F73, 0x5047, 0x50F9, 0x52A0, 0x53EF, 0x5475, 0x54E5, 0x5609, -/* 0168 */ 0x5AC1, 0x5BB6, 0x6687, 0x67B6, 0x67B7, 0x67EF, 0x6B4C, 0x73C2, -/* 0170 */ 0x75C2, 0x7A3C, 0x82DB, 0x8304, 0x8857, 0x8888, 0x8A36, 0x8CC8, -/* 0178 */ 0x8DCF, 0x8EFB, 0x8FE6, 0x99D5, 0x523B, 0x5374, 0x5404, 0x606A, -/* 0180 */ 0x6164, 0x6BBC, 0x73CF, 0x811A, 0x89BA, 0x89D2, 0x95A3, 0x4F83, -/* 0188 */ 0x520A, 0x58BE, 0x5978, 0x59E6, 0x5E72, 0x5E79, 0x61C7, 0x63C0, -/* 0190 */ 0x6746, 0x67EC, 0x687F, 0x6F97, 0x764E, 0x770B, 0x78F5, 0x7A08, -/* 0198 */ 0x7AFF, 0x7C21, 0x809D, 0x826E, 0x8271, 0x8AEB, 0x9593, 0x4E6B, -/* 01A0 */ 0x559D, 0x66F7, 0x6E34, 0x78A3, 0x7AED, 0x845B, 0x8910, 0x874E, -/* 01A8 */ 0x97A8, 0x52D8, 0x574E, 0x582A, 0x5D4C, 0x611F, 0x61BE, 0x6221, -/* 01B0 */ 0x6562, 0x67D1, 0x6A44, 0x6E1B, 0x7518, 0x75B3, 0x76E3, 0x77B0, -/* 01B8 */ 0x7D3A, 0x90AF, 0x9451, 0x9452, 0x9F95, 0x5323, 0x5CAC, 0x7532, -/* 01C0 */ 0x80DB, 0x9240, 0x9598, 0x525B, 0x5808, 0x59DC, 0x5CA1, 0x5D17, -/* 01C8 */ 0x5EB7, 0x5F3A, 0x5F4A, 0x6177, 0x6C5F, 0x757A, 0x7586, 0x7CE0, -/* 01D0 */ 0x7D73, 0x7DB1, 0x7F8C, 0x8154, 0x8221, 0x8591, 0x8941, 0x8B1B, -/* 01D8 */ 0x92FC, 0x964D, 0x9C47, 0x4ECB, 0x4EF7, 0x500B, 0x51F1, 0x584F, -/* 01E0 */ 0x6137, 0x613E, 0x6168, 0x6539, 0x69EA, 0x6F11, 0x75A5, 0x7686, -/* 01E8 */ 0x76D6, 0x7B87, 0x82A5, 0x84CB, 0xF900, 0x93A7, 0x958B, 0x5580, -/* 01F0 */ 0x5BA2, 0x5751, 0xF901, 0x7CB3, 0x7FB9, 0x91B5, 0x5028, 0x53BB, -/* 01F8 */ 0x5C45, 0x5DE8, 0x62D2, 0x636E, 0x64DA, 0x64E7, 0x6E20, 0x70AC, -/* 0200 */ 0x795B, 0x8DDD, 0x8E1E, 0xF902, 0x907D, 0x9245, 0x92F8, 0x4E7E, -/* 0208 */ 0x4EF6, 0x5065, 0x5DFE, 0x5EFA, 0x6106, 0x6957, 0x8171, 0x8654, -/* 0210 */ 0x8E47, 0x9375, 0x9A2B, 0x4E5E, 0x5091, 0x6770, 0x6840, 0x5109, -/* 0218 */ 0x528D, 0x5292, 0x6AA2, 0x77BC, 0x9210, 0x9ED4, 0x52AB, 0x602F, -/* 0220 */ 0x8FF2, 0x5048, 0x61A9, 0x63ED, 0x64CA, 0x683C, 0x6A84, 0x6FC0, -/* 0228 */ 0x8188, 0x89A1, 0x9694, 0x5805, 0x727D, 0x72AC, 0x7504, 0x7D79, -/* 0230 */ 0x7E6D, 0x80A9, 0x898B, 0x8B74, 0x9063, 0x9D51, 0x6289, 0x6C7A, -/* 0238 */ 0x6F54, 0x7D50, 0x7F3A, 0x8A23, 0x517C, 0x614A, 0x7B9D, 0x8B19, -/* 0240 */ 0x9257, 0x938C, 0x4EAC, 0x4FD3, 0x501E, 0x50BE, 0x5106, 0x52C1, -/* 0248 */ 0x52CD, 0x537F, 0x5770, 0x5883, 0x5E9A, 0x5F91, 0x6176, 0x61AC, -/* 0250 */ 0x64CE, 0x656C, 0x666F, 0x66BB, 0x66F4, 0x6897, 0x6D87, 0x7085, -/* 0258 */ 0x70F1, 0x749F, 0x74A5, 0x74CA, 0x75D9, 0x786C, 0x78EC, 0x7ADF, -/* 0260 */ 0x7AF6, 0x7D45, 0x7D93, 0x8015, 0x803F, 0x811B, 0x8396, 0x8B66, -/* 0268 */ 0x8F15, 0x9015, 0x93E1, 0x9803, 0x9838, 0x9A5A, 0x9BE8, 0x4FC2, -/* 0270 */ 0x5553, 0x583A, 0x5951, 0x5B63, 0x5C46, 0x60B8, 0x6212, 0x6842, -/* 0278 */ 0x68B0, 0x68E8, 0x6EAA, 0x754C, 0x7678, 0x78CE, 0x7A3D, 0x7CFB, -/* 0280 */ 0x7E6B, 0x7E7C, 0x8A08, 0x8AA1, 0x8C3F, 0x968E, 0x9DC4, 0x53E4, -/* 0288 */ 0x53E9, 0x544A, 0x5471, 0x56FA, 0x59D1, 0x5B64, 0x5C3B, 0x5EAB, -/* 0290 */ 0x62F7, 0x6537, 0x6545, 0x6572, 0x66A0, 0x67AF, 0x69C1, 0x6CBD, -/* 0298 */ 0x75FC, 0x7690, 0x777E, 0x7A3F, 0x7F94, 0x8003, 0x80A1, 0x818F, -/* 02A0 */ 0x82E6, 0x82FD, 0x83F0, 0x85C1, 0x8831, 0x88B4, 0x8AA5, 0xF903, -/* 02A8 */ 0x8F9C, 0x932E, 0x96C7, 0x9867, 0x9AD8, 0x9F13, 0x54ED, 0x659B, -/* 02B0 */ 0x66F2, 0x688F, 0x7A40, 0x8C37, 0x9D60, 0x56F0, 0x5764, 0x5D11, -/* 02B8 */ 0x6606, 0x68B1, 0x68CD, 0x6EFE, 0x7428, 0x889E, 0x9BE4, 0x6C68, -/* 02C0 */ 0xF904, 0x9AA8, 0x4F9B, 0x516C, 0x5171, 0x529F, 0x5B54, 0x5DE5, -/* 02C8 */ 0x6050, 0x606D, 0x62F1, 0x63A7, 0x653B, 0x73D9, 0x7A7A, 0x86A3, -/* 02D0 */ 0x8CA2, 0x978F, 0x4E32, 0x5BE1, 0x6208, 0x679C, 0x74DC, 0x79D1, -/* 02D8 */ 0x83D3, 0x8A87, 0x8AB2, 0x8DE8, 0x904E, 0x934B, 0x9846, 0x5ED3, -/* 02E0 */ 0x69E8, 0x85FF, 0x90ED, 0xF905, 0x51A0, 0x5B98, 0x5BEC, 0x6163, -/* 02E8 */ 0x68FA, 0x6B3E, 0x704C, 0x742F, 0x74D8, 0x7BA1, 0x7F50, 0x83C5, -/* 02F0 */ 0x89C0, 0x8CAB, 0x95DC, 0x9928, 0x522E, 0x605D, 0x62EC, 0x9002, -/* 02F8 */ 0x4F8A, 0x5149, 0x5321, 0x58D9, 0x5EE3, 0x66E0, 0x6D38, 0x709A, -/* 0300 */ 0x72C2, 0x73D6, 0x7B50, 0x80F1, 0x945B, 0x5366, 0x639B, 0x7F6B, -/* 0308 */ 0x4E56, 0x5080, 0x584A, 0x58DE, 0x602A, 0x6127, 0x62D0, 0x69D0, -/* 0310 */ 0x9B41, 0x5B8F, 0x7D18, 0x80B1, 0x8F5F, 0x4EA4, 0x50D1, 0x54AC, -/* 0318 */ 0x55AC, 0x5B0C, 0x5DA0, 0x5DE7, 0x652A, 0x654E, 0x6821, 0x6A4B, -/* 0320 */ 0x72E1, 0x768E, 0x77EF, 0x7D5E, 0x7FF9, 0x81A0, 0x854E, 0x86DF, -/* 0328 */ 0x8F03, 0x8F4E, 0x90CA, 0x9903, 0x9A55, 0x9BAB, 0x4E18, 0x4E45, -/* 0330 */ 0x4E5D, 0x4EC7, 0x4FF1, 0x5177, 0x52FE, 0x5340, 0x53E3, 0x53E5, -/* 0338 */ 0x548E, 0x5614, 0x5775, 0x57A2, 0x5BC7, 0x5D87, 0x5ED0, 0x61FC, -/* 0340 */ 0x62D8, 0x6551, 0x67B8, 0x67E9, 0x69CB, 0x6B50, 0x6BC6, 0x6BEC, -/* 0348 */ 0x6C42, 0x6E9D, 0x7078, 0x72D7, 0x7396, 0x7403, 0x77BF, 0x77E9, -/* 0350 */ 0x7A76, 0x7D7F, 0x8009, 0x81FC, 0x8205, 0x820A, 0x82DF, 0x8862, -/* 0358 */ 0x8B33, 0x8CFC, 0x8EC0, 0x9011, 0x90B1, 0x9264, 0x92B6, 0x99D2, -/* 0360 */ 0x9A45, 0x9CE9, 0x9DD7, 0x9F9C, 0x570B, 0x5C40, 0x83CA, 0x97A0, -/* 0368 */ 0x97AB, 0x9EB4, 0x541B, 0x7A98, 0x7FA4, 0x88D9, 0x8ECD, 0x90E1, -/* 0370 */ 0x5800, 0x5C48, 0x6398, 0x7A9F, 0x5BAE, 0x5F13, 0x7A79, 0x7AAE, -/* 0378 */ 0x828E, 0x8EAC, 0x5026, 0x5238, 0x52F8, 0x5377, 0x5708, 0x62F3, -/* 0380 */ 0x6372, 0x6B0A, 0x6DC3, 0x7737, 0x53A5, 0x7357, 0x8568, 0x8E76, -/* 0388 */ 0x95D5, 0x673A, 0x6AC3, 0x6F70, 0x8A6D, 0x8ECC, 0x994B, 0xF906, -/* 0390 */ 0x6677, 0x6B78, 0x8CB4, 0x9B3C, 0xF907, 0x53EB, 0x572D, 0x594E, -/* 0398 */ 0x63C6, 0x69FB, 0x73EA, 0x7845, 0x7ABA, 0x7AC5, 0x7CFE, 0x8475, -/* 03A0 */ 0x898F, 0x8D73, 0x9035, 0x95A8, 0x52FB, 0x5747, 0x7547, 0x7B60, -/* 03A8 */ 0x83CC, 0x921E, 0xF908, 0x6A58, 0x514B, 0x524B, 0x5287, 0x621F, -/* 03B0 */ 0x68D8, 0x6975, 0x9699, 0x50C5, 0x52A4, 0x52E4, 0x61C3, 0x65A4, -/* 03B8 */ 0x6839, 0x69FF, 0x747E, 0x7B4B, 0x82B9, 0x83EB, 0x89B2, 0x8B39, -/* 03C0 */ 0x8FD1, 0x9949, 0xF909, 0x4ECA, 0x5997, 0x64D2, 0x6611, 0x6A8E, -/* 03C8 */ 0x7434, 0x7981, 0x79BD, 0x82A9, 0x887E, 0x887F, 0x895F, 0xF90A, -/* 03D0 */ 0x9326, 0x4F0B, 0x53CA, 0x6025, 0x6271, 0x6C72, 0x7D1A, 0x7D66, -/* 03D8 */ 0x4E98, 0x5162, 0x77DC, 0x80AF, 0x4F01, 0x4F0E, 0x5176, 0x5180, -/* 03E0 */ 0x55DC, 0x5668, 0x573B, 0x57FA, 0x57FC, 0x5914, 0x5947, 0x5993, -/* 03E8 */ 0x5BC4, 0x5C90, 0x5D0E, 0x5DF1, 0x5E7E, 0x5FCC, 0x6280, 0x65D7, -/* 03F0 */ 0x65E3, 0x671E, 0x671F, 0x675E, 0x68CB, 0x68C4, 0x6A5F, 0x6B3A, -/* 03F8 */ 0x6C23, 0x6C7D, 0x6C82, 0x6DC7, 0x7398, 0x7426, 0x742A, 0x7482, -/* 0400 */ 0x74A3, 0x7578, 0x757F, 0x7881, 0x78EF, 0x7941, 0x7947, 0x7948, -/* 0408 */ 0x797A, 0x7B95, 0x7D00, 0x7DBA, 0x7F88, 0x8006, 0x802D, 0x808C, -/* 0410 */ 0x8A18, 0x8B4F, 0x8C48, 0x8D77, 0x9321, 0x9324, 0x98E2, 0x9951, -/* 0418 */ 0x9A0E, 0x9A0F, 0x9A65, 0x9E92, 0x7DCA, 0x4F76, 0x5409, 0x62EE, -/* 0420 */ 0x6854, 0x91D1, 0x55AB, 0x513A, 0xF90B, 0xF90C, 0x5A1C, 0x61E6, -/* 0428 */ 0xF90D, 0x62CF, 0x62FF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0430 */ 0xFFFD, 0x90A3, 0xF914, 0xF915, 0xF916, 0xF917, 0xF918, 0x8AFE, -/* 0438 */ 0xF919, 0xF91A, 0xF91B, 0xF91C, 0x6696, 0xF91D, 0x7156, 0xF91E, -/* 0440 */ 0xF91F, 0x96E3, 0xF920, 0x634F, 0x637A, 0x5357, 0xF921, 0x678F, -/* 0448 */ 0x6960, 0x6E73, 0xF922, 0x7537, 0xF923, 0xF924, 0xF925, 0x7D0D, -/* 0450 */ 0xF926, 0xF927, 0x8872, 0x56CA, 0x5A18, 0xF928, 0xF929, 0xF92A, -/* 0458 */ 0xF92B, 0xF92C, 0x4E43, 0xF92D, 0x5167, 0x5948, 0x67F0, 0x8010, -/* 0460 */ 0xF92E, 0x5973, 0x5E74, 0x649A, 0x79CA, 0x5FF5, 0x606C, 0x62C8, -/* 0468 */ 0x637B, 0x5BE7, 0x5BD7, 0x52AA, 0xF92F, 0x5974, 0x5F29, 0x6012, -/* 0470 */ 0xF930, 0xF931, 0xF932, 0x7459, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0478 */ 0xFFFD, 0xFFFD, 0x99D1, 0x6FC3, 0xF944, 0xF945, 0x81BF, 0x8FB2, -/* 0480 */ 0x60F1, 0xF946, 0xF947, 0x8166, 0xF948, 0xF949, 0x5C3F, 0xFFFD, -/* 0488 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x5AE9, -/* 0490 */ 0x8A25, 0x677B, 0x7D10, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0498 */ 0xFFFD, 0x80FD, 0xF958, 0xF959, 0x5C3C, 0x6CE5, 0x533F, 0x6EBA, -/* 04A0 */ 0x591A, 0x8336, 0x4E39, 0x4EB6, 0x4F46, 0x55AE, 0x5718, 0x58C7, -/* 04A8 */ 0x5F56, 0x65B7, 0x65E6, 0x6A80, 0x6BB5, 0x6E4D, 0x77ED, 0x7AEF, -/* 04B0 */ 0x7C1E, 0x7DDE, 0x86CB, 0x8892, 0x9132, 0x935B, 0x64BB, 0x6FBE, -/* 04B8 */ 0x737A, 0x75B8, 0x9054, 0x5556, 0x574D, 0x61BA, 0x64D4, 0x66C7, -/* 04C0 */ 0x6DE1, 0x6E5B, 0x6F6D, 0x6FB9, 0x75F0, 0x8043, 0x81BD, 0x8541, -/* 04C8 */ 0x8983, 0x8AC7, 0x8B5A, 0x931F, 0x6C93, 0x7553, 0x7B54, 0x8E0F, -/* 04D0 */ 0x905D, 0x5510, 0x5802, 0x5858, 0x5E62, 0x6207, 0x649E, 0x68E0, -/* 04D8 */ 0x7576, 0x7CD6, 0x87B3, 0x9EE8, 0x4EE3, 0x5788, 0x576E, 0x5927, -/* 04E0 */ 0x5C0D, 0x5CB1, 0x5E36, 0x5F85, 0x6234, 0x64E1, 0x73B3, 0x81FA, -/* 04E8 */ 0x888B, 0x8CB8, 0x968A, 0x9EDB, 0x5B85, 0x5FB7, 0x60B3, 0x5012, -/* 04F0 */ 0x5200, 0x5230, 0x5716, 0x5835, 0x5857, 0x5C0E, 0x5C60, 0x5CF6, -/* 04F8 */ 0x5D8B, 0x5EA6, 0x5F92, 0x60BC, 0x6311, 0x6389, 0x6417, 0x6843, -/* 0500 */ 0x68F9, 0x6AC2, 0x6DD8, 0x6E21, 0x6ED4, 0x6FE4, 0x71FE, 0x76DC, -/* 0508 */ 0x7779, 0x79B1, 0x7A3B, 0x8404, 0x89A9, 0x8CED, 0x8DF3, 0x8E48, -/* 0510 */ 0x9003, 0x9014, 0x9053, 0x90FD, 0x934D, 0x9676, 0x97DC, 0x6BD2, -/* 0518 */ 0x7006, 0x7258, 0x72A2, 0x7368, 0x7763, 0x79BF, 0x7BE4, 0x7E9B, -/* 0520 */ 0x8B80, 0x58A9, 0x60C7, 0x6566, 0x65FD, 0x66BE, 0x6C8C, 0x711E, -/* 0528 */ 0x71C9, 0x8C5A, 0x9813, 0x4E6D, 0x7A81, 0x4EDD, 0x51AC, 0x51CD, -/* 0530 */ 0x52D5, 0x540C, 0x61A7, 0x6771, 0x6850, 0x68DF, 0x6D1E, 0x6F7C, -/* 0538 */ 0x75BC, 0x77B3, 0x7AE5, 0x80F4, 0x8463, 0x9285, 0x515C, 0x6597, -/* 0540 */ 0x675C, 0x6793, 0x75D8, 0x7AC7, 0x8373, 0xF95A, 0x8C46, 0x9017, -/* 0548 */ 0x982D, 0x5C6F, 0x81C0, 0x829A, 0x9041, 0x906F, 0x920D, 0x5F97, -/* 0550 */ 0x5D9D, 0x6A59, 0x71C8, 0x767B, 0x7B49, 0x85E4, 0x8B04, 0x9127, -/* 0558 */ 0x9A30, 0x5587, 0x61F6, 0xF95B, 0x7669, 0x7F85, 0x863F, 0x87BA, -/* 0560 */ 0x88F8, 0x908F, 0xF95C, 0x6D1B, 0x70D9, 0x73DE, 0x7D61, 0x843D, -/* 0568 */ 0xF95D, 0x916A, 0x99F1, 0xF95E, 0x4E82, 0x5375, 0x6B04, 0x6B12, -/* 0570 */ 0x703E, 0x721B, 0x862D, 0x9E1E, 0x524C, 0x8FA3, 0x5D50, 0x64E5, -/* 0578 */ 0x652C, 0x6B16, 0x6FEB, 0x7C43, 0x7E9C, 0x85CD, 0x8964, 0x89BD, -/* 0580 */ 0x62C9, 0x81D8, 0x881F, 0x5ECA, 0x6717, 0x6D6A, 0x72FC, 0x7405, -/* 0588 */ 0x746F, 0x8782, 0x90DE, 0x4F86, 0x5D0D, 0x5FA0, 0x840A, 0x51B7, -/* 0590 */ 0x63A0, 0x7565, 0x4EAE, 0x5006, 0x5169, 0x51C9, 0x6881, 0x6A11, -/* 0598 */ 0x7CAE, 0x7CB1, 0x7CE7, 0x826F, 0x8AD2, 0x8F1B, 0x91CF, 0x4FB6, -/* 05A0 */ 0x5137, 0x52F5, 0x5442, 0x5EEC, 0x616E, 0x623E, 0x65C5, 0x6ADA, -/* 05A8 */ 0x6FFE, 0x792A, 0x85DC, 0x8823, 0x95AD, 0x9A62, 0x9A6A, 0x9E97, -/* 05B0 */ 0x9ECE, 0x529B, 0x66C6, 0x6B77, 0x701D, 0x792B, 0x8F62, 0x9742, -/* 05B8 */ 0x6190, 0x6200, 0x6523, 0x6F23, 0x7149, 0x7489, 0x7DF4, 0x806F, -/* 05C0 */ 0x84EE, 0x8F26, 0x9023, 0x934A, 0x51BD, 0x5217, 0x52A3, 0x6D0C, -/* 05C8 */ 0x70C8, 0x88C2, 0x5EC9, 0x6582, 0x6BAE, 0x6FC2, 0x7C3E, 0x7375, -/* 05D0 */ 0x4EE4, 0x4F36, 0x56F9, 0xF95F, 0x5CBA, 0x5DBA, 0x601C, 0x73B2, -/* 05D8 */ 0x7B2D, 0x7F9A, 0x7FCE, 0x8046, 0x901E, 0x9234, 0x96F6, 0x9748, -/* 05E0 */ 0x9818, 0x9F61, 0x4F8B, 0x6FA7, 0x79AE, 0x91B4, 0x96B7, 0x52DE, -/* 05E8 */ 0xF960, 0x6488, 0x64C4, 0x6AD3, 0x6F5E, 0x7018, 0x7210, 0x76E7, -/* 05F0 */ 0x8001, 0x8606, 0x865C, 0x8DEF, 0x8F05, 0x9732, 0x9B6F, 0x9DFA, -/* 05F8 */ 0x9E75, 0x788C, 0x797F, 0x7DA0, 0x83C9, 0x9304, 0x9E7F, 0x9E93, -/* 0600 */ 0x8AD6, 0x58DF, 0x5F04, 0x6727, 0x7027, 0x74CF, 0x7C60, 0x807E, -/* 0608 */ 0x5121, 0x7028, 0x7262, 0x78CA, 0x8CC2, 0x8CDA, 0x8CF4, 0x96F7, -/* 0610 */ 0x4E86, 0x50DA, 0x5BEE, 0x5ED6, 0x6599, 0x71CE, 0x7642, 0x77AD, -/* 0618 */ 0x804A, 0x84FC, 0x907C, 0x9B27, 0x9F8D, 0x58D8, 0x5A41, 0x5C62, -/* 0620 */ 0x6A13, 0x6DDA, 0x6F0F, 0x763B, 0x7D2F, 0x7E37, 0x851E, 0x8938, -/* 0628 */ 0x93E4, 0x964B, 0x5289, 0x65D2, 0x67F3, 0x69B4, 0x6D41, 0x6E9C, -/* 0630 */ 0x700F, 0x7409, 0x7460, 0x7559, 0x7624, 0x786B, 0x8B2C, 0x985E, -/* 0638 */ 0x516D, 0x622E, 0x9678, 0x4F96, 0x502B, 0x5D19, 0x6DEA, 0x7DB8, -/* 0640 */ 0x8F2A, 0x5F8B, 0x6144, 0x6817, 0xF961, 0x9686, 0x52D2, 0x808B, -/* 0648 */ 0x51DC, 0x51CC, 0x695E, 0x7A1C, 0x7DBE, 0x83F1, 0x9675, 0x4FDA, -/* 0650 */ 0x5229, 0x5398, 0x540F, 0x550E, 0x5C65, 0x60A7, 0x674E, 0x68A8, -/* 0658 */ 0x6D6C, 0x7281, 0x72F8, 0x7406, 0x7483, 0xF962, 0x75E2, 0x7C6C, -/* 0660 */ 0x7F79, 0x7FB8, 0x8389, 0x88CF, 0x88E1, 0x91CC, 0x91D0, 0x96E2, -/* 0668 */ 0x9BC9, 0x541D, 0x6F7E, 0x71D0, 0x7498, 0x85FA, 0x8EAA, 0x96A3, -/* 0670 */ 0x9C57, 0x9E9F, 0x6797, 0x6DCB, 0x7433, 0x81E8, 0x9716, 0x782C, -/* 0678 */ 0x7ACB, 0x7B20, 0x7C92, 0x6469, 0x746A, 0x75F2, 0x78BC, 0x78E8, -/* 0680 */ 0x99AC, 0x9B54, 0x9EBB, 0x5BDE, 0x5E55, 0x6F20, 0x819C, 0x83AB, -/* 0688 */ 0x9088, 0x4E07, 0x534D, 0x5A29, 0x5DD2, 0x5F4E, 0x6162, 0x633D, -/* 0690 */ 0x6669, 0x66FC, 0x6EFF, 0x6F2B, 0x7063, 0x779E, 0x842C, 0x8513, -/* 0698 */ 0x883B, 0x8F13, 0x9945, 0x9C3B, 0x551C, 0x62B9, 0x672B, 0x6CAB, -/* 06A0 */ 0x8309, 0x896A, 0x977A, 0x4EA1, 0x5984, 0x5FD8, 0x5FD9, 0x671B, -/* 06A8 */ 0x7DB2, 0x7F54, 0x8292, 0x832B, 0x83BD, 0x8F1E, 0x9099, 0x57CB, -/* 06B0 */ 0x59B9, 0x5A92, 0x5BD0, 0x6627, 0x679A, 0x6885, 0x6BCF, 0x7164, -/* 06B8 */ 0x7F75, 0x8CB7, 0x8CE3, 0x9081, 0x9B45, 0x8108, 0x8C8A, 0x964C, -/* 06C0 */ 0x9A40, 0x9EA5, 0x5B5F, 0x6C13, 0x731B, 0x76F2, 0x76DF, 0x840C, -/* 06C8 */ 0x51AA, 0x8993, 0x514D, 0x5195, 0x52C9, 0x68C9, 0x6C94, 0x7704, -/* 06D0 */ 0x7720, 0x7DBF, 0x7DEC, 0x9762, 0x9EB5, 0x6EC5, 0x8511, 0x51A5, -/* 06D8 */ 0x540D, 0x547D, 0x660E, 0x669D, 0x6927, 0x6E9F, 0x76BF, 0x7791, -/* 06E0 */ 0x8317, 0x84C2, 0x879F, 0x9169, 0x9298, 0x9CF4, 0x8882, 0x4FAE, -/* 06E8 */ 0x5192, 0x52DF, 0x59C6, 0x5E3D, 0x6155, 0x6478, 0x6479, 0x66AE, -/* 06F0 */ 0x67D0, 0x6A21, 0x6BCD, 0x6BDB, 0x725F, 0x7261, 0x7441, 0x7738, -/* 06F8 */ 0x77DB, 0x8017, 0x82BC, 0x8305, 0x8B00, 0x8B28, 0x8C8C, 0x6728, -/* 0700 */ 0x6C90, 0x7267, 0x76EE, 0x7766, 0x7A46, 0x9DA9, 0x6B7F, 0x6C92, -/* 0708 */ 0x5922, 0x6726, 0x8499, 0x536F, 0x5893, 0x5999, 0x5EDF, 0x63CF, -/* 0710 */ 0x6634, 0x6773, 0x6E3A, 0x732B, 0x7AD7, 0x82D7, 0x9328, 0x52D9, -/* 0718 */ 0x5DEB, 0x61AE, 0x61CB, 0x620A, 0x62C7, 0x64AB, 0x65E0, 0x6959, -/* 0720 */ 0x6B66, 0x6BCB, 0x7121, 0x73F7, 0x755D, 0x7E46, 0x821E, 0x8302, -/* 0728 */ 0x856A, 0x8AA3, 0x8CBF, 0x9727, 0x9D61, 0x58A8, 0x9ED8, 0x5011, -/* 0730 */ 0x520E, 0x543B, 0x554F, 0x6587, 0x6C76, 0x7D0A, 0x7D0B, 0x805E, -/* 0738 */ 0x868A, 0x9580, 0x96EF, 0x52FF, 0x6C95, 0x7269, 0x5473, 0x5A9A, -/* 0740 */ 0x5C3E, 0x5D4B, 0x5F4C, 0x5FAE, 0x672A, 0x68B6, 0x6963, 0x6E3C, -/* 0748 */ 0x6E44, 0x7709, 0x7C73, 0x7F8E, 0x8587, 0x8B0E, 0x8FF7, 0x9761, -/* 0750 */ 0x9EF4, 0x5CB7, 0x60B6, 0x610D, 0x61AB, 0x654F, 0x65FB, 0x65FC, -/* 0758 */ 0x6C11, 0x6CEF, 0x739F, 0x73C9, 0x7DE1, 0x9594, 0x5BC6, 0x871C, -/* 0760 */ 0x8B10, 0x525D, 0x535A, 0x62CD, 0x640F, 0x64B2, 0x6734, 0x6A38, -/* 0768 */ 0x6CCA, 0x73C0, 0x749E, 0x7B94, 0x7C95, 0x7E1B, 0x818A, 0x8236, -/* 0770 */ 0x8584, 0x8FEB, 0x96F9, 0x99C1, 0x4F34, 0x534A, 0x53CD, 0x53DB, -/* 0778 */ 0x62CC, 0x642C, 0x6500, 0x6591, 0x69C3, 0x6CEE, 0x6F58, 0x73ED, -/* 0780 */ 0x7554, 0x7622, 0x76E4, 0x76FC, 0x78D0, 0x78FB, 0x792C, 0x7D46, -/* 0788 */ 0x822C, 0x87E0, 0x8FD4, 0x9812, 0x98EF, 0x52C3, 0x62D4, 0x64A5, -/* 0790 */ 0x6E24, 0x6F51, 0x767C, 0x8DCB, 0x91B1, 0x9262, 0x9AEE, 0x9B43, -/* 0798 */ 0x5023, 0x508D, 0x574A, 0x59A8, 0x5C28, 0x5E47, 0x5F77, 0x623F, -/* 07A0 */ 0x653E, 0x65B9, 0x65C1, 0x6609, 0x678B, 0x699C, 0x6EC2, 0x78C5, -/* 07A8 */ 0x7D21, 0x80AA, 0x8180, 0x822B, 0x82B3, 0x84A1, 0x868C, 0x8A2A, -/* 07B0 */ 0x8B17, 0x90A6, 0x9632, 0x9F90, 0x500D, 0x4FF3, 0xF963, 0x57F9, -/* 07B8 */ 0x5F98, 0x62DC, 0x6392, 0x676F, 0x6E43, 0x7119, 0x76C3, 0x80CC, -/* 07C0 */ 0x80DA, 0x88F4, 0x88F5, 0x8919, 0x8CE0, 0x8F29, 0x914D, 0x966A, -/* 07C8 */ 0x4F2F, 0x4F70, 0x5E1B, 0x67CF, 0x6822, 0x767D, 0x767E, 0x9B44, -/* 07D0 */ 0x5E61, 0x6A0A, 0x7169, 0x71D4, 0x756A, 0xF964, 0x7E41, 0x8543, -/* 07D8 */ 0x85E9, 0x98DC, 0x4F10, 0x7B4F, 0x7F70, 0x95A5, 0x51E1, 0x5E06, -/* 07E0 */ 0x68B5, 0x6C3E, 0x6C4E, 0x6CDB, 0x72AF, 0x7BC4, 0x8303, 0x6CD5, -/* 07E8 */ 0x743A, 0x50FB, 0x5288, 0x58C1, 0x64D8, 0x6A97, 0x74A7, 0x7656, -/* 07F0 */ 0x78A7, 0x8617, 0x95E2, 0x9739, 0xF965, 0x535E, 0x5F01, 0x8B8A, -/* 07F8 */ 0x8FA8, 0x8FAF, 0x908A, 0x5225, 0x77A5, 0x9C49, 0x9F08, 0x4E19, -/* 0800 */ 0x5002, 0x5175, 0x5C5B, 0x5E77, 0x661E, 0x663A, 0x67C4, 0x68C5, -/* 0808 */ 0x70B3, 0x7501, 0x75C5, 0x79C9, 0x7ADD, 0x8F27, 0x9920, 0x9A08, -/* 0810 */ 0x4FDD, 0x5821, 0x5831, 0x5BF6, 0x666E, 0x6B65, 0x6D11, 0x6E7A, -/* 0818 */ 0x6F7D, 0x73E4, 0x752B, 0x83E9, 0x88DC, 0x8913, 0x8B5C, 0x8F14, -/* 0820 */ 0x4F0F, 0x50D5, 0x5310, 0x535C, 0x5B93, 0x5FA9, 0x670D, 0x798F, -/* 0828 */ 0x8179, 0x832F, 0x8514, 0x8907, 0x8986, 0x8F39, 0x8F3B, 0x99A5, -/* 0830 */ 0x9C12, 0x672C, 0x4E76, 0x4FF8, 0x5949, 0x5C01, 0x5CEF, 0x5CF0, -/* 0838 */ 0x6367, 0x68D2, 0x70FD, 0x71A2, 0x742B, 0x7E2B, 0x84EC, 0x8702, -/* 0840 */ 0x9022, 0x92D2, 0x9CF3, 0x4E0D, 0x4ED8, 0x4FEF, 0x5085, 0x5256, -/* 0848 */ 0x526F, 0x5426, 0x5490, 0x57E0, 0x592B, 0x5A66, 0x5B5A, 0x5B75, -/* 0850 */ 0x5BCC, 0x5E9C, 0xF966, 0x6276, 0x6577, 0x65A7, 0x6D6E, 0x6EA5, -/* 0858 */ 0x7236, 0x7B26, 0x7C3F, 0x7F36, 0x8150, 0x8151, 0x819A, 0x8240, -/* 0860 */ 0x8299, 0x83A9, 0x8A03, 0x8CA0, 0x8CE6, 0x8CFB, 0x8D74, 0x8DBA, -/* 0868 */ 0x90E8, 0x91DC, 0x961C, 0x9644, 0x99D9, 0x9CE7, 0x5317, 0x5206, -/* 0870 */ 0x5429, 0x5674, 0x58B3, 0x5954, 0x596E, 0x5FFF, 0x61A4, 0x626E, -/* 0878 */ 0x6610, 0x6C7E, 0x711A, 0x76C6, 0x7C89, 0x7CDE, 0x7D1B, 0x82AC, -/* 0880 */ 0x8CC1, 0x96F0, 0xF967, 0x4F5B, 0x5F17, 0x5F7F, 0x62C2, 0x5D29, -/* 0888 */ 0x670B, 0x68DA, 0x787C, 0x7E43, 0x9D6C, 0x4E15, 0x5099, 0x5315, -/* 0890 */ 0x532A, 0x5351, 0x5983, 0x5A62, 0x5E87, 0x60B2, 0x618A, 0x6249, -/* 0898 */ 0x6279, 0x6590, 0x6787, 0x69A7, 0x6BD4, 0x6BD6, 0x6BD7, 0x6BD8, -/* 08A0 */ 0x6CB8, 0xF968, 0x7435, 0x75FA, 0x7812, 0x7891, 0x79D5, 0x79D8, -/* 08A8 */ 0x7C83, 0x7DCB, 0x7FE1, 0x80A5, 0x813E, 0x81C2, 0x83F2, 0x871A, -/* 08B0 */ 0x88E8, 0x8AB9, 0x8B6C, 0x8CBB, 0x9119, 0x975E, 0x98DB, 0x9F3B, -/* 08B8 */ 0x56AC, 0x5B2A, 0x5F6C, 0x658C, 0x6AB3, 0x6BAF, 0x6D5C, 0x6FF1, -/* 08C0 */ 0x7015, 0x725D, 0x73AD, 0x8CA7, 0x8CD3, 0x983B, 0x6191, 0x6C37, -/* 08C8 */ 0x8058, 0x9A01, 0x4E4D, 0x4E8B, 0x4E9B, 0x4ED5, 0x4F3A, 0x4F3C, -/* 08D0 */ 0x4F7F, 0x4FDF, 0x50FF, 0x53F2, 0x53F8, 0x5506, 0x55E3, 0x56DB, -/* 08D8 */ 0x58EB, 0x5962, 0x5A11, 0x5BEB, 0x5BFA, 0x5C04, 0x5DF3, 0x5E2B, -/* 08E0 */ 0x5F99, 0x601D, 0x6368, 0x659C, 0x65AF, 0x67F6, 0x67FB, 0x68AD, -/* 08E8 */ 0x6B7B, 0x6C99, 0x6CD7, 0x6E23, 0x7009, 0x7345, 0x7802, 0x793E, -/* 08F0 */ 0x7940, 0x7960, 0x79C1, 0x7BE9, 0x7D17, 0x7D72, 0x8086, 0x820D, -/* 08F8 */ 0x838E, 0x84D1, 0x86C7, 0x88DF, 0x8A50, 0x8A5E, 0x8B1D, 0x8CDC, -/* 0900 */ 0x8D66, 0x8FAD, 0x90AA, 0x98FC, 0x99DF, 0x9E9D, 0x524A, 0xF969, -/* 0908 */ 0x6714, 0xF96A, 0x5098, 0x522A, 0x5C71, 0x6563, 0x6C55, 0x73CA, -/* 0910 */ 0x7523, 0x759D, 0x7B97, 0x849C, 0x9178, 0x9730, 0x4E77, 0x6492, -/* 0918 */ 0x6BBA, 0x715E, 0x85A9, 0x4E09, 0xF96B, 0x6749, 0x68EE, 0x6E17, -/* 0920 */ 0x829F, 0x8518, 0x886B, 0x63F7, 0x6F81, 0x9212, 0x98AF, 0x4E0A, -/* 0928 */ 0x50B7, 0x50CF, 0x511F, 0x5546, 0x55AA, 0x5617, 0x5B40, 0x5C19, -/* 0930 */ 0x5CE0, 0x5E38, 0x5E8A, 0x5EA0, 0x5EC2, 0x60F3, 0x6851, 0x6A61, -/* 0938 */ 0x6E58, 0x723D, 0x7240, 0x72C0, 0x76F8, 0x7965, 0x7BB1, 0x7FD4, -/* 0940 */ 0x88F3, 0x89F4, 0x8A73, 0x8C61, 0x8CDE, 0x971C, 0x585E, 0x74BD, -/* 0948 */ 0x8CFD, 0x55C7, 0xF96C, 0x7A61, 0x7D22, 0x8272, 0x7272, 0x751F, -/* 0950 */ 0x7525, 0xF96D, 0x7B19, 0x5885, 0x58FB, 0x5DBC, 0x5E8F, 0x5EB6, -/* 0958 */ 0x5F90, 0x6055, 0x6292, 0x637F, 0x654D, 0x6691, 0x66D9, 0x66F8, -/* 0960 */ 0x6816, 0x68F2, 0x7280, 0x745E, 0x7B6E, 0x7D6E, 0x7DD6, 0x7F72, -/* 0968 */ 0x80E5, 0x8212, 0x85AF, 0x897F, 0x8A93, 0x901D, 0x92E4, 0x9ECD, -/* 0970 */ 0x9F20, 0x5915, 0x596D, 0x5E2D, 0x60DC, 0x6614, 0x6673, 0x6790, -/* 0978 */ 0x6C50, 0x6DC5, 0x6F5F, 0x77F3, 0x78A9, 0x84C6, 0x91CB, 0x932B, -/* 0980 */ 0x4ED9, 0x50CA, 0x5148, 0x5584, 0x5B0B, 0x5BA3, 0x6247, 0x657E, -/* 0988 */ 0x65CB, 0x6E32, 0x717D, 0x7401, 0x7444, 0x7487, 0x74BF, 0x766C, -/* 0990 */ 0x79AA, 0x7DDA, 0x7E55, 0x7FA8, 0x817A, 0x81B3, 0x8239, 0x861A, -/* 0998 */ 0x87EC, 0x8A75, 0x8DE3, 0x9078, 0x9291, 0x9425, 0x994D, 0x9BAE, -/* 09A0 */ 0x5368, 0x5C51, 0x6954, 0x6CC4, 0x6D29, 0x6E2B, 0x820C, 0x859B, -/* 09A8 */ 0x893B, 0x8A2D, 0x8AAA, 0x96EA, 0x9F67, 0x5261, 0x66B9, 0x6BB2, -/* 09B0 */ 0x7E96, 0x87FE, 0x8D0D, 0x9583, 0x965D, 0x651D, 0x6D89, 0x71EE, -/* 09B8 */ 0xF96E, 0x57CE, 0x59D3, 0x5BAC, 0x6027, 0x60FA, 0x6210, 0x661F, -/* 09C0 */ 0x665F, 0x7329, 0x73F9, 0x76DB, 0x7701, 0x7B6C, 0x8056, 0x8072, -/* 09C8 */ 0x8165, 0x8AA0, 0x9192, 0x4E16, 0x52E2, 0x6B72, 0x6D17, 0x7A05, -/* 09D0 */ 0x7B39, 0x7D30, 0xF96F, 0x8CB0, 0x53EC, 0x562F, 0x5851, 0x5BB5, -/* 09D8 */ 0x5C0F, 0x5C11, 0x5DE2, 0x6240, 0x6383, 0x6414, 0x662D, 0x68B3, -/* 09E0 */ 0x6CBC, 0x6D88, 0x6EAF, 0x701F, 0x70A4, 0x71D2, 0x7526, 0x758F, -/* 09E8 */ 0x758E, 0x7619, 0x7B11, 0x7BE0, 0x7C2B, 0x7D20, 0x7D39, 0x852C, -/* 09F0 */ 0x856D, 0x8607, 0x8A34, 0x900D, 0x9061, 0x90B5, 0x92B7, 0x97F6, -/* 09F8 */ 0x9A37, 0x4FD7, 0x5C6C, 0x675F, 0x6D91, 0x7C9F, 0x7E8C, 0x8B16, -/* 0A00 */ 0x8D16, 0x901F, 0x5B6B, 0x5DFD, 0x640D, 0x84C0, 0x905C, 0x98E1, -/* 0A08 */ 0x7387, 0x5B8B, 0x609A, 0x677E, 0x6DDE, 0x8A1F, 0x8AA6, 0x9001, -/* 0A10 */ 0x980C, 0x5237, 0xF970, 0x7051, 0x788E, 0x9396, 0x8870, 0x91D7, -/* 0A18 */ 0x4FEE, 0x53D7, 0x55FD, 0x56DA, 0x5782, 0x58FD, 0x5AC2, 0x5B88, -/* 0A20 */ 0x5CAB, 0x5CC0, 0x5E25, 0x6101, 0x620D, 0x624B, 0x6388, 0x641C, -/* 0A28 */ 0x6536, 0x6578, 0x6A39, 0x6B8A, 0x6C34, 0x6D19, 0x6F31, 0x71E7, -/* 0A30 */ 0x72E9, 0x7378, 0x7407, 0x74B2, 0x7626, 0x7761, 0x79C0, 0x7A57, -/* 0A38 */ 0x7AEA, 0x7CB9, 0x7D8F, 0x7DAC, 0x7E61, 0x7F9E, 0x8129, 0x8331, -/* 0A40 */ 0x8490, 0x84DA, 0x85EA, 0x8896, 0x8AB0, 0x8B90, 0x8F38, 0x9042, -/* 0A48 */ 0x9083, 0x916C, 0x9296, 0x92B9, 0x968B, 0x96A7, 0x96A8, 0x96D6, -/* 0A50 */ 0x9700, 0x9808, 0x9996, 0x9AD3, 0x9B1A, 0x53D4, 0x587E, 0x5919, -/* 0A58 */ 0x5B70, 0x5BBF, 0x6DD1, 0x6F5A, 0x719F, 0x7421, 0x74B9, 0x8085, -/* 0A60 */ 0x83FD, 0x5DE1, 0x5F87, 0x5FAA, 0x6042, 0x65EC, 0x6812, 0x696F, -/* 0A68 */ 0x6A53, 0x6B89, 0x6D35, 0x6DF3, 0x73E3, 0x76FE, 0x77AC, 0x7B4D, -/* 0A70 */ 0x7D14, 0x8123, 0x821C, 0x8340, 0x84F4, 0x8563, 0x8A62, 0x8AC4, -/* 0A78 */ 0x9187, 0x931E, 0x9806, 0x99B4, 0x620C, 0x8853, 0x8FF0, 0x9265, -/* 0A80 */ 0x5D07, 0x5D27, 0x5D69, 0x745F, 0x819D, 0x8768, 0x6FD5, 0x62FE, -/* 0A88 */ 0x7FD2, 0x8936, 0x8972, 0x4E1E, 0x4E58, 0x50E7, 0x52DD, 0x5347, -/* 0A90 */ 0x627F, 0x6607, 0x7E69, 0x8805, 0x965E, 0x4F8D, 0x5319, 0x5636, -/* 0A98 */ 0x59CB, 0x5AA4, 0x5C38, 0x5C4E, 0x5C4D, 0x5E02, 0x5F11, 0x6043, -/* 0AA0 */ 0x65BD, 0x662F, 0x6642, 0x67BE, 0x67F4, 0x731C, 0x77E2, 0x793A, -/* 0AA8 */ 0x7FC5, 0x8494, 0x84CD, 0x8996, 0x8A66, 0x8A69, 0x8AE1, 0x8C55, -/* 0AB0 */ 0x8C7A, 0x57F4, 0x5BD4, 0x5F0F, 0x606F, 0x62ED, 0x690D, 0x6B96, -/* 0AB8 */ 0x6E5C, 0x7184, 0x7BD2, 0x8755, 0x8B58, 0x8EFE, 0x98DF, 0x98FE, -/* 0AC0 */ 0x4F38, 0x4F81, 0x4FE1, 0x547B, 0x5A20, 0x5BB8, 0x613C, 0x65B0, -/* 0AC8 */ 0x6668, 0x71FC, 0x7533, 0x795E, 0x7D33, 0x814E, 0x81E3, 0x8398, -/* 0AD0 */ 0x85AA, 0x85CE, 0x8703, 0x8A0A, 0x8EAB, 0x8F9B, 0xF971, 0x8FC5, -/* 0AD8 */ 0x5931, 0x5BA4, 0x5BE6, 0x6089, 0x5BE9, 0x5C0B, 0x5FC3, 0x6C81, -/* 0AE0 */ 0xF972, 0x6DF1, 0x700B, 0x751A, 0x82AF, 0x8AF6, 0x4EC0, 0x5341, -/* 0AE8 */ 0xF973, 0x96D9, 0x6C0F, 0x4E9E, 0x4FC4, 0x5152, 0x555E, 0x5A25, -/* 0AF0 */ 0x5CE8, 0x6211, 0x7259, 0x82BD, 0x83AA, 0x86FE, 0x8859, 0x8A1D, -/* 0AF8 */ 0x963F, 0x96C5, 0x9913, 0x9D09, 0x9D5D, 0x580A, 0x5CB3, 0x5DBD, -/* 0B00 */ 0x5E44, 0x60E1, 0x6115, 0x63E1, 0x6A02, 0x6E25, 0x9102, 0x9354, -/* 0B08 */ 0x984E, 0x9C10, 0x9F77, 0x5B89, 0x5CB8, 0x6309, 0x664F, 0x6848, -/* 0B10 */ 0x773C, 0x96C1, 0x978D, 0x9854, 0x9B9F, 0x65A1, 0x8B01, 0x8ECB, -/* 0B18 */ 0x95BC, 0x5535, 0x5CA9, 0x5DD6, 0x5EB5, 0x6697, 0x764C, 0x83F4, -/* 0B20 */ 0x95C7, 0x58D3, 0x62BC, 0x72CE, 0x9D28, 0x4EF0, 0x592E, 0x600F, -/* 0B28 */ 0x663B, 0x6B83, 0x79E7, 0x9D26, 0x5393, 0x54C0, 0x57C3, 0x5D16, -/* 0B30 */ 0x611B, 0x66D6, 0x6DAF, 0x788D, 0x827E, 0x9698, 0x9744, 0x5384, -/* 0B38 */ 0x627C, 0x6396, 0x6DB2, 0x7E0A, 0x814B, 0x984D, 0x6AFB, 0x7F4C, -/* 0B40 */ 0x9DAF, 0x9E1A, 0x4E5F, 0x503B, 0x51B6, 0x591C, 0x60F9, 0x63F6, -/* 0B48 */ 0x6930, 0x723A, 0x8036, 0xF974, 0x91CE, 0x5F31, 0xF975, 0xF976, -/* 0B50 */ 0x7D04, 0x82E5, 0x846F, 0x84BB, 0x85E5, 0x8E8D, 0xF977, 0x4F6F, -/* 0B58 */ 0xF978, 0xF979, 0x58E4, 0x5B43, 0x6059, 0x63DA, 0x6518, 0x656D, -/* 0B60 */ 0x6698, 0xF97A, 0x694A, 0x6A23, 0x6D0B, 0x7001, 0x716C, 0x75D2, -/* 0B68 */ 0x760D, 0x79B3, 0x7A70, 0xF97B, 0x7F8A, 0xF97C, 0x8944, 0xF97D, -/* 0B70 */ 0x8B93, 0x91C0, 0x967D, 0xF97E, 0x990A, 0x5704, 0x5FA1, 0x65BC, -/* 0B78 */ 0x6F01, 0x7600, 0x79A6, 0x8A9E, 0x99AD, 0x9B5A, 0x9F6C, 0x5104, -/* 0B80 */ 0x61B6, 0x6291, 0x6A8D, 0x81C6, 0x5043, 0x5830, 0x5F66, 0x7109, -/* 0B88 */ 0x8A00, 0x8AFA, 0x5B7C, 0x8616, 0x4FFA, 0x513C, 0x56B4, 0x5944, -/* 0B90 */ 0x63A9, 0x6DF9, 0x5DAA, 0x696D, 0x5186, 0x4E88, 0x4F59, 0xF97F, -/* 0B98 */ 0xF980, 0xF981, 0x5982, 0xF982, 0xF983, 0x6B5F, 0x6C5D, 0xF984, -/* 0BA0 */ 0x74B5, 0x7916, 0xF985, 0x8207, 0x8245, 0x8339, 0x8F3F, 0x8F5D, -/* 0BA8 */ 0xF986, 0x9918, 0xF987, 0xF988, 0xF989, 0x4EA6, 0xF98A, 0x57DF, -/* 0BB0 */ 0x5F79, 0x6613, 0xF98B, 0xF98C, 0x75AB, 0x7E79, 0x8B6F, 0xF98D, -/* 0BB8 */ 0x9006, 0x9A5B, 0x56A5, 0x5827, 0x59F8, 0x5A1F, 0x5BB4, 0xF98E, -/* 0BC0 */ 0x5EF6, 0xF98F, 0xF990, 0x6350, 0x633B, 0xF991, 0x693D, 0x6C87, -/* 0BC8 */ 0x6CBF, 0x6D8E, 0x6D93, 0x6DF5, 0x6F14, 0xF992, 0x70DF, 0x7136, -/* 0BD0 */ 0x7159, 0xF993, 0x71C3, 0x71D5, 0xF994, 0x784F, 0x786F, 0xF995, -/* 0BD8 */ 0x7B75, 0x7DE3, 0xF996, 0x7E2F, 0xF997, 0x884D, 0x8EDF, 0xF998, -/* 0BE0 */ 0xF999, 0xF99A, 0x925B, 0xF99B, 0x9CF6, 0xF99C, 0xF99D, 0xF99E, -/* 0BE8 */ 0x6085, 0x6D85, 0xF99F, 0x71B1, 0xF9A0, 0xF9A1, 0x95B1, 0x53AD, -/* 0BF0 */ 0xF9A2, 0xF9A3, 0xF9A4, 0x67D3, 0xF9A5, 0x708E, 0x7130, 0x7430, -/* 0BF8 */ 0x8276, 0x82D2, 0xF9A6, 0x95BB, 0x9AE5, 0x9E7D, 0x66C4, 0xF9A7, -/* 0C00 */ 0x71C1, 0x8449, 0xF9A8, 0xF9A9, 0x584B, 0xF9AA, 0xF9AB, 0x5DB8, -/* 0C08 */ 0x5F71, 0xF9AC, 0x6620, 0x668E, 0x6979, 0x69AE, 0x6C38, 0x6CF3, -/* 0C10 */ 0x6E36, 0x6F41, 0x6FDA, 0x701B, 0x702F, 0x7150, 0x71DF, 0x7370, -/* 0C18 */ 0xF9AD, 0x745B, 0xF9AE, 0x74D4, 0x76C8, 0x7A4E, 0x7E93, 0xF9AF, -/* 0C20 */ 0xF9B0, 0x82F1, 0x8A60, 0x8FCE, 0xF9B1, 0x9348, 0xF9B2, 0x9719, -/* 0C28 */ 0xF9B3, 0xF9B4, 0x4E42, 0x502A, 0xF9B5, 0x5208, 0x53E1, 0x66F3, -/* 0C30 */ 0x6C6D, 0x6FCA, 0x730A, 0x777F, 0x7A62, 0x82AE, 0x85DD, 0x8602, -/* 0C38 */ 0xF9B6, 0x88D4, 0x8A63, 0x8B7D, 0x8C6B, 0xF9B7, 0x92B3, 0xF9B8, -/* 0C40 */ 0x9713, 0x9810, 0x4E94, 0x4F0D, 0x4FC9, 0x50B2, 0x5348, 0x543E, -/* 0C48 */ 0x5433, 0x55DA, 0x5862, 0x58BA, 0x5967, 0x5A1B, 0x5BE4, 0x609F, -/* 0C50 */ 0xF9B9, 0x61CA, 0x6556, 0x65FF, 0x6664, 0x68A7, 0x6C5A, 0x6FB3, -/* 0C58 */ 0x70CF, 0x71AC, 0x7352, 0x7B7D, 0x8708, 0x8AA4, 0x9C32, 0x9F07, -/* 0C60 */ 0x5C4B, 0x6C83, 0x7344, 0x7389, 0x923A, 0x6EAB, 0x7465, 0x761F, -/* 0C68 */ 0x7A69, 0x7E15, 0x860A, 0x5140, 0x58C5, 0x64C1, 0x74EE, 0x7515, -/* 0C70 */ 0x7670, 0x7FC1, 0x9095, 0x96CD, 0x9954, 0x6E26, 0x74E6, 0x7AA9, -/* 0C78 */ 0x7AAA, 0x81E5, 0x86D9, 0x8778, 0x8A1B, 0x5A49, 0x5B8C, 0x5B9B, -/* 0C80 */ 0x68A1, 0x6900, 0x6D63, 0x73A9, 0x7413, 0x742C, 0x7897, 0x7DE9, -/* 0C88 */ 0x7FEB, 0x8118, 0x8155, 0x839E, 0x8C4C, 0x962E, 0x9811, 0x66F0, -/* 0C90 */ 0x5F80, 0x65FA, 0x6789, 0x6C6A, 0x738B, 0x502D, 0x5A03, 0x6B6A, -/* 0C98 */ 0x77EE, 0x5916, 0x5D6C, 0x5DCD, 0x7325, 0x754F, 0xF9BA, 0xF9BB, -/* 0CA0 */ 0x50E5, 0x51F9, 0x582F, 0x592D, 0x5996, 0x59DA, 0x5BE5, 0xF9BC, -/* 0CA8 */ 0xF9BD, 0x5DA2, 0x62D7, 0x6416, 0x6493, 0x64FE, 0xF9BE, 0x66DC, -/* 0CB0 */ 0xF9BF, 0x6A48, 0xF9C0, 0x71FF, 0x7464, 0xF9C1, 0x7A88, 0x7AAF, -/* 0CB8 */ 0x7E47, 0x7E5E, 0x8000, 0x8170, 0xF9C2, 0x87EF, 0x8981, 0x8B20, -/* 0CC0 */ 0x9059, 0xF9C3, 0x9080, 0x9952, 0x617E, 0x6B32, 0x6D74, 0x7E1F, -/* 0CC8 */ 0x8925, 0x8FB1, 0x4FD1, 0x50AD, 0x5197, 0x52C7, 0x57C7, 0x5889, -/* 0CD0 */ 0x5BB9, 0x5EB8, 0x6142, 0x6995, 0x6D8C, 0x6E67, 0x6EB6, 0x7194, -/* 0CD8 */ 0x7462, 0x7528, 0x752C, 0x8073, 0x8338, 0x84C9, 0x8E0A, 0x9394, -/* 0CE0 */ 0x93DE, 0xF9C4, 0x4E8E, 0x4F51, 0x5076, 0x512A, 0x53C8, 0x53CB, -/* 0CE8 */ 0x53F3, 0x5B87, 0x5BD3, 0x5C24, 0x611A, 0x6182, 0x65F4, 0x725B, -/* 0CF0 */ 0x7397, 0x7440, 0x76C2, 0x7950, 0x7991, 0x79B9, 0x7D06, 0x7FBD, -/* 0CF8 */ 0x828B, 0x85D5, 0x865E, 0x8FC2, 0x9047, 0x90F5, 0x91EA, 0x9685, -/* 0D00 */ 0x96E8, 0x96E9, 0x52D6, 0x5F67, 0x65ED, 0x6631, 0x682F, 0x715C, -/* 0D08 */ 0x7A36, 0x90C1, 0x980A, 0x4E91, 0xF9C5, 0x6A52, 0x6B9E, 0x6F90, -/* 0D10 */ 0x7189, 0x8018, 0x82B8, 0x8553, 0x904B, 0x9695, 0x96F2, 0x97FB, -/* 0D18 */ 0x851A, 0x9B31, 0x4E90, 0x718A, 0x96C4, 0x5143, 0x539F, 0x54E1, -/* 0D20 */ 0x5713, 0x5712, 0x57A3, 0x5A9B, 0x5AC4, 0x5BC3, 0x6028, 0x613F, -/* 0D28 */ 0x63F4, 0x6C85, 0x6D39, 0x6E72, 0x6E90, 0x7230, 0x733F, 0x7457, -/* 0D30 */ 0x82D1, 0x8881, 0x8F45, 0x9060, 0xF9C6, 0x9662, 0x9858, 0x9D1B, -/* 0D38 */ 0x6708, 0x8D8A, 0x925E, 0x4F4D, 0x5049, 0x50DE, 0x5371, 0x570D, -/* 0D40 */ 0x59D4, 0x5A01, 0x5C09, 0x6170, 0x6690, 0x6E2D, 0x7232, 0x744B, -/* 0D48 */ 0x7DEF, 0x80C3, 0x840E, 0x8466, 0x853F, 0x875F, 0x885B, 0x8918, -/* 0D50 */ 0x8B02, 0x9055, 0x97CB, 0x9B4F, 0x4E73, 0x4F91, 0x5112, 0x516A, -/* 0D58 */ 0xF9C7, 0x552F, 0x55A9, 0x5B7A, 0x5BA5, 0x5E7C, 0x5E7D, 0x5EBE, -/* 0D60 */ 0x60A0, 0x60DF, 0x6108, 0x6109, 0x63C4, 0x6538, 0x6709, 0xF9C8, -/* 0D68 */ 0x67D4, 0x67DA, 0xF9C9, 0x6961, 0x6962, 0x6CB9, 0x6D27, 0xF9CA, -/* 0D70 */ 0x6E38, 0xF9CB, 0x6FE1, 0x7336, 0x7337, 0xF9CC, 0x745C, 0x7531, -/* 0D78 */ 0xF9CD, 0x7652, 0xF9CE, 0xF9CF, 0x7DAD, 0x81FE, 0x8438, 0x88D5, -/* 0D80 */ 0x8A98, 0x8ADB, 0x8AED, 0x8E30, 0x8E42, 0x904A, 0x903E, 0x907A, -/* 0D88 */ 0x9149, 0x91C9, 0x936E, 0xF9D0, 0xF9D1, 0x5809, 0xF9D2, 0x6BD3, -/* 0D90 */ 0x8089, 0x80B2, 0xF9D3, 0xF9D4, 0x5141, 0x596B, 0x5C39, 0xF9D5, -/* 0D98 */ 0xF9D6, 0x6F64, 0x73A7, 0x80E4, 0x8D07, 0xF9D7, 0x9217, 0x958F, -/* 0DA0 */ 0xF9D8, 0xF9D9, 0xF9DA, 0xF9DB, 0x807F, 0x620E, 0x701C, 0x7D68, -/* 0DA8 */ 0x878D, 0xF9DC, 0x57A0, 0x6069, 0x6147, 0x6BB7, 0x8ABE, 0x9280, -/* 0DB0 */ 0x96B1, 0x4E59, 0x541F, 0x6DEB, 0x852D, 0x9670, 0x97F3, 0x98EE, -/* 0DB8 */ 0x63D6, 0x6CE3, 0x9091, 0x51DD, 0x61C9, 0x81BA, 0x9DF9, 0x4F9D, -/* 0DC0 */ 0x501A, 0x5100, 0x5B9C, 0x610F, 0x61FF, 0x64EC, 0x6905, 0x6BC5, -/* 0DC8 */ 0x7591, 0x77E3, 0x7FA9, 0x8264, 0x858F, 0x87FB, 0x8863, 0x8ABC, -/* 0DD0 */ 0x8B70, 0x91AB, 0x4E8C, 0x4EE5, 0x4F0A, 0xF9DD, 0xF9DE, 0x5937, -/* 0DD8 */ 0x59E8, 0xF9DF, 0x5DF2, 0x5F1B, 0x5F5B, 0x6021, 0xF9E0, 0xF9E1, -/* 0DE0 */ 0xF9E2, 0xF9E3, 0x723E, 0x73E5, 0xF9E4, 0x7570, 0x75CD, 0xF9E5, -/* 0DE8 */ 0x79FB, 0xF9E6, 0x800C, 0x8033, 0x8084, 0x82E1, 0x8351, 0xF9E7, -/* 0DF0 */ 0xF9E8, 0x8CBD, 0x8CB3, 0x9087, 0xF9E9, 0xF9EA, 0x98F4, 0x990C, -/* 0DF8 */ 0xF9EB, 0xF9EC, 0x7037, 0x76CA, 0x7FCA, 0x7FCC, 0x7FFC, 0x8B1A, -/* 0E00 */ 0x4EBA, 0x4EC1, 0x5203, 0x5370, 0xF9ED, 0x54BD, 0x56E0, 0x59FB, -/* 0E08 */ 0x5BC5, 0x5F15, 0x5FCD, 0x6E6E, 0xF9EE, 0xF9EF, 0x7D6A, 0x8335, -/* 0E10 */ 0xF9F0, 0x8693, 0x8A8D, 0xF9F1, 0x976D, 0x9777, 0xF9F2, 0xF9F3, -/* 0E18 */ 0x4E00, 0x4F5A, 0x4F7E, 0x58F9, 0x65E5, 0x6EA2, 0x9038, 0x93B0, -/* 0E20 */ 0x99B9, 0x4EFB, 0x58EC, 0x598A, 0x59D9, 0x6041, 0xF9F4, 0xF9F5, -/* 0E28 */ 0x7A14, 0xF9F6, 0x834F, 0x8CC3, 0x5165, 0x5344, 0xF9F7, 0xF9F8, -/* 0E30 */ 0xF9F9, 0x4ECD, 0x5269, 0x5B55, 0x82BF, 0x4ED4, 0x523A, 0x54A8, -/* 0E38 */ 0x59C9, 0x59FF, 0x5B50, 0x5B57, 0x5B5C, 0x6063, 0x6148, 0x6ECB, -/* 0E40 */ 0x7099, 0x716E, 0x7386, 0x74F7, 0x75B5, 0x78C1, 0x7D2B, 0x8005, -/* 0E48 */ 0x81EA, 0x8328, 0x8517, 0x85C9, 0x8AEE, 0x8CC7, 0x96CC, 0x4F5C, -/* 0E50 */ 0x52FA, 0x56BC, 0x65AB, 0x6628, 0x707C, 0x70B8, 0x7235, 0x7DBD, -/* 0E58 */ 0x828D, 0x914C, 0x96C0, 0x9D72, 0x5B71, 0x68E7, 0x6B98, 0x6F7A, -/* 0E60 */ 0x76DE, 0x5C91, 0x66AB, 0x6F5B, 0x7BB4, 0x7C2A, 0x8836, 0x96DC, -/* 0E68 */ 0x4E08, 0x4ED7, 0x5320, 0x5834, 0x58BB, 0x58EF, 0x596C, 0x5C07, -/* 0E70 */ 0x5E33, 0x5E84, 0x5F35, 0x638C, 0x66B2, 0x6756, 0x6A1F, 0x6AA3, -/* 0E78 */ 0x6B0C, 0x6F3F, 0x7246, 0xF9FA, 0x7350, 0x748B, 0x7AE0, 0x7CA7, -/* 0E80 */ 0x8178, 0x81DF, 0x81E7, 0x838A, 0x846C, 0x8523, 0x8594, 0x85CF, -/* 0E88 */ 0x88DD, 0x8D13, 0x91AC, 0x9577, 0x969C, 0x518D, 0x54C9, 0x5728, -/* 0E90 */ 0x5BB0, 0x624D, 0x6750, 0x683D, 0x6893, 0x6E3D, 0x6ED3, 0x707D, -/* 0E98 */ 0x7E21, 0x88C1, 0x8CA1, 0x8F09, 0x9F4B, 0x9F4E, 0x722D, 0x7B8F, -/* 0EA0 */ 0x8ACD, 0x931A, 0x4F47, 0x4F4E, 0x5132, 0x5480, 0x59D0, 0x5E95, -/* 0EA8 */ 0x62B5, 0x6775, 0x696E, 0x6A17, 0x6CAE, 0x6E1A, 0x72D9, 0x732A, -/* 0EB0 */ 0x75BD, 0x7BB8, 0x7D35, 0x82E7, 0x83F9, 0x8457, 0x85F7, 0x8A5B, -/* 0EB8 */ 0x8CAF, 0x8E87, 0x9019, 0x90B8, 0x96CE, 0x9F5F, 0x52E3, 0x540A, -/* 0EC0 */ 0x5AE1, 0x5BC2, 0x6458, 0x6575, 0x6EF4, 0x72C4, 0xF9FB, 0x7684, -/* 0EC8 */ 0x7A4D, 0x7B1B, 0x7C4D, 0x7E3E, 0x7FDF, 0x837B, 0x8B2B, 0x8CCA, -/* 0ED0 */ 0x8D64, 0x8DE1, 0x8E5F, 0x8FEA, 0x8FF9, 0x9069, 0x93D1, 0x4F43, -/* 0ED8 */ 0x4F7A, 0x50B3, 0x5168, 0x5178, 0x524D, 0x526A, 0x5861, 0x587C, -/* 0EE0 */ 0x5960, 0x5C08, 0x5C55, 0x5EDB, 0x609B, 0x6230, 0x6813, 0x6BBF, -/* 0EE8 */ 0x6C08, 0x6FB1, 0x714E, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, -/* 0EF0 */ 0x7B4C, 0x7B8B, 0x7BAD, 0x7BC6, 0x7E8F, 0x8A6E, 0x8F3E, 0x8F49, -/* 0EF8 */ 0x923F, 0x9293, 0x9322, 0x942B, 0x96FB, 0x985A, 0x986B, 0x991E, -/* 0F00 */ 0x5207, 0x622A, 0x6298, 0x6D59, 0x7664, 0x7ACA, 0x7BC0, 0x7D76, -/* 0F08 */ 0x5360, 0x5CBE, 0x5E97, 0x6F38, 0x70B9, 0x7C98, 0x9711, 0x9B8E, -/* 0F10 */ 0x9EDE, 0x63A5, 0x647A, 0x8776, 0x4E01, 0x4E95, 0x4EAD, 0x505C, -/* 0F18 */ 0x5075, 0x5448, 0x59C3, 0x5B9A, 0x5E40, 0x5EAD, 0x5EF7, 0x5F81, -/* 0F20 */ 0x60C5, 0x633A, 0x653F, 0x6574, 0x65CC, 0x6676, 0x6678, 0x67FE, -/* 0F28 */ 0x6968, 0x6A89, 0x6B63, 0x6C40, 0x6DC0, 0x6DE8, 0x6E1F, 0x6E5E, -/* 0F30 */ 0x701E, 0x70A1, 0x738E, 0x73FD, 0x753A, 0x775B, 0x7887, 0x798E, -/* 0F38 */ 0x7A0B, 0x7A7D, 0x7CBE, 0x7D8E, 0x8247, 0x8A02, 0x8AEA, 0x8C9E, -/* 0F40 */ 0x912D, 0x914A, 0x91D8, 0x9266, 0x92CC, 0x9320, 0x9706, 0x9756, -/* 0F48 */ 0x975C, 0x9802, 0x9F0E, 0x5236, 0x5291, 0x557C, 0x5824, 0x5E1D, -/* 0F50 */ 0x5F1F, 0x608C, 0x63D0, 0x68AF, 0x6FDF, 0x796D, 0x7B2C, 0x81CD, -/* 0F58 */ 0x85BA, 0x88FD, 0x8AF8, 0x8E44, 0x918D, 0x9664, 0x969B, 0x973D, -/* 0F60 */ 0x984C, 0x9F4A, 0x4FCE, 0x5146, 0x51CB, 0x52A9, 0x5632, 0x5F14, -/* 0F68 */ 0x5F6B, 0x63AA, 0x64CD, 0x65E9, 0x6641, 0x66FA, 0x66F9, 0x671D, -/* 0F70 */ 0x689D, 0x68D7, 0x69FD, 0x6F15, 0x6F6E, 0x7167, 0x71E5, 0x722A, -/* 0F78 */ 0x74AA, 0x773A, 0x7956, 0x795A, 0x79DF, 0x7A20, 0x7A95, 0x7C97, -/* 0F80 */ 0x7CDF, 0x7D44, 0x7E70, 0x8087, 0x85FB, 0x86A4, 0x8A54, 0x8ABF, -/* 0F88 */ 0x8D99, 0x8E81, 0x9020, 0x906D, 0x91E3, 0x963B, 0x96D5, 0x9CE5, -/* 0F90 */ 0x65CF, 0x7C07, 0x8DB3, 0x93C3, 0x5B58, 0x5C0A, 0x5352, 0x62D9, -/* 0F98 */ 0x731D, 0x5027, 0x5B97, 0x5F9E, 0x60B0, 0x616B, 0x68D5, 0x6DD9, -/* 0FA0 */ 0x742E, 0x7A2E, 0x7D42, 0x7D9C, 0x7E31, 0x816B, 0x8E2A, 0x8E35, -/* 0FA8 */ 0x937E, 0x9418, 0x4F50, 0x5750, 0x5DE6, 0x5EA7, 0x632B, 0x7F6A, -/* 0FB0 */ 0x4E3B, 0x4F4F, 0x4F8F, 0x505A, 0x59DD, 0x80C4, 0x546A, 0x5468, -/* 0FB8 */ 0x55FE, 0x594F, 0x5B99, 0x5DDE, 0x5EDA, 0x665D, 0x6731, 0x67F1, -/* 0FC0 */ 0x682A, 0x6CE8, 0x6D32, 0x6E4A, 0x6F8D, 0x70B7, 0x73E0, 0x7587, -/* 0FC8 */ 0x7C4C, 0x7D02, 0x7D2C, 0x7DA2, 0x821F, 0x86DB, 0x8A3B, 0x8A85, -/* 0FD0 */ 0x8D70, 0x8E8A, 0x8F33, 0x9031, 0x914E, 0x9152, 0x9444, 0x99D0, -/* 0FD8 */ 0x7AF9, 0x7CA5, 0x4FCA, 0x5101, 0x51C6, 0x57C8, 0x5BEF, 0x5CFB, -/* 0FE0 */ 0x6659, 0x6A3D, 0x6D5A, 0x6E96, 0x6FEC, 0x710C, 0x756F, 0x7AE3, -/* 0FE8 */ 0x8822, 0x9021, 0x9075, 0x96CB, 0x99FF, 0x8301, 0x4E2D, 0x4EF2, -/* 0FF0 */ 0x8846, 0x91CD, 0x537D, 0x6ADB, 0x696B, 0x6C41, 0x847A, 0x589E, -/* 0FF8 */ 0x618E, 0x66FE, 0x62EF, 0x70DD, 0x7511, 0x75C7, 0x7E52, 0x84B8, -/* 1000 */ 0x8B49, 0x8D08, 0x4E4B, 0x53EA, 0x54AB, 0x5730, 0x5740, 0x5FD7, -/* 1008 */ 0x6301, 0x6307, 0x646F, 0x652F, 0x65E8, 0x667A, 0x679D, 0x67B3, -/* 1010 */ 0x6B62, 0x6C60, 0x6C9A, 0x6F2C, 0x77E5, 0x7825, 0x7949, 0x7957, -/* 1018 */ 0x7D19, 0x80A2, 0x8102, 0x81F3, 0x829D, 0x82B7, 0x8718, 0x8A8C, -/* 1020 */ 0xF9FC, 0x8D04, 0x8DBE, 0x9072, 0x76F4, 0x7A19, 0x7A37, 0x7E54, -/* 1028 */ 0x8077, 0x5507, 0x55D4, 0x5875, 0x632F, 0x6422, 0x6649, 0x664B, -/* 1030 */ 0x686D, 0x699B, 0x6B84, 0x6D25, 0x6EB1, 0x73CD, 0x7468, 0x74A1, -/* 1038 */ 0x755B, 0x75B9, 0x76E1, 0x771E, 0x778B, 0x79E6, 0x7E09, 0x7E1D, -/* 1040 */ 0x81FB, 0x852F, 0x8897, 0x8A3A, 0x8CD1, 0x8EEB, 0x8FB0, 0x9032, -/* 1048 */ 0x93AD, 0x9663, 0x9673, 0x9707, 0x4F84, 0x53F1, 0x59EA, 0x5AC9, -/* 1050 */ 0x5E19, 0x684E, 0x74C6, 0x75BE, 0x79E9, 0x7A92, 0x81A3, 0x86ED, -/* 1058 */ 0x8CEA, 0x8DCC, 0x8FED, 0x659F, 0x6715, 0xF9FD, 0x57F7, 0x6F57, -/* 1060 */ 0x7DDD, 0x8F2F, 0x93F6, 0x96C6, 0x5FB5, 0x61F2, 0x6F84, 0x4E14, -/* 1068 */ 0x4F98, 0x501F, 0x53C9, 0x55DF, 0x5D6F, 0x5DEE, 0x6B21, 0x6B64, -/* 1070 */ 0x78CB, 0x7B9A, 0xF9FE, 0x8E49, 0x8ECA, 0x906E, 0x6349, 0x643E, -/* 1078 */ 0x7740, 0x7A84, 0x932F, 0x947F, 0x9F6A, 0x64B0, 0x6FAF, 0x71E6, -/* 1080 */ 0x74A8, 0x74DA, 0x7AC4, 0x7C12, 0x7E82, 0x7CB2, 0x7E98, 0x8B9A, -/* 1088 */ 0x8D0A, 0x947D, 0x9910, 0x994C, 0x5239, 0x5BDF, 0x64E6, 0x672D, -/* 1090 */ 0x7D2E, 0x50ED, 0x53C3, 0x5879, 0x6158, 0x6159, 0x61FA, 0x65AC, -/* 1098 */ 0x7AD9, 0x8B92, 0x8B96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5A3C, -/* 10A0 */ 0x5EE0, 0x5F70, 0x6134, 0x655E, 0x660C, 0x6636, 0x66A2, 0x69CD, -/* 10A8 */ 0x6EC4, 0x6F32, 0x7316, 0x7621, 0x7A93, 0x8139, 0x8259, 0x83D6, -/* 10B0 */ 0x84BC, 0x50B5, 0x57F0, 0x5BC0, 0x5BE8, 0x5F69, 0x63A1, 0x7826, -/* 10B8 */ 0x7DB5, 0x83DC, 0x8521, 0x91C7, 0x91F5, 0x518A, 0x67F5, 0x7B56, -/* 10C0 */ 0x8CAC, 0x51C4, 0x59BB, 0x60BD, 0x8655, 0x501C, 0xF9FF, 0x5254, -/* 10C8 */ 0x5C3A, 0x617D, 0x621A, 0x62D3, 0x64F2, 0x65A5, 0x6ECC, 0x7620, -/* 10D0 */ 0x810A, 0x8E60, 0x965F, 0x96BB, 0x4EDF, 0x5343, 0x5598, 0x5929, -/* 10D8 */ 0x5DDD, 0x64C5, 0x6CC9, 0x6DFA, 0x7394, 0x7A7F, 0x821B, 0x85A6, -/* 10E0 */ 0x8CE4, 0x8E10, 0x9077, 0x91E7, 0x95E1, 0x9621, 0x97C6, 0x51F8, -/* 10E8 */ 0x54F2, 0x5586, 0x5FB9, 0x64A4, 0x6F88, 0x7DB4, 0x8F1F, 0x8F4D, -/* 10F0 */ 0x9435, 0x50C9, 0x5C16, 0x6CBE, 0x6DFB, 0x751B, 0x77BB, 0x7C3D, -/* 10F8 */ 0x7C64, 0x8A79, 0x8AC2, 0x581E, 0x59BE, 0x5E16, 0x6377, 0x7252, -/* 1100 */ 0x758A, 0x776B, 0x8ADC, 0x8CBC, 0x8F12, 0x5EF3, 0x6674, 0x6DF8, -/* 1108 */ 0x807D, 0x83C1, 0x8ACB, 0x9751, 0x9BD6, 0xFA00, 0x5243, 0x66FF, -/* 1110 */ 0x6D95, 0x6EEF, 0x7DE0, 0x8AE6, 0x902E, 0x905E, 0x9AD4, 0x521D, -/* 1118 */ 0x527F, 0x54E8, 0x6194, 0x6284, 0x62DB, 0x68A2, 0x6912, 0x695A, -/* 1120 */ 0x6A35, 0x7092, 0x7126, 0x785D, 0x7901, 0x790E, 0x79D2, 0x7A0D, -/* 1128 */ 0x8096, 0x8278, 0x82D5, 0x8349, 0x8549, 0x8C82, 0x8D85, 0x9162, -/* 1130 */ 0x918B, 0x91AE, 0x4FC3, 0x56D1, 0x71ED, 0x77D7, 0x8700, 0x89F8, -/* 1138 */ 0x5BF8, 0x5FD6, 0x6751, 0x90A8, 0x53E2, 0x585A, 0x5BF5, 0x60A4, -/* 1140 */ 0x6181, 0x6460, 0x7E3D, 0x8070, 0x8525, 0x9283, 0x64AE, 0x50AC, -/* 1148 */ 0x5D14, 0x6700, 0x589C, 0x62BD, 0x63A8, 0x690E, 0x6978, 0x6A1E, -/* 1150 */ 0x6E6B, 0x76BA, 0x79CB, 0x82BB, 0x8429, 0x8ACF, 0x8DA8, 0x8FFD, -/* 1158 */ 0x9112, 0x914B, 0x919C, 0x9310, 0x9318, 0x939A, 0x96DB, 0x9A36, -/* 1160 */ 0x9C0D, 0x4E11, 0x755C, 0x795D, 0x7AFA, 0x7B51, 0x7BC9, 0x7E2E, -/* 1168 */ 0x84C4, 0x8E59, 0x8E74, 0x8EF8, 0x9010, 0x6625, 0x693F, 0x7443, -/* 1170 */ 0x51FA, 0x672E, 0x9EDC, 0x5145, 0x5FE0, 0x6C96, 0x87F2, 0x885D, -/* 1178 */ 0x8877, 0x60B4, 0x81B5, 0x8403, 0x8D05, 0x53D6, 0x5439, 0x5634, -/* 1180 */ 0x5A36, 0x5C31, 0x708A, 0x7FE0, 0x805A, 0x8106, 0x81ED, 0x8DA3, -/* 1188 */ 0x9189, 0x9A5F, 0x9DF2, 0x5074, 0x4EC4, 0x53A0, 0x60FB, 0x6E2C, -/* 1190 */ 0x5C64, 0x4F88, 0x5024, 0x55E4, 0x5CD9, 0x5E5F, 0x6065, 0x6894, -/* 1198 */ 0x6CBB, 0x6DC4, 0x71BE, 0x75D4, 0x75F4, 0x7661, 0x7A1A, 0x7A49, -/* 11A0 */ 0x7DC7, 0x7DFB, 0x7F6E, 0x81F4, 0x86A9, 0x8F1C, 0x96C9, 0x99B3, -/* 11A8 */ 0x9F52, 0x5247, 0x52C5, 0x98ED, 0x89AA, 0x4E03, 0x67D2, 0x6F06, -/* 11B0 */ 0x4FB5, 0x5BE2, 0x6795, 0x6C88, 0x6D78, 0x741B, 0x7827, 0x91DD, -/* 11B8 */ 0x937C, 0x87C4, 0x79E4, 0x7A31, 0x5FEB, 0x4ED6, 0x54A4, 0x553E, -/* 11C0 */ 0x58AE, 0x59A5, 0x60F0, 0x6253, 0x62D6, 0x6736, 0x6955, 0x8235, -/* 11C8 */ 0x9640, 0x99B1, 0x99DD, 0x502C, 0x5353, 0x5544, 0x577C, 0xFA01, -/* 11D0 */ 0x6258, 0xFA02, 0x64E2, 0x666B, 0x67DD, 0x6FC1, 0x6FEF, 0x7422, -/* 11D8 */ 0x7438, 0x8A17, 0x9438, 0x5451, 0x5606, 0x5766, 0x5F48, 0x619A, -/* 11E0 */ 0x6B4E, 0x7058, 0x70AD, 0x7DBB, 0x8A95, 0x596A, 0x812B, 0x63A2, -/* 11E8 */ 0x7708, 0x803D, 0x8CAA, 0x5854, 0x642D, 0x69BB, 0x5B95, 0x5E11, -/* 11F0 */ 0x6E6F, 0xFA03, 0x8569, 0x514C, 0x53F0, 0x592A, 0x6020, 0x614B, -/* 11F8 */ 0x6B86, 0x6C70, 0x6CF0, 0x7B1E, 0x80CE, 0x82D4, 0x8DC6, 0x90B0, -/* 1200 */ 0x98B1, 0xFA04, 0x64C7, 0x6FA4, 0x6491, 0x6504, 0x514E, 0x5410, -/* 1208 */ 0x571F, 0x8A0E, 0x615F, 0x6876, 0xFA05, 0x75DB, 0x7B52, 0x7D71, -/* 1210 */ 0x901A, 0x5806, 0x69CC, 0x817F, 0x892A, 0x9000, 0x9839, 0x5078, -/* 1218 */ 0x5957, 0x59AC, 0x6295, 0x900F, 0x9B2A, 0x615D, 0x7279, 0x95D6, -/* 1220 */ 0x5761, 0x5A46, 0x5DF4, 0x628A, 0x64AD, 0x64FA, 0x6777, 0x6CE2, -/* 1228 */ 0x6D3E, 0x722C, 0x7436, 0x7834, 0x7F77, 0x82AD, 0x8DDB, 0x9817, -/* 1230 */ 0x5224, 0x5742, 0x677F, 0x7248, 0x74E3, 0x8CA9, 0x8FA6, 0x9211, -/* 1238 */ 0x962A, 0x516B, 0x53ED, 0x634C, 0x4F69, 0x5504, 0x6096, 0x6557, -/* 1240 */ 0x6C9B, 0x6D7F, 0x724C, 0x72FD, 0x7A17, 0x8987, 0x8C9D, 0x5F6D, -/* 1248 */ 0x6F8E, 0x70F9, 0x81A8, 0x610E, 0x4FBF, 0x504F, 0x6241, 0x7247, -/* 1250 */ 0x7BC7, 0x7DE8, 0x7FE9, 0x904D, 0x97AD, 0x9A19, 0x8CB6, 0x576A, -/* 1258 */ 0x5E73, 0x67B0, 0x840D, 0x8A55, 0x5420, 0x5B16, 0x5E63, 0x5EE2, -/* 1260 */ 0x5F0A, 0x6583, 0x80BA, 0x853D, 0x9589, 0x965B, 0x4F48, 0x5305, -/* 1268 */ 0x530D, 0x530F, 0x5486, 0x54FA, 0x5703, 0x5E03, 0x6016, 0x629B, -/* 1270 */ 0x62B1, 0x6355, 0xFA06, 0x6CE1, 0x6D66, 0x75B1, 0x7832, 0x80DE, -/* 1278 */ 0x812F, 0x82DE, 0x8461, 0x84B2, 0x888D, 0x8912, 0x900B, 0x92EA, -/* 1280 */ 0x98FD, 0x9B91, 0x5E45, 0x66B4, 0x66DD, 0x7011, 0x7206, 0xFA07, -/* 1288 */ 0x4FF5, 0x527D, 0x5F6A, 0x6153, 0x6753, 0x6A19, 0x6F02, 0x74E2, -/* 1290 */ 0x7968, 0x8868, 0x8C79, 0x98C7, 0x98C4, 0x9A43, 0x54C1, 0x7A1F, -/* 1298 */ 0x6953, 0x8AF7, 0x8C4A, 0x98A8, 0x99AE, 0x5F7C, 0x62AB, 0x75B2, -/* 12A0 */ 0x76AE, 0x88AB, 0x907F, 0x9642, 0x5339, 0x5F3C, 0x5FC5, 0x6CCC, -/* 12A8 */ 0x73CC, 0x7562, 0x758B, 0x7B46, 0x82FE, 0x999D, 0x4E4F, 0x903C, -/* 12B0 */ 0x4E0B, 0x4F55, 0x53A6, 0x590F, 0x5EC8, 0x6630, 0x6CB3, 0x7455, -/* 12B8 */ 0x8377, 0x8766, 0x8CC0, 0x9050, 0x971E, 0x9C15, 0x58D1, 0x5B78, -/* 12C0 */ 0x8650, 0x8B14, 0x9DB4, 0x5BD2, 0x6068, 0x608D, 0x65F1, 0x6C57, -/* 12C8 */ 0x6F22, 0x6FA3, 0x701A, 0x7F55, 0x7FF0, 0x9591, 0x9592, 0x9650, -/* 12D0 */ 0x97D3, 0x5272, 0x8F44, 0x51FD, 0x542B, 0x54B8, 0x5563, 0x558A, -/* 12D8 */ 0x6ABB, 0x6DB5, 0x7DD8, 0x8266, 0x929C, 0x9677, 0x9E79, 0x5408, -/* 12E0 */ 0x54C8, 0x76D2, 0x86E4, 0x95A4, 0x95D4, 0x965C, 0x4EA2, 0x4F09, -/* 12E8 */ 0x59EE, 0x5AE6, 0x5DF7, 0x6052, 0x6297, 0x676D, 0x6841, 0x6C86, -/* 12F0 */ 0x6E2F, 0x7F38, 0x809B, 0x822A, 0xFA08, 0xFA09, 0x9805, 0x4EA5, -/* 12F8 */ 0x5055, 0x54B3, 0x5793, 0x595A, 0x5B69, 0x5BB3, 0x61C8, 0x6977, -/* 1300 */ 0x6D77, 0x7023, 0x87F9, 0x89E3, 0x8A72, 0x8AE7, 0x9082, 0x99ED, -/* 1308 */ 0x9AB8, 0x52BE, 0x6838, 0x5016, 0x5E78, 0x674F, 0x8347, 0x884C, -/* 1310 */ 0x4EAB, 0x5411, 0x56AE, 0x73E6, 0x9115, 0x97FF, 0x9909, 0x9957, -/* 1318 */ 0x9999, 0x5653, 0x589F, 0x865B, 0x8A31, 0x61B2, 0x6AF6, 0x737B, -/* 1320 */ 0x8ED2, 0x6B47, 0x96AA, 0x9A57, 0x5955, 0x7200, 0x8D6B, 0x9769, -/* 1328 */ 0x4FD4, 0x5CF4, 0x5F26, 0x61F8, 0x665B, 0x6CEB, 0x70AB, 0x7384, -/* 1330 */ 0x73B9, 0x73FE, 0x7729, 0x774D, 0x7D43, 0x7D62, 0x7E23, 0x8237, -/* 1338 */ 0x8852, 0xFA0A, 0x8CE2, 0x9249, 0x986F, 0x5B51, 0x7A74, 0x8840, -/* 1340 */ 0x9801, 0x5ACC, 0x4FE0, 0x5354, 0x593E, 0x5CFD, 0x633E, 0x6D79, -/* 1348 */ 0x72F9, 0x8105, 0x8107, 0x83A2, 0x92CF, 0x9830, 0x4EA8, 0x5144, -/* 1350 */ 0x5211, 0x578B, 0x5F62, 0x6CC2, 0x6ECE, 0x7005, 0x7050, 0x70AF, -/* 1358 */ 0x7192, 0x73E9, 0x7469, 0x834A, 0x87A2, 0x8861, 0x9008, 0x90A2, -/* 1360 */ 0x93A3, 0x99A8, 0x516E, 0x5F57, 0x60E0, 0x6167, 0x66B3, 0x8559, -/* 1368 */ 0x8E4A, 0x91AF, 0x978B, 0x4E4E, 0x4E92, 0x547C, 0x58D5, 0x58FA, -/* 1370 */ 0x597D, 0x5CB5, 0x5F27, 0x6236, 0x6248, 0x660A, 0x6667, 0x6BEB, -/* 1378 */ 0x6D69, 0x6DCF, 0x6E56, 0x6EF8, 0x6F94, 0x6FE0, 0x6FE9, 0x705D, -/* 1380 */ 0x72D0, 0x7425, 0x745A, 0x74E0, 0x7693, 0x795C, 0x7CCA, 0x7E1E, -/* 1388 */ 0x80E1, 0x82A6, 0x846B, 0x84BF, 0x864E, 0x865F, 0x8774, 0x8B77, -/* 1390 */ 0x8C6A, 0x93AC, 0x9800, 0x9865, 0x60D1, 0x6216, 0x9177, 0x5A5A, -/* 1398 */ 0x660F, 0x6DF7, 0x6E3E, 0x743F, 0x9B42, 0x5FFD, 0x60DA, 0x7B0F, -/* 13A0 */ 0x54C4, 0x5F18, 0x6C5E, 0x6CD3, 0x6D2A, 0x70D8, 0x7D05, 0x8679, -/* 13A8 */ 0x8A0C, 0x9D3B, 0x5316, 0x548C, 0x5B05, 0x6A3A, 0x706B, 0x7575, -/* 13B0 */ 0x798D, 0x79BE, 0x82B1, 0x83EF, 0x8A71, 0x8B41, 0x8CA8, 0x9774, -/* 13B8 */ 0xFA0B, 0x64F4, 0x652B, 0x78BA, 0x78BB, 0x7A6B, 0x4E38, 0x559A, -/* 13C0 */ 0x5950, 0x5BA6, 0x5E7B, 0x60A3, 0x63DB, 0x6B61, 0x6665, 0x6853, -/* 13C8 */ 0x6E19, 0x7165, 0x74B0, 0x7D08, 0x9084, 0x9A69, 0x9C25, 0x6D3B, -/* 13D0 */ 0x6ED1, 0x733E, 0x8C41, 0x95CA, 0x51F0, 0x5E4C, 0x5FA8, 0x604D, -/* 13D8 */ 0x60F6, 0x6130, 0x614C, 0x6643, 0x6644, 0x69A5, 0x6CC1, 0x6E5F, -/* 13E0 */ 0x6EC9, 0x6F62, 0x714C, 0x749C, 0x7687, 0x7BC1, 0x7C27, 0x8352, -/* 13E8 */ 0x8757, 0x9051, 0x968D, 0x9EC3, 0x532F, 0x56DE, 0x5EFB, 0x5F8A, -/* 13F0 */ 0x6062, 0x6094, 0x61F7, 0x6666, 0x6703, 0x6A9C, 0x6DEE, 0x6FAE, -/* 13F8 */ 0x7070, 0x736A, 0x7E6A, 0x81BE, 0x8334, 0x86D4, 0x8AA8, 0x8CC4, -/* 1400 */ 0x5283, 0x7372, 0x5B96, 0x6A6B, 0x9404, 0x54EE, 0x5686, 0x5B5D, -/* 1408 */ 0x6548, 0x6585, 0x66C9, 0x689F, 0x6D8D, 0x6DC6, 0x723B, 0x80B4, -/* 1410 */ 0x9175, 0x9A4D, 0x4FAF, 0x5019, 0x539A, 0x540E, 0x543C, 0x5589, -/* 1418 */ 0x55C5, 0x5E3F, 0x5F8C, 0x673D, 0x7166, 0x73DD, 0x9005, 0x52DB, -/* 1420 */ 0x52F3, 0x5864, 0x58CE, 0x7104, 0x718F, 0x71FB, 0x85B0, 0x8A13, -/* 1428 */ 0x6688, 0x85A8, 0x55A7, 0x6684, 0x714A, 0x8431, 0x5349, 0x5599, -/* 1430 */ 0x6BC1, 0x5F59, 0x5FBD, 0x63EE, 0x6689, 0x7147, 0x8AF1, 0x8F1D, -/* 1438 */ 0x9EBE, 0x4F11, 0x643A, 0x70CB, 0x7566, 0x8667, 0x6064, 0x8B4E, -/* 1440 */ 0x9DF8, 0x5147, 0x51F6, 0x5308, 0x6D36, 0x80F8, 0x9ED1, 0x6615, -/* 1448 */ 0x6B23, 0x7098, 0x75D5, 0x5403, 0x5C79, 0x7D07, 0x8A16, 0x6B20, -/* 1450 */ 0x6B3D, 0x6B46, 0x5438, 0x6070, 0x6D3D, 0x7FD5, 0x8208, 0x50D6, -/* 1458 */ 0x51DE, 0x559C, 0x566B, 0x56CD, 0x59EC, 0x5B09, 0x5E0C, 0x6199, -/* 1460 */ 0x6198, 0x6231, 0x665E, 0x66E6, 0x7199, 0x71B9, 0x71BA, 0x72A7, -/* 1468 */ 0x79A7, 0x7A00, 0x7FB2, 0x8A70, -/* End of table Total Length = 0x15FA * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/macce.ut b/mozilla/lib/libi18n/unicode/utotbl/macce.ut deleted file mode 100644 index e5b3982e27a..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/macce.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C4 0100 0101 00C9 0104 00D6 00DC 00E1 - 0105 010C 00E4 010D 0106 0107 00E9 0179 - 017A 010E 00ED 010F 0112 0113 0116 00F3 - 0117 00F4 00F6 00F5 00FA 011A 011B 00FC - 2020 00B0 0118 00A3 00A7 2022 00B6 00DF - 00AE 00A9 2122 0119 00A8 2260 0123 012E - 012F 012A 2264 2265 012B 0136 2202 2211 - 0142 013B 013C 013D 013E 0139 013A 0145 - 0146 0143 00AC 221A 0144 0147 2206 00AB - 00BB 2026 00A0 0148 0150 00D5 0151 014C - 2013 2014 201C 201D 2018 2019 00F7 25CA - 014D 0154 0155 0158 2039 203A 0159 0156 - 0157 0160 201A 201E 0161 015A 015B 00C1 - 0164 0165 00CD 017D 017E 016A 00D3 00D4 - 016B 016E 00DA 016F 0170 0171 0172 0173 - 00DD 00FD 0137 017B 0141 017C 0122 02C7 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C4, 0x0100, 0x0101, 0x00C9, 0x0104, 0x00D6, 0x00DC, 0x00E1, -/* 0008 */ 0x0105, 0x010C, 0x00E4, 0x010D, 0x0106, 0x0107, 0x00E9, 0x0179, -/* 0010 */ 0x017A, 0x010E, 0x00ED, 0x010F, 0x0112, 0x0113, 0x0116, 0x00F3, -/* 0018 */ 0x0117, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x011A, 0x011B, 0x00FC, -/* 0020 */ 0x2020, 0x00B0, 0x0118, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, -/* 0028 */ 0x00AE, 0x00A9, 0x2122, 0x0119, 0x00A8, 0x2260, 0x0123, 0x012E, -/* 0030 */ 0x012F, 0x012A, 0x2264, 0x2265, 0x012B, 0x0136, 0x2202, 0x2211, -/* 0038 */ 0x0142, 0x013B, 0x013C, 0x013D, 0x013E, 0x0139, 0x013A, 0x0145, -/* 0040 */ 0x0146, 0x0143, 0x00AC, 0x221A, 0x0144, 0x0147, 0x2206, 0x00AB, -/* 0048 */ 0x00BB, 0x2026, 0x00A0, 0x0148, 0x0150, 0x00D5, 0x0151, 0x014C, -/* 0050 */ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, -/* 0058 */ 0x014D, 0x0154, 0x0155, 0x0158, 0x2039, 0x203A, 0x0159, 0x0156, -/* 0060 */ 0x0157, 0x0160, 0x201A, 0x201E, 0x0161, 0x015A, 0x015B, 0x00C1, -/* 0068 */ 0x0164, 0x0165, 0x00CD, 0x017D, 0x017E, 0x016A, 0x00D3, 0x00D4, -/* 0070 */ 0x016B, 0x016E, 0x00DA, 0x016F, 0x0170, 0x0171, 0x0172, 0x0173, -/* 0078 */ 0x00DD, 0x00FD, 0x0137, 0x017B, 0x0141, 0x017C, 0x0122, 0x02C7, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/maccorp.ut b/mozilla/lib/libi18n/unicode/utotbl/maccorp.ut deleted file mode 100644 index b2444feed59..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/maccorp.ut +++ /dev/null @@ -1,89 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 1 - srcBegin = F8A0 - srcEnd = F8FF - mappingOffset = 0000 - Mapping = - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0000 0000 0000 -End of Item 0000 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0000 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0xF8A0, 0xF8FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MappingTable */ - -/* 0000 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* 0008 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* 0010 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* 0018 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* 0020 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* 0028 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* 0030 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* 0038 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* 0040 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* 0048 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* 0050 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* 0058 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -/* End of table Total Length = 0x0068 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/maccroat.ut b/mozilla/lib/libi18n/unicode/utotbl/maccroat.ut deleted file mode 100644 index 1cbe5340a94..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/maccroat.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C4 00C5 00C7 00C9 00D1 00D6 00DC 00E1 - 00E0 00E2 00E4 00E3 00E5 00E7 00E9 00E8 - 00EA 00EB 00ED 00EC 00EE 00EF 00F1 00F3 - 00F2 00F4 00F6 00F5 00FA 00F9 00FB 00FC - 2020 00B0 00A2 00A3 00A7 2022 00B6 00DF - 00AE 0160 2122 00B4 00A8 2260 017D 00D8 - 221E 00B1 2264 2265 2206 00B5 2202 2211 - 220F 0161 222B 00AA 00BA 2126 017E 00F8 - 00BF 00A1 00AC 221A 0192 2248 0106 00AB - 010C 2026 00A0 00C0 00C3 00D5 0152 0153 - 0110 2014 201C 201D 2018 2019 00F7 25CA - F8FF 00A9 2044 00A4 2039 203A 00C6 00BB - 2013 00B7 201A 201E 2030 00C2 0107 00C1 - 010D 00C8 00CD 00CE 00CF 00CC 00D3 00D4 - 0111 00D2 00DA 00DB 00D9 0131 02C6 02DC - 00AF 03C0 00CB 02DA 00B8 00CA 00E6 02C7 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, -/* 0008 */ 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, -/* 0010 */ 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, -/* 0018 */ 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, -/* 0020 */ 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, -/* 0028 */ 0x00AE, 0x0160, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x017D, 0x00D8, -/* 0030 */ 0x221E, 0x00B1, 0x2264, 0x2265, 0x2206, 0x00B5, 0x2202, 0x2211, -/* 0038 */ 0x220F, 0x0161, 0x222B, 0x00AA, 0x00BA, 0x2126, 0x017E, 0x00F8, -/* 0040 */ 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x0106, 0x00AB, -/* 0048 */ 0x010C, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, -/* 0050 */ 0x0110, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, -/* 0058 */ 0xF8FF, 0x00A9, 0x2044, 0x00A4, 0x2039, 0x203A, 0x00C6, 0x00BB, -/* 0060 */ 0x2013, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x0107, 0x00C1, -/* 0068 */ 0x010D, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, -/* 0070 */ 0x0111, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, -/* 0078 */ 0x00AF, 0x03C0, 0x00CB, 0x02DA, 0x00B8, 0x00CA, 0x00E6, 0x02C7, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/maccyril.ut b/mozilla/lib/libi18n/unicode/utotbl/maccyril.ut deleted file mode 100644 index 6ceaa6a87b0..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/maccyril.ut +++ /dev/null @@ -1,112 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0080 - srcEnd = 009F - destBegin = 0410 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00E0 - srcEnd = 00FE - destBegin = 0430 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00DF - mappingOffset = 0000 - Mapping = - 2020 00B0 00A2 00A3 00A7 2022 00B6 0406 - 00AE 00A9 2122 0402 0452 2260 0403 0453 - 221E 00B1 2264 2265 0456 00B5 2202 0408 - 0404 0454 0407 0457 0409 0459 040A 045A - 0458 0405 00AC 221A 0192 2248 2206 00AB - 00BB 2026 00A0 040B 045B 040C 045C 0455 - 2013 2014 201C 201D 2018 2019 00F7 201E - 040E 045E 040F 045F 2116 0401 0451 044F -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 00FF - destBegin = 00A4 -End of Item 0004 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0080, 0x009F, 0x0410, -/* 0002 */ 0x00E0, 0x00FE, 0x0430, -/* 0003 */ 0x00A0, 0x00DF, 0x0000, -/* 0004 */ 0x00FF, 0x0000, 0x00A4, -/*-------------------------------------------------------*/ -/* Offset=0x0015 Start of MappingTable */ - -/* 0000 */ 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x0406, -/* 0008 */ 0x00AE, 0x00A9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, -/* 0010 */ 0x221E, 0x00B1, 0x2264, 0x2265, 0x0456, 0x00B5, 0x2202, 0x0408, -/* 0018 */ 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040A, 0x045A, -/* 0020 */ 0x0458, 0x0405, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, -/* 0028 */ 0x00BB, 0x2026, 0x00A0, 0x040B, 0x045B, 0x040C, 0x045C, 0x0455, -/* 0030 */ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x201E, -/* 0038 */ 0x040E, 0x045E, 0x040F, 0x045F, 0x2116, 0x0401, 0x0451, 0x044F, -/* End of table Total Length = 0x0055 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/macdingb.ut b/mozilla/lib/libi18n/unicode/utotbl/macdingb.ut deleted file mode 100644 index 873cb489e9e..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/macdingb.ut +++ /dev/null @@ -1,181 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 002C - srcEnd = 0047 - destBegin = 270C -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0049 - srcEnd = 006B - destBegin = 2729 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 0078 - srcEnd = 007E - destBegin = 2758 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 0080 - srcEnd = 008D - destBegin = F8D7 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 00A1 - srcEnd = 00A7 - destBegin = 2761 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 00AC - srcEnd = 00B5 - destBegin = 2460 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 00B6 - srcEnd = 00D4 - destBegin = 2776 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 00D8 - srcEnd = 00EF - destBegin = 2798 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 00F1 - srcEnd = 00FE - destBegin = 27B1 -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = 0020 - srcEnd = 002B - mappingOffset = 0000 - Mapping = - 0020 2701 2702 2703 2704 260E 2706 2707 - 2708 2709 261B 261E -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = 0048 - destBegin = 2605 -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = 006C - srcEnd = 0077 - mappingOffset = 000C - Mapping = - 25CF 274D 25A0 274F 2750 2751 2752 25B2 - 25BC 25C6 2756 25D7 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = 00A8 - srcEnd = 00AB - mappingOffset = 0018 - Mapping = - 2663 2666 2665 2660 -End of Item 000C - -Begin of Item 000D - Format 1 - srcBegin = 00D5 - srcEnd = 00D7 - mappingOffset = 001C - Mapping = - 2192 2194 2195 -End of Item 000D - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x000E, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0008, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0032, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0009 */ -/* Total of Format 1 : 0x0004 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x1210, 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x0008 Start of MapCell Array */ -/* 0000 */ 0x002C, 0x0047, 0x270C, -/* 0001 */ 0x0049, 0x006B, 0x2729, -/* 0002 */ 0x0078, 0x007E, 0x2758, -/* 0003 */ 0x0080, 0x008D, 0xF8D7, -/* 0004 */ 0x00A1, 0x00A7, 0x2761, -/* 0005 */ 0x00AC, 0x00B5, 0x2460, -/* 0006 */ 0x00B6, 0x00D4, 0x2776, -/* 0007 */ 0x00D8, 0x00EF, 0x2798, -/* 0008 */ 0x00F1, 0x00FE, 0x27B1, -/* 0009 */ 0x0020, 0x002B, 0x0000, -/* 000A */ 0x0048, 0x0000, 0x2605, -/* 000B */ 0x006C, 0x0077, 0x000C, -/* 000C */ 0x00A8, 0x00AB, 0x0018, -/* 000D */ 0x00D5, 0x00D7, 0x001C, -/*-------------------------------------------------------*/ -/* Offset=0x0032 Start of MappingTable */ - -/* 0000 */ 0x0020, 0x2701, 0x2702, 0x2703, 0x2704, 0x260E, 0x2706, 0x2707, -/* 0008 */ 0x2708, 0x2709, 0x261B, 0x261E, 0x25CF, 0x274D, 0x25A0, 0x274F, -/* 0010 */ 0x2750, 0x2751, 0x2752, 0x25B2, 0x25BC, 0x25C6, 0x2756, 0x25D7, -/* 0018 */ 0x2663, 0x2666, 0x2665, 0x2660, 0x2192, 0x2194, 0x2195, -/* End of table Total Length = 0x0051 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/macgreek.ut b/mozilla/lib/libi18n/unicode/utotbl/macgreek.ut deleted file mode 100644 index d179696b78b..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/macgreek.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C4 00B9 00B2 00C9 00B3 00D6 00DC 0385 - 00E0 00E2 00E4 0384 00A8 00E7 00E9 00E8 - 00EA 00EB 00A3 2122 00EE 00EF 2022 00BD - 2030 00F4 00F6 00A6 00AD 00F9 00FB 00FC - 2020 0393 0394 0398 039B 039E 03A0 00DF - 00AE 00A9 03A3 03AA 00A7 2260 00B0 0387 - 0391 00B1 2264 2265 00A5 0392 0395 0396 - 0397 0399 039A 039C 03A6 03AB 03A8 03A9 - 03AC 039D 00AC 039F 03A1 2248 03A4 00AB - 00BB 2026 00A0 03A5 03A7 0386 0388 0153 - 2013 2015 201C 201D 2018 2019 00F7 0389 - 038A 038C 038E 03AD 03AE 03AF 03CC 038F - 03CD 03B1 03B2 03C8 03B4 03B5 03C6 03B3 - 03B7 03B9 03BE 03BA 03BB 03BC 03BD 03BF - 03C0 03CE 03C1 03C3 03C4 03B8 03C9 03C2 - 03C7 03C5 03B6 03CA 03CB 0390 03B0 F8A0 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C4, 0x00B9, 0x00B2, 0x00C9, 0x00B3, 0x00D6, 0x00DC, 0x0385, -/* 0008 */ 0x00E0, 0x00E2, 0x00E4, 0x0384, 0x00A8, 0x00E7, 0x00E9, 0x00E8, -/* 0010 */ 0x00EA, 0x00EB, 0x00A3, 0x2122, 0x00EE, 0x00EF, 0x2022, 0x00BD, -/* 0018 */ 0x2030, 0x00F4, 0x00F6, 0x00A6, 0x00AD, 0x00F9, 0x00FB, 0x00FC, -/* 0020 */ 0x2020, 0x0393, 0x0394, 0x0398, 0x039B, 0x039E, 0x03A0, 0x00DF, -/* 0028 */ 0x00AE, 0x00A9, 0x03A3, 0x03AA, 0x00A7, 0x2260, 0x00B0, 0x0387, -/* 0030 */ 0x0391, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x0392, 0x0395, 0x0396, -/* 0038 */ 0x0397, 0x0399, 0x039A, 0x039C, 0x03A6, 0x03AB, 0x03A8, 0x03A9, -/* 0040 */ 0x03AC, 0x039D, 0x00AC, 0x039F, 0x03A1, 0x2248, 0x03A4, 0x00AB, -/* 0048 */ 0x00BB, 0x2026, 0x00A0, 0x03A5, 0x03A7, 0x0386, 0x0388, 0x0153, -/* 0050 */ 0x2013, 0x2015, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x0389, -/* 0058 */ 0x038A, 0x038C, 0x038E, 0x03AD, 0x03AE, 0x03AF, 0x03CC, 0x038F, -/* 0060 */ 0x03CD, 0x03B1, 0x03B2, 0x03C8, 0x03B4, 0x03B5, 0x03C6, 0x03B3, -/* 0068 */ 0x03B7, 0x03B9, 0x03BE, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BF, -/* 0070 */ 0x03C0, 0x03CE, 0x03C1, 0x03C3, 0x03C4, 0x03B8, 0x03C9, 0x03C2, -/* 0078 */ 0x03C7, 0x03C5, 0x03B6, 0x03CA, 0x03CB, 0x0390, 0x03B0, 0xF8A0, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/macicela.ut b/mozilla/lib/libi18n/unicode/utotbl/macicela.ut deleted file mode 100644 index f1536b0f5c2..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/macicela.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007E - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C4 00C5 00C7 00C9 00D1 00D6 00DC 00E1 - 00E0 00E2 00E4 00E3 00E5 00E7 00E9 00E8 - 00EA 00EB 00ED 00EC 00EE 00EF 00F1 00F3 - 00F2 00F4 00F6 00F5 00FA 00F9 00FB 00FC - 00DD 00B0 00A2 00A3 00A7 2022 00B6 00DF - 00AE 00A9 2122 00B4 00A8 2260 00C6 00D8 - 221E 00B1 2264 2265 00A5 00B5 2202 2211 - 220F 03C0 222B 00AA 00BA 2126 00E6 00F8 - 00BF 00A1 00AC 221A 0192 2248 2206 00AB - 00BB 2026 00A0 00C0 00C3 00D5 0152 0153 - 2013 2014 201C 201D 2018 2019 00F7 25CA - 00FF 0178 2044 20AC 00D0 00F0 00DE 00FE - 00FD 00B7 201A 201E 2030 00C2 00CA 00C1 - 00CB 00C8 00CD 00CE 00CF 00CC 00D3 00D4 - F8FF 00D2 00DA 00DB 00D9 0131 02C6 02DC - 00AF 02D8 02D9 02DA 00B8 02DD 02DB 02C7 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007E, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, -/* 0008 */ 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, -/* 0010 */ 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, -/* 0018 */ 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, -/* 0020 */ 0x00DD, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, -/* 0028 */ 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, -/* 0030 */ 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, -/* 0038 */ 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x2126, 0x00E6, 0x00F8, -/* 0040 */ 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, -/* 0048 */ 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, -/* 0050 */ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, -/* 0058 */ 0x00FF, 0x0178, 0x2044, 0x20AC, 0x00D0, 0x00F0, 0x00DE, 0x00FE, -/* 0060 */ 0x00FD, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, -/* 0068 */ 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, -/* 0070 */ 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, -/* 0078 */ 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/macro.ut b/mozilla/lib/libi18n/unicode/utotbl/macro.ut deleted file mode 100644 index 2c5938ca69b..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/macro.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C4 00C5 00C7 00C9 00D1 00D6 00DC 00E1 - 00E0 00E2 00E4 00E3 00E5 00E7 00E9 00E8 - 00EA 00EB 00ED 00EC 00EE 00EF 00F1 00F3 - 00F2 00F4 00F6 00F5 00FA 00F9 00FB 00FC - 2020 00B0 00A2 00A3 00A7 2022 00B6 00DF - 00AE 00A9 2122 00B4 00A8 2260 0102 015E - 221E 00B1 2264 2265 00A5 00B5 2202 2211 - 220F 03C0 222B 00AA 00BA 2126 0103 015F - 00BF 00A1 00AC 221A 0192 2248 2206 00AB - 00BB 2026 00A0 00C0 00C3 00D5 0152 0153 - 2013 2014 201C 201D 2018 2019 00F7 25CA - 00FF 0178 2044 00A4 2039 203A 0162 0163 - 2021 00B7 201A 201E 2030 00C2 00CA 00C1 - 00CB 00C8 00CD 00CE 00CF 00CC 00D3 00D4 - F8FF 00D2 00DA 00DB 00D9 0131 02C6 02DC - 00AF 02D8 02D9 02DA 00B8 02DD 02DB 02C7 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, -/* 0008 */ 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, -/* 0010 */ 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, -/* 0018 */ 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, -/* 0020 */ 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, -/* 0028 */ 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x0102, 0x015E, -/* 0030 */ 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, -/* 0038 */ 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x2126, 0x0103, 0x015F, -/* 0040 */ 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, -/* 0048 */ 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, -/* 0050 */ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, -/* 0058 */ 0x00FF, 0x0178, 0x2044, 0x00A4, 0x2039, 0x203A, 0x0162, 0x0163, -/* 0060 */ 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, -/* 0068 */ 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, -/* 0070 */ 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, -/* 0078 */ 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/macroman.ut b/mozilla/lib/libi18n/unicode/utotbl/macroman.ut deleted file mode 100644 index e5bb087570f..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/macroman.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007E - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C4 00C5 00C7 00C9 00D1 00D6 00DC 00E1 - 00E0 00E2 00E4 00E3 00E5 00E7 00E9 00E8 - 00EA 00EB 00ED 00EC 00EE 00EF 00F1 00F3 - 00F2 00F4 00F6 00F5 00FA 00F9 00FB 00FC - 2020 00B0 00A2 00A3 00A7 2022 00B6 00DF - 00AE 00A9 2122 00B4 00A8 2260 00C6 00D8 - 221E 00B1 2264 2265 00A5 00B5 2202 2211 - 220F 03C0 222B 00AA 00BA 2126 00E6 00F8 - 00BF 00A1 00AC 221A 0192 2248 2206 00AB - 00BB 2026 00A0 00C0 00C3 00D5 0152 0153 - 2013 2014 201C 201D 2018 2019 00F7 25CA - 00FF 0178 2044 20AC 2039 203A FB01 FB02 - 2021 00B7 201A 201E 2030 00C2 00CA 00C1 - 00CB 00C8 00CD 00CE 00CF 00CC 00D3 00D4 - F8FF 00D2 00DA 00DB 00D9 0131 02C6 02DC - 00AF 02D8 02D9 02DA 00B8 02DD 02DB 02C7 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007E, 0x0000, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, -/* 0008 */ 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, -/* 0010 */ 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, -/* 0018 */ 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, -/* 0020 */ 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, -/* 0028 */ 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, -/* 0030 */ 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, -/* 0038 */ 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x2126, 0x00E6, 0x00F8, -/* 0040 */ 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, -/* 0048 */ 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, -/* 0050 */ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, -/* 0058 */ 0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02, -/* 0060 */ 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, -/* 0068 */ 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, -/* 0070 */ 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, -/* 0078 */ 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/macsymbo.ut b/mozilla/lib/libi18n/unicode/utotbl/macsymbo.ut deleted file mode 100644 index c884acf1fb6..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/macsymbo.ut +++ /dev/null @@ -1,149 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 002E - srcEnd = 003F - destBegin = 002E -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00E6 - srcEnd = 00EF - destBegin = F8EB -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00F6 - srcEnd = 00FE - destBegin = F8F6 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0020 - srcEnd = 002D - mappingOffset = 0000 - Mapping = - 0020 0021 2200 0023 2203 0025 0026 220D - 0028 0029 2217 002B 002C 2212 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0040 - srcEnd = 007E - mappingOffset = 000E - Mapping = - 2245 0391 0392 03A7 0394 0395 03A6 0393 - 0397 0399 03D1 039A 039B 039C 039D 039F - 03A0 0398 03A1 03A3 03A4 03A5 03C2 03A9 - 039E 03A8 0396 005B 2234 005D 22A5 005F - F8E5 03B1 03B2 03C7 03B4 03B5 03C6 03B3 - 03B7 03B9 03D5 03BA 03BB 03BC 03BD 03BF - 03C0 03B8 03C1 03C3 03C4 03C5 03D6 03C9 - 03BE 03C8 03B6 007B 007C 007D 223C -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 00A1 - srcEnd = 00F5 - mappingOffset = 004D - Mapping = - 03D2 2032 2264 2044 221E 0192 2663 2666 - 2665 2660 2194 2190 2191 2192 2193 00B0 - 00B1 2033 2265 00D7 221D 2202 2022 00F7 - 2260 2261 2248 2026 F8E6 F8E7 21B5 2135 - 2111 211C 2118 2297 2295 2205 2229 222A - 2283 2287 2284 2282 2286 2208 2209 2220 - 2207 00AE 00A9 2122 220F 221A 22C5 00AC - 2227 2228 21D4 21D0 21D1 21D2 21D3 22C4 - 2329 F8E8 F8E9 F8EA 2211 FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD F8FF - 232A 222B 2320 F8F5 2321 -End of Item 0005 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0018, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0003 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x0011, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x002E, 0x003F, 0x002E, -/* 0001 */ 0x00E6, 0x00EF, 0xF8EB, -/* 0002 */ 0x00F6, 0x00FE, 0xF8F6, -/* 0003 */ 0x0020, 0x002D, 0x0000, -/* 0004 */ 0x0040, 0x007E, 0x000E, -/* 0005 */ 0x00A1, 0x00F5, 0x004D, -/*-------------------------------------------------------*/ -/* Offset=0x0018 Start of MappingTable */ - -/* 0000 */ 0x0020, 0x0021, 0x2200, 0x0023, 0x2203, 0x0025, 0x0026, 0x220D, -/* 0008 */ 0x0028, 0x0029, 0x2217, 0x002B, 0x002C, 0x2212, 0x2245, 0x0391, -/* 0010 */ 0x0392, 0x03A7, 0x0394, 0x0395, 0x03A6, 0x0393, 0x0397, 0x0399, -/* 0018 */ 0x03D1, 0x039A, 0x039B, 0x039C, 0x039D, 0x039F, 0x03A0, 0x0398, -/* 0020 */ 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03C2, 0x03A9, 0x039E, 0x03A8, -/* 0028 */ 0x0396, 0x005B, 0x2234, 0x005D, 0x22A5, 0x005F, 0xF8E5, 0x03B1, -/* 0030 */ 0x03B2, 0x03C7, 0x03B4, 0x03B5, 0x03C6, 0x03B3, 0x03B7, 0x03B9, -/* 0038 */ 0x03D5, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BF, 0x03C0, 0x03B8, -/* 0040 */ 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03D6, 0x03C9, 0x03BE, 0x03C8, -/* 0048 */ 0x03B6, 0x007B, 0x007C, 0x007D, 0x223C, 0x03D2, 0x2032, 0x2264, -/* 0050 */ 0x2044, 0x221E, 0x0192, 0x2663, 0x2666, 0x2665, 0x2660, 0x2194, -/* 0058 */ 0x2190, 0x2191, 0x2192, 0x2193, 0x00B0, 0x00B1, 0x2033, 0x2265, -/* 0060 */ 0x00D7, 0x221D, 0x2202, 0x2022, 0x00F7, 0x2260, 0x2261, 0x2248, -/* 0068 */ 0x2026, 0xF8E6, 0xF8E7, 0x21B5, 0x2135, 0x2111, 0x211C, 0x2118, -/* 0070 */ 0x2297, 0x2295, 0x2205, 0x2229, 0x222A, 0x2283, 0x2287, 0x2284, -/* 0078 */ 0x2282, 0x2286, 0x2208, 0x2209, 0x2220, 0x2207, 0x00AE, 0x00A9, -/* 0080 */ 0x2122, 0x220F, 0x221A, 0x22C5, 0x00AC, 0x2227, 0x2228, 0x21D4, -/* 0088 */ 0x21D0, 0x21D1, 0x21D2, 0x21D3, 0x22C4, 0x2329, 0xF8E8, 0xF8E9, -/* 0090 */ 0xF8EA, 0x2211, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xF8FF, 0x232A, 0x222B, 0x2320, -/* 00A0 */ 0xF8F5, 0x2321, -/* End of table Total Length = 0x00BA * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/macthai.ut b/mozilla/lib/libi18n/unicode/utotbl/macthai.ut deleted file mode 100644 index 84db42615b3..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/macthai.ut +++ /dev/null @@ -1,141 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 00A1 - srcEnd = 00DA - destBegin = 0E01 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00DF - srcEnd = 00ED - destBegin = 0E3F -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 00EF - srcEnd = 00F9 - destBegin = 0E4F -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0080 - srcEnd = 0091 - mappingOffset = 0000 - Mapping = - 00AB 00BB 2026 FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FFFD FFFD 201C 201D FFFD - FFFD 2022 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = 009D - srcEnd = 00A0 - mappingOffset = 0012 - Mapping = - 2018 2019 FFFD 00A0 -End of Item 0005 - -Begin of Item 0006 - Format 1 - srcBegin = 00DB - srcEnd = 00DE - mappingOffset = 0016 - Mapping = - FEFF 200B 2013 2014 -End of Item 0006 - -Begin of Item 0007 - Format 2 - srcBegin = 00EE - destBegin = 2122 -End of Item 0007 - -Begin of Item 0008 - Format 1 - srcBegin = 00FA - srcEnd = 00FB - mappingOffset = 001A - Mapping = - 00AE 00A9 -End of Item 0008 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0009, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0007, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0022, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0004 */ -/* Total of Format 1 : 0x0004 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x2111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0007 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x00A1, 0x00DA, 0x0E01, -/* 0002 */ 0x00DF, 0x00ED, 0x0E3F, -/* 0003 */ 0x00EF, 0x00F9, 0x0E4F, -/* 0004 */ 0x0080, 0x0091, 0x0000, -/* 0005 */ 0x009D, 0x00A0, 0x0012, -/* 0006 */ 0x00DB, 0x00DE, 0x0016, -/* 0007 */ 0x00EE, 0x0000, 0x2122, -/* 0008 */ 0x00FA, 0x00FB, 0x001A, -/*-------------------------------------------------------*/ -/* Offset=0x0022 Start of MappingTable */ - -/* 0000 */ 0x00AB, 0x00BB, 0x2026, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x201C, 0x201D, 0xFFFD, -/* 0010 */ 0xFFFD, 0x2022, 0x2018, 0x2019, 0xFFFD, 0x00A0, 0xFEFF, 0x200B, -/* 0018 */ 0x2013, 0x2014, 0x00AE, 0x00A9, -/* End of table Total Length = 0x003E * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/macturki.ut b/mozilla/lib/libi18n/unicode/utotbl/macturki.ut deleted file mode 100644 index 55fb9f437c8..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/macturki.ut +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0000 - Mapping = - 00C4 00C5 00C7 00C9 00D1 00D6 00DC 00E1 - 00E0 00E2 00E4 00E3 00E5 00E7 00E9 00E8 - 00EA 00EB 00ED 00EC 00EE 00EF 00F1 00F3 - 00F2 00F4 00F6 00F5 00FA 00F9 00FB 00FC - 2020 00B0 00A2 00A3 00A7 2022 00B6 00DF - 00AE 00A9 2122 00B4 00A8 2260 00C6 00D8 - 221E 00B1 2264 2265 00A5 00B5 2202 2211 - 220F 03C0 222B 00AA 00BA 2126 00E6 00F8 - 00BF 00A1 00AC 221A 0192 2248 2206 00AB - 00BB 2026 00A0 00C0 00C3 00D5 0152 0153 - 2013 2014 201C 201D 2018 2019 00F7 25CA - 00FF 0178 011E 011F 0130 0131 015E 015F - 2021 00B7 201A 201E 2030 00C2 00CA 00C1 - 00CB 00C8 00CD 00CE 00CF 00CC 00D3 00D4 - F8FF 00D2 00DA 00DB 00D9 F8A0 02C6 02DC - 00AF 02D8 02D9 02DA 00B8 02DD 02DB 02C7 -End of Item 0001 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x000B, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0005 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0080, 0x00FF, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x000B Start of MappingTable */ - -/* 0000 */ 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, -/* 0008 */ 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, -/* 0010 */ 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, -/* 0018 */ 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, -/* 0020 */ 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, -/* 0028 */ 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, -/* 0030 */ 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, -/* 0038 */ 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x2126, 0x00E6, 0x00F8, -/* 0040 */ 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, -/* 0048 */ 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, -/* 0050 */ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, -/* 0058 */ 0x00FF, 0x0178, 0x011E, 0x011F, 0x0130, 0x0131, 0x015E, 0x015F, -/* 0060 */ 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, -/* 0068 */ 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, -/* 0070 */ 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0xF8A0, 0x02C6, 0x02DC, -/* 0078 */ 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7, -/* End of table Total Length = 0x008B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/macukrai.ut b/mozilla/lib/libi18n/unicode/utotbl/macukrai.ut deleted file mode 100644 index 88154e4d6d9..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/macukrai.ut +++ /dev/null @@ -1,112 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 007E - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0080 - srcEnd = 009F - destBegin = 0410 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00E0 - srcEnd = 00FE - destBegin = 0430 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 00A0 - srcEnd = 00DF - mappingOffset = 0000 - Mapping = - 2020 00B0 0490 00A3 00A7 2022 00B6 0406 - 00AE 00A9 2122 0402 0452 2260 0403 0453 - 221E 00B1 2264 2265 0456 00B5 0491 0408 - 0404 0454 0407 0457 0409 0459 040A 045A - 0458 0405 00AC 221A 0192 2248 2206 00AB - 00BB 2026 00A0 040B 045B 040C 045C 0455 - 2013 2014 201C 201D 2018 2019 00F7 201E - 040E 045E 040F 045F 2116 0401 0451 044F -End of Item 0003 - -Begin of Item 0004 - Format 2 - srcBegin = 00FF - destBegin = 00A4 -End of Item 0004 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0003 */ -/* Total of Format 1 : 0x0001 */ -/* Total of Format 2 : 0x0001 */ -/* Total of Format 3 : 0x0000 */ - -0x1000, 0x0002, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x0080, 0x009F, 0x0410, -/* 0002 */ 0x00E0, 0x00FE, 0x0430, -/* 0003 */ 0x00A0, 0x00DF, 0x0000, -/* 0004 */ 0x00FF, 0x0000, 0x00A4, -/*-------------------------------------------------------*/ -/* Offset=0x0015 Start of MappingTable */ - -/* 0000 */ 0x2020, 0x00B0, 0x0490, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x0406, -/* 0008 */ 0x00AE, 0x00A9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, -/* 0010 */ 0x221E, 0x00B1, 0x2264, 0x2265, 0x0456, 0x00B5, 0x0491, 0x0408, -/* 0018 */ 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040A, 0x045A, -/* 0020 */ 0x0458, 0x0405, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, -/* 0028 */ 0x00BB, 0x2026, 0x00A0, 0x040B, 0x045B, 0x040C, 0x045C, 0x0455, -/* 0030 */ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x201E, -/* 0038 */ 0x040E, 0x045E, 0x040F, 0x045F, 0x2116, 0x0401, 0x0451, 0x044F, -/* End of table Total Length = 0x0055 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/makefile.win b/mozilla/lib/libi18n/unicode/utotbl/makefile.win deleted file mode 100644 index e3ada0abe08..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/makefile.win +++ /dev/null @@ -1,26 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DIST_HEADERS = *.ut - -!include <$(DEPTH)\config\rules.mak> diff --git a/mozilla/lib/libi18n/unicode/utotbl/rename.sh b/mozilla/lib/libi18n/unicode/utotbl/rename.sh deleted file mode 100644 index ff865998a1a..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/rename.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/sh -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -mv 8859-1.txt.ut 8859-1.ut -mv 8859-2.txt.ut 8859-2.ut -mv 8859-3.txt.ut 8859-3.ut -mv 8859-4.txt.ut 8859-4.ut -mv 8859-5.txt.ut 8859-5.ut -mv 8859-6.txt.ut 8859-6.ut -mv 8859-7.txt.ut 8859-7.ut -mv 8859-8.txt.ut 8859-8.ut -mv 8859-9.txt.ut 8859-9.ut -mv CNS11643_1.ut cns_1.ut -mv CNS11643_14.ut cns_14.ut -mv CNS11643_2.ut cns_2.ut -mv CP037.X.ut cp037.ut -mv CP1026.X.ut cp1026.ut -mv CP437.X.ut cp437.ut -mv CP500.X.ut cp500.ut -mv CP737.X.ut cp737.ut -mv CP775.X.ut cp775.ut -mv CP850.X.ut cp850.ut -mv CP852.X.ut cp852.ut -mv CP855.X.ut cp855.ut -mv CP857.X.ut cp857.ut -mv CP860.X.ut cp860.ut -mv CP861.X.ut cp861.ut -mv CP862.X.ut cp862.ut -mv CP863.X.ut cp863.ut -mv CP864.X.ut cp864.ut -mv CP865.X.ut cp865.ut -mv CP866.X.ut cp866.ut -mv CP869.X.ut cp869.ut -mv CP874.X.ut cp874.ut -mv CP875.X.ut cp875.ut -mv GB12345.ut gb12345.ut -mv GB2312.ut gb2312.ut -mv JIS0201.ut jis0201.ut -mv JIS0208.ut jis0208.ut -mv JIS0212.ut jis0212.ut -mv KSC5601.ut ksc5601.ut -mv MacOS_CentralEuro.txt.ut macce.ut -mv MacOS_CorpChars.txt.ut maccorp.ut -mv MacOS_Croatian.txt.ut maccroat.ut -mv MacOS_Cyrillic.txt.ut maccyril.ut -mv MacOS_Dingbats.txt.ut macdingb.ut -mv MacOS_Greek.txt.ut macgreek.ut -mv MacOS_Icelandic.txt.ut macicela.ut -mv MacOS_Roman.txt.ut macroman.ut -mv MacOS_Romanian.txt.ut macro.ut -mv MacOS_Symbol.txt.ut macsymbo.ut -mv MacOS_Turkish.txt.ut macturki.ut -mv MacOS_Ukrainian.txt.ut macukrai.ut -mv cp1250.x.ut cp1250.ut -mv cp1251.x.ut cp1251.ut -mv cp1252.x.ut cp1252.ut -mv cp1253.x.ut cp1253.ut -mv cp1254.x.ut cp1254.ut -mv cp1255.x.ut cp1255.ut -mv cp1256.x.ut cp1256.ut -mv cp1257.x.ut cp1257.ut -mv Shift-JIS.ut sjis.ut -mv Big5.ut big5.ut diff --git a/mozilla/lib/libi18n/unicode/utotbl/sjis.ut b/mozilla/lib/libi18n/unicode/utotbl/sjis.ut deleted file mode 100644 index 7a3b41707cb..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/sjis.ut +++ /dev/null @@ -1,2259 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0020 - srcEnd = 005B - destBegin = 0020 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 005D - srcEnd = 007D - destBegin = 005D -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 00A1 - srcEnd = 00DF - destBegin = FF61 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 8171 - srcEnd = 817A - destBegin = 3008 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 824F - srcEnd = 8258 - destBegin = FF10 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 8260 - srcEnd = 8279 - destBegin = FF21 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 8281 - srcEnd = 829A - destBegin = FF41 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 829F - srcEnd = 82F1 - destBegin = 3041 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 8340 - srcEnd = 837E - destBegin = 30A1 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 8380 - srcEnd = 8396 - destBegin = 30E0 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 839F - srcEnd = 83AF - destBegin = 0391 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 83B0 - srcEnd = 83B6 - destBegin = 03A3 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 83BF - srcEnd = 83CF - destBegin = 03B1 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 83D0 - srcEnd = 83D6 - destBegin = 03C3 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 8440 - srcEnd = 8445 - destBegin = 0410 -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 8447 - srcEnd = 8460 - destBegin = 0416 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 8470 - srcEnd = 8475 - destBegin = 0430 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 8477 - srcEnd = 847E - destBegin = 0436 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 8480 - srcEnd = 8491 - destBegin = 043E -End of Item 0012 - -Begin of Item 0013 - Format 2 - srcBegin = 005C - destBegin = 00A5 -End of Item 0013 - -Begin of Item 0014 - Format 2 - srcBegin = 007E - destBegin = 203E -End of Item 0014 - -Begin of Item 0015 - Format 1 - srcBegin = 8140 - srcEnd = 81AC - mappingOffset = 0000 - Mapping = - 3000 3001 3002 FF0C FF0E 30FB FF1A FF1B - FF1F FF01 309B 309C 00B4 FF40 00A8 FF3E - FFE3 FF3F 30FD 30FE 309D 309E 3003 4EDD - 3005 3006 3007 30FC 2015 2010 FF0F 005C - 301C 2016 FF5C 2026 2025 2018 2019 201C - 201D FF08 FF09 3014 3015 FF3B FF3D FF5B - FF5D FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD FFFD FFFD FF0B 2212 00B1 00D7 FFFD - 00F7 FF1D 2260 FF1C FF1E 2266 2267 221E - 2234 2642 2640 00B0 2032 2033 2103 FFE5 - FF04 00A2 00A3 FF05 FF03 FF06 FF0A FF20 - 00A7 2606 2605 25CB 25CF 25CE 25C7 25C6 - 25A1 25A0 25B3 25B2 25BD 25BC 203B 3012 - 2192 2190 2191 2193 3013 -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = 81B8 - srcEnd = 81CE - mappingOffset = 006D - Mapping = - 2208 220B 2286 2287 2282 2283 222A 2229 - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 2227 2228 00AC 21D2 21D4 2200 2203 -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = 81DA - srcEnd = 81FC - mappingOffset = 0084 - Mapping = - 2220 22A5 2312 2202 2207 2261 2252 226A - 226B 221A 223D 221D 2235 222B 222C FFFD - FFFD FFFD FFFD FFFD FFFD FFFD 212B 2030 - 266F 266D 266A 2020 2021 00B6 FFFD FFFD - FFFD FFFD 25EF -End of Item 0017 - -Begin of Item 0018 - Format 2 - srcBegin = 8446 - destBegin = 0401 -End of Item 0018 - -Begin of Item 0019 - Format 2 - srcBegin = 8476 - destBegin = 0451 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = 849F - srcEnd = 84BE - mappingOffset = 00A7 - Mapping = - 2500 2502 250C 2510 2518 2514 251C 252C - 2524 2534 253C 2501 2503 250F 2513 251B - 2517 2523 2533 252B 253B 254B 2520 252F - 2528 2537 253F 251D 2530 2525 2538 2542 -End of Item 001A - -Begin of Item 001B - Format 1 - srcBegin = 889F - srcEnd = 88FC - mappingOffset = 00C7 - Mapping = - 4E9C 5516 5A03 963F 54C0 611B 6328 59F6 - 9022 8475 831C 7A50 60AA 63E1 6E25 65ED - 8466 82A6 9BF5 6893 5727 65A1 6271 5B9B - 59D0 867B 98F4 7D62 7DBE 9B8E 6216 7C9F - 88B7 5B89 5EB5 6309 6697 6848 95C7 978D - 674F 4EE5 4F0A 4F4D 4F9D 5049 56F2 5937 - 59D4 5A01 5C09 60DF 610F 6170 6613 6905 - 70BA 754F 7570 79FB 7DAD 7DEF 80C3 840E - 8863 8B02 9055 907A 533B 4E95 4EA5 57DF - 80B2 90C1 78EF 4E00 58F1 6EA2 9038 7A32 - 8328 828B 9C2F 5141 5370 54BD 54E1 56E0 - 59FB 5F15 98F2 6DEB 80E4 852D -End of Item 001B - -Begin of Item 001C - Format 1 - srcBegin = 8940 - srcEnd = 89FC - mappingOffset = 0125 - Mapping = - 9662 9670 96A0 97FB 540B 53F3 5B87 70CF - 7FBD 8FC2 96E8 536F 9D5C 7ABA 4E11 7893 - 81FC 6E26 5618 5504 6B1D 851A 9C3B 59E5 - 53A9 6D66 74DC 958F 5642 4E91 904B 96F2 - 834F 990C 53E1 55B6 5B30 5F71 6620 66F3 - 6804 6C38 6CF3 6D29 745B 76C8 7A4E 9834 - 82F1 885B 8A60 92ED 6DB2 75AB 76CA 99C5 - 60A6 8B01 8D8A 95B2 698E 53AD 5186 FFFD - 5712 5830 5944 5BB4 5EF6 6028 63A9 63F4 - 6CBF 6F14 708E 7114 7159 71D5 733F 7E01 - 8276 82D1 8597 9060 925B 9D1B 5869 65BC - 6C5A 7525 51F9 592E 5965 5F80 5FDC 62BC - 65FA 6A2A 6B27 6BB4 738B 7FC1 8956 9D2C - 9D0E 9EC4 5CA1 6C96 837B 5104 5C4B 61B6 - 81C6 6876 7261 4E59 4FFA 5378 6069 6E29 - 7A4F 97F3 4E0B 5316 4EEE 4F55 4F3D 4FA1 - 4F73 52A0 53EF 5609 590F 5AC1 5BB6 5BE1 - 79D1 6687 679C 67B6 6B4C 6CB3 706B 73C2 - 798D 79BE 7A3C 7B87 82B1 82DB 8304 8377 - 83EF 83D3 8766 8AB2 5629 8CA8 8FE6 904E - 971E 868A 4FC4 5CE8 6211 7259 753B 81E5 - 82BD 86FE 8CC0 96C5 9913 99D5 4ECB 4F1A - 89E3 56DE 584A 58CA 5EFB 5FEB 602A 6094 - 6062 61D0 6212 62D0 6539 -End of Item 001C - -Begin of Item 001D - Format 1 - srcBegin = 8A40 - srcEnd = 8AFC - mappingOffset = 01E2 - Mapping = - 9B41 6666 68B0 6D77 7070 754C 7686 7D75 - 82A5 87F9 958B 968E 8C9D 51F1 52BE 5916 - 54B3 5BB3 5D16 6168 6982 6DAF 788D 84CB - 8857 8A72 93A7 9AB8 6D6C 99A8 86D9 57A3 - 67FF 86CE 920E 5283 5687 5404 5ED3 62E1 - 64B9 683C 6838 6BBB 7372 78BA 7A6B 899A - 89D2 8D6B 8F03 90ED 95A3 9694 9769 5B66 - 5CB3 697D 984D 984E 639B 7B20 6A2B FFFD - 6A7F 68B6 9C0D 6F5F 5272 559D 6070 62EC - 6D3B 6E07 6ED1 845B 8910 8F44 4E14 9C39 - 53F6 691B 6A3A 9784 682A 515C 7AC3 84B2 - 91DC 938C 565B 9D28 6822 8305 8431 7CA5 - 5208 82C5 74E6 4E7E 4F83 51A0 5BD2 520A - 52D8 52E7 5DFB 559A 582A 59E6 5B8C 5B98 - 5BDB 5E72 5E79 60A3 611F 6163 61BE 63DB - 6562 67D1 6853 68FA 6B3E 6B53 6C57 6F22 - 6F97 6F45 74B0 7518 76E3 770B 7AFF 7BA1 - 7C21 7DE9 7F36 7FF0 809D 8266 839E 89B3 - 8ACC 8CAB 9084 9451 9593 9591 95A2 9665 - 97D3 9928 8218 4E38 542B 5CB8 5DCC 73A9 - 764C 773C 5CA9 7FEB 8D0B 96C1 9811 9854 - 9858 4F01 4F0E 5371 559C 5668 57FA 5947 - 5B09 5BC4 5C90 5E0C 5E7E 5FCC 63EE 673A - 65D7 65E2 671F 68CB 68C4 -End of Item 001D - -Begin of Item 001E - Format 1 - srcBegin = 8B40 - srcEnd = 8BFC - mappingOffset = 029F - Mapping = - 6A5F 5E30 6BC5 6C17 6C7D 757F 7948 5B63 - 7A00 7D00 5FBD 898F 8A18 8CB4 8D77 8ECC - 8F1D 98E2 9A0E 9B3C 4E80 507D 5100 5993 - 5B9C 622F 6280 64EC 6B3A 72A0 7591 7947 - 7FA9 87FB 8ABC 8B70 63AC 83CA 97A0 5409 - 5403 55AB 6854 6A58 8A70 7827 6775 9ECD - 5374 5BA2 811A 8650 9006 4E18 4E45 4EC7 - 4F11 53CA 5438 5BAE 5F13 6025 6551 FFFD - 673D 6C42 6C72 6CE3 7078 7403 7A76 7AAE - 7B08 7D1A 7CFE 7D66 65E7 725B 53BB 5C45 - 5DE8 62D2 62E0 6319 6E20 865A 8A31 8DDD - 92F8 6F01 79A6 9B5A 4EA8 4EAB 4EAC 4F9B - 4FA0 50D1 5147 7AF6 5171 51F6 5354 5321 - 537F 53EB 55AC 5883 5CE1 5F37 5F4A 602F - 6050 606D 631F 6559 6A4B 6CC1 72C2 72ED - 77EF 80F8 8105 8208 854E 90F7 93E1 97FF - 9957 9A5A 4EF0 51DD 5C2D 6681 696D 5C40 - 66F2 6975 7389 6850 7C81 50C5 52E4 5747 - 5DFE 9326 65A4 6B23 6B3D 7434 7981 79BD - 7B4B 7DCA 82B9 83CC 887F 895F 8B39 8FD1 - 91D1 541F 9280 4E5D 5036 53E5 533A 72D7 - 7396 77E9 82E6 8EAF 99C6 99C8 99D2 5177 - 611A 865E 55B0 7A7A 5076 5BD3 9047 9685 - 4E32 6ADB 91E7 5C51 5C48 -End of Item 001E - -Begin of Item 001F - Format 1 - srcBegin = 8C40 - srcEnd = 8CFC - mappingOffset = 035C - Mapping = - 6398 7A9F 6C93 9774 8F61 7AAA 718A 9688 - 7C82 6817 7E70 6851 936C 52F2 541B 85AB - 8A13 7FA4 8ECD 90E1 5366 8888 7941 4FC2 - 50BE 5211 5144 5553 572D 73EA 578B 5951 - 5F62 5F84 6075 6176 6167 61A9 63B2 643A - 656C 666F 6842 6E13 7566 7A3D 7CFB 7D4C - 7D99 7E4B 7F6B 830E 834A 86CD 8A08 8A63 - 8B66 8EFD 981A 9D8F 82B8 8FCE 9BE8 FFFD - 5287 621F 6483 6FC0 9699 6841 5091 6B20 - 6C7A 6F54 7A74 7D50 8840 8A23 6708 4EF6 - 5039 5026 5065 517C 5238 5263 55A7 570F - 5805 5ACC 5EFA 61B2 61F8 62F3 6372 691C - 6A29 727D 72AC 732E 7814 786F 7D79 770C - 80A9 898B 8B19 8CE2 8ED2 9063 9375 967A - 9855 9A13 9E78 5143 539F 53B3 5E7B 5F26 - 6E1B 6E90 7384 73FE 7D43 8237 8A00 8AFA - 9650 4E4E 500B 53E4 547C 56FA 59D1 5B64 - 5DF1 5EAB 5F27 6238 6545 67AF 6E56 72D0 - 7CCA 88B4 80A1 80E1 83F0 864E 8A87 8DE8 - 9237 96C7 9867 9F13 4E94 4E92 4F0D 5348 - 5449 543E 5A2F 5F8C 5FA1 609F 68A7 6A8E - 745A 7881 8A9E 8AA4 8B77 9190 4E5E 9BC9 - 4EA4 4F7C 4FAF 5019 5016 5149 516C 529F - 52B9 52FE 539A 53E3 5411 -End of Item 001F - -Begin of Item 0020 - Format 1 - srcBegin = 8D40 - srcEnd = 8DFC - mappingOffset = 0419 - Mapping = - 540E 5589 5751 57A2 597D 5B54 5B5D 5B8F - 5DE5 5DE7 5DF7 5E78 5E83 5E9A 5EB7 5F18 - 6052 614C 6297 62D8 63A7 653B 6602 6643 - 66F4 676D 6821 6897 69CB 6C5F 6D2A 6D69 - 6E2F 6E9D 7532 7687 786C 7A3F 7CE0 7D05 - 7D18 7D5E 7DB1 8015 8003 80AF 80B1 8154 - 818F 822A 8352 884C 8861 8B1B 8CA2 8CFC - 90CA 9175 9271 783F 92FC 95A4 964D FFFD - 9805 9999 9AD8 9D3B 525B 52AB 53F7 5408 - 58D5 62F7 6FE0 8C6A 8F5F 9EB9 514B 523B - 544A 56FD 7A40 9177 9D60 9ED2 7344 6F09 - 8170 7511 5FFD 60DA 9AA8 72DB 8FBC 6B64 - 9803 4ECA 56F0 5764 58BE 5A5A 6068 61C7 - 660F 6606 6839 68B1 6DF7 75D5 7D3A 826E - 9B42 4E9B 4F50 53C9 5506 5D6F 5DE6 5DEE - 67FB 6C99 7473 7802 8A50 9396 88DF 5750 - 5EA7 632B 50B5 50AC 518D 6700 54C9 585E - 59BB 5BB0 5F69 624D 63A1 683D 6B73 6E08 - 707D 91C7 7280 7815 7826 796D 658E 7D30 - 83DC 88C1 8F09 969B 5264 5728 6750 7F6A - 8CA1 51B4 5742 962A 583A 698A 80B4 54B2 - 5D0E 57FC 7895 9DFA 4F5C 524A 548B 643E - 6628 6714 67F5 7A84 7B56 7D22 932F 685C - 9BAD 7B39 5319 518A 5237 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = 8E40 - srcEnd = 8EFC - mappingOffset = 04D6 - Mapping = - 5BDF 62F6 64AE 64E6 672D 6BBA 85A9 96D1 - 7690 9BD6 634C 9306 9BAB 76BF 6652 4E09 - 5098 53C2 5C71 60E8 6492 6563 685F 71E6 - 73CA 7523 7B97 7E82 8695 8B83 8CDB 9178 - 9910 65AC 66AB 6B8B 4ED5 4ED4 4F3A 4F7F - 523A 53F8 53F2 55E3 56DB 58EB 59CB 59C9 - 59FF 5B50 5C4D 5E02 5E2B 5FD7 601D 6307 - 652F 5B5C 65AF 65BD 65E8 679D 6B62 FFFD - 6B7B 6C0F 7345 7949 79C1 7CF8 7D19 7D2B - 80A2 8102 81F3 8996 8A5E 8A69 8A66 8A8C - 8AEE 8CC7 8CDC 96CC 98FC 6B6F 4E8B 4F3C - 4F8D 5150 5B57 5BFA 6148 6301 6642 6B21 - 6ECB 6CBB 723E 74BD 75D4 78C1 793A 800C - 8033 81EA 8494 8F9E 6C50 9E7F 5F0F 8B58 - 9D2B 7AFA 8EF8 5B8D 96EB 4E03 53F1 57F7 - 5931 5AC9 5BA4 6089 6E7F 6F06 75BE 8CEA - 5B9F 8500 7BE0 5072 67F4 829D 5C61 854A - 7E1E 820E 5199 5C04 6368 8D66 659C 716E - 793E 7D17 8005 8B1D 8ECA 906E 86C7 90AA - 501F 52FA 5C3A 6753 707C 7235 914C 91C8 - 932B 82E5 5BC2 5F31 60F9 4E3B 53D6 5B88 - 624B 6731 6B8A 72E9 73E0 7A2E 816B 8DA3 - 9152 9996 5112 53D7 546A 5BFF 6388 6A39 - 7DAC 9700 56DA 53CE 5468 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = 8F40 - srcEnd = 8FFC - mappingOffset = 0593 - Mapping = - 5B97 5C31 5DDE 4FEE 6101 62FE 6D32 79C0 - 79CB 7D42 7E4D 7FD2 81ED 821F 8490 8846 - 8972 8B90 8E74 8F2F 9031 914B 916C 96C6 - 919C 4EC0 4F4F 5145 5341 5F93 620E 67D4 - 6C41 6E0B 7363 7E26 91CD 9283 53D4 5919 - 5BBF 6DD1 795D 7E2E 7C9B 587E 719F 51FA - 8853 8FF0 4FCA 5CFB 6625 77AC 7AE3 821C - 99FF 51C6 5FAA 65EC 696F 6B89 6DF3 FFFD - 6E96 6F64 76FE 7D14 5DE1 9075 9187 9806 - 51E6 521D 6240 6691 66D9 6E1A 5EB6 7DD2 - 7F72 66F8 85AF 85F7 8AF8 52A9 53D9 5973 - 5E8F 5F90 6055 92E4 9664 50B7 511F 52DD - 5320 5347 53EC 54E8 5546 5531 5617 5968 - 59BE 5A3C 5BB5 5C06 5C0F 5C11 5C1A 5E84 - 5E8A 5EE0 5F70 627F 6284 62DB 638C 6377 - 6607 660C 662D 6676 677E 68A2 6A1F 6A35 - 6CBC 6D88 6E09 6E58 713C 7126 7167 75C7 - 7701 785D 7901 7965 79F0 7AE0 7B11 7CA7 - 7D39 8096 83D6 848B 8549 885D 88F3 8A1F - 8A3C 8A54 8A73 8C61 8CDE 91A4 9266 937E - 9418 969C 9798 4E0A 4E08 4E1E 4E57 5197 - 5270 57CE 5834 58CC 5B22 5E38 60C5 64FE - 6761 6756 6D44 72B6 7573 7A63 84B8 8B72 - 91B8 9320 5631 57F4 98FE -End of Item 0022 - -Begin of Item 0023 - Format 1 - srcBegin = 9040 - srcEnd = 90FC - mappingOffset = 0650 - Mapping = - 62ED 690D 6B96 71ED 7E54 8077 8272 89E6 - 98DF 8755 8FB1 5C3B 4F38 4FE1 4FB5 5507 - 5A20 5BDD 5BE9 5FC3 614E 632F 65B0 664B - 68EE 699B 6D78 6DF1 7533 75B9 771F 795E - 79E6 7D33 81E3 82AF 85AA 89AA 8A3A 8EAB - 8F9B 9032 91DD 9707 4EBA 4EC1 5203 5875 - 58EC 5C0B 751A 5C3D 814E 8A0A 8FC5 9663 - 976D 7B25 8ACF 9808 9162 56F3 53A8 FFFD - 9017 5439 5782 5E25 63A8 6C34 708A 7761 - 7C8B 7FE0 8870 9042 9154 9310 9318 968F - 745E 9AC4 5D07 5D69 6570 67A2 8DA8 96DB - 636E 6749 6919 83C5 9817 96C0 88FE 6F84 - 647A 5BF8 4E16 702C 755D 662F 51C4 5236 - 52E2 59D3 5F81 6027 6210 653F 6574 661F - 6674 68F2 6816 6B63 6E05 7272 751F 76DB - 7CBE 8056 58F0 88FD 897F 8AA0 8A93 8ACB - 901D 9192 9752 9759 6589 7A0E 8106 96BB - 5E2D 60DC 621A 65A5 6614 6790 77F3 7A4D - 7C4D 7E3E 810A 8CAC 8D64 8DE1 8E5F 78A9 - 5207 62D9 63A5 6442 6298 8A2D 7A83 7BC0 - 8AAC 96EA 7D76 820C 8749 4ED9 5148 5343 - 5360 5BA3 5C02 5C16 5DDD 6226 6247 64B0 - 6813 6834 6CC9 6D45 6D17 67D3 6F5C 714E - 717D 65CB 7A7F 7BAD 7DDA -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = 9140 - srcEnd = 91FC - mappingOffset = 070D - Mapping = - 7E4A 7FA8 817A 821B 8239 85A6 8A6E 8CCE - 8DF5 9078 9077 92AD 9291 9583 9BAE 524D - 5584 6F38 7136 5168 7985 7E55 81B3 7CCE - 564C 5851 5CA8 63AA 66FE 66FD 695A 72D9 - 758F 758E 790E 7956 79DF 7C97 7D20 7D44 - 8607 8A34 963B 9061 9F20 50E7 5275 53CC - 53E2 5009 55AA 58EE 594F 723D 5B8B 5C64 - 531D 60E3 60F3 635C 6383 633F 63BB FFFD - 64CD 65E9 66F9 5DE3 69CD 69FD 6F15 71E5 - 4E89 75E9 76F8 7A93 7CDF 7DCF 7D9C 8061 - 8349 8358 846C 84BC 85FB 88C5 8D70 9001 - 906D 9397 971C 9A12 50CF 5897 618E 81D3 - 8535 8D08 9020 4FC3 5074 5247 5373 606F - 6349 675F 6E2C 8DB3 901F 4FD7 5C5E 8CCA - 65CF 7D9A 5352 8896 5176 63C3 5B58 5B6B - 5C0A 640D 6751 905C 4ED6 591A 592A 6C70 - 8A51 553E 5815 59A5 60F0 6253 67C1 8235 - 6955 9640 99C4 9A28 4F53 5806 5BFE 8010 - 5CB1 5E2F 5F85 6020 614B 6234 66FF 6CF0 - 6EDE 80CE 817F 82D4 888B 8CB8 9000 902E - 968A 9EDB 9BDB 4EE3 53F0 5927 7B2C 918D - 984C 9DF9 6EDD 7027 5353 5544 5B85 6258 - 629E 62D3 6CA2 6FEF 7422 8A17 9438 6FC1 - 8AFE 8338 51E7 86F8 53EA -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = 9240 - srcEnd = 92FC - mappingOffset = 07CA - Mapping = - 53E9 4F46 9054 8FB0 596A 8131 5DFD 7AEA - 8FBF 68DA 8C37 72F8 9C48 6A3D 8AB0 4E39 - 5358 5606 5766 62C5 63A2 65E6 6B4E 6DE1 - 6E5B 70AD 77ED 7AEF 7BAA 7DBB 803D 80C6 - 86CB 8A95 935B 56E3 58C7 5F3E 65AD 6696 - 6A80 6BB5 7537 8AC7 5024 77E5 5730 5F1B - 6065 667A 6C60 75F4 7A1A 7F6E 81F4 8718 - 9045 99B3 7BC9 755C 7AF9 7B51 84C4 FFFD - 9010 79E9 7A92 8336 5AE1 7740 4E2D 4EF2 - 5B99 5FE0 62BD 663C 67F1 6CE8 866B 8877 - 8A3B 914E 92F3 99D0 6A17 7026 732A 82E7 - 8457 8CAF 4E01 5146 51CB 558B 5BF5 5E16 - 5E33 5E81 5F14 5F35 5F6B 5FB4 61F2 6311 - 66A2 671D 6F6E 7252 753A 773A 8074 8139 - 8178 8776 8ABF 8ADC 8D85 8DF3 929A 9577 - 9802 9CE5 52C5 6357 76F4 6715 6C88 73CD - 8CC3 93AE 9673 6D25 589C 690E 69CC 8FFD - 939A 75DB 901A 585A 6802 63B4 69FB 4F43 - 6F2C 67D8 8FBB 8526 7DB4 9354 693F 6F70 - 576A 58F7 5B2C 7D2C 722A 540A 91E3 9DB4 - 4EAD 4F4E 505C 5075 5243 8C9E 5448 5824 - 5B9A 5E1D 5E95 5EAD 5EF7 5F1F 608C 62B5 - 633A 63D0 68AF 6C40 7887 798E 7A0B 7DE0 - 8247 8A02 8AE6 8E44 9013 -End of Item 0025 - -Begin of Item 0026 - Format 1 - srcBegin = 9340 - srcEnd = 93FC - mappingOffset = 0887 - Mapping = - 90B8 912D 91D8 9F0E 6CE5 6458 64E2 6575 - 6EF4 7684 7B1B 9069 93D1 6EBA 54F2 5FB9 - 64A4 8F4D 8FED 9244 5178 586B 5929 5C55 - 5E97 6DFB 7E8F 751C 8CBC 8EE2 985B 70B9 - 4F1D 6BBF 6FB1 7530 96FB 514E 5410 5835 - 5857 59AC 5C60 5F92 6597 675C 6E21 767B - 83DF 8CED 9014 90FD 934D 7825 783A 52AA - 5EA6 571F 5974 6012 5012 515A 51AC FFFD - 51CD 5200 5510 5854 5858 5957 5B95 5CF6 - 5D8B 60BC 6295 642D 6771 6843 68BC 68DF - 76D7 6DD8 6E6F 6D9B 706F 71C8 5F53 75D8 - 7977 7B49 7B54 7B52 7CD6 7D71 5230 8463 - 8569 85E4 8A0E 8B04 8C46 8E0F 9003 900F - 9419 9676 982D 9A30 95D8 50CD 52D5 540C - 5802 5C0E 61A7 649E 6D1E 77B3 7AE5 80F4 - 8404 9053 9285 5CE0 9D07 533F 5F97 5FB3 - 6D9C 7279 7763 79BF 7BE4 6BD2 72EC 8AAD - 6803 6A61 51F8 7A81 6934 5C4A 9CF6 82EB - 5BC5 9149 701E 5678 5C6F 60C7 6566 6C8C - 8C5A 9041 9813 5451 66C7 920D 5948 90A3 - 5185 4E4D 51EA 8599 8B0E 7058 637A 934B - 6962 99B4 7E04 7577 5357 6960 8EDF 96E3 - 6C5D 4E8C 5C3C 5F10 8FE9 5302 8CD1 8089 - 8679 5EFF 65E5 4E73 5165 -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = 9440 - srcEnd = 94FC - mappingOffset = 0944 - Mapping = - 5982 5C3F 97EE 4EFB 598A 5FCD 8A8D 6FE1 - 79B0 7962 5BE7 8471 732B 71B1 5E74 5FF5 - 637B 649A 71C3 7C98 4E43 5EFC 4E4B 57DC - 56A2 60A9 6FC3 7D0D 80FD 8133 81BF 8FB2 - 8997 86A4 5DF4 628A 64AD 8987 6777 6CE2 - 6D3E 7436 7834 5A46 7F75 82AD 99AC 4FF3 - 5EC3 62DD 6392 6557 676F 76C3 724C 80CC - 80BA 8F29 914D 500D 57F9 5A92 6885 FFFD - 6973 7164 72FD 8CB7 58F2 8CE0 966A 9019 - 877F 79E4 77E7 8429 4F2F 5265 535A 62CD - 67CF 6CCA 767D 7B94 7C95 8236 8584 8FEB - 66DD 6F20 7206 7E1B 83AB 99C1 9EA6 51FD - 7BB1 7872 7BB8 8087 7B48 6AE8 5E61 808C - 7551 7560 516B 9262 6E8C 767A 9197 9AEA - 4F10 7F70 629C 7B4F 95A5 9CE9 567A 5859 - 86E4 96BC 4F34 5224 534A 53CD 53DB 5E06 - 642C 6591 677F 6C3E 6C4E 7248 72AF 73ED - 7554 7E41 822C 85E9 8CA9 7BC4 91C6 7169 - 9812 98EF 633D 6669 756A 76E4 78D0 8543 - 86EE 532A 5351 5426 5983 5E87 5F7C 60B2 - 6249 6279 62AB 6590 6BD4 6CCC 75B2 76AE - 7891 79D8 7DCB 7F77 80A5 88AB 8AB9 8CBB - 907F 975E 98DB 6A0B 7C38 5099 5C3E 5FAE - 6787 6BD8 7435 7709 7F8E -End of Item 0027 - -Begin of Item 0028 - Format 1 - srcBegin = 9540 - srcEnd = 95FC - mappingOffset = 0A01 - Mapping = - 9F3B 67CA 7A17 5339 758B 9AED 5F66 819D - 83F1 8098 5F3C 5FC5 7562 7B46 903C 6867 - 59EB 5A9B 7D10 767E 8B2C 4FF5 5F6A 6A19 - 6C37 6F02 74E2 7968 8868 8A55 8C79 5EDF - 63CF 75C5 79D2 82D7 9328 92F2 849C 86ED - 9C2D 54C1 5F6C 658C 6D5C 7015 8CA7 8CD3 - 983B 654F 74F6 4E0D 4ED8 57E0 592B 5A66 - 5BCC 51A8 5E03 5E9C 6016 6276 6577 FFFD - 65A7 666E 6D6E 7236 7B26 8150 819A 8299 - 8B5C 8CA0 8CE6 8D74 961C 9644 4FAE 64AB - 6B66 821E 8461 856A 90E8 5C01 6953 98A8 - 847A 8557 4F0F 526F 5FA9 5E45 670D 798F - 8179 8907 8986 6DF5 5F17 6255 6CB8 4ECF - 7269 9B92 5206 543B 5674 58B3 61A4 626E - 711A 596E 7C89 7CDE 7D1B 96F0 6587 805E - 4E19 4F75 5175 5840 5E63 5E73 5F0A 67C4 - 4E26 853D 9589 965B 7C73 9801 50FB 58C1 - 7656 78A7 5225 77A5 8511 7B86 504F 5909 - 7247 7BC7 7DE8 8FBA 8FD4 904D 4FBF 52C9 - 5A29 5F01 97AD 4FDD 8217 92EA 5703 6355 - 6B69 752B 88DC 8F14 7A42 52DF 5893 6155 - 620A 66AE 6BCD 7C3F 83E9 5023 4FF8 5305 - 5446 5831 5949 5B9D 5CF0 5CEF 5D29 5E96 - 62B1 6367 653E 65B9 670B -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = 9640 - srcEnd = 96FC - mappingOffset = 0ABE - Mapping = - 6CD5 6CE1 70F9 7832 7E2B 80DE 82B3 840C - 84EC 8702 8912 8A2A 8C4A 90A6 92D2 98FD - 9CF3 9D6C 4E4F 4EA1 508D 5256 574A 59A8 - 5E3D 5FD8 5FD9 623F 66B4 671B 67D0 68D2 - 5192 7D21 80AA 81A8 8B00 8C8C 8CBF 927E - 9632 5420 982C 5317 50D5 535C 58A8 64B2 - 6734 7267 7766 7A46 91E6 52C3 6CA1 6B86 - 5800 5E4C 5954 672C 7FFB 51E1 76C6 FFFD - 6469 78E8 9B54 9EBB 57CB 59B9 6627 679A - 6BCE 54E9 69D9 5E55 819C 6795 9BAA 67FE - 9C52 685D 4EA6 4FE3 53C8 62B9 672B 6CAB - 8FC4 4FAD 7E6D 9EBF 4E07 6162 6E80 6F2B - 8513 5473 672A 9B45 5DF3 7B95 5CAC 5BC6 - 871C 6E4A 84D1 7A14 8108 5999 7C8D 6C11 - 7720 52D9 5922 7121 725F 77DB 9727 9D61 - 690B 5A7F 5A18 51A5 540D 547D 660E 76DF - 8FF7 9298 9CF4 59EA 725D 6EC5 514D 68C9 - 7DBF 7DEC 9762 9EBA 6478 6A21 8302 5984 - 5B5F 6BDB 731B 76F2 7DB2 8017 8499 5132 - 6728 9ED9 76EE 6762 52FF 9905 5C24 623B - 7C7E 8CB0 554F 60B6 7D0B 9580 5301 4E5F - 51B6 591C 723A 8036 91CE 5F25 77E2 5384 - 5F79 7D04 85AC 8A33 8E8D 9756 67F3 85AE - 9453 6109 6108 6CB9 7652 -End of Item 0029 - -Begin of Item 002A - Format 1 - srcBegin = 9740 - srcEnd = 97FC - mappingOffset = 0B7B - Mapping = - 8AED 8F38 552F 4F51 512A 52C7 53CB 5BA5 - 5E7D 60A0 6182 63D6 6709 67DA 6E67 6D8C - 7336 7337 7531 7950 88D5 8A98 904A 9091 - 90F5 96C4 878D 5915 4E88 4F59 4E0E 8A89 - 8F3F 9810 50AD 5E7C 5996 5BB9 5EB8 63DA - 63FA 64C1 66DC 694A 69D8 6D0B 6EB6 7194 - 7528 7AAF 7F8A 8000 8449 84C9 8981 8B21 - 8E0A 9065 967D 990A 617E 6291 6B32 FFFD - 6C83 6D74 7FCC 7FFC 6DC0 7F85 87BA 88F8 - 6765 83B1 983C 96F7 6D1B 7D61 843D 916A - 4E71 5375 5D50 6B04 6FEB 85CD 862D 89A7 - 5229 540F 5C65 674E 68A8 7406 7483 75E2 - 88CF 88E1 91CC 96E2 9678 5F8B 7387 7ACB - 844E 63A0 7565 5289 6D41 6E9C 7409 7559 - 786B 7C92 9686 7ADC 9F8D 4FB6 616E 65C5 - 865C 4E86 4EAE 50DA 4E21 51CC 5BEE 6599 - 6881 6DBC 731F 7642 77AD 7A1C 7CE7 826F - 8AD2 907C 91CF 9675 9818 529B 7DD1 502B - 5398 6797 6DCB 71D0 7433 81E8 8F2A 96A3 - 9C57 9E9F 7460 5841 6D99 7D2F 985E 4EE4 - 4F36 4F8B 51B7 52B1 5DBA 601C 73B2 793C - 82D3 9234 96B7 96F6 970A 9E97 9F62 66A6 - 6B74 5217 52A3 70C8 88C2 5EC9 604B 6190 - 6F23 7149 7C3E 7DF4 806F -End of Item 002A - -Begin of Item 002B - Format 1 - srcBegin = 9840 - srcEnd = 9872 - mappingOffset = 0C38 - Mapping = - 84EE 9023 932C 5442 9B6F 6AD3 7089 8CC2 - 8DEF 9732 52B4 5A41 5ECA 5F04 6717 697C - 6994 6D6A 6F0F 7262 72FC 7BED 8001 807E - 874B 90CE 516D 9E93 7984 808B 9332 8AD6 - 502D 548C 8A71 6B6A 8CC4 8107 60D1 67A0 - 9DF2 4E99 4E98 9C10 8A6B 85C1 8568 6900 - 6E7E 7897 8155 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = 989F - srcEnd = 98FC - mappingOffset = 0C6B - Mapping = - 5F0C 4E10 4E15 4E2A 4E31 4E36 4E3C 4E3F - 4E42 4E56 4E58 4E82 4E85 8C6B 4E8A 8212 - 5F0D 4E8E 4E9E 4E9F 4EA0 4EA2 4EB0 4EB3 - 4EB6 4ECE 4ECD 4EC4 4EC6 4EC2 4ED7 4EDE - 4EED 4EDF 4EF7 4F09 4F5A 4F30 4F5B 4F5D - 4F57 4F47 4F76 4F88 4F8F 4F98 4F7B 4F69 - 4F70 4F91 4F6F 4F86 4F96 5118 4FD4 4FDF - 4FCE 4FD8 4FDB 4FD1 4FDA 4FD0 4FE4 4FE5 - 501A 5028 5014 502A 5025 5005 4F1C 4FF6 - 5021 5029 502C 4FFE 4FEF 5011 5006 5043 - 5047 6703 5055 5050 5048 505A 5056 506C - 5078 5080 509A 5085 50B4 50B2 -End of Item 002C - -Begin of Item 002D - Format 1 - srcBegin = 9940 - srcEnd = 99FC - mappingOffset = 0CC9 - Mapping = - 50C9 50CA 50B3 50C2 50D6 50DE 50E5 50ED - 50E3 50EE 50F9 50F5 5109 5101 5102 5116 - 5115 5114 511A 5121 513A 5137 513C 513B - 513F 5140 5152 514C 5154 5162 7AF8 5169 - 516A 516E 5180 5182 56D8 518C 5189 518F - 5191 5193 5195 5196 51A4 51A6 51A2 51A9 - 51AA 51AB 51B3 51B1 51B2 51B0 51B5 51BD - 51C5 51C9 51DB 51E0 8655 51E9 51ED FFFD - 51F0 51F5 51FE 5204 520B 5214 520E 5227 - 522A 522E 5233 5239 524F 5244 524B 524C - 525E 5254 526A 5274 5269 5273 527F 527D - 528D 5294 5292 5271 5288 5291 8FA8 8FA7 - 52AC 52AD 52BC 52B5 52C1 52CD 52D7 52DE - 52E3 52E6 98ED 52E0 52F3 52F5 52F8 52F9 - 5306 5308 7538 530D 5310 530F 5315 531A - 5323 532F 5331 5333 5338 5340 5346 5345 - 4E17 5349 534D 51D6 535E 5369 536E 5918 - 537B 5377 5382 5396 53A0 53A6 53A5 53AE - 53B0 53B6 53C3 7C12 96D9 53DF 66FC 71EE - 53EE 53E8 53ED 53FA 5401 543D 5440 542C - 542D 543C 542E 5436 5429 541D 544E 548F - 5475 548E 545F 5471 5477 5470 5492 547B - 5480 5476 5484 5490 5486 54C7 54A2 54B8 - 54A5 54AC 54C4 54C8 54A8 -End of Item 002D - -Begin of Item 002E - Format 1 - srcBegin = 9A40 - srcEnd = 9AFC - mappingOffset = 0D86 - Mapping = - 54AB 54C2 54A4 54BE 54BC 54D8 54E5 54E6 - 550F 5514 54FD 54EE 54ED 54FA 54E2 5539 - 5540 5563 554C 552E 555C 5545 5556 5557 - 5538 5533 555D 5599 5580 54AF 558A 559F - 557B 557E 5598 559E 55AE 557C 5583 55A9 - 5587 55A8 55DA 55C5 55DF 55C4 55DC 55E4 - 55D4 5614 55F7 5616 55FE 55FD 561B 55F9 - 564E 5650 71DF 5634 5636 5632 5638 FFFD - 566B 5664 562F 566C 566A 5686 5680 568A - 56A0 5694 568F 56A5 56AE 56B6 56B4 56C2 - 56BC 56C1 56C3 56C0 56C8 56CE 56D1 56D3 - 56D7 56EE 56F9 5700 56FF 5704 5709 5708 - 570B 570D 5713 5718 5716 55C7 571C 5726 - 5737 5738 574E 573B 5740 574F 5769 57C0 - 5788 5761 577F 5789 5793 57A0 57B3 57A4 - 57AA 57B0 57C3 57C6 57D4 57D2 57D3 580A - 57D6 57E3 580B 5819 581D 5872 5821 5862 - 584B 5870 6BC0 5852 583D 5879 5885 58B9 - 589F 58AB 58BA 58DE 58BB 58B8 58AE 58C5 - 58D3 58D1 58D7 58D9 58D8 58E5 58DC 58E4 - 58DF 58EF 58FA 58F9 58FB 58FC 58FD 5902 - 590A 5910 591B 68A6 5925 592C 592D 5932 - 5938 593E 7AD2 5955 5950 594E 595A 5958 - 5962 5960 5967 596C 5969 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 9B40 - srcEnd = 9BFC - mappingOffset = 0E43 - Mapping = - 5978 5981 599D 4F5E 4FAB 59A3 59B2 59C6 - 59E8 59DC 598D 59D9 59DA 5A25 5A1F 5A11 - 5A1C 5A09 5A1A 5A40 5A6C 5A49 5A35 5A36 - 5A62 5A6A 5A9A 5ABC 5ABE 5ACB 5AC2 5ABD - 5AE3 5AD7 5AE6 5AE9 5AD6 5AFA 5AFB 5B0C - 5B0B 5B16 5B32 5AD0 5B2A 5B36 5B3E 5B43 - 5B45 5B40 5B51 5B55 5B5A 5B5B 5B65 5B69 - 5B70 5B73 5B75 5B78 6588 5B7A 5B80 FFFD - 5B83 5BA6 5BB8 5BC3 5BC7 5BC9 5BD4 5BD0 - 5BE4 5BE6 5BE2 5BDE 5BE5 5BEB 5BF0 5BF6 - 5BF3 5C05 5C07 5C08 5C0D 5C13 5C20 5C22 - 5C28 5C38 5C39 5C41 5C46 5C4E 5C53 5C50 - 5C4F 5B71 5C6C 5C6E 4E62 5C76 5C79 5C8C - 5C91 5C94 599B 5CAB 5CBB 5CB6 5CBC 5CB7 - 5CC5 5CBE 5CC7 5CD9 5CE9 5CFD 5CFA 5CED - 5D8C 5CEA 5D0B 5D15 5D17 5D5C 5D1F 5D1B - 5D11 5D14 5D22 5D1A 5D19 5D18 5D4C 5D52 - 5D4E 5D4B 5D6C 5D73 5D76 5D87 5D84 5D82 - 5DA2 5D9D 5DAC 5DAE 5DBD 5D90 5DB7 5DBC - 5DC9 5DCD 5DD3 5DD2 5DD6 5DDB 5DEB 5DF2 - 5DF5 5E0B 5E1A 5E19 5E11 5E1B 5E36 5E37 - 5E44 5E43 5E40 5E4E 5E57 5E54 5E5F 5E62 - 5E64 5E47 5E75 5E76 5E7A 9EBC 5E7F 5EA0 - 5EC1 5EC2 5EC8 5ED0 5ECF -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 9C40 - srcEnd = 9CFC - mappingOffset = 0F00 - Mapping = - 5ED6 5EE3 5EDD 5EDA 5EDB 5EE2 5EE1 5EE8 - 5EE9 5EEC 5EF1 5EF3 5EF0 5EF4 5EF8 5EFE - 5F03 5F09 5F5D 5F5C 5F0B 5F11 5F16 5F29 - 5F2D 5F38 5F41 5F48 5F4C 5F4E 5F2F 5F51 - 5F56 5F57 5F59 5F61 5F6D 5F73 5F77 5F83 - 5F82 5F7F 5F8A 5F88 5F91 5F87 5F9E 5F99 - 5F98 5FA0 5FA8 5FAD 5FBC 5FD6 5FFB 5FE4 - 5FF8 5FF1 5FDD 60B3 5FFF 6021 6060 FFFD - 6019 6010 6029 600E 6031 601B 6015 602B - 6026 600F 603A 605A 6041 606A 6077 605F - 604A 6046 604D 6063 6043 6064 6042 606C - 606B 6059 6081 608D 60E7 6083 609A 6084 - 609B 6096 6097 6092 60A7 608B 60E1 60B8 - 60E0 60D3 60B4 5FF0 60BD 60C6 60B5 60D8 - 614D 6115 6106 60F6 60F7 6100 60F4 60FA - 6103 6121 60FB 60F1 610D 610E 6147 613E - 6128 6127 614A 613F 613C 612C 6134 613D - 6142 6144 6173 6177 6158 6159 615A 616B - 6174 616F 6165 6171 615F 615D 6153 6175 - 6199 6196 6187 61AC 6194 619A 618A 6191 - 61AB 61AE 61CC 61CA 61C9 61F7 61C8 61C3 - 61C6 61BA 61CB 7F79 61CD 61E6 61E3 61F6 - 61FA 61F4 61FF 61FD 61FC 61FE 6200 6208 - 6209 620D 620C 6214 621B -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 9D40 - srcEnd = 9DFC - mappingOffset = 0FBD - Mapping = - 621E 6221 622A 622E 6230 6232 6233 6241 - 624E 625E 6263 625B 6260 6268 627C 6282 - 6289 627E 6292 6293 6296 62D4 6283 6294 - 62D7 62D1 62BB 62CF 62FF 62C6 64D4 62C8 - 62DC 62CC 62CA 62C2 62C7 629B 62C9 630C - 62EE 62F1 6327 6302 6308 62EF 62F5 6350 - 633E 634D 641C 634F 6396 638E 6380 63AB - 6376 63A3 638F 6389 639F 63B5 636B FFFD - 6369 63BE 63E9 63C0 63C6 63E3 63C9 63D2 - 63F6 63C4 6416 6434 6406 6413 6426 6436 - 651D 6417 6428 640F 6467 646F 6476 644E - 652A 6495 6493 64A5 64A9 6488 64BC 64DA - 64D2 64C5 64C7 64BB 64D8 64C2 64F1 64E7 - 8209 64E0 64E1 62AC 64E3 64EF 652C 64F6 - 64F4 64F2 64FA 6500 64FD 6518 651C 6505 - 6524 6523 652B 6534 6535 6537 6536 6538 - 754B 6548 6556 6555 654D 6558 655E 655D - 6572 6578 6582 6583 8B8A 659B 659F 65AB - 65B7 65C3 65C6 65C1 65C4 65CC 65D2 65DB - 65D9 65E0 65E1 65F1 6772 660A 6603 65FB - 6773 6635 6636 6634 661C 664F 6644 6649 - 6641 665E 665D 6664 6667 6668 665F 6662 - 6670 6683 6688 668E 6689 6684 6698 669D - 66C1 66B9 66C9 66BE 66BC -End of Item 0031 - -Begin of Item 0032 - Format 1 - srcBegin = 9E40 - srcEnd = 9EFC - mappingOffset = 107A - Mapping = - 66C4 66B8 66D6 66DA 66E0 663F 66E6 66E9 - 66F0 66F5 66F7 670F 6716 671E 6726 6727 - 9738 672E 673F 6736 6741 6738 6737 6746 - 675E 6760 6759 6763 6764 6789 6770 67A9 - 677C 676A 678C 678B 67A6 67A1 6785 67B7 - 67EF 67B4 67EC 67B3 67E9 67B8 67E4 67DE - 67DD 67E2 67EE 67B9 67CE 67C6 67E7 6A9C - 681E 6846 6829 6840 684D 6832 684E FFFD - 68B3 682B 6859 6863 6877 687F 689F 688F - 68AD 6894 689D 689B 6883 6AAE 68B9 6874 - 68B5 68A0 68BA 690F 688D 687E 6901 68CA - 6908 68D8 6922 6926 68E1 690C 68CD 68D4 - 68E7 68D5 6936 6912 6904 68D7 68E3 6925 - 68F9 68E0 68EF 6928 692A 691A 6923 6921 - 68C6 6979 6977 695C 6978 696B 6954 697E - 696E 6939 6974 693D 6959 6930 6961 695E - 695D 6981 696A 69B2 69AE 69D0 69BF 69C1 - 69D3 69BE 69CE 5BE8 69CA 69DD 69BB 69C3 - 69A7 6A2E 6991 69A0 699C 6995 69B4 69DE - 69E8 6A02 6A1B 69FF 6B0A 69F9 69F2 69E7 - 6A05 69B1 6A1E 69ED 6A14 69EB 6A0A 6A12 - 6AC1 6A23 6A13 6A44 6A0C 6A72 6A36 6A78 - 6A47 6A62 6A59 6A66 6A48 6A38 6A22 6A90 - 6A8D 6AA0 6A84 6AA2 6AA3 -End of Item 0032 - -Begin of Item 0033 - Format 1 - srcBegin = 9F40 - srcEnd = 9FFC - mappingOffset = 1137 - Mapping = - 6A97 8617 6ABB 6AC3 6AC2 6AB8 6AB3 6AAC - 6ADE 6AD1 6ADF 6AAA 6ADA 6AEA 6AFB 6B05 - 8616 6AFA 6B12 6B16 9B31 6B1F 6B38 6B37 - 76DC 6B39 98EE 6B47 6B43 6B49 6B50 6B59 - 6B54 6B5B 6B5F 6B61 6B78 6B79 6B7F 6B80 - 6B84 6B83 6B8D 6B98 6B95 6B9E 6BA4 6BAA - 6BAB 6BAF 6BB2 6BB1 6BB3 6BB7 6BBC 6BC6 - 6BCB 6BD3 6BDF 6BEC 6BEB 6BF3 6BEF FFFD - 9EBE 6C08 6C13 6C14 6C1B 6C24 6C23 6C5E - 6C55 6C62 6C6A 6C82 6C8D 6C9A 6C81 6C9B - 6C7E 6C68 6C73 6C92 6C90 6CC4 6CF1 6CD3 - 6CBD 6CD7 6CC5 6CDD 6CAE 6CB1 6CBE 6CBA - 6CDB 6CEF 6CD9 6CEA 6D1F 884D 6D36 6D2B - 6D3D 6D38 6D19 6D35 6D33 6D12 6D0C 6D63 - 6D93 6D64 6D5A 6D79 6D59 6D8E 6D95 6FE4 - 6D85 6DF9 6E15 6E0A 6DB5 6DC7 6DE6 6DB8 - 6DC6 6DEC 6DDE 6DCC 6DE8 6DD2 6DC5 6DFA - 6DD9 6DE4 6DD5 6DEA 6DEE 6E2D 6E6E 6E2E - 6E19 6E72 6E5F 6E3E 6E23 6E6B 6E2B 6E76 - 6E4D 6E1F 6E43 6E3A 6E4E 6E24 6EFF 6E1D - 6E38 6E82 6EAA 6E98 6EC9 6EB7 6ED3 6EBD - 6EAF 6EC4 6EB2 6ED4 6ED5 6E8F 6EA5 6EC2 - 6E9F 6F41 6F11 704C 6EEC 6EF8 6EFE 6F3F - 6EF2 6F31 6EEF 6F32 6ECC -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = E040 - srcEnd = E0FC - mappingOffset = 11F4 - Mapping = - 6F3E 6F13 6EF7 6F86 6F7A 6F78 6F81 6F80 - 6F6F 6F5B 6FF3 6F6D 6F82 6F7C 6F58 6F8E - 6F91 6FC2 6F66 6FB3 6FA3 6FA1 6FA4 6FB9 - 6FC6 6FAA 6FDF 6FD5 6FEC 6FD4 6FD8 6FF1 - 6FEE 6FDB 7009 700B 6FFA 7011 7001 700F - 6FFE 701B 701A 6F74 701D 7018 701F 7030 - 703E 7032 7051 7063 7099 7092 70AF 70F1 - 70AC 70B8 70B3 70AE 70DF 70CB 70DD FFFD - 70D9 7109 70FD 711C 7119 7165 7155 7188 - 7166 7162 714C 7156 716C 718F 71FB 7184 - 7195 71A8 71AC 71D7 71B9 71BE 71D2 71C9 - 71D4 71CE 71E0 71EC 71E7 71F5 71FC 71F9 - 71FF 720D 7210 721B 7228 722D 722C 7230 - 7232 723B 723C 723F 7240 7246 724B 7258 - 7274 727E 7282 7281 7287 7292 7296 72A2 - 72A7 72B9 72B2 72C3 72C6 72C4 72CE 72D2 - 72E2 72E0 72E1 72F9 72F7 500F 7317 730A - 731C 7316 731D 7334 732F 7329 7325 733E - 734E 734F 9ED8 7357 736A 7368 7370 7378 - 7375 737B 737A 73C8 73B3 73CE 73BB 73C0 - 73E5 73EE 73DE 74A2 7405 746F 7425 73F8 - 7432 743A 7455 743F 745F 7459 7441 745C - 7469 7470 7463 746A 7476 747E 748B 749E - 74A7 74CA 74CF 74D4 73F1 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = E140 - srcEnd = E1FC - mappingOffset = 12B1 - Mapping = - 74E0 74E3 74E7 74E9 74EE 74F2 74F0 74F1 - 74F8 74F7 7504 7503 7505 750C 750E 750D - 7515 7513 751E 7526 752C 753C 7544 754D - 754A 7549 755B 7546 755A 7569 7564 7567 - 756B 756D 7578 7576 7586 7587 7574 758A - 7589 7582 7594 759A 759D 75A5 75A3 75C2 - 75B3 75C3 75B5 75BD 75B8 75BC 75B1 75CD - 75CA 75D2 75D9 75E3 75DE 75FE 75FF FFFD - 75FC 7601 75F0 75FA 75F2 75F3 760B 760D - 7609 761F 7627 7620 7621 7622 7624 7634 - 7630 763B 7647 7648 7646 765C 7658 7661 - 7662 7668 7669 766A 7667 766C 7670 7672 - 7676 7678 767C 7680 7683 7688 768B 768E - 7696 7693 7699 769A 76B0 76B4 76B8 76B9 - 76BA 76C2 76CD 76D6 76D2 76DE 76E1 76E5 - 76E7 76EA 862F 76FB 7708 7707 7704 7729 - 7724 771E 7725 7726 771B 7737 7738 7747 - 775A 7768 776B 775B 7765 777F 777E 7779 - 778E 778B 7791 77A0 779E 77B0 77B6 77B9 - 77BF 77BC 77BD 77BB 77C7 77CD 77D7 77DA - 77DC 77E3 77EE 77FC 780C 7812 7926 7820 - 792A 7845 788E 7874 7886 787C 789A 788C - 78A3 78B5 78AA 78AF 78D1 78C6 78CB 78D4 - 78BE 78BC 78C5 78CA 78EC -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = E240 - srcEnd = E2FC - mappingOffset = 136E - Mapping = - 78E7 78DA 78FD 78F4 7907 7912 7911 7919 - 792C 792B 7940 7960 7957 795F 795A 7955 - 7953 797A 797F 798A 799D 79A7 9F4B 79AA - 79AE 79B3 79B9 79BA 79C9 79D5 79E7 79EC - 79E1 79E3 7A08 7A0D 7A18 7A19 7A20 7A1F - 7980 7A31 7A3B 7A3E 7A37 7A43 7A57 7A49 - 7A61 7A62 7A69 9F9D 7A70 7A79 7A7D 7A88 - 7A97 7A95 7A98 7A96 7AA9 7AC8 7AB0 FFFD - 7AB6 7AC5 7AC4 7ABF 9083 7AC7 7ACA 7ACD - 7ACF 7AD5 7AD3 7AD9 7ADA 7ADD 7AE1 7AE2 - 7AE6 7AED 7AF0 7B02 7B0F 7B0A 7B06 7B33 - 7B18 7B19 7B1E 7B35 7B28 7B36 7B50 7B7A - 7B04 7B4D 7B0B 7B4C 7B45 7B75 7B65 7B74 - 7B67 7B70 7B71 7B6C 7B6E 7B9D 7B98 7B9F - 7B8D 7B9C 7B9A 7B8B 7B92 7B8F 7B5D 7B99 - 7BCB 7BC1 7BCC 7BCF 7BB4 7BC6 7BDD 7BE9 - 7C11 7C14 7BE6 7BE5 7C60 7C00 7C07 7C13 - 7BF3 7BF7 7C17 7C0D 7BF6 7C23 7C27 7C2A - 7C1F 7C37 7C2B 7C3D 7C4C 7C43 7C54 7C4F - 7C40 7C50 7C58 7C5F 7C64 7C56 7C65 7C6C - 7C75 7C83 7C90 7CA4 7CAD 7CA2 7CAB 7CA1 - 7CA8 7CB3 7CB2 7CB1 7CAE 7CB9 7CBD 7CC0 - 7CC5 7CC2 7CD8 7CD2 7CDC 7CE2 9B3B 7CEF - 7CF2 7CF4 7CF6 7CFA 7D06 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = E340 - srcEnd = E3FC - mappingOffset = 142B - Mapping = - 7D02 7D1C 7D15 7D0A 7D45 7D4B 7D2E 7D32 - 7D3F 7D35 7D46 7D73 7D56 7D4E 7D72 7D68 - 7D6E 7D4F 7D63 7D93 7D89 7D5B 7D8F 7D7D - 7D9B 7DBA 7DAE 7DA3 7DB5 7DC7 7DBD 7DAB - 7E3D 7DA2 7DAF 7DDC 7DB8 7D9F 7DB0 7DD8 - 7DDD 7DE4 7DDE 7DFB 7DF2 7DE1 7E05 7E0A - 7E23 7E21 7E12 7E31 7E1F 7E09 7E0B 7E22 - 7E46 7E66 7E3B 7E35 7E39 7E43 7E37 FFFD - 7E32 7E3A 7E67 7E5D 7E56 7E5E 7E59 7E5A - 7E79 7E6A 7E69 7E7C 7E7B 7E83 7DD5 7E7D - 8FAE 7E7F 7E88 7E89 7E8C 7E92 7E90 7E93 - 7E94 7E96 7E8E 7E9B 7E9C 7F38 7F3A 7F45 - 7F4C 7F4D 7F4E 7F50 7F51 7F55 7F54 7F58 - 7F5F 7F60 7F68 7F69 7F67 7F78 7F82 7F86 - 7F83 7F88 7F87 7F8C 7F94 7F9E 7F9D 7F9A - 7FA3 7FAF 7FB2 7FB9 7FAE 7FB6 7FB8 8B71 - 7FC5 7FC6 7FCA 7FD5 7FD4 7FE1 7FE6 7FE9 - 7FF3 7FF9 98DC 8006 8004 800B 8012 8018 - 8019 801C 8021 8028 803F 803B 804A 8046 - 8052 8058 805A 805F 8062 8068 8073 8072 - 8070 8076 8079 807D 807F 8084 8086 8085 - 809B 8093 809A 80AD 5190 80AC 80DB 80E5 - 80D9 80DD 80C4 80DA 80D6 8109 80EF 80F1 - 811B 8129 8123 812F 814B -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = E440 - srcEnd = E4FC - mappingOffset = 14E8 - Mapping = - 968B 8146 813E 8153 8151 80FC 8171 816E - 8165 8166 8174 8183 8188 818A 8180 8182 - 81A0 8195 81A4 81A3 815F 8193 81A9 81B0 - 81B5 81BE 81B8 81BD 81C0 81C2 81BA 81C9 - 81CD 81D1 81D9 81D8 81C8 81DA 81DF 81E0 - 81E7 81FA 81FB 81FE 8201 8202 8205 8207 - 820A 820D 8210 8216 8229 822B 8238 8233 - 8240 8259 8258 825D 825A 825F 8264 FFFD - 8262 8268 826A 826B 822E 8271 8277 8278 - 827E 828D 8292 82AB 829F 82BB 82AC 82E1 - 82E3 82DF 82D2 82F4 82F3 82FA 8393 8303 - 82FB 82F9 82DE 8306 82DC 8309 82D9 8335 - 8334 8316 8332 8331 8340 8339 8350 8345 - 832F 832B 8317 8318 8385 839A 83AA 839F - 83A2 8396 8323 838E 8387 838A 837C 83B5 - 8373 8375 83A0 8389 83A8 83F4 8413 83EB - 83CE 83FD 8403 83D8 840B 83C1 83F7 8407 - 83E0 83F2 840D 8422 8420 83BD 8438 8506 - 83FB 846D 842A 843C 855A 8484 8477 846B - 84AD 846E 8482 8469 8446 842C 846F 8479 - 8435 84CA 8462 84B9 84BF 849F 84D9 84CD - 84BB 84DA 84D0 84C1 84C6 84D6 84A1 8521 - 84FF 84F4 8517 8518 852C 851F 8515 8514 - 84FC 8540 8563 8558 8548 -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = E540 - srcEnd = E5FC - mappingOffset = 15A5 - Mapping = - 8541 8602 854B 8555 8580 85A4 8588 8591 - 858A 85A8 856D 8594 859B 85EA 8587 859C - 8577 857E 8590 85C9 85BA 85CF 85B9 85D0 - 85D5 85DD 85E5 85DC 85F9 860A 8613 860B - 85FE 85FA 8606 8622 861A 8630 863F 864D - 4E55 8654 865F 8667 8671 8693 86A3 86A9 - 86AA 868B 868C 86B6 86AF 86C4 86C6 86B0 - 86C9 8823 86AB 86D4 86DE 86E9 86EC FFFD - 86DF 86DB 86EF 8712 8706 8708 8700 8703 - 86FB 8711 8709 870D 86F9 870A 8734 873F - 8737 873B 8725 8729 871A 8760 875F 8778 - 874C 874E 8774 8757 8768 876E 8759 8753 - 8763 876A 8805 87A2 879F 8782 87AF 87CB - 87BD 87C0 87D0 96D6 87AB 87C4 87B3 87C7 - 87C6 87BB 87EF 87F2 87E0 880F 880D 87FE - 87F6 87F7 880E 87D2 8811 8816 8815 8822 - 8821 8831 8836 8839 8827 883B 8844 8842 - 8852 8859 885E 8862 886B 8881 887E 889E - 8875 887D 88B5 8872 8882 8897 8892 88AE - 8899 88A2 888D 88A4 88B0 88BF 88B1 88C3 - 88C4 88D4 88D8 88D9 88DD 88F9 8902 88FC - 88F4 88E8 88F2 8904 890C 890A 8913 8943 - 891E 8925 892A 892B 8941 8944 893B 8936 - 8938 894C 891D 8960 895E -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = E640 - srcEnd = E6FC - mappingOffset = 1662 - Mapping = - 8966 8964 896D 896A 896F 8974 8977 897E - 8983 8988 898A 8993 8998 89A1 89A9 89A6 - 89AC 89AF 89B2 89BA 89BD 89BF 89C0 89DA - 89DC 89DD 89E7 89F4 89F8 8A03 8A16 8A10 - 8A0C 8A1B 8A1D 8A25 8A36 8A41 8A5B 8A52 - 8A46 8A48 8A7C 8A6D 8A6C 8A62 8A85 8A82 - 8A84 8AA8 8AA1 8A91 8AA5 8AA6 8A9A 8AA3 - 8AC4 8ACD 8AC2 8ADA 8AEB 8AF3 8AE7 FFFD - 8AE4 8AF1 8B14 8AE0 8AE2 8AF7 8ADE 8ADB - 8B0C 8B07 8B1A 8AE1 8B16 8B10 8B17 8B20 - 8B33 97AB 8B26 8B2B 8B3E 8B28 8B41 8B4C - 8B4F 8B4E 8B49 8B56 8B5B 8B5A 8B6B 8B5F - 8B6C 8B6F 8B74 8B7D 8B80 8B8C 8B8E 8B92 - 8B93 8B96 8B99 8B9A 8C3A 8C41 8C3F 8C48 - 8C4C 8C4E 8C50 8C55 8C62 8C6C 8C78 8C7A - 8C82 8C89 8C85 8C8A 8C8D 8C8E 8C94 8C7C - 8C98 621D 8CAD 8CAA 8CBD 8CB2 8CB3 8CAE - 8CB6 8CC8 8CC1 8CE4 8CE3 8CDA 8CFD 8CFA - 8CFB 8D04 8D05 8D0A 8D07 8D0F 8D0D 8D10 - 9F4E 8D13 8CCD 8D14 8D16 8D67 8D6D 8D71 - 8D73 8D81 8D99 8DC2 8DBE 8DBA 8DCF 8DDA - 8DD6 8DCC 8DDB 8DCB 8DEA 8DEB 8DDF 8DE3 - 8DFC 8E08 8E09 8DFF 8E1D 8E1E 8E10 8E1F - 8E42 8E35 8E30 8E34 8E4A -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = E740 - srcEnd = E7FC - mappingOffset = 171F - Mapping = - 8E47 8E49 8E4C 8E50 8E48 8E59 8E64 8E60 - 8E2A 8E63 8E55 8E76 8E72 8E7C 8E81 8E87 - 8E85 8E84 8E8B 8E8A 8E93 8E91 8E94 8E99 - 8EAA 8EA1 8EAC 8EB0 8EC6 8EB1 8EBE 8EC5 - 8EC8 8ECB 8EDB 8EE3 8EFC 8EFB 8EEB 8EFE - 8F0A 8F05 8F15 8F12 8F19 8F13 8F1C 8F1F - 8F1B 8F0C 8F26 8F33 8F3B 8F39 8F45 8F42 - 8F3E 8F4C 8F49 8F46 8F4E 8F57 8F5C FFFD - 8F62 8F63 8F64 8F9C 8F9F 8FA3 8FAD 8FAF - 8FB7 8FDA 8FE5 8FE2 8FEA 8FEF 9087 8FF4 - 9005 8FF9 8FFA 9011 9015 9021 900D 901E - 9016 900B 9027 9036 9035 9039 8FF8 904F - 9050 9051 9052 900E 9049 903E 9056 9058 - 905E 9068 906F 9076 96A8 9072 9082 907D - 9081 9080 908A 9089 908F 90A8 90AF 90B1 - 90B5 90E2 90E4 6248 90DB 9102 9112 9119 - 9132 9130 914A 9156 9158 9163 9165 9169 - 9173 9172 918B 9189 9182 91A2 91AB 91AF - 91AA 91B5 91B4 91BA 91C0 91C1 91C9 91CB - 91D0 91D6 91DF 91E1 91DB 91FC 91F5 91F6 - 921E 91FF 9214 922C 9215 9211 925E 9257 - 9245 9249 9264 9248 9295 923F 924B 9250 - 929C 9296 9293 929B 925A 92CF 92B9 92B7 - 92E9 930F 92FA 9344 932E -End of Item 003B - -Begin of Item 003C - Format 1 - srcBegin = E840 - srcEnd = E8FC - mappingOffset = 17DC - Mapping = - 9319 9322 931A 9323 933A 9335 933B 935C - 9360 937C 936E 9356 93B0 93AC 93AD 9394 - 93B9 93D6 93D7 93E8 93E5 93D8 93C3 93DD - 93D0 93C8 93E4 941A 9414 9413 9403 9407 - 9410 9436 942B 9435 9421 943A 9441 9452 - 9444 945B 9460 9462 945E 946A 9229 9470 - 9475 9477 947D 945A 947C 947E 9481 947F - 9582 9587 958A 9594 9596 9598 9599 FFFD - 95A0 95A8 95A7 95AD 95BC 95BB 95B9 95BE - 95CA 6FF6 95C3 95CD 95CC 95D5 95D4 95D6 - 95DC 95E1 95E5 95E2 9621 9628 962E 962F - 9642 964C 964F 964B 9677 965C 965E 965D - 965F 9666 9672 966C 968D 9698 9695 9697 - 96AA 96A7 96B1 96B2 96B0 96B4 96B6 96B8 - 96B9 96CE 96CB 96C9 96CD 894D 96DC 970D - 96D5 96F9 9704 9706 9708 9713 970E 9711 - 970F 9716 9719 9724 972A 9730 9739 973D - 973E 9744 9746 9748 9742 9749 975C 9760 - 9764 9766 9768 52D2 976B 9771 9779 9785 - 977C 9781 977A 9786 978B 978F 9790 979C - 97A8 97A6 97A3 97B3 97B4 97C3 97C6 97C8 - 97CB 97DC 97ED 9F4F 97F2 7ADF 97F6 97F5 - 980F 980C 9838 9824 9821 9837 983D 9846 - 984F 984B 986B 986F 9870 -End of Item 003C - -Begin of Item 003D - Format 1 - srcBegin = E940 - srcEnd = E9FC - mappingOffset = 1899 - Mapping = - 9871 9874 9873 98AA 98AF 98B1 98B6 98C4 - 98C3 98C6 98E9 98EB 9903 9909 9912 9914 - 9918 9921 991D 991E 9924 9920 992C 992E - 993D 993E 9942 9949 9945 9950 994B 9951 - 9952 994C 9955 9997 9998 99A5 99AD 99AE - 99BC 99DF 99DB 99DD 99D8 99D1 99ED 99EE - 99F1 99F2 99FB 99F8 9A01 9A0F 9A05 99E2 - 9A19 9A2B 9A37 9A45 9A42 9A40 9A43 FFFD - 9A3E 9A55 9A4D 9A5B 9A57 9A5F 9A62 9A65 - 9A64 9A69 9A6B 9A6A 9AAD 9AB0 9ABC 9AC0 - 9ACF 9AD1 9AD3 9AD4 9ADE 9ADF 9AE2 9AE3 - 9AE6 9AEF 9AEB 9AEE 9AF4 9AF1 9AF7 9AFB - 9B06 9B18 9B1A 9B1F 9B22 9B23 9B25 9B27 - 9B28 9B29 9B2A 9B2E 9B2F 9B32 9B44 9B43 - 9B4F 9B4D 9B4E 9B51 9B58 9B74 9B93 9B83 - 9B91 9B96 9B97 9B9F 9BA0 9BA8 9BB4 9BC0 - 9BCA 9BB9 9BC6 9BCF 9BD1 9BD2 9BE3 9BE2 - 9BE4 9BD4 9BE1 9C3A 9BF2 9BF1 9BF0 9C15 - 9C14 9C09 9C13 9C0C 9C06 9C08 9C12 9C0A - 9C04 9C2E 9C1B 9C25 9C24 9C21 9C30 9C47 - 9C32 9C46 9C3E 9C5A 9C60 9C67 9C76 9C78 - 9CE7 9CEC 9CF0 9D09 9D08 9CEB 9D03 9D06 - 9D2A 9D26 9DAF 9D23 9D1F 9D44 9D15 9D12 - 9D41 9D3F 9D3E 9D46 9D48 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = EA40 - srcEnd = EAA4 - mappingOffset = 1956 - Mapping = - 9D5D 9D5E 9D64 9D51 9D50 9D59 9D72 9D89 - 9D87 9DAB 9D6F 9D7A 9D9A 9DA4 9DA9 9DB2 - 9DC4 9DC1 9DBB 9DB8 9DBA 9DC6 9DCF 9DC2 - 9DD9 9DD3 9DF8 9DE6 9DED 9DEF 9DFD 9E1A - 9E1B 9E1E 9E75 9E79 9E7D 9E81 9E88 9E8B - 9E8C 9E92 9E95 9E91 9E9D 9EA5 9EA9 9EB8 - 9EAA 9EAD 9761 9ECC 9ECE 9ECF 9ED0 9ED4 - 9EDC 9EDE 9EDD 9EE0 9EE5 9EE8 9EEF FFFD - 9EF4 9EF6 9EF7 9EF9 9EFB 9EFC 9EFD 9F07 - 9F08 76B7 9F15 9F21 9F2C 9F3E 9F4A 9F52 - 9F54 9F63 9F5F 9F60 9F61 9F66 9F67 9F6C - 9F6A 9F77 9F72 9F76 9F95 9F9C 9FA0 582F - 69C7 9059 7464 51DC 7199 -End of Item 003E - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x003F, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0014, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x00D1, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0013 */ -/* Total of Format 1 : 0x0028 */ -/* Total of Format 2 : 0x0004 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0x1112, 0x1122, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x0111, -/*-------------------------------------------------------*/ -/* Offset=0x0014 Start of MapCell Array */ -/* 0000 */ 0x0020, 0x007E, 0x0020, -/* 0001 */ 0x005D, 0x007D, 0x005D, -/* 0002 */ 0x00A1, 0x00DF, 0xFF61, -/* 0003 */ 0x8171, 0x817A, 0x3008, -/* 0004 */ 0x824F, 0x8258, 0xFF10, -/* 0005 */ 0x8260, 0x8279, 0xFF21, -/* 0006 */ 0x8281, 0x829A, 0xFF41, -/* 0007 */ 0x829F, 0x82F1, 0x3041, -/* 0008 */ 0x8340, 0x837E, 0x30A1, -/* 0009 */ 0x8380, 0x8396, 0x30E0, -/* 000A */ 0x839F, 0x83AF, 0x0391, -/* 000B */ 0x83B0, 0x83B6, 0x03A3, -/* 000C */ 0x83BF, 0x83CF, 0x03B1, -/* 000D */ 0x83D0, 0x83D6, 0x03C3, -/* 000E */ 0x8440, 0x8445, 0x0410, -/* 000F */ 0x8447, 0x8460, 0x0416, -/* 0010 */ 0x8470, 0x8475, 0x0430, -/* 0011 */ 0x8477, 0x847E, 0x0436, -/* 0012 */ 0x8480, 0x8491, 0x043E, -/* 0013 */ 0x005C, 0x0000, 0x00A5, -/* 0014 */ 0x007E, 0x0000, 0x203E, -/* 0015 */ 0x8140, 0x81AC, 0x0000, -/* 0016 */ 0x81B8, 0x81CE, 0x006D, -/* 0017 */ 0x81DA, 0x81FC, 0x0084, -/* 0018 */ 0x8446, 0x0000, 0x0401, -/* 0019 */ 0x8476, 0x0000, 0x0451, -/* 001A */ 0x849F, 0x84BE, 0x00A7, -/* 001B */ 0x889F, 0x88FC, 0x00C7, -/* 001C */ 0x8940, 0x89FC, 0x0125, -/* 001D */ 0x8A40, 0x8AFC, 0x01E2, -/* 001E */ 0x8B40, 0x8BFC, 0x029F, -/* 001F */ 0x8C40, 0x8CFC, 0x035C, -/* 0020 */ 0x8D40, 0x8DFC, 0x0419, -/* 0021 */ 0x8E40, 0x8EFC, 0x04D6, -/* 0022 */ 0x8F40, 0x8FFC, 0x0593, -/* 0023 */ 0x9040, 0x90FC, 0x0650, -/* 0024 */ 0x9140, 0x91FC, 0x070D, -/* 0025 */ 0x9240, 0x92FC, 0x07CA, -/* 0026 */ 0x9340, 0x93FC, 0x0887, -/* 0027 */ 0x9440, 0x94FC, 0x0944, -/* 0028 */ 0x9540, 0x95FC, 0x0A01, -/* 0029 */ 0x9640, 0x96FC, 0x0ABE, -/* 002A */ 0x9740, 0x97FC, 0x0B7B, -/* 002B */ 0x9840, 0x9872, 0x0C38, -/* 002C */ 0x989F, 0x98FC, 0x0C6B, -/* 002D */ 0x9940, 0x99FC, 0x0CC9, -/* 002E */ 0x9A40, 0x9AFC, 0x0D86, -/* 002F */ 0x9B40, 0x9BFC, 0x0E43, -/* 0030 */ 0x9C40, 0x9CFC, 0x0F00, -/* 0031 */ 0x9D40, 0x9DFC, 0x0FBD, -/* 0032 */ 0x9E40, 0x9EFC, 0x107A, -/* 0033 */ 0x9F40, 0x9FFC, 0x1137, -/* 0034 */ 0xE040, 0xE0FC, 0x11F4, -/* 0035 */ 0xE140, 0xE1FC, 0x12B1, -/* 0036 */ 0xE240, 0xE2FC, 0x136E, -/* 0037 */ 0xE340, 0xE3FC, 0x142B, -/* 0038 */ 0xE440, 0xE4FC, 0x14E8, -/* 0039 */ 0xE540, 0xE5FC, 0x15A5, -/* 003A */ 0xE640, 0xE6FC, 0x1662, -/* 003B */ 0xE740, 0xE7FC, 0x171F, -/* 003C */ 0xE840, 0xE8FC, 0x17DC, -/* 003D */ 0xE940, 0xE9FC, 0x1899, -/* 003E */ 0xEA40, 0xEAA4, 0x1956, -/*-------------------------------------------------------*/ -/* Offset=0x00D1 Start of MappingTable */ - -/* 0000 */ 0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A, 0xFF1B, -/* 0008 */ 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, 0xFF3E, -/* 0010 */ 0xFFE3, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD, -/* 0018 */ 0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F, 0x005C, -/* 0020 */ 0x301C, 0x2016, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C, -/* 0028 */ 0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, -/* 0030 */ 0xFF5D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0038 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFF0B, 0x2212, 0x00B1, 0x00D7, 0xFFFD, -/* 0040 */ 0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E, -/* 0048 */ 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFFE5, -/* 0050 */ 0xFF04, 0x00A2, 0x00A3, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, -/* 0058 */ 0x00A7, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, -/* 0060 */ 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B, 0x3012, -/* 0068 */ 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x2208, 0x220B, 0x2286, -/* 0070 */ 0x2287, 0x2282, 0x2283, 0x222A, 0x2229, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2227, 0x2228, 0x00AC, -/* 0080 */ 0x21D2, 0x21D4, 0x2200, 0x2203, 0x2220, 0x22A5, 0x2312, 0x2202, -/* 0088 */ 0x2207, 0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, -/* 0090 */ 0x2235, 0x222B, 0x222C, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020, -/* 00A0 */ 0x2021, 0x00B6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x25EF, 0x2500, -/* 00A8 */ 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, -/* 00B0 */ 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, -/* 00B8 */ 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, 0x252F, 0x2528, -/* 00C0 */ 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, 0x2542, 0x4E9C, -/* 00C8 */ 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6, 0x9022, -/* 00D0 */ 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED, 0x8466, -/* 00D8 */ 0x82A6, 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B, 0x59D0, -/* 00E0 */ 0x867B, 0x98F4, 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F, 0x88B7, -/* 00E8 */ 0x5B89, 0x5EB5, 0x6309, 0x6697, 0x6848, 0x95C7, 0x978D, 0x674F, -/* 00F0 */ 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D, 0x5049, 0x56F2, 0x5937, 0x59D4, -/* 00F8 */ 0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170, 0x6613, 0x6905, 0x70BA, -/* 0100 */ 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3, 0x840E, 0x8863, -/* 0108 */ 0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF, 0x80B2, -/* 0110 */ 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32, 0x8328, -/* 0118 */ 0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0, 0x59FB, -/* 0120 */ 0x5F15, 0x98F2, 0x6DEB, 0x80E4, 0x852D, 0x9662, 0x9670, 0x96A0, -/* 0128 */ 0x97FB, 0x540B, 0x53F3, 0x5B87, 0x70CF, 0x7FBD, 0x8FC2, 0x96E8, -/* 0130 */ 0x536F, 0x9D5C, 0x7ABA, 0x4E11, 0x7893, 0x81FC, 0x6E26, 0x5618, -/* 0138 */ 0x5504, 0x6B1D, 0x851A, 0x9C3B, 0x59E5, 0x53A9, 0x6D66, 0x74DC, -/* 0140 */ 0x958F, 0x5642, 0x4E91, 0x904B, 0x96F2, 0x834F, 0x990C, 0x53E1, -/* 0148 */ 0x55B6, 0x5B30, 0x5F71, 0x6620, 0x66F3, 0x6804, 0x6C38, 0x6CF3, -/* 0150 */ 0x6D29, 0x745B, 0x76C8, 0x7A4E, 0x9834, 0x82F1, 0x885B, 0x8A60, -/* 0158 */ 0x92ED, 0x6DB2, 0x75AB, 0x76CA, 0x99C5, 0x60A6, 0x8B01, 0x8D8A, -/* 0160 */ 0x95B2, 0x698E, 0x53AD, 0x5186, 0xFFFD, 0x5712, 0x5830, 0x5944, -/* 0168 */ 0x5BB4, 0x5EF6, 0x6028, 0x63A9, 0x63F4, 0x6CBF, 0x6F14, 0x708E, -/* 0170 */ 0x7114, 0x7159, 0x71D5, 0x733F, 0x7E01, 0x8276, 0x82D1, 0x8597, -/* 0178 */ 0x9060, 0x925B, 0x9D1B, 0x5869, 0x65BC, 0x6C5A, 0x7525, 0x51F9, -/* 0180 */ 0x592E, 0x5965, 0x5F80, 0x5FDC, 0x62BC, 0x65FA, 0x6A2A, 0x6B27, -/* 0188 */ 0x6BB4, 0x738B, 0x7FC1, 0x8956, 0x9D2C, 0x9D0E, 0x9EC4, 0x5CA1, -/* 0190 */ 0x6C96, 0x837B, 0x5104, 0x5C4B, 0x61B6, 0x81C6, 0x6876, 0x7261, -/* 0198 */ 0x4E59, 0x4FFA, 0x5378, 0x6069, 0x6E29, 0x7A4F, 0x97F3, 0x4E0B, -/* 01A0 */ 0x5316, 0x4EEE, 0x4F55, 0x4F3D, 0x4FA1, 0x4F73, 0x52A0, 0x53EF, -/* 01A8 */ 0x5609, 0x590F, 0x5AC1, 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, -/* 01B0 */ 0x67B6, 0x6B4C, 0x6CB3, 0x706B, 0x73C2, 0x798D, 0x79BE, 0x7A3C, -/* 01B8 */ 0x7B87, 0x82B1, 0x82DB, 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, -/* 01C0 */ 0x8AB2, 0x5629, 0x8CA8, 0x8FE6, 0x904E, 0x971E, 0x868A, 0x4FC4, -/* 01C8 */ 0x5CE8, 0x6211, 0x7259, 0x753B, 0x81E5, 0x82BD, 0x86FE, 0x8CC0, -/* 01D0 */ 0x96C5, 0x9913, 0x99D5, 0x4ECB, 0x4F1A, 0x89E3, 0x56DE, 0x584A, -/* 01D8 */ 0x58CA, 0x5EFB, 0x5FEB, 0x602A, 0x6094, 0x6062, 0x61D0, 0x6212, -/* 01E0 */ 0x62D0, 0x6539, 0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, -/* 01E8 */ 0x7686, 0x7D75, 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, -/* 01F0 */ 0x52BE, 0x5916, 0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, -/* 01F8 */ 0x788D, 0x84CB, 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, -/* 0200 */ 0x86D9, 0x57A3, 0x67FF, 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, -/* 0208 */ 0x5ED3, 0x62E1, 0x64B9, 0x683C, 0x6838, 0x6BBB, 0x7372, 0x78BA, -/* 0210 */ 0x7A6B, 0x899A, 0x89D2, 0x8D6B, 0x8F03, 0x90ED, 0x95A3, 0x9694, -/* 0218 */ 0x9769, 0x5B66, 0x5CB3, 0x697D, 0x984D, 0x984E, 0x639B, 0x7B20, -/* 0220 */ 0x6A2B, 0xFFFD, 0x6A7F, 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, -/* 0228 */ 0x6070, 0x62EC, 0x6D3B, 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, -/* 0230 */ 0x4E14, 0x9C39, 0x53F6, 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, -/* 0238 */ 0x7AC3, 0x84B2, 0x91DC, 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, -/* 0240 */ 0x8431, 0x7CA5, 0x5208, 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, -/* 0248 */ 0x5BD2, 0x520A, 0x52D8, 0x52E7, 0x5DFB, 0x559A, 0x582A, 0x59E6, -/* 0250 */ 0x5B8C, 0x5B98, 0x5BDB, 0x5E72, 0x5E79, 0x60A3, 0x611F, 0x6163, -/* 0258 */ 0x61BE, 0x63DB, 0x6562, 0x67D1, 0x6853, 0x68FA, 0x6B3E, 0x6B53, -/* 0260 */ 0x6C57, 0x6F22, 0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3, 0x770B, -/* 0268 */ 0x7AFF, 0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266, -/* 0270 */ 0x839E, 0x89B3, 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, -/* 0278 */ 0x95A2, 0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, -/* 0280 */ 0x5DCC, 0x73A9, 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, -/* 0288 */ 0x9811, 0x9854, 0x9858, 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, -/* 0290 */ 0x57FA, 0x5947, 0x5B09, 0x5BC4, 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, -/* 0298 */ 0x63EE, 0x673A, 0x65D7, 0x65E2, 0x671F, 0x68CB, 0x68C4, 0x6A5F, -/* 02A0 */ 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948, 0x5B63, 0x7A00, -/* 02A8 */ 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC, 0x8F1D, -/* 02B0 */ 0x98E2, 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993, 0x5B9C, -/* 02B8 */ 0x622F, 0x6280, 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947, 0x7FA9, -/* 02C0 */ 0x87FB, 0x8ABC, 0x8B70, 0x63AC, 0x83CA, 0x97A0, 0x5409, 0x5403, -/* 02C8 */ 0x55AB, 0x6854, 0x6A58, 0x8A70, 0x7827, 0x6775, 0x9ECD, 0x5374, -/* 02D0 */ 0x5BA2, 0x811A, 0x8650, 0x9006, 0x4E18, 0x4E45, 0x4EC7, 0x4F11, -/* 02D8 */ 0x53CA, 0x5438, 0x5BAE, 0x5F13, 0x6025, 0x6551, 0xFFFD, 0x673D, -/* 02E0 */ 0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76, 0x7AAE, 0x7B08, -/* 02E8 */ 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45, 0x5DE8, -/* 02F0 */ 0x62D2, 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8, -/* 02F8 */ 0x6F01, 0x79A6, 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC, 0x4F9B, 0x4FA0, -/* 0300 */ 0x50D1, 0x5147, 0x7AF6, 0x5171, 0x51F6, 0x5354, 0x5321, 0x537F, -/* 0308 */ 0x53EB, 0x55AC, 0x5883, 0x5CE1, 0x5F37, 0x5F4A, 0x602F, 0x6050, -/* 0310 */ 0x606D, 0x631F, 0x6559, 0x6A4B, 0x6CC1, 0x72C2, 0x72ED, 0x77EF, -/* 0318 */ 0x80F8, 0x8105, 0x8208, 0x854E, 0x90F7, 0x93E1, 0x97FF, 0x9957, -/* 0320 */ 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, 0x6681, 0x696D, 0x5C40, 0x66F2, -/* 0328 */ 0x6975, 0x7389, 0x6850, 0x7C81, 0x50C5, 0x52E4, 0x5747, 0x5DFE, -/* 0330 */ 0x9326, 0x65A4, 0x6B23, 0x6B3D, 0x7434, 0x7981, 0x79BD, 0x7B4B, -/* 0338 */ 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F, 0x8B39, 0x8FD1, 0x91D1, -/* 0340 */ 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5, 0x533A, 0x72D7, 0x7396, -/* 0348 */ 0x77E9, 0x82E6, 0x8EAF, 0x99C6, 0x99C8, 0x99D2, 0x5177, 0x611A, -/* 0350 */ 0x865E, 0x55B0, 0x7A7A, 0x5076, 0x5BD3, 0x9047, 0x9685, 0x4E32, -/* 0358 */ 0x6ADB, 0x91E7, 0x5C51, 0x5C48, 0x6398, 0x7A9F, 0x6C93, 0x9774, -/* 0360 */ 0x8F61, 0x7AAA, 0x718A, 0x9688, 0x7C82, 0x6817, 0x7E70, 0x6851, -/* 0368 */ 0x936C, 0x52F2, 0x541B, 0x85AB, 0x8A13, 0x7FA4, 0x8ECD, 0x90E1, -/* 0370 */ 0x5366, 0x8888, 0x7941, 0x4FC2, 0x50BE, 0x5211, 0x5144, 0x5553, -/* 0378 */ 0x572D, 0x73EA, 0x578B, 0x5951, 0x5F62, 0x5F84, 0x6075, 0x6176, -/* 0380 */ 0x6167, 0x61A9, 0x63B2, 0x643A, 0x656C, 0x666F, 0x6842, 0x6E13, -/* 0388 */ 0x7566, 0x7A3D, 0x7CFB, 0x7D4C, 0x7D99, 0x7E4B, 0x7F6B, 0x830E, -/* 0390 */ 0x834A, 0x86CD, 0x8A08, 0x8A63, 0x8B66, 0x8EFD, 0x981A, 0x9D8F, -/* 0398 */ 0x82B8, 0x8FCE, 0x9BE8, 0xFFFD, 0x5287, 0x621F, 0x6483, 0x6FC0, -/* 03A0 */ 0x9699, 0x6841, 0x5091, 0x6B20, 0x6C7A, 0x6F54, 0x7A74, 0x7D50, -/* 03A8 */ 0x8840, 0x8A23, 0x6708, 0x4EF6, 0x5039, 0x5026, 0x5065, 0x517C, -/* 03B0 */ 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805, 0x5ACC, 0x5EFA, 0x61B2, -/* 03B8 */ 0x61F8, 0x62F3, 0x6372, 0x691C, 0x6A29, 0x727D, 0x72AC, 0x732E, -/* 03C0 */ 0x7814, 0x786F, 0x7D79, 0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2, -/* 03C8 */ 0x8ED2, 0x9063, 0x9375, 0x967A, 0x9855, 0x9A13, 0x9E78, 0x5143, -/* 03D0 */ 0x539F, 0x53B3, 0x5E7B, 0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, -/* 03D8 */ 0x7D43, 0x8237, 0x8A00, 0x8AFA, 0x9650, 0x4E4E, 0x500B, 0x53E4, -/* 03E0 */ 0x547C, 0x56FA, 0x59D1, 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, -/* 03E8 */ 0x6545, 0x67AF, 0x6E56, 0x72D0, 0x7CCA, 0x88B4, 0x80A1, 0x80E1, -/* 03F0 */ 0x83F0, 0x864E, 0x8A87, 0x8DE8, 0x9237, 0x96C7, 0x9867, 0x9F13, -/* 03F8 */ 0x4E94, 0x4E92, 0x4F0D, 0x5348, 0x5449, 0x543E, 0x5A2F, 0x5F8C, -/* 0400 */ 0x5FA1, 0x609F, 0x68A7, 0x6A8E, 0x745A, 0x7881, 0x8A9E, 0x8AA4, -/* 0408 */ 0x8B77, 0x9190, 0x4E5E, 0x9BC9, 0x4EA4, 0x4F7C, 0x4FAF, 0x5019, -/* 0410 */ 0x5016, 0x5149, 0x516C, 0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, -/* 0418 */ 0x5411, 0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, -/* 0420 */ 0x5B8F, 0x5DE5, 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, -/* 0428 */ 0x5F18, 0x6052, 0x614C, 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, -/* 0430 */ 0x6643, 0x66F4, 0x676D, 0x6821, 0x6897, 0x69CB, 0x6C5F, 0x6D2A, -/* 0438 */ 0x6D69, 0x6E2F, 0x6E9D, 0x7532, 0x7687, 0x786C, 0x7A3F, 0x7CE0, -/* 0440 */ 0x7D05, 0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003, 0x80AF, 0x80B1, -/* 0448 */ 0x8154, 0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B, 0x8CA2, -/* 0450 */ 0x8CFC, 0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D, -/* 0458 */ 0xFFFD, 0x9805, 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, -/* 0460 */ 0x5408, 0x58D5, 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, -/* 0468 */ 0x523B, 0x544A, 0x56FD, 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, -/* 0470 */ 0x6F09, 0x8170, 0x7511, 0x5FFD, 0x60DA, 0x9AA8, 0x72DB, 0x8FBC, -/* 0478 */ 0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764, 0x58BE, 0x5A5A, 0x6068, -/* 0480 */ 0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, 0x75D5, 0x7D3A, -/* 0488 */ 0x826E, 0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F, 0x5DE6, -/* 0490 */ 0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF, -/* 0498 */ 0x5750, 0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700, 0x54C9, -/* 04A0 */ 0x585E, 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D, 0x6B73, -/* 04A8 */ 0x6E08, 0x707D, 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D, 0x658E, -/* 04B0 */ 0x7D30, 0x83DC, 0x88C1, 0x8F09, 0x969B, 0x5264, 0x5728, 0x6750, -/* 04B8 */ 0x7F6A, 0x8CA1, 0x51B4, 0x5742, 0x962A, 0x583A, 0x698A, 0x80B4, -/* 04C0 */ 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, 0x4F5C, 0x524A, 0x548B, -/* 04C8 */ 0x643E, 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, 0x7D22, 0x932F, -/* 04D0 */ 0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237, 0x5BDF, 0x62F6, -/* 04D8 */ 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1, 0x7690, 0x9BD6, -/* 04E0 */ 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09, 0x5098, 0x53C2, -/* 04E8 */ 0x5C71, 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6, 0x73CA, 0x7523, -/* 04F0 */ 0x7B97, 0x7E82, 0x8695, 0x8B83, 0x8CDB, 0x9178, 0x9910, 0x65AC, -/* 04F8 */ 0x66AB, 0x6B8B, 0x4ED5, 0x4ED4, 0x4F3A, 0x4F7F, 0x523A, 0x53F8, -/* 0500 */ 0x53F2, 0x55E3, 0x56DB, 0x58EB, 0x59CB, 0x59C9, 0x59FF, 0x5B50, -/* 0508 */ 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D, 0x6307, 0x652F, 0x5B5C, -/* 0510 */ 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62, 0xFFFD, 0x6B7B, 0x6C0F, -/* 0518 */ 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2, 0x8102, -/* 0520 */ 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE, 0x8CC7, -/* 0528 */ 0x8CDC, 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D, 0x5150, -/* 0530 */ 0x5B57, 0x5BFA, 0x6148, 0x6301, 0x6642, 0x6B21, 0x6ECB, 0x6CBB, -/* 0538 */ 0x723E, 0x74BD, 0x75D4, 0x78C1, 0x793A, 0x800C, 0x8033, 0x81EA, -/* 0540 */ 0x8494, 0x8F9E, 0x6C50, 0x9E7F, 0x5F0F, 0x8B58, 0x9D2B, 0x7AFA, -/* 0548 */ 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1, 0x57F7, 0x5931, 0x5AC9, -/* 0550 */ 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE, 0x8CEA, 0x5B9F, 0x8500, -/* 0558 */ 0x7BE0, 0x5072, 0x67F4, 0x829D, 0x5C61, 0x854A, 0x7E1E, 0x820E, -/* 0560 */ 0x5199, 0x5C04, 0x6368, 0x8D66, 0x659C, 0x716E, 0x793E, 0x7D17, -/* 0568 */ 0x8005, 0x8B1D, 0x8ECA, 0x906E, 0x86C7, 0x90AA, 0x501F, 0x52FA, -/* 0570 */ 0x5C3A, 0x6753, 0x707C, 0x7235, 0x914C, 0x91C8, 0x932B, 0x82E5, -/* 0578 */ 0x5BC2, 0x5F31, 0x60F9, 0x4E3B, 0x53D6, 0x5B88, 0x624B, 0x6731, -/* 0580 */ 0x6B8A, 0x72E9, 0x73E0, 0x7A2E, 0x816B, 0x8DA3, 0x9152, 0x9996, -/* 0588 */ 0x5112, 0x53D7, 0x546A, 0x5BFF, 0x6388, 0x6A39, 0x7DAC, 0x9700, -/* 0590 */ 0x56DA, 0x53CE, 0x5468, 0x5B97, 0x5C31, 0x5DDE, 0x4FEE, 0x6101, -/* 0598 */ 0x62FE, 0x6D32, 0x79C0, 0x79CB, 0x7D42, 0x7E4D, 0x7FD2, 0x81ED, -/* 05A0 */ 0x821F, 0x8490, 0x8846, 0x8972, 0x8B90, 0x8E74, 0x8F2F, 0x9031, -/* 05A8 */ 0x914B, 0x916C, 0x96C6, 0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341, -/* 05B0 */ 0x5F93, 0x620E, 0x67D4, 0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, -/* 05B8 */ 0x9283, 0x53D4, 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, -/* 05C0 */ 0x587E, 0x719F, 0x51FA, 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, -/* 05C8 */ 0x77AC, 0x7AE3, 0x821C, 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, -/* 05D0 */ 0x6B89, 0x6DF3, 0xFFFD, 0x6E96, 0x6F64, 0x76FE, 0x7D14, 0x5DE1, -/* 05D8 */ 0x9075, 0x9187, 0x9806, 0x51E6, 0x521D, 0x6240, 0x6691, 0x66D9, -/* 05E0 */ 0x6E1A, 0x5EB6, 0x7DD2, 0x7F72, 0x66F8, 0x85AF, 0x85F7, 0x8AF8, -/* 05E8 */ 0x52A9, 0x53D9, 0x5973, 0x5E8F, 0x5F90, 0x6055, 0x92E4, 0x9664, -/* 05F0 */ 0x50B7, 0x511F, 0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, -/* 05F8 */ 0x5531, 0x5617, 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, -/* 0600 */ 0x5C11, 0x5C1A, 0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, -/* 0608 */ 0x62DB, 0x638C, 0x6377, 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, -/* 0610 */ 0x68A2, 0x6A1F, 0x6A35, 0x6CBC, 0x6D88, 0x6E09, 0x6E58, 0x713C, -/* 0618 */ 0x7126, 0x7167, 0x75C7, 0x7701, 0x785D, 0x7901, 0x7965, 0x79F0, -/* 0620 */ 0x7AE0, 0x7B11, 0x7CA7, 0x7D39, 0x8096, 0x83D6, 0x848B, 0x8549, -/* 0628 */ 0x885D, 0x88F3, 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, 0x8CDE, -/* 0630 */ 0x91A4, 0x9266, 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, -/* 0638 */ 0x4E1E, 0x4E57, 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, -/* 0640 */ 0x5E38, 0x60C5, 0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, -/* 0648 */ 0x7A63, 0x84B8, 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE, -/* 0650 */ 0x62ED, 0x690D, 0x6B96, 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6, -/* 0658 */ 0x98DF, 0x8755, 0x8FB1, 0x5C3B, 0x4F38, 0x4FE1, 0x4FB5, 0x5507, -/* 0660 */ 0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E, 0x632F, 0x65B0, 0x664B, -/* 0668 */ 0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9, 0x771F, 0x795E, -/* 0670 */ 0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A, 0x8EAB, -/* 0678 */ 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875, -/* 0680 */ 0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663, -/* 0688 */ 0x976D, 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0xFFFD, -/* 0690 */ 0x9017, 0x5439, 0x5782, 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, -/* 0698 */ 0x7C8B, 0x7FE0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968F, -/* 06A0 */ 0x745E, 0x9AC4, 0x5D07, 0x5D69, 0x6570, 0x67A2, 0x8DA8, 0x96DB, -/* 06A8 */ 0x636E, 0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0, 0x88FE, 0x6F84, -/* 06B0 */ 0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4, 0x5236, -/* 06B8 */ 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574, 0x661F, -/* 06C0 */ 0x6674, 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F, 0x76DB, -/* 06C8 */ 0x7CBE, 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93, 0x8ACB, -/* 06D0 */ 0x901D, 0x9192, 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106, 0x96BB, -/* 06D8 */ 0x5E2D, 0x60DC, 0x621A, 0x65A5, 0x6614, 0x6790, 0x77F3, 0x7A4D, -/* 06E0 */ 0x7C4D, 0x7E3E, 0x810A, 0x8CAC, 0x8D64, 0x8DE1, 0x8E5F, 0x78A9, -/* 06E8 */ 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298, 0x8A2D, 0x7A83, 0x7BC0, -/* 06F0 */ 0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9, 0x5148, 0x5343, -/* 06F8 */ 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247, 0x64B0, -/* 0700 */ 0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C, 0x714E, -/* 0708 */ 0x717D, 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA, 0x7E4A, 0x7FA8, 0x817A, -/* 0710 */ 0x821B, 0x8239, 0x85A6, 0x8A6E, 0x8CCE, 0x8DF5, 0x9078, 0x9077, -/* 0718 */ 0x92AD, 0x9291, 0x9583, 0x9BAE, 0x524D, 0x5584, 0x6F38, 0x7136, -/* 0720 */ 0x5168, 0x7985, 0x7E55, 0x81B3, 0x7CCE, 0x564C, 0x5851, 0x5CA8, -/* 0728 */ 0x63AA, 0x66FE, 0x66FD, 0x695A, 0x72D9, 0x758F, 0x758E, 0x790E, -/* 0730 */ 0x7956, 0x79DF, 0x7C97, 0x7D20, 0x7D44, 0x8607, 0x8A34, 0x963B, -/* 0738 */ 0x9061, 0x9F20, 0x50E7, 0x5275, 0x53CC, 0x53E2, 0x5009, 0x55AA, -/* 0740 */ 0x58EE, 0x594F, 0x723D, 0x5B8B, 0x5C64, 0x531D, 0x60E3, 0x60F3, -/* 0748 */ 0x635C, 0x6383, 0x633F, 0x63BB, 0xFFFD, 0x64CD, 0x65E9, 0x66F9, -/* 0750 */ 0x5DE3, 0x69CD, 0x69FD, 0x6F15, 0x71E5, 0x4E89, 0x75E9, 0x76F8, -/* 0758 */ 0x7A93, 0x7CDF, 0x7DCF, 0x7D9C, 0x8061, 0x8349, 0x8358, 0x846C, -/* 0760 */ 0x84BC, 0x85FB, 0x88C5, 0x8D70, 0x9001, 0x906D, 0x9397, 0x971C, -/* 0768 */ 0x9A12, 0x50CF, 0x5897, 0x618E, 0x81D3, 0x8535, 0x8D08, 0x9020, -/* 0770 */ 0x4FC3, 0x5074, 0x5247, 0x5373, 0x606F, 0x6349, 0x675F, 0x6E2C, -/* 0778 */ 0x8DB3, 0x901F, 0x4FD7, 0x5C5E, 0x8CCA, 0x65CF, 0x7D9A, 0x5352, -/* 0780 */ 0x8896, 0x5176, 0x63C3, 0x5B58, 0x5B6B, 0x5C0A, 0x640D, 0x6751, -/* 0788 */ 0x905C, 0x4ED6, 0x591A, 0x592A, 0x6C70, 0x8A51, 0x553E, 0x5815, -/* 0790 */ 0x59A5, 0x60F0, 0x6253, 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, -/* 0798 */ 0x9A28, 0x4F53, 0x5806, 0x5BFE, 0x8010, 0x5CB1, 0x5E2F, 0x5F85, -/* 07A0 */ 0x6020, 0x614B, 0x6234, 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, -/* 07A8 */ 0x82D4, 0x888B, 0x8CB8, 0x9000, 0x902E, 0x968A, 0x9EDB, 0x9BDB, -/* 07B0 */ 0x4EE3, 0x53F0, 0x5927, 0x7B2C, 0x918D, 0x984C, 0x9DF9, 0x6EDD, -/* 07B8 */ 0x7027, 0x5353, 0x5544, 0x5B85, 0x6258, 0x629E, 0x62D3, 0x6CA2, -/* 07C0 */ 0x6FEF, 0x7422, 0x8A17, 0x9438, 0x6FC1, 0x8AFE, 0x8338, 0x51E7, -/* 07C8 */ 0x86F8, 0x53EA, 0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, 0x8131, -/* 07D0 */ 0x5DFD, 0x7AEA, 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, -/* 07D8 */ 0x8AB0, 0x4E39, 0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, -/* 07E0 */ 0x6B4E, 0x6DE1, 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, -/* 07E8 */ 0x803D, 0x80C6, 0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, -/* 07F0 */ 0x65AD, 0x6696, 0x6A80, 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, -/* 07F8 */ 0x5730, 0x5F1B, 0x6065, 0x667A, 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, -/* 0800 */ 0x81F4, 0x8718, 0x9045, 0x99B3, 0x7BC9, 0x755C, 0x7AF9, 0x7B51, -/* 0808 */ 0x84C4, 0xFFFD, 0x9010, 0x79E9, 0x7A92, 0x8336, 0x5AE1, 0x7740, -/* 0810 */ 0x4E2D, 0x4EF2, 0x5B99, 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, -/* 0818 */ 0x866B, 0x8877, 0x8A3B, 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, -/* 0820 */ 0x732A, 0x82E7, 0x8457, 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, -/* 0828 */ 0x5BF5, 0x5E16, 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, -/* 0830 */ 0x61F2, 0x6311, 0x66A2, 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, -/* 0838 */ 0x8074, 0x8139, 0x8178, 0x8776, 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, -/* 0840 */ 0x929A, 0x9577, 0x9802, 0x9CE5, 0x52C5, 0x6357, 0x76F4, 0x6715, -/* 0848 */ 0x6C88, 0x73CD, 0x8CC3, 0x93AE, 0x9673, 0x6D25, 0x589C, 0x690E, -/* 0850 */ 0x69CC, 0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802, 0x63B4, -/* 0858 */ 0x69FB, 0x4F43, 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354, -/* 0860 */ 0x693F, 0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, -/* 0868 */ 0x91E3, 0x9DB4, 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, -/* 0870 */ 0x5448, 0x5824, 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, -/* 0878 */ 0x608C, 0x62B5, 0x633A, 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, -/* 0880 */ 0x7A0B, 0x7DE0, 0x8247, 0x8A02, 0x8AE6, 0x8E44, 0x9013, 0x90B8, -/* 0888 */ 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458, 0x64E2, 0x6575, 0x6EF4, -/* 0890 */ 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2, 0x5FB9, 0x64A4, -/* 0898 */ 0x8F4D, 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55, 0x5E97, -/* 08A0 */ 0x6DFB, 0x7E8F, 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9, 0x4F1D, -/* 08A8 */ 0x6BBF, 0x6FB1, 0x7530, 0x96FB, 0x514E, 0x5410, 0x5835, 0x5857, -/* 08B0 */ 0x59AC, 0x5C60, 0x5F92, 0x6597, 0x675C, 0x6E21, 0x767B, 0x83DF, -/* 08B8 */ 0x8CED, 0x9014, 0x90FD, 0x934D, 0x7825, 0x783A, 0x52AA, 0x5EA6, -/* 08C0 */ 0x571F, 0x5974, 0x6012, 0x5012, 0x515A, 0x51AC, 0xFFFD, 0x51CD, -/* 08C8 */ 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5B95, 0x5CF6, 0x5D8B, -/* 08D0 */ 0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC, 0x68DF, 0x76D7, -/* 08D8 */ 0x6DD8, 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8, 0x7977, -/* 08E0 */ 0x7B49, 0x7B54, 0x7B52, 0x7CD6, 0x7D71, 0x5230, 0x8463, 0x8569, -/* 08E8 */ 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F, 0x9003, 0x900F, 0x9419, -/* 08F0 */ 0x9676, 0x982D, 0x9A30, 0x95D8, 0x50CD, 0x52D5, 0x540C, 0x5802, -/* 08F8 */ 0x5C0E, 0x61A7, 0x649E, 0x6D1E, 0x77B3, 0x7AE5, 0x80F4, 0x8404, -/* 0900 */ 0x9053, 0x9285, 0x5CE0, 0x9D07, 0x533F, 0x5F97, 0x5FB3, 0x6D9C, -/* 0908 */ 0x7279, 0x7763, 0x79BF, 0x7BE4, 0x6BD2, 0x72EC, 0x8AAD, 0x6803, -/* 0910 */ 0x6A61, 0x51F8, 0x7A81, 0x6934, 0x5C4A, 0x9CF6, 0x82EB, 0x5BC5, -/* 0918 */ 0x9149, 0x701E, 0x5678, 0x5C6F, 0x60C7, 0x6566, 0x6C8C, 0x8C5A, -/* 0920 */ 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D, 0x5948, 0x90A3, 0x5185, -/* 0928 */ 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058, 0x637A, 0x934B, 0x6962, -/* 0930 */ 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960, 0x8EDF, 0x96E3, 0x6C5D, -/* 0938 */ 0x4E8C, 0x5C3C, 0x5F10, 0x8FE9, 0x5302, 0x8CD1, 0x8089, 0x8679, -/* 0940 */ 0x5EFF, 0x65E5, 0x4E73, 0x5165, 0x5982, 0x5C3F, 0x97EE, 0x4EFB, -/* 0948 */ 0x598A, 0x5FCD, 0x8A8D, 0x6FE1, 0x79B0, 0x7962, 0x5BE7, 0x8471, -/* 0950 */ 0x732B, 0x71B1, 0x5E74, 0x5FF5, 0x637B, 0x649A, 0x71C3, 0x7C98, -/* 0958 */ 0x4E43, 0x5EFC, 0x4E4B, 0x57DC, 0x56A2, 0x60A9, 0x6FC3, 0x7D0D, -/* 0960 */ 0x80FD, 0x8133, 0x81BF, 0x8FB2, 0x8997, 0x86A4, 0x5DF4, 0x628A, -/* 0968 */ 0x64AD, 0x8987, 0x6777, 0x6CE2, 0x6D3E, 0x7436, 0x7834, 0x5A46, -/* 0970 */ 0x7F75, 0x82AD, 0x99AC, 0x4FF3, 0x5EC3, 0x62DD, 0x6392, 0x6557, -/* 0978 */ 0x676F, 0x76C3, 0x724C, 0x80CC, 0x80BA, 0x8F29, 0x914D, 0x500D, -/* 0980 */ 0x57F9, 0x5A92, 0x6885, 0xFFFD, 0x6973, 0x7164, 0x72FD, 0x8CB7, -/* 0988 */ 0x58F2, 0x8CE0, 0x966A, 0x9019, 0x877F, 0x79E4, 0x77E7, 0x8429, -/* 0990 */ 0x4F2F, 0x5265, 0x535A, 0x62CD, 0x67CF, 0x6CCA, 0x767D, 0x7B94, -/* 0998 */ 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD, 0x6F20, 0x7206, 0x7E1B, -/* 09A0 */ 0x83AB, 0x99C1, 0x9EA6, 0x51FD, 0x7BB1, 0x7872, 0x7BB8, 0x8087, -/* 09A8 */ 0x7B48, 0x6AE8, 0x5E61, 0x808C, 0x7551, 0x7560, 0x516B, 0x9262, -/* 09B0 */ 0x6E8C, 0x767A, 0x9197, 0x9AEA, 0x4F10, 0x7F70, 0x629C, 0x7B4F, -/* 09B8 */ 0x95A5, 0x9CE9, 0x567A, 0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, -/* 09C0 */ 0x534A, 0x53CD, 0x53DB, 0x5E06, 0x642C, 0x6591, 0x677F, 0x6C3E, -/* 09C8 */ 0x6C4E, 0x7248, 0x72AF, 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, -/* 09D0 */ 0x8CA9, 0x7BC4, 0x91C6, 0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, -/* 09D8 */ 0x756A, 0x76E4, 0x78D0, 0x8543, 0x86EE, 0x532A, 0x5351, 0x5426, -/* 09E0 */ 0x5983, 0x5E87, 0x5F7C, 0x60B2, 0x6249, 0x6279, 0x62AB, 0x6590, -/* 09E8 */ 0x6BD4, 0x6CCC, 0x75B2, 0x76AE, 0x7891, 0x79D8, 0x7DCB, 0x7F77, -/* 09F0 */ 0x80A5, 0x88AB, 0x8AB9, 0x8CBB, 0x907F, 0x975E, 0x98DB, 0x6A0B, -/* 09F8 */ 0x7C38, 0x5099, 0x5C3E, 0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709, -/* 0A00 */ 0x7F8E, 0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, -/* 0A08 */ 0x819D, 0x83F1, 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, -/* 0A10 */ 0x6867, 0x59EB, 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, -/* 0A18 */ 0x6A19, 0x6C37, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79, -/* 0A20 */ 0x5EDF, 0x63CF, 0x75C5, 0x79D2, 0x82D7, 0x9328, 0x92F2, 0x849C, -/* 0A28 */ 0x86ED, 0x9C2D, 0x54C1, 0x5F6C, 0x658C, 0x6D5C, 0x7015, 0x8CA7, -/* 0A30 */ 0x8CD3, 0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8, 0x57E0, 0x592B, -/* 0A38 */ 0x5A66, 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, 0x6577, -/* 0A40 */ 0xFFFD, 0x65A7, 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, -/* 0A48 */ 0x8299, 0x8B5C, 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, -/* 0A50 */ 0x64AB, 0x6B66, 0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, -/* 0A58 */ 0x98A8, 0x847A, 0x8557, 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D, -/* 0A60 */ 0x798F, 0x8179, 0x8907, 0x8986, 0x6DF5, 0x5F17, 0x6255, 0x6CB8, -/* 0A68 */ 0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B, 0x5674, 0x58B3, 0x61A4, -/* 0A70 */ 0x626E, 0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B, 0x96F0, 0x6587, -/* 0A78 */ 0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73, 0x5F0A, -/* 0A80 */ 0x67C4, 0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801, 0x50FB, -/* 0A88 */ 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86, 0x504F, -/* 0A90 */ 0x5909, 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D, 0x4FBF, -/* 0A98 */ 0x52C9, 0x5A29, 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA, 0x5703, -/* 0AA0 */ 0x6355, 0x6B69, 0x752B, 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893, -/* 0AA8 */ 0x6155, 0x620A, 0x66AE, 0x6BCD, 0x7C3F, 0x83E9, 0x5023, 0x4FF8, -/* 0AB0 */ 0x5305, 0x5446, 0x5831, 0x5949, 0x5B9D, 0x5CF0, 0x5CEF, 0x5D29, -/* 0AB8 */ 0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B, 0x6CD5, 0x6CE1, -/* 0AC0 */ 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C, 0x84EC, 0x8702, -/* 0AC8 */ 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD, 0x9CF3, 0x9D6C, -/* 0AD0 */ 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8, 0x5E3D, 0x5FD8, -/* 0AD8 */ 0x5FD9, 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2, 0x5192, 0x7D21, -/* 0AE0 */ 0x80AA, 0x81A8, 0x8B00, 0x8C8C, 0x8CBF, 0x927E, 0x9632, 0x5420, -/* 0AE8 */ 0x982C, 0x5317, 0x50D5, 0x535C, 0x58A8, 0x64B2, 0x6734, 0x7267, -/* 0AF0 */ 0x7766, 0x7A46, 0x91E6, 0x52C3, 0x6CA1, 0x6B86, 0x5800, 0x5E4C, -/* 0AF8 */ 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6, 0xFFFD, 0x6469, 0x78E8, -/* 0B00 */ 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE, 0x54E9, -/* 0B08 */ 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52, 0x685D, -/* 0B10 */ 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4, 0x4FAD, -/* 0B18 */ 0x7E6D, 0x9EBF, 0x4E07, 0x6162, 0x6E80, 0x6F2B, 0x8513, 0x5473, -/* 0B20 */ 0x672A, 0x9B45, 0x5DF3, 0x7B95, 0x5CAC, 0x5BC6, 0x871C, 0x6E4A, -/* 0B28 */ 0x84D1, 0x7A14, 0x8108, 0x5999, 0x7C8D, 0x6C11, 0x7720, 0x52D9, -/* 0B30 */ 0x5922, 0x7121, 0x725F, 0x77DB, 0x9727, 0x9D61, 0x690B, 0x5A7F, -/* 0B38 */ 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E, 0x76DF, 0x8FF7, 0x9298, -/* 0B40 */ 0x9CF4, 0x59EA, 0x725D, 0x6EC5, 0x514D, 0x68C9, 0x7DBF, 0x7DEC, -/* 0B48 */ 0x9762, 0x9EBA, 0x6478, 0x6A21, 0x8302, 0x5984, 0x5B5F, 0x6BDB, -/* 0B50 */ 0x731B, 0x76F2, 0x7DB2, 0x8017, 0x8499, 0x5132, 0x6728, 0x9ED9, -/* 0B58 */ 0x76EE, 0x6762, 0x52FF, 0x9905, 0x5C24, 0x623B, 0x7C7E, 0x8CB0, -/* 0B60 */ 0x554F, 0x60B6, 0x7D0B, 0x9580, 0x5301, 0x4E5F, 0x51B6, 0x591C, -/* 0B68 */ 0x723A, 0x8036, 0x91CE, 0x5F25, 0x77E2, 0x5384, 0x5F79, 0x7D04, -/* 0B70 */ 0x85AC, 0x8A33, 0x8E8D, 0x9756, 0x67F3, 0x85AE, 0x9453, 0x6109, -/* 0B78 */ 0x6108, 0x6CB9, 0x7652, 0x8AED, 0x8F38, 0x552F, 0x4F51, 0x512A, -/* 0B80 */ 0x52C7, 0x53CB, 0x5BA5, 0x5E7D, 0x60A0, 0x6182, 0x63D6, 0x6709, -/* 0B88 */ 0x67DA, 0x6E67, 0x6D8C, 0x7336, 0x7337, 0x7531, 0x7950, 0x88D5, -/* 0B90 */ 0x8A98, 0x904A, 0x9091, 0x90F5, 0x96C4, 0x878D, 0x5915, 0x4E88, -/* 0B98 */ 0x4F59, 0x4E0E, 0x8A89, 0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996, -/* 0BA0 */ 0x5BB9, 0x5EB8, 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, -/* 0BA8 */ 0x6D0B, 0x6EB6, 0x7194, 0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, -/* 0BB0 */ 0x84C9, 0x8981, 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, -/* 0BB8 */ 0x6291, 0x6B32, 0xFFFD, 0x6C83, 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, -/* 0BC0 */ 0x7F85, 0x87BA, 0x88F8, 0x6765, 0x83B1, 0x983C, 0x96F7, 0x6D1B, -/* 0BC8 */ 0x7D61, 0x843D, 0x916A, 0x4E71, 0x5375, 0x5D50, 0x6B04, 0x6FEB, -/* 0BD0 */ 0x85CD, 0x862D, 0x89A7, 0x5229, 0x540F, 0x5C65, 0x674E, 0x68A8, -/* 0BD8 */ 0x7406, 0x7483, 0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, -/* 0BE0 */ 0x5F8B, 0x7387, 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, -/* 0BE8 */ 0x6E9C, 0x7409, 0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, -/* 0BF0 */ 0x4FB6, 0x616E, 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, -/* 0BF8 */ 0x51CC, 0x5BEE, 0x6599, 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, -/* 0C00 */ 0x7A1C, 0x7CE7, 0x826F, 0x8AD2, 0x907C, 0x91CF, 0x9675, 0x9818, -/* 0C08 */ 0x529B, 0x7DD1, 0x502B, 0x5398, 0x6797, 0x6DCB, 0x71D0, 0x7433, -/* 0C10 */ 0x81E8, 0x8F2A, 0x96A3, 0x9C57, 0x9E9F, 0x7460, 0x5841, 0x6D99, -/* 0C18 */ 0x7D2F, 0x985E, 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, 0x5DBA, -/* 0C20 */ 0x601C, 0x73B2, 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, -/* 0C28 */ 0x9E97, 0x9F62, 0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, -/* 0C30 */ 0x5EC9, 0x604B, 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F, -/* 0C38 */ 0x84EE, 0x9023, 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2, -/* 0C40 */ 0x8DEF, 0x9732, 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C, -/* 0C48 */ 0x6994, 0x6D6A, 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001, 0x807E, -/* 0C50 */ 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, 0x808B, 0x9332, 0x8AD6, -/* 0C58 */ 0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, 0x60D1, 0x67A0, -/* 0C60 */ 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568, 0x6900, -/* 0C68 */ 0x6E7E, 0x7897, 0x8155, 0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, -/* 0C70 */ 0x4E36, 0x4E3C, 0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, -/* 0C78 */ 0x8C6B, 0x4E8A, 0x8212, 0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, -/* 0C80 */ 0x4EA2, 0x4EB0, 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, -/* 0C88 */ 0x4EC2, 0x4ED7, 0x4EDE, 0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, -/* 0C90 */ 0x4F30, 0x4F5B, 0x4F5D, 0x4F57, 0x4F47, 0x4F76, 0x4F88, 0x4F8F, -/* 0C98 */ 0x4F98, 0x4F7B, 0x4F69, 0x4F70, 0x4F91, 0x4F6F, 0x4F86, 0x4F96, -/* 0CA0 */ 0x5118, 0x4FD4, 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB, 0x4FD1, 0x4FDA, -/* 0CA8 */ 0x4FD0, 0x4FE4, 0x4FE5, 0x501A, 0x5028, 0x5014, 0x502A, 0x5025, -/* 0CB0 */ 0x5005, 0x4F1C, 0x4FF6, 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, -/* 0CB8 */ 0x5011, 0x5006, 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, -/* 0CC0 */ 0x505A, 0x5056, 0x506C, 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, -/* 0CC8 */ 0x50B2, 0x50C9, 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, -/* 0CD0 */ 0x50ED, 0x50E3, 0x50EE, 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, -/* 0CD8 */ 0x5116, 0x5115, 0x5114, 0x511A, 0x5121, 0x513A, 0x5137, 0x513C, -/* 0CE0 */ 0x513B, 0x513F, 0x5140, 0x5152, 0x514C, 0x5154, 0x5162, 0x7AF8, -/* 0CE8 */ 0x5169, 0x516A, 0x516E, 0x5180, 0x5182, 0x56D8, 0x518C, 0x5189, -/* 0CF0 */ 0x518F, 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, 0x51A2, -/* 0CF8 */ 0x51A9, 0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5, -/* 0D00 */ 0x51BD, 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, -/* 0D08 */ 0xFFFD, 0x51F0, 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, -/* 0D10 */ 0x5227, 0x522A, 0x522E, 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, -/* 0D18 */ 0x524C, 0x525E, 0x5254, 0x526A, 0x5274, 0x5269, 0x5273, 0x527F, -/* 0D20 */ 0x527D, 0x528D, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8FA8, -/* 0D28 */ 0x8FA7, 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, 0x52CD, 0x52D7, -/* 0D30 */ 0x52DE, 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, 0x52F8, -/* 0D38 */ 0x52F9, 0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315, -/* 0D40 */ 0x531A, 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, -/* 0D48 */ 0x5345, 0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E, -/* 0D50 */ 0x5918, 0x537B, 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5, -/* 0D58 */ 0x53AE, 0x53B0, 0x53B6, 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC, -/* 0D60 */ 0x71EE, 0x53EE, 0x53E8, 0x53ED, 0x53FA, 0x5401, 0x543D, 0x5440, -/* 0D68 */ 0x542C, 0x542D, 0x543C, 0x542E, 0x5436, 0x5429, 0x541D, 0x544E, -/* 0D70 */ 0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, 0x5470, 0x5492, -/* 0D78 */ 0x547B, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, 0x54A2, -/* 0D80 */ 0x54B8, 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8, 0x54AB, 0x54C2, -/* 0D88 */ 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6, 0x550F, 0x5514, -/* 0D90 */ 0x54FD, 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539, 0x5540, 0x5563, -/* 0D98 */ 0x554C, 0x552E, 0x555C, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, -/* 0DA0 */ 0x555D, 0x5599, 0x5580, 0x54AF, 0x558A, 0x559F, 0x557B, 0x557E, -/* 0DA8 */ 0x5598, 0x559E, 0x55AE, 0x557C, 0x5583, 0x55A9, 0x5587, 0x55A8, -/* 0DB0 */ 0x55DA, 0x55C5, 0x55DF, 0x55C4, 0x55DC, 0x55E4, 0x55D4, 0x5614, -/* 0DB8 */ 0x55F7, 0x5616, 0x55FE, 0x55FD, 0x561B, 0x55F9, 0x564E, 0x5650, -/* 0DC0 */ 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638, 0xFFFD, 0x566B, 0x5664, -/* 0DC8 */ 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0, 0x5694, -/* 0DD0 */ 0x568F, 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC, 0x56C1, -/* 0DD8 */ 0x56C3, 0x56C0, 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7, 0x56EE, -/* 0DE0 */ 0x56F9, 0x5700, 0x56FF, 0x5704, 0x5709, 0x5708, 0x570B, 0x570D, -/* 0DE8 */ 0x5713, 0x5718, 0x5716, 0x55C7, 0x571C, 0x5726, 0x5737, 0x5738, -/* 0DF0 */ 0x574E, 0x573B, 0x5740, 0x574F, 0x5769, 0x57C0, 0x5788, 0x5761, -/* 0DF8 */ 0x577F, 0x5789, 0x5793, 0x57A0, 0x57B3, 0x57A4, 0x57AA, 0x57B0, -/* 0E00 */ 0x57C3, 0x57C6, 0x57D4, 0x57D2, 0x57D3, 0x580A, 0x57D6, 0x57E3, -/* 0E08 */ 0x580B, 0x5819, 0x581D, 0x5872, 0x5821, 0x5862, 0x584B, 0x5870, -/* 0E10 */ 0x6BC0, 0x5852, 0x583D, 0x5879, 0x5885, 0x58B9, 0x589F, 0x58AB, -/* 0E18 */ 0x58BA, 0x58DE, 0x58BB, 0x58B8, 0x58AE, 0x58C5, 0x58D3, 0x58D1, -/* 0E20 */ 0x58D7, 0x58D9, 0x58D8, 0x58E5, 0x58DC, 0x58E4, 0x58DF, 0x58EF, -/* 0E28 */ 0x58FA, 0x58F9, 0x58FB, 0x58FC, 0x58FD, 0x5902, 0x590A, 0x5910, -/* 0E30 */ 0x591B, 0x68A6, 0x5925, 0x592C, 0x592D, 0x5932, 0x5938, 0x593E, -/* 0E38 */ 0x7AD2, 0x5955, 0x5950, 0x594E, 0x595A, 0x5958, 0x5962, 0x5960, -/* 0E40 */ 0x5967, 0x596C, 0x5969, 0x5978, 0x5981, 0x599D, 0x4F5E, 0x4FAB, -/* 0E48 */ 0x59A3, 0x59B2, 0x59C6, 0x59E8, 0x59DC, 0x598D, 0x59D9, 0x59DA, -/* 0E50 */ 0x5A25, 0x5A1F, 0x5A11, 0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, -/* 0E58 */ 0x5A49, 0x5A35, 0x5A36, 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, -/* 0E60 */ 0x5ACB, 0x5AC2, 0x5ABD, 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, -/* 0E68 */ 0x5AFA, 0x5AFB, 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, -/* 0E70 */ 0x5B36, 0x5B3E, 0x5B43, 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, -/* 0E78 */ 0x5B5B, 0x5B65, 0x5B69, 0x5B70, 0x5B73, 0x5B75, 0x5B78, 0x6588, -/* 0E80 */ 0x5B7A, 0x5B80, 0xFFFD, 0x5B83, 0x5BA6, 0x5BB8, 0x5BC3, 0x5BC7, -/* 0E88 */ 0x5BC9, 0x5BD4, 0x5BD0, 0x5BE4, 0x5BE6, 0x5BE2, 0x5BDE, 0x5BE5, -/* 0E90 */ 0x5BEB, 0x5BF0, 0x5BF6, 0x5BF3, 0x5C05, 0x5C07, 0x5C08, 0x5C0D, -/* 0E98 */ 0x5C13, 0x5C20, 0x5C22, 0x5C28, 0x5C38, 0x5C39, 0x5C41, 0x5C46, -/* 0EA0 */ 0x5C4E, 0x5C53, 0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, -/* 0EA8 */ 0x5C76, 0x5C79, 0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, -/* 0EB0 */ 0x5CB6, 0x5CBC, 0x5CB7, 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, -/* 0EB8 */ 0x5CFD, 0x5CFA, 0x5CED, 0x5D8C, 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, -/* 0EC0 */ 0x5D5C, 0x5D1F, 0x5D1B, 0x5D11, 0x5D14, 0x5D22, 0x5D1A, 0x5D19, -/* 0EC8 */ 0x5D18, 0x5D4C, 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, 0x5D73, 0x5D76, -/* 0ED0 */ 0x5D87, 0x5D84, 0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, 0x5DBD, -/* 0ED8 */ 0x5D90, 0x5DB7, 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, -/* 0EE0 */ 0x5DDB, 0x5DEB, 0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, -/* 0EE8 */ 0x5E1B, 0x5E36, 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, -/* 0EF0 */ 0x5E54, 0x5E5F, 0x5E62, 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, -/* 0EF8 */ 0x9EBC, 0x5E7F, 0x5EA0, 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF, -/* 0F00 */ 0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA, 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8, -/* 0F08 */ 0x5EE9, 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0, 0x5EF4, 0x5EF8, 0x5EFE, -/* 0F10 */ 0x5F03, 0x5F09, 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, 0x5F16, 0x5F29, -/* 0F18 */ 0x5F2D, 0x5F38, 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, 0x5F51, -/* 0F20 */ 0x5F56, 0x5F57, 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83, -/* 0F28 */ 0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99, -/* 0F30 */ 0x5F98, 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4, -/* 0F38 */ 0x5FF8, 0x5FF1, 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060, 0xFFFD, -/* 0F40 */ 0x6019, 0x6010, 0x6029, 0x600E, 0x6031, 0x601B, 0x6015, 0x602B, -/* 0F48 */ 0x6026, 0x600F, 0x603A, 0x605A, 0x6041, 0x606A, 0x6077, 0x605F, -/* 0F50 */ 0x604A, 0x6046, 0x604D, 0x6063, 0x6043, 0x6064, 0x6042, 0x606C, -/* 0F58 */ 0x606B, 0x6059, 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A, 0x6084, -/* 0F60 */ 0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1, 0x60B8, -/* 0F68 */ 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5, 0x60D8, -/* 0F70 */ 0x614D, 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4, 0x60FA, -/* 0F78 */ 0x6103, 0x6121, 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147, 0x613E, -/* 0F80 */ 0x6128, 0x6127, 0x614A, 0x613F, 0x613C, 0x612C, 0x6134, 0x613D, -/* 0F88 */ 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615A, 0x616B, -/* 0F90 */ 0x6174, 0x616F, 0x6165, 0x6171, 0x615F, 0x615D, 0x6153, 0x6175, -/* 0F98 */ 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A, 0x618A, 0x6191, -/* 0FA0 */ 0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8, 0x61C3, -/* 0FA8 */ 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3, 0x61F6, -/* 0FB0 */ 0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200, 0x6208, -/* 0FB8 */ 0x6209, 0x620D, 0x620C, 0x6214, 0x621B, 0x621E, 0x6221, 0x622A, -/* 0FC0 */ 0x622E, 0x6230, 0x6232, 0x6233, 0x6241, 0x624E, 0x625E, 0x6263, -/* 0FC8 */ 0x625B, 0x6260, 0x6268, 0x627C, 0x6282, 0x6289, 0x627E, 0x6292, -/* 0FD0 */ 0x6293, 0x6296, 0x62D4, 0x6283, 0x6294, 0x62D7, 0x62D1, 0x62BB, -/* 0FD8 */ 0x62CF, 0x62FF, 0x62C6, 0x64D4, 0x62C8, 0x62DC, 0x62CC, 0x62CA, -/* 0FE0 */ 0x62C2, 0x62C7, 0x629B, 0x62C9, 0x630C, 0x62EE, 0x62F1, 0x6327, -/* 0FE8 */ 0x6302, 0x6308, 0x62EF, 0x62F5, 0x6350, 0x633E, 0x634D, 0x641C, -/* 0FF0 */ 0x634F, 0x6396, 0x638E, 0x6380, 0x63AB, 0x6376, 0x63A3, 0x638F, -/* 0FF8 */ 0x6389, 0x639F, 0x63B5, 0x636B, 0xFFFD, 0x6369, 0x63BE, 0x63E9, -/* 1000 */ 0x63C0, 0x63C6, 0x63E3, 0x63C9, 0x63D2, 0x63F6, 0x63C4, 0x6416, -/* 1008 */ 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651D, 0x6417, 0x6428, -/* 1010 */ 0x640F, 0x6467, 0x646F, 0x6476, 0x644E, 0x652A, 0x6495, 0x6493, -/* 1018 */ 0x64A5, 0x64A9, 0x6488, 0x64BC, 0x64DA, 0x64D2, 0x64C5, 0x64C7, -/* 1020 */ 0x64BB, 0x64D8, 0x64C2, 0x64F1, 0x64E7, 0x8209, 0x64E0, 0x64E1, -/* 1028 */ 0x62AC, 0x64E3, 0x64EF, 0x652C, 0x64F6, 0x64F4, 0x64F2, 0x64FA, -/* 1030 */ 0x6500, 0x64FD, 0x6518, 0x651C, 0x6505, 0x6524, 0x6523, 0x652B, -/* 1038 */ 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, 0x754B, 0x6548, 0x6556, -/* 1040 */ 0x6555, 0x654D, 0x6558, 0x655E, 0x655D, 0x6572, 0x6578, 0x6582, -/* 1048 */ 0x6583, 0x8B8A, 0x659B, 0x659F, 0x65AB, 0x65B7, 0x65C3, 0x65C6, -/* 1050 */ 0x65C1, 0x65C4, 0x65CC, 0x65D2, 0x65DB, 0x65D9, 0x65E0, 0x65E1, -/* 1058 */ 0x65F1, 0x6772, 0x660A, 0x6603, 0x65FB, 0x6773, 0x6635, 0x6636, -/* 1060 */ 0x6634, 0x661C, 0x664F, 0x6644, 0x6649, 0x6641, 0x665E, 0x665D, -/* 1068 */ 0x6664, 0x6667, 0x6668, 0x665F, 0x6662, 0x6670, 0x6683, 0x6688, -/* 1070 */ 0x668E, 0x6689, 0x6684, 0x6698, 0x669D, 0x66C1, 0x66B9, 0x66C9, -/* 1078 */ 0x66BE, 0x66BC, 0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, -/* 1080 */ 0x66E6, 0x66E9, 0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, -/* 1088 */ 0x6726, 0x6727, 0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, -/* 1090 */ 0x6737, 0x6746, 0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, -/* 1098 */ 0x6770, 0x67A9, 0x677C, 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, -/* 10A0 */ 0x6785, 0x67B7, 0x67EF, 0x67B4, 0x67EC, 0x67B3, 0x67E9, 0x67B8, -/* 10A8 */ 0x67E4, 0x67DE, 0x67DD, 0x67E2, 0x67EE, 0x67B9, 0x67CE, 0x67C6, -/* 10B0 */ 0x67E7, 0x6A9C, 0x681E, 0x6846, 0x6829, 0x6840, 0x684D, 0x6832, -/* 10B8 */ 0x684E, 0xFFFD, 0x68B3, 0x682B, 0x6859, 0x6863, 0x6877, 0x687F, -/* 10C0 */ 0x689F, 0x688F, 0x68AD, 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, -/* 10C8 */ 0x68B9, 0x6874, 0x68B5, 0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, -/* 10D0 */ 0x6901, 0x68CA, 0x6908, 0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, -/* 10D8 */ 0x68CD, 0x68D4, 0x68E7, 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, -/* 10E0 */ 0x68E3, 0x6925, 0x68F9, 0x68E0, 0x68EF, 0x6928, 0x692A, 0x691A, -/* 10E8 */ 0x6923, 0x6921, 0x68C6, 0x6979, 0x6977, 0x695C, 0x6978, 0x696B, -/* 10F0 */ 0x6954, 0x697E, 0x696E, 0x6939, 0x6974, 0x693D, 0x6959, 0x6930, -/* 10F8 */ 0x6961, 0x695E, 0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE, 0x69D0, -/* 1100 */ 0x69BF, 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD, -/* 1108 */ 0x69BB, 0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995, -/* 1110 */ 0x69B4, 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9, -/* 1118 */ 0x69F2, 0x69E7, 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, -/* 1120 */ 0x6A0A, 0x6A12, 0x6AC1, 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, -/* 1128 */ 0x6A36, 0x6A78, 0x6A47, 0x6A62, 0x6A59, 0x6A66, 0x6A48, 0x6A38, -/* 1130 */ 0x6A22, 0x6A90, 0x6A8D, 0x6AA0, 0x6A84, 0x6AA2, 0x6AA3, 0x6A97, -/* 1138 */ 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, 0x6AAC, 0x6ADE, -/* 1140 */ 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05, 0x8616, -/* 1148 */ 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37, 0x76DC, -/* 1150 */ 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59, 0x6B54, -/* 1158 */ 0x6B5B, 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F, 0x6B80, 0x6B84, -/* 1160 */ 0x6B83, 0x6B8D, 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, 0x6BAA, 0x6BAB, -/* 1168 */ 0x6BAF, 0x6BB2, 0x6BB1, 0x6BB3, 0x6BB7, 0x6BBC, 0x6BC6, 0x6BCB, -/* 1170 */ 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, 0x6BF3, 0x6BEF, 0xFFFD, 0x9EBE, -/* 1178 */ 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, 0x6C5E, 0x6C55, -/* 1180 */ 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B, 0x6C7E, -/* 1188 */ 0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD, -/* 1190 */ 0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE, 0x6CBA, 0x6CDB, -/* 1198 */ 0x6CEF, 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36, 0x6D2B, 0x6D3D, -/* 11A0 */ 0x6D38, 0x6D19, 0x6D35, 0x6D33, 0x6D12, 0x6D0C, 0x6D63, 0x6D93, -/* 11A8 */ 0x6D64, 0x6D5A, 0x6D79, 0x6D59, 0x6D8E, 0x6D95, 0x6FE4, 0x6D85, -/* 11B0 */ 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5, 0x6DC7, 0x6DE6, 0x6DB8, 0x6DC6, -/* 11B8 */ 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2, 0x6DC5, 0x6DFA, 0x6DD9, -/* 11C0 */ 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E, 0x6E2E, 0x6E19, -/* 11C8 */ 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B, 0x6E76, 0x6E4D, -/* 11D0 */ 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF, 0x6E1D, 0x6E38, -/* 11D8 */ 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3, 0x6EBD, 0x6EAF, -/* 11E0 */ 0x6EC4, 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5, 0x6EC2, 0x6E9F, -/* 11E8 */ 0x6F41, 0x6F11, 0x704C, 0x6EEC, 0x6EF8, 0x6EFE, 0x6F3F, 0x6EF2, -/* 11F0 */ 0x6F31, 0x6EEF, 0x6F32, 0x6ECC, 0x6F3E, 0x6F13, 0x6EF7, 0x6F86, -/* 11F8 */ 0x6F7A, 0x6F78, 0x6F81, 0x6F80, 0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, -/* 1200 */ 0x6F82, 0x6F7C, 0x6F58, 0x6F8E, 0x6F91, 0x6FC2, 0x6F66, 0x6FB3, -/* 1208 */ 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9, 0x6FC6, 0x6FAA, 0x6FDF, 0x6FD5, -/* 1210 */ 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1, 0x6FEE, 0x6FDB, 0x7009, 0x700B, -/* 1218 */ 0x6FFA, 0x7011, 0x7001, 0x700F, 0x6FFE, 0x701B, 0x701A, 0x6F74, -/* 1220 */ 0x701D, 0x7018, 0x701F, 0x7030, 0x703E, 0x7032, 0x7051, 0x7063, -/* 1228 */ 0x7099, 0x7092, 0x70AF, 0x70F1, 0x70AC, 0x70B8, 0x70B3, 0x70AE, -/* 1230 */ 0x70DF, 0x70CB, 0x70DD, 0xFFFD, 0x70D9, 0x7109, 0x70FD, 0x711C, -/* 1238 */ 0x7119, 0x7165, 0x7155, 0x7188, 0x7166, 0x7162, 0x714C, 0x7156, -/* 1240 */ 0x716C, 0x718F, 0x71FB, 0x7184, 0x7195, 0x71A8, 0x71AC, 0x71D7, -/* 1248 */ 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4, 0x71CE, 0x71E0, 0x71EC, -/* 1250 */ 0x71E7, 0x71F5, 0x71FC, 0x71F9, 0x71FF, 0x720D, 0x7210, 0x721B, -/* 1258 */ 0x7228, 0x722D, 0x722C, 0x7230, 0x7232, 0x723B, 0x723C, 0x723F, -/* 1260 */ 0x7240, 0x7246, 0x724B, 0x7258, 0x7274, 0x727E, 0x7282, 0x7281, -/* 1268 */ 0x7287, 0x7292, 0x7296, 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, -/* 1270 */ 0x72C6, 0x72C4, 0x72CE, 0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, -/* 1278 */ 0x72F7, 0x500F, 0x7317, 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, -/* 1280 */ 0x732F, 0x7329, 0x7325, 0x733E, 0x734E, 0x734F, 0x9ED8, 0x7357, -/* 1288 */ 0x736A, 0x7368, 0x7370, 0x7378, 0x7375, 0x737B, 0x737A, 0x73C8, -/* 1290 */ 0x73B3, 0x73CE, 0x73BB, 0x73C0, 0x73E5, 0x73EE, 0x73DE, 0x74A2, -/* 1298 */ 0x7405, 0x746F, 0x7425, 0x73F8, 0x7432, 0x743A, 0x7455, 0x743F, -/* 12A0 */ 0x745F, 0x7459, 0x7441, 0x745C, 0x7469, 0x7470, 0x7463, 0x746A, -/* 12A8 */ 0x7476, 0x747E, 0x748B, 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, -/* 12B0 */ 0x73F1, 0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, -/* 12B8 */ 0x74F1, 0x74F8, 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, -/* 12C0 */ 0x750D, 0x7515, 0x7513, 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, -/* 12C8 */ 0x754D, 0x754A, 0x7549, 0x755B, 0x7546, 0x755A, 0x7569, 0x7564, -/* 12D0 */ 0x7567, 0x756B, 0x756D, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, -/* 12D8 */ 0x758A, 0x7589, 0x7582, 0x7594, 0x759A, 0x759D, 0x75A5, 0x75A3, -/* 12E0 */ 0x75C2, 0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, 0x75B1, -/* 12E8 */ 0x75CD, 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF, -/* 12F0 */ 0xFFFD, 0x75FC, 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, -/* 12F8 */ 0x760D, 0x7609, 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, -/* 1300 */ 0x7634, 0x7630, 0x763B, 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, -/* 1308 */ 0x7661, 0x7662, 0x7668, 0x7669, 0x766A, 0x7667, 0x766C, 0x7670, -/* 1310 */ 0x7672, 0x7676, 0x7678, 0x767C, 0x7680, 0x7683, 0x7688, 0x768B, -/* 1318 */ 0x768E, 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, 0x76B4, 0x76B8, -/* 1320 */ 0x76B9, 0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, 0x76E1, -/* 1328 */ 0x76E5, 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704, -/* 1330 */ 0x7729, 0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738, -/* 1338 */ 0x7747, 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E, -/* 1340 */ 0x7779, 0x778E, 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6, -/* 1348 */ 0x77B9, 0x77BF, 0x77BC, 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7, -/* 1350 */ 0x77DA, 0x77DC, 0x77E3, 0x77EE, 0x77FC, 0x780C, 0x7812, 0x7926, -/* 1358 */ 0x7820, 0x792A, 0x7845, 0x788E, 0x7874, 0x7886, 0x787C, 0x789A, -/* 1360 */ 0x788C, 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, 0x78C6, 0x78CB, -/* 1368 */ 0x78D4, 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC, 0x78E7, 0x78DA, -/* 1370 */ 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919, 0x792C, 0x792B, -/* 1378 */ 0x7940, 0x7960, 0x7957, 0x795F, 0x795A, 0x7955, 0x7953, 0x797A, -/* 1380 */ 0x797F, 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA, 0x79AE, 0x79B3, -/* 1388 */ 0x79B9, 0x79BA, 0x79C9, 0x79D5, 0x79E7, 0x79EC, 0x79E1, 0x79E3, -/* 1390 */ 0x7A08, 0x7A0D, 0x7A18, 0x7A19, 0x7A20, 0x7A1F, 0x7980, 0x7A31, -/* 1398 */ 0x7A3B, 0x7A3E, 0x7A37, 0x7A43, 0x7A57, 0x7A49, 0x7A61, 0x7A62, -/* 13A0 */ 0x7A69, 0x9F9D, 0x7A70, 0x7A79, 0x7A7D, 0x7A88, 0x7A97, 0x7A95, -/* 13A8 */ 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0, 0xFFFD, 0x7AB6, 0x7AC5, -/* 13B0 */ 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF, 0x7AD5, -/* 13B8 */ 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6, 0x7AED, -/* 13C0 */ 0x7AF0, 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18, 0x7B19, -/* 13C8 */ 0x7B1E, 0x7B35, 0x7B28, 0x7B36, 0x7B50, 0x7B7A, 0x7B04, 0x7B4D, -/* 13D0 */ 0x7B0B, 0x7B4C, 0x7B45, 0x7B75, 0x7B65, 0x7B74, 0x7B67, 0x7B70, -/* 13D8 */ 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D, 0x7B98, 0x7B9F, 0x7B8D, 0x7B9C, -/* 13E0 */ 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F, 0x7B5D, 0x7B99, 0x7BCB, 0x7BC1, -/* 13E8 */ 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6, 0x7BDD, 0x7BE9, 0x7C11, 0x7C14, -/* 13F0 */ 0x7BE6, 0x7BE5, 0x7C60, 0x7C00, 0x7C07, 0x7C13, 0x7BF3, 0x7BF7, -/* 13F8 */ 0x7C17, 0x7C0D, 0x7BF6, 0x7C23, 0x7C27, 0x7C2A, 0x7C1F, 0x7C37, -/* 1400 */ 0x7C2B, 0x7C3D, 0x7C4C, 0x7C43, 0x7C54, 0x7C4F, 0x7C40, 0x7C50, -/* 1408 */ 0x7C58, 0x7C5F, 0x7C64, 0x7C56, 0x7C65, 0x7C6C, 0x7C75, 0x7C83, -/* 1410 */ 0x7C90, 0x7CA4, 0x7CAD, 0x7CA2, 0x7CAB, 0x7CA1, 0x7CA8, 0x7CB3, -/* 1418 */ 0x7CB2, 0x7CB1, 0x7CAE, 0x7CB9, 0x7CBD, 0x7CC0, 0x7CC5, 0x7CC2, -/* 1420 */ 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2, 0x9B3B, 0x7CEF, 0x7CF2, 0x7CF4, -/* 1428 */ 0x7CF6, 0x7CFA, 0x7D06, 0x7D02, 0x7D1C, 0x7D15, 0x7D0A, 0x7D45, -/* 1430 */ 0x7D4B, 0x7D2E, 0x7D32, 0x7D3F, 0x7D35, 0x7D46, 0x7D73, 0x7D56, -/* 1438 */ 0x7D4E, 0x7D72, 0x7D68, 0x7D6E, 0x7D4F, 0x7D63, 0x7D93, 0x7D89, -/* 1440 */ 0x7D5B, 0x7D8F, 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, -/* 1448 */ 0x7DC7, 0x7DBD, 0x7DAB, 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, -/* 1450 */ 0x7D9F, 0x7DB0, 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, -/* 1458 */ 0x7DE1, 0x7E05, 0x7E0A, 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, -/* 1460 */ 0x7E09, 0x7E0B, 0x7E22, 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, -/* 1468 */ 0x7E43, 0x7E37, 0xFFFD, 0x7E32, 0x7E3A, 0x7E67, 0x7E5D, 0x7E56, -/* 1470 */ 0x7E5E, 0x7E59, 0x7E5A, 0x7E79, 0x7E6A, 0x7E69, 0x7E7C, 0x7E7B, -/* 1478 */ 0x7E83, 0x7DD5, 0x7E7D, 0x8FAE, 0x7E7F, 0x7E88, 0x7E89, 0x7E8C, -/* 1480 */ 0x7E92, 0x7E90, 0x7E93, 0x7E94, 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, -/* 1488 */ 0x7F38, 0x7F3A, 0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, -/* 1490 */ 0x7F55, 0x7F54, 0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, -/* 1498 */ 0x7F78, 0x7F82, 0x7F86, 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, -/* 14A0 */ 0x7F9E, 0x7F9D, 0x7F9A, 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, -/* 14A8 */ 0x7FB6, 0x7FB8, 0x8B71, 0x7FC5, 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, -/* 14B0 */ 0x7FE1, 0x7FE6, 0x7FE9, 0x7FF3, 0x7FF9, 0x98DC, 0x8006, 0x8004, -/* 14B8 */ 0x800B, 0x8012, 0x8018, 0x8019, 0x801C, 0x8021, 0x8028, 0x803F, -/* 14C0 */ 0x803B, 0x804A, 0x8046, 0x8052, 0x8058, 0x805A, 0x805F, 0x8062, -/* 14C8 */ 0x8068, 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, -/* 14D0 */ 0x8084, 0x8086, 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, -/* 14D8 */ 0x80AC, 0x80DB, 0x80E5, 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, -/* 14E0 */ 0x8109, 0x80EF, 0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B, -/* 14E8 */ 0x968B, 0x8146, 0x813E, 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E, -/* 14F0 */ 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818A, 0x8180, 0x8182, -/* 14F8 */ 0x81A0, 0x8195, 0x81A4, 0x81A3, 0x815F, 0x8193, 0x81A9, 0x81B0, -/* 1500 */ 0x81B5, 0x81BE, 0x81B8, 0x81BD, 0x81C0, 0x81C2, 0x81BA, 0x81C9, -/* 1508 */ 0x81CD, 0x81D1, 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF, 0x81E0, -/* 1510 */ 0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207, -/* 1518 */ 0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B, 0x8238, 0x8233, -/* 1520 */ 0x8240, 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264, 0xFFFD, -/* 1528 */ 0x8262, 0x8268, 0x826A, 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, -/* 1530 */ 0x827E, 0x828D, 0x8292, 0x82AB, 0x829F, 0x82BB, 0x82AC, 0x82E1, -/* 1538 */ 0x82E3, 0x82DF, 0x82D2, 0x82F4, 0x82F3, 0x82FA, 0x8393, 0x8303, -/* 1540 */ 0x82FB, 0x82F9, 0x82DE, 0x8306, 0x82DC, 0x8309, 0x82D9, 0x8335, -/* 1548 */ 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350, 0x8345, -/* 1550 */ 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA, 0x839F, -/* 1558 */ 0x83A2, 0x8396, 0x8323, 0x838E, 0x8387, 0x838A, 0x837C, 0x83B5, -/* 1560 */ 0x8373, 0x8375, 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413, 0x83EB, -/* 1568 */ 0x83CE, 0x83FD, 0x8403, 0x83D8, 0x840B, 0x83C1, 0x83F7, 0x8407, -/* 1570 */ 0x83E0, 0x83F2, 0x840D, 0x8422, 0x8420, 0x83BD, 0x8438, 0x8506, -/* 1578 */ 0x83FB, 0x846D, 0x842A, 0x843C, 0x855A, 0x8484, 0x8477, 0x846B, -/* 1580 */ 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446, 0x842C, 0x846F, 0x8479, -/* 1588 */ 0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F, 0x84D9, 0x84CD, -/* 1590 */ 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1, 0x8521, -/* 1598 */ 0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F, 0x8515, 0x8514, -/* 15A0 */ 0x84FC, 0x8540, 0x8563, 0x8558, 0x8548, 0x8541, 0x8602, 0x854B, -/* 15A8 */ 0x8555, 0x8580, 0x85A4, 0x8588, 0x8591, 0x858A, 0x85A8, 0x856D, -/* 15B0 */ 0x8594, 0x859B, 0x85EA, 0x8587, 0x859C, 0x8577, 0x857E, 0x8590, -/* 15B8 */ 0x85C9, 0x85BA, 0x85CF, 0x85B9, 0x85D0, 0x85D5, 0x85DD, 0x85E5, -/* 15C0 */ 0x85DC, 0x85F9, 0x860A, 0x8613, 0x860B, 0x85FE, 0x85FA, 0x8606, -/* 15C8 */ 0x8622, 0x861A, 0x8630, 0x863F, 0x864D, 0x4E55, 0x8654, 0x865F, -/* 15D0 */ 0x8667, 0x8671, 0x8693, 0x86A3, 0x86A9, 0x86AA, 0x868B, 0x868C, -/* 15D8 */ 0x86B6, 0x86AF, 0x86C4, 0x86C6, 0x86B0, 0x86C9, 0x8823, 0x86AB, -/* 15E0 */ 0x86D4, 0x86DE, 0x86E9, 0x86EC, 0xFFFD, 0x86DF, 0x86DB, 0x86EF, -/* 15E8 */ 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86FB, 0x8711, 0x8709, -/* 15F0 */ 0x870D, 0x86F9, 0x870A, 0x8734, 0x873F, 0x8737, 0x873B, 0x8725, -/* 15F8 */ 0x8729, 0x871A, 0x8760, 0x875F, 0x8778, 0x874C, 0x874E, 0x8774, -/* 1600 */ 0x8757, 0x8768, 0x876E, 0x8759, 0x8753, 0x8763, 0x876A, 0x8805, -/* 1608 */ 0x87A2, 0x879F, 0x8782, 0x87AF, 0x87CB, 0x87BD, 0x87C0, 0x87D0, -/* 1610 */ 0x96D6, 0x87AB, 0x87C4, 0x87B3, 0x87C7, 0x87C6, 0x87BB, 0x87EF, -/* 1618 */ 0x87F2, 0x87E0, 0x880F, 0x880D, 0x87FE, 0x87F6, 0x87F7, 0x880E, -/* 1620 */ 0x87D2, 0x8811, 0x8816, 0x8815, 0x8822, 0x8821, 0x8831, 0x8836, -/* 1628 */ 0x8839, 0x8827, 0x883B, 0x8844, 0x8842, 0x8852, 0x8859, 0x885E, -/* 1630 */ 0x8862, 0x886B, 0x8881, 0x887E, 0x889E, 0x8875, 0x887D, 0x88B5, -/* 1638 */ 0x8872, 0x8882, 0x8897, 0x8892, 0x88AE, 0x8899, 0x88A2, 0x888D, -/* 1640 */ 0x88A4, 0x88B0, 0x88BF, 0x88B1, 0x88C3, 0x88C4, 0x88D4, 0x88D8, -/* 1648 */ 0x88D9, 0x88DD, 0x88F9, 0x8902, 0x88FC, 0x88F4, 0x88E8, 0x88F2, -/* 1650 */ 0x8904, 0x890C, 0x890A, 0x8913, 0x8943, 0x891E, 0x8925, 0x892A, -/* 1658 */ 0x892B, 0x8941, 0x8944, 0x893B, 0x8936, 0x8938, 0x894C, 0x891D, -/* 1660 */ 0x8960, 0x895E, 0x8966, 0x8964, 0x896D, 0x896A, 0x896F, 0x8974, -/* 1668 */ 0x8977, 0x897E, 0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, -/* 1670 */ 0x89A9, 0x89A6, 0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, -/* 1678 */ 0x89C0, 0x89DA, 0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, -/* 1680 */ 0x8A16, 0x8A10, 0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, -/* 1688 */ 0x8A5B, 0x8A52, 0x8A46, 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, -/* 1690 */ 0x8A85, 0x8A82, 0x8A84, 0x8AA8, 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, -/* 1698 */ 0x8A9A, 0x8AA3, 0x8AC4, 0x8ACD, 0x8AC2, 0x8ADA, 0x8AEB, 0x8AF3, -/* 16A0 */ 0x8AE7, 0xFFFD, 0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, 0x8AF7, -/* 16A8 */ 0x8ADE, 0x8ADB, 0x8B0C, 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, -/* 16B0 */ 0x8B17, 0x8B20, 0x8B33, 0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, -/* 16B8 */ 0x8B41, 0x8B4C, 0x8B4F, 0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, -/* 16C0 */ 0x8B6B, 0x8B5F, 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, -/* 16C8 */ 0x8B8E, 0x8B92, 0x8B93, 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, -/* 16D0 */ 0x8C3F, 0x8C48, 0x8C4C, 0x8C4E, 0x8C50, 0x8C55, 0x8C62, 0x8C6C, -/* 16D8 */ 0x8C78, 0x8C7A, 0x8C82, 0x8C89, 0x8C85, 0x8C8A, 0x8C8D, 0x8C8E, -/* 16E0 */ 0x8C94, 0x8C7C, 0x8C98, 0x621D, 0x8CAD, 0x8CAA, 0x8CBD, 0x8CB2, -/* 16E8 */ 0x8CB3, 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3, 0x8CDA, -/* 16F0 */ 0x8CFD, 0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F, -/* 16F8 */ 0x8D0D, 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67, -/* 1700 */ 0x8D6D, 0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, -/* 1708 */ 0x8DCF, 0x8DDA, 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, -/* 1710 */ 0x8DDF, 0x8DE3, 0x8DFC, 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, -/* 1718 */ 0x8E10, 0x8E1F, 0x8E42, 0x8E35, 0x8E30, 0x8E34, 0x8E4A, 0x8E47, -/* 1720 */ 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, 0x8E64, 0x8E60, 0x8E2A, -/* 1728 */ 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81, 0x8E87, 0x8E85, -/* 1730 */ 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99, 0x8EAA, -/* 1738 */ 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5, 0x8EC8, -/* 1740 */ 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE, 0x8F0A, -/* 1748 */ 0x8F05, 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C, 0x8F1F, 0x8F1B, -/* 1750 */ 0x8F0C, 0x8F26, 0x8F33, 0x8F3B, 0x8F39, 0x8F45, 0x8F42, 0x8F3E, -/* 1758 */ 0x8F4C, 0x8F49, 0x8F46, 0x8F4E, 0x8F57, 0x8F5C, 0xFFFD, 0x8F62, -/* 1760 */ 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, 0x8FAD, 0x8FAF, 0x8FB7, -/* 1768 */ 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, 0x8FF4, 0x9005, -/* 1770 */ 0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, 0x9016, -/* 1778 */ 0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8, 0x904F, 0x9050, -/* 1780 */ 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056, 0x9058, 0x905E, -/* 1788 */ 0x9068, 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082, 0x907D, 0x9081, -/* 1790 */ 0x9080, 0x908A, 0x9089, 0x908F, 0x90A8, 0x90AF, 0x90B1, 0x90B5, -/* 1798 */ 0x90E2, 0x90E4, 0x6248, 0x90DB, 0x9102, 0x9112, 0x9119, 0x9132, -/* 17A0 */ 0x9130, 0x914A, 0x9156, 0x9158, 0x9163, 0x9165, 0x9169, 0x9173, -/* 17A8 */ 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2, 0x91AB, 0x91AF, 0x91AA, -/* 17B0 */ 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C9, 0x91CB, 0x91D0, -/* 17B8 */ 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC, 0x91F5, 0x91F6, 0x921E, -/* 17C0 */ 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E, 0x9257, 0x9245, -/* 17C8 */ 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B, 0x9250, 0x929C, -/* 17D0 */ 0x9296, 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9, 0x92B7, 0x92E9, -/* 17D8 */ 0x930F, 0x92FA, 0x9344, 0x932E, 0x9319, 0x9322, 0x931A, 0x9323, -/* 17E0 */ 0x933A, 0x9335, 0x933B, 0x935C, 0x9360, 0x937C, 0x936E, 0x9356, -/* 17E8 */ 0x93B0, 0x93AC, 0x93AD, 0x9394, 0x93B9, 0x93D6, 0x93D7, 0x93E8, -/* 17F0 */ 0x93E5, 0x93D8, 0x93C3, 0x93DD, 0x93D0, 0x93C8, 0x93E4, 0x941A, -/* 17F8 */ 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436, 0x942B, 0x9435, -/* 1800 */ 0x9421, 0x943A, 0x9441, 0x9452, 0x9444, 0x945B, 0x9460, 0x9462, -/* 1808 */ 0x945E, 0x946A, 0x9229, 0x9470, 0x9475, 0x9477, 0x947D, 0x945A, -/* 1810 */ 0x947C, 0x947E, 0x9481, 0x947F, 0x9582, 0x9587, 0x958A, 0x9594, -/* 1818 */ 0x9596, 0x9598, 0x9599, 0xFFFD, 0x95A0, 0x95A8, 0x95A7, 0x95AD, -/* 1820 */ 0x95BC, 0x95BB, 0x95B9, 0x95BE, 0x95CA, 0x6FF6, 0x95C3, 0x95CD, -/* 1828 */ 0x95CC, 0x95D5, 0x95D4, 0x95D6, 0x95DC, 0x95E1, 0x95E5, 0x95E2, -/* 1830 */ 0x9621, 0x9628, 0x962E, 0x962F, 0x9642, 0x964C, 0x964F, 0x964B, -/* 1838 */ 0x9677, 0x965C, 0x965E, 0x965D, 0x965F, 0x9666, 0x9672, 0x966C, -/* 1840 */ 0x968D, 0x9698, 0x9695, 0x9697, 0x96AA, 0x96A7, 0x96B1, 0x96B2, -/* 1848 */ 0x96B0, 0x96B4, 0x96B6, 0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9, -/* 1850 */ 0x96CD, 0x894D, 0x96DC, 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, -/* 1858 */ 0x9708, 0x9713, 0x970E, 0x9711, 0x970F, 0x9716, 0x9719, 0x9724, -/* 1860 */ 0x972A, 0x9730, 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, -/* 1868 */ 0x9742, 0x9749, 0x975C, 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, -/* 1870 */ 0x976B, 0x9771, 0x9779, 0x9785, 0x977C, 0x9781, 0x977A, 0x9786, -/* 1878 */ 0x978B, 0x978F, 0x9790, 0x979C, 0x97A8, 0x97A6, 0x97A3, 0x97B3, -/* 1880 */ 0x97B4, 0x97C3, 0x97C6, 0x97C8, 0x97CB, 0x97DC, 0x97ED, 0x9F4F, -/* 1888 */ 0x97F2, 0x7ADF, 0x97F6, 0x97F5, 0x980F, 0x980C, 0x9838, 0x9824, -/* 1890 */ 0x9821, 0x9837, 0x983D, 0x9846, 0x984F, 0x984B, 0x986B, 0x986F, -/* 1898 */ 0x9870, 0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, -/* 18A0 */ 0x98C4, 0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, -/* 18A8 */ 0x9914, 0x9918, 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, -/* 18B0 */ 0x992E, 0x993D, 0x993E, 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, -/* 18B8 */ 0x9951, 0x9952, 0x994C, 0x9955, 0x9997, 0x9998, 0x99A5, 0x99AD, -/* 18C0 */ 0x99AE, 0x99BC, 0x99DF, 0x99DB, 0x99DD, 0x99D8, 0x99D1, 0x99ED, -/* 18C8 */ 0x99EE, 0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, 0x9A0F, 0x9A05, -/* 18D0 */ 0x99E2, 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, 0x9A43, -/* 18D8 */ 0xFFFD, 0x9A3E, 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, -/* 18E0 */ 0x9A65, 0x9A64, 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, -/* 18E8 */ 0x9AC0, 0x9ACF, 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, -/* 18F0 */ 0x9AE3, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7, -/* 18F8 */ 0x9AFB, 0x9B06, 0x9B18, 0x9B1A, 0x9B1F, 0x9B22, 0x9B23, 0x9B25, -/* 1900 */ 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, 0x9B2F, 0x9B32, 0x9B44, -/* 1908 */ 0x9B43, 0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, 0x9B74, 0x9B93, -/* 1910 */ 0x9B83, 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, 0x9BB4, -/* 1918 */ 0x9BC0, 0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3, -/* 1920 */ 0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0, -/* 1928 */ 0x9C15, 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12, -/* 1930 */ 0x9C0A, 0x9C04, 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30, -/* 1938 */ 0x9C47, 0x9C32, 0x9C46, 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76, -/* 1940 */ 0x9C78, 0x9CE7, 0x9CEC, 0x9CF0, 0x9D09, 0x9D08, 0x9CEB, 0x9D03, -/* 1948 */ 0x9D06, 0x9D2A, 0x9D26, 0x9DAF, 0x9D23, 0x9D1F, 0x9D44, 0x9D15, -/* 1950 */ 0x9D12, 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48, 0x9D5D, 0x9D5E, -/* 1958 */ 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89, 0x9D87, 0x9DAB, -/* 1960 */ 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2, 0x9DC4, 0x9DC1, -/* 1968 */ 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2, 0x9DD9, 0x9DD3, -/* 1970 */ 0x9DF8, 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A, 0x9E1B, 0x9E1E, -/* 1978 */ 0x9E75, 0x9E79, 0x9E7D, 0x9E81, 0x9E88, 0x9E8B, 0x9E8C, 0x9E92, -/* 1980 */ 0x9E95, 0x9E91, 0x9E9D, 0x9EA5, 0x9EA9, 0x9EB8, 0x9EAA, 0x9EAD, -/* 1988 */ 0x9761, 0x9ECC, 0x9ECE, 0x9ECF, 0x9ED0, 0x9ED4, 0x9EDC, 0x9EDE, -/* 1990 */ 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF, 0xFFFD, 0x9EF4, 0x9EF6, -/* 1998 */ 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08, 0x76B7, -/* 19A0 */ 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54, 0x9F63, -/* 19A8 */ 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A, 0x9F77, -/* 19B0 */ 0x9F72, 0x9F76, 0x9F95, 0x9F9C, 0x9FA0, 0x582F, 0x69C7, 0x9059, -/* 19B8 */ 0x7464, 0x51DC, 0x7199, -/* End of table Total Length = 0x1A8C * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/t61.ut b/mozilla/lib/libi18n/unicode/utotbl/t61.ut deleted file mode 100644 index aa3b894335e..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/t61.ut +++ /dev/null @@ -1,561 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0000 - srcEnd = 007F - destBegin = 0000 -End of Item 0000 - -Begin of Item 0001 - Format 1 - srcBegin = 00A0 - srcEnd = 00BF - mappingOffset = 0000 - Mapping = - 00A0 00A1 00A2 00A3 0024 00A5 FFFD 00A7 - FFFD 2018 201C 00AB 2190 2191 2192 2193 - 00B0 00B1 00B2 00B3 00D7 00B5 00B6 00B7 - 00F7 2019 201D 00BB 00BC 00BD 00BE 00BF -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 00D0 - srcEnd = 00FF - mappingOffset = 0020 - Mapping = - 2015 00B9 00AE 00A9 2122 266A 00AC 00A6 - FFFD FFFD FFFD FFFD 215B 215C 215D 215E - 2126 00C6 0110 00AA 0126 FFFD 0132 013F - 0141 00D8 0152 00BA 00DE 0166 014A 0149 - 0138 00E6 0111 00F0 0127 0131 0133 0140 - 0142 00F8 0153 00DF 00FE 0167 014B 00AD -End of Item 0002 - -Begin of Item 0003 - Format 2 - srcBegin = C120 - destBegin = 0060 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = C141 - srcEnd = C155 - mappingOffset = 0050 - Mapping = - 00C0 FFFD FFFD FFFD 00C8 FFFD FFFD FFFD - 00CC FFFD FFFD FFFD FFFD FFFD 00D2 FFFD - FFFD FFFD FFFD FFFD 00D9 -End of Item 0004 - -Begin of Item 0005 - Format 1 - srcBegin = C161 - srcEnd = C175 - mappingOffset = 0065 - Mapping = - 00E0 FFFD FFFD FFFD 00E8 FFFD FFFD FFFD - 00EC FFFD FFFD FFFD FFFD FFFD 00F2 FFFD - FFFD FFFD FFFD FFFD 00F9 -End of Item 0005 - -Begin of Item 0006 - Format 2 - srcBegin = C220 - destBegin = 00B4 -End of Item 0006 - -Begin of Item 0007 - Format 1 - srcBegin = C241 - srcEnd = C27A - mappingOffset = 007A - Mapping = - 00C1 FFFD 0106 FFFD 00C9 FFFD FFFD FFFD - 00CD FFFD FFFD 0139 FFFD 0143 00D3 FFFD - FFFD 0154 015A FFFD 00DA FFFD FFFD FFFD - 00DD 017B FFFD FFFD FFFD FFFD FFFD FFFD - 00E1 FFFD 0107 FFFD 00E9 FFFD 01F5 FFFD - 00ED FFFD FFFD 013A FFFD 0144 00F3 FFFD - FFFD 0155 015B FFFD 00FA FFFD FFFD FFFD - 00FD 017A -End of Item 0007 - -Begin of Item 0008 - Format 2 - srcBegin = C320 - destBegin = 005E -End of Item 0008 - -Begin of Item 0009 - Format 1 - srcBegin = C341 - srcEnd = C379 - mappingOffset = 00B4 - Mapping = - 00C2 FFFD 0108 FFFD 00CA FFFD 011C 0124 - 00CE 0134 FFFD FFFD FFFD FFFD 00D4 FFFD - FFFD FFFD 015C FFFD 00DB FFFD 0174 FFFD - 0176 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00E2 FFFD 0109 FFFD 00EA FFFD 011D 0125 - 00EE 0135 FFFD FFFD FFFD FFFD 00F4 FFFD - FFFD FFFD 015D FFFD 00FB FFFD 0175 FFFD - 0177 -End of Item 0009 - -Begin of Item 000A - Format 2 - srcBegin = C420 - destBegin = 007E -End of Item 000A - -Begin of Item 000B - Format 1 - srcBegin = C441 - srcEnd = C455 - mappingOffset = 00ED - Mapping = - 00C3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 0128 FFFD FFFD FFFD FFFD 00D1 00D5 FFFD - FFFD FFFD FFFD FFFD 0168 -End of Item 000B - -Begin of Item 000C - Format 1 - srcBegin = C461 - srcEnd = C475 - mappingOffset = 0102 - Mapping = - 00E3 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 0129 FFFD FFFD FFFD FFFD 00F1 00F5 FFFD - FFFD FFFD FFFD FFFD 0169 -End of Item 000C - -Begin of Item 000D - Format 2 - srcBegin = C520 - destBegin = 00AF -End of Item 000D - -Begin of Item 000E - Format 1 - srcBegin = C541 - srcEnd = C555 - mappingOffset = 0117 - Mapping = - 0100 FFFD FFFD FFFD 0112 FFFD FFFD FFFD - 012A FFFD FFFD FFFD FFFD FFFD 014C FFFD - FFFD FFFD FFFD FFFD 016A -End of Item 000E - -Begin of Item 000F - Format 1 - srcBegin = C561 - srcEnd = C575 - mappingOffset = 012C - Mapping = - 0101 FFFD FFFD FFFD 0113 FFFD FFFD FFFD - 012B FFFD FFFD FFFD FFFD FFFD 014D FFFD - FFFD FFFD FFFD FFFD 016B -End of Item 000F - -Begin of Item 0010 - Format 2 - srcBegin = C620 - destBegin = 02D8 -End of Item 0010 - -Begin of Item 0011 - Format 1 - srcBegin = C641 - srcEnd = C647 - mappingOffset = 0141 - Mapping = - 0102 FFFD FFFD FFFD FFFD FFFD 011E -End of Item 0011 - -Begin of Item 0012 - Format 2 - srcBegin = C655 - destBegin = 016C -End of Item 0012 - -Begin of Item 0013 - Format 1 - srcBegin = C661 - srcEnd = C667 - mappingOffset = 0148 - Mapping = - 0103 FFFD FFFD FFFD FFFD FFFD 011F -End of Item 0013 - -Begin of Item 0014 - Format 2 - srcBegin = C675 - destBegin = 016D -End of Item 0014 - -Begin of Item 0015 - Format 2 - srcBegin = C720 - destBegin = 02D9 -End of Item 0015 - -Begin of Item 0016 - Format 1 - srcBegin = C743 - srcEnd = C749 - mappingOffset = 014F - Mapping = - 010A FFFD 0116 FFFD 0120 FFFD 0130 -End of Item 0016 - -Begin of Item 0017 - Format 1 - srcBegin = C75A - srcEnd = C767 - mappingOffset = 0156 - Mapping = - 017B FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 010B FFFD 0117 FFFD 0121 -End of Item 0017 - -Begin of Item 0018 - Format 2 - srcBegin = C77A - destBegin = 017C -End of Item 0018 - -Begin of Item 0019 - Format 2 - srcBegin = C820 - destBegin = 00A8 -End of Item 0019 - -Begin of Item 001A - Format 1 - srcBegin = C841 - srcEnd = C879 - mappingOffset = 0164 - Mapping = - 00C4 FFFD FFFD FFFD 00CB FFFD FFFD FFFD - 00CF FFFD FFFD FFFD FFFD FFFD 00D6 FFFD - FFFD FFFD FFFD FFFD 00DC FFFD FFFD FFFD - 0178 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 00E4 FFFD FFFD FFFD 00EB FFFD FFFD FFFD - 00EF FFFD FFFD FFFD FFFD FFFD 00F6 FFFD - FFFD FFFD FFFD FFFD 00FC FFFD FFFD FFFD - 00FF -End of Item 001A - -Begin of Item 001B - Format 2 - srcBegin = CA20 - destBegin = 02DA -End of Item 001B - -Begin of Item 001C - Format 2 - srcBegin = CA41 - destBegin = 00C5 -End of Item 001C - -Begin of Item 001D - Format 2 - srcBegin = CA55 - destBegin = 016E -End of Item 001D - -Begin of Item 001E - Format 2 - srcBegin = CA61 - destBegin = 00E5 -End of Item 001E - -Begin of Item 001F - Format 2 - srcBegin = CA75 - destBegin = 016F -End of Item 001F - -Begin of Item 0020 - Format 2 - srcBegin = CB20 - destBegin = 00B8 -End of Item 0020 - -Begin of Item 0021 - Format 1 - srcBegin = CB43 - srcEnd = CB54 - mappingOffset = 019D - Mapping = - 00C7 FFFD FFFD FFFD 0122 FFFD FFFD FFFD - 0136 013B FFFD FFFD FFFD FFFD FFFD 0156 - 015E 0162 -End of Item 0021 - -Begin of Item 0022 - Format 1 - srcBegin = CB63 - srcEnd = CB74 - mappingOffset = 01AF - Mapping = - 00E7 FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 0137 013C FFFD 0146 FFFD FFFD FFFD 0157 - 015F 0163 -End of Item 0022 - -Begin of Item 0023 - Format 2 - srcBegin = CD20 - destBegin = 02DD -End of Item 0023 - -Begin of Item 0024 - Format 1 - srcBegin = CD4F - srcEnd = CD55 - mappingOffset = 01C1 - Mapping = - 0150 FFFD FFFD FFFD FFFD FFFD 0170 -End of Item 0024 - -Begin of Item 0025 - Format 1 - srcBegin = CD6F - srcEnd = CD75 - mappingOffset = 01C8 - Mapping = - 0151 FFFD FFFD FFFD FFFD FFFD 0171 -End of Item 0025 - -Begin of Item 0026 - Format 2 - srcBegin = CE20 - destBegin = 02DB -End of Item 0026 - -Begin of Item 0027 - Format 1 - srcBegin = CE41 - srcEnd = CE49 - mappingOffset = 01CF - Mapping = - 0104 FFFD FFFD FFFD 0118 FFFD FFFD FFFD - 012E -End of Item 0027 - -Begin of Item 0028 - Format 2 - srcBegin = CE55 - destBegin = 0172 -End of Item 0028 - -Begin of Item 0029 - Format 1 - srcBegin = CE61 - srcEnd = CE69 - mappingOffset = 01D8 - Mapping = - 0105 FFFD FFFD FFFD 0119 FFFD FFFD FFFD - 012F -End of Item 0029 - -Begin of Item 002A - Format 2 - srcBegin = CE75 - destBegin = 0173 -End of Item 002A - -Begin of Item 002B - Format 2 - srcBegin = CF20 - destBegin = 02C7 -End of Item 002B - -Begin of Item 002C - Format 1 - srcBegin = CF43 - srcEnd = CF7A - mappingOffset = 01E1 - Mapping = - 010C 010E 011A FFFD FFFD FFFD FFFD FFFD - FFFD 013D FFFD 0147 FFFD FFFD FFFD 0158 - 0160 0164 FFFD FFFD FFFD FFFD FFFD 017D - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 010D 010F 011B FFFD FFFD FFFD FFFD FFFD - FFFD 013E FFFD 0148 FFFD FFFD FFFD 0159 - 0161 0165 FFFD FFFD FFFD FFFD FFFD 017E -End of Item 002C - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x002D, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0010, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0097, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0001 */ -/* Total of Format 1 : 0x0016 */ -/* Total of Format 2 : 0x0016 */ -/* Total of Format 3 : 0x0000 */ - -0x2110, 0x1211, 0x1212, 0x1121, 0x1212, 0x1122, 0x2122, 0x2222, -0x2112, 0x1211, 0x2212, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0010 Start of MapCell Array */ -/* 0000 */ 0x0000, 0x007F, 0x0000, -/* 0001 */ 0x00A0, 0x00BF, 0x0000, -/* 0002 */ 0x00D0, 0x00FF, 0x0020, -/* 0003 */ 0xC120, 0x0000, 0x0060, -/* 0004 */ 0xC141, 0xC155, 0x0050, -/* 0005 */ 0xC161, 0xC175, 0x0065, -/* 0006 */ 0xC220, 0x0000, 0x00B4, -/* 0007 */ 0xC241, 0xC27A, 0x007A, -/* 0008 */ 0xC320, 0x0000, 0x005E, -/* 0009 */ 0xC341, 0xC379, 0x00B4, -/* 000A */ 0xC420, 0x0000, 0x007E, -/* 000B */ 0xC441, 0xC455, 0x00ED, -/* 000C */ 0xC461, 0xC475, 0x0102, -/* 000D */ 0xC520, 0x0000, 0x00AF, -/* 000E */ 0xC541, 0xC555, 0x0117, -/* 000F */ 0xC561, 0xC575, 0x012C, -/* 0010 */ 0xC620, 0x0000, 0x02D8, -/* 0011 */ 0xC641, 0xC647, 0x0141, -/* 0012 */ 0xC655, 0x0000, 0x016C, -/* 0013 */ 0xC661, 0xC667, 0x0148, -/* 0014 */ 0xC675, 0x0000, 0x016D, -/* 0015 */ 0xC720, 0x0000, 0x02D9, -/* 0016 */ 0xC743, 0xC749, 0x014F, -/* 0017 */ 0xC75A, 0xC767, 0x0156, -/* 0018 */ 0xC77A, 0x0000, 0x017C, -/* 0019 */ 0xC820, 0x0000, 0x00A8, -/* 001A */ 0xC841, 0xC879, 0x0164, -/* 001B */ 0xCA20, 0x0000, 0x02DA, -/* 001C */ 0xCA41, 0x0000, 0x00C5, -/* 001D */ 0xCA55, 0x0000, 0x016E, -/* 001E */ 0xCA61, 0x0000, 0x00E5, -/* 001F */ 0xCA75, 0x0000, 0x016F, -/* 0020 */ 0xCB20, 0x0000, 0x00B8, -/* 0021 */ 0xCB43, 0xCB54, 0x019D, -/* 0022 */ 0xCB63, 0xCB74, 0x01AF, -/* 0023 */ 0xCD20, 0x0000, 0x02DD, -/* 0024 */ 0xCD4F, 0xCD55, 0x01C1, -/* 0025 */ 0xCD6F, 0xCD75, 0x01C8, -/* 0026 */ 0xCE20, 0x0000, 0x02DB, -/* 0027 */ 0xCE41, 0xCE49, 0x01CF, -/* 0028 */ 0xCE55, 0x0000, 0x0172, -/* 0029 */ 0xCE61, 0xCE69, 0x01D8, -/* 002A */ 0xCE75, 0x0000, 0x0173, -/* 002B */ 0xCF20, 0x0000, 0x02C7, -/* 002C */ 0xCF43, 0xCF7A, 0x01E1, -/*-------------------------------------------------------*/ -/* Offset=0x0097 Start of MappingTable */ - -/* 0000 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x0024, 0x00A5, 0xFFFD, 0x00A7, -/* 0008 */ 0xFFFD, 0x2018, 0x201C, 0x00AB, 0x2190, 0x2191, 0x2192, 0x2193, -/* 0010 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00D7, 0x00B5, 0x00B6, 0x00B7, -/* 0018 */ 0x00F7, 0x2019, 0x201D, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, -/* 0020 */ 0x2015, 0x00B9, 0x00AE, 0x00A9, 0x2122, 0x266A, 0x00AC, 0x00A6, -/* 0028 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x215B, 0x215C, 0x215D, 0x215E, -/* 0030 */ 0x2126, 0x00C6, 0x0110, 0x00AA, 0x0126, 0xFFFD, 0x0132, 0x013F, -/* 0038 */ 0x0141, 0x00D8, 0x0152, 0x00BA, 0x00DE, 0x0166, 0x014A, 0x0149, -/* 0040 */ 0x0138, 0x00E6, 0x0111, 0x00F0, 0x0127, 0x0131, 0x0133, 0x0140, -/* 0048 */ 0x0142, 0x00F8, 0x0153, 0x00DF, 0x00FE, 0x0167, 0x014B, 0x00AD, -/* 0050 */ 0x00C0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C8, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0058 */ 0x00CC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D2, 0xFFFD, -/* 0060 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D9, 0x00E0, 0xFFFD, 0xFFFD, -/* 0068 */ 0xFFFD, 0x00E8, 0xFFFD, 0xFFFD, 0xFFFD, 0x00EC, 0xFFFD, 0xFFFD, -/* 0070 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x00F2, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0078 */ 0xFFFD, 0x00F9, 0x00C1, 0xFFFD, 0x0106, 0xFFFD, 0x00C9, 0xFFFD, -/* 0080 */ 0xFFFD, 0xFFFD, 0x00CD, 0xFFFD, 0xFFFD, 0x0139, 0xFFFD, 0x0143, -/* 0088 */ 0x00D3, 0xFFFD, 0xFFFD, 0x0154, 0x015A, 0xFFFD, 0x00DA, 0xFFFD, -/* 0090 */ 0xFFFD, 0xFFFD, 0x00DD, 0x017B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0098 */ 0xFFFD, 0xFFFD, 0x00E1, 0xFFFD, 0x0107, 0xFFFD, 0x00E9, 0xFFFD, -/* 00A0 */ 0x01F5, 0xFFFD, 0x00ED, 0xFFFD, 0xFFFD, 0x013A, 0xFFFD, 0x0144, -/* 00A8 */ 0x00F3, 0xFFFD, 0xFFFD, 0x0155, 0x015B, 0xFFFD, 0x00FA, 0xFFFD, -/* 00B0 */ 0xFFFD, 0xFFFD, 0x00FD, 0x017A, 0x00C2, 0xFFFD, 0x0108, 0xFFFD, -/* 00B8 */ 0x00CA, 0xFFFD, 0x011C, 0x0124, 0x00CE, 0x0134, 0xFFFD, 0xFFFD, -/* 00C0 */ 0xFFFD, 0xFFFD, 0x00D4, 0xFFFD, 0xFFFD, 0xFFFD, 0x015C, 0xFFFD, -/* 00C8 */ 0x00DB, 0xFFFD, 0x0174, 0xFFFD, 0x0176, 0xFFFD, 0xFFFD, 0xFFFD, -/* 00D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E2, 0xFFFD, 0x0109, 0xFFFD, -/* 00D8 */ 0x00EA, 0xFFFD, 0x011D, 0x0125, 0x00EE, 0x0135, 0xFFFD, 0xFFFD, -/* 00E0 */ 0xFFFD, 0xFFFD, 0x00F4, 0xFFFD, 0xFFFD, 0xFFFD, 0x015D, 0xFFFD, -/* 00E8 */ 0x00FB, 0xFFFD, 0x0175, 0xFFFD, 0x0177, 0x00C3, 0xFFFD, 0xFFFD, -/* 00F0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0128, 0xFFFD, 0xFFFD, -/* 00F8 */ 0xFFFD, 0xFFFD, 0x00D1, 0x00D5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0100 */ 0xFFFD, 0x0168, 0x00E3, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0108 */ 0xFFFD, 0xFFFD, 0x0129, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00F1, -/* 0110 */ 0x00F5, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0169, 0x0100, -/* 0118 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0112, 0xFFFD, 0xFFFD, 0xFFFD, 0x012A, -/* 0120 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x014C, 0xFFFD, 0xFFFD, -/* 0128 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x016A, 0x0101, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0130 */ 0x0113, 0xFFFD, 0xFFFD, 0xFFFD, 0x012B, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0138 */ 0xFFFD, 0xFFFD, 0x014D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0140 */ 0x016B, 0x0102, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x011E, -/* 0148 */ 0x0103, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x011F, 0x010A, -/* 0150 */ 0xFFFD, 0x0116, 0xFFFD, 0x0120, 0xFFFD, 0x0130, 0x017B, 0xFFFD, -/* 0158 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x010B, -/* 0160 */ 0xFFFD, 0x0117, 0xFFFD, 0x0121, 0x00C4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0168 */ 0x00CB, 0xFFFD, 0xFFFD, 0xFFFD, 0x00CF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0170 */ 0xFFFD, 0xFFFD, 0x00D6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0178 */ 0x00DC, 0xFFFD, 0xFFFD, 0xFFFD, 0x0178, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0180 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E4, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0188 */ 0x00EB, 0xFFFD, 0xFFFD, 0xFFFD, 0x00EF, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0190 */ 0xFFFD, 0xFFFD, 0x00F6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0198 */ 0x00FC, 0xFFFD, 0xFFFD, 0xFFFD, 0x00FF, 0x00C7, 0xFFFD, 0xFFFD, -/* 01A0 */ 0xFFFD, 0x0122, 0xFFFD, 0xFFFD, 0xFFFD, 0x0136, 0x013B, 0xFFFD, -/* 01A8 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0156, 0x015E, 0x0162, 0x00E7, -/* 01B0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0137, -/* 01B8 */ 0x013C, 0xFFFD, 0x0146, 0xFFFD, 0xFFFD, 0xFFFD, 0x0157, 0x015F, -/* 01C0 */ 0x0163, 0x0150, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0170, -/* 01C8 */ 0x0151, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0171, 0x0104, -/* 01D0 */ 0xFFFD, 0xFFFD, 0xFFFD, 0x0118, 0xFFFD, 0xFFFD, 0xFFFD, 0x012E, -/* 01D8 */ 0x0105, 0xFFFD, 0xFFFD, 0xFFFD, 0x0119, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E0 */ 0x012F, 0x010C, 0x010E, 0x011A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01E8 */ 0xFFFD, 0xFFFD, 0x013D, 0xFFFD, 0x0147, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01F0 */ 0x0158, 0x0160, 0x0164, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 01F8 */ 0x017D, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0200 */ 0xFFFD, 0x010D, 0x010F, 0x011B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0208 */ 0xFFFD, 0xFFFD, 0x013E, 0xFFFD, 0x0148, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0210 */ 0x0159, 0x0161, 0x0165, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0218 */ 0x017E, -/* End of table Total Length = 0x02B0 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/tcvn5712.ut b/mozilla/lib/libi18n/unicode/utotbl/tcvn5712.ut deleted file mode 100644 index abeec44a6fb..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/tcvn5712.ut +++ /dev/null @@ -1,128 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0007 - srcEnd = 0010 - destBegin = 0007 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 0018 - srcEnd = 007F - destBegin = 0018 -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0000 - srcEnd = 0017 - mappingOffset = 0000 - Mapping = - 0000 00DA 1EE4 0003 1EEA 1EEC 1EEE FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - FFFD 1EE8 1EF0 1EF2 1EF6 1EF8 00DD 1EF4 -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0018 - Mapping = - 00C0 1EA2 00C3 00C1 1EA0 1EB6 1EAC 00C8 - 1EBA 1EBC 00C9 1EB8 1EC6 00CC 1EC8 0128 - 00CD 1ECA 00D2 1ECE 00D5 00D3 1ECC 1ED8 - 1EDC 1EDE 1EE0 1EDA 1EE2 00D9 1EE6 0168 - 00A0 0102 00C2 00CA 00D4 01A0 01AF 0110 - 0103 00E2 00EA 00F4 01A1 01B0 0111 1EB0 - 0300 0309 0303 0301 0323 00E0 1EA3 00E3 - 00E1 1EA1 1EB2 1EB1 1EB3 1EB5 1EAF 1EB4 - 1EAE 1EA6 1EA8 1EAA 1EA4 1EC0 1EB7 1EA7 - 1EA9 1EAB 1EA5 1EAD 00E8 1EC2 1EBB 1EBD - 00E9 1EB9 1EC1 1EC3 1EC5 1EBF 1EC7 00EC - 1EC9 1EC4 1EBE 1ED2 0129 00ED 1ECB 00F2 - 1ED4 1ECF 00F5 00F3 1ECD 1ED3 1ED5 1ED7 - 1ED1 1ED9 1EDD 1EDF 1EE1 1EDB 1EE3 00F9 - 1ED6 1EE7 0169 00FA 1EE5 1EEB 1EED 1EEF - 1EE9 1EF1 1EF3 1EF7 1EF9 00FD 1EF5 1ED0 -End of Item 0003 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1100, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0007, 0x0010, 0x0007, -/* 0001 */ 0x0018, 0x007F, 0x0018, -/* 0002 */ 0x0000, 0x0017, 0x0000, -/* 0003 */ 0x0080, 0x00FF, 0x0018, -/*-------------------------------------------------------*/ -/* Offset=0x0012 Start of MappingTable */ - -/* 0000 */ 0x0000, 0x00DA, 0x1EE4, 0x0003, 0x1EEA, 0x1EEC, 0x1EEE, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0xFFFD, 0x1EE8, 0x1EF0, 0x1EF2, 0x1EF6, 0x1EF8, 0x00DD, 0x1EF4, -/* 0018 */ 0x00C0, 0x1EA2, 0x00C3, 0x00C1, 0x1EA0, 0x1EB6, 0x1EAC, 0x00C8, -/* 0020 */ 0x1EBA, 0x1EBC, 0x00C9, 0x1EB8, 0x1EC6, 0x00CC, 0x1EC8, 0x0128, -/* 0028 */ 0x00CD, 0x1ECA, 0x00D2, 0x1ECE, 0x00D5, 0x00D3, 0x1ECC, 0x1ED8, -/* 0030 */ 0x1EDC, 0x1EDE, 0x1EE0, 0x1EDA, 0x1EE2, 0x00D9, 0x1EE6, 0x0168, -/* 0038 */ 0x00A0, 0x0102, 0x00C2, 0x00CA, 0x00D4, 0x01A0, 0x01AF, 0x0110, -/* 0040 */ 0x0103, 0x00E2, 0x00EA, 0x00F4, 0x01A1, 0x01B0, 0x0111, 0x1EB0, -/* 0048 */ 0x0300, 0x0309, 0x0303, 0x0301, 0x0323, 0x00E0, 0x1EA3, 0x00E3, -/* 0050 */ 0x00E1, 0x1EA1, 0x1EB2, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EAF, 0x1EB4, -/* 0058 */ 0x1EAE, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EA4, 0x1EC0, 0x1EB7, 0x1EA7, -/* 0060 */ 0x1EA9, 0x1EAB, 0x1EA5, 0x1EAD, 0x00E8, 0x1EC2, 0x1EBB, 0x1EBD, -/* 0068 */ 0x00E9, 0x1EB9, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EBF, 0x1EC7, 0x00EC, -/* 0070 */ 0x1EC9, 0x1EC4, 0x1EBE, 0x1ED2, 0x0129, 0x00ED, 0x1ECB, 0x00F2, -/* 0078 */ 0x1ED4, 0x1ECF, 0x00F5, 0x00F3, 0x1ECD, 0x1ED3, 0x1ED5, 0x1ED7, -/* 0080 */ 0x1ED1, 0x1ED9, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EDB, 0x1EE3, 0x00F9, -/* 0088 */ 0x1ED6, 0x1EE7, 0x0169, 0x00FA, 0x1EE5, 0x1EEB, 0x1EED, 0x1EEF, -/* 0090 */ 0x1EE9, 0x1EF1, 0x1EF3, 0x1EF7, 0x1EF9, 0x00FD, 0x1EF5, 0x1ED0, -/* End of table Total Length = 0x00AA * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/u20ksc.ut b/mozilla/lib/libi18n/unicode/utotbl/u20ksc.ut deleted file mode 100644 index 4c5be5fa17a..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/u20ksc.ut +++ /dev/null @@ -1,13535 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 8145 - srcEnd = 8149 - destBegin = AC0B -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 8150 - srcEnd = 8156 - destBegin = AC25 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 8169 - srcEnd = 8172 - destBegin = AC41 -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 8174 - srcEnd = 8179 - destBegin = AC4E -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 8186 - srcEnd = 8198 - destBegin = AC5D -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 819E - srcEnd = 81A2 - destBegin = AC7B -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 81AC - srcEnd = 81B2 - destBegin = AC95 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 81B4 - srcEnd = 81B9 - destBegin = ACA2 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 81BD - srcEnd = 81C3 - destBegin = ACB1 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 81D0 - srcEnd = 81D7 - destBegin = ACCD -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 81D9 - srcEnd = 81E0 - destBegin = ACD8 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 81EB - srcEnd = 81EF - destBegin = ACF7 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 81F6 - srcEnd = 81FA - destBegin = AD07 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 824B - srcEnd = 8252 - destBegin = AD21 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 8255 - srcEnd = 825A - destBegin = AD2E -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 8266 - srcEnd = 826C - destBegin = AD3D -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 826F - srcEnd = 8274 - destBegin = AD4A -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 8281 - srcEnd = 8288 - destBegin = AD59 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 828A - srcEnd = 8291 - destBegin = AD64 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 829C - srcEnd = 82A0 - destBegin = AD83 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 82A6 - srcEnd = 82B0 - destBegin = AD91 -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 82B1 - srcEnd = 82B6 - destBegin = AD9E -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 82B7 - srcEnd = 82C8 - destBegin = ADA5 -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 82C9 - srcEnd = 82D0 - destBegin = ADB8 -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 82D6 - srcEnd = 82DC - destBegin = ADC9 -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 82DE - srcEnd = 82E5 - destBegin = ADD4 -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = 82EC - srcEnd = 82FE - destBegin = ADE5 -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = 8345 - srcEnd = 834A - destBegin = AE02 -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = 834D - srcEnd = 8352 - destBegin = AE0E -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = 8353 - srcEnd = 835A - destBegin = AE15 -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = 8361 - srcEnd = 8373 - destBegin = AE1D -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = 838F - srcEnd = 8393 - destBegin = AE57 -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = 839F - srcEnd = 83A5 - destBegin = AE71 -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = 83A7 - srcEnd = 83AC - destBegin = AE7E -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = 83AD - srcEnd = 83B2 - destBegin = AE86 -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = 83B3 - srcEnd = 83E1 - destBegin = AE8D -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = 83E6 - srcEnd = 83EC - destBegin = AEC5 -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = 83EE - srcEnd = 83F3 - destBegin = AED2 -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = 83F6 - srcEnd = 83FE - destBegin = AEDD -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = 8446 - srcEnd = 844B - destBegin = AEEE -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = 8452 - srcEnd = 845A - destBegin = AEFD -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = 8468 - srcEnd = 847A - destBegin = AF11 -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = 8481 - srcEnd = 8488 - destBegin = AF24 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = 848D - srcEnd = 8493 - destBegin = AF35 -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = 849A - srcEnd = 849F - destBegin = AF4A -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = 84A0 - srcEnd = 84AA - destBegin = AF51 -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = 84AB - srcEnd = 84B0 - destBegin = AF5E -End of Item 002E - -Begin of Item 002F - Format 0 - srcBegin = 84B1 - srcEnd = 84C3 - destBegin = AF66 -End of Item 002F - -Begin of Item 0030 - Format 0 - srcBegin = 84C4 - srcEnd = 84C9 - destBegin = AF7A -End of Item 0030 - -Begin of Item 0031 - Format 0 - srcBegin = 84D0 - srcEnd = 84D6 - destBegin = AF89 -End of Item 0031 - -Begin of Item 0032 - Format 0 - srcBegin = 84DA - srcEnd = 84DF - destBegin = AF96 -End of Item 0032 - -Begin of Item 0033 - Format 0 - srcBegin = 84E0 - srcEnd = 84FA - destBegin = AF9D -End of Item 0033 - -Begin of Item 0034 - Format 0 - srcBegin = 8542 - srcEnd = 8547 - destBegin = AFC1 -End of Item 0034 - -Begin of Item 0035 - Format 0 - srcBegin = 854A - srcEnd = 854E - destBegin = AFCF -End of Item 0035 - -Begin of Item 0036 - Format 0 - srcBegin = 854F - srcEnd = 8555 - destBegin = AFD5 -End of Item 0036 - -Begin of Item 0037 - Format 0 - srcBegin = 8556 - srcEnd = 855A - destBegin = AFDD -End of Item 0037 - -Begin of Item 0038 - Format 0 - srcBegin = 8561 - srcEnd = 8566 - destBegin = AFE2 -End of Item 0038 - -Begin of Item 0039 - Format 0 - srcBegin = 8567 - srcEnd = 856C - destBegin = AFEA -End of Item 0039 - -Begin of Item 003A - Format 0 - srcBegin = 8572 - srcEnd = 8578 - destBegin = AFF9 -End of Item 003A - -Begin of Item 003B - Format 0 - srcBegin = 8581 - srcEnd = 8587 - destBegin = B005 -End of Item 003B - -Begin of Item 003C - Format 0 - srcBegin = 858E - srcEnd = 8594 - destBegin = B015 -End of Item 003C - -Begin of Item 003D - Format 0 - srcBegin = 8595 - srcEnd = 859E - destBegin = B01E -End of Item 003D - -Begin of Item 003E - Format 0 - srcBegin = 859F - srcEnd = 85B9 - destBegin = B029 -End of Item 003E - -Begin of Item 003F - Format 0 - srcBegin = 85C8 - srcEnd = 85E5 - destBegin = B05E -End of Item 003F - -Begin of Item 0040 - Format 0 - srcBegin = 85EB - srcEnd = 85F1 - destBegin = B085 -End of Item 0040 - -Begin of Item 0041 - Format 0 - srcBegin = 85F4 - srcEnd = 85F9 - destBegin = B092 -End of Item 0041 - -Begin of Item 0042 - Format 0 - srcBegin = 864C - srcEnd = 8652 - destBegin = B0BD -End of Item 0042 - -Begin of Item 0043 - Format 0 - srcBegin = 8654 - srcEnd = 8659 - destBegin = B0CA -End of Item 0043 - -Begin of Item 0044 - Format 0 - srcBegin = 8665 - srcEnd = 866B - destBegin = B0D9 -End of Item 0044 - -Begin of Item 0045 - Format 0 - srcBegin = 8670 - srcEnd = 867A - destBegin = B0E6 -End of Item 0045 - -Begin of Item 0046 - Format 0 - srcBegin = 8681 - srcEnd = 8697 - destBegin = B0F1 -End of Item 0046 - -Begin of Item 0047 - Format 0 - srcBegin = 86A2 - srcEnd = 86A6 - destBegin = B11E -End of Item 0047 - -Begin of Item 0048 - Format 0 - srcBegin = 86AC - srcEnd = 86B2 - destBegin = B12D -End of Item 0048 - -Begin of Item 0049 - Format 0 - srcBegin = 86B4 - srcEnd = 86B9 - destBegin = B13A -End of Item 0049 - -Begin of Item 004A - Format 0 - srcBegin = 86BF - srcEnd = 86C5 - destBegin = B149 -End of Item 004A - -Begin of Item 004B - Format 0 - srcBegin = 86D0 - srcEnd = 86E6 - destBegin = B161 -End of Item 004B - -Begin of Item 004C - Format 0 - srcBegin = 86ED - srcEnd = 86F1 - destBegin = B183 -End of Item 004C - -Begin of Item 004D - Format 0 - srcBegin = 8741 - srcEnd = 874A - destBegin = B19E -End of Item 004D - -Begin of Item 004E - Format 0 - srcBegin = 874B - srcEnd = 875A - destBegin = B1A9 -End of Item 004E - -Begin of Item 004F - Format 0 - srcBegin = 8761 - srcEnd = 8773 - destBegin = B1B9 -End of Item 004F - -Begin of Item 0050 - Format 0 - srcBegin = 8781 - srcEnd = 8786 - destBegin = B1D6 -End of Item 0050 - -Begin of Item 0051 - Format 0 - srcBegin = 8788 - srcEnd = 878F - destBegin = B1E0 -End of Item 0051 - -Begin of Item 0052 - Format 0 - srcBegin = 8795 - srcEnd = 879C - destBegin = B1F1 -End of Item 0052 - -Begin of Item 0053 - Format 0 - srcBegin = 879F - srcEnd = 87A4 - destBegin = B1FE -End of Item 0053 - -Begin of Item 0054 - Format 0 - srcBegin = 87A9 - srcEnd = 87AF - destBegin = B20D -End of Item 0054 - -Begin of Item 0055 - Format 0 - srcBegin = 87B2 - srcEnd = 87B7 - destBegin = B21A -End of Item 0055 - -Begin of Item 0056 - Format 0 - srcBegin = 87B8 - srcEnd = 87CA - destBegin = B221 -End of Item 0056 - -Begin of Item 0057 - Format 0 - srcBegin = 87CB - srcEnd = 87D1 - destBegin = B235 -End of Item 0057 - -Begin of Item 0058 - Format 0 - srcBegin = 87D2 - srcEnd = 87EC - destBegin = B23D -End of Item 0058 - -Begin of Item 0059 - Format 0 - srcBegin = 87F3 - srcEnd = 87F9 - destBegin = B261 -End of Item 0059 - -Begin of Item 005A - Format 0 - srcBegin = 87FA - srcEnd = 87FE - destBegin = B26A -End of Item 005A - -Begin of Item 005B - Format 0 - srcBegin = 8841 - srcEnd = 8845 - destBegin = B26F -End of Item 005B - -Begin of Item 005C - Format 0 - srcBegin = 8846 - srcEnd = 884B - destBegin = B276 -End of Item 005C - -Begin of Item 005D - Format 0 - srcBegin = 884C - srcEnd = 8852 - destBegin = B27D -End of Item 005D - -Begin of Item 005E - Format 0 - srcBegin = 8856 - srcEnd = 885A - destBegin = B28A -End of Item 005E - -Begin of Item 005F - Format 0 - srcBegin = 8867 - srcEnd = 886B - destBegin = B29B -End of Item 005F - -Begin of Item 0060 - Format 0 - srcBegin = 8881 - srcEnd = 8890 - destBegin = B2B8 -End of Item 0060 - -Begin of Item 0061 - Format 0 - srcBegin = 8897 - srcEnd = 889B - destBegin = B2D3 -End of Item 0061 - -Begin of Item 0062 - Format 0 - srcBegin = 88B2 - srcEnd = 88B8 - destBegin = B309 -End of Item 0062 - -Begin of Item 0063 - Format 0 - srcBegin = 88BA - srcEnd = 88BF - destBegin = B316 -End of Item 0063 - -Begin of Item 0064 - Format 0 - srcBegin = 88C0 - srcEnd = 88F6 - destBegin = B31D -End of Item 0064 - -Begin of Item 0065 - Format 0 - srcBegin = 894C - srcEnd = 8952 - destBegin = B379 -End of Item 0065 - -Begin of Item 0066 - Format 0 - srcBegin = 8954 - srcEnd = 8959 - destBegin = B386 -End of Item 0066 - -Begin of Item 0067 - Format 0 - srcBegin = 8966 - srcEnd = 8970 - destBegin = B395 -End of Item 0067 - -Begin of Item 0068 - Format 0 - srcBegin = 8971 - srcEnd = 8976 - destBegin = B3A2 -End of Item 0068 - -Begin of Item 0069 - Format 0 - srcBegin = 8981 - srcEnd = 8996 - destBegin = B3AE -End of Item 0069 - -Begin of Item 006A - Format 0 - srcBegin = 89AC - srcEnd = 89BE - destBegin = B3E9 -End of Item 006A - -Begin of Item 006B - Format 0 - srcBegin = 89BF - srcEnd = 89D1 - destBegin = B3FD -End of Item 006B - -Begin of Item 006C - Format 0 - srcBegin = 89D2 - srcEnd = 89D8 - destBegin = B411 -End of Item 006C - -Begin of Item 006D - Format 0 - srcBegin = 89DF - srcEnd = 89E5 - destBegin = B421 -End of Item 006D - -Begin of Item 006E - Format 0 - srcBegin = 89E7 - srcEnd = 89EE - destBegin = B42C -End of Item 006E - -Begin of Item 006F - Format 0 - srcBegin = 89EF - srcEnd = 89FE - destBegin = B435 -End of Item 006F - -Begin of Item 0070 - Format 0 - srcBegin = 8A41 - srcEnd = 8A4B - destBegin = B445 -End of Item 0070 - -Begin of Item 0071 - Format 0 - srcBegin = 8A51 - srcEnd = 8A57 - destBegin = B459 -End of Item 0071 - -Begin of Item 0072 - Format 0 - srcBegin = 8A61 - srcEnd = 8A65 - destBegin = B467 -End of Item 0072 - -Begin of Item 0073 - Format 0 - srcBegin = 8A66 - srcEnd = 8A78 - destBegin = B46D -End of Item 0073 - -Begin of Item 0074 - Format 0 - srcBegin = 8A81 - srcEnd = 8A85 - destBegin = B483 -End of Item 0074 - -Begin of Item 0075 - Format 0 - srcBegin = 8A86 - srcEnd = 8A99 - destBegin = B489 -End of Item 0075 - -Begin of Item 0076 - Format 0 - srcBegin = 8A9A - srcEnd = 8A9F - destBegin = B49E -End of Item 0076 - -Begin of Item 0077 - Format 0 - srcBegin = 8AA6 - srcEnd = 8AAD - destBegin = B4AD -End of Item 0077 - -Begin of Item 0078 - Format 0 - srcBegin = 8AB0 - srcEnd = 8AB5 - destBegin = B4BA -End of Item 0078 - -Begin of Item 0079 - Format 0 - srcBegin = 8ABC - srcEnd = 8AC2 - destBegin = B4C9 -End of Item 0079 - -Begin of Item 007A - Format 0 - srcBegin = 8AC7 - srcEnd = 8ACC - destBegin = B4D6 -End of Item 007A - -Begin of Item 007B - Format 0 - srcBegin = 8AD2 - srcEnd = 8AD6 - destBegin = B4E7 -End of Item 007B - -Begin of Item 007C - Format 0 - srcBegin = 8AD9 - srcEnd = 8ADE - destBegin = B4F2 -End of Item 007C - -Begin of Item 007D - Format 0 - srcBegin = 8ADF - srcEnd = 8AF9 - destBegin = B4F9 -End of Item 007D - -Begin of Item 007E - Format 0 - srcBegin = 8B41 - srcEnd = 8B46 - destBegin = B51E -End of Item 007E - -Begin of Item 007F - Format 0 - srcBegin = 8B48 - srcEnd = 8B4C - destBegin = B52B -End of Item 007F - -Begin of Item 0080 - Format 0 - srcBegin = 8B52 - srcEnd = 8B58 - destBegin = B539 -End of Item 0080 - -Begin of Item 0081 - Format 0 - srcBegin = 8B6A - srcEnd = 8B70 - destBegin = B555 -End of Item 0081 - -Begin of Item 0082 - Format 0 - srcBegin = 8B72 - srcEnd = 8B7A - destBegin = B562 -End of Item 0082 - -Begin of Item 0083 - Format 0 - srcBegin = 8B81 - srcEnd = 8BB5 - destBegin = B56B -End of Item 0083 - -Begin of Item 0084 - Format 0 - srcBegin = 8BC1 - srcEnd = 8BC5 - destBegin = B5B6 -End of Item 0084 - -Begin of Item 0085 - Format 0 - srcBegin = 8BCB - srcEnd = 8BD1 - destBegin = B5C5 -End of Item 0085 - -Begin of Item 0086 - Format 0 - srcBegin = 8BD3 - srcEnd = 8BD8 - destBegin = B5D2 -End of Item 0086 - -Begin of Item 0087 - Format 0 - srcBegin = 8BD9 - srcEnd = 8BEB - destBegin = B5D9 -End of Item 0087 - -Begin of Item 0088 - Format 0 - srcBegin = 8BEC - srcEnd = 8BFE - destBegin = B5ED -End of Item 0088 - -Begin of Item 0089 - Format 0 - srcBegin = 8C41 - srcEnd = 8C50 - destBegin = B600 -End of Item 0089 - -Begin of Item 008A - Format 0 - srcBegin = 8C56 - srcEnd = 8C5A - destBegin = B619 -End of Item 008A - -Begin of Item 008B - Format 0 - srcBegin = 8C61 - srcEnd = 8C67 - destBegin = B61E -End of Item 008B - -Begin of Item 008C - Format 0 - srcBegin = 8C68 - srcEnd = 8C6D - destBegin = B626 -End of Item 008C - -Begin of Item 008D - Format 0 - srcBegin = 8C6E - srcEnd = 8C74 - destBegin = B62D -End of Item 008D - -Begin of Item 008E - Format 0 - srcBegin = 8C75 - srcEnd = 8C7A - destBegin = B635 -End of Item 008E - -Begin of Item 008F - Format 0 - srcBegin = 8C81 - srcEnd = 8C8D - destBegin = B63B -End of Item 008F - -Begin of Item 0090 - Format 0 - srcBegin = 8C8E - srcEnd = 8CA8 - destBegin = B649 -End of Item 0090 - -Begin of Item 0091 - Format 0 - srcBegin = 8CAC - srcEnd = 8CDE - destBegin = B669 -End of Item 0091 - -Begin of Item 0092 - Format 0 - srcBegin = 8CE4 - srcEnd = 8CE9 - destBegin = B6A5 -End of Item 0092 - -Begin of Item 0093 - Format 0 - srcBegin = 8CEE - srcEnd = 8CFE - destBegin = B6B2 -End of Item 0093 - -Begin of Item 0094 - Format 0 - srcBegin = 8D41 - srcEnd = 8D51 - destBegin = B6C3 -End of Item 0094 - -Begin of Item 0095 - Format 0 - srcBegin = 8D52 - srcEnd = 8D5A - destBegin = B6D5 -End of Item 0095 - -Begin of Item 0096 - Format 0 - srcBegin = 8D61 - srcEnd = 8D72 - destBegin = B6DE -End of Item 0096 - -Begin of Item 0097 - Format 0 - srcBegin = 8D81 - srcEnd = 8D85 - destBegin = B6FB -End of Item 0097 - -Begin of Item 0098 - Format 0 - srcBegin = 8D89 - srcEnd = 8DAA - destBegin = B706 -End of Item 0098 - -Begin of Item 0099 - Format 0 - srcBegin = 8DAF - srcEnd = 8DB5 - destBegin = B731 -End of Item 0099 - -Begin of Item 009A - Format 0 - srcBegin = 8DB7 - srcEnd = 8DBE - destBegin = B73C -End of Item 009A - -Begin of Item 009B - Format 0 - srcBegin = 8DC5 - srcEnd = 8DCB - destBegin = B74D -End of Item 009B - -Begin of Item 009C - Format 0 - srcBegin = 8DCC - srcEnd = 8DD5 - destBegin = B756 -End of Item 009C - -Begin of Item 009D - Format 0 - srcBegin = 8DDC - srcEnd = 8DE2 - destBegin = B769 -End of Item 009D - -Begin of Item 009E - Format 0 - srcBegin = 8DE5 - srcEnd = 8DEA - destBegin = B776 -End of Item 009E - -Begin of Item 009F - Format 0 - srcBegin = 8DF0 - srcEnd = 8DF6 - destBegin = B785 -End of Item 009F - -Begin of Item 00A0 - Format 0 - srcBegin = 8E42 - srcEnd = 8E48 - destBegin = B7A1 -End of Item 00A0 - -Begin of Item 00A1 - Format 0 - srcBegin = 8E4A - srcEnd = 8E4F - destBegin = B7AE -End of Item 00A1 - -Begin of Item 00A2 - Format 0 - srcBegin = 8E52 - srcEnd = 8E5A - destBegin = B7B9 -End of Item 00A2 - -Begin of Item 00A3 - Format 0 - srcBegin = 8E61 - srcEnd = 8E65 - destBegin = B7C2 -End of Item 00A3 - -Begin of Item 00A4 - Format 0 - srcBegin = 8E67 - srcEnd = 8E7A - destBegin = B7CA -End of Item 00A4 - -Begin of Item 00A5 - Format 0 - srcBegin = 8E81 - srcEnd = 8E8E - destBegin = B7DE -End of Item 00A5 - -Begin of Item 00A6 - Format 0 - srcBegin = 8E94 - srcEnd = 8E9A - destBegin = B7F5 -End of Item 00A6 - -Begin of Item 00A7 - Format 0 - srcBegin = 8E9C - srcEnd = 8EA0 - destBegin = B802 -End of Item 00A7 - -Begin of Item 00A8 - Format 0 - srcBegin = 8EA6 - srcEnd = 8EAC - destBegin = B811 -End of Item 00A8 - -Begin of Item 00A9 - Format 0 - srcBegin = 8EAF - srcEnd = 8EB4 - destBegin = B81E -End of Item 00A9 - -Begin of Item 00AA - Format 0 - srcBegin = 8EBA - srcEnd = 8EC0 - destBegin = B82D -End of Item 00AA - -Begin of Item 00AB - Format 0 - srcBegin = 8EC2 - srcEnd = 8EC7 - destBegin = B83A -End of Item 00AB - -Begin of Item 00AC - Format 0 - srcBegin = 8ECB - srcEnd = 8ED6 - destBegin = B845 -End of Item 00AC - -Begin of Item 00AD - Format 0 - srcBegin = 8ED8 - srcEnd = 8EDF - destBegin = B854 -End of Item 00AD - -Begin of Item 00AE - Format 0 - srcBegin = 8EE5 - srcEnd = 8EEB - destBegin = B865 -End of Item 00AE - -Begin of Item 00AF - Format 0 - srcBegin = 8EEE - srcEnd = 8EF3 - destBegin = B872 -End of Item 00AF - -Begin of Item 00B0 - Format 0 - srcBegin = 8EF7 - srcEnd = 8EFE - destBegin = B87D -End of Item 00B0 - -Begin of Item 00B1 - Format 0 - srcBegin = 8F41 - srcEnd = 8F48 - destBegin = B885 -End of Item 00B1 - -Begin of Item 00B2 - Format 0 - srcBegin = 8F49 - srcEnd = 8F5A - destBegin = B88E -End of Item 00B2 - -Begin of Item 00B3 - Format 0 - srcBegin = 8F61 - srcEnd = 8F68 - destBegin = B8A0 -End of Item 00B3 - -Begin of Item 00B4 - Format 0 - srcBegin = 8F69 - srcEnd = 8F6F - destBegin = B8A9 -End of Item 00B4 - -Begin of Item 00B5 - Format 0 - srcBegin = 8F76 - srcEnd = 8F7A - destBegin = B8B9 -End of Item 00B5 - -Begin of Item 00B6 - Format 0 - srcBegin = 8F85 - srcEnd = 8F8A - destBegin = B8C6 -End of Item 00B6 - -Begin of Item 00B7 - Format 0 - srcBegin = 8F91 - srcEnd = 8F98 - destBegin = B8D5 -End of Item 00B7 - -Begin of Item 00B8 - Format 0 - srcBegin = 8F9B - srcEnd = 8FA0 - destBegin = B8E2 -End of Item 00B8 - -Begin of Item 00B9 - Format 0 - srcBegin = 8FA6 - srcEnd = 8FAC - destBegin = B8F1 -End of Item 00B9 - -Begin of Item 00BA - Format 0 - srcBegin = 8FAF - srcEnd = 8FB4 - destBegin = B8FE -End of Item 00BA - -Begin of Item 00BB - Format 0 - srcBegin = 8FB5 - srcEnd = 8FC7 - destBegin = B905 -End of Item 00BB - -Begin of Item 00BC - Format 0 - srcBegin = 8FC8 - srcEnd = 8FCE - destBegin = B919 -End of Item 00BC - -Begin of Item 00BD - Format 0 - srcBegin = 8FCF - srcEnd = 8FE9 - destBegin = B921 -End of Item 00BD - -Begin of Item 00BE - Format 0 - srcBegin = 8FEF - srcEnd = 8FF5 - destBegin = B945 -End of Item 00BE - -Begin of Item 00BF - Format 0 - srcBegin = 8FF9 - srcEnd = 8FFE - destBegin = B952 -End of Item 00BF - -Begin of Item 00C0 - Format 0 - srcBegin = 9046 - srcEnd = 904C - destBegin = B961 -End of Item 00C0 - -Begin of Item 00C1 - Format 0 - srcBegin = 904F - srcEnd = 9054 - destBegin = B96E -End of Item 00C1 - -Begin of Item 00C2 - Format 0 - srcBegin = 9061 - srcEnd = 9066 - destBegin = B97E -End of Item 00C2 - -Begin of Item 00C3 - Format 0 - srcBegin = 906B - srcEnd = 907A - destBegin = B98F -End of Item 00C3 - -Begin of Item 00C4 - Format 0 - srcBegin = 9081 - srcEnd = 908D - destBegin = B99F -End of Item 00C4 - -Begin of Item 00C5 - Format 0 - srcBegin = 9093 - srcEnd = 9099 - destBegin = B9B5 -End of Item 00C5 - -Begin of Item 00C6 - Format 0 - srcBegin = 909C - srcEnd = 90A1 - destBegin = B9C2 -End of Item 00C6 - -Begin of Item 00C7 - Format 0 - srcBegin = 90A5 - srcEnd = 90A9 - destBegin = B9D3 -End of Item 00C7 - -Begin of Item 00C8 - Format 0 - srcBegin = 90B4 - srcEnd = 90BA - destBegin = B9ED -End of Item 00C8 - -Begin of Item 00C9 - Format 0 - srcBegin = 90BC - srcEnd = 90C0 - destBegin = B9FB -End of Item 00C9 - -Begin of Item 00CA - Format 0 - srcBegin = 90C1 - srcEnd = 90C6 - destBegin = BA02 -End of Item 00CA - -Begin of Item 00CB - Format 0 - srcBegin = 90C7 - srcEnd = 90D2 - destBegin = BA09 -End of Item 00CB - -Begin of Item 00CC - Format 0 - srcBegin = 90D3 - srcEnd = 90F4 - destBegin = BA16 -End of Item 00CC - -Begin of Item 00CD - Format 0 - srcBegin = 914D - srcEnd = 9153 - destBegin = BA5D -End of Item 00CD - -Begin of Item 00CE - Format 0 - srcBegin = 9155 - srcEnd = 915A - destBegin = BA6A -End of Item 00CE - -Begin of Item 00CF - Format 0 - srcBegin = 9166 - srcEnd = 916F - destBegin = BA79 -End of Item 00CF - -Begin of Item 00D0 - Format 0 - srcBegin = 9175 - srcEnd = 917A - destBegin = BA8D -End of Item 00D0 - -Begin of Item 00D1 - Format 0 - srcBegin = 9181 - srcEnd = 9195 - destBegin = BA93 -End of Item 00D1 - -Begin of Item 00D2 - Format 0 - srcBegin = 919B - srcEnd = 919F - destBegin = BAB3 -End of Item 00D2 - -Begin of Item 00D3 - Format 0 - srcBegin = 91A2 - srcEnd = 91A7 - destBegin = BABE -End of Item 00D3 - -Begin of Item 00D4 - Format 0 - srcBegin = 91AB - srcEnd = 91B9 - destBegin = BAC9 -End of Item 00D4 - -Begin of Item 00D5 - Format 0 - srcBegin = 91BA - srcEnd = 91DB - destBegin = BADA -End of Item 00D5 - -Begin of Item 00D6 - Format 0 - srcBegin = 91E2 - srcEnd = 91E9 - destBegin = BB05 -End of Item 00D6 - -Begin of Item 00D7 - Format 0 - srcBegin = 91EC - srcEnd = 91F1 - destBegin = BB12 -End of Item 00D7 - -Begin of Item 00D8 - Format 0 - srcBegin = 91F8 - srcEnd = 91FE - destBegin = BB21 -End of Item 00D8 - -Begin of Item 00D9 - Format 0 - srcBegin = 9243 - srcEnd = 924A - destBegin = BB2C -End of Item 00D9 - -Begin of Item 00DA - Format 0 - srcBegin = 924E - srcEnd = 9252 - destBegin = BB3F -End of Item 00DA - -Begin of Item 00DB - Format 0 - srcBegin = 9265 - srcEnd = 926C - destBegin = BB59 -End of Item 00DB - -Begin of Item 00DC - Format 0 - srcBegin = 926E - srcEnd = 9275 - destBegin = BB64 -End of Item 00DC - -Begin of Item 00DD - Format 0 - srcBegin = 9276 - srcEnd = 927A - destBegin = BB6D -End of Item 00DD - -Begin of Item 00DE - Format 0 - srcBegin = 9281 - srcEnd = 9296 - destBegin = BB72 -End of Item 00DE - -Begin of Item 00DF - Format 0 - srcBegin = 929D - srcEnd = 92AF - destBegin = BB91 -End of Item 00DF - -Begin of Item 00E0 - Format 0 - srcBegin = 92B6 - srcEnd = 92BC - destBegin = BBAD -End of Item 00E0 - -Begin of Item 00E1 - Format 0 - srcBegin = 92BF - srcEnd = 92C6 - destBegin = BBB8 -End of Item 00E1 - -Begin of Item 00E2 - Format 0 - srcBegin = 92CD - srcEnd = 92D3 - destBegin = BBC9 -End of Item 00E2 - -Begin of Item 00E3 - Format 0 - srcBegin = 92D6 - srcEnd = 92F9 - destBegin = BBD4 -End of Item 00E3 - -Begin of Item 00E4 - Format 0 - srcBegin = 9341 - srcEnd = 9345 - destBegin = BC03 -End of Item 00E4 - -Begin of Item 00E5 - Format 0 - srcBegin = 9363 - srcEnd = 9369 - destBegin = BC39 -End of Item 00E5 - -Begin of Item 00E6 - Format 0 - srcBegin = 9372 - srcEnd = 937A - destBegin = BC51 -End of Item 00E6 - -Begin of Item 00E7 - Format 0 - srcBegin = 9384 - srcEnd = 93A9 - destBegin = BC5E -End of Item 00E7 - -Begin of Item 00E8 - Format 0 - srcBegin = 93AF - srcEnd = 93B3 - destBegin = BC8F -End of Item 00E8 - -Begin of Item 00E9 - Format 0 - srcBegin = 93B6 - srcEnd = 93BA - destBegin = BC9B -End of Item 00E9 - -Begin of Item 00EA - Format 0 - srcBegin = 93BF - srcEnd = 93C5 - destBegin = BCA9 -End of Item 00EA - -Begin of Item 00EB - Format 0 - srcBegin = 93C7 - srcEnd = 93CC - destBegin = BCB6 -End of Item 00EB - -Begin of Item 00EC - Format 0 - srcBegin = 93D2 - srcEnd = 93D9 - destBegin = BCC5 -End of Item 00EC - -Begin of Item 00ED - Format 0 - srcBegin = 93E3 - srcEnd = 93F9 - destBegin = BCDD -End of Item 00ED - -Begin of Item 00EE - Format 0 - srcBegin = 9441 - srcEnd = 9446 - destBegin = BCFE -End of Item 00EE - -Begin of Item 00EF - Format 0 - srcBegin = 9449 - srcEnd = 944E - destBegin = BD0A -End of Item 00EF - -Begin of Item 00F0 - Format 0 - srcBegin = 9452 - srcEnd = 945A - destBegin = BD15 -End of Item 00F0 - -Begin of Item 00F1 - Format 0 - srcBegin = 9461 - srcEnd = 9466 - destBegin = BD1E -End of Item 00F1 - -Begin of Item 00F2 - Format 0 - srcBegin = 9467 - srcEnd = 946D - destBegin = BD25 -End of Item 00F2 - -Begin of Item 00F3 - Format 0 - srcBegin = 946E - srcEnd = 947A - destBegin = BD2D -End of Item 00F3 - -Begin of Item 00F4 - Format 0 - srcBegin = 9481 - srcEnd = 9486 - destBegin = BD3A -End of Item 00F4 - -Begin of Item 00F5 - Format 0 - srcBegin = 9487 - srcEnd = 948D - destBegin = BD41 -End of Item 00F5 - -Begin of Item 00F6 - Format 0 - srcBegin = 9493 - srcEnd = 9499 - destBegin = BD51 -End of Item 00F6 - -Begin of Item 00F7 - Format 0 - srcBegin = 949A - srcEnd = 94A3 - destBegin = BD5A -End of Item 00F7 - -Begin of Item 00F8 - Format 0 - srcBegin = 94A7 - srcEnd = 94BD - destBegin = BD69 -End of Item 00F8 - -Begin of Item 00F9 - Format 0 - srcBegin = 94C2 - srcEnd = 94C6 - destBegin = BD8B -End of Item 00F9 - -Begin of Item 00FA - Format 0 - srcBegin = 94CD - srcEnd = 94D3 - destBegin = BD9D -End of Item 00FA - -Begin of Item 00FB - Format 0 - srcBegin = 94D4 - srcEnd = 94DE - destBegin = BDA5 -End of Item 00FB - -Begin of Item 00FC - Format 0 - srcBegin = 94DF - srcEnd = 94E5 - destBegin = BDB1 -End of Item 00FC - -Begin of Item 00FD - Format 0 - srcBegin = 94E6 - srcEnd = 94FE - destBegin = BDB9 -End of Item 00FD - -Begin of Item 00FE - Format 0 - srcBegin = 9548 - srcEnd = 9553 - destBegin = BDDD -End of Item 00FE - -Begin of Item 00FF - Format 0 - srcBegin = 9554 - srcEnd = 9559 - destBegin = BDEA -End of Item 00FF - -Begin of Item 0100 - Format 0 - srcBegin = 9566 - srcEnd = 956C - destBegin = BDF9 -End of Item 0100 - -Begin of Item 0101 - Format 0 - srcBegin = 9570 - srcEnd = 9575 - destBegin = BE06 -End of Item 0101 - -Begin of Item 0102 - Format 0 - srcBegin = 9581 - srcEnd = 9587 - destBegin = BE15 -End of Item 0102 - -Begin of Item 0103 - Format 0 - srcBegin = 9589 - srcEnd = 95AC - destBegin = BE20 -End of Item 0103 - -Begin of Item 0104 - Format 0 - srcBegin = 95B3 - srcEnd = 95B7 - destBegin = BE4F -End of Item 0104 - -Begin of Item 0105 - Format 0 - srcBegin = 95C4 - srcEnd = 95C8 - destBegin = BE6B -End of Item 0105 - -Begin of Item 0106 - Format 0 - srcBegin = 95CA - srcEnd = 95CE - destBegin = BE76 -End of Item 0106 - -Begin of Item 0107 - Format 0 - srcBegin = 95D4 - srcEnd = 95DA - destBegin = BE85 -End of Item 0107 - -Begin of Item 0108 - Format 0 - srcBegin = 95DC - srcEnd = 95E1 - destBegin = BE92 -End of Item 0108 - -Begin of Item 0109 - Format 0 - srcBegin = 95E2 - srcEnd = 95EF - destBegin = BE9A -End of Item 0109 - -Begin of Item 010A - Format 0 - srcBegin = 95F0 - srcEnd = 95FE - destBegin = BEA9 -End of Item 010A - -Begin of Item 010B - Format 0 - srcBegin = 9641 - srcEnd = 9658 - destBegin = BEB8 -End of Item 010B - -Begin of Item 010C - Format 0 - srcBegin = 9663 - srcEnd = 9669 - destBegin = BED9 -End of Item 010C - -Begin of Item 010D - Format 0 - srcBegin = 966C - srcEnd = 9671 - destBegin = BEE6 -End of Item 010D - -Begin of Item 010E - Format 0 - srcBegin = 9672 - srcEnd = 967A - destBegin = BEED -End of Item 010E - -Begin of Item 010F - Format 0 - srcBegin = 9681 - srcEnd = 968B - destBegin = BEF6 -End of Item 010F - -Begin of Item 0110 - Format 0 - srcBegin = 968C - srcEnd = 9691 - destBegin = BF02 -End of Item 0110 - -Begin of Item 0111 - Format 0 - srcBegin = 9692 - srcEnd = 969F - destBegin = BF0A -End of Item 0111 - -Begin of Item 0112 - Format 0 - srcBegin = 96A1 - srcEnd = 96C2 - destBegin = BF1E -End of Item 0112 - -Begin of Item 0113 - Format 0 - srcBegin = 96C8 - srcEnd = 96CE - destBegin = BF49 -End of Item 0113 - -Begin of Item 0114 - Format 0 - srcBegin = 96D2 - srcEnd = 96FE - destBegin = BF56 -End of Item 0114 - -Begin of Item 0115 - Format 0 - srcBegin = 9741 - srcEnd = 9751 - destBegin = BF83 -End of Item 0115 - -Begin of Item 0116 - Format 0 - srcBegin = 9752 - srcEnd = 975A - destBegin = BF95 -End of Item 0116 - -Begin of Item 0117 - Format 0 - srcBegin = 9761 - srcEnd = 9772 - destBegin = BF9E -End of Item 0117 - -Begin of Item 0118 - Format 0 - srcBegin = 9773 - srcEnd = 977A - destBegin = BFB1 -End of Item 0118 - -Begin of Item 0119 - Format 0 - srcBegin = 9781 - srcEnd = 978C - destBegin = BFB9 -End of Item 0119 - -Begin of Item 011A - Format 0 - srcBegin = 978D - srcEnd = 9792 - destBegin = BFC6 -End of Item 011A - -Begin of Item 011B - Format 0 - srcBegin = 9798 - srcEnd = 979E - destBegin = BFD5 -End of Item 011B - -Begin of Item 011C - Format 0 - srcBegin = 97A2 - srcEnd = 97FB - destBegin = BFE2 -End of Item 011C - -Begin of Item 011D - Format 0 - srcBegin = 9841 - srcEnd = 9851 - destBegin = C040 -End of Item 011D - -Begin of Item 011E - Format 0 - srcBegin = 9852 - srcEnd = 9857 - destBegin = C052 -End of Item 011E - -Begin of Item 011F - Format 0 - srcBegin = 9864 - srcEnd = 986A - destBegin = C061 -End of Item 011F - -Begin of Item 0120 - Format 0 - srcBegin = 986B - srcEnd = 987A - destBegin = C06A -End of Item 0120 - -Begin of Item 0121 - Format 0 - srcBegin = 9881 - srcEnd = 9896 - destBegin = C07A -End of Item 0121 - -Begin of Item 0122 - Format 0 - srcBegin = 989C - srcEnd = 98A2 - destBegin = C099 -End of Item 0122 - -Begin of Item 0123 - Format 0 - srcBegin = 98A5 - srcEnd = 98AA - destBegin = C0A6 -End of Item 0123 - -Begin of Item 0124 - Format 0 - srcBegin = 98AE - srcEnd = 98B2 - destBegin = C0B7 -End of Item 0124 - -Begin of Item 0125 - Format 0 - srcBegin = 98BE - srcEnd = 98C4 - destBegin = C0D1 -End of Item 0125 - -Begin of Item 0126 - Format 0 - srcBegin = 98C6 - srcEnd = 98CB - destBegin = C0DE -End of Item 0126 - -Begin of Item 0127 - Format 0 - srcBegin = 98D1 - srcEnd = 98D7 - destBegin = C0ED -End of Item 0127 - -Begin of Item 0128 - Format 0 - srcBegin = 98DA - srcEnd = 98DF - destBegin = C0FA -End of Item 0128 - -Begin of Item 0129 - Format 0 - srcBegin = 98E6 - srcEnd = 98EC - destBegin = C109 -End of Item 0129 - -Begin of Item 012A - Format 0 - srcBegin = 98F1 - srcEnd = 98F6 - destBegin = C116 -End of Item 012A - -Begin of Item 012B - Format 0 - srcBegin = 994B - srcEnd = 9951 - destBegin = C141 -End of Item 012B - -Begin of Item 012C - Format 0 - srcBegin = 9953 - srcEnd = 9958 - destBegin = C14E -End of Item 012C - -Begin of Item 012D - Format 0 - srcBegin = 9964 - srcEnd = 996A - destBegin = C15D -End of Item 012D - -Begin of Item 012E - Format 0 - srcBegin = 996C - srcEnd = 9971 - destBegin = C16A -End of Item 012E - -Begin of Item 012F - Format 0 - srcBegin = 9981 - srcEnd = 9989 - destBegin = C17C -End of Item 012F - -Begin of Item 0130 - Format 0 - srcBegin = 998A - srcEnd = 998F - destBegin = C186 -End of Item 0130 - -Begin of Item 0131 - Format 0 - srcBegin = 9995 - srcEnd = 9999 - destBegin = C197 -End of Item 0131 - -Begin of Item 0132 - Format 0 - srcBegin = 99A6 - srcEnd = 99B1 - destBegin = C1B1 -End of Item 0132 - -Begin of Item 0133 - Format 0 - srcBegin = 99B2 - srcEnd = 99B7 - destBegin = C1BE -End of Item 0133 - -Begin of Item 0134 - Format 0 - srcBegin = 99BE - srcEnd = 99C4 - destBegin = C1CD -End of Item 0134 - -Begin of Item 0135 - Format 0 - srcBegin = 99C7 - srcEnd = 99CD - destBegin = C1D9 -End of Item 0135 - -Begin of Item 0136 - Format 0 - srcBegin = 99D4 - srcEnd = 99DA - destBegin = C1E9 -End of Item 0136 - -Begin of Item 0137 - Format 0 - srcBegin = 99DC - srcEnd = 99E3 - destBegin = C1F4 -End of Item 0137 - -Begin of Item 0138 - Format 0 - srcBegin = 99E9 - srcEnd = 99EF - destBegin = C205 -End of Item 0138 - -Begin of Item 0139 - Format 0 - srcBegin = 99F2 - srcEnd = 99F7 - destBegin = C212 -End of Item 0139 - -Begin of Item 013A - Format 0 - srcBegin = 9A4A - srcEnd = 9A5A - destBegin = C235 -End of Item 013A - -Begin of Item 013B - Format 0 - srcBegin = 9A63 - srcEnd = 9A69 - destBegin = C249 -End of Item 013B - -Begin of Item 013C - Format 0 - srcBegin = 9A6F - srcEnd = 9A75 - destBegin = C259 -End of Item 013C - -Begin of Item 013D - Format 0 - srcBegin = 9A81 - srcEnd = 9A85 - destBegin = C267 -End of Item 013D - -Begin of Item 013E - Format 0 - srcBegin = 9A8B - srcEnd = 9A91 - destBegin = C275 -End of Item 013E - -Begin of Item 013F - Format 0 - srcBegin = 9A94 - srcEnd = 9A99 - destBegin = C282 -End of Item 013F - -Begin of Item 0140 - Format 0 - srcBegin = 9A9A - srcEnd = 9A9F - destBegin = C28A -End of Item 0140 - -Begin of Item 0141 - Format 0 - srcBegin = 9AA0 - srcEnd = 9AA6 - destBegin = C291 -End of Item 0141 - -Begin of Item 0142 - Format 0 - srcBegin = 9AAA - srcEnd = 9AAF - destBegin = C29E -End of Item 0142 - -Begin of Item 0143 - Format 0 - srcBegin = 9AB5 - srcEnd = 9ABA - destBegin = C2AE -End of Item 0143 - -Begin of Item 0144 - Format 0 - srcBegin = 9ABD - srcEnd = 9ADE - destBegin = C2BA -End of Item 0144 - -Begin of Item 0145 - Format 0 - srcBegin = 9AE3 - srcEnd = 9AE8 - destBegin = C2E5 -End of Item 0145 - -Begin of Item 0146 - Format 0 - srcBegin = 9AF4 - srcEnd = 9AFA - destBegin = C301 -End of Item 0146 - -Begin of Item 0147 - Format 0 - srcBegin = 9B49 - srcEnd = 9B4F - destBegin = C31D -End of Item 0147 - -Begin of Item 0148 - Format 0 - srcBegin = 9B52 - srcEnd = 9B5A - destBegin = C32A -End of Item 0148 - -Begin of Item 0149 - Format 0 - srcBegin = 9B61 - srcEnd = 9B72 - destBegin = C333 -End of Item 0149 - -Begin of Item 014A - Format 0 - srcBegin = 9B73 - srcEnd = 9B7A - destBegin = C346 -End of Item 014A - -Begin of Item 014B - Format 0 - srcBegin = 9B81 - srcEnd = 9B9A - destBegin = C34E -End of Item 014B - -Begin of Item 014C - Format 0 - srcBegin = 9BA1 - srcEnd = 9BA5 - destBegin = C373 -End of Item 014C - -Begin of Item 014D - Format 0 - srcBegin = 9BA8 - srcEnd = 9BAD - destBegin = C37E -End of Item 014D - -Begin of Item 014E - Format 0 - srcBegin = 9BB4 - srcEnd = 9BE6 - destBegin = C38D -End of Item 014E - -Begin of Item 014F - Format 0 - srcBegin = 9BE7 - srcEnd = 9BFD - destBegin = C3C1 -End of Item 014F - -Begin of Item 0150 - Format 0 - srcBegin = 9C45 - srcEnd = 9C49 - destBegin = C3E3 -End of Item 0150 - -Begin of Item 0151 - Format 0 - srcBegin = 9C4D - srcEnd = 9C52 - destBegin = C3EE -End of Item 0151 - -Begin of Item 0152 - Format 0 - srcBegin = 9C55 - srcEnd = 9C5A - destBegin = C3F9 -End of Item 0152 - -Begin of Item 0153 - Format 0 - srcBegin = 9C61 - srcEnd = 9C69 - destBegin = C3FF -End of Item 0153 - -Begin of Item 0154 - Format 0 - srcBegin = 9C6A - srcEnd = 9C70 - destBegin = C409 -End of Item 0154 - -Begin of Item 0155 - Format 0 - srcBegin = 9C71 - srcEnd = 9C7A - destBegin = C411 -End of Item 0155 - -Begin of Item 0156 - Format 0 - srcBegin = 9C81 - srcEnd = 9C89 - destBegin = C41B -End of Item 0156 - -Begin of Item 0157 - Format 0 - srcBegin = 9C8A - srcEnd = 9C90 - destBegin = C425 -End of Item 0157 - -Begin of Item 0158 - Format 0 - srcBegin = 9C97 - srcEnd = 9C9D - destBegin = C435 -End of Item 0158 - -Begin of Item 0159 - Format 0 - srcBegin = 9C9E - srcEnd = 9CA7 - destBegin = C43E -End of Item 0159 - -Begin of Item 015A - Format 0 - srcBegin = 9CA8 - srcEnd = 9CC2 - destBegin = C449 -End of Item 015A - -Begin of Item 015B - Format 0 - srcBegin = 9CC8 - srcEnd = 9CCE - destBegin = C46D -End of Item 015B - -Begin of Item 015C - Format 0 - srcBegin = 9CD2 - srcEnd = 9CD7 - destBegin = C47A -End of Item 015C - -Begin of Item 015D - Format 0 - srcBegin = 9CD8 - srcEnd = 9CEA - destBegin = C481 -End of Item 015D - -Begin of Item 015E - Format 0 - srcBegin = 9CEB - srcEnd = 9CF1 - destBegin = C495 -End of Item 015E - -Begin of Item 015F - Format 0 - srcBegin = 9CF2 - srcEnd = 9CFE - destBegin = C49D -End of Item 015F - -Begin of Item 0160 - Format 0 - srcBegin = 9D41 - srcEnd = 9D4E - destBegin = C4AA -End of Item 0160 - -Begin of Item 0161 - Format 0 - srcBegin = 9D52 - srcEnd = 9D5A - destBegin = C4BD -End of Item 0161 - -Begin of Item 0162 - Format 0 - srcBegin = 9D61 - srcEnd = 9D7A - destBegin = C4C6 -End of Item 0162 - -Begin of Item 0163 - Format 0 - srcBegin = 9D81 - srcEnd = 9D89 - destBegin = C4E0 -End of Item 0163 - -Begin of Item 0164 - Format 0 - srcBegin = 9D8A - srcEnd = 9D8F - destBegin = C4EA -End of Item 0164 - -Begin of Item 0165 - Format 0 - srcBegin = 9D9A - srcEnd = 9DA3 - destBegin = C502 -End of Item 0165 - -Begin of Item 0166 - Format 0 - srcBegin = 9DAA - srcEnd = 9DB0 - destBegin = C515 -End of Item 0166 - -Begin of Item 0167 - Format 0 - srcBegin = 9DB1 - srcEnd = 9DBB - destBegin = C51D -End of Item 0167 - -Begin of Item 0168 - Format 0 - srcBegin = 9DC1 - srcEnd = 9DC7 - destBegin = C531 -End of Item 0168 - -Begin of Item 0169 - Format 0 - srcBegin = 9DCA - srcEnd = 9DCF - destBegin = C53E -End of Item 0169 - -Begin of Item 016A - Format 0 - srcBegin = 9DE1 - srcEnd = 9DE7 - destBegin = C569 -End of Item 016A - -Begin of Item 016B - Format 0 - srcBegin = 9DE9 - srcEnd = 9DEE - destBegin = C576 -End of Item 016B - -Begin of Item 016C - Format 0 - srcBegin = 9E48 - srcEnd = 9E4F - destBegin = C5A1 -End of Item 016C - -Begin of Item 016D - Format 0 - srcBegin = 9E50 - srcEnd = 9E59 - destBegin = C5AA -End of Item 016D - -Begin of Item 016E - Format 0 - srcBegin = 9E63 - srcEnd = 9E67 - destBegin = C5BF -End of Item 016E - -Begin of Item 016F - Format 0 - srcBegin = 9E70 - srcEnd = 9E76 - destBegin = C5D9 -End of Item 016F - -Begin of Item 0170 - Format 0 - srcBegin = 9E97 - srcEnd = 9E9D - destBegin = C611 -End of Item 0170 - -Begin of Item 0171 - Format 0 - srcBegin = 9E9F - srcEnd = 9EA5 - destBegin = C61D -End of Item 0171 - -Begin of Item 0172 - Format 0 - srcBegin = 9EBA - srcEnd = 9EC0 - destBegin = C649 -End of Item 0172 - -Begin of Item 0173 - Format 0 - srcBegin = 9EC2 - srcEnd = 9EC7 - destBegin = C656 -End of Item 0173 - -Begin of Item 0174 - Format 0 - srcBegin = 9ECA - srcEnd = 9ED4 - destBegin = C661 -End of Item 0174 - -Begin of Item 0175 - Format 0 - srcBegin = 9ED8 - srcEnd = 9EDD - destBegin = C672 -End of Item 0175 - -Begin of Item 0176 - Format 0 - srcBegin = 9EE3 - srcEnd = 9EE9 - destBegin = C681 -End of Item 0176 - -Begin of Item 0177 - Format 0 - srcBegin = 9EEC - srcEnd = 9EF1 - destBegin = C68E -End of Item 0177 - -Begin of Item 0178 - Format 0 - srcBegin = 9EF7 - srcEnd = 9EFD - destBegin = C69D -End of Item 0178 - -Begin of Item 0179 - Format 0 - srcBegin = 9F42 - srcEnd = 9F47 - destBegin = C6AA -End of Item 0179 - -Begin of Item 017A - Format 0 - srcBegin = 9F4D - srcEnd = 9F51 - destBegin = C6BB -End of Item 017A - -Begin of Item 017B - Format 0 - srcBegin = 9F54 - srcEnd = 9F59 - destBegin = C6C6 -End of Item 017B - -Begin of Item 017C - Format 0 - srcBegin = 9F65 - srcEnd = 9F6B - destBegin = C6D5 -End of Item 017C - -Begin of Item 017D - Format 0 - srcBegin = 9F6E - srcEnd = 9F73 - destBegin = C6E2 -End of Item 017D - -Begin of Item 017E - Format 0 - srcBegin = 9F81 - srcEnd = 9F85 - destBegin = C6F3 -End of Item 017E - -Begin of Item 017F - Format 0 - srcBegin = 9F89 - srcEnd = 9F8E - destBegin = C6FE -End of Item 017F - -Begin of Item 0180 - Format 0 - srcBegin = 9F94 - srcEnd = 9F9A - destBegin = C70D -End of Item 0180 - -Begin of Item 0181 - Format 0 - srcBegin = 9F9D - srcEnd = 9FA2 - destBegin = C71A -End of Item 0181 - -Begin of Item 0182 - Format 0 - srcBegin = 9FA8 - srcEnd = 9FAE - destBegin = C729 -End of Item 0182 - -Begin of Item 0183 - Format 0 - srcBegin = 9FBB - srcEnd = 9FBF - destBegin = C745 -End of Item 0183 - -Begin of Item 0184 - Format 0 - srcBegin = 9FC9 - srcEnd = 9FCF - destBegin = C761 -End of Item 0184 - -Begin of Item 0185 - Format 0 - srcBegin = 9FD2 - srcEnd = 9FD9 - destBegin = C76C -End of Item 0185 - -Begin of Item 0186 - Format 0 - srcBegin = 9FEC - srcEnd = 9FF0 - destBegin = C79B -End of Item 0186 - -Begin of Item 0187 - Format 0 - srcBegin = 9FF2 - srcEnd = 9FF6 - destBegin = C7A7 -End of Item 0187 - -Begin of Item 0188 - Format 0 - srcBegin = A046 - srcEnd = A04B - destBegin = C7C2 -End of Item 0188 - -Begin of Item 0189 - Format 0 - srcBegin = A050 - srcEnd = A056 - destBegin = C7D1 -End of Item 0189 - -Begin of Item 018A - Format 0 - srcBegin = A061 - srcEnd = A066 - destBegin = C7DE -End of Item 018A - -Begin of Item 018B - Format 0 - srcBegin = A06D - srcEnd = A07A - destBegin = C7ED -End of Item 018B - -Begin of Item 018C - Format 0 - srcBegin = A081 - srcEnd = A085 - destBegin = C7FB -End of Item 018C - -Begin of Item 018D - Format 0 - srcBegin = A08C - srcEnd = A090 - destBegin = C80B -End of Item 018D - -Begin of Item 018E - Format 0 - srcBegin = A093 - srcEnd = A097 - destBegin = C817 -End of Item 018E - -Begin of Item 018F - Format 0 - srcBegin = A09D - srcEnd = A0A3 - destBegin = C825 -End of Item 018F - -Begin of Item 0190 - Format 0 - srcBegin = A0A6 - srcEnd = A0AB - destBegin = C832 -End of Item 0190 - -Begin of Item 0191 - Format 0 - srcBegin = A0B2 - srcEnd = A0B8 - destBegin = C841 -End of Item 0191 - -Begin of Item 0192 - Format 0 - srcBegin = A0BB - srcEnd = A0C0 - destBegin = C84E -End of Item 0192 - -Begin of Item 0193 - Format 0 - srcBegin = A0C1 - srcEnd = A0DB - destBegin = C855 -End of Item 0193 - -Begin of Item 0194 - Format 0 - srcBegin = A0E2 - srcEnd = A0E6 - destBegin = C87B -End of Item 0194 - -Begin of Item 0195 - Format 0 - srcBegin = A0EC - srcEnd = A0F1 - destBegin = C88E -End of Item 0195 - -Begin of Item 0196 - Format 0 - srcBegin = A0F2 - srcEnd = A0F9 - destBegin = C895 -End of Item 0196 - -Begin of Item 0197 - Format 0 - srcBegin = A144 - srcEnd = A156 - destBegin = C8A9 -End of Item 0197 - -Begin of Item 0198 - Format 0 - srcBegin = A169 - srcEnd = A16F - destBegin = C8CD -End of Item 0198 - -Begin of Item 0199 - Format 0 - srcBegin = A172 - srcEnd = A177 - destBegin = C8DA -End of Item 0199 - -Begin of Item 019A - Format 0 - srcBegin = A181 - srcEnd = A18F - destBegin = C8E6 -End of Item 019A - -Begin of Item 019B - Format 0 - srcBegin = A190 - srcEnd = A195 - destBegin = C8F6 -End of Item 019B - -Begin of Item 019C - Format 0 - srcBegin = A19B - srcEnd = A19F - destBegin = C907 -End of Item 019C - -Begin of Item 019D - Format 0 - srcBegin = A1B4 - srcEnd = A1BD - destBegin = 3008 -End of Item 019D - -Begin of Item 019E - Format 0 - srcBegin = A242 - srcEnd = A247 - destBegin = C912 -End of Item 019E - -Begin of Item 019F - Format 0 - srcBegin = A248 - srcEnd = A25A - destBegin = C919 -End of Item 019F - -Begin of Item 01A0 - Format 0 - srcBegin = A261 - srcEnd = A267 - destBegin = C92D -End of Item 01A0 - -Begin of Item 01A1 - Format 0 - srcBegin = A268 - srcEnd = A27A - destBegin = C935 -End of Item 01A1 - -Begin of Item 01A2 - Format 0 - srcBegin = A281 - srcEnd = A288 - destBegin = C948 -End of Item 01A2 - -Begin of Item 01A3 - Format 0 - srcBegin = A28E - srcEnd = A294 - destBegin = C959 -End of Item 01A3 - -Begin of Item 01A4 - Format 0 - srcBegin = A296 - srcEnd = A29D - destBegin = C964 -End of Item 01A4 - -Begin of Item 01A5 - Format 0 - srcBegin = A344 - srcEnd = A34A - destBegin = C975 -End of Item 01A5 - -Begin of Item 01A6 - Format 0 - srcBegin = A34B - srcEnd = A355 - destBegin = C97D -End of Item 01A6 - -Begin of Item 01A7 - Format 0 - srcBegin = A361 - srcEnd = A367 - destBegin = C991 -End of Item 01A7 - -Begin of Item 01A8 - Format 0 - srcBegin = A36A - srcEnd = A37A - destBegin = C99E -End of Item 01A8 - -Begin of Item 01A9 - Format 0 - srcBegin = A381 - srcEnd = A391 - destBegin = C9AF -End of Item 01A9 - -Begin of Item 01AA - Format 0 - srcBegin = A397 - srcEnd = A39B - destBegin = C9CB -End of Item 01AA - -Begin of Item 01AB - Format 0 - srcBegin = A3A1 - srcEnd = A3DB - destBegin = FF01 -End of Item 01AB - -Begin of Item 01AC - Format 0 - srcBegin = A3DD - srcEnd = A3FD - destBegin = FF3D -End of Item 01AC - -Begin of Item 01AD - Format 0 - srcBegin = A44C - srcEnd = A451 - destBegin = C9F2 -End of Item 01AD - -Begin of Item 01AE - Format 0 - srcBegin = A465 - srcEnd = A46A - destBegin = CA0E -End of Item 01AE - -Begin of Item 01AF - Format 0 - srcBegin = A46E - srcEnd = A47A - destBegin = CA19 -End of Item 01AF - -Begin of Item 01B0 - Format 0 - srcBegin = A484 - srcEnd = A4A0 - destBegin = CA2A -End of Item 01B0 - -Begin of Item 01B1 - Format 0 - srcBegin = A4A1 - srcEnd = A4FE - destBegin = 3131 -End of Item 01B1 - -Begin of Item 01B2 - Format 0 - srcBegin = A541 - srcEnd = A545 - destBegin = CA47 -End of Item 01B2 - -Begin of Item 01B3 - Format 0 - srcBegin = A54B - srcEnd = A551 - destBegin = CA55 -End of Item 01B3 - -Begin of Item 01B4 - Format 0 - srcBegin = A553 - srcEnd = A558 - destBegin = CA62 -End of Item 01B4 - -Begin of Item 01B5 - Format 0 - srcBegin = A561 - srcEnd = A572 - destBegin = CA6B -End of Item 01B5 - -Begin of Item 01B6 - Format 0 - srcBegin = A573 - srcEnd = A578 - destBegin = CA7E -End of Item 01B6 - -Begin of Item 01B7 - Format 0 - srcBegin = A581 - srcEnd = A591 - destBegin = CA87 -End of Item 01B7 - -Begin of Item 01B8 - Format 0 - srcBegin = A592 - srcEnd = A5A0 - destBegin = CA99 -End of Item 01B8 - -Begin of Item 01B9 - Format 0 - srcBegin = A5A1 - srcEnd = A5AA - destBegin = 2170 -End of Item 01B9 - -Begin of Item 01BA - Format 0 - srcBegin = A5B0 - srcEnd = A5B9 - destBegin = 2160 -End of Item 01BA - -Begin of Item 01BB - Format 0 - srcBegin = A5C1 - srcEnd = A5D1 - destBegin = 0391 -End of Item 01BB - -Begin of Item 01BC - Format 0 - srcBegin = A5D2 - srcEnd = A5D8 - destBegin = 03A3 -End of Item 01BC - -Begin of Item 01BD - Format 0 - srcBegin = A5E1 - srcEnd = A5F1 - destBegin = 03B1 -End of Item 01BD - -Begin of Item 01BE - Format 0 - srcBegin = A5F2 - srcEnd = A5F8 - destBegin = 03C3 -End of Item 01BE - -Begin of Item 01BF - Format 0 - srcBegin = A641 - srcEnd = A654 - destBegin = CAA8 -End of Item 01BF - -Begin of Item 01C0 - Format 0 - srcBegin = A661 - srcEnd = A666 - destBegin = CAC6 -End of Item 01C0 - -Begin of Item 01C1 - Format 0 - srcBegin = A66E - srcEnd = A673 - destBegin = CADA -End of Item 01C1 - -Begin of Item 01C2 - Format 0 - srcBegin = A674 - srcEnd = A67A - destBegin = CAE1 -End of Item 01C2 - -Begin of Item 01C3 - Format 0 - srcBegin = A685 - srcEnd = A68B - destBegin = CAED -End of Item 01C3 - -Begin of Item 01C4 - Format 0 - srcBegin = A68C - srcEnd = A69E - destBegin = CAF5 -End of Item 01C4 - -Begin of Item 01C5 - Format 0 - srcBegin = A6DD - srcEnd = A6E4 - destBegin = 2543 -End of Item 01C5 - -Begin of Item 01C6 - Format 0 - srcBegin = A741 - srcEnd = A745 - destBegin = CB0B -End of Item 01C6 - -Begin of Item 01C7 - Format 0 - srcBegin = A74C - srcEnd = A752 - destBegin = CB19 -End of Item 01C7 - -Begin of Item 01C8 - Format 0 - srcBegin = A753 - srcEnd = A75A - destBegin = CB22 -End of Item 01C8 - -Begin of Item 01C9 - Format 0 - srcBegin = A761 - srcEnd = A777 - destBegin = CB2A -End of Item 01C9 - -Begin of Item 01CA - Format 0 - srcBegin = A789 - srcEnd = A78F - destBegin = CB51 -End of Item 01CA - -Begin of Item 01CB - Format 0 - srcBegin = A793 - srcEnd = A798 - destBegin = CB5E -End of Item 01CB - -Begin of Item 01CC - Format 0 - srcBegin = A799 - srcEnd = A7A0 - destBegin = CB65 -End of Item 01CC - -Begin of Item 01CD - Format 0 - srcBegin = A7AB - srcEnd = A7B4 - destBegin = 3399 -End of Item 01CD - -Begin of Item 01CE - Format 0 - srcBegin = A7BF - srcEnd = A7C8 - destBegin = 33B0 -End of Item 01CE - -Begin of Item 01CF - Format 0 - srcBegin = A7C9 - srcEnd = A7CD - destBegin = 3380 -End of Item 01CF - -Begin of Item 01D0 - Format 0 - srcBegin = A7CE - srcEnd = A7D3 - destBegin = 33BA -End of Item 01D0 - -Begin of Item 01D1 - Format 0 - srcBegin = A7D4 - srcEnd = A7D8 - destBegin = 3390 -End of Item 01D1 - -Begin of Item 01D2 - Format 0 - srcBegin = A841 - srcEnd = A84B - destBegin = CB6D -End of Item 01D2 - -Begin of Item 01D3 - Format 0 - srcBegin = A84C - srcEnd = A85A - destBegin = CB7A -End of Item 01D3 - -Begin of Item 01D4 - Format 0 - srcBegin = A861 - srcEnd = A873 - destBegin = CB89 -End of Item 01D4 - -Begin of Item 01D5 - Format 0 - srcBegin = A874 - srcEnd = A87A - destBegin = CB9D -End of Item 01D5 - -Begin of Item 01D6 - Format 0 - srcBegin = A881 - srcEnd = A894 - destBegin = CBA4 -End of Item 01D6 - -Begin of Item 01D7 - Format 0 - srcBegin = A895 - srcEnd = A8A0 - destBegin = CBB9 -End of Item 01D7 - -Begin of Item 01D8 - Format 0 - srcBegin = A8B1 - srcEnd = A8CC - destBegin = 3260 -End of Item 01D8 - -Begin of Item 01D9 - Format 0 - srcBegin = A8CD - srcEnd = A8E6 - destBegin = 24D0 -End of Item 01D9 - -Begin of Item 01DA - Format 0 - srcBegin = A8E7 - srcEnd = A8F5 - destBegin = 2460 -End of Item 01DA - -Begin of Item 01DB - Format 0 - srcBegin = A941 - srcEnd = A94F - destBegin = CBC5 -End of Item 01DB - -Begin of Item 01DC - Format 0 - srcBegin = A950 - srcEnd = A95A - destBegin = CBD5 -End of Item 01DC - -Begin of Item 01DD - Format 0 - srcBegin = A968 - srcEnd = A97A - destBegin = CBEA -End of Item 01DD - -Begin of Item 01DE - Format 0 - srcBegin = A981 - srcEnd = A98F - destBegin = CBFD -End of Item 01DE - -Begin of Item 01DF - Format 0 - srcBegin = A995 - srcEnd = A99B - destBegin = CC15 -End of Item 01DF - -Begin of Item 01E0 - Format 0 - srcBegin = A9B1 - srcEnd = A9CC - destBegin = 3200 -End of Item 01E0 - -Begin of Item 01E1 - Format 0 - srcBegin = A9CD - srcEnd = A9E6 - destBegin = 249C -End of Item 01E1 - -Begin of Item 01E2 - Format 0 - srcBegin = A9E7 - srcEnd = A9F5 - destBegin = 2474 -End of Item 01E2 - -Begin of Item 01E3 - Format 0 - srcBegin = AA47 - srcEnd = AA4D - destBegin = CC31 -End of Item 01E3 - -Begin of Item 01E4 - Format 0 - srcBegin = AA4F - srcEnd = AA53 - destBegin = CC3F -End of Item 01E4 - -Begin of Item 01E5 - Format 0 - srcBegin = AA61 - srcEnd = AA65 - destBegin = CC4F -End of Item 01E5 - -Begin of Item 01E6 - Format 0 - srcBegin = AA67 - srcEnd = AA6C - destBegin = CC5A -End of Item 01E6 - -Begin of Item 01E7 - Format 0 - srcBegin = AA72 - srcEnd = AA78 - destBegin = CC69 -End of Item 01E7 - -Begin of Item 01E8 - Format 0 - srcBegin = AA83 - srcEnd = AAA0 - destBegin = CC76 -End of Item 01E8 - -Begin of Item 01E9 - Format 0 - srcBegin = AAA1 - srcEnd = AAF3 - destBegin = 3041 -End of Item 01E9 - -Begin of Item 01EA - Format 0 - srcBegin = AB4A - srcEnd = AB50 - destBegin = CCA1 -End of Item 01EA - -Begin of Item 01EB - Format 0 - srcBegin = AB52 - srcEnd = AB57 - destBegin = CCAE -End of Item 01EB - -Begin of Item 01EC - Format 0 - srcBegin = AB63 - srcEnd = AB69 - destBegin = CCBD -End of Item 01EC - -Begin of Item 01ED - Format 0 - srcBegin = AB6C - srcEnd = AB71 - destBegin = CCCA -End of Item 01ED - -Begin of Item 01EE - Format 0 - srcBegin = AB75 - srcEnd = AB7A - destBegin = CCD5 -End of Item 01EE - -Begin of Item 01EF - Format 0 - srcBegin = AB81 - srcEnd = AB89 - destBegin = CCDB -End of Item 01EF - -Begin of Item 01F0 - Format 0 - srcBegin = AB8A - srcEnd = AB90 - destBegin = CCE5 -End of Item 01F0 - -Begin of Item 01F1 - Format 0 - srcBegin = AB94 - srcEnd = ABA0 - destBegin = CCF1 -End of Item 01F1 - -Begin of Item 01F2 - Format 0 - srcBegin = ABA1 - srcEnd = ABF6 - destBegin = 30A1 -End of Item 01F2 - -Begin of Item 01F3 - Format 0 - srcBegin = AC44 - srcEnd = AC49 - destBegin = CD02 -End of Item 01F3 - -Begin of Item 01F4 - Format 0 - srcBegin = AC4F - srcEnd = AC55 - destBegin = CD11 -End of Item 01F4 - -Begin of Item 01F5 - Format 0 - srcBegin = AC6A - srcEnd = AC75 - destBegin = CD2D -End of Item 01F5 - -Begin of Item 01F6 - Format 0 - srcBegin = AC76 - srcEnd = AC7A - destBegin = CD3A -End of Item 01F6 - -Begin of Item 01F7 - Format 0 - srcBegin = AC81 - srcEnd = AC9D - destBegin = CD3F -End of Item 01F7 - -Begin of Item 01F8 - Format 0 - srcBegin = ACA1 - srcEnd = ACA6 - destBegin = 0410 -End of Item 01F8 - -Begin of Item 01F9 - Format 0 - srcBegin = ACA8 - srcEnd = ACC1 - destBegin = 0416 -End of Item 01F9 - -Begin of Item 01FA - Format 0 - srcBegin = ACD1 - srcEnd = ACD6 - destBegin = 0430 -End of Item 01FA - -Begin of Item 01FB - Format 0 - srcBegin = ACD8 - srcEnd = ACF1 - destBegin = 0436 -End of Item 01FB - -Begin of Item 01FC - Format 0 - srcBegin = AD44 - srcEnd = AD4A - destBegin = CD65 -End of Item 01FC - -Begin of Item 01FD - Format 0 - srcBegin = AD4D - srcEnd = AD52 - destBegin = CD72 -End of Item 01FD - -Begin of Item 01FE - Format 0 - srcBegin = AD53 - srcEnd = AD5A - destBegin = CD79 -End of Item 01FE - -Begin of Item 01FF - Format 0 - srcBegin = AD61 - srcEnd = AD67 - destBegin = CD81 -End of Item 01FF - -Begin of Item 0200 - Format 0 - srcBegin = AD68 - srcEnd = AD72 - destBegin = CD89 -End of Item 0200 - -Begin of Item 0201 - Format 0 - srcBegin = AD87 - srcEnd = AD8C - destBegin = CDAA -End of Item 0201 - -Begin of Item 0202 - Format 0 - srcBegin = AD8D - srcEnd = AD9F - destBegin = CDB1 -End of Item 0202 - -Begin of Item 0203 - Format 0 - srcBegin = AE41 - srcEnd = AE46 - destBegin = CDC6 -End of Item 0203 - -Begin of Item 0204 - Format 0 - srcBegin = AE4A - srcEnd = AE5A - destBegin = CDD1 -End of Item 0204 - -Begin of Item 0205 - Format 0 - srcBegin = AE61 - srcEnd = AE66 - destBegin = CDE2 -End of Item 0205 - -Begin of Item 0206 - Format 0 - srcBegin = AE6D - srcEnd = AE73 - destBegin = CDF1 -End of Item 0206 - -Begin of Item 0207 - Format 0 - srcBegin = AE76 - srcEnd = AE7A - destBegin = CDFE -End of Item 0207 - -Begin of Item 0208 - Format 0 - srcBegin = AE88 - srcEnd = AE8E - destBegin = CE0D -End of Item 0208 - -Begin of Item 0209 - Format 0 - srcBegin = AE93 - srcEnd = AE98 - destBegin = CE1A -End of Item 0209 - -Begin of Item 020A - Format 0 - srcBegin = AF47 - srcEnd = AF5A - destBegin = CE36 -End of Item 020A - -Begin of Item 020B - Format 0 - srcBegin = AF61 - srcEnd = AF6E - destBegin = CE4A -End of Item 020B - -Begin of Item 020C - Format 0 - srcBegin = AF73 - srcEnd = AF78 - destBegin = CE62 -End of Item 020C - -Begin of Item 020D - Format 0 - srcBegin = AF81 - srcEnd = AF86 - destBegin = CE6E -End of Item 020D - -Begin of Item 020E - Format 0 - srcBegin = AF8C - srcEnd = AF92 - destBegin = CE7D -End of Item 020E - -Begin of Item 020F - Format 0 - srcBegin = AF95 - srcEnd = AF9A - destBegin = CE8A -End of Item 020F - -Begin of Item 0210 - Format 0 - srcBegin = B041 - srcEnd = B046 - destBegin = CE9A -End of Item 0210 - -Begin of Item 0211 - Format 0 - srcBegin = B048 - srcEnd = B04D - destBegin = CEA6 -End of Item 0211 - -Begin of Item 0212 - Format 0 - srcBegin = B04E - srcEnd = B05A - destBegin = CEAE -End of Item 0212 - -Begin of Item 0213 - Format 0 - srcBegin = B061 - srcEnd = B066 - destBegin = CEBB -End of Item 0213 - -Begin of Item 0214 - Format 0 - srcBegin = B067 - srcEnd = B07A - destBegin = CEC2 -End of Item 0214 - -Begin of Item 0215 - Format 0 - srcBegin = B081 - srcEnd = B08E - destBegin = CED6 -End of Item 0215 - -Begin of Item 0216 - Format 0 - srcBegin = B093 - srcEnd = B099 - destBegin = CEED -End of Item 0216 - -Begin of Item 0217 - Format 0 - srcBegin = B09B - srcEnd = B0A0 - destBegin = CEFA -End of Item 0217 - -Begin of Item 0218 - Format 0 - srcBegin = B0A8 - srcEnd = B0AF - destBegin = AC10 -End of Item 0218 - -Begin of Item 0219 - Format 0 - srcBegin = B0B0 - srcEnd = B0B4 - destBegin = AC19 -End of Item 0219 - -Begin of Item 021A - Format 0 - srcBegin = B146 - srcEnd = B14C - destBegin = CF09 -End of Item 021A - -Begin of Item 021B - Format 0 - srcBegin = B14F - srcEnd = B154 - destBegin = CF16 -End of Item 021B - -Begin of Item 021C - Format 0 - srcBegin = B161 - srcEnd = B167 - destBegin = CF25 -End of Item 021C - -Begin of Item 021D - Format 0 - srcBegin = B169 - srcEnd = B16E - destBegin = CF32 -End of Item 021D - -Begin of Item 021E - Format 0 - srcBegin = B16F - srcEnd = B17A - destBegin = CF39 -End of Item 021E - -Begin of Item 021F - Format 0 - srcBegin = B181 - srcEnd = B18F - destBegin = CF45 -End of Item 021F - -Begin of Item 0220 - Format 0 - srcBegin = B195 - srcEnd = B19B - destBegin = CF5D -End of Item 0220 - -Begin of Item 0221 - Format 0 - srcBegin = B249 - srcEnd = B24F - destBegin = CF79 -End of Item 0221 - -Begin of Item 0222 - Format 0 - srcBegin = B254 - srcEnd = B259 - destBegin = CF86 -End of Item 0222 - -Begin of Item 0223 - Format 0 - srcBegin = B261 - srcEnd = B273 - destBegin = CF8E -End of Item 0223 - -Begin of Item 0224 - Format 0 - srcBegin = B274 - srcEnd = B279 - destBegin = CFA2 -End of Item 0224 - -Begin of Item 0225 - Format 0 - srcBegin = B281 - srcEnd = B286 - destBegin = CFAA -End of Item 0225 - -Begin of Item 0226 - Format 0 - srcBegin = B287 - srcEnd = B299 - destBegin = CFB1 -End of Item 0226 - -Begin of Item 0227 - Format 0 - srcBegin = B29A - srcEnd = B2A0 - destBegin = CFC5 -End of Item 0227 - -Begin of Item 0228 - Format 0 - srcBegin = B341 - srcEnd = B354 - destBegin = CFCC -End of Item 0228 - -Begin of Item 0229 - Format 0 - srcBegin = B361 - srcEnd = B366 - destBegin = CFEA -End of Item 0229 - -Begin of Item 022A - Format 0 - srcBegin = B369 - srcEnd = B36E - destBegin = CFF6 -End of Item 022A - -Begin of Item 022B - Format 0 - srcBegin = B375 - srcEnd = B37A - destBegin = D005 -End of Item 022B - -Begin of Item 022C - Format 0 - srcBegin = B381 - srcEnd = B386 - destBegin = D00B -End of Item 022C - -Begin of Item 022D - Format 0 - srcBegin = B387 - srcEnd = B38C - destBegin = D012 -End of Item 022D - -Begin of Item 022E - Format 0 - srcBegin = B38D - srcEnd = B3A0 - destBegin = D019 -End of Item 022E - -Begin of Item 022F - Format 0 - srcBegin = B3B4 - srcEnd = B3B8 - destBegin = B0AB -End of Item 022F - -Begin of Item 0230 - Format 0 - srcBegin = B441 - srcEnd = B446 - destBegin = D02E -End of Item 0230 - -Begin of Item 0231 - Format 0 - srcBegin = B44C - srcEnd = B452 - destBegin = D03D -End of Item 0231 - -Begin of Item 0232 - Format 0 - srcBegin = B455 - srcEnd = B45A - destBegin = D04A -End of Item 0232 - -Begin of Item 0233 - Format 0 - srcBegin = B467 - srcEnd = B46D - destBegin = D059 -End of Item 0233 - -Begin of Item 0234 - Format 0 - srcBegin = B46E - srcEnd = B478 - destBegin = D061 -End of Item 0234 - -Begin of Item 0235 - Format 0 - srcBegin = B484 - srcEnd = B48A - destBegin = D075 -End of Item 0235 - -Begin of Item 0236 - Format 0 - srcBegin = B48E - srcEnd = B4A0 - destBegin = D082 -End of Item 0236 - -Begin of Item 0237 - Format 0 - srcBegin = B4DD - srcEnd = B4E1 - destBegin = B2EB -End of Item 0237 - -Begin of Item 0238 - Format 0 - srcBegin = B4E5 - srcEnd = B4E9 - destBegin = B2F7 -End of Item 0238 - -Begin of Item 0239 - Format 0 - srcBegin = B541 - srcEnd = B54F - destBegin = D095 -End of Item 0239 - -Begin of Item 023A - Format 0 - srcBegin = B555 - srcEnd = B55A - destBegin = D0AD -End of Item 023A - -Begin of Item 023B - Format 0 - srcBegin = B564 - srcEnd = B569 - destBegin = D0BA -End of Item 023B - -Begin of Item 023C - Format 0 - srcBegin = B56F - srcEnd = B574 - destBegin = D0CA -End of Item 023C - -Begin of Item 023D - Format 0 - srcBegin = B576 - srcEnd = B57A - destBegin = D0D6 -End of Item 023D - -Begin of Item 023E - Format 0 - srcBegin = B587 - srcEnd = B58D - destBegin = D0E5 -End of Item 023E - -Begin of Item 023F - Format 0 - srcBegin = B58F - srcEnd = B594 - destBegin = D0F2 -End of Item 023F - -Begin of Item 0240 - Format 0 - srcBegin = B595 - srcEnd = B5A0 - destBegin = D0F9 -End of Item 0240 - -Begin of Item 0241 - Format 0 - srcBegin = B641 - srcEnd = B648 - destBegin = D105 -End of Item 0241 - -Begin of Item 0242 - Format 0 - srcBegin = B649 - srcEnd = B65A - destBegin = D10E -End of Item 0242 - -Begin of Item 0243 - Format 0 - srcBegin = B661 - srcEnd = B670 - destBegin = D120 -End of Item 0243 - -Begin of Item 0244 - Format 0 - srcBegin = B683 - srcEnd = B688 - destBegin = D146 -End of Item 0244 - -Begin of Item 0245 - Format 0 - srcBegin = B68E - srcEnd = B694 - destBegin = D155 -End of Item 0245 - -Begin of Item 0246 - Format 0 - srcBegin = B697 - srcEnd = B69C - destBegin = D162 -End of Item 0246 - -Begin of Item 0247 - Format 0 - srcBegin = B741 - srcEnd = B74E - destBegin = D16E -End of Item 0247 - -Begin of Item 0248 - Format 0 - srcBegin = B74F - srcEnd = B755 - destBegin = D17D -End of Item 0248 - -Begin of Item 0249 - Format 0 - srcBegin = B761 - srcEnd = B775 - destBegin = D18B -End of Item 0249 - -Begin of Item 024A - Format 0 - srcBegin = B781 - srcEnd = B787 - destBegin = D1A9 -End of Item 024A - -Begin of Item 024B - Format 0 - srcBegin = B792 - srcEnd = B7A0 - destBegin = D1C1 -End of Item 024B - -Begin of Item 024C - Format 0 - srcBegin = B841 - srcEnd = B848 - destBegin = D1D0 -End of Item 024C - -Begin of Item 024D - Format 0 - srcBegin = B849 - srcEnd = B85A - destBegin = D1D9 -End of Item 024D - -Begin of Item 024E - Format 0 - srcBegin = B861 - srcEnd = B869 - destBegin = D1EB -End of Item 024E - -Begin of Item 024F - Format 0 - srcBegin = B86D - srcEnd = B87A - destBegin = D1F9 -End of Item 024F - -Begin of Item 0250 - Format 0 - srcBegin = B882 - srcEnd = B887 - destBegin = D20A -End of Item 0250 - -Begin of Item 0251 - Format 0 - srcBegin = B888 - srcEnd = B8A0 - destBegin = D211 -End of Item 0251 - -Begin of Item 0252 - Format 0 - srcBegin = B8B9 - srcEnd = B8BD - destBegin = B9CE -End of Item 0252 - -Begin of Item 0253 - Format 0 - srcBegin = B948 - srcEnd = B94E - destBegin = D235 -End of Item 0253 - -Begin of Item 0254 - Format 0 - srcBegin = B951 - srcEnd = B956 - destBegin = D242 -End of Item 0254 - -Begin of Item 0255 - Format 0 - srcBegin = B961 - srcEnd = B96F - destBegin = D24D -End of Item 0255 - -Begin of Item 0256 - Format 0 - srcBegin = B970 - srcEnd = B976 - destBegin = D25D -End of Item 0256 - -Begin of Item 0257 - Format 0 - srcBegin = B981 - srcEnd = B997 - destBegin = D269 -End of Item 0257 - -Begin of Item 0258 - Format 0 - srcBegin = B9D9 - srcEnd = B9DD - destBegin = BC14 -End of Item 0258 - -Begin of Item 0259 - Format 0 - srcBegin = B9DE - srcEnd = B9E2 - destBegin = BC1B -End of Item 0259 - -Begin of Item 025A - Format 0 - srcBegin = BA47 - srcEnd = BA4C - destBegin = D296 -End of Item 025A - -Begin of Item 025B - Format 0 - srcBegin = BA53 - srcEnd = BA59 - destBegin = D2A5 -End of Item 025B - -Begin of Item 025C - Format 0 - srcBegin = BA64 - srcEnd = BA69 - destBegin = D2B2 -End of Item 025C - -Begin of Item 025D - Format 0 - srcBegin = BA6F - srcEnd = BA73 - destBegin = D2C3 -End of Item 025D - -Begin of Item 025E - Format 0 - srcBegin = BA75 - srcEnd = BA7A - destBegin = D2CC -End of Item 025E - -Begin of Item 025F - Format 0 - srcBegin = BA89 - srcEnd = BA8F - destBegin = D2DD -End of Item 025F - -Begin of Item 0260 - Format 0 - srcBegin = BA90 - srcEnd = BA99 - destBegin = D2E6 -End of Item 0260 - -Begin of Item 0261 - Format 0 - srcBegin = BB41 - srcEnd = BB45 - destBegin = D2FB -End of Item 0261 - -Begin of Item 0262 - Format 0 - srcBegin = BB48 - srcEnd = BB4D - destBegin = D306 -End of Item 0262 - -Begin of Item 0263 - Format 0 - srcBegin = BB53 - srcEnd = BB57 - destBegin = D317 -End of Item 0263 - -Begin of Item 0264 - Format 0 - srcBegin = BB69 - srcEnd = BB6F - destBegin = D331 -End of Item 0264 - -Begin of Item 0265 - Format 0 - srcBegin = BB71 - srcEnd = BB76 - destBegin = D33E -End of Item 0265 - -Begin of Item 0266 - Format 0 - srcBegin = BB81 - srcEnd = BBA0 - destBegin = D34A -End of Item 0266 - -Begin of Item 0267 - Format 0 - srcBegin = BC41 - srcEnd = BC52 - destBegin = D36A -End of Item 0267 - -Begin of Item 0268 - Format 0 - srcBegin = BC66 - srcEnd = BC6B - destBegin = D392 -End of Item 0268 - -Begin of Item 0269 - Format 0 - srcBegin = BC71 - srcEnd = BC77 - destBegin = D3A1 -End of Item 0269 - -Begin of Item 026A - Format 0 - srcBegin = BC81 - srcEnd = BC85 - destBegin = D3AF -End of Item 026A - -Begin of Item 026B - Format 0 - srcBegin = BC8C - srcEnd = BC92 - destBegin = D3BD -End of Item 026B - -Begin of Item 026C - Format 0 - srcBegin = BC95 - srcEnd = BC9A - destBegin = D3CA -End of Item 026C - -Begin of Item 026D - Format 0 - srcBegin = BC9B - srcEnd = BCA0 - destBegin = D3D1 -End of Item 026D - -Begin of Item 026E - Format 0 - srcBegin = BCAD - srcEnd = BCB1 - destBegin = C11C -End of Item 026E - -Begin of Item 026F - Format 0 - srcBegin = BD42 - srcEnd = BD49 - destBegin = D3D9 -End of Item 026F - -Begin of Item 0270 - Format 0 - srcBegin = BD4B - srcEnd = BD52 - destBegin = D3E4 -End of Item 0270 - -Begin of Item 0271 - Format 0 - srcBegin = BD67 - srcEnd = BD6C - destBegin = D402 -End of Item 0271 - -Begin of Item 0272 - Format 0 - srcBegin = BD6D - srcEnd = BD7A - destBegin = D409 -End of Item 0272 - -Begin of Item 0273 - Format 0 - srcBegin = BD81 - srcEnd = BD86 - destBegin = D417 -End of Item 0273 - -Begin of Item 0274 - Format 0 - srcBegin = BD87 - srcEnd = BDA0 - destBegin = D41E -End of Item 0274 - -Begin of Item 0275 - Format 0 - srcBegin = BE41 - srcEnd = BE48 - destBegin = D438 -End of Item 0275 - -Begin of Item 0276 - Format 0 - srcBegin = BE4C - srcEnd = BE5A - destBegin = D445 -End of Item 0276 - -Begin of Item 0277 - Format 0 - srcBegin = BE61 - srcEnd = BE68 - destBegin = D454 -End of Item 0277 - -Begin of Item 0278 - Format 0 - srcBegin = BE6F - srcEnd = BE76 - destBegin = D465 -End of Item 0278 - -Begin of Item 0279 - Format 0 - srcBegin = BE81 - srcEnd = BE85 - destBegin = D473 -End of Item 0279 - -Begin of Item 027A - Format 0 - srcBegin = BE8B - srcEnd = BE8F - destBegin = D483 -End of Item 027A - -Begin of Item 027B - Format 0 - srcBegin = BE92 - srcEnd = BE97 - destBegin = D48E -End of Item 027B - -Begin of Item 027C - Format 0 - srcBegin = BE98 - srcEnd = BEA0 - destBegin = D495 -End of Item 027C - -Begin of Item 027D - Format 0 - srcBegin = BEF6 - srcEnd = BEFC - destBegin = C5C4 -End of Item 027D - -Begin of Item 027E - Format 0 - srcBegin = BF41 - srcEnd = BF4B - destBegin = D49E -End of Item 027E - -Begin of Item 027F - Format 0 - srcBegin = BF4C - srcEnd = BF5A - destBegin = D4AA -End of Item 027F - -Begin of Item 0280 - Format 0 - srcBegin = BF61 - srcEnd = BF73 - destBegin = D4B9 -End of Item 0280 - -Begin of Item 0281 - Format 0 - srcBegin = BF81 - srcEnd = BF86 - destBegin = D4D6 -End of Item 0281 - -Begin of Item 0282 - Format 0 - srcBegin = BF89 - srcEnd = BF90 - destBegin = D4E0 -End of Item 0282 - -Begin of Item 0283 - Format 0 - srcBegin = BF97 - srcEnd = BF9D - destBegin = D4F1 -End of Item 0283 - -Begin of Item 0284 - Format 0 - srcBegin = BFB0 - srcEnd = BFB5 - destBegin = C5FC -End of Item 0284 - -Begin of Item 0285 - Format 0 - srcBegin = C041 - srcEnd = C046 - destBegin = D4FE -End of Item 0285 - -Begin of Item 0286 - Format 0 - srcBegin = C04D - srcEnd = C053 - destBegin = D50D -End of Item 0286 - -Begin of Item 0287 - Format 0 - srcBegin = C055 - srcEnd = C05A - destBegin = D518 -End of Item 0287 - -Begin of Item 0288 - Format 0 - srcBegin = C061 - srcEnd = C07A - destBegin = D51E -End of Item 0288 - -Begin of Item 0289 - Format 0 - srcBegin = C08A - srcEnd = C090 - destBegin = D545 -End of Item 0289 - -Begin of Item 028A - Format 0 - srcBegin = C093 - srcEnd = C098 - destBegin = D552 -End of Item 028A - -Begin of Item 028B - Format 0 - srcBegin = C0C0 - srcEnd = C0C7 - destBegin = C751 -End of Item 028B - -Begin of Item 028C - Format 0 - srcBegin = C146 - srcEnd = C14B - destBegin = D56E -End of Item 028C - -Begin of Item 028D - Format 0 - srcBegin = C151 - srcEnd = C157 - destBegin = D57D -End of Item 028D - -Begin of Item 028E - Format 0 - srcBegin = C165 - srcEnd = C178 - destBegin = D591 -End of Item 028E - -Begin of Item 028F - Format 0 - srcBegin = C181 - srcEnd = C1A0 - destBegin = D5A8 -End of Item 028F - -Begin of Item 0290 - Format 0 - srcBegin = C247 - srcEnd = C24B - destBegin = D5D3 -End of Item 0290 - -Begin of Item 0291 - Format 0 - srcBegin = C24E - srcEnd = C253 - destBegin = D5DE -End of Item 0291 - -Begin of Item 0292 - Format 0 - srcBegin = C261 - srcEnd = C265 - destBegin = D5EF -End of Item 0292 - -Begin of Item 0293 - Format 0 - srcBegin = C268 - srcEnd = C26D - destBegin = D5FA -End of Item 0293 - -Begin of Item 0294 - Format 0 - srcBegin = C273 - srcEnd = C279 - destBegin = D609 -End of Item 0294 - -Begin of Item 0295 - Format 0 - srcBegin = C281 - srcEnd = C286 - destBegin = D616 -End of Item 0295 - -Begin of Item 0296 - Format 0 - srcBegin = C28D - srcEnd = C294 - destBegin = D625 -End of Item 0296 - -Begin of Item 0297 - Format 0 - srcBegin = C295 - srcEnd = C29E - destBegin = D62E -End of Item 0297 - -Begin of Item 0298 - Format 0 - srcBegin = C356 - srcEnd = C35A - destBegin = D65D -End of Item 0298 - -Begin of Item 0299 - Format 0 - srcBegin = C361 - srcEnd = C365 - destBegin = D662 -End of Item 0299 - -Begin of Item 029A - Format 0 - srcBegin = C367 - srcEnd = C36C - destBegin = D66A -End of Item 029A - -Begin of Item 029B - Format 0 - srcBegin = C36F - srcEnd = C37A - destBegin = D675 -End of Item 029B - -Begin of Item 029C - Format 0 - srcBegin = C384 - srcEnd = C389 - destBegin = D686 -End of Item 029C - -Begin of Item 029D - Format 0 - srcBegin = C38F - srcEnd = C396 - destBegin = D695 -End of Item 029D - -Begin of Item 029E - Format 0 - srcBegin = C399 - srcEnd = C39E - destBegin = D6A2 -End of Item 029E - -Begin of Item 029F - Format 0 - srcBegin = C445 - srcEnd = C44C - destBegin = D6B1 -End of Item 029F - -Begin of Item 02A0 - Format 0 - srcBegin = C44E - srcEnd = C455 - destBegin = D6BC -End of Item 02A0 - -Begin of Item 02A1 - Format 0 - srcBegin = C46A - srcEnd = C46F - destBegin = D6DA -End of Item 02A1 - -Begin of Item 02A2 - Format 0 - srcBegin = C476 - srcEnd = C47A - destBegin = D6E9 -End of Item 02A2 - -Begin of Item 02A3 - Format 0 - srcBegin = C487 - srcEnd = C48C - destBegin = D6F6 -End of Item 02A3 - -Begin of Item 02A4 - Format 0 - srcBegin = C492 - srcEnd = C49D - destBegin = D705 -End of Item 02A4 - -Begin of Item 02A5 - Format 0 - srcBegin = C549 - srcEnd = C54F - destBegin = D721 -End of Item 02A5 - -Begin of Item 02A6 - Format 0 - srcBegin = C552 - srcEnd = C557 - destBegin = D72E -End of Item 02A6 - -Begin of Item 02A7 - Format 0 - srcBegin = C563 - srcEnd = C569 - destBegin = D73D -End of Item 02A7 - -Begin of Item 02A8 - Format 0 - srcBegin = C56D - srcEnd = C572 - destBegin = D74A -End of Item 02A8 - -Begin of Item 02A9 - Format 0 - srcBegin = C576 - srcEnd = C57A - destBegin = D75A -End of Item 02A9 - -Begin of Item 02AA - Format 0 - srcBegin = C58F - srcEnd = C595 - destBegin = D775 -End of Item 02AA - -Begin of Item 02AB - Format 0 - srcBegin = C599 - srcEnd = C59E - destBegin = D782 -End of Item 02AB - -Begin of Item 02AC - Format 0 - srcBegin = C644 - srcEnd = C64A - destBegin = D791 -End of Item 02AC - -Begin of Item 02AD - Format 0 - srcBegin = C64D - srcEnd = C652 - destBegin = D79E -End of Item 02AD - -Begin of Item 02AE - Format 0 - srcBegin = D1DB - srcEnd = D1E0 - destBegin = F90E -End of Item 02AE - -Begin of Item 02AF - Format 0 - srcBegin = D1E2 - srcEnd = D1E6 - destBegin = F914 -End of Item 02AF - -Begin of Item 02B0 - Format 0 - srcBegin = D2A7 - srcEnd = D2AB - destBegin = F928 -End of Item 02B0 - -Begin of Item 02B1 - Format 0 - srcBegin = D2C6 - srcEnd = D2CB - destBegin = F933 -End of Item 02B1 - -Begin of Item 02B2 - Format 0 - srcBegin = D2CD - srcEnd = D2D7 - destBegin = F939 -End of Item 02B2 - -Begin of Item 02B3 - Format 0 - srcBegin = D2E4 - srcEnd = D2EB - destBegin = F94A -End of Item 02B3 - -Begin of Item 02B4 - Format 0 - srcBegin = D2F0 - srcEnd = D2F5 - destBegin = F952 -End of Item 02B4 - -Begin of Item 02B5 - Format 1 - srcBegin = 8141 - srcEnd = 8144 - mappingOffset = 0000 - Mapping = - AC02 AC03 AC05 AC06 -End of Item 02B5 - -Begin of Item 02B6 - Format 1 - srcBegin = 814A - srcEnd = 814F - mappingOffset = 0004 - Mapping = - AC18 AC1E AC1F AC21 AC22 AC23 -End of Item 02B6 - -Begin of Item 02B7 - Format 1 - srcBegin = 8157 - srcEnd = 815A - mappingOffset = 000A - Mapping = - AC2E AC32 AC33 AC34 -End of Item 02B7 - -Begin of Item 02B8 - Format 1 - srcBegin = 8161 - srcEnd = 8168 - mappingOffset = 000E - Mapping = - AC35 AC36 AC37 AC3A AC3B AC3D AC3E AC3F -End of Item 02B8 - -Begin of Item 02B9 - Format 2 - srcBegin = 8173 - destBegin = AC4C -End of Item 02B9 - -Begin of Item 02BA - Format 2 - srcBegin = 817A - destBegin = AC55 -End of Item 02BA - -Begin of Item 02BB - Format 1 - srcBegin = 8181 - srcEnd = 8185 - mappingOffset = 0016 - Mapping = - AC56 AC57 AC59 AC5A AC5B -End of Item 02BB - -Begin of Item 02BC - Format 1 - srcBegin = 8199 - srcEnd = 819D - mappingOffset = 001B - Mapping = - AC72 AC73 AC75 AC76 AC79 -End of Item 02BC - -Begin of Item 02BD - Format 1 - srcBegin = 81A3 - srcEnd = 81AB - mappingOffset = 0020 - Mapping = - AC82 AC87 AC88 AC8D AC8E AC8F AC91 AC92 - AC93 -End of Item 02BD - -Begin of Item 02BE - Format 2 - srcBegin = 81B3 - destBegin = AC9E -End of Item 02BE - -Begin of Item 02BF - Format 1 - srcBegin = 81BA - srcEnd = 81BC - mappingOffset = 0029 - Mapping = - ACAB ACAD ACAE -End of Item 02BF - -Begin of Item 02C0 - Format 1 - srcBegin = 81C4 - srcEnd = 81CF - mappingOffset = 002C - Mapping = - ACBA ACBE ACBF ACC0 ACC2 ACC3 ACC5 ACC6 - ACC7 ACC9 ACCA ACCB -End of Item 02C0 - -Begin of Item 02C1 - Format 2 - srcBegin = 81D8 - destBegin = ACD6 -End of Item 02C1 - -Begin of Item 02C2 - Format 1 - srcBegin = 81E1 - srcEnd = 81EA - mappingOffset = 0038 - Mapping = - ACE2 ACE3 ACE5 ACE6 ACE9 ACEB ACED ACEE - ACF2 ACF4 -End of Item 02C2 - -Begin of Item 02C3 - Format 1 - srcBegin = 81F0 - srcEnd = 81F5 - mappingOffset = 0042 - Mapping = - ACFE ACFF AD01 AD02 AD03 AD05 -End of Item 02C3 - -Begin of Item 02C4 - Format 1 - srcBegin = 81FB - srcEnd = 81FE - mappingOffset = 0048 - Mapping = - AD0E AD10 AD12 AD13 -End of Item 02C4 - -Begin of Item 02C5 - Format 1 - srcBegin = 8241 - srcEnd = 824A - mappingOffset = 004C - Mapping = - AD14 AD15 AD16 AD17 AD19 AD1A AD1B AD1D - AD1E AD1F -End of Item 02C5 - -Begin of Item 02C6 - Format 1 - srcBegin = 8253 - srcEnd = 8254 - mappingOffset = 0056 - Mapping = - AD2A AD2B -End of Item 02C6 - -Begin of Item 02C7 - Format 1 - srcBegin = 8261 - srcEnd = 8265 - mappingOffset = 0058 - Mapping = - AD36 AD37 AD39 AD3A AD3B -End of Item 02C7 - -Begin of Item 02C8 - Format 1 - srcBegin = 826D - srcEnd = 826E - mappingOffset = 005D - Mapping = - AD46 AD48 -End of Item 02C8 - -Begin of Item 02C9 - Format 1 - srcBegin = 8275 - srcEnd = 827A - mappingOffset = 005F - Mapping = - AD51 AD52 AD53 AD55 AD56 AD57 -End of Item 02C9 - -Begin of Item 02CA - Format 2 - srcBegin = 8289 - destBegin = AD62 -End of Item 02CA - -Begin of Item 02CB - Format 1 - srcBegin = 8292 - srcEnd = 829B - mappingOffset = 0065 - Mapping = - AD6E AD6F AD71 AD72 AD77 AD78 AD79 AD7A - AD7E AD80 -End of Item 02CB - -Begin of Item 02CC - Format 1 - srcBegin = 82A1 - srcEnd = 82A5 - mappingOffset = 006F - Mapping = - AD8A AD8B AD8D AD8E AD8F -End of Item 02CC - -Begin of Item 02CD - Format 1 - srcBegin = 82D1 - srcEnd = 82D5 - mappingOffset = 0074 - Mapping = - ADC2 ADC3 ADC5 ADC6 ADC7 -End of Item 02CD - -Begin of Item 02CE - Format 2 - srcBegin = 82DD - destBegin = ADD2 -End of Item 02CE - -Begin of Item 02CF - Format 1 - srcBegin = 82E6 - srcEnd = 82EB - mappingOffset = 0079 - Mapping = - ADDD ADDE ADDF ADE1 ADE2 ADE3 -End of Item 02CF - -Begin of Item 02D0 - Format 1 - srcBegin = 8341 - srcEnd = 8344 - mappingOffset = 007F - Mapping = - ADFA ADFB ADFD ADFE -End of Item 02D0 - -Begin of Item 02D1 - Format 1 - srcBegin = 834B - srcEnd = 834C - mappingOffset = 0083 - Mapping = - AE0A AE0C -End of Item 02D1 - -Begin of Item 02D2 - Format 1 - srcBegin = 8374 - srcEnd = 837A - mappingOffset = 0085 - Mapping = - AE32 AE33 AE35 AE36 AE39 AE3B AE3C -End of Item 02D2 - -Begin of Item 02D3 - Format 1 - srcBegin = 8381 - srcEnd = 838E - mappingOffset = 008C - Mapping = - AE3D AE3E AE3F AE42 AE44 AE47 AE48 AE49 - AE4B AE4F AE51 AE52 AE53 AE55 -End of Item 02D3 - -Begin of Item 02D4 - Format 1 - srcBegin = 8394 - srcEnd = 839E - mappingOffset = 009A - Mapping = - AE5E AE62 AE63 AE64 AE66 AE67 AE6A AE6B - AE6D AE6E AE6F -End of Item 02D4 - -Begin of Item 02D5 - Format 2 - srcBegin = 83A6 - destBegin = AE7A -End of Item 02D5 - -Begin of Item 02D6 - Format 1 - srcBegin = 83E2 - srcEnd = 83E5 - mappingOffset = 00A5 - Mapping = - AEBF AEC1 AEC2 AEC3 -End of Item 02D6 - -Begin of Item 02D7 - Format 2 - srcBegin = 83ED - destBegin = AECE -End of Item 02D7 - -Begin of Item 02D8 - Format 1 - srcBegin = 83F4 - srcEnd = 83F5 - mappingOffset = 00A9 - Mapping = - AEDA AEDB -End of Item 02D8 - -Begin of Item 02D9 - Format 1 - srcBegin = 8441 - srcEnd = 8445 - mappingOffset = 00AB - Mapping = - AEE6 AEE7 AEE9 AEEA AEEC -End of Item 02D9 - -Begin of Item 02DA - Format 1 - srcBegin = 844C - srcEnd = 8451 - mappingOffset = 00B0 - Mapping = - AEF5 AEF6 AEF7 AEF9 AEFA AEFB -End of Item 02DA - -Begin of Item 02DB - Format 1 - srcBegin = 8461 - srcEnd = 8467 - mappingOffset = 00B6 - Mapping = - AF06 AF09 AF0A AF0B AF0C AF0E AF0F -End of Item 02DB - -Begin of Item 02DC - Format 1 - srcBegin = 8489 - srcEnd = 848C - mappingOffset = 00BD - Mapping = - AF2E AF2F AF31 AF33 -End of Item 02DC - -Begin of Item 02DD - Format 1 - srcBegin = 8494 - srcEnd = 8499 - mappingOffset = 00C1 - Mapping = - AF3E AF40 AF44 AF45 AF46 AF47 -End of Item 02DD - -Begin of Item 02DE - Format 1 - srcBegin = 84CA - srcEnd = 84CF - mappingOffset = 00C7 - Mapping = - AF81 AF82 AF83 AF85 AF86 AF87 -End of Item 02DE - -Begin of Item 02DF - Format 1 - srcBegin = 84D7 - srcEnd = 84D9 - mappingOffset = 00CD - Mapping = - AF92 AF93 AF94 -End of Item 02DF - -Begin of Item 02E0 - Format 1 - srcBegin = 84FB - srcEnd = 84FE - mappingOffset = 00D0 - Mapping = - AFBA AFBB AFBD AFBE -End of Item 02E0 - -Begin of Item 02E1 - Format 2 - srcBegin = 8541 - destBegin = AFBF -End of Item 02E1 - -Begin of Item 02E2 - Format 1 - srcBegin = 8548 - srcEnd = 8549 - mappingOffset = 00D4 - Mapping = - AFCA AFCC -End of Item 02E2 - -Begin of Item 02E3 - Format 1 - srcBegin = 856D - srcEnd = 8571 - mappingOffset = 00D6 - Mapping = - AFF2 AFF3 AFF5 AFF6 AFF7 -End of Item 02E3 - -Begin of Item 02E4 - Format 1 - srcBegin = 8579 - srcEnd = 857A - mappingOffset = 00DB - Mapping = - B002 B003 -End of Item 02E4 - -Begin of Item 02E5 - Format 1 - srcBegin = 8588 - srcEnd = 858D - mappingOffset = 00DD - Mapping = - B00D B00E B00F B011 B012 B013 -End of Item 02E5 - -Begin of Item 02E6 - Format 1 - srcBegin = 85BA - srcEnd = 85C7 - mappingOffset = 00E3 - Mapping = - B046 B047 B049 B04B B04D B04F B050 B051 - B052 B056 B058 B05A B05B B05C -End of Item 02E6 - -Begin of Item 02E7 - Format 1 - srcBegin = 85E6 - srcEnd = 85EA - mappingOffset = 00F1 - Mapping = - B07E B07F B081 B082 B083 -End of Item 02E7 - -Begin of Item 02E8 - Format 1 - srcBegin = 85F2 - srcEnd = 85F3 - mappingOffset = 00F6 - Mapping = - B08E B090 -End of Item 02E8 - -Begin of Item 02E9 - Format 1 - srcBegin = 85FA - srcEnd = 85FE - mappingOffset = 00F8 - Mapping = - B09B B09D B09E B0A3 B0A4 -End of Item 02E9 - -Begin of Item 02EA - Format 1 - srcBegin = 8641 - srcEnd = 864B - mappingOffset = 00FD - Mapping = - B0A5 B0A6 B0A7 B0AA B0B0 B0B2 B0B6 B0B7 - B0B9 B0BA B0BB -End of Item 02EA - -Begin of Item 02EB - Format 2 - srcBegin = 8653 - destBegin = B0C6 -End of Item 02EB - -Begin of Item 02EC - Format 2 - srcBegin = 865A - destBegin = B0D2 -End of Item 02EC - -Begin of Item 02ED - Format 1 - srcBegin = 8661 - srcEnd = 8664 - mappingOffset = 0108 - Mapping = - B0D3 B0D5 B0D6 B0D7 -End of Item 02ED - -Begin of Item 02EE - Format 1 - srcBegin = 866C - srcEnd = 866F - mappingOffset = 010C - Mapping = - B0E1 B0E2 B0E3 B0E4 -End of Item 02EE - -Begin of Item 02EF - Format 1 - srcBegin = 8698 - srcEnd = 86A1 - mappingOffset = 0110 - Mapping = - B10A B10D B10E B10F B111 B114 B115 B116 - B117 B11A -End of Item 02EF - -Begin of Item 02F0 - Format 1 - srcBegin = 86A7 - srcEnd = 86AB - mappingOffset = 011A - Mapping = - B126 B127 B129 B12A B12B -End of Item 02F0 - -Begin of Item 02F1 - Format 2 - srcBegin = 86B3 - destBegin = B136 -End of Item 02F1 - -Begin of Item 02F2 - Format 1 - srcBegin = 86BA - srcEnd = 86BE - mappingOffset = 011F - Mapping = - B142 B143 B145 B146 B147 -End of Item 02F2 - -Begin of Item 02F3 - Format 1 - srcBegin = 86C6 - srcEnd = 86CF - mappingOffset = 0124 - Mapping = - B152 B153 B156 B157 B159 B15A B15B B15D - B15E B15F -End of Item 02F3 - -Begin of Item 02F4 - Format 1 - srcBegin = 86E7 - srcEnd = 86EC - mappingOffset = 012E - Mapping = - B17A B17B B17D B17E B17F B181 -End of Item 02F4 - -Begin of Item 02F5 - Format 1 - srcBegin = 86F2 - srcEnd = 86FE - mappingOffset = 0134 - Mapping = - B18A B18C B18E B18F B190 B191 B195 B196 - B197 B199 B19A B19B B19D -End of Item 02F5 - -Begin of Item 02F6 - Format 1 - srcBegin = 8774 - srcEnd = 877A - mappingOffset = 0141 - Mapping = - B1CD B1CE B1CF B1D1 B1D2 B1D3 B1D5 -End of Item 02F6 - -Begin of Item 02F7 - Format 2 - srcBegin = 8787 - destBegin = B1DE -End of Item 02F7 - -Begin of Item 02F8 - Format 1 - srcBegin = 8790 - srcEnd = 8794 - mappingOffset = 0148 - Mapping = - B1EA B1EB B1ED B1EE B1EF -End of Item 02F8 - -Begin of Item 02F9 - Format 1 - srcBegin = 879D - srcEnd = 879E - mappingOffset = 014D - Mapping = - B1FA B1FC -End of Item 02F9 - -Begin of Item 02FA - Format 1 - srcBegin = 87A5 - srcEnd = 87A8 - mappingOffset = 014F - Mapping = - B206 B207 B209 B20A -End of Item 02FA - -Begin of Item 02FB - Format 1 - srcBegin = 87B0 - srcEnd = 87B1 - mappingOffset = 0153 - Mapping = - B216 B218 -End of Item 02FB - -Begin of Item 02FC - Format 1 - srcBegin = 87ED - srcEnd = 87F2 - mappingOffset = 0155 - Mapping = - B259 B25A B25B B25D B25E B25F -End of Item 02FC - -Begin of Item 02FD - Format 1 - srcBegin = 8853 - srcEnd = 8855 - mappingOffset = 015B - Mapping = - B286 B287 B288 -End of Item 02FD - -Begin of Item 02FE - Format 1 - srcBegin = 8861 - srcEnd = 8866 - mappingOffset = 015E - Mapping = - B28F B292 B293 B295 B296 B297 -End of Item 02FE - -Begin of Item 02FF - Format 1 - srcBegin = 886C - srcEnd = 887A - mappingOffset = 0164 - Mapping = - B2A2 B2A4 B2A7 B2A8 B2A9 B2AB B2AD B2AE - B2AF B2B1 B2B2 B2B3 B2B5 B2B6 B2B7 -End of Item 02FF - -Begin of Item 0300 - Format 1 - srcBegin = 8891 - srcEnd = 8896 - mappingOffset = 0173 - Mapping = - B2CA B2CB B2CD B2CE B2CF B2D1 -End of Item 0300 - -Begin of Item 0301 - Format 1 - srcBegin = 889C - srcEnd = 88B1 - mappingOffset = 0179 - Mapping = - B2DA B2DC B2DE B2DF B2E0 B2E1 B2E3 B2E7 - B2E9 B2EA B2F0 B2F1 B2F2 B2F6 B2FC B2FD - B2FE B302 B303 B305 B306 B307 -End of Item 0301 - -Begin of Item 0302 - Format 2 - srcBegin = 88B9 - destBegin = B312 -End of Item 0302 - -Begin of Item 0303 - Format 1 - srcBegin = 88F7 - srcEnd = 88FE - mappingOffset = 018F - Mapping = - B357 B359 B35A B35D B360 B361 B362 B363 -End of Item 0303 - -Begin of Item 0304 - Format 1 - srcBegin = 8941 - srcEnd = 894B - mappingOffset = 0197 - Mapping = - B366 B368 B36A B36C B36D B36F B372 B373 - B375 B376 B377 -End of Item 0304 - -Begin of Item 0305 - Format 2 - srcBegin = 8953 - destBegin = B382 -End of Item 0305 - -Begin of Item 0306 - Format 2 - srcBegin = 895A - destBegin = B38D -End of Item 0306 - -Begin of Item 0307 - Format 1 - srcBegin = 8961 - srcEnd = 8965 - mappingOffset = 01A2 - Mapping = - B38E B38F B391 B392 B393 -End of Item 0307 - -Begin of Item 0308 - Format 1 - srcBegin = 8977 - srcEnd = 897A - mappingOffset = 01A7 - Mapping = - B3A9 B3AA B3AB B3AD -End of Item 0308 - -Begin of Item 0309 - Format 1 - srcBegin = 8997 - srcEnd = 89AB - mappingOffset = 01AB - Mapping = - B3C6 B3C7 B3C9 B3CA B3CD B3CF B3D1 B3D2 - B3D3 B3D6 B3D8 B3DA B3DC B3DE B3DF B3E1 - B3E2 B3E3 B3E5 B3E6 B3E7 -End of Item 0309 - -Begin of Item 030A - Format 1 - srcBegin = 89D9 - srcEnd = 89DE - mappingOffset = 01C0 - Mapping = - B419 B41A B41B B41D B41E B41F -End of Item 030A - -Begin of Item 030B - Format 2 - srcBegin = 89E6 - destBegin = B42A -End of Item 030B - -Begin of Item 030C - Format 1 - srcBegin = 8A4C - srcEnd = 8A50 - mappingOffset = 01C6 - Mapping = - B452 B453 B455 B456 B457 -End of Item 030C - -Begin of Item 030D - Format 1 - srcBegin = 8A58 - srcEnd = 8A5A - mappingOffset = 01CB - Mapping = - B462 B464 B466 -End of Item 030D - -Begin of Item 030E - Format 1 - srcBegin = 8A79 - srcEnd = 8A7A - mappingOffset = 01CE - Mapping = - B481 B482 -End of Item 030E - -Begin of Item 030F - Format 1 - srcBegin = 8AA0 - srcEnd = 8AA5 - mappingOffset = 01D0 - Mapping = - B4A5 B4A6 B4A7 B4A9 B4AA B4AB -End of Item 030F - -Begin of Item 0310 - Format 1 - srcBegin = 8AAE - srcEnd = 8AAF - mappingOffset = 01D6 - Mapping = - B4B6 B4B8 -End of Item 0310 - -Begin of Item 0311 - Format 1 - srcBegin = 8AB6 - srcEnd = 8ABB - mappingOffset = 01D8 - Mapping = - B4C1 B4C2 B4C3 B4C5 B4C6 B4C7 -End of Item 0311 - -Begin of Item 0312 - Format 1 - srcBegin = 8AC3 - srcEnd = 8AC6 - mappingOffset = 01DE - Mapping = - B4D1 B4D2 B4D3 B4D4 -End of Item 0312 - -Begin of Item 0313 - Format 1 - srcBegin = 8ACD - srcEnd = 8AD1 - mappingOffset = 01E2 - Mapping = - B4DE B4DF B4E1 B4E2 B4E5 -End of Item 0313 - -Begin of Item 0314 - Format 1 - srcBegin = 8AD7 - srcEnd = 8AD8 - mappingOffset = 01E7 - Mapping = - B4EE B4F0 -End of Item 0314 - -Begin of Item 0315 - Format 1 - srcBegin = 8AFA - srcEnd = 8AFE - mappingOffset = 01E9 - Mapping = - B516 B517 B519 B51A B51D -End of Item 0315 - -Begin of Item 0316 - Format 2 - srcBegin = 8B47 - destBegin = B526 -End of Item 0316 - -Begin of Item 0317 - Format 1 - srcBegin = 8B4D - srcEnd = 8B51 - mappingOffset = 01EE - Mapping = - B532 B533 B535 B536 B537 -End of Item 0317 - -Begin of Item 0318 - Format 1 - srcBegin = 8B59 - srcEnd = 8B5A - mappingOffset = 01F3 - Mapping = - B542 B546 -End of Item 0318 - -Begin of Item 0319 - Format 1 - srcBegin = 8B61 - srcEnd = 8B69 - mappingOffset = 01F5 - Mapping = - B547 B548 B549 B54A B54E B54F B551 B552 - B553 -End of Item 0319 - -Begin of Item 031A - Format 2 - srcBegin = 8B71 - destBegin = B55E -End of Item 031A - -Begin of Item 031B - Format 1 - srcBegin = 8BB6 - srcEnd = 8BC0 - mappingOffset = 01FE - Mapping = - B5A2 B5A3 B5A5 B5A6 B5A7 B5A9 B5AC B5AD - B5AE B5AF B5B2 -End of Item 031B - -Begin of Item 031C - Format 1 - srcBegin = 8BC6 - srcEnd = 8BCA - mappingOffset = 0209 - Mapping = - B5BE B5BF B5C1 B5C2 B5C3 -End of Item 031C - -Begin of Item 031D - Format 2 - srcBegin = 8BD2 - destBegin = B5CE -End of Item 031D - -Begin of Item 031E - Format 1 - srcBegin = 8C51 - srcEnd = 8C55 - mappingOffset = 020E - Mapping = - B612 B613 B615 B616 B617 -End of Item 031E - -Begin of Item 031F - Format 1 - srcBegin = 8CA9 - srcEnd = 8CAB - mappingOffset = 0213 - Mapping = - B665 B666 B667 -End of Item 031F - -Begin of Item 0320 - Format 1 - srcBegin = 8CDF - srcEnd = 8CE3 - mappingOffset = 0216 - Mapping = - B69E B69F B6A1 B6A2 B6A3 -End of Item 0320 - -Begin of Item 0321 - Format 1 - srcBegin = 8CEA - srcEnd = 8CED - mappingOffset = 021B - Mapping = - B6AD B6AE B6AF B6B0 -End of Item 0321 - -Begin of Item 0322 - Format 1 - srcBegin = 8D73 - srcEnd = 8D7A - mappingOffset = 021F - Mapping = - B6F1 B6F2 B6F3 B6F5 B6F6 B6F7 B6F9 B6FA -End of Item 0322 - -Begin of Item 0323 - Format 1 - srcBegin = 8D86 - srcEnd = 8D88 - mappingOffset = 0227 - Mapping = - B702 B703 B704 -End of Item 0323 - -Begin of Item 0324 - Format 1 - srcBegin = 8DAB - srcEnd = 8DAE - mappingOffset = 022A - Mapping = - B72A B72B B72D B72E -End of Item 0324 - -Begin of Item 0325 - Format 2 - srcBegin = 8DB6 - destBegin = B73A -End of Item 0325 - -Begin of Item 0326 - Format 1 - srcBegin = 8DBF - srcEnd = 8DC4 - mappingOffset = 022E - Mapping = - B745 B746 B747 B749 B74A B74B -End of Item 0326 - -Begin of Item 0327 - Format 1 - srcBegin = 8DD6 - srcEnd = 8DDB - mappingOffset = 0234 - Mapping = - B761 B762 B763 B765 B766 B767 -End of Item 0327 - -Begin of Item 0328 - Format 1 - srcBegin = 8DE3 - srcEnd = 8DE4 - mappingOffset = 023A - Mapping = - B772 B774 -End of Item 0328 - -Begin of Item 0329 - Format 1 - srcBegin = 8DEB - srcEnd = 8DEF - mappingOffset = 023C - Mapping = - B77E B77F B781 B782 B783 -End of Item 0329 - -Begin of Item 032A - Format 1 - srcBegin = 8DF7 - srcEnd = 8DFE - mappingOffset = 0241 - Mapping = - B78E B793 B794 B795 B79A B79B B79D B79E -End of Item 032A - -Begin of Item 032B - Format 2 - srcBegin = 8E41 - destBegin = B79F -End of Item 032B - -Begin of Item 032C - Format 2 - srcBegin = 8E49 - destBegin = B7AA -End of Item 032C - -Begin of Item 032D - Format 1 - srcBegin = 8E50 - srcEnd = 8E51 - mappingOffset = 0249 - Mapping = - B7B6 B7B7 -End of Item 032D - -Begin of Item 032E - Format 2 - srcBegin = 8E66 - destBegin = B7C8 -End of Item 032E - -Begin of Item 032F - Format 1 - srcBegin = 8E8F - srcEnd = 8E93 - mappingOffset = 024B - Mapping = - B7EE B7EF B7F1 B7F2 B7F3 -End of Item 032F - -Begin of Item 0330 - Format 2 - srcBegin = 8E9B - destBegin = B7FE -End of Item 0330 - -Begin of Item 0331 - Format 1 - srcBegin = 8EA1 - srcEnd = 8EA5 - mappingOffset = 0250 - Mapping = - B80A B80B B80D B80E B80F -End of Item 0331 - -Begin of Item 0332 - Format 1 - srcBegin = 8EAD - srcEnd = 8EAE - mappingOffset = 0255 - Mapping = - B81A B81C -End of Item 0332 - -Begin of Item 0333 - Format 1 - srcBegin = 8EB5 - srcEnd = 8EB9 - mappingOffset = 0257 - Mapping = - B826 B827 B829 B82A B82B -End of Item 0333 - -Begin of Item 0334 - Format 2 - srcBegin = 8EC1 - destBegin = B836 -End of Item 0334 - -Begin of Item 0335 - Format 1 - srcBegin = 8EC8 - srcEnd = 8ECA - mappingOffset = 025C - Mapping = - B841 B842 B843 -End of Item 0335 - -Begin of Item 0336 - Format 2 - srcBegin = 8ED7 - destBegin = B852 -End of Item 0336 - -Begin of Item 0337 - Format 1 - srcBegin = 8EE0 - srcEnd = 8EE4 - mappingOffset = 025F - Mapping = - B85E B85F B861 B862 B863 -End of Item 0337 - -Begin of Item 0338 - Format 1 - srcBegin = 8EEC - srcEnd = 8EED - mappingOffset = 0264 - Mapping = - B86E B870 -End of Item 0338 - -Begin of Item 0339 - Format 1 - srcBegin = 8EF4 - srcEnd = 8EF6 - mappingOffset = 0266 - Mapping = - B879 B87A B87B -End of Item 0339 - -Begin of Item 033A - Format 1 - srcBegin = 8F70 - srcEnd = 8F75 - mappingOffset = 0269 - Mapping = - B8B1 B8B2 B8B3 B8B5 B8B6 B8B7 -End of Item 033A - -Begin of Item 033B - Format 1 - srcBegin = 8F81 - srcEnd = 8F84 - mappingOffset = 026F - Mapping = - B8BE B8BF B8C2 B8C4 -End of Item 033B - -Begin of Item 033C - Format 1 - srcBegin = 8F8B - srcEnd = 8F90 - mappingOffset = 0273 - Mapping = - B8CD B8CE B8CF B8D1 B8D2 B8D3 -End of Item 033C - -Begin of Item 033D - Format 1 - srcBegin = 8F99 - srcEnd = 8F9A - mappingOffset = 0279 - Mapping = - B8DE B8E0 -End of Item 033D - -Begin of Item 033E - Format 1 - srcBegin = 8FA1 - srcEnd = 8FA5 - mappingOffset = 027B - Mapping = - B8EA B8EB B8ED B8EE B8EF -End of Item 033E - -Begin of Item 033F - Format 1 - srcBegin = 8FAD - srcEnd = 8FAE - mappingOffset = 0280 - Mapping = - B8FA B8FC -End of Item 033F - -Begin of Item 0340 - Format 1 - srcBegin = 8FEA - srcEnd = 8FEE - mappingOffset = 0282 - Mapping = - B93E B93F B941 B942 B943 -End of Item 0340 - -Begin of Item 0341 - Format 1 - srcBegin = 8FF6 - srcEnd = 8FF8 - mappingOffset = 0287 - Mapping = - B94D B94E B950 -End of Item 0341 - -Begin of Item 0342 - Format 1 - srcBegin = 9041 - srcEnd = 9045 - mappingOffset = 028A - Mapping = - B95A B95B B95D B95E B95F -End of Item 0342 - -Begin of Item 0343 - Format 1 - srcBegin = 904D - srcEnd = 904E - mappingOffset = 028F - Mapping = - B96A B96C -End of Item 0343 - -Begin of Item 0344 - Format 1 - srcBegin = 9055 - srcEnd = 905A - mappingOffset = 0291 - Mapping = - B976 B977 B979 B97A B97B B97D -End of Item 0344 - -Begin of Item 0345 - Format 1 - srcBegin = 9067 - srcEnd = 906A - mappingOffset = 0297 - Mapping = - B986 B988 B98B B98C -End of Item 0345 - -Begin of Item 0346 - Format 1 - srcBegin = 908E - srcEnd = 9092 - mappingOffset = 029B - Mapping = - B9AE B9AF B9B1 B9B2 B9B3 -End of Item 0346 - -Begin of Item 0347 - Format 1 - srcBegin = 909A - srcEnd = 909B - mappingOffset = 02A0 - Mapping = - B9BE B9C0 -End of Item 0347 - -Begin of Item 0348 - Format 1 - srcBegin = 90A2 - srcEnd = 90A4 - mappingOffset = 02A2 - Mapping = - B9CA B9CB B9CD -End of Item 0348 - -Begin of Item 0349 - Format 1 - srcBegin = 90AA - srcEnd = 90B3 - mappingOffset = 02A5 - Mapping = - B9DA B9DC B9DF B9E0 B9E2 B9E6 B9E7 B9E9 - B9EA B9EB -End of Item 0349 - -Begin of Item 034A - Format 2 - srcBegin = 90BB - destBegin = B9F6 -End of Item 034A - -Begin of Item 034B - Format 1 - srcBegin = 90F5 - srcEnd = 90FE - mappingOffset = 02AF - Mapping = - BA3A BA3B BA3D BA3E BA3F BA41 BA43 BA44 - BA45 BA46 -End of Item 034B - -Begin of Item 034C - Format 1 - srcBegin = 9141 - srcEnd = 914C - mappingOffset = 02B9 - Mapping = - BA47 BA4A BA4C BA4F BA50 BA51 BA52 BA56 - BA57 BA59 BA5A BA5B -End of Item 034C - -Begin of Item 034D - Format 2 - srcBegin = 9154 - destBegin = BA66 -End of Item 034D - -Begin of Item 034E - Format 1 - srcBegin = 9161 - srcEnd = 9165 - mappingOffset = 02C5 - Mapping = - BA72 BA73 BA75 BA76 BA77 -End of Item 034E - -Begin of Item 034F - Format 1 - srcBegin = 9170 - srcEnd = 9174 - mappingOffset = 02CA - Mapping = - BA86 BA88 BA89 BA8A BA8B -End of Item 034F - -Begin of Item 0350 - Format 1 - srcBegin = 9196 - srcEnd = 919A - mappingOffset = 02CF - Mapping = - BAAA BAAD BAAE BAAF BAB1 -End of Item 0350 - -Begin of Item 0351 - Format 1 - srcBegin = 91A0 - srcEnd = 91A1 - mappingOffset = 02D4 - Mapping = - BABA BABC -End of Item 0351 - -Begin of Item 0352 - Format 1 - srcBegin = 91A8 - srcEnd = 91AA - mappingOffset = 02D6 - Mapping = - BAC5 BAC6 BAC7 -End of Item 0352 - -Begin of Item 0353 - Format 1 - srcBegin = 91DC - srcEnd = 91E1 - mappingOffset = 02D9 - Mapping = - BAFD BAFE BAFF BB01 BB02 BB03 -End of Item 0353 - -Begin of Item 0354 - Format 1 - srcBegin = 91EA - srcEnd = 91EB - mappingOffset = 02DF - Mapping = - BB0E BB10 -End of Item 0354 - -Begin of Item 0355 - Format 1 - srcBegin = 91F2 - srcEnd = 91F7 - mappingOffset = 02E1 - Mapping = - BB19 BB1A BB1B BB1D BB1E BB1F -End of Item 0355 - -Begin of Item 0356 - Format 1 - srcBegin = 9241 - srcEnd = 9242 - mappingOffset = 02E7 - Mapping = - BB28 BB2A -End of Item 0356 - -Begin of Item 0357 - Format 1 - srcBegin = 924B - srcEnd = 924D - mappingOffset = 02E9 - Mapping = - BB37 BB39 BB3A -End of Item 0357 - -Begin of Item 0358 - Format 1 - srcBegin = 9253 - srcEnd = 925A - mappingOffset = 02EC - Mapping = - BB46 BB48 BB4A BB4B BB4C BB4E BB51 BB52 -End of Item 0358 - -Begin of Item 0359 - Format 1 - srcBegin = 9261 - srcEnd = 9264 - mappingOffset = 02F4 - Mapping = - BB53 BB55 BB56 BB57 -End of Item 0359 - -Begin of Item 035A - Format 2 - srcBegin = 926D - destBegin = BB62 -End of Item 035A - -Begin of Item 035B - Format 1 - srcBegin = 9297 - srcEnd = 929C - mappingOffset = 02F8 - Mapping = - BB89 BB8A BB8B BB8D BB8E BB8F -End of Item 035B - -Begin of Item 035C - Format 1 - srcBegin = 92B0 - srcEnd = 92B5 - mappingOffset = 02FE - Mapping = - BBA5 BBA6 BBA7 BBA9 BBAA BBAB -End of Item 035C - -Begin of Item 035D - Format 1 - srcBegin = 92BD - srcEnd = 92BE - mappingOffset = 0304 - Mapping = - BBB5 BBB6 -End of Item 035D - -Begin of Item 035E - Format 1 - srcBegin = 92C7 - srcEnd = 92CC - mappingOffset = 0306 - Mapping = - BBC1 BBC2 BBC3 BBC5 BBC6 BBC7 -End of Item 035E - -Begin of Item 035F - Format 1 - srcBegin = 92D4 - srcEnd = 92D5 - mappingOffset = 030C - Mapping = - BBD1 BBD2 -End of Item 035F - -Begin of Item 0360 - Format 1 - srcBegin = 92FA - srcEnd = 92FE - mappingOffset = 030E - Mapping = - BBFA BBFB BBFD BBFE BC01 -End of Item 0360 - -Begin of Item 0361 - Format 1 - srcBegin = 9346 - srcEnd = 935A - mappingOffset = 0313 - Mapping = - BC0A BC0E BC10 BC12 BC13 BC19 BC1A BC20 - BC21 BC22 BC23 BC26 BC28 BC2A BC2B BC2C - BC2E BC2F BC32 BC33 BC35 -End of Item 0361 - -Begin of Item 0362 - Format 1 - srcBegin = 9361 - srcEnd = 9362 - mappingOffset = 0328 - Mapping = - BC36 BC37 -End of Item 0362 - -Begin of Item 0363 - Format 1 - srcBegin = 936A - srcEnd = 9371 - mappingOffset = 032A - Mapping = - BC42 BC46 BC47 BC48 BC4A BC4B BC4E BC4F -End of Item 0363 - -Begin of Item 0364 - Format 1 - srcBegin = 9381 - srcEnd = 9383 - mappingOffset = 0332 - Mapping = - BC5A BC5B BC5C -End of Item 0364 - -Begin of Item 0365 - Format 1 - srcBegin = 93AA - srcEnd = 93AE - mappingOffset = 0335 - Mapping = - BC86 BC87 BC89 BC8A BC8D -End of Item 0365 - -Begin of Item 0366 - Format 1 - srcBegin = 93B4 - srcEnd = 93B5 - mappingOffset = 033A - Mapping = - BC96 BC98 -End of Item 0366 - -Begin of Item 0367 - Format 1 - srcBegin = 93BB - srcEnd = 93BE - mappingOffset = 033C - Mapping = - BCA2 BCA3 BCA5 BCA6 -End of Item 0367 - -Begin of Item 0368 - Format 2 - srcBegin = 93C6 - destBegin = BCB2 -End of Item 0368 - -Begin of Item 0369 - Format 1 - srcBegin = 93CD - srcEnd = 93D1 - mappingOffset = 0340 - Mapping = - BCBE BCBF BCC1 BCC2 BCC3 -End of Item 0369 - -Begin of Item 036A - Format 1 - srcBegin = 93DA - srcEnd = 93E2 - mappingOffset = 0345 - Mapping = - BCCE BCD2 BCD3 BCD4 BCD6 BCD7 BCD9 BCDA - BCDB -End of Item 036A - -Begin of Item 036B - Format 1 - srcBegin = 93FA - srcEnd = 93FE - mappingOffset = 034E - Mapping = - BCF7 BCF9 BCFA BCFB BCFD -End of Item 036B - -Begin of Item 036C - Format 1 - srcBegin = 9447 - srcEnd = 9448 - mappingOffset = 0353 - Mapping = - BD06 BD08 -End of Item 036C - -Begin of Item 036D - Format 1 - srcBegin = 944F - srcEnd = 9451 - mappingOffset = 0355 - Mapping = - BD11 BD12 BD13 -End of Item 036D - -Begin of Item 036E - Format 1 - srcBegin = 948E - srcEnd = 9492 - mappingOffset = 0358 - Mapping = - BD4A BD4B BD4D BD4E BD4F -End of Item 036E - -Begin of Item 036F - Format 1 - srcBegin = 94A4 - srcEnd = 94A6 - mappingOffset = 035D - Mapping = - BD65 BD66 BD67 -End of Item 036F - -Begin of Item 0370 - Format 1 - srcBegin = 94BE - srcEnd = 94C1 - mappingOffset = 0360 - Mapping = - BD82 BD83 BD85 BD86 -End of Item 0370 - -Begin of Item 0371 - Format 1 - srcBegin = 94C7 - srcEnd = 94CC - mappingOffset = 0364 - Mapping = - BD92 BD94 BD96 BD97 BD98 BD9B -End of Item 0371 - -Begin of Item 0372 - Format 1 - srcBegin = 9541 - srcEnd = 9547 - mappingOffset = 036A - Mapping = - BDD2 BDD3 BDD6 BDD7 BDD9 BDDA BDDB -End of Item 0372 - -Begin of Item 0373 - Format 2 - srcBegin = 955A - destBegin = BDF1 -End of Item 0373 - -Begin of Item 0374 - Format 1 - srcBegin = 9561 - srcEnd = 9565 - mappingOffset = 0371 - Mapping = - BDF2 BDF3 BDF5 BDF6 BDF7 -End of Item 0374 - -Begin of Item 0375 - Format 1 - srcBegin = 956D - srcEnd = 956F - mappingOffset = 0376 - Mapping = - BE01 BE02 BE04 -End of Item 0375 - -Begin of Item 0376 - Format 1 - srcBegin = 9576 - srcEnd = 957A - mappingOffset = 0379 - Mapping = - BE0E BE0F BE11 BE12 BE13 -End of Item 0376 - -Begin of Item 0377 - Format 2 - srcBegin = 9588 - destBegin = BE1E -End of Item 0377 - -Begin of Item 0378 - Format 1 - srcBegin = 95AD - srcEnd = 95B2 - mappingOffset = 037E - Mapping = - BE46 BE47 BE49 BE4A BE4B BE4D -End of Item 0378 - -Begin of Item 0379 - Format 1 - srcBegin = 95B8 - srcEnd = 95C3 - mappingOffset = 0384 - Mapping = - BE56 BE58 BE5C BE5D BE5E BE5F BE62 BE63 - BE65 BE66 BE67 BE69 -End of Item 0379 - -Begin of Item 037A - Format 2 - srcBegin = 95C9 - destBegin = BE72 -End of Item 037A - -Begin of Item 037B - Format 1 - srcBegin = 95CF - srcEnd = 95D3 - mappingOffset = 0390 - Mapping = - BE7E BE7F BE81 BE82 BE83 -End of Item 037B - -Begin of Item 037C - Format 2 - srcBegin = 95DB - destBegin = BE8E -End of Item 037C - -Begin of Item 037D - Format 1 - srcBegin = 9659 - srcEnd = 965A - mappingOffset = 0395 - Mapping = - BED2 BED3 -End of Item 037D - -Begin of Item 037E - Format 1 - srcBegin = 9661 - srcEnd = 9662 - mappingOffset = 0397 - Mapping = - BED5 BED6 -End of Item 037E - -Begin of Item 037F - Format 1 - srcBegin = 966A - srcEnd = 966B - mappingOffset = 0399 - Mapping = - BEE1 BEE2 -End of Item 037F - -Begin of Item 0380 - Format 2 - srcBegin = 96A0 - destBegin = BF1A -End of Item 0380 - -Begin of Item 0381 - Format 1 - srcBegin = 96C3 - srcEnd = 96C7 - mappingOffset = 039B - Mapping = - BF42 BF43 BF45 BF46 BF47 -End of Item 0381 - -Begin of Item 0382 - Format 1 - srcBegin = 96CF - srcEnd = 96D1 - mappingOffset = 03A0 - Mapping = - BF52 BF53 BF54 -End of Item 0382 - -Begin of Item 0383 - Format 1 - srcBegin = 9793 - srcEnd = 9797 - mappingOffset = 03A3 - Mapping = - BFCE BFCF BFD1 BFD2 BFD3 -End of Item 0383 - -Begin of Item 0384 - Format 1 - srcBegin = 979F - srcEnd = 97A1 - mappingOffset = 03A8 - Mapping = - BFDD BFDE BFE0 -End of Item 0384 - -Begin of Item 0385 - Format 1 - srcBegin = 97FC - srcEnd = 97FE - mappingOffset = 03AB - Mapping = - C03D C03E C03F -End of Item 0385 - -Begin of Item 0386 - Format 1 - srcBegin = 9858 - srcEnd = 985A - mappingOffset = 03AE - Mapping = - C059 C05A C05B -End of Item 0386 - -Begin of Item 0387 - Format 1 - srcBegin = 9861 - srcEnd = 9863 - mappingOffset = 03B1 - Mapping = - C05D C05E C05F -End of Item 0387 - -Begin of Item 0388 - Format 1 - srcBegin = 9897 - srcEnd = 989B - mappingOffset = 03B4 - Mapping = - C092 C093 C095 C096 C097 -End of Item 0388 - -Begin of Item 0389 - Format 1 - srcBegin = 98A3 - srcEnd = 98A4 - mappingOffset = 03B9 - Mapping = - C0A2 C0A4 -End of Item 0389 - -Begin of Item 038A - Format 1 - srcBegin = 98AB - srcEnd = 98AD - mappingOffset = 03BB - Mapping = - C0AE C0B1 C0B2 -End of Item 038A - -Begin of Item 038B - Format 1 - srcBegin = 98B3 - srcEnd = 98BD - mappingOffset = 03BE - Mapping = - C0BE C0C2 C0C3 C0C4 C0C6 C0C7 C0CA C0CB - C0CD C0CE C0CF -End of Item 038B - -Begin of Item 038C - Format 2 - srcBegin = 98C5 - destBegin = C0DA -End of Item 038C - -Begin of Item 038D - Format 1 - srcBegin = 98CC - srcEnd = 98D0 - mappingOffset = 03C9 - Mapping = - C0E6 C0E7 C0E9 C0EA C0EB -End of Item 038D - -Begin of Item 038E - Format 1 - srcBegin = 98D8 - srcEnd = 98D9 - mappingOffset = 03CE - Mapping = - C0F6 C0F8 -End of Item 038E - -Begin of Item 038F - Format 1 - srcBegin = 98E0 - srcEnd = 98E5 - mappingOffset = 03D0 - Mapping = - C101 C102 C103 C105 C106 C107 -End of Item 038F - -Begin of Item 0390 - Format 1 - srcBegin = 98ED - srcEnd = 98F0 - mappingOffset = 03D6 - Mapping = - C111 C112 C113 C114 -End of Item 0390 - -Begin of Item 0391 - Format 1 - srcBegin = 98F7 - srcEnd = 98FE - mappingOffset = 03DA - Mapping = - C121 C122 C125 C128 C129 C12A C12B C12E -End of Item 0391 - -Begin of Item 0392 - Format 1 - srcBegin = 9941 - srcEnd = 994A - mappingOffset = 03E2 - Mapping = - C132 C133 C134 C135 C137 C13A C13B C13D - C13E C13F -End of Item 0392 - -Begin of Item 0393 - Format 2 - srcBegin = 9952 - destBegin = C14A -End of Item 0393 - -Begin of Item 0394 - Format 1 - srcBegin = 9959 - srcEnd = 995A - mappingOffset = 03EC - Mapping = - C156 C157 -End of Item 0394 - -Begin of Item 0395 - Format 1 - srcBegin = 9961 - srcEnd = 9963 - mappingOffset = 03EE - Mapping = - C159 C15A C15B -End of Item 0395 - -Begin of Item 0396 - Format 2 - srcBegin = 996B - destBegin = C166 -End of Item 0396 - -Begin of Item 0397 - Format 1 - srcBegin = 9972 - srcEnd = 997A - mappingOffset = 03F1 - Mapping = - C171 C172 C173 C175 C176 C177 C179 C17A - C17B -End of Item 0397 - -Begin of Item 0398 - Format 1 - srcBegin = 9990 - srcEnd = 9994 - mappingOffset = 03FA - Mapping = - C18F C191 C192 C193 C195 -End of Item 0398 - -Begin of Item 0399 - Format 1 - srcBegin = 999A - srcEnd = 99A5 - mappingOffset = 03FF - Mapping = - C19E C1A0 C1A2 C1A3 C1A4 C1A6 C1A7 C1AA - C1AB C1AD C1AE C1AF -End of Item 0399 - -Begin of Item 039A - Format 1 - srcBegin = 99B8 - srcEnd = 99BD - mappingOffset = 040B - Mapping = - C1C5 C1C6 C1C7 C1C9 C1CA C1CB -End of Item 039A - -Begin of Item 039B - Format 1 - srcBegin = 99C5 - srcEnd = 99C6 - mappingOffset = 0411 - Mapping = - C1D5 C1D6 -End of Item 039B - -Begin of Item 039C - Format 1 - srcBegin = 99CE - srcEnd = 99D3 - mappingOffset = 0413 - Mapping = - C1E1 C1E2 C1E3 C1E5 C1E6 C1E7 -End of Item 039C - -Begin of Item 039D - Format 2 - srcBegin = 99DB - destBegin = C1F2 -End of Item 039D - -Begin of Item 039E - Format 1 - srcBegin = 99E4 - srcEnd = 99E8 - mappingOffset = 0419 - Mapping = - C1FE C1FF C201 C202 C203 -End of Item 039E - -Begin of Item 039F - Format 1 - srcBegin = 99F0 - srcEnd = 99F1 - mappingOffset = 041E - Mapping = - C20E C210 -End of Item 039F - -Begin of Item 03A0 - Format 1 - srcBegin = 99F8 - srcEnd = 99FE - mappingOffset = 0420 - Mapping = - C21A C21B C21D C21E C221 C222 C223 -End of Item 03A0 - -Begin of Item 03A1 - Format 1 - srcBegin = 9A41 - srcEnd = 9A49 - mappingOffset = 0427 - Mapping = - C224 C225 C226 C227 C22A C22C C22E C230 - C233 -End of Item 03A1 - -Begin of Item 03A2 - Format 1 - srcBegin = 9A61 - srcEnd = 9A62 - mappingOffset = 0430 - Mapping = - C246 C247 -End of Item 03A2 - -Begin of Item 03A3 - Format 1 - srcBegin = 9A6A - srcEnd = 9A6E - mappingOffset = 0432 - Mapping = - C252 C253 C255 C256 C257 -End of Item 03A3 - -Begin of Item 03A4 - Format 1 - srcBegin = 9A76 - srcEnd = 9A7A - mappingOffset = 0437 - Mapping = - C261 C262 C263 C264 C266 -End of Item 03A4 - -Begin of Item 03A5 - Format 1 - srcBegin = 9A86 - srcEnd = 9A8A - mappingOffset = 043C - Mapping = - C26E C26F C271 C272 C273 -End of Item 03A5 - -Begin of Item 03A6 - Format 1 - srcBegin = 9A92 - srcEnd = 9A93 - mappingOffset = 0441 - Mapping = - C27E C280 -End of Item 03A6 - -Begin of Item 03A7 - Format 1 - srcBegin = 9AA7 - srcEnd = 9AA9 - mappingOffset = 0443 - Mapping = - C299 C29A C29C -End of Item 03A7 - -Begin of Item 03A8 - Format 1 - srcBegin = 9AB0 - srcEnd = 9AB4 - mappingOffset = 0446 - Mapping = - C2A6 C2A7 C2A9 C2AA C2AB -End of Item 03A8 - -Begin of Item 03A9 - Format 1 - srcBegin = 9ABB - srcEnd = 9ABC - mappingOffset = 044B - Mapping = - C2B6 C2B8 -End of Item 03A9 - -Begin of Item 03AA - Format 1 - srcBegin = 9ADF - srcEnd = 9AE2 - mappingOffset = 044D - Mapping = - C2DE C2DF C2E1 C2E2 -End of Item 03AA - -Begin of Item 03AB - Format 1 - srcBegin = 9AE9 - srcEnd = 9AF3 - mappingOffset = 0451 - Mapping = - C2EE C2F0 C2F2 C2F3 C2F4 C2F5 C2F7 C2FA - C2FD C2FE C2FF -End of Item 03AB - -Begin of Item 03AC - Format 1 - srcBegin = 9AFB - srcEnd = 9AFE - mappingOffset = 045C - Mapping = - C30A C30B C30E C30F -End of Item 03AC - -Begin of Item 03AD - Format 1 - srcBegin = 9B41 - srcEnd = 9B48 - mappingOffset = 0460 - Mapping = - C310 C311 C312 C316 C317 C319 C31A C31B -End of Item 03AD - -Begin of Item 03AE - Format 1 - srcBegin = 9B50 - srcEnd = 9B51 - mappingOffset = 0468 - Mapping = - C326 C327 -End of Item 03AE - -Begin of Item 03AF - Format 1 - srcBegin = 9B9B - srcEnd = 9BA0 - mappingOffset = 046A - Mapping = - C36A C36B C36D C36E C36F C371 -End of Item 03AF - -Begin of Item 03B0 - Format 1 - srcBegin = 9BA6 - srcEnd = 9BA7 - mappingOffset = 0470 - Mapping = - C37A C37B -End of Item 03B0 - -Begin of Item 03B1 - Format 1 - srcBegin = 9BAE - srcEnd = 9BB3 - mappingOffset = 0472 - Mapping = - C385 C386 C387 C389 C38A C38B -End of Item 03B1 - -Begin of Item 03B2 - Format 2 - srcBegin = 9BFE - destBegin = C3DA -End of Item 03B2 - -Begin of Item 03B3 - Format 1 - srcBegin = 9C41 - srcEnd = 9C44 - mappingOffset = 0478 - Mapping = - C3DB C3DD C3DE C3E1 -End of Item 03B3 - -Begin of Item 03B4 - Format 1 - srcBegin = 9C4A - srcEnd = 9C4C - mappingOffset = 047C - Mapping = - C3EA C3EB C3EC -End of Item 03B4 - -Begin of Item 03B5 - Format 1 - srcBegin = 9C53 - srcEnd = 9C54 - mappingOffset = 047F - Mapping = - C3F6 C3F7 -End of Item 03B5 - -Begin of Item 03B6 - Format 1 - srcBegin = 9C91 - srcEnd = 9C96 - mappingOffset = 0481 - Mapping = - C42D C42E C42F C431 C432 C433 -End of Item 03B6 - -Begin of Item 03B7 - Format 1 - srcBegin = 9CC3 - srcEnd = 9CC7 - mappingOffset = 0487 - Mapping = - C466 C467 C469 C46A C46B -End of Item 03B7 - -Begin of Item 03B8 - Format 1 - srcBegin = 9CCF - srcEnd = 9CD1 - mappingOffset = 048C - Mapping = - C476 C477 C478 -End of Item 03B8 - -Begin of Item 03B9 - Format 1 - srcBegin = 9D4F - srcEnd = 9D51 - mappingOffset = 048F - Mapping = - C4B9 C4BA C4BB -End of Item 03B9 - -Begin of Item 03BA - Format 1 - srcBegin = 9D90 - srcEnd = 9D99 - mappingOffset = 0492 - Mapping = - C4F2 C4F3 C4F5 C4F6 C4F7 C4F9 C4FB C4FC - C4FD C4FE -End of Item 03BA - -Begin of Item 03BB - Format 1 - srcBegin = 9DA4 - srcEnd = 9DA9 - mappingOffset = 049C - Mapping = - C50D C50E C50F C511 C512 C513 -End of Item 03BB - -Begin of Item 03BC - Format 1 - srcBegin = 9DBC - srcEnd = 9DC0 - mappingOffset = 04A2 - Mapping = - C52A C52B C52D C52E C52F -End of Item 03BC - -Begin of Item 03BD - Format 1 - srcBegin = 9DC8 - srcEnd = 9DC9 - mappingOffset = 04A7 - Mapping = - C53A C53C -End of Item 03BD - -Begin of Item 03BE - Format 1 - srcBegin = 9DD0 - srcEnd = 9DE0 - mappingOffset = 04A9 - Mapping = - C546 C547 C54B C54F C550 C551 C552 C556 - C55A C55B C55C C55F C562 C563 C565 C566 - C567 -End of Item 03BE - -Begin of Item 03BF - Format 2 - srcBegin = 9DE8 - destBegin = C572 -End of Item 03BF - -Begin of Item 03C0 - Format 1 - srcBegin = 9DEF - srcEnd = 9DFE - mappingOffset = 04BA - Mapping = - C57E C57F C581 C582 C583 C585 C586 C588 - C589 C58A C58B C58E C590 C592 C593 C594 -End of Item 03C0 - -Begin of Item 03C1 - Format 1 - srcBegin = 9E41 - srcEnd = 9E47 - mappingOffset = 04CA - Mapping = - C596 C599 C59A C59B C59D C59E C59F -End of Item 03C1 - -Begin of Item 03C2 - Format 2 - srcBegin = 9E5A - destBegin = C5B6 -End of Item 03C2 - -Begin of Item 03C3 - Format 1 - srcBegin = 9E61 - srcEnd = 9E62 - mappingOffset = 04D1 - Mapping = - C5B7 C5BA -End of Item 03C3 - -Begin of Item 03C4 - Format 1 - srcBegin = 9E68 - srcEnd = 9E6F - mappingOffset = 04D3 - Mapping = - C5CB C5CD C5CF C5D2 C5D3 C5D5 C5D6 C5D7 -End of Item 03C4 - -Begin of Item 03C5 - Format 1 - srcBegin = 9E77 - srcEnd = 9E7A - mappingOffset = 04DB - Mapping = - C5E2 C5E4 C5E6 C5E7 -End of Item 03C5 - -Begin of Item 03C6 - Format 1 - srcBegin = 9E81 - srcEnd = 9E96 - mappingOffset = 04DF - Mapping = - C5E8 C5E9 C5EA C5EB C5EF C5F1 C5F2 C5F3 - C5F5 C5F8 C5F9 C5FA C5FB C602 C603 C604 - C609 C60A C60B C60D C60E C60F -End of Item 03C6 - -Begin of Item 03C7 - Format 2 - srcBegin = 9E9E - destBegin = C61A -End of Item 03C7 - -Begin of Item 03C8 - Format 1 - srcBegin = 9EA6 - srcEnd = 9EB9 - mappingOffset = 04F5 - Mapping = - C626 C627 C629 C62A C62B C62F C631 C632 - C636 C638 C63A C63C C63D C63E C63F C642 - C643 C645 C646 C647 -End of Item 03C8 - -Begin of Item 03C9 - Format 2 - srcBegin = 9EC1 - destBegin = C652 -End of Item 03C9 - -Begin of Item 03CA - Format 1 - srcBegin = 9EC8 - srcEnd = 9EC9 - mappingOffset = 0509 - Mapping = - C65E C65F -End of Item 03CA - -Begin of Item 03CB - Format 1 - srcBegin = 9ED5 - srcEnd = 9ED7 - mappingOffset = 050B - Mapping = - C66D C66E C670 -End of Item 03CB - -Begin of Item 03CC - Format 1 - srcBegin = 9EDE - srcEnd = 9EE2 - mappingOffset = 050E - Mapping = - C67A C67B C67D C67E C67F -End of Item 03CC - -Begin of Item 03CD - Format 1 - srcBegin = 9EEA - srcEnd = 9EEB - mappingOffset = 0513 - Mapping = - C68A C68C -End of Item 03CD - -Begin of Item 03CE - Format 1 - srcBegin = 9EF2 - srcEnd = 9EF6 - mappingOffset = 0515 - Mapping = - C696 C697 C699 C69A C69B -End of Item 03CE - -Begin of Item 03CF - Format 2 - srcBegin = 9EFE - destBegin = C6A6 -End of Item 03CF - -Begin of Item 03D0 - Format 2 - srcBegin = 9F41 - destBegin = C6A8 -End of Item 03D0 - -Begin of Item 03D1 - Format 1 - srcBegin = 9F48 - srcEnd = 9F4C - mappingOffset = 051A - Mapping = - C6B2 C6B3 C6B5 C6B6 C6B7 -End of Item 03D1 - -Begin of Item 03D2 - Format 1 - srcBegin = 9F52 - srcEnd = 9F53 - mappingOffset = 051F - Mapping = - C6C2 C6C4 -End of Item 03D2 - -Begin of Item 03D3 - Format 2 - srcBegin = 9F5A - destBegin = C6CE -End of Item 03D3 - -Begin of Item 03D4 - Format 1 - srcBegin = 9F61 - srcEnd = 9F64 - mappingOffset = 0521 - Mapping = - C6CF C6D1 C6D2 C6D3 -End of Item 03D4 - -Begin of Item 03D5 - Format 1 - srcBegin = 9F6C - srcEnd = 9F6D - mappingOffset = 0525 - Mapping = - C6DE C6DF -End of Item 03D5 - -Begin of Item 03D6 - Format 1 - srcBegin = 9F74 - srcEnd = 9F7A - mappingOffset = 0527 - Mapping = - C6EA C6EB C6ED C6EE C6EF C6F1 C6F2 -End of Item 03D6 - -Begin of Item 03D7 - Format 1 - srcBegin = 9F86 - srcEnd = 9F88 - mappingOffset = 052E - Mapping = - C6FA C6FB C6FC -End of Item 03D7 - -Begin of Item 03D8 - Format 1 - srcBegin = 9F8F - srcEnd = 9F93 - mappingOffset = 0531 - Mapping = - C706 C707 C709 C70A C70B -End of Item 03D8 - -Begin of Item 03D9 - Format 1 - srcBegin = 9F9B - srcEnd = 9F9C - mappingOffset = 0536 - Mapping = - C716 C718 -End of Item 03D9 - -Begin of Item 03DA - Format 1 - srcBegin = 9FA3 - srcEnd = 9FA7 - mappingOffset = 0538 - Mapping = - C722 C723 C725 C726 C727 -End of Item 03DA - -Begin of Item 03DB - Format 1 - srcBegin = 9FAF - srcEnd = 9FBA - mappingOffset = 053D - Mapping = - C732 C734 C736 C738 C739 C73A C73B C73E - C73F C741 C742 C743 -End of Item 03DB - -Begin of Item 03DC - Format 1 - srcBegin = 9FC0 - srcEnd = 9FC8 - mappingOffset = 0549 - Mapping = - C74B C74E C750 C759 C75A C75B C75D C75E - C75F -End of Item 03DC - -Begin of Item 03DD - Format 1 - srcBegin = 9FD0 - srcEnd = 9FD1 - mappingOffset = 0552 - Mapping = - C769 C76A -End of Item 03DD - -Begin of Item 03DE - Format 1 - srcBegin = 9FDA - srcEnd = 9FEB - mappingOffset = 0554 - Mapping = - C776 C777 C779 C77A C77B C77F C780 C781 - C782 C786 C78B C78C C78D C78F C792 C793 - C795 C799 -End of Item 03DE - -Begin of Item 03DF - Format 2 - srcBegin = 9FF1 - destBegin = C7A2 -End of Item 03DF - -Begin of Item 03E0 - Format 1 - srcBegin = 9FF7 - srcEnd = 9FFE - mappingOffset = 0566 - Mapping = - C7AE C7AF C7B1 C7B2 C7B3 C7B5 C7B6 C7B7 -End of Item 03E0 - -Begin of Item 03E1 - Format 1 - srcBegin = A041 - srcEnd = A045 - mappingOffset = 056E - Mapping = - C7B8 C7B9 C7BA C7BB C7BE -End of Item 03E1 - -Begin of Item 03E2 - Format 1 - srcBegin = A04C - srcEnd = A04F - mappingOffset = 0573 - Mapping = - C7CA C7CB C7CD C7CF -End of Item 03E2 - -Begin of Item 03E3 - Format 1 - srcBegin = A057 - srcEnd = A05A - mappingOffset = 0577 - Mapping = - C7D9 C7DA C7DB C7DC -End of Item 03E3 - -Begin of Item 03E4 - Format 1 - srcBegin = A067 - srcEnd = A06C - mappingOffset = 057B - Mapping = - C7E5 C7E6 C7E7 C7E9 C7EA C7EB -End of Item 03E4 - -Begin of Item 03E5 - Format 1 - srcBegin = A086 - srcEnd = A08B - mappingOffset = 0581 - Mapping = - C802 C803 C805 C806 C807 C809 -End of Item 03E5 - -Begin of Item 03E6 - Format 1 - srcBegin = A091 - srcEnd = A092 - mappingOffset = 0587 - Mapping = - C812 C814 -End of Item 03E6 - -Begin of Item 03E7 - Format 1 - srcBegin = A098 - srcEnd = A09C - mappingOffset = 0589 - Mapping = - C81E C81F C821 C822 C823 -End of Item 03E7 - -Begin of Item 03E8 - Format 1 - srcBegin = A0A4 - srcEnd = A0A5 - mappingOffset = 058E - Mapping = - C82E C830 -End of Item 03E8 - -Begin of Item 03E9 - Format 1 - srcBegin = A0AC - srcEnd = A0B1 - mappingOffset = 0590 - Mapping = - C839 C83A C83B C83D C83E C83F -End of Item 03E9 - -Begin of Item 03EA - Format 1 - srcBegin = A0B9 - srcEnd = A0BA - mappingOffset = 0596 - Mapping = - C84A C84B -End of Item 03EA - -Begin of Item 03EB - Format 1 - srcBegin = A0DC - srcEnd = A0E1 - mappingOffset = 0598 - Mapping = - C872 C873 C875 C876 C877 C879 -End of Item 03EB - -Begin of Item 03EC - Format 1 - srcBegin = A0E7 - srcEnd = A0EB - mappingOffset = 059E - Mapping = - C882 C884 C888 C889 C88A -End of Item 03EC - -Begin of Item 03ED - Format 1 - srcBegin = A0FA - srcEnd = A0FE - mappingOffset = 05A3 - Mapping = - C89E C8A0 C8A2 C8A3 C8A4 -End of Item 03ED - -Begin of Item 03EE - Format 1 - srcBegin = A141 - srcEnd = A143 - mappingOffset = 05A8 - Mapping = - C8A5 C8A6 C8A7 -End of Item 03EE - -Begin of Item 03EF - Format 1 - srcBegin = A157 - srcEnd = A15A - mappingOffset = 05AB - Mapping = - C8BE C8BF C8C0 C8C1 -End of Item 03EF - -Begin of Item 03F0 - Format 1 - srcBegin = A161 - srcEnd = A168 - mappingOffset = 05AF - Mapping = - C8C2 C8C3 C8C5 C8C6 C8C7 C8C9 C8CA C8CB -End of Item 03F0 - -Begin of Item 03F1 - Format 1 - srcBegin = A170 - srcEnd = A171 - mappingOffset = 05B7 - Mapping = - C8D6 C8D8 -End of Item 03F1 - -Begin of Item 03F2 - Format 1 - srcBegin = A178 - srcEnd = A17A - mappingOffset = 05B9 - Mapping = - C8E2 C8E3 C8E5 -End of Item 03F2 - -Begin of Item 03F3 - Format 1 - srcBegin = A196 - srcEnd = A19A - mappingOffset = 05BC - Mapping = - C8FE C8FF C901 C902 C903 -End of Item 03F3 - -Begin of Item 03F4 - Format 1 - srcBegin = A1A0 - srcEnd = A1B3 - mappingOffset = 05C1 - Mapping = - C90E 3000 3001 3002 00B7 2025 2026 00A8 - 3003 00AD 2015 2225 FF3C 223C 2018 2019 - 201C 201D 3014 3015 -End of Item 03F4 - -Begin of Item 03F5 - Format 1 - srcBegin = A1BE - srcEnd = A1FE - mappingOffset = 05D5 - Mapping = - 00B1 00D7 00F7 2260 2264 2265 221E 2234 - 00B0 2032 2033 2103 212B FFE0 FFE1 FFE5 - 2642 2640 2220 22A5 2312 2202 2207 2261 - 2252 00A7 203B 2606 2605 25CB 25CF 25CE - 25C7 25C6 25A1 25A0 25B3 25B2 25BD 25BC - 2192 2190 2191 2193 2194 3013 226A 226B - 221A 223D 221D 2235 222B 222C 2208 220B - 2286 2287 2282 2283 222A 2229 2227 2228 - FFE2 -End of Item 03F5 - -Begin of Item 03F6 - Format 2 - srcBegin = A241 - destBegin = C910 -End of Item 03F6 - -Begin of Item 03F7 - Format 1 - srcBegin = A289 - srcEnd = A28D - mappingOffset = 0616 - Mapping = - C952 C953 C955 C956 C957 -End of Item 03F7 - -Begin of Item 03F8 - Format 2 - srcBegin = A295 - destBegin = C962 -End of Item 03F8 - -Begin of Item 03F9 - Format 1 - srcBegin = A29E - srcEnd = A2E5 - mappingOffset = 061B - Mapping = - C96D C96E C96F 21D2 21D4 2200 2203 00B4 - FF5E 02C7 02D8 02DD 02DA 02D9 00B8 02DB - 00A1 00BF 02D0 222E 2211 220F 00A4 2109 - 2030 25C1 25C0 25B7 25B6 2664 2660 2661 - 2665 2667 2663 2299 25C8 25A3 25D0 25D1 - 2592 25A4 25A5 25A8 25A7 25A6 25A9 2668 - 260F 260E 261C 261E 00B6 2020 2021 2195 - 2197 2199 2196 2198 266D 2669 266A 266C - 327F 321C 2116 33C7 2122 33C2 33D8 2121 -End of Item 03F9 - -Begin of Item 03FA - Format 1 - srcBegin = A341 - srcEnd = A343 - mappingOffset = 0663 - Mapping = - C971 C972 C973 -End of Item 03FA - -Begin of Item 03FB - Format 1 - srcBegin = A356 - srcEnd = A35A - mappingOffset = 0666 - Mapping = - C98A C98B C98D C98E C98F -End of Item 03FB - -Begin of Item 03FC - Format 1 - srcBegin = A368 - srcEnd = A369 - mappingOffset = 066B - Mapping = - C99A C99C -End of Item 03FC - -Begin of Item 03FD - Format 1 - srcBegin = A392 - srcEnd = A396 - mappingOffset = 066D - Mapping = - C9C2 C9C3 C9C5 C9C6 C9C9 -End of Item 03FD - -Begin of Item 03FE - Format 1 - srcBegin = A39C - srcEnd = A3A0 - mappingOffset = 0672 - Mapping = - C9D2 C9D4 C9D7 C9D8 C9DB -End of Item 03FE - -Begin of Item 03FF - Format 2 - srcBegin = A3DC - destBegin = FFE6 -End of Item 03FF - -Begin of Item 0400 - Format 2 - srcBegin = A3FE - destBegin = FFE3 -End of Item 0400 - -Begin of Item 0401 - Format 1 - srcBegin = A441 - srcEnd = A44B - mappingOffset = 0677 - Mapping = - C9DE C9DF C9E1 C9E3 C9E5 C9E6 C9E8 C9E9 - C9EA C9EB C9EE -End of Item 0401 - -Begin of Item 0402 - Format 1 - srcBegin = A452 - srcEnd = A45A - mappingOffset = 0682 - Mapping = - C9FA C9FB C9FD C9FE C9FF CA01 CA02 CA03 - CA04 -End of Item 0402 - -Begin of Item 0403 - Format 1 - srcBegin = A461 - srcEnd = A464 - mappingOffset = 068B - Mapping = - CA05 CA06 CA07 CA0A -End of Item 0403 - -Begin of Item 0404 - Format 1 - srcBegin = A46B - srcEnd = A46D - mappingOffset = 068F - Mapping = - CA15 CA16 CA17 -End of Item 0404 - -Begin of Item 0405 - Format 1 - srcBegin = A481 - srcEnd = A483 - mappingOffset = 0692 - Mapping = - CA26 CA27 CA28 -End of Item 0405 - -Begin of Item 0406 - Format 1 - srcBegin = A546 - srcEnd = A54A - mappingOffset = 0695 - Mapping = - CA4E CA4F CA51 CA52 CA53 -End of Item 0406 - -Begin of Item 0407 - Format 2 - srcBegin = A552 - destBegin = CA5E -End of Item 0407 - -Begin of Item 0408 - Format 1 - srcBegin = A559 - srcEnd = A55A - mappingOffset = 069A - Mapping = - CA69 CA6A -End of Item 0408 - -Begin of Item 0409 - Format 1 - srcBegin = A579 - srcEnd = A57A - mappingOffset = 069C - Mapping = - CA85 CA86 -End of Item 0409 - -Begin of Item 040A - Format 1 - srcBegin = A655 - srcEnd = A65A - mappingOffset = 069E - Mapping = - CABE CABF CAC1 CAC2 CAC3 CAC5 -End of Item 040A - -Begin of Item 040B - Format 1 - srcBegin = A667 - srcEnd = A66D - mappingOffset = 06A4 - Mapping = - CACE CAD0 CAD2 CAD4 CAD5 CAD6 CAD7 -End of Item 040B - -Begin of Item 040C - Format 1 - srcBegin = A681 - srcEnd = A684 - mappingOffset = 06AB - Mapping = - CAE8 CAE9 CAEA CAEB -End of Item 040C - -Begin of Item 040D - Format 1 - srcBegin = A69F - srcEnd = A6DC - mappingOffset = 06AF - Mapping = - CB09 CB0A 2500 2502 250C 2510 2518 2514 - 251C 252C 2524 2534 253C 2501 2503 250F - 2513 251B 2517 2523 2533 252B 253B 254B - 2520 252F 2528 2537 253F 251D 2530 2525 - 2538 2542 2512 2511 251A 2519 2516 2515 - 250E 250D 251E 251F 2521 2522 2526 2527 - 2529 252A 252D 252E 2531 2532 2535 2536 - 2539 253A 253D 253E 2540 2541 -End of Item 040D - -Begin of Item 040E - Format 1 - srcBegin = A746 - srcEnd = A74B - mappingOffset = 06ED - Mapping = - CB11 CB12 CB13 CB15 CB16 CB17 -End of Item 040E - -Begin of Item 040F - Format 1 - srcBegin = A778 - srcEnd = A77A - mappingOffset = 06F3 - Mapping = - CB42 CB43 CB44 -End of Item 040F - -Begin of Item 0410 - Format 1 - srcBegin = A781 - srcEnd = A788 - mappingOffset = 06F6 - Mapping = - CB45 CB46 CB47 CB4A CB4B CB4D CB4E CB4F -End of Item 0410 - -Begin of Item 0411 - Format 1 - srcBegin = A790 - srcEnd = A792 - mappingOffset = 06FE - Mapping = - CB5A CB5B CB5C -End of Item 0411 - -Begin of Item 0412 - Format 1 - srcBegin = A7A1 - srcEnd = A7AA - mappingOffset = 0701 - Mapping = - 3395 3396 3397 2113 3398 33C4 33A3 33A4 - 33A5 33A6 -End of Item 0412 - -Begin of Item 0413 - Format 1 - srcBegin = A7B5 - srcEnd = A7BE - mappingOffset = 070B - Mapping = - 33CA 338D 338E 338F 33CF 3388 3389 33C8 - 33A7 33A8 -End of Item 0413 - -Begin of Item 0414 - Format 1 - srcBegin = A7D9 - srcEnd = A7EF - mappingOffset = 0715 - Mapping = - 2126 33C0 33C1 338A 338B 338C 33D6 33C5 - 33AD 33AE 33AF 33DB 33A9 33AA 33AB 33AC - 33DD 33D0 33D3 33C3 33C9 33DC 33C6 -End of Item 0414 - -Begin of Item 0415 - Format 1 - srcBegin = A8A1 - srcEnd = A8AF - mappingOffset = 072C - Mapping = - 00C6 00D0 00AA 0126 FFFD 0132 FFFD 013F - 0141 00D8 0152 00BA 00DE 0166 014A -End of Item 0415 - -Begin of Item 0416 - Format 1 - srcBegin = A8F6 - srcEnd = A8FE - mappingOffset = 073B - Mapping = - 00BD 2153 2154 00BC 00BE 215B 215C 215D - 215E -End of Item 0416 - -Begin of Item 0417 - Format 1 - srcBegin = A961 - srcEnd = A967 - mappingOffset = 0744 - Mapping = - CBE0 CBE1 CBE2 CBE3 CBE5 CBE6 CBE8 -End of Item 0417 - -Begin of Item 0418 - Format 1 - srcBegin = A990 - srcEnd = A994 - mappingOffset = 074B - Mapping = - CC0E CC0F CC11 CC12 CC13 -End of Item 0418 - -Begin of Item 0419 - Format 1 - srcBegin = A99C - srcEnd = A9B0 - mappingOffset = 0750 - Mapping = - CC1E CC1F CC20 CC23 CC24 00E6 0111 00F0 - 0127 0131 0133 0138 0140 0142 00F8 0153 - 00DF 00FE 0167 014B 0149 -End of Item 0419 - -Begin of Item 041A - Format 1 - srcBegin = A9F6 - srcEnd = A9FE - mappingOffset = 0765 - Mapping = - 00B9 00B2 00B3 2074 207F 2081 2082 2083 - 2084 -End of Item 041A - -Begin of Item 041B - Format 1 - srcBegin = AA41 - srcEnd = AA46 - mappingOffset = 076E - Mapping = - CC25 CC26 CC2A CC2B CC2D CC2F -End of Item 041B - -Begin of Item 041C - Format 2 - srcBegin = AA4E - destBegin = CC3A -End of Item 041C - -Begin of Item 041D - Format 1 - srcBegin = AA54 - srcEnd = AA5A - mappingOffset = 0774 - Mapping = - CC46 CC47 CC49 CC4A CC4B CC4D CC4E -End of Item 041D - -Begin of Item 041E - Format 2 - srcBegin = AA66 - destBegin = CC56 -End of Item 041E - -Begin of Item 041F - Format 1 - srcBegin = AA6D - srcEnd = AA71 - mappingOffset = 077B - Mapping = - CC61 CC62 CC63 CC65 CC67 -End of Item 041F - -Begin of Item 0420 - Format 1 - srcBegin = AA79 - srcEnd = AA7A - mappingOffset = 0780 - Mapping = - CC71 CC72 -End of Item 0420 - -Begin of Item 0421 - Format 1 - srcBegin = AA81 - srcEnd = AA82 - mappingOffset = 0782 - Mapping = - CC73 CC74 -End of Item 0421 - -Begin of Item 0422 - Format 1 - srcBegin = AB41 - srcEnd = AB49 - mappingOffset = 0784 - Mapping = - CC94 CC95 CC96 CC97 CC9A CC9B CC9D CC9E - CC9F -End of Item 0422 - -Begin of Item 0423 - Format 2 - srcBegin = AB51 - destBegin = CCAA -End of Item 0423 - -Begin of Item 0424 - Format 1 - srcBegin = AB58 - srcEnd = AB5A - mappingOffset = 078D - Mapping = - CCB6 CCB7 CCB9 -End of Item 0424 - -Begin of Item 0425 - Format 1 - srcBegin = AB61 - srcEnd = AB62 - mappingOffset = 0790 - Mapping = - CCBA CCBB -End of Item 0425 - -Begin of Item 0426 - Format 1 - srcBegin = AB6A - srcEnd = AB6B - mappingOffset = 0792 - Mapping = - CCC6 CCC8 -End of Item 0426 - -Begin of Item 0427 - Format 1 - srcBegin = AB72 - srcEnd = AB74 - mappingOffset = 0794 - Mapping = - CCD1 CCD2 CCD3 -End of Item 0427 - -Begin of Item 0428 - Format 1 - srcBegin = AB91 - srcEnd = AB93 - mappingOffset = 0797 - Mapping = - CCED CCEE CCEF -End of Item 0428 - -Begin of Item 0429 - Format 1 - srcBegin = AC41 - srcEnd = AC43 - mappingOffset = 079A - Mapping = - CCFE CCFF CD00 -End of Item 0429 - -Begin of Item 042A - Format 1 - srcBegin = AC4A - srcEnd = AC4E - mappingOffset = 079D - Mapping = - CD0A CD0B CD0D CD0E CD0F -End of Item 042A - -Begin of Item 042B - Format 1 - srcBegin = AC56 - srcEnd = AC5A - mappingOffset = 07A2 - Mapping = - CD1A CD1C CD1E CD1F CD20 -End of Item 042B - -Begin of Item 042C - Format 1 - srcBegin = AC61 - srcEnd = AC69 - mappingOffset = 07A7 - Mapping = - CD21 CD22 CD23 CD25 CD26 CD27 CD29 CD2A - CD2B -End of Item 042C - -Begin of Item 042D - Format 1 - srcBegin = AC9E - srcEnd = ACA0 - mappingOffset = 07B0 - Mapping = - CD5D CD5E CD5F -End of Item 042D - -Begin of Item 042E - Format 2 - srcBegin = ACA7 - destBegin = 0401 -End of Item 042E - -Begin of Item 042F - Format 2 - srcBegin = ACD7 - destBegin = 0451 -End of Item 042F - -Begin of Item 0430 - Format 1 - srcBegin = AD41 - srcEnd = AD43 - mappingOffset = 07B3 - Mapping = - CD61 CD62 CD63 -End of Item 0430 - -Begin of Item 0431 - Format 1 - srcBegin = AD4B - srcEnd = AD4C - mappingOffset = 07B6 - Mapping = - CD6E CD70 -End of Item 0431 - -Begin of Item 0432 - Format 1 - srcBegin = AD73 - srcEnd = AD7A - mappingOffset = 07B8 - Mapping = - CD96 CD97 CD99 CD9A CD9B CD9D CD9E CD9F -End of Item 0432 - -Begin of Item 0433 - Format 1 - srcBegin = AD81 - srcEnd = AD86 - mappingOffset = 07C0 - Mapping = - CDA0 CDA1 CDA2 CDA3 CDA6 CDA8 -End of Item 0433 - -Begin of Item 0434 - Format 2 - srcBegin = ADA0 - destBegin = CDC5 -End of Item 0434 - -Begin of Item 0435 - Format 1 - srcBegin = AE47 - srcEnd = AE49 - mappingOffset = 07C6 - Mapping = - CDCD CDCE CDCF -End of Item 0435 - -Begin of Item 0436 - Format 1 - srcBegin = AE67 - srcEnd = AE6C - mappingOffset = 07C9 - Mapping = - CDE9 CDEA CDEB CDED CDEE CDEF -End of Item 0436 - -Begin of Item 0437 - Format 1 - srcBegin = AE74 - srcEnd = AE75 - mappingOffset = 07CF - Mapping = - CDFA CDFC -End of Item 0437 - -Begin of Item 0438 - Format 1 - srcBegin = AE81 - srcEnd = AE87 - mappingOffset = 07D1 - Mapping = - CE03 CE05 CE06 CE07 CE09 CE0A CE0B -End of Item 0438 - -Begin of Item 0439 - Format 1 - srcBegin = AE8F - srcEnd = AE92 - mappingOffset = 07D8 - Mapping = - CE15 CE16 CE17 CE18 -End of Item 0439 - -Begin of Item 043A - Format 1 - srcBegin = AE99 - srcEnd = AEA0 - mappingOffset = 07DC - Mapping = - CE22 CE23 CE25 CE26 CE27 CE29 CE2A CE2B -End of Item 043A - -Begin of Item 043B - Format 1 - srcBegin = AF41 - srcEnd = AF46 - mappingOffset = 07E4 - Mapping = - CE2C CE2D CE2E CE2F CE32 CE34 -End of Item 043B - -Begin of Item 043C - Format 1 - srcBegin = AF6F - srcEnd = AF72 - mappingOffset = 07EA - Mapping = - CE5A CE5B CE5D CE5E -End of Item 043C - -Begin of Item 043D - Format 1 - srcBegin = AF79 - srcEnd = AF7A - mappingOffset = 07EE - Mapping = - CE6A CE6C -End of Item 043D - -Begin of Item 043E - Format 1 - srcBegin = AF87 - srcEnd = AF8B - mappingOffset = 07F0 - Mapping = - CE76 CE77 CE79 CE7A CE7B -End of Item 043E - -Begin of Item 043F - Format 1 - srcBegin = AF93 - srcEnd = AF94 - mappingOffset = 07F5 - Mapping = - CE86 CE88 -End of Item 043F - -Begin of Item 0440 - Format 1 - srcBegin = AF9B - srcEnd = AFA0 - mappingOffset = 07F7 - Mapping = - CE92 CE93 CE95 CE96 CE97 CE99 -End of Item 0440 - -Begin of Item 0441 - Format 2 - srcBegin = B047 - destBegin = CEA2 -End of Item 0441 - -Begin of Item 0442 - Format 1 - srcBegin = B08F - srcEnd = B092 - mappingOffset = 07FD - Mapping = - CEE6 CEE7 CEE9 CEEA -End of Item 0442 - -Begin of Item 0443 - Format 2 - srcBegin = B09A - destBegin = CEF6 -End of Item 0443 - -Begin of Item 0444 - Format 1 - srcBegin = B0A1 - srcEnd = B0A7 - mappingOffset = 0801 - Mapping = - AC00 AC01 AC04 AC07 AC08 AC09 AC0A -End of Item 0444 - -Begin of Item 0445 - Format 1 - srcBegin = B0B5 - srcEnd = B0FE - mappingOffset = 0808 - Mapping = - AC20 AC24 AC2C AC2D AC2F AC30 AC31 AC38 - AC39 AC3C AC40 AC4B AC4D AC54 AC58 AC5C - AC70 AC71 AC74 AC77 AC78 AC7A AC80 AC81 - AC83 AC84 AC85 AC86 AC89 AC8A AC8B AC8C - AC90 AC94 AC9C AC9D AC9F ACA0 ACA1 ACA8 - ACA9 ACAA ACAC ACAF ACB0 ACB8 ACB9 ACBB - ACBC ACBD ACC1 ACC4 ACC8 ACCC ACD5 ACD7 - ACE0 ACE1 ACE4 ACE7 ACE8 ACEA ACEC ACEF - ACF0 ACF1 ACF3 ACF5 ACF6 ACFC ACFD AD00 - AD04 AD06 -End of Item 0445 - -Begin of Item 0446 - Format 1 - srcBegin = B141 - srcEnd = B145 - mappingOffset = 0852 - Mapping = - CF02 CF03 CF05 CF06 CF07 -End of Item 0446 - -Begin of Item 0447 - Format 1 - srcBegin = B14D - srcEnd = B14E - mappingOffset = 0857 - Mapping = - CF12 CF14 -End of Item 0447 - -Begin of Item 0448 - Format 1 - srcBegin = B155 - srcEnd = B15A - mappingOffset = 0859 - Mapping = - CF1D CF1E CF1F CF21 CF22 CF23 -End of Item 0448 - -Begin of Item 0449 - Format 2 - srcBegin = B168 - destBegin = CF2E -End of Item 0449 - -Begin of Item 044A - Format 1 - srcBegin = B190 - srcEnd = B194 - mappingOffset = 085F - Mapping = - CF56 CF57 CF59 CF5A CF5B -End of Item 044A - -Begin of Item 044B - Format 1 - srcBegin = B19C - srcEnd = B1FE - mappingOffset = 0864 - Mapping = - CF66 CF68 CF6A CF6B CF6C AD0C AD0D AD0F - AD11 AD18 AD1C AD20 AD29 AD2C AD2D AD34 - AD35 AD38 AD3C AD44 AD45 AD47 AD49 AD50 - AD54 AD58 AD61 AD63 AD6C AD6D AD70 AD73 - AD74 AD75 AD76 AD7B AD7C AD7D AD7F AD81 - AD82 AD88 AD89 AD8C AD90 AD9C AD9D ADA4 - ADB7 ADC0 ADC1 ADC4 ADC8 ADD0 ADD1 ADD3 - ADDC ADE0 ADE4 ADF8 ADF9 ADFC ADFF AE00 - AE01 AE08 AE09 AE0B AE0D AE14 AE30 AE31 - AE34 AE37 AE38 AE3A AE40 AE41 AE43 AE45 - AE46 AE4A AE4C AE4D AE4E AE50 AE54 AE56 - AE5C AE5D AE5F AE60 AE61 AE65 AE68 AE69 - AE6C AE70 AE78 -End of Item 044B - -Begin of Item 044C - Format 1 - srcBegin = B241 - srcEnd = B248 - mappingOffset = 08C7 - Mapping = - CF6D CF6E CF6F CF72 CF73 CF75 CF76 CF77 -End of Item 044C - -Begin of Item 044D - Format 1 - srcBegin = B250 - srcEnd = B253 - mappingOffset = 08CF - Mapping = - CF81 CF82 CF83 CF84 -End of Item 044D - -Begin of Item 044E - Format 2 - srcBegin = B25A - destBegin = CF8D -End of Item 044E - -Begin of Item 044F - Format 2 - srcBegin = B27A - destBegin = CFA9 -End of Item 044F - -Begin of Item 0450 - Format 1 - srcBegin = B2A1 - srcEnd = B2FE - mappingOffset = 08D3 - Mapping = - AE79 AE7B AE7C AE7D AE84 AE85 AE8C AEBC - AEBD AEBE AEC0 AEC4 AECC AECD AECF AED0 - AED1 AED8 AED9 AEDC AEE8 AEEB AEED AEF4 - AEF8 AEFC AF07 AF08 AF0D AF10 AF2C AF2D - AF30 AF32 AF34 AF3C AF3D AF3F AF41 AF42 - AF43 AF48 AF49 AF50 AF5C AF5D AF64 AF65 - AF79 AF80 AF84 AF88 AF90 AF91 AF95 AF9C - AFB8 AFB9 AFBC AFC0 AFC7 AFC8 AFC9 AFCB - AFCD AFCE AFD4 AFDC AFE8 AFE9 AFF0 AFF1 - AFF4 AFF8 B000 B001 B004 B00C B010 B014 - B01C B01D B028 B044 B045 B048 B04A B04C - B04E B053 B054 B055 B057 B059 -End of Item 0450 - -Begin of Item 0451 - Format 1 - srcBegin = B355 - srcEnd = B35A - mappingOffset = 0931 - Mapping = - CFE2 CFE3 CFE5 CFE6 CFE7 CFE9 -End of Item 0451 - -Begin of Item 0452 - Format 1 - srcBegin = B367 - srcEnd = B368 - mappingOffset = 0937 - Mapping = - CFF2 CFF4 -End of Item 0452 - -Begin of Item 0453 - Format 1 - srcBegin = B36F - srcEnd = B374 - mappingOffset = 0939 - Mapping = - CFFD CFFE CFFF D001 D002 D003 -End of Item 0453 - -Begin of Item 0454 - Format 1 - srcBegin = B3A1 - srcEnd = B3B3 - mappingOffset = 093F - Mapping = - B05D B07C B07D B080 B084 B08C B08D B08F - B091 B098 B099 B09A B09C B09F B0A0 B0A1 - B0A2 B0A8 B0A9 -End of Item 0454 - -Begin of Item 0455 - Format 1 - srcBegin = B3B9 - srcEnd = B3FE - mappingOffset = 0952 - Mapping = - B0B1 B0B3 B0B4 B0B5 B0B8 B0BC B0C4 B0C5 - B0C7 B0C8 B0C9 B0D0 B0D1 B0D4 B0D8 B0E0 - B0E5 B108 B109 B10B B10C B110 B112 B113 - B118 B119 B11B B11C B11D B123 B124 B125 - B128 B12C B134 B135 B137 B138 B139 B140 - B141 B144 B148 B150 B151 B154 B155 B158 - B15C B160 B178 B179 B17C B180 B182 B188 - B189 B18B B18D B192 B193 B194 B198 B19C - B1A8 B1CC B1D0 B1D4 B1DC B1DD -End of Item 0455 - -Begin of Item 0456 - Format 1 - srcBegin = B447 - srcEnd = B44B - mappingOffset = 0998 - Mapping = - D036 D037 D039 D03A D03B -End of Item 0456 - -Begin of Item 0457 - Format 1 - srcBegin = B453 - srcEnd = B454 - mappingOffset = 099D - Mapping = - D046 D048 -End of Item 0457 - -Begin of Item 0458 - Format 1 - srcBegin = B461 - srcEnd = B466 - mappingOffset = 099F - Mapping = - D051 D052 D053 D055 D056 D057 -End of Item 0458 - -Begin of Item 0459 - Format 1 - srcBegin = B479 - srcEnd = B47A - mappingOffset = 09A5 - Mapping = - D06E D06F -End of Item 0459 - -Begin of Item 045A - Format 1 - srcBegin = B481 - srcEnd = B483 - mappingOffset = 09A7 - Mapping = - D071 D072 D073 -End of Item 045A - -Begin of Item 045B - Format 1 - srcBegin = B48B - srcEnd = B48D - mappingOffset = 09AA - Mapping = - D07E D07F D080 -End of Item 045B - -Begin of Item 045C - Format 1 - srcBegin = B4A1 - srcEnd = B4DC - mappingOffset = 09AD - Mapping = - B1DF B1E8 B1E9 B1EC B1F0 B1F9 B1FB B1FD - B204 B205 B208 B20B B20C B214 B215 B217 - B219 B220 B234 B23C B258 B25C B260 B268 - B269 B274 B275 B27C B284 B285 B289 B290 - B291 B294 B298 B299 B29A B2A0 B2A1 B2A3 - B2A5 B2A6 B2AA B2AC B2B0 B2B4 B2C8 B2C9 - B2CC B2D0 B2D2 B2D8 B2D9 B2DB B2DD B2E2 - B2E4 B2E5 B2E6 B2E8 -End of Item 045C - -Begin of Item 045D - Format 1 - srcBegin = B4E2 - srcEnd = B4E4 - mappingOffset = 09E9 - Mapping = - B2F3 B2F4 B2F5 -End of Item 045D - -Begin of Item 045E - Format 1 - srcBegin = B4EA - srcEnd = B4FE - mappingOffset = 09EC - Mapping = - B2FF B300 B301 B304 B308 B310 B311 B313 - B314 B315 B31C B354 B355 B356 B358 B35B - B35C B35E B35F B364 B365 -End of Item 045E - -Begin of Item 045F - Format 1 - srcBegin = B550 - srcEnd = B554 - mappingOffset = 0A01 - Mapping = - D0A6 D0A7 D0A9 D0AA D0AB -End of Item 045F - -Begin of Item 0460 - Format 1 - srcBegin = B561 - srcEnd = B563 - mappingOffset = 0A06 - Mapping = - D0B3 D0B6 D0B8 -End of Item 0460 - -Begin of Item 0461 - Format 1 - srcBegin = B56A - srcEnd = B56E - mappingOffset = 0A09 - Mapping = - D0C2 D0C3 D0C5 D0C6 D0C7 -End of Item 0461 - -Begin of Item 0462 - Format 2 - srcBegin = B575 - destBegin = D0D2 -End of Item 0462 - -Begin of Item 0463 - Format 1 - srcBegin = B581 - srcEnd = B586 - mappingOffset = 0A0E - Mapping = - D0DB D0DE D0DF D0E1 D0E2 D0E3 -End of Item 0463 - -Begin of Item 0464 - Format 2 - srcBegin = B58E - destBegin = D0EE -End of Item 0464 - -Begin of Item 0465 - Format 1 - srcBegin = B5A1 - srcEnd = B5FE - mappingOffset = 0A14 - Mapping = - B367 B369 B36B B36E B370 B371 B374 B378 - B380 B381 B383 B384 B385 B38C B390 B394 - B3A0 B3A1 B3A8 B3AC B3C4 B3C5 B3C8 B3CB - B3CC B3CE B3D0 B3D4 B3D5 B3D7 B3D9 B3DB - B3DD B3E0 B3E4 B3E8 B3FC B410 B418 B41C - B420 B428 B429 B42B B434 B450 B451 B454 - B458 B460 B461 B463 B465 B46C B480 B488 - B49D B4A4 B4A8 B4AC B4B5 B4B7 B4B9 B4C0 - B4C4 B4C8 B4D0 B4D5 B4DC B4DD B4E0 B4E3 - B4E4 B4E6 B4EC B4ED B4EF B4F1 B4F8 B514 - B515 B518 B51B B51C B524 B525 B527 B528 - B529 B52A B530 B531 B534 B538 -End of Item 0465 - -Begin of Item 0466 - Format 1 - srcBegin = B671 - srcEnd = B67A - mappingOffset = 0A72 - Mapping = - D132 D133 D135 D136 D137 D139 D13B D13C - D13D D13E -End of Item 0466 - -Begin of Item 0467 - Format 1 - srcBegin = B681 - srcEnd = B682 - mappingOffset = 0A7C - Mapping = - D13F D142 -End of Item 0467 - -Begin of Item 0468 - Format 1 - srcBegin = B689 - srcEnd = B68D - mappingOffset = 0A7E - Mapping = - D14E D14F D151 D152 D153 -End of Item 0468 - -Begin of Item 0469 - Format 1 - srcBegin = B695 - srcEnd = B696 - mappingOffset = 0A83 - Mapping = - D15E D160 -End of Item 0469 - -Begin of Item 046A - Format 1 - srcBegin = B69D - srcEnd = B6FE - mappingOffset = 0A85 - Mapping = - D169 D16A D16B D16D B540 B541 B543 B544 - B545 B54B B54C B54D B550 B554 B55C B55D - B55F B560 B561 B5A0 B5A1 B5A4 B5A8 B5AA - B5AB B5B0 B5B1 B5B3 B5B4 B5B5 B5BB B5BC - B5BD B5C0 B5C4 B5CC B5CD B5CF B5D0 B5D1 - B5D8 B5EC B610 B611 B614 B618 B625 B62C - B634 B648 B664 B668 B69C B69D B6A0 B6A4 - B6AB B6AC B6B1 B6D4 B6F0 B6F4 B6F8 B700 - B701 B705 B728 B729 B72C B72F B730 B738 - B739 B73B B744 B748 B74C B754 B755 B760 - B764 B768 B770 B771 B773 B775 B77C B77D - B780 B784 B78C B78D B78F B790 B791 B792 - B796 B797 -End of Item 046A - -Begin of Item 046B - Format 1 - srcBegin = B756 - srcEnd = B75A - mappingOffset = 0AE7 - Mapping = - D185 D186 D187 D189 D18A -End of Item 046B - -Begin of Item 046C - Format 1 - srcBegin = B776 - srcEnd = B77A - mappingOffset = 0AEC - Mapping = - D1A2 D1A3 D1A5 D1A6 D1A7 -End of Item 046C - -Begin of Item 046D - Format 1 - srcBegin = B788 - srcEnd = B791 - mappingOffset = 0AF1 - Mapping = - D1B2 D1B4 D1B6 D1B7 D1B8 D1B9 D1BB D1BD - D1BE D1BF -End of Item 046D - -Begin of Item 046E - Format 1 - srcBegin = B7A1 - srcEnd = B7FE - mappingOffset = 0AFB - Mapping = - B798 B799 B79C B7A0 B7A8 B7A9 B7AB B7AC - B7AD B7B4 B7B5 B7B8 B7C7 B7C9 B7EC B7ED - B7F0 B7F4 B7FC B7FD B7FF B800 B801 B807 - B808 B809 B80C B810 B818 B819 B81B B81D - B824 B825 B828 B82C B834 B835 B837 B838 - B839 B840 B844 B851 B853 B85C B85D B860 - B864 B86C B86D B86F B871 B878 B87C B88D - B8A8 B8B0 B8B4 B8B8 B8C0 B8C1 B8C3 B8C5 - B8CC B8D0 B8D4 B8DD B8DF B8E1 B8E8 B8E9 - B8EC B8F0 B8F8 B8F9 B8FB B8FD B904 B918 - B920 B93C B93D B940 B944 B94C B94F B951 - B958 B959 B95C B960 B968 B969 -End of Item 046E - -Begin of Item 046F - Format 1 - srcBegin = B86A - srcEnd = B86C - mappingOffset = 0B59 - Mapping = - D1F5 D1F6 D1F7 -End of Item 046F - -Begin of Item 0470 - Format 2 - srcBegin = B881 - destBegin = D208 -End of Item 0470 - -Begin of Item 0471 - Format 1 - srcBegin = B8A1 - srcEnd = B8B8 - mappingOffset = 0B5C - Mapping = - B96B B96D B974 B975 B978 B97C B984 B985 - B987 B989 B98A B98D B98E B9AC B9AD B9B0 - B9B4 B9BC B9BD B9BF B9C1 B9C8 B9C9 B9CC -End of Item 0471 - -Begin of Item 0472 - Format 1 - srcBegin = B8BE - srcEnd = B8FE - mappingOffset = 0B74 - Mapping = - B9D8 B9D9 B9DB B9DD B9DE B9E1 B9E3 B9E4 - B9E5 B9E8 B9EC B9F4 B9F5 B9F7 B9F8 B9F9 - B9FA BA00 BA01 BA08 BA15 BA38 BA39 BA3C - BA40 BA42 BA48 BA49 BA4B BA4D BA4E BA53 - BA54 BA55 BA58 BA5C BA64 BA65 BA67 BA68 - BA69 BA70 BA71 BA74 BA78 BA83 BA84 BA85 - BA87 BA8C BAA8 BAA9 BAAB BAAC BAB0 BAB2 - BAB8 BAB9 BABB BABD BAC4 BAC8 BAD8 BAD9 - BAFC -End of Item 0472 - -Begin of Item 0473 - Format 1 - srcBegin = B941 - srcEnd = B947 - mappingOffset = 0BB5 - Mapping = - D22A D22B D22E D22F D231 D232 D233 -End of Item 0473 - -Begin of Item 0474 - Format 1 - srcBegin = B94F - srcEnd = B950 - mappingOffset = 0BBC - Mapping = - D23E D240 -End of Item 0474 - -Begin of Item 0475 - Format 1 - srcBegin = B957 - srcEnd = B95A - mappingOffset = 0BBE - Mapping = - D249 D24A D24B D24C -End of Item 0475 - -Begin of Item 0476 - Format 1 - srcBegin = B977 - srcEnd = B97A - mappingOffset = 0BC2 - Mapping = - D265 D266 D267 D268 -End of Item 0476 - -Begin of Item 0477 - Format 1 - srcBegin = B998 - srcEnd = B9D8 - mappingOffset = 0BC6 - Mapping = - D282 D283 D285 D286 D287 D289 D28A D28B - D28C BB00 BB04 BB0D BB0F BB11 BB18 BB1C - BB20 BB29 BB2B BB34 BB35 BB36 BB38 BB3B - BB3C BB3D BB3E BB44 BB45 BB47 BB49 BB4D - BB4F BB50 BB54 BB58 BB61 BB63 BB6C BB88 - BB8C BB90 BBA4 BBA8 BBAC BBB4 BBB7 BBC0 - BBC4 BBC8 BBD0 BBD3 BBF8 BBF9 BBFC BBFF - BC00 BC02 BC08 BC09 BC0B BC0C BC0D BC0F - BC11 -End of Item 0477 - -Begin of Item 0478 - Format 1 - srcBegin = B9E3 - srcEnd = B9FE - mappingOffset = 0C07 - Mapping = - BC24 BC25 BC27 BC29 BC2D BC30 BC31 BC34 - BC38 BC40 BC41 BC43 BC44 BC45 BC49 BC4C - BC4D BC50 BC5D BC84 BC85 BC88 BC8B BC8C - BC8E BC94 BC95 BC97 -End of Item 0478 - -Begin of Item 0479 - Format 1 - srcBegin = BA41 - srcEnd = BA46 - mappingOffset = 0C23 - Mapping = - D28D D28E D28F D292 D293 D294 -End of Item 0479 - -Begin of Item 047A - Format 1 - srcBegin = BA4D - srcEnd = BA52 - mappingOffset = 0C29 - Mapping = - D29D D29E D29F D2A1 D2A2 D2A3 -End of Item 047A - -Begin of Item 047B - Format 2 - srcBegin = BA5A - destBegin = D2AD -End of Item 047B - -Begin of Item 047C - Format 1 - srcBegin = BA61 - srcEnd = BA63 - mappingOffset = 0C2F - Mapping = - D2AE D2AF D2B0 -End of Item 047C - -Begin of Item 047D - Format 1 - srcBegin = BA6A - srcEnd = BA6E - mappingOffset = 0C32 - Mapping = - D2BA D2BB D2BD D2BE D2C1 -End of Item 047D - -Begin of Item 047E - Format 2 - srcBegin = BA74 - destBegin = D2CA -End of Item 047E - -Begin of Item 047F - Format 1 - srcBegin = BA81 - srcEnd = BA88 - mappingOffset = 0C37 - Mapping = - D2D2 D2D3 D2D5 D2D6 D2D7 D2D9 D2DA D2DB -End of Item 047F - -Begin of Item 0480 - Format 1 - srcBegin = BA9A - srcEnd = BAFE - mappingOffset = 0C3F - Mapping = - D2F2 D2F3 D2F5 D2F6 D2F7 D2F9 D2FA BC99 - BC9A BCA0 BCA1 BCA4 BCA7 BCA8 BCB0 BCB1 - BCB3 BCB4 BCB5 BCBC BCBD BCC0 BCC4 BCCD - BCCF BCD0 BCD1 BCD5 BCD8 BCDC BCF4 BCF5 - BCF6 BCF8 BCFC BD04 BD05 BD07 BD09 BD10 - BD14 BD24 BD2C BD40 BD48 BD49 BD4C BD50 - BD58 BD59 BD64 BD68 BD80 BD81 BD84 BD87 - BD88 BD89 BD8A BD90 BD91 BD93 BD95 BD99 - BD9A BD9C BDA4 BDB0 BDB8 BDD4 BDD5 BDD8 - BDDC BDE9 BDF0 BDF4 BDF8 BE00 BE03 BE05 - BE0C BE0D BE10 BE14 BE1C BE1D BE1F BE44 - BE45 BE48 BE4C BE4E BE54 BE55 BE57 BE59 - BE5A BE5B BE60 BE61 BE64 -End of Item 0480 - -Begin of Item 0481 - Format 1 - srcBegin = BB46 - srcEnd = BB47 - mappingOffset = 0CA4 - Mapping = - D302 D304 -End of Item 0481 - -Begin of Item 0482 - Format 1 - srcBegin = BB4E - srcEnd = BB52 - mappingOffset = 0CA6 - Mapping = - D30F D311 D312 D313 D315 -End of Item 0482 - -Begin of Item 0483 - Format 1 - srcBegin = BB58 - srcEnd = BB5A - mappingOffset = 0CAB - Mapping = - D31E D322 D323 -End of Item 0483 - -Begin of Item 0484 - Format 1 - srcBegin = BB61 - srcEnd = BB68 - mappingOffset = 0CAE - Mapping = - D324 D326 D327 D32A D32B D32D D32E D32F -End of Item 0484 - -Begin of Item 0485 - Format 2 - srcBegin = BB70 - destBegin = D33A -End of Item 0485 - -Begin of Item 0486 - Format 1 - srcBegin = BB77 - srcEnd = BB7A - mappingOffset = 0CB6 - Mapping = - D346 D347 D348 D349 -End of Item 0486 - -Begin of Item 0487 - Format 1 - srcBegin = BBA1 - srcEnd = BBFE - mappingOffset = 0CBA - Mapping = - BE68 BE6A BE70 BE71 BE73 BE74 BE75 BE7B - BE7C BE7D BE80 BE84 BE8C BE8D BE8F BE90 - BE91 BE98 BE99 BEA8 BED0 BED1 BED4 BED7 - BED8 BEE0 BEE3 BEE4 BEE5 BEEC BF01 BF08 - BF09 BF18 BF19 BF1B BF1C BF1D BF40 BF41 - BF44 BF48 BF50 BF51 BF55 BF94 BFB0 BFC5 - BFCC BFCD BFD0 BFD4 BFDC BFDF BFE1 C03C - C051 C058 C05C C060 C068 C069 C090 C091 - C094 C098 C0A0 C0A1 C0A3 C0A5 C0AC C0AD - C0AF C0B0 C0B3 C0B4 C0B5 C0B6 C0BC C0BD - C0BF C0C0 C0C1 C0C5 C0C8 C0C9 C0CC C0D0 - C0D8 C0D9 C0DB C0DC C0DD C0E4 -End of Item 0487 - -Begin of Item 0488 - Format 1 - srcBegin = BC53 - srcEnd = BC5A - mappingOffset = 0D18 - Mapping = - D37E D37F D381 D382 D383 D385 D386 D387 -End of Item 0488 - -Begin of Item 0489 - Format 1 - srcBegin = BC61 - srcEnd = BC65 - mappingOffset = 0D20 - Mapping = - D388 D389 D38A D38B D38E -End of Item 0489 - -Begin of Item 048A - Format 1 - srcBegin = BC6C - srcEnd = BC70 - mappingOffset = 0D25 - Mapping = - D39A D39B D39D D39E D39F -End of Item 048A - -Begin of Item 048B - Format 1 - srcBegin = BC78 - srcEnd = BC7A - mappingOffset = 0D2A - Mapping = - D3AA D3AC D3AE -End of Item 048B - -Begin of Item 048C - Format 1 - srcBegin = BC86 - srcEnd = BC8B - mappingOffset = 0D2D - Mapping = - D3B5 D3B6 D3B7 D3B9 D3BA D3BB -End of Item 048C - -Begin of Item 048D - Format 1 - srcBegin = BC93 - srcEnd = BC94 - mappingOffset = 0D33 - Mapping = - D3C6 D3C7 -End of Item 048D - -Begin of Item 048E - Format 1 - srcBegin = BCA1 - srcEnd = BCAC - mappingOffset = 0D35 - Mapping = - C0E5 C0E8 C0EC C0F4 C0F5 C0F7 C0F9 C100 - C104 C108 C110 C115 -End of Item 048E - -Begin of Item 048F - Format 1 - srcBegin = BCB2 - srcEnd = BCFE - mappingOffset = 0D41 - Mapping = - C123 C124 C126 C127 C12C C12D C12F C130 - C131 C136 C138 C139 C13C C140 C148 C149 - C14B C14C C14D C154 C155 C158 C15C C164 - C165 C167 C168 C169 C170 C174 C178 C185 - C18C C18D C18E C190 C194 C196 C19C C19D - C19F C1A1 C1A5 C1A8 C1A9 C1AC C1B0 C1BD - C1C4 C1C8 C1CC C1D4 C1D7 C1D8 C1E0 C1E4 - C1E8 C1F0 C1F1 C1F3 C1FC C1FD C200 C204 - C20C C20D C20F C211 C218 C219 C21C C21F - C220 C228 C229 C22B C22D -End of Item 048F - -Begin of Item 0490 - Format 2 - srcBegin = BD41 - destBegin = D3D7 -End of Item 0490 - -Begin of Item 0491 - Format 2 - srcBegin = BD4A - destBegin = D3E2 -End of Item 0491 - -Begin of Item 0492 - Format 1 - srcBegin = BD53 - srcEnd = BD5A - mappingOffset = 0D8E - Mapping = - D3EE D3EF D3F1 D3F2 D3F3 D3F5 D3F6 D3F7 -End of Item 0492 - -Begin of Item 0493 - Format 1 - srcBegin = BD61 - srcEnd = BD66 - mappingOffset = 0D96 - Mapping = - D3F8 D3F9 D3FA D3FB D3FE D400 -End of Item 0493 - -Begin of Item 0494 - Format 1 - srcBegin = BDA1 - srcEnd = BDFE - mappingOffset = 0D9C - Mapping = - C22F C231 C232 C234 C248 C250 C251 C254 - C258 C260 C265 C26C C26D C270 C274 C27C - C27D C27F C281 C288 C289 C290 C298 C29B - C29D C2A4 C2A5 C2A8 C2AC C2AD C2B4 C2B5 - C2B7 C2B9 C2DC C2DD C2E0 C2E3 C2E4 C2EB - C2EC C2ED C2EF C2F1 C2F6 C2F8 C2F9 C2FB - C2FC C300 C308 C309 C30C C30D C313 C314 - C315 C318 C31C C324 C325 C328 C329 C345 - C368 C369 C36C C370 C372 C378 C379 C37C - C37D C384 C388 C38C C3C0 C3D8 C3D9 C3DC - C3DF C3E0 C3E2 C3E8 C3E9 C3ED C3F4 C3F5 - C3F8 C408 C410 C424 C42C C430 -End of Item 0494 - -Begin of Item 0495 - Format 1 - srcBegin = BE49 - srcEnd = BE4B - mappingOffset = 0DFA - Mapping = - D441 D442 D443 -End of Item 0495 - -Begin of Item 0496 - Format 1 - srcBegin = BE69 - srcEnd = BE6E - mappingOffset = 0DFD - Mapping = - D45D D45E D45F D461 D462 D463 -End of Item 0496 - -Begin of Item 0497 - Format 1 - srcBegin = BE77 - srcEnd = BE7A - mappingOffset = 0E03 - Mapping = - D46E D470 D471 D472 -End of Item 0497 - -Begin of Item 0498 - Format 1 - srcBegin = BE86 - srcEnd = BE8A - mappingOffset = 0E07 - Mapping = - D47A D47B D47D D47E D481 -End of Item 0498 - -Begin of Item 0499 - Format 1 - srcBegin = BE90 - srcEnd = BE91 - mappingOffset = 0E0C - Mapping = - D48A D48C -End of Item 0499 - -Begin of Item 049A - Format 1 - srcBegin = BEA1 - srcEnd = BEF5 - mappingOffset = 0E0E - Mapping = - C434 C43C C43D C448 C464 C465 C468 C46C - C474 C475 C479 C480 C494 C49C C4B8 C4BC - C4E9 C4F0 C4F1 C4F4 C4F8 C4FA C4FF C500 - C501 C50C C510 C514 C51C C528 C529 C52C - C530 C538 C539 C53B C53D C544 C545 C548 - C549 C54A C54C C54D C54E C553 C554 C555 - C557 C558 C559 C55D C55E C560 C561 C564 - C568 C570 C571 C573 C574 C575 C57C C57D - C580 C584 C587 C58C C58D C58F C591 C595 - C597 C598 C59C C5A0 C5A9 C5B4 C5B5 C5B8 - C5B9 C5BB C5BC C5BD C5BE -End of Item 049A - -Begin of Item 049B - Format 1 - srcBegin = BEFD - srcEnd = BEFE - mappingOffset = 0E63 - Mapping = - C5CC C5CE -End of Item 049B - -Begin of Item 049C - Format 1 - srcBegin = BF74 - srcEnd = BF7A - mappingOffset = 0E65 - Mapping = - D4CD D4CE D4CF D4D1 D4D2 D4D3 D4D5 -End of Item 049C - -Begin of Item 049D - Format 1 - srcBegin = BF87 - srcEnd = BF88 - mappingOffset = 0E6C - Mapping = - D4DD D4DE -End of Item 049D - -Begin of Item 049E - Format 1 - srcBegin = BF91 - srcEnd = BF96 - mappingOffset = 0E6E - Mapping = - D4E9 D4EA D4EB D4ED D4EE D4EF -End of Item 049E - -Begin of Item 049F - Format 1 - srcBegin = BF9E - srcEnd = BFAF - mappingOffset = 0E74 - Mapping = - D4F9 D4FA D4FC C5D0 C5D1 C5D4 C5D8 C5E0 - C5E1 C5E3 C5E5 C5EC C5ED C5EE C5F0 C5F4 - C5F6 C5F7 -End of Item 049F - -Begin of Item 04A0 - Format 1 - srcBegin = BFB6 - srcEnd = BFFE - mappingOffset = 0E86 - Mapping = - C605 C606 C607 C608 C60C C610 C618 C619 - C61B C61C C624 C625 C628 C62C C62D C62E - C630 C633 C634 C635 C637 C639 C63B C640 - C641 C644 C648 C650 C651 C653 C654 C655 - C65C C65D C660 C66C C66F C671 C678 C679 - C67C C680 C688 C689 C68B C68D C694 C695 - C698 C69C C6A4 C6A5 C6A7 C6A9 C6B0 C6B1 - C6B4 C6B8 C6B9 C6BA C6C0 C6C1 C6C3 C6C5 - C6CC C6CD C6D0 C6D4 C6DC C6DD C6E0 C6E1 - C6E8 -End of Item 04A0 - -Begin of Item 04A1 - Format 1 - srcBegin = C047 - srcEnd = C04C - mappingOffset = 0ECF - Mapping = - D505 D506 D507 D509 D50A D50B -End of Item 04A1 - -Begin of Item 04A2 - Format 2 - srcBegin = C054 - destBegin = D516 -End of Item 04A2 - -Begin of Item 04A3 - Format 1 - srcBegin = C081 - srcEnd = C089 - mappingOffset = 0ED5 - Mapping = - D538 D539 D53A D53B D53E D53F D541 D542 - D543 -End of Item 04A3 - -Begin of Item 04A4 - Format 1 - srcBegin = C091 - srcEnd = C092 - mappingOffset = 0EDE - Mapping = - D54E D550 -End of Item 04A4 - -Begin of Item 04A5 - Format 1 - srcBegin = C099 - srcEnd = C0BF - mappingOffset = 0EE0 - Mapping = - D55A D55B D55D D55E D55F D561 D562 D563 - C6E9 C6EC C6F0 C6F8 C6F9 C6FD C704 C705 - C708 C70C C714 C715 C717 C719 C720 C721 - C724 C728 C730 C731 C733 C735 C737 C73C - C73D C740 C744 C74A C74C C74D C74F -End of Item 04A5 - -Begin of Item 04A6 - Format 1 - srcBegin = C0C8 - srcEnd = C0FE - mappingOffset = 0F07 - Mapping = - C75C C760 C768 C76B C774 C775 C778 C77C - C77D C77E C783 C784 C785 C787 C788 C789 - C78A C78E C790 C791 C794 C796 C797 C798 - C79A C7A0 C7A1 C7A3 C7A4 C7A5 C7A6 C7AC - C7AD C7B0 C7B4 C7BC C7BD C7BF C7C0 C7C1 - C7C8 C7C9 C7CC C7CE C7D0 C7D8 C7DD C7E4 - C7E8 C7EC C800 C801 C804 C808 C80A -End of Item 04A6 - -Begin of Item 04A7 - Format 1 - srcBegin = C141 - srcEnd = C145 - mappingOffset = 0F3E - Mapping = - D564 D566 D567 D56A D56C -End of Item 04A7 - -Begin of Item 04A8 - Format 1 - srcBegin = C14C - srcEnd = C150 - mappingOffset = 0F43 - Mapping = - D576 D577 D579 D57A D57B -End of Item 04A8 - -Begin of Item 04A9 - Format 1 - srcBegin = C158 - srcEnd = C15A - mappingOffset = 0F48 - Mapping = - D586 D58A D58B -End of Item 04A9 - -Begin of Item 04AA - Format 1 - srcBegin = C161 - srcEnd = C164 - mappingOffset = 0F4B - Mapping = - D58C D58D D58E D58F -End of Item 04AA - -Begin of Item 04AB - Format 1 - srcBegin = C179 - srcEnd = C17A - mappingOffset = 0F4F - Mapping = - D5A6 D5A7 -End of Item 04AB - -Begin of Item 04AC - Format 1 - srcBegin = C1A1 - srcEnd = C1FE - mappingOffset = 0F51 - Mapping = - C810 C811 C813 C815 C816 C81C C81D C820 - C824 C82C C82D C82F C831 C838 C83C C840 - C848 C849 C84C C84D C854 C870 C871 C874 - C878 C87A C880 C881 C883 C885 C886 C887 - C88B C88C C88D C894 C89D C89F C8A1 C8A8 - C8BC C8BD C8C4 C8C8 C8CC C8D4 C8D5 C8D7 - C8D9 C8E0 C8E1 C8E4 C8F5 C8FC C8FD C900 - C904 C905 C906 C90C C90D C90F C911 C918 - C92C C934 C950 C951 C954 C958 C960 C961 - C963 C96C C970 C974 C97C C988 C989 C98C - C990 C998 C999 C99B C99D C9C0 C9C1 C9C4 - C9C7 C9C8 C9CA C9D0 C9D1 C9D3 -End of Item 04AC - -Begin of Item 04AD - Format 1 - srcBegin = C241 - srcEnd = C246 - mappingOffset = 0FAF - Mapping = - D5CA D5CB D5CD D5CE D5CF D5D1 -End of Item 04AD - -Begin of Item 04AE - Format 1 - srcBegin = C24C - srcEnd = C24D - mappingOffset = 0FB5 - Mapping = - D5DA D5DC -End of Item 04AE - -Begin of Item 04AF - Format 1 - srcBegin = C254 - srcEnd = C25A - mappingOffset = 0FB7 - Mapping = - D5E6 D5E7 D5E9 D5EA D5EB D5ED D5EE -End of Item 04AF - -Begin of Item 04B0 - Format 1 - srcBegin = C266 - srcEnd = C267 - mappingOffset = 0FBE - Mapping = - D5F6 D5F8 -End of Item 04B0 - -Begin of Item 04B1 - Format 1 - srcBegin = C26E - srcEnd = C272 - mappingOffset = 0FC0 - Mapping = - D602 D603 D605 D606 D607 -End of Item 04B1 - -Begin of Item 04B2 - Format 2 - srcBegin = C27A - destBegin = D612 -End of Item 04B2 - -Begin of Item 04B3 - Format 1 - srcBegin = C287 - srcEnd = C28C - mappingOffset = 0FC5 - Mapping = - D61D D61E D61F D621 D622 D623 -End of Item 04B3 - -Begin of Item 04B4 - Format 1 - srcBegin = C29F - srcEnd = C2FE - mappingOffset = 0FCB - Mapping = - D63A D63B C9D5 C9D6 C9D9 C9DA C9DC C9DD - C9E0 C9E2 C9E4 C9E7 C9EC C9ED C9EF C9F0 - C9F1 C9F8 C9F9 C9FC CA00 CA08 CA09 CA0B - CA0C CA0D CA14 CA18 CA29 CA4C CA4D CA50 - CA54 CA5C CA5D CA5F CA60 CA61 CA68 CA7D - CA84 CA98 CABC CABD CAC0 CAC4 CACC CACD - CACF CAD1 CAD3 CAD8 CAD9 CAE0 CAEC CAF4 - CB08 CB10 CB14 CB18 CB20 CB21 CB41 CB48 - CB49 CB4C CB50 CB58 CB59 CB5D CB64 CB78 - CB79 CB9C CBB8 CBD4 CBE4 CBE7 CBE9 CC0C - CC0D CC10 CC14 CC1C CC1D CC21 CC22 CC27 - CC28 CC29 CC2C CC2E CC30 CC38 CC39 CC3B -End of Item 04B4 - -Begin of Item 04B5 - Format 1 - srcBegin = C341 - srcEnd = C355 - mappingOffset = 102B - Mapping = - D63D D63E D63F D641 D642 D643 D644 D646 - D647 D64A D64C D64E D64F D650 D652 D653 - D656 D657 D659 D65A D65B -End of Item 04B5 - -Begin of Item 04B6 - Format 2 - srcBegin = C366 - destBegin = D668 -End of Item 04B6 - -Begin of Item 04B7 - Format 1 - srcBegin = C36D - srcEnd = C36E - mappingOffset = 1040 - Mapping = - D672 D673 -End of Item 04B7 - -Begin of Item 04B8 - Format 1 - srcBegin = C381 - srcEnd = C383 - mappingOffset = 1042 - Mapping = - D681 D682 D684 -End of Item 04B8 - -Begin of Item 04B9 - Format 1 - srcBegin = C38A - srcEnd = C38E - mappingOffset = 1045 - Mapping = - D68E D68F D691 D692 D693 -End of Item 04B9 - -Begin of Item 04BA - Format 1 - srcBegin = C397 - srcEnd = C398 - mappingOffset = 104A - Mapping = - D69E D6A0 -End of Item 04BA - -Begin of Item 04BB - Format 1 - srcBegin = C39F - srcEnd = C3FE - mappingOffset = 104C - Mapping = - D6A9 D6AA CC3C CC3D CC3E CC44 CC45 CC48 - CC4C CC54 CC55 CC57 CC58 CC59 CC60 CC64 - CC66 CC68 CC70 CC75 CC98 CC99 CC9C CCA0 - CCA8 CCA9 CCAB CCAC CCAD CCB4 CCB5 CCB8 - CCBC CCC4 CCC5 CCC7 CCC9 CCD0 CCD4 CCE4 - CCEC CCF0 CD01 CD08 CD09 CD0C CD10 CD18 - CD19 CD1B CD1D CD24 CD28 CD2C CD39 CD5C - CD60 CD64 CD6C CD6D CD6F CD71 CD78 CD88 - CD94 CD95 CD98 CD9C CDA4 CDA5 CDA7 CDA9 - CDB0 CDC4 CDCC CDD0 CDE8 CDEC CDF0 CDF8 - CDF9 CDFB CDFD CE04 CE08 CE0C CE14 CE19 - CE20 CE21 CE24 CE28 CE30 CE31 CE33 CE35 -End of Item 04BB - -Begin of Item 04BC - Format 1 - srcBegin = C441 - srcEnd = C444 - mappingOffset = 10AC - Mapping = - D6AB D6AD D6AE D6AF -End of Item 04BC - -Begin of Item 04BD - Format 2 - srcBegin = C44D - destBegin = D6BA -End of Item 04BD - -Begin of Item 04BE - Format 1 - srcBegin = C456 - srcEnd = C45A - mappingOffset = 10B0 - Mapping = - D6C6 D6C7 D6C9 D6CA D6CB -End of Item 04BE - -Begin of Item 04BF - Format 1 - srcBegin = C461 - srcEnd = C469 - mappingOffset = 10B5 - Mapping = - D6CD D6CE D6CF D6D0 D6D2 D6D3 D6D5 D6D6 - D6D8 -End of Item 04BF - -Begin of Item 04C0 - Format 1 - srcBegin = C470 - srcEnd = C475 - mappingOffset = 10BE - Mapping = - D6E1 D6E2 D6E3 D6E5 D6E6 D6E7 -End of Item 04C0 - -Begin of Item 04C1 - Format 1 - srcBegin = C481 - srcEnd = C486 - mappingOffset = 10C4 - Mapping = - D6EE D6EF D6F1 D6F2 D6F3 D6F4 -End of Item 04C1 - -Begin of Item 04C2 - Format 1 - srcBegin = C48D - srcEnd = C491 - mappingOffset = 10CA - Mapping = - D6FE D6FF D701 D702 D703 -End of Item 04C2 - -Begin of Item 04C3 - Format 1 - srcBegin = C49E - srcEnd = C4FE - mappingOffset = 10CF - Mapping = - D712 D713 D714 CE58 CE59 CE5C CE5F CE60 - CE61 CE68 CE69 CE6B CE6D CE74 CE75 CE78 - CE7C CE84 CE85 CE87 CE89 CE90 CE91 CE94 - CE98 CEA0 CEA1 CEA3 CEA4 CEA5 CEAC CEAD - CEC1 CEE4 CEE5 CEE8 CEEB CEEC CEF4 CEF5 - CEF7 CEF8 CEF9 CF00 CF01 CF04 CF08 CF10 - CF11 CF13 CF15 CF1C CF20 CF24 CF2C CF2D - CF2F CF30 CF31 CF38 CF54 CF55 CF58 CF5C - CF64 CF65 CF67 CF69 CF70 CF71 CF74 CF78 - CF80 CF85 CF8C CFA1 CFA8 CFB0 CFC4 CFE0 - CFE1 CFE4 CFE8 CFF0 CFF1 CFF3 CFF5 CFFC - D000 D004 D011 D018 D02D D034 D035 D038 - D03C -End of Item 04C3 - -Begin of Item 04C4 - Format 1 - srcBegin = C541 - srcEnd = C548 - mappingOffset = 1130 - Mapping = - D715 D716 D717 D71A D71B D71D D71E D71F -End of Item 04C4 - -Begin of Item 04C5 - Format 1 - srcBegin = C550 - srcEnd = C551 - mappingOffset = 1138 - Mapping = - D72A D72C -End of Item 04C5 - -Begin of Item 04C6 - Format 1 - srcBegin = C558 - srcEnd = C55A - mappingOffset = 113A - Mapping = - D736 D737 D739 -End of Item 04C6 - -Begin of Item 04C7 - Format 1 - srcBegin = C561 - srcEnd = C562 - mappingOffset = 113D - Mapping = - D73A D73B -End of Item 04C7 - -Begin of Item 04C8 - Format 1 - srcBegin = C56A - srcEnd = C56C - mappingOffset = 113F - Mapping = - D745 D746 D748 -End of Item 04C8 - -Begin of Item 04C9 - Format 1 - srcBegin = C573 - srcEnd = C575 - mappingOffset = 1142 - Mapping = - D752 D753 D755 -End of Item 04C9 - -Begin of Item 04CA - Format 1 - srcBegin = C581 - srcEnd = C58E - mappingOffset = 1145 - Mapping = - D75F D762 D764 D766 D767 D768 D76A D76B - D76D D76E D76F D771 D772 D773 -End of Item 04CA - -Begin of Item 04CB - Format 1 - srcBegin = C596 - srcEnd = C598 - mappingOffset = 1153 - Mapping = - D77E D77F D780 -End of Item 04CB - -Begin of Item 04CC - Format 1 - srcBegin = C59F - srcEnd = C5FE - mappingOffset = 1156 - Mapping = - D78A D78B D044 D045 D047 D049 D050 D054 - D058 D060 D06C D06D D070 D074 D07C D07D - D081 D0A4 D0A5 D0A8 D0AC D0B4 D0B5 D0B7 - D0B9 D0C0 D0C1 D0C4 D0C8 D0C9 D0D0 D0D1 - D0D3 D0D4 D0D5 D0DC D0DD D0E0 D0E4 D0EC - D0ED D0EF D0F0 D0F1 D0F8 D10D D130 D131 - D134 D138 D13A D140 D141 D143 D144 D145 - D14C D14D D150 D154 D15C D15D D15F D161 - D168 D16C D17C D184 D188 D1A0 D1A1 D1A4 - D1A8 D1B0 D1B1 D1B3 D1B5 D1BA D1BC D1C0 - D1D8 D1F4 D1F8 D207 D209 D210 D22C D22D - D230 D234 D23C D23D D23F D241 D248 D25C -End of Item 04CC - -Begin of Item 04CD - Format 1 - srcBegin = C641 - srcEnd = C643 - mappingOffset = 11B6 - Mapping = - D78D D78E D78F -End of Item 04CD - -Begin of Item 04CE - Format 1 - srcBegin = C64B - srcEnd = C64C - mappingOffset = 11B9 - Mapping = - D79A D79C -End of Item 04CE - -Begin of Item 04CF - Format 1 - srcBegin = C6A1 - srcEnd = C6FE - mappingOffset = 11BB - Mapping = - D264 D280 D281 D284 D288 D290 D291 D295 - D29C D2A0 D2A4 D2AC D2B1 D2B8 D2B9 D2BC - D2BF D2C0 D2C2 D2C8 D2C9 D2CB D2D4 D2D8 - D2DC D2E4 D2E5 D2F0 D2F1 D2F4 D2F8 D300 - D301 D303 D305 D30C D30D D30E D310 D314 - D316 D31C D31D D31F D320 D321 D325 D328 - D329 D32C D330 D338 D339 D33B D33C D33D - D344 D345 D37C D37D D380 D384 D38C D38D - D38F D390 D391 D398 D399 D39C D3A0 D3A8 - D3A9 D3AB D3AD D3B4 D3B8 D3BC D3C4 D3C5 - D3C8 D3C9 D3D0 D3D8 D3E1 D3E3 D3EC D3ED - D3F0 D3F4 D3FC D3FD D3FF D401 -End of Item 04CF - -Begin of Item 04D0 - Format 1 - srcBegin = C7A1 - srcEnd = C7FE - mappingOffset = 1219 - Mapping = - D408 D41D D440 D444 D45C D460 D464 D46D - D46F D478 D479 D47C D47F D480 D482 D488 - D489 D48B D48D D494 D4A9 D4CC D4D0 D4D4 - D4DC D4DF D4E8 D4EC D4F0 D4F8 D4FB D4FD - D504 D508 D50C D514 D515 D517 D53C D53D - D540 D544 D54C D54D D54F D551 D558 D559 - D55C D560 D565 D568 D569 D56B D56D D574 - D575 D578 D57C D584 D585 D587 D588 D589 - D590 D5A5 D5C8 D5C9 D5CC D5D0 D5D2 D5D8 - D5D9 D5DB D5DD D5E4 D5E5 D5E8 D5EC D5F4 - D5F5 D5F7 D5F9 D600 D601 D604 D608 D610 - D611 D613 D614 D615 D61C D620 -End of Item 04D0 - -Begin of Item 04D1 - Format 1 - srcBegin = C8A1 - srcEnd = C8FE - mappingOffset = 1277 - Mapping = - D624 D62D D638 D639 D63C D640 D645 D648 - D649 D64B D64D D651 D654 D655 D658 D65C - D667 D669 D670 D671 D674 D683 D685 D68C - D68D D690 D694 D69D D69F D6A1 D6A8 D6AC - D6B0 D6B9 D6BB D6C4 D6C5 D6C8 D6CC D6D1 - D6D4 D6D7 D6D9 D6E0 D6E4 D6E8 D6F0 D6F5 - D6FC D6FD D700 D704 D711 D718 D719 D71C - D720 D728 D729 D72B D72D D734 D735 D738 - D73C D744 D747 D749 D750 D751 D754 D756 - D757 D758 D759 D760 D761 D763 D765 D769 - D76C D770 D774 D77C D77D D781 D788 D789 - D78C D790 D798 D799 D79B D79D -End of Item 04D1 - -Begin of Item 04D2 - Format 1 - srcBegin = CAA1 - srcEnd = CAFE - mappingOffset = 12D5 - Mapping = - 4F3D 4F73 5047 50F9 52A0 53EF 5475 54E5 - 5609 5AC1 5BB6 6687 67B6 67B7 67EF 6B4C - 73C2 75C2 7A3C 82DB 8304 8857 8888 8A36 - 8CC8 8DCF 8EFB 8FE6 99D5 523B 5374 5404 - 606A 6164 6BBC 73CF 811A 89BA 89D2 95A3 - 4F83 520A 58BE 5978 59E6 5E72 5E79 61C7 - 63C0 6746 67EC 687F 6F97 764E 770B 78F5 - 7A08 7AFF 7C21 809D 826E 8271 8AEB 9593 - 4E6B 559D 66F7 6E34 78A3 7AED 845B 8910 - 874E 97A8 52D8 574E 582A 5D4C 611F 61BE - 6221 6562 67D1 6A44 6E1B 7518 75B3 76E3 - 77B0 7D3A 90AF 9451 9452 9F95 -End of Item 04D2 - -Begin of Item 04D3 - Format 1 - srcBegin = CBA1 - srcEnd = CBFE - mappingOffset = 1333 - Mapping = - 5323 5CAC 7532 80DB 9240 9598 525B 5808 - 59DC 5CA1 5D17 5EB7 5F3A 5F4A 6177 6C5F - 757A 7586 7CE0 7D73 7DB1 7F8C 8154 8221 - 8591 8941 8B1B 92FC 964D 9C47 4ECB 4EF7 - 500B 51F1 584F 6137 613E 6168 6539 69EA - 6F11 75A5 7686 76D6 7B87 82A5 84CB F900 - 93A7 958B 5580 5BA2 5751 F901 7CB3 7FB9 - 91B5 5028 53BB 5C45 5DE8 62D2 636E 64DA - 64E7 6E20 70AC 795B 8DDD 8E1E F902 907D - 9245 92F8 4E7E 4EF6 5065 5DFE 5EFA 6106 - 6957 8171 8654 8E47 9375 9A2B 4E5E 5091 - 6770 6840 5109 528D 5292 6AA2 -End of Item 04D3 - -Begin of Item 04D4 - Format 1 - srcBegin = CCA1 - srcEnd = CCFE - mappingOffset = 1391 - Mapping = - 77BC 9210 9ED4 52AB 602F 8FF2 5048 61A9 - 63ED 64CA 683C 6A84 6FC0 8188 89A1 9694 - 5805 727D 72AC 7504 7D79 7E6D 80A9 898B - 8B74 9063 9D51 6289 6C7A 6F54 7D50 7F3A - 8A23 517C 614A 7B9D 8B19 9257 938C 4EAC - 4FD3 501E 50BE 5106 52C1 52CD 537F 5770 - 5883 5E9A 5F91 6176 61AC 64CE 656C 666F - 66BB 66F4 6897 6D87 7085 70F1 749F 74A5 - 74CA 75D9 786C 78EC 7ADF 7AF6 7D45 7D93 - 8015 803F 811B 8396 8B66 8F15 9015 93E1 - 9803 9838 9A5A 9BE8 4FC2 5553 583A 5951 - 5B63 5C46 60B8 6212 6842 68B0 -End of Item 04D4 - -Begin of Item 04D5 - Format 1 - srcBegin = CDA1 - srcEnd = CDFE - mappingOffset = 13EF - Mapping = - 68E8 6EAA 754C 7678 78CE 7A3D 7CFB 7E6B - 7E7C 8A08 8AA1 8C3F 968E 9DC4 53E4 53E9 - 544A 5471 56FA 59D1 5B64 5C3B 5EAB 62F7 - 6537 6545 6572 66A0 67AF 69C1 6CBD 75FC - 7690 777E 7A3F 7F94 8003 80A1 818F 82E6 - 82FD 83F0 85C1 8831 88B4 8AA5 F903 8F9C - 932E 96C7 9867 9AD8 9F13 54ED 659B 66F2 - 688F 7A40 8C37 9D60 56F0 5764 5D11 6606 - 68B1 68CD 6EFE 7428 889E 9BE4 6C68 F904 - 9AA8 4F9B 516C 5171 529F 5B54 5DE5 6050 - 606D 62F1 63A7 653B 73D9 7A7A 86A3 8CA2 - 978F 4E32 5BE1 6208 679C 74DC -End of Item 04D5 - -Begin of Item 04D6 - Format 1 - srcBegin = CEA1 - srcEnd = CEFE - mappingOffset = 144D - Mapping = - 79D1 83D3 8A87 8AB2 8DE8 904E 934B 9846 - 5ED3 69E8 85FF 90ED F905 51A0 5B98 5BEC - 6163 68FA 6B3E 704C 742F 74D8 7BA1 7F50 - 83C5 89C0 8CAB 95DC 9928 522E 605D 62EC - 9002 4F8A 5149 5321 58D9 5EE3 66E0 6D38 - 709A 72C2 73D6 7B50 80F1 945B 5366 639B - 7F6B 4E56 5080 584A 58DE 602A 6127 62D0 - 69D0 9B41 5B8F 7D18 80B1 8F5F 4EA4 50D1 - 54AC 55AC 5B0C 5DA0 5DE7 652A 654E 6821 - 6A4B 72E1 768E 77EF 7D5E 7FF9 81A0 854E - 86DF 8F03 8F4E 90CA 9903 9A55 9BAB 4E18 - 4E45 4E5D 4EC7 4FF1 5177 52FE -End of Item 04D6 - -Begin of Item 04D7 - Format 1 - srcBegin = CFA1 - srcEnd = CFFE - mappingOffset = 14AB - Mapping = - 5340 53E3 53E5 548E 5614 5775 57A2 5BC7 - 5D87 5ED0 61FC 62D8 6551 67B8 67E9 69CB - 6B50 6BC6 6BEC 6C42 6E9D 7078 72D7 7396 - 7403 77BF 77E9 7A76 7D7F 8009 81FC 8205 - 820A 82DF 8862 8B33 8CFC 8EC0 9011 90B1 - 9264 92B6 99D2 9A45 9CE9 9DD7 9F9C 570B - 5C40 83CA 97A0 97AB 9EB4 541B 7A98 7FA4 - 88D9 8ECD 90E1 5800 5C48 6398 7A9F 5BAE - 5F13 7A79 7AAE 828E 8EAC 5026 5238 52F8 - 5377 5708 62F3 6372 6B0A 6DC3 7737 53A5 - 7357 8568 8E76 95D5 673A 6AC3 6F70 8A6D - 8ECC 994B F906 6677 6B78 8CB4 -End of Item 04D7 - -Begin of Item 04D8 - Format 1 - srcBegin = D0A1 - srcEnd = D0FE - mappingOffset = 1509 - Mapping = - 9B3C F907 53EB 572D 594E 63C6 69FB 73EA - 7845 7ABA 7AC5 7CFE 8475 898F 8D73 9035 - 95A8 52FB 5747 7547 7B60 83CC 921E F908 - 6A58 514B 524B 5287 621F 68D8 6975 9699 - 50C5 52A4 52E4 61C3 65A4 6839 69FF 747E - 7B4B 82B9 83EB 89B2 8B39 8FD1 9949 F909 - 4ECA 5997 64D2 6611 6A8E 7434 7981 79BD - 82A9 887E 887F 895F F90A 9326 4F0B 53CA - 6025 6271 6C72 7D1A 7D66 4E98 5162 77DC - 80AF 4F01 4F0E 5176 5180 55DC 5668 573B - 57FA 57FC 5914 5947 5993 5BC4 5C90 5D0E - 5DF1 5E7E 5FCC 6280 65D7 65E3 -End of Item 04D8 - -Begin of Item 04D9 - Format 1 - srcBegin = D1A1 - srcEnd = D1DA - mappingOffset = 1567 - Mapping = - 671E 671F 675E 68CB 68C4 6A5F 6B3A 6C23 - 6C7D 6C82 6DC7 7398 7426 742A 7482 74A3 - 7578 757F 7881 78EF 7941 7947 7948 797A - 7B95 7D00 7DBA 7F88 8006 802D 808C 8A18 - 8B4F 8C48 8D77 9321 9324 98E2 9951 9A0E - 9A0F 9A65 9E92 7DCA 4F76 5409 62EE 6854 - 91D1 55AB 513A F90B F90C 5A1C 61E6 F90D - 62CF 62FF -End of Item 04D9 - -Begin of Item 04DA - Format 2 - srcBegin = D1E1 - destBegin = 90A3 -End of Item 04DA - -Begin of Item 04DB - Format 1 - srcBegin = D1E7 - srcEnd = D1FE - mappingOffset = 15A1 - Mapping = - 8AFE F919 F91A F91B F91C 6696 F91D 7156 - F91E F91F 96E3 F920 634F 637A 5357 F921 - 678F 6960 6E73 F922 7537 F923 F924 F925 -End of Item 04DB - -Begin of Item 04DC - Format 1 - srcBegin = D2A1 - srcEnd = D2A6 - mappingOffset = 15B9 - Mapping = - 7D0D F926 F927 8872 56CA 5A18 -End of Item 04DC - -Begin of Item 04DD - Format 1 - srcBegin = D2AC - srcEnd = D2C5 - mappingOffset = 15BF - Mapping = - 4E43 F92D 5167 5948 67F0 8010 F92E 5973 - 5E74 649A 79CA 5FF5 606C 62C8 637B 5BE7 - 5BD7 52AA F92F 5974 5F29 6012 F930 F931 - F932 7459 -End of Item 04DD - -Begin of Item 04DE - Format 2 - srcBegin = D2CC - destBegin = 99D1 -End of Item 04DE - -Begin of Item 04DF - Format 1 - srcBegin = D2D8 - srcEnd = D2E3 - mappingOffset = 15D9 - Mapping = - 6FC3 F944 F945 81BF 8FB2 60F1 F946 F947 - 8166 F948 F949 5C3F -End of Item 04DF - -Begin of Item 04E0 - Format 1 - srcBegin = D2EC - srcEnd = D2EF - mappingOffset = 15E5 - Mapping = - 5AE9 8A25 677B 7D10 -End of Item 04E0 - -Begin of Item 04E1 - Format 1 - srcBegin = D2F6 - srcEnd = D2FE - mappingOffset = 15E9 - Mapping = - 80FD F958 F959 5C3C 6CE5 533F 6EBA 591A - 8336 -End of Item 04E1 - -Begin of Item 04E2 - Format 1 - srcBegin = D3A1 - srcEnd = D3FE - mappingOffset = 15F2 - Mapping = - 4E39 4EB6 4F46 55AE 5718 58C7 5F56 65B7 - 65E6 6A80 6BB5 6E4D 77ED 7AEF 7C1E 7DDE - 86CB 8892 9132 935B 64BB 6FBE 737A 75B8 - 9054 5556 574D 61BA 64D4 66C7 6DE1 6E5B - 6F6D 6FB9 75F0 8043 81BD 8541 8983 8AC7 - 8B5A 931F 6C93 7553 7B54 8E0F 905D 5510 - 5802 5858 5E62 6207 649E 68E0 7576 7CD6 - 87B3 9EE8 4EE3 5788 576E 5927 5C0D 5CB1 - 5E36 5F85 6234 64E1 73B3 81FA 888B 8CB8 - 968A 9EDB 5B85 5FB7 60B3 5012 5200 5230 - 5716 5835 5857 5C0E 5C60 5CF6 5D8B 5EA6 - 5F92 60BC 6311 6389 6417 6843 -End of Item 04E2 - -Begin of Item 04E3 - Format 1 - srcBegin = D4A1 - srcEnd = D4FE - mappingOffset = 1650 - Mapping = - 68F9 6AC2 6DD8 6E21 6ED4 6FE4 71FE 76DC - 7779 79B1 7A3B 8404 89A9 8CED 8DF3 8E48 - 9003 9014 9053 90FD 934D 9676 97DC 6BD2 - 7006 7258 72A2 7368 7763 79BF 7BE4 7E9B - 8B80 58A9 60C7 6566 65FD 66BE 6C8C 711E - 71C9 8C5A 9813 4E6D 7A81 4EDD 51AC 51CD - 52D5 540C 61A7 6771 6850 68DF 6D1E 6F7C - 75BC 77B3 7AE5 80F4 8463 9285 515C 6597 - 675C 6793 75D8 7AC7 8373 F95A 8C46 9017 - 982D 5C6F 81C0 829A 9041 906F 920D 5F97 - 5D9D 6A59 71C8 767B 7B49 85E4 8B04 9127 - 9A30 5587 61F6 F95B 7669 7F85 -End of Item 04E3 - -Begin of Item 04E4 - Format 1 - srcBegin = D5A1 - srcEnd = D5FE - mappingOffset = 16AE - Mapping = - 863F 87BA 88F8 908F F95C 6D1B 70D9 73DE - 7D61 843D F95D 916A 99F1 F95E 4E82 5375 - 6B04 6B12 703E 721B 862D 9E1E 524C 8FA3 - 5D50 64E5 652C 6B16 6FEB 7C43 7E9C 85CD - 8964 89BD 62C9 81D8 881F 5ECA 6717 6D6A - 72FC 7405 746F 8782 90DE 4F86 5D0D 5FA0 - 840A 51B7 63A0 7565 4EAE 5006 5169 51C9 - 6881 6A11 7CAE 7CB1 7CE7 826F 8AD2 8F1B - 91CF 4FB6 5137 52F5 5442 5EEC 616E 623E - 65C5 6ADA 6FFE 792A 85DC 8823 95AD 9A62 - 9A6A 9E97 9ECE 529B 66C6 6B77 701D 792B - 8F62 9742 6190 6200 6523 6F23 -End of Item 04E4 - -Begin of Item 04E5 - Format 1 - srcBegin = D6A1 - srcEnd = D6FE - mappingOffset = 170C - Mapping = - 7149 7489 7DF4 806F 84EE 8F26 9023 934A - 51BD 5217 52A3 6D0C 70C8 88C2 5EC9 6582 - 6BAE 6FC2 7C3E 7375 4EE4 4F36 56F9 F95F - 5CBA 5DBA 601C 73B2 7B2D 7F9A 7FCE 8046 - 901E 9234 96F6 9748 9818 9F61 4F8B 6FA7 - 79AE 91B4 96B7 52DE F960 6488 64C4 6AD3 - 6F5E 7018 7210 76E7 8001 8606 865C 8DEF - 8F05 9732 9B6F 9DFA 9E75 788C 797F 7DA0 - 83C9 9304 9E7F 9E93 8AD6 58DF 5F04 6727 - 7027 74CF 7C60 807E 5121 7028 7262 78CA - 8CC2 8CDA 8CF4 96F7 4E86 50DA 5BEE 5ED6 - 6599 71CE 7642 77AD 804A 84FC -End of Item 04E5 - -Begin of Item 04E6 - Format 1 - srcBegin = D7A1 - srcEnd = D7FE - mappingOffset = 176A - Mapping = - 907C 9B27 9F8D 58D8 5A41 5C62 6A13 6DDA - 6F0F 763B 7D2F 7E37 851E 8938 93E4 964B - 5289 65D2 67F3 69B4 6D41 6E9C 700F 7409 - 7460 7559 7624 786B 8B2C 985E 516D 622E - 9678 4F96 502B 5D19 6DEA 7DB8 8F2A 5F8B - 6144 6817 F961 9686 52D2 808B 51DC 51CC - 695E 7A1C 7DBE 83F1 9675 4FDA 5229 5398 - 540F 550E 5C65 60A7 674E 68A8 6D6C 7281 - 72F8 7406 7483 F962 75E2 7C6C 7F79 7FB8 - 8389 88CF 88E1 91CC 91D0 96E2 9BC9 541D - 6F7E 71D0 7498 85FA 8EAA 96A3 9C57 9E9F - 6797 6DCB 7433 81E8 9716 782C -End of Item 04E6 - -Begin of Item 04E7 - Format 1 - srcBegin = D8A1 - srcEnd = D8FE - mappingOffset = 17C8 - Mapping = - 7ACB 7B20 7C92 6469 746A 75F2 78BC 78E8 - 99AC 9B54 9EBB 5BDE 5E55 6F20 819C 83AB - 9088 4E07 534D 5A29 5DD2 5F4E 6162 633D - 6669 66FC 6EFF 6F2B 7063 779E 842C 8513 - 883B 8F13 9945 9C3B 551C 62B9 672B 6CAB - 8309 896A 977A 4EA1 5984 5FD8 5FD9 671B - 7DB2 7F54 8292 832B 83BD 8F1E 9099 57CB - 59B9 5A92 5BD0 6627 679A 6885 6BCF 7164 - 7F75 8CB7 8CE3 9081 9B45 8108 8C8A 964C - 9A40 9EA5 5B5F 6C13 731B 76F2 76DF 840C - 51AA 8993 514D 5195 52C9 68C9 6C94 7704 - 7720 7DBF 7DEC 9762 9EB5 6EC5 -End of Item 04E7 - -Begin of Item 04E8 - Format 1 - srcBegin = D9A1 - srcEnd = D9FE - mappingOffset = 1826 - Mapping = - 8511 51A5 540D 547D 660E 669D 6927 6E9F - 76BF 7791 8317 84C2 879F 9169 9298 9CF4 - 8882 4FAE 5192 52DF 59C6 5E3D 6155 6478 - 6479 66AE 67D0 6A21 6BCD 6BDB 725F 7261 - 7441 7738 77DB 8017 82BC 8305 8B00 8B28 - 8C8C 6728 6C90 7267 76EE 7766 7A46 9DA9 - 6B7F 6C92 5922 6726 8499 536F 5893 5999 - 5EDF 63CF 6634 6773 6E3A 732B 7AD7 82D7 - 9328 52D9 5DEB 61AE 61CB 620A 62C7 64AB - 65E0 6959 6B66 6BCB 7121 73F7 755D 7E46 - 821E 8302 856A 8AA3 8CBF 9727 9D61 58A8 - 9ED8 5011 520E 543B 554F 6587 -End of Item 04E8 - -Begin of Item 04E9 - Format 1 - srcBegin = DAA1 - srcEnd = DAFE - mappingOffset = 1884 - Mapping = - 6C76 7D0A 7D0B 805E 868A 9580 96EF 52FF - 6C95 7269 5473 5A9A 5C3E 5D4B 5F4C 5FAE - 672A 68B6 6963 6E3C 6E44 7709 7C73 7F8E - 8587 8B0E 8FF7 9761 9EF4 5CB7 60B6 610D - 61AB 654F 65FB 65FC 6C11 6CEF 739F 73C9 - 7DE1 9594 5BC6 871C 8B10 525D 535A 62CD - 640F 64B2 6734 6A38 6CCA 73C0 749E 7B94 - 7C95 7E1B 818A 8236 8584 8FEB 96F9 99C1 - 4F34 534A 53CD 53DB 62CC 642C 6500 6591 - 69C3 6CEE 6F58 73ED 7554 7622 76E4 76FC - 78D0 78FB 792C 7D46 822C 87E0 8FD4 9812 - 98EF 52C3 62D4 64A5 6E24 6F51 -End of Item 04E9 - -Begin of Item 04EA - Format 1 - srcBegin = DBA1 - srcEnd = DBFE - mappingOffset = 18E2 - Mapping = - 767C 8DCB 91B1 9262 9AEE 9B43 5023 508D - 574A 59A8 5C28 5E47 5F77 623F 653E 65B9 - 65C1 6609 678B 699C 6EC2 78C5 7D21 80AA - 8180 822B 82B3 84A1 868C 8A2A 8B17 90A6 - 9632 9F90 500D 4FF3 F963 57F9 5F98 62DC - 6392 676F 6E43 7119 76C3 80CC 80DA 88F4 - 88F5 8919 8CE0 8F29 914D 966A 4F2F 4F70 - 5E1B 67CF 6822 767D 767E 9B44 5E61 6A0A - 7169 71D4 756A F964 7E41 8543 85E9 98DC - 4F10 7B4F 7F70 95A5 51E1 5E06 68B5 6C3E - 6C4E 6CDB 72AF 7BC4 8303 6CD5 743A 50FB - 5288 58C1 64D8 6A97 74A7 7656 -End of Item 04EA - -Begin of Item 04EB - Format 1 - srcBegin = DCA1 - srcEnd = DCFE - mappingOffset = 1940 - Mapping = - 78A7 8617 95E2 9739 F965 535E 5F01 8B8A - 8FA8 8FAF 908A 5225 77A5 9C49 9F08 4E19 - 5002 5175 5C5B 5E77 661E 663A 67C4 68C5 - 70B3 7501 75C5 79C9 7ADD 8F27 9920 9A08 - 4FDD 5821 5831 5BF6 666E 6B65 6D11 6E7A - 6F7D 73E4 752B 83E9 88DC 8913 8B5C 8F14 - 4F0F 50D5 5310 535C 5B93 5FA9 670D 798F - 8179 832F 8514 8907 8986 8F39 8F3B 99A5 - 9C12 672C 4E76 4FF8 5949 5C01 5CEF 5CF0 - 6367 68D2 70FD 71A2 742B 7E2B 84EC 8702 - 9022 92D2 9CF3 4E0D 4ED8 4FEF 5085 5256 - 526F 5426 5490 57E0 592B 5A66 -End of Item 04EB - -Begin of Item 04EC - Format 1 - srcBegin = DDA1 - srcEnd = DDFE - mappingOffset = 199E - Mapping = - 5B5A 5B75 5BCC 5E9C F966 6276 6577 65A7 - 6D6E 6EA5 7236 7B26 7C3F 7F36 8150 8151 - 819A 8240 8299 83A9 8A03 8CA0 8CE6 8CFB - 8D74 8DBA 90E8 91DC 961C 9644 99D9 9CE7 - 5317 5206 5429 5674 58B3 5954 596E 5FFF - 61A4 626E 6610 6C7E 711A 76C6 7C89 7CDE - 7D1B 82AC 8CC1 96F0 F967 4F5B 5F17 5F7F - 62C2 5D29 670B 68DA 787C 7E43 9D6C 4E15 - 5099 5315 532A 5351 5983 5A62 5E87 60B2 - 618A 6249 6279 6590 6787 69A7 6BD4 6BD6 - 6BD7 6BD8 6CB8 F968 7435 75FA 7812 7891 - 79D5 79D8 7C83 7DCB 7FE1 80A5 -End of Item 04EC - -Begin of Item 04ED - Format 1 - srcBegin = DEA1 - srcEnd = DEFE - mappingOffset = 19FC - Mapping = - 813E 81C2 83F2 871A 88E8 8AB9 8B6C 8CBB - 9119 975E 98DB 9F3B 56AC 5B2A 5F6C 658C - 6AB3 6BAF 6D5C 6FF1 7015 725D 73AD 8CA7 - 8CD3 983B 6191 6C37 8058 9A01 4E4D 4E8B - 4E9B 4ED5 4F3A 4F3C 4F7F 4FDF 50FF 53F2 - 53F8 5506 55E3 56DB 58EB 5962 5A11 5BEB - 5BFA 5C04 5DF3 5E2B 5F99 601D 6368 659C - 65AF 67F6 67FB 68AD 6B7B 6C99 6CD7 6E23 - 7009 7345 7802 793E 7940 7960 79C1 7BE9 - 7D17 7D72 8086 820D 838E 84D1 86C7 88DF - 8A50 8A5E 8B1D 8CDC 8D66 8FAD 90AA 98FC - 99DF 9E9D 524A F969 6714 F96A -End of Item 04ED - -Begin of Item 04EE - Format 1 - srcBegin = DFA1 - srcEnd = DFFE - mappingOffset = 1A5A - Mapping = - 5098 522A 5C71 6563 6C55 73CA 7523 759D - 7B97 849C 9178 9730 4E77 6492 6BBA 715E - 85A9 4E09 F96B 6749 68EE 6E17 829F 8518 - 886B 63F7 6F81 9212 98AF 4E0A 50B7 50CF - 511F 5546 55AA 5617 5B40 5C19 5CE0 5E38 - 5E8A 5EA0 5EC2 60F3 6851 6A61 6E58 723D - 7240 72C0 76F8 7965 7BB1 7FD4 88F3 89F4 - 8A73 8C61 8CDE 971C 585E 74BD 8CFD 55C7 - F96C 7A61 7D22 8272 7272 751F 7525 F96D - 7B19 5885 58FB 5DBC 5E8F 5EB6 5F90 6055 - 6292 637F 654D 6691 66D9 66F8 6816 68F2 - 7280 745E 7B6E 7D6E 7DD6 7F72 -End of Item 04EE - -Begin of Item 04EF - Format 1 - srcBegin = E0A1 - srcEnd = E0FE - mappingOffset = 1AB8 - Mapping = - 80E5 8212 85AF 897F 8A93 901D 92E4 9ECD - 9F20 5915 596D 5E2D 60DC 6614 6673 6790 - 6C50 6DC5 6F5F 77F3 78A9 84C6 91CB 932B - 4ED9 50CA 5148 5584 5B0B 5BA3 6247 657E - 65CB 6E32 717D 7401 7444 7487 74BF 766C - 79AA 7DDA 7E55 7FA8 817A 81B3 8239 861A - 87EC 8A75 8DE3 9078 9291 9425 994D 9BAE - 5368 5C51 6954 6CC4 6D29 6E2B 820C 859B - 893B 8A2D 8AAA 96EA 9F67 5261 66B9 6BB2 - 7E96 87FE 8D0D 9583 965D 651D 6D89 71EE - F96E 57CE 59D3 5BAC 6027 60FA 6210 661F - 665F 7329 73F9 76DB 7701 7B6C -End of Item 04EF - -Begin of Item 04F0 - Format 1 - srcBegin = E1A1 - srcEnd = E1FE - mappingOffset = 1B16 - Mapping = - 8056 8072 8165 8AA0 9192 4E16 52E2 6B72 - 6D17 7A05 7B39 7D30 F96F 8CB0 53EC 562F - 5851 5BB5 5C0F 5C11 5DE2 6240 6383 6414 - 662D 68B3 6CBC 6D88 6EAF 701F 70A4 71D2 - 7526 758F 758E 7619 7B11 7BE0 7C2B 7D20 - 7D39 852C 856D 8607 8A34 900D 9061 90B5 - 92B7 97F6 9A37 4FD7 5C6C 675F 6D91 7C9F - 7E8C 8B16 8D16 901F 5B6B 5DFD 640D 84C0 - 905C 98E1 7387 5B8B 609A 677E 6DDE 8A1F - 8AA6 9001 980C 5237 F970 7051 788E 9396 - 8870 91D7 4FEE 53D7 55FD 56DA 5782 58FD - 5AC2 5B88 5CAB 5CC0 5E25 6101 -End of Item 04F0 - -Begin of Item 04F1 - Format 1 - srcBegin = E2A1 - srcEnd = E2FE - mappingOffset = 1B74 - Mapping = - 620D 624B 6388 641C 6536 6578 6A39 6B8A - 6C34 6D19 6F31 71E7 72E9 7378 7407 74B2 - 7626 7761 79C0 7A57 7AEA 7CB9 7D8F 7DAC - 7E61 7F9E 8129 8331 8490 84DA 85EA 8896 - 8AB0 8B90 8F38 9042 9083 916C 9296 92B9 - 968B 96A7 96A8 96D6 9700 9808 9996 9AD3 - 9B1A 53D4 587E 5919 5B70 5BBF 6DD1 6F5A - 719F 7421 74B9 8085 83FD 5DE1 5F87 5FAA - 6042 65EC 6812 696F 6A53 6B89 6D35 6DF3 - 73E3 76FE 77AC 7B4D 7D14 8123 821C 8340 - 84F4 8563 8A62 8AC4 9187 931E 9806 99B4 - 620C 8853 8FF0 9265 5D07 5D27 -End of Item 04F1 - -Begin of Item 04F2 - Format 1 - srcBegin = E3A1 - srcEnd = E3FE - mappingOffset = 1BD2 - Mapping = - 5D69 745F 819D 8768 6FD5 62FE 7FD2 8936 - 8972 4E1E 4E58 50E7 52DD 5347 627F 6607 - 7E69 8805 965E 4F8D 5319 5636 59CB 5AA4 - 5C38 5C4E 5C4D 5E02 5F11 6043 65BD 662F - 6642 67BE 67F4 731C 77E2 793A 7FC5 8494 - 84CD 8996 8A66 8A69 8AE1 8C55 8C7A 57F4 - 5BD4 5F0F 606F 62ED 690D 6B96 6E5C 7184 - 7BD2 8755 8B58 8EFE 98DF 98FE 4F38 4F81 - 4FE1 547B 5A20 5BB8 613C 65B0 6668 71FC - 7533 795E 7D33 814E 81E3 8398 85AA 85CE - 8703 8A0A 8EAB 8F9B F971 8FC5 5931 5BA4 - 5BE6 6089 5BE9 5C0B 5FC3 6C81 -End of Item 04F2 - -Begin of Item 04F3 - Format 1 - srcBegin = E4A1 - srcEnd = E4FE - mappingOffset = 1C30 - Mapping = - F972 6DF1 700B 751A 82AF 8AF6 4EC0 5341 - F973 96D9 6C0F 4E9E 4FC4 5152 555E 5A25 - 5CE8 6211 7259 82BD 83AA 86FE 8859 8A1D - 963F 96C5 9913 9D09 9D5D 580A 5CB3 5DBD - 5E44 60E1 6115 63E1 6A02 6E25 9102 9354 - 984E 9C10 9F77 5B89 5CB8 6309 664F 6848 - 773C 96C1 978D 9854 9B9F 65A1 8B01 8ECB - 95BC 5535 5CA9 5DD6 5EB5 6697 764C 83F4 - 95C7 58D3 62BC 72CE 9D28 4EF0 592E 600F - 663B 6B83 79E7 9D26 5393 54C0 57C3 5D16 - 611B 66D6 6DAF 788D 827E 9698 9744 5384 - 627C 6396 6DB2 7E0A 814B 984D -End of Item 04F3 - -Begin of Item 04F4 - Format 1 - srcBegin = E5A1 - srcEnd = E5FE - mappingOffset = 1C8E - Mapping = - 6AFB 7F4C 9DAF 9E1A 4E5F 503B 51B6 591C - 60F9 63F6 6930 723A 8036 F974 91CE 5F31 - F975 F976 7D04 82E5 846F 84BB 85E5 8E8D - F977 4F6F F978 F979 58E4 5B43 6059 63DA - 6518 656D 6698 F97A 694A 6A23 6D0B 7001 - 716C 75D2 760D 79B3 7A70 F97B 7F8A F97C - 8944 F97D 8B93 91C0 967D F97E 990A 5704 - 5FA1 65BC 6F01 7600 79A6 8A9E 99AD 9B5A - 9F6C 5104 61B6 6291 6A8D 81C6 5043 5830 - 5F66 7109 8A00 8AFA 5B7C 8616 4FFA 513C - 56B4 5944 63A9 6DF9 5DAA 696D 5186 4E88 - 4F59 F97F F980 F981 5982 F982 -End of Item 04F4 - -Begin of Item 04F5 - Format 1 - srcBegin = E6A1 - srcEnd = E6FE - mappingOffset = 1CEC - Mapping = - F983 6B5F 6C5D F984 74B5 7916 F985 8207 - 8245 8339 8F3F 8F5D F986 9918 F987 F988 - F989 4EA6 F98A 57DF 5F79 6613 F98B F98C - 75AB 7E79 8B6F F98D 9006 9A5B 56A5 5827 - 59F8 5A1F 5BB4 F98E 5EF6 F98F F990 6350 - 633B F991 693D 6C87 6CBF 6D8E 6D93 6DF5 - 6F14 F992 70DF 7136 7159 F993 71C3 71D5 - F994 784F 786F F995 7B75 7DE3 F996 7E2F - F997 884D 8EDF F998 F999 F99A 925B F99B - 9CF6 F99C F99D F99E 6085 6D85 F99F 71B1 - F9A0 F9A1 95B1 53AD F9A2 F9A3 F9A4 67D3 - F9A5 708E 7130 7430 8276 82D2 -End of Item 04F5 - -Begin of Item 04F6 - Format 1 - srcBegin = E7A1 - srcEnd = E7FE - mappingOffset = 1D4A - Mapping = - F9A6 95BB 9AE5 9E7D 66C4 F9A7 71C1 8449 - F9A8 F9A9 584B F9AA F9AB 5DB8 5F71 F9AC - 6620 668E 6979 69AE 6C38 6CF3 6E36 6F41 - 6FDA 701B 702F 7150 71DF 7370 F9AD 745B - F9AE 74D4 76C8 7A4E 7E93 F9AF F9B0 82F1 - 8A60 8FCE F9B1 9348 F9B2 9719 F9B3 F9B4 - 4E42 502A F9B5 5208 53E1 66F3 6C6D 6FCA - 730A 777F 7A62 82AE 85DD 8602 F9B6 88D4 - 8A63 8B7D 8C6B F9B7 92B3 F9B8 9713 9810 - 4E94 4F0D 4FC9 50B2 5348 543E 5433 55DA - 5862 58BA 5967 5A1B 5BE4 609F F9B9 61CA - 6556 65FF 6664 68A7 6C5A 6FB3 -End of Item 04F6 - -Begin of Item 04F7 - Format 1 - srcBegin = E8A1 - srcEnd = E8FE - mappingOffset = 1DA8 - Mapping = - 70CF 71AC 7352 7B7D 8708 8AA4 9C32 9F07 - 5C4B 6C83 7344 7389 923A 6EAB 7465 761F - 7A69 7E15 860A 5140 58C5 64C1 74EE 7515 - 7670 7FC1 9095 96CD 9954 6E26 74E6 7AA9 - 7AAA 81E5 86D9 8778 8A1B 5A49 5B8C 5B9B - 68A1 6900 6D63 73A9 7413 742C 7897 7DE9 - 7FEB 8118 8155 839E 8C4C 962E 9811 66F0 - 5F80 65FA 6789 6C6A 738B 502D 5A03 6B6A - 77EE 5916 5D6C 5DCD 7325 754F F9BA F9BB - 50E5 51F9 582F 592D 5996 59DA 5BE5 F9BC - F9BD 5DA2 62D7 6416 6493 64FE F9BE 66DC - F9BF 6A48 F9C0 71FF 7464 F9C1 -End of Item 04F7 - -Begin of Item 04F8 - Format 1 - srcBegin = E9A1 - srcEnd = E9FE - mappingOffset = 1E06 - Mapping = - 7A88 7AAF 7E47 7E5E 8000 8170 F9C2 87EF - 8981 8B20 9059 F9C3 9080 9952 617E 6B32 - 6D74 7E1F 8925 8FB1 4FD1 50AD 5197 52C7 - 57C7 5889 5BB9 5EB8 6142 6995 6D8C 6E67 - 6EB6 7194 7462 7528 752C 8073 8338 84C9 - 8E0A 9394 93DE F9C4 4E8E 4F51 5076 512A - 53C8 53CB 53F3 5B87 5BD3 5C24 611A 6182 - 65F4 725B 7397 7440 76C2 7950 7991 79B9 - 7D06 7FBD 828B 85D5 865E 8FC2 9047 90F5 - 91EA 9685 96E8 96E9 52D6 5F67 65ED 6631 - 682F 715C 7A36 90C1 980A 4E91 F9C5 6A52 - 6B9E 6F90 7189 8018 82B8 8553 -End of Item 04F8 - -Begin of Item 04F9 - Format 1 - srcBegin = EAA1 - srcEnd = EAFE - mappingOffset = 1E64 - Mapping = - 904B 9695 96F2 97FB 851A 9B31 4E90 718A - 96C4 5143 539F 54E1 5713 5712 57A3 5A9B - 5AC4 5BC3 6028 613F 63F4 6C85 6D39 6E72 - 6E90 7230 733F 7457 82D1 8881 8F45 9060 - F9C6 9662 9858 9D1B 6708 8D8A 925E 4F4D - 5049 50DE 5371 570D 59D4 5A01 5C09 6170 - 6690 6E2D 7232 744B 7DEF 80C3 840E 8466 - 853F 875F 885B 8918 8B02 9055 97CB 9B4F - 4E73 4F91 5112 516A F9C7 552F 55A9 5B7A - 5BA5 5E7C 5E7D 5EBE 60A0 60DF 6108 6109 - 63C4 6538 6709 F9C8 67D4 67DA F9C9 6961 - 6962 6CB9 6D27 F9CA 6E38 F9CB -End of Item 04F9 - -Begin of Item 04FA - Format 1 - srcBegin = EBA1 - srcEnd = EBFE - mappingOffset = 1EC2 - Mapping = - 6FE1 7336 7337 F9CC 745C 7531 F9CD 7652 - F9CE F9CF 7DAD 81FE 8438 88D5 8A98 8ADB - 8AED 8E30 8E42 904A 903E 907A 9149 91C9 - 936E F9D0 F9D1 5809 F9D2 6BD3 8089 80B2 - F9D3 F9D4 5141 596B 5C39 F9D5 F9D6 6F64 - 73A7 80E4 8D07 F9D7 9217 958F F9D8 F9D9 - F9DA F9DB 807F 620E 701C 7D68 878D F9DC - 57A0 6069 6147 6BB7 8ABE 9280 96B1 4E59 - 541F 6DEB 852D 9670 97F3 98EE 63D6 6CE3 - 9091 51DD 61C9 81BA 9DF9 4F9D 501A 5100 - 5B9C 610F 61FF 64EC 6905 6BC5 7591 77E3 - 7FA9 8264 858F 87FB 8863 8ABC -End of Item 04FA - -Begin of Item 04FB - Format 1 - srcBegin = ECA1 - srcEnd = ECFE - mappingOffset = 1F20 - Mapping = - 8B70 91AB 4E8C 4EE5 4F0A F9DD F9DE 5937 - 59E8 F9DF 5DF2 5F1B 5F5B 6021 F9E0 F9E1 - F9E2 F9E3 723E 73E5 F9E4 7570 75CD F9E5 - 79FB F9E6 800C 8033 8084 82E1 8351 F9E7 - F9E8 8CBD 8CB3 9087 F9E9 F9EA 98F4 990C - F9EB F9EC 7037 76CA 7FCA 7FCC 7FFC 8B1A - 4EBA 4EC1 5203 5370 F9ED 54BD 56E0 59FB - 5BC5 5F15 5FCD 6E6E F9EE F9EF 7D6A 8335 - F9F0 8693 8A8D F9F1 976D 9777 F9F2 F9F3 - 4E00 4F5A 4F7E 58F9 65E5 6EA2 9038 93B0 - 99B9 4EFB 58EC 598A 59D9 6041 F9F4 F9F5 - 7A14 F9F6 834F 8CC3 5165 5344 -End of Item 04FB - -Begin of Item 04FC - Format 1 - srcBegin = EDA1 - srcEnd = EDFE - mappingOffset = 1F7E - Mapping = - F9F7 F9F8 F9F9 4ECD 5269 5B55 82BF 4ED4 - 523A 54A8 59C9 59FF 5B50 5B57 5B5C 6063 - 6148 6ECB 7099 716E 7386 74F7 75B5 78C1 - 7D2B 8005 81EA 8328 8517 85C9 8AEE 8CC7 - 96CC 4F5C 52FA 56BC 65AB 6628 707C 70B8 - 7235 7DBD 828D 914C 96C0 9D72 5B71 68E7 - 6B98 6F7A 76DE 5C91 66AB 6F5B 7BB4 7C2A - 8836 96DC 4E08 4ED7 5320 5834 58BB 58EF - 596C 5C07 5E33 5E84 5F35 638C 66B2 6756 - 6A1F 6AA3 6B0C 6F3F 7246 F9FA 7350 748B - 7AE0 7CA7 8178 81DF 81E7 838A 846C 8523 - 8594 85CF 88DD 8D13 91AC 9577 -End of Item 04FC - -Begin of Item 04FD - Format 1 - srcBegin = EEA1 - srcEnd = EEFE - mappingOffset = 1FDC - Mapping = - 969C 518D 54C9 5728 5BB0 624D 6750 683D - 6893 6E3D 6ED3 707D 7E21 88C1 8CA1 8F09 - 9F4B 9F4E 722D 7B8F 8ACD 931A 4F47 4F4E - 5132 5480 59D0 5E95 62B5 6775 696E 6A17 - 6CAE 6E1A 72D9 732A 75BD 7BB8 7D35 82E7 - 83F9 8457 85F7 8A5B 8CAF 8E87 9019 90B8 - 96CE 9F5F 52E3 540A 5AE1 5BC2 6458 6575 - 6EF4 72C4 F9FB 7684 7A4D 7B1B 7C4D 7E3E - 7FDF 837B 8B2B 8CCA 8D64 8DE1 8E5F 8FEA - 8FF9 9069 93D1 4F43 4F7A 50B3 5168 5178 - 524D 526A 5861 587C 5960 5C08 5C55 5EDB - 609B 6230 6813 6BBF 6C08 6FB1 -End of Item 04FD - -Begin of Item 04FE - Format 1 - srcBegin = EFA1 - srcEnd = EFFE - mappingOffset = 203A - Mapping = - 714E 7420 7530 7538 7551 7672 7B4C 7B8B - 7BAD 7BC6 7E8F 8A6E 8F3E 8F49 923F 9293 - 9322 942B 96FB 985A 986B 991E 5207 622A - 6298 6D59 7664 7ACA 7BC0 7D76 5360 5CBE - 5E97 6F38 70B9 7C98 9711 9B8E 9EDE 63A5 - 647A 8776 4E01 4E95 4EAD 505C 5075 5448 - 59C3 5B9A 5E40 5EAD 5EF7 5F81 60C5 633A - 653F 6574 65CC 6676 6678 67FE 6968 6A89 - 6B63 6C40 6DC0 6DE8 6E1F 6E5E 701E 70A1 - 738E 73FD 753A 775B 7887 798E 7A0B 7A7D - 7CBE 7D8E 8247 8A02 8AEA 8C9E 912D 914A - 91D8 9266 92CC 9320 9706 9756 -End of Item 04FE - -Begin of Item 04FF - Format 1 - srcBegin = F0A1 - srcEnd = F0FE - mappingOffset = 2098 - Mapping = - 975C 9802 9F0E 5236 5291 557C 5824 5E1D - 5F1F 608C 63D0 68AF 6FDF 796D 7B2C 81CD - 85BA 88FD 8AF8 8E44 918D 9664 969B 973D - 984C 9F4A 4FCE 5146 51CB 52A9 5632 5F14 - 5F6B 63AA 64CD 65E9 6641 66FA 66F9 671D - 689D 68D7 69FD 6F15 6F6E 7167 71E5 722A - 74AA 773A 7956 795A 79DF 7A20 7A95 7C97 - 7CDF 7D44 7E70 8087 85FB 86A4 8A54 8ABF - 8D99 8E81 9020 906D 91E3 963B 96D5 9CE5 - 65CF 7C07 8DB3 93C3 5B58 5C0A 5352 62D9 - 731D 5027 5B97 5F9E 60B0 616B 68D5 6DD9 - 742E 7A2E 7D42 7D9C 7E31 816B -End of Item 04FF - -Begin of Item 0500 - Format 1 - srcBegin = F1A1 - srcEnd = F1FE - mappingOffset = 20F6 - Mapping = - 8E2A 8E35 937E 9418 4F50 5750 5DE6 5EA7 - 632B 7F6A 4E3B 4F4F 4F8F 505A 59DD 80C4 - 546A 5468 55FE 594F 5B99 5DDE 5EDA 665D - 6731 67F1 682A 6CE8 6D32 6E4A 6F8D 70B7 - 73E0 7587 7C4C 7D02 7D2C 7DA2 821F 86DB - 8A3B 8A85 8D70 8E8A 8F33 9031 914E 9152 - 9444 99D0 7AF9 7CA5 4FCA 5101 51C6 57C8 - 5BEF 5CFB 6659 6A3D 6D5A 6E96 6FEC 710C - 756F 7AE3 8822 9021 9075 96CB 99FF 8301 - 4E2D 4EF2 8846 91CD 537D 6ADB 696B 6C41 - 847A 589E 618E 66FE 62EF 70DD 7511 75C7 - 7E52 84B8 8B49 8D08 4E4B 53EA -End of Item 0500 - -Begin of Item 0501 - Format 1 - srcBegin = F2A1 - srcEnd = F2FE - mappingOffset = 2154 - Mapping = - 54AB 5730 5740 5FD7 6301 6307 646F 652F - 65E8 667A 679D 67B3 6B62 6C60 6C9A 6F2C - 77E5 7825 7949 7957 7D19 80A2 8102 81F3 - 829D 82B7 8718 8A8C F9FC 8D04 8DBE 9072 - 76F4 7A19 7A37 7E54 8077 5507 55D4 5875 - 632F 6422 6649 664B 686D 699B 6B84 6D25 - 6EB1 73CD 7468 74A1 755B 75B9 76E1 771E - 778B 79E6 7E09 7E1D 81FB 852F 8897 8A3A - 8CD1 8EEB 8FB0 9032 93AD 9663 9673 9707 - 4F84 53F1 59EA 5AC9 5E19 684E 74C6 75BE - 79E9 7A92 81A3 86ED 8CEA 8DCC 8FED 659F - 6715 F9FD 57F7 6F57 7DDD 8F2F -End of Item 0501 - -Begin of Item 0502 - Format 1 - srcBegin = F3A1 - srcEnd = F3FE - mappingOffset = 21B2 - Mapping = - 93F6 96C6 5FB5 61F2 6F84 4E14 4F98 501F - 53C9 55DF 5D6F 5DEE 6B21 6B64 78CB 7B9A - F9FE 8E49 8ECA 906E 6349 643E 7740 7A84 - 932F 947F 9F6A 64B0 6FAF 71E6 74A8 74DA - 7AC4 7C12 7E82 7CB2 7E98 8B9A 8D0A 947D - 9910 994C 5239 5BDF 64E6 672D 7D2E 50ED - 53C3 5879 6158 6159 61FA 65AC 7AD9 8B92 - 8B96 5009 5021 5275 5531 5A3C 5EE0 5F70 - 6134 655E 660C 6636 66A2 69CD 6EC4 6F32 - 7316 7621 7A93 8139 8259 83D6 84BC 50B5 - 57F0 5BC0 5BE8 5F69 63A1 7826 7DB5 83DC - 8521 91C7 91F5 518A 67F5 7B56 -End of Item 0502 - -Begin of Item 0503 - Format 1 - srcBegin = F4A1 - srcEnd = F4FE - mappingOffset = 2210 - Mapping = - 8CAC 51C4 59BB 60BD 8655 501C F9FF 5254 - 5C3A 617D 621A 62D3 64F2 65A5 6ECC 7620 - 810A 8E60 965F 96BB 4EDF 5343 5598 5929 - 5DDD 64C5 6CC9 6DFA 7394 7A7F 821B 85A6 - 8CE4 8E10 9077 91E7 95E1 9621 97C6 51F8 - 54F2 5586 5FB9 64A4 6F88 7DB4 8F1F 8F4D - 9435 50C9 5C16 6CBE 6DFB 751B 77BB 7C3D - 7C64 8A79 8AC2 581E 59BE 5E16 6377 7252 - 758A 776B 8ADC 8CBC 8F12 5EF3 6674 6DF8 - 807D 83C1 8ACB 9751 9BD6 FA00 5243 66FF - 6D95 6EEF 7DE0 8AE6 902E 905E 9AD4 521D - 527F 54E8 6194 6284 62DB 68A2 -End of Item 0503 - -Begin of Item 0504 - Format 1 - srcBegin = F5A1 - srcEnd = F5FE - mappingOffset = 226E - Mapping = - 6912 695A 6A35 7092 7126 785D 7901 790E - 79D2 7A0D 8096 8278 82D5 8349 8549 8C82 - 8D85 9162 918B 91AE 4FC3 56D1 71ED 77D7 - 8700 89F8 5BF8 5FD6 6751 90A8 53E2 585A - 5BF5 60A4 6181 6460 7E3D 8070 8525 9283 - 64AE 50AC 5D14 6700 589C 62BD 63A8 690E - 6978 6A1E 6E6B 76BA 79CB 82BB 8429 8ACF - 8DA8 8FFD 9112 914B 919C 9310 9318 939A - 96DB 9A36 9C0D 4E11 755C 795D 7AFA 7B51 - 7BC9 7E2E 84C4 8E59 8E74 8EF8 9010 6625 - 693F 7443 51FA 672E 9EDC 5145 5FE0 6C96 - 87F2 885D 8877 60B4 81B5 8403 -End of Item 0504 - -Begin of Item 0505 - Format 1 - srcBegin = F6A1 - srcEnd = F6FE - mappingOffset = 22CC - Mapping = - 8D05 53D6 5439 5634 5A36 5C31 708A 7FE0 - 805A 8106 81ED 8DA3 9189 9A5F 9DF2 5074 - 4EC4 53A0 60FB 6E2C 5C64 4F88 5024 55E4 - 5CD9 5E5F 6065 6894 6CBB 6DC4 71BE 75D4 - 75F4 7661 7A1A 7A49 7DC7 7DFB 7F6E 81F4 - 86A9 8F1C 96C9 99B3 9F52 5247 52C5 98ED - 89AA 4E03 67D2 6F06 4FB5 5BE2 6795 6C88 - 6D78 741B 7827 91DD 937C 87C4 79E4 7A31 - 5FEB 4ED6 54A4 553E 58AE 59A5 60F0 6253 - 62D6 6736 6955 8235 9640 99B1 99DD 502C - 5353 5544 577C FA01 6258 FA02 64E2 666B - 67DD 6FC1 6FEF 7422 7438 8A17 -End of Item 0505 - -Begin of Item 0506 - Format 1 - srcBegin = F7A1 - srcEnd = F7FE - mappingOffset = 232A - Mapping = - 9438 5451 5606 5766 5F48 619A 6B4E 7058 - 70AD 7DBB 8A95 596A 812B 63A2 7708 803D - 8CAA 5854 642D 69BB 5B95 5E11 6E6F FA03 - 8569 514C 53F0 592A 6020 614B 6B86 6C70 - 6CF0 7B1E 80CE 82D4 8DC6 90B0 98B1 FA04 - 64C7 6FA4 6491 6504 514E 5410 571F 8A0E - 615F 6876 FA05 75DB 7B52 7D71 901A 5806 - 69CC 817F 892A 9000 9839 5078 5957 59AC - 6295 900F 9B2A 615D 7279 95D6 5761 5A46 - 5DF4 628A 64AD 64FA 6777 6CE2 6D3E 722C - 7436 7834 7F77 82AD 8DDB 9817 5224 5742 - 677F 7248 74E3 8CA9 8FA6 9211 -End of Item 0506 - -Begin of Item 0507 - Format 1 - srcBegin = F8A1 - srcEnd = F8FE - mappingOffset = 2388 - Mapping = - 962A 516B 53ED 634C 4F69 5504 6096 6557 - 6C9B 6D7F 724C 72FD 7A17 8987 8C9D 5F6D - 6F8E 70F9 81A8 610E 4FBF 504F 6241 7247 - 7BC7 7DE8 7FE9 904D 97AD 9A19 8CB6 576A - 5E73 67B0 840D 8A55 5420 5B16 5E63 5EE2 - 5F0A 6583 80BA 853D 9589 965B 4F48 5305 - 530D 530F 5486 54FA 5703 5E03 6016 629B - 62B1 6355 FA06 6CE1 6D66 75B1 7832 80DE - 812F 82DE 8461 84B2 888D 8912 900B 92EA - 98FD 9B91 5E45 66B4 66DD 7011 7206 FA07 - 4FF5 527D 5F6A 6153 6753 6A19 6F02 74E2 - 7968 8868 8C79 98C7 98C4 9A43 -End of Item 0507 - -Begin of Item 0508 - Format 1 - srcBegin = F9A1 - srcEnd = F9FE - mappingOffset = 23E6 - Mapping = - 54C1 7A1F 6953 8AF7 8C4A 98A8 99AE 5F7C - 62AB 75B2 76AE 88AB 907F 9642 5339 5F3C - 5FC5 6CCC 73CC 7562 758B 7B46 82FE 999D - 4E4F 903C 4E0B 4F55 53A6 590F 5EC8 6630 - 6CB3 7455 8377 8766 8CC0 9050 971E 9C15 - 58D1 5B78 8650 8B14 9DB4 5BD2 6068 608D - 65F1 6C57 6F22 6FA3 701A 7F55 7FF0 9591 - 9592 9650 97D3 5272 8F44 51FD 542B 54B8 - 5563 558A 6ABB 6DB5 7DD8 8266 929C 9677 - 9E79 5408 54C8 76D2 86E4 95A4 95D4 965C - 4EA2 4F09 59EE 5AE6 5DF7 6052 6297 676D - 6841 6C86 6E2F 7F38 809B 822A -End of Item 0508 - -Begin of Item 0509 - Format 1 - srcBegin = FAA1 - srcEnd = FAFE - mappingOffset = 2444 - Mapping = - FA08 FA09 9805 4EA5 5055 54B3 5793 595A - 5B69 5BB3 61C8 6977 6D77 7023 87F9 89E3 - 8A72 8AE7 9082 99ED 9AB8 52BE 6838 5016 - 5E78 674F 8347 884C 4EAB 5411 56AE 73E6 - 9115 97FF 9909 9957 9999 5653 589F 865B - 8A31 61B2 6AF6 737B 8ED2 6B47 96AA 9A57 - 5955 7200 8D6B 9769 4FD4 5CF4 5F26 61F8 - 665B 6CEB 70AB 7384 73B9 73FE 7729 774D - 7D43 7D62 7E23 8237 8852 FA0A 8CE2 9249 - 986F 5B51 7A74 8840 9801 5ACC 4FE0 5354 - 593E 5CFD 633E 6D79 72F9 8105 8107 83A2 - 92CF 9830 4EA8 5144 5211 578B -End of Item 0509 - -Begin of Item 050A - Format 1 - srcBegin = FBA1 - srcEnd = FBFE - mappingOffset = 24A2 - Mapping = - 5F62 6CC2 6ECE 7005 7050 70AF 7192 73E9 - 7469 834A 87A2 8861 9008 90A2 93A3 99A8 - 516E 5F57 60E0 6167 66B3 8559 8E4A 91AF - 978B 4E4E 4E92 547C 58D5 58FA 597D 5CB5 - 5F27 6236 6248 660A 6667 6BEB 6D69 6DCF - 6E56 6EF8 6F94 6FE0 6FE9 705D 72D0 7425 - 745A 74E0 7693 795C 7CCA 7E1E 80E1 82A6 - 846B 84BF 864E 865F 8774 8B77 8C6A 93AC - 9800 9865 60D1 6216 9177 5A5A 660F 6DF7 - 6E3E 743F 9B42 5FFD 60DA 7B0F 54C4 5F18 - 6C5E 6CD3 6D2A 70D8 7D05 8679 8A0C 9D3B - 5316 548C 5B05 6A3A 706B 7575 -End of Item 050A - -Begin of Item 050B - Format 1 - srcBegin = FCA1 - srcEnd = FCFE - mappingOffset = 2500 - Mapping = - 798D 79BE 82B1 83EF 8A71 8B41 8CA8 9774 - FA0B 64F4 652B 78BA 78BB 7A6B 4E38 559A - 5950 5BA6 5E7B 60A3 63DB 6B61 6665 6853 - 6E19 7165 74B0 7D08 9084 9A69 9C25 6D3B - 6ED1 733E 8C41 95CA 51F0 5E4C 5FA8 604D - 60F6 6130 614C 6643 6644 69A5 6CC1 6E5F - 6EC9 6F62 714C 749C 7687 7BC1 7C27 8352 - 8757 9051 968D 9EC3 532F 56DE 5EFB 5F8A - 6062 6094 61F7 6666 6703 6A9C 6DEE 6FAE - 7070 736A 7E6A 81BE 8334 86D4 8AA8 8CC4 - 5283 7372 5B96 6A6B 9404 54EE 5686 5B5D - 6548 6585 66C9 689F 6D8D 6DC6 -End of Item 050B - -Begin of Item 050C - Format 1 - srcBegin = FDA1 - srcEnd = FDFE - mappingOffset = 255E - Mapping = - 723B 80B4 9175 9A4D 4FAF 5019 539A 540E - 543C 5589 55C5 5E3F 5F8C 673D 7166 73DD - 9005 52DB 52F3 5864 58CE 7104 718F 71FB - 85B0 8A13 6688 85A8 55A7 6684 714A 8431 - 5349 5599 6BC1 5F59 5FBD 63EE 6689 7147 - 8AF1 8F1D 9EBE 4F11 643A 70CB 7566 8667 - 6064 8B4E 9DF8 5147 51F6 5308 6D36 80F8 - 9ED1 6615 6B23 7098 75D5 5403 5C79 7D07 - 8A16 6B20 6B3D 6B46 5438 6070 6D3D 7FD5 - 8208 50D6 51DE 559C 566B 56CD 59EC 5B09 - 5E0C 6199 6198 6231 665E 66E6 7199 71B9 - 71BA 72A7 79A7 7A00 7FB2 8A70 -End of Item 050C - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x050D, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0148, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x106F, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x02B5 */ -/* Total of Format 1 : 0x0209 */ -/* Total of Format 2 : 0x004F */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1110, 0x1221, 0x1211, -0x1121, 0x1111, 0x1211, 0x1211, 0x1111, 0x2121, 0x1111, 0x1111, -0x1121, 0x1111, 0x2111, 0x1112, 0x1121, 0x2111, 0x1111, 0x1111, -0x1211, 0x1221, 0x2111, 0x1111, 0x1111, 0x1211, 0x1211, 0x1121, -0x1111, 0x1121, 0x2111, 0x1212, 0x1112, 0x1212, 0x1111, 0x1111, -0x1111, 0x1111, 0x1211, 0x1121, 0x1111, 0x1111, 0x1211, 0x1111, -0x1111, 0x1111, 0x1112, 0x1111, 0x2111, 0x2111, 0x1211, 0x1112, -0x1112, 0x1111, 0x1111, 0x1112, 0x2111, 0x1211, 0x1111, 0x1121, -0x1111, 0x1111, 0x1111, 0x1111, 0x1211, 0x1111, 0x1111, 0x2111, -0x1211, 0x2111, 0x1121, 0x2111, 0x2112, 0x1111, 0x1111, 0x2111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1211, 0x1112, 0x2111, -0x1112, 0x2111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1212, -0x2111, 0x1111, 0x1111, 0x2211, 0x1111, 0x1112, 0x1111, 0x1111, -0x2121, 0x1111, 0x1121, 0x2211, 0x1111, 0x1111, 0x1111, 0x1111, -0x1211, 0x1112, 0x1111, 0x1111, 0x1112, 0x1111, 0x2111, 0x1211, -0x1111, 0x1121, 0x1111, 0x1111, 0x1122, 0x1111, 0x1111, 0x1111, -0x1211, 0x1111, 0x1111, 0x1111, 0x1211, 0x1211, 0x1111, 0x1121, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1211, 0x1211, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0148 Start of MapCell Array */ -/* 0000 */ 0x8145, 0x8149, 0xAC0B, -/* 0001 */ 0x8150, 0x8156, 0xAC25, -/* 0002 */ 0x8169, 0x8172, 0xAC41, -/* 0003 */ 0x8174, 0x8179, 0xAC4E, -/* 0004 */ 0x8186, 0x8198, 0xAC5D, -/* 0005 */ 0x819E, 0x81A2, 0xAC7B, -/* 0006 */ 0x81AC, 0x81B2, 0xAC95, -/* 0007 */ 0x81B4, 0x81B9, 0xACA2, -/* 0008 */ 0x81BD, 0x81C3, 0xACB1, -/* 0009 */ 0x81D0, 0x81D7, 0xACCD, -/* 000A */ 0x81D9, 0x81E0, 0xACD8, -/* 000B */ 0x81EB, 0x81EF, 0xACF7, -/* 000C */ 0x81F6, 0x81FA, 0xAD07, -/* 000D */ 0x824B, 0x8252, 0xAD21, -/* 000E */ 0x8255, 0x825A, 0xAD2E, -/* 000F */ 0x8266, 0x826C, 0xAD3D, -/* 0010 */ 0x826F, 0x8274, 0xAD4A, -/* 0011 */ 0x8281, 0x8288, 0xAD59, -/* 0012 */ 0x828A, 0x8291, 0xAD64, -/* 0013 */ 0x829C, 0x82A0, 0xAD83, -/* 0014 */ 0x82A6, 0x82B0, 0xAD91, -/* 0015 */ 0x82B1, 0x82B6, 0xAD9E, -/* 0016 */ 0x82B7, 0x82C8, 0xADA5, -/* 0017 */ 0x82C9, 0x82D0, 0xADB8, -/* 0018 */ 0x82D6, 0x82DC, 0xADC9, -/* 0019 */ 0x82DE, 0x82E5, 0xADD4, -/* 001A */ 0x82EC, 0x82FE, 0xADE5, -/* 001B */ 0x8345, 0x834A, 0xAE02, -/* 001C */ 0x834D, 0x8352, 0xAE0E, -/* 001D */ 0x8353, 0x835A, 0xAE15, -/* 001E */ 0x8361, 0x8373, 0xAE1D, -/* 001F */ 0x838F, 0x8393, 0xAE57, -/* 0020 */ 0x839F, 0x83A5, 0xAE71, -/* 0021 */ 0x83A7, 0x83AC, 0xAE7E, -/* 0022 */ 0x83AD, 0x83B2, 0xAE86, -/* 0023 */ 0x83B3, 0x83E1, 0xAE8D, -/* 0024 */ 0x83E6, 0x83EC, 0xAEC5, -/* 0025 */ 0x83EE, 0x83F3, 0xAED2, -/* 0026 */ 0x83F6, 0x83FE, 0xAEDD, -/* 0027 */ 0x8446, 0x844B, 0xAEEE, -/* 0028 */ 0x8452, 0x845A, 0xAEFD, -/* 0029 */ 0x8468, 0x847A, 0xAF11, -/* 002A */ 0x8481, 0x8488, 0xAF24, -/* 002B */ 0x848D, 0x8493, 0xAF35, -/* 002C */ 0x849A, 0x849F, 0xAF4A, -/* 002D */ 0x84A0, 0x84AA, 0xAF51, -/* 002E */ 0x84AB, 0x84B0, 0xAF5E, -/* 002F */ 0x84B1, 0x84C3, 0xAF66, -/* 0030 */ 0x84C4, 0x84C9, 0xAF7A, -/* 0031 */ 0x84D0, 0x84D6, 0xAF89, -/* 0032 */ 0x84DA, 0x84DF, 0xAF96, -/* 0033 */ 0x84E0, 0x84FA, 0xAF9D, -/* 0034 */ 0x8542, 0x8547, 0xAFC1, -/* 0035 */ 0x854A, 0x854E, 0xAFCF, -/* 0036 */ 0x854F, 0x8555, 0xAFD5, -/* 0037 */ 0x8556, 0x855A, 0xAFDD, -/* 0038 */ 0x8561, 0x8566, 0xAFE2, -/* 0039 */ 0x8567, 0x856C, 0xAFEA, -/* 003A */ 0x8572, 0x8578, 0xAFF9, -/* 003B */ 0x8581, 0x8587, 0xB005, -/* 003C */ 0x858E, 0x8594, 0xB015, -/* 003D */ 0x8595, 0x859E, 0xB01E, -/* 003E */ 0x859F, 0x85B9, 0xB029, -/* 003F */ 0x85C8, 0x85E5, 0xB05E, -/* 0040 */ 0x85EB, 0x85F1, 0xB085, -/* 0041 */ 0x85F4, 0x85F9, 0xB092, -/* 0042 */ 0x864C, 0x8652, 0xB0BD, -/* 0043 */ 0x8654, 0x8659, 0xB0CA, -/* 0044 */ 0x8665, 0x866B, 0xB0D9, -/* 0045 */ 0x8670, 0x867A, 0xB0E6, -/* 0046 */ 0x8681, 0x8697, 0xB0F1, -/* 0047 */ 0x86A2, 0x86A6, 0xB11E, -/* 0048 */ 0x86AC, 0x86B2, 0xB12D, -/* 0049 */ 0x86B4, 0x86B9, 0xB13A, -/* 004A */ 0x86BF, 0x86C5, 0xB149, -/* 004B */ 0x86D0, 0x86E6, 0xB161, -/* 004C */ 0x86ED, 0x86F1, 0xB183, -/* 004D */ 0x8741, 0x874A, 0xB19E, -/* 004E */ 0x874B, 0x875A, 0xB1A9, -/* 004F */ 0x8761, 0x8773, 0xB1B9, -/* 0050 */ 0x8781, 0x8786, 0xB1D6, -/* 0051 */ 0x8788, 0x878F, 0xB1E0, -/* 0052 */ 0x8795, 0x879C, 0xB1F1, -/* 0053 */ 0x879F, 0x87A4, 0xB1FE, -/* 0054 */ 0x87A9, 0x87AF, 0xB20D, -/* 0055 */ 0x87B2, 0x87B7, 0xB21A, -/* 0056 */ 0x87B8, 0x87CA, 0xB221, -/* 0057 */ 0x87CB, 0x87D1, 0xB235, -/* 0058 */ 0x87D2, 0x87EC, 0xB23D, -/* 0059 */ 0x87F3, 0x87F9, 0xB261, -/* 005A */ 0x87FA, 0x87FE, 0xB26A, -/* 005B */ 0x8841, 0x8845, 0xB26F, -/* 005C */ 0x8846, 0x884B, 0xB276, -/* 005D */ 0x884C, 0x8852, 0xB27D, -/* 005E */ 0x8856, 0x885A, 0xB28A, -/* 005F */ 0x8867, 0x886B, 0xB29B, -/* 0060 */ 0x8881, 0x8890, 0xB2B8, -/* 0061 */ 0x8897, 0x889B, 0xB2D3, -/* 0062 */ 0x88B2, 0x88B8, 0xB309, -/* 0063 */ 0x88BA, 0x88BF, 0xB316, -/* 0064 */ 0x88C0, 0x88F6, 0xB31D, -/* 0065 */ 0x894C, 0x8952, 0xB379, -/* 0066 */ 0x8954, 0x8959, 0xB386, -/* 0067 */ 0x8966, 0x8970, 0xB395, -/* 0068 */ 0x8971, 0x8976, 0xB3A2, -/* 0069 */ 0x8981, 0x8996, 0xB3AE, -/* 006A */ 0x89AC, 0x89BE, 0xB3E9, -/* 006B */ 0x89BF, 0x89D1, 0xB3FD, -/* 006C */ 0x89D2, 0x89D8, 0xB411, -/* 006D */ 0x89DF, 0x89E5, 0xB421, -/* 006E */ 0x89E7, 0x89EE, 0xB42C, -/* 006F */ 0x89EF, 0x89FE, 0xB435, -/* 0070 */ 0x8A41, 0x8A4B, 0xB445, -/* 0071 */ 0x8A51, 0x8A57, 0xB459, -/* 0072 */ 0x8A61, 0x8A65, 0xB467, -/* 0073 */ 0x8A66, 0x8A78, 0xB46D, -/* 0074 */ 0x8A81, 0x8A85, 0xB483, -/* 0075 */ 0x8A86, 0x8A99, 0xB489, -/* 0076 */ 0x8A9A, 0x8A9F, 0xB49E, -/* 0077 */ 0x8AA6, 0x8AAD, 0xB4AD, -/* 0078 */ 0x8AB0, 0x8AB5, 0xB4BA, -/* 0079 */ 0x8ABC, 0x8AC2, 0xB4C9, -/* 007A */ 0x8AC7, 0x8ACC, 0xB4D6, -/* 007B */ 0x8AD2, 0x8AD6, 0xB4E7, -/* 007C */ 0x8AD9, 0x8ADE, 0xB4F2, -/* 007D */ 0x8ADF, 0x8AF9, 0xB4F9, -/* 007E */ 0x8B41, 0x8B46, 0xB51E, -/* 007F */ 0x8B48, 0x8B4C, 0xB52B, -/* 0080 */ 0x8B52, 0x8B58, 0xB539, -/* 0081 */ 0x8B6A, 0x8B70, 0xB555, -/* 0082 */ 0x8B72, 0x8B7A, 0xB562, -/* 0083 */ 0x8B81, 0x8BB5, 0xB56B, -/* 0084 */ 0x8BC1, 0x8BC5, 0xB5B6, -/* 0085 */ 0x8BCB, 0x8BD1, 0xB5C5, -/* 0086 */ 0x8BD3, 0x8BD8, 0xB5D2, -/* 0087 */ 0x8BD9, 0x8BEB, 0xB5D9, -/* 0088 */ 0x8BEC, 0x8BFE, 0xB5ED, -/* 0089 */ 0x8C41, 0x8C50, 0xB600, -/* 008A */ 0x8C56, 0x8C5A, 0xB619, -/* 008B */ 0x8C61, 0x8C67, 0xB61E, -/* 008C */ 0x8C68, 0x8C6D, 0xB626, -/* 008D */ 0x8C6E, 0x8C74, 0xB62D, -/* 008E */ 0x8C75, 0x8C7A, 0xB635, -/* 008F */ 0x8C81, 0x8C8D, 0xB63B, -/* 0090 */ 0x8C8E, 0x8CA8, 0xB649, -/* 0091 */ 0x8CAC, 0x8CDE, 0xB669, -/* 0092 */ 0x8CE4, 0x8CE9, 0xB6A5, -/* 0093 */ 0x8CEE, 0x8CFE, 0xB6B2, -/* 0094 */ 0x8D41, 0x8D51, 0xB6C3, -/* 0095 */ 0x8D52, 0x8D5A, 0xB6D5, -/* 0096 */ 0x8D61, 0x8D72, 0xB6DE, -/* 0097 */ 0x8D81, 0x8D85, 0xB6FB, -/* 0098 */ 0x8D89, 0x8DAA, 0xB706, -/* 0099 */ 0x8DAF, 0x8DB5, 0xB731, -/* 009A */ 0x8DB7, 0x8DBE, 0xB73C, -/* 009B */ 0x8DC5, 0x8DCB, 0xB74D, -/* 009C */ 0x8DCC, 0x8DD5, 0xB756, -/* 009D */ 0x8DDC, 0x8DE2, 0xB769, -/* 009E */ 0x8DE5, 0x8DEA, 0xB776, -/* 009F */ 0x8DF0, 0x8DF6, 0xB785, -/* 00A0 */ 0x8E42, 0x8E48, 0xB7A1, -/* 00A1 */ 0x8E4A, 0x8E4F, 0xB7AE, -/* 00A2 */ 0x8E52, 0x8E5A, 0xB7B9, -/* 00A3 */ 0x8E61, 0x8E65, 0xB7C2, -/* 00A4 */ 0x8E67, 0x8E7A, 0xB7CA, -/* 00A5 */ 0x8E81, 0x8E8E, 0xB7DE, -/* 00A6 */ 0x8E94, 0x8E9A, 0xB7F5, -/* 00A7 */ 0x8E9C, 0x8EA0, 0xB802, -/* 00A8 */ 0x8EA6, 0x8EAC, 0xB811, -/* 00A9 */ 0x8EAF, 0x8EB4, 0xB81E, -/* 00AA */ 0x8EBA, 0x8EC0, 0xB82D, -/* 00AB */ 0x8EC2, 0x8EC7, 0xB83A, -/* 00AC */ 0x8ECB, 0x8ED6, 0xB845, -/* 00AD */ 0x8ED8, 0x8EDF, 0xB854, -/* 00AE */ 0x8EE5, 0x8EEB, 0xB865, -/* 00AF */ 0x8EEE, 0x8EF3, 0xB872, -/* 00B0 */ 0x8EF7, 0x8EFE, 0xB87D, -/* 00B1 */ 0x8F41, 0x8F48, 0xB885, -/* 00B2 */ 0x8F49, 0x8F5A, 0xB88E, -/* 00B3 */ 0x8F61, 0x8F68, 0xB8A0, -/* 00B4 */ 0x8F69, 0x8F6F, 0xB8A9, -/* 00B5 */ 0x8F76, 0x8F7A, 0xB8B9, -/* 00B6 */ 0x8F85, 0x8F8A, 0xB8C6, -/* 00B7 */ 0x8F91, 0x8F98, 0xB8D5, -/* 00B8 */ 0x8F9B, 0x8FA0, 0xB8E2, -/* 00B9 */ 0x8FA6, 0x8FAC, 0xB8F1, -/* 00BA */ 0x8FAF, 0x8FB4, 0xB8FE, -/* 00BB */ 0x8FB5, 0x8FC7, 0xB905, -/* 00BC */ 0x8FC8, 0x8FCE, 0xB919, -/* 00BD */ 0x8FCF, 0x8FE9, 0xB921, -/* 00BE */ 0x8FEF, 0x8FF5, 0xB945, -/* 00BF */ 0x8FF9, 0x8FFE, 0xB952, -/* 00C0 */ 0x9046, 0x904C, 0xB961, -/* 00C1 */ 0x904F, 0x9054, 0xB96E, -/* 00C2 */ 0x9061, 0x9066, 0xB97E, -/* 00C3 */ 0x906B, 0x907A, 0xB98F, -/* 00C4 */ 0x9081, 0x908D, 0xB99F, -/* 00C5 */ 0x9093, 0x9099, 0xB9B5, -/* 00C6 */ 0x909C, 0x90A1, 0xB9C2, -/* 00C7 */ 0x90A5, 0x90A9, 0xB9D3, -/* 00C8 */ 0x90B4, 0x90BA, 0xB9ED, -/* 00C9 */ 0x90BC, 0x90C0, 0xB9FB, -/* 00CA */ 0x90C1, 0x90C6, 0xBA02, -/* 00CB */ 0x90C7, 0x90D2, 0xBA09, -/* 00CC */ 0x90D3, 0x90F4, 0xBA16, -/* 00CD */ 0x914D, 0x9153, 0xBA5D, -/* 00CE */ 0x9155, 0x915A, 0xBA6A, -/* 00CF */ 0x9166, 0x916F, 0xBA79, -/* 00D0 */ 0x9175, 0x917A, 0xBA8D, -/* 00D1 */ 0x9181, 0x9195, 0xBA93, -/* 00D2 */ 0x919B, 0x919F, 0xBAB3, -/* 00D3 */ 0x91A2, 0x91A7, 0xBABE, -/* 00D4 */ 0x91AB, 0x91B9, 0xBAC9, -/* 00D5 */ 0x91BA, 0x91DB, 0xBADA, -/* 00D6 */ 0x91E2, 0x91E9, 0xBB05, -/* 00D7 */ 0x91EC, 0x91F1, 0xBB12, -/* 00D8 */ 0x91F8, 0x91FE, 0xBB21, -/* 00D9 */ 0x9243, 0x924A, 0xBB2C, -/* 00DA */ 0x924E, 0x9252, 0xBB3F, -/* 00DB */ 0x9265, 0x926C, 0xBB59, -/* 00DC */ 0x926E, 0x9275, 0xBB64, -/* 00DD */ 0x9276, 0x927A, 0xBB6D, -/* 00DE */ 0x9281, 0x9296, 0xBB72, -/* 00DF */ 0x929D, 0x92AF, 0xBB91, -/* 00E0 */ 0x92B6, 0x92BC, 0xBBAD, -/* 00E1 */ 0x92BF, 0x92C6, 0xBBB8, -/* 00E2 */ 0x92CD, 0x92D3, 0xBBC9, -/* 00E3 */ 0x92D6, 0x92F9, 0xBBD4, -/* 00E4 */ 0x9341, 0x9345, 0xBC03, -/* 00E5 */ 0x9363, 0x9369, 0xBC39, -/* 00E6 */ 0x9372, 0x937A, 0xBC51, -/* 00E7 */ 0x9384, 0x93A9, 0xBC5E, -/* 00E8 */ 0x93AF, 0x93B3, 0xBC8F, -/* 00E9 */ 0x93B6, 0x93BA, 0xBC9B, -/* 00EA */ 0x93BF, 0x93C5, 0xBCA9, -/* 00EB */ 0x93C7, 0x93CC, 0xBCB6, -/* 00EC */ 0x93D2, 0x93D9, 0xBCC5, -/* 00ED */ 0x93E3, 0x93F9, 0xBCDD, -/* 00EE */ 0x9441, 0x9446, 0xBCFE, -/* 00EF */ 0x9449, 0x944E, 0xBD0A, -/* 00F0 */ 0x9452, 0x945A, 0xBD15, -/* 00F1 */ 0x9461, 0x9466, 0xBD1E, -/* 00F2 */ 0x9467, 0x946D, 0xBD25, -/* 00F3 */ 0x946E, 0x947A, 0xBD2D, -/* 00F4 */ 0x9481, 0x9486, 0xBD3A, -/* 00F5 */ 0x9487, 0x948D, 0xBD41, -/* 00F6 */ 0x9493, 0x9499, 0xBD51, -/* 00F7 */ 0x949A, 0x94A3, 0xBD5A, -/* 00F8 */ 0x94A7, 0x94BD, 0xBD69, -/* 00F9 */ 0x94C2, 0x94C6, 0xBD8B, -/* 00FA */ 0x94CD, 0x94D3, 0xBD9D, -/* 00FB */ 0x94D4, 0x94DE, 0xBDA5, -/* 00FC */ 0x94DF, 0x94E5, 0xBDB1, -/* 00FD */ 0x94E6, 0x94FE, 0xBDB9, -/* 00FE */ 0x9548, 0x9553, 0xBDDD, -/* 00FF */ 0x9554, 0x9559, 0xBDEA, -/* 0100 */ 0x9566, 0x956C, 0xBDF9, -/* 0101 */ 0x9570, 0x9575, 0xBE06, -/* 0102 */ 0x9581, 0x9587, 0xBE15, -/* 0103 */ 0x9589, 0x95AC, 0xBE20, -/* 0104 */ 0x95B3, 0x95B7, 0xBE4F, -/* 0105 */ 0x95C4, 0x95C8, 0xBE6B, -/* 0106 */ 0x95CA, 0x95CE, 0xBE76, -/* 0107 */ 0x95D4, 0x95DA, 0xBE85, -/* 0108 */ 0x95DC, 0x95E1, 0xBE92, -/* 0109 */ 0x95E2, 0x95EF, 0xBE9A, -/* 010A */ 0x95F0, 0x95FE, 0xBEA9, -/* 010B */ 0x9641, 0x9658, 0xBEB8, -/* 010C */ 0x9663, 0x9669, 0xBED9, -/* 010D */ 0x966C, 0x9671, 0xBEE6, -/* 010E */ 0x9672, 0x967A, 0xBEED, -/* 010F */ 0x9681, 0x968B, 0xBEF6, -/* 0110 */ 0x968C, 0x9691, 0xBF02, -/* 0111 */ 0x9692, 0x969F, 0xBF0A, -/* 0112 */ 0x96A1, 0x96C2, 0xBF1E, -/* 0113 */ 0x96C8, 0x96CE, 0xBF49, -/* 0114 */ 0x96D2, 0x96FE, 0xBF56, -/* 0115 */ 0x9741, 0x9751, 0xBF83, -/* 0116 */ 0x9752, 0x975A, 0xBF95, -/* 0117 */ 0x9761, 0x9772, 0xBF9E, -/* 0118 */ 0x9773, 0x977A, 0xBFB1, -/* 0119 */ 0x9781, 0x978C, 0xBFB9, -/* 011A */ 0x978D, 0x9792, 0xBFC6, -/* 011B */ 0x9798, 0x979E, 0xBFD5, -/* 011C */ 0x97A2, 0x97FB, 0xBFE2, -/* 011D */ 0x9841, 0x9851, 0xC040, -/* 011E */ 0x9852, 0x9857, 0xC052, -/* 011F */ 0x9864, 0x986A, 0xC061, -/* 0120 */ 0x986B, 0x987A, 0xC06A, -/* 0121 */ 0x9881, 0x9896, 0xC07A, -/* 0122 */ 0x989C, 0x98A2, 0xC099, -/* 0123 */ 0x98A5, 0x98AA, 0xC0A6, -/* 0124 */ 0x98AE, 0x98B2, 0xC0B7, -/* 0125 */ 0x98BE, 0x98C4, 0xC0D1, -/* 0126 */ 0x98C6, 0x98CB, 0xC0DE, -/* 0127 */ 0x98D1, 0x98D7, 0xC0ED, -/* 0128 */ 0x98DA, 0x98DF, 0xC0FA, -/* 0129 */ 0x98E6, 0x98EC, 0xC109, -/* 012A */ 0x98F1, 0x98F6, 0xC116, -/* 012B */ 0x994B, 0x9951, 0xC141, -/* 012C */ 0x9953, 0x9958, 0xC14E, -/* 012D */ 0x9964, 0x996A, 0xC15D, -/* 012E */ 0x996C, 0x9971, 0xC16A, -/* 012F */ 0x9981, 0x9989, 0xC17C, -/* 0130 */ 0x998A, 0x998F, 0xC186, -/* 0131 */ 0x9995, 0x9999, 0xC197, -/* 0132 */ 0x99A6, 0x99B1, 0xC1B1, -/* 0133 */ 0x99B2, 0x99B7, 0xC1BE, -/* 0134 */ 0x99BE, 0x99C4, 0xC1CD, -/* 0135 */ 0x99C7, 0x99CD, 0xC1D9, -/* 0136 */ 0x99D4, 0x99DA, 0xC1E9, -/* 0137 */ 0x99DC, 0x99E3, 0xC1F4, -/* 0138 */ 0x99E9, 0x99EF, 0xC205, -/* 0139 */ 0x99F2, 0x99F7, 0xC212, -/* 013A */ 0x9A4A, 0x9A5A, 0xC235, -/* 013B */ 0x9A63, 0x9A69, 0xC249, -/* 013C */ 0x9A6F, 0x9A75, 0xC259, -/* 013D */ 0x9A81, 0x9A85, 0xC267, -/* 013E */ 0x9A8B, 0x9A91, 0xC275, -/* 013F */ 0x9A94, 0x9A99, 0xC282, -/* 0140 */ 0x9A9A, 0x9A9F, 0xC28A, -/* 0141 */ 0x9AA0, 0x9AA6, 0xC291, -/* 0142 */ 0x9AAA, 0x9AAF, 0xC29E, -/* 0143 */ 0x9AB5, 0x9ABA, 0xC2AE, -/* 0144 */ 0x9ABD, 0x9ADE, 0xC2BA, -/* 0145 */ 0x9AE3, 0x9AE8, 0xC2E5, -/* 0146 */ 0x9AF4, 0x9AFA, 0xC301, -/* 0147 */ 0x9B49, 0x9B4F, 0xC31D, -/* 0148 */ 0x9B52, 0x9B5A, 0xC32A, -/* 0149 */ 0x9B61, 0x9B72, 0xC333, -/* 014A */ 0x9B73, 0x9B7A, 0xC346, -/* 014B */ 0x9B81, 0x9B9A, 0xC34E, -/* 014C */ 0x9BA1, 0x9BA5, 0xC373, -/* 014D */ 0x9BA8, 0x9BAD, 0xC37E, -/* 014E */ 0x9BB4, 0x9BE6, 0xC38D, -/* 014F */ 0x9BE7, 0x9BFD, 0xC3C1, -/* 0150 */ 0x9C45, 0x9C49, 0xC3E3, -/* 0151 */ 0x9C4D, 0x9C52, 0xC3EE, -/* 0152 */ 0x9C55, 0x9C5A, 0xC3F9, -/* 0153 */ 0x9C61, 0x9C69, 0xC3FF, -/* 0154 */ 0x9C6A, 0x9C70, 0xC409, -/* 0155 */ 0x9C71, 0x9C7A, 0xC411, -/* 0156 */ 0x9C81, 0x9C89, 0xC41B, -/* 0157 */ 0x9C8A, 0x9C90, 0xC425, -/* 0158 */ 0x9C97, 0x9C9D, 0xC435, -/* 0159 */ 0x9C9E, 0x9CA7, 0xC43E, -/* 015A */ 0x9CA8, 0x9CC2, 0xC449, -/* 015B */ 0x9CC8, 0x9CCE, 0xC46D, -/* 015C */ 0x9CD2, 0x9CD7, 0xC47A, -/* 015D */ 0x9CD8, 0x9CEA, 0xC481, -/* 015E */ 0x9CEB, 0x9CF1, 0xC495, -/* 015F */ 0x9CF2, 0x9CFE, 0xC49D, -/* 0160 */ 0x9D41, 0x9D4E, 0xC4AA, -/* 0161 */ 0x9D52, 0x9D5A, 0xC4BD, -/* 0162 */ 0x9D61, 0x9D7A, 0xC4C6, -/* 0163 */ 0x9D81, 0x9D89, 0xC4E0, -/* 0164 */ 0x9D8A, 0x9D8F, 0xC4EA, -/* 0165 */ 0x9D9A, 0x9DA3, 0xC502, -/* 0166 */ 0x9DAA, 0x9DB0, 0xC515, -/* 0167 */ 0x9DB1, 0x9DBB, 0xC51D, -/* 0168 */ 0x9DC1, 0x9DC7, 0xC531, -/* 0169 */ 0x9DCA, 0x9DCF, 0xC53E, -/* 016A */ 0x9DE1, 0x9DE7, 0xC569, -/* 016B */ 0x9DE9, 0x9DEE, 0xC576, -/* 016C */ 0x9E48, 0x9E4F, 0xC5A1, -/* 016D */ 0x9E50, 0x9E59, 0xC5AA, -/* 016E */ 0x9E63, 0x9E67, 0xC5BF, -/* 016F */ 0x9E70, 0x9E76, 0xC5D9, -/* 0170 */ 0x9E97, 0x9E9D, 0xC611, -/* 0171 */ 0x9E9F, 0x9EA5, 0xC61D, -/* 0172 */ 0x9EBA, 0x9EC0, 0xC649, -/* 0173 */ 0x9EC2, 0x9EC7, 0xC656, -/* 0174 */ 0x9ECA, 0x9ED4, 0xC661, -/* 0175 */ 0x9ED8, 0x9EDD, 0xC672, -/* 0176 */ 0x9EE3, 0x9EE9, 0xC681, -/* 0177 */ 0x9EEC, 0x9EF1, 0xC68E, -/* 0178 */ 0x9EF7, 0x9EFD, 0xC69D, -/* 0179 */ 0x9F42, 0x9F47, 0xC6AA, -/* 017A */ 0x9F4D, 0x9F51, 0xC6BB, -/* 017B */ 0x9F54, 0x9F59, 0xC6C6, -/* 017C */ 0x9F65, 0x9F6B, 0xC6D5, -/* 017D */ 0x9F6E, 0x9F73, 0xC6E2, -/* 017E */ 0x9F81, 0x9F85, 0xC6F3, -/* 017F */ 0x9F89, 0x9F8E, 0xC6FE, -/* 0180 */ 0x9F94, 0x9F9A, 0xC70D, -/* 0181 */ 0x9F9D, 0x9FA2, 0xC71A, -/* 0182 */ 0x9FA8, 0x9FAE, 0xC729, -/* 0183 */ 0x9FBB, 0x9FBF, 0xC745, -/* 0184 */ 0x9FC9, 0x9FCF, 0xC761, -/* 0185 */ 0x9FD2, 0x9FD9, 0xC76C, -/* 0186 */ 0x9FEC, 0x9FF0, 0xC79B, -/* 0187 */ 0x9FF2, 0x9FF6, 0xC7A7, -/* 0188 */ 0xA046, 0xA04B, 0xC7C2, -/* 0189 */ 0xA050, 0xA056, 0xC7D1, -/* 018A */ 0xA061, 0xA066, 0xC7DE, -/* 018B */ 0xA06D, 0xA07A, 0xC7ED, -/* 018C */ 0xA081, 0xA085, 0xC7FB, -/* 018D */ 0xA08C, 0xA090, 0xC80B, -/* 018E */ 0xA093, 0xA097, 0xC817, -/* 018F */ 0xA09D, 0xA0A3, 0xC825, -/* 0190 */ 0xA0A6, 0xA0AB, 0xC832, -/* 0191 */ 0xA0B2, 0xA0B8, 0xC841, -/* 0192 */ 0xA0BB, 0xA0C0, 0xC84E, -/* 0193 */ 0xA0C1, 0xA0DB, 0xC855, -/* 0194 */ 0xA0E2, 0xA0E6, 0xC87B, -/* 0195 */ 0xA0EC, 0xA0F1, 0xC88E, -/* 0196 */ 0xA0F2, 0xA0F9, 0xC895, -/* 0197 */ 0xA144, 0xA156, 0xC8A9, -/* 0198 */ 0xA169, 0xA16F, 0xC8CD, -/* 0199 */ 0xA172, 0xA177, 0xC8DA, -/* 019A */ 0xA181, 0xA18F, 0xC8E6, -/* 019B */ 0xA190, 0xA195, 0xC8F6, -/* 019C */ 0xA19B, 0xA19F, 0xC907, -/* 019D */ 0xA1B4, 0xA1BD, 0x3008, -/* 019E */ 0xA242, 0xA247, 0xC912, -/* 019F */ 0xA248, 0xA25A, 0xC919, -/* 01A0 */ 0xA261, 0xA267, 0xC92D, -/* 01A1 */ 0xA268, 0xA27A, 0xC935, -/* 01A2 */ 0xA281, 0xA288, 0xC948, -/* 01A3 */ 0xA28E, 0xA294, 0xC959, -/* 01A4 */ 0xA296, 0xA29D, 0xC964, -/* 01A5 */ 0xA344, 0xA34A, 0xC975, -/* 01A6 */ 0xA34B, 0xA355, 0xC97D, -/* 01A7 */ 0xA361, 0xA367, 0xC991, -/* 01A8 */ 0xA36A, 0xA37A, 0xC99E, -/* 01A9 */ 0xA381, 0xA391, 0xC9AF, -/* 01AA */ 0xA397, 0xA39B, 0xC9CB, -/* 01AB */ 0xA3A1, 0xA3DB, 0xFF01, -/* 01AC */ 0xA3DD, 0xA3FD, 0xFF3D, -/* 01AD */ 0xA44C, 0xA451, 0xC9F2, -/* 01AE */ 0xA465, 0xA46A, 0xCA0E, -/* 01AF */ 0xA46E, 0xA47A, 0xCA19, -/* 01B0 */ 0xA484, 0xA4A0, 0xCA2A, -/* 01B1 */ 0xA4A1, 0xA4FE, 0x3131, -/* 01B2 */ 0xA541, 0xA545, 0xCA47, -/* 01B3 */ 0xA54B, 0xA551, 0xCA55, -/* 01B4 */ 0xA553, 0xA558, 0xCA62, -/* 01B5 */ 0xA561, 0xA572, 0xCA6B, -/* 01B6 */ 0xA573, 0xA578, 0xCA7E, -/* 01B7 */ 0xA581, 0xA591, 0xCA87, -/* 01B8 */ 0xA592, 0xA5A0, 0xCA99, -/* 01B9 */ 0xA5A1, 0xA5AA, 0x2170, -/* 01BA */ 0xA5B0, 0xA5B9, 0x2160, -/* 01BB */ 0xA5C1, 0xA5D1, 0x0391, -/* 01BC */ 0xA5D2, 0xA5D8, 0x03A3, -/* 01BD */ 0xA5E1, 0xA5F1, 0x03B1, -/* 01BE */ 0xA5F2, 0xA5F8, 0x03C3, -/* 01BF */ 0xA641, 0xA654, 0xCAA8, -/* 01C0 */ 0xA661, 0xA666, 0xCAC6, -/* 01C1 */ 0xA66E, 0xA673, 0xCADA, -/* 01C2 */ 0xA674, 0xA67A, 0xCAE1, -/* 01C3 */ 0xA685, 0xA68B, 0xCAED, -/* 01C4 */ 0xA68C, 0xA69E, 0xCAF5, -/* 01C5 */ 0xA6DD, 0xA6E4, 0x2543, -/* 01C6 */ 0xA741, 0xA745, 0xCB0B, -/* 01C7 */ 0xA74C, 0xA752, 0xCB19, -/* 01C8 */ 0xA753, 0xA75A, 0xCB22, -/* 01C9 */ 0xA761, 0xA777, 0xCB2A, -/* 01CA */ 0xA789, 0xA78F, 0xCB51, -/* 01CB */ 0xA793, 0xA798, 0xCB5E, -/* 01CC */ 0xA799, 0xA7A0, 0xCB65, -/* 01CD */ 0xA7AB, 0xA7B4, 0x3399, -/* 01CE */ 0xA7BF, 0xA7C8, 0x33B0, -/* 01CF */ 0xA7C9, 0xA7CD, 0x3380, -/* 01D0 */ 0xA7CE, 0xA7D3, 0x33BA, -/* 01D1 */ 0xA7D4, 0xA7D8, 0x3390, -/* 01D2 */ 0xA841, 0xA84B, 0xCB6D, -/* 01D3 */ 0xA84C, 0xA85A, 0xCB7A, -/* 01D4 */ 0xA861, 0xA873, 0xCB89, -/* 01D5 */ 0xA874, 0xA87A, 0xCB9D, -/* 01D6 */ 0xA881, 0xA894, 0xCBA4, -/* 01D7 */ 0xA895, 0xA8A0, 0xCBB9, -/* 01D8 */ 0xA8B1, 0xA8CC, 0x3260, -/* 01D9 */ 0xA8CD, 0xA8E6, 0x24D0, -/* 01DA */ 0xA8E7, 0xA8F5, 0x2460, -/* 01DB */ 0xA941, 0xA94F, 0xCBC5, -/* 01DC */ 0xA950, 0xA95A, 0xCBD5, -/* 01DD */ 0xA968, 0xA97A, 0xCBEA, -/* 01DE */ 0xA981, 0xA98F, 0xCBFD, -/* 01DF */ 0xA995, 0xA99B, 0xCC15, -/* 01E0 */ 0xA9B1, 0xA9CC, 0x3200, -/* 01E1 */ 0xA9CD, 0xA9E6, 0x249C, -/* 01E2 */ 0xA9E7, 0xA9F5, 0x2474, -/* 01E3 */ 0xAA47, 0xAA4D, 0xCC31, -/* 01E4 */ 0xAA4F, 0xAA53, 0xCC3F, -/* 01E5 */ 0xAA61, 0xAA65, 0xCC4F, -/* 01E6 */ 0xAA67, 0xAA6C, 0xCC5A, -/* 01E7 */ 0xAA72, 0xAA78, 0xCC69, -/* 01E8 */ 0xAA83, 0xAAA0, 0xCC76, -/* 01E9 */ 0xAAA1, 0xAAF3, 0x3041, -/* 01EA */ 0xAB4A, 0xAB50, 0xCCA1, -/* 01EB */ 0xAB52, 0xAB57, 0xCCAE, -/* 01EC */ 0xAB63, 0xAB69, 0xCCBD, -/* 01ED */ 0xAB6C, 0xAB71, 0xCCCA, -/* 01EE */ 0xAB75, 0xAB7A, 0xCCD5, -/* 01EF */ 0xAB81, 0xAB89, 0xCCDB, -/* 01F0 */ 0xAB8A, 0xAB90, 0xCCE5, -/* 01F1 */ 0xAB94, 0xABA0, 0xCCF1, -/* 01F2 */ 0xABA1, 0xABF6, 0x30A1, -/* 01F3 */ 0xAC44, 0xAC49, 0xCD02, -/* 01F4 */ 0xAC4F, 0xAC55, 0xCD11, -/* 01F5 */ 0xAC6A, 0xAC75, 0xCD2D, -/* 01F6 */ 0xAC76, 0xAC7A, 0xCD3A, -/* 01F7 */ 0xAC81, 0xAC9D, 0xCD3F, -/* 01F8 */ 0xACA1, 0xACA6, 0x0410, -/* 01F9 */ 0xACA8, 0xACC1, 0x0416, -/* 01FA */ 0xACD1, 0xACD6, 0x0430, -/* 01FB */ 0xACD8, 0xACF1, 0x0436, -/* 01FC */ 0xAD44, 0xAD4A, 0xCD65, -/* 01FD */ 0xAD4D, 0xAD52, 0xCD72, -/* 01FE */ 0xAD53, 0xAD5A, 0xCD79, -/* 01FF */ 0xAD61, 0xAD67, 0xCD81, -/* 0200 */ 0xAD68, 0xAD72, 0xCD89, -/* 0201 */ 0xAD87, 0xAD8C, 0xCDAA, -/* 0202 */ 0xAD8D, 0xAD9F, 0xCDB1, -/* 0203 */ 0xAE41, 0xAE46, 0xCDC6, -/* 0204 */ 0xAE4A, 0xAE5A, 0xCDD1, -/* 0205 */ 0xAE61, 0xAE66, 0xCDE2, -/* 0206 */ 0xAE6D, 0xAE73, 0xCDF1, -/* 0207 */ 0xAE76, 0xAE7A, 0xCDFE, -/* 0208 */ 0xAE88, 0xAE8E, 0xCE0D, -/* 0209 */ 0xAE93, 0xAE98, 0xCE1A, -/* 020A */ 0xAF47, 0xAF5A, 0xCE36, -/* 020B */ 0xAF61, 0xAF6E, 0xCE4A, -/* 020C */ 0xAF73, 0xAF78, 0xCE62, -/* 020D */ 0xAF81, 0xAF86, 0xCE6E, -/* 020E */ 0xAF8C, 0xAF92, 0xCE7D, -/* 020F */ 0xAF95, 0xAF9A, 0xCE8A, -/* 0210 */ 0xB041, 0xB046, 0xCE9A, -/* 0211 */ 0xB048, 0xB04D, 0xCEA6, -/* 0212 */ 0xB04E, 0xB05A, 0xCEAE, -/* 0213 */ 0xB061, 0xB066, 0xCEBB, -/* 0214 */ 0xB067, 0xB07A, 0xCEC2, -/* 0215 */ 0xB081, 0xB08E, 0xCED6, -/* 0216 */ 0xB093, 0xB099, 0xCEED, -/* 0217 */ 0xB09B, 0xB0A0, 0xCEFA, -/* 0218 */ 0xB0A8, 0xB0AF, 0xAC10, -/* 0219 */ 0xB0B0, 0xB0B4, 0xAC19, -/* 021A */ 0xB146, 0xB14C, 0xCF09, -/* 021B */ 0xB14F, 0xB154, 0xCF16, -/* 021C */ 0xB161, 0xB167, 0xCF25, -/* 021D */ 0xB169, 0xB16E, 0xCF32, -/* 021E */ 0xB16F, 0xB17A, 0xCF39, -/* 021F */ 0xB181, 0xB18F, 0xCF45, -/* 0220 */ 0xB195, 0xB19B, 0xCF5D, -/* 0221 */ 0xB249, 0xB24F, 0xCF79, -/* 0222 */ 0xB254, 0xB259, 0xCF86, -/* 0223 */ 0xB261, 0xB273, 0xCF8E, -/* 0224 */ 0xB274, 0xB279, 0xCFA2, -/* 0225 */ 0xB281, 0xB286, 0xCFAA, -/* 0226 */ 0xB287, 0xB299, 0xCFB1, -/* 0227 */ 0xB29A, 0xB2A0, 0xCFC5, -/* 0228 */ 0xB341, 0xB354, 0xCFCC, -/* 0229 */ 0xB361, 0xB366, 0xCFEA, -/* 022A */ 0xB369, 0xB36E, 0xCFF6, -/* 022B */ 0xB375, 0xB37A, 0xD005, -/* 022C */ 0xB381, 0xB386, 0xD00B, -/* 022D */ 0xB387, 0xB38C, 0xD012, -/* 022E */ 0xB38D, 0xB3A0, 0xD019, -/* 022F */ 0xB3B4, 0xB3B8, 0xB0AB, -/* 0230 */ 0xB441, 0xB446, 0xD02E, -/* 0231 */ 0xB44C, 0xB452, 0xD03D, -/* 0232 */ 0xB455, 0xB45A, 0xD04A, -/* 0233 */ 0xB467, 0xB46D, 0xD059, -/* 0234 */ 0xB46E, 0xB478, 0xD061, -/* 0235 */ 0xB484, 0xB48A, 0xD075, -/* 0236 */ 0xB48E, 0xB4A0, 0xD082, -/* 0237 */ 0xB4DD, 0xB4E1, 0xB2EB, -/* 0238 */ 0xB4E5, 0xB4E9, 0xB2F7, -/* 0239 */ 0xB541, 0xB54F, 0xD095, -/* 023A */ 0xB555, 0xB55A, 0xD0AD, -/* 023B */ 0xB564, 0xB569, 0xD0BA, -/* 023C */ 0xB56F, 0xB574, 0xD0CA, -/* 023D */ 0xB576, 0xB57A, 0xD0D6, -/* 023E */ 0xB587, 0xB58D, 0xD0E5, -/* 023F */ 0xB58F, 0xB594, 0xD0F2, -/* 0240 */ 0xB595, 0xB5A0, 0xD0F9, -/* 0241 */ 0xB641, 0xB648, 0xD105, -/* 0242 */ 0xB649, 0xB65A, 0xD10E, -/* 0243 */ 0xB661, 0xB670, 0xD120, -/* 0244 */ 0xB683, 0xB688, 0xD146, -/* 0245 */ 0xB68E, 0xB694, 0xD155, -/* 0246 */ 0xB697, 0xB69C, 0xD162, -/* 0247 */ 0xB741, 0xB74E, 0xD16E, -/* 0248 */ 0xB74F, 0xB755, 0xD17D, -/* 0249 */ 0xB761, 0xB775, 0xD18B, -/* 024A */ 0xB781, 0xB787, 0xD1A9, -/* 024B */ 0xB792, 0xB7A0, 0xD1C1, -/* 024C */ 0xB841, 0xB848, 0xD1D0, -/* 024D */ 0xB849, 0xB85A, 0xD1D9, -/* 024E */ 0xB861, 0xB869, 0xD1EB, -/* 024F */ 0xB86D, 0xB87A, 0xD1F9, -/* 0250 */ 0xB882, 0xB887, 0xD20A, -/* 0251 */ 0xB888, 0xB8A0, 0xD211, -/* 0252 */ 0xB8B9, 0xB8BD, 0xB9CE, -/* 0253 */ 0xB948, 0xB94E, 0xD235, -/* 0254 */ 0xB951, 0xB956, 0xD242, -/* 0255 */ 0xB961, 0xB96F, 0xD24D, -/* 0256 */ 0xB970, 0xB976, 0xD25D, -/* 0257 */ 0xB981, 0xB997, 0xD269, -/* 0258 */ 0xB9D9, 0xB9DD, 0xBC14, -/* 0259 */ 0xB9DE, 0xB9E2, 0xBC1B, -/* 025A */ 0xBA47, 0xBA4C, 0xD296, -/* 025B */ 0xBA53, 0xBA59, 0xD2A5, -/* 025C */ 0xBA64, 0xBA69, 0xD2B2, -/* 025D */ 0xBA6F, 0xBA73, 0xD2C3, -/* 025E */ 0xBA75, 0xBA7A, 0xD2CC, -/* 025F */ 0xBA89, 0xBA8F, 0xD2DD, -/* 0260 */ 0xBA90, 0xBA99, 0xD2E6, -/* 0261 */ 0xBB41, 0xBB45, 0xD2FB, -/* 0262 */ 0xBB48, 0xBB4D, 0xD306, -/* 0263 */ 0xBB53, 0xBB57, 0xD317, -/* 0264 */ 0xBB69, 0xBB6F, 0xD331, -/* 0265 */ 0xBB71, 0xBB76, 0xD33E, -/* 0266 */ 0xBB81, 0xBBA0, 0xD34A, -/* 0267 */ 0xBC41, 0xBC52, 0xD36A, -/* 0268 */ 0xBC66, 0xBC6B, 0xD392, -/* 0269 */ 0xBC71, 0xBC77, 0xD3A1, -/* 026A */ 0xBC81, 0xBC85, 0xD3AF, -/* 026B */ 0xBC8C, 0xBC92, 0xD3BD, -/* 026C */ 0xBC95, 0xBC9A, 0xD3CA, -/* 026D */ 0xBC9B, 0xBCA0, 0xD3D1, -/* 026E */ 0xBCAD, 0xBCB1, 0xC11C, -/* 026F */ 0xBD42, 0xBD49, 0xD3D9, -/* 0270 */ 0xBD4B, 0xBD52, 0xD3E4, -/* 0271 */ 0xBD67, 0xBD6C, 0xD402, -/* 0272 */ 0xBD6D, 0xBD7A, 0xD409, -/* 0273 */ 0xBD81, 0xBD86, 0xD417, -/* 0274 */ 0xBD87, 0xBDA0, 0xD41E, -/* 0275 */ 0xBE41, 0xBE48, 0xD438, -/* 0276 */ 0xBE4C, 0xBE5A, 0xD445, -/* 0277 */ 0xBE61, 0xBE68, 0xD454, -/* 0278 */ 0xBE6F, 0xBE76, 0xD465, -/* 0279 */ 0xBE81, 0xBE85, 0xD473, -/* 027A */ 0xBE8B, 0xBE8F, 0xD483, -/* 027B */ 0xBE92, 0xBE97, 0xD48E, -/* 027C */ 0xBE98, 0xBEA0, 0xD495, -/* 027D */ 0xBEF6, 0xBEFC, 0xC5C4, -/* 027E */ 0xBF41, 0xBF4B, 0xD49E, -/* 027F */ 0xBF4C, 0xBF5A, 0xD4AA, -/* 0280 */ 0xBF61, 0xBF73, 0xD4B9, -/* 0281 */ 0xBF81, 0xBF86, 0xD4D6, -/* 0282 */ 0xBF89, 0xBF90, 0xD4E0, -/* 0283 */ 0xBF97, 0xBF9D, 0xD4F1, -/* 0284 */ 0xBFB0, 0xBFB5, 0xC5FC, -/* 0285 */ 0xC041, 0xC046, 0xD4FE, -/* 0286 */ 0xC04D, 0xC053, 0xD50D, -/* 0287 */ 0xC055, 0xC05A, 0xD518, -/* 0288 */ 0xC061, 0xC07A, 0xD51E, -/* 0289 */ 0xC08A, 0xC090, 0xD545, -/* 028A */ 0xC093, 0xC098, 0xD552, -/* 028B */ 0xC0C0, 0xC0C7, 0xC751, -/* 028C */ 0xC146, 0xC14B, 0xD56E, -/* 028D */ 0xC151, 0xC157, 0xD57D, -/* 028E */ 0xC165, 0xC178, 0xD591, -/* 028F */ 0xC181, 0xC1A0, 0xD5A8, -/* 0290 */ 0xC247, 0xC24B, 0xD5D3, -/* 0291 */ 0xC24E, 0xC253, 0xD5DE, -/* 0292 */ 0xC261, 0xC265, 0xD5EF, -/* 0293 */ 0xC268, 0xC26D, 0xD5FA, -/* 0294 */ 0xC273, 0xC279, 0xD609, -/* 0295 */ 0xC281, 0xC286, 0xD616, -/* 0296 */ 0xC28D, 0xC294, 0xD625, -/* 0297 */ 0xC295, 0xC29E, 0xD62E, -/* 0298 */ 0xC356, 0xC35A, 0xD65D, -/* 0299 */ 0xC361, 0xC365, 0xD662, -/* 029A */ 0xC367, 0xC36C, 0xD66A, -/* 029B */ 0xC36F, 0xC37A, 0xD675, -/* 029C */ 0xC384, 0xC389, 0xD686, -/* 029D */ 0xC38F, 0xC396, 0xD695, -/* 029E */ 0xC399, 0xC39E, 0xD6A2, -/* 029F */ 0xC445, 0xC44C, 0xD6B1, -/* 02A0 */ 0xC44E, 0xC455, 0xD6BC, -/* 02A1 */ 0xC46A, 0xC46F, 0xD6DA, -/* 02A2 */ 0xC476, 0xC47A, 0xD6E9, -/* 02A3 */ 0xC487, 0xC48C, 0xD6F6, -/* 02A4 */ 0xC492, 0xC49D, 0xD705, -/* 02A5 */ 0xC549, 0xC54F, 0xD721, -/* 02A6 */ 0xC552, 0xC557, 0xD72E, -/* 02A7 */ 0xC563, 0xC569, 0xD73D, -/* 02A8 */ 0xC56D, 0xC572, 0xD74A, -/* 02A9 */ 0xC576, 0xC57A, 0xD75A, -/* 02AA */ 0xC58F, 0xC595, 0xD775, -/* 02AB */ 0xC599, 0xC59E, 0xD782, -/* 02AC */ 0xC644, 0xC64A, 0xD791, -/* 02AD */ 0xC64D, 0xC652, 0xD79E, -/* 02AE */ 0xD1DB, 0xD1E0, 0xF90E, -/* 02AF */ 0xD1E2, 0xD1E6, 0xF914, -/* 02B0 */ 0xD2A7, 0xD2AB, 0xF928, -/* 02B1 */ 0xD2C6, 0xD2CB, 0xF933, -/* 02B2 */ 0xD2CD, 0xD2D7, 0xF939, -/* 02B3 */ 0xD2E4, 0xD2EB, 0xF94A, -/* 02B4 */ 0xD2F0, 0xD2F5, 0xF952, -/* 02B5 */ 0x8141, 0x8144, 0x0000, -/* 02B6 */ 0x814A, 0x814F, 0x0004, -/* 02B7 */ 0x8157, 0x815A, 0x000A, -/* 02B8 */ 0x8161, 0x8168, 0x000E, -/* 02B9 */ 0x8173, 0x0000, 0xAC4C, -/* 02BA */ 0x817A, 0x0000, 0xAC55, -/* 02BB */ 0x8181, 0x8185, 0x0016, -/* 02BC */ 0x8199, 0x819D, 0x001B, -/* 02BD */ 0x81A3, 0x81AB, 0x0020, -/* 02BE */ 0x81B3, 0x0000, 0xAC9E, -/* 02BF */ 0x81BA, 0x81BC, 0x0029, -/* 02C0 */ 0x81C4, 0x81CF, 0x002C, -/* 02C1 */ 0x81D8, 0x0000, 0xACD6, -/* 02C2 */ 0x81E1, 0x81EA, 0x0038, -/* 02C3 */ 0x81F0, 0x81F5, 0x0042, -/* 02C4 */ 0x81FB, 0x81FE, 0x0048, -/* 02C5 */ 0x8241, 0x824A, 0x004C, -/* 02C6 */ 0x8253, 0x8254, 0x0056, -/* 02C7 */ 0x8261, 0x8265, 0x0058, -/* 02C8 */ 0x826D, 0x826E, 0x005D, -/* 02C9 */ 0x8275, 0x827A, 0x005F, -/* 02CA */ 0x8289, 0x0000, 0xAD62, -/* 02CB */ 0x8292, 0x829B, 0x0065, -/* 02CC */ 0x82A1, 0x82A5, 0x006F, -/* 02CD */ 0x82D1, 0x82D5, 0x0074, -/* 02CE */ 0x82DD, 0x0000, 0xADD2, -/* 02CF */ 0x82E6, 0x82EB, 0x0079, -/* 02D0 */ 0x8341, 0x8344, 0x007F, -/* 02D1 */ 0x834B, 0x834C, 0x0083, -/* 02D2 */ 0x8374, 0x837A, 0x0085, -/* 02D3 */ 0x8381, 0x838E, 0x008C, -/* 02D4 */ 0x8394, 0x839E, 0x009A, -/* 02D5 */ 0x83A6, 0x0000, 0xAE7A, -/* 02D6 */ 0x83E2, 0x83E5, 0x00A5, -/* 02D7 */ 0x83ED, 0x0000, 0xAECE, -/* 02D8 */ 0x83F4, 0x83F5, 0x00A9, -/* 02D9 */ 0x8441, 0x8445, 0x00AB, -/* 02DA */ 0x844C, 0x8451, 0x00B0, -/* 02DB */ 0x8461, 0x8467, 0x00B6, -/* 02DC */ 0x8489, 0x848C, 0x00BD, -/* 02DD */ 0x8494, 0x8499, 0x00C1, -/* 02DE */ 0x84CA, 0x84CF, 0x00C7, -/* 02DF */ 0x84D7, 0x84D9, 0x00CD, -/* 02E0 */ 0x84FB, 0x84FE, 0x00D0, -/* 02E1 */ 0x8541, 0x0000, 0xAFBF, -/* 02E2 */ 0x8548, 0x8549, 0x00D4, -/* 02E3 */ 0x856D, 0x8571, 0x00D6, -/* 02E4 */ 0x8579, 0x857A, 0x00DB, -/* 02E5 */ 0x8588, 0x858D, 0x00DD, -/* 02E6 */ 0x85BA, 0x85C7, 0x00E3, -/* 02E7 */ 0x85E6, 0x85EA, 0x00F1, -/* 02E8 */ 0x85F2, 0x85F3, 0x00F6, -/* 02E9 */ 0x85FA, 0x85FE, 0x00F8, -/* 02EA */ 0x8641, 0x864B, 0x00FD, -/* 02EB */ 0x8653, 0x0000, 0xB0C6, -/* 02EC */ 0x865A, 0x0000, 0xB0D2, -/* 02ED */ 0x8661, 0x8664, 0x0108, -/* 02EE */ 0x866C, 0x866F, 0x010C, -/* 02EF */ 0x8698, 0x86A1, 0x0110, -/* 02F0 */ 0x86A7, 0x86AB, 0x011A, -/* 02F1 */ 0x86B3, 0x0000, 0xB136, -/* 02F2 */ 0x86BA, 0x86BE, 0x011F, -/* 02F3 */ 0x86C6, 0x86CF, 0x0124, -/* 02F4 */ 0x86E7, 0x86EC, 0x012E, -/* 02F5 */ 0x86F2, 0x86FE, 0x0134, -/* 02F6 */ 0x8774, 0x877A, 0x0141, -/* 02F7 */ 0x8787, 0x0000, 0xB1DE, -/* 02F8 */ 0x8790, 0x8794, 0x0148, -/* 02F9 */ 0x879D, 0x879E, 0x014D, -/* 02FA */ 0x87A5, 0x87A8, 0x014F, -/* 02FB */ 0x87B0, 0x87B1, 0x0153, -/* 02FC */ 0x87ED, 0x87F2, 0x0155, -/* 02FD */ 0x8853, 0x8855, 0x015B, -/* 02FE */ 0x8861, 0x8866, 0x015E, -/* 02FF */ 0x886C, 0x887A, 0x0164, -/* 0300 */ 0x8891, 0x8896, 0x0173, -/* 0301 */ 0x889C, 0x88B1, 0x0179, -/* 0302 */ 0x88B9, 0x0000, 0xB312, -/* 0303 */ 0x88F7, 0x88FE, 0x018F, -/* 0304 */ 0x8941, 0x894B, 0x0197, -/* 0305 */ 0x8953, 0x0000, 0xB382, -/* 0306 */ 0x895A, 0x0000, 0xB38D, -/* 0307 */ 0x8961, 0x8965, 0x01A2, -/* 0308 */ 0x8977, 0x897A, 0x01A7, -/* 0309 */ 0x8997, 0x89AB, 0x01AB, -/* 030A */ 0x89D9, 0x89DE, 0x01C0, -/* 030B */ 0x89E6, 0x0000, 0xB42A, -/* 030C */ 0x8A4C, 0x8A50, 0x01C6, -/* 030D */ 0x8A58, 0x8A5A, 0x01CB, -/* 030E */ 0x8A79, 0x8A7A, 0x01CE, -/* 030F */ 0x8AA0, 0x8AA5, 0x01D0, -/* 0310 */ 0x8AAE, 0x8AAF, 0x01D6, -/* 0311 */ 0x8AB6, 0x8ABB, 0x01D8, -/* 0312 */ 0x8AC3, 0x8AC6, 0x01DE, -/* 0313 */ 0x8ACD, 0x8AD1, 0x01E2, -/* 0314 */ 0x8AD7, 0x8AD8, 0x01E7, -/* 0315 */ 0x8AFA, 0x8AFE, 0x01E9, -/* 0316 */ 0x8B47, 0x0000, 0xB526, -/* 0317 */ 0x8B4D, 0x8B51, 0x01EE, -/* 0318 */ 0x8B59, 0x8B5A, 0x01F3, -/* 0319 */ 0x8B61, 0x8B69, 0x01F5, -/* 031A */ 0x8B71, 0x0000, 0xB55E, -/* 031B */ 0x8BB6, 0x8BC0, 0x01FE, -/* 031C */ 0x8BC6, 0x8BCA, 0x0209, -/* 031D */ 0x8BD2, 0x0000, 0xB5CE, -/* 031E */ 0x8C51, 0x8C55, 0x020E, -/* 031F */ 0x8CA9, 0x8CAB, 0x0213, -/* 0320 */ 0x8CDF, 0x8CE3, 0x0216, -/* 0321 */ 0x8CEA, 0x8CED, 0x021B, -/* 0322 */ 0x8D73, 0x8D7A, 0x021F, -/* 0323 */ 0x8D86, 0x8D88, 0x0227, -/* 0324 */ 0x8DAB, 0x8DAE, 0x022A, -/* 0325 */ 0x8DB6, 0x0000, 0xB73A, -/* 0326 */ 0x8DBF, 0x8DC4, 0x022E, -/* 0327 */ 0x8DD6, 0x8DDB, 0x0234, -/* 0328 */ 0x8DE3, 0x8DE4, 0x023A, -/* 0329 */ 0x8DEB, 0x8DEF, 0x023C, -/* 032A */ 0x8DF7, 0x8DFE, 0x0241, -/* 032B */ 0x8E41, 0x0000, 0xB79F, -/* 032C */ 0x8E49, 0x0000, 0xB7AA, -/* 032D */ 0x8E50, 0x8E51, 0x0249, -/* 032E */ 0x8E66, 0x0000, 0xB7C8, -/* 032F */ 0x8E8F, 0x8E93, 0x024B, -/* 0330 */ 0x8E9B, 0x0000, 0xB7FE, -/* 0331 */ 0x8EA1, 0x8EA5, 0x0250, -/* 0332 */ 0x8EAD, 0x8EAE, 0x0255, -/* 0333 */ 0x8EB5, 0x8EB9, 0x0257, -/* 0334 */ 0x8EC1, 0x0000, 0xB836, -/* 0335 */ 0x8EC8, 0x8ECA, 0x025C, -/* 0336 */ 0x8ED7, 0x0000, 0xB852, -/* 0337 */ 0x8EE0, 0x8EE4, 0x025F, -/* 0338 */ 0x8EEC, 0x8EED, 0x0264, -/* 0339 */ 0x8EF4, 0x8EF6, 0x0266, -/* 033A */ 0x8F70, 0x8F75, 0x0269, -/* 033B */ 0x8F81, 0x8F84, 0x026F, -/* 033C */ 0x8F8B, 0x8F90, 0x0273, -/* 033D */ 0x8F99, 0x8F9A, 0x0279, -/* 033E */ 0x8FA1, 0x8FA5, 0x027B, -/* 033F */ 0x8FAD, 0x8FAE, 0x0280, -/* 0340 */ 0x8FEA, 0x8FEE, 0x0282, -/* 0341 */ 0x8FF6, 0x8FF8, 0x0287, -/* 0342 */ 0x9041, 0x9045, 0x028A, -/* 0343 */ 0x904D, 0x904E, 0x028F, -/* 0344 */ 0x9055, 0x905A, 0x0291, -/* 0345 */ 0x9067, 0x906A, 0x0297, -/* 0346 */ 0x908E, 0x9092, 0x029B, -/* 0347 */ 0x909A, 0x909B, 0x02A0, -/* 0348 */ 0x90A2, 0x90A4, 0x02A2, -/* 0349 */ 0x90AA, 0x90B3, 0x02A5, -/* 034A */ 0x90BB, 0x0000, 0xB9F6, -/* 034B */ 0x90F5, 0x90FE, 0x02AF, -/* 034C */ 0x9141, 0x914C, 0x02B9, -/* 034D */ 0x9154, 0x0000, 0xBA66, -/* 034E */ 0x9161, 0x9165, 0x02C5, -/* 034F */ 0x9170, 0x9174, 0x02CA, -/* 0350 */ 0x9196, 0x919A, 0x02CF, -/* 0351 */ 0x91A0, 0x91A1, 0x02D4, -/* 0352 */ 0x91A8, 0x91AA, 0x02D6, -/* 0353 */ 0x91DC, 0x91E1, 0x02D9, -/* 0354 */ 0x91EA, 0x91EB, 0x02DF, -/* 0355 */ 0x91F2, 0x91F7, 0x02E1, -/* 0356 */ 0x9241, 0x9242, 0x02E7, -/* 0357 */ 0x924B, 0x924D, 0x02E9, -/* 0358 */ 0x9253, 0x925A, 0x02EC, -/* 0359 */ 0x9261, 0x9264, 0x02F4, -/* 035A */ 0x926D, 0x0000, 0xBB62, -/* 035B */ 0x9297, 0x929C, 0x02F8, -/* 035C */ 0x92B0, 0x92B5, 0x02FE, -/* 035D */ 0x92BD, 0x92BE, 0x0304, -/* 035E */ 0x92C7, 0x92CC, 0x0306, -/* 035F */ 0x92D4, 0x92D5, 0x030C, -/* 0360 */ 0x92FA, 0x92FE, 0x030E, -/* 0361 */ 0x9346, 0x935A, 0x0313, -/* 0362 */ 0x9361, 0x9362, 0x0328, -/* 0363 */ 0x936A, 0x9371, 0x032A, -/* 0364 */ 0x9381, 0x9383, 0x0332, -/* 0365 */ 0x93AA, 0x93AE, 0x0335, -/* 0366 */ 0x93B4, 0x93B5, 0x033A, -/* 0367 */ 0x93BB, 0x93BE, 0x033C, -/* 0368 */ 0x93C6, 0x0000, 0xBCB2, -/* 0369 */ 0x93CD, 0x93D1, 0x0340, -/* 036A */ 0x93DA, 0x93E2, 0x0345, -/* 036B */ 0x93FA, 0x93FE, 0x034E, -/* 036C */ 0x9447, 0x9448, 0x0353, -/* 036D */ 0x944F, 0x9451, 0x0355, -/* 036E */ 0x948E, 0x9492, 0x0358, -/* 036F */ 0x94A4, 0x94A6, 0x035D, -/* 0370 */ 0x94BE, 0x94C1, 0x0360, -/* 0371 */ 0x94C7, 0x94CC, 0x0364, -/* 0372 */ 0x9541, 0x9547, 0x036A, -/* 0373 */ 0x955A, 0x0000, 0xBDF1, -/* 0374 */ 0x9561, 0x9565, 0x0371, -/* 0375 */ 0x956D, 0x956F, 0x0376, -/* 0376 */ 0x9576, 0x957A, 0x0379, -/* 0377 */ 0x9588, 0x0000, 0xBE1E, -/* 0378 */ 0x95AD, 0x95B2, 0x037E, -/* 0379 */ 0x95B8, 0x95C3, 0x0384, -/* 037A */ 0x95C9, 0x0000, 0xBE72, -/* 037B */ 0x95CF, 0x95D3, 0x0390, -/* 037C */ 0x95DB, 0x0000, 0xBE8E, -/* 037D */ 0x9659, 0x965A, 0x0395, -/* 037E */ 0x9661, 0x9662, 0x0397, -/* 037F */ 0x966A, 0x966B, 0x0399, -/* 0380 */ 0x96A0, 0x0000, 0xBF1A, -/* 0381 */ 0x96C3, 0x96C7, 0x039B, -/* 0382 */ 0x96CF, 0x96D1, 0x03A0, -/* 0383 */ 0x9793, 0x9797, 0x03A3, -/* 0384 */ 0x979F, 0x97A1, 0x03A8, -/* 0385 */ 0x97FC, 0x97FE, 0x03AB, -/* 0386 */ 0x9858, 0x985A, 0x03AE, -/* 0387 */ 0x9861, 0x9863, 0x03B1, -/* 0388 */ 0x9897, 0x989B, 0x03B4, -/* 0389 */ 0x98A3, 0x98A4, 0x03B9, -/* 038A */ 0x98AB, 0x98AD, 0x03BB, -/* 038B */ 0x98B3, 0x98BD, 0x03BE, -/* 038C */ 0x98C5, 0x0000, 0xC0DA, -/* 038D */ 0x98CC, 0x98D0, 0x03C9, -/* 038E */ 0x98D8, 0x98D9, 0x03CE, -/* 038F */ 0x98E0, 0x98E5, 0x03D0, -/* 0390 */ 0x98ED, 0x98F0, 0x03D6, -/* 0391 */ 0x98F7, 0x98FE, 0x03DA, -/* 0392 */ 0x9941, 0x994A, 0x03E2, -/* 0393 */ 0x9952, 0x0000, 0xC14A, -/* 0394 */ 0x9959, 0x995A, 0x03EC, -/* 0395 */ 0x9961, 0x9963, 0x03EE, -/* 0396 */ 0x996B, 0x0000, 0xC166, -/* 0397 */ 0x9972, 0x997A, 0x03F1, -/* 0398 */ 0x9990, 0x9994, 0x03FA, -/* 0399 */ 0x999A, 0x99A5, 0x03FF, -/* 039A */ 0x99B8, 0x99BD, 0x040B, -/* 039B */ 0x99C5, 0x99C6, 0x0411, -/* 039C */ 0x99CE, 0x99D3, 0x0413, -/* 039D */ 0x99DB, 0x0000, 0xC1F2, -/* 039E */ 0x99E4, 0x99E8, 0x0419, -/* 039F */ 0x99F0, 0x99F1, 0x041E, -/* 03A0 */ 0x99F8, 0x99FE, 0x0420, -/* 03A1 */ 0x9A41, 0x9A49, 0x0427, -/* 03A2 */ 0x9A61, 0x9A62, 0x0430, -/* 03A3 */ 0x9A6A, 0x9A6E, 0x0432, -/* 03A4 */ 0x9A76, 0x9A7A, 0x0437, -/* 03A5 */ 0x9A86, 0x9A8A, 0x043C, -/* 03A6 */ 0x9A92, 0x9A93, 0x0441, -/* 03A7 */ 0x9AA7, 0x9AA9, 0x0443, -/* 03A8 */ 0x9AB0, 0x9AB4, 0x0446, -/* 03A9 */ 0x9ABB, 0x9ABC, 0x044B, -/* 03AA */ 0x9ADF, 0x9AE2, 0x044D, -/* 03AB */ 0x9AE9, 0x9AF3, 0x0451, -/* 03AC */ 0x9AFB, 0x9AFE, 0x045C, -/* 03AD */ 0x9B41, 0x9B48, 0x0460, -/* 03AE */ 0x9B50, 0x9B51, 0x0468, -/* 03AF */ 0x9B9B, 0x9BA0, 0x046A, -/* 03B0 */ 0x9BA6, 0x9BA7, 0x0470, -/* 03B1 */ 0x9BAE, 0x9BB3, 0x0472, -/* 03B2 */ 0x9BFE, 0x0000, 0xC3DA, -/* 03B3 */ 0x9C41, 0x9C44, 0x0478, -/* 03B4 */ 0x9C4A, 0x9C4C, 0x047C, -/* 03B5 */ 0x9C53, 0x9C54, 0x047F, -/* 03B6 */ 0x9C91, 0x9C96, 0x0481, -/* 03B7 */ 0x9CC3, 0x9CC7, 0x0487, -/* 03B8 */ 0x9CCF, 0x9CD1, 0x048C, -/* 03B9 */ 0x9D4F, 0x9D51, 0x048F, -/* 03BA */ 0x9D90, 0x9D99, 0x0492, -/* 03BB */ 0x9DA4, 0x9DA9, 0x049C, -/* 03BC */ 0x9DBC, 0x9DC0, 0x04A2, -/* 03BD */ 0x9DC8, 0x9DC9, 0x04A7, -/* 03BE */ 0x9DD0, 0x9DE0, 0x04A9, -/* 03BF */ 0x9DE8, 0x0000, 0xC572, -/* 03C0 */ 0x9DEF, 0x9DFE, 0x04BA, -/* 03C1 */ 0x9E41, 0x9E47, 0x04CA, -/* 03C2 */ 0x9E5A, 0x0000, 0xC5B6, -/* 03C3 */ 0x9E61, 0x9E62, 0x04D1, -/* 03C4 */ 0x9E68, 0x9E6F, 0x04D3, -/* 03C5 */ 0x9E77, 0x9E7A, 0x04DB, -/* 03C6 */ 0x9E81, 0x9E96, 0x04DF, -/* 03C7 */ 0x9E9E, 0x0000, 0xC61A, -/* 03C8 */ 0x9EA6, 0x9EB9, 0x04F5, -/* 03C9 */ 0x9EC1, 0x0000, 0xC652, -/* 03CA */ 0x9EC8, 0x9EC9, 0x0509, -/* 03CB */ 0x9ED5, 0x9ED7, 0x050B, -/* 03CC */ 0x9EDE, 0x9EE2, 0x050E, -/* 03CD */ 0x9EEA, 0x9EEB, 0x0513, -/* 03CE */ 0x9EF2, 0x9EF6, 0x0515, -/* 03CF */ 0x9EFE, 0x0000, 0xC6A6, -/* 03D0 */ 0x9F41, 0x0000, 0xC6A8, -/* 03D1 */ 0x9F48, 0x9F4C, 0x051A, -/* 03D2 */ 0x9F52, 0x9F53, 0x051F, -/* 03D3 */ 0x9F5A, 0x0000, 0xC6CE, -/* 03D4 */ 0x9F61, 0x9F64, 0x0521, -/* 03D5 */ 0x9F6C, 0x9F6D, 0x0525, -/* 03D6 */ 0x9F74, 0x9F7A, 0x0527, -/* 03D7 */ 0x9F86, 0x9F88, 0x052E, -/* 03D8 */ 0x9F8F, 0x9F93, 0x0531, -/* 03D9 */ 0x9F9B, 0x9F9C, 0x0536, -/* 03DA */ 0x9FA3, 0x9FA7, 0x0538, -/* 03DB */ 0x9FAF, 0x9FBA, 0x053D, -/* 03DC */ 0x9FC0, 0x9FC8, 0x0549, -/* 03DD */ 0x9FD0, 0x9FD1, 0x0552, -/* 03DE */ 0x9FDA, 0x9FEB, 0x0554, -/* 03DF */ 0x9FF1, 0x0000, 0xC7A2, -/* 03E0 */ 0x9FF7, 0x9FFE, 0x0566, -/* 03E1 */ 0xA041, 0xA045, 0x056E, -/* 03E2 */ 0xA04C, 0xA04F, 0x0573, -/* 03E3 */ 0xA057, 0xA05A, 0x0577, -/* 03E4 */ 0xA067, 0xA06C, 0x057B, -/* 03E5 */ 0xA086, 0xA08B, 0x0581, -/* 03E6 */ 0xA091, 0xA092, 0x0587, -/* 03E7 */ 0xA098, 0xA09C, 0x0589, -/* 03E8 */ 0xA0A4, 0xA0A5, 0x058E, -/* 03E9 */ 0xA0AC, 0xA0B1, 0x0590, -/* 03EA */ 0xA0B9, 0xA0BA, 0x0596, -/* 03EB */ 0xA0DC, 0xA0E1, 0x0598, -/* 03EC */ 0xA0E7, 0xA0EB, 0x059E, -/* 03ED */ 0xA0FA, 0xA0FE, 0x05A3, -/* 03EE */ 0xA141, 0xA143, 0x05A8, -/* 03EF */ 0xA157, 0xA15A, 0x05AB, -/* 03F0 */ 0xA161, 0xA168, 0x05AF, -/* 03F1 */ 0xA170, 0xA171, 0x05B7, -/* 03F2 */ 0xA178, 0xA17A, 0x05B9, -/* 03F3 */ 0xA196, 0xA19A, 0x05BC, -/* 03F4 */ 0xA1A0, 0xA1B3, 0x05C1, -/* 03F5 */ 0xA1BE, 0xA1FE, 0x05D5, -/* 03F6 */ 0xA241, 0x0000, 0xC910, -/* 03F7 */ 0xA289, 0xA28D, 0x0616, -/* 03F8 */ 0xA295, 0x0000, 0xC962, -/* 03F9 */ 0xA29E, 0xA2E5, 0x061B, -/* 03FA */ 0xA341, 0xA343, 0x0663, -/* 03FB */ 0xA356, 0xA35A, 0x0666, -/* 03FC */ 0xA368, 0xA369, 0x066B, -/* 03FD */ 0xA392, 0xA396, 0x066D, -/* 03FE */ 0xA39C, 0xA3A0, 0x0672, -/* 03FF */ 0xA3DC, 0x0000, 0xFFE6, -/* 0400 */ 0xA3FE, 0x0000, 0xFFE3, -/* 0401 */ 0xA441, 0xA44B, 0x0677, -/* 0402 */ 0xA452, 0xA45A, 0x0682, -/* 0403 */ 0xA461, 0xA464, 0x068B, -/* 0404 */ 0xA46B, 0xA46D, 0x068F, -/* 0405 */ 0xA481, 0xA483, 0x0692, -/* 0406 */ 0xA546, 0xA54A, 0x0695, -/* 0407 */ 0xA552, 0x0000, 0xCA5E, -/* 0408 */ 0xA559, 0xA55A, 0x069A, -/* 0409 */ 0xA579, 0xA57A, 0x069C, -/* 040A */ 0xA655, 0xA65A, 0x069E, -/* 040B */ 0xA667, 0xA66D, 0x06A4, -/* 040C */ 0xA681, 0xA684, 0x06AB, -/* 040D */ 0xA69F, 0xA6DC, 0x06AF, -/* 040E */ 0xA746, 0xA74B, 0x06ED, -/* 040F */ 0xA778, 0xA77A, 0x06F3, -/* 0410 */ 0xA781, 0xA788, 0x06F6, -/* 0411 */ 0xA790, 0xA792, 0x06FE, -/* 0412 */ 0xA7A1, 0xA7AA, 0x0701, -/* 0413 */ 0xA7B5, 0xA7BE, 0x070B, -/* 0414 */ 0xA7D9, 0xA7EF, 0x0715, -/* 0415 */ 0xA8A1, 0xA8AF, 0x072C, -/* 0416 */ 0xA8F6, 0xA8FE, 0x073B, -/* 0417 */ 0xA961, 0xA967, 0x0744, -/* 0418 */ 0xA990, 0xA994, 0x074B, -/* 0419 */ 0xA99C, 0xA9B0, 0x0750, -/* 041A */ 0xA9F6, 0xA9FE, 0x0765, -/* 041B */ 0xAA41, 0xAA46, 0x076E, -/* 041C */ 0xAA4E, 0x0000, 0xCC3A, -/* 041D */ 0xAA54, 0xAA5A, 0x0774, -/* 041E */ 0xAA66, 0x0000, 0xCC56, -/* 041F */ 0xAA6D, 0xAA71, 0x077B, -/* 0420 */ 0xAA79, 0xAA7A, 0x0780, -/* 0421 */ 0xAA81, 0xAA82, 0x0782, -/* 0422 */ 0xAB41, 0xAB49, 0x0784, -/* 0423 */ 0xAB51, 0x0000, 0xCCAA, -/* 0424 */ 0xAB58, 0xAB5A, 0x078D, -/* 0425 */ 0xAB61, 0xAB62, 0x0790, -/* 0426 */ 0xAB6A, 0xAB6B, 0x0792, -/* 0427 */ 0xAB72, 0xAB74, 0x0794, -/* 0428 */ 0xAB91, 0xAB93, 0x0797, -/* 0429 */ 0xAC41, 0xAC43, 0x079A, -/* 042A */ 0xAC4A, 0xAC4E, 0x079D, -/* 042B */ 0xAC56, 0xAC5A, 0x07A2, -/* 042C */ 0xAC61, 0xAC69, 0x07A7, -/* 042D */ 0xAC9E, 0xACA0, 0x07B0, -/* 042E */ 0xACA7, 0x0000, 0x0401, -/* 042F */ 0xACD7, 0x0000, 0x0451, -/* 0430 */ 0xAD41, 0xAD43, 0x07B3, -/* 0431 */ 0xAD4B, 0xAD4C, 0x07B6, -/* 0432 */ 0xAD73, 0xAD7A, 0x07B8, -/* 0433 */ 0xAD81, 0xAD86, 0x07C0, -/* 0434 */ 0xADA0, 0x0000, 0xCDC5, -/* 0435 */ 0xAE47, 0xAE49, 0x07C6, -/* 0436 */ 0xAE67, 0xAE6C, 0x07C9, -/* 0437 */ 0xAE74, 0xAE75, 0x07CF, -/* 0438 */ 0xAE81, 0xAE87, 0x07D1, -/* 0439 */ 0xAE8F, 0xAE92, 0x07D8, -/* 043A */ 0xAE99, 0xAEA0, 0x07DC, -/* 043B */ 0xAF41, 0xAF46, 0x07E4, -/* 043C */ 0xAF6F, 0xAF72, 0x07EA, -/* 043D */ 0xAF79, 0xAF7A, 0x07EE, -/* 043E */ 0xAF87, 0xAF8B, 0x07F0, -/* 043F */ 0xAF93, 0xAF94, 0x07F5, -/* 0440 */ 0xAF9B, 0xAFA0, 0x07F7, -/* 0441 */ 0xB047, 0x0000, 0xCEA2, -/* 0442 */ 0xB08F, 0xB092, 0x07FD, -/* 0443 */ 0xB09A, 0x0000, 0xCEF6, -/* 0444 */ 0xB0A1, 0xB0A7, 0x0801, -/* 0445 */ 0xB0B5, 0xB0FE, 0x0808, -/* 0446 */ 0xB141, 0xB145, 0x0852, -/* 0447 */ 0xB14D, 0xB14E, 0x0857, -/* 0448 */ 0xB155, 0xB15A, 0x0859, -/* 0449 */ 0xB168, 0x0000, 0xCF2E, -/* 044A */ 0xB190, 0xB194, 0x085F, -/* 044B */ 0xB19C, 0xB1FE, 0x0864, -/* 044C */ 0xB241, 0xB248, 0x08C7, -/* 044D */ 0xB250, 0xB253, 0x08CF, -/* 044E */ 0xB25A, 0x0000, 0xCF8D, -/* 044F */ 0xB27A, 0x0000, 0xCFA9, -/* 0450 */ 0xB2A1, 0xB2FE, 0x08D3, -/* 0451 */ 0xB355, 0xB35A, 0x0931, -/* 0452 */ 0xB367, 0xB368, 0x0937, -/* 0453 */ 0xB36F, 0xB374, 0x0939, -/* 0454 */ 0xB3A1, 0xB3B3, 0x093F, -/* 0455 */ 0xB3B9, 0xB3FE, 0x0952, -/* 0456 */ 0xB447, 0xB44B, 0x0998, -/* 0457 */ 0xB453, 0xB454, 0x099D, -/* 0458 */ 0xB461, 0xB466, 0x099F, -/* 0459 */ 0xB479, 0xB47A, 0x09A5, -/* 045A */ 0xB481, 0xB483, 0x09A7, -/* 045B */ 0xB48B, 0xB48D, 0x09AA, -/* 045C */ 0xB4A1, 0xB4DC, 0x09AD, -/* 045D */ 0xB4E2, 0xB4E4, 0x09E9, -/* 045E */ 0xB4EA, 0xB4FE, 0x09EC, -/* 045F */ 0xB550, 0xB554, 0x0A01, -/* 0460 */ 0xB561, 0xB563, 0x0A06, -/* 0461 */ 0xB56A, 0xB56E, 0x0A09, -/* 0462 */ 0xB575, 0x0000, 0xD0D2, -/* 0463 */ 0xB581, 0xB586, 0x0A0E, -/* 0464 */ 0xB58E, 0x0000, 0xD0EE, -/* 0465 */ 0xB5A1, 0xB5FE, 0x0A14, -/* 0466 */ 0xB671, 0xB67A, 0x0A72, -/* 0467 */ 0xB681, 0xB682, 0x0A7C, -/* 0468 */ 0xB689, 0xB68D, 0x0A7E, -/* 0469 */ 0xB695, 0xB696, 0x0A83, -/* 046A */ 0xB69D, 0xB6FE, 0x0A85, -/* 046B */ 0xB756, 0xB75A, 0x0AE7, -/* 046C */ 0xB776, 0xB77A, 0x0AEC, -/* 046D */ 0xB788, 0xB791, 0x0AF1, -/* 046E */ 0xB7A1, 0xB7FE, 0x0AFB, -/* 046F */ 0xB86A, 0xB86C, 0x0B59, -/* 0470 */ 0xB881, 0x0000, 0xD208, -/* 0471 */ 0xB8A1, 0xB8B8, 0x0B5C, -/* 0472 */ 0xB8BE, 0xB8FE, 0x0B74, -/* 0473 */ 0xB941, 0xB947, 0x0BB5, -/* 0474 */ 0xB94F, 0xB950, 0x0BBC, -/* 0475 */ 0xB957, 0xB95A, 0x0BBE, -/* 0476 */ 0xB977, 0xB97A, 0x0BC2, -/* 0477 */ 0xB998, 0xB9D8, 0x0BC6, -/* 0478 */ 0xB9E3, 0xB9FE, 0x0C07, -/* 0479 */ 0xBA41, 0xBA46, 0x0C23, -/* 047A */ 0xBA4D, 0xBA52, 0x0C29, -/* 047B */ 0xBA5A, 0x0000, 0xD2AD, -/* 047C */ 0xBA61, 0xBA63, 0x0C2F, -/* 047D */ 0xBA6A, 0xBA6E, 0x0C32, -/* 047E */ 0xBA74, 0x0000, 0xD2CA, -/* 047F */ 0xBA81, 0xBA88, 0x0C37, -/* 0480 */ 0xBA9A, 0xBAFE, 0x0C3F, -/* 0481 */ 0xBB46, 0xBB47, 0x0CA4, -/* 0482 */ 0xBB4E, 0xBB52, 0x0CA6, -/* 0483 */ 0xBB58, 0xBB5A, 0x0CAB, -/* 0484 */ 0xBB61, 0xBB68, 0x0CAE, -/* 0485 */ 0xBB70, 0x0000, 0xD33A, -/* 0486 */ 0xBB77, 0xBB7A, 0x0CB6, -/* 0487 */ 0xBBA1, 0xBBFE, 0x0CBA, -/* 0488 */ 0xBC53, 0xBC5A, 0x0D18, -/* 0489 */ 0xBC61, 0xBC65, 0x0D20, -/* 048A */ 0xBC6C, 0xBC70, 0x0D25, -/* 048B */ 0xBC78, 0xBC7A, 0x0D2A, -/* 048C */ 0xBC86, 0xBC8B, 0x0D2D, -/* 048D */ 0xBC93, 0xBC94, 0x0D33, -/* 048E */ 0xBCA1, 0xBCAC, 0x0D35, -/* 048F */ 0xBCB2, 0xBCFE, 0x0D41, -/* 0490 */ 0xBD41, 0x0000, 0xD3D7, -/* 0491 */ 0xBD4A, 0x0000, 0xD3E2, -/* 0492 */ 0xBD53, 0xBD5A, 0x0D8E, -/* 0493 */ 0xBD61, 0xBD66, 0x0D96, -/* 0494 */ 0xBDA1, 0xBDFE, 0x0D9C, -/* 0495 */ 0xBE49, 0xBE4B, 0x0DFA, -/* 0496 */ 0xBE69, 0xBE6E, 0x0DFD, -/* 0497 */ 0xBE77, 0xBE7A, 0x0E03, -/* 0498 */ 0xBE86, 0xBE8A, 0x0E07, -/* 0499 */ 0xBE90, 0xBE91, 0x0E0C, -/* 049A */ 0xBEA1, 0xBEF5, 0x0E0E, -/* 049B */ 0xBEFD, 0xBEFE, 0x0E63, -/* 049C */ 0xBF74, 0xBF7A, 0x0E65, -/* 049D */ 0xBF87, 0xBF88, 0x0E6C, -/* 049E */ 0xBF91, 0xBF96, 0x0E6E, -/* 049F */ 0xBF9E, 0xBFAF, 0x0E74, -/* 04A0 */ 0xBFB6, 0xBFFE, 0x0E86, -/* 04A1 */ 0xC047, 0xC04C, 0x0ECF, -/* 04A2 */ 0xC054, 0x0000, 0xD516, -/* 04A3 */ 0xC081, 0xC089, 0x0ED5, -/* 04A4 */ 0xC091, 0xC092, 0x0EDE, -/* 04A5 */ 0xC099, 0xC0BF, 0x0EE0, -/* 04A6 */ 0xC0C8, 0xC0FE, 0x0F07, -/* 04A7 */ 0xC141, 0xC145, 0x0F3E, -/* 04A8 */ 0xC14C, 0xC150, 0x0F43, -/* 04A9 */ 0xC158, 0xC15A, 0x0F48, -/* 04AA */ 0xC161, 0xC164, 0x0F4B, -/* 04AB */ 0xC179, 0xC17A, 0x0F4F, -/* 04AC */ 0xC1A1, 0xC1FE, 0x0F51, -/* 04AD */ 0xC241, 0xC246, 0x0FAF, -/* 04AE */ 0xC24C, 0xC24D, 0x0FB5, -/* 04AF */ 0xC254, 0xC25A, 0x0FB7, -/* 04B0 */ 0xC266, 0xC267, 0x0FBE, -/* 04B1 */ 0xC26E, 0xC272, 0x0FC0, -/* 04B2 */ 0xC27A, 0x0000, 0xD612, -/* 04B3 */ 0xC287, 0xC28C, 0x0FC5, -/* 04B4 */ 0xC29F, 0xC2FE, 0x0FCB, -/* 04B5 */ 0xC341, 0xC355, 0x102B, -/* 04B6 */ 0xC366, 0x0000, 0xD668, -/* 04B7 */ 0xC36D, 0xC36E, 0x1040, -/* 04B8 */ 0xC381, 0xC383, 0x1042, -/* 04B9 */ 0xC38A, 0xC38E, 0x1045, -/* 04BA */ 0xC397, 0xC398, 0x104A, -/* 04BB */ 0xC39F, 0xC3FE, 0x104C, -/* 04BC */ 0xC441, 0xC444, 0x10AC, -/* 04BD */ 0xC44D, 0x0000, 0xD6BA, -/* 04BE */ 0xC456, 0xC45A, 0x10B0, -/* 04BF */ 0xC461, 0xC469, 0x10B5, -/* 04C0 */ 0xC470, 0xC475, 0x10BE, -/* 04C1 */ 0xC481, 0xC486, 0x10C4, -/* 04C2 */ 0xC48D, 0xC491, 0x10CA, -/* 04C3 */ 0xC49E, 0xC4FE, 0x10CF, -/* 04C4 */ 0xC541, 0xC548, 0x1130, -/* 04C5 */ 0xC550, 0xC551, 0x1138, -/* 04C6 */ 0xC558, 0xC55A, 0x113A, -/* 04C7 */ 0xC561, 0xC562, 0x113D, -/* 04C8 */ 0xC56A, 0xC56C, 0x113F, -/* 04C9 */ 0xC573, 0xC575, 0x1142, -/* 04CA */ 0xC581, 0xC58E, 0x1145, -/* 04CB */ 0xC596, 0xC598, 0x1153, -/* 04CC */ 0xC59F, 0xC5FE, 0x1156, -/* 04CD */ 0xC641, 0xC643, 0x11B6, -/* 04CE */ 0xC64B, 0xC64C, 0x11B9, -/* 04CF */ 0xC6A1, 0xC6FE, 0x11BB, -/* 04D0 */ 0xC7A1, 0xC7FE, 0x1219, -/* 04D1 */ 0xC8A1, 0xC8FE, 0x1277, -/* 04D2 */ 0xCAA1, 0xCAFE, 0x12D5, -/* 04D3 */ 0xCBA1, 0xCBFE, 0x1333, -/* 04D4 */ 0xCCA1, 0xCCFE, 0x1391, -/* 04D5 */ 0xCDA1, 0xCDFE, 0x13EF, -/* 04D6 */ 0xCEA1, 0xCEFE, 0x144D, -/* 04D7 */ 0xCFA1, 0xCFFE, 0x14AB, -/* 04D8 */ 0xD0A1, 0xD0FE, 0x1509, -/* 04D9 */ 0xD1A1, 0xD1DA, 0x1567, -/* 04DA */ 0xD1E1, 0x0000, 0x90A3, -/* 04DB */ 0xD1E7, 0xD1FE, 0x15A1, -/* 04DC */ 0xD2A1, 0xD2A6, 0x15B9, -/* 04DD */ 0xD2AC, 0xD2C5, 0x15BF, -/* 04DE */ 0xD2CC, 0x0000, 0x99D1, -/* 04DF */ 0xD2D8, 0xD2E3, 0x15D9, -/* 04E0 */ 0xD2EC, 0xD2EF, 0x15E5, -/* 04E1 */ 0xD2F6, 0xD2FE, 0x15E9, -/* 04E2 */ 0xD3A1, 0xD3FE, 0x15F2, -/* 04E3 */ 0xD4A1, 0xD4FE, 0x1650, -/* 04E4 */ 0xD5A1, 0xD5FE, 0x16AE, -/* 04E5 */ 0xD6A1, 0xD6FE, 0x170C, -/* 04E6 */ 0xD7A1, 0xD7FE, 0x176A, -/* 04E7 */ 0xD8A1, 0xD8FE, 0x17C8, -/* 04E8 */ 0xD9A1, 0xD9FE, 0x1826, -/* 04E9 */ 0xDAA1, 0xDAFE, 0x1884, -/* 04EA */ 0xDBA1, 0xDBFE, 0x18E2, -/* 04EB */ 0xDCA1, 0xDCFE, 0x1940, -/* 04EC */ 0xDDA1, 0xDDFE, 0x199E, -/* 04ED */ 0xDEA1, 0xDEFE, 0x19FC, -/* 04EE */ 0xDFA1, 0xDFFE, 0x1A5A, -/* 04EF */ 0xE0A1, 0xE0FE, 0x1AB8, -/* 04F0 */ 0xE1A1, 0xE1FE, 0x1B16, -/* 04F1 */ 0xE2A1, 0xE2FE, 0x1B74, -/* 04F2 */ 0xE3A1, 0xE3FE, 0x1BD2, -/* 04F3 */ 0xE4A1, 0xE4FE, 0x1C30, -/* 04F4 */ 0xE5A1, 0xE5FE, 0x1C8E, -/* 04F5 */ 0xE6A1, 0xE6FE, 0x1CEC, -/* 04F6 */ 0xE7A1, 0xE7FE, 0x1D4A, -/* 04F7 */ 0xE8A1, 0xE8FE, 0x1DA8, -/* 04F8 */ 0xE9A1, 0xE9FE, 0x1E06, -/* 04F9 */ 0xEAA1, 0xEAFE, 0x1E64, -/* 04FA */ 0xEBA1, 0xEBFE, 0x1EC2, -/* 04FB */ 0xECA1, 0xECFE, 0x1F20, -/* 04FC */ 0xEDA1, 0xEDFE, 0x1F7E, -/* 04FD */ 0xEEA1, 0xEEFE, 0x1FDC, -/* 04FE */ 0xEFA1, 0xEFFE, 0x203A, -/* 04FF */ 0xF0A1, 0xF0FE, 0x2098, -/* 0500 */ 0xF1A1, 0xF1FE, 0x20F6, -/* 0501 */ 0xF2A1, 0xF2FE, 0x2154, -/* 0502 */ 0xF3A1, 0xF3FE, 0x21B2, -/* 0503 */ 0xF4A1, 0xF4FE, 0x2210, -/* 0504 */ 0xF5A1, 0xF5FE, 0x226E, -/* 0505 */ 0xF6A1, 0xF6FE, 0x22CC, -/* 0506 */ 0xF7A1, 0xF7FE, 0x232A, -/* 0507 */ 0xF8A1, 0xF8FE, 0x2388, -/* 0508 */ 0xF9A1, 0xF9FE, 0x23E6, -/* 0509 */ 0xFAA1, 0xFAFE, 0x2444, -/* 050A */ 0xFBA1, 0xFBFE, 0x24A2, -/* 050B */ 0xFCA1, 0xFCFE, 0x2500, -/* 050C */ 0xFDA1, 0xFDFE, 0x255E, -/*-------------------------------------------------------*/ -/* Offset=0x106F Start of MappingTable */ - -/* 0000 */ 0xAC02, 0xAC03, 0xAC05, 0xAC06, 0xAC18, 0xAC1E, 0xAC1F, 0xAC21, -/* 0008 */ 0xAC22, 0xAC23, 0xAC2E, 0xAC32, 0xAC33, 0xAC34, 0xAC35, 0xAC36, -/* 0010 */ 0xAC37, 0xAC3A, 0xAC3B, 0xAC3D, 0xAC3E, 0xAC3F, 0xAC56, 0xAC57, -/* 0018 */ 0xAC59, 0xAC5A, 0xAC5B, 0xAC72, 0xAC73, 0xAC75, 0xAC76, 0xAC79, -/* 0020 */ 0xAC82, 0xAC87, 0xAC88, 0xAC8D, 0xAC8E, 0xAC8F, 0xAC91, 0xAC92, -/* 0028 */ 0xAC93, 0xACAB, 0xACAD, 0xACAE, 0xACBA, 0xACBE, 0xACBF, 0xACC0, -/* 0030 */ 0xACC2, 0xACC3, 0xACC5, 0xACC6, 0xACC7, 0xACC9, 0xACCA, 0xACCB, -/* 0038 */ 0xACE2, 0xACE3, 0xACE5, 0xACE6, 0xACE9, 0xACEB, 0xACED, 0xACEE, -/* 0040 */ 0xACF2, 0xACF4, 0xACFE, 0xACFF, 0xAD01, 0xAD02, 0xAD03, 0xAD05, -/* 0048 */ 0xAD0E, 0xAD10, 0xAD12, 0xAD13, 0xAD14, 0xAD15, 0xAD16, 0xAD17, -/* 0050 */ 0xAD19, 0xAD1A, 0xAD1B, 0xAD1D, 0xAD1E, 0xAD1F, 0xAD2A, 0xAD2B, -/* 0058 */ 0xAD36, 0xAD37, 0xAD39, 0xAD3A, 0xAD3B, 0xAD46, 0xAD48, 0xAD51, -/* 0060 */ 0xAD52, 0xAD53, 0xAD55, 0xAD56, 0xAD57, 0xAD6E, 0xAD6F, 0xAD71, -/* 0068 */ 0xAD72, 0xAD77, 0xAD78, 0xAD79, 0xAD7A, 0xAD7E, 0xAD80, 0xAD8A, -/* 0070 */ 0xAD8B, 0xAD8D, 0xAD8E, 0xAD8F, 0xADC2, 0xADC3, 0xADC5, 0xADC6, -/* 0078 */ 0xADC7, 0xADDD, 0xADDE, 0xADDF, 0xADE1, 0xADE2, 0xADE3, 0xADFA, -/* 0080 */ 0xADFB, 0xADFD, 0xADFE, 0xAE0A, 0xAE0C, 0xAE32, 0xAE33, 0xAE35, -/* 0088 */ 0xAE36, 0xAE39, 0xAE3B, 0xAE3C, 0xAE3D, 0xAE3E, 0xAE3F, 0xAE42, -/* 0090 */ 0xAE44, 0xAE47, 0xAE48, 0xAE49, 0xAE4B, 0xAE4F, 0xAE51, 0xAE52, -/* 0098 */ 0xAE53, 0xAE55, 0xAE5E, 0xAE62, 0xAE63, 0xAE64, 0xAE66, 0xAE67, -/* 00A0 */ 0xAE6A, 0xAE6B, 0xAE6D, 0xAE6E, 0xAE6F, 0xAEBF, 0xAEC1, 0xAEC2, -/* 00A8 */ 0xAEC3, 0xAEDA, 0xAEDB, 0xAEE6, 0xAEE7, 0xAEE9, 0xAEEA, 0xAEEC, -/* 00B0 */ 0xAEF5, 0xAEF6, 0xAEF7, 0xAEF9, 0xAEFA, 0xAEFB, 0xAF06, 0xAF09, -/* 00B8 */ 0xAF0A, 0xAF0B, 0xAF0C, 0xAF0E, 0xAF0F, 0xAF2E, 0xAF2F, 0xAF31, -/* 00C0 */ 0xAF33, 0xAF3E, 0xAF40, 0xAF44, 0xAF45, 0xAF46, 0xAF47, 0xAF81, -/* 00C8 */ 0xAF82, 0xAF83, 0xAF85, 0xAF86, 0xAF87, 0xAF92, 0xAF93, 0xAF94, -/* 00D0 */ 0xAFBA, 0xAFBB, 0xAFBD, 0xAFBE, 0xAFCA, 0xAFCC, 0xAFF2, 0xAFF3, -/* 00D8 */ 0xAFF5, 0xAFF6, 0xAFF7, 0xB002, 0xB003, 0xB00D, 0xB00E, 0xB00F, -/* 00E0 */ 0xB011, 0xB012, 0xB013, 0xB046, 0xB047, 0xB049, 0xB04B, 0xB04D, -/* 00E8 */ 0xB04F, 0xB050, 0xB051, 0xB052, 0xB056, 0xB058, 0xB05A, 0xB05B, -/* 00F0 */ 0xB05C, 0xB07E, 0xB07F, 0xB081, 0xB082, 0xB083, 0xB08E, 0xB090, -/* 00F8 */ 0xB09B, 0xB09D, 0xB09E, 0xB0A3, 0xB0A4, 0xB0A5, 0xB0A6, 0xB0A7, -/* 0100 */ 0xB0AA, 0xB0B0, 0xB0B2, 0xB0B6, 0xB0B7, 0xB0B9, 0xB0BA, 0xB0BB, -/* 0108 */ 0xB0D3, 0xB0D5, 0xB0D6, 0xB0D7, 0xB0E1, 0xB0E2, 0xB0E3, 0xB0E4, -/* 0110 */ 0xB10A, 0xB10D, 0xB10E, 0xB10F, 0xB111, 0xB114, 0xB115, 0xB116, -/* 0118 */ 0xB117, 0xB11A, 0xB126, 0xB127, 0xB129, 0xB12A, 0xB12B, 0xB142, -/* 0120 */ 0xB143, 0xB145, 0xB146, 0xB147, 0xB152, 0xB153, 0xB156, 0xB157, -/* 0128 */ 0xB159, 0xB15A, 0xB15B, 0xB15D, 0xB15E, 0xB15F, 0xB17A, 0xB17B, -/* 0130 */ 0xB17D, 0xB17E, 0xB17F, 0xB181, 0xB18A, 0xB18C, 0xB18E, 0xB18F, -/* 0138 */ 0xB190, 0xB191, 0xB195, 0xB196, 0xB197, 0xB199, 0xB19A, 0xB19B, -/* 0140 */ 0xB19D, 0xB1CD, 0xB1CE, 0xB1CF, 0xB1D1, 0xB1D2, 0xB1D3, 0xB1D5, -/* 0148 */ 0xB1EA, 0xB1EB, 0xB1ED, 0xB1EE, 0xB1EF, 0xB1FA, 0xB1FC, 0xB206, -/* 0150 */ 0xB207, 0xB209, 0xB20A, 0xB216, 0xB218, 0xB259, 0xB25A, 0xB25B, -/* 0158 */ 0xB25D, 0xB25E, 0xB25F, 0xB286, 0xB287, 0xB288, 0xB28F, 0xB292, -/* 0160 */ 0xB293, 0xB295, 0xB296, 0xB297, 0xB2A2, 0xB2A4, 0xB2A7, 0xB2A8, -/* 0168 */ 0xB2A9, 0xB2AB, 0xB2AD, 0xB2AE, 0xB2AF, 0xB2B1, 0xB2B2, 0xB2B3, -/* 0170 */ 0xB2B5, 0xB2B6, 0xB2B7, 0xB2CA, 0xB2CB, 0xB2CD, 0xB2CE, 0xB2CF, -/* 0178 */ 0xB2D1, 0xB2DA, 0xB2DC, 0xB2DE, 0xB2DF, 0xB2E0, 0xB2E1, 0xB2E3, -/* 0180 */ 0xB2E7, 0xB2E9, 0xB2EA, 0xB2F0, 0xB2F1, 0xB2F2, 0xB2F6, 0xB2FC, -/* 0188 */ 0xB2FD, 0xB2FE, 0xB302, 0xB303, 0xB305, 0xB306, 0xB307, 0xB357, -/* 0190 */ 0xB359, 0xB35A, 0xB35D, 0xB360, 0xB361, 0xB362, 0xB363, 0xB366, -/* 0198 */ 0xB368, 0xB36A, 0xB36C, 0xB36D, 0xB36F, 0xB372, 0xB373, 0xB375, -/* 01A0 */ 0xB376, 0xB377, 0xB38E, 0xB38F, 0xB391, 0xB392, 0xB393, 0xB3A9, -/* 01A8 */ 0xB3AA, 0xB3AB, 0xB3AD, 0xB3C6, 0xB3C7, 0xB3C9, 0xB3CA, 0xB3CD, -/* 01B0 */ 0xB3CF, 0xB3D1, 0xB3D2, 0xB3D3, 0xB3D6, 0xB3D8, 0xB3DA, 0xB3DC, -/* 01B8 */ 0xB3DE, 0xB3DF, 0xB3E1, 0xB3E2, 0xB3E3, 0xB3E5, 0xB3E6, 0xB3E7, -/* 01C0 */ 0xB419, 0xB41A, 0xB41B, 0xB41D, 0xB41E, 0xB41F, 0xB452, 0xB453, -/* 01C8 */ 0xB455, 0xB456, 0xB457, 0xB462, 0xB464, 0xB466, 0xB481, 0xB482, -/* 01D0 */ 0xB4A5, 0xB4A6, 0xB4A7, 0xB4A9, 0xB4AA, 0xB4AB, 0xB4B6, 0xB4B8, -/* 01D8 */ 0xB4C1, 0xB4C2, 0xB4C3, 0xB4C5, 0xB4C6, 0xB4C7, 0xB4D1, 0xB4D2, -/* 01E0 */ 0xB4D3, 0xB4D4, 0xB4DE, 0xB4DF, 0xB4E1, 0xB4E2, 0xB4E5, 0xB4EE, -/* 01E8 */ 0xB4F0, 0xB516, 0xB517, 0xB519, 0xB51A, 0xB51D, 0xB532, 0xB533, -/* 01F0 */ 0xB535, 0xB536, 0xB537, 0xB542, 0xB546, 0xB547, 0xB548, 0xB549, -/* 01F8 */ 0xB54A, 0xB54E, 0xB54F, 0xB551, 0xB552, 0xB553, 0xB5A2, 0xB5A3, -/* 0200 */ 0xB5A5, 0xB5A6, 0xB5A7, 0xB5A9, 0xB5AC, 0xB5AD, 0xB5AE, 0xB5AF, -/* 0208 */ 0xB5B2, 0xB5BE, 0xB5BF, 0xB5C1, 0xB5C2, 0xB5C3, 0xB612, 0xB613, -/* 0210 */ 0xB615, 0xB616, 0xB617, 0xB665, 0xB666, 0xB667, 0xB69E, 0xB69F, -/* 0218 */ 0xB6A1, 0xB6A2, 0xB6A3, 0xB6AD, 0xB6AE, 0xB6AF, 0xB6B0, 0xB6F1, -/* 0220 */ 0xB6F2, 0xB6F3, 0xB6F5, 0xB6F6, 0xB6F7, 0xB6F9, 0xB6FA, 0xB702, -/* 0228 */ 0xB703, 0xB704, 0xB72A, 0xB72B, 0xB72D, 0xB72E, 0xB745, 0xB746, -/* 0230 */ 0xB747, 0xB749, 0xB74A, 0xB74B, 0xB761, 0xB762, 0xB763, 0xB765, -/* 0238 */ 0xB766, 0xB767, 0xB772, 0xB774, 0xB77E, 0xB77F, 0xB781, 0xB782, -/* 0240 */ 0xB783, 0xB78E, 0xB793, 0xB794, 0xB795, 0xB79A, 0xB79B, 0xB79D, -/* 0248 */ 0xB79E, 0xB7B6, 0xB7B7, 0xB7EE, 0xB7EF, 0xB7F1, 0xB7F2, 0xB7F3, -/* 0250 */ 0xB80A, 0xB80B, 0xB80D, 0xB80E, 0xB80F, 0xB81A, 0xB81C, 0xB826, -/* 0258 */ 0xB827, 0xB829, 0xB82A, 0xB82B, 0xB841, 0xB842, 0xB843, 0xB85E, -/* 0260 */ 0xB85F, 0xB861, 0xB862, 0xB863, 0xB86E, 0xB870, 0xB879, 0xB87A, -/* 0268 */ 0xB87B, 0xB8B1, 0xB8B2, 0xB8B3, 0xB8B5, 0xB8B6, 0xB8B7, 0xB8BE, -/* 0270 */ 0xB8BF, 0xB8C2, 0xB8C4, 0xB8CD, 0xB8CE, 0xB8CF, 0xB8D1, 0xB8D2, -/* 0278 */ 0xB8D3, 0xB8DE, 0xB8E0, 0xB8EA, 0xB8EB, 0xB8ED, 0xB8EE, 0xB8EF, -/* 0280 */ 0xB8FA, 0xB8FC, 0xB93E, 0xB93F, 0xB941, 0xB942, 0xB943, 0xB94D, -/* 0288 */ 0xB94E, 0xB950, 0xB95A, 0xB95B, 0xB95D, 0xB95E, 0xB95F, 0xB96A, -/* 0290 */ 0xB96C, 0xB976, 0xB977, 0xB979, 0xB97A, 0xB97B, 0xB97D, 0xB986, -/* 0298 */ 0xB988, 0xB98B, 0xB98C, 0xB9AE, 0xB9AF, 0xB9B1, 0xB9B2, 0xB9B3, -/* 02A0 */ 0xB9BE, 0xB9C0, 0xB9CA, 0xB9CB, 0xB9CD, 0xB9DA, 0xB9DC, 0xB9DF, -/* 02A8 */ 0xB9E0, 0xB9E2, 0xB9E6, 0xB9E7, 0xB9E9, 0xB9EA, 0xB9EB, 0xBA3A, -/* 02B0 */ 0xBA3B, 0xBA3D, 0xBA3E, 0xBA3F, 0xBA41, 0xBA43, 0xBA44, 0xBA45, -/* 02B8 */ 0xBA46, 0xBA47, 0xBA4A, 0xBA4C, 0xBA4F, 0xBA50, 0xBA51, 0xBA52, -/* 02C0 */ 0xBA56, 0xBA57, 0xBA59, 0xBA5A, 0xBA5B, 0xBA72, 0xBA73, 0xBA75, -/* 02C8 */ 0xBA76, 0xBA77, 0xBA86, 0xBA88, 0xBA89, 0xBA8A, 0xBA8B, 0xBAAA, -/* 02D0 */ 0xBAAD, 0xBAAE, 0xBAAF, 0xBAB1, 0xBABA, 0xBABC, 0xBAC5, 0xBAC6, -/* 02D8 */ 0xBAC7, 0xBAFD, 0xBAFE, 0xBAFF, 0xBB01, 0xBB02, 0xBB03, 0xBB0E, -/* 02E0 */ 0xBB10, 0xBB19, 0xBB1A, 0xBB1B, 0xBB1D, 0xBB1E, 0xBB1F, 0xBB28, -/* 02E8 */ 0xBB2A, 0xBB37, 0xBB39, 0xBB3A, 0xBB46, 0xBB48, 0xBB4A, 0xBB4B, -/* 02F0 */ 0xBB4C, 0xBB4E, 0xBB51, 0xBB52, 0xBB53, 0xBB55, 0xBB56, 0xBB57, -/* 02F8 */ 0xBB89, 0xBB8A, 0xBB8B, 0xBB8D, 0xBB8E, 0xBB8F, 0xBBA5, 0xBBA6, -/* 0300 */ 0xBBA7, 0xBBA9, 0xBBAA, 0xBBAB, 0xBBB5, 0xBBB6, 0xBBC1, 0xBBC2, -/* 0308 */ 0xBBC3, 0xBBC5, 0xBBC6, 0xBBC7, 0xBBD1, 0xBBD2, 0xBBFA, 0xBBFB, -/* 0310 */ 0xBBFD, 0xBBFE, 0xBC01, 0xBC0A, 0xBC0E, 0xBC10, 0xBC12, 0xBC13, -/* 0318 */ 0xBC19, 0xBC1A, 0xBC20, 0xBC21, 0xBC22, 0xBC23, 0xBC26, 0xBC28, -/* 0320 */ 0xBC2A, 0xBC2B, 0xBC2C, 0xBC2E, 0xBC2F, 0xBC32, 0xBC33, 0xBC35, -/* 0328 */ 0xBC36, 0xBC37, 0xBC42, 0xBC46, 0xBC47, 0xBC48, 0xBC4A, 0xBC4B, -/* 0330 */ 0xBC4E, 0xBC4F, 0xBC5A, 0xBC5B, 0xBC5C, 0xBC86, 0xBC87, 0xBC89, -/* 0338 */ 0xBC8A, 0xBC8D, 0xBC96, 0xBC98, 0xBCA2, 0xBCA3, 0xBCA5, 0xBCA6, -/* 0340 */ 0xBCBE, 0xBCBF, 0xBCC1, 0xBCC2, 0xBCC3, 0xBCCE, 0xBCD2, 0xBCD3, -/* 0348 */ 0xBCD4, 0xBCD6, 0xBCD7, 0xBCD9, 0xBCDA, 0xBCDB, 0xBCF7, 0xBCF9, -/* 0350 */ 0xBCFA, 0xBCFB, 0xBCFD, 0xBD06, 0xBD08, 0xBD11, 0xBD12, 0xBD13, -/* 0358 */ 0xBD4A, 0xBD4B, 0xBD4D, 0xBD4E, 0xBD4F, 0xBD65, 0xBD66, 0xBD67, -/* 0360 */ 0xBD82, 0xBD83, 0xBD85, 0xBD86, 0xBD92, 0xBD94, 0xBD96, 0xBD97, -/* 0368 */ 0xBD98, 0xBD9B, 0xBDD2, 0xBDD3, 0xBDD6, 0xBDD7, 0xBDD9, 0xBDDA, -/* 0370 */ 0xBDDB, 0xBDF2, 0xBDF3, 0xBDF5, 0xBDF6, 0xBDF7, 0xBE01, 0xBE02, -/* 0378 */ 0xBE04, 0xBE0E, 0xBE0F, 0xBE11, 0xBE12, 0xBE13, 0xBE46, 0xBE47, -/* 0380 */ 0xBE49, 0xBE4A, 0xBE4B, 0xBE4D, 0xBE56, 0xBE58, 0xBE5C, 0xBE5D, -/* 0388 */ 0xBE5E, 0xBE5F, 0xBE62, 0xBE63, 0xBE65, 0xBE66, 0xBE67, 0xBE69, -/* 0390 */ 0xBE7E, 0xBE7F, 0xBE81, 0xBE82, 0xBE83, 0xBED2, 0xBED3, 0xBED5, -/* 0398 */ 0xBED6, 0xBEE1, 0xBEE2, 0xBF42, 0xBF43, 0xBF45, 0xBF46, 0xBF47, -/* 03A0 */ 0xBF52, 0xBF53, 0xBF54, 0xBFCE, 0xBFCF, 0xBFD1, 0xBFD2, 0xBFD3, -/* 03A8 */ 0xBFDD, 0xBFDE, 0xBFE0, 0xC03D, 0xC03E, 0xC03F, 0xC059, 0xC05A, -/* 03B0 */ 0xC05B, 0xC05D, 0xC05E, 0xC05F, 0xC092, 0xC093, 0xC095, 0xC096, -/* 03B8 */ 0xC097, 0xC0A2, 0xC0A4, 0xC0AE, 0xC0B1, 0xC0B2, 0xC0BE, 0xC0C2, -/* 03C0 */ 0xC0C3, 0xC0C4, 0xC0C6, 0xC0C7, 0xC0CA, 0xC0CB, 0xC0CD, 0xC0CE, -/* 03C8 */ 0xC0CF, 0xC0E6, 0xC0E7, 0xC0E9, 0xC0EA, 0xC0EB, 0xC0F6, 0xC0F8, -/* 03D0 */ 0xC101, 0xC102, 0xC103, 0xC105, 0xC106, 0xC107, 0xC111, 0xC112, -/* 03D8 */ 0xC113, 0xC114, 0xC121, 0xC122, 0xC125, 0xC128, 0xC129, 0xC12A, -/* 03E0 */ 0xC12B, 0xC12E, 0xC132, 0xC133, 0xC134, 0xC135, 0xC137, 0xC13A, -/* 03E8 */ 0xC13B, 0xC13D, 0xC13E, 0xC13F, 0xC156, 0xC157, 0xC159, 0xC15A, -/* 03F0 */ 0xC15B, 0xC171, 0xC172, 0xC173, 0xC175, 0xC176, 0xC177, 0xC179, -/* 03F8 */ 0xC17A, 0xC17B, 0xC18F, 0xC191, 0xC192, 0xC193, 0xC195, 0xC19E, -/* 0400 */ 0xC1A0, 0xC1A2, 0xC1A3, 0xC1A4, 0xC1A6, 0xC1A7, 0xC1AA, 0xC1AB, -/* 0408 */ 0xC1AD, 0xC1AE, 0xC1AF, 0xC1C5, 0xC1C6, 0xC1C7, 0xC1C9, 0xC1CA, -/* 0410 */ 0xC1CB, 0xC1D5, 0xC1D6, 0xC1E1, 0xC1E2, 0xC1E3, 0xC1E5, 0xC1E6, -/* 0418 */ 0xC1E7, 0xC1FE, 0xC1FF, 0xC201, 0xC202, 0xC203, 0xC20E, 0xC210, -/* 0420 */ 0xC21A, 0xC21B, 0xC21D, 0xC21E, 0xC221, 0xC222, 0xC223, 0xC224, -/* 0428 */ 0xC225, 0xC226, 0xC227, 0xC22A, 0xC22C, 0xC22E, 0xC230, 0xC233, -/* 0430 */ 0xC246, 0xC247, 0xC252, 0xC253, 0xC255, 0xC256, 0xC257, 0xC261, -/* 0438 */ 0xC262, 0xC263, 0xC264, 0xC266, 0xC26E, 0xC26F, 0xC271, 0xC272, -/* 0440 */ 0xC273, 0xC27E, 0xC280, 0xC299, 0xC29A, 0xC29C, 0xC2A6, 0xC2A7, -/* 0448 */ 0xC2A9, 0xC2AA, 0xC2AB, 0xC2B6, 0xC2B8, 0xC2DE, 0xC2DF, 0xC2E1, -/* 0450 */ 0xC2E2, 0xC2EE, 0xC2F0, 0xC2F2, 0xC2F3, 0xC2F4, 0xC2F5, 0xC2F7, -/* 0458 */ 0xC2FA, 0xC2FD, 0xC2FE, 0xC2FF, 0xC30A, 0xC30B, 0xC30E, 0xC30F, -/* 0460 */ 0xC310, 0xC311, 0xC312, 0xC316, 0xC317, 0xC319, 0xC31A, 0xC31B, -/* 0468 */ 0xC326, 0xC327, 0xC36A, 0xC36B, 0xC36D, 0xC36E, 0xC36F, 0xC371, -/* 0470 */ 0xC37A, 0xC37B, 0xC385, 0xC386, 0xC387, 0xC389, 0xC38A, 0xC38B, -/* 0478 */ 0xC3DB, 0xC3DD, 0xC3DE, 0xC3E1, 0xC3EA, 0xC3EB, 0xC3EC, 0xC3F6, -/* 0480 */ 0xC3F7, 0xC42D, 0xC42E, 0xC42F, 0xC431, 0xC432, 0xC433, 0xC466, -/* 0488 */ 0xC467, 0xC469, 0xC46A, 0xC46B, 0xC476, 0xC477, 0xC478, 0xC4B9, -/* 0490 */ 0xC4BA, 0xC4BB, 0xC4F2, 0xC4F3, 0xC4F5, 0xC4F6, 0xC4F7, 0xC4F9, -/* 0498 */ 0xC4FB, 0xC4FC, 0xC4FD, 0xC4FE, 0xC50D, 0xC50E, 0xC50F, 0xC511, -/* 04A0 */ 0xC512, 0xC513, 0xC52A, 0xC52B, 0xC52D, 0xC52E, 0xC52F, 0xC53A, -/* 04A8 */ 0xC53C, 0xC546, 0xC547, 0xC54B, 0xC54F, 0xC550, 0xC551, 0xC552, -/* 04B0 */ 0xC556, 0xC55A, 0xC55B, 0xC55C, 0xC55F, 0xC562, 0xC563, 0xC565, -/* 04B8 */ 0xC566, 0xC567, 0xC57E, 0xC57F, 0xC581, 0xC582, 0xC583, 0xC585, -/* 04C0 */ 0xC586, 0xC588, 0xC589, 0xC58A, 0xC58B, 0xC58E, 0xC590, 0xC592, -/* 04C8 */ 0xC593, 0xC594, 0xC596, 0xC599, 0xC59A, 0xC59B, 0xC59D, 0xC59E, -/* 04D0 */ 0xC59F, 0xC5B7, 0xC5BA, 0xC5CB, 0xC5CD, 0xC5CF, 0xC5D2, 0xC5D3, -/* 04D8 */ 0xC5D5, 0xC5D6, 0xC5D7, 0xC5E2, 0xC5E4, 0xC5E6, 0xC5E7, 0xC5E8, -/* 04E0 */ 0xC5E9, 0xC5EA, 0xC5EB, 0xC5EF, 0xC5F1, 0xC5F2, 0xC5F3, 0xC5F5, -/* 04E8 */ 0xC5F8, 0xC5F9, 0xC5FA, 0xC5FB, 0xC602, 0xC603, 0xC604, 0xC609, -/* 04F0 */ 0xC60A, 0xC60B, 0xC60D, 0xC60E, 0xC60F, 0xC626, 0xC627, 0xC629, -/* 04F8 */ 0xC62A, 0xC62B, 0xC62F, 0xC631, 0xC632, 0xC636, 0xC638, 0xC63A, -/* 0500 */ 0xC63C, 0xC63D, 0xC63E, 0xC63F, 0xC642, 0xC643, 0xC645, 0xC646, -/* 0508 */ 0xC647, 0xC65E, 0xC65F, 0xC66D, 0xC66E, 0xC670, 0xC67A, 0xC67B, -/* 0510 */ 0xC67D, 0xC67E, 0xC67F, 0xC68A, 0xC68C, 0xC696, 0xC697, 0xC699, -/* 0518 */ 0xC69A, 0xC69B, 0xC6B2, 0xC6B3, 0xC6B5, 0xC6B6, 0xC6B7, 0xC6C2, -/* 0520 */ 0xC6C4, 0xC6CF, 0xC6D1, 0xC6D2, 0xC6D3, 0xC6DE, 0xC6DF, 0xC6EA, -/* 0528 */ 0xC6EB, 0xC6ED, 0xC6EE, 0xC6EF, 0xC6F1, 0xC6F2, 0xC6FA, 0xC6FB, -/* 0530 */ 0xC6FC, 0xC706, 0xC707, 0xC709, 0xC70A, 0xC70B, 0xC716, 0xC718, -/* 0538 */ 0xC722, 0xC723, 0xC725, 0xC726, 0xC727, 0xC732, 0xC734, 0xC736, -/* 0540 */ 0xC738, 0xC739, 0xC73A, 0xC73B, 0xC73E, 0xC73F, 0xC741, 0xC742, -/* 0548 */ 0xC743, 0xC74B, 0xC74E, 0xC750, 0xC759, 0xC75A, 0xC75B, 0xC75D, -/* 0550 */ 0xC75E, 0xC75F, 0xC769, 0xC76A, 0xC776, 0xC777, 0xC779, 0xC77A, -/* 0558 */ 0xC77B, 0xC77F, 0xC780, 0xC781, 0xC782, 0xC786, 0xC78B, 0xC78C, -/* 0560 */ 0xC78D, 0xC78F, 0xC792, 0xC793, 0xC795, 0xC799, 0xC7AE, 0xC7AF, -/* 0568 */ 0xC7B1, 0xC7B2, 0xC7B3, 0xC7B5, 0xC7B6, 0xC7B7, 0xC7B8, 0xC7B9, -/* 0570 */ 0xC7BA, 0xC7BB, 0xC7BE, 0xC7CA, 0xC7CB, 0xC7CD, 0xC7CF, 0xC7D9, -/* 0578 */ 0xC7DA, 0xC7DB, 0xC7DC, 0xC7E5, 0xC7E6, 0xC7E7, 0xC7E9, 0xC7EA, -/* 0580 */ 0xC7EB, 0xC802, 0xC803, 0xC805, 0xC806, 0xC807, 0xC809, 0xC812, -/* 0588 */ 0xC814, 0xC81E, 0xC81F, 0xC821, 0xC822, 0xC823, 0xC82E, 0xC830, -/* 0590 */ 0xC839, 0xC83A, 0xC83B, 0xC83D, 0xC83E, 0xC83F, 0xC84A, 0xC84B, -/* 0598 */ 0xC872, 0xC873, 0xC875, 0xC876, 0xC877, 0xC879, 0xC882, 0xC884, -/* 05A0 */ 0xC888, 0xC889, 0xC88A, 0xC89E, 0xC8A0, 0xC8A2, 0xC8A3, 0xC8A4, -/* 05A8 */ 0xC8A5, 0xC8A6, 0xC8A7, 0xC8BE, 0xC8BF, 0xC8C0, 0xC8C1, 0xC8C2, -/* 05B0 */ 0xC8C3, 0xC8C5, 0xC8C6, 0xC8C7, 0xC8C9, 0xC8CA, 0xC8CB, 0xC8D6, -/* 05B8 */ 0xC8D8, 0xC8E2, 0xC8E3, 0xC8E5, 0xC8FE, 0xC8FF, 0xC901, 0xC902, -/* 05C0 */ 0xC903, 0xC90E, 0x3000, 0x3001, 0x3002, 0x00B7, 0x2025, 0x2026, -/* 05C8 */ 0x00A8, 0x3003, 0x00AD, 0x2015, 0x2225, 0xFF3C, 0x223C, 0x2018, -/* 05D0 */ 0x2019, 0x201C, 0x201D, 0x3014, 0x3015, 0x00B1, 0x00D7, 0x00F7, -/* 05D8 */ 0x2260, 0x2264, 0x2265, 0x221E, 0x2234, 0x00B0, 0x2032, 0x2033, -/* 05E0 */ 0x2103, 0x212B, 0xFFE0, 0xFFE1, 0xFFE5, 0x2642, 0x2640, 0x2220, -/* 05E8 */ 0x22A5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00A7, 0x203B, -/* 05F0 */ 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, -/* 05F8 */ 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x2192, 0x2190, 0x2191, -/* 0600 */ 0x2193, 0x2194, 0x3013, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, -/* 0608 */ 0x2235, 0x222B, 0x222C, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, -/* 0610 */ 0x2283, 0x222A, 0x2229, 0x2227, 0x2228, 0xFFE2, 0xC952, 0xC953, -/* 0618 */ 0xC955, 0xC956, 0xC957, 0xC96D, 0xC96E, 0xC96F, 0x21D2, 0x21D4, -/* 0620 */ 0x2200, 0x2203, 0x00B4, 0xFF5E, 0x02C7, 0x02D8, 0x02DD, 0x02DA, -/* 0628 */ 0x02D9, 0x00B8, 0x02DB, 0x00A1, 0x00BF, 0x02D0, 0x222E, 0x2211, -/* 0630 */ 0x220F, 0x00A4, 0x2109, 0x2030, 0x25C1, 0x25C0, 0x25B7, 0x25B6, -/* 0638 */ 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663, 0x2299, 0x25C8, -/* 0640 */ 0x25A3, 0x25D0, 0x25D1, 0x2592, 0x25A4, 0x25A5, 0x25A8, 0x25A7, -/* 0648 */ 0x25A6, 0x25A9, 0x2668, 0x260F, 0x260E, 0x261C, 0x261E, 0x00B6, -/* 0650 */ 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196, 0x2198, 0x266D, -/* 0658 */ 0x2669, 0x266A, 0x266C, 0x327F, 0x321C, 0x2116, 0x33C7, 0x2122, -/* 0660 */ 0x33C2, 0x33D8, 0x2121, 0xC971, 0xC972, 0xC973, 0xC98A, 0xC98B, -/* 0668 */ 0xC98D, 0xC98E, 0xC98F, 0xC99A, 0xC99C, 0xC9C2, 0xC9C3, 0xC9C5, -/* 0670 */ 0xC9C6, 0xC9C9, 0xC9D2, 0xC9D4, 0xC9D7, 0xC9D8, 0xC9DB, 0xC9DE, -/* 0678 */ 0xC9DF, 0xC9E1, 0xC9E3, 0xC9E5, 0xC9E6, 0xC9E8, 0xC9E9, 0xC9EA, -/* 0680 */ 0xC9EB, 0xC9EE, 0xC9FA, 0xC9FB, 0xC9FD, 0xC9FE, 0xC9FF, 0xCA01, -/* 0688 */ 0xCA02, 0xCA03, 0xCA04, 0xCA05, 0xCA06, 0xCA07, 0xCA0A, 0xCA15, -/* 0690 */ 0xCA16, 0xCA17, 0xCA26, 0xCA27, 0xCA28, 0xCA4E, 0xCA4F, 0xCA51, -/* 0698 */ 0xCA52, 0xCA53, 0xCA69, 0xCA6A, 0xCA85, 0xCA86, 0xCABE, 0xCABF, -/* 06A0 */ 0xCAC1, 0xCAC2, 0xCAC3, 0xCAC5, 0xCACE, 0xCAD0, 0xCAD2, 0xCAD4, -/* 06A8 */ 0xCAD5, 0xCAD6, 0xCAD7, 0xCAE8, 0xCAE9, 0xCAEA, 0xCAEB, 0xCB09, -/* 06B0 */ 0xCB0A, 0x2500, 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, -/* 06B8 */ 0x252C, 0x2524, 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, -/* 06C0 */ 0x251B, 0x2517, 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, -/* 06C8 */ 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, -/* 06D0 */ 0x2542, 0x2512, 0x2511, 0x251A, 0x2519, 0x2516, 0x2515, 0x250E, -/* 06D8 */ 0x250D, 0x251E, 0x251F, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, -/* 06E0 */ 0x252A, 0x252D, 0x252E, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, -/* 06E8 */ 0x253A, 0x253D, 0x253E, 0x2540, 0x2541, 0xCB11, 0xCB12, 0xCB13, -/* 06F0 */ 0xCB15, 0xCB16, 0xCB17, 0xCB42, 0xCB43, 0xCB44, 0xCB45, 0xCB46, -/* 06F8 */ 0xCB47, 0xCB4A, 0xCB4B, 0xCB4D, 0xCB4E, 0xCB4F, 0xCB5A, 0xCB5B, -/* 0700 */ 0xCB5C, 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33C4, 0x33A3, -/* 0708 */ 0x33A4, 0x33A5, 0x33A6, 0x33CA, 0x338D, 0x338E, 0x338F, 0x33CF, -/* 0710 */ 0x3388, 0x3389, 0x33C8, 0x33A7, 0x33A8, 0x2126, 0x33C0, 0x33C1, -/* 0718 */ 0x338A, 0x338B, 0x338C, 0x33D6, 0x33C5, 0x33AD, 0x33AE, 0x33AF, -/* 0720 */ 0x33DB, 0x33A9, 0x33AA, 0x33AB, 0x33AC, 0x33DD, 0x33D0, 0x33D3, -/* 0728 */ 0x33C3, 0x33C9, 0x33DC, 0x33C6, 0x00C6, 0x00D0, 0x00AA, 0x0126, -/* 0730 */ 0xFFFD, 0x0132, 0xFFFD, 0x013F, 0x0141, 0x00D8, 0x0152, 0x00BA, -/* 0738 */ 0x00DE, 0x0166, 0x014A, 0x00BD, 0x2153, 0x2154, 0x00BC, 0x00BE, -/* 0740 */ 0x215B, 0x215C, 0x215D, 0x215E, 0xCBE0, 0xCBE1, 0xCBE2, 0xCBE3, -/* 0748 */ 0xCBE5, 0xCBE6, 0xCBE8, 0xCC0E, 0xCC0F, 0xCC11, 0xCC12, 0xCC13, -/* 0750 */ 0xCC1E, 0xCC1F, 0xCC20, 0xCC23, 0xCC24, 0x00E6, 0x0111, 0x00F0, -/* 0758 */ 0x0127, 0x0131, 0x0133, 0x0138, 0x0140, 0x0142, 0x00F8, 0x0153, -/* 0760 */ 0x00DF, 0x00FE, 0x0167, 0x014B, 0x0149, 0x00B9, 0x00B2, 0x00B3, -/* 0768 */ 0x2074, 0x207F, 0x2081, 0x2082, 0x2083, 0x2084, 0xCC25, 0xCC26, -/* 0770 */ 0xCC2A, 0xCC2B, 0xCC2D, 0xCC2F, 0xCC46, 0xCC47, 0xCC49, 0xCC4A, -/* 0778 */ 0xCC4B, 0xCC4D, 0xCC4E, 0xCC61, 0xCC62, 0xCC63, 0xCC65, 0xCC67, -/* 0780 */ 0xCC71, 0xCC72, 0xCC73, 0xCC74, 0xCC94, 0xCC95, 0xCC96, 0xCC97, -/* 0788 */ 0xCC9A, 0xCC9B, 0xCC9D, 0xCC9E, 0xCC9F, 0xCCB6, 0xCCB7, 0xCCB9, -/* 0790 */ 0xCCBA, 0xCCBB, 0xCCC6, 0xCCC8, 0xCCD1, 0xCCD2, 0xCCD3, 0xCCED, -/* 0798 */ 0xCCEE, 0xCCEF, 0xCCFE, 0xCCFF, 0xCD00, 0xCD0A, 0xCD0B, 0xCD0D, -/* 07A0 */ 0xCD0E, 0xCD0F, 0xCD1A, 0xCD1C, 0xCD1E, 0xCD1F, 0xCD20, 0xCD21, -/* 07A8 */ 0xCD22, 0xCD23, 0xCD25, 0xCD26, 0xCD27, 0xCD29, 0xCD2A, 0xCD2B, -/* 07B0 */ 0xCD5D, 0xCD5E, 0xCD5F, 0xCD61, 0xCD62, 0xCD63, 0xCD6E, 0xCD70, -/* 07B8 */ 0xCD96, 0xCD97, 0xCD99, 0xCD9A, 0xCD9B, 0xCD9D, 0xCD9E, 0xCD9F, -/* 07C0 */ 0xCDA0, 0xCDA1, 0xCDA2, 0xCDA3, 0xCDA6, 0xCDA8, 0xCDCD, 0xCDCE, -/* 07C8 */ 0xCDCF, 0xCDE9, 0xCDEA, 0xCDEB, 0xCDED, 0xCDEE, 0xCDEF, 0xCDFA, -/* 07D0 */ 0xCDFC, 0xCE03, 0xCE05, 0xCE06, 0xCE07, 0xCE09, 0xCE0A, 0xCE0B, -/* 07D8 */ 0xCE15, 0xCE16, 0xCE17, 0xCE18, 0xCE22, 0xCE23, 0xCE25, 0xCE26, -/* 07E0 */ 0xCE27, 0xCE29, 0xCE2A, 0xCE2B, 0xCE2C, 0xCE2D, 0xCE2E, 0xCE2F, -/* 07E8 */ 0xCE32, 0xCE34, 0xCE5A, 0xCE5B, 0xCE5D, 0xCE5E, 0xCE6A, 0xCE6C, -/* 07F0 */ 0xCE76, 0xCE77, 0xCE79, 0xCE7A, 0xCE7B, 0xCE86, 0xCE88, 0xCE92, -/* 07F8 */ 0xCE93, 0xCE95, 0xCE96, 0xCE97, 0xCE99, 0xCEE6, 0xCEE7, 0xCEE9, -/* 0800 */ 0xCEEA, 0xAC00, 0xAC01, 0xAC04, 0xAC07, 0xAC08, 0xAC09, 0xAC0A, -/* 0808 */ 0xAC20, 0xAC24, 0xAC2C, 0xAC2D, 0xAC2F, 0xAC30, 0xAC31, 0xAC38, -/* 0810 */ 0xAC39, 0xAC3C, 0xAC40, 0xAC4B, 0xAC4D, 0xAC54, 0xAC58, 0xAC5C, -/* 0818 */ 0xAC70, 0xAC71, 0xAC74, 0xAC77, 0xAC78, 0xAC7A, 0xAC80, 0xAC81, -/* 0820 */ 0xAC83, 0xAC84, 0xAC85, 0xAC86, 0xAC89, 0xAC8A, 0xAC8B, 0xAC8C, -/* 0828 */ 0xAC90, 0xAC94, 0xAC9C, 0xAC9D, 0xAC9F, 0xACA0, 0xACA1, 0xACA8, -/* 0830 */ 0xACA9, 0xACAA, 0xACAC, 0xACAF, 0xACB0, 0xACB8, 0xACB9, 0xACBB, -/* 0838 */ 0xACBC, 0xACBD, 0xACC1, 0xACC4, 0xACC8, 0xACCC, 0xACD5, 0xACD7, -/* 0840 */ 0xACE0, 0xACE1, 0xACE4, 0xACE7, 0xACE8, 0xACEA, 0xACEC, 0xACEF, -/* 0848 */ 0xACF0, 0xACF1, 0xACF3, 0xACF5, 0xACF6, 0xACFC, 0xACFD, 0xAD00, -/* 0850 */ 0xAD04, 0xAD06, 0xCF02, 0xCF03, 0xCF05, 0xCF06, 0xCF07, 0xCF12, -/* 0858 */ 0xCF14, 0xCF1D, 0xCF1E, 0xCF1F, 0xCF21, 0xCF22, 0xCF23, 0xCF56, -/* 0860 */ 0xCF57, 0xCF59, 0xCF5A, 0xCF5B, 0xCF66, 0xCF68, 0xCF6A, 0xCF6B, -/* 0868 */ 0xCF6C, 0xAD0C, 0xAD0D, 0xAD0F, 0xAD11, 0xAD18, 0xAD1C, 0xAD20, -/* 0870 */ 0xAD29, 0xAD2C, 0xAD2D, 0xAD34, 0xAD35, 0xAD38, 0xAD3C, 0xAD44, -/* 0878 */ 0xAD45, 0xAD47, 0xAD49, 0xAD50, 0xAD54, 0xAD58, 0xAD61, 0xAD63, -/* 0880 */ 0xAD6C, 0xAD6D, 0xAD70, 0xAD73, 0xAD74, 0xAD75, 0xAD76, 0xAD7B, -/* 0888 */ 0xAD7C, 0xAD7D, 0xAD7F, 0xAD81, 0xAD82, 0xAD88, 0xAD89, 0xAD8C, -/* 0890 */ 0xAD90, 0xAD9C, 0xAD9D, 0xADA4, 0xADB7, 0xADC0, 0xADC1, 0xADC4, -/* 0898 */ 0xADC8, 0xADD0, 0xADD1, 0xADD3, 0xADDC, 0xADE0, 0xADE4, 0xADF8, -/* 08A0 */ 0xADF9, 0xADFC, 0xADFF, 0xAE00, 0xAE01, 0xAE08, 0xAE09, 0xAE0B, -/* 08A8 */ 0xAE0D, 0xAE14, 0xAE30, 0xAE31, 0xAE34, 0xAE37, 0xAE38, 0xAE3A, -/* 08B0 */ 0xAE40, 0xAE41, 0xAE43, 0xAE45, 0xAE46, 0xAE4A, 0xAE4C, 0xAE4D, -/* 08B8 */ 0xAE4E, 0xAE50, 0xAE54, 0xAE56, 0xAE5C, 0xAE5D, 0xAE5F, 0xAE60, -/* 08C0 */ 0xAE61, 0xAE65, 0xAE68, 0xAE69, 0xAE6C, 0xAE70, 0xAE78, 0xCF6D, -/* 08C8 */ 0xCF6E, 0xCF6F, 0xCF72, 0xCF73, 0xCF75, 0xCF76, 0xCF77, 0xCF81, -/* 08D0 */ 0xCF82, 0xCF83, 0xCF84, 0xAE79, 0xAE7B, 0xAE7C, 0xAE7D, 0xAE84, -/* 08D8 */ 0xAE85, 0xAE8C, 0xAEBC, 0xAEBD, 0xAEBE, 0xAEC0, 0xAEC4, 0xAECC, -/* 08E0 */ 0xAECD, 0xAECF, 0xAED0, 0xAED1, 0xAED8, 0xAED9, 0xAEDC, 0xAEE8, -/* 08E8 */ 0xAEEB, 0xAEED, 0xAEF4, 0xAEF8, 0xAEFC, 0xAF07, 0xAF08, 0xAF0D, -/* 08F0 */ 0xAF10, 0xAF2C, 0xAF2D, 0xAF30, 0xAF32, 0xAF34, 0xAF3C, 0xAF3D, -/* 08F8 */ 0xAF3F, 0xAF41, 0xAF42, 0xAF43, 0xAF48, 0xAF49, 0xAF50, 0xAF5C, -/* 0900 */ 0xAF5D, 0xAF64, 0xAF65, 0xAF79, 0xAF80, 0xAF84, 0xAF88, 0xAF90, -/* 0908 */ 0xAF91, 0xAF95, 0xAF9C, 0xAFB8, 0xAFB9, 0xAFBC, 0xAFC0, 0xAFC7, -/* 0910 */ 0xAFC8, 0xAFC9, 0xAFCB, 0xAFCD, 0xAFCE, 0xAFD4, 0xAFDC, 0xAFE8, -/* 0918 */ 0xAFE9, 0xAFF0, 0xAFF1, 0xAFF4, 0xAFF8, 0xB000, 0xB001, 0xB004, -/* 0920 */ 0xB00C, 0xB010, 0xB014, 0xB01C, 0xB01D, 0xB028, 0xB044, 0xB045, -/* 0928 */ 0xB048, 0xB04A, 0xB04C, 0xB04E, 0xB053, 0xB054, 0xB055, 0xB057, -/* 0930 */ 0xB059, 0xCFE2, 0xCFE3, 0xCFE5, 0xCFE6, 0xCFE7, 0xCFE9, 0xCFF2, -/* 0938 */ 0xCFF4, 0xCFFD, 0xCFFE, 0xCFFF, 0xD001, 0xD002, 0xD003, 0xB05D, -/* 0940 */ 0xB07C, 0xB07D, 0xB080, 0xB084, 0xB08C, 0xB08D, 0xB08F, 0xB091, -/* 0948 */ 0xB098, 0xB099, 0xB09A, 0xB09C, 0xB09F, 0xB0A0, 0xB0A1, 0xB0A2, -/* 0950 */ 0xB0A8, 0xB0A9, 0xB0B1, 0xB0B3, 0xB0B4, 0xB0B5, 0xB0B8, 0xB0BC, -/* 0958 */ 0xB0C4, 0xB0C5, 0xB0C7, 0xB0C8, 0xB0C9, 0xB0D0, 0xB0D1, 0xB0D4, -/* 0960 */ 0xB0D8, 0xB0E0, 0xB0E5, 0xB108, 0xB109, 0xB10B, 0xB10C, 0xB110, -/* 0968 */ 0xB112, 0xB113, 0xB118, 0xB119, 0xB11B, 0xB11C, 0xB11D, 0xB123, -/* 0970 */ 0xB124, 0xB125, 0xB128, 0xB12C, 0xB134, 0xB135, 0xB137, 0xB138, -/* 0978 */ 0xB139, 0xB140, 0xB141, 0xB144, 0xB148, 0xB150, 0xB151, 0xB154, -/* 0980 */ 0xB155, 0xB158, 0xB15C, 0xB160, 0xB178, 0xB179, 0xB17C, 0xB180, -/* 0988 */ 0xB182, 0xB188, 0xB189, 0xB18B, 0xB18D, 0xB192, 0xB193, 0xB194, -/* 0990 */ 0xB198, 0xB19C, 0xB1A8, 0xB1CC, 0xB1D0, 0xB1D4, 0xB1DC, 0xB1DD, -/* 0998 */ 0xD036, 0xD037, 0xD039, 0xD03A, 0xD03B, 0xD046, 0xD048, 0xD051, -/* 09A0 */ 0xD052, 0xD053, 0xD055, 0xD056, 0xD057, 0xD06E, 0xD06F, 0xD071, -/* 09A8 */ 0xD072, 0xD073, 0xD07E, 0xD07F, 0xD080, 0xB1DF, 0xB1E8, 0xB1E9, -/* 09B0 */ 0xB1EC, 0xB1F0, 0xB1F9, 0xB1FB, 0xB1FD, 0xB204, 0xB205, 0xB208, -/* 09B8 */ 0xB20B, 0xB20C, 0xB214, 0xB215, 0xB217, 0xB219, 0xB220, 0xB234, -/* 09C0 */ 0xB23C, 0xB258, 0xB25C, 0xB260, 0xB268, 0xB269, 0xB274, 0xB275, -/* 09C8 */ 0xB27C, 0xB284, 0xB285, 0xB289, 0xB290, 0xB291, 0xB294, 0xB298, -/* 09D0 */ 0xB299, 0xB29A, 0xB2A0, 0xB2A1, 0xB2A3, 0xB2A5, 0xB2A6, 0xB2AA, -/* 09D8 */ 0xB2AC, 0xB2B0, 0xB2B4, 0xB2C8, 0xB2C9, 0xB2CC, 0xB2D0, 0xB2D2, -/* 09E0 */ 0xB2D8, 0xB2D9, 0xB2DB, 0xB2DD, 0xB2E2, 0xB2E4, 0xB2E5, 0xB2E6, -/* 09E8 */ 0xB2E8, 0xB2F3, 0xB2F4, 0xB2F5, 0xB2FF, 0xB300, 0xB301, 0xB304, -/* 09F0 */ 0xB308, 0xB310, 0xB311, 0xB313, 0xB314, 0xB315, 0xB31C, 0xB354, -/* 09F8 */ 0xB355, 0xB356, 0xB358, 0xB35B, 0xB35C, 0xB35E, 0xB35F, 0xB364, -/* 0A00 */ 0xB365, 0xD0A6, 0xD0A7, 0xD0A9, 0xD0AA, 0xD0AB, 0xD0B3, 0xD0B6, -/* 0A08 */ 0xD0B8, 0xD0C2, 0xD0C3, 0xD0C5, 0xD0C6, 0xD0C7, 0xD0DB, 0xD0DE, -/* 0A10 */ 0xD0DF, 0xD0E1, 0xD0E2, 0xD0E3, 0xB367, 0xB369, 0xB36B, 0xB36E, -/* 0A18 */ 0xB370, 0xB371, 0xB374, 0xB378, 0xB380, 0xB381, 0xB383, 0xB384, -/* 0A20 */ 0xB385, 0xB38C, 0xB390, 0xB394, 0xB3A0, 0xB3A1, 0xB3A8, 0xB3AC, -/* 0A28 */ 0xB3C4, 0xB3C5, 0xB3C8, 0xB3CB, 0xB3CC, 0xB3CE, 0xB3D0, 0xB3D4, -/* 0A30 */ 0xB3D5, 0xB3D7, 0xB3D9, 0xB3DB, 0xB3DD, 0xB3E0, 0xB3E4, 0xB3E8, -/* 0A38 */ 0xB3FC, 0xB410, 0xB418, 0xB41C, 0xB420, 0xB428, 0xB429, 0xB42B, -/* 0A40 */ 0xB434, 0xB450, 0xB451, 0xB454, 0xB458, 0xB460, 0xB461, 0xB463, -/* 0A48 */ 0xB465, 0xB46C, 0xB480, 0xB488, 0xB49D, 0xB4A4, 0xB4A8, 0xB4AC, -/* 0A50 */ 0xB4B5, 0xB4B7, 0xB4B9, 0xB4C0, 0xB4C4, 0xB4C8, 0xB4D0, 0xB4D5, -/* 0A58 */ 0xB4DC, 0xB4DD, 0xB4E0, 0xB4E3, 0xB4E4, 0xB4E6, 0xB4EC, 0xB4ED, -/* 0A60 */ 0xB4EF, 0xB4F1, 0xB4F8, 0xB514, 0xB515, 0xB518, 0xB51B, 0xB51C, -/* 0A68 */ 0xB524, 0xB525, 0xB527, 0xB528, 0xB529, 0xB52A, 0xB530, 0xB531, -/* 0A70 */ 0xB534, 0xB538, 0xD132, 0xD133, 0xD135, 0xD136, 0xD137, 0xD139, -/* 0A78 */ 0xD13B, 0xD13C, 0xD13D, 0xD13E, 0xD13F, 0xD142, 0xD14E, 0xD14F, -/* 0A80 */ 0xD151, 0xD152, 0xD153, 0xD15E, 0xD160, 0xD169, 0xD16A, 0xD16B, -/* 0A88 */ 0xD16D, 0xB540, 0xB541, 0xB543, 0xB544, 0xB545, 0xB54B, 0xB54C, -/* 0A90 */ 0xB54D, 0xB550, 0xB554, 0xB55C, 0xB55D, 0xB55F, 0xB560, 0xB561, -/* 0A98 */ 0xB5A0, 0xB5A1, 0xB5A4, 0xB5A8, 0xB5AA, 0xB5AB, 0xB5B0, 0xB5B1, -/* 0AA0 */ 0xB5B3, 0xB5B4, 0xB5B5, 0xB5BB, 0xB5BC, 0xB5BD, 0xB5C0, 0xB5C4, -/* 0AA8 */ 0xB5CC, 0xB5CD, 0xB5CF, 0xB5D0, 0xB5D1, 0xB5D8, 0xB5EC, 0xB610, -/* 0AB0 */ 0xB611, 0xB614, 0xB618, 0xB625, 0xB62C, 0xB634, 0xB648, 0xB664, -/* 0AB8 */ 0xB668, 0xB69C, 0xB69D, 0xB6A0, 0xB6A4, 0xB6AB, 0xB6AC, 0xB6B1, -/* 0AC0 */ 0xB6D4, 0xB6F0, 0xB6F4, 0xB6F8, 0xB700, 0xB701, 0xB705, 0xB728, -/* 0AC8 */ 0xB729, 0xB72C, 0xB72F, 0xB730, 0xB738, 0xB739, 0xB73B, 0xB744, -/* 0AD0 */ 0xB748, 0xB74C, 0xB754, 0xB755, 0xB760, 0xB764, 0xB768, 0xB770, -/* 0AD8 */ 0xB771, 0xB773, 0xB775, 0xB77C, 0xB77D, 0xB780, 0xB784, 0xB78C, -/* 0AE0 */ 0xB78D, 0xB78F, 0xB790, 0xB791, 0xB792, 0xB796, 0xB797, 0xD185, -/* 0AE8 */ 0xD186, 0xD187, 0xD189, 0xD18A, 0xD1A2, 0xD1A3, 0xD1A5, 0xD1A6, -/* 0AF0 */ 0xD1A7, 0xD1B2, 0xD1B4, 0xD1B6, 0xD1B7, 0xD1B8, 0xD1B9, 0xD1BB, -/* 0AF8 */ 0xD1BD, 0xD1BE, 0xD1BF, 0xB798, 0xB799, 0xB79C, 0xB7A0, 0xB7A8, -/* 0B00 */ 0xB7A9, 0xB7AB, 0xB7AC, 0xB7AD, 0xB7B4, 0xB7B5, 0xB7B8, 0xB7C7, -/* 0B08 */ 0xB7C9, 0xB7EC, 0xB7ED, 0xB7F0, 0xB7F4, 0xB7FC, 0xB7FD, 0xB7FF, -/* 0B10 */ 0xB800, 0xB801, 0xB807, 0xB808, 0xB809, 0xB80C, 0xB810, 0xB818, -/* 0B18 */ 0xB819, 0xB81B, 0xB81D, 0xB824, 0xB825, 0xB828, 0xB82C, 0xB834, -/* 0B20 */ 0xB835, 0xB837, 0xB838, 0xB839, 0xB840, 0xB844, 0xB851, 0xB853, -/* 0B28 */ 0xB85C, 0xB85D, 0xB860, 0xB864, 0xB86C, 0xB86D, 0xB86F, 0xB871, -/* 0B30 */ 0xB878, 0xB87C, 0xB88D, 0xB8A8, 0xB8B0, 0xB8B4, 0xB8B8, 0xB8C0, -/* 0B38 */ 0xB8C1, 0xB8C3, 0xB8C5, 0xB8CC, 0xB8D0, 0xB8D4, 0xB8DD, 0xB8DF, -/* 0B40 */ 0xB8E1, 0xB8E8, 0xB8E9, 0xB8EC, 0xB8F0, 0xB8F8, 0xB8F9, 0xB8FB, -/* 0B48 */ 0xB8FD, 0xB904, 0xB918, 0xB920, 0xB93C, 0xB93D, 0xB940, 0xB944, -/* 0B50 */ 0xB94C, 0xB94F, 0xB951, 0xB958, 0xB959, 0xB95C, 0xB960, 0xB968, -/* 0B58 */ 0xB969, 0xD1F5, 0xD1F6, 0xD1F7, 0xB96B, 0xB96D, 0xB974, 0xB975, -/* 0B60 */ 0xB978, 0xB97C, 0xB984, 0xB985, 0xB987, 0xB989, 0xB98A, 0xB98D, -/* 0B68 */ 0xB98E, 0xB9AC, 0xB9AD, 0xB9B0, 0xB9B4, 0xB9BC, 0xB9BD, 0xB9BF, -/* 0B70 */ 0xB9C1, 0xB9C8, 0xB9C9, 0xB9CC, 0xB9D8, 0xB9D9, 0xB9DB, 0xB9DD, -/* 0B78 */ 0xB9DE, 0xB9E1, 0xB9E3, 0xB9E4, 0xB9E5, 0xB9E8, 0xB9EC, 0xB9F4, -/* 0B80 */ 0xB9F5, 0xB9F7, 0xB9F8, 0xB9F9, 0xB9FA, 0xBA00, 0xBA01, 0xBA08, -/* 0B88 */ 0xBA15, 0xBA38, 0xBA39, 0xBA3C, 0xBA40, 0xBA42, 0xBA48, 0xBA49, -/* 0B90 */ 0xBA4B, 0xBA4D, 0xBA4E, 0xBA53, 0xBA54, 0xBA55, 0xBA58, 0xBA5C, -/* 0B98 */ 0xBA64, 0xBA65, 0xBA67, 0xBA68, 0xBA69, 0xBA70, 0xBA71, 0xBA74, -/* 0BA0 */ 0xBA78, 0xBA83, 0xBA84, 0xBA85, 0xBA87, 0xBA8C, 0xBAA8, 0xBAA9, -/* 0BA8 */ 0xBAAB, 0xBAAC, 0xBAB0, 0xBAB2, 0xBAB8, 0xBAB9, 0xBABB, 0xBABD, -/* 0BB0 */ 0xBAC4, 0xBAC8, 0xBAD8, 0xBAD9, 0xBAFC, 0xD22A, 0xD22B, 0xD22E, -/* 0BB8 */ 0xD22F, 0xD231, 0xD232, 0xD233, 0xD23E, 0xD240, 0xD249, 0xD24A, -/* 0BC0 */ 0xD24B, 0xD24C, 0xD265, 0xD266, 0xD267, 0xD268, 0xD282, 0xD283, -/* 0BC8 */ 0xD285, 0xD286, 0xD287, 0xD289, 0xD28A, 0xD28B, 0xD28C, 0xBB00, -/* 0BD0 */ 0xBB04, 0xBB0D, 0xBB0F, 0xBB11, 0xBB18, 0xBB1C, 0xBB20, 0xBB29, -/* 0BD8 */ 0xBB2B, 0xBB34, 0xBB35, 0xBB36, 0xBB38, 0xBB3B, 0xBB3C, 0xBB3D, -/* 0BE0 */ 0xBB3E, 0xBB44, 0xBB45, 0xBB47, 0xBB49, 0xBB4D, 0xBB4F, 0xBB50, -/* 0BE8 */ 0xBB54, 0xBB58, 0xBB61, 0xBB63, 0xBB6C, 0xBB88, 0xBB8C, 0xBB90, -/* 0BF0 */ 0xBBA4, 0xBBA8, 0xBBAC, 0xBBB4, 0xBBB7, 0xBBC0, 0xBBC4, 0xBBC8, -/* 0BF8 */ 0xBBD0, 0xBBD3, 0xBBF8, 0xBBF9, 0xBBFC, 0xBBFF, 0xBC00, 0xBC02, -/* 0C00 */ 0xBC08, 0xBC09, 0xBC0B, 0xBC0C, 0xBC0D, 0xBC0F, 0xBC11, 0xBC24, -/* 0C08 */ 0xBC25, 0xBC27, 0xBC29, 0xBC2D, 0xBC30, 0xBC31, 0xBC34, 0xBC38, -/* 0C10 */ 0xBC40, 0xBC41, 0xBC43, 0xBC44, 0xBC45, 0xBC49, 0xBC4C, 0xBC4D, -/* 0C18 */ 0xBC50, 0xBC5D, 0xBC84, 0xBC85, 0xBC88, 0xBC8B, 0xBC8C, 0xBC8E, -/* 0C20 */ 0xBC94, 0xBC95, 0xBC97, 0xD28D, 0xD28E, 0xD28F, 0xD292, 0xD293, -/* 0C28 */ 0xD294, 0xD29D, 0xD29E, 0xD29F, 0xD2A1, 0xD2A2, 0xD2A3, 0xD2AE, -/* 0C30 */ 0xD2AF, 0xD2B0, 0xD2BA, 0xD2BB, 0xD2BD, 0xD2BE, 0xD2C1, 0xD2D2, -/* 0C38 */ 0xD2D3, 0xD2D5, 0xD2D6, 0xD2D7, 0xD2D9, 0xD2DA, 0xD2DB, 0xD2F2, -/* 0C40 */ 0xD2F3, 0xD2F5, 0xD2F6, 0xD2F7, 0xD2F9, 0xD2FA, 0xBC99, 0xBC9A, -/* 0C48 */ 0xBCA0, 0xBCA1, 0xBCA4, 0xBCA7, 0xBCA8, 0xBCB0, 0xBCB1, 0xBCB3, -/* 0C50 */ 0xBCB4, 0xBCB5, 0xBCBC, 0xBCBD, 0xBCC0, 0xBCC4, 0xBCCD, 0xBCCF, -/* 0C58 */ 0xBCD0, 0xBCD1, 0xBCD5, 0xBCD8, 0xBCDC, 0xBCF4, 0xBCF5, 0xBCF6, -/* 0C60 */ 0xBCF8, 0xBCFC, 0xBD04, 0xBD05, 0xBD07, 0xBD09, 0xBD10, 0xBD14, -/* 0C68 */ 0xBD24, 0xBD2C, 0xBD40, 0xBD48, 0xBD49, 0xBD4C, 0xBD50, 0xBD58, -/* 0C70 */ 0xBD59, 0xBD64, 0xBD68, 0xBD80, 0xBD81, 0xBD84, 0xBD87, 0xBD88, -/* 0C78 */ 0xBD89, 0xBD8A, 0xBD90, 0xBD91, 0xBD93, 0xBD95, 0xBD99, 0xBD9A, -/* 0C80 */ 0xBD9C, 0xBDA4, 0xBDB0, 0xBDB8, 0xBDD4, 0xBDD5, 0xBDD8, 0xBDDC, -/* 0C88 */ 0xBDE9, 0xBDF0, 0xBDF4, 0xBDF8, 0xBE00, 0xBE03, 0xBE05, 0xBE0C, -/* 0C90 */ 0xBE0D, 0xBE10, 0xBE14, 0xBE1C, 0xBE1D, 0xBE1F, 0xBE44, 0xBE45, -/* 0C98 */ 0xBE48, 0xBE4C, 0xBE4E, 0xBE54, 0xBE55, 0xBE57, 0xBE59, 0xBE5A, -/* 0CA0 */ 0xBE5B, 0xBE60, 0xBE61, 0xBE64, 0xD302, 0xD304, 0xD30F, 0xD311, -/* 0CA8 */ 0xD312, 0xD313, 0xD315, 0xD31E, 0xD322, 0xD323, 0xD324, 0xD326, -/* 0CB0 */ 0xD327, 0xD32A, 0xD32B, 0xD32D, 0xD32E, 0xD32F, 0xD346, 0xD347, -/* 0CB8 */ 0xD348, 0xD349, 0xBE68, 0xBE6A, 0xBE70, 0xBE71, 0xBE73, 0xBE74, -/* 0CC0 */ 0xBE75, 0xBE7B, 0xBE7C, 0xBE7D, 0xBE80, 0xBE84, 0xBE8C, 0xBE8D, -/* 0CC8 */ 0xBE8F, 0xBE90, 0xBE91, 0xBE98, 0xBE99, 0xBEA8, 0xBED0, 0xBED1, -/* 0CD0 */ 0xBED4, 0xBED7, 0xBED8, 0xBEE0, 0xBEE3, 0xBEE4, 0xBEE5, 0xBEEC, -/* 0CD8 */ 0xBF01, 0xBF08, 0xBF09, 0xBF18, 0xBF19, 0xBF1B, 0xBF1C, 0xBF1D, -/* 0CE0 */ 0xBF40, 0xBF41, 0xBF44, 0xBF48, 0xBF50, 0xBF51, 0xBF55, 0xBF94, -/* 0CE8 */ 0xBFB0, 0xBFC5, 0xBFCC, 0xBFCD, 0xBFD0, 0xBFD4, 0xBFDC, 0xBFDF, -/* 0CF0 */ 0xBFE1, 0xC03C, 0xC051, 0xC058, 0xC05C, 0xC060, 0xC068, 0xC069, -/* 0CF8 */ 0xC090, 0xC091, 0xC094, 0xC098, 0xC0A0, 0xC0A1, 0xC0A3, 0xC0A5, -/* 0D00 */ 0xC0AC, 0xC0AD, 0xC0AF, 0xC0B0, 0xC0B3, 0xC0B4, 0xC0B5, 0xC0B6, -/* 0D08 */ 0xC0BC, 0xC0BD, 0xC0BF, 0xC0C0, 0xC0C1, 0xC0C5, 0xC0C8, 0xC0C9, -/* 0D10 */ 0xC0CC, 0xC0D0, 0xC0D8, 0xC0D9, 0xC0DB, 0xC0DC, 0xC0DD, 0xC0E4, -/* 0D18 */ 0xD37E, 0xD37F, 0xD381, 0xD382, 0xD383, 0xD385, 0xD386, 0xD387, -/* 0D20 */ 0xD388, 0xD389, 0xD38A, 0xD38B, 0xD38E, 0xD39A, 0xD39B, 0xD39D, -/* 0D28 */ 0xD39E, 0xD39F, 0xD3AA, 0xD3AC, 0xD3AE, 0xD3B5, 0xD3B6, 0xD3B7, -/* 0D30 */ 0xD3B9, 0xD3BA, 0xD3BB, 0xD3C6, 0xD3C7, 0xC0E5, 0xC0E8, 0xC0EC, -/* 0D38 */ 0xC0F4, 0xC0F5, 0xC0F7, 0xC0F9, 0xC100, 0xC104, 0xC108, 0xC110, -/* 0D40 */ 0xC115, 0xC123, 0xC124, 0xC126, 0xC127, 0xC12C, 0xC12D, 0xC12F, -/* 0D48 */ 0xC130, 0xC131, 0xC136, 0xC138, 0xC139, 0xC13C, 0xC140, 0xC148, -/* 0D50 */ 0xC149, 0xC14B, 0xC14C, 0xC14D, 0xC154, 0xC155, 0xC158, 0xC15C, -/* 0D58 */ 0xC164, 0xC165, 0xC167, 0xC168, 0xC169, 0xC170, 0xC174, 0xC178, -/* 0D60 */ 0xC185, 0xC18C, 0xC18D, 0xC18E, 0xC190, 0xC194, 0xC196, 0xC19C, -/* 0D68 */ 0xC19D, 0xC19F, 0xC1A1, 0xC1A5, 0xC1A8, 0xC1A9, 0xC1AC, 0xC1B0, -/* 0D70 */ 0xC1BD, 0xC1C4, 0xC1C8, 0xC1CC, 0xC1D4, 0xC1D7, 0xC1D8, 0xC1E0, -/* 0D78 */ 0xC1E4, 0xC1E8, 0xC1F0, 0xC1F1, 0xC1F3, 0xC1FC, 0xC1FD, 0xC200, -/* 0D80 */ 0xC204, 0xC20C, 0xC20D, 0xC20F, 0xC211, 0xC218, 0xC219, 0xC21C, -/* 0D88 */ 0xC21F, 0xC220, 0xC228, 0xC229, 0xC22B, 0xC22D, 0xD3EE, 0xD3EF, -/* 0D90 */ 0xD3F1, 0xD3F2, 0xD3F3, 0xD3F5, 0xD3F6, 0xD3F7, 0xD3F8, 0xD3F9, -/* 0D98 */ 0xD3FA, 0xD3FB, 0xD3FE, 0xD400, 0xC22F, 0xC231, 0xC232, 0xC234, -/* 0DA0 */ 0xC248, 0xC250, 0xC251, 0xC254, 0xC258, 0xC260, 0xC265, 0xC26C, -/* 0DA8 */ 0xC26D, 0xC270, 0xC274, 0xC27C, 0xC27D, 0xC27F, 0xC281, 0xC288, -/* 0DB0 */ 0xC289, 0xC290, 0xC298, 0xC29B, 0xC29D, 0xC2A4, 0xC2A5, 0xC2A8, -/* 0DB8 */ 0xC2AC, 0xC2AD, 0xC2B4, 0xC2B5, 0xC2B7, 0xC2B9, 0xC2DC, 0xC2DD, -/* 0DC0 */ 0xC2E0, 0xC2E3, 0xC2E4, 0xC2EB, 0xC2EC, 0xC2ED, 0xC2EF, 0xC2F1, -/* 0DC8 */ 0xC2F6, 0xC2F8, 0xC2F9, 0xC2FB, 0xC2FC, 0xC300, 0xC308, 0xC309, -/* 0DD0 */ 0xC30C, 0xC30D, 0xC313, 0xC314, 0xC315, 0xC318, 0xC31C, 0xC324, -/* 0DD8 */ 0xC325, 0xC328, 0xC329, 0xC345, 0xC368, 0xC369, 0xC36C, 0xC370, -/* 0DE0 */ 0xC372, 0xC378, 0xC379, 0xC37C, 0xC37D, 0xC384, 0xC388, 0xC38C, -/* 0DE8 */ 0xC3C0, 0xC3D8, 0xC3D9, 0xC3DC, 0xC3DF, 0xC3E0, 0xC3E2, 0xC3E8, -/* 0DF0 */ 0xC3E9, 0xC3ED, 0xC3F4, 0xC3F5, 0xC3F8, 0xC408, 0xC410, 0xC424, -/* 0DF8 */ 0xC42C, 0xC430, 0xD441, 0xD442, 0xD443, 0xD45D, 0xD45E, 0xD45F, -/* 0E00 */ 0xD461, 0xD462, 0xD463, 0xD46E, 0xD470, 0xD471, 0xD472, 0xD47A, -/* 0E08 */ 0xD47B, 0xD47D, 0xD47E, 0xD481, 0xD48A, 0xD48C, 0xC434, 0xC43C, -/* 0E10 */ 0xC43D, 0xC448, 0xC464, 0xC465, 0xC468, 0xC46C, 0xC474, 0xC475, -/* 0E18 */ 0xC479, 0xC480, 0xC494, 0xC49C, 0xC4B8, 0xC4BC, 0xC4E9, 0xC4F0, -/* 0E20 */ 0xC4F1, 0xC4F4, 0xC4F8, 0xC4FA, 0xC4FF, 0xC500, 0xC501, 0xC50C, -/* 0E28 */ 0xC510, 0xC514, 0xC51C, 0xC528, 0xC529, 0xC52C, 0xC530, 0xC538, -/* 0E30 */ 0xC539, 0xC53B, 0xC53D, 0xC544, 0xC545, 0xC548, 0xC549, 0xC54A, -/* 0E38 */ 0xC54C, 0xC54D, 0xC54E, 0xC553, 0xC554, 0xC555, 0xC557, 0xC558, -/* 0E40 */ 0xC559, 0xC55D, 0xC55E, 0xC560, 0xC561, 0xC564, 0xC568, 0xC570, -/* 0E48 */ 0xC571, 0xC573, 0xC574, 0xC575, 0xC57C, 0xC57D, 0xC580, 0xC584, -/* 0E50 */ 0xC587, 0xC58C, 0xC58D, 0xC58F, 0xC591, 0xC595, 0xC597, 0xC598, -/* 0E58 */ 0xC59C, 0xC5A0, 0xC5A9, 0xC5B4, 0xC5B5, 0xC5B8, 0xC5B9, 0xC5BB, -/* 0E60 */ 0xC5BC, 0xC5BD, 0xC5BE, 0xC5CC, 0xC5CE, 0xD4CD, 0xD4CE, 0xD4CF, -/* 0E68 */ 0xD4D1, 0xD4D2, 0xD4D3, 0xD4D5, 0xD4DD, 0xD4DE, 0xD4E9, 0xD4EA, -/* 0E70 */ 0xD4EB, 0xD4ED, 0xD4EE, 0xD4EF, 0xD4F9, 0xD4FA, 0xD4FC, 0xC5D0, -/* 0E78 */ 0xC5D1, 0xC5D4, 0xC5D8, 0xC5E0, 0xC5E1, 0xC5E3, 0xC5E5, 0xC5EC, -/* 0E80 */ 0xC5ED, 0xC5EE, 0xC5F0, 0xC5F4, 0xC5F6, 0xC5F7, 0xC605, 0xC606, -/* 0E88 */ 0xC607, 0xC608, 0xC60C, 0xC610, 0xC618, 0xC619, 0xC61B, 0xC61C, -/* 0E90 */ 0xC624, 0xC625, 0xC628, 0xC62C, 0xC62D, 0xC62E, 0xC630, 0xC633, -/* 0E98 */ 0xC634, 0xC635, 0xC637, 0xC639, 0xC63B, 0xC640, 0xC641, 0xC644, -/* 0EA0 */ 0xC648, 0xC650, 0xC651, 0xC653, 0xC654, 0xC655, 0xC65C, 0xC65D, -/* 0EA8 */ 0xC660, 0xC66C, 0xC66F, 0xC671, 0xC678, 0xC679, 0xC67C, 0xC680, -/* 0EB0 */ 0xC688, 0xC689, 0xC68B, 0xC68D, 0xC694, 0xC695, 0xC698, 0xC69C, -/* 0EB8 */ 0xC6A4, 0xC6A5, 0xC6A7, 0xC6A9, 0xC6B0, 0xC6B1, 0xC6B4, 0xC6B8, -/* 0EC0 */ 0xC6B9, 0xC6BA, 0xC6C0, 0xC6C1, 0xC6C3, 0xC6C5, 0xC6CC, 0xC6CD, -/* 0EC8 */ 0xC6D0, 0xC6D4, 0xC6DC, 0xC6DD, 0xC6E0, 0xC6E1, 0xC6E8, 0xD505, -/* 0ED0 */ 0xD506, 0xD507, 0xD509, 0xD50A, 0xD50B, 0xD538, 0xD539, 0xD53A, -/* 0ED8 */ 0xD53B, 0xD53E, 0xD53F, 0xD541, 0xD542, 0xD543, 0xD54E, 0xD550, -/* 0EE0 */ 0xD55A, 0xD55B, 0xD55D, 0xD55E, 0xD55F, 0xD561, 0xD562, 0xD563, -/* 0EE8 */ 0xC6E9, 0xC6EC, 0xC6F0, 0xC6F8, 0xC6F9, 0xC6FD, 0xC704, 0xC705, -/* 0EF0 */ 0xC708, 0xC70C, 0xC714, 0xC715, 0xC717, 0xC719, 0xC720, 0xC721, -/* 0EF8 */ 0xC724, 0xC728, 0xC730, 0xC731, 0xC733, 0xC735, 0xC737, 0xC73C, -/* 0F00 */ 0xC73D, 0xC740, 0xC744, 0xC74A, 0xC74C, 0xC74D, 0xC74F, 0xC75C, -/* 0F08 */ 0xC760, 0xC768, 0xC76B, 0xC774, 0xC775, 0xC778, 0xC77C, 0xC77D, -/* 0F10 */ 0xC77E, 0xC783, 0xC784, 0xC785, 0xC787, 0xC788, 0xC789, 0xC78A, -/* 0F18 */ 0xC78E, 0xC790, 0xC791, 0xC794, 0xC796, 0xC797, 0xC798, 0xC79A, -/* 0F20 */ 0xC7A0, 0xC7A1, 0xC7A3, 0xC7A4, 0xC7A5, 0xC7A6, 0xC7AC, 0xC7AD, -/* 0F28 */ 0xC7B0, 0xC7B4, 0xC7BC, 0xC7BD, 0xC7BF, 0xC7C0, 0xC7C1, 0xC7C8, -/* 0F30 */ 0xC7C9, 0xC7CC, 0xC7CE, 0xC7D0, 0xC7D8, 0xC7DD, 0xC7E4, 0xC7E8, -/* 0F38 */ 0xC7EC, 0xC800, 0xC801, 0xC804, 0xC808, 0xC80A, 0xD564, 0xD566, -/* 0F40 */ 0xD567, 0xD56A, 0xD56C, 0xD576, 0xD577, 0xD579, 0xD57A, 0xD57B, -/* 0F48 */ 0xD586, 0xD58A, 0xD58B, 0xD58C, 0xD58D, 0xD58E, 0xD58F, 0xD5A6, -/* 0F50 */ 0xD5A7, 0xC810, 0xC811, 0xC813, 0xC815, 0xC816, 0xC81C, 0xC81D, -/* 0F58 */ 0xC820, 0xC824, 0xC82C, 0xC82D, 0xC82F, 0xC831, 0xC838, 0xC83C, -/* 0F60 */ 0xC840, 0xC848, 0xC849, 0xC84C, 0xC84D, 0xC854, 0xC870, 0xC871, -/* 0F68 */ 0xC874, 0xC878, 0xC87A, 0xC880, 0xC881, 0xC883, 0xC885, 0xC886, -/* 0F70 */ 0xC887, 0xC88B, 0xC88C, 0xC88D, 0xC894, 0xC89D, 0xC89F, 0xC8A1, -/* 0F78 */ 0xC8A8, 0xC8BC, 0xC8BD, 0xC8C4, 0xC8C8, 0xC8CC, 0xC8D4, 0xC8D5, -/* 0F80 */ 0xC8D7, 0xC8D9, 0xC8E0, 0xC8E1, 0xC8E4, 0xC8F5, 0xC8FC, 0xC8FD, -/* 0F88 */ 0xC900, 0xC904, 0xC905, 0xC906, 0xC90C, 0xC90D, 0xC90F, 0xC911, -/* 0F90 */ 0xC918, 0xC92C, 0xC934, 0xC950, 0xC951, 0xC954, 0xC958, 0xC960, -/* 0F98 */ 0xC961, 0xC963, 0xC96C, 0xC970, 0xC974, 0xC97C, 0xC988, 0xC989, -/* 0FA0 */ 0xC98C, 0xC990, 0xC998, 0xC999, 0xC99B, 0xC99D, 0xC9C0, 0xC9C1, -/* 0FA8 */ 0xC9C4, 0xC9C7, 0xC9C8, 0xC9CA, 0xC9D0, 0xC9D1, 0xC9D3, 0xD5CA, -/* 0FB0 */ 0xD5CB, 0xD5CD, 0xD5CE, 0xD5CF, 0xD5D1, 0xD5DA, 0xD5DC, 0xD5E6, -/* 0FB8 */ 0xD5E7, 0xD5E9, 0xD5EA, 0xD5EB, 0xD5ED, 0xD5EE, 0xD5F6, 0xD5F8, -/* 0FC0 */ 0xD602, 0xD603, 0xD605, 0xD606, 0xD607, 0xD61D, 0xD61E, 0xD61F, -/* 0FC8 */ 0xD621, 0xD622, 0xD623, 0xD63A, 0xD63B, 0xC9D5, 0xC9D6, 0xC9D9, -/* 0FD0 */ 0xC9DA, 0xC9DC, 0xC9DD, 0xC9E0, 0xC9E2, 0xC9E4, 0xC9E7, 0xC9EC, -/* 0FD8 */ 0xC9ED, 0xC9EF, 0xC9F0, 0xC9F1, 0xC9F8, 0xC9F9, 0xC9FC, 0xCA00, -/* 0FE0 */ 0xCA08, 0xCA09, 0xCA0B, 0xCA0C, 0xCA0D, 0xCA14, 0xCA18, 0xCA29, -/* 0FE8 */ 0xCA4C, 0xCA4D, 0xCA50, 0xCA54, 0xCA5C, 0xCA5D, 0xCA5F, 0xCA60, -/* 0FF0 */ 0xCA61, 0xCA68, 0xCA7D, 0xCA84, 0xCA98, 0xCABC, 0xCABD, 0xCAC0, -/* 0FF8 */ 0xCAC4, 0xCACC, 0xCACD, 0xCACF, 0xCAD1, 0xCAD3, 0xCAD8, 0xCAD9, -/* 1000 */ 0xCAE0, 0xCAEC, 0xCAF4, 0xCB08, 0xCB10, 0xCB14, 0xCB18, 0xCB20, -/* 1008 */ 0xCB21, 0xCB41, 0xCB48, 0xCB49, 0xCB4C, 0xCB50, 0xCB58, 0xCB59, -/* 1010 */ 0xCB5D, 0xCB64, 0xCB78, 0xCB79, 0xCB9C, 0xCBB8, 0xCBD4, 0xCBE4, -/* 1018 */ 0xCBE7, 0xCBE9, 0xCC0C, 0xCC0D, 0xCC10, 0xCC14, 0xCC1C, 0xCC1D, -/* 1020 */ 0xCC21, 0xCC22, 0xCC27, 0xCC28, 0xCC29, 0xCC2C, 0xCC2E, 0xCC30, -/* 1028 */ 0xCC38, 0xCC39, 0xCC3B, 0xD63D, 0xD63E, 0xD63F, 0xD641, 0xD642, -/* 1030 */ 0xD643, 0xD644, 0xD646, 0xD647, 0xD64A, 0xD64C, 0xD64E, 0xD64F, -/* 1038 */ 0xD650, 0xD652, 0xD653, 0xD656, 0xD657, 0xD659, 0xD65A, 0xD65B, -/* 1040 */ 0xD672, 0xD673, 0xD681, 0xD682, 0xD684, 0xD68E, 0xD68F, 0xD691, -/* 1048 */ 0xD692, 0xD693, 0xD69E, 0xD6A0, 0xD6A9, 0xD6AA, 0xCC3C, 0xCC3D, -/* 1050 */ 0xCC3E, 0xCC44, 0xCC45, 0xCC48, 0xCC4C, 0xCC54, 0xCC55, 0xCC57, -/* 1058 */ 0xCC58, 0xCC59, 0xCC60, 0xCC64, 0xCC66, 0xCC68, 0xCC70, 0xCC75, -/* 1060 */ 0xCC98, 0xCC99, 0xCC9C, 0xCCA0, 0xCCA8, 0xCCA9, 0xCCAB, 0xCCAC, -/* 1068 */ 0xCCAD, 0xCCB4, 0xCCB5, 0xCCB8, 0xCCBC, 0xCCC4, 0xCCC5, 0xCCC7, -/* 1070 */ 0xCCC9, 0xCCD0, 0xCCD4, 0xCCE4, 0xCCEC, 0xCCF0, 0xCD01, 0xCD08, -/* 1078 */ 0xCD09, 0xCD0C, 0xCD10, 0xCD18, 0xCD19, 0xCD1B, 0xCD1D, 0xCD24, -/* 1080 */ 0xCD28, 0xCD2C, 0xCD39, 0xCD5C, 0xCD60, 0xCD64, 0xCD6C, 0xCD6D, -/* 1088 */ 0xCD6F, 0xCD71, 0xCD78, 0xCD88, 0xCD94, 0xCD95, 0xCD98, 0xCD9C, -/* 1090 */ 0xCDA4, 0xCDA5, 0xCDA7, 0xCDA9, 0xCDB0, 0xCDC4, 0xCDCC, 0xCDD0, -/* 1098 */ 0xCDE8, 0xCDEC, 0xCDF0, 0xCDF8, 0xCDF9, 0xCDFB, 0xCDFD, 0xCE04, -/* 10A0 */ 0xCE08, 0xCE0C, 0xCE14, 0xCE19, 0xCE20, 0xCE21, 0xCE24, 0xCE28, -/* 10A8 */ 0xCE30, 0xCE31, 0xCE33, 0xCE35, 0xD6AB, 0xD6AD, 0xD6AE, 0xD6AF, -/* 10B0 */ 0xD6C6, 0xD6C7, 0xD6C9, 0xD6CA, 0xD6CB, 0xD6CD, 0xD6CE, 0xD6CF, -/* 10B8 */ 0xD6D0, 0xD6D2, 0xD6D3, 0xD6D5, 0xD6D6, 0xD6D8, 0xD6E1, 0xD6E2, -/* 10C0 */ 0xD6E3, 0xD6E5, 0xD6E6, 0xD6E7, 0xD6EE, 0xD6EF, 0xD6F1, 0xD6F2, -/* 10C8 */ 0xD6F3, 0xD6F4, 0xD6FE, 0xD6FF, 0xD701, 0xD702, 0xD703, 0xD712, -/* 10D0 */ 0xD713, 0xD714, 0xCE58, 0xCE59, 0xCE5C, 0xCE5F, 0xCE60, 0xCE61, -/* 10D8 */ 0xCE68, 0xCE69, 0xCE6B, 0xCE6D, 0xCE74, 0xCE75, 0xCE78, 0xCE7C, -/* 10E0 */ 0xCE84, 0xCE85, 0xCE87, 0xCE89, 0xCE90, 0xCE91, 0xCE94, 0xCE98, -/* 10E8 */ 0xCEA0, 0xCEA1, 0xCEA3, 0xCEA4, 0xCEA5, 0xCEAC, 0xCEAD, 0xCEC1, -/* 10F0 */ 0xCEE4, 0xCEE5, 0xCEE8, 0xCEEB, 0xCEEC, 0xCEF4, 0xCEF5, 0xCEF7, -/* 10F8 */ 0xCEF8, 0xCEF9, 0xCF00, 0xCF01, 0xCF04, 0xCF08, 0xCF10, 0xCF11, -/* 1100 */ 0xCF13, 0xCF15, 0xCF1C, 0xCF20, 0xCF24, 0xCF2C, 0xCF2D, 0xCF2F, -/* 1108 */ 0xCF30, 0xCF31, 0xCF38, 0xCF54, 0xCF55, 0xCF58, 0xCF5C, 0xCF64, -/* 1110 */ 0xCF65, 0xCF67, 0xCF69, 0xCF70, 0xCF71, 0xCF74, 0xCF78, 0xCF80, -/* 1118 */ 0xCF85, 0xCF8C, 0xCFA1, 0xCFA8, 0xCFB0, 0xCFC4, 0xCFE0, 0xCFE1, -/* 1120 */ 0xCFE4, 0xCFE8, 0xCFF0, 0xCFF1, 0xCFF3, 0xCFF5, 0xCFFC, 0xD000, -/* 1128 */ 0xD004, 0xD011, 0xD018, 0xD02D, 0xD034, 0xD035, 0xD038, 0xD03C, -/* 1130 */ 0xD715, 0xD716, 0xD717, 0xD71A, 0xD71B, 0xD71D, 0xD71E, 0xD71F, -/* 1138 */ 0xD72A, 0xD72C, 0xD736, 0xD737, 0xD739, 0xD73A, 0xD73B, 0xD745, -/* 1140 */ 0xD746, 0xD748, 0xD752, 0xD753, 0xD755, 0xD75F, 0xD762, 0xD764, -/* 1148 */ 0xD766, 0xD767, 0xD768, 0xD76A, 0xD76B, 0xD76D, 0xD76E, 0xD76F, -/* 1150 */ 0xD771, 0xD772, 0xD773, 0xD77E, 0xD77F, 0xD780, 0xD78A, 0xD78B, -/* 1158 */ 0xD044, 0xD045, 0xD047, 0xD049, 0xD050, 0xD054, 0xD058, 0xD060, -/* 1160 */ 0xD06C, 0xD06D, 0xD070, 0xD074, 0xD07C, 0xD07D, 0xD081, 0xD0A4, -/* 1168 */ 0xD0A5, 0xD0A8, 0xD0AC, 0xD0B4, 0xD0B5, 0xD0B7, 0xD0B9, 0xD0C0, -/* 1170 */ 0xD0C1, 0xD0C4, 0xD0C8, 0xD0C9, 0xD0D0, 0xD0D1, 0xD0D3, 0xD0D4, -/* 1178 */ 0xD0D5, 0xD0DC, 0xD0DD, 0xD0E0, 0xD0E4, 0xD0EC, 0xD0ED, 0xD0EF, -/* 1180 */ 0xD0F0, 0xD0F1, 0xD0F8, 0xD10D, 0xD130, 0xD131, 0xD134, 0xD138, -/* 1188 */ 0xD13A, 0xD140, 0xD141, 0xD143, 0xD144, 0xD145, 0xD14C, 0xD14D, -/* 1190 */ 0xD150, 0xD154, 0xD15C, 0xD15D, 0xD15F, 0xD161, 0xD168, 0xD16C, -/* 1198 */ 0xD17C, 0xD184, 0xD188, 0xD1A0, 0xD1A1, 0xD1A4, 0xD1A8, 0xD1B0, -/* 11A0 */ 0xD1B1, 0xD1B3, 0xD1B5, 0xD1BA, 0xD1BC, 0xD1C0, 0xD1D8, 0xD1F4, -/* 11A8 */ 0xD1F8, 0xD207, 0xD209, 0xD210, 0xD22C, 0xD22D, 0xD230, 0xD234, -/* 11B0 */ 0xD23C, 0xD23D, 0xD23F, 0xD241, 0xD248, 0xD25C, 0xD78D, 0xD78E, -/* 11B8 */ 0xD78F, 0xD79A, 0xD79C, 0xD264, 0xD280, 0xD281, 0xD284, 0xD288, -/* 11C0 */ 0xD290, 0xD291, 0xD295, 0xD29C, 0xD2A0, 0xD2A4, 0xD2AC, 0xD2B1, -/* 11C8 */ 0xD2B8, 0xD2B9, 0xD2BC, 0xD2BF, 0xD2C0, 0xD2C2, 0xD2C8, 0xD2C9, -/* 11D0 */ 0xD2CB, 0xD2D4, 0xD2D8, 0xD2DC, 0xD2E4, 0xD2E5, 0xD2F0, 0xD2F1, -/* 11D8 */ 0xD2F4, 0xD2F8, 0xD300, 0xD301, 0xD303, 0xD305, 0xD30C, 0xD30D, -/* 11E0 */ 0xD30E, 0xD310, 0xD314, 0xD316, 0xD31C, 0xD31D, 0xD31F, 0xD320, -/* 11E8 */ 0xD321, 0xD325, 0xD328, 0xD329, 0xD32C, 0xD330, 0xD338, 0xD339, -/* 11F0 */ 0xD33B, 0xD33C, 0xD33D, 0xD344, 0xD345, 0xD37C, 0xD37D, 0xD380, -/* 11F8 */ 0xD384, 0xD38C, 0xD38D, 0xD38F, 0xD390, 0xD391, 0xD398, 0xD399, -/* 1200 */ 0xD39C, 0xD3A0, 0xD3A8, 0xD3A9, 0xD3AB, 0xD3AD, 0xD3B4, 0xD3B8, -/* 1208 */ 0xD3BC, 0xD3C4, 0xD3C5, 0xD3C8, 0xD3C9, 0xD3D0, 0xD3D8, 0xD3E1, -/* 1210 */ 0xD3E3, 0xD3EC, 0xD3ED, 0xD3F0, 0xD3F4, 0xD3FC, 0xD3FD, 0xD3FF, -/* 1218 */ 0xD401, 0xD408, 0xD41D, 0xD440, 0xD444, 0xD45C, 0xD460, 0xD464, -/* 1220 */ 0xD46D, 0xD46F, 0xD478, 0xD479, 0xD47C, 0xD47F, 0xD480, 0xD482, -/* 1228 */ 0xD488, 0xD489, 0xD48B, 0xD48D, 0xD494, 0xD4A9, 0xD4CC, 0xD4D0, -/* 1230 */ 0xD4D4, 0xD4DC, 0xD4DF, 0xD4E8, 0xD4EC, 0xD4F0, 0xD4F8, 0xD4FB, -/* 1238 */ 0xD4FD, 0xD504, 0xD508, 0xD50C, 0xD514, 0xD515, 0xD517, 0xD53C, -/* 1240 */ 0xD53D, 0xD540, 0xD544, 0xD54C, 0xD54D, 0xD54F, 0xD551, 0xD558, -/* 1248 */ 0xD559, 0xD55C, 0xD560, 0xD565, 0xD568, 0xD569, 0xD56B, 0xD56D, -/* 1250 */ 0xD574, 0xD575, 0xD578, 0xD57C, 0xD584, 0xD585, 0xD587, 0xD588, -/* 1258 */ 0xD589, 0xD590, 0xD5A5, 0xD5C8, 0xD5C9, 0xD5CC, 0xD5D0, 0xD5D2, -/* 1260 */ 0xD5D8, 0xD5D9, 0xD5DB, 0xD5DD, 0xD5E4, 0xD5E5, 0xD5E8, 0xD5EC, -/* 1268 */ 0xD5F4, 0xD5F5, 0xD5F7, 0xD5F9, 0xD600, 0xD601, 0xD604, 0xD608, -/* 1270 */ 0xD610, 0xD611, 0xD613, 0xD614, 0xD615, 0xD61C, 0xD620, 0xD624, -/* 1278 */ 0xD62D, 0xD638, 0xD639, 0xD63C, 0xD640, 0xD645, 0xD648, 0xD649, -/* 1280 */ 0xD64B, 0xD64D, 0xD651, 0xD654, 0xD655, 0xD658, 0xD65C, 0xD667, -/* 1288 */ 0xD669, 0xD670, 0xD671, 0xD674, 0xD683, 0xD685, 0xD68C, 0xD68D, -/* 1290 */ 0xD690, 0xD694, 0xD69D, 0xD69F, 0xD6A1, 0xD6A8, 0xD6AC, 0xD6B0, -/* 1298 */ 0xD6B9, 0xD6BB, 0xD6C4, 0xD6C5, 0xD6C8, 0xD6CC, 0xD6D1, 0xD6D4, -/* 12A0 */ 0xD6D7, 0xD6D9, 0xD6E0, 0xD6E4, 0xD6E8, 0xD6F0, 0xD6F5, 0xD6FC, -/* 12A8 */ 0xD6FD, 0xD700, 0xD704, 0xD711, 0xD718, 0xD719, 0xD71C, 0xD720, -/* 12B0 */ 0xD728, 0xD729, 0xD72B, 0xD72D, 0xD734, 0xD735, 0xD738, 0xD73C, -/* 12B8 */ 0xD744, 0xD747, 0xD749, 0xD750, 0xD751, 0xD754, 0xD756, 0xD757, -/* 12C0 */ 0xD758, 0xD759, 0xD760, 0xD761, 0xD763, 0xD765, 0xD769, 0xD76C, -/* 12C8 */ 0xD770, 0xD774, 0xD77C, 0xD77D, 0xD781, 0xD788, 0xD789, 0xD78C, -/* 12D0 */ 0xD790, 0xD798, 0xD799, 0xD79B, 0xD79D, 0x4F3D, 0x4F73, 0x5047, -/* 12D8 */ 0x50F9, 0x52A0, 0x53EF, 0x5475, 0x54E5, 0x5609, 0x5AC1, 0x5BB6, -/* 12E0 */ 0x6687, 0x67B6, 0x67B7, 0x67EF, 0x6B4C, 0x73C2, 0x75C2, 0x7A3C, -/* 12E8 */ 0x82DB, 0x8304, 0x8857, 0x8888, 0x8A36, 0x8CC8, 0x8DCF, 0x8EFB, -/* 12F0 */ 0x8FE6, 0x99D5, 0x523B, 0x5374, 0x5404, 0x606A, 0x6164, 0x6BBC, -/* 12F8 */ 0x73CF, 0x811A, 0x89BA, 0x89D2, 0x95A3, 0x4F83, 0x520A, 0x58BE, -/* 1300 */ 0x5978, 0x59E6, 0x5E72, 0x5E79, 0x61C7, 0x63C0, 0x6746, 0x67EC, -/* 1308 */ 0x687F, 0x6F97, 0x764E, 0x770B, 0x78F5, 0x7A08, 0x7AFF, 0x7C21, -/* 1310 */ 0x809D, 0x826E, 0x8271, 0x8AEB, 0x9593, 0x4E6B, 0x559D, 0x66F7, -/* 1318 */ 0x6E34, 0x78A3, 0x7AED, 0x845B, 0x8910, 0x874E, 0x97A8, 0x52D8, -/* 1320 */ 0x574E, 0x582A, 0x5D4C, 0x611F, 0x61BE, 0x6221, 0x6562, 0x67D1, -/* 1328 */ 0x6A44, 0x6E1B, 0x7518, 0x75B3, 0x76E3, 0x77B0, 0x7D3A, 0x90AF, -/* 1330 */ 0x9451, 0x9452, 0x9F95, 0x5323, 0x5CAC, 0x7532, 0x80DB, 0x9240, -/* 1338 */ 0x9598, 0x525B, 0x5808, 0x59DC, 0x5CA1, 0x5D17, 0x5EB7, 0x5F3A, -/* 1340 */ 0x5F4A, 0x6177, 0x6C5F, 0x757A, 0x7586, 0x7CE0, 0x7D73, 0x7DB1, -/* 1348 */ 0x7F8C, 0x8154, 0x8221, 0x8591, 0x8941, 0x8B1B, 0x92FC, 0x964D, -/* 1350 */ 0x9C47, 0x4ECB, 0x4EF7, 0x500B, 0x51F1, 0x584F, 0x6137, 0x613E, -/* 1358 */ 0x6168, 0x6539, 0x69EA, 0x6F11, 0x75A5, 0x7686, 0x76D6, 0x7B87, -/* 1360 */ 0x82A5, 0x84CB, 0xF900, 0x93A7, 0x958B, 0x5580, 0x5BA2, 0x5751, -/* 1368 */ 0xF901, 0x7CB3, 0x7FB9, 0x91B5, 0x5028, 0x53BB, 0x5C45, 0x5DE8, -/* 1370 */ 0x62D2, 0x636E, 0x64DA, 0x64E7, 0x6E20, 0x70AC, 0x795B, 0x8DDD, -/* 1378 */ 0x8E1E, 0xF902, 0x907D, 0x9245, 0x92F8, 0x4E7E, 0x4EF6, 0x5065, -/* 1380 */ 0x5DFE, 0x5EFA, 0x6106, 0x6957, 0x8171, 0x8654, 0x8E47, 0x9375, -/* 1388 */ 0x9A2B, 0x4E5E, 0x5091, 0x6770, 0x6840, 0x5109, 0x528D, 0x5292, -/* 1390 */ 0x6AA2, 0x77BC, 0x9210, 0x9ED4, 0x52AB, 0x602F, 0x8FF2, 0x5048, -/* 1398 */ 0x61A9, 0x63ED, 0x64CA, 0x683C, 0x6A84, 0x6FC0, 0x8188, 0x89A1, -/* 13A0 */ 0x9694, 0x5805, 0x727D, 0x72AC, 0x7504, 0x7D79, 0x7E6D, 0x80A9, -/* 13A8 */ 0x898B, 0x8B74, 0x9063, 0x9D51, 0x6289, 0x6C7A, 0x6F54, 0x7D50, -/* 13B0 */ 0x7F3A, 0x8A23, 0x517C, 0x614A, 0x7B9D, 0x8B19, 0x9257, 0x938C, -/* 13B8 */ 0x4EAC, 0x4FD3, 0x501E, 0x50BE, 0x5106, 0x52C1, 0x52CD, 0x537F, -/* 13C0 */ 0x5770, 0x5883, 0x5E9A, 0x5F91, 0x6176, 0x61AC, 0x64CE, 0x656C, -/* 13C8 */ 0x666F, 0x66BB, 0x66F4, 0x6897, 0x6D87, 0x7085, 0x70F1, 0x749F, -/* 13D0 */ 0x74A5, 0x74CA, 0x75D9, 0x786C, 0x78EC, 0x7ADF, 0x7AF6, 0x7D45, -/* 13D8 */ 0x7D93, 0x8015, 0x803F, 0x811B, 0x8396, 0x8B66, 0x8F15, 0x9015, -/* 13E0 */ 0x93E1, 0x9803, 0x9838, 0x9A5A, 0x9BE8, 0x4FC2, 0x5553, 0x583A, -/* 13E8 */ 0x5951, 0x5B63, 0x5C46, 0x60B8, 0x6212, 0x6842, 0x68B0, 0x68E8, -/* 13F0 */ 0x6EAA, 0x754C, 0x7678, 0x78CE, 0x7A3D, 0x7CFB, 0x7E6B, 0x7E7C, -/* 13F8 */ 0x8A08, 0x8AA1, 0x8C3F, 0x968E, 0x9DC4, 0x53E4, 0x53E9, 0x544A, -/* 1400 */ 0x5471, 0x56FA, 0x59D1, 0x5B64, 0x5C3B, 0x5EAB, 0x62F7, 0x6537, -/* 1408 */ 0x6545, 0x6572, 0x66A0, 0x67AF, 0x69C1, 0x6CBD, 0x75FC, 0x7690, -/* 1410 */ 0x777E, 0x7A3F, 0x7F94, 0x8003, 0x80A1, 0x818F, 0x82E6, 0x82FD, -/* 1418 */ 0x83F0, 0x85C1, 0x8831, 0x88B4, 0x8AA5, 0xF903, 0x8F9C, 0x932E, -/* 1420 */ 0x96C7, 0x9867, 0x9AD8, 0x9F13, 0x54ED, 0x659B, 0x66F2, 0x688F, -/* 1428 */ 0x7A40, 0x8C37, 0x9D60, 0x56F0, 0x5764, 0x5D11, 0x6606, 0x68B1, -/* 1430 */ 0x68CD, 0x6EFE, 0x7428, 0x889E, 0x9BE4, 0x6C68, 0xF904, 0x9AA8, -/* 1438 */ 0x4F9B, 0x516C, 0x5171, 0x529F, 0x5B54, 0x5DE5, 0x6050, 0x606D, -/* 1440 */ 0x62F1, 0x63A7, 0x653B, 0x73D9, 0x7A7A, 0x86A3, 0x8CA2, 0x978F, -/* 1448 */ 0x4E32, 0x5BE1, 0x6208, 0x679C, 0x74DC, 0x79D1, 0x83D3, 0x8A87, -/* 1450 */ 0x8AB2, 0x8DE8, 0x904E, 0x934B, 0x9846, 0x5ED3, 0x69E8, 0x85FF, -/* 1458 */ 0x90ED, 0xF905, 0x51A0, 0x5B98, 0x5BEC, 0x6163, 0x68FA, 0x6B3E, -/* 1460 */ 0x704C, 0x742F, 0x74D8, 0x7BA1, 0x7F50, 0x83C5, 0x89C0, 0x8CAB, -/* 1468 */ 0x95DC, 0x9928, 0x522E, 0x605D, 0x62EC, 0x9002, 0x4F8A, 0x5149, -/* 1470 */ 0x5321, 0x58D9, 0x5EE3, 0x66E0, 0x6D38, 0x709A, 0x72C2, 0x73D6, -/* 1478 */ 0x7B50, 0x80F1, 0x945B, 0x5366, 0x639B, 0x7F6B, 0x4E56, 0x5080, -/* 1480 */ 0x584A, 0x58DE, 0x602A, 0x6127, 0x62D0, 0x69D0, 0x9B41, 0x5B8F, -/* 1488 */ 0x7D18, 0x80B1, 0x8F5F, 0x4EA4, 0x50D1, 0x54AC, 0x55AC, 0x5B0C, -/* 1490 */ 0x5DA0, 0x5DE7, 0x652A, 0x654E, 0x6821, 0x6A4B, 0x72E1, 0x768E, -/* 1498 */ 0x77EF, 0x7D5E, 0x7FF9, 0x81A0, 0x854E, 0x86DF, 0x8F03, 0x8F4E, -/* 14A0 */ 0x90CA, 0x9903, 0x9A55, 0x9BAB, 0x4E18, 0x4E45, 0x4E5D, 0x4EC7, -/* 14A8 */ 0x4FF1, 0x5177, 0x52FE, 0x5340, 0x53E3, 0x53E5, 0x548E, 0x5614, -/* 14B0 */ 0x5775, 0x57A2, 0x5BC7, 0x5D87, 0x5ED0, 0x61FC, 0x62D8, 0x6551, -/* 14B8 */ 0x67B8, 0x67E9, 0x69CB, 0x6B50, 0x6BC6, 0x6BEC, 0x6C42, 0x6E9D, -/* 14C0 */ 0x7078, 0x72D7, 0x7396, 0x7403, 0x77BF, 0x77E9, 0x7A76, 0x7D7F, -/* 14C8 */ 0x8009, 0x81FC, 0x8205, 0x820A, 0x82DF, 0x8862, 0x8B33, 0x8CFC, -/* 14D0 */ 0x8EC0, 0x9011, 0x90B1, 0x9264, 0x92B6, 0x99D2, 0x9A45, 0x9CE9, -/* 14D8 */ 0x9DD7, 0x9F9C, 0x570B, 0x5C40, 0x83CA, 0x97A0, 0x97AB, 0x9EB4, -/* 14E0 */ 0x541B, 0x7A98, 0x7FA4, 0x88D9, 0x8ECD, 0x90E1, 0x5800, 0x5C48, -/* 14E8 */ 0x6398, 0x7A9F, 0x5BAE, 0x5F13, 0x7A79, 0x7AAE, 0x828E, 0x8EAC, -/* 14F0 */ 0x5026, 0x5238, 0x52F8, 0x5377, 0x5708, 0x62F3, 0x6372, 0x6B0A, -/* 14F8 */ 0x6DC3, 0x7737, 0x53A5, 0x7357, 0x8568, 0x8E76, 0x95D5, 0x673A, -/* 1500 */ 0x6AC3, 0x6F70, 0x8A6D, 0x8ECC, 0x994B, 0xF906, 0x6677, 0x6B78, -/* 1508 */ 0x8CB4, 0x9B3C, 0xF907, 0x53EB, 0x572D, 0x594E, 0x63C6, 0x69FB, -/* 1510 */ 0x73EA, 0x7845, 0x7ABA, 0x7AC5, 0x7CFE, 0x8475, 0x898F, 0x8D73, -/* 1518 */ 0x9035, 0x95A8, 0x52FB, 0x5747, 0x7547, 0x7B60, 0x83CC, 0x921E, -/* 1520 */ 0xF908, 0x6A58, 0x514B, 0x524B, 0x5287, 0x621F, 0x68D8, 0x6975, -/* 1528 */ 0x9699, 0x50C5, 0x52A4, 0x52E4, 0x61C3, 0x65A4, 0x6839, 0x69FF, -/* 1530 */ 0x747E, 0x7B4B, 0x82B9, 0x83EB, 0x89B2, 0x8B39, 0x8FD1, 0x9949, -/* 1538 */ 0xF909, 0x4ECA, 0x5997, 0x64D2, 0x6611, 0x6A8E, 0x7434, 0x7981, -/* 1540 */ 0x79BD, 0x82A9, 0x887E, 0x887F, 0x895F, 0xF90A, 0x9326, 0x4F0B, -/* 1548 */ 0x53CA, 0x6025, 0x6271, 0x6C72, 0x7D1A, 0x7D66, 0x4E98, 0x5162, -/* 1550 */ 0x77DC, 0x80AF, 0x4F01, 0x4F0E, 0x5176, 0x5180, 0x55DC, 0x5668, -/* 1558 */ 0x573B, 0x57FA, 0x57FC, 0x5914, 0x5947, 0x5993, 0x5BC4, 0x5C90, -/* 1560 */ 0x5D0E, 0x5DF1, 0x5E7E, 0x5FCC, 0x6280, 0x65D7, 0x65E3, 0x671E, -/* 1568 */ 0x671F, 0x675E, 0x68CB, 0x68C4, 0x6A5F, 0x6B3A, 0x6C23, 0x6C7D, -/* 1570 */ 0x6C82, 0x6DC7, 0x7398, 0x7426, 0x742A, 0x7482, 0x74A3, 0x7578, -/* 1578 */ 0x757F, 0x7881, 0x78EF, 0x7941, 0x7947, 0x7948, 0x797A, 0x7B95, -/* 1580 */ 0x7D00, 0x7DBA, 0x7F88, 0x8006, 0x802D, 0x808C, 0x8A18, 0x8B4F, -/* 1588 */ 0x8C48, 0x8D77, 0x9321, 0x9324, 0x98E2, 0x9951, 0x9A0E, 0x9A0F, -/* 1590 */ 0x9A65, 0x9E92, 0x7DCA, 0x4F76, 0x5409, 0x62EE, 0x6854, 0x91D1, -/* 1598 */ 0x55AB, 0x513A, 0xF90B, 0xF90C, 0x5A1C, 0x61E6, 0xF90D, 0x62CF, -/* 15A0 */ 0x62FF, 0x8AFE, 0xF919, 0xF91A, 0xF91B, 0xF91C, 0x6696, 0xF91D, -/* 15A8 */ 0x7156, 0xF91E, 0xF91F, 0x96E3, 0xF920, 0x634F, 0x637A, 0x5357, -/* 15B0 */ 0xF921, 0x678F, 0x6960, 0x6E73, 0xF922, 0x7537, 0xF923, 0xF924, -/* 15B8 */ 0xF925, 0x7D0D, 0xF926, 0xF927, 0x8872, 0x56CA, 0x5A18, 0x4E43, -/* 15C0 */ 0xF92D, 0x5167, 0x5948, 0x67F0, 0x8010, 0xF92E, 0x5973, 0x5E74, -/* 15C8 */ 0x649A, 0x79CA, 0x5FF5, 0x606C, 0x62C8, 0x637B, 0x5BE7, 0x5BD7, -/* 15D0 */ 0x52AA, 0xF92F, 0x5974, 0x5F29, 0x6012, 0xF930, 0xF931, 0xF932, -/* 15D8 */ 0x7459, 0x6FC3, 0xF944, 0xF945, 0x81BF, 0x8FB2, 0x60F1, 0xF946, -/* 15E0 */ 0xF947, 0x8166, 0xF948, 0xF949, 0x5C3F, 0x5AE9, 0x8A25, 0x677B, -/* 15E8 */ 0x7D10, 0x80FD, 0xF958, 0xF959, 0x5C3C, 0x6CE5, 0x533F, 0x6EBA, -/* 15F0 */ 0x591A, 0x8336, 0x4E39, 0x4EB6, 0x4F46, 0x55AE, 0x5718, 0x58C7, -/* 15F8 */ 0x5F56, 0x65B7, 0x65E6, 0x6A80, 0x6BB5, 0x6E4D, 0x77ED, 0x7AEF, -/* 1600 */ 0x7C1E, 0x7DDE, 0x86CB, 0x8892, 0x9132, 0x935B, 0x64BB, 0x6FBE, -/* 1608 */ 0x737A, 0x75B8, 0x9054, 0x5556, 0x574D, 0x61BA, 0x64D4, 0x66C7, -/* 1610 */ 0x6DE1, 0x6E5B, 0x6F6D, 0x6FB9, 0x75F0, 0x8043, 0x81BD, 0x8541, -/* 1618 */ 0x8983, 0x8AC7, 0x8B5A, 0x931F, 0x6C93, 0x7553, 0x7B54, 0x8E0F, -/* 1620 */ 0x905D, 0x5510, 0x5802, 0x5858, 0x5E62, 0x6207, 0x649E, 0x68E0, -/* 1628 */ 0x7576, 0x7CD6, 0x87B3, 0x9EE8, 0x4EE3, 0x5788, 0x576E, 0x5927, -/* 1630 */ 0x5C0D, 0x5CB1, 0x5E36, 0x5F85, 0x6234, 0x64E1, 0x73B3, 0x81FA, -/* 1638 */ 0x888B, 0x8CB8, 0x968A, 0x9EDB, 0x5B85, 0x5FB7, 0x60B3, 0x5012, -/* 1640 */ 0x5200, 0x5230, 0x5716, 0x5835, 0x5857, 0x5C0E, 0x5C60, 0x5CF6, -/* 1648 */ 0x5D8B, 0x5EA6, 0x5F92, 0x60BC, 0x6311, 0x6389, 0x6417, 0x6843, -/* 1650 */ 0x68F9, 0x6AC2, 0x6DD8, 0x6E21, 0x6ED4, 0x6FE4, 0x71FE, 0x76DC, -/* 1658 */ 0x7779, 0x79B1, 0x7A3B, 0x8404, 0x89A9, 0x8CED, 0x8DF3, 0x8E48, -/* 1660 */ 0x9003, 0x9014, 0x9053, 0x90FD, 0x934D, 0x9676, 0x97DC, 0x6BD2, -/* 1668 */ 0x7006, 0x7258, 0x72A2, 0x7368, 0x7763, 0x79BF, 0x7BE4, 0x7E9B, -/* 1670 */ 0x8B80, 0x58A9, 0x60C7, 0x6566, 0x65FD, 0x66BE, 0x6C8C, 0x711E, -/* 1678 */ 0x71C9, 0x8C5A, 0x9813, 0x4E6D, 0x7A81, 0x4EDD, 0x51AC, 0x51CD, -/* 1680 */ 0x52D5, 0x540C, 0x61A7, 0x6771, 0x6850, 0x68DF, 0x6D1E, 0x6F7C, -/* 1688 */ 0x75BC, 0x77B3, 0x7AE5, 0x80F4, 0x8463, 0x9285, 0x515C, 0x6597, -/* 1690 */ 0x675C, 0x6793, 0x75D8, 0x7AC7, 0x8373, 0xF95A, 0x8C46, 0x9017, -/* 1698 */ 0x982D, 0x5C6F, 0x81C0, 0x829A, 0x9041, 0x906F, 0x920D, 0x5F97, -/* 16A0 */ 0x5D9D, 0x6A59, 0x71C8, 0x767B, 0x7B49, 0x85E4, 0x8B04, 0x9127, -/* 16A8 */ 0x9A30, 0x5587, 0x61F6, 0xF95B, 0x7669, 0x7F85, 0x863F, 0x87BA, -/* 16B0 */ 0x88F8, 0x908F, 0xF95C, 0x6D1B, 0x70D9, 0x73DE, 0x7D61, 0x843D, -/* 16B8 */ 0xF95D, 0x916A, 0x99F1, 0xF95E, 0x4E82, 0x5375, 0x6B04, 0x6B12, -/* 16C0 */ 0x703E, 0x721B, 0x862D, 0x9E1E, 0x524C, 0x8FA3, 0x5D50, 0x64E5, -/* 16C8 */ 0x652C, 0x6B16, 0x6FEB, 0x7C43, 0x7E9C, 0x85CD, 0x8964, 0x89BD, -/* 16D0 */ 0x62C9, 0x81D8, 0x881F, 0x5ECA, 0x6717, 0x6D6A, 0x72FC, 0x7405, -/* 16D8 */ 0x746F, 0x8782, 0x90DE, 0x4F86, 0x5D0D, 0x5FA0, 0x840A, 0x51B7, -/* 16E0 */ 0x63A0, 0x7565, 0x4EAE, 0x5006, 0x5169, 0x51C9, 0x6881, 0x6A11, -/* 16E8 */ 0x7CAE, 0x7CB1, 0x7CE7, 0x826F, 0x8AD2, 0x8F1B, 0x91CF, 0x4FB6, -/* 16F0 */ 0x5137, 0x52F5, 0x5442, 0x5EEC, 0x616E, 0x623E, 0x65C5, 0x6ADA, -/* 16F8 */ 0x6FFE, 0x792A, 0x85DC, 0x8823, 0x95AD, 0x9A62, 0x9A6A, 0x9E97, -/* 1700 */ 0x9ECE, 0x529B, 0x66C6, 0x6B77, 0x701D, 0x792B, 0x8F62, 0x9742, -/* 1708 */ 0x6190, 0x6200, 0x6523, 0x6F23, 0x7149, 0x7489, 0x7DF4, 0x806F, -/* 1710 */ 0x84EE, 0x8F26, 0x9023, 0x934A, 0x51BD, 0x5217, 0x52A3, 0x6D0C, -/* 1718 */ 0x70C8, 0x88C2, 0x5EC9, 0x6582, 0x6BAE, 0x6FC2, 0x7C3E, 0x7375, -/* 1720 */ 0x4EE4, 0x4F36, 0x56F9, 0xF95F, 0x5CBA, 0x5DBA, 0x601C, 0x73B2, -/* 1728 */ 0x7B2D, 0x7F9A, 0x7FCE, 0x8046, 0x901E, 0x9234, 0x96F6, 0x9748, -/* 1730 */ 0x9818, 0x9F61, 0x4F8B, 0x6FA7, 0x79AE, 0x91B4, 0x96B7, 0x52DE, -/* 1738 */ 0xF960, 0x6488, 0x64C4, 0x6AD3, 0x6F5E, 0x7018, 0x7210, 0x76E7, -/* 1740 */ 0x8001, 0x8606, 0x865C, 0x8DEF, 0x8F05, 0x9732, 0x9B6F, 0x9DFA, -/* 1748 */ 0x9E75, 0x788C, 0x797F, 0x7DA0, 0x83C9, 0x9304, 0x9E7F, 0x9E93, -/* 1750 */ 0x8AD6, 0x58DF, 0x5F04, 0x6727, 0x7027, 0x74CF, 0x7C60, 0x807E, -/* 1758 */ 0x5121, 0x7028, 0x7262, 0x78CA, 0x8CC2, 0x8CDA, 0x8CF4, 0x96F7, -/* 1760 */ 0x4E86, 0x50DA, 0x5BEE, 0x5ED6, 0x6599, 0x71CE, 0x7642, 0x77AD, -/* 1768 */ 0x804A, 0x84FC, 0x907C, 0x9B27, 0x9F8D, 0x58D8, 0x5A41, 0x5C62, -/* 1770 */ 0x6A13, 0x6DDA, 0x6F0F, 0x763B, 0x7D2F, 0x7E37, 0x851E, 0x8938, -/* 1778 */ 0x93E4, 0x964B, 0x5289, 0x65D2, 0x67F3, 0x69B4, 0x6D41, 0x6E9C, -/* 1780 */ 0x700F, 0x7409, 0x7460, 0x7559, 0x7624, 0x786B, 0x8B2C, 0x985E, -/* 1788 */ 0x516D, 0x622E, 0x9678, 0x4F96, 0x502B, 0x5D19, 0x6DEA, 0x7DB8, -/* 1790 */ 0x8F2A, 0x5F8B, 0x6144, 0x6817, 0xF961, 0x9686, 0x52D2, 0x808B, -/* 1798 */ 0x51DC, 0x51CC, 0x695E, 0x7A1C, 0x7DBE, 0x83F1, 0x9675, 0x4FDA, -/* 17A0 */ 0x5229, 0x5398, 0x540F, 0x550E, 0x5C65, 0x60A7, 0x674E, 0x68A8, -/* 17A8 */ 0x6D6C, 0x7281, 0x72F8, 0x7406, 0x7483, 0xF962, 0x75E2, 0x7C6C, -/* 17B0 */ 0x7F79, 0x7FB8, 0x8389, 0x88CF, 0x88E1, 0x91CC, 0x91D0, 0x96E2, -/* 17B8 */ 0x9BC9, 0x541D, 0x6F7E, 0x71D0, 0x7498, 0x85FA, 0x8EAA, 0x96A3, -/* 17C0 */ 0x9C57, 0x9E9F, 0x6797, 0x6DCB, 0x7433, 0x81E8, 0x9716, 0x782C, -/* 17C8 */ 0x7ACB, 0x7B20, 0x7C92, 0x6469, 0x746A, 0x75F2, 0x78BC, 0x78E8, -/* 17D0 */ 0x99AC, 0x9B54, 0x9EBB, 0x5BDE, 0x5E55, 0x6F20, 0x819C, 0x83AB, -/* 17D8 */ 0x9088, 0x4E07, 0x534D, 0x5A29, 0x5DD2, 0x5F4E, 0x6162, 0x633D, -/* 17E0 */ 0x6669, 0x66FC, 0x6EFF, 0x6F2B, 0x7063, 0x779E, 0x842C, 0x8513, -/* 17E8 */ 0x883B, 0x8F13, 0x9945, 0x9C3B, 0x551C, 0x62B9, 0x672B, 0x6CAB, -/* 17F0 */ 0x8309, 0x896A, 0x977A, 0x4EA1, 0x5984, 0x5FD8, 0x5FD9, 0x671B, -/* 17F8 */ 0x7DB2, 0x7F54, 0x8292, 0x832B, 0x83BD, 0x8F1E, 0x9099, 0x57CB, -/* 1800 */ 0x59B9, 0x5A92, 0x5BD0, 0x6627, 0x679A, 0x6885, 0x6BCF, 0x7164, -/* 1808 */ 0x7F75, 0x8CB7, 0x8CE3, 0x9081, 0x9B45, 0x8108, 0x8C8A, 0x964C, -/* 1810 */ 0x9A40, 0x9EA5, 0x5B5F, 0x6C13, 0x731B, 0x76F2, 0x76DF, 0x840C, -/* 1818 */ 0x51AA, 0x8993, 0x514D, 0x5195, 0x52C9, 0x68C9, 0x6C94, 0x7704, -/* 1820 */ 0x7720, 0x7DBF, 0x7DEC, 0x9762, 0x9EB5, 0x6EC5, 0x8511, 0x51A5, -/* 1828 */ 0x540D, 0x547D, 0x660E, 0x669D, 0x6927, 0x6E9F, 0x76BF, 0x7791, -/* 1830 */ 0x8317, 0x84C2, 0x879F, 0x9169, 0x9298, 0x9CF4, 0x8882, 0x4FAE, -/* 1838 */ 0x5192, 0x52DF, 0x59C6, 0x5E3D, 0x6155, 0x6478, 0x6479, 0x66AE, -/* 1840 */ 0x67D0, 0x6A21, 0x6BCD, 0x6BDB, 0x725F, 0x7261, 0x7441, 0x7738, -/* 1848 */ 0x77DB, 0x8017, 0x82BC, 0x8305, 0x8B00, 0x8B28, 0x8C8C, 0x6728, -/* 1850 */ 0x6C90, 0x7267, 0x76EE, 0x7766, 0x7A46, 0x9DA9, 0x6B7F, 0x6C92, -/* 1858 */ 0x5922, 0x6726, 0x8499, 0x536F, 0x5893, 0x5999, 0x5EDF, 0x63CF, -/* 1860 */ 0x6634, 0x6773, 0x6E3A, 0x732B, 0x7AD7, 0x82D7, 0x9328, 0x52D9, -/* 1868 */ 0x5DEB, 0x61AE, 0x61CB, 0x620A, 0x62C7, 0x64AB, 0x65E0, 0x6959, -/* 1870 */ 0x6B66, 0x6BCB, 0x7121, 0x73F7, 0x755D, 0x7E46, 0x821E, 0x8302, -/* 1878 */ 0x856A, 0x8AA3, 0x8CBF, 0x9727, 0x9D61, 0x58A8, 0x9ED8, 0x5011, -/* 1880 */ 0x520E, 0x543B, 0x554F, 0x6587, 0x6C76, 0x7D0A, 0x7D0B, 0x805E, -/* 1888 */ 0x868A, 0x9580, 0x96EF, 0x52FF, 0x6C95, 0x7269, 0x5473, 0x5A9A, -/* 1890 */ 0x5C3E, 0x5D4B, 0x5F4C, 0x5FAE, 0x672A, 0x68B6, 0x6963, 0x6E3C, -/* 1898 */ 0x6E44, 0x7709, 0x7C73, 0x7F8E, 0x8587, 0x8B0E, 0x8FF7, 0x9761, -/* 18A0 */ 0x9EF4, 0x5CB7, 0x60B6, 0x610D, 0x61AB, 0x654F, 0x65FB, 0x65FC, -/* 18A8 */ 0x6C11, 0x6CEF, 0x739F, 0x73C9, 0x7DE1, 0x9594, 0x5BC6, 0x871C, -/* 18B0 */ 0x8B10, 0x525D, 0x535A, 0x62CD, 0x640F, 0x64B2, 0x6734, 0x6A38, -/* 18B8 */ 0x6CCA, 0x73C0, 0x749E, 0x7B94, 0x7C95, 0x7E1B, 0x818A, 0x8236, -/* 18C0 */ 0x8584, 0x8FEB, 0x96F9, 0x99C1, 0x4F34, 0x534A, 0x53CD, 0x53DB, -/* 18C8 */ 0x62CC, 0x642C, 0x6500, 0x6591, 0x69C3, 0x6CEE, 0x6F58, 0x73ED, -/* 18D0 */ 0x7554, 0x7622, 0x76E4, 0x76FC, 0x78D0, 0x78FB, 0x792C, 0x7D46, -/* 18D8 */ 0x822C, 0x87E0, 0x8FD4, 0x9812, 0x98EF, 0x52C3, 0x62D4, 0x64A5, -/* 18E0 */ 0x6E24, 0x6F51, 0x767C, 0x8DCB, 0x91B1, 0x9262, 0x9AEE, 0x9B43, -/* 18E8 */ 0x5023, 0x508D, 0x574A, 0x59A8, 0x5C28, 0x5E47, 0x5F77, 0x623F, -/* 18F0 */ 0x653E, 0x65B9, 0x65C1, 0x6609, 0x678B, 0x699C, 0x6EC2, 0x78C5, -/* 18F8 */ 0x7D21, 0x80AA, 0x8180, 0x822B, 0x82B3, 0x84A1, 0x868C, 0x8A2A, -/* 1900 */ 0x8B17, 0x90A6, 0x9632, 0x9F90, 0x500D, 0x4FF3, 0xF963, 0x57F9, -/* 1908 */ 0x5F98, 0x62DC, 0x6392, 0x676F, 0x6E43, 0x7119, 0x76C3, 0x80CC, -/* 1910 */ 0x80DA, 0x88F4, 0x88F5, 0x8919, 0x8CE0, 0x8F29, 0x914D, 0x966A, -/* 1918 */ 0x4F2F, 0x4F70, 0x5E1B, 0x67CF, 0x6822, 0x767D, 0x767E, 0x9B44, -/* 1920 */ 0x5E61, 0x6A0A, 0x7169, 0x71D4, 0x756A, 0xF964, 0x7E41, 0x8543, -/* 1928 */ 0x85E9, 0x98DC, 0x4F10, 0x7B4F, 0x7F70, 0x95A5, 0x51E1, 0x5E06, -/* 1930 */ 0x68B5, 0x6C3E, 0x6C4E, 0x6CDB, 0x72AF, 0x7BC4, 0x8303, 0x6CD5, -/* 1938 */ 0x743A, 0x50FB, 0x5288, 0x58C1, 0x64D8, 0x6A97, 0x74A7, 0x7656, -/* 1940 */ 0x78A7, 0x8617, 0x95E2, 0x9739, 0xF965, 0x535E, 0x5F01, 0x8B8A, -/* 1948 */ 0x8FA8, 0x8FAF, 0x908A, 0x5225, 0x77A5, 0x9C49, 0x9F08, 0x4E19, -/* 1950 */ 0x5002, 0x5175, 0x5C5B, 0x5E77, 0x661E, 0x663A, 0x67C4, 0x68C5, -/* 1958 */ 0x70B3, 0x7501, 0x75C5, 0x79C9, 0x7ADD, 0x8F27, 0x9920, 0x9A08, -/* 1960 */ 0x4FDD, 0x5821, 0x5831, 0x5BF6, 0x666E, 0x6B65, 0x6D11, 0x6E7A, -/* 1968 */ 0x6F7D, 0x73E4, 0x752B, 0x83E9, 0x88DC, 0x8913, 0x8B5C, 0x8F14, -/* 1970 */ 0x4F0F, 0x50D5, 0x5310, 0x535C, 0x5B93, 0x5FA9, 0x670D, 0x798F, -/* 1978 */ 0x8179, 0x832F, 0x8514, 0x8907, 0x8986, 0x8F39, 0x8F3B, 0x99A5, -/* 1980 */ 0x9C12, 0x672C, 0x4E76, 0x4FF8, 0x5949, 0x5C01, 0x5CEF, 0x5CF0, -/* 1988 */ 0x6367, 0x68D2, 0x70FD, 0x71A2, 0x742B, 0x7E2B, 0x84EC, 0x8702, -/* 1990 */ 0x9022, 0x92D2, 0x9CF3, 0x4E0D, 0x4ED8, 0x4FEF, 0x5085, 0x5256, -/* 1998 */ 0x526F, 0x5426, 0x5490, 0x57E0, 0x592B, 0x5A66, 0x5B5A, 0x5B75, -/* 19A0 */ 0x5BCC, 0x5E9C, 0xF966, 0x6276, 0x6577, 0x65A7, 0x6D6E, 0x6EA5, -/* 19A8 */ 0x7236, 0x7B26, 0x7C3F, 0x7F36, 0x8150, 0x8151, 0x819A, 0x8240, -/* 19B0 */ 0x8299, 0x83A9, 0x8A03, 0x8CA0, 0x8CE6, 0x8CFB, 0x8D74, 0x8DBA, -/* 19B8 */ 0x90E8, 0x91DC, 0x961C, 0x9644, 0x99D9, 0x9CE7, 0x5317, 0x5206, -/* 19C0 */ 0x5429, 0x5674, 0x58B3, 0x5954, 0x596E, 0x5FFF, 0x61A4, 0x626E, -/* 19C8 */ 0x6610, 0x6C7E, 0x711A, 0x76C6, 0x7C89, 0x7CDE, 0x7D1B, 0x82AC, -/* 19D0 */ 0x8CC1, 0x96F0, 0xF967, 0x4F5B, 0x5F17, 0x5F7F, 0x62C2, 0x5D29, -/* 19D8 */ 0x670B, 0x68DA, 0x787C, 0x7E43, 0x9D6C, 0x4E15, 0x5099, 0x5315, -/* 19E0 */ 0x532A, 0x5351, 0x5983, 0x5A62, 0x5E87, 0x60B2, 0x618A, 0x6249, -/* 19E8 */ 0x6279, 0x6590, 0x6787, 0x69A7, 0x6BD4, 0x6BD6, 0x6BD7, 0x6BD8, -/* 19F0 */ 0x6CB8, 0xF968, 0x7435, 0x75FA, 0x7812, 0x7891, 0x79D5, 0x79D8, -/* 19F8 */ 0x7C83, 0x7DCB, 0x7FE1, 0x80A5, 0x813E, 0x81C2, 0x83F2, 0x871A, -/* 1A00 */ 0x88E8, 0x8AB9, 0x8B6C, 0x8CBB, 0x9119, 0x975E, 0x98DB, 0x9F3B, -/* 1A08 */ 0x56AC, 0x5B2A, 0x5F6C, 0x658C, 0x6AB3, 0x6BAF, 0x6D5C, 0x6FF1, -/* 1A10 */ 0x7015, 0x725D, 0x73AD, 0x8CA7, 0x8CD3, 0x983B, 0x6191, 0x6C37, -/* 1A18 */ 0x8058, 0x9A01, 0x4E4D, 0x4E8B, 0x4E9B, 0x4ED5, 0x4F3A, 0x4F3C, -/* 1A20 */ 0x4F7F, 0x4FDF, 0x50FF, 0x53F2, 0x53F8, 0x5506, 0x55E3, 0x56DB, -/* 1A28 */ 0x58EB, 0x5962, 0x5A11, 0x5BEB, 0x5BFA, 0x5C04, 0x5DF3, 0x5E2B, -/* 1A30 */ 0x5F99, 0x601D, 0x6368, 0x659C, 0x65AF, 0x67F6, 0x67FB, 0x68AD, -/* 1A38 */ 0x6B7B, 0x6C99, 0x6CD7, 0x6E23, 0x7009, 0x7345, 0x7802, 0x793E, -/* 1A40 */ 0x7940, 0x7960, 0x79C1, 0x7BE9, 0x7D17, 0x7D72, 0x8086, 0x820D, -/* 1A48 */ 0x838E, 0x84D1, 0x86C7, 0x88DF, 0x8A50, 0x8A5E, 0x8B1D, 0x8CDC, -/* 1A50 */ 0x8D66, 0x8FAD, 0x90AA, 0x98FC, 0x99DF, 0x9E9D, 0x524A, 0xF969, -/* 1A58 */ 0x6714, 0xF96A, 0x5098, 0x522A, 0x5C71, 0x6563, 0x6C55, 0x73CA, -/* 1A60 */ 0x7523, 0x759D, 0x7B97, 0x849C, 0x9178, 0x9730, 0x4E77, 0x6492, -/* 1A68 */ 0x6BBA, 0x715E, 0x85A9, 0x4E09, 0xF96B, 0x6749, 0x68EE, 0x6E17, -/* 1A70 */ 0x829F, 0x8518, 0x886B, 0x63F7, 0x6F81, 0x9212, 0x98AF, 0x4E0A, -/* 1A78 */ 0x50B7, 0x50CF, 0x511F, 0x5546, 0x55AA, 0x5617, 0x5B40, 0x5C19, -/* 1A80 */ 0x5CE0, 0x5E38, 0x5E8A, 0x5EA0, 0x5EC2, 0x60F3, 0x6851, 0x6A61, -/* 1A88 */ 0x6E58, 0x723D, 0x7240, 0x72C0, 0x76F8, 0x7965, 0x7BB1, 0x7FD4, -/* 1A90 */ 0x88F3, 0x89F4, 0x8A73, 0x8C61, 0x8CDE, 0x971C, 0x585E, 0x74BD, -/* 1A98 */ 0x8CFD, 0x55C7, 0xF96C, 0x7A61, 0x7D22, 0x8272, 0x7272, 0x751F, -/* 1AA0 */ 0x7525, 0xF96D, 0x7B19, 0x5885, 0x58FB, 0x5DBC, 0x5E8F, 0x5EB6, -/* 1AA8 */ 0x5F90, 0x6055, 0x6292, 0x637F, 0x654D, 0x6691, 0x66D9, 0x66F8, -/* 1AB0 */ 0x6816, 0x68F2, 0x7280, 0x745E, 0x7B6E, 0x7D6E, 0x7DD6, 0x7F72, -/* 1AB8 */ 0x80E5, 0x8212, 0x85AF, 0x897F, 0x8A93, 0x901D, 0x92E4, 0x9ECD, -/* 1AC0 */ 0x9F20, 0x5915, 0x596D, 0x5E2D, 0x60DC, 0x6614, 0x6673, 0x6790, -/* 1AC8 */ 0x6C50, 0x6DC5, 0x6F5F, 0x77F3, 0x78A9, 0x84C6, 0x91CB, 0x932B, -/* 1AD0 */ 0x4ED9, 0x50CA, 0x5148, 0x5584, 0x5B0B, 0x5BA3, 0x6247, 0x657E, -/* 1AD8 */ 0x65CB, 0x6E32, 0x717D, 0x7401, 0x7444, 0x7487, 0x74BF, 0x766C, -/* 1AE0 */ 0x79AA, 0x7DDA, 0x7E55, 0x7FA8, 0x817A, 0x81B3, 0x8239, 0x861A, -/* 1AE8 */ 0x87EC, 0x8A75, 0x8DE3, 0x9078, 0x9291, 0x9425, 0x994D, 0x9BAE, -/* 1AF0 */ 0x5368, 0x5C51, 0x6954, 0x6CC4, 0x6D29, 0x6E2B, 0x820C, 0x859B, -/* 1AF8 */ 0x893B, 0x8A2D, 0x8AAA, 0x96EA, 0x9F67, 0x5261, 0x66B9, 0x6BB2, -/* 1B00 */ 0x7E96, 0x87FE, 0x8D0D, 0x9583, 0x965D, 0x651D, 0x6D89, 0x71EE, -/* 1B08 */ 0xF96E, 0x57CE, 0x59D3, 0x5BAC, 0x6027, 0x60FA, 0x6210, 0x661F, -/* 1B10 */ 0x665F, 0x7329, 0x73F9, 0x76DB, 0x7701, 0x7B6C, 0x8056, 0x8072, -/* 1B18 */ 0x8165, 0x8AA0, 0x9192, 0x4E16, 0x52E2, 0x6B72, 0x6D17, 0x7A05, -/* 1B20 */ 0x7B39, 0x7D30, 0xF96F, 0x8CB0, 0x53EC, 0x562F, 0x5851, 0x5BB5, -/* 1B28 */ 0x5C0F, 0x5C11, 0x5DE2, 0x6240, 0x6383, 0x6414, 0x662D, 0x68B3, -/* 1B30 */ 0x6CBC, 0x6D88, 0x6EAF, 0x701F, 0x70A4, 0x71D2, 0x7526, 0x758F, -/* 1B38 */ 0x758E, 0x7619, 0x7B11, 0x7BE0, 0x7C2B, 0x7D20, 0x7D39, 0x852C, -/* 1B40 */ 0x856D, 0x8607, 0x8A34, 0x900D, 0x9061, 0x90B5, 0x92B7, 0x97F6, -/* 1B48 */ 0x9A37, 0x4FD7, 0x5C6C, 0x675F, 0x6D91, 0x7C9F, 0x7E8C, 0x8B16, -/* 1B50 */ 0x8D16, 0x901F, 0x5B6B, 0x5DFD, 0x640D, 0x84C0, 0x905C, 0x98E1, -/* 1B58 */ 0x7387, 0x5B8B, 0x609A, 0x677E, 0x6DDE, 0x8A1F, 0x8AA6, 0x9001, -/* 1B60 */ 0x980C, 0x5237, 0xF970, 0x7051, 0x788E, 0x9396, 0x8870, 0x91D7, -/* 1B68 */ 0x4FEE, 0x53D7, 0x55FD, 0x56DA, 0x5782, 0x58FD, 0x5AC2, 0x5B88, -/* 1B70 */ 0x5CAB, 0x5CC0, 0x5E25, 0x6101, 0x620D, 0x624B, 0x6388, 0x641C, -/* 1B78 */ 0x6536, 0x6578, 0x6A39, 0x6B8A, 0x6C34, 0x6D19, 0x6F31, 0x71E7, -/* 1B80 */ 0x72E9, 0x7378, 0x7407, 0x74B2, 0x7626, 0x7761, 0x79C0, 0x7A57, -/* 1B88 */ 0x7AEA, 0x7CB9, 0x7D8F, 0x7DAC, 0x7E61, 0x7F9E, 0x8129, 0x8331, -/* 1B90 */ 0x8490, 0x84DA, 0x85EA, 0x8896, 0x8AB0, 0x8B90, 0x8F38, 0x9042, -/* 1B98 */ 0x9083, 0x916C, 0x9296, 0x92B9, 0x968B, 0x96A7, 0x96A8, 0x96D6, -/* 1BA0 */ 0x9700, 0x9808, 0x9996, 0x9AD3, 0x9B1A, 0x53D4, 0x587E, 0x5919, -/* 1BA8 */ 0x5B70, 0x5BBF, 0x6DD1, 0x6F5A, 0x719F, 0x7421, 0x74B9, 0x8085, -/* 1BB0 */ 0x83FD, 0x5DE1, 0x5F87, 0x5FAA, 0x6042, 0x65EC, 0x6812, 0x696F, -/* 1BB8 */ 0x6A53, 0x6B89, 0x6D35, 0x6DF3, 0x73E3, 0x76FE, 0x77AC, 0x7B4D, -/* 1BC0 */ 0x7D14, 0x8123, 0x821C, 0x8340, 0x84F4, 0x8563, 0x8A62, 0x8AC4, -/* 1BC8 */ 0x9187, 0x931E, 0x9806, 0x99B4, 0x620C, 0x8853, 0x8FF0, 0x9265, -/* 1BD0 */ 0x5D07, 0x5D27, 0x5D69, 0x745F, 0x819D, 0x8768, 0x6FD5, 0x62FE, -/* 1BD8 */ 0x7FD2, 0x8936, 0x8972, 0x4E1E, 0x4E58, 0x50E7, 0x52DD, 0x5347, -/* 1BE0 */ 0x627F, 0x6607, 0x7E69, 0x8805, 0x965E, 0x4F8D, 0x5319, 0x5636, -/* 1BE8 */ 0x59CB, 0x5AA4, 0x5C38, 0x5C4E, 0x5C4D, 0x5E02, 0x5F11, 0x6043, -/* 1BF0 */ 0x65BD, 0x662F, 0x6642, 0x67BE, 0x67F4, 0x731C, 0x77E2, 0x793A, -/* 1BF8 */ 0x7FC5, 0x8494, 0x84CD, 0x8996, 0x8A66, 0x8A69, 0x8AE1, 0x8C55, -/* 1C00 */ 0x8C7A, 0x57F4, 0x5BD4, 0x5F0F, 0x606F, 0x62ED, 0x690D, 0x6B96, -/* 1C08 */ 0x6E5C, 0x7184, 0x7BD2, 0x8755, 0x8B58, 0x8EFE, 0x98DF, 0x98FE, -/* 1C10 */ 0x4F38, 0x4F81, 0x4FE1, 0x547B, 0x5A20, 0x5BB8, 0x613C, 0x65B0, -/* 1C18 */ 0x6668, 0x71FC, 0x7533, 0x795E, 0x7D33, 0x814E, 0x81E3, 0x8398, -/* 1C20 */ 0x85AA, 0x85CE, 0x8703, 0x8A0A, 0x8EAB, 0x8F9B, 0xF971, 0x8FC5, -/* 1C28 */ 0x5931, 0x5BA4, 0x5BE6, 0x6089, 0x5BE9, 0x5C0B, 0x5FC3, 0x6C81, -/* 1C30 */ 0xF972, 0x6DF1, 0x700B, 0x751A, 0x82AF, 0x8AF6, 0x4EC0, 0x5341, -/* 1C38 */ 0xF973, 0x96D9, 0x6C0F, 0x4E9E, 0x4FC4, 0x5152, 0x555E, 0x5A25, -/* 1C40 */ 0x5CE8, 0x6211, 0x7259, 0x82BD, 0x83AA, 0x86FE, 0x8859, 0x8A1D, -/* 1C48 */ 0x963F, 0x96C5, 0x9913, 0x9D09, 0x9D5D, 0x580A, 0x5CB3, 0x5DBD, -/* 1C50 */ 0x5E44, 0x60E1, 0x6115, 0x63E1, 0x6A02, 0x6E25, 0x9102, 0x9354, -/* 1C58 */ 0x984E, 0x9C10, 0x9F77, 0x5B89, 0x5CB8, 0x6309, 0x664F, 0x6848, -/* 1C60 */ 0x773C, 0x96C1, 0x978D, 0x9854, 0x9B9F, 0x65A1, 0x8B01, 0x8ECB, -/* 1C68 */ 0x95BC, 0x5535, 0x5CA9, 0x5DD6, 0x5EB5, 0x6697, 0x764C, 0x83F4, -/* 1C70 */ 0x95C7, 0x58D3, 0x62BC, 0x72CE, 0x9D28, 0x4EF0, 0x592E, 0x600F, -/* 1C78 */ 0x663B, 0x6B83, 0x79E7, 0x9D26, 0x5393, 0x54C0, 0x57C3, 0x5D16, -/* 1C80 */ 0x611B, 0x66D6, 0x6DAF, 0x788D, 0x827E, 0x9698, 0x9744, 0x5384, -/* 1C88 */ 0x627C, 0x6396, 0x6DB2, 0x7E0A, 0x814B, 0x984D, 0x6AFB, 0x7F4C, -/* 1C90 */ 0x9DAF, 0x9E1A, 0x4E5F, 0x503B, 0x51B6, 0x591C, 0x60F9, 0x63F6, -/* 1C98 */ 0x6930, 0x723A, 0x8036, 0xF974, 0x91CE, 0x5F31, 0xF975, 0xF976, -/* 1CA0 */ 0x7D04, 0x82E5, 0x846F, 0x84BB, 0x85E5, 0x8E8D, 0xF977, 0x4F6F, -/* 1CA8 */ 0xF978, 0xF979, 0x58E4, 0x5B43, 0x6059, 0x63DA, 0x6518, 0x656D, -/* 1CB0 */ 0x6698, 0xF97A, 0x694A, 0x6A23, 0x6D0B, 0x7001, 0x716C, 0x75D2, -/* 1CB8 */ 0x760D, 0x79B3, 0x7A70, 0xF97B, 0x7F8A, 0xF97C, 0x8944, 0xF97D, -/* 1CC0 */ 0x8B93, 0x91C0, 0x967D, 0xF97E, 0x990A, 0x5704, 0x5FA1, 0x65BC, -/* 1CC8 */ 0x6F01, 0x7600, 0x79A6, 0x8A9E, 0x99AD, 0x9B5A, 0x9F6C, 0x5104, -/* 1CD0 */ 0x61B6, 0x6291, 0x6A8D, 0x81C6, 0x5043, 0x5830, 0x5F66, 0x7109, -/* 1CD8 */ 0x8A00, 0x8AFA, 0x5B7C, 0x8616, 0x4FFA, 0x513C, 0x56B4, 0x5944, -/* 1CE0 */ 0x63A9, 0x6DF9, 0x5DAA, 0x696D, 0x5186, 0x4E88, 0x4F59, 0xF97F, -/* 1CE8 */ 0xF980, 0xF981, 0x5982, 0xF982, 0xF983, 0x6B5F, 0x6C5D, 0xF984, -/* 1CF0 */ 0x74B5, 0x7916, 0xF985, 0x8207, 0x8245, 0x8339, 0x8F3F, 0x8F5D, -/* 1CF8 */ 0xF986, 0x9918, 0xF987, 0xF988, 0xF989, 0x4EA6, 0xF98A, 0x57DF, -/* 1D00 */ 0x5F79, 0x6613, 0xF98B, 0xF98C, 0x75AB, 0x7E79, 0x8B6F, 0xF98D, -/* 1D08 */ 0x9006, 0x9A5B, 0x56A5, 0x5827, 0x59F8, 0x5A1F, 0x5BB4, 0xF98E, -/* 1D10 */ 0x5EF6, 0xF98F, 0xF990, 0x6350, 0x633B, 0xF991, 0x693D, 0x6C87, -/* 1D18 */ 0x6CBF, 0x6D8E, 0x6D93, 0x6DF5, 0x6F14, 0xF992, 0x70DF, 0x7136, -/* 1D20 */ 0x7159, 0xF993, 0x71C3, 0x71D5, 0xF994, 0x784F, 0x786F, 0xF995, -/* 1D28 */ 0x7B75, 0x7DE3, 0xF996, 0x7E2F, 0xF997, 0x884D, 0x8EDF, 0xF998, -/* 1D30 */ 0xF999, 0xF99A, 0x925B, 0xF99B, 0x9CF6, 0xF99C, 0xF99D, 0xF99E, -/* 1D38 */ 0x6085, 0x6D85, 0xF99F, 0x71B1, 0xF9A0, 0xF9A1, 0x95B1, 0x53AD, -/* 1D40 */ 0xF9A2, 0xF9A3, 0xF9A4, 0x67D3, 0xF9A5, 0x708E, 0x7130, 0x7430, -/* 1D48 */ 0x8276, 0x82D2, 0xF9A6, 0x95BB, 0x9AE5, 0x9E7D, 0x66C4, 0xF9A7, -/* 1D50 */ 0x71C1, 0x8449, 0xF9A8, 0xF9A9, 0x584B, 0xF9AA, 0xF9AB, 0x5DB8, -/* 1D58 */ 0x5F71, 0xF9AC, 0x6620, 0x668E, 0x6979, 0x69AE, 0x6C38, 0x6CF3, -/* 1D60 */ 0x6E36, 0x6F41, 0x6FDA, 0x701B, 0x702F, 0x7150, 0x71DF, 0x7370, -/* 1D68 */ 0xF9AD, 0x745B, 0xF9AE, 0x74D4, 0x76C8, 0x7A4E, 0x7E93, 0xF9AF, -/* 1D70 */ 0xF9B0, 0x82F1, 0x8A60, 0x8FCE, 0xF9B1, 0x9348, 0xF9B2, 0x9719, -/* 1D78 */ 0xF9B3, 0xF9B4, 0x4E42, 0x502A, 0xF9B5, 0x5208, 0x53E1, 0x66F3, -/* 1D80 */ 0x6C6D, 0x6FCA, 0x730A, 0x777F, 0x7A62, 0x82AE, 0x85DD, 0x8602, -/* 1D88 */ 0xF9B6, 0x88D4, 0x8A63, 0x8B7D, 0x8C6B, 0xF9B7, 0x92B3, 0xF9B8, -/* 1D90 */ 0x9713, 0x9810, 0x4E94, 0x4F0D, 0x4FC9, 0x50B2, 0x5348, 0x543E, -/* 1D98 */ 0x5433, 0x55DA, 0x5862, 0x58BA, 0x5967, 0x5A1B, 0x5BE4, 0x609F, -/* 1DA0 */ 0xF9B9, 0x61CA, 0x6556, 0x65FF, 0x6664, 0x68A7, 0x6C5A, 0x6FB3, -/* 1DA8 */ 0x70CF, 0x71AC, 0x7352, 0x7B7D, 0x8708, 0x8AA4, 0x9C32, 0x9F07, -/* 1DB0 */ 0x5C4B, 0x6C83, 0x7344, 0x7389, 0x923A, 0x6EAB, 0x7465, 0x761F, -/* 1DB8 */ 0x7A69, 0x7E15, 0x860A, 0x5140, 0x58C5, 0x64C1, 0x74EE, 0x7515, -/* 1DC0 */ 0x7670, 0x7FC1, 0x9095, 0x96CD, 0x9954, 0x6E26, 0x74E6, 0x7AA9, -/* 1DC8 */ 0x7AAA, 0x81E5, 0x86D9, 0x8778, 0x8A1B, 0x5A49, 0x5B8C, 0x5B9B, -/* 1DD0 */ 0x68A1, 0x6900, 0x6D63, 0x73A9, 0x7413, 0x742C, 0x7897, 0x7DE9, -/* 1DD8 */ 0x7FEB, 0x8118, 0x8155, 0x839E, 0x8C4C, 0x962E, 0x9811, 0x66F0, -/* 1DE0 */ 0x5F80, 0x65FA, 0x6789, 0x6C6A, 0x738B, 0x502D, 0x5A03, 0x6B6A, -/* 1DE8 */ 0x77EE, 0x5916, 0x5D6C, 0x5DCD, 0x7325, 0x754F, 0xF9BA, 0xF9BB, -/* 1DF0 */ 0x50E5, 0x51F9, 0x582F, 0x592D, 0x5996, 0x59DA, 0x5BE5, 0xF9BC, -/* 1DF8 */ 0xF9BD, 0x5DA2, 0x62D7, 0x6416, 0x6493, 0x64FE, 0xF9BE, 0x66DC, -/* 1E00 */ 0xF9BF, 0x6A48, 0xF9C0, 0x71FF, 0x7464, 0xF9C1, 0x7A88, 0x7AAF, -/* 1E08 */ 0x7E47, 0x7E5E, 0x8000, 0x8170, 0xF9C2, 0x87EF, 0x8981, 0x8B20, -/* 1E10 */ 0x9059, 0xF9C3, 0x9080, 0x9952, 0x617E, 0x6B32, 0x6D74, 0x7E1F, -/* 1E18 */ 0x8925, 0x8FB1, 0x4FD1, 0x50AD, 0x5197, 0x52C7, 0x57C7, 0x5889, -/* 1E20 */ 0x5BB9, 0x5EB8, 0x6142, 0x6995, 0x6D8C, 0x6E67, 0x6EB6, 0x7194, -/* 1E28 */ 0x7462, 0x7528, 0x752C, 0x8073, 0x8338, 0x84C9, 0x8E0A, 0x9394, -/* 1E30 */ 0x93DE, 0xF9C4, 0x4E8E, 0x4F51, 0x5076, 0x512A, 0x53C8, 0x53CB, -/* 1E38 */ 0x53F3, 0x5B87, 0x5BD3, 0x5C24, 0x611A, 0x6182, 0x65F4, 0x725B, -/* 1E40 */ 0x7397, 0x7440, 0x76C2, 0x7950, 0x7991, 0x79B9, 0x7D06, 0x7FBD, -/* 1E48 */ 0x828B, 0x85D5, 0x865E, 0x8FC2, 0x9047, 0x90F5, 0x91EA, 0x9685, -/* 1E50 */ 0x96E8, 0x96E9, 0x52D6, 0x5F67, 0x65ED, 0x6631, 0x682F, 0x715C, -/* 1E58 */ 0x7A36, 0x90C1, 0x980A, 0x4E91, 0xF9C5, 0x6A52, 0x6B9E, 0x6F90, -/* 1E60 */ 0x7189, 0x8018, 0x82B8, 0x8553, 0x904B, 0x9695, 0x96F2, 0x97FB, -/* 1E68 */ 0x851A, 0x9B31, 0x4E90, 0x718A, 0x96C4, 0x5143, 0x539F, 0x54E1, -/* 1E70 */ 0x5713, 0x5712, 0x57A3, 0x5A9B, 0x5AC4, 0x5BC3, 0x6028, 0x613F, -/* 1E78 */ 0x63F4, 0x6C85, 0x6D39, 0x6E72, 0x6E90, 0x7230, 0x733F, 0x7457, -/* 1E80 */ 0x82D1, 0x8881, 0x8F45, 0x9060, 0xF9C6, 0x9662, 0x9858, 0x9D1B, -/* 1E88 */ 0x6708, 0x8D8A, 0x925E, 0x4F4D, 0x5049, 0x50DE, 0x5371, 0x570D, -/* 1E90 */ 0x59D4, 0x5A01, 0x5C09, 0x6170, 0x6690, 0x6E2D, 0x7232, 0x744B, -/* 1E98 */ 0x7DEF, 0x80C3, 0x840E, 0x8466, 0x853F, 0x875F, 0x885B, 0x8918, -/* 1EA0 */ 0x8B02, 0x9055, 0x97CB, 0x9B4F, 0x4E73, 0x4F91, 0x5112, 0x516A, -/* 1EA8 */ 0xF9C7, 0x552F, 0x55A9, 0x5B7A, 0x5BA5, 0x5E7C, 0x5E7D, 0x5EBE, -/* 1EB0 */ 0x60A0, 0x60DF, 0x6108, 0x6109, 0x63C4, 0x6538, 0x6709, 0xF9C8, -/* 1EB8 */ 0x67D4, 0x67DA, 0xF9C9, 0x6961, 0x6962, 0x6CB9, 0x6D27, 0xF9CA, -/* 1EC0 */ 0x6E38, 0xF9CB, 0x6FE1, 0x7336, 0x7337, 0xF9CC, 0x745C, 0x7531, -/* 1EC8 */ 0xF9CD, 0x7652, 0xF9CE, 0xF9CF, 0x7DAD, 0x81FE, 0x8438, 0x88D5, -/* 1ED0 */ 0x8A98, 0x8ADB, 0x8AED, 0x8E30, 0x8E42, 0x904A, 0x903E, 0x907A, -/* 1ED8 */ 0x9149, 0x91C9, 0x936E, 0xF9D0, 0xF9D1, 0x5809, 0xF9D2, 0x6BD3, -/* 1EE0 */ 0x8089, 0x80B2, 0xF9D3, 0xF9D4, 0x5141, 0x596B, 0x5C39, 0xF9D5, -/* 1EE8 */ 0xF9D6, 0x6F64, 0x73A7, 0x80E4, 0x8D07, 0xF9D7, 0x9217, 0x958F, -/* 1EF0 */ 0xF9D8, 0xF9D9, 0xF9DA, 0xF9DB, 0x807F, 0x620E, 0x701C, 0x7D68, -/* 1EF8 */ 0x878D, 0xF9DC, 0x57A0, 0x6069, 0x6147, 0x6BB7, 0x8ABE, 0x9280, -/* 1F00 */ 0x96B1, 0x4E59, 0x541F, 0x6DEB, 0x852D, 0x9670, 0x97F3, 0x98EE, -/* 1F08 */ 0x63D6, 0x6CE3, 0x9091, 0x51DD, 0x61C9, 0x81BA, 0x9DF9, 0x4F9D, -/* 1F10 */ 0x501A, 0x5100, 0x5B9C, 0x610F, 0x61FF, 0x64EC, 0x6905, 0x6BC5, -/* 1F18 */ 0x7591, 0x77E3, 0x7FA9, 0x8264, 0x858F, 0x87FB, 0x8863, 0x8ABC, -/* 1F20 */ 0x8B70, 0x91AB, 0x4E8C, 0x4EE5, 0x4F0A, 0xF9DD, 0xF9DE, 0x5937, -/* 1F28 */ 0x59E8, 0xF9DF, 0x5DF2, 0x5F1B, 0x5F5B, 0x6021, 0xF9E0, 0xF9E1, -/* 1F30 */ 0xF9E2, 0xF9E3, 0x723E, 0x73E5, 0xF9E4, 0x7570, 0x75CD, 0xF9E5, -/* 1F38 */ 0x79FB, 0xF9E6, 0x800C, 0x8033, 0x8084, 0x82E1, 0x8351, 0xF9E7, -/* 1F40 */ 0xF9E8, 0x8CBD, 0x8CB3, 0x9087, 0xF9E9, 0xF9EA, 0x98F4, 0x990C, -/* 1F48 */ 0xF9EB, 0xF9EC, 0x7037, 0x76CA, 0x7FCA, 0x7FCC, 0x7FFC, 0x8B1A, -/* 1F50 */ 0x4EBA, 0x4EC1, 0x5203, 0x5370, 0xF9ED, 0x54BD, 0x56E0, 0x59FB, -/* 1F58 */ 0x5BC5, 0x5F15, 0x5FCD, 0x6E6E, 0xF9EE, 0xF9EF, 0x7D6A, 0x8335, -/* 1F60 */ 0xF9F0, 0x8693, 0x8A8D, 0xF9F1, 0x976D, 0x9777, 0xF9F2, 0xF9F3, -/* 1F68 */ 0x4E00, 0x4F5A, 0x4F7E, 0x58F9, 0x65E5, 0x6EA2, 0x9038, 0x93B0, -/* 1F70 */ 0x99B9, 0x4EFB, 0x58EC, 0x598A, 0x59D9, 0x6041, 0xF9F4, 0xF9F5, -/* 1F78 */ 0x7A14, 0xF9F6, 0x834F, 0x8CC3, 0x5165, 0x5344, 0xF9F7, 0xF9F8, -/* 1F80 */ 0xF9F9, 0x4ECD, 0x5269, 0x5B55, 0x82BF, 0x4ED4, 0x523A, 0x54A8, -/* 1F88 */ 0x59C9, 0x59FF, 0x5B50, 0x5B57, 0x5B5C, 0x6063, 0x6148, 0x6ECB, -/* 1F90 */ 0x7099, 0x716E, 0x7386, 0x74F7, 0x75B5, 0x78C1, 0x7D2B, 0x8005, -/* 1F98 */ 0x81EA, 0x8328, 0x8517, 0x85C9, 0x8AEE, 0x8CC7, 0x96CC, 0x4F5C, -/* 1FA0 */ 0x52FA, 0x56BC, 0x65AB, 0x6628, 0x707C, 0x70B8, 0x7235, 0x7DBD, -/* 1FA8 */ 0x828D, 0x914C, 0x96C0, 0x9D72, 0x5B71, 0x68E7, 0x6B98, 0x6F7A, -/* 1FB0 */ 0x76DE, 0x5C91, 0x66AB, 0x6F5B, 0x7BB4, 0x7C2A, 0x8836, 0x96DC, -/* 1FB8 */ 0x4E08, 0x4ED7, 0x5320, 0x5834, 0x58BB, 0x58EF, 0x596C, 0x5C07, -/* 1FC0 */ 0x5E33, 0x5E84, 0x5F35, 0x638C, 0x66B2, 0x6756, 0x6A1F, 0x6AA3, -/* 1FC8 */ 0x6B0C, 0x6F3F, 0x7246, 0xF9FA, 0x7350, 0x748B, 0x7AE0, 0x7CA7, -/* 1FD0 */ 0x8178, 0x81DF, 0x81E7, 0x838A, 0x846C, 0x8523, 0x8594, 0x85CF, -/* 1FD8 */ 0x88DD, 0x8D13, 0x91AC, 0x9577, 0x969C, 0x518D, 0x54C9, 0x5728, -/* 1FE0 */ 0x5BB0, 0x624D, 0x6750, 0x683D, 0x6893, 0x6E3D, 0x6ED3, 0x707D, -/* 1FE8 */ 0x7E21, 0x88C1, 0x8CA1, 0x8F09, 0x9F4B, 0x9F4E, 0x722D, 0x7B8F, -/* 1FF0 */ 0x8ACD, 0x931A, 0x4F47, 0x4F4E, 0x5132, 0x5480, 0x59D0, 0x5E95, -/* 1FF8 */ 0x62B5, 0x6775, 0x696E, 0x6A17, 0x6CAE, 0x6E1A, 0x72D9, 0x732A, -/* 2000 */ 0x75BD, 0x7BB8, 0x7D35, 0x82E7, 0x83F9, 0x8457, 0x85F7, 0x8A5B, -/* 2008 */ 0x8CAF, 0x8E87, 0x9019, 0x90B8, 0x96CE, 0x9F5F, 0x52E3, 0x540A, -/* 2010 */ 0x5AE1, 0x5BC2, 0x6458, 0x6575, 0x6EF4, 0x72C4, 0xF9FB, 0x7684, -/* 2018 */ 0x7A4D, 0x7B1B, 0x7C4D, 0x7E3E, 0x7FDF, 0x837B, 0x8B2B, 0x8CCA, -/* 2020 */ 0x8D64, 0x8DE1, 0x8E5F, 0x8FEA, 0x8FF9, 0x9069, 0x93D1, 0x4F43, -/* 2028 */ 0x4F7A, 0x50B3, 0x5168, 0x5178, 0x524D, 0x526A, 0x5861, 0x587C, -/* 2030 */ 0x5960, 0x5C08, 0x5C55, 0x5EDB, 0x609B, 0x6230, 0x6813, 0x6BBF, -/* 2038 */ 0x6C08, 0x6FB1, 0x714E, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, -/* 2040 */ 0x7B4C, 0x7B8B, 0x7BAD, 0x7BC6, 0x7E8F, 0x8A6E, 0x8F3E, 0x8F49, -/* 2048 */ 0x923F, 0x9293, 0x9322, 0x942B, 0x96FB, 0x985A, 0x986B, 0x991E, -/* 2050 */ 0x5207, 0x622A, 0x6298, 0x6D59, 0x7664, 0x7ACA, 0x7BC0, 0x7D76, -/* 2058 */ 0x5360, 0x5CBE, 0x5E97, 0x6F38, 0x70B9, 0x7C98, 0x9711, 0x9B8E, -/* 2060 */ 0x9EDE, 0x63A5, 0x647A, 0x8776, 0x4E01, 0x4E95, 0x4EAD, 0x505C, -/* 2068 */ 0x5075, 0x5448, 0x59C3, 0x5B9A, 0x5E40, 0x5EAD, 0x5EF7, 0x5F81, -/* 2070 */ 0x60C5, 0x633A, 0x653F, 0x6574, 0x65CC, 0x6676, 0x6678, 0x67FE, -/* 2078 */ 0x6968, 0x6A89, 0x6B63, 0x6C40, 0x6DC0, 0x6DE8, 0x6E1F, 0x6E5E, -/* 2080 */ 0x701E, 0x70A1, 0x738E, 0x73FD, 0x753A, 0x775B, 0x7887, 0x798E, -/* 2088 */ 0x7A0B, 0x7A7D, 0x7CBE, 0x7D8E, 0x8247, 0x8A02, 0x8AEA, 0x8C9E, -/* 2090 */ 0x912D, 0x914A, 0x91D8, 0x9266, 0x92CC, 0x9320, 0x9706, 0x9756, -/* 2098 */ 0x975C, 0x9802, 0x9F0E, 0x5236, 0x5291, 0x557C, 0x5824, 0x5E1D, -/* 20A0 */ 0x5F1F, 0x608C, 0x63D0, 0x68AF, 0x6FDF, 0x796D, 0x7B2C, 0x81CD, -/* 20A8 */ 0x85BA, 0x88FD, 0x8AF8, 0x8E44, 0x918D, 0x9664, 0x969B, 0x973D, -/* 20B0 */ 0x984C, 0x9F4A, 0x4FCE, 0x5146, 0x51CB, 0x52A9, 0x5632, 0x5F14, -/* 20B8 */ 0x5F6B, 0x63AA, 0x64CD, 0x65E9, 0x6641, 0x66FA, 0x66F9, 0x671D, -/* 20C0 */ 0x689D, 0x68D7, 0x69FD, 0x6F15, 0x6F6E, 0x7167, 0x71E5, 0x722A, -/* 20C8 */ 0x74AA, 0x773A, 0x7956, 0x795A, 0x79DF, 0x7A20, 0x7A95, 0x7C97, -/* 20D0 */ 0x7CDF, 0x7D44, 0x7E70, 0x8087, 0x85FB, 0x86A4, 0x8A54, 0x8ABF, -/* 20D8 */ 0x8D99, 0x8E81, 0x9020, 0x906D, 0x91E3, 0x963B, 0x96D5, 0x9CE5, -/* 20E0 */ 0x65CF, 0x7C07, 0x8DB3, 0x93C3, 0x5B58, 0x5C0A, 0x5352, 0x62D9, -/* 20E8 */ 0x731D, 0x5027, 0x5B97, 0x5F9E, 0x60B0, 0x616B, 0x68D5, 0x6DD9, -/* 20F0 */ 0x742E, 0x7A2E, 0x7D42, 0x7D9C, 0x7E31, 0x816B, 0x8E2A, 0x8E35, -/* 20F8 */ 0x937E, 0x9418, 0x4F50, 0x5750, 0x5DE6, 0x5EA7, 0x632B, 0x7F6A, -/* 2100 */ 0x4E3B, 0x4F4F, 0x4F8F, 0x505A, 0x59DD, 0x80C4, 0x546A, 0x5468, -/* 2108 */ 0x55FE, 0x594F, 0x5B99, 0x5DDE, 0x5EDA, 0x665D, 0x6731, 0x67F1, -/* 2110 */ 0x682A, 0x6CE8, 0x6D32, 0x6E4A, 0x6F8D, 0x70B7, 0x73E0, 0x7587, -/* 2118 */ 0x7C4C, 0x7D02, 0x7D2C, 0x7DA2, 0x821F, 0x86DB, 0x8A3B, 0x8A85, -/* 2120 */ 0x8D70, 0x8E8A, 0x8F33, 0x9031, 0x914E, 0x9152, 0x9444, 0x99D0, -/* 2128 */ 0x7AF9, 0x7CA5, 0x4FCA, 0x5101, 0x51C6, 0x57C8, 0x5BEF, 0x5CFB, -/* 2130 */ 0x6659, 0x6A3D, 0x6D5A, 0x6E96, 0x6FEC, 0x710C, 0x756F, 0x7AE3, -/* 2138 */ 0x8822, 0x9021, 0x9075, 0x96CB, 0x99FF, 0x8301, 0x4E2D, 0x4EF2, -/* 2140 */ 0x8846, 0x91CD, 0x537D, 0x6ADB, 0x696B, 0x6C41, 0x847A, 0x589E, -/* 2148 */ 0x618E, 0x66FE, 0x62EF, 0x70DD, 0x7511, 0x75C7, 0x7E52, 0x84B8, -/* 2150 */ 0x8B49, 0x8D08, 0x4E4B, 0x53EA, 0x54AB, 0x5730, 0x5740, 0x5FD7, -/* 2158 */ 0x6301, 0x6307, 0x646F, 0x652F, 0x65E8, 0x667A, 0x679D, 0x67B3, -/* 2160 */ 0x6B62, 0x6C60, 0x6C9A, 0x6F2C, 0x77E5, 0x7825, 0x7949, 0x7957, -/* 2168 */ 0x7D19, 0x80A2, 0x8102, 0x81F3, 0x829D, 0x82B7, 0x8718, 0x8A8C, -/* 2170 */ 0xF9FC, 0x8D04, 0x8DBE, 0x9072, 0x76F4, 0x7A19, 0x7A37, 0x7E54, -/* 2178 */ 0x8077, 0x5507, 0x55D4, 0x5875, 0x632F, 0x6422, 0x6649, 0x664B, -/* 2180 */ 0x686D, 0x699B, 0x6B84, 0x6D25, 0x6EB1, 0x73CD, 0x7468, 0x74A1, -/* 2188 */ 0x755B, 0x75B9, 0x76E1, 0x771E, 0x778B, 0x79E6, 0x7E09, 0x7E1D, -/* 2190 */ 0x81FB, 0x852F, 0x8897, 0x8A3A, 0x8CD1, 0x8EEB, 0x8FB0, 0x9032, -/* 2198 */ 0x93AD, 0x9663, 0x9673, 0x9707, 0x4F84, 0x53F1, 0x59EA, 0x5AC9, -/* 21A0 */ 0x5E19, 0x684E, 0x74C6, 0x75BE, 0x79E9, 0x7A92, 0x81A3, 0x86ED, -/* 21A8 */ 0x8CEA, 0x8DCC, 0x8FED, 0x659F, 0x6715, 0xF9FD, 0x57F7, 0x6F57, -/* 21B0 */ 0x7DDD, 0x8F2F, 0x93F6, 0x96C6, 0x5FB5, 0x61F2, 0x6F84, 0x4E14, -/* 21B8 */ 0x4F98, 0x501F, 0x53C9, 0x55DF, 0x5D6F, 0x5DEE, 0x6B21, 0x6B64, -/* 21C0 */ 0x78CB, 0x7B9A, 0xF9FE, 0x8E49, 0x8ECA, 0x906E, 0x6349, 0x643E, -/* 21C8 */ 0x7740, 0x7A84, 0x932F, 0x947F, 0x9F6A, 0x64B0, 0x6FAF, 0x71E6, -/* 21D0 */ 0x74A8, 0x74DA, 0x7AC4, 0x7C12, 0x7E82, 0x7CB2, 0x7E98, 0x8B9A, -/* 21D8 */ 0x8D0A, 0x947D, 0x9910, 0x994C, 0x5239, 0x5BDF, 0x64E6, 0x672D, -/* 21E0 */ 0x7D2E, 0x50ED, 0x53C3, 0x5879, 0x6158, 0x6159, 0x61FA, 0x65AC, -/* 21E8 */ 0x7AD9, 0x8B92, 0x8B96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5A3C, -/* 21F0 */ 0x5EE0, 0x5F70, 0x6134, 0x655E, 0x660C, 0x6636, 0x66A2, 0x69CD, -/* 21F8 */ 0x6EC4, 0x6F32, 0x7316, 0x7621, 0x7A93, 0x8139, 0x8259, 0x83D6, -/* 2200 */ 0x84BC, 0x50B5, 0x57F0, 0x5BC0, 0x5BE8, 0x5F69, 0x63A1, 0x7826, -/* 2208 */ 0x7DB5, 0x83DC, 0x8521, 0x91C7, 0x91F5, 0x518A, 0x67F5, 0x7B56, -/* 2210 */ 0x8CAC, 0x51C4, 0x59BB, 0x60BD, 0x8655, 0x501C, 0xF9FF, 0x5254, -/* 2218 */ 0x5C3A, 0x617D, 0x621A, 0x62D3, 0x64F2, 0x65A5, 0x6ECC, 0x7620, -/* 2220 */ 0x810A, 0x8E60, 0x965F, 0x96BB, 0x4EDF, 0x5343, 0x5598, 0x5929, -/* 2228 */ 0x5DDD, 0x64C5, 0x6CC9, 0x6DFA, 0x7394, 0x7A7F, 0x821B, 0x85A6, -/* 2230 */ 0x8CE4, 0x8E10, 0x9077, 0x91E7, 0x95E1, 0x9621, 0x97C6, 0x51F8, -/* 2238 */ 0x54F2, 0x5586, 0x5FB9, 0x64A4, 0x6F88, 0x7DB4, 0x8F1F, 0x8F4D, -/* 2240 */ 0x9435, 0x50C9, 0x5C16, 0x6CBE, 0x6DFB, 0x751B, 0x77BB, 0x7C3D, -/* 2248 */ 0x7C64, 0x8A79, 0x8AC2, 0x581E, 0x59BE, 0x5E16, 0x6377, 0x7252, -/* 2250 */ 0x758A, 0x776B, 0x8ADC, 0x8CBC, 0x8F12, 0x5EF3, 0x6674, 0x6DF8, -/* 2258 */ 0x807D, 0x83C1, 0x8ACB, 0x9751, 0x9BD6, 0xFA00, 0x5243, 0x66FF, -/* 2260 */ 0x6D95, 0x6EEF, 0x7DE0, 0x8AE6, 0x902E, 0x905E, 0x9AD4, 0x521D, -/* 2268 */ 0x527F, 0x54E8, 0x6194, 0x6284, 0x62DB, 0x68A2, 0x6912, 0x695A, -/* 2270 */ 0x6A35, 0x7092, 0x7126, 0x785D, 0x7901, 0x790E, 0x79D2, 0x7A0D, -/* 2278 */ 0x8096, 0x8278, 0x82D5, 0x8349, 0x8549, 0x8C82, 0x8D85, 0x9162, -/* 2280 */ 0x918B, 0x91AE, 0x4FC3, 0x56D1, 0x71ED, 0x77D7, 0x8700, 0x89F8, -/* 2288 */ 0x5BF8, 0x5FD6, 0x6751, 0x90A8, 0x53E2, 0x585A, 0x5BF5, 0x60A4, -/* 2290 */ 0x6181, 0x6460, 0x7E3D, 0x8070, 0x8525, 0x9283, 0x64AE, 0x50AC, -/* 2298 */ 0x5D14, 0x6700, 0x589C, 0x62BD, 0x63A8, 0x690E, 0x6978, 0x6A1E, -/* 22A0 */ 0x6E6B, 0x76BA, 0x79CB, 0x82BB, 0x8429, 0x8ACF, 0x8DA8, 0x8FFD, -/* 22A8 */ 0x9112, 0x914B, 0x919C, 0x9310, 0x9318, 0x939A, 0x96DB, 0x9A36, -/* 22B0 */ 0x9C0D, 0x4E11, 0x755C, 0x795D, 0x7AFA, 0x7B51, 0x7BC9, 0x7E2E, -/* 22B8 */ 0x84C4, 0x8E59, 0x8E74, 0x8EF8, 0x9010, 0x6625, 0x693F, 0x7443, -/* 22C0 */ 0x51FA, 0x672E, 0x9EDC, 0x5145, 0x5FE0, 0x6C96, 0x87F2, 0x885D, -/* 22C8 */ 0x8877, 0x60B4, 0x81B5, 0x8403, 0x8D05, 0x53D6, 0x5439, 0x5634, -/* 22D0 */ 0x5A36, 0x5C31, 0x708A, 0x7FE0, 0x805A, 0x8106, 0x81ED, 0x8DA3, -/* 22D8 */ 0x9189, 0x9A5F, 0x9DF2, 0x5074, 0x4EC4, 0x53A0, 0x60FB, 0x6E2C, -/* 22E0 */ 0x5C64, 0x4F88, 0x5024, 0x55E4, 0x5CD9, 0x5E5F, 0x6065, 0x6894, -/* 22E8 */ 0x6CBB, 0x6DC4, 0x71BE, 0x75D4, 0x75F4, 0x7661, 0x7A1A, 0x7A49, -/* 22F0 */ 0x7DC7, 0x7DFB, 0x7F6E, 0x81F4, 0x86A9, 0x8F1C, 0x96C9, 0x99B3, -/* 22F8 */ 0x9F52, 0x5247, 0x52C5, 0x98ED, 0x89AA, 0x4E03, 0x67D2, 0x6F06, -/* 2300 */ 0x4FB5, 0x5BE2, 0x6795, 0x6C88, 0x6D78, 0x741B, 0x7827, 0x91DD, -/* 2308 */ 0x937C, 0x87C4, 0x79E4, 0x7A31, 0x5FEB, 0x4ED6, 0x54A4, 0x553E, -/* 2310 */ 0x58AE, 0x59A5, 0x60F0, 0x6253, 0x62D6, 0x6736, 0x6955, 0x8235, -/* 2318 */ 0x9640, 0x99B1, 0x99DD, 0x502C, 0x5353, 0x5544, 0x577C, 0xFA01, -/* 2320 */ 0x6258, 0xFA02, 0x64E2, 0x666B, 0x67DD, 0x6FC1, 0x6FEF, 0x7422, -/* 2328 */ 0x7438, 0x8A17, 0x9438, 0x5451, 0x5606, 0x5766, 0x5F48, 0x619A, -/* 2330 */ 0x6B4E, 0x7058, 0x70AD, 0x7DBB, 0x8A95, 0x596A, 0x812B, 0x63A2, -/* 2338 */ 0x7708, 0x803D, 0x8CAA, 0x5854, 0x642D, 0x69BB, 0x5B95, 0x5E11, -/* 2340 */ 0x6E6F, 0xFA03, 0x8569, 0x514C, 0x53F0, 0x592A, 0x6020, 0x614B, -/* 2348 */ 0x6B86, 0x6C70, 0x6CF0, 0x7B1E, 0x80CE, 0x82D4, 0x8DC6, 0x90B0, -/* 2350 */ 0x98B1, 0xFA04, 0x64C7, 0x6FA4, 0x6491, 0x6504, 0x514E, 0x5410, -/* 2358 */ 0x571F, 0x8A0E, 0x615F, 0x6876, 0xFA05, 0x75DB, 0x7B52, 0x7D71, -/* 2360 */ 0x901A, 0x5806, 0x69CC, 0x817F, 0x892A, 0x9000, 0x9839, 0x5078, -/* 2368 */ 0x5957, 0x59AC, 0x6295, 0x900F, 0x9B2A, 0x615D, 0x7279, 0x95D6, -/* 2370 */ 0x5761, 0x5A46, 0x5DF4, 0x628A, 0x64AD, 0x64FA, 0x6777, 0x6CE2, -/* 2378 */ 0x6D3E, 0x722C, 0x7436, 0x7834, 0x7F77, 0x82AD, 0x8DDB, 0x9817, -/* 2380 */ 0x5224, 0x5742, 0x677F, 0x7248, 0x74E3, 0x8CA9, 0x8FA6, 0x9211, -/* 2388 */ 0x962A, 0x516B, 0x53ED, 0x634C, 0x4F69, 0x5504, 0x6096, 0x6557, -/* 2390 */ 0x6C9B, 0x6D7F, 0x724C, 0x72FD, 0x7A17, 0x8987, 0x8C9D, 0x5F6D, -/* 2398 */ 0x6F8E, 0x70F9, 0x81A8, 0x610E, 0x4FBF, 0x504F, 0x6241, 0x7247, -/* 23A0 */ 0x7BC7, 0x7DE8, 0x7FE9, 0x904D, 0x97AD, 0x9A19, 0x8CB6, 0x576A, -/* 23A8 */ 0x5E73, 0x67B0, 0x840D, 0x8A55, 0x5420, 0x5B16, 0x5E63, 0x5EE2, -/* 23B0 */ 0x5F0A, 0x6583, 0x80BA, 0x853D, 0x9589, 0x965B, 0x4F48, 0x5305, -/* 23B8 */ 0x530D, 0x530F, 0x5486, 0x54FA, 0x5703, 0x5E03, 0x6016, 0x629B, -/* 23C0 */ 0x62B1, 0x6355, 0xFA06, 0x6CE1, 0x6D66, 0x75B1, 0x7832, 0x80DE, -/* 23C8 */ 0x812F, 0x82DE, 0x8461, 0x84B2, 0x888D, 0x8912, 0x900B, 0x92EA, -/* 23D0 */ 0x98FD, 0x9B91, 0x5E45, 0x66B4, 0x66DD, 0x7011, 0x7206, 0xFA07, -/* 23D8 */ 0x4FF5, 0x527D, 0x5F6A, 0x6153, 0x6753, 0x6A19, 0x6F02, 0x74E2, -/* 23E0 */ 0x7968, 0x8868, 0x8C79, 0x98C7, 0x98C4, 0x9A43, 0x54C1, 0x7A1F, -/* 23E8 */ 0x6953, 0x8AF7, 0x8C4A, 0x98A8, 0x99AE, 0x5F7C, 0x62AB, 0x75B2, -/* 23F0 */ 0x76AE, 0x88AB, 0x907F, 0x9642, 0x5339, 0x5F3C, 0x5FC5, 0x6CCC, -/* 23F8 */ 0x73CC, 0x7562, 0x758B, 0x7B46, 0x82FE, 0x999D, 0x4E4F, 0x903C, -/* 2400 */ 0x4E0B, 0x4F55, 0x53A6, 0x590F, 0x5EC8, 0x6630, 0x6CB3, 0x7455, -/* 2408 */ 0x8377, 0x8766, 0x8CC0, 0x9050, 0x971E, 0x9C15, 0x58D1, 0x5B78, -/* 2410 */ 0x8650, 0x8B14, 0x9DB4, 0x5BD2, 0x6068, 0x608D, 0x65F1, 0x6C57, -/* 2418 */ 0x6F22, 0x6FA3, 0x701A, 0x7F55, 0x7FF0, 0x9591, 0x9592, 0x9650, -/* 2420 */ 0x97D3, 0x5272, 0x8F44, 0x51FD, 0x542B, 0x54B8, 0x5563, 0x558A, -/* 2428 */ 0x6ABB, 0x6DB5, 0x7DD8, 0x8266, 0x929C, 0x9677, 0x9E79, 0x5408, -/* 2430 */ 0x54C8, 0x76D2, 0x86E4, 0x95A4, 0x95D4, 0x965C, 0x4EA2, 0x4F09, -/* 2438 */ 0x59EE, 0x5AE6, 0x5DF7, 0x6052, 0x6297, 0x676D, 0x6841, 0x6C86, -/* 2440 */ 0x6E2F, 0x7F38, 0x809B, 0x822A, 0xFA08, 0xFA09, 0x9805, 0x4EA5, -/* 2448 */ 0x5055, 0x54B3, 0x5793, 0x595A, 0x5B69, 0x5BB3, 0x61C8, 0x6977, -/* 2450 */ 0x6D77, 0x7023, 0x87F9, 0x89E3, 0x8A72, 0x8AE7, 0x9082, 0x99ED, -/* 2458 */ 0x9AB8, 0x52BE, 0x6838, 0x5016, 0x5E78, 0x674F, 0x8347, 0x884C, -/* 2460 */ 0x4EAB, 0x5411, 0x56AE, 0x73E6, 0x9115, 0x97FF, 0x9909, 0x9957, -/* 2468 */ 0x9999, 0x5653, 0x589F, 0x865B, 0x8A31, 0x61B2, 0x6AF6, 0x737B, -/* 2470 */ 0x8ED2, 0x6B47, 0x96AA, 0x9A57, 0x5955, 0x7200, 0x8D6B, 0x9769, -/* 2478 */ 0x4FD4, 0x5CF4, 0x5F26, 0x61F8, 0x665B, 0x6CEB, 0x70AB, 0x7384, -/* 2480 */ 0x73B9, 0x73FE, 0x7729, 0x774D, 0x7D43, 0x7D62, 0x7E23, 0x8237, -/* 2488 */ 0x8852, 0xFA0A, 0x8CE2, 0x9249, 0x986F, 0x5B51, 0x7A74, 0x8840, -/* 2490 */ 0x9801, 0x5ACC, 0x4FE0, 0x5354, 0x593E, 0x5CFD, 0x633E, 0x6D79, -/* 2498 */ 0x72F9, 0x8105, 0x8107, 0x83A2, 0x92CF, 0x9830, 0x4EA8, 0x5144, -/* 24A0 */ 0x5211, 0x578B, 0x5F62, 0x6CC2, 0x6ECE, 0x7005, 0x7050, 0x70AF, -/* 24A8 */ 0x7192, 0x73E9, 0x7469, 0x834A, 0x87A2, 0x8861, 0x9008, 0x90A2, -/* 24B0 */ 0x93A3, 0x99A8, 0x516E, 0x5F57, 0x60E0, 0x6167, 0x66B3, 0x8559, -/* 24B8 */ 0x8E4A, 0x91AF, 0x978B, 0x4E4E, 0x4E92, 0x547C, 0x58D5, 0x58FA, -/* 24C0 */ 0x597D, 0x5CB5, 0x5F27, 0x6236, 0x6248, 0x660A, 0x6667, 0x6BEB, -/* 24C8 */ 0x6D69, 0x6DCF, 0x6E56, 0x6EF8, 0x6F94, 0x6FE0, 0x6FE9, 0x705D, -/* 24D0 */ 0x72D0, 0x7425, 0x745A, 0x74E0, 0x7693, 0x795C, 0x7CCA, 0x7E1E, -/* 24D8 */ 0x80E1, 0x82A6, 0x846B, 0x84BF, 0x864E, 0x865F, 0x8774, 0x8B77, -/* 24E0 */ 0x8C6A, 0x93AC, 0x9800, 0x9865, 0x60D1, 0x6216, 0x9177, 0x5A5A, -/* 24E8 */ 0x660F, 0x6DF7, 0x6E3E, 0x743F, 0x9B42, 0x5FFD, 0x60DA, 0x7B0F, -/* 24F0 */ 0x54C4, 0x5F18, 0x6C5E, 0x6CD3, 0x6D2A, 0x70D8, 0x7D05, 0x8679, -/* 24F8 */ 0x8A0C, 0x9D3B, 0x5316, 0x548C, 0x5B05, 0x6A3A, 0x706B, 0x7575, -/* 2500 */ 0x798D, 0x79BE, 0x82B1, 0x83EF, 0x8A71, 0x8B41, 0x8CA8, 0x9774, -/* 2508 */ 0xFA0B, 0x64F4, 0x652B, 0x78BA, 0x78BB, 0x7A6B, 0x4E38, 0x559A, -/* 2510 */ 0x5950, 0x5BA6, 0x5E7B, 0x60A3, 0x63DB, 0x6B61, 0x6665, 0x6853, -/* 2518 */ 0x6E19, 0x7165, 0x74B0, 0x7D08, 0x9084, 0x9A69, 0x9C25, 0x6D3B, -/* 2520 */ 0x6ED1, 0x733E, 0x8C41, 0x95CA, 0x51F0, 0x5E4C, 0x5FA8, 0x604D, -/* 2528 */ 0x60F6, 0x6130, 0x614C, 0x6643, 0x6644, 0x69A5, 0x6CC1, 0x6E5F, -/* 2530 */ 0x6EC9, 0x6F62, 0x714C, 0x749C, 0x7687, 0x7BC1, 0x7C27, 0x8352, -/* 2538 */ 0x8757, 0x9051, 0x968D, 0x9EC3, 0x532F, 0x56DE, 0x5EFB, 0x5F8A, -/* 2540 */ 0x6062, 0x6094, 0x61F7, 0x6666, 0x6703, 0x6A9C, 0x6DEE, 0x6FAE, -/* 2548 */ 0x7070, 0x736A, 0x7E6A, 0x81BE, 0x8334, 0x86D4, 0x8AA8, 0x8CC4, -/* 2550 */ 0x5283, 0x7372, 0x5B96, 0x6A6B, 0x9404, 0x54EE, 0x5686, 0x5B5D, -/* 2558 */ 0x6548, 0x6585, 0x66C9, 0x689F, 0x6D8D, 0x6DC6, 0x723B, 0x80B4, -/* 2560 */ 0x9175, 0x9A4D, 0x4FAF, 0x5019, 0x539A, 0x540E, 0x543C, 0x5589, -/* 2568 */ 0x55C5, 0x5E3F, 0x5F8C, 0x673D, 0x7166, 0x73DD, 0x9005, 0x52DB, -/* 2570 */ 0x52F3, 0x5864, 0x58CE, 0x7104, 0x718F, 0x71FB, 0x85B0, 0x8A13, -/* 2578 */ 0x6688, 0x85A8, 0x55A7, 0x6684, 0x714A, 0x8431, 0x5349, 0x5599, -/* 2580 */ 0x6BC1, 0x5F59, 0x5FBD, 0x63EE, 0x6689, 0x7147, 0x8AF1, 0x8F1D, -/* 2588 */ 0x9EBE, 0x4F11, 0x643A, 0x70CB, 0x7566, 0x8667, 0x6064, 0x8B4E, -/* 2590 */ 0x9DF8, 0x5147, 0x51F6, 0x5308, 0x6D36, 0x80F8, 0x9ED1, 0x6615, -/* 2598 */ 0x6B23, 0x7098, 0x75D5, 0x5403, 0x5C79, 0x7D07, 0x8A16, 0x6B20, -/* 25A0 */ 0x6B3D, 0x6B46, 0x5438, 0x6070, 0x6D3D, 0x7FD5, 0x8208, 0x50D6, -/* 25A8 */ 0x51DE, 0x559C, 0x566B, 0x56CD, 0x59EC, 0x5B09, 0x5E0C, 0x6199, -/* 25B0 */ 0x6198, 0x6231, 0x665E, 0x66E6, 0x7199, 0x71B9, 0x71BA, 0x72A7, -/* 25B8 */ 0x79A7, 0x7A00, 0x7FB2, 0x8A70, -/* End of table Total Length = 0x362B * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/u20kscgl.ut b/mozilla/lib/libi18n/unicode/utotbl/u20kscgl.ut deleted file mode 100644 index 88b5a105492..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/u20kscgl.ut +++ /dev/null @@ -1,3296 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 2134 - srcEnd = 213D - destBegin = 3008 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 2321 - srcEnd = 235B - destBegin = FF01 -End of Item 0001 - -Begin of Item 0002 - Format 0 - srcBegin = 235D - srcEnd = 237D - destBegin = FF3D -End of Item 0002 - -Begin of Item 0003 - Format 0 - srcBegin = 2421 - srcEnd = 247E - destBegin = 3131 -End of Item 0003 - -Begin of Item 0004 - Format 0 - srcBegin = 2521 - srcEnd = 252A - destBegin = 2170 -End of Item 0004 - -Begin of Item 0005 - Format 0 - srcBegin = 2530 - srcEnd = 2539 - destBegin = 2160 -End of Item 0005 - -Begin of Item 0006 - Format 0 - srcBegin = 2541 - srcEnd = 2551 - destBegin = 0391 -End of Item 0006 - -Begin of Item 0007 - Format 0 - srcBegin = 2552 - srcEnd = 2558 - destBegin = 03A3 -End of Item 0007 - -Begin of Item 0008 - Format 0 - srcBegin = 2561 - srcEnd = 2571 - destBegin = 03B1 -End of Item 0008 - -Begin of Item 0009 - Format 0 - srcBegin = 2572 - srcEnd = 2578 - destBegin = 03C3 -End of Item 0009 - -Begin of Item 000A - Format 0 - srcBegin = 265D - srcEnd = 2664 - destBegin = 2543 -End of Item 000A - -Begin of Item 000B - Format 0 - srcBegin = 272B - srcEnd = 2734 - destBegin = 3399 -End of Item 000B - -Begin of Item 000C - Format 0 - srcBegin = 273F - srcEnd = 2748 - destBegin = 33B0 -End of Item 000C - -Begin of Item 000D - Format 0 - srcBegin = 2749 - srcEnd = 274D - destBegin = 3380 -End of Item 000D - -Begin of Item 000E - Format 0 - srcBegin = 274E - srcEnd = 2753 - destBegin = 33BA -End of Item 000E - -Begin of Item 000F - Format 0 - srcBegin = 2754 - srcEnd = 2758 - destBegin = 3390 -End of Item 000F - -Begin of Item 0010 - Format 0 - srcBegin = 2831 - srcEnd = 284C - destBegin = 3260 -End of Item 0010 - -Begin of Item 0011 - Format 0 - srcBegin = 284D - srcEnd = 2866 - destBegin = 24D0 -End of Item 0011 - -Begin of Item 0012 - Format 0 - srcBegin = 2867 - srcEnd = 2875 - destBegin = 2460 -End of Item 0012 - -Begin of Item 0013 - Format 0 - srcBegin = 2931 - srcEnd = 294C - destBegin = 3200 -End of Item 0013 - -Begin of Item 0014 - Format 0 - srcBegin = 294D - srcEnd = 2966 - destBegin = 249C -End of Item 0014 - -Begin of Item 0015 - Format 0 - srcBegin = 2967 - srcEnd = 2975 - destBegin = 2474 -End of Item 0015 - -Begin of Item 0016 - Format 0 - srcBegin = 2A21 - srcEnd = 2A73 - destBegin = 3041 -End of Item 0016 - -Begin of Item 0017 - Format 0 - srcBegin = 2B21 - srcEnd = 2B76 - destBegin = 30A1 -End of Item 0017 - -Begin of Item 0018 - Format 0 - srcBegin = 2C21 - srcEnd = 2C26 - destBegin = 0410 -End of Item 0018 - -Begin of Item 0019 - Format 0 - srcBegin = 2C28 - srcEnd = 2C41 - destBegin = 0416 -End of Item 0019 - -Begin of Item 001A - Format 0 - srcBegin = 2C51 - srcEnd = 2C56 - destBegin = 0430 -End of Item 001A - -Begin of Item 001B - Format 0 - srcBegin = 2C58 - srcEnd = 2C71 - destBegin = 0436 -End of Item 001B - -Begin of Item 001C - Format 0 - srcBegin = 3028 - srcEnd = 302F - destBegin = AC10 -End of Item 001C - -Begin of Item 001D - Format 0 - srcBegin = 3030 - srcEnd = 3034 - destBegin = AC19 -End of Item 001D - -Begin of Item 001E - Format 0 - srcBegin = 3334 - srcEnd = 3338 - destBegin = B0AB -End of Item 001E - -Begin of Item 001F - Format 0 - srcBegin = 345D - srcEnd = 3461 - destBegin = B2EB -End of Item 001F - -Begin of Item 0020 - Format 0 - srcBegin = 3465 - srcEnd = 3469 - destBegin = B2F7 -End of Item 0020 - -Begin of Item 0021 - Format 0 - srcBegin = 3839 - srcEnd = 383D - destBegin = B9CE -End of Item 0021 - -Begin of Item 0022 - Format 0 - srcBegin = 3959 - srcEnd = 395D - destBegin = BC14 -End of Item 0022 - -Begin of Item 0023 - Format 0 - srcBegin = 395E - srcEnd = 3962 - destBegin = BC1B -End of Item 0023 - -Begin of Item 0024 - Format 0 - srcBegin = 3C2D - srcEnd = 3C31 - destBegin = C11C -End of Item 0024 - -Begin of Item 0025 - Format 0 - srcBegin = 3E76 - srcEnd = 3E7C - destBegin = C5C4 -End of Item 0025 - -Begin of Item 0026 - Format 0 - srcBegin = 3F30 - srcEnd = 3F35 - destBegin = C5FC -End of Item 0026 - -Begin of Item 0027 - Format 0 - srcBegin = 4040 - srcEnd = 4047 - destBegin = C751 -End of Item 0027 - -Begin of Item 0028 - Format 0 - srcBegin = 515B - srcEnd = 5160 - destBegin = F90E -End of Item 0028 - -Begin of Item 0029 - Format 0 - srcBegin = 5162 - srcEnd = 5166 - destBegin = F914 -End of Item 0029 - -Begin of Item 002A - Format 0 - srcBegin = 5227 - srcEnd = 522B - destBegin = F928 -End of Item 002A - -Begin of Item 002B - Format 0 - srcBegin = 5246 - srcEnd = 524B - destBegin = F933 -End of Item 002B - -Begin of Item 002C - Format 0 - srcBegin = 524D - srcEnd = 5257 - destBegin = F939 -End of Item 002C - -Begin of Item 002D - Format 0 - srcBegin = 5264 - srcEnd = 526B - destBegin = F94A -End of Item 002D - -Begin of Item 002E - Format 0 - srcBegin = 5270 - srcEnd = 5275 - destBegin = F952 -End of Item 002E - -Begin of Item 002F - Format 1 - srcBegin = 2121 - srcEnd = 2133 - mappingOffset = 0000 - Mapping = - 3000 3001 3002 00B7 2025 2026 00A8 3003 - 00AD 2015 2225 FF3C 223C 2018 2019 201C - 201D 3014 3015 -End of Item 002F - -Begin of Item 0030 - Format 1 - srcBegin = 213E - srcEnd = 217E - mappingOffset = 0013 - Mapping = - 00B1 00D7 00F7 2260 2264 2265 221E 2234 - 00B0 2032 2033 2103 212B FFE0 FFE1 FFE5 - 2642 2640 2220 22A5 2312 2202 2207 2261 - 2252 00A7 203B 2606 2605 25CB 25CF 25CE - 25C7 25C6 25A1 25A0 25B3 25B2 25BD 25BC - 2192 2190 2191 2193 2194 3013 226A 226B - 221A 223D 221D 2235 222B 222C 2208 220B - 2286 2287 2282 2283 222A 2229 2227 2228 - FFE2 -End of Item 0030 - -Begin of Item 0031 - Format 1 - srcBegin = 2221 - srcEnd = 2265 - mappingOffset = 0054 - Mapping = - 21D2 21D4 2200 2203 00B4 FF5E 02C7 02D8 - 02DD 02DA 02D9 00B8 02DB 00A1 00BF 02D0 - 222E 2211 220F 00A4 2109 2030 25C1 25C0 - 25B7 25B6 2664 2660 2661 2665 2667 2663 - 2299 25C8 25A3 25D0 25D1 2592 25A4 25A5 - 25A8 25A7 25A6 25A9 2668 260F 260E 261C - 261E 00B6 2020 2021 2195 2197 2199 2196 - 2198 266D 2669 266A 266C 327F 321C 2116 - 33C7 2122 33C2 33D8 2121 -End of Item 0031 - -Begin of Item 0032 - Format 2 - srcBegin = 235C - destBegin = FFE6 -End of Item 0032 - -Begin of Item 0033 - Format 2 - srcBegin = 237E - destBegin = FFE3 -End of Item 0033 - -Begin of Item 0034 - Format 1 - srcBegin = 2621 - srcEnd = 265C - mappingOffset = 0099 - Mapping = - 2500 2502 250C 2510 2518 2514 251C 252C - 2524 2534 253C 2501 2503 250F 2513 251B - 2517 2523 2533 252B 253B 254B 2520 252F - 2528 2537 253F 251D 2530 2525 2538 2542 - 2512 2511 251A 2519 2516 2515 250E 250D - 251E 251F 2521 2522 2526 2527 2529 252A - 252D 252E 2531 2532 2535 2536 2539 253A - 253D 253E 2540 2541 -End of Item 0034 - -Begin of Item 0035 - Format 1 - srcBegin = 2721 - srcEnd = 272A - mappingOffset = 00D5 - Mapping = - 3395 3396 3397 2113 3398 33C4 33A3 33A4 - 33A5 33A6 -End of Item 0035 - -Begin of Item 0036 - Format 1 - srcBegin = 2735 - srcEnd = 273E - mappingOffset = 00DF - Mapping = - 33CA 338D 338E 338F 33CF 3388 3389 33C8 - 33A7 33A8 -End of Item 0036 - -Begin of Item 0037 - Format 1 - srcBegin = 2759 - srcEnd = 276F - mappingOffset = 00E9 - Mapping = - 2126 33C0 33C1 338A 338B 338C 33D6 33C5 - 33AD 33AE 33AF 33DB 33A9 33AA 33AB 33AC - 33DD 33D0 33D3 33C3 33C9 33DC 33C6 -End of Item 0037 - -Begin of Item 0038 - Format 1 - srcBegin = 2821 - srcEnd = 282F - mappingOffset = 0100 - Mapping = - 00C6 00D0 00AA 0126 FFFD 0132 FFFD 013F - 0141 00D8 0152 00BA 00DE 0166 014A -End of Item 0038 - -Begin of Item 0039 - Format 1 - srcBegin = 2876 - srcEnd = 287E - mappingOffset = 010F - Mapping = - 00BD 2153 2154 00BC 00BE 215B 215C 215D - 215E -End of Item 0039 - -Begin of Item 003A - Format 1 - srcBegin = 2921 - srcEnd = 2930 - mappingOffset = 0118 - Mapping = - 00E6 0111 00F0 0127 0131 0133 0138 0140 - 0142 00F8 0153 00DF 00FE 0167 014B 0149 -End of Item 003A - -Begin of Item 003B - Format 1 - srcBegin = 2976 - srcEnd = 297E - mappingOffset = 0128 - Mapping = - 00B9 00B2 00B3 2074 207F 2081 2082 2083 - 2084 -End of Item 003B - -Begin of Item 003C - Format 2 - srcBegin = 2C27 - destBegin = 0401 -End of Item 003C - -Begin of Item 003D - Format 2 - srcBegin = 2C57 - destBegin = 0451 -End of Item 003D - -Begin of Item 003E - Format 1 - srcBegin = 3021 - srcEnd = 3027 - mappingOffset = 0131 - Mapping = - AC00 AC01 AC04 AC07 AC08 AC09 AC0A -End of Item 003E - -Begin of Item 003F - Format 1 - srcBegin = 3035 - srcEnd = 307E - mappingOffset = 0138 - Mapping = - AC20 AC24 AC2C AC2D AC2F AC30 AC31 AC38 - AC39 AC3C AC40 AC4B AC4D AC54 AC58 AC5C - AC70 AC71 AC74 AC77 AC78 AC7A AC80 AC81 - AC83 AC84 AC85 AC86 AC89 AC8A AC8B AC8C - AC90 AC94 AC9C AC9D AC9F ACA0 ACA1 ACA8 - ACA9 ACAA ACAC ACAF ACB0 ACB8 ACB9 ACBB - ACBC ACBD ACC1 ACC4 ACC8 ACCC ACD5 ACD7 - ACE0 ACE1 ACE4 ACE7 ACE8 ACEA ACEC ACEF - ACF0 ACF1 ACF3 ACF5 ACF6 ACFC ACFD AD00 - AD04 AD06 -End of Item 003F - -Begin of Item 0040 - Format 1 - srcBegin = 3121 - srcEnd = 317E - mappingOffset = 0182 - Mapping = - AD0C AD0D AD0F AD11 AD18 AD1C AD20 AD29 - AD2C AD2D AD34 AD35 AD38 AD3C AD44 AD45 - AD47 AD49 AD50 AD54 AD58 AD61 AD63 AD6C - AD6D AD70 AD73 AD74 AD75 AD76 AD7B AD7C - AD7D AD7F AD81 AD82 AD88 AD89 AD8C AD90 - AD9C AD9D ADA4 ADB7 ADC0 ADC1 ADC4 ADC8 - ADD0 ADD1 ADD3 ADDC ADE0 ADE4 ADF8 ADF9 - ADFC ADFF AE00 AE01 AE08 AE09 AE0B AE0D - AE14 AE30 AE31 AE34 AE37 AE38 AE3A AE40 - AE41 AE43 AE45 AE46 AE4A AE4C AE4D AE4E - AE50 AE54 AE56 AE5C AE5D AE5F AE60 AE61 - AE65 AE68 AE69 AE6C AE70 AE78 -End of Item 0040 - -Begin of Item 0041 - Format 1 - srcBegin = 3221 - srcEnd = 327E - mappingOffset = 01E0 - Mapping = - AE79 AE7B AE7C AE7D AE84 AE85 AE8C AEBC - AEBD AEBE AEC0 AEC4 AECC AECD AECF AED0 - AED1 AED8 AED9 AEDC AEE8 AEEB AEED AEF4 - AEF8 AEFC AF07 AF08 AF0D AF10 AF2C AF2D - AF30 AF32 AF34 AF3C AF3D AF3F AF41 AF42 - AF43 AF48 AF49 AF50 AF5C AF5D AF64 AF65 - AF79 AF80 AF84 AF88 AF90 AF91 AF95 AF9C - AFB8 AFB9 AFBC AFC0 AFC7 AFC8 AFC9 AFCB - AFCD AFCE AFD4 AFDC AFE8 AFE9 AFF0 AFF1 - AFF4 AFF8 B000 B001 B004 B00C B010 B014 - B01C B01D B028 B044 B045 B048 B04A B04C - B04E B053 B054 B055 B057 B059 -End of Item 0041 - -Begin of Item 0042 - Format 1 - srcBegin = 3321 - srcEnd = 3333 - mappingOffset = 023E - Mapping = - B05D B07C B07D B080 B084 B08C B08D B08F - B091 B098 B099 B09A B09C B09F B0A0 B0A1 - B0A2 B0A8 B0A9 -End of Item 0042 - -Begin of Item 0043 - Format 1 - srcBegin = 3339 - srcEnd = 337E - mappingOffset = 0251 - Mapping = - B0B1 B0B3 B0B4 B0B5 B0B8 B0BC B0C4 B0C5 - B0C7 B0C8 B0C9 B0D0 B0D1 B0D4 B0D8 B0E0 - B0E5 B108 B109 B10B B10C B110 B112 B113 - B118 B119 B11B B11C B11D B123 B124 B125 - B128 B12C B134 B135 B137 B138 B139 B140 - B141 B144 B148 B150 B151 B154 B155 B158 - B15C B160 B178 B179 B17C B180 B182 B188 - B189 B18B B18D B192 B193 B194 B198 B19C - B1A8 B1CC B1D0 B1D4 B1DC B1DD -End of Item 0043 - -Begin of Item 0044 - Format 1 - srcBegin = 3421 - srcEnd = 345C - mappingOffset = 0297 - Mapping = - B1DF B1E8 B1E9 B1EC B1F0 B1F9 B1FB B1FD - B204 B205 B208 B20B B20C B214 B215 B217 - B219 B220 B234 B23C B258 B25C B260 B268 - B269 B274 B275 B27C B284 B285 B289 B290 - B291 B294 B298 B299 B29A B2A0 B2A1 B2A3 - B2A5 B2A6 B2AA B2AC B2B0 B2B4 B2C8 B2C9 - B2CC B2D0 B2D2 B2D8 B2D9 B2DB B2DD B2E2 - B2E4 B2E5 B2E6 B2E8 -End of Item 0044 - -Begin of Item 0045 - Format 1 - srcBegin = 3462 - srcEnd = 3464 - mappingOffset = 02D3 - Mapping = - B2F3 B2F4 B2F5 -End of Item 0045 - -Begin of Item 0046 - Format 1 - srcBegin = 346A - srcEnd = 347E - mappingOffset = 02D6 - Mapping = - B2FF B300 B301 B304 B308 B310 B311 B313 - B314 B315 B31C B354 B355 B356 B358 B35B - B35C B35E B35F B364 B365 -End of Item 0046 - -Begin of Item 0047 - Format 1 - srcBegin = 3521 - srcEnd = 357E - mappingOffset = 02EB - Mapping = - B367 B369 B36B B36E B370 B371 B374 B378 - B380 B381 B383 B384 B385 B38C B390 B394 - B3A0 B3A1 B3A8 B3AC B3C4 B3C5 B3C8 B3CB - B3CC B3CE B3D0 B3D4 B3D5 B3D7 B3D9 B3DB - B3DD B3E0 B3E4 B3E8 B3FC B410 B418 B41C - B420 B428 B429 B42B B434 B450 B451 B454 - B458 B460 B461 B463 B465 B46C B480 B488 - B49D B4A4 B4A8 B4AC B4B5 B4B7 B4B9 B4C0 - B4C4 B4C8 B4D0 B4D5 B4DC B4DD B4E0 B4E3 - B4E4 B4E6 B4EC B4ED B4EF B4F1 B4F8 B514 - B515 B518 B51B B51C B524 B525 B527 B528 - B529 B52A B530 B531 B534 B538 -End of Item 0047 - -Begin of Item 0048 - Format 1 - srcBegin = 3621 - srcEnd = 367E - mappingOffset = 0349 - Mapping = - B540 B541 B543 B544 B545 B54B B54C B54D - B550 B554 B55C B55D B55F B560 B561 B5A0 - B5A1 B5A4 B5A8 B5AA B5AB B5B0 B5B1 B5B3 - B5B4 B5B5 B5BB B5BC B5BD B5C0 B5C4 B5CC - B5CD B5CF B5D0 B5D1 B5D8 B5EC B610 B611 - B614 B618 B625 B62C B634 B648 B664 B668 - B69C B69D B6A0 B6A4 B6AB B6AC B6B1 B6D4 - B6F0 B6F4 B6F8 B700 B701 B705 B728 B729 - B72C B72F B730 B738 B739 B73B B744 B748 - B74C B754 B755 B760 B764 B768 B770 B771 - B773 B775 B77C B77D B780 B784 B78C B78D - B78F B790 B791 B792 B796 B797 -End of Item 0048 - -Begin of Item 0049 - Format 1 - srcBegin = 3721 - srcEnd = 377E - mappingOffset = 03A7 - Mapping = - B798 B799 B79C B7A0 B7A8 B7A9 B7AB B7AC - B7AD B7B4 B7B5 B7B8 B7C7 B7C9 B7EC B7ED - B7F0 B7F4 B7FC B7FD B7FF B800 B801 B807 - B808 B809 B80C B810 B818 B819 B81B B81D - B824 B825 B828 B82C B834 B835 B837 B838 - B839 B840 B844 B851 B853 B85C B85D B860 - B864 B86C B86D B86F B871 B878 B87C B88D - B8A8 B8B0 B8B4 B8B8 B8C0 B8C1 B8C3 B8C5 - B8CC B8D0 B8D4 B8DD B8DF B8E1 B8E8 B8E9 - B8EC B8F0 B8F8 B8F9 B8FB B8FD B904 B918 - B920 B93C B93D B940 B944 B94C B94F B951 - B958 B959 B95C B960 B968 B969 -End of Item 0049 - -Begin of Item 004A - Format 1 - srcBegin = 3821 - srcEnd = 3838 - mappingOffset = 0405 - Mapping = - B96B B96D B974 B975 B978 B97C B984 B985 - B987 B989 B98A B98D B98E B9AC B9AD B9B0 - B9B4 B9BC B9BD B9BF B9C1 B9C8 B9C9 B9CC -End of Item 004A - -Begin of Item 004B - Format 1 - srcBegin = 383E - srcEnd = 387E - mappingOffset = 041D - Mapping = - B9D8 B9D9 B9DB B9DD B9DE B9E1 B9E3 B9E4 - B9E5 B9E8 B9EC B9F4 B9F5 B9F7 B9F8 B9F9 - B9FA BA00 BA01 BA08 BA15 BA38 BA39 BA3C - BA40 BA42 BA48 BA49 BA4B BA4D BA4E BA53 - BA54 BA55 BA58 BA5C BA64 BA65 BA67 BA68 - BA69 BA70 BA71 BA74 BA78 BA83 BA84 BA85 - BA87 BA8C BAA8 BAA9 BAAB BAAC BAB0 BAB2 - BAB8 BAB9 BABB BABD BAC4 BAC8 BAD8 BAD9 - BAFC -End of Item 004B - -Begin of Item 004C - Format 1 - srcBegin = 3921 - srcEnd = 3958 - mappingOffset = 045E - Mapping = - BB00 BB04 BB0D BB0F BB11 BB18 BB1C BB20 - BB29 BB2B BB34 BB35 BB36 BB38 BB3B BB3C - BB3D BB3E BB44 BB45 BB47 BB49 BB4D BB4F - BB50 BB54 BB58 BB61 BB63 BB6C BB88 BB8C - BB90 BBA4 BBA8 BBAC BBB4 BBB7 BBC0 BBC4 - BBC8 BBD0 BBD3 BBF8 BBF9 BBFC BBFF BC00 - BC02 BC08 BC09 BC0B BC0C BC0D BC0F BC11 -End of Item 004C - -Begin of Item 004D - Format 1 - srcBegin = 3963 - srcEnd = 397E - mappingOffset = 0496 - Mapping = - BC24 BC25 BC27 BC29 BC2D BC30 BC31 BC34 - BC38 BC40 BC41 BC43 BC44 BC45 BC49 BC4C - BC4D BC50 BC5D BC84 BC85 BC88 BC8B BC8C - BC8E BC94 BC95 BC97 -End of Item 004D - -Begin of Item 004E - Format 1 - srcBegin = 3A21 - srcEnd = 3A7E - mappingOffset = 04B2 - Mapping = - BC99 BC9A BCA0 BCA1 BCA4 BCA7 BCA8 BCB0 - BCB1 BCB3 BCB4 BCB5 BCBC BCBD BCC0 BCC4 - BCCD BCCF BCD0 BCD1 BCD5 BCD8 BCDC BCF4 - BCF5 BCF6 BCF8 BCFC BD04 BD05 BD07 BD09 - BD10 BD14 BD24 BD2C BD40 BD48 BD49 BD4C - BD50 BD58 BD59 BD64 BD68 BD80 BD81 BD84 - BD87 BD88 BD89 BD8A BD90 BD91 BD93 BD95 - BD99 BD9A BD9C BDA4 BDB0 BDB8 BDD4 BDD5 - BDD8 BDDC BDE9 BDF0 BDF4 BDF8 BE00 BE03 - BE05 BE0C BE0D BE10 BE14 BE1C BE1D BE1F - BE44 BE45 BE48 BE4C BE4E BE54 BE55 BE57 - BE59 BE5A BE5B BE60 BE61 BE64 -End of Item 004E - -Begin of Item 004F - Format 1 - srcBegin = 3B21 - srcEnd = 3B7E - mappingOffset = 0510 - Mapping = - BE68 BE6A BE70 BE71 BE73 BE74 BE75 BE7B - BE7C BE7D BE80 BE84 BE8C BE8D BE8F BE90 - BE91 BE98 BE99 BEA8 BED0 BED1 BED4 BED7 - BED8 BEE0 BEE3 BEE4 BEE5 BEEC BF01 BF08 - BF09 BF18 BF19 BF1B BF1C BF1D BF40 BF41 - BF44 BF48 BF50 BF51 BF55 BF94 BFB0 BFC5 - BFCC BFCD BFD0 BFD4 BFDC BFDF BFE1 C03C - C051 C058 C05C C060 C068 C069 C090 C091 - C094 C098 C0A0 C0A1 C0A3 C0A5 C0AC C0AD - C0AF C0B0 C0B3 C0B4 C0B5 C0B6 C0BC C0BD - C0BF C0C0 C0C1 C0C5 C0C8 C0C9 C0CC C0D0 - C0D8 C0D9 C0DB C0DC C0DD C0E4 -End of Item 004F - -Begin of Item 0050 - Format 1 - srcBegin = 3C21 - srcEnd = 3C2C - mappingOffset = 056E - Mapping = - C0E5 C0E8 C0EC C0F4 C0F5 C0F7 C0F9 C100 - C104 C108 C110 C115 -End of Item 0050 - -Begin of Item 0051 - Format 1 - srcBegin = 3C32 - srcEnd = 3C7E - mappingOffset = 057A - Mapping = - C123 C124 C126 C127 C12C C12D C12F C130 - C131 C136 C138 C139 C13C C140 C148 C149 - C14B C14C C14D C154 C155 C158 C15C C164 - C165 C167 C168 C169 C170 C174 C178 C185 - C18C C18D C18E C190 C194 C196 C19C C19D - C19F C1A1 C1A5 C1A8 C1A9 C1AC C1B0 C1BD - C1C4 C1C8 C1CC C1D4 C1D7 C1D8 C1E0 C1E4 - C1E8 C1F0 C1F1 C1F3 C1FC C1FD C200 C204 - C20C C20D C20F C211 C218 C219 C21C C21F - C220 C228 C229 C22B C22D -End of Item 0051 - -Begin of Item 0052 - Format 1 - srcBegin = 3D21 - srcEnd = 3D7E - mappingOffset = 05C7 - Mapping = - C22F C231 C232 C234 C248 C250 C251 C254 - C258 C260 C265 C26C C26D C270 C274 C27C - C27D C27F C281 C288 C289 C290 C298 C29B - C29D C2A4 C2A5 C2A8 C2AC C2AD C2B4 C2B5 - C2B7 C2B9 C2DC C2DD C2E0 C2E3 C2E4 C2EB - C2EC C2ED C2EF C2F1 C2F6 C2F8 C2F9 C2FB - C2FC C300 C308 C309 C30C C30D C313 C314 - C315 C318 C31C C324 C325 C328 C329 C345 - C368 C369 C36C C370 C372 C378 C379 C37C - C37D C384 C388 C38C C3C0 C3D8 C3D9 C3DC - C3DF C3E0 C3E2 C3E8 C3E9 C3ED C3F4 C3F5 - C3F8 C408 C410 C424 C42C C430 -End of Item 0052 - -Begin of Item 0053 - Format 1 - srcBegin = 3E21 - srcEnd = 3E75 - mappingOffset = 0625 - Mapping = - C434 C43C C43D C448 C464 C465 C468 C46C - C474 C475 C479 C480 C494 C49C C4B8 C4BC - C4E9 C4F0 C4F1 C4F4 C4F8 C4FA C4FF C500 - C501 C50C C510 C514 C51C C528 C529 C52C - C530 C538 C539 C53B C53D C544 C545 C548 - C549 C54A C54C C54D C54E C553 C554 C555 - C557 C558 C559 C55D C55E C560 C561 C564 - C568 C570 C571 C573 C574 C575 C57C C57D - C580 C584 C587 C58C C58D C58F C591 C595 - C597 C598 C59C C5A0 C5A9 C5B4 C5B5 C5B8 - C5B9 C5BB C5BC C5BD C5BE -End of Item 0053 - -Begin of Item 0054 - Format 1 - srcBegin = 3E7D - srcEnd = 3E7E - mappingOffset = 067A - Mapping = - C5CC C5CE -End of Item 0054 - -Begin of Item 0055 - Format 1 - srcBegin = 3F21 - srcEnd = 3F2F - mappingOffset = 067C - Mapping = - C5D0 C5D1 C5D4 C5D8 C5E0 C5E1 C5E3 C5E5 - C5EC C5ED C5EE C5F0 C5F4 C5F6 C5F7 -End of Item 0055 - -Begin of Item 0056 - Format 1 - srcBegin = 3F36 - srcEnd = 3F7E - mappingOffset = 068B - Mapping = - C605 C606 C607 C608 C60C C610 C618 C619 - C61B C61C C624 C625 C628 C62C C62D C62E - C630 C633 C634 C635 C637 C639 C63B C640 - C641 C644 C648 C650 C651 C653 C654 C655 - C65C C65D C660 C66C C66F C671 C678 C679 - C67C C680 C688 C689 C68B C68D C694 C695 - C698 C69C C6A4 C6A5 C6A7 C6A9 C6B0 C6B1 - C6B4 C6B8 C6B9 C6BA C6C0 C6C1 C6C3 C6C5 - C6CC C6CD C6D0 C6D4 C6DC C6DD C6E0 C6E1 - C6E8 -End of Item 0056 - -Begin of Item 0057 - Format 1 - srcBegin = 4021 - srcEnd = 403F - mappingOffset = 06D4 - Mapping = - C6E9 C6EC C6F0 C6F8 C6F9 C6FD C704 C705 - C708 C70C C714 C715 C717 C719 C720 C721 - C724 C728 C730 C731 C733 C735 C737 C73C - C73D C740 C744 C74A C74C C74D C74F -End of Item 0057 - -Begin of Item 0058 - Format 1 - srcBegin = 4048 - srcEnd = 407E - mappingOffset = 06F3 - Mapping = - C75C C760 C768 C76B C774 C775 C778 C77C - C77D C77E C783 C784 C785 C787 C788 C789 - C78A C78E C790 C791 C794 C796 C797 C798 - C79A C7A0 C7A1 C7A3 C7A4 C7A5 C7A6 C7AC - C7AD C7B0 C7B4 C7BC C7BD C7BF C7C0 C7C1 - C7C8 C7C9 C7CC C7CE C7D0 C7D8 C7DD C7E4 - C7E8 C7EC C800 C801 C804 C808 C80A -End of Item 0058 - -Begin of Item 0059 - Format 1 - srcBegin = 4121 - srcEnd = 417E - mappingOffset = 072A - Mapping = - C810 C811 C813 C815 C816 C81C C81D C820 - C824 C82C C82D C82F C831 C838 C83C C840 - C848 C849 C84C C84D C854 C870 C871 C874 - C878 C87A C880 C881 C883 C885 C886 C887 - C88B C88C C88D C894 C89D C89F C8A1 C8A8 - C8BC C8BD C8C4 C8C8 C8CC C8D4 C8D5 C8D7 - C8D9 C8E0 C8E1 C8E4 C8F5 C8FC C8FD C900 - C904 C905 C906 C90C C90D C90F C911 C918 - C92C C934 C950 C951 C954 C958 C960 C961 - C963 C96C C970 C974 C97C C988 C989 C98C - C990 C998 C999 C99B C99D C9C0 C9C1 C9C4 - C9C7 C9C8 C9CA C9D0 C9D1 C9D3 -End of Item 0059 - -Begin of Item 005A - Format 1 - srcBegin = 4221 - srcEnd = 427E - mappingOffset = 0788 - Mapping = - C9D5 C9D6 C9D9 C9DA C9DC C9DD C9E0 C9E2 - C9E4 C9E7 C9EC C9ED C9EF C9F0 C9F1 C9F8 - C9F9 C9FC CA00 CA08 CA09 CA0B CA0C CA0D - CA14 CA18 CA29 CA4C CA4D CA50 CA54 CA5C - CA5D CA5F CA60 CA61 CA68 CA7D CA84 CA98 - CABC CABD CAC0 CAC4 CACC CACD CACF CAD1 - CAD3 CAD8 CAD9 CAE0 CAEC CAF4 CB08 CB10 - CB14 CB18 CB20 CB21 CB41 CB48 CB49 CB4C - CB50 CB58 CB59 CB5D CB64 CB78 CB79 CB9C - CBB8 CBD4 CBE4 CBE7 CBE9 CC0C CC0D CC10 - CC14 CC1C CC1D CC21 CC22 CC27 CC28 CC29 - CC2C CC2E CC30 CC38 CC39 CC3B -End of Item 005A - -Begin of Item 005B - Format 1 - srcBegin = 4321 - srcEnd = 437E - mappingOffset = 07E6 - Mapping = - CC3C CC3D CC3E CC44 CC45 CC48 CC4C CC54 - CC55 CC57 CC58 CC59 CC60 CC64 CC66 CC68 - CC70 CC75 CC98 CC99 CC9C CCA0 CCA8 CCA9 - CCAB CCAC CCAD CCB4 CCB5 CCB8 CCBC CCC4 - CCC5 CCC7 CCC9 CCD0 CCD4 CCE4 CCEC CCF0 - CD01 CD08 CD09 CD0C CD10 CD18 CD19 CD1B - CD1D CD24 CD28 CD2C CD39 CD5C CD60 CD64 - CD6C CD6D CD6F CD71 CD78 CD88 CD94 CD95 - CD98 CD9C CDA4 CDA5 CDA7 CDA9 CDB0 CDC4 - CDCC CDD0 CDE8 CDEC CDF0 CDF8 CDF9 CDFB - CDFD CE04 CE08 CE0C CE14 CE19 CE20 CE21 - CE24 CE28 CE30 CE31 CE33 CE35 -End of Item 005B - -Begin of Item 005C - Format 1 - srcBegin = 4421 - srcEnd = 447E - mappingOffset = 0844 - Mapping = - CE58 CE59 CE5C CE5F CE60 CE61 CE68 CE69 - CE6B CE6D CE74 CE75 CE78 CE7C CE84 CE85 - CE87 CE89 CE90 CE91 CE94 CE98 CEA0 CEA1 - CEA3 CEA4 CEA5 CEAC CEAD CEC1 CEE4 CEE5 - CEE8 CEEB CEEC CEF4 CEF5 CEF7 CEF8 CEF9 - CF00 CF01 CF04 CF08 CF10 CF11 CF13 CF15 - CF1C CF20 CF24 CF2C CF2D CF2F CF30 CF31 - CF38 CF54 CF55 CF58 CF5C CF64 CF65 CF67 - CF69 CF70 CF71 CF74 CF78 CF80 CF85 CF8C - CFA1 CFA8 CFB0 CFC4 CFE0 CFE1 CFE4 CFE8 - CFF0 CFF1 CFF3 CFF5 CFFC D000 D004 D011 - D018 D02D D034 D035 D038 D03C -End of Item 005C - -Begin of Item 005D - Format 1 - srcBegin = 4521 - srcEnd = 457E - mappingOffset = 08A2 - Mapping = - D044 D045 D047 D049 D050 D054 D058 D060 - D06C D06D D070 D074 D07C D07D D081 D0A4 - D0A5 D0A8 D0AC D0B4 D0B5 D0B7 D0B9 D0C0 - D0C1 D0C4 D0C8 D0C9 D0D0 D0D1 D0D3 D0D4 - D0D5 D0DC D0DD D0E0 D0E4 D0EC D0ED D0EF - D0F0 D0F1 D0F8 D10D D130 D131 D134 D138 - D13A D140 D141 D143 D144 D145 D14C D14D - D150 D154 D15C D15D D15F D161 D168 D16C - D17C D184 D188 D1A0 D1A1 D1A4 D1A8 D1B0 - D1B1 D1B3 D1B5 D1BA D1BC D1C0 D1D8 D1F4 - D1F8 D207 D209 D210 D22C D22D D230 D234 - D23C D23D D23F D241 D248 D25C -End of Item 005D - -Begin of Item 005E - Format 1 - srcBegin = 4621 - srcEnd = 467E - mappingOffset = 0900 - Mapping = - D264 D280 D281 D284 D288 D290 D291 D295 - D29C D2A0 D2A4 D2AC D2B1 D2B8 D2B9 D2BC - D2BF D2C0 D2C2 D2C8 D2C9 D2CB D2D4 D2D8 - D2DC D2E4 D2E5 D2F0 D2F1 D2F4 D2F8 D300 - D301 D303 D305 D30C D30D D30E D310 D314 - D316 D31C D31D D31F D320 D321 D325 D328 - D329 D32C D330 D338 D339 D33B D33C D33D - D344 D345 D37C D37D D380 D384 D38C D38D - D38F D390 D391 D398 D399 D39C D3A0 D3A8 - D3A9 D3AB D3AD D3B4 D3B8 D3BC D3C4 D3C5 - D3C8 D3C9 D3D0 D3D8 D3E1 D3E3 D3EC D3ED - D3F0 D3F4 D3FC D3FD D3FF D401 -End of Item 005E - -Begin of Item 005F - Format 1 - srcBegin = 4721 - srcEnd = 477E - mappingOffset = 095E - Mapping = - D408 D41D D440 D444 D45C D460 D464 D46D - D46F D478 D479 D47C D47F D480 D482 D488 - D489 D48B D48D D494 D4A9 D4CC D4D0 D4D4 - D4DC D4DF D4E8 D4EC D4F0 D4F8 D4FB D4FD - D504 D508 D50C D514 D515 D517 D53C D53D - D540 D544 D54C D54D D54F D551 D558 D559 - D55C D560 D565 D568 D569 D56B D56D D574 - D575 D578 D57C D584 D585 D587 D588 D589 - D590 D5A5 D5C8 D5C9 D5CC D5D0 D5D2 D5D8 - D5D9 D5DB D5DD D5E4 D5E5 D5E8 D5EC D5F4 - D5F5 D5F7 D5F9 D600 D601 D604 D608 D610 - D611 D613 D614 D615 D61C D620 -End of Item 005F - -Begin of Item 0060 - Format 1 - srcBegin = 4821 - srcEnd = 487E - mappingOffset = 09BC - Mapping = - D624 D62D D638 D639 D63C D640 D645 D648 - D649 D64B D64D D651 D654 D655 D658 D65C - D667 D669 D670 D671 D674 D683 D685 D68C - D68D D690 D694 D69D D69F D6A1 D6A8 D6AC - D6B0 D6B9 D6BB D6C4 D6C5 D6C8 D6CC D6D1 - D6D4 D6D7 D6D9 D6E0 D6E4 D6E8 D6F0 D6F5 - D6FC D6FD D700 D704 D711 D718 D719 D71C - D720 D728 D729 D72B D72D D734 D735 D738 - D73C D744 D747 D749 D750 D751 D754 D756 - D757 D758 D759 D760 D761 D763 D765 D769 - D76C D770 D774 D77C D77D D781 D788 D789 - D78C D790 D798 D799 D79B D79D -End of Item 0060 - -Begin of Item 0061 - Format 1 - srcBegin = 4A21 - srcEnd = 4A7E - mappingOffset = 0A1A - Mapping = - 4F3D 4F73 5047 50F9 52A0 53EF 5475 54E5 - 5609 5AC1 5BB6 6687 67B6 67B7 67EF 6B4C - 73C2 75C2 7A3C 82DB 8304 8857 8888 8A36 - 8CC8 8DCF 8EFB 8FE6 99D5 523B 5374 5404 - 606A 6164 6BBC 73CF 811A 89BA 89D2 95A3 - 4F83 520A 58BE 5978 59E6 5E72 5E79 61C7 - 63C0 6746 67EC 687F 6F97 764E 770B 78F5 - 7A08 7AFF 7C21 809D 826E 8271 8AEB 9593 - 4E6B 559D 66F7 6E34 78A3 7AED 845B 8910 - 874E 97A8 52D8 574E 582A 5D4C 611F 61BE - 6221 6562 67D1 6A44 6E1B 7518 75B3 76E3 - 77B0 7D3A 90AF 9451 9452 9F95 -End of Item 0061 - -Begin of Item 0062 - Format 1 - srcBegin = 4B21 - srcEnd = 4B7E - mappingOffset = 0A78 - Mapping = - 5323 5CAC 7532 80DB 9240 9598 525B 5808 - 59DC 5CA1 5D17 5EB7 5F3A 5F4A 6177 6C5F - 757A 7586 7CE0 7D73 7DB1 7F8C 8154 8221 - 8591 8941 8B1B 92FC 964D 9C47 4ECB 4EF7 - 500B 51F1 584F 6137 613E 6168 6539 69EA - 6F11 75A5 7686 76D6 7B87 82A5 84CB F900 - 93A7 958B 5580 5BA2 5751 F901 7CB3 7FB9 - 91B5 5028 53BB 5C45 5DE8 62D2 636E 64DA - 64E7 6E20 70AC 795B 8DDD 8E1E F902 907D - 9245 92F8 4E7E 4EF6 5065 5DFE 5EFA 6106 - 6957 8171 8654 8E47 9375 9A2B 4E5E 5091 - 6770 6840 5109 528D 5292 6AA2 -End of Item 0062 - -Begin of Item 0063 - Format 1 - srcBegin = 4C21 - srcEnd = 4C7E - mappingOffset = 0AD6 - Mapping = - 77BC 9210 9ED4 52AB 602F 8FF2 5048 61A9 - 63ED 64CA 683C 6A84 6FC0 8188 89A1 9694 - 5805 727D 72AC 7504 7D79 7E6D 80A9 898B - 8B74 9063 9D51 6289 6C7A 6F54 7D50 7F3A - 8A23 517C 614A 7B9D 8B19 9257 938C 4EAC - 4FD3 501E 50BE 5106 52C1 52CD 537F 5770 - 5883 5E9A 5F91 6176 61AC 64CE 656C 666F - 66BB 66F4 6897 6D87 7085 70F1 749F 74A5 - 74CA 75D9 786C 78EC 7ADF 7AF6 7D45 7D93 - 8015 803F 811B 8396 8B66 8F15 9015 93E1 - 9803 9838 9A5A 9BE8 4FC2 5553 583A 5951 - 5B63 5C46 60B8 6212 6842 68B0 -End of Item 0063 - -Begin of Item 0064 - Format 1 - srcBegin = 4D21 - srcEnd = 4D7E - mappingOffset = 0B34 - Mapping = - 68E8 6EAA 754C 7678 78CE 7A3D 7CFB 7E6B - 7E7C 8A08 8AA1 8C3F 968E 9DC4 53E4 53E9 - 544A 5471 56FA 59D1 5B64 5C3B 5EAB 62F7 - 6537 6545 6572 66A0 67AF 69C1 6CBD 75FC - 7690 777E 7A3F 7F94 8003 80A1 818F 82E6 - 82FD 83F0 85C1 8831 88B4 8AA5 F903 8F9C - 932E 96C7 9867 9AD8 9F13 54ED 659B 66F2 - 688F 7A40 8C37 9D60 56F0 5764 5D11 6606 - 68B1 68CD 6EFE 7428 889E 9BE4 6C68 F904 - 9AA8 4F9B 516C 5171 529F 5B54 5DE5 6050 - 606D 62F1 63A7 653B 73D9 7A7A 86A3 8CA2 - 978F 4E32 5BE1 6208 679C 74DC -End of Item 0064 - -Begin of Item 0065 - Format 1 - srcBegin = 4E21 - srcEnd = 4E7E - mappingOffset = 0B92 - Mapping = - 79D1 83D3 8A87 8AB2 8DE8 904E 934B 9846 - 5ED3 69E8 85FF 90ED F905 51A0 5B98 5BEC - 6163 68FA 6B3E 704C 742F 74D8 7BA1 7F50 - 83C5 89C0 8CAB 95DC 9928 522E 605D 62EC - 9002 4F8A 5149 5321 58D9 5EE3 66E0 6D38 - 709A 72C2 73D6 7B50 80F1 945B 5366 639B - 7F6B 4E56 5080 584A 58DE 602A 6127 62D0 - 69D0 9B41 5B8F 7D18 80B1 8F5F 4EA4 50D1 - 54AC 55AC 5B0C 5DA0 5DE7 652A 654E 6821 - 6A4B 72E1 768E 77EF 7D5E 7FF9 81A0 854E - 86DF 8F03 8F4E 90CA 9903 9A55 9BAB 4E18 - 4E45 4E5D 4EC7 4FF1 5177 52FE -End of Item 0065 - -Begin of Item 0066 - Format 1 - srcBegin = 4F21 - srcEnd = 4F7E - mappingOffset = 0BF0 - Mapping = - 5340 53E3 53E5 548E 5614 5775 57A2 5BC7 - 5D87 5ED0 61FC 62D8 6551 67B8 67E9 69CB - 6B50 6BC6 6BEC 6C42 6E9D 7078 72D7 7396 - 7403 77BF 77E9 7A76 7D7F 8009 81FC 8205 - 820A 82DF 8862 8B33 8CFC 8EC0 9011 90B1 - 9264 92B6 99D2 9A45 9CE9 9DD7 9F9C 570B - 5C40 83CA 97A0 97AB 9EB4 541B 7A98 7FA4 - 88D9 8ECD 90E1 5800 5C48 6398 7A9F 5BAE - 5F13 7A79 7AAE 828E 8EAC 5026 5238 52F8 - 5377 5708 62F3 6372 6B0A 6DC3 7737 53A5 - 7357 8568 8E76 95D5 673A 6AC3 6F70 8A6D - 8ECC 994B F906 6677 6B78 8CB4 -End of Item 0066 - -Begin of Item 0067 - Format 1 - srcBegin = 5021 - srcEnd = 507E - mappingOffset = 0C4E - Mapping = - 9B3C F907 53EB 572D 594E 63C6 69FB 73EA - 7845 7ABA 7AC5 7CFE 8475 898F 8D73 9035 - 95A8 52FB 5747 7547 7B60 83CC 921E F908 - 6A58 514B 524B 5287 621F 68D8 6975 9699 - 50C5 52A4 52E4 61C3 65A4 6839 69FF 747E - 7B4B 82B9 83EB 89B2 8B39 8FD1 9949 F909 - 4ECA 5997 64D2 6611 6A8E 7434 7981 79BD - 82A9 887E 887F 895F F90A 9326 4F0B 53CA - 6025 6271 6C72 7D1A 7D66 4E98 5162 77DC - 80AF 4F01 4F0E 5176 5180 55DC 5668 573B - 57FA 57FC 5914 5947 5993 5BC4 5C90 5D0E - 5DF1 5E7E 5FCC 6280 65D7 65E3 -End of Item 0067 - -Begin of Item 0068 - Format 1 - srcBegin = 5121 - srcEnd = 515A - mappingOffset = 0CAC - Mapping = - 671E 671F 675E 68CB 68C4 6A5F 6B3A 6C23 - 6C7D 6C82 6DC7 7398 7426 742A 7482 74A3 - 7578 757F 7881 78EF 7941 7947 7948 797A - 7B95 7D00 7DBA 7F88 8006 802D 808C 8A18 - 8B4F 8C48 8D77 9321 9324 98E2 9951 9A0E - 9A0F 9A65 9E92 7DCA 4F76 5409 62EE 6854 - 91D1 55AB 513A F90B F90C 5A1C 61E6 F90D - 62CF 62FF -End of Item 0068 - -Begin of Item 0069 - Format 2 - srcBegin = 5161 - destBegin = 90A3 -End of Item 0069 - -Begin of Item 006A - Format 1 - srcBegin = 5167 - srcEnd = 517E - mappingOffset = 0CE6 - Mapping = - 8AFE F919 F91A F91B F91C 6696 F91D 7156 - F91E F91F 96E3 F920 634F 637A 5357 F921 - 678F 6960 6E73 F922 7537 F923 F924 F925 -End of Item 006A - -Begin of Item 006B - Format 1 - srcBegin = 5221 - srcEnd = 5226 - mappingOffset = 0CFE - Mapping = - 7D0D F926 F927 8872 56CA 5A18 -End of Item 006B - -Begin of Item 006C - Format 1 - srcBegin = 522C - srcEnd = 5245 - mappingOffset = 0D04 - Mapping = - 4E43 F92D 5167 5948 67F0 8010 F92E 5973 - 5E74 649A 79CA 5FF5 606C 62C8 637B 5BE7 - 5BD7 52AA F92F 5974 5F29 6012 F930 F931 - F932 7459 -End of Item 006C - -Begin of Item 006D - Format 2 - srcBegin = 524C - destBegin = 99D1 -End of Item 006D - -Begin of Item 006E - Format 1 - srcBegin = 5258 - srcEnd = 5263 - mappingOffset = 0D1E - Mapping = - 6FC3 F944 F945 81BF 8FB2 60F1 F946 F947 - 8166 F948 F949 5C3F -End of Item 006E - -Begin of Item 006F - Format 1 - srcBegin = 526C - srcEnd = 526F - mappingOffset = 0D2A - Mapping = - 5AE9 8A25 677B 7D10 -End of Item 006F - -Begin of Item 0070 - Format 1 - srcBegin = 5276 - srcEnd = 527E - mappingOffset = 0D2E - Mapping = - 80FD F958 F959 5C3C 6CE5 533F 6EBA 591A - 8336 -End of Item 0070 - -Begin of Item 0071 - Format 1 - srcBegin = 5321 - srcEnd = 537E - mappingOffset = 0D37 - Mapping = - 4E39 4EB6 4F46 55AE 5718 58C7 5F56 65B7 - 65E6 6A80 6BB5 6E4D 77ED 7AEF 7C1E 7DDE - 86CB 8892 9132 935B 64BB 6FBE 737A 75B8 - 9054 5556 574D 61BA 64D4 66C7 6DE1 6E5B - 6F6D 6FB9 75F0 8043 81BD 8541 8983 8AC7 - 8B5A 931F 6C93 7553 7B54 8E0F 905D 5510 - 5802 5858 5E62 6207 649E 68E0 7576 7CD6 - 87B3 9EE8 4EE3 5788 576E 5927 5C0D 5CB1 - 5E36 5F85 6234 64E1 73B3 81FA 888B 8CB8 - 968A 9EDB 5B85 5FB7 60B3 5012 5200 5230 - 5716 5835 5857 5C0E 5C60 5CF6 5D8B 5EA6 - 5F92 60BC 6311 6389 6417 6843 -End of Item 0071 - -Begin of Item 0072 - Format 1 - srcBegin = 5421 - srcEnd = 547E - mappingOffset = 0D95 - Mapping = - 68F9 6AC2 6DD8 6E21 6ED4 6FE4 71FE 76DC - 7779 79B1 7A3B 8404 89A9 8CED 8DF3 8E48 - 9003 9014 9053 90FD 934D 9676 97DC 6BD2 - 7006 7258 72A2 7368 7763 79BF 7BE4 7E9B - 8B80 58A9 60C7 6566 65FD 66BE 6C8C 711E - 71C9 8C5A 9813 4E6D 7A81 4EDD 51AC 51CD - 52D5 540C 61A7 6771 6850 68DF 6D1E 6F7C - 75BC 77B3 7AE5 80F4 8463 9285 515C 6597 - 675C 6793 75D8 7AC7 8373 F95A 8C46 9017 - 982D 5C6F 81C0 829A 9041 906F 920D 5F97 - 5D9D 6A59 71C8 767B 7B49 85E4 8B04 9127 - 9A30 5587 61F6 F95B 7669 7F85 -End of Item 0072 - -Begin of Item 0073 - Format 1 - srcBegin = 5521 - srcEnd = 557E - mappingOffset = 0DF3 - Mapping = - 863F 87BA 88F8 908F F95C 6D1B 70D9 73DE - 7D61 843D F95D 916A 99F1 F95E 4E82 5375 - 6B04 6B12 703E 721B 862D 9E1E 524C 8FA3 - 5D50 64E5 652C 6B16 6FEB 7C43 7E9C 85CD - 8964 89BD 62C9 81D8 881F 5ECA 6717 6D6A - 72FC 7405 746F 8782 90DE 4F86 5D0D 5FA0 - 840A 51B7 63A0 7565 4EAE 5006 5169 51C9 - 6881 6A11 7CAE 7CB1 7CE7 826F 8AD2 8F1B - 91CF 4FB6 5137 52F5 5442 5EEC 616E 623E - 65C5 6ADA 6FFE 792A 85DC 8823 95AD 9A62 - 9A6A 9E97 9ECE 529B 66C6 6B77 701D 792B - 8F62 9742 6190 6200 6523 6F23 -End of Item 0073 - -Begin of Item 0074 - Format 1 - srcBegin = 5621 - srcEnd = 567E - mappingOffset = 0E51 - Mapping = - 7149 7489 7DF4 806F 84EE 8F26 9023 934A - 51BD 5217 52A3 6D0C 70C8 88C2 5EC9 6582 - 6BAE 6FC2 7C3E 7375 4EE4 4F36 56F9 F95F - 5CBA 5DBA 601C 73B2 7B2D 7F9A 7FCE 8046 - 901E 9234 96F6 9748 9818 9F61 4F8B 6FA7 - 79AE 91B4 96B7 52DE F960 6488 64C4 6AD3 - 6F5E 7018 7210 76E7 8001 8606 865C 8DEF - 8F05 9732 9B6F 9DFA 9E75 788C 797F 7DA0 - 83C9 9304 9E7F 9E93 8AD6 58DF 5F04 6727 - 7027 74CF 7C60 807E 5121 7028 7262 78CA - 8CC2 8CDA 8CF4 96F7 4E86 50DA 5BEE 5ED6 - 6599 71CE 7642 77AD 804A 84FC -End of Item 0074 - -Begin of Item 0075 - Format 1 - srcBegin = 5721 - srcEnd = 577E - mappingOffset = 0EAF - Mapping = - 907C 9B27 9F8D 58D8 5A41 5C62 6A13 6DDA - 6F0F 763B 7D2F 7E37 851E 8938 93E4 964B - 5289 65D2 67F3 69B4 6D41 6E9C 700F 7409 - 7460 7559 7624 786B 8B2C 985E 516D 622E - 9678 4F96 502B 5D19 6DEA 7DB8 8F2A 5F8B - 6144 6817 F961 9686 52D2 808B 51DC 51CC - 695E 7A1C 7DBE 83F1 9675 4FDA 5229 5398 - 540F 550E 5C65 60A7 674E 68A8 6D6C 7281 - 72F8 7406 7483 F962 75E2 7C6C 7F79 7FB8 - 8389 88CF 88E1 91CC 91D0 96E2 9BC9 541D - 6F7E 71D0 7498 85FA 8EAA 96A3 9C57 9E9F - 6797 6DCB 7433 81E8 9716 782C -End of Item 0075 - -Begin of Item 0076 - Format 1 - srcBegin = 5821 - srcEnd = 587E - mappingOffset = 0F0D - Mapping = - 7ACB 7B20 7C92 6469 746A 75F2 78BC 78E8 - 99AC 9B54 9EBB 5BDE 5E55 6F20 819C 83AB - 9088 4E07 534D 5A29 5DD2 5F4E 6162 633D - 6669 66FC 6EFF 6F2B 7063 779E 842C 8513 - 883B 8F13 9945 9C3B 551C 62B9 672B 6CAB - 8309 896A 977A 4EA1 5984 5FD8 5FD9 671B - 7DB2 7F54 8292 832B 83BD 8F1E 9099 57CB - 59B9 5A92 5BD0 6627 679A 6885 6BCF 7164 - 7F75 8CB7 8CE3 9081 9B45 8108 8C8A 964C - 9A40 9EA5 5B5F 6C13 731B 76F2 76DF 840C - 51AA 8993 514D 5195 52C9 68C9 6C94 7704 - 7720 7DBF 7DEC 9762 9EB5 6EC5 -End of Item 0076 - -Begin of Item 0077 - Format 1 - srcBegin = 5921 - srcEnd = 597E - mappingOffset = 0F6B - Mapping = - 8511 51A5 540D 547D 660E 669D 6927 6E9F - 76BF 7791 8317 84C2 879F 9169 9298 9CF4 - 8882 4FAE 5192 52DF 59C6 5E3D 6155 6478 - 6479 66AE 67D0 6A21 6BCD 6BDB 725F 7261 - 7441 7738 77DB 8017 82BC 8305 8B00 8B28 - 8C8C 6728 6C90 7267 76EE 7766 7A46 9DA9 - 6B7F 6C92 5922 6726 8499 536F 5893 5999 - 5EDF 63CF 6634 6773 6E3A 732B 7AD7 82D7 - 9328 52D9 5DEB 61AE 61CB 620A 62C7 64AB - 65E0 6959 6B66 6BCB 7121 73F7 755D 7E46 - 821E 8302 856A 8AA3 8CBF 9727 9D61 58A8 - 9ED8 5011 520E 543B 554F 6587 -End of Item 0077 - -Begin of Item 0078 - Format 1 - srcBegin = 5A21 - srcEnd = 5A7E - mappingOffset = 0FC9 - Mapping = - 6C76 7D0A 7D0B 805E 868A 9580 96EF 52FF - 6C95 7269 5473 5A9A 5C3E 5D4B 5F4C 5FAE - 672A 68B6 6963 6E3C 6E44 7709 7C73 7F8E - 8587 8B0E 8FF7 9761 9EF4 5CB7 60B6 610D - 61AB 654F 65FB 65FC 6C11 6CEF 739F 73C9 - 7DE1 9594 5BC6 871C 8B10 525D 535A 62CD - 640F 64B2 6734 6A38 6CCA 73C0 749E 7B94 - 7C95 7E1B 818A 8236 8584 8FEB 96F9 99C1 - 4F34 534A 53CD 53DB 62CC 642C 6500 6591 - 69C3 6CEE 6F58 73ED 7554 7622 76E4 76FC - 78D0 78FB 792C 7D46 822C 87E0 8FD4 9812 - 98EF 52C3 62D4 64A5 6E24 6F51 -End of Item 0078 - -Begin of Item 0079 - Format 1 - srcBegin = 5B21 - srcEnd = 5B7E - mappingOffset = 1027 - Mapping = - 767C 8DCB 91B1 9262 9AEE 9B43 5023 508D - 574A 59A8 5C28 5E47 5F77 623F 653E 65B9 - 65C1 6609 678B 699C 6EC2 78C5 7D21 80AA - 8180 822B 82B3 84A1 868C 8A2A 8B17 90A6 - 9632 9F90 500D 4FF3 F963 57F9 5F98 62DC - 6392 676F 6E43 7119 76C3 80CC 80DA 88F4 - 88F5 8919 8CE0 8F29 914D 966A 4F2F 4F70 - 5E1B 67CF 6822 767D 767E 9B44 5E61 6A0A - 7169 71D4 756A F964 7E41 8543 85E9 98DC - 4F10 7B4F 7F70 95A5 51E1 5E06 68B5 6C3E - 6C4E 6CDB 72AF 7BC4 8303 6CD5 743A 50FB - 5288 58C1 64D8 6A97 74A7 7656 -End of Item 0079 - -Begin of Item 007A - Format 1 - srcBegin = 5C21 - srcEnd = 5C7E - mappingOffset = 1085 - Mapping = - 78A7 8617 95E2 9739 F965 535E 5F01 8B8A - 8FA8 8FAF 908A 5225 77A5 9C49 9F08 4E19 - 5002 5175 5C5B 5E77 661E 663A 67C4 68C5 - 70B3 7501 75C5 79C9 7ADD 8F27 9920 9A08 - 4FDD 5821 5831 5BF6 666E 6B65 6D11 6E7A - 6F7D 73E4 752B 83E9 88DC 8913 8B5C 8F14 - 4F0F 50D5 5310 535C 5B93 5FA9 670D 798F - 8179 832F 8514 8907 8986 8F39 8F3B 99A5 - 9C12 672C 4E76 4FF8 5949 5C01 5CEF 5CF0 - 6367 68D2 70FD 71A2 742B 7E2B 84EC 8702 - 9022 92D2 9CF3 4E0D 4ED8 4FEF 5085 5256 - 526F 5426 5490 57E0 592B 5A66 -End of Item 007A - -Begin of Item 007B - Format 1 - srcBegin = 5D21 - srcEnd = 5D7E - mappingOffset = 10E3 - Mapping = - 5B5A 5B75 5BCC 5E9C F966 6276 6577 65A7 - 6D6E 6EA5 7236 7B26 7C3F 7F36 8150 8151 - 819A 8240 8299 83A9 8A03 8CA0 8CE6 8CFB - 8D74 8DBA 90E8 91DC 961C 9644 99D9 9CE7 - 5317 5206 5429 5674 58B3 5954 596E 5FFF - 61A4 626E 6610 6C7E 711A 76C6 7C89 7CDE - 7D1B 82AC 8CC1 96F0 F967 4F5B 5F17 5F7F - 62C2 5D29 670B 68DA 787C 7E43 9D6C 4E15 - 5099 5315 532A 5351 5983 5A62 5E87 60B2 - 618A 6249 6279 6590 6787 69A7 6BD4 6BD6 - 6BD7 6BD8 6CB8 F968 7435 75FA 7812 7891 - 79D5 79D8 7C83 7DCB 7FE1 80A5 -End of Item 007B - -Begin of Item 007C - Format 1 - srcBegin = 5E21 - srcEnd = 5E7E - mappingOffset = 1141 - Mapping = - 813E 81C2 83F2 871A 88E8 8AB9 8B6C 8CBB - 9119 975E 98DB 9F3B 56AC 5B2A 5F6C 658C - 6AB3 6BAF 6D5C 6FF1 7015 725D 73AD 8CA7 - 8CD3 983B 6191 6C37 8058 9A01 4E4D 4E8B - 4E9B 4ED5 4F3A 4F3C 4F7F 4FDF 50FF 53F2 - 53F8 5506 55E3 56DB 58EB 5962 5A11 5BEB - 5BFA 5C04 5DF3 5E2B 5F99 601D 6368 659C - 65AF 67F6 67FB 68AD 6B7B 6C99 6CD7 6E23 - 7009 7345 7802 793E 7940 7960 79C1 7BE9 - 7D17 7D72 8086 820D 838E 84D1 86C7 88DF - 8A50 8A5E 8B1D 8CDC 8D66 8FAD 90AA 98FC - 99DF 9E9D 524A F969 6714 F96A -End of Item 007C - -Begin of Item 007D - Format 1 - srcBegin = 5F21 - srcEnd = 5F7E - mappingOffset = 119F - Mapping = - 5098 522A 5C71 6563 6C55 73CA 7523 759D - 7B97 849C 9178 9730 4E77 6492 6BBA 715E - 85A9 4E09 F96B 6749 68EE 6E17 829F 8518 - 886B 63F7 6F81 9212 98AF 4E0A 50B7 50CF - 511F 5546 55AA 5617 5B40 5C19 5CE0 5E38 - 5E8A 5EA0 5EC2 60F3 6851 6A61 6E58 723D - 7240 72C0 76F8 7965 7BB1 7FD4 88F3 89F4 - 8A73 8C61 8CDE 971C 585E 74BD 8CFD 55C7 - F96C 7A61 7D22 8272 7272 751F 7525 F96D - 7B19 5885 58FB 5DBC 5E8F 5EB6 5F90 6055 - 6292 637F 654D 6691 66D9 66F8 6816 68F2 - 7280 745E 7B6E 7D6E 7DD6 7F72 -End of Item 007D - -Begin of Item 007E - Format 1 - srcBegin = 6021 - srcEnd = 607E - mappingOffset = 11FD - Mapping = - 80E5 8212 85AF 897F 8A93 901D 92E4 9ECD - 9F20 5915 596D 5E2D 60DC 6614 6673 6790 - 6C50 6DC5 6F5F 77F3 78A9 84C6 91CB 932B - 4ED9 50CA 5148 5584 5B0B 5BA3 6247 657E - 65CB 6E32 717D 7401 7444 7487 74BF 766C - 79AA 7DDA 7E55 7FA8 817A 81B3 8239 861A - 87EC 8A75 8DE3 9078 9291 9425 994D 9BAE - 5368 5C51 6954 6CC4 6D29 6E2B 820C 859B - 893B 8A2D 8AAA 96EA 9F67 5261 66B9 6BB2 - 7E96 87FE 8D0D 9583 965D 651D 6D89 71EE - F96E 57CE 59D3 5BAC 6027 60FA 6210 661F - 665F 7329 73F9 76DB 7701 7B6C -End of Item 007E - -Begin of Item 007F - Format 1 - srcBegin = 6121 - srcEnd = 617E - mappingOffset = 125B - Mapping = - 8056 8072 8165 8AA0 9192 4E16 52E2 6B72 - 6D17 7A05 7B39 7D30 F96F 8CB0 53EC 562F - 5851 5BB5 5C0F 5C11 5DE2 6240 6383 6414 - 662D 68B3 6CBC 6D88 6EAF 701F 70A4 71D2 - 7526 758F 758E 7619 7B11 7BE0 7C2B 7D20 - 7D39 852C 856D 8607 8A34 900D 9061 90B5 - 92B7 97F6 9A37 4FD7 5C6C 675F 6D91 7C9F - 7E8C 8B16 8D16 901F 5B6B 5DFD 640D 84C0 - 905C 98E1 7387 5B8B 609A 677E 6DDE 8A1F - 8AA6 9001 980C 5237 F970 7051 788E 9396 - 8870 91D7 4FEE 53D7 55FD 56DA 5782 58FD - 5AC2 5B88 5CAB 5CC0 5E25 6101 -End of Item 007F - -Begin of Item 0080 - Format 1 - srcBegin = 6221 - srcEnd = 627E - mappingOffset = 12B9 - Mapping = - 620D 624B 6388 641C 6536 6578 6A39 6B8A - 6C34 6D19 6F31 71E7 72E9 7378 7407 74B2 - 7626 7761 79C0 7A57 7AEA 7CB9 7D8F 7DAC - 7E61 7F9E 8129 8331 8490 84DA 85EA 8896 - 8AB0 8B90 8F38 9042 9083 916C 9296 92B9 - 968B 96A7 96A8 96D6 9700 9808 9996 9AD3 - 9B1A 53D4 587E 5919 5B70 5BBF 6DD1 6F5A - 719F 7421 74B9 8085 83FD 5DE1 5F87 5FAA - 6042 65EC 6812 696F 6A53 6B89 6D35 6DF3 - 73E3 76FE 77AC 7B4D 7D14 8123 821C 8340 - 84F4 8563 8A62 8AC4 9187 931E 9806 99B4 - 620C 8853 8FF0 9265 5D07 5D27 -End of Item 0080 - -Begin of Item 0081 - Format 1 - srcBegin = 6321 - srcEnd = 637E - mappingOffset = 1317 - Mapping = - 5D69 745F 819D 8768 6FD5 62FE 7FD2 8936 - 8972 4E1E 4E58 50E7 52DD 5347 627F 6607 - 7E69 8805 965E 4F8D 5319 5636 59CB 5AA4 - 5C38 5C4E 5C4D 5E02 5F11 6043 65BD 662F - 6642 67BE 67F4 731C 77E2 793A 7FC5 8494 - 84CD 8996 8A66 8A69 8AE1 8C55 8C7A 57F4 - 5BD4 5F0F 606F 62ED 690D 6B96 6E5C 7184 - 7BD2 8755 8B58 8EFE 98DF 98FE 4F38 4F81 - 4FE1 547B 5A20 5BB8 613C 65B0 6668 71FC - 7533 795E 7D33 814E 81E3 8398 85AA 85CE - 8703 8A0A 8EAB 8F9B F971 8FC5 5931 5BA4 - 5BE6 6089 5BE9 5C0B 5FC3 6C81 -End of Item 0081 - -Begin of Item 0082 - Format 1 - srcBegin = 6421 - srcEnd = 647E - mappingOffset = 1375 - Mapping = - F972 6DF1 700B 751A 82AF 8AF6 4EC0 5341 - F973 96D9 6C0F 4E9E 4FC4 5152 555E 5A25 - 5CE8 6211 7259 82BD 83AA 86FE 8859 8A1D - 963F 96C5 9913 9D09 9D5D 580A 5CB3 5DBD - 5E44 60E1 6115 63E1 6A02 6E25 9102 9354 - 984E 9C10 9F77 5B89 5CB8 6309 664F 6848 - 773C 96C1 978D 9854 9B9F 65A1 8B01 8ECB - 95BC 5535 5CA9 5DD6 5EB5 6697 764C 83F4 - 95C7 58D3 62BC 72CE 9D28 4EF0 592E 600F - 663B 6B83 79E7 9D26 5393 54C0 57C3 5D16 - 611B 66D6 6DAF 788D 827E 9698 9744 5384 - 627C 6396 6DB2 7E0A 814B 984D -End of Item 0082 - -Begin of Item 0083 - Format 1 - srcBegin = 6521 - srcEnd = 657E - mappingOffset = 13D3 - Mapping = - 6AFB 7F4C 9DAF 9E1A 4E5F 503B 51B6 591C - 60F9 63F6 6930 723A 8036 F974 91CE 5F31 - F975 F976 7D04 82E5 846F 84BB 85E5 8E8D - F977 4F6F F978 F979 58E4 5B43 6059 63DA - 6518 656D 6698 F97A 694A 6A23 6D0B 7001 - 716C 75D2 760D 79B3 7A70 F97B 7F8A F97C - 8944 F97D 8B93 91C0 967D F97E 990A 5704 - 5FA1 65BC 6F01 7600 79A6 8A9E 99AD 9B5A - 9F6C 5104 61B6 6291 6A8D 81C6 5043 5830 - 5F66 7109 8A00 8AFA 5B7C 8616 4FFA 513C - 56B4 5944 63A9 6DF9 5DAA 696D 5186 4E88 - 4F59 F97F F980 F981 5982 F982 -End of Item 0083 - -Begin of Item 0084 - Format 1 - srcBegin = 6621 - srcEnd = 667E - mappingOffset = 1431 - Mapping = - F983 6B5F 6C5D F984 74B5 7916 F985 8207 - 8245 8339 8F3F 8F5D F986 9918 F987 F988 - F989 4EA6 F98A 57DF 5F79 6613 F98B F98C - 75AB 7E79 8B6F F98D 9006 9A5B 56A5 5827 - 59F8 5A1F 5BB4 F98E 5EF6 F98F F990 6350 - 633B F991 693D 6C87 6CBF 6D8E 6D93 6DF5 - 6F14 F992 70DF 7136 7159 F993 71C3 71D5 - F994 784F 786F F995 7B75 7DE3 F996 7E2F - F997 884D 8EDF F998 F999 F99A 925B F99B - 9CF6 F99C F99D F99E 6085 6D85 F99F 71B1 - F9A0 F9A1 95B1 53AD F9A2 F9A3 F9A4 67D3 - F9A5 708E 7130 7430 8276 82D2 -End of Item 0084 - -Begin of Item 0085 - Format 1 - srcBegin = 6721 - srcEnd = 677E - mappingOffset = 148F - Mapping = - F9A6 95BB 9AE5 9E7D 66C4 F9A7 71C1 8449 - F9A8 F9A9 584B F9AA F9AB 5DB8 5F71 F9AC - 6620 668E 6979 69AE 6C38 6CF3 6E36 6F41 - 6FDA 701B 702F 7150 71DF 7370 F9AD 745B - F9AE 74D4 76C8 7A4E 7E93 F9AF F9B0 82F1 - 8A60 8FCE F9B1 9348 F9B2 9719 F9B3 F9B4 - 4E42 502A F9B5 5208 53E1 66F3 6C6D 6FCA - 730A 777F 7A62 82AE 85DD 8602 F9B6 88D4 - 8A63 8B7D 8C6B F9B7 92B3 F9B8 9713 9810 - 4E94 4F0D 4FC9 50B2 5348 543E 5433 55DA - 5862 58BA 5967 5A1B 5BE4 609F F9B9 61CA - 6556 65FF 6664 68A7 6C5A 6FB3 -End of Item 0085 - -Begin of Item 0086 - Format 1 - srcBegin = 6821 - srcEnd = 687E - mappingOffset = 14ED - Mapping = - 70CF 71AC 7352 7B7D 8708 8AA4 9C32 9F07 - 5C4B 6C83 7344 7389 923A 6EAB 7465 761F - 7A69 7E15 860A 5140 58C5 64C1 74EE 7515 - 7670 7FC1 9095 96CD 9954 6E26 74E6 7AA9 - 7AAA 81E5 86D9 8778 8A1B 5A49 5B8C 5B9B - 68A1 6900 6D63 73A9 7413 742C 7897 7DE9 - 7FEB 8118 8155 839E 8C4C 962E 9811 66F0 - 5F80 65FA 6789 6C6A 738B 502D 5A03 6B6A - 77EE 5916 5D6C 5DCD 7325 754F F9BA F9BB - 50E5 51F9 582F 592D 5996 59DA 5BE5 F9BC - F9BD 5DA2 62D7 6416 6493 64FE F9BE 66DC - F9BF 6A48 F9C0 71FF 7464 F9C1 -End of Item 0086 - -Begin of Item 0087 - Format 1 - srcBegin = 6921 - srcEnd = 697E - mappingOffset = 154B - Mapping = - 7A88 7AAF 7E47 7E5E 8000 8170 F9C2 87EF - 8981 8B20 9059 F9C3 9080 9952 617E 6B32 - 6D74 7E1F 8925 8FB1 4FD1 50AD 5197 52C7 - 57C7 5889 5BB9 5EB8 6142 6995 6D8C 6E67 - 6EB6 7194 7462 7528 752C 8073 8338 84C9 - 8E0A 9394 93DE F9C4 4E8E 4F51 5076 512A - 53C8 53CB 53F3 5B87 5BD3 5C24 611A 6182 - 65F4 725B 7397 7440 76C2 7950 7991 79B9 - 7D06 7FBD 828B 85D5 865E 8FC2 9047 90F5 - 91EA 9685 96E8 96E9 52D6 5F67 65ED 6631 - 682F 715C 7A36 90C1 980A 4E91 F9C5 6A52 - 6B9E 6F90 7189 8018 82B8 8553 -End of Item 0087 - -Begin of Item 0088 - Format 1 - srcBegin = 6A21 - srcEnd = 6A7E - mappingOffset = 15A9 - Mapping = - 904B 9695 96F2 97FB 851A 9B31 4E90 718A - 96C4 5143 539F 54E1 5713 5712 57A3 5A9B - 5AC4 5BC3 6028 613F 63F4 6C85 6D39 6E72 - 6E90 7230 733F 7457 82D1 8881 8F45 9060 - F9C6 9662 9858 9D1B 6708 8D8A 925E 4F4D - 5049 50DE 5371 570D 59D4 5A01 5C09 6170 - 6690 6E2D 7232 744B 7DEF 80C3 840E 8466 - 853F 875F 885B 8918 8B02 9055 97CB 9B4F - 4E73 4F91 5112 516A F9C7 552F 55A9 5B7A - 5BA5 5E7C 5E7D 5EBE 60A0 60DF 6108 6109 - 63C4 6538 6709 F9C8 67D4 67DA F9C9 6961 - 6962 6CB9 6D27 F9CA 6E38 F9CB -End of Item 0088 - -Begin of Item 0089 - Format 1 - srcBegin = 6B21 - srcEnd = 6B7E - mappingOffset = 1607 - Mapping = - 6FE1 7336 7337 F9CC 745C 7531 F9CD 7652 - F9CE F9CF 7DAD 81FE 8438 88D5 8A98 8ADB - 8AED 8E30 8E42 904A 903E 907A 9149 91C9 - 936E F9D0 F9D1 5809 F9D2 6BD3 8089 80B2 - F9D3 F9D4 5141 596B 5C39 F9D5 F9D6 6F64 - 73A7 80E4 8D07 F9D7 9217 958F F9D8 F9D9 - F9DA F9DB 807F 620E 701C 7D68 878D F9DC - 57A0 6069 6147 6BB7 8ABE 9280 96B1 4E59 - 541F 6DEB 852D 9670 97F3 98EE 63D6 6CE3 - 9091 51DD 61C9 81BA 9DF9 4F9D 501A 5100 - 5B9C 610F 61FF 64EC 6905 6BC5 7591 77E3 - 7FA9 8264 858F 87FB 8863 8ABC -End of Item 0089 - -Begin of Item 008A - Format 1 - srcBegin = 6C21 - srcEnd = 6C7E - mappingOffset = 1665 - Mapping = - 8B70 91AB 4E8C 4EE5 4F0A F9DD F9DE 5937 - 59E8 F9DF 5DF2 5F1B 5F5B 6021 F9E0 F9E1 - F9E2 F9E3 723E 73E5 F9E4 7570 75CD F9E5 - 79FB F9E6 800C 8033 8084 82E1 8351 F9E7 - F9E8 8CBD 8CB3 9087 F9E9 F9EA 98F4 990C - F9EB F9EC 7037 76CA 7FCA 7FCC 7FFC 8B1A - 4EBA 4EC1 5203 5370 F9ED 54BD 56E0 59FB - 5BC5 5F15 5FCD 6E6E F9EE F9EF 7D6A 8335 - F9F0 8693 8A8D F9F1 976D 9777 F9F2 F9F3 - 4E00 4F5A 4F7E 58F9 65E5 6EA2 9038 93B0 - 99B9 4EFB 58EC 598A 59D9 6041 F9F4 F9F5 - 7A14 F9F6 834F 8CC3 5165 5344 -End of Item 008A - -Begin of Item 008B - Format 1 - srcBegin = 6D21 - srcEnd = 6D7E - mappingOffset = 16C3 - Mapping = - F9F7 F9F8 F9F9 4ECD 5269 5B55 82BF 4ED4 - 523A 54A8 59C9 59FF 5B50 5B57 5B5C 6063 - 6148 6ECB 7099 716E 7386 74F7 75B5 78C1 - 7D2B 8005 81EA 8328 8517 85C9 8AEE 8CC7 - 96CC 4F5C 52FA 56BC 65AB 6628 707C 70B8 - 7235 7DBD 828D 914C 96C0 9D72 5B71 68E7 - 6B98 6F7A 76DE 5C91 66AB 6F5B 7BB4 7C2A - 8836 96DC 4E08 4ED7 5320 5834 58BB 58EF - 596C 5C07 5E33 5E84 5F35 638C 66B2 6756 - 6A1F 6AA3 6B0C 6F3F 7246 F9FA 7350 748B - 7AE0 7CA7 8178 81DF 81E7 838A 846C 8523 - 8594 85CF 88DD 8D13 91AC 9577 -End of Item 008B - -Begin of Item 008C - Format 1 - srcBegin = 6E21 - srcEnd = 6E7E - mappingOffset = 1721 - Mapping = - 969C 518D 54C9 5728 5BB0 624D 6750 683D - 6893 6E3D 6ED3 707D 7E21 88C1 8CA1 8F09 - 9F4B 9F4E 722D 7B8F 8ACD 931A 4F47 4F4E - 5132 5480 59D0 5E95 62B5 6775 696E 6A17 - 6CAE 6E1A 72D9 732A 75BD 7BB8 7D35 82E7 - 83F9 8457 85F7 8A5B 8CAF 8E87 9019 90B8 - 96CE 9F5F 52E3 540A 5AE1 5BC2 6458 6575 - 6EF4 72C4 F9FB 7684 7A4D 7B1B 7C4D 7E3E - 7FDF 837B 8B2B 8CCA 8D64 8DE1 8E5F 8FEA - 8FF9 9069 93D1 4F43 4F7A 50B3 5168 5178 - 524D 526A 5861 587C 5960 5C08 5C55 5EDB - 609B 6230 6813 6BBF 6C08 6FB1 -End of Item 008C - -Begin of Item 008D - Format 1 - srcBegin = 6F21 - srcEnd = 6F7E - mappingOffset = 177F - Mapping = - 714E 7420 7530 7538 7551 7672 7B4C 7B8B - 7BAD 7BC6 7E8F 8A6E 8F3E 8F49 923F 9293 - 9322 942B 96FB 985A 986B 991E 5207 622A - 6298 6D59 7664 7ACA 7BC0 7D76 5360 5CBE - 5E97 6F38 70B9 7C98 9711 9B8E 9EDE 63A5 - 647A 8776 4E01 4E95 4EAD 505C 5075 5448 - 59C3 5B9A 5E40 5EAD 5EF7 5F81 60C5 633A - 653F 6574 65CC 6676 6678 67FE 6968 6A89 - 6B63 6C40 6DC0 6DE8 6E1F 6E5E 701E 70A1 - 738E 73FD 753A 775B 7887 798E 7A0B 7A7D - 7CBE 7D8E 8247 8A02 8AEA 8C9E 912D 914A - 91D8 9266 92CC 9320 9706 9756 -End of Item 008D - -Begin of Item 008E - Format 1 - srcBegin = 7021 - srcEnd = 707E - mappingOffset = 17DD - Mapping = - 975C 9802 9F0E 5236 5291 557C 5824 5E1D - 5F1F 608C 63D0 68AF 6FDF 796D 7B2C 81CD - 85BA 88FD 8AF8 8E44 918D 9664 969B 973D - 984C 9F4A 4FCE 5146 51CB 52A9 5632 5F14 - 5F6B 63AA 64CD 65E9 6641 66FA 66F9 671D - 689D 68D7 69FD 6F15 6F6E 7167 71E5 722A - 74AA 773A 7956 795A 79DF 7A20 7A95 7C97 - 7CDF 7D44 7E70 8087 85FB 86A4 8A54 8ABF - 8D99 8E81 9020 906D 91E3 963B 96D5 9CE5 - 65CF 7C07 8DB3 93C3 5B58 5C0A 5352 62D9 - 731D 5027 5B97 5F9E 60B0 616B 68D5 6DD9 - 742E 7A2E 7D42 7D9C 7E31 816B -End of Item 008E - -Begin of Item 008F - Format 1 - srcBegin = 7121 - srcEnd = 717E - mappingOffset = 183B - Mapping = - 8E2A 8E35 937E 9418 4F50 5750 5DE6 5EA7 - 632B 7F6A 4E3B 4F4F 4F8F 505A 59DD 80C4 - 546A 5468 55FE 594F 5B99 5DDE 5EDA 665D - 6731 67F1 682A 6CE8 6D32 6E4A 6F8D 70B7 - 73E0 7587 7C4C 7D02 7D2C 7DA2 821F 86DB - 8A3B 8A85 8D70 8E8A 8F33 9031 914E 9152 - 9444 99D0 7AF9 7CA5 4FCA 5101 51C6 57C8 - 5BEF 5CFB 6659 6A3D 6D5A 6E96 6FEC 710C - 756F 7AE3 8822 9021 9075 96CB 99FF 8301 - 4E2D 4EF2 8846 91CD 537D 6ADB 696B 6C41 - 847A 589E 618E 66FE 62EF 70DD 7511 75C7 - 7E52 84B8 8B49 8D08 4E4B 53EA -End of Item 008F - -Begin of Item 0090 - Format 1 - srcBegin = 7221 - srcEnd = 727E - mappingOffset = 1899 - Mapping = - 54AB 5730 5740 5FD7 6301 6307 646F 652F - 65E8 667A 679D 67B3 6B62 6C60 6C9A 6F2C - 77E5 7825 7949 7957 7D19 80A2 8102 81F3 - 829D 82B7 8718 8A8C F9FC 8D04 8DBE 9072 - 76F4 7A19 7A37 7E54 8077 5507 55D4 5875 - 632F 6422 6649 664B 686D 699B 6B84 6D25 - 6EB1 73CD 7468 74A1 755B 75B9 76E1 771E - 778B 79E6 7E09 7E1D 81FB 852F 8897 8A3A - 8CD1 8EEB 8FB0 9032 93AD 9663 9673 9707 - 4F84 53F1 59EA 5AC9 5E19 684E 74C6 75BE - 79E9 7A92 81A3 86ED 8CEA 8DCC 8FED 659F - 6715 F9FD 57F7 6F57 7DDD 8F2F -End of Item 0090 - -Begin of Item 0091 - Format 1 - srcBegin = 7321 - srcEnd = 737E - mappingOffset = 18F7 - Mapping = - 93F6 96C6 5FB5 61F2 6F84 4E14 4F98 501F - 53C9 55DF 5D6F 5DEE 6B21 6B64 78CB 7B9A - F9FE 8E49 8ECA 906E 6349 643E 7740 7A84 - 932F 947F 9F6A 64B0 6FAF 71E6 74A8 74DA - 7AC4 7C12 7E82 7CB2 7E98 8B9A 8D0A 947D - 9910 994C 5239 5BDF 64E6 672D 7D2E 50ED - 53C3 5879 6158 6159 61FA 65AC 7AD9 8B92 - 8B96 5009 5021 5275 5531 5A3C 5EE0 5F70 - 6134 655E 660C 6636 66A2 69CD 6EC4 6F32 - 7316 7621 7A93 8139 8259 83D6 84BC 50B5 - 57F0 5BC0 5BE8 5F69 63A1 7826 7DB5 83DC - 8521 91C7 91F5 518A 67F5 7B56 -End of Item 0091 - -Begin of Item 0092 - Format 1 - srcBegin = 7421 - srcEnd = 747E - mappingOffset = 1955 - Mapping = - 8CAC 51C4 59BB 60BD 8655 501C F9FF 5254 - 5C3A 617D 621A 62D3 64F2 65A5 6ECC 7620 - 810A 8E60 965F 96BB 4EDF 5343 5598 5929 - 5DDD 64C5 6CC9 6DFA 7394 7A7F 821B 85A6 - 8CE4 8E10 9077 91E7 95E1 9621 97C6 51F8 - 54F2 5586 5FB9 64A4 6F88 7DB4 8F1F 8F4D - 9435 50C9 5C16 6CBE 6DFB 751B 77BB 7C3D - 7C64 8A79 8AC2 581E 59BE 5E16 6377 7252 - 758A 776B 8ADC 8CBC 8F12 5EF3 6674 6DF8 - 807D 83C1 8ACB 9751 9BD6 FA00 5243 66FF - 6D95 6EEF 7DE0 8AE6 902E 905E 9AD4 521D - 527F 54E8 6194 6284 62DB 68A2 -End of Item 0092 - -Begin of Item 0093 - Format 1 - srcBegin = 7521 - srcEnd = 757E - mappingOffset = 19B3 - Mapping = - 6912 695A 6A35 7092 7126 785D 7901 790E - 79D2 7A0D 8096 8278 82D5 8349 8549 8C82 - 8D85 9162 918B 91AE 4FC3 56D1 71ED 77D7 - 8700 89F8 5BF8 5FD6 6751 90A8 53E2 585A - 5BF5 60A4 6181 6460 7E3D 8070 8525 9283 - 64AE 50AC 5D14 6700 589C 62BD 63A8 690E - 6978 6A1E 6E6B 76BA 79CB 82BB 8429 8ACF - 8DA8 8FFD 9112 914B 919C 9310 9318 939A - 96DB 9A36 9C0D 4E11 755C 795D 7AFA 7B51 - 7BC9 7E2E 84C4 8E59 8E74 8EF8 9010 6625 - 693F 7443 51FA 672E 9EDC 5145 5FE0 6C96 - 87F2 885D 8877 60B4 81B5 8403 -End of Item 0093 - -Begin of Item 0094 - Format 1 - srcBegin = 7621 - srcEnd = 767E - mappingOffset = 1A11 - Mapping = - 8D05 53D6 5439 5634 5A36 5C31 708A 7FE0 - 805A 8106 81ED 8DA3 9189 9A5F 9DF2 5074 - 4EC4 53A0 60FB 6E2C 5C64 4F88 5024 55E4 - 5CD9 5E5F 6065 6894 6CBB 6DC4 71BE 75D4 - 75F4 7661 7A1A 7A49 7DC7 7DFB 7F6E 81F4 - 86A9 8F1C 96C9 99B3 9F52 5247 52C5 98ED - 89AA 4E03 67D2 6F06 4FB5 5BE2 6795 6C88 - 6D78 741B 7827 91DD 937C 87C4 79E4 7A31 - 5FEB 4ED6 54A4 553E 58AE 59A5 60F0 6253 - 62D6 6736 6955 8235 9640 99B1 99DD 502C - 5353 5544 577C FA01 6258 FA02 64E2 666B - 67DD 6FC1 6FEF 7422 7438 8A17 -End of Item 0094 - -Begin of Item 0095 - Format 1 - srcBegin = 7721 - srcEnd = 777E - mappingOffset = 1A6F - Mapping = - 9438 5451 5606 5766 5F48 619A 6B4E 7058 - 70AD 7DBB 8A95 596A 812B 63A2 7708 803D - 8CAA 5854 642D 69BB 5B95 5E11 6E6F FA03 - 8569 514C 53F0 592A 6020 614B 6B86 6C70 - 6CF0 7B1E 80CE 82D4 8DC6 90B0 98B1 FA04 - 64C7 6FA4 6491 6504 514E 5410 571F 8A0E - 615F 6876 FA05 75DB 7B52 7D71 901A 5806 - 69CC 817F 892A 9000 9839 5078 5957 59AC - 6295 900F 9B2A 615D 7279 95D6 5761 5A46 - 5DF4 628A 64AD 64FA 6777 6CE2 6D3E 722C - 7436 7834 7F77 82AD 8DDB 9817 5224 5742 - 677F 7248 74E3 8CA9 8FA6 9211 -End of Item 0095 - -Begin of Item 0096 - Format 1 - srcBegin = 7821 - srcEnd = 787E - mappingOffset = 1ACD - Mapping = - 962A 516B 53ED 634C 4F69 5504 6096 6557 - 6C9B 6D7F 724C 72FD 7A17 8987 8C9D 5F6D - 6F8E 70F9 81A8 610E 4FBF 504F 6241 7247 - 7BC7 7DE8 7FE9 904D 97AD 9A19 8CB6 576A - 5E73 67B0 840D 8A55 5420 5B16 5E63 5EE2 - 5F0A 6583 80BA 853D 9589 965B 4F48 5305 - 530D 530F 5486 54FA 5703 5E03 6016 629B - 62B1 6355 FA06 6CE1 6D66 75B1 7832 80DE - 812F 82DE 8461 84B2 888D 8912 900B 92EA - 98FD 9B91 5E45 66B4 66DD 7011 7206 FA07 - 4FF5 527D 5F6A 6153 6753 6A19 6F02 74E2 - 7968 8868 8C79 98C7 98C4 9A43 -End of Item 0096 - -Begin of Item 0097 - Format 1 - srcBegin = 7921 - srcEnd = 797E - mappingOffset = 1B2B - Mapping = - 54C1 7A1F 6953 8AF7 8C4A 98A8 99AE 5F7C - 62AB 75B2 76AE 88AB 907F 9642 5339 5F3C - 5FC5 6CCC 73CC 7562 758B 7B46 82FE 999D - 4E4F 903C 4E0B 4F55 53A6 590F 5EC8 6630 - 6CB3 7455 8377 8766 8CC0 9050 971E 9C15 - 58D1 5B78 8650 8B14 9DB4 5BD2 6068 608D - 65F1 6C57 6F22 6FA3 701A 7F55 7FF0 9591 - 9592 9650 97D3 5272 8F44 51FD 542B 54B8 - 5563 558A 6ABB 6DB5 7DD8 8266 929C 9677 - 9E79 5408 54C8 76D2 86E4 95A4 95D4 965C - 4EA2 4F09 59EE 5AE6 5DF7 6052 6297 676D - 6841 6C86 6E2F 7F38 809B 822A -End of Item 0097 - -Begin of Item 0098 - Format 1 - srcBegin = 7A21 - srcEnd = 7A7E - mappingOffset = 1B89 - Mapping = - FA08 FA09 9805 4EA5 5055 54B3 5793 595A - 5B69 5BB3 61C8 6977 6D77 7023 87F9 89E3 - 8A72 8AE7 9082 99ED 9AB8 52BE 6838 5016 - 5E78 674F 8347 884C 4EAB 5411 56AE 73E6 - 9115 97FF 9909 9957 9999 5653 589F 865B - 8A31 61B2 6AF6 737B 8ED2 6B47 96AA 9A57 - 5955 7200 8D6B 9769 4FD4 5CF4 5F26 61F8 - 665B 6CEB 70AB 7384 73B9 73FE 7729 774D - 7D43 7D62 7E23 8237 8852 FA0A 8CE2 9249 - 986F 5B51 7A74 8840 9801 5ACC 4FE0 5354 - 593E 5CFD 633E 6D79 72F9 8105 8107 83A2 - 92CF 9830 4EA8 5144 5211 578B -End of Item 0098 - -Begin of Item 0099 - Format 1 - srcBegin = 7B21 - srcEnd = 7B7E - mappingOffset = 1BE7 - Mapping = - 5F62 6CC2 6ECE 7005 7050 70AF 7192 73E9 - 7469 834A 87A2 8861 9008 90A2 93A3 99A8 - 516E 5F57 60E0 6167 66B3 8559 8E4A 91AF - 978B 4E4E 4E92 547C 58D5 58FA 597D 5CB5 - 5F27 6236 6248 660A 6667 6BEB 6D69 6DCF - 6E56 6EF8 6F94 6FE0 6FE9 705D 72D0 7425 - 745A 74E0 7693 795C 7CCA 7E1E 80E1 82A6 - 846B 84BF 864E 865F 8774 8B77 8C6A 93AC - 9800 9865 60D1 6216 9177 5A5A 660F 6DF7 - 6E3E 743F 9B42 5FFD 60DA 7B0F 54C4 5F18 - 6C5E 6CD3 6D2A 70D8 7D05 8679 8A0C 9D3B - 5316 548C 5B05 6A3A 706B 7575 -End of Item 0099 - -Begin of Item 009A - Format 1 - srcBegin = 7C21 - srcEnd = 7C7E - mappingOffset = 1C45 - Mapping = - 798D 79BE 82B1 83EF 8A71 8B41 8CA8 9774 - FA0B 64F4 652B 78BA 78BB 7A6B 4E38 559A - 5950 5BA6 5E7B 60A3 63DB 6B61 6665 6853 - 6E19 7165 74B0 7D08 9084 9A69 9C25 6D3B - 6ED1 733E 8C41 95CA 51F0 5E4C 5FA8 604D - 60F6 6130 614C 6643 6644 69A5 6CC1 6E5F - 6EC9 6F62 714C 749C 7687 7BC1 7C27 8352 - 8757 9051 968D 9EC3 532F 56DE 5EFB 5F8A - 6062 6094 61F7 6666 6703 6A9C 6DEE 6FAE - 7070 736A 7E6A 81BE 8334 86D4 8AA8 8CC4 - 5283 7372 5B96 6A6B 9404 54EE 5686 5B5D - 6548 6585 66C9 689F 6D8D 6DC6 -End of Item 009A - -Begin of Item 009B - Format 1 - srcBegin = 7D21 - srcEnd = 7D7E - mappingOffset = 1CA3 - Mapping = - 723B 80B4 9175 9A4D 4FAF 5019 539A 540E - 543C 5589 55C5 5E3F 5F8C 673D 7166 73DD - 9005 52DB 52F3 5864 58CE 7104 718F 71FB - 85B0 8A13 6688 85A8 55A7 6684 714A 8431 - 5349 5599 6BC1 5F59 5FBD 63EE 6689 7147 - 8AF1 8F1D 9EBE 4F11 643A 70CB 7566 8667 - 6064 8B4E 9DF8 5147 51F6 5308 6D36 80F8 - 9ED1 6615 6B23 7098 75D5 5403 5C79 7D07 - 8A16 6B20 6B3D 6B46 5438 6070 6D3D 7FD5 - 8208 50D6 51DE 559C 566B 56CD 59EC 5B09 - 5E0C 6199 6198 6231 665E 66E6 7199 71B9 - 71BA 72A7 79A7 7A00 7FB2 8A70 -End of Item 009B - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x009C, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x002C, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0200, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x002F */ -/* Total of Format 1 : 0x0067 */ -/* Total of Format 2 : 0x0006 */ -/* Total of Format 3 : 0x0000 */ - -0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -0x0000, 0x0000, 0x0000, 0x1000, 0x2211, 0x1111, 0x1111, 0x1122, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1121, 0x1121, 0x1111, 0x1111, 0x1111, 0x1111, -0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x002C Start of MapCell Array */ -/* 0000 */ 0x2134, 0x213D, 0x3008, -/* 0001 */ 0x2321, 0x235B, 0xFF01, -/* 0002 */ 0x235D, 0x237D, 0xFF3D, -/* 0003 */ 0x2421, 0x247E, 0x3131, -/* 0004 */ 0x2521, 0x252A, 0x2170, -/* 0005 */ 0x2530, 0x2539, 0x2160, -/* 0006 */ 0x2541, 0x2551, 0x0391, -/* 0007 */ 0x2552, 0x2558, 0x03A3, -/* 0008 */ 0x2561, 0x2571, 0x03B1, -/* 0009 */ 0x2572, 0x2578, 0x03C3, -/* 000A */ 0x265D, 0x2664, 0x2543, -/* 000B */ 0x272B, 0x2734, 0x3399, -/* 000C */ 0x273F, 0x2748, 0x33B0, -/* 000D */ 0x2749, 0x274D, 0x3380, -/* 000E */ 0x274E, 0x2753, 0x33BA, -/* 000F */ 0x2754, 0x2758, 0x3390, -/* 0010 */ 0x2831, 0x284C, 0x3260, -/* 0011 */ 0x284D, 0x2866, 0x24D0, -/* 0012 */ 0x2867, 0x2875, 0x2460, -/* 0013 */ 0x2931, 0x294C, 0x3200, -/* 0014 */ 0x294D, 0x2966, 0x249C, -/* 0015 */ 0x2967, 0x2975, 0x2474, -/* 0016 */ 0x2A21, 0x2A73, 0x3041, -/* 0017 */ 0x2B21, 0x2B76, 0x30A1, -/* 0018 */ 0x2C21, 0x2C26, 0x0410, -/* 0019 */ 0x2C28, 0x2C41, 0x0416, -/* 001A */ 0x2C51, 0x2C56, 0x0430, -/* 001B */ 0x2C58, 0x2C71, 0x0436, -/* 001C */ 0x3028, 0x302F, 0xAC10, -/* 001D */ 0x3030, 0x3034, 0xAC19, -/* 001E */ 0x3334, 0x3338, 0xB0AB, -/* 001F */ 0x345D, 0x3461, 0xB2EB, -/* 0020 */ 0x3465, 0x3469, 0xB2F7, -/* 0021 */ 0x3839, 0x383D, 0xB9CE, -/* 0022 */ 0x3959, 0x395D, 0xBC14, -/* 0023 */ 0x395E, 0x3962, 0xBC1B, -/* 0024 */ 0x3C2D, 0x3C31, 0xC11C, -/* 0025 */ 0x3E76, 0x3E7C, 0xC5C4, -/* 0026 */ 0x3F30, 0x3F35, 0xC5FC, -/* 0027 */ 0x4040, 0x4047, 0xC751, -/* 0028 */ 0x515B, 0x5160, 0xF90E, -/* 0029 */ 0x5162, 0x5166, 0xF914, -/* 002A */ 0x5227, 0x522B, 0xF928, -/* 002B */ 0x5246, 0x524B, 0xF933, -/* 002C */ 0x524D, 0x5257, 0xF939, -/* 002D */ 0x5264, 0x526B, 0xF94A, -/* 002E */ 0x5270, 0x5275, 0xF952, -/* 002F */ 0x2121, 0x2133, 0x0000, -/* 0030 */ 0x213E, 0x217E, 0x0013, -/* 0031 */ 0x2221, 0x2265, 0x0054, -/* 0032 */ 0x235C, 0x0000, 0xFFE6, -/* 0033 */ 0x237E, 0x0000, 0xFFE3, -/* 0034 */ 0x2621, 0x265C, 0x0099, -/* 0035 */ 0x2721, 0x272A, 0x00D5, -/* 0036 */ 0x2735, 0x273E, 0x00DF, -/* 0037 */ 0x2759, 0x276F, 0x00E9, -/* 0038 */ 0x2821, 0x282F, 0x0100, -/* 0039 */ 0x2876, 0x287E, 0x010F, -/* 003A */ 0x2921, 0x2930, 0x0118, -/* 003B */ 0x2976, 0x297E, 0x0128, -/* 003C */ 0x2C27, 0x0000, 0x0401, -/* 003D */ 0x2C57, 0x0000, 0x0451, -/* 003E */ 0x3021, 0x3027, 0x0131, -/* 003F */ 0x3035, 0x307E, 0x0138, -/* 0040 */ 0x3121, 0x317E, 0x0182, -/* 0041 */ 0x3221, 0x327E, 0x01E0, -/* 0042 */ 0x3321, 0x3333, 0x023E, -/* 0043 */ 0x3339, 0x337E, 0x0251, -/* 0044 */ 0x3421, 0x345C, 0x0297, -/* 0045 */ 0x3462, 0x3464, 0x02D3, -/* 0046 */ 0x346A, 0x347E, 0x02D6, -/* 0047 */ 0x3521, 0x357E, 0x02EB, -/* 0048 */ 0x3621, 0x367E, 0x0349, -/* 0049 */ 0x3721, 0x377E, 0x03A7, -/* 004A */ 0x3821, 0x3838, 0x0405, -/* 004B */ 0x383E, 0x387E, 0x041D, -/* 004C */ 0x3921, 0x3958, 0x045E, -/* 004D */ 0x3963, 0x397E, 0x0496, -/* 004E */ 0x3A21, 0x3A7E, 0x04B2, -/* 004F */ 0x3B21, 0x3B7E, 0x0510, -/* 0050 */ 0x3C21, 0x3C2C, 0x056E, -/* 0051 */ 0x3C32, 0x3C7E, 0x057A, -/* 0052 */ 0x3D21, 0x3D7E, 0x05C7, -/* 0053 */ 0x3E21, 0x3E75, 0x0625, -/* 0054 */ 0x3E7D, 0x3E7E, 0x067A, -/* 0055 */ 0x3F21, 0x3F2F, 0x067C, -/* 0056 */ 0x3F36, 0x3F7E, 0x068B, -/* 0057 */ 0x4021, 0x403F, 0x06D4, -/* 0058 */ 0x4048, 0x407E, 0x06F3, -/* 0059 */ 0x4121, 0x417E, 0x072A, -/* 005A */ 0x4221, 0x427E, 0x0788, -/* 005B */ 0x4321, 0x437E, 0x07E6, -/* 005C */ 0x4421, 0x447E, 0x0844, -/* 005D */ 0x4521, 0x457E, 0x08A2, -/* 005E */ 0x4621, 0x467E, 0x0900, -/* 005F */ 0x4721, 0x477E, 0x095E, -/* 0060 */ 0x4821, 0x487E, 0x09BC, -/* 0061 */ 0x4A21, 0x4A7E, 0x0A1A, -/* 0062 */ 0x4B21, 0x4B7E, 0x0A78, -/* 0063 */ 0x4C21, 0x4C7E, 0x0AD6, -/* 0064 */ 0x4D21, 0x4D7E, 0x0B34, -/* 0065 */ 0x4E21, 0x4E7E, 0x0B92, -/* 0066 */ 0x4F21, 0x4F7E, 0x0BF0, -/* 0067 */ 0x5021, 0x507E, 0x0C4E, -/* 0068 */ 0x5121, 0x515A, 0x0CAC, -/* 0069 */ 0x5161, 0x0000, 0x90A3, -/* 006A */ 0x5167, 0x517E, 0x0CE6, -/* 006B */ 0x5221, 0x5226, 0x0CFE, -/* 006C */ 0x522C, 0x5245, 0x0D04, -/* 006D */ 0x524C, 0x0000, 0x99D1, -/* 006E */ 0x5258, 0x5263, 0x0D1E, -/* 006F */ 0x526C, 0x526F, 0x0D2A, -/* 0070 */ 0x5276, 0x527E, 0x0D2E, -/* 0071 */ 0x5321, 0x537E, 0x0D37, -/* 0072 */ 0x5421, 0x547E, 0x0D95, -/* 0073 */ 0x5521, 0x557E, 0x0DF3, -/* 0074 */ 0x5621, 0x567E, 0x0E51, -/* 0075 */ 0x5721, 0x577E, 0x0EAF, -/* 0076 */ 0x5821, 0x587E, 0x0F0D, -/* 0077 */ 0x5921, 0x597E, 0x0F6B, -/* 0078 */ 0x5A21, 0x5A7E, 0x0FC9, -/* 0079 */ 0x5B21, 0x5B7E, 0x1027, -/* 007A */ 0x5C21, 0x5C7E, 0x1085, -/* 007B */ 0x5D21, 0x5D7E, 0x10E3, -/* 007C */ 0x5E21, 0x5E7E, 0x1141, -/* 007D */ 0x5F21, 0x5F7E, 0x119F, -/* 007E */ 0x6021, 0x607E, 0x11FD, -/* 007F */ 0x6121, 0x617E, 0x125B, -/* 0080 */ 0x6221, 0x627E, 0x12B9, -/* 0081 */ 0x6321, 0x637E, 0x1317, -/* 0082 */ 0x6421, 0x647E, 0x1375, -/* 0083 */ 0x6521, 0x657E, 0x13D3, -/* 0084 */ 0x6621, 0x667E, 0x1431, -/* 0085 */ 0x6721, 0x677E, 0x148F, -/* 0086 */ 0x6821, 0x687E, 0x14ED, -/* 0087 */ 0x6921, 0x697E, 0x154B, -/* 0088 */ 0x6A21, 0x6A7E, 0x15A9, -/* 0089 */ 0x6B21, 0x6B7E, 0x1607, -/* 008A */ 0x6C21, 0x6C7E, 0x1665, -/* 008B */ 0x6D21, 0x6D7E, 0x16C3, -/* 008C */ 0x6E21, 0x6E7E, 0x1721, -/* 008D */ 0x6F21, 0x6F7E, 0x177F, -/* 008E */ 0x7021, 0x707E, 0x17DD, -/* 008F */ 0x7121, 0x717E, 0x183B, -/* 0090 */ 0x7221, 0x727E, 0x1899, -/* 0091 */ 0x7321, 0x737E, 0x18F7, -/* 0092 */ 0x7421, 0x747E, 0x1955, -/* 0093 */ 0x7521, 0x757E, 0x19B3, -/* 0094 */ 0x7621, 0x767E, 0x1A11, -/* 0095 */ 0x7721, 0x777E, 0x1A6F, -/* 0096 */ 0x7821, 0x787E, 0x1ACD, -/* 0097 */ 0x7921, 0x797E, 0x1B2B, -/* 0098 */ 0x7A21, 0x7A7E, 0x1B89, -/* 0099 */ 0x7B21, 0x7B7E, 0x1BE7, -/* 009A */ 0x7C21, 0x7C7E, 0x1C45, -/* 009B */ 0x7D21, 0x7D7E, 0x1CA3, -/*-------------------------------------------------------*/ -/* Offset=0x0200 Start of MappingTable */ - -/* 0000 */ 0x3000, 0x3001, 0x3002, 0x00B7, 0x2025, 0x2026, 0x00A8, 0x3003, -/* 0008 */ 0x00AD, 0x2015, 0x2225, 0xFF3C, 0x223C, 0x2018, 0x2019, 0x201C, -/* 0010 */ 0x201D, 0x3014, 0x3015, 0x00B1, 0x00D7, 0x00F7, 0x2260, 0x2264, -/* 0018 */ 0x2265, 0x221E, 0x2234, 0x00B0, 0x2032, 0x2033, 0x2103, 0x212B, -/* 0020 */ 0xFFE0, 0xFFE1, 0xFFE5, 0x2642, 0x2640, 0x2220, 0x22A5, 0x2312, -/* 0028 */ 0x2202, 0x2207, 0x2261, 0x2252, 0x00A7, 0x203B, 0x2606, 0x2605, -/* 0030 */ 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, -/* 0038 */ 0x25B2, 0x25BD, 0x25BC, 0x2192, 0x2190, 0x2191, 0x2193, 0x2194, -/* 0040 */ 0x3013, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, 0x2235, 0x222B, -/* 0048 */ 0x222C, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283, 0x222A, -/* 0050 */ 0x2229, 0x2227, 0x2228, 0xFFE2, 0x21D2, 0x21D4, 0x2200, 0x2203, -/* 0058 */ 0x00B4, 0xFF5E, 0x02C7, 0x02D8, 0x02DD, 0x02DA, 0x02D9, 0x00B8, -/* 0060 */ 0x02DB, 0x00A1, 0x00BF, 0x02D0, 0x222E, 0x2211, 0x220F, 0x00A4, -/* 0068 */ 0x2109, 0x2030, 0x25C1, 0x25C0, 0x25B7, 0x25B6, 0x2664, 0x2660, -/* 0070 */ 0x2661, 0x2665, 0x2667, 0x2663, 0x2299, 0x25C8, 0x25A3, 0x25D0, -/* 0078 */ 0x25D1, 0x2592, 0x25A4, 0x25A5, 0x25A8, 0x25A7, 0x25A6, 0x25A9, -/* 0080 */ 0x2668, 0x260F, 0x260E, 0x261C, 0x261E, 0x00B6, 0x2020, 0x2021, -/* 0088 */ 0x2195, 0x2197, 0x2199, 0x2196, 0x2198, 0x266D, 0x2669, 0x266A, -/* 0090 */ 0x266C, 0x327F, 0x321C, 0x2116, 0x33C7, 0x2122, 0x33C2, 0x33D8, -/* 0098 */ 0x2121, 0x2500, 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, -/* 00A0 */ 0x252C, 0x2524, 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, -/* 00A8 */ 0x251B, 0x2517, 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, -/* 00B0 */ 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, -/* 00B8 */ 0x2542, 0x2512, 0x2511, 0x251A, 0x2519, 0x2516, 0x2515, 0x250E, -/* 00C0 */ 0x250D, 0x251E, 0x251F, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, -/* 00C8 */ 0x252A, 0x252D, 0x252E, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, -/* 00D0 */ 0x253A, 0x253D, 0x253E, 0x2540, 0x2541, 0x3395, 0x3396, 0x3397, -/* 00D8 */ 0x2113, 0x3398, 0x33C4, 0x33A3, 0x33A4, 0x33A5, 0x33A6, 0x33CA, -/* 00E0 */ 0x338D, 0x338E, 0x338F, 0x33CF, 0x3388, 0x3389, 0x33C8, 0x33A7, -/* 00E8 */ 0x33A8, 0x2126, 0x33C0, 0x33C1, 0x338A, 0x338B, 0x338C, 0x33D6, -/* 00F0 */ 0x33C5, 0x33AD, 0x33AE, 0x33AF, 0x33DB, 0x33A9, 0x33AA, 0x33AB, -/* 00F8 */ 0x33AC, 0x33DD, 0x33D0, 0x33D3, 0x33C3, 0x33C9, 0x33DC, 0x33C6, -/* 0100 */ 0x00C6, 0x00D0, 0x00AA, 0x0126, 0xFFFD, 0x0132, 0xFFFD, 0x013F, -/* 0108 */ 0x0141, 0x00D8, 0x0152, 0x00BA, 0x00DE, 0x0166, 0x014A, 0x00BD, -/* 0110 */ 0x2153, 0x2154, 0x00BC, 0x00BE, 0x215B, 0x215C, 0x215D, 0x215E, -/* 0118 */ 0x00E6, 0x0111, 0x00F0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140, -/* 0120 */ 0x0142, 0x00F8, 0x0153, 0x00DF, 0x00FE, 0x0167, 0x014B, 0x0149, -/* 0128 */ 0x00B9, 0x00B2, 0x00B3, 0x2074, 0x207F, 0x2081, 0x2082, 0x2083, -/* 0130 */ 0x2084, 0xAC00, 0xAC01, 0xAC04, 0xAC07, 0xAC08, 0xAC09, 0xAC0A, -/* 0138 */ 0xAC20, 0xAC24, 0xAC2C, 0xAC2D, 0xAC2F, 0xAC30, 0xAC31, 0xAC38, -/* 0140 */ 0xAC39, 0xAC3C, 0xAC40, 0xAC4B, 0xAC4D, 0xAC54, 0xAC58, 0xAC5C, -/* 0148 */ 0xAC70, 0xAC71, 0xAC74, 0xAC77, 0xAC78, 0xAC7A, 0xAC80, 0xAC81, -/* 0150 */ 0xAC83, 0xAC84, 0xAC85, 0xAC86, 0xAC89, 0xAC8A, 0xAC8B, 0xAC8C, -/* 0158 */ 0xAC90, 0xAC94, 0xAC9C, 0xAC9D, 0xAC9F, 0xACA0, 0xACA1, 0xACA8, -/* 0160 */ 0xACA9, 0xACAA, 0xACAC, 0xACAF, 0xACB0, 0xACB8, 0xACB9, 0xACBB, -/* 0168 */ 0xACBC, 0xACBD, 0xACC1, 0xACC4, 0xACC8, 0xACCC, 0xACD5, 0xACD7, -/* 0170 */ 0xACE0, 0xACE1, 0xACE4, 0xACE7, 0xACE8, 0xACEA, 0xACEC, 0xACEF, -/* 0178 */ 0xACF0, 0xACF1, 0xACF3, 0xACF5, 0xACF6, 0xACFC, 0xACFD, 0xAD00, -/* 0180 */ 0xAD04, 0xAD06, 0xAD0C, 0xAD0D, 0xAD0F, 0xAD11, 0xAD18, 0xAD1C, -/* 0188 */ 0xAD20, 0xAD29, 0xAD2C, 0xAD2D, 0xAD34, 0xAD35, 0xAD38, 0xAD3C, -/* 0190 */ 0xAD44, 0xAD45, 0xAD47, 0xAD49, 0xAD50, 0xAD54, 0xAD58, 0xAD61, -/* 0198 */ 0xAD63, 0xAD6C, 0xAD6D, 0xAD70, 0xAD73, 0xAD74, 0xAD75, 0xAD76, -/* 01A0 */ 0xAD7B, 0xAD7C, 0xAD7D, 0xAD7F, 0xAD81, 0xAD82, 0xAD88, 0xAD89, -/* 01A8 */ 0xAD8C, 0xAD90, 0xAD9C, 0xAD9D, 0xADA4, 0xADB7, 0xADC0, 0xADC1, -/* 01B0 */ 0xADC4, 0xADC8, 0xADD0, 0xADD1, 0xADD3, 0xADDC, 0xADE0, 0xADE4, -/* 01B8 */ 0xADF8, 0xADF9, 0xADFC, 0xADFF, 0xAE00, 0xAE01, 0xAE08, 0xAE09, -/* 01C0 */ 0xAE0B, 0xAE0D, 0xAE14, 0xAE30, 0xAE31, 0xAE34, 0xAE37, 0xAE38, -/* 01C8 */ 0xAE3A, 0xAE40, 0xAE41, 0xAE43, 0xAE45, 0xAE46, 0xAE4A, 0xAE4C, -/* 01D0 */ 0xAE4D, 0xAE4E, 0xAE50, 0xAE54, 0xAE56, 0xAE5C, 0xAE5D, 0xAE5F, -/* 01D8 */ 0xAE60, 0xAE61, 0xAE65, 0xAE68, 0xAE69, 0xAE6C, 0xAE70, 0xAE78, -/* 01E0 */ 0xAE79, 0xAE7B, 0xAE7C, 0xAE7D, 0xAE84, 0xAE85, 0xAE8C, 0xAEBC, -/* 01E8 */ 0xAEBD, 0xAEBE, 0xAEC0, 0xAEC4, 0xAECC, 0xAECD, 0xAECF, 0xAED0, -/* 01F0 */ 0xAED1, 0xAED8, 0xAED9, 0xAEDC, 0xAEE8, 0xAEEB, 0xAEED, 0xAEF4, -/* 01F8 */ 0xAEF8, 0xAEFC, 0xAF07, 0xAF08, 0xAF0D, 0xAF10, 0xAF2C, 0xAF2D, -/* 0200 */ 0xAF30, 0xAF32, 0xAF34, 0xAF3C, 0xAF3D, 0xAF3F, 0xAF41, 0xAF42, -/* 0208 */ 0xAF43, 0xAF48, 0xAF49, 0xAF50, 0xAF5C, 0xAF5D, 0xAF64, 0xAF65, -/* 0210 */ 0xAF79, 0xAF80, 0xAF84, 0xAF88, 0xAF90, 0xAF91, 0xAF95, 0xAF9C, -/* 0218 */ 0xAFB8, 0xAFB9, 0xAFBC, 0xAFC0, 0xAFC7, 0xAFC8, 0xAFC9, 0xAFCB, -/* 0220 */ 0xAFCD, 0xAFCE, 0xAFD4, 0xAFDC, 0xAFE8, 0xAFE9, 0xAFF0, 0xAFF1, -/* 0228 */ 0xAFF4, 0xAFF8, 0xB000, 0xB001, 0xB004, 0xB00C, 0xB010, 0xB014, -/* 0230 */ 0xB01C, 0xB01D, 0xB028, 0xB044, 0xB045, 0xB048, 0xB04A, 0xB04C, -/* 0238 */ 0xB04E, 0xB053, 0xB054, 0xB055, 0xB057, 0xB059, 0xB05D, 0xB07C, -/* 0240 */ 0xB07D, 0xB080, 0xB084, 0xB08C, 0xB08D, 0xB08F, 0xB091, 0xB098, -/* 0248 */ 0xB099, 0xB09A, 0xB09C, 0xB09F, 0xB0A0, 0xB0A1, 0xB0A2, 0xB0A8, -/* 0250 */ 0xB0A9, 0xB0B1, 0xB0B3, 0xB0B4, 0xB0B5, 0xB0B8, 0xB0BC, 0xB0C4, -/* 0258 */ 0xB0C5, 0xB0C7, 0xB0C8, 0xB0C9, 0xB0D0, 0xB0D1, 0xB0D4, 0xB0D8, -/* 0260 */ 0xB0E0, 0xB0E5, 0xB108, 0xB109, 0xB10B, 0xB10C, 0xB110, 0xB112, -/* 0268 */ 0xB113, 0xB118, 0xB119, 0xB11B, 0xB11C, 0xB11D, 0xB123, 0xB124, -/* 0270 */ 0xB125, 0xB128, 0xB12C, 0xB134, 0xB135, 0xB137, 0xB138, 0xB139, -/* 0278 */ 0xB140, 0xB141, 0xB144, 0xB148, 0xB150, 0xB151, 0xB154, 0xB155, -/* 0280 */ 0xB158, 0xB15C, 0xB160, 0xB178, 0xB179, 0xB17C, 0xB180, 0xB182, -/* 0288 */ 0xB188, 0xB189, 0xB18B, 0xB18D, 0xB192, 0xB193, 0xB194, 0xB198, -/* 0290 */ 0xB19C, 0xB1A8, 0xB1CC, 0xB1D0, 0xB1D4, 0xB1DC, 0xB1DD, 0xB1DF, -/* 0298 */ 0xB1E8, 0xB1E9, 0xB1EC, 0xB1F0, 0xB1F9, 0xB1FB, 0xB1FD, 0xB204, -/* 02A0 */ 0xB205, 0xB208, 0xB20B, 0xB20C, 0xB214, 0xB215, 0xB217, 0xB219, -/* 02A8 */ 0xB220, 0xB234, 0xB23C, 0xB258, 0xB25C, 0xB260, 0xB268, 0xB269, -/* 02B0 */ 0xB274, 0xB275, 0xB27C, 0xB284, 0xB285, 0xB289, 0xB290, 0xB291, -/* 02B8 */ 0xB294, 0xB298, 0xB299, 0xB29A, 0xB2A0, 0xB2A1, 0xB2A3, 0xB2A5, -/* 02C0 */ 0xB2A6, 0xB2AA, 0xB2AC, 0xB2B0, 0xB2B4, 0xB2C8, 0xB2C9, 0xB2CC, -/* 02C8 */ 0xB2D0, 0xB2D2, 0xB2D8, 0xB2D9, 0xB2DB, 0xB2DD, 0xB2E2, 0xB2E4, -/* 02D0 */ 0xB2E5, 0xB2E6, 0xB2E8, 0xB2F3, 0xB2F4, 0xB2F5, 0xB2FF, 0xB300, -/* 02D8 */ 0xB301, 0xB304, 0xB308, 0xB310, 0xB311, 0xB313, 0xB314, 0xB315, -/* 02E0 */ 0xB31C, 0xB354, 0xB355, 0xB356, 0xB358, 0xB35B, 0xB35C, 0xB35E, -/* 02E8 */ 0xB35F, 0xB364, 0xB365, 0xB367, 0xB369, 0xB36B, 0xB36E, 0xB370, -/* 02F0 */ 0xB371, 0xB374, 0xB378, 0xB380, 0xB381, 0xB383, 0xB384, 0xB385, -/* 02F8 */ 0xB38C, 0xB390, 0xB394, 0xB3A0, 0xB3A1, 0xB3A8, 0xB3AC, 0xB3C4, -/* 0300 */ 0xB3C5, 0xB3C8, 0xB3CB, 0xB3CC, 0xB3CE, 0xB3D0, 0xB3D4, 0xB3D5, -/* 0308 */ 0xB3D7, 0xB3D9, 0xB3DB, 0xB3DD, 0xB3E0, 0xB3E4, 0xB3E8, 0xB3FC, -/* 0310 */ 0xB410, 0xB418, 0xB41C, 0xB420, 0xB428, 0xB429, 0xB42B, 0xB434, -/* 0318 */ 0xB450, 0xB451, 0xB454, 0xB458, 0xB460, 0xB461, 0xB463, 0xB465, -/* 0320 */ 0xB46C, 0xB480, 0xB488, 0xB49D, 0xB4A4, 0xB4A8, 0xB4AC, 0xB4B5, -/* 0328 */ 0xB4B7, 0xB4B9, 0xB4C0, 0xB4C4, 0xB4C8, 0xB4D0, 0xB4D5, 0xB4DC, -/* 0330 */ 0xB4DD, 0xB4E0, 0xB4E3, 0xB4E4, 0xB4E6, 0xB4EC, 0xB4ED, 0xB4EF, -/* 0338 */ 0xB4F1, 0xB4F8, 0xB514, 0xB515, 0xB518, 0xB51B, 0xB51C, 0xB524, -/* 0340 */ 0xB525, 0xB527, 0xB528, 0xB529, 0xB52A, 0xB530, 0xB531, 0xB534, -/* 0348 */ 0xB538, 0xB540, 0xB541, 0xB543, 0xB544, 0xB545, 0xB54B, 0xB54C, -/* 0350 */ 0xB54D, 0xB550, 0xB554, 0xB55C, 0xB55D, 0xB55F, 0xB560, 0xB561, -/* 0358 */ 0xB5A0, 0xB5A1, 0xB5A4, 0xB5A8, 0xB5AA, 0xB5AB, 0xB5B0, 0xB5B1, -/* 0360 */ 0xB5B3, 0xB5B4, 0xB5B5, 0xB5BB, 0xB5BC, 0xB5BD, 0xB5C0, 0xB5C4, -/* 0368 */ 0xB5CC, 0xB5CD, 0xB5CF, 0xB5D0, 0xB5D1, 0xB5D8, 0xB5EC, 0xB610, -/* 0370 */ 0xB611, 0xB614, 0xB618, 0xB625, 0xB62C, 0xB634, 0xB648, 0xB664, -/* 0378 */ 0xB668, 0xB69C, 0xB69D, 0xB6A0, 0xB6A4, 0xB6AB, 0xB6AC, 0xB6B1, -/* 0380 */ 0xB6D4, 0xB6F0, 0xB6F4, 0xB6F8, 0xB700, 0xB701, 0xB705, 0xB728, -/* 0388 */ 0xB729, 0xB72C, 0xB72F, 0xB730, 0xB738, 0xB739, 0xB73B, 0xB744, -/* 0390 */ 0xB748, 0xB74C, 0xB754, 0xB755, 0xB760, 0xB764, 0xB768, 0xB770, -/* 0398 */ 0xB771, 0xB773, 0xB775, 0xB77C, 0xB77D, 0xB780, 0xB784, 0xB78C, -/* 03A0 */ 0xB78D, 0xB78F, 0xB790, 0xB791, 0xB792, 0xB796, 0xB797, 0xB798, -/* 03A8 */ 0xB799, 0xB79C, 0xB7A0, 0xB7A8, 0xB7A9, 0xB7AB, 0xB7AC, 0xB7AD, -/* 03B0 */ 0xB7B4, 0xB7B5, 0xB7B8, 0xB7C7, 0xB7C9, 0xB7EC, 0xB7ED, 0xB7F0, -/* 03B8 */ 0xB7F4, 0xB7FC, 0xB7FD, 0xB7FF, 0xB800, 0xB801, 0xB807, 0xB808, -/* 03C0 */ 0xB809, 0xB80C, 0xB810, 0xB818, 0xB819, 0xB81B, 0xB81D, 0xB824, -/* 03C8 */ 0xB825, 0xB828, 0xB82C, 0xB834, 0xB835, 0xB837, 0xB838, 0xB839, -/* 03D0 */ 0xB840, 0xB844, 0xB851, 0xB853, 0xB85C, 0xB85D, 0xB860, 0xB864, -/* 03D8 */ 0xB86C, 0xB86D, 0xB86F, 0xB871, 0xB878, 0xB87C, 0xB88D, 0xB8A8, -/* 03E0 */ 0xB8B0, 0xB8B4, 0xB8B8, 0xB8C0, 0xB8C1, 0xB8C3, 0xB8C5, 0xB8CC, -/* 03E8 */ 0xB8D0, 0xB8D4, 0xB8DD, 0xB8DF, 0xB8E1, 0xB8E8, 0xB8E9, 0xB8EC, -/* 03F0 */ 0xB8F0, 0xB8F8, 0xB8F9, 0xB8FB, 0xB8FD, 0xB904, 0xB918, 0xB920, -/* 03F8 */ 0xB93C, 0xB93D, 0xB940, 0xB944, 0xB94C, 0xB94F, 0xB951, 0xB958, -/* 0400 */ 0xB959, 0xB95C, 0xB960, 0xB968, 0xB969, 0xB96B, 0xB96D, 0xB974, -/* 0408 */ 0xB975, 0xB978, 0xB97C, 0xB984, 0xB985, 0xB987, 0xB989, 0xB98A, -/* 0410 */ 0xB98D, 0xB98E, 0xB9AC, 0xB9AD, 0xB9B0, 0xB9B4, 0xB9BC, 0xB9BD, -/* 0418 */ 0xB9BF, 0xB9C1, 0xB9C8, 0xB9C9, 0xB9CC, 0xB9D8, 0xB9D9, 0xB9DB, -/* 0420 */ 0xB9DD, 0xB9DE, 0xB9E1, 0xB9E3, 0xB9E4, 0xB9E5, 0xB9E8, 0xB9EC, -/* 0428 */ 0xB9F4, 0xB9F5, 0xB9F7, 0xB9F8, 0xB9F9, 0xB9FA, 0xBA00, 0xBA01, -/* 0430 */ 0xBA08, 0xBA15, 0xBA38, 0xBA39, 0xBA3C, 0xBA40, 0xBA42, 0xBA48, -/* 0438 */ 0xBA49, 0xBA4B, 0xBA4D, 0xBA4E, 0xBA53, 0xBA54, 0xBA55, 0xBA58, -/* 0440 */ 0xBA5C, 0xBA64, 0xBA65, 0xBA67, 0xBA68, 0xBA69, 0xBA70, 0xBA71, -/* 0448 */ 0xBA74, 0xBA78, 0xBA83, 0xBA84, 0xBA85, 0xBA87, 0xBA8C, 0xBAA8, -/* 0450 */ 0xBAA9, 0xBAAB, 0xBAAC, 0xBAB0, 0xBAB2, 0xBAB8, 0xBAB9, 0xBABB, -/* 0458 */ 0xBABD, 0xBAC4, 0xBAC8, 0xBAD8, 0xBAD9, 0xBAFC, 0xBB00, 0xBB04, -/* 0460 */ 0xBB0D, 0xBB0F, 0xBB11, 0xBB18, 0xBB1C, 0xBB20, 0xBB29, 0xBB2B, -/* 0468 */ 0xBB34, 0xBB35, 0xBB36, 0xBB38, 0xBB3B, 0xBB3C, 0xBB3D, 0xBB3E, -/* 0470 */ 0xBB44, 0xBB45, 0xBB47, 0xBB49, 0xBB4D, 0xBB4F, 0xBB50, 0xBB54, -/* 0478 */ 0xBB58, 0xBB61, 0xBB63, 0xBB6C, 0xBB88, 0xBB8C, 0xBB90, 0xBBA4, -/* 0480 */ 0xBBA8, 0xBBAC, 0xBBB4, 0xBBB7, 0xBBC0, 0xBBC4, 0xBBC8, 0xBBD0, -/* 0488 */ 0xBBD3, 0xBBF8, 0xBBF9, 0xBBFC, 0xBBFF, 0xBC00, 0xBC02, 0xBC08, -/* 0490 */ 0xBC09, 0xBC0B, 0xBC0C, 0xBC0D, 0xBC0F, 0xBC11, 0xBC24, 0xBC25, -/* 0498 */ 0xBC27, 0xBC29, 0xBC2D, 0xBC30, 0xBC31, 0xBC34, 0xBC38, 0xBC40, -/* 04A0 */ 0xBC41, 0xBC43, 0xBC44, 0xBC45, 0xBC49, 0xBC4C, 0xBC4D, 0xBC50, -/* 04A8 */ 0xBC5D, 0xBC84, 0xBC85, 0xBC88, 0xBC8B, 0xBC8C, 0xBC8E, 0xBC94, -/* 04B0 */ 0xBC95, 0xBC97, 0xBC99, 0xBC9A, 0xBCA0, 0xBCA1, 0xBCA4, 0xBCA7, -/* 04B8 */ 0xBCA8, 0xBCB0, 0xBCB1, 0xBCB3, 0xBCB4, 0xBCB5, 0xBCBC, 0xBCBD, -/* 04C0 */ 0xBCC0, 0xBCC4, 0xBCCD, 0xBCCF, 0xBCD0, 0xBCD1, 0xBCD5, 0xBCD8, -/* 04C8 */ 0xBCDC, 0xBCF4, 0xBCF5, 0xBCF6, 0xBCF8, 0xBCFC, 0xBD04, 0xBD05, -/* 04D0 */ 0xBD07, 0xBD09, 0xBD10, 0xBD14, 0xBD24, 0xBD2C, 0xBD40, 0xBD48, -/* 04D8 */ 0xBD49, 0xBD4C, 0xBD50, 0xBD58, 0xBD59, 0xBD64, 0xBD68, 0xBD80, -/* 04E0 */ 0xBD81, 0xBD84, 0xBD87, 0xBD88, 0xBD89, 0xBD8A, 0xBD90, 0xBD91, -/* 04E8 */ 0xBD93, 0xBD95, 0xBD99, 0xBD9A, 0xBD9C, 0xBDA4, 0xBDB0, 0xBDB8, -/* 04F0 */ 0xBDD4, 0xBDD5, 0xBDD8, 0xBDDC, 0xBDE9, 0xBDF0, 0xBDF4, 0xBDF8, -/* 04F8 */ 0xBE00, 0xBE03, 0xBE05, 0xBE0C, 0xBE0D, 0xBE10, 0xBE14, 0xBE1C, -/* 0500 */ 0xBE1D, 0xBE1F, 0xBE44, 0xBE45, 0xBE48, 0xBE4C, 0xBE4E, 0xBE54, -/* 0508 */ 0xBE55, 0xBE57, 0xBE59, 0xBE5A, 0xBE5B, 0xBE60, 0xBE61, 0xBE64, -/* 0510 */ 0xBE68, 0xBE6A, 0xBE70, 0xBE71, 0xBE73, 0xBE74, 0xBE75, 0xBE7B, -/* 0518 */ 0xBE7C, 0xBE7D, 0xBE80, 0xBE84, 0xBE8C, 0xBE8D, 0xBE8F, 0xBE90, -/* 0520 */ 0xBE91, 0xBE98, 0xBE99, 0xBEA8, 0xBED0, 0xBED1, 0xBED4, 0xBED7, -/* 0528 */ 0xBED8, 0xBEE0, 0xBEE3, 0xBEE4, 0xBEE5, 0xBEEC, 0xBF01, 0xBF08, -/* 0530 */ 0xBF09, 0xBF18, 0xBF19, 0xBF1B, 0xBF1C, 0xBF1D, 0xBF40, 0xBF41, -/* 0538 */ 0xBF44, 0xBF48, 0xBF50, 0xBF51, 0xBF55, 0xBF94, 0xBFB0, 0xBFC5, -/* 0540 */ 0xBFCC, 0xBFCD, 0xBFD0, 0xBFD4, 0xBFDC, 0xBFDF, 0xBFE1, 0xC03C, -/* 0548 */ 0xC051, 0xC058, 0xC05C, 0xC060, 0xC068, 0xC069, 0xC090, 0xC091, -/* 0550 */ 0xC094, 0xC098, 0xC0A0, 0xC0A1, 0xC0A3, 0xC0A5, 0xC0AC, 0xC0AD, -/* 0558 */ 0xC0AF, 0xC0B0, 0xC0B3, 0xC0B4, 0xC0B5, 0xC0B6, 0xC0BC, 0xC0BD, -/* 0560 */ 0xC0BF, 0xC0C0, 0xC0C1, 0xC0C5, 0xC0C8, 0xC0C9, 0xC0CC, 0xC0D0, -/* 0568 */ 0xC0D8, 0xC0D9, 0xC0DB, 0xC0DC, 0xC0DD, 0xC0E4, 0xC0E5, 0xC0E8, -/* 0570 */ 0xC0EC, 0xC0F4, 0xC0F5, 0xC0F7, 0xC0F9, 0xC100, 0xC104, 0xC108, -/* 0578 */ 0xC110, 0xC115, 0xC123, 0xC124, 0xC126, 0xC127, 0xC12C, 0xC12D, -/* 0580 */ 0xC12F, 0xC130, 0xC131, 0xC136, 0xC138, 0xC139, 0xC13C, 0xC140, -/* 0588 */ 0xC148, 0xC149, 0xC14B, 0xC14C, 0xC14D, 0xC154, 0xC155, 0xC158, -/* 0590 */ 0xC15C, 0xC164, 0xC165, 0xC167, 0xC168, 0xC169, 0xC170, 0xC174, -/* 0598 */ 0xC178, 0xC185, 0xC18C, 0xC18D, 0xC18E, 0xC190, 0xC194, 0xC196, -/* 05A0 */ 0xC19C, 0xC19D, 0xC19F, 0xC1A1, 0xC1A5, 0xC1A8, 0xC1A9, 0xC1AC, -/* 05A8 */ 0xC1B0, 0xC1BD, 0xC1C4, 0xC1C8, 0xC1CC, 0xC1D4, 0xC1D7, 0xC1D8, -/* 05B0 */ 0xC1E0, 0xC1E4, 0xC1E8, 0xC1F0, 0xC1F1, 0xC1F3, 0xC1FC, 0xC1FD, -/* 05B8 */ 0xC200, 0xC204, 0xC20C, 0xC20D, 0xC20F, 0xC211, 0xC218, 0xC219, -/* 05C0 */ 0xC21C, 0xC21F, 0xC220, 0xC228, 0xC229, 0xC22B, 0xC22D, 0xC22F, -/* 05C8 */ 0xC231, 0xC232, 0xC234, 0xC248, 0xC250, 0xC251, 0xC254, 0xC258, -/* 05D0 */ 0xC260, 0xC265, 0xC26C, 0xC26D, 0xC270, 0xC274, 0xC27C, 0xC27D, -/* 05D8 */ 0xC27F, 0xC281, 0xC288, 0xC289, 0xC290, 0xC298, 0xC29B, 0xC29D, -/* 05E0 */ 0xC2A4, 0xC2A5, 0xC2A8, 0xC2AC, 0xC2AD, 0xC2B4, 0xC2B5, 0xC2B7, -/* 05E8 */ 0xC2B9, 0xC2DC, 0xC2DD, 0xC2E0, 0xC2E3, 0xC2E4, 0xC2EB, 0xC2EC, -/* 05F0 */ 0xC2ED, 0xC2EF, 0xC2F1, 0xC2F6, 0xC2F8, 0xC2F9, 0xC2FB, 0xC2FC, -/* 05F8 */ 0xC300, 0xC308, 0xC309, 0xC30C, 0xC30D, 0xC313, 0xC314, 0xC315, -/* 0600 */ 0xC318, 0xC31C, 0xC324, 0xC325, 0xC328, 0xC329, 0xC345, 0xC368, -/* 0608 */ 0xC369, 0xC36C, 0xC370, 0xC372, 0xC378, 0xC379, 0xC37C, 0xC37D, -/* 0610 */ 0xC384, 0xC388, 0xC38C, 0xC3C0, 0xC3D8, 0xC3D9, 0xC3DC, 0xC3DF, -/* 0618 */ 0xC3E0, 0xC3E2, 0xC3E8, 0xC3E9, 0xC3ED, 0xC3F4, 0xC3F5, 0xC3F8, -/* 0620 */ 0xC408, 0xC410, 0xC424, 0xC42C, 0xC430, 0xC434, 0xC43C, 0xC43D, -/* 0628 */ 0xC448, 0xC464, 0xC465, 0xC468, 0xC46C, 0xC474, 0xC475, 0xC479, -/* 0630 */ 0xC480, 0xC494, 0xC49C, 0xC4B8, 0xC4BC, 0xC4E9, 0xC4F0, 0xC4F1, -/* 0638 */ 0xC4F4, 0xC4F8, 0xC4FA, 0xC4FF, 0xC500, 0xC501, 0xC50C, 0xC510, -/* 0640 */ 0xC514, 0xC51C, 0xC528, 0xC529, 0xC52C, 0xC530, 0xC538, 0xC539, -/* 0648 */ 0xC53B, 0xC53D, 0xC544, 0xC545, 0xC548, 0xC549, 0xC54A, 0xC54C, -/* 0650 */ 0xC54D, 0xC54E, 0xC553, 0xC554, 0xC555, 0xC557, 0xC558, 0xC559, -/* 0658 */ 0xC55D, 0xC55E, 0xC560, 0xC561, 0xC564, 0xC568, 0xC570, 0xC571, -/* 0660 */ 0xC573, 0xC574, 0xC575, 0xC57C, 0xC57D, 0xC580, 0xC584, 0xC587, -/* 0668 */ 0xC58C, 0xC58D, 0xC58F, 0xC591, 0xC595, 0xC597, 0xC598, 0xC59C, -/* 0670 */ 0xC5A0, 0xC5A9, 0xC5B4, 0xC5B5, 0xC5B8, 0xC5B9, 0xC5BB, 0xC5BC, -/* 0678 */ 0xC5BD, 0xC5BE, 0xC5CC, 0xC5CE, 0xC5D0, 0xC5D1, 0xC5D4, 0xC5D8, -/* 0680 */ 0xC5E0, 0xC5E1, 0xC5E3, 0xC5E5, 0xC5EC, 0xC5ED, 0xC5EE, 0xC5F0, -/* 0688 */ 0xC5F4, 0xC5F6, 0xC5F7, 0xC605, 0xC606, 0xC607, 0xC608, 0xC60C, -/* 0690 */ 0xC610, 0xC618, 0xC619, 0xC61B, 0xC61C, 0xC624, 0xC625, 0xC628, -/* 0698 */ 0xC62C, 0xC62D, 0xC62E, 0xC630, 0xC633, 0xC634, 0xC635, 0xC637, -/* 06A0 */ 0xC639, 0xC63B, 0xC640, 0xC641, 0xC644, 0xC648, 0xC650, 0xC651, -/* 06A8 */ 0xC653, 0xC654, 0xC655, 0xC65C, 0xC65D, 0xC660, 0xC66C, 0xC66F, -/* 06B0 */ 0xC671, 0xC678, 0xC679, 0xC67C, 0xC680, 0xC688, 0xC689, 0xC68B, -/* 06B8 */ 0xC68D, 0xC694, 0xC695, 0xC698, 0xC69C, 0xC6A4, 0xC6A5, 0xC6A7, -/* 06C0 */ 0xC6A9, 0xC6B0, 0xC6B1, 0xC6B4, 0xC6B8, 0xC6B9, 0xC6BA, 0xC6C0, -/* 06C8 */ 0xC6C1, 0xC6C3, 0xC6C5, 0xC6CC, 0xC6CD, 0xC6D0, 0xC6D4, 0xC6DC, -/* 06D0 */ 0xC6DD, 0xC6E0, 0xC6E1, 0xC6E8, 0xC6E9, 0xC6EC, 0xC6F0, 0xC6F8, -/* 06D8 */ 0xC6F9, 0xC6FD, 0xC704, 0xC705, 0xC708, 0xC70C, 0xC714, 0xC715, -/* 06E0 */ 0xC717, 0xC719, 0xC720, 0xC721, 0xC724, 0xC728, 0xC730, 0xC731, -/* 06E8 */ 0xC733, 0xC735, 0xC737, 0xC73C, 0xC73D, 0xC740, 0xC744, 0xC74A, -/* 06F0 */ 0xC74C, 0xC74D, 0xC74F, 0xC75C, 0xC760, 0xC768, 0xC76B, 0xC774, -/* 06F8 */ 0xC775, 0xC778, 0xC77C, 0xC77D, 0xC77E, 0xC783, 0xC784, 0xC785, -/* 0700 */ 0xC787, 0xC788, 0xC789, 0xC78A, 0xC78E, 0xC790, 0xC791, 0xC794, -/* 0708 */ 0xC796, 0xC797, 0xC798, 0xC79A, 0xC7A0, 0xC7A1, 0xC7A3, 0xC7A4, -/* 0710 */ 0xC7A5, 0xC7A6, 0xC7AC, 0xC7AD, 0xC7B0, 0xC7B4, 0xC7BC, 0xC7BD, -/* 0718 */ 0xC7BF, 0xC7C0, 0xC7C1, 0xC7C8, 0xC7C9, 0xC7CC, 0xC7CE, 0xC7D0, -/* 0720 */ 0xC7D8, 0xC7DD, 0xC7E4, 0xC7E8, 0xC7EC, 0xC800, 0xC801, 0xC804, -/* 0728 */ 0xC808, 0xC80A, 0xC810, 0xC811, 0xC813, 0xC815, 0xC816, 0xC81C, -/* 0730 */ 0xC81D, 0xC820, 0xC824, 0xC82C, 0xC82D, 0xC82F, 0xC831, 0xC838, -/* 0738 */ 0xC83C, 0xC840, 0xC848, 0xC849, 0xC84C, 0xC84D, 0xC854, 0xC870, -/* 0740 */ 0xC871, 0xC874, 0xC878, 0xC87A, 0xC880, 0xC881, 0xC883, 0xC885, -/* 0748 */ 0xC886, 0xC887, 0xC88B, 0xC88C, 0xC88D, 0xC894, 0xC89D, 0xC89F, -/* 0750 */ 0xC8A1, 0xC8A8, 0xC8BC, 0xC8BD, 0xC8C4, 0xC8C8, 0xC8CC, 0xC8D4, -/* 0758 */ 0xC8D5, 0xC8D7, 0xC8D9, 0xC8E0, 0xC8E1, 0xC8E4, 0xC8F5, 0xC8FC, -/* 0760 */ 0xC8FD, 0xC900, 0xC904, 0xC905, 0xC906, 0xC90C, 0xC90D, 0xC90F, -/* 0768 */ 0xC911, 0xC918, 0xC92C, 0xC934, 0xC950, 0xC951, 0xC954, 0xC958, -/* 0770 */ 0xC960, 0xC961, 0xC963, 0xC96C, 0xC970, 0xC974, 0xC97C, 0xC988, -/* 0778 */ 0xC989, 0xC98C, 0xC990, 0xC998, 0xC999, 0xC99B, 0xC99D, 0xC9C0, -/* 0780 */ 0xC9C1, 0xC9C4, 0xC9C7, 0xC9C8, 0xC9CA, 0xC9D0, 0xC9D1, 0xC9D3, -/* 0788 */ 0xC9D5, 0xC9D6, 0xC9D9, 0xC9DA, 0xC9DC, 0xC9DD, 0xC9E0, 0xC9E2, -/* 0790 */ 0xC9E4, 0xC9E7, 0xC9EC, 0xC9ED, 0xC9EF, 0xC9F0, 0xC9F1, 0xC9F8, -/* 0798 */ 0xC9F9, 0xC9FC, 0xCA00, 0xCA08, 0xCA09, 0xCA0B, 0xCA0C, 0xCA0D, -/* 07A0 */ 0xCA14, 0xCA18, 0xCA29, 0xCA4C, 0xCA4D, 0xCA50, 0xCA54, 0xCA5C, -/* 07A8 */ 0xCA5D, 0xCA5F, 0xCA60, 0xCA61, 0xCA68, 0xCA7D, 0xCA84, 0xCA98, -/* 07B0 */ 0xCABC, 0xCABD, 0xCAC0, 0xCAC4, 0xCACC, 0xCACD, 0xCACF, 0xCAD1, -/* 07B8 */ 0xCAD3, 0xCAD8, 0xCAD9, 0xCAE0, 0xCAEC, 0xCAF4, 0xCB08, 0xCB10, -/* 07C0 */ 0xCB14, 0xCB18, 0xCB20, 0xCB21, 0xCB41, 0xCB48, 0xCB49, 0xCB4C, -/* 07C8 */ 0xCB50, 0xCB58, 0xCB59, 0xCB5D, 0xCB64, 0xCB78, 0xCB79, 0xCB9C, -/* 07D0 */ 0xCBB8, 0xCBD4, 0xCBE4, 0xCBE7, 0xCBE9, 0xCC0C, 0xCC0D, 0xCC10, -/* 07D8 */ 0xCC14, 0xCC1C, 0xCC1D, 0xCC21, 0xCC22, 0xCC27, 0xCC28, 0xCC29, -/* 07E0 */ 0xCC2C, 0xCC2E, 0xCC30, 0xCC38, 0xCC39, 0xCC3B, 0xCC3C, 0xCC3D, -/* 07E8 */ 0xCC3E, 0xCC44, 0xCC45, 0xCC48, 0xCC4C, 0xCC54, 0xCC55, 0xCC57, -/* 07F0 */ 0xCC58, 0xCC59, 0xCC60, 0xCC64, 0xCC66, 0xCC68, 0xCC70, 0xCC75, -/* 07F8 */ 0xCC98, 0xCC99, 0xCC9C, 0xCCA0, 0xCCA8, 0xCCA9, 0xCCAB, 0xCCAC, -/* 0800 */ 0xCCAD, 0xCCB4, 0xCCB5, 0xCCB8, 0xCCBC, 0xCCC4, 0xCCC5, 0xCCC7, -/* 0808 */ 0xCCC9, 0xCCD0, 0xCCD4, 0xCCE4, 0xCCEC, 0xCCF0, 0xCD01, 0xCD08, -/* 0810 */ 0xCD09, 0xCD0C, 0xCD10, 0xCD18, 0xCD19, 0xCD1B, 0xCD1D, 0xCD24, -/* 0818 */ 0xCD28, 0xCD2C, 0xCD39, 0xCD5C, 0xCD60, 0xCD64, 0xCD6C, 0xCD6D, -/* 0820 */ 0xCD6F, 0xCD71, 0xCD78, 0xCD88, 0xCD94, 0xCD95, 0xCD98, 0xCD9C, -/* 0828 */ 0xCDA4, 0xCDA5, 0xCDA7, 0xCDA9, 0xCDB0, 0xCDC4, 0xCDCC, 0xCDD0, -/* 0830 */ 0xCDE8, 0xCDEC, 0xCDF0, 0xCDF8, 0xCDF9, 0xCDFB, 0xCDFD, 0xCE04, -/* 0838 */ 0xCE08, 0xCE0C, 0xCE14, 0xCE19, 0xCE20, 0xCE21, 0xCE24, 0xCE28, -/* 0840 */ 0xCE30, 0xCE31, 0xCE33, 0xCE35, 0xCE58, 0xCE59, 0xCE5C, 0xCE5F, -/* 0848 */ 0xCE60, 0xCE61, 0xCE68, 0xCE69, 0xCE6B, 0xCE6D, 0xCE74, 0xCE75, -/* 0850 */ 0xCE78, 0xCE7C, 0xCE84, 0xCE85, 0xCE87, 0xCE89, 0xCE90, 0xCE91, -/* 0858 */ 0xCE94, 0xCE98, 0xCEA0, 0xCEA1, 0xCEA3, 0xCEA4, 0xCEA5, 0xCEAC, -/* 0860 */ 0xCEAD, 0xCEC1, 0xCEE4, 0xCEE5, 0xCEE8, 0xCEEB, 0xCEEC, 0xCEF4, -/* 0868 */ 0xCEF5, 0xCEF7, 0xCEF8, 0xCEF9, 0xCF00, 0xCF01, 0xCF04, 0xCF08, -/* 0870 */ 0xCF10, 0xCF11, 0xCF13, 0xCF15, 0xCF1C, 0xCF20, 0xCF24, 0xCF2C, -/* 0878 */ 0xCF2D, 0xCF2F, 0xCF30, 0xCF31, 0xCF38, 0xCF54, 0xCF55, 0xCF58, -/* 0880 */ 0xCF5C, 0xCF64, 0xCF65, 0xCF67, 0xCF69, 0xCF70, 0xCF71, 0xCF74, -/* 0888 */ 0xCF78, 0xCF80, 0xCF85, 0xCF8C, 0xCFA1, 0xCFA8, 0xCFB0, 0xCFC4, -/* 0890 */ 0xCFE0, 0xCFE1, 0xCFE4, 0xCFE8, 0xCFF0, 0xCFF1, 0xCFF3, 0xCFF5, -/* 0898 */ 0xCFFC, 0xD000, 0xD004, 0xD011, 0xD018, 0xD02D, 0xD034, 0xD035, -/* 08A0 */ 0xD038, 0xD03C, 0xD044, 0xD045, 0xD047, 0xD049, 0xD050, 0xD054, -/* 08A8 */ 0xD058, 0xD060, 0xD06C, 0xD06D, 0xD070, 0xD074, 0xD07C, 0xD07D, -/* 08B0 */ 0xD081, 0xD0A4, 0xD0A5, 0xD0A8, 0xD0AC, 0xD0B4, 0xD0B5, 0xD0B7, -/* 08B8 */ 0xD0B9, 0xD0C0, 0xD0C1, 0xD0C4, 0xD0C8, 0xD0C9, 0xD0D0, 0xD0D1, -/* 08C0 */ 0xD0D3, 0xD0D4, 0xD0D5, 0xD0DC, 0xD0DD, 0xD0E0, 0xD0E4, 0xD0EC, -/* 08C8 */ 0xD0ED, 0xD0EF, 0xD0F0, 0xD0F1, 0xD0F8, 0xD10D, 0xD130, 0xD131, -/* 08D0 */ 0xD134, 0xD138, 0xD13A, 0xD140, 0xD141, 0xD143, 0xD144, 0xD145, -/* 08D8 */ 0xD14C, 0xD14D, 0xD150, 0xD154, 0xD15C, 0xD15D, 0xD15F, 0xD161, -/* 08E0 */ 0xD168, 0xD16C, 0xD17C, 0xD184, 0xD188, 0xD1A0, 0xD1A1, 0xD1A4, -/* 08E8 */ 0xD1A8, 0xD1B0, 0xD1B1, 0xD1B3, 0xD1B5, 0xD1BA, 0xD1BC, 0xD1C0, -/* 08F0 */ 0xD1D8, 0xD1F4, 0xD1F8, 0xD207, 0xD209, 0xD210, 0xD22C, 0xD22D, -/* 08F8 */ 0xD230, 0xD234, 0xD23C, 0xD23D, 0xD23F, 0xD241, 0xD248, 0xD25C, -/* 0900 */ 0xD264, 0xD280, 0xD281, 0xD284, 0xD288, 0xD290, 0xD291, 0xD295, -/* 0908 */ 0xD29C, 0xD2A0, 0xD2A4, 0xD2AC, 0xD2B1, 0xD2B8, 0xD2B9, 0xD2BC, -/* 0910 */ 0xD2BF, 0xD2C0, 0xD2C2, 0xD2C8, 0xD2C9, 0xD2CB, 0xD2D4, 0xD2D8, -/* 0918 */ 0xD2DC, 0xD2E4, 0xD2E5, 0xD2F0, 0xD2F1, 0xD2F4, 0xD2F8, 0xD300, -/* 0920 */ 0xD301, 0xD303, 0xD305, 0xD30C, 0xD30D, 0xD30E, 0xD310, 0xD314, -/* 0928 */ 0xD316, 0xD31C, 0xD31D, 0xD31F, 0xD320, 0xD321, 0xD325, 0xD328, -/* 0930 */ 0xD329, 0xD32C, 0xD330, 0xD338, 0xD339, 0xD33B, 0xD33C, 0xD33D, -/* 0938 */ 0xD344, 0xD345, 0xD37C, 0xD37D, 0xD380, 0xD384, 0xD38C, 0xD38D, -/* 0940 */ 0xD38F, 0xD390, 0xD391, 0xD398, 0xD399, 0xD39C, 0xD3A0, 0xD3A8, -/* 0948 */ 0xD3A9, 0xD3AB, 0xD3AD, 0xD3B4, 0xD3B8, 0xD3BC, 0xD3C4, 0xD3C5, -/* 0950 */ 0xD3C8, 0xD3C9, 0xD3D0, 0xD3D8, 0xD3E1, 0xD3E3, 0xD3EC, 0xD3ED, -/* 0958 */ 0xD3F0, 0xD3F4, 0xD3FC, 0xD3FD, 0xD3FF, 0xD401, 0xD408, 0xD41D, -/* 0960 */ 0xD440, 0xD444, 0xD45C, 0xD460, 0xD464, 0xD46D, 0xD46F, 0xD478, -/* 0968 */ 0xD479, 0xD47C, 0xD47F, 0xD480, 0xD482, 0xD488, 0xD489, 0xD48B, -/* 0970 */ 0xD48D, 0xD494, 0xD4A9, 0xD4CC, 0xD4D0, 0xD4D4, 0xD4DC, 0xD4DF, -/* 0978 */ 0xD4E8, 0xD4EC, 0xD4F0, 0xD4F8, 0xD4FB, 0xD4FD, 0xD504, 0xD508, -/* 0980 */ 0xD50C, 0xD514, 0xD515, 0xD517, 0xD53C, 0xD53D, 0xD540, 0xD544, -/* 0988 */ 0xD54C, 0xD54D, 0xD54F, 0xD551, 0xD558, 0xD559, 0xD55C, 0xD560, -/* 0990 */ 0xD565, 0xD568, 0xD569, 0xD56B, 0xD56D, 0xD574, 0xD575, 0xD578, -/* 0998 */ 0xD57C, 0xD584, 0xD585, 0xD587, 0xD588, 0xD589, 0xD590, 0xD5A5, -/* 09A0 */ 0xD5C8, 0xD5C9, 0xD5CC, 0xD5D0, 0xD5D2, 0xD5D8, 0xD5D9, 0xD5DB, -/* 09A8 */ 0xD5DD, 0xD5E4, 0xD5E5, 0xD5E8, 0xD5EC, 0xD5F4, 0xD5F5, 0xD5F7, -/* 09B0 */ 0xD5F9, 0xD600, 0xD601, 0xD604, 0xD608, 0xD610, 0xD611, 0xD613, -/* 09B8 */ 0xD614, 0xD615, 0xD61C, 0xD620, 0xD624, 0xD62D, 0xD638, 0xD639, -/* 09C0 */ 0xD63C, 0xD640, 0xD645, 0xD648, 0xD649, 0xD64B, 0xD64D, 0xD651, -/* 09C8 */ 0xD654, 0xD655, 0xD658, 0xD65C, 0xD667, 0xD669, 0xD670, 0xD671, -/* 09D0 */ 0xD674, 0xD683, 0xD685, 0xD68C, 0xD68D, 0xD690, 0xD694, 0xD69D, -/* 09D8 */ 0xD69F, 0xD6A1, 0xD6A8, 0xD6AC, 0xD6B0, 0xD6B9, 0xD6BB, 0xD6C4, -/* 09E0 */ 0xD6C5, 0xD6C8, 0xD6CC, 0xD6D1, 0xD6D4, 0xD6D7, 0xD6D9, 0xD6E0, -/* 09E8 */ 0xD6E4, 0xD6E8, 0xD6F0, 0xD6F5, 0xD6FC, 0xD6FD, 0xD700, 0xD704, -/* 09F0 */ 0xD711, 0xD718, 0xD719, 0xD71C, 0xD720, 0xD728, 0xD729, 0xD72B, -/* 09F8 */ 0xD72D, 0xD734, 0xD735, 0xD738, 0xD73C, 0xD744, 0xD747, 0xD749, -/* 0A00 */ 0xD750, 0xD751, 0xD754, 0xD756, 0xD757, 0xD758, 0xD759, 0xD760, -/* 0A08 */ 0xD761, 0xD763, 0xD765, 0xD769, 0xD76C, 0xD770, 0xD774, 0xD77C, -/* 0A10 */ 0xD77D, 0xD781, 0xD788, 0xD789, 0xD78C, 0xD790, 0xD798, 0xD799, -/* 0A18 */ 0xD79B, 0xD79D, 0x4F3D, 0x4F73, 0x5047, 0x50F9, 0x52A0, 0x53EF, -/* 0A20 */ 0x5475, 0x54E5, 0x5609, 0x5AC1, 0x5BB6, 0x6687, 0x67B6, 0x67B7, -/* 0A28 */ 0x67EF, 0x6B4C, 0x73C2, 0x75C2, 0x7A3C, 0x82DB, 0x8304, 0x8857, -/* 0A30 */ 0x8888, 0x8A36, 0x8CC8, 0x8DCF, 0x8EFB, 0x8FE6, 0x99D5, 0x523B, -/* 0A38 */ 0x5374, 0x5404, 0x606A, 0x6164, 0x6BBC, 0x73CF, 0x811A, 0x89BA, -/* 0A40 */ 0x89D2, 0x95A3, 0x4F83, 0x520A, 0x58BE, 0x5978, 0x59E6, 0x5E72, -/* 0A48 */ 0x5E79, 0x61C7, 0x63C0, 0x6746, 0x67EC, 0x687F, 0x6F97, 0x764E, -/* 0A50 */ 0x770B, 0x78F5, 0x7A08, 0x7AFF, 0x7C21, 0x809D, 0x826E, 0x8271, -/* 0A58 */ 0x8AEB, 0x9593, 0x4E6B, 0x559D, 0x66F7, 0x6E34, 0x78A3, 0x7AED, -/* 0A60 */ 0x845B, 0x8910, 0x874E, 0x97A8, 0x52D8, 0x574E, 0x582A, 0x5D4C, -/* 0A68 */ 0x611F, 0x61BE, 0x6221, 0x6562, 0x67D1, 0x6A44, 0x6E1B, 0x7518, -/* 0A70 */ 0x75B3, 0x76E3, 0x77B0, 0x7D3A, 0x90AF, 0x9451, 0x9452, 0x9F95, -/* 0A78 */ 0x5323, 0x5CAC, 0x7532, 0x80DB, 0x9240, 0x9598, 0x525B, 0x5808, -/* 0A80 */ 0x59DC, 0x5CA1, 0x5D17, 0x5EB7, 0x5F3A, 0x5F4A, 0x6177, 0x6C5F, -/* 0A88 */ 0x757A, 0x7586, 0x7CE0, 0x7D73, 0x7DB1, 0x7F8C, 0x8154, 0x8221, -/* 0A90 */ 0x8591, 0x8941, 0x8B1B, 0x92FC, 0x964D, 0x9C47, 0x4ECB, 0x4EF7, -/* 0A98 */ 0x500B, 0x51F1, 0x584F, 0x6137, 0x613E, 0x6168, 0x6539, 0x69EA, -/* 0AA0 */ 0x6F11, 0x75A5, 0x7686, 0x76D6, 0x7B87, 0x82A5, 0x84CB, 0xF900, -/* 0AA8 */ 0x93A7, 0x958B, 0x5580, 0x5BA2, 0x5751, 0xF901, 0x7CB3, 0x7FB9, -/* 0AB0 */ 0x91B5, 0x5028, 0x53BB, 0x5C45, 0x5DE8, 0x62D2, 0x636E, 0x64DA, -/* 0AB8 */ 0x64E7, 0x6E20, 0x70AC, 0x795B, 0x8DDD, 0x8E1E, 0xF902, 0x907D, -/* 0AC0 */ 0x9245, 0x92F8, 0x4E7E, 0x4EF6, 0x5065, 0x5DFE, 0x5EFA, 0x6106, -/* 0AC8 */ 0x6957, 0x8171, 0x8654, 0x8E47, 0x9375, 0x9A2B, 0x4E5E, 0x5091, -/* 0AD0 */ 0x6770, 0x6840, 0x5109, 0x528D, 0x5292, 0x6AA2, 0x77BC, 0x9210, -/* 0AD8 */ 0x9ED4, 0x52AB, 0x602F, 0x8FF2, 0x5048, 0x61A9, 0x63ED, 0x64CA, -/* 0AE0 */ 0x683C, 0x6A84, 0x6FC0, 0x8188, 0x89A1, 0x9694, 0x5805, 0x727D, -/* 0AE8 */ 0x72AC, 0x7504, 0x7D79, 0x7E6D, 0x80A9, 0x898B, 0x8B74, 0x9063, -/* 0AF0 */ 0x9D51, 0x6289, 0x6C7A, 0x6F54, 0x7D50, 0x7F3A, 0x8A23, 0x517C, -/* 0AF8 */ 0x614A, 0x7B9D, 0x8B19, 0x9257, 0x938C, 0x4EAC, 0x4FD3, 0x501E, -/* 0B00 */ 0x50BE, 0x5106, 0x52C1, 0x52CD, 0x537F, 0x5770, 0x5883, 0x5E9A, -/* 0B08 */ 0x5F91, 0x6176, 0x61AC, 0x64CE, 0x656C, 0x666F, 0x66BB, 0x66F4, -/* 0B10 */ 0x6897, 0x6D87, 0x7085, 0x70F1, 0x749F, 0x74A5, 0x74CA, 0x75D9, -/* 0B18 */ 0x786C, 0x78EC, 0x7ADF, 0x7AF6, 0x7D45, 0x7D93, 0x8015, 0x803F, -/* 0B20 */ 0x811B, 0x8396, 0x8B66, 0x8F15, 0x9015, 0x93E1, 0x9803, 0x9838, -/* 0B28 */ 0x9A5A, 0x9BE8, 0x4FC2, 0x5553, 0x583A, 0x5951, 0x5B63, 0x5C46, -/* 0B30 */ 0x60B8, 0x6212, 0x6842, 0x68B0, 0x68E8, 0x6EAA, 0x754C, 0x7678, -/* 0B38 */ 0x78CE, 0x7A3D, 0x7CFB, 0x7E6B, 0x7E7C, 0x8A08, 0x8AA1, 0x8C3F, -/* 0B40 */ 0x968E, 0x9DC4, 0x53E4, 0x53E9, 0x544A, 0x5471, 0x56FA, 0x59D1, -/* 0B48 */ 0x5B64, 0x5C3B, 0x5EAB, 0x62F7, 0x6537, 0x6545, 0x6572, 0x66A0, -/* 0B50 */ 0x67AF, 0x69C1, 0x6CBD, 0x75FC, 0x7690, 0x777E, 0x7A3F, 0x7F94, -/* 0B58 */ 0x8003, 0x80A1, 0x818F, 0x82E6, 0x82FD, 0x83F0, 0x85C1, 0x8831, -/* 0B60 */ 0x88B4, 0x8AA5, 0xF903, 0x8F9C, 0x932E, 0x96C7, 0x9867, 0x9AD8, -/* 0B68 */ 0x9F13, 0x54ED, 0x659B, 0x66F2, 0x688F, 0x7A40, 0x8C37, 0x9D60, -/* 0B70 */ 0x56F0, 0x5764, 0x5D11, 0x6606, 0x68B1, 0x68CD, 0x6EFE, 0x7428, -/* 0B78 */ 0x889E, 0x9BE4, 0x6C68, 0xF904, 0x9AA8, 0x4F9B, 0x516C, 0x5171, -/* 0B80 */ 0x529F, 0x5B54, 0x5DE5, 0x6050, 0x606D, 0x62F1, 0x63A7, 0x653B, -/* 0B88 */ 0x73D9, 0x7A7A, 0x86A3, 0x8CA2, 0x978F, 0x4E32, 0x5BE1, 0x6208, -/* 0B90 */ 0x679C, 0x74DC, 0x79D1, 0x83D3, 0x8A87, 0x8AB2, 0x8DE8, 0x904E, -/* 0B98 */ 0x934B, 0x9846, 0x5ED3, 0x69E8, 0x85FF, 0x90ED, 0xF905, 0x51A0, -/* 0BA0 */ 0x5B98, 0x5BEC, 0x6163, 0x68FA, 0x6B3E, 0x704C, 0x742F, 0x74D8, -/* 0BA8 */ 0x7BA1, 0x7F50, 0x83C5, 0x89C0, 0x8CAB, 0x95DC, 0x9928, 0x522E, -/* 0BB0 */ 0x605D, 0x62EC, 0x9002, 0x4F8A, 0x5149, 0x5321, 0x58D9, 0x5EE3, -/* 0BB8 */ 0x66E0, 0x6D38, 0x709A, 0x72C2, 0x73D6, 0x7B50, 0x80F1, 0x945B, -/* 0BC0 */ 0x5366, 0x639B, 0x7F6B, 0x4E56, 0x5080, 0x584A, 0x58DE, 0x602A, -/* 0BC8 */ 0x6127, 0x62D0, 0x69D0, 0x9B41, 0x5B8F, 0x7D18, 0x80B1, 0x8F5F, -/* 0BD0 */ 0x4EA4, 0x50D1, 0x54AC, 0x55AC, 0x5B0C, 0x5DA0, 0x5DE7, 0x652A, -/* 0BD8 */ 0x654E, 0x6821, 0x6A4B, 0x72E1, 0x768E, 0x77EF, 0x7D5E, 0x7FF9, -/* 0BE0 */ 0x81A0, 0x854E, 0x86DF, 0x8F03, 0x8F4E, 0x90CA, 0x9903, 0x9A55, -/* 0BE8 */ 0x9BAB, 0x4E18, 0x4E45, 0x4E5D, 0x4EC7, 0x4FF1, 0x5177, 0x52FE, -/* 0BF0 */ 0x5340, 0x53E3, 0x53E5, 0x548E, 0x5614, 0x5775, 0x57A2, 0x5BC7, -/* 0BF8 */ 0x5D87, 0x5ED0, 0x61FC, 0x62D8, 0x6551, 0x67B8, 0x67E9, 0x69CB, -/* 0C00 */ 0x6B50, 0x6BC6, 0x6BEC, 0x6C42, 0x6E9D, 0x7078, 0x72D7, 0x7396, -/* 0C08 */ 0x7403, 0x77BF, 0x77E9, 0x7A76, 0x7D7F, 0x8009, 0x81FC, 0x8205, -/* 0C10 */ 0x820A, 0x82DF, 0x8862, 0x8B33, 0x8CFC, 0x8EC0, 0x9011, 0x90B1, -/* 0C18 */ 0x9264, 0x92B6, 0x99D2, 0x9A45, 0x9CE9, 0x9DD7, 0x9F9C, 0x570B, -/* 0C20 */ 0x5C40, 0x83CA, 0x97A0, 0x97AB, 0x9EB4, 0x541B, 0x7A98, 0x7FA4, -/* 0C28 */ 0x88D9, 0x8ECD, 0x90E1, 0x5800, 0x5C48, 0x6398, 0x7A9F, 0x5BAE, -/* 0C30 */ 0x5F13, 0x7A79, 0x7AAE, 0x828E, 0x8EAC, 0x5026, 0x5238, 0x52F8, -/* 0C38 */ 0x5377, 0x5708, 0x62F3, 0x6372, 0x6B0A, 0x6DC3, 0x7737, 0x53A5, -/* 0C40 */ 0x7357, 0x8568, 0x8E76, 0x95D5, 0x673A, 0x6AC3, 0x6F70, 0x8A6D, -/* 0C48 */ 0x8ECC, 0x994B, 0xF906, 0x6677, 0x6B78, 0x8CB4, 0x9B3C, 0xF907, -/* 0C50 */ 0x53EB, 0x572D, 0x594E, 0x63C6, 0x69FB, 0x73EA, 0x7845, 0x7ABA, -/* 0C58 */ 0x7AC5, 0x7CFE, 0x8475, 0x898F, 0x8D73, 0x9035, 0x95A8, 0x52FB, -/* 0C60 */ 0x5747, 0x7547, 0x7B60, 0x83CC, 0x921E, 0xF908, 0x6A58, 0x514B, -/* 0C68 */ 0x524B, 0x5287, 0x621F, 0x68D8, 0x6975, 0x9699, 0x50C5, 0x52A4, -/* 0C70 */ 0x52E4, 0x61C3, 0x65A4, 0x6839, 0x69FF, 0x747E, 0x7B4B, 0x82B9, -/* 0C78 */ 0x83EB, 0x89B2, 0x8B39, 0x8FD1, 0x9949, 0xF909, 0x4ECA, 0x5997, -/* 0C80 */ 0x64D2, 0x6611, 0x6A8E, 0x7434, 0x7981, 0x79BD, 0x82A9, 0x887E, -/* 0C88 */ 0x887F, 0x895F, 0xF90A, 0x9326, 0x4F0B, 0x53CA, 0x6025, 0x6271, -/* 0C90 */ 0x6C72, 0x7D1A, 0x7D66, 0x4E98, 0x5162, 0x77DC, 0x80AF, 0x4F01, -/* 0C98 */ 0x4F0E, 0x5176, 0x5180, 0x55DC, 0x5668, 0x573B, 0x57FA, 0x57FC, -/* 0CA0 */ 0x5914, 0x5947, 0x5993, 0x5BC4, 0x5C90, 0x5D0E, 0x5DF1, 0x5E7E, -/* 0CA8 */ 0x5FCC, 0x6280, 0x65D7, 0x65E3, 0x671E, 0x671F, 0x675E, 0x68CB, -/* 0CB0 */ 0x68C4, 0x6A5F, 0x6B3A, 0x6C23, 0x6C7D, 0x6C82, 0x6DC7, 0x7398, -/* 0CB8 */ 0x7426, 0x742A, 0x7482, 0x74A3, 0x7578, 0x757F, 0x7881, 0x78EF, -/* 0CC0 */ 0x7941, 0x7947, 0x7948, 0x797A, 0x7B95, 0x7D00, 0x7DBA, 0x7F88, -/* 0CC8 */ 0x8006, 0x802D, 0x808C, 0x8A18, 0x8B4F, 0x8C48, 0x8D77, 0x9321, -/* 0CD0 */ 0x9324, 0x98E2, 0x9951, 0x9A0E, 0x9A0F, 0x9A65, 0x9E92, 0x7DCA, -/* 0CD8 */ 0x4F76, 0x5409, 0x62EE, 0x6854, 0x91D1, 0x55AB, 0x513A, 0xF90B, -/* 0CE0 */ 0xF90C, 0x5A1C, 0x61E6, 0xF90D, 0x62CF, 0x62FF, 0x8AFE, 0xF919, -/* 0CE8 */ 0xF91A, 0xF91B, 0xF91C, 0x6696, 0xF91D, 0x7156, 0xF91E, 0xF91F, -/* 0CF0 */ 0x96E3, 0xF920, 0x634F, 0x637A, 0x5357, 0xF921, 0x678F, 0x6960, -/* 0CF8 */ 0x6E73, 0xF922, 0x7537, 0xF923, 0xF924, 0xF925, 0x7D0D, 0xF926, -/* 0D00 */ 0xF927, 0x8872, 0x56CA, 0x5A18, 0x4E43, 0xF92D, 0x5167, 0x5948, -/* 0D08 */ 0x67F0, 0x8010, 0xF92E, 0x5973, 0x5E74, 0x649A, 0x79CA, 0x5FF5, -/* 0D10 */ 0x606C, 0x62C8, 0x637B, 0x5BE7, 0x5BD7, 0x52AA, 0xF92F, 0x5974, -/* 0D18 */ 0x5F29, 0x6012, 0xF930, 0xF931, 0xF932, 0x7459, 0x6FC3, 0xF944, -/* 0D20 */ 0xF945, 0x81BF, 0x8FB2, 0x60F1, 0xF946, 0xF947, 0x8166, 0xF948, -/* 0D28 */ 0xF949, 0x5C3F, 0x5AE9, 0x8A25, 0x677B, 0x7D10, 0x80FD, 0xF958, -/* 0D30 */ 0xF959, 0x5C3C, 0x6CE5, 0x533F, 0x6EBA, 0x591A, 0x8336, 0x4E39, -/* 0D38 */ 0x4EB6, 0x4F46, 0x55AE, 0x5718, 0x58C7, 0x5F56, 0x65B7, 0x65E6, -/* 0D40 */ 0x6A80, 0x6BB5, 0x6E4D, 0x77ED, 0x7AEF, 0x7C1E, 0x7DDE, 0x86CB, -/* 0D48 */ 0x8892, 0x9132, 0x935B, 0x64BB, 0x6FBE, 0x737A, 0x75B8, 0x9054, -/* 0D50 */ 0x5556, 0x574D, 0x61BA, 0x64D4, 0x66C7, 0x6DE1, 0x6E5B, 0x6F6D, -/* 0D58 */ 0x6FB9, 0x75F0, 0x8043, 0x81BD, 0x8541, 0x8983, 0x8AC7, 0x8B5A, -/* 0D60 */ 0x931F, 0x6C93, 0x7553, 0x7B54, 0x8E0F, 0x905D, 0x5510, 0x5802, -/* 0D68 */ 0x5858, 0x5E62, 0x6207, 0x649E, 0x68E0, 0x7576, 0x7CD6, 0x87B3, -/* 0D70 */ 0x9EE8, 0x4EE3, 0x5788, 0x576E, 0x5927, 0x5C0D, 0x5CB1, 0x5E36, -/* 0D78 */ 0x5F85, 0x6234, 0x64E1, 0x73B3, 0x81FA, 0x888B, 0x8CB8, 0x968A, -/* 0D80 */ 0x9EDB, 0x5B85, 0x5FB7, 0x60B3, 0x5012, 0x5200, 0x5230, 0x5716, -/* 0D88 */ 0x5835, 0x5857, 0x5C0E, 0x5C60, 0x5CF6, 0x5D8B, 0x5EA6, 0x5F92, -/* 0D90 */ 0x60BC, 0x6311, 0x6389, 0x6417, 0x6843, 0x68F9, 0x6AC2, 0x6DD8, -/* 0D98 */ 0x6E21, 0x6ED4, 0x6FE4, 0x71FE, 0x76DC, 0x7779, 0x79B1, 0x7A3B, -/* 0DA0 */ 0x8404, 0x89A9, 0x8CED, 0x8DF3, 0x8E48, 0x9003, 0x9014, 0x9053, -/* 0DA8 */ 0x90FD, 0x934D, 0x9676, 0x97DC, 0x6BD2, 0x7006, 0x7258, 0x72A2, -/* 0DB0 */ 0x7368, 0x7763, 0x79BF, 0x7BE4, 0x7E9B, 0x8B80, 0x58A9, 0x60C7, -/* 0DB8 */ 0x6566, 0x65FD, 0x66BE, 0x6C8C, 0x711E, 0x71C9, 0x8C5A, 0x9813, -/* 0DC0 */ 0x4E6D, 0x7A81, 0x4EDD, 0x51AC, 0x51CD, 0x52D5, 0x540C, 0x61A7, -/* 0DC8 */ 0x6771, 0x6850, 0x68DF, 0x6D1E, 0x6F7C, 0x75BC, 0x77B3, 0x7AE5, -/* 0DD0 */ 0x80F4, 0x8463, 0x9285, 0x515C, 0x6597, 0x675C, 0x6793, 0x75D8, -/* 0DD8 */ 0x7AC7, 0x8373, 0xF95A, 0x8C46, 0x9017, 0x982D, 0x5C6F, 0x81C0, -/* 0DE0 */ 0x829A, 0x9041, 0x906F, 0x920D, 0x5F97, 0x5D9D, 0x6A59, 0x71C8, -/* 0DE8 */ 0x767B, 0x7B49, 0x85E4, 0x8B04, 0x9127, 0x9A30, 0x5587, 0x61F6, -/* 0DF0 */ 0xF95B, 0x7669, 0x7F85, 0x863F, 0x87BA, 0x88F8, 0x908F, 0xF95C, -/* 0DF8 */ 0x6D1B, 0x70D9, 0x73DE, 0x7D61, 0x843D, 0xF95D, 0x916A, 0x99F1, -/* 0E00 */ 0xF95E, 0x4E82, 0x5375, 0x6B04, 0x6B12, 0x703E, 0x721B, 0x862D, -/* 0E08 */ 0x9E1E, 0x524C, 0x8FA3, 0x5D50, 0x64E5, 0x652C, 0x6B16, 0x6FEB, -/* 0E10 */ 0x7C43, 0x7E9C, 0x85CD, 0x8964, 0x89BD, 0x62C9, 0x81D8, 0x881F, -/* 0E18 */ 0x5ECA, 0x6717, 0x6D6A, 0x72FC, 0x7405, 0x746F, 0x8782, 0x90DE, -/* 0E20 */ 0x4F86, 0x5D0D, 0x5FA0, 0x840A, 0x51B7, 0x63A0, 0x7565, 0x4EAE, -/* 0E28 */ 0x5006, 0x5169, 0x51C9, 0x6881, 0x6A11, 0x7CAE, 0x7CB1, 0x7CE7, -/* 0E30 */ 0x826F, 0x8AD2, 0x8F1B, 0x91CF, 0x4FB6, 0x5137, 0x52F5, 0x5442, -/* 0E38 */ 0x5EEC, 0x616E, 0x623E, 0x65C5, 0x6ADA, 0x6FFE, 0x792A, 0x85DC, -/* 0E40 */ 0x8823, 0x95AD, 0x9A62, 0x9A6A, 0x9E97, 0x9ECE, 0x529B, 0x66C6, -/* 0E48 */ 0x6B77, 0x701D, 0x792B, 0x8F62, 0x9742, 0x6190, 0x6200, 0x6523, -/* 0E50 */ 0x6F23, 0x7149, 0x7489, 0x7DF4, 0x806F, 0x84EE, 0x8F26, 0x9023, -/* 0E58 */ 0x934A, 0x51BD, 0x5217, 0x52A3, 0x6D0C, 0x70C8, 0x88C2, 0x5EC9, -/* 0E60 */ 0x6582, 0x6BAE, 0x6FC2, 0x7C3E, 0x7375, 0x4EE4, 0x4F36, 0x56F9, -/* 0E68 */ 0xF95F, 0x5CBA, 0x5DBA, 0x601C, 0x73B2, 0x7B2D, 0x7F9A, 0x7FCE, -/* 0E70 */ 0x8046, 0x901E, 0x9234, 0x96F6, 0x9748, 0x9818, 0x9F61, 0x4F8B, -/* 0E78 */ 0x6FA7, 0x79AE, 0x91B4, 0x96B7, 0x52DE, 0xF960, 0x6488, 0x64C4, -/* 0E80 */ 0x6AD3, 0x6F5E, 0x7018, 0x7210, 0x76E7, 0x8001, 0x8606, 0x865C, -/* 0E88 */ 0x8DEF, 0x8F05, 0x9732, 0x9B6F, 0x9DFA, 0x9E75, 0x788C, 0x797F, -/* 0E90 */ 0x7DA0, 0x83C9, 0x9304, 0x9E7F, 0x9E93, 0x8AD6, 0x58DF, 0x5F04, -/* 0E98 */ 0x6727, 0x7027, 0x74CF, 0x7C60, 0x807E, 0x5121, 0x7028, 0x7262, -/* 0EA0 */ 0x78CA, 0x8CC2, 0x8CDA, 0x8CF4, 0x96F7, 0x4E86, 0x50DA, 0x5BEE, -/* 0EA8 */ 0x5ED6, 0x6599, 0x71CE, 0x7642, 0x77AD, 0x804A, 0x84FC, 0x907C, -/* 0EB0 */ 0x9B27, 0x9F8D, 0x58D8, 0x5A41, 0x5C62, 0x6A13, 0x6DDA, 0x6F0F, -/* 0EB8 */ 0x763B, 0x7D2F, 0x7E37, 0x851E, 0x8938, 0x93E4, 0x964B, 0x5289, -/* 0EC0 */ 0x65D2, 0x67F3, 0x69B4, 0x6D41, 0x6E9C, 0x700F, 0x7409, 0x7460, -/* 0EC8 */ 0x7559, 0x7624, 0x786B, 0x8B2C, 0x985E, 0x516D, 0x622E, 0x9678, -/* 0ED0 */ 0x4F96, 0x502B, 0x5D19, 0x6DEA, 0x7DB8, 0x8F2A, 0x5F8B, 0x6144, -/* 0ED8 */ 0x6817, 0xF961, 0x9686, 0x52D2, 0x808B, 0x51DC, 0x51CC, 0x695E, -/* 0EE0 */ 0x7A1C, 0x7DBE, 0x83F1, 0x9675, 0x4FDA, 0x5229, 0x5398, 0x540F, -/* 0EE8 */ 0x550E, 0x5C65, 0x60A7, 0x674E, 0x68A8, 0x6D6C, 0x7281, 0x72F8, -/* 0EF0 */ 0x7406, 0x7483, 0xF962, 0x75E2, 0x7C6C, 0x7F79, 0x7FB8, 0x8389, -/* 0EF8 */ 0x88CF, 0x88E1, 0x91CC, 0x91D0, 0x96E2, 0x9BC9, 0x541D, 0x6F7E, -/* 0F00 */ 0x71D0, 0x7498, 0x85FA, 0x8EAA, 0x96A3, 0x9C57, 0x9E9F, 0x6797, -/* 0F08 */ 0x6DCB, 0x7433, 0x81E8, 0x9716, 0x782C, 0x7ACB, 0x7B20, 0x7C92, -/* 0F10 */ 0x6469, 0x746A, 0x75F2, 0x78BC, 0x78E8, 0x99AC, 0x9B54, 0x9EBB, -/* 0F18 */ 0x5BDE, 0x5E55, 0x6F20, 0x819C, 0x83AB, 0x9088, 0x4E07, 0x534D, -/* 0F20 */ 0x5A29, 0x5DD2, 0x5F4E, 0x6162, 0x633D, 0x6669, 0x66FC, 0x6EFF, -/* 0F28 */ 0x6F2B, 0x7063, 0x779E, 0x842C, 0x8513, 0x883B, 0x8F13, 0x9945, -/* 0F30 */ 0x9C3B, 0x551C, 0x62B9, 0x672B, 0x6CAB, 0x8309, 0x896A, 0x977A, -/* 0F38 */ 0x4EA1, 0x5984, 0x5FD8, 0x5FD9, 0x671B, 0x7DB2, 0x7F54, 0x8292, -/* 0F40 */ 0x832B, 0x83BD, 0x8F1E, 0x9099, 0x57CB, 0x59B9, 0x5A92, 0x5BD0, -/* 0F48 */ 0x6627, 0x679A, 0x6885, 0x6BCF, 0x7164, 0x7F75, 0x8CB7, 0x8CE3, -/* 0F50 */ 0x9081, 0x9B45, 0x8108, 0x8C8A, 0x964C, 0x9A40, 0x9EA5, 0x5B5F, -/* 0F58 */ 0x6C13, 0x731B, 0x76F2, 0x76DF, 0x840C, 0x51AA, 0x8993, 0x514D, -/* 0F60 */ 0x5195, 0x52C9, 0x68C9, 0x6C94, 0x7704, 0x7720, 0x7DBF, 0x7DEC, -/* 0F68 */ 0x9762, 0x9EB5, 0x6EC5, 0x8511, 0x51A5, 0x540D, 0x547D, 0x660E, -/* 0F70 */ 0x669D, 0x6927, 0x6E9F, 0x76BF, 0x7791, 0x8317, 0x84C2, 0x879F, -/* 0F78 */ 0x9169, 0x9298, 0x9CF4, 0x8882, 0x4FAE, 0x5192, 0x52DF, 0x59C6, -/* 0F80 */ 0x5E3D, 0x6155, 0x6478, 0x6479, 0x66AE, 0x67D0, 0x6A21, 0x6BCD, -/* 0F88 */ 0x6BDB, 0x725F, 0x7261, 0x7441, 0x7738, 0x77DB, 0x8017, 0x82BC, -/* 0F90 */ 0x8305, 0x8B00, 0x8B28, 0x8C8C, 0x6728, 0x6C90, 0x7267, 0x76EE, -/* 0F98 */ 0x7766, 0x7A46, 0x9DA9, 0x6B7F, 0x6C92, 0x5922, 0x6726, 0x8499, -/* 0FA0 */ 0x536F, 0x5893, 0x5999, 0x5EDF, 0x63CF, 0x6634, 0x6773, 0x6E3A, -/* 0FA8 */ 0x732B, 0x7AD7, 0x82D7, 0x9328, 0x52D9, 0x5DEB, 0x61AE, 0x61CB, -/* 0FB0 */ 0x620A, 0x62C7, 0x64AB, 0x65E0, 0x6959, 0x6B66, 0x6BCB, 0x7121, -/* 0FB8 */ 0x73F7, 0x755D, 0x7E46, 0x821E, 0x8302, 0x856A, 0x8AA3, 0x8CBF, -/* 0FC0 */ 0x9727, 0x9D61, 0x58A8, 0x9ED8, 0x5011, 0x520E, 0x543B, 0x554F, -/* 0FC8 */ 0x6587, 0x6C76, 0x7D0A, 0x7D0B, 0x805E, 0x868A, 0x9580, 0x96EF, -/* 0FD0 */ 0x52FF, 0x6C95, 0x7269, 0x5473, 0x5A9A, 0x5C3E, 0x5D4B, 0x5F4C, -/* 0FD8 */ 0x5FAE, 0x672A, 0x68B6, 0x6963, 0x6E3C, 0x6E44, 0x7709, 0x7C73, -/* 0FE0 */ 0x7F8E, 0x8587, 0x8B0E, 0x8FF7, 0x9761, 0x9EF4, 0x5CB7, 0x60B6, -/* 0FE8 */ 0x610D, 0x61AB, 0x654F, 0x65FB, 0x65FC, 0x6C11, 0x6CEF, 0x739F, -/* 0FF0 */ 0x73C9, 0x7DE1, 0x9594, 0x5BC6, 0x871C, 0x8B10, 0x525D, 0x535A, -/* 0FF8 */ 0x62CD, 0x640F, 0x64B2, 0x6734, 0x6A38, 0x6CCA, 0x73C0, 0x749E, -/* 1000 */ 0x7B94, 0x7C95, 0x7E1B, 0x818A, 0x8236, 0x8584, 0x8FEB, 0x96F9, -/* 1008 */ 0x99C1, 0x4F34, 0x534A, 0x53CD, 0x53DB, 0x62CC, 0x642C, 0x6500, -/* 1010 */ 0x6591, 0x69C3, 0x6CEE, 0x6F58, 0x73ED, 0x7554, 0x7622, 0x76E4, -/* 1018 */ 0x76FC, 0x78D0, 0x78FB, 0x792C, 0x7D46, 0x822C, 0x87E0, 0x8FD4, -/* 1020 */ 0x9812, 0x98EF, 0x52C3, 0x62D4, 0x64A5, 0x6E24, 0x6F51, 0x767C, -/* 1028 */ 0x8DCB, 0x91B1, 0x9262, 0x9AEE, 0x9B43, 0x5023, 0x508D, 0x574A, -/* 1030 */ 0x59A8, 0x5C28, 0x5E47, 0x5F77, 0x623F, 0x653E, 0x65B9, 0x65C1, -/* 1038 */ 0x6609, 0x678B, 0x699C, 0x6EC2, 0x78C5, 0x7D21, 0x80AA, 0x8180, -/* 1040 */ 0x822B, 0x82B3, 0x84A1, 0x868C, 0x8A2A, 0x8B17, 0x90A6, 0x9632, -/* 1048 */ 0x9F90, 0x500D, 0x4FF3, 0xF963, 0x57F9, 0x5F98, 0x62DC, 0x6392, -/* 1050 */ 0x676F, 0x6E43, 0x7119, 0x76C3, 0x80CC, 0x80DA, 0x88F4, 0x88F5, -/* 1058 */ 0x8919, 0x8CE0, 0x8F29, 0x914D, 0x966A, 0x4F2F, 0x4F70, 0x5E1B, -/* 1060 */ 0x67CF, 0x6822, 0x767D, 0x767E, 0x9B44, 0x5E61, 0x6A0A, 0x7169, -/* 1068 */ 0x71D4, 0x756A, 0xF964, 0x7E41, 0x8543, 0x85E9, 0x98DC, 0x4F10, -/* 1070 */ 0x7B4F, 0x7F70, 0x95A5, 0x51E1, 0x5E06, 0x68B5, 0x6C3E, 0x6C4E, -/* 1078 */ 0x6CDB, 0x72AF, 0x7BC4, 0x8303, 0x6CD5, 0x743A, 0x50FB, 0x5288, -/* 1080 */ 0x58C1, 0x64D8, 0x6A97, 0x74A7, 0x7656, 0x78A7, 0x8617, 0x95E2, -/* 1088 */ 0x9739, 0xF965, 0x535E, 0x5F01, 0x8B8A, 0x8FA8, 0x8FAF, 0x908A, -/* 1090 */ 0x5225, 0x77A5, 0x9C49, 0x9F08, 0x4E19, 0x5002, 0x5175, 0x5C5B, -/* 1098 */ 0x5E77, 0x661E, 0x663A, 0x67C4, 0x68C5, 0x70B3, 0x7501, 0x75C5, -/* 10A0 */ 0x79C9, 0x7ADD, 0x8F27, 0x9920, 0x9A08, 0x4FDD, 0x5821, 0x5831, -/* 10A8 */ 0x5BF6, 0x666E, 0x6B65, 0x6D11, 0x6E7A, 0x6F7D, 0x73E4, 0x752B, -/* 10B0 */ 0x83E9, 0x88DC, 0x8913, 0x8B5C, 0x8F14, 0x4F0F, 0x50D5, 0x5310, -/* 10B8 */ 0x535C, 0x5B93, 0x5FA9, 0x670D, 0x798F, 0x8179, 0x832F, 0x8514, -/* 10C0 */ 0x8907, 0x8986, 0x8F39, 0x8F3B, 0x99A5, 0x9C12, 0x672C, 0x4E76, -/* 10C8 */ 0x4FF8, 0x5949, 0x5C01, 0x5CEF, 0x5CF0, 0x6367, 0x68D2, 0x70FD, -/* 10D0 */ 0x71A2, 0x742B, 0x7E2B, 0x84EC, 0x8702, 0x9022, 0x92D2, 0x9CF3, -/* 10D8 */ 0x4E0D, 0x4ED8, 0x4FEF, 0x5085, 0x5256, 0x526F, 0x5426, 0x5490, -/* 10E0 */ 0x57E0, 0x592B, 0x5A66, 0x5B5A, 0x5B75, 0x5BCC, 0x5E9C, 0xF966, -/* 10E8 */ 0x6276, 0x6577, 0x65A7, 0x6D6E, 0x6EA5, 0x7236, 0x7B26, 0x7C3F, -/* 10F0 */ 0x7F36, 0x8150, 0x8151, 0x819A, 0x8240, 0x8299, 0x83A9, 0x8A03, -/* 10F8 */ 0x8CA0, 0x8CE6, 0x8CFB, 0x8D74, 0x8DBA, 0x90E8, 0x91DC, 0x961C, -/* 1100 */ 0x9644, 0x99D9, 0x9CE7, 0x5317, 0x5206, 0x5429, 0x5674, 0x58B3, -/* 1108 */ 0x5954, 0x596E, 0x5FFF, 0x61A4, 0x626E, 0x6610, 0x6C7E, 0x711A, -/* 1110 */ 0x76C6, 0x7C89, 0x7CDE, 0x7D1B, 0x82AC, 0x8CC1, 0x96F0, 0xF967, -/* 1118 */ 0x4F5B, 0x5F17, 0x5F7F, 0x62C2, 0x5D29, 0x670B, 0x68DA, 0x787C, -/* 1120 */ 0x7E43, 0x9D6C, 0x4E15, 0x5099, 0x5315, 0x532A, 0x5351, 0x5983, -/* 1128 */ 0x5A62, 0x5E87, 0x60B2, 0x618A, 0x6249, 0x6279, 0x6590, 0x6787, -/* 1130 */ 0x69A7, 0x6BD4, 0x6BD6, 0x6BD7, 0x6BD8, 0x6CB8, 0xF968, 0x7435, -/* 1138 */ 0x75FA, 0x7812, 0x7891, 0x79D5, 0x79D8, 0x7C83, 0x7DCB, 0x7FE1, -/* 1140 */ 0x80A5, 0x813E, 0x81C2, 0x83F2, 0x871A, 0x88E8, 0x8AB9, 0x8B6C, -/* 1148 */ 0x8CBB, 0x9119, 0x975E, 0x98DB, 0x9F3B, 0x56AC, 0x5B2A, 0x5F6C, -/* 1150 */ 0x658C, 0x6AB3, 0x6BAF, 0x6D5C, 0x6FF1, 0x7015, 0x725D, 0x73AD, -/* 1158 */ 0x8CA7, 0x8CD3, 0x983B, 0x6191, 0x6C37, 0x8058, 0x9A01, 0x4E4D, -/* 1160 */ 0x4E8B, 0x4E9B, 0x4ED5, 0x4F3A, 0x4F3C, 0x4F7F, 0x4FDF, 0x50FF, -/* 1168 */ 0x53F2, 0x53F8, 0x5506, 0x55E3, 0x56DB, 0x58EB, 0x5962, 0x5A11, -/* 1170 */ 0x5BEB, 0x5BFA, 0x5C04, 0x5DF3, 0x5E2B, 0x5F99, 0x601D, 0x6368, -/* 1178 */ 0x659C, 0x65AF, 0x67F6, 0x67FB, 0x68AD, 0x6B7B, 0x6C99, 0x6CD7, -/* 1180 */ 0x6E23, 0x7009, 0x7345, 0x7802, 0x793E, 0x7940, 0x7960, 0x79C1, -/* 1188 */ 0x7BE9, 0x7D17, 0x7D72, 0x8086, 0x820D, 0x838E, 0x84D1, 0x86C7, -/* 1190 */ 0x88DF, 0x8A50, 0x8A5E, 0x8B1D, 0x8CDC, 0x8D66, 0x8FAD, 0x90AA, -/* 1198 */ 0x98FC, 0x99DF, 0x9E9D, 0x524A, 0xF969, 0x6714, 0xF96A, 0x5098, -/* 11A0 */ 0x522A, 0x5C71, 0x6563, 0x6C55, 0x73CA, 0x7523, 0x759D, 0x7B97, -/* 11A8 */ 0x849C, 0x9178, 0x9730, 0x4E77, 0x6492, 0x6BBA, 0x715E, 0x85A9, -/* 11B0 */ 0x4E09, 0xF96B, 0x6749, 0x68EE, 0x6E17, 0x829F, 0x8518, 0x886B, -/* 11B8 */ 0x63F7, 0x6F81, 0x9212, 0x98AF, 0x4E0A, 0x50B7, 0x50CF, 0x511F, -/* 11C0 */ 0x5546, 0x55AA, 0x5617, 0x5B40, 0x5C19, 0x5CE0, 0x5E38, 0x5E8A, -/* 11C8 */ 0x5EA0, 0x5EC2, 0x60F3, 0x6851, 0x6A61, 0x6E58, 0x723D, 0x7240, -/* 11D0 */ 0x72C0, 0x76F8, 0x7965, 0x7BB1, 0x7FD4, 0x88F3, 0x89F4, 0x8A73, -/* 11D8 */ 0x8C61, 0x8CDE, 0x971C, 0x585E, 0x74BD, 0x8CFD, 0x55C7, 0xF96C, -/* 11E0 */ 0x7A61, 0x7D22, 0x8272, 0x7272, 0x751F, 0x7525, 0xF96D, 0x7B19, -/* 11E8 */ 0x5885, 0x58FB, 0x5DBC, 0x5E8F, 0x5EB6, 0x5F90, 0x6055, 0x6292, -/* 11F0 */ 0x637F, 0x654D, 0x6691, 0x66D9, 0x66F8, 0x6816, 0x68F2, 0x7280, -/* 11F8 */ 0x745E, 0x7B6E, 0x7D6E, 0x7DD6, 0x7F72, 0x80E5, 0x8212, 0x85AF, -/* 1200 */ 0x897F, 0x8A93, 0x901D, 0x92E4, 0x9ECD, 0x9F20, 0x5915, 0x596D, -/* 1208 */ 0x5E2D, 0x60DC, 0x6614, 0x6673, 0x6790, 0x6C50, 0x6DC5, 0x6F5F, -/* 1210 */ 0x77F3, 0x78A9, 0x84C6, 0x91CB, 0x932B, 0x4ED9, 0x50CA, 0x5148, -/* 1218 */ 0x5584, 0x5B0B, 0x5BA3, 0x6247, 0x657E, 0x65CB, 0x6E32, 0x717D, -/* 1220 */ 0x7401, 0x7444, 0x7487, 0x74BF, 0x766C, 0x79AA, 0x7DDA, 0x7E55, -/* 1228 */ 0x7FA8, 0x817A, 0x81B3, 0x8239, 0x861A, 0x87EC, 0x8A75, 0x8DE3, -/* 1230 */ 0x9078, 0x9291, 0x9425, 0x994D, 0x9BAE, 0x5368, 0x5C51, 0x6954, -/* 1238 */ 0x6CC4, 0x6D29, 0x6E2B, 0x820C, 0x859B, 0x893B, 0x8A2D, 0x8AAA, -/* 1240 */ 0x96EA, 0x9F67, 0x5261, 0x66B9, 0x6BB2, 0x7E96, 0x87FE, 0x8D0D, -/* 1248 */ 0x9583, 0x965D, 0x651D, 0x6D89, 0x71EE, 0xF96E, 0x57CE, 0x59D3, -/* 1250 */ 0x5BAC, 0x6027, 0x60FA, 0x6210, 0x661F, 0x665F, 0x7329, 0x73F9, -/* 1258 */ 0x76DB, 0x7701, 0x7B6C, 0x8056, 0x8072, 0x8165, 0x8AA0, 0x9192, -/* 1260 */ 0x4E16, 0x52E2, 0x6B72, 0x6D17, 0x7A05, 0x7B39, 0x7D30, 0xF96F, -/* 1268 */ 0x8CB0, 0x53EC, 0x562F, 0x5851, 0x5BB5, 0x5C0F, 0x5C11, 0x5DE2, -/* 1270 */ 0x6240, 0x6383, 0x6414, 0x662D, 0x68B3, 0x6CBC, 0x6D88, 0x6EAF, -/* 1278 */ 0x701F, 0x70A4, 0x71D2, 0x7526, 0x758F, 0x758E, 0x7619, 0x7B11, -/* 1280 */ 0x7BE0, 0x7C2B, 0x7D20, 0x7D39, 0x852C, 0x856D, 0x8607, 0x8A34, -/* 1288 */ 0x900D, 0x9061, 0x90B5, 0x92B7, 0x97F6, 0x9A37, 0x4FD7, 0x5C6C, -/* 1290 */ 0x675F, 0x6D91, 0x7C9F, 0x7E8C, 0x8B16, 0x8D16, 0x901F, 0x5B6B, -/* 1298 */ 0x5DFD, 0x640D, 0x84C0, 0x905C, 0x98E1, 0x7387, 0x5B8B, 0x609A, -/* 12A0 */ 0x677E, 0x6DDE, 0x8A1F, 0x8AA6, 0x9001, 0x980C, 0x5237, 0xF970, -/* 12A8 */ 0x7051, 0x788E, 0x9396, 0x8870, 0x91D7, 0x4FEE, 0x53D7, 0x55FD, -/* 12B0 */ 0x56DA, 0x5782, 0x58FD, 0x5AC2, 0x5B88, 0x5CAB, 0x5CC0, 0x5E25, -/* 12B8 */ 0x6101, 0x620D, 0x624B, 0x6388, 0x641C, 0x6536, 0x6578, 0x6A39, -/* 12C0 */ 0x6B8A, 0x6C34, 0x6D19, 0x6F31, 0x71E7, 0x72E9, 0x7378, 0x7407, -/* 12C8 */ 0x74B2, 0x7626, 0x7761, 0x79C0, 0x7A57, 0x7AEA, 0x7CB9, 0x7D8F, -/* 12D0 */ 0x7DAC, 0x7E61, 0x7F9E, 0x8129, 0x8331, 0x8490, 0x84DA, 0x85EA, -/* 12D8 */ 0x8896, 0x8AB0, 0x8B90, 0x8F38, 0x9042, 0x9083, 0x916C, 0x9296, -/* 12E0 */ 0x92B9, 0x968B, 0x96A7, 0x96A8, 0x96D6, 0x9700, 0x9808, 0x9996, -/* 12E8 */ 0x9AD3, 0x9B1A, 0x53D4, 0x587E, 0x5919, 0x5B70, 0x5BBF, 0x6DD1, -/* 12F0 */ 0x6F5A, 0x719F, 0x7421, 0x74B9, 0x8085, 0x83FD, 0x5DE1, 0x5F87, -/* 12F8 */ 0x5FAA, 0x6042, 0x65EC, 0x6812, 0x696F, 0x6A53, 0x6B89, 0x6D35, -/* 1300 */ 0x6DF3, 0x73E3, 0x76FE, 0x77AC, 0x7B4D, 0x7D14, 0x8123, 0x821C, -/* 1308 */ 0x8340, 0x84F4, 0x8563, 0x8A62, 0x8AC4, 0x9187, 0x931E, 0x9806, -/* 1310 */ 0x99B4, 0x620C, 0x8853, 0x8FF0, 0x9265, 0x5D07, 0x5D27, 0x5D69, -/* 1318 */ 0x745F, 0x819D, 0x8768, 0x6FD5, 0x62FE, 0x7FD2, 0x8936, 0x8972, -/* 1320 */ 0x4E1E, 0x4E58, 0x50E7, 0x52DD, 0x5347, 0x627F, 0x6607, 0x7E69, -/* 1328 */ 0x8805, 0x965E, 0x4F8D, 0x5319, 0x5636, 0x59CB, 0x5AA4, 0x5C38, -/* 1330 */ 0x5C4E, 0x5C4D, 0x5E02, 0x5F11, 0x6043, 0x65BD, 0x662F, 0x6642, -/* 1338 */ 0x67BE, 0x67F4, 0x731C, 0x77E2, 0x793A, 0x7FC5, 0x8494, 0x84CD, -/* 1340 */ 0x8996, 0x8A66, 0x8A69, 0x8AE1, 0x8C55, 0x8C7A, 0x57F4, 0x5BD4, -/* 1348 */ 0x5F0F, 0x606F, 0x62ED, 0x690D, 0x6B96, 0x6E5C, 0x7184, 0x7BD2, -/* 1350 */ 0x8755, 0x8B58, 0x8EFE, 0x98DF, 0x98FE, 0x4F38, 0x4F81, 0x4FE1, -/* 1358 */ 0x547B, 0x5A20, 0x5BB8, 0x613C, 0x65B0, 0x6668, 0x71FC, 0x7533, -/* 1360 */ 0x795E, 0x7D33, 0x814E, 0x81E3, 0x8398, 0x85AA, 0x85CE, 0x8703, -/* 1368 */ 0x8A0A, 0x8EAB, 0x8F9B, 0xF971, 0x8FC5, 0x5931, 0x5BA4, 0x5BE6, -/* 1370 */ 0x6089, 0x5BE9, 0x5C0B, 0x5FC3, 0x6C81, 0xF972, 0x6DF1, 0x700B, -/* 1378 */ 0x751A, 0x82AF, 0x8AF6, 0x4EC0, 0x5341, 0xF973, 0x96D9, 0x6C0F, -/* 1380 */ 0x4E9E, 0x4FC4, 0x5152, 0x555E, 0x5A25, 0x5CE8, 0x6211, 0x7259, -/* 1388 */ 0x82BD, 0x83AA, 0x86FE, 0x8859, 0x8A1D, 0x963F, 0x96C5, 0x9913, -/* 1390 */ 0x9D09, 0x9D5D, 0x580A, 0x5CB3, 0x5DBD, 0x5E44, 0x60E1, 0x6115, -/* 1398 */ 0x63E1, 0x6A02, 0x6E25, 0x9102, 0x9354, 0x984E, 0x9C10, 0x9F77, -/* 13A0 */ 0x5B89, 0x5CB8, 0x6309, 0x664F, 0x6848, 0x773C, 0x96C1, 0x978D, -/* 13A8 */ 0x9854, 0x9B9F, 0x65A1, 0x8B01, 0x8ECB, 0x95BC, 0x5535, 0x5CA9, -/* 13B0 */ 0x5DD6, 0x5EB5, 0x6697, 0x764C, 0x83F4, 0x95C7, 0x58D3, 0x62BC, -/* 13B8 */ 0x72CE, 0x9D28, 0x4EF0, 0x592E, 0x600F, 0x663B, 0x6B83, 0x79E7, -/* 13C0 */ 0x9D26, 0x5393, 0x54C0, 0x57C3, 0x5D16, 0x611B, 0x66D6, 0x6DAF, -/* 13C8 */ 0x788D, 0x827E, 0x9698, 0x9744, 0x5384, 0x627C, 0x6396, 0x6DB2, -/* 13D0 */ 0x7E0A, 0x814B, 0x984D, 0x6AFB, 0x7F4C, 0x9DAF, 0x9E1A, 0x4E5F, -/* 13D8 */ 0x503B, 0x51B6, 0x591C, 0x60F9, 0x63F6, 0x6930, 0x723A, 0x8036, -/* 13E0 */ 0xF974, 0x91CE, 0x5F31, 0xF975, 0xF976, 0x7D04, 0x82E5, 0x846F, -/* 13E8 */ 0x84BB, 0x85E5, 0x8E8D, 0xF977, 0x4F6F, 0xF978, 0xF979, 0x58E4, -/* 13F0 */ 0x5B43, 0x6059, 0x63DA, 0x6518, 0x656D, 0x6698, 0xF97A, 0x694A, -/* 13F8 */ 0x6A23, 0x6D0B, 0x7001, 0x716C, 0x75D2, 0x760D, 0x79B3, 0x7A70, -/* 1400 */ 0xF97B, 0x7F8A, 0xF97C, 0x8944, 0xF97D, 0x8B93, 0x91C0, 0x967D, -/* 1408 */ 0xF97E, 0x990A, 0x5704, 0x5FA1, 0x65BC, 0x6F01, 0x7600, 0x79A6, -/* 1410 */ 0x8A9E, 0x99AD, 0x9B5A, 0x9F6C, 0x5104, 0x61B6, 0x6291, 0x6A8D, -/* 1418 */ 0x81C6, 0x5043, 0x5830, 0x5F66, 0x7109, 0x8A00, 0x8AFA, 0x5B7C, -/* 1420 */ 0x8616, 0x4FFA, 0x513C, 0x56B4, 0x5944, 0x63A9, 0x6DF9, 0x5DAA, -/* 1428 */ 0x696D, 0x5186, 0x4E88, 0x4F59, 0xF97F, 0xF980, 0xF981, 0x5982, -/* 1430 */ 0xF982, 0xF983, 0x6B5F, 0x6C5D, 0xF984, 0x74B5, 0x7916, 0xF985, -/* 1438 */ 0x8207, 0x8245, 0x8339, 0x8F3F, 0x8F5D, 0xF986, 0x9918, 0xF987, -/* 1440 */ 0xF988, 0xF989, 0x4EA6, 0xF98A, 0x57DF, 0x5F79, 0x6613, 0xF98B, -/* 1448 */ 0xF98C, 0x75AB, 0x7E79, 0x8B6F, 0xF98D, 0x9006, 0x9A5B, 0x56A5, -/* 1450 */ 0x5827, 0x59F8, 0x5A1F, 0x5BB4, 0xF98E, 0x5EF6, 0xF98F, 0xF990, -/* 1458 */ 0x6350, 0x633B, 0xF991, 0x693D, 0x6C87, 0x6CBF, 0x6D8E, 0x6D93, -/* 1460 */ 0x6DF5, 0x6F14, 0xF992, 0x70DF, 0x7136, 0x7159, 0xF993, 0x71C3, -/* 1468 */ 0x71D5, 0xF994, 0x784F, 0x786F, 0xF995, 0x7B75, 0x7DE3, 0xF996, -/* 1470 */ 0x7E2F, 0xF997, 0x884D, 0x8EDF, 0xF998, 0xF999, 0xF99A, 0x925B, -/* 1478 */ 0xF99B, 0x9CF6, 0xF99C, 0xF99D, 0xF99E, 0x6085, 0x6D85, 0xF99F, -/* 1480 */ 0x71B1, 0xF9A0, 0xF9A1, 0x95B1, 0x53AD, 0xF9A2, 0xF9A3, 0xF9A4, -/* 1488 */ 0x67D3, 0xF9A5, 0x708E, 0x7130, 0x7430, 0x8276, 0x82D2, 0xF9A6, -/* 1490 */ 0x95BB, 0x9AE5, 0x9E7D, 0x66C4, 0xF9A7, 0x71C1, 0x8449, 0xF9A8, -/* 1498 */ 0xF9A9, 0x584B, 0xF9AA, 0xF9AB, 0x5DB8, 0x5F71, 0xF9AC, 0x6620, -/* 14A0 */ 0x668E, 0x6979, 0x69AE, 0x6C38, 0x6CF3, 0x6E36, 0x6F41, 0x6FDA, -/* 14A8 */ 0x701B, 0x702F, 0x7150, 0x71DF, 0x7370, 0xF9AD, 0x745B, 0xF9AE, -/* 14B0 */ 0x74D4, 0x76C8, 0x7A4E, 0x7E93, 0xF9AF, 0xF9B0, 0x82F1, 0x8A60, -/* 14B8 */ 0x8FCE, 0xF9B1, 0x9348, 0xF9B2, 0x9719, 0xF9B3, 0xF9B4, 0x4E42, -/* 14C0 */ 0x502A, 0xF9B5, 0x5208, 0x53E1, 0x66F3, 0x6C6D, 0x6FCA, 0x730A, -/* 14C8 */ 0x777F, 0x7A62, 0x82AE, 0x85DD, 0x8602, 0xF9B6, 0x88D4, 0x8A63, -/* 14D0 */ 0x8B7D, 0x8C6B, 0xF9B7, 0x92B3, 0xF9B8, 0x9713, 0x9810, 0x4E94, -/* 14D8 */ 0x4F0D, 0x4FC9, 0x50B2, 0x5348, 0x543E, 0x5433, 0x55DA, 0x5862, -/* 14E0 */ 0x58BA, 0x5967, 0x5A1B, 0x5BE4, 0x609F, 0xF9B9, 0x61CA, 0x6556, -/* 14E8 */ 0x65FF, 0x6664, 0x68A7, 0x6C5A, 0x6FB3, 0x70CF, 0x71AC, 0x7352, -/* 14F0 */ 0x7B7D, 0x8708, 0x8AA4, 0x9C32, 0x9F07, 0x5C4B, 0x6C83, 0x7344, -/* 14F8 */ 0x7389, 0x923A, 0x6EAB, 0x7465, 0x761F, 0x7A69, 0x7E15, 0x860A, -/* 1500 */ 0x5140, 0x58C5, 0x64C1, 0x74EE, 0x7515, 0x7670, 0x7FC1, 0x9095, -/* 1508 */ 0x96CD, 0x9954, 0x6E26, 0x74E6, 0x7AA9, 0x7AAA, 0x81E5, 0x86D9, -/* 1510 */ 0x8778, 0x8A1B, 0x5A49, 0x5B8C, 0x5B9B, 0x68A1, 0x6900, 0x6D63, -/* 1518 */ 0x73A9, 0x7413, 0x742C, 0x7897, 0x7DE9, 0x7FEB, 0x8118, 0x8155, -/* 1520 */ 0x839E, 0x8C4C, 0x962E, 0x9811, 0x66F0, 0x5F80, 0x65FA, 0x6789, -/* 1528 */ 0x6C6A, 0x738B, 0x502D, 0x5A03, 0x6B6A, 0x77EE, 0x5916, 0x5D6C, -/* 1530 */ 0x5DCD, 0x7325, 0x754F, 0xF9BA, 0xF9BB, 0x50E5, 0x51F9, 0x582F, -/* 1538 */ 0x592D, 0x5996, 0x59DA, 0x5BE5, 0xF9BC, 0xF9BD, 0x5DA2, 0x62D7, -/* 1540 */ 0x6416, 0x6493, 0x64FE, 0xF9BE, 0x66DC, 0xF9BF, 0x6A48, 0xF9C0, -/* 1548 */ 0x71FF, 0x7464, 0xF9C1, 0x7A88, 0x7AAF, 0x7E47, 0x7E5E, 0x8000, -/* 1550 */ 0x8170, 0xF9C2, 0x87EF, 0x8981, 0x8B20, 0x9059, 0xF9C3, 0x9080, -/* 1558 */ 0x9952, 0x617E, 0x6B32, 0x6D74, 0x7E1F, 0x8925, 0x8FB1, 0x4FD1, -/* 1560 */ 0x50AD, 0x5197, 0x52C7, 0x57C7, 0x5889, 0x5BB9, 0x5EB8, 0x6142, -/* 1568 */ 0x6995, 0x6D8C, 0x6E67, 0x6EB6, 0x7194, 0x7462, 0x7528, 0x752C, -/* 1570 */ 0x8073, 0x8338, 0x84C9, 0x8E0A, 0x9394, 0x93DE, 0xF9C4, 0x4E8E, -/* 1578 */ 0x4F51, 0x5076, 0x512A, 0x53C8, 0x53CB, 0x53F3, 0x5B87, 0x5BD3, -/* 1580 */ 0x5C24, 0x611A, 0x6182, 0x65F4, 0x725B, 0x7397, 0x7440, 0x76C2, -/* 1588 */ 0x7950, 0x7991, 0x79B9, 0x7D06, 0x7FBD, 0x828B, 0x85D5, 0x865E, -/* 1590 */ 0x8FC2, 0x9047, 0x90F5, 0x91EA, 0x9685, 0x96E8, 0x96E9, 0x52D6, -/* 1598 */ 0x5F67, 0x65ED, 0x6631, 0x682F, 0x715C, 0x7A36, 0x90C1, 0x980A, -/* 15A0 */ 0x4E91, 0xF9C5, 0x6A52, 0x6B9E, 0x6F90, 0x7189, 0x8018, 0x82B8, -/* 15A8 */ 0x8553, 0x904B, 0x9695, 0x96F2, 0x97FB, 0x851A, 0x9B31, 0x4E90, -/* 15B0 */ 0x718A, 0x96C4, 0x5143, 0x539F, 0x54E1, 0x5713, 0x5712, 0x57A3, -/* 15B8 */ 0x5A9B, 0x5AC4, 0x5BC3, 0x6028, 0x613F, 0x63F4, 0x6C85, 0x6D39, -/* 15C0 */ 0x6E72, 0x6E90, 0x7230, 0x733F, 0x7457, 0x82D1, 0x8881, 0x8F45, -/* 15C8 */ 0x9060, 0xF9C6, 0x9662, 0x9858, 0x9D1B, 0x6708, 0x8D8A, 0x925E, -/* 15D0 */ 0x4F4D, 0x5049, 0x50DE, 0x5371, 0x570D, 0x59D4, 0x5A01, 0x5C09, -/* 15D8 */ 0x6170, 0x6690, 0x6E2D, 0x7232, 0x744B, 0x7DEF, 0x80C3, 0x840E, -/* 15E0 */ 0x8466, 0x853F, 0x875F, 0x885B, 0x8918, 0x8B02, 0x9055, 0x97CB, -/* 15E8 */ 0x9B4F, 0x4E73, 0x4F91, 0x5112, 0x516A, 0xF9C7, 0x552F, 0x55A9, -/* 15F0 */ 0x5B7A, 0x5BA5, 0x5E7C, 0x5E7D, 0x5EBE, 0x60A0, 0x60DF, 0x6108, -/* 15F8 */ 0x6109, 0x63C4, 0x6538, 0x6709, 0xF9C8, 0x67D4, 0x67DA, 0xF9C9, -/* 1600 */ 0x6961, 0x6962, 0x6CB9, 0x6D27, 0xF9CA, 0x6E38, 0xF9CB, 0x6FE1, -/* 1608 */ 0x7336, 0x7337, 0xF9CC, 0x745C, 0x7531, 0xF9CD, 0x7652, 0xF9CE, -/* 1610 */ 0xF9CF, 0x7DAD, 0x81FE, 0x8438, 0x88D5, 0x8A98, 0x8ADB, 0x8AED, -/* 1618 */ 0x8E30, 0x8E42, 0x904A, 0x903E, 0x907A, 0x9149, 0x91C9, 0x936E, -/* 1620 */ 0xF9D0, 0xF9D1, 0x5809, 0xF9D2, 0x6BD3, 0x8089, 0x80B2, 0xF9D3, -/* 1628 */ 0xF9D4, 0x5141, 0x596B, 0x5C39, 0xF9D5, 0xF9D6, 0x6F64, 0x73A7, -/* 1630 */ 0x80E4, 0x8D07, 0xF9D7, 0x9217, 0x958F, 0xF9D8, 0xF9D9, 0xF9DA, -/* 1638 */ 0xF9DB, 0x807F, 0x620E, 0x701C, 0x7D68, 0x878D, 0xF9DC, 0x57A0, -/* 1640 */ 0x6069, 0x6147, 0x6BB7, 0x8ABE, 0x9280, 0x96B1, 0x4E59, 0x541F, -/* 1648 */ 0x6DEB, 0x852D, 0x9670, 0x97F3, 0x98EE, 0x63D6, 0x6CE3, 0x9091, -/* 1650 */ 0x51DD, 0x61C9, 0x81BA, 0x9DF9, 0x4F9D, 0x501A, 0x5100, 0x5B9C, -/* 1658 */ 0x610F, 0x61FF, 0x64EC, 0x6905, 0x6BC5, 0x7591, 0x77E3, 0x7FA9, -/* 1660 */ 0x8264, 0x858F, 0x87FB, 0x8863, 0x8ABC, 0x8B70, 0x91AB, 0x4E8C, -/* 1668 */ 0x4EE5, 0x4F0A, 0xF9DD, 0xF9DE, 0x5937, 0x59E8, 0xF9DF, 0x5DF2, -/* 1670 */ 0x5F1B, 0x5F5B, 0x6021, 0xF9E0, 0xF9E1, 0xF9E2, 0xF9E3, 0x723E, -/* 1678 */ 0x73E5, 0xF9E4, 0x7570, 0x75CD, 0xF9E5, 0x79FB, 0xF9E6, 0x800C, -/* 1680 */ 0x8033, 0x8084, 0x82E1, 0x8351, 0xF9E7, 0xF9E8, 0x8CBD, 0x8CB3, -/* 1688 */ 0x9087, 0xF9E9, 0xF9EA, 0x98F4, 0x990C, 0xF9EB, 0xF9EC, 0x7037, -/* 1690 */ 0x76CA, 0x7FCA, 0x7FCC, 0x7FFC, 0x8B1A, 0x4EBA, 0x4EC1, 0x5203, -/* 1698 */ 0x5370, 0xF9ED, 0x54BD, 0x56E0, 0x59FB, 0x5BC5, 0x5F15, 0x5FCD, -/* 16A0 */ 0x6E6E, 0xF9EE, 0xF9EF, 0x7D6A, 0x8335, 0xF9F0, 0x8693, 0x8A8D, -/* 16A8 */ 0xF9F1, 0x976D, 0x9777, 0xF9F2, 0xF9F3, 0x4E00, 0x4F5A, 0x4F7E, -/* 16B0 */ 0x58F9, 0x65E5, 0x6EA2, 0x9038, 0x93B0, 0x99B9, 0x4EFB, 0x58EC, -/* 16B8 */ 0x598A, 0x59D9, 0x6041, 0xF9F4, 0xF9F5, 0x7A14, 0xF9F6, 0x834F, -/* 16C0 */ 0x8CC3, 0x5165, 0x5344, 0xF9F7, 0xF9F8, 0xF9F9, 0x4ECD, 0x5269, -/* 16C8 */ 0x5B55, 0x82BF, 0x4ED4, 0x523A, 0x54A8, 0x59C9, 0x59FF, 0x5B50, -/* 16D0 */ 0x5B57, 0x5B5C, 0x6063, 0x6148, 0x6ECB, 0x7099, 0x716E, 0x7386, -/* 16D8 */ 0x74F7, 0x75B5, 0x78C1, 0x7D2B, 0x8005, 0x81EA, 0x8328, 0x8517, -/* 16E0 */ 0x85C9, 0x8AEE, 0x8CC7, 0x96CC, 0x4F5C, 0x52FA, 0x56BC, 0x65AB, -/* 16E8 */ 0x6628, 0x707C, 0x70B8, 0x7235, 0x7DBD, 0x828D, 0x914C, 0x96C0, -/* 16F0 */ 0x9D72, 0x5B71, 0x68E7, 0x6B98, 0x6F7A, 0x76DE, 0x5C91, 0x66AB, -/* 16F8 */ 0x6F5B, 0x7BB4, 0x7C2A, 0x8836, 0x96DC, 0x4E08, 0x4ED7, 0x5320, -/* 1700 */ 0x5834, 0x58BB, 0x58EF, 0x596C, 0x5C07, 0x5E33, 0x5E84, 0x5F35, -/* 1708 */ 0x638C, 0x66B2, 0x6756, 0x6A1F, 0x6AA3, 0x6B0C, 0x6F3F, 0x7246, -/* 1710 */ 0xF9FA, 0x7350, 0x748B, 0x7AE0, 0x7CA7, 0x8178, 0x81DF, 0x81E7, -/* 1718 */ 0x838A, 0x846C, 0x8523, 0x8594, 0x85CF, 0x88DD, 0x8D13, 0x91AC, -/* 1720 */ 0x9577, 0x969C, 0x518D, 0x54C9, 0x5728, 0x5BB0, 0x624D, 0x6750, -/* 1728 */ 0x683D, 0x6893, 0x6E3D, 0x6ED3, 0x707D, 0x7E21, 0x88C1, 0x8CA1, -/* 1730 */ 0x8F09, 0x9F4B, 0x9F4E, 0x722D, 0x7B8F, 0x8ACD, 0x931A, 0x4F47, -/* 1738 */ 0x4F4E, 0x5132, 0x5480, 0x59D0, 0x5E95, 0x62B5, 0x6775, 0x696E, -/* 1740 */ 0x6A17, 0x6CAE, 0x6E1A, 0x72D9, 0x732A, 0x75BD, 0x7BB8, 0x7D35, -/* 1748 */ 0x82E7, 0x83F9, 0x8457, 0x85F7, 0x8A5B, 0x8CAF, 0x8E87, 0x9019, -/* 1750 */ 0x90B8, 0x96CE, 0x9F5F, 0x52E3, 0x540A, 0x5AE1, 0x5BC2, 0x6458, -/* 1758 */ 0x6575, 0x6EF4, 0x72C4, 0xF9FB, 0x7684, 0x7A4D, 0x7B1B, 0x7C4D, -/* 1760 */ 0x7E3E, 0x7FDF, 0x837B, 0x8B2B, 0x8CCA, 0x8D64, 0x8DE1, 0x8E5F, -/* 1768 */ 0x8FEA, 0x8FF9, 0x9069, 0x93D1, 0x4F43, 0x4F7A, 0x50B3, 0x5168, -/* 1770 */ 0x5178, 0x524D, 0x526A, 0x5861, 0x587C, 0x5960, 0x5C08, 0x5C55, -/* 1778 */ 0x5EDB, 0x609B, 0x6230, 0x6813, 0x6BBF, 0x6C08, 0x6FB1, 0x714E, -/* 1780 */ 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7B4C, 0x7B8B, 0x7BAD, -/* 1788 */ 0x7BC6, 0x7E8F, 0x8A6E, 0x8F3E, 0x8F49, 0x923F, 0x9293, 0x9322, -/* 1790 */ 0x942B, 0x96FB, 0x985A, 0x986B, 0x991E, 0x5207, 0x622A, 0x6298, -/* 1798 */ 0x6D59, 0x7664, 0x7ACA, 0x7BC0, 0x7D76, 0x5360, 0x5CBE, 0x5E97, -/* 17A0 */ 0x6F38, 0x70B9, 0x7C98, 0x9711, 0x9B8E, 0x9EDE, 0x63A5, 0x647A, -/* 17A8 */ 0x8776, 0x4E01, 0x4E95, 0x4EAD, 0x505C, 0x5075, 0x5448, 0x59C3, -/* 17B0 */ 0x5B9A, 0x5E40, 0x5EAD, 0x5EF7, 0x5F81, 0x60C5, 0x633A, 0x653F, -/* 17B8 */ 0x6574, 0x65CC, 0x6676, 0x6678, 0x67FE, 0x6968, 0x6A89, 0x6B63, -/* 17C0 */ 0x6C40, 0x6DC0, 0x6DE8, 0x6E1F, 0x6E5E, 0x701E, 0x70A1, 0x738E, -/* 17C8 */ 0x73FD, 0x753A, 0x775B, 0x7887, 0x798E, 0x7A0B, 0x7A7D, 0x7CBE, -/* 17D0 */ 0x7D8E, 0x8247, 0x8A02, 0x8AEA, 0x8C9E, 0x912D, 0x914A, 0x91D8, -/* 17D8 */ 0x9266, 0x92CC, 0x9320, 0x9706, 0x9756, 0x975C, 0x9802, 0x9F0E, -/* 17E0 */ 0x5236, 0x5291, 0x557C, 0x5824, 0x5E1D, 0x5F1F, 0x608C, 0x63D0, -/* 17E8 */ 0x68AF, 0x6FDF, 0x796D, 0x7B2C, 0x81CD, 0x85BA, 0x88FD, 0x8AF8, -/* 17F0 */ 0x8E44, 0x918D, 0x9664, 0x969B, 0x973D, 0x984C, 0x9F4A, 0x4FCE, -/* 17F8 */ 0x5146, 0x51CB, 0x52A9, 0x5632, 0x5F14, 0x5F6B, 0x63AA, 0x64CD, -/* 1800 */ 0x65E9, 0x6641, 0x66FA, 0x66F9, 0x671D, 0x689D, 0x68D7, 0x69FD, -/* 1808 */ 0x6F15, 0x6F6E, 0x7167, 0x71E5, 0x722A, 0x74AA, 0x773A, 0x7956, -/* 1810 */ 0x795A, 0x79DF, 0x7A20, 0x7A95, 0x7C97, 0x7CDF, 0x7D44, 0x7E70, -/* 1818 */ 0x8087, 0x85FB, 0x86A4, 0x8A54, 0x8ABF, 0x8D99, 0x8E81, 0x9020, -/* 1820 */ 0x906D, 0x91E3, 0x963B, 0x96D5, 0x9CE5, 0x65CF, 0x7C07, 0x8DB3, -/* 1828 */ 0x93C3, 0x5B58, 0x5C0A, 0x5352, 0x62D9, 0x731D, 0x5027, 0x5B97, -/* 1830 */ 0x5F9E, 0x60B0, 0x616B, 0x68D5, 0x6DD9, 0x742E, 0x7A2E, 0x7D42, -/* 1838 */ 0x7D9C, 0x7E31, 0x816B, 0x8E2A, 0x8E35, 0x937E, 0x9418, 0x4F50, -/* 1840 */ 0x5750, 0x5DE6, 0x5EA7, 0x632B, 0x7F6A, 0x4E3B, 0x4F4F, 0x4F8F, -/* 1848 */ 0x505A, 0x59DD, 0x80C4, 0x546A, 0x5468, 0x55FE, 0x594F, 0x5B99, -/* 1850 */ 0x5DDE, 0x5EDA, 0x665D, 0x6731, 0x67F1, 0x682A, 0x6CE8, 0x6D32, -/* 1858 */ 0x6E4A, 0x6F8D, 0x70B7, 0x73E0, 0x7587, 0x7C4C, 0x7D02, 0x7D2C, -/* 1860 */ 0x7DA2, 0x821F, 0x86DB, 0x8A3B, 0x8A85, 0x8D70, 0x8E8A, 0x8F33, -/* 1868 */ 0x9031, 0x914E, 0x9152, 0x9444, 0x99D0, 0x7AF9, 0x7CA5, 0x4FCA, -/* 1870 */ 0x5101, 0x51C6, 0x57C8, 0x5BEF, 0x5CFB, 0x6659, 0x6A3D, 0x6D5A, -/* 1878 */ 0x6E96, 0x6FEC, 0x710C, 0x756F, 0x7AE3, 0x8822, 0x9021, 0x9075, -/* 1880 */ 0x96CB, 0x99FF, 0x8301, 0x4E2D, 0x4EF2, 0x8846, 0x91CD, 0x537D, -/* 1888 */ 0x6ADB, 0x696B, 0x6C41, 0x847A, 0x589E, 0x618E, 0x66FE, 0x62EF, -/* 1890 */ 0x70DD, 0x7511, 0x75C7, 0x7E52, 0x84B8, 0x8B49, 0x8D08, 0x4E4B, -/* 1898 */ 0x53EA, 0x54AB, 0x5730, 0x5740, 0x5FD7, 0x6301, 0x6307, 0x646F, -/* 18A0 */ 0x652F, 0x65E8, 0x667A, 0x679D, 0x67B3, 0x6B62, 0x6C60, 0x6C9A, -/* 18A8 */ 0x6F2C, 0x77E5, 0x7825, 0x7949, 0x7957, 0x7D19, 0x80A2, 0x8102, -/* 18B0 */ 0x81F3, 0x829D, 0x82B7, 0x8718, 0x8A8C, 0xF9FC, 0x8D04, 0x8DBE, -/* 18B8 */ 0x9072, 0x76F4, 0x7A19, 0x7A37, 0x7E54, 0x8077, 0x5507, 0x55D4, -/* 18C0 */ 0x5875, 0x632F, 0x6422, 0x6649, 0x664B, 0x686D, 0x699B, 0x6B84, -/* 18C8 */ 0x6D25, 0x6EB1, 0x73CD, 0x7468, 0x74A1, 0x755B, 0x75B9, 0x76E1, -/* 18D0 */ 0x771E, 0x778B, 0x79E6, 0x7E09, 0x7E1D, 0x81FB, 0x852F, 0x8897, -/* 18D8 */ 0x8A3A, 0x8CD1, 0x8EEB, 0x8FB0, 0x9032, 0x93AD, 0x9663, 0x9673, -/* 18E0 */ 0x9707, 0x4F84, 0x53F1, 0x59EA, 0x5AC9, 0x5E19, 0x684E, 0x74C6, -/* 18E8 */ 0x75BE, 0x79E9, 0x7A92, 0x81A3, 0x86ED, 0x8CEA, 0x8DCC, 0x8FED, -/* 18F0 */ 0x659F, 0x6715, 0xF9FD, 0x57F7, 0x6F57, 0x7DDD, 0x8F2F, 0x93F6, -/* 18F8 */ 0x96C6, 0x5FB5, 0x61F2, 0x6F84, 0x4E14, 0x4F98, 0x501F, 0x53C9, -/* 1900 */ 0x55DF, 0x5D6F, 0x5DEE, 0x6B21, 0x6B64, 0x78CB, 0x7B9A, 0xF9FE, -/* 1908 */ 0x8E49, 0x8ECA, 0x906E, 0x6349, 0x643E, 0x7740, 0x7A84, 0x932F, -/* 1910 */ 0x947F, 0x9F6A, 0x64B0, 0x6FAF, 0x71E6, 0x74A8, 0x74DA, 0x7AC4, -/* 1918 */ 0x7C12, 0x7E82, 0x7CB2, 0x7E98, 0x8B9A, 0x8D0A, 0x947D, 0x9910, -/* 1920 */ 0x994C, 0x5239, 0x5BDF, 0x64E6, 0x672D, 0x7D2E, 0x50ED, 0x53C3, -/* 1928 */ 0x5879, 0x6158, 0x6159, 0x61FA, 0x65AC, 0x7AD9, 0x8B92, 0x8B96, -/* 1930 */ 0x5009, 0x5021, 0x5275, 0x5531, 0x5A3C, 0x5EE0, 0x5F70, 0x6134, -/* 1938 */ 0x655E, 0x660C, 0x6636, 0x66A2, 0x69CD, 0x6EC4, 0x6F32, 0x7316, -/* 1940 */ 0x7621, 0x7A93, 0x8139, 0x8259, 0x83D6, 0x84BC, 0x50B5, 0x57F0, -/* 1948 */ 0x5BC0, 0x5BE8, 0x5F69, 0x63A1, 0x7826, 0x7DB5, 0x83DC, 0x8521, -/* 1950 */ 0x91C7, 0x91F5, 0x518A, 0x67F5, 0x7B56, 0x8CAC, 0x51C4, 0x59BB, -/* 1958 */ 0x60BD, 0x8655, 0x501C, 0xF9FF, 0x5254, 0x5C3A, 0x617D, 0x621A, -/* 1960 */ 0x62D3, 0x64F2, 0x65A5, 0x6ECC, 0x7620, 0x810A, 0x8E60, 0x965F, -/* 1968 */ 0x96BB, 0x4EDF, 0x5343, 0x5598, 0x5929, 0x5DDD, 0x64C5, 0x6CC9, -/* 1970 */ 0x6DFA, 0x7394, 0x7A7F, 0x821B, 0x85A6, 0x8CE4, 0x8E10, 0x9077, -/* 1978 */ 0x91E7, 0x95E1, 0x9621, 0x97C6, 0x51F8, 0x54F2, 0x5586, 0x5FB9, -/* 1980 */ 0x64A4, 0x6F88, 0x7DB4, 0x8F1F, 0x8F4D, 0x9435, 0x50C9, 0x5C16, -/* 1988 */ 0x6CBE, 0x6DFB, 0x751B, 0x77BB, 0x7C3D, 0x7C64, 0x8A79, 0x8AC2, -/* 1990 */ 0x581E, 0x59BE, 0x5E16, 0x6377, 0x7252, 0x758A, 0x776B, 0x8ADC, -/* 1998 */ 0x8CBC, 0x8F12, 0x5EF3, 0x6674, 0x6DF8, 0x807D, 0x83C1, 0x8ACB, -/* 19A0 */ 0x9751, 0x9BD6, 0xFA00, 0x5243, 0x66FF, 0x6D95, 0x6EEF, 0x7DE0, -/* 19A8 */ 0x8AE6, 0x902E, 0x905E, 0x9AD4, 0x521D, 0x527F, 0x54E8, 0x6194, -/* 19B0 */ 0x6284, 0x62DB, 0x68A2, 0x6912, 0x695A, 0x6A35, 0x7092, 0x7126, -/* 19B8 */ 0x785D, 0x7901, 0x790E, 0x79D2, 0x7A0D, 0x8096, 0x8278, 0x82D5, -/* 19C0 */ 0x8349, 0x8549, 0x8C82, 0x8D85, 0x9162, 0x918B, 0x91AE, 0x4FC3, -/* 19C8 */ 0x56D1, 0x71ED, 0x77D7, 0x8700, 0x89F8, 0x5BF8, 0x5FD6, 0x6751, -/* 19D0 */ 0x90A8, 0x53E2, 0x585A, 0x5BF5, 0x60A4, 0x6181, 0x6460, 0x7E3D, -/* 19D8 */ 0x8070, 0x8525, 0x9283, 0x64AE, 0x50AC, 0x5D14, 0x6700, 0x589C, -/* 19E0 */ 0x62BD, 0x63A8, 0x690E, 0x6978, 0x6A1E, 0x6E6B, 0x76BA, 0x79CB, -/* 19E8 */ 0x82BB, 0x8429, 0x8ACF, 0x8DA8, 0x8FFD, 0x9112, 0x914B, 0x919C, -/* 19F0 */ 0x9310, 0x9318, 0x939A, 0x96DB, 0x9A36, 0x9C0D, 0x4E11, 0x755C, -/* 19F8 */ 0x795D, 0x7AFA, 0x7B51, 0x7BC9, 0x7E2E, 0x84C4, 0x8E59, 0x8E74, -/* 1A00 */ 0x8EF8, 0x9010, 0x6625, 0x693F, 0x7443, 0x51FA, 0x672E, 0x9EDC, -/* 1A08 */ 0x5145, 0x5FE0, 0x6C96, 0x87F2, 0x885D, 0x8877, 0x60B4, 0x81B5, -/* 1A10 */ 0x8403, 0x8D05, 0x53D6, 0x5439, 0x5634, 0x5A36, 0x5C31, 0x708A, -/* 1A18 */ 0x7FE0, 0x805A, 0x8106, 0x81ED, 0x8DA3, 0x9189, 0x9A5F, 0x9DF2, -/* 1A20 */ 0x5074, 0x4EC4, 0x53A0, 0x60FB, 0x6E2C, 0x5C64, 0x4F88, 0x5024, -/* 1A28 */ 0x55E4, 0x5CD9, 0x5E5F, 0x6065, 0x6894, 0x6CBB, 0x6DC4, 0x71BE, -/* 1A30 */ 0x75D4, 0x75F4, 0x7661, 0x7A1A, 0x7A49, 0x7DC7, 0x7DFB, 0x7F6E, -/* 1A38 */ 0x81F4, 0x86A9, 0x8F1C, 0x96C9, 0x99B3, 0x9F52, 0x5247, 0x52C5, -/* 1A40 */ 0x98ED, 0x89AA, 0x4E03, 0x67D2, 0x6F06, 0x4FB5, 0x5BE2, 0x6795, -/* 1A48 */ 0x6C88, 0x6D78, 0x741B, 0x7827, 0x91DD, 0x937C, 0x87C4, 0x79E4, -/* 1A50 */ 0x7A31, 0x5FEB, 0x4ED6, 0x54A4, 0x553E, 0x58AE, 0x59A5, 0x60F0, -/* 1A58 */ 0x6253, 0x62D6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99B1, 0x99DD, -/* 1A60 */ 0x502C, 0x5353, 0x5544, 0x577C, 0xFA01, 0x6258, 0xFA02, 0x64E2, -/* 1A68 */ 0x666B, 0x67DD, 0x6FC1, 0x6FEF, 0x7422, 0x7438, 0x8A17, 0x9438, -/* 1A70 */ 0x5451, 0x5606, 0x5766, 0x5F48, 0x619A, 0x6B4E, 0x7058, 0x70AD, -/* 1A78 */ 0x7DBB, 0x8A95, 0x596A, 0x812B, 0x63A2, 0x7708, 0x803D, 0x8CAA, -/* 1A80 */ 0x5854, 0x642D, 0x69BB, 0x5B95, 0x5E11, 0x6E6F, 0xFA03, 0x8569, -/* 1A88 */ 0x514C, 0x53F0, 0x592A, 0x6020, 0x614B, 0x6B86, 0x6C70, 0x6CF0, -/* 1A90 */ 0x7B1E, 0x80CE, 0x82D4, 0x8DC6, 0x90B0, 0x98B1, 0xFA04, 0x64C7, -/* 1A98 */ 0x6FA4, 0x6491, 0x6504, 0x514E, 0x5410, 0x571F, 0x8A0E, 0x615F, -/* 1AA0 */ 0x6876, 0xFA05, 0x75DB, 0x7B52, 0x7D71, 0x901A, 0x5806, 0x69CC, -/* 1AA8 */ 0x817F, 0x892A, 0x9000, 0x9839, 0x5078, 0x5957, 0x59AC, 0x6295, -/* 1AB0 */ 0x900F, 0x9B2A, 0x615D, 0x7279, 0x95D6, 0x5761, 0x5A46, 0x5DF4, -/* 1AB8 */ 0x628A, 0x64AD, 0x64FA, 0x6777, 0x6CE2, 0x6D3E, 0x722C, 0x7436, -/* 1AC0 */ 0x7834, 0x7F77, 0x82AD, 0x8DDB, 0x9817, 0x5224, 0x5742, 0x677F, -/* 1AC8 */ 0x7248, 0x74E3, 0x8CA9, 0x8FA6, 0x9211, 0x962A, 0x516B, 0x53ED, -/* 1AD0 */ 0x634C, 0x4F69, 0x5504, 0x6096, 0x6557, 0x6C9B, 0x6D7F, 0x724C, -/* 1AD8 */ 0x72FD, 0x7A17, 0x8987, 0x8C9D, 0x5F6D, 0x6F8E, 0x70F9, 0x81A8, -/* 1AE0 */ 0x610E, 0x4FBF, 0x504F, 0x6241, 0x7247, 0x7BC7, 0x7DE8, 0x7FE9, -/* 1AE8 */ 0x904D, 0x97AD, 0x9A19, 0x8CB6, 0x576A, 0x5E73, 0x67B0, 0x840D, -/* 1AF0 */ 0x8A55, 0x5420, 0x5B16, 0x5E63, 0x5EE2, 0x5F0A, 0x6583, 0x80BA, -/* 1AF8 */ 0x853D, 0x9589, 0x965B, 0x4F48, 0x5305, 0x530D, 0x530F, 0x5486, -/* 1B00 */ 0x54FA, 0x5703, 0x5E03, 0x6016, 0x629B, 0x62B1, 0x6355, 0xFA06, -/* 1B08 */ 0x6CE1, 0x6D66, 0x75B1, 0x7832, 0x80DE, 0x812F, 0x82DE, 0x8461, -/* 1B10 */ 0x84B2, 0x888D, 0x8912, 0x900B, 0x92EA, 0x98FD, 0x9B91, 0x5E45, -/* 1B18 */ 0x66B4, 0x66DD, 0x7011, 0x7206, 0xFA07, 0x4FF5, 0x527D, 0x5F6A, -/* 1B20 */ 0x6153, 0x6753, 0x6A19, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8C79, -/* 1B28 */ 0x98C7, 0x98C4, 0x9A43, 0x54C1, 0x7A1F, 0x6953, 0x8AF7, 0x8C4A, -/* 1B30 */ 0x98A8, 0x99AE, 0x5F7C, 0x62AB, 0x75B2, 0x76AE, 0x88AB, 0x907F, -/* 1B38 */ 0x9642, 0x5339, 0x5F3C, 0x5FC5, 0x6CCC, 0x73CC, 0x7562, 0x758B, -/* 1B40 */ 0x7B46, 0x82FE, 0x999D, 0x4E4F, 0x903C, 0x4E0B, 0x4F55, 0x53A6, -/* 1B48 */ 0x590F, 0x5EC8, 0x6630, 0x6CB3, 0x7455, 0x8377, 0x8766, 0x8CC0, -/* 1B50 */ 0x9050, 0x971E, 0x9C15, 0x58D1, 0x5B78, 0x8650, 0x8B14, 0x9DB4, -/* 1B58 */ 0x5BD2, 0x6068, 0x608D, 0x65F1, 0x6C57, 0x6F22, 0x6FA3, 0x701A, -/* 1B60 */ 0x7F55, 0x7FF0, 0x9591, 0x9592, 0x9650, 0x97D3, 0x5272, 0x8F44, -/* 1B68 */ 0x51FD, 0x542B, 0x54B8, 0x5563, 0x558A, 0x6ABB, 0x6DB5, 0x7DD8, -/* 1B70 */ 0x8266, 0x929C, 0x9677, 0x9E79, 0x5408, 0x54C8, 0x76D2, 0x86E4, -/* 1B78 */ 0x95A4, 0x95D4, 0x965C, 0x4EA2, 0x4F09, 0x59EE, 0x5AE6, 0x5DF7, -/* 1B80 */ 0x6052, 0x6297, 0x676D, 0x6841, 0x6C86, 0x6E2F, 0x7F38, 0x809B, -/* 1B88 */ 0x822A, 0xFA08, 0xFA09, 0x9805, 0x4EA5, 0x5055, 0x54B3, 0x5793, -/* 1B90 */ 0x595A, 0x5B69, 0x5BB3, 0x61C8, 0x6977, 0x6D77, 0x7023, 0x87F9, -/* 1B98 */ 0x89E3, 0x8A72, 0x8AE7, 0x9082, 0x99ED, 0x9AB8, 0x52BE, 0x6838, -/* 1BA0 */ 0x5016, 0x5E78, 0x674F, 0x8347, 0x884C, 0x4EAB, 0x5411, 0x56AE, -/* 1BA8 */ 0x73E6, 0x9115, 0x97FF, 0x9909, 0x9957, 0x9999, 0x5653, 0x589F, -/* 1BB0 */ 0x865B, 0x8A31, 0x61B2, 0x6AF6, 0x737B, 0x8ED2, 0x6B47, 0x96AA, -/* 1BB8 */ 0x9A57, 0x5955, 0x7200, 0x8D6B, 0x9769, 0x4FD4, 0x5CF4, 0x5F26, -/* 1BC0 */ 0x61F8, 0x665B, 0x6CEB, 0x70AB, 0x7384, 0x73B9, 0x73FE, 0x7729, -/* 1BC8 */ 0x774D, 0x7D43, 0x7D62, 0x7E23, 0x8237, 0x8852, 0xFA0A, 0x8CE2, -/* 1BD0 */ 0x9249, 0x986F, 0x5B51, 0x7A74, 0x8840, 0x9801, 0x5ACC, 0x4FE0, -/* 1BD8 */ 0x5354, 0x593E, 0x5CFD, 0x633E, 0x6D79, 0x72F9, 0x8105, 0x8107, -/* 1BE0 */ 0x83A2, 0x92CF, 0x9830, 0x4EA8, 0x5144, 0x5211, 0x578B, 0x5F62, -/* 1BE8 */ 0x6CC2, 0x6ECE, 0x7005, 0x7050, 0x70AF, 0x7192, 0x73E9, 0x7469, -/* 1BF0 */ 0x834A, 0x87A2, 0x8861, 0x9008, 0x90A2, 0x93A3, 0x99A8, 0x516E, -/* 1BF8 */ 0x5F57, 0x60E0, 0x6167, 0x66B3, 0x8559, 0x8E4A, 0x91AF, 0x978B, -/* 1C00 */ 0x4E4E, 0x4E92, 0x547C, 0x58D5, 0x58FA, 0x597D, 0x5CB5, 0x5F27, -/* 1C08 */ 0x6236, 0x6248, 0x660A, 0x6667, 0x6BEB, 0x6D69, 0x6DCF, 0x6E56, -/* 1C10 */ 0x6EF8, 0x6F94, 0x6FE0, 0x6FE9, 0x705D, 0x72D0, 0x7425, 0x745A, -/* 1C18 */ 0x74E0, 0x7693, 0x795C, 0x7CCA, 0x7E1E, 0x80E1, 0x82A6, 0x846B, -/* 1C20 */ 0x84BF, 0x864E, 0x865F, 0x8774, 0x8B77, 0x8C6A, 0x93AC, 0x9800, -/* 1C28 */ 0x9865, 0x60D1, 0x6216, 0x9177, 0x5A5A, 0x660F, 0x6DF7, 0x6E3E, -/* 1C30 */ 0x743F, 0x9B42, 0x5FFD, 0x60DA, 0x7B0F, 0x54C4, 0x5F18, 0x6C5E, -/* 1C38 */ 0x6CD3, 0x6D2A, 0x70D8, 0x7D05, 0x8679, 0x8A0C, 0x9D3B, 0x5316, -/* 1C40 */ 0x548C, 0x5B05, 0x6A3A, 0x706B, 0x7575, 0x798D, 0x79BE, 0x82B1, -/* 1C48 */ 0x83EF, 0x8A71, 0x8B41, 0x8CA8, 0x9774, 0xFA0B, 0x64F4, 0x652B, -/* 1C50 */ 0x78BA, 0x78BB, 0x7A6B, 0x4E38, 0x559A, 0x5950, 0x5BA6, 0x5E7B, -/* 1C58 */ 0x60A3, 0x63DB, 0x6B61, 0x6665, 0x6853, 0x6E19, 0x7165, 0x74B0, -/* 1C60 */ 0x7D08, 0x9084, 0x9A69, 0x9C25, 0x6D3B, 0x6ED1, 0x733E, 0x8C41, -/* 1C68 */ 0x95CA, 0x51F0, 0x5E4C, 0x5FA8, 0x604D, 0x60F6, 0x6130, 0x614C, -/* 1C70 */ 0x6643, 0x6644, 0x69A5, 0x6CC1, 0x6E5F, 0x6EC9, 0x6F62, 0x714C, -/* 1C78 */ 0x749C, 0x7687, 0x7BC1, 0x7C27, 0x8352, 0x8757, 0x9051, 0x968D, -/* 1C80 */ 0x9EC3, 0x532F, 0x56DE, 0x5EFB, 0x5F8A, 0x6062, 0x6094, 0x61F7, -/* 1C88 */ 0x6666, 0x6703, 0x6A9C, 0x6DEE, 0x6FAE, 0x7070, 0x736A, 0x7E6A, -/* 1C90 */ 0x81BE, 0x8334, 0x86D4, 0x8AA8, 0x8CC4, 0x5283, 0x7372, 0x5B96, -/* 1C98 */ 0x6A6B, 0x9404, 0x54EE, 0x5686, 0x5B5D, 0x6548, 0x6585, 0x66C9, -/* 1CA0 */ 0x689F, 0x6D8D, 0x6DC6, 0x723B, 0x80B4, 0x9175, 0x9A4D, 0x4FAF, -/* 1CA8 */ 0x5019, 0x539A, 0x540E, 0x543C, 0x5589, 0x55C5, 0x5E3F, 0x5F8C, -/* 1CB0 */ 0x673D, 0x7166, 0x73DD, 0x9005, 0x52DB, 0x52F3, 0x5864, 0x58CE, -/* 1CB8 */ 0x7104, 0x718F, 0x71FB, 0x85B0, 0x8A13, 0x6688, 0x85A8, 0x55A7, -/* 1CC0 */ 0x6684, 0x714A, 0x8431, 0x5349, 0x5599, 0x6BC1, 0x5F59, 0x5FBD, -/* 1CC8 */ 0x63EE, 0x6689, 0x7147, 0x8AF1, 0x8F1D, 0x9EBE, 0x4F11, 0x643A, -/* 1CD0 */ 0x70CB, 0x7566, 0x8667, 0x6064, 0x8B4E, 0x9DF8, 0x5147, 0x51F6, -/* 1CD8 */ 0x5308, 0x6D36, 0x80F8, 0x9ED1, 0x6615, 0x6B23, 0x7098, 0x75D5, -/* 1CE0 */ 0x5403, 0x5C79, 0x7D07, 0x8A16, 0x6B20, 0x6B3D, 0x6B46, 0x5438, -/* 1CE8 */ 0x6070, 0x6D3D, 0x7FD5, 0x8208, 0x50D6, 0x51DE, 0x559C, 0x566B, -/* 1CF0 */ 0x56CD, 0x59EC, 0x5B09, 0x5E0C, 0x6199, 0x6198, 0x6231, 0x665E, -/* 1CF8 */ 0x66E6, 0x7199, 0x71B9, 0x71BA, 0x72A7, 0x79A7, 0x7A00, 0x7FB2, -/* 1D00 */ 0x8A70, -/* End of table Total Length = 0x1F01 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/viscii.ut b/mozilla/lib/libi18n/unicode/utotbl/viscii.ut deleted file mode 100644 index ea61a68915a..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/viscii.ut +++ /dev/null @@ -1,137 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0007 - srcEnd = 0013 - destBegin = 0007 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 001F - srcEnd = 007F - destBegin = 001F -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0000 - srcEnd = 0006 - mappingOffset = 0000 - Mapping = - 0000 0001 1EB2 0003 0004 1EB4 1EAA -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0014 - srcEnd = 001E - mappingOffset = 0007 - Mapping = - 1EF6 0015 0016 0017 0018 1EF8 001A 001B - 001C 001D 1EF4 -End of Item 0003 - -Begin of Item 0004 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 0012 - Mapping = - 1EA0 1EAE 1EB0 1EB6 1EA4 1EA6 1EA8 1EAC - 1EBC 1EB8 1EBE 1EC0 1EC2 1EC4 1EC6 1ED0 - 1ED2 1ED4 1ED6 1ED8 1EE2 1EDA 1EDC 1EDE - 1ECA 1ECE 1ECC 1EC8 1EE6 0168 1EE4 1EF2 - 00D5 1EAF 1EB1 1EB7 1EA5 1EA7 1EA9 1EAD - 1EBD 1EB9 1EBF 1EC1 1EC3 1EC5 1EC7 1ED1 - 1ED3 1ED5 1ED7 1EE0 01A0 1ED9 1EDD 1EDF - 1ECB 1EF0 1EE8 1EEA 1EEC 01A1 1EDB 01AF - 00C0 00C1 00C2 00C3 1EA2 0102 1EB3 1EB5 - 00C8 00C9 00CA 1EBA 00CC 00CD 0128 1EF3 - 0110 1EE9 00D2 00D3 00D4 1EA1 1EF7 1EEB - 1EED 00D9 00DA 1EF9 1EF5 00DD 1EE1 01B0 - 00E0 00E1 00E2 00E3 1EA3 0103 1EEF 1EAB - 00E8 00E9 00EA 1EBB 00EC 00ED 0129 1EC9 - 0111 1EF1 00F2 00F3 00F4 00F5 1ECF 1ECD - 1EE5 00F9 00FA 0169 1EE7 00FD 1EE3 1EEE -End of Item 0004 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0005, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0015, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0003 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1100, 0x0001, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0007, 0x0013, 0x0007, -/* 0001 */ 0x001F, 0x007F, 0x001F, -/* 0002 */ 0x0000, 0x0006, 0x0000, -/* 0003 */ 0x0014, 0x001E, 0x0007, -/* 0004 */ 0x0080, 0x00FF, 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0015 Start of MappingTable */ - -/* 0000 */ 0x0000, 0x0001, 0x1EB2, 0x0003, 0x0004, 0x1EB4, 0x1EAA, 0x1EF6, -/* 0008 */ 0x0015, 0x0016, 0x0017, 0x0018, 0x1EF8, 0x001A, 0x001B, 0x001C, -/* 0010 */ 0x001D, 0x1EF4, 0x1EA0, 0x1EAE, 0x1EB0, 0x1EB6, 0x1EA4, 0x1EA6, -/* 0018 */ 0x1EA8, 0x1EAC, 0x1EBC, 0x1EB8, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, -/* 0020 */ 0x1EC6, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EE2, 0x1EDA, -/* 0028 */ 0x1EDC, 0x1EDE, 0x1ECA, 0x1ECE, 0x1ECC, 0x1EC8, 0x1EE6, 0x0168, -/* 0030 */ 0x1EE4, 0x1EF2, 0x00D5, 0x1EAF, 0x1EB1, 0x1EB7, 0x1EA5, 0x1EA7, -/* 0038 */ 0x1EA9, 0x1EAD, 0x1EBD, 0x1EB9, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, -/* 0040 */ 0x1EC7, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1EE0, 0x01A0, 0x1ED9, -/* 0048 */ 0x1EDD, 0x1EDF, 0x1ECB, 0x1EF0, 0x1EE8, 0x1EEA, 0x1EEC, 0x01A1, -/* 0050 */ 0x1EDB, 0x01AF, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x1EA2, 0x0102, -/* 0058 */ 0x1EB3, 0x1EB5, 0x00C8, 0x00C9, 0x00CA, 0x1EBA, 0x00CC, 0x00CD, -/* 0060 */ 0x0128, 0x1EF3, 0x0110, 0x1EE9, 0x00D2, 0x00D3, 0x00D4, 0x1EA1, -/* 0068 */ 0x1EF7, 0x1EEB, 0x1EED, 0x00D9, 0x00DA, 0x1EF9, 0x1EF5, 0x00DD, -/* 0070 */ 0x1EE1, 0x01B0, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x1EA3, 0x0103, -/* 0078 */ 0x1EEF, 0x1EAB, 0x00E8, 0x00E9, 0x00EA, 0x1EBB, 0x00EC, 0x00ED, -/* 0080 */ 0x0129, 0x1EC9, 0x0111, 0x1EF1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, -/* 0088 */ 0x1ECF, 0x1ECD, 0x1EE5, 0x00F9, 0x00FA, 0x0169, 0x1EE7, 0x00FD, -/* 0090 */ 0x1EE3, 0x1EEE, -/* End of table Total Length = 0x00A7 * 2 */ diff --git a/mozilla/lib/libi18n/unicode/utotbl/vps.ut b/mozilla/lib/libi18n/unicode/utotbl/vps.ut deleted file mode 100644 index e24d81e251d..00000000000 --- a/mozilla/lib/libi18n/unicode/utotbl/vps.ut +++ /dev/null @@ -1,147 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/*======================================================== - This is a Generated file. Please don't edit it. - - The tool which used to generate this file is called fromu. - If you have any problem of this file. Please contact - Netscape Client International Team or - ftang@netscape <Frank Tang> - - Table in Debug form -Begin of Item 0000 - Format 0 - srcBegin = 0007 - srcEnd = 000F - destBegin = 0007 -End of Item 0000 - -Begin of Item 0001 - Format 0 - srcBegin = 001E - srcEnd = 007F - destBegin = 001E -End of Item 0001 - -Begin of Item 0002 - Format 1 - srcBegin = 0000 - srcEnd = 001D - mappingOffset = 0000 - Mapping = - 0000 0001 1EA0 1EAC 1EB6 1EB8 1EC6 FFFD - FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD - 1ECA 1ECC 1ED8 1EE2 1EE4 1EF0 0016 0017 - 0018 1EF4 001A 001B 1EAA 1EEE -End of Item 0002 - -Begin of Item 0003 - Format 1 - srcBegin = 0080 - srcEnd = 00FF - mappingOffset = 001E - Mapping = - 00C0 1EA2 00C3 1EA4 1EA6 1EA8 1ECD 1ED7 - 0102 1EBF 1EC1 1EC3 1EC7 1EAE 1EB0 1EB2 - 1EBE 2018 2019 1EC0 1EC2 1EC4 1ED0 1ED2 - 1ED4 1ED6 00FD 1EF7 1EF5 1EDA 1EDC 1EDE - 00A0 1EAF 1EB1 1EB3 1EB5 1EB7 1EE0 1EDB - 00D9 1EDD 1EDF 1EE1 0168 1EE8 1EE3 1EEA - 1ED5 1EEC 1EF2 1EF8 00CD 00CC 1ED9 1EC8 - 0128 00D3 1EED 1EEF 00D2 1ECE 00D5 1EF1 - 1EA7 00C1 00C2 1EA5 1EA9 1EAB 1EAD 0111 - 1EBB 00C9 00CA 1EB9 1EC9 1EC5 1ECB 1EF9 - 01AF 1EE6 1ED3 1ED1 00D4 1ECF 01A1 00C8 - 1EEB 1EE9 00DA 0169 01B0 00DD 1EBA 00DF - 00E0 00E1 00E2 00E3 1EA3 1EA1 0103 00E7 - 00E8 00E9 00EA 1EBD 00EC 00ED 00EE 0129 - 1EB4 0110 00F2 00F3 00F4 00F5 00F6 01A0 - 1EE5 00F9 00FA 1EE7 00FC 1EF6 1EBC 1EF3 -End of Item 0003 - -========================================================*/ -/* Offset=0x0000 ItemOfList */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0001 offsetToFormatArray */ - 0x0004, -/*-------------------------------------------------------*/ -/* Offset=0x0002 offsetToMapCellArray */ - 0x0006, -/*-------------------------------------------------------*/ -/* Offset=0x0003 offsetToMappingTable */ - 0x0012, -/*-------------------------------------------------------*/ -/* Offset=0x0004 Start of Format Array */ -/* Total of Format 0 : 0x0002 */ -/* Total of Format 1 : 0x0002 */ -/* Total of Format 2 : 0x0000 */ -/* Total of Format 3 : 0x0000 */ - -0x1100, 0x0000, -/*-------------------------------------------------------*/ -/* Offset=0x0006 Start of MapCell Array */ -/* 0000 */ 0x0007, 0x000F, 0x0007, -/* 0001 */ 0x001E, 0x007F, 0x001E, -/* 0002 */ 0x0000, 0x001D, 0x0000, -/* 0003 */ 0x0080, 0x00FF, 0x001E, -/*-------------------------------------------------------*/ -/* Offset=0x0012 Start of MappingTable */ - -/* 0000 */ 0x0000, 0x0001, 0x1EA0, 0x1EAC, 0x1EB6, 0x1EB8, 0x1EC6, 0xFFFD, -/* 0008 */ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, -/* 0010 */ 0x1ECA, 0x1ECC, 0x1ED8, 0x1EE2, 0x1EE4, 0x1EF0, 0x0016, 0x0017, -/* 0018 */ 0x0018, 0x1EF4, 0x001A, 0x001B, 0x1EAA, 0x1EEE, 0x00C0, 0x1EA2, -/* 0020 */ 0x00C3, 0x1EA4, 0x1EA6, 0x1EA8, 0x1ECD, 0x1ED7, 0x0102, 0x1EBF, -/* 0028 */ 0x1EC1, 0x1EC3, 0x1EC7, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EBE, 0x2018, -/* 0030 */ 0x2019, 0x1EC0, 0x1EC2, 0x1EC4, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, -/* 0038 */ 0x00FD, 0x1EF7, 0x1EF5, 0x1EDA, 0x1EDC, 0x1EDE, 0x00A0, 0x1EAF, -/* 0040 */ 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EE0, 0x1EDB, 0x00D9, 0x1EDD, -/* 0048 */ 0x1EDF, 0x1EE1, 0x0168, 0x1EE8, 0x1EE3, 0x1EEA, 0x1ED5, 0x1EEC, -/* 0050 */ 0x1EF2, 0x1EF8, 0x00CD, 0x00CC, 0x1ED9, 0x1EC8, 0x0128, 0x00D3, -/* 0058 */ 0x1EED, 0x1EEF, 0x00D2, 0x1ECE, 0x00D5, 0x1EF1, 0x1EA7, 0x00C1, -/* 0060 */ 0x00C2, 0x1EA5, 0x1EA9, 0x1EAB, 0x1EAD, 0x0111, 0x1EBB, 0x00C9, -/* 0068 */ 0x00CA, 0x1EB9, 0x1EC9, 0x1EC5, 0x1ECB, 0x1EF9, 0x01AF, 0x1EE6, -/* 0070 */ 0x1ED3, 0x1ED1, 0x00D4, 0x1ECF, 0x01A1, 0x00C8, 0x1EEB, 0x1EE9, -/* 0078 */ 0x00DA, 0x0169, 0x01B0, 0x00DD, 0x1EBA, 0x00DF, 0x00E0, 0x00E1, -/* 0080 */ 0x00E2, 0x00E3, 0x1EA3, 0x1EA1, 0x0103, 0x00E7, 0x00E8, 0x00E9, -/* 0088 */ 0x00EA, 0x1EBD, 0x00EC, 0x00ED, 0x00EE, 0x0129, 0x1EB4, 0x0110, -/* 0090 */ 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x01A0, 0x1EE5, 0x00F9, -/* 0098 */ 0x00FA, 0x1EE7, 0x00FC, 0x1EF6, 0x1EBC, 0x1EF3, -/* End of table Total Length = 0x00B0 * 2 */ diff --git a/mozilla/lib/libi18n/unicpriv.h b/mozilla/lib/libi18n/unicpriv.h deleted file mode 100644 index 56709b8a7de..00000000000 --- a/mozilla/lib/libi18n/unicpriv.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#ifndef __UNIPRIV__ -#define __UNIPRIV__ - -#include "intlpriv.h" -#include "umap.h" -#include "ugen.h" - -typedef struct uTableSet uTableSet; -struct uTableSet -{ - uTable *tables[MAXINTERCSID]; - uShiftTable *shift[MAXINTERCSID]; - StrRangeMap range[MAXINTERCSID]; -}; - -MODULE_PRIVATE XP_Bool uMapCode(uTable *uT, uint16 in, uint16* out); -MODULE_PRIVATE XP_Bool uGenerate(uShiftTable *shift,int32* state, uint16 in, - unsigned char* out, uint32 outbuflen, uint32* outlen); -MODULE_PRIVATE XP_Bool uScan(uShiftTable *shift, int32 *state, unsigned char *in, - uint16 *out, uint32 inbuflen, uint32* inscanlen); -MODULE_PRIVATE XP_Bool UCS2_To_Other(uint16 ucs2, unsigned char *out, uint32 outbuflen, uint32* outlen,int16 *outcsid); -typedef void (*uMapIterateFunc)(uint16 ucs2, uint16 med, uint16 context); -MODULE_PRIVATE void uMapIterate(uTable *uT, uMapIterateFunc callback, uint16 context); - -MODULE_PRIVATE uShiftTable* InfoToShiftTable(unsigned char info); -MODULE_PRIVATE uShiftTable* GetShiftTableFromCsid(uint16 csid); -MODULE_PRIVATE UnicodeTableSet* GetUnicodeTableSet(uint16 csid); - - -#endif /* __UNIPRIV__ */ diff --git a/mozilla/lib/libi18n/unicvt.c b/mozilla/lib/libi18n/unicvt.c deleted file mode 100644 index fbc01a77c2e..00000000000 --- a/mozilla/lib/libi18n/unicvt.c +++ /dev/null @@ -1,1786 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* unicvrt.c - * --------- - * - * - * This file implements conversions from one Unicode format to another - * Unicode format. - * - * There are no conversions to/from other encodings. - * - * There are streams conversion between UTF8 and UCS2, and UTF8 and UTF7. - * It generates a DLL on Win 32, and at present, normal libraries on mac, X, and - * Win16. - */ - -#define _UNICVT_DLL_ 1 - -#include "intlpriv.h" -#include "unicpriv.h" -#include "xp.h" -#include <string.h> - -#ifdef XP_WIN32 -#define XP_ALLOC_PRIV malloc -#else -#define XP_ALLOC_PRIV XP_ALLOC -#endif - -typedef struct utf7_encoding_method_data { - int16 *fromb64; - unsigned char *tob64; - unsigned char *shift; - unsigned char startshift; - unsigned char endshift; -} utf7_encoding_method_data; - - -int32 -ucs2_to_utf8_buffer(const uint16 *ucs2p, int32 num_chars, - unsigned char *utf8p, int32 num_utf8_bytes, int32 *utf8_bytes_written); - - -/* Private Helper function prototypes */ - -PRIVATE int16 one_utf8_to_ucs2_char(const unsigned char *utf8p, const unsigned char *utf8endp, - uint16 *onecharp); - -PRIVATE int16 one_ucs2_to_utf8_char(unsigned char *tobufp, - unsigned char *tobufendp, uint16 onechar); - -PRIVATE unsigned char *intl_utf72utf8( CCCDataObject obj, - const unsigned char *utf7buf, - int32 utf7bufsz, - utf7_encoding_method_data* opt - ); -PRIVATE unsigned char *intl_utf82utf7( CCCDataObject obj, - const unsigned char *utf8buf, - int32 utf8bufsz, - utf7_encoding_method_data* opt - ); - - -PRIVATE uint16 pad_and_write(uint32 buffer, unsigned char *tobufp, - int16 bufferBitCount, utf7_encoding_method_data* opt); - -PRIVATE void swap_ucs2_bytes(unsigned char *ucsbuf, int32 ucsbufsz); - - -/* Private constants */ - -#define MAX_UCS2 0xFFFF -#define DEFAULT_CHAR 0x003F /* Default char is "?" */ -#define BYTE_MASK 0xBF -#define BYTE_MARK 0x80 - -#define MAX_ASCII 0x7F -#define NOT_BASE64 -1 - - - - - -/* Take care of different API for different platforms */ - - -#ifdef XP_WIN32 - -/* UNICVTAPI def now accomplished in libi18n.h */ -/*#define UNICVTAPI __declspec(dllexport)*/ - - -/* THIS #define IS VERY BAD AND SHOULD BE CHANGED WHEN WE REVISIT - * THE ERROR HANDLING STUFF AND MOVE IT ALL OUT OF XPSTR.H - * THE CALL SHOULD BE: extern int MK_OUT_OF_MEMORY; BUT WE HAVE - * CHICKEN AND EGG LINKING PROBLEMS ON WIN32 BECAUSE THE DLL - * MUST BE COMPILED BEFORE THE int IS DECLARED. - */ - -#define MK_OUT_OF_MEMORY -207 - -#else /* !XP_WIN32 */ - -/* UNICVTAPI def now accomplished in libi18n.h */ -/*#define UNICVTAPI*/ - -extern int MK_OUT_OF_MEMORY; - -#endif /*!XP_WIN32 */ - - - -/* UCS-2 to UTF-8 conversion routines */ - -/* - * mz_ucs2utf8 - * ----------- - * - * Takes a CCCDataObject, a buffer of UCS-2 data, and the size of that buffer. - * Allocates and returns the translation of the UCS-2 data in UTF-8. The caller - * is responsible for freeing the allocated memory. If the UCS-2 data is not - * complete, and ends on a character boundary, the extra byte of data is stored - * in uncvtbuf, and will be used the next time this function is called. - * - * Note about swapping: UCS-2 data can come in big-endian or little-endian - * order, so we need to be aware of the need to potentially swap the data. - * On the very first block of the stream we will discover (because UCS-2 - * always begins with a byte order mark) whether the data is of the same or - * opposite endian-ness from us. - * The information is store in FromCSID - * The use of uncvtbuf: - * uncvtbuf[0] is 0 or 1 - * uncvtbuf[0] == 0 - there are no left over last time - * uncvtbuf[0] == 1 - there one byte left over last time stored in uncvtbuf[1] - * - */ -MODULE_PRIVATE UNICVTAPI unsigned char * -mz_ucs2utf8( CCCDataObject obj, - const unsigned char *ucsbuf, /* UCS-2 buf for conv */ - int32 ucsbufsz) /* UCS-2 buf size in bytes */ -{ - int32 tobufsz; - unsigned char *tobuf = NULL; - unsigned char *tobufp, *tobufendp,*ucsp, *ucsendp; - int16 numUTF8bytes; - uint16 onechar; - XP_Bool needToSwap = FALSE; - int scanstate = 0; - unsigned p1=0, p2; - unsigned char *uncvtbuf =INTL_GetCCCUncvtbuf(obj); - - - if(INTL_GetCCCFromCSID(obj) == CS_UCS2_SWAP) - needToSwap = TRUE; - - /* Allocate Memory */ - /* In the worst case, one UCS2 could expand to three byte */ - /* so, the ration is 2:3 */ - tobufsz = (3*(ucsbufsz + 1)) / 2 + 2; - if ((tobuf = (unsigned char *)XP_ALLOC_PRIV(tobufsz)) == (unsigned char *)NULL) - { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - - /* do the set up */ - tobufendp = tobuf + tobufsz; /* point to the end of buffer */ - tobufp = tobuf; /* point to the begining of buffer */ - ucsp = (unsigned char *)ucsbuf; - ucsendp = (unsigned char *)ucsbuf + ucsbufsz; - - /* Get the unconvert byte */ - if(uncvtbuf[0] > 0) - { - p1 = uncvtbuf[1]; - scanstate++; - } - /* Do the conversion */ - while( ucsp < ucsendp ) - { - if(scanstate++ == 0) - { - p1 = *ucsp; - } - else - { - p2 = *ucsp; - scanstate = 0; - onechar = (p1 << 8) | (p2); - /* Look for (and strip) BYTE_ORDER_MARK */ - if(onechar == NEEDS_SWAP_MARK) - { - INTL_SetCCCFromCSID(obj, CS_UCS2_SWAP); - needToSwap = TRUE; - } - else if(onechar == BYTE_ORDER_MARK) - { - INTL_SetCCCFromCSID(obj, CS_UCS2); - needToSwap = FALSE; - } - else - { - if(needToSwap) - numUTF8bytes = one_ucs2_to_utf8_char(tobufp, tobufendp, - (uint16)((p2 << 8) | (p1))); - else - numUTF8bytes = one_ucs2_to_utf8_char(tobufp, tobufendp, onechar); - - if(numUTF8bytes == -1) - break; /* out of space in tobuf */ - - tobufp += numUTF8bytes; - } - } - ucsp ++; - } - *tobufp = '\0'; /* NULL terminate dest. data */ - INTL_SetCCCLen(obj, tobufp - tobuf); /* length of processed data, in bytes */ - - /* If there are left over, set it to uncvtbuf[1] */ - if((uncvtbuf[0] = scanstate) != 0) - uncvtbuf[1] = p1; - return(tobuf); -} - -/* UTF-8 to UCS-2 */ - - /* - * mz_utf82ucs - * ----------- - * - * This function takes a streams object, a buffer of utf8 data, and the - * size of that buffer. It allocates, fills, and returns a buffer of the - * equivalent UCS-2 data. The caller is responsible for freeing that - * data. If the UTF-8 data cannot be completely converted, the unconverted - * final bytes will be stored in uncvtbuf and used on the next call. - * - * Note: UCS-2 data must always begin with a byte order mark, so we - * must write that at the beginning of our stream. This function - * employs obj->cvtflag to determine if it is indeed at the beginning - * of the stream. obj->cvtflag starts at 0, and we switch it to 1 - * as we write the byte order mark. - * - * A note on endian-ness: This function will return UCS-2 data of the - * same endian-ness as the machine we are running on. To generate data - * of the opposite endian-ness, use mz_utf82ucsswap. - */ - - -MODULE_PRIVATE UNICVTAPI unsigned char * -mz_utf82ucs( CCCDataObject obj, - const unsigned char *utf8buf, /* UTF-8 buf for conv */ - int32 utf8bufsz) /* UTF-8 buf size in bytes */ - - -{ - - unsigned char *tobuf = NULL; - int32 tobufsz; - unsigned char *tobufp, *utf8p; /* current byte in bufs */ - unsigned char *tobufendp, *utf8endp; /* end of buffers */ - int32 uncvtlen; - unsigned char *uncvtbuf = INTL_GetCCCUncvtbuf(obj); - - - - uint16 onechar; - int16 numoctets; - - -#define ucsbufsz tobufsz -#define ucsbuf tobuf -#define ucsp tobufp -#define ucsendp tobufendp - /* Allocate a dest buffer: */ - - - /* At worst, all the octets are ASCII, and each 1 byte of UTF 8 - * will take 2 bytes of UCS-2, plus 2 for NULL termination (and - * possibly 2 for byte order mark) - */ - - uncvtlen = strlen((char *)uncvtbuf); - tobufsz = 2*(utf8bufsz + uncvtlen) + 4; - if (!tobufsz) { - return NULL; - } - - if ((tobuf = (unsigned char *)XP_ALLOC_PRIV(tobufsz)) == (unsigned char *)NULL) { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - - - /* Initialize pointers, etc. */ - utf8p = (unsigned char *)utf8buf; - utf8endp = utf8p + utf8bufsz - 1; /* leave room for NULL termination (as sentinel?)*/ - -#define uncvtp tobufp /* use tobufp as temp index for uncvtbuf */ - /* If prev. unconverted chars, append unconverted - * chars w/new chars and try to process. - */ - - if (uncvtbuf[0] != '\0') { - uncvtp = uncvtbuf + uncvtlen; - while (uncvtp < (uncvtbuf + UNCVTBUF_SIZE) && - utf8p <= utf8endp) - *uncvtp++ = *utf8p++; - - *uncvtp = '\0'; /* nul terminate as sentinel */ - utf8p = uncvtbuf; /* process unconverted first */ - utf8endp = uncvtp - 1; - - } - -#undef uncvtp - - tobufp = tobuf; - tobufendp = tobufp + tobufsz - 3; /* save space for terminating null */ - - /* write byte order mark */ - - if(!(INTL_GetCCCCvtflag(obj))) { - *((uint16 *) tobufp) = (uint16) BYTE_ORDER_MARK; - tobufp += 2; - INTL_SetCCCCvtflag(obj, TRUE); - } - - WHILELOOP: - - while( (tobufp <= tobufendp) && (utf8p <= utf8endp) ) { - - - numoctets = one_utf8_to_ucs2_char(utf8p, utf8endp, &onechar); - if(numoctets == -1) break; /* not enought utf8 data */ - utf8p += numoctets; - - - - /* Check to make sure there's space to write onechar */ - if((tobufp+2) >= tobufendp) break; - - *((uint16 *) tobufp) = (onechar <= MAX_UCS2 ? onechar : DEFAULT_CHAR); - - tobufp +=2; - - } - if(uncvtbuf[0] != '\0') { /* Just processed unconverted chars. - * ucsp points to 1st unprocessed char - * in ucsbuf. Some may have been - * processed while processing unconverted - * chars, so setup ptrs. not to process - * them twice. - */ - - /* If nothing was converted, there wasn't - * enough UCS-2 data. Stop and get more - * data. - */ - - if(utf8p == uncvtbuf) { /* nothing was converted */ - *tobufp = '\0'; - return(NULL); - } - utf8endp = (unsigned char *) utf8buf + utf8bufsz - 1; - utf8p = (unsigned char *) utf8buf + (utf8p - uncvtbuf - uncvtlen); - uncvtbuf[0] = '\0'; /* No more unconverted chars.*/ - goto WHILELOOP; /* Process new data */ - } - - *tobufp = '\0'; /* NULL terminate dest. data */ - - INTL_SetCCCLen(obj, tobufp - tobuf); /* length of processed data, in bytes */ - - if(utf8p <= utf8endp) { /* unconverted utf8 left? */ - tobufp = uncvtbuf; /* just using tobufp as a temp index. */ - while (utf8p <= utf8endp) - *tobufp++ = *utf8p++; - *tobufp = '\0'; /* NULL terminate, as a sentinel */ - } - - -#undef ucsbufsz -#undef ucsbuf -#undef ucsp -#undef ucsendp - - - return(tobuf); -} - - - -/* - * mz_utf82ucsswap - * --------------- - * - * mz_utf82ucs will convert the UTF-8 data to UCS-2 data of the same - * endian-ness of the platform the client is running on. Occasionally, - * this is not what is desired. mz_utf82ucsswap converts the UTF-8 - * data to UCS-2 of the opposite endian-ness. - */ - - -MODULE_PRIVATE UNICVTAPI unsigned char * -mz_utf82ucsswap( CCCDataObject obj, - const unsigned char *utf8buf, /* UTF-8 buf for conv */ - int32 utf8bufsz) /* UTF-8 buf size in bytes */ -{ - - unsigned char *result; - - result = mz_utf82ucs(obj, utf8buf, utf8bufsz); - swap_ucs2_bytes(result, INTL_GetCCCLen(obj)); - return(result); - -} - - -/* UTF-7 to UTF-8 conversion routines */ - - - - -/* mz_utf72utf8 - * ------------ - * - * Takes a streams object, a buffer of UTF-7 data, and the size of - * that buffer. Allocates, fills, and returns a buffer of UTF-8 - * data. (Its size is returned in the CCCDataObject.) The caller - * is responsible for freeing the returned buffer. - * - * Note: UTF-7 has the property that multiple characters of UTF-7 - * may make up a single character of UTF-8. Also, a single UTF-7 char - * may contribute bits to more than one utf8 character. If such a - * UTF-7 character is involved at the end of the current chunk, it won't - * be save-able in uncvtbuf. For this reason, we also need to - * save the bit buffer. It turns out that we also need to save the - * fact that we are within a shifted sequence, because there is no - * other way for that information to persist between chunks of a - * stream. If we save a buffer, then we are certainly in the middle - * of a shifted sequence, but even if there is no buffer to save, we - * may still be in a shifted sequence. - * - * The streams module gives me one int32 - obj->cvtflag - in which - * to save my state. This means that to save all my data, I'll need - * to do a few bit-wise operations. - * - * Arbitrarily, the top two bytes will hold the buffer, the next byte - * holds the count of relevant bits in the buffer, and the low order - * byte will hold 0 if we are not in a shiftSequence, 1 if we are. - * - * Since we will only save a buffer and bufferBitCount if we are - * in a shift sequence when this chunk terminates, obj->cvtflag == 0 - * when we do not terminate in a shift sequence. - */ - - -/* - tables for RFC1642- UTF7 -*/ - -PRIVATE int16 rfc1642_fromb64[128] = -{ - /* 0 */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - /* 10 */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - /* 20 */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - /* 30 */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - /* 40 */ -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, - /* 50 */ 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, - /* 60 */ -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, - /* 70 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - /* 80 */ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - /* 90 */ 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, - /* 100 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - /* 110 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 120 */ 49, 50, 51, -1, -1, -1, -1, -1 -}; -PRIVATE unsigned char rfc1642_tob64[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -PRIVATE unsigned char rfc1642_shift[128] = { -/* 0 1 2 3 4 5 6 7 */ -/* 8 9 A B C D E F */ -/* 0x00 */ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, -/* 0x08 */ TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, -/* 0x10 */ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, -/* 0x18 */ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, -/* 0x20 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x28 */ FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, -/* 0x30 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x38 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x40 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x48 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x50 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x58 */ FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, -/* 0x60 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x68 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x70 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x78 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE -}; - -PRIVATE utf7_encoding_method_data rfc1642_utf7 = { - rfc1642_fromb64, - rfc1642_tob64, - rfc1642_shift, - (unsigned char)'+', - (unsigned char)'-' -}; - - -/* - tables for RFC2060- IMAP4rev1 Mail Box Name -*/ -PRIVATE int16 rfc2060_fromb64[128] = -{ - /* 0 */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - /* 10 */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - /* 20 */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - /* 30 */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - /* 40 */ -1, -1, -1, 62, 63, -1, -1, -1, 52, 53, - /* 50 */ 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, - /* 60 */ -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, - /* 70 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - /* 80 */ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - /* 90 */ 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, - /* 100 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - /* 110 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 120 */ 49, 50, 51, -1, -1, -1, -1, -1 -}; -PRIVATE unsigned char rfc2060_tob64[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,"; -PRIVATE unsigned char rfc2060_shift[128] = { -/* 0 1 2 3 4 5 6 7 */ -/* 8 9 A B C D E F */ -/* 0x00 */ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, -/* 0x08 */ TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, -/* 0x10 */ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, -/* 0x18 */ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, -/* 0x20 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, -/* 0x28 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x30 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x38 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x40 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x48 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x50 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x58 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x60 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x68 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x70 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, -/* 0x78 */ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE -}; - -PRIVATE utf7_encoding_method_data rfc2060_utf7 = { - rfc2060_fromb64, - rfc2060_tob64, - rfc2060_shift, - (unsigned char)'&', - (unsigned char)'-' -}; - -MODULE_PRIVATE UNICVTAPI unsigned char * -mz_utf72utf8( CCCDataObject obj, - const unsigned char *utf7buf, /* UTF-7 buf for conv */ - int32 utf7bufsz) /* UTF-7 buf size in bytes */ -{ - return intl_utf72utf8(obj,utf7buf, utf7bufsz, &rfc1642_utf7); -} -MODULE_PRIVATE UNICVTAPI unsigned char * -mz_imap4utf72utf8( CCCDataObject obj, - const unsigned char *utf7buf, /* UTF-7 buf for conv */ - int32 utf7bufsz) /* UTF-7 buf size in bytes */ -{ - return intl_utf72utf8(obj,utf7buf, utf7bufsz, &rfc2060_utf7); -} - -PRIVATE unsigned char * -intl_utf72utf8( CCCDataObject obj, - const unsigned char *utf7buf, /* UTF-7 buf for conv */ - int32 utf7bufsz, /* UTF-7 buf size in bytes */ - utf7_encoding_method_data* opt) - -{ - - unsigned char *tobuf = NULL; - int32 tobufsz; - unsigned char *tobufp, *utf7p; /* current byte in bufs */ - unsigned char *tobufendp, *utf7endp; /* end of buffers */ - int32 uncvtlen; - - uint16 oneUCS2char; - unsigned char onechar; - int16 numoctets; - int16 mustnotshift = 0; - int16 inShiftSequence; - - uint32 buffer; - uint32 buffertemp = 0; - int16 bufferBitCount; - unsigned char *uncvtbuf = INTL_GetCCCUncvtbuf(obj); - - /* set up table to convert ASCII values of base64 chars to - * their base 64 value. If there is no conversion, use -1 as sentinel. - */ - - - /* initialize data saved from previous stream */ - - int32 flag = INTL_GetCCCCvtflag(obj); - inShiftSequence = flag & 1; - buffer = 0xFFFF0000 & flag; - bufferBitCount = (uint16) ((0x0000FF00 & flag) >> 8); - -#define utf8bufsz tobufsz -#define utf8buf tobuf -#define utf8p tobufp -#define utf8endp tobufendp - /* Allocate a dest buffer: */ - - - /* UTF-7 characters that are directly encoded will be one octet UTF-8 - * chars. Shifted chars will take 2.7 octets (plus shift in or out chars) - * to make 2 or 3 octet UTF-8 chars. So in the worst input, all the UTF-7 - * data would convert to 3 octet UTF-8 data, and we would need 1/9th as - * many UTF-7 characters, plus 1 to round up, plus 1 for NULL termination. - */ - - uncvtlen = strlen((char *)uncvtbuf); - tobufsz = (int32) (1.2*(utf7bufsz + uncvtlen) + 2); - - if ((tobuf = (unsigned char *)XP_ALLOC_PRIV(tobufsz)) == (unsigned char *)NULL) - { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - /* Initialize pointers, etc. */ - utf7p = (unsigned char *)utf7buf; - utf7endp = utf7p + utf7bufsz - 1; - -#define uncvtp tobufp /* use tobufp as temp index for uncvtbuf */ - /* If prev. unconverted chars, append unconverted - * chars w/new chars and try to process. - */ - - if (uncvtbuf[0] != '\0') - { - uncvtp = uncvtbuf + uncvtlen; - while (uncvtp < (uncvtbuf + UNCVTBUF_SIZE) && - utf7p <= utf7endp) - *uncvtp++ = *utf7p++; - - - *uncvtp = '\0'; /* nul terminate as sentinel */ - utf7p = uncvtbuf; /* process unconverted first */ - utf7endp = uncvtp - 1; - } -#undef uncvtp - - tobufp = tobuf; - tobufendp = tobufp + tobufsz - 2; - -WHILELOOP: - - while( (tobufp <= tobufendp) && (utf7p <= utf7endp) ) - { - - - onechar = *utf7p++; - - - /* If I'm not in the shift sequence, and I have the start symbol, - * absorb it and loop again. Otherwise, if I have a legal character - * for a non-shifted sequence, (ASCII) write it directly. This is - * ok, because ASCII is just ASCII in UTF-8, so don't need to worry - * about UCS-2 conversion. - */ - - if(!inShiftSequence) - { - - if(onechar == opt->startshift) - { - if(*utf7p == opt->endshift) - { - *tobufp++ = opt->startshift; - utf7p++; - } else inShiftSequence = TRUE; - continue; - } - - if(onechar <= MAX_ASCII) *tobufp++ = onechar; - else continue; - - } - else - { /* inShiftSequence is TRUE */ - - /* onechar is not a base64 allowable char if it is non-ASCII or - * if it is a non-base64 char from the ASCII set. - */ - mustnotshift = (onechar > MAX_ASCII || - (opt->fromb64[onechar] == NOT_BASE64)); - - /* If I'm in the shift sequence, and get the opt->endshift character, - * I want to absorb it and turn off shifting. If I get another - * non-shiftable character, I want to write it and turn off shifting. - * If I get an illegal character, I discard it and keep looping. - */ - - if(mustnotshift) - { - - if(!(onechar == opt->endshift)) - { - - if(onechar > MAX_ASCII) - continue; - - *tobufp++ = onechar; - } - - inShiftSequence = FALSE; - buffer = 0; /* flush buffer at end of shift sequence */ - bufferBitCount = 0; - - - } - else - { - - buffertemp = opt->fromb64[onechar] & 0x0000003F; /* grab 6-bit base64 char */ - buffer |= buffertemp << (26 - bufferBitCount); /* 26 is 32 - 6 bits */ - bufferBitCount += 6; - - /* Flush the buffer of a UCS-2 character (won't be more than one) */ - - if(bufferBitCount > 15) - { - - oneUCS2char = (int16) ((buffer & 0xFFFF0000) >> 16); - numoctets = one_ucs2_to_utf8_char(tobufp, tobufendp, oneUCS2char); - if(numoctets == -1) break; /* out of space in tobuf */ - tobufp += numoctets; - bufferBitCount -= 16; - buffer <<= 16; - } - - } - - } /* end of inShiftSequence == TRUE */ - - } /* end of conversion while loop */ - - - - if(uncvtbuf[0] != '\0') - { /* Just processed unconverted chars. - * ucsp points to 1st unprocessed char - * in ucsbuf. Some may have been - * processed while processing unconverted - * chars, so setup ptrs. not to process - * them twice. - */ - - /* If nothing was converted, there wasn't - * enough UCS-2 data. Stop and get more - * data. - */ - - if(utf7p == uncvtbuf) - { /* nothing was converted */ - *tobufp = '\0'; - INTL_SetCCCLen(obj, 0); - return(NULL); - } - - /* set up to read ucsbuf */ - utf7endp = (unsigned char *) utf7buf + utf7bufsz - 1; - utf7p = (unsigned char *) utf7buf + (utf7p - uncvtbuf - uncvtlen); - uncvtbuf[0] = '\0'; /* No more unconverted chars.*/ - goto WHILELOOP; /* Process new data */ - } - - - *tobufp = '\0'; /* NULL terminate dest. data */ - INTL_SetCCCLen(obj, tobufp - tobuf); /* length of processed data, in bytes */ - - /* If we're in a shift sequence, we need to save away our buffer - * and the buffer bit count (although if all that's left in the buffer - * is padding 0's, we don't need to worry about it and should reset - * the bitCount to 0.) - */ - - INTL_SetCCCCvtflag(obj,((inShiftSequence ? 1 : 0 ) | - (buffer & 0xFFFF0000) | - ((bufferBitCount << 8) & 0x0000FF00))); - - /* Now check for unconverted data from utf7p */ - if(utf7p <= utf7endp) - { - int l = utf7endp - utf7p + 1; - memcpy(uncvtbuf, utf7p, l); - uncvtbuf[l] = '\0'; - } - -#undef utf8bufsz -#undef utf8buf -#undef utf8p -#undef utf8endp - - return(tobuf); - -} - - -/* UTF-8 to UTF-7 */ - - - /* - * mz_utf82utf7 - * ------------ - * - * This function takes a CCCDataObject, a buffer of UTF-8 data, and the - * size of that buffer. It allocates and returns a buffer of the - * corresponding UTF-7 data (returning the size as a field in the - * CCCDataObject). The caller is responsible for freeing the returned - * data. If there are extra data at the end of the UTF-8 buffer which - * cannot be translated into UTF-7 (ie, an incomplete character), it - * will be saved in the uncvtbuf of the CCCDataObject and used on the - * next call. - * - * UTF-7 is a variant of base-64, and like base-64, it accumulates - * bits in a bit buffer, transforming them to UTF-7 chars when it - * has multiples of 6 bits. If the UTF-8 data being translated does - * not happen to terminate with a multiple of 6 bits, the final - * char will be padded with 0's, and the shift sequence terminated. - * For this reason, we will *never* be inside a shift sequence in - * between chunks of data. This may mean that the final stream of - * data has sequences that look like +[some UTF-7 data]-+[more data]-, - * with a plus immediately following a -. Although unconventional, - * this is in fact legal UTF-7. - * - * Finally, there are two formats of UTF-7, one extremely conservative - * fashion which shifts every character which could possibly be - * considered unsafe, and another which is somewhat more lax. Which - * of these is used is determined by obj->cvtflag. By default (cvtflag == 0) - * we employ the safer form of conversion. The differing characters - * are: !\"#$%&*;<=>@[]^_`{|} - */ -/* Tables */ - - -MODULE_PRIVATE UNICVTAPI unsigned char * -mz_utf82utf7( CCCDataObject obj, - const unsigned char *utf8buf, /* UTF-8 buf for conv */ - int32 utf8bufsz) /* UTF-8 buf size in bytes */ -{ - return intl_utf82utf7(obj,utf8buf, utf8bufsz, &rfc1642_utf7); -} -MODULE_PRIVATE UNICVTAPI unsigned char * -mz_utf82imap4utf7( CCCDataObject obj, - const unsigned char *utf8buf, /* UTF-8 buf for conv */ - int32 utf8bufsz) /* UTF-8 buf size in bytes */ -{ - return intl_utf82utf7(obj,utf8buf, utf8bufsz, &rfc2060_utf7); -} -PRIVATE unsigned char * -intl_utf82utf7( CCCDataObject obj, - const unsigned char *utf8buf, /* UTF-8 buf for conv */ - int32 utf8bufsz, /* UTF-8 buf size in bytes */ - utf7_encoding_method_data* opt) -{ - - - unsigned char *tobuf = NULL; - int32 tobufsz; - unsigned char *tobufp, *utf8p; /* current byte in bufs */ - unsigned char *tobufendp, *utf8endp; /* end of buffers */ - int32 uncvtlen; - unsigned char *uncvtbuf = INTL_GetCCCUncvtbuf(obj); - - - uint16 onechar; - int16 numoctets; - int16 inShiftSequence = FALSE; - int16 needToShift = FALSE; - uint32 buffer = 0; - uint32 buffertemp = 0; - int16 bufferBitCount = 0; - unsigned char oneBase64char; - - - -#define utf7bufsz tobufsz -#define utf7buf tobuf -#define utf7p tobufp -#define utf7endp tobufendp - - - /* Allocate a dest buffer: */ - - uncvtlen = strlen((char *)uncvtbuf); - tobufsz = 3*(utf8bufsz + uncvtlen) +1; - if (!tobufsz) { - return NULL; - } - - if ((tobuf = (unsigned char *)XP_ALLOC_PRIV(tobufsz)) == (unsigned char *)NULL) { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - /* Initialize pointers, etc. */ - utf8p = (unsigned char *)utf8buf; - utf8endp = utf8p + utf8bufsz - 1; /* leave room for NULL termination (as sentinel?)*/ - -#define uncvtp tobufp /* use tobufp as temp index for uncvtbuf */ - /* If prev. unconverted chars, append unconverted - * chars w/new chars and try to process. - */ - - if (uncvtbuf[0] != '\0') { - uncvtp = uncvtbuf + uncvtlen; - /* This is not leaving space for a NULL !!!!!!!!!!!! */ - while (uncvtp < (uncvtbuf + UNCVTBUF_SIZE) && - utf8p <= utf8endp) - *uncvtp++ = *utf8p++; - - *uncvtp = '\0'; /* nul terminate as sentinel */ - utf8p = uncvtbuf; /* process unconverted first */ - utf8endp = uncvtp - 1; - } -#undef uncvtp - - - tobufp = tobuf; - tobufendp = tobufp + tobufsz - 2; /* save space for terminating null*/ - - - - - WHILELOOP: - - while( (tobufp <= tobufendp) && (utf8p <= utf8endp) ) { - - /* convert one char's worth of utf8 to ucs2 */ - numoctets = one_utf8_to_ucs2_char(utf8p, utf8endp, &onechar); - if(numoctets == -1) break; /* out of input*/ - utf8p += numoctets; - - /* we need to be shifted if the character is non-ASCII or - * is an ASCII character that should be shifted. - */ - needToShift = (onechar > MAX_ASCII) || (opt->shift[onechar]); - - - if(!needToShift && inShiftSequence) { - - if(bufferBitCount > 0) { - if((tobufp+2) > tobufendp) break; - bufferBitCount = pad_and_write(buffer, tobufp, bufferBitCount, opt); - if (!bufferBitCount) { /* buffer successfully flushed */ - tobufp+=2; - buffer = 0; - } - - } else { - if((tobufp+1) > tobufendp) break; - *tobufp++ = opt->endshift; - } - inShiftSequence = FALSE; /* now just fallthrough to next case*/ - } - - if(!needToShift && !inShiftSequence) { - if((tobufp+1) > tobufendp) break; - *tobufp++ = (char) onechar; - } - - if(needToShift && !inShiftSequence) { - *tobufp++ = opt->startshift; - if(onechar == opt->startshift) { /* special-case behavior if onechar is a + */ - if((tobufp+1) > tobufendp) break; - *tobufp++ = opt->endshift; - } - else inShiftSequence = TRUE; - } - - if(needToShift && inShiftSequence) { - - buffertemp = onechar & 0x0000FFFF; - buffer |= buffertemp << (16 - bufferBitCount); - /* ^--16 is the size of the int32 minus - * the size of onechar */ - bufferBitCount += 16; - - - /* Flush the buffer of as many base64 characters as we can form */ - while(bufferBitCount>5) { - if(tobufp > tobufendp) break; - oneBase64char = (char) ((buffer & 0xFC000000) >> 26); - *tobufp++ = opt->tob64[oneBase64char]; - buffer <<= 6; - bufferBitCount -= 6; - } - } - - - } /* end of while loop */ - - - - if(uncvtbuf[0] != '\0') { /* Just processed unconverted chars. - * ucsp points to 1st unprocessed char - * in ucsbuf. Some may have been - * processed while processing unconverted - * chars, so setup ptrs. not to process - * them twice. - */ - - /* If nothing was converted, there wasn't - * enough UTF-8 data. Stop and get more - * data. - */ - - if(utf8p == uncvtbuf) { /* nothing was converted */ - *tobufp = '\0'; - return(NULL); - } - utf8endp = (unsigned char *) utf8buf + utf8bufsz - 1; - utf8p = (unsigned char *) utf8buf + (utf8p - uncvtbuf - uncvtlen); - uncvtbuf[0] = '\0'; /* No more unconverted chars.*/ - goto WHILELOOP; /* Process new data */ - } - - - /* Anything left in the buffer at this point should be padded with 0's - * and appended to tobuf. */ - - if(inShiftSequence) { - - if(bufferBitCount > 0) { - - if((tobufp+2) <= tobufendp) { - bufferBitCount = pad_and_write(buffer, tobufp, bufferBitCount, opt); - if (!bufferBitCount) { /* buffer successfully flushed */ - tobufp+=2; - buffer = 0; - } - } - - } else { - if((tobufp+1) <= tobufendp) *tobufp++ = opt->endshift; - } - - inShiftSequence = FALSE; - } - - - *tobufp = '\0'; /* NULL terminate dest. data */ - - - INTL_SetCCCLen(obj, tobufp - tobuf); /* length of processed data, in bytes */ - - if(utf8p <= utf8endp) { /* unconverted utf8 left? */ - tobufp = uncvtbuf; /* just using tobufp as a temp index. */ - while (utf8p <= utf8endp) - *tobufp++ = *utf8p++; - *tobufp = '\0'; /* NULL terminate, as a sentinel if nothing else.*/ - } - - -#undef utf7bufsz -#undef utf7buf -#undef utf7p -#undef utf7endp - - - return(tobuf); -} - - -/* Function: one_ucs2_to_utf8_char - * - * Function takes one UCS-2 char and writes it to a UTF-8 buffer. - * We need a UTF-8 buffer because we don't know before this - * function how many bytes of utf-8 data will be written. It also - * takes a pointer to the end of the UTF-8 buffer so that we don't - * overwrite data. This function returns the number of UTF-8 bytes - * of data written, or -1 if the buffer would have been overrun. - */ - -#define LINE_SEPARATOR 0x2028 -#define PARAGRAPH_SEPARATOR 0x2029 -PRIVATE int16 one_ucs2_to_utf8_char(unsigned char *tobufp, - unsigned char *tobufendp, uint16 onechar) - -{ - - int16 numUTF8bytes = 0; - - if((onechar == LINE_SEPARATOR)||(onechar == PARAGRAPH_SEPARATOR)) - { - strcpy((char*)tobufp, "\n"); - return strlen((char*)tobufp);; - } - - if (onechar < 0x80) { numUTF8bytes = 1; - } else if (onechar < 0x800) { numUTF8bytes = 2; - } else if (onechar <= MAX_UCS2) { numUTF8bytes = 3; - } else { numUTF8bytes = 2; - onechar = DEFAULT_CHAR; - } - - tobufp += numUTF8bytes; - - /* return error if we don't have space for the whole character */ - if (tobufp > tobufendp) { - return(-1); - } - - - switch(numUTF8bytes) { - - case 3: *--tobufp = (onechar | BYTE_MARK) & BYTE_MASK; onechar >>=6; - *--tobufp = (onechar | BYTE_MARK) & BYTE_MASK; onechar >>=6; - *--tobufp = onechar | THREE_OCTET_BASE; - break; - - case 2: *--tobufp = (onechar | BYTE_MARK) & BYTE_MASK; onechar >>=6; - *--tobufp = onechar | TWO_OCTET_BASE; - break; - case 1: *--tobufp = (unsigned char)onechar; break; - } - - return(numUTF8bytes); -} - - -/* - * utf8_to_ucs2_char - * - * Convert a utf8 multibyte character to ucs2 - * - * inputs: pointer to utf8 character(s) - * length of utf8 buffer ("read" length limit) - * pointer to return ucs2 character - * - * outputs: number of bytes in the utf8 character - * -1 if not a valid utf8 character sequence - * -2 if the buffer is too short - */ -MODULE_PRIVATE UNICVTAPI int16 -utf8_to_ucs2_char(const unsigned char *utf8p, int16 buflen, uint16 *ucs2p) -{ - uint16 lead, cont1, cont2; - - /* - * Check for minimum buffer length - */ - if ((buflen < 1) || (utf8p == NULL)) { - return -2; - } - lead = (uint16) (*utf8p); - - /* - * Check for a one octet sequence - */ - if (IS_UTF8_1ST_OF_1(lead)) { - *ucs2p = lead & ONE_OCTET_MASK; - return 1; - } - - /* - * Check for a two octet sequence - */ - if (IS_UTF8_1ST_OF_2(*utf8p)) { - if (buflen < 2) - return -2; - cont1 = (uint16) *(utf8p+1); - if (!IS_UTF8_2ND_THRU_6TH(cont1)) - return -1; - *ucs2p = (lead & TWO_OCTET_MASK) << 6; - *ucs2p |= cont1 & CONTINUING_OCTET_MASK; - return 2; - } - - /* - * Check for a three octet sequence - */ - else if (IS_UTF8_1ST_OF_3(lead)) { - if (buflen < 3) - return -2; - cont1 = (uint16) *(utf8p+1); - cont2 = (uint16) *(utf8p+2); - if ( (!IS_UTF8_2ND_THRU_6TH(cont1)) - || (!IS_UTF8_2ND_THRU_6TH(cont2))) - return -1; - *ucs2p = (lead & THREE_OCTET_MASK) << 12; - *ucs2p |= (cont1 & CONTINUING_OCTET_MASK) << 6; - *ucs2p |= cont2 & CONTINUING_OCTET_MASK; - return 3; - } - else { /* not a valid utf8/ucs2 character */ - return -1; - } -} - -UNICVTAPI int32 -INTL_NumUTF8Chars(const unsigned char *utf8p) -{ - int num_chars = 0; - - while (*utf8p) { - /* - * Check for a one octet sequence - */ - if (IS_UTF8_1ST_OF_1(*utf8p)) { - num_chars += 1; - utf8p += 1; - continue; - } - - /* - * Check for a two octet sequence - */ - else if (IS_UTF8_1ST_OF_2(*utf8p) - && IS_UTF8_2ND_THRU_6TH(*(utf8p+1))) { - num_chars += 2; - utf8p += 2; - continue; - } - - /* - * Check for a three octet sequence - */ - else if (IS_UTF8_1ST_OF_3(*utf8p) - && IS_UTF8_2ND_THRU_6TH(*(utf8p+1)) - && IS_UTF8_2ND_THRU_6TH(*(utf8p+2))) { - num_chars += 3; - utf8p += 3; - continue; - } - - /* - * Not UTF8 : just muddle forward - */ - else { - num_chars += 1; - utf8p += 1; - } - - } - - return num_chars; -} - -PUBLIC UNICVTAPI uint16 * -INTL_UTF8ToUCS2(const unsigned char *utf8p, int32 *num_chars) -{ - uint16 *ucs2_chars; - int32 num_utf8_chars, ucs2_len, num_ucs2_chars; - int parse_cnt, inval_cnt; - - /* - * Figure the number of chars - */ - num_utf8_chars = INTL_NumUTF8Chars(utf8p); - ucs2_len = num_utf8_chars*2; - ucs2_chars = (uint16 *)XP_ALLOC_PRIV(ucs2_len + 2); - if (!ucs2_chars) return NULL; - /* - - * Do the conversion - */ - num_ucs2_chars = utf8_to_ucs2_buffer(utf8p, strlen((char*)utf8p), - &parse_cnt, &inval_cnt, ucs2_chars, ucs2_len); - ucs2_chars[num_ucs2_chars] = 0; /* null terminator */ - - /* - * return the result - */ - if (num_ucs2_chars > 0) - *num_chars = num_ucs2_chars; - else - *num_chars = 0; - return ucs2_chars; -} - -PUBLIC UNICVTAPI unsigned char * -INTL_UCS2ToUTF8(const uint16 *ucs2p, int32 num_chars) -{ - unsigned char *utf8_chars; - int32 num_utf8_bytes, num_bytes_written, dummy; - int i; - - /* - * Figure the number of bytes for the utf8 string - */ - num_utf8_bytes =0; - for (i=0; i<num_chars; i++) { - if (ucs2p[i] <= 0x7F) /* 0-0x7f only need one byte */ - num_utf8_bytes += 1; - else if (ucs2p[i] <= 0x3FF) /* 0x80-0x3ff only need two bytes */ - num_utf8_bytes += 2; - else /* 0x400-0xffff need three bytes */ - num_utf8_bytes += 3; - } - utf8_chars = (unsigned char *)XP_ALLOC_PRIV(num_utf8_bytes + 1); - if (!utf8_chars) return NULL; - XP_MEMSET(utf8_chars, 0, num_utf8_bytes + 1); - - /* - * Do the conversion - */ - num_bytes_written = ucs2_to_utf8_buffer(ucs2p, num_chars, utf8_chars, - num_utf8_bytes, &dummy); - /* - * return the result - */ - return utf8_chars; -} - -/* - * ucs2_to_utf8_buffer - * - * Convert a ucs2 buffer to a utf8 multibyte character string - * - * inputs: - * pointer to return ucs2 buffer - * length of ucs2 buffer ("read" length limit) - * pointer to utf8 character(s) - * length of utf8 buffer ("write" length limit) - * - * outputs: returns number of charecters "read" from the ucs2 string - * sets *num_bytes_written to # of utf8 characters "written" - */ -int32 -ucs2_to_utf8_buffer(const uint16 *ucs2p, int32 num_chars, - unsigned char *utf8p, int32 num_utf8_bytes, int32 *utf8_bytes_written) -{ - int i; - - /* - * Init values - */ - *utf8_bytes_written = 0; - - - /* - * Convert the data - */ - for (i=0; i<num_chars; i++) { - if (ucs2p[i] <= 0x7F) { /* 0-0x7f only need one byte */ - if (num_utf8_bytes < 1) - break; - utf8p[*utf8_bytes_written] = (unsigned char)ucs2p[i]; - num_utf8_bytes -= 1; - *utf8_bytes_written += 1; - } - else if (ucs2p[i] <= 0x3FF) { /* 0x80-0x3ff only need two bytes */ - if (num_utf8_bytes < 2) - break; - utf8p[*utf8_bytes_written+0] = (unsigned char) - (TWO_OCTET_BASE | ((ucs2p[i]>>6)&TWO_OCTET_MASK)); - utf8p[*utf8_bytes_written+1] = (unsigned char) - (CONTINUING_OCTET_BASE | (ucs2p[i]&CONTINUING_OCTET_MASK)); - num_utf8_bytes -= 2; - *utf8_bytes_written += 2; - } - else { /* 0x400-0xffff need three bytes */ - if (num_utf8_bytes < 3) - break; - utf8p[*utf8_bytes_written+0] = (unsigned char) - (THREE_OCTET_BASE | ((ucs2p[i]>>12)&THREE_OCTET_MASK)); - utf8p[*utf8_bytes_written+1] = (unsigned char) - (CONTINUING_OCTET_BASE | ((ucs2p[i]>>6)&CONTINUING_OCTET_MASK)); - utf8p[*utf8_bytes_written+2] = (unsigned char) - (CONTINUING_OCTET_BASE | (ucs2p[i]&CONTINUING_OCTET_MASK)); - num_utf8_bytes -= 3; - *utf8_bytes_written += 3; - } - } - - return i; -} - -/* - * utf8_to_ucs2_buffer - * - * Convert a utf8 multibyte character string and place in a ucs2 buffer - * - * inputs: pointer to utf8 character(s) - * length of utf8 buffer ("read" length limit) - * pointer to return ucs2 buffer - * length of ucs2 buffer ("write" length limit) - * pointer to return count of invalid bytes - * - * outputs: returns number of bytes "read" from the utf8 string - * sets *invalid_cnt to # of invalid utf8 characters "read" - */ -UNICVTAPI int32 -utf8_to_ucs2_buffer(const unsigned char *utf8p, int16 utf8len, - int *parsed_cnt, int *invalid_cnt, - uint16 *ucs2p, int32 ucs2len) -{ - int read_len, write_len; - int char_len; - - /* - * Init the return values - */ - *parsed_cnt = 0; - *invalid_cnt = 0; - - /* - * Check for minimum buffer lengths - */ - if ((utf8len < 1) || (utf8p == NULL) - || (ucs2len < 1) || (ucs2p == NULL)) { - return 0; - } - - /* - * Do the conversion - */ - for (read_len=0,write_len=0; - (read_len<utf8len) && (write_len<ucs2len); - read_len +=char_len) - { - char_len = utf8_to_ucs2_char(utf8p+read_len, utf8len-read_len, - (uint16*)ucs2p+write_len); - if (char_len == -1) { /* invalid character */ - *invalid_cnt += 1; - char_len = 1; /* try to resynchronize */ - *(ucs2p+write_len) = *(utf8p+read_len); - } - else if (char_len == -2) { /* buffer too short for last char */ - /* return with what we have so far */ - break; - } - /* - * Note we converted one - */ - *parsed_cnt += char_len; - write_len += 1; - } - return write_len; -} - -/* Function: one_utf8_to_ucs2_char - * - * Converts one UTF8 char to one UCS2 char. Needs to get UTF-8 from a - * buffer of utf8 data, because we don't know how many octets it will - * be, not before this function is called. Take a pointer to the end of that - * buffer to make sure we don't run past it. Put the resulting UCS-2 - * char into an int16 we're given a pointer to. Returns the number of - * octets used in the utf-8 char we converted, and returns -1 if it - * runs out of utf-8 data without a complete UCS-2 character. - */ -PRIVATE int16 one_utf8_to_ucs2_char(const unsigned char *utf8p, const unsigned char *utf8endp, - uint16 *onecharp) -{ - - int16 i, numoctets; - uint32 ucs4 = 0; - *onecharp = 0; - - if(*utf8p >= THREE_OCTET_BASE) numoctets = 3; - else if (*utf8p >= TWO_OCTET_BASE) numoctets = 2; - else numoctets = 1; - - /* See if all the data for the char is there */ - if ((utf8p + numoctets - 1) > utf8endp) { - return (-1); - } - - - for(i=numoctets; i>0; i--) { - ucs4 += *utf8p++; - if (i == 1) break; - ucs4 <<= 6; - } - - switch(numoctets) { - - case 3: ucs4 -= 0x000E2080UL; break; /* truncating... */ - case 2: ucs4 -= 0x00003080UL; break; - } - *onecharp= (uint16)(ucs4 & 0x0000FFFFUL); - return(numoctets); -} - - -/* - * Internal Function: pad_and_write - * Checks to make sure there is less than one full base64 character in the - * buffer, pad it with 0 to make up a full base64 character, write that - * to tobuf, and write the shift termination character. (-) - */ - -PRIVATE uint16 pad_and_write(uint32 buffer, unsigned char *tobufp, - int16 bufferBitCount, utf7_encoding_method_data* opt) - - -{ - int16 oneBase64char; - - if(bufferBitCount >= 6) return(bufferBitCount); - oneBase64char = ((unsigned char) (buffer >> 26)); - *tobufp++ = opt->tob64[oneBase64char]; - *tobufp = opt->endshift; - return(0); -} - - -/* Function: swap_ucs2_bytes - * - * Takes a buffer of ucs2 chars, and its size in *bytes*. - * - * This function is meant to cope with the problem that sometimes - * UCS-2 data (because of the big-endian, little-endian problem?) - * comes in in reversed order, and needs to be swapped to be - * dealt with appropriately. - * - * This case can be detected at the very beginning of the stream, - * because the first two bytes of any UCS-2 stream should be the - * Byte Order Mark, or 0xFEFF. If instead you see 0xFFFE, you know - * you need to swap. Neither of these are legal UCS-2 characters - * otherwise, so you know that there is no danger of accidentally - * triggering swapping with a legitimate UCS-2 stream. - * Unfortunately, this marker is only present at the very beginning - * of a stream; future chunks of the stream won't have the marker. - * So if we ever detect that a stream needs to be swapped, we - * save that information by turning on the obj->cvtflag. If, on - * future chunks, we see that that flag is turned on, we'll go - * ahead and swap. - * Notice that if swapping is unnecessary, this function has - * no effect whatsoever. - */ -PRIVATE void swap_ucs2_bytes(unsigned char *ucsbuf, int32 ucsbufsz) -{ - - int32 i; - unsigned char swapTemp = 0; - - if(ucsbufsz%2) ucsbufsz--; - - for(i=0; i<ucsbufsz; i+=2) { - - swapTemp = ucsbuf[i]; - ucsbuf[i] = ucsbuf[i+1]; - ucsbuf[i+1] = swapTemp; - - } - return; -} - - - - - - - -/* UCS-2 to UTF-7 jliu */ - - - /* - * mz_ucs2utf7 - * ------------ - * - * This function takes a CCCDataObject, a buffer of UCS-2 data, and the - * size of that buffer. It allocates and returns a buffer of the - * corresponding UTF-7 data (returning the size as a field in the - * CCCDataObject). The caller is responsible for freeing the returned - * data. If there are extra data at the end of the UTF-8 buffer which - * cannot be translated into UTF-7 (ie, an incomplete character), it - * will be saved in the uncvtbuf of the CCCDataObject and used on the - * next call. - * - * UTF-7 is a variant of base-64, and like base-64, it accumulates - * bits in a bit buffer, transforming them to UTF-7 chars when it - * has multiples of 6 bits. If the UTF-8 data being translated does - * not happen to terminate with a multiple of 6 bits, the final - * char will be padded with 0's, and the shift sequence terminated. - * For this reason, we will *never* be inside a shift sequence in - * between chunks of data. This may mean that the final stream of - * data has sequences that look like +[some UTF-7 data]-+[more data]-, - * with a plus immediately following a -. Although unconventional, - * this is in fact legal UTF-7. - * - * Finally, there are two formats of UTF-7, one extremely conservative - * fashion which shifts every character which could possibly be - * considered unsafe, and another which is somewhat more lax. Which - * of these is used is determined by obj->cvtflag. By default (cvtflag == 0) - * we employ the safer form of conversion. The differing characters - * are: !\"#$%&*;<=>@[]^_`{|} - */ -/* Tables */ - - -MODULE_PRIVATE UNICVTAPI unsigned char * -mz_ucs2utf7( CCCDataObject obj, - const unsigned char *ucs2buf, /* UTF-8 buf for conv */ - int32 ucs2bufsz) /* UTF-8 buf size in bytes */ -{ - utf7_encoding_method_data* opt = &rfc1642_utf7; - unsigned char *tobuf = NULL; - int32 tobufsz; - unsigned char *tobufp, *ucs2p; /* current byte in bufs */ - unsigned char *tobufendp, *ucs2endp; /* end of buffers */ - int32 uncvtlen = 0; - unsigned char *uncvtbuf = INTL_GetCCCUncvtbuf(obj); - - - uint16 onechar; - int16 inShiftSequence = FALSE; - int16 needToShift = FALSE; - uint32 buffer = 0; - uint32 buffertemp = 0; - int16 bufferBitCount = 0; - unsigned char oneBase64char; - XP_Bool needToSwap = FALSE; - - - if( INTL_GetCCCFromCSID( obj ) == CS_UCS2_SWAP ) - needToSwap = TRUE; - - - /* Allocate a dest buffer: - ** in the worst case, every Unicode character will cost 2+4 = 6 octetes - */ - - uncvtlen = uncvtbuf[0]; - tobufsz = 6*( (ucs2bufsz + uncvtlen)/2 + 1 ) + 1; - if (!tobufsz) { - return NULL; - } - - if ((tobuf = (unsigned char *)XP_ALLOC_PRIV(tobufsz)) == (unsigned char *)NULL) { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - /* Initialize pointers, etc. */ - ucs2p = (unsigned char *)ucs2buf; - ucs2endp = ucs2p + ucs2bufsz - 1; /* leave room for NULL termination (as sentinel?)*/ - - tobufp = tobuf; - tobufendp = tobufp + tobufsz - 2; /* save space for terminating null*/ - - - while( (tobufp <= tobufendp) && (ucs2p < ucs2endp) ) { - - if( uncvtbuf[0] != 0 ){ - onechar = uncvtbuf[1]; - uncvtbuf[0] = 0; - } else - onechar = *ucs2p++; - onechar <<= 8; - onechar |= *ucs2p++; - - /* do the swap stuff */ - - if( onechar == NEEDS_SWAP_MARK ){ - INTL_SetCCCFromCSID( obj, CS_UCS2_SWAP ); - needToSwap = TRUE; - continue; - } else if( onechar == BYTE_ORDER_MARK ){ - INTL_SetCCCFromCSID( obj, CS_UCS2 ); - needToSwap = FALSE; - continue; - } - - if( needToSwap ){ - onechar = ( onechar << 8 ) | ( onechar >> 8 ); - } - - /* we need to be shifted if the character is non-ASCII or - * is an ASCII character that should be shifted. - */ - needToShift = (onechar > MAX_ASCII) || (opt->shift[onechar]); - - - if(!needToShift && inShiftSequence) { - - if(bufferBitCount > 0) { - if((tobufp+2) > tobufendp) break; - bufferBitCount = pad_and_write(buffer, tobufp, bufferBitCount, opt); - if (!bufferBitCount) { /* buffer successfully flushed */ - tobufp+=2; - buffer = 0; - } - - } else { - if((tobufp+1) > tobufendp) break; - *tobufp++ = opt->endshift; - } - inShiftSequence = FALSE; /* now just fallthrough to next case*/ - } - - if(!needToShift && !inShiftSequence) { - if((tobufp+1) > tobufendp) break; - *tobufp++ = (char) onechar; - } - - if(needToShift && !inShiftSequence) { - *tobufp++ = opt->startshift; - if(onechar == opt->startshift) { /* special-case behavior if onechar is a + */ - if((tobufp+1) > tobufendp) break; - *tobufp++ = opt->endshift; - } - else inShiftSequence = TRUE; - } - - if(needToShift && inShiftSequence) { - - buffertemp = onechar & 0x0000FFFF; - buffer |= buffertemp << (16 - bufferBitCount); - /* ^--16 is the size of the int32 minus - * the size of onechar */ - bufferBitCount += 16; - - - /* Flush the buffer of as many base64 characters as we can form */ - while(bufferBitCount>5) { - if(tobufp > tobufendp) break; - oneBase64char = (char) ((buffer & 0xFC000000) >> 26); - *tobufp++ = opt->tob64[oneBase64char]; - buffer <<= 6; - bufferBitCount -= 6; - } - } - - - } /* end of while loop */ - - - - /* Anything left in the buffer at this point should be padded with 0's - * and appended to tobuf. */ - - if(inShiftSequence) { - - if(bufferBitCount > 0) { - - if((tobufp+2) <= tobufendp) { - bufferBitCount = pad_and_write(buffer, tobufp, bufferBitCount, opt); - if (!bufferBitCount) { /* buffer successfully flushed */ - tobufp+=2; - buffer = 0; - } - } - - } else { - if((tobufp+1) <= tobufendp) *tobufp++ = opt->endshift; - } - - inShiftSequence = FALSE; - } - - - *tobufp = '\0'; /* NULL terminate dest. data */ - - - INTL_SetCCCLen(obj, tobufp - tobuf); /* length of processed data, in bytes */ - - if(ucs2p <= ucs2endp) { /* unconverted ucs2 left? */ - uncvtbuf[0] = 1; - uncvtbuf[1] = *ucs2endp; - } else - uncvtbuf[0] = 0; - - - return(tobuf); -} - diff --git a/mozilla/lib/libi18n/uscan.c b/mozilla/lib/libi18n/uscan.c deleted file mode 100644 index fc26955baa9..00000000000 --- a/mozilla/lib/libi18n/uscan.c +++ /dev/null @@ -1,368 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -#include "intlpriv.h" -#include "ugen.h" -#include "xp.h" -/*================================================================================= - -=================================================================================*/ -typedef XP_Bool (*uSubScannerFunc) (unsigned char* in, uint16* out); -/*================================================================================= - -=================================================================================*/ - -typedef XP_Bool (*uScannerFunc) ( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -); - -MODULE_PRIVATE XP_Bool uScan( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -); - -#define uSubScanner(sub,in,out) (* m_subscanner[sub])((in),(out)) - -PRIVATE XP_Bool uCheckAndScanAlways1Byte( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -); -PRIVATE XP_Bool uCheckAndScanAlways2Byte( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -); -PRIVATE XP_Bool uCheckAndScanAlways2ByteShiftGR( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -); -PRIVATE XP_Bool uCheckAndScanByTable( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -); -PRIVATE XP_Bool uCheckAndScan2ByteGRPrefix8F( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -); -PRIVATE XP_Bool uCheckAndScan2ByteGRPrefix8EA2( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -); - - -PRIVATE XP_Bool uScanAlways2Byte( - unsigned char* in, - uint16* out -); -PRIVATE XP_Bool uScanAlways2ByteShiftGR( - unsigned char* in, - uint16* out -); -PRIVATE XP_Bool uScanAlways1Byte( - unsigned char* in, - uint16* out -); -PRIVATE XP_Bool uScanAlways1BytePrefix8E( - unsigned char* in, - uint16* out -); -PRIVATE XP_Bool uScanAlways2ByteUTF8( - unsigned char* in, - uint16* out -); -PRIVATE XP_Bool uScanAlways3ByteUTF8( - unsigned char* in, - uint16* out -); -/*================================================================================= - -=================================================================================*/ -PRIVATE uScannerFunc m_scanner[uNumOfCharsetType] = -{ - uCheckAndScanAlways1Byte, - uCheckAndScanAlways2Byte, - uCheckAndScanByTable, - uCheckAndScanAlways2ByteShiftGR, - uCheckAndScan2ByteGRPrefix8F, - uCheckAndScan2ByteGRPrefix8EA2, -}; - -/*================================================================================= - -=================================================================================*/ - -PRIVATE uSubScannerFunc m_subscanner[uNumOfCharType] = -{ - uScanAlways1Byte, - uScanAlways2Byte, - uScanAlways2ByteShiftGR, - uScanAlways1BytePrefix8E, - uScanAlways2ByteUTF8, - uScanAlways3ByteUTF8 -}; -/*================================================================================= - -=================================================================================*/ -MODULE_PRIVATE XP_Bool uScan( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -) -{ - return (* m_scanner[shift->classID]) (shift,state,in,out,inbuflen,inscanlen); -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uScanAlways1Byte( - unsigned char* in, - uint16* out -) -{ - *out = (uint16) in[0]; - return TRUE; -} - -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uScanAlways2Byte( - unsigned char* in, - uint16* out -) -{ - *out = (uint16) (( in[0] << 8) | (in[1])); - return TRUE; -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uScanAlways2ByteShiftGR( - unsigned char* in, - uint16* out -) -{ - *out = (uint16) ((( in[0] << 8) | (in[1])) & 0x7F7F); - return TRUE; -} - -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uScanAlways1BytePrefix8E( - unsigned char* in, - uint16* out -) -{ - *out = (uint16) in[1]; - return TRUE; -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uScanAlways2ByteUTF8( - unsigned char* in, - uint16* out -) -{ - *out = (uint16) (((in[0] & 0x001F) << 6 )| (in[1] & 0x003F)); - return TRUE; -} - -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uScanAlways3ByteUTF8( - unsigned char* in, - uint16* out -) -{ - *out = (uint16) (((in[0] & 0x000F) << 12 ) | ((in[1] & 0x003F) << 6) - | (in[2] & 0x003F)); - return TRUE; -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndScanAlways1Byte( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -) -{ - /* Don't check inlen. The caller should ensure it is larger than 0 */ - *inscanlen = 1; - *out = (uint16) in[0]; - - return TRUE; -} - -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndScanAlways2Byte( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -) -{ - if(inbuflen < 2) - return FALSE; - else - { - *inscanlen = 2; - *out = ((in[0] << 8) | ( in[1])) ; - return TRUE; - } -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndScanAlways2ByteShiftGR( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -) -{ - if(inbuflen < 2) - return FALSE; - else - { - *inscanlen = 2; - *out = (((in[0] << 8) | ( in[1])) & 0x7F7F); - return TRUE; - } -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndScanByTable( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -) -{ - int16 i; - uShiftCell* cell = &(shift->shiftcell[0]); - int16 itemnum = shift->numOfItem; - for(i=0;i<itemnum;i++) - { - if( ( in[0] >= cell[i].shiftin.Min) && - ( in[0] <= cell[i].shiftin.Max)) - { - if(inbuflen < cell[i].reserveLen) - return FALSE; - else - { - *inscanlen = cell[i].reserveLen; - return (uSubScanner(cell[i].classID,in,out)); - } - } - } - return FALSE; -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndScan2ByteGRPrefix8F( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -) -{ - if((inbuflen < 3) ||(in[0] != 0x8F)) - return FALSE; - else - { - *inscanlen = 3; - *out = (((in[1] << 8) | ( in[2])) & 0x7F7F); - return TRUE; - } -} -/*================================================================================= - -=================================================================================*/ -PRIVATE XP_Bool uCheckAndScan2ByteGRPrefix8EA2( - uShiftTable *shift, - int32* state, - unsigned char *in, - uint16 *out, - uint32 inbuflen, - uint32* inscanlen -) -{ - if((inbuflen < 4) || (in[0] != 0x8E) || (in[1] != 0xA2)) - return FALSE; - else - { - *inscanlen = 4; - *out = (((in[2] << 8) | ( in[3])) & 0x7F7F); - return TRUE; - } -} - - diff --git a/mozilla/lib/libi18n/vietnam.c b/mozilla/lib/libi18n/vietnam.c deleted file mode 100644 index 8ba2b89f013..00000000000 --- a/mozilla/lib/libi18n/vietnam.c +++ /dev/null @@ -1,1107 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* vietnam.c */ - -#include "intlpriv.h" - -extern int MK_OUT_OF_MEMORY; - - -/**************************< vietnam.c >*******************************/ -/*** Purpose: Please put all conversion routines that related to ***/ -/*** ------- the vietnamese character sets here for easy maintenance**/ -/*** Modifications ***/ -/*** 08/17/98: Vuong: - Add support for CP1258 ***/ -/*** - Reduce similar functions into 1 function ***/ -/*** - Cover the unsupported buffer for VNI & CP1258**/ -/**********************************************************************/ - - -/**********************************************************************/ -/*** The following section handles conversion from VIQR to VISCII ***/ -/*** Implementer: Vuong Nguyen (vlangsj@pluto.ftos.net) ***/ -/**********************************************************************/ -/*** VISCII - VIQR - VISCII - VIQR - VISCII - VIQR - VISCII - VIQR ***/ -/**********************************************************************/ - - /***************************************************/ - /*** For Mozilla, I disable the state feature of ***/ - /*** VIQR (\V \M \L) by not defining TRUE_VIQR ***/ - /***************************************************/ - -#ifdef TRUE_VIQR -PRIVATE unsigned char VIQRStateName[6] = - /*----0----1----2----3----4----5----*/ - { 'v', 'V', 'm', 'M', 'l', 'L' }; -#endif - -PRIVATE unsigned char DefaultVIQR[10] = - /*----0----1----2----3----4----5----6----7----8----9---*/ - /*----'----`----?----~----.----(----^----+----d----\---*/ - { 39, 96, 63, 126, 46, 40, 94, 43, 100, 92 }; - - -PRIVATE unsigned char HotChars[66] = - /*----a----a(---a^---e----e^---i----o----o^---o+---u----u+---y----*/ - { 97, 229, 226, 101, 234, 105, 111, 244, 189, 117, 223, 121, - /*----a'---a`---a?---a~---a.---e'---e`---e?---e~---e.--------*/ - 225, 224, 228, 227, 213, 233, 232, 235, 168, 169, - /*----o'---o`---o?---o~---o.---u'---u`---u?---u~---u.---d----*/ - 243, 242, 246, 245, 247, 250, 249, 252, 251, 248, 100, - /*----A----A(---A^---E----E^---I----O----O^---O+---U----U+---Y----*/ - 65, 197, 194, 69, 202, 73, 79, 212, 180, 85, 191, 89, - /*----A'---A`---A?---A~---A.---E'---E`---E?---E~---E.--------*/ - 193, 192, 196, 195, 128, 201, 200, 203, 136, 137, - /*----O'---O`---O?---O~---O.---U'---U`---U?---U~---U.---D----*/ - 211, 210, 153, 160, 154, 218, 217, 156, 157, 158, 68 }; - -PRIVATE unsigned char CombiToneChar[5][24] = - /*************************** Acute ' ******************************/ - { /*----a----a(---a^---e----e^---i----o----o^---o+---u----u+---y---*/ - { 225, 161, 164, 233, 170, 237, 243, 175, 190, 250, 209, 253, - /*----A----A(---A^---E----E^---I----O----O^---O+---U----U+---Y---*/ - 193, 129, 132, 201, 138, 205, 211, 143, 149, 218, 186, 221 }, - /*************************** Grave ` ******************************/ - /*----a----a(---a^---e----e^---i----o----o^---o+---u----u+---y---*/ - { 224, 162, 165, 232, 171, 236, 242, 176, 182, 249, 215, 207, - /*----A----A(---A^---E----E^---I----O----O^---O+---U----U+---Y---*/ - 192, 130, 133, 200, 139, 204, 210, 144, 150, 217, 187, 159 }, - /*************************** Hook Above ? *************************/ - /*----a----a(---a^---e----e^---i----o----o^---o+---u----u+---y---*/ - { 228, 198, 166, 235, 172, 239, 246, 177, 183, 252, 216, 214, - /*----A----A(---A^---E----E^---I----O----O^---O+---U----U+---Y---*/ - 196, 2, 134, 203, 140, 155, 153, 145, 151, 156, 188, 20 }, - /*************************** Tilde ~ ******************************/ - /*----a----a(---a^---e----e^---i----o----o^---o+---u----u+---y---*/ - { 227, 199, 231, 168, 173, 238, 245, 178, 222, 251, 230, 219, - /*----A----A(---A^---E----E^---I----O----O^---O+---U----U+---Y---*/ - 195, 5, 6, 136, 141, 206, 160, 146, 179, 157, 255, 25 }, - /*************************** Dot Below . **************************/ - /*----a----a(---a^---e----e^---i----o----o^---o+---u----u+---y---*/ - { 213, 163, 167, 169, 174, 184, 247, 181, 254, 248, 241, 220, - /*----A----A(---A^---E----E^---I----O----O^---O+---U----U+---Y---*/ - 128, 131, 135, 137, 142, 152, 154, 147, 148, 158, 185, 30 } - }; - -PRIVATE unsigned char CombiModiChar[3][66] = - /*************************** Breve ( ******************************/ - { /*----a----a(---a^---e----e^---i----o----o^---o+---u----u+---y---*/ - { 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - /*----a'---a`---a?---a~---a.---e'---e`---e?---e~---e.--------*/ - 161, 162, 198, 199, 163, 0, 0, 0, 0, 0, - /*----o'---o`---o?---o~---o.---u'---u`---u?---u~---u.---d----*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - /*----A----A(---A^---E----E^---I----O----O^---O+---U----U+---Y---*/ - 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - /*----A'---A`---A?---A~---A.---E'---E`---E?---E~---E.--------*/ - 129, 130, 2, 5, 131, 0, 0, 0, 0, 0, - /*----O'---O`---O?---O~---O.---U'---U`---U?---U~---U.---D----*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /*************************** Circumflex ^ *************************/ - /*----a----a(---a^---e----e^---i----o----o^---o+---u----u+---y---*/ - { 226, 0, 0, 234, 0, 0, 244, 0, 0, 0, 0, 0, - /*----a'---a`---a?---a~---a.---e'---e`---e?---e~---e.--------*/ - 164, 165, 166, 231, 167, 170, 171, 172, 173, 174, - /*----o'---o`---o?---o~---o.---u'---u`---u?---u~---u.---d----*/ - 175, 176, 177, 178, 181, 0, 0, 0, 0, 0, 0, - /*----A----A(---A^---E----E^---I----O----O^---O+---U----U+---Y---*/ - 194, 0, 0, 202, 0, 0, 212, 0, 0, 0, 0, 0, - /*----A'---A`---A?---A~---A.---E'---E`---E?---E~---E.--------*/ - 183, 133, 134, 6, 135, 138, 139, 140, 141, 142, - /*----O'---O`---O?---O~---O.---U'---U`---U?---U~---U.---D----*/ - 143, 144, 145, 146, 147, 0, 0, 0, 0, 0, 0 }, - /*************************** Horn + *******************************/ - /*----a----a(---a^---e----e^---i----o----o^---o+---u----u+---y---*/ - { 0, 0, 0, 0, 0, 0, 189, 0, 0, 223, 0, 0, - /*----a'---a`---a?---a~---a.---e'---e`---e?---e~---e.--------*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - /*----o'---o`---o?---o~---o.---u'---u`---u?---u~---u.---d----*/ - 190, 182, 183, 222, 254, 209, 215, 216, 230, 241, 0, - /*----A----A(---A^---E----E^---I----O----O^---O+---U----U+---Y---*/ - 0, 0, 0, 0, 0, 0, 180, 0, 0, 191, 0, 0, - /*----A'---A`---A?---A~---A.---E'---E`---E?---E~---E.--------*/ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - /*----O'---O`---O?---O~---O.---U'---U`---U?---U~---U.---D----*/ - 149, 150, 151, 179, 148, 186, 187, 188, 255, 185, 0 } - }; - -PRIVATE uint16 VIS_VIQ[128] = /*** 128 to 255 ***/ - { 0x1041,0x2141,0x2241,0x3041,0x4141,0x4241,0x4441,0x5041, - 0x0845,0x1045,0x4145,0x4245,0x4445,0x4845,0x5045,0x414f, - 0x424f,0x444f,0x484f,0x504f,0x904f,0x814f,0x824f,0x844f, - 0x1049,0x044f,0x104f,0x0449,0x0455,0x0855,0x1055,0x0259, - 0x084f,0x2161,0x2261,0x3061,0x4161,0x4261,0x4461,0x5061, - 0x0865,0x1065,0x4165,0x4265,0x4465,0x4865,0x5065,0x416f, - 0x426f,0x446f,0x486f,0x884f,0x804f,0x506f,0x826f,0x846f, - 0x1069,0x9055,0x8155,0x8255,0x8455,0x806f,0x816f,0x8055, - 0x0241,0x0141,0x4041,0x0841,0x0441,0x2041,0x2461,0x2861, - 0x0245,0x0145,0x4045,0x0445,0x0249,0x0149,0x0849,0x0279, - 0x0000,0x8175,0x024f,0x014f,0x404f,0x1061,0x0479,0x8275, - 0x8475,0x0255,0x0155,0x0879,0x1079,0x0159,0x886f,0x8075, - 0x0261,0x0161,0x4061,0x0861,0x0461,0x2061,0x8875,0x4861, - 0x0265,0x0165,0x4065,0x0465,0x0269,0x0169,0x0869,0x0469, - 0x0000,0x9075,0x026f,0x016f,0x406f,0x086f,0x046f,0x106f, - 0x1075,0x0275,0x0175,0x0875,0x0475,0x0179,0x906f,0x8855 }; - -PRIVATE unsigned char VNI_VIS[191] = /*** Mapping from 65 .. 255 ***/ - { 0xff,0x42,0x43,0x44,0xff,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c, - 0x4d,0x4e,0xff,0x50,0x51,0x52,0x53,0x54,0xff,0x56,0x57,0x58, - 0xff,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0xff,0x62,0x63,0x64, - 0xff,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0xff,0x70, - 0x71,0x72,0x73,0x74,0xff,0x76,0x77,0x78,0xff,0x7a,0x7b,0x7c, - 0x7d,0x7e,0x7f,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88, - 0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,0xa0, - 0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac, - 0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8, - 0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4, - 0xc5,0x9b,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0x1e,0xcf,0xd0, - 0xd0,0x98,0xce,0xff,0xd5,0xff,0xd7,0xd8,0xd9,0xda,0xdb,0xdc, - 0xdd,0xde,0xdf,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xef,0xe7,0xe8, - 0xe9,0xea,0xeb,0xec,0xed,0xdc,0xef,0xf0,0xf0,0xb8,0xee,0xff, - 0xf5,0xff,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xdc }; - -PRIVATE uint16 VNIextended_VIS[118] = - { 0xc085,0xc184,0xc2c2,0xc306,0xc487,0xc586,0xc882,0xc981, - 0xcac5,0xcb83,0xcf80,0xd5c3,0xd8c0,0xd9c1,0xda02,0xdbc4, - 0xdc05,0xc08b,0xc18a,0xc2ca,0xc38d,0xc48e,0xc58c,0xcf89, - 0xd588,0xd8c8,0xd9c9,0xdbcb,0xc090,0xc18f,0xc2d4,0xc392, - 0xc493,0xc591,0xcf9a,0xd5a0,0xd8d2,0xd9d3,0xdb99,0xcf9e, - 0xd59d,0xd8d9,0xd9da,0xdb9c,0xcf1e,0xd519,0xd89f,0xd9dd, - 0xdb14,0xe0a5,0xe1a4,0xe2e2,0xe3e7,0xe4a7,0xe5a6,0xe8a2, - 0xe9a1,0xeae5,0xeba3,0xefd5,0xf5e3,0xf8e0,0xf9e1,0xfac6, - 0xfbe4,0xfcc7,0xe0ab,0xe1aa,0xe2ea,0xe3ad,0xe4ae,0xe5ac, - 0xefa9,0xf5a8,0xf8e8,0xf9e9,0xfbeb,0xe0b0,0xe1af,0xe2f4, - 0xe3b2,0xe4b5,0xe5b1,0xeff7,0xf5f5,0xf8f2,0xf9f3,0xfbf6, - 0xeff8,0xf5fb,0xf8f9,0xf9fa,0xfbfc,0xefdc,0xf5db,0xf8cf, - 0xf9fd,0xfbd6,0xcf94,0xd5b3,0xd896,0xd995,0xdb97,0xcfb9, - 0xd5ff,0xd8bb,0xd9ba,0xdbbc,0xeffe,0xf5de,0xf8b6,0xf9be, - 0xfbb7,0xeff1,0xf5e6,0xf8d7,0xf9d1,0xfbd8 }; - -PRIVATE uint16 VIS_VNI[128] = /*** 128 to 255 ***/ - { 0xcf41,0xc941,0xc841,0xcb41,0xc141,0xc041,0xc541,0xc441, - 0xd545,0xcf45,0xc145,0xc045,0xc545,0xc345,0xc445,0xc14f, - 0xc04f,0xc54f,0xc34f,0xc44f,0xcfd4,0xd9d4,0xd8d4,0xdbd4, - 0x00d2,0xdb4f,0xcf4f,0x00c6,0xdb55,0xd555,0xcf55,0xd859, - 0xd54f,0xe961,0xe861,0xeb61,0xe161,0xe061,0xe561,0xe461, - 0xf565,0xef65,0xe165,0xe065,0xe565,0xe365,0xe465,0xe16f, - 0xe06f,0xe56f,0xe36f,0xd5d4,0x00d4,0xe46f,0xf8f4,0xfbf4, - 0x00f2,0xcfd6,0xd9d6,0xd8d6,0xdbd6,0x00f4,0xf9f4,0x00d6, - 0xd841,0xd941,0xc241,0xd541,0xdb41,0xca41,0xfa61,0xfc61, - 0xd845,0xd945,0xc245,0xdb45,0x00cc,0x00cd,0x00d3,0xf879, - 0x00d1,0xf9f6,0xd84f,0xd94f,0xc24f,0xef61,0xfb79,0xf8f6, - 0xfbf6,0xd855,0xd955,0xf579,0x00ee,0xd959,0xf5f4,0x00f6, - 0xf861,0xf961,0xe261,0xf561,0xfb61,0xea61,0xf5f6,0xe361, - 0xf865,0xf965,0xe265,0xfb65,0x00ec,0x00ed,0x00f3,0x00e6, - 0x00f1,0xeff6,0xf86f,0xf96f,0xe26f,0xf56f,0xfb6f,0xef6f, - 0xef75,0xf875,0xf975,0xf575,0xfb75,0xf979,0xeff4,0xd5d6 }; - -PRIVATE unsigned char CP1258_VIS[191] = /*** Mapping from 65 .. 255 ***/ - { 0xff,0x42,0x43,0x44,0xff,0x46,0x47,0x48,0xff,0x4a,0x4b,0x4c, - 0x4d,0x4e,0xff,0x50,0x51,0x52,0x53,0x54,0xff,0x56,0x57,0x58, - 0xff,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0xff,0x62,0x63,0x64, - 0xff,0x66,0x67,0x68,0xff,0x6a,0x6b,0x6c,0x6d,0x6e,0xff,0x70, - 0x71,0x72,0x73,0x74,0xff,0x76,0x77,0x78,0xff,0x7a,0x7b,0x7c, - 0x7d,0x7e,0x7f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, - 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, - 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, - 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, - 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, - 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0xc0,0xc1,0xff,0xff,0x5f, - 0x5f,0x5f,0x5f,0xc8,0xc9,0xff,0x5f,0x5f,0xcd,0x5f,0x5f,0xd0, - 0x5f,0x5f,0xd3,0xff,0xff,0x5f,0x5f,0x5f,0xd9,0xda,0x5f,0x5f, - 0xff,0x5f,0x5f,0xe0,0xe1,0xff,0xff,0x5f,0x5f,0x5f,0x5f,0xe8, - 0xe9,0xff,0x5f,0x5f,0xed,0x5f,0x5f,0xf0,0x5f,0x5f,0xf3,0xff, - 0xff,0x5f,0x5f,0x5f,0xf9,0xfa,0x5f,0x5f,0xff,0x5f,0x5f }; - -PRIVATE uint16 CP1258extended_VIS[104] = - { 0x49cc,0x4fd2,0x599f,0x69ec,0x6ff2,0x79cf,0xc285,0xc382, - 0xca8b,0xd490,0xd596,0xddbb,0xe2a5,0xe3a2,0xeaab,0xf4b0, - 0xf5b6,0xfdd7,0x41c4,0x45cb,0x499b,0x4f99,0x559c,0x5914, - 0x61e4,0x65eb,0x69ef,0x6ff6,0x75fc,0x79d6,0xc286,0xc302, - 0xca8c,0xd491,0xd597,0xddbc,0xe2a6,0xe3c6,0xeaac,0xf4b1, - 0xf5b7,0xfdd8,0x41c3,0x4588,0x49ce,0x4fa0,0x559d,0x5919, - 0x61e3,0x65a8,0x69ee,0x6ff5,0x75fb,0x79db,0xc206,0xc305, - 0xca8d,0xd492,0xd5b3,0xddff,0xe2e7,0xe3c7,0xeaad,0xf4b2, - 0xf5de,0xfde6,0x59dd,0x79fd,0xc284,0xc381,0xca8a,0xd48f, - 0xd595,0xddba,0xe2a4,0xe3a1,0xeaaa,0xf4af,0xf5be,0xfdd1, - 0x4180,0x4589,0x4998,0x4f9a,0x559e,0x591e,0x61d5,0x65a9, - 0x69b8,0x6ff7,0x75f8,0x79dc,0xc287,0xc383,0xca8e,0xd493, - 0xd594,0xddb9,0xe2a7,0xe3a3,0xeaae,0xf4b5,0xf5fe,0xfdf1 }; - -PRIVATE uint16 VIS_CP1258[128] = /*** 128 to 255 ***/ - { 0xf241,0xecc3,0xccc3,0xf2c3,0xecc2,0xccc2,0xd2c2,0xf2c2, - 0xde45,0xf245,0xecca,0xccca,0xd2ca,0xdeca,0xf2ca,0xecd4, - 0xccd4,0xd2d4,0xded4,0xf2d4,0xf2d5,0xecd5,0xccd5,0xd2d5, - 0xf249,0xd24f,0xf24f,0xd249,0xd255,0xde55,0xf255,0xcc59, - 0xde4f,0xece3,0xcce3,0xf2e3,0xece2,0xcce2,0xd2e2,0xf2e2, - 0xde65,0xf265,0xecea,0xccea,0xd2ea,0xdeea,0xf2ea,0xecf4, - 0xccf4,0xd2f4,0xdef4,0xded5,0x00d5,0xf2f4,0xccf5,0xd2f5, - 0xf269,0xf2dd,0xecdd,0xccdd,0xd2dd,0x00f5,0xecf5,0x00dd, - 0x00c0,0x00c1,0x00c2,0xde41,0xd241,0x00c3,0xd2e3,0xdee3, - 0x00c8,0x00c9,0x00ca,0xd245,0xcc49,0x00cd,0xde49,0xcc79, - 0x00d0,0xecfd,0xcc4f,0x00d3,0x00d4,0xf261,0xd279,0xccfd, - 0xd2fd,0x00d9,0x00da,0xde79,0xf279,0xec59,0xdef5,0x00fd, - 0x00e0,0x00e1,0x00e2,0xde61,0xd261,0x00e3,0xdefd,0xdee2, - 0x00e8,0x00e9,0x00ea,0xd265,0xcc69,0x00ed,0xde69,0xd269, - 0x00f0,0xf2fd,0xcc6f,0x00f3,0x00f4,0xde6f,0xd26f,0xf26f, - 0xf275,0x00f9,0x00fa,0xde75,0xd275,0xec79,0xf2f5,0xdedd }; - -typedef int32 (*VietFunc)(const unsigned char *frombuffer, unsigned char *tobuffer, int32 maxsz, unsigned char *uncvtbuf); - -PRIVATE unsigned char charType( unsigned char c); -PRIVATE unsigned char IsVIQRWord(const unsigned char *s, - int32 len_s, - int32 fromI, - int32 *toI); -PRIVATE unsigned char C_VIQR_to_VISCII( unsigned char *HotKeys, - unsigned char *CurState, - unsigned char *LastChar, - unsigned char NewChar); -PRIVATE unsigned char C_VISCII_to_VIQR( unsigned char *HotKeys, - unsigned char VISCII, - unsigned char *char1, - unsigned char *char2, - unsigned char *char3); -PRIVATE int32 S_VIQR_to_VISCII( const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf); -PRIVATE int32 S_VISCII_to_VIQR( const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf); -PRIVATE int32 S_VNI_to_VISCII( const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf); -PRIVATE int32 S_VISCII_to_VNI( const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf); -PRIVATE int32 S_CP1258_to_VISCII(const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf); -PRIVATE int32 S_VISCII_to_CP1258(const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf); -PRIVATE unsigned char *xlat_vis_ucs2_X(CCCDataObject obj, - const unsigned char *buf, - int32 bufsz); -PRIVATE unsigned char *xlat_X_ucs2_vis(CCCDataObject obj, - const unsigned char *buf, - int32 bufsz); -PRIVATE unsigned char *xlat_any_2_any ( - CCCDataObject obj, - const unsigned char *in_buf, - int32 in_bufsz, - VietFunc customfunc, - int16 buf_ratio, - int16 do_unconverted); - -/**********************************************************************/ -/*** Function: charType() ***/ -/*** Purpose: Determine the type of a character. ***/ -/*** Returns: 0 - If c is a non-alpha character ***/ -/*** 1 - If c is a consonant. ***/ -/*** 2 - If c is a diacritical mark ***/ -/*** 3 - If c is a hi-bit character ***/ -/*** 4 - If c is a vowel (AEIOUY) ***/ -/**********************************************************************/ -PRIVATE unsigned char charType( unsigned char c) -{ - if (c < 0x27) /*** below ' ***/ - return (0); - else if (c > 0x7e) /*** above ~ ***/ - return (3); - else { - if (XP_STRCHR("),-/0123456789:;<=>@[\\]_{|}",c)) return(0); - if (XP_IS_ALPHA(c)) { - if (XP_STRCHR("AEIOUYaeiouy",c)) return(4); - else return(1); - } - else return(2); - } -} - -/**********************************************************************/ -/*** Function: IsVIQRWord() ***/ -/*** Purpose: Parse a string, marks the location of the first word.***/ -/*** Returns: 0: if the word is not a VIQR word ***/ -/*** Implementer: Vuong Nguyen (vlangsj@pluto.ftos.net) ***/ -/**********************************************************************/ -PRIVATE unsigned char IsVIQRWord(const unsigned char *s, - int32 len_s, - int32 fromI, - int32 *toI) -{ unsigned char c, t, flg; - int32 i, ctr_letter, ctr_mark, ctr_afterperiod, ctr_vowel; - - flg = 0; - ctr_afterperiod = ctr_vowel = - len_s; /* set it a big negative number */ - ctr_letter = ctr_mark = 0; - for (i=fromI; ((i < len_s) && ('\0' != (c = s[i]))); i++) { - t = charType(c); - if ((t == 0) || (t == 3)) /*** is control or hi-bit char? ***/ - flg = 1; /**If it is not-viqr, mark the flag. **/ - else { if (flg == 1) { /**And if after the not-viqr is viqr,**/ - break; /**then done **/ - } - switch (t) { - case 2: /*If a mark appears before any letter, ignore*/ - if (ctr_letter > 0) ctr_mark++; - if (c == '.') { /** Pay attention to the period **/ - if (ctr_afterperiod < 0) ctr_afterperiod=0; - } - break; - case 4: /* Vowel's first encounter will reset the counter*/ - if (ctr_vowel > 0) { /** if Vowel,Consonant, and */ - ctr_letter = 10; /** vowel again, then we */ - } /** force an invalid word */ - ctr_vowel = -1; /** flow to next case */ - case 1: /* Consonant */ - ctr_vowel++; - ctr_letter++; /** Count the # of letters */ - ctr_afterperiod++; - } - } - } - *toI = i-1; /*** So the first word will be between fromI and toI ***/ - - /*******************************************************************/ - /*** Now, the hard part, I should check the semantic of the word,***/ - /*** But it will take more comparisons, and I don't think it is ***/ - /*** necessary, so I temporarily use the common sense here to ***/ - /*** detect a vietnamese word. I'll implement semantic checking ***/ - /*** later if it's really necessary ***/ - if (*toI > fromI) { - /*********************************************************/ - /**First: If there are more 2 letters after a "." -> NO **/ - if (ctr_afterperiod > 2) return(0); - /*********************************************************/ - /**Then: Check for special cases of DD, Dd, dD, dd ***/ - c = s[fromI]; - if ((c == 'D') || (c == 'd')) { - c = s[fromI+1]; - if ((c == 'D') || (c == 'd')) { - ctr_letter--; - if (ctr_mark == 0) ctr_mark++; - } - } - /*********************************************************/ - /**Then: Check for common knowledge: A vietnamese word ***/ - /**always has less than 8 letters and less than 4 ***/ - /**diacritical marks at the same time ***/ - if ((ctr_letter > 0) && (ctr_letter < 8)) { - if ((ctr_mark > 0) && (ctr_mark < 4)) return(1); - } - } - return(0); -} - -/*********************************************************************/ -/*** Function : C_VIQR_to_VISCII() ***/ -/*** Purpose: Given 2 VIQR characters, combine into 1 VISCII ***/ -/*** ------- character if possible ***/ -/*** Return: 0-FALSE: Couldn't combined. ***/ -/*** ------: 1-TRUE: if LastChar is modified to be a VISCII char ***/ -/*** 2-TRUE: A state is changing (return BackSpace) ***/ -/*** Implementer: Vuong Nguyen (vlangsj@pluto.ftos.net) ***/ -/*********************************************************************/ -PRIVATE unsigned char C_VIQR_to_VISCII( unsigned char *HotKeys, - unsigned char *CurState, - unsigned char *LastChar, - unsigned char NewChar) -{ unsigned char idkey, idchar, ochar, nchar, converted; - - converted = 0; - ochar=*LastChar; - -#ifdef TRUE_VIQR - unsigned char statechange, cs; - /***********************************************************/ - statechange=(ochar==HotKeys[9]); - cs = *CurState; - if (cs > 0) { - if (cs >= 'a') { - cs -= 32; /*** Convert from lowercase to uppercase ***/ - *CurState = cs; - *LastChar=NewChar; - return(1); - } - else if (statechange) { - for (idkey=0;idkey < 6; idkey++) - if (NewChar==VIQRStateName[idkey]) break; - statechange=(idkey & 6); - if (statechange < 6) { /**A state change is detected**/ - cs = VIQRStateName[statechange | 1]; - *CurState=cs; - *LastChar=8; - return(2); - } - } - } - /********************************************************************/ - if (cs==VIQRStateName[5]) { } /******** Literal **************/ - else if (cs==VIQRStateName[3]) { /******** English **************/ - if (statechange) { cs = '\\'; - *CurState=cs; - *LastChar=NewChar; - converted=1; - } - } - else -#endif - { /*************************************************************/ - /******** Vietnamese (V) or English+ESC (\) mode *************/ - /*************************************************************/ - /****** Solve the problem of DD (4 different cases ***********/ - nchar = NewChar; - switch (nchar) { - case 'D': /*** if (HotKeys[8]=='d') ***/ - nchar = 'd'; - case 'd': if (ochar == '-') ochar = nchar; - break; - case '*': nchar = '+'; /** sometimes a * is used */ - break; /** for + instead, */ - } - /*********************************************************/ - for (idkey=0; idkey < 9; idkey++) - if (nchar == HotKeys[idkey]) { -#ifdef TRUE_VIQR - if (statechange) /*** Escape character ***/ - converted=1; - else -#endif - for (idchar=0; idchar < 66; idchar++) - if (ochar==HotChars[idchar]) { - if (idkey < 5) { - /******** For '`?~. tones ****/ - ochar=idchar % 33; - if (ochar < 12) - NewChar=CombiToneChar[idkey] - [ochar+(idchar / 33)*12]; - else NewChar=0; - } /*****************************/ - else - if (idkey==8) { /****** For DD ****/ - if ((idchar % 33) == 32) - NewChar=ochar+140; - else NewChar=0; - } /*****************************/ - else /****** For ^(+ modifiers ****/ - NewChar=CombiModiChar[idkey-5] - [idchar]; - converted=(NewChar != 0); - break; - } - if (converted) *LastChar=NewChar; - break; - } -#ifdef TRUE_VIQR - if ((!converted) && (cs=='\\')) *CurState=VIQRStateName[3]; -#endif - } - /********************************************************************/ - return(converted); -} - -/*********************************************************************/ -/*** Function : C_VISCII_to_VIQR() ***/ -/*** Purpose: Given 1 VISCII character, split to VIQR chars ***/ -/*** Return: Number of returned characters. ***/ -/*** Implementer: Vuong Nguyen (vlangsj@pluto.ftos.net) ***/ -/*********************************************************************/ -PRIVATE unsigned char C_VISCII_to_VIQR( unsigned char *HotKeys, - unsigned char VISCII, - unsigned char *char1, - unsigned char *char2, - unsigned char *char3) -{ uint16 key; - unsigned char mask, NumChars; - NumChars=1; - *char2=*char3=0; - key=VISCII; - /******************* Get the secret code *************************/ - if (VISCII < 128) { - if (VISCII < 32) - switch (VISCII) { - case 2 : key= 9281; break; case 20 : key=1113; break; - case 5 : key=10305; break; case 25 : key=2137; break; - case 6 : key=18497; break; case 30 : key=4185; break; - } - } - else if ((VISCII==240) || (VISCII==208)) { - key-=140; - if (HotKeys[8]=='d') *char2=(unsigned char) key; - else *char2=HotKeys[8]; - NumChars++; - } - else key=VIS_VIQ[VISCII-128]; - /*****************************************************************/ - *char1=key & 0xFF; /*** Get the base letter *******/ - if ((key >>= 8)) /*** Get the diacritic marks ***/ - for (mask=0x80,VISCII=7; key ; mask >>= 1, VISCII--) - if (key & mask) { - if (++NumChars ==2) *char2=HotKeys[VISCII]; - else *char3=HotKeys[VISCII]; - key &= (~mask); - } - return(NumChars); -} - -/**********************************************************************/ -/*** Procedure : S_VIQR_to_VISCII() ***/ -/*** Purpose : Convert a VIQR string to a VISCII string. ***/ -/*** ------- This routine will not convert any word that seems ***/ -/*** not to be a Vietnamese word. Doing this, we will ***/ -/*** avoid the problem of blind converting email, url, ***/ -/*** html tags. ***/ -/*** I would suggest all other vietnamese encodings ***/ -/*** using this routine to convert from VIQR to their ***/ -/*** codes (using VISCII as intermediate code) ***/ -/*** eg: VIQR -> VISCII -> Vxxx ***/ -/*** With this technique, then we will not need many ***/ -/*** (duplicate) VIQR conversion routines. ***/ -/*** Implementer: Vuong Nguyen (vlangsj@pluto.ftos.net) ***/ -/*** Note: 08/19/98: Implemented the unconverted buffer processing ***/ -/*** ---- but then removed because it is too complicated ***/ -/*** (must examine the whole word). ***/ -/*** Anyway the user always understand VIQR text ***/ -/**********************************************************************/ -PRIVATE int32 S_VIQR_to_VISCII( const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf) -{ unsigned char oldc, newc, InitState, j, *p; - int32 fromI, toI, ctr, p_sz; - - ctr=0; - InitState = 0; - p = (unsigned char *) frombuffer; - p_sz = maxsz; - fromI = 0; - while (fromI < p_sz) { - if ( IsVIQRWord(p, p_sz,fromI,&toI) ) { - /*******************************************************/ - /*** This is a VIQR word, need conversion **************/ - j = 0; - oldc = p[fromI++]; - while ((fromI <= toI) && ('\0' != (newc = p[fromI]))) { - j = C_VIQR_to_VISCII(DefaultVIQR,&InitState,&oldc,newc); - if (j == 0) { - tobuffer[ctr++] = oldc; - oldc = newc; - } - fromI++; - } - if (j != 2) tobuffer[ctr++] = oldc; - } - else { /*******************************************************/ - /*** This is not a VIQR word, simply copy it ***********/ - while ((fromI <= toI) && ('\0' != (newc = p[fromI]))) { - tobuffer[ctr++] = newc; - fromI++; - } - } - } - - tobuffer[ctr]=0; - return(ctr); -} - -/**********************************************************************/ -/*** Procedure : S_VISCII_to_VIQR() ***/ -/*** Purpose : Convert a VISCII string to a VIQR string. ***/ -/*** IMPORTANT : The size of tobuffer must be bigger than the size ***/ -/*** --------- of frombuffer about 3 times (worst case) ***/ -/*** Implementer: Vuong Nguyen (vlangsj@pluto.ftos.net) ***/ -/**********************************************************************/ -PRIVATE int32 S_VISCII_to_VIQR( const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf) -{ int32 indx, i, n, ctr; - unsigned char c, cc[3]; - - indx = ctr = 0; - for (indx=0;((indx < maxsz) && ('\0' != (c=frombuffer[indx])));indx++) { - n = C_VISCII_to_VIQR(DefaultVIQR,c,cc,cc+1,cc+2); - if ((n==2) && (cc[1]=='d')) cc[1]=cc[0]; - for (i=0; (i < n); i++) tobuffer[ctr++] = cc[i]; - } - tobuffer[ctr]=0; - return(ctr); -} - -/**********************************************************************/ -/*** Function: S_VNI_to_VISCII() ***/ -/*** Purpose: Converts a VNI string to a VISCII string ***/ -/*** Implementer: Vuong Nguyen (vlangsj@pluto.ftos.net) ***/ -/**********************************************************************/ -PRIVATE int32 S_VNI_to_VISCII( const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf) -{ unsigned char c, v, *p; - int32 i, ctr, p_sz, istart; - uint16 j, fr_i, to_i, x, idex, ibuf; - - ctr = 0; - for (ibuf=0; ibuf < 2; ibuf++) { - if (ibuf == 0) { - /*** Process the un-converted buffer first ***/ - p = uncvtbuf; - p_sz = XP_STRLEN((char*)p); - istart = 0; - } - else { /*** Then the input buffer next ***/ - p = (unsigned char *) frombuffer; - p_sz = maxsz; - if (istart != 1) istart=0; /*** adjust the index if ***/ - } /*** the 1st char used ***/ - /***************************************************/ - for (i = istart;(i < p_sz) && ('\0' != (c = p[i])); i++) { - if (c < 65) v = c; /*** saving 65 characters in the table ***/ - else v = VNI_VIS[ c - 65 ]; - if (v != 255) tobuffer[ctr++] = v; - else { - switch (c) { - case 65: idex = 0x0010; break; - case 69: idex = 0x111b; break; - case 79: idex = 0x1c26; break; - case 85: idex = 0x272b; break; - case 89: idex = 0x2c30; break; - case 97: idex = 0x3141; break; - case 101: idex = 0x424c; break; - case 111: idex = 0x4d57; break; - case 117: idex = 0x585c; break; - case 121: idex = 0x5d61; break; - case 212: idex = 0x6266; break; - case 214: idex = 0x676b; break; - case 244: idex = 0x6c70; break; - case 246: idex = 0x7175; break; - default: idex = 0; - } - if (idex != 0) { - j = i+1; - if (j >= p_sz) v = 0; - else v = p[j]; - if ((v == 0) && (ibuf == 0) && (maxsz > 0)) { - /*** If end of un-convert buffer, ***/ - /*** get first char of input buffer***/ - v = (unsigned char) frombuffer[0]; - istart = 2; - } - if (v) { - fr_i = (idex >> 8); - to_i = (idex & 0xFF); - for (j = fr_i; j <= to_i; j++) { - idex = VNIextended_VIS[j]; - x = (idex >> 8); - if (x == v) { - x = (idex & 0xFF); - c = (unsigned char) x; - i++; - if (istart == 2) istart=1; - break; - } - } - if (j > to_i) { - switch (c) { - case 212: c = 180; break; - case 214: c = 191; break; - case 244: c = 189; break; - case 246: c = 223; break; - } - } - } - } - tobuffer[ctr++] = c; - } - } - } - tobuffer[ctr] = 0; - return(ctr); -} - -/**********************************************************************/ -/*** Function: S_VISCII_to_VNI() ***/ -/*** Purpose: Converts a VISCII string to a VNI string ***/ -/*** Note: tobuffer must have size at least 2 times bigger than ***/ -/*** ---- than frombuffer (1-byte charset -> 2-byte charset) ***/ -/*** Implementer: Vuong Nguyen (vlangsj@pluto.ftos.net) ***/ -/**********************************************************************/ -PRIVATE int32 S_VISCII_to_VNI( const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf) -{ unsigned char c; - uint16 idex; - int32 i, ctr; - - ctr = 0; - for (i = 0;(i < maxsz) && ('\0' != (c = (unsigned char) frombuffer[i])); i++) { - idex = 0; - if (c < 32) - switch (c) { - case 2: idex = 0xda41; break; - case 5: idex = 0xdc41; break; - case 6: idex = 0xc341; break; - case 20: idex = 0xdb59; break; - case 25: idex = 0xd559; break; - case 30: c = 0xCE; break; - } - else if (c > 127) idex = VIS_VNI[c-128]; - if (idex) { - tobuffer[ctr++] = (unsigned char) (idex & 0xFF); - c = (unsigned char) (idex >> 8); - if (c) tobuffer[ctr++] = c; - } - else tobuffer[ctr++] = c; - } - tobuffer[ctr] = 0; - return(ctr); -} - -/**********************************************************************/ -/*** Function: S_CP1258_to_VISCII() ***/ -/*** Purpose: Converts a CP1258 string to a VISCII string ***/ -/*** Implementer: Vuong Nguyen (vlangsj@pluto.ftos.net) ***/ -/**********************************************************************/ -PRIVATE int32 S_CP1258_to_VISCII( const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf) -{ unsigned char c, v, *p; - int32 i, ctr, p_sz, istart; - uint16 j, fr_i, to_i, x, idex, ibuf; - - ctr = 0; - for (ibuf=0; ibuf < 2; ibuf++) { - if (ibuf == 0) { - /*** Process the un-converted buffer first ***/ - p = uncvtbuf; - p_sz = XP_STRLEN((char*)p); - istart = 0; - } - else { /*** Then the input buffer next ***/ - p = (unsigned char *) frombuffer; - p_sz = maxsz; - if (istart != 1) istart=0; /*** adjust the index if ***/ - } /*** the 1st char used ***/ - /***************************************************/ - for (i = istart;(i < p_sz) && ('\0' != (c = p[i])); i++) { - if (c < 65) v = c; /*** saving 65 characters in the table ***/ - else v = CP1258_VIS[ c - 65 ]; - if (v != 255) tobuffer[ctr++] = v; - else { /*** now c contains the base letter *****************/ - /*** Look for the next char as a diacritical mark ***/ - j = i+1; - if (j >= p_sz) v = 0; - else v = p[j]; - if ((v == 0) && (ibuf == 0) && (maxsz > 0)) { - /*** If end of un-convert buffer, ***/ - /*** get first char of input buffer***/ - v = (unsigned char) frombuffer[0]; - istart = 2; - } - if (v) { - switch (v) { - case 0xcc: idex=0x0011; break; - case 0xd2: idex=0x1229; break; - case 0xde: idex=0x2a41; break; - case 0xec: idex=0x424f; break; - case 0xf2: idex=0x5067; break; - default: idex=0; - } - if (idex) { - fr_i = (idex >> 8); - to_i = (idex & 0xFF); - for (j = fr_i; j <= to_i; j++) { - idex = CP1258extended_VIS[j]; - x = (idex >> 8); - if (x == c) { - x = (idex & 0xFF); - c = (unsigned char) x; - i++; - if (istart == 2) istart=1; - break; - } - } - } - } - tobuffer[ctr++] = c; - } - } - } - tobuffer[ctr] = 0; - return(ctr); -} - -/**********************************************************************/ -/*** Function: S_VISCII_to_CP1258() ***/ -/*** Purpose: Converts a VISCII string to a CP1258 string ***/ -/*** Note: tobuffer must have size at least 2 times bigger than ***/ -/*** ---- than frombuffer (1-byte charset -> 2-byte charset) ***/ -/*** Implementer: Vuong Nguyen (vlangsj@pluto.ftos.net) ***/ -/**********************************************************************/ -PRIVATE int32 S_VISCII_to_CP1258( const unsigned char *frombuffer, - unsigned char *tobuffer, - int32 maxsz, - unsigned char *uncvtbuf) -{ unsigned char c; - uint16 idex; - int32 i, ctr; - - ctr = 0; - for (i = 0;(i < maxsz) && ('\0' != (c = (unsigned char) frombuffer[i])); i++) { - idex = 0; - if (c < 32) - switch (c) { - case 2: idex = 0xd2c3; break; - case 5: idex = 0xdec3; break; - case 6: idex = 0xdec2; break; - case 20: idex = 0xd259; break; - case 25: idex = 0xde59; break; - case 30: idex = 0xf259; break; - } - else if (c > 127) idex = VIS_CP1258[c-128]; - if (idex) { - tobuffer[ctr++] = (unsigned char) (idex & 0xFF); - c = (unsigned char) (idex >> 8); - if (c) tobuffer[ctr++] = c; - } - else tobuffer[ctr++] = c; - } - tobuffer[ctr] = 0; - return(ctr); -} - -/**********************************************************************/ -/*** Function: xlat_vis_ucs2_X() ***/ -/*** Purpose: Converts a converted temporary VISCII buffer to a ***/ -/*** ------- to_charset via mz_AnyToAnyThroughUCS2 ***/ -/**********************************************************************/ -PRIVATE unsigned char *xlat_vis_ucs2_X(CCCDataObject obj, - const unsigned char *buf, - int32 bufsz) -{ unsigned char *out_buf; - uint16 oldcsid; - if (buf) { - oldcsid = INTL_GetCCCFromCSID(obj); /* Save current setting */ - INTL_SetCCCFromCSID(obj, CS_VIET_VISCII); /* then set viscii */ - out_buf = (unsigned char *) mz_AnyToAnyThroughUCS2(obj, buf, bufsz); - INTL_SetCCCFromCSID(obj, oldcsid); /* Restore current setting */ - return(out_buf); - } - else return (NULL); -} - -/**********************************************************************/ -/*** Function: xlat_X_ucs2_vis() ***/ -/*** Purpose: Converts a from_charset buffer to a temporary ***/ -/*** ------- VISCII buffer via mz_AnyToAnyThroughUCS2 ***/ -/**********************************************************************/ -PRIVATE unsigned char *xlat_X_ucs2_vis(CCCDataObject obj, - const unsigned char *buf, - int32 bufsz) -{ unsigned char *out_buf; - uint16 oldcsid; - if (buf) { - oldcsid = INTL_GetCCCToCSID(obj); /* Save current setting */ - INTL_SetCCCToCSID(obj, CS_VIET_VISCII); /* then set viscii */ - out_buf = (unsigned char *) mz_AnyToAnyThroughUCS2(obj, buf, bufsz); - INTL_SetCCCToCSID(obj, oldcsid); /* Restore current setting */ - return (out_buf); - } - else return (NULL); -} - -/**********************************************************************/ -/*** Function: xlat_any_2_any() ***/ -/*** Purpose: Converts a from_csid buffer to a to_csid buffer ***/ -/*** Arguments: in_buf: Ptr to the input buffer ***/ -/*** --------- in_bufsize: Size in bytes of in_buf ***/ -/*** customfunc: Address to the conversion function ***/ -/*** buf_ratio: Contains the multiplication ratio for***/ -/*** getting sufficient output memory ***/ -/*** do_unconverted: flag telling to process unconverted**/ -/*** buffer, it also used as a signal ***/ -/*** where should stop when putting char**/ -/*** into unconverted buffer ***/ -/*** Returns: Returns NULL on failure, otherwise it returns a ***/ -/*** ------- pointer to a buffer converted characters. ***/ -/*** Caller must XP_FREE() this memory. ***/ -/*** Implementer: Vuong Nguyen (vlangsj@pluto.ftos.net) ***/ -/**********************************************************************/ -PRIVATE unsigned char *xlat_any_2_any( - CCCDataObject obj, - const unsigned char *in_buf, - int32 in_bufsz, - VietFunc customfunc, - int16 buf_ratio, - int16 do_unconverted) -{ - int32 out_bufsz, uncvt_bufsz, i, ctr; - unsigned char *uncvtbuf, *out_buf; - unsigned char c, nextunconv[UNCVTBUF_SIZE]; - - /***** Take care the un-converted buffer *********************/ - ctr = 0; - uncvtbuf = INTL_GetCCCUncvtbuf(obj); - if (do_unconverted) { - uncvt_bufsz = XP_STRLEN((char*)uncvtbuf); - - /*** Save the uncvtbuf only if the buffer is big, otherwise ***/ - /*** we can assume this is the last packet, process all ***/ - if (in_bufsz >= 128) { /*** is 128 big enough ***/ - /*** We go backward until see a non-vowel character ***/ - for (i=(in_bufsz-1); (i >= 0); i--) { - c = in_buf[i]; - /*** We also use do_unconverted as a stop char **/ - /*** For viqr, stop when seeing a non-alpha char (<1)**/ - /*** else, stop when NOT seeing vowel or hi-bit (<3)**/ - if (charType(c) < do_unconverted) - break; - if (++ctr > UNCVTBUF_SIZE-1) { - /*** Worst case, for CP1258 & VNI, the combining */ - /*** vowels always happen at the last 6 letters, */ - /*** otherwise, we can conclude it's not a viet */ - /*** word, don't need to keep un-converted buffer*/ - ctr = 0; - break; - } - } - } - for (i=0; i < ctr;i++) { - nextunconv[i] = in_buf[ in_bufsz - ctr + i ]; - } - nextunconv[i] = 0; /*** save next uncnvbuf ***/ - in_bufsz -= ctr; /*** reduce the size of input buffer ***/ - } - else { /*** This happens for single-byte charset, we don't ***/ - uncvtbuf[0] = 0; /*** need the un-converted buffer, ***/ - uncvt_bufsz = 0; /*** so we clear it ***/ - } - /*************************************************************/ - out_buf = NULL; - out_bufsz = ((in_bufsz + uncvt_bufsz) * buf_ratio) + 1; - if ((out_buf = (unsigned char *)XP_ALLOC(out_bufsz)) == (unsigned char *)NULL) { - INTL_SetCCCRetval(obj, MK_OUT_OF_MEMORY); - return(NULL); - } - out_bufsz = customfunc(in_buf, out_buf, in_bufsz, uncvtbuf); - INTL_SetCCCLen(obj, out_bufsz); /* length not counting null */ - /*************************************************************/ - if (do_unconverted) { - XP_STRCPY((char*)uncvtbuf,(char*)nextunconv); - } - return(out_buf); -} - -/*####################################################################*/ -/*### The following routines are called by Mozilla ###*/ -/*####################################################################*/ - - -/**********************************************************************/ -/*** Function: viet_any_2_any() ***/ -/*** Purpose: Converts a from_csid buffer to a to_csif buffer. ***/ -/**********************************************************************/ -MODULE_PRIVATE unsigned char *viet_any_2_any( - CCCDataObject obj, - const unsigned char *in_buf, - int32 in_bufsz) -{ - unsigned char *out_buf, *tmp_buf; - uint16 fcsid, tcsid, use_tmp_mem; - int32 bufsz; - - fcsid = INTL_GetCCCFromCSID(obj); - tcsid = INTL_GetCCCToCSID(obj); - if (fcsid == tcsid) /*** This case is similar to (CCCFunc) 0 ***/ - return ((unsigned char *) in_buf); - - /*******************************************************************/ - /*** Convert from from_csid buffer to a temporary VISCII buffer ****/ - use_tmp_mem = 1; /*** Assume we will use a temporary VIS buf ***/ - switch (fcsid) { - case CS_VIET_VISCII: - /*** No intermediate conversion is needed ***/ - out_buf = (unsigned char *) in_buf; - bufsz = in_bufsz; - use_tmp_mem = 0; - break; - - /*** These are multi-bytes charsets, cannot convert ***/ - /*** via UCS2, so we use our internal conversion ***/ - - case CS_VIET_VIQR: /*** disable unconverted buffer processing **/ - /*** by setting last parameter to be 0 **/ - out_buf = xlat_any_2_any(obj,in_buf,in_bufsz, - (VietFunc) S_VIQR_to_VISCII, 1, 0); - break; - case CS_VIET_VNI: - out_buf = xlat_any_2_any(obj,in_buf,in_bufsz, - (VietFunc) S_VNI_to_VISCII, 1, 3); - break; - case CS_CP_1258: - out_buf = xlat_any_2_any(obj,in_buf,in_bufsz, - (VietFunc) S_CP1258_to_VISCII, 1, 3); - break; - - default: /*** A via-UCS2 conversion is needed ***/ - out_buf = xlat_X_ucs2_vis(obj, in_buf, in_bufsz); - } - - /*******************************************************************/ - /*** Convert the temporary VISCII buffer to to_csid buffer ****/ - if (out_buf) { - if (use_tmp_mem) bufsz = INTL_GetCCCLen(obj); - switch (tcsid) { - case CS_VIET_VIQR: - tmp_buf = xlat_any_2_any(obj,out_buf,bufsz, - (VietFunc) S_VISCII_to_VIQR, 3, 0); - break; - case CS_VIET_VNI: - tmp_buf = xlat_any_2_any(obj,out_buf,bufsz, - (VietFunc) S_VISCII_to_VNI, 2, 0); - break; - case CS_CP_1258: - tmp_buf = xlat_any_2_any(obj,out_buf,bufsz, - (VietFunc) S_VISCII_to_CP1258, 2, 0); - break; - case CS_VIET_VISCII: - use_tmp_mem = 0; - tmp_buf = out_buf; - break; - default: - tmp_buf = xlat_vis_ucs2_X(obj, out_buf, bufsz); - } - if (use_tmp_mem) { /*** Multi-byte functions already got memory*/ - XP_FREE(out_buf); /* so we need to free the temp VIS buf ***/ - } - out_buf = tmp_buf; - } - - return(out_buf); -} - diff --git a/mozilla/lib/liblayer/Makefile.in b/mozilla/lib/liblayer/Makefile.in deleted file mode 100644 index 04e25575ad2..00000000000 --- a/mozilla/lib/liblayer/Makefile.in +++ /dev/null @@ -1,32 +0,0 @@ -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): -# - -DEPTH = ../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -DIRS = include src - -include $(topsrcdir)/config/rules.mk - diff --git a/mozilla/lib/liblayer/include/MANIFEST b/mozilla/lib/liblayer/include/MANIFEST deleted file mode 100644 index f5fc7922e22..00000000000 --- a/mozilla/lib/liblayer/include/MANIFEST +++ /dev/null @@ -1,7 +0,0 @@ -# -# This is a list of local files which get copied to the mozilla:dist directory -# - -cl_types.h -layers.h -xp_rect.h diff --git a/mozilla/lib/liblayer/include/Makefile.in b/mozilla/lib/liblayer/include/Makefile.in deleted file mode 100644 index 4dee324a94a..00000000000 --- a/mozilla/lib/liblayer/include/Makefile.in +++ /dev/null @@ -1,35 +0,0 @@ -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): -# - -DEPTH = ../../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = layer - -EXPORTS = layers.h xp_rect.h cl_types.h -EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) - -include $(topsrcdir)/config/rules.mk - diff --git a/mozilla/lib/liblayer/include/cl_types.h b/mozilla/lib/liblayer/include/cl_types.h deleted file mode 100644 index 6765a66dd7f..00000000000 --- a/mozilla/lib/liblayer/include/cl_types.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _CL_TYPES_H -#define _CL_TYPES_H - -/* Compositor types */ -typedef struct CL_Compositor CL_Compositor; -typedef struct CL_Layer CL_Layer; -typedef struct CL_Event CL_Event; -typedef struct CL_Drawable CL_Drawable; - -/* This is an opaque data type that corresponds to a - platform-specific region data type. */ -typedef void *FE_Region; -typedef struct _XP_Rect XP_Rect; - -typedef enum -{ - CL_OFFSCREEN_DISABLED, - CL_OFFSCREEN_ENABLED, - CL_OFFSCREEN_AUTO -} CL_OffscreenMode; - -#endif /* _CL_TYPES_H */ diff --git a/mozilla/lib/liblayer/include/layers.h b/mozilla/lib/liblayer/include/layers.h deleted file mode 100644 index 0904b9df2a8..00000000000 --- a/mozilla/lib/liblayer/include/layers.h +++ /dev/null @@ -1,585 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * layers.h - Compositing and layer related definitions and prototypes - */ - - -#ifndef _LAYERS_H_ -#define _LAYERS_H_ - -#include "prtypes.h" -#include "fe_rgn.h" -#include "xp_rect.h" -#include "cl_types.h" - - -/******************Definitions and Types************/ - - -/* Maximum and minimum permitted values for coordinates for layer - positions and bbox's. - Note: We don't use the extrema values of 32-bit integers. - Instead, we deliberately leave headroom to avoid overflow of the - coordinates as a result of translating the rect. */ -#define CL_MAX_COORD ( 0x3fffffffL) -#define CL_MIN_COORD (-0x40000000L) -#define CL_MAX_RECT {CL_MIN_COORD, CL_MIN_COORD, CL_MAX_COORD, CL_MAX_COORD} - - -typedef struct CL_Color -{ - uint8 red, green, blue; -} CL_Color; - -typedef enum CL_LayerPosition { - CL_ABOVE, - CL_BELOW -} CL_LayerPosition; - - -/* A function that repaints a given region in a specified drawable. */ -/* The region returned defines the area actually drawn. If this */ -/* area is a complex region (it cannot be defined by the FE_Region */ -/* primitive) and allow_transparency is FALSE (we are in the front- */ -/* to-back phase of the compositor loop), this should return NULL. */ -/* In this case, the painter function will be called again during */ -/* the back-to-front phase. */ -/* The update_region is specified in window coordinates. The layer */ -/* is responsible for translating this into its own coordinate system */ -/* The region passed back must also be in the window coordinate sys. */ -typedef void (*CL_PainterFunc)(CL_Drawable *drawable, - CL_Layer *layer, - FE_Region update_region); - -/* - * The painter_func returns a region that represents the area drawn. - * This function is called after the compositor uses the region. - */ -typedef void (*CL_RegionCleanupFunc)(CL_Layer *layer, - FE_Region drawn_region); - -/* A function that handles events that relate directly to the layer */ -/* A return value of TRUE indicates that the layer has accepted and */ -/* dealt with the event. FALSE indicates that the event should be */ -/* passed down to the next layer. */ -typedef PRBool (*CL_EventHandlerFunc)(CL_Layer *layer, - CL_Event *event); - -/* Function that's called when the layer is destroyed */ -typedef void (*CL_DestroyFunc)(CL_Layer *layer); - -/* Function that's called to retrieve user-defined data from layer */ -typedef void *(*CL_GetClientDataFunc)(CL_Layer *layer); - -/* Function that's called to set user-defined data for a layer */ -typedef void (*CL_SetClientDataFunc)(CL_Layer *layer, void *client_data); - -/* Function that's called when a layer is moved */ -typedef void (*CL_PositionChangedFunc)(CL_Layer *layer, - int32 x_offset, int32 y_offset); - -/* Function that's called when a layer's hidden state changes */ -typedef void (*CL_VisibilityChangedFunc)(CL_Layer *layer, PRBool visible); - -/* Function that's called when a layer's bounding box changes */ -typedef void (*CL_BboxChangedFunc)(CL_Layer *layer, XP_Rect *new_bbox); - -/* - * A C++-like vtable. These are virtual methods that CL_Layer - * sub-classes should override. I never thought I'd say this, - * but...I'd rather be using C++. - */ -typedef struct CL_LayerVTable -{ - CL_PainterFunc painter_func; - CL_RegionCleanupFunc region_cleanup_func; - CL_EventHandlerFunc event_handler_func; - CL_DestroyFunc destroy_func; - CL_GetClientDataFunc get_client_data_func; - CL_SetClientDataFunc set_client_data_func; - CL_PositionChangedFunc position_changed_func; - CL_VisibilityChangedFunc visibility_changed_func; - CL_BboxChangedFunc bbox_changed_func; -} CL_LayerVTable; - -/* Function called by CL_ForEachLayerInGroup() */ -typedef PRBool (*CL_LayerInGroupFunc)(CL_Layer *layer, void *closure); - -/* Function called by CL_ForEachChildOfLayer() */ -typedef PRBool (*CL_ChildOfLayerFunc)(CL_Layer *layer, void *closure); - -typedef enum -{ - CL_EVENT_MOUSE_BUTTON_DOWN, - CL_EVENT_MOUSE_BUTTON_UP, - CL_EVENT_MOUSE_BUTTON_MULTI_CLICK, - CL_EVENT_MOUSE_MOVE, - CL_EVENT_KEY_DOWN, - CL_EVENT_KEY_UP, - CL_EVENT_MOUSE_ENTER, - CL_EVENT_MOUSE_LEAVE, - CL_EVENT_KEY_FOCUS_GAINED, - CL_EVENT_KEY_FOCUS_LOST -} CL_EventType; - -typedef enum -{ - CL_FOCUS_POLICY_CLICK, /* Layer gets keyboard focus when you click in it */ - CL_FOCUS_POLICY_MOUSE_ENTER /* ...when you the mouse enters its bounds */ -} CL_KeyboardFocusPolicy; - -/* - * A generic event struct. I took the Mac toolbox model of having - * a single event structure encode all types of events. If we had - * more events (and this could happen in the near future), I'd go - * with the X model of having event-specific structures and a - * union of them that's passed around. - */ -struct CL_Event { - CL_EventType type; /* What type of event is this */ - void *fe_event; /* FE-specific event information */ - int32 fe_event_size; /* Size of FE-specific event info */ - int32 x, y; /* The current position of the pointer */ - uint32 which; /* For mouse events: which button is down - 0 = none, 1 onwards starts from the left. - For key events: code for the key pressed */ - uint32 modifiers; /* Modifiers currently in place e.g. shift key */ - uint32 data; /* Other event specific information. - For multi-click events: the number of clicks */ -}; - -#define CL_IS_MOUSE_EVENT(evnt) \ - (((evnt)->type == CL_EVENT_MOUSE_BUTTON_DOWN) || \ - ((evnt)->type == CL_EVENT_MOUSE_BUTTON_MULTI_CLICK) || \ - ((evnt)->type == CL_EVENT_MOUSE_BUTTON_UP) || \ - ((evnt)->type == CL_EVENT_MOUSE_MOVE)) - -#define CL_IS_KEY_EVENT(evnt) \ - (((evnt)->type == CL_EVENT_KEY_DOWN) || \ - ((evnt)->type == CL_EVENT_KEY_UP)) - -#define CL_IS_FOCUS_EVENT(evnt) \ - (((evnt)->type == CL_EVENT_MOUSE_ENTER) || \ - ((evnt)->type == CL_EVENT_MOUSE_LEAVE) || \ - ((evnt)->type == CL_EVENT_KEY_FOCUS_GAINED) || \ - ((evnt)->type == CL_EVENT_KEY_FOCUS_LOST)) - -typedef enum CL_DrawableState { - CL_UNLOCK_DRAWABLE = 0x00, - CL_LOCK_DRAWABLE_FOR_READ = 0x01, - CL_LOCK_DRAWABLE_FOR_WRITE = 0x02, - CL_LOCK_DRAWABLE_FOR_READ_WRITE = 0x03 -} CL_DrawableState; - -/* Function that's called to insure that a drawable used as a backing - store can still be accessed and check that it has not been altered - since the last time the drawable was unlocked. This functions - permits a compositor client to purge its backing store when unlocked. */ -typedef PRBool (*CL_LockDrawableFunc)(CL_Drawable *drawable, - CL_DrawableState state); -/* Function that's called when the drawable is destroyed */ -typedef void (*CL_DestroyDrawableFunc)(CL_Drawable *drawable); - -/* Function that's called to indicate that the drawable will be used. - * No other drawable calls will be made until we InitDrawable. */ -typedef void (*CL_InitDrawableFunc)(CL_Drawable *drawable); - -/* Function that's called to indicate that we're temporarily done with - * the drawable. The drawable won't be used until we call InitDrawable - * again. */ -typedef void (*CL_RelinquishDrawableFunc)(CL_Drawable *drawable); - -/* Function that's called to set coordinate origin of a drawable */ -typedef void (*CL_SetDrawableOriginFunc)(CL_Drawable *drawable, - int32 x_offset, int32 y_offset); - -typedef void (*CL_GetDrawableOriginFunc)(CL_Drawable *drawable, - int32 *x_offset, int32 *y_offset); - -/* Function that's called to set drawing clip region for a drawable */ -typedef void (*CL_SetDrawableClipFunc)(CL_Drawable *drawable, - FE_Region clip_region); - -/* Function that's called to to restore drawing clip region to prior value */ -typedef void (*CL_RestoreDrawableClipFunc)(CL_Drawable *drawable); - -/* BLIT from one drawable to another */ -typedef void (*CL_CopyPixelsFunc)(CL_Drawable *drawable_src, - CL_Drawable *drawable_dest, - FE_Region region); - -/* Function that's called to set drawing clip region for a drawable */ -typedef void (*CL_SetDrawableDimensionsFunc)(CL_Drawable *drawable, - uint32 width, uint32 height); - -/* - * A C++-like vtable. These are virtual methods that CL_Layer - * sub-classes should override. - */ -typedef struct CL_DrawableVTable -{ - CL_LockDrawableFunc lock_func; - CL_InitDrawableFunc init_func; - CL_RelinquishDrawableFunc relinquish_func; - CL_DestroyDrawableFunc destroy_func; - CL_SetDrawableOriginFunc set_origin_func; - CL_GetDrawableOriginFunc get_origin_func; - CL_SetDrawableClipFunc set_clip_func; - CL_RestoreDrawableClipFunc restore_clip_func; - CL_CopyPixelsFunc copy_pixels_func; - CL_SetDrawableDimensionsFunc set_dimensions_func; -} CL_DrawableVTable; - -/* Bitmask for CL_CompositorTarget flags */ -#define CL_WINDOW (0x00) -#define CL_OFFSCREEN (0x01) -#define CL_BACKING_STORE (0x02) -#define CL_PRINTER (0x03) - -typedef enum -{ - CL_DRAWING_METHOD_HYBRID, /* Combination of f-t-b and b-t-f */ - CL_DRAWING_METHOD_BACK_TO_FRONT_ONLY /* Back-to-front drawing only */ -} CL_DrawingMethod; - -/*******************Prototypes**********************/ - -XP_BEGIN_PROTOS - -/***************** LAYER METHODS *****************/ - -/* Values for flags argument to CL_NewLayer(), CL_SetFlags(), etc. */ -#define CL_NO_FLAGS 0x0000 -#define CL_HIDDEN 0x0001 /* Don't draw layer & children */ -#define CL_PREFER_DRAW_ONSCREEN 0x0002 /* Prefer not to use backing store */ -#define CL_PREFER_DRAW_OFFSCREEN 0x0004 /* Draw directly to pixmap ? */ -#define CL_DONT_SCROLL_WITH_DOCUMENT 0x0008 /* Should this layer not scroll ? */ -#define CL_CLIP_CHILD_LAYERS 0x0010 /* Clip drawing of descendents */ -#define CL_DONT_CLIP_SELF 0x0020 /* Clip drawing of this layer ? */ -#define CL_DONT_ENUMERATE 0x0040 /* Don't reflect into JavaScript*/ -#define CL_OPAQUE 0x0080 /* Layer has no transparency */ -#define CL_CUTOUT 0x0100 /* A layer drawn by somebody else */ -#define CL_OVERRIDE_INHERIT_VISIBILITY 0x0200 /* Child visibility is independent - of parent's */ - -/* Allocate and free a layer */ -extern CL_Layer *CL_NewLayer(char *name, int32 x_offset, int32 y_offset, - XP_Rect *bbox, - CL_LayerVTable *vtable, - uint32 flags, void *client_data); - -extern uint32 CL_GetLayerFlags(CL_Layer *layer); -extern PRBool CL_ChangeLayerFlag(CL_Layer *layer, uint32 flag, PRBool value); - -extern void CL_DestroyLayer(CL_Layer *layer); - -/* Frees an entire sub-tree, rooted at the specified node */ -extern void CL_DestroyLayerTree(CL_Layer *root); - -/* Insert a layer into the layer tree as a child of the parent layer. - * If sibling is NULL, the layer is added as the topmost (in z-order) child - * if where==CL_ABOVE or the bottommost child if where==CL_BELOW. - * If sibling is non-NULL, the layer is added above or below (in z-order) - * sibling based on the value of where. - */ -extern void CL_InsertChild(CL_Layer *parent, CL_Layer *child, - CL_Layer *sibling, CL_LayerPosition where); - -/* - * Alternate function for inserting a layer based on its relative z-order. - */ -extern void CL_InsertChildByZ(CL_Layer *parent, CL_Layer *child, int32 z_order); - -/* Removes a layer from a parent's sub-tree */ -extern void CL_RemoveChild(CL_Layer *parent, CL_Layer *child); - -/* Call the function for each child layer of the layer */ -extern PRBool CL_ForEachChildOfLayer(CL_Layer *parent, - CL_ChildOfLayerFunc func, - void *closure); - -extern int32 CL_GetLayerZIndex(CL_Layer *layer); - -/* Change the physical position or dimensions of a layer */ -/* May trigger asynchronous drawing to update screen */ -extern void CL_OffsetLayer(CL_Layer *layer, int32 x_offset, int32 y_offset); -extern void CL_MoveLayer(CL_Layer *layer, int32 x, int32 y); -extern void CL_ResizeLayer(CL_Layer *layer, int32 width, int32 height); - -/* Setters and getters */ -extern void CL_GetLayerBbox(CL_Layer *layer, XP_Rect *bbox); -extern void CL_SetLayerBbox(CL_Layer *layer, XP_Rect *bbox); -extern void CL_GetLayerBboxAbsolute(CL_Layer *layer, XP_Rect *bbox); - -extern char *CL_GetLayerName(CL_Layer *layer); -extern void CL_SetLayerName(CL_Layer *layer, char *name); - -/* Hide or show a layer. This may result in a redraw */ -extern void CL_SetLayerHidden(CL_Layer *layer, PRBool hidden); -extern PRBool CL_GetLayerHidden(CL_Layer *layer); - -extern void *CL_GetLayerClientData(CL_Layer *layer); -extern void CL_SetLayerClientData(CL_Layer *layer, void *client_data); - -extern CL_Compositor *CL_GetLayerCompositor(CL_Layer *layer); -extern CL_Layer *CL_GetLayerAbove(CL_Layer *layer); -extern CL_Layer *CL_GetLayerBelow(CL_Layer *layer); -extern CL_Layer *CL_GetLayerSiblingAbove(CL_Layer *layer); -extern CL_Layer *CL_GetLayerSiblingBelow(CL_Layer *layer); -extern CL_Layer *CL_GetLayerChildByName(CL_Layer *layer, char *name); -extern CL_Layer *CL_GetLayerChildByIndex(CL_Layer *layer, uint index); -extern int CL_GetLayerChildCount(CL_Layer *layer); - -extern int32 CL_GetLayerXOffset(CL_Layer *layer); -extern int32 CL_GetLayerYOffset(CL_Layer *layer); -extern int32 CL_GetLayerXOrigin(CL_Layer *layer); -extern int32 CL_GetLayerYOrigin(CL_Layer *layer); - -extern void CL_GetLayerVTable(CL_Layer *layer, CL_LayerVTable *vtable); -extern void CL_SetLayerVTable(CL_Layer *layer, CL_LayerVTable *vtable); - -extern CL_Layer *CL_GetLayerParent(CL_Layer *layer); - -extern void CL_SetLayerUniformColor(CL_Layer *layer, CL_Color *color); - -/***************** COMPOSITOR METHODS *****************/ - -/* Allocate and free a compositor */ -extern CL_Compositor *CL_NewCompositor(CL_Drawable *primary, - CL_Drawable *backingstore, - int32 x_offset, int32 y_offset, - int32 width, int32 height, - uint32 frame_rate); -extern void CL_DestroyCompositor(CL_Compositor *compositor); - -/* - * Called to indicate that the compositor's contents have changed. This - * is useful when we call into client code and need to confirm, on return, - * that the world hasn't changed around us. - */ -extern void CL_IncrementCompositorGeneration(CL_Compositor *compositor); - -/* Find layer by name. This carries out a breadth-first search of the layer tree */ -extern CL_Layer *CL_FindLayer(CL_Compositor *compositor, char *name); - -/* - * Inform the compositor that some part of the window needs to be - * refreshed. The region to be refreshed is expressed in window - * coordinates. - */ -extern void CL_RefreshWindowRegion(CL_Compositor *compositor, - FE_Region refresh_region); -extern void CL_RefreshWindowRect(CL_Compositor *compositor, - XP_Rect *refresh_rect); - -/* - * Inform the compositor that some part of a layer has changed and - * needs to be redrawn. The region to be updated is expressed in - * the layer's coordinate system. If update_now is TRUE, the - * composite is done synchronously. Otherwise, it is done at the - * next timer callback. - */ -void -CL_UpdateLayerRegion(CL_Compositor *compositor, CL_Layer *layer, - FE_Region update_region, PRBool update_now); - -/* - * Version of CL_UpdateLayerRegion where the update region is - * expressed as a rectangle in the layer's coordinate system. - * Note that the rectangle can have 32-bit coordinates, whereas - * the corresponding region cannot. - */ -void -CL_UpdateLayerRect(CL_Compositor *compositor, CL_Layer *layer, - XP_Rect *update_rect, PRBool update_now); - -/* Redraws all regions changed since last call to CL_CompositeNow(). - * This is called by the timer callback. It can be called otherwise - * to force a synchronous composite. The cutoutp parameter determines - * whether to subtract out cutout layers while drawing. - */ -extern void CL_CompositeNow(CL_Compositor *compositor); - -/* Indicates that the window the compositor is drawing to has been resized */ -extern void CL_ResizeCompositorWindow(CL_Compositor *compositor, - int32 width, int32 height); - - -/* - * Indicates that the window the compositor is drawing to has been scrolled. - * x_origin and y_origin are the new offsets of the top-left of the window - * relative to the top-left of the document. -*/ -extern void CL_ScrollCompositorWindow(CL_Compositor *compositor, - int32 x_origin, int32 y_origin); - -/* - * Dispatch an event to the correct layer. The return value - * indicates whether the event was actually handled. - */ -extern PRBool CL_DispatchEvent(CL_Compositor *compositor, CL_Event *event); - -/* - * All events go to the corresponding layer. - * A layer value of NULL releases the capture. - */ -extern PRBool CL_GrabMouseEvents(CL_Compositor *compositor, CL_Layer *layer); -extern PRBool CL_GrabKeyEvents(CL_Compositor *compositor, CL_Layer *layer); - -/* Functions to determine whether a layer has grabbed mouse or key events. */ -extern PRBool CL_IsMouseEventGrabber(CL_Compositor *compositor, - CL_Layer *layer); -extern PRBool CL_IsKeyEventGrabber(CL_Compositor *compositor, CL_Layer *layer); - -/* Functions to determine which layer has grabbed key events. */ -extern CL_Layer *CL_GetKeyEventGrabber(CL_Compositor *compositor); - -/* Setters and getters */ - -/* Sets whether a compositor offscreen-drawing should occur or not - If enabled is PR_TRUE, the compositor will use offscreen - drawing if applicable. */ -extern void CL_SetCompositorOffscreenDrawing(CL_Compositor *compositor, - CL_OffscreenMode mode); - -extern CL_OffscreenMode CL_GetCompositorOffscreenDrawing(CL_Compositor *compositor); - -/* Sets a compositor's enabled state. Disabling a compositor will */ -/* stop timed composites (but will not prevent explicit composites */ -/* from happening). Enabling a compositor restarts timed draws. */ -extern PRBool CL_GetCompositorEnabled(CL_Compositor *compositor); -extern void CL_SetCompositorEnabled(CL_Compositor *compositor, - PRBool enabled); - -extern CL_Drawable *CL_GetCompositorDrawable(CL_Compositor *compositor); -extern void CL_SetCompositorDrawable(CL_Compositor *compositor, - CL_Drawable *drawable); - -extern CL_Layer *CL_GetCompositorRoot(CL_Compositor *compositor); -extern void CL_SetCompositorRoot(CL_Compositor *compositor, CL_Layer *root); - -extern uint32 CL_GetCompositorFrameRate(CL_Compositor *compositor); -extern void CL_SetCompositorFrameRate(CL_Compositor *compositor, - uint32 frame_rate); - -extern int32 CL_GetCompositorXOffset(CL_Compositor *compositor); -extern int32 CL_GetCompositorYOffset(CL_Compositor *compositor); -extern void CL_GetCompositorWindowSize(CL_Compositor *compositor, - XP_Rect *window_size); - -/* Sets the default keyboard focus change policy */ -extern void CL_SetKeyboardFocusPolicy(CL_Compositor *compositor, - CL_KeyboardFocusPolicy policy); - -extern void CL_SetCompositorDrawingMethod(CL_Compositor *compositor, - CL_DrawingMethod method); - -/***************** Group-related Compositor methods *****************/ - -/* Adds a layer to a group. Returns TRUE if a new group had to be created */ -extern PRBool CL_AddLayerToGroup(CL_Compositor *compositor, - CL_Layer *layer, - char *name); - -/* Remove a layer from a group */ -extern void CL_RemoveLayerFromGroup(CL_Compositor *compositor, - CL_Layer *layer, - char *name); - -/* Get rid of the layer group */ -extern void CL_DestroyLayerGroup(CL_Compositor *compositor, - char *name); - -/* Hide or unhide all layers in the group */ -extern void CL_HideLayerGroup(CL_Compositor *compositor, char *name); -extern void CL_UnhideLayerGroup(CL_Compositor *compositor, char *name); - -/* Move all the layers in a group */ -extern void CL_OffsetLayerGroup(CL_Compositor *compositor, char *name, - int32 x_offset, int32 y_offset); - -/* Execute function for each layer in the group */ -extern PRBool CL_ForEachLayerInGroup(CL_Compositor *compositor, - char *name, - CL_LayerInGroupFunc func, - void *closure); - -/***************** Utility Compositor methods *****************/ - -extern void CL_CreateDefaultLayers(CL_Compositor *compositor); - -/* Convert rectangle from window to document coordinate system */ -extern void CL_WindowToDocumentRect(CL_Compositor *compositor, - XP_Rect *rect); - -/* Convert rectangle from document to window coordinate system */ -extern void CL_DocumentToWindowRect(CL_Compositor *compositor, - XP_Rect *rect); -/* - * This is here temporarily. This is similar to CL_UpdateLayerRect, - * except the rectangle is specified in document coordinates. For - * now, it's a convenience function. In the future, the callers of - * this function should be able to provide a layer. - */ -extern void CL_UpdateDocumentRect(CL_Compositor *compositor, - XP_Rect *update_rect, PRBool update_now); - -/* Convert a rect from window to layer coordinate system */ -extern void CL_WindowToLayerRect(CL_Compositor *compositor, CL_Layer *layer, - XP_Rect *rect); - -/* Convert a rect from layer to window coordinate system */ -extern void CL_LayerToWindowRect(CL_Compositor *compositor, CL_Layer *layer, - XP_Rect *rect); - -/* Convert a region from layer to window coordinate system */ -extern void CL_LayerToWindowRegion(CL_Compositor *compositor, CL_Layer *layer, - FE_Region region); - -/* Convert a region from window to layer coordinate system */ -extern void CL_WindowToLayerRegion(CL_Compositor *compositor, CL_Layer *layer, - FE_Region region); - -/***************** Drawable methods *****************/ - -extern CL_Drawable *CL_NewDrawable(uint width, uint height, - uint32 flags, - CL_DrawableVTable *vtable, - void *client_data); - -extern void CL_DestroyDrawable(CL_Drawable *drawable); - -extern void *CL_GetDrawableClientData(CL_Drawable *drawable); - -extern CL_Color *CL_GetDrawableBgColor(CL_Drawable *drawable, XP_Rect *win_rect); - - -/************* Other utility functions **************/ -extern float CL_RegionEntropy(FE_Region region); -extern void CL_ForEachRectCoveringRegion(FE_Region region, FE_RectInRegionFunc func, - void *closure); - -XP_END_PROTOS - -#endif /* _LAYERS_H_ */ - diff --git a/mozilla/lib/liblayer/include/makefile.win b/mozilla/lib/liblayer/include/makefile.win deleted file mode 100644 index 927e303358c..00000000000 --- a/mozilla/lib/liblayer/include/makefile.win +++ /dev/null @@ -1,24 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -!include $(DEPTH)\config\rules.mak diff --git a/mozilla/lib/liblayer/include/xp_rect.h b/mozilla/lib/liblayer/include/xp_rect.h deleted file mode 100644 index 5a578546918..00000000000 --- a/mozilla/lib/liblayer/include/xp_rect.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * xp_rect.c - Simple rectangle operations - */ - - -#ifndef _XP_RECT_H_ -#define _XP_RECT_H_ - -#include "prtypes.h" -#include "cl_types.h" - -/* A cross-platform rectangle */ -struct _XP_Rect { - int32 top; - int32 left; - int32 bottom; - int32 right; -}; - -XP_BEGIN_PROTOS - -/* This could be a macro */ -extern void XP_CopyRect(XP_Rect *src, XP_Rect *dest); - -/* Predicate to compare two rectangles */ -extern PRBool XP_EqualRect(XP_Rect *r1, XP_Rect *r2); - -/* Offset rectangle in 2D space. This could be a macro */ -extern void XP_OffsetRect(XP_Rect *rect, int32 x_offset, int32 y_offset); - -/* TRUE if point is within the boundary of the rect */ -extern PRBool XP_PointInRect(XP_Rect *rect, int32 x, int32 y); - -/* TRUE if any parts of the two rectangles overlap */ -extern PRBool XP_RectsOverlap(XP_Rect *rect1, XP_Rect *rect2); - -/* TRUE if rect2 is entirely contained within rect1 */ -extern PRBool XP_RectContainsRect(XP_Rect *rect1, XP_Rect *rect2); - -/* dst = src1 intersect src2. dst can be one of src1 or src2 */ -extern void XP_IntersectRect(XP_Rect *src1, XP_Rect *src2, XP_Rect *dst); - -/* dst = bounding box of src1 and src2. dst can be one of src1 or src2 */ -extern void XP_RectsBbox(XP_Rect *src1, XP_Rect *src2, XP_Rect *dst); - -/* Does the rectangle enclose any pixels? */ -extern PRBool XP_IsEmptyRect(XP_Rect *rect); - -XP_END_PROTOS - -#endif /* _XP_RECT_H_ */ diff --git a/mozilla/lib/liblayer/makefile.win b/mozilla/lib/liblayer/makefile.win deleted file mode 100644 index 927e303358c..00000000000 --- a/mozilla/lib/liblayer/makefile.win +++ /dev/null @@ -1,24 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -!include $(DEPTH)\config\rules.mak diff --git a/mozilla/lib/liblayer/src/Makefile.in b/mozilla/lib/liblayer/src/Makefile.in deleted file mode 100644 index b61c758f4b8..00000000000 --- a/mozilla/lib/liblayer/src/Makefile.in +++ /dev/null @@ -1,44 +0,0 @@ -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): -# - -DEPTH = ../../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = layer -LIBRARY_NAME = layer - -REQUIRES = layer dbm img util - -CSRCS = \ - cl_comp.c \ - cl_drwbl.c \ - cl_layer.c \ - cl_util.c \ - cl_group.c \ - xp_rect.c \ - $(NULL) - -include $(topsrcdir)/config/rules.mk - diff --git a/mozilla/lib/liblayer/src/cl_comp.c b/mozilla/lib/liblayer/src/cl_comp.c deleted file mode 100644 index a3fb89f99c2..00000000000 --- a/mozilla/lib/liblayer/src/cl_comp.c +++ /dev/null @@ -1,2460 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * cl_comp.c - The compositor API - */ - - -/* On UNIX, child and sibling windows are always clipped, so - cutout layers are unnecessary. */ -#ifdef XP_UNIX -# define TRIM_UPDATE_REGION_CUTOUTS PR_FALSE -#else -# define TRIM_UPDATE_REGION_CUTOUTS PR_TRUE -#endif - -#include "prtypes.h" -#ifdef XP_MAC -#include "prpriv.h" -#else -#include "private/prpriv.h" /* For PR_NewNamedMonitor */ -#endif - -#include "xp_core.h" -#include "xpassert.h" -#include "fe_proto.h" /* For FE_SetTimeout(), et al */ -#include "layers.h" -#include "cl_priv.h" -#ifdef CL_ADAPT_FRAME_RATE -# include "prtime.h" -#endif - -#ifndef ABS -# define ABS(x) (((x) < 0) ? -(x) : (x)) -#endif - -static void -cl_compute_update_region(CL_Compositor *compositor); - -static PRBool -cl_composite(CL_Compositor *compositor, PRBool cutoutp); - -int cl_trace_level = 0; - -#if !defined(XP_MAC) && defined(DEBUG) /* FE_HighlightRegion is not currently in the mac build */ -void -CL_HighlightRegion(CL_Compositor *compositor, FE_Region region) -{ - extern MWContext *LO_CompositorToContext(CL_Compositor *compositor); - - int time; - MWContext *context = LO_CompositorToContext(compositor); - - time = 200; -#if defined(XP_UNIX) - if (getenv("SHOWREGIONS")) - time = atoi(getenv("SHOWREGIONS")); -#endif - - FE_HighlightRegion(context, region, time); -} -#endif - -/* Allocate and initialize a new compositor */ -CL_Compositor * -CL_NewCompositor(CL_Drawable *primary_drawable, - CL_Drawable *backing_store, - int32 x_offset, int32 y_offset, - int32 width, int32 height, - uint32 frame_rate) -{ - CL_Compositor *compositor; - - compositor = XP_NEW_ZAP(CL_Compositor); - - if (compositor == NULL) - return NULL; - - CL_TRACE(0, ("Creating new compositor: %x", compositor)); - -#ifdef CL_THREAD_SAFE - compositor->monitor = PR_NewNamedMonitor("compositor-monitor"); - if (!compositor->monitor) - return NULL; -#endif - - compositor->gen_id = 0; - compositor->primary_drawable = primary_drawable; - compositor->backing_store = backing_store; - compositor->x_offset = x_offset; - compositor->y_offset = y_offset; - compositor->window_size.left = compositor->window_size.top = 0; - compositor->window_size.right = width; - compositor->window_size.bottom = height; - if (frame_rate) - compositor->frame_period = 1000000.0F / frame_rate; - else - compositor->frame_period = 0.0F; - - compositor->window_region = FE_CreateRectRegion(&compositor->window_size); - compositor->update_region = FE_CreateRegion(); - - compositor->event_containment_lists[0].layer_list = - XP_ALLOC(CL_CONTAINMENT_LIST_SIZE * sizeof(CL_Layer *)); - compositor->event_containment_lists[0].list_size = - CL_CONTAINMENT_LIST_SIZE; - compositor->event_containment_lists[0].list_head = -1; - compositor->event_containment_lists[1].layer_list = - XP_ALLOC(CL_CONTAINMENT_LIST_SIZE * sizeof(CL_Layer *)); - compositor->event_containment_lists[1].list_size = - CL_CONTAINMENT_LIST_SIZE; - compositor->event_containment_lists[1].list_head = -1; - - compositor->backing_store_region = FE_CreateRegion(); - if ((compositor->window_region == NULL) || - (compositor->update_region == NULL) || - (compositor->backing_store_region == NULL) || - (compositor->event_containment_lists[0].layer_list == NULL) || - (compositor->event_containment_lists[1].layer_list == NULL)) { - CL_DestroyCompositor(compositor); - return NULL; - } - compositor->offscreen_enabled = PR_FALSE; - compositor->back_to_front_only = PR_FALSE; - - compositor->mouse_event_grabber = NULL; - compositor->key_event_grabber = NULL; - compositor->last_mouse_event_grabber = NULL; - compositor->focus_policy = CL_FOCUS_POLICY_CLICK; - - primary_drawable->compositor = compositor; - if (backing_store) - backing_store->compositor = compositor; - - cl_InitDrawable(compositor->primary_drawable); - - return compositor; -} - -static int -cl_group_list_destroy(PRHashEntry *he, - int i, - void *arg) -{ - XP_List *list = (XP_List *)he->value; - - XP_ListDestroy(list); - - return HT_ENUMERATE_REMOVE; -} - - -/* Free an existing compositor */ -void -CL_DestroyCompositor(CL_Compositor *compositor) -{ - XP_ASSERT(compositor); - - if (!compositor) - return; - - CL_TRACE(0, ("Destroying compositor: %x", compositor)); - - if (compositor->composite_timeout) - FE_ClearTimeout(compositor->composite_timeout); - - if (compositor->root) - CL_DestroyLayerTree(compositor->root); - - if (compositor->window_region) - FE_DestroyRegion(compositor->window_region); - - if (compositor->update_region) - FE_DestroyRegion(compositor->update_region); - - if (compositor->backing_store_region) - FE_DestroyRegion(compositor->backing_store_region); - - if (compositor->group_table) { - /* Delete all the group lists in the table */ - PR_HashTableEnumerateEntries(compositor->group_table, - cl_group_list_destroy, - NULL); - PR_HashTableDestroy(compositor->group_table); - } - - if (compositor->primary_drawable) { - cl_RelinquishDrawable(compositor->primary_drawable); - CL_DestroyDrawable(compositor->primary_drawable); - } - - if (compositor->backing_store) { - if (compositor->offscreen_initialized) - cl_RelinquishDrawable(compositor->backing_store); - CL_DestroyDrawable(compositor->backing_store); - } - - if (compositor->event_containment_lists[0].layer_list) - XP_FREE(compositor->event_containment_lists[0].layer_list); - - if (compositor->event_containment_lists[1].layer_list) - XP_FREE(compositor->event_containment_lists[1].layer_list); - -#ifdef CL_THREAD_SAFE - if (compositor->monitor) - PR_DestroyMonitor(compositor->monitor); -#endif - - XP_FREE(compositor); -} - -void -CL_IncrementCompositorGeneration(CL_Compositor *compositor) -{ - XP_ASSERT(compositor); - - if (!compositor) - return; - - compositor->gen_id++; -} - -/* Find layer by name. This carries out a breadth-first search */ -/* of the layer tree. Returns NULL if no such layer exists. */ -CL_Layer * -CL_FindLayer(CL_Compositor *compositor, char *name) -{ - XP_List *list; - CL_Layer *layer, *child; - - XP_ASSERT(compositor); - XP_ASSERT(name); - - if (!compositor || !name || !compositor->root) - return NULL; - - /* BUGBUG This is rather an expensive way to maintain a list */ - /* since a little struct is allocated for each element added */ - /* to the list. */ - list = XP_ListNew(); - - if (list == NULL) - return NULL; - - LOCK_COMPOSITOR(compositor); - - XP_ListAddObject(list, compositor->root); - - /* While the list is not empty */ - while ((layer = XP_ListRemoveTopObject(list))) { - - /* Check if the name of this layer matches */ - if (layer->name && strcmp(layer->name, name) == 0) { - XP_ListDestroy(list); - UNLOCK_COMPOSITOR(compositor); - return layer; - } - - /* Add each of the children to the end of the list */ - for (child = layer->top_child; child; child = child->sib_below) - XP_ListAddObjectToEnd(list, child); - } - - XP_ListDestroy(list); - UNLOCK_COMPOSITOR(compositor); - return NULL; -} - -static void -cl_refresh_window_region_common(CL_Compositor *compositor, - FE_Region refresh_region, - PRBool copy_region) -{ - FE_Region draw_region, save_update_region, copy_refresh_region=0; - CL_Drawable *backing_store; - PRBool save_offscreen_inhibited; - - XP_ASSERT(compositor); - XP_ASSERT(refresh_region); - - if (!compositor || !refresh_region) - return; - - CL_TRACE(0, ("Refreshing window region")); - - LOCK_COMPOSITOR(compositor); - -#if 0 - /* Subtract out the cutout layers, since they are out-of-bounds - for compositor drawing. */ - if (compositor->enabled) { - cl_prepare_to_draw(compositor, refresh_region, PR_FALSE); - } -#endif - -/* if (compositor->root) - CL_HighlightRegion(compositor, refresh_region);*/ - - if (compositor->enabled) - cl_compute_update_region(compositor); - - /* Invalidate any parts of the backing store for which there are - update requests. */ - FE_SubtractRegion(compositor->backing_store_region, - compositor->update_region, - compositor->backing_store_region); - - /* Figure out what part of the refresh region has already been - composited into the backing store and blit that onto the - primary drawable. */ - if (compositor->backing_store) { - backing_store = cl_LockDrawableForRead(compositor->backing_store); - if (backing_store) { - draw_region = FE_CreateRegion(); - if (! draw_region) { - UNLOCK_COMPOSITOR(compositor); - return; - } - - FE_IntersectRegion(compositor->backing_store_region, refresh_region, draw_region); - cl_CopyPixels(backing_store, compositor->primary_drawable, - draw_region); - FE_SubtractRegion(refresh_region, draw_region, refresh_region); - FE_DestroyRegion(draw_region); - cl_UnlockDrawable(backing_store); - } - } - - if (compositor->enabled) { - /* Save out the current update region, since we only want to draw - the area that we got a refresh request for. We can't simply - subtract out the refresh area from the update area because - of Windows' behavior: In between the BeginPaint() and EndPaint() - calls, the clip is constrained to be that of the OS's update - region intersected with the clip that we set. But, we don't know - what the resulting cascaded clip. */ - save_update_region = compositor->update_region; - - /* We might have to copy the refresh region, since compositing will - modify it. */ - if (copy_region) { - copy_refresh_region = FE_CreateRegion(); - FE_CopyRegion(refresh_region, copy_refresh_region); - compositor->update_region = copy_refresh_region; - } - else - compositor->update_region = refresh_region; - - /* Subtract out the area that isn't in the composited region */ - FE_IntersectRegion(compositor->window_region, - compositor->update_region, - compositor->update_region); - - /* For speedier scrolling and exposures, we always composite - on-screen for refresh. */ - save_offscreen_inhibited = compositor->offscreen_inhibited; - compositor->offscreen_inhibited = PR_TRUE; - - /* - * Note that we don't subtract out the cutout region when we're - * going through this entry point, since it can be a performance - * hog, especially if we're scrolling. This works for Windows and - * X, but I'm not sure it will work across platforms. - */ - cl_composite(compositor, PR_FALSE); - compositor->offscreen_inhibited = save_offscreen_inhibited; - - /* - * If a layer has changed during the compositing, the update - * region will reflect the changes and will need to be dealt - * with in the next compositing pass. Copy it back into the - * saved update region. - */ - FE_UnionRegion(save_update_region, compositor->update_region, - save_update_region); - - if (copy_region) - FE_DestroyRegion(copy_refresh_region); - - compositor->update_region = save_update_region; - } - else - FE_UnionRegion(compositor->update_region, refresh_region, - compositor->update_region); - - UNLOCK_COMPOSITOR(compositor); -} - - -/* - * Inform the compositor that some part of the window needs to be - * refreshed, e.g. in response to a window expose event. The region - * to be refreshed is expressed in window coordinates. - */ -void -CL_RefreshWindowRegion(CL_Compositor *compositor, FE_Region refresh_region) -{ - cl_refresh_window_region_common(compositor, refresh_region, PR_TRUE); -} - -/* - * Inform the compositor that some part of the window needs to be - * refreshed, e.g. in response to a window expose event. The region - * to be refreshed is expressed in window coordinates. - */ -void -CL_RefreshWindowRect(CL_Compositor *compositor, XP_Rect *refresh_rect) -{ - FE_Region refresh_region = FE_CreateRectRegion(refresh_rect); - - if (! refresh_region) /* OOM */ - return; - - cl_refresh_window_region_common(compositor, refresh_region, PR_FALSE); - FE_DestroyRegion(refresh_region); -} - -/* - * Inform the compositor that some part of a layer has changed and - * needs to be redrawn. The region to be updated is expressed in the - * layer's coordinate system. For efficiency, only the part of the - * passed in region that is not clipped by ancestor layers is actually - * updated. If update_now is PR_TRUE, the composite is done - * synchronously. Otherwise, it is done at the next timer callback. - */ -void -CL_UpdateLayerRegion(CL_Compositor *compositor, CL_Layer *layer, - FE_Region layer_region, PRBool update_now) -{ - int32 x_offset, y_offset; - XP_Rect win_clipped_bbox; - FE_Region update_region, win_clipped_bbox_region; - - XP_ASSERT(compositor); - XP_ASSERT(layer); - XP_ASSERT(layer_region); - - if (!compositor || !layer || !layer_region) - return; - - /* Oddball predicate below is used to combat the case where the - layer was made invisible, updated and made visible again, all - between two composite cycles. In that case, we still want - to repaint the composited area. */ - if (!layer->prev_visible && !layer->visible) - return; - - CL_TRACE(0, ("Updating layer region")); - - LOCK_COMPOSITOR(compositor); - - /* Compute offsets to convert layer coordinates to window coordinates */ - x_offset = layer->x_origin - compositor->x_offset; - y_offset = layer->y_origin - compositor->y_offset; - - /* - * If the offsets are outside the coordinate range we can express - * for regions, we can assume that the region to be updated is - * outside the window rectangle. - */ - if ((ABS(x_offset) > FE_MAX_REGION_COORDINATE) || - (ABS(y_offset) > FE_MAX_REGION_COORDINATE)) { - UNLOCK_COMPOSITOR(compositor); - return; - } - - /* Convert input region from layer coordinates into window coordinates */ - update_region = FE_CreateRegion(); - - XP_ASSERT(update_region); - if (! update_region) { - UNLOCK_COMPOSITOR(compositor); - return; - } - - FE_CopyRegion(layer_region, update_region); - FE_OffsetRegion(update_region, x_offset, y_offset); - - /* Convert clipping bbox of layer from document coordinates to - window coordinates and clip to window bounds. */ - XP_CopyRect(&layer->clipped_bbox, &win_clipped_bbox); - XP_OffsetRect(&win_clipped_bbox, - -compositor->x_offset, -compositor->y_offset); - XP_IntersectRect(&compositor->window_size, - &win_clipped_bbox, - &win_clipped_bbox); - - /* Make the clipping bbox into a region, so we can do intersection */ - win_clipped_bbox_region = FE_CreateRectRegion(&win_clipped_bbox); - XP_ASSERT(win_clipped_bbox_region); - if (! win_clipped_bbox_region) { - FE_DestroyRegion(update_region); - UNLOCK_COMPOSITOR(compositor); - return; - } - - /* Subtract out the area that isn't visible in the layer */ - FE_IntersectRegion(win_clipped_bbox_region, update_region, update_region); - FE_DestroyRegion(win_clipped_bbox_region); - - if (FE_IsEmptyRegion(update_region)) { - FE_DestroyRegion(update_region); - UNLOCK_COMPOSITOR(compositor); - return; - } - - /* Add the altered region to the region to update at the next composite */ - FE_UnionRegion(compositor->update_region, update_region, - compositor->update_region); - - FE_DestroyRegion(update_region); - - if (compositor->enabled) { - if (update_now) - cl_composite(compositor, TRIM_UPDATE_REGION_CUTOUTS); - else - cl_start_compositor_timeouts(compositor); - } - UNLOCK_COMPOSITOR(compositor); -} - -/* - * Inform the compositor that some rectangular part of a layer has - * changed and needs to be redrawn. The region to be updated is - * expressed in the layer's coordinate system. For efficiency, only - * the part of the passed in region that is not clipped by ancestor - * layers is actually updated. If update_now is PR_TRUE, the - * composite is done synchronously. Otherwise, it is done at the next - * timer callback. - */ -void -CL_UpdateLayerRect(CL_Compositor *compositor, CL_Layer *layer, - XP_Rect *layer_rect, PRBool composite_now) -{ - int32 x_offset, y_offset; - XP_Rect update_rect; - - XP_ASSERT(compositor); - XP_ASSERT(layer); - XP_ASSERT(layer_rect); - - if (!compositor || !layer || !layer_rect) - return; - - /* Oddball predicate below is used to combat the case where the - layer was made invisible, updated and made visible again, all - between two composite cycles. In that case, we still want - to repaint the composited area. */ - if (!layer->prev_visible && !layer->visible) - return; - - CL_TRACE(0, ("Updating layer rect")); - - XP_CopyRect(layer_rect, &update_rect); - - LOCK_COMPOSITOR(compositor); - - /* Compute offsets to convert layer coordinates to document coordinates */ - x_offset = layer->x_origin; - y_offset = layer->y_origin; - - /* Convert the update_rect into document coordinates */ - XP_OffsetRect(&update_rect, x_offset, y_offset); - - /* Don't update parts of the layer that are clipped by ancestor layers. */ - XP_IntersectRect(&update_rect, &layer->clipped_bbox, &update_rect); - - CL_UpdateDocumentRect(compositor, &update_rect, composite_now); - - UNLOCK_COMPOSITOR(compositor); -} - -/* - * Inform the compositor that some rectangular part of a document has - * changed and needs to be redrawn. The region to be updated is - * expressed in the document's coordinate system. If update_now is - * PR_TRUE, the composite is done synchronously. Otherwise, it is done - * at the next timer callback. - */ -void -CL_UpdateDocumentRect(CL_Compositor *compositor, - XP_Rect *doc_rect, PRBool update_now) -{ - int32 x_offset, y_offset; - XP_Rect update_rect; - FE_Region update_region; - - XP_ASSERT(compositor); - XP_ASSERT(doc_rect); - - if (!compositor || !doc_rect) - return; - - CL_TRACE(0, ("Updating document rect")); - - XP_CopyRect(doc_rect, &update_rect); - - LOCK_COMPOSITOR(compositor); - - /* Compute offsets to convert document coordinates to window coordinates */ - x_offset = - compositor->x_offset; - y_offset = - compositor->y_offset; - - /* Convert the update_rect into window coordinates */ - XP_OffsetRect(&update_rect, x_offset, y_offset); - - /* - * If there's no overlap between the update_rect and the - * composited area, there's nothing to draw. - */ - if (!XP_RectsOverlap(&compositor->window_size, &update_rect)) { - UNLOCK_COMPOSITOR(compositor); - return; - } - - /* Subtract out the area that isn't in the composited rect */ - XP_IntersectRect(&compositor->window_size, &update_rect, - &update_rect); - - update_region = FE_CreateRectRegion(&update_rect); - - XP_ASSERT(update_region); - if (!update_region) { - UNLOCK_COMPOSITOR(compositor); - return; - } - - /* - * Add the altered region to the region to update at - * the next composite - */ - FE_UnionRegion(compositor->update_region, update_region, - compositor->update_region); - - FE_DestroyRegion(update_region); - - if (compositor->enabled) { - if (update_now) - cl_composite(compositor, TRIM_UPDATE_REGION_CUTOUTS); - else - cl_start_compositor_timeouts(compositor); - } - UNLOCK_COMPOSITOR(compositor); -} - -/* Update the entire contents of a layer and its children. */ -void -cl_UpdateLayer(CL_Layer *layer, PRBool update_now) -{ - if (! layer->compositor) - return; - - /* Update the layer */ - CL_UpdateDocumentRect(layer->compositor, &layer->clipped_bbox, PR_FALSE); - - /* Update the layer's children, but only if there's a possibility - that some children are not clipped by this layer, otherwise - we've already updated with the statement above. */ - if (!layer->clip_children) { - CL_Layer *child; - for (child = layer->top_child; child; child = child->sib_below) { - cl_UpdateLayer(child, PR_FALSE); - } - } - - if (layer->compositor->enabled) { - if (update_now) - cl_composite(layer->compositor, TRIM_UPDATE_REGION_CUTOUTS); - else - cl_start_compositor_timeouts(layer->compositor); - } -} - -/* -The decision whether to draw onscreen or offscreen is made once for -every composite cycle using these rules: - - 1) If compositor->offscreen_inhibited is set, drawing is always - done onscreen. - 2) If compositor->offscreen_enabled is set, drawing is always done - offscreen. - 3) Otherwise, the offscreen mode depends on the drawing-mode flags - set for all the layers that fall within the update-region. - - A layer is either neutral or biased towards drawing onscreen or - drawing offscreen, as indicated by the CL_PREFER_DRAW_ONSCREEN and - CL_PREFER_DRAW_OFFSCREEN flags. - - For rule 3, the set of all layers that falls within the bounding box - of the update-region is examined to determine the drawing mode: - - 3a) If no layer has the CL_PREFER_DRAW_OFFSCREEN flag set, all drawing - is performed onscreen. - 3b) Otherwise, bottom-up drawing is performed offscreen until reaching - a layer that has CL_PREFER_DRAW_ONSCREEN set. Then the offscreen - damaged area is BLTed onscreen and remaining layers are drawn onscreen. - -Top-down drawing is handled differently: It always occurs onscreen unless -CL_PREFER_DRAW_OFFSCREEN is set for an individual layer. -*/ - -static void -cl_setup_offscreen(CL_Compositor *compositor) -{ - if (!compositor->backing_store) - return; - - if (compositor->offscreen_enabled && !compositor->offscreen_inhibited) { - if (!compositor->offscreen_initialized) { - int width = compositor->window_size.right- - compositor->window_size.left; - int height = compositor->window_size.bottom- - compositor->window_size.top; - cl_InitDrawable(compositor->backing_store); - cl_SetDrawableDimensions(compositor->backing_store, width, height); - compositor->offscreen_initialized = PR_TRUE; - } - } else if (compositor->offscreen_initialized) { -#ifdef THRASH_OFFSCREEN - cl_RelinquishDrawable(compositor->backing_store); - compositor->offscreen_initialized = PR_FALSE; -#endif - } -} - -static void -cl_compute_update_region_recurse(CL_Compositor *compositor, - CL_Layer *layer, - FE_Region update_region) -{ - CL_Layer *child; - int32 x_offset, y_offset; - FE_Region layer_update_region; - XP_Rect *win_clipped_bbox; - XP_Rect prev_win_clipped_bbox; - - PRBool visibility_changed, bbox_changed, position_changed; - - /* Find out what properties of the layer have changed since the - last time compositing occurred. */ - visibility_changed = layer->visible != layer->prev_visible; - bbox_changed = !XP_EqualRect(&layer->clipped_bbox, - &layer->prev_clipped_bbox); - x_offset = layer->x_origin - layer->prev_x_origin; - y_offset = layer->y_origin - layer->prev_y_origin; - position_changed = (x_offset || y_offset); - - /* If layer bbox changed, call client-defined callback. */ - if (bbox_changed && layer->vtable.bbox_changed_func) { - XP_Rect bbox_copy; - XP_CopyRect(&layer->bbox, &bbox_copy); - (*layer->vtable.bbox_changed_func)(layer, &bbox_copy); - } - - /* If visibility changed, call client-defined callback. */ - if (visibility_changed && layer->vtable.visibility_changed_func) - (*layer->vtable.visibility_changed_func)(layer, layer->visible); - - /* If layer origin changed, call client-defined callback. */ - if (position_changed && layer->vtable.position_changed_func) - (*layer->vtable.position_changed_func)(layer, x_offset, y_offset); - - /* Compute the bounding box, in window coordinates, of the part of - the layer that isn't clipped by ancestors and which lies within - the bounding box of the window. */ - win_clipped_bbox = &layer->win_clipped_bbox; - XP_CopyRect(&layer->clipped_bbox, win_clipped_bbox); - XP_OffsetRect(win_clipped_bbox, - -compositor->x_offset, -compositor->y_offset); - XP_IntersectRect(win_clipped_bbox, &compositor->window_size, - win_clipped_bbox); - - XP_CopyRect(&layer->prev_clipped_bbox, &prev_win_clipped_bbox); - XP_OffsetRect(&prev_win_clipped_bbox, - -compositor->x_offset, -compositor->y_offset); - XP_IntersectRect(&prev_win_clipped_bbox, &compositor->window_size, - &prev_win_clipped_bbox); - - layer_update_region = FE_NULL_REGION; - if (visibility_changed) { - if (layer->visible) { - if (!layer->cutout) { - layer_update_region = FE_CreateRectRegion(win_clipped_bbox); - XP_ASSERT(layer_update_region); - } - } else { - layer_update_region = FE_CreateRectRegion(&prev_win_clipped_bbox); - XP_ASSERT(layer_update_region); - } - - } else if (layer->visible && (bbox_changed || position_changed)) { - FE_Region win_clipped_region, prev_win_clipped_region; - - win_clipped_region = FE_CreateRectRegion(win_clipped_bbox); - prev_win_clipped_region = FE_CreateRectRegion(&prev_win_clipped_bbox); - - if (win_clipped_region && prev_win_clipped_region) { - layer_update_region = FE_CreateRegion(); - - if (layer->cutout) - FE_SubtractRegion(prev_win_clipped_region, - win_clipped_region, - layer_update_region); - else if (bbox_changed && !position_changed) - cl_XorRegion(win_clipped_region, - prev_win_clipped_region, - layer_update_region); - else - FE_UnionRegion(win_clipped_region, - prev_win_clipped_region, - layer_update_region); - } - - if (win_clipped_region) - FE_DestroyRegion(win_clipped_region); - if (prev_win_clipped_region) - FE_DestroyRegion(prev_win_clipped_region); - XP_ASSERT(layer_update_region); - } - - if (layer_update_region != FE_NULL_REGION) { - FE_UnionRegion(update_region, layer_update_region, update_region); - FE_DestroyRegion(layer_update_region); - } - - /* Set layer properties for subsequent composite cycle */ - layer->prev_visible = layer->visible; - XP_CopyRect(&layer->clipped_bbox, &layer->prev_clipped_bbox); - layer->prev_x_origin = layer->x_origin; - layer->prev_y_origin = layer->y_origin; - - for (child = layer->top_child; child; child = child->sib_below) - cl_compute_update_region_recurse(compositor, child, update_region); -} - -static void -cl_compute_update_region(CL_Compositor *compositor) -{ - /* We may need to recompute the update region iteratively since - layer callbacks may result in changes to layer properties, such - as bbox, visibility and position. */ - while (compositor->recompute_update_region) { - compositor->recompute_update_region = PR_FALSE; - cl_compute_update_region_recurse(compositor, compositor->root, - compositor->update_region); - } -} - -/* Pre-drawing layer initialization in front-to-back order. (This - could be folded into cl_draw_front_to_back, but then we would need - to duplicate this functionality when in back_to_front_only mode. */ -static int -cl_prepare_to_draw_recurse(CL_Compositor *compositor, - CL_Layer *layer, PRBool cutoutp, - XP_Rect *update_bbox, - PRBool *prefer_draw_offscreen_p) -{ - CL_Layer *child; - XP_Rect *win_clipped_bbox; - int descendant_draw_needed = 0; - - /* Debugging assert to make sure that these regions are - destroyed at the end of the composite cycle */ - XP_ASSERT(layer->draw_region == FE_NULL_REGION); - - /* Check if the layer is eligible for compositing. A layer won't - be composited if it is hidden, or it is entirely clipped by - ancestors. */ - if (! layer->visible) { - layer->draw_needed = FALSE; - if (!layer->descendant_visible || layer->cutout) { - layer->descendant_draw_needed = FALSE; - return FALSE; - } - } else { - layer->draw_needed = (layer->vtable.painter_func != NULL); - } - - /* Compute the bounding box, in window coordinates, of the part of - the layer that isn't clipped by ancestors and which lies within - the bounding box of the update region. */ - win_clipped_bbox = &layer->win_clipped_bbox; - XP_CopyRect(&layer->clipped_bbox, win_clipped_bbox); - XP_OffsetRect(win_clipped_bbox, - -compositor->x_offset, -compositor->y_offset); - XP_IntersectRect(win_clipped_bbox, update_bbox, win_clipped_bbox); - - if (XP_IsEmptyRect(win_clipped_bbox)) { - layer->draw_needed = PR_FALSE; - if (!layer->descendant_visible || layer->cutout) { - layer->descendant_draw_needed = PR_FALSE; - return FALSE; - } - } - - /* If this is a cutout layer, add the layer's area to the - off-limits drawing region for the compositor */ - if (layer->cutout) { - if (cutoutp) { - FE_Region win_clipped_region = FE_CreateRectRegion(win_clipped_bbox); - - if (! win_clipped_region) /* OOM check */ - return 0; - - FE_UnionRegion(compositor->cutout_region, - win_clipped_region, - compositor->cutout_region); - FE_DestroyRegion(win_clipped_region); - } - - /* Cutout-layers can't have children and don't draw themselves. */ - layer->draw_needed = PR_FALSE; - layer->descendant_draw_needed = PR_FALSE; - return 0; - } - - /* Recurse for children. - First get the children to draw in front to back order. */ - for (child = layer->top_child; child; child = child->sib_below) { - descendant_draw_needed |= - cl_prepare_to_draw_recurse(compositor, child, cutoutp, update_bbox, - prefer_draw_offscreen_p); - } - layer->descendant_draw_needed = (PRBool)descendant_draw_needed; - - /* If the layer must draw offscreen then do the entire composite - offscreen. */ - if ((layer->draw_needed || descendant_draw_needed) && layer->prefer_draw_offscreen) - *prefer_draw_offscreen_p = PR_TRUE; - - - return (int)layer->draw_needed | descendant_draw_needed; -} - -static void -cl_prepare_to_draw(CL_Compositor *compositor, FE_Region update_region, - PRBool cutoutp, PRBool *prefer_draw_offscreen_p) -{ - XP_Rect update_bbox; - - compositor->cutout_region = FE_CreateRegion(); - if (!compositor->cutout_region) /* OOM */ - return; - - FE_GetRegionBoundingBox(update_region, &update_bbox); - - cl_prepare_to_draw_recurse(compositor, compositor->root, cutoutp, - &update_bbox, prefer_draw_offscreen_p); - - if (cutoutp) - FE_SubtractRegion(update_region, compositor->cutout_region, - update_region); - FE_DestroyRegion(compositor->cutout_region); -} - -/* The front-to-back drawing phase - Yech! Let's get rid of all these arguments. */ -static PRBool -cl_draw_front_to_back_recurse(CL_Compositor *compositor, - CL_Layer *layer, - CL_Layer **top_undrawn_layerp, - CL_Layer **bottom_undrawn_layerp, - CL_Drawable *backing_store, - PRBool *offscreen_layer_drawn_above, - FE_Region update_region, - FE_Region transparent_above, - FE_Region unobscured_by_opaque, - FE_Region offscreen_region) -{ - FE_Region overlap; - CL_Layer *child; - PRBool layer_is_unobscured_by_transparent_layers, done; - CL_Drawable *drawable; - int32 old_x_origin, old_y_origin; - - if (layer->descendant_draw_needed) { - - /* First get the children to draw in front to back order. */ - done = PR_FALSE; - for (child = layer->top_child; child && !done; child = child->sib_below) { - done = cl_draw_front_to_back_recurse(compositor, child, - top_undrawn_layerp, - bottom_undrawn_layerp, - backing_store, - offscreen_layer_drawn_above, - update_region, - transparent_above, - unobscured_by_opaque, - offscreen_region); - } - - /* Have we reached the last layer in the front-to-back pass ? */ - if (done) - return PR_TRUE; - } - - if (!layer->draw_needed) - return PR_FALSE; - - /* Compute the layer's clipping region for drawing. */ - layer->draw_region = FE_CreateRectRegion(&layer->win_clipped_bbox); - FE_IntersectRegion(unobscured_by_opaque, - layer->draw_region, - layer->draw_region); - - /* If the layer is wholly obscured by opaque layers in front of it, - there's nothing to draw. */ - if (FE_IsEmptyRegion(layer->draw_region)) { - layer->draw_needed = PR_FALSE; - if (layer->clip_children) { - layer->descendant_draw_needed = PR_FALSE; - } - FE_DestroyRegion(layer->draw_region); - layer->draw_region = FE_NULL_REGION; - return PR_FALSE; - } - - if (layer->opaque) { - - overlap = FE_CreateRegion(); - FE_IntersectRegion(transparent_above, layer->draw_region, overlap); - layer_is_unobscured_by_transparent_layers = FE_IsEmptyRegion(overlap); - FE_DestroyRegion(overlap); - - /* Are there any non-opaque layers which must draw on top of this - layer ? */ - if (layer_is_unobscured_by_transparent_layers) { - - /* Figure out if we're drawing to the backing store or not */ - if (layer->prefer_draw_onscreen || !backing_store) { - drawable = compositor->primary_drawable; - } else { - drawable = backing_store; - FE_UnionRegion(layer->draw_region, - offscreen_region, - offscreen_region); - } - - /* Set the drawing origin and clip for this layer. */ - cl_GetDrawableOrigin(drawable, &old_x_origin, &old_y_origin); - cl_SetDrawableOrigin(drawable, layer->x_origin, layer->y_origin); - cl_SetDrawableClip(drawable, layer->draw_region); - - /* Draw the layer's contents */ - (*layer->vtable.painter_func)(drawable, - layer, layer->draw_region); - - cl_SetDrawableOrigin(drawable, old_x_origin, old_y_origin); - - /* No other layers either above or below this one need to - update the screen area occupied by this layer. Any - layers are either opaque overlapping layers that have - already been drawn in the front-to-back phase, or they - are below this layer and will therefore be obscured by it. */ - FE_SubtractRegion(update_region, - layer->draw_region, update_region); - - /* We don't need to draw this layer in the back-to-front phase, - since we've already drawn it. */ - layer->draw_needed = PR_FALSE; - } else { - - /* This is the bottommost layer that needs drawing, and which - has not yet been drawn */ - *bottom_undrawn_layerp = layer; - - if (! *top_undrawn_layerp) - *top_undrawn_layerp = layer; - - layer->offscreen_layer_drawn_above = *offscreen_layer_drawn_above; - *offscreen_layer_drawn_above |= (int)layer->prefer_draw_offscreen; - } - - FE_SubtractRegion(unobscured_by_opaque, layer->draw_region, - unobscured_by_opaque); - - /* If we've already drawn the layer, get rid of the draw region */ - if (layer_is_unobscured_by_transparent_layers) { - FE_DestroyRegion(layer->draw_region); - layer->draw_region = FE_NULL_REGION; - } - - /* When the entire remaining update region is obscured by - opaque layers above it, there's nothing left to do. */ - if (FE_IsEmptyRegion(unobscured_by_opaque)) { - return PR_TRUE; - } - } else { - FE_UnionRegion(transparent_above, layer->draw_region, - transparent_above); - *bottom_undrawn_layerp = layer; - if (! *top_undrawn_layerp) - *top_undrawn_layerp = layer; - layer->offscreen_layer_drawn_above = *offscreen_layer_drawn_above; - *offscreen_layer_drawn_above |= (int)layer->prefer_draw_offscreen; - } - - return PR_FALSE; -} - -/* The front-to-back drawing phase */ -static void -cl_draw_front_to_back(CL_Compositor *compositor, - CL_Layer **top_undrawn_layerp, - CL_Layer **bottom_undrawn_layerp, - CL_Drawable *backing_store, - FE_Region update_region, - FE_Region offscreen_region) -{ - FE_Region transparent_above, unobscured_by_opaque; - PRBool offscreen_layer_drawn_above = PR_FALSE; - - transparent_above = FE_CreateRegion(); - if (! transparent_above) { - XP_ASSERT(0); /* OOM */ - return; - } - - unobscured_by_opaque = FE_CopyRegion(update_region, NULL); - if (! unobscured_by_opaque) { - XP_ASSERT(0); /* OOM */ - FE_DestroyRegion(transparent_above); - return; - } - cl_draw_front_to_back_recurse(compositor, compositor->root, - top_undrawn_layerp, bottom_undrawn_layerp, - backing_store, - &offscreen_layer_drawn_above, - update_region, - transparent_above, - unobscured_by_opaque, - offscreen_region); - FE_DestroyRegion(transparent_above); - FE_DestroyRegion(unobscured_by_opaque); -} - -typedef struct cl_back_to_front_state -{ - CL_Compositor *compositor; - CL_Layer *top_undrawn_layer; - CL_Layer *bottom_undrawn_layer; - PRBool *onscreen_layer_drawn_below; - FE_Region update_region; - CL_Drawable *backing_store; - FE_Region offscreen_region; -} cl_back_to_front_state; - -/* The back-to-front drawing phase */ -static CL_BackToFrontStatus -cl_draw_back_to_front_recurse(CL_Layer *layer, - cl_back_to_front_state *s, - CL_BackToFrontStatus status) -{ - CL_Layer *child; - CL_Drawable *drawable; - int32 old_x_origin, old_y_origin; - PRBool *onscreen_layer_drawn_below = s->onscreen_layer_drawn_below; - CL_Drawable *backing_store = s->backing_store; - CL_Compositor *compositor = s->compositor; - - /* Only draw if a draw is necessary and we've already reached - * the bottommost layer that needs to be drawn. - */ - if (layer->draw_needed && ((status == CL_REACHED_BOTTOM_UNDRAWN) || - (layer == s->bottom_undrawn_layer))) { - - /* Clip drawing to the bounds of itself and any ancestors */ - if (!layer->draw_region) { - layer->draw_region = FE_CreateRectRegion(&layer->win_clipped_bbox); - FE_IntersectRegion(s->update_region, layer->draw_region, - layer->draw_region); - } - - /* If any layers beneath this one were drawn onscreen, then this - layer needs to be drawn there also. */ - if (!backing_store || *onscreen_layer_drawn_below) { - drawable = compositor->primary_drawable; - *onscreen_layer_drawn_below = PR_TRUE; - } else { - FE_Region offscreen_region = s->offscreen_region; - - /* If this layer and layers above this one are drawn - onscreen, but all the layers beneath were drawn - offscreen, we need to copy what we've painted so far - from the backing store to the primary drawable. */ - if (layer->prefer_draw_onscreen && - !layer->offscreen_layer_drawn_above && - !*onscreen_layer_drawn_below) { - - /* The clip could have been modified during the - front-to-back phase, so clear it. */ - cl_SetDrawableClip(compositor->primary_drawable, NULL); - cl_CopyPixels(backing_store, compositor->primary_drawable, - offscreen_region); - FE_CLEAR_REGION(offscreen_region); - drawable = compositor->primary_drawable; - *onscreen_layer_drawn_below = PR_TRUE; - } else { - drawable = backing_store; - FE_UnionRegion(offscreen_region, layer->draw_region, - offscreen_region); - } - } - - /* Set the drawing origin and clip for this layer. */ - cl_GetDrawableOrigin(drawable, &old_x_origin, &old_y_origin); - cl_SetDrawableOrigin(drawable, layer->x_origin, layer->y_origin); - cl_SetDrawableClip(drawable, layer->draw_region); - - /* Draw the layer */ - (*layer->vtable.painter_func)(drawable, layer, layer->draw_region); - - cl_SetDrawableOrigin(drawable, old_x_origin, old_y_origin); - - FE_DestroyRegion(layer->draw_region); - layer->draw_region = FE_NULL_REGION; - - /* If this layer is uniformly-colored, push it on the - front-to-back stack of uniformly-colored layers. */ - if (layer->uniform_color) { - XP_ASSERT(layer->opaque); - layer->uniformly_colored_layer_below = - compositor->uniformly_colored_layer_stack; - compositor->uniformly_colored_layer_stack = layer; - } - - /* If we've reached the last layer that couldn't draw in the - front to back phase, it's time to stop. */ - if (layer == s->top_undrawn_layer) - return CL_REACHED_TOP_UNDRAWN; - - /* If we've reached the bottommost (first) layer that needs to be - * drawn, the rest of the layers can start drawing. */ - if (layer == s->bottom_undrawn_layer) - status = CL_REACHED_BOTTOM_UNDRAWN; - } - - if (layer->descendant_draw_needed) { - - /* Get the children to draw in back to front order. - Stop if we've reached the last layer to draw. */ - for (child = layer->bottom_child; - child && (status != CL_REACHED_TOP_UNDRAWN) ; - child = child->sib_above) { - status = cl_draw_back_to_front_recurse(child, s, status); - } - return status; - } - - return status; -} - -/* The back-to-front drawing phase */ -static void -cl_draw_back_to_front(CL_Compositor *compositor, - CL_Layer *top_undrawn_layer, - CL_Layer *bottom_undrawn_layer, - FE_Region update_region, - CL_Drawable *backing_store, - FE_Region offscreen_region) -{ - PRBool onscreen_layer_drawn_below = PR_FALSE; - - cl_back_to_front_state state; - - state.compositor = compositor; - state.top_undrawn_layer = top_undrawn_layer; - state.bottom_undrawn_layer = bottom_undrawn_layer; - state.onscreen_layer_drawn_below = &onscreen_layer_drawn_below; - state.update_region = update_region; - state.backing_store = backing_store; - state.offscreen_region = offscreen_region; - - if (compositor->back_to_front_only) - cl_draw_back_to_front_recurse(compositor->root, &state, - CL_REACHED_BOTTOM_UNDRAWN); - else - cl_draw_back_to_front_recurse(compositor->root, &state, CL_REACHED_NOTHING); -} - - -/* Redraws all regions changed since last call to cl_composite(). - * This is called by the timer callback. It can be also be directly - * called to force a synchronous composite. - */ -static PRBool -cl_composite(CL_Compositor *compositor, PRBool cutoutp) -{ - CL_Layer *top_undrawn_layer, *bottom_undrawn_layer; - CL_Drawable *backing_store; - FE_Region offscreen_region=0, update_region; - PRBool save_offscreen_enabled=PR_FALSE, prefer_draw_offscreen = PR_FALSE; - - XP_ASSERT(compositor); - - if (!compositor || !compositor->root) - return PR_FALSE; - - LOCK_COMPOSITOR(compositor); - - /* Check if there's a region to be drawn... */ - cl_compute_update_region(compositor); - if (FE_IsEmptyRegion(compositor->update_region)) { - UNLOCK_COMPOSITOR(compositor); - return PR_FALSE; - } - - { - XP_Rect bbox; - FE_GetRegionBoundingBox(compositor->update_region, &bbox); - CL_TRACE(0, ("Compositing rectangle [%d, %d, %d, %d]", - bbox.left, bbox.top, bbox.right, bbox.bottom)); - } - - XP_ASSERT(!compositor->composite_in_progress); - compositor->composite_in_progress = PR_TRUE; - - /* - * Copy the current update region and then clear it out. The layer - * painter funcs might actually perform operations that add to the - * update regions and we don't want to lose those updates. - */ - update_region = FE_CopyRegion(compositor->update_region, NULL); - FE_CLEAR_REGION(compositor->update_region); - - /* Initialize temporary per-layer drawing variables. Also determine - whether this composite must be done offscreen. */ - cl_prepare_to_draw(compositor, update_region, cutoutp, - &prefer_draw_offscreen); - - if (prefer_draw_offscreen) { - save_offscreen_enabled = compositor->offscreen_enabled; - compositor->offscreen_enabled = PR_TRUE; - } - cl_setup_offscreen(compositor); - - /* Determine whether or not we'll use a backing store */ - if (compositor->offscreen_inhibited || !compositor->offscreen_enabled || - !compositor->backing_store) { - /* FIXME - what happens if we've disabled the backing store, - but some layers have prefer_draw_offscreen set ? */ - backing_store = NULL; - offscreen_region = FE_NULL_REGION; - - /* Invalidate the parts of the backing store for which there are - update requests. */ - FE_SubtractRegion(compositor->backing_store_region, - compositor->update_region, - compositor->backing_store_region); - } else { - backing_store = cl_LockDrawableForReadWrite(compositor->backing_store); - if (!backing_store) { - /* Couldn't read the backing store. Invalidate its contents. */ - FE_CLEAR_REGION(compositor->backing_store_region); - backing_store = cl_LockDrawableForWrite(compositor->backing_store); - } - - /* Assume that there is a painter for every area of the drawable to - be updated. */ - if (backing_store) - offscreen_region = FE_CreateRegion(); - - } - - compositor->uniformly_colored_layer_stack = NULL; - top_undrawn_layer = bottom_undrawn_layer = NULL; - - /* Front-to-back phase */ - if (!compositor->back_to_front_only) { - cl_draw_front_to_back(compositor, - &top_undrawn_layer, &bottom_undrawn_layer, - backing_store, - update_region, - offscreen_region); - } - - /* Back-to-front phase */ - if (top_undrawn_layer || compositor->back_to_front_only) { - cl_draw_back_to_front(compositor, - top_undrawn_layer, - bottom_undrawn_layer, - update_region, - backing_store, - offscreen_region); - } - - /* Transfer the composited pixels from the backing store to - the onscreen drawable. */ - cl_SetDrawableClip(compositor->primary_drawable, NULL); - if (backing_store) { - if (!FE_IsEmptyRegion(offscreen_region)) { - /* The clip could have been modified during the - front-to-back phase, so clear it. */ - cl_CopyPixels(backing_store, compositor->primary_drawable, - offscreen_region); - } - - cl_UnlockDrawable(backing_store); - - FE_DestroyRegion(offscreen_region); - } - - /* If this composite was forced offscreen, restore the previous state */ - if (prefer_draw_offscreen) - compositor->offscreen_enabled = save_offscreen_enabled; - - /* Get rid of the temporary copy */ - FE_DestroyRegion(update_region); - - /* Set the clip region back to its old value */ - cl_RestoreDrawableClip(compositor->primary_drawable); - - compositor->composite_in_progress = PR_FALSE; - - UNLOCK_COMPOSITOR(compositor); - - return PR_TRUE; -} - -/* External API */ -void -CL_CompositeNow(CL_Compositor *compositor) -{ - cl_composite(compositor, TRIM_UPDATE_REGION_CUTOUTS); -} - -/* - * Indicates that the window the compositor is drawing to has been resized. - * We make the assumption that any refreshing will be carried out by - * calling CL_RefreshWindowRect. - */ -void -CL_ResizeCompositorWindow(CL_Compositor *compositor, int32 width, int32 height) -{ - XP_ASSERT(compositor); - - if (!compositor) - return; - - LOCK_COMPOSITOR(compositor); - - compositor->window_size.right = compositor->window_size.left + width; - compositor->window_size.bottom = compositor->window_size.top + height; - - if (compositor->window_region) - FE_DestroyRegion(compositor->window_region); - - compositor->window_region = FE_CreateRectRegion(&compositor->window_size); - - if (compositor->offscreen_initialized && compositor->backing_store) - cl_SetDrawableDimensions(compositor->backing_store, width, height); - - UNLOCK_COMPOSITOR(compositor); -} - -/* - * Called when the compositor's window scrolls. We make the assumption - * that any refreshing will be carried out by calling CL_RefreshWindowRect - */ -void -CL_ScrollCompositorWindow(CL_Compositor *compositor, - int32 x_origin, int32 y_origin) -{ - int32 delta_x, delta_y; - - XP_ASSERT(compositor); - - if (!compositor) - return; - - LOCK_COMPOSITOR(compositor); - -#if defined(XP_WIN) && _MSC_VER == 1100 - /* Hack to avoid optimizer bug in VC++ v5 */ - delta_x = (compositor->x_offset != x_origin ) || - (compositor->y_offset != y_origin ); - if ( delta_x ) { -#else - if ((compositor->x_offset != x_origin) || - (compositor->y_offset != y_origin)) { -#endif - - /* Invalidate backing store. - For better performance, perhaps we should be scrolling it, instead */ - FE_CLEAR_REGION(compositor->backing_store_region); - - delta_x = compositor->x_offset - x_origin; - delta_y = compositor->y_offset - y_origin; - - /* Are we scrolling a small enough amount that some part of - the current screen contents may remain onscreen ? */ - if ((ABS(delta_x) < FE_MAX_REGION_COORDINATE) && - (ABS(delta_y) < FE_MAX_REGION_COORDINATE)) { - FE_Region update_region = compositor->update_region; - FE_Region window_region = compositor->window_region; - - /* Scroll compositor update region */ - FE_OffsetRegion(update_region, delta_x, delta_y); - - FE_IntersectRegion(window_region, update_region, update_region); - } - - compositor->x_offset = x_origin; - compositor->y_offset = y_origin; - - } - UNLOCK_COMPOSITOR(compositor); -} - -/* Sets whether a compositor offscreen-drawing should occur or not */ -/* If enabled is PR_TRUE, the compositor will use offscreen */ -/* drawing if applicable. */ -void -CL_SetCompositorOffscreenDrawing(CL_Compositor *compositor, - CL_OffscreenMode mode) -{ - XP_ASSERT(compositor); - if (!compositor) - return; - - switch (mode) { - case CL_OFFSCREEN_ENABLED: - compositor->offscreen_enabled = PR_TRUE; - compositor->offscreen_inhibited = PR_FALSE; - break; - case CL_OFFSCREEN_DISABLED: - compositor->offscreen_inhibited = PR_TRUE; - break; - case CL_OFFSCREEN_AUTO: - compositor->offscreen_enabled = PR_FALSE; - compositor->offscreen_inhibited = PR_FALSE; - break; - } -} - -CL_OffscreenMode -CL_GetCompositorOffscreenDrawing(CL_Compositor *compositor) -{ - PRBool enabled; - XP_ASSERT(compositor); - if (! compositor) - return PR_FALSE; - - if (compositor->offscreen_inhibited) - return CL_OFFSCREEN_DISABLED; - - enabled = compositor->offscreen_enabled; - return enabled ? CL_OFFSCREEN_ENABLED : CL_OFFSCREEN_AUTO; -} - -/* Frame-rate excursion limits */ -#define MAX_FRAME_PERIOD (1000000.0F / CL_FRAME_RATE_MIN) -#define MIN_FRAME_PERIOD (1000000.0F / CL_FRAME_RATE_MAX) -#define INITIAL_FRAME_PERIOD (1000000.0F / CL_FRAME_RATE_INITIAL) - -/* Timeout callback for time-based compositing. - - Adaptively adjust the frame-rate at which compositing is done based - on the CPU load. (CPU load is estimated by measuring the ability - of recent composite timeouts to meet their deadlines.) - */ -static void -cl_compositor_callback(void *closure) -{ -#ifdef CL_ADAPT_FRAME_RATE - unsigned int i, index, filter_length, delay_line_index; - int64 slack64, frame_period64, delay64, nominal_deadline64, now64; - int32 slack, delay, slip, clamped_slack; - double earliness, smoothed_slack, frame_period, adjust; - - CL_Compositor *compositor = (CL_Compositor *)closure; - frame_period = compositor->frame_period; - - XP_ASSERT(compositor->frame_period != 0); /* should never be here in static case */ - if (compositor->frame_period == 0) - return; /* to avoid divide by zero, since fundamentally should never be here */ - - /* First, do the actual drawing work */ - if (cl_composite(compositor, TRIM_UPDATE_REGION_CUTOUTS) == PR_FALSE) { - - compositor->nothing_to_do_count++; - - if (compositor->nothing_to_do_count > 5) { - - /* - * Clear the timeout, because we are in the closure - * function, and we don't want another dangling timer. - */ - compositor->composite_timeout = NULL; /* VERY IMPORTANT */ - compositor->nothing_to_do_count = 0; - return; - } - } else { - compositor->nothing_to_do_count = 0; - } - - /* Compute the "slack", which indicates how late (or early) the - compositor was meeting its deadline. Positive slack numbers - indicate earliness. Negative numbers lateness. */ - now64 = PR_Now(); - nominal_deadline64 = compositor->nominal_deadline64; - LL_SUB(slack64, nominal_deadline64, now64); - LL_L2I(slack, slack64); - - slack -= (int32)((1.0 - CL_CPU_LOAD) * frame_period); - - /* Clamp slack to maximum permitted amount of frame-period adjustment. */ - slip = 0; - if (frame_period - slack > MAX_FRAME_PERIOD) { - clamped_slack = (int32)(frame_period - MAX_FRAME_PERIOD); - slip = clamped_slack - slack; - } - - /* Store latest slack value in the delay line, a circular array - that keeps track of the most recent slack values. */ - delay_line_index = compositor->delay_line_index; - if (delay_line_index == DELAY_LINE_LENGTH) { - /* First time we're running the timeout. Initialize the delay line */ - for (i = 0; i < DELAY_LINE_LENGTH; i++) - compositor->delay_line[i] = slack; - } else { - /* Push most recent slack value into circular delay line */ - compositor->delay_line[delay_line_index] = slack; - } - - /* Compute the number of filter taps corresponding to the - requested duration of the filter, assuming that the - compositor's frame-rate changes slowly. */ - - /* This should never happen, since we check for this up top. But just in case */ - /* something changes in the future in the above code, this is here */ - /* just to make sure we find a potential divide by zero quickly, and don't do it. - XP_ASSERT(frame_period != 0); - - if(frame_period == 0) - filter_length = DELAY_LINE_LENGTH; - else - */ - - filter_length = (unsigned int) ((SLOW_FILTER_DURATION * 1000) / frame_period); - - if (filter_length > DELAY_LINE_LENGTH) - filter_length = DELAY_LINE_LENGTH; - if (filter_length < 4) - filter_length = 4; - - /* Average the last <filter_length> values in the circular delay - line to create a smoothed slow-response filtering of the slack - values. Create a "fast-response" filter that uses half as many - elements as the "slow" one. */ - smoothed_slack = 0; - earliness = 0; - for (i = 0; i < filter_length; i++) { - int32 slack_val; - - index = delay_line_index - i; - index &= (DELAY_LINE_LENGTH - 1); - slack_val = compositor->delay_line[index]; - smoothed_slack += slack_val; - if (slack_val > 0) - earliness += slack_val; - } - smoothed_slack /= filter_length; - earliness /= filter_length; - - /* Update next index in circular delay-line */ - delay_line_index++; - delay_line_index &= (DELAY_LINE_LENGTH - 1); - compositor->delay_line_index = delay_line_index; - - adjust = earliness + ((smoothed_slack > 0) ? 0 : smoothed_slack * 0.35); - - /* Adjust the frame rate, but don't allow the frame rate to excur - outside its preset limits. */ - if (adjust < 0) { - /* Slack is decreasing, Let's decrease the CPU load by - decreasing the frame rate. */ - frame_period -= 0.10 * adjust; - if (frame_period > MAX_FRAME_PERIOD) - frame_period = MAX_FRAME_PERIOD; - } else { - /* Slack is negative and decreasing. (Really, we're - finishing earlier and getting more so) ; Increase - frame-rate to make use of available CPU. */ - frame_period -= 0.20 * adjust; - if (frame_period < MIN_FRAME_PERIOD) - frame_period = MIN_FRAME_PERIOD; - } - compositor->frame_period = (float)frame_period; - - /* Compute delay from now until start of next composite timeout */ - LL_SUB(delay64, nominal_deadline64, now64); - LL_L2I(delay, delay64); - delay = (delay + 500) / 1000; /* Convert from microseconds to ms */ - - /* Compute nominal completion time for next composite timeout */ - LL_I2L(frame_period64, (int32)frame_period + slip); - LL_ADD(nominal_deadline64, nominal_deadline64, frame_period64); - compositor->nominal_deadline64 = nominal_deadline64; - - /* Impose minimum delay to prevent timeouts from being scheduled - back-to-back */ - if (delay < CL_MIN_TIMEOUT) - delay = CL_MIN_TIMEOUT; - - /* Schedule the next compositor timeout. */ - compositor->composite_timeout = - FE_SetTimeout((TimeoutCallbackFunction)cl_compositor_callback, - (void *)compositor, - (uint32)delay); - -#else /* !CL_ADAPT_FRAME_RATE */ - CL_Compositor *compositor = (CL_Compositor *)closure; - cl_composite(compositor, TRIM_UPDATE_REGION_CUTOUTS); - compositor->composite_timeout = - FE_SetTimeout((TimeoutCallbackFunction)cl_compositor_callback, - (void *)compositor, 0); -#endif /* CL_ADAPT_FRAME_RATE */ -} - -PRBool -CL_GetCompositorEnabled(CL_Compositor *compositor) -{ - XP_ASSERT(compositor); - - if (!compositor) - return PR_FALSE; - - return compositor->enabled; -} - - -void -cl_start_compositor_timeouts(CL_Compositor *compositor) -{ - int64 frame_period64, now64; - - XP_ASSERT(compositor); - if (compositor == NULL) - return; - - if (compositor->frame_period == 0) /* indicates static case, no timeouts... */ - return; - - /* No need to start timeouts if already started */ - if (compositor->composite_timeout) - return; - - if (!compositor->enabled) - return; - - /* Compute nominal time for next composite timeout */ - now64 = PR_Now(); - LL_I2L(frame_period64, (int32)compositor->frame_period); - LL_ADD(compositor->nominal_deadline64, now64, frame_period64); - - /* Special value indicates empty delay line */ - compositor->delay_line_index = DELAY_LINE_LENGTH; - compositor->composite_timeout = - FE_SetTimeout((TimeoutCallbackFunction)cl_compositor_callback, - (void *)compositor, 0); -} - - -/* Sets a compositor's enabled state. Disabling a compositor will */ -/* stop timed composites (but will not prevent explicit composites */ -/* from happening). Enabling a compositor restarts timed draws. */ -void -CL_SetCompositorEnabled(CL_Compositor *compositor, PRBool enabled) -{ - XP_ASSERT(compositor); - - if (!compositor) - return; - - CL_TRACE(0, ("Setting compositor enabled state to %d ", enabled)); - - if (enabled && (compositor->enabled == PR_FALSE) && compositor->frame_period) { - cl_composite(compositor, TRIM_UPDATE_REGION_CUTOUTS); - - CL_TRACE(0, ("Starting compositor timeout")); - cl_start_compositor_timeouts(compositor); - } - else if (!enabled && (compositor->enabled == PR_TRUE)) { - if (compositor->composite_timeout) - FE_ClearTimeout(compositor->composite_timeout); - compositor->composite_timeout = NULL; - if (compositor->offscreen_initialized) { - cl_RelinquishDrawable(compositor->backing_store); - compositor->offscreen_initialized = PR_FALSE; - } - } - - compositor->enabled = enabled; -} - -CL_Drawable * -CL_GetCompositorDrawable(CL_Compositor *compositor) -{ - XP_ASSERT(compositor); - - if (!compositor) - return NULL; - - return compositor->primary_drawable; -} - -void -CL_SetCompositorDrawable(CL_Compositor *compositor, - CL_Drawable *drawable) -{ - XP_ASSERT(compositor); - - if (!compositor) - return; - - compositor->primary_drawable = drawable; - drawable->compositor = compositor; -} - -CL_Layer * -CL_GetCompositorRoot(CL_Compositor *compositor) -{ - XP_ASSERT(compositor); - - if (!compositor) - return NULL; - - return compositor->root; -} - -/* Set a layer as the root of the layer tree */ -void -CL_SetCompositorRoot(CL_Compositor *compositor, CL_Layer *root) -{ - XP_ASSERT(compositor); - - if (!compositor) - return; - - CL_TRACE(0,("Setting root of compositor %x to layer %x", compositor, root)); - - LOCK_COMPOSITOR(compositor); - - compositor->root = root; - - if (root) { - cl_SetCompositorRecursive(root, compositor); - - cl_LayerAdded(compositor, root); - } - - UNLOCK_COMPOSITOR(compositor); -} - -uint32 -CL_GetCompositorFrameRate(CL_Compositor *compositor) -{ - XP_ASSERT(compositor); - - if (!compositor) - return 0; - - if (compositor->frame_period == 0) - return 0; - else - return (uint32)((1000000.0 / compositor->frame_period) + 0.5); -} - -void -CL_SetCompositorFrameRate(CL_Compositor *compositor, uint32 frame_rate) -{ - XP_ASSERT(compositor); - - if (!compositor) - return; - - LOCK_COMPOSITOR(compositor); - - if (frame_rate) - compositor->frame_period = 1000000.0F / frame_rate; - else - compositor->frame_period = 0.0F; - - /* BUGBUG This is probably the wrong behavior. If we had better */ - /* timing services, we could do better. */ - if (compositor->enabled && compositor->frame_period) { - if (compositor->composite_timeout) { - FE_ClearTimeout(compositor->composite_timeout); - compositor->composite_timeout = NULL; - } - - cl_start_compositor_timeouts(compositor); - } - - UNLOCK_COMPOSITOR(compositor); -} - -int32 -CL_GetCompositorXOffset(CL_Compositor *compositor) -{ - XP_ASSERT(compositor); - - if (!compositor) - return 0; - - return compositor->x_offset; -} - -int32 -CL_GetCompositorYOffset(CL_Compositor *compositor) -{ - XP_ASSERT(compositor); - - if (!compositor) - return 0; - - return compositor->y_offset; -} - -void CL_GetCompositorWindowSize(CL_Compositor *compositor, - XP_Rect *window_size) -{ - XP_ASSERT(compositor); - XP_ASSERT(window_size); - - if (!compositor || !window_size) - return; - - LOCK_COMPOSITOR(compositor); - *window_size = compositor->window_size; - UNLOCK_COMPOSITOR(compositor); -} - -static PRBool -cl_build_containment_list(CL_Compositor *compositor, CL_Layer *layer, - int32 which_list) -{ - int32 index = 0; - CL_EventContainmentList *list = - &compositor->event_containment_lists[which_list]; - - while (layer) { - /* - * XXX We're assuming here that we don't have to do anything - * special for Win16, since the depth of the layer tree will - * hopefully not be > 8k (i.e. 32K segment boundary/4 bytes - * per pointer). Watch me eat my words one day. - */ - if (index >= list->list_size) { - list->list_size += CL_CONTAINMENT_LIST_INCREMENT; - list->layer_list = XP_REALLOC(list->layer_list, list->list_size); - if (list->layer_list == NULL) - return PR_FALSE; - } - - list->layer_list[index++] = layer; - layer = CL_GetLayerParent(layer); - } - - list->list_head = index-1; - - return PR_TRUE; -} - -/* - * This function checks for a change in either mouse or keyboard focus. - * For mouse events, the focus has changed if the last layer to get - * mouse events is different from the current one. In that case, we - * build a containment list for the two layers. A containment list is - * just a glorified name for a list consisting of the path from the - * root of the layer tree down to the layer. Consider the following - * example where layer C is the old mouse grabber and layer E the new - * one. - * root - * /\ - * / ... - * A - * | - * B - * / \ - * C D - * | - * E - * - * In this case the containment list for layer C is root-A-B-C and the - * containment list for layer E is root-A-B-D-E. We trace down both - * lists till we reach a point where there is a divergence. In this - * example, this point is below layer B. For the sub-tree rooted at B - * that holds the old mouse grabber (layer C) we send MOUSE_LEAVE events - * and for the sub-tree that holds the new mouse grabber (layer E) we - * send MOUSE_ENTER events. This ensures that MOUSE_LEAVE and MOUSE_ENTER - * events are sent for to all layers for which leaving and entering has - * happened. - */ -static void -cl_check_focus_change(CL_Compositor *compositor, CL_Layer *new_grabber, - CL_Event *mouse_event) -{ - PRBool mouse_enter_occured = PR_FALSE; - - if (new_grabber != compositor->last_mouse_event_grabber) { - CL_Event crossing_event; - CL_Layer *last_grabber = compositor->last_mouse_event_grabber; - int32 old_list_num = compositor->last_containment_list; - int32 new_list_num = CL_NEXT_CONTAINMENT_LIST(old_list_num); - int32 old_list_index, new_list_index; - CL_EventContainmentList *old_list, *new_list; - - old_list = &compositor->event_containment_lists[old_list_num]; - new_list = &compositor->event_containment_lists[new_list_num]; - - /* Build the containment list for the new mouse grabber */ - if (!cl_build_containment_list(compositor, - new_grabber, - new_list_num)) - return; - - old_list_index = old_list->list_head; - new_list_index = new_list->list_head; - - /* - * Starting from the root, we trace downward in the tree, until - * we find a divergence in the path. - */ - while ((old_list_index >= 0) && (new_list_index >= 0) && - (old_list->layer_list[old_list_index] == - new_list->layer_list[new_list_index])) { - old_list_index--; - new_list_index--; - } - - crossing_event.x = crossing_event.y = 0; - - /* - * Send a mouse leave event to all layers that the mouse - * has moved out of. - */ - while (old_list_index >= 0) { - CL_Layer *layer = old_list->layer_list[old_list_index]; - - if (layer && (layer->vtable.event_handler_func != NULL)) { - crossing_event.type = CL_EVENT_MOUSE_LEAVE; - crossing_event.which = (uint32)new_grabber; - crossing_event.fe_event = NULL; - crossing_event.x = mouse_event->x; - crossing_event.y = mouse_event->y; - crossing_event.modifiers = 0; - (*layer->vtable.event_handler_func)(layer, &crossing_event); - } - old_list_index--; - } - - - /* - * Send a mouse enter to all the new layers into which the mouse - * has moved. - */ - while (new_list_index >= 0) - { - CL_Layer *layer = new_list->layer_list[new_list_index]; - - if (layer && (layer->vtable.event_handler_func != NULL)) { - crossing_event.type = CL_EVENT_MOUSE_ENTER; - crossing_event.which = (uint32)last_grabber; - crossing_event.fe_event = NULL; - crossing_event.x = mouse_event->x; - crossing_event.y = mouse_event->y; - crossing_event.modifiers = 0; - (*layer->vtable.event_handler_func)(layer, &crossing_event); - mouse_enter_occured = PR_TRUE; - } - new_list_index--; - } - - compositor->last_containment_list = new_list_num; - compositor->last_mouse_event_grabber = new_grabber; - } - - /* - * Check for a keyboard focus change, depending on the policy - */ - if ((((compositor->focus_policy == CL_FOCUS_POLICY_CLICK) && - (mouse_event->type == CL_EVENT_MOUSE_BUTTON_DOWN) && - (mouse_event->which == 1)) || - ((compositor->focus_policy == CL_FOCUS_POLICY_MOUSE_ENTER) && - mouse_enter_occured)) && - (new_grabber != compositor->key_event_grabber)) { - CL_Event keyboard_focus_event; - CL_Layer *last_grabber = compositor->key_event_grabber; - PRBool accepted = PR_TRUE; - - keyboard_focus_event.x = keyboard_focus_event.y - = keyboard_focus_event.modifiers = 0; - - /* Tell the new guy that he's gained focus */ - if (new_grabber && - (new_grabber->vtable.event_handler_func != NULL)){ - keyboard_focus_event.type = CL_EVENT_KEY_FOCUS_GAINED; - keyboard_focus_event.which = (uint32)last_grabber; - keyboard_focus_event.fe_event = NULL; - accepted = (*new_grabber->vtable.event_handler_func)(new_grabber, - &keyboard_focus_event); - } - - if (accepted) { - /* Tell the old event focus holder that it's lost focus */ - if (last_grabber && - (last_grabber->vtable.event_handler_func != NULL)){ - keyboard_focus_event.type = CL_EVENT_KEY_FOCUS_LOST; - keyboard_focus_event.which = (uint32)new_grabber; - keyboard_focus_event.fe_event = NULL; - (*last_grabber->vtable.event_handler_func)(last_grabber, - &keyboard_focus_event); - } - - compositor->key_event_grabber = new_grabber; - } - } -} - - -static PRBool -cl_front_to_back_event_dispatch(CL_Compositor *compositor, CL_Layer *layer, - CL_Event *event) -{ - CL_Layer *child; - PRBool event_grabbed = PR_FALSE; - uint32 old_gen_id; - - old_gen_id = compositor->gen_id; - - if (!layer->hidden) { - /* - * First we ask the children if they're interested. - * Stop if one of them grabs the event. - */ - for (child = layer->top_child; - child && !event_grabbed; - child = child->sib_below) { - event_grabbed = cl_front_to_back_event_dispatch(compositor, - child, event); - } - - /* - * Now check if the event occurred within this layer. - * If so, call the event handler if one exists - */ - if (!event_grabbed && - XP_PointInRect(&layer->clipped_bbox, event->x, event->y) && - (layer->vtable.event_handler_func != NULL)) { - - event->x -= layer->x_origin; - event->y -= layer->y_origin; - - event_grabbed = (*layer->vtable.event_handler_func)(layer, event); - - /* - * If something in the event handler caused the gen_id to - * fail, then we just bail out of here and hope that we - * do nothing else that will access the old state of the - * compositor. - */ - if (compositor->gen_id != old_gen_id) - return PR_TRUE; - - /* - * Check for mouse entering/leaving for layers. If - * the current event grabber (for mouse events) is not the - * same as the last one, we synthesize the appropriate event. - */ - if (event_grabbed && CL_IS_MOUSE_EVENT(event)) - cl_check_focus_change(compositor, layer, event); - - event->x += layer->x_origin; - event->y += layer->y_origin; - } - - return event_grabbed; - } - - return PR_FALSE; -} - -/* Dispatch an event to the correct layer */ -PRBool -CL_DispatchEvent(CL_Compositor *compositor, CL_Event *event) -{ - CL_Layer *layer; - uint32 old_gen_id; - - XP_ASSERT(compositor); - XP_ASSERT(event); - - if (!compositor || !event || !compositor->root) - return PR_FALSE; - - if (event->type == CL_EVENT_MOUSE_MOVE) { - compositor->last_mouse_x = event->x; - compositor->last_mouse_y = event->y; - compositor->last_mouse_button = event->which; - } - else if (event->type == CL_EVENT_MOUSE_BUTTON_DOWN) - compositor->last_mouse_button = event->which; - - old_gen_id = compositor->gen_id; - - if (compositor->mouse_event_grabber && CL_IS_MOUSE_EVENT(event)) { - layer = compositor->mouse_event_grabber; - if (layer->vtable.event_handler_func) { - PRBool ret; - - event->x -= layer->x_origin; - event->y -= layer->y_origin; - ret = ((*layer->vtable.event_handler_func)(layer, event)); - - if (compositor->gen_id != old_gen_id) - return ret; - - /* Check for a focus change */ - if (ret) - cl_check_focus_change(compositor, layer, event); - - return ret; - } - } - else if (compositor->key_event_grabber && CL_IS_KEY_EVENT(event)) { - layer = compositor->key_event_grabber; - if (layer->vtable.event_handler_func) { - event->x -= layer->x_origin; - event->y -= layer->y_origin; - return ((*layer->vtable.event_handler_func)(layer, event)); - } - } - else - return cl_front_to_back_event_dispatch(compositor, - compositor->root, - event); - - return PR_FALSE; -} - -/* All mouse events go to this layer. If layer is NULL, stop grabbing */ -PRBool -CL_GrabMouseEvents(CL_Compositor *compositor, CL_Layer *layer) -{ - XP_ASSERT(compositor); - - if (!compositor) - return PR_FALSE; - - compositor->mouse_event_grabber = layer; - return PR_TRUE; -} - -/* All key events go to this layer. If layer is NULL, stop grabbing */ -PRBool -CL_GrabKeyEvents(CL_Compositor *compositor, CL_Layer *layer) -{ - CL_Event keyboard_focus_event; - CL_Layer *last_grabber, *new_grabber; - PRBool accepted = PR_TRUE; - - XP_ASSERT(compositor); - - if (!compositor) - return PR_FALSE; - - keyboard_focus_event.x = keyboard_focus_event.y = 0; - - last_grabber = compositor->key_event_grabber; - new_grabber = layer; - - if (new_grabber && - (new_grabber->vtable.event_handler_func != NULL)){ - keyboard_focus_event.type = CL_EVENT_KEY_FOCUS_GAINED; - keyboard_focus_event.which = (uint32)last_grabber; - keyboard_focus_event.fe_event = NULL; - accepted = (*new_grabber->vtable.event_handler_func)(new_grabber, - &keyboard_focus_event); - } - - if (accepted) { - if (last_grabber && - (last_grabber->vtable.event_handler_func != NULL)){ - keyboard_focus_event.type = CL_EVENT_KEY_FOCUS_LOST; - keyboard_focus_event.which = (uint32)new_grabber; - keyboard_focus_event.fe_event = NULL; - (*last_grabber->vtable.event_handler_func)(last_grabber, - &keyboard_focus_event); - } - - compositor->key_event_grabber = layer; - return PR_TRUE; - } - else - return PR_FALSE; -} - -/* Returns PR_TRUE if layer is the mouse event grabber. */ -PRBool -CL_IsMouseEventGrabber(CL_Compositor *compositor, CL_Layer *layer) -{ - XP_ASSERT(compositor); - - if (!compositor) - return PR_FALSE; - - return (PRBool)(compositor->mouse_event_grabber == layer); -} - -/* Returns PR_TRUE if layer is the key event grabber. */ -PRBool -CL_IsKeyEventGrabber(CL_Compositor *compositor, CL_Layer *layer) -{ - XP_ASSERT(compositor); - - if (!compositor) - return PR_FALSE; - - return (PRBool)(compositor->key_event_grabber == layer); -} - -/* Returns PR_TRUE if layer is the key event grabber. */ -CL_Layer * -CL_GetKeyEventGrabber(CL_Compositor *compositor) -{ - XP_ASSERT(compositor); - - if (!compositor) - return NULL; - - return (compositor->key_event_grabber); -} - -void -CL_SetKeyboardFocusPolicy(CL_Compositor *compositor, - CL_KeyboardFocusPolicy focus_policy) -{ - XP_ASSERT(compositor); - - if (!compositor) - return; - - compositor->focus_policy = focus_policy; -} - -void -CL_SetCompositorDrawingMethod(CL_Compositor *compositor, - CL_DrawingMethod method) -{ - XP_ASSERT(compositor); - - if (!compositor) - return; - - compositor->back_to_front_only = - (method == CL_DRAWING_METHOD_BACK_TO_FRONT_ONLY); -} - - -/* Called when a layer is added to the layer tree */ -void -cl_LayerAdded(CL_Compositor *compositor, CL_Layer *layer) -{ - XP_ASSERT(compositor); - XP_ASSERT(layer); - - cl_ParentChanged(layer); - - /* If this child is visible, ask the compositor to update its area */ - if (layer->visible) - cl_UpdateLayer(layer, PR_FALSE); -} - -void -cl_LayerDestroyed(CL_Compositor *compositor, CL_Layer *layer) -{ - XP_ASSERT(compositor); - XP_ASSERT(layer); - - if (!compositor || !layer) - return; - - if (layer == compositor->mouse_event_grabber) - compositor->mouse_event_grabber = NULL; - if (layer == compositor->key_event_grabber) - compositor->key_event_grabber = NULL; - if (layer == compositor->last_mouse_event_grabber) { - compositor->event_containment_lists[compositor->last_containment_list].list_head = -1; - compositor->last_mouse_event_grabber = NULL; - } - - compositor->gen_id++; -} - -/* Called when a layer is removed from the layer tree */ -void -cl_LayerRemoved(CL_Compositor *compositor, CL_Layer *layer) -{ - XP_ASSERT(compositor); - XP_ASSERT(layer); - - if (!compositor || !layer) - return; - - /* If this child was visible, ask the compositor - to update the area it formerly occupied. */ - if (layer->visible) - cl_UpdateLayer(layer, PR_FALSE); - - if (layer == compositor->last_mouse_event_grabber) { - compositor->event_containment_lists[compositor->last_containment_list].list_head = -1; - compositor->last_mouse_event_grabber = NULL; - } -} - -void -cl_LayerMoved(CL_Compositor *compositor, CL_Layer *layer) -{ - - /* The auto-generation of mousemoves is playing havoc with the - * REAL mouse moves. Commented out until further notice. */ - if (0) { - /* - * If the layer that grabbed mouse events has moved, the - * movement is equivalent to a mouse move. - */ - if (compositor && compositor->mouse_event_grabber == layer) { - CL_Event event; - - event.type = CL_EVENT_MOUSE_MOVE; - event.fe_event = NULL; - event.x = compositor->last_mouse_x - layer->x_offset; - event.y = compositor->last_mouse_y - layer->y_offset; - event.which = compositor->last_mouse_button; - - if (layer->vtable.event_handler_func) - (*layer->vtable.event_handler_func)(layer, &event); - } - } -} diff --git a/mozilla/lib/liblayer/src/cl_drwbl.c b/mozilla/lib/liblayer/src/cl_drwbl.c deleted file mode 100644 index ee80c7648e9..00000000000 --- a/mozilla/lib/liblayer/src/cl_drwbl.c +++ /dev/null @@ -1,215 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "xp_mem.h" /* For XP_NEW_ZAP */ -#include "xpassert.h" /* For XP_ASSERT, et al */ -#include "cl_priv.h" - -CL_Drawable * -CL_NewDrawable(uint width, uint height, uint32 flags, - CL_DrawableVTable *vtable, - void *client_data) -{ - CL_Drawable *cl_drawable = XP_NEW_ZAP(CL_Drawable); - if (! client_data) - return NULL; - - cl_drawable->width = width; - cl_drawable->height = height; - cl_drawable->flags = flags; - - if (vtable) - cl_drawable->vtable = *vtable; - - cl_drawable->client_data = client_data; - - return cl_drawable; -} - -/* Most of the following functions could be successfully turned into - macros, so perhaps this level of abstraction is excessive */ - -void -CL_DestroyDrawable(CL_Drawable *drawable) -{ - if (drawable->vtable.destroy_func) - (*drawable->vtable.destroy_func)(drawable); - XP_FREE(drawable); -} - -void *CL_GetDrawableClientData(CL_Drawable *drawable) -{ - return drawable->client_data; -} - -void -cl_SetDrawableOrigin(CL_Drawable *drawable, int32 x_offset, int32 y_offset) -{ - drawable->x_offset = x_offset; - drawable->y_offset = y_offset; - if (drawable->vtable.set_origin_func) - (*drawable->vtable.set_origin_func)(drawable, - x_offset, y_offset); -} - -void -cl_GetDrawableOrigin(CL_Drawable *drawable, int32 *x_offset, int32 *y_offset) -{ - if (drawable->vtable.get_origin_func) - (*drawable->vtable.get_origin_func)(drawable, - x_offset, y_offset); - else { - *x_offset = drawable->x_offset; - *y_offset = drawable->y_offset; - } -} - -void -cl_InitDrawable(CL_Drawable *drawable) -{ - if (drawable->vtable.init_func) - (*drawable->vtable.init_func)(drawable); -} - -void -cl_RelinquishDrawable(CL_Drawable *drawable) -{ - if (drawable->vtable.relinquish_func) - (*drawable->vtable.relinquish_func)(drawable); -} - -void -cl_SetDrawableClip(CL_Drawable *drawable, FE_Region clip_region) -{ - drawable->clip_region = clip_region; - if (drawable->vtable.set_clip_func) - (*drawable->vtable.set_clip_func)(drawable, clip_region); -} - -void -cl_RestoreDrawableClip(CL_Drawable *drawable) -{ - drawable->clip_region = NULL; - if (drawable->vtable.restore_clip_func) - (*drawable->vtable.restore_clip_func)(drawable); -} - -CL_Drawable * -cl_LockDrawableForRead(CL_Drawable *drawable) -{ - if (drawable->vtable.lock_func) { - if (! (*drawable->vtable.lock_func)(drawable, - CL_LOCK_DRAWABLE_FOR_READ)) - return NULL; - } - return drawable; -} - -CL_Drawable * -cl_LockDrawableForReadWrite(CL_Drawable *drawable) -{ - if (drawable->vtable.lock_func) { - if (! (*drawable->vtable.lock_func)(drawable, - CL_LOCK_DRAWABLE_FOR_READ_WRITE)) - return NULL; - } - return drawable; -} - -CL_Drawable * -cl_LockDrawableForWrite(CL_Drawable *drawable) -{ - if (drawable->vtable.lock_func) { - if (! (*drawable->vtable.lock_func)(drawable, - CL_LOCK_DRAWABLE_FOR_WRITE)) - return NULL; - } - return drawable; -} - -void -cl_UnlockDrawable(CL_Drawable *drawable) -{ - if (drawable->vtable.lock_func) { - (*drawable->vtable.lock_func)(drawable, - CL_UNLOCK_DRAWABLE); - } -} - -void -cl_CopyPixels(CL_Drawable *src, CL_Drawable *dest, FE_Region region) -{ - XP_ASSERT(src); - XP_ASSERT(dest); - - if (!src || !dest) - return; - - XP_ASSERT(dest->vtable.copy_pixels_func); - if (src->vtable.copy_pixels_func) - (*src->vtable.copy_pixels_func)(src, dest, - region); -} - -void -cl_SetDrawableDimensions(CL_Drawable *drawable, uint32 width, uint32 height) -{ - if (!drawable) - return; - if (drawable->vtable.set_dimensions_func) - (*drawable->vtable.set_dimensions_func)(drawable, - width, height); -} - -/* This function indicates whether or not a given rectangle is painted - with a single, uniform color and, if so, returns the color. NULL - is returned if the area contains more than one color. This - function must only be called during drawing. */ -CL_Color * -CL_GetDrawableBgColor(CL_Drawable *drawable, XP_Rect *win_rect) -{ - CL_Layer *layer; - CL_Compositor *compositor = drawable->compositor; - - /* A background color is only valid during the draw of a given layer */ - XP_ASSERT(compositor->composite_in_progress); - if (!compositor->composite_in_progress) - return NULL; - - /* Loop in front-to-back order over uniformly colored layers */ - layer = compositor->uniformly_colored_layer_stack; - while (layer) { - XP_Rect *layer_win_rect = &layer->win_clipped_bbox; - XP_Rect overlap; - - XP_IntersectRect(layer_win_rect, win_rect, &overlap); - if (!XP_IsEmptyRect(&overlap)) { - if (XP_RectContainsRect(layer_win_rect, win_rect)) { - return layer->uniform_color; - } else { - return NULL; - } - } - layer = layer->uniformly_colored_layer_below; - } - return NULL; -} diff --git a/mozilla/lib/liblayer/src/cl_group.c b/mozilla/lib/liblayer/src/cl_group.c deleted file mode 100644 index 4a3796114c4..00000000000 --- a/mozilla/lib/liblayer/src/cl_group.c +++ /dev/null @@ -1,269 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * cl_group.c - Layer group API - */ - - -#include "prtypes.h" -#include "plhash.h" -#include "xp.h" -#include "layers.h" -#include "cl_priv.h" - - -/* - * BUGBUG For now we use this local version to has hash group - * names. Use the canned NSPR function when it gets checked in. - */ -static PRHashNumber -cl_hash_string(const void *key) -{ - PRHashNumber h; - const unsigned char *s; - - h = 0; - for (s = key; *s; s++) - h = (h >> 28) ^ (h << 4) ^ *s; - return h; -} - -static int -cl_compare_strings(const void *key1, const void *key2) -{ - return strcmp(key1, key2) == 0; -} - -static int -cl_compare_values(const void *value1, const void *value2) -{ - return value1 == value2; -} - -PRBool -CL_AddLayerToGroup(CL_Compositor *compositor, - CL_Layer *layer, - char *name) -{ - XP_List *group_list; - PRBool ret_val = PR_FALSE; - - XP_ASSERT(compositor); - XP_ASSERT(layer); - XP_ASSERT(name); - - if (!compositor || !layer || !name) - return PR_FALSE; - - if (compositor->group_table == NULL){ - compositor->group_table = PR_NewHashTable(CL_GROUP_HASH_TABLE_SIZE, - cl_hash_string, - cl_compare_strings, - cl_compare_values, - NULL, NULL); - - if (compositor->group_table == NULL) - return PR_FALSE; - } - - if ((group_list = (XP_List *)PR_HashTableLookup(compositor->group_table, - name)) == NULL){ - group_list = XP_ListNew(); - if (group_list == NULL) - return PR_FALSE; - - PR_HashTableAdd(compositor->group_table, name, group_list); - ret_val = PR_TRUE; - } - - XP_ListAddObject(group_list, layer); - - return ret_val; -} - -void -CL_RemoveLayerFromGroup(CL_Compositor *compositor, - CL_Layer *layer, - char *name) -{ - XP_List *group_list; - - XP_ASSERT(compositor); - XP_ASSERT(layer); - XP_ASSERT(name); - - if (!compositor || !layer || !name) - return; - - if (compositor->group_table == NULL) - return; - - if ((group_list = (XP_List *)PR_HashTableLookup(compositor->group_table, - name)) == NULL) - return; - - /* Remove the layer from the group list */ - XP_ListRemoveObject(group_list, layer); - - /* If the list is empty, get rid of it */ - if (XP_ListIsEmpty(group_list)){ - PR_HashTableRemove(compositor->group_table, name); - XP_ListDestroy(group_list); - } -} - -void -CL_DestroyLayerGroup(CL_Compositor *compositor, - char *name) -{ - XP_List *group_list; - - XP_ASSERT(compositor); - XP_ASSERT(name); - - if (!compositor || !name) - return; - - if (compositor->group_table == NULL) - return; - - if ((group_list = (XP_List *)PR_HashTableLookup(compositor->group_table, - name)) == NULL) - return; - - /* Get rid of the list */ - PR_HashTableRemove(compositor->group_table, name); - XP_ListDestroy(group_list); -} - - -/* - * BUGBUG CL_HideLayerGroup, CL_UnhideLayerGroup and - * CL_OffsetLayerGroup can all be implemented using - * CL_ForEachLayerInGroup...and they should be. Cutting - * and pasting was just the easy way out. - */ -void -CL_HideLayerGroup(CL_Compositor *compositor, char *name) -{ - XP_List *group_list; - CL_Layer *layer; - - XP_ASSERT(compositor); - XP_ASSERT(name); - - if (!compositor || !name) - return; - - if (compositor->group_table == NULL) - return; - - group_list = (XP_List *)PR_HashTableLookup(compositor->group_table, - name); - if (group_list == 0) - return; - - while ((layer = XP_ListNextObject(group_list))) - CL_SetLayerHidden(layer, PR_TRUE); -} - -void -CL_OffsetLayerGroup(CL_Compositor *compositor, char *name, - int32 x_offset, int32 y_offset) -{ - XP_List *group_list; - CL_Layer *layer; - - XP_ASSERT(compositor); - XP_ASSERT(name); - - if (!compositor || !name) - return; - - if (compositor->group_table == NULL) - return; - - group_list = (XP_List *)PR_HashTableLookup(compositor->group_table, - name); - if (group_list == 0) - return; - - while ((layer = XP_ListNextObject(group_list))) - CL_OffsetLayer(layer, x_offset, y_offset); -} - -void -CL_UnhideLayerGroup(CL_Compositor *compositor, char *name) -{ - XP_List *group_list; - CL_Layer *layer; - - XP_ASSERT(compositor); - XP_ASSERT(name); - - if (!compositor || !name) - return; - - if (compositor->group_table == NULL) - return; - - group_list = (XP_List *)PR_HashTableLookup(compositor->group_table, - name); - if (group_list == 0) - return; - - while ((layer = XP_ListNextObject(group_list))) - CL_SetLayerHidden(layer, PR_FALSE); -} - - -PRBool -CL_ForEachLayerInGroup(CL_Compositor *compositor, - char *name, - CL_LayerInGroupFunc func, - void *closure) -{ - PRBool done; - XP_List *group_list; - CL_Layer *layer; - - XP_ASSERT(compositor); - XP_ASSERT(name); - - if (!compositor || !name) - return PR_FALSE; - - if (compositor->group_table == NULL) - return PR_TRUE; - - group_list = (XP_List *)PR_HashTableLookup(compositor->group_table, - name); - if (group_list == 0) - return PR_TRUE; - - while ((layer = XP_ListNextObject(group_list))) { - done = (PRBool)!(*func)(layer, closure); - if (done) return PR_FALSE; - } - - return PR_TRUE; -} diff --git a/mozilla/lib/liblayer/src/cl_layer.c b/mozilla/lib/liblayer/src/cl_layer.c deleted file mode 100644 index 71380154998..00000000000 --- a/mozilla/lib/liblayer/src/cl_layer.c +++ /dev/null @@ -1,1091 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * cl_layer.c - API for the CL_Layer type - */ - - -#include "prtypes.h" -#include "xp_mem.h" /* For XP_NEW_ZAP */ -#include "xpassert.h" /* For XP_ASSERT, et al */ -#include "xp_list.h" -#include "layers.h" -#include "cl_priv.h" -#ifdef XP_MAC -#include "macstdlibextras.h" /* for strdup */ -#endif - -static void -cl_hidden_changed(CL_Layer *layer); - -/* Allocate and initialize a new layer */ -CL_Layer * -CL_NewLayer(char *name, int32 x_offset, int32 y_offset, - XP_Rect *bbox, - CL_LayerVTable *vtable, - uint32 flags, void *client_data) -{ - CL_Layer *new_layer; - - new_layer = XP_NEW_ZAP(CL_Layer); - - if (new_layer == NULL) - return NULL; - - new_layer->name = name ? strdup(name) : NULL; - if (bbox) - new_layer->bbox = *bbox; - - /* XXX - consider sharing the vtable, instead of copying it */ - if (vtable) - new_layer->vtable = *vtable; - - new_layer->x_offset = x_offset; - new_layer->y_offset = y_offset; - - new_layer->hidden = !!(flags & CL_HIDDEN); - new_layer->scrolling = !!(flags & CL_DONT_SCROLL_WITH_DOCUMENT); - new_layer->clip_children = !!(flags & CL_CLIP_CHILD_LAYERS); - new_layer->clip_self = !(flags & CL_DONT_CLIP_SELF); - new_layer->opaque = !!(flags & CL_OPAQUE); - new_layer->prefer_draw_onscreen = !!(flags & CL_PREFER_DRAW_ONSCREEN); - new_layer->prefer_draw_offscreen = !!(flags & CL_PREFER_DRAW_OFFSCREEN); - new_layer->enumerated = !(flags & CL_DONT_ENUMERATE); - new_layer->cutout = !!(flags & CL_CUTOUT); - new_layer->override_inherit_visibility = - !!(flags & CL_OVERRIDE_INHERIT_VISIBILITY); - new_layer->client_data = client_data; - new_layer->draw_region = FE_NULL_REGION; - - return new_layer; -} - -/* Destroy an existing layer */ -void -CL_DestroyLayer(CL_Layer *layer) -{ - CL_Layer *parent_layer; - XP_ASSERT(layer); - - if (!layer) - return; - - if (layer->compositor) - cl_LayerDestroyed(layer->compositor, layer); - - parent_layer = CL_GetLayerParent(layer); - if (parent_layer) - CL_RemoveChild(parent_layer, layer); - - if (layer->vtable.destroy_func) - (*layer->vtable.destroy_func)(layer); - - XP_FREEIF(layer->uniform_color); - XP_FREEIF(layer->name); - XP_FREE(layer); -} - -/* Frees an entire sub-tree, rooted at the specified node */ -void -CL_DestroyLayerTree(CL_Layer *root) -{ - CL_Layer *child, *next; - - XP_ASSERT(root); - - if (!root) - return; - - /* Iterate through the child list. For each child, recurse and free */ - for (child = root->top_child; child; child = next) { - /* Need to grab the next child here, because child will be freed */ - next = child->sib_below; - CL_DestroyLayerTree(child); - } - - CL_DestroyLayer(root); -} - -uint32 -CL_GetLayerFlags(CL_Layer *layer) -{ - uint32 flags = 0; - flags |= CL_HIDDEN * (layer->hidden == PR_TRUE); - flags |= CL_DONT_SCROLL_WITH_DOCUMENT * (layer->scrolling == PR_FALSE); - flags |= CL_CLIP_CHILD_LAYERS * (layer->clip_children == PR_TRUE); - flags |= CL_DONT_CLIP_SELF * (layer->clip_self == PR_FALSE); - flags |= CL_OPAQUE * (layer->opaque == PR_TRUE); - flags |= CL_PREFER_DRAW_ONSCREEN * (layer->prefer_draw_onscreen == PR_TRUE); - flags |= CL_PREFER_DRAW_OFFSCREEN * (layer->prefer_draw_offscreen == PR_TRUE); - flags |= CL_DONT_ENUMERATE * (layer->enumerated == PR_FALSE); - flags |= CL_CUTOUT * (layer->cutout == PR_TRUE); - flags |= CL_OVERRIDE_INHERIT_VISIBILITY * (layer->override_inherit_visibility == PR_TRUE); - - return flags; -} - -static PRBool -cl_change_layer_flags(CL_Layer *layer, uint32 new_flags) -{ - PRBool success; - uint32 old_flags = CL_GetLayerFlags(layer); - uint32 changed_flags = old_flags ^ new_flags; - - /* Assume success */ - success = PR_TRUE; - - if (changed_flags == 0) - return success; - - if (changed_flags & CL_HIDDEN) - CL_SetLayerHidden(layer, (PRBool)((new_flags & CL_HIDDEN) != 0)); - - if (changed_flags & CL_OVERRIDE_INHERIT_VISIBILITY) { - layer->override_inherit_visibility = - !!(new_flags & CL_OVERRIDE_INHERIT_VISIBILITY); - cl_hidden_changed(layer); - } - - if (changed_flags & - (CL_DONT_SCROLL_WITH_DOCUMENT | CL_CLIP_CHILD_LAYERS | CL_DONT_CLIP_SELF)) { - XP_ASSERT(0); /* We don't support changing this on the fly yet */ - success = PR_FALSE; - } - - if (changed_flags & CL_OPAQUE) { - layer->opaque = ((new_flags & CL_OPAQUE) != 0); - if (!layer->opaque) - CL_SetLayerUniformColor(layer, NULL); - } - - if (changed_flags & CL_PREFER_DRAW_ONSCREEN) { - layer->prefer_draw_onscreen = (new_flags & CL_PREFER_DRAW_ONSCREEN) != 0; - layer->prefer_draw_offscreen = PR_FALSE; - } - - if (changed_flags & CL_PREFER_DRAW_OFFSCREEN) { - layer->prefer_draw_offscreen = (new_flags & CL_PREFER_DRAW_OFFSCREEN) != 0; - layer->prefer_draw_onscreen = PR_FALSE; - } - - if (changed_flags & CL_DONT_ENUMERATE) - layer->enumerated = (new_flags & CL_DONT_ENUMERATE) == 0; - - if (changed_flags & CL_CUTOUT) - layer->cutout = (new_flags & CL_CUTOUT) != 0; - - return success; -} - -extern PRBool -CL_ChangeLayerFlag(CL_Layer *layer, uint32 flag, PRBool value) -{ - uint32 old_flags, new_flags; - - LOCK_LAYERS(layer); - - old_flags = CL_GetLayerFlags(layer); - if (value) - new_flags = old_flags | flag; - else - new_flags = old_flags & ~flag; - - cl_change_layer_flags(layer, new_flags); - - UNLOCK_LAYERS(layer); - - return value; -} - -PRBool -CL_ForEachChildOfLayer(CL_Layer *parent, - CL_ChildOfLayerFunc func, - void *closure) -{ - CL_Layer *child, *next; - PRBool done; - CL_Compositor *compositor; - - XP_ASSERT(parent); - XP_ASSERT(func); - - if (!parent) - return PR_FALSE; - - compositor = parent->compositor; - if (compositor) - LOCK_COMPOSITOR(compositor); - - /* Iterate through the child list. For each child, recurse and free */ - for (child = parent->top_child; child; child = next) { - /* - * Need to grab the next child here, in case child - * is no longer valid - */ - next = child->sib_below; - if (func) { - done = (PRBool) ! (*func)(child, closure); - if (done) { - if (compositor) - UNLOCK_COMPOSITOR(compositor); - return PR_FALSE; - } - } - } - - if (compositor) - UNLOCK_COMPOSITOR(compositor); - return PR_TRUE; -} - -void -cl_SetCompositorRecursive(CL_Layer *layer, CL_Compositor *compositor) -{ - CL_Layer *child; - - for(child = layer->top_child; child; child = child->sib_below) - cl_SetCompositorRecursive(child, compositor); - - layer->compositor = compositor; -} - -/* Insert a layer into the layer tree as a child of the parent layer. - * If sibling is NULL, the layer is added as the topmost (in z-order) child - * if where==CL_ABOVE or the bottommost child if where==CL_BELOW. - * If sibling is non-NULL, the layer is added above or below (in z-order) - * sibling based on the value of where. - */ -void -CL_InsertChild(CL_Layer *parent, CL_Layer *child, - CL_Layer *sibling, CL_LayerPosition where) -{ - XP_ASSERT(parent); - - if (!parent) - return; - - LOCK_LAYERS(parent); - - /* If no sibling is specified... */ - if (sibling == NULL) { - /* If there are no children */ - if (parent->top_child == NULL) - parent->top_child = parent->bottom_child = child; - - else if (where == CL_ABOVE) { - /* Add it as the first child */ - child->sib_below = parent->top_child; - child->sib_above = NULL; - parent->top_child = child; - if (child->sib_below) - child->sib_below->sib_above = child; - child->z_index = child->sib_below->z_index; - } - - else { - /* Add it as the last child */ - child->sib_above = parent->bottom_child; - child->sib_below = NULL; - parent->bottom_child = child; - if (child->sib_above) - child->sib_above->sib_below = child; - child->z_index = child->sib_above->z_index; - } - } - else { - if (where == CL_ABOVE) { - child->sib_above = sibling->sib_above; - child->sib_below = sibling; - /* If there is a sibling above this, point it at child */ - if (sibling->sib_above) - sibling->sib_above->sib_below = child; - /* Otherwise, sibling was the first child */ - else - parent->top_child = child; - sibling->sib_above = child; - } - else { - child->sib_below = sibling->sib_below; - child->sib_above = sibling; - /* If there is a sibling below this, point it at child */ - if (sibling->sib_below) - sibling->sib_below->sib_above = child; - /* Otherwise, sibling was the last child */ - else - parent->bottom_child = child; - sibling->sib_below = child; - } - child->z_index = sibling->z_index; - } - - cl_SetCompositorRecursive(child, parent->compositor); - child->parent = parent; - - if (child->compositor) - cl_LayerAdded(child->compositor, child); - - UNLOCK_LAYERS(parent); -} - -void -CL_InsertChildByZ(CL_Layer *parent, CL_Layer *child, int32 z_index) -{ - CL_Layer *sibling; - XP_ASSERT(parent); - - if (!parent) - return; - - LOCK_LAYERS(parent); - - for (sibling = parent->top_child; sibling; sibling = sibling->sib_below) { - if (sibling->z_index <= z_index) - break; - } - - if (sibling) - CL_InsertChild(parent, child, sibling, CL_ABOVE); - else - CL_InsertChild(parent, child, NULL, CL_BELOW); - - child->z_index = z_index; - - UNLOCK_LAYERS(parent); -} - -/* Removes a layer from a parent's sub-tree */ -void -CL_RemoveChild(CL_Layer *parent, CL_Layer *child) -{ - XP_ASSERT(parent); - XP_ASSERT(child); - - if (!parent || !child) - return; - - LOCK_LAYERS(parent); - - if (child == parent->top_child) - parent->top_child = child->sib_below; - if (child == parent->bottom_child) - parent->bottom_child = child->sib_above; - - if (child->sib_above) - child->sib_above->sib_below = child->sib_below; - if (child->sib_below) - child->sib_below->sib_above = child->sib_above; - - if (CL_IsMouseEventGrabber(child->compositor, child)) - CL_GrabMouseEvents(child->compositor, NULL); - if (CL_IsKeyEventGrabber(child->compositor, child)) - CL_GrabKeyEvents(child->compositor, NULL); - - child->parent = NULL; - - cl_LayerRemoved(parent->compositor, child); - - UNLOCK_LAYERS(parent); -} - -/* A rectangle that covers the entire world. - Note: We don't use the extrema values for 32-bit integers. Instead, - we deliberately leave headroom to avoid overflow of the coordinates - as a result of translating the rect. */ -static XP_Rect max_rect = CL_MAX_RECT; - -/* Return the clipping box, in document coordinates, that this layer - applies to child layers */ -static XP_Rect * -cl_clipping_bbox(CL_Layer *layer) -{ - if (! layer) - return &max_rect; - - if (layer->clip_children) - return &layer->clipped_bbox; - - return cl_clipping_bbox(layer->parent); -} - -/* Propagate changes in the bboxes of layers to their children. This - may cause the origin of child layers to change and may also change - their widths and heights due to clipping. */ -static PRBool -cl_bbox_changed_recurse(CL_Layer *layer, XP_Rect *parent_clip_bbox, - PRBool ancestor_not_hidden, - int32 x_parent_origin, int32 y_parent_origin) -{ - CL_Layer *child; - XP_Rect *child_clip_bbox; - int32 x_origin, y_origin; - PRBool visible, not_hidden; - int descendant_visible; - XP_Rect *clipped_bbox = &layer->clipped_bbox; - XP_Rect *layer_bbox = &layer->bbox; - PRBool clip_children = (PRBool)(layer->clip_children && layer->clip_self); - - /* Compute new layer origin, in document coordinates */ - x_origin = layer->x_origin = x_parent_origin + layer->x_offset; - y_origin = layer->y_origin = y_parent_origin + layer->y_offset; - - /* A layer is considered visible for purposes of compositing if ... - = the layer is not hidden, and - = none of the layer's ancestors is hidden, and - = the layer is not entirely clipped by ancestor layers */ - not_hidden = visible = (PRBool)(!layer->hidden && - (ancestor_not_hidden || layer->override_inherit_visibility)); - - if (layer->clip_self) { - - /* Get layer bounds in coordinates relative to parent layer */ - XP_CopyRect(layer_bbox, clipped_bbox); - - /* Convert to document coordinates */ - XP_OffsetRect(clipped_bbox, x_origin, y_origin); - - /* Clip by parents bbox */ - if (parent_clip_bbox) { - - if (layer->cutout) { - /* Special case: a cutout layer is rendered invisibly if it is - clipped, even partially, by an ancestor. */ - visible &= XP_RectContainsRect(parent_clip_bbox, clipped_bbox); - XP_IntersectRect(clipped_bbox, parent_clip_bbox, clipped_bbox); - } else { - XP_IntersectRect(clipped_bbox, parent_clip_bbox, clipped_bbox); - /* "Normal" layers are only invisible if they're wholly clipped - by ancestors. */ - visible &= !XP_IsEmptyRect(clipped_bbox); - } - } - } else { - XP_CopyRect(parent_clip_bbox, clipped_bbox); - } - - layer->visible = visible; - child_clip_bbox = clip_children ? clipped_bbox : parent_clip_bbox; - - descendant_visible = 0; - for (child = layer->top_child; child; child = child->sib_below) { - descendant_visible |= - (int)cl_bbox_changed_recurse(child, child_clip_bbox, not_hidden, - layer->x_origin, layer->y_origin); - } - - layer->visible = visible; - - layer->descendant_visible = (PRBool)descendant_visible; - - return visible; -} - -static void -cl_property_changed(CL_Layer *layer) -{ - int32 x_offset, y_offset; - XP_Rect *child_clip_bbox; - PRBool ancestor_not_hidden; - CL_Layer *parent, *layer2; - - if (layer->compositor) { - layer->compositor->recompute_update_region = PR_TRUE; - cl_start_compositor_timeouts(layer->compositor); - } - - parent = layer->parent; - if (parent) { - layer2 = parent; - ancestor_not_hidden = PR_TRUE; - while (layer2) { - if (layer2->hidden) { - ancestor_not_hidden = PR_FALSE; - break; - } - layer2 = layer2->parent; - } - child_clip_bbox = cl_clipping_bbox(parent); - x_offset = parent->x_origin; - y_offset = parent->y_origin; - } else { - ancestor_not_hidden = PR_TRUE; - child_clip_bbox = &max_rect; - x_offset = 0; - y_offset = 0; - } - - /* If a layer is visible for compositing, then so are all its ancestors */ - if (cl_bbox_changed_recurse(layer, child_clip_bbox, ancestor_not_hidden, - x_offset, y_offset)) - while (parent) { - parent->descendant_visible = PR_TRUE; - parent = parent->parent; - } -} - -static void -cl_bbox_changed(CL_Layer *layer) -{ - cl_property_changed(layer); -} - -void -cl_ParentChanged(CL_Layer *layer) -{ - cl_property_changed(layer); -} - -static void -cl_hidden_changed(CL_Layer *layer) -{ - cl_property_changed(layer); -} - -static void -cl_position_changed(CL_Layer *layer) -{ - cl_property_changed(layer); -} - -static void -cl_set_hidden (CL_Layer *layer, PRBool hidden) -{ - if (hidden == layer->hidden) - return; - - layer->hidden = hidden; - - /* If the layer is currently visible and it's to be hidden, or the - layer isn't visible and it's being un-hidden, update the area - occupied by the layer. */ - if (layer->visible == hidden) - cl_hidden_changed(layer); -} - -/* Change the physical position of a layer with relative values */ -/* May trigger asynchronous drawing to update screen */ -void -CL_OffsetLayer(CL_Layer *layer, int32 x_offset, int32 y_offset) -{ - XP_ASSERT(layer); - - if (!layer) - return; - - CL_MoveLayer(layer, layer->x_offset + x_offset, layer->y_offset + y_offset); -} - -/* Change the position of a layer. XY coordinates are relative to the - origin of the parent layer. May trigger asynchronous drawing to - update screen */ -void -CL_MoveLayer(CL_Layer *layer, int32 x, int32 y) -{ - XP_ASSERT(layer); - - if (!layer) - return; - - LOCK_LAYERS(layer); - - /* Layer position changed ? */ - if ((x == layer->x_offset) && (y == layer->y_offset)) { - UNLOCK_LAYERS(layer); - return; - } - - layer->x_offset = x; - layer->y_offset = y; - cl_position_changed(layer); - cl_LayerMoved(layer->compositor, layer); - - UNLOCK_LAYERS(layer); -} - -/* - * Change the dimensions of a layer - * May trigger asynchronous drawing to update screen - * FIXME - There is a performance bug here that shows up when a - * layer's width grows, but its height shrinks or vice-versa. - * The update rectangles are overdrawn for these cases. - */ -void -CL_ResizeLayer(CL_Layer *layer, int32 width, int32 height) -{ - XP_Rect *layer_bbox; - int32 old_width, old_height; - - XP_ASSERT(layer); - - if (!layer) /* Paranoia */ - return; - - LOCK_LAYERS(layer); - - /* Get the existing layer width and height */ - layer_bbox = &layer->bbox; - old_width = layer_bbox->right - layer_bbox->left; - old_height = layer_bbox->bottom - layer_bbox->top; - if ((width == old_width) && (height == old_height)) { - UNLOCK_LAYERS(layer); - return; - } - - /* Reset layer bbox to new size */ - layer_bbox->right = layer_bbox->left + width; - layer_bbox->bottom = layer_bbox->top + height; - cl_bbox_changed(layer); - - UNLOCK_LAYERS(layer); -} - -int32 -CL_GetLayerXOffset(CL_Layer *layer) -{ - return layer->x_offset; -} - -int32 -CL_GetLayerYOffset(CL_Layer *layer) -{ - return layer->y_offset; -} - -int32 -CL_GetLayerXOrigin(CL_Layer *layer) -{ - return layer->x_origin; -} - -int32 -CL_GetLayerYOrigin(CL_Layer *layer) -{ - return layer->y_origin; -} - -void -CL_SetLayerUniformColor(CL_Layer *layer, CL_Color *color) -{ - if (color) { - CL_Color *copy_color = XP_NEW(CL_Color); - XP_ASSERT(copy_color); - if (!copy_color) - return; - *copy_color = *color; - layer->uniform_color = copy_color; - } else { - XP_FREEIF(layer->uniform_color); - } -} - -void -CL_SetLayerOpaque(CL_Layer *layer, PRBool opaque) -{ - layer->opaque = opaque; -} - -PRBool -CL_GetLayerOpaque(CL_Layer *layer) -{ - return layer->opaque; -} - -int32 -CL_GetLayerZIndex(CL_Layer *layer) -{ - return layer->z_index; -} - -/* Change the bounding box of a layer */ -void -CL_SetLayerBbox(CL_Layer *layer, XP_Rect *new_bbox) -{ - XP_ASSERT(layer); - if (!layer) - return; - - LOCK_LAYERS(layer); - - /* Don't do anything if the bbox didn't change. */ - if (XP_EqualRect(new_bbox, &layer->bbox)) { - UNLOCK_LAYERS(layer); - return; - } - - layer->bbox = *new_bbox; - cl_sanitize_bbox(&layer->bbox); - - cl_bbox_changed(layer); - - UNLOCK_LAYERS(layer); -} - -void -CL_GetLayerBbox(CL_Layer *layer, XP_Rect *bbox) -{ - XP_ASSERT(layer); - XP_ASSERT(bbox); - - if (!layer || !bbox) - return; - - LOCK_LAYERS(layer); - bbox->left = layer->bbox.left; - bbox->top = layer->bbox.top; - bbox->right = layer->bbox.right; - bbox->bottom = layer->bbox.bottom; - UNLOCK_LAYERS(layer); -} - -void -CL_GetLayerBboxAbsolute(CL_Layer *layer, XP_Rect *bbox) -{ - XP_ASSERT(layer); - XP_ASSERT(bbox); - - if (!layer || !bbox) - return; - - LOCK_LAYERS(layer); - bbox->left = layer->x_origin; - bbox->top = layer->y_origin; - bbox->right = layer->x_origin + (layer->bbox.right - layer->bbox.left); - bbox->bottom = layer->y_origin + (layer->bbox.bottom - layer->bbox.top); - UNLOCK_LAYERS(layer); -} - -char * -CL_GetLayerName(CL_Layer *layer) -{ - XP_ASSERT(layer); - - if (!layer) - return NULL; - else - return layer->name; -} - -void -CL_SetLayerName(CL_Layer *layer, char *name) -{ - XP_ASSERT(layer); - - if (!layer) - return; - - layer->name = name; -} - -PRBool -CL_GetLayerHidden(CL_Layer *layer) -{ - XP_ASSERT(layer); - - if (!layer) - return PR_FALSE; - else - return layer->hidden; -} - -void -CL_SetLayerHidden(CL_Layer *layer, PRBool hidden) -{ - XP_ASSERT(layer); - - if (!layer) - return; - - cl_set_hidden(layer, hidden); -} - -void * -CL_GetLayerClientData(CL_Layer *layer) -{ - XP_ASSERT(layer); - - if (!layer) - return NULL; - else - return layer->client_data; -} - -void -CL_SetLayerClientData(CL_Layer *layer, void *client_data) -{ - XP_ASSERT(layer); - - if (!layer) - return; - - layer->client_data = client_data; -} - -CL_Compositor * -CL_GetLayerCompositor(CL_Layer *layer) -{ - XP_ASSERT(layer); - - if (!layer) - return NULL; - else - return layer->compositor; -} - -CL_Layer * -CL_GetLayerSiblingAbove(CL_Layer *layer) -{ - XP_ASSERT(layer); - - if (!layer) - return NULL; - else - return layer->sib_above; -} - -CL_Layer * -CL_GetLayerSiblingBelow(CL_Layer *layer) -{ - XP_ASSERT(layer); - - if (!layer) - return NULL; - else - return layer->sib_below; -} - -static CL_Layer * -cl_bottommost(CL_Layer *layer) -{ - while (layer->bottom_child && layer->bottom_child->z_index < 0) - layer = layer->bottom_child; - - return layer; -} - -static CL_Layer * -cl_GetLayerAbove2(CL_Layer *layer, PRBool consider_children) -{ - CL_Layer *layer_above; - - if (! layer) - return NULL; - - if (consider_children && - layer->top_child && (layer->top_child->z_index >= 0)) { - CL_Layer *child; - - child = layer->bottom_child; - while (child->z_index < 0) - child = child->sib_above; - - layer_above = child; - } else if (layer->z_index < 0) { - if (layer->sib_above && (layer->sib_above->z_index < 0)) - layer_above = cl_bottommost(layer->sib_above); - else - layer_above = layer->parent; - } else { - if (layer->sib_above) - layer_above = cl_bottommost(layer->sib_above); - else - layer_above = cl_GetLayerAbove2(layer->parent, PR_FALSE); - } - - if (!layer_above) - return NULL; - - if (!layer_above->enumerated) - return cl_GetLayerAbove2(layer_above, PR_TRUE); - - return layer_above; -} - -CL_Layer * -CL_GetLayerAbove(CL_Layer *layer) -{ - CL_Layer *layer_above; - XP_ASSERT(layer); - LOCK_LAYERS(layer); - layer_above = cl_GetLayerAbove2(layer, PR_TRUE); - UNLOCK_LAYERS(layer); - return layer_above; -} - -static CL_Layer * -cl_topmost(CL_Layer *layer) -{ - while (layer->top_child && layer->top_child->z_index >= 0) - layer = layer->top_child; - - return layer; -} - -static CL_Layer * -cl_GetLayerBelow2(CL_Layer *layer, PRBool consider_children) -{ - CL_Layer *layer_below; - - if (! layer) - return NULL; - - if (consider_children && - layer->bottom_child && (layer->bottom_child->z_index < 0)) { - CL_Layer *child; - - child = layer->top_child; - while (child->z_index >= 0) - child = child->sib_below; - - layer_below = child; - } else if (layer->z_index >= 0) { - if (layer->sib_below && (layer->sib_below->z_index >= 0)) - layer_below = cl_topmost(layer->sib_below); - else - layer_below = layer->parent; - } else { - if (layer->sib_below) - layer_below = cl_topmost(layer->sib_below); - else - layer_below = cl_GetLayerBelow2(layer->parent, PR_FALSE); - } - - if (!layer_below) - return NULL; - - if (!layer_below->enumerated) - return cl_GetLayerBelow2(layer_below, PR_TRUE); - - return layer_below; -} - -CL_Layer * -CL_GetLayerBelow(CL_Layer *layer) -{ - CL_Layer *layer_below; - XP_ASSERT(layer); - LOCK_LAYERS(layer); - layer_below = cl_GetLayerBelow2(layer, PR_TRUE); - UNLOCK_LAYERS(layer); - return layer_below; -} - -CL_Layer * -CL_GetLayerChildByName(CL_Layer *layer, char *name) -{ - CL_Layer *child; - - XP_ASSERT(layer); - - if (!layer) - return NULL; - for (child = layer->top_child; child; child = child->sib_below) - if (child->name && strcmp(child->name, name) == 0) - return child; - - return NULL; -} - -CL_Layer * -CL_GetLayerChildByIndex(CL_Layer *layer, uint index) -{ - CL_Layer *child; - - XP_ASSERT(layer); - - if (!layer) - return NULL; - - LOCK_LAYERS(layer); - for (child = layer->bottom_child; child && index; child = child->sib_above) { - if (child->enumerated) - index--; - } - - while (child && !child->enumerated) - child = child->sib_above; - - UNLOCK_LAYERS(layer); - return child; -} - -int -CL_GetLayerChildCount(CL_Layer *layer) -{ - CL_Layer *child; - int child_count = 0; - - if (!layer) - return 0; - - XP_ASSERT(layer); - - LOCK_LAYERS(layer); - for (child = layer->top_child; child; child = child->sib_below) { - if (child->enumerated) - child_count++; - } - UNLOCK_LAYERS(layer); - - return child_count; -} - -void -CL_GetLayerVTable(CL_Layer *layer, CL_LayerVTable *vtable) -{ - XP_ASSERT(layer); - XP_ASSERT(vtable); - - if (!layer || !vtable) - return; - - *vtable = layer->vtable; -} - - -void -CL_SetLayerVTable(CL_Layer *layer, CL_LayerVTable *vtable) -{ - XP_ASSERT(layer); - - if (!layer) - return; - - if (vtable) - layer->vtable = *vtable; - else { - layer->vtable.painter_func = NULL; - layer->vtable.region_cleanup_func = NULL; - layer->vtable.event_handler_func = NULL; - layer->vtable.destroy_func = NULL; - } -} - -CL_Layer *CL_GetLayerParent(CL_Layer *layer) -{ - XP_ASSERT(layer); - - if (!layer) - return NULL; - else - return layer->parent; -} - - diff --git a/mozilla/lib/liblayer/src/cl_priv.h b/mozilla/lib/liblayer/src/cl_priv.h deleted file mode 100644 index 3bf6e260706..00000000000 --- a/mozilla/lib/liblayer/src/cl_priv.h +++ /dev/null @@ -1,285 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * cl_priv.h Private prototypes, definitions, etc. - */ - - -#ifndef _CL_PRIV_H_ -#define _CL_PRIV_H_ - -/***************** Configuration *******************/ -#define CL_GROUP_HASH_TABLE_SIZE 10 - -#define CL_THREAD_SAFE 1 - -/* Adjust frame-rate to CPU capacity */ -#define CL_ADAPT_FRAME_RATE - -/* Auto-adaptive frame-rate parameters, in frames per second */ -#define CL_FRAME_RATE_MAX 60 -#define CL_FRAME_RATE_MIN 8 -#define CL_FRAME_RATE_INITIAL 15 - -#define CL_CPU_LOAD 0.90 -#define CL_MIN_TIMEOUT 1 /* No matter what, leave at least this many - milliseconds between the end of - one compositor run and the start - of the next */ -#define LOG2_DELAY_LINE_LENGTH 5 /* 2^5 == 32, Adaptation filter maximum length */ -#define DELAY_LINE_LENGTH (1 << LOG2_DELAY_LINE_LENGTH) -#define SLOW_FILTER_DURATION 300 /* Time, in milliseconds, over which filter runs */ - -#include "fe_rgn.h" -#include "xp_rect.h" -#include "plhash.h" -#include "layers.h" -#ifdef CL_THREAD_SAFE -# include "prmon.h" -#endif - - -/******************Definitions and Types************/ - -#ifdef CL_THREAD_SAFE -# define LOCK_COMPOSITOR(compositor) PR_EnterMonitor(compositor->monitor) -#else -# define LOCK_COMPOSITOR(compositor) -#endif - -#ifdef CL_THREAD_SAFE -# define UNLOCK_COMPOSITOR(compositor) PR_ExitMonitor(compositor->monitor) -#else -# define UNLOCK_COMPOSITOR(compositor) -#endif - -/* XXX - bit of a race condition ? */ -#define LOCK_LAYERS(layer) \ - do {if (layer->compositor) LOCK_COMPOSITOR(layer->compositor);} while(0) - -#define UNLOCK_LAYERS(layer) \ - do {if (layer->compositor) UNLOCK_COMPOSITOR(layer->compositor);} while (0) - - -#define CL_CONTAINMENT_LIST_SIZE 20 -#define CL_CONTAINMENT_LIST_INCREMENT 5 -#define CL_NEXT_CONTAINMENT_LIST(i) (((i) + 1) % 2) - -extern int cl_trace_level; - -#ifdef DEBUG -# define CL_TRACE(l,t) {if(cl_trace_level > l) {XP_TRACE(t);}} -#else -# define CL_TRACE(l,t) {} -#endif - -typedef enum -{ - CL_REACHED_NOTHING, - CL_REACHED_BOTTOM_UNDRAWN, - CL_REACHED_TOP_UNDRAWN -} CL_BackToFrontStatus; - - -/* - * The CL_Layer "class". It's opaque as far as everyone else - * is concerned. - */ -struct CL_Layer { - char *name; /* For reference via HTML/JavaScript */ - XP_Rect bbox; /* Bounds of clipping rectangle, - in layer's coordinates */ - XP_Rect clipped_bbox; /* Position and dimensions of visible - portion of layer, in document coordinates */ - int32 x_origin; /* Origin of layer, in doc coordinates */ - int32 y_origin; - int32 x_offset; /* Origin of layer, in parent layer coordinates */ - int32 y_offset; - int32 z_index; /* Relative z-ordering among layers */ - CL_LayerVTable vtable; /* Layer-specific virtual "methods" */ - PRPackedBool visible; /* Is layer considered visible for compositing ?*/ - PRPackedBool descendant_visible; - PRPackedBool hidden; /* Turn off drawing for this layer & children */ - PRPackedBool clip_children; /* Clip drawing of descendent layers */ - PRPackedBool clip_self; /* Clip drawing of this layer ? */ - PRPackedBool prefer_draw_offscreen; /* Prefer draw directly to a pixmap ? */ - PRPackedBool prefer_draw_onscreen; /* Prefer not to use backing store */ - PRPackedBool scrolling; /* Should this layer be scrolled with the page */ - PRPackedBool opaque; /* Does this layer have no transparent areas ? */ - PRPackedBool enumerated; - PRPackedBool cutout; - PRPackedBool override_inherit_visibility; /* Child visibility is independent - of parent's */ - CL_Color *uniform_color; /* If non-null, layer is solid, uniform color */ - void *client_data; /* Custom data field */ - CL_Compositor *compositor;/* Back-pointer from a layer to its compositor */ - CL_Layer *parent; /* Parent of this layer */ - CL_Layer *sib_above; /* Sibling layer above this one */ - CL_Layer *sib_below; /* Sibling layer below this one */ - CL_Layer *top_child; /* Uppermost child layer */ - CL_Layer *bottom_child; /* Lowermost child layer */ - void *mocha_object; /* FIXME - temporary */ - - /* Temporary flags used during drawing. Only valid if layer is visible. */ - PRPackedBool offscreen_layer_drawn_above; - PRPackedBool draw_needed; - PRPackedBool descendant_draw_needed; - - /* The following variables represent the state of this layer during - the previous composite cycle. */ - PRPackedBool prev_visible; - XP_Rect prev_clipped_bbox; - int32 prev_x_origin; - int32 prev_y_origin; - - XP_Rect win_clipped_bbox; /* Temporary rectangle used during drawing, - contains clipped_bbox in window coordinates, - clipped by window rectangle. */ - FE_Region draw_region; /* Temporary region used during drawing. - Holds the region of the layer to be - drawn as calculated during the front-to-back - pass. */ - CL_Layer *uniformly_colored_layer_below; /* Only set for opaque, - solid-colored layers */ -}; - -/* - * These lists are used for mouse enter/leave event handling. Each list - * holds a path starting from a layer up to the root of the layer tree. - * This list is held for the last mouse event grabber. If the mouse moves - * and there's a new mouse event grabber, we create such a list for the - * new grabber. The determination of which layers get mouse enter and leave - * events is done by tracing down the two lists from the root down. A - * better explanation of this can be found in the source. - */ -typedef struct CL_EventContainmentList { - CL_Layer **layer_list; - int32 list_size; - int32 list_head; -} CL_EventContainmentList; - -/* - * The CL_Compositor "class". It's opaque as far as everyone else - * is concerned. - */ -struct CL_Compositor { - uint32 gen_id; /* Generation id of the compositor */ - CL_Drawable *primary_drawable; /* Destination window/offscreen-pixmap */ - CL_Drawable *backing_store; /* Offscreen pixmap */ - void *composite_timeout; /* Timer used to schedule compositor */ - int32 x_offset, y_offset; /* Window origin in document coordinates */ - XP_Rect window_size; /* The rectangle we're compositing */ - FE_Region window_region; /* The corresponding region */ - FE_Region update_region; /* Region to be drawn at next composite */ - FE_Region backing_store_region; /* Valid area in backing store */ - FE_Region cutout_region; /* Temporary region used during - drawing. Holds the region of - the window which is considered - to be out of bounds for the - compositor, e.g. a native - window object, such as an - applet */ - CL_Layer *root; /* The root of the layer tree */ - PRPackedBool recompute_update_region; /* Has any descendant layer - had its visibility, bbox, - or position modified ? */ - PRPackedBool enabled; /* Should the compositor draw */ - PRPackedBool back_to_front_only; /* No front-to-back compositing */ - PRPackedBool offscreen_enabled; /* If PR_FALSE, no offscreen compositing */ - PRPackedBool offscreen_inhibited;/* If PR_TRUE, no offscreen compositing */ - PRPackedBool offscreen_initialized;/* PR_TRUE, if cl_InitDrawable() called */ - - /* Adaptive frame-rate state variables */ - float frame_period; /* in milliseconds */ - int32 delay_line[DELAY_LINE_LENGTH]; /* Samples of lateness at intervals */ - unsigned int delay_line_index; /* Index into delay_line */ - int64 nominal_deadline64; /* Next time compositor should draw */ - - PRHashTable *group_table; /* Hash table of groups */ - CL_Layer *mouse_event_grabber; /* This layer gets all mouse events */ - CL_Layer *key_event_grabber; /* This layer gets all key events */ - int32 last_mouse_x; /* The last position of the mouse */ - int32 last_mouse_y; - int32 last_mouse_button; /* The last mouse button pressed */ - CL_Layer *last_mouse_event_grabber; /* The last layer to grab a mouse event */ - CL_EventContainmentList event_containment_lists[2]; - /* Lists used to trace event containment */ - int32 last_containment_list; /* Which list was used last */ - - CL_KeyboardFocusPolicy focus_policy; /* Policy for default keyboard focus */ - PRBool composite_in_progress; - CL_Layer *uniformly_colored_layer_stack; /* Topmost uniformly-colored layer */ -#ifdef CL_THREAD_SAFE - PRMonitor *monitor; /* Ensures thread-safety */ -#endif - uint32 nothing_to_do_count; /* how many times we had nothing to do */ -}; - -/* This represents the target of compositor drawing (either a window - or an off-screen pixmap). If the drawable is a window, it may have - a backing store. */ -struct CL_Drawable -{ - CL_Compositor *compositor; - CL_DrawableVTable vtable; /* Drawable-specific virtual "methods" */ - void *client_data; /* Handle to platform-private data */ - FE_Region clip_region; /* All drawing is clipped by this region, - specified in window coordinates */ - uint32 flags; /* CL_OFFSCREEN, CL_BACKING_STORE, etc. */ - int32 x_offset; /* Coordinate system origin in document coord */ - int32 y_offset; - uint16 width; /* Width and height, in pixels */ - uint16 height; -}; - -extern void cl_LayerAdded(CL_Compositor *compositor, CL_Layer *layer); -extern void cl_LayerRemoved(CL_Compositor *compositor, CL_Layer *layer); -extern void cl_LayerMoved(CL_Compositor *compositor, CL_Layer *layer); -extern void cl_LayerDestroyed(CL_Compositor *compositor, CL_Layer *layer); -extern void cl_ParentChanged(CL_Layer *layer); -extern void cl_UpdateLayer(CL_Layer *layer, PRBool composite_now); -extern void cl_SetCompositorRecursive(CL_Layer *layer, - CL_Compositor *compositor); - -extern void cl_InitDrawable(CL_Drawable *drawable); -extern void cl_RelinquishDrawable(CL_Drawable *drawable); -extern void cl_SetDrawableOrigin(CL_Drawable *drawable, - int32 x_offset, int32 y_offset); -extern void cl_GetDrawableOrigin(CL_Drawable *drawable, - int32* x_offset, int32* y_offset); -extern void cl_SetDrawableClip(CL_Drawable *drawable, FE_Region clip_region); -extern void cl_RestoreDrawableClip(CL_Drawable *drawable); -extern CL_Drawable *cl_LockDrawableForReadWrite(CL_Drawable *drawable); -extern CL_Drawable *cl_LockDrawableForWrite(CL_Drawable *drawable); -extern CL_Drawable *cl_LockDrawableForRead(CL_Drawable *drawable); -extern void cl_UnlockDrawable(CL_Drawable *drawable); -extern void cl_CopyPixels(CL_Drawable *src, CL_Drawable *dest, FE_Region region); -extern void cl_SetDrawableDimensions(CL_Drawable *drawable, - uint32 width, uint32 height); - -extern void cl_XorRegion(FE_Region src1, FE_Region src2, FE_Region dst); -extern void cl_sanitize_bbox(XP_Rect *bbox); -extern void cl_start_compositor_timeouts(CL_Compositor *compositor); - - -#endif /* _CL_PRIV_H_ */ - diff --git a/mozilla/lib/liblayer/src/cl_util.c b/mozilla/lib/liblayer/src/cl_util.c deleted file mode 100644 index 8568e4af6d8..00000000000 --- a/mozilla/lib/liblayer/src/cl_util.c +++ /dev/null @@ -1,189 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * cl_paint.c - The default layer creation routine - */ - - -#include "prtypes.h" -#include "layers.h" -#include "cl_priv.h" - -/* Convert rectangle from window to document coordinate system */ -void -CL_WindowToDocumentRect(CL_Compositor *compositor, XP_Rect *rect) -{ - XP_OffsetRect(rect, compositor->x_offset, compositor->y_offset); -} - -/* Convert rectangle from document to window coordinate system */ -void -CL_DocumentToWindowRect(CL_Compositor *compositor, XP_Rect *rect) -{ - XP_OffsetRect(rect, -compositor->x_offset, -compositor->y_offset); -} - -/* Convert a rect from window to layer coordinate system */ -void -CL_WindowToLayerRect(CL_Compositor *compositor, CL_Layer *layer, - XP_Rect *rect) -{ - int32 x_offset = compositor->x_offset - layer->x_origin; - int32 y_offset = compositor->y_offset - layer->y_origin; - - XP_OffsetRect(rect, x_offset, y_offset); -} - -/* Convert a rect from window to layer coordinate system */ -void -CL_LayerToWindowRect(CL_Compositor *compositor, CL_Layer *layer, - XP_Rect *rect) -{ - int32 x_offset = compositor->x_offset - layer->x_origin; - int32 y_offset = compositor->y_offset - layer->y_origin; - - XP_OffsetRect(rect, -x_offset, -y_offset); -} - -/* - * The assumption for the next two routines is that the layer is - * visible within the window i.e. translating to and from layer - * coordinates won't result in a 16-bit overflow. - */ -/* Convert a region from layer to window coordinate system */ -void -CL_LayerToWindowRegion(CL_Compositor *compositor, CL_Layer *layer, - FE_Region region) -{ - int32 x_offset = layer->x_origin - compositor->x_offset; - int32 y_offset = layer->y_origin - compositor->y_offset; - - if ((x_offset <= FE_MAX_REGION_COORDINATE) && - (y_offset <= FE_MAX_REGION_COORDINATE)) - FE_OffsetRegion(region, x_offset, y_offset); -} - -/* Convert a region from window to layer coordinate system */ -void -CL_WindowToLayerRegion(CL_Compositor *compositor, CL_Layer *layer, - FE_Region region) -{ - int32 x_offset = compositor->x_offset - layer->x_origin; - int32 y_offset = compositor->y_offset - layer->y_origin; - - if ((x_offset <= FE_MAX_REGION_COORDINATE) && - (y_offset <= FE_MAX_REGION_COORDINATE)) - FE_OffsetRegion(region, x_offset, y_offset); -} - -typedef struct { - int num_rects; - uint32 covered_area; -} cl_entropy_closure; - -static void -cl_region_entropy_rect_func(cl_entropy_closure *closure, - XP_Rect *rect) -{ - uint32 rect_area; - - rect_area = (rect->right - rect->left) * (rect->bottom - rect->top); - - /* Small areas cause higher entropy, since they tend to do - lots of clipping when overdraw occurs. */ - if (rect_area > 1000) - closure->covered_area += rect_area; - closure->num_rects++; -} - -/* Return a number between 0 and 1.0 indicating the "entropy" of a - region. (For now, returns something approximating the fraction of - uncovered area in the region's bounding box.) */ -float -CL_RegionEntropy(FE_Region region) -{ - uint32 bbox_area; - XP_Rect bbox; - cl_entropy_closure closure; - - - FE_GetRegionBoundingBox(region, &bbox); - bbox_area = (bbox.right - bbox.left) * (bbox.bottom - bbox.top); - - closure.num_rects = 0; - closure.covered_area = 0; - FE_ForEachRectInRegion(region, - (FE_RectInRegionFunc)cl_region_entropy_rect_func, - (void *)&closure); - - if (closure.num_rects <= 1) - return 0.0F; - - return 1.0F - (float)closure.covered_area / (float)bbox_area; -} - - -/* Like FE_ForEachRectInRegion(), except that there is no guarantee - that the individual rects delivered to the callback function - *exactly* cover the region. (They may cover more than the region). - This may be used for more efficient painting because it is faster - to paint fewer large rects than many small rects.) */ -void -CL_ForEachRectCoveringRegion(FE_Region region, FE_RectInRegionFunc func, - void *closure) -{ -# define ENTROPY_THRESHOLD 0.85 - - float entropy = CL_RegionEntropy(region); - - if (entropy < ENTROPY_THRESHOLD) { - XP_Rect bbox; - FE_GetRegionBoundingBox(region, &bbox); - (*func)(closure, &bbox); - } else { - FE_ForEachRectInRegion(region, func, closure); - } -} - -void -cl_XorRegion(FE_Region src1, FE_Region src2, FE_Region dst) -{ - FE_Region tmp = FE_CreateRegion(); - - if (tmp == FE_NULL_REGION) /* OOM */ - return; - - FE_SubtractRegion(src1, src2, tmp); - FE_SubtractRegion(src2, src1, dst); - FE_UnionRegion(tmp, dst, dst); - FE_DestroyRegion(tmp); -} - -void -cl_sanitize_bbox(XP_Rect *bbox) -{ - if (bbox->left > bbox->right) - bbox->right = bbox->left; - - if (bbox->top > bbox->bottom) - bbox->bottom = bbox->top; -} diff --git a/mozilla/lib/liblayer/src/xp_rect.c b/mozilla/lib/liblayer/src/xp_rect.c deleted file mode 100644 index 7d1d08851fd..00000000000 --- a/mozilla/lib/liblayer/src/xp_rect.c +++ /dev/null @@ -1,142 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * xp_rect.c - Simple rectangle operations - */ - - -#include "xp.h" -#include "xp_rect.h" - -#ifndef MIN -#define MIN(x, y) (((x) < (y)) ? (x) : (y)) -#endif - -#ifndef MAX -#define MAX(x, y) (((x) > (y)) ? (x) : (y)) -#endif - -void -XP_CopyRect(XP_Rect *src, XP_Rect *dest) -{ - XP_MEMCPY(dest, src, sizeof (XP_Rect)); -} - -PRBool -XP_EqualRect(XP_Rect *r1, XP_Rect *r2) -{ - return ((r1->left == r2->left) && (r1->top == r2->top) && - (r1->bottom == r2->bottom) && (r1->right == r2->right)); -} - -/* Offset rectangle in 2D space. This could be a macro */ -void -XP_OffsetRect(XP_Rect *rect, int32 x_offset, int32 y_offset) -{ - XP_ASSERT(rect); - - rect->left += x_offset; - rect->top += y_offset; - rect->right += x_offset; - rect->bottom += y_offset; -} - -/* TRUE if point is within the boundary of the rect */ -PRBool -XP_PointInRect(XP_Rect *rect, int32 x, int32 y) -{ - XP_ASSERT(rect); - - return (PRBool)((rect->left <= x) && - (rect->top <= y) && - (rect->right > x) && - (rect->bottom > y)); -} - -/* TRUE if any parts of the two rectangles overlap */ -PRBool -XP_RectsOverlap(XP_Rect *rect1, XP_Rect *rect2) -{ - XP_ASSERT(rect1); - XP_ASSERT(rect2); - - return (PRBool)((rect1->right > rect2->left) && - (rect1->left < rect2->right) && - (rect1->bottom > rect2->top) && - (rect1->top < rect2->bottom)); -} - -/* TRUE if rect2 is entirely contained within rect1 */ -PRBool -XP_RectContainsRect(XP_Rect *rect1, XP_Rect *rect2) -{ - XP_ASSERT(rect1); - XP_ASSERT(rect2); - - return (PRBool)((rect1->right >= rect2->right) && - (rect1->left <= rect2->left) && - (rect1->bottom >= rect2->bottom) && - (rect1->top <= rect2->top)); -} - -/* dst = src1 intersect src2. dst can be one of src1 or src2 */ -void -XP_IntersectRect(XP_Rect *src1, XP_Rect *src2, XP_Rect *dst) -{ - XP_ASSERT(src1); - XP_ASSERT(src2); - XP_ASSERT(dst); - - if (!XP_RectsOverlap(src1, src2)) { - dst->left = dst->top = dst->right = dst->bottom = 0; - } - else { - dst->left = MAX(src1->left, src2->left); - dst->top = MAX(src1->top, src2->top); - dst->right = MIN(src1->right, src2->right); - dst->bottom = MIN(src1->bottom, src2->bottom); - } -} - -/* dst = bounding box of src1 and src2. dst can be one of src1 or src2 */ -void -XP_RectsBbox(XP_Rect *src1, XP_Rect *src2, XP_Rect *dst) -{ - XP_ASSERT(src1); - XP_ASSERT(src2); - XP_ASSERT(dst); - - dst->left = MIN(src1->left, src2->left); - dst->top = MIN(src1->top, src2->top); - dst->right = MAX(src1->right, src2->right); - dst->bottom = MAX(src1->bottom, src2->bottom); -} - -/* Does the rectangle enclose any pixels? */ -PRBool -XP_IsEmptyRect(XP_Rect *rect) -{ - XP_ASSERT(rect); - - return (PRBool)((rect->left == rect->right) || - (rect->top == rect->bottom)); -} diff --git a/mozilla/lib/libmime/Makefile b/mozilla/lib/libmime/Makefile deleted file mode 100644 index 018c73e908f..00000000000 --- a/mozilla/lib/libmime/Makefile +++ /dev/null @@ -1,104 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - -DEPTH = ../.. - -MODULE = mime -LIBRARY_NAME = mime - -CSRCS = \ - mimecont.c \ - mimedrft.c \ - mimeebod.c \ - mimeenc.c \ - mimeeobj.c \ - mimehdrs.c \ - mimei.c \ - mimeiimg.c \ - mimeleaf.c \ - mimemalt.c \ - mimemapl.c \ - mimemdig.c \ - mimemmix.c \ - mimemoz.c \ - mimempar.c \ - mimemrel.c \ - mimemsg.c \ - mimemsig.c \ - mimemult.c \ - mimeobj.c \ - mimepbuf.c \ - mimesun.c \ - mimetenr.c \ - mimetext.c \ - mimethtm.c \ - mimetpla.c \ - mimetric.c \ - mimeunty.c \ - addr.c \ - $(NULL) - -ifdef MOZ_MAIL_NEWS -CSRCS += \ - mimevcrd.c \ - $(NULL) -endif - -REQUIRES = mime nspr dbm img util layer security pref js julian nls xp network - -include $(DEPTH)/config/rules.mk - -FILT_SRCS = mimefilt.c mimestub.c -FILT_OBJS = $(addprefix $(OBJDIR)/,$(FILT_SRCS:.c=.o)) - -ifdef MOZ_SECURITY -INCLUDES += -I$(DEPTH)/lib/libmime -I$(DIST)/public/security -endif - -INCLUDES += -I./ - -ifndef MOZ_MAIL_COMPOSE -DEFINES += -DMOZILLA_30 -endif - -ifdef MOZ_SECURITY -DEFINES += -DMOZ_SECURITY -endif - -# -# Building the "mimefilt" executable, which reads a message from stdin and -# writes HTML to stdout - -FILT_LIBS=-L$(DIST)/lib -L$(DIST)/bin -li18n -lnetwork -lxp \ - -lnspr21 -lplc21 -lplds21 - -$(OBJDIR)/mimefilt: $(FILT_OBJS) $(LIBRARY) - @$(MAKE_OBJDIR) - rm -f $@ - $(CC) -o $@ $(CFLAGS) $(FILT_OBJS) $(LIBRARY) $(FILT_LIBS) $(LDFLAGS) - -$(OBJDIR)/mimefilt.pure: $(LIBRARY) $(FILT_OBJS) - @$(MAKE_OBJDIR) - rm -f $@ - $(PURIFY) $(CC) -o $@ $(NOMD_CFLAGS) $(FILT_OBJS) $(LIBRARY) $(FILT_LIBS) $(LDFLAGS) - -TAGS:: $(LIB_SRCS) $(FILT_SRCS) $(HEADERS) - $(ETAGS) $(LIB_SRCS) $(FILT_SRCS) $(HEADERS) diff --git a/mozilla/lib/libmime/Makefile.in b/mozilla/lib/libmime/Makefile.in deleted file mode 100644 index 7b9e43ff85b..00000000000 --- a/mozilla/lib/libmime/Makefile.in +++ /dev/null @@ -1,108 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - -DEPTH = ../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = mime -LIBRARY_NAME = mime - -CSRCS = \ - mimecont.c \ - mimedrft.c \ - mimeebod.c \ - mimeenc.c \ - mimeeobj.c \ - mimehdrs.c \ - mimei.c \ - mimeiimg.c \ - mimeleaf.c \ - mimemalt.c \ - mimemapl.c \ - mimemdig.c \ - mimemmix.c \ - mimemoz.c \ - mimempar.c \ - mimemrel.c \ - mimemsg.c \ - mimemsig.c \ - mimemult.c \ - mimeobj.c \ - mimepbuf.c \ - mimesun.c \ - mimetenr.c \ - mimetext.c \ - mimethtm.c \ - mimetpla.c \ - mimetric.c \ - mimeunty.c \ - addr.c \ - $(NULL) - -ifdef MOZ_MAIL_NEWS -CSRCS += \ - mimevcrd.c \ - $(NULL) -endif - -REQUIRES = mime dbm img util layer security pref js julian nls xp network - -include $(topsrcdir)/config/rules.mk - -FILT_SRCS = mimefilt.c mimestub.c -FILT_OBJS = $(addprefix $(OBJDIR)/,$(FILT_SRCS:.c=.o)) - -ifdef MOZ_SECURITY -INCLUDES += -I$(DEPTH)/lib/libmime -I$(DIST)/public/security -endif - -INCLUDES += -I$(srcdir)/ - -ifndef MOZ_MAIL_COMPOSE -DEFINES += -DMOZILLA_30 -endif - -ifdef MOZ_SECURITY -DEFINES += -DMOZ_SECURITY -endif - -# -# Building the "mimefilt" executable, which reads a message from stdin and -# writes HTML to stdout - -FILT_LIBS=-L$(DIST)/lib -L$(DIST)/bin -li18n -lnetwork -lxp $(NSPR_LIBS) - -$(OBJDIR)/mimefilt: $(FILT_OBJS) $(LIBRARY) - @$(MAKE_OBJDIR) - rm -f $@ - $(CC) -o $@ $(CFLAGS) $(FILT_OBJS) $(LIBRARY) $(FILT_LIBS) $(LDFLAGS) - -$(OBJDIR)/mimefilt.pure: $(LIBRARY) $(FILT_OBJS) - @$(MAKE_OBJDIR) - rm -f $@ - $(PURIFY) $(CC) -o $@ $(NOMD_CFLAGS) $(FILT_OBJS) $(LIBRARY) $(FILT_LIBS) $(LDFLAGS) - -TAGS:: $(LIB_SRCS) $(FILT_SRCS) $(HEADERS) - $(ETAGS) $(LIB_SRCS) $(FILT_SRCS) $(HEADERS) diff --git a/mozilla/lib/libmime/README b/mozilla/lib/libmime/README deleted file mode 100644 index 70415c7f55c..00000000000 --- a/mozilla/lib/libmime/README +++ /dev/null @@ -1,13 +0,0 @@ -lib/libmime --- a general-purpose MIME parser. - -This module, libmime, implements a general-purpose MIME parser. -One of the methods provided by this parser is the ability to emit -an HTML representation of it. - -All Mozilla-specific code is (and should remain) isolated in the -file mimemoz.c. Generally, if the code involves images, netlib -streams, or MWContexts, it should be in mimemoz.c instead of in -the main body of the MIME parser. - -See ALSO: mimei.h, http://www.imc.org/rfcs.html#mime, - http://www.ietf.cnri.reston.va.us/ids.by.wg/mhtml.html diff --git a/mozilla/lib/libmime/addr.c b/mozilla/lib/libmime/addr.c deleted file mode 100644 index 204b0b8f9cd..00000000000 --- a/mozilla/lib/libmime/addr.c +++ /dev/null @@ -1,1613 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* addrutil.cpp --- parsing RFC822 addresses. - */ - -#include "xp.h" - -#undef FREEIF -#define FREEIF(obj) do { if (obj) { XP_FREE (obj); obj = 0; }} while (0) - -extern int MK_OUT_OF_MEMORY; - -static int msg_quote_phrase_or_addr (char *address, int32 length, - XP_Bool addr_p); -static int msg_parse_rfc822_addresses (const char *line, - char **names, - char **addresses, - XP_Bool quote_names_p, - XP_Bool quote_addrs_p, - XP_Bool first_only_p); - - -/* Given a string which contains a list of RFC822 addresses, parses it into - their component names and mailboxes. - - The returned value is the number of addresses, or a negative error code; - the names and addresses are returned into the provided pointers as - consecutive null-terminated strings. It is up to the caller to free them. - Note that some of the strings may be zero-length. - - Either of the provided pointers may be NULL if the caller is not interested - in those components. - - quote_names_p and quote_addrs_p control whether the returned strings should - be quoted as RFC822 entities, or returned in a more human-presentable (but - not necessarily parsable) form. - - If first_only_p is true, then only the first element of the list is - returned; we don't bother parsing the rest. - */ -int -msg_parse_rfc822_addresses (const char *line, - char **names, - char **addresses, - XP_Bool quote_names_p, - XP_Bool quote_addrs_p, - XP_Bool first_only_p) -{ - uint32 addr_count = 0; - uint32 line_length; - const char *line_end; - const char *this_start; - char *name_buf = 0, *name_out, *name_start; - char *addr_buf = 0, *addr_out, *addr_start; - XP_ASSERT (line); - if (! line) - return -1; - if (names) - *names = 0; - if (addresses) - *addresses = 0; - line_length = XP_STRLEN (line); - if (line_length == 0) - return 0; - - name_buf = (char *) XP_ALLOC (line_length * 2 + 10); - if (! name_buf) - return MK_OUT_OF_MEMORY; - - addr_buf = (char *) XP_ALLOC (line_length * 2 + 10); - if (! addr_buf) - { - FREEIF (name_buf); - return MK_OUT_OF_MEMORY; - } - - line_end = line; - addr_out = addr_buf; - name_out = name_buf; - name_start = name_buf; - addr_start = addr_buf; - this_start = line; - - /* Skip over extra whitespace or commas before addresses. */ - while (*line_end && - (XP_IS_SPACE (*line_end) || *line_end == ',')) - line_end++; - - while (*line_end) - { - uint32 paren_depth = 0; - const char *oparen = 0; - const char *mailbox_start = 0; - const char *mailbox_end = 0; - - while (*line_end && - !(*line_end == ',' && - paren_depth <= 0 && /* comma is ok inside () */ - (!mailbox_start || mailbox_end))) /* comma is ok inside <> */ - { - if (*line_end == '\\') - { - line_end++; - if (!*line_end) /* otherwise, we walk off end of line, right? */ - break; - } - else if (*line_end == '"') - { - int leave_quotes = 0; - - line_end++; /* remove open " */ - - /* handle '"John.Van Doe"@space.com' case */ - if (paren_depth == 0 && !mailbox_start) - { - char *end_quote = strchr(line_end, '"'); - char *mailbox = end_quote ? strchr(end_quote, '<') : (char *)NULL, - *comma = end_quote ? strchr(end_quote, ',') : (char *)NULL; - if (!mailbox || (comma && comma < mailbox)) - { - - leave_quotes = 1; /* no mailbox for this address */ - *addr_out++ = '"'; - } - } - - while (*line_end) - { - if (*line_end == '\\') - { - if ( paren_depth == 0 - && (*(line_end+1) == '\\' || *(line_end+1) == '"')) - *addr_out++ = *line_end++; - else - line_end++; - } - else if (*line_end == '"') - break; - - if (paren_depth == 0) - *addr_out++ = *line_end; - - line_end++; - } - if (*line_end) line_end++; /* remove close " */ - if (leave_quotes) *addr_out++ = '"'; - continue; - } - - if (*line_end == '(') - { - if (paren_depth == 0) - oparen = line_end; - paren_depth++; - } - else if (*line_end == '<' && paren_depth == 0) - { - mailbox_start = line_end; - } - else if (*line_end == '>' && mailbox_start && paren_depth == 0) - { - mailbox_end = line_end; - } - else if (*line_end == ')' && paren_depth > 0) - { - paren_depth--; - if (paren_depth == 0) - { - const char *s = oparen + 1; - /* Copy the characters inside the parens onto the - "name" buffer. */ - - /* Push out some whitespace before the paren, if - there is non-whitespace there already. */ - if (name_out > name_start && - !XP_IS_SPACE (name_out [-1])) - *name_out++ = ' '; - - /* Skip leading whitespace. */ - while (XP_IS_SPACE (*s) && s < line_end) - s++; - - while (s < line_end) - { - if (*s == '\"') - { - /* Strip out " within () unless backslashed */ - s++; - continue; - } - - if (*s == '\\') /* remove one \ */ - s++; - - if (XP_IS_SPACE (*s) && - name_out > name_start && - XP_IS_SPACE (name_out[-1])) - /* collapse consecutive whitespace */; - else - *name_out++ = *s; - - s++; - } - oparen = 0; - } - } - else - { - /* If we're not inside parens or a <mailbox>, tack this - on to the end of the addr_buf. */ - if (paren_depth == 0 && - (!mailbox_start || mailbox_end)) - { - /* Eat whitespace at the beginning of the line, - and eat consecutive whitespace within the line. */ - if (XP_IS_SPACE (*line_end) && - (addr_out == addr_start || - XP_IS_SPACE (addr_out[-1]))) - /* skip it */; - else - *addr_out++ = *line_end; - } - } - - line_end++; - } - - /* Now we have extracted a single address from the comma-separated - list of addresses. The characters have been divided among the - various buffers: the parts inside parens have been placed in the - name_buf, and everything else has been placed in the addr_buf. - Quoted strings and backslashed characters have been `expanded.' - - If there was a <mailbox> spec in it, we have remembered where it was. - Copy that on to the addr_buf, replacing what was there, and copy the - characters not inside <> onto the name_buf, replacing what is there - now (which was just the parenthesized parts.) (And we need to do the - quote and backslash hacking again, since we're coming from the - original source.) - - Otherwise, we're already done - the addr_buf and name_buf contain - the right data already (de-quoted.) - */ - if (mailbox_end) - { - const char *s; - XP_ASSERT (*mailbox_start == '<'); - XP_ASSERT (*mailbox_end == '>'); - - /* First, copy the name. - */ - name_out = name_start; - s = this_start; - /* Skip leading whitespace. */ - while (XP_IS_SPACE (*s) && s < mailbox_start) - s++; - /* Copy up to (not including) the < */ - while (s < mailbox_start) - { - if (*s == '\"') - { - s++; - continue; - } - if (*s == '\\') - { - if (s + 1 < mailbox_start && (*(s+1) == '\\' || *(s+1) == '\"')) - *name_out++ = *s++; - else - s++; - } - if (XP_IS_SPACE (*s) && - name_out > name_start && - XP_IS_SPACE (name_out[-1])) - /* collapse consecutive whitespace */; - else - *name_out++ = *s; - s++; - } - /* Trim trailing whitespace. */ - while (name_out > name_start && XP_IS_SPACE (name_out[-1])) - name_out--; - /* Push out one space. */ - *name_out++ = ' '; - s = mailbox_end+1; - /* Skip whitespace after > */ - while (XP_IS_SPACE (*s) && s < line_end) - s++; - /* Copy from just after > to the end. */ - while (s < line_end) - { - if (*s == '\"') - { - s++; - continue; - } - if (*s == '\\') - { - if (s + 1 < line_end && (*(s+1) == '\\' || *(s+1) == '\"')) - *name_out++ = *s++; - else - s++; - } - if (XP_IS_SPACE (*s) && - name_out > name_start && - XP_IS_SPACE (name_out[-1])) - /* collapse consecutive whitespace */; - else - *name_out++ = *s; - s++; - } - /* Trim trailing whitespace. */ - while (name_out > name_start && XP_IS_SPACE (name_out[-1])) - name_out--; - /* null-terminate. */ - *name_out++ = 0; - - /* Now, copy the address. - */ - mailbox_start++; - addr_out = addr_start; - s = mailbox_start; - /* Skip leading whitespace. */ - while (XP_IS_SPACE (*s) && s < mailbox_end) - s++; - /* Copy up to (not including) the > */ - while (s < mailbox_end) - { - if (*s == '\"') - { - s++; - continue; - } - if (*s == '\\') - { - if (s + 1 < mailbox_end && (*(s+1) == '\\' || *(s+1) == '\"')) - *addr_out++ = *s++; - else - s++; - } - *addr_out++ = *s++; - } - /* Trim trailing whitespace. */ - while (addr_out > addr_start && XP_IS_SPACE (addr_out[-1])) - addr_out--; - /* null-terminate. */ - *addr_out++ = 0; - } - else /* No component of <mailbox> form. */ - { - /* Trim trailing whitespace. */ - while (addr_out > addr_start && XP_IS_SPACE (addr_out[-1])) - addr_out--; - /* null-terminate. */ - *addr_out++ = 0; - - /* Trim trailing whitespace. */ - while (name_out > name_start && XP_IS_SPACE (name_out[-1])) - name_out--; - /* null-terminate. */ - *name_out++ = 0; - - /* Attempt to deal with the simple error case of a missing comma. - We can only really deal with this in the non-<> case. - If there is no name, and if the address doesn't contain - double-quotes, but the address does contain whitespace, - then assume that the whitespace is an address delimiter. - */ - if (!name_start || !*name_start) - { - char *s; - char *space = 0; - for (s = addr_start; s < addr_out; s++) - if (*s == '\\') - s++; - else if (!space && XP_IS_SPACE (*s)) - space = s; - else if (*s == '"') - { - space = 0; - break; - } - if (space) - { - for (s = space; s < addr_out; s++) - if (*s == '\\') - s++; - else if (XP_IS_SPACE (*s)) - { - *s = 0; - *name_out++ = 0; - addr_count++; - } - } - } - } - - /* Now re-quote the names and addresses if necessary. - */ - if (quote_names_p && names) - { - int L = name_out - name_start - 1; - L = msg_quote_phrase_or_addr (name_start, L, FALSE); - name_out = name_start + L + 1; - } - - if (quote_addrs_p && addresses) - { - int L = addr_out - addr_start - 1; - L = msg_quote_phrase_or_addr (addr_start, L, TRUE); - addr_out = addr_start + L + 1; - } - - addr_count++; - - if (first_only_p) - /* If we only want the first address, we can stop now. */ - break; - - if (*line_end) - line_end++; - - /* Skip over extra whitespace or commas between addresses. */ - while (*line_end && - (XP_IS_SPACE (*line_end) || *line_end == ',')) - line_end++; - - this_start = line_end; - name_start = name_out; - addr_start = addr_out; - } - - /* Make one more pass through and convert all whitespace characters - to SPC. We could do that in the first pass, but this is simpler. */ - { - char *s; - for (s = name_buf; s < name_out; s++) - if (XP_IS_SPACE (*s) && *s != ' ') - *s = ' '; - for (s = addr_buf; s < addr_out; s++) - if (XP_IS_SPACE (*s) && *s != ' ') - *s = ' '; - } - - /* #### Should we bother realloc'ing them smaller? */ - - if (names) - *names = name_buf; - else - XP_FREE (name_buf); - - if (addresses) - *addresses = addr_buf; - else - XP_FREE (addr_buf); - - return addr_count; -} - - -int -MSG_ParseRFC822Addresses (const char *line, - char **names, - char **addresses) -{ - return msg_parse_rfc822_addresses(line, names, addresses, TRUE, TRUE, FALSE); -} - - - -/* Given a single mailbox, this quotes the characters in it which need - to be quoted; it writes into `address' and returns a new length. - `address' is assumed to be long enough; worst case, its size will - be (N*2)+2. - */ -static int -msg_quote_phrase_or_addr (char *address, int32 length, XP_Bool addr_p) -{ - int quotable_count = 0, in_quote = 0; - int unquotable_count = 0; - int32 i, new_length; - char *in, *out; - XP_Bool atsign = FALSE; - XP_Bool user_quote = FALSE; - - /* If the entire address is quoted, fall out now. */ - if (address[0] == '"' && address[length - 1] == '"') - return length; - - for (i = 0, in = address; i < length; i++, in++) - { - if (*in == 0) - return length; /* #### horrible kludge... */ - - else if (addr_p && *in == '@' && !atsign && !in_quote) - { - /* Exactly one unquoted at-sign is allowed in an address. */ - atsign = TRUE; - - /* If address is of the form '"userid"@somewhere.com' don't quote - * the quotes around 'userid'. Also reset the quotable count, since - * any quotables we've seen are already inside quotes. - */ - if (address[0] == '"' && in > address + 2 && *(in - 1) == '"' && *(in - 2) != '\\') - unquotable_count -= 2, quotable_count = 0, user_quote = TRUE; - } - - else if (*in == '\\') - { - if (i + 1 < length && (*(in + 1) == '\\' || *(in + 1) == '"')) - /* If the next character is a backslash or quote, this backslash */ - /* is an escape backslash; ignore it and the next character. */ - i++, in++; - else - /* If the name contains backslashes or quotes, they must be escaped. */ - unquotable_count++; - } - - else if (*in == '"') - /* If the name contains quotes, they must be escaped. */ - unquotable_count++, in_quote = !in_quote; - - else if ( *in >= 127 || *in < 0 - || *in == '[' || *in == ']' || *in == '(' || *in == ')' - || *in == '<' || *in == '>' || *in == '@' || *in == ',' - || *in == ';' || *in == '$') - /* If the name contains control chars or RFC822 specials, it needs to - * be enclosed in quotes. Double-quotes and backslashes will be dealt - * with seperately. - * - * The ":" character is explicitly not in this list, though RFC822 says - * it should be quoted, because that has been seen to break VMS - * systems. (Rather, it has been seen that there are Unix SMTP servers - * which accept RCPT TO:<host::user> but not RCPT TO:<"host::user"> or - * RCPT TO:<host\:\:user>, which is the syntax that VMS/DECNET hosts - * use. - * - * For future reference: it is also claimed that some VMS SMTP servers - * allow \ quoting but not "" quoting; and that sendmail uses self- - * contradcitory quoting conventions that violate both RFCs 821 and - * 822, so any address quoting on a sendmail system will lose badly. - */ - quotable_count++; - - else if (addr_p && *in == ' ') - /* Naked spaces are allowed in names, but not addresses. */ - quotable_count++; - - else if ( !addr_p - && (*in == '.' || *in == '!' || *in == '$' || *in == '%')) - /* Naked dots are allowed in addresses, but not in names. - * The other characters (!$%) are technically allowed in names, but - * are surely going to cause someone trouble, so we quote them anyway. - */ - quotable_count++; - } - - if (quotable_count == 0 && unquotable_count == 0) - return length; - - /* Add 2 to the length for the quotes, plus one for each character - * which will need a backslash as well. - */ - new_length = length + unquotable_count + 2; - - /* Now walk through the string backwards (so that we can use the same - * block.) First put on the terminating quote, then push out each - * character, backslashing as necessary. Then a final quote. - * Uh, except, put the second quote just before the last @ if there - * is one. - */ - out = address + new_length - 1; - in = address + length - 1; - if (!atsign || (user_quote && quotable_count > 0)) - *out-- = '"'; - while (out > address) - { - XP_ASSERT(in >= address); - - if (*in == '@' && user_quote && quotable_count > 0) - *out-- = '"'; - - *out-- = *in; - - if (*in == '@' && atsign && !user_quote) - { - *out-- = '"'; - atsign = FALSE; - } - else if (*in == '\\' || *in == '"') - { - if ( user_quote && *in == '"' - && ( in == address - || ( in < address + length - 1 && in > address - && *(in + 1) == '@' && *(in - 1) != '\\'))) - /* Do nothing */; - else if (in > address && *(in - 1) == '\\') - *out-- = *--in; - else - { - XP_ASSERT(out > address); - *out-- = '\\'; - } - } - in--; - } - XP_ASSERT(in == address - 1 || (user_quote && in == address)); - XP_ASSERT(out == address); - *out = '"'; - address[new_length] = 0; - return new_length; -} - -/* Given a name or address that might have been quoted - it will take out the escape and double quotes - The caller is responsible for freeing the resulting - string. - */ -int -MSG_UnquotePhraseOrAddr (char *line, char** lineout) -{ - int outlen = 0; - char *lineptr = NULL; - char *tmpLine = NULL; - char *outptr = NULL; - int result = 0; - - (*lineout) = NULL; - if (line) { - /* if the first character isnt a double quote - then there is nothing to do */ - if (*line != '"') - { - (*lineout) = XP_STRDUP (line); - if (!lineout) - return -1; - else - return 0; - } - - /* dont count the first character that is the double quote */ - lineptr = line; - lineptr++; - /* count up how many characters we are going to output */ - while (*lineptr) { - /* if the character is an '\' then - output the escaped character */ - if (*lineptr == '\\') - lineptr++; - outlen++; - lineptr++; - } - tmpLine = (char *) XP_ALLOC (outlen + 1); - if (!tmpLine) - return -1; - XP_MEMSET(tmpLine, 0, outlen); - /* dont output the first double quote */ - line++; - lineptr = line; - outptr = (tmpLine); - while ((*lineptr) != '\0') { - /* if the character is an '\' then - output the character that was escaped */ - /* if it was part of the quote then don't - output it */ - if (*lineptr == '\\' || *lineptr == '"') { - lineptr++; - } - *outptr = *lineptr; - if (*lineptr != '\0') { - outptr++; - lineptr++; - } - } - *outptr = '\0'; - if (tmpLine) - (*lineout) = XP_STRDUP (tmpLine); - else - result = -1; - XP_FREEIF (tmpLine); - } - return result; -} - - -/* Given a string which contains a list of RFC822 addresses, returns a - comma-seperated list of just the `mailbox' portions. - */ -char * -MSG_ExtractRFC822AddressMailboxes (const char *line) -{ - char *addrs = 0; - char *result, *s, *out; - uint32 i, size = 0; - int status = MSG_ParseRFC822Addresses (line, 0, &addrs); - if (status <= 0) - return 0; - - s = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j = XP_STRLEN (s); - s += j + 1; - size += j + 2; - } - - result = (char*)XP_ALLOC (size + 1); - if (! result) - { - XP_FREE (addrs); - return 0; - } - out = result; - s = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j = XP_STRLEN (s); - XP_MEMCPY (out, s, j); - out += j; - if ((int) (i+1) < status) - { - *out++ = ','; - *out++ = ' '; - } - s += j + 1; - } - *out = 0; - - XP_FREE (addrs); - return result; -} - - -/* Given a string which contains a list of RFC822 addresses, returns a - comma-seperated list of just the `user name' portions. If any of - the addresses doesn't have a name, then the mailbox is used instead. - - The names are *unquoted* and therefore cannot be re-parsed in any way. - They are, however, nice and human-readable. - */ -char * -MSG_ExtractRFC822AddressNames (const char *line) -{ - char *names = 0; - char *addrs = 0; - char *result, *s1, *s2, *out; - uint32 i, size = 0; - int status = msg_parse_rfc822_addresses(line, &names, &addrs, FALSE, FALSE, - FALSE); - if (status <= 0) - return 0; - - s1 = names; - s2 = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size += (j1 ? j1 : j2) + 2; - } - - result = (char*)XP_ALLOC (size + 1); - if (! result) - { - XP_FREE (names); - XP_FREE (addrs); - return 0; - } - out = result; - s1 = names; - s2 = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - - if (j1) - { - XP_MEMCPY (out, s1, j1); - out += j1; - } - else - { - XP_MEMCPY (out, s2, j2); - out += j2; - } - - if ((int) (i+1) < status) - { - *out++ = ','; - *out++ = ' '; - } - s1 += j1 + 1; - s2 += j2 + 1; - } - *out = 0; - - XP_FREE (names); - XP_FREE (addrs); - return result; -} - -/* Like MSG_ExtractRFC822AddressNames(), but only returns the first name - in the list, if there is more than one. - */ -char * -MSG_ExtractRFC822AddressName (const char *line) -{ - char *name = 0; - char *addr = 0; - int status = msg_parse_rfc822_addresses(line, &name, &addr, FALSE, FALSE, - TRUE); - if (status <= 0) - return 0; - /* This can happen if there is an address like "From: foo bar" which - we parse as two addresses (that's a syntax error.) In that case, - we'll return just the first one (the rest is after the NULL.) - XP_ASSERT(status == 1); - */ - if (name && *name) - { - FREEIF(addr); - return name; - } - else - { - FREEIF(name); - return addr; - } -} - - -static char * -msg_format_rfc822_addresses (const char *names, const char *addrs, - int count, XP_Bool wrap_lines_p) -{ - char *result, *out; - const char *s1, *s2; - uint32 i, size = 0; - uint32 column = 10; - - if (count <= 0) - return 0; - - s1 = names; - s2 = addrs; - for (i = 0; (int) i < count; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size += j1 + j2 + 10; - } - - result = (char *) XP_ALLOC (size + 1); - if (! result) return 0; - - out = result; - s1 = names; - s2 = addrs; - - for (i = 0; (int) i < count; i++) - { - char *o; - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - - if (wrap_lines_p && i > 0 && - (column + j1 + j2 + 3 + - (((int) (i+1) < count) ? 2 : 0) - > 76)) - { - if (out > result && out[-1] == ' ') - out--; - *out++ = CR; - *out++ = LF; - *out++ = '\t'; - column = 8; - } - - o = out; - - if (j1) - { - XP_MEMCPY (out, s1, j1); - out += j1; - *out++ = ' '; - *out++ = '<'; - } - XP_MEMCPY (out, s2, j2); - out += j2; - if (j1) - *out++ = '>'; - - if ((int) (i+1) < count) - { - *out++ = ','; - *out++ = ' '; - } - s1 += j1 + 1; - s2 += j2 + 1; - - column += (out - o); - } - *out = 0; - return result; -} - -/* Given a string which contains a list of RFC822 addresses, returns a new - string with the same data, but inserts missing commas, parses and reformats - it, and wraps long lines with newline-tab. - */ -char * -MSG_ReformatRFC822Addresses (const char *line) -{ - char *names = 0; - char *addrs = 0; - char *result; - int status = MSG_ParseRFC822Addresses (line, &names, &addrs); - if (status <= 0) - return 0; - result = msg_format_rfc822_addresses (names, addrs, status, TRUE); - XP_FREE (names); - XP_FREE (addrs); - return result; -} - -/* Returns a copy of ADDRS which may have had some addresses removed. - Addresses are removed if they are already in either ADDRS or OTHER_ADDRS. - (If OTHER_ADDRS contain addresses which are not in ADDRS, they are not - added. That argument is for passing in addresses that were already - mentioned in other header fields.) - - Addresses are considered to be the same if they contain the same mailbox - part (case-insensitive.) Real names and other comments are not compared. - - removeAliasesToMe allows the address parser to use the preference which - contains regular expressions which also mean 'me' for the purpose of - stripping the user's email address(es) out of addrs - */ -char * -MSG_RemoveDuplicateAddresses (const char *addrs, - const char *other_addrs, - XP_Bool removeAliasesToMe) -{ - /* This is probably way more complicated than it should be... */ - char *s1 = 0, *s2 = 0; - char *output = 0, *out = 0; - char *result = 0; - int count1 = 0, count2 = 0, count3 = 0; - int size1 = 0, size2 = 0, size3 = 0; - char *names1 = 0, *names2 = 0; - char *addrs1 = 0, *addrs2 = 0; - char **a_array1 = 0, **a_array2 = 0, **a_array3 = 0; - char **n_array1 = 0, **n_array3 = 0; - int i, j; - - if (!addrs) return 0; - - count1 = MSG_ParseRFC822Addresses (addrs, &names1, &addrs1); - if (count1 < 0) goto FAIL; - if (count1 == 0) - { - result = XP_STRDUP(""); - goto FAIL; - } - if (other_addrs) - count2 = MSG_ParseRFC822Addresses (other_addrs, &names2, &addrs2); - if (count2 < 0) goto FAIL; - - s1 = names1; - s2 = addrs1; - for (i = 0; i < count1; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size1 += j1 + j2 + 10; - } - - s1 = names2; - s2 = addrs2; - for (i = 0; i < count2; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size2 += j1 + j2 + 10; - } - - a_array1 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!a_array1) goto FAIL; - n_array1 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!n_array1) goto FAIL; - - if (count2 > 0) - { - a_array2 = (char **) XP_ALLOC (count2 * sizeof(char *)); - if (!a_array2) goto FAIL; - /* don't need an n_array2 */ - } - - a_array3 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!a_array3) goto FAIL; - n_array3 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!n_array3) goto FAIL; - - - /* fill in the input arrays */ - s1 = names1; - s2 = addrs1; - for (i = 0; i < count1; i++) - { - n_array1[i] = s1; - a_array1[i] = s2; - s1 += XP_STRLEN (s1) + 1; - s2 += XP_STRLEN (s2) + 1; - } - - s2 = addrs2; - for (i = 0; i < count2; i++) - { - a_array2[i] = s2; - s2 += XP_STRLEN (s2) + 1; - } - - /* Iterate over all addrs in the "1" arrays. - If those addrs are not present in "3" or "2", add them to "3". - */ - for (i = 0; i < count1; i++) /* iterate over all addrs */ - { - XP_Bool found = FALSE; - for (j = 0; j < count2; j++) - if (!strcasecomp (a_array1[i], a_array2[j])) - { - found = TRUE; - break; - } - - if (!found) - for (j = 0; j < count3; j++) - if (!strcasecomp (a_array1[i], a_array3[j])) - { - found = TRUE; - break; - } - - if (!found && removeAliasesToMe) - { -#ifndef MOZILLA_30 -#if CPLUS_PLUS_IN_C_FILE /* C++ in C file! */ - found = MSG_Prefs::IsEmailAddressAnAliasForMe (a_array1[i]); - if (found) - break; -#endif -#endif /* MOZILLA_30 */ - } - - if (!found) - { - n_array3[count3] = n_array1[i]; - a_array3[count3] = a_array1[i]; - size3 += (XP_STRLEN(n_array3[count3]) + XP_STRLEN(a_array3[count3]) - + 10); - count3++; - XP_ASSERT (count3 <= count1); - if (count3 > count1) break; - } - } - - output = (char *) XP_ALLOC (size3 + 1); - if (!output) goto FAIL; - - *output = 0; - out = output; - s2 = output; - for (i = 0; i < count3; i++) - { - XP_STRCPY (out, a_array3[i]); - out += XP_STRLEN (out); - *out++ = 0; - } - s1 = out; - for (i = 0; i < count3; i++) - { - XP_STRCPY (out, n_array3[i]); - out += XP_STRLEN (out); - *out++ = 0; - } - result = msg_format_rfc822_addresses (s1, s2, count3, FALSE); - - FAIL: - FREEIF (a_array1); - FREEIF (a_array2); - FREEIF (a_array3); - FREEIF (n_array1); - FREEIF (n_array3); - FREEIF (names1); - FREEIF (names2); - FREEIF (addrs1); - FREEIF (addrs2); - FREEIF (output); - return result; -} - - -/* Given an e-mail address and a person's name, cons them together into a - single string of the form "name <address>", doing all the necessary quoting. - A new string is returned, which you must free when you're done with it. - */ -char * -MSG_MakeFullAddress (const char* name, const char* addr) -{ - int nl = name ? XP_STRLEN (name) : 0; - int al = addr ? XP_STRLEN (addr) : 0; - char *buf, *s; - int L; - if (al == 0) - return 0; - buf = (char *) XP_ALLOC ((nl * 2) + (al * 2) + 20); - if (!buf) - return 0; - if (nl > 0) - { - XP_STRCPY (buf, name); - L = msg_quote_phrase_or_addr (buf, nl, FALSE); - s = buf + L; - *s++ = ' '; - *s++ = '<'; - } - else - { - s = buf; - } - - XP_STRCPY (s, addr); - L = msg_quote_phrase_or_addr (s, al, TRUE); - s += L; - if (nl > 0) - *s++ = '>'; - *s = 0; - L = (s - buf) + 1; - buf = (char *) XP_REALLOC (buf, L); - return buf; -} - -#if 0 -main (int argc, char **argv) -{ - fprintf (stderr, "%s\n", - MSG_RemoveDuplicateAddresses (argv[1], argv[2], FALSE)); -} -#endif - - -#if 0 -main (int argc, char **argv) -{ - fprintf (stderr, "%s\n", MSG_MakeFullAddress (argv[1], argv[2])); -} -#endif - - -#if 0 -/* Test cases for the above routines. - */ -static void -test1 (const char *line, XP_Bool np, XP_Bool ap, - uint32 expect_count, const char *expect_n, const char *expect_a) -{ - char *names = 0, *addrs = 0; - int result; - if (! np) expect_n = 0; - if (! ap) expect_a = 0; - result = MSG_ParseRFC822Addresses (line, - (np ? &names : 0), - (ap ? &addrs : 0)); - if (result <= 0) - printf (" #### error %d\n", result); - else - { - uint32 i; - char *n = names, *a = addrs; - if (expect_count != result) - printf (" #### wrong number of results (%d instead of %d)\n", - (int) result, (int) expect_count); - for (i = 0; i < result; i++) - { - if (((!!n) != (!!expect_n)) || - (n && XP_STRCMP (n, expect_n))) - { - printf (" ####### name got: %s\n" - " #### name wanted: %s\n", - (n ? n : "<NULL>"), - (expect_n ? expect_n : "<NULL>")); - } - if (((!!a) != (!!expect_a)) || - (a && XP_STRCMP (a, expect_a))) - { - printf (" ####### addr got: %s\n" - " #### addr wanted: %s\n", - (a ? a : "<NULL>"), - (expect_a ? expect_a : "<NULL>")); - } - if (n) n += XP_STRLEN (n) + 1; - if (a) a += XP_STRLEN (a) + 1; - if (expect_n) expect_n += XP_STRLEN (expect_n) + 1; - if (expect_a) expect_a += XP_STRLEN (expect_a) + 1; - } - } - FREEIF (names); - FREEIF (addrs); -} - -static void -test (const char *line, uint32 expect_n, - const char *expect_names, const char *expect_addrs, - const char *expect_all_names, const char *expect_all_addrs, - const char *canonical) -{ - char *s; - printf ("testing %s\n", line); - test1 (line, TRUE, TRUE, expect_n, expect_names, expect_addrs); - test1 (line, TRUE, FALSE, expect_n, expect_names, expect_addrs); - test1 (line, FALSE, TRUE, expect_n, expect_names, expect_addrs); - test1 (line, FALSE, FALSE, expect_n, expect_names, expect_addrs); - - s = MSG_ExtractRFC822AddressMailboxes (line); - if (!s || XP_STRCMP (s, expect_all_addrs)) - printf (" #### expected addrs: %s\n" - " ######### got addrs: %s\n", - expect_all_addrs, (s ? s : "<NULL>")); - FREEIF (s); - - s = MSG_ExtractRFC822AddressNames (line); - if (!s || XP_STRCMP (s, expect_all_names)) - printf (" #### expected names: %s\n" - " ######### got names: %s\n", - expect_all_names, (s ? s : "<NULL>")); - FREEIF (s); - - s = MSG_ReformatRFC822Addresses (line); - if (!s || XP_STRCMP (s, canonical)) - printf (" #### expected canonical: %s\n" - " ######### got canonical: %s\n", - canonical, (s ? s : "<NULL>")); - FREEIF (s); -} - - -void -main () -{ - test ("spanky", - 1, "", "spanky", - "spanky", "spanky", - "spanky"); - - test ("<spanky>", - 1, "", "spanky", - "spanky", "spanky", - "spanky"); - - test ("< spanky> ", - 1, "", "spanky", - "spanky", "spanky", - "spanky"); - - test ("Simple Case <simple1>", - 1, - "Simple Case", "simple1", - "Simple Case", "simple1", - "Simple Case <simple1>"); - - test (" Simple Case < simple1 > ", - 1, - "Simple Case", "simple1", - "Simple Case", "simple1", - "Simple Case <simple1>"); - - test ("simple2 (Simple Case)", - 1, - "Simple Case", "simple2", - "Simple Case", "simple2", - "Simple Case <simple2>"); - - test ("simple3 (Slightly) (Trickier)", - 1, - "Slightly Trickier", "simple3", - "Slightly Trickier", "simple3", - "Slightly Trickier <simple3>"); - - test ("(Slightly) simple3 (Trickier)", - 1, - "Slightly Trickier", "simple3", - "Slightly Trickier", "simple3", - "Slightly Trickier <simple3>"); - - test ("( Slightly ) simple3 ( Trickier ) ", - 1, - "Slightly Trickier", "simple3", - "Slightly Trickier", "simple3", - "Slightly Trickier <simple3>"); - - test ("(Even) more <trickier> (Trickier\\, I say)", - 1, - "\"(Even) more (Trickier, I say)\"", "trickier", - "(Even) more (Trickier, I say)", "trickier", - "\"(Even) more (Trickier, I say)\" <trickier>"); - - test ("\"this, is\" <\"some loser\"@address> (foo)", - 1, - "\"this, is (foo)\"", "\"some loser\"@address", - "this, is (foo)", "\"some loser\"@address", - "\"this, is (foo)\" <\"some loser\"@address>"); - - test ("foo, bar", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("<foo>, <bar>", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("< foo > , < bar > ", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("< foo > , , , ,,,,, , < bar > ,", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("\"this, is\" <\"some loser\"@address> (foo), <bar>", - 2, - "\"this, is (foo)\"" "\000" "", - "\"some loser\"@address" "\000" "bar", - "this, is (foo), bar", - "\"some loser\"@address, bar", - "\"this, is (foo)\" <\"some loser\"@address>, bar"); - - test ("\"this, is\" <some\\ loser@address> (foo), bar", - 2, - "\"this, is (foo)\"" "\000" "", - "\"some loser\"@address" "\000" "bar", - "this, is (foo), bar", - "\"some loser\"@address, bar", - "\"this, is (foo)\" <\"some loser\"@address>, bar"); - - test ("(I'm a (total) loser) \"space address\"", - 1, - "\"I'm a (total) loser\"", "\"space address\"", - "I'm a (total) loser", "\"space address\"", - "\"I'm a (total) loser\" <\"space address\">"); - - test ("(I'm a (total) loser) \"space address\"@host", - 1, - "\"I'm a (total) loser\"", "\"space address\"@host", - "I'm a (total) loser", "\"space address\"@host", - "\"I'm a (total) loser\" <\"space address\"@host>"); - - test ("It\\'s \"me\" <address>, I'm a (total) loser <\"space address\">", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space address\"", - "It's me, I'm a (total) loser", - "address, \"space address\"", - "It's me <address>, \"I'm a (total) loser\" <\"space address\">"); - - test("It\\'s \"me\" <address>, I'm a (total) loser <\"space address\"@host>", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space address\"@host", - "It's me, I'm a (total) loser", - "address, \"space address\"@host", - "It's me <address>, \"I'm a (total) loser\" <\"space address\"@host>"); - - test ("(It\\'s \"me\") address, (I'm a (total) loser) \"space address\"", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space address\"", - "It's me, I'm a (total) loser", - "address, \"space address\"", - "It's me <address>, \"I'm a (total) loser\" <\"space address\">"); - - test ("(It\\'s \"me\") address, (I'm a (total) loser) \"space \\\"address\"", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space \\\"address\"", - "It's me, I'm a (total) loser", - "address, \"space \\\"address\"", - "It's me <address>, \"I'm a (total) loser\" <\"space \\\"address\">"); - - test ("(It\\'s \"me\") address, (I'm a (total) loser) \"space @address\"@host", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space @address\"@host", - "It's me, I'm a (total) loser", - "address, \"space @address\"@host", - "It's me <address>, \"I'm a (total) loser\" <\"space @address\"@host>"); - - test ("Probably Bogus <some@loser@somewhere>", - 1, - "Probably Bogus", - "\"some@loser\"@somewhere", - "Probably Bogus", - "\"some@loser\"@somewhere", - "Probably Bogus <\"some@loser\"@somewhere>"); - - test ("Probably Bogus <\"some$loser,666\"@somewhere>", - 1, - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus <\"some$loser,666\"@somewhere>"); - - test ("Probably Bogus <\"some$loser,666\"@somewhere>", - 1, - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus <\"some$loser,666\"@somewhere>"); - - test ("\"Probably Bogus, Jr.\" <\"some$loser,666\"@somewhere>", - 1, - "\"Probably Bogus, Jr.\"", - "\"some$loser,666\"@somewhere", - "Probably Bogus, Jr.", - "\"some$loser,666\"@somewhere", - "\"Probably Bogus, Jr.\" <\"some$loser,666\"@somewhere>"); - - test ("Probably Bogus\\, Jr. <\"some$loser,666\"@somewhere>", - 1, - "\"Probably Bogus, Jr.\"", - "\"some$loser,666\"@somewhere", - "Probably Bogus, Jr.", - "\"some$loser,666\"@somewhere", - "\"Probably Bogus, Jr.\" <\"some$loser,666\"@somewhere>"); - - test ("This isn't legal <some$loser,666@somewhere>", - 1, - "This isn't legal", "\"some$loser,666\"@somewhere", - "This isn't legal", "\"some$loser,666\"@somewhere", - "This isn't legal <\"some$loser,666\"@somewhere>"); - - test ("This isn't legal!! <some$loser,666@somewhere>", - 1, - "\"This isn't legal!!\"", "\"some$loser,666\"@somewhere", - "This isn't legal!!", "\"some$loser,666\"@somewhere", - "\"This isn't legal!!\" <\"some$loser,666\"@somewhere>"); - - test ("addr1, addr2, \n\taddr3", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test ("addr1 addr2 addr3", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test (" addr1 addr2 addr3 ,,,,,, ", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test ("addr1, addr2 \n\t addr3", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test ("addr1, addr2, addr3 addr4, <addr5>, (and) addr6 (yeah)", - 6, - "" "\000" "" "\000" "" "\000" "" "\000" "" - "\000" "and yeah", - "addr1" "\000" "addr2" "\000" "addr3" "\000" "addr4" "\000" "addr5" - "\000" "addr6", - "addr1, addr2, addr3, addr4, addr5, and yeah", - "addr1, addr2, addr3, addr4, addr5, addr6", - "addr1, addr2, addr3, addr4, addr5, and yeah <addr6>"); - - test ("addr1 (and some (nested) parens), addr2 <and unbalanced mbox", - 2, - "\"and some (nested) parens\"" "\000" "", - "addr1" "\000" "addr2", - "and some (nested) parens, addr2", - "addr1, addr2", - "\"and some (nested) parens\" <addr1>, addr2"); - - test ("addr1))) ((()))()()()()()()())), addr2 addr3, addr4 (foo, bar)", - 4, - "\"(())\"" "\000" "" "\000" "" "\000" "\"foo, bar\"", - "\"addr1))) ))\"" "\000" "addr2" "\000" "addr3" "\000" "addr4", - "(()), addr2, addr3, foo, bar", - "\"addr1))) ))\", addr2, addr3, addr4", - "\"(())\" <\"addr1))) ))\">, addr2, addr3, \"foo, bar\" <addr4>"); - - test ("avec le quoted quotes <\"a \\\" quote\">", - 1, - "avec le quoted quotes", "\"a \\\" quote\"", - "avec le quoted quotes", "\"a \\\" quote\"", - "avec le quoted quotes <\"a \\\" quote\">"); - - test ("avec le quoted quotes <\"a \\\" quote\"@host>", - 1, - "avec le quoted quotes", "\"a \\\" quote\"@host", - "avec le quoted quotes", "\"a \\\" quote\"@host", - "avec le quoted quotes <\"a \\\" quote\"@host>"); - - /* bang paths work, right? */ - test ("nelsonb <abit.com!nelsonb@netscape.com>", - 1, - "nelsonb", "abit.com!nelsonb@netscape.com", - "nelsonb", "abit.com!nelsonb@netscape.com", - "nelsonb <abit.com!nelsonb@netscape.com>"); - -# if 0 /* these tests don't pass, but should. */ - - /* a perverse example from RFC822: */ - test ("Muhammed.(I am the greatest) Ali @(the)Vegas.WBA", - 1, - "I am the greatest", "Muhammed.Ali@Vegas.WBA", - "I am the greatest", "Muhammed.Ali@Vegas.WBA", - "I am the greatest <Muhammed.Ali@Vegas.WBA>"); - - /* Oops, this should work but doesn't. */ - test ("nelsonb <@abit.com.tw:nelsonb@netscape.com>", - 1, - "nelsonb", "@abit.com.tw:nelsonb@netscape.com", - "nelsonb", "@abit.com.tw:nelsonb@netscape.com", - "nelsonb <@abit.com.tw:nelsonb@netscape.com>"); - - test ("(Sat43Jan@cyberpromo.com) <Ronald.F.Guilmette#$&'*+-/=?^_`|~@monkeys.com> ((#$&'*+-/=?^_`|~)) ((\\)))", - 1, - "(Sat43Jan@cyberpromo.com)", "\"Ronald.F.Guilmette#$&'*+-/=?^_`|~\"@monkeys.com", - "(Sat43Jan@cyberpromo.com)", "\"Ronald.F.Guilmette#$&'*+-/=?^_`|~\"@monkeys.com", - "(Sat43Jan@cyberpromo.com) <\"Ronald.F.Guilmette#$&'*+-/=?^_`|~\"@monkeys.com>"); - - /* Intentionally fail this one */ - test("my . name @ my . host . com", - 1, - "", "my.name@my.host.com", - "", "my.name@my.host.com", - "<my.name@my.host.com>"); - - /* but this one should work */ - test("loser < my . name @ my . host . com > ", - 1, - "loser", "my.name@my.host.com", - "loser", "my.name@my.host.com", - "loser <my.name@my.host.com>"); - - test("my(@).(@)name(<)@(>)my(:).(;)host(((\\)))).(@)com", - 1, - "@", "my.name@my.host.com", - "@", "my.name@my.host.com", - "\"@\" <my.name@my.host.com>"); - -# endif /* 0 */ - - exit (0); -} -#endif /* 0 */ diff --git a/mozilla/lib/libmime/mimecont.c b/mozilla/lib/libmime/mimecont.c deleted file mode 100644 index d3cebade6a8..00000000000 --- a/mozilla/lib/libmime/mimecont.c +++ /dev/null @@ -1,233 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimecont.c --- definition of the MimeContainer class (see mimei.h) - */ - -#include "rosetta.h" -#include "mimecont.h" - -#define MIME_SUPERCLASS mimeObjectClass -MimeDefClass(MimeContainer, MimeContainerClass, - mimeContainerClass, &MIME_SUPERCLASS); - -static int MimeContainer_initialize (MimeObject *); -static void MimeContainer_finalize (MimeObject *); -static int MimeContainer_add_child (MimeObject *, MimeObject *); -static int MimeContainer_parse_eof (MimeObject *, XP_Bool); -static int MimeContainer_parse_end (MimeObject *, XP_Bool); -static XP_Bool MimeContainer_displayable_inline_p (MimeObjectClass *class, - MimeHeaders *hdrs); - -#if defined(DEBUG) && defined(XP_UNIX) -static int MimeContainer_debug_print (MimeObject *, FILE *, int32 depth); -#endif - -static int -MimeContainerClassInitialize(MimeContainerClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) &class->object; - - XP_ASSERT(!oclass->class_initialized); - oclass->initialize = MimeContainer_initialize; - oclass->finalize = MimeContainer_finalize; - oclass->parse_eof = MimeContainer_parse_eof; - oclass->parse_end = MimeContainer_parse_end; - oclass->displayable_inline_p = MimeContainer_displayable_inline_p; - class->add_child = MimeContainer_add_child; - -#if defined(DEBUG) && defined(XP_UNIX) - oclass->debug_print = MimeContainer_debug_print; -#endif - return 0; -} - - -static int -MimeContainer_initialize (MimeObject *object) -{ - /* This is an abstract class; it shouldn't be directly instanciated. */ - XP_ASSERT(object->class != (MimeObjectClass *) &mimeContainerClass); - - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(object); -} - -static void -MimeContainer_finalize (MimeObject *object) -{ - MimeContainer *cont = (MimeContainer *) object; - - /* Do this first so that children have their parse_eof methods called - in forward order (0-N) but are destroyed in backward order (N-0) - */ - if (!object->closed_p) - object->class->parse_eof (object, FALSE); - if (!object->parsed_p) - object->class->parse_end (object, FALSE); - - if (cont->children) - { - int i; - for (i = cont->nchildren-1; i >= 0; i--) - { - MimeObject *kid = cont->children[i]; - if (kid) - mime_free(kid); - cont->children[i] = 0; - } - FREEIF(cont->children); - cont->nchildren = 0; - } - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize(object); -} - -static int -MimeContainer_parse_eof (MimeObject *object, XP_Bool abort_p) -{ - MimeContainer *cont = (MimeContainer *) object; - int status; - - /* We must run all of this object's parent methods first, to get all the - data flushed down its stream, so that the children's parse_eof methods - can access it. We do not access *this* object again after doing this, - only its children. - */ - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(object, abort_p); - if (status < 0) return status; - - if (cont->children) - { - int i; - for (i = 0; i < cont->nchildren; i++) - { - MimeObject *kid = cont->children[i]; - if (kid && !kid->closed_p) - { - int status = kid->class->parse_eof(kid, abort_p); - if (status < 0) return status; - } - } - } - return 0; -} - -static int -MimeContainer_parse_end (MimeObject *object, XP_Bool abort_p) -{ - MimeContainer *cont = (MimeContainer *) object; - int status; - - /* We must run all of this object's parent methods first, to get all the - data flushed down its stream, so that the children's parse_eof methods - can access it. We do not access *this* object again after doing this, - only its children. - */ - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_end(object, abort_p); - if (status < 0) return status; - - if (cont->children) - { - int i; - for (i = 0; i < cont->nchildren; i++) - { - MimeObject *kid = cont->children[i]; - if (kid && !kid->parsed_p) - { - int status = kid->class->parse_end(kid, abort_p); - if (status < 0) return status; - } - } - } - return 0; -} - -static int -MimeContainer_add_child (MimeObject *parent, MimeObject *child) -{ - MimeContainer *cont = (MimeContainer *) parent; - MimeObject **old_kids, **new_kids; - - XP_ASSERT(parent && child); - if (!parent || !child) return -1; - - old_kids = cont->children; - new_kids = XP_ALLOC(sizeof(MimeObject *) * (cont->nchildren + 1)); - if (!new_kids) return MK_OUT_OF_MEMORY; - - if (cont->nchildren > 0) - XP_MEMCPY(new_kids, old_kids, sizeof(MimeObject *) * cont->nchildren); - new_kids[cont->nchildren] = child; - XP_FREE(old_kids); - cont->children = new_kids; - cont->nchildren++; - - child->parent = parent; - - /* Copy this object's options into the child. */ - child->options = parent->options; - - return 0; -} - -static XP_Bool -MimeContainer_displayable_inline_p (MimeObjectClass *class, MimeHeaders *hdrs) -{ - return TRUE; -} - - -#if defined(DEBUG) && defined(XP_UNIX) -static int -MimeContainer_debug_print (MimeObject *obj, FILE *stream, int32 depth) -{ - MimeContainer *cont = (MimeContainer *) obj; - int i; - char *addr = mime_part_address(obj); - for (i=0; i < depth; i++) - fprintf(stream, " "); - fprintf(stream, "<%s %s (%d kid%s) 0x%08X>\n", - obj->class->class_name, - addr ? addr : "???", - cont->nchildren, (cont->nchildren == 1 ? "" : "s"), - (uint32) cont); - FREEIF(addr); - -/* - if (cont->nchildren > 0) - fprintf(stream, "\n"); - */ - - for (i = 0; i < cont->nchildren; i++) - { - MimeObject *kid = cont->children[i]; - int status = kid->class->debug_print (kid, stream, depth+1); - if (status < 0) return status; - } - -/* - if (cont->nchildren > 0) - fprintf(stream, "\n"); - */ - - return 0; -} -#endif diff --git a/mozilla/lib/libmime/mimecont.h b/mozilla/lib/libmime/mimecont.h deleted file mode 100644 index e99056f8792..00000000000 --- a/mozilla/lib/libmime/mimecont.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimecont.h --- definition of the MimeContainer class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - - -#ifndef _MIMECONT_H_ -#define _MIMECONT_H_ - -#include "mimeobj.h" - -/* MimeContainer is the class for the objects representing all MIME - types which can contain other MIME objects within them. In addition - to the methods inherited from MimeObject, it provides one method: - - int add_child (MimeObject *parent, MimeObject *child) - - Given a parent (a subclass of MimeContainer) this method adds the - child (any MIME object) to the parent's list of children. - - The MimeContainer `finalize' method will finalize the children as well. - */ - -typedef struct MimeContainerClass MimeContainerClass; -typedef struct MimeContainer MimeContainer; - -struct MimeContainerClass { - MimeObjectClass object; - int (*add_child) (MimeObject *parent, MimeObject *child); -}; - -extern MimeContainerClass mimeContainerClass; - -struct MimeContainer { - MimeObject object; /* superclass variables */ - - MimeObject **children; /* list of contained objects */ - int32 nchildren; /* how many */ -}; - -#endif /* _MIMECONT_H_ */ diff --git a/mozilla/lib/libmime/mimedisp.h b/mozilla/lib/libmime/mimedisp.h deleted file mode 100644 index 83f06b92ce4..00000000000 --- a/mozilla/lib/libmime/mimedisp.h +++ /dev/null @@ -1,88 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef __mimedisp_h -#define __mimedisp_h - -/* mimedisp.h: Interface between netlib and the toplevel message/rfc822 parser: - MIME_MessageConverter() - */ - -struct mime_stream_data { /* This struct is the state we pass around - amongst the various stream functions - used by MIME_MessageConverter(). - */ - - URL_Struct *url; /* The URL this is all coming from. */ - int format_out; - MWContext *context; - NET_StreamClass *stream; /* The stream to which we write output */ - NET_StreamClass *istream; /* The stream we're writing out image data, - if any. */ - MimeObject *obj; /* The root parser object */ - MimeDisplayOptions *options; /* Data for communicating with libmime.a */ - - /* These are used by FO_QUOTE_HTML_MESSAGE stuff only: */ - int16 lastcsid; /* csid corresponding to above. */ - int16 outcsid; /* csid passed to EDT_PasteQuoteINTL */ - -#ifndef MOZILLA_30 - uint8 rand_buf[6]; /* Random number used in the MATCH - attribute of the ILAYER tag - pair that encapsulates a - text/html part. (The - attributes must match on the - ILAYER and the closing - /ILAYER.) This is used to - prevent stray layer tags (or - maliciously placed ones) inside - an email message allowing the - message to escape from its - encapsulated environment. */ -#endif /* MOZILLA_30 */ - -#ifdef DEBUG_terry - XP_File logit; /* Temp file to put generated HTML into. */ -#endif -}; - - -struct MimeDisplayData { /* This struct is what we hang off of - MWContext->mime_data, to remember info - about the last MIME object we've - parsed and displayed. See - MimeGuessURLContentName() below. - */ - MimeObject *last_parsed_object; - char *last_parsed_url; - -#ifdef LOCK_LAST_CACHED_MESSAGE - char *previous_locked_url; -#endif /* LOCK_LAST_CACHED_MESSAGE */ - -#ifndef MOZILLA_30 - MSG_Pane* last_pane; -#endif /* MOZILLA_30 */ -}; - -#endif - diff --git a/mozilla/lib/libmime/mimedrft.c b/mozilla/lib/libmime/mimedrft.c deleted file mode 100644 index 3a1880f2b5b..00000000000 --- a/mozilla/lib/libmime/mimedrft.c +++ /dev/null @@ -1,944 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimedrft.c --- save and restore drafts of unfinished messages - */ - - -#include "xp.h" -#include "xpgetstr.h" -#include "libi18n.h" -#include "xp_time.h" -#include "msgcom.h" -#include "mimeobj.h" -#include "mimemsg.h" -#include "mimeenc.h" /* jrm - needed to make it build 97/02/21 */ - -/* ifdef MIME_DRAFTS has to be after the includes - * since that's where MIME_DRAFTS will be defined, if it is. - */ -#ifdef MIME_DRAFTS /* whole file */ - -#define HEADER_NNTP_POSTING_HOST "NNTP-Posting-Host" - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; -extern int MK_MIME_ERROR_WRITING_FILE; -extern int MK_MIMEHTML_DISP_SUBJECT; -extern int MK_MIMEHTML_DISP_DATE; -extern int MK_MIMEHTML_DISP_FROM; -extern int MK_MIMEHTML_DISP_ORGANIZATION; -extern int MK_MIMEHTML_DISP_TO; -extern int MK_MIMEHTML_DISP_CC; -extern int MK_MIMEHTML_DISP_NEWSGROUPS; -extern int MK_MIMEHTML_DISP_BCC; - -int -mime_decompose_file_init_fn ( void *stream_closure, - MimeHeaders *headers ); - - -int -mime_decompose_file_output_fn ( char *buf, - int32 size, - void *stream_closure ); - -int -mime_decompose_file_close_fn ( void *stream_closure ); - -extern char * -strip_continuations(char *original); - -/* This struct is the state we used in MIME_ToDraftConverter() */ -struct mime_draft_data { - URL_Struct *url; /* original url */ - int format_out; /* intended output format; - should be FO_OPEN_DRAFT */ - MWContext *context; - NET_StreamClass *stream; /* not used for now */ - MimeObject *obj; /* The root */ - MimeDisplayOptions *options; /* data for communicating with libmime.a */ - MimeHeaders *headers; /* copy of outer most mime header */ - int attachments_count; /* how many attachments we have */ - MSG_AttachedFile *attachments; /* attachments */ - MSG_AttachedFile *messageBody; /* message body */ - MSG_AttachedFile *curAttachment; /* temp */ - char *tmp_file_name; /* current opened file for output */ - XP_File tmp_file; /* output file handle */ - MimeDecoderData *decoder_data; - int16 mailcsid; /* get it from CHARSET of Content-Type and convert to csid */ -}; - - -static int -dummy_file_write( char *buf, int32 size, void *fileHandle ) -{ - return XP_FileWrite(buf, size, (XP_File) fileHandle); -} - -static int -mime_parse_stream_write ( NET_StreamClass *stream, - const char *buf, - int32 size ) -{ - struct mime_draft_data *mdd = (struct mime_draft_data *) stream->data_object; - XP_ASSERT ( mdd ); - - if ( !mdd || !mdd->obj ) return -1; - - return mdd->obj->class->parse_buffer ((char *) buf, size, mdd->obj); -} - -static unsigned int -mime_parse_stream_write_ready ( NET_StreamClass *stream ) -{ - struct mime_draft_data *mdd = (struct mime_draft_data *) stream->data_object; - XP_ASSERT (mdd); - - if (!mdd) return MAX_WRITE_READY; - if (mdd->stream) - return mdd->stream->is_write_ready ( mdd->stream ); - else - return MAX_WRITE_READY; -} - -static void -mime_free_attachments ( MSG_AttachedFile *attachments, - int count ) -{ - int i; - MSG_AttachedFile *cur = attachments; - - XP_ASSERT ( attachments && count > 0 ); - if ( !attachments || count <= 0 ) return; - - for ( i = 0; i < count; i++, cur++ ) { - FREEIF ( cur->orig_url ); - FREEIF ( cur->type ); - FREEIF ( cur->encoding ); - FREEIF ( cur->description ); - FREEIF ( cur->x_mac_type ); - FREEIF ( cur->x_mac_creator ); - if ( cur->file_name ) { - XP_FileRemove( cur->file_name, xpFileToPost ); - FREEIF ( cur->file_name ); - } - } - XP_FREE ( attachments ); -} - -static int -mime_draft_process_attachments ( struct mime_draft_data *mdd, - MSG_Pane *cpane ) -{ - struct MSG_AttachmentData *attachData = NULL, *tmp = NULL; - struct MSG_AttachedFile *tmpFile = NULL; - int i; - - XP_ASSERT ( mdd->attachments_count && mdd->attachments ); - - if ( !mdd->attachments || !mdd->attachments_count ) - return -1; - - attachData = XP_ALLOC( ( (mdd->attachments_count+1) * sizeof (MSG_AttachmentData) ) ); - if ( !attachData ) return MK_OUT_OF_MEMORY; - - XP_MEMSET ( attachData, 0, (mdd->attachments_count+1) * sizeof (MSG_AttachmentData) ); - - tmpFile = mdd->attachments; - tmp = attachData; - - for ( i=0; i < mdd->attachments_count; i++, tmp++, tmpFile++ ) { - if (tmpFile->type) { - if (strcasecomp ( tmpFile->type, "text/x-vcard") == 0) - StrAllocCopy (tmp->real_name, tmpFile->description); - } - if ( tmpFile->orig_url ) { - StrAllocCopy ( tmp->url, tmpFile->orig_url ); - if (!tmp->real_name) - StrAllocCopy ( tmp->real_name, tmpFile->orig_url ); - } - if ( tmpFile->type ) { - StrAllocCopy ( tmp->desired_type, tmpFile->type ); - StrAllocCopy ( tmp->real_type, tmpFile->type ); - } - if ( tmpFile->encoding ) { - StrAllocCopy ( tmp->real_encoding, tmpFile->encoding ); - } - if ( tmpFile->description ) { - StrAllocCopy ( tmp->description, tmpFile->description ); - } - if ( tmpFile->x_mac_type ) { - StrAllocCopy ( tmp->x_mac_type, tmpFile->x_mac_type ); - } - if ( tmpFile->x_mac_creator ) { - StrAllocCopy ( tmp->x_mac_creator, tmpFile->x_mac_creator ); - } - } - - MSG_SetPreloadedAttachments ( cpane, MSG_GetContext (cpane), attachData, - mdd->attachments, mdd->attachments_count ); - - XP_FREE (attachData); - - return 0; - -} - -static void mime_fix_up_html_address( char **addr) -{ - /* We need to replace paired <> they are treated as HTML tag */ - if (addr && *addr && - XP_STRCHR(*addr, '<') && XP_STRCHR(*addr, '>')) - { - char *lt = NULL; - int32 newLen = 0; - do - { - newLen = XP_STRLEN(*addr) + 3 + 1; - *addr = (char *) XP_REALLOC(*addr, newLen); - XP_ASSERT (*addr); - lt = XP_STRCHR(*addr, '<'); - XP_ASSERT(lt); - XP_MEMCPY(lt+4, lt+1, newLen - 4 - (lt - *addr)); - *lt++ = '&'; - *lt++ = 'l'; - *lt++ = 't'; - *lt = ';'; - } while (XP_STRCHR(*addr, '<')); - } -} - -static void mime_intl_mimepart_2_str(char **str, int16 mcsid) -{ - if (str && *str) - { - char *newStr = (char *) IntlDecodeMimePartIIStr - (*str, INTL_DocToWinCharSetID(mcsid), FALSE); - if (newStr && newStr != *str) - { - FREEIF(*str); - *str = newStr; - } - else - { - strip_continuations(*str); - } - } -} - -static void mime_intl_insert_message_header(char **body, char**hdr_value, - char *hdr_str, - int html_hdr_id, - int16 mailcsid, - XP_Bool htmlEdit) -{ - const char *newName = NULL; - - if (!body || !hdr_value || !hdr_str) - return; - mime_intl_mimepart_2_str(hdr_value, mailcsid); - if (htmlEdit) - StrAllocCat(*body, LINEBREAK "<BR><B>"); - else - StrAllocCat(*body, LINEBREAK); - newName = XP_GetStringForHTML(html_hdr_id, mailcsid, hdr_str); - if (!newName) - newName = hdr_str; - StrAllocCat(*body, newName); - if (htmlEdit) - StrAllocCat(*body, ":</B> "); - else - StrAllocCat(*body, ": "); - StrAllocCat(*body, *hdr_value); -} - - - -static void -mime_parse_stream_complete (NET_StreamClass *stream) -{ - struct mime_draft_data *mdd = (struct mime_draft_data *) stream->data_object; - MSG_Pane * cpane = NULL; - MSG_CompositionFields *fields = NULL; - int htmlAction = 0; - int lineWidth = 0; - - char *host = 0; - char *news_host = 0; - char *to_and_cc = 0; - char *re_subject = 0; - char *new_refs = 0; - char *from = 0; - char *repl = 0; - char *subj = 0; - char *id = 0; - char *refs = 0; - char *to = 0; - char *cc = 0; - char *bcc = 0; - char *fcc = 0; - char *org = 0; - char *grps = 0; - char *foll = 0; - char *priority = 0; - char *draftInfo = 0; - - XP_Bool altform_p = FALSE; /* #### how do we determine this? */ - XP_Bool sign_p = FALSE; /* #### how do we determine this? */ - - XP_ASSERT (mdd); - - if (!mdd) return; - - if (mdd->obj) { - int status; - - status = mdd->obj->class->parse_eof ( mdd->obj, FALSE ); - mdd->obj->class->parse_end( mdd->obj, status < 0 ? TRUE : FALSE ); - - altform_p = HG09842 ; - sign_p = mdd->options->signed_p; - - XP_ASSERT ( mdd->options == mdd->obj->options ); - mime_free (mdd->obj); - mdd->obj = 0; - if (mdd->options) { - FREEIF (mdd->options->part_to_load); - XP_FREE(mdd->options); - mdd->options = 0; - } - if (mdd->stream) { - mdd->stream->complete (mdd->stream); - XP_FREE( mdd->stream ); - mdd->stream = 0; - } - } - - /* time to bring up the compose windows with all the info gathered */ - - if ( mdd->headers ) - { - subj = MimeHeaders_get(mdd->headers, HEADER_SUBJECT, FALSE, FALSE); - repl = MimeHeaders_get(mdd->headers, HEADER_REPLY_TO, FALSE, FALSE); - to = MimeHeaders_get(mdd->headers, HEADER_TO, FALSE, TRUE); - cc = MimeHeaders_get(mdd->headers, HEADER_CC, FALSE, TRUE); - bcc = MimeHeaders_get(mdd->headers, HEADER_BCC, FALSE, TRUE); - - /* These headers should not be RFC-1522-decoded. */ - grps = MimeHeaders_get(mdd->headers, HEADER_NEWSGROUPS, FALSE, TRUE); - foll = MimeHeaders_get(mdd->headers, HEADER_FOLLOWUP_TO, FALSE, TRUE); - - host = MimeHeaders_get(mdd->headers, HEADER_X_MOZILLA_NEWSHOST, FALSE, FALSE); - if (!host) - host = MimeHeaders_get(mdd->headers, HEADER_NNTP_POSTING_HOST, FALSE, FALSE); - - id = MimeHeaders_get(mdd->headers, HEADER_MESSAGE_ID, FALSE, FALSE); - refs = MimeHeaders_get(mdd->headers, HEADER_REFERENCES, FALSE, TRUE); - priority = MimeHeaders_get(mdd->headers, HEADER_X_PRIORITY, FALSE, FALSE); - - mime_intl_mimepart_2_str(&repl, mdd->mailcsid); - mime_intl_mimepart_2_str(&to, mdd->mailcsid); - mime_intl_mimepart_2_str(&cc, mdd->mailcsid); - mime_intl_mimepart_2_str(&bcc, mdd->mailcsid); - mime_intl_mimepart_2_str(&grps, mdd->mailcsid); - mime_intl_mimepart_2_str(&foll, mdd->mailcsid); - mime_intl_mimepart_2_str(&host, mdd->mailcsid); - - if (host) { - char *secure = NULL; - - secure = strcasestr(host, "secure"); - if (secure) { - *secure = 0; - news_host = PR_smprintf ("snews://%s", host); - } - else { - news_host = PR_smprintf ("news://%s", host); - } - } - - mime_intl_mimepart_2_str(&subj, mdd->mailcsid); - - fields = MSG_CreateCompositionFields( from, repl, to, cc, bcc, fcc, grps, foll, - org, subj, refs, 0, priority, 0, news_host); - - draftInfo = MimeHeaders_get(mdd->headers, HEADER_X_MOZILLA_DRAFT_INFO, FALSE, FALSE); - if (draftInfo && fields) { - char *parm = 0; - parm = MimeHeaders_get_parameter(draftInfo, "vcard", NULL, NULL); - if (parm && !XP_STRCMP(parm, "1")) - MSG_SetCompFieldsBoolHeader(fields, - MSG_ATTACH_VCARD_BOOL_HEADER_MASK, - TRUE); - else - MSG_SetCompFieldsBoolHeader(fields, - MSG_ATTACH_VCARD_BOOL_HEADER_MASK, - FALSE); - FREEIF(parm); - parm = MimeHeaders_get_parameter(draftInfo, "receipt", NULL, NULL); - if (parm && !XP_STRCMP(parm, "0")) - MSG_SetCompFieldsBoolHeader(fields, - MSG_RETURN_RECEIPT_BOOL_HEADER_MASK, - FALSE); - else - { - int receiptType = 0; - MSG_SetCompFieldsBoolHeader(fields, - MSG_RETURN_RECEIPT_BOOL_HEADER_MASK, - TRUE); - sscanf(parm, "%d", &receiptType); - MSG_SetCompFieldsReceiptType(fields, (int32) receiptType); - } - FREEIF(parm); - parm = MimeHeaders_get_parameter(draftInfo, "uuencode", NULL, NULL); - if (parm && !XP_STRCMP(parm, "1")) - MSG_SetCompFieldsBoolHeader(fields, - MSG_UUENCODE_BINARY_BOOL_HEADER_MASK, - TRUE); - else - MSG_SetCompFieldsBoolHeader(fields, - MSG_UUENCODE_BINARY_BOOL_HEADER_MASK, - FALSE); - FREEIF(parm); - parm = MimeHeaders_get_parameter(draftInfo, "html", NULL, NULL); - if (parm) - sscanf(parm, "%d", &htmlAction); - FREEIF(parm); - parm = MimeHeaders_get_parameter(draftInfo, "linewidth", NULL, NULL); - if (parm) - sscanf(parm, "%d", &lineWidth); - FREEIF(parm); - - } - - if (mdd->messageBody) { - char *body; - XP_StatStruct st; - uint32 bodyLen = 0; - XP_File file; - MSG_EditorType editorType = MSG_DEFAULT; - - st.st_size = 0; - XP_Stat (mdd->messageBody->file_name, &st, xpFileToPost); - bodyLen = st.st_size; - body = XP_ALLOC (bodyLen + 1); - if (body) - { - XP_MEMSET (body, 0, bodyLen+1); - - file = XP_FileOpen (mdd->messageBody->file_name, xpFileToPost, - XP_FILE_READ_BIN); - XP_FileRead (body, bodyLen, file); - XP_FileClose(file); - - if (mdd->messageBody->type && *mdd->messageBody->type) - { - if( XP_STRSTR(mdd->messageBody->type, "text/html") != NULL ) - editorType = MSG_HTML_EDITOR; - else if ( XP_STRSTR(mdd->messageBody->type, "text/plain") != NULL ) - editorType = MSG_PLAINTEXT_EDITOR; - } - else - { - editorType = MSG_PLAINTEXT_EDITOR; - } - - { - CCCDataObject conv = INTL_CreateCharCodeConverter(); - if(conv) { - if (INTL_GetCharCodeConverter(mdd->mailcsid, - INTL_DocToWinCharSetID(mdd->mailcsid), conv)) - { - char *newBody = NULL; - newBody = (char *)INTL_CallCharCodeConverter( - conv, (unsigned char *) body, (int32) bodyLen); - if (newBody) { - /* CharCodeConverter return the char* to the orginal string - we don't want to free body in that case */ - if( newBody != body) - FREEIF(body); - body = newBody; - } - } - INTL_DestroyCharCodeConverter(conv); - } - } - } - - cpane = FE_CreateCompositionPane (mdd->context, fields, body, editorType); - - XP_FREE (body); - mime_free_attachments (mdd->messageBody, 1); - } - else - { - cpane = FE_CreateCompositionPane(mdd->context, fields, NULL, MSG_DEFAULT); - } - - if (cpane) - { - /* clear the message body in case someone store the signature string in it */ - MSG_SetCompBody(cpane, ""); - MSG_SetHTMLAction(cpane, (MSG_HTMLComposeAction) htmlAction); - if (lineWidth > 0) - MSG_SetLineWidth(cpane, lineWidth); - - if ( mdd->attachments_count) - mime_draft_process_attachments (mdd, cpane); - } - } - else - { - fields = MSG_CreateCompositionFields( from, repl, to, cc, bcc, fcc, grps, foll, - org, subj, refs, 0, priority, 0, news_host ); - if (fields) - cpane = FE_CreateCompositionPane(mdd->context, fields, NULL, MSG_DEFAULT); - } - - if (cpane && mdd->url->fe_data) - { -#ifdef MOZ_MAIL_NEWS - if ( mdd->format_out != FO_CMDLINE_ATTACHMENTS ) - { - MSG_SetPostDeliveryActionInfo (cpane, mdd->url->fe_data); - } - else -#endif /* MOZ_MAIL_NEWS */ - { - MSG_SetAttachmentList ( cpane, (MSG_AttachmentData*)(mdd->url->fe_data)); - } - } - - - if ( mdd->headers ) - MimeHeaders_free ( mdd->headers ); - - if (mdd->attachments) - /* do not call mime_free_attachments just use FREEIF() */ - FREEIF ( mdd->attachments ); - - if (fields) - MSG_DestroyCompositionFields(fields); - - XP_FREE (mdd); - - FREEIF(host); - FREEIF(to_and_cc); - FREEIF(re_subject); - FREEIF(new_refs); - FREEIF(from); - FREEIF(repl); - FREEIF(subj); - FREEIF(id); - FREEIF(refs); - FREEIF(to); - FREEIF(cc); - FREEIF(grps); - FREEIF(foll); - FREEIF(priority); - FREEIF(draftInfo); - -} - -static void -mime_parse_stream_abort (NET_StreamClass *stream, int status ) -{ - struct mime_draft_data *mdd = (struct mime_draft_data *) stream->data_object; - XP_ASSERT (mdd); - - if (!mdd) return; - - if (mdd->obj) { - int status=0; - - if ( !mdd->obj->closed_p ) - status = mdd->obj->class->parse_eof ( mdd->obj, TRUE ); - if ( !mdd->obj->parsed_p ) - mdd->obj->class->parse_end( mdd->obj, TRUE ); - - XP_ASSERT ( mdd->options == mdd->obj->options ); - mime_free (mdd->obj); - mdd->obj = 0; - if (mdd->options) { - FREEIF (mdd->options->part_to_load); - XP_FREE(mdd->options); - mdd->options = 0; - } - if (mdd->stream) { - mdd->stream->abort (mdd->stream, status); - XP_FREE( mdd->stream ); - mdd->stream = 0; - } - } - - if ( mdd->headers ) - MimeHeaders_free (mdd->headers); - if (mdd->attachments) - mime_free_attachments( mdd->attachments, mdd->attachments_count ); - - XP_FREE (mdd); -} - -static int -make_mime_headers_copy ( void *closure, - MimeHeaders *headers ) -{ - struct mime_draft_data *mdd = (struct mime_draft_data *) closure; - - XP_ASSERT ( mdd && headers ); - - if ( !mdd || ! headers ) return 0; - - XP_ASSERT ( mdd->headers == NULL ); - - mdd->headers = MimeHeaders_copy ( headers ); - - mdd->options->done_parsing_outer_headers = TRUE; - - return 0; -} - -int -mime_decompose_file_init_fn ( void *stream_closure, - MimeHeaders *headers ) -{ - struct mime_draft_data *mdd = (struct mime_draft_data *) stream_closure; - MSG_AttachedFile *attachments = 0, *newAttachment = 0; - int nAttachments = 0; - char *hdr_value = NULL, *parm_value = NULL; - XP_Bool needURL = FALSE; - XP_Bool creatingMsgBody = FALSE; - - XP_ASSERT (mdd && headers); - if (!mdd || !headers) return -1; - - if ( !mdd->options->is_multipart_msg ) { - if (mdd->options->decompose_init_count) { - mdd->options->decompose_init_count++; - XP_ASSERT(mdd->curAttachment); - if (mdd->curAttachment) { - char *ct = MimeHeaders_get(headers, HEADER_CONTENT_TYPE, TRUE, FALSE); - if (ct) - StrAllocCopy(mdd->curAttachment->type, ct); - FREEIF(ct); - } - return 0; - } - else { - mdd->options->decompose_init_count++; - } - } - - nAttachments = mdd->attachments_count; - - if (!nAttachments && !mdd->messageBody) { - char *charset = NULL, *contentType = NULL; - contentType = MimeHeaders_get(headers, HEADER_CONTENT_TYPE, FALSE, FALSE); - if (contentType) { - charset = MimeHeaders_get_parameter(contentType, "charset", NULL, NULL); - mdd->mailcsid = INTL_CharSetNameToID(charset); - FREEIF(charset); - FREEIF(contentType); - } - - mdd->messageBody = XP_NEW_ZAP (MSG_AttachedFile); - XP_ASSERT (mdd->messageBody); - if (!mdd->messageBody) - return MK_OUT_OF_MEMORY; - newAttachment = mdd->messageBody; - creatingMsgBody = TRUE; - } - else { - /* always allocate one more extra; don't ask me why */ - needURL = TRUE; - if ( nAttachments ) { - XP_ASSERT (mdd->attachments); - - attachments = XP_REALLOC (mdd->attachments, - sizeof (MSG_AttachedFile) * - (nAttachments + 2)); - if (!attachments) - return MK_OUT_OF_MEMORY; - mdd->attachments = attachments; - mdd->attachments_count++; - } - else { - XP_ASSERT (!mdd->attachments); - - attachments = XP_ALLOC ( sizeof (MSG_AttachedFile) * 2); - if (!attachments) - return MK_OUT_OF_MEMORY; - mdd->attachments_count++; - mdd->attachments = attachments; - } - - newAttachment = attachments + nAttachments; - XP_MEMSET ( newAttachment, 0, sizeof (MSG_AttachedFile) * 2 ); - } - - newAttachment->orig_url = MimeHeaders_get_name ( headers ); - - if (!newAttachment->orig_url) { - parm_value = MimeHeaders_get( headers, HEADER_CONTENT_BASE, FALSE, FALSE ); - if (parm_value) { - char *cp = NULL, *cp1=NULL ; - NET_UnEscape(parm_value); - /* strip '"' */ - cp = parm_value; - while (*cp == '"') cp++; - if ((cp1 = XP_STRCHR(cp, '"'))) - *cp1 = 0; - StrAllocCopy(newAttachment->orig_url, cp); - FREEIF(parm_value); - } - } - - mdd->curAttachment = newAttachment; - - newAttachment->type = MimeHeaders_get ( headers, HEADER_CONTENT_TYPE, - TRUE, FALSE ); - - /* This is to handle the degenerated Apple Double attachment. - */ - parm_value = MimeHeaders_get( headers, HEADER_CONTENT_TYPE, - FALSE, FALSE ); - if (parm_value) { - char *boundary = NULL; - char *tmp_value = NULL; - boundary = MimeHeaders_get_parameter(parm_value, "boundary", NULL, NULL); - if (boundary) - tmp_value = PR_smprintf("; boundary=\"%s\"", boundary); - if (tmp_value) - StrAllocCat(newAttachment->type, tmp_value); - newAttachment->x_mac_type = - MimeHeaders_get_parameter(parm_value, "x-mac-type", NULL, NULL); - newAttachment->x_mac_creator = - MimeHeaders_get_parameter(parm_value, "x-mac-creator", NULL, NULL); - FREEIF(parm_value); - FREEIF(boundary); - FREEIF(tmp_value); - } - newAttachment->encoding = MimeHeaders_get ( headers, - HEADER_CONTENT_TRANSFER_ENCODING, - FALSE, FALSE ); - newAttachment->description = MimeHeaders_get( headers, - HEADER_CONTENT_DESCRIPTION, - FALSE, FALSE ); - mdd->tmp_file_name = WH_TempName (xpFileToPost, "nsmail"); - - if (!mdd->tmp_file_name) - return MK_OUT_OF_MEMORY; - - StrAllocCopy (newAttachment->file_name, mdd->tmp_file_name); - mdd->tmp_file = XP_FileOpen ( mdd->tmp_file_name, - xpFileToPost, XP_FILE_WRITE_BIN ); - if (!mdd->tmp_file) - return MK_UNABLE_TO_OPEN_TMP_FILE; - - /* if need an URL and we don't have one, let's fake one */ - if (needURL && !newAttachment->orig_url) { - newAttachment->orig_url = PR_smprintf ("file://%s", mdd->tmp_file_name); - } - - if (creatingMsgBody) { - MimeDecoderData *(*fn) (int (*) (const char*, int32, void*), void*) = 0; - - /* Initialize a decoder if necessary. - */ - if (!newAttachment->encoding || HG89332) - ; - else if (!strcasecomp(newAttachment->encoding, ENCODING_BASE64)) - fn = &MimeB64DecoderInit; - else if (!strcasecomp(newAttachment->encoding, ENCODING_QUOTED_PRINTABLE)) - fn = &MimeQPDecoderInit; - else if (!strcasecomp(newAttachment->encoding, ENCODING_UUENCODE) || - !strcasecomp(newAttachment->encoding, ENCODING_UUENCODE2) || - !strcasecomp(newAttachment->encoding, ENCODING_UUENCODE3) || - !strcasecomp(newAttachment->encoding, ENCODING_UUENCODE4)) - fn = &MimeUUDecoderInit; - - if (fn) { - mdd->decoder_data = - fn (/* The (int (*) ...) cast is to turn the `void' argument - into `MimeObject'. */ - ((int (*) (const char *, int32, void *)) - dummy_file_write), - mdd->tmp_file); - - if (!mdd->decoder_data) - return MK_OUT_OF_MEMORY; - } - } - return 0; -} - -int -mime_decompose_file_output_fn ( char *buf, - int32 size, - void *stream_closure ) -{ - struct mime_draft_data *mdd = (struct mime_draft_data *) stream_closure; - int ret = 0; - - XP_ASSERT (mdd && buf); - if (!mdd || !buf) return -1; - if (!size) return 0; - - /****** doesn't seem to be needed ***** - XP_ASSERT (mdd->tmp_file && mdd->tmp_file_name); - */ - if ( !mdd->tmp_file ) - return 0; - - if (mdd->decoder_data) { - ret = MimeDecoderWrite(mdd->decoder_data, buf, size); - if (ret == -1) return -1; - } - else { - ret = XP_FileWrite(buf, size, mdd->tmp_file); - if (ret < size) - return MK_MIME_ERROR_WRITING_FILE; - } - - return 0; -} - -int -mime_decompose_file_close_fn ( void *stream_closure ) -{ - struct mime_draft_data *mdd = (struct mime_draft_data *) stream_closure; - - /* relax the rule in case we encountered invalid bigfun situation - XP_ASSERT (mdd && mdd->tmp_file); - */ - if ( !mdd || !mdd->tmp_file ) - return -1; - - if ( !mdd->options->is_multipart_msg ) { - if ( --mdd->options->decompose_init_count > 0 ) - return 0; - } - - if (mdd->decoder_data) { - MimeDecoderDestroy(mdd->decoder_data, FALSE); - mdd->decoder_data = 0; - } - - XP_FileClose ( mdd->tmp_file ); - mdd->tmp_file = 0; - FREEIF ( mdd->tmp_file_name ); - mdd->tmp_file_name = 0; - - return 0; -} - -extern NET_StreamClass * -MIME_ToDraftConverter ( int format_out, - void *closure, - URL_Struct *url, - MWContext *context ) -{ - int status = 0; - NET_StreamClass * stream = NULL; - struct mime_draft_data *mdd = NULL; - MimeObject *obj; - - XP_ASSERT (url && context); - - if ( !url || !context ) return NULL; - - mdd = XP_NEW_ZAP (struct mime_draft_data); - if (!mdd) return 0; - - mdd->url = url; - mdd->context = context; - mdd->format_out = format_out; - - mdd->options = XP_NEW_ZAP ( MimeDisplayOptions ); - if ( !mdd->options ) { - XP_FREE (mdd); - return 0; - } - mdd->options->passwd_prompt_fn_arg = context; - mdd->options->decompose_file_p = TRUE; /* new field in MimeDisplayOptions */ - mdd->options->url = url->address; - mdd->options->stream_closure = mdd; - mdd->options->html_closure = mdd; - mdd->options->decompose_headers_info_fn = make_mime_headers_copy; - mdd->options->decompose_file_init_fn = mime_decompose_file_init_fn; - mdd->options->decompose_file_output_fn = mime_decompose_file_output_fn; - mdd->options->decompose_file_close_fn = mime_decompose_file_close_fn; -#ifdef FO_MAIL_MESSAGE_TO - /* If we're attaching a message (for forwarding) then we must eradicate all - traces of bigfun from it, since forwarding someone else a message - that wasn't bigfun for them doesn't work. We have to bigfun it - before sending it. - */ - HG09878 -#endif /* FO_MAIL_MESSAGE_TO */ - - obj = mime_new ( (MimeObjectClass *) &mimeMessageClass, - (MimeHeaders *) NULL, - MESSAGE_RFC822 ); - if ( !obj ) { - FREEIF( mdd->options->part_to_load ); - XP_FREE ( mdd->options ); - XP_FREE ( mdd ); - return 0; - } - - obj->options = mdd->options; - mdd->obj = obj; - - stream = XP_NEW_ZAP ( NET_StreamClass ); - if ( !stream ) { - FREEIF( mdd->options->part_to_load ); - XP_FREE ( mdd->options ); - XP_FREE ( mdd ); - XP_FREE ( obj ); - return 0; - } - - stream->name = "MIME To Draft Converter Stream"; - stream->complete = mime_parse_stream_complete; - stream->abort = mime_parse_stream_abort; - stream->put_block = mime_parse_stream_write; - stream->is_write_ready = mime_parse_stream_write_ready; - stream->data_object = mdd; - stream->window_id = context; - - status = obj->class->initialize ( obj ); - if ( status >= 0 ) - status = obj->class->parse_begin ( obj ); - if ( status < 0 ) { - XP_FREE ( stream ); - FREEIF( mdd->options->part_to_load ); - XP_FREE ( mdd->options ); - XP_FREE ( mdd ); - XP_FREE ( obj ); - return 0; - } - - return stream; -} - -#endif /* MIME_DRAFTS */ diff --git a/mozilla/lib/libmime/mimeebod.c b/mozilla/lib/libmime/mimeebod.c deleted file mode 100644 index 9a3c70ef3fe..00000000000 --- a/mozilla/lib/libmime/mimeebod.c +++ /dev/null @@ -1,533 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeebod.c --- definition of the MimeExternalBody class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - - -#include "rosetta.h" -#include "mimeebod.h" -#include "xpgetstr.h" - -#define MIME_SUPERCLASS mimeObjectClass -MimeDefClass(MimeExternalBody, MimeExternalBodyClass, - mimeExternalBodyClass, &MIME_SUPERCLASS); - -extern int MK_MSG_LINK_TO_DOCUMENT; -extern int MK_MSG_DOCUMENT_INFO; - -#if defined(XP_MAC) && !defined(MOZILLA_30) -extern MimeObjectClass mimeMultipartAppleDoubleClass; -#endif - -static int MimeExternalBody_initialize (MimeObject *); -static void MimeExternalBody_finalize (MimeObject *); -static int MimeExternalBody_parse_line (char *, int32, MimeObject *); -static int MimeExternalBody_parse_eof (MimeObject *, XP_Bool); -static XP_Bool MimeExternalBody_displayable_inline_p (MimeObjectClass *class, - MimeHeaders *hdrs); - -#if 0 -#if defined(DEBUG) && defined(XP_UNIX) -static int MimeExternalBody_debug_print (MimeObject *, FILE *, int32); -#endif -#endif /* 0 */ - -static int -MimeExternalBodyClassInitialize(MimeExternalBodyClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - - XP_ASSERT(!oclass->class_initialized); - oclass->initialize = MimeExternalBody_initialize; - oclass->finalize = MimeExternalBody_finalize; - oclass->parse_line = MimeExternalBody_parse_line; - oclass->parse_eof = MimeExternalBody_parse_eof; - oclass->displayable_inline_p = MimeExternalBody_displayable_inline_p; - -#if 0 -#if defined(DEBUG) && defined(XP_UNIX) - oclass->debug_print = MimeExternalBody_debug_print; -#endif -#endif /* 0 */ - - return 0; -} - - -static int -MimeExternalBody_initialize (MimeObject *object) -{ - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(object); -} - -static void -MimeExternalBody_finalize (MimeObject *object) -{ - MimeExternalBody *bod = (MimeExternalBody *) object; - if (bod->hdrs) - { - MimeHeaders_free(bod->hdrs); - bod->hdrs = 0; - } - FREEIF(bod->body); - - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize(object); -} - -static int -MimeExternalBody_parse_line (char *line, int32 length, MimeObject *obj) -{ - MimeExternalBody *bod = (MimeExternalBody *) obj; - int status = 0; - - XP_ASSERT(line && *line); - if (!line || !*line) return -1; - - if (!obj->output_p) return 0; - - /* If we're supposed to write this object, but aren't supposed to convert - it to HTML, simply pass it through unaltered. */ - if (obj->options && - !obj->options->write_html_p && - obj->options->output_fn) - return MimeObject_write(obj, line, length, TRUE); - - - /* If we already have a `body' then we're done parsing headers, and all - subsequent lines get tacked onto the body. */ - if (bod->body) - { - int L = XP_STRLEN(bod->body); - char *new_str = XP_REALLOC(bod->body, L + length + 1); - if (!new_str) return MK_OUT_OF_MEMORY; - bod->body = new_str; - XP_MEMCPY(bod->body + L, line, length); - bod->body[L + length] = 0; - return 0; - } - - /* Otherwise we don't yet have a body, which means we're not done parsing - our headers. - */ - if (!bod->hdrs) - { - bod->hdrs = MimeHeaders_new(); - if (!bod->hdrs) return MK_OUT_OF_MEMORY; - } - - status = MimeHeaders_parse_line(line, length, bod->hdrs); - if (status < 0) return status; - - /* If this line is blank, we're now done parsing headers, and should - create a dummy body to show that. Gag. - */ - if (*line == CR || *line == LF) - { - bod->body = XP_STRDUP(""); - if (!bod->body) return MK_OUT_OF_MEMORY; - } - - return 0; -} - - -char * -MimeExternalBody_make_url(const char *ct, - const char *at, const char *exp, const char *size, - const char *perm, const char *dir, const char *mode, - const char *name, const char *url, const char *site, - const char *svr, const char *subj, const char *body) -{ - char *s; - if (!at) - { - return 0; - } - else if (!strcasecomp(at, "ftp") || !strcasecomp(at, "anon-ftp")) - { - if (!site || !name) - return 0; - s = (char *) XP_ALLOC(XP_STRLEN(name) + XP_STRLEN(site) + - (dir ? XP_STRLEN(dir) : 0) + 20); - if (!s) return 0; - XP_STRCPY(s, "ftp://"); - XP_STRCAT(s, site); - XP_STRCAT(s, "/"); - if (dir) XP_STRCAT(s, (dir[0] == '/' ? dir+1 : dir)); - if (s[XP_STRLEN(s)-1] != '/') - XP_STRCAT(s, "/"); - XP_STRCAT(s, name); - return s; - } - else if (!strcasecomp(at, "local-file") || !strcasecomp(at, "afs")) - { - char *s2; - if (!name) - return 0; - -#ifdef XP_UNIX - if (!strcasecomp(at, "afs")) /* only if there is a /afs/ directory */ - { - XP_StatStruct st; - if (stat("/afs/.", &st)) - return 0; - } -#else /* !XP_UNIX */ - return 0; /* never, if not Unix. */ -#endif /* !XP_UNIX */ - - s = (char *) XP_ALLOC(XP_STRLEN(name)*3 + 20); - if (!s) return 0; - XP_STRCPY(s, "file:"); - - s2 = NET_Escape(name, URL_PATH); - if (s2) XP_STRCAT(s, s2); - FREEIF(s2); - return s; - } - else if (!strcasecomp(at, "mail-server")) - { - char *s2; - if (!svr) - return 0; - s = (char *) XP_ALLOC(XP_STRLEN(svr)*4 + - (subj ? XP_STRLEN(subj)*4 : 0) + - (body ? XP_STRLEN(body)*4 : 0) + 20); - if (!s) return 0; - XP_STRCPY(s, "mailto:"); - - s2 = NET_Escape(svr, URL_XALPHAS); - if (s2) XP_STRCAT(s, s2); - FREEIF(s2); - - if (subj) - { - s2 = NET_Escape(subj, URL_XALPHAS); - XP_STRCAT(s, "?subject="); - if (s2) XP_STRCAT(s, s2); - FREEIF(s2); - } - if (body) - { - s2 = NET_Escape(body, URL_XALPHAS); - XP_STRCAT(s, (subj ? "&body=" : "?body=")); - if (s2) XP_STRCAT(s, s2); - FREEIF(s2); - } - return s; - } - else if (!strcasecomp(at, "url")) /* RFC 2017 */ - { - if (url) - return XP_STRDUP(url); /* it's already quoted and everything */ - else - return 0; - } - else - return 0; -} - -#ifdef XP_MAC -#ifdef DEBUG -#pragma global_optimizer on -#pragma optimization_level 1 -#endif /* DEBUG */ -#endif /* XP_MAC */ - -static int -MimeExternalBody_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - int status = 0; - MimeExternalBody *bod = (MimeExternalBody *) obj; - - if (obj->closed_p) return 0; - - /* Run parent method first, to flush out any buffered data. */ - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); - if (status < 0) return status; - -#if defined(XP_MAC) && !defined(MOZILLA_30) - if (obj->parent && mime_typep(obj->parent, - (MimeObjectClass*) &mimeMultipartAppleDoubleClass)) - goto done; -#endif /* defined (XP_MAC) && !defined(MOZILLA_30) */ - - if (!abort_p && - obj->output_p && - obj->options && - obj->options->write_html_p) - { - XP_Bool all_headers_p = obj->options->headers == MimeHeadersAll; - MimeDisplayOptions newopt = *obj->options; /* copy it */ - - char *ct = MimeHeaders_get(obj->headers, HEADER_CONTENT_TYPE, - FALSE, FALSE); - char *at, *exp, *size, *perm; - char *url, *dir, *mode, *name, *site, *svr, *subj; - char *h = 0, *lname = 0, *lurl = 0, *body = 0; - MimeHeaders *hdrs = 0; - - if (!ct) return MK_OUT_OF_MEMORY; - - at = MimeHeaders_get_parameter(ct, "access-type", NULL, NULL); - exp = MimeHeaders_get_parameter(ct, "expiration", NULL, NULL); - size = MimeHeaders_get_parameter(ct, "size", NULL, NULL); - perm = MimeHeaders_get_parameter(ct, "permission", NULL, NULL); - dir = MimeHeaders_get_parameter(ct, "directory", NULL, NULL); - mode = MimeHeaders_get_parameter(ct, "mode", NULL, NULL); - name = MimeHeaders_get_parameter(ct, "name", NULL, NULL); - site = MimeHeaders_get_parameter(ct, "site", NULL, NULL); - svr = MimeHeaders_get_parameter(ct, "server", NULL, NULL); - subj = MimeHeaders_get_parameter(ct, "subject", NULL, NULL); - url = MimeHeaders_get_parameter(ct, "url", NULL, NULL); - FREEIF(ct); - - /* the *internal* content-type */ - ct = MimeHeaders_get(bod->hdrs, HEADER_CONTENT_TYPE, - TRUE, FALSE); - - h = (char *) XP_ALLOC((at ? XP_STRLEN(at) : 0) + - (exp ? XP_STRLEN(exp) : 0) + - (size ? XP_STRLEN(size) : 0) + - (perm ? XP_STRLEN(perm) : 0) + - (dir ? XP_STRLEN(dir) : 0) + - (mode ? XP_STRLEN(mode) : 0) + - (name ? XP_STRLEN(name) : 0) + - (site ? XP_STRLEN(site) : 0) + - (svr ? XP_STRLEN(svr) : 0) + - (subj ? XP_STRLEN(subj) : 0) + - (url ? XP_STRLEN(url) : 0) + 100); - if (!h) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - /* If there's a URL parameter, remove all whitespace from it. - (The URL parameter to one of these headers is stored with - lines broken every 40 characters or less; it's assumed that - all significant whitespace was URL-hex-encoded, and all the - rest of it was inserted just to keep the lines short.) - */ - if (url) - { - char *in, *out; - for (in = url, out = url; *in; in++) - if (!XP_IS_SPACE(*in)) - *out++ = *in; - *out = 0; - } - - hdrs = MimeHeaders_new(); - if (!hdrs) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - -# define FROB(STR,VAR) \ - if (VAR) \ - { \ - XP_STRCPY(h, STR ": "); \ - XP_STRCAT(h, VAR); \ - XP_STRCAT(h, LINEBREAK); \ - status = MimeHeaders_parse_line(h, XP_STRLEN(h), hdrs); \ - if (status < 0) goto FAIL; \ - } - FROB("Access-Type", at); - FROB("URL", url); - FROB("Site", site); - FROB("Server", svr); - FROB("Directory", dir); - FROB("Name", name); - FROB("Type", ct); - FROB("Size", size); - FROB("Mode", mode); - FROB("Permission", perm); - FROB("Expiration", exp); - FROB("Subject", subj); -# undef FROB - XP_STRCPY(h, LINEBREAK); - status = MimeHeaders_parse_line(h, XP_STRLEN(h), hdrs); - if (status < 0) goto FAIL; - - lurl = MimeExternalBody_make_url(ct, at, exp, size, perm, dir, mode, - name, url, site, svr, subj, bod->body); - if (lurl) - { - lname = XP_STRDUP(XP_GetString(MK_MSG_LINK_TO_DOCUMENT)); - } - else - { - lname = XP_STRDUP(XP_GetString(MK_MSG_DOCUMENT_INFO)); - all_headers_p = TRUE; - } - - all_headers_p = TRUE; /* #### just do this all the time? */ - - if (bod->body && all_headers_p) - { - char *s = bod->body; - while (XP_IS_SPACE(*s)) s++; - if (*s) - { - char *s2; - const char *pre = "<P><PRE>"; - const char *suf = "</PRE>"; - int32 i; - for(i = XP_STRLEN(s)-1; i >= 0 && XP_IS_SPACE(s[i]); i--) - s[i] = 0; - s2 = NET_EscapeHTML(s); - if (!s2) goto FAIL; - body = (char *) XP_ALLOC(XP_STRLEN(pre) + XP_STRLEN(s2) + - XP_STRLEN(suf) + 1); - if (!body) - { - XP_FREE(s2); - goto FAIL; - } - XP_STRCPY(body, pre); - XP_STRCAT(body, s2); - XP_STRCAT(body, suf); - } - } - - newopt.fancy_headers_p = TRUE; - newopt.headers = (all_headers_p ? MimeHeadersAll : MimeHeadersSome); - - { - char p[] = "<P>"; - status = MimeObject_write(obj, p, 3, FALSE); - if (status < 0) goto FAIL; - } - - status = MimeHeaders_write_attachment_box (hdrs, &newopt, ct, 0, - lname, lurl, body); - if (status < 0) goto FAIL; - - { - char p[] = "<P>"; - status = MimeObject_write(obj, p, 3, FALSE); - if (status < 0) goto FAIL; - } - - FAIL: - if (hdrs) - MimeHeaders_free(hdrs); - FREEIF(h); - FREEIF(lname); - FREEIF(lurl); - FREEIF(body); - FREEIF(ct); - FREEIF(at); - FREEIF(exp); - FREEIF(size); - FREEIF(perm); - FREEIF(dir); - FREEIF(mode); - FREEIF(name); - FREEIF(url); - FREEIF(site); - FREEIF(svr); - FREEIF(subj); - } - -#if defined(XP_MAC) && !defined(MOZILLA_30) -done: -#endif /* defined (XP_MAC) && !defined(MOZILLA_30) */ - - return status; -} - -#ifdef XP_MAC -#ifdef DEBUG -#pragma global_optimizer reset -#endif /* DEBUG */ -#endif /* XP_MAC */ - -#if 0 -#if defined(DEBUG) && defined(XP_UNIX) -static int -MimeExternalBody_debug_print (MimeObject *obj, FILE *stream, int32 depth) -{ - MimeExternalBody *bod = (MimeExternalBody *) obj; - int i; - char *ct, *ct2; - char *addr = mime_part_address(obj); - - if (obj->headers) - ct = MimeHeaders_get (obj->headers, HEADER_CONTENT_TYPE, FALSE, FALSE); - if (bod->hdrs) - ct2 = MimeHeaders_get (bod->hdrs, HEADER_CONTENT_TYPE, FALSE, FALSE); - - for (i=0; i < depth; i++) - fprintf(stream, " "); - fprintf(stream, - "<%s %s\n" - "\tcontent-type: %s\n" - "\tcontent-type: %s\n" - "\tBody:%s\n\t0x%08X>\n\n", - obj->class->class_name, - addr ? addr : "???", - ct ? ct : "<none>", - ct2 ? ct2 : "<none>", - bod->body ? bod->body : "<none>", - (uint32) obj); - FREEIF(addr); - FREEIF(ct); - FREEIF(ct2); - return 0; -} -#endif -#endif /* 0 */ - -static XP_Bool -MimeExternalBody_displayable_inline_p (MimeObjectClass *class, - MimeHeaders *hdrs) -{ - char *ct = MimeHeaders_get (hdrs, HEADER_CONTENT_TYPE, FALSE, FALSE); - char *at = MimeHeaders_get_parameter(ct, "access-type", NULL, NULL); - XP_Bool inline_p = FALSE; - - if (!at) - ; - else if (!strcasecomp(at, "ftp") || - !strcasecomp(at, "anon-ftp") || - !strcasecomp(at, "local-file") || - !strcasecomp(at, "mail-server") || - !strcasecomp(at, "url")) - inline_p = TRUE; -#ifdef XP_UNIX - else if (!strcasecomp(at, "afs")) /* only if there is a /afs/ directory */ - { - XP_StatStruct st; - if (!stat("/afs/.", &st)) - inline_p = TRUE; - } -#endif /* XP_UNIX */ - - FREEIF(ct); - FREEIF(at); - return inline_p; -} diff --git a/mozilla/lib/libmime/mimeebod.h b/mozilla/lib/libmime/mimeebod.h deleted file mode 100644 index 3e2415ff621..00000000000 --- a/mozilla/lib/libmime/mimeebod.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeebod.h --- definition of the MimeExternalBody class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - - -#ifndef _MIMEEBOD_H_ -#define _MIMEEBOD_H_ - -#include "mimeobj.h" - -/* The MimeExternalBody class implements the message/external-body MIME type. - (This is not to be confused with MimeExternalObject, which implements the - handler for application/octet-stream and other types with no more specific - handlers.) - */ - -typedef struct MimeExternalBodyClass MimeExternalBodyClass; -typedef struct MimeExternalBody MimeExternalBody; - -struct MimeExternalBodyClass { - MimeObjectClass object; -}; - -extern MimeExternalBodyClass mimeExternalBodyClass; - -struct MimeExternalBody { - MimeObject object; /* superclass variables */ - MimeHeaders *hdrs; /* headers within this external-body, which - describe the network data which this body - is a pointer to. */ - char *body; /* The "phantom body" of this link. */ -}; - -#endif /* _MIMEEBOD_H_ */ diff --git a/mozilla/lib/libmime/mimeenc.c b/mozilla/lib/libmime/mimeenc.c deleted file mode 100644 index 0256de9829c..00000000000 --- a/mozilla/lib/libmime/mimeenc.c +++ /dev/null @@ -1,1133 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeenc.c --- MIME encoders and decoders, version 2. - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - - -#include "rosetta.h" -#include "mimeenc.h" -#include "mimei.h" - -typedef enum mime_encoding { - mime_Base64, mime_QuotedPrintable, mime_uuencode -} mime_encoding; - - -typedef enum mime_uue_state { - UUE_BEGIN, UUE_BODY, UUE_END -} mime_uue_state; - -struct MimeDecoderData { - mime_encoding encoding; /* Which encoding to use */ - - /* A read-buffer used for QP and B64. */ - char token[4]; - int token_size; - - /* State and read-buffer used for uudecode. */ - mime_uue_state uue_state; - char uue_line_buffer [128]; - - /* Where to write the decoded data */ - int (*write_buffer) (const char *buf, int32 size, void *closure); - void *closure; -}; - -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) - -static int -mime_decode_qp_buffer (MimeDecoderData *data, const char *buffer, int32 length) -{ - /* Warning, we are overwriting the buffer which was passed in. - This is ok, because decoding these formats will never result - in larger data than the input, only smaller. */ - const char *in = buffer; - char *out = (char *) buffer; - char token [3]; - int i; - - XP_ASSERT(data->encoding == mime_QuotedPrintable); - if (data->encoding != mime_QuotedPrintable) return -1; - - /* For the first pass, initialize the token from the unread-buffer. */ - i = 0; - while (i < 3 && data->token_size > 0) - { - token [i] = data->token[i]; - data->token_size--; - i++; - } - - /* #### BUG: when decoding quoted-printable, we are required to - strip trailing whitespace from lines -- since when encoding in - qp, one is required to quote such trailing whitespace, any - trailing whitespace which remains must have been introduced - by a stupid gateway. */ - - while (length > 0 || i != 0) - { - while (i < 3 && length > 0) - { - token [i++] = *in; - in++; - length--; - } - - if (i < 3) - { - /* Didn't get enough for a complete token. - If it might be a token, unread it. - Otherwise, just dump it. - */ - XP_MEMCPY (data->token, token, i); - data->token_size = i; - i = 0; - length = 0; - break; - } - i = 0; - - if (token [0] == '=') - { - unsigned char c = 0; - if (token[1] >= '0' && token[1] <= '9') - c = token[1] - '0'; - else if (token[1] >= 'A' && token[1] <= 'F') - c = token[1] - ('A' - 10); - else if (token[1] >= 'a' && token[1] <= 'f') - c = token[1] - ('a' - 10); - else if (token[1] == CR || token[1] == LF) - { - /* =\n means ignore the newline. */ - if (token[1] == CR && token[2] == LF) - ; /* swallow all three chars */ - else - { - in--; /* put the third char back */ - length++; - } - continue; - } - else - { - /* = followed by something other than hex or newline - - pass it through unaltered, I guess. (But, if - this bogus token happened to occur over a buffer - boundary, we can't do this, since we don't have - space for it. Oh well. Screw it.) */ - if (in > out) *out++ = token[0]; - if (in > out) *out++ = token[1]; - if (in > out) *out++ = token[2]; - continue; - } - - /* Second hex digit */ - c = (c << 4); - if (token[2] >= '0' && token[2] <= '9') - c += token[2] - '0'; - else if (token[2] >= 'A' && token[2] <= 'F') - c += token[2] - ('A' - 10); - else if (token[2] >= 'a' && token[2] <= 'f') - c += token[2] - ('a' - 10); - else - { - /* We got =xy where "x" was hex and "y" was not, so - treat that as a literal "=", x, and y. (But, if - this bogus token happened to occur over a buffer - boundary, we can't do this, since we don't have - space for it. Oh well. Screw it.) */ - if (in > out) *out++ = token[0]; - if (in > out) *out++ = token[1]; - if (in > out) *out++ = token[2]; - continue; - } - - *out++ = (char) c; - } - else - { - *out++ = token[0]; - - token[0] = token[1]; - token[1] = token[2]; - i = 2; - } - } - - /* Now that we've altered the data in place, write it. */ - if (out > buffer) - return data->write_buffer (buffer, (out - buffer), data->closure); - else - return 1; -} -#endif /* !MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE */ - -static int -mime_decode_base64_token (const char *in, char *out) -{ - /* reads 4, writes 0-3. Returns bytes written. - (Writes less than 3 only at EOF.) */ - int j; - int eq_count = 0; - unsigned long num = 0; - - for (j = 0; j < 4; j++) - { - unsigned char c = 0; - if (in[j] >= 'A' && in[j] <= 'Z') c = in[j] - 'A'; - else if (in[j] >= 'a' && in[j] <= 'z') c = in[j] - ('a' - 26); - else if (in[j] >= '0' && in[j] <= '9') c = in[j] - ('0' - 52); - else if (in[j] == '+') c = 62; - else if (in[j] == '/') c = 63; - else if (in[j] == '=') c = 0, eq_count++; - else - XP_ASSERT(0); - num = (num << 6) | c; - } - - *out++ = (char) (num >> 16); - *out++ = (char) ((num >> 8) & 0xFF); - *out++ = (char) (num & 0xFF); - - if (eq_count == 0) - return 3; /* No "=" padding means 4 bytes mapped to 3. */ - else if (eq_count == 1) - return 2; /* "xxx=" means 3 bytes mapped to 2. */ - else if (eq_count == 2) - return 1; /* "xx==" means 2 bytes mapped to 1. */ - else - { /* "x===" can't happen, because "x" would then */ - XP_ASSERT(0); /* be encoding only 6 bits, not the min of 8. */ - return 1; - } -} - - -static int -mime_decode_base64_buffer (MimeDecoderData *data, - const char *buffer, int32 length) -{ - /* Warning, we are overwriting the buffer which was passed in. - This is ok, because decoding these formats will never result - in larger data than the input, only smaller. */ - const char *in = buffer; - char *out = (char *) buffer; - char token [4]; - int i; - XP_Bool leftover = (data->token_size > 0); - - XP_ASSERT(data->encoding == mime_Base64); - - /* For the first pass, initialize the token from the unread-buffer. */ - i = 0; - while (i < 4 && data->token_size > 0) - { - token [i] = data->token[i]; - data->token_size--; - i++; - } - - while (length > 0) - { - while (i < 4 && length > 0) - { - if ((*in >= 'A' && *in <= 'Z') || - (*in >= 'a' && *in <= 'z') || - (*in >= '0' && *in <= '9') || - *in == '+' || *in == '/' || *in == '=') - token [i++] = *in; - in++; - length--; - } - - if (i < 4) - { - /* Didn't get enough for a complete token. */ - XP_MEMCPY (data->token, token, i); - data->token_size = i; - length = 0; - break; - } - i = 0; - - if (leftover) - { - /* If there are characters left over from the last time around, - we might not have space in the buffer to do our dirty work - (if there were 2 or 3 left over, then there is only room for - 1 or 2 in the buffer right now, and we need 3.) This is only - a problem for the first chunk in each buffer, so in that - case, just write prematurely. */ - int n; - n = mime_decode_base64_token (token, token); - n = data->write_buffer (token, n, data->closure); - if (n < 0) /* abort */ - return n; - - /* increment buffer so that we don't write the 1 or 2 unused - characters now at the front. */ - buffer = in; - out = (char *) buffer; - - leftover = FALSE; - } - else - { - int n = mime_decode_base64_token (token, out); - /* Advance "out" by the number of bytes just written to it. */ - out += n; - } - } - - /* Now that we've altered the data in place, write it. */ - if (out > buffer) - return data->write_buffer (buffer, (out - buffer), data->closure); - else - return 1; -} - - -static int -mime_decode_uue_buffer (MimeDecoderData *data, - const char *input_buffer, int32 input_length) -{ - /* First, copy input_buffer into state->uue_line_buffer until we have - a complete line. - - Then decode that line in place (in the uue_line_buffer) and write - it out. - - Then pull the next line into uue_line_buffer and continue. - */ - int status = 0; - char *line = data->uue_line_buffer; - char *line_end = data->uue_line_buffer + sizeof (data->uue_line_buffer) - 1; - - XP_ASSERT(data->encoding == mime_uuencode); - if (data->encoding != mime_uuencode) return -1; - - if (data->uue_state == UUE_END) - { - status = 0; - goto DONE; - } - - while (input_length > 0) - { - /* Copy data from input_buffer to `line' until we have a complete line, - or until we've run out of input. - - (line may have data in it already if the last time we were called, - we weren't called with a buffer that ended on a line boundary.) - */ - { - char *out = line + XP_STRLEN(line); - while (input_length > 0 && - out < line_end) - { - *out++ = *input_buffer++; - input_length--; - - if (out[-1] == CR || out[-1] == LF) - { - /* If we just copied a CR, and an LF is waiting, grab it too. - */ - if (out[-1] == CR && - input_length > 0 && - *input_buffer == LF) - input_buffer++, input_length--; - - /* We have a line. */ - break; - } - } - *out = 0; - - /* Ignore blank lines. - */ - if (*line == CR || *line == LF) - { - *line = 0; - continue; - } - - /* If this line was bigger than our buffer, truncate it. - (This means the data was way corrupted, and there's basically - no chance of decoding it properly, but give it a shot anyway.) - */ - if (out == line_end) - { - out--; - out[-1] = CR; - out[0] = 0; - } - - /* If we didn't get a complete line, simply return; we'll be called - with the rest of this line next time. - */ - if (out[-1] != CR && out[-1] != LF) - { - XP_ASSERT (input_length == 0); - break; - } - } - - - /* Now we have a complete line. Deal with it. - */ - - - if (data->uue_state == UUE_BODY && - line[0] == 'e' && - line[1] == 'n' && - line[2] == 'd' && - (line[3] == CR || - line[3] == LF)) - { - /* done! */ - data->uue_state = UUE_END; - *line = 0; - break; - } - else if (data->uue_state == UUE_BEGIN) - { - if (!XP_STRNCMP (line, "begin ", 6)) - data->uue_state = UUE_BODY; - *line = 0; - continue; - } - else - { - /* We're in UUE_BODY. Decode the line. */ - char *in, *out; - int32 i; - long lost; - - XP_ASSERT (data->uue_state == UUE_BODY); - - /* We map down `line', reading four bytes and writing three. - That means that `out' always stays safely behind `in'. - */ - in = line; - out = line; - -# undef DEC -# define DEC(c) (((c) - ' ') & 077) - i = DEC (*in); /* get length */ - - /* all the parens and casts are because gcc was doing something evil. - */ - lost = ((long) i) - (((((long) XP_STRLEN (in)) - 2L) * 3L) / 4L); - - if (lost > 0) /* Short line!! */ - { - /* If we get here, then the line is shorter than the length byte - at the beginning says it should be. However, the case where - the line is short because it was at the end of the buffer and - we didn't get the whole line was handled earlier (up by the - "didn't get a complete line" comment.) So if we've gotten - here, then this is a complete line which is internally - inconsistent. We will parse from it what we can... - - This probably happened because some gateway stripped trailing - whitespace from the end of the line -- so pretend the line - was padded with spaces (which map to \000.) - */ - i -= lost; - } - - for (++in; i > 0; in += 4, i -= 3) - { - char ch; - XP_ASSERT(out <= in); - - if (i >= 3) - { - /* We read four; write three. */ - ch = DEC (in[0]) << 2 | DEC (in[1]) >> 4; - *out++ = ch; - - XP_ASSERT(out <= in+1); - - ch = DEC (in[1]) << 4 | DEC (in[2]) >> 2; - *out++ = ch; - - XP_ASSERT(out <= in+2); - - ch = DEC (in[2]) << 6 | DEC (in[3]); - *out++ = ch; - - XP_ASSERT(out <= in+3); - } - else - { - /* Handle a line that isn't a multiple of 4 long. - (We read 1, 2, or 3, and will write 1 or 2.) - */ - XP_ASSERT (i > 0 && i < 3); - - ch = DEC (in[0]) << 2 | DEC (in[1]) >> 4; - *out++ = ch; - - XP_ASSERT(out <= in+1); - - if (i == 2) - { - ch = DEC (in[1]) << 4 | DEC (in[2]) >> 2; - *out++ = ch; - - XP_ASSERT(out <= in+2); - } - } - } - - /* If the line was truncated, pad the missing bytes with 0 (SPC). */ - while (lost > 0) - { - *out++ = 0; - lost--; - in = out+1; /* just to prevent the assert, below. */ - } -# undef DEC - - /* Now write out what we decoded for this line. - */ - XP_ASSERT(out >= line && out < in); - if (out > line) - status = data->write_buffer (line, (out - line), data->closure); - - /* Reset the line so that we don't think it's partial next time. */ - *line = 0; - - if (status < 0) /* abort */ - goto DONE; - } - } - - status = 1; - - DONE: - - return status; -} - - -int -MimeDecoderDestroy (MimeDecoderData *data, XP_Bool abort_p) -{ - int status = 0; - /* Flush out the last few buffered characters. */ - if (!abort_p && - data->token_size > 0 && - data->token[0] != '=') - { - if (data->encoding == mime_Base64) - while (data->token_size < sizeof (data->token)) - data->token [data->token_size++] = '='; - - status = data->write_buffer (data->token, data->token_size, - data->closure); - } - - XP_FREE (data); - return status; -} - - -static MimeDecoderData * -mime_decoder_init (enum mime_encoding which, - int (*output_fn) (const char *, int32, void *), - void *closure) -{ - MimeDecoderData *data = XP_NEW(MimeDecoderData); - if (!data) return 0; - XP_MEMSET(data, 0, sizeof(*data)); - data->encoding = which; - data->write_buffer = output_fn; - data->closure = closure; - return data; -} - -MimeDecoderData * -MimeB64DecoderInit (int (*output_fn) (const char *, int32, void *), - void *closure) -{ - return mime_decoder_init (mime_Base64, output_fn, closure); -} - -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) -MimeDecoderData * -MimeQPDecoderInit (int (*output_fn) (const char *, int32, void *), - void *closure) -{ - return mime_decoder_init (mime_QuotedPrintable, output_fn, closure); -} -#endif /* !MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE */ - -MimeDecoderData * -MimeUUDecoderInit (int (*output_fn) (const char *, int32, void *), - void *closure) -{ - return mime_decoder_init (mime_uuencode, output_fn, closure); -} - -int -MimeDecoderWrite (MimeDecoderData *data, const char *buffer, int32 size) -{ - XP_ASSERT(data); - if (!data) return -1; - switch(data->encoding) - { - case mime_Base64: - return mime_decode_base64_buffer (data, buffer, size); -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) - case mime_QuotedPrintable: - return mime_decode_qp_buffer (data, buffer, size); -#endif /* !MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE */ - case mime_uuencode: - return mime_decode_uue_buffer (data, buffer, size); - default: - XP_ASSERT(0); - return -1; - } -} - - - -/* ================== Encoders. - */ - -struct MimeEncoderData { - mime_encoding encoding; /* Which encoding to use */ - - /* Buffer for the base64 encoder. */ - unsigned char in_buffer[3]; - int32 in_buffer_count; - - /* Buffer for uuencoded data. (Need a line because of the length byte.) */ - unsigned char uue_line_buf[128]; - XP_Bool uue_wrote_begin; - - int32 current_column, line_byte_count; - - char *filename; /* filename for use with uuencoding */ - - /* Where to write the encoded data */ - int (*write_buffer) (const char *buf, int32 size, void *closure); - void *closure; -}; - - -/* Use what looks like a nice, safe value for a standard uue line length */ -#define UUENCODE_LINE_LIMIT 60 - -#undef ENC -#define ENC(c) ((c & 0x3F) + ' ') - -void -mime_uuencode_write_line(MimeEncoderData *data) -{ - /* Set the length byte at the beginning: - encoded (data->line_byte_count). */ - data->uue_line_buf[0] = ENC(data->line_byte_count); - - /* Tack a CRLF onto the end. */ - data->uue_line_buf[data->current_column++] = CR; - data->uue_line_buf[data->current_column++] = LF; - - /* Write the line to output. */ - data->write_buffer((const char*)data->uue_line_buf, data->current_column, - data->closure); - - /* Reset data based on having just written a complete line. */ - data->in_buffer_count = 0; - data->line_byte_count = 0; - data->current_column = 1; -} - -void -mime_uuencode_convert_triplet(MimeEncoderData *data) -{ - /* - If we have 3 bytes, encode them and add them to the current - line. The way we want to encode them is like this - (each digit corresponds to a bit in the binary source): - 11111111 -> 00111111 + ' ' (six highest bits of 1) - 22222222 00112222 + ' ' (low 2 of 1, high 4 of 2) - 33333333 00222233 + ' ' (low 4 of 2, high 2 of 3) - 00333333 + ' ' (low 6 of 3) - */ - char outData[4]; - int i; - - outData[0] = data->in_buffer[0] >> 2; - - outData[1] = ((data->in_buffer[0] << 4) & 0x30); - outData[1] |= data->in_buffer[1] >> 4; - - outData[2] = ((data->in_buffer[1] << 2) & 0x3C); - outData[2] |= data->in_buffer[2] >> 6; - - outData[3] = data->in_buffer[2] & 0x3F; - - for(i=0;i<4;i++) - data->uue_line_buf[data->current_column++] = ENC(outData[i]); - - data->in_buffer_count = 0; -} - -int -mime_uuencode_buffer(MimeEncoderData *data, - const char *buffer, int32 size) -{ - /* If this is the first time through, write a begin statement. */ - if (!(data->uue_wrote_begin)) - { - char firstLine[256]; - XP_SPRINTF(firstLine, "begin 644 %s\015\012", data->filename ? data->filename : ""); - data->write_buffer(firstLine, strlen(firstLine), data->closure); - data->uue_wrote_begin = TRUE; - data->current_column = 1; /* initialization unique to uuencode */ - } - - /* Pick up where we left off. */ - while(size > 0) - { - /* If we've reached the end of a line, write the line out. */ - if (data->current_column >= UUENCODE_LINE_LIMIT) - { - /* End of a line. Write the line out. */ - mime_uuencode_write_line(data); - } - - /* Get the next 3 bytes if we have them, or whatever we can get. */ - while(size > 0 && data->in_buffer_count < 3) - { - data->in_buffer[data->in_buffer_count++] = *(buffer++); - size--; data->line_byte_count++; - } - - if (data->in_buffer_count == 3) - { - mime_uuencode_convert_triplet(data); - } - } - return 0; -} - -int -mime_uuencode_finish(MimeEncoderData *data) -{ - int i; - static const char *endStr = "end\015\012"; - - /* If we have converted binary data to write to output, do it now. */ - if (data->line_byte_count > 0) - { - /* If we have binary data yet to be converted, - pad and convert it. */ - if (data->in_buffer_count > 0) - { - for(i=data->in_buffer_count;i<3;i++) - data->in_buffer[i] = '\0'; /* pad with zeroes */ - - mime_uuencode_convert_triplet(data); - } - - mime_uuencode_write_line(data); - } - - /* Write 'end' on a line by itself. */ - return data->write_buffer(endStr, strlen(endStr), data->closure); -} - -#undef ENC - -int -mime_encode_base64_buffer (MimeEncoderData *data, - const char *buffer, int32 size) -{ - int status = 0; - const unsigned char *in = (unsigned char *) buffer; - const unsigned char *end = in + size; - char out_buffer[80]; - char *out = out_buffer; - uint32 i = 0, n = 0; - uint32 off; - - if (size == 0) - return 0; - else if (size < 0) - { - XP_ASSERT(0); - return -1; - } - - - /* If this input buffer is too small, wait until next time. */ - if (size < (3 - data->in_buffer_count)) - { - XP_ASSERT(size < 3 && size > 0); - data->in_buffer[data->in_buffer_count++] = buffer[0]; - if (size > 1) - data->in_buffer[data->in_buffer_count++] = buffer[1]; - XP_ASSERT(data->in_buffer_count < 3); - return 0; - } - - - /* If there are bytes that were put back last time, take them now. - */ - i = 0; - if (data->in_buffer_count > 0) n = data->in_buffer[0]; - if (data->in_buffer_count > 1) n = (n << 8) + data->in_buffer[1]; - i = data->in_buffer_count; - data->in_buffer_count = 0; - - /* If this buffer is not a multiple of three, put one or two bytes back. - */ - off = ((size + i) % 3); - if (off) - { - data->in_buffer[0] = buffer [size - off]; - if (off > 1) - data->in_buffer [1] = buffer [size - off + 1]; - data->in_buffer_count = off; - size -= off; - XP_ASSERT (! ((size + i) % 3)); - end = (unsigned char *) (buffer + size); - } - - /* Populate the out_buffer with base64 data, one line at a time. - */ - while (in < end) - { - int32 j; - - while (i < 3) - { - n = (n << 8) | *in++; - i++; - } - i = 0; - - for (j = 18; j >= 0; j -= 6) - { - unsigned int k = (n >> j) & 0x3F; - if (k < 26) *out++ = k + 'A'; - else if (k < 52) *out++ = k - 26 + 'a'; - else if (k < 62) *out++ = k - 52 + '0'; - else if (k == 62) *out++ = '+'; - else if (k == 63) *out++ = '/'; - else abort (); - } - - data->current_column += 4; - if (data->current_column >= 72) - { - /* Do a linebreak before column 76. Flush out the line buffer. */ - data->current_column = 0; - *out++ = '\015'; - *out++ = '\012'; - status = data->write_buffer (out_buffer, (out - out_buffer), - data->closure); - out = out_buffer; - if (status < 0) return status; - } - } - - /* Write out the unwritten portion of the last line buffer. */ - if (out > out_buffer) - { - status = data->write_buffer (out_buffer, (out - out_buffer), - data->closure); - if (status < 0) return status; - } - - return 0; -} - -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) - -int -mime_encode_qp_buffer (MimeEncoderData *data, const char *buffer, int32 size) -{ - int status = 0; - static const char hexdigits[] = "0123456789ABCDEF"; - const unsigned char *in = (unsigned char *) buffer; - const unsigned char *end = in + size; - char out_buffer[80]; - char *out = out_buffer; - XP_Bool white = FALSE; - XP_Bool mb_p = FALSE; - -/* - #### I don't know how to hook this back up: - #### mb_p = INTL_DefaultWinCharSetID(state->context) & 0x300 ; - */ - - - XP_ASSERT(data->in_buffer_count == 0); - - /* Populate the out_buffer with quoted-printable data, one line at a time. - */ - for (; in < end; in++) - { - if (*in == CR || *in == LF) - { - /* Whitespace cannot be allowed to occur at the end of the line. - So we encode " \n" as " =\n\n", that is, the whitespace, a - soft line break, and then a hard line break. - */ - if (white) - { - *out++ = '='; - *out++ = CR; - *out++ = LF; - } - - /* Now write out the newline. */ - *out++ = CR; - *out++ = LF; - white = FALSE; - - status = data->write_buffer (out_buffer, (out - out_buffer), - data->closure); - if (status < 0) return status; - out = out_buffer; - - /* If its CRLF, swallow two chars instead of one. */ - if (in[0] == CR && in[1] == LF) - in++; - - out = out_buffer; - white = FALSE; - data->current_column = 0; - } - else if (data->current_column == 0 && *in == '.') - { - /* Just to be SMTP-safe, if "." appears in column 0, encode it. - (mmencode does this too.) - */ - goto HEX; - } - else if (data->current_column == 0 && *in == 'F' - && (in >= end-1 || in[1] == 'r') - && (in >= end-2 || in[2] == 'o') - && (in >= end-3 || in[3] == 'm') - && (in >= end-4 || in[4] == ' ')) - { - /* If this line begins with 'F' and we cannot determine that - this line does not begin with "From " then do the safe thing - and assume that it does, and encode the 'F' in hex to avoid - BSD mailbox lossage. (We might not be able to tell that it - is really "From " if the end of the buffer was early. So - this means that "\nFoot" will have the F encoded if the end of - the buffer happens to fall just after the F; but will not have - it encoded if it's after the first "o" or later. Oh well. - It's a little inconsistent, but it errs on the safe side.) - */ - goto HEX; - } - else if ((*in >= 33 && *in <= 60) || /* safe printing chars */ - (*in >= 62 && *in <= 126) || - (mb_p && (*in == 61 || *in == 127 || *in == 0x1B))) - { - white = FALSE; - *out++ = *in; - data->current_column++; - } - else if (*in == ' ' || *in == '\t') /* whitespace */ - { - white = TRUE; - *out++ = *in; - data->current_column++; - } - else /* print as =FF */ - { - HEX: - white = FALSE; - *out++ = '='; - *out++ = hexdigits[*in >> 4]; - *out++ = hexdigits[*in & 0xF]; - data->current_column += 3; - } - - XP_ASSERT (data->current_column <= 76); /* Hard limit required by spec */ - - if (data->current_column >= 73) /* soft line break: "=\r\n" */ - { - *out++ = '='; - *out++ = CR; - *out++ = LF; - - status = data->write_buffer (out_buffer, (out - out_buffer), - data->closure); - if (status < 0) return status; - out = out_buffer; - white = FALSE; - data->current_column = 0; - } - } - - /* Write out the unwritten portion of the last line buffer. */ - if (out > out_buffer) - { - status = data->write_buffer (out_buffer, (out - out_buffer), - data->closure); - if (status < 0) return status; - } - - return 0; -} -#endif /* !MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE */ - - - -int -MimeEncoderDestroy (MimeEncoderData *data, XP_Bool abort_p) -{ - int status = 0; - - /* If we're uuencoding, we have our own finishing routine. */ - if (data->encoding == mime_uuencode) - mime_uuencode_finish(data); - - /* Since Base64 (and uuencode) output needs to do some buffering to get - a multiple of three bytes on each block, there may be a few bytes - left in the buffer after the last block has been written. We need to - flush those out now. - */ - - XP_ASSERT (data->encoding == mime_Base64 || - data->in_buffer_count == 0); - - if (!abort_p && - data->in_buffer_count > 0) - { - char buf2 [6]; - char *buf = buf2 + 2; - char *out = buf; - int j; - /* fixed bug 55998, 61302, 61866 - * type casting to uint32 before shifting - */ - uint32 n = ((uint32) data->in_buffer[0]) << 16; - if (data->in_buffer_count > 1) - n = n | (((uint32) data->in_buffer[1]) << 8); - - buf2[0] = CR; - buf2[1] = LF; - - for (j = 18; j >= 0; j -= 6) - { - unsigned int k = (n >> j) & 0x3F; - if (k < 26) *out++ = k + 'A'; - else if (k < 52) *out++ = k - 26 + 'a'; - else if (k < 62) *out++ = k - 52 + '0'; - else if (k == 62) *out++ = '+'; - else if (k == 63) *out++ = '/'; - else abort (); - } - - /* Pad with equal-signs. */ - if (data->in_buffer_count == 1) - buf[2] = '='; - buf[3] = '='; - - if (data->current_column >= 72) - status = data->write_buffer (buf2, 6, data->closure); - else - status = data->write_buffer (buf, 4, data->closure); - } - - XP_FREEIF(data->filename); - XP_FREE (data); - return status; -} - - -static MimeEncoderData * -mime_encoder_init (enum mime_encoding which, - int (*output_fn) (const char *, int32, void *), - void *closure) -{ - MimeEncoderData *data = XP_NEW(MimeEncoderData); - if (!data) return 0; - XP_MEMSET(data, 0, sizeof(*data)); - data->encoding = which; - data->write_buffer = output_fn; - data->closure = closure; - return data; -} - -MimeEncoderData * -MimeB64EncoderInit (int (*output_fn) (const char *, int32, void *), - void *closure) -{ - return mime_encoder_init (mime_Base64, output_fn, closure); -} - -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) -MimeEncoderData * -MimeQPEncoderInit (int (*output_fn) (const char *, int32, void *), - void *closure) -{ - return mime_encoder_init (mime_QuotedPrintable, output_fn, closure); -} -#endif /* !MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE */ - -MimeEncoderData * -MimeUUEncoderInit (char *filename, - int (*output_fn) (const char *, int32, void *), - void *closure) -{ - MimeEncoderData *enc = mime_encoder_init (mime_uuencode, output_fn, closure); - - if (filename) - enc->filename = XP_STRDUP(filename); - - return enc; -} - -int -MimeEncoderWrite (MimeEncoderData *data, const char *buffer, int32 size) -{ - XP_ASSERT(data); - if (!data) return -1; - switch(data->encoding) - { - case mime_Base64: - return mime_encode_base64_buffer (data, buffer, size); -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) - case mime_QuotedPrintable: - return mime_encode_qp_buffer (data, buffer, size); -#endif /* !MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE */ - case mime_uuencode: - return mime_uuencode_buffer(data, buffer, size); - default: - XP_ASSERT(0); - return -1; - } -} diff --git a/mozilla/lib/libmime/mimeeobj.c b/mozilla/lib/libmime/mimeeobj.c deleted file mode 100644 index 2a389c54724..00000000000 --- a/mozilla/lib/libmime/mimeeobj.c +++ /dev/null @@ -1,282 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeeobj.c --- definition of the MimeExternalObject class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - - -#include "rosetta.h" -#include "mimeeobj.h" -#include "xpgetstr.h" - -#define MIME_SUPERCLASS mimeLeafClass -MimeDefClass(MimeExternalObject, MimeExternalObjectClass, - mimeExternalObjectClass, &MIME_SUPERCLASS); - -extern int MK_MSG_ATTACHMENT; - -#if defined(XP_MAC) && !defined(MOZILLA_30) -extern MimeObjectClass mimeMultipartAppleDoubleClass; -#endif - -static int MimeExternalObject_initialize (MimeObject *); -static void MimeExternalObject_finalize (MimeObject *); -static int MimeExternalObject_parse_begin (MimeObject *); -static int MimeExternalObject_parse_buffer (char *, int32, MimeObject *); -static int MimeExternalObject_parse_line (char *, int32, MimeObject *); -static int MimeExternalObject_parse_decoded_buffer (char*, int32, MimeObject*); -static XP_Bool MimeExternalObject_displayable_inline_p (MimeObjectClass *class, - MimeHeaders *hdrs); - -static int -MimeExternalObjectClassInitialize(MimeExternalObjectClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeLeafClass *lclass = (MimeLeafClass *) class; - - XP_ASSERT(!oclass->class_initialized); - oclass->initialize = MimeExternalObject_initialize; - oclass->finalize = MimeExternalObject_finalize; - oclass->parse_begin = MimeExternalObject_parse_begin; - oclass->parse_buffer = MimeExternalObject_parse_buffer; - oclass->parse_line = MimeExternalObject_parse_line; - oclass->displayable_inline_p = MimeExternalObject_displayable_inline_p; - lclass->parse_decoded_buffer = MimeExternalObject_parse_decoded_buffer; - return 0; -} - - -static int -MimeExternalObject_initialize (MimeObject *object) -{ - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(object); -} - -static void -MimeExternalObject_finalize (MimeObject *object) -{ - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize(object); -} - - -static int -MimeExternalObject_parse_begin (MimeObject *obj) -{ - int status; - - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_begin(obj); - if (status < 0) return status; - -#if defined (XP_MAC) && !defined(MOZILLA_30) - if (obj->parent && mime_typep(obj->parent, - (MimeObjectClass *) &mimeMultipartAppleDoubleClass)) - goto done; -#endif /* defined (XP_MAC) && !defined(MOZILLA_30) */ - - /* If we're writing this object, and we're doing it in raw form, then - now is the time to inform the backend what the type of this data is. - */ - if (obj->output_p && - obj->options && - !obj->options->write_html_p && - !obj->options->state->first_data_written_p) - { - status = MimeObject_output_init(obj, 0); - if (status < 0) return status; - XP_ASSERT(obj->options->state->first_data_written_p); - } - - - /* If we're writing this object as HTML, do all the work now -- just write - out a table with a link in it. (Later calls to the `parse_buffer' method - will simply discard the data of the object itself.) - */ - if (obj->options && - obj->output_p && - obj->options->write_html_p && - obj->options->output_fn) - { - MimeDisplayOptions newopt = *obj->options; /* copy it */ - char *id = 0; - char *id_url = 0; - char *id_name = 0; - char *id_imap = 0; - XP_Bool all_headers_p = obj->options->headers == MimeHeadersAll; - - id = mime_part_address (obj); - if (obj->options->missing_parts) - id_imap = mime_imap_part_address (obj); - if (! id) return MK_OUT_OF_MEMORY; - - if (obj->options && obj->options->url) - { - const char *url = obj->options->url; - if (id_imap && id) - { - /* if this is an IMAP part. */ - id_url = mime_set_url_imap_part(url, id_imap, id); - } - else - { - /* This is just a normal MIME part as usual. */ - id_url = mime_set_url_part(url, id, TRUE); - } - if (!id_url) - { - XP_FREE(id); - return MK_OUT_OF_MEMORY; - } - } - - if (!XP_STRCMP (id, "0")) - { - XP_FREE(id); - id = XP_STRDUP(XP_GetString(MK_MSG_ATTACHMENT)); - } - else - { - const char *p = "Part "; /* #### i18n */ - char *s = (char *)XP_ALLOC(XP_STRLEN(p) + XP_STRLEN(id) + 1); - if (!s) - { - XP_FREE(id); - XP_FREE(id_url); - return MK_OUT_OF_MEMORY; - } - /* we have a valid id */ - if (id) - id_name = mime_find_suggested_name_of_part(id, obj); - XP_STRCPY(s, p); - XP_STRCAT(s, id); - XP_FREE(id); - id = s; - } - - if (all_headers_p && - /* Don't bother showing all headers on this part if it's the only - part in the message: in that case, we've already shown these - headers. */ - obj->options->state && - obj->options->state->root == obj->parent) - all_headers_p = FALSE; - - newopt.fancy_headers_p = TRUE; - newopt.headers = (all_headers_p ? MimeHeadersAll : MimeHeadersSome); - - { - char p[] = "<P>"; - status = MimeObject_write(obj, p, 3, FALSE); - if (status < 0) goto FAIL; - } - - status = MimeHeaders_write_attachment_box (obj->headers, &newopt, - obj->content_type, - obj->encoding, - id_name? id_name : id, id_url, 0); - FREEIF(id_name); - if (status < 0) goto FAIL; - - { - char p[] = "<P>"; - status = MimeObject_write(obj, p, 3, FALSE); - if (status < 0) goto FAIL; - } - - FAIL: - FREEIF(id); - FREEIF(id_url); - FREEIF(id_name); - if (status < 0) return status; - } - -#if defined (XP_MAC) && !defined(MOZILLA_30) -done: -#endif /* defined (XP_MAC) && !defined(MOZILLA_30) */ - - return 0; -} - -static int -MimeExternalObject_parse_buffer (char *buffer, int32 size, MimeObject *obj) -{ - XP_ASSERT(!obj->closed_p); - if (obj->closed_p) return -1; - - if (obj->output_p && - obj->options && - !obj->options->write_html_p) - { - /* The data will be base64-decoded and passed to - MimeExternalObject_parse_decoded_buffer. */ - return ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_buffer(buffer, size, - obj); - } - else - { - /* Otherwise, simply ignore the data. */ - return 0; - } -} - - -static int -MimeExternalObject_parse_decoded_buffer (char *buf, int32 size, - MimeObject *obj) -{ - /* This is called (by MimeLeafClass->parse_buffer) with blocks of data - that have already been base64-decoded. This will only be called in - the case where we're not emitting HTML, and want access to the raw - data itself. - - We override the `parse_decoded_buffer' method provided by MimeLeaf - because, unlike most children of MimeLeaf, we do not want to line- - buffer the decoded data -- we want to simply pass it along to the - backend, without going through our `parse_line' method. - */ - if (!obj->output_p || - !obj->options || - obj->options->write_html_p) - { - XP_ASSERT(0); - return -1; - } - - return MimeObject_write(obj, buf, size, TRUE); -} - - -static int -MimeExternalObject_parse_line (char *line, int32 length, MimeObject *obj) -{ - /* This method should never be called (externals do no line buffering). - */ - XP_ASSERT(0); - return -1; -} - -static XP_Bool -MimeExternalObject_displayable_inline_p (MimeObjectClass *class, - MimeHeaders *hdrs) -{ - return FALSE; -} diff --git a/mozilla/lib/libmime/mimeeobj.h b/mozilla/lib/libmime/mimeeobj.h deleted file mode 100644 index a3c98a80e6a..00000000000 --- a/mozilla/lib/libmime/mimeeobj.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeeobj.h --- definition of the MimeExternalObject class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - - -#ifndef _MIMEEOBJ_H_ -#define _MIMEEOBJ_H_ - -#include "mimeleaf.h" - -/* The MimeExternalObject class represents MIME parts which contain data - which cannot be displayed inline -- application/octet-stream and any - other type that is not otherwise specially handled. (This is not to - be confused with MimeExternalBody, which is the handler for the - message/external-object MIME type only.) - */ - -typedef struct MimeExternalObjectClass MimeExternalObjectClass; -typedef struct MimeExternalObject MimeExternalObject; - -struct MimeExternalObjectClass { - MimeLeafClass leaf; -}; - -extern MimeExternalObjectClass mimeExternalObjectClass; - -struct MimeExternalObject { - MimeLeaf leaf; -}; - -#endif /* _MIMEEOBJ_H_ */ diff --git a/mozilla/lib/libmime/mimefilt.c b/mozilla/lib/libmime/mimefilt.c deleted file mode 100644 index 097718e3d07..00000000000 --- a/mozilla/lib/libmime/mimefilt.c +++ /dev/null @@ -1,442 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimefilt.c --- test harness for libmime.a - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - - This program reads a message from stdin and writes the output of the MIME - parser on stdout. - - Parameters can be passed to the parser through the usual URL mechanism: - - mimefilt BASE-URL?headers=all&rot13 < in > out - - Some parameters can't be affected that way, so some additional switches - may be passed on the command line after the URL: - - -fancy whether fancy headers should be generated (default) - - -no-fancy opposite; this uses the headers used in the cases of - FO_SAVE_AS_TEXT or FO_QUOTE_MESSAGE - - -html whether we should convert to HTML (like FO_PRESENT); - this is the default if no ?part= is specified. - - -raw don't convert to HTML (FO_SAVE_AS); - this is the default if a ?part= is specified. - - -outline at the end, print a debugging overview of the MIME structure - - Before any output comes a blurb listing the content-type, charset, and - various other info that would have been put in the generated URL struct. - It's printed to the beginning of the output because otherwise this out- - of-band data would have been lost. (So the output of this program is, - in fact, a raw HTTP response.) - */ - -#include "rosetta.h" -#include "mimemsg.h" -#if 0 -#include "prglobal.h" -#endif - -#ifdef MOZ_SECURITY -#include "key.h" -#include "cert.h" -#include "secrng.h" -#include "secmod.h" -#include "pk11func.h" -#endif /* MOZ_SECURITY */ - - -#ifndef XP_UNIX -ERROR! This is a unix-only file for the "mimefilt" standalone program. - This does not go into libmime.a. -#endif - - -static char * -test_file_type (const char *filename, void *stream_closure) -{ - const char *suf = XP_STRRCHR(filename, '.'); - if (!suf) - return 0; - suf++; - - if (!XP_STRCASECMP(suf, "txt") || - !XP_STRCASECMP(suf, "text")) - return XP_STRDUP("text/plain"); - else if (!XP_STRCASECMP(suf, "htm") || - !XP_STRCASECMP(suf, "html")) - return XP_STRDUP("text/html"); - else if (!XP_STRCASECMP(suf, "gif")) - return XP_STRDUP("image/gif"); - else if (!XP_STRCASECMP(suf, "jpg") || - !XP_STRCASECMP(suf, "jpeg")) - return XP_STRDUP("image/jpeg"); - else if (!XP_STRCASECMP(suf, "pjpg") || - !XP_STRCASECMP(suf, "pjpeg")) - return XP_STRDUP("image/pjpeg"); - else if (!XP_STRCASECMP(suf, "xbm")) - return XP_STRDUP("image/x-xbitmap"); - else if (!XP_STRCASECMP(suf, "xpm")) - return XP_STRDUP("image/x-xpixmap"); - else if (!XP_STRCASECMP(suf, "xwd")) - return XP_STRDUP("image/x-xwindowdump"); - else if (!XP_STRCASECMP(suf, "bmp")) - return XP_STRDUP("image/x-MS-bmp"); - else if (!XP_STRCASECMP(suf, "au")) - return XP_STRDUP("audio/basic"); - else if (!XP_STRCASECMP(suf, "aif") || - !XP_STRCASECMP(suf, "aiff") || - !XP_STRCASECMP(suf, "aifc")) - return XP_STRDUP("audio/x-aiff"); - else if (!XP_STRCASECMP(suf, "ps")) - return XP_STRDUP("application/postscript"); - - HG43290 - - else - return 0; -} - -static char * -test_type_icon(const char *type, void *stream_closure) -{ - if (!XP_STRNCASECMP(type, "text/", 5)) - return XP_STRDUP("internal-gopher-text"); - else if (!XP_STRNCASECMP(type, "image/", 6)) - return XP_STRDUP("internal-gopher-image"); - else if (!XP_STRNCASECMP(type, "audio/", 6)) - return XP_STRDUP("internal-gopher-sound"); - else if (!XP_STRNCASECMP(type, "video/", 6)) - return XP_STRDUP("internal-gopher-movie"); - else if (!XP_STRNCASECMP(type, "application/", 12)) - return XP_STRDUP("internal-gopher-binary"); - else - return XP_STRDUP("internal-gopher-unknown"); -} - -static int -test_output_fn(char *buf, int32 size, void *closure) -{ - FILE *out = (FILE *) closure; - if (out) - return fwrite(buf, sizeof(*buf), size, out); - else - return 0; -} - -static int -test_output_init_fn (const char *type, - const char *charset, - const char *name, - const char *x_mac_type, - const char *x_mac_creator, - void *stream_closure) -{ - FILE *out = (FILE *) stream_closure; - fprintf(out, "CONTENT-TYPE: %s", type); - if (charset) - fprintf(out, "; charset=\"%s\"", charset); - if (name) - fprintf(out, "; name=\"%s\"", name); - if (x_mac_type || x_mac_creator) - fprintf(out, "; x-mac-type=\"%s\"; x-mac-creator=\"%s\"", - x_mac_type ? x_mac_type : "", - x_mac_creator ? x_mac_type : ""); - fprintf(out, CRLF CRLF); - return 0; -} - - -static int -test_set_html_state_fn (void *stream_closure, - XP_Bool layer_encapsulate_p, - XP_Bool start_p, - XP_Bool abort_p) -{ - char random_close_tags[] = - "</TABLE></TABLE></TABLE></TABLE></TABLE></TABLE>" - "</DL></DL></DL></DL></DL></DL></DL></DL></DL></DL>" - "</DL></DL></DL></DL></DL></DL></DL></DL></DL></DL>" - "</B></B></B></B></B></B></B></B></B></B></B></B>" - "</PRE></PRE></PRE></PRE></PRE></PRE></PRE></PRE>" - "<BASEFONT SIZE=3></SCRIPT>"; - return test_output_fn(random_close_tags, XP_STRLEN(random_close_tags), - stream_closure); -} - -static void * -test_image_begin(const char *image_url, const char *content_type, - void *stream_closure) -{ - return ((void *) XP_STRDUP(image_url)); -} - -static void -test_image_end(void *image_closure, int status) -{ - char *url = (char *) image_closure; - if (url) XP_FREE(url); -} - -static char * -test_image_make_image_html(void *image_data) -{ - char *url = (char *) image_data; -#if 0 - const char *prefix = "<P><CENTER><IMG SRC=\""; - const char *suffix = "\"></CENTER><P>"; -#else - const char *prefix = ("<P><CENTER><TABLE BORDER=2 CELLPADDING=20" - " BGCOLOR=WHITE>" - "<TR><TD ALIGN=CENTER>" - "an inlined image would have gone here for<BR>"); - const char *suffix = "</TD></TR></TABLE></CENTER><P>"; -#endif - char *buf; - buf = (char *) XP_ALLOC (XP_STRLEN (prefix) + XP_STRLEN (suffix) + - XP_STRLEN (url) + 20); - if (!buf) return 0; - *buf = 0; - XP_STRCAT (buf, prefix); - XP_STRCAT (buf, url); - XP_STRCAT (buf, suffix); - return buf; -} - -static int test_image_write_buffer(char *buf, int32 size, void *image_closure) -{ - return 0; -} - -#ifdef MOZ_SECURITY -static char * -test_passwd_prompt (PK11SlotInfo *slot, void *wincx) -{ - char buf[2048], *s; - fprintf(stdout, "#### Password required: "); - s = fgets(buf, sizeof(buf)-1, stdin); - if (!s) return s; - if (s[strlen(s)-1] == '\r' || - s[strlen(s)-1] == '\n') - s[strlen(s)-1] = '\0'; - return s; -} -#endif /* MOZ_SECURITY */ - - -int -test(FILE *in, FILE *out, - const char *url, - XP_Bool fancy_headers_p, - XP_Bool html_p, - XP_Bool outline_p, - XP_Bool decrypt_p, - XP_Bool variable_width_plaintext_p) -{ - int status = 0; - MimeObject *obj = 0; - MimeDisplayOptions *opt = XP_NEW(MimeDisplayOptions); - XP_MEMSET(opt, 0, sizeof(*opt)); - - if (decrypt_p) html_p = FALSE; - - opt->fancy_headers_p = fancy_headers_p; - opt->headers = MimeHeadersSome; - opt->no_inline_p = FALSE; - opt->rot13_p = FALSE; - - status = mime_parse_url_options(url, opt); - if (status < 0) - { - XP_FREE(opt); - return MK_OUT_OF_MEMORY; - } - - opt->url = url; - opt->write_html_p = html_p; - opt->decrypt_p = decrypt_p; - opt->output_init_fn = test_output_init_fn; - opt->output_fn = test_output_fn; - opt->set_html_state_fn = test_set_html_state_fn; - opt->charset_conversion_fn= 0; - opt->rfc1522_conversion_fn= 0; - opt->reformat_date_fn = 0; - opt->file_type_fn = test_file_type; - opt->type_description_fn = 0; - opt->type_icon_name_fn = test_type_icon; - opt->stream_closure = out; - - opt->image_begin = test_image_begin; - opt->image_end = test_image_end; - opt->make_image_html = test_image_make_image_html; - opt->image_write_buffer = test_image_write_buffer; - - opt->variable_width_plaintext_p = variable_width_plaintext_p; - - obj = mime_new ((MimeObjectClass *)&mimeMessageClass, - (MimeHeaders *) NULL, - MESSAGE_RFC822); - if (!obj) - { - XP_FREE(opt); - return MK_OUT_OF_MEMORY; - } - obj->options = opt; - - status = obj->class->initialize(obj); - if (status >= 0) - status = obj->class->parse_begin(obj); - if (status < 0) - { - XP_FREE(opt); - XP_FREE(obj); - return MK_OUT_OF_MEMORY; - } - - while (1) - { - char buf[255]; - int size = fread(buf, sizeof(*buf), sizeof(buf), stdin); - if (size <= 0) break; - status = obj->class->parse_buffer(buf, size, obj); - if (status < 0) - { - mime_free(obj); - XP_FREE(opt); - return status; - } - } - - status = obj->class->parse_eof(obj, FALSE); - if (status >= 0) - status = obj->class->parse_end(obj, FALSE); - if (status < 0) - { - mime_free(obj); - XP_FREE(opt); - return status; - } - - if (outline_p) - { - fprintf(out, "\n\n" - "###############################################################\n"); - obj->class->debug_print(obj, stderr, 0); - fprintf(out, - "###############################################################\n"); - } - - mime_free (obj); - XP_FREE(opt); - return 0; -} - - -static char * -test_cdb_name_cb (void *arg, int vers) -{ - static char f[1024]; - HG09845 - return f; -} - -static char * -test_kdb_name_cb (void *arg, int vers) -{ - static char f[1024]; - if (vers <= 2) - sprintf(f, "%s/%s/key.db", getenv("HOME"),MOZ_USER_DIR); - else - sprintf(f, "%s/%s/key%d.db", getenv("HOME"), MOZ_USER_DIR, vers); - return f; -} - -extern void SEC_Init(void); - -int -main (int argc, char **argv) -{ - int32 i = 1; - char *url = ""; - XP_Bool fancy_p = TRUE; - XP_Bool html_p = TRUE; - XP_Bool outline_p = FALSE; - XP_Bool decrypt_p = FALSE; - char filename[1000]; - -#ifdef MOZ_SECURITY - HG09846 -#endif /* MOZ_SECURITY */ - - if (i < argc) - { - if (argv[i][0] == '-') - url = XP_STRDUP(""); - else - url = argv[i++]; - } - - if (url && - (XP_STRSTR(url, "?part=") || - XP_STRSTR(url, "&part="))) - html_p = FALSE; - - while (i < argc) - { - if (!XP_STRCMP(argv[i], "-fancy")) - fancy_p = TRUE; - else if (!XP_STRCMP(argv[i], "-no-fancy")) - fancy_p = FALSE; - else if (!XP_STRCMP(argv[i], "-html")) - html_p = TRUE; - else if (!XP_STRCMP(argv[i], "-raw")) - html_p = FALSE; - else if (!XP_STRCMP(argv[i], "-outline")) - outline_p = TRUE; - HG09847 - else - { - fprintf(stderr, - HG09848 , - " < message/rfc822 > output\n", - (XP_STRRCHR(argv[0], '/') ? - XP_STRRCHR(argv[0], '/') + 1 : - argv[0])); - i = 1; - goto FAIL; - } - i++; - } - - i = test(stdin, stdout, url, fancy_p, html_p, outline_p, decrypt_p, TRUE); - fprintf(stdout, "\n"); - fflush(stdout); - - FAIL: - - HG09849 - - exit(i); -} diff --git a/mozilla/lib/libmime/mimehdrs.c b/mozilla/lib/libmime/mimehdrs.c deleted file mode 100644 index d8d4fd33ee7..00000000000 --- a/mozilla/lib/libmime/mimehdrs.c +++ /dev/null @@ -1,2930 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimehdrs.c --- MIME header parser, version 2 (see mimei.h). - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - - -#include "rosetta.h" -#include "mimei.h" -#include "xp_linebuf.h" -#include "xpgetstr.h" -#include "libi18n.h" -#include "mime.h" - -#ifndef MOZILLA_30 -# include "msgcom.h" -#include "imap.h" -#include "prefapi.h" -#endif /* !MOZILLA_30 */ - -extern int MK_OUT_OF_MEMORY; -extern int MK_MSG_NO_HEADERS; -extern int MK_MSG_MIME_MAC_FILE; -extern int MK_MSG_IN_MSG_X_USER_WROTE; -extern int MK_MSG_USER_WROTE; -extern int MK_MSG_UNSPECIFIED_TYPE; -extern int MK_MSG_XSENDER_INTERNAL; -extern int MK_MSG_ADDBOOK_MOUSEOVER_TEXT; -extern int MK_MSG_SHOW_ATTACHMENT_PANE; - -extern int MK_MIMEHTML_DISP_SUBJECT; -extern int MK_MIMEHTML_DISP_RESENT_COMMENTS; -extern int MK_MIMEHTML_DISP_RESENT_DATE; -extern int MK_MIMEHTML_DISP_RESENT_SENDER; -extern int MK_MIMEHTML_DISP_RESENT_FROM; -extern int MK_MIMEHTML_DISP_RESENT_TO; -extern int MK_MIMEHTML_DISP_RESENT_CC; -extern int MK_MIMEHTML_DISP_DATE; -extern int MK_MIMEHTML_DISP_SUBJECT; -extern int MK_MIMEHTML_DISP_SENDER; -extern int MK_MIMEHTML_DISP_FROM; -extern int MK_MIMEHTML_DISP_REPLY_TO; -extern int MK_MIMEHTML_DISP_ORGANIZATION; -extern int MK_MIMEHTML_DISP_TO; -extern int MK_MIMEHTML_DISP_CC; -extern int MK_MIMEHTML_DISP_NEWSGROUPS; -extern int MK_MIMEHTML_DISP_FOLLOWUP_TO; -extern int MK_MIMEHTML_DISP_REFERENCES; -extern int MK_MIMEHTML_DISP_MESSAGE_ID; -extern int MK_MIMEHTML_DISP_RESENT_MESSAGE_ID; -extern int MK_MIMEHTML_DISP_BCC; -extern int MK_MIMEHTML_VERIFY_SIGNATURE; -extern int MK_MIMEHTML_DOWNLOAD_STATUS_HEADER; -extern int MK_MIMEHTML_DOWNLOAD_STATUS_NOT_DOWNLOADED; - -HG82991 - -char * -strip_continuations(char *original); - -/* -ender mime does not need any of this except for strip coninuous -*/ - -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) - - -MimeHeaders * -MimeHeaders_new (void) -{ - MimeHeaders *hdrs = (MimeHeaders *) XP_ALLOC(sizeof(MimeHeaders)); - if (!hdrs) return 0; - - XP_MEMSET(hdrs, 0, sizeof(*hdrs)); - hdrs->done_p = FALSE; - - return hdrs; -} - -void -MimeHeaders_free (MimeHeaders *hdrs) -{ - if (!hdrs) return; - FREEIF(hdrs->all_headers); - FREEIF(hdrs->heads); - FREEIF(hdrs->obuffer); - FREEIF(hdrs->munged_subject); - hdrs->obuffer_fp = 0; - hdrs->obuffer_size = 0; - -# ifdef DEBUG__ - { - int i, size = sizeof(*hdrs); - uint32 *array = (uint32*) hdrs; - for (i = 0; i < (size / sizeof(*array)); i++) - array[i] = (uint32) 0xDEADBEEF; - } -# endif /* DEBUG */ - - XP_FREE(hdrs); -} - - -MimeHeaders * -MimeHeaders_copy (MimeHeaders *hdrs) -{ - MimeHeaders *hdrs2; - if (!hdrs) return 0; - - hdrs2 = (MimeHeaders *) XP_ALLOC(sizeof(*hdrs)); - if (!hdrs2) return 0; - XP_MEMSET(hdrs2, 0, sizeof(*hdrs2)); - - if (hdrs->all_headers) - { - hdrs2->all_headers = (char *) XP_ALLOC(hdrs->all_headers_fp); - if (!hdrs2->all_headers) - { - XP_FREE(hdrs2); - return 0; - } - XP_MEMCPY(hdrs2->all_headers, hdrs->all_headers, hdrs->all_headers_fp); - - hdrs2->all_headers_fp = hdrs->all_headers_fp; - hdrs2->all_headers_size = hdrs->all_headers_fp; - } - - hdrs2->done_p = hdrs->done_p; - - if (hdrs->heads) - { - int i; - hdrs2->heads = (char **) XP_ALLOC(hdrs->heads_size - * sizeof(*hdrs->heads)); - if (!hdrs2->heads) - { - FREEIF(hdrs2->all_headers); - XP_FREE(hdrs2); - return 0; - } - hdrs2->heads_size = hdrs->heads_size; - for (i = 0; i < hdrs->heads_size; i++) - { - hdrs2->heads[i] = (hdrs2->all_headers + - (hdrs->heads[i] - hdrs->all_headers)); - } - } - return hdrs2; -} - -/* Discard the buffer, when we probably won't be needing it any more. */ -static void -MimeHeaders_compact (MimeHeaders *hdrs) -{ - XP_ASSERT(hdrs); - if (!hdrs) return; - - FREEIF(hdrs->obuffer); - hdrs->obuffer_fp = 0; - hdrs->obuffer_size = 0; - - /* These really shouldn't have gotten out of whack again. */ - XP_ASSERT((uint32)hdrs->all_headers_fp <= hdrs->all_headers_size && - (uint32)hdrs->all_headers_fp + 100 > hdrs->all_headers_size); -} - - -static int MimeHeaders_build_heads_list(MimeHeaders *hdrs); - -int -MimeHeaders_parse_line (const char *buffer, int32 size, MimeHeaders *hdrs) -{ - int status = 0; - int desired_size; - - XP_ASSERT(hdrs); - if (!hdrs) return -1; - - /* Don't try and feed me more data after having fed me a blank line... */ - XP_ASSERT(!hdrs->done_p); - if (hdrs->done_p) return -1; - - if (!buffer || size == 0 || *buffer == CR || *buffer == LF) - { - /* If this is a blank line, we're done. - */ - hdrs->done_p = TRUE; - return MimeHeaders_build_heads_list(hdrs); - } - - /* Tack this data on to the end of our copy. - */ - desired_size = hdrs->all_headers_fp + size + 1; - if ((uint32)desired_size >= hdrs->all_headers_size) - { - status = XP_GrowBuffer (desired_size, sizeof(char), 255, - &hdrs->all_headers, &hdrs->all_headers_size); - if (status < 0) return status; - } - XP_MEMCPY(hdrs->all_headers+hdrs->all_headers_fp, buffer, size); - hdrs->all_headers_fp += size; - - return 0; -} - -static int -MimeHeaders_build_heads_list(MimeHeaders *hdrs) -{ - char *s; - char *end; - int i; - XP_ASSERT(hdrs); - if (!hdrs) return -1; - - XP_ASSERT(hdrs->done_p && !hdrs->heads); - if (!hdrs->done_p || hdrs->heads) - return -1; - - if (hdrs->all_headers_fp == 0) - { - /* Must not have been any headers (we got the blank line right away.) */ - FREEIF (hdrs->all_headers); - hdrs->all_headers_size = 0; - return 0; - } - - /* At this point, we might as well realloc all_headers back down to the - minimum size it must be (it could be up to 1k bigger.) But don't - bother if we're only off by a tiny bit. */ - XP_ASSERT((uint32)hdrs->all_headers_fp <= hdrs->all_headers_size); - if ((uint32)(hdrs->all_headers_fp + 60) <= hdrs->all_headers_size) - { - char *s = XP_REALLOC(hdrs->all_headers, hdrs->all_headers_fp); - if (s) /* can this ever fail? we're making it smaller... */ - { - hdrs->all_headers = s; /* in case it got relocated */ - hdrs->all_headers_size = hdrs->all_headers_fp; - } - } - - - /* First go through and count up the number of headers in the block. - */ - end = hdrs->all_headers + hdrs->all_headers_fp; - for (s = hdrs->all_headers; s <= end-1; s++) - { - if (s <= (end-1) && s[0] == CR && s[1] == LF) /* CRLF -> LF */ - s++; - - if ((s[0] == CR || s[0] == LF) && /* we're at a newline, and */ - (s >= (end-1) || /* we're at EOF, or */ - !(s[1] == ' ' || s[1] == '\t'))) /* next char is nonwhite */ - hdrs->heads_size++; - } - - /* Now allocate storage for the pointers to each of those headers. - */ - hdrs->heads = (char **) XP_ALLOC((hdrs->heads_size + 1) * sizeof(char *)); - if (!hdrs->heads) - return MK_OUT_OF_MEMORY; - XP_MEMSET(hdrs->heads, 0, (hdrs->heads_size + 1) * sizeof(char *)); - - - /* Now make another pass through the headers, and this time, record the - starting position of each header. - */ - - i = 0; - hdrs->heads[i++] = hdrs->all_headers; - s = hdrs->all_headers; - - while (s <= end) - { - SEARCH_NEWLINE: - while (s <= end-1 && *s != CR && *s != LF) - s++; - - if (s+1 >= end) - break; - - /* If "\r\n " or "\r\n\t" is next, that doesn't terminate the header. */ - else if (s+2 < end && - (s[0] == CR && s[1] == LF) && - (s[2] == ' ' || s[2] == '\t')) - { - s += 3; - goto SEARCH_NEWLINE; - } - /* If "\r " or "\r\t" or "\n " or "\n\t" is next, that doesn't terminate - the header either. */ - else if ((s[0] == CR || s[0] == LF) && - (s[1] == ' ' || s[1] == '\t')) - { - s += 2; - goto SEARCH_NEWLINE; - } - - /* At this point, `s' points before a header-terminating newline. - Move past that newline, and store that new position in `heads'. - */ - if (*s == CR) s++; - if (*s == LF) s++; - - if (s < end) - { - XP_ASSERT(! (i > hdrs->heads_size)); - if (i > hdrs->heads_size) return -1; - hdrs->heads[i++] = s; - } - } - - return 0; -} - - -char * -MimeHeaders_get (MimeHeaders *hdrs, const char *header_name, - XP_Bool strip_p, XP_Bool all_p) -{ - int i; - int name_length; - char *result = 0; - - XP_ASSERT(hdrs); - if (!hdrs) return 0; - XP_ASSERT(header_name); - if (!header_name) return 0; - - /* Specifying strip_p and all_p at the same time doesn't make sense... */ - XP_ASSERT(!(strip_p && all_p)); - - /* One shouldn't be trying to read headers when one hasn't finished - parsing them yet... but this can happen if the message ended - prematurely, and has no body at all (as opposed to a null body, - which is more normal.) So, if we try to read from the headers, - let's assume that the headers are now finished. If they aren't - in fact finished, then a later attempt to write to them will assert. - */ - if (!hdrs->done_p) - { - int status; - hdrs->done_p = TRUE; - status = MimeHeaders_build_heads_list(hdrs); - if (status < 0) return 0; - } - - if (!hdrs->heads) /* Must not have been any headers. */ - { - XP_ASSERT(hdrs->all_headers_fp == 0); - return 0; - } - - name_length = XP_STRLEN(header_name); - - for (i = 0; i < hdrs->heads_size; i++) - { - char *head = hdrs->heads[i]; - char *end = (i == hdrs->heads_size-1 - ? hdrs->all_headers + hdrs->all_headers_fp - : hdrs->heads[i+1]); - char *colon, *ocolon; - - XP_ASSERT(head); - if (!head) continue; - - /* Quick hack to skip over BSD Mailbox delimiter. */ - if (i == 0 && head[0] == 'F' && !XP_STRNCMP(head, "From ", 5)) - continue; - - /* Find the colon. */ - for (colon = head; colon < end; colon++) - if (*colon == ':') break; - - if (colon >= end) continue; - - /* Back up over whitespace before the colon. */ - ocolon = colon; - for (; colon > head && XP_IS_SPACE(colon[-1]); colon--) - ; - - /* If the strings aren't the same length, it doesn't match. */ - if (name_length != colon - head ) - continue; - - /* If the strings differ, it doesn't match. */ - if (strncasecomp(header_name, head, name_length)) - continue; - - /* Otherwise, we've got a match. */ - { - char *contents = ocolon + 1; - char *s; - - /* Skip over whitespace after colon. */ - while (contents <= end && XP_IS_SPACE(*contents)) - contents++; - - /* If we're supposed to strip at the frist token, pull `end' back to - the first whitespace or ';' after the first token. - */ - if (strip_p) - { - for (s = contents; - s <= end && *s != ';' && *s != ',' && !XP_IS_SPACE(*s); - s++) - ; - end = s; - } - - /* Now allocate some storage. - If `result' already has a value, enlarge it. - Otherwise, just allocate a block. - `s' gets set to the place where the new data goes. - */ - if (!result) - { - result = (char *) XP_ALLOC(end - contents + 1); - if (!result) - return 0; - s = result; - } - else - { - int32 L = XP_STRLEN(result); - s = (char *) XP_REALLOC(result, (L + (end - contents + 10))); - if (!s) - { - XP_FREE(result); - return 0; - } - result = s; - s = result + L; - - /* Since we are tacking more data onto the end of the header - field, we must make it be a well-formed continuation line, - by seperating the old and new data with CR-LF-TAB. - */ - *s++ = ','; /* #### only do this for addr headers? */ - *s++ = LINEBREAK[0]; -# if (LINEBREAK_LEN == 2) - *s++ = LINEBREAK[1]; -# endif - *s++ = '\t'; - } - - /* Take off trailing whitespace... */ - while (end > contents && XP_IS_SPACE(end[-1])) - end--; - - /* Now copy the header's contents in... - */ - XP_MEMCPY(s, contents, end - contents); - s[end - contents] = 0; - - /* If we only wanted the first occurence of this header, we're done. */ - if (!all_p) break; - } - } - - if (result && !*result) /* empty string */ - { - XP_FREE(result); - return 0; - } - - return result; -} - -char * -MimeHeaders_get_parameter (const char *header_value, const char *parm_name, - char **charset, char **language) -{ - const char *str; - char *s = NULL; /* parm value to be returned */ - int32 parm_len; - if (!header_value || !parm_name || !*header_value || !*parm_name) - return 0; - - /* The format of these header lines is - <token> [ ';' <token> '=' <token-or-quoted-string> ]* - */ - - if (charset) *charset = NULL; - if (language) *language = NULL; - - str = header_value; - parm_len = XP_STRLEN(parm_name); - - /* Skip forward to first ';' */ - for (; *str && *str != ';' && *str != ','; str++) - ; - if (*str) - str++; - /* Skip over following whitespace */ - for (; *str && XP_IS_SPACE(*str); str++) - ; - if (!*str) - return 0; - - while (*str) - { - const char *token_start = str; - const char *token_end = 0; - const char *value_start = str; - const char *value_end = 0; - - XP_ASSERT(!XP_IS_SPACE(*str)); /* should be after whitespace already */ - - /* Skip forward to the end of this token. */ - for (; *str && !XP_IS_SPACE(*str) && *str != '=' && *str != ';'; str++) - ; - token_end = str; - - /* Skip over whitespace, '=', and whitespace */ - while (XP_IS_SPACE (*str)) str++; - if (*str == '=') str++; - while (XP_IS_SPACE (*str)) str++; - - if (*str != '"') - { - /* The value is a token, not a quoted string. */ - value_start = str; - for (value_end = str; - *value_end && !XP_IS_SPACE (*value_end) && *value_end != ';'; - value_end++) - ; - str = value_end; - } - else - { - /* The value is a quoted string. */ - str++; - value_start = str; - for (value_end = str; *value_end; value_end++) - { - if (*value_end == '\\') - value_end++; - else if (*value_end == '"') - break; - } - str = value_end+1; - } - - /* See if this is the parameter we're looking for. - If so, copy it and return. - */ - if (token_end - token_start == parm_len && - !strncasecomp(token_start, parm_name, parm_len)) - { - s = (char *) XP_ALLOC ((value_end - value_start) + 1); - if (! s) return 0; /* MK_OUT_OF_MEMORY */ - XP_MEMCPY (s, value_start, value_end - value_start); - s [value_end - value_start] = 0; - /* if the parameter spans across multiple lines we have to strip out the - line continuation -- jht 4/29/98 */ - strip_continuations(s); - return s; - } - else if (token_end - token_start > parm_len && - !strncasecomp(token_start, parm_name, parm_len) && - *(token_start+parm_len) == '*') - { - /* RFC2231 - The legitimate parm format can be: - title*=us-ascii'en-us'This%20is%20weired. - or - title*0*=us-ascii'en'This%20is%20weired.%20We - title*1*=have%20to%20support%20this. - title*3="Else..." - or - title*0="Hey, what you think you are doing?" - title*1="There is no charset and language info." - */ - const char *cp = token_start+parm_len+1; /* 1st char pass '*' */ - XP_Bool needUnescape = *(token_end-1) == '*'; - if ((*cp == '0' && needUnescape) || (token_end-token_start == parm_len+1)) - { - const char *s_quote1 = XP_STRCHR(value_start, 0x27); - const char *s_quote2 = s_quote1 ? XP_STRCHR(s_quote1+1, 0x27) : NULL; - XP_ASSERT(s_quote1 && s_quote2); - if (charset && s_quote1 > value_start && s_quote1 < value_end) - { - *charset = (char *) XP_ALLOC(s_quote1-value_start+1); - if (*charset) - { - XP_MEMCPY(*charset, value_start, s_quote1-value_start); - *(*charset+(s_quote1-value_start)) = 0; - } - } - if (language && s_quote1 && s_quote2 && s_quote2 > s_quote1+1 && - s_quote2 < value_end) - { - *language = (char *) XP_ALLOC(s_quote2-(s_quote1+1)+1); - if (*language) - { - XP_MEMCPY(*language, s_quote1+1, s_quote2-(s_quote1+1)); - *(*language+(s_quote2-(s_quote1+1))) = 0; - } - } - if (s_quote2 && s_quote2+1 < value_end) - { - XP_ASSERT(!s); - s = (char *) XP_ALLOC(value_end-(s_quote2+1)+1); - if (s) - { - XP_MEMCPY(s, s_quote2+1, value_end-(s_quote2+1)); - *(s+(value_end-(s_quote2+1))) = 0; - if (needUnescape) - { - NET_UnEscape(s); - if (token_end-token_start == parm_len+1) - return s; /* we done; this is the simple case of - encoding charset and language info - */ - } - } - } - } - else if (XP_IS_DIGIT(*cp)) - { - int32 len = 0; - char *ns = NULL; - if (s) - { - len = XP_STRLEN(s); - ns = (char *) XP_REALLOC(s, len+(value_end-value_start)+1); - if (!ns) - FREEIF(s); - else if (ns != s) - s = ns; - } - else if (*cp == '0') /* must be; otherwise something is wrong */ - { - s = (char *) XP_ALLOC(value_end-value_start+1); - } - /* else {} something is really wrong; out of memory */ - if (s) - { - XP_MEMCPY(s+len, value_start, value_end-value_start); - *(s+len+(value_end-value_start)) = 0; - if (needUnescape) - NET_UnEscape(s+len); - } - } - } - - /* str now points after the end of the value. - skip over whitespace, ';', whitespace. */ - while (XP_IS_SPACE (*str)) str++; - if (*str == ';') str++; - while (XP_IS_SPACE (*str)) str++; - } - return s; -} - - -/* Emitting HTML - */ - -#define MIME_HEADER_TABLE "<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>" -#define HEADER_START_JUNK "<TR><TH VALIGN=BASELINE ALIGN=RIGHT NOWRAP>" -#define HEADER_MIDDLE_JUNK ": </TH><TD>" -#define HEADER_END_JUNK "</TD></TR>" - - -#define MimeHeaders_write(OPT,DATA,LENGTH) \ - MimeOptions_write((OPT), (DATA), (LENGTH), TRUE); - - -static char * -MimeHeaders_default_news_link_generator (const char *dest, void *closure, - MimeHeaders *headers) -{ - /* This works as both the generate_news_url_fn and as the - generate_reference_url_fn. */ - char *prefix = "news:"; - char *new_dest = NET_Escape (dest, URL_XALPHAS); - char *result = (char *) XP_ALLOC (XP_STRLEN (new_dest) + - XP_STRLEN (prefix) + 1); - if (result) - { - XP_STRCPY (result, prefix); - XP_STRCAT (result, new_dest); - } - FREEIF (new_dest); - return result; -} - - -#ifdef MOZILLA_30 -static char * -MimeHeaders_default_mailto_link_generator (const char *dest, void *closure, - MimeHeaders *headers) -{ - /* For now, don't emit mailto links over email addresses. */ - return 0; -} - -#else /* !MOZILLA_30 */ - -static char *mime_escape_quotes (char *src) -{ - /* Make sure quotes are escaped with a backslash */ - char *dst = XP_ALLOC((2 * XP_STRLEN(src)) + 1); - if (dst) - { - char *walkDst = dst; - while (*src) - { - /* here's a big hack. double quotes, even if escaped, produce JS errors, - * so we'll just whack a double quote into a single quote. This string - * is just eye candy anyway. - */ - if (*src == '\"') - *src = '\''; - - if (*src == '\'') /* is it a quote? */ - if (walkDst == dst || *(src-1) != '\\') /* is it escaped? */ - *walkDst++ = '\\'; - - *walkDst++ = *src++; - } - *walkDst = '\0'; - } - return dst; -} - -static char * -MimeHeaders_default_addbook_link_generator (const char *dest, void *closure, - MimeHeaders *headers) -{ - char* names; - char* addresses; - char* name = NULL; - char* addr = NULL; - char* unquotedName; - char* unquotedAddr; - char* result = NULL; - char* tmp; - char* tmp2; - char* mouseOverText = NULL; - int j; - int num = MSG_ParseRFC822Addresses(dest, &names, &addresses); - XP_ASSERT(num >= 1); - for (j=0 ; j<num ; j++) { - if (addr) { - addr = addr + XP_STRLEN(addr) + 1; - name = name + XP_STRLEN(name) + 1; - } else { - addr = addresses; - name = names; - } - if (!addr || !*addr) continue; - - unquotedName = NULL; - unquotedAddr = NULL; - MSG_UnquotePhraseOrAddr (addr, &unquotedAddr); - if (!unquotedAddr) - continue; - if (name) - MSG_UnquotePhraseOrAddr (name, &unquotedName); - - tmp = PR_smprintf("begin:vcard\nfn:%s\nemail;internet:%s\nend:vcard\n", - (unquotedName && *unquotedName) ? unquotedName : unquotedAddr, - unquotedAddr); - - /* Since the addbook: URL is a little gross to look at, try to use Javascript's - * mouseOver event to plug some more human readable text into the status bar. - * If the user doesn't have JS enabled, they just get the gross URL. - */ - if (closure && !mouseOverText) - { - /* Make sure we don't feed any unescaped single or double quotes to the - * Javascript interpreter, since that will cause the string termination - * to be wrong, and things go downhill fast from there - */ - char *jsSafeName = mime_escape_quotes ((unquotedName && *unquotedName) ? unquotedName : unquotedAddr); - if (jsSafeName) - { - char *localizedPart = PR_smprintf (XP_GetString (MK_MSG_ADDBOOK_MOUSEOVER_TEXT), jsSafeName); - if (localizedPart) - { - mouseOverText = PR_smprintf ("onMouseOver=\"window.status='%s'; return true\" onMouseOut=\"window.status=''\"", localizedPart); - XP_FREE(localizedPart); - *((char**)closure) = mouseOverText; - } - XP_FREE(jsSafeName); - } - } - - FREEIF(unquotedAddr); - FREEIF(unquotedName); - - if (!tmp) break; - tmp2 = NET_Escape(tmp, URL_XALPHAS); - XP_FREE(tmp); - if (!tmp2) break; - result = PR_smprintf("addbook:add?vcard=%s", tmp2); - XP_FREE(tmp2); - break; - } - FREEIF(names); - FREEIF(addresses); - return result; -} - -#endif /* !MOZILLA_30 */ - - -#define MimeHeaders_grow_obuffer(hdrs, desired_size) \ - ((((long) (desired_size)) >= ((long) (hdrs)->obuffer_size)) ? \ - XP_GrowBuffer ((desired_size), sizeof(char), 255, \ - &(hdrs)->obuffer, &(hdrs)->obuffer_size) \ - : 0) - - -static int -MimeHeaders_convert_rfc1522(MimeDisplayOptions *opt, - const char *input, int32 input_length, - char **output_ret, int32 *output_length_ret) -{ - *output_ret = 0; - *output_length_ret = 0; - if (input && *input && opt && opt->rfc1522_conversion_fn) - { - char *converted = 0; - int32 converted_len = 0; - const char *output_charset = (opt->override_charset - ? opt->override_charset - : opt->default_charset); - int status = - opt->rfc1522_conversion_fn(input, input_length, - 0, output_charset, /* no input charset? */ - &converted, &converted_len, - opt->stream_closure); - if (status < 0) - { - FREEIF(converted); - return status; - } - - if (converted) - { - *output_ret = converted; - *output_length_ret = converted_len; - } - } - return 0; -} - - - -static const char * -MimeHeaders_localize_header_name(const char *name, MimeDisplayOptions *opt) -{ - const char *new_name = 0; - int16 output_csid = 0; - int display_key = - (!strcasecomp(name,HEADER_BCC) ? MK_MIMEHTML_DISP_BCC : - !strcasecomp(name,HEADER_CC) ? MK_MIMEHTML_DISP_CC : - !strcasecomp(name,HEADER_DATE) ? MK_MIMEHTML_DISP_DATE : - !strcasecomp(name,HEADER_FOLLOWUP_TO) ? MK_MIMEHTML_DISP_FOLLOWUP_TO : - !strcasecomp(name,HEADER_FROM) ? MK_MIMEHTML_DISP_FROM : - !strcasecomp(name,HEADER_MESSAGE_ID) ? MK_MIMEHTML_DISP_MESSAGE_ID : - !strcasecomp(name,HEADER_NEWSGROUPS) ? MK_MIMEHTML_DISP_NEWSGROUPS : - !strcasecomp(name,HEADER_ORGANIZATION) ? MK_MIMEHTML_DISP_ORGANIZATION : - !strcasecomp(name,HEADER_REFERENCES) ? MK_MIMEHTML_DISP_REFERENCES : - !strcasecomp(name,HEADER_REPLY_TO) ? MK_MIMEHTML_DISP_REPLY_TO : - !strcasecomp(name,HEADER_RESENT_CC) ? MK_MIMEHTML_DISP_RESENT_CC : - !strcasecomp(name,HEADER_RESENT_COMMENTS) - ? MK_MIMEHTML_DISP_RESENT_COMMENTS : - !strcasecomp(name,HEADER_RESENT_DATE) ? MK_MIMEHTML_DISP_RESENT_DATE : - !strcasecomp(name,HEADER_RESENT_FROM) ? MK_MIMEHTML_DISP_RESENT_FROM : - !strcasecomp(name,HEADER_RESENT_MESSAGE_ID) - ? MK_MIMEHTML_DISP_RESENT_MESSAGE_ID : - !strcasecomp(name,HEADER_RESENT_SENDER) ? MK_MIMEHTML_DISP_RESENT_SENDER : - !strcasecomp(name,HEADER_RESENT_TO) ? MK_MIMEHTML_DISP_RESENT_TO : - !strcasecomp(name,HEADER_SENDER) ? MK_MIMEHTML_DISP_SENDER : - !strcasecomp(name,HEADER_SUBJECT) ? MK_MIMEHTML_DISP_SUBJECT : - !strcasecomp(name,HEADER_TO) ? MK_MIMEHTML_DISP_TO : - !strcasecomp(name,HEADER_SUBJECT) ? MK_MIMEHTML_DISP_SUBJECT : - 0); - - if (!display_key) - return name; - -#ifndef MOZILLA_30 - output_csid = INTL_CharSetNameToID((opt->override_charset - ? opt->override_charset - : opt->default_charset)); - new_name = XP_GetStringForHTML(display_key, output_csid, (char*)name); -#endif /* !MOZILLA_30 */ - - if (new_name) - return new_name; - else - return name; -} - - -static int -MimeHeaders_write_random_header_1 (MimeHeaders *hdrs, - const char *name, const char *contents, - MimeDisplayOptions *opt, - XP_Bool subject_p) -{ - int status = 0; - int32 contents_length; - char *out; - char *converted = 0; - int32 converted_length = 0; - - XP_ASSERT(hdrs); - if (!hdrs) return -1; - - if (!contents && subject_p) - contents = ""; - else if (!contents) - return 0; - - name = MimeHeaders_localize_header_name(name, opt); - - contents_length = XP_STRLEN(contents); - status = MimeHeaders_convert_rfc1522(opt, contents, contents_length, - &converted, &converted_length); - if (status < 0) return status; - if (converted) - { - contents = converted; - contents_length = converted_length; - } - - status = MimeHeaders_grow_obuffer (hdrs, XP_STRLEN (name) + 100 + - (contents_length * 4)); - if (status < 0) - { - FREEIF(converted); - return status; - } - - out = hdrs->obuffer; - - if (subject_p && contents) - { - XP_ASSERT(hdrs->munged_subject == NULL); - hdrs->munged_subject = XP_STRDUP(contents); - } - - if (opt->fancy_headers_p) - { - XP_STRCPY (out, HEADER_START_JUNK); out += XP_STRLEN (out); - XP_STRCPY (out, name); out += XP_STRLEN (out); - XP_STRCPY (out, HEADER_MIDDLE_JUNK); out += XP_STRLEN (out); - if (subject_p) - { - XP_STRCPY (out, "<B>"); out += XP_STRLEN (out); - } - - /* Copy `contents' to `out', quoting HTML along the way. - Note: this function does no charset conversion; that has - already been done. - */ - status = NET_ScanForURLs ( -/*#ifndef MOZILLA_30*/ - NULL, -/*#endif / * !MOZILLA_30 */ - contents, contents_length, out, - hdrs->obuffer_size - (out - hdrs->obuffer) -10, - TRUE); - if (status < 0) return status; - out += XP_STRLEN(out); - XP_ASSERT(out < (hdrs->obuffer + hdrs->obuffer_size)); - - XP_STRCPY (out, HEADER_END_JUNK); out += XP_STRLEN (out); - } - else - { - /* The non-fancy version (no tables): for converting to plain text. */ - char *s = NET_EscapeHTML (contents); - if (s) - { - char *start, *end, *data_end; - XP_STRCPY (out, "<NOBR><B>"); out += XP_STRLEN (out); - XP_STRCPY (out, name); out += XP_STRLEN (out); - XP_STRCPY (out, ": </B>"); out += XP_STRLEN (out); - - data_end = s + XP_STRLEN (s); - start = s; - end = start; - while (end < data_end) - for (end = start; end < data_end; end++) - if (*end == CR || *end == LF) - { - XP_MEMCPY (out, start, end - start); out += (end - start); - XP_STRCPY (out, "<BR>&nbsp;&nbsp;&nbsp;&nbsp;"); - out += XP_STRLEN (out); - if (*end == CR && end < data_end && end[1] == LF) - end++; - start = end + 1; - } - if (start < end) - { - XP_MEMCPY (out, start, end - start); out += (end - start); - } - XP_STRCPY (out, "</NOBR><BR>"); out += XP_STRLEN (out); - XP_FREE (s); - } - } - *out = 0; - - status = MimeHeaders_write(opt, hdrs->obuffer, out - hdrs->obuffer); - FREEIF(converted); - if (status < 0) - return status; - else - return 1; -} - - -static int -MimeHeaders_write_random_header (MimeHeaders *hdrs, const char *name, - XP_Bool all_p, MimeDisplayOptions *opt) -{ - int status = 0; - char *contents = MimeHeaders_get (hdrs, name, FALSE, all_p); - if (!contents) return 0; - status = MimeHeaders_write_random_header_1(hdrs, name, contents, opt, FALSE); - XP_FREE(contents); - return status; -} - - -static int -MimeHeaders_write_subject_header_1 (MimeHeaders *hdrs, const char *name, - const char *contents, - MimeDisplayOptions *opt) -{ - return MimeHeaders_write_random_header_1(hdrs, name, contents, opt, TRUE); -} - -static int -MimeHeaders_write_subject_header (MimeHeaders *hdrs, const char *name, - MimeDisplayOptions *opt) -{ - int status = 0; - char *contents = MimeHeaders_get (hdrs, name, FALSE, FALSE); - status = MimeHeaders_write_subject_header_1 (hdrs, name, contents, opt); - FREEIF(contents); - return status; -} - - -static int -MimeHeaders_write_grouped_header_1 (MimeHeaders *hdrs, const char *name, - const char *contents, - MimeDisplayOptions *opt, - XP_Bool mail_header_p) -{ - int status = 0; - int32 contents_length; - char *converted = 0; - char *out; - const char* orig_name = name; - - if (!contents) - return 0; - - if (!opt->fancy_headers_p) - return MimeHeaders_write_random_header (hdrs, name, TRUE, opt); - - if (name) name = MimeHeaders_localize_header_name(name, opt); - - contents_length = XP_STRLEN(contents); - - if (mail_header_p) - { - int32 converted_length = 0; - status = MimeHeaders_convert_rfc1522(opt, contents, contents_length, - &converted, &converted_length); - if (status < 0) return status; - if (converted) - { - contents = converted; - contents_length = converted_length; - } - } - -#ifndef MOZILLA_30 - /* grow obuffer with potential XSENDER AUTH string */ - status = MimeHeaders_grow_obuffer (hdrs, (name ? XP_STRLEN (name) : 0) - + 100 + 2 * - XP_STRLEN(XP_GetString(MK_MSG_XSENDER_INTERNAL)) + - (contents_length * 4)); -#else - status = MimeHeaders_grow_obuffer (hdrs, (name ? XP_STRLEN (name) : 0) - + 100 + - (contents_length * 4)); -#endif - if (status < 0) goto FAIL; - - out = hdrs->obuffer; - if (name) { - XP_STRCPY (out, HEADER_START_JUNK); out += XP_STRLEN (out); - XP_STRCPY (out, name); out += XP_STRLEN (out); - XP_STRCPY (out, HEADER_MIDDLE_JUNK); out += XP_STRLEN (out); - } - - status = MimeHeaders_write(opt, hdrs->obuffer, out - hdrs->obuffer); - if (status < 0) goto FAIL; - - { - const char *data_end = contents + contents_length; - const char *last_end = 0; - const char *this_start = contents; - const char *this_end = this_start; - while (this_end < data_end) - { - int32 paren_depth = 0; - - /* Skip over whitespace and commas. */ - while (this_start < data_end && - (XP_IS_SPACE (*this_start) || *this_start == ',')) - this_start++; - - this_end = this_start; - - /* Skip to the end, or the next comma, taking quoted strings, - comments, and backslashes into account. */ - while (this_end < data_end && - !(*this_end == ',' && paren_depth <= 0)) - { - if (*this_end == '\\') - this_end++; - else if (*this_end == '"') - { - this_end++; - while (this_end < data_end && *this_end != '"') - { - if (*this_end == '\\') - this_end++; - this_end++; - } - } - - if (*this_end == '(') - paren_depth++; - else if (*this_end == ')' && paren_depth > 0) - paren_depth--; - - this_end++; - } - - /* Push out the preceeding comma, whitespace, etc. */ - if (last_end && last_end != this_start) - { - char *s; - XP_STRCPY (hdrs->obuffer, "</NOBR>"); - status = MimeHeaders_write(opt, hdrs->obuffer, - XP_STRLEN(hdrs->obuffer)); - if (status < 0) goto FAIL; - - XP_MEMCPY (hdrs->obuffer, last_end, this_start - last_end); - hdrs->obuffer [this_start - last_end] = 0; - s = NET_EscapeHTML (hdrs->obuffer); - if (!s) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - status = MimeHeaders_write(opt, s, XP_STRLEN (s)); - XP_FREE (s); - if (status < 0) goto FAIL; - - /* Emit a space, to make sure long newsgroup lines, or any - header line with no spaces after the commas, wrap. */ - hdrs->obuffer[0] = ' '; - hdrs->obuffer[1] = 0; - status = MimeHeaders_write(opt, hdrs->obuffer, - XP_STRLEN (hdrs->obuffer)); - if (status < 0) goto FAIL; - } - - /* Push out this address-or-newsgroup. */ - if (this_start != this_end) - { - char *s; - MimeHTMLGeneratorFunction fn = 0; - void *arg; - char *link, *link2; - XP_Bool mail_p; - char *extraAnchorText = NULL; - - XP_MEMCPY (hdrs->obuffer, this_start, this_end - this_start); - hdrs->obuffer [this_end - this_start] = 0; - s = NET_EscapeHTML (hdrs->obuffer); - if (!s) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - mail_p = (mail_header_p || !strcasecomp ("poster", hdrs->obuffer)); - - if (mail_p) - { - fn = opt->generate_mailto_url_fn; - arg = opt->html_closure; - } - else - { - fn = opt->generate_news_url_fn; - arg = opt->html_closure; - } - if (! fn) - { - if (mail_p) - { -#ifdef MOZILLA_30 - fn = MimeHeaders_default_mailto_link_generator; - arg = 0; -#else /* !MOZILLA_30 */ - fn = MimeHeaders_default_addbook_link_generator; - arg = &extraAnchorText; -#endif /* !MOZILLA_30 */ - } - else - { - fn = MimeHeaders_default_news_link_generator; - arg = 0; - } - } - - /* If this is the "From" header, or if this is a - "Followup-To: poster" entry, let the Reply-To address win. - */ - if (mail_header_p - ? (name && !strcasecomp(name, HEADER_FROM)) - : mail_p) - { - char *r = 0; - r = MimeHeaders_get (hdrs, HEADER_REPLY_TO, - FALSE, TRUE); - if (!r) r = MimeHeaders_get (hdrs, HEADER_FROM, FALSE, TRUE); - if (!r) r = MimeHeaders_get (hdrs, HEADER_SENDER, FALSE, TRUE); - - if (r) - { - XP_STRCPY (hdrs->obuffer, r); - XP_FREE(r); - } - else - *hdrs->obuffer = 0; - } - - if (*hdrs->obuffer && opt->fancy_links_p) - link = fn (hdrs->obuffer, arg, hdrs); - else - link = 0; - - link2 = (link ? NET_EscapeHTML (link) : 0); - FREEIF (link); - link = link2; - - if (link) - { - status = MimeHeaders_grow_obuffer (hdrs, XP_STRLEN (link) + - XP_STRLEN (s) + 100); - if (status < 0) goto FAIL; - } - out = hdrs->obuffer; - if (link) - { - XP_STRCPY (out, "<A HREF=\""); out += XP_STRLEN (out); - XP_STRCPY (out, link); out += XP_STRLEN (out); - XP_STRCPY (out, "\""); out += 1; - if (extraAnchorText) - { - XP_STRCPY (out, extraAnchorText); - out += XP_STRLEN(out); - } - XP_STRCPY (out, ">"); out += 1; - } - XP_STRCPY (out, "<NOBR>"); out += XP_STRLEN (out); - - XP_STRCPY (out, s); out += XP_STRLEN (out); - - XP_FREE (s); - if (link) - { - XP_STRCPY (out, "</A>"); out += XP_STRLEN (out); - XP_FREE (link); - } - if (extraAnchorText) - XP_FREE (extraAnchorText); -#ifndef MOZILLA_30 - /* Begin hack of out of envelope XSENDER info */ - if (orig_name && !strcasecomp(orig_name, HEADER_FROM)) { - char * statusLine = MimeHeaders_get (hdrs, HEADER_X_MOZILLA_STATUS, FALSE, FALSE); - uint16 flags =0; - - #define UNHEX(C) \ - ((C >= '0' && C <= '9') ? C - '0' : \ - ((C >= 'A' && C <= 'F') ? C - 'A' + 10 : \ - ((C >= 'a' && C <= 'f') ? C - 'a' + 10 : 0))) - - if (statusLine && XP_STRLEN(statusLine) == 4) { - int i; - char *cp = statusLine; - for (i=0; i < 4; i++, cp++) { - flags = (flags << 4) | UNHEX(*cp); - } - FREEIF(statusLine); - } - - if (flags & MSG_FLAG_SENDER_AUTHED) { - XP_STRCPY (out, XP_GetString(MK_MSG_XSENDER_INTERNAL)); - out += XP_STRLEN (out); - } - } - /* End of XSENDER info */ -#endif /* MOZILLA_30 */ - status = MimeHeaders_write(opt, hdrs->obuffer, - XP_STRLEN (hdrs->obuffer)); - if (status < 0) goto FAIL; - } - - /* now go around again */ - last_end = this_end; - this_start = last_end; - } - } - - out = hdrs->obuffer; - XP_STRCPY (out, "</NOBR>"); out += XP_STRLEN (out); - if (name) XP_STRCPY (out, HEADER_END_JUNK); out += XP_STRLEN (out); - *out = 0; - status = MimeHeaders_write(opt, hdrs->obuffer, out - hdrs->obuffer); - if (status < 0) goto FAIL; - else status = 1; - - FAIL: - FREEIF(converted); - return status; -} - -static int -MimeHeaders_write_grouped_header (MimeHeaders *hdrs, const char *name, - MimeDisplayOptions *opt, - XP_Bool mail_header_p) -{ - int status = 0; - char *contents = MimeHeaders_get (hdrs, name, FALSE, TRUE); - if (!contents) return 0; - status = MimeHeaders_write_grouped_header_1 (hdrs, name, contents, opt, - mail_header_p); - XP_FREE(contents); - return status; -} - -#define MimeHeaders_write_address_header(hdrs,name,opt) \ - MimeHeaders_write_grouped_header(hdrs,name,opt,TRUE) -#define MimeHeaders_write_news_header(hdrs,name,opt) \ - MimeHeaders_write_grouped_header(hdrs,name,opt,FALSE) - -#define MimeHeaders_write_address_header_1(hdrs,name,contents,opt) \ - MimeHeaders_write_grouped_header_1(hdrs,name,contents,opt,TRUE) -#define MimeHeaders_write_news_header_1(hdrs,name,contents,opt) \ - MimeHeaders_write_grouped_header_1(hdrs,name,contents,opt,FALSE) - - -static int -MimeHeaders_write_id_header_1 (MimeHeaders *hdrs, const char *name, - const char *contents, XP_Bool show_ids, - MimeDisplayOptions *opt) -{ - int status = 0; - int32 contents_length; - char *out; - - XP_ASSERT(hdrs); - if (!hdrs) return -1; - - if (!contents) - return 0; - - if (!opt->fancy_headers_p) - return MimeHeaders_write_random_header (hdrs, name, TRUE, opt); - - name = MimeHeaders_localize_header_name(name, opt); - - contents_length = XP_STRLEN(contents); - status = MimeHeaders_grow_obuffer (hdrs, XP_STRLEN (name) + 100 + - (contents_length * 4)); - if (status < 0) goto FAIL; - - out = hdrs->obuffer; - XP_STRCPY (out, HEADER_START_JUNK); out += XP_STRLEN (out); - XP_STRCPY (out, name); out += XP_STRLEN (out); - XP_STRCPY (out, HEADER_MIDDLE_JUNK); out += XP_STRLEN (out); - - status = MimeHeaders_write(opt, hdrs->obuffer, out - hdrs->obuffer); - if (status < 0) goto FAIL; - - { - const char *data_end = contents + contents_length; - const char *last_end = 0; - const char *this_start = contents; - const char *this_end = this_start; - int id_count = 0; - while (this_end < data_end) - { - /* Skip over whitespace. */ - while (this_start < data_end && XP_IS_SPACE (*this_start)) - this_start++; - - this_end = this_start; - - /* At this point *this_start should be '<', but if it's not, - there's not a lot we can do about it... */ - - /* Skip to the end of the message ID, taking quoted strings and - backslashes into account. */ - while (this_end < data_end && *this_end != '>') - { - if (*this_end == '\\') - this_end++; - else if (*this_end == '"') - while (this_end < data_end && *this_end != '"') - { - if (*this_end == '\\') - this_end++; - this_end++; - } - this_end++; - } - - if (*this_end == '>') /* If it's not, that's illegal. */ - this_end++; - - /* Push out the preceeding whitespace. */ - if (last_end && last_end != this_start) - { - char *s; - XP_MEMCPY (hdrs->obuffer, last_end, this_start - last_end); - hdrs->obuffer [this_start - last_end] = 0; - s = NET_EscapeHTML (hdrs->obuffer); - if (!s) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - status = MimeHeaders_write(opt, s, XP_STRLEN (s)); - XP_FREE (s); - if (status < 0) goto FAIL; - } - - /* Push out this ID. */ - if (this_start != this_end) - { - char *s; - MimeHTMLGeneratorFunction fn = 0; - void *arg; - char *link; - - fn = opt->generate_reference_url_fn; - arg = opt->html_closure; - if (! fn) - { - fn = MimeHeaders_default_news_link_generator; - arg = 0; - } - - { - char *link2 = NULL; - const char *id = this_start; - int32 size = this_end - this_start; - if (*id == '<') - id++, size--; - XP_MEMCPY (hdrs->obuffer, id, size); - hdrs->obuffer [size] = 0; - if (hdrs->obuffer [size-1] == '>') - hdrs->obuffer [size-1] = 0; - - link = fn (hdrs->obuffer, arg, hdrs); - if (link) - { - link2 = NET_EscapeHTML(link); - XP_FREE(link); - } - link = link2; - } - - if (show_ids) - { - XP_MEMCPY (hdrs->obuffer, this_start, this_end - this_start); - hdrs->obuffer [this_end - this_start] = 0; - s = NET_EscapeHTML (hdrs->obuffer); - if (!s) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - else - { - char buf[50]; - XP_SPRINTF(buf, "%d", ++id_count); - s = XP_STRDUP(buf); - if (!s) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - - if (link) - { - status = MimeHeaders_grow_obuffer (hdrs, XP_STRLEN (link) + - XP_STRLEN (s) + 100); - if (status < 0) goto FAIL; - } - out = hdrs->obuffer; - - if (!show_ids && id_count > 1) - { - XP_STRCPY (out, ", "); out += XP_STRLEN (out); - } - - if (link) - { - XP_STRCPY (out, "<A HREF=\""); out += XP_STRLEN (out); - XP_STRCPY (out, link); out += XP_STRLEN (out); - XP_STRCPY (out, "\">"); out += XP_STRLEN (out); - } - XP_STRCPY (out, s); out += XP_STRLEN (out); - XP_FREE (s); - if (link) - { - XP_STRCPY (out, "</A>"); out += XP_STRLEN (out); - XP_FREE (link); - } - status = MimeHeaders_write(opt, hdrs->obuffer, - XP_STRLEN (hdrs->obuffer)); - if (status < 0) goto FAIL; - } - - /* now go around again */ - last_end = this_end; - this_start = last_end; - } - } - - out = hdrs->obuffer; - XP_STRCPY (out, HEADER_END_JUNK); out += XP_STRLEN (out); - *out = 0; - status = MimeHeaders_write(opt, hdrs->obuffer, out - hdrs->obuffer); - if (status < 0) goto FAIL; - else status = 1; - - FAIL: - return status; -} - -static int -MimeHeaders_write_id_header (MimeHeaders *hdrs, const char *name, - XP_Bool show_ids, MimeDisplayOptions *opt) -{ - int status = 0; - char *contents = NULL; - - XP_ASSERT(hdrs); - if (!hdrs) return -1; - - contents = MimeHeaders_get (hdrs, name, FALSE, TRUE); - if (!contents) return 0; - status = MimeHeaders_write_id_header_1 (hdrs, name, contents, show_ids, opt); - XP_FREE(contents); - return status; -} - - - -static int MimeHeaders_write_all_headers (MimeHeaders *, MimeDisplayOptions *); -static int MimeHeaders_write_microscopic_headers (MimeHeaders *, - MimeDisplayOptions *); -static int MimeHeaders_write_citation_headers (MimeHeaders *, - MimeDisplayOptions *); - - -/* This list specifies the headers shown in the "normal" headers display mode, - and also specifies the preferred ordering. Headers which do not occur are - not shown (except Subject) and certain header-pairs have some special - behavior (see comments.) - - #### We should come up with some secret way to set this from a user - preference, perhaps from a special file in the ~/.netscape/ directory. - */ -static const char *mime_interesting_headers[] = { - HEADER_SUBJECT, - HEADER_RESENT_COMMENTS, - HEADER_RESENT_DATE, - HEADER_RESENT_SENDER, /* not shown if HEADER_RESENT_FROM is present */ - HEADER_RESENT_FROM, - HEADER_RESENT_TO, - HEADER_RESENT_CC, - HEADER_DATE, - HEADER_SENDER, /* not shown if HEADER_FROM is present */ - HEADER_FROM, - HEADER_REPLY_TO, /* not shown if HEADER_FROM has the same addr. */ - HEADER_ORGANIZATION, - HEADER_TO, - HEADER_CC, - HEADER_BCC, - HEADER_NEWSGROUPS, - HEADER_FOLLOWUP_TO, - HEADER_REFERENCES, /* not shown in MimeHeadersSomeNoRef mode. */ - -#ifdef DEBUG_jwz - HEADER_X_MAILER, /* jwz finds these useful for debugging... */ - HEADER_X_NEWSREADER, - HEADER_X_POSTING_SOFTWARE, -#endif - 0 -}; - - -static int -MimeHeaders_write_interesting_headers (MimeHeaders *hdrs, - MimeDisplayOptions *opt) -{ - XP_Bool wrote_any_p = FALSE; - int status = 0; - const char **rest; - XP_Bool did_from = FALSE; - XP_Bool did_resent_from = FALSE; - - XP_ASSERT(hdrs); - if (!hdrs) return -1; - - status = MimeHeaders_grow_obuffer (hdrs, 200); - if (status < 0) return status; - - for (rest = mime_interesting_headers; *rest; rest++) - { - const char *name = *rest; - - /* The Subject header gets written in bold. - */ - if (!strcasecomp(name, HEADER_SUBJECT)) - { - status = MimeHeaders_write_subject_header (hdrs, name, opt); - } - - /* The References header is never interesting if we're emitting paper, - since you can't click on it. - */ - else if (!strcasecomp(name, HEADER_REFERENCES)) - { - if (opt->headers != MimeHeadersSomeNoRef) - status = MimeHeaders_write_id_header (hdrs, name, FALSE, opt); - } - - /* Random other Message-ID headers. These aren't shown by default, but - if the user adds them to the list, display them clickably. - */ - else if (!strcasecomp(name, HEADER_MESSAGE_ID) || - !strcasecomp(name, HEADER_RESENT_MESSAGE_ID)) - { - status = MimeHeaders_write_id_header (hdrs, name, TRUE, opt); - } - - /* The From header supercedes the Sender header. - */ - else if (!strcasecomp(name, HEADER_SENDER) || - !strcasecomp(name, HEADER_FROM)) - { - if (did_from) continue; - did_from = TRUE; - status = MimeHeaders_write_address_header (hdrs, HEADER_FROM, opt); - if (status == 0) - status = MimeHeaders_write_address_header (hdrs, HEADER_SENDER, - opt); - } - - /* Likewise, the Resent-From header supercedes the Resent-Sender header. - */ - else if (!strcasecomp(name, HEADER_RESENT_SENDER) || - !strcasecomp(name, HEADER_RESENT_FROM)) - { - if (did_resent_from) continue; - did_resent_from = TRUE; - status = MimeHeaders_write_address_header (hdrs, HEADER_RESENT_FROM, - opt); - if (status == 0) - status = MimeHeaders_write_address_header (hdrs, - HEADER_RESENT_SENDER, - opt); - } - - /* Emit the Reply-To header only if it differs from the From header. - (we just compare the `address' part.) - */ - else if (!strcasecomp(name, HEADER_REPLY_TO)) - { - char *reply_to = MimeHeaders_get (hdrs, HEADER_REPLY_TO, - FALSE, FALSE); - if (reply_to) - { - char *from = MimeHeaders_get (hdrs, HEADER_FROM, FALSE, FALSE); -/* XXX need prototypes for MSG_* in some header? */ - char *froma = (char *)(from - ? MSG_ExtractRFC822AddressMailboxes(from) - : 0); - char *repa = (char *)((reply_to && froma) - ? MSG_ExtractRFC822AddressMailboxes(reply_to) - : 0); - - FREEIF(reply_to); - if (!froma || !repa || strcasecomp (froma, repa)) - { - FREEIF(froma); - FREEIF(repa); - status = MimeHeaders_write_address_header (hdrs, - HEADER_REPLY_TO, - opt); - } - FREEIF(repa); - FREEIF(froma); - FREEIF(from); - } - FREEIF(reply_to); - } - - /* Random other address headers. - These headers combine all occurences: that is, if there is more than - one CC field, all of them will be combined and presented as one. - */ - else if (!strcasecomp(name, HEADER_RESENT_TO) || - !strcasecomp(name, HEADER_RESENT_CC) || - !strcasecomp(name, HEADER_TO) || - !strcasecomp(name, HEADER_CC) || - !strcasecomp(name, HEADER_BCC)) - { - status = MimeHeaders_write_address_header (hdrs, name, opt); - } - - /* Random other newsgroup headers. - These headers combine all occurences, as with address headers. - */ - else if (!strcasecomp(name, HEADER_NEWSGROUPS) || - !strcasecomp(name, HEADER_FOLLOWUP_TO)) - { - status = MimeHeaders_write_news_header (hdrs, name, opt); - } - - /* Everything else. - These headers don't combine: only the first instance of the header - will be shown, if there is more than one. - */ - else - { - status = MimeHeaders_write_random_header (hdrs, name, FALSE, opt); - } - - if (status < 0) break; - wrote_any_p |= (status > 0); - } - - return (status < 0 ? status : (wrote_any_p ? 1 : 0)); -} - - -static int -MimeHeaders_write_all_headers (MimeHeaders *hdrs, MimeDisplayOptions *opt) -{ - int status; - int i; - XP_Bool wrote_any_p = FALSE; - - XP_ASSERT(hdrs); - if (!hdrs) return -1; - - /* One shouldn't be trying to read headers when one hasn't finished - parsing them yet... but this can happen if the message ended - prematurely, and has no body at all (as opposed to a null body, - which is more normal.) So, if we try to read from the headers, - let's assume that the headers are now finished. If they aren't - in fact finished, then a later attempt to write to them will assert. - */ - if (!hdrs->done_p) - { - hdrs->done_p = TRUE; - status = MimeHeaders_build_heads_list(hdrs); - if (status < 0) return 0; - } - - for (i = 0; i < hdrs->heads_size; i++) - { - char *head = hdrs->heads[i]; - char *end = (i == hdrs->heads_size-1 - ? hdrs->all_headers + hdrs->all_headers_fp - : hdrs->heads[i+1]); - char *colon, *ocolon; - char *contents; - char *name = 0; - char *c2 = 0; - - /* Hack for BSD Mailbox delimiter. */ - if (i == 0 && head[0] == 'F' && !XP_STRNCMP(head, "From ", 5)) - { - colon = head + 4; - contents = colon + 1; - } - else - { - /* Find the colon. */ - for (colon = head; colon < end; colon++) - if (*colon == ':') break; - - if (colon >= end) continue; /* junk */ - - /* Back up over whitespace before the colon. */ - ocolon = colon; - for (; colon > head && XP_IS_SPACE(colon[-1]); colon--) - ; - - contents = ocolon + 1; - } - - /* Skip over whitespace after colon. */ - while (contents <= end && XP_IS_SPACE(*contents)) - contents++; - - /* Take off trailing whitespace... */ - while (end > contents && XP_IS_SPACE(end[-1])) - end--; - - name = XP_ALLOC(colon - head + 1); - if (!name) return MK_OUT_OF_MEMORY; - XP_MEMCPY(name, head, colon - head); - name[colon - head] = 0; - - c2 = XP_ALLOC(end - contents + 1); - if (!c2) - { - XP_FREE(name); - return MK_OUT_OF_MEMORY; - } - XP_MEMCPY(c2, contents, end - contents); - c2[end - contents] = 0; - - if (!strcasecomp(name, HEADER_CC) || - !strcasecomp(name, HEADER_FROM) || - !strcasecomp(name, HEADER_REPLY_TO) || - !strcasecomp(name, HEADER_RESENT_CC) || - !strcasecomp(name, HEADER_RESENT_FROM) || - !strcasecomp(name, HEADER_RESENT_SENDER) || - !strcasecomp(name, HEADER_RESENT_TO) || - !strcasecomp(name, HEADER_SENDER) || - !strcasecomp(name, HEADER_TO)) - status = MimeHeaders_write_address_header_1(hdrs, name, c2, opt); - else if (!strcasecomp(name, HEADER_FOLLOWUP_TO) || - !strcasecomp(name, HEADER_NEWSGROUPS)) - status = MimeHeaders_write_news_header_1(hdrs, name, c2, opt); - else if (!strcasecomp(name, HEADER_MESSAGE_ID) || - !strcasecomp(name, HEADER_RESENT_MESSAGE_ID) || - !strcasecomp(name, HEADER_REFERENCES)) - status = MimeHeaders_write_id_header_1(hdrs, name, c2, TRUE, opt); - else if (!strcasecomp(name, HEADER_SUBJECT)) - status = MimeHeaders_write_subject_header_1(hdrs, name, c2, opt); - - else - status = MimeHeaders_write_random_header_1(hdrs, name, c2, opt, FALSE); - XP_FREE(name); - XP_FREE(c2); - - if (status < 0) return status; - if (!wrote_any_p) wrote_any_p = (status > 0); - } - - return (wrote_any_p ? 1 : 0); -} - - -#ifndef MOZILLA_30 -# define EGREGIOUS_HEADERS -#endif - -static int -MimeHeaders_write_microscopic_headers (MimeHeaders *hdrs, - MimeDisplayOptions *opt) -{ - int status = 1; - char *subj = MimeHeaders_get (hdrs, HEADER_SUBJECT, FALSE, FALSE); - char *from = MimeHeaders_get (hdrs, HEADER_FROM, FALSE, TRUE); - char *date = MimeHeaders_get (hdrs, HEADER_DATE, FALSE, TRUE); - char *out; - - if (!from) - from = MimeHeaders_get (hdrs, HEADER_SENDER, FALSE, TRUE); - if (!date) - date = MimeHeaders_get (hdrs, HEADER_RESENT_DATE, FALSE, TRUE); - - if (date && opt->reformat_date_fn) - { - char *d2 = opt->reformat_date_fn(date, opt->stream_closure); - if (d2) - { - XP_FREE(date); - date = d2; - } - } - - - /* Convert MIME-2 data. - */ -#define FROB(VAR) do { \ - if (VAR) \ - { \ - char *converted = 0; \ - int32 converted_length = 0; \ - status = MimeHeaders_convert_rfc1522(opt, VAR, XP_STRLEN(VAR), \ - &converted, &converted_length); \ - if (status < 0) goto FAIL; \ - if (converted) \ - { \ - XP_ASSERT(converted_length == (int32) XP_STRLEN(converted)); \ - VAR = converted; \ - } \ - } } while(0) - FROB(from); - FROB(subj); - FROB(date); -#undef FROB - -#ifndef EGREGIOUS_HEADERS -# define THLHMAAMS 0 -#else -# define THLHMAAMS 900 -#endif - - status = MimeHeaders_grow_obuffer (hdrs, - (subj ? XP_STRLEN(subj)*2 : 0) + - (from ? XP_STRLEN(from) : 0) + - (date ? XP_STRLEN(date) : 0) + - 100 - + THLHMAAMS - ); - if (status < 0) goto FAIL; - - if (subj) { - XP_ASSERT(!hdrs->munged_subject); - hdrs->munged_subject = XP_STRDUP(subj); - } - - out = hdrs->obuffer; - -#ifndef EGREGIOUS_HEADERS - XP_STRCPY(out, "<B>"); - out += XP_STRLEN(out); - /* Quotify the subject... */ - if (subj) - status = NET_ScanForURLs ( -/*# ifndef MOZILLA_30*/ - NULL, -/*# endif / * !MOZILLA_30 */ - subj, XP_STRLEN(subj), out, - hdrs->obuffer_size - (out - hdrs->obuffer) - 10, - TRUE); - if (status < 0) goto FAIL; - - out += XP_STRLEN(out); - XP_STRCPY(out, "</B> ("); - out += XP_STRLEN(out); - - /* Quotify the sender... */ - if (from) - status = NET_ScanForURLs ( -/*# ifndef MOZILLA_30*/ - NULL, -/*# endif / * !MOZILLA_30 */ - from, XP_STRLEN(from), out, - hdrs->obuffer_size - (out - hdrs->obuffer) - 10, - TRUE); - if (status < 0) goto FAIL; - - out += XP_STRLEN(out); - XP_STRCPY(out, ", <NOBR>"); - out += XP_STRLEN(out); - - /* Quotify the date (just in case...) */ - if (date) - status = NET_ScanForURLs ( -/*# ifndef MOZILLA_30*/ - NULL, -/*# endif / * !MOZILLA_30 */ - date, XP_STRLEN(date), out, - hdrs->obuffer_size - (out - hdrs->obuffer) - 10, - TRUE); - if (status < 0) goto FAIL; - - out += XP_STRLEN(out); - XP_STRCPY(out, ")</NOBR><BR>"); - out += XP_STRLEN(out); - - status = MimeHeaders_write(opt, hdrs->obuffer, XP_STRLEN(hdrs->obuffer)); - if (status < 0) goto FAIL; - -#else /* EGREGIOUS_HEADERS */ - - XP_SPRINTF(out, "\ -<TR><TD VALIGN=TOP BGCOLOR=\"#CCCCCC\" ALIGN=RIGHT><B>%s: </B></TD>\ -<TD VALIGN=TOP BGCOLOR=\"#CCCCCC\" width=100%%>\ -<table border=0 cellspacing=0 cellpadding=0 width=100%%><tr>\ -<td valign=top>", XP_GetString(MK_MIMEHTML_DISP_FROM)); - out += XP_STRLEN(out); - - if (from) { - status = MimeHeaders_write(opt, hdrs->obuffer, XP_STRLEN(hdrs->obuffer)); - if (status < 0) goto FAIL; - status = MimeHeaders_write_grouped_header_1(hdrs, NULL, from, opt, TRUE); - if (status < 0) goto FAIL; - out = hdrs->obuffer; - } - - XP_STRCPY(out, "</td><td valign=top align=right nowrap>"); - out += XP_STRLEN(out); - if (date) XP_STRCPY(out, date); - out += XP_STRLEN(out); - XP_STRCPY(out, "</td></tr></table></TD>"); - out += XP_STRLEN(out); - - /* ### This is where to insert something like <TD VALIGN=TOP align=right bgcolor=\"#CCCCCC\" ROWSPAN=2><IMG SRC=\"http://gooey/projects/dogbert/mail/M_both.gif\"></TD> if we want to do an image. */ - - XP_STRCPY(out, - "</TR><TR><TD VALIGN=TOP BGCOLOR=\"#CCCCCC\" ALIGN=RIGHT><B>"); - out += XP_STRLEN(out); - XP_STRCPY(out, XP_GetString(MK_MIMEHTML_DISP_SUBJECT)); - out += XP_STRLEN(out); - XP_STRCPY(out, ": </B></TD><TD VALIGN=TOP BGCOLOR=\"#CCCCCC\">"); - out += XP_STRLEN(out); - if (subj) { - status = NET_ScanForURLs( -#ifndef MOZILLA_30 - NULL, -#endif /* !MOZILLA_30 */ - subj, XP_STRLEN(subj), out, - hdrs->obuffer_size - (out - hdrs->obuffer) - 10, - TRUE); - if (status < 0) goto FAIL; - } else { - XP_STRCPY(out, "<BR>"); - } - out += XP_STRLEN(out); - XP_STRCPY(out, "</TR>"); - out += XP_STRLEN(out); - - status = MimeHeaders_write(opt, hdrs->obuffer, XP_STRLEN(hdrs->obuffer)); - if (status < 0) goto FAIL; - -#endif /* EGREGIOUS_HEADERS */ - - - /* At this point, we've written out the one-line summary. - But we might want to write out some additional header lines, too... - */ - - - /* If this was a redirected message, also show the Resent-From or - Resent-Sender field, to avoid nasty surprises. - */ - status = MimeHeaders_write_address_header(hdrs, HEADER_RESENT_FROM, opt); - if (status < 0) goto FAIL; - if (status == 0) /* meaning "nothing written" */ - status = MimeHeaders_write_address_header(hdrs, HEADER_RESENT_SENDER, opt); - if (status < 0) goto FAIL; - - - /* If this is the mail reader, show the full recipient list. - */ - if (opt->headers == MimeHeadersMicroPlus) - { - status = MimeHeaders_write_address_header (hdrs, HEADER_TO, opt); - if (status < 0) goto FAIL; - status = MimeHeaders_write_address_header (hdrs, HEADER_CC, opt); - if (status < 0) goto FAIL; - status = MimeHeaders_write_address_header (hdrs, HEADER_BCC, opt); - if (status < 0) goto FAIL; - status = MimeHeaders_write_news_header (hdrs, HEADER_NEWSGROUPS, opt); - if (status < 0) goto FAIL; - } - - FAIL: - - FREEIF(subj); - FREEIF(from); - FREEIF(date); - - return (status < 0 ? status : 1); -} - - -static int -MimeHeaders_write_citation_headers (MimeHeaders *hdrs, MimeDisplayOptions *opt) -{ - int status; - char *from = 0, *name = 0, *id = 0; - const char *fmt = 0; - char *converted = 0; - int32 converted_length = 0; - - XP_ASSERT(hdrs); - if (!hdrs) return -1; - - if (!opt || !opt->output_fn) - return 0; - - from = MimeHeaders_get(hdrs, HEADER_FROM, FALSE, FALSE); - if (!from) - from = MimeHeaders_get(hdrs, HEADER_SENDER, FALSE, FALSE); - if (!from) - from = XP_STRDUP("Unknown"); - if (!from) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - -#if 0 - id = MimeHeaders_get(hdrs, HEADER_MESSAGE_ID, FALSE, FALSE); -#endif - -/* XXX need prototype for this function in some header? */ - name = (char *) MSG_ExtractRFC822AddressNames (from); - if (!name) - { - name = from; - from = 0; - } - FREEIF(from); - - fmt = (id - ? XP_GetString(MK_MSG_IN_MSG_X_USER_WROTE) - : XP_GetString(MK_MSG_USER_WROTE)); - - status = MimeHeaders_grow_obuffer (hdrs, - XP_STRLEN(fmt) + XP_STRLEN(name) + - (id ? XP_STRLEN(id) : 0) + 58); - if (status < 0) return status; - -#ifndef MOZILLA_30 - if (opt->nice_html_only_p) { - int32 nReplyWithExtraLines = 0, eReplyOnTop = 0; - PREF_GetIntPref("mailnews.reply_with_extra_lines", &nReplyWithExtraLines); - PREF_GetIntPref("mailnews.reply_on_top", &eReplyOnTop); - if (nReplyWithExtraLines && eReplyOnTop == 1) { - for (; nReplyWithExtraLines > 0; nReplyWithExtraLines--) { - status = MimeHeaders_write(opt, "<BR>", 4); - if (status < 0) return status; - } - } - } -#endif - - if (id) - XP_SPRINTF(hdrs->obuffer, fmt, id, name); - else - XP_SPRINTF(hdrs->obuffer, fmt, name); - - status = MimeHeaders_convert_rfc1522(opt, hdrs->obuffer, - XP_STRLEN(hdrs->obuffer), - &converted, &converted_length); - if (status < 0) return status; - - if (converted) - { - status = MimeHeaders_write(opt, converted, converted_length); - if (status < 0) goto FAIL; - } - else - { - status = MimeHeaders_write(opt, hdrs->obuffer, XP_STRLEN(hdrs->obuffer)); - if (status < 0) goto FAIL; - } - -#ifndef MOZILLA_30 - if (opt->nice_html_only_p) { - char ptr[] = "<BLOCKQUOTE TYPE=CITE>"; - MimeHeaders_write(opt, ptr, XP_STRLEN(ptr)); - } -#endif /* !MOZILLA_30 */ - - FAIL: - - FREEIF(from); - FREEIF(name); - FREEIF(id); - return (status < 0 ? status : 1); -} - - -/* Writes the headers as text/plain. - This writes out a blank line after the headers, unless - dont_write_content_type is true, in which case the header-block - is not closed off, and none of the Content- headers are written. - */ -int -MimeHeaders_write_raw_headers (MimeHeaders *hdrs, MimeDisplayOptions *opt, - XP_Bool dont_write_content_type) -{ - int status; - - if (hdrs && !hdrs->done_p) - { - hdrs->done_p = TRUE; - status = MimeHeaders_build_heads_list(hdrs); - if (status < 0) return 0; - } - - if (!dont_write_content_type) - { - char nl[] = LINEBREAK; - if (hdrs) - { - status = MimeHeaders_write(opt, hdrs->all_headers, - hdrs->all_headers_fp); - if (status < 0) return status; - } - status = MimeHeaders_write(opt, nl, XP_STRLEN(nl)); - if (status < 0) return status; - } - else if (hdrs) - { - int32 i; - for (i = 0; i < hdrs->heads_size; i++) - { - char *head = hdrs->heads[i]; - char *end = (i == hdrs->heads_size-1 - ? hdrs->all_headers + hdrs->all_headers_fp - : hdrs->heads[i+1]); - - XP_ASSERT(head); - if (!head) continue; - - /* Don't write out any Content- header. */ - if (!strncasecomp(head, "Content-", 8)) - continue; - - /* Write out this (possibly multi-line) header. */ - status = MimeHeaders_write(opt, head, end - head); - if (status < 0) return status; - } - } - - if (hdrs) - MimeHeaders_compact (hdrs); - - return 0; -} - - -int -MimeHeaders_write_headers_html (MimeHeaders *hdrs, MimeDisplayOptions *opt) -{ - int status = 0; - XP_Bool wrote_any_p = FALSE; - - XP_ASSERT(hdrs); - if (!hdrs) return -1; - - if (!opt || !opt->output_fn) return 0; - - FREEIF(hdrs->munged_subject); - - status = MimeHeaders_grow_obuffer (hdrs, /*210*/ 750); - if (status < 0) return status; - - if (opt->fancy_headers_p) { -#ifdef JS_ATTACHMENT_MUMBO_JUMBO - /* First, insert a table for the way-magic javascript appearing attachment - indicator. The ending code for this is way below. */ - XP_STRCPY(hdrs->obuffer, "<TABLE><TR><TD>" MIME_HEADER_TABLE); -#else - XP_STRCPY(hdrs->obuffer, MIME_HEADER_TABLE); -#endif - } else - XP_STRCPY (hdrs->obuffer, "<P>"); - - status = MimeHeaders_write(opt, hdrs->obuffer, XP_STRLEN(hdrs->obuffer)); - if (status < 0) return status; - - if (opt->headers == MimeHeadersAll) - status = MimeHeaders_write_all_headers (hdrs, opt); - else if (opt->headers == MimeHeadersMicro || - opt->headers == MimeHeadersMicroPlus) - status = MimeHeaders_write_microscopic_headers (hdrs, opt); - else if (opt->headers == MimeHeadersCitation) - status = MimeHeaders_write_citation_headers (hdrs, opt); - else - status = MimeHeaders_write_interesting_headers (hdrs, opt); - - wrote_any_p = (status > 0); - - if (!wrote_any_p && opt->fancy_headers_p) - { - const char *msg = XP_GetString(MK_MSG_NO_HEADERS); - XP_STRCPY (hdrs->obuffer, "<TR><TD><B><I>"); - XP_STRCAT (hdrs->obuffer, msg); - XP_STRCAT (hdrs->obuffer, "</I></B></TD></TR>"); - status = MimeHeaders_write(opt, hdrs->obuffer, XP_STRLEN(hdrs->obuffer)); - if (status < 0) goto FAIL; - } - - if (opt->fancy_headers_p) { - XP_STRCPY (hdrs->obuffer, "</TABLE>"); -#ifdef JS_ATTACHMENT_MUMBO_JUMBO - /* OK, here's the ending code for the way magic javascript indicator. */ - if (!opt->nice_html_only_p && opt->fancy_links_p) { - if (opt->attachment_icon_layer_id == 0) { - static int32 randomid = 1; /* Not very random. ### */ - char *mouseOverStatusString = XP_GetString(MK_MSG_SHOW_ATTACHMENT_PANE); - opt->attachment_icon_layer_id = randomid; - XP_SPRINTF(hdrs->obuffer + XP_STRLEN(hdrs->obuffer), - "</TD><TD VALIGN=TOP><LAYER LOCKED name=noattach-%ld>" - "</LAYER><ILAYER LOCKED name=attach-%ld visibility=hide>" - "<a href=mailbox:displayattachments onMouseOver=\"window.status='%s'; return true\">" - "<IMG SRC=internal-attachment-icon BORDER=0>" - "</a></ilayer>", - (long) randomid, (long) randomid, - mouseOverStatusString); - randomid++; - } - } - XP_STRCAT(hdrs->obuffer, "</td></tr></table>"); -#endif - } else - XP_STRCPY (hdrs->obuffer, "<P>"); - - status = MimeHeaders_write(opt, hdrs->obuffer, XP_STRLEN(hdrs->obuffer)); - if (status < 0) goto FAIL; - if (hdrs->munged_subject) { - char* t2 = NET_EscapeHTML(hdrs->munged_subject); - FREEIF(hdrs->munged_subject); - if (t2) { - status = MimeHeaders_grow_obuffer(hdrs, XP_STRLEN(t2) + 20); - if (status >= 0) { - XP_SPRINTF(hdrs->obuffer, "<TITLE>%s</TITLE>\n", t2); - status = MimeHeaders_write(opt, hdrs->obuffer, - XP_STRLEN(hdrs->obuffer)); - } - } - FREEIF(t2); - if (status < 0) goto FAIL; - } - - - - FAIL: - MimeHeaders_compact (hdrs); - - return status; -} - - -/* Returns TRUE if we should show colored tags on attachments. - Useful for IMAP MIME parts on demand, because it shows a different - color for undownloaded parts. */ -static XP_Bool -MimeHeaders_getShowAttachmentColors(void) -{ - static XP_Bool showColors = FALSE; -#ifndef MOZILLA_30 - static XP_Bool gotPref = FALSE; - if (!gotPref) - { - PREF_GetBoolPref("mailnews.color_tag_attachments", &showColors); - gotPref = TRUE; - } -#endif /* MOZILLA_30 */ - return showColors; -} - -/* For drawing the tables that represent objects that can't be displayed - inline. - */ - -int -MimeHeaders_write_attachment_box(MimeHeaders *hdrs, - MimeDisplayOptions *opt, - const char *content_type, - const char *encoding, - const char *lname, - const char *lname_url, - const char *body) -{ - int status = 0; - char *type = 0, *desc = 0, *enc = 0, *icon = 0, *type_desc = 0, *partColor = 0; - XP_Bool downloaded = TRUE; - - XP_ASSERT(hdrs); - if (!hdrs) return -1; - - type = (content_type - ? XP_STRDUP(content_type) - : MimeHeaders_get(hdrs, HEADER_CONTENT_TYPE, TRUE, FALSE)); - - downloaded = opt->missing_parts ? (MimeHeaders_get(hdrs, IMAP_EXTERNAL_CONTENT_HEADER, FALSE, FALSE) == NULL) : TRUE; - - if (type && *type && opt) - { - if (opt->type_icon_name_fn) - icon = opt->type_icon_name_fn(type, opt->stream_closure); - - if (!strcasecomp(type, APPLICATION_OCTET_STREAM)) - type_desc = XP_STRDUP(XP_GetString(MK_MSG_UNSPECIFIED_TYPE)); - else if (opt->type_description_fn) - type_desc = opt->type_description_fn(type, opt->stream_closure); - } - - /* Kludge to use a prettier name for AppleDouble and AppleSingle objects. - */ - if (type && (!strcasecomp(type, MULTIPART_APPLEDOUBLE) || - !strcasecomp(type, MULTIPART_HEADER_SET) || - !strcasecomp(type, APPLICATION_APPLEFILE))) - { - XP_FREE(type); - type = XP_STRDUP(XP_GetString(MK_MSG_MIME_MAC_FILE)); - FREEIF(icon); - icon = XP_STRDUP("internal-gopher-binary"); - } - -# define PUT_STRING(S) do { \ - status = MimeHeaders_grow_obuffer(hdrs, XP_STRLEN(S)+1); \ - if (status < 0) goto FAIL; \ - XP_STRCPY (hdrs->obuffer, S); \ - status = MimeHeaders_write(opt, hdrs->obuffer, \ - XP_STRLEN(hdrs->obuffer)); \ - if (status < 0) goto FAIL; } while (0) - - PUT_STRING ("<TABLE CELLPADDING=2 CELLSPACING=0 BORDER=1><TR>"); - if (MimeHeaders_getShowAttachmentColors()) - { - /* For IMAP MIME parts on demand */ - partColor = downloaded ? "#00CC00" : "#FFCC00"; - - PUT_STRING ("<TD NOWRAP WIDTH=\"5\" BGCOLOR=\""); - PUT_STRING (partColor); - PUT_STRING ("\"><TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>"); - PUT_STRING ("<TR><TD NOWRAP VALIGN=CENTER></TD></TR></TABLE></TD>"); - } - PUT_STRING ("<TD NOWRAP>"); - - if (icon) - { - PUT_STRING("<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>" - "<TR><TD NOWRAP VALIGN=CENTER>"); - - if (lname_url) - { - PUT_STRING("<A HREF=\""); - PUT_STRING(lname_url); - PUT_STRING("\">"); - } - PUT_STRING("<IMG SRC=\""); - PUT_STRING(icon); - PUT_STRING("\" BORDER=0 ALIGN=MIDDLE ALT=\"\">"); - - if (lname_url) - PUT_STRING("</A>"); - - PUT_STRING("</TD><TD VALIGN=CENTER>"); - } - - if (lname_url) - { - PUT_STRING("<A HREF=\""); - PUT_STRING(lname_url); - PUT_STRING("\">"); - } - if (lname) - PUT_STRING (lname); - if (lname_url) - PUT_STRING("</A>"); - - if (icon) - PUT_STRING("</TD></TR></TABLE>"); - - PUT_STRING ("</TD><TD>"); - - if (opt->headers == MimeHeadersAll) - { - status = MimeHeaders_write_headers_html (hdrs, opt); - if (status < 0) return status; - } - else - { - char *name = MimeHeaders_get_name(hdrs); - PUT_STRING (MIME_HEADER_TABLE); - - if (name) - { - const char *name_hdr = MimeHeaders_localize_header_name("Name", opt); - PUT_STRING(HEADER_START_JUNK); - PUT_STRING(name_hdr); - PUT_STRING(HEADER_MIDDLE_JUNK); - PUT_STRING(name); - FREEIF(name); - PUT_STRING(HEADER_END_JUNK); - } - - if (type) - { - const char *type_hdr = MimeHeaders_localize_header_name("Type", opt); - PUT_STRING(HEADER_START_JUNK); - PUT_STRING(type_hdr); - PUT_STRING(HEADER_MIDDLE_JUNK); - if (type_desc) - { - PUT_STRING(type_desc); - PUT_STRING(" ("); - } - PUT_STRING(type); - if (type_desc) - PUT_STRING(")"); - FREEIF(type); - FREEIF(type_desc); - PUT_STRING(HEADER_END_JUNK); - } - - enc = (encoding - ? XP_STRDUP(encoding) - : MimeHeaders_get(hdrs, HEADER_CONTENT_TRANSFER_ENCODING, - TRUE, FALSE)); - if (enc) - { - const char *enc_hdr = MimeHeaders_localize_header_name("Encoding", - opt); - PUT_STRING(HEADER_START_JUNK); - PUT_STRING(enc_hdr); - PUT_STRING(HEADER_MIDDLE_JUNK); - PUT_STRING(enc); - FREEIF(enc); - PUT_STRING(HEADER_END_JUNK); - } - - desc = MimeHeaders_get(hdrs, HEADER_CONTENT_DESCRIPTION, FALSE, FALSE); - if (!desc) - { - desc = MimeHeaders_get(hdrs, HEADER_X_SUN_DATA_DESCRIPTION, - FALSE, FALSE); - - /* If there's an X-Sun-Data-Description, but it's the same as the - X-Sun-Data-Type, don't show it. - */ - if (desc) - { - char *loser = MimeHeaders_get(hdrs, HEADER_X_SUN_DATA_TYPE, - FALSE, FALSE); - if (loser && !strcasecomp(loser, desc)) - FREEIF(desc); - FREEIF(loser); - } - } - - if (desc) - { - const char *desc_hdr= MimeHeaders_localize_header_name("Description", - opt); - PUT_STRING(HEADER_START_JUNK); - PUT_STRING(desc_hdr); - PUT_STRING(HEADER_MIDDLE_JUNK); - PUT_STRING(desc); - FREEIF(desc); - PUT_STRING(HEADER_END_JUNK); - } - - if (!downloaded) - { - const char *downloadStatus_hdr = XP_GetString(MK_MIMEHTML_DOWNLOAD_STATUS_HEADER); - const char *downloadStatus = XP_GetString(MK_MIMEHTML_DOWNLOAD_STATUS_NOT_DOWNLOADED); - PUT_STRING(HEADER_START_JUNK); - PUT_STRING(downloadStatus_hdr); - PUT_STRING(HEADER_MIDDLE_JUNK); - PUT_STRING(downloadStatus); - PUT_STRING(HEADER_END_JUNK); - } - - PUT_STRING ("</TABLE>"); - } - if (body) PUT_STRING(body); - PUT_STRING ("</TD></TR></TABLE></CENTER>"); -# undef PUT_STRING - - FAIL: - FREEIF(type); - FREEIF(desc); - FREEIF(enc); - FREEIF(icon); - FREEIF(type_desc); - MimeHeaders_compact (hdrs); - return status; -} - - -/* Some bigfun-related HTML-generated utility routines. - */ - - -char * -MimeHeaders_open_bigfun_stamp(void) -{ - return XP_STRDUP("<TABLE CELLPADDING=0 CELLSPACING=0" - " WIDTH=\"100%\" BORDER=0>" - "<TR VALIGN=TOP><TD WIDTH=\"100%\">"); -} - -char * -MimeHeaders_finish_open_bigfun_stamp(void) -{ - return XP_STRDUP("</TD><TD ALIGN=RIGHT VALIGN=TOP>"); -} - -char * -MimeHeaders_close_bigfun_stamp(void) -{ - return XP_STRDUP("</TD></TR></TABLE><P>"); -} - - -char * -MimeHeaders_make_bigfun_stamp(XP_Bool bigfun_p, - XP_Bool signed_p, - XP_Bool good_p, - XP_Bool unverified_p, - XP_Bool close_parent_stamp_p, - const char *stamp_url) -{ - const char *open = ("%s" - "<P>" - "<CENTER>" - "<TABLE CELLPADDING=3 CELLSPACING=0 BORDER=1>" - "<TR>" - "<TD ALIGN=RIGHT VALIGN=BOTTOM BGCOLOR=\"white\">" - HG82001 - "<B>" - "<FONT COLOR=\"red\" SIZE=\"-1\">" - "<BR>" - "%s%s%s"); - int16 middle_key = 0; - char *href_open = 0; - const char *img_src = ""; - const char *href_close = 0; - const char *middle = 0; - const char *close = ( "</FONT>" - "</B>" - "</TD>" - "</TR>" - "</TABLE>" - "</CENTER>" - ); - char *parent_close = 0; - const char *parent_close_early = 0; - const char *parent_close_late = 0; - char *result = 0; - - HG89202 - - if (middle_key) - { - middle = XP_GetString(middle_key); - - /* #### Don't have access to output_csid from here... - middle = XP_GetStringForHTML(middle_key, output_csid, (char*)middle); - */ - } - - if (close_parent_stamp_p) - { - parent_close = MimeHeaders_close_bigfun_stamp(); - if (!parent_close) goto FAIL; /* MK_OUT_OF_MEMORY */ - } - - parent_close_early = 0; - parent_close_late = parent_close; - if (!bigfun_p && !signed_p) - { - /* Kludge for certs-only messages -- close off the parent early - so that the stamp goes in the body, not next to the headers. */ - parent_close_early = parent_close; - parent_close_late = 0; - } - - HG28974 - - result = PR_smprintf(open, - (parent_close_early ? parent_close_early : ""), - (href_open ? href_open : ""), - img_src, - (href_close ? href_close : ""), - (middle ? middle : ""), - close, - (parent_close_late ? parent_close_late : "")); - FAIL: - FREEIF(parent_close); - FREEIF(href_open); - return result; -} - - -/* Given text purporting to be a qtext header value, strip backslashes that - may be escaping other chars in the string. */ -char * -mime_decode_filename(char *name) -{ - char *s = name, *d = name; - char *cvt, *returnVal = NULL; - int16 mail_csid = CS_DEFAULT, win_csid = CS_DEFAULT; - - while (*s) - { - /* Remove backslashes when they are used to escape special characters. */ - if ((*s == '\\') && - ((*(s+1) == CR) || (*(s+1) == LF) || (*(s+1) == '"') || (*(s+1) == '\\'))) - s++; /* take whatever char follows the backslash */ - if (*s) - *d++ = *s++; - } - *d = 0; - returnVal = name; - - /* If there is a MIME-2 encoded-word in the string, - get the charset of the first one and decode to that charset. */ - s = XP_STRSTR(returnVal, "=?"); - if (s) - { - s += 2; - d = XP_STRCHR(s, '?'); - if (d) *d = '\0'; - mail_csid = INTL_CharSetNameToID(s); - if (d) *d = '?'; - win_csid = INTL_DocToWinCharSetID(mail_csid); - -#if 0 /* #### */ - cvt = INTL_DecodeMimePartIIStr(returnVal, win_csid, FALSE); - if (cvt && cvt != returnVal) - returnVal = cvt; -#endif - } - - - /* Seriously ugly hack. If the first three characters of the filename - are <ESC>$B, then we know the filename is in JIS and should be - converted to either SJIS or EUC-JP. */ - if ((XP_STRLEN(returnVal) > 3) && - (returnVal[0] == 0x1B) && (returnVal[1] == '$') && (returnVal[2] == 'B')) - { - int16 dest_csid = INTL_DocToWinCharSetID(CS_JIS); - - cvt = (char *) INTL_ConvertLineWithoutAutoDetect(CS_JIS, dest_csid, (unsigned char *)returnVal, XP_STRLEN(returnVal)); - if (cvt && cvt != returnVal) - { - if (returnVal != name) XP_FREE(returnVal); - returnVal = cvt; - } - } - - return returnVal; -} - - -/* Pull the name out of some header or another. Order is: - Content-Disposition: XXX; filename=NAME (RFC 1521/1806) - Content-Type: XXX; name=NAME (RFC 1341) - Content-Name: NAME (no RFC, but seen to occur) - X-Sun-Data-Name: NAME (no RFC, but used by MailTool) - */ -char * -MimeHeaders_get_name(MimeHeaders *hdrs) -{ - char *s = 0, *name = 0, *cvt = 0; - - s = MimeHeaders_get(hdrs, HEADER_CONTENT_DISPOSITION, FALSE, FALSE); - if (s) - { - name = MimeHeaders_get_parameter(s, HEADER_PARM_FILENAME, NULL, NULL); - XP_FREE(s); - } - - if (! name) - { - s = MimeHeaders_get(hdrs, HEADER_CONTENT_TYPE, FALSE, FALSE); - if (s) - { - name = MimeHeaders_get_parameter(s, HEADER_PARM_NAME, NULL, NULL); - XP_FREE(s); - } - } - - if (! name) - name = MimeHeaders_get (hdrs, HEADER_CONTENT_NAME, FALSE, FALSE); - - if (! name) - name = MimeHeaders_get (hdrs, HEADER_X_SUN_DATA_NAME, FALSE, FALSE); - - if (name) - { - /* First remove continuation delimiters (CR+LF+space), then - remove escape ('\\') characters, then attempt to decode - mime-2 encoded-words. The latter two are done in - mime_decode_filename. - */ - strip_continuations(name); - - /* Argh. What we should do if we want to be robust is to decode qtext - in all appropriate headers. Unfortunately, that would be too scary - at this juncture. So just decode qtext/mime2 here. */ - cvt = mime_decode_filename(name); - if (cvt && cvt != name) - { - XP_FREE(name); - name = cvt; - } - } - - return name; -} - - - -#ifdef XP_UNIX - -/* This piece of junk is so that I can use BBDB with Mozilla. - = Put bbdb-srv.perl on your path. - = Put bbdb-srv.el on your lisp path. - = Make sure gnudoit (comes with xemacs) is on your path. - = Put (gnuserv-start) in ~/.emacs - = setenv NS_MSG_DISPLAY_HOOK bbdb-srv.perl - */ -void -MimeHeaders_do_unix_display_hook_hack(MimeHeaders *hdrs) -{ - static char *cmd = 0; - if (!cmd) - { - /* The first time we're invoked, look up the command in the - environment. Use "" as the `no command' tag. */ - cmd = getenv("NS_MSG_DISPLAY_HOOK"); - if (!cmd) - cmd = ""; - else - cmd = XP_STRDUP(cmd); - } - - /* Invoke "cmd" at the end of a pipe, and give it the headers on stdin. - The command is expected to be safe from hostile input!! - */ - if (cmd && *cmd) - { - FILE *fp = popen(cmd, "w"); - if (fp) - { - fwrite(hdrs->all_headers, 1, hdrs->all_headers_fp, fp); - pclose(fp); - } - } -} - -#endif /* XP_UNIX */ - -#endif /*MOZ_ENDER_MIME*/ - -/* Strip CR+LF+<whitespace> runs within (original). - Since the string at (original) can only shrink, - this conversion is done in place. (original) - is returned. */ -char * -strip_continuations(char *original) -{ - char *p1, *p2; - - /* If we were given a null string, return it as is */ - if (!original) return NULL; - - /* Start source and dest pointers at the beginning */ - p1 = p2 = original; - - while(*p2) - { - /* p2 runs ahead at (CR and/or LF) + <space> */ - if ((p2[0] == CR) || (p2[0] == LF)) - { - /* move past (CR and/or LF) + whitespace following */ - do - { - p2++; - } - while((*p2 == CR) || (*p2 == LF) || XP_IS_SPACE(*p2)); - - if (*p2 == '\0') continue; /* drop out of loop at end of string*/ - } - - /* Copy the next non-linebreaking char */ - *p1 = *p2; - p1++; p2++; - } - *p1 = '\0'; - - return original; -} - -extern int16 INTL_DefaultMailToWinCharSetID(int16 csid); - diff --git a/mozilla/lib/libmime/mimehdrs.h b/mozilla/lib/libmime/mimehdrs.h deleted file mode 100644 index f6c2975e25f..00000000000 --- a/mozilla/lib/libmime/mimehdrs.h +++ /dev/null @@ -1,103 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimehdrs.h --- external interface to the MIME header parser, version 2. - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - - -#ifndef _MIMEHDRS_H_ -#define _MIMEHDRS_H_ - -#include "libmime.h" - -/* This file defines the interface to message-header parsing and formatting - code, including conversion to HTML. - */ - - - -/* Other structs defined later in this file. - */ - -/* Creation and destruction. - */ -extern MimeHeaders *MimeHeaders_new (void); -extern void MimeHeaders_free (MimeHeaders *); -extern MimeHeaders *MimeHeaders_copy (MimeHeaders *); - - -/* Feed this method the raw data from which you would like a header - block to be parsed, one line at a time. Feed it a blank line when - you're done. Returns negative on allocation-related failure. - */ -extern int MimeHeaders_parse_line (const char *buffer, int32 size, - MimeHeaders *hdrs); - - -/* Converts a MimeHeaders object into HTML, by writing to the provided - output function. - */ -extern int MimeHeaders_write_headers_html (MimeHeaders *hdrs, - MimeDisplayOptions *opt); - -/* Writes the headers as text/plain. - This writes out a blank line after the headers, unless - dont_write_content_type is true, in which case the header-block - is not closed off, and none of the Content- headers are written. - */ -extern int MimeHeaders_write_raw_headers (MimeHeaders *hdrs, - MimeDisplayOptions *opt, - XP_Bool dont_write_content_type); - - -/* For drawing the tables that represent objects that can't be displayed - inline. */ -extern int MimeHeaders_write_attachment_box(MimeHeaders *hdrs, - MimeDisplayOptions *opt, - const char *content_type, - const char *encoding, - const char *name, - const char *name_url, - const char *body); - -/* Some bigfun-related HTML-generated utility routines. - */ -extern char *MimeHeaders_open_bigfun_stamp(void); -extern char *MimeHeaders_finish_open_bigfun_stamp(void); -extern char *MimeHeaders_close_bigfun_stamp(void); -extern char *MimeHeaders_make_bigfun_stamp(XP_Bool bigfun_p, - XP_Bool signed_p, - XP_Bool good_p, - XP_Bool unverified_p, - XP_Bool close_parent_stamp_p, - const char *stamp_url); - - -/* Does all the heuristic silliness to find the filename in the given headers. - */ -extern char *MimeHeaders_get_name(MimeHeaders *hdrs); - -extern char *mime_decode_filename(char *name); - - -#endif /* _MIMEHDRS_H_ */ diff --git a/mozilla/lib/libmime/mimei.c b/mozilla/lib/libmime/mimei.c deleted file mode 100644 index 9425eae6a95..00000000000 --- a/mozilla/lib/libmime/mimei.c +++ /dev/null @@ -1,1138 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimei.c --- MIME parser, version 2 (see mimei.h). - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mime.h" -#include "mimeobj.h" /* MimeObject (abstract) */ -#include "mimecont.h" /* |--- MimeContainer (abstract) */ -#include "mimemult.h" /* | |--- MimeMultipart (abstract) */ -#include "mimemmix.h" /* | | |--- MimeMultipartMixed */ -#include "mimemdig.h" /* | | |--- MimeMultipartDigest */ -#include "mimempar.h" /* | | |--- MimeMultipartParallel */ -#include "mimemalt.h" /* | | |--- MimeMultipartAlternative */ -#include "mimemrel.h" /* | | |--- MimeMultipartRelated */ -#include "mimemapl.h" /* | | |--- MimeMultipartAppleDouble */ -#include "mimesun.h" /* | | |--- MimeSunAttachment */ -#include "mimemsig.h" /* | | |--- MimeMultipartSigned (abstract)*/ -#include "mimemsg.h" /* | |--- MimeMessage */ -#include "mimeunty.h" /* | |--- MimeUntypedText */ -#include "mimeleaf.h" /* |--- MimeLeaf (abstract) */ -#include "mimetext.h" /* | |--- MimeInlineText (abstract) */ -#include "mimetpla.h" /* | | |--- MimeInlineTextPlain */ -#include "mimethtm.h" /* | | |--- MimeInlineTextHTML */ -#include "mimetric.h" /* | | |--- MimeInlineTextRichtext */ -#include "mimetenr.h" /* | | | |--- MimeInlineTextEnriched */ -#ifndef MOZILLA_30 -#include "mimevcrd.h" /* | | |--------- MimeInlineTextVCard */ -#ifdef MOZ_CALENDAR -#include "mimecal.h" /* | | |--------- MimeInlineTextCalendar */ -#endif -#include "prefapi.h" -#endif /* !MOZILLA_30 */ -#include "mimeiimg.h" /* | |--- MimeInlineImage */ -#include "mimeeobj.h" /* | |--- MimeExternalObject */ -#include "mimeebod.h" /* |--- MimeExternalBody */ - -#ifdef MOZ_SECURITY -#include "mimesec.h" -#endif /* MOZ_SECURITY */ - -/* ========================================================================== - Allocation and destruction - ========================================================================== - */ - -static int mime_classinit(MimeObjectClass *class); - -MimeObject * -mime_new (MimeObjectClass *class, MimeHeaders *hdrs, - const char *override_content_type) -{ - int size = class->instance_size; - MimeObject *object; - int status; - - /* Some assertions to verify that this isn't random junk memory... */ - XP_ASSERT(class->class_name && XP_STRLEN(class->class_name) > 0); - XP_ASSERT(size > 0 && size < 1000); - - if (!class->class_initialized) - { - status = mime_classinit(class); - if (status < 0) return 0; - } - - XP_ASSERT(class->initialize && class->finalize); - - if (hdrs) - { - hdrs = MimeHeaders_copy (hdrs); - if (!hdrs) return 0; - } - - class->showAttachmentIcon = FALSE; /* initialize ricardob's new member. */ - object = (MimeObject *) XP_ALLOC(size); - if (!object) return 0; - - XP_MEMSET(object, 0, size); - object->class = class; - object->headers = hdrs; - - if (override_content_type && *override_content_type) - object->content_type = XP_STRDUP(override_content_type); - - status = class->initialize(object); - if (status < 0) - { - class->finalize(object); - XP_FREE(object); - return 0; - } - - return object; -} - -void -mime_free (MimeObject *object) -{ -# ifdef DEBUG__ - int i, size = object->class->instance_size; - uint32 *array = (uint32*) object; -# endif /* DEBUG */ - - object->class->finalize(object); - -# ifdef DEBUG__ - for (i = 0; i < (size / sizeof(*array)); i++) - array[i] = (uint32) 0xDEADBEEF; -# endif /* DEBUG */ - - XP_FREE(object); -} - - -MimeObjectClass * -mime_find_class (const char *content_type, MimeHeaders *hdrs, - MimeDisplayOptions *opts, XP_Bool exact_match_p) -{ - MimeObjectClass *class = 0; - - if (!content_type || !*content_type || - !strcasecomp(content_type, "text")) /* with no / in the type */ - class = (MimeObjectClass *)&mimeUntypedTextClass; - - /* Subtypes of text... - */ - else if (!strncasecomp(content_type, "text/", 5)) - { - if (!strcasecomp(content_type+5, "html")) - class = (MimeObjectClass *)&mimeInlineTextHTMLClass; - else if (!strcasecomp(content_type+5, "enriched")) - class = (MimeObjectClass *)&mimeInlineTextEnrichedClass; - else if (!strcasecomp(content_type+5, "richtext")) - class = (MimeObjectClass *)&mimeInlineTextRichtextClass; - else if (!strcasecomp(content_type+5, "plain")) - class = (MimeObjectClass *)&mimeInlineTextPlainClass; -#ifndef MOZILLA_30 -#if defined(MOZ_MAIL_NEWS) - else if (!strcasecomp(content_type+5, "x-vcard")) - class = (MimeObjectClass *)&mimeInlineTextVCardClass; -#endif /* MOZ_MAIL_NEWS */ -#ifdef MOZ_CALENDAR - else if (!strcasecomp(content_type+5, "calendar")) - class = (MimeObjectClass *)&mimeInlineTextCalendarClass; -#endif -#endif /* !MOZILLA_30 */ - else if (!exact_match_p) - class = (MimeObjectClass *)&mimeInlineTextPlainClass; - } - - /* Subtypes of multipart... - */ - else if (!strncasecomp(content_type, "multipart/", 10)) - { - if (!strcasecomp(content_type+10, "alternative")) - class = (MimeObjectClass *)&mimeMultipartAlternativeClass; - else if (!strcasecomp(content_type+10, "related")) - class = (MimeObjectClass *)&mimeMultipartRelatedClass; - else if (!strcasecomp(content_type+10, "digest")) - class = (MimeObjectClass *)&mimeMultipartDigestClass; - else if (!strcasecomp(content_type+10, "appledouble") || - !strcasecomp(content_type+10, "header-set")) - class = (MimeObjectClass *)&mimeMultipartAppleDoubleClass; - else if (!strcasecomp(content_type+10, "parallel")) - class = (MimeObjectClass *)&mimeMultipartParallelClass; - else if (!strcasecomp(content_type+10, "mixed")) - class = (MimeObjectClass *)&mimeMultipartMixedClass; - -#ifdef MOZ_SECURITY -HG09850 -#endif /* MOZ_SECURITY */ - - if (!class && !exact_match_p) - /* Treat all unknown multipart subtypes as "multipart/mixed" */ - class = (MimeObjectClass *)&mimeMultipartMixedClass; - } - - /* Subtypes of message... - */ - else if (!strncasecomp(content_type, "message/", 8)) - { - if (!strcasecomp(content_type+8, "rfc822") || - !strcasecomp(content_type+8, "news")) - class = (MimeObjectClass *)&mimeMessageClass; - else if (!strcasecomp(content_type+8, "external-body")) - class = (MimeObjectClass *)&mimeExternalBodyClass; - else if (!strcasecomp(content_type+8, "partial")) - /* I guess these are most useful as externals, for now... */ - class = (MimeObjectClass *)&mimeExternalObjectClass; - else if (!exact_match_p) - /* Treat all unknown message subtypes as "text/plain" */ - class = (MimeObjectClass *)&mimeInlineTextPlainClass; - } - - /* The magic image types which we are able to display internally... - */ - else if (!strcasecomp(content_type, IMAGE_GIF) || - !strcasecomp(content_type, IMAGE_JPG) || - !strcasecomp(content_type, IMAGE_PJPG) || - !strcasecomp(content_type, IMAGE_PNG) || - !strcasecomp(content_type, IMAGE_XBM) || - !strcasecomp(content_type, IMAGE_XBM2) || - !strcasecomp(content_type, IMAGE_XBM3)) - class = (MimeObjectClass *)&mimeInlineImageClass; - - /* A few types which occur in the real world and which we would otherwise - treat as non-text types (which would be bad) without this special-case... - */ - else if (!strcasecomp(content_type, APPLICATION_PGP) || - !strcasecomp(content_type, APPLICATION_PGP2)) - class = (MimeObjectClass *)&mimeInlineTextPlainClass; - - else if (!strcasecomp(content_type, SUN_ATTACHMENT)) - class = (MimeObjectClass *)&mimeSunAttachmentClass; - -#ifdef MOZ_SECURITY - HG09855 - else if ((class = mime_find_class_from_content_type(content_type)) != 0) - ; -#endif /* MOZ_SECURITY */ - - /* Everything else gets represented as a clickable link. - */ - else if (!exact_match_p) - class = (MimeObjectClass *)&mimeExternalObjectClass; - - if (!exact_match_p) - XP_ASSERT(class); - if (!class) return 0; - - /* If the `Show Attachments as Links' kludge is on, now would be the time - to change our mind... */ - if (opts && opts->no_inline_p) - { - if (mime_subclass_p(class, (MimeObjectClass *)&mimeInlineTextClass)) - { - /* It's a text type. Write it only if it's the *first* part - that we're writing, and then only if it has no "filename" - specified (the assumption here being, if it has a filename, - it wasn't simply typed into the text field -- it was actually - an attached document.) */ - if (opts->state && opts->state->first_part_written_p) - class = (MimeObjectClass *)&mimeExternalObjectClass; - else - { - /* If there's a name, then write this as an attachment. */ - char *name = (hdrs ? MimeHeaders_get_name(hdrs) : 0); - if (name) - class = (MimeObjectClass *)&mimeExternalObjectClass; - FREEIF(name); - } - - if (opts->state) - opts->state->first_part_written_p = TRUE; - } - else if (mime_subclass_p(class,(MimeObjectClass *)&mimeContainerClass) && - !mime_subclass_p(class,(MimeObjectClass *)&mimeMessageClass)) - /* Multipart subtypes are ok, except for messages; descend into - multiparts, and defer judgement. - */ - ; - else if (opts && - opts->part_to_load && - mime_subclass_p(class,(MimeObjectClass *)&mimeMessageClass)) - /* Descend into messages only if we're looking for a specific sub-part. - */ - ; - else - { - /* Anything else, and display it as a link (and cause subsequent - text parts to also be displayed as links.) */ - class = (MimeObjectClass *)&mimeExternalObjectClass; - if (opts->state) - opts->state->first_part_written_p = TRUE; - } - } - - XP_ASSERT(class); - - if (class && !class->class_initialized) - { - int status = mime_classinit(class); - if (status < 0) return 0; - } - - return class; -} - - -MimeObject * -mime_create (const char *content_type, MimeHeaders *hdrs, - MimeDisplayOptions *opts) -{ - /* If there is no Content-Disposition header, or if the Content-Disposition - is ``inline'', then we display the part inline (and let mime_find_class() - decide how.) - - If there is any other Content-Disposition (either ``attachment'' or some - disposition that we don't recognise) then we always display the part as - an external link, by using MimeExternalObject to display it. - - But Content-Disposition is ignored for all containers except `message'. - (including multipart/mixed, and multipart/digest.) It's not clear if - this is to spec, but from a usability standpoint, I think it's necessary. - */ - - MimeObjectClass *class = 0; - char *content_disposition = 0; - MimeObject *obj = 0; - char *override_content_type = 0; - static XP_Bool reverse_lookup = FALSE, got_lookup_pref = FALSE; - - if (!got_lookup_pref) - { -#ifndef MOZILLA_30 - PREF_GetBoolPref("mailnews.autolookup_unknown_mime_types",&reverse_lookup); -#endif - got_lookup_pref = TRUE; - } - - - /* There are some clients send out all attachments with a content-type - of application/octet-stream. So, if we have an octet-stream attachment, - try to guess what type it really is based on the file extension. I HATE - that we have to do this... - - If the preference "mailnews.autolookup_unknown_mime_types" is set to TRUE, - then we try to do this EVERY TIME when we do not have an entry for the given - MIME type in our table, not only when it's application/octet-stream. */ - if (hdrs && opts && opts->file_type_fn && - - /* ### mwelch - don't override AppleSingle */ - (content_type ? strcasecomp(content_type, APPLICATION_APPLEFILE) : TRUE) && - /* ## davidm Apple double shouldn't use this #$%& either. */ - (content_type ? strcasecomp(content_type, MULTIPART_APPLEDOUBLE) : TRUE) && - (!content_type || - !strcasecomp(content_type, APPLICATION_OCTET_STREAM) || - !strcasecomp(content_type, UNKNOWN_CONTENT_TYPE) -#if 0 /* #### */ - || (reverse_lookup && - !NET_cinfo_find_info_by_type((char*)content_type)) -#endif /* #### */ - )) - { - char *name = MimeHeaders_get_name(hdrs); - if (name) - { - override_content_type = opts->file_type_fn (name, - opts->stream_closure); - FREEIF(name); - - if (override_content_type && - !strcasecomp(override_content_type, UNKNOWN_CONTENT_TYPE)) - FREEIF(override_content_type); - - if (override_content_type) - content_type = override_content_type; - } - } - - - class = mime_find_class(content_type, hdrs, opts, FALSE); - - XP_ASSERT(class); - if (!class) goto FAIL; - - if (opts && opts->part_to_load) - /* Always ignore Content-Disposition when we're loading some specific - sub-part (which may be within some container that we wouldn't otherwise - descend into, if the container itself had a Content-Disposition of - `attachment'. */ - content_disposition = 0; - - else if (mime_subclass_p(class,(MimeObjectClass *)&mimeContainerClass) && - !mime_subclass_p(class,(MimeObjectClass *)&mimeMessageClass)) - /* Ignore Content-Disposition on all containers except `message'. - That is, Content-Disposition is ignored for multipart/mixed objects, - but is obeyed for message/rfc822 objects. */ - content_disposition = 0; - - else - { - /* change content-Disposition for vcards to be inline so */ - /* we can see a nice html display */ -#if !defined(MOZILLA_30) && defined(MOZ_MAIL_NEWS) - if (mime_subclass_p(class,(MimeObjectClass *)&mimeInlineTextVCardClass)) - StrAllocCopy(content_disposition, "inline"); - else -#endif /* !MOZILLA_30 && MOZ_MAIL_NEWS */ - content_disposition = (hdrs - ? MimeHeaders_get(hdrs, HEADER_CONTENT_DISPOSITION, - TRUE, FALSE) - : 0); - } - - if (!content_disposition || - !strcasecomp(content_disposition, "inline")) - ; /* Use the class we've got. */ - else - class = (MimeObjectClass *)&mimeExternalObjectClass; - - FREEIF(content_disposition); - obj = mime_new (class, hdrs, content_type); - - FAIL: - - /* If we decided to ignore the content-type in the headers of this object - (see above) then make sure that our new content-type is stored in the - object itself. (Or free it, if we're in an out-of-memory situation.) - */ - if (override_content_type) - { - if (obj) - { - FREEIF(obj->content_type); - obj->content_type = override_content_type; - } - else - { - XP_FREE(override_content_type); - } - } - - return obj; -} - - - -static int mime_classinit_1(MimeObjectClass *class, MimeObjectClass *target); - -static int -mime_classinit(MimeObjectClass *class) -{ - int status; - if (class->class_initialized) - return 0; - - XP_ASSERT(class->class_initialize); - if (!class->class_initialize) - return -1; - - /* First initialize the superclass. - */ - if (class->superclass && !class->superclass->class_initialized) - { - status = mime_classinit(class->superclass); - if (status < 0) return status; - } - - /* Now run each of the superclass-init procedures in turn, - parentmost-first. */ - status = mime_classinit_1(class, class); - if (status < 0) return status; - - /* Now we're done. */ - class->class_initialized = TRUE; - return 0; -} - -static int -mime_classinit_1(MimeObjectClass *class, MimeObjectClass *target) -{ - int status; - if (class->superclass) - { - status = mime_classinit_1(class->superclass, target); - if (status < 0) return status; - } - return class->class_initialize(target); -} - - -XP_Bool -mime_subclass_p(MimeObjectClass *child, MimeObjectClass *parent) -{ - if (child == parent) - return TRUE; - else if (!child->superclass) - return FALSE; - else - return mime_subclass_p(child->superclass, parent); -} - -XP_Bool -mime_typep(MimeObject *obj, MimeObjectClass *class) -{ - return mime_subclass_p(obj->class, class); -} - - - -/* URL munging - */ - - -/* Returns a string describing the location of the part (like "2.5.3"). - This is not a full URL, just a part-number. - */ -char * -mime_part_address(MimeObject *obj) -{ - if (!obj->parent) - return XP_STRDUP("0"); - else - { - /* Find this object in its parent. */ - int32 i, j = -1; - char buf [20]; - char *higher = 0; - MimeContainer *cont = (MimeContainer *) obj->parent; - XP_ASSERT(mime_typep(obj->parent, - (MimeObjectClass *)&mimeContainerClass)); - for (i = 0; i < cont->nchildren; i++) - if (cont->children[i] == obj) - { - j = i+1; - break; - } - if (j == -1) - { - XP_ASSERT(0); - return 0; - } - - XP_SPRINTF(buf, "%ld", j); - if (obj->parent->parent) - { - higher = mime_part_address(obj->parent); - if (!higher) return 0; /* MK_OUT_OF_MEMORY */ - } - - if (!higher) - return XP_STRDUP(buf); - else - { - char *s = XP_ALLOC(XP_STRLEN(higher) + XP_STRLEN(buf) + 3); - if (!s) - { - XP_FREE(higher); - return 0; /* MK_OUT_OF_MEMORY */ - } - XP_STRCPY(s, higher); - XP_STRCAT(s, "."); - XP_STRCAT(s, buf); - XP_FREE(higher); - return s; - } - } -} - - -/* Returns a string describing the location of the *IMAP* part (like "2.5.3"). - This is not a full URL, just a part-number. - This part is explicitly passed in the X-Mozilla-IMAP-Part header. - Return value must be freed by the caller. - */ -char * -mime_imap_part_address(MimeObject *obj) -{ - char *imap_part = 0; - if (!obj || !obj->headers) - return 0; - - imap_part = MimeHeaders_get(obj->headers, - IMAP_EXTERNAL_CONTENT_HEADER, FALSE, FALSE); - - return imap_part; -} - -HG09851 -#ifdef MOZ_SECURITY -HG09852 -#endif /* MOZ_SECURITY */ -HG09853 -HG09854 - - -/* Puts a part-number into a URL. If append_p is true, then the part number - is appended to any existing part-number already in that URL; otherwise, - it replaces it. - */ -char * -mime_set_url_part(const char *url, char *part, XP_Bool append_p) -{ - const char *part_begin = 0; - const char *part_end = 0; - XP_Bool got_q = FALSE; - const char *s; - char *result; - - for (s = url; *s; s++) - { - if (*s == '?') - { - got_q = TRUE; - if (!strncasecomp(s, "?part=", 6)) - part_begin = (s += 6); - } - else if (got_q && *s == '&' && !strncasecomp(s, "&part=", 6)) - part_begin = (s += 6); - - if (part_begin) - { - for (; (*s && *s != '?' && *s != '&'); s++) - ; - part_end = s; - break; - } - } - - result = (char *) XP_ALLOC(XP_STRLEN(url) + XP_STRLEN(part) + 10); - if (!result) return 0; - - if (part_begin) - { - if (append_p) - { - XP_MEMCPY(result, url, part_end - url); - result [part_end - url] = '.'; - result [part_end - url + 1] = 0; - } - else - { - XP_MEMCPY(result, url, part_begin - url); - result [part_begin - url] = 0; - } - } - else - { - XP_STRCPY(result, url); - if (got_q) - XP_STRCAT(result, "&part="); - else - XP_STRCAT(result, "?part="); - } - - XP_STRCAT(result, part); - - if (part_end && *part_end) - XP_STRCAT(result, part_end); - - /* Semi-broken kludge to omit a trailing "?part=0". */ - { - int L = XP_STRLEN(result); - if (L > 6 && - (result[L-7] == '?' || result[L-7] == '&') && - !XP_STRCMP("part=0", result + L - 6)) - result[L-7] = 0; - } - - return result; -} - - - -/* Puts an *IMAP* part-number into a URL. - */ -char * -mime_set_url_imap_part(const char *url, char *imappart, char *libmimepart) -{ - char *result = (char *) XP_ALLOC(XP_STRLEN(url) + XP_STRLEN(imappart) + XP_STRLEN(libmimepart) + 17); - if (!result) return 0; - - XP_STRCPY(result, url); - XP_STRCAT(result, "/;section="); - XP_STRCAT(result, imappart); - XP_STRCAT(result, "&part="); - XP_STRCAT(result, libmimepart); - result[XP_STRLEN(result)] = 0; - - return result; -} - - -/* Given a part ID, looks through the MimeObject tree for a sub-part whose ID - number matches, and returns the MimeObject (else NULL.) - (part is not a URL -- it's of the form "1.3.5".) - */ -MimeObject * -mime_address_to_part(const char *part, MimeObject *obj) -{ - /* Note: this is an N^2 operation, but the number of parts in a message - shouldn't ever be large enough that this really matters... */ - - XP_Bool match; - - if (!part || !*part) - { - match = !obj->parent; - } - else - { - char *part2 = mime_part_address(obj); - if (!part2) return 0; /* MK_OUT_OF_MEMORY */ - match = !XP_STRCMP(part, part2); - XP_FREE(part2); - } - - if (match) - { - /* These are the droids we're looking for. */ - return obj; - } - else if (!mime_typep(obj, (MimeObjectClass *) &mimeContainerClass)) - { - /* Not a container, pull up, pull up! */ - return 0; - } - else - { - int32 i; - MimeContainer *cont = (MimeContainer *) obj; - for (i = 0; i < cont->nchildren; i++) - { - MimeObject *o2 = mime_address_to_part(part, cont->children[i]); - if (o2) return o2; - } - return 0; - } -} - -/* Given a part ID, looks through the MimeObject tree for a sub-part whose ID - number matches; if one is found, returns the Content-Name of that part. - Else returns NULL. (part is not a URL -- it's of the form "1.3.5".) - */ -char * -mime_find_content_type_of_part(const char *part, MimeObject *obj) -{ - char *result = 0; - - obj = mime_address_to_part(part, obj); - if (!obj) return 0; - - result = (obj->headers ? MimeHeaders_get(obj->headers, HEADER_CONTENT_TYPE, TRUE, FALSE) : 0); - - return result; -} - -/* Given a part ID, looks through the MimeObject tree for a sub-part whose ID - number matches; if one is found, returns the Content-Name of that part. - Else returns NULL. (part is not a URL -- it's of the form "1.3.5".) - */ -char * -mime_find_suggested_name_of_part(const char *part, MimeObject *obj) -{ - char *result = 0; - - obj = mime_address_to_part(part, obj); - if (!obj) return 0; - - result = (obj->headers ? MimeHeaders_get_name(obj->headers) : 0); - - /* If this part doesn't have a name, but this part is one fork of an - AppleDouble, and the AppleDouble itself has a name, then use that. */ - if (!result && - obj->parent && - obj->parent->headers && - mime_typep(obj->parent, - (MimeObjectClass *) &mimeMultipartAppleDoubleClass)) - result = MimeHeaders_get_name(obj->parent->headers); - - /* Else, if this part is itself an AppleDouble, and one of its children - has a name, then use that (check data fork first, then resource.) */ - if (!result && - mime_typep(obj, (MimeObjectClass *) &mimeMultipartAppleDoubleClass)) - { - MimeContainer *cont = (MimeContainer *) obj; - if (cont->nchildren > 1 && - cont->children[1] && - cont->children[1]->headers) - result = MimeHeaders_get_name(cont->children[1]->headers); - - if (!result && - cont->nchildren > 0 && - cont->children[0] && - cont->children[0]->headers) - result = MimeHeaders_get_name(cont->children[0]->headers); - } - - /* Ok, now we have the suggested name, if any. - Now we remove any extensions that correspond to the - Content-Transfer-Encoding. For example, if we see the headers - - Content-Type: text/plain - Content-Disposition: inline; filename=foo.text.uue - Content-Transfer-Encoding: x-uuencode - - then we would look up (in mime.types) the file extensions which are - associated with the x-uuencode encoding, find that "uue" is one of - them, and remove that from the end of the file name, thus returning - "foo.text" as the name. This is because, by the time this file ends - up on disk, its content-transfer-encoding will have been removed; - therefore, we should suggest a file name that indicates that. - */ - if (result && obj->encoding && *obj->encoding) - { - int32 L = XP_STRLEN(result); - const char **exts = 0; - - /* - I'd like to ask the mime.types file, "what extensions correspond - to obj->encoding (which happens to be "x-uuencode") but doing that - in a non-sphagetti way would require brain surgery. So, since - currently uuencode is the only content-transfer-encoding which we - understand which traditionally has an extension, we just special- - case it here! Icepicks in my forehead! - - Note that it's special-cased in a similar way in libmsg/compose.c. - */ - if (!strcasecomp(obj->encoding, ENCODING_UUENCODE)) - { - static const char *uue_exts[] = { "uu", "uue", 0 }; - exts = uue_exts; - } - - while (exts && *exts) - { - const char *ext = *exts; - int32 L2 = XP_STRLEN(ext); - if (L > L2 + 1 && /* long enough */ - result[L - L2 - 1] == '.' && /* '.' in right place*/ - !strcasecomp(ext, result + (L - L2))) /* ext matches */ - { - result[L - L2 - 1] = 0; /* truncate at '.' and stop. */ - break; - } - exts++; - } - } - - return result; -} - - - -/* Parse the various "?" options off the URL and into the options struct. - */ -int -mime_parse_url_options(const char *url, MimeDisplayOptions *options) -{ - const char *q; - MimeHeadersState default_headers = options->headers; - - if (!url || !*url) return 0; - if (!options) return 0; - - q = XP_STRRCHR (url, '?'); - if (! q) return 0; - q++; - while (*q) - { - const char *end, *value, *name_end; - for (end = q; *end && *end != '&'; end++) - ; - for (value = q; *value != '=' && value < end; value++) - ; - name_end = value; - if (value < end) value++; - if (name_end <= q) - ; - else if (!strncasecomp ("headers", q, name_end - q)) - { - if (end > value && !strncasecomp ("all", value, end - value)) - options->headers = MimeHeadersAll; - else if (end > value && !strncasecomp ("some", value, end - value)) - options->headers = MimeHeadersSome; - else if (end > value && !strncasecomp ("micro", value, end - value)) - options->headers = MimeHeadersMicro; - else if (end > value && !strncasecomp ("cite", value, end - value)) - options->headers = MimeHeadersCitation; - else if (end > value && !strncasecomp ("citation", value, end-value)) - options->headers = MimeHeadersCitation; - else - options->headers = default_headers; - } - else if (!strncasecomp ("part", q, name_end - q)) - { - FREEIF (options->part_to_load); - if (end > value) - { - options->part_to_load = (char *) XP_ALLOC(end - value + 1); - if (!options->part_to_load) - return MK_OUT_OF_MEMORY; - XP_MEMCPY(options->part_to_load, value, end-value); - options->part_to_load[end-value] = 0; - } - } - else if (!strncasecomp ("rot13", q, name_end - q)) - { - if (end <= value || !strncasecomp ("true", value, end - value)) - options->rot13_p = TRUE; - else - options->rot13_p = FALSE; - } - else if (!strncasecomp ("inline", q, name_end - q)) - { - if (end <= value || !strncasecomp ("true", value, end - value)) - options->no_inline_p = FALSE; - else - options->no_inline_p = TRUE; - } - - q = end; - if (*q) - q++; - } - - - /* Compatibility with the "?part=" syntax used in the old (Mozilla 2.0) - MIME parser. - - Basically, the problem is that the old part-numbering code was totally - busted: here's a comparison of the old and new numberings with a pair - of hypothetical messages (one with a single part, and one with nested - containers.) - NEW: OLD: OR: - message/rfc822 - image/jpeg 1 0 0 - - message/rfc822 - multipart/mixed 1 0 0 - text/plain 1.1 1 1 - image/jpeg 1.2 2 2 - message/rfc822 1.3 - 3 - text/plain 1.3.1 3 - - message/rfc822 1.4 - 4 - multipart/mixed 1.4.1 4 - - text/plain 1.4.1.1 4.1 - - image/jpeg 1.4.1.2 4.2 - - text/plain 1.5 5 5 - - The "NEW" column is how the current code counts. The "OLD" column is - what "?part=" references would do in 3.0b4 and earlier; you'll see that - you couldn't directly refer to the child message/rfc822 objects at all! - But that's when it got really weird, because if you turned on - "Attachments As Links" (or used a URL like "?inline=false&part=...") - then you got a totally different numbering system (seen in the "OR" - column.) Gag! - - So, the problem is, ClariNet had been using these part numbers in their - HTML news feeds, as a sleazy way of transmitting both complex HTML layouts - and images using NNTP as transport, without invoking HTTP. - - The following clause is to provide some small amount of backward - compatibility. By looking at that table, one can see that in the new - model, "part=0" has no meaning, and neither does "part=2" or "part=3" - and so on. - - "part=1" is ambiguous between the old and new way, as is any part - specification that has a "." in it. - - So, the compatibility hack we do here is: if the part is "0", then map - that to "1". And if the part is >= "2", then prepend "1." to it (so that - we map "2" to "1.2", and "3" to "1.3".) - - This leaves the URLs compatible in the cases of: - - = single part messages - = references to elements of a top-level multipart except the first - - and leaves them incompatible for: - - = the first part of a top-level multipart - = all elements deeper than the outermost part - - Life s#$%s when you don't properly think out things that end up turning - into de-facto standards... - */ - if (options->part_to_load && - !XP_STRCHR(options->part_to_load, '.')) /* doesn't contain a dot */ - { - if (!XP_STRCMP(options->part_to_load, "0")) /* 0 */ - { - XP_FREE(options->part_to_load); - options->part_to_load = XP_STRDUP("1"); - if (!options->part_to_load) - return MK_OUT_OF_MEMORY; - } - else if (XP_STRCMP(options->part_to_load, "1")) /* not 1 */ - { - const char *prefix = "1."; - char *s = (char *) XP_ALLOC(XP_STRLEN(options->part_to_load) + - XP_STRLEN(prefix) + 1); - if (!s) return MK_OUT_OF_MEMORY; - XP_STRCPY(s, prefix); - XP_STRCAT(s, options->part_to_load); - XP_FREE(options->part_to_load); - options->part_to_load = s; - } - } - - - return 0; -} - - -/* Some output-generation utility functions... - */ - -int -MimeOptions_write(MimeDisplayOptions *opt, char *data, int32 length, - XP_Bool user_visible_p) -{ - int status = 0; - void* closure = 0; - if (!opt || !opt->output_fn || !opt->state) - return 0; - - closure = opt->output_closure; - if (!closure) closure = opt->stream_closure; - - XP_ASSERT(opt->state->first_data_written_p); - - if (opt->state->separator_queued_p && user_visible_p) - { - opt->state->separator_queued_p = FALSE; - if (opt->state->separator_suppressed_p) - opt->state->separator_suppressed_p = FALSE; - else - { - char sep[] = "<HR WIDTH=\"90%\" SIZE=4>"; - int status = opt->output_fn(sep, XP_STRLEN(sep), closure); - opt->state->separator_suppressed_p = FALSE; - if (status < 0) return status; - } - } - if (user_visible_p) - opt->state->separator_suppressed_p = FALSE; - - if (length > 0) - { - status = opt->output_fn(data, length, closure); - if (status < 0) return status; - } - - return 0; -} - -int -MimeObject_write(MimeObject *obj, char *output, int32 length, - XP_Bool user_visible_p) -{ - if (!obj->output_p) return 0; - - if (!obj->options->state->first_data_written_p) - { - int status = MimeObject_output_init(obj, 0); - if (status < 0) return status; - XP_ASSERT(obj->options->state->first_data_written_p); - } - - return MimeOptions_write(obj->options, output, length, user_visible_p); -} - -int -MimeObject_write_separator(MimeObject *obj) -{ - if (obj->options && obj->options->state) - obj->options->state->separator_queued_p = TRUE; - return 0; -} - -int -MimeObject_output_init(MimeObject *obj, const char *content_type) -{ - if (obj && - obj->options && - obj->options->state && - !obj->options->state->first_data_written_p) - { - int status; - const char *charset = 0; - char *name = 0, *x_mac_type = 0, *x_mac_creator = 0; - - if (!obj->options->output_init_fn) - { - obj->options->state->first_data_written_p = TRUE; - return 0; - } - - if (obj->headers) - { - char *ct; - name = MimeHeaders_get_name(obj->headers); - - ct = MimeHeaders_get(obj->headers, HEADER_CONTENT_TYPE, - FALSE, FALSE); - if (ct) - { - x_mac_type = MimeHeaders_get_parameter(ct,PARAM_X_MAC_TYPE, NULL, NULL); - x_mac_creator= MimeHeaders_get_parameter(ct,PARAM_X_MAC_CREATOR, NULL, NULL); - FREEIF(obj->options->default_charset); - obj->options->default_charset = MimeHeaders_get_parameter(ct, "charset", NULL, NULL); - XP_FREE(ct); - } - } - - if (mime_typep(obj, (MimeObjectClass *) &mimeInlineTextClass)) - charset = ((MimeInlineText *)obj)->charset; - - if (!content_type) - content_type = obj->content_type; - if (!content_type) - content_type = TEXT_PLAIN; - - status = obj->options->output_init_fn (content_type, charset, name, - x_mac_type, x_mac_creator, - obj->options->stream_closure); - FREEIF(name); - FREEIF(x_mac_type); - FREEIF(x_mac_creator); - obj->options->state->first_data_written_p = TRUE; - return status; - } - return 0; -} diff --git a/mozilla/lib/libmime/mimei.h b/mozilla/lib/libmime/mimei.h deleted file mode 100644 index 6dcb20664ac..00000000000 --- a/mozilla/lib/libmime/mimei.h +++ /dev/null @@ -1,424 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimei.h --- class definitions for the MIME parser, version 2. - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEI_H_ -#define _MIMEI_H_ - -/* - This module, libmime, implements a general-purpose MIME parser. - One of the methods provided by this parser is the ability to emit - an HTML representation of it. - - All Mozilla-specific code is (and should remain) isolated in the - file mimemoz.c. Generally, if the code involves images, netlib - streams, or MWContexts, it should be in mimemoz.c instead of in - the main body of the MIME parser. - - The parser is object-oriented and fully buzzword-compliant. - There is a class for each MIME type, and each class is responsible - for parsing itself, and/or handing the input data off to one of its - child objects. - - The class hierarchy is: - - MimeObject (abstract) - | - |--- MimeContainer (abstract) - | | - | |--- MimeMultipart (abstract) - | | | - | | |--- MimeMultipartMixed - | | | - | | |--- MimeMultipartDigest - | | | - | | |--- MimeMultipartParallel - | | | - | | |--- MimeMultipartAlternative - | | | - | | |--- MimeMultipartRelated - | | | - | | |--- MimeMultipartAppleDouble - | | | - | | |--- MimeSunAttachment - | | | - | | |--- MimeMultipartSigned (abstract) - | | | - | | |--- - | | - | |--- MimeEncrypted (abstract) - | | | - | | |--- - | | - | |--- MimeMessage - | | - | |--- MimeUntypedText - | - |--- MimeLeaf (abstract) - | | - | |--- MimeInlineText (abstract) - | | | - | | |--- MimeInlineTextPlain - | | | - | | |--- MimeInlineTextHTML - | | | - | | |--- MimeInlineTextRichtext - | | | | - | | | |--- MimeInlineTextEnriched - | | | - | | |--- MimeInlineTextVCard - | | | - | | |--- MimeInlineTextCalendar - | | - | |--- MimeInlineImage - | | - | |--- MimeExternalObject - | - |--- MimeExternalBody - - ========================================================================= - The definition of these classes is somewhat idiosyncratic, since I defined - my own small object system, instead of giving the C++ virus another foothold. - (I would have liked to have written this in Java, but our runtime isn't - quite ready for prime time yet.) - - There is one header file and one source file for each class (for example, - the MimeInlineText class is defined in "mimetext.h" and "mimetext.c".) - Each header file follows the following boiler-plate form: - - TYPEDEFS: these come first to avoid circular dependencies. - - typedef struct FoobarClass FoobarClass; - typedef struct Foobar Foobar; - - CLASS DECLARATION: - Theis structure defines the callback routines and other per-class data - of the class defined in this module. - - struct FoobarClass { - ParentClass superclass; - ...any callbacks or class-variables... - }; - - CLASS DEFINITION: - This variable holds an instance of the one-and-only class record; the - various instances of this class point to this object. (One interrogates - the type of an instance by comparing the value of its class pointer with - the address of this variable.) - - extern FoobarClass foobarClass; - - INSTANCE DECLARATION: - Theis structure defines the per-instance data of an object, and a pointer - to the corresponding class record. - - struct Foobar { - Parent parent; - ...any instance variables... - }; - - Then, in the corresponding .c file, the following structure is used: - - CLASS DEFINITION: - First we pull in the appropriate include file (which includes all necessary - include files for the parent classes) and then we define the class object - using the MimeDefClass macro: - - #include "foobar.h" - #define MIME_SUPERCLASS parentlClass - MimeDefClass(Foobar, FoobarClass, foobarClass, &MIME_SUPERCLASS); - - The definition of MIME_SUPERCLASS is just to move most of the knowlege of the - exact class hierarchy up to the file's header, instead of it being scattered - through the various methods; see below. - - METHOD DECLARATIONS: - We will be putting function pointers into the class object, so we declare - them here. They can generally all be static, since nobody outside of this - file needs to reference them by name; all references to these routines should - be through the class object. - - extern int FoobarMethod(Foobar *); - ...etc... - - CLASS INITIALIZATION FUNCTION: - The MimeDefClass macro expects us to define a function which will finish up - any initialization of the class object that needs to happen before the first - time it is instantiated. Its name must be of the form "<class>Initialize", - and it should initialize the various method slots in the class as - appropriate. Any methods or class variables which this class does not wish - to override will be automatically inherited from the parent class (by virtue - of its class-initialization function having been run first.) Each class - object will only be initialized once. - - static int - FoobarClassInitialize(FoobarClass *class) - { - class->method = FoobarMethod. - ...etc... - } - - METHOD DEFINITIONS: - Next come the definitions of the methods we referred to in the class-init - function. The way to access earlier methods (methods defined on the - superclass) is to simply extract them from the superclass's object. - But note that you CANNOT get at methods by indirecting through - object->class->superclass: that will only work to one level, and will - go into a loop if some subclass tries to continue on this method. - - The easiest way to do this is to make use of the MIME_SUPERCLASS macro that - was defined at the top of the file, as shown below. The alternative to that - involves typing the literal name of the direct superclass of the class - defined in this file, which will be a maintenance headache if the class - hierarchy changes. If you use the MIME_SUPERCLASS idiom, then a textual - change is required in only one place if this class's superclass changes. - - static void - Foobar_finalize (MimeObject *object) - { - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize(object); // RIGHT - parentClass.whatnot.object.finalize(object); // (works...) - object->class->superclass->finalize(object); // WRONG!! - } - */ - -#include "libmime.h" -#include "mimehdrs.h" - -typedef struct MimeObject MimeObject; -typedef struct MimeObjectClass MimeObjectClass; - -#ifdef XP_WIN16 - /* Those winners who brought us the Win16 compiler seemed to be under - the impression that C is a case-insensitive language. How very. - */ -# define mimeObject mimeObject16 -# define mimeContainer mimeContainer16 -# define mimeMultipart mimeMultipart16 -# define mimeMultipartMixed mimeMultipartMixed16 -# define mimeMultipartDigest mimeMultipartDigest16 -# define mimeMultipartParallel mimeMultipartParallel16 -# define mimeMultipartAlternative mimeMultipartAlternative16 -# define mimeMultipartRelated mimeMultipartRelated16 -# define mimeMultipartAppleDouble mimeMultipartAppleDouble16 -# define mimeSunAttachment mimeSunAttachment16 -# define mimeMessage mimeMessage16 -# define mimeUntypedText mimeUntypedText16 -# define mimeLeaf mimeLeaf16 -# define mimeInlineText mimeInlineText16 -# define mimeInlineTextPlain mimeInlineTextPlain16 -# define mimeInlineTextHTML mimeInlineTextHTML16 -# define mimeInlineTextRichtext mimeInlineTextRichtext16 -# define mimeInlineTextEnriched mimeInlineTextEnriched16 -# define mimeInlineTextVCard mimeInlineTextVCard16 -# define mimeInlineTextCalendar mimeInlineTextCalendar16 -# define mimeInlineImage mimeInlineImage16 -# define mimeExternalObject mimeExternalObject16 -# define mimeExternalBody mimeExternalBody16 -#endif /* XP_WIN16 */ - - -/* (I don't pretend to understand this.) */ -#define cpp_stringify_noop_helper(x)#x -#define cpp_stringify(x) cpp_stringify_noop_helper(x) - - -/* Macro used for setting up class definitions. - */ -#define MimeDefClass(ITYPE,CTYPE,CVAR,CSUPER) \ - static int CTYPE##Initialize(CTYPE *); \ - CTYPE CVAR = { cpp_stringify(ITYPE), sizeof(ITYPE), \ - (MimeObjectClass *) CSUPER, \ - (int (*) (MimeObjectClass *)) CTYPE##Initialize, 0, } - - -/* Creates a new (subclass of) MimeObject of the given class, with the - given headers (which are copied.) - */ -extern MimeObject *mime_new (MimeObjectClass *class, MimeHeaders *hdrs, - const char *override_content_type); - - -/* Destroys a MimeObject (or subclass) and all data associated with it. - */ -extern void mime_free (MimeObject *object); - -/* Given a content-type string, finds and returns an appropriate subclass - of MimeObject. A class object is returned. If `exact_match_p' is true, - then only fully-known types will be returned; that is, if it is true, - then "text/x-unknown" will return MimeInlineTextPlainType, but if it is - false, it will return NULL. - */ -extern MimeObjectClass *mime_find_class (const char *content_type, - MimeHeaders *hdrs, - MimeDisplayOptions *opts, - XP_Bool exact_match_p); - -/* Given a content-type string, creates and returns an appropriate subclass - of MimeObject. The headers (from which the content-type was presumably - extracted) are copied. - */ -extern MimeObject *mime_create (const char *content_type, MimeHeaders *hdrs, - MimeDisplayOptions *opts); - - -/* Querying the type hierarchy */ -extern XP_Bool mime_subclass_p(MimeObjectClass *child, - MimeObjectClass *parent); -extern XP_Bool mime_typep(MimeObject *obj, MimeObjectClass *class); - -/* Returns a string describing the location of the part (like "2.5.3"). - This is not a full URL, just a part-number. - */ -extern char *mime_part_address(MimeObject *obj); - -/* Returns a string describing the location of the *IMAP* part (like "2.5.3"). - This is not a full URL, just a part-number. - This part is explicitly passed in the X-Mozilla-IMAP-Part header. - Return value must be freed by the caller. - */ -extern char *mime_imap_part_address(MimeObject *obj); - -/* Puts a part-number into a URL. If append_p is true, then the part number - is appended to any existing part-number already in that URL; otherwise, - it replaces it. - */ -extern char *mime_set_url_part(const char *url, char *part, XP_Bool append_p); - -/* Puts an *IMAP* part-number into a URL. - */ -extern char *mime_set_url_imap_part(const char *url, char *part, char *libmimepart); - - -/* Given a part ID, looks through the MimeObject tree for a sub-part whose ID - number matches, and returns the MimeObject (else NULL.) - (part is not a URL -- it's of the form "1.3.5".) - */ -extern MimeObject *mime_address_to_part(const char *part, MimeObject *obj); - - -/* Given a part ID, looks through the MimeObject tree for a sub-part whose ID - number matches; if one is found, returns the Content-Name of that part. - Else returns NULL. (part is not a URL -- it's of the form "1.3.5".) - */ -extern char *mime_find_suggested_name_of_part(const char *part, - MimeObject *obj); - -/* Given a part ID, looks through the MimeObject tree for a sub-part whose ID - number matches; if one is found, returns the Content-Name of that part. - Else returns NULL. (part is not a URL -- it's of the form "1.3.5".) - */ -extern char *mime_find_content_type_of_part(const char *part, MimeObject *obj); - -HG09856 - -/* Parse the various "?" options off the URL and into the options struct. - */ -extern int mime_parse_url_options(const char *url, MimeDisplayOptions *); - - -struct MimeParseStateObject { - - MimeObject *root; /* The outermost parser object. */ - - XP_Bool separator_queued_p; /* Whether a separator should be written out - before the next text is written (this lets - us write separators lazily, so that one - doesn't appear at the end, and so that more - than one don't appear in a row.) */ - - XP_Bool separator_suppressed_p; /* Whether the currently-queued separator - should not be printed; this is a kludge to - prevent seps from being printed just after - a header block... */ - - XP_Bool first_part_written_p; /* State used for the `Show Attachments As - Links' kludge. */ - - XP_Bool post_header_html_run_p; /* Whether we've run the - options->generate_post_header_html_fn */ - - XP_Bool first_data_written_p; /* State used for Mozilla lazy-stream- - creation evilness. */ - - XP_Bool decrypted_p; /* If options->decrypt_p is true, then this - will be set to indicate whether any - decryption did in fact occur. - */ -}; - - - -/* Some output-generation utility functions... - */ -extern int MimeObject_output_init(MimeObject *obj, const char *content_type); - -/* The `user_visible_p' argument says whether the output that has just been - written will cause characters or images to show up on the screen, that - is, it should be FALSE if the stuff being written is merely structural - HTML or whitespace ("<P>", "</TABLE>", etc.) This information is used - when making the decision of whether a separating <HR> is needed. - */ -extern int MimeObject_write(MimeObject *, char *data, int32 length, - XP_Bool user_visible_p); -extern int MimeOptions_write(MimeDisplayOptions *, - char *data, int32 length, - XP_Bool user_visible_p); - -/* Writes out the right kind of HR (or rather, queues it for writing.) */ -extern int MimeObject_write_separator(MimeObject *); - - -/* Random junk - */ - -extern int MK_OUT_OF_MEMORY; - -#ifdef FREEIF -# undef FREEIF -#endif -#define FREEIF(obj) do { if (obj) { XP_FREE (obj); obj = 0; }} while (0) - - -#ifndef MOZILLA_30 -/* Turn this on if you want to play with the idea of displaying icons in the - headers to represent attachments, and put icons next to each attachment so - you can easily save them without having to bring up the "as links" view. - Right now, this is all really half-baked, half-implemented, - half-thought-out, and so on. But the current "attachment panel" needs to be - destroyed, and this is the only hope. */ -#define JS_ATTACHMENT_MUMBO_JUMBO - -extern XP_Bool MimeObjectChildIsMessageBody(MimeObject *obj, - XP_Bool *isAlterOrRelated); - -#endif /* MOZILLA_30 */ - -/* Sends some mail, without user interaction. */ -extern int -MimeSendMessage(MimeDisplayOptions* options, char* to, char* subject, - char* otherheaders, char* body); - -#endif /* _MIMEI_H_ */ diff --git a/mozilla/lib/libmime/mimeiimg.c b/mozilla/lib/libmime/mimeiimg.c deleted file mode 100644 index 776c8175c3b..00000000000 --- a/mozilla/lib/libmime/mimeiimg.c +++ /dev/null @@ -1,215 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeiimg.c --- definition of the MimeInlineImage class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimeiimg.h" - -#define MIME_SUPERCLASS mimeLeafClass -MimeDefClass(MimeInlineImage, MimeInlineImageClass, - mimeInlineImageClass, &MIME_SUPERCLASS); - -static int MimeInlineImage_initialize (MimeObject *); -static void MimeInlineImage_finalize (MimeObject *); -static int MimeInlineImage_parse_begin (MimeObject *); -static int MimeInlineImage_parse_line (char *, int32, MimeObject *); -static int MimeInlineImage_parse_eof (MimeObject *, XP_Bool); -static int MimeInlineImage_parse_decoded_buffer (char *, int32, MimeObject *); - -static int -MimeInlineImageClassInitialize(MimeInlineImageClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeLeafClass *lclass = (MimeLeafClass *) class; - - XP_ASSERT(!oclass->class_initialized); - oclass->initialize = MimeInlineImage_initialize; - oclass->finalize = MimeInlineImage_finalize; - oclass->parse_begin = MimeInlineImage_parse_begin; - oclass->parse_line = MimeInlineImage_parse_line; - oclass->parse_eof = MimeInlineImage_parse_eof; - lclass->parse_decoded_buffer = MimeInlineImage_parse_decoded_buffer; - - return 0; -} - - -static int -MimeInlineImage_initialize (MimeObject *object) -{ - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(object); -} - -static void -MimeInlineImage_finalize (MimeObject *object) -{ - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize(object); -} - -static int -MimeInlineImage_parse_begin (MimeObject *obj) -{ - MimeInlineImage *img = (MimeInlineImage *) obj; - MimeInlineImageClass *class; - - int status; - - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_begin(obj); - if (status < 0) return status; - - if (!obj->output_p) return 0; - - if (!obj->options || !obj->options->output_fn) - return 0; - - class = (MimeInlineImageClass *) obj->class; - - if (obj->options && - obj->options->image_begin && - obj->options->write_html_p && - obj->options->image_write_buffer) - { - char *html, *part, *image_url; - const char *ct; - - part = mime_part_address(obj); - if (!part) return MK_OUT_OF_MEMORY; - image_url = mime_set_url_part(obj->options->url, part, TRUE); - if (!image_url) - { - XP_FREE(part); - return MK_OUT_OF_MEMORY; - } - XP_FREE(part); - - ct = obj->content_type; - if (!ct) ct = IMAGE_GIF; /* Can't happen? Close enough. */ - - img->image_data = - obj->options->image_begin(image_url, ct, obj->options->stream_closure); - XP_FREE(image_url); - - if (!img->image_data) return MK_OUT_OF_MEMORY; - - html = obj->options->make_image_html(img->image_data); - if (!html) return MK_OUT_OF_MEMORY; - - status = MimeObject_write(obj, html, XP_STRLEN(html), TRUE); - XP_FREE(html); - if (status < 0) return status; - } - - return 0; -} - - -static int -MimeInlineImage_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - MimeInlineImage *img = (MimeInlineImage *) obj; - int status; - if (obj->closed_p) return 0; - - /* Force out any buffered data from the superclass (the base64 decoder.) */ - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); - if (status < 0) abort_p = TRUE; - - if (img->image_data) - { - obj->options->image_end(img->image_data, - (status < 0 ? status : (abort_p ? -1 : 0))); - img->image_data = 0; - } - - return status; -} - - -static int -MimeInlineImage_parse_decoded_buffer (char *buf, int32 size, MimeObject *obj) -{ - /* This is called (by MimeLeafClass->parse_buffer) with blocks of data - that have already been base64-decoded. Pass this raw image data - along to the backend-specific image display code. - */ - MimeInlineImage *img = (MimeInlineImage *) obj; - int status; - - if (obj->output_p && - obj->options && - !obj->options->write_html_p) - { - /* in this case, we just want the raw data... - Make the stream, if it's not made, and dump the data out. - */ - - if (!obj->options->state->first_data_written_p) - { - status = MimeObject_output_init(obj, 0); - if (status < 0) return status; - XP_ASSERT(obj->options->state->first_data_written_p); - } - - return MimeObject_write(obj, buf, size, TRUE); - } - - - if (!obj->options || - !obj->options->image_write_buffer) - return 0; - - /* If we don't have any image data, the image_end method must have already - been called, so don't call image_write_buffer again. */ - if (!img->image_data) return 0; - - /* Hand this data off to the backend-specific image display stream. - */ - status = obj->options->image_write_buffer (buf, size, img->image_data); - - /* If the image display stream fails, then close the stream - but do not - return the failure status, and do not give up on parsing this object. - Just because the image data was corrupt doesn't mean we need to give up - on the whole document; we can continue by just skipping over the rest of - this part, and letting our parent continue. - */ - if (status < 0) - { - obj->options->image_end (img->image_data, status); - img->image_data = 0; - status = 0; - } - - return status; -} - - -static int -MimeInlineImage_parse_line (char *line, int32 length, MimeObject *obj) -{ - /* This method should never be called (inline images do no line buffering). - */ - XP_ASSERT(0); - return -1; -} diff --git a/mozilla/lib/libmime/mimeiimg.h b/mozilla/lib/libmime/mimeiimg.h deleted file mode 100644 index 1d612e38165..00000000000 --- a/mozilla/lib/libmime/mimeiimg.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeiimg.h --- definition of the MimeInlineImage class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEIIMG_H_ -#define _MIMEIIMG_H_ - -#include "mimeleaf.h" - -/* The MimeInlineImage class implements those MIME image types which can be - displayed inline (currently image/gif, image/jpeg, and image/xbm.) - */ - -typedef struct MimeInlineImageClass MimeInlineImageClass; -typedef struct MimeInlineImage MimeInlineImage; - -struct MimeInlineImageClass { - MimeLeafClass leaf; -}; - -extern MimeInlineImageClass mimeInlineImageClass; - -struct MimeInlineImage { - MimeLeaf leaf; - - /* Opaque data object for the backend-specific inline-image-display code - (internal-external-reconnect nastiness.) */ - void *image_data; -}; - -#endif /* _MIMEIIMG_H_ */ diff --git a/mozilla/lib/libmime/mimeleaf.c b/mozilla/lib/libmime/mimeleaf.c deleted file mode 100644 index 9d17056c636..00000000000 --- a/mozilla/lib/libmime/mimeleaf.c +++ /dev/null @@ -1,190 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeleaf.c --- definition of the MimeLeaf class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimeleaf.h" - -#define MIME_SUPERCLASS mimeObjectClass -MimeDefClass(MimeLeaf, MimeLeafClass, mimeLeafClass, &MIME_SUPERCLASS); - -static int MimeLeaf_initialize (MimeObject *); -static void MimeLeaf_finalize (MimeObject *); -static int MimeLeaf_parse_begin (MimeObject *); -static int MimeLeaf_parse_buffer (char *, int32, MimeObject *); -static int MimeLeaf_parse_line (char *, int32, MimeObject *); -static int MimeLeaf_parse_eof (MimeObject *, XP_Bool); -static XP_Bool MimeLeaf_displayable_inline_p (MimeObjectClass *class, - MimeHeaders *hdrs); - -static int -MimeLeafClassInitialize(MimeLeafClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - XP_ASSERT(!oclass->class_initialized); - oclass->initialize = MimeLeaf_initialize; - oclass->finalize = MimeLeaf_finalize; - oclass->parse_begin = MimeLeaf_parse_begin; - oclass->parse_buffer = MimeLeaf_parse_buffer; - oclass->parse_line = MimeLeaf_parse_line; - oclass->parse_eof = MimeLeaf_parse_eof; - oclass->displayable_inline_p = MimeLeaf_displayable_inline_p; - - /* Default `parse_buffer' method is one which line-buffers the now-decoded - data and passes it on to `parse_line'. (We snarf the implementation of - this method from our superclass's implementation of `parse_buffer', which - inherited it from MimeObject.) - */ - class->parse_decoded_buffer = - ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_buffer; - - return 0; -} - - -static int -MimeLeaf_initialize (MimeObject *obj) -{ - /* This is an abstract class; it shouldn't be directly instanciated. */ - XP_ASSERT(obj->class != (MimeObjectClass *) &mimeLeafClass); - - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(obj); -} - - -static void -MimeLeaf_finalize (MimeObject *object) -{ - MimeLeaf *leaf = (MimeLeaf *)object; - object->class->parse_eof (object, FALSE); - - /* Free the decoder data, if it's still around. It was probably freed - in MimeLeaf_parse_eof(), but just in case... */ - if (leaf->decoder_data) - { - MimeDecoderDestroy(leaf->decoder_data, TRUE); - leaf->decoder_data = 0; - } - - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize (object); -} - - -static int -MimeLeaf_parse_begin (MimeObject *obj) -{ - MimeLeaf *leaf = (MimeLeaf *) obj; - MimeDecoderData *(*fn) (int (*) (const char*, int32, void*), void*) = 0; - - /* Initialize a decoder if necessary. - */ - if (!obj->encoding) - ; - else if (!strcasecomp(obj->encoding, ENCODING_BASE64)) - fn = &MimeB64DecoderInit; - else if (!strcasecomp(obj->encoding, ENCODING_QUOTED_PRINTABLE)) - fn = &MimeQPDecoderInit; - else if (!strcasecomp(obj->encoding, ENCODING_UUENCODE) || - !strcasecomp(obj->encoding, ENCODING_UUENCODE2) || - !strcasecomp(obj->encoding, ENCODING_UUENCODE3) || - !strcasecomp(obj->encoding, ENCODING_UUENCODE4)) - fn = &MimeUUDecoderInit; - - if (fn) - { - leaf->decoder_data = - fn (/* The (int (*) ...) cast is to turn the `void' argument - into `MimeObject'. */ - ((int (*) (const char *, int32, void *)) - ((MimeLeafClass *)obj->class)->parse_decoded_buffer), - obj); - - if (!leaf->decoder_data) - return MK_OUT_OF_MEMORY; - } - - return ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_begin(obj); -} - - -static int -MimeLeaf_parse_buffer (char *buffer, int32 size, MimeObject *obj) -{ - MimeLeaf *leaf = (MimeLeaf *) obj; - - XP_ASSERT(!obj->closed_p); - if (obj->closed_p) return -1; - - /* If we're not supposed to write this object, bug out now. - */ - if (!obj->output_p || - !obj->options || - !obj->options->output_fn) - return 0; - - if (leaf->decoder_data) - return MimeDecoderWrite (leaf->decoder_data, buffer, size); - else - return ((MimeLeafClass *)obj->class)->parse_decoded_buffer (buffer, size, - obj); -} - -static int -MimeLeaf_parse_line (char *line, int32 length, MimeObject *obj) -{ - XP_ASSERT(0); - /* This method shouldn't ever be called. */ - return -1; -} - - -static int -MimeLeaf_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - MimeLeaf *leaf = (MimeLeaf *) obj; - if (obj->closed_p) return 0; - - /* Close off the decoder, to cause it to give up any buffered data that - it is still holding. - */ - if (leaf->decoder_data) - { - int status = MimeDecoderDestroy(leaf->decoder_data, FALSE); - leaf->decoder_data = 0; - if (status < 0) return status; - } - - /* Now run the superclass's parse_eof, which will force out the line - buffer (which we may have just repopulated, above.) - */ - return ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof (obj, abort_p); -} - - -static XP_Bool -MimeLeaf_displayable_inline_p (MimeObjectClass *class, MimeHeaders *hdrs) -{ - return TRUE; -} diff --git a/mozilla/lib/libmime/mimeleaf.h b/mozilla/lib/libmime/mimeleaf.h deleted file mode 100644 index dff571bb777..00000000000 --- a/mozilla/lib/libmime/mimeleaf.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeleaf.h --- definition of the MimeLeaf class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMELEAF_H_ -#define _MIMELEAF_H_ - -#include "mimeobj.h" -#include "mimeenc.h" - -/* MimeLeaf is the class for the objects representing all MIME types which - are not containers for other MIME objects. The implication of this is - that they are MIME types which can have Content-Transfer-Encodings - applied to their data. This class provides that service in its - parse_buffer() method: - - int (*parse_decoded_buffer) (char *buf, int32 size, MimeObject *obj) - - The `parse_buffer' method of MimeLeaf passes each block of data through - the appropriate decoder (if any) and then calls `parse_decoded_buffer' - on each block (not line) of output. - - The default `parse_decoded_buffer' method of MimeLeaf line-buffers the - now-decoded data, handing each line to the `parse_line' method in turn. - If different behavior is desired (for example, if a class wants access - to the decoded data before it is line-buffered) the `parse_decoded_buffer' - method should be overridden. (MimeExternalObject does this.) - */ - -typedef struct MimeLeafClass MimeLeafClass; -typedef struct MimeLeaf MimeLeaf; - -struct MimeLeafClass { - MimeObjectClass object; - /* This is the callback that is handed to the decoder. */ - int (*parse_decoded_buffer) (char *buf, int32 size, MimeObject *obj); -}; - -extern MimeLeafClass mimeLeafClass; - -struct MimeLeaf { - MimeObject object; /* superclass variables */ - - /* If we're doing Base64, Quoted-Printable, or UU decoding, this is the - state object for the decoder. */ - MimeDecoderData *decoder_data; -}; - -#endif /* _MIMELEAF_H_ */ diff --git a/mozilla/lib/libmime/mimemalt.c b/mozilla/lib/libmime/mimemalt.c deleted file mode 100644 index 316917bc41b..00000000000 --- a/mozilla/lib/libmime/mimemalt.c +++ /dev/null @@ -1,331 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemalt.c --- definition of the MimeMultipartAlternative class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimemalt.h" - -#define MIME_SUPERCLASS mimeMultipartClass -MimeDefClass(MimeMultipartAlternative, MimeMultipartAlternativeClass, - mimeMultipartAlternativeClass, &MIME_SUPERCLASS); - -static int MimeMultipartAlternative_initialize (MimeObject *); -static void MimeMultipartAlternative_finalize (MimeObject *); -static int MimeMultipartAlternative_parse_eof (MimeObject *, XP_Bool); -static int MimeMultipartAlternative_create_child(MimeObject *); -static int MimeMultipartAlternative_parse_child_line (MimeObject *, char *, - int32, XP_Bool); -static int MimeMultipartAlternative_close_child(MimeObject *); - -static XP_Bool MimeMultipartAlternative_display_part_p(MimeObject *self, - MimeHeaders *sub_hdrs); -static int MimeMultipartAlternative_discard_cached_part(MimeObject *); -static int MimeMultipartAlternative_display_cached_part(MimeObject *); - -static int -MimeMultipartAlternativeClassInitialize(MimeMultipartAlternativeClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeMultipartClass *mclass = (MimeMultipartClass *) class; - XP_ASSERT(!oclass->class_initialized); - oclass->initialize = MimeMultipartAlternative_initialize; - oclass->finalize = MimeMultipartAlternative_finalize; - oclass->parse_eof = MimeMultipartAlternative_parse_eof; - mclass->create_child = MimeMultipartAlternative_create_child; - mclass->parse_child_line = MimeMultipartAlternative_parse_child_line; - mclass->close_child = MimeMultipartAlternative_close_child; - return 0; -} - - -static int -MimeMultipartAlternative_initialize (MimeObject *obj) -{ - MimeMultipartAlternative *malt = (MimeMultipartAlternative *) obj; - - XP_ASSERT(!malt->part_buffer); - malt->part_buffer = MimePartBufferCreate(); - if (!malt->part_buffer) - return MK_OUT_OF_MEMORY; - - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(obj); -} - -static void -MimeMultipartAlternative_cleanup(MimeObject *obj) -{ - MimeMultipartAlternative *malt = (MimeMultipartAlternative *) obj; - if (malt->buffered_hdrs) - { - MimeHeaders_free(malt->buffered_hdrs); - malt->buffered_hdrs = 0; - } - if (malt->part_buffer) - { - MimePartBufferDestroy(malt->part_buffer); - malt->part_buffer = 0; - } -} - - -static void -MimeMultipartAlternative_finalize (MimeObject *obj) -{ - MimeMultipartAlternative_cleanup(obj); - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize(obj); -} - - -static int -MimeMultipartAlternative_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - MimeMultipartAlternative *malt = (MimeMultipartAlternative *) obj; - int status = 0; - - if (obj->closed_p) return 0; - - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); - if (status < 0) return status; - - /* If there's a cached part we haven't written out yet, do it now. - */ - if (malt->buffered_hdrs && !abort_p) - { - status = MimeMultipartAlternative_display_cached_part(obj); - if (status < 0) return status; - } - - MimeMultipartAlternative_cleanup(obj); - - return status; -} - - -static int -MimeMultipartAlternative_create_child(MimeObject *obj) -{ - MimeMultipart *mult = (MimeMultipart *) obj; - MimeMultipartAlternative *malt = (MimeMultipartAlternative *) obj; - - if (MimeMultipartAlternative_display_part_p (obj, mult->hdrs)) - { - /* If this part is potentially displayable, begin populating the cache - with it. If there's something in the cache already, discard it - first. (Just because this part is displayable doesn't mean we will - display it -- of two consecutive displayable parts, it is the second - one that gets displayed.) - */ - int status; - mult->state = MimeMultipartPartFirstLine; - - status = MimeMultipartAlternative_discard_cached_part(obj); - if (status < 0) return status; - - XP_ASSERT(!malt->buffered_hdrs); - malt->buffered_hdrs = MimeHeaders_copy(mult->hdrs); - if (!malt->buffered_hdrs) return MK_OUT_OF_MEMORY; - return 0; - } - else - { - /* If this part is not displayable, then we're done -- all that is left - to do is to flush out the part that is currently in the cache. - */ - mult->state = MimeMultipartEpilogue; - return MimeMultipartAlternative_display_cached_part(obj); - } -} - - -static int -MimeMultipartAlternative_parse_child_line (MimeObject *obj, - char *line, int32 length, - XP_Bool first_line_p) -{ - MimeMultipartAlternative *malt = (MimeMultipartAlternative *) obj; - - XP_ASSERT(malt->part_buffer); - if (!malt->part_buffer) return -1; - - /* Push this line into the buffer for later retrieval. */ - return MimePartBufferWrite (malt->part_buffer, line, length); -} - - -static int -MimeMultipartAlternative_close_child(MimeObject *obj) -{ - MimeMultipart *mult = (MimeMultipart *) obj; - MimeMultipartAlternative *malt = (MimeMultipartAlternative *) obj; - - /* XP_ASSERT(malt->part_buffer); Some Mac brokenness trips this... - if (!malt->part_buffer) return -1; */ - - if (malt->part_buffer) - MimePartBufferClose(malt->part_buffer); - - /* XP_ASSERT(mult->hdrs); I expect the Mac trips this too */ - if (mult->hdrs) - MimeHeaders_free(mult->hdrs); - mult->hdrs = 0; - - return 0; -} - - -static XP_Bool -MimeMultipartAlternative_display_part_p(MimeObject *self, - MimeHeaders *sub_hdrs) -{ - char *ct = MimeHeaders_get (sub_hdrs, HEADER_CONTENT_TYPE, TRUE, FALSE); - - /* RFC 1521 says: - Receiving user agents should pick and display the last format - they are capable of displaying. In the case where one of the - alternatives is itself of type "multipart" and contains unrecognized - sub-parts, the user agent may choose either to show that alternative, - an earlier alternative, or both. - - Ugh. If there is a multipart subtype of alternative, we simply show - that, without descending into it to determine if any of its sub-parts - are themselves unknown. - */ - - MimeObjectClass *class = mime_find_class (ct, sub_hdrs, self->options, TRUE); - XP_Bool result = (class - ? class->displayable_inline_p(class, sub_hdrs) - : FALSE); - FREEIF(ct); - return result; -} - -static int -MimeMultipartAlternative_discard_cached_part(MimeObject *obj) -{ - MimeMultipartAlternative *malt = (MimeMultipartAlternative *) obj; - - if (malt->buffered_hdrs) - { - MimeHeaders_free(malt->buffered_hdrs); - malt->buffered_hdrs = 0; - } - if (malt->part_buffer) - MimePartBufferReset (malt->part_buffer); - - return 0; -} - -static int -MimeMultipartAlternative_display_cached_part(MimeObject *obj) -{ - MimeMultipartAlternative *malt = (MimeMultipartAlternative *) obj; - int status; - - char *ct = (malt->buffered_hdrs - ? MimeHeaders_get (malt->buffered_hdrs, HEADER_CONTENT_TYPE, - TRUE, FALSE) - : 0); - const char *dct = (((MimeMultipartClass *) obj->class)->default_part_type); - MimeObject *body; - XP_Bool multipart_p; - - /* Don't pass in NULL as the content-type (this means that the - auto-uudecode-hack won't ever be done for subparts of a - multipart, but only for untyped children of message/rfc822. - */ - body = mime_create(((ct && *ct) ? ct : (dct ? dct: TEXT_PLAIN)), - malt->buffered_hdrs, obj->options); - - FREEIF(ct); - if (!body) return MK_OUT_OF_MEMORY; - - multipart_p = mime_typep(body, (MimeObjectClass *) &mimeMultipartClass); - - status = ((MimeContainerClass *) obj->class)->add_child(obj, body); - if (status < 0) - { - mime_free(body); - return status; - } - -#ifdef MIME_DRAFTS - if ( obj->options && - obj->options->decompose_file_p && - !multipart_p && - obj->options->decompose_file_init_fn ) - { - status = obj->options->decompose_file_init_fn ( - obj->options->stream_closure, - malt->buffered_hdrs); - if (status < 0) return status; - } -#endif /* MIME_DRAFTS */ - - - /* Now that we've added this new object to our list of children, - start its parser going. */ - status = body->class->parse_begin(body); - if (status < 0) return status; - -#ifdef MIME_DRAFTS - if ( obj->options && - obj->options->decompose_file_p && - !multipart_p && - obj->options->decompose_file_output_fn ) - status = MimePartBufferRead (malt->part_buffer, - obj->options->decompose_file_output_fn, - obj->options->stream_closure); - else -#endif /* MIME_DRAFTS */ - - status = MimePartBufferRead (malt->part_buffer, - /* The (int (*) ...) cast is to turn the - `void' argument into `MimeObject'. */ - ((int (*) (char *, int32, void *)) - body->class->parse_buffer), - body); - - if (status < 0) return status; - - MimeMultipartAlternative_cleanup(obj); - - /* Done parsing. */ - status = body->class->parse_eof(body, FALSE); - if (status < 0) return status; - status = body->class->parse_end(body, FALSE); - if (status < 0) return status; - -#ifdef MIME_DRAFTS - if ( obj->options && - obj->options->decompose_file_p && - !multipart_p && - obj->options->decompose_file_close_fn ) { - status = obj->options->decompose_file_close_fn ( obj->options->stream_closure ); - if (status < 0) return status; - } -#endif /* MIME_DRAFTS */ - - return 0; -} diff --git a/mozilla/lib/libmime/mimemalt.h b/mozilla/lib/libmime/mimemalt.h deleted file mode 100644 index 05f455f4bb4..00000000000 --- a/mozilla/lib/libmime/mimemalt.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemalt.h --- definition of the MimeMultipartAlternative class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEMALT_H_ -#define _MIMEMALT_H_ - -#include "mimemult.h" -#include "mimepbuf.h" - -/* The MimeMultipartAlternative class implements the multipart/alternative - MIME container, which displays only one (the `best') of a set of enclosed - documents. - */ - -typedef struct MimeMultipartAlternativeClass MimeMultipartAlternativeClass; -typedef struct MimeMultipartAlternative MimeMultipartAlternative; - -struct MimeMultipartAlternativeClass { - MimeMultipartClass multipart; -}; - -extern MimeMultipartAlternativeClass mimeMultipartAlternativeClass; - -struct MimeMultipartAlternative { - MimeMultipart multipart; /* superclass variables */ - - MimeHeaders *buffered_hdrs; /* The headers of the currently-pending - part. */ - MimePartBufferData *part_buffer; /* The data of the current-pending part - (see mimepbuf.h) */ -}; - -#endif /* _MIMEMALT_H_ */ diff --git a/mozilla/lib/libmime/mimemapl.c b/mozilla/lib/libmime/mimemapl.c deleted file mode 100644 index bb0e1f2511b..00000000000 --- a/mozilla/lib/libmime/mimemapl.c +++ /dev/null @@ -1,198 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemapl.c --- definition of the MimeMultipartAppleDouble class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimemapl.h" -#include "xpgetstr.h" - -#define MIME_SUPERCLASS mimeMultipartClass -MimeDefClass(MimeMultipartAppleDouble, MimeMultipartAppleDoubleClass, - mimeMultipartAppleDoubleClass, &MIME_SUPERCLASS); - -extern int MK_MSG_ATTACHMENT; - -static int MimeMultipartAppleDouble_parse_begin (MimeObject *); -static XP_Bool MimeMultipartAppleDouble_output_child_p(MimeObject *, - MimeObject *); - -static int -MimeMultipartAppleDoubleClassInitialize(MimeMultipartAppleDoubleClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeMultipartClass *mclass = (MimeMultipartClass *) class; - - XP_ASSERT(!oclass->class_initialized); - oclass->parse_begin = MimeMultipartAppleDouble_parse_begin; - mclass->output_child_p = MimeMultipartAppleDouble_output_child_p; - return 0; -} - -static int -MimeMultipartAppleDouble_parse_begin (MimeObject *obj) -{ - /* #### This method is identical to MimeExternalObject_parse_begin - which kinda s#$%s... - */ - int status; - - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_begin(obj); - if (status < 0) return status; - - /* If we're writing this object, and we're doing it in raw form, then - now is the time to inform the backend what the type of this data is. - */ - if (obj->output_p && - obj->options && - !obj->options->write_html_p && - !obj->options->state->first_data_written_p) - { - status = MimeObject_output_init(obj, 0); - if (status < 0) return status; - XP_ASSERT(obj->options->state->first_data_written_p); - } - -#if !defined(XP_MAC) && !defined(MOZILLA_30) - if (obj->options && obj->options->state) - { - obj->options->state->separator_suppressed_p = TRUE; - goto done; - } - /* - * It would be nice to not showing the resource fork links - * if we are displaying inline. But, there is no way we could - * know ahead of time that we could display the data fork and - * the data fork is always hidden on MAC platform. - */ -#endif - /* If we're writing this object as HTML, then emit a link for the - multipart/appledouble part (both links) that looks just like the - links that MimeExternalObject emits for external leaf parts. - */ - if (obj->options && - obj->output_p && - obj->options->write_html_p && - obj->options->output_fn) - { - MimeDisplayOptions newopt = *obj->options; /* copy it */ - char *id = 0; - char *id_url = 0; - XP_Bool all_headers_p = obj->options->headers == MimeHeadersAll; - - id = mime_part_address (obj); - if (! id) return MK_OUT_OF_MEMORY; - - if (obj->options && obj->options->url) - { - const char *url = obj->options->url; - id_url = mime_set_url_part(url, id, TRUE); - if (!id_url) - { - XP_FREE(id); - return MK_OUT_OF_MEMORY; - } - } - - if (!XP_STRCMP (id, "0")) - { - XP_FREE(id); - id = XP_STRDUP(XP_GetString(MK_MSG_ATTACHMENT)); - } - else - { - const char *p = "Part "; /* #### i18n */ - char *s = (char *)XP_ALLOC(XP_STRLEN(p) + XP_STRLEN(id) + 1); - if (!s) - { - XP_FREE(id); - XP_FREE(id_url); - return MK_OUT_OF_MEMORY; - } - XP_STRCPY(s, p); - XP_STRCAT(s, id); - XP_FREE(id); - id = s; - } - - if (all_headers_p && - /* Don't bother showing all headers on this part if it's the only - part in the message: in that case, we've already shown these - headers. */ - obj->options->state && - obj->options->state->root == obj->parent) - all_headers_p = FALSE; - - newopt.fancy_headers_p = TRUE; - newopt.headers = (all_headers_p ? MimeHeadersAll : MimeHeadersSome); - - { - char p[] = "<P>"; - status = MimeObject_write(obj, p, 3, FALSE); - if (status < 0) goto FAIL; - } - - status = MimeHeaders_write_attachment_box (obj->headers, &newopt, - obj->content_type, - obj->encoding, - id, id_url, 0); - if (status < 0) goto FAIL; - - /* No <P> after the first attachment-box in an AppleDouble, to keep - them closer together. */ - - FAIL: - FREEIF(id); - FREEIF(id_url); - if (status < 0) return status; - } - -#if !defined(XP_MAC) && !defined(MOZILLA_30) -done: -#endif - - return 0; -} - -static XP_Bool -MimeMultipartAppleDouble_output_child_p(MimeObject *obj, MimeObject *child) -{ - MimeContainer *cont = (MimeContainer *) obj; - - /* If this is the first child, and it's an application/applefile, then - don't emit a link for it. (There *should* be only two children, and - the first one should always be an application/applefile.) - */ - - if (obj->output_p && - obj->options && - obj->options->write_html_p && - cont->nchildren >= 1 && - cont->children[0] == child && - child->content_type && - !strcasecomp(child->content_type, APPLICATION_APPLEFILE)) - return FALSE; - else - return TRUE; -} diff --git a/mozilla/lib/libmime/mimemapl.h b/mozilla/lib/libmime/mimemapl.h deleted file mode 100644 index 970dd345b2b..00000000000 --- a/mozilla/lib/libmime/mimemapl.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemapl.h --- definition of the MimeMultipartAppleDouble class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEMAPL_H_ -#define _MIMEMAPL_H_ - -#include "mimemult.h" - -/* The MimeMultipartAppleDouble class implements the multipart/appledouble - MIME container, which provides a method of encapsulating and reconstructing - a two-forked Macintosh file. - */ - -typedef struct MimeMultipartAppleDoubleClass MimeMultipartAppleDoubleClass; -typedef struct MimeMultipartAppleDouble MimeMultipartAppleDouble; - -struct MimeMultipartAppleDoubleClass { - MimeMultipartClass multipart; -}; - -extern MimeMultipartAppleDoubleClass mimeMultipartAppleDoubleClass; - -struct MimeMultipartAppleDouble { - MimeMultipart multipart; -}; - -#endif /* _MIMEMAPL_H_ */ diff --git a/mozilla/lib/libmime/mimemdig.c b/mozilla/lib/libmime/mimemdig.c deleted file mode 100644 index ccec7dd0399..00000000000 --- a/mozilla/lib/libmime/mimemdig.c +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemdig.c --- definition of the MimeMultipartDigest class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimemdig.h" - -#define MIME_SUPERCLASS mimeMultipartClass -MimeDefClass(MimeMultipartDigest, MimeMultipartDigestClass, - mimeMultipartDigestClass, &MIME_SUPERCLASS); - -static int -MimeMultipartDigestClassInitialize(MimeMultipartDigestClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeMultipartClass *mclass = (MimeMultipartClass *) class; - XP_ASSERT(!oclass->class_initialized); - mclass->default_part_type = MESSAGE_RFC822; - return 0; -} diff --git a/mozilla/lib/libmime/mimemdig.h b/mozilla/lib/libmime/mimemdig.h deleted file mode 100644 index 84e4a5453da..00000000000 --- a/mozilla/lib/libmime/mimemdig.h +++ /dev/null @@ -1,51 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemdig.h --- definition of the MimeMultipartDigest class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEMDIG_H_ -#define _MIMEMDIG_H_ - -#include "mimemult.h" - -/* The MimeMultipartDigest class implements the multipart/digest MIME - container, which is just like multipart/mixed, except that the default - type (for parts with no type explicitly specified) is message/rfc822 - instead of text/plain. - */ - -typedef struct MimeMultipartDigestClass MimeMultipartDigestClass; -typedef struct MimeMultipartDigest MimeMultipartDigest; - -struct MimeMultipartDigestClass { - MimeMultipartClass multipart; -}; - -extern MimeMultipartDigestClass mimeMultipartDigestClass; - -struct MimeMultipartDigest { - MimeMultipart multipart; -}; - -#endif /* _MIMEMDIG_H_ */ diff --git a/mozilla/lib/libmime/mimemmix.c b/mozilla/lib/libmime/mimemmix.c deleted file mode 100644 index 803e1c0ab70..00000000000 --- a/mozilla/lib/libmime/mimemmix.c +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemmix.c --- definition of the MimeMultipartMixed class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimemmix.h" - -#define MIME_SUPERCLASS mimeMultipartClass -MimeDefClass(MimeMultipartMixed, MimeMultipartMixedClass, - mimeMultipartMixedClass, &MIME_SUPERCLASS); - -static int -MimeMultipartMixedClassInitialize(MimeMultipartMixedClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - XP_ASSERT(!oclass->class_initialized); - return 0; -} diff --git a/mozilla/lib/libmime/mimemmix.h b/mozilla/lib/libmime/mimemmix.h deleted file mode 100644 index 72eb3691ce7..00000000000 --- a/mozilla/lib/libmime/mimemmix.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemmix.h --- definition of the MimeMultipartMixed class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEMMIX_H_ -#define _MIMEMMIX_H_ - -#include "mimemult.h" - -/* The MimeMultipartMixed class implements the multipart/mixed MIME container, - and is also used for any and all otherwise-unrecognised subparts of - multipart/. - */ - -typedef struct MimeMultipartMixedClass MimeMultipartMixedClass; -typedef struct MimeMultipartMixed MimeMultipartMixed; - -struct MimeMultipartMixedClass { - MimeMultipartClass multipart; -}; - -extern MimeMultipartMixedClass mimeMultipartMixedClass; - -struct MimeMultipartMixed { - MimeMultipart multipart; -}; - -#endif /* _MIMEMMIX_H_ */ diff --git a/mozilla/lib/libmime/mimemoz.c b/mozilla/lib/libmime/mimemoz.c deleted file mode 100644 index 31f9920feca..00000000000 --- a/mozilla/lib/libmime/mimemoz.c +++ /dev/null @@ -1,2697 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemoz.c --- Mozilla interface to libmime.a - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "xp.h" -#include "xp_linebuf.h" -#include "mkbuf.h" -#include "libi18n.h" -#include "xp_time.h" -#include "msgcom.h" -#include "mimeobj.h" -#include "mimemsg.h" -#include "mimetric.h" /* for MIME_RichtextConverter */ -#include "mimethtm.h" -#include "mimemsig.h" -#ifdef MOZ_SECURITY -#include "mimecryp.h" -#endif -#include "mimemrel.h" -#include "mimemalt.h" -#ifndef MOZILLA_30 -# include "xpgetstr.h" -# include "mimevcrd.h" /* for MIME_VCardConverter */ -#ifdef MOZ_CALENDAR -# include "mimecal.h" /* for MIME_JulianConverter */ -#endif -# include "edt.h" - extern int XP_FORWARDED_MESSAGE_ATTACHMENT; -#endif /* !MOZILLA_30 */ -#include "prefapi.h" - -#include "secrng.h" -#include "prprf.h" -#include "intl_csi.h" - -#if defined(XP_UNIX) || defined(XP_WIN32) -#if defined(MOZ_CALENDAR) - #define JULIAN_EXISTS 1 /* Julian isn't working on mac yet */ -#endif -#endif - - -#ifdef JULIAN_EXISTS -#include "julianform.h" -#endif - -#ifdef HAVE_MIME_DATA_SLOT -# define LOCK_LAST_CACHED_MESSAGE -#endif - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; - -/* Arrgh. Why isn't this in a reasonable header file somewhere??? ###tw */ -extern char * NET_ExplainErrorDetails (int code, ...); - - -#include "mimedisp.h" - - -/*#ifndef MOZILLA_30*/ - -static MimeHeadersState MIME_HeaderType; -static XP_Bool MIME_NoInlineAttachments; -static XP_Bool MIME_WrapLongLines; -static XP_Bool MIME_VariableWidthPlaintext; -static XP_Bool MIME_PrefDataValid = 0; /* 0: First time. */ - /* 1: Cache is not valid. */ - /* 2: Cache is valid. */ - -/*#endif*/ - - -static char * -mime_reformat_date(const char *date, void *stream_closure) -{ -#if 0 /* #### fix me */ - struct mime_stream_data *msd = (struct mime_stream_data *) stream_closure; - MWContext *context = msd->context; - const char *s; - time_t t; - XP_ASSERT(date); - if (!date) return 0; - t = XP_ParseTimeString(date, FALSE); - if (t <= 0) return 0; - s = MSG_FormatDateFromContext(context, t); - if (!s) return 0; - return XP_STRDUP(s); -#else /*!0 #### */ - return XP_STRDUP(date); -#endif /* !0 */ -} - - -static char * -mime_file_type (const char *filename, void *stream_closure) -{ - NET_cinfo *cinfo = NET_cinfo_find_type ((char *) filename); - if (!cinfo || !cinfo->type) - return 0; - else - return XP_STRDUP(cinfo->type); -} - -static char * -mime_type_desc(const char *type, void *stream_closure) -{ - NET_cinfo *cinfo = NET_cinfo_find_info_by_type((char *) type); - if (!cinfo || !cinfo->desc || !*cinfo->desc) - return 0; - else - return XP_STRDUP(cinfo->desc); -} - - -static char * -mime_type_icon(const char *type, void *stream_closure) -{ - NET_cinfo *cinfo = NET_cinfo_find_info_by_type((char *) type); - if (cinfo && cinfo->icon && *cinfo->icon) - return XP_STRDUP(cinfo->icon); - else if (!strncasecomp(type, "text/", 5)) - return XP_STRDUP("internal-gopher-text"); - else if (!strncasecomp(type, "image/", 6)) - return XP_STRDUP("internal-gopher-image"); - else if (!strncasecomp(type, "audio/", 6)) - return XP_STRDUP("internal-gopher-sound"); - else if (!strncasecomp(type, "video/", 6)) - return XP_STRDUP("internal-gopher-movie"); - else if (!strncasecomp(type, "application/", 12)) - return XP_STRDUP("internal-gopher-binary"); - else - return XP_STRDUP("internal-gopher-unknown"); -} - - -static int -mime_convert_charset (const char *input_line, int32 input_length, - const char *input_charset, const char *output_charset, - char **output_ret, int32 *output_size_ret, - void *stream_closure) -{ - struct mime_stream_data *msd = (struct mime_stream_data *) stream_closure; - unsigned char *converted; - - /* #### */ -#if 0 - extern unsigned char *INTL_ConvMailToWinCharCode(MWContext *context, - unsigned char *pSrc, - uint32 block_size); - - converted = INTL_ConvMailToWinCharCode(msd->context, - (unsigned char *) input_line, - input_length); - if (converted) - { - *output_ret = (char *) converted; - *output_size_ret = XP_STRLEN((char *) converted); - } - else -#endif /* 0 #### */ - { - *output_ret = 0; - *output_size_ret = 0; - } - return 0; -} - - -static int -mime_convert_rfc1522 (const char *input_line, int32 input_length, - const char *input_charset, const char *output_charset, - char **output_ret, int32 *output_size_ret, - void *stream_closure) -{ - struct mime_stream_data *msd = (struct mime_stream_data *) stream_closure; - char *converted = 0; - char *line = 0; - - if (input_line[input_length] == 0) /* oh good, it's null-terminated */ - line = (char *) input_line; - else - { - line = (char *) XP_ALLOC(input_length+1); - if (!line) return MK_OUT_OF_MEMORY; - XP_MEMCPY(line, input_line, input_length); - line[input_length] = 0; - } - -#if 0 /* #### */ - converted = IntlDecodeMimePartIIStr(line, - INTL_DocToWinCharSetID(INTL_DefaultDocCharSetID(msd->context)), FALSE); -#endif - - if (line != input_line) - XP_FREE(line); - - if (converted) - { - *output_ret = converted; - *output_size_ret = XP_STRLEN(converted); - } - else - { - *output_ret = 0; - *output_size_ret = 0; - } - return 0; -} - - -static int -mime_output_fn(char *buf, int32 size, void *stream_closure) -{ - struct mime_stream_data *msd = (struct mime_stream_data *) stream_closure; - XP_ASSERT(msd->stream); - if (!msd->stream) return -1; -#ifdef DEBUG_terry - if (msd->logit) { - XP_FileWrite(buf, size, msd->logit); - } -#endif - return msd->stream->put_block (msd->stream, buf, size); -} - -static int -compose_only_output_fn(char *buf, int32 size, void *stream_closure) -{ - return 0; -} - -extern XP_Bool msg_LoadingForComposeOnly(const MSG_Pane* pane); /* in msgmpane.cpp */ - -static int -mime_set_html_state_fn (void *stream_closure, - XP_Bool layer_encapsulate_p, - XP_Bool start_p, - XP_Bool abort_p) -{ - int status = 0; - char *buf; - - struct mime_stream_data *msd = (struct mime_stream_data *) stream_closure; - -#if 1 - char random_close_tags[] = "</SCRIPT><NSCP_CLOSE>"; -#else /* 0 */ - char random_close_tags[] = - "</TABLE></TABLE></TABLE></TABLE></TABLE></TABLE>" - "</DL></DL></DL></DL></DL></DL></DL></DL></DL></DL>" - "</DL></DL></DL></DL></DL></DL></DL></DL></DL></DL>" - "</B></B></B></B></B></B></B></B></B></B></B></B>" - "</PRE></PRE></PRE></PRE></PRE></PRE></PRE></PRE>" - "<BASEFONT SIZE=3></SCRIPT>"; -#endif /* 0 */ - if (start_p) { -#ifndef MOZILLA_30 - if (layer_encapsulate_p && msd->options && !msd->options->nice_html_only_p){ - uint8 *rand_buf = msd->rand_buf; - RNG_GenerateGlobalRandomBytes(rand_buf, sizeof msd->rand_buf); - - buf = PR_smprintf("<ILAYER LOCKED CLIP=0,0,AUTO,AUTO " - "MATCH=%02x%02x%02x%02x%02x%02x>", - rand_buf[0], rand_buf[1], rand_buf[2], - rand_buf[3], rand_buf[4], rand_buf[5]); - if (!buf) - return MK_OUT_OF_MEMORY; - status = MimeOptions_write(msd->options, buf, XP_STRLEN(buf), TRUE); - XP_FREE(buf); - } -#endif /* MOZILLA_30 */ - } else { - status = MimeOptions_write(msd->options, random_close_tags, - XP_STRLEN(random_close_tags), FALSE); - if (status < 0) - return status; - -#ifndef MOZILLA_30 - if (layer_encapsulate_p && msd->options && !msd->options->nice_html_only_p){ - uint8 *rand_buf = msd->rand_buf; - buf = PR_smprintf("</ILAYER MATCH=%02x%02x%02x%02x%02x%02x><BR>", - rand_buf[0], rand_buf[1], rand_buf[2], - rand_buf[3], rand_buf[4], rand_buf[5]); - if (!buf) - return MK_OUT_OF_MEMORY; - status = MimeOptions_write(msd->options, buf, XP_STRLEN(buf), TRUE); - XP_FREE(buf); - } -#endif /* MOZILLA_30 */ - - } - return status; -} - - -static int -mime_display_stream_write (NET_StreamClass *stream, - const char* buf, - int32 size) -{ - struct mime_stream_data *msd = (struct mime_stream_data *) stream->data_object; - MimeObject *obj = (msd ? msd->obj : 0); - if (!obj) return -1; - return obj->class->parse_buffer((char *) buf, size, obj); -} - - -static unsigned int -mime_display_stream_write_ready (NET_StreamClass *stream) -{ - struct mime_stream_data *msd = (struct mime_stream_data *) stream->data_object; - if (msd->istream) { - return msd->istream->is_write_ready (msd->istream); - } else if (msd->stream) - return msd->stream->is_write_ready (msd->stream); - else - return (MAX_WRITE_READY); -} - - -HG09857 - -static void -mime_display_stream_complete (NET_StreamClass *stream) -{ - struct mime_stream_data *msd = (struct mime_stream_data *) stream->data_object; - MimeObject *obj = (msd ? msd->obj : 0); - if (obj) - { - int status; - status = obj->class->parse_eof(obj, FALSE); - obj->class->parse_end(obj, (status < 0 ? TRUE : FALSE)); - -#ifdef HAVE_MIME_DATA_SLOT - if (msd && - msd->context && - msd->context->mime_data && - obj == msd->context->mime_data->last_parsed_object) - { - /* do nothing -- we still have another pointer to this object. */ - } - else -#endif /* HAVE_MIME_DATA_SLOT */ - { - /* Somehow there's no pointer in context->mime_data to this - object, so destroy it now. (This can happen for any number - of normal reasons; see comment in mime_output_init_fn().) - */ - XP_ASSERT(msd->options == obj->options); - mime_free(obj); - obj = NULL; - if (msd->options) - { - FREEIF(msd->options->part_to_load); - FREEIF(msd->options->default_charset); - FREEIF(msd->options->override_charset); - XP_FREE(msd->options); - msd->options = 0; - } - } - } - -#ifdef LOCK_LAST_CACHED_MESSAGE - /* The code in this ifdef is to ensure that the most-recently-loaded news - message is locked down in the memory cache. (There may be more than one - message cached, but only the most-recently-loaded is *locked*.) - - When loading a message, we unlock the previously-locked URL, if any. - (This happens in mime_make_output_stream().) - - When we're done loading a news message, we lock it to prevent it from - going away (this happens here, in mime_display_stream_complete(). We - need to do this at the end instead of the beginning so that the document - is *in* the cache at the time we try to lock it.) - - This implementation probably assumes that news messages go into the - memory cache and never go into the disk cache. (But maybe that's - actually not an issue, since if news messages were to go into the - disk cache, they would be marked as non-session-persistent anyway?) - */ - if (msd && - msd->context && - msd->context->mime_data && - !msd->context->mime_data->previous_locked_url) - { - /* Save a copy of this URL so that we can unlock it next time. */ - msd->context->mime_data->previous_locked_url = - XP_STRDUP(msd->url->address); - - /* Lock this URL in the cache. */ - if (msd->context->mime_data->previous_locked_url) - NET_ChangeCacheFileLock(msd->url, TRUE); - } -#endif /* LOCK_LAST_CACHED_MESSAGE */ - - if (msd->stream) - { - -#ifdef MOZ_SECURITY - /* Hold your breath. This is how we notify compose.c - that the message was decrypted -- it will set a flag in the - mime_delivery_state structure, which we don't have access to from - here. */ - if (obj && - obj->options && - obj->options->state && - obj->options->state->decrypted_p) - HG09858 ; -#endif /* MOZ_SECURITY */ - - /* Close the output stream. */ - msd->stream->complete (msd->stream); - XP_FREE (msd->stream); - } -#ifdef DEBUG_terry - if (msd->logit) XP_FileClose(msd->logit); -#endif - XP_FREE(msd); -} - -static void -mime_display_stream_abort (NET_StreamClass *stream, int status) -{ - struct mime_stream_data *msd = (struct mime_stream_data *) stream->data_object; - MimeObject *obj = (msd ? msd->obj : 0); - if (obj) - { - if (!obj->closed_p) - obj->class->parse_eof(obj, TRUE); - if (!obj->parsed_p) - obj->class->parse_end(obj, TRUE); - -#ifdef HAVE_MIME_DATA_SLOT - if (msd && - msd->context && - msd->context->mime_data && - obj == msd->context->mime_data->last_parsed_object) - { - /* do nothing -- we still have another pointer to this object. */ - } - else -#endif /* HAVE_MIME_DATA_SLOT */ - { - /* Somehow there's no pointer in context->mime_data to this - object, so destroy it now. (This can happen for any number - of normal reasons; see comment in mime_output_init_fn().) - */ - XP_ASSERT(msd->options == obj->options); - mime_free(obj); - if (msd->options) - { - FREEIF(msd->options->part_to_load); - XP_FREE(msd->options); - msd->options = 0; - } - } - } - - XP_ASSERT(msd); /* Crash was happening here - jrm */ - if (msd) - { - if (msd->stream) - { - msd->stream->abort (msd->stream, status); - XP_FREE (msd->stream); - } - XP_FREE(msd); - } -} - - - -#ifndef MOZILLA_30 - -static unsigned int -mime_insert_html_write_ready(NET_StreamClass *stream) -{ - return MAX_WRITE_READY; -} - -static int -mime_insert_html_put_block(NET_StreamClass *stream, const char* str, int32 length) -{ - struct mime_stream_data* msd = (struct mime_stream_data*) stream->data_object; - char* s = (char*) str; - char c = s[length]; - XP_ASSERT(msd); - if (!msd) return -1; - if (c) { - s[length] = '\0'; - } - /* s is in the outcsid encoding at this point. That was done in - * mime_insert_html_convert_charset */ - EDT_PasteQuoteINTL(msd->context, s, msd->outcsid); - if (c) { - s[length] = c; - } - return 0; -} - - -static void -mime_insert_html_complete(NET_StreamClass *stream) -{ - struct mime_stream_data* msd = (struct mime_stream_data*) stream->data_object; - XP_ASSERT(msd); - if (!msd) return; - EDT_PasteQuote(msd->context, "</BLOCKQUOTE>"); - if (msd->format_out == FO_QUOTE_HTML_MESSAGE) { - int32 eReplyOnTop = 1, nReplyWithExtraLines = 0; - PREF_GetIntPref("mailnews.reply_on_top", &eReplyOnTop); - PREF_GetIntPref("mailnews.reply_with_extra_lines", &nReplyWithExtraLines); - if (0 == eReplyOnTop && nReplyWithExtraLines) { - for (; nReplyWithExtraLines > 0; nReplyWithExtraLines--) - EDT_PasteQuote(msd->context, "<BR>"); - } - - } - EDT_PasteQuoteEnd(msd->context); -} - -static void -mime_insert_html_abort(NET_StreamClass *stream, int status) -{ - mime_insert_html_complete(stream); -} - - -static int -mime_insert_html_convert_charset (const char *input_line, int32 input_length, - const char *input_charset, - const char *output_charset, - char **output_ret, int32 *output_size_ret, - void *stream_closure) -{ - struct mime_stream_data *msd = (struct mime_stream_data *) stream_closure; - int status; - INTL_CharSetInfo csi = LO_GetDocumentCharacterSetInfo(msd->context); - uint16 old_csid = INTL_GetCSIDocCSID(csi); - - if (input_charset) { - msd->lastcsid = INTL_CharSetNameToID((char*) input_charset); - } else { - msd->lastcsid = 0; - } - if (output_charset) { - msd->outcsid = INTL_CharSetNameToID((char*) output_charset); - } else { - msd->outcsid = 0; - } - INTL_SetCSIDocCSID(csi, msd->lastcsid); - status = mime_convert_charset (input_line, input_length, - input_charset, output_charset, - output_ret, output_size_ret, - stream_closure); - INTL_SetCSIDocCSID(csi, old_csid); - return status; -} - -#endif /* !MOZILLA_30 */ - - -static NET_StreamClass * -mime_make_output_stream(const char *content_type, - const char *charset, - const char *content_name, - const char *x_mac_type, - const char *x_mac_creator, - int format_out, URL_Struct *url, - MWContext *context, - struct mime_stream_data* msd) -{ - /* To make the next stream, fill in the URL with the provided attributes, - and call NET_StreamBuilder. - - But After we've gotten the stream we want, change the URL's type and - encoding back to what they were before, since things down the line might - need to know the *original* type. - */ - NET_StreamClass *stream; - char *orig_content_type; - char *orig_encoding; - char *old_part = 0; - char *old_part2 = 0; - -#ifndef MOZILLA_30 - if (format_out == FO_QUOTE_HTML_MESSAGE) { - /* Special case here. Make a stream that just jams data directly - into our editor context. No calling of NET_StreamBuilder for me; - I don't really understand it anyway... */ - - XP_ASSERT(msd); - if (msd) { - stream = XP_NEW_ZAP(NET_StreamClass); - if (!stream) return NULL; - stream->window_id = context; - stream->data_object = msd; - stream->is_write_ready = mime_insert_html_write_ready; - stream->put_block = mime_insert_html_put_block; - stream->complete = mime_insert_html_complete; - stream->abort = mime_insert_html_abort; - return stream; - } - } -#endif /* !MOZILLA_30 */ - - - XP_ASSERT(content_type && url); - if (!content_type || !url) - return 0; - - /* If we're saving a message to disk (raw), then treat the output as unknown - type. If we didn't do this, then saving a message would recurse back into - the parser (because the output has content-type message/rfc822), and we'd - be back here again in short order... - - We don't do this for FO_SAVE_AS_TEXT and FO_SAVE_AS_POSTSCRIPT because - those work by generating HTML, and then converting that. Whereas - FO_SAVE_AS goes directly to disk without another format_out filter - catching it. - - We only fake out the content-type when we're saving a message (mail or - news) and not when saving random other types. The reason for this is that - we only *need* to do this for messages (because those are the only types - which are registered to come back in here for FO_SAVE_AS); we don't do it - for other types, because the Mac needs to know the real type to map a - MIME type to a Mac Creator when writing the file to disk (so that the - right application will get launched when the file is clicked on, etc.) - - [mwelch: I'm not adding FO_EDT_SAVE_IMAGE here, because the editor, to - the best of my knowledge, never spools out a message per se; such a message - would be filed as an attachment (FO_CACHE_AND_MAIL_TO), independent of the - editor. In addition, we want to drill down as far as we can within a quoted - message, in order to identify whatever part has been requested (usually an - image, sound, applet, or other inline data).] - - In 3.0b7 and earlier, we did this for *all* types. On 9-Aug-96 jwz and - aleks changed this to only do it for message types, which seems to be the - right thing. However, since it's very late in the release cycle, this - change is being done as #ifdef XP_MAC, since the Mac is the only platform - where it was a problem that we were using octet-stream for all - attachments. After 3.0 ships, this should be done on all platforms, not - just Mac. - */ - if ((format_out == FO_SAVE_AS || format_out == FO_CACHE_AND_SAVE_AS) - && (!strcasecomp(content_type, MESSAGE_RFC822) || - !strcasecomp(content_type, MESSAGE_NEWS))) - content_type = APPLICATION_OCTET_STREAM; - - orig_content_type = url->content_type; - orig_encoding = url->content_encoding; - - url->content_type = XP_STRDUP(content_type); - if (!url->content_type) return 0; - url->content_encoding = 0; - - if (charset) FREEIF(url->charset); - if (content_name) FREEIF(url->content_name); - if (x_mac_type) FREEIF(url->x_mac_type); - if (x_mac_creator) FREEIF(url->x_mac_creator); - if (charset) url->charset = XP_STRDUP(charset); - if (content_name) url->content_name = XP_STRDUP(content_name); - if (x_mac_type) url->x_mac_type = XP_STRDUP(x_mac_type); - if (x_mac_creator) url->x_mac_creator = XP_STRDUP(x_mac_creator); - - /* If we're going back down into the message/rfc822 parser (that is, if - we're displaying a sub-part which is itself a message part) then remove - any part specifier from the URL. This is to prevent that same part - from being retreived a second time, which to the user, would have no - effect. - - Don't do this for all other types, because that might affect image - cacheing and so on (causing it to cache on the wrong key.) - */ - if (!strcasecomp(content_type, MESSAGE_RFC822) || - !strcasecomp(content_type, MESSAGE_NEWS)) - { - old_part = XP_STRSTR(url->address, "?part="); - if (!old_part) - old_part2 = XP_STRSTR(url->address, "&part="); - - if (old_part) *old_part = 0; - else if (old_part2) *old_part2 = 0; - } - - if(msd && msd->options && msd->options->default_charset) - { - INTL_CharSetInfo csi = LO_GetDocumentCharacterSetInfo(context); - INTL_SetCSIMimeCharset(csi, msd->options->default_charset); - } - - stream = NET_StreamBuilder (format_out, url, context); - if (stream && (context->type != MWContextMessageComposition)) - { - /* Bug #110565: do not change the stream to a rebuffering stream - when we have a Mail Compose context */ - NET_StreamClass * buffer = NET_MakeRebufferingStream(stream, url, context); - if (buffer) - stream = buffer; - } - - /* Put it back -- note that this string is now also pointed to by - obj->options->url, so we're modifying data reachable by the - internals of the library (and that is the goal of this hack.) */ - if (old_part) *old_part = '?'; - else if (old_part2) *old_part2 = '&'; - - FREEIF(url->content_type); - url->content_type = orig_content_type; - url->content_encoding = orig_encoding; - -#ifdef LOCK_LAST_CACHED_MESSAGE - /* Always cache this one. */ - url->must_cache = TRUE; - - /* Un-cache the last one. */ - if (context->mime_data && - context->mime_data->previous_locked_url) - { - URL_Struct *url_s = - NET_CreateURLStruct(context->mime_data->previous_locked_url, - NET_NORMAL_RELOAD); - if (url_s) - { - /* Note: if post data was involved here, we'd lose. We're assuming - that all we need to save is the url->address. */ - NET_ChangeCacheFileLock(url_s, FALSE); - NET_FreeURLStruct(url_s); - } - XP_FREE(context->mime_data->previous_locked_url); - context->mime_data->previous_locked_url = 0; - } -#endif /* LOCK_LAST_CACHED_MESSAGE */ - - return stream; -} - - - -static int -mime_output_init_fn (const char *type, - const char *charset, - const char *name, - const char *x_mac_type, - const char *x_mac_creator, - void *stream_closure) -{ - struct mime_stream_data *msd = (struct mime_stream_data *) stream_closure; - int format_out; - XP_ASSERT(!msd->stream); - if (msd->stream) return -1; - - XP_ASSERT(type && *type); - if (!type || !*type) return -1; - - format_out = msd->format_out; - - /* If we've converted to HTML, then we've already done charset conversion, - so label this data as "internal/parser" to prevent it from being passed - through the charset converters again. */ - if (msd->options->write_html_p && - !strcasecomp(type, TEXT_HTML)) - type = INTERNAL_PARSER; - - - /* If this stream converter was created for FO_MAIL_TO, then the input type - and output type will be identical (message/rfc822) so we need to change - the format_out to break out of the loop. libmsg/compose.c knows to treat - FO_MAIL_MESSAGE_TO roughly the same as FO_MAIL_TO. - */ -#ifdef FO_MAIL_MESSAGE_TO - if (format_out == FO_MAIL_TO) - format_out = FO_MAIL_MESSAGE_TO; - else if (format_out == FO_CACHE_AND_MAIL_TO) - format_out = FO_CACHE_AND_MAIL_MESSAGE_TO; -#endif /* FO_MAIL_MESSAGE_TO */ - - - msd->stream = mime_make_output_stream(type, charset, name, - x_mac_type, x_mac_creator, - format_out, msd->url, - msd->context, msd); - - if (!msd->stream) - /* #### We can't return MK_OUT_OF_MEMORY here because sometimes - NET_StreamBuilder() returns 0 because it ran out of memory; and - sometimes it returns 0 because the user hit Cancel on the file - save dialog box. Wonderful condition handling we've got... */ - return -1; - - -#ifdef HAVE_MIME_DATA_SLOT - /* At this point, the window has been cleared; so discard the cached - data relating to the previously-parsed MIME object. */ - - XP_ASSERT(msd && msd->obj && msd->context); - if (msd && msd->obj && msd->context) - { - MWContext *context = msd->context; - - if (msd->context->mime_data && - msd->context->mime_data->last_parsed_object) - { - XP_ASSERT(msd->options != - context->mime_data->last_parsed_object->options); - XP_ASSERT(msd->obj != context->mime_data->last_parsed_object); - - /* There are two interesting cases: - - Look at message-1, then look at message-2; and - Look at message-1, then look at message-1-part-A - (where part-A is itself a message.) - - In the first case, by the time we've begun message-2, we're done - with message-1. Its object is still around for reference (for - examining the part names) but the parser has run to completion - on it. - - In the second case, we begin parsing part-A before the parser of - message-1 has run to completion -- in fact, the parser that is - operating on message-1 is still on the stack above us. - - So if there is a last_parsed_object, but that object does not have - its `parsed_p' slot set, then that means that that object has not - yet hit the `parse_eof' state; therefore, it is still *being* - parsed: it is a parent object of the one we're currently looking - at. (When presenting a part of type message/rfc822, the - MIME_MessageConverter stream is entered recursively, the first - time to extract the sub-message, and the second time to convert - that sub-message to HTML.) - - So if we're in this nested call, we can simply replace the pointer - in mime_data. When current MessageConverter stream reaches its - `complete' or `abort' methods, it will skip freeing the current - object (since there is a pointer to it in mime_data); and then when - the outer MessageConverter stream reaches its `complete' or `abort' - methods, it will free that outer object (since it will see that - there is no pointer to it in mime_data.) - - More precisely: - - Look at message-1, then look at message-2: - In this case, the flow of control is like this: - - = make object-1 (message/rfc822) - = parse it - = save it in context->mime_data - = done with object-1; free nothing. - - = make object-2 (message/rfc822) - = parse it - = note that object-1 is still in context->mime_data - = free object-1 - = save object-2 in context->mime_data - = done with object-2; free nothing. - - Look at message-1, then look at message-1-part-A: - The flow of control in this case is somewhat different: - - = make object-1 (message/rfc822) - = parse it - = save it in context->mime_data - = done with object-1; free nothing. - - = make object-1 (message/rfc822) - = parse it - = note that previous-object-1 is still in context->mime_data - = free previous-object-1 - = save object-1 in context->mime_data - = enter the parser recursively: - = make part-A (message/rfc822) - = parse it - = note that object1 is still in context->mime_data, - and has not yet been fully parsed (in other words, - it's still on the stack.) Don't touch it. - = save part-A in context->mime_data - (cutting the pointer to object-1) - = done with part-A; free nothing. - = done with object-1; - note that object-1 is *not* in the context->mime_data - = free object-1 - = result: part-A remains in context->mime_data - */ - - if (context->mime_data->last_parsed_object->parsed_p) - { - /* Free it if it's parsed. - - Note that we have to call mime_free() before we free the - options struct, not after -- so since mime_free() frees - the object, we have to pull `options' out first to avoid - reaching into freed memory. - */ - MimeDisplayOptions *options = - context->mime_data->last_parsed_object->options; - - mime_free(context->mime_data->last_parsed_object); - if (options) - { - FREEIF(options->part_to_load); - XP_FREE(options); - } - } - - /* Cut the old saved pointer, whether its parsed or not. */ - context->mime_data->last_parsed_object = 0; - FREEIF(context->mime_data->last_parsed_url); - } - - /* And now save away the current object, for consultation the first - time a link is clicked upon. */ - if (!context->mime_data) - { - context->mime_data = XP_NEW(struct MimeDisplayData); - if (!context->mime_data) - return MK_OUT_OF_MEMORY; - XP_MEMSET(context->mime_data, 0, sizeof(*context->mime_data)); - } - context->mime_data->last_parsed_object = msd->obj; - context->mime_data->last_parsed_url = XP_STRDUP(msd->url->address); -#ifndef MOZILLA_30 - context->mime_data->last_pane = msd->url->msg_pane; -#endif /* MOZILLA_30 */ - - XP_ASSERT(!msd->options || - msd->options == msd->obj->options); - } -#endif /* HAVE_MIME_DATA_SLOT */ - - return 0; -} - - -static void *mime_image_begin(const char *image_url, const char *content_type, - void *stream_closure); -static void mime_image_end(void *image_closure, int status); -static char *mime_image_make_image_html(void *image_data); -static int mime_image_write_buffer(char *buf, int32 size, void *image_closure); - -#ifdef MOZILLA_30 -XP_Bool MSG_VariableWidthPlaintext = TRUE; /* #### */ -#endif - - -/*#ifndef MOZILLA_30*/ -int PR_CALLBACK -mime_PrefsChangeCallback(const char* prefname, void* data) -{ - MIME_PrefDataValid = 1; /* Invalidates our cached stuff. */ - return PREF_NOERROR; -} -/*#endif / * !MOZILLA_30 */ - - -NET_StreamClass * -MIME_MessageConverter (int format_out, void *closure, - URL_Struct *url, MWContext *context) -{ - int status = 0; - MimeObject *obj; - struct mime_stream_data *msd; - NET_StreamClass *stream = 0; - -#ifdef FO_MAIL_MESSAGE_TO - if (format_out == FO_MAIL_MESSAGE_TO || - format_out == FO_CACHE_AND_MAIL_MESSAGE_TO) - { - /* Bad news -- this would cause an endless loop. */ - XP_ASSERT(0); - return 0; - } -#else /* !FO_MAIL_MESSAGE_TO */ - /* Otherwise, we oughtn't be getting in here at all. */ - XP_ASSERT(format_out != FO_MAIL_TO && format_out != FO_CACHE_AND_MAIL_TO); -#endif /* !FO_MAIL_MESSAGE_TO */ - - msd = XP_NEW(struct mime_stream_data); - if (!msd) return 0; - XP_MEMSET(msd, 0, sizeof(*msd)); -#ifdef DEBUG_terry -#if defined(XP_WIN) || defined(XP_OS2) - msd->logit = XP_FileOpen("C:\\temp\\twtemp.html", xpTemporary, XP_FILE_WRITE); -#endif -#if defined(XP_UNIX) - msd->logit = XP_FileOpen("/tmp/twtemp.html", xpTemporary, XP_FILE_WRITE); -#endif -#endif /* DEBUG_terry */ - msd->url = url; - msd->context = context; - msd->format_out = format_out; - - msd->options = XP_NEW(MimeDisplayOptions); - if (!msd->options) - { - XP_FREE(msd); - return 0; - } - XP_MEMSET(msd->options, 0, sizeof(*msd->options)); -#ifndef MOZILLA_30 - msd->options->pane = url->msg_pane; -#endif /* !MOZILLA_30 */ - - if ((format_out == FO_PRESENT || format_out == FO_CACHE_AND_PRESENT) && - url->fe_data) - { - /* If we're going to the screen, and the URL has fe_data, then it is - an options structure (that is how the news code hands us its callback - functions.) We copy it and free the passed-in data right away. - (If we're not going to the screen, the fe_data might be some random - object intended for someone further down the line; for example, it - could be the XP_File that FO_SAVE_TO_DISK needs to pass around.) - */ - MimeDisplayOptions *opt2 = (MimeDisplayOptions *) url->fe_data; - *msd->options = *opt2; /* copies */ - XP_FREE (opt2); - url->fe_data = 0; - msd->options->attachment_icon_layer_id = 0; /* Sigh... */ - } - - /* Set the defaults, based on the context, and the output-type. - */ - if (format_out == FO_PRESENT || - format_out == FO_CACHE_AND_PRESENT || - format_out == FO_PRINT || - format_out == FO_CACHE_AND_PRINT || - format_out == FO_SAVE_AS_POSTSCRIPT || - format_out == FO_CACHE_AND_SAVE_AS_POSTSCRIPT) - msd->options->fancy_headers_p = TRUE; - -#ifndef MOZILLA_30 - if (format_out == FO_PRESENT || - format_out == FO_CACHE_AND_PRESENT) - msd->options->output_vcard_buttons_p = TRUE; -#endif /* !MOZILLA_30 */ - - if (format_out == FO_PRESENT || - format_out == FO_CACHE_AND_PRESENT) { - msd->options->fancy_links_p = TRUE; - } - - msd->options->headers = MimeHeadersSome; - -/*#ifndef MOZILLA_30*/ - if (MIME_PrefDataValid < 2) { - int32 headertype; - if (MIME_PrefDataValid == 0) { - PREF_RegisterCallback("mail.", &mime_PrefsChangeCallback, NULL); - } - headertype = 1; - PREF_GetIntPref("mail.show_headers", &headertype); - switch (headertype) { - case 0: MIME_HeaderType = MimeHeadersMicro; break; - case 1: MIME_HeaderType = MimeHeadersSome; break; - case 2: MIME_HeaderType = MimeHeadersAll; break; - default: - XP_ASSERT(FALSE); - break; - } - MIME_NoInlineAttachments = TRUE; - PREF_GetBoolPref("mail.inline_attachments", &MIME_NoInlineAttachments); - MIME_NoInlineAttachments = !MIME_NoInlineAttachments; - /* This pref is written down in with the - opposite sense of what we like to use... */ - MIME_WrapLongLines = FALSE; - PREF_GetBoolPref("mail.wrap_long_lines", &MIME_WrapLongLines); - MIME_VariableWidthPlaintext = TRUE; - PREF_GetBoolPref("mail.fixed_width_messages", - &MIME_VariableWidthPlaintext); - MIME_VariableWidthPlaintext = !MIME_VariableWidthPlaintext; - /* This pref is written down in with the - opposite sense of what we like to use... */ - MIME_PrefDataValid = 2; - } - msd->options->no_inline_p = MIME_NoInlineAttachments; - msd->options->wrap_long_lines_p = MIME_WrapLongLines; - msd->options->headers = MIME_HeaderType; -/*#endif / * !MOZILLA_30 */ - - if (context->type == MWContextMail || - context->type == MWContextNews -/*#ifndef MOZILLA_30*/ - || context->type == MWContextMailMsg - || context->type == MWContextNewsMsg -/*#endif / * !MOZILLA_30 */ - ) - { -#ifndef MOZILLA_30 -#ifdef MOZ_MAIL_NEWS - MSG_Pane* pane = MSG_FindPane(context, MSG_MESSAGEPANE); - msd->options->rot13_p = FALSE; - if (pane) { - msd->options->rot13_p = MSG_ShouldRot13Message(pane); - } -#endif /* MOZ_MAIL_NEWS */ -#else /* MOZILLA_30 */ - - XP_Bool all_headers_p = FALSE; - XP_Bool micro_headers_p = FALSE; -#if 0 /* #### */ - MSG_GetContextPrefs(context, - &all_headers_p, - &micro_headers_p, - &msd->options->no_inline_p, - &msd->options->rot13_p, - &msd->options->wrap_long_lines_p); -#endif /* 0 #### */ - if (all_headers_p) - msd->options->headers = MimeHeadersAll; - else if (micro_headers_p) - msd->options->headers = MimeHeadersMicro; - else - msd->options->headers = MimeHeadersSome; - -#endif /* MOZILLA_30 */ - } - - status = mime_parse_url_options(url->address, msd->options); - if (status < 0) - { - FREEIF(msd->options->part_to_load); - XP_FREE(msd->options); - XP_FREE(msd); - return 0; - } - - if (msd->options->headers == MimeHeadersMicro && -#ifndef MOZILLA_30 - (url->address == NULL || (XP_STRNCMP(url->address, "news:", 5) != 0 && - XP_STRNCMP(url->address, "snews:", 6) != 0)) -#else /* MOZILLA_30 */ - context->type == MWContextMail -#endif /* MOZILLA_30 */ - ) - msd->options->headers = MimeHeadersMicroPlus; - - if (format_out == FO_QUOTE_MESSAGE || - format_out == FO_CACHE_AND_QUOTE_MESSAGE -#ifndef MOZILLA_30 - || format_out == FO_QUOTE_HTML_MESSAGE -#endif /* !MOZILLA_30 */ - ) - { - msd->options->headers = MimeHeadersCitation; - msd->options->fancy_headers_p = FALSE; -#ifndef MOZILLA_30 - if (format_out == FO_QUOTE_HTML_MESSAGE) { - msd->options->nice_html_only_p = TRUE; - } -#endif /* !MOZILLA_30 */ - } - - else if (msd->options->headers == MimeHeadersSome && - (format_out == FO_PRINT || - format_out == FO_CACHE_AND_PRINT || - format_out == FO_SAVE_AS_POSTSCRIPT || - format_out == FO_CACHE_AND_SAVE_AS_POSTSCRIPT || - format_out == FO_SAVE_AS_TEXT || - format_out == FO_CACHE_AND_SAVE_AS_TEXT)) - msd->options->headers = MimeHeadersSomeNoRef; - -#ifdef FO_MAIL_MESSAGE_TO - HG09859 - if ((format_out == FO_MAIL_TO || format_out == FO_CACHE_AND_MAIL_TO) && - msd->options->write_html_p == FALSE) - msd->options->decrypt_p = TRUE; -#endif /* FO_MAIL_MESSAGE_TO */ - - msd->options->url = url->address; - msd->options->write_html_p = TRUE; - msd->options->output_init_fn = mime_output_init_fn; - -#if !defined(MOZILLA_30) && defined(XP_MAC) - /* If it's a thread context, don't output all the mime stuff (hangs on Macintosh for - ** unexpanded threadpane, because HTML is generated that needs images and layers). - */ - if (context->type == MWContextMail) - msd->options->output_fn = compose_only_output_fn; - else -#endif /* XP_MAC */ - msd->options->output_fn = mime_output_fn; - - msd->options->set_html_state_fn = mime_set_html_state_fn; -#ifndef MOZILLA_30 - if (format_out == FO_QUOTE_HTML_MESSAGE) { - msd->options->charset_conversion_fn = mime_insert_html_convert_charset; - msd->options->dont_touch_citations_p = TRUE; - } else -#endif - msd->options->charset_conversion_fn = mime_convert_charset; - msd->options->rfc1522_conversion_fn = mime_convert_rfc1522; - msd->options->reformat_date_fn = mime_reformat_date; - msd->options->file_type_fn = mime_file_type; - msd->options->type_description_fn = mime_type_desc; - msd->options->type_icon_name_fn = mime_type_icon; - msd->options->stream_closure = msd; - msd->options->passwd_prompt_fn = 0; - msd->options->passwd_prompt_fn_arg = context; - - msd->options->image_begin = mime_image_begin; - msd->options->image_end = mime_image_end; - msd->options->make_image_html = mime_image_make_image_html; - msd->options->image_write_buffer = mime_image_write_buffer; - -#ifndef MOZILLA_30 - msd->options->variable_width_plaintext_p = MIME_VariableWidthPlaintext; -#else /* MOZILLA_30 */ - msd->options->variable_width_plaintext_p = MSG_VariableWidthPlaintext; -#endif /* MOZILLA_30 */ - - /* ### mwelch We want FO_EDT_SAVE_IMAGE to behave like *_SAVE_AS here - because we're spooling untranslated raw data. */ - if (format_out == FO_SAVE_AS || - format_out == FO_CACHE_AND_SAVE_AS || - format_out == FO_MAIL_TO || - format_out == FO_CACHE_AND_MAIL_TO || -#ifdef FO_EDT_SAVE_IMAGE - format_out == FO_EDT_SAVE_IMAGE || -#endif - msd->options->part_to_load) - msd->options->write_html_p = FALSE; - - XP_ASSERT(!msd->stream); - - obj = mime_new ((MimeObjectClass *)&mimeMessageClass, - (MimeHeaders *) NULL, - MESSAGE_RFC822); - if (!obj) - { - FREEIF(msd->options->part_to_load); - XP_FREE(msd->options); - XP_FREE(msd); - return 0; - } - obj->options = msd->options; - msd->obj = obj; - - /* Both of these better not be true at the same time. */ - XP_ASSERT(! (obj->options->decrypt_p && obj->options->write_html_p)); - - stream = XP_NEW (NET_StreamClass); - if (!stream) - { - FREEIF(msd->options->part_to_load); - XP_FREE(msd->options); - XP_FREE(msd); - XP_FREE(obj); - return 0; - } - XP_MEMSET (stream, 0, sizeof (*stream)); - - stream->name = "MIME Conversion Stream"; - stream->complete = mime_display_stream_complete; - stream->abort = mime_display_stream_abort; - stream->put_block = mime_display_stream_write; - stream->is_write_ready = mime_display_stream_write_ready; - stream->data_object = msd; - stream->window_id = context; - - status = obj->class->initialize(obj); - if (status >= 0) - status = obj->class->parse_begin(obj); - if (status < 0) - { - XP_FREE(stream); - FREEIF(msd->options->part_to_load); - XP_FREE(msd->options); - XP_FREE(msd); - XP_FREE(obj); - return 0; - } - - TRACEMSG(("Returning stream from MIME_MessageConverter")); - - return stream; -} - - -/* Interface between libmime and inline display of images: the abomination - that is known as "internal-external-reconnect". - */ - -struct mime_image_stream_data { - struct mime_stream_data *msd; - URL_Struct *url_struct; - NET_StreamClass *istream; -}; - - -static void * -mime_image_begin(const char *image_url, const char *content_type, - void *stream_closure) -{ - struct mime_stream_data *msd = (struct mime_stream_data *) stream_closure; - struct mime_image_stream_data *mid; - - mid = XP_NEW(struct mime_image_stream_data); - if (!mid) return 0; - - XP_MEMSET(mid, 0, sizeof(*mid)); - mid->msd = msd; - - /* Internal-external-reconnect only works when going to the screen. - In that case, return the mid, but leave it empty (returning 0 - here is interpreted as out-of-memory.) - */ - if (msd->format_out != FO_PRESENT && - msd->format_out != FO_CACHE_AND_PRESENT && - msd->format_out != FO_PRINT && - msd->format_out != FO_CACHE_AND_PRINT && - msd->format_out != FO_SAVE_AS_POSTSCRIPT && - msd->format_out != FO_CACHE_AND_SAVE_AS_POSTSCRIPT) - return mid; -#ifndef MOZILLA_30 - if (!msd->context->img_cx) - /* If there is no image context, e.g. if this is a Text context or a - Mail context on the Mac, then we won't be loading images in the - image viewer. */ - return mid; -#endif /* !MOZILLA_30 */ - - mid->url_struct = NET_CreateURLStruct (image_url, NET_DONT_RELOAD); - if (!mid->url_struct) - { - XP_FREE(mid); - return 0; - } - - mid->url_struct->content_encoding = 0; - mid->url_struct->content_type = XP_STRDUP(content_type); - if (!mid->url_struct->content_type) - { - NET_FreeURLStruct (mid->url_struct); - XP_FREE(mid); - return 0; - } - - mid->istream = NET_StreamBuilder (FO_MULTIPART_IMAGE, mid->url_struct, - msd->context); - if (!mid->istream) - { - NET_FreeURLStruct (mid->url_struct); - XP_FREE(mid); - return 0; - } - - /* When uudecoding, we tend to come up with tiny chunks of data - at a time. Make a stream to put them back together, so that - we hand bigger pieces to the image library. - */ - { - NET_StreamClass *buffer = - NET_MakeRebufferingStream (mid->istream, mid->url_struct, msd->context); - if (buffer) - mid->istream = buffer; - } - XP_ASSERT(msd->istream == NULL); - msd->istream = mid->istream; - return mid; -} - - -static void -mime_image_end(void *image_closure, int status) -{ - struct mime_image_stream_data *mid = - (struct mime_image_stream_data *) image_closure; - - XP_ASSERT(mid); - if (!mid) return; - if (mid->istream) - { - if (status < 0) - mid->istream->abort(mid->istream, status); - else - mid->istream->complete(mid->istream); - XP_ASSERT(mid->msd->istream == mid->istream); - mid->msd->istream = NULL; - XP_FREE (mid->istream); - } - if (mid->url_struct) - NET_FreeURLStruct (mid->url_struct); - XP_FREE(mid); -} - - -static char * -mime_image_make_image_html(void *image_closure) -{ - struct mime_image_stream_data *mid = - (struct mime_image_stream_data *) image_closure; - - const char *prefix = "<P><CENTER><IMG SRC=\""; - const char *suffix = "\"></CENTER><P>"; - const char *url; - char *buf; - XP_ASSERT(mid); - if (!mid) return 0; - - /* Internal-external-reconnect only works when going to the screen. */ - if (!mid->istream) - return XP_STRDUP("<IMG SRC=\"internal-gopher-image\" ALT=\"[Image]\">"); - - url = ((mid->url_struct && mid->url_struct->address) - ? mid->url_struct->address - : ""); - buf = (char *) XP_ALLOC (XP_STRLEN (prefix) + XP_STRLEN (suffix) + - XP_STRLEN (url) + 20); - if (!buf) return 0; - *buf = 0; - - XP_STRCAT (buf, prefix); - XP_STRCAT (buf, url); - XP_STRCAT (buf, suffix); - return buf; -} - - -static int -mime_image_write_buffer(char *buf, int32 size, void *image_closure) -{ - struct mime_image_stream_data *mid = - (struct mime_image_stream_data *) image_closure; - if (!mid) return -1; - if (!mid->istream) return 0; - return mid->istream->put_block(mid->istream, buf, size); -} - - -/* Guessing the filename to use in "Save As", given a URL which may point - to a MIME part that we've recently displayed. (Kloooooge!) - */ - - -#ifdef HAVE_MIME_DATA_SLOT - -/* If the given URL points to the MimeObject currently displayed on MWContext, - or to a sub-part of it, then a freshly-allocated part-address-string will - be returned. (This string will be relative to the URL in the window.) - Else, returns NULL. - */ -char * -mime_extract_relative_part_address(MWContext *context, const char *url) -{ - char *url1 = 0, *url2 = 0, *part = 0, *result = 0; /* free these */ - char *base_part = 0, *sub_part = 0, *s = 0; /* don't free these */ - - XP_ASSERT(context && url); - - if (!context || - !context->mime_data || - !context->mime_data->last_parsed_object || - !context->mime_data->last_parsed_url) - goto FAIL; - - url1 = XP_STRDUP(url); - if (!url1) goto FAIL; /* MK_OUT_OF_MEMORY */ - url2 = XP_STRDUP(context->mime_data->last_parsed_url); - if (!url2) goto FAIL; /* MK_OUT_OF_MEMORY */ - - s = XP_STRCHR(url1, '?'); - if (s) *s = 0; - s = XP_STRCHR(url2, '?'); - if (s) *s = 0; - - if (s) base_part = s+1; - - /* If the two URLs, minus their '?' parts, don't match, give up. - */ - if (!!XP_STRCMP(url1, url2)) - goto FAIL; - - - /* Otherwise, the URLs match, so now we can go search for the part. - */ - - /* First we need to extract `base_part' from url2 -- this is the common - prefix between the two URLs. */ - if (base_part) - { - s = XP_STRSTR(base_part, "?part="); - if (!s) - s = XP_STRSTR(base_part, "&part="); - base_part = s; - if (base_part) /* found it */ - { - base_part += 6; - /* truncate `base_part' after part spec. */ - for (s = base_part; *s != 0 && *s != '?' && *s != '&'; s++) - ; - *s = 0; - } - } - - /* Find the part we're looking for. - */ - s = XP_STRSTR(url, "?part="); - if (!s) - s = XP_STRSTR(url, "&part="); - if (!s) - goto FAIL; - - s += 6; - part = XP_STRDUP(s); - if (!part) goto FAIL; /* MK_OUT_OF_MEMORY */ - - /* truncate `part' after part spec. */ - for (s = part; *s != 0 && *s != '?' && *s != '&'; s++) - ; - *s = 0; - - /* Now remove the common prefix, if any. */ - sub_part = part; - if (base_part) - { - int L = XP_STRLEN(base_part); - if (!strncasecomp(sub_part, base_part, L) && - sub_part[L] == '.') - sub_part += L + 1; - } - - result = XP_STRDUP(sub_part); - -FAIL: - - FREEIF(part); - FREEIF(url1); - FREEIF(url2); - return result; -} - -static char * -mime_guess_url_content_name_1 (MWContext *context, const char *url) -{ - char *name = 0; - char *addr = mime_extract_relative_part_address(context, url); - if (!addr) return 0; - name = mime_find_suggested_name_of_part(addr, - context->mime_data->last_parsed_object); - XP_FREE(addr); - return name; -} - - -char * -MimeGuessURLContentName(MWContext *context, const char *url) -{ - char *result = mime_guess_url_content_name_1 (context, url); - if (result) - return result; - else - { - /* Ok, that didn't work, let's go look in all the other contexts! */ - XP_List *list = XP_GetGlobalContextList(); - int32 i, j = XP_ListCount(list); - for (i = 1; i <= j; i++) - { - MWContext *cx2 = (MWContext *) XP_ListGetObjectNum(list, i); - if (cx2 != context) - { - result = mime_guess_url_content_name_1 (cx2, url); - if (result) return result; - } - } - } - return 0; -} - -static char * -mime_get_url_content_type_1 (MWContext *context, const char *url) -{ - char *name = 0; - char *addr = mime_extract_relative_part_address(context, url); - if (!addr) return 0; - name = mime_find_content_type_of_part(addr, - context->mime_data->last_parsed_object); - XP_FREE(addr); - return name; -} - -/* This routine is currently used to get the content type for a mime part url - so the fe's can decide to open a new browser window or just open the save as dialog. - It only works on a context that is displaying the message containing the part. -*/ -char * -MimeGetURLContentType(MWContext *context, const char *url) -{ - char *result = mime_get_url_content_type_1 (context, url); - /* I don't think we need to look at any other contexts for our purposes, - * but I bow to Jamie's suscpicion that there's a good reason to. - */ - if (result) - return result; - else - { - /* Ok, that didn't work, let's go look in all the other contexts! */ - XP_List *list = XP_GetGlobalContextList(); - int32 i, j = XP_ListCount(list); - for (i = 1; i <= j; i++) - { - MWContext *cx2 = (MWContext *) XP_ListGetObjectNum(list, i); - if (cx2 != context) - { - result = mime_get_url_content_type_1 (cx2, url); - if (result) return result; - } - } - } - return 0; -} - - -static MimeObject* -mime_find_text_html_part_1(MimeObject* obj) -{ - if (mime_subclass_p(obj->class, - (MimeObjectClass*) &mimeInlineTextHTMLClass)) { - return obj; - } - if (mime_subclass_p(obj->class, (MimeObjectClass*) &mimeContainerClass)) { - MimeContainer* cobj = (MimeContainer*) obj; - int32 i; - for (i=0 ; i<cobj->nchildren ; i++) { - MimeObject* result = mime_find_text_html_part_1(cobj->children[i]); - if (result) return result; - } - } - return NULL; -} - - -static MimeObject* -mime_find_text_html_part(MWContext* context) -{ - XP_ASSERT(context); - if (!context || - !context->mime_data || - !context->mime_data->last_parsed_object) - return NULL; - - return mime_find_text_html_part_1(context->mime_data->last_parsed_object); -} - - -XP_Bool -MimeShowingTextHtml(MWContext* context) -{ - return mime_find_text_html_part(context) != NULL; -} - - -extern char* -MimeGetHtmlPartURL(MWContext* context) -{ - MimeObject* obj = mime_find_text_html_part(context); - if (obj == NULL) return NULL; - return mime_part_address(obj); -} - - -/* Finds the main object of the message -- generally a multipart/mixed, - text/plain, or text/html. */ -static MimeObject* -mime_get_main_object(MimeObject* obj) -{ - MimeContainer* cobj; - if (!(mime_subclass_p(obj->class, (MimeObjectClass*) &mimeMessageClass))) { - return obj; - } - cobj = (MimeContainer*) obj; - if (cobj->nchildren != 1) return obj; - obj = cobj->children[0]; - for (;;) { - -#ifdef MOZ_SECURITY - if (!mime_subclass_p(obj->class, - (MimeObjectClass*) &mimeMultipartSignedClass) - && !mime_subclass_p(obj->class, - (MimeObjectClass*) &mimeFilterClass)) -#else - if (!mime_subclass_p(obj->class, - (MimeObjectClass*) &mimeMultipartSignedClass)) -#endif - { - return obj; - } - - HG09860 - cobj = (MimeContainer*) obj; - if (cobj->nchildren != 1) return obj; - obj = cobj->children[0]; - } -} - - -XP_Bool MimeObjectChildIsMessageBody(MimeObject *obj, - XP_Bool *isAlternativeOrRelated) -{ - char *disp = 0; - XP_Bool bRet = FALSE; - MimeObject *firstChild = 0; - MimeContainer *container = (MimeContainer*) obj; - - if (isAlternativeOrRelated) - *isAlternativeOrRelated = FALSE; - - if (!container || - !mime_subclass_p(obj->class, - (MimeObjectClass*) &mimeContainerClass)) - { - return bRet; - } - else if (mime_subclass_p(obj->class, (MimeObjectClass*) - &mimeMultipartRelatedClass)) - { - if (isAlternativeOrRelated) - *isAlternativeOrRelated = TRUE; - return bRet; - } - else if (mime_subclass_p(obj->class, (MimeObjectClass*) - &mimeMultipartAlternativeClass)) - { - if (isAlternativeOrRelated) - *isAlternativeOrRelated = TRUE; - return bRet; - } - - if (container->children) - firstChild = container->children[0]; - - if (!firstChild || - !firstChild->content_type || - !firstChild->headers) - return bRet; - - disp = MimeHeaders_get (firstChild->headers, - HEADER_CONTENT_DISPOSITION, - TRUE, - FALSE); - if (disp /* && !strcasecomp (disp, "attachment") */) - bRet = FALSE; - else if (!strcasecomp (firstChild->content_type, TEXT_PLAIN) || - !strcasecomp (firstChild->content_type, TEXT_HTML) || - !strcasecomp (firstChild->content_type, TEXT_MDL) || - !strcasecomp (firstChild->content_type, MULTIPART_ALTERNATIVE) || - !strcasecomp (firstChild->content_type, MULTIPART_RELATED) || - !strcasecomp (firstChild->content_type, MESSAGE_NEWS) || - !strcasecomp (firstChild->content_type, MESSAGE_RFC822)) - bRet = TRUE; - else - bRet = FALSE; - FREEIF(disp); - return bRet; -} - - -int -MimeGetAttachmentCount(MWContext* context) -{ - MimeObject* obj; - MimeContainer* cobj; - XP_Bool isMsgBody = FALSE, isAlternativeOrRelated = FALSE; - - XP_ASSERT(context); - if (!context || - !context->mime_data || - !context->mime_data->last_parsed_object) { - return 0; - } - obj = mime_get_main_object(context->mime_data->last_parsed_object); - if (!mime_subclass_p(obj->class, (MimeObjectClass*) &mimeContainerClass)) - return 0; - - cobj = (MimeContainer*) obj; - - isMsgBody = MimeObjectChildIsMessageBody(obj, - &isAlternativeOrRelated); - - if (isAlternativeOrRelated) - return 0; - else if (isMsgBody) - return cobj->nchildren - 1; - else - return cobj->nchildren; -} - - -int -MimeGetAttachmentList(MWContext* context, MSG_AttachmentData** data) -{ - MimeObject* obj; - MimeContainer* cobj; - MSG_AttachmentData* tmp; - int32 n; - int32 i; - char* disp; - char c; - XP_Bool isMsgBody = FALSE, isAlternativeOrRelated = FALSE; - - if (!data) return 0; - *data = NULL; - XP_ASSERT(context); - if (!context || - !context->mime_data || - !context->mime_data->last_parsed_object) { - return 0; - } - obj = mime_get_main_object(context->mime_data->last_parsed_object); - if (!mime_subclass_p(obj->class, (MimeObjectClass*) &mimeContainerClass)) { - return 0; - } - isMsgBody = MimeObjectChildIsMessageBody(obj, - &isAlternativeOrRelated); - if (isAlternativeOrRelated) - return 0; - - cobj = (MimeContainer*) obj; - n = cobj->nchildren; /* This is often too big, but that's OK. */ - if (n <= 0) return n; - *data = XP_CALLOC(n + 1, sizeof(MSG_AttachmentData)); - if (!*data) return MK_OUT_OF_MEMORY; - tmp = *data; - c = '?'; - if (XP_STRCHR(context->mime_data->last_parsed_url, '?')) { - c = '&'; - } - - /* let's figure out where to start */ - if (isMsgBody) - i = 1; - else - i = 0; - - for ( ; i<cobj->nchildren ; i++, tmp++) { - MimeObject* child = cobj->children[i]; - char* part = mime_part_address(child); - char* imappart = NULL; - if (!part) return MK_OUT_OF_MEMORY; - if (obj->options->missing_parts) - imappart = mime_imap_part_address (child); - if (imappart) - { - tmp->url = mime_set_url_imap_part(context->mime_data->last_parsed_url, imappart, part); - } - else - { - tmp->url = mime_set_url_part(context->mime_data->last_parsed_url, part, TRUE); - } - /* - tmp->url = PR_smprintf("%s%cpart=%s", context->mime_data->last_parsed_url, - c, part); - */ - if (!tmp->url) return MK_OUT_OF_MEMORY; - tmp->real_type = child->content_type ? - XP_STRDUP(child->content_type) : NULL; - tmp->real_encoding = child->encoding ? XP_STRDUP(child->encoding) : NULL; - disp = MimeHeaders_get(child->headers, HEADER_CONTENT_DISPOSITION, - FALSE, FALSE); - if (disp) { - tmp->real_name = MimeHeaders_get_parameter(disp, "filename", NULL, NULL); - if (tmp->real_name) - { - char *fname = NULL; - fname = mime_decode_filename(tmp->real_name); - if (fname && fname != tmp->real_name) - { - XP_FREE(tmp->real_name); - tmp->real_name = fname; - } - } - XP_FREE(disp); - } - disp = MimeHeaders_get(child->headers, HEADER_CONTENT_TYPE, - FALSE, FALSE); - if (disp) - { - tmp->x_mac_type = MimeHeaders_get_parameter(disp, PARAM_X_MAC_TYPE, NULL, NULL); - tmp->x_mac_creator= MimeHeaders_get_parameter(disp, PARAM_X_MAC_CREATOR, NULL, NULL); - if (!tmp->real_name || *tmp->real_name == 0) - { - XP_FREEIF(tmp->real_name); - tmp->real_name = MimeHeaders_get_parameter(disp, "name", NULL, NULL); - if (tmp->real_name) - { - char *fname = NULL; - fname = mime_decode_filename(tmp->real_name); - if (fname && fname != tmp->real_name) - { - XP_FREE(tmp->real_name); - tmp->real_name = fname; - } - } - } - XP_FREE(disp); - } - tmp->description = MimeHeaders_get(child->headers, - HEADER_CONTENT_DESCRIPTION, - FALSE, FALSE); -#ifndef MOZILLA_30 - if (tmp->real_type && !strcasecomp(tmp->real_type, MESSAGE_RFC822) && - (!tmp->real_name || *tmp->real_name == 0)) - { - StrAllocCopy(tmp->real_name, XP_GetString(XP_FORWARDED_MESSAGE_ATTACHMENT)); - } -#endif /* !MOZILLA_30 */ - } - return 0; -} - - -void -MimeFreeAttachmentList(MSG_AttachmentData* data) -{ - if (data) { - MSG_AttachmentData* tmp; - for (tmp = data ; tmp->url ; tmp++) { - /* Can't do FREEIF on `const' values... */ - if (tmp->url) XP_FREE((char *) tmp->url); - if (tmp->real_type) XP_FREE((char *) tmp->real_type); - if (tmp->real_encoding) XP_FREE((char *) tmp->real_encoding); - if (tmp->real_name) XP_FREE((char *) tmp->real_name); - if (tmp->x_mac_type) XP_FREE((char *) tmp->x_mac_type); - if (tmp->x_mac_creator) XP_FREE((char *) tmp->x_mac_creator); - if (tmp->description) XP_FREE((char *) tmp->description); - tmp->url = 0; - tmp->real_type = 0; - tmp->real_name = 0; - tmp->description = 0; - } - XP_FREE(data); - } -} - - - -void -MimeDestroyContextData(MWContext *context) -{ - INTL_CharSetInfo csi = NULL; - - XP_ASSERT(context); - if (!context) return; - - csi = LO_GetDocumentCharacterSetInfo(context); - if (csi) - INTL_SetCSIMimeCharset(csi, NULL); - - if (!context->mime_data) return; - - if (context->mime_data->last_parsed_object) - { - MimeDisplayOptions *options = - context->mime_data->last_parsed_object->options; - - mime_free(context->mime_data->last_parsed_object); - if (options) - { - FREEIF(options->part_to_load); - XP_FREE(options); - } - - context->mime_data->last_parsed_object = 0; - FREEIF(context->mime_data->last_parsed_url); - } - -#ifdef LOCK_LAST_CACHED_MESSAGE - if (context->mime_data->previous_locked_url) - { - /* duplicated from mime_make_output_stream()... */ - URL_Struct *url_s = - NET_CreateURLStruct(context->mime_data->previous_locked_url, - NET_NORMAL_RELOAD); - if (url_s) - { - /* Note: if post data was involved here, we'd lose. We're assuming - that all we need to save is the url->address. */ - NET_ChangeCacheFileLock(url_s, FALSE); - NET_FreeURLStruct(url_s); - } - XP_FREE(context->mime_data->previous_locked_url); - context->mime_data->previous_locked_url = 0; - } -#endif /* LOCK_LAST_CACHED_MESSAGE */ - - XP_FREE(context->mime_data); - context->mime_data = 0; -} - -#else /* !HAVE_MIME_DATA_SLOT */ - -char * -MimeGuessURLContentName(MWContext *context, const char *url) -{ - return 0; -} - -void -MimeDestroyContextData(MWContext *context) -{ - if (!context) return; - - INTL_SetCSIMimeCharset(LO_GetDocumentCharacterSetInfo(context), NULL); - -} -#endif /* !HAVE_MIME_DATA_SLOT */ - - - - - -/* Interface between netlib and the converters from text/richtext - and text/enriched to text/html: MIME_RichtextConverter() and - MIME_EnrichedTextConverter(). - */ - -struct mime_richtext_data { - URL_Struct *url; /* The URL this is all coming from. */ - MWContext *context; - int format_out; - NET_StreamClass *stream; /* The stream to which we write HTML. */ - char *ibuffer, *obuffer; - uint32 ibuffer_size, obuffer_size; - uint32 ibuffer_fp; - XP_Bool enriched_p; -}; - -static int -mime_richtext_stream_fn (char *buf, int32 size, void *closure) -{ - struct mime_richtext_data *mrd = (struct mime_richtext_data *) closure; - XP_ASSERT(mrd->stream); - if (!mrd->stream) return -1; - return mrd->stream->put_block (mrd->stream, buf, size); -} - -static int32 -mime_richtext_write_line (char* line, uint32 size, void *closure) -{ - struct mime_richtext_data *mrd = (struct mime_richtext_data *) closure; - return MimeRichtextConvert (line, size, mime_richtext_stream_fn, - mrd, &mrd->obuffer, &mrd->obuffer_size, - mrd->enriched_p); -} - -static int -mime_richtext_write (NET_StreamClass *stream, const char* buf, int32 size) -{ - struct mime_richtext_data *data = (struct mime_richtext_data *) stream->data_object; - return XP_LineBuffer (buf, size, &data->ibuffer, &data->ibuffer_size, - &data->ibuffer_fp, FALSE, mime_richtext_write_line, - data); -} - -static unsigned int -mime_richtext_write_ready (NET_StreamClass *stream) -{ - struct mime_richtext_data *data = (struct mime_richtext_data *) stream->data_object; - if (data->stream) - return ((*data->stream->is_write_ready) - (data->stream)); - else - return (MAX_WRITE_READY); -} - -static void -mime_richtext_complete (NET_StreamClass *stream) -{ - struct mime_richtext_data *mrd = (struct mime_richtext_data *) stream->data_object; - if (!mrd) return; - FREEIF(mrd->obuffer); - if (mrd->stream) - { - mrd->stream->complete (mrd->stream); - XP_FREE (mrd->stream); - } - XP_FREE(mrd); -} - -static void -mime_richtext_abort (NET_StreamClass *stream, int status) -{ - struct mime_richtext_data *mrd = (struct mime_richtext_data *) stream->data_object; - if (!mrd) return; - FREEIF(mrd->obuffer); - if (mrd->stream) - { - mrd->stream->abort (mrd->stream, status); - XP_FREE (mrd->stream); - } - XP_FREE(mrd); -} - - -static NET_StreamClass * -MIME_RichtextConverter_1 (int format_out, void *closure, - URL_Struct *url, MWContext *context, - XP_Bool enriched_p) -{ - struct mime_richtext_data *data; - NET_StreamClass *stream, *next_stream; - - next_stream = mime_make_output_stream(TEXT_HTML, 0, 0, 0, 0, - format_out, url, context, NULL); - if (!next_stream) return 0; - - data = XP_NEW(struct mime_richtext_data); - if (!data) - { - XP_FREE(next_stream); - return 0; - } - XP_MEMSET(data, 0, sizeof(*data)); - data->url = url; - data->context = context; - data->format_out = format_out; - data->stream = next_stream; - data->enriched_p = enriched_p; - - stream = XP_NEW (NET_StreamClass); - if (!stream) - { - XP_FREE(next_stream); - XP_FREE(data); - return 0; - } - XP_MEMSET (stream, 0, sizeof (*stream)); - - stream->name = "Richtext Conversion Stream"; - stream->complete = mime_richtext_complete; - stream->abort = mime_richtext_abort; - stream->put_block = mime_richtext_write; - stream->is_write_ready = mime_richtext_write_ready; - stream->data_object = data; - stream->window_id = context; - - TRACEMSG(("Returning stream from MIME_RichtextConverter")); - - return stream; -} - -NET_StreamClass * -MIME_RichtextConverter (int format_out, void *closure, - URL_Struct *url, MWContext *context) -{ - return MIME_RichtextConverter_1 (format_out, closure, url, context, FALSE); -} - -NET_StreamClass * -MIME_EnrichedTextConverter (int format_out, void *closure, - URL_Struct *url, MWContext *context) -{ - return MIME_RichtextConverter_1 (format_out, closure, url, context, TRUE); -} - - - -/* Hooking libmime into netlib. - This stuff used to be done in MSG_RegisterConverters, in libmsg/msgsend.cpp - but we don't currently have message composition, so we need to register - the libmime stuff separately. - */ - -void -MIME_RegisterConverters(void) -{ - int targets1[] = { FO_PRESENT, FO_PRINT }; - int targets2[] = { FO_EMBED, FO_QUOTE_MESSAGE, FO_QUOTE_HTML_MESSAGE, - FO_SAVE_AS, FO_SAVE_AS_TEXT, FO_INTERNAL_IMAGE, FO_FONT -#ifdef XP_UNIX - , FO_SAVE_AS_POSTSCRIPT -#endif /* XP_UNIX */ - }; - int ntargets1 = sizeof(targets1)/sizeof(*targets1); - int ntargets2 = sizeof(targets2)/sizeof(*targets2); - int i; - - for (i = 0; i < ntargets1; i++) - { - NET_RegisterContentTypeConverter (MESSAGE_RFC822, targets1[i], - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, targets1[i], - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (TEXT_RICHTEXT, targets1[i], - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (TEXT_ENRICHED, targets1[i], - NULL, MIME_MessageConverter); -#ifndef MOZILLA_30 - NET_RegisterContentTypeConverter (TEXT_VCARD, targets1[i], - NULL, MIME_MessageConverter); -#endif /* MOZILLA_30 */ -#ifdef MOZ_CALENDAR - NET_RegisterContentTypeConverter (TEXT_CALENDAR, targets1[i], - NULL, MIME_MessageConverter); -#endif /* MOZ_CALENDAR */ - } - - for (i = 0; i < ntargets2; i++) - { - NET_RegisterContentTypeConverter (MESSAGE_RFC822, targets2[i], - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, targets2[i], - NULL, MIME_MessageConverter); - } -} - - - -#ifndef MOZILLA_30 - -#ifdef MOZ_MAIL_NEWS -int -MIME_DisplayAttachmentPane(MWContext* context) -{ - if (context && context->mime_data) { - MSG_Pane* pane = context->mime_data->last_pane; - if (!pane) - pane = MSG_FindPane(context, MSG_MESSAGEPANE); - if (pane) { - MSG_MessagePaneCallbacks* callbacks; - void* closure; - callbacks = MSG_GetMessagePaneCallbacks(pane, &closure); - if (callbacks && callbacks->UserWantsToSeeAttachments) { - (*callbacks->UserWantsToSeeAttachments)(pane, closure); - } - } - } - return 0; -} -#endif /* MOZ_MAIL_NEWS */ - - -/* This struct is the state we used in MIME_VCardConverter() */ -struct mime_vcard_data { - URL_Struct *url; /* original url */ - int format_out; /* intended output format; - should be TEXT-VCARD */ - MWContext *context; - NET_StreamClass *stream; /* not used for now */ - MimeDisplayOptions *options; /* data for communicating with libmime.a */ - MimeObject *obj; /* The root */ -}; - -static int -mime_vcard_write (NET_StreamClass *stream, - const char *buf, - int32 size ) -{ - struct mime_vcard_data *vcd = (struct mime_vcard_data *) stream->data_object; - XP_ASSERT ( vcd ); - - if ( !vcd || !vcd->obj ) return -1; - - return vcd->obj->class->parse_line ((char *) buf, size, vcd->obj); -} - -static unsigned int -mime_vcard_write_ready (NET_StreamClass *stream) -{ - struct mime_vcard_data *vcd = (struct mime_vcard_data *) stream->data_object; - XP_ASSERT (vcd); - - if (!vcd) return MAX_WRITE_READY; - if (vcd->stream) - return vcd->stream->is_write_ready ( vcd->stream ); - else - return MAX_WRITE_READY; -} - -static void -mime_vcard_complete (NET_StreamClass *stream) -{ - struct mime_vcard_data *vcd = (struct mime_vcard_data *) stream->data_object; - - XP_ASSERT (vcd); - - if (!vcd) return; - - if (vcd->obj) { - int status; - - status = vcd->obj->class->parse_eof ( vcd->obj, FALSE ); - vcd->obj->class->parse_end( vcd->obj, status < 0 ? TRUE : FALSE ); - - mime_free (vcd->obj); - vcd->obj = 0; - - if (vcd->stream) { - vcd->stream->complete (vcd->stream); - XP_FREE( vcd->stream ); - vcd->stream = 0; - } - } -} - -static void -mime_vcard_abort (NET_StreamClass *stream, int status ) -{ - struct mime_vcard_data *vcd = (struct mime_vcard_data *) stream->data_object; - - XP_ASSERT (vcd); - if (!vcd) return; - - if (vcd->obj) { - int status=0; - - if ( !vcd->obj->closed_p ) - status = vcd->obj->class->parse_eof ( vcd->obj, TRUE ); - if ( !vcd->obj->parsed_p ) - vcd->obj->class->parse_end( vcd->obj, TRUE ); - - mime_free (vcd->obj); - vcd->obj = 0; - - if (vcd->stream) { - vcd->stream->abort (vcd->stream, status); - XP_FREE( vcd->stream ); - vcd->stream = 0; - } - } - XP_FREE (vcd); -} - -extern int MIME_HasAttachments(MWContext *context) -{ - return (context->mime_data && context->mime_data->last_parsed_object->class->showAttachmentIcon); -} - - -#ifdef MOZ_MAIL_NEWS -extern NET_StreamClass * -MIME_VCardConverter ( int format_out, - void *closure, - URL_Struct *url, - MWContext *context ) -{ - int status = 0; - NET_StreamClass * stream = NULL; - NET_StreamClass * next_stream = NULL; - struct mime_vcard_data *vcd = NULL; - MimeObject *obj; - - XP_ASSERT (url && context); - if ( !url || !context ) return NULL; - - next_stream = mime_make_output_stream (TEXT_HTML, 0, 0, 0, 0, - format_out, url, context, NULL); - - if (!next_stream) return 0; - - - vcd = XP_NEW_ZAP (struct mime_vcard_data); - if (!vcd) { - XP_FREE (next_stream); - return 0; - } - - vcd->url = url; - vcd->context = context; - vcd->format_out = format_out; - vcd->stream = next_stream; - - vcd->options = XP_NEW_ZAP ( MimeDisplayOptions ); - - if ( !vcd->options ) { - XP_FREE (next_stream); - XP_FREE ( vcd ); - return 0; - } - - vcd->options->write_html_p = TRUE; - vcd->options->output_fn = mime_output_fn; - if (format_out == FO_PRESENT || - format_out == FO_CACHE_AND_PRESENT) - vcd->options->output_vcard_buttons_p = TRUE; - -#ifdef MIME_DRAFTS - vcd->options->decompose_file_p = FALSE; /* new field in MimeDisplayOptions */ -#endif /* MIME_DRAFTS */ - - vcd->options->url = url->address; - vcd->options->stream_closure = vcd; - vcd->options->html_closure = vcd; - - obj = mime_new ( (MimeObjectClass *) &mimeInlineTextVCardClass, - (MimeHeaders *) NULL, - TEXT_VCARD ); - - if ( !obj ) { - FREEIF( vcd->options->part_to_load ); - XP_FREE ( next_stream ); - XP_FREE ( vcd->options ); - XP_FREE ( vcd ); - return 0; - } - - obj->options = vcd->options; - vcd->obj = obj; - - stream = XP_NEW_ZAP ( NET_StreamClass ); - if ( !stream ) { - FREEIF ( vcd->options->part_to_load ); - XP_FREE ( next_stream ); - XP_FREE ( vcd->options ); - XP_FREE ( vcd ); - XP_FREE ( obj ); - return 0; - } - - stream->name = "MIME To VCard Converter Stream"; - stream->complete = mime_vcard_complete; - stream->abort = mime_vcard_abort; - stream->put_block = mime_vcard_write; - stream->is_write_ready = mime_vcard_write_ready; - stream->data_object = vcd; - stream->window_id = context; - - status = obj->class->initialize ( obj ); - if ( status >= 0 ) - status = obj->class->parse_begin ( obj ); - if ( status < 0 ) { - XP_FREE ( stream ); - FREEIF( vcd->options->part_to_load ); - XP_FREE ( next_stream ); - XP_FREE ( vcd->options ); - XP_FREE ( vcd ); - XP_FREE ( obj ); - return 0; - } - - return stream; -} -#endif /* MOZ_MAIL_NEWS */ - - - -int -MimeSendMessage(MimeDisplayOptions* options, char* to, char* subject, - char* otherheaders, char* body) -{ - struct mime_stream_data* msd = - (struct mime_stream_data*) options->stream_closure; - return NET_SendMessageUnattended(msd->context, to, subject, - otherheaders, body); -} - -#endif /* !MOZILLA_30 */ - - -int -mime_TranslateCalendar(char* caldata, char** html) -{ -#ifdef JULIAN_EXISTS - static XP_Bool initialized = FALSE; - void* closure; - if (!initialized) { - Julian_Form_Callback_Struct jcbs; - - jcbs.callbackurl = NET_CallbackURLCreate; - jcbs.callbackurlfree = NET_CallbackURLFree; - jcbs.ParseURL = NET_ParseURL; - jcbs.MakeNewWindow = FE_MakeNewWindow; - jcbs.CreateURLStruct = NET_CreateURLStruct; - jcbs.StreamBuilder = NET_StreamBuilder; - jcbs.SACopy = NET_SACopy; - - /* John Sun added 4-22-98 */ - jcbs.SendMessageUnattended = NET_SendMessageUnattended; - jcbs.DestroyWindow = FE_DestroyWindow; - - jcbs.GetString = XP_GetString; - - jf_Initialize(&jcbs); - initialized = TRUE; - } - closure = jf_New(caldata); - *html = jf_getForm(closure); - jf_Destroy(closure); - return 0; -#else /* !JULIAN_EXISTS */ - *html = XP_STRDUP("<b>Can't handle calendar data on this platform yet</b>"); - return 0; -#endif /* !JULIAN_EXISTS */ -} - - - -/* - * - * MIME_JulianConverter Stream handler stuff - * - */ - -#ifdef MOZ_CALENDAR -struct mime_calendar_data { - URL_Struct *url; /* original url */ - int format_out; /* intended output format; should be TEXT-CALENDAR */ - MWContext *context; - NET_StreamClass *stream; /* not used for now */ - MimeDisplayOptions *options; /* data for communicating with libmime.a */ - MimeObject *obj; /* The root */ -}; - - -static int mime_calendar_write (void *stream, const char *buf, int32 size ) -{ - struct mime_calendar_data *cald = (struct mime_calendar_data *) stream; - XP_ASSERT ( cald ); - - if ( !cald || !cald->obj ) return -1; - - return cald->obj->class->parse_line ((char *) buf, size, cald->obj); -} - -static unsigned int mime_calendar_write_ready (void *stream) -{ - struct mime_calendar_data *cald = (struct mime_calendar_data *) stream; - XP_ASSERT (cald); - - if (!cald) return MAX_WRITE_READY; - if (cald->stream) - return cald->stream->is_write_ready ( cald->stream->data_object ); - else - return MAX_WRITE_READY; -} - -static void mime_calendar_complete (void *stream) -{ - struct mime_calendar_data *cald = (struct mime_calendar_data *) stream; - - XP_ASSERT (cald); - - if (!cald) return; - - if (cald->obj) { - int status; - - status = cald->obj->class->parse_eof ( cald->obj, FALSE ); - cald->obj->class->parse_end( cald->obj, status < 0 ? TRUE : FALSE ); - - mime_free (cald->obj); - cald->obj = 0; - - if (cald->stream) { - cald->stream->complete (cald->stream->data_object); - XP_FREE( cald->stream ); - cald->stream = 0; - } - } -} - -static void mime_calendar_abort (void *stream, int status ) -{ - struct mime_calendar_data *cald = (struct mime_calendar_data *) stream; - - XP_ASSERT (cald); - if (!cald) return; - - if (cald->obj) { - int status; - - if ( !cald->obj->closed_p ) - status = cald->obj->class->parse_eof ( cald->obj, TRUE ); - if ( !cald->obj->parsed_p ) - cald->obj->class->parse_end( cald->obj, TRUE ); - - mime_free (cald->obj); - cald->obj = 0; - - if (cald->stream) { - cald->stream->abort (cald->stream->data_object, status); - XP_FREE( cald->stream ); - cald->stream = 0; - } - } - XP_FREE (cald); -} - -extern NET_StreamClass * MIME_JulianConverter (int format_out, void *closure, URL_Struct *url, MWContext *context ) -{ - int status = 0; - NET_StreamClass * stream = NULL; - NET_StreamClass * next_stream = NULL; - struct mime_calendar_data *cald = NULL; - MimeObject *obj; - - XP_ASSERT (url && context); - if ( !url || !context ) return NULL; - - next_stream = mime_make_output_stream (TEXT_HTML, 0, 0, 0, 0, - format_out, url, context, NULL); - - if (!next_stream) return 0; - - cald = XP_NEW_ZAP (struct mime_calendar_data); - if (!cald) { - XP_FREE (next_stream); - return 0; - } - - cald->url = url; - cald->context = context; - cald->format_out = format_out; - cald->stream = next_stream; - - cald->options = XP_NEW_ZAP ( MimeDisplayOptions ); - - if ( !cald->options ) { - XP_FREE (next_stream); - XP_FREE ( cald ); - return 0; - } - - cald->options->write_html_p = TRUE; - cald->options->output_fn = mime_output_fn; - if (format_out == FO_PRESENT || - format_out == FO_CACHE_AND_PRESENT) - cald->options->output_vcard_buttons_p = FALSE; - -#ifdef MIME_DRAFTS - cald->options->decompose_file_p = FALSE; /* new field in MimeDisplayOptions */ -#endif /* MIME_DRAFTS */ - - cald->options->url = url->address; - cald->options->stream_closure = cald; - cald->options->html_closure = cald; - - obj = mime_new ( (MimeObjectClass *) &mimeInlineTextCalendarClass, - (MimeHeaders *) NULL, - TEXT_CALENDAR ); - - if ( !obj ) { - FREEIF( cald->options->part_to_load ); - XP_FREE ( next_stream ); - XP_FREE ( cald->options ); - XP_FREE ( cald ); - return 0; - } - - obj->options = cald->options; - cald->obj = obj; - - stream = XP_NEW_ZAP ( NET_StreamClass ); - if ( !stream ) { - FREEIF ( cald->options->part_to_load ); - XP_FREE ( next_stream ); - XP_FREE ( cald->options ); - XP_FREE ( cald ); - XP_FREE ( obj ); - return 0; - } - - stream->name = "MIME To Calendar Converter Stream"; - stream->complete = mime_calendar_complete; - stream->abort = mime_calendar_abort; - stream->put_block = mime_calendar_write; - stream->is_write_ready = mime_calendar_write_ready; - stream->data_object = cald; - stream->window_id = context; - - status = obj->class->initialize ( obj ); - if ( status >= 0 ) - status = obj->class->parse_begin ( obj ); - if ( status < 0 ) { - XP_FREE ( stream ); - FREEIF( cald->options->part_to_load ); - XP_FREE ( next_stream ); - XP_FREE ( cald->options ); - XP_FREE ( cald ); - XP_FREE ( obj ); - return 0; - } - - return stream; -} -#endif /* MOZ_CALENDAR */ - - diff --git a/mozilla/lib/libmime/mimempar.c b/mozilla/lib/libmime/mimempar.c deleted file mode 100644 index cc6afa0b6d1..00000000000 --- a/mozilla/lib/libmime/mimempar.c +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimempar.c --- definition of the MimeMultipartParallel class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimempar.h" - -#define MIME_SUPERCLASS mimeMultipartClass -MimeDefClass(MimeMultipartParallel, MimeMultipartParallelClass, - mimeMultipartParallelClass, &MIME_SUPERCLASS); - -static int -MimeMultipartParallelClassInitialize(MimeMultipartParallelClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - XP_ASSERT(!oclass->class_initialized); - return 0; -} diff --git a/mozilla/lib/libmime/mimempar.h b/mozilla/lib/libmime/mimempar.h deleted file mode 100644 index 61e7d5e4128..00000000000 --- a/mozilla/lib/libmime/mimempar.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimempar.h --- definition of the MimeMultipartParallel class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEMPAR_H_ -#define _MIMEMPAR_H_ - -#include "mimemult.h" - -/* The MimeMultipartParallel class implements the multipart/parallel MIME - container, which is currently no different from multipart/mixed, since - it's not clear that there's anything useful it could do differently. - */ - -typedef struct MimeMultipartParallelClass MimeMultipartParallelClass; -typedef struct MimeMultipartParallel MimeMultipartParallel; - -struct MimeMultipartParallelClass { - MimeMultipartClass multipart; -}; - -extern MimeMultipartParallelClass mimeMultipartParallelClass; - -struct MimeMultipartParallel { - MimeMultipart multipart; -}; - -#endif /* _MIMEMPAR_H_ */ diff --git a/mozilla/lib/libmime/mimemrel.c b/mozilla/lib/libmime/mimemrel.c deleted file mode 100644 index bfd086a6bd1..00000000000 --- a/mozilla/lib/libmime/mimemrel.c +++ /dev/null @@ -1,946 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemrel.c --- definition of the MimeMultipartRelated class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -/* Thoughts on how to implement this: - - = if the type of this multipart/related is not text/html, then treat - it the same as multipart/mixed. - - = For each part in this multipart/related - = if this part is not the "top" part - = then save this part to a tmp file or a memory object, - kind-of like what we do for multipart/alternative sub-parts. - If this is an object we're blocked on (see below) send its data along. - = else - = emit this part (remember, it's of type text/html) - = at some point, layout may load a URL for <IMG SRC="cid:xxxx">. - we intercept that. - = if one of our cached parts has that cid, return the data for it. - = else, "block", the same way the image library blocks layout when it - doesn't yet have the size of the image. - = at some point, layout may load a URL for <IMG SRC="relative/yyy">. - we need to intercept that too. - = expand the URL, and compare it to our cached objects. - if it matches, return it. - = else block on it. - - = once we get to the end, if we have any sub-part references that we're - still blocked on, map over them: - = if they're cid: references, close them ("broken image" results.) - = if they're URLs, then load them in the normal way. - - -------------------------------------------------- - - Ok, that's fairly complicated. How about an approach where we go through - all the parts first, and don't emit until the end? - - = if the type of this multipart/related is not text/html, then treat - it the same as multipart/mixed. - - = For each part in this multipart/related - = save this part to a tmp file or a memory object, - like what we do for multipart/alternative sub-parts. - - = Emit the "top" part (the text/html one) - = intercept all calls to NET_GetURL, to allow us to rewrite the URL. - (hook into netlib, or only into imglib's calls to GetURL?) - (make sure we're behaving in a context-local way.) - - = when a URL is loaded, look through our cached parts for a match. - = if we find one, map that URL to a "cid:" URL - = else, let it load normally - - = at some point, layout may load a URL for <IMG SRC="cid:xxxx">. - it will do this either because that's what was in the HTML, or because - that's how we "rewrote" the URLs when we intercepted NET_GetURL. - - = if one of our cached parts has the requested cid, return the data - for it. - = else, generate a "broken image" - - = free all the cached data - - -------------------------------------------------- - - How hard would be an approach where we rewrite the HTML? - (Looks like it's not much easier, and might be more error-prone.) - - = if the type of this multipart/related is not text/html, then treat - it the same as multipart/mixed. - - = For each part in this multipart/related - = save this part to a tmp file or a memory object, - like what we do for multipart/alternative sub-parts. - - = Parse the "top" part, and emit slightly different HTML: - = for each <IMG SRC>, <IMG LOWSRC>, <A HREF>? Any others? - = look through our cached parts for a matching URL - = if we find one, map that URL to a "cid:" URL - = else, let it load normally - - = at some point, layout may load a URL for <IMG SRC="cid:xxxx">. - = if one of our cached parts has the requested cid, return the data - for it. - = else, generate a "broken image" - - = free all the cached data - */ - - - -#include "rosetta.h" -#include "mimemrel.h" - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; - -#define MIME_SUPERCLASS mimeMultipartClass -MimeDefClass(MimeMultipartRelated, MimeMultipartRelatedClass, - mimeMultipartRelatedClass, &MIME_SUPERCLASS); - - -/* Stupid utility function. Really ought to be part of the standard string - package if you ask me...*/ - -static char* mime_strnchr(char* str, char c, int length) -{ - int i; - for (i=0 ; i<length ; i++) { - if (*str == c) return str; - str++; - } - return NULL; -} - - -static int -MimeMultipartRelated_initialize(MimeObject* obj) -{ - MimeMultipartRelated* relobj = (MimeMultipartRelated*) obj; - relobj->base_url = MimeHeaders_get(obj->headers, "Content-Base", - FALSE, FALSE); - /* rhp: need this for supporting Content-Location */ - if (!relobj->base_url) - { - relobj->base_url = MimeHeaders_get(obj->headers, "Content-Location", - FALSE, FALSE); - } - /* rhp: need this for supporting Content-Location */ - - /* I used to have code here to test if the type was text/html. Then I - added multipart/alternative as being OK, too. Then I found that the - VCard spec seems to talk about having the first part of a - multipart/related be an application/directory. At that point, I decided - to punt. We handle anything as the first part, and stomp on the HTML it - generates to adjust tags to point into the other parts. This probably - works out to something reasonable in most cases. */ - - relobj->hash = XP_HashTableNew(20, XP_StringHash, - (XP_HashCompFunction) strcmp); - if (!relobj->hash) return MK_OUT_OF_MEMORY; - - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(obj); -} - -XP_Bool mime_multipart_related_nukehash(XP_HashTable table, const void* key, - void* value, void* closure) -{ - XP_FREE((char*) key); - XP_FREE((char*) value); - return TRUE; -} - -static void -MimeMultipartRelated_finalize (MimeObject *obj) -{ - MimeMultipartRelated* relobj = (MimeMultipartRelated*) obj; - FREEIF(relobj->base_url); - FREEIF(relobj->curtag); - if (relobj->hash) { - XP_MapRemhash(relobj->hash, mime_multipart_related_nukehash, NULL); - XP_HashTableDestroy(relobj->hash); - relobj->hash = NULL; - } - if (relobj->file_stream) { - XP_FileClose(relobj->file_stream); - relobj->file_stream = NULL; - } - if (relobj->file_buffer_name) { - XP_FileRemove(relobj->file_buffer_name, xpTemporary); - XP_FREE(relobj->file_buffer_name); - relobj->file_buffer_name = 0; - } - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize(obj); -} - -#if 0 /* #### */ -char * escape_unescaped_percents(const char *incomingURL); -#endif /* #### */ - -/* This routine is only necessary because the mailbox URL fed to us - by the winfe can contain spaces and '>'s in it. It's a hack. */ -static char * -escape_for_mrel_subst(char *inURL) -{ - char *output, *inC, *outC, *temp; - - /* XP_STRLEN asserts the presence of a string in inURL */ - int size = XP_STRLEN(inURL) + 1; - - for(inC = inURL; *inC; inC++) - if ((*inC == ' ') || (*inC == '>')) - size += 2; /* space -> '%20', '>' -> '%3E', etc. */ - - output = XP_ALLOC(size); - if (output) - { - /* Walk through the source string, copying all chars - except for spaces, which get escaped. */ - inC = inURL; - outC = output; - while(*inC) - { - if (*inC == ' ') - { - *outC++ = '%'; *outC++ = '2'; *outC++ = '0'; - } - else if (*inC == '>') - { - *outC++ = '%'; *outC++ = '3'; *outC++ = 'E'; - } - else - *outC++ = *inC; - - inC++; - } - *outC = '\0'; - -#if 0 /* #### */ - temp = escape_unescaped_percents(output); - if (temp) - { - FREEIF(output); - output = temp; - } -#endif /* #### */ - } - return output; -} -/* rhp - need to support start parameter */ -#define HEADER_PARM_START "start" /* this goes in libmime.h */ - -static XP_Bool -MimeStartParamExists(MimeObject *obj, MimeObject* child) -{ - char *ct = MimeHeaders_get (obj->headers, HEADER_CONTENT_TYPE, FALSE, FALSE); - char *st = (ct - ? MimeHeaders_get_parameter(ct, HEADER_PARM_START, NULL, NULL) - : 0); - if (!st) - return FALSE; - - FREEIF(st); - FREEIF(ct); - return TRUE; -} - -static XP_Bool -MimeThisIsStartPart(MimeObject *obj, MimeObject* child) -{ - XP_Bool rval = FALSE; - char *ct, *st, *cst; - - ct = MimeHeaders_get (obj->headers, HEADER_CONTENT_TYPE, FALSE, FALSE); - st = (ct - ? MimeHeaders_get_parameter(ct, HEADER_PARM_START, NULL, NULL) - : 0); - if (!st) - return FALSE; - - cst = MimeHeaders_get(child->headers, "Content-ID", FALSE, FALSE); - if (!cst) - rval = FALSE; - else - { - char *tmp = cst; - if (*tmp == '<') - { - int length; - tmp++; - length = XP_STRLEN(tmp); - if (length > 0 && tmp[length - 1] == '>') - { - tmp[length - 1] = '\0'; - } - } - - rval = (!XP_STRCMP(st, tmp)); - } - - FREEIF(st); - FREEIF(ct); - FREEIF(cst); - return rval; -} -/* rhp - gotta support the "start" parameter */ - -static XP_Bool -MimeMultipartRelated_output_child_p(MimeObject *obj, MimeObject* child) -{ - MimeMultipartRelated *relobj = (MimeMultipartRelated *) obj; - - /* rhp - Changed from "if (relobj->head_loaded)" alone to support the - start parameter - */ - if ( - (relobj->head_loaded) || - (MimeStartParamExists(obj, child) && !MimeThisIsStartPart(obj, child)) - ) - { - /* This is a child part. Just remember the mapping between the URL - it represents and the part-URL to get it back. */ - char* location = MimeHeaders_get(child->headers, "Content-Location", - FALSE, FALSE); - if (!location) { - char* tmp = MimeHeaders_get(child->headers, "Content-ID", - FALSE, FALSE); - if (tmp) { - char* tmp2 = tmp; - if (*tmp2 == '<') { - int length; - tmp2++; - length = XP_STRLEN(tmp2); - if (length > 0 && tmp2[length - 1] == '>') { - tmp2[length - 1] = '\0'; - } - } - location = PR_smprintf("cid:%s", tmp2); - XP_FREE(tmp); - } - } - - if (location) { - char *absolute; - char *base_url = MimeHeaders_get(child->headers, "Content-Base", - FALSE, FALSE); - /* rhp: need this for supporting Content-Location */ - if (!base_url) - { - base_url = MimeHeaders_get(child->headers, "Content-Location", FALSE, FALSE); - } - /* rhp: need this for supporting Content-Location */ - - absolute = NET_MakeAbsoluteURL(base_url ? base_url : relobj->base_url, location); - - FREEIF(base_url); - XP_FREE(location); - if (absolute) { - char* partnum = mime_part_address(child); - if (partnum) { - char* part; - part = mime_set_url_part(obj->options->url, partnum, - FALSE); - if (part) { - /* If there's a space in the url, escape the url. - (This happens primarily on Windows and Unix.) */ - char *temp = part; - if (XP_STRCHR(part, ' ') || XP_STRCHR(part, '>') || XP_STRCHR(part, '%')) - temp = escape_for_mrel_subst(part); - XP_Puthash(relobj->hash, absolute, temp); - - /* rhp - If this part ALSO has a Content-ID we need to put that into - the hash table and this is what this code does - */ - { - char *tloc; - char *tmp = MimeHeaders_get(child->headers, "Content-ID", FALSE, FALSE); - if (tmp) - { - char* tmp2 = tmp; - if (*tmp2 == '<') - { - int length; - tmp2++; - length = XP_STRLEN(tmp2); - if (length > 0 && tmp2[length - 1] == '>') - { - tmp2[length - 1] = '\0'; - } - } - - tloc = PR_smprintf("cid:%s", tmp2); - XP_FREE(tmp); - if (tloc) - { - XP_Puthash(relobj->hash, tloc, XP_STRDUP(temp)); - } - } - } - /* rhp - End of putting more stuff into the hash table */ - - /* The value string that is added to the hashtable will be deleted - by the hashtable at destruction time. So if we created an - escaped string for the hashtable, we have to delete the - part URL that was given to us. */ - if (temp != part) XP_FREE(part); - } - XP_FREE(partnum); - } - } - } - } else { - /* Ah-hah! We're the head object. */ - char* base_url; - relobj->head_loaded = TRUE; - relobj->headobj = child; - relobj->buffered_hdrs = MimeHeaders_copy(child->headers); - base_url = MimeHeaders_get(child->headers, "Content-Base", - FALSE, FALSE); - /* rhp: need this for supporting Content-Location */ - if (!base_url) - { - base_url = MimeHeaders_get(child->headers, "Content-Location", FALSE, FALSE); - } - /* rhp: need this for supporting Content-Location */ - - if (base_url) { - /* If the head object has a base_url associated with it, use - that instead of any base_url that may have been associated - with the multipart/related. */ - FREEIF(relobj->base_url); - relobj->base_url = base_url; - } - - } - if (obj->options && !obj->options->write_html_p -#ifdef MIME_DRAFTS - && !obj->options->decompose_file_p -#endif /* MIME_DRAFTS */ - ) - { - return TRUE; - } - - return FALSE; /* Don't actually parse this child; we'll handle - all that at eof time. */ -} - -static int -MimeMultipartRelated_parse_child_line (MimeObject *obj, - char *line, int32 length, - XP_Bool first_line_p) -{ - MimeContainer *cont = (MimeContainer *) obj; - MimeMultipartRelated *relobj = (MimeMultipartRelated *) obj; - int status; - MimeObject *kid; - - if (obj->options && !obj->options->write_html_p -#ifdef MIME_DRAFTS - && !obj->options->decompose_file_p -#endif /* MIME_DRAFTS */ - ) - { - /* Oh, just go do the normal thing... */ - return ((MimeMultipartClass*)&MIME_SUPERCLASS)-> - parse_child_line(obj, line, length, first_line_p); - } - - /* Throw it away if this isn't the head object. (Someday, maybe we'll - cache it instead.) */ - XP_ASSERT(cont->nchildren > 0); - if (cont->nchildren <= 0) - return -1; - kid = cont->children[cont->nchildren-1]; - XP_ASSERT(kid); - if (!kid) return -1; - if (kid != relobj->headobj) return 0; - - /* Buffer this up (###tw much code duplication from mimemalt.c) */ - /* If we don't yet have a buffer (either memory or file) try and make a - memory buffer. */ - if (!relobj->head_buffer && !relobj->file_buffer_name) { - int target_size = 1024 * 50; /* try for 50k */ - while (target_size > 0) { - relobj->head_buffer = (char *) XP_ALLOC(target_size); - if (relobj->head_buffer) break; /* got it! */ - target_size -= (1024 * 5); /* decrease it and try again */ - } - - if (relobj->head_buffer) { - relobj->head_buffer_size = target_size; - } else { - relobj->head_buffer_size = 0; - } - - relobj->head_buffer_fp = 0; - } - - /* Ok, if at this point we still don't have either kind of buffer, try and - make a file buffer. */ - if (!relobj->head_buffer && !relobj->file_buffer_name) { - relobj->file_buffer_name = WH_TempName(xpTemporary, "nsma"); - if (!relobj->file_buffer_name) return MK_OUT_OF_MEMORY; - - relobj->file_stream = XP_FileOpen(relobj->file_buffer_name, - xpTemporary, - XP_FILE_WRITE_BIN); - if (!relobj->file_stream) { - return MK_UNABLE_TO_OPEN_TMP_FILE; - } - } - - XP_ASSERT(relobj->head_buffer || relobj->file_stream); - - - /* If this line will fit in the memory buffer, put it there. - */ - if (relobj->head_buffer && - relobj->head_buffer_fp + length < relobj->head_buffer_size) { - XP_MEMCPY(relobj->head_buffer + relobj->head_buffer_fp, line, length); - relobj->head_buffer_fp += length; - } else { - /* Otherwise it won't fit; write it to the file instead. */ - - /* If the file isn't open yet, open it, and dump the memory buffer - to it. */ - if (!relobj->file_stream) { - if (!relobj->file_buffer_name) { - relobj->file_buffer_name = WH_TempName (xpTemporary, "nsma"); - } - if (!relobj->file_buffer_name) return MK_OUT_OF_MEMORY; - - relobj->file_stream = XP_FileOpen(relobj->file_buffer_name, - xpTemporary, - XP_FILE_WRITE_BIN); - if (!relobj->file_stream) { - return MK_UNABLE_TO_OPEN_TMP_FILE; - } - - if (relobj->head_buffer && relobj->head_buffer_fp) { - status = XP_FileWrite (relobj->head_buffer, - relobj->head_buffer_fp, - relobj->file_stream); - if (status < 0) return status; - } - - FREEIF(relobj->head_buffer); - relobj->head_buffer_fp = 0; - relobj->head_buffer_size = 0; - } - - /* Dump this line to the file. */ - status = XP_FileWrite (line, length, relobj->file_stream); - if (status < 0) return status; - } - - return 0; -} - - - - -static int -real_write(MimeMultipartRelated* relobj, char* buf, int32 size) -{ - MimeObject* obj = (MimeObject*) relobj; - void* closure = relobj->real_output_closure; - -#ifdef MIME_DRAFTS - if ( obj->options && - obj->options->decompose_file_p && - obj->options->decompose_file_output_fn ) - { - return obj->options->decompose_file_output_fn - (buf, size, obj->options->stream_closure); - } - else -#endif /* MIME_DRAFTS */ - { - if (!closure) { - MimeObject* obj = (MimeObject*) relobj; - closure = obj->options->stream_closure; - } - return relobj->real_output_fn(buf, size, closure); - } -} - - -static int -push_tag(MimeMultipartRelated* relobj, const char* buf, int32 size) -{ - if (size + relobj->curtag_length > relobj->curtag_max) { - relobj->curtag_max += 2 * size; - if (relobj->curtag_max < 1024) relobj->curtag_max = 1024; - if (!relobj->curtag) { - relobj->curtag = (char*) XP_ALLOC(relobj->curtag_max); - } else { - relobj->curtag = (char*) XP_REALLOC(relobj->curtag, - relobj->curtag_max); - } - if (!relobj->curtag) return MK_OUT_OF_MEMORY; - } - XP_MEMCPY(relobj->curtag + relobj->curtag_length, buf, size); - relobj->curtag_length += size; - return 0; -} - -static int -flush_tag(MimeMultipartRelated* relobj) -{ - int length = relobj->curtag_length; - char* buf; - int status; - - if (relobj->curtag == NULL || length == 0) return 0; - - status = push_tag(relobj, "", 1); /* Push on a trailing NULL. */ - if (status < 0) return status; - buf = relobj->curtag; - XP_ASSERT(*buf == '<' && buf[length - 1] == '>'); - while (*buf) { - char c; - char* absolute; - char* part_url; - char* ptr = buf; - char *ptr2; - XP_Bool isquote = FALSE; - while (*ptr && *ptr != '=') ptr++; - if (*ptr == '=') { - ptr++; - if (*ptr == '"') { - isquote = TRUE; - /* Take up the double quote and leading space here as well. */ - /* Safe because there's a '>' at the end */ - do {ptr++;} while (XP_IS_SPACE(*ptr)); - } - } - status = real_write(relobj, buf, ptr - buf); - if (status < 0) return status; - buf = ptr; - if (!*buf) break; - if (isquote) - { - ptr = mime_strnchr(buf, '"', length - (buf - relobj->curtag)); - } else { - for (ptr = buf; *ptr ; ptr++) { - if (*ptr == '>' || XP_IS_SPACE(*ptr)) break; - } - XP_ASSERT(*ptr); - } - if (!ptr || !*ptr) break; - - while(buf < ptr) - { - /* ### mwelch For each word in the value string, see if - the word is a cid: URL. If so, attempt to - substitute the appropriate mailbox part URL in - its place. */ - ptr2=buf; /* walk from the left end rightward */ - while((ptr2<ptr) && (!XP_IS_SPACE(*ptr2))) - ptr2++; - /* Compare the beginning of the word with "cid:". Yuck. */ - if (((ptr2 - buf) > 4) && - (buf[0]=='c' && buf[1]=='i' && buf[2]=='d' && buf[3]==':')) - { - /* Null terminate the word so we can... */ - c = *ptr2; - *ptr2 = '\0'; - - /* Construct a URL out of the word. */ - absolute = NET_MakeAbsoluteURL(relobj->base_url, buf); - - /* See if we have a mailbox part URL - corresponding to this cid. */ - part_url = absolute ? XP_Gethash(relobj->hash, buf, NULL) - : NULL; - FREEIF(absolute); - - /*If we found a mailbox part URL, write that out instead.*/ - if (part_url) - { - status = real_write(relobj, part_url, XP_STRLEN(part_url)); - if (status < 0) return status; - buf = ptr2; /* skip over the cid: URL we substituted */ - } - - /* Restore the character that we nulled. */ - *ptr2 = c; - } - /* rhp - if we get here, we should still check against the hash table! */ - else - { - char holder = *ptr2; - char *realout; - - *ptr2 = '\0'; - - /* Construct a URL out of the word. */ - absolute = NET_MakeAbsoluteURL(relobj->base_url, buf); - - /* See if we have a mailbox part URL - corresponding to this cid. */ - if (absolute) - realout = XP_Gethash(relobj->hash, absolute, NULL); - else - realout = XP_Gethash(relobj->hash, buf, NULL); - - *ptr2 = holder; - FREEIF(absolute); - - if (realout) - { - status = real_write(relobj, realout, XP_STRLEN(realout)); - if (status < 0) return status; - buf = ptr2; /* skip over the cid: URL we substituted */ - } - } - /* rhp - if we get here, we should still check against the hash table! */ - - /* Advance to the beginning of the next word, or to - the end of the value string. */ - while((ptr2<ptr) && (XP_IS_SPACE(*ptr2))) - ptr2++; - - /* Write whatever original text remains after - cid: URL substitution. */ - status = real_write(relobj, buf, ptr2-buf); - if (status < 0) return status; - buf = ptr2; - } - } - if (buf && *buf) { - status = real_write(relobj, buf, XP_STRLEN(buf)); - if (status < 0) return status; - } - relobj->curtag_length = 0; - return 0; -} - - - -static int -mime_multipart_related_output_fn(char* buf, int32 size, void *stream_closure) -{ - MimeMultipartRelated *relobj = (MimeMultipartRelated *) stream_closure; - char* ptr; - int32 delta; - int status; - while (size > 0) { - if (relobj->curtag_length > 0) { - ptr = mime_strnchr(buf, '>', size); - if (!ptr) { - return push_tag(relobj, buf, size); - } - delta = ptr - buf + 1; - status = push_tag(relobj, buf, delta); - if (status < 0) return status; - status = flush_tag(relobj); - if (status < 0) return status; - buf += delta; - size -= delta; - } - ptr = mime_strnchr(buf, '<', size); - if (ptr && ptr - buf >= size) ptr = 0; - if (!ptr) { - return real_write(relobj, buf, size); - } - delta = ptr - buf; - status = real_write(relobj, buf, delta); - if (status < 0) return status; - buf += delta; - size -= delta; - XP_ASSERT(relobj->curtag_length == 0); - status = push_tag(relobj, buf, 1); - if (status < 0) return status; - XP_ASSERT(relobj->curtag_length == 1); - buf++; - size--; - } - return 0; -} - - -static int -MimeMultipartRelated_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - /* OK, all the necessary data has been collected. We now have to spew out - the HTML. We let it go through all the normal mechanisms (which - includes content-encoding handling), and intercept the output data to do - translation of the tags. Whee. */ - - MimeMultipartRelated *relobj = (MimeMultipartRelated *) obj; - int status = 0; - MimeObject *body; - char* ct; - const char* dct; - - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); - if (status < 0) goto FAIL; - - if (!relobj->headobj) return 0; - - ct = (relobj->buffered_hdrs - ? MimeHeaders_get (relobj->buffered_hdrs, HEADER_CONTENT_TYPE, - TRUE, FALSE) - : 0); - dct = (((MimeMultipartClass *) obj->class)->default_part_type); - - relobj->real_output_fn = obj->options->output_fn; - relobj->real_output_closure = obj->options->output_closure; - - obj->options->output_fn = mime_multipart_related_output_fn; - obj->options->output_closure = obj; - - body = mime_create(((ct && *ct) ? ct : (dct ? dct : TEXT_HTML)), - relobj->buffered_hdrs, obj->options); - if (!body) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - status = ((MimeContainerClass *) obj->class)->add_child(obj, body); - if (status < 0) { - mime_free(body); - goto FAIL; - } - -#ifdef MIME_DRAFTS - if ( obj->options && - obj->options->decompose_file_p && - obj->options->decompose_file_init_fn && - (relobj->file_buffer_name || relobj->head_buffer)) - { - status = obj->options->decompose_file_init_fn ( obj->options->stream_closure, - relobj->buffered_hdrs ); - if (status < 0) return status; - } -#endif /* MIME_DRAFTS */ - - - /* Now that we've added this new object to our list of children, - start its parser going. */ - status = body->class->parse_begin(body); - if (status < 0) goto FAIL; - - if (relobj->head_buffer) { - /* Read it out of memory. */ - XP_ASSERT(!relobj->file_buffer_name && !relobj->file_stream); - - status = body->class->parse_buffer(relobj->head_buffer, - relobj->head_buffer_fp, - body); - } else if (relobj->file_buffer_name) { - /* Read it off disk. - */ - char *buf; - int32 buf_size = 10 * 1024; /* 10k; tune this? */ - - XP_ASSERT(relobj->head_buffer_size == 0 && - relobj->head_buffer_fp == 0); - XP_ASSERT(relobj->file_buffer_name); - if (!relobj->file_buffer_name) { - status = -1; - goto FAIL; - } - - buf = (char *) XP_ALLOC(buf_size); - if (!buf) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - if (relobj->file_stream) { - XP_FileClose(relobj->file_stream); - } - relobj->file_stream = XP_FileOpen(relobj->file_buffer_name, - xpTemporary, - XP_FILE_READ_BIN); - if (!relobj->file_stream) { - XP_FREE(buf); - status = MK_UNABLE_TO_OPEN_TMP_FILE; - goto FAIL; - } - - while(1) { - int32 rstatus = XP_FileRead(buf, buf_size - 1, - relobj->file_stream); - if (rstatus <= 0) { - status = rstatus; - break; - } else { - /* It would be really nice to be able to yield here, and let - some user events and other input sources get processed. - Oh well. */ - - status = body->class->parse_buffer(buf, rstatus, body); - if (status < 0) break; - } - } - XP_FREE(buf); - } - - if (status < 0) goto FAIL; - - /* Done parsing. */ - status = body->class->parse_eof(body, FALSE); - if (status < 0) goto FAIL; - status = body->class->parse_end(body, FALSE); - if (status < 0) goto FAIL; - -FAIL: - -#ifdef MIME_DRAFTS - if ( obj->options && - obj->options->decompose_file_p && - obj->options->decompose_file_close_fn && - (relobj->file_buffer_name || relobj->head_buffer)) { - status = obj->options->decompose_file_close_fn ( obj->options->stream_closure ); - if (status < 0) return status; - } -#endif /* MIME_DRAFTS */ - - relobj->headobj = NULL; - obj->options->output_fn = relobj->real_output_fn; - obj->options->output_closure = relobj->real_output_closure; - - return status; -} - - - - -static int -MimeMultipartRelatedClassInitialize(MimeMultipartRelatedClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeMultipartClass *mclass = (MimeMultipartClass *) class; - XP_ASSERT(!oclass->class_initialized); - oclass->initialize = MimeMultipartRelated_initialize; - oclass->finalize = MimeMultipartRelated_finalize; - oclass->parse_eof = MimeMultipartRelated_parse_eof; - mclass->output_child_p = MimeMultipartRelated_output_child_p; - mclass->parse_child_line = MimeMultipartRelated_parse_child_line; - return 0; -} diff --git a/mozilla/lib/libmime/mimemrel.h b/mozilla/lib/libmime/mimemrel.h deleted file mode 100644 index 4c1f95ce8d6..00000000000 --- a/mozilla/lib/libmime/mimemrel.h +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemrel.h --- definition of the MimeMultipartRelated class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEMREL_H_ -#define _MIMEMREL_H_ - -#include "mimemult.h" -#include "xp_hash.h" - - -/* The MimeMultipartRelated class implements the multipart/related MIME - container, which allows `sibling' sub-parts to refer to each other. - */ - -typedef struct MimeMultipartRelatedClass MimeMultipartRelatedClass; -typedef struct MimeMultipartRelated MimeMultipartRelated; - -struct MimeMultipartRelatedClass { - MimeMultipartClass multipart; -}; - -extern MimeMultipartRelatedClass mimeMultipartRelatedClass; - -struct MimeMultipartRelated { - MimeMultipart multipart; /* superclass variables */ - - char* base_url; /* Base URL (if any) for the whole - multipart/related. */ - - char* head_buffer; /* Buffer used to remember the text/html 'head' - part. */ - int32 head_buffer_fp; /* Active length. */ - int32 head_buffer_size; /* How big it is. */ - - char *file_buffer_name; /* The name of a temp file used when we - run out of room in the head_buffer. */ - XP_File file_stream; /* A stream to it. */ - - MimeHeaders* buffered_hdrs; /* The headers of the 'head' part. */ - - XP_Bool head_loaded; /* Whether we've already passed the 'head' - part. */ - MimeObject* headobj; /* The actual text/html head object. */ - - XP_HashTable hash; /* Conversion between URLs and part URLs. */ - - int (*real_output_fn) (char *buf, int32 size, void *stream_closure); - void* real_output_closure; - - char* curtag; - int32 curtag_max; - int32 curtag_length; - - - -}; - -#endif /* _MIMEMREL_H_ */ diff --git a/mozilla/lib/libmime/mimemsg.c b/mozilla/lib/libmime/mimemsg.c deleted file mode 100644 index 13455e54454..00000000000 --- a/mozilla/lib/libmime/mimemsg.c +++ /dev/null @@ -1,596 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemsg.c --- definition of the MimeMessage class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimemsg.h" - -#define MIME_SUPERCLASS mimeContainerClass -MimeDefClass(MimeMessage, MimeMessageClass, mimeMessageClass, - &MIME_SUPERCLASS); - -static int MimeMessage_initialize (MimeObject *); -static void MimeMessage_finalize (MimeObject *); -static int MimeMessage_add_child (MimeObject *, MimeObject *); -static int MimeMessage_parse_begin (MimeObject *); -static int MimeMessage_parse_line (char *, int32, MimeObject *); -static int MimeMessage_parse_eof (MimeObject *, XP_Bool); -static int MimeMessage_close_headers (MimeObject *obj); -static int MimeMessage_write_headers_html (MimeObject *); - -#ifndef MOZ_MAIL_COMPOSE -extern MimeObjectClass mimeFilterClass; -#endif /* MOZ_MAIL_COMPOSE */ - -#ifdef XP_UNIX -extern void MimeHeaders_do_unix_display_hook_hack(MimeHeaders *); -#endif /* XP_UNIX */ - -#if defined(DEBUG) && defined(XP_UNIX) -static int MimeMessage_debug_print (MimeObject *, FILE *, int32 depth); -#endif - -extern MimeObjectClass mimeMultipartClass; - -static int -MimeMessageClassInitialize(MimeMessageClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeContainerClass *cclass = (MimeContainerClass *) class; - - XP_ASSERT(!oclass->class_initialized); - oclass->initialize = MimeMessage_initialize; - oclass->finalize = MimeMessage_finalize; - oclass->parse_begin = MimeMessage_parse_begin; - oclass->parse_line = MimeMessage_parse_line; - oclass->parse_eof = MimeMessage_parse_eof; - cclass->add_child = MimeMessage_add_child; - -#if defined(DEBUG) && defined(XP_UNIX) - oclass->debug_print = MimeMessage_debug_print; -#endif - return 0; -} - - -static int -MimeMessage_initialize (MimeObject *object) -{ - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(object); -} - -static void -MimeMessage_finalize (MimeObject *object) -{ - MimeMessage *msg = (MimeMessage *)object; - if (msg->hdrs) - MimeHeaders_free(msg->hdrs); - msg->hdrs = 0; - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize(object); -} - -static int -MimeMessage_parse_begin (MimeObject *obj) -{ - int status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_begin(obj); - if (status < 0) return status; - - /* Messages have separators before the headers, except for the outermost - message. */ - return MimeObject_write_separator(obj); -} - - -static int -MimeMessage_parse_line (char *line, int32 length, MimeObject *obj) -{ - MimeMessage *msg = (MimeMessage *) obj; - int status = 0; - - XP_ASSERT(line && *line); - if (!line || !*line) return -1; - - HG09869 - - /* If we already have a child object, then we're done parsing headers, - and all subsequent lines get passed to the inferior object without - further processing by us. (Our parent will stop feeding us lines - when this MimeMessage part is out of data.) - */ - if (msg->container.nchildren) - { - MimeObject *kid = msg->container.children[0]; - XP_Bool nl; - XP_ASSERT(kid); - if (!kid) return -1; - - /* Don't allow MimeMessage objects to not end in a newline, since it - would be inappropriate for any following part to appear on the same - line as the last line of the message. - - #### This assumes that the only time the `parse_line' method is - called with a line that doesn't end in a newline is when that line - is the last line. - */ - nl = (length > 0 && (line[length-1] == CR || line[length-1] == LF)); - -#ifdef MIME_DRAFTS - if ( !mime_typep (kid, (MimeObjectClass*) &mimeMessageClass) && - obj->options && - obj->options->decompose_file_p && - ! obj->options->is_multipart_msg && - obj->options->decompose_file_output_fn ) - { - HG09870 - { - status = obj->options->decompose_file_output_fn (line, - length, - obj->options->stream_closure); - if (status < 0) return status; - if (!nl) { - status = obj->options->decompose_file_output_fn (LINEBREAK, - LINEBREAK_LEN, - obj->options->stream_closure); - if (status < 0) return status; - } - return status; - } - } -#endif /* MIME_DRAFTS */ - - - if (nl) - return kid->class->parse_buffer (line, length, kid); - else - { - /* Hack a newline onto the end. */ - char *s = XP_ALLOC(length + LINEBREAK_LEN + 1); - if (!s) return MK_OUT_OF_MEMORY; - XP_MEMCPY(s, line, length); - XP_STRCPY(s + length, LINEBREAK); - status = kid->class->parse_buffer (s, length + LINEBREAK_LEN, kid); - XP_FREE(s); - return status; - } - } - - /* Otherwise we don't yet have a child object, which means we're not - done parsing our headers yet. - */ - if (!msg->hdrs) - { - msg->hdrs = MimeHeaders_new(); - if (!msg->hdrs) return MK_OUT_OF_MEMORY; - } - -#ifdef MIME_DRAFTS - if ( obj->options && - obj->options->decompose_file_p && - ! obj->options->is_multipart_msg && - obj->options->done_parsing_outer_headers && - obj->options->decompose_file_output_fn ) { - status = obj->options->decompose_file_output_fn ( line, - length, - obj->options->stream_closure ); - if (status < 0) return status; - } -#endif /* MIME_DRAFTS */ - - status = MimeHeaders_parse_line(line, length, msg->hdrs); - if (status < 0) return status; - - /* If this line is blank, we're now done parsing headers, and should - examine our content-type to create our "body" part. - */ - if (*line == CR || *line == LF) - { - status = MimeMessage_close_headers(obj); - if (status < 0) return status; - } - - return 0; -} - -static int -MimeMessage_close_headers (MimeObject *obj) -{ - MimeMessage *msg = (MimeMessage *) obj; - int status = 0; - char *ct = 0; /* Content-Type header */ - MimeObject *body; - - if (msg->hdrs) - { - XP_Bool outer_p = !obj->headers; /* is this the outermost message? */ - - -#ifdef MIME_DRAFTS - if (outer_p && - obj->options && - obj->options->decompose_file_p && - obj->options->decompose_headers_info_fn) - { - HG09868 - status = obj->options->decompose_headers_info_fn ( - obj->options->stream_closure, - msg->hdrs ); - } -#endif /* MIME_DRAFTS */ - - - /* If this is the outermost message, we need to run the - `generate_header' callback. This happens here instead of - in `parse_begin', because it's only now that we've parsed - our headers. However, since this is the outermost message, - we have yet to write any HTML, so that's fine. - */ - if (outer_p && - obj->output_p && - obj->options && - obj->options->write_html_p && - obj->options->generate_header_html_fn) - { - int status = 0; - char *html = 0; - - /* The generate_header_html_fn might return HTML, so it's important - that the output stream be set up with the proper type before we - make the MimeObject_write() call below. */ - if (!obj->options->state->first_data_written_p) - { - status = MimeObject_output_init (obj, TEXT_HTML); - if (status < 0) return status; - XP_ASSERT(obj->options->state->first_data_written_p); - } - - html = obj->options->generate_header_html_fn(NULL, - obj->options->html_closure, - msg->hdrs); - if (html) - { - status = MimeObject_write(obj, html, XP_STRLEN(html), FALSE); - XP_FREE(html); - if (status < 0) return status; - } - } - - - /* Find the content-type of the body of this message. - */ - { - XP_Bool ok = TRUE; - char *mv = MimeHeaders_get (msg->hdrs, HEADER_MIME_VERSION, - TRUE, FALSE); - -#ifdef REQUIRE_MIME_VERSION_HEADER - /* If this is the outermost message, it must have a MIME-Version - header with the value 1.0 for us to believe what might be in - the Content-Type header. If the MIME-Version header is not - present, we must treat this message as untyped. - */ - ok = (mv && !XP_STRCMP(mv, "1.0")); -#else - /* #### actually, we didn't check this in Mozilla 2.0, and checking - it now could cause some compatibility nonsense, so for now, let's - just believe any Content-Type header we see. - */ - ok = TRUE; -#endif - - if (ok) - { - ct = MimeHeaders_get (msg->hdrs, HEADER_CONTENT_TYPE, TRUE, FALSE); - - /* If there is no Content-Type header, but there is a MIME-Version - header, then assume that this *is* in fact a MIME message. - (I've seen messages with - - MIME-Version: 1.0 - Content-Transfer-Encoding: quoted-printable - - and no Content-Type, and we should treat those as being of type - MimeInlineTextPlain rather than MimeUntypedText.) - */ - if (mv && !ct) - ct = XP_STRDUP(TEXT_PLAIN); - } - - FREEIF(mv); /* done with this now. */ - } - - HG09871 - - /* Emit the HTML for this message's headers. Do this before - creating the object representing the body. - */ - if (obj->output_p && - obj->options && - obj->options->write_html_p) - { - /* If citation headers are on, and this is not the outermost message, - turn them off. */ - if (obj->options->headers == MimeHeadersCitation && !outer_p) - obj->options->headers = MimeHeadersSome; - - /* Emit a normal header block. */ - status = MimeMessage_write_headers_html(obj); - if (status < 0) return status; - } - else if (obj->output_p) - { - /* Dump the headers, raw. */ - status = MimeObject_write(obj, "", 0, FALSE); /* initialize */ - if (status < 0) return status; - HG09872 - if (status < 0) return status; - } - -#ifdef XP_UNIX - if (outer_p && obj->output_p) - /* Kludge from mimehdrs.c */ - MimeHeaders_do_unix_display_hook_hack(msg->hdrs); -#endif /* XP_UNIX */ - } - - /* Never put out a separator after a message header block. */ - if (obj->options && obj->options->state) - obj->options->state->separator_suppressed_p = TRUE; - -#ifdef MIME_DRAFTS - if ( !obj->headers && /* outer most message header */ - obj->options && - obj->options->decompose_file_p && - ct ) - obj->options->is_multipart_msg = XP_STRSTR(ct, "multipart/") != NULL; -#endif /* MIME_DRAFTS */ - - - body = mime_create(ct, msg->hdrs, obj->options); - - FREEIF(ct); - if (!body) return MK_OUT_OF_MEMORY; - status = ((MimeContainerClass *) obj->class)->add_child (obj, body); - if (status < 0) - { - mime_free(body); - return status; - } - - /* Now that we've added this new object to our list of children, - start its parser going. */ - status = body->class->parse_begin(body); - if (status < 0) return status; - return 0; -} - - - -static int -MimeMessage_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - int status; - XP_Bool outer_p; - MimeMessage *msg = (MimeMessage *)obj; - if (obj->closed_p) return 0; - - /* Run parent method first, to flush out any buffered data. */ - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); - if (status < 0) return status; - - outer_p = !obj->headers; /* is this the outermost message? */ - - if (outer_p && - obj->options && - obj->options->write_html_p && - obj->options->generate_footer_html_fn) - { - char *html = - obj->options->generate_footer_html_fn (NULL, - obj->options->html_closure, - msg->hdrs); - if (html) - { - int status = MimeObject_write(obj, html, XP_STRLEN(html), FALSE); - XP_FREE(html); - if (status < 0) return status; - } - } - -#ifdef MIME_DRAFTS - if ( obj->options && - obj->options->decompose_file_p && - obj->options->done_parsing_outer_headers && - ! obj->options->is_multipart_msg && -#ifndef MOZ_MAIL_COMPOSE - ! mime_typep(obj, (MimeObjectClass*) &mimeFilterClass) && -#endif /* MOZ_MAIL_COMPOSE */ - obj->options->decompose_file_close_fn ) { - status = obj->options->decompose_file_close_fn ( - obj->options->stream_closure ); - - if ( status < 0 ) return status; - } -#endif /* MIME_DRAFTS */ - - - /* Put out a separator after every message/rfc822 object. */ - if (!abort_p) - { - status = MimeObject_write_separator(obj); - if (status < 0) return status; - } - - return 0; -} - - -static int -MimeMessage_add_child (MimeObject *parent, MimeObject *child) -{ - MimeContainer *cont = (MimeContainer *) parent; - XP_ASSERT(parent && child); - if (!parent || !child) return -1; - - /* message/rfc822 containers can only have one child. */ - XP_ASSERT(cont->nchildren == 0); - if (cont->nchildren != 0) return -1; - -#ifdef MIME_DRAFTS - if ( parent->options && - parent->options->decompose_file_p && - ! parent->options->is_multipart_msg && -#ifndef MOZ_MAIL_COMPOSE - ! mime_typep(child, (MimeObjectClass*) &mimeFilterClass) && -#endif /* MOZ_MAIL_COMPOSE */ - parent->options->decompose_file_init_fn ) { - int status = 0; - status = parent->options->decompose_file_init_fn ( - parent->options->stream_closure, - ((MimeMessage*)parent)->hdrs ); - if ( status < 0 ) return status; - } -#endif /* MIME_DRAFTS */ - - return ((MimeContainerClass*)&MIME_SUPERCLASS)->add_child (parent, child); -} - - -static int -MimeMessage_write_headers_html (MimeObject *obj) -{ - MimeMessage *msg = (MimeMessage *) obj; - XP_Bool altform_p; - int status; - if (!obj->options || - !obj->options->output_fn) - return 0; - - XP_ASSERT(obj->output_p && obj->options->write_html_p); - - if (!obj->options->state->first_data_written_p) - { - status = MimeObject_output_init (obj, TEXT_HTML); - if (status < 0) return status; - XP_ASSERT(obj->options->state->first_data_written_p); - } - - HG09873 - HG43771 - - - status = MimeHeaders_write_headers_html (msg->hdrs, obj->options); - if (status < 0) return status; - - if (HG56232) - { - HG78388 - } - else - { - HG80200 - if (obj->options && - obj->options->state && - obj->options->generate_post_header_html_fn && - !obj->options->state->post_header_html_run_p) - { - char *html = 0; - XP_ASSERT(obj->options->state->first_data_written_p); - html = obj->options->generate_post_header_html_fn(NULL, - obj->options->html_closure, - msg->hdrs); - obj->options->state->post_header_html_run_p = TRUE; - if (html) - { - status = MimeObject_write(obj, html, XP_STRLEN(html), FALSE); - XP_FREE(html); - if (status < 0) return status; - } - } - - /* Write out a paragraph break between the headers and body. */ - { - char s[] = "<P>"; - status = MimeObject_write(obj, s, XP_STRLEN(s), FALSE); - if (status < 0) return status; - } - } - - return 0; -} - - -#if defined(DEBUG) && defined(XP_UNIX) -static int -MimeMessage_debug_print (MimeObject *obj, FILE *stream, int32 depth) -{ - MimeMessage *msg = (MimeMessage *) obj; - char *addr = mime_part_address(obj); - int i; - for (i=0; i < depth; i++) - fprintf(stream, " "); - fprintf(stream, "<%s %s%s 0x%08X>\n", - obj->class->class_name, - addr ? addr : "???", - (msg->container.nchildren == 0 ? " (no body)" : ""), - (uint32) msg); - FREEIF(addr); - -#if 0 - if (msg->hdrs) - { - char *s; - - depth++; - -# define DUMP(HEADER) \ - for (i=0; i < depth; i++) \ - fprintf(stream, " "); \ - s = MimeHeaders_get (msg->hdrs, HEADER, FALSE, TRUE); \ - fprintf(stream, HEADER ": %s\n", s ? s : ""); \ - FREEIF(s) - - DUMP(HEADER_SUBJECT); - DUMP(HEADER_DATE); - DUMP(HEADER_FROM); - DUMP(HEADER_TO); - /* DUMP(HEADER_CC); */ - DUMP(HEADER_NEWSGROUPS); - DUMP(HEADER_MESSAGE_ID); -# undef DUMP - - fprintf(stream, "\n"); - } -#endif - - XP_ASSERT(msg->container.nchildren <= 1); - if (msg->container.nchildren == 1) - { - MimeObject *kid = msg->container.children[0]; - int status = kid->class->debug_print (kid, stream, depth+1); - if (status < 0) return status; - } - return 0; -} -#endif diff --git a/mozilla/lib/libmime/mimemsg.h b/mozilla/lib/libmime/mimemsg.h deleted file mode 100644 index 96de3435917..00000000000 --- a/mozilla/lib/libmime/mimemsg.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemsg.h --- definition of the MimeMessage class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEMSG_H_ -#define _MIMEMSG_H_ - -#include "mimecont.h" - -/* The MimeMessage class implements the message/rfc822 and message/news - MIME containers, which is to say, mail and news messages. - */ - -typedef struct MimeMessageClass MimeMessageClass; -typedef struct MimeMessage MimeMessage; - -struct MimeMessageClass { - MimeContainerClass container; -}; - -extern MimeMessageClass mimeMessageClass; - -struct MimeMessage { - MimeContainer container; /* superclass variables */ - MimeHeaders *hdrs; /* headers of this message */ - XP_Bool newline_p; /* whether the last line ended in a newline */ - HG88918 -}; - -#endif /* _MIMEMSG_H_ */ diff --git a/mozilla/lib/libmime/mimemsig.c b/mozilla/lib/libmime/mimemsig.c deleted file mode 100644 index 405b044ee1f..00000000000 --- a/mozilla/lib/libmime/mimemsig.c +++ /dev/null @@ -1,699 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemsig.c --- definition of the MimeMultipartSigned class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 23-Sep-96. - */ - -#include "rosetta.h" -#include "mimemsig.h" -#include "nspr.h" -#include "xp_error.h" - -#define MIME_SUPERCLASS mimeMultipartClass -MimeDefClass(MimeMultipartSigned, MimeMultipartSignedClass, - mimeMultipartSignedClass, &MIME_SUPERCLASS); - -static int MimeMultipartSigned_initialize (MimeObject *); -static int MimeMultipartSigned_create_child (MimeObject *); -static int MimeMultipartSigned_close_child(MimeObject *); -static int MimeMultipartSigned_parse_line (char *, int32, MimeObject *); -static int MimeMultipartSigned_parse_child_line (MimeObject *, char *, int32, - XP_Bool); -static int MimeMultipartSigned_parse_eof (MimeObject *, XP_Bool); -static void MimeMultipartSigned_finalize (MimeObject *); - -static int MimeMultipartSigned_emit_child (MimeObject *obj); - -static int -MimeMultipartSignedClassInitialize(MimeMultipartSignedClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeMultipartClass *mclass = (MimeMultipartClass *) class; - - oclass->initialize = MimeMultipartSigned_initialize; - oclass->parse_line = MimeMultipartSigned_parse_line; - oclass->parse_eof = MimeMultipartSigned_parse_eof; - oclass->finalize = MimeMultipartSigned_finalize; - mclass->create_child = MimeMultipartSigned_create_child; - mclass->parse_child_line = MimeMultipartSigned_parse_child_line; - mclass->close_child = MimeMultipartSigned_close_child; - - XP_ASSERT(!oclass->class_initialized); - return 0; -} - -static int -MimeMultipartSigned_initialize (MimeObject *object) -{ - MimeMultipartSigned *sig = (MimeMultipartSigned *) object; - - /* This is an abstract class; it shouldn't be directly instantiated. */ - XP_ASSERT(object->class != (MimeObjectClass *) &mimeMultipartSignedClass); - - sig->state = MimeMultipartSignedPreamble; - - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(object); -} - -static void -MimeMultipartSigned_cleanup (MimeObject *obj, XP_Bool finalizing_p) -{ - MimeMultipart *mult = (MimeMultipart *) obj; /* #58075. Fix suggested by jwz */ - MimeMultipartSigned *sig = (MimeMultipartSigned *) obj; - if (sig->part_buffer) - { - MimePartBufferDestroy(sig->part_buffer); - sig->part_buffer = 0; - } - if (sig->body_hdrs) - { - MimeHeaders_free (sig->body_hdrs); - sig->body_hdrs = 0; - } - if (sig->sig_hdrs) - { - MimeHeaders_free (sig->sig_hdrs); - sig->sig_hdrs = 0; - } - - mult->state = MimeMultipartEpilogue; /* #58075. Fix suggested by jwz */ - sig->state = MimeMultipartSignedEpilogue; - - HG09862 - - if (sig->sig_decoder_data) - { - MimeDecoderDestroy(sig->sig_decoder_data, TRUE); - sig->sig_decoder_data = 0; - } -} - - -static int -MimeMultipartSigned_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - MimeMultipartSigned *sig = (MimeMultipartSigned *) obj; - int status = 0; - - if (obj->closed_p) return 0; - - /* Close off the signature, if we've gotten that far. - */ - if (sig->state == MimeMultipartSignedSignatureHeaders || - sig->state == MimeMultipartSignedSignatureFirstLine || - sig->state == MimeMultipartSignedSignatureLine || - sig->state == MimeMultipartSignedEpilogue) - { - HG09863 - } - - if (!abort_p) - { - /* Now that we've read both the signed object and the signature (and - have presumably verified the signature) write out a blurb, and then - the signed object. - */ - HG09864 - status = MimeMultipartSigned_emit_child(obj); - if (status < 0) return status; - } - - MimeMultipartSigned_cleanup(obj, FALSE); - return ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); -} - - -static void -MimeMultipartSigned_finalize (MimeObject *obj) -{ - MimeMultipartSigned_cleanup(obj, TRUE); - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize(obj); -} - - -static int -MimeMultipartSigned_parse_line (char *line, int32 length, MimeObject *obj) -{ - MimeMultipart *mult = (MimeMultipart *) obj; - MimeMultipartSigned *sig = (MimeMultipartSigned *) obj; - MimeMultipartParseState old_state = mult->state; - XP_Bool hash_line_p = TRUE; - XP_Bool no_headers_p = FALSE; - int status = 0; - - /* First do the parsing for normal multipart/ objects by handing it off to - the superclass method. This includes calling the create_child and - close_child methods. - */ - status = (((MimeObjectClass *)(&MIME_SUPERCLASS)) - ->parse_line (line, length, obj)); - if (status < 0) return status; - - - HG09865 - - - /* The instance variable MimeMultipartClass->state tracks motion through - the various stages of multipart/ parsing. The instance variable - MimeMultipartSigned->state tracks the difference between the first - part (the body) and the second part (the signature.) This second, - more specific state variable is updated by noticing the transitions - of the first, more general state variable. - */ - if (old_state != mult->state) /* there has been a state change */ - { - switch (mult->state) - { - case MimeMultipartPreamble: - XP_ASSERT(0); /* can't move *in* to preamble state. */ - sig->state = MimeMultipartSignedPreamble; - break; - - case MimeMultipartHeaders: - /* If we're moving in to the Headers state, then that means - that this line is the preceeding boundary string (and we - should ignore it.) - */ - hash_line_p = FALSE; - - if (sig->state == MimeMultipartSignedPreamble) - sig->state = MimeMultipartSignedBodyFirstHeader; - else if (sig->state == MimeMultipartSignedBodyFirstLine || - sig->state == MimeMultipartSignedBodyLine) - sig->state = MimeMultipartSignedSignatureHeaders; - else if (sig->state == MimeMultipartSignedSignatureFirstLine || - sig->state == MimeMultipartSignedSignatureLine) - sig->state = MimeMultipartSignedEpilogue; - break; - - case MimeMultipartPartFirstLine: - if (sig->state == MimeMultipartSignedBodyFirstHeader) - { - sig->state = MimeMultipartSignedBodyFirstLine; - no_headers_p = TRUE; - } - else if (sig->state == MimeMultipartSignedBodyHeaders) - sig->state = MimeMultipartSignedBodyFirstLine; - else if (sig->state == MimeMultipartSignedSignatureHeaders) - sig->state = MimeMultipartSignedSignatureFirstLine; - else - sig->state = MimeMultipartSignedEpilogue; - break; - - case MimeMultipartPartLine: - - XP_ASSERT(sig->state == MimeMultipartSignedBodyFirstLine || - sig->state == MimeMultipartSignedBodyLine || - sig->state == MimeMultipartSignedSignatureFirstLine || - sig->state == MimeMultipartSignedSignatureLine); - - if (sig->state == MimeMultipartSignedBodyFirstLine) - sig->state = MimeMultipartSignedBodyLine; - else if (sig->state == MimeMultipartSignedSignatureFirstLine) - sig->state = MimeMultipartSignedSignatureLine; - break; - - case MimeMultipartEpilogue: - sig->state = MimeMultipartSignedEpilogue; - break; - - default: /* bad state */ - XP_ASSERT(0); - return -1; - break; - } - } - - - /* Perform multipart/signed-related actions on this line based on the state - of the parser. - */ - switch (sig->state) - { - case MimeMultipartSignedPreamble: - /* Do nothing. */ - break; - - case MimeMultipartSignedBodyFirstLine: - /* We have just moved out of the MimeMultipartSignedBodyHeaders - state, so cache away the headers that apply only to the body part. - */ - XP_ASSERT(mult->hdrs); - XP_ASSERT(!sig->body_hdrs); - sig->body_hdrs = mult->hdrs; - mult->hdrs = 0; - - /* fall through. */ - - case MimeMultipartSignedBodyFirstHeader: - case MimeMultipartSignedBodyHeaders: - case MimeMultipartSignedBodyLine: - - HG09866 - - if (hash_line_p) - { - /* this is the first hashed line if this is the first header - (that is, if it's the first line in the header state after - a state change.) - */ - XP_Bool first_line_p - = (no_headers_p || - sig->state == MimeMultipartSignedBodyFirstHeader); - - if (sig->state == MimeMultipartSignedBodyFirstHeader) - sig->state = MimeMultipartSignedBodyHeaders; - - /* The newline issues here are tricky, since both the newlines - before and after the boundary string are to be considered part - of the boundary: this is so that a part can be specified such - that it does not end in a trailing newline. - - To implement this, we send a newline *before* each line instead - of after, except for the first line, which is not preceeded by a - newline. - - For purposes of bigfun hashing, we always hash line - breaks as CRLF -- the canonical, on-the-wire linebreaks, since - we have no idea of knowing what line breaks were used on the - originating system (SMTP rightly destroys that information.) - */ - - /* Remove the trailing newline... */ - if (length > 0 && line[length-1] == LF) length--; - if (length > 0 && line[length-1] == CR) length--; - - HG09867 - - if (!first_line_p) - { - /* Push out a preceeding newline... */ - char nl[] = CRLF; - - status = (((MimeMultipartSignedClass *) obj->class) - ->bigfun_data_hash (nl, 2, sig->bigfun_closure)); - if (status < 0) return status; - } - - /* Now push out the line sans trailing newline. */ - if (length > 0) - status = (((MimeMultipartSignedClass *) obj->class) - ->bigfun_data_hash (line,length, sig->bigfun_closure)); - if (status < 0) return status; - } - break; - - case MimeMultipartSignedSignatureHeaders: - - if (sig->bigfun_closure && - old_state != mult->state) - { - /* We have just moved out of the MimeMultipartSignedBodyLine - state, so tell the signature verification library that we've - reached the end of the signed data. - */ - status = (((MimeMultipartSignedClass *) obj->class) - ->bigfun_data_eof) (sig->bigfun_closure, FALSE); - if (status < 0) return status; - } - break; - - case MimeMultipartSignedSignatureFirstLine: - /* We have just moved out of the MimeMultipartSignedSignatureHeaders - state, so cache away the headers that apply only to the sig part. - */ - XP_ASSERT(mult->hdrs); - XP_ASSERT(!sig->sig_hdrs); - sig->sig_hdrs = mult->hdrs; - mult->hdrs = 0; - - - /* If the signature block has an encoding, set up a decoder for it. - (Similar logic is in MimeLeafClass->parse_begin.) - */ - { - MimeDecoderData *(*fn) (int (*) (const char*, int32,void*), void*) = 0; - char *encoding = MimeHeaders_get (sig->sig_hdrs, - HEADER_CONTENT_TRANSFER_ENCODING, - TRUE, FALSE); - if (!encoding) - ; - else if (!strcasecomp(encoding, ENCODING_BASE64)) - fn = &MimeB64DecoderInit; - else if (!strcasecomp(encoding, ENCODING_QUOTED_PRINTABLE)) - fn = &MimeQPDecoderInit; - else if (!strcasecomp(encoding, ENCODING_UUENCODE) || - !strcasecomp(encoding, ENCODING_UUENCODE2) || - !strcasecomp(encoding, ENCODING_UUENCODE3) || - !strcasecomp(encoding, ENCODING_UUENCODE4)) - fn = &MimeUUDecoderInit; - - if (fn) - { - sig->sig_decoder_data = - fn (((int (*) (const char *, int32, void *)) - (((MimeMultipartSignedClass *) obj->class) - ->bigfun_signature_hash)), - sig->bigfun_closure); - if (!sig->sig_decoder_data) - return MK_OUT_OF_MEMORY; - } - } - - /* Show these headers to the bigfun module. */ - if (hash_line_p) - { - status = (((MimeMultipartSignedClass *) obj->class) - ->bigfun_signature_init) (sig->bigfun_closure, - obj, sig->sig_hdrs); - if (status < 0) return status; - } - - /* fall through. */ - - case MimeMultipartSignedSignatureLine: - if (hash_line_p) - { - /* Feed this line into the signature verification routines. */ - - if (sig->sig_decoder_data) - status = MimeDecoderWrite (sig->sig_decoder_data, line, length); - else - status = (((MimeMultipartSignedClass *) obj->class) - ->bigfun_signature_hash (line, length, - sig->bigfun_closure)); - if (status < 0) return status; - } - break; - - case MimeMultipartSignedEpilogue: - /* Nothing special to do here. */ - break; - - default: /* bad state */ - XP_ASSERT(0); - return -1; - } - - return status; -} - - -static int -MimeMultipartSigned_create_child (MimeObject *parent) -{ - /* Don't actually create a child -- we call the superclass create_child - method later, after we've fully parsed everything. (And we only call - it once, for part #1, and never for part #2 (the signature.)) - */ - MimeMultipart *mult = (MimeMultipart *) parent; - mult->state = MimeMultipartPartFirstLine; - return 0; -} - - -static int -MimeMultipartSigned_close_child (MimeObject *obj) -{ - /* The close_child method on MimeMultipartSigned doesn't actually do - anything to the children list, since the create_child method also - doesn't do anything. - */ - MimeMultipart *mult = (MimeMultipart *) obj; - MimeContainer *cont = (MimeContainer *) obj; - MimeMultipartSigned *msig = (MimeMultipartSigned *) obj; - - if (msig->part_buffer) - /* Closes the tmp file, if there is one: doesn't free the part_buffer. */ - MimePartBufferClose(msig->part_buffer); - - if (mult->hdrs) /* duplicated from MimeMultipart_close_child, ugh. */ - { - MimeHeaders_free(mult->hdrs); - mult->hdrs = 0; - } - - /* Should be no kids yet. */ - XP_ASSERT(cont->nchildren == 0); - if (cont->nchildren != 0) return -1; - - return 0; -} - - -static int -MimeMultipartSigned_parse_child_line (MimeObject *obj, - char *line, int32 length, - XP_Bool first_line_p) -{ - MimeMultipartSigned *sig = (MimeMultipartSigned *) obj; - MimeContainer *cont = (MimeContainer *) obj; - int status = 0; - - /* Shouldn't have made any sub-parts yet. */ - XP_ASSERT(cont->nchildren == 0); - if (cont->nchildren != 0) return -1; - - switch (sig->state) - { - case MimeMultipartSignedPreamble: - case MimeMultipartSignedBodyFirstHeader: - case MimeMultipartSignedBodyHeaders: - XP_ASSERT(0); /* How'd we get here? Oh well, fall through. */ - - case MimeMultipartSignedBodyFirstLine: - XP_ASSERT(first_line_p); - if (!sig->part_buffer) - { - sig->part_buffer = MimePartBufferCreate(); - if (!sig->part_buffer) - return MK_OUT_OF_MEMORY; - } - /* fall through */ - - case MimeMultipartSignedBodyLine: - { - /* This is the first part; we are buffering it, and will emit it all - at the end (so that we know whether the signature matches before - showing anything to the user.) - */ - - /* The newline issues here are tricky, since both the newlines - before and after the boundary string are to be considered part - of the boundary: this is so that a part can be specified such - that it does not end in a trailing newline. - - To implement this, we send a newline *before* each line instead - of after, except for the first line, which is not preceeded by a - newline. - */ - - /* Remove the trailing newline... */ - if (length > 0 && line[length-1] == LF) length--; - if (length > 0 && line[length-1] == CR) length--; - - XP_ASSERT(sig->part_buffer); - XP_ASSERT(first_line_p == - (sig->state == MimeMultipartSignedBodyFirstLine)); - - if (!first_line_p) - { - /* Push out a preceeding newline... */ - char nl[] = LINEBREAK; - status = MimePartBufferWrite (sig->part_buffer, nl, LINEBREAK_LEN); - if (status < 0) return status; - } - - /* Now push out the line sans trailing newline. */ - if (length > 0) - status = MimePartBufferWrite (sig->part_buffer, line, length); - if (status < 0) return status; - } - break; - - case MimeMultipartSignedSignatureHeaders: - XP_ASSERT(0); /* How'd we get here? Oh well, fall through. */ - - case MimeMultipartSignedSignatureFirstLine: - case MimeMultipartSignedSignatureLine: - /* Nothing to do here -- hashing of the signature part is handled up - in MimeMultipartSigned_parse_line(). - */ - break; - - case MimeMultipartSignedEpilogue: - /* Too many kids? MimeMultipartSigned_create_child() should have - prevented us from getting here. */ - XP_ASSERT(0); - return -1; - break; - - default: /* bad state */ - XP_ASSERT(0); - return -1; - break; - } - - return status; -} - - -static int -MimeMultipartSigned_emit_child (MimeObject *obj) -{ - MimeMultipartSigned *sig = (MimeMultipartSigned *) obj; - MimeMultipart *mult = (MimeMultipart *) obj; - MimeContainer *cont = (MimeContainer *) obj; - int status = 0; - MimeObject *body; - - XP_ASSERT(sig->bigfun_closure); - - /* Emit some HTML saying whether the signature was cool. - But don't emit anything if in FO_QUOTE_MESSAGE mode. - */ - if (obj->options && - obj->options->headers != MimeHeadersCitation && - obj->options->write_html_p && - obj->options->output_fn && - obj->options->headers != MimeHeadersCitation && - sig->bigfun_closure) - { - char *html = (((MimeMultipartSignedClass *) obj->class) - ->bigfun_generate_html (sig->bigfun_closure)); - if (!html) return -1; /* MK_OUT_OF_MEMORY? */ - - status = MimeObject_write(obj, html, XP_STRLEN(html), FALSE); - XP_FREE(html); - if (status < 0) return status; - - /* Now that we have written out the bigfun stamp, the outermost header - block is well and truly closed. If this is in fact the outermost - message, then run the post_header_html_fn now. - */ - if (obj->options && - obj->options->state && - obj->options->generate_post_header_html_fn && - !obj->options->state->post_header_html_run_p) - { - MimeHeaders *outer_headers; - MimeObject *p; - for (p = obj; p->parent; p = p->parent) - outer_headers = p->headers; - XP_ASSERT(obj->options->state->first_data_written_p); - html = obj->options->generate_post_header_html_fn(NULL, - obj->options->html_closure, - outer_headers); - obj->options->state->post_header_html_run_p = TRUE; - if (html) - { - status = MimeObject_write(obj, html, XP_STRLEN(html), FALSE); - XP_FREE(html); - if (status < 0) return status; - } - } - } - - - /* Oh, this is fairly nasty. We're skipping over our "create child" method - and using the one our superclass defines. Perhaps instead we should add - a new method on this class, and initialize that method to be the - create_child method of the superclass. Whatever. - */ - - - /* The superclass method expects to find the headers for the part that it's - to create in mult->hdrs, so ensure that they're there. */ - XP_ASSERT(!mult->hdrs); - if (mult->hdrs) MimeHeaders_free(mult->hdrs); - mult->hdrs = sig->body_hdrs; - sig->body_hdrs = 0; - - /* Run the superclass create_child method. - */ - status = (((MimeMultipartClass *)(&MIME_SUPERCLASS))->create_child(obj)); - if (status < 0) return status; - - /* Retrieve the child that it created. - */ - XP_ASSERT(cont->nchildren == 1); - if (cont->nchildren != 1) return -1; - body = cont->children[0]; - XP_ASSERT(body); - if (!body) return -1; - -#ifdef MIME_DRAFTS - if (body->options->decompose_file_p) { - body->options->signed_p = TRUE; - if (!mime_typep(body, (MimeObjectClass*)&mimeMultipartClass) && - body->options->decompose_file_init_fn) - body->options->decompose_file_init_fn ( body->options->stream_closure, body->headers ); - } -#endif /* MIME_DRAFTS */ - - /* If there's no part_buffer, this is a zero-length signed message? */ - if (sig->part_buffer) - { -#ifdef MIME_DRAFTS - if (body->options->decompose_file_p && - !mime_typep(body, (MimeObjectClass*)&mimeMultipartClass) && - body->options->decompose_file_output_fn) - status = MimePartBufferRead (sig->part_buffer, - /* The (int (*) ...) cast is to turn the - `void' argument into `MimeObject'. */ - ((int (*) (char *, int32, void *)) - body->options->decompose_file_output_fn), - body->options->stream_closure); - else -#endif /* MIME_DRAFTS */ - - status = MimePartBufferRead (sig->part_buffer, - /* The (int (*) ...) cast is to turn the - `void' argument into `MimeObject'. */ - ((int (*) (char *, int32, void *)) - body->class->parse_buffer), - body); - if (status < 0) return status; - } - - MimeMultipartSigned_cleanup(obj, FALSE); - - /* Done parsing. */ - status = body->class->parse_eof(body, FALSE); - if (status < 0) return status; - status = body->class->parse_end(body, FALSE); - if (status < 0) return status; - -#ifdef MIME_DRAFTS - if (body->options->decompose_file_p && - !mime_typep(body, (MimeObjectClass*)&mimeMultipartClass) && - body->options->decompose_file_close_fn) - body->options->decompose_file_close_fn(body->options->stream_closure); -#endif /* MIME_DRAFTS */ - - /* Put out a separator after every multipart/signed object. */ - status = MimeObject_write_separator(obj); - if (status < 0) return status; - - return 0; -} diff --git a/mozilla/lib/libmime/mimemsig.h b/mozilla/lib/libmime/mimemsig.h deleted file mode 100644 index fa2979a044d..00000000000 --- a/mozilla/lib/libmime/mimemsig.h +++ /dev/null @@ -1,152 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemsig.h --- definition of the MimeMultipartSigned class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 23-Sep-96. - */ - -#ifndef _MIMEMSIG_H_ -#define _MIMEMSIG_H_ - -#include "mimemult.h" -#include "mimepbuf.h" -#include "mimeenc.h" - -/* The MimeMultipartSigned class implements the multipart/signed MIME - container, which provides a general method of associating a bigfun - signature to an arbitrary MIME object. - - The MimeMultipartSigned class provides the following methods: - - void *bigfun_init (MimeObject *multipart_object) - - This is called with the object, the object->headers of which should be - used to initialize the decryption engine. NULL indicates failure; - otherwise, an opaque closure object should be returned. - - int bigfun_data_hash (char *data, int32 data_size, - void *bigfun_closure) - - This is called with the raw data, for which a signature has been computed. - The bigfun module should examine this, and compute a signature for it. - - int bigfun_data_eof (void *bigfun_closure, XP_Bool abort_p) - - This is called when no more data remains. If `abort_p' is true, then the - bigfun module may choose to discard any data rather than processing it, - as we're terminating abnormally. - - int bigfun_signature_init (void *bigfun_closure, - MimeObject *multipart_object, - MimeHeaders *signature_hdrs) - - This is called after bigfun_data_eof() and just before the first call to - bigfun_signature_hash(). The bigfun module may wish to do some - initialization here, or may wish to examine the actual headers of the - signature object itself. - - int bigfun_signature_hash (char *data, int32 data_size, - void *bigfun_closure) - - This is called with the raw data of the detached signature block. It will - be called after bigfun_data_eof() has been called to signify the end of - the data which is signed. This data is the data of the signature itself. - - int bigfun_signature_eof (void *bigfun_closure, XP_Bool abort_p) - - This is called when no more signature data remains. If `abort_p' is true, - then the bigfun module may choose to discard any data rather than - processing it, as we're terminating abnormally. - - char * bigfun_generate_html (void *bigfun_closure) - - This is called after `bigfun_signature_eof' but before `bigfun_free'. - The bigfun module should return a newly-allocated string of HTML code - which explains the status of the decryption to the user (whether the - signature checks out, etc.) - - void bigfun_free (void *bigfun_closure) - - This will be called when we're all done, after `bigfun_signature_eof' and - `bigfun_emit_html'. It is intended to free any data represented by the - bigfun_closure. - */ - -typedef struct MimeMultipartSignedClass MimeMultipartSignedClass; -typedef struct MimeMultipartSigned MimeMultipartSigned; - -typedef enum { - MimeMultipartSignedPreamble, - MimeMultipartSignedBodyFirstHeader, - MimeMultipartSignedBodyHeaders, - MimeMultipartSignedBodyFirstLine, - MimeMultipartSignedBodyLine, - MimeMultipartSignedSignatureHeaders, - MimeMultipartSignedSignatureFirstLine, - MimeMultipartSignedSignatureLine, - MimeMultipartSignedEpilogue -} MimeMultipartSignedParseState; - -struct MimeMultipartSignedClass { - MimeMultipartClass multipart; - - /* Callbacks used by decryption (really, signature verification) module. */ - void * (*bigfun_init) (MimeObject *multipart_object); - - int (*bigfun_data_hash) (char *data, int32 data_size, - void *bigfun_closure); - int (*bigfun_signature_hash) (char *data, int32 data_size, - void *bigfun_closure); - - int (*bigfun_data_eof) (void *bigfun_closure, XP_Bool abort_p); - int (*bigfun_signature_eof) (void *bigfun_closure, XP_Bool abort_p); - - int (*bigfun_signature_init) (void *bigfun_closure, - MimeObject *multipart_object, - MimeHeaders *signature_hdrs); - - char * (*bigfun_generate_html) (void *bigfun_closure); - - void (*bigfun_free) (void *bigfun_closure); -}; - -extern MimeMultipartSignedClass mimeMultipartSignedClass; - -struct MimeMultipartSigned { - MimeMultipart multipart; - MimeMultipartSignedParseState state; /* State of parser */ - - void *bigfun_closure; /* Opaque data used by signature - verification module. */ - - MimeHeaders *body_hdrs; /* The headers of the signed object. */ - MimeHeaders *sig_hdrs; /* The headers of the signature. */ - - MimePartBufferData *part_buffer; /* The buffered body of the signed - object (see mimepbuf.h) */ - - MimeDecoderData *sig_decoder_data; /* The signature is probably base64 - encoded; this is the decoder used - to get raw bits out of it. */ -}; - -#endif /* _MIMEMSIG_H_ */ diff --git a/mozilla/lib/libmime/mimemult.c b/mozilla/lib/libmime/mimemult.c deleted file mode 100644 index 27bdfa8b840..00000000000 --- a/mozilla/lib/libmime/mimemult.c +++ /dev/null @@ -1,600 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemult.c --- definition of the MimeMultipart class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimemult.h" -#include "mime.h" - -#define MIME_SUPERCLASS mimeContainerClass -MimeDefClass(MimeMultipart, MimeMultipartClass, - mimeMultipartClass, &MIME_SUPERCLASS); - -static int MimeMultipart_initialize (MimeObject *); -static void MimeMultipart_finalize (MimeObject *); -static int MimeMultipart_parse_line (char *line, int32 length, MimeObject *); -static int MimeMultipart_parse_eof (MimeObject *object, XP_Bool abort_p); - -static MimeMultipartBoundaryType MimeMultipart_check_boundary(MimeObject *, - const char *, - int32); -static int MimeMultipart_create_child(MimeObject *); -static XP_Bool MimeMultipart_output_child_p(MimeObject *, MimeObject *); -static int MimeMultipart_parse_child_line (MimeObject *, char *, int32, - XP_Bool); -static int MimeMultipart_close_child(MimeObject *); - -extern MimeObjectClass mimeMultipartAlternativeClass; -extern MimeObjectClass mimeMultipartRelatedClass; -extern MimeObjectClass mimeMultipartSignedClass; - -#if defined(DEBUG) && defined(XP_UNIX) -static int MimeMultipart_debug_print (MimeObject *, FILE *, int32); -#endif - -static int -MimeMultipartClassInitialize(MimeMultipartClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeMultipartClass *mclass = (MimeMultipartClass *) class; - - XP_ASSERT(!oclass->class_initialized); - oclass->initialize = MimeMultipart_initialize; - oclass->finalize = MimeMultipart_finalize; - oclass->parse_line = MimeMultipart_parse_line; - oclass->parse_eof = MimeMultipart_parse_eof; - - mclass->check_boundary = MimeMultipart_check_boundary; - mclass->create_child = MimeMultipart_create_child; - mclass->output_child_p = MimeMultipart_output_child_p; - mclass->parse_child_line = MimeMultipart_parse_child_line; - mclass->close_child = MimeMultipart_close_child; - -#if defined(DEBUG) && defined(XP_UNIX) - oclass->debug_print = MimeMultipart_debug_print; -#endif - - return 0; -} - - -static int -MimeMultipart_initialize (MimeObject *object) -{ - MimeMultipart *mult = (MimeMultipart *) object; - char *ct; - - /* This is an abstract class; it shouldn't be directly instanciated. */ - XP_ASSERT(object->class != (MimeObjectClass *) &mimeMultipartClass); - - ct = MimeHeaders_get (object->headers, HEADER_CONTENT_TYPE, FALSE, FALSE); - mult->boundary = (ct - ? MimeHeaders_get_parameter (ct, HEADER_PARM_BOUNDARY, NULL, NULL) - : 0); - FREEIF(ct); - mult->state = MimeMultipartPreamble; - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(object); -} - - -static void -MimeMultipart_finalize (MimeObject *object) -{ - MimeMultipart *mult = (MimeMultipart *) object; - - object->class->parse_eof(object, FALSE); - - FREEIF(mult->boundary); - if (mult->hdrs) - MimeHeaders_free(mult->hdrs); - mult->hdrs = 0; - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize(object); -} - - -static int -MimeMultipart_parse_line (char *line, int32 length, MimeObject *obj) -{ - MimeMultipart *mult = (MimeMultipart *) obj; - int status = 0; - MimeMultipartBoundaryType boundary; - - XP_ASSERT(line && *line); - if (!line || !*line) return -1; - - XP_ASSERT(!obj->closed_p); - if (obj->closed_p) return -1; - - /* If we're supposed to write this object, but aren't supposed to convert - it to HTML, simply pass it through unaltered. */ - if (obj->output_p && - obj->options && - !obj->options->write_html_p && - obj->options->output_fn) - return MimeObject_write(obj, line, length, TRUE); - - - if (mult->state == MimeMultipartEpilogue) /* already done */ - boundary = MimeMultipartBoundaryTypeNone; - else - boundary = ((MimeMultipartClass *)obj->class)->check_boundary(obj, line, - length); - - if (boundary == MimeMultipartBoundaryTypeTerminator || - boundary == MimeMultipartBoundaryTypeSeparator) - { - /* Match! Close the currently-open part, move on to the next - state, and discard this line. - */ - if (mult->state != MimeMultipartPreamble) - status = ((MimeMultipartClass *)obj->class)->close_child(obj); - if (status < 0) return status; - - if (boundary == MimeMultipartBoundaryTypeTerminator) - mult->state = MimeMultipartEpilogue; - else - { - mult->state = MimeMultipartHeaders; - - /* Reset the header parser for this upcoming part. */ - XP_ASSERT(!mult->hdrs); - if (mult->hdrs) - MimeHeaders_free(mult->hdrs); - mult->hdrs = MimeHeaders_new(); - if (!mult->hdrs) - return MK_OUT_OF_MEMORY; - } - - /* Now return, to ignore the boundary line itself. */ - return 0; - } - - /* Otherwise, this isn't a boundary string. So do whatever it is we - should do with this line (parse it as a header, feed it to the - child part, ignore it, etc.) */ - - switch (mult->state) - { - case MimeMultipartPreamble: - case MimeMultipartEpilogue: - /* Ignore this line. */ - break; - - case MimeMultipartHeaders: - /* Parse this line as a header for the sub-part. */ - { - status = MimeHeaders_parse_line(line, length, mult->hdrs); - if (status < 0) return status; - - /* If this line is blank, we're now done parsing headers, and should - now examine the content-type to create this "body" part. - */ - if (*line == CR || *line == LF) - { - status = ((MimeMultipartClass *) obj->class)->create_child(obj); - if (status < 0) return status; - XP_ASSERT(mult->state != MimeMultipartHeaders); - } - break; - } - - case MimeMultipartPartFirstLine: - /* Hand this line off to the sub-part. */ - status = (((MimeMultipartClass *) obj->class)->parse_child_line(obj, - line, - length, - TRUE)); - if (status < 0) return status; - mult->state = MimeMultipartPartLine; - break; - - case MimeMultipartPartLine: - /* Hand this line off to the sub-part. */ - status = (((MimeMultipartClass *) obj->class)->parse_child_line(obj, - line, - length, - FALSE)); - if (status < 0) return status; - break; - - default: - XP_ASSERT(0); - return -1; - } - - return 0; -} - - -static MimeMultipartBoundaryType -MimeMultipart_check_boundary(MimeObject *obj, const char *line, int32 length) -{ - MimeMultipart *mult = (MimeMultipart *) obj; - int32 blen; - XP_Bool term_p; - - if (!mult->boundary || - line[0] != '-' || - line[1] != '-') - return MimeMultipartBoundaryTypeNone; - - /* This is a candidate line to be a boundary. Check it out... */ - blen = XP_STRLEN(mult->boundary); - term_p = FALSE; - - /* strip trailing whitespace (including the newline.) */ - while(length > 2 && XP_IS_SPACE(line[length-1])) - length--; - - /* Could this be a terminating boundary? */ - if (length == blen + 4 && - line[length-1] == '-' && - line[length-2] == '-') - { - term_p = TRUE; - length -= 2; - } - - if (blen == length-2 && !XP_STRNCMP(line+2, mult->boundary, length-2)) - return (term_p - ? MimeMultipartBoundaryTypeTerminator - : MimeMultipartBoundaryTypeSeparator); - else - return MimeMultipartBoundaryTypeNone; -} - - - -static int -MimeMultipart_create_child(MimeObject *obj) -{ - MimeMultipart *mult = (MimeMultipart *) obj; -#ifdef JS_ATTACHMENT_MUMBO_JUMBO - MimeContainer *cont = (MimeContainer *) obj; -#endif - int status; - char *ct = (mult->hdrs - ? MimeHeaders_get (mult->hdrs, HEADER_CONTENT_TYPE, - TRUE, FALSE) - : 0); - const char *dct = (((MimeMultipartClass *) obj->class)->default_part_type); - MimeObject *body = NULL; - MimeObject *parent = NULL; - XP_Bool showIcon = TRUE; - - mult->state = MimeMultipartPartFirstLine; - /* Don't pass in NULL as the content-type (this means that the - auto-uudecode-hack won't ever be done for subparts of a - multipart, but only for untyped children of message/rfc822. - */ - body = mime_create(((ct && *ct) ? ct : (dct ? dct: TEXT_PLAIN)), - mult->hdrs, obj->options); - FREEIF(ct); - if (!body) return MK_OUT_OF_MEMORY; - status = ((MimeContainerClass *) obj->class)->add_child(obj, body); - if (status < 0) - { - mime_free(body); - return status; - } - -#ifdef MIME_DRAFTS - if ( obj->options && - obj->options->decompose_file_p && - obj->options->is_multipart_msg && - obj->options->decompose_file_init_fn ) - { - if ( !mime_typep(obj,(MimeObjectClass*)&mimeMultipartRelatedClass) && - !mime_typep(obj,(MimeObjectClass*)&mimeMultipartAlternativeClass) && - !mime_typep(obj,(MimeObjectClass*)&mimeMultipartSignedClass) && - !mime_typep(body, (MimeObjectClass*)&mimeMultipartRelatedClass) && - !mime_typep(body, (MimeObjectClass*)&mimeMultipartAlternativeClass) && - !mime_typep(body,(MimeObjectClass*)&mimeMultipartSignedClass) ) - { - status = obj->options->decompose_file_init_fn ( obj->options->stream_closure, mult->hdrs ); - if (status < 0) return status; - } - } -#endif /* MIME_DRAFTS */ - - - /* Now that we've added this new object to our list of children, - start its parser going (if we want to display it.) - */ - body->output_p = (((MimeMultipartClass *) obj->class) - ->output_child_p(obj, body)); - if (body->output_p) - { -#ifdef JS_ATTACHMENT_MUMBO_JUMBO - int attachment_count = 0; - XP_Bool isMsgBody = FALSE, isAlternativeOrRelated = FALSE; -#endif - status = body->class->parse_begin(body); - if (status < 0) return status; -#ifdef JS_ATTACHMENT_MUMBO_JUMBO - isMsgBody = MimeObjectChildIsMessageBody - (obj, &isAlternativeOrRelated); - if (isAlternativeOrRelated) - attachment_count = 0; - else if (isMsgBody) - attachment_count = cont->nchildren - 1; - else - attachment_count = cont->nchildren; - - if (attachment_count && - obj->options && !obj->options->nice_html_only_p && - obj->options->attachment_icon_layer_id) { - /* This is not the first child, so it's an attachment. Cause the - "attachments in this message" icon(s) to become visible. - Excluding the following types to avoid inline graphics and dull items : - Headers: Content-Disposition: inline - Content-Type: text/x-vcard - Content-Type: text/html - Content-Type: text/plain - Content-Type: message/rfc822 */ - char *tmp = NULL; - - /* if (strncasestr(body->headers->all_headers, "DISPOSITION: INLINE", 300)) - showIcon = FALSE; */ - if (XP_STRSTR(body->content_type, "text/x-vcard")) - showIcon = FALSE; - else if (XP_STRSTR(body->content_type, "text/html")) - showIcon = FALSE; - else if (XP_STRSTR(body->content_type, "message/rfc822")) - showIcon = FALSE; - else if (XP_STRSTR(body->content_type, "multipart/signed")) - showIcon = FALSE; - HG09861 - else if (XP_STRSTR(body->content_type, "multipart/mixed")) - showIcon = FALSE; - - if (showIcon) - { - (obj->class)->showAttachmentIcon = TRUE; - parent = obj->parent; - while (parent) { - (parent->class)->showAttachmentIcon = TRUE; - parent = parent->parent; - } - tmp = PR_smprintf("\n\ -<SCRIPT>\n\ -window.document.layers[\"noattach-%ld\"].visibility = \"hide\";\n\ -window.document.layers[\"attach-%ld\"].visibility = \"show\";\n\ -</SCRIPT>\n", - (long) obj->options->attachment_icon_layer_id, - (long) obj->options->attachment_icon_layer_id); - } - if (tmp) { - status = MimeObject_write(obj, tmp, XP_STRLEN(tmp), TRUE); - XP_FREE(tmp); - if (status < 0) - return status; - } - } -#endif /* JS_ATTACHMENT_MUMBO_JUMBO */ - } - - return 0; -} - - -static XP_Bool -MimeMultipart_output_child_p(MimeObject *obj, MimeObject *child) -{ - return TRUE; -} - - - -static int -MimeMultipart_close_child(MimeObject *object) -{ - MimeMultipart *mult = (MimeMultipart *) object; - MimeContainer *cont = (MimeContainer *) object; - - if (!mult->hdrs) - return 0; - - MimeHeaders_free(mult->hdrs); - mult->hdrs = 0; - - XP_ASSERT(cont->nchildren > 0); - if (cont->nchildren > 0) - { - MimeObject *kid = cont->children[cont->nchildren-1]; - if (kid) - { - int status; - status = kid->class->parse_eof(kid, FALSE); - if (status < 0) return status; - status = kid->class->parse_end(kid, FALSE); - if (status < 0) return status; - -#ifdef MIME_DRAFTS - if ( object->options && - object->options->decompose_file_p && - object->options->is_multipart_msg && - object->options->decompose_file_close_fn ) - { - if ( !mime_typep(object,(MimeObjectClass*)&mimeMultipartRelatedClass) && - !mime_typep(object,(MimeObjectClass*)&mimeMultipartAlternativeClass) && - !mime_typep(kid,(MimeObjectClass*)&mimeMultipartRelatedClass) && - !mime_typep(kid,(MimeObjectClass*)&mimeMultipartAlternativeClass) && - !mime_typep(object,(MimeObjectClass*)&mimeMultipartSignedClass) && - !mime_typep(kid,(MimeObjectClass*)&mimeMultipartSignedClass) ) - { - status = object->options->decompose_file_close_fn ( object->options->stream_closure ); - if (status < 0) return status; - } - } -#endif /* MIME_DRAFTS */ - - } - } - return 0; -} - - -static int -MimeMultipart_parse_child_line (MimeObject *obj, char *line, int32 length, - XP_Bool first_line_p) -{ - MimeContainer *cont = (MimeContainer *) obj; - int status; - MimeObject *kid; - - XP_ASSERT(cont->nchildren > 0); - if (cont->nchildren <= 0) - return -1; - - kid = cont->children[cont->nchildren-1]; - XP_ASSERT(kid); - if (!kid) return -1; - -#ifdef MIME_DRAFTS - if ( obj->options && - obj->options->decompose_file_p && - obj->options->is_multipart_msg && - obj->options->decompose_file_output_fn ) - { - if (!mime_typep(obj,(MimeObjectClass*)&mimeMultipartAlternativeClass) && - !mime_typep(obj,(MimeObjectClass*)&mimeMultipartRelatedClass) && - !mime_typep(obj,(MimeObjectClass*)&mimeMultipartSignedClass) && - !mime_typep(kid,(MimeObjectClass*)&mimeMultipartAlternativeClass) && - !mime_typep(kid,(MimeObjectClass*)&mimeMultipartRelatedClass) && - !mime_typep(kid,(MimeObjectClass*)&mimeMultipartSignedClass) ) - return obj->options->decompose_file_output_fn (line, length, obj->options->stream_closure); - } -#endif /* MIME_DRAFTS */ - - /* The newline issues here are tricky, since both the newlines before - and after the boundary string are to be considered part of the - boundary: this is so that a part can be specified such that it - does not end in a trailing newline. - - To implement this, we send a newline *before* each line instead - of after, except for the first line, which is not preceeded by a - newline. - */ - - /* Remove the trailing newline... */ - if (length > 0 && line[length-1] == LF) length--; - if (length > 0 && line[length-1] == CR) length--; - - if (!first_line_p) - { - /* Push out a preceeding newline... */ - char nl[] = LINEBREAK; - status = kid->class->parse_buffer (nl, LINEBREAK_LEN, kid); - if (status < 0) return status; - } - - /* Now push out the line sans trailing newline. */ - return kid->class->parse_buffer (line, length, kid); -} - - -static int -MimeMultipart_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - MimeMultipart *mult = (MimeMultipart *) obj; - MimeContainer *cont = (MimeContainer *) obj; - - if (obj->closed_p) return 0; - - /* Push out one last newline if part of the last line is still in the - ibuffer. If this happens, this object does not end in a trailing newline - (and the parse_line method will be called with a string with no trailing - newline, which isn't the usual case.) - */ - if (!abort_p && obj->ibuffer_fp > 0) - { - int status = obj->class->parse_buffer (obj->ibuffer, obj->ibuffer_fp, - obj); - obj->ibuffer_fp = 0; - if (status < 0) - { - obj->closed_p = TRUE; - return status; - } - } - - /* Now call parse_eof for our active child, if there is one. - */ - if (cont->nchildren > 0 && - (mult->state == MimeMultipartPartLine || - mult->state == MimeMultipartPartFirstLine)) - { - MimeObject *kid = cont->children[cont->nchildren-1]; - XP_ASSERT(kid); - if (kid) - { - int status = kid->class->parse_eof(kid, abort_p); - if (status < 0) return status; - } - } - - return ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); -} - - -#if defined(DEBUG) && defined(XP_UNIX) -static int -MimeMultipart_debug_print (MimeObject *obj, FILE *stream, int32 depth) -{ - MimeMultipart *mult = (MimeMultipart *) obj; - MimeContainer *cont = (MimeContainer *) obj; - char *addr = mime_part_address(obj); - int i; - for (i=0; i < depth; i++) - fprintf(stream, " "); - fprintf(stream, "<%s %s (%d kid%s) boundary=%s 0x%08X>\n", - obj->class->class_name, - addr ? addr : "???", - cont->nchildren, (cont->nchildren == 1 ? "" : "s"), - (mult->boundary ? mult->boundary : "(none)"), - (uint32) mult); - FREEIF(addr); - -/* - if (cont->nchildren > 0) - fprintf(stream, "\n"); - */ - - for (i = 0; i < cont->nchildren; i++) - { - MimeObject *kid = cont->children[i]; - int status = kid->class->debug_print (kid, stream, depth+1); - if (status < 0) return status; - } - -/* - if (cont->nchildren > 0) - fprintf(stream, "\n"); - */ - - return 0; -} -#endif diff --git a/mozilla/lib/libmime/mimemult.h b/mozilla/lib/libmime/mimemult.h deleted file mode 100644 index a6963e51b7c..00000000000 --- a/mozilla/lib/libmime/mimemult.h +++ /dev/null @@ -1,118 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimemult.h --- definition of the MimeMultipart class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEMULT_H_ -#define _MIMEMULT_H_ - -#include "mimecont.h" - -/* The MimeMultipart class class implements the objects representing all of - the "multipart/" MIME types. In addition to the methods inherited from - MimeContainer, it provides the following methods and class variables: - - int create_child (MimeObject *obj) - - When it has been determined that a new sub-part should be created, - this method is called to do that. The default value for this method - does it in the usual multipart/mixed way. The headers of the object- - to-be-created may be found in the `hdrs' slot of the `MimeMultipart' - object. - - XP_Bool output_child_p (MimeObject *parent, MimeObject *child) - - Whether this child should be output. Default method always says `yes'. - - int parse_child_line (MimeObject *obj, char *line, int32 length, - XP_Bool first_line_p) - - When we have a line which should be handed off to the currently-active - child object, this method is called to do that. The `first_line_p' - variable will be true only for the very first line handed off to this - sub-part. The default method simply passes the line to the most- - recently-added child object. - - int close_child (MimeObject *self) - - When we reach the end of a sub-part (a separator line) this method is - called to shut down the currently-active child. The default method - simply calls `parse_eof' on the most-recently-added child object. - - MimeMultipartBoundaryType check_boundary (MimeObject *obj, - const char *line, int32 length) - - This method is used to examine a line and determine whether it is a - part boundary, and if so, what kind. It should return a member of - the MimeMultipartBoundaryType describing the line. - - const char *default_part_type - - This is the type which should be assumed for sub-parts which have - no explicit type specified. The default is "text/plain", but the - "multipart/digest" subclass overrides this to "message/rfc822". - */ - -typedef struct MimeMultipartClass MimeMultipartClass; -typedef struct MimeMultipart MimeMultipart; - -typedef enum { - MimeMultipartPreamble, - MimeMultipartHeaders, - MimeMultipartPartFirstLine, - MimeMultipartPartLine, - MimeMultipartEpilogue -} MimeMultipartParseState; - -typedef enum { - MimeMultipartBoundaryTypeNone, - MimeMultipartBoundaryTypeSeparator, - MimeMultipartBoundaryTypeTerminator -} MimeMultipartBoundaryType; - - -struct MimeMultipartClass { - MimeContainerClass container; - const char *default_part_type; - - int (*create_child) (MimeObject *); - XP_Bool (*output_child_p) (MimeObject *self, MimeObject *child); - int (*close_child) (MimeObject *); - int (*parse_child_line) (MimeObject *, char *line, int32 length, - XP_Bool first_line_p); - MimeMultipartBoundaryType (*check_boundary) (MimeObject *, const char *line, - int32 length); -}; - -extern MimeMultipartClass mimeMultipartClass; - -struct MimeMultipart { - MimeContainer container; /* superclass variables */ - char *boundary; /* Inter-part delimiter string */ - MimeHeaders *hdrs; /* headers of the part currently - being parsed, if any */ - MimeMultipartParseState state; /* State of parser */ -}; - -#endif /* _MIMEMULT_H_ */ diff --git a/mozilla/lib/libmime/mimeobj.c b/mozilla/lib/libmime/mimeobj.c deleted file mode 100644 index f24ef1874f4..00000000000 --- a/mozilla/lib/libmime/mimeobj.c +++ /dev/null @@ -1,309 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeobj.c --- definition of the MimeObject class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimeobj.h" - -#ifndef MOZILLA_30 -/* Way to destroy any notions of modularity or class hierarchy, Terry! */ -# include "mimetpla.h" -# include "mimethtm.h" -# include "mimecont.h" -#endif /* !MOZILLA_30 */ - -MimeDefClass (MimeObject, MimeObjectClass, mimeObjectClass, NULL); - -static int MimeObject_initialize (MimeObject *); -static void MimeObject_finalize (MimeObject *); -static int MimeObject_parse_begin (MimeObject *); -static int MimeObject_parse_buffer (char *, int32, MimeObject *); -static int MimeObject_parse_line (char *, int32, MimeObject *); -static int MimeObject_parse_eof (MimeObject *, XP_Bool); -static int MimeObject_parse_end (MimeObject *, XP_Bool); -static XP_Bool MimeObject_displayable_inline_p (MimeObjectClass *class, - MimeHeaders *hdrs); - -#if defined(DEBUG) && defined(XP_UNIX) -static int MimeObject_debug_print (MimeObject *, FILE *, int32 depth); -#endif - -static int -MimeObjectClassInitialize(MimeObjectClass *class) -{ - XP_ASSERT(!class->class_initialized); - class->initialize = MimeObject_initialize; - class->finalize = MimeObject_finalize; - class->parse_begin = MimeObject_parse_begin; - class->parse_buffer = MimeObject_parse_buffer; - class->parse_line = MimeObject_parse_line; - class->parse_eof = MimeObject_parse_eof; - class->parse_end = MimeObject_parse_end; - class->displayable_inline_p = MimeObject_displayable_inline_p; - -#if defined(DEBUG) && defined(XP_UNIX) - class->debug_print = MimeObject_debug_print; -#endif - return 0; -} - - -static int -MimeObject_initialize (MimeObject *obj) -{ - /* This is an abstract class; it shouldn't be directly instanciated. */ - XP_ASSERT(obj->class != &mimeObjectClass); - - /* Set up the content-type and encoding. */ - if (!obj->content_type && obj->headers) - obj->content_type = MimeHeaders_get (obj->headers, HEADER_CONTENT_TYPE, - TRUE, FALSE); - if (!obj->encoding && obj->headers) - obj->encoding = MimeHeaders_get (obj->headers, - HEADER_CONTENT_TRANSFER_ENCODING, - TRUE, FALSE); - - - /* Special case to normalize some types and encodings to a canonical form. - (These are nonstandard types/encodings which have been seen to appear in - multiple forms; we normalize them so that things like looking up icons - and extensions has consistent behavior for the receiver, regardless of - the "alias" type that the sender used.) - */ - if (!obj->content_type) - ; - else if (!strcasecomp(obj->content_type, APPLICATION_UUENCODE2) || - !strcasecomp(obj->content_type, APPLICATION_UUENCODE3) || - !strcasecomp(obj->content_type, APPLICATION_UUENCODE4)) - { - XP_FREE(obj->content_type); - obj->content_type = XP_STRDUP(APPLICATION_UUENCODE); - } - else if (!strcasecomp(obj->content_type, IMAGE_XBM2) || - !strcasecomp(obj->content_type, IMAGE_XBM3)) - { - XP_FREE(obj->content_type); - obj->content_type = XP_STRDUP(IMAGE_XBM); - } - - if (!obj->encoding) - ; - else if (!strcasecomp(obj->encoding, ENCODING_UUENCODE2) || - !strcasecomp(obj->encoding, ENCODING_UUENCODE3) || - !strcasecomp(obj->encoding, ENCODING_UUENCODE4)) - { - XP_FREE(obj->encoding); - obj->encoding = XP_STRDUP(ENCODING_UUENCODE); - } - else if (!strcasecomp(obj->encoding, ENCODING_COMPRESS2)) - { - XP_FREE(obj->encoding); - obj->encoding = XP_STRDUP(ENCODING_COMPRESS); - } - else if (!strcasecomp(obj->encoding, ENCODING_GZIP2)) - { - XP_FREE(obj->encoding); - obj->encoding = XP_STRDUP(ENCODING_GZIP); - } - - - return 0; -} - -static void -MimeObject_finalize (MimeObject *obj) -{ - obj->class->parse_eof (obj, FALSE); - obj->class->parse_end (obj, FALSE); - - if (obj->headers) - { - MimeHeaders_free(obj->headers); - obj->headers = 0; - } - - /* Should have been freed by parse_eof, but just in case... */ - XP_ASSERT(!obj->ibuffer); - XP_ASSERT(!obj->obuffer); - FREEIF (obj->ibuffer); - FREEIF (obj->obuffer); - - FREEIF(obj->content_type); - FREEIF(obj->encoding); - - if (obj->options && obj->options->state) - { - XP_FREE(obj->options->state); - obj->options->state = 0; - } -} - - -static int -MimeObject_parse_begin (MimeObject *obj) -{ - XP_ASSERT (!obj->closed_p); - - /* If we haven't set up the state object yet, then this should be - the outermost object... */ - if (obj->options && !obj->options->state) - { - XP_ASSERT(!obj->headers); /* should be the outermost object. */ - - obj->options->state = XP_NEW(MimeParseStateObject); - if (!obj->options->state) return MK_OUT_OF_MEMORY; - XP_MEMSET(obj->options->state, 0, sizeof(*obj->options->state)); - obj->options->state->root = obj; - obj->options->state->separator_suppressed_p = TRUE; /* no first sep */ - } - - /* Decide whether this object should be output or not... */ - if (!obj->options || !obj->options->output_fn) - obj->output_p = FALSE; - else if (!obj->options->part_to_load) - obj->output_p = TRUE; - else - { - char *id = mime_part_address(obj); - if (!id) return MK_OUT_OF_MEMORY; - obj->output_p = !XP_STRCMP(id, obj->options->part_to_load); - XP_FREE(id); - } - -#ifndef MOZILLA_30 -/* Way to destroy any notions of modularity or class hierarchy, Terry! */ - if (obj->options && obj->options->nice_html_only_p) { - if (!mime_subclass_p(obj->class, - (MimeObjectClass*) &mimeInlineTextHTMLClass) && - !mime_subclass_p(obj->class, - (MimeObjectClass*) &mimeInlineTextPlainClass) && - !mime_subclass_p(obj->class, - (MimeObjectClass*) &mimeContainerClass)) { - obj->output_p = FALSE; - } - } -#endif /* !MOZILLA_30 */ - - return 0; -} - -static int -MimeObject_parse_buffer (char *buffer, int32 size, MimeObject *obj) -{ - XP_ASSERT(!obj->closed_p); - if (obj->closed_p) return -1; - - return XP_LineBuffer (buffer, size, - &obj->ibuffer, &obj->ibuffer_size, &obj->ibuffer_fp, - TRUE, - ((int32 (*) (char *, uint32, void *)) - /* This cast is to turn void into MimeObject */ - obj->class->parse_line), - obj); -} - - -static int -MimeObject_parse_line (char *line, int32 length, MimeObject *obj) -{ - /* This method should never be called. */ - XP_ASSERT(0); - return -1; -} - -static int -MimeObject_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - if (obj->closed_p) return 0; - XP_ASSERT(!obj->parsed_p); - - /* If there is still data in the ibuffer, that means that the last line of - this part didn't end in a newline; so push it out anyway (this means that - the parse_line method will be called with a string with no trailing - newline, which isn't the usual case.) - */ - if (!abort_p && - obj->ibuffer_fp > 0) - { - int status = obj->class->parse_line (obj->ibuffer, obj->ibuffer_fp, obj); - obj->ibuffer_fp = 0; - if (status < 0) - { - obj->closed_p = TRUE; - return status; - } - } - - obj->closed_p = TRUE; - return 0; -} - - -static int -MimeObject_parse_end (MimeObject *obj, XP_Bool abort_p) -{ - if (obj->parsed_p) - { - XP_ASSERT(obj->closed_p); - return 0; - } - - /* We won't be needing these buffers any more; nuke 'em. */ - FREEIF(obj->ibuffer); - obj->ibuffer_fp = 0; - obj->ibuffer_size = 0; - FREEIF(obj->obuffer); - obj->obuffer_fp = 0; - obj->obuffer_size = 0; - - obj->parsed_p = TRUE; - return 0; -} - - -static XP_Bool -MimeObject_displayable_inline_p (MimeObjectClass *class, MimeHeaders *hdrs) -{ - XP_ASSERT(0); /* This method should never be called. */ - return FALSE; -} - - - -#if defined(DEBUG) && defined(XP_UNIX) -static int -MimeObject_debug_print (MimeObject *obj, FILE *stream, int32 depth) -{ - int i; - char *addr = mime_part_address(obj); - for (i=0; i < depth; i++) - fprintf(stream, " "); - fprintf(stream, "<%s %s 0x%08X>\n", obj->class->class_name, - addr ? addr : "???", - (uint32) obj); - FREEIF(addr); - return 0; -} -#endif diff --git a/mozilla/lib/libmime/mimeobj.h b/mozilla/lib/libmime/mimeobj.h deleted file mode 100644 index 6075fc82093..00000000000 --- a/mozilla/lib/libmime/mimeobj.h +++ /dev/null @@ -1,206 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeobj.h --- definition of the MimeObject class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEOBJ_H_ -#define _MIMEOBJ_H_ - -#include "mimei.h" -#include "xp_linebuf.h" - - -/* MimeObject is the base-class for the objects representing all other - MIME types. It provides several methods: - - int initialize (MimeObject *obj) - - This is called from mime_new() when a new instance is allocated. - Subclasses should do whatever setup is necessary from this method, - and should call the superclass's initialize method, unless there's - a specific reason not to. - - void finalize (MimeObject *obj) - - This is called from mime_free() and should free all data associated - with the object. If the object points to other MIME objects, they - should be finalized as well (by calling mime_free(), not by calling - their finalize() methods directly.) - - int parse_buffer (char *buf, int32 size, MimeObject *obj) - - This is the method by which you feed arbitrary data into the parser - for this object. Most subclasses will probably inherit this method - from the MimeObject base-class, which line-buffers the data and then - hands it off to the parse_line() method. - - If this object uses a Content-Transfer-Encoding (base64, qp, uue) - then the data may be decoded by parse_buffer() before parse_line() - is called. (The MimeLeaf class provides this functionality.) - - int parse_begin (MimeObject *obj) - Called after `init' but before `parse_line' or `parse_buffer'. - Can be used to initialize various parsing machinery. - - int parse_line (char *line, int32 length, MimeObject *obj) - - This method is called (by parse_buffer()) for each complete line of - data handed to the parser, and is the method which most subclasses - will override to implement their parsers. - - When handing data off to a MIME object for parsing, one should always - call the parse_buffer() method, and not call the parse_line() method - directly, since the parse_buffer() method may do other transformations - on the data (like base64 decoding.) - - One should generally not call parse_line() directly, since that could - bypass decoding. One should call parse_buffer() instead. - - int parse_eof (MimeObject *obj, XP_Bool abort_p) - - This is called when there is no more data to be handed to the object: - when the parent object is done feeding data to an object being parsed. - Implementors of this method should be sure to also call the parse_eof() - methods of any sub-objects to which they have pointers. - - This is also called by the finalize() method, just before object - destruction, if it has not already been called. - - The `closed_p' instance variable is used to prevent multiple calls to - `parse_eof'. - - int parse_end (MimeObject *obj) - Called after `parse_eof' but before `finalize'. - This can be used to free up any memory no longer needed now that parsing - is done (to avoid surprises due to unexpected method combination, it's - best to free things in this method in preference to `parse_eof'.) - Implementors of this method should be sure to also call the parse_end() - methods of any sub-objects to which they have pointers. - - This is also called by the finalize() method, just before object - destruction, if it has not already been called. - - The `parsed_p' instance variable is used to prevent multiple calls to - `parse_end'. - - - XP_Bool displayable_inline_p (MimeObjectClass *class, MimeHeaders *hdrs) - - This method should return true if this class of object will be displayed - directly, as opposed to being displayed as a link. This information is - used by the "multipart/alternative" parser to decide which of its children - is the ``best'' one to display. Note that this is a class method, not - an object method -- there is not yet an instance of this class at the time - that it is called. The `hdrs' provided are the headers of the object that - might be instantiated -- from this, the method may extract additional - infomation that it might need to make its decision. - */ - - -/* this one is typdedef'ed in mimei.h, since it is the base-class. */ -struct MimeObjectClass { - - /* Note: the order of these first five slots is known by MimeDefClass(). - Technically, these are part of the object system, not the MIME code. - */ - const char *class_name; - int instance_size; - struct MimeObjectClass *superclass; - int (*class_initialize) (MimeObjectClass *class); - XP_Bool class_initialized; - XP_Bool showAttachmentIcon; - - /* These are the methods shared by all MIME objects. See comment above. - */ - int (*initialize) (MimeObject *obj); - void (*finalize) (MimeObject *obj); - int (*parse_begin) (MimeObject *obj); - int (*parse_buffer) (char *buf, int32 size, MimeObject *obj); - int (*parse_line) (char *line, int32 length, MimeObject *obj); - int (*parse_eof) (MimeObject *obj, XP_Bool abort_p); - int (*parse_end) (MimeObject *obj, XP_Bool abort_p); - - XP_Bool (*displayable_inline_p) (MimeObjectClass *class, MimeHeaders *hdrs); - -#if defined(DEBUG) && defined(XP_UNIX) - int (*debug_print) (MimeObject *obj, FILE *stream, int32 depth); -#endif -}; - -extern MimeObjectClass mimeObjectClass; - -/* this one is typdedef'ed in mimei.h, since it is the base-class. */ -struct MimeObject { - MimeObjectClass *class; /* Pointer to class object, for `type-of' */ - - MimeHeaders *headers; /* The header data associated with this object; - this is where the content-type, disposition, - description, and other meta-data live. - - For example, the outermost message/rfc822 object - would have NULL here (since it has no parent, - thus no headers to describe it.) However, a - multipart/mixed object, which was the sole - child of that message/rfc822 object, would have - here a copy of the headers which began the - parent object (the headers which describe the - child.) - */ - - char *content_type; /* The MIME content-type and encoding. */ - char *encoding; /* In most cases, these will be the same as the - values to be found in the `headers' object, - but in some cases, the values in these slots - will be more correct than the headers. - */ - - - MimeObject *parent; /* Backpointer to a MimeContainer object. */ - - MimeDisplayOptions *options; /* Display preferences set by caller. */ - - XP_Bool closed_p; /* Whether it's done being written to. */ - XP_Bool parsed_p; /* Whether the parser has been shut down. */ - XP_Bool output_p; /* Whether it should be written. */ - - /* Read-buffer and write-buffer (on input, `parse_buffer' uses ibuffer to - compose calls to `parse_line'; on output, `obuffer' is used in various - ways by various routines.) These buffers are created and grow as needed. - `ibuffer' should be generally be considered hands-off, and `obuffer' - should generally be considered fair game. - */ - char *ibuffer, *obuffer; - uint32 ibuffer_size, obuffer_size; - uint32 ibuffer_fp, obuffer_fp; -}; - - -#define MimeObject_grow_obuffer(obj, desired_size) \ - (((desired_size) >= (obj)->obuffer_size) ? \ - XP_GrowBuffer ((desired_size), sizeof(char), 1024, \ - &(obj)->obuffer, &(obj)->obuffer_size) \ - : 0) - - -#endif /* _MIMEOBJ_H_ */ diff --git a/mozilla/lib/libmime/mimepbuf.c b/mozilla/lib/libmime/mimepbuf.c deleted file mode 100644 index 1b531d7c763..00000000000 --- a/mozilla/lib/libmime/mimepbuf.c +++ /dev/null @@ -1,296 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimepbuf.c --- utilities for buffering a MIME part for later display. - Created: Jamie Zawinski <jwz@netscape.com>, 24-Sep-96. - */ - -#include "rosetta.h" -#include "mimepbuf.h" -#include "xp_file.h" - -/* See mimepbuf.h for a description of the mission of this file. - - Implementation: - - When asked to buffer an object, we first try to malloc() a buffer to - hold the upcoming part. First we try to allocate a 50k buffer, and - then back off by 5k until we are able to complete the allocation, - or are unable to allocate anything. - - As data is handed to us, we store it in the memory buffer, until the - size of the memory buffer is exceeded (including the case where no - memory buffer was able to be allocated at all.) - - Once we've filled the memory buffer, we open a temp file on disk. - Anything that is currently in the memory buffer is then flushed out - to the disk file (and the memory buffer is discarded.) Subsequent - data that is passed in is appended to the file. - - Thus only one of the memory buffer or the disk buffer ever exist at - the same time; and small parts tend to live completely in memory - while large parts tend to live on disk. - - When we are asked to read the data back out of the buffer, we call - the provided read-function with either: the contents of the memory - buffer; or blocks read from the disk file. - */ - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; - -#define TARGET_MEMORY_BUFFER_SIZE (1024 * 50) /* try for 50k mem buffer */ -#define TARGET_MEMORY_BUFFER_QUANTUM (1024 * 5) /* decrease in steps of 5k */ -#define DISK_BUFFER_SIZE (1024 * 10) /* read disk in 10k chunks */ - - -struct MimePartBufferData -{ - char *part_buffer; /* Buffer used for part-lookahead. */ - int32 part_buffer_fp; /* Active length. */ - int32 part_buffer_size; /* How big it is. */ - - char *file_buffer_name; /* The name of a temp file used when we - run out of room in the part_buffer. */ - XP_File file_stream; /* A stream to it. */ -}; - -MimePartBufferData * -MimePartBufferCreate (void) -{ - MimePartBufferData *data = XP_NEW(MimePartBufferData); - if (!data) return 0; - XP_MEMSET(data, 0, sizeof(*data)); - return data; -} - - -void -MimePartBufferClose (MimePartBufferData *data) -{ - XP_ASSERT(data); - if (!data) return; - - if (data->file_stream) - { - XP_FileClose(data->file_stream); - data->file_stream = 0; - } -} - - -void -MimePartBufferReset (MimePartBufferData *data) -{ - XP_ASSERT(data); - if (!data) return; - - FREEIF(data->part_buffer); - data->part_buffer_fp = 0; - - if (data->file_stream) - { - XP_FileClose(data->file_stream); - data->file_stream = 0; - } - if (data->file_buffer_name) - { - XP_FileRemove(data->file_buffer_name, xpTemporary); - XP_FREE(data->file_buffer_name); - data->file_buffer_name = 0; - } -} - - -void -MimePartBufferDestroy (MimePartBufferData *data) -{ - XP_ASSERT(data); - if (!data) return; - MimePartBufferReset (data); - XP_FREE(data); -} - - -int -MimePartBufferWrite (MimePartBufferData *data, - const char *buf, int32 size) -{ - int status = 0; - - XP_ASSERT(data && buf && size > 0); - if (!data || !buf || size <= 0) - return -1; - - /* If we don't yet have a buffer (either memory or file) try and make a - memory buffer. - */ - if (!data->part_buffer && - !data->file_buffer_name) - { - int target_size = TARGET_MEMORY_BUFFER_SIZE; - while (target_size > 0) - { - data->part_buffer = (char *) XP_ALLOC(target_size); - if (data->part_buffer) break; /* got it! */ - target_size -= TARGET_MEMORY_BUFFER_QUANTUM; /* decrease it and try - again */ - } - - if (data->part_buffer) - data->part_buffer_size = target_size; - else - data->part_buffer_size = 0; - - data->part_buffer_fp = 0; - } - - /* Ok, if at this point we still don't have either kind of buffer, try and - make a file buffer. */ - if (!data->part_buffer && - !data->file_buffer_name) - { - data->file_buffer_name = WH_TempName(xpTemporary, "nsma"); - if (!data->file_buffer_name) return MK_OUT_OF_MEMORY; - - data->file_stream = XP_FileOpen(data->file_buffer_name, xpTemporary, - XP_FILE_WRITE_BIN); - if (!data->file_stream) - return MK_UNABLE_TO_OPEN_TMP_FILE; - } - - XP_ASSERT(data->part_buffer || data->file_stream); - - - /* If this buf will fit in the memory buffer, put it there. - */ - if (data->part_buffer && - data->part_buffer_fp + size < data->part_buffer_size) - { - XP_MEMCPY(data->part_buffer + data->part_buffer_fp, - buf, size); - data->part_buffer_fp += size; - } - - /* Otherwise it won't fit; write it to the file instead. */ - else - { - /* If the file isn't open yet, open it, and dump the memory buffer - to it. */ - if (!data->file_stream) - { - if (!data->file_buffer_name) - data->file_buffer_name = - WH_TempName (xpTemporary, "nsma"); - if (!data->file_buffer_name) return MK_OUT_OF_MEMORY; - - data->file_stream = XP_FileOpen(data->file_buffer_name, xpTemporary, - XP_FILE_WRITE_BIN); - if (!data->file_stream) - return MK_UNABLE_TO_OPEN_TMP_FILE; - - if (data->part_buffer && data->part_buffer_fp) - { - status = XP_FileWrite (data->part_buffer, - data->part_buffer_fp, - data->file_stream); - if (status < 0) return status; - } - - FREEIF(data->part_buffer); - data->part_buffer_fp = 0; - data->part_buffer_size = 0; - } - - /* Dump this buf to the file. */ - status = XP_FileWrite (buf, size, data->file_stream); - if (status < 0) return status; - } - - return 0; -} - - -int -MimePartBufferRead (MimePartBufferData *data, - int (*read_fn) (char *buf, int32 size, void *closure), - void *closure) -{ - int status = 0; - XP_ASSERT(data); - if (!data) return -1; - - if (data->part_buffer) - { - /* Read it out of memory. - */ - XP_ASSERT(!data->file_buffer_name && !data->file_stream); - - status = read_fn(data->part_buffer, data->part_buffer_fp, closure); - } - else if (data->file_buffer_name) - { - /* Read it off disk. - */ - char *buf; - int32 buf_size = DISK_BUFFER_SIZE; - - XP_ASSERT(data->part_buffer_size == 0 && data->part_buffer_fp == 0); - XP_ASSERT(!data->file_stream); - XP_ASSERT(data->file_buffer_name); - if (!data->file_buffer_name) return -1; - - buf = (char *) XP_ALLOC(buf_size); - if (!buf) return MK_OUT_OF_MEMORY; - - if (data->file_stream) - XP_FileClose(data->file_stream); - data->file_stream = XP_FileOpen(data->file_buffer_name, xpTemporary, - XP_FILE_READ_BIN); - if (!data->file_stream) - { - XP_FREE(buf); - return MK_UNABLE_TO_OPEN_TMP_FILE; - } - - while(1) - { - int32 rstatus = XP_FileRead(buf, buf_size - 1, data->file_stream); - if (rstatus <= 0) - { - status = rstatus; - break; - } - else - { - /* It would be really nice to be able to yield here, and let - some user events and other input sources get processed. - Oh well. */ - - status = read_fn (buf, rstatus, closure); - if (status < 0) break; - } - } - XP_FREE(buf); - } - - return 0; -} diff --git a/mozilla/lib/libmime/mimepbuf.h b/mozilla/lib/libmime/mimepbuf.h deleted file mode 100644 index d8a38a34965..00000000000 --- a/mozilla/lib/libmime/mimepbuf.h +++ /dev/null @@ -1,86 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimepbuf.h --- utilities for buffering a MIME part for later display. - Created: Jamie Zawinski <jwz@netscape.com>, 24-Sep-96. - */ - -#ifndef _MIMEPBUF_H_ -#define _MIMEPBUF_H_ - -#include "mimei.h" - -/* This file provides the ability to save up the entire contents of a MIME - object (of arbitrary size), and then emit it all at once later. The - buffering is done in an efficient way that works well for both very large - and very small objects. - - This is used in two places: - - = The implementation of multipart/alternative uses this code to do a - one-part-lookahead. As it traverses its children, it moves forward - until it finds a part which cannot be displayed; and then it displays - the *previous* part (the last which *could* be displayed.) This code - is used to hold the previous part until it is needed. -*/ - -HG89321 - -/* An opaque object used to represent the buffered data. - */ -typedef struct MimePartBufferData MimePartBufferData; - -/* Create an empty part buffer object. - */ -extern MimePartBufferData *MimePartBufferCreate (void); - -/* Assert that the buffer is now full (EOF has been reached on the current - part.) This will free some resources, but leaves the part in the buffer. - After calling MimePartBufferReset, the buffer may be used to store a - different object. - */ -void MimePartBufferClose (MimePartBufferData *data); - -/* Reset a part buffer object to the default state, discarding any currently- - buffered data. - */ -extern void MimePartBufferReset (MimePartBufferData *data); - -/* Free the part buffer itself, and discard any buffered data. - */ -extern void MimePartBufferDestroy (MimePartBufferData *data); - -/* Push a chunk of a MIME object into the buffer. - */ -extern int MimePartBufferWrite (MimePartBufferData *data, - const char *buf, int32 size); - -/* Read the contents of the buffer back out. This will invoke the provided - read_fn with successive chunks of data until the buffer has been drained. - The provided function may be called once, or multiple times. - */ -extern int -MimePartBufferRead (MimePartBufferData *data, - int (*read_fn) (char *buf, int32 size, void *closure), - void *closure); - -#endif /* _MIMEPBUF_H_ */ diff --git a/mozilla/lib/libmime/mimestub.c b/mozilla/lib/libmime/mimestub.c deleted file mode 100644 index 13ca5a30a4c..00000000000 --- a/mozilla/lib/libmime/mimestub.c +++ /dev/null @@ -1,1118 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimestub.c --- junk to let libmime.a be tested standalone. - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -/* - mimestub.c --- junk to let libmime.a be tested standalone. - - The junk in this file is various bits and pieces that have been - cut-and-pasted from other places in Mozilla, mainly netlib. We just - copied these functions to avoid pulling in the spaghetti that is netlib, - and libxp, and libmsg, and and and... - - In addition to this file, we link directly against lib/xp/xp_file.o, - lib/xp/xp_str.o, and lib/libmsg/addr.o, because those files *actually - stand on their own*! - - Life kinda sucks, but oh well. - */ - -#include "xp.h" -#include "rosetta.h" - - -#ifndef XP_UNIX -ERROR! this is a unix-only file for the "mimefilt" standalone program. - This does not go into libmime.a. -#endif - - -#include <netdb.h> - -#define CONST const - -extern int MK_MSG_MIME_MAC_FILE; -extern int MK_MSG_NO_HEADERS; -extern int MK_OUT_OF_MEMORY; -extern int MK_UNABLE_TO_OPEN_TMP_FILE; - -/* recommended by comment in lib/xp/xp_intl.c... */ -char * -XP_GetString(int16 i) -{ - extern char * XP_GetBuiltinString(int16 i); - - return XP_GetBuiltinString(i); -} - -int16 INTL_CharSetNameToID(char *charset) { return 0; } -char *XP_GetStringForHTML (int i, int16 wincsid, char* english) -{ - return english; -} - -char *INTL_DecodeMimePartIIStr(const char *header, int16 wincsid, - XP_Bool dontConvert) -{ - return strdup(header); -} - -int16 INTL_DefaultDocCharSetID(MWContext * context) -{ - return 0; -} - -int PREF_GetCharPref(const char *pref, char * return_buf, int * buf_length) -{ - return 0; -} -/* -INTL_DefaultDocCharSetID -- (mimetext.o). -PREF_GetCharPref -- ../../dist/lib/libxp.a(xp_file.o). - -MSG_ExtractRFC822AddressMailboxes -- (mimehdrs.o). -MSG_ExtractRFC822AddressNames -- (mimehdrs.o). -*/ - - - -/* from nspr somewhere... - */ -struct hostent * -PR_gethostbyname(const char *name) -{ - return gethostbyname(name); -} - - - -/* from libnet/mkutils.c */ -PUBLIC char * -NET_EscapeHTML(const char * string) -{ - char *rv = (char *) XP_ALLOC(XP_STRLEN(string)*4 + 1); /* The +1 is for - the trailing - null! */ - char *ptr = rv; - - if(rv) - { - for(; *string != '\0'; string++) - { - if(*string == '<') - { - *ptr++ = '&'; - *ptr++ = 'l'; - *ptr++ = 't'; - *ptr++ = ';'; - } - else if(*string == '>') - { - *ptr++ = '&'; - *ptr++ = 'g'; - *ptr++ = 't'; - *ptr++ = ';'; - } - else if(*string == '&') - { - *ptr++ = '&'; - *ptr++ = 'a'; - *ptr++ = 'm'; - *ptr++ = 'p'; - *ptr++ = ';'; - } - else - { - *ptr++ = *string; - } - } - *ptr = '\0'; - } - - return(rv); -} - - -/* from libnet/mkutils.c */ -# define MSG_FONT int -# define MSG_PlainFont 0 -# define MSG_BoldFont 1 -# define MSG_ItalicFont 2 -# define MSG_BoldItalicFont 3 -# define MSG_CITATION_SIZE int -# define MSG_NormalSize 4 -# define MSG_Bigger 5 -# define MSG_Smaller 6 -static int MSG_CitationFont = MSG_ItalicFont; -static int MSG_CitationSize = MSG_NormalSize; -static const char *MSG_CitationColor = 0; - -#ifndef MOZILLA_30 -# define MSG_Prefs void -# define MSG_GetCitationStyle(w,x,y,z) do{}while(0) -# define MSG_GetPrefs(x) 0 -#endif - -/* from libnet/mkutils.c */ -PUBLIC int -NET_ScanForURLs( -/*#ifndef MOZILLA_30*/ - MSG_Pane* pane, -/*#endif / * !MOZILLA_30 */ - const char *input, int32 input_size, - char *output, int output_size, XP_Bool urls_only) -{ - int col = 0; - const char *cp; - const char *end = input + input_size; - char *output_ptr = output; - char *end_of_buffer = output + output_size - 40; /* add safty zone :( */ - Bool line_is_citation = FALSE; - const char *cite_open1, *cite_close1; - const char *cite_open2, *cite_close2; -#ifndef MOZILLA_30 - const char* color = NULL; -#else /* MOZILLA_30 */ - const char* color = MSG_CitationColor; -#endif /* MOZILLA_30 */ - - if (urls_only) - { - cite_open1 = cite_close1 = ""; - cite_open2 = cite_close2 = ""; - } - else - { -#ifdef MOZILLA_CLIENT -# ifdef MOZILLA_30 - MSG_FONT font = MSG_CitationFont; - MSG_CITATION_SIZE size = MSG_CitationSize; -# else /* !MOZILLA_30 */ - MSG_Prefs* prefs; - MSG_FONT font = MSG_ItalicFont; - MSG_CITATION_SIZE size = MSG_NormalSize; - - if (pane) { - prefs = MSG_GetPrefs(pane); - MSG_GetCitationStyle(prefs, &font, &size, &color); - } -#endif /* !MOZILLA_30 */ - switch (font) - { - case MSG_PlainFont: - cite_open1 = "", cite_close1 = ""; - break; - case MSG_BoldFont: - cite_open1 = "<B>", cite_close1 = "</B>"; - break; - case MSG_ItalicFont: - cite_open1 = "<I>", cite_close1 = "</I>"; - break; - case MSG_BoldItalicFont: - cite_open1 = "<B><I>", cite_close1 = "</I></B>"; - break; - default: - XP_ASSERT(0); - cite_open1 = cite_close1 = ""; - break; - } - switch (size) - { - case MSG_NormalSize: - cite_open2 = "", cite_close2 = ""; - break; - case MSG_Bigger: - cite_open2 = "<FONT SIZE=\"+1\">", cite_close2 = "</FONT>"; - break; - case MSG_Smaller: - cite_open2 = "<FONT SIZE=\"-1\">", cite_close2 = "</FONT>"; - break; - default: - XP_ASSERT(0); - cite_open2 = cite_close2 = ""; - break; - } -#else /* !MOZILLA_CLIENT */ - XP_ASSERT(0); -#endif /* !MOZILLA_CLIENT */ - } - - if (!urls_only) - { - /* Decide whether this line is a quotation, and should be italicized. - This implements the following case-sensitive regular expression: - - ^[ \t]*[A-Z]*[]>] - - Which matches these lines: - - > blah blah blah - > blah blah blah - LOSER> blah blah blah - LOSER] blah blah blah - */ - const char *s = input; - while (s < end && XP_IS_SPACE (*s)) s++; - while (s < end && *s >= 'A' && *s <= 'Z') s++; - - if (s >= end) - ; - else if (input_size >= 6 && *s == '>' && - !XP_STRNCMP (input, ">From ", 6)) /* #$%^ing sendmail... */ - ; - else if (*s == '>' || *s == ']') - { - line_is_citation = TRUE; - XP_STRCPY(output_ptr, cite_open1); - output_ptr += XP_STRLEN(cite_open1); - XP_STRCPY(output_ptr, cite_open2); - output_ptr += XP_STRLEN(cite_open2); - if (color && - output_ptr + XP_STRLEN(color) + 20 < end_of_buffer) { - XP_STRCPY(output_ptr, "<FONT COLOR="); - output_ptr += XP_STRLEN(output_ptr); - XP_STRCPY(output_ptr, color); - output_ptr += XP_STRLEN(output_ptr); - XP_STRCPY(output_ptr, ">"); - output_ptr += XP_STRLEN(output_ptr); - } - } - } - - /* Normal lines are scanned for buried references to URL's - Unfortunately, it may screw up once in a while (nobody's perfect) - */ - for(cp = input; cp < end && output_ptr < end_of_buffer; cp++) - { - /* if NET_URL_Type returns true then it is most likely a URL - But only match protocol names if at the very beginning of - the string, or if the preceeding character was not alphanumeric; - this lets us match inside "---HTTP://XXX" but not inside of - things like "NotHTTP://xxx" - */ - int type = 0; - if(!XP_IS_SPACE(*cp) && - (cp == input || (!XP_IS_ALPHA(cp[-1]) && !XP_IS_DIGIT(cp[-1]))) && - (type = NET_URL_Type(cp)) != 0) - { - const char *cp2; -#if 0 - Bool commas_ok = (type == MAILTO_TYPE_URL); -#endif - - for(cp2=cp; cp2 < end; cp2++) - { - /* These characters always mark the end of the URL. */ - if (XP_IS_SPACE(*cp2) || - *cp2 == '<' || *cp2 == '>' || - *cp2 == '`' || *cp2 == ')' || - *cp2 == '\'' || *cp2 == '"' || - *cp2 == ']' || *cp2 == '}' -#if 0 - || *cp2 == '!' -#endif - ) - break; - -#if 0 - /* But a "," marks the end of the URL only if there was no "?" - earlier in the URL (this is so we can do imagemaps, like - "foo.html?300,400".) - */ - else if (*cp2 == '?') - commas_ok = TRUE; - else if (*cp2 == ',' && !commas_ok) - break; -#endif - } - - /* Check for certain punctuation characters on the end, and strip - them off. */ - while (cp2 > cp && - (cp2[-1] == '.' || cp2[-1] == ',' || cp2[-1] == '!' || - cp2[-1] == ';' || cp2[-1] == '-' || cp2[-1] == '?' || - cp2[-1] == '#')) - cp2--; - - col += (cp2 - cp); - - /* if the url is less than 7 characters then we screwed up - * and got a "news:" url or something which is worthless - * to us. Exclude the A tag in this case. - * - * Also exclude any URL that ends in a colon; those tend - * to be internal and magic and uninteresting. - * - * And also exclude the builtin icons, whose URLs look - * like "internal-gopher-binary". - */ - if (cp2-cp < 7 || - (cp2 > cp && cp2[-1] == ':') || - !XP_STRNCMP(cp, "internal-", 9)) - { - XP_MEMCPY(output_ptr, cp, cp2-cp); - output_ptr += (cp2-cp); - *output_ptr = 0; - } - else - { - char *quoted_url; - int32 size_left = output_size - (output_ptr-output); - - if(cp2-cp > size_left) - return MK_OUT_OF_MEMORY; - - XP_MEMCPY(output_ptr, cp, cp2-cp); - output_ptr[cp2-cp] = 0; - quoted_url = NET_EscapeHTML(output_ptr); - if (!quoted_url) return MK_OUT_OF_MEMORY; - PR_snprintf(output_ptr, size_left, - "<A HREF=\"%s\">%s</A>", - quoted_url, - quoted_url); - output_ptr += XP_STRLEN(output_ptr); - XP_FREE(quoted_url); - output_ptr += XP_STRLEN(output_ptr); - } - - cp = cp2-1; /* go to next word */ - } - else - { - /* Make sure that special symbols don't screw up the HTML parser - */ - if(*cp == '<') - { - XP_STRCPY(output_ptr, "&lt;"); - output_ptr += 4; - col++; - } - else if(*cp == '>') - { - XP_STRCPY(output_ptr, "&gt;"); - output_ptr += 4; - col++; - } - else if(*cp == '&') - { - XP_STRCPY(output_ptr, "&amp;"); - output_ptr += 5; - col++; - } - else - { - *output_ptr++ = *cp; - col++; - } - } - } - - *output_ptr = 0; - - if (line_is_citation) /* Close off the highlighting */ - { - if (color) { - XP_STRCPY(output_ptr, "</FONT>"); - output_ptr += XP_STRLEN(output_ptr); - } - - XP_STRCPY(output_ptr, cite_close2); - output_ptr += XP_STRLEN (cite_close2); - XP_STRCPY(output_ptr, cite_close1); - output_ptr += XP_STRLEN (cite_close1); - } - - return 0; -} - - -/* from libnet/mkutils.c */ -PUBLIC int -NET_URL_Type (CONST char *URL) -{ - /* Protect from SEGV */ - if (!URL || (URL && *URL == '\0')) - return(0); - - switch(*URL) { - case 'a': - case 'A': - HG82921 - if(!strncasecomp(URL,"about:",6)) - return(ABOUT_TYPE_URL); - break; - case 'f': - case 'F': - if(!strncasecomp(URL,"ftp:",4)) - return(FTP_TYPE_URL); - else if(!strncasecomp(URL,"file:",5)) - return(FILE_TYPE_URL); - break; - case 'g': - case 'G': - if(!strncasecomp(URL,"gopher:",7)) - return(GOPHER_TYPE_URL); - break; - case 'h': - case 'H': - if(!strncasecomp(URL,"http:",5)) - return(HTTP_TYPE_URL); - else if(!strncasecomp(URL,"https:",6)) - return(SECURE_HTTP_TYPE_URL); - break; - case 'i': - case 'I': - if(!strncasecomp(URL,"internal-gopher-",16)) - return(INTERNAL_IMAGE_TYPE_URL); - else if(!strncasecomp(URL,"internal-news-",14)) - return(INTERNAL_IMAGE_TYPE_URL); - else if(!strncasecomp(URL,"internal-edit-",14)) - return(INTERNAL_IMAGE_TYPE_URL); - else if(!strncasecomp(URL,"internal-attachment-",20)) - return(INTERNAL_IMAGE_TYPE_URL); - else if(!strncasecomp(URL,"internal-dialog-handler",23)) - return(HTML_DIALOG_HANDLER_TYPE_URL); - else if(!strncasecomp(URL,"internal-panel-handler",22)) - return(HTML_PANEL_HANDLER_TYPE_URL); - HG87988 - break; - case 'j': - case 'J': - if(!strncasecomp(URL, "javascript:",11)) - return(MOCHA_TYPE_URL); - break; - case 'l': - case 'L': - if(!strncasecomp(URL, "livescript:",11)) - return(MOCHA_TYPE_URL); - break; - case 'm': - case 'M': - if(!strncasecomp(URL,"mailto:",7)) - return(MAILTO_TYPE_URL); - else if(!strncasecomp(URL,"mailbox:",8)) - return(MAILBOX_TYPE_URL); - else if(!strncasecomp(URL, "mocha:",6)) - return(MOCHA_TYPE_URL); - break; - case 'n': - case 'N': - if(!strncasecomp(URL,"news:",5)) - return(NEWS_TYPE_URL); -#ifdef NFS_TYPE_URL - else if(!strncasecomp(URL,"nfs:",4)) - return(NFS_TYPE_URL); -#endif /* NFS_TYPE_URL */ - break; - case 'p': - case 'P': - if(!strncasecomp(URL,"pop3:",5)) - return(POP3_TYPE_URL); - break; - case 'r': - case 'R': - if(!strncasecomp(URL,"rlogin:",7)) - return(RLOGIN_TYPE_URL); - break; - case 's': - case 'S': - if(!strncasecomp(URL,"snews:",6)) - return(NEWS_TYPE_URL); - case 't': - case 'T': - if(!strncasecomp(URL,"telnet:",7)) - return(TELNET_TYPE_URL); - else if(!strncasecomp(URL,"tn3270:",7)) - return(TN3270_TYPE_URL); - break; - case 'v': - case 'V': - if(!strncasecomp(URL, VIEW_SOURCE_URL_PREFIX, - sizeof(VIEW_SOURCE_URL_PREFIX)-1)) - return(VIEW_SOURCE_TYPE_URL); - break; - case 'w': - case 'W': - if(!strncasecomp(URL,"wais:",5)) - return(WAIS_TYPE_URL); - break; - case 'u': - case 'U': - if(!strncasecomp(URL,"URN:",4)) - return(URN_TYPE_URL); - break; - - } - - /* no type match :( */ - return(0); -} - - - -/* from libnet/mkparse.c */ -PRIVATE CONST -int netCharType[256] = -/* Bit 0 xalpha -- the alphas -** Bit 1 xpalpha -- as xalpha but -** converts spaces to plus and plus to %20 -** Bit 3 ... path -- as xalphas but doesn't escape '/' -*/ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ - { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 1x */ - 0,0,0,0,0,0,0,0,0,0,7,4,0,7,7,4, /* 2x !"#$%&'()*+,-./ */ - 7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0, /* 3x 0123456789:;<=>? */ - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, /* 4x @ABCDEFGHIJKLMNO */ - 7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,7, /* 5X PQRSTUVWXYZ[\]^_ */ - 0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, /* 6x `abcdefghijklmno */ - 7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0, /* 7X pqrstuvwxyz{\}~ DEL */ - 0, }; - -#define IS_OK(C) (netCharType[((unsigned int) (C))] & (mask)) - - -#define HEX_ESCAPE '%' - - -PUBLIC char * -NET_Escape (const char * str, int mask) -{ - register CONST unsigned char *src; - register unsigned char *dst; - char *result; - int32 extra = 0; - char *hexChars = "0123456789ABCDEF"; - - if(!str) - return(0); - - for(src=((unsigned char *)str); *src; src++) - { - if (!IS_OK(*src)) - extra+=2; /* the escape, plus an extra byte for each nibble */ - } - - if(!(result = (char *) XP_ALLOC((int32) (src - ((unsigned char *)str)) + extra + 1))) - return(0); - - dst = (unsigned char *) result; - for(src=((unsigned char *)str); *src; src++) - if (IS_OK((unsigned char) (*src))) - { - *dst++ = *src; - } - else if(mask == URL_XPALPHAS && *src == ' ') - { - *dst++ = '+'; /* convert spaces to pluses */ - } - else - { - *dst++ = HEX_ESCAPE; - *dst++ = hexChars[(*src >> 4) & 0x0f]; /* high nibble */ - *dst++ = hexChars[*src & 0x0f]; /* low nibble */ - } - - *dst++ = '\0'; /* tack on eos */ - return result; -} - - - -XP_List * ExternalURLTypeList=0; - -#define EXTERNAL_TYPE_URL 999 /* a special external URL type */ - -/* check the passed in url to see if it is an - * external type url - */ -PRIVATE int -net_CheckForExternalURLType(char * url) -{ - XP_List * list_ptr = ExternalURLTypeList; - char * reg_type; - int len; - - while((reg_type = (char *)XP_ListNextObject(list_ptr))) - { - len = XP_STRLEN(reg_type); - if(!strncasecomp(reg_type, url, len) && url[len] == ':') - { - /* found it */ - return EXTERNAL_TYPE_URL; /* done */ - } - } - - return(0); -} - -/* modifies a url of the form /foo/../foo1 -> /foo1 - * - * it only operates on "file" "ftp" and "http" url's all others are returned - * unmodified - * - * returns the modified passed in URL string - */ -PRIVATE char * -net_ReduceURL (char *url) -{ - int url_type = NET_URL_Type(url); - char * fwd_ptr; - char * url_ptr; - char * path_ptr; - - if(!url) - return(url); - - if(url_type == HTTP_TYPE_URL || url_type == FILE_TYPE_URL || - url_type == FTP_TYPE_URL || - url_type == SECURE_HTTP_TYPE_URL) - { - - /* find the path so we only change that and not the host - */ - path_ptr = XP_STRCHR(url, '/'); - - if(!path_ptr) - return(url); - - if(*(path_ptr+1) == '/') - path_ptr = XP_STRCHR(path_ptr+2, '/'); - - if(!path_ptr) - return(url); - - fwd_ptr = path_ptr; - url_ptr = path_ptr; - - for(; *fwd_ptr != '\0'; fwd_ptr++) - { - - if(*fwd_ptr == '/' && *(fwd_ptr+1) == '.' && *(fwd_ptr+2) == '/') - { - /* remove ./ - */ - fwd_ptr += 1; - } - else if(*fwd_ptr == '/' && *(fwd_ptr+1) == '.' && *(fwd_ptr+2) == '.' && - (*(fwd_ptr+3) == '/' || *(fwd_ptr+3) == '\0')) - { - /* remove foo/.. - */ - /* reverse the url_ptr to the previous slash - */ - if(url_ptr != path_ptr) - url_ptr--; /* we must be going back at least one */ - for(;*url_ptr != '/' && url_ptr != path_ptr; url_ptr--) - ; /* null body */ - - /* forward the fwd_prt past the ../ - */ - fwd_ptr += 2; - } - else - { - /* copy the url incrementaly - */ - *url_ptr++ = *fwd_ptr; - } - } - *url_ptr = '\0'; /* terminate the url */ - } - - return(url); -} - - -/* Makes a relative URL into an absolute one. - * - * If an absolute url is passed in it will be copied and returned. - * - * Always returns a malloc'd string or NULL on out of memory error - */ -PUBLIC char * -NET_MakeAbsoluteURL(char * absolute_url, char * relative_url) -{ - char * ret_url=0; - int new_length; - char * cat_point=0; - char cat_point_char; - int url_type=0; - int base_type; - - /* if either is NULL - */ - if(!absolute_url || !relative_url) - { - StrAllocCopy(ret_url, relative_url); - return(ret_url); - } - - /* use the URL_Type function to figure - * out if it's a recognized URL method - */ - url_type = NET_URL_Type(relative_url); - - /* there are some extra cases we need to catch - */ - if(!url_type) - { - switch(*relative_url) - { - case 'i': - if(!XP_STRNCMP(relative_url,"internal-icon-", 14) - || !XP_STRNCMP(relative_url,"internal-external-reconnect:", 28) - || !XP_STRCMP(relative_url,"internal-external-plugin")) - url_type = INTERNAL_IMAGE_TYPE_URL; - break; - case '/': - if(!strncasecomp(relative_url, "/mc-icons/", 10) || - !strncasecomp(relative_url, "/ns-icons/", 10)) - { - if(!XP_STRCMP(relative_url+10, "menu.gif")) - url_type = INTERNAL_IMAGE_TYPE_URL; - else if(!XP_STRCMP(relative_url+10, "unknown.gif")) - url_type = INTERNAL_IMAGE_TYPE_URL; - else if(!XP_STRCMP(relative_url+10, "text.gif")) - url_type = INTERNAL_IMAGE_TYPE_URL; - else if(!XP_STRCMP(relative_url+10, "image.gif")) - url_type = INTERNAL_IMAGE_TYPE_URL; - else if(!XP_STRCMP(relative_url+10, "sound.gif")) - url_type = INTERNAL_IMAGE_TYPE_URL; - else if(!XP_STRCMP(relative_url+10, "binary.gif")) - url_type = INTERNAL_IMAGE_TYPE_URL; - else if(!XP_STRCMP(relative_url+10, "movie.gif")) - url_type = INTERNAL_IMAGE_TYPE_URL; - } - break; - } - } - else if(url_type == ABOUT_TYPE_URL) - { - /* don't allow about:cache in a document */ - if(!strncasecomp(relative_url, "about:cache", 11) - || !strncasecomp(relative_url, "about:global", 12) - || !strncasecomp(relative_url, "about:image-cache", 17) - || !strncasecomp(relative_url, "about:memory-cache", 18)) - { - return XP_STRDUP(""); - } - } - - if(!url_type) - url_type = net_CheckForExternalURLType(relative_url); - - if(url_type) - { - /* it's either an absolute url - * or a messed up one of the type proto:/path - * but notice the missing host. - */ - char * colon = XP_STRCHR(relative_url, ':'); /* must be there */ - - if( (colon && *(colon+1) == '/' && *(colon+2) == '/') || - (url_type != GOPHER_TYPE_URL - && url_type != FTP_TYPE_URL - && url_type != HTTP_TYPE_URL - && url_type != SECURE_HTTP_TYPE_URL - && url_type != RLOGIN_TYPE_URL - && url_type != TELNET_TYPE_URL - && url_type != TN3270_TYPE_URL - && url_type != WAIS_TYPE_URL) ) - { - /* it appears to have all it's parts. Assume it's completely - * absolute - */ - StrAllocCopy(ret_url, relative_url); - return(ret_url); - } - else - { - /* it's a screwed up relative url of the form http:[relative url] - * remove the stuff before and at the colon and treat it as a normal - * relative url - */ - char * colon = XP_STRCHR(relative_url, ':'); - - relative_url = colon+1; - } - } - - - /* At this point, we know that `relative_url' is not absolute. - If the base URL, `absolute_url', is a "mailbox:" URL, then - we should not allow relative expansion: that is, - NET_MakeAbsoluteURL("mailbox:/A/B/C", "YYY") should not - return "mailbox:/A/B/YYY". - - However, expansion of "#" and "?" parameters should work: - NET_MakeAbsoluteURL("mailbox:/A/B/C?id=XXX", "#part2") - should be allowed to expand to "mailbox:/A/B/C?id=XXX#part2". - - If you allow random HREFs in attached HTML to mail messages to - expand to mailbox URLs, then bad things happen -- among other - things, an entry will be automatically created in the folders - list for each of these bogus non-files. - - It's an open question as to whether relative expansion should - be allowed for news: and snews: URLs. - - Reasons to allow it: - - = ClariNet has been using it - - = (Their reason:) it's the only way for an HTML news message - to refer to another HTML news message in a way which - doesn't make assumptions about the name of the news host, - and which also doesn't assume that the message is on the - default news host. - - Reasons to disallow it: - - = Consistency with "mailbox:" - - = If there is a news message which has type text/html, and - which has a relative URL like <IMG SRC="foo.gif"> in it, - but which has no <BASE> tag, then we would expand that - image to "news:foo.gif". Which would fail, of course, - but which might annoy news admins by generating bogus - references. - - So for now, let's allow - NET_MakeAbsoluteURL("news:123@4", "456@7") => "news:456@7"; and - NET_MakeAbsoluteURL("news://h/123@4", "456@7") => "news://h/456@7". - */ - base_type = NET_URL_Type(absolute_url); - if ((base_type == MAILBOX_TYPE_URL || base_type == IMAP_TYPE_URL) && - *relative_url != '#' && - *relative_url != '?') - { - return XP_STRDUP(""); - } - - if(relative_url[0] == '/' && relative_url[1] == '/') - { - /* a host absolute URL - */ - - /* find the colon after the protocol - */ - cat_point = XP_STRCHR(absolute_url, ':'); - if (cat_point && base_type == WYSIWYG_TYPE_URL) - cat_point = XP_STRCHR(cat_point + 1, ':'); - - /* append after the colon - */ - if(cat_point) - cat_point++; - - } - else if(relative_url[0] == '/') - { - /* a path absolute URL - * append at the slash after the host part - */ - - /* find the colon after the protocol - */ - char *colon = XP_STRCHR(absolute_url, ':'); - if (colon && base_type == WYSIWYG_TYPE_URL) - colon = XP_STRCHR(colon + 1, ':'); - - if(colon) - { - if(colon[1] == '/' && colon[2] == '/') - { - /* find the next slash - */ - cat_point = XP_STRCHR(colon+3, '/'); - - if(!cat_point) - { - /* if there isn't another slash then the cat point is the very end - */ - cat_point = &absolute_url[XP_STRLEN(absolute_url)]; - } - } - else - { - /* no host was given so the cat_point is right after the colon - */ - cat_point = colon+1; - } - -#if defined(XP_WIN) || defined(XP_OS2) - /* this will allow drive letters to work right on windows - */ - if(XP_IS_ALPHA(*cat_point) && *(cat_point+1) == ':') - cat_point += 2; -#endif /* XP_WIN */ - - } - } - else if(relative_url[0] == '#') - { - /* a positioning within the same document relative url - * - * add teh relative url to the full text of the absolute url minus - * any # punctuation the url might have - * - */ - char * hash = XP_STRCHR(absolute_url, '#'); - - if(hash) - { - char * ques_mark = XP_STRCHR(absolute_url, '?'); - - if(ques_mark) - { - /* this is a hack. - * copy things to try and make them more correct - */ - *hash = '\0'; - - StrAllocCopy(ret_url, absolute_url); - StrAllocCat(ret_url, relative_url); - StrAllocCat(ret_url, ques_mark); - - *hash = '#'; - - return(net_ReduceURL(ret_url)); - } - - cat_point = hash; - } - else - { - cat_point = &absolute_url[XP_STRLEN(absolute_url)]; /* the end of the URL */ - } - } - else - { - /* a completely relative URL - * - * append after the last slash - */ - char * ques = XP_STRCHR(absolute_url, '?'); - char * hash = XP_STRCHR(absolute_url, '#'); - - if(ques) - *ques = '\0'; - - if(hash) - *hash = '\0'; - - cat_point = XP_STRRCHR(absolute_url, '/'); - - /* if there are no slashes then append right after the colon after the protocol - */ - if(!cat_point) - cat_point = XP_STRCHR(absolute_url, ':'); - - /* set the value back - */ - if(ques) - *ques = '?'; - - if(hash) - *hash = '#'; - - if(cat_point) - cat_point++; /* append right after the slash or colon not on it */ - } - - if(cat_point) - { - cat_point_char = *cat_point; /* save the value */ - *cat_point = '\0'; - new_length = XP_STRLEN(absolute_url) + XP_STRLEN(relative_url) + 1; - ret_url = (char *) XP_ALLOC(new_length); - if(!ret_url) - return(NULL); /* out of memory */ - - XP_STRCPY(ret_url, absolute_url); - XP_STRCAT(ret_url, relative_url); - *cat_point = cat_point_char; /* set the absolute url back to its original state */ - } - else - { - /* something went wrong. just return a copy of the relative url - */ - StrAllocCopy(ret_url, relative_url); - } - - return(net_ReduceURL(ret_url)); -} - - -/* from libmsg/msgutils.c */ -static int -msg_convert_and_send_buffer(char* buf, int length, XP_Bool convert_newlines_p, - int32 (*per_line_fn) (char *line, - uint32 line_length, - void *closure), - void *closure) -{ - /* Convert the line terminator to the native form. - */ - char* newline; - - XP_ASSERT(buf && length > 0); - if (!buf || length <= 0) return -1; - newline = buf + length; - XP_ASSERT(newline[-1] == CR || newline[-1] == LF); - if (newline[-1] != CR && newline[-1] != LF) return -1; - - if (!convert_newlines_p) - { - } -#if (LINEBREAK_LEN == 1) - else if ((newline - buf) >= 2 && - newline[-2] == CR && - newline[-1] == LF) - { - /* CRLF -> CR or LF */ - buf [length - 2] = LINEBREAK[0]; - length--; - } - else if (newline > buf + 1 && - newline[-1] != LINEBREAK[0]) - { - /* CR -> LF or LF -> CR */ - buf [length - 1] = LINEBREAK[0]; - } -#else - else if (((newline - buf) >= 2 && newline[-2] != CR) || - ((newline - buf) >= 1 && newline[-1] != LF)) - { - /* LF -> CRLF or CR -> CRLF */ - length++; - buf[length - 2] = LINEBREAK[0]; - buf[length - 1] = LINEBREAK[1]; - } -#endif - - return (*per_line_fn)(buf, length, closure); -} diff --git a/mozilla/lib/libmime/mimesun.c b/mozilla/lib/libmime/mimesun.c deleted file mode 100644 index b129cdddc17..00000000000 --- a/mozilla/lib/libmime/mimesun.c +++ /dev/null @@ -1,357 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimesun.c --- MimeSunAttachment, for X-Sun-Attachment message contents - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimesun.h" - -#define MIME_SUPERCLASS mimeMultipartClass -MimeDefClass(MimeSunAttachment, MimeSunAttachmentClass, - mimeSunAttachmentClass, &MIME_SUPERCLASS); - -static MimeMultipartBoundaryType MimeSunAttachment_check_boundary(MimeObject *, - const char *, - int32); -static int MimeSunAttachment_create_child(MimeObject *); -static int MimeSunAttachment_parse_child_line (MimeObject *, char *, int32, - XP_Bool); -static int MimeSunAttachment_parse_begin (MimeObject *); -static int MimeSunAttachment_parse_eof (MimeObject *, XP_Bool); - -static int -MimeSunAttachmentClassInitialize(MimeSunAttachmentClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeMultipartClass *mclass = (MimeMultipartClass *) class; - - XP_ASSERT(!oclass->class_initialized); - oclass->parse_begin = MimeSunAttachment_parse_begin; - oclass->parse_eof = MimeSunAttachment_parse_eof; - mclass->check_boundary = MimeSunAttachment_check_boundary; - mclass->create_child = MimeSunAttachment_create_child; - mclass->parse_child_line = MimeSunAttachment_parse_child_line; - return 0; -} - - -static int -MimeSunAttachment_parse_begin (MimeObject *obj) -{ - int status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_begin(obj); - if (status < 0) return status; - - /* Sun messages always have separators at the beginning. */ - return MimeObject_write_separator(obj); -} - -static int -MimeSunAttachment_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - int status = 0; - - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); - if (status < 0) return status; - - /* Sun messages always have separators at the end. */ - if (!abort_p) - { - status = MimeObject_write_separator(obj); - if (status < 0) return status; - } - - return 0; -} - - -static MimeMultipartBoundaryType -MimeSunAttachment_check_boundary(MimeObject *obj, const char *line, - int32 length) -{ - /* ten dashes */ - - if (line && - line[0] == '-' && line[1] == '-' && line[2] == '-' && line[3] == '-' && - line[4] == '-' && line[5] == '-' && line[6] == '-' && line[7] == '-' && - line[8] == '-' && line[9] == '-' && - (line[10] == CR || line[10] == LF)) - return MimeMultipartBoundaryTypeSeparator; - else - return MimeMultipartBoundaryTypeNone; -} - - -static int -MimeSunAttachment_create_child(MimeObject *obj) -{ - MimeMultipart *mult = (MimeMultipart *) obj; - int status = 0; - - char *sun_data_type = 0; - const char *mime_ct = 0, *sun_enc_info = 0, *mime_cte = 0; - char *mime_ct2 = 0; /* sometimes we need to copy; this is for freeing. */ - MimeObject *child = 0; - - mult->state = MimeMultipartPartLine; - - sun_data_type = (mult->hdrs - ? MimeHeaders_get (mult->hdrs, HEADER_X_SUN_DATA_TYPE, - TRUE, FALSE) - : 0); - if (sun_data_type) - { - int i; - static const struct { const char *in, *out; } sun_types[] = { - - /* Convert recognised Sun types to the corresponding MIME types, - and convert unrecognized ones based on the file extension and - the mime.types file. - - These are the magic types used by MailTool that I can determine. - The only actual written spec I've found only listed the first few. - The rest were found by inspection (both of real-world messages, - and by running `strings' on the MailTool binary, and on the file - /usr/openwin/lib/cetables/cetables (the "Class Engine", Sun's - equivalent to .mailcap and mime.types.) - */ - { "default", TEXT_PLAIN }, - { "default-doc", TEXT_PLAIN }, - { "text", TEXT_PLAIN }, - { "scribe", TEXT_PLAIN }, - { "sgml", TEXT_PLAIN }, - { "tex", TEXT_PLAIN }, - { "troff", TEXT_PLAIN }, - { "c-file", TEXT_PLAIN }, - { "h-file", TEXT_PLAIN }, - { "readme-file", TEXT_PLAIN }, - { "shell-script", TEXT_PLAIN }, - { "cshell-script", TEXT_PLAIN }, - { "makefile", TEXT_PLAIN }, - { "hidden-docs", TEXT_PLAIN }, - { "message", MESSAGE_RFC822 }, - { "mail-message", MESSAGE_RFC822 }, - { "mail-file", TEXT_PLAIN }, - { "gif-file", IMAGE_GIF }, - { "jpeg-file", IMAGE_JPG }, - { "ppm-file", IMAGE_PPM }, - { "pgm-file", "image/x-portable-graymap" }, - { "pbm-file", "image/x-portable-bitmap" }, - { "xpm-file", "image/x-xpixmap" }, - { "ilbm-file", "image/ilbm" }, - { "tiff-file", "image/tiff" }, - { "photocd-file", "image/x-photo-cd" }, - { "sun-raster", "image/x-sun-raster" }, - { "audio-file", AUDIO_BASIC }, - { "postscript", APPLICATION_POSTSCRIPT }, - { "postscript-file", APPLICATION_POSTSCRIPT }, - { "framemaker-document", "application/x-framemaker" }, - { "sundraw-document", "application/x-sun-draw" }, - { "sunpaint-document", "application/x-sun-paint" }, - { "sunwrite-document", "application/x-sun-write" }, - { "islanddraw-document", "application/x-island-draw" }, - { "islandpaint-document", "application/x-island-paint" }, - { "islandwrite-document", "application/x-island-write" }, - { "sun-executable", APPLICATION_OCTET_STREAM }, - { "default-app", APPLICATION_OCTET_STREAM }, - { 0, 0 }}; - for (i = 0; sun_types[i].in; i++) - if (!strcasecomp(sun_data_type, sun_types[i].in)) - { - mime_ct = sun_types[i].out; - break; - } - } - - /* If we didn't find a type, look at the extension on the file name. - */ - if (!mime_ct && - obj->options && - obj->options->file_type_fn) - { - char *name = MimeHeaders_get_name(mult->hdrs); - if (name) - { - mime_ct2 = obj->options->file_type_fn(name, - obj->options->stream_closure); - mime_ct = mime_ct2; - XP_FREE(name); - if (!mime_ct2 || !strcasecomp (mime_ct2, UNKNOWN_CONTENT_TYPE)) - { - FREEIF(mime_ct2); - mime_ct = APPLICATION_OCTET_STREAM; - } - } - } - if (!mime_ct) - mime_ct = APPLICATION_OCTET_STREAM; - - FREEIF(sun_data_type); - - - /* Convert recognised Sun encodings to the corresponding MIME encodings. - However, if the X-Sun-Encoding-Info field contains more than one - encoding (that is, contains a comma) then assign it the encoding of - the *rightmost* element in the list; and change its Content-Type to - application/octet-stream. Examples: - - Sun Type: Translates To: - ================== ==================== - type: TEXT type: text/plain - encoding: COMPRESS encoding: x-compress - - type: POSTSCRIPT type: application/x-compress - encoding: COMPRESS,UUENCODE encoding: x-uuencode - - type: TEXT type: application/octet-stream - encoding: UNKNOWN,UUENCODE encoding: x-uuencode - */ - - sun_data_type = (mult->hdrs - ? MimeHeaders_get (mult->hdrs, HEADER_X_SUN_ENCODING_INFO, - FALSE,FALSE) - : 0); - sun_enc_info = sun_data_type; - - - /* this "adpcm-compress" pseudo-encoding is some random junk that - MailTool adds to the encoding description of .AU files: we can - ignore it if it is the leftmost element of the encoding field. - (It looks like it's created via `audioconvert -f g721'. Why? - Who knows.) - */ - if (sun_enc_info && !strncasecomp (sun_enc_info, "adpcm-compress", 14)) - { - sun_enc_info += 14; - while (XP_IS_SPACE(*sun_enc_info) || *sun_enc_info == ',') - sun_enc_info++; - } - - /* Extract the last element of the encoding field, changing the content - type if necessary (as described above.) - */ - if (sun_enc_info && *sun_enc_info) - { - const char *prev; - const char *end = XP_STRRCHR(sun_enc_info, ','); - if (end) - { - const char *start = sun_enc_info; - sun_enc_info = end + 1; - while (XP_IS_SPACE(*sun_enc_info)) - sun_enc_info++; - for (prev = end-1; prev > start && *prev != ','; prev--) - ; - if (*prev == ',') prev++; - - if (!strncasecomp (prev, "uuencode", end-prev)) - mime_ct = APPLICATION_UUENCODE; - else if (!strncasecomp (prev, "gzip", end-prev)) - mime_ct = APPLICATION_GZIP; - else if (!strncasecomp (prev, "compress", end-prev)) - mime_ct = APPLICATION_COMPRESS; - else if (!strncasecomp (prev, "default-compress", end-prev)) - mime_ct = APPLICATION_COMPRESS; - else - mime_ct = APPLICATION_OCTET_STREAM; - } - } - - /* Convert the remaining Sun encoding to a MIME encoding. - If it isn't known, change the content-type instead. - */ - if (!sun_enc_info || !*sun_enc_info) - ; - else if (!strcasecomp(sun_enc_info,"compress")) mime_cte = ENCODING_COMPRESS; - else if (!strcasecomp(sun_enc_info,"uuencode")) mime_cte = ENCODING_UUENCODE; - else if (!strcasecomp(sun_enc_info,"gzip")) mime_cte = ENCODING_GZIP; - else mime_ct = APPLICATION_OCTET_STREAM; - - FREEIF(sun_data_type); - - - /* Now that we know its type and encoding, create a MimeObject to represent - this part. - */ - child = mime_create(mime_ct, mult->hdrs, obj->options); - if (!child) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - /* Fake out the child's content-type and encoding (it probably doesn't have - one right now, because the X-Sun- headers aren't generally recognised by - the rest of this library.) - */ - FREEIF(child->content_type); - FREEIF(child->encoding); - XP_ASSERT(mime_ct); - child->content_type = (mime_ct ? XP_STRDUP(mime_ct) : 0); - child->encoding = (mime_cte ? XP_STRDUP(mime_cte) : 0); - - status = ((MimeContainerClass *) obj->class)->add_child(obj, child); - if (status < 0) - { - mime_free(child); - child = 0; - goto FAIL; - } - - /* Sun attachments always have separators between parts. */ - status = MimeObject_write_separator(obj); - if (status < 0) goto FAIL; - - /* And now that we've added this new object to our list of - children, start its parser going. */ - status = child->class->parse_begin(child); - if (status < 0) goto FAIL; - - FAIL: - FREEIF(mime_ct2); - FREEIF(sun_data_type); - return status; -} - - -static int -MimeSunAttachment_parse_child_line (MimeObject *obj, char *line, int32 length, - XP_Bool first_line_p) -{ - MimeContainer *cont = (MimeContainer *) obj; - MimeObject *kid; - - /* This is simpler than MimeMultipart->parse_child_line in that it doesn't - play games about body parts without trailing newlines. - */ - - XP_ASSERT(cont->nchildren > 0); - if (cont->nchildren <= 0) - return -1; - - kid = cont->children[cont->nchildren-1]; - XP_ASSERT(kid); - if (!kid) return -1; - - return kid->class->parse_buffer (line, length, kid); -} diff --git a/mozilla/lib/libmime/mimesun.h b/mozilla/lib/libmime/mimesun.h deleted file mode 100644 index ae0447d5a2f..00000000000 --- a/mozilla/lib/libmime/mimesun.h +++ /dev/null @@ -1,77 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimesun.h --- MimeSunAttachment, for X-Sun-Attachment message contents - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMESUN_H_ -#define _MIMESUN_H_ - -#include "mimemult.h" - -/* MimeSunAttachment is the class for X-Sun-Attachment message contents, which - is the Content-Type assigned by that pile of garbage called MailTool. This - is not a MIME type per se, but it's very similar to multipart/mixed, so it's - easy to parse. Lots of people use MailTool, so what the hell. - - The format is this: - - = Content-Type is X-Sun-Attachment - = parts are separated by lines of exactly ten dashes - = just after the dashes comes a block of headers, including: - - X-Sun-Data-Type: (manditory) - Values are Text, Postscript, Scribe, SGML, TeX, Troff, DVI, - and Message. - - X-Sun-Encoding-Info: (optional) - Ordered, comma-separated values, including Compress and Uuencode. - - X-Sun-Data-Name: (optional) - File name, maybe. - - X-Sun-Data-Description: (optional) - Longer text. - - X-Sun-Content-Lines: (manditory, unless Length is present) - Number of lines in the body, not counting headers and the blank - line that follows them. - - X-Sun-Content-Length: (manditory, unless Lines is present) - Bytes, presumably using Unix line terminators. - */ - -typedef struct MimeSunAttachmentClass MimeSunAttachmentClass; -typedef struct MimeSunAttachment MimeSunAttachment; - -struct MimeSunAttachmentClass { - MimeMultipartClass multipart; -}; - -extern MimeSunAttachmentClass mimeSunAttachmentClass; - -struct MimeSunAttachment { - MimeMultipart multipart; -}; - -#endif /* _MIMESUN_H_ */ diff --git a/mozilla/lib/libmime/mimetenr.c b/mozilla/lib/libmime/mimetenr.c deleted file mode 100644 index 2839e8fe08f..00000000000 --- a/mozilla/lib/libmime/mimetenr.c +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimetenr.c --- definition of the MimeInlineTextEnriched class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimetenr.h" - -/* All the magic for this class is in mimetric.c; since text/enriched and - text/richtext are so similar, it was easiest to implement them in the - same method (but this is a subclass anyway just for general goodness.) - */ - -#define MIME_SUPERCLASS mimeInlineTextRichtextClass -MimeDefClass(MimeInlineTextEnriched, MimeInlineTextEnrichedClass, - mimeInlineTextEnrichedClass, &MIME_SUPERCLASS); - -static int -MimeInlineTextEnrichedClassInitialize(MimeInlineTextEnrichedClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeInlineTextRichtextClass *rclass = (MimeInlineTextRichtextClass *) class; - XP_ASSERT(!oclass->class_initialized); - rclass->enriched_p = TRUE; - return 0; -} diff --git a/mozilla/lib/libmime/mimetenr.h b/mozilla/lib/libmime/mimetenr.h deleted file mode 100644 index e1e2cef6145..00000000000 --- a/mozilla/lib/libmime/mimetenr.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimetenr.h --- definition of the MimeInlineTextEnriched class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMETENR_H_ -#define _MIMETENR_H_ - -#include "mimetric.h" - -/* The MimeInlineTextEnriched class implements the text/enriched MIME content - type, as defined in RFC 1563. It does this largely by virtue of being a - subclass of the MimeInlineTextRichtext class. - */ - -typedef struct MimeInlineTextEnrichedClass MimeInlineTextEnrichedClass; -typedef struct MimeInlineTextEnriched MimeInlineTextEnriched; - -struct MimeInlineTextEnrichedClass { - MimeInlineTextRichtextClass text; -}; - -extern MimeInlineTextEnrichedClass mimeInlineTextEnrichedClass; - -struct MimeInlineTextEnriched { - MimeInlineTextRichtext richtext; -}; - -#endif /* _MIMETENR_H_ */ diff --git a/mozilla/lib/libmime/mimetext.c b/mozilla/lib/libmime/mimetext.c deleted file mode 100644 index c9ab576c229..00000000000 --- a/mozilla/lib/libmime/mimetext.c +++ /dev/null @@ -1,310 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimetext.c --- definition of the MimeInlineText class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimetext.h" -#include "libi18n.h" - -#define MIME_SUPERCLASS mimeLeafClass -MimeDefClass(MimeInlineText, MimeInlineTextClass, mimeInlineTextClass, - &MIME_SUPERCLASS); - -static int MimeInlineText_initialize (MimeObject *); -static void MimeInlineText_finalize (MimeObject *); -static int MimeInlineText_rot13_line (MimeObject *, char *line, int32 length); -static int MimeInlineText_parse_eof (MimeObject *obj, XP_Bool abort_p); -static int MimeInlineText_parse_end (MimeObject *, XP_Bool); -static int MimeInlineText_parse_decoded_buffer (char *, int32, MimeObject *); -static int MimeInlineText_rotate_convert_and_parse_line(char *, int32, - MimeObject *); - -static int -MimeInlineTextClassInitialize(MimeInlineTextClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - MimeLeafClass *lclass = (MimeLeafClass *) class; - XP_ASSERT(!oclass->class_initialized); - oclass->initialize = MimeInlineText_initialize; - oclass->finalize = MimeInlineText_finalize; - oclass->parse_eof = MimeInlineText_parse_eof; - oclass->parse_end = MimeInlineText_parse_end; - class->rot13_line = MimeInlineText_rot13_line; - lclass->parse_decoded_buffer = MimeInlineText_parse_decoded_buffer; - return 0; -} - -static int -MimeInlineText_initialize (MimeObject *obj) -{ - MimeInlineText *text = (MimeInlineText *) obj; - - /* This is an abstract class; it shouldn't be directly instanciated. */ - XP_ASSERT(obj->class != (MimeObjectClass *) &mimeInlineTextClass); - - /* Figure out an appropriate charset for this object. - */ - if (!text->charset && obj->headers) - { - if (obj->options && obj->options->override_charset) - { - text->charset = XP_STRDUP(obj->options->override_charset); - } - else - { - char *ct = MimeHeaders_get (obj->headers, HEADER_CONTENT_TYPE, - FALSE, FALSE); - if (ct) - { - text->charset = MimeHeaders_get_parameter (ct, "charset", NULL, NULL); - XP_FREE(ct); - } - - if (!text->charset) - { - /* If we didn't find "Content-Type: ...; charset=XX" then look - for "X-Sun-Charset: XX" instead. (Maybe this should be done - in MimeSunAttachmentClass, but it's harder there than here.) - */ - text->charset = MimeHeaders_get (obj->headers, - HEADER_X_SUN_CHARSET, - FALSE, FALSE); - } - - if (!text->charset) - { - if (obj->options && obj->options->default_charset) - text->charset = XP_STRDUP(obj->options->default_charset); - /* Do not label US-ASCII if the app default charset is multibyte. - Perhaps US-ASCII label should be removed for all cases. - */ - else if (MULTIBYTE & INTL_DefaultDocCharSetID(0)) - ; - else - text->charset = XP_STRDUP("US-ASCII"); - } - } - } - - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(obj); -} - - -static void -MimeInlineText_finalize (MimeObject *obj) -{ - MimeInlineText *text = (MimeInlineText *) obj; - - obj->class->parse_eof (obj, FALSE); - obj->class->parse_end (obj, FALSE); - - FREEIF(text->charset); - - /* Should have been freed by parse_eof, but just in case... */ - XP_ASSERT(!text->cbuffer); - FREEIF (text->cbuffer); - - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize (obj); -} - - -static int -MimeInlineText_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - if (obj->closed_p) return 0; - XP_ASSERT(!obj->parsed_p); - - /* If there is still data in the ibuffer, that means that the last line of - this part didn't end in a newline; so push it out anyway (this means that - the parse_line method will be called with a string with no trailing - newline, which isn't the usual case.) We do this here, rather than in - MimeObject_parse_eof, because MimeObject likes to shove things through - parse_line, and we have to shove it through the magic rotating-and-converting - code. So, we do that and digest the buffer before MimeObject has a chance - to do the wrong thing. See bug #26276 for more painful details. - */ - if (!abort_p && - obj->ibuffer_fp > 0) - { - int status = MimeInlineText_rotate_convert_and_parse_line (obj->ibuffer, - obj->ibuffer_fp, - obj); - obj->ibuffer_fp = 0; - if (status < 0) - { - obj->closed_p = TRUE; - return status; - } - } - return ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof (obj, abort_p); -} - -static int -MimeInlineText_parse_end (MimeObject *obj, XP_Bool abort_p) -{ - MimeInlineText *text = (MimeInlineText *) obj; - - if (obj->parsed_p) - { - XP_ASSERT(obj->closed_p); - return 0; - } - - /* We won't be needing this buffer any more; nuke it. */ - FREEIF(text->cbuffer); - text->cbuffer_size = 0; - - return ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_end (obj, abort_p); -} - - -/* This maps A-M to N-Z and N-Z to A-M. All other characters are left alone. - (Comments in GNUS imply that for Japanese, one should rotate by 47?) - */ -static const unsigned char MimeInlineText_rot13_table[256] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 91, 92, 93, 94, 95, 96, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255 }; - -static int -MimeInlineText_rot13_line (MimeObject *obj, char *line, int32 length) -{ - unsigned char *s, *end; - XP_ASSERT(line); - if (!line) return -1; - s = (unsigned char *) line; - end = s + length; - while (s < end) - { - *s = MimeInlineText_rot13_table[*s]; - s++; - } - return 0; -} - - -static int -MimeInlineText_parse_decoded_buffer (char *buf, int32 size, MimeObject *obj) -{ - XP_ASSERT(!obj->closed_p); - if (obj->closed_p) return -1; - - /* MimeLeaf takes care of this. */ - XP_ASSERT(obj->output_p && obj->options && obj->options->output_fn); - if (!obj->options) return -1; - - /* If we're supposed to write this object, but aren't supposed to convert - it to HTML, simply pass it through unaltered. */ - if (!obj->options->write_html_p) - return MimeObject_write(obj, buf, size, TRUE); - - /* This is just like the parse_decoded_buffer method we inherit from the - MimeLeaf class, except that we line-buffer to our own wrapper on the - `parse_line' method instead of calling the `parse_line' method directly. - */ - return XP_LineBuffer (buf, size, - &obj->ibuffer, &obj->ibuffer_size, &obj->ibuffer_fp, - TRUE, - ((int32 (*) (char *, uint32, void *)) - /* This cast is to turn void into MimeObject */ - MimeInlineText_rotate_convert_and_parse_line), - obj); -} - - -#define MimeInlineText_grow_cbuffer(text, desired_size) \ - (((desired_size) >= (text)->cbuffer_size) ? \ - XP_GrowBuffer ((desired_size), sizeof(char), 100, \ - &(text)->cbuffer, &(text)->cbuffer_size) \ - : 0) - - -static int -MimeInlineText_rotate_convert_and_parse_line(char *line, int32 length, - MimeObject *obj) -{ - int status; - MimeInlineText *text = (MimeInlineText *) obj; - MimeInlineTextClass *textc = (MimeInlineTextClass *) obj->class; - char *converted = 0; - - XP_ASSERT(!obj->closed_p); - if (obj->closed_p) return -1; - - /* Rotate the line, if desired (this happens on the raw data, before any - charset conversion.) */ - if (obj->options && obj->options->rot13_p) - { - status = textc->rot13_line(obj, line, length); - if (status < 0) return status; - } - - /* Now convert to the canonical charset, if desired. - */ - if (obj->options && obj->options->charset_conversion_fn) - { - int32 converted_len = 0; - const char *output_charset = (obj->options->override_charset - ? obj->options->override_charset - : obj->options->default_charset); - - status = obj->options->charset_conversion_fn(line, length, - text->charset, - output_charset, - &converted, - &converted_len, - obj->options->stream_closure); - if (status < 0) - { - FREEIF(converted); - return status; - } - - if (converted) - { - line = converted; - length = converted_len; - } - } - - /* Now that the line has been converted, call the subclass's parse_line - method with the decoded data. */ - status = obj->class->parse_line(line, length, obj); - FREEIF(converted); - return status; -} diff --git a/mozilla/lib/libmime/mimetext.h b/mozilla/lib/libmime/mimetext.h deleted file mode 100644 index 05e06775faa..00000000000 --- a/mozilla/lib/libmime/mimetext.h +++ /dev/null @@ -1,86 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimetext.h --- definition of the MimeInlineText class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMETEXT_H_ -#define _MIMETEXT_H_ - -#include "mimeleaf.h" - -/* The MimeInlineText class is the superclass of all handlers for the - MIME text/ content types (which convert various text formats to HTML, - in one form or another.) - - It provides two services: - - = if ROT13 decoding is desired, the text will be rotated before - the `parse_line' method it called; - - = text will be converted from the message's charset to the "target" - charset before the `parse_line' method is called. - - The contract with charset-conversion is that the converted data will - be such that one may interpret any octets (8-bit bytes) in the data - which are in the range of the ASCII characters (0-127) as ASCII - characters. It is explicitly legal, for example, to scan through - the string for "<" and replace it with "&lt;", and to search for things - that look like URLs and to wrap them with interesting HTML tags. - - The charset to which we convert will probably be UTF-8 (an encoding of - the Unicode character set, with the feature that all octets with the - high bit off have the same interpretations as ASCII.) - - #### NOTE: if it turns out that we use JIS (ISO-2022-JP) as the target - encoding, then this is not quite true; it is safe to search for the - low ASCII values (under hex 0x40, octal 0100, which is '@') but it - is NOT safe to search for values higher than that -- they may be - being used as the subsequent bytes in a multi-byte escape sequence. - It's a nice coincidence that HTML's critical characters ("<", ">", - and "&") have values under 0x40... - */ - -typedef struct MimeInlineTextClass MimeInlineTextClass; -typedef struct MimeInlineText MimeInlineText; - -struct MimeInlineTextClass { - MimeLeafClass leaf; - int (*rot13_line) (MimeObject *obj, char *line, int32 length); - int (*convert_line_charset) (MimeObject *obj, char *line, int32 length); -}; - -extern MimeInlineTextClass mimeInlineTextClass; - -struct MimeInlineText { - MimeLeaf leaf; /* superclass variables */ - char *charset; /* The charset from the content-type of this - object, or the caller-specified overrides - or defaults. - */ - char *cbuffer; /* Buffer used for charset conversion. */ - int32 cbuffer_size; - -}; - -#endif /* _MIMETEXT_H_ */ diff --git a/mozilla/lib/libmime/mimethtm.c b/mozilla/lib/libmime/mimethtm.c deleted file mode 100644 index eb9c0c9d651..00000000000 --- a/mozilla/lib/libmime/mimethtm.c +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimethtm.c --- definition of the MimeInlineTextHTML class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimethtm.h" - -#define MIME_SUPERCLASS mimeInlineTextClass -MimeDefClass(MimeInlineTextHTML, MimeInlineTextHTMLClass, - mimeInlineTextHTMLClass, &MIME_SUPERCLASS); - -static int MimeInlineTextHTML_parse_line (char *, int32, MimeObject *); -static int MimeInlineTextHTML_parse_eof (MimeObject *, XP_Bool); -static int MimeInlineTextHTML_parse_begin (MimeObject *obj); - -static int -MimeInlineTextHTMLClassInitialize(MimeInlineTextHTMLClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - XP_ASSERT(!oclass->class_initialized); - oclass->parse_begin = MimeInlineTextHTML_parse_begin; - oclass->parse_line = MimeInlineTextHTML_parse_line; - oclass->parse_eof = MimeInlineTextHTML_parse_eof; - - return 0; -} - -static int -MimeInlineTextHTML_parse_begin (MimeObject *obj) -{ - int status = ((MimeObjectClass*)&mimeLeafClass)->parse_begin(obj); - if (status < 0) return status; - - if (!obj->output_p) return 0; - - /* If this HTML part has a Content-Base header, and if we're displaying - to the screen (that is, not writing this part "raw") then translate - that Content-Base header into a <BASE> tag in the HTML. - */ - if (obj->options && - obj->options->write_html_p && - obj->options->output_fn) - { - char *base_hdr = MimeHeaders_get (obj->headers, HEADER_CONTENT_BASE, - FALSE, FALSE); - - /* rhp - for MHTML Spec changes!!! */ - if (!base_hdr) - { - base_hdr = MimeHeaders_get (obj->headers, "Content-Location", FALSE, FALSE); - } - /* rhp - for MHTML Spec changes!!! */ - - /* Encapsulate the entire text/html part inside an in-flow - layer. This will provide it a private coordinate system and - prevent it from escaping the bounds of its clipping so that - it might, for example, spoof a mail header. */ - if (obj->options->set_html_state_fn) - { - status = obj->options->set_html_state_fn(obj->options->stream_closure, - TRUE, /* layer_encapulate_p */ - TRUE, /* start_p */ - FALSE); /* abort_p */ - if (status < 0) return status; - } - - if (base_hdr) - { - char *buf = (char *) XP_ALLOC(XP_STRLEN(base_hdr) + 20); - const char *in; - char *out; - if (!buf) - return MK_OUT_OF_MEMORY; - - /* The value of the Content-Base header is a number of "words". - Whitespace in this header is not significant -- it is assumed - that any real whitespace in the URL has already been encoded, - and whitespace has been inserted to allow the lines in the - mail header to be wrapped reasonably. Creators are supposed - to insert whitespace every 40 characters or less. - */ - XP_STRCPY(buf, "<BASE HREF=\""); - out = buf + XP_STRLEN(buf); - - for (in = base_hdr; *in; in++) - /* ignore whitespace and quotes */ - if (!XP_IS_SPACE(*in) && *in != '"') - *out++ = *in; - - /* Close the tag and argument. */ - *out++ = '"'; - *out++ = '>'; - *out++ = 0; - - XP_FREE(base_hdr); - - status = MimeObject_write(obj, buf, XP_STRLEN(buf), FALSE); - XP_FREE(buf); - if (status < 0) return status; - } - } - - return 0; -} - - -static int -MimeInlineTextHTML_parse_line (char *line, int32 length, MimeObject *obj) -{ - if (!obj->output_p) return 0; - - if (obj->options && obj->options->output_fn) - return MimeObject_write(obj, line, length, TRUE); - else - return 0; -} - -/* This method is the same as that of MimeInlineTextRichtext (and thus - MimeInlineTextEnriched); maybe that means that MimeInlineTextHTML - should share a common parent with them which is not also shared by - MimeInlineTextPlain? - */ -static int -MimeInlineTextHTML_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - int status; - if (obj->closed_p) return 0; - - /* Run parent method first, to flush out any buffered data. */ - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); - if (status < 0) return status; - - if (obj->output_p && - obj->options && - obj->options->write_html_p && - obj->options->set_html_state_fn) - { - return obj->options->set_html_state_fn(obj->options->stream_closure, - TRUE, /* layer_encapulate_p */ - FALSE, /* start_p */ - abort_p); - } - return 0; -} diff --git a/mozilla/lib/libmime/mimethtm.h b/mozilla/lib/libmime/mimethtm.h deleted file mode 100644 index 5fb81593c39..00000000000 --- a/mozilla/lib/libmime/mimethtm.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimethtm.h --- definition of the MimeInlineTextHTML class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMETHTM_H_ -#define _MIMETHTM_H_ - -#include "mimetext.h" - -/* The MimeInlineTextHTML class implements the text/html MIME content type. - */ - -typedef struct MimeInlineTextHTMLClass MimeInlineTextHTMLClass; -typedef struct MimeInlineTextHTML MimeInlineTextHTML; - -struct MimeInlineTextHTMLClass { - MimeInlineTextClass text; -}; - -extern MimeInlineTextHTMLClass mimeInlineTextHTMLClass; - -struct MimeInlineTextHTML { - MimeInlineText text; -}; - -#endif /* _MIMETHTM_H_ */ diff --git a/mozilla/lib/libmime/mimetpla.c b/mozilla/lib/libmime/mimetpla.c deleted file mode 100644 index f584695ba37..00000000000 --- a/mozilla/lib/libmime/mimetpla.c +++ /dev/null @@ -1,152 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimetpla.c --- definition of the MimeInlineTextPlain class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimetpla.h" - -#define MIME_SUPERCLASS mimeInlineTextClass -MimeDefClass(MimeInlineTextPlain, MimeInlineTextPlainClass, - mimeInlineTextPlainClass, &MIME_SUPERCLASS); - -static int MimeInlineTextPlain_parse_begin (MimeObject *); -static int MimeInlineTextPlain_parse_line (char *, int32, MimeObject *); -static int MimeInlineTextPlain_parse_eof (MimeObject *, XP_Bool); - -static int -MimeInlineTextPlainClassInitialize(MimeInlineTextPlainClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - XP_ASSERT(!oclass->class_initialized); - oclass->parse_begin = MimeInlineTextPlain_parse_begin; - oclass->parse_line = MimeInlineTextPlain_parse_line; - oclass->parse_eof = MimeInlineTextPlain_parse_eof; - return 0; -} - -static int -MimeInlineTextPlain_parse_begin (MimeObject *obj) -{ - int status = 0; - - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_begin(obj); - if (status < 0) return status; - - if (!obj->output_p) return 0; - - if (obj->options && - obj->options->write_html_p && - obj->options->output_fn) - { - char* strs[4]; - char* s; - strs[0] = "<PRE>"; - strs[1] = "<PRE VARIABLE>"; - strs[2] = "<PRE WRAP>"; - strs[3] = "<PRE VARIABLE WRAP>"; - s = XP_STRDUP(strs[(obj->options->variable_width_plaintext_p ? 1 : 0) + - (obj->options->wrap_long_lines_p ? 2 : 0)]); - if (!s) return MK_OUT_OF_MEMORY; - status = MimeObject_write(obj, s, XP_STRLEN(s), FALSE); - XP_FREE(s); - if (status < 0) return status; - - /* text/plain objects always have separators before and after them. - Note that this is not the case for text/enriched objects. */ - status = MimeObject_write_separator(obj); - if (status < 0) return status; - } - - return 0; -} - -static int -MimeInlineTextPlain_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - int status; - if (obj->closed_p) return 0; - - /* Run parent method first, to flush out any buffered data. */ - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); - if (status < 0) return status; - - if (!obj->output_p) return 0; - - if (obj->options && - obj->options->write_html_p && - obj->options->output_fn && - !abort_p) - { - char s[] = "</PRE>"; - status = MimeObject_write(obj, s, XP_STRLEN(s), FALSE); - if (status < 0) return status; - - /* text/plain objects always have separators before and after them. - Note that this is not the case for text/enriched objects. - */ - status = MimeObject_write_separator(obj); - if (status < 0) return status; - } - - return 0; -} - - -static int -MimeInlineTextPlain_parse_line (char *line, int32 length, MimeObject *obj) -{ - int status; - - XP_ASSERT(length > 0); - if (length <= 0) return 0; - - status = MimeObject_grow_obuffer (obj, length * 2 + 40); - if (status < 0) return status; - - /* Copy `line' to `out', quoting HTML along the way. - Note: this function does no charset conversion; that has already - been done. - */ - *obj->obuffer = 0; - status = NET_ScanForURLs ( -#if 0 -#ifndef MOZILLA_30 - (obj->options ? obj->options->pane : 0), -#endif /* !MOZILLA_30 */ -#else - NULL, -#endif - line, length, obj->obuffer, obj->obuffer_size - 10, -#ifdef MOZILLA_30 - FALSE -#else /* !MOZILLA_30 */ - (obj->options ? - obj->options->dont_touch_citations_p : FALSE) -#endif /* !MOZILLA_30 */ - ); - if (status < 0) return status; - XP_ASSERT(*line == 0 || *obj->obuffer); - return MimeObject_write(obj, obj->obuffer, XP_STRLEN(obj->obuffer), TRUE); -} diff --git a/mozilla/lib/libmime/mimetpla.h b/mozilla/lib/libmime/mimetpla.h deleted file mode 100644 index 3354d04cba2..00000000000 --- a/mozilla/lib/libmime/mimetpla.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimetpla.h --- definition of the MimeInlineTextPlain class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMETPLA_H_ -#define _MIMETPLA_H_ - -#include "mimetext.h" - -/* The MimeInlineTextHTML class implements the text/plain MIME content type, - and is also used for all otherwise-unknown text/ subtypes. - */ - -typedef struct MimeInlineTextPlainClass MimeInlineTextPlainClass; -typedef struct MimeInlineTextPlain MimeInlineTextPlain; - -struct MimeInlineTextPlainClass { - MimeInlineTextClass text; -}; - -extern MimeInlineTextPlainClass mimeInlineTextPlainClass; - -struct MimeInlineTextPlain { - MimeInlineText text; -}; - -#endif /* _MIMETPLA_H_ */ diff --git a/mozilla/lib/libmime/mimetric.c b/mozilla/lib/libmime/mimetric.c deleted file mode 100644 index 655edadf668..00000000000 --- a/mozilla/lib/libmime/mimetric.c +++ /dev/null @@ -1,363 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimetric.c --- definition of the MimeInlineTextRichtext class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimetric.h" - -#define MIME_SUPERCLASS mimeInlineTextClass -MimeDefClass(MimeInlineTextRichtext, MimeInlineTextRichtextClass, - mimeInlineTextRichtextClass, &MIME_SUPERCLASS); - -static int MimeInlineTextRichtext_parse_line (char *, int32, MimeObject *); -static int MimeInlineTextRichtext_parse_begin (MimeObject *); -static int MimeInlineTextRichtext_parse_eof (MimeObject *, XP_Bool); - -static int -MimeInlineTextRichtextClassInitialize(MimeInlineTextRichtextClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - XP_ASSERT(!oclass->class_initialized); - oclass->parse_begin = MimeInlineTextRichtext_parse_begin; - oclass->parse_line = MimeInlineTextRichtext_parse_line; - oclass->parse_eof = MimeInlineTextRichtext_parse_eof; - return 0; -} - -/* This function has this clunky interface because it needs to be called - from outside this module (no MimeObject, etc.) - */ -int -MimeRichtextConvert (char *line, int32 length, - int (*output_fn) (char *buf, int32 size, void *closure), - void *closure, - char **obufferP, - uint32 *obuffer_sizeP, - XP_Bool enriched_p) -{ - /* RFC 1341 (the original MIME spec) defined text/richtext. - RFC 1563 superceded text/richtext with text/enriched. - The changes from text/richtext to text/enriched are: - - CRLF semantics are different - - << maps to < - - These tags were added: - <VERBATIM>, <NOFILL>, <PARAM>, <FLUSHBOTH> - - These tags were removed: - <COMMENT>, <OUTDENT>, <OUTDENTRIGHT>, <SAMEPAGE>, <SUBSCRIPT>, - <SUPERSCRIPT>, <HEADING>, <FOOTING>, <PARAGRAPH>, <SIGNATURE>, - <LT>, <NL>, <NP> - This method implements them both. - - draft-resnick-text-enriched-03.txt is a proposed update to 1563. - - These tags were added: - <FONTFAMILY>, <COLOR>, <PARAINDENT>, <LANG>. - However, all of these rely on the magic <PARAM> tag, which we - don't implement, so we're ignoring all of these. - Interesting fact: it's by Peter W. Resnick from Qualcomm (Eudora). - And it also says "It is fully expected that other text formatting - standards like HTML and SGML will supplant text/enriched in - Internet mail." - */ - int status = 0; - char *out; - const char *data_end; - const char *last_end; - const char *this_start; - const char *this_end; - int desired_size; - - desired_size = length * 4; - if (desired_size >= *obuffer_sizeP) - status = XP_GrowBuffer (desired_size, sizeof(char), 1024, - obufferP, obuffer_sizeP); - if (status < 0) return status; - - if (enriched_p) - { - for (this_start = line; this_start < line + length; this_start++) - if (!XP_IS_SPACE (*this_start)) break; - if (this_start >= line + length) /* blank line */ - { - XP_STRCPY (*obufferP, "<BR>"); - return output_fn (*obufferP, XP_STRLEN(*obufferP), closure); - } - } - - out = *obufferP; - *out = 0; - - data_end = line + length; - last_end = line; - this_start = last_end; - this_end = this_start; - while (this_end < data_end) - { - /* Skip forward to next special character. */ - while (this_start < data_end && - *this_start != '<' && *this_start != '>' && - *this_start != '&') - this_start++; - - this_end = this_start; - - /* Skip to the end of the tag. */ - if (this_start < data_end && *this_start == '<') - { - this_end++; - while (this_end < data_end && - !XP_IS_SPACE (*this_end) && - *this_end != '<' && *this_end != '>' && - *this_end != '&') - this_end++; - } - - this_end++; - - /* Push out the text preceeding the tag. */ - if (last_end && last_end != this_start) - { - XP_MEMCPY (out, last_end, this_start - last_end); - out += this_start - last_end; - *out = 0; - } - - if (this_start >= data_end) - break; - else if (*this_start == '&') - { - XP_STRCPY (out, "&amp;"); out += XP_STRLEN (out); - } - else if (*this_start == '>') - { - XP_STRCPY (out, "&gt;"); out += XP_STRLEN (out); - } - else if (enriched_p && - this_start < data_end + 1 && - this_start[0] == '<' && - this_start[1] == '<') - { - XP_STRCPY (out, "&lt;"); out += XP_STRLEN (out); - } - else if (this_start != this_end) - { - /* Push out this ID. */ - const char *old = this_start + 1; - char *tag_open = 0; - char *tag_close = 0; - if (*old == '/') - { - /* This is </tag> */ - old++; - } - - switch (*old) - { - case 'b': case 'B': - if (!strncasecomp ("BIGGER>", old, 7)) - tag_open = "<FONT SIZE=\"+1\">", tag_close = "</FONT>"; - else if (!strncasecomp ("BLINK>", old, 5)) - /* Of course, both text/richtext and text/enriched must be - enhanced *somehow*... Or else what would people think. */ - tag_open = "<BLINK>", tag_close = "</BLINK>"; - else if (!strncasecomp ("BOLD>", old, 5)) - tag_open = "<B>", tag_close = "</B>"; - break; - case 'c': case 'C': - if (!strncasecomp ("CENTER>", old, 7)) - tag_open = "<CENTER>", tag_close = "</CENTER>"; - else if (!enriched_p && - !strncasecomp ("COMMENT>", old, 8)) - tag_open = "<!-- ", tag_close = " -->"; - break; - case 'e': case 'E': - if (!strncasecomp ("EXCERPT>", old, 8)) - tag_open = "<BLOCKQUOTE>", tag_close = "</BLOCKQUOTE>"; - break; - case 'f': case 'F': - if (!strncasecomp ("FIXED>", old, 6)) - tag_open = "<TT>", tag_close = "</TT>"; - else if (enriched_p && - !strncasecomp ("FLUSHBOTH>", old, 10)) - tag_open = "<P ALIGN=LEFT>", tag_close = "</P>"; - else if (!strncasecomp ("FLUSHLEFT>", old, 10)) - tag_open = "<P ALIGN=LEFT>", tag_close = "</P>"; - else if (!strncasecomp ("FLUSHRIGHT>", old, 11)) - tag_open = "<P ALIGN=RIGHT>", tag_close = "</P>"; - else if (!enriched_p && - !strncasecomp ("FOOTING>", old, 8)) - tag_open = "<H6>", tag_close = "</H6>"; - break; - case 'h': case 'H': - if (!enriched_p && - !strncasecomp ("HEADING>", old, 8)) - tag_open = "<H6>", tag_close = "</H6>"; - break; - case 'i': case 'I': - if (!strncasecomp ("INDENT>", old, 7)) - tag_open = "<UL>", tag_close = "</UL>"; - else if (!strncasecomp ("INDENTRIGHT>", old, 12)) - tag_open = 0, tag_close = 0; -/* else if (!enriched_p && - !strncasecomp ("ISO-8859-", old, 9)) - tag_open = 0, tag_close = 0; */ - else if (!strncasecomp ("ITALIC>", old, 7)) - tag_open = "<I>", tag_close = "</I>"; - break; - case 'l': case 'L': - if (!enriched_p && - !strncasecomp ("LT>", old, 3)) - tag_open = "&lt;", tag_close = 0; - break; - case 'n': case 'N': - if (!enriched_p && - !strncasecomp ("NL>", old, 3)) - tag_open = "<BR>", tag_close = 0; - if (enriched_p && - !strncasecomp ("NOFILL>", old, 7)) - tag_open = "<NOBR>", tag_close = "</NOBR>"; -/* else if (!enriched_p && - !strncasecomp ("NO-OP>", old, 6)) - tag_open = 0, tag_close = 0; */ -/* else if (!enriched_p && - !strncasecomp ("NP>", old, 3)) - tag_open = 0, tag_close = 0; */ - break; - case 'o': case 'O': - if (!enriched_p && - !strncasecomp ("OUTDENT>", old, 8)) - tag_open = 0, tag_close = 0; - else if (!enriched_p && - !strncasecomp ("OUTDENTRIGHT>", old, 13)) - tag_open = 0, tag_close = 0; - break; - case 'p': case 'P': - if (enriched_p && - !strncasecomp ("PARAM>", old, 6)) - tag_open = "<!-- ", tag_close = " -->"; - else if (!enriched_p && - !strncasecomp ("PARAGRAPH>", old, 10)) - tag_open = "<P>", tag_close = 0; - break; - case 's': case 'S': - if (!enriched_p && - !strncasecomp ("SAMEPAGE>", old, 9)) - tag_open = 0, tag_close = 0; - else if (!enriched_p && - !strncasecomp ("SIGNATURE>", old, 10)) - tag_open = "<I><FONT SIZE=\"-1\">", tag_close = "</FONT></I>"; - else if (!strncasecomp ("SMALLER>", old, 8)) - tag_open = "<FONT SIZE=\"-1\">", tag_close = "</FONT>"; - else if (!enriched_p && - !strncasecomp ("SUBSCRIPT>", old, 10)) - tag_open = "<SUB>", tag_close = "</SUB>"; - else if (!enriched_p && - !strncasecomp ("SUPERSCRIPT>", old, 12)) - tag_open = "<SUP>", tag_close = "</SUP>"; - break; - case 'u': case 'U': - if (!strncasecomp ("UNDERLINE>", old, 10)) - tag_open = "<U>", tag_close = "</U>"; -/* else if (!enriched_p && - !strncasecomp ("US-ASCII>", old, 10)) - tag_open = 0, tag_close = 0; */ - break; - case 'v': case 'V': - if (enriched_p && - !strncasecomp ("VERBATIM>", old, 9)) - tag_open = "<PRE>", tag_close = "</PRE>"; - break; - } - - if (this_start[1] == '/') - { - if (tag_close) XP_STRCPY (out, tag_close); - out += XP_STRLEN (out); - } - else - { - if (tag_open) XP_STRCPY (out, tag_open); - out += XP_STRLEN (out); - } - } - - /* now go around again */ - last_end = this_end; - this_start = last_end; - } - *out = 0; - - return output_fn (*obufferP, out - *obufferP, closure); -} - - -static int -MimeInlineTextRichtext_parse_line (char *line, int32 length, MimeObject *obj) -{ - XP_Bool enriched_p = (((MimeInlineTextRichtextClass *) obj->class) - ->enriched_p); - - return MimeRichtextConvert (line, length, - obj->options->output_fn, - obj->options->stream_closure, - &obj->obuffer, &obj->obuffer_size, - enriched_p); -} - - -static int -MimeInlineTextRichtext_parse_begin (MimeObject *obj) -{ - int status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_begin(obj); - char s[] = ""; - if (status < 0) return status; - return MimeObject_write(obj, s, 0, TRUE); /* force out any separators... */ -} - - -/* This method is largely the same as that of MimeInlineTextHTML; maybe that - means that MimeInlineTextRichtext and MimeInlineTextEnriched should share - a common parent with it which is not also shared by MimeInlineTextPlain? - */ -static int -MimeInlineTextRichtext_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - int status; - if (obj->closed_p) return 0; - - /* Run parent method first, to flush out any buffered data. */ - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); - if (status < 0) return status; - - if (obj->options && - obj->options->write_html_p && - obj->options->set_html_state_fn) - { - return obj->options->set_html_state_fn(obj->options->stream_closure, - FALSE, /* layer_encapulate_p */ - FALSE, /* start_p */ - abort_p); - } - return 0; -} diff --git a/mozilla/lib/libmime/mimetric.h b/mozilla/lib/libmime/mimetric.h deleted file mode 100644 index 50376e503a0..00000000000 --- a/mozilla/lib/libmime/mimetric.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimetric.h --- definition of the MimeInlineTextRichtext class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMETRIC_H_ -#define _MIMETRIC_H_ - -#include "mimetext.h" - -/* The MimeInlineTextRichtext class implements the (obsolete and deprecated) - text/richtext MIME content type, as defined in RFC 1341, and also the - text/enriched MIME content type, as defined in RFC 1563. - */ - -typedef struct MimeInlineTextRichtextClass MimeInlineTextRichtextClass; -typedef struct MimeInlineTextRichtext MimeInlineTextRichtext; - -struct MimeInlineTextRichtextClass { - MimeInlineTextClass text; - XP_Bool enriched_p; /* Whether we should act like text/enriched instead. */ -}; - -extern MimeInlineTextRichtextClass mimeInlineTextRichtextClass; - -struct MimeInlineTextRichtext { - MimeInlineText text; -}; - - -extern int -MimeRichtextConvert (char *line, int32 length, - int (*output_fn) (char *buf, int32 size, void *closure), - void *closure, - char **obufferP, - uint32 *obuffer_sizeP, - XP_Bool enriched_p); - -#endif /* _MIMETRIC_H_ */ diff --git a/mozilla/lib/libmime/mimeunty.c b/mozilla/lib/libmime/mimeunty.c deleted file mode 100644 index 33a4920aedb..00000000000 --- a/mozilla/lib/libmime/mimeunty.c +++ /dev/null @@ -1,494 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeunty.c --- definition of the MimeUntypedText class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#include "rosetta.h" -#include "mimeunty.h" - -#define MIME_SUPERCLASS mimeContainerClass -MimeDefClass(MimeUntypedText, MimeUntypedTextClass, - mimeUntypedTextClass, &MIME_SUPERCLASS); - -static int MimeUntypedText_initialize (MimeObject *); -static void MimeUntypedText_finalize (MimeObject *); -static int MimeUntypedText_parse_begin (MimeObject *); -static int MimeUntypedText_parse_line (char *, int32, MimeObject *); - -static int MimeUntypedText_open_subpart (MimeObject *obj, - MimeUntypedTextSubpartType ttype, - const char *type, - const char *enc, - const char *name, - const char *desc); -static int MimeUntypedText_close_subpart (MimeObject *obj); - -static XP_Bool MimeUntypedText_uu_begin_line_p(const char *line, int32 length, - MimeDisplayOptions *opt, - char **type_ret, - char **name_ret); -static XP_Bool MimeUntypedText_uu_end_line_p(const char *line, int32 length); - -static XP_Bool MimeUntypedText_binhex_begin_line_p(const char *line, - int32 length, - MimeDisplayOptions *opt); -static XP_Bool MimeUntypedText_binhex_end_line_p(const char *line, - int32 length); - -static int -MimeUntypedTextClassInitialize(MimeUntypedTextClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - XP_ASSERT(!oclass->class_initialized); - oclass->initialize = MimeUntypedText_initialize; - oclass->finalize = MimeUntypedText_finalize; - oclass->parse_begin = MimeUntypedText_parse_begin; - oclass->parse_line = MimeUntypedText_parse_line; - return 0; -} - - -static int -MimeUntypedText_initialize (MimeObject *object) -{ - return ((MimeObjectClass*)&MIME_SUPERCLASS)->initialize(object); -} - -static void -MimeUntypedText_finalize (MimeObject *object) -{ - MimeUntypedText *uty = (MimeUntypedText *) object; - - if (uty->open_hdrs) - { - /* Oops, those shouldn't still be here... */ - MimeHeaders_free(uty->open_hdrs); - uty->open_hdrs = 0; - } - - /* What about the open_subpart? We're gonna have to assume that it - is also on the MimeContainer->children list, and will get cleaned - up by that class. */ - - ((MimeObjectClass*)&MIME_SUPERCLASS)->finalize(object); -} - -static int -MimeUntypedText_parse_begin (MimeObject *obj) -{ - return ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_begin(obj); -} - -static int -MimeUntypedText_parse_line (char *line, int32 length, MimeObject *obj) -{ - MimeUntypedText *uty = (MimeUntypedText *) obj; - int status = 0; - char *name = 0, *type = 0; - XP_Bool begin_line_p = FALSE; - - XP_ASSERT(line && *line); - if (!line || !*line) return -1; - - /* If we're supposed to write this object, but aren't supposed to convert - it to HTML, simply pass it through unaltered. */ - if (obj->output_p && - obj->options && - !obj->options->write_html_p && - obj->options->output_fn) - return MimeObject_write(obj, line, length, TRUE); - - - /* Open a new sub-part if this line demands it. - */ - if (line[0] == 'b' && - MimeUntypedText_uu_begin_line_p(line, length, obj->options, - &type, &name)) - { - /* Close the old part and open a new one. */ - status = MimeUntypedText_open_subpart (obj, - MimeUntypedTextSubpartTypeUUE, - type, ENCODING_UUENCODE, - name, NULL); - FREEIF(name); - FREEIF(type); - if (status < 0) return status; - begin_line_p = TRUE; - } - - else if (line[0] == '(' && line[1] == 'T' && - MimeUntypedText_binhex_begin_line_p(line, length, obj->options)) - { - /* Close the old part and open a new one. */ - status = MimeUntypedText_open_subpart (obj, - MimeUntypedTextSubpartTypeBinhex, - APPLICATION_BINHEX, NULL, - NULL, NULL); - if (status < 0) return status; - begin_line_p = TRUE; - } - - /* Open a text/plain sub-part if there is no sub-part open. - */ - if (!uty->open_subpart) - { - XP_ASSERT(!begin_line_p); - status = MimeUntypedText_open_subpart (obj, - MimeUntypedTextSubpartTypeText, - TEXT_PLAIN, NULL, NULL, NULL); - XP_ASSERT(uty->open_subpart); - if (!uty->open_subpart) return -1; - if (status < 0) return status; - } - - /* Hand this line to the currently-open sub-part. - */ - status = uty->open_subpart->class->parse_buffer(line, length, - uty->open_subpart); - if (status < 0) return status; - - /* Close this sub-part if this line demands it. - */ - if (begin_line_p) - ; - else if (line[0] == 'e' && - uty->type == MimeUntypedTextSubpartTypeUUE && - MimeUntypedText_uu_end_line_p(line, length)) - { - status = MimeUntypedText_close_subpart (obj); - if (status < 0) return status; - XP_ASSERT(!uty->open_subpart); - } - else if (uty->type == MimeUntypedTextSubpartTypeBinhex && - MimeUntypedText_binhex_end_line_p(line, length)) - { - status = MimeUntypedText_close_subpart (obj); - if (status < 0) return status; - XP_ASSERT(!uty->open_subpart); - } - - return 0; -} - - -static int -MimeUntypedText_close_subpart (MimeObject *obj) -{ - MimeUntypedText *uty = (MimeUntypedText *) obj; - int status; - - if (uty->open_subpart) - { - status = uty->open_subpart->class->parse_eof(uty->open_subpart, FALSE); - uty->open_subpart = 0; - - XP_ASSERT(uty->open_hdrs); - if (uty->open_hdrs) - { - MimeHeaders_free(uty->open_hdrs); - uty->open_hdrs = 0; - } - uty->type = MimeUntypedTextSubpartTypeText; - if (status < 0) return status; - - /* Never put out a separator between sub-parts of UntypedText. - (This bypasses the rule that text/plain subparts always - have separators before and after them.) - */ - if (obj->options && obj->options->state) - obj->options->state->separator_suppressed_p = TRUE; - } - - XP_ASSERT(!uty->open_hdrs); - return 0; -} - -static int -MimeUntypedText_open_subpart (MimeObject *obj, - MimeUntypedTextSubpartType ttype, - const char *type, - const char *enc, - const char *name, - const char *desc) -{ - MimeUntypedText *uty = (MimeUntypedText *) obj; - int status = 0; - char *h = 0; - - if (!type || !*type || !strcasecomp(type, UNKNOWN_CONTENT_TYPE)) - type = APPLICATION_OCTET_STREAM; - if (enc && !*enc) - enc = 0; - if (desc && !*desc) - desc = 0; - if (name && !*name) - name = 0; - - if (uty->open_subpart) - { - status = MimeUntypedText_close_subpart (obj); - if (status < 0) return status; - } - XP_ASSERT(!uty->open_subpart); - XP_ASSERT(!uty->open_hdrs); - - /* To make one of these implicitly-typed sub-objects, we make up a fake - header block, containing only the minimum number of MIME headers needed. - We could do most of this (Type and Encoding) by making a null header - block, and simply setting obj->content_type and obj->encoding; but making - a fake header block is better for two reasons: first, it means that - something will actually be displayed when in `Show All Headers' mode; - and second, it's the only way to communicate the filename parameter, - aside from adding a new slot to MimeObject (which is something to be - avoided when possible.) - */ - - uty->open_hdrs = MimeHeaders_new(); - if (!uty->open_hdrs) return MK_OUT_OF_MEMORY; - - h = (char *) XP_ALLOC(XP_STRLEN(type) + - (enc ? XP_STRLEN(enc) : 0) + - (desc ? XP_STRLEN(desc) : 0) + - (name ? XP_STRLEN(name) : 0) + - 100); - if (!h) return MK_OUT_OF_MEMORY; - - XP_STRCPY(h, HEADER_CONTENT_TYPE ": "); - XP_STRCAT(h, type); - XP_STRCAT(h, LINEBREAK); - status = MimeHeaders_parse_line(h, XP_STRLEN(h), uty->open_hdrs); - if (status < 0) goto FAIL; - - if (enc) - { - XP_STRCPY(h, HEADER_CONTENT_TRANSFER_ENCODING ": "); - XP_STRCAT(h, enc); - XP_STRCAT(h, LINEBREAK); - status = MimeHeaders_parse_line(h, XP_STRLEN(h), uty->open_hdrs); - if (status < 0) goto FAIL; - } - - if (desc) - { - XP_STRCPY(h, HEADER_CONTENT_DESCRIPTION ": "); - XP_STRCAT(h, desc); - XP_STRCAT(h, LINEBREAK); - status = MimeHeaders_parse_line(h, XP_STRLEN(h), uty->open_hdrs); - if (status < 0) goto FAIL; - } - if (name) - { - XP_STRCPY(h, HEADER_CONTENT_DISPOSITION ": inline; filename=\""); - XP_STRCAT(h, name); - XP_STRCAT(h, "\"" LINEBREAK); - status = MimeHeaders_parse_line(h, XP_STRLEN(h), uty->open_hdrs); - if (status < 0) goto FAIL; - } - - /* push out a blank line. */ - XP_STRCPY(h, LINEBREAK); - status = MimeHeaders_parse_line(h, XP_STRLEN(h), uty->open_hdrs); - if (status < 0) goto FAIL; - - - /* Create a child... */ - { - XP_Bool horrid_kludge = (obj->options && obj->options->state && - obj->options->state->first_part_written_p); - if (horrid_kludge) - obj->options->state->first_part_written_p = FALSE; - - uty->open_subpart = mime_create(type, uty->open_hdrs, obj->options); - - if (horrid_kludge) - obj->options->state->first_part_written_p = TRUE; - - if (!uty->open_subpart) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - - /* Add it to the list... */ - status = ((MimeContainerClass *) obj->class)->add_child(obj, - uty->open_subpart); - if (status < 0) - { - mime_free(uty->open_subpart); - uty->open_subpart = 0; - goto FAIL; - } - - /* And start its parser going. */ - status = uty->open_subpart->class->parse_begin(uty->open_subpart); - if (status < 0) - { - /* MimeContainer->finalize will take care of shutting it down now. */ - uty->open_subpart = 0; - goto FAIL; - } - - uty->type = ttype; - - FAIL: - FREEIF(h); - - if (status < 0 && uty->open_hdrs) - { - MimeHeaders_free(uty->open_hdrs); - uty->open_hdrs = 0; - } - - return status; -} - -static XP_Bool -MimeUntypedText_uu_begin_line_p(const char *line, int32 length, - MimeDisplayOptions *opt, - char **type_ret, char **name_ret) -{ - const char *s; - char *name = 0; - char *type = 0; - - if (type_ret) *type_ret = 0; - if (name_ret) *name_ret = 0; - - if (XP_STRNCMP (line, "begin ", 6)) return FALSE; - /* ...then three or four octal digits. */ - s = line + 6; - if (*s < '0' || *s > '7') return FALSE; - s++; - if (*s < '0' || *s > '7') return FALSE; - s++; - if (*s < '0' || *s > '7') return FALSE; - s++; - if (*s == ' ') - s++; - else - { - if (*s < '0' || *s > '7') return FALSE; - s++; - if (*s != ' ') return FALSE; - } - - while (XP_IS_SPACE(*s)) - s++; - - name = (char *) XP_ALLOC(((line+length)-s) + 1); - if (!name) return FALSE; /* grr... */ - XP_MEMCPY(name, s, (line+length)-s); - name[(line+length)-s] = 0; - - /* take off newline. */ - if (name[XP_STRLEN(name)-1] == LF) name[XP_STRLEN(name)-1] = 0; - if (name[XP_STRLEN(name)-1] == CR) name[XP_STRLEN(name)-1] = 0; - - /* Now try and figure out a type. - */ - if (opt && opt->file_type_fn) - type = opt->file_type_fn(name, opt->stream_closure); - else - type = 0; - - if (name_ret) - *name_ret = name; - else - FREEIF(name); - - if (type_ret) - *type_ret = type; - else - FREEIF(type); - - return TRUE; -} - -static XP_Bool -MimeUntypedText_uu_end_line_p(const char *line, int32 length) -{ -#if 0 - /* A strictly conforming uuencode end line. */ - return (line[0] == 'e' && - line[1] == 'n' && - line[2] == 'd' && - (line[3] == 0 || XP_IS_SPACE(line[3]))); -#else - /* ...but, why don't we accept any line that begins with the three - letters "END" in any case: I've seen lots of partial messages - that look like - - BEGIN----- Cut Here----- - begin 644 foo.gif - Mxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - Mxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - Mxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - END------- Cut Here----- - - so let's be lenient here. (This is only for the untyped-text-plain - case -- the uudecode parser itself is strict.) - */ - return (line[0] == ' ' || - line[0] == '\t' || - ((line[0] == 'e' || line[0] == 'E') && - (line[1] == 'n' || line[1] == 'N') && - (line[2] == 'd' || line[2] == 'D'))); -#endif -} - - -#define BINHEX_MAGIC "(This file must be converted with BinHex 4.0)" -#define BINHEX_MAGIC_LEN 45 - -static XP_Bool -MimeUntypedText_binhex_begin_line_p(const char *line, int32 length, - MimeDisplayOptions *opt) -{ - if (length <= BINHEX_MAGIC_LEN) - return FALSE; - - while(length > 0 && XP_IS_SPACE(line[length-1])) - length--; - - if (length != BINHEX_MAGIC_LEN) - return FALSE; - - if (!XP_STRNCMP(line, BINHEX_MAGIC, BINHEX_MAGIC_LEN)) - return TRUE; - else - return FALSE; -} - -static XP_Bool -MimeUntypedText_binhex_end_line_p(const char *line, int32 length) -{ - if (length > 0 && line[length-1] == LF) length--; - if (length > 0 && line[length-1] == CR) length--; - - if (length != 0 && length != 64) - return TRUE; - else - return FALSE; -} diff --git a/mozilla/lib/libmime/mimeunty.h b/mozilla/lib/libmime/mimeunty.h deleted file mode 100644 index 93d4bdf49fa..00000000000 --- a/mozilla/lib/libmime/mimeunty.h +++ /dev/null @@ -1,87 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimeunty.h --- definition of the MimeUntypedText class (see mimei.h) - Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96. - */ - -#ifndef _MIMEUNTY_H_ -#define _MIMEUNTY_H_ - -#include "mimecont.h" - -/* The MimeUntypedText class is used for untyped message contents, that is, - it is the class used for the body of a message/rfc822 object which had - *no* Content-Type header, as opposed to an unrecognized content-type. - Such a message, technically, does not contain MIME data (it follows only - RFC 822, not RFC 1521.) - - This is a container class, and the reason for that is that it loosely - parses the body of the message looking for ``sub-parts'' and then - creates appropriate containers for them. - - More specifically, it looks for uuencoded data. It may do more than that - some day. - - Basically, the algorithm followed is: - - if line is "begin 644 foo.gif" - if there is an open sub-part, close it - add a sub-part with type: image/gif; encoding: x-uue - hand this line to it - and hand subsequent lines to that subpart - else if there is an open uuencoded sub-part, and line is "end" - hand this line to it - close off the uuencoded sub-part - else if there is an open sub-part - hand this line to it - else - open a text/plain subpart - hand this line to it - - Adding other types than uuencode to this (for example, PGP) would be - pretty straightforward. - */ - -typedef struct MimeUntypedTextClass MimeUntypedTextClass; -typedef struct MimeUntypedText MimeUntypedText; - -struct MimeUntypedTextClass { - MimeContainerClass container; -}; - -extern MimeUntypedTextClass mimeUntypedTextClass; - -typedef enum { - MimeUntypedTextSubpartTypeText, /* text/plain */ - MimeUntypedTextSubpartTypeUUE, /* uuencoded data */ - MimeUntypedTextSubpartTypeBinhex /* Mac BinHex data */ -} MimeUntypedTextSubpartType; - -struct MimeUntypedText { - MimeContainer container; /* superclass variables */ - MimeObject *open_subpart; /* The part still-being-parsed */ - MimeUntypedTextSubpartType type; /* What kind of type it is */ - MimeHeaders *open_hdrs; /* The faked-up headers describing it */ -}; - -#endif /* _MIMEUNTY_H_ */ diff --git a/mozilla/lib/libmime/mimevcrd.c b/mozilla/lib/libmime/mimevcrd.c deleted file mode 100644 index 86c40c71285..00000000000 --- a/mozilla/lib/libmime/mimevcrd.c +++ /dev/null @@ -1,1686 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - - -/* mimevcrd.c --- definition of the MimeInlineTextVCard class (see mimei.h) - */ - -#include "rosetta.h" -#include "mimevcrd.h" -#include "xpgetstr.h" -#include "xp_core.h" -#include "xp_mem.h" -#include "vcc.h" -#include "vobject.h" - -#define MIME_SUPERCLASS mimeInlineTextClass -MimeDefClass(MimeInlineTextVCard, MimeInlineTextVCardClass, - mimeInlineTextVCardClass, &MIME_SUPERCLASS); - -MimeInlineTextVCardClass mimeInlineTextVCardClass; - -static int MimeInlineTextVCard_parse_line (char *, int32, MimeObject *); -static int MimeInlineTextVCard_parse_eof (MimeObject *, XP_Bool); -static int MimeInlineTextVCard_parse_begin (MimeObject *obj); - -static int unique = 0; - -extern int MK_OUT_OF_MEMORY; - -extern int MK_LDAP_COMMON_NAME; -extern int MK_LDAP_FAX_NUMBER; -extern int MK_LDAP_GIVEN_NAME; -extern int MK_LDAP_LOCALITY; -extern int MK_LDAP_PHOTOGRAPH; -extern int MK_LDAP_EMAIL_ADDRESS; -extern int MK_LDAP_MANAGER; -extern int MK_LDAP_ORGANIZATION; -extern int MK_LDAP_OBJECT_CLASS; -extern int MK_LDAP_ORG_UNIT; -extern int MK_LDAP_POSTAL_ADDRESS; -extern int MK_LDAP_SECRETARY; -extern int MK_LDAP_SURNAME; -extern int MK_LDAP_STREET; -extern int MK_LDAP_PHONE_NUMBER; -extern int MK_LDAP_CAR_LICENSE; -extern int MK_LDAP_BUSINESS_CAT; -extern int MK_LDAP_DEPT_NUMBER; -extern int MK_LDAP_DESCRIPTION; -extern int MK_LDAP_EMPLOYEE_TYPE; -extern int MK_LDAP_POSTAL_CODE; -extern int MK_LDAP_TITLE; -extern int MK_LDAP_REGION; -extern int MK_LDAP_DOM_TYPE; -extern int MK_LDAP_INTL_TYPE; -extern int MK_LDAP_POSTAL_TYPE; -extern int MK_LDAP_PARCEL_TYPE; -extern int MK_LDAP_WORK_TYPE; -extern int MK_LDAP_HOME_TYPE; -extern int MK_LDAP_PREF_TYPE; -extern int MK_LDAP_VOICE_TYPE; -extern int MK_LDAP_FAX_TYPE; -extern int MK_LDAP_MSG_TYPE; -extern int MK_LDAP_CELL_TYPE; -extern int MK_LDAP_PAGER_TYPE; -extern int MK_LDAP_BBS_TYPE; -extern int MK_LDAP_MODEM_TYPE; -extern int MK_LDAP_CAR_TYPE; -extern int MK_LDAP_ISDN_TYPE; -extern int MK_LDAP_VIDEO_TYPE; -extern int MK_LDAP_AOL_TYPE; -extern int MK_LDAP_APPLELINK_TYPE; -extern int MK_LDAP_ATTMAIL_TYPE; -extern int MK_LDAP_CSI_TYPE; -extern int MK_LDAP_EWORLD_TYPE; -extern int MK_LDAP_INTERNET_TYPE; -extern int MK_LDAP_IBMMAIL_TYPE; -extern int MK_LDAP_MCIMAIL_TYPE; -extern int MK_LDAP_POWERSHARE_TYPE; -extern int MK_LDAP_PRODIGY_TYPE; -extern int MK_LDAP_TLX_TYPE; -extern int MK_LDAP_MIDDLE_NAME; -extern int MK_LDAP_NAME_PREFIX; -extern int MK_LDAP_NAME_SUFFIX; -extern int MK_LDAP_TZ; -extern int MK_LDAP_GEO; -extern int MK_LDAP_SOUND; -extern int MK_LDAP_REVISION; -extern int MK_LDAP_VERSION; -extern int MK_LDAP_KEY; -extern int MK_LDAP_LOGO; -extern int MK_LDAP_X400; -extern int MK_LDAP_BIRTHDAY; -extern int MK_LDAP_ADDRESS; -extern int MK_LDAP_LABEL; -extern int MK_LDAP_MAILER; -extern int MK_LDAP_ROLE; -extern int MK_LDAP_UPDATEURL; -extern int MK_LDAP_COOLTALKADDRESS; -extern int MK_LDAP_USEHTML; -extern int MK_ADDR_VIEW_COMPLETE_VCARD; -extern int MK_ADDR_VIEW_CONDENSED_VCARD; -extern int MK_MSG_ADD_TO_ADDR_BOOK; -extern int MK_ADDR_DEFAULT_DLS; -extern int MK_ADDR_SPECIFIC_DLS; -extern int MK_ADDR_HOSTNAMEIP; -extern int MK_ADDR_CONFINFO; -extern int MK_ADDR_ADDINFO; - -static int BeginVCard (MimeObject *obj); -static int EndVCard (MimeObject *obj); -static int WriteOutVCard (MimeObject *obj, VObject* v); -static int WriteOutEachVCardProperty (MimeObject *obj, VObject* v, int* numEmail); -static int WriteOutVCardProperties (MimeObject *obj, VObject* v, int* numEmail); -static int WriteLineToStream (MimeObject *obj, const char *line); - -static void GetEmailProperties (VObject* o, char ** attribName); -static void GetTelephoneProperties (VObject* o, char ** attribName); -static void GetAddressProperties (VObject* o, char ** attribName); -static int WriteValue (MimeObject *obj, const char *); -static int WriteAttribute (MimeObject *obj, const char *); -static int WriteOutVCardPhoneProperties (MimeObject *obj, VObject* v); -static int WriteOutEachVCardPhoneProperty (MimeObject *obj, VObject* o); - -typedef struct - { - const char *attributeName; - int resourceId; - } AttributeName; - -#define kNumAttributes 12 - -static int -MimeInlineTextVCardClassInitialize(MimeInlineTextVCardClass *class) -{ - MimeObjectClass *oclass = (MimeObjectClass *) class; - XP_ASSERT(!oclass->class_initialized); - oclass->parse_begin = MimeInlineTextVCard_parse_begin; - oclass->parse_line = MimeInlineTextVCard_parse_line; - oclass->parse_eof = MimeInlineTextVCard_parse_eof; - -return 0; -} - -static int -MimeInlineTextVCard_parse_begin (MimeObject *obj) -{ - int status = ((MimeObjectClass*)&mimeLeafClass)->parse_begin(obj); - MimeInlineTextVCardClass *class; - if (status < 0) return status; - - if (!obj->output_p) return 0; - if (!obj->options || !obj->options->write_html_p) return 0; - - /* This is a fine place to write out any HTML before the real meat begins. - In this sample code, we tell it to start a table. */ - - class = ((MimeInlineTextVCardClass *) obj->class); - /* initialize vcard string to empty; */ - StrAllocCopy(class->vCardString, ""); - - return 0; -} - - -static int -MimeInlineTextVCard_parse_line (char *line, int32 length, MimeObject *obj) -{ - /* This routine gets fed each line of data, one at a time. In my - sample, I spew it out as a table row, putting everything - between colons in its own table cell.*/ - - char* linestring; - MimeInlineTextVCardClass *class = ((MimeInlineTextVCardClass *) obj->class); - - if (!obj->output_p) return 0; - if (!obj->options || !obj->options->output_fn) return 0; - if (!obj->options->write_html_p) { - return MimeObject_write(obj, line, length, TRUE); - } - - linestring = (char *) XP_ALLOC (length + 1); - - if (linestring) { - XP_STRNCPY_SAFE((char *)linestring, line, length + 1); - StrAllocCat (class->vCardString, linestring); - XP_FREE (linestring); - } - - return 0; -} - - -static int -MimeInlineTextVCard_parse_eof (MimeObject *obj, XP_Bool abort_p) -{ - int status = 0; - MimeInlineTextVCardClass *class = ((MimeInlineTextVCardClass *) obj->class); - VObject *t, *v; - - if (obj->closed_p) return 0; - - /* Run parent method first, to flush out any buffered data. */ - status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); - if (status < 0) return status; - - if (!class->vCardString) return 0; - - v = Parse_MIME(class->vCardString, XP_STRLEN(class->vCardString)); - - if (class->vCardString) { - XP_FREE ((char*) class->vCardString); - class->vCardString = NULL; - } - - if (obj->output_p && obj->options && obj->options->write_html_p) { - /* This is a fine place to write any closing HTML. In fact, you may - want all the writing to be here, and all of the above would just - collect data into datastructures, though that isn't very - "streaming". */ - t = v; - while (v && status >= 0) { - /* write out html */ - status = WriteOutVCard (obj, v); - /* parse next vcard incase they're embedded */ - v = nextVObjectInList(v); - } - - cleanVObject(t); - } - if (status < 0) return status; - - return 0; -} - -static int WriteEachLineToStream (MimeObject *obj, const char *line) -{ - int status = 0; - char *htmlLine; - int htmlLen = XP_STRLEN(line) + 1; - - htmlLine = (char *) XP_ALLOC (htmlLen); - if (htmlLine) - { - htmlLine[0] = '\0'; - XP_STRCAT (htmlLine, line); - status = MimeObject_write(obj, htmlLine, XP_STRLEN(htmlLine), TRUE); -#ifdef DEBUG_mwatkins - if (XP_STRLEN (htmlLine) < 500) - XP_Trace("%s%c", htmlLine, '\n'); -#endif - XP_FREE ((void*) htmlLine); - } - else - status = MK_OUT_OF_MEMORY; - - return status; -} - -static int OutputTable (MimeObject *obj, XP_Bool endTable, XP_Bool border, char *cellspacing, char *cellpadding, char *bgcolor) -{ - int status = 0; - char * htmlLine = NULL; - - if (endTable) - { - status = WriteEachLineToStream (obj, "</TABLE>"); - } - else - { - int htmlLen = XP_STRLEN("<TABLE>") + 1; - if (border) - htmlLen += XP_STRLEN (" BORDER"); - if (cellspacing) - htmlLen += XP_STRLEN(" CELLSPACING=") + XP_STRLEN(cellspacing); - if (cellpadding) - htmlLen += XP_STRLEN(" CELLPADDING=") + XP_STRLEN(cellpadding); - if (bgcolor) - htmlLen += XP_STRLEN(" BGCOLOR=") + XP_STRLEN(bgcolor); - if (border || cellspacing || cellpadding || bgcolor) - htmlLen++; - - htmlLine = (char *) XP_ALLOC (htmlLen); - if (htmlLine) - { - htmlLine[0] = '\0'; - XP_STRCAT (htmlLine, "<TABLE"); - if (border) - XP_STRCAT (htmlLine, " BORDER"); - if (cellspacing) - { - XP_STRCAT (htmlLine, " CELLSPACING="); - XP_STRCAT (htmlLine, cellspacing); - } - if (cellpadding) - { - XP_STRCAT (htmlLine, " CELLPADDING="); - XP_STRCAT (htmlLine, cellpadding); - } - if (bgcolor) - { - XP_STRCAT (htmlLine, " BGCOLOR="); - XP_STRCAT (htmlLine, bgcolor); - } - - if (border || cellspacing || cellpadding || bgcolor) - XP_STRCAT (htmlLine, " "); - - XP_STRCAT (htmlLine, ">"); - - status = MimeObject_write(obj, htmlLine, XP_STRLEN(htmlLine), TRUE); -#ifdef DEBUG_mwatkins - XP_Trace("%s%c", htmlLine, '\n'); -#endif - XP_FREE ((void*) htmlLine); - } - else - status = MK_OUT_OF_MEMORY; - } - return status; -} - -static int OutputTableRowOrData(MimeObject *obj, XP_Bool outputRow, - XP_Bool end, char * align, - char* valign, char* colspan, - char* width) -{ - int status = 0; - char * htmlLine = NULL; - - if (end) - if (outputRow) - status = WriteEachLineToStream (obj, "</TR>"); - else - status = WriteEachLineToStream (obj, "</TD>"); - else - { - int htmlLen = XP_STRLEN("<TR>") + 1; - if (align) - htmlLen += XP_STRLEN(" ALIGN=") + XP_STRLEN(align); - if (colspan) - htmlLen += XP_STRLEN(" COLSPAN=") + XP_STRLEN(colspan); - if (width) - htmlLen += XP_STRLEN(" WIDTH=") + XP_STRLEN(width); - if (valign) - htmlLen += XP_STRLEN(" VALIGN=") + XP_STRLEN(valign); - if (align || valign || colspan || width) - htmlLen++; - - htmlLine = (char *) XP_ALLOC (htmlLen); - if (htmlLine) - { - htmlLine[0] = '\0'; - if (outputRow) - XP_STRCAT (htmlLine, "<TR"); - else - XP_STRCAT (htmlLine, "<TD"); - if (align) - { - XP_STRCAT (htmlLine, " ALIGN="); - XP_STRCAT (htmlLine, align); - } - if (valign) - { - XP_STRCAT (htmlLine, " VALIGN="); - XP_STRCAT (htmlLine, valign); - } - if (colspan) - { - XP_STRCAT (htmlLine, " COLSPAN="); - XP_STRCAT (htmlLine, colspan); - } - if (width) - { - XP_STRCAT (htmlLine, " WIDTH="); - XP_STRCAT (htmlLine, width); - } - if (align || valign || colspan || width) - XP_STRCAT (htmlLine, " "); - - XP_STRCAT (htmlLine, ">"); - - status = MimeObject_write(obj, htmlLine, XP_STRLEN(htmlLine), TRUE); -#ifdef DEBUG_mwatkins - XP_Trace("%s%c", htmlLine, '\n'); -#endif - XP_FREE ((void*) htmlLine); - } - else - status = MK_OUT_OF_MEMORY; - } - - return status; -} - - -static int OutputFont(MimeObject *obj, XP_Bool endFont, char * size, char* color) -{ - int status = 0; - char * htmlLine = NULL; - - if (endFont) - status = WriteEachLineToStream (obj, "</FONT>"); - else - { - int htmlLen = XP_STRLEN("<FONT>") + 1; - if (size) - htmlLen += XP_STRLEN(" SIZE=") + XP_STRLEN(size); - if (color) - htmlLen += XP_STRLEN(" COLOR=") + XP_STRLEN(color); - if (size || color) - htmlLen++; - - htmlLine = (char *) XP_ALLOC (htmlLen); - if (htmlLine) - { - htmlLine[0] = '\0'; - XP_STRCAT (htmlLine, "<FONT"); - if (size) - { - XP_STRCAT (htmlLine, " SIZE="); - XP_STRCAT (htmlLine, size); - } - if (color) - { - XP_STRCAT (htmlLine, " COLOR="); - XP_STRCAT (htmlLine, color); - } - if (size || color) - XP_STRCAT (htmlLine, " "); - - XP_STRCAT (htmlLine, ">"); - - status = MimeObject_write(obj, htmlLine, XP_STRLEN(htmlLine), TRUE); -#ifdef DEBUG_mwatkins - XP_Trace("%s%c", htmlLine, '\n'); -#endif - XP_FREE ((void*) htmlLine); - } - else - status = MK_OUT_OF_MEMORY; - } - - return status; -} - -static int OutputVcardAttribute(MimeObject *obj, VObject *v, const char* id) -{ - int status = 0; - VObject *prop = NULL; - char *string = NULL; - - prop = isAPropertyOf(v, id); - if (prop) - if (VALUE_TYPE(prop)) - { - string = fakeCString (vObjectUStringZValue(prop)); - if (string) { - status = OutputFont(obj, FALSE, "-1", NULL); - if (status < 0) { - XP_FREEIF (string); - return status; - } - status = WriteLineToStream (obj, string); - XP_FREEIF (string); - if (status < 0) return status; - status = OutputFont(obj, TRUE, NULL, NULL); - if (status < 0) return status; - } - } - - return 0; -} - - -static int OutputBasicVcard(MimeObject *obj, VObject *v) -{ - int status = 0; - char * htmlLine1 = NULL; - char * htmlLine2 = NULL; - char * htmlLine = NULL; - VObject *prop = NULL; - VObject* prop2 = NULL; - char * urlstring = NULL; - char * namestring = NULL; - char * emailstring = NULL; - - /* get the name and email */ - prop = isAPropertyOf(v, VCFullNameProp); - if (prop) - { - if (VALUE_TYPE(prop)) - { - namestring = fakeCString (vObjectUStringZValue(prop)); - if (namestring) - { - prop = isAPropertyOf(v, VCURLProp); - if (prop) - { - urlstring = fakeCString (vObjectUStringZValue(prop)); - if (urlstring) - htmlLine1 = PR_smprintf ("<A HREF=""%s"">%s</A> ", urlstring, namestring); - else - htmlLine1 = PR_smprintf ("%s ", namestring); - XP_FREEIF (urlstring); - } - else - htmlLine1 = PR_smprintf ("%s ", namestring); - - /* get the email address */ - prop = isAPropertyOf(v, VCEmailAddressProp); - if (prop) - { - emailstring = fakeCString (vObjectUStringZValue(prop)); - if (emailstring) - { - /* if its an internet address prepend the mailto url */ - prop2 = isAPropertyOf(prop, VCInternetProp); - if (prop2) - htmlLine2 = PR_smprintf ("&lt;<A HREF=""mailto:%s"">%s</A>&gt;", emailstring, emailstring); - else - htmlLine2 = PR_smprintf ("%s", emailstring); - XP_FREEIF (emailstring); - } - } - - if (!htmlLine1 && !htmlLine2) - { - XP_FREEIF (htmlLine1); - XP_FREEIF (htmlLine2); - return MK_OUT_OF_MEMORY; - } - else - { - htmlLine = StrAllocCat (htmlLine, htmlLine1); - htmlLine = StrAllocCat (htmlLine, htmlLine2); - } - - XP_FREEIF (htmlLine1); - XP_FREEIF (htmlLine2); - XP_FREEIF (namestring); - } - } - } - - status = OutputTable (obj, FALSE, FALSE, "0", "0", NULL); - if (status < 0) { - XP_FREEIF (htmlLine); - return status; - } - if (htmlLine) - { - status = OutputTableRowOrData(obj, TRUE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) { - XP_FREE (htmlLine); - return status; - } - status = OutputTableRowOrData (obj, FALSE, FALSE, NULL, NULL, NULL, NULL); - if (status < 0) { - XP_FREE (htmlLine); - return status; - } - - status = WriteLineToStream (obj, htmlLine); - XP_FREE (htmlLine); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData(obj, TRUE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - } - else - status = MK_OUT_OF_MEMORY; - - status = OutputTableRowOrData(obj, TRUE, FALSE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, FALSE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - /* output the title */ - status = OutputVcardAttribute (obj, v, VCTitleProp); - if (status < 0) return status; - /* write out the org name and company name */ - prop = isAPropertyOf(v, VCOrgProp); - if (prop) - { - status = OutputVcardAttribute (obj, prop, VCOrgNameProp); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCOrgUnitProp); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCOrgUnit2Prop); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCOrgUnit3Prop); - if (status < 0) return status; - } - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, TRUE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTable (obj, TRUE, FALSE, NULL, NULL, NULL); - if (status < 0) return status; - - return 0; -} - -static int OutputAdvancedVcard(MimeObject *obj, VObject *v) -{ - int status = 0; - char * htmlLine1 = NULL; - char * htmlLine2 = NULL; - VObject *prop = NULL; - VObject* prop2 = NULL; - char * urlstring = NULL; - char * namestring = NULL; - char * emailstring = NULL; - int numEmail = 0; - - status = OutputTable (obj, FALSE, FALSE, "0", "0", NULL); - if (status < 0) return status; - /* beginning of first row */ - status = OutputTableRowOrData(obj, TRUE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", "3", NULL); - if (status < 0) return status; - - /* get the name and email */ - prop = isAPropertyOf(v, VCFullNameProp); - if (prop) - { - if (VALUE_TYPE(prop)) - { - namestring = fakeCString (vObjectUStringZValue(prop)); - if (namestring) - { - prop = isAPropertyOf(v, VCURLProp); - if (prop) - { - urlstring = fakeCString (vObjectUStringZValue(prop)); - if (urlstring) - htmlLine1 = PR_smprintf ("<A HREF=""%s"">%s</A> ", urlstring, namestring); - else - htmlLine1 = PR_smprintf ("%s ", namestring); - XP_FREEIF (urlstring); - } - else - htmlLine1 = PR_smprintf ("%s ", namestring); - - XP_FREEIF (namestring); - } - if (!htmlLine1) - { - return MK_OUT_OF_MEMORY; - } - } - } - /* output the name if there was one */ - if (htmlLine1) - { - status = WriteLineToStream (obj, htmlLine1); - XP_FREEIF (htmlLine1); - if (status < 0) return status; - } - - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData(obj, TRUE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - - /* beginning of second row */ - status = OutputTableRowOrData(obj, TRUE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) return status; - /* output the title */ - status = OutputVcardAttribute (obj, v, VCTitleProp); - if (status < 0) return status; - /* write out the org name and company name */ - prop = isAPropertyOf(v, VCOrgProp); - if (prop) - { - status = OutputVcardAttribute (obj, prop, VCOrgNameProp); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCOrgUnitProp); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCOrgUnit2Prop); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCOrgUnit3Prop); - if (status < 0) return status; - } - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - - status = OutputTableRowOrData (obj, FALSE, FALSE , "LEFT", "TOP", NULL, "\"10\""); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - - status = OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) return status; - - /* get the email address */ - prop = isAPropertyOf(v, VCEmailAddressProp); - if (prop) - { - emailstring = fakeCString (vObjectUStringZValue(prop)); - if (emailstring) - { - numEmail++; - /* if its an internet address prepend the mailto url */ - prop2 = isAPropertyOf(prop, VCInternetProp); - if (prop2) - htmlLine2 = PR_smprintf ("&lt;<A HREF=""mailto:%s"">%s</A>&gt;", emailstring, emailstring); - else - htmlLine2 = PR_smprintf ("%s", emailstring); - - XP_FREEIF (emailstring); - } - if (!htmlLine2) - { - return MK_OUT_OF_MEMORY; - } - } - /* output email address */ - if (htmlLine2) - { - status = OutputFont(obj, FALSE, "-1", NULL); - if (status < 0) { - XP_FREEIF (htmlLine2); - return status; - } - status = WriteLineToStream (obj, htmlLine2); - XP_FREEIF (htmlLine2); - if (status < 0) return status; - status = OutputFont(obj, TRUE, NULL, NULL); - if (status < 0) return status; - /* output html mail setting only if its true */ - prop = isAPropertyOf(v, VCUseHTML); - if (prop) - { - if (VALUE_TYPE(prop)) - { - namestring = fakeCString (vObjectUStringZValue(prop)); - if (namestring) - if (strcasecomp (namestring, "TRUE") == 0) - { - XP_FREEIF (namestring); - status = OutputFont(obj, FALSE, "-1", NULL); - if (status < 0) return status; - status = WriteLineToStream (obj, XP_GetString (MK_LDAP_USEHTML)); - if (status < 0) return status; - status = OutputFont(obj, TRUE, NULL, NULL); - if (status < 0) return status; - } - else - XP_FREEIF (namestring); - } - } - } - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData(obj, TRUE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - - /* beginning of third row */ - /* write out address information if we have any */ - status = OutputTableRowOrData(obj, TRUE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) return status; - /* first column */ - status = OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) return status; - prop = isAPropertyOf(v, VCAdrProp); - if (prop) - { - status = OutputVcardAttribute (obj, prop, VCPostalBoxProp); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCExtAddressProp); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCStreetAddressProp); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCCityProp); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCRegionProp); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCPostalCodeProp); - if (status < 0) return status; - status = OutputVcardAttribute (obj, prop, VCCountryNameProp); - if (status < 0) return status; - } - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - - /* second column */ - status = OutputTableRowOrData (obj, FALSE, FALSE , NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - - /* third column */ - status = OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) return status; - /* output telephone fields */ - status = WriteOutVCardPhoneProperties (obj, v); - if (status < 0) return status; - /* output conference fields */ - status = OutputFont(obj, FALSE, "-1", NULL); - if (status < 0) return status; - prop = isAPropertyOf(v, VCCooltalk); - if (prop) - { - WriteLineToStream (obj, XP_GetString (MK_ADDR_CONFINFO)); - if (status < 0) return status; - prop2 = isAPropertyOf(prop, VCUseServer); - if (prop2) - { - if (VALUE_TYPE(prop2)) { - namestring = fakeCString (vObjectUStringZValue(prop2)); - if (XP_STRCMP (namestring, "0") == 0) - status = WriteLineToStream (obj, XP_GetString (MK_ADDR_DEFAULT_DLS)); - else { - if (XP_STRCMP (namestring, "1") == 0) - status = WriteLineToStream (obj, XP_GetString (MK_ADDR_SPECIFIC_DLS)); - else - if (XP_STRCMP (namestring, "2") == 0) - status = WriteLineToStream (obj, XP_GetString (MK_ADDR_HOSTNAMEIP)); - } - XP_FREEIF (namestring); - if (status < 0) return status; - } - } - status = OutputVcardAttribute (obj, prop, VCCooltalkAddress); - if (status < 0) return status; - } - - status = OutputFont(obj, TRUE, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - - status = OutputTableRowOrData(obj, TRUE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - - /* beginning of last row */ - /* output notes field */ - prop = isAPropertyOf(v, VCCommentProp); - if (prop) - { - status = OutputTableRowOrData(obj, TRUE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", "3", NULL); - if (status < 0) return status; - status = OutputVcardAttribute (obj, v, VCCommentProp); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData(obj, TRUE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - } - - status = OutputTable (obj, TRUE, FALSE, NULL, NULL, NULL); - if (status < 0) return status; - - /* output second table containing all the additional info */ - status = OutputTable (obj, FALSE, FALSE, "0", "0", NULL); - if (status < 0) return status; - /* beginning of first row */ - status = OutputTableRowOrData(obj, TRUE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", "2", NULL); - if (status < 0) return status; - /* output the additional info header */ - status = OutputFont(obj, FALSE, "-1", NULL); - if (status < 0) return status; - status = WriteLineToStream (obj, XP_GetString (MK_ADDR_ADDINFO)); - if (status < 0) return status; - status = OutputFont(obj, TRUE, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData(obj, TRUE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - - /* beginning of remaining rows */ - status = WriteOutVCardProperties (obj, v, &numEmail); - if (status < 0) return status; - - status = OutputTable (obj, TRUE, FALSE, NULL, NULL, NULL); - if (status < 0) return status; - - return 0; -} - -static int OutputButtons(MimeObject *obj, XP_Bool basic, VObject *v) -{ - int status = 0; - char * htmlLine = NULL; - char * htmlLine1 = NULL; - char * htmlLine2 = NULL; - char* vCard = NULL; - char* vEscCard = NULL; - int len = 0; - - if (!obj->options->output_vcard_buttons_p) - return status; - - vCard = writeMemVObjects(0, &len, v); - - if (!vCard) - return MK_OUT_OF_MEMORY; - - vEscCard = NET_Escape (vCard, URL_XALPHAS); - - XP_FREEIF (vCard); - - if (!vEscCard) - return MK_OUT_OF_MEMORY; - - if (basic) - { - htmlLine1 = PR_smprintf ("<FORM name=form1><INPUT type=reset value=\\\"%s\\\" onClick=\\\"showAdvanced%d();\\\"></INPUT></FORM>", - XP_GetString(MK_ADDR_VIEW_COMPLETE_VCARD), unique); - htmlLine2 = PR_smprintf ("<FORM name=form1 METHOD=get ACTION=\"addbook:add\"><INPUT TYPE=hidden name=vcard VALUE=\"%s\"><INPUT type=submit value=\"%s\"></INPUT></FORM>", - vEscCard, XP_GetString(MK_MSG_ADD_TO_ADDR_BOOK)); - } - else - { - htmlLine1 = PR_smprintf ("<FORM name=form1><INPUT type=reset value=\\\"%s\\\" onClick=\\\"showBasic%d();\\\"></INPUT></FORM>", - XP_GetString(MK_ADDR_VIEW_CONDENSED_VCARD), unique); - - htmlLine2 = PR_smprintf ("<FORM name=form1 METHOD=get ACTION=\"addbook:add\"><INPUT TYPE=hidden name=vcard VALUE=\"%s\"><INPUT type=submit value=\"%s\"></INPUT></FORM>", - vEscCard, XP_GetString(MK_MSG_ADD_TO_ADDR_BOOK)); - } - - if (!htmlLine1 && !htmlLine2) - { - XP_FREEIF (vEscCard); - XP_FREEIF (htmlLine1); - XP_FREEIF (htmlLine2); - return MK_OUT_OF_MEMORY; - } - - status = OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) goto FAIL; - status = WriteEachLineToStream (obj, "<SCRIPT>document.write(\""); - if (status < 0) goto FAIL; - status = WriteLineToStream (obj, htmlLine1); - if (status < 0) goto FAIL; - status = WriteEachLineToStream (obj, "\")</SCRIPT>"); - if (status < 0) goto FAIL; - status = WriteLineToStream (obj, htmlLine2); - if (status < 0) goto FAIL; - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) goto FAIL; - - FAIL: - XP_FREEIF (vEscCard); - XP_FREEIF (htmlLine1); - XP_FREEIF (htmlLine2); - - return status; -} - -static int BeginLayer(MimeObject *obj, XP_Bool basic) -{ - int status = 0; - char * captionLine = NULL; - - if (basic) - { - captionLine = PR_smprintf ("<LAYER NAME=basic%d>", unique); - } - else - { - captionLine = PR_smprintf ("<ILAYER NAME=advanced%d VISIBILITY=\"hide\">", unique); - } - - if (captionLine) - { - status = WriteEachLineToStream (obj, captionLine); - XP_FREE(captionLine); - if (status < 0) return status; - status = OutputTable (obj, FALSE, FALSE, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, TRUE, FALSE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, FALSE, NULL, "TOP", NULL, NULL); - if (status < 0) return status; - status = OutputTable (obj, FALSE, TRUE, "0", "0", "#FFFFFF"); - if (status < 0) return status; - if (basic) - { - status = OutputTableRowOrData(obj, TRUE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData(obj, FALSE, FALSE, "LEFT", "TOP", NULL, NULL); - if (status < 0) return status; - } - else - { - status = OutputTableRowOrData(obj, TRUE, FALSE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData(obj, FALSE, FALSE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - } - - status = OutputTable (obj, FALSE, FALSE, "4", NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, TRUE, FALSE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, FALSE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - } - else - status = MK_OUT_OF_MEMORY; - - return status; -} - -static int EndLayer(MimeObject *obj, XP_Bool basic, VObject* v) -{ - int status = 0; - char * captionLine = NULL; - - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, TRUE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTable (obj, TRUE, FALSE, NULL, NULL, NULL); - if (status < 0) return status; - - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, TRUE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTable (obj, TRUE, FALSE, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - - status = OutputButtons(obj, basic, v); - if (status < 0) return status; - - status = OutputTableRowOrData (obj, TRUE, TRUE, NULL, NULL, NULL, NULL); - if (status < 0) return status; - status = OutputTable (obj, TRUE, FALSE, NULL, NULL, NULL); - if (status < 0) return status; - - if (!basic) - { - status = WriteEachLineToStream (obj, "</ILAYER>"); - if (status < 0) return status; - status = WriteEachLineToStream (obj, "<P><SCRIPT>"); - if (status < 0) return status; - captionLine = PR_smprintf ("function showAdvanced%d() {", unique); - if (captionLine) - status = WriteEachLineToStream (obj, captionLine); - XP_FREEIF (captionLine); - captionLine = NULL; - if (status < 0) return status; - captionLine = PR_smprintf ("document.layers[\"basic%d\"].visibility = \"hide\";", unique); - if (captionLine) - status = WriteEachLineToStream (obj, captionLine); - XP_FREEIF (captionLine); - captionLine = NULL; - if (status < 0) return status; - captionLine = PR_smprintf ("document.layers[\"advanced%d\"].visibility = \"inherit\";", unique); - if (captionLine) - status = WriteEachLineToStream (obj, captionLine); - XP_FREEIF (captionLine); - captionLine = NULL; - if (status < 0) return status; - status = WriteEachLineToStream (obj, "};"); - if (status < 0) return status; - captionLine = PR_smprintf ("function showBasic%d() {", unique); - if (captionLine) - status = WriteEachLineToStream (obj, captionLine); - XP_FREEIF (captionLine); - captionLine = NULL; - if (status < 0) return status; - captionLine = PR_smprintf ("document.layers[\"advanced%d\"].visibility = \"hide\";", unique); - if (captionLine) - status = WriteEachLineToStream (obj, captionLine); - if (status < 0) return status; - captionLine = PR_smprintf ("document.layers[\"basic%d\"].visibility = \"inherit\";", unique); - if (captionLine) - status = WriteEachLineToStream (obj, captionLine); - XP_FREEIF (captionLine); - if (status < 0) return status; - status = WriteEachLineToStream (obj, "}; </SCRIPT></P>"); - } - else { - status = WriteEachLineToStream (obj, "</LAYER>"); - } - - if (status < 0) return status; - return 0; -} - -static int EndVCard (MimeObject *obj) -{ - int status = 0; - - /* Scribble HTML-ending stuff into the stream */ - char htmlFooters[32]; - PR_snprintf (htmlFooters, sizeof(htmlFooters), "</BODY>%s</HTML>%s", LINEBREAK, LINEBREAK); - status = MimeObject_write(obj, htmlFooters, XP_STRLEN(htmlFooters), FALSE); - - if (status < 0) return status; - - if (obj->options && obj->options->set_html_state_fn) { - status = obj->options->set_html_state_fn(obj->options->stream_closure, - TRUE, /* layer_encapulate_p */ - FALSE, /* start_p */ - FALSE); /* abort_p */ - if (status < 0) return status; - } - - return 0; -} - -static int BeginVCard (MimeObject *obj) -{ - int status = 0; - - /* Scribble HTML-starting stuff into the stream */ - char htmlHeaders[32]; - - if (obj->options && obj->options->set_html_state_fn) { - status = obj->options->set_html_state_fn(obj->options->stream_closure, - TRUE, /* layer_encapulate_p */ - TRUE, /* start_p */ - FALSE); /* abort_p */ - if (status < 0) return status; - } - - unique++; - PR_snprintf (htmlHeaders, sizeof(htmlHeaders), "<HTML>%s<BODY>%s", LINEBREAK, LINEBREAK); - status = MimeObject_write(obj, htmlHeaders, XP_STRLEN(htmlHeaders), TRUE); - - if (status < 0) return status; - - return 0; -} - -static int WriteOutVCard (MimeObject *obj, VObject* v) -{ - int status = 0; - - status = BeginVCard (obj); - if (status < 0) return status; - - /* write out basic layer */ - status = BeginLayer(obj, TRUE); - if (status < 0) return status; - status = OutputBasicVcard(obj, v); - if (status < 0) return status; - status = EndLayer(obj, TRUE, v); - if (status < 0) return status; - - /* write out advanced layer */ - status = BeginLayer(obj, FALSE); - if (status < 0) return status; - status = OutputAdvancedVcard(obj, v); - if (status < 0) return status; - status = EndLayer(obj, FALSE, v); - if (status < 0) return status; - - status = EndVCard (obj); - if (status < 0) return status; - - return 0; -} - -static void GetAddressProperties (VObject* o, char ** attribName) -{ - VObject* domProp = isAPropertyOf(o, VCDomesticProp); - VObject* intlProp = isAPropertyOf(o, VCInternationalProp); - VObject* postal = isAPropertyOf(o, VCPostalProp); - VObject* parcel = isAPropertyOf(o, VCParcelProp); - VObject* home = isAPropertyOf(o, VCHomeProp); - VObject* work = isAPropertyOf(o, VCWorkProp); - if (domProp) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_DOM_TYPE)); - } - if (intlProp) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_INTL_TYPE)); - } - if (postal) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_POSTAL_TYPE)); - } - if (parcel) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_PARCEL_TYPE)); - } - if (home) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_HOME_TYPE)); - } - if (work) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_WORK_TYPE)); - } -} - - -static void GetTelephoneProperties (VObject* o, char ** attribName) -{ - VObject* prefProp = isAPropertyOf(o, VCPreferredProp); - VObject* home = isAPropertyOf(o, VCHomeProp); - VObject* work = isAPropertyOf(o, VCWorkProp); - VObject* voiceProp = isAPropertyOf(o, VCVoiceProp); - VObject* fax = isAPropertyOf(o, VCFaxProp); - VObject* msg = isAPropertyOf(o, VCMessageProp); - VObject* cell = isAPropertyOf(o, VCCellularProp); - VObject* pager = isAPropertyOf(o, VCPagerProp); - VObject* bbs = isAPropertyOf(o, VCBBSProp); - if (prefProp) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_PREF_TYPE)); - } - if (home) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_HOME_TYPE)); - } - if (work) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_WORK_TYPE)); - } - if (voiceProp) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_VOICE_TYPE)); - } - if (fax) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_FAX_TYPE)); - } - if (msg) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_MSG_TYPE)); - } - if (cell) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_CELL_TYPE)); - } - if (pager) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_PAGER_TYPE)); - } - if (bbs) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_BBS_TYPE)); - } -} - -static void GetEmailProperties (VObject* o, char ** attribName) -{ - - VObject* prefProp = isAPropertyOf(o, VCPreferredProp); - VObject* home = isAPropertyOf(o, VCHomeProp); - VObject* work = isAPropertyOf(o, VCWorkProp); - VObject* aol = isAPropertyOf(o, VCAOLProp); - VObject* applelink = isAPropertyOf(o, VCAppleLinkProp); - VObject* att = isAPropertyOf(o, VCATTMailProp); - VObject* cis = isAPropertyOf(o, VCCISProp); - VObject* eworld = isAPropertyOf(o, VCEWorldProp); - VObject* internet = isAPropertyOf(o, VCInternetProp); - VObject* ibmmail = isAPropertyOf(o, VCIBMMailProp); - VObject* mcimail = isAPropertyOf(o, VCMCIMailProp); - VObject* powershare = isAPropertyOf(o, VCPowerShareProp); - VObject* prodigy = isAPropertyOf(o, VCProdigyProp); - VObject* telex = isAPropertyOf(o, VCTLXProp); - VObject* x400 = isAPropertyOf(o, VCX400Prop); - if (prefProp) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_PREF_TYPE)); - } - if (home) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_HOME_TYPE)); - } - if (work) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_WORK_TYPE)); - } - if (aol) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_AOL_TYPE)); - } - if (applelink) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_APPLELINK_TYPE)); - } - if (att) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_ATTMAIL_TYPE)); - } - if (cis) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_CSI_TYPE)); - } - if (eworld) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_EWORLD_TYPE)); - } - if (internet) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_INTERNET_TYPE)); - } - if (ibmmail) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_IBMMAIL_TYPE)); - } - if (mcimail) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_MCIMAIL_TYPE)); - } - if (powershare) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_POWERSHARE_TYPE)); - } - if (prodigy) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_PRODIGY_TYPE)); - } - if (telex) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_TLX_TYPE)); - } - if (x400) { - StrAllocCat ((*attribName), " "); - StrAllocCat ((*attribName), XP_GetString (MK_LDAP_X400)); - } - -} - -static int WriteOutEachVCardPhoneProperty (MimeObject *obj, VObject* o) -{ - char *attribName = NULL; - char *value = NULL; - int status = 0; - - if (vObjectName(o)) - { - if (strcasecomp (VCTelephoneProp, vObjectName(o)) == 0) - { - if (VALUE_TYPE(o)) - { - GetTelephoneProperties(o, &attribName); - if (!attribName) - attribName = XP_STRDUP (XP_GetString (MK_LDAP_PHONE_NUMBER)); - attribName = StrAllocCat(attribName, ": "); - value = fakeCString (vObjectUStringZValue(o)); - if (value) - { - attribName = StrAllocCat (attribName, value); - XP_FREEIF (value); - if (attribName) - { - status = OutputFont(obj, FALSE, "-1", NULL); - if (status < 0) { - XP_FREEIF (attribName); - return status; - } - status = WriteLineToStream (obj, attribName); - if (status < 0) { - XP_FREEIF (attribName); - return status; - } - status = OutputFont(obj, TRUE, NULL, NULL); - if (status < 0) { - XP_FREEIF (attribName); - return status; - } - } - XP_FREEIF (attribName); - } - } - } - } - return status; -} - -static int WriteOutVCardPhoneProperties (MimeObject *obj, VObject* v) -{ - int status = 0; - VObjectIterator t; - VObject *eachProp; - - WriteOutEachVCardPhoneProperty (obj, v); - initPropIterator(&t,v); - while (moreIteration(&t) && status >= 0) - { - eachProp = nextVObject(&t); - status = WriteOutEachVCardPhoneProperty (obj, eachProp); - } - - if (status < 0) return status; - - return 0; -} - -static int WriteOutEachVCardProperty (MimeObject *obj, VObject* o, int* numEmail) -{ - char *attribName = NULL; - char * url = NULL; - char *value = NULL; - char *ptr = NULL; - int status = 0; - - if (vObjectName(o)) { - - if (strcasecomp (VCPhotoProp, vObjectName(o)) == 0) { - VObject* urlProp = isAPropertyOf(o, VCURLProp); - if (urlProp) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_PHOTOGRAPH)); - /* format the value string to the url */ - value = fakeCString (vObjectUStringZValue(o)); - if (value) - url = PR_smprintf ("<IMG SRC = ""%s""", value); - XP_FREEIF (value); - value = NULL; - goto DOWRITE; - } - } - - if (strcasecomp (VCBirthDateProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_BIRTHDAY)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (strcasecomp (VCDeliveryLabelProp, vObjectName(o)) == 0) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_LABEL)); - GetAddressProperties(o, &attribName); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - - if (strcasecomp (VCEmailAddressProp, vObjectName(o)) == 0) { - if ((*numEmail) != 1) - { - if (VALUE_TYPE(o)) { - (*numEmail)++; - attribName = XP_STRDUP (XP_GetString (MK_LDAP_EMAIL_ADDRESS)); - GetEmailProperties(o, &attribName); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - }; - } - } - - if (strcasecomp (VCFamilyNameProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_SURNAME)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (strcasecomp (VCGivenNameProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_GIVEN_NAME)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (strcasecomp (VCNamePrefixesProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_NAME_PREFIX)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (strcasecomp (VCNameSuffixesProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_NAME_SUFFIX)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (strcasecomp (VCAdditionalNamesProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_MIDDLE_NAME)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (strcasecomp (VCMailerProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_MAILER)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (strcasecomp (VCTimeZoneProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_TZ)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (strcasecomp (VCGeoProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_GEO)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (strcasecomp (VCBusinessRoleProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_ROLE)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (strcasecomp (VCLogoProp, vObjectName(o)) == 0) { - VObject* urlProp = isAPropertyOf(o, VCURLProp); - if (urlProp) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_LOGO)); - /* format the value string to the url */ - value = fakeCString (vObjectUStringZValue(o)); - if (value) - url = PR_smprintf ("<IMG SRC = ""%s""", value); - XP_FREEIF (value); - goto DOWRITE; - } - } - - if (strcasecomp (VCAgentProp, vObjectName(o)) == 0) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_SECRETARY)); - goto DOWRITE; - } - - if (strcasecomp (VCLastRevisedProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_REVISION)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (strcasecomp (VCPronunciationProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_SOUND)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - - if (strcasecomp (VCVersionProp, vObjectName(o)) == 0) { - if (VALUE_TYPE(o)) { - attribName = XP_STRDUP (XP_GetString (MK_LDAP_VERSION)); - value = fakeCString (vObjectUStringZValue(o)); - goto DOWRITE; - } - } - - if (!attribName) - return 0; - - DOWRITE: - OutputTableRowOrData(obj, TRUE, FALSE, "LEFT", "TOP", NULL, NULL); - OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", NULL, NULL); - if (attribName) { - OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", NULL, NULL); - status = WriteAttribute (obj, attribName); - XP_FREE (attribName); - OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - } - - if (value) { - OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", NULL, NULL); - status = WriteValue (obj, value); - XP_FREE (value); - OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - } - - if (url) { - OutputTableRowOrData (obj, FALSE, FALSE, "LEFT", "TOP", NULL, NULL); - status = WriteValue (obj, url); - XP_FREE (url); - OutputTableRowOrData (obj, FALSE, TRUE, NULL, NULL, NULL, NULL); - } - OutputTableRowOrData(obj, TRUE, TRUE, NULL, NULL, NULL, NULL); - } - - if (status < 0) return status; - - return 0; -} - - -static int WriteOutVCardProperties (MimeObject *obj, VObject* v, int* numEmail) -{ - int status = 0; - VObjectIterator t; - VObject *eachProp; - - WriteOutEachVCardProperty (obj, v, numEmail); - initPropIterator(&t,v); - while (moreIteration(&t) && status >= 0) - { - eachProp = nextVObject(&t); - status = WriteOutVCardProperties (obj, eachProp, numEmail); - } - - if (status < 0) return status; - - return 0; -} - -static int WriteLineToStream (MimeObject *obj, const char *line) -{ - int status = 0; - char *htmlLine; - int htmlLen = XP_STRLEN(line) + XP_STRLEN("<DT></DT>") + 1;; - - htmlLine = (char *) XP_ALLOC (htmlLen); - if (htmlLine) - { - htmlLine[0] = '\0'; - XP_STRCAT (htmlLine, "<DT>"); - XP_STRCAT (htmlLine, line); - XP_STRCAT (htmlLine, "</DT>"); - status = MimeObject_write(obj, htmlLine, XP_STRLEN(htmlLine), TRUE); -#ifdef DEBUG_mwatkins - if (XP_STRLEN (htmlLine) < 500) - XP_Trace("%s%c", htmlLine, '\n'); -#endif - XP_FREE ((void*) htmlLine); - } - else - status = MK_OUT_OF_MEMORY; - - return status; -} - -static int WriteAttribute (MimeObject *obj, const char *attrib) -{ - int status = 0; - OutputFont(obj, FALSE, "-1", NULL); - status = WriteLineToStream (obj, attrib); - OutputFont(obj, TRUE, NULL, NULL); - return status; -} - - -static int WriteValue (MimeObject *obj, const char *value) -{ - int status = 0; - OutputFont(obj, FALSE, "-1", NULL); - status = WriteLineToStream (obj, value); - OutputFont(obj, TRUE, NULL, NULL); - return status; -} - - diff --git a/mozilla/lib/libmime/mimevcrd.h b/mozilla/lib/libmime/mimevcrd.h deleted file mode 100644 index 9f245d577ac..00000000000 --- a/mozilla/lib/libmime/mimevcrd.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* mimevcrd.h --- definition of the MimeInlineTextVCard class (see mimei.h) - */ - -#ifndef _MIMEVCRD_H_ -#define _MIMEVCRD_H_ - -#include "mimetext.h" - -/* The MimeInlineTextHTML class implements the text/x-vcard and (maybe? - someday?) the application/directory MIME content types. - */ - -typedef struct MimeInlineTextVCardClass MimeInlineTextVCardClass; -typedef struct MimeInlineTextVCard MimeInlineTextVCard; - -struct MimeInlineTextVCardClass { - MimeInlineTextClass text; - char* vCardString; -}; - -extern MimeInlineTextVCardClass mimeInlineTextVCardClass; - -struct MimeInlineTextVCard { - MimeInlineText text; -}; - -#endif /* _MIMEVCRD_H_ */ diff --git a/mozilla/lib/libmisc/Makefile b/mozilla/lib/libmisc/Makefile deleted file mode 100644 index 8a0c1ab9b3c..00000000000 --- a/mozilla/lib/libmisc/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../.. - -MODULE = misc -LIBRARY_NAME = misc - -CSRCS = \ - glhist.c \ - undo.c \ - shist.c \ - dirprefs.c \ - $(NULL) - -REQUIRES = net msg js dbm nspr img util layer pref ldap security privacy - -include $(DEPTH)/config/config.mk - -ifdef MOZ_MAIL_NEWS -CSRCS += mime.c -else -ifdef MOZ_MAIL_COMPOSE -CSRCS += mime.c -endif -endif - -include $(DEPTH)/config/rules.mk - -DEFINES += -DHAS_FE - -$(LIBRARY): $(OBJS) diff --git a/mozilla/lib/libmisc/Makefile.in b/mozilla/lib/libmisc/Makefile.in deleted file mode 100644 index 7748889ffc1..00000000000 --- a/mozilla/lib/libmisc/Makefile.in +++ /dev/null @@ -1,57 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = misc -LIBRARY_NAME = misc - -CSRCS = \ - glhist.c \ - undo.c \ - shist.c \ - dirprefs.c \ - $(NULL) - -REQUIRES = net msg js dbm img util layer pref ldap security privacy - -include $(topsrcdir)/config/config.mk - -ifdef MOZ_MAIL_NEWS -CSRCS += mime.c -else -ifdef MOZ_MAIL_COMPOSE -CSRCS += mime.c -endif -endif - -include $(topsrcdir)/config/rules.mk - -DEFINES += -DHAS_FE - -$(LIBRARY): $(OBJS) diff --git a/mozilla/lib/libmisc/dirprefs.c b/mozilla/lib/libmisc/dirprefs.c deleted file mode 100644 index eacfa664d71..00000000000 --- a/mozilla/lib/libmisc/dirprefs.c +++ /dev/null @@ -1,2654 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* dirprefs.c -- directory server preferences */ -#include "rosetta.h" -#include "xp.h" - -#include "xp_mcom.h" -#include "xpgetstr.h" -#include "dirprefs.h" -#include "prefapi.h" -#include "libi18n.h" -#ifdef MOZ_LDAP - #include "ldap.h" -#else - #define LDAP_PORT 389 - #define LDAPS_PORT 636 -#endif - -#ifndef MOZ_MAIL_NEWS - -int DIR_GetLdapServers(XP_List *wholeList, XP_List *subList) -{ - return -1; -} - -const char **DIR_GetAttributeStrings (DIR_Server *server, DIR_AttributeId id) -{ - return 0 ; -} - -const char *DIR_GetFirstAttributeString (DIR_Server *server, DIR_AttributeId id) -{ - return 0 ; -} - -#else - -#ifndef MOZADDRSTANDALONE - -extern int MK_OUT_OF_MEMORY; -extern int MK_ADDR_PAB; - -extern int MK_LDAP_COMMON_NAME; -extern int MK_LDAP_GIVEN_NAME; -extern int MK_LDAP_SURNAME; -extern int MK_LDAP_EMAIL_ADDRESS; -extern int MK_LDAP_PHONE_NUMBER; -extern int MK_LDAP_ORGANIZATION; -extern int MK_LDAP_ORG_UNIT; -extern int MK_LDAP_LOCALITY; -extern int MK_LDAP_STREET; -extern int MK_LDAP_CUSTOM1; -extern int MK_LDAP_CUSTOM2; -extern int MK_LDAP_CUSTOM3; -extern int MK_LDAP_CUSTOM4; -extern int MK_LDAP_CUSTOM5; -extern int MK_LDAP_DESCRIPTION; -extern int MK_LDAP_EMPLOYEE_TYPE; -extern int MK_LDAP_FAX_NUMBER; -extern int MK_LDAP_MANAGER; -extern int MK_LDAP_OBJECT_CLASS; -extern int MK_LDAP_POSTAL_ADDRESS; -extern int MK_LDAP_POSTAL_CODE; -extern int MK_LDAP_SECRETARY; -extern int MK_LDAP_TITLE; -extern int MK_LDAP_CAR_LICENSE; -extern int MK_LDAP_BUSINESS_CAT; -extern int MK_LDAP_DEPT_NUMBER; -extern int MK_LDAP_REPL_CANT_SYNC_REPLICA; - -#else - -#define MK_OUT_OF_MEMORY -1; - -#endif /* !MOZADDRSTANDALONE */ - -/***************************************************************************** - * Private structs and stuff - */ - -/* DIR_Server.flags */ -#define DIR_AUTO_COMPLETE_ENABLED 0x00000001 -#define DIR_ENABLE_AUTH 0x00000002 -#define DIR_SAVE_PASSWORD 0x00000004 -#define DIR_DEFEAT_UTF8 0x00000008 -#define DIR_IS_SECURE 0x00000010 -#define DIR_SAVE_RESULTS 0x00000020 -#define DIR_EFFICIENT_WILDCARDS 0x00000040 - -/* DIR_Server.customAttributes is a list of DIR_Attribute structures */ -typedef struct DIR_Attribute -{ - DIR_AttributeId id; - char *prettyName; - char **attrNames; -} DIR_Attribute; - -/* Our internal view of a default attribute is a resourceId for the pretty - * name and the real attribute name. These are catenated to create a string - * of the form "Pretty Name:attrname" - */ -typedef struct DIR_DefaultAttribute -{ - DIR_AttributeId id; - int resourceId; - char *name; -} DIR_DefaultAttribute; - -/* DIR_Filter.flags */ -#define DIR_F_SUBST_STARS_FOR_SPACES 0x00000001 -#define DIR_F_REPEAT_FILTER_FOR_TOKENS 0x00000002 - -/* DIR_Server.filters is a list of DIR_Filter structures */ -typedef struct DIR_Filter -{ - char *string; - uint32 flags; -} DIR_Filter; - -/* Default settings for site-configurable prefs */ -#define kDefaultTokenSeps " ,." -#define kDefaultSubstStarsForSpaces TRUE -#define kDefaultRepeatFilterForTokens TRUE -#define kDefaultEfficientWildcards TRUE -#define kDefaultFilter "(cn=*%s*)" -#define kDefaultEfficientFilter "(|(givenname=%s)(sn=%s))" -#define kDefaultStopOnHit TRUE -#define kDefaultMaxHits 100 -#define kDefaultIsOffline TRUE -#define kDefaultEnableAuth FALSE -#define kDefaultSavePassword FALSE -#define kDefaultUtf8Disabled FALSE -#define kDefaultLdapPublicDirectory FALSE - -#define kDefaultAutoCompleteEnabled FALSE -#define kDefaultAutoCompleteStyle acsGivenAndSurname - -#define kDefaultReplicaEnabled FALSE -#define kDefaultReplicaFileName NULL -#define kDefaultReplicaDataVersion NULL -#define kDefaultReplicaDescription NULL -#define kDefaultReplicaChangeNumber -1 -#define kDefaultReplicaFilter "(objectclass=*)" -#define kDefaultReplicaExcludedAttributes NULL - -#define kLdapServersPrefName "network.hosts.ldap_servers" - -const char *DIR_GetAttributeName (DIR_Server *server, DIR_AttributeId id); -static DIR_DefaultAttribute *DIR_GetDefaultAttribute (DIR_AttributeId id); -void DIR_SetFileName(char** filename, const char* leafName); - - -/***************************************************************************** - * Functions for creating the new back end managed DIR_Server list. - */ - -static XP_List * dir_ServerList = NULL; - -XP_List * DIR_GetDirServers() -{ - const char * msg = "abook.nab"; - if (!dir_ServerList) - { - /* we need to build the DIR_Server list */ - dir_ServerList = XP_ListNew(); - - PREF_SetDefaultCharPref("browser.addressbook_location",msg); - - DIR_GetServerPreferences (&dir_ServerList, msg); -/* char * ldapPref = PR_smprintf("ldap_%d.end_of_directories", kCurrentListVersion); - if (ldapPref) - PREF_RegisterCallback(ldapPref, DirServerListChanged, NULL); - XP_FREEIF (ldapPref); */ - } - return dir_ServerList; -} - -int DIR_ShutDown() /* FEs should call this when the app is shutting down. It frees all DIR_Servers regardless of ref count values! */ -{ - int i = 1; - if (dir_ServerList) - { - for (i = 1; i <= XP_ListCount(dir_ServerList); i++) - DIR_DeleteServer(XP_ListGetObjectNum (dir_ServerList, i)); - XP_ListDestroy (dir_ServerList); - } - - return 0; -} - -int DIR_DecrementServerRefCount (DIR_Server *server) -{ - XP_ASSERT(server); - if (server && --server->refCount <= 0) - return DIR_DeleteServer(server); - return 0; -} - -int DIR_IncrementServerRefCount (DIR_Server *server) -{ - XP_ASSERT(server); - if (server) - server->refCount++; - return 0; -} - -/***************************************************************************** - * Functions for creating DIR_Servers - */ - -int DIR_InitServer (DIR_Server *server) -{ - XP_ASSERT(server); - if (server) - { - XP_BZERO(server, sizeof(DIR_Server)); - server->saveResults = TRUE; - server->efficientWildcards = kDefaultEfficientWildcards; - server->port = LDAP_PORT; - server->maxHits = kDefaultMaxHits; - server->isOffline = kDefaultIsOffline; - server->refCount = 1; - } - return 0; -} - - -/***************************************************************************** - * Functions for cloning DIR_Servers - */ - -static DIR_Attribute *DIR_CopyAttribute (DIR_Attribute *inAttribute) -{ - DIR_Attribute *outAttribute = (DIR_Attribute*) XP_ALLOC(sizeof(DIR_Attribute)); - if (outAttribute) - { - int count = 0; - outAttribute->id = inAttribute->id; - outAttribute->prettyName = XP_STRDUP(inAttribute->prettyName); - while (inAttribute->attrNames[count]) - count++; - outAttribute->attrNames = (char**) XP_ALLOC((count + 1) * sizeof(char*)); - if (outAttribute->attrNames) - { - int i; - for (i = 0; i < count; i++) - outAttribute->attrNames[i] = XP_STRDUP(inAttribute->attrNames[i]); - outAttribute->attrNames[i] = NULL; - } - } - return outAttribute; -} - - -static DIR_Filter *DIR_CopyFilter (DIR_Filter *inFilter) -{ - DIR_Filter *outFilter = (DIR_Filter*) XP_ALLOC(sizeof(DIR_Filter)); - if (outFilter) - { - outFilter->flags = inFilter->flags; - outFilter->string = XP_STRDUP(inFilter->string); - } - return outFilter; -} - - -static int dir_CopyTokenList (char **inList, int inCount, char ***outList, int *outCount) -{ - int status = 0; - if (0 != inCount && NULL != inList) - { - *outList = (char**) XP_ALLOC(inCount * sizeof(char*)); - if (*outList) - { - int i; - for (i = 0; i < inCount; i++) - (*outList)[i] = XP_STRDUP (inList[i]); - *outCount = inCount; - } - else - status = MK_OUT_OF_MEMORY; - } - return status; -} - - -static DIR_ReplicationInfo *dir_CopyReplicationInfo (DIR_ReplicationInfo *inInfo) -{ - DIR_ReplicationInfo *outInfo = (DIR_ReplicationInfo*) XP_CALLOC (1, sizeof(DIR_ReplicationInfo)); - if (outInfo) - { - outInfo->lastChangeNumber = inInfo->lastChangeNumber; - if (inInfo->description) - outInfo->description = XP_STRDUP (inInfo->description); - if (inInfo->fileName) - outInfo->fileName = XP_STRDUP (inInfo->fileName); - if (inInfo->dataVersion) - outInfo->dataVersion = XP_STRDUP (inInfo->dataVersion); - if (inInfo->filter) - outInfo->filter = XP_STRDUP (inInfo->filter); - dir_CopyTokenList (inInfo->excludedAttributes, inInfo->excludedAttributesCount, - &outInfo->excludedAttributes, &outInfo->excludedAttributesCount); - } - return outInfo; -} - -int DIR_CopyServer (DIR_Server *in, DIR_Server **out) -{ - int err = 0; - if (in) { - *out = XP_ALLOC(sizeof(DIR_Server)); - if (*out) - { - XP_BZERO (*out, sizeof(DIR_Server)); - - if (in->description) - { - (*out)->description = XP_STRDUP(in->description); - if (!(*out)->description) - err = MK_OUT_OF_MEMORY; - } - - if (in->serverName) - { - (*out)->serverName = XP_STRDUP(in->serverName); - if (!(*out)->serverName) - err = MK_OUT_OF_MEMORY; - } - - if (in->searchBase) - { - (*out)->searchBase = XP_STRDUP(in->searchBase); - if (!(*out)->searchBase) - err = MK_OUT_OF_MEMORY; - } - - if (in->fileName) - { - (*out)->fileName = XP_STRDUP(in->fileName); - if (!(*out)->fileName) - err = MK_OUT_OF_MEMORY; - } - - if (in->prefId) - { - (*out)->prefId = XP_STRDUP(in->prefId); - if (!(*out)->prefId) - err = MK_OUT_OF_MEMORY; - } - - (*out)->port = in->port; - (*out)->maxHits = in->maxHits; - (*out)->isSecure = in->isSecure; - (*out)->saveResults = in->saveResults; - (*out)->isOffline = in->isOffline; - (*out)->efficientWildcards = in->efficientWildcards; - (*out)->dirType = in->dirType; - - (*out)->flags = in->flags; - - (*out)->enableAuth = in->enableAuth; - (*out)->savePassword = in->savePassword; - if (in->authDn) - { - (*out)->authDn = XP_STRDUP (in->authDn); - if (!(*out)->authDn) - err = MK_OUT_OF_MEMORY; - } - if (in->password) - { - (*out)->password = XP_STRDUP (in->password); - if (!(*out)->password) - err = MK_OUT_OF_MEMORY; - } - - if (in->customAttributes) - { - (*out)->customAttributes = XP_ListNew(); - if ((*out)->customAttributes) - { - XP_List *list = in->customAttributes; - DIR_Attribute *attribute = NULL; - - while ((attribute = XP_ListNextObject (list)) != NULL) - { - DIR_Attribute *outAttr = DIR_CopyAttribute (attribute); - if (outAttr) - XP_ListAddObject ((*out)->customAttributes, outAttr); - else - err = MK_OUT_OF_MEMORY; - } - } - else - err = MK_OUT_OF_MEMORY; - } - - if (in->customFilters) - { - (*out)->customFilters = XP_ListNew(); - if ((*out)->customFilters) - { - XP_List *list = in->customFilters; - DIR_Filter *filter = NULL; - - while ((filter = XP_ListNextObject (list)) != NULL) - { - DIR_Filter *outFilter = DIR_CopyFilter (filter); - if (outFilter) - XP_ListAddObject ((*out)->customFilters, outFilter); - else - err = MK_OUT_OF_MEMORY; - } - } - else - err = MK_OUT_OF_MEMORY; - } - - if (in->replInfo) - (*out)->replInfo = dir_CopyReplicationInfo (in->replInfo); - - if (in->basicSearchAttributesCount > 0) - { - int bsaLength = in->basicSearchAttributesCount * sizeof(DIR_AttributeId); - (*out)->basicSearchAttributes = (DIR_AttributeId*) XP_ALLOC(bsaLength); - if ((*out)->basicSearchAttributes) - { - XP_MEMCPY ((*out)->basicSearchAttributes, in->basicSearchAttributes, bsaLength); - (*out)->basicSearchAttributesCount = in->basicSearchAttributesCount; - } - } - - dir_CopyTokenList (in->dnAttributes, in->dnAttributesCount, - &(*out)->dnAttributes, &(*out)->dnAttributesCount); - - dir_CopyTokenList (in->suppressedAttributes, in->suppressedAttributesCount, - &(*out)->suppressedAttributes, &(*out)->suppressedAttributesCount); - - if (in->customDisplayUrl) - (*out)->customDisplayUrl = XP_STRDUP (in->customDisplayUrl); - if (in->searchPairList) - (*out)->searchPairList = XP_STRDUP (in->searchPairList); - - (*out)->autoCompleteStyle = in->autoCompleteStyle; - - (*out)->refCount = 1; - } - else { - err = MK_OUT_OF_MEMORY; - (*out) = NULL; - } - } - else { - XP_ASSERT (0); - err = -1; - (*out) = NULL; - } - - return err; -} - -/***************************************************************************** - * Function for comparing DIR_Servers - */ - -XP_Bool DIR_AreServersSame (DIR_Server *first, DIR_Server *second) -{ - /* This function used to be written to assume that we only had one PAB so it - only checked the server type for PABs. If both were PABDirectories, then - it returned TRUE. Now that we support multiple address books, we need to - check type & file name for address books to test if they are the same */ - - XP_Bool result = FALSE; - - if (first && second) - { - /* assume for right now one personal address book type where offline is false */ - if ((first->dirType == PABDirectory) && (second->dirType == PABDirectory)) { - if ((first->isOffline == FALSE) && (second->isOffline == FALSE)) /* are they both really address books? */ - { - XP_ASSERT(first->fileName && second->fileName); - if (first->fileName && second->fileName) - if (XP_STRCASECMP(first->fileName, second->fileName) == 0) - return TRUE; - - return FALSE; - } - else { - XP_ASSERT (first->serverName && second->serverName); - if (first->serverName && second->serverName) - { - if (XP_STRCASECMP (first->serverName, second->serverName) == 0) - { - if (first->port == second->port) - { - /* allow for a null search base */ - if (first->searchBase == NULL && second->searchBase == NULL) - return TRUE; - /* otherwise check the strings */ - if (first->searchBase && second->searchBase) - { - if (XP_STRCASECMP (first->searchBase, second->searchBase) == 0) - { - return TRUE; - } - else - return FALSE; - } - else - return FALSE; - } - } - else - return FALSE; - } - } - } - - if (first->dirType != second->dirType) - return FALSE; - - /* otherwise check for ldap servers */ - XP_ASSERT (first->serverName && second->serverName); - if (first->serverName && second->serverName) - { - if (!XP_STRCASECMP (first->serverName, second->serverName)) - { - if (first->port == second->port) - { - /* allow for a null search base */ - if (first->searchBase == NULL && second->searchBase == NULL) - result = TRUE; - /* otherwise check the strings */ - if (first->searchBase && second->searchBase) - { - if (!XP_STRCASECMP (first->searchBase, second->searchBase)) - { - result = TRUE; - } - } - } - } - } - } - return result; -} - - -/***************************************************************************** - * Functions for destroying DIR_Servers - */ - -static void dir_DeleteTokenList (char **tokenList, int tokenListCount) -{ - int tokenIdx; - for (tokenIdx = 0; tokenIdx < tokenListCount; tokenIdx++) - XP_FREE(tokenList[tokenIdx]); - XP_FREE(tokenList); -} - - -static int DIR_DeleteFilter (DIR_Filter *filter) -{ - if (filter->string) - XP_FREE(filter->string); - XP_FREE(filter); - return 0; -} - - -static int DIR_DeleteAttribute (DIR_Attribute *attribute) -{ - int i = 0; - if (attribute->prettyName) - XP_FREE(attribute->prettyName); - if (attribute->attrNames) - { - while (attribute->attrNames[i]) - XP_FREE((char**)attribute->attrNames[i++]); - XP_FREE(attribute->attrNames); - } - XP_FREE(attribute); - return 0; -} - - -static void dir_DeleteReplicationInfo (DIR_Server *server) -{ - DIR_ReplicationInfo *info = NULL; - if (server && (info = server->replInfo) != NULL) - { - dir_DeleteTokenList (info->excludedAttributes, info->excludedAttributesCount); - - XP_FREEIF(info->description); - XP_FREEIF(info->fileName); - XP_FREEIF(info->dataVersion); - XP_FREEIF(info->filter); - XP_FREE(info); - } -} - -/* When the back end manages the server list, deleting a server just decrements - * its ref count, in the old world, we actually delete the server - */ -int DIR_DeleteServer (DIR_Server *server) -{ - if (server) - { - int i; - - XP_FREEIF (server->description); - XP_FREEIF (server->serverName); - XP_FREEIF (server->searchBase); - XP_FREEIF (server->fileName); - XP_FREEIF (server->lastSearchString); - XP_FREEIF (server->tokenSeps); - XP_FREEIF (server->authDn); - XP_FREEIF (server->password); - XP_FREEIF (server->prefId); - - if (server->customFilters) - { - for (i = 1; i <= XP_ListCount(server->customFilters); i++) - DIR_DeleteFilter ((DIR_Filter*) XP_ListGetObjectNum (server->customFilters, i)); - XP_ListDestroy (server->customFilters); - } - - if (server->customAttributes) - { - XP_List *list = server->customAttributes; - DIR_Attribute *walkAttrStruct = NULL; - while ((walkAttrStruct = XP_ListNextObject(list)) != NULL) - DIR_DeleteAttribute (walkAttrStruct); - XP_ListDestroy (server->customAttributes); - } - - if (server->suppressedAttributes) - dir_DeleteTokenList (server->suppressedAttributes, server->suppressedAttributesCount); - if (server->dnAttributes) - dir_DeleteTokenList (server->dnAttributes, server->dnAttributesCount); - XP_FREEIF (server->basicSearchAttributes); - if (server->replInfo) - dir_DeleteReplicationInfo (server); - - XP_FREEIF (server->customDisplayUrl); - XP_FREEIF (server->searchPairList); - - XP_FREE (server); - } - return 0; -} - -int DIR_DeleteServerList(XP_List *wholeList) -{ - int i; - if (wholeList) - { - for (i = 1; i <= XP_ListCount(wholeList); i++) - DIR_DeleteServer(XP_ListGetObjectNum (wholeList, i)); - XP_ListDestroy (wholeList); - } - return 0; -} - - -int DIR_CleanUpServerPreferences(XP_List *deletedList) -{ - /* In the new world order of DIR_Servers it has been decreed that to clean - * up a server you should set its DIR_CLEAR_SERVER flag. Then, release - * your ref count on the list or servers (if you have one) - */ - XP_ASSERT(FALSE); - return 0; -} - - -/***************************************************************************** - * Functions for retrieving subsets of the DIR_Server list - */ - -static int DIR_GetHtmlServers(XP_List *wholeList, XP_List *subList) -{ - int i; - if (wholeList && subList) - { - for (i = 1; i <= XP_ListCount(wholeList); i++) - { - DIR_Server *s = (DIR_Server*) XP_ListGetObjectNum (wholeList, i); - if (HTMLDirectory == s->dirType) - XP_ListAddObjectToEnd (subList, s); - } - return 0; - } - return -1; -} - -int DIR_GetPersonalAddressBooks (XP_List *wholeList, XP_List * subList) -{ - int i; - if (wholeList && subList) - { - for (i = 1; i <= XP_ListCount(wholeList); i++) - { - DIR_Server *s = (DIR_Server*) XP_ListGetObjectNum (wholeList, i); - if (PABDirectory == s->dirType) - XP_ListAddObjectToEnd (subList, s); - } - return 0; - } - return -1; -} - -int DIR_GetLdapServers(XP_List *wholeList, XP_List *subList) -{ - int i; - if (wholeList && subList) - { - for (i = 1; i <= XP_ListCount(wholeList); i++) - { - DIR_Server *s = (DIR_Server*) XP_ListGetObjectNum (wholeList, i); - if (LDAPDirectory == s->dirType) - XP_ListAddObjectToEnd (subList, s); - } - return 0; - } - return -1; -} - -int DIR_ReorderLdapServers(XP_List *wholeList) -{ - int status = 0; - int length = 0; - DIR_Server *s = NULL; - char *prefValue = NULL; - - XP_List *walkList = wholeList; - while (s = (DIR_Server*) XP_ListNextObject (walkList)) - { - length += XP_STRLEN (s->prefId) + 2; /* +2 for ", " */ - } - - prefValue = (char*) XP_ALLOC (length + 1); /* +1 for null term */ - if (prefValue) - { - *prefValue = '\0'; - walkList = wholeList; - while (s = (DIR_Server*) XP_ListNextObject (walkList)) - { - XP_STRCAT (prefValue, s->prefId); - XP_STRCAT (prefValue, ", "); - } - if (PREF_SetCharPref (kLdapServersPrefName, prefValue) < 0) - status = -1; /* not sure how to make a pref error into an mk error */ - XP_FREE(prefValue); - } - else - status = MK_OUT_OF_MEMORY; - - return status; -} - -int DIR_GetPersonalAddressBook(XP_List *wholeList, DIR_Server **pab) -{ - int i; - if (wholeList && pab) - { - *pab = NULL; - for (i = 1; i <= XP_ListCount(wholeList); i++) - { - DIR_Server *s = (DIR_Server*) XP_ListGetObjectNum (wholeList, i); - if ((PABDirectory == s->dirType) && (FALSE == s->isOffline)) - { - if (s->serverName) { - if (XP_STRLEN (s->serverName) == 0) { - *pab = s; - return 0; - } - } - if (s->serverName == NULL) { - *pab = s; - return 0; - } - } - } - } - return -1; -} - -int DIR_GetComposeNameCompletionAddressBook(XP_List *wholeList, DIR_Server **cab) -{ - int i; - if (wholeList && cab) - { - *cab = NULL; - for (i = 1; i <= XP_ListCount(wholeList); i++) - { - DIR_Server *s = (DIR_Server*) XP_ListGetObjectNum (wholeList, i); - if (PABDirectory == s->dirType) - { - *cab = s; - return 0; - } - } - } - return -1; -} - - -/***************************************************************************** - * Functions for managing JavaScript prefs for the DIR_Servers - */ - -#if !defined(MOZADDRSTANDALONE) - -static char *DIR_GetStringPref(const char *prefRoot, const char *prefLeaf, char *scratch, const char *defaultValue) -{ - int valueLength = 0; - char *value = NULL; - XP_STRCPY(scratch, prefRoot); - XP_STRCAT (scratch, prefLeaf); - - if (PREF_NOERROR == PREF_CopyCharPref(scratch, &value)) - { - /* unfortunately, there may be some prefs out there which look like this */ - if (!XP_STRCMP(value, "(null)")) - value = defaultValue ? XP_STRDUP(defaultValue) : NULL; - } - else - value = defaultValue ? XP_STRDUP(defaultValue) : NULL; - return value; -} - - -static int32 DIR_GetIntPref(const char *prefRoot, const char *prefLeaf, char *scratch, int32 defaultValue) -{ - int32 value; - XP_STRCPY(scratch, prefRoot); - if (PREF_NOERROR != PREF_GetIntPref(XP_STRCAT (scratch, prefLeaf), &value)) - value = defaultValue; - return value; -} - - -static XP_Bool DIR_GetBoolPref(const char *prefRoot, const char *prefLeaf, char *scratch, XP_Bool defaultValue) -{ - XP_Bool value; - XP_STRCPY(scratch, prefRoot); - if (PREF_NOERROR != PREF_GetBoolPref(XP_STRCAT (scratch, prefLeaf), &value)) - value = defaultValue; - return value; -} - - -int DIR_AttributeNameToId(const char *attrName, DIR_AttributeId *id) -{ - int status = 0; - - switch (attrName[0]) - { - case 'a': - if (!XP_STRCASECMP(attrName, "auth")) - *id = auth; - else - status = -1; - break; - - case 'c' : - if (!XP_STRCASECMP(attrName, "cn")) - *id = cn; - else if (!XP_STRNCASECMP(attrName, "custom", 6)) - { - switch (attrName[6]) - { - case '1': *id = custom1; break; - case '2': *id = custom2; break; - case '3': *id = custom3; break; - case '4': *id = custom4; break; - case '5': *id = custom5; break; - default: status = -1; - } - } - else - status = -1; - break; - case 'g': - if (!XP_STRCASECMP(attrName, "givenname")) - *id = givenname; - else - status = -1; - break; - case 'l': - if (!XP_STRCASECMP(attrName, "l")) - *id = l; - else - status = -1; - break; - case 'm': - if (!XP_STRCASECMP(attrName, "mail")) - *id = mail; - else - status = -1; - break; - case 'o': - if (!XP_STRCASECMP(attrName, "o")) - *id = o; - else if (!XP_STRCASECMP(attrName, "ou")) - *id = ou; - else - status = -1; - break; - case 's': - if (!XP_STRCASECMP(attrName, "street")) - *id = street; - else if (!XP_STRCASECMP(attrName, "sn")) - *id = sn; - else - status = -1; - break; - case 't': - if (!XP_STRCASECMP(attrName, "telephonenumber")) - *id = telephonenumber; - else - status = -1; - break; - default: - status = -1; - } - - return status; -} - - -static int DIR_AddCustomAttribute(DIR_Server *server, const char *attrName, char *jsAttr) -{ - int status = 0; - char *jsCompleteAttr = NULL; - char *jsAttrForTokenizing = jsAttr; - - DIR_AttributeId id; - status = DIR_AttributeNameToId (attrName, &id); - - /* If the string they gave us doesn't have a ':' in it, assume it's one or more - * attributes without a pretty name. So find the default pretty name, and generate - * a "complete" string to use for tokenizing. - */ - if (status == 0 && !XP_STRCHR(jsAttr, ':')) - { - const char *defaultPrettyName = DIR_GetAttributeName (server, id); - if (defaultPrettyName) - { - jsCompleteAttr = PR_smprintf ("%s:%s", defaultPrettyName, jsAttr); - if (jsCompleteAttr) - jsAttrForTokenizing = jsCompleteAttr; - else - status = MK_OUT_OF_MEMORY; - } - } - - if (status == 0) - { - char *scratchAttr = XP_STRDUP(jsAttrForTokenizing); - DIR_Attribute *attrStruct = (DIR_Attribute*) XP_ALLOC(sizeof(DIR_Attribute)); - if (!server->customAttributes) - server->customAttributes = XP_ListNew(); - - if (attrStruct && server->customAttributes && scratchAttr) - { - char *attrToken = NULL; - int attrCount = 0; - - XP_BZERO(attrStruct, sizeof(DIR_Attribute)); - - /* Try to pull out the pretty name into the struct */ - attrStruct->id = id; - attrStruct->prettyName = XP_STRDUP(XP_STRTOK(scratchAttr, ":")); - - /* Count up the attribute names */ - while ((attrToken = XP_STRTOK(NULL, ", ")) != NULL) - attrCount++; - - /* Pull the attribute names into the struct */ - XP_STRCPY(scratchAttr, jsAttrForTokenizing); - XP_STRTOK(scratchAttr, ":"); - attrStruct->attrNames = (char**) XP_ALLOC((attrCount + 1) * sizeof(char*)); - if (attrStruct->attrNames) - { - int i = 0; - while ((attrToken = XP_STRTOK(NULL, ", ")) != NULL) - attrStruct->attrNames[i++] = XP_STRDUP(attrToken); - attrStruct->attrNames[i] = NULL; /* null-terminate the array */ - } - - if (status == 0) - XP_ListAddObject (server->customAttributes, attrStruct); - else - DIR_DeleteAttribute (attrStruct); - - XP_FREE(scratchAttr); - } - else - status = MK_OUT_OF_MEMORY; - } - - if (jsCompleteAttr) - XP_FREE(jsCompleteAttr); - - return status; -} - -static int dir_CreateTokenListFromWholePref(const char *pref, char ***outList, int *outCount) -{ - int result = 0; - char *commaSeparatedList = NULL; - - if (PREF_NOERROR == PREF_CopyCharPref(pref, &commaSeparatedList) && commaSeparatedList) - { - char *tmpList = commaSeparatedList; - *outCount = 1; - while (*tmpList) - if (*tmpList++ == ',') - (*outCount)++; - - *outList = (char**) XP_ALLOC(*outCount * sizeof(char*)); - if (*outList) - { - int i; - char *token = XP_STRTOK(commaSeparatedList, ", "); - for (i = 0; i < *outCount; i++) - { - (*outList)[i] = XP_STRDUP(token); - token = XP_STRTOK(NULL, ", "); - } - } - else - result = MK_OUT_OF_MEMORY; - - XP_FREE (commaSeparatedList); - } - else - result = -1; - return result; -} - - -static int dir_CreateTokenListFromPref(const char *prefBase, const char *prefLeaf, char *scratch, char ***outList, int *outCount) -{ - XP_STRCPY (scratch, prefBase); - XP_STRCAT (scratch, prefLeaf); - - return dir_CreateTokenListFromWholePref(scratch, outList, outCount); -} - - -static int dir_ConvertTokenListToIdList(char **tokenList, int tokenCount, DIR_AttributeId **outList) -{ - *outList = (DIR_AttributeId*) XP_ALLOC(sizeof(DIR_AttributeId) * tokenCount); - if (*outList) - { - int i; - for (i = 0; i < tokenCount; i++) - DIR_AttributeNameToId (tokenList[i], &(*outList)[i]); - } - else - return MK_OUT_OF_MEMORY; - return 0; -} - - -static void dir_GetReplicationInfo(const char *prefName, DIR_Server *server, char *scratch) -{ - char *replPrefName; - XP_Bool arePrefsValid = FALSE; - - XP_ASSERT (server->replInfo == NULL); - - replPrefName = (char *) XP_ALLOC(128); - server->replInfo = (DIR_ReplicationInfo *) XP_CALLOC (1, sizeof (DIR_ReplicationInfo)); - if (server->replInfo && replPrefName) - { - XP_STRCPY(replPrefName, prefName); - XP_STRCAT(replPrefName, "replication."); - - if (DIR_GetBoolPref (replPrefName, "enabled", scratch, kDefaultReplicaEnabled)) - DIR_SetFlag (server, DIR_REPLICATION_ENABLED); - - server->replInfo->fileName = DIR_GetStringPref (replPrefName, "fileName", scratch, kDefaultReplicaFileName); - server->replInfo->dataVersion = DIR_GetStringPref (replPrefName, "dataVersion", scratch, kDefaultReplicaDataVersion); - - /* The file name and data version must be set or we ignore all of the - * replication prefs. - */ - if (server->replInfo->fileName && server->replInfo->dataVersion) - { - dir_CreateTokenListFromPref (replPrefName, "excludedAttributes", scratch, &server->replInfo->excludedAttributes, - &server->replInfo->excludedAttributesCount); - - server->replInfo->description = DIR_GetStringPref (replPrefName, "description", scratch, kDefaultReplicaDescription); - server->replInfo->filter = DIR_GetStringPref (replPrefName, "filter", scratch, kDefaultReplicaFilter); - server->replInfo->lastChangeNumber = DIR_GetIntPref (replPrefName, "lastChangeNumber", scratch, kDefaultReplicaChangeNumber); - - arePrefsValid = TRUE; - } - } - - if (!arePrefsValid) - { - if (server->replInfo) - { - XP_FREEIF(server->replInfo->fileName); - XP_FREEIF(server->replInfo->dataVersion); - } - XP_FREEIF(server->replInfo); - XP_FREEIF(replPrefName); - } -} - - -/* Called at startup-time to read whatever overrides the LDAP site administrator has - * done to the attribute names - */ -static int DIR_GetCustomAttributePrefs(const char *prefName, DIR_Server *server, char *scratch) -{ - char **tokenList = NULL; - char *childList = NULL; - XP_STRCPY(scratch, prefName); - - if (PREF_NOERROR == PREF_CreateChildList(XP_STRCAT(scratch, "attributes"), &childList)) - { - if (childList && childList[0]) - { - char *child = NULL; - int index = 0; - while ((child = PREF_NextChild (childList, &index)) != NULL) - { - char *jsValue = NULL; - if (PREF_NOERROR == PREF_CopyCharPref (child, &jsValue)) - { - if (jsValue && jsValue[0]) - { - char *attrName = child + XP_STRLEN(scratch) + 1; - DIR_AddCustomAttribute (server, attrName, jsValue); - } - XP_FREEIF(jsValue); - } - } - } - - XP_FREEIF(childList); - } - - /* The replicated attributes and basic search attributes can only be - * attributes which are in our predefined set (DIR_AttributeId) so - * store those in an array of IDs for more convenient access - */ - dir_GetReplicationInfo (prefName, server, scratch); - - if (0 == dir_CreateTokenListFromPref (prefName, "basicSearchAttributes", scratch, - &tokenList, &server->basicSearchAttributesCount)) - { - dir_ConvertTokenListToIdList (tokenList, server->basicSearchAttributesCount, - &server->basicSearchAttributes); - dir_DeleteTokenList (tokenList, server->basicSearchAttributesCount); - } - - /* The DN attributes and suppressed attributes can be attributes that - * we've never heard of, so they're stored by name, so we can match 'em - * as we get 'em from the server - */ - dir_CreateTokenListFromPref (prefName, "html.dnAttributes", scratch, - &server->dnAttributes, &server->dnAttributesCount); - dir_CreateTokenListFromPref (prefName, "html.excludedAttributes", scratch, - &server->suppressedAttributes, &server->suppressedAttributesCount); - - return 0; -} - - -/* Called at startup-time to read whatever overrides the LDAP site administrator has - * done to the filtering logic - */ -static int DIR_GetCustomFilterPrefs(const char *prefName, DIR_Server *server, char *scratch) -{ - int status = 0; - XP_Bool keepGoing = TRUE; - int filterNum = 1; - char *localScratch = XP_ALLOC(128); - if (!localScratch) - return MK_OUT_OF_MEMORY; - - while (keepGoing && !status) - { - char *childList = NULL; - - PR_snprintf (scratch, 128, "%sfilter%d", prefName, filterNum); - if (PREF_NOERROR == PREF_CreateChildList(scratch, &childList)) - { - if ('\0' != childList[0]) - { - DIR_Filter *filter = (DIR_Filter*) XP_ALLOC (sizeof(DIR_Filter)); - if (filter) - { - XP_Bool tempBool; - XP_BZERO(filter, sizeof(DIR_Filter)); - - /* Pull per-directory filter preferences out of JS values */ - if (1 == filterNum) - { - server->tokenSeps = DIR_GetStringPref (prefName, "wordSeparators", localScratch, kDefaultTokenSeps); - XP_STRCAT(scratch, "."); - } - - /* Pull per-filter preferences out of JS values */ - filter->string = DIR_GetStringPref (scratch, "string", localScratch, - server->efficientWildcards ? kDefaultFilter : kDefaultEfficientFilter); - tempBool = DIR_GetBoolPref (scratch, "repeatFilterForWords", localScratch, kDefaultRepeatFilterForTokens); - if (tempBool) - filter->flags |= DIR_F_REPEAT_FILTER_FOR_TOKENS; - tempBool = DIR_GetBoolPref (scratch, "substituteStarsForSpaces", localScratch, kDefaultSubstStarsForSpaces); - if (tempBool) - filter->flags |= DIR_F_SUBST_STARS_FOR_SPACES; - - /* Add resulting DIR_Filter to the list */ - if (!server->customFilters) - server->customFilters = XP_ListNew(); - if (server->customFilters) - XP_ListAddObject (server->customFilters, filter); - else - status = MK_OUT_OF_MEMORY; - } - else - status = MK_OUT_OF_MEMORY; - filterNum++; - } - else - keepGoing = FALSE; - XP_FREE(childList); - } - else - keepGoing = FALSE; - } - - XP_FREE(localScratch); - return status; -} - -/* This will convert from the old preference that was a path and filename */ -/* to a just a filename */ -static void DIR_ConvertServerFileName(DIR_Server* pServer) -{ - char* leafName = pServer->fileName; - char* newLeafName = NULL; -#if defined(XP_WIN) || defined(XP_OS2) - /* This is to allow users to share the same address book. - * It only works if the user specify a full path filename. - */ - if (! XP_FileIsFullPath(leafName)) - newLeafName = XP_STRRCHR (leafName, '\\'); -#else - newLeafName = XP_STRRCHR (leafName, '/'); -#endif - pServer->fileName = newLeafName ? XP_STRDUP(newLeafName + 1) : XP_STRDUP(leafName); - if (leafName) XP_FREE(leafName); -} - -/* This will generate a correct filename and then remove the path */ -void DIR_SetFileName(char** fileName, const char* leafName) -{ - char* tempName = WH_TempName(xpAddrBook, leafName); - char* nativeName = WH_FileName(tempName, xpAddrBook); - char* urlName = XP_PlatformFileToURL(nativeName); -#if defined(XP_WIN) || defined(XP_UNIX) || defined(XP_MAC) || defined(XP_OS2) - char* newLeafName = XP_STRRCHR (urlName + XP_STRLEN("file://"), '/'); - (*fileName) = newLeafName ? XP_STRDUP(newLeafName + 1) : XP_STRDUP(urlName + XP_STRLEN("file://")); -#else - (*fileName) = XP_STRDUP(urlName + XP_STRLEN("file://")); -#endif - if (urlName) XP_FREE(urlName); - if (nativeName) XP_FREE(nativeName); - if (tempName) XP_FREE(tempName); -} - -void DIR_SetServerFileName(DIR_Server *server, const char* leafName) -{ - DIR_SetFileName(&(server->fileName), leafName); -} - -/* This will reconstruct a correct filename including the path */ -void DIR_GetServerFileName(char** filename, const char* leafName) -{ -#ifdef XP_MAC - char* realLeafName; - char* nativeName; - char* urlName; - if (XP_STRCHR(leafName, ':') != NULL) - realLeafName = XP_STRRCHR(leafName, ':') + 1; /* makes sure that leafName is not a fullpath */ - else - realLeafName = leafName; - - nativeName = WH_FileName(realLeafName, xpAddrBookNew); - urlName = XP_PlatformFileToURL(nativeName); - (*filename) = XP_STRDUP(urlName + XP_STRLEN("file://")); - if (urlName) XP_FREE(urlName); -#elif defined(XP_WIN) - /* jefft -- Bug 73349. To allow users share same address book. - * This only works if user sepcified a full path name in his - * prefs.js - */ - char *nativeName = WH_FilePlatformName (leafName); - char *fullnativeName; - if (XP_FileIsFullPath(nativeName)) { - fullnativeName = nativeName; - nativeName = NULL; - } - else { - fullnativeName = WH_FileName(nativeName, xpAddrBookNew); - } - (*filename) = fullnativeName; -#else - char* nativeName = WH_FilePlatformName (leafName); - char* fullnativeName = WH_FileName(nativeName, xpAddrBookNew); - (*filename) = fullnativeName; -#endif - if (nativeName) XP_FREE(nativeName); -} - -static int DIR_GetPrefsFromBranch(XP_List **list, const char *pabFile, const char *branch) -{ - int32 numDirectories = 0; - int i = 0; - char *prefstring = NULL; - char *tempString = NULL; - int result = 0; - XP_Bool hasPAB = FALSE; - DIR_Server *pNewServer = NULL; - char *newfilename = NULL; - - if (*list) - DIR_DeleteServerList(*list); - - prefstring = (char *) XP_ALLOC(128); - tempString = (char *) XP_ALLOC(256); - - (*list) = XP_ListNew(); - /* get the preference for how many directories */ - if (prefstring && tempString && (*list) && branch && *branch) - { - char *numberOfDirs = PR_smprintf ("%s.number_of_directories", branch); - if (numberOfDirs) - PREF_GetIntPref(numberOfDirs, &numDirectories); - - for (i = 1; i <= numDirectories; i++) - { - pNewServer = (DIR_Server *) XP_ALLOC(sizeof(DIR_Server)); - if (pNewServer) - { - XP_Bool prefBool; - int prefInt; - - DIR_InitServer(pNewServer); - XP_SPRINTF(prefstring, "%s.directory%i.", branch, i); - - pNewServer->isSecure = DIR_GetBoolPref (prefstring, "isSecure", tempString, FALSE); - pNewServer->saveResults = DIR_GetBoolPref (prefstring, "saveResults", tempString, TRUE); - pNewServer->efficientWildcards = DIR_GetBoolPref (prefstring, "efficientWildcards", tempString, TRUE); - pNewServer->port = DIR_GetIntPref (prefstring, "port", tempString, pNewServer->isSecure ? LDAPS_PORT : LDAP_PORT); - if (pNewServer->port == 0) - pNewServer->port = pNewServer->isSecure ? LDAPS_PORT : LDAP_PORT; - pNewServer->maxHits = DIR_GetIntPref (prefstring, "maxHits", tempString, kDefaultMaxHits); - pNewServer->description = DIR_GetStringPref (prefstring, "description", tempString, ""); - pNewServer->serverName = DIR_GetStringPref (prefstring, "serverName", tempString, ""); - pNewServer->searchBase = DIR_GetStringPref (prefstring, "searchBase", tempString, ""); - if (!XP_STRCASECMP(pNewServer->serverName, "ldap.infospace.com") && !*pNewServer->searchBase) - { - /* 4.0 unfortunately shipped with the wrong searchbase for Infospace, so - * if we find Infospace, and their searchBase hasn't been set, make it right - * It's not legal to do this in all.js unless we rename the LDAP prefs tree (ugh) - */ - pNewServer->searchBase = XP_STRDUP ("c=US"); - PREF_SetCharPref (tempString, "c=US"); - } - - pNewServer->dirType = (DirectoryType)DIR_GetIntPref (prefstring, "dirType", tempString, (int) LDAPDirectory); - if (pNewServer->dirType == PABDirectory) - { - hasPAB = TRUE; - /* make sure there is a true PAB */ - if (XP_STRLEN (pNewServer->serverName) == 0) - pNewServer->isOffline = FALSE; - pNewServer->saveResults = TRUE; /* never let someone delete their PAB this way */ - } - - pNewServer->fileName = DIR_GetStringPref (prefstring, "filename", tempString, ""); - if (!pNewServer->fileName || !*(pNewServer->fileName)) - { - if (pNewServer->dirType != PABDirectory) - DIR_SetServerFileName (pNewServer, pNewServer->serverName); - else - { - XP_FREEIF(pNewServer->fileName); - pNewServer->fileName = XP_STRDUP (pabFile); - } - } -#if defined(XP_WIN) || defined(XP_UNIX) || defined(XP_MAC) || defined(XP_OS2) - DIR_ConvertServerFileName(pNewServer); -#endif - pNewServer->lastSearchString = DIR_GetStringPref (prefstring, "searchString", tempString, ""); - pNewServer->isOffline = DIR_GetBoolPref (prefstring, "isOffline", tempString, kDefaultIsOffline); - - /* This is where site-configurable attributes and filters are read from JavaScript */ - DIR_GetCustomAttributePrefs (prefstring, pNewServer, tempString); - DIR_GetCustomFilterPrefs (prefstring, pNewServer, tempString); - - /* Get authentication prefs */ - pNewServer->enableAuth = DIR_GetBoolPref (prefstring, "enableAuth", tempString, kDefaultEnableAuth); - pNewServer->authDn = DIR_GetStringPref (prefstring, "authDn", tempString, NULL); - pNewServer->savePassword = DIR_GetBoolPref (prefstring, "savePassword", tempString, kDefaultSavePassword); - if (pNewServer->savePassword) - pNewServer->password = DIR_GetStringPref (prefstring, "password", tempString, ""); - - prefBool = DIR_GetBoolPref (prefstring, "autoComplete.enabled", tempString, kDefaultAutoCompleteEnabled); - DIR_ForceFlag (pNewServer, DIR_AUTO_COMPLETE_ENABLED, prefBool); - prefInt = DIR_GetIntPref (prefstring, "autoComplete.style", tempString, kDefaultAutoCompleteStyle); - pNewServer->autoCompleteStyle = (DIR_AutoCompleteStyle) prefInt; - - prefBool = DIR_GetBoolPref (prefstring, "utf8Disabled", tempString, kDefaultUtf8Disabled); - DIR_ForceFlag (pNewServer, DIR_UTF8_DISABLED, prefBool); - - prefBool = DIR_GetBoolPref (prefstring, "ldapPublicDirectory", tempString, kDefaultLdapPublicDirectory); - DIR_ForceFlag (pNewServer, DIR_LDAP_PUBLIC_DIRECTORY, prefBool); - DIR_ForceFlag (pNewServer, DIR_LDAP_ROOTDSE_PARSED, prefBool); - - pNewServer->customDisplayUrl = DIR_GetStringPref (prefstring, "customDisplayUrl", tempString, ""); - - XP_ListAddObjectToEnd((*list), pNewServer); - } - } - - XP_FREEIF(numberOfDirs); - - /* all.js should have filled this stuff in */ - XP_ASSERT(hasPAB); - XP_ASSERT(numDirectories != 0); - } - else - result = -1; - - XP_FREEIF (prefstring); - XP_FREEIF (tempString); - - return result; -} - - -int DIR_GetServerPreferences(XP_List **list, const char* pabFile) -{ - int err = 0; - XP_List *oldList = NULL; - XP_List *newList = NULL; - char *oldChildren = NULL; - - int32 listVersion = -1; - XP_Bool userHasOldPrefs = FALSE; - - if (PREF_NOERROR == PREF_GetIntPref ("ldapList.version", &listVersion)) - userHasOldPrefs = (kCurrentListVersion > listVersion); - else - userHasOldPrefs = TRUE; - - /* Look to see if there's an old-style "directories" tree in prefs */ - if (PREF_NOERROR == PREF_CreateChildList ("directories", &oldChildren)) - { - if (oldChildren) - { - if (XP_STRLEN(oldChildren)) - { - if (userHasOldPrefs) - err = DIR_GetPrefsFromBranch (&oldList, pabFile, "directories"); - PREF_DeleteBranch ("directories"); - } - XP_FREEIF(oldChildren); - } - } - /* Look to see if there's an old-style "ldap" tree in prefs */ - else if (PREF_NOERROR == PREF_CreateChildList ("ldap", &oldChildren)) - { - if (oldChildren) - { - if (XP_STRLEN(oldChildren)) - { - if (userHasOldPrefs) - err = DIR_GetPrefsFromBranch (&oldList, pabFile, "ldap"); - PREF_DeleteBranch ("ldap"); - } - XP_FREEIF(oldChildren); - } - } - - /* Find the new-style "ldap_1" tree in prefs */ - DIR_GetPrefsFromBranch(&newList, pabFile, "ldap_1"); - - if (oldList && newList) - { - /* Merge the new tree onto the old tree, new on top, unique old at bottom */ - DIR_Server *oldServer; - XP_List *walkOldList = oldList; - - while (NULL != (oldServer = XP_ListNextObject(walkOldList))) - { - XP_Bool addOldServer = TRUE; - DIR_Server *newServer; - XP_List *walkNewList = newList; - - while (NULL != (newServer = XP_ListNextObject(walkNewList)) && addOldServer) - { - if (DIR_AreServersSame(oldServer, newServer)) - addOldServer = FALSE; /* don't add servers which are in the new list */ - else if (PABDirectory == oldServer->dirType) - addOldServer = FALSE; /* don't need the old PAB; there's already one in ALL.JS */ - else if (!XP_STRCMP(oldServer->serverName, "ldap-trace.fedex.com")) - addOldServer = FALSE; - } - - if (addOldServer) - { - DIR_Server *copyOfOldServer; - DIR_CopyServer(oldServer, &copyOfOldServer); - XP_ListAddObjectToEnd(newList, copyOfOldServer); - } - } - - /* Delete the list of old-style prefs */ - DIR_DeleteServerList (oldList); - - /* Write the new/merged list so we get it next time we ask */ - DIR_SaveServerPreferences (newList); - } - - PREF_SetIntPref ("ldapList.version", kCurrentListVersion); - - *list = newList; - return err; -} - - -static void DIR_ClearPrefBranch(const char *branch) -{ - /* This little function provides a way to delete a prefs object but still - * allow reassignment of that object later. - */ - char *recreateBranch = NULL; - - PREF_DeleteBranch (branch); - recreateBranch = PR_smprintf("pref_inittree(\"%s\")", branch); - if (recreateBranch) - { - PREF_QuietEvaluateJSBuffer (recreateBranch, XP_STRLEN(recreateBranch)); - XP_FREE(recreateBranch); - } -} - - -static void DIR_ClearIntPref (const char *pref) -{ - int32 oldDefault; - int prefErr = PREF_GetDefaultIntPref (pref, &oldDefault); - DIR_ClearPrefBranch (pref); - if (prefErr >= 0) - PREF_SetDefaultIntPref (pref, oldDefault); -} - - -static void DIR_ClearStringPref (const char *pref) -{ - char *oldDefault = NULL; - int prefErr = PREF_CopyDefaultCharPref (pref, &oldDefault); - DIR_ClearPrefBranch (pref); - if (prefErr >= 0) - PREF_SetDefaultCharPref (pref, oldDefault); - XP_FREEIF(oldDefault); -} - - -static void DIR_ClearBoolPref (const char *pref) -{ - XP_Bool oldDefault; - int prefErr = PREF_GetDefaultBoolPref (pref, &oldDefault); - DIR_ClearPrefBranch (pref); - if (prefErr >= 0) - PREF_SetDefaultBoolPref (pref, oldDefault); -} - - -static void DIR_SetStringPref (const char *prefRoot, const char *prefLeaf, char *scratch, const char *value, const char *defaultValue) -{ - char *defaultPref = NULL; - int prefErr = PREF_NOERROR; - - XP_STRCPY(scratch, prefRoot); - XP_STRCAT (scratch, prefLeaf); - - if (PREF_NOERROR == PREF_CopyDefaultCharPref (scratch, &defaultPref)) - { - /* If there's a default pref, just set ours in and let libpref worry - * about potential defaults in all.js - */ - if (value) /* added this check to make sure we have a value before we try to set it..*/ - prefErr = PREF_SetCharPref (scratch, value); - else - DIR_ClearStringPref(scratch); - - XP_FREE(defaultPref); - } - else - { - /* If there's no default pref, look for a user pref, and only set our value in - * if the user pref is different than one of them. - */ - char *userPref = NULL; - if (PREF_NOERROR == PREF_CopyCharPref (scratch, &userPref)) - { - if (value && (defaultValue ? XP_STRCASECMP(value, defaultValue) : value != defaultValue)) - prefErr = PREF_SetCharPref (scratch, value); - else - DIR_ClearStringPref (scratch); - } - else - { - if (value && (defaultValue ? XP_STRCASECMP(value, defaultValue) : value != defaultValue)) - prefErr = PREF_SetCharPref (scratch, value); - } - } - - XP_ASSERT(prefErr >= 0); -} - - -static void DIR_SetIntPref (const char *prefRoot, const char *prefLeaf, char *scratch, int32 value, int32 defaultValue) -{ - int32 defaultPref; - int prefErr = 0; - - XP_STRCPY(scratch, prefRoot); - XP_STRCAT (scratch, prefLeaf); - - if (PREF_NOERROR == PREF_GetDefaultIntPref (scratch, &defaultPref)) - { - /* solve the problem where reordering user prefs must override default prefs */ - PREF_SetIntPref (scratch, value); - } - else - { - int32 userPref; - if (PREF_NOERROR == PREF_GetIntPref (scratch, &userPref)) - { - if (value != defaultValue) - prefErr = PREF_SetIntPref(scratch, value); - else - DIR_ClearIntPref (scratch); - } - else - { - if (value != defaultValue) - prefErr = PREF_SetIntPref (scratch, value); - } - } - - XP_ASSERT(prefErr >= 0); -} - - -static void DIR_SetBoolPref (const char *prefRoot, const char *prefLeaf, char *scratch, XP_Bool value, XP_Bool defaultValue) -{ - XP_Bool defaultPref; - int prefErr = PREF_NOERROR; - - XP_STRCPY(scratch, prefRoot); - XP_STRCAT (scratch, prefLeaf); - - if (PREF_NOERROR == PREF_GetDefaultBoolPref (scratch, &defaultPref)) - { - /* solve the problem where reordering user prefs must override default prefs */ - prefErr = PREF_SetBoolPref (scratch, value); - } - else - { - XP_Bool userPref; - if (PREF_NOERROR == PREF_GetBoolPref (scratch, &userPref)) - { - if (value != defaultValue) - prefErr = PREF_SetBoolPref(scratch, value); - else - DIR_ClearBoolPref (scratch); - } - else - { - if (value != defaultValue) - prefErr = PREF_SetBoolPref (scratch, value); - } - - } - - XP_ASSERT(prefErr >= 0); -} - - -static int DIR_ConvertAttributeToPrefsString (DIR_Attribute *attrib, char **ppPrefsString) -{ - int err = 0; - - /* Compute size in bytes req'd for prefs string */ - int length = XP_STRLEN(attrib->prettyName); - int i = 0; - while (attrib->attrNames[i]) - { - length += XP_STRLEN(attrib->attrNames[i]) + 1; /* +1 for comma separator */ - i++; - } - length += 1; /* +1 for colon */ - - /* Allocate prefs string */ - *ppPrefsString = (char*) XP_ALLOC(length + 1); /* +1 for null term */ - - /* Unravel attrib struct back out into prefs */ - if (*ppPrefsString) - { - int j = 0; - XP_STRCPY (*ppPrefsString, attrib->prettyName); - XP_STRCAT (*ppPrefsString, ":"); - while (attrib->attrNames[j]) - { - XP_STRCAT (*ppPrefsString, attrib->attrNames[j]); - if (j + 1 < i) - XP_STRCAT (*ppPrefsString, ","); - j++; - } - } - else - err = MK_OUT_OF_MEMORY; - - return err; -} - - -static int DIR_SaveOneCustomAttribute (const char *prefRoot, char *scratch, DIR_Server *server, DIR_AttributeId id) -{ - int err; - - const char *name = DIR_GetDefaultAttribute (id)->name; - err = 0; - - if (server->customAttributes) - { - DIR_Attribute *attrib = NULL; - XP_List *walkList = server->customAttributes; - while ((attrib = XP_ListNextObject(walkList)) != NULL) - { - if (attrib->id == id) - { - char *jsString = NULL; - if (0 == DIR_ConvertAttributeToPrefsString(attrib, &jsString)) - { - DIR_SetStringPref (prefRoot, name, scratch, jsString, ""); - XP_FREE(jsString); - return err; - } - } - } - - } - - /* This server doesn't have a custom attribute for the requested ID - * so set it to the null string just in case there's an ALL.JS setting - * or had a previous user value - */ - DIR_SetStringPref (prefRoot, name, scratch, "", ""); - - return err; -} - - -static int DIR_SaveCustomAttributes (const char *prefRoot, char *scratch, DIR_Server *server) -{ - int err; - char *localScratch = (char*) XP_ALLOC(256); - err = 0; - - XP_STRCPY (scratch, prefRoot); - XP_STRCAT (scratch, "attributes."); - if (localScratch) - { - DIR_SaveOneCustomAttribute (scratch, localScratch, server, cn); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, givenname); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, sn); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, mail); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, telephonenumber); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, o); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, ou); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, l); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, street); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, custom1); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, custom2); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, custom3); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, custom4); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, custom5); - DIR_SaveOneCustomAttribute (scratch, localScratch, server, auth); - XP_FREE(localScratch); - } - else - err = MK_OUT_OF_MEMORY; - - return err; -} - - -static int DIR_SaveCustomFilters (const char *prefRoot, char *scratch, DIR_Server *server) -{ - int err; - char *localScratch = (char*) XP_ALLOC(256); - err = 0; - - XP_STRCPY (scratch, prefRoot); - XP_STRCAT (scratch, "filter1."); - if (server->customFilters) - { - /* Save the custom filters into the JS prefs */ - DIR_Filter *filter = NULL; - XP_List *walkList = server->customFilters; - if (localScratch) - { - while ((filter = XP_ListNextObject(walkList)) != NULL) - { - DIR_SetBoolPref (scratch, "repeatFilterForWords", localScratch, - (filter->flags & DIR_F_REPEAT_FILTER_FOR_TOKENS) != 0, kDefaultRepeatFilterForTokens); - DIR_SetStringPref (scratch, "string", localScratch, filter->string, kDefaultFilter); - } - XP_FREE(localScratch); - localScratch = NULL; - } - else - err = MK_OUT_OF_MEMORY; - } - else - { - /* The DIR_Server object doesn't think it has any custom filters, - * so make sure the prefs settings are empty too - */ - DIR_SetBoolPref (scratch, "repeatFilterForWords", localScratch, - kDefaultRepeatFilterForTokens, kDefaultRepeatFilterForTokens); - DIR_SetStringPref (scratch, "string", localScratch, kDefaultFilter, kDefaultFilter); - } - - if (localScratch) /* memory leak! I'm adding this to patch up the leak. */ - XP_FREE(localScratch); - - return err; -} - - -static int dir_SaveReplicationInfo (const char *prefRoot, char *scratch, DIR_Server *server) -{ - int err = 0; - char *localScratch = (char*) XP_ALLOC(256); - if (!localScratch) - return MK_OUT_OF_MEMORY; - - XP_STRCPY (scratch, prefRoot); - XP_STRCAT (scratch, "replication."); - - DIR_SetBoolPref (scratch, "enabled", localScratch, DIR_TestFlag (server, DIR_REPLICATION_ENABLED), kDefaultReplicaEnabled); - - if (server->replInfo) - { - char *excludedList = NULL; - int i; - int excludedLength = 0; - for (i = 0; i < server->replInfo->excludedAttributesCount; i++) - excludedLength += XP_STRLEN (server->replInfo->excludedAttributes[i]) + 2; /* +2 for ", " */ - if (excludedLength) - { - excludedList = (char*) XP_ALLOC (excludedLength + 1); - if (excludedList) - { - excludedList[0] = '\0'; - for (i = 0; i < server->replInfo->excludedAttributesCount; i++) - { - XP_STRCAT (excludedList, server->replInfo->excludedAttributes[i]); - XP_STRCAT (excludedList, ", "); - } - } - else - err = MK_OUT_OF_MEMORY; - } - - DIR_SetStringPref (scratch, "excludedAttributes", localScratch, excludedList, kDefaultReplicaExcludedAttributes); - - DIR_SetStringPref (scratch, "description", localScratch, server->replInfo->description, kDefaultReplicaDescription); - DIR_SetStringPref (scratch, "fileName", localScratch, server->replInfo->fileName, kDefaultReplicaFileName); - DIR_SetStringPref (scratch, "filter", localScratch, server->replInfo->filter, kDefaultReplicaFilter); - DIR_SetIntPref (scratch, "lastChangeNumber", localScratch, server->replInfo->lastChangeNumber, kDefaultReplicaChangeNumber); - DIR_SetStringPref (scratch, "dataVersion", localScratch, server->replInfo->dataVersion, kDefaultReplicaDataVersion); - } - - XP_FREE(localScratch); - return err; -} - - -int DIR_SaveServerPreferences (XP_List *wholeList) -{ - int i; - DIR_Server *s; - char * prefstring = NULL; - char * tempString = NULL; - - if (wholeList) - { - prefstring = (char *) XP_ALLOC(128); - tempString = (char *) XP_ALLOC(256); - if (prefstring && tempString) - { - PREF_SetIntPref("ldap_1.number_of_directories", XP_ListCount (wholeList)); - - for (i = 1; i <= XP_ListCount(wholeList); i++) - { - s = (DIR_Server*) XP_ListGetObjectNum (wholeList, i); - if (s) - { - XP_SPRINTF(prefstring, "ldap_1.directory%i.", i); - - DIR_SetStringPref (prefstring, "description", tempString, s->description, ""); - DIR_SetStringPref (prefstring, "serverName", tempString, s->serverName, ""); - DIR_SetStringPref (prefstring, "searchBase", tempString, s->searchBase, ""); - DIR_SetStringPref (prefstring, "filename", tempString, s->fileName, ""); - if (s->port == 0) - s->port = s->isSecure ? LDAPS_PORT : LDAP_PORT; - DIR_SetIntPref (prefstring, "port", tempString, s->port, s->isSecure ? LDAPS_PORT : LDAP_PORT); - DIR_SetIntPref (prefstring, "maxHits", tempString, s->maxHits, kDefaultMaxHits); - DIR_SetBoolPref (prefstring, "isSecure", tempString, s->isSecure, FALSE); - DIR_SetBoolPref (prefstring, "saveResults", tempString, s->saveResults, TRUE); - DIR_SetBoolPref (prefstring, "efficientWildcards", tempString, s->efficientWildcards, TRUE); - DIR_SetStringPref (prefstring, "searchString", tempString, s->lastSearchString, ""); - DIR_SetIntPref (prefstring, "dirType", tempString, s->dirType, (int) LDAPDirectory); - DIR_SetBoolPref (prefstring, "isOffline", tempString, s->isOffline, kDefaultIsOffline); - - DIR_SetBoolPref (prefstring, "autoComplete.enabled", tempString, DIR_TestFlag(s, DIR_AUTO_COMPLETE_ENABLED), kDefaultAutoCompleteEnabled); - DIR_SetIntPref (prefstring, "autoComplete.style", tempString, (int32) s->autoCompleteStyle, kDefaultAutoCompleteStyle); - - DIR_SetBoolPref (prefstring, "utf8Disabled", tempString, DIR_TestFlag(s, DIR_UTF8_DISABLED), kDefaultUtf8Disabled); - - DIR_SetBoolPref (prefstring, "enableAuth", tempString, s->enableAuth, kDefaultEnableAuth); - DIR_SetStringPref (prefstring, "authDn", tempString, s->authDn, NULL); - DIR_SetBoolPref (prefstring, "savePassword", tempString, s->savePassword, kDefaultSavePassword); - DIR_SetStringPref (prefstring, "password", tempString, s->savePassword ? s->password : "", ""); - - DIR_SetBoolPref (prefstring, "publicDirectory", tempString, DIR_TestFlag(s, DIR_LDAP_PUBLIC_DIRECTORY), kDefaultLdapPublicDirectory); - - DIR_SaveCustomAttributes (prefstring, tempString, s); - DIR_SaveCustomFilters (prefstring, tempString, s); - dir_SaveReplicationInfo (prefstring, tempString, s); - - DIR_SetStringPref (prefstring, "customDisplayUrl", tempString, s->customDisplayUrl, ""); - } - } - XP_SPRINTF(tempString, "%i", tempString); - PREF_SetCharPref("ldap_1.end_of_directories", tempString); - } - - XP_FREEIF (prefstring); - XP_FREEIF (tempString); - } - - return 0; -} - -/***************************************************************************** - * Functions for getting site-configurable preferences, from JavaScript if - * the site admin has provided them, else out of thin air. - */ - -static DIR_DefaultAttribute *DIR_GetDefaultAttribute (DIR_AttributeId id) -{ - int i = 0; - - static DIR_DefaultAttribute defaults[16]; - - if (defaults[0].name == NULL) - { - defaults[0].id = cn; - defaults[0].resourceId = MK_LDAP_COMMON_NAME; - defaults[0].name = "cn"; - - defaults[1].id = givenname; - defaults[1].resourceId = MK_LDAP_GIVEN_NAME; - defaults[1].name = "givenName"; - - defaults[2].id = sn; - defaults[2].resourceId = MK_LDAP_SURNAME; - defaults[2].name = "sn"; - - defaults[3].id = mail; - defaults[3].resourceId = MK_LDAP_EMAIL_ADDRESS; - defaults[3].name = "mail"; - - defaults[4].id = telephonenumber; - defaults[4].resourceId = MK_LDAP_PHONE_NUMBER; - defaults[4].name = "telephoneNumber"; - - defaults[5].id = o; - defaults[5].resourceId = MK_LDAP_ORGANIZATION; - defaults[5].name = "o"; - - defaults[6].id = ou; - defaults[6].resourceId = MK_LDAP_ORG_UNIT; - defaults[6].name = "ou"; - - defaults[7].id = l; - defaults[7].resourceId = MK_LDAP_LOCALITY; - defaults[7].name = "l"; - - defaults[8].id = street; - defaults[8].resourceId = MK_LDAP_STREET; - defaults[8].name = "street"; - - defaults[9].id = custom1; - defaults[9].resourceId = MK_LDAP_CUSTOM1; - defaults[9].name = "custom1"; - - defaults[10].id = custom2; - defaults[10].resourceId = MK_LDAP_CUSTOM2; - defaults[10].name = "custom2"; - - defaults[11].id = custom3; - defaults[11].resourceId = MK_LDAP_CUSTOM3; - defaults[11].name = "custom3"; - - defaults[12].id = custom4; - defaults[12].resourceId = MK_LDAP_CUSTOM4; - defaults[12].name = "custom4"; - - defaults[13].id = custom5; - defaults[13].resourceId = MK_LDAP_CUSTOM5; - defaults[13].name = "custom5"; - - defaults[14].id = auth; - defaults[14].resourceId = MK_LDAP_EMAIL_ADDRESS; - defaults[14].name = "mail"; - - defaults[15].id = cn; - defaults[15].resourceId = 0; - defaults[15].name = NULL; - } - - while (defaults[i].name) - { - if (defaults[i].id == id) - return &defaults[i]; - i++; - } - - return NULL; -} - -const char *DIR_GetAttributeName (DIR_Server *server, DIR_AttributeId id) -{ - char *result = NULL; - - /* First look in the custom attributes in case the attribute is overridden */ - XP_List *list = server->customAttributes; - DIR_Attribute *walkList = NULL; - - while ((walkList = XP_ListNextObject(list)) != NULL) - { - if (walkList->id == id) - result = walkList->prettyName; - } - - /* If we didn't find it, look in our own static list of attributes */ - if (!result) - { - DIR_DefaultAttribute *def; - if ((def = DIR_GetDefaultAttribute(id)) != NULL) - result = XP_GetString(def->resourceId); - } - - return result; -} - - -const char **DIR_GetAttributeStrings (DIR_Server *server, DIR_AttributeId id) -{ - const char **result = NULL; - - if (server && server->customAttributes) - { - /* First look in the custom attributes in case the attribute is overridden */ - XP_List *list = server->customAttributes; - DIR_Attribute *walkList = NULL; - - while ((walkList = XP_ListNextObject(list)) != NULL) - { - if (walkList->id == id) - result = (const char**)walkList->attrNames; - } - } - - /* If we didn't find it, look in our own static list of attributes */ - if (!result) - { - static const char *array[2]; - array[0] = DIR_GetDefaultAttribute(id)->name; - array[1] = NULL; - result = (const char**)array; - } - return result; -} - - -const char *DIR_GetFirstAttributeString (DIR_Server *server, DIR_AttributeId id) -{ - const char **array = DIR_GetAttributeStrings (server, id); - return array[0]; -} - -const char *DIR_GetReplicationFilter (DIR_Server *server) -{ - if (server && server->replInfo) - return server->replInfo->filter; - else - return NULL; -} - -const char *DIR_GetFilterString (DIR_Server *server) -{ - DIR_Filter *filter = XP_ListTopObject (server->customFilters); - if (filter) - return filter->string; - return NULL; -} - - -static DIR_Filter *DIR_LookupFilter (DIR_Server *server, const char *filter) -{ - XP_List *list = server->customFilters; - DIR_Filter *walkFilter = NULL; - - while ((walkFilter = XP_ListNextObject(list)) != NULL) - if (!XP_STRCASECMP(filter, walkFilter->string)) - return walkFilter; - - return NULL; -} - - -XP_Bool DIR_RepeatFilterForTokens (DIR_Server *server, const char *filter) -{ - const DIR_Filter *filterStruct = DIR_LookupFilter (server, filter); - if (filterStruct) - return (filterStruct->flags & DIR_F_REPEAT_FILTER_FOR_TOKENS) != 0; - - return kDefaultRepeatFilterForTokens; -} - - -XP_Bool DIR_SubstStarsForSpaces (DIR_Server *server, const char *filter) -{ - const DIR_Filter *filterStruct = DIR_LookupFilter (server, filter); - if (filterStruct) - return (filterStruct->flags & DIR_F_SUBST_STARS_FOR_SPACES) != 0; - - return kDefaultSubstStarsForSpaces; -} - - -const char *DIR_GetTokenSeparators (DIR_Server *server) -{ - return server->tokenSeps ? server->tokenSeps : kDefaultTokenSeps; -} - -XP_Bool DIR_UseCustomAttribute (DIR_Server *server, DIR_AttributeId id) -{ - XP_List *list = server->customAttributes; - DIR_Attribute *walkList = NULL; - - while ((walkList = XP_ListNextObject(list)) != NULL) - { - if (walkList->id == id) - return TRUE; - } - return FALSE; -} - - -XP_Bool DIR_IsDnAttribute (DIR_Server *s, const char *attrib) -{ - if (s && s->dnAttributes) - { - /* Look in the server object to see if there are prefs to tell - * us which attributes contain DNs - */ - int i; - for (i = 0; i < s->dnAttributesCount; i++) - { - if (!XP_STRCASECMP(attrib, s->dnAttributes[i])) - return TRUE; - } - } - else - { - /* We have some default guesses about what attributes - * are likely to contain DNs - */ - switch (XP_TO_LOWER(attrib[0])) - { - case 'm': - if (!XP_STRCASECMP(attrib, "manager") || - !XP_STRCASECMP(attrib, "member")) - return TRUE; - break; - case o: - if (!XP_STRCASECMP(attrib, "owner")) - return TRUE; - break; - case 'u': - if (!XP_STRCASECMP(attrib, "uniquemember")) - return TRUE; - break; - } - } - return FALSE; - -} - - -XP_Bool DIR_IsAttributeExcludedFromHtml (DIR_Server *s, const char *attrib) -{ - if (s && s->suppressedAttributes) - { - /* Look in the server object to see if there are prefs to tell - * us which attributes shouldn't be shown in HTML - */ - int i; - for (i = 0; i < s->suppressedAttributesCount; i++) - { - if (!XP_STRCASECMP(attrib, s->suppressedAttributes[i])) - return TRUE; - } - } - /* else don't exclude it. By default we show everything */ - - return FALSE; -} - - -static void dir_PushStringToPrefs (DIR_Server *s, char **curVal, const char *newVal, const char *name) -{ - XP_List *servers = NULL; - XP_List *walkList = NULL; - DIR_Server *walkServer = NULL; - XP_Bool found = FALSE; - int idx = 0; - - /* Don't do anything if we already have a value and it's the same as the new one */ - if (curVal && *curVal) - { - if (!XP_STRCMP(*curVal, newVal)) - return; - } - - /* Find the server in the list so we can get its index. - * Can't use XP_GetNumFromObject because this DIR_Server isn't guaranteed - * to be in the FE's list -- it may be from a copy of the FE's list - */ - walkList = FE_GetDirServers (); - while (!found) - { - walkServer = (DIR_Server*) XP_ListNextObject (walkList); - if (!walkServer) - break; - found = DIR_AreServersSame (walkServer, s); - idx++; - } - - if (found) - { - /* Build the name of the prefs string */ - char buf[512]; - char *prefRoot = PR_smprintf ("ldap_1.directory%d.", idx); - - /* Set into the prefs */ - if (prefRoot) - { - *curVal = XP_STRDUP(newVal); - DIR_SetStringPref (prefRoot, name, buf, *curVal, ""); - - XP_FREE(prefRoot); - } - } - -} - - -void DIR_SetAuthDN (DIR_Server *s, const char *dn) -{ - dir_PushStringToPrefs (s, &(s->authDn), dn, "authDn"); -} - - -void DIR_SetPassword (DIR_Server *s, const char *password) -{ - dir_PushStringToPrefs (s, &(s->password), password, "password"); -} - - -XP_Bool DIR_IsEscapedAttribute (DIR_Server *s, const char *attrib) -{ - /* We're not exposing this setting in JS prefs right now, but in case we - * might want to in the future, leave the DIR_Server* in the prototype. - */ - - switch (XP_TO_LOWER(attrib[0])) - { - case 'p': - if (!XP_STRCASECMP(attrib, "postaladdress")) - return TRUE; - break; - case 'f': - if (!XP_STRCASECMP(attrib, "facsimiletelephonenumber")) - return TRUE; - break; - case 'o': - if (!XP_STRCASECMP(attrib, "othermail")) - return TRUE; - break; - } - return FALSE; -} - - -char *DIR_Unescape (const char *src, XP_Bool makeHtml) -{ -/* Borrowed from libnet\mkparse.c */ -#define UNHEX(C) \ - ((C >= '0' && C <= '9') ? C - '0' : \ - ((C >= 'A' && C <= 'F') ? C - 'A' + 10 : \ - ((C >= 'a' && C <= 'f') ? C - 'a' + 10 : 0))) - - char *dest = NULL; - int destLength = 0; - - int dollarCount = 0; - int convertedLengthOfDollar = makeHtml ? 4 : 1; - - const char *tmpSrc = src; - - while (*tmpSrc) - if (*tmpSrc++ == '$') - dollarCount++; - - destLength = XP_STRLEN(src) + (dollarCount * convertedLengthOfDollar); - dest = (char*) XP_ALLOC (destLength + 1); - if (dest) - { - char *tmpDst = dest; - *dest = '\0'; - tmpSrc = src; - - while (*tmpSrc) - { - switch (*tmpSrc) - { - case '$': - /* A dollar sign is a linebreak. This is easy for HTML, but if we're converting - * for the Address Book or something without multiple lines, just put in a space - */ - if (makeHtml) - { - *tmpDst++ = '<'; - *tmpDst++ = 'B'; - *tmpDst++ = 'R'; - *tmpDst++ = '>'; - } - else - *tmpDst++ = ' '; - break; - case '\\': { - /* A backslash indicates that two hex digits follow, which we're supposed to - * convert. The spec sez that '$', '#' and '\'' (single quote) must be encoded - * this way. - */ - XP_Bool didEscape = FALSE; - char c1 = *(tmpSrc + 1); - if (c1 && (XP_IS_DIGIT(c1) || XP_IS_ALPHA(c1))) - { - char c2 = *(tmpSrc + 2); - if (c2 && (XP_IS_DIGIT(c2) || XP_IS_ALPHA(c2))) - { - *tmpDst++ = (UNHEX(c1) << 4) | UNHEX(c2); - tmpSrc +=2; - didEscape = TRUE; - } - } - if (!didEscape) - *tmpDst++ = *tmpSrc; - } - break; - default: - /* Just a plain old char -- copy it over */ - *tmpDst++ = *tmpSrc; - } - tmpSrc++; - } - *tmpDst = '\0'; - } - - return dest; -} - - -int DIR_ValidateRootDSE (DIR_Server *server, char *version, int32 first, int32 last) -{ - /* Here we validate the replication info that the server has against the - * state of the local replica as stored in JS prefs. - */ - - if (!server || !version) - return -1; - - /* If the replication info file name in the server is NULL, that means the - * server has not been replicated. Reinitialize the change number and the - * data version and generate a file name for the replica database. - */ - if (!server->replInfo) - server->replInfo = (DIR_ReplicationInfo *) XP_CALLOC (1, sizeof (DIR_ReplicationInfo)); - if (!server->replInfo) - return MK_OUT_OF_MEMORY; - - if (!server->replInfo->fileName) - { - server->replInfo->lastChangeNumber = kDefaultReplicaChangeNumber; - XP_FREEIF(server->replInfo->filter); - server->replInfo->filter = XP_STRDUP(kDefaultReplicaFilter); - XP_FREEIF(server->replInfo->dataVersion); - server->replInfo->dataVersion = XP_STRDUP(version); - DIR_SetFileName (&(server->replInfo->fileName), server->serverName); - return 0; - } - - /* There are three cases in which we should reinitialize the replica: - * 1) The data version of the server's DB is different than when we last - * saw it, which means that the first and last change number we know - * are totally meaningless. - * 2) Some changes have come and gone on the server since we last - * replicated. Since we have no way to know what those changes were, - * we have no way to get sync'd up with the current server state - * 3) We have already replicated changes that the server hasn't made yet. - * Not likely. - */ - if ( !server->replInfo->dataVersion || XP_STRCASECMP(version, server->replInfo->dataVersion) - || first > server->replInfo->lastChangeNumber + 1 - || last < server->replInfo->lastChangeNumber) - { - server->replInfo->lastChangeNumber = kDefaultReplicaChangeNumber; - XP_FREEIF(server->replInfo->dataVersion); - server->replInfo->dataVersion = XP_STRDUP(version); - } - - return 0; -} - -#ifdef MOZ_LDAP -int DIR_ParseRootDSE (DIR_Server *server, LDAP *ld, LDAPMessage *message) -{ - char **values = NULL; - - server->flags |= DIR_LDAP_ROOTDSE_PARSED; - server->flags &= ~(DIR_LDAP_VERSION3 | DIR_LDAP_VIRTUALLISTVIEW); - - values = ldap_get_values (ld, message, "supportedLDAPVersion"); - if (values && values[0]) - { - int i; - - for (i = 0; values[i]; i++) - { - if (XP_ATOI (values[i]) == LDAP_VERSION3) - { - server->flags |= DIR_LDAP_VERSION3; - break; - } - } - ldap_value_free (values); - } - - values = ldap_get_values (ld, message, "supportedControl"); - if (values) - { - int i; - - for (i = 0; values[i]; i++) - { - if (XP_STRCMP (values[i], LDAP_CONTROL_VLVREQUEST) == 0) - { - server->flags |= DIR_LDAP_VIRTUALLISTVIEW; - break; - } - } - ldap_value_free (values); - } - return 0; -} -#endif - - -void DIR_SetAutoCompleteEnabled (XP_List *list, DIR_Server *server, XP_Bool enabled) -{ - XP_ASSERT(server); /*list can be null*/ - if (server) - { - DIR_Server *tmp; - - if (enabled) - { - while (NULL != (tmp = XP_ListNextObject(list))) - DIR_ClearFlag (tmp, DIR_AUTO_COMPLETE_ENABLED); - DIR_SetFlag (server, DIR_AUTO_COMPLETE_ENABLED); - } - else - DIR_ClearFlag (server, DIR_AUTO_COMPLETE_ENABLED); - } -} - -XP_Bool DIR_TestFlag (DIR_Server *server, uint32 flag) -{ - if (server) - return 0 != (server->flags & flag); - return FALSE; -} - -void DIR_SetFlag (DIR_Server *server, uint32 flag) -{ - XP_ASSERT(server); - if (server) - server->flags |= flag; -} - -void DIR_ClearFlag (DIR_Server *server, uint32 flag) -{ - XP_ASSERT(server); - if (server) - server->flags &= ~flag; -} - - -void DIR_ForceFlag (DIR_Server *server, uint32 flag, XP_Bool setIt) -{ - XP_ASSERT(server); - if (server) - { - if (setIt) - server->flags |= flag; - else - server->flags &= ~flag; - } -} - - -/* Centralize this charset conversion so everyone can do the UTF8 conversion - * in the same way. Also, if someone ever makes us do T.61 or some other silly - * thing, we can use these bottlenecks - */ - -char *DIR_ConvertToServerCharSet (DIR_Server *server, char *src, int16 srcCsid) -{ - if (server && (server->flags & DIR_UTF8_DISABLED)) - return XP_STRDUP (src); - else - return (char*) INTL_ConvertLineWithoutAutoDetect (srcCsid, CS_UTF8, (unsigned char*) src, XP_STRLEN(src)); -} - -char *DIR_ConvertFromServerCharSet (DIR_Server *server, char *src, int16 destCsid) -{ - if (server && (server->flags & DIR_UTF8_DISABLED)) - return XP_STRDUP (src); - else - return (char*) INTL_ConvertLineWithoutAutoDetect (CS_UTF8, destCsid, (unsigned char*) src, XP_STRLEN(src)); -} - - -char *DIR_BuildUrl (DIR_Server *server, const char *dn, XP_Bool forAddToAB) -{ - char *url = NULL; - char *escapedDn = NET_Escape (dn, URL_XALPHAS); - if (escapedDn) - { - if (!forAddToAB && server->customDisplayUrl && server->customDisplayUrl[0]) - { - /* Allow users to customize the URL we run when we open an LDAP entry. This - * is intended to appease the people who want extensive customization of the - * HTML we generate for LDAP. We're sidestepping the issue by allowing them - * to easily plug in DSGW, the LDAP-to-HTTP gateway, which already has - * very extensive template support. - */ - url = PR_smprintf (server->customDisplayUrl, escapedDn); - } - else - { - /* The default case, where we run an LDAP URL in a browser window - */ - char *urlTemplate = "%s//%s/%s"; - char *urlPortTemplate = "%s//%s:%d/%s"; - char *urlScheme = NULL; - int port = server->port; - int standardPort = server->isSecure ? LDAPS_PORT : LDAP_PORT; - - if (server->isSecure) - urlScheme = forAddToAB ? "addbook-ldaps:" : "ldaps:"; - else - urlScheme = forAddToAB ? "addbook-ldap:" : "ldap:"; - - if (port == standardPort) - url = PR_smprintf (urlTemplate, urlScheme, server->serverName, escapedDn); - else - url = PR_smprintf (urlPortTemplate, urlScheme, server->serverName, port, escapedDn); - - } - XP_FREE (escapedDn); - } - return url; -} -#endif /* !MOZADDRSTANDALONE */ - -#endif /* !MOZ_MAIL_NEWS */ - - - diff --git a/mozilla/lib/libmisc/glhist.c b/mozilla/lib/libmisc/glhist.c deleted file mode 100644 index 1aa745c9215..00000000000 --- a/mozilla/lib/libmisc/glhist.c +++ /dev/null @@ -1,3315 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - */ -#include "privacy.h" -#include "glhist.h" -#include "xp_hash.h" -#include "net.h" -#include "xp.h" -#include "mcom_db.h" -#include <time.h> -#include "merrors.h" -#include "xpgetstr.h" -#include "prefapi.h" -#include "xplocale.h" -#include "libi18n.h" -#include "xp_qsort.h" - -#if defined(XP_MAC) - #include "extcache.h" -#endif - -extern int XP_GLHIST_INFO_HTML; -extern int XP_GLHIST_DATABASE_CLOSED; -extern int XP_GLHIST_UNKNOWN; -extern int XP_GLHIST_DATABASE_EMPTY; -extern int XP_GLHIST_HTML_DATE ; -extern int XP_GLHIST_HTML_TOTAL_ENTRIES; -extern int XP_HISTORY_SAVE; - -/*PRIVATE XP_HashList * global_history_list = 0;*/ -PRIVATE Bool global_history_has_changed = FALSE; -PRIVATE time_t gh_cur_date = 0; -PRIVATE int32 global_history_timeout_interval = -1; - -/* Autocomplete stuff */ -PRIVATE Bool urlLookupGlobalHistHasChanged = FALSE; -PRIVATE int32 entriesToSearch = 100; -PRIVATE Bool enableUrlMatch=TRUE; - - -PRIVATE DB * gh_database = 0; -PRIVATE HASHINFO gh_hashinfo; - -#ifdef XP_MAC - /* The implementation for ppc/mac std lib does b - a for difftime.. weird */ - #define difftime(a,b) ((double)((double)(a)-(double)(b))) -#endif - -#define SYNC_RATE 30 /* number of stores before sync */ - -/* -* Flags for individual records -*/ -#define GH_FLAGS_SHOW 0x00000001 -#define GH_FLAGS_FRAMECELL 0x00000002 - -static const char *pref_link_expiration = "browser.link_expiration"; - -/*------------------------------------------------------------------------------ -// -// Global History context/cursor structure local types -// -------------------------------------------------------------------------------*/ - -/* Structure defining an array element for the Sort -*/ -typedef struct _gh_HistList -{ - void * pKeyData; - void * pData; -}gh_HistList; - -/* Structure defining a list of elements -*/ -typedef struct _gh_RecordList -{ - struct _gh_RecordList * pNext; - - DBT key; - DBT data; - -} gh_RecordList; - -/* Structure defining a node in an undo/redo list. -*/ -typedef struct _gh_URList -{ - struct _gh_URList * pNext; - - gh_RecordList *pURItem; - -} gh_URList; - -/* Structure defining the Global History undo/redo context. -*/ -typedef struct _gh_URContext -{ - gh_URList * pUndoList; - gh_URList * pRedoList; - -} gh_URContext; - -/* Structure defining the Global History context/cursor. -// This is the handle passed back and forth for all the Global History -// Context functions. -*/ -typedef struct _gh_HistContext -{ - struct _gh_HistContext * pNext; - struct _gh_HistContext * pPrev; - - uint32 uNumRecords; - gh_Filter * pFilter; - gh_SortColumn enGHSort; - gh_HistList XP_HUGE ** pHistSort; - - GHISTORY_NOTIFYPROC pfNotifyProc; - - gh_URContext * pURContext; - - void * pUserData; - -} gh_HistContext; - -/* The list of all contexts in use. */ -static gh_HistContext *pHistContextList = NULL; - -#define GLHIST_COOKIE "<!DOCTYPE NETSCAPE-history-file-1>" - -#ifndef BYTE_ORDER -Error! byte order must be defined -#endif - -#if !defined(XP_MAC) - #define COPY_INT32(_a,_b) XP_MEMCPY(_a, _b, sizeof(int32)); -#endif - -PUBLIC void GH_CollectGarbage(void); - -PRIVATE void GH_CreateURContext( gh_HistContext *hGHContext ); -PRIVATE void GH_NotifyContexts( int32 iNotifyMsg, char *pszKey ); -PRIVATE gh_RecordList * GH_CreateRecordNode( DBT *pKey, DBT *pData ); -PRIVATE void GH_PushRecord( gh_RecordList **ppRecordList, gh_RecordList *pRecordNode ); -PRIVATE void GH_DeleteRecordList( gh_RecordList *pRecordList ); -PRIVATE char * GH_GetTitleFromURL( char *pszURL ); -PRIVATE void GH_PushGroupUndo( gh_URContext *pURContext, gh_RecordList *pRecordNode ); -PRIVATE gh_URList * GH_CreateURNode( gh_RecordList *pRecordList ); -PRIVATE void GH_PushUR( gh_URList **ppURList, gh_URList *pURNode ); -PRIVATE gh_URList * GH_PopUR( gh_URList **ppURList ); -PRIVATE void GH_DeleteURList( gh_URList *pURList ); - -static int -gh_write_ok(const char* str, int length, XP_File fp) -{ - if (length < 0) length = XP_STRLEN(str); - if ((int)XP_FileWrite(str, length, fp) < length) return -1; - return 0; -} -#define WRITE(str, length, fp) \ - if (gh_write_ok((str), (length), (fp)) < 0) return -1 - -#if defined(XP_MAC) || defined(XP_UNIX) -/* set the maximum time for an object in the Global history in - * number of seconds - */ -PUBLIC void -GH_SetGlobalHistoryTimeout(int32 timeout_interval) -{ - global_history_timeout_interval = timeout_interval; -} -#endif - -PRIVATE void -gh_set_hash_options(void) -{ - gh_hashinfo.bsize = 4*1024; - gh_hashinfo.nelem = 0; - gh_hashinfo.hash = NULL; - gh_hashinfo.ffactor = 0; - gh_hashinfo.cachesize = 64 * 1024U; - gh_hashinfo.lorder = 0; -} - - -PRIVATE void -gh_open_database(void) -{ -#ifndef NO_DBM - static Bool have_tried_open=FALSE; - - if (PRVCY_IsAnonymous()) { - return; - } - - if(gh_database) - { - return; - } - else - { - char* filename; - gh_set_hash_options(); - filename = WH_FileName("", xpGlobalHistory); - gh_database = dbopen(filename, - O_RDWR | O_CREAT, - 0600, - DB_HASH, - &gh_hashinfo); - if (filename) XP_FREE(filename); - - if(!have_tried_open && !gh_database) - { - XP_StatStruct stat_entry; - - have_tried_open = TRUE; /* only try this once */ - - TRACEMSG(("Could not open gh database -- errno: %d", errno)); - - - /* if the file is zero length remove it - */ - if(XP_Stat("", &stat_entry, xpGlobalHistory) != -1) - { - if(stat_entry.st_size <= 0) - { - char* filename = WH_FileName("", xpGlobalHistory); - if (!filename) return; - XP_FileRemove(filename, xpGlobalHistory); - XP_FREE(filename); - } - else - { - XP_File fp; -#define BUFF_SIZE 1024 - char buffer[BUFF_SIZE]; - - /* open the file and look for - * the old magic cookie. If it's - * there delete the file - */ - fp = XP_FileOpen("", xpGlobalHistory, XP_FILE_READ); - - if(fp) - { - XP_FileReadLine(buffer, BUFF_SIZE, fp); - - XP_FileClose(fp); - - if(XP_STRSTR(buffer, "Global-history-file")) { - char* filename = WH_FileName("", xpGlobalHistory); - if (!filename) return; - XP_FileRemove(filename, xpGlobalHistory); - XP_FREE(filename); - } - } - } - } - - /* try it again */ - filename = WH_FileName("", xpGlobalHistory); - gh_database = dbopen(filename, - O_RDWR | O_CREAT, - 0600, - DB_HASH, - &gh_hashinfo); - if (filename) XP_FREE(filename); - - return; - - } - - if(gh_database && -1 == (*gh_database->sync)(gh_database, 0)) - { - TRACEMSG(("Error syncing gh database")); - (*gh_database->close)(gh_database); - gh_database = 0; - } - } -#endif /* NO_DBM */ - -} - -/* if the url was found in the global history then a number between - * 0 and 99 is returned representing the percentage of time that - * has elapsed in the expiration cycle. - * 0 means most recently accessed - * 99 means least recently accessed (about to be expired) - * - * If the url was not found -1 is returned - * - * define USE_PERCENTS if you want to get percent of time - * through expires cycle. - */ - -PUBLIC void -GH_DeleteHistoryItem (char * url) { - DBT key; - if(url && gh_database) { - key.data = (void *) url; - key.size = (XP_STRLEN(url)+1) * sizeof(char); - (*gh_database->del)(gh_database, &key, 0); - (*gh_database->sync)(gh_database, 0); - } -} - - -PUBLIC int -GH_CheckGlobalHistory(char * url) -{ - DBT key; - DBT data; - int status; - time_t entry_date; - - if(!url) - return(-1); - - if(!gh_database) - return(-1); - - key.data = (void *) url; - key.size = (XP_STRLEN(url)+1) * sizeof(char); - - status = (*gh_database->get)(gh_database, &key, &data, 0); - - if(status < 0) - { - TRACEMSG(("Database ERROR retreiving global history entry")); - return(-1); - } - else if(status > 0) - { - return(-1); - } - - /* otherwise */ - - /* object was found. - * check the time to make sure it hasn't expired - */ - COPY_INT32( &entry_date, data.data ); - if(global_history_timeout_interval > 0 - && entry_date+global_history_timeout_interval < gh_cur_date) - { - /* remove the object - */ - (*gh_database->del)(gh_database, &key, 0); - - /* - // Notify the contexts of the update - */ - GH_NotifyContexts( GH_NOTIFY_DELETE, (char *)key.data ); - - /* return not found - */ - return(-1); - } - - return(1); -} - -/* callback routine invoked by prefapi when the pref value changes */ -/* fix Mac warning about missing prototype */ -int PR_CALLBACK gh_link_expiration_changed(const char * newpref, void * data); - -int PR_CALLBACK gh_link_expiration_changed(const char * newpref, void * data) -{ - int32 iExp; - - /* Get the number of days for link expiration */ - PREF_GetIntPref(pref_link_expiration, &iExp); - - /* Convert to seconds */ - global_history_timeout_interval = iExp * 60 * 60 * 24; - - if (iExp == 0) - GH_ClearGlobalHistory(); - - return PREF_NOERROR; -} - -/* start global history tracking - */ -PUBLIC void -GH_InitGlobalHistory(void) -{ -#if defined(XP_WIN) || defined(XP_OS2) - int32 iExp; - - /* Get the number of days for link expiration */ - PREF_GetIntPref(pref_link_expiration, &iExp); - - /* Convert to seconds */ - global_history_timeout_interval = iExp * 60 * 60 * 24; - - /* Observe the preference */ - PREF_RegisterCallback(pref_link_expiration, gh_link_expiration_changed, NULL); -#endif - - gh_open_database(); -} - -PRIVATE void -gh_RemoveDatabase(void) -{ - char* filename; - if(gh_database) - { - (*gh_database->close)(gh_database); - gh_database = 0; - } - filename = WH_FileName("", xpGlobalHistory); - if (!filename) return; - XP_FileRemove(filename, xpGlobalHistory); - XP_FREE(filename); -} - -/* Notify all the contexts of something e.g., updates, deletions -*/ -PRIVATE void -GH_NotifyContexts( int32 iNotifyMsg, char *pszKey ) -{ - gh_HistContext * pCsr = pHistContextList; - gh_HistContext * pCopy = NULL; - - int32 iCount = 0; - int32 i = 0; - - gh_NotifyMsg stNM; - XP_MEMSET( &stNM, 0, sizeof(gh_NotifyMsg) ); - stNM.iNotifyMsg = iNotifyMsg; - stNM.pszKey = pszKey; - - if( !pCsr ) - { - return; - } - - /* Note we must first make a copy of the context information before we notify. - The reason: If the notifyee decides to release his context during the notification, - the list is compromised i.e., GH_ReleaseContext() changes the list. - */ - - /* Count the contexts first */ - do - { - iCount++; - pCsr = pCsr->pNext; - - }while( pCsr != pHistContextList ); - - /* Allocate the mem for the copy */ - pCopy = (gh_HistContext *)XP_ALLOC( iCount * sizeof(gh_HistContext) ); - XP_MEMSET( pCopy, 0, iCount * sizeof(gh_HistContext) ); - - /* Fill in the context copy */ - pCsr = pHistContextList; - do - { - pCopy[i].pUserData = pCsr->pUserData; - pCopy[i].pfNotifyProc = pCsr->pfNotifyProc; - i++; - - pCsr = pCsr->pNext; - - }while( pCsr != pHistContextList ); - - /* Now notify the contexts */ - for( i = 0; i < iCount; i++ ) - { - if( !pCopy[i].pfNotifyProc ) - { - continue; - } - - stNM.pUserData = pCopy[i].pUserData; - - pCopy[i].pfNotifyProc( &stNM ); - } - - XP_FREE( pCopy ); -} - -PRBool blockedHistItem (char* url) ; -/* add or update the url in the global history - */ -PUBLIC void -GH_UpdateGlobalHistory(URL_Struct * URL_s) -{ - char *url=NULL, *atSign=NULL, *passwordColon=NULL, *afterProtocol=NULL; - DBT key, data, dataComp; - int status; - static int32 count=0; - int8 *pData; - - int32 iNameLen = 0; - - int32 iDefault = 1; - int32 iCount; - - /* check for NULL's - * and also don't allow ones with post-data in here - */ - if(!URL_s || !URL_s->address || URL_s->post_data) - return; - - /* Never save these in the history database */ - if (!strncasecomp(URL_s->address, "about:", 6) || - !strncasecomp(URL_s->address, "javascript:", 11) || - !strncasecomp(URL_s->address, "livescript:", 11) || - !strncasecomp(URL_s->address, "mailbox:", 8) || - !strncasecomp(URL_s->address, "imap:", 5) || - !strncasecomp(URL_s->address, "mailto:", 7) || - !strncasecomp(URL_s->address, "mocha:", 6) || - !strncasecomp(URL_s->address, "news:", 5) || - !strncasecomp(URL_s->address, "pop3:", 5) || - !strncasecomp(URL_s->address, "snews:", 6) || - !strncasecomp(URL_s->address, "view-source:", 12)) - return; - - gh_cur_date = time(NULL); - - /* BM_UpdateBookmarksTime(URL_s, gh_cur_date); */ - - if(global_history_timeout_interval == 0) - return; /* don't add ever */ - - gh_open_database(); - - if(!gh_database) - return; - - global_history_has_changed = TRUE; - urlLookupGlobalHistHasChanged = TRUE; - - count++; /* increment change count */ - - /* Don't allow passwords through. If there's an at sign, check for a password. */ - if( (atSign = XP_STRCHR(URL_s->address, '@')) != NULL ) - { - *atSign = '\0'; - - /* get a position beyond the protocol */ - afterProtocol = XP_STRCHR(URL_s->address, ':'); - if(afterProtocol - && (afterProtocol[1] == '/') - && (afterProtocol[2] == '/')) { - afterProtocol += 3; - } - else { - *atSign = '@'; - return; /* url is in bad format */ - } - - if( (passwordColon = XP_STRCHR(afterProtocol, ':')) != NULL) - { - /* Copy everything up to the password colon */ - *passwordColon = '\0'; - StrAllocCopy(url, URL_s->address); - - /* Put the stripped chars back */ - *passwordColon = ':'; - *atSign = '@'; - - if(!url) - return; - /* Concatenate everyting from the at sign on, skipping the password */ - StrAllocCat(url, atSign); - if(!url) - return; - key.data = (void *) url; - key.size = (XP_STRLEN(url)+1) * sizeof(char); - } - /* There was no password, just a username perhaps */ - else { - *atSign = '@'; - key.data = (void *) URL_s->address; - key.size = (XP_STRLEN(URL_s->address)+1) * sizeof(char); - } - } - /* No at sign, no chance of a password. Business as usual */ - else { - key.data = (void *) URL_s->address; - key.size = (XP_STRLEN(URL_s->address)+1) * sizeof(char); - } - -#if 0 /* Old Format */ - COPY_INT32(&date, &gh_cur_date); - data.data = (void *)&date; - data.size = sizeof(int32); -#else - iNameLen = (URL_s->content_name && *URL_s->content_name) ? XP_STRLEN( URL_s->content_name )+1 : 1; - data.size = sizeof(int32) + sizeof(int32) + sizeof(int32) + sizeof(int32) + iNameLen*sizeof(char); - - pData = XP_ALLOC( data.size ); - - data.data = (void *)pData; - - /* - // last_accessed... - */ - COPY_INT32( pData, &gh_cur_date ); - - /* - // iFlags - */ - XP_MEMSET( pData+3*sizeof(int32), 0, sizeof(int32) ); - - /* - // pszName... - // - // Note the content_name member is rarely if ever used, so the title is always blank - */ - if( iNameLen > 1 ) - { - XP_STRCPY( (char *)pData+4*sizeof(int32), URL_s->content_name ); - } - else - { - *(char *)(pData+4*sizeof(int32)) = 0; - } - - if( 0 == (*gh_database->get)( gh_database, &key, &dataComp, 0 ) ) - { - if( dataComp.size > sizeof(int32) ) - { - /* New format... - - // - // first_accessed - */ - - COPY_INT32( pData+sizeof(int32), (int8 *)dataComp.data + sizeof(int32) ); - - /* - // iCount - */ - - COPY_INT32(&iCount, (int8 *)dataComp.data + 2*sizeof(int32)); - iCount++; - COPY_INT32( pData + 2*sizeof(int32), &iCount ); - } - else - { - /* Old format... - - // - // first_accessed - */ - - COPY_INT32( pData+sizeof(int32), dataComp.data ); - - /* - // iCount - */ - - COPY_INT32( pData+2*sizeof(int32), &iDefault ); - } - } - else - { - /* New record... - - // - // first_accessed - */ - - COPY_INT32( pData+sizeof(int32), &gh_cur_date ); - - /* - // iCount - */ - COPY_INT32( pData+2*sizeof(int32), &iDefault ); - } - -#endif - status = (*gh_database->put)( gh_database, &key, &data, 0 ); - - - XP_FREE( pData ); - XP_FREEIF(url); - - if(status < 0) - { - TRACEMSG(("Global history update failed due to database error")); - gh_RemoveDatabase(); - } - else if(count >= SYNC_RATE) - { - count = 0; - if( -1 == (*gh_database->sync)( gh_database, 0 ) ) - { - TRACEMSG(("Error syncing gh database")); - } - } -#if 0 /* Not a good idea right now - with a large hash this could cause some lag. - Instead, do it during GH_UpdateURLTitle() since these are what we're interested in anyway */ - /* - // Notify the contexts of the update - */ - GH_NotifyContexts( GH_NOTIFY_UPDATE, (char *)key.data ); -#endif -} - - -#define MAX_HIST_DBT_SIZE 1024 - -PRIVATE DBT * -gh_HistDBTDup(DBT *obj) -{ - DBT * rv = XP_NEW(DBT); - - if(!rv || obj->size > MAX_HIST_DBT_SIZE) - return NULL; - - rv->size = obj->size; - rv->data = XP_ALLOC(rv->size); - if(!rv->data) - { - XP_FREE(rv); - return NULL; - } - - XP_MEMCPY(rv->data, obj->data, rv->size); - - return(rv); - -} - -PRIVATE void -gh_FreeHistDBTdata(DBT *stuff) -{ - XP_FREE(stuff->data); - XP_FREE(stuff); -} - - -/* runs through a portion of the global history - * database and removes all objects that have expired - * - */ -PUBLIC void -GH_CollectGarbage(void) -{ -#define OLD_ENTRY_ARRAY_SIZE 100 - DBT *old_entry_array[OLD_ENTRY_ARRAY_SIZE]; - - DBT key, data; - DBT *newkey; - time_t entry_date; - int i, old_entry_count=0; - - if(!gh_database || global_history_timeout_interval < 1) - return; - - gh_cur_date = time(NULL); - - if(0 != (*gh_database->seq)(gh_database, &key, &data, R_FIRST)) - return; - - global_history_has_changed = TRUE; - urlLookupGlobalHistHasChanged = TRUE; - - do - { - COPY_INT32(&entry_date, data.data); - if(global_history_timeout_interval > 0 - && entry_date+global_history_timeout_interval < gh_cur_date) - { - /* put the object on the delete list since it is expired - */ - if(old_entry_count < OLD_ENTRY_ARRAY_SIZE) - old_entry_array[old_entry_count++] = gh_HistDBTDup(&key); - else - break; - } - } - while(0 == (gh_database->seq)(gh_database, &key, &data, R_NEXT)); - - for(i=0; i < old_entry_count; i++) - { - newkey = old_entry_array[i]; - if(newkey) - { - (*gh_database->del)(gh_database, newkey, 0); - - /* - // Notify the contexts of the update - */ - GH_NotifyContexts( GH_NOTIFY_DELETE, (char *)newkey->data ); - - gh_FreeHistDBTdata(newkey); - } - } -} - -/* save the global history to a file while leaving the object in memory - */ -PUBLIC void -GH_SaveGlobalHistory(void) -{ - - if(!gh_database) - return; - - GH_CollectGarbage(); - - if(global_history_has_changed) - { - if(-1 == (*gh_database->sync)(gh_database, 0)) - { - TRACEMSG(("Error syncing gh database")); - (*gh_database->close)(gh_database); - gh_database = 0; - } - global_history_has_changed = FALSE; - urlLookupGlobalHistHasChanged = TRUE; - } -} - -/* free the global history list - */ -PUBLIC void -GH_FreeGlobalHistory(void) -{ - if(!gh_database) - return; - - if(-1 == (*gh_database->close)(gh_database)) - { - TRACEMSG(("Error closing gh database")); - } - - gh_database = 0; - -} - -/* clear the global history list - */ -PUBLIC void -GH_ClearGlobalHistory(void) -{ - char* filename; - if(!gh_database) - return; - - - GH_FreeGlobalHistory(); - - gh_set_hash_options(); - -#ifndef NO_DBM - filename = WH_FileName("", xpGlobalHistory); - gh_database = dbopen(filename, - O_RDWR | O_TRUNC, - 0600, - DB_HASH, - &gh_hashinfo); - if (filename) XP_FREE(filename); -#endif /* NO_DBM */ - if(gh_database && -1 == (*gh_database->sync)(gh_database, 0)) - { - TRACEMSG(("Error syncing gh database")); - (*gh_database->close)(gh_database); - gh_database = 0; - } - - global_history_has_changed = FALSE; - urlLookupGlobalHistHasChanged = TRUE; -} - - -/* create an HTML stream and push a bunch of HTML about - * the global history - */ -MODULE_PRIVATE int -NET_DisplayGlobalHistoryInfoAsHTML(MWContext *context, - URL_Struct *URL_s, - int format_out) -{ - char *buffer = (char*)XP_ALLOC(256); - NET_StreamClass * stream; - DBT key, data; - Bool long_form = FALSE; - time_t entry_date; - int status = MK_NO_DATA; - int32 count=0; - char *escaped; - static char LINK_START[] = "<A href=\""; - static char LINK_END[] = "\">"; - static char END_LINK[] = "</A>"; - - if(!buffer) - { - return(MK_UNABLE_TO_CONVERT); - } - - if(strcasestr(URL_s->address, "?long")) - long_form = TRUE; - - StrAllocCopy(URL_s->content_type, TEXT_HTML); - - format_out = CLEAR_CACHE_BIT(format_out); - stream = NET_StreamBuilder(format_out, - URL_s, - context); - - if(!stream) - { - return(MK_UNABLE_TO_CONVERT); - } - - - /* define a macro to push a string up the stream - * and handle errors - */ -#define PUT_PART(part) \ -status = (*stream->put_block)(stream, \ - part ? part : XP_GetString(XP_GLHIST_UNKNOWN), \ - part ? XP_STRLEN(part) : 7); \ -if(status < 0) \ - goto END; - - XP_SPRINTF(buffer, XP_GetString(XP_GLHIST_INFO_HTML)); - - PUT_PART(buffer); - - if(!gh_database) - { - XP_STRCPY(buffer, XP_GetString(XP_GLHIST_DATABASE_CLOSED)); - PUT_PART(buffer); - goto END; - } - - if(0 != (*gh_database->seq)(gh_database, &key, &data, R_FIRST)) - { - XP_STRCPY(buffer, XP_GetString(XP_GLHIST_DATABASE_EMPTY)); - PUT_PART(buffer); - goto END; - } - - /* define some macros to help us output HTML tables - */ -#define TABLE_TOP(arg1) \ - XP_SPRINTF(buffer, \ -"<TR><TD ALIGN=RIGHT><b>%s</TD>\n" \ -"<TD>", arg1); \ -PUT_PART(buffer); - -#define TABLE_BOTTOM \ - XP_SPRINTF(buffer, \ -"</TD></TR>"); \ -PUT_PART(buffer); - - do - { - count++; - - COPY_INT32(&entry_date, data.data); - - /* print url */ - XP_STRCPY(buffer, "<TT>&nbsp;URL:</TT> "); - PUT_PART(buffer); - - /* make the URL a link */ - PUT_PART(LINK_START); - if(status < 0) - goto END; - - escaped = NET_EscapeDoubleQuote((char*)key.data); - PUT_PART(escaped); - XP_FREE(escaped); - if(status < 0) - goto END; - - PUT_PART(LINK_END); - if(status < 0) - goto END; - - escaped = NET_EscapeHTML((char*)key.data); - PUT_PART(escaped); - XP_FREE(escaped); - if(status < 0) - goto END; - - PUT_PART(END_LINK); - if(status < 0) - goto END; - - XP_SPRINTF(buffer, XP_GetString(XP_GLHIST_HTML_DATE), ctime(&entry_date)); - PUT_PART(buffer); - - } - while(0 == (*gh_database->seq)(gh_database, &key, &data, R_NEXT)); - - - XP_SPRINTF(buffer, XP_GetString(XP_GLHIST_HTML_TOTAL_ENTRIES), count); - PUT_PART(buffer); - -END: - XP_FREE(buffer); - - if(status < 0) - (*stream->abort)(stream, status); - else - (*stream->complete)(stream); - XP_FREE(stream); - - return(status); -} - -/*------------------------------------------------------------------------------ -// -*/ -PRIVATE void -GH_CreateURContext( gh_HistContext *hGHContext ) -{ - if( !hGHContext || hGHContext->pURContext ) - { - return; - } - - hGHContext->pURContext = XP_ALLOC( sizeof(gh_URContext) ); - - hGHContext->pURContext->pUndoList = hGHContext->pURContext->pRedoList = NULL; -} - -/*------------------------------------------------------------------------------ -// -*/ -PRIVATE void -GH_ReleaseURContext( gh_URContext *pURContext ) -{ - if( !pURContext ) - { - return; - } - - if( pURContext->pUndoList ) - { - GH_DeleteURList( pURContext->pUndoList ); - } - - if( pURContext->pRedoList ) - { - GH_DeleteURList( pURContext->pRedoList ); - } - - XP_FREE( pURContext ); -} - -/*------------------------------------------------------------------------------ -// -// QSort compare callbacks -*/ -static int QSortCompStr( const void *elem1, const void *elem2 ) -{ - gh_HistList ** p1 = (gh_HistList **)elem1; - gh_HistList ** p2 = (gh_HistList **)elem2; - return XP_StrColl( (char *)(*p1)->pData, (char *)(*p2)->pData ); -} -static int QSortCompStr2( const void *elem1, const void *elem2 ) -{ - gh_HistList ** p1 = (gh_HistList **)elem1; - gh_HistList ** p2 = (gh_HistList **)elem2; - return XP_StrColl( (char *)(*p1)->pKeyData, (char *)(*p2)->pKeyData ); -} - -#ifdef SUNOS4 -/* difftime() doesn't seem to exist on SunOS anywhere. -mcafee */ -static double difftime(time_t time1, time_t time0) -{ - return (double) (time1 - time0); -} -#endif - -static int QSortCompDate( const void *elem1, const void *elem2 ) -{ - gh_HistList ** p1 = (gh_HistList **)elem1; - gh_HistList ** p2 = (gh_HistList **)elem2; - return difftime( *(time_t *)(*p2)->pData, *(time_t *)(*p1)->pData ) >= 0 ? 1 : -1; -} -static int QSortCompInt32( const void *elem1, const void *elem2 ) -{ - gh_HistList ** p1 = (gh_HistList **)elem1; - gh_HistList ** p2 = (gh_HistList **)elem2; - return (*(int32 *)(*p1)->pData >= *(int32 *)(*p2)->pData) ? 1 : -1; -} - -/*------------------------------------------------------------------------------ -// -// Supplies a "context", or handle, to the hash table. The context serves as a -// quasi-cursor to the table, offering the ability to navigate and enumerate the -// records sorting on a specified column/field. -*/ -#define SORT_ARRAY_GROW_SIZE 1024 -PUBLIC GHHANDLE -GH_GetContext( enum gh_SortColumn enGHSort, - gh_Filter * pFilter, - GHISTORY_NOTIFYPROC pfNotifyProc, - GHURHANDLE hUR, - void * pUserData ) -{ - DBT key, data; - void XP_HUGE *pBase = NULL; -#ifdef XP_WIN16 - void XP_HUGE *pBuf = NULL; -#endif - int16 csid = INTL_DefaultWinCharSetID( 0 ); - - gh_HistList *pNode; - gh_HistContext *hGHContext = XP_ALLOC( sizeof(gh_HistContext) ); - XP_MEMSET( hGHContext, 0, sizeof(gh_HistContext) ); - - if( !gh_database || global_history_timeout_interval < 1 ) - { - return NULL; - } - - hGHContext->uNumRecords = 0; - hGHContext->enGHSort = enGHSort; - hGHContext->pFilter = pFilter; - hGHContext->pfNotifyProc = pfNotifyProc; - hGHContext->pUserData = pUserData; - hGHContext->pURContext = (gh_URContext *)hUR; - - /* Append the context to the list */ - if( !pHistContextList ) - { - pHistContextList = hGHContext; - pHistContextList->pNext = pHistContextList->pPrev = pHistContextList; - } - else - { - hGHContext->pPrev = pHistContextList->pPrev; - hGHContext->pNext = pHistContextList; - pHistContextList->pPrev->pNext = hGHContext; - pHistContextList->pPrev = hGHContext; - } - - data.size = key.size = 0; - - /* - // Build the array. We don't know the number of entries in the hash, so we - // have to grow the array as we read the entries. Gross. - */ - if( 0 != (*gh_database->seq)( gh_database, &key, &data, R_FIRST ) ) - { - return hGHContext; - } - - pBase = (void XP_HUGE *)XP_HUGE_ALLOC( SORT_ARRAY_GROW_SIZE*sizeof(gh_HistList *) ); - do - { - if( data.size > sizeof(int32) ) - { - /* - // The entry/record is of the new format... - // - - // Ignore history records which are NOT flagged as having been explicitly loaded - // e.g., don't expose gif images that are only part of a page - */ - /*int32 iFlags = *(int32 *)((int8 *)data.data + 3*sizeof(int32));*/ - int32 iFlags; - COPY_INT32( &iFlags, (int8 *)data.data + 3*sizeof(int32) ); - - if( !(iFlags & GH_FLAGS_SHOW) ) - { - continue; - } - - /* - // Filter records according to the supplied filter struct. - */ - - if( pFilter ) - { - Bool bKeep = FALSE; - int i; - - for( i = 0; i < pFilter->iNumConditions; i++ ) - { - if( i > 0 ) - { - if( pFilter->enOps[i-1] == eGH_FLOAnd ) - { - if( !bKeep ) - { - /* No need to evaluate logical-and expression if already false */ - continue; - } - } - else /* eGH_FLOOr */ - { - if( bKeep ) - { - /* No need to evaluate logical-or expression if already true */ - continue; - } - } - } - - /* Guilty until proven innocent */ - bKeep = FALSE; - - switch( pFilter->pConditions[i].enCol ) - { - case eGH_LocationSort: - { - int iRes = XP_StrColl( pFilter->pConditions[i].tests.pszTest, key.data ); - - switch( pFilter->pConditions[i].enOp ) - { - case eGH_FOEquals: - { - if( !iRes ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOEqualsNot: - { - if( iRes ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreater: - { - if( iRes > 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreaterEqual: - { - if( iRes >= 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLess: - { - if( iRes < 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLessEqual: - { - if( iRes <= 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOHas: - { - bKeep = INTL_Strcasestr( csid, key.data, pFilter->pConditions[i].tests.pszTest ) != NULL; - break; - } - case eGH_FOHasNot: - { - bKeep = INTL_Strcasestr( csid, key.data, pFilter->pConditions[i].tests.pszTest ) == NULL; - break; - } - default: - bKeep = FALSE; - } - break; - } - - case eGH_NameSort: - { - char *pText = (char *)((int8 *)data.data + 4*sizeof(int32)); - - int iRes = XP_StrColl( pFilter->pConditions[i].tests.pszTest, pText ); - - switch( pFilter->pConditions[i].enOp ) - { - case eGH_FOEquals: - { - if( !iRes ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOEqualsNot: - { - if( iRes ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreater: - { - if( iRes > 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreaterEqual: - { - if( iRes >= 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLess: - { - if( iRes < 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLessEqual: - { - if( iRes <= 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOHas: - { - bKeep = INTL_Strcasestr( csid, pText, pFilter->pConditions[i].tests.pszTest ) != NULL; - break; - } - case eGH_FOHasNot: - { - bKeep = INTL_Strcasestr( csid, pText, pFilter->pConditions[i].tests.pszTest ) == NULL; - break; - } - default: - bKeep = FALSE; - } - break; - } - - case eGH_VisitCountSort: - { - int32 iCount; - COPY_INT32( &iCount, (int8 *)data.data + 2*sizeof(int32) ); - - switch( pFilter->pConditions[i].enOp ) - { - case eGH_FOEquals: - { - if( iCount == pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOEqualsNot: - { - if( iCount != pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreater: - { - if( iCount > pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreaterEqual: - { - if( iCount >= pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLess: - { - if( iCount < pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLessEqual: - { - if( iCount <= pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - default: - bKeep = FALSE; - } - break; - } - - case eGH_FirstDateSort: - case eGH_LastDateSort: - { - /* - // Assuming we are comparing ONLY the date, set the time to 00:00:00 for both time values - */ - - time_t time0, time1 = pFilter->pConditions[i].tests.iTest; - struct tm *pTM; - struct tm tm0; - struct tm tm1; - - if( pFilter->pConditions[i].enCol == eGH_FirstDateSort ) - { - COPY_INT32( &time0, (int8 *)data.data + sizeof(int32) ); - } - else - { - COPY_INT32( &time0, (int8 *)data.data ); - } - - pTM = localtime( &time0 ); - XP_MEMSET( &tm0, 0, sizeof(struct tm) ); - tm0.tm_mday = pTM->tm_mday; - tm0.tm_mon = pTM->tm_mon; - tm0.tm_year = pTM->tm_year; - pTM = localtime( &time1 ); - XP_MEMSET( &tm1, 0, sizeof(struct tm) ); - tm1.tm_mday = pTM->tm_mday; - tm1.tm_mon = pTM->tm_mon; - tm1.tm_year = pTM->tm_year; - - time0 = mktime( &tm0 ); - time1 = mktime( &tm1 ); - - switch( pFilter->pConditions[i].enOp ) - { - case eGH_FOEquals: - { - if( time0 == time1 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOEqualsNot: - { - if( time0 != time1 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreater: - { - if( time0 > time1 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreaterEqual: - { - if( time0 >= time1 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLess: - { - if( time0 < time1 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLessEqual: - { - if( time0 <= time1 ) - { - bKeep = TRUE; - } - break; - } - default: - bKeep = FALSE; - } - break; - } - default: - break; - } - } - - if( !bKeep ) - { - /* - // Did NOT pass filter. Test next record. - */ - continue; - } - } - } - else - { - /* - // The entry/record is of the old format... - // - - // Try to be somewhat smart and filter the implicitly loaded stuff i.e., non-html docs - */ - char *pszExt = strrchr( key.data, '.' ); - - if( ((char *)key.data)[XP_STRLEN(key.data)-1] == '/' ) - { - } - else if( XP_STRLEN(key.data) < 5 ) - { - continue; - } - else if( pszExt ) - { - pszExt++; - if( strncasecomp( pszExt, "htm", 3 ) ) - { - continue; - } - } - else - { - continue; - } - - /* - // Filter records according to the supplied filter struct - */ - - if( pFilter ) - { - Bool bKeep = FALSE; - int i; - - for( i = 0; i < pFilter->iNumConditions; i++ ) - { - - if( i > 0 ) - { - if( pFilter->enOps[i-1] == eGH_FLOAnd ) - { - if( !bKeep ) - { - /* No need to evaluate logical-and expression if already false */ - continue; - } - } - else /* eGH_FLOOr */ - { - if( bKeep ) - { - /* No need to evaluate logical-or expression if already true */ - continue; - } - } - } - - /* Guilty until proven innocent */ - bKeep = FALSE; - - switch( pFilter->pConditions[i].enCol ) - { - case eGH_LocationSort: - { - int iRes = XP_StrColl( pFilter->pConditions[i].tests.pszTest, key.data ); - - switch( pFilter->pConditions[i].enOp ) - { - case eGH_FOEquals: - { - if( !iRes ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOEqualsNot: - { - if( iRes ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreater: - { - if( iRes > 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreaterEqual: - { - if( iRes >= 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLess: - { - if( iRes < 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLessEqual: - { - if( iRes <= 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOHas: - { - bKeep = INTL_Strcasestr( csid, key.data, pFilter->pConditions[i].tests.pszTest ) != NULL; - break; - } - case eGH_FOHasNot: - { - bKeep = INTL_Strcasestr( csid, key.data, pFilter->pConditions[i].tests.pszTest ) == NULL; - break; - } - default: - bKeep = FALSE; - } - break; - } - - case eGH_NameSort: - { - /* - // Since there is no title available from the old format, let's try and pull - // a meaningful title from the URL. - */ - - char *pszTitle = GH_GetTitleFromURL( key.data ); - int iRes = XP_StrColl( pFilter->pConditions[i].tests.pszTest, pszTitle ); - - switch( pFilter->pConditions[i].enOp ) - { - case eGH_FOEquals: - { - if( !iRes ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOEqualsNot: - { - if( iRes ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreater: - { - if( iRes > 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreaterEqual: - { - if( iRes >= 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLess: - { - if( iRes < 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLessEqual: - { - if( iRes <= 0 ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOHas: - { - bKeep = INTL_Strcasestr( csid, pszTitle, pFilter->pConditions[i].tests.pszTest ) != NULL; - break; - } - case eGH_FOHasNot: - { - bKeep = INTL_Strcasestr( csid, pszTitle, pFilter->pConditions[i].tests.pszTest ) == NULL; - break; - } - default: - bKeep = FALSE; - } - - break; - } - - case eGH_FirstDateSort: - case eGH_LastDateSort: - { - time_t time; - - COPY_INT32( &time, (int8 *)data.data ); - - switch( pFilter->pConditions[i].enOp ) - { - case eGH_FOEquals: - { - if( time == pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOEqualsNot: - { - if( time != pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreater: - { - if( time > pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOGreaterEqual: - { - if( time >= pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLess: - { - if( time < pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - case eGH_FOLessEqual: - { - if( time <= pFilter->pConditions[i].tests.iTest ) - { - bKeep = TRUE; - } - break; - } - default: - bKeep = FALSE; - } - break; - } - default: - break; - } - } - - if( !bKeep ) - { - /* Did NOT pass filter. Test next record. */ - continue; - } - } - } - - pNode = XP_ALLOC( sizeof(gh_HistList) ); - pNode->pKeyData = XP_ALLOC( (XP_STRLEN(key.data)+1) * sizeof(char) ); - XP_STRCPY( pNode->pKeyData, key.data ); - - switch( enGHSort ) - { - case eGH_LocationSort: - { - pNode->pData = pNode->pKeyData; - break; - } - - case eGH_NameSort: - { - if( data.size > sizeof(int32) ) - { - /* The entry/record is of the new format i.e., record has title data */ - - pNode->pData = XP_ALLOC( (XP_STRLEN((char *)data.data + 4*sizeof(int32))+1) * sizeof(char) ); - XP_STRCPY( pNode->pData, (char *)data.data + 4*sizeof(int32) ); - } - else - { - #if 0 - /* - // The entry/record is of the old format i.e., no title data available - // Note this is only for internal sorting to keep unititled records at bottom of A->Z sort - */ - pNode->pData = XP_ALLOC( (XP_STRLEN("~~")+1) * sizeof(char) ); - XP_STRCPY( pNode->pData, "~~" ); - #else - /* - // Since there is no title available from the old format, let's try and pull - // a meaningful title from the URL. - */ - char *pszTitle = GH_GetTitleFromURL( key.data ); - pNode->pData = XP_ALLOC( (XP_STRLEN( pszTitle )+1) * sizeof(char) ); - XP_STRCPY( pNode->pData, pszTitle ); - pszTitle = strrchr( pNode->pData, '/' ); - if( pszTitle ) - { - /* Remove the trailing slash from the title. */ - *pszTitle = 0; - } - #endif - } - break; - } - - case eGH_VisitCountSort: - { - if( data.size > sizeof(int32) ) - { - /* The entry/record is of the new format i.e., record has a visit count */ - - pNode->pData = XP_ALLOC( sizeof(int32) ); - COPY_INT32( pNode->pData, (int8 *)data.data + 2*sizeof(int32) ); - } - else - { - /* The entry/record is of the old format i.e., no visit count available */ - - pNode->pData = XP_ALLOC( sizeof(int32) ); - *(int32 *)pNode->pData = 1; - } - break; - } - - case eGH_FirstDateSort: - { - if( data.size > sizeof(int32) ) - { - /* The entry/record is of the new format */ - - time_t date; - COPY_INT32( &date, data.data ); - - pNode->pData = XP_ALLOC( sizeof(int32) ); - - COPY_INT32( pNode->pData, (int8 *)data.data + sizeof(int32) ); - - break; - } - - /* Fall through if old format (i.e., sort by last_accessed) */ - } - - case eGH_LastDateSort: - default: - { - /* Note the last_accessed field is at the beginning of the data regardless of new/old format */ - - time_t date; - COPY_INT32( &date, data.data ); - - pNode->pData = XP_ALLOC( sizeof(int32) ); - - COPY_INT32( pNode->pData, (int8 *)data.data ); - - break; - } - } - - ((gh_HistList XP_HUGE **)pBase)[hGHContext->uNumRecords] = pNode; - - hGHContext->uNumRecords++; - - if( !(hGHContext->uNumRecords % SORT_ARRAY_GROW_SIZE) ) - { - #ifndef XP_WIN16 - pBase = (void *)XP_REALLOC( pBase, (hGHContext->uNumRecords + SORT_ARRAY_GROW_SIZE)*sizeof(gh_HistList *) ); - #else - pBuf = (void *)XP_HUGE_ALLOC( (hGHContext->uNumRecords + SORT_ARRAY_GROW_SIZE)*sizeof(gh_HistList *) ); - XP_HUGE_MEMCPY( pBuf, pBase, hGHContext->uNumRecords * sizeof(gh_HistList *) ); - XP_HUGE_FREE( pBase ); - pBase = pBuf; - #endif /* XP_WIN16 */ - } - }while( 0 == (gh_database->seq)(gh_database, &key, &data, R_NEXT) ); - - /* - // Perform a quick sort on the array, sorting by the pData member. - */ - - switch( enGHSort ) - { - case eGH_NameSort: - case eGH_LocationSort: - { - int32 i; - gh_HistList XP_HUGE **pList; - - XP_QSORT( pBase, hGHContext->uNumRecords, sizeof(void *), QSortCompStr ); - - if( enGHSort == eGH_LocationSort ) - { - break; - } - - /* - * Now perform a secondary sort on Location - */ - pList = (gh_HistList XP_HUGE **)pBase; - - for( i = 1; i < (int32)hGHContext->uNumRecords; i++ ) - { - int32 iStartPos = i-1; - int32 iBlockLen; - while( (i < (int32)hGHContext->uNumRecords) && - !XP_StrColl( pList[i]->pData, pList[i-1]->pData ) ) - { - i++; - } - iBlockLen = i - iStartPos; - if( iBlockLen > 1 ) - { - XP_QSORT( pList+iStartPos, iBlockLen, sizeof(void *), QSortCompStr2 ); - } - } - - break; - } - - case eGH_FirstDateSort: - case eGH_LastDateSort: - { - int32 i; - gh_HistList XP_HUGE **pList; - - XP_QSORT( pBase, hGHContext->uNumRecords, sizeof(void *), QSortCompDate ); - - /* - * Now perform a secondary sort on Location - */ - pList = (gh_HistList XP_HUGE **)pBase; - - for( i = 1; i < (int32)hGHContext->uNumRecords; i++ ) - { - int32 iStartPos = i-1; - int32 iBlockLen; - while( (i < (int32)hGHContext->uNumRecords) && - *(time_t *)pList[i]->pData == *(time_t *)pList[i-1]->pData ) - { - i++; - } - iBlockLen = i - iStartPos; - if( iBlockLen > 1 ) - { - XP_QSORT( pList+iStartPos, iBlockLen, sizeof(void *), QSortCompStr2 ); - } - } - - break; - } - - case eGH_VisitCountSort: - { - int32 i; - gh_HistList XP_HUGE **pList; - - XP_QSORT( pBase, hGHContext->uNumRecords, sizeof(void *), QSortCompInt32 ); - - /* - * Now perform a secondary sort on Location - */ - pList = (gh_HistList XP_HUGE **)pBase; - - for( i = 1; i < (int32)hGHContext->uNumRecords; i++ ) - { - int32 iStartPos = i-1; - int32 iBlockLen; - - while( (i < (int32)hGHContext->uNumRecords) && - *(int32 *)pList[i]->pData == *(int32 *)pList[i-1]->pData ) - { - i++; - } - iBlockLen = i - iStartPos; - if( iBlockLen > 1 ) - { - XP_QSORT( pList+iStartPos, iBlockLen, sizeof(void *), QSortCompStr2 ); - } - } - - break; - } - default: - break; - } - - hGHContext->pHistSort = (gh_HistList XP_HUGE **)pBase; - - return hGHContext; -} - -PUBLIC void -GH_ReleaseContext( GHHANDLE pContext, Bool bReleaseUR ) -{ - gh_HistContext *hGHContext = (gh_HistContext *)pContext; - uint32 uRow; - - if( !pContext ) - { - return; - } - - XP_ASSERT( pHistContextList ); - - if( pHistContextList == hGHContext ) - { - if( hGHContext->pNext == hGHContext ) - { - pHistContextList = NULL; - } - else - { - pHistContextList = hGHContext->pNext; - } - } - hGHContext->pPrev->pNext = hGHContext->pNext; - hGHContext->pNext->pPrev = hGHContext->pPrev; - - /* - // Release all the memory associated with the History Context - */ - - for( uRow = 0; uRow < hGHContext->uNumRecords; uRow++ ) - { - XP_FREE( hGHContext->pHistSort[uRow]->pKeyData ); - - if( hGHContext->enGHSort != eGH_LocationSort ) - { - /* The pData member points to the same storage as pKeyData for Location sort */ - - XP_FREE( hGHContext->pHistSort[uRow]->pData ); - } - - XP_FREE( hGHContext->pHistSort[uRow] ); - } - - XP_HUGE_FREE( hGHContext->pHistSort ); - - if( bReleaseUR ) - { - GH_ReleaseURContext( hGHContext->pURContext ); - } -} - -PUBLIC uint32 -GH_GetNumRecords( GHHANDLE pContext ) -{ - gh_HistContext *hGHContext = (gh_HistContext *)pContext; - - return hGHContext ? hGHContext->uNumRecords : 0; -} - -PUBLIC gh_SortColumn -GH_GetSortField( GHHANDLE pContext ) -{ - gh_HistContext *hGHContext = (gh_HistContext *)pContext; - - return hGHContext ? hGHContext->enGHSort : eGH_NoSort; -} - - -PR_PUBLIC_API(void) updateNewHistItem (DBT *key, DBT *data); - - -PUBLIC int -GH_UpdateURLTitle( URL_Struct *pUrl, char *pszTitle, Bool bFrameCell ) -{ - DBT key, data, dataNew; - int status; - int iNameLen; - int8 *pData; - static int32 count=0; - int32 iFlags = bFrameCell ? (GH_FLAGS_SHOW | GH_FLAGS_FRAMECELL) : GH_FLAGS_SHOW; - - if( !pUrl || !pUrl->address || !pszTitle ) - { - return -1; - } - - if( !gh_database ) - { - return -1; - } - - gh_open_database(); - - if( !gh_database ) - { - return -1; - } - - global_history_has_changed = TRUE; - urlLookupGlobalHistHasChanged = TRUE; - - count++; /* Increment change count */ - - key.data = (void *)pUrl->address; - key.size = (XP_STRLEN(pUrl->address)+1) * sizeof(char); - - status = (*gh_database->get)(gh_database, &key, &data, 0); - - if( status < 0 ) - { - TRACEMSG(("Database ERROR retreiving global history entry")); - return -1; - } - else if( status > 0 ) - { - return -1; - } - - /* Object was found */ - - iNameLen = XP_STRLEN( pszTitle )+1; - dataNew.size = sizeof(int32) + sizeof(int32) + sizeof(int32) + sizeof(int32) + iNameLen*sizeof(char); - - pData = XP_ALLOC( dataNew.size ); - - dataNew.data = (void *)pData; - - /* - // Copy the record's data into the new buffer - */ - XP_MEMCPY( pData, data.data, (data.size < dataNew.size) ? data.size : dataNew.size ); - - /* - // Now overwrite the old title with the new - */ - if( iNameLen > 1 ) - { - XP_STRCPY( (char *)pData+4*sizeof(int32), pszTitle ); - } - else - { - *(char *)(pData+4*sizeof(int32)) = 0; - } - - /* - // Mark this record for global history viewing - */ - COPY_INT32( pData+3*sizeof(int32), &iFlags ); - - /* - // Update the table - */ - status = (*gh_database->put)( gh_database, &key, &dataNew, 0 ); - - - /* update the history display in nav center if its open */ - if (iFlags == 1) updateNewHistItem(&key, &dataNew); - - - XP_FREE( pData ); - - if( status < 0 ) - { - TRACEMSG(("Global history update failed due to database error")); - gh_RemoveDatabase(); - } - else if( count >= SYNC_RATE ) - { - count = 0; - if( -1 == (*gh_database->sync)( gh_database, 0 ) ) - { - TRACEMSG(("Error syncing gh database")); - } - } - - /* - // Notify the contexts of the update - */ - GH_NotifyContexts( GH_NOTIFY_UPDATE, (char *)key.data ); - return 0; -} - -PUBLIC gh_HistEntry * -GH_GetRecord( GHHANDLE pContext, uint32 uRow ) -{ - DBT key, data; - static gh_HistEntry ghEntry; - static char szTitle[1024]; - int32 iDefault = 1; - - gh_HistContext *hGHContext = (gh_HistContext *)pContext; - - if( !hGHContext || !hGHContext->uNumRecords ) - { - return NULL; - } - - if( uRow > (hGHContext->uNumRecords-1) ) - { - /* Row is out of range (cannot be less than 0 since it is unsigned */ - return NULL; - } - - key.data = (void *)hGHContext->pHistSort[uRow]->pKeyData; - key.size = (XP_STRLEN(key.data)+1) * sizeof(char); - - ghEntry.address = key.data; - - if( 0 == (*gh_database->get)( gh_database, &key, &data, 0 ) ) - { - if( data.size > sizeof(int32) ) - { - /* The entry/record is of the new format */ - - COPY_INT32( &ghEntry.first_accessed, (int8 *)data.data + sizeof(int32) ); - - COPY_INT32( &ghEntry.last_accessed, data.data ); - - COPY_INT32( &ghEntry.iCount, (int8 *)data.data + 2*sizeof(int32) ); - - XP_STRNCPY_SAFE( szTitle, (char *)data.data + 4*sizeof(int32), sizeof(szTitle)-1 ); - ghEntry.pszName = szTitle; - } - else - { - /* The entry/record is of the old format i.e., only last_accessed date available */ - - char *pszTitle = GH_GetTitleFromURL( ghEntry.address ); - XP_STRNCPY_SAFE( szTitle, pszTitle, sizeof(szTitle)-1 ); - pszTitle = strrchr( szTitle, '/' ); - if( pszTitle ) - { - /* Remove the trailing slash from the title */ - *pszTitle = 0; - } - ghEntry.pszName = szTitle; - - COPY_INT32( &ghEntry.first_accessed, data.data ); - - COPY_INT32( &ghEntry.last_accessed, data.data ); - - COPY_INT32( &ghEntry.iCount, &iDefault ); - } - return &ghEntry; - - } - else - { - /* The entry is not there, we're out of sync somehow. */ - return NULL; - } -} - -PUBLIC void -GH_DeleteRecord( GHHANDLE pContext, uint32 uRow, Bool bGroup ) -{ - DBT key, data; - int status; - - gh_HistContext *hGHContext = (gh_HistContext *)pContext; - - if( !hGHContext || !hGHContext->uNumRecords ) - { - return; - } - - if( uRow > (hGHContext->uNumRecords-1) ) - { - /* Row is out of range (cannot be less than 0 since it is unsigned */ - return; - } - - key.data = (void *)hGHContext->pHistSort[uRow]->pKeyData; - key.size = (XP_STRLEN(key.data)+1) * sizeof(char); - - if( hGHContext->pURContext ) - { - gh_RecordList * pRecordNode = NULL; - gh_URList * pURNode = NULL; - - /* Get the record's data so we can undo the operation if necessary */ - - status = (*gh_database->get)( gh_database, &key, &data, 0 ); - if( status < 0 ) - { - TRACEMSG(("Database ERROR retreiving global history entry")); - return; - } - else if( status > 0 ) - { - return; - } - - pRecordNode = GH_CreateRecordNode( &key, &data ); - - if( bGroup ) - { - GH_PushGroupUndo( hGHContext->pURContext, pRecordNode ); - } - else - { - pURNode = GH_CreateURNode( pRecordNode ); - GH_PushUR( &hGHContext->pURContext->pUndoList, pURNode ); - - /* Must purge the redo list whenever we add a new undo item */ - GH_DeleteURList( hGHContext->pURContext->pRedoList ); - hGHContext->pURContext->pRedoList = NULL; - } - } - - (*gh_database->del)( gh_database, &key, 0 ); - - /* - // Notify the contexts of the deletion - */ - GH_NotifyContexts( GH_NOTIFY_DELETE, (char *)key.data ); -} - -PUBLIC int32 -GH_GetRecordNum( GHHANDLE pContext, char *pszLocation ) -{ - int32 i = 0; - - gh_HistContext *hGHContext = (gh_HistContext *)pContext; - - if( !hGHContext || !hGHContext->uNumRecords || !pszLocation ) - { - return -1; - } - - for( i = 0; i < (int32)hGHContext->uNumRecords; i++ ) - { - if( !XP_STRCMP( pszLocation, hGHContext->pHistSort[i]->pKeyData ) ) - { - return i; - } - } - - return -1; -} - -/* Writes out a URL entry to look like: - * - * <DT><A HREF="http://www.netscape.com" \ - * ADD_DATE="777240414" LAST_VISIT="802992591">Welcome To Netscape</A> - * - */ -PRIVATE int -GH_WriteURL( XP_File fp, gh_HistEntry *item ) -{ - char buffer[16]; - - WRITE( "<DT>", -1, fp ); - - /* write address */ - WRITE( "<A HREF=\"", -1, fp ); - WRITE( item->address, -1, fp ); - WRITE( "\"", -1, fp ); - - /* write the addition date */ - WRITE( " FIRST_VISIT=\"", -1, fp ); - XP_SPRINTF( buffer, "%ld", item->first_accessed ); - WRITE( buffer, -1, fp ); - WRITE( "\"", -1, fp ); - - /* write the last visited date */ - WRITE( " LAST_VISIT=\"", -1, fp ); - XP_SPRINTF( buffer, "%ld\"", item->last_accessed ); - WRITE( buffer, -1, fp ); - - /* write the last modified date */ - WRITE( " VISIT_COUNT=\"", -1, fp ); - XP_SPRINTF( buffer, "%i\"", item->iCount ); - WRITE( buffer, -1, fp ); - - WRITE( ">", -1, fp ); - - /* write the name */ - - if( item->pszName ) - { - WRITE( item->pszName, -1, fp ); - } - - WRITE( "</A>", -1, fp ); - WRITE( LINEBREAK, LINEBREAK_LEN, fp ); - - return 0; -} - -PRIVATE void -GH_WriteHTML( MWContext *context, char *filename, GHHANDLE pContext ) -{ - XP_File fp = NULL; - XP_FileType tmptype; - char * tmpname = NULL; - int32 i = 0; - gh_HistContext * hGHContext = (gh_HistContext *)pContext; - - if( !hGHContext || !filename || (filename[0] == '\0') ) - { - return; - } - - #if 0 - tmpname = FE_GetTempFileFor( NULL, filename, xpGlobalHistoryList, &tmptype ); - #else - tmpname = filename; - tmptype = xpFileToPost; /* let's us simply use the name the user types */ - #endif - - fp = XP_FileOpen( tmpname, tmptype, XP_FILE_WRITE ); - - if( !fp ) - { - goto FAIL; - } - - /* write cookie */ - if( gh_write_ok( GLHIST_COOKIE, -1, fp) < 0 ) goto FAIL; - if( gh_write_ok( LINEBREAK, LINEBREAK_LEN, fp ) < 0 ) goto FAIL; - if( gh_write_ok( LINEBREAK, LINEBREAK_LEN, fp ) < 0 ) goto FAIL; - - /* Write out all the history records according to the context/cursor */ - for( i = 0; i < (int32)hGHContext->uNumRecords; i++ ) - { - gh_HistEntry *pHistEntry = GH_GetRecord( hGHContext, i ); - if( pHistEntry ) - { - GH_WriteURL( fp, pHistEntry ); - } - } - - if( XP_FileClose( fp ) != 0 ) - { - fp = NULL; - goto FAIL; - } - fp = NULL; - #if 0 - XP_FileRename( tmpname, tmptype, filename, xpGlobalHistoryList ); - #else - XP_FREE( tmpname ); - #endif - tmpname = NULL; - - return; - - FAIL: - if( fp ) - { - XP_FileClose(fp); - } - - if( tmpname ) - { - XP_FileRemove( tmpname, tmptype ); - XP_FREE( tmpname ); - tmpname = NULL; - } - - return; -} - -PUBLIC void -GH_FileSaveAsHTML( GHHANDLE pContext, MWContext *pMWContext ) -{ - if( !pContext ) - { - return; - } - - FE_PromptForFileName( pMWContext, XP_GetString( XP_HISTORY_SAVE ), 0, FALSE, FALSE, GH_WriteHTML, pContext ); -} - -PUBLIC GHURHANDLE GH_GetURContext( GHHANDLE pContext ) -{ - gh_HistContext *hGHContext = (gh_HistContext *)pContext; - - if( !pContext ) - { - return NULL; - } - - return hGHContext->pURContext; -} - -PUBLIC void GH_SupportUndoRedo( GHHANDLE pContext ) -{ - gh_HistContext *hGHContext = (gh_HistContext *)pContext; - - if( !pContext ) - { - return; - } - - GH_CreateURContext( hGHContext ); -} - -PRIVATE gh_RecordList * -GH_CreateRecordNode( DBT *pKey, DBT *pData ) -{ - gh_RecordList *pRecordNode = NULL; - - if( !pKey || - !pKey->data || - !pData || - !pData->data ) - { - return NULL; - } - - pRecordNode = XP_ALLOC( sizeof(gh_RecordList) ); - - pRecordNode->key.data = XP_ALLOC( pKey->size ); - XP_MEMCPY( pRecordNode->key.data, pKey->data, pKey->size ); - pRecordNode->key.size = pKey->size; - - pRecordNode->data.data = XP_ALLOC( pData->size ); - XP_MEMCPY( pRecordNode->data.data, pData->data, pData->size ); - pRecordNode->data.size = pData->size; - - pRecordNode->pNext = NULL; - - return pRecordNode; -} - -PRIVATE void -GH_PushRecord( gh_RecordList **ppRecordList, gh_RecordList *pRecordNode ) -{ - if( !ppRecordList || !pRecordNode ) - { - return; - } - - pRecordNode->pNext = *ppRecordList ? *ppRecordList : NULL; - *ppRecordList = pRecordNode; -} - -PRIVATE void -GH_PushGroupUndo( gh_URContext *pURContext, gh_RecordList *pRecordNode ) -{ - if( !pURContext || !pURContext->pUndoList || !pRecordNode ) - { - return; - } - - GH_PushRecord( &pURContext->pUndoList->pURItem, pRecordNode ); -} - -PRIVATE gh_URList * -GH_CreateURNode( gh_RecordList *pRecordList ) -{ - gh_URList *pURNode = NULL; - - if( !pRecordList ) - { - return NULL; - } - - pURNode = XP_ALLOC( sizeof(gh_URList) ); - pURNode->pURItem = pRecordList; - pURNode->pNext = NULL; - - return pURNode; -} - -PRIVATE void -GH_PushUR( gh_URList **ppURList, gh_URList *pURNode ) -{ - if( !ppURList || !pURNode ) - { - return; - } - - pURNode->pNext = *ppURList ? *ppURList : NULL; - *ppURList = pURNode; -} - -PRIVATE gh_URList * -GH_PopUR( gh_URList **ppURList ) -{ - gh_URList *pURNode = NULL; - - if( !ppURList ) - { - return NULL; - } - - pURNode = *ppURList; - *ppURList = (*ppURList)->pNext; - - return pURNode; -} - -PUBLIC void -GH_Undo( GHHANDLE hContext ) -{ - gh_HistContext *pContext = (gh_HistContext *)hContext; - gh_URList *pURNode = NULL; - - int status; - gh_RecordList *pCsr; - - if( !pContext || - !pContext->pURContext || - !pContext->pURContext->pUndoList ) - { - return; - } - - pURNode = GH_PopUR( &pContext->pURContext->pUndoList ); - if( !pURNode ) - { - return; - } - - if( !gh_database ) - { - return; - } - - gh_open_database(); - - if( !gh_database ) - { - return; - } - - global_history_has_changed = TRUE; - urlLookupGlobalHistHasChanged = TRUE; - - - pCsr = pURNode->pURItem; - while( pCsr ) - { - /* - // Update the table - */ - status = (*gh_database->put)( gh_database, &pCsr->key, &pCsr->data, 0 ); - - if( status < 0 ) - { - TRACEMSG(("Global history update failed due to database error")); - gh_RemoveDatabase(); - } - - /* - // Notify the contexts of the update - */ - GH_NotifyContexts( GH_NOTIFY_UPDATE, (char *)pCsr->key.data ); - - pCsr = pCsr->pNext; - } - - GH_PushUR( &pContext->pURContext->pRedoList, pURNode ); -} - -PUBLIC void -GH_Redo( GHHANDLE hContext ) -{ - gh_HistContext *pContext = (gh_HistContext *)hContext; - gh_URList *pURNode = NULL; - - int status; - gh_RecordList *pCsr; - - if( !pContext || - !pContext->pURContext || - !pContext->pURContext->pRedoList ) - { - return; - } - - pURNode = GH_PopUR( &pContext->pURContext->pRedoList ); - if( !pURNode ) - { - return; - } - - if( !gh_database ) - { - return; - } - - gh_open_database(); - - if( !gh_database ) - { - return; - } - - global_history_has_changed = TRUE; - urlLookupGlobalHistHasChanged = TRUE; - - - pCsr = pURNode->pURItem; - while( pCsr ) - { - /* - // Delete the record - */ - status = (*gh_database->del)( gh_database, &pCsr->key, 0 ); - - if( status < 0 ) - { - TRACEMSG(("Global history update failed due to database error")); - gh_RemoveDatabase(); - } - else if( status > 0 ) - { - /* Not found */ - pCsr = pCsr->pNext; - continue; - } - - /* - // Notify the contexts of the deletion - */ - GH_NotifyContexts( GH_NOTIFY_DELETE, (char *)pCsr->key.data ); - - pCsr = pCsr->pNext; - } - - GH_PushUR( &pContext->pURContext->pUndoList, pURNode ); -} - -PUBLIC Bool GH_CanUndo( GHHANDLE hContext ) -{ - Bool bRet = FALSE; - gh_HistContext *pContext = (gh_HistContext *)hContext; - - if( pContext && - pContext->pURContext && - pContext->pURContext->pUndoList ) - { - bRet = TRUE; - } - - return bRet; -} - -PUBLIC Bool GH_CanRedo( GHHANDLE hContext ) -{ - Bool bRet = FALSE; - gh_HistContext *pContext = (gh_HistContext *)hContext; - - if( pContext && - pContext->pURContext && - pContext->pURContext->pRedoList ) - { - bRet = TRUE; - } - - return bRet; -} - -PRIVATE void GH_DeleteURList( gh_URList *pURList ) -{ - gh_URList *pTrash = NULL; - - if( !pURList ) - { - return; - } - - do - { - pTrash = pURList; - pURList = pURList->pNext; - GH_DeleteRecordList( pTrash->pURItem ); - XP_FREE( pTrash ); - - }while( pURList ); -} - -PUBLIC int GH_GetMRUPage( char *pszURL, int iMaxLen ) -{ - /* - // Note this function will not return a cell in a frame, instead it returns the mru frame set url. - */ - time_t date1, date2 = 0; - DBT key, data; - - if( !gh_database || (global_history_timeout_interval < 1) ) - { - return 0; - } - - if( !pszURL || (iMaxLen <= 0) ) - { - return 0; - } - - *pszURL = 0; - - data.size = key.size = 0; - - /* - // Visit each page in the history list while maintaining the most recently visited page. - */ - if( 0 != (*gh_database->seq)( gh_database, &key, &data, R_FIRST ) ) - { - return 0; - } - - do - { - if( data.size > sizeof(int32) ) - { - /* - // The entry/record is of the new format... - // - - // Ignore history records which are NOT flagged as having been explicitly loaded - // e.g., don't expose gif images that are only part of a page - */ - int32 iFlags; - COPY_INT32( &iFlags, (int8 *)data.data + 3*sizeof(int32) ); - - if( !(iFlags & GH_FLAGS_SHOW) || (iFlags & GH_FLAGS_FRAMECELL) ) - { - /* The record is either not flagged for showing or is just a cell or both */ - - continue; - } - } - else - { - /* - // The entry/record is of the old format... - // - - // Try to be somewhat smart and filter the implicitly loaded stuff i.e., non-html docs - */ - char *pszExt = strrchr( key.data, '.' ); - - if( ((char *)key.data)[XP_STRLEN(key.data)-1] == '/' ) - { - } - else if( XP_STRLEN(key.data) < 5 ) - { - continue; - } - else if( pszExt ) - { - pszExt++; - if( strncasecomp( pszExt, "htm", 3 ) ) - { - continue; - } - } - else - { - continue; - } - } - - /* Note the last_accessed field is at the beginning of the data regardless of new/old format */ - - COPY_INT32( &date1, data.data ); - - if( difftime( date1, date2 ) > 0 ) - { - XP_STRNCPY_SAFE( pszURL, key.data, iMaxLen ); - COPY_INT32( &date2, (int8 *)data.data ); - } - - }while( 0 == (gh_database->seq)( gh_database, &key, &data, R_NEXT ) ); - - return XP_STRLEN( pszURL ); -} - -PRIVATE void GH_DeleteRecordList( gh_RecordList *pRecordList ) -{ - gh_RecordList *pTrash = NULL; - - if( !pRecordList ) - { - return; - } - - do - { - pTrash = pRecordList; - pRecordList = pRecordList->pNext; - XP_FREE( pTrash->key.data ); - XP_FREE( pTrash->data.data ); - XP_FREE( pTrash ); - - }while( pRecordList ); -} - -/* -// Return a pointer somewhere in pszURL where a somewhat meaningful title may be. -// A pointer to the char following the last or second to last slash is returned -// if a string exists after the slash, otherwise pszURL is returned. -*/ -PRIVATE char *GH_GetTitleFromURL( char *pszURL ) -{ - char *pszTitle = NULL; - char *pszSlash = NULL; - - if( !pszURL || !*pszURL ) - { - return pszURL; - } - - pszTitle = strrchr( pszURL, '/' ); - - if( pszTitle ) - { - if( *(pszTitle+1) ) - { - /* - // The location does not end with a slash so we'll use the sub-string - // following the the last slash. - */ - - pszTitle++; - } - else - { - /* - // The location ends with a slash, so we'll start at the second from last slash. - */ - - *pszTitle = 0; - pszSlash = pszTitle; /* Save this position so we can put the slash back */ - pszTitle = strrchr( pszURL, '/' ); - *pszSlash = '/'; - - if( pszTitle ) - { - if( *(pszTitle+1) ) - { - pszTitle++; - } - else - { - pszTitle = pszURL; - } - } - } - } - else - { - pszTitle = pszURL; - } - - return pszTitle; -} - -/* fix Mac warning about missing prototype */ -PUBLIC Bool -NET_EnableUrlMatch(void); - -PUBLIC Bool -NET_EnableUrlMatch(void) -{ - return enableUrlMatch; -} - -/* fix Mac warning about missing prototype */ -PUBLIC void -NET_SetEnableUrlMatchPref(Bool x); - -PUBLIC void -NET_SetEnableUrlMatchPref(Bool x) -{ - enableUrlMatch=x; -} - -/* fix Mac warning about missing prototype */ -MODULE_PRIVATE int PR_CALLBACK -NET_EnableUrlMatchPrefChanged(const char *pref, void *data); - -MODULE_PRIVATE int PR_CALLBACK -NET_EnableUrlMatchPrefChanged(const char *pref, void *data) -{ - Bool x; - - PREF_GetBoolPref("network.enableUrlMatch", &x); - NET_SetEnableUrlMatchPref(x); - return PREF_NOERROR; -} - -PUBLIC void -NET_RegisterEnableUrlMatchCallback(void) -{ - Bool x; - - PREF_GetBoolPref("network.enableUrlMatch", &x); - NET_SetEnableUrlMatchPref(x); - PREF_RegisterCallback("network.enableUrlMatch", NET_EnableUrlMatchPrefChanged, NULL); -} - -/* Is the string passed in too general. */ -PRIVATE Bool -net_url_sub_string_too_general(const char *criteria, int32 len) -{ - if( (!criteria) || (len < 1) ) - return TRUE; - - /* case insensative compares */ - if( !strncasecomp(criteria, "www.", len) || - !strncasecomp(criteria, "http://www.", len) || - !strncasecomp(criteria, "ftp.", len) || - !strncasecomp(criteria, "ftp://ftp.", len) || - !strncasecomp(criteria, "file:", len) - ) - return TRUE; - return FALSE; -} - -/* Determines whether we want to deal with this url. I'm doing some interpretation here. If the user has - www.abc.com/cgi/laksjdlskjds121212121 in their global history, I'm assuming they don't want this to come - up in the completeion. They may though. You can't satisfy everyone. */ -PRIVATE Bool -net_url_weed_out(const char *url, int32 len) -{ - if( (!url) || (len < 0) ) - return TRUE; - url = url + len - 1; - if(!(*url == 'l' || - *url == 'L' || - *url == 'm' || - *url == 'M' || - *url == 'p' || /* some msoft frontpage-like cgi filename i.e. default.asp */ - *url == 'P' || - *url == '/') ) - return TRUE; - return FALSE; -} - - -/* Description: - Tries to find a match in the global history database given the criteria string. If found - the match is returned via result (result is passed in as an unallocated address of a char *, - and returned as an allocated char * if the return val of the fctn is foundDone; you're - responsible for freeing it). - - Parameters: - criteria - a string for me to search for. - result - the address of a char * where I will put data if I find it. - freshStart - Is this the first time calling me? Yes == TRUE. - scroll - Am I being called because user wants to scroll through matches? - - Return Type: - enum autoCompStatus (declared in glhist.h) - Return Values: - foundDone - the unallocated address of a char * you passed in now has data in it. The data - consists of the best match I could find. - notFoundDone - I searched all my resources and couldn't find anything (ie don't call me again - with the same criteria), or I found something but it was the same thing I last returned to - you, or what you passed in is what I returned to you last time you called. - stillSearching - I don't search through all my resources at once, call me again - dontCallOnIdle - Don't call me again with the same criteria, the criteria is too general and - I don't want to waste cycles. - - This function uses a totally inefficient means of searching (sequential). Function is optimized - for speed, not flexibility or readibility. - - Created by: Judson Valeski, 1997 -*/ -PUBLIC enum autoCompStatus -urlMatch(const char *criteria, char **result, Bool freshStart, Bool scroll) -{ - static char *lastURLCompletion=NULL; - int32 eLen, cLen, cPathLen=0, count=0; - DBT key, data; - char *t=NULL, *p=NULL, *host=NULL, *ePath=NULL, *cPath=NULL; - char *eProtocolColon=NULL, *cProtocolColon=NULL; - - if(!NET_EnableUrlMatch()) - return notFoundDone; - - if(!criteria || (*criteria == '/') ) - return notFoundDone; - - /* Is it ok to use the database. */ - if(!gh_database || global_history_timeout_interval < 1) - return notFoundDone; - - cLen = XP_STRLEN(criteria); - - /* Is the criteria too general? ie. www or ftp, etc */ - if( net_url_sub_string_too_general(criteria, cLen) ) - return dontCallOnIdle; - - /* Did the user include a protocol? If so, we want to search with protocol included. */ - cProtocolColon=XP_STRSTR(criteria, "://"); - - /* Check to see if user has path info on url */ - if(cProtocolColon) - cPath=XP_STRCHR(cProtocolColon+3, '/'); - else - cPath=XP_STRCHR(criteria, '/'); - - if(cPath) - cPathLen=XP_STRLEN(cPath); - - if(freshStart || urlLookupGlobalHistHasChanged) { - if(0 != (*gh_database->seq)(gh_database, &key, &data, R_FIRST)) - return notFoundDone; - } - else { - if(0 != (gh_database->seq)(gh_database, &key, &data, R_NEXT) ) - return notFoundDone; - } - - urlLookupGlobalHistHasChanged = FALSE; - - /* Main search loop */ - do { - if(count > entriesToSearch) /* entries to search is a static defined above */ - return stillSearching; - - /* If there's no url or there's no slash in it, move on */ - if( !((char *)key.data) || !(host=XP_STRCHR((char *)key.data, '/')) ) { - count++; - continue; - } - - /* Get the url out of the db entry and determine whether or not we want - to include the protocol in our search. After this if stmt, t will point to - allocated memory that must be free'd. */ - if(cProtocolColon) { - t = XP_STRDUP((char *)key.data); - if(!t) { - count++; - continue; - } - } - else { - /* host is assigned in the previous if stmt and is guaranteed to be valid. */ - if( !(host[0] && host[1] && host[2]) ) { - /* the db entry isn't in the format that we were expecting */ - count++; - continue; - } - t = XP_STRDUP(host+2); - if(!t) { - count++; - continue; - } - } - - if( (eProtocolColon=XP_STRSTR(t, "://")) != NULL) - ePath=XP_STRCHR(eProtocolColon+3, '/'); - else - ePath=XP_STRCHR(t, '/'); - - /* If there's no path in the entity url then the db entry was bad. Move on. */ - if(!ePath) { - XP_FREE(t); - count++; - continue; - } - - eLen = XP_STRLEN(t); - - if(cPath) - /* Do we want to weed out the url, ie. it's full of cgi stuff. */ - if( net_url_weed_out(t, eLen) ) { - XP_FREE(t); - count++; - continue; - } - - /* See if domains are the same. Case-insensative. */ - *ePath='\0'; - if(cPath) - *cPath='\0'; - /* If the domains aren't the same. Move on. */ - if(strncasecomp(t, criteria, cLen)) { - if(cPath) - *cPath='/'; - XP_FREE(t); - count++; - continue; - } - *ePath='/'; - if(cPath) - *cPath='/'; - - /* See if the paths are the same. Case-sensative. - If there's no cPath and we've gotten this far then the user hasn't specified anything - more than the domain and the check above determined that the domain matched so continue. - Otherwise check the remaining chars. */ - if( !cPath || !XP_STRNCMP(ePath, cPath, cPathLen)) { - /* if user didn't specify path info , - set the char just after the end to null byte */ - if(!cPath) { - if(cProtocolColon) { - if( (p=XP_STRCHR(t, '/')) != NULL && p[1] && p[2] ) { - if( (p=XP_STRCHR(p+2, '/')) != NULL ) { - p[1] = '\0'; - } - else { - XP_FREE(t); - count++; - continue; - } - } - } - else { - if( (p=XP_STRCHR(t, '/')) != NULL) { - p[1]= '\0'; - } - else { - XP_FREE(t); - count++; - continue; - } - } - } - - /* if we're scrolling && lastURLCompletion is not empty && what we're currently - matching against isn't what we last returned, or, what we're matching against - is identical to what the caller passed in. */ - if( (( scroll && lastURLCompletion && (!strcasecomp(t, lastURLCompletion))) ) - || - (!strcasecomp(t, criteria)) ) { - - if(!scroll) { - XP_FREEIF(lastURLCompletion); - lastURLCompletion=NULL; - XP_FREE(t); - return notFoundDone; - } - - XP_FREE(t); - count++; - continue; - } - XP_FREEIF(lastURLCompletion); - lastURLCompletion = XP_STRDUP(t); - *result = XP_STRDUP(t); - XP_FREE(t); - return foundDone; - } - - XP_FREE(t); - count++; - } - while( 0 == (gh_database->seq)(gh_database, &key, &data, R_NEXT) ); - if(!scroll) { - XP_FREEIF(lastURLCompletion); - lastURLCompletion=NULL; - } - return notFoundDone; -} diff --git a/mozilla/lib/libmisc/mime.c b/mozilla/lib/libmisc/mime.c deleted file mode 100644 index 3cd4980d076..00000000000 --- a/mozilla/lib/libmisc/mime.c +++ /dev/null @@ -1,212 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "xp.h" -#include "mime.h" -#include "prefapi.h" -#include "msgcom.h" -#include "libi18n.h" -#include "xpgetstr.h" - -extern int MK_MSG_NO_RETURN_ADDRESS; -extern int MK_MSG_NO_RETURN_ADDRESS_AT; -extern int MK_MSG_NO_RETURN_ADDRESS_DOT; -extern int MK_OUT_OF_MEMORY; -extern int MK_SIGNATURE_TOO_LONG; -extern int MK_SIGNATURE_TOO_WIDE; - -const int16 default_csid = 0; -const int address_max_length = 42; - -#define mime_enc_7bit 0 -#define mime_enc_8bit 1 -#define mime_enc_qp 2 -#define mime_enc_b64 3 - -/* build a mailto: url address given a to field - * - * returns a malloc'd string - */ -PUBLIC char * -MIME_BuildMailtoURLAddress(const char * to) -{ - char * rv=0; - - StrAllocCopy(rv,"mailto:"); - StrAllocCat(rv, to); - - return(rv); -} - - -/* build a news: url address given a partial news post - * URL and the newsgroups line - * - * returns a malloc'd string - */ -PUBLIC char * -MIME_BuildNewspostURLAddress(const char *partial_newspost_url, - const char *newsgroups) -{ - char * rv=0; - - if (!partial_newspost_url) - partial_newspost_url = "news:"; - StrAllocCopy(rv, partial_newspost_url); - StrAllocCat(rv, newsgroups); - - return(rv); -} - - -/* - Returns the appropriate contents of a From: field of a mail message - originating from the current user. This calls FE_UsersFullName() - and FE_UsersMailAddress() and correctly munges the values. - - A new string is returned, which you must free when you're done with it. - - An email address must be provided but a user name is optional. If no - address has been entered or other errors are encountered return NULL. -*/ -PUBLIC char * -MIME_MakeFromField (void) -{ - return MSG_MakeFullAddress(FE_UsersFullName(), FE_UsersMailAddress()); -} - -/* Ok, this doesn't really belong here... */ - -void -MISC_ValidateSignature (MWContext *context, const char *signature) -{ - int max_columns = 0; - int column = 0; - int newlines = 0; - const char *sig = signature; - - /* ensure that sig is valid */ - if (!sig) return; - - for (; *sig; sig++) - { - if (*sig == '\n' || *sig == '\r') - { - /* Treat CR, LF, CRLF, and LFCR as a single line-break. */ - if ((sig[0] == '\n' && sig[1] == '\r') || - (sig[0] == '\r' && sig[1] == '\n')) - sig++; - - if (column > max_columns) - max_columns = column; - newlines++; - column = 0; - } - else - { - column++; - } - } - /* If the last line doesn't end in a newline, pretend it does. */ - if (column != 0) - newlines++; - if (column > max_columns) - max_columns = column; - - /* If the signature begins with "--" followed by whitespace or a newline, - that means that the pseudo-standard sig delimiter "-- \n" is actually - in the file, so don't count that as a "line". */ - if (signature [0] == '-' && - signature [1] == '-' && - (signature [2] == ' ' || - (signature [2] == '\012' || - signature [2] == '\015'))) - newlines--; - - if (newlines > 4) - { - FE_Alert (context, XP_GetString (MK_SIGNATURE_TOO_LONG)); - } - else if (max_columns > 79) - { - FE_Alert (context, XP_GetString (MK_SIGNATURE_TOO_WIDE)); - } -} - -int -MISC_ValidateReturnAddress (MWContext *context, const char *addr) -{ - char *at; - char *dot; - char *fmt = 0; - XP_Bool validate; - - PREF_GetBoolPref("mail.identity.validate_addr", &validate); - - if ( !validate ) return 0; - -#if defined(XP_WIN) || defined(XP_OS2) - if(FE_IsAltMailUsed(context)) - return 0; -#endif - - if (addr) - while (XP_IS_SPACE (*addr)) - addr++; - - if (!addr || !*addr) - { - FE_Alert (context, XP_GetString (MK_MSG_NO_RETURN_ADDRESS)); -#ifdef XP_MAC - FE_EditPreference(PREF_EmailAddress); -#endif - return -1; - } - - at = XP_STRRCHR (addr, '@'); - if (!at) - { - fmt = XP_GetString (MK_MSG_NO_RETURN_ADDRESS_AT); - goto FAIL; - } - dot = XP_STRCHR (at, '.'); - if (!dot) - { - fmt = XP_GetString (MK_MSG_NO_RETURN_ADDRESS_DOT); - goto FAIL; - } - - return 0; - -FAIL: - { - char *buf = (char *)XP_ALLOC (XP_STRLEN (addr) + XP_STRLEN (fmt) + 20); - if (!buf) return MK_OUT_OF_MEMORY; - - if ( ( XP_STRLEN (addr) > address_max_length ) && ( context != NULL ) ) - INTL_MidTruncateString( default_csid, addr, addr, address_max_length ); - - XP_SPRINTF (buf, fmt, addr); - FE_Alert (context, buf); - return -1; - } -} diff --git a/mozilla/lib/libmisc/misc.i b/mozilla/lib/libmisc/misc.i deleted file mode 100644 index 581e4bf6984..00000000000 --- a/mozilla/lib/libmisc/misc.i +++ /dev/null @@ -1,167 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - - -#ifndef MISC_I -#define MISC_I - -#include "xpresdef.h" - -BEGIN_STR (MISC_strings) - -ResDef(XP_BKMKS_HOURS_AGO, XP_MSG_BASE+282, - "%ld hours ago") - -ResDef(XP_BKMKS_DAYS_AGO, XP_MSG_BASE+283, - "%ld days ago") - - -ResDef(XP_BKMKS_COUNTALIASES_MANY, XP_MSG_BASE+284, - "There are %ld aliases to this %s") - -ResDef(XP_BKMKS_COUNTALIASES_ONE, XP_MSG_BASE+285, - "There is 1 alias to this %s") - -ResDef(XP_BKMKS_COUNTALIASES_NONE, XP_MSG_BASE+286, - "There are no aliases to this %s") - -ResDef(XP_BKMKS_INVALID_NICKNAME, XP_MSG_BASE+287, - "Nicknames may only have letters and numbers\n\ -in them. The nickname has not been changed.") - -ResDef(XP_BKMKS_NICKNAME_ALREADY_EXISTS, XP_MSG_BASE+288, - "An entry with this nickname already exists.\n\ -The nickname has not been changed.") - -ResDef(XP_BKMKS_REMOVE_THIS_ITEMS_ALIASES, XP_MSG_BASE+289, - "This item has %d alias(es). These aliases \n\ -will be removed, as well.") - -ResDef(XP_BKMKS_REMOVE_SOME_ITEMS_ALIASES, XP_MSG_BASE+290, - "Some of the items you are about to remove \n\ -have one or more aliases. The aliases will \n\ -be removed, as well.") - -ResDef(XP_BKMKS_AUTOGENERATED_FILE, XP_MSG_BASE+291, - "<!-- This is an automatically generated file.") - -ResDef(XP_BKMKS_READ_AND_OVERWRITE, XP_MSG_BASE+292, - "It will be read and overwritten.") - -ResDef(XP_BKMKS_DO_NOT_EDIT, XP_MSG_BASE+293, - "Do Not Edit! -->") - -ResDef(XP_BKMKS_NEW_HEADER, XP_MSG_BASE+294, - "New Folder") - -ResDef(XP_BKMKS_NEW_BOOKMARK, XP_MSG_BASE+295, - "New Bookmark") - -ResDef(XP_BKMKS_NOT_FOUND, XP_MSG_BASE+296, - "Not Found") - -ResDef(XP_BKMKS_OPEN_BKMKS_FILE, XP_MSG_BASE+297, - "Open bookmarks file") - -ResDef(XP_BKMKS_IMPORT_BKMKS_FILE, XP_MSG_BASE+298, -"Import bookmarks file") - -ResDef(XP_BKMKS_SAVE_BKMKS_FILE, XP_MSG_BASE+299, - "Save bookmarks file") - -ResDef(XP_BKMKS_LESS_THAN_ONE_HOUR_AGO, XP_MSG_BASE+300, - "Less than one hour ago") - - ResDef(XP_GLHIST_DATABASE_CLOSED, XP_MSG_BASE+301, - "The global history database is currently closed") - -ResDef(XP_GLHIST_UNKNOWN, XP_MSG_BASE+302, - "Unknown") - -ResDef(XP_GLHIST_DATABASE_EMPTY, XP_MSG_BASE+303, -"The global history database is currently empty") - -ResDef(XP_GLHIST_HTML_DATE, XP_MSG_BASE+304, - "<BR>\n<TT>Date:</TT> %s<P>") - -ResDef(XP_GLHIST_HTML_TOTAL_ENTRIES, XP_MSG_BASE+305, - "\n<HR>\n<TT>Total entries:</TT> %ld<P>") - - /* this isn't used, I think. Shall we remove it? */ -ResDef(XP_HOTLIST_DEF_NAME, XP_MSG_BASE+306, - "Personal Bookmarks") - -ResDef(XP_HOTLIST_AUTOGENERATED_FILE, XP_MSG_BASE+307, - "<!-- This is an automatically generated file.\n\ -It will be read and overwritten.\n\ -Do Not Edit! -->\n") - -ResDef(XP_GLHIST_INFO_HTML, XP_MSG_BASE + 551, - "<TITLE>Information about the Netscape global history</TITLE>\n\ -<h2>Global history entries</h2>\n\ -<HR>") - -ResDef(XP_BKMKS_SOMEONE_S_BOOKMARKS, XP_MSG_BASE + 591, - "%s%s's Bookmarks%s") - -ResDef(XP_BKMKS_PERSONAL_BOOKMARKS, XP_MSG_BASE + 592, - "%sPersonal Bookmarks%s") - -ResDef(XP_BKMKS_SOMEONE_S_ADDRESSBOOK, XP_MSG_BASE + 593, - "%s%s's Address book%s") - -ResDef(XP_BKMKS_PERSONAL_ADDRESSBOOK, XP_MSG_BASE + 594, - "%sPersonal Address book%s") - -ResDef(XP_BKMKS_IMPORT_ADDRBOOK, XP_MSG_BASE + 636, -"Import address book file") - -ResDef(XP_BKMKS_SAVE_ADDRBOOK, XP_MSG_BASE + 637, -"Save address book file") - -ResDef(XP_BKMKS_BOOKMARK, XP_MSG_BASE + 638, -"bookmark" ) - -ResDef(XP_BKMKS_ENTRY, XP_MSG_BASE + 639, -"entry" ) - -ResDef(XP_BKMKS_SECONDS, XP_MSG_BASE + 640, -"%ld seconds" ) - -ResDef(XP_BKMKS_MINUTES, XP_MSG_BASE + 641, -"%ld minutes" ) - -ResDef(XP_BKMKS_HOURS_MINUTES, XP_MSG_BASE + 642, -"%ld hours %ld minutes") - -ResDef(XP_BKMKS_HEADER, XP_MSG_BASE + 643, -"Main Bookmarks" ) - -ResDef(XP_ADDRBOOK_HEADER, XP_MSG_BASE + 644, -"Address Book" ) - -ResDef(MK_MSG_WRAP_LONG_LINES, XP_MSG_BASE + 645, -"Wrap long lines" ) - - -END_STR (MISC_strings) - -#endif diff --git a/mozilla/lib/libmisc/miscinit.c b/mozilla/lib/libmisc/miscinit.c deleted file mode 100644 index 2408aba3861..00000000000 --- a/mozilla/lib/libmisc/miscinit.c +++ /dev/null @@ -1,106 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "sec.h" -#include "ssl.h" -#ifdef SOURCE_KIT -#include "sslimpl.h" -#else /* SOURCE_KIT */ -#include "impl.h" -#endif /* SOURCE_KIT */ -#include "nspr.h" -#ifdef SOURCE_KIT -#ifdef FORTEZZA -/* Sigh for FortezzaGlobalinit() */ -#include "fortezza.h" -#endif /* FORTEZZA */ -#endif /* SOURCE_KIT */ - -extern int XP_ERRNO_EWOULDBLOCK; - -static int sec_inited = 0; -void SEC_Init(void) -{ - /* PR_Init() must be called before SEC_Init() */ -#if !defined(SERVER_BUILD) - XP_ASSERT(PR_Initialized() == PR_TRUE); -#endif - if (sec_inited) - return; - - SEC_RNGInit(); -#ifdef SOURCE_KIT - SSL_InitHashLock(); - SSL3_Init(); -#ifdef FORTEZZA - FortezzaGlobalInit(); -#endif /* FORTEZZA */ -#endif /* SOURCE_KIT */ - sec_inited = 1; -} - -#ifdef SOURCE_KIT - -static PRIntervalTime sec_io_timeout = PR_INTERVAL_NO_TIMEOUT; - -void SEC_Set_IO_Timeout(PRUint32 timeout) -{ - sec_io_timeout = PR_SecondsToInterval(timeout); -} - -static void SEC_Map_Error() -{ - int err, block; - - err = _PR_MD_GET_SOCKET_ERROR(); - block = ((err == _MD_EWOULDBLOCK) || (err == _MD_EAGAIN) || - (sec_io_timeout == PR_INTERVAL_NO_WAIT && err == _MD_ETIMEDOUT)); - if (block) - err = XP_ERRNO_EWOULDBLOCK; - XP_SetError(err); -} - -int SEC_Send(int s, const void *buf, int len, int flags) -{ - int rv; - -#if defined(__sun) && defined(SYSV) - rv = _PR_MD_SEND(s, buf, len, flags, sec_io_timeout); -#else - rv = _PR_MD_SEND(s, buf, len, 0, sec_io_timeout); -#endif - if (rv < 0) - SEC_Map_Error(); - return rv; -} - -int SEC_Recv(int s, void *buf, int len, int flags) -{ - int rv; - - rv = _PR_MD_RECV(s, buf, len, flags, sec_io_timeout); - if (rv < 0) - SEC_Map_Error(); - return rv; -} - -#endif /* SOURCE_KIT */ diff --git a/mozilla/lib/libmisc/shist.c b/mozilla/lib/libmisc/shist.c deleted file mode 100644 index 71f3395987b..00000000000 --- a/mozilla/lib/libmisc/shist.c +++ /dev/null @@ -1,1120 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - Session History module - - Public Functions - void SHIST_InitSession(MWContext * ctxt); - void SHIST_AddDocument(MWContext * ctxt, char * name, char * url, - void * loc); - const char * SHIST_GetNext(MWContext * ctxt); - const char * SHIST_GetPrevious(MWContext * ctxt); - const char * SHIST_GetEntry(MWContext * ctxt, int entry_number); - int SHIST_CanGoBack(MWContext * ctxt); - int SHIST_CanGoForward(MWContext * ctxt); -*/ - -/*#define HAS_FE*/ - -#include "shist.h" - -#include "libi18n.h" - -#include "net.h" -#include "xp.h" -#include "secnav.h" - -#ifdef EDITOR -#include "edt.h" /* for EDT_IS_EDITOR macro */ -extern char *XP_NEW_DOC_URL; -extern char *XP_NEW_DOC_NAME; -#include "xpgetstr.h" -#endif - -#include "libmocha.h" -#include "glhist.h" - -static int32 unique_id; - -PRIVATE int shist_update_FE(MWContext * ctxt); - - -PUBLIC History_entry * -SHIST_HoldEntry (History_entry * entry) -{ - if (entry) - entry->ref_count++; - return entry; -} - -PUBLIC void -SHIST_FreeHistoryEntry (MWContext * ctxt, History_entry * entry) -{ - if(entry && --entry->ref_count == 0) - { - if(entry->title) - XP_FREE (entry->title); - if(entry->address) - XP_FREE(entry->address); - if(entry->content_name) - XP_FREE(entry->content_name); - if(entry->referer) - XP_FREE(entry->referer); - - if(entry->post_data_is_file && entry->post_data) - XP_FileRemove(entry->post_data, xpFileToPost); - if(entry->post_data) - XP_FREE(entry->post_data); - if(entry->post_headers) - XP_FREE(entry->post_headers); - XP_FREE(entry->sec_info); - if(entry->refresh_url) - XP_FREE(entry->refresh_url); - if(entry->wysiwyg_url) - XP_FREE(entry->wysiwyg_url); - if(entry->page_services_url) - XP_FREE(entry->page_services_url); - if(entry->privacy_policy_url && entry->privacy_policy_url != (char*)(-1)) - XP_FREE(entry->privacy_policy_url); - -#ifdef MOZ_NGLAYOUT - XP_ASSERT(0); -#else - if(entry->savedData.FormList) - LO_FreeDocumentFormListData(ctxt, entry->savedData.FormList); - - if(entry->savedData.EmbedList) - LO_FreeDocumentEmbedListData(ctxt, entry->savedData.EmbedList); - - if(entry->savedData.Grid) - LO_FreeDocumentGridData(ctxt, entry->savedData.Grid); - - if(entry->savedData.Window) - LM_DropSavedWindow(ctxt, entry->savedData.Window); -#endif /* MOZ_NGLAYOUT */ - if(entry->savedData.OnLoad) - PA_FREE(entry->savedData.OnLoad); - if(entry->savedData.OnUnload) - PA_FREE(entry->savedData.OnUnload); - if(entry->savedData.OnFocus) - PA_FREE(entry->savedData.OnFocus); - if(entry->savedData.OnBlur) - PA_FREE(entry->savedData.OnBlur); - if(entry->savedData.OnHelp) - PA_FREE(entry->savedData.OnHelp); - if(entry->savedData.OnMouseOver) - PA_FREE(entry->savedData.OnMouseOver); - if(entry->savedData.OnMouseOut) - PA_FREE(entry->savedData.OnMouseOut); - if(entry->savedData.OnDragDrop) - PA_FREE(entry->savedData.OnDragDrop); - if(entry->savedData.OnMove) - PA_FREE(entry->savedData.OnMove); - if(entry->savedData.OnResize) - PA_FREE(entry->savedData.OnResize); - - - XP_FREE(entry); - } -} - -PUBLIC History_entry * -SHIST_CreateHistoryEntry (URL_Struct * URL_s, char * title) -{ - History_entry * new_entry; - - if(!URL_s) - return(NULL); - - new_entry = XP_NEW(History_entry); - - if(!new_entry) - return(NULL); - - memset(new_entry, 0, sizeof(History_entry)); - - new_entry->ref_count = 1; - new_entry->unique_id = ++unique_id; - new_entry->history_num = URL_s->history_num; - - new_entry->method = URL_s->method; - new_entry->is_binary = URL_s->is_binary; - new_entry->is_active = URL_s->is_active; - new_entry->is_netsite = URL_s->is_netsite; - new_entry->last_modified = URL_s->last_modified; - new_entry->post_data_size = URL_s->post_data_size; - new_entry->post_data_is_file = URL_s->post_data_is_file; - new_entry->security_on = URL_s->security_on; - new_entry->sec_info = SECNAV_CopySSLSocketStatus(URL_s->sec_info); - - new_entry->refresh = URL_s->refresh; - -#ifdef NU_CACHE - /* TODO -Gagan */ - /* - new_entry->transport_method = CacheManager_Contains(URL_s) ? - MemModule_Contains(URL_s->address) ? SHIST_CAME_FROM_MEMORY_CACHE : - SHIST_CAME_FROM_DISK_CACHE : SHIST_CAME_FROM_NETWORK; - */ - new_entry->transport_method = SHIST_CAME_FROM_NETWORK; -#else - if(URL_s->memory_copy) - new_entry->transport_method = SHIST_CAME_FROM_MEMORY_CACHE; - else if(URL_s->cache_file) - new_entry->transport_method = SHIST_CAME_FROM_DISK_CACHE; - else - new_entry->transport_method = SHIST_CAME_FROM_NETWORK; -#endif /* NU_CACHE */ - - StrAllocCopy(new_entry->referer, URL_s->referer); - StrAllocCopy(new_entry->refresh_url, URL_s->refresh_url); - StrAllocCopy(new_entry->wysiwyg_url, URL_s->wysiwyg_url); - - StrAllocCopy(new_entry->title, title); - StrAllocCopy(new_entry->address, URL_s->address); - StrAllocCopy(new_entry->content_name, URL_s->content_name); - StrAllocCopy(new_entry->post_data, URL_s->post_data); - StrAllocCopy(new_entry->post_headers, URL_s->post_headers); - if (URL_s->privacy_policy_url == (char*)(-1)) { - new_entry->privacy_policy_url = (char*)(-1); - } else { - StrAllocCopy(new_entry->privacy_policy_url, URL_s->privacy_policy_url); - } - StrAllocCopy(new_entry->page_services_url, URL_s->page_services_url); - StrAllocCopy(new_entry->etag, URL_s->etag); - - return(new_entry); -} - - -PUBLIC URL_Struct * -SHIST_CreateURLStructFromHistoryEntry(MWContext * ctxt, History_entry * entry) -{ - URL_Struct * URL_s; - if(!entry) - return(NULL); - - URL_s = NET_CreateURLStruct(entry->address, NET_DONT_RELOAD); - if(!URL_s) - return(NULL); - - URL_s->method = entry->method; - StrAllocCopy(URL_s->content_name, entry->content_name); - StrAllocCopy(URL_s->post_data, entry->post_data); - StrAllocCopy(URL_s->post_headers, entry->post_headers); - - StrAllocCopy(URL_s->referer, entry->referer); - StrAllocCopy(URL_s->refresh_url, entry->refresh_url); - StrAllocCopy(URL_s->wysiwyg_url, entry->wysiwyg_url); - - StrAllocCopy(URL_s->etag, entry->etag); - - URL_s->refresh = entry->refresh; - URL_s->security_on = entry->security_on; - URL_s->sec_info = SECNAV_CopySSLSocketStatus(entry->sec_info); - - URL_s->post_data_size = entry->post_data_size; - URL_s->post_data_is_file = entry->post_data_is_file; - URL_s->position_tag = entry->position_tag; - URL_s->history_num = SHIST_GetIndex(&ctxt->hist, entry); - URL_s->savedData = entry->savedData; /* copy whole struct */ - URL_s->is_binary = entry->is_binary; - URL_s->is_active = entry->is_active; - URL_s->is_netsite = entry->is_netsite; - URL_s->last_modified = entry->last_modified; - - return(URL_s); -} - -URL_Struct * -SHIST_CreateWysiwygURLStruct(MWContext * ctxt, History_entry * entry) -{ - URL_Struct *URL_s; - - URL_s = SHIST_CreateURLStructFromHistoryEntry(ctxt, entry); - if (URL_s && URL_s->wysiwyg_url) - { - StrAllocCopy(URL_s->address, URL_s->wysiwyg_url); - } - return URL_s; -} - -/* - * SHIST_StripProtocol - * - * Given a URL (eg, http://foo.com/foo/bar), strips off the protocol part. This does not - * create a new string but returns an index into the original URL. - */ - -char* SHIST_StripProtocol ( char* inURL ) -{ - char* startOfAddress; - - if ( !inURL ) - return NULL; - - startOfAddress = strchr ( inURL, ':' ); /* find the colon */ - if ( startOfAddress ) - { - if ( *(startOfAddress+1) == '/' ) - if ( *(startOfAddress+2) == '/' ) /* http://foo, ftp://foo ... */ - startOfAddress += 3; - else /* can this case ever exist? */ - startOfAddress += 2; - else /* mailto:foo or news:foo */ - startOfAddress++; - } - else /* no colons, should never happen... */ - startOfAddress = inURL; - - return startOfAddress; - -} /* SHIST_StripProtocol */ - - -/* --- - - Name: shist_update_FE - Parameters: - ctxt - (read) session context - Returns: - status from frontend - Description: - The history list has changed. Make sure the forward / back button - on the front end are in sync. - ---- */ -PRIVATE int -shist_update_FE(MWContext * ctxt) -{ - int status = TRUE; - -#ifdef XP_UNIX - - if ((ctxt->is_grid_cell)&&(ctxt->grid_parent != NULL)) - { - status = shist_update_FE(ctxt->grid_parent); - } - - if(ctxt->hist.num_entries > ctxt->hist.cur_doc) - { - status = FE_EnableForwardButton(ctxt); - } - else - { - if ((ctxt->grid_children != NULL)&&(LO_GridCanGoForward(ctxt))) - { - status = FE_EnableForwardButton(ctxt); - } - else - { - status = FE_DisableForwardButton(ctxt); - } - } - - if(status < 0) - return(status); - - if(ctxt->hist.cur_doc > 1) - { - status = FE_EnableBackButton(ctxt); - } - else - { - if ((ctxt->grid_children != NULL)&&(LO_GridCanGoBackward(ctxt))) - { - status = FE_EnableBackButton(ctxt); - } - else - { - status = FE_DisableBackButton(ctxt); - } - } - -#endif /* XP_UNIX */ - - return(status); - -} /* shist_update_FE */ - - -/* --- - - Name: SHIST_InitSession - Parameters: - ctxt - (modified) session context - Returns: - void - Description: - Initialize the session history module. Since we are initializing - assume there is not a current history list that we need to free. - ---- */ -PUBLIC void -SHIST_InitSession(MWContext * ctxt) -{ - - if(!ctxt) - return; - - ctxt->hist.cur_doc = 0; - ctxt->hist.cur_doc_ptr = 0; - ctxt->hist.list_ptr = XP_ListNew(); - ctxt->hist.num_entries = 0; - ctxt->hist.max_entries = -1; - shist_update_FE(ctxt); - -#ifdef JAVA - PR_INIT_CLIST(&ctxt->javaContexts); -#if defined(XP_PC) || defined(XP_UNIX) - { - char *ev = getenv("NS_HISTORY_LIMIT"); - int limit = 50; - if (ev && ev[0]) { - limit = atoi(ev); - if ((limit < 3) || (limit >= 32767)) { - limit = 50; - } - } - ctxt->hist.max_entries = limit; - } -#endif /* PC or UNIX */ -#endif /* JAVA */ - -} /* SHIST_InitSession */ - -PUBLIC void -SHIST_EndSession(MWContext * ctxt) -{ - XP_List * list_ptr = ctxt->hist.list_ptr; - History_entry * old_entry; - - while((old_entry = (History_entry *) XP_ListRemoveTopObject(list_ptr))!=0) - SHIST_FreeHistoryEntry(ctxt, old_entry); - - XP_ListDestroy(ctxt->hist.list_ptr); - - ctxt->hist.list_ptr = 0; - ctxt->hist.cur_doc = 0; - ctxt->hist.cur_doc_ptr = 0; -} - -/* duplicate the given entry - */ -PUBLIC History_entry * -SHIST_CloneEntry(History_entry * old_entry) -{ - History_entry *new_entry = NULL; - - if(old_entry == NULL) - return NULL; - - new_entry = XP_NEW_ZAP(History_entry); - - if(new_entry == NULL) - return NULL; - - StrAllocCopy(new_entry->title, old_entry->title); - StrAllocCopy(new_entry->address, old_entry->address); - StrAllocCopy(new_entry->content_name, old_entry->content_name); - if (old_entry->privacy_policy_url == (char*)(-1)) { - new_entry->privacy_policy_url = (char*)(-1); - } else { - StrAllocCopy(new_entry->privacy_policy_url, old_entry->privacy_policy_url); - } - StrAllocCopy(new_entry->referer, old_entry->referer); - StrAllocCopy(new_entry->post_data, old_entry->post_data); - StrAllocCopy(new_entry->post_headers, old_entry->post_headers); - - new_entry->unique_id = ++unique_id; - new_entry->post_data_size = old_entry->post_data_size; - new_entry->post_data_is_file = old_entry->post_data_is_file; - new_entry->method = old_entry->method; - new_entry->is_binary = old_entry->is_binary; - new_entry->is_active = old_entry->is_active; - new_entry->is_netsite = old_entry->is_netsite; - new_entry->position_tag = old_entry->position_tag; - new_entry->security_on = old_entry->security_on; - new_entry->sec_info = SECNAV_CopySSLSocketStatus(old_entry->sec_info); - - new_entry->last_modified = old_entry->last_modified; - - StrAllocCopy(new_entry->page_services_url, old_entry->page_services_url); - - new_entry->ref_count = 1; - return new_entry; - -} - - - -/* copys all the session data from the old context into the - * new context. Does not effect data in old_context session history - * - * if new_context has not had SHIST_InitSession called for it - * it will be called to initalize it. - */ -PUBLIC void -SHIST_CopySession(MWContext * new_context, MWContext * old_context) -{ - XP_List * list_ptr; - History_entry *new_entry, *old_entry; - int x, y; - - if(!new_context || !old_context) - return; - - if(!new_context->hist.list_ptr) - SHIST_InitSession(new_context); - - list_ptr = old_context->hist.list_ptr; - - x = XP_ListCount(new_context->hist.list_ptr); - y = XP_ListCount(old_context->hist.list_ptr); - - while((old_entry = (History_entry *) XP_ListNextObject(list_ptr))!=0) { -#ifdef EDITOR - /* Skip new document entries when copying from Editor context */ - if ( EDT_IS_EDITOR(old_context) && old_entry->address && - (0 == XP_STRCMP(old_entry->address, XP_NEW_DOC_NAME) || - 0 == XP_STRCMP(old_entry->address, XP_NEW_DOC_URL)) ) - { - continue; - } -#endif - new_entry = SHIST_CloneEntry(old_entry); - if(!new_entry) - continue; - - XP_ListAddObjectToEnd(new_context->hist.list_ptr, SHIST_HoldEntry(new_entry)); - } - - new_context->hist.num_entries = XP_ListCount(new_context->hist.list_ptr); - new_context->hist.max_entries = old_context->hist.max_entries; - if(new_context->hist.num_entries > 0) { - new_context->hist.cur_doc = 1; - new_context->hist.cur_doc_ptr = - (History_entry *) XP_ListGetObjectNum(new_context->hist.list_ptr, - new_context->hist.cur_doc); - } - - shist_update_FE(new_context); -} - -/* --- - - Name: SHIST_AddDocument - Parameters: - ctxt - (modified) session context - name - (read) name of document to add - url - (read) url of document to add - loc - (read) location in current document for backtracking later - Returns: - void - Description: - Add a document after the current document in the history list. If - there were other documents after the current document free their - records cuz we won't have any logical way to get to them via the - history list. - - We need to save some sort of location information about the current - document so if we backtrack to it later we know what to show to the - user. - ---- */ -PUBLIC void -SHIST_AddDocument(MWContext * ctxt, History_entry * new_entry) -{ - int count; -/* XP_List * list_ptr = ctxt->hist.list_ptr;*/ - History_entry * old_entry; - - if(!ctxt || !new_entry) - return; -#ifdef EDITOR - /* If not done, get our strings out of XP_MSG.I resources - (Probably done during first NET_GetURL() call, but lets be sure) - */ - if (XP_NEW_DOC_URL == NULL) { - StrAllocCopy(XP_NEW_DOC_URL, "about:editfilenew"); - /* StrAllocCopy(XP_NEW_DOC_URL, XP_GetString(XP_NEW_EDIT_DOC_URL) ); */ - } - if (XP_NEW_DOC_NAME == NULL) { - StrAllocCopy(XP_NEW_DOC_NAME, "file:///Untitled" ); - /* StrAllocCopy(XP_NEW_DOC_NAME, XP_GetString(XP_NEW_EDIT_DOC_NAME) );*/ - } - /* Detect attempts to add "about:editfilenew" - history entry and replace with "file:///Untitled". - */ - if (new_entry->address && - 0 == XP_STRCMP(new_entry->address, XP_NEW_DOC_URL) ) - { - XP_FREE(new_entry->address); - /* Remove title */ - if(new_entry->title) { - XP_FREE(new_entry->title); - new_entry->title = NULL; /* as long as we're XP_FREEing it, lets NULL it out... */ - } - new_entry->address = XP_STRDUP(XP_NEW_DOC_NAME); - /* Leave title empty -- it will showup as "Untitled" in caption */ - /* new_entry->title = XP_STRDUP(XP_NEW_DOC_NAME); */ - /* Unlikely, but abort if no name generated */ - if (!new_entry->address) - { - SHIST_FreeHistoryEntry(ctxt, new_entry); - return; - } - } - -#endif - - /* If this new entry doesn't have a history_num, and it has the same - URL as the topmost history entry, then don't add this to the - history - just use the old one. */ - old_entry = SHIST_GetCurrent(&ctxt->hist); - if (old_entry && - !new_entry->history_num && - !old_entry->post_data && !new_entry->post_data && - !XP_STRCMP(old_entry->address, new_entry->address)) - { - /* don't add this one to the history */ - SHIST_FreeHistoryEntry(ctxt, new_entry); - return; - } - - /* Only web browser windows record history - mail, news, composition, - etc windows do not. - - In a non-web-browser window, cause there to be exactly one entry - on the history list (there needs to be one, because many things - use the history to find out the current URL.) Do this by emptying - out the list each time this is called - we will then add this entry - to then end of the now-empty list. - */ - if (ctxt->type != MWContextBrowser && ctxt->type != MWContextPane && - /* For mail and news windows, history_num is only non-zero when the - window is being resized - in which case, the only item on the - history has the same URL (right?) and we will copy the contents - of the new entry into the old, free the new entry, and not free - the form data that is in the old. Gag. */ - new_entry->history_num == 0) - { - XP_List * list_ptr = ctxt->hist.list_ptr; - History_entry * old_entry; - - while((old_entry = (History_entry *)XP_ListRemoveTopObject(list_ptr)) - !=0) - { - SHIST_FreeHistoryEntry(ctxt, old_entry); - } - ctxt->hist.cur_doc = 0; - ctxt->hist.cur_doc_ptr = 0; - } - - /* If this entry doesn't have a URL in it, throw it away. */ - if (!new_entry->address || !*new_entry->address) - { - SHIST_FreeHistoryEntry(ctxt, new_entry); - return; - } - - if(new_entry->history_num) - { - old_entry = (History_entry *) XP_ListGetObjectNum(ctxt->hist.list_ptr, - new_entry->history_num); - - /* make sure that we have the same entry in case something weird - * happened - * - * @@@ approx match. should check post data - */ - if(old_entry && - (!XP_STRCMP(old_entry->address, new_entry->address) || - old_entry->replace || - (old_entry->wysiwyg_url && - !XP_STRCMP(old_entry->wysiwyg_url, new_entry->address)))) - { - if(old_entry->replace) - { - StrAllocCopy(old_entry->title, new_entry->title); - StrAllocCopy(old_entry->address, new_entry->address); - StrAllocCopy(old_entry->post_data, new_entry->post_data); - StrAllocCopy(old_entry->post_headers, new_entry->post_headers); - - old_entry->post_data_size = new_entry->post_data_size; - old_entry->post_data_is_file = new_entry->post_data_is_file; - old_entry->method = new_entry->method; - old_entry->position_tag = new_entry->position_tag; - old_entry->is_binary = new_entry->is_binary; - old_entry->is_active = new_entry->is_active; - old_entry->is_netsite = new_entry->is_netsite; - - /* Unique identifier */ - old_entry->unique_id = ++unique_id; - } - - /* this stuff has the possibility of changing, - * so copy it - */ - StrAllocCopy(old_entry->referer, new_entry->referer); - StrAllocCopy(old_entry->refresh_url, new_entry->refresh_url); - StrAllocCopy(old_entry->wysiwyg_url, new_entry->wysiwyg_url); - StrAllocCopy(old_entry->content_name, new_entry->content_name); - - old_entry->refresh = new_entry->refresh; - old_entry->security_on = new_entry->security_on; - old_entry->sec_info = - SECNAV_CopySSLSocketStatus(new_entry->sec_info); - - old_entry->transport_method = new_entry->transport_method; - old_entry->last_modified = new_entry->last_modified; - old_entry->last_access = time(NULL); - - ctxt->hist.cur_doc = new_entry->history_num; - ctxt->hist.cur_doc_ptr = old_entry; - - SHIST_FreeHistoryEntry(ctxt, new_entry); - shist_update_FE(ctxt); - return; - } - /* something went wrong. Add it to the end of the list - */ - } - - new_entry->last_access = time(NULL); - - /* take 'em off from the end so we don't bust the XP_List layering */ - for(count = XP_ListCount(ctxt->hist.list_ptr); count > ctxt->hist.cur_doc; count--) { - old_entry = (History_entry *) XP_ListRemoveEndObject(ctxt->hist.list_ptr); - SHIST_FreeHistoryEntry(ctxt, old_entry); - } - - /* if the history list is too long, shorten it by taking things off - the start of the list. */ - if (ctxt->hist.max_entries > 0) { - while (ctxt->hist.cur_doc >= ctxt->hist.max_entries) - { - old_entry = (History_entry *) - XP_ListRemoveTopObject(ctxt->hist.list_ptr); - SHIST_FreeHistoryEntry(ctxt, old_entry); - ctxt->hist.cur_doc--; - } - } - - /* add the new element to the end */ - XP_ListAddObjectToEnd(ctxt->hist.list_ptr, new_entry); - ctxt->hist.num_entries = XP_ListCount(ctxt->hist.list_ptr); - - ctxt->hist.cur_doc++; - ctxt->hist.cur_doc_ptr = (History_entry *) XP_ListGetObjectNum(ctxt->hist.list_ptr, - ctxt->hist.cur_doc); - -#ifdef MOZ_NGLAYOUT - XP_ASSERT(0); -#else - LO_CleanupGridHistory(ctxt); - if (ctxt->is_grid_cell) - { - LO_UpdateGridHistory(ctxt); - } -#endif /* MOZ_NGLAYOUT */ - - shist_update_FE(ctxt); - -} /* SHIST_AddDocument */ - -#if defined(DEBUG) && !defined(_WINDOWS) -/* dump a history list to stdout */ -PUBLIC void -SHIST_DumpHistory(MWContext * ctxt) -{ - XP_List * list_ptr = ctxt->hist.list_ptr; - History_entry * entry; - - while((entry = (History_entry*) XP_ListNextObject(list_ptr))) - { -#ifdef XP_UNIX - printf("SHIST: cur_doc:%d address:%s \n", ctxt->hist.cur_doc, entry->address); -#endif - } -#ifdef XP_UNIX - printf("---End of History List---\n"); -#endif -} /* SHIST_DumpHistory */ -#endif /* DEBUG */ - - - -/* --- - Name: SHIST_GetPrevious - Return: - URL of previous document or NULL on failure - Parameters: - ctxt - (modified) window context - Description: - The entry returned should not be free'd by the caller - - calls FE functions to fix dimming of next and - previous buttons as needed. - ---- */ -PUBLIC History_entry * -SHIST_GetPrevious(MWContext * ctxt) -{ - /* check to make sure is a previous record */ - if(!ctxt || ctxt->hist.cur_doc < 2) - return NULL; - - return((History_entry *) XP_ListGetObjectNum(ctxt->hist.list_ptr, ctxt->hist.cur_doc-1)); -} - -PUBLIC History_entry * -SHIST_GetCurrent(History * hist) -{ - - if(!hist) - return NULL; - - /* return URL */ - return(hist->cur_doc_ptr); - -} - -#if defined(XP_WIN) || defined(XP_MAC) || defined(XP_OS2) -PUBLIC void -SHIST_SetTitleOfCurrentDoc( MWContext *context ) -{ - History_entry * he; - URL_Struct * pUrl; - XP_Bool hidden; - - if( !context ) - { - return; - } - - he = SHIST_GetCurrent( &context->hist ); - - if( he ) - { - /* StrAllocCopy( he->title, context->title ); */ - /* Let's save the History as UTF8 */ - /* added by cmanske: free existing and check for null title */ - XP_FREEIF(he->title); - if( context->title ) - he->title = (char*)INTL_ConvertLineWithoutAutoDetect( - INTL_DefaultWinCharSetID(context), - CS_UTF8, - (unsigned char*) context->title, - XP_STRLEN(context->title) - ); - /* - * This is the place where we set the title for *global* history hash records - * In addition to not making grid cells normal history entries we've added two - * more types, js_dependent windows and the Netcaster window. Yes, it's a hack - * but we're short on time. - */ - hidden = context->is_grid_cell || context->js_parent || - (context->name && !XP_STRCMP("Netcaster_SelectorTab", context->name)); - pUrl = NET_CreateURLStruct( he->address, NET_DONT_RELOAD ); - GH_UpdateURLTitle( pUrl, he->title, hidden); - NET_FreeURLStruct( pUrl ); - } -} -#else -PUBLIC void -SHIST_SetTitleOfCurrentDoc(History * hist, char * title) -{ - History_entry * he = SHIST_GetCurrent(hist); - URL_Struct *pUrl; - - if( he ) - { - StrAllocCopy(he->title, title); - - /* - * This is the place where we set the title for *global* history hash records - */ - pUrl = NET_CreateURLStruct( he->address, NET_DONT_RELOAD ); - GH_UpdateURLTitle( pUrl, he->title, FALSE ); - NET_FreeURLStruct( pUrl ); - } -} -#endif - -PUBLIC void -SHIST_SetCurrentDocFormListData(MWContext * context, void * form_data) -{ - History_entry * he = SHIST_GetCurrent(&context->hist); - - if(he) - { - he->savedData.FormList = form_data; - } -} - -PUBLIC void -SHIST_SetCurrentDocEmbedListData(MWContext * context, void * embed_data) -{ - History_entry * he = SHIST_GetCurrent(&context->hist); - - if(he) - { - he->savedData.EmbedList = embed_data; - } -} - -PUBLIC void -SHIST_SetCurrentDocGridData(MWContext * context, void * grid_data) -{ - History_entry * he = SHIST_GetCurrent(&context->hist); - - if(he) - { - he->savedData.Grid = grid_data; - } -} - -PUBLIC void -SHIST_SetCurrentDocWindowData(MWContext * context, void *window_data) -{ - History_entry * he = SHIST_GetCurrent(&context->hist); - - if(he) - { - he->savedData.Window = window_data; - } -} - -PUBLIC void -SHIST_SetPositionOfCurrentDoc(History * hist, int32 position_tag) -{ - History_entry * he = SHIST_GetCurrent(hist); - - if(he) - { - he->position_tag = position_tag; - } -} - - - - -/* --- - Name: SHIST_GetNext - Return: - URL of next document or NULL on failure - Parameters: - ctxt - (modified) window context - Description: - The URL string should NOT be free'd by the user. If they need - it for any length of time they should make their own copy. If there - is no previous document return NULL. - - This function will set the "current" document pointer to the - document whose URL was just retreived. - - There needs to be a way to get the correct location out too and - pass it to whomever wants it. - - Should probably call FE functions to fix dimming of next and - previous buttons as needed. - ---- */ -PUBLIC History_entry * -SHIST_GetNext(MWContext * ctxt) -{ - /* check to make sure is a next record */ - if(!ctxt || ctxt->hist.num_entries <= ctxt->hist.cur_doc) - return NULL; - - return((History_entry *) XP_ListGetObjectNum(ctxt->hist.list_ptr, ctxt->hist.cur_doc+1)); - -} /* SHIST_GetNext */ - -/* --- - - Return TRUE if there is a previous record in the history - list we can go back to else FALSE - ---- */ -PUBLIC int -SHIST_CanGoBack(MWContext * ctxt) -{ -#ifdef MOZ_NGLAYOUT - return FALSE; -#else - History *hist; - - hist = &ctxt->hist; - - /* check to make sure is a previous record */ - if(!hist || hist->cur_doc < 2) - { - if ((ctxt->grid_children != NULL)&&(LO_GridCanGoBackward(ctxt))) - { - return TRUE; - } - return FALSE; - } - return TRUE; -#endif /* MOZ_NGLAYOUT */ -} - -/* --- - - Return TRUE if there is a next record in the history - list we can go forward to else FALSE - ---- */ -PUBLIC int -SHIST_CanGoForward(MWContext * ctxt) -{ -#ifdef MOZ_NGLAYOUT - return FALSE; -#else - History *hist; - - hist = &ctxt->hist; - - /* check to make sure is a next record */ - if(!hist || hist->num_entries <= hist->cur_doc) - { - if ((ctxt->grid_children != NULL)&&(LO_GridCanGoForward(ctxt))) - { - return TRUE; - } - return FALSE; - } - - return TRUE; -#endif /* MOZ_NGLAYOUT */ -} - - -/* --- - - Return the URL for a document in the middle of the history list. - entry_number is the zero based index of the entry to look up - the current document pointers are updated appropriately - returns NULL on failure or a string that the user should NOT - free - ---- */ -PUBLIC History_entry * -SHIST_GetEntry(History * hist, int entry_number) -{ - /* validate parameters */ - if(!hist) - return NULL; - - /* return the current URL */ - return((History_entry *) XP_ListGetObjectNum(hist->list_ptr, entry_number+1)); - -} /* SHIST_GetEntry */ - -PUBLIC int -SHIST_GetIndex(History * hist, History_entry * entry) -{ - return(XP_ListGetNumFromObject(hist->list_ptr, entry)); -} - -PUBLIC History_entry * -SHIST_GetObjectNum(History * hist, int index) -{ - return((History_entry *)XP_ListGetObjectNum(hist->list_ptr, index)); -} - - -/* sets the current doc pointer to the index specified in the call - */ -PUBLIC void -SHIST_SetCurrent(History * hist, int entry_number) -{ - hist->cur_doc = entry_number; - hist->cur_doc_ptr = SHIST_GetObjectNum(hist, hist->cur_doc); -} - - - -/* --- - - Return a list of the current history list - - DO NOT FREE the returned values - ---- */ -PUBLIC XP_List * -SHIST_GetList(MWContext * ctxt) -{ - - /* error checking */ - if(!ctxt) - return NULL; - - return(ctxt->hist.list_ptr); - -} /* SHIST_GetList */ - - -/* Returns TRUE if the current page handles Page Services - and FALSE if it doesn't. -*/ - -PUBLIC int -SHIST_CurrentHandlesPageServices(MWContext * ctxt) -{ - History_entry * entry; - - if(ctxt){ - entry = SHIST_GetCurrent(&ctxt->hist); - if(entry){ - return (entry->page_services_url ? TRUE : FALSE); - } - } - - return FALSE; - - - -} - -/* Returns the url of the page that contains the properties - of the current page if Page Services is available. It returns - NULL if Page Services is not available*/ -PUBLIC char * -SHIST_GetCurrentPageServicesURL(MWContext * ctxt) -{ - History_entry * entry; - - if(ctxt){ - entry = SHIST_GetCurrent(&ctxt->hist); - if(entry){ - return entry->page_services_url; - } - } - - return NULL; - -} - diff --git a/mozilla/lib/libmisc/undo.c b/mozilla/lib/libmisc/undo.c deleted file mode 100644 index 8c587c00a9f..00000000000 --- a/mozilla/lib/libmisc/undo.c +++ /dev/null @@ -1,448 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - undo.c --- undo facilities - */ - -#include "xp.h" /* For XP_Bool... */ -#include "undo.h" - - -extern int MK_OUT_OF_MEMORY; - - -typedef enum { - BOUNDARY, - EVENT -} undo_event_type; - -typedef struct undo_event -{ - undo_event_type type; - struct undo_event* next; - struct undo_event* prev; - void* closure; - int (*undoit)(void*); - void (*freeit)(void*); - void* tag; - void (*freetag)(void*); -} undo_event; - - -struct UndoState { - undo_event* events; - undo_event* redoevents; - int depth; - XP_Bool undoing; - XP_Bool redoing; - XP_Bool loggedsomething; - int count; - XP_AllocStructInfo allocinfo; - int maxdepth; - XP_Bool discardall; -}; - - - - -#ifdef DEBUG -static void -undo_check_integrity(UndoState* state) -{ - int i; - for (i=0 ; i<2 ; i++) { - undo_event** start; - undo_event* tmp; - int count1, count2; - if (i == 0) { - start = &(state->redoevents); - } else { - start = &(state->events); - } - if (*start) { - count1 = 0; - for (tmp = (*start)->next ; tmp != *start ; tmp = tmp->next) { - count1++; - } - count2 = 0; - for (tmp = (*start)->prev ; tmp != *start ; tmp = tmp->prev) { - count2++; - } - XP_ASSERT(count1 == count2); - } - } -} -#else -#define undo_check_integrity(state) /* no-op */ -#endif - - - -UndoState* -UNDO_Create(int maxdepth) -{ - UndoState* state = XP_NEW_ZAP(UndoState); - if (state) { - state->maxdepth = maxdepth; - XP_InitAllocStructInfo(&(state->allocinfo), sizeof(undo_event)); - } - return state; -} - - -static void -undo_free_list(UndoState* state, undo_event** list) -{ - undo_event* tmp; - undo_event* next; - undo_check_integrity(state); - if (*list) { - (*list)->prev->next = NULL; - for (tmp = *list ; tmp ; tmp = next) { - next = tmp->next; - if (tmp->freeit) (*tmp->freeit)(tmp->closure); - if (tmp->freetag) (*tmp->freetag)(tmp->tag); - XP_FreeStruct(&state->allocinfo, tmp); - } - *list = NULL; - } - undo_check_integrity(state); -} - -void -UNDO_Destroy(UndoState* state) -{ - undo_free_list(state, &state->events); - undo_free_list(state, &state->redoevents); - XP_FreeAllStructs(&state->allocinfo); - XP_FREE(state); -} - - -void -UNDO_DiscardAll(UndoState* state) -{ - undo_free_list(state, &state->events); - undo_free_list(state, &state->redoevents); - if (state->depth > 0) state->discardall = TRUE; - state->count = 0; -} - - -static int -undo_log(UndoState* state, undo_event* event) -{ - undo_event** start; - int status; - undo_check_integrity(state); - if (event->type != BOUNDARY && state->depth == 0) { - UNDO_StartBatch(state); - status = undo_log(state, event); - if (status < 0) { - state->depth = 0; - return status; - } - return UNDO_EndBatch(state, event->freetag, event->tag); - } - if (state->undoing) { - start = &(state->redoevents); - } else { - start = &(state->events); - } - if (!*start) { - event->next = event; - event->prev = event; - } else { - event->next = *start; - event->prev = event->next->prev; - event->next->prev = event; - event->prev->next = event; - } - *start = event; - undo_check_integrity(state); - return 0; -} - - -int -UNDO_LogEvent(UndoState* state, int (*undoit)(void*), - void (*freeit)(void*), void* closure, - void (*freetag)(void*), void* tag) -{ - undo_event* tmp; - if (state->discardall) { - (*freeit)(closure); - if (freetag) (*freetag)(tag); - return 0; - } - tmp = (undo_event*) XP_AllocStructZero(&state->allocinfo); - if (!tmp) { - UNDO_DiscardAll(state); - (*freeit)(closure); - if (freetag) (*freetag)(tag); - return MK_OUT_OF_MEMORY; - } - - state->loggedsomething = TRUE; - - tmp->type = EVENT; - tmp->undoit = undoit; - tmp->freeit = freeit; - tmp->closure = closure; - tmp->tag = tag; - tmp->freetag = freetag; - - return undo_log(state, tmp); -} - - -int -UNDO_StartBatch(UndoState* state) -{ - #if 0 /* This is bad. The redo stack is not purged when a new event is logged. */ - if (state->depth == 0) { - #else /* A better way: Only reset loggedsomething if we're in the midst of an undo or redo. */ - if( state->undoing || state->redoing ) { - #endif - state->loggedsomething = FALSE; - } - state->depth++; - undo_check_integrity(state); - return 0; -} - - -int -UNDO_EndBatch(UndoState* state, void (*freetag)(void*), void* tag) -{ - int status; - undo_check_integrity(state); - XP_ASSERT(state->depth > 0); - state->depth--; - if (state->depth == 0) { - undo_event** start; - if (state->discardall) { - UNDO_DiscardAll(state); - state->discardall = FALSE; - return 0; - } - if (state->undoing) { - start = &(state->redoevents); - } else { - start = &(state->events); - if (state->loggedsomething) { - undo_free_list(state, &state->redoevents); - } - } - if (*start && (*start)->type != BOUNDARY) { - undo_event* tmp = (undo_event*)XP_AllocStructZero(&state->allocinfo); - if (!tmp) { - UNDO_DiscardAll(state); - return MK_OUT_OF_MEMORY; - } - tmp->type = BOUNDARY; - tmp->tag = tag; - tmp->freetag = freetag; - status = undo_log(state, tmp); - if (status < 0) { - UNDO_DiscardAll(state); - return status; - } - if (!state->undoing) { - if (state->count >= state->maxdepth) { - /* exceeded undo count - pull one off the bottom of the stack. */ - undo_event* prev; - for (tmp = state->events->prev ; ; tmp = prev) { - undo_event_type type = tmp->type; - /* better not be at the top of the stack, */ - XP_ASSERT(tmp != state->events); - prev = tmp->prev; - tmp->prev->next = tmp->next; - tmp->next->prev = tmp->prev; - if (type == EVENT) { - if (tmp->freeit) (*tmp->freeit)(tmp->closure); - if (tmp->freetag) (*tmp->freetag)(tmp->tag); - } - XP_FreeStruct(&state->allocinfo, tmp); - /* stop at the next boundary, which makes a whole Batch */ - if (type == BOUNDARY) break; - } - } - else - { - state->count++; - } - } - } - undo_check_integrity(state); - } - return 0; -} - - - -static int -undo_doone(UndoState* state, undo_event** from) -{ - int status = 0; - undo_event* tmp = *from; - undo_check_integrity(state); - XP_ASSERT(tmp != NULL); - switch (tmp->type) { - case BOUNDARY: - break; - case EVENT: - if (tmp->undoit) { - status = (*tmp->undoit)(tmp->closure); - } - break; - default: - XP_ASSERT(0); - } - *from = tmp->next; - if (*from == tmp) { - *from = NULL; - } else { - (*from)->prev = tmp->prev; - (*from)->prev->next = (*from); - } - undo_check_integrity(state); - XP_FreeStruct(&state->allocinfo, tmp); - return status; -} - - - - -static int -undo_doit(UndoState* state, undo_event** from) -{ - int status; - void (*tmp_freetag)(void*); - void *tmp_tag; - - XP_ASSERT(state->depth == 0); - if (!*from) return 0; - status = UNDO_StartBatch(state); - if (status < 0) return status; - - XP_ASSERT((*from)->type == BOUNDARY); - - /* Save the tag information so it persists in the opposing undo/redo stack */ - tmp_freetag = (*from)->freetag; - tmp_tag = (*from)->tag; - - do { - status = undo_doone(state, from); - if (status < 0) break; - } while (*from && (*from)->type != BOUNDARY); - if (status >= 0) status = UNDO_EndBatch(state, tmp_freetag, tmp_tag); - if (status < 0) { - UNDO_DiscardAll(state); - } - return status; -} - - - - -int -UNDO_DoUndo(UndoState* state) -{ - int status; - XP_ASSERT(state->depth == 0 && !state->undoing); - state->undoing = TRUE; - status = undo_doit(state, &(state->events)); - state->undoing = FALSE; - state->count--; - return status; -} - - -int -UNDO_DoRedo(UndoState* state) -{ - int status; - undo_event* tmp = state->redoevents; - state->redoevents = NULL; /* Prevent any code from throwing away the - remaining redo events. */ - XP_ASSERT(state->depth == 0 && !state->undoing); - state->redoing = TRUE; - status = undo_doit(state, &tmp); - state->redoing = FALSE; - XP_ASSERT(state->redoevents == NULL); - state->redoevents = tmp; - return status; -} - - -static XP_Bool -undo_has_event(undo_event* event) -{ - undo_event* tmp = event; - if (tmp) { - do { - if (tmp->type == EVENT) return TRUE; - tmp = tmp->next; - } while (tmp != event); - } - return FALSE; -} - -XP_Bool -UNDO_CanUndo(UndoState* state) -{ - return undo_has_event(state->events); -} - -XP_Bool -UNDO_CanRedo(UndoState* state) -{ - return undo_has_event(state->redoevents); -} - -static void * -undo_get_tag(undo_event* event) -{ - undo_event* tmp = event; - if (tmp) { - do { - if (tmp->type == BOUNDARY) - return tmp->tag; - tmp = tmp->next; - } while (tmp != event); - } - return NULL; -} - -void * -UNDO_PeekUndoTag(UndoState* state) -{ - return state ? undo_get_tag(state->events) : NULL; -} - -void * -UNDO_PeekRedoTag(UndoState* state) -{ - return state ? undo_get_tag(state->redoevents) : NULL; -} diff --git a/mozilla/lib/libmocha/Makefile b/mozilla/lib/libmocha/Makefile deleted file mode 100644 index 655ab265312..00000000000 --- a/mozilla/lib/libmocha/Makefile +++ /dev/null @@ -1,117 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../.. - -include $(DEPTH)/config/config.mk - -MODULE = mocha -LIBRARY_NAME = mocha - -REQUIRES = lay parse img js style layer applet dbm nspr security \ - htmldlgs util jtools pref caps java libreg softupdt jsdebug \ - netcache network httpurl plugin plugimpl mocha oji ojiimpl xpcom \ - layout rdf - -ifdef DOM -EXPORTS = lm_dom.h # required by layout -REQUIRES += dom -endif - - -ifdef MOZ_SECURITY -REQUIRES += jar -endif - -CSRCS = et_mocha.c \ - et_moz.c \ - lm_applt.c \ - lm_bars.c \ - lm_cmpnt.c \ - lm_doc.c \ - lm_embed.c \ - lm_event.c \ - lm_form.c \ - lm_hardw.c \ - lm_hist.c \ - lm_href.c \ - lm_img.c \ - lm_init.c \ - lm_input.c \ - lm_nav.c \ - lm_plgin.c \ - lm_screen.c \ - lm_supdt.c \ - lm_taint.c \ - lm_tree.c \ - lm_trggr.c \ - lm_url.c \ - lm_win.c \ - lm_wngrp.c \ - lm_layer.c \ - lm_bkgrd.c \ - lm_env.c \ - $(NULL) - - -ifdef MOZ_JAVA -CSRCS += \ - lm_jsd.c \ - $(NULL) -endif - -ifdef DOM -CSRCS += lm_dom.c \ - $(NULL) -endif - -include $(DEPTH)/config/rules.mk - -ifdef DOM -DEFINES += -DDOM -endif - -DEFINES += -DDLL_SUFFIX=\"$(DLL_SUFFIX)\" - -TAINT_CFLAGS = $(CFLAGS) -I$(DEPTH)/lib/libjar -I$(DEPTH)/sun-java/netscape/security/_jri \ - -I$(DEPTH)/dist/public/security - -ifneq ($(OS_ARCH),OS2) -$(OBJDIR)/lm_embed.o: lm_embed.c - @$(MAKE_OBJDIR) - $(CC) -o $@ -c $(CFLAGS) $< - -$(OBJDIR)/lm_taint.o: lm_taint.c - @$(MAKE_OBJDIR) - $(CC) -o $@ -c $(TAINT_CFLAGS) $< - -else -$(OBJDIR)/lm_embed.o: lm_embed.c - @$(MAKE_OBJDIR) - $(CC) -Fo$@ -c $(CFLAGS) $< - -$(OBJDIR)/lm_taint.o: lm_taint.c - @$(MAKE_OBJDIR) - $(CC) -Fo$@ -c $(TAINT_CFLAGS) $< - -endif diff --git a/mozilla/lib/libmocha/Makefile.in b/mozilla/lib/libmocha/Makefile.in deleted file mode 100644 index a9dbaff3b2b..00000000000 --- a/mozilla/lib/libmocha/Makefile.in +++ /dev/null @@ -1,122 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = mocha -LIBRARY_NAME = mocha - -REQUIRES = lay parse img js style layer applet dbm security \ - htmldlgs util jtools pref caps java libreg softupdt jsdebug \ - netcache network httpurl plugin plugimpl mocha oji ojiimpl xpcom \ - layout rdf - -ifdef DOM -EXPORTS = lm_dom.h # required by layout -REQUIRES += dom -endif - - -ifdef MOZ_SECURITY -REQUIRES += jar -endif - -CSRCS = et_mocha.c \ - et_moz.c \ - lm_applt.c \ - lm_bars.c \ - lm_cmpnt.c \ - lm_doc.c \ - lm_embed.c \ - lm_event.c \ - lm_form.c \ - lm_hardw.c \ - lm_hist.c \ - lm_href.c \ - lm_img.c \ - lm_init.c \ - lm_input.c \ - lm_nav.c \ - lm_plgin.c \ - lm_screen.c \ - lm_supdt.c \ - lm_taint.c \ - lm_tree.c \ - lm_trggr.c \ - lm_url.c \ - lm_win.c \ - lm_wngrp.c \ - lm_layer.c \ - lm_bkgrd.c \ - lm_env.c \ - $(NULL) - - -ifdef MOZ_JAVA -CSRCS += \ - lm_jsd.c \ - $(NULL) -endif - -ifdef DOM -CSRCS += lm_dom.c \ - $(NULL) -endif - -EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) - -include $(topsrcdir)/config/rules.mk - -ifdef DOM -DEFINES += -DDOM -endif - -DEFINES += -DDLL_SUFFIX=\"$(DLL_SUFFIX)\" - -TAINT_CFLAGS = $(CFLAGS) -I$(topsrcdir)/lib/libjar -I$(DEPTH)/sun-java/netscape/security/_jri \ - -I$(DEPTH)/dist/public/security - -ifneq ($(OS_ARCH),OS2) -$(OBJDIR)/lm_embed.o: lm_embed.c - @$(MAKE_OBJDIR) - $(CC) -o $@ -c $(CFLAGS) $< - -$(OBJDIR)/lm_taint.o: lm_taint.c - @$(MAKE_OBJDIR) - $(CC) -o $@ -c $(TAINT_CFLAGS) $< - -else -$(OBJDIR)/lm_embed.o: lm_embed.c - @$(MAKE_OBJDIR) - $(CC) -Fo$@ -c $(CFLAGS) $< - -$(OBJDIR)/lm_taint.o: lm_taint.c - @$(MAKE_OBJDIR) - $(CC) -Fo$@ -c $(TAINT_CFLAGS) $< - -endif diff --git a/mozilla/lib/libmocha/et_mocha.c b/mozilla/lib/libmocha/et_mocha.c deleted file mode 100644 index e9bc42aa177..00000000000 --- a/mozilla/lib/libmocha/et_mocha.c +++ /dev/null @@ -1,2789 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * Messages passing from the mozilla thread to the mocha thread - */ -#include "lm.h" -#include "xp.h" -#include "fe_proto.h" -#include "proto.h" -#include "net.h" -#include "structs.h" -#include "prmon.h" -#include "prthread.h" -#ifdef XP_MAC -#include "prpriv.h" -#else -#include "private/prpriv.h" /* For PR_NewNamedMonitor */ -#endif -#include "layout.h" /* XXX for lo_ContextToCell and lo_FormData */ -#include "libimg.h" -#ifdef JAVA -#include "java.h" -#endif -#include "pa_tags.h" -#include "css.h" -#include "pa_parse.h" -#ifdef JAVA_OR_OJI -#include "jsjava.h" -#endif -#include "intl_csi.h" - -#ifdef LAYPROBE_API -#include "layprobe.h" -#endif /* LAYPROBE_API */ - -#ifdef XP_WIN16 -#define MOCHA_NORMAL_PRIORITY PR_PRIORITY_NORMAL -#endif - -/**********************************************************************/ - - -#define MAKE_EAGER_INHERIT(e, q) \ - if (q->inherit_parent && \ - e->ce.handle_eagerly == JS_FALSE && \ - e->ce.context->grid_parent) { \ - e->ce.handle_eagerly = \ - (XP_DOCID(e->ce.context->grid_parent) == \ - q->doc_id); \ - } - -#define MAKE_EAGER(e, q) if (q->doc_id == 0 && \ - q->context == e->ce.context) { \ - q->doc_id = XP_DOCID(e->ce.context); \ - e->ce.handle_eagerly = JS_TRUE; \ - } else { \ - e->ce.handle_eagerly = \ - (XP_DOCID(e->ce.context) == q->doc_id); \ - } \ - MAKE_EAGER_INHERIT(e,q) - -/**********************************************************************/ - -/* MLM - had to move these up here so we could do a comparison in - * et_event_to_mocha. - */ -typedef struct { - ETEvent ce; - MochaDecoder * decoder; - LMWindowGroup * group; -} PutDecoderEvent; - -PR_STATIC_CALLBACK(void) -et_putdecoder_handler(PutDecoderEvent * e); - -PR_STATIC_CALLBACK(void) -et_firetimeout_handler(MozillaEvent_Timeout * e); - -static void -et_event_to_mocha(ETEvent * e) -{ - JSBool canDoJS; - LMWindowGroup *grp; - - if(!lm_inited()) { - e->event.destructor((PREvent *) e); - return; - } - - if(e->context) { - e->doc_id = XP_DOCID(e->context); - canDoJS = LM_CanDoJS(e->context); - grp = lm_MWContextToGroup(e->context); - } else { - /* source of event must be timeout or someone else who can do mocha*/ - canDoJS = JS_TRUE; - - /* XXXMLM - is this right? Can we just use the default? - * Timeouts should go to proper queue now. - */ - grp = LM_GetDefaultWindowGroup(NULL); - } - - if(!grp) { - /* XXXMLM - Is this right? Am I introducing a race with the window - * spawn command? - */ - grp = LM_GetDefaultWindowGroup(e->context); - LM_AddContextToGroup(grp, e->context); - } - - if (!canDoJS) { - e->event.destructor((PREvent *) e); - return; - } - - /* Special case: The MWContext is about to be zapped if this is a - * "put mocha decoder" event. So, pre-zap it now - * that we have the right queue. - */ - if((e->event.handler) == ((PRHandleEventProc)et_putdecoder_handler)) { - e->context = NULL; - } - - /* Same deal: The MWContext may go away. We have the correct queue, - * so zap the context. - */ - /****************************************************** MLM * - if((e->event.handler) == ((PRHandleEventProc)et_firetimeout_handler)) { - e->context = NULL; - } - ****************************************************** MLM */ - - /* - * Decide which queue to put this event on. The queue stack's top may - * actually be the same as the interpret queue - */ - if (e->handle_eagerly) - PR_PostEvent(grp->queue_stack->queue, &e->event); - else - PR_PostEvent(grp->interpret_queue, &e->event); - -#ifdef XP_WIN16 - /* Raise the mocha thread priority, otherwise mocha may not get - * time slices, because user's program java threads have higher - * priority ( 15 ). If mocha is starving events are not transfered - * to the mozilla-event-queue and Navigator stops reacting to - * the input events - */ - PR_SetThreadPriority ( grp->thread, PR_PRIORITY_URGENT ); -#endif - - if(grp->queue_monitor) { - /* wake up the processing routine */ - PR_EnterMonitor(grp->queue_monitor); - PR_Notify(grp->queue_monitor); - PR_ExitMonitor(grp->queue_monitor); - } - -} - -/**********************************************************************/ - -/* By wrapping the following macros around an event handler callback, - we can verify that the MWContext to which the event was directed - hasn't gone away. As a side effect, the local variable 'decoder' - is established within the macros: - - void foo_handler(JSEvent* e) { - ET_BEGIN_EVENT_HANDLER(e); - ... decoder ... - ET_END_EVENT_HANDLER(e); - } - - */ -#define ET_BEGIN_EVENT_HANDLER(jsevent) \ -{ \ - MWContext* _c = (jsevent)->ce.context; \ - MochaDecoder* decoder=NULL; \ - if (_c == NULL) { \ - goto _quit; \ - } \ - decoder = LM_GetMochaDecoder(_c); \ - if (decoder == NULL) { \ - goto _quit; \ - } \ - -#define ET_END_EVENT_HANDLER(e) \ - _quit: \ - if (decoder != NULL) { \ - LM_PutMochaDecoder(decoder); \ - } \ -} \ - -/**********************************************************************/ - -/* - * Trash our event when we get done with it - */ -PR_STATIC_CALLBACK(void) -et_event_destructor(JSEvent * pEvent) -{ - if (!pEvent->saved) - XP_FREE(pEvent); -} - -/* - * Actual handler routine - */ -PR_STATIC_CALLBACK(void) -et_event_handler(JSEvent * e) -{ - - LO_Element * lo_element = NULL; - ETEventStatus status = EVENT_OK; - jsval rval; - - ET_BEGIN_EVENT_HANDLER(e); - - LO_LockLayout(); - - /* verify that this document is still valid */ - if(e->ce.doc_id != XP_DOCID(e->ce.context) && e->type != EVENT_UNLOAD) { - status = EVENT_PANIC; - LO_UnlockLayout(); - goto done; - } - - decoder->doc_id = e->ce.doc_id; - - /* find the element that caused this event */ - lo_element = e->lo_element; - - /* figure out who to call */ - switch(e->type) { - - case EVENT_SCROLL: - case EVENT_DRAGDROP: - case EVENT_MOVE: - case EVENT_RESIZE: - case EVENT_HELP: - /* These are all window level events only, TRUE unless explicitly denied */ - LO_UnlockLayout(); - - if (!(decoder->event_mask & e->type)) { - decoder->event_mask |= e->type; - if (lm_SendEvent(e->ce.context, decoder->window_object, e, &rval) && - rval == JSVAL_FALSE) { - status = EVENT_CANCEL; - } - decoder->event_mask &= ~e->type; - } - break; - - /*BEGIN Events occurring in the following cases must LO_UnlockLayout themselves. */ - case EVENT_CLICK: - case EVENT_MOUSEDOWN: - case EVENT_MOUSEUP: - case EVENT_DBLCLICK: - /* TRUE unless explicitly denied */ - if (lm_MouseInputEvent(e->ce.context, lo_element, e, &rval) && - rval == JSVAL_FALSE) { - status = EVENT_CANCEL; - } - - /* - * If this was the submit button we want to send a submit - * event here - */ - break; - case EVENT_KEYDOWN: - case EVENT_KEYUP: - case EVENT_KEYPRESS: - /* TRUE unless explicitly denied */ - if (lm_KeyInputEvent(e->ce.context, lo_element, e, &rval) && - rval == JSVAL_FALSE) { - status = EVENT_CANCEL; - } - break; - case EVENT_BLUR: - case EVENT_FOCUS: - case EVENT_SELECT: - case EVENT_MOUSEOUT: - case EVENT_CHANGE: - /* TRUE unless explicitly denied */ - if (lm_InputEvent(e->ce.context, lo_element, e, &rval) && - rval == JSVAL_FALSE) { - status = EVENT_CANCEL; - } - break; - case EVENT_MOUSEMOVE: - /* There are two reasons this event could be here - * 1. The script is capturing this event. - * 2. The script has a handler defined for onmousemove and we - * are assuming they intend the capure this event. Since the - * time it takes to handle a mousedown event and start capturing - * would cause lossage of mousemove messages we're sending all - * mousemoves between mousedowns and ups so that if the scripts - * starts capturing during the onmousedown handler, the mousemoves - * we would have lost will be sitting on the JS queue. */ - /* TRUE unless explicitly denied */ - if (LM_EventCaptureCheck(e->ce.context, EVENT_MOUSEMOVE)) { - if (lm_InputEvent(e->ce.context, lo_element, e, &rval) && - rval == JSVAL_FALSE) { - status = EVENT_CANCEL; - } - } - else - LO_UnlockLayout(); - break; - case EVENT_MOUSEOVER: - /* FALSE unless explicitly set */ - status = EVENT_CANCEL; - if (lm_InputEvent(e->ce.context, lo_element, e, &rval) && - rval == JSVAL_TRUE) { - status = EVENT_OK; - } - break; - - case EVENT_SUBMIT: - if(lm_SendOnSubmit(e->ce.context, e, lo_element)) - status = EVENT_OK; - else - status = EVENT_CANCEL; - /*LO_UnlockLayout called in form_event;*/ - break; - - - case EVENT_RESET: - if(lm_SendOnReset(e->ce.context, e, lo_element)) - status = EVENT_OK; - else - status = EVENT_CANCEL; - /*LO_UnlockLayout called in form_event;*/ - break; - /*END asymmetric layout unlocking.*/ - - default: - LO_UnlockLayout(); - XP_TRACE(("Mocha thread: Got event %d that I didn't expect", e->type)); - break; - } - - /* clear the mask */ - - /* check again to make sure the document hasn't changed */ - if(e->ce.doc_id != XP_DOCID(e->ce.context)) - status = EVENT_PANIC; - -done: - /* Post an event to call the front-end closuer */ - if(e->fnClosure) - ET_PostJsEventAck(e->ce.context, lo_element, - e->type, e->fnClosure, - e->whatever, status); - -#ifdef XPWIN16 - /* Return to the normal mocha thread priority, after mocha thread - * has transfered event to the mozilla-event-queue ( if necessary, - * i.e. if e->fnClosure != NULL - */ - { - LMWindowGroup *grp = lm_MWContextToGroup(e->ce.context); - XP_ASSERT(grp != NULL); - PR_SetThreadPriority ( grp->thread, MOCHA_NORMAL_PRIORITY ); - } -#endif - - ET_END_EVENT_HANDLER(e); -} - - - -/* - * Tell the backend about a new event. - * fnClosure should be allowed to be NULL - */ -JSBool -ET_SendEvent(MWContext * pContext, LO_Element *pElement, JSEvent *pEvent, - ETClosureFunc fnClosure, void * whatever) -{ - LMWindowGroup *grp; - -#ifdef LAYPROBE_API - LAPIEventInfo ei; - ei.type = pEvent->type; - ei.x = pEvent->x; - ei.y = pEvent->y; - ei.docx = pEvent->docx; - ei.docy = pEvent->docy; - ei.screenx = pEvent->screenx; - ei.screeny = pEvent->screeny; - ei.Context = pContext; - ei.lo_element = pElement; - LAPINotificationHandler(&ei); -#endif /* LAYPROBE_API */ - - /* make sure we are able to process Mocha events before bothering */ - if (!LM_CanDoJS(pContext) || EDT_IS_EDITOR(pContext)) { - ETEventStatus status = EVENT_OK; - if (pEvent->type == EVENT_MOUSEOVER) - status = EVENT_CANCEL; - if (fnClosure) - fnClosure(pContext, pElement, pEvent->type, whatever, status); - XP_FREE(pEvent); - return(JS_TRUE); - } - - grp = lm_MWContextToGroup(pContext); - if(grp == NULL) { - /* MLM - check to see if this is a type of event we should care - * about right now. The window hasn't used JS yet, so we - * don't care about mouse moves, focus, etc. So far the - * only one we think we care about is a load event. - */ - if(pEvent->type == EVENT_LOAD) { - grp = LM_GetDefaultWindowGroup(pContext); - LM_AddContextToGroup(grp, pContext); - } else { - /* Else dump the event, and call closure if present. */ - ETEventStatus status = EVENT_OK; - if(pEvent->type == EVENT_MOUSEOVER) - status = EVENT_CANCEL; - if (fnClosure) - fnClosure(pContext, pElement, pEvent->type, whatever, status); - XP_FREE(pEvent); - return(JS_TRUE); - } - } - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_event_handler, - (PRDestroyEventProc)et_event_destructor); - - pEvent->ce.context = pContext; - MAKE_EAGER_INHERIT(pEvent, grp->queue_stack); - if(pElement) - pEvent->id = pElement->lo_any.ele_id; - pEvent->lo_element = pElement; - pEvent->fnClosure = fnClosure; - pEvent->whatever = whatever; - - et_event_to_mocha(&pEvent->ce); - - return(JS_TRUE); - -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - int32 type; - ETVoidPtrFunc fnClosure; - void * data; - int32 layer_id; - JSBool resize_reload; -} LoadEvent; - -PR_STATIC_CALLBACK(void) -et_load_event_handler(LoadEvent * e) -{ - - ETEventStatus status = EVENT_OK; - - ET_BEGIN_EVENT_HANDLER(e); - - LO_LockLayout(); - - /* verify that this document is still valid */ - if(e->ce.doc_id != XP_DOCID(e->ce.context) && e->type != EVENT_UNLOAD) { - status = EVENT_PANIC; - LO_UnlockLayout(); - goto done; - } - - LO_UnlockLayout(); - - decoder->doc_id = e->ce.doc_id; - - /* figure out who to call */ - if (e->layer_id == LO_DOCUMENT_LAYER_ID) { - if (e->type == EVENT_LOAD) - lm_ClearDecoderStream(decoder, JS_TRUE); - - lm_SendLoadEvent(e->ce.context, e->type, e->resize_reload); - } - else { - if ((decoder->stream_owner == e->layer_id) && (e->type == EVENT_LOAD)) - lm_ClearDecoderStream(decoder, JS_TRUE); - - /* - * If the load event has already been sent, this is a layer whose - * src has been dynamically changed. In that case, we want to fire - * a load event irrespective of whether this context had been - * resized. - */ - lm_SendLayerLoadEvent(e->ce.context, e->type, e->layer_id, - decoder->load_event_sent ? JS_FALSE : e->resize_reload); - } - -done: - /* Post an event to call the front-end closure */ - if(e->fnClosure) - ET_moz_CallFunctionAsync(e->fnClosure, e->data); - - ET_END_EVENT_HANDLER(e); -} - -PR_STATIC_CALLBACK(void) -et_generic_destructor(void * event) -{ - XP_FREE(event); -} - -/* - * Tell the backend about a new load event. - */ -void -ET_SendLoadEvent(MWContext * pContext, int32 type, ETVoidPtrFunc fnClosure, - NET_StreamClass *stream, int32 layer_id, Bool resize_reload) -{ - LMWindowGroup *grp; - LoadEvent * pEvent; - - /* - * Make sure we are allowed to do mocha stuff in this context - * before bothering to send the event - */ - if (!LM_CanDoJS(pContext)) { - if(fnClosure) - fnClosure(stream); - return; - } - - pEvent = (LoadEvent *) XP_NEW_ZAP(LoadEvent); - if(!pEvent) - return; - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_load_event_handler, - (PRDestroyEventProc)et_generic_destructor); - - grp = lm_MWContextToGroup(pContext); - if(grp == NULL) { - grp = LM_GetDefaultWindowGroup(pContext); - LM_AddContextToGroup(grp, pContext); - } - pEvent->type = type; - pEvent->ce.context = pContext; - MAKE_EAGER(pEvent, grp->queue_stack); - pEvent->layer_id = layer_id; - pEvent->fnClosure = fnClosure; - pEvent->data = stream; - pEvent->resize_reload = (JSBool)resize_reload; - - /* add the event to the event queue */ - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -PR_STATIC_CALLBACK(void) -et_setactiveform_handler(JSEvent * e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - /* verify that this document is still valid */ - if(e->ce.doc_id != XP_DOCID(e->ce.context)) - return; - - lm_SetActiveForm(e->ce.context, e->type); - - ET_END_EVENT_HANDLER(e); -} - -/* - */ -void -ET_SetActiveForm(MWContext * pContext, lo_FormData * form) -{ - LMWindowGroup *grp; - JSEvent * pEvent; - - if(!lm_inited()) { - return; - } - - pEvent = (JSEvent *) XP_NEW_ZAP(JSEvent); - if(!pEvent) - return; - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_setactiveform_handler, - (PRDestroyEventProc)et_generic_destructor); - - grp = lm_MWContextToGroup(pContext); - XP_ASSERT(grp != NULL); - pEvent->ce.context = pContext; - MAKE_EAGER(pEvent, grp->queue_stack); - - /* form can be NULL when there should be no active form */ - if(form) - pEvent->type = form->id; - else - pEvent->type = 0; - - et_event_to_mocha(&pEvent->ce); - -} - - - -/**********************************************************************/ - -PR_STATIC_CALLBACK(void) -et_setactivelayer_handler(JSEvent * e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - /* verify that this document is still valid */ - if(e->ce.doc_id != XP_DOCID(e->ce.context)) - return; - - LM_SetActiveLayer(e->ce.context, e->layer_id); - - ET_END_EVENT_HANDLER(e); -} - -/* - */ -void -ET_SetActiveLayer(MWContext * pContext, int32 layer_id) -{ - - JSEvent * pEvent = (JSEvent *) XP_NEW_ZAP(JSEvent); - if(!pEvent) - return; - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_setactivelayer_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = pContext; - pEvent->layer_id = layer_id; - et_event_to_mocha(&pEvent->ce); -} - -/**********************************************************************/ - -/* - * Mocha is about to process or is processing an event for the given - * context. Verify we haven't been asked to interrupt it - */ -JSBool -ET_ContinueProcessing(MWContext * context) -{ - LMWindowGroup *grp; - if(!lm_inited()) { - return; - } - grp = lm_MWContextToGroup(context); - XP_ASSERT(grp != NULL); - return (JSBool)(grp->interruptCurrentOp == JS_FALSE); -} - -/**********************************************************************/ - -static void -et_RevokeEvents(MWContext * pContext) -{ - LMWindowGroup *grp = lm_MWContextToGroup(pContext); - QueueStackElement *qse; - XP_ASSERT(grp != NULL); - - for (qse = grp->queue_stack; qse; qse = qse->down) { - PR_RevokeEvents(qse->queue, pContext); - } - for (qse = grp->queue_stack->up; qse; qse = qse->up) { - PR_RevokeEvents(qse->queue, pContext); - } -} - -void -ET_InterruptContext(MWContext * pContext) -{ - LMWindowGroup *grp; - - /* make sure the context can do mocha before bothering */ - if (!lm_inited() || !LM_CanDoJS(pContext)) - return; - - grp = lm_MWContextToGroup(pContext); - if(grp == NULL) { - /* We sometimes get called on a context that's never done JS - * before. If so, just bail. - */ - return; - } - - /* need to lock the JS-thread from starting new events */ - PR_EnterMonitor(grp->queue_monitor); - - /* Is our context currently running in mocha ? */ - if (LM_JSLockGetContext(pContext) == pContext) { - /* - * if the owner of the JSLock is the context we are - * interrupting set a flag so it will stop soon - */ - grp->interruptCurrentOp = JS_TRUE; - - } - - /* clear events for this context off of the interpret queue */ - et_RevokeEvents(pContext); - - /* need to unlock the JS-thread from starting new events */ - PR_ExitMonitor(grp->queue_monitor); - - /* Interrupt the JS image context. */ - if (pContext->mocha_context) - ET_InterruptImgCX(pContext); -} - -/**********************************************************************/ - -/* - * Actual handler routine for image events - */ -PR_STATIC_CALLBACK(void) -et_image_event_handler(JSEvent * e) -{ - - ETEventStatus status = EVENT_OK; - LO_ImageStruct * image; - JSObject * obj; - - ET_BEGIN_EVENT_HANDLER(e); - - LO_LockLayout(); - - /* verify that this document is still valid */ - if(e->ce.doc_id != XP_DOCID(e->ce.context)) { - status = EVENT_PANIC; - LO_UnlockLayout(); - goto done; - } - - /* - * Remember the ID of the document that spaned this call stack - */ - if(decoder) - decoder->doc_id = e->ce.doc_id; - - /* XXX chouck - do we need to set a mask so we don't loop infinitely? */ - - /* find the element that caused this event */ - if(e->id) - image = LO_GetImageByIndex(e->ce.context, e->layer_id, e->id); - else - image = (LO_ImageStruct *) e->lo_element; - - if (!image || (image->type != LO_IMAGE)) { - LO_UnlockLayout(); - goto done; - } - - obj = image->mocha_object; - - /* OK, we've gotten our pointer, let layout be happy again */ - LO_UnlockLayout(); - - /* If we actually had an object send the event for it */ - if(obj) - lm_ProcessImageEvent(e->ce.context, obj, (LM_ImageEvent) e->type); - - /* clear the mask */ - - /* check again to make sure the document hasn't changed */ - if(e->ce.doc_id != XP_DOCID(e->ce.context)) - status = EVENT_PANIC; - -done: - ET_END_EVENT_HANDLER(e); - - return; -} - - -void -ET_SendImageEvent(MWContext * pContext, LO_ImageStruct *image_data, - LM_ImageEvent event) -{ - JSEvent * pEvent; - - if (!LM_CanDoJS(pContext)) - return; - - pEvent = (JSEvent *) XP_NEW_ZAP(JSEvent); - if(!pEvent) - return; - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_image_event_handler, - (PRDestroyEventProc)et_event_destructor); - - pEvent->type = event; - pEvent->ce.context = pContext; - - if(image_data) { - pEvent->id = image_data->seq_num; - pEvent->layer_id = image_data->layer_id; - } - pEvent->lo_element = (LO_Element *) image_data; - - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - int32 layer_id; - void * lo_ele; - void * pa_tag; - ReflectedObject type; - uint index; -} Reflect_Event; - -/* - * Make the appropriate LM_Reflect() call. Since we store a pointer - * to the newly created JSObject as part of the layout object it - * represents, we need to lock layout while doing this so layout - * doesn't take our object away out from under us. - * If any of the reflection routines take us back into the mozilla - * thread we run the risk of deadlocking on the LO_LockLayout() - * call. - */ -PR_STATIC_CALLBACK(void) -et_reflect_handler(Reflect_Event * e) -{ - ETEventStatus status = EVENT_OK; - - ET_BEGIN_EVENT_HANDLER(e); - - /* - * Make sure the layout objects don't go away while we are - * reflecting them - */ - LO_LockLayout(); - - /* verify that this document is still valid */ - if(e->ce.doc_id != XP_DOCID(e->ce.context)) { - status = EVENT_PANIC; - goto done; - } - - switch(e->type) { - case LM_APPLETS: -#if defined(JAVA) || defined(OJI) - - LM_ReflectApplet(e->ce.context, (LO_JavaAppStruct *) e->lo_ele, - e->pa_tag, e->layer_id, e->index); -#endif - break; - case LM_EMBEDS: -#if defined(JAVA) || defined(OJI) - LM_ReflectEmbed(e->ce.context, e->lo_ele, e->pa_tag, - e->layer_id, e->index); -#endif - break; - case LM_IMAGES: - LM_ReflectImage(e->ce.context, e->lo_ele, e->pa_tag, - e->layer_id, e->index); - break; - case LM_LINKS: - LM_ReflectLink(e->ce.context, (LO_AnchorData *) e->lo_ele, - e->pa_tag, e->layer_id, e->index); - break; - case LM_FORMS: - LM_ReflectForm(e->ce.context, (lo_FormData *) e->lo_ele, - e->pa_tag, e->layer_id, e->index); - break; - case LM_NAMEDANCHORS: - LM_ReflectNamedAnchor(e->ce.context, (lo_NameList *) e->lo_ele, - e->pa_tag, e->layer_id, e->index); - break; - case LM_FORMELEMENTS: - XP_ASSERT(0); - break; - case LM_LAYERS: - LM_ReflectLayer(e->ce.context, e->index, e->layer_id, e->pa_tag); - break; - default: - XP_ASSERT(0); - break; - } - -done: - - /* - * We are done with the reflection so unlock layout - */ - LO_UnlockLayout(); - - ET_END_EVENT_HANDLER(e); - - return; -} - -/* - * Free our memory - */ -PR_STATIC_CALLBACK(void) -et_reflect_destructor(Reflect_Event * e) -{ - /* we explictly duplicated our tag when we created this event - * object so make sure to get rid of it now - */ - if (e->pa_tag) - PA_FreeTag(e->pa_tag); - - XP_FREE(e); -} - -/* - * Reflect the given object. - */ -void -ET_ReflectObject(MWContext * pContext, void * lo_ele, void * tag, - int32 layer_id, uint index, ReflectedObject type) -{ - LMWindowGroup *grp; - Reflect_Event * pEvent; - - if(!lm_inited()) { - return; - } - - /* create our event object */ - pEvent = (Reflect_Event *) XP_NEW_ZAP(Reflect_Event); - if(!pEvent) - return; - -#ifdef JAVA - /* before we can call java on the mocha thread we need - * to initialize moja. this isn't safe to do with the - * layout lock held, so we do it here. */ - if (type == LM_APPLETS || type == LM_EMBEDS) - ET_InitMoja(pContext); -#endif - - grp = lm_MWContextToGroup(pContext); - XP_ASSERT(grp != NULL); - - /* do a PR_InitEvent on the event structure */ - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_reflect_handler, - (PRDestroyEventProc)et_reflect_destructor); - - /* fill in the non-PR fields we care about */ - pEvent->type = type; - pEvent->ce.context = pContext; - pEvent->lo_ele = lo_ele; - if(tag) - pEvent->pa_tag = (void *) PA_CloneMDLTag(tag); - else - pEvent->pa_tag = NULL; - - pEvent->index = index; - pEvent->layer_id = layer_id; - MAKE_EAGER(pEvent, grp->queue_stack); - - /* add the event to the event queue */ - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - int32 layer_id; - void * pa_tag; - uint element_index; - uint form_index; -} ReflectForm_Event; - - -/* - * Make the appropriate LM_Reflect() call. Since we store a pointer - * to the newly created JSObject as part of the layout object it - * represents, we need to lock layout while doing this so layout - * doesn't take our object away out from under us. - * If any of the reflection routines take us back into the mozilla - * thread we run the risk of deadlocking on the LO_LockLayout() - * call. - */ -PR_STATIC_CALLBACK(void) -et_reflectElement_handler(ReflectForm_Event * e) -{ - - ET_BEGIN_EVENT_HANDLER(e); - - /* - * Make sure the layout objects don't go away while we are - * reflecting them - */ - LO_LockLayout(); - - if (!decoder) - goto done; - - /* verify that this document is still valid */ - if (e->ce.doc_id != XP_DOCID(e->ce.context)) - goto done; - - /* reflect the form element */ - LM_ReflectFormElement(e->ce.context, e->layer_id, - e->form_index, e->element_index, e->pa_tag); - -done: - - LO_UnlockLayout(); - ET_END_EVENT_HANDLER(e); - -} - -PR_STATIC_CALLBACK(void) -et_reflectElement_destructor(ReflectForm_Event * e) -{ - /* - * We explictly duplicated our tag when we created this event - * object so make sure to get rid of it now - */ - if(e->pa_tag) { - PA_Tag * tag = (PA_Tag *) e->pa_tag; - if(tag->data) - PA_FREE(tag->data); - PA_FREE(tag); - } - - XP_FREE(e); -} - -/* - * Reflect a form element. This is enough of a special case that - * its been pulled out of the generic reflect object - */ -void -ET_ReflectFormElement(MWContext * pContext, void * form, - LO_FormElementStruct * form_element, PA_Tag * tag) -{ - LMWindowGroup *grp; - - /* create our event object */ - ReflectForm_Event * pEvent; - - if(!lm_inited()) { - return; - } - - if (!form || !form_element) - return; - - pEvent = (ReflectForm_Event *) XP_NEW_ZAP(ReflectForm_Event); - if (!pEvent) - return; - - grp = lm_MWContextToGroup(pContext); - XP_ASSERT(grp != NULL); - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_reflectElement_handler, - (PRDestroyEventProc)et_reflectElement_destructor); - - pEvent->ce.context = pContext; - if(tag) - pEvent->pa_tag = (void *) PA_CloneMDLTag(tag); - else - pEvent->pa_tag = NULL; - - pEvent->element_index = form_element->element_index; - pEvent->form_index = ((lo_FormData *)form)->id; - pEvent->layer_id = form_element->layer_id; - MAKE_EAGER(pEvent, grp->queue_stack); - - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - void * buffer; - ETEvalStuff * stuff; - ETEvalAckFunc fn; -} EvalStruct; - - -PR_STATIC_CALLBACK(void) -et_evalbuffer_handler(EvalStruct * e) -{ - JSContext * cx; - JSPrincipals * principals = NULL; - JSPrincipals * event_principals = NULL; - jsval rv; - JSBool ok; - size_t result_len; - char * result_str; - char * wysiwyg_url; - char * base_href; - uint len, line_no; - - ET_BEGIN_EVENT_HANDLER(e); - - LO_LockLayout(); - - /* - * If the current document is the same as the document that sent - * the evaluate event we want to continue to evaluate and remember - * the doc_id so we can see if the document changes out from under - * us - */ - if(e->ce.doc_id != XP_DOCID(e->ce.context)) { - LO_UnlockLayout(); - goto done; - } - - decoder->doc_id = e->ce.doc_id; - - LO_UnlockLayout(); - - len = e->stuff->len; - line_no = e->stuff->line_no; - lm_SetVersion(decoder, e->stuff->version); - event_principals = e->stuff->principals; - - cx = decoder->js_context; - if (event_principals) { - /* First appearance on this thread. Create a root. */ - JSPRINCIPALS_HOLD(cx, event_principals); - } - principals = lm_GetCompilationPrincipals(decoder, event_principals); - if (principals) { - JSPRINCIPALS_HOLD(cx, principals); - ok = LM_EvaluateBuffer(decoder, e->buffer, len, line_no, - e->stuff->scope_to, principals, - e->stuff->unicode, &rv); - - } - else { - ok = JS_FALSE; - } - if (event_principals) { - /* We're done with e->principals */ - JSPRINCIPALS_DROP(cx, event_principals); - } - - /* make sure the document hasn't changed out from under us */ - if(e->ce.doc_id != XP_DOCID(e->ce.context)) - goto done; - - if(!ok) { - ET_PostEvalAck(e->ce.context, e->ce.doc_id, e->stuff->data, - NULL, 0, NULL, NULL, FALSE, e->fn); - goto done; - } - - if (!e->stuff->want_result) - rv = JSVAL_VOID; - if (rv == JSVAL_VOID || - !JS_ConvertValue(cx, rv, JSTYPE_STRING, &rv)) { - ET_PostEvalAck(e->ce.context, e->ce.doc_id, e->stuff->data, - NULL, 0, NULL, NULL, JS_TRUE, e->fn); - goto done; - } - - result_len = JS_GetStringLength(JSVAL_TO_STRING(rv)); - result_str = JS_malloc(cx, result_len + 1); - if (result_str) { - /* XXXunicode or is this binary data going to imagelib ? */ - XP_MEMCPY(result_str, JS_GetStringBytes(JSVAL_TO_STRING(rv)), - result_len); - result_str[result_len] = '\0'; - } - - wysiwyg_url = lm_MakeWysiwygUrl(cx, decoder, decoder->active_layer_id, - principals); - base_href = LM_GetBaseHrefTag(cx, principals); - - ET_PostEvalAck(e->ce.context, - e->ce.doc_id, - e->stuff->data, - result_str, - result_len, - wysiwyg_url, - base_href, - JS_TRUE, - e->fn); -done: - if (principals) - JSPRINCIPALS_DROP(cx, principals); - ET_END_EVENT_HANDLER(e); -} - -PR_STATIC_CALLBACK(void) -et_evalbuffer_destructor(EvalStruct * e) -{ - XP_FREEIF(e->stuff->scope_to); - XP_FREE(e->buffer); - XP_FREE(e->stuff); - XP_FREE(e); -} - -/* - * This sucks a lot. The ET_EvaluateBuffer() API needed to change - * but the security code is on a tagged release and can't be changed. - */ -void -ET_EvaluateBuffer(MWContext * context, char * buffer, uint buflen, - uint line_no, char * scope_to, JSBool want_result, - ETEvalAckFunc fn, void * data, - JSVersion ver, struct JSPrincipals * hi) -{ - /* call ET_EvaluateScript(), please */ - XP_ASSERT(0); -} - -/* - * Evaluate the given script. I'm sure this is going to need a - * callback or compeletion routine - */ -void -ET_EvaluateScript(MWContext * pContext, char * buffer, ETEvalStuff * stuff, - ETEvalAckFunc fn) -{ - LMWindowGroup *grp; - EvalStruct * pEvent; - int len; - int16 charset; - - /* - * make sure this context can do mocha, if not, don't bother - * sending the event over, just call the closure function and - * go home - */ - if (!LM_CanDoJS(pContext)) { - fn(stuff->data, NULL, 0, NULL, NULL, JS_FALSE); - XP_FREE(stuff); - return; - } - - grp = lm_MWContextToGroup(pContext); - if(grp == NULL) { - grp = LM_GetDefaultWindowGroup(pContext); - LM_AddContextToGroup(grp, pContext); - } - - /* create our event object */ - pEvent = (EvalStruct *) XP_NEW_ZAP(EvalStruct); - if (!pEvent) { - XP_FREE(stuff); - return; - } - - /* do a PR_InitEvent on the event structure */ - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_evalbuffer_handler, - (PRDestroyEventProc)et_evalbuffer_destructor); - - pEvent->ce.context = pContext; - MAKE_EAGER(pEvent, grp->queue_stack); - - /* - * We are going to make our own copy of the buffer in order - * to be safe. If we are on an non-ascii page just do the - * conversion to unicode here. Since the JS engine is all - * unicode in 5.x maybe we should always just do the - * transformation here. - */ - len = stuff->len; - charset = INTL_GetCSIWinCSID(LO_GetDocumentCharacterSetInfo(pContext)); - - if (charset == CS_DEFAULT || charset == CS_ASCII || charset == CS_LATIN1) { - char * buf; - buf = XP_ALLOC(sizeof(char)* (len + 1)); - if (!buf) { - XP_FREE(stuff); - return; - } - strncpy(buf, buffer, len); - buf[len] = '\0'; - pEvent->buffer = buf; - stuff->unicode = JS_FALSE; - } - else { - uint32 unicodeLen; - - /* find out how many unicode characters we'll end up with */ - unicodeLen = INTL_TextToUnicodeLen(charset, - (unsigned char *) buffer, - len); - pEvent->buffer = XP_ALLOC(sizeof(INTL_Unicode) * unicodeLen); - if (!pEvent->buffer) { - XP_FREE(stuff); - return; - } - - /* do the conversion */ - stuff->len = INTL_TextToUnicode(charset, - (unsigned char *) buffer, - len, - pEvent->buffer, - unicodeLen); - - stuff->unicode = JS_TRUE; - - } - pEvent->stuff = stuff; - pEvent->fn = fn; - - /* add the event to the event queue */ - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -PR_STATIC_CALLBACK(void) -et_firetimeout_handler(MozillaEvent_Timeout * e) -{ - /* MLM - we use the MWContext now, so we need to have this happen */ - ET_BEGIN_EVENT_HANDLER(e); - - e->ce.context = _c; - - (e->fnCallback) ((void *)e); - - ET_END_EVENT_HANDLER(e); -} - -void -ET_FireTimeoutCallBack(void * obj) -{ - /* - * our closure is actually the original event that we sent to - * the mozilla thread to get this whole party started. - * we own the freeing of this storage so macke sure we have a - * valid destructor function - */ - MozillaEvent_Timeout * pEvent = (MozillaEvent_Timeout *) obj; - - /* XXXMLM - this event should have a context now, if it doesn't, it's - * going to use the default thread group. - */ - XP_ASSERT(pEvent->ce.context != NULL); - - /* reuse our event */ - PR_InitEvent(&pEvent->ce.event, NULL, - (PRHandleEventProc)et_firetimeout_handler, - (PRDestroyEventProc)et_generic_destructor); - - /* add the event to the event queue */ - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - NET_StreamClass * stream; - NET_StreamClass * old_stream; - URL_Struct * url_struct; - JSBool free_stream_on_close; -} DecoderStreamStruct; - -PR_STATIC_CALLBACK(void) -et_setstream_handler(DecoderStreamStruct * e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - /* This will hold a ref on e->url_struct from the context's decoder. */ - LM_SetDecoderStream(e->ce.context, e->stream, e->url_struct, - e->free_stream_on_close); - - /* Drop the reference held below when e was constructed. */ - NET_DropURLStruct(e->url_struct); - - ET_END_EVENT_HANDLER(e); -} - -/* - */ -void -ET_SetDecoderStream(MWContext * pContext, NET_StreamClass *stream, - URL_Struct *url_struct, JSBool free_stream_on_close) -{ - /* create our event object */ - DecoderStreamStruct * pEvent = XP_NEW_ZAP(DecoderStreamStruct); - if(!pEvent) - return; - - /* do a PR_InitEvent on the event structure */ - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_setstream_handler, - (PRDestroyEventProc)et_generic_destructor); - - /* fill in the non-PR fields we care about */ - pEvent->ce.context = pContext; - pEvent->stream = stream; - pEvent->url_struct = url_struct; - pEvent->free_stream_on_close = free_stream_on_close; - - /* we are holding a copy of the URL_struct across thread boundaries */ - NET_HoldURLStruct(url_struct); - - /* add the event to the event queue */ - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - char *codebase; -} StartSoftUpdateStruct; - -PR_STATIC_CALLBACK(void) -et_startsoftupdate_handler(StartSoftUpdateStruct *e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - /* This decoder should have just been created to do the softupdate, - * so it shouldn't have any principals yet. */ - XP_ASSERT(decoder->principals == NULL); - - decoder->principals = LM_NewJSPrincipals(NULL, NULL, e->codebase); - if (decoder->principals == NULL) - return; - JSPRINCIPALS_HOLD(decoder->js_context, decoder->principals); - - ET_END_EVENT_HANDLER(e); -} - -PR_STATIC_CALLBACK(void) -et_startsoftupdate_destructor(StartSoftUpdateStruct *e) -{ - XP_FREE(e->codebase); - XP_FREE(e); -} - -/* - */ -void -ET_StartSoftUpdate(MWContext *pContext, char *codebase) -{ - /* create our event object */ - StartSoftUpdateStruct *pEvent = XP_NEW_ZAP(StartSoftUpdateStruct); - if (pEvent == NULL) - return; - - /* do a PR_InitEvent on the event structure */ - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_startsoftupdate_handler, - (PRDestroyEventProc)et_startsoftupdate_destructor); - - /* fill in the non-PR fields we care about */ - pEvent->ce.context = pContext; - pEvent->codebase = codebase; - - /* add the event to the event queue */ - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -PR_STATIC_CALLBACK(void) -et_clearstream_handler(DecoderStreamStruct * e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - lm_ClearDecoderStream(decoder, JS_TRUE); - if (e->old_stream) - XP_FREE(e->old_stream); - - ET_END_EVENT_HANDLER(e); -} - -/* - */ -void -ET_ClearDecoderStream(MWContext * pContext, NET_StreamClass * old_stream) -{ - /* create our event object */ - DecoderStreamStruct * pEvent = XP_NEW_ZAP(DecoderStreamStruct); - if(!pEvent) - return; - - /* do a PR_InitEvent on the event structure */ - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_clearstream_handler, - (PRDestroyEventProc)et_generic_destructor); - - /* fill in the non-PR fields we care about */ - pEvent->ce.context = pContext; - pEvent->old_stream = old_stream; - - /* add the event to the event queue */ - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - JSObject *layer_obj; -} DestroyLayerStruct; - -PR_STATIC_CALLBACK(void) -et_destroylayer_handler(DestroyLayerStruct * e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - lm_DestroyLayer(e->ce.context, e->layer_obj); - - ET_END_EVENT_HANDLER(e); -} - -void -ET_DestroyLayer(MWContext * pContext, JSObject *layer_obj) -{ - LMWindowGroup *grp; - DestroyLayerStruct * pEvent; - - if(!lm_inited()) { - return; - } - - pEvent = XP_NEW_ZAP(DestroyLayerStruct); - if(!pEvent) - return; - - grp = lm_MWContextToGroup(pContext); - XP_ASSERT(grp != NULL); - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_destroylayer_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = pContext; - MAKE_EAGER(pEvent, grp->queue_stack); - pEvent->layer_obj = layer_obj; - et_event_to_mocha(&pEvent->ce); -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - JSBool resize_reload; -} ReleaseDocStruct; - -PR_STATIC_CALLBACK(void) -et_releasedocument_handler(ReleaseDocStruct * e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - LM_ReleaseDocument(e->ce.context, e->resize_reload); - - ET_END_EVENT_HANDLER(e); -} - -void -ET_ReleaseDocument(MWContext * pContext, JSBool resize_reload) -{ - LMWindowGroup *grp; - ReleaseDocStruct * pEvent; - - if(!lm_inited()) { - /* - * Need this protection here before we call lm_MWContextToGroup() - */ - return; - } - - /* create our event object */ - pEvent = XP_NEW_ZAP(ReleaseDocStruct); - if(!pEvent) - return; - - grp = lm_MWContextToGroup(pContext); - if(grp == NULL) { - /* XXXMLM - This window hasn't used JS yet; just ignore the event. */ - XP_DELETE(pEvent); - return; - } - - /* - * give this event a NULL owner so it can't get revoked by an - * errant intertupt - */ - PR_InitEvent(&pEvent->ce.event, NULL, - (PRHandleEventProc)et_releasedocument_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = pContext; - MAKE_EAGER(pEvent, grp->queue_stack); - pEvent->resize_reload = resize_reload; - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - IL_GroupContext *img_cx; -} InterruptImgCXEvent; - - -PR_STATIC_CALLBACK(void) -et_moz_interruptimgcx_func(void *data) -{ - InterruptImgCXEvent *e = data; - - IL_InterruptContext(e->img_cx); -} - - -PR_STATIC_CALLBACK(void) -et_interruptimgcx_handler(InterruptImgCXEvent *e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - e->img_cx = decoder->image_context; - ET_moz_CallFunction(et_moz_interruptimgcx_func, e); - - ET_END_EVENT_HANDLER(e); -} - -void -ET_InterruptImgCX(MWContext * pContext) -{ - InterruptImgCXEvent * pEvent = XP_NEW_ZAP(InterruptImgCXEvent); - if(!pEvent) - return; - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_interruptimgcx_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = pContext; - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - char * szUrl; -} NestingUrlEvent; - -PR_STATIC_CALLBACK(void) -et_nestingurl_handler(NestingUrlEvent * e) -{ - JSNestingUrl * url; - ET_BEGIN_EVENT_HANDLER(e); - - if (e->szUrl) { - /* push a new url */ - url = XP_NEW(JSNestingUrl); - url->str = e->szUrl; - url->next = decoder->nesting_url; - decoder->nesting_url = url; - e->szUrl = NULL; /* don't free below */ - } - else { - /* pop an old url */ - url = decoder->nesting_url; - if (url) { - decoder->nesting_url = url->next; - XP_FREE(url->str); - XP_FREE(url); - } - } - - ET_END_EVENT_HANDLER(e); -} - -PR_STATIC_CALLBACK(void) -et_nestingurl_destructor(NestingUrlEvent * e) -{ - XP_FREEIF(e->szUrl); - XP_FREE(e); -} - -void -ET_SetNestingUrl(MWContext * pContext, char * url) -{ - LMWindowGroup *grp; - NestingUrlEvent * pEvent; - - if(!lm_inited()) { - return; - } - - pEvent = XP_NEW_ZAP(NestingUrlEvent); - if(!pEvent) - return; - - grp = lm_MWContextToGroup(pContext); - XP_ASSERT(grp != NULL); - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_nestingurl_handler, - (PRDestroyEventProc)et_nestingurl_destructor); - - pEvent->ce.context = pContext; - MAKE_EAGER(pEvent, grp->queue_stack); - if(url) - pEvent->szUrl = XP_STRDUP(url); - else - pEvent->szUrl = NULL; - - et_event_to_mocha(&pEvent->ce); - -} - - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - JSVersion version; -} VersionEvent; - -PR_STATIC_CALLBACK(void) -et_version_handler(VersionEvent * e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - JS_SetVersion(decoder->js_context, e->version); - - ET_END_EVENT_HANDLER(e); -} - -void -ET_SetVersion(MWContext * pContext, JSVersion version) -{ - VersionEvent * pEvent = XP_NEW_ZAP(VersionEvent); - if (pEvent == NULL) - return; - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_version_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = pContext; - pEvent->version = version; - et_event_to_mocha(&pEvent->ce); - -} - - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - void * data; - ETVoidPtrFunc fn; - History_entry * he; -} RemoveWindowEvent; - -PR_STATIC_CALLBACK(void) -et_moz_removewindow_epilog(void *data) -{ - RemoveWindowEvent *e = data; - - /* Do this before calling e->fn, which nukes e->ce.context! */ - if (e->he) - SHIST_DropEntry(e->ce.context, e->he); - - /* Call the FE to destroy the context, finally. */ - e->fn(e->data); -} - -/* - * Don't try to get the MochaDecoder in here with the - * ET_BEGIN_EVENT_HANDLER() stuff since the decoder - * already partially destroyed - */ -PR_STATIC_CALLBACK(void) -et_removewindow_handler(RemoveWindowEvent * e) -{ - LM_RemoveWindowContext(e->ce.context, e->he); - - /* remove any messages for this context that are waiting for us */ - /* what prevents one from getting added while running this? - A: Being in the monitor of interpretQueue, both when you do - this, and when you deliver the events. -Warren */ -/* XP_ASSERT(PR_InMonitor(lm_queue_monitor));*/ - et_RevokeEvents(e->ce.context); - - /* remove the window from its group, if any */ - LM_RemoveContextFromGroup(e->ce.context); - - ET_moz_CallFunction(et_moz_removewindow_epilog, e); -} - -void -ET_RemoveWindowContext(MWContext * pContext, ETVoidPtrFunc fn, void * data) -{ - /* create our event object */ - RemoveWindowEvent * pEvent; - History_entry * he = NULL; - - /* - * If mocha is disabled or this is a non-JS aware context don't - * bother creating an event, just call the closure directly - */ - if (!LM_CanDoJS(pContext)) { - ET_moz_CallFunctionAsync(fn, data); - return; - } - - /* - * Allocate an event before possibly holding a history entry, so we can - * return early without possibly having to drop. - */ - pEvent = XP_NEW_ZAP(RemoveWindowEvent); - if (!pEvent) - return; - - /* - * Frames are special, because their contexts are destroyed and recreated - * when they're reloaded, even when resizing. - */ - if (pContext->is_grid_cell) { - lo_GridRec *grid = 0; - lo_GridCellRec *rec = lo_ContextToCell(pContext, FALSE, &grid); - - if (rec && rec->hist_indx > 0) { - he = (History_entry *)rec->hist_array[rec->hist_indx - 1].hist; - SHIST_HoldEntry(he); - } - } - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_removewindow_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = pContext; - pEvent->fn = fn; - pEvent->data = data; - pEvent->he = he; - - /* set the doc_id so that we don't try to reuse this context */ - pContext->doc_id = -1; - - et_event_to_mocha(&pEvent->ce); - -} - - -/**********************************************************************/ - -PR_STATIC_CALLBACK(void) -et_putdecoder_handler(PutDecoderEvent * e) -{ - /* et_SubEventLoopGroup doesn't lock because the context is no longer - * valid, so we have to lock ourselves now. */ - if(e->group == NULL) { - /* jiminy christmas, the context has gone away so we couldn't - * figure out which group to use - */ - e->group = LM_GetDefaultWindowGroup(NULL); - } - HOLD_BACK_COUNT(e->decoder); - LM_BeginRequest(e->group, e->decoder->js_context); - LM_PutMochaDecoder(e->decoder); - LM_EndRequest(e->group, e->decoder->js_context); - DROP_BACK_COUNT(e->decoder); -} - -/* - * The mozilla thread is, in general, not allowed into the world of - * MochaDecoders, but one could have been stashed in a session - * history object. If so, provide a way for the mozilla thread to - * release the decoder when the history object goes away. - */ -void -et_PutMochaDecoder(MWContext *pContext, MochaDecoder *decoder) -{ - PutDecoderEvent * pEvent; - PREventQueue * queue; - pEvent = XP_NEW_ZAP(PutDecoderEvent); - if (!pEvent) - return; - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_putdecoder_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = pContext; - pEvent->decoder = decoder; - pEvent->group = lm_MWContextToGroup(pContext); - - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - - typedef struct { - ETEvent ce; - void * app; - } SetPluginWindowEvent; - - PR_EXTERN(void) NPL_SetPluginWindow(void *); - - PR_STATIC_CALLBACK(void) - et_SetPluginWindow_handler(SetPluginWindowEvent * e) - { - NPL_SetPluginWindow(e->app); - } - - void - ET_SetPluginWindow(MWContext *pContext, void* app) - { - SetPluginWindowEvent * pEvent; - pEvent = XP_NEW_ZAP(SetPluginWindowEvent); - if (!pEvent) - return; - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_SetPluginWindow_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = pContext; - pEvent->app = app; - et_event_to_mocha(&pEvent->ce); - } -/**********************************************************************/ - -typedef struct { - ETEvent ce; - void * buf; - int len; - int status; - char * content_type; - Bool isUnicode; -} StreamEvent; - -PR_STATIC_CALLBACK(void) -et_streamcomplete_handler(StreamEvent * e) -{ - jsval result; - JSContext * cx; - char *scope = NULL; - JSNestingUrl * url; - - ET_BEGIN_EVENT_HANDLER(e); - - cx = decoder->js_context; - - if(e->content_type) { - if(!strcasecomp(e->content_type, TEXT_JSSS)) { - /* scope to document */ - scope = lm_document_str; - } - else if(!strcasecomp(e->content_type, TEXT_CSS)) { - /* convert to JS and scope to document */ - char *new_buffer; - int32 new_buffer_length; - - CSS_ConvertToJS(e->buf, - e->len, - &new_buffer, - &new_buffer_length); - - XP_FREE(e->buf); - e->buf = new_buffer; - e->len = new_buffer_length; - - if(e->len) - e->len--; /* hack: subtract one to remove final \n */ - - scope = lm_document_str; - } - } - -#ifdef JSDEBUGGER - if( LM_GetJSDebugActive() ) - LM_JamSourceIntoJSDebug( LM_GetSourceURL(decoder), - e->buf, e->len, e->ce.context ); -#endif /* JSDEBUGGER */ - - LM_EvaluateBuffer(decoder, e->buf, e->len, 1, scope, NULL, - (JSBool) e->isUnicode, &result); - - url = decoder->nesting_url; - if (decoder->stream && !url) { - /* complete and remove the stream */ - ET_moz_CallFunction( (ETVoidPtrFunc) decoder->stream->complete, - (void *)decoder->stream); - XP_DELETE(decoder->stream); - decoder->stream = 0; - decoder->stream_owner = LO_DOCUMENT_LAYER_ID; - decoder->free_stream_on_close = JS_FALSE; - } - - if (url) { - decoder->nesting_url = url->next; - XP_FREE(url->str); - XP_FREE(url); - ET_PostEvalAck(e->ce.context, XP_DOCID(e->ce.context), - e->ce.context, NULL, 0, NULL, NULL, FALSE, - lo_ScriptEvalExitFn); - } - - ET_END_EVENT_HANDLER(e); -} - -PR_STATIC_CALLBACK(void) -et_streamcomplete_destructor(StreamEvent * e) -{ - if(e->buf) - XP_FREE(e->buf); - XP_FREEIF(e->content_type); - XP_FREE(e); -} - -/* - * A mocha stream from netlib has compeleted, evaluate the contents - * and pass them up our stream. We will take ownership of the - * buf argument and are responsible for freeing it - */ -void -ET_MochaStreamComplete(MWContext * pContext, void * buf, int len, - char *content_type, Bool isUnicode) -{ - LMWindowGroup *grp; - StreamEvent * pEvent; - - if(!lm_inited()) { /* paranoia */ - return; - } - - pEvent = XP_NEW_ZAP(StreamEvent); - if(!pEvent) { - XP_FREE(buf); - return; - } - - grp = lm_MWContextToGroup(pContext); - XP_ASSERT(grp != NULL); - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_streamcomplete_handler, - (PRDestroyEventProc)et_streamcomplete_destructor); - - pEvent->ce.context = pContext; - MAKE_EAGER(pEvent, grp->queue_stack); - pEvent->buf = buf; - pEvent->len = len; - pEvent->isUnicode = isUnicode; - if (content_type) - pEvent->content_type = XP_STRDUP(content_type); - - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -PR_STATIC_CALLBACK(void) -et_streamabort_handler(StreamEvent * e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - if (decoder->stream && !decoder->nesting_url) { - ET_moz_Abort(decoder->stream->abort, decoder->stream, e->status); - XP_DELETE(decoder->stream); - decoder->stream = 0; - decoder->free_stream_on_close = JS_FALSE; - decoder->stream_owner = LO_DOCUMENT_LAYER_ID; - } - - ET_END_EVENT_HANDLER(e); -} - -/* - * A mocha stream from netlib has aborted - */ -void -ET_MochaStreamAbort(MWContext * context, int status) -{ - - StreamEvent * pEvent = XP_NEW_ZAP(StreamEvent); - - if(!pEvent) - return; - - PR_InitEvent(&pEvent->ce.event, context, - (PRHandleEventProc)et_streamabort_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = context; - pEvent->status = status; - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -PR_STATIC_CALLBACK(void) -et_newlayerdoc_handler(JSEvent * e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - lm_NewLayerDocument(decoder, e->layer_id); - - ET_END_EVENT_HANDLER(e); -} - -/* - * A mocha stream from netlib has aborted - */ -void -ET_NewLayerDocument(MWContext * context, int32 layer_id) -{ - - JSEvent * pEvent = XP_NEW_ZAP(JSEvent); - - if(!pEvent) - return; - - /* do a PR_InitEvent on the event structure */ - PR_InitEvent(&pEvent->ce.event, context, - (PRHandleEventProc)et_newlayerdoc_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = context; - pEvent->layer_id = layer_id; - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - int32 layer_id; - LO_BlockInitializeStruct *param; - ETRestoreAckFunc fn; - void *data; -} RestoreStruct; - - -PR_STATIC_CALLBACK(void) -et_restorelayerstate_handler(RestoreStruct * e) -{ - ET_BEGIN_EVENT_HANDLER(e); - - lm_RestoreLayerState(e->ce.context, e->layer_id, - e->param); - - ET_PostRestoreAck(e->data, e->param, e->fn); - - ET_END_EVENT_HANDLER(e); -} - -void -ET_RestoreLayerState(MWContext *context, int32 layer_id, - LO_BlockInitializeStruct *param, ETRestoreAckFunc fn, - void *data) -{ - LMWindowGroup *grp; - RestoreStruct * pEvent; - - if(!lm_inited()) { - return; - } - - pEvent = XP_NEW_ZAP(RestoreStruct); - - if(!pEvent) - return; - - grp = lm_MWContextToGroup(context); - XP_ASSERT(grp != NULL); - - PR_InitEvent(&pEvent->ce.event, context, - (PRHandleEventProc)et_restorelayerstate_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = context; - pEvent->layer_id = layer_id; - pEvent->param = param; - pEvent->fn = fn; - pEvent->data = data; - MAKE_EAGER(pEvent, grp->queue_stack); - et_event_to_mocha(&pEvent->ce); -} - - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - PA_Block onload; - PA_Block onunload; - PA_Block onfocus; - PA_Block onblur; - PA_Block onhelp; - PA_Block onmouseover; - PA_Block onmouseout; - PA_Block ondragdrop; - PA_Block onmove; - PA_Block onresize; - PA_Block id; - char *all; - Bool bDelete; - int newline_count; -} ReflectWindowEvent; - -PR_STATIC_CALLBACK(void) -et_reflectwindow_handler(ReflectWindowEvent * e) -{ - JSObject *obj; - - ET_BEGIN_EVENT_HANDLER(e); - - obj = decoder->window_object; - - if (e->onload) { - (void) lm_CompileEventHandler(decoder, e->id, (PA_Block) e->all, - e->newline_count, - obj, PARAM_ONLOAD, e->onload); - } - if (e->onunload) { - (void) lm_CompileEventHandler(decoder, e->id, (PA_Block) e->all, - e->newline_count, - obj, PARAM_ONUNLOAD, e->onunload); - } - if (e->onfocus) { - (void) lm_CompileEventHandler(decoder, e->id, (PA_Block) e->all, - e->newline_count, - obj, PARAM_ONFOCUS, e->onfocus); - } - if (e->onblur) { - (void) lm_CompileEventHandler(decoder, e->id, (PA_Block) e->all, - e->newline_count, - obj, PARAM_ONBLUR, e->onblur); - } - - if (e->onhelp) { - (void) lm_CompileEventHandler(decoder, e->id, (PA_Block) e->all, - e->newline_count, - obj, PARAM_ONHELP, e->onhelp); - } - - if (e->onmouseover) { - (void) lm_CompileEventHandler(decoder, e->id, (PA_Block) e->all, - e->newline_count, - obj, PARAM_ONMOUSEOVER, e->onmouseover); - } - - if (e->onmouseout) { - (void) lm_CompileEventHandler(decoder, e->id, (PA_Block) e->all, - e->newline_count, - obj, PARAM_ONMOUSEOUT, e->onmouseout); - } - - if (e->ondragdrop) { - (void) lm_CompileEventHandler(decoder, e->id, (PA_Block) e->all, - e->newline_count, - obj, PARAM_ONDRAGDROP, e->ondragdrop); - } - - if (e->onmove) { - (void) lm_CompileEventHandler(decoder, e->id, (PA_Block) e->all, - e->newline_count, - obj, PARAM_ONMOVE, e->onmove); - } - - if (e->onresize) { - (void) lm_CompileEventHandler(decoder, e->id, (PA_Block) e->all, - e->newline_count, - obj, PARAM_ONRESIZE, e->onresize); - } - - if (e->bDelete) { - if(e->onload) - XP_FREE(e->onload); - if(e->onunload) - XP_FREE(e->onunload); - if(e->onfocus) - XP_FREE(e->onfocus); - if(e->onblur) - XP_FREE(e->onblur); - if(e->onhelp) - XP_FREE(e->onhelp); - if(e->onmouseover) - XP_FREE(e->onmouseover); - if(e->onmouseout) - XP_FREE(e->onmouseout); - if(e->ondragdrop) - XP_FREE(e->ondragdrop); - if(e->onmove) - XP_FREE(e->onmove); - if(e->onresize) - XP_FREE(e->onresize); - if(e->id) - XP_FREE(e->id); - if(e->all) - XP_FREE(e->all); - } - - ET_END_EVENT_HANDLER(e); -} - -/* - * Reflect window events - */ -void -ET_ReflectWindow(MWContext * pContext, - PA_Block onLoad, PA_Block onUnload, - PA_Block onFocus, PA_Block onBlur, PA_Block onHelp, - PA_Block onMouseOver, PA_Block onMouseOut, PA_Block onDragDrop, - PA_Block onMove, PA_Block onResize, - PA_Block id, char *all, Bool bDelete, - int newline_count) -{ - LMWindowGroup *grp; - ReflectWindowEvent * pEvent; - - if(!lm_inited()) { - return; - } - - pEvent = XP_NEW_ZAP(ReflectWindowEvent); - if(!pEvent) - return; - - grp = lm_MWContextToGroup(pContext); - XP_ASSERT(grp != NULL); - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_reflectwindow_handler, - (PRDestroyEventProc)et_generic_destructor); - - pEvent->ce.context = pContext; - MAKE_EAGER(pEvent, grp->queue_stack); - pEvent->onload = onLoad; - pEvent->onunload = onUnload; - pEvent->onfocus = onFocus; - pEvent->onblur = onBlur; - pEvent->onhelp = onHelp; - pEvent->onmouseover = onMouseOver; - pEvent->onmouseout = onMouseOut; - pEvent->ondragdrop = onDragDrop; - pEvent->onmove = onMove; - pEvent->onresize = onResize; - pEvent->id = id; - pEvent->all = all; - pEvent->bDelete = bDelete; - pEvent->newline_count = newline_count; - - /* add the event to the event queue */ - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -#ifdef DEBUG -PR_STATIC_CALLBACK(void) -lm_dump_named_root(const char *name, void *rp, void *data) -{ - XP_TRACE(("Leaked named root \"%s\" at 0x%x", name, rp)); -} -#endif - -PR_STATIC_CALLBACK(void) -et_FinishMochaHandler(JSEvent * e) -{ - MochaDecoder *decoder; - - decoder = LM_GetCrippledDecoder(); - if (decoder) { - LM_PutMochaDecoder(decoder); - LM_SetCrippledDecoder(NULL); - } - -#if defined(OJI) - /* - =-= sudu Ask scott about this. -PR_PUBLIC_API(void) -JSJ_DisconnectFromJavaVM(JSJavaVM *); -*/ -#elif defined (JAVA) - JSJ_Finish(); -#endif -#ifdef DEBUG - JS_DumpNamedRoots(lm_runtime, lm_dump_named_root, NULL); -#endif - JS_Finish(lm_runtime); - - /* turn off the mocha thread here! */ -} - -void -ET_FinishMocha(void) -{ - - JSEvent * pEvent; - - /* - * Annoyingly, the winfe might call us without event actually - * initializing mocha (if an instance is already running) - */ - if (!lm_inited()) - return; - - pEvent = XP_NEW_ZAP(JSEvent); - if (!pEvent) - return; - - PR_InitEvent(&pEvent->ce.event, NULL, - (PRHandleEventProc)et_FinishMochaHandler, - (PRDestroyEventProc)et_generic_destructor); - - /* We'll just call this one on the default mocha thread. */ - /* et_event_to_mocha does that if ce.context is null. */ - pEvent->ce.context = NULL; - - et_event_to_mocha(&pEvent->ce); - -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - void * data; - JSBool processed; -} DocWriteAckEvent; - -PR_STATIC_CALLBACK(void) -et_docwriteack_handler(DocWriteAckEvent * e) -{ - LMWindowGroup *grp; - - /* MLM - this context should not be NULL; it should have a group - * already. - */ - grp = lm_MWContextToGroup(e->ce.context); - XP_ASSERT(grp != NULL); - - e->processed = JS_TRUE; - grp->queue_stack->done = TRUE; - grp->queue_stack->retval = e->data; -} - -PR_STATIC_CALLBACK(void) -et_docwriteack_destructor(DocWriteAckEvent * e) -{ - if (!e->processed) - et_docwriteack_handler(e); - XP_FREE(e); -} - -void -ET_DocWriteAck(MWContext * context, int status) -{ - DocWriteAckEvent * pEvent; - - pEvent = XP_NEW_ZAP(DocWriteAckEvent); - if (!pEvent) - return; - - PR_InitEvent(&pEvent->ce.event, context, - (PRHandleEventProc)et_docwriteack_handler, - (PRDestroyEventProc)et_docwriteack_destructor); - - pEvent->ce.context = context; - pEvent->ce.handle_eagerly = TRUE; - pEvent->data = (void *)status; - et_event_to_mocha(&pEvent->ce); -} - -/**********************************************************************/ - -void -et_SubEventLoopGroup(LMWindowGroup *grp); - -void et_SubEventLoop(QueueStackElement *qse) -{ - LMWindowGroup *grp = lm_QueueStackToGroup(qse); - XP_ASSERT(grp != NULL); - et_SubEventLoopGroup(grp); -} - -void -et_SubEventLoopGroup(LMWindowGroup *grp) -{ - PREvent * pEvent; - QueueStackElement *qse = grp->queue_stack; - XP_ASSERT(qse != NULL); - - /* while there are events process them */ - while ((!qse->done) && (!grp->done)) { - /* can't be interrupted yet */ - grp->interruptCurrentOp = JS_FALSE; - - LM_LockJSByGroup(grp, NULL); - - /* need to interlock the getting of an event with ET_Interrupt */ - PR_EnterMonitor(grp->queue_monitor); - pEvent = PR_GetEvent(qse->queue); - - /* if we got an event handle it else wait for something */ - if(pEvent) { - MochaDecoder *md; - JSContext *jsc; - PR_ExitMonitor(grp->queue_monitor); - - if( (((ETEvent *)pEvent)->context == NULL) || - (!XP_IsContextInList(((ETEvent *)pEvent)->context)) ) { - /* This must be a put mocha decoder event, or the context - * has disappeared from under us somehow. */ - PR_HandleEvent(pEvent); - } else { - md = LM_GetMochaDecoder(((ETEvent *)pEvent)->context); - XP_ASSERT(md != NULL); - jsc = md->js_context; - LM_JSLockSetContext(((ETEvent *)pEvent)->context); - if(!LM_IsLocked(grp)) { - LM_BeginRequest(grp, jsc); - PR_HandleEvent(pEvent); - LM_EndRequest(grp, jsc); - } else { - PR_HandleEvent(pEvent); - } - LM_PutMochaDecoder(md); - } - LM_UnlockJSByGroup(grp); -#ifdef DEBUG - /* make sure we don't have the layout lock */ - while(!LO_VerifyUnlockedLayout()) { - XP_ASSERT(0); - LO_UnlockLayout(); - } -#endif - - } - else { - /* queue is empty, wait for something to show up */ - LM_UnlockJSByGroup(grp); - PR_Wait(grp->queue_monitor, PR_INTERVAL_NO_TIMEOUT); - PR_ExitMonitor(grp->queue_monitor); - } - - } -} - -/* - * Sit around in the mocha thread waiting for events to show up - */ -void PR_CALLBACK -lm_wait_for_events(void * pB) -{ - LMWindowGroup *wingrp = pB; - - XP_ASSERT(wingrp); - - /* - * In NSPR 2.0 this thread could get created and it could start - * running before our parent is done initializing our state. - * The mozilla thread will have done a PR_EnterMonitor() on - * the lm_owner_mon before creating the mocha thread and will - * not exit the monitor until all of the state is initialized. - * So we are assured that if we can get the monitor here the - * mozilla thread has released it and we are OK to run. - */ - PR_EnterMonitor(wingrp->owner_monitor); - PR_ExitMonitor(wingrp->owner_monitor); - - while (!wingrp->done) { - et_SubEventLoopGroup(wingrp); - } - lm_DestroyWindowGroup(wingrp); -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - char *name; - ETBoolPtrFunc active_callback; - ETVoidPtrFunc startup_callback; -} RegComponentStruct; - -PR_STATIC_CALLBACK(void) -et_registercomponent_handler(RegComponentStruct * e) -{ - lm_RegisterComponent(e->name, e->active_callback, e->startup_callback); -} - -PR_STATIC_CALLBACK(void) -et_registercomponent_destructor(RegComponentStruct * e) -{ - if (e->name) - XP_FREE(e->name); - - XP_FREE(e); -} - -void -ET_RegisterComponent(char *name, void *active_callback, void *startup_callback) -{ - /* create our event object */ - RegComponentStruct * pEvent = XP_NEW_ZAP(RegComponentStruct); - if(!pEvent) - return; - - /* do a PR_InitEvent on the event structure */ - PR_InitEvent(&pEvent->ce.event, NULL, - (PRHandleEventProc)et_registercomponent_handler, - (PRDestroyEventProc)et_registercomponent_destructor); - - /* fill in the non-PR fields we care about */ - if (name) - pEvent->name = XP_STRDUP(name); - else - pEvent->name = NULL; - pEvent->active_callback = (ETBoolPtrFunc)active_callback; - pEvent->startup_callback = (ETVoidPtrFunc)startup_callback; - - /* add the event to the event queue */ - /* BONEHEAD - context? */ - XP_ASSERT(pEvent->ce.context != NULL); - et_event_to_mocha(&pEvent->ce); -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - char *comp; - char *name; - uint8 retType; - void *setter; - void *getter; -} RegComponentPropStruct; - -PR_STATIC_CALLBACK(void) -et_registercomponentprop_handler(RegComponentPropStruct * e) -{ - lm_RegisterComponentProp(e->comp, e->name, e->retType, - (ETCompPropSetterFunc)e->setter, (ETCompPropGetterFunc)e->getter); -} - -PR_STATIC_CALLBACK(void) -et_registercomponentprop_destructor(RegComponentPropStruct * e) -{ - if (e->comp) - XP_FREE(e->comp); - if (e->name) - XP_FREE(e->name); - - XP_FREE(e); -} - -void -ET_RegisterComponentProp(char *comp, char *name, uint8 retType, void *setter, - void *getter) -{ - /* create our event object */ - RegComponentPropStruct * pEvent = XP_NEW_ZAP(RegComponentPropStruct); - if(!pEvent) - return; - - /* this won't work without a component and property name. */ - if (!comp || !name) - return; - - /* do a PR_InitEvent on the event structure */ - PR_InitEvent(&pEvent->ce.event, NULL, - (PRHandleEventProc)et_registercomponentprop_handler, - (PRDestroyEventProc)et_registercomponentprop_destructor); - - /* fill in the non-PR fields we care about */ - pEvent->comp = XP_STRDUP(comp); - pEvent->name = XP_STRDUP(name); - pEvent->retType = retType; - pEvent->setter = setter; - pEvent->getter = getter; - - /* add the event to the event queue */ - XP_ASSERT(pEvent->ce.context != NULL); - et_event_to_mocha(&pEvent->ce); -} - -/**********************************************************************/ - -typedef struct { - ETEvent ce; - char *comp; - char *name; - uint8 retType; - void *method; - int32 argc; -} RegComponentMethodStruct; - -PR_STATIC_CALLBACK(void) -et_registercomponentmethod_handler(RegComponentMethodStruct * e) -{ - lm_RegisterComponentMethod(e->comp, e->name, e->retType, (ETCompMethodFunc)e->method, e->argc); -} - -PR_STATIC_CALLBACK(void) -et_registercomponentmethod_destructor(RegComponentMethodStruct * e) -{ - if (e->comp) - XP_FREE(e->comp); - if (e->name) - XP_FREE(e->name); - XP_FREE(e); -} - -void -ET_RegisterComponentMethod(char *comp, char *name, uint8 retType, void *method, - int32 argc) -{ - /* create our event object */ - RegComponentMethodStruct * pEvent = XP_NEW_ZAP(RegComponentMethodStruct); - if(!pEvent) - return; - - /* do a PR_InitEvent on the event structure */ - PR_InitEvent(&pEvent->ce.event, NULL, - (PRHandleEventProc)et_registercomponentmethod_handler, - (PRDestroyEventProc)et_registercomponentmethod_destructor); - - /* fill in the non-PR fields we care about */ - pEvent->comp = XP_STRDUP(comp); - pEvent->name = XP_STRDUP(name); - pEvent->retType = retType; - pEvent->method = method; - pEvent->argc = argc; - - /* add the event to the event queue */ - XP_ASSERT(pEvent->ce.context != NULL); - et_event_to_mocha(&pEvent->ce); -} - - - - diff --git a/mozilla/lib/libmocha/et_moz.c b/mozilla/lib/libmocha/et_moz.c deleted file mode 100644 index ab961f28a59..00000000000 --- a/mozilla/lib/libmocha/et_moz.c +++ /dev/null @@ -1,3120 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * Event handling in the Navigator / libmocha - * - * This file contains common code for separate threads to send messages - * to the mozilla thread to get it to do stuff - */ -#include "lm.h" -#include "xp.h" -#include "fe_proto.h" -#include "net.h" -#include "structs.h" -#include "prthread.h" -#include "prtypes.h" -#include "prmem.h" -#include "ds.h" /* XXX required by htmldlgs.h */ -#include "htmldlgs.h" -#include "layout.h" -#include "np.h" -#include "prefapi.h" -#include "pa_parse.h" -#include "libi18n.h" -#include "netcache.h" -#include "secnav.h" - -#define IL_CLIENT -#include "libimg.h" /* Image Library public API. */ - -#define CHECKBOX_ACCEPTBIT 0x01 -#define CHECKBOX_CHECKBIT 0x02 - -/* pointer to the mocha thread */ -extern PRThread *mozilla_thread; - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void*) -et_PostEvent(ETEvent * e, Bool sync) -{ - - /* - * Guard against the mozilla_event_queue goes away before we do - * on exit. - */ - if(!mozilla_event_queue) - return(NULL); - - /* - * If we are already in the mozilla thread and about to send - * a synchronous message to ourselves just process it right - * now instead of deadlocking - */ - if(sync && PR_CurrentThread() == mozilla_thread) { - void * val; - val = e->event.handler(&e->event); - e->event.destructor(&e->event); - return(val); - } - - if(sync) - return(PR_PostSynchronousEvent(mozilla_event_queue, &e->event)); - - PR_PostEvent(mozilla_event_queue, &e->event); - return(NULL); - -} - - -/* - * synchonous events can't be destroyed until after PR_PostSynchronousEvent() - * has returned. This is a dummy destructor to make sure the event stays - * alive along enough - */ -PR_STATIC_CALLBACK(void) -et_DestroyEvent_WaitForIt(void * event) -{ -} - -/* - * Generic destructor for event with no private data - */ -PR_STATIC_CALLBACK(void) -et_DestroyEvent_GenericEvent(void * event) -{ - XP_FREE(event); -} - - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - char* szMessage; /* message for dialog */ - JSBool bConfirm; /* TRUE if confirmation, FALSE if alert */ -} MozillaEvent_MessageBox; - -typedef struct { - ETEvent ce; - char* mainMessage, - * checkMessage, - * okMessage, - * cancelMessage; - JSBool accepted; /* dialog was OKed? */ - XP_Bool checked; /* checkbox is checked? */ -} MozillaEvent_CheckConfirmBox; /* CheckConfirm message box event */ - - -PR_STATIC_CALLBACK(void*) -et_HandleEvent_MessageBox(MozillaEvent_MessageBox* e) -{ - void *pRet; - Bool bPriorJSCalling = FALSE; - if( e->ce.context ) { - bPriorJSCalling = e->ce.context->bJavaScriptCalling; - e->ce.context->bJavaScriptCalling = TRUE; - } - - pRet = (void *)JSTYPE_BOOLEAN; - - if( e->bConfirm ) - pRet = (void *)FE_Confirm(e->ce.context, e->szMessage); - else - FE_Alert(e->ce.context, e->szMessage); - - if( e->ce.context ) - e->ce.context->bJavaScriptCalling = bPriorJSCalling; - - return pRet; -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_MessageBox(MozillaEvent_MessageBox* event) -{ - XP_FREE((char*)event->szMessage); - XP_FREE(event); -} - -PR_STATIC_CALLBACK(void*) -et_HandleEvent_CheckConfirmBox(MozillaEvent_CheckConfirmBox* e) -{ - void *pRet; - Bool bPriorJSCalling = FALSE; - if( e->ce.context ) { - bPriorJSCalling = e->ce.context->bJavaScriptCalling; - e->ce.context->bJavaScriptCalling = TRUE; - } - - e->accepted = FE_CheckConfirm(e->ce.context, e->mainMessage, - e->checkMessage, e->okMessage, e->cancelMessage, - &e->checked); - /* we're restricted to a single (void *) return value, and we need to return - two separate booleans, thus the bit hackery: */ - pRet = (void *) ((e->accepted ? CHECKBOX_ACCEPTBIT : 0x0) | - (e->checked ? CHECKBOX_CHECKBIT : 0x0)); - - if( e->ce.context ) - e->ce.context->bJavaScriptCalling = bPriorJSCalling; - - return pRet; -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_CheckConfirmBox(MozillaEvent_CheckConfirmBox* event) -{ - XP_FREE((char *)event->mainMessage); - XP_FREE((void *)event->checkMessage); - XP_FREEIF((void *)event->okMessage); - XP_FREEIF((void *)event->cancelMessage); - XP_FREE((void *)event); -} - -JSBool -ET_PostMessageBox(MWContext* context, char* szMessage, JSBool bConfirm) -{ - JSBool ok = JS_TRUE; - MozillaEvent_MessageBox* event = PR_NEW(MozillaEvent_MessageBox); - if (event == NULL) - return(JS_FALSE); - event->ce.context = context; - event->szMessage = strdup(szMessage); - event->bConfirm = bConfirm; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_MessageBox, - (PRDestroyEventProc)et_DestroyEvent_MessageBox); - ok = (JSBool) et_PostEvent(&event->ce, TRUE); - - return(ok); - -} - -JSBool -ET_PostCheckConfirmBox(MWContext* context, - char* szMainMessage, char* szCheckMessage, - char* szOKMessage, char* szCancelMessage, - XP_Bool *bChecked) -{ - uint8 rtnVal; - MozillaEvent_CheckConfirmBox* event = PR_NEW(MozillaEvent_CheckConfirmBox); - if (event == NULL) - return JS_FALSE; - event->ce.context = context; - event->mainMessage = szMainMessage ? strdup(szMainMessage) : 0; - event->checkMessage = szCheckMessage ? strdup(szCheckMessage) : 0; - event->okMessage = szOKMessage ? strdup(szOKMessage) : 0; - event->cancelMessage = szCancelMessage ? strdup(szCancelMessage) : 0; - event->checked = *bChecked; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_CheckConfirmBox, - (PRDestroyEventProc)et_DestroyEvent_CheckConfirmBox); - rtnVal = (uint8) et_PostEvent(&event->ce, TRUE); - *bChecked = (rtnVal & CHECKBOX_CHECKBIT) ? JS_TRUE : JS_FALSE; - return (JSBool) (rtnVal & CHECKBOX_ACCEPTBIT) ? JS_TRUE : JS_FALSE; -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - const char * szMessage; /* progress message */ -} MozillaEvent_Progress; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_Progress(MozillaEvent_Progress* e) -{ - FE_Progress(e->ce.context, e->szMessage); -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_Progress(MozillaEvent_MessageBox* event) -{ - XP_FREE((char*)event->szMessage); - XP_FREE(event); -} - -void -ET_PostProgress(MWContext* context, const char* szMessage) -{ - MozillaEvent_Progress* event = PR_NEW(MozillaEvent_Progress); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_Progress, - (PRDestroyEventProc)et_DestroyEvent_Progress); - event->ce.context = context; - if(szMessage) - event->szMessage = strdup(szMessage); - else - event->szMessage = NULL; - et_PostEvent(&event->ce, FALSE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - void * pStuff; -} MozillaEvent_Void; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_ClearTimeout(MozillaEvent_Void* e) -{ - FE_ClearTimeout(e->pStuff); -} - -void -ET_PostClearTimeout(void * pStuff) -{ - MozillaEvent_Void* event = PR_NEW(MozillaEvent_Void); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_ClearTimeout, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = NULL; - event->pStuff = pStuff; - et_PostEvent(&event->ce, FALSE); - -} - -/****************************************************************************/ - -/* - * OK, timeouts are messy. We are in a separate thread, we want to - * call the mozilla thread to fire a timeout. When the timeout - * fires we need to get a message sent back to our thread to call - * our timeout since, presumably, our timeout needs to run in our - * thread and not the mozilla thread. - * Make a duplicate of the current event structure in case the - * timeout gets fired and the 'run the closure' event gets sent - * before we have returned from PR_PostSynchronousEvent(). - */ -PR_STATIC_CALLBACK(void*) -et_HandleEvent_SetTimeout(MozillaEvent_Timeout* e) -{ - MozillaEvent_Timeout* event = XP_NEW_ZAP(MozillaEvent_Timeout); - if (event == NULL) - return(NULL); - - event->fnCallback = e->fnCallback; - event->pClosure = e->pClosure; - event->ulTime = e->ulTime; - event->ce.doc_id = e->ce.doc_id; - event->ce.context = e->ce.context; - event->pTimerId = FE_SetTimeout(ET_FireTimeoutCallBack, event, e->ulTime); - - return(event->pTimerId); -} - -void * -ET_PostSetTimeout(TimeoutCallbackFunction fnCallback, void * pClosure, - uint32 ulTime, int32 doc_id) -{ - MozillaEvent_Timeout* event = XP_NEW_ZAP(MozillaEvent_Timeout); - void * ret; - if (event == NULL) - return(NULL); - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_SetTimeout, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.doc_id = doc_id; - event->fnCallback = fnCallback; - event->pClosure = pClosure; - event->ulTime = ulTime; - - /* XXXMLM - pClosure appears to be an MWContext pointer in all the - * instances I've seen. I'll use it for now. - */ - event->ce.context = (MWContext *) pClosure; - - ret = et_PostEvent(&event->ce, TRUE); - return(ret); - -} - -typedef struct { - ETEvent ce; - int32 wrap_width; - int32 parent_layer_id; -} MozillaEvent_CreateLayer; - -PR_STATIC_CALLBACK(void*) -et_HandleEvent_CreateLayer(MozillaEvent_CreateLayer * e) -{ - int32 layer_id; - - /* See if the document has changed since this event was sent. */ - if(e->ce.doc_id != XP_DOCID(e->ce.context)) - return NULL; - - layer_id = LO_CreateNewLayer(e->ce.context, e->wrap_width, e->parent_layer_id); - return (void*)layer_id; -} - -int32 -ET_PostCreateLayer(MWContext *context, int32 wrap_width, int32 parent_layer_id) -{ - int32 ret; - MozillaEvent_CreateLayer * event = XP_NEW_ZAP(MozillaEvent_CreateLayer); - if (event == NULL) - return(0); - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_CreateLayer, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->ce.doc_id = XP_DOCID(context); - event->wrap_width = wrap_width; - event->parent_layer_id = parent_layer_id; - - ret = (int32)et_PostEvent(&event->ce, TRUE); - return(ret); -} - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void) -et_HandleEvent_DestroyWindow(ETEvent* e) -{ - e->context->waitingMode = FALSE; - FE_DestroyWindow(e->context); -} - -void -ET_PostDestroyWindow(MWContext * context) -{ - ETEvent * event = PR_NEW(ETEvent); - if (event == NULL) - return; - PR_InitEvent(&event->event, context, - (PRHandleEventProc)et_HandleEvent_DestroyWindow, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->context = context; - et_PostEvent(event, FALSE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - LO_Element * pForm; - int32 action; - int32 docID; - PRPackedBool duplicate; -} MozillaEvent_ManipulateForm; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_ManipulateForm(MozillaEvent_ManipulateForm* e) -{ - - /* see if the document has changed since this event was sent */ - if(e->docID != XP_DOCID(e->ce.context)) - return; - - switch(e->action) { - case EVENT_BLUR: - FE_BlurInputElement(e->ce.context, e->pForm); - break; - case EVENT_FOCUS: - FE_FocusInputElement(e->ce.context, e->pForm); - break; - case EVENT_SELECT: - FE_SelectInputElement(e->ce.context, e->pForm); - break; - case EVENT_CLICK: - FE_ClickInputElement(e->ce.context, e->pForm); - break; - case EVENT_CHANGE: - FE_ChangeInputElement(e->ce.context, e->pForm); - break; - default: - XP_ASSERT(0); - } -} - -PR_STATIC_CALLBACK(void) -et_check_already_pending(MozillaEvent_ManipulateForm* event, - MozillaEvent_ManipulateForm* data, - PREventQueue* queue) -{ - if (event->ce.event.owner == data->ce.event.owner) { - if (event->action == data->action) - data->duplicate = TRUE; - } -} - -void -ET_PostManipulateForm(MWContext * context, LO_Element * pForm, int32 action) -{ - MozillaEvent_ManipulateForm* event; - - event = PR_NEW(MozillaEvent_ManipulateForm); - if (event == NULL) - return; - - PR_InitEvent(&event->ce.event, pForm, - (PRHandleEventProc)et_HandleEvent_ManipulateForm, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->docID = XP_DOCID(context); - event->pForm = pForm; - event->action = action; - event->duplicate = FALSE; - - /* - * Now that we have built the event use it to see if a similar - * event already exists. If one does, the owner field will - * get cleared in the event we just created - */ - PR_MapEvents(mozilla_event_queue, - (PREventFunProc)et_check_already_pending, - event); - if (event->duplicate) { - XP_FREE(event); - return; - } - - et_PostEvent(&event->ce, FALSE); - -} - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void) -et_HandleEvent_ClearView(ETEvent * e) -{ - FE_ClearView(e->context, FE_VIEW); -} - -void -ET_PostClearView(MWContext * context) -{ - ETEvent * event = PR_NEW(ETEvent); - if (event == NULL) - return; - PR_InitEvent(&event->event, context, - (PRHandleEventProc)et_HandleEvent_ClearView, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->context = context; - et_PostEvent(event, FALSE); - -} - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void) -et_HandleEvent_FreeImageElement(MozillaEvent_Void* e) -{ - LO_ImageStruct *lo_image = (LO_ImageStruct *) e->pStuff; - - IL_DestroyImage(lo_image->image_req); - lo_image->image_req = NULL; -} - -/* - * From the code flow it looked like some people were depending - * on this getting done before continuing. Not sure if that - * is really the case or not. Do we need to be synchronous? - */ -void -ET_PostFreeImageElement(MWContext * context, void * pStuff) -{ - MozillaEvent_Void* event = PR_NEW(MozillaEvent_Void); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_FreeImageElement, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->pStuff = pStuff; - - et_PostEvent(&event->ce, TRUE); - -} - -/****************************************************************************/ - -/* Free all images in the mocha image context. */ -PR_STATIC_CALLBACK(void) -et_HandleEvent_FreeAnonImages(MozillaEvent_Void* e) -{ - IL_DestroyImageGroup((IL_GroupContext *)e->pStuff); -} - -void -ET_PostFreeAnonImages(MWContext *context, IL_GroupContext *img_cx) -{ - MozillaEvent_Void* event = PR_NEW(MozillaEvent_Void); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_FreeAnonImages, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->pStuff = img_cx; - - et_PostEvent(&event->ce, FALSE); -} - -/****************************************************************************/ - -/* - * Destroy the mocha image context in the Mozilla thread since - * its destruction must succeed the actual destruction of - * anonymous images. - */ -PR_STATIC_CALLBACK(void) -et_HandleEvent_FreeImageContext(MozillaEvent_Void* e) -{ - IL_DestroyGroupContext((IL_GroupContext *)e->pStuff); -} - -void -ET_PostFreeImageContext(MWContext *context, IL_GroupContext *img_cx) -{ - MozillaEvent_Void* event = PR_NEW(MozillaEvent_Void); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_FreeImageContext, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->pStuff = img_cx; - - et_PostEvent(&event->ce, FALSE); -} - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void) -et_HandleEvent_GetUrl(MozillaEvent_Void* e) -{ - FE_GetURL(e->ce.context, (URL_Struct *) e->pStuff); -} - -void -ET_PostGetUrl(MWContext * context, URL_Struct * pUrl) -{ - MozillaEvent_Void* event = PR_NEW(MozillaEvent_Void); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_GetUrl, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->pStuff = pUrl; - et_PostEvent(&event->ce, FALSE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - char* szMessage; /* message for dialog */ - char* szDefault; -} MozillaEvent_Prompt; - - -PR_STATIC_CALLBACK(void *) -et_HandleEvent_Prompt(MozillaEvent_Prompt* e) -{ - void *pRet; - Bool bPriorJSCalling = FALSE; - if( e->ce.context ) { - bPriorJSCalling = e->ce.context->bJavaScriptCalling; - e->ce.context->bJavaScriptCalling = TRUE; - } - - pRet = (void *)FE_Prompt(e->ce.context, e->szMessage, e->szDefault); - - if( e->ce.context ) - e->ce.context->bJavaScriptCalling = bPriorJSCalling; - - return pRet; -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_Prompt(MozillaEvent_Prompt* event) -{ - XP_FREE((char*)event->szMessage); - XP_FREE((char*)event->szDefault); - XP_FREE(event); -} - -char * -ET_PostPrompt(MWContext* context, const char* szMessage, const char * szDefault) -{ - char * ret; - MozillaEvent_Prompt* event = PR_NEW(MozillaEvent_Prompt); - if (event == NULL) - return(NULL); - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_Prompt, - (PRDestroyEventProc)et_DestroyEvent_Prompt); - event->ce.context = context; - event->szMessage = strdup(szMessage); - if(szDefault) - event->szDefault = strdup(szDefault); - else - event->szDefault = NULL; - - ret = (char *) et_PostEvent(&event->ce, TRUE); - return(ret); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - URL_Struct * pUrl; - char * szName; - Chrome * pChrome; - LMWindowGroup * group; -} MozillaEvent_NewWindow; - - -PR_STATIC_CALLBACK(void*) -et_HandleEvent_NewWindow(MozillaEvent_NewWindow* e) -{ - LMWindowGroup *grp = e->group; - - MWContext *ans = FE_MakeNewWindow(e->ce.context, e->pUrl, - e->szName, e->pChrome); - if(grp != NULL) { - LM_AddContextToGroup(grp, ans); - } - return (void *) ans; -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_NewWindow(MozillaEvent_NewWindow* event) -{ - NET_DropURLStruct(event->pUrl); - if (event->szName) - XP_FREE((char*)event->szName); - XP_FREE(event); -} - -MWContext * -ET_PostNewWindow(MWContext* context, URL_Struct * pUrl, - char * szName, Chrome * pChrome, LMWindowGroup *grp) -{ - MWContext * ret; - MozillaEvent_NewWindow* event = PR_NEW(MozillaEvent_NewWindow); - if (event == NULL) - return(NULL); - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_NewWindow, - (PRDestroyEventProc)et_DestroyEvent_NewWindow); - event->ce.context = context; - event->pUrl = NET_HoldURLStruct(pUrl); - if(szName) - event->szName = strdup(szName); - else - event->szName = NULL; - event->pChrome = pChrome; - event->group = grp; - - ret = (MWContext *) et_PostEvent(&event->ce, TRUE); - return(ret); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - Chrome * pChrome; -} MozillaEvent_UpdateWindow; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_UpdateWindow(MozillaEvent_UpdateWindow* e) -{ - FE_UpdateChrome(e->ce.context, e->pChrome); -} - -void -ET_PostUpdateChrome(MWContext* context, Chrome * pChrome) -{ - MozillaEvent_UpdateWindow* event = PR_NEW(MozillaEvent_UpdateWindow); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_UpdateWindow, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->pChrome = pChrome; - - et_PostEvent(&event->ce, TRUE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - Chrome * pChrome; -} MozillaEvent_QueryWindow; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_QueryWindow(MozillaEvent_QueryWindow* e) -{ - FE_QueryChrome(e->ce.context, e->pChrome); -} - -void -ET_PostQueryChrome(MWContext* context, Chrome * pChrome) -{ - MozillaEvent_QueryWindow* event = PR_NEW(MozillaEvent_QueryWindow); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_QueryWindow, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->pChrome = pChrome; - - et_PostEvent(&event->ce, TRUE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - int32 *pPixel; - int32 *pPallette; -} MozillaEvent_GetColorDepth; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_GetColorDepth(MozillaEvent_GetColorDepth* e) -{ - FE_GetPixelAndColorDepth(e->ce.context, e->pPixel, e->pPallette); -} - -void -ET_PostGetColorDepth(MWContext* context, int32 *pPixel, int32 *pPallette) -{ - int32 *pMPixel = NULL, *pMPallette = NULL; - - MozillaEvent_GetColorDepth* event = PR_NEW(MozillaEvent_GetColorDepth); - if (event == NULL) - return; - - pMPixel = XP_ALLOC(sizeof(int32)); - if (pMPixel == NULL) - goto fail; - - pMPallette = XP_ALLOC(sizeof(int32)); - if (pMPallette == NULL) - goto fail; - - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_GetColorDepth, - (PRDestroyEventProc)et_DestroyEvent_WaitForIt); - event->ce.context = context; - event->pPixel = pMPixel; - event->pPallette = pMPallette; - - et_PostEvent(&event->ce, TRUE); - *pPixel = *event->pPixel; - *pPallette = *event->pPallette; - -fail: - if (pMPixel) - XP_FREE(pMPixel); - if (pMPallette) - XP_FREE(pMPallette); - if (event) - XP_FREE(event); -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - int32 *pX; - int32 *pY; -} MozillaEvent_GetScreenSize; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_GetScreenSize(MozillaEvent_GetScreenSize* e) -{ - FE_GetScreenSize(e->ce.context, e->pX, e->pY); -} - -void -ET_PostGetScreenSize(MWContext* context, int32 *pX, int32 *pY) -{ - int32 *pMX = NULL, *pMY = NULL; - - MozillaEvent_GetScreenSize* event = PR_NEW(MozillaEvent_GetScreenSize); - if (event == NULL) - return; - - pMX = XP_ALLOC(sizeof(int32)); - if (pMX == NULL) - goto fail; - - pMY = XP_ALLOC(sizeof(int32)); - if (pMY == NULL) - goto fail; - - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_GetScreenSize, - (PRDestroyEventProc)et_DestroyEvent_WaitForIt); - event->ce.context = context; - event->pX = pMX; - event->pY = pMY; - - et_PostEvent(&event->ce, TRUE); - *pX = *event->pX; - *pY = *event->pY; - -fail: - if (pMX) - XP_FREE(pMX); - if (pMY) - XP_FREE(pMY); - if (event) - XP_FREE(event); -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - int32 *pX; - int32 *pY; - int32 *pLeft; - int32 *pTop; -} MozillaEvent_GetAvailScreenRect; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_GetAvailScreenRect(MozillaEvent_GetAvailScreenRect* e) -{ - FE_GetAvailScreenRect(e->ce.context, e->pX, e->pY, e->pLeft, e->pTop); -} - -void -ET_PostGetAvailScreenRect(MWContext* context, int32 *pX, int32 *pY, int32 *pLeft, - int32 *pTop) -{ - int32 *pMX = NULL, *pMY = NULL, *pMLeft = NULL, *pMTop = NULL; - - MozillaEvent_GetAvailScreenRect* event = PR_NEW(MozillaEvent_GetAvailScreenRect); - if (event == NULL) - return; - - pMX = XP_ALLOC(sizeof(int32)); - if (pMX == NULL) - goto fail; - pMY = XP_ALLOC(sizeof(int32)); - if (pMY == NULL) - goto fail; - pMLeft = XP_ALLOC(sizeof(int32)); - if (pMLeft == NULL) - goto fail; - pMTop = XP_ALLOC(sizeof(int32)); - if (pMTop == NULL) - goto fail; - - - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_GetAvailScreenRect, - (PRDestroyEventProc)et_DestroyEvent_WaitForIt); - event->ce.context = context; - event->pX = pMX; - event->pY = pMY; - event->pLeft = pMLeft; - event->pTop = pMTop; - - et_PostEvent(&event->ce, TRUE); - *pX = *event->pX; - *pY = *event->pY; - *pLeft = *event->pLeft; - *pTop = *event->pTop; - -fail: - if (pMX) - XP_FREE(pMX); - if (pMY) - XP_FREE(pMY); - if (pMLeft) - XP_FREE(pMLeft); - if (pMTop) - XP_FREE(pMTop); - if (event) - XP_FREE(event); -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - char * szText; -} MozillaEvent_GetSelectedText; - - -PR_STATIC_CALLBACK(void*) -et_HandleEvent_GetSelectedText(MozillaEvent_GetSelectedText* e) -{ - char * rv; - - rv = (char *)LO_GetSelectionText(e->ce.context); - - if (rv) - rv = XP_STRDUP(rv); - - return rv; -} - -char * -ET_PostGetSelectedText(MWContext* context) -{ - char * ret; - MozillaEvent_GetSelectedText* event = XP_NEW_ZAP(MozillaEvent_GetSelectedText); - if (event == NULL) - return(NULL); - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_GetSelectedText, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - - ret = (char *) et_PostEvent(&event->ce, TRUE); - - return(ret); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - int location; - int32 x, y; -} MozillaEvent_ScrollTo; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_ScrollTo(MozillaEvent_ScrollTo* e) -{ - FE_ScrollDocTo(e->ce.context, e->location, e->x, e->y); -} - -void -ET_PostScrollDocTo(MWContext* context, int loc, int32 x, int32 y) -{ - MozillaEvent_ScrollTo* event = PR_NEW(MozillaEvent_ScrollTo); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_ScrollTo, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->location = loc; - event->x = x; - event->y = y; - - et_PostEvent(&event->ce, FALSE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - int location; - int32 x, y; -} MozillaEvent_ScrollBy; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_ScrollBy(MozillaEvent_ScrollBy* e) -{ - FE_ScrollDocBy(e->ce.context, e->location, e->x, e->y); -} - -void -ET_PostScrollDocBy(MWContext* context, int loc, int32 x, int32 y) -{ - MozillaEvent_ScrollBy* event = PR_NEW(MozillaEvent_ScrollBy); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_ScrollBy, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->location = loc; - event->x = x; - event->y = y; - - et_PostEvent(&event->ce, FALSE); - -} - - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void) -et_HandleEvent_BackCommand(ETEvent* e) -{ - FE_BackCommand(e->context); -} - -void -ET_PostBackCommand(MWContext* context) -{ - ETEvent* event = PR_NEW(ETEvent); - if (event == NULL) - return; - PR_InitEvent(&event->event, context, - (PRHandleEventProc)et_HandleEvent_BackCommand, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->context = context; - - et_PostEvent(event, FALSE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; -} MozillaEvent_ForwardCommand; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_ForwardCommand(ETEvent* e) -{ - FE_ForwardCommand(e->context); -} - -void -ET_PostForwardCommand(MWContext* context) -{ - ETEvent* event = PR_NEW(ETEvent); - if (event == NULL) - return; - PR_InitEvent(&event->event, context, - (PRHandleEventProc)et_HandleEvent_ForwardCommand, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->context = context; - - et_PostEvent(event, FALSE); - -} - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void) -et_HandleEvent_HomeCommand(ETEvent* e) -{ - FE_HomeCommand(e->context); -} - -void -ET_PostHomeCommand(MWContext* context) -{ - ETEvent* event = PR_NEW(ETEvent); - if (event == NULL) - return; - PR_InitEvent(&event->event, context, - (PRHandleEventProc)et_HandleEvent_HomeCommand, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->context = context; - - et_PostEvent(event, FALSE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - char * szName; - XP_Bool matchCase; - XP_Bool searchBackward; -} MozillaEvent_FindCommand; - - -PR_STATIC_CALLBACK(void*) -et_HandleEvent_FindCommand(MozillaEvent_FindCommand* e) -{ - return(void *)FE_FindCommand(e->ce.context, e->szName, e->matchCase, e->searchBackward, FALSE); -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_FindCommand(MozillaEvent_FindCommand* event) -{ - if(event->szName) - XP_FREE((char*)event->szName); - XP_FREE(event); -} - -JSBool -ET_PostFindCommand(MWContext* context, char *szName, JSBool matchCase, - JSBool searchBackward) -{ - JSBool ret; - - MozillaEvent_FindCommand* event = PR_NEW(MozillaEvent_FindCommand); - if (event == NULL) - return JS_FALSE; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_FindCommand, - (PRDestroyEventProc)et_DestroyEvent_FindCommand); - event->ce.context = context; - if(szName) - event->szName = strdup(szName); - else - event->szName = NULL; - event->matchCase = (XP_Bool)matchCase; - event->searchBackward = (XP_Bool)searchBackward; - - ret = (JSBool)et_PostEvent(&event->ce, TRUE); - return(ret); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; -} MozillaEvent_PrintCommand; - -PR_STATIC_CALLBACK(void) -et_HandleEvent_PrintCommand(ETEvent* e) -{ - FE_PrintCommand(e->context); -} - -void -ET_PostPrintCommand(MWContext* context) -{ - ETEvent* event = PR_NEW(ETEvent); - if (event == NULL) - return; - PR_InitEvent(&event->event, context, - (PRHandleEventProc)et_HandleEvent_PrintCommand, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->context = context; - - et_PostEvent(event, FALSE); - -} - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void) -et_HandleEvent_OpenFileCommand(ETEvent* e) -{ -} - -void -ET_PostOpenFileCommand(MWContext* context) -{ - ETEvent* event = PR_NEW(ETEvent); - if (event == NULL) - return; - PR_InitEvent(&event->event, context, - (PRHandleEventProc)et_HandleEvent_OpenFileCommand, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->context = context; - - et_PostEvent(event, FALSE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - char* szMessage; /* message for dialog */ -} MozillaEvent_HtmlAlert; - -PR_STATIC_CALLBACK(void) -et_HandleEvent_HtmlAlert(MozillaEvent_HtmlAlert* e) -{ - XP_MakeHTMLAlert(e->ce.context, e->szMessage); -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_HtmlAlert(MozillaEvent_HtmlAlert* event) -{ - XP_FREE((char*)event->szMessage); - XP_FREE(event); -} - -void -ET_MakeHTMLAlert(MWContext* context, const char* szMessage) -{ - MozillaEvent_HtmlAlert* event = PR_NEW(MozillaEvent_HtmlAlert); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_HtmlAlert, - (PRDestroyEventProc)et_DestroyEvent_HtmlAlert); - event->ce.context = context; - event->szMessage = strdup(szMessage); - - et_PostEvent(&event->ce, FALSE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - LO_Element * pEle; - int type; - ETClosureFunc fnClosure; - void * pStuff; - ETEventStatus status; -} MozillaEvent_JsEventAck; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_JsEventAck(MozillaEvent_JsEventAck* e) -{ - /* make sure we haven't gone away somehow */ - if(e->ce.doc_id != XP_DOCID(e->ce.context)) - e->status = EVENT_PANIC; - - (*e->fnClosure) (e->ce.context, e->pEle, e->type, e->pStuff, e->status); -} - -void -ET_PostJsEventAck(MWContext* context, LO_Element * pEle, int type, - ETClosureFunc fnClosure, void * pStuff, - ETEventStatus status) -{ - MozillaEvent_JsEventAck* event = PR_NEW(MozillaEvent_JsEventAck); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_JsEventAck, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->ce.doc_id = XP_DOCID(context); - event->pEle = pEle; - event->type = type; - event->fnClosure = fnClosure; - event->pStuff = pStuff; - event->status = status; - - et_PostEvent(&event->ce, FALSE); - -} - - -/****************************************************************************/ - -/****************************************************************************/ -/****************************************************************************/ - -typedef struct { - ETEvent ce; - FO_Present_Types format; - URL_Struct * pUrl; - void * pStuff; - uint32 ulBytes; -} MozillaEvent_GenericNetLib; - - -PR_STATIC_CALLBACK(void*) -et_HandleEvent_CacheConverter(MozillaEvent_GenericNetLib* e) -{ - void *retval = (void *)NET_CacheConverter(e->format, e->pStuff, e->pUrl, - e->ce.context); - return retval; -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_NetlibWithUrl(MozillaEvent_GenericNetLib* e) -{ - NET_DropURLStruct(e->pUrl); - XP_FREE(e); -} - - -NET_StreamClass * -ET_net_CacheConverter(FO_Present_Types format, void * obj, - URL_Struct *pUrl, MWContext * context) -{ - NET_StreamClass * ret; - MozillaEvent_GenericNetLib* event = PR_NEW(MozillaEvent_GenericNetLib); - if (event == NULL) - return(NULL); - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_CacheConverter, - (PRDestroyEventProc)et_DestroyEvent_NetlibWithUrl); - event->ce.context = context; - event->format = format; - event->pStuff = obj; - event->pUrl = NET_HoldURLStruct(pUrl); - - ret = (NET_StreamClass *) et_PostEvent(&event->ce, TRUE); - return(ret); - -} - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void) -et_HandleEvent_FindURLInCache(MozillaEvent_GenericNetLib* e) -{ - NET_FindURLInCache(e->pUrl, e->ce.context); -} - -/* NOTE: as far as libmocha is concerned, we just need this routine - to complete. We don't care about the return value - */ -void -ET_net_FindURLInCache(URL_Struct * pUrl, MWContext * pContext) -{ - MozillaEvent_GenericNetLib* event = PR_NEW(MozillaEvent_GenericNetLib); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, pContext, - (PRHandleEventProc)et_HandleEvent_FindURLInCache, - (PRDestroyEventProc)et_DestroyEvent_NetlibWithUrl); - event->ce.context = pContext; - event->pUrl = NET_HoldURLStruct(pUrl); - - et_PostEvent(&event->ce, TRUE); -} - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void*) -et_HandleEvent_StreamBuilder(MozillaEvent_GenericNetLib* e) -{ - NET_StreamClass *rv; - - NET_SetActiveEntryBusyStatus(e->pUrl, TRUE); - rv = NET_StreamBuilder(e->format, e->pUrl, e->ce.context); - NET_SetActiveEntryBusyStatus(e->pUrl, FALSE); - return((void *)rv); -} - -NET_StreamClass * -ET_net_StreamBuilder(FO_Present_Types format, URL_Struct *pUrl, - MWContext * pContext) -{ - NET_StreamClass * ret; - MozillaEvent_GenericNetLib* event = PR_NEW(MozillaEvent_GenericNetLib); - if (event == NULL) - return(NULL); - PR_InitEvent(&event->ce.event, pContext, - (PRHandleEventProc)et_HandleEvent_StreamBuilder, - (PRDestroyEventProc)et_DestroyEvent_NetlibWithUrl); - event->ce.context = pContext; - event->format = format; - event->pUrl = NET_HoldURLStruct(pUrl); - - ret = (NET_StreamClass *) et_PostEvent(&event->ce, TRUE); - return(ret); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - NET_StreamClass * stream; - void * data; - size_t len; - JSBool self_modifying; - JSBool processed; -} MozillaEvent_DocWrite; - -/* - * A lot of this should get moved out to the layout module - * I don't think we need to bother locking layout in this function - * since we are running in the mozilla thread and the mocha - * thread is blocked waiting for our return value. - */ -PR_STATIC_CALLBACK(void*) -et_HandleEvent_DocWrite(MozillaEvent_DocWrite* e) -{ - lo_TopState *top_state; - int32 pre_doc_id; - LO_Element * save_blocking = NULL; - LO_Element * current_script = NULL; - Bool bumped_no_newline_count = FALSE; - uint save_overflow=0; - int status; - - e->processed = JS_TRUE; - - /* - * If the context has a doc_id of -1 it means that its being destroyed - * If the context's doc_id has changed only process the event if the - * original doc_id was zero (i.e. this is the first write and it will - * create a new doc with a new doc_id) - */ - pre_doc_id = XP_DOCID(e->ce.context); - if ((e->ce.doc_id && e->ce.doc_id != pre_doc_id) || (pre_doc_id == -1)) { -#ifdef DEBUG_chouck - XP_TRACE(("Ignoring doc.write since doc_id changed")); -#endif - ET_DocWriteAck(e->ce.context, -1); - return((void *) -1); - } - - if (!ET_ContinueProcessing(e->ce.context)) { -#ifdef DEBUG_chouck - XP_TRACE(("Ignoring doc.write since was interrupted")); -#endif - ET_DocWriteAck(e->ce.context, -1); - return((void *) -1); - } - - /* make sure top_state doesn't go away while we are holding onto it */ - LO_LockLayout(); - - top_state = lo_GetMochaTopState(e->ce.context); - - /* tell layout that we are writing */ - if (top_state) { - if (top_state->input_write_level >= MAX_INPUT_WRITE_LEVEL-1) { - LO_UnlockLayout(); - ET_DocWriteAck(e->ce.context, -1); - return ((void *) -1); - } - top_state->input_write_level++; - - if (top_state->doc_data) { - /* Suppress generated line counting if self-modifying. */ - if (e->self_modifying) { - top_state->doc_data->no_newline_count++; - bumped_no_newline_count = TRUE; - } - - /* Save the overflow counter and XXX */ - save_overflow = top_state->doc_data->overflow_depth; - top_state->doc_data->overflow_depth = 0; - } - else { - save_overflow = 0; - } - - current_script = top_state->current_script; - - /* - * if we are currently blocked by a <script> tag unblock - * layout for this putblock since this is some of the - * script data coming through. If we are blocked on - * something other than a script tag don't unblock, this - * stuff will just get shoved onto the list to be - * processed after we get unblocked - */ - save_blocking = top_state->layout_blocking_element; - if (save_blocking && save_blocking->type == LO_SCRIPT) - top_state->layout_blocking_element = NULL; - - } - - LO_UnlockLayout(); - - /* shove the data out */ - status = (*e->stream->put_block)(e->stream, e->data, e->len); - - LO_LockLayout(); - - /* I doubt top_state could have changed but try to be safe */ - top_state = lo_GetMochaTopState(e->ce.context); - - /* if the doc is still around we are done so clean up */ - if (top_state) { - /* Stop suppressing generated line counting if self-modifying. */ - if (bumped_no_newline_count) { - XP_ASSERT(top_state->doc_data); - top_state->doc_data->no_newline_count--; - } - - if (XP_DOCID(e->ce.context) == pre_doc_id) { - if (top_state->doc_data) { - top_state->doc_data->overflow_depth += save_overflow; - XP_ASSERT(top_state->doc_data->overflow_depth >= 0); - } - if(top_state->layout_blocking_element == NULL) { - /* - * the stuff we wrote didn't block us. continue to block - * on the script tag - */ - top_state->layout_blocking_element = save_blocking; - top_state->input_write_level--; - ET_DocWriteAck(e->ce.context, status); - } - else { - /* - * If we had been blocked on the script tag but now we are - * blocked by something else make sure we reblock on - * the script tag when the new thing is done - */ - LO_CreateReblockTag(e->ce.context, current_script); - } - } - else { - /* - * we just created a new top_state so its input_write_level - * value should be OK. Don't mess with it. - */ - ET_DocWriteAck(e->ce.context, status); - } - } - - LO_UnlockLayout(); - - return((void *) status); - -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_DocWrite(MozillaEvent_DocWrite* e) -{ - if (!e->processed) - ET_DocWriteAck(e->ce.context, -1); - XP_FREE(e); -} - -static QueueStackElement * -et_PushEventQueue(MWContext * context) -{ - LMWindowGroup *grp; - QueueStackElement * qse; - char name[32]; - - grp = lm_MWContextToGroup(context); - if(grp == NULL) { - grp = LM_GetDefaultWindowGroup(context); - LM_AddContextToGroup(grp, context); - } - - /* catch script src= tags that generate themselves. */ - if (grp->queue_depth >= 5) - return NULL; - - /* see if we've already got one */ - qse = grp->queue_stack->up; - if (!qse) { - qse = XP_NEW_ZAP(QueueStackElement); - if (!qse) - return NULL; - - PR_snprintf(name, sizeof name, "mocha-stack-queue-%d", - grp->queue_depth + 1); - qse->queue = PR_CreateEventQueue(name, grp->thread); - - if (!qse->queue) { - XP_DELETE(qse); - return NULL; - } - - grp->queue_count++; - qse->down = grp->queue_stack; - grp->queue_stack->up = qse; - } - grp->queue_depth++; - qse->context = context; - qse->done = FALSE; - - /* - * This should get set by our caller - */ - qse->doc_id = -1; - - grp->queue_stack = qse; - return qse; - -} - -static void * -et_PopEventQueue(MWContext *mwc) -{ - LMWindowGroup *grp; - QueueStackElement * qse; - void * ret; - - grp = lm_MWContextToGroup(mwc); - XP_ASSERT(grp != NULL); - - qse = grp->queue_stack; - ret = qse->retval; - grp->queue_stack = qse->down; - grp->queue_depth--; - if (grp->queue_count > 2) { - /* free the entry we're popping */ - grp->queue_stack->up = NULL; - PR_DestroyEventQueue(qse->queue); - XP_DELETE(qse); - grp->queue_count--; - } - return ret; -} - -/* - * Send the string str over to the mozilla thread and push it through - * layout. This is an asynchronous event as far as NSPR is concerned - * but incase str pushes up any script or style tags we will enter a - * sub event loop to handle reflections and evaluations generated by - * this write but otherwise block the mocha thread until they have - * all been proceed. - */ -int -ET_lo_DoDocWrite(JSContext *cx, MWContext * context, NET_StreamClass * stream, - char * str, size_t len, int32 doc_id) -{ - MochaDecoder * decoder; - MozillaEvent_DocWrite * event; - QueueStackElement * qse; - int ret = -1; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return ret; - -#ifdef XP_UNIX - /* - * NOTE: we need to toss the string out if it's doc_id doesn't match - * the current XP_DOCID... - * - * the problem could be reproduced as follows on an IRIX 6.3 - * O2 workstation with "lots" of plugins; - * - * 1. load a "plain" HTML page... - * 2. select "about:plugins" from the help menu... - * 3. select "about:communicator" from the help menu... - * 4. hit the "back" button quickly to move across the - * "about:plugins" page before it's had a chance to - * finish loading... - * 5. crashes trying to execute events from the "about:plugins" - * page in the context of the "plain" HTML page... - * - * WARNING: there seems to be a memory corruption problem somewhere - * in the "event" system. Follow the same procedure I - * outlined above, except instead of loading "about:plugins" - * from the menu, load the "aboutplg.html" source file - * directly. If you switch rapidly across this page - * you will eventually see errors like "freeing free - * chunk" and "passing junk pointer to realloc" in the - * course of freeing ETEvents. After a while, this will - * result in a variety of random crashes due to memory - * corruption errors... [ filing a new bug for this one ] - * - */ - if (doc_id && (doc_id != XP_DOCID(context))) { - LM_PutMochaDecoder(decoder); - return ret; - } -#endif - - event = XP_NEW_ZAP(MozillaEvent_DocWrite); - if (event == NULL) { - LM_PutMochaDecoder(decoder); - return ret; - } - - qse = et_PushEventQueue(context); - if (!qse) { - XP_FREEIF(event); - LM_PutMochaDecoder(decoder); - return ret; - } - - /* - * Set the reciever doc_id to the one that gets passed in - */ - /* MLM - this used to be et_TopQueue, but we know that et_TopQueue - * and qse are equivalent at this point. */ - qse->doc_id = doc_id; - - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_DocWrite, - (PRDestroyEventProc)et_DestroyEvent_DocWrite); - event->ce.context = context; - event->ce.doc_id = doc_id; - event->data = str; - event->len = len; - event->stream = stream; - event->self_modifying = (JSBool)(cx == decoder->js_context); - - et_PostEvent(&event->ce, FALSE); - - /* spin here until we get our DocWriteAck */ - et_SubEventLoop(qse); - ret = (int) et_PopEventQueue(context); - - /* Sample the doc_id, since we know that it's good */ - /* XXX do this in InitWindowContent only, not here and in DefineDocument */ - decoder->doc_id = XP_DOCID(context); - - LM_PutMochaDecoder(decoder); - - return ret; - -} - -/****************************************************************************/ - -PR_STATIC_CALLBACK(Bool) -et_HandleEvent_PrepareLayerForWriting(JSEvent* e) -{ - CL_Layer *layer; - Bool rv; - - if (e->ce.doc_id != XP_DOCID(e->ce.context)) - return FALSE; - - LO_LockLayout(); - layer = LO_GetLayerFromId(e->ce.context, e->layer_id); - - /* e->data points to the referer string, or null */ - rv = LO_PrepareLayerForWriting(e->ce.context, e->layer_id, - (const char *)e->data, - LO_GetLayerWrapWidth(layer)); - LO_UnlockLayout(); - - return rv; -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_PrepareLayerForWriting(JSEvent* e) -{ - XP_FREEIF(e->data); - XP_FREE(e); -} - -Bool -ET_lo_PrepareLayerForWriting(MWContext *pContext, int32 layer_id, - const char *referer) -{ - JSEvent * pEvent = (JSEvent *) XP_NEW_ZAP(JSEvent); - if(!pEvent) - return FALSE; - - PR_InitEvent(&pEvent->ce.event, pContext, - (PRHandleEventProc)et_HandleEvent_PrepareLayerForWriting, - (PRDestroyEventProc)et_DestroyEvent_PrepareLayerForWriting); - - /* fill in the non-PR fields we care about */ - pEvent->ce.context = pContext; - pEvent->layer_id = layer_id; - pEvent->ce.doc_id = XP_DOCID(pContext); - pEvent->data = referer ? XP_STRDUP(referer) : NULL; - - return (Bool)et_PostEvent(&pEvent->ce, TRUE); -} - - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - ETEvalAckFunc fn; - void * data; - char * str; - size_t len; - char * wysiwyg_url; - char * base_href; - Bool valid; -} MozillaEvent_EvalAck; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_EvalAck(MozillaEvent_EvalAck* e) -{ - if (e->ce.doc_id == XP_DOCID(e->ce.context)) { - (e->fn) (e->data, e->str, e->len, e->wysiwyg_url, - e->base_href, e->valid); - } - else { -#ifdef DEBUG_chouck - XP_TRACE(("et_HandleEvent_EvalAck failed doc_id")); -#endif - } -} - -void -ET_PostEvalAck(MWContext * context, int doc_id, - void * data, char * str, size_t len, - char * wysiwyg_url, char * base_href, - Bool valid, ETEvalAckFunc fn) -{ - - MozillaEvent_EvalAck* event; - if (fn == NULL) - return; - - event = XP_NEW_ZAP(MozillaEvent_EvalAck); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_EvalAck, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->ce.doc_id = doc_id; - event->data = data; - event->str = str; - event->len = len; - event->valid = valid; - event->fn = fn; - event->wysiwyg_url = wysiwyg_url; - event->base_href = base_href; - - (void) et_PostEvent(&event->ce, FALSE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - ETRestoreAckFunc fn; - void * data; - LO_BlockInitializeStruct *param; -} MozillaEvent_RestoreAck; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_RestoreAck(MozillaEvent_RestoreAck* e) -{ - /* XXX Need to do a doc_id check to see if this is still valid */ - (e->fn) (e->data, e->param); -} - -void -ET_PostRestoreAck(void * data, LO_BlockInitializeStruct *param, - ETRestoreAckFunc fn) -{ - - MozillaEvent_RestoreAck* event; - if (fn == NULL) - return; - - event = XP_NEW_ZAP(MozillaEvent_RestoreAck); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_RestoreAck, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->data = data; - event->param = param; - event->fn = fn; - - (void) et_PostEvent(&event->ce, FALSE); - -} - -/****************************************************************************/ - -typedef struct MozillaEvent_DiscardStruct { - ETEvent ce; - JSBool processed; -} MozillaEvent_DiscardStruct; - -PR_STATIC_CALLBACK(void) -et_HandleEvent_DiscardDocument(MozillaEvent_DiscardStruct * e) -{ - e->processed = JS_TRUE; - LO_DiscardDocument(e->ce.context); - ET_DocWriteAck(e->ce.context, 0); -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_DiscardDocument(MozillaEvent_DiscardStruct * e) -{ - if (!e->processed) - ET_DocWriteAck(e->ce.context, 0); -} - -void -ET_lo_DiscardDocument(MWContext * pContext) -{ - MozillaEvent_DiscardStruct * event; - QueueStackElement * qse; - - event = PR_NEW(MozillaEvent_DiscardStruct); - if (event == NULL) - return; - - qse = et_PushEventQueue(pContext); - if (!qse) { - PR_DELETE(event); - return; - } - - /* MLM - this used to be et_TopQueue, but we know that et_TopQueue - * and qse are equivalent at this point. */ - qse->doc_id = XP_DOCID(pContext); - - PR_InitEvent(&event->ce.event, pContext, - (PRHandleEventProc)et_HandleEvent_DiscardDocument, - (PRDestroyEventProc)et_DestroyEvent_DiscardDocument); - event->ce.context = pContext; - - qse->discarding = TRUE; - et_PostEvent(&event->ce, FALSE); - - /* - * Spin here until we get a ReleaseDocument (if needed) followed by a - * WriteAck send by our handler. - */ - et_SubEventLoop(qse); - - qse->discarding = FALSE; - et_PopEventQueue(pContext); -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - ETVoidPtrFunc fn; - void * data; -} MozillaEvent_CallFunc; - -PR_STATIC_CALLBACK(void) -et_HandleEvent_CallFunction(MozillaEvent_CallFunc* e) -{ - (e->fn) (e->data); -} - -void -ET_moz_CallFunction(ETVoidPtrFunc fn, void * data) -{ - MozillaEvent_CallFunc* event = PR_NEW(MozillaEvent_CallFunc); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_CallFunction, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->fn = fn; - event->data = data; - - et_PostEvent(&event->ce, TRUE); -} - -void -ET_moz_CallFunctionAsync(ETVoidPtrFunc fn, void * data) -{ - MozillaEvent_CallFunc* event = PR_NEW(MozillaEvent_CallFunc); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_CallFunction, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->fn = fn; - event->data = data; - - (void) et_PostEvent(&event->ce, FALSE); -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - ETBoolPtrFunc fn; - void * data; -} MozillaEvent_CallFuncBool; - -PR_STATIC_CALLBACK(PRBool) -et_HandleEvent_CallFunctionBool(MozillaEvent_CallFuncBool* e) -{ - return (e->fn) (e->data); -} - -PRBool -ET_moz_CallFunctionBool(ETBoolPtrFunc fn, void * data) -{ - PRBool ret; - MozillaEvent_CallFuncBool* event = PR_NEW(MozillaEvent_CallFuncBool); - if (event == NULL) - return PR_FALSE; - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_CallFunctionBool, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->fn = fn; - event->data = data; - - ret = (PRBool) et_PostEvent(&event->ce, TRUE); - return ret; -} - -/****************************************************************************/ -typedef struct { - ETEvent ce; - ETIntPtrFunc fn; - void * data; -} MozillaEvent_CallFuncInt; - -PR_STATIC_CALLBACK(int32) -et_HandleEvent_CallFunctionInt(MozillaEvent_CallFuncInt* e) -{ - return (e->fn) (e->data); -} - -int32 -ET_moz_CallFunctionInt(ETIntPtrFunc fn, void * data) -{ - PRBool ret; - MozillaEvent_CallFuncInt* event = PR_NEW(MozillaEvent_CallFuncInt); - if (event == NULL) - return PR_FALSE; - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_CallFunctionInt, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->fn = fn; - event->data = data; - - ret = (int32) et_PostEvent(&event->ce, TRUE); - return ret; -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - ETStringPtrFunc fn; - void * data; -} MozillaEvent_CallFuncString; - -PR_STATIC_CALLBACK(char *) -et_HandleEvent_CallFunctionString(MozillaEvent_CallFuncString* e) -{ - return (e->fn) (e->data); -} - -char * -ET_moz_CallFunctionString(ETStringPtrFunc fn, void * data) -{ - char * ret; - MozillaEvent_CallFuncString* event = PR_NEW(MozillaEvent_CallFuncString); - if (event == NULL) - return NULL; - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_CallFunctionString, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->fn = fn; - event->data = data; - - ret = (char *) et_PostEvent(&event->ce, TRUE); - return ret; -} - -/****************************************************************************/ - -void -ET_moz_CallAsyncAndSubEventLoop(ETVoidPtrFunc fn, void *data, - MWContext *context) -{ - QueueStackElement *qse; - - qse = et_PushEventQueue(context); - if ( qse == NULL ) { - return; - } - - qse->inherit_parent = JS_TRUE; - qse->doc_id = 0; - - ET_moz_CallFunctionAsync(fn, data); - - et_SubEventLoop(qse); - (void)et_PopEventQueue(context); - return; -} - -/****************************************************************************/ -typedef struct { - ETEvent ce; - MKStreamAbortFunc fn; - void * data; - int status; -} MozillaEvent_CallAbort; - -PR_STATIC_CALLBACK(void) -et_HandleEvent_Abort(MozillaEvent_CallAbort* e) -{ - (*e->fn)(e->data, e->status); -} - -void -ET_moz_Abort(MKStreamAbortFunc fn, void * data, int status) -{ - - MozillaEvent_CallAbort* event = PR_NEW(MozillaEvent_CallAbort); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_Abort, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->fn = fn; - event->data = data; - event->status = status; - - (void) et_PostEvent(&event->ce, TRUE); -} - - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - IL_GroupContext * img_cx; - LO_ImageStruct * img; - char * str; - NET_ReloadMethod how; -} MozillaEvent_GetImage; - -PR_STATIC_CALLBACK(void) -et_HandleEvent_GetImage(MozillaEvent_GetImage* e) -{ - IL_DisplayData dpy_data; - MWContext *pContext = e->ce.context; - IL_GroupContext *img_cx = e->img_cx; - LO_ImageStruct *lo_image = e->img; - const char *url = e->str; - - if (e->ce.doc_id != XP_DOCID(pContext)) - return; - - XP_ASSERT(pContext->color_space); - if (!pContext->color_space) - return; - dpy_data.color_space = pContext->color_space; - dpy_data.dither_mode = IL_Auto; - IL_SetDisplayMode(img_cx, IL_COLOR_SPACE | IL_DITHER_MODE, &dpy_data); - - LO_SetImageURL(pContext, img_cx, lo_image, url, e->how); - lo_image->pending_mocha_event = PR_FALSE; -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_GetImage(MozillaEvent_GetImage* e) -{ - if (e->str) - XP_FREE(e->str); - XP_FREE(e); -} - -void -ET_il_GetImage(const char * str, MWContext * pContext, IL_GroupContext *img_cx, - LO_ImageStruct * image_data, NET_ReloadMethod how) -{ - - MozillaEvent_GetImage* event = PR_NEW(MozillaEvent_GetImage); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, pContext, - (PRHandleEventProc)et_HandleEvent_GetImage, - (PRDestroyEventProc)et_DestroyEvent_GetImage); - event->ce.context = pContext; - event->ce.doc_id = XP_DOCID(pContext); - event->str = str ? strdup(str) : NULL; - event->img_cx = img_cx; - event->img = image_data; - event->how = how; - - (void) et_PostEvent(&event->ce, FALSE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - IL_GroupContext *pImgCX; - void *pDpyCX; - JSBool bAddObserver; -} MozillaEvent_GroupObserver; - -PR_STATIC_CALLBACK(void) -et_HandleEvent_SetGroupObserver(MozillaEvent_GroupObserver* e) -{ - MWContext *pContext = e->ce.context; - IL_DisplayData dpy_data; - - if (e->bAddObserver) - IL_AddGroupObserver(e->pImgCX, FE_MochaImageGroupObserver, pContext); - else - IL_RemoveGroupObserver(e->pImgCX, FE_MochaImageGroupObserver, pContext); - - dpy_data.display_context = e->pDpyCX; - IL_SetDisplayMode(e->pImgCX, IL_DISPLAY_CONTEXT, &dpy_data); -} - -void -ET_il_SetGroupObserver(MWContext * pContext, IL_GroupContext *pImgCX, void *pDpyCX, - JSBool bAddObserver) -{ - - MozillaEvent_GroupObserver* event = PR_NEW(MozillaEvent_GroupObserver); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, pContext, - (PRHandleEventProc)et_HandleEvent_SetGroupObserver, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = pContext; - event->pImgCX = pImgCX; - event->pDpyCX = pDpyCX; - event->bAddObserver = bAddObserver; - - (void) et_PostEvent(&event->ce, TRUE); - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - LO_Element * ele; -} MozillaEvent_Form; - -PR_STATIC_CALLBACK(void) -et_HandleEvent_ResetForm(MozillaEvent_Form* e) -{ - LO_ResetForm(e->ce.context, (LO_FormElementStruct *) e->ele); -} - -void -ET_lo_ResetForm(MWContext * pContext, LO_Element * ele) -{ - - MozillaEvent_Form* event = XP_NEW_ZAP(MozillaEvent_Form); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, pContext, - (PRHandleEventProc)et_HandleEvent_ResetForm, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = pContext; - event->ele = ele; - - (void) et_PostEvent(&event->ce, TRUE); -} - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void) -et_HandleEvent_SubmitForm(MozillaEvent_Form* e) -{ -/* XXX - I think this code should be here, but chouck must - have final say - fur - if (e->ce.doc_id != XP_DOCID(e->ce.context)) - return; -*/ - - FE_SubmitInputElement(e->ce.context, e->ele); -} - -void -ET_fe_SubmitInputElement(MWContext * pContext, LO_Element * ele) -{ - - MozillaEvent_Form* event = XP_NEW_ZAP(MozillaEvent_Form); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, pContext, - (PRHandleEventProc)et_HandleEvent_SubmitForm, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = pContext; - event->ce.doc_id = XP_DOCID(pContext); - event->ele = ele; - - (void) et_PostEvent(&event->ce, FALSE); - -} - -/****************************************************************************/ -PR_STATIC_CALLBACK(void*) -et_HandleEvent_GetSecurityStatus(ETEvent * e) -{ - return (void *) XP_GetSecurityStatus(e->context); -} - -int -ET_GetSecurityStatus(MWContext * pContext) -{ - int ret = 0; - ETEvent * event = XP_NEW_ZAP(ETEvent); - if (event == NULL) - return -1; /* SSL_SECURITY_STATUS_NOOPT */ - PR_InitEvent(&event->event, pContext, - (PRHandleEventProc)et_HandleEvent_GetSecurityStatus, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->context = pContext; - - ret = (int) et_PostEvent(event, TRUE); - return ret; -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - URL_Struct * pUrl; - const char * wysiwyg_url; - const char * base_href; - int32 layer_id; -} MozillaEvent_DocCacheConverter; - - -PR_STATIC_CALLBACK(void) -et_HandleEvent_SetWriteStream(MozillaEvent_DocCacheConverter * e) -{ - lo_TopState *top_state; - - top_state = lo_GetMochaTopState(e->ce.context); - if (top_state && !top_state->mocha_write_stream) { - top_state->mocha_write_stream - = NET_CloneWysiwygCacheFile(e->ce.context, - e->pUrl, - (uint32)top_state->script_bytes, - e->wysiwyg_url, - e->base_href); - } -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_SetWriteStream(MozillaEvent_DocCacheConverter * e) -{ - NET_DropURLStruct(e->pUrl); - if (e->wysiwyg_url) - XP_FREE((char *) e->wysiwyg_url); - if (e->base_href) - XP_FREE((char *) e->base_href); - XP_FREE(e); -} - -void -ET_moz_SetMochaWriteStream(MochaDecoder * decoder) -{ - MozillaEvent_DocCacheConverter * event; - JSPrincipals *principals; - - event = XP_NEW_ZAP(MozillaEvent_DocCacheConverter); - if (!event) - return; - - PR_InitEvent(&event->ce.event, decoder->window_context, - (PRHandleEventProc)et_HandleEvent_SetWriteStream, - (PRDestroyEventProc)et_DestroyEvent_SetWriteStream); - - event->ce.context = decoder->window_context; - event->pUrl = NET_HoldURLStruct(decoder->url_struct); - principals = lm_GetPrincipalsFromStackFrame(decoder->js_context); - event->wysiwyg_url = lm_MakeWysiwygUrl(decoder->js_context, decoder, - LO_DOCUMENT_LAYER_ID, principals); - event->base_href = LM_GetBaseHrefTag(decoder->js_context, principals); - - et_PostEvent(&event->ce, TRUE); -} - - -/****************************************************************************/ - -PRIVATE NET_StreamClass * -lm_DocCacheConverterNoHistory(MWContext * context, URL_Struct * url, - const char * wysiwyg_url) -{ - lo_TopState *top_state; - char *address; - NET_StreamClass *cache_stream; - - top_state = lo_GetMochaTopState(context); - if (!top_state) - return NULL; - - /* Save a wysiwyg copy in the URL struct for resize-reloads. */ - url->wysiwyg_url = XP_STRDUP(wysiwyg_url); - if (!url->wysiwyg_url) - return NULL; - - /* Then pass it via url_struct to create a cache converter stream. */ - address = url->address; - url->address = url->wysiwyg_url; - cache_stream = NET_CacheConverter(FO_CACHE_ONLY, - (void *)1, /* XXX don't hold url */ - url, - context); - url->address = address; - - top_state->mocha_write_stream = cache_stream; - return cache_stream; -} - -NET_StreamClass * -lm_DocCacheConverter(MWContext * context, URL_Struct * url, - const char * wysiwyg_url) -{ - History_entry *he; - NET_StreamClass *cache_stream; - - cache_stream = lm_DocCacheConverterNoHistory(context, url, wysiwyg_url); - - /* - * Make a copy of wysiwyg_url in our history entry no matter what went - * wrong building cache_stream. This way, NET_GetURL can see the wysiwyg: - * prefix, notice when it misses the cache, and clear URL_s->resize_reload - * to make the reload from the original/generating URL destructive. - */ - he = SHIST_GetCurrent(&context->hist); - if (he) { - PR_FREEIF(he->wysiwyg_url); - he->wysiwyg_url = XP_STRDUP(wysiwyg_url); - } - - return cache_stream; -} - -PR_STATIC_CALLBACK(NET_StreamClass *) -et_HandleEvent_DocCacheConverter(MozillaEvent_DocCacheConverter * e) -{ - NET_StreamClass * stream; - - if (e->layer_id != LO_DOCUMENT_LAYER_ID) { - return lm_DocCacheConverterNoHistory(e->ce.context, - e->pUrl, - e->wysiwyg_url); - } - - stream = lm_DocCacheConverter(e->ce.context, - e->pUrl, - e->wysiwyg_url); - return stream; -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_DocCacheConverter(MozillaEvent_DocCacheConverter * e) -{ - NET_DropURLStruct(e->pUrl); - XP_FREE(e); -} - -NET_StreamClass * -ET_moz_DocCacheConverter(MWContext * pContext, URL_Struct * pUrl, - char * wysiwyg_url, int32 layer_id) -{ - NET_StreamClass * ret = NULL; - MozillaEvent_DocCacheConverter * event; - - event = XP_NEW_ZAP(MozillaEvent_DocCacheConverter); - if (!event) - return ret; - PR_InitEvent(&event->ce.event, pContext, - (PRHandleEventProc)et_HandleEvent_DocCacheConverter, - (PRDestroyEventProc)et_DestroyEvent_DocCacheConverter); - event->ce.context = pContext; - event->pUrl = NET_HoldURLStruct(pUrl); - event->wysiwyg_url = wysiwyg_url; - event->layer_id = layer_id; - - ret = et_PostEvent(&event->ce, TRUE); - return ret; -} - -/****************************************************************************/ - -PR_STATIC_CALLBACK(void*) -et_HandleEvent_InitMoja(ETEvent* e) -{ - return (void *) LM_InitMoja(); -} - -int -ET_InitMoja(MWContext* context) -{ - int returnCode; - ETEvent * event; - - /* XXX assert that we're on the mocha-thread */ - - /* fast check before sending an event and waiting for it */ - returnCode = LM_IsMojaInitialized(); - if (returnCode != LM_MOJA_UNINITIALIZED) - return returnCode; - - event = PR_NEW(ETEvent); - if (event == NULL) - return LM_MOJA_OUT_OF_MEMORY; - PR_InitEvent(&event->event, context, - (PRHandleEventProc)et_HandleEvent_InitMoja, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->context = context; - - returnCode = (int) et_PostEvent(event, TRUE); - return returnCode; -} - - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - CL_Layer * layer; - int32 x, y; - void * param_ptr; - int32 param_val; - ETLayerOp op; - int32 doc_id; - char * referer; -} MozillaEvent_TweakLayer; - -PR_STATIC_CALLBACK(int) -et_HandleEvent_TweakLayer(MozillaEvent_TweakLayer* e) -{ - CL_Layer *layer; - Bool ret = TRUE; - - /* check that the doc_id is valid */ - if(XP_DOCID(e->ce.context) != e->ce.doc_id) - return FALSE; - - switch(e->op) { - case CL_SetSrcWidth: - ret = LO_SetLayerSrc(e->ce.context, e->param_val, (char*)e->param_ptr, - e->referer, e->x); - break; - case CL_SetSrc: - layer = LO_GetLayerFromId(e->ce.context, e->param_val); - ret = LO_SetLayerSrc(e->ce.context, e->param_val, (char*)e->param_ptr, - e->referer, LO_GetLayerWrapWidth(layer)); - break; - case CL_SetBgColor: - LO_SetLayerBgColor(e->layer, (LO_Color*)e->param_ptr); - if (e->param_ptr) - XP_FREE((void*)e->param_ptr); - break; - default: - XP_ASSERT(0); - } - - return (int)ret; -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_TweakLayer(MozillaEvent_TweakLayer * event) -{ - XP_FREEIF(event->referer); - XP_FREE(event); -} - -/* - * These need to be synchronous so that if we set this and then - * immediately look at it we get the correct (new) value - */ -int -ET_TweakLayer(MWContext * context, CL_Layer* layer, int32 x, int32 y, - void *param_ptr, int32 param_val, ETLayerOp op, - const char *referer, int32 doc_id) -{ - MozillaEvent_TweakLayer * event; - event = PR_NEW(MozillaEvent_TweakLayer); - if (event == NULL) - return 0; - - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_TweakLayer, - (PRDestroyEventProc)et_DestroyEvent_TweakLayer); - event->ce.context = context; - event->ce.doc_id = doc_id; - event->layer = layer; - event->x = x; - event->y = y; - event->param_ptr = param_ptr; - event->param_val = param_val; - event->op = op; - event->referer = referer ? XP_STRDUP(referer) : NULL; - - return (int)et_PostEvent(&event->ce, TRUE); -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - XP_Bool refreshInstances; -} MozillaEvent_RefreshPlugins; - -PR_STATIC_CALLBACK(void*) -et_HandleEvent_RefreshPlugins(MozillaEvent_RefreshPlugins* e) -{ - return ((void*) NPL_RefreshPluginList(e->refreshInstances)); -} - -int32 -ET_npl_RefreshPluginList(MWContext* context, XP_Bool refreshInstances) -{ - int32 ret = -1; - - MozillaEvent_RefreshPlugins* event = XP_NEW_ZAP(MozillaEvent_RefreshPlugins); - if (event == NULL) - return ret; - - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_RefreshPlugins, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->ce.context = context; - event->refreshInstances = refreshInstances; - - ret = (int32) et_PostEvent(&event->ce, TRUE); - return ret; -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - JSContext * cx; - uint argc; - jsval * argv; - jsval * rval; - char * string; -} MozillaEvent_HandlePref; - -#define PREF_CHARSET (INTL_DefaultWinCharSetID(0)) - - -PR_STATIC_CALLBACK(JSBool) -et_HandleEvent_HandlePref(MozillaEvent_HandlePref* e) -{ - JSString * str; - char * cstr; - JSContext * mochaContext=NULL; - JSObject * mochaPrefObject=NULL; - - str = JS_ValueToString(e->cx, e->argv[0]); - if (!str) - return JS_TRUE; - - cstr = JS_GetStringBytes(str); - - PREF_GetConfigContext(&mochaContext); - if (mochaContext == NULL) { - return JS_FALSE; - } - PREF_GetGlobalConfigObject(&mochaPrefObject); - if (mochaPrefObject == NULL) { - return JS_FALSE; - } - - switch(e->argc) { - - case 1: - { - int iType = PREF_GetPrefType((const char *)cstr); - int32 iRet; - XP_Bool bRet; - char * pRet; - - switch (iType) { - /* these cases should be defines but...*/ - case 8: - /* pref is a string*/ - PREF_CopyCharPref((const char *)cstr,&pRet); - *e->rval = STRING_TO_JSVAL(pRet); - e->string = pRet; - break; - case 16: - /* pref is a int*/ - PREF_GetIntPref((const char *)cstr,&iRet); - *e->rval = INT_TO_JSVAL(iRet); - break; - case 32: - /* pref is a bool*/ - PREF_GetBoolPref((const char *)cstr,&bRet); - *e->rval = BOOLEAN_TO_JSVAL(bRet); - break; - } - } - break; - case 2: - { - if (JSVAL_IS_STRING(e->argv[1])) { - JSString * valueJSStr = JS_ValueToString(e->cx, e->argv[1]); - if (valueJSStr) { - char * valueStr = lm_StrToEncoding(e->cx, PREF_CHARSET, valueJSStr); - - if (valueStr) { - PREF_SetCharPref(cstr, valueStr); - XP_FREE(valueStr); - } - } - } - else if (JSVAL_IS_INT(e->argv[1])) { - jsint intVal = JSVAL_TO_INT(e->argv[1]); - PREF_SetIntPref(cstr, (int32)intVal); - } - else if (JSVAL_IS_BOOLEAN(e->argv[1])) { - JSBool boolVal = JSVAL_TO_BOOLEAN(e->argv[1]); - PREF_SetBoolPref(cstr, (XP_Bool) boolVal); - } - else if (JSVAL_IS_NULL(e->argv[1])) { - PREF_DeleteBranch(cstr); - } - } - break; - } - - return JS_TRUE; - -} - -JSBool -ET_HandlePref(JSContext * cx, uint argc, jsval * argv, jsval * rval) -{ - - JSBool ret; - - MozillaEvent_HandlePref* event = XP_NEW_ZAP(MozillaEvent_HandlePref); - if (event == NULL) - return JS_TRUE; - - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_HandlePref, - (PRDestroyEventProc)et_DestroyEvent_WaitForIt); - event->ce.context = NULL; - event->cx = cx; - event->argc = argc; - event->argv = argv; - event->rval = rval; - - ret = (JSBool) et_PostEvent(&event->ce, TRUE); - - /* if it was a string we need to convert the string to a JSString */ - /* do we need to free event->string or does JS own it now ? */ - if (ret == JS_TRUE && JSVAL_IS_STRING(*event->rval)) - *rval = STRING_TO_JSVAL(lm_EncodingToStr(cx, PREF_CHARSET, event->string)); - XP_FREE(event); - return ret; - -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - ETVerifyComponentFunc fn; - ETBoolPtrFunc *pActive_callback; - ETVoidPtrFunc *pStartup_callback; -} MozillaEvent_VerifyComponentFunc; - -PR_STATIC_CALLBACK(PRBool) -et_HandleEvent_VerifyComponentFunction(MozillaEvent_VerifyComponentFunc* e) -{ - - return (PRBool)(e->fn) ((void**)(e->pActive_callback), - (void**)(e->pStartup_callback)); -} - -PRBool -ET_moz_VerifyComponentFunction(ETVerifyComponentFunc fn, ETBoolPtrFunc *pActive_callback, - ETVoidPtrFunc *pStartup_callback) -{ - PRBool ret; - - MozillaEvent_VerifyComponentFunc* event = PR_NEW(MozillaEvent_VerifyComponentFunc); - if (event == NULL) - return PR_FALSE; - - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_VerifyComponentFunction, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->fn = fn; - /* Pointers must be malloc'd inside libmocha before this call */ - event->pActive_callback = pActive_callback; - event->pStartup_callback = pStartup_callback; - - ret = (PRBool) et_PostEvent(&event->ce, TRUE); - return ret; -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - ETCompPropGetterFunc fn; - char *name; -} MozillaEvent_GetterFunc; - -PR_STATIC_CALLBACK(void *) -et_HandleEvent_CompGetter(MozillaEvent_GetterFunc* e) -{ - return (void *)(e->fn)(e->name); -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_CompGetter(MozillaEvent_GetterFunc * event) -{ - if (event->name) - XP_FREE(event->name); - XP_FREE(event); -} - -void * -ET_moz_CompGetterFunction(ETCompPropGetterFunc fn, char *name) -{ - MozillaEvent_GetterFunc* event = PR_NEW(MozillaEvent_GetterFunc); - if (event == NULL) - return NULL; - - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_CompGetter, - (PRDestroyEventProc)et_DestroyEvent_CompGetter); - event->fn = fn; - event->name = XP_STRDUP(name); - - return (void *)et_PostEvent(&event->ce, TRUE); -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - ETCompPropSetterFunc fn; - char *name; - void *data; -} MozillaEvent_SetterFunc; - -PR_STATIC_CALLBACK(void) -et_HandleEvent_CompSetter(MozillaEvent_SetterFunc* e) -{ - (e->fn)(e->name, e->data); -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_CompSetter(MozillaEvent_SetterFunc * event) -{ - if (event->name) - XP_FREE(event->name); - XP_FREE(event); -} - -void -ET_moz_CompSetterFunction(ETCompPropSetterFunc fn, char *name, void *data) -{ - MozillaEvent_SetterFunc* event = PR_NEW(MozillaEvent_SetterFunc); - if (!event || !name) - return; - - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_CompSetter, - (PRDestroyEventProc)et_DestroyEvent_CompSetter); - event->fn = fn; - event->name = XP_STRDUP(name); - event->data = data; - - (void) et_PostEvent(&event->ce, FALSE); -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - ETCompMethodFunc fn; - int32 argc; - JSCompArg *argv; -} MozillaEvent_MethodFunc; - -PR_STATIC_CALLBACK(void *) -et_HandleEvent_CompMethod(MozillaEvent_MethodFunc* e) -{ - return (void *)(e->fn)(e->argc, e->argv); -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_CompMethod(MozillaEvent_MethodFunc * event) -{ - if (event->argv) - XP_FREE(event->argv); - XP_FREE(event); -} - -void * -ET_moz_CompMethodFunction(ETCompMethodFunc fn, int32 argc, JSCompArg *argv) -{ - MozillaEvent_MethodFunc* event = PR_NEW(MozillaEvent_MethodFunc); - if (!event || !argv) - return NULL; - - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_CompMethod, - (PRDestroyEventProc)et_DestroyEvent_CompMethod); - event->fn = fn; - event->argc = argc; - event->argv = XP_ALLOC(argc * sizeof(JSCompArg)); - if (event->argv) - XP_MEMCPY(event->argv, argv, (argc * sizeof(JSCompArg))); - - return (void *)et_PostEvent(&event->ce, TRUE); -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - MWContext *context; - const char *script_name; - JSCFCookieData *data; - Bool *data_changed; -} MozillaEvent_JSCFExecute; - -PR_STATIC_CALLBACK(void *) -et_HandleEvent_JSCFExecute(MozillaEvent_JSCFExecute* e) -{ - void *ans; - JSCFResult res; - res = JSCF_Execute(e->context, e->script_name, e->data, e->data_changed); - return (void *) (&res); -} - -JSCFResult -ET_JSCFExecute(MWContext *context, const char *script_name, - JSCFCookieData *data, Bool *data_changed) -{ - JSCFResult *res; - MozillaEvent_JSCFExecute* event = PR_NEW(MozillaEvent_JSCFExecute); - if(!event) - return (JSCFResult) 0; - - PR_InitEvent(&event->ce.event, NULL, - (PRHandleEventProc)et_HandleEvent_JSCFExecute, - (PRDestroyEventProc)et_DestroyEvent_GenericEvent); - event->context = context; - event->script_name = script_name; - event->data = data; - event->data_changed = data_changed; - - res = et_PostEvent(&event->ce, TRUE); - return *res; -} - -/****************************************************************************/ - -typedef struct { - ETEvent ce; - char* prin; - char* target; - char* risk; - PRBool isCert; -} MozillaEvent_signedAppletPrivileges; - -PR_STATIC_CALLBACK(void) -et_HandleEvent_signedAppletPrivileges(MozillaEvent_signedAppletPrivileges* e) -{ - SECNAV_signedAppletPrivilegesOnMozillaThread - (e->ce.context, e->prin, e->target, e->risk, e->isCert); -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_signedAppletPrivileges(MozillaEvent_signedAppletPrivileges* e) -{ - XP_FREE((char*)e->prin); - XP_FREE((char*)e->target); - XP_FREE((char*)e->risk); - XP_FREE(e); -} - -void -ET_PostSignedAppletPrivileges - (MWContext* context, char* prin, char* target, char* risk, PRBool isCert) -{ - MozillaEvent_signedAppletPrivileges* event = - PR_NEW(MozillaEvent_signedAppletPrivileges); - if (event == NULL) - return; - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_signedAppletPrivileges, - (PRDestroyEventProc)et_DestroyEvent_signedAppletPrivileges); - event->ce.context = context; - event->prin = strdup(prin); - event->target = strdup(target); - event->risk = strdup(risk); - event->isCert = isCert; - et_PostEvent(&event->ce, FALSE); -} - - -#if DOM -/* Signal reflow from DOM alteration */ -typedef struct { - ETEvent ce; - LO_Element *element; - PRBool reflow; -} MozillaEvent_DOMReflow; - -PR_STATIC_CALLBACK(int) -et_HandleEvent_DOMReflow(MozillaEvent_DOMReflow* e) -{ - /* check that the doc_id is valid */ - if(XP_DOCID(e->ce.context) != e->ce.doc_id) - return FALSE; - - /* - * XXX we should check e->reflow and only `redraw' if the element just - * changed colour or something. - */ - LO_RelayoutFromElement(e->ce.context, e->element); - return TRUE; -} - -PR_STATIC_CALLBACK(void) -et_DestroyEvent_DOMReflow(MozillaEvent_DOMReflow * event) -{ - XP_FREE(event); -} - -int -ET_DOMReflow(MWContext *context, LO_Element *element, PRBool reflow, - int32 doc_id) -{ - MozillaEvent_DOMReflow *event; - event = PR_NEW(MozillaEvent_DOMReflow); - if (!event) - return 0; - - PR_InitEvent(&event->ce.event, context, - (PRHandleEventProc)et_HandleEvent_DOMReflow, - (PRDestroyEventProc)et_DestroyEvent_DOMReflow); - event->ce.context = context; - event->ce.doc_id = doc_id; - event->reflow = reflow; - event->element = element; - - return (int)et_PostEvent(&event->ce, FALSE); -} - -#endif diff --git a/mozilla/lib/libmocha/lm.h b/mozilla/lib/libmocha/lm.h deleted file mode 100644 index 766fdb55499..00000000000 --- a/mozilla/lib/libmocha/lm.h +++ /dev/null @@ -1,881 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef lm_h___ -#define lm_h___ -/* - * JS in the Navigator library-private interface. - */ -#include "xp.h" /* for uint and PA_Block */ -#include "prlong.h" /* for int64 time type used below */ -#include "libevent.h" /* until its a stand-alone */ -#include "libmocha.h" - -/* - * Shared string constants for common property names. - */ -extern char lm_argc_err_str[]; /* "incorrect number of arguments" */ - -extern char lm_unknown_origin_str[]; /* "[unknown origin]" */ - -extern char lm_onLoad_str[]; /* "onLoad" */ -extern char lm_onUnload_str[]; /* "onUnload" */ -extern char lm_onAbort_str[]; /* "onAbort" */ -extern char lm_onError_str[]; /* "onError" */ -extern char lm_onScroll_str[]; /* "onScroll" */ -extern char lm_onFocus_str[]; /* "onFocus" */ -extern char lm_onBlur_str[]; /* "onBlur" */ -extern char lm_onSelect_str[]; /* "onSelect" */ -extern char lm_onChange_str[]; /* "onChange" */ -extern char lm_onReset_str[]; /* "onReset" */ -extern char lm_onSubmit_str[]; /* "onSubmit" */ -extern char lm_onClick_str[]; /* "onClick" */ -extern char lm_onMouseDown_str[]; /* "onMouseDown" */ -extern char lm_onMouseOver_str[]; /* "onMouseOver" */ -extern char lm_onMouseOut_str[]; /* "onMouseOut" */ -extern char lm_onMouseUp_str[]; /* "onMouseUp" */ -extern char lm_onLocate_str[]; /* "onLocate" */ -extern char lm_onHelp_str[]; /* "onHelp" [EA] */ - -extern char lm_focus_str[]; /* "focus" */ -extern char lm_blur_str[]; /* "blur" */ -extern char lm_select_str[]; /* "select" */ -extern char lm_click_str[]; /* "click" */ -extern char lm_scroll_str[]; /* "scroll" */ -extern char lm_enable_str[]; /* "enable" */ -extern char lm_disable_str[]; /* "disable" */ - -extern char lm_toString_str[]; /* "toString" */ -extern char lm_length_str[]; /* "length" */ -extern char lm_document_str[]; /* "document" */ -extern char lm_forms_str[]; /* "forms" */ -extern char lm_links_str[]; /* "links" */ -extern char lm_anchors_str[]; /* "anchors" */ -extern char lm_applets_str[]; /* "applets" */ -extern char lm_embeds_str[]; /* "embeds" */ -extern char lm_plugins_str[]; /* "plugins" */ -extern char lm_images_str[]; /* "images" */ -extern char lm_layers_str[]; /* "layers" */ -#ifdef DOM -extern char lm_spans_str[]; /* "spans" */ -extern char lm_transclusions_str[]; /* "transclusions" */ -#endif - - -extern char lm_builtins_str[]; -extern char lm_location_str[]; /* "location" */ -extern char lm_navigator_str[]; /* "navigator" */ -extern char lm_netcaster_str[]; /* "netcaster" */ -extern char lm_components_str[]; /* "components" */ - -extern char lm_parentLayer_str[]; /* "parentLayer" */ -extern char lm_opener_str[]; /* "opener" */ -extern char lm_closed_str[]; /* "closed" */ -extern char lm_assign_str[]; /* "assign" */ -extern char lm_reload_str[]; /* "reload" */ -extern char lm_replace_str[]; /* "replace" */ -extern char lm_event_str[]; /* "event" */ -extern char lm_methodPrefix_str[]; /* "#method" */ -extern char lm_methodArgc_str[]; /* "#method" */ -extern char lm_methodArgv_str[]; /* "#method" */ -extern char lm_getPrefix_str[]; /* "#get_" */ -extern char lm_setPrefix_str[]; /* "#set_" */ -extern char lm_typePrefix_str[]; /* "#type_" */ -extern const char *lm_event_argv[]; /* {lm_event_str} */ - -extern PRThread *lm_InterpretThread; -extern PRThread *mozilla_thread; -extern PRThread *lm_js_lock_previous_owner; - -extern JSContext *lm_writing_context; - -/* - * Timeout structure threaded on MochaDecoder.timeouts for cleanup. - */ -struct JSTimeout { - int32 ref_count; /* reference count to shared usage */ - char *expr; /* the JS expression to evaluate */ - JSObject *funobj; /* or function to call, if !expr */ - jsval *argv; /* function actual arguments */ - void *toid; /* Identifier, used internally only */ - uint32 public_id; /* Returned as value of setTimeout() */ - uint16 argc; /* and argument count */ - uint16 spare; /* alignment padding */ - int32 doc_id; /* document this is for */ - int32 interval; /* Non-zero if repetitive timeout */ - int64 when; /* nominal time to run this timeout */ - JSVersion version; /* Version of JavaScript to execute */ - JSPrincipals *principals; /* principals with which to execute */ - char *filename; /* filename of setTimeout call */ - uint32 lineno; /* line number of setTimeout call */ - JSTimeout *next; /* next timeout in list */ -}; - -extern void lm_ClearWindowTimeouts(MochaDecoder *decoder); - -struct JSNestingUrl { - JSNestingUrl *next; - char *str; -}; - -/* - * Event queue stack madness to handle doc.write("<script>doc.write..."). - */ -typedef struct QueueStackElement { - PREventQueue * queue; - MWContext * context; - int32 doc_id; - struct QueueStackElement * up; - struct QueueStackElement * down; - PRPackedBool done; - PRPackedBool discarding; - PRPackedBool inherit_parent; - void * retval; -} QueueStackElement; - -extern void -et_SubEventLoop(QueueStackElement * qse); - -/* - * Stack size per window context, plus one for the navigator. - */ -#define LM_STACK_SIZE 8192 - -extern JSRuntime *lm_runtime; -extern JSClass lm_window_class; -extern JSClass lm_layer_class; -extern JSClass lm_document_class; -extern JSClass lm_event_class; - -extern JSBool lm_SaveParamString(JSContext *cx, PA_Block *bp, - const char *str); -extern MochaDecoder *lm_NewWindow(MWContext *context); -extern void lm_DestroyWindow(MochaDecoder *decoder); - -/* - * Hold and drop the reference count for tree back-edges that go from object - * private data to the containing decoder. These refs do not keep the object - * tree under decoder alive from the GC, but they do keep decoder from being - * destroyed and some out of order finalizer tripping over its freed memory. - */ -#ifdef DEBUG -extern MochaDecoder *lm_HoldBackCount(MochaDecoder *decoder); -extern void lm_DropBackCount(MochaDecoder *decoder); - -#define HOLD_BACK_COUNT(decoder) lm_HoldBackCount(decoder) -#define DROP_BACK_COUNT(decoder) lm_DropBackCount(decoder) -#else -#define HOLD_BACK_COUNT(decoder) \ - (((decoder) ? (decoder)->back_count++ : 0), (decoder)) -#define DROP_BACK_COUNT(decoder) \ - (((decoder) && --(decoder)->back_count <= 0 && !(decoder)->forw_count) \ - ? lm_DestroyWindow(decoder) \ - : (void)0) -#endif - -extern JSBool lm_InitWindowContent(MochaDecoder *decoder); -extern JSBool lm_DefineWindowProps(JSContext *cx, - MochaDecoder *decoder); -extern JSBool lm_ResolveWindowProps(JSContext *cx, - MochaDecoder *decoder, - JSObject *obj, - jsval id); -extern void lm_FreeWindowContent(MochaDecoder *decoder, - JSBool fromDiscard); -extern JSBool lm_SetInputStream(JSContext *cx, - MochaDecoder *decoder, - NET_StreamClass *stream, - URL_Struct *url_struct, - JSBool free_stream_on_close); -extern JSObject *lm_DefineDocument(MochaDecoder *decoder, - int32 layer_id); -extern JSObject *lm_DefineHistory(MochaDecoder *decoder); -extern JSObject *lm_DefineLocation(MochaDecoder *decoder); -extern JSObject *lm_DefineNavigator(MochaDecoder *decoder); -extern JSObject *lm_DefineComponents(MochaDecoder *decoder); -extern JSObject *lm_DefineCrypto(MochaDecoder *decoder); -extern JSObject *lm_DefineScreen(MochaDecoder *decoder, - JSObject *parent); -#ifdef NAV_HARDWARE -extern JSObject *lm_DefineHardware(MochaDecoder *decoder, - JSObject *parent); -#endif -extern JSObject *lm_DefineEnvironment(MochaDecoder *decoder); -extern JSBool lm_DefinePluginClasses(MochaDecoder *decoder); -extern JSBool lm_DefineBarClasses(MochaDecoder *decoder); -extern JSBool lm_ResolveBar(JSContext *cx, MochaDecoder *decoder, - const char *name); -extern JSBool lm_DefineTriggers(void); -extern JSObject *lm_NewPluginList(JSContext *cx, JSObject *parent_obj); -extern JSObject *lm_NewMIMETypeList(JSContext *cx); -extern JSObject *lm_GetDocumentFromLayerId(MochaDecoder *decoder, - int32 layer_id); -extern JSObject *lm_DefinePkcs11(MochaDecoder *decoder); -/* - * Get (create if needed) document's form, link, and named anchor arrays. - */ -extern JSObject *lm_GetFormArray(MochaDecoder *decoder, - JSObject *document); -extern JSObject *lm_GetLinkArray(MochaDecoder *decoder, - JSObject *document); -extern JSObject *lm_GetNameArray(MochaDecoder *decoder, - JSObject *document); -#ifdef DOM -extern JSObject *lm_GetSpanArray(MochaDecoder *decoder, - JSObject *document); -extern JSObject *lm_GetTransclusionArray(MochaDecoder *decoder, - JSObject *document); -extern JSObject *lm_DOMGetDocumentElement(MochaDecoder *decoder, - JSObject *document); -#endif -extern JSObject *lm_GetAppletArray(MochaDecoder *decoder, - JSObject *document); -extern JSObject *lm_GetEmbedArray(MochaDecoder *decoder, - JSObject *document); -extern JSObject *lm_GetImageArray(MochaDecoder *decoder, - JSObject *document); -extern JSObject *lm_GetDocumentLayerArray(MochaDecoder *decoder, - JSObject *document); - -extern JSBool lm_InitBuiltinClass(MochaDecoder *decoder); -extern JSObject *lm_GetBuiltinsArray(MochaDecoder *decoder, JSObject *document); - -/* - * dummy object for applets and embeds that can't be reflected - */ -extern JSObject *lm_DummyObject; -extern void lm_InitDummyObject(JSContext *cx); - -/* bit vector for handlers */ -typedef enum { - HANDLER_ONCLICK = 1 << 0, - HANDLER_ONFOCUS = 1 << 1, - HANDLER_ONBLUR = 1 << 2, - HANDLER_ONCHANGE = 1 << 3, - HANDLER_ONSELECT = 1 << 4, - HANDLER_ONSCROLL = 1 << 5, - HANDLER_ONMOUSEDOWN = 1 << 6, - HANDLER_ONMOUSEUP = 1 << 7, - HANDLER_ONKEYDOWN = 1 << 8, - HANDLER_ONKEYUP = 1 << 9, - HANDLER_ONKEYPRESS = 1 << 10, - HANDLER_ONDBLCLICK = 1 << 11 -} JSHandlersBitVector; - -/* - * Base class of all JS input private object data structures. - */ -typedef struct JSInputBase { - MochaDecoder *decoder; /* this window's JS decoder */ - int32 type; /* layout form element type */ - JSHandlersBitVector handlers; /* bit vector for handlers */ -} JSInputBase; - -/* - * Base class of event-handling elements like layers and documents. - */ -typedef struct JSInputHandler { - JSInputBase base; /* decoder and type */ - JSObject *object; /* this input handler's JS object */ - uint32 event_mask; /* mask of events in progress */ -} JSInputHandler; - -/* - * Base class of input event-capturing elements like layers and documents. - */ -typedef struct JSEventReceiver { - JSObject *object; /* this event receiver's JS object */ - uint32 event_mask; /* mask of events in progress */ -} JSEventReceiver; - -/* - * Base class of input event-handling elements like anchors and form inputs. - */ -typedef struct JSEventCapturer { - JSEventReceiver base; /* this event capturer's receiver base */ - uint32 event_bit; /* mask of events being captured */ -} JSEventCapturer; - -#define base_decoder base.decoder -#define base_type base.type -#define base_handlers base.handlers - -/* - * JS URL object. - * - * Location is a special URL: when you set one of its properties, your client - * window goes to the newly formed address. - */ -typedef struct JSURL { - JSInputHandler handler; - int32 layer_id; - uint32 index; - JSString *href; - JSString *target; - JSString *text; -} JSURL; - -/* JS Document Object - * Documents exist per-window and per-layer - */ -typedef struct JSDocument { - JSEventCapturer capturer; - MochaDecoder *decoder; - JSObject *object; - int32 layer_id; /* The containing layer's id */ - JSObject *forms; - JSObject *links; - JSObject *anchors; - JSObject *applets; - JSObject *embeds; - JSObject *images; - JSObject *layers; -#ifdef DOM - JSObject *spans; - JSObject *transclusions; - JSObject *dom_documentElement; -#endif - JSObject *builtins; -} JSDocument; - -#define URL_NOT_INDEXED ((uint32)-1) - -#define url_decoder handler.base_decoder -#define url_type handler.base_type -#define url_object handler.object -#define url_event_mask handler.event_mask - -extern JSURL * -lm_NewURL(JSContext *cx, MochaDecoder *decoder, - LO_AnchorData *anchor_data, JSObject *document); - -extern void -lm_ReplaceURL(MWContext *context, URL_Struct *url_struct); - -extern JSBool -lm_GetURL(JSContext *cx, MochaDecoder *decoder, URL_Struct *url_struct); - -extern const char * -lm_CheckURL(JSContext *cx, const char *url_string, JSBool checkFile); - -extern JSBool -lm_CheckWindowName(JSContext *cx, const char *window_name); - -extern PRHashTable * -lm_GetIdToObjectMap(MochaDecoder *decoder); - -extern JSBool PR_CALLBACK -lm_BranchCallback(JSContext *cx, JSScript *script); - -extern void PR_CALLBACK -lm_ErrorReporter(JSContext *cx, const char *message, - JSErrorReport *report); - -extern JSObject * -lm_GetFormObjectByID(MWContext *context, int32 layer_id, uint form_id); - -extern LO_FormElementStruct * -lm_GetFormElementByIndex(JSContext * cx, JSObject *form_obj, int32 index); - -extern JSObject * -lm_GetFormElementFromMapping(JSContext *cx, JSObject *form_obj, uint32 index); - -extern JSBool -lm_AddFormElement(JSContext *cx, JSObject *form, JSObject *obj, - char *name, uint index); - -extern JSBool -lm_ReflectRadioButtonArray(MWContext *context, int32 layer_id, intn form_id, - const char *name, PA_Tag * tag); - -extern JSBool -lm_SendEvent(MWContext *context, JSObject *obj, JSEvent *event, - jsval *result); - -extern JSBool -lm_HandleEvent(JSContext *cx, JSObject *obj, JSObject *eventObj, - jsval funval, jsval *result); - -extern JSBool -lm_FindEventHandler(MWContext *context, JSObject *obj, JSObject *eventObj, - jsval funval, jsval *result); - -extern JSObject * -lm_NewEventObject(MochaDecoder * decoder, JSEvent * pEvent); - -typedef struct JSEventNames { - const char *lowerName; - const char *mixedName; -} JSEventNames; - -extern const char * -lm_EventName(uint32 event_bit); - -extern JSEventNames * -lm_GetEventNames(uint32 event_bit); - -/* - * Compile the given attribute and attach it to the JSObject - */ -extern JSBool -lm_CompileEventHandler(MochaDecoder * decoder, PA_Block id, PA_Block data, - int newline_count, JSObject *object, const char *name, - PA_Block block); - -extern uint32 -lm_FindEventInMWContext(MWContext *context); - -/* - * Remember the current form object that we are processing - */ -extern void -lm_SetActiveForm(MWContext * context, int32 id); - -/* - * Called when we want to get rid of the old contents of a layer - * and create a new document. - */ -extern void -lm_NewLayerDocument(MochaDecoder *decoder, int32 layer_id); - -/* - * Called to set the source URL as a result of a document.open() on the - * layer's document. - */ -JSBool -lm_SetLayerSourceURL(MochaDecoder *decoder, int32 layer_id, char *url); - -/* - * Get a layer obj from a parent id and a layer name. Used for lazy reflection. - */ -extern JSObject * -lm_GetNamedLayer(MochaDecoder *decoder, int32 parent_layer_id, - const char *name); - -extern const char * -lm_GetLayerOriginURL(JSContext *cx, JSObject *obj); - - -/* Clears out object references from the doc private data */ -extern void -lm_CleanUpDocumentRoots(MochaDecoder *decoder, JSObject *obj); - -/* Calls CleanUpDocumentRoots for a layer's document */ -extern void -lm_DestroyLayer(MWContext *context, JSObject *obj); - -/* - * Called when the content associated with a document is destroyed, - * but the document itself may not be. Cleans out object references - * from doc private data (so that the objects can be collected). Also - * deals with correctly relinquishing event capture. - */ -extern void -lm_CleanUpDocument(MochaDecoder *decoder, JSObject *document); - -extern NET_StreamClass * -lm_ClearDecoderStream(MochaDecoder *decoder, JSBool fromDiscard); - -extern void -lm_ProcessImageEvent(MWContext *context, JSObject *obj, - LM_ImageEvent event); - -extern JSObject * -lm_NewImage(JSContext *cx, LO_ImageStruct *image_data); - -extern JSObject * -lm_NewSoftupObject(JSContext *cx, MochaDecoder *decoder, const char *jarargs); - -extern void -lm_RegisterComponent(const char *targetName, ETBoolPtrFunc active_callback, - ETVoidPtrFunc startup_callback); - -extern void -lm_RegisterComponentProp(const char *comp, const char *targetName, - uint8 retType, ETCompPropSetterFunc setter, - ETCompPropGetterFunc getter); - -extern void -lm_RegisterComponentMethod(const char *comp, const char *targetName, - uint8 retType, ETCompMethodFunc method, int32 nargs); - -/* - * Class initializers (the wave of the future). - */ -extern JSBool -lm_InitSecurity(MochaDecoder *decoder); - -extern JSBool -lm_InitDocumentClass(MochaDecoder *decoder); - -extern JSBool -lm_InitImageClass(MochaDecoder *decoder); - -extern JSBool -lm_InitAnchorClass(MochaDecoder *decoder); - -#ifdef DOM -extern JSBool -lm_InitSpanClass(MochaDecoder *decoder); - -extern JSBool -lm_InitTransclusionClass(MochaDecoder *decoder); -#endif - -extern JSBool -lm_InitLayerClass(MochaDecoder *decoder); - -extern JSBool -lm_InitInputClasses(MochaDecoder *decoder); - -extern JSBool -lm_InitEventClasses(MochaDecoder *decoder); - -extern JSBool -lm_InitRectClass(MochaDecoder *decoder); - -extern JSBool -lm_InitBackgroundClass(MochaDecoder *decoder); - -/* Create an image context for anonymous images. */ -extern JSBool -lm_NewImageContext(MWContext *context, MochaDecoder *decoder); - -/* - * Called to save and restore timeouts across a resize_reload. - */ -void -lm_SaveWindowTimeouts(MochaDecoder *decoder); - -void -lm_RestoreWindowTimeouts(MochaDecoder *decoder); - -/* - * Call this function from LO_ResetForm() to let the form's onReset attribute - * event handler run and do specialized form element data reinitialization. - * Returns JS_TRUE if the form reset should continue, JS_FALSE if it - * should be aborted. - */ -extern JSBool -lm_SendOnReset(MWContext *context, JSEvent *event, LO_Element *element); - -/* - * See if our outer object is the current form or the document - */ -extern JSObject * -lm_GetOuterObject(MochaDecoder * decoder); - -/* - * Entry point for the netlib to notify JS of load and unload events. - */ -extern void -lm_SendLoadEvent(MWContext *context, int32 event, JSBool resize_reload); - -/* - * Load or unload event for a layer - */ -extern void -lm_SendLayerLoadEvent(MWContext *context, int32 event, int32 layer_id, JSBool resize_reload); - -/* - * This one should be called when a form is submitted. If there is an - * INPUT tag of type "submit", the JS author could write an "onClick" - * handler property of the submit button, but for forms that auto-submit - * we want an "onSubmit" form property handler. - * - * Returns JS_TRUE if the submit should continue, JS_FALSE if it - * should be aborted. - */ -extern JSBool -lm_SendOnSubmit(MWContext *context, JSEvent *event, LO_Element *element); - -extern JSBool -lm_InputEvent(MWContext *context, LO_Element *element, JSEvent *pEvent, - jsval *rval); - -extern JSBool -lm_KeyInputEvent(MWContext *context, LO_Element *element, JSEvent *pEvent, - jsval *rval); - -extern JSBool -lm_MouseInputEvent(MWContext *context, LO_Element *element, JSEvent *pEvent, - jsval *rval); - -extern NET_StreamClass * -lm_DocCacheConverter(MWContext * context, URL_Struct * url, - const char * wysiwyg_url); - -extern char * -lm_MakeWysiwygUrl(JSContext *cx, MochaDecoder *decoder, int32 layer_id, - JSPrincipals *principals); - -typedef struct JSObjectArray { - MochaDecoder *decoder; - jsint length; - int32 layer_id; -} JSObjectArray; - -extern JSBool -lm_AddObjectToArray(JSContext * cx, JSObject * array_obj, - const char * name, jsint index, JSObject * obj); - -/* Version Information; sits on top of JS_SetVersion and JS_GetVersion */ -extern void -lm_SetVersion(MochaDecoder *decoder, JSVersion version); - -#define lm_GetVersion(decoder) JS_GetVersion((decoder)->js_context) - -/* - * Security ----------------------------------- - */ - -typedef enum JSTarget { - JSTARGET_UNIVERSAL_BROWSER_READ, - JSTARGET_UNIVERSAL_BROWSER_WRITE, - JSTARGET_UNIVERSAL_SEND_MAIL, - JSTARGET_UNIVERSAL_FILE_READ, - JSTARGET_UNIVERSAL_FILE_WRITE, - JSTARGET_UNIVERSAL_PREFERENCES_READ, - JSTARGET_UNIVERSAL_PREFERENCES_WRITE, - JSTARGET_UNIVERSAL_DIALER_ACCESS, - JSTARGET_MAX -} JSTarget; - -extern const char * -lm_GetSubjectOriginURL(JSContext *cx); - -extern const char * -lm_GetObjectOriginURL(JSContext *cx, JSObject *object); - -extern const char * -lm_SetObjectOriginURL(JSContext *cx, JSObject *object, const char *origin); - -extern JSPrincipals * -lm_GetPrincipalsFromStackFrame(JSContext *cx); - -extern JSPrincipals * -lm_GetCompilationPrincipals(MochaDecoder *decoder, - JSPrincipals *layoutPrincipals); - -extern JSBool -lm_CanAccessTarget(JSContext *cx, JSTarget target); - -extern JSBool -lm_CheckPermissions(JSContext *cx, JSObject *obj, JSTarget target); - -extern JSBool -lm_GetCrossOriginEnabled(void); - -extern JSBool -lm_GetUnsignedExecutionEnabled(void); - -extern JSBool -lm_CheckContainerAccess(JSContext *cx, JSObject *obj, MochaDecoder *decoder, - JSTarget target); - -/* - * Get the innermost (in the sense of the parent scope chain of "obj") - * nonnull principals. Will create principals at the window level if - * none exist. Will always return nonnull principals except in the case - * of memory failure. - * Argument "container" specifies the start of the search, the - * container where the principals were found will be stored into - * "foundIn" if "foundIn" is nonnull. - */ -extern JSPrincipals * -lm_GetInnermostPrincipals(JSContext *cx, JSObject *container, - JSObject **foundIn); - -extern JSPrincipals * -lm_GetContainerPrincipals(JSContext *cx, JSObject *container); - -extern void -lm_SetContainerPrincipals(JSContext *cx, JSObject *container, - JSPrincipals *principals); - -extern JSBool -lm_CanCaptureEvent(JSContext *cx, JSFunction *fun, JSEvent *event); - -extern void -lm_SetExternalCapture(JSContext *cx, JSPrincipals *principals, - JSBool b); - -extern JSBool -lm_CheckSetParentSlot(JSContext *cx, JSObject *obj, jsval id, jsval *vp); - -extern JSBool -lm_SetDocumentDomain(JSContext *cx, JSPrincipals *principals, - const char *newDomain); - -extern void -lm_InvalidateCertPrincipals(MochaDecoder *decoder, JSPrincipals *principals); - -extern void -lm_DestroyPrincipalsList(JSContext *cx, JSPrincipalsList *list); - -/* - * -------------------------------------------- - */ - -/* For when mozilla needs to call LM_PutMochaDecoder in the mocha thread. */ -extern void -et_PutMochaDecoder(MWContext *context, MochaDecoder *decoder); - -/* This function is private to libmocha, so don't stuff it in libevent.h, chouck ! */ -extern int32 -ET_PostCreateLayer(MWContext *context, int32 wrap_width, int32 parent_layer_id); - -extern void -lm_RestoreLayerState(MWContext *context, int32 layer_id, - LO_BlockInitializeStruct *param); - -extern PRHashNumber -lm_KeyHash(const void *key); - -extern JSBool -lm_jsval_to_rgb(JSContext *cx, jsval *vp, LO_Color **rgbp); - -extern JSBool -layer_setBgColorProperty(JSContext *cx, JSObject *obj, jsval *vp); - -extern JSObject * -lm_GetActiveContainer(MochaDecoder *decoder); - -extern JSBool -lm_GetPrincipalsCompromise(JSContext *cx, JSObject *obj); - -extern char * -lm_FixNewlines(JSContext *cx, const char *value, JSBool formElement); - -extern JSBool PR_CALLBACK -win_open(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval); - - -/* defined in libmocha.h */ -#ifdef JSDEBUGGER - -extern void -lm_InitJSDebug(JSRuntime *jsruntime); - -extern void -lm_ExitJSDebug(JSRuntime *jsruntime); - -#endif - -#define IS_MESSAGE_WINDOW(context) \ -(((context)->type == MWContextMail) || \ - ((context)->type == MWContextNews) || \ - ((context)->type == MWContextMailMsg) || \ - ((context)->type == MWContextNewsMsg)) - -/* INTL support */ - -extern char * -lm_StrToLocalEncoding(MWContext * context, JSString * str); - -extern JSString * -lm_LocalEncodingToStr(MWContext * context, char * bytes); - -extern char * -lm_StrToEncoding(JSContext *cx, uint16 charset, JSString * str); - -extern JSString * -lm_EncodingToStr(JSContext *cx, uint16 charset, char * bytes); - -/* end INTL support */ - -/* MLM */ -typedef struct lm_lock_waiter { - JSLockReleaseFunc fn; - void * data; - struct lm_lock_waiter * next; -} lm_lock_waiter; - -typedef struct ContextListStr ContextList; - -struct WindowGroup { - LMWindowGroup *next; - LMWindowGroup *prev; - - /* XXXMLM - this entry is currently unused; it should eventually hold - * a shared JSContext for the thread group. - */ - JSContext *js_context; - - PRBool interruptCurrentOp; - - PRMonitor *owner_monitor; - PRThread *thread; - PRThread *owner; - lm_lock_waiter *waiting_list; - int32 current_count; - - PRBool mozWantsLock; - PRBool mozGotLock; - - PRBool hasLock; - JSContext *lock_context; - - JSTimeout **js_timeout_insertion_point; - JSTimeout *js_timeout_running; - - uint inputRecurring; - - PREventQueue *interpret_queue; - QueueStackElement *queue_stack; - uint queue_depth; - uint queue_count; - PRMonitor *queue_monitor; - ContextList *mw_contexts; - MWContext *current_context; - PRBool done; -}; - -extern void lm_InitWindowGroups(void); -extern LMWindowGroup *lm_NewWindowGroup(void); -extern void lm_StartWindowGroup(LMWindowGroup *grp); -extern void lm_DestroyWindowGroup(LMWindowGroup *grp); -extern LMWindowGroup *LM_GetDefaultWindowGroup(MWContext *mwc); -extern LMWindowGroup *lm_MWContextToGroup(MWContext *mwc); -extern LMWindowGroup *lm_QueueStackToGroup(QueueStackElement *qse); -extern PREventQueue *LM_MWContextToQueue(MWContext *mwc); -extern PREventQueue *LM_WindowGroupToQueue(LMWindowGroup *lmg); -extern ContextList *lm_GetEntryForContext(LMWindowGroup *grp, MWContext *cx); -extern void LM_AddContextToGroup(LMWindowGroup *grp, MWContext *cx); -extern void LM_RemoveContextFromGroup(MWContext *cx); -extern PRBool LM_IsLocked(LMWindowGroup *grp); -extern void LM_BeginRequest(LMWindowGroup *grp, JSContext *jsc); -extern void LM_EndRequest(LMWindowGroup *grp, JSContext *jsc); - -extern JSBool LM_LockJSByGroup(LMWindowGroup *grp, char **errp); -extern void LM_UnlockJSByGroup(LMWindowGroup *grp); - -extern JSBool lm_inited(void); - -/* See also LM_GetCrippledContext() in libmocha.h */ -extern MochaDecoder *LM_GetCrippledDecoder(void); -extern void LM_SetCrippledDecoder(MochaDecoder *md); -extern JSBool LM_ShouldRunGC(JSContext *cx, JSGCStatus status); - -/* MLM */ - -#endif /* lm_h___ */ diff --git a/mozilla/lib/libmocha/lm_applt.c b/mozilla/lib/libmocha/lm_applt.c deleted file mode 100644 index 5abe22ff0af..00000000000 --- a/mozilla/lib/libmocha/lm_applt.c +++ /dev/null @@ -1,426 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - * JS reflection of applets in the current document - */ - -/* Please leave outside of ifdef for windows precompiled headers */ -#include "lm.h" - -#if defined(JAVA) || defined(OJI) - -#include "xp.h" -#include "layout.h" -#if defined(JAVA) -#include "java.h" -#include "lj.h" /* for LJ_InvokeMethod */ -#define IMPLEMENT_netscape_applet_MozillaAppletContext -#define IMPLEMENT_netscape_applet_EmbeddedObjectNatives -#ifdef XP_MAC -#include "n_applet_MozillaAppletContext.h" -#include "n_a_EmbeddedObjectNatives.h" -#else -#include "netscape_applet_MozillaAppletContext.h" -#include "netscape_applet_EmbeddedObjectNatives.h" -#endif -#elif defined(OJI) -#include "np2.h" -#include "jni.h" -#endif /* OJI */ -#include "jsjava.h" -#include "jsobj.h" -#include "prlog.h" - -extern PRLogModuleInfo* Moja; -#define debug PR_LOG_DEBUG -#define warn PR_LOG_WARN - -JSClass *lm_java_clasp = NULL; - -enum applet_array_slot { - APPLET_ARRAY_LENGTH = -1 -}; - -static JSPropertySpec applet_array_props[] = { - {lm_length_str, APPLET_ARRAY_LENGTH, - JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {0} -}; - -extern JSClass lm_applet_array_class; - -PR_STATIC_CALLBACK(JSBool) -applet_array_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSObjectArray *array; - MochaDecoder *decoder; - MWContext *context; - jsint count, slot; - LO_JavaAppStruct *applet_data; - int32 active_layer_id; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - array = JS_GetInstancePrivate(cx, obj, &lm_applet_array_class, NULL); - if (!array) - return JS_TRUE; - decoder = array->decoder; - context = decoder->window_context; - - if (!context) - return JS_TRUE; - - if (LM_MOJA_OK != ET_InitMoja(context)) - return JS_FALSE; - - LO_LockLayout(); - - switch (slot) { - case APPLET_ARRAY_LENGTH: - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, array->layer_id); - count = LO_EnumerateApplets(context, array->layer_id); - LM_SetActiveLayer(context, active_layer_id); - if (count > array->length) - array->length = count; - *vp = INT_TO_JSVAL(array->length); - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - LO_UnlockLayout(); - return JS_TRUE; - } - applet_data = LO_GetAppletByIndex(context, array->layer_id, - (uint)slot); - if (applet_data) { - JSObject *mo = LM_ReflectApplet(context, applet_data, NULL, - array->layer_id, (uint)slot); - - if (!mo) { - JS_ReportError(cx, - "unable to reflect applet \"%s\", index %d - not loaded yet?", - applet_data->attr_name, (uint) slot); - goto err; - } - *vp = OBJECT_TO_JSVAL(mo); - - if (slot >= array->length) - array->length = slot + 1; - } else { - JS_ReportError(cx, "no applet with index %d\n"); - goto err; - } - break; - } - LO_UnlockLayout(); - return JS_TRUE; - err: - LO_UnlockLayout(); - return JS_FALSE; -} - -PR_STATIC_CALLBACK(void) -applet_array_finalize(JSContext *cx, JSObject *obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -JSClass lm_applet_array_class = { - "AppletArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - applet_array_getProperty, applet_array_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, applet_array_finalize -}; - -JSObject * -lm_GetAppletArray(MochaDecoder *decoder, JSObject *document) -{ - JSContext *cx = decoder->js_context; - JSObject *obj; - JSObjectArray *array; - JSDocument *doc; - - doc = JS_GetPrivate(cx, document); - if (!doc) - return NULL; - - obj = doc->applets; - if (obj) - return obj; - - array = JS_malloc(cx, sizeof *array); - if (!array) - return NULL; - array->decoder = NULL; /* in case of error below */ - - obj = JS_NewObject(cx, &lm_applet_array_class, NULL, document); - if (!obj || !JS_SetPrivate(cx, obj, array)) { - JS_free(cx, array); - return NULL; - } - - if (!JS_DefineProperties(cx, obj, applet_array_props)) - return NULL; - - array->decoder = HOLD_BACK_COUNT(decoder); - array->length = 0; - array->layer_id = doc->layer_id; - doc->applets = obj; - - return obj; -} - - -static JSObject * -lm_ReallyReflectApplet(MWContext *context, LO_JavaAppStruct *lo_applet, - int32 layer_id, uint32 index) -{ - JSObject *obj; - MochaDecoder *decoder; - JSContext *cx; -#ifdef JAVA - LJAppletData *ad; - jref javaobject; -#endif - lo_TopState *top_state; - PRHashTable *map; -#ifdef OJI - NPEmbeddedApp* embed; - LO_CommonPluginStruct *lo_embed = (LO_CommonPluginStruct *)lo_applet; - jobject javaobject; -#endif /* OJI */ - - PR_LOG(Moja, debug, ("really reflect applet 0x%x\n", lo_applet)); - - obj = lo_applet->objTag.mocha_object; - if (obj) - return obj; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - cx = decoder->js_context; - - top_state = lo_GetMochaTopState(context); - if (top_state->resize_reload) { - map = lm_GetIdToObjectMap(decoder); - if (map) - obj = (JSObject *)PR_HashTableLookup(map, - LM_GET_MAPPING_KEY(LM_APPLETS, layer_id, index)); - - if (obj) { - lo_applet->objTag.mocha_object = obj; - return obj; - } - } - -#ifdef OJI - { - jsval val; - if (!JVM_IsLiveConnectEnabled()) { - return lo_embed->mocha_object = lm_DummyObject; - } - - javaobject = NPL_GetJavaObject(lo_embed); - - if (JSJ_ConvertJavaObjectToJSValue(decoder->js_context, javaobject, &val)) - obj = JSVAL_TO_OBJECT(val); - } -#else - /* set the element to something bad if we can't get the java obj */ - if (!JSJ_IsEnabled()) { - PR_LOG(Moja, debug, ("reflected applet 0x%x as null\n", - lo_applet)); - return lo_applet->objTag.mocha_object = lm_DummyObject; - } - - ad = (LJAppletData *) lo_applet->objTag.session_data; - - if (ad) { - /* MozillaAppletContext.reflectApplet gets the java applet - * object out of a hash table given the AppletData pointer - * as an integer */ - if (ad->selector_type != LO_JAVA_SELECTOR_APPLET) - javaobject = LJ_InvokeMethod(classEmbeddedObjectNatives, - methodID_netscape_applet_EmbeddedObjectNatives_reflectObject, - ad->docID, ad); - else - javaobject = LJ_InvokeMethod(classMozillaAppletContext, - methodID_netscape_applet_MozillaAppletContext_reflectApplet_1, - ad->docID, ad); - obj = js_ReflectJObjectToJSObject(decoder->js_context, - (HObject *)javaobject); - } -#endif /* !OJI */ - - if( obj == NULL ) - { - PR_LOG(Moja, warn, ("failed to reflect applet 0x%x\n", lo_applet)); - return NULL; - } - map = lm_GetIdToObjectMap(decoder); - if (map) - PR_HashTableAdd(map, - LM_GET_MAPPING_KEY(LM_APPLETS, layer_id, index), - obj); - - /* - lj_mozilla_ee->js_context = saved_context; - */ - - PR_LOG(Moja, debug, ("reflected applet 0x%x (java 0x%x) to 0x%x ok\n", - lo_applet, javaobject, obj)); - - if (obj) - lm_java_clasp = JS_GetClass(cx, obj); - return lo_applet->objTag.mocha_object = obj; -} - - -/* XXX what happens if this is called before java starts up? - * or if java is disabled? */ - -#if defined(OJI) - -static char* getValue(struct lo_NVList* nvlist, const char* name) -{ - int i; - char** names = nvlist->names; - char** values = nvlist->values; - - for (i = nvlist->n - 1; i >= 0; --i) - if (XP_STRCASECMP(names[i], name) == 0) - return values[i]; - - return NULL; -} - -#endif - -JSObject * -LM_ReflectApplet(MWContext *context, LO_JavaAppStruct *applet_data, - PA_Tag * tag, int32 layer_id, uint index) -{ - JSObject *obj, *array_obj, *outer_obj, *document; - MochaDecoder *decoder; - JSContext *cx; - char *name; -#ifdef OJI - LO_EmbedStruct *embed = (LO_EmbedStruct *)applet_data; -#endif - - obj = applet_data->objTag.mocha_object; - if (obj) - return obj; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - cx = decoder->js_context; - -#ifdef OJI - /* this is really skanky, but we don't really have a LO_JavaAppStruct, but instead a LO_EmbedStruct. */ - name = getValue(&embed->attributes, "NAME"); - if (name != NULL) - name = JS_strdup(cx, name); -#else - /* get the name */ - if (applet_data->attr_name) { - name = JS_strdup(cx, (char *) applet_data->attr_name); - } else { - name = 0; - } -#endif - - /* Get the document object that will hold this applet */ - document = lm_GetDocumentFromLayerId(decoder, layer_id); - if (!document) - goto out; - - array_obj = lm_GetAppletArray(decoder, document); - if (!array_obj) { - obj = 0; - goto out; - } - - /* XXX should pass thru ReallyReflectApplet to whatever calls NewObject */ - outer_obj = lm_GetOuterObject(decoder); - - /* this function does the real work */ - obj = lm_ReallyReflectApplet(context, applet_data, layer_id, index); - - if (!obj) - /* reflection failed. this usually means that javascript tried - * to talk to the applet before it was ready. there's not much - * we can do about it */ - goto out; - - /* put it in the applet array */ - if (!lm_AddObjectToArray(cx, array_obj, name, index, obj)) { - obj = NULL; - goto out; - } - - /* put it in the document scope */ - if (name) { - if (!JS_DefineProperty(cx, outer_obj, name, OBJECT_TO_JSVAL(obj), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - PR_LOG(Moja, warn, ("failed to define applet 0x%x as %s\n", - applet_data, name)); - /* XXX remove it altogether? */ - } - JS_free(cx, name); - } - - /* cache it in layout data structure XXX lm_ReallyReflectApplet did this */ - XP_ASSERT(applet_data->objTag.mocha_object == obj); - - out: - LM_PutMochaDecoder(decoder); - return obj; -} - -PRIVATE JSObject * -LM_ReflectNamedApplet(MWContext *context, lo_NameList *name_rec, - int32 layer_id, uint index) -{ - return NULL; -} - -#else - -void *lm_java_clasp = NULL; - -#endif /* !JAVA && !OJI */ diff --git a/mozilla/lib/libmocha/lm_bars.c b/mozilla/lib/libmocha/lm_bars.c deleted file mode 100644 index d755a317181..00000000000 --- a/mozilla/lib/libmocha/lm_bars.c +++ /dev/null @@ -1,262 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - - -/* - * JS event class. - */ -#include "lm.h" -#include "lo_ele.h" -#include "pa_tags.h" -#include "xp.h" -#include "prtypes.h" - -typedef enum JSBarType { - JSBAR_MENU, JSBAR_TOOL, JSBAR_LOCATION, JSBAR_PERSONAL, JSBAR_STATUS, - JSBAR_SCROLL -} JSBarType; - -const char *barnames[] = { - "menubar", "toolbar", "locationbar", "personalbar", "statusbar", - "scrollbars" -}; - -typedef struct JSBar { - MochaDecoder *decoder; - JSBarType bartype; -} JSBar; - -enum bar_tinyid { - BAR_VISIBLE = -1 -}; - -static JSPropertySpec bar_props[] = { - {"visible" , BAR_VISIBLE, JSPROP_ENUMERATE}, - {0} -}; - -extern JSClass lm_bar_class; - -PR_STATIC_CALLBACK(JSBool) -bar_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSBar * bar; - MWContext *context; - Chrome *chrome; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - if (JSVAL_TO_INT(id) != BAR_VISIBLE) - return JS_TRUE; - - bar = JS_GetInstancePrivate(cx, obj, &lm_bar_class, NULL); - if (!bar) - return JS_TRUE; - context = bar->decoder->window_context; - if (!context) - return JS_TRUE; - - chrome = XP_NEW_ZAP(Chrome); - if (!chrome) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - ET_PostQueryChrome(context, chrome); - - switch (bar->bartype) { - case JSBAR_MENU: - *vp = BOOLEAN_TO_JSVAL(chrome->show_menu); - break; - case JSBAR_TOOL: - *vp = BOOLEAN_TO_JSVAL(chrome->show_button_bar); - break; - case JSBAR_LOCATION: - *vp = BOOLEAN_TO_JSVAL(chrome->show_url_bar); - break; - case JSBAR_PERSONAL: - *vp = BOOLEAN_TO_JSVAL(chrome->show_directory_buttons); - break; - case JSBAR_STATUS: - *vp = BOOLEAN_TO_JSVAL(chrome->show_bottom_status_bar); - break; - case JSBAR_SCROLL: - *vp = BOOLEAN_TO_JSVAL(chrome->show_scrollbar); - break; - } - XP_FREE(chrome); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -bar_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSBar * bar; - MWContext *context; - JSBool show; - Chrome *chrome; - - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) - return JS_TRUE; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - if (JSVAL_TO_INT(id) != BAR_VISIBLE) - return JS_TRUE; - - bar = JS_GetInstancePrivate(cx, obj, &lm_bar_class, NULL); - if (!bar) - return JS_TRUE; - context = bar->decoder->window_context; - if (!context) - return JS_TRUE; - - if (!JS_ValueToBoolean(cx, *vp, &show)) - return JS_FALSE; - - chrome = XP_NEW_ZAP(Chrome); - if (!chrome) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - ET_PostQueryChrome(context, chrome); - - switch (bar->bartype) { - case JSBAR_MENU: - chrome->show_menu = show; - if (show) - chrome->disable_commands = FALSE; - break; - case JSBAR_TOOL: - chrome->show_button_bar = show; - break; - case JSBAR_LOCATION: - chrome->show_url_bar = show; - break; - case JSBAR_PERSONAL: - chrome->show_directory_buttons = show; - break; - case JSBAR_STATUS: - chrome->show_bottom_status_bar = show; - break; - case JSBAR_SCROLL: - chrome->show_scrollbar = show; - break; - } - - ET_PostUpdateChrome(context, chrome); - XP_FREE(chrome); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -bar_finalize(JSContext *cx, JSObject *obj) -{ - JSBar *bar; - - bar = JS_GetPrivate(cx, obj); - if (!bar) - return; - DROP_BACK_COUNT(bar->decoder); - JS_free(cx, bar); -} - -JSClass lm_bar_class = { - "Bar", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, bar_getProperty, bar_setProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, bar_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Bar(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -static JSBool -define_bar(JSContext *cx, MochaDecoder *decoder, JSBarType type) -{ - JSBar *bar; - JSObject *obj; - - if (!(bar = JS_malloc(cx, sizeof(JSBar)))) - return JS_FALSE; - - obj = JS_DefineObject(cx, decoder->window_object, barnames[type], - &lm_bar_class, decoder->bar_prototype, - JSPROP_ENUMERATE|JSPROP_READONLY); - if (!obj || !JS_SetPrivate(cx, obj, bar)) { - JS_free(cx, bar); - return JS_FALSE; - } - - bar->decoder = HOLD_BACK_COUNT(decoder); - bar->bartype = type; - return JS_TRUE; -} - -JSBool -lm_DefineBarClasses(MochaDecoder *decoder) -{ - JSContext *cx; - JSObject *prototype; - - cx = decoder->js_context; - prototype = JS_InitClass(cx, decoder->window_object, NULL, &lm_bar_class, - Bar, 0, bar_props, NULL, NULL, NULL); - if (!prototype) - return JS_FALSE; - decoder->bar_prototype = prototype; - return JS_TRUE; -} - -JSBool -lm_ResolveBar(JSContext *cx, MochaDecoder *decoder, const char *name) -{ -#define FROB0(BAR, EXTRA) { \ - if (XP_STRCMP(name, barnames[BAR]) == 0) { \ - if (!define_bar(cx, decoder, BAR)) \ - return JS_FALSE; \ - EXTRA; \ - return JS_TRUE; \ - } \ -} -#define FROB(BAR) FROB0(BAR, (void)0) -#define FROB2(BAR, EXTRA) FROB0(BAR, EXTRA) - - FROB(JSBAR_MENU); - FROB(JSBAR_TOOL); - FROB(JSBAR_LOCATION); - FROB2(JSBAR_PERSONAL, - if (!JS_AliasProperty(cx, decoder->window_object, - barnames[JSBAR_PERSONAL], - "directories")) { - return JS_FALSE; - }) - FROB(JSBAR_STATUS); - FROB(JSBAR_SCROLL); - - return JS_TRUE; - -#undef FROB -} diff --git a/mozilla/lib/libmocha/lm_bkgrd.c b/mozilla/lib/libmocha/lm_bkgrd.c deleted file mode 100644 index afd0955b1d4..00000000000 --- a/mozilla/lib/libmocha/lm_bkgrd.c +++ /dev/null @@ -1,683 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * lm_bkgrd.c - * - * Reflects ContinuousUpdate (or background download) methods - * into JavaScript object. - * - */ - -#include "nspr.h" -#include "plstr.h" -#include "lm.h" -#include "autoupdt.h" -#include "prtypes.h" - - -typedef struct JSBackground { - char *id; - char *url; - AutoUpdateConnnection bg_connect; -} JSBackground; - -enum background_enum { - BACKGROUND_STATE = -1, - BACKGROUND_ID = -2, - BACKGROUND_URL = -3, - BACKGROUND_FILE_SIZE = -4, - BACKGROUND_CUR_SIZE = -5, - BACKGROUND_DEST_FILE = -6, - BACKGROUND_BYTES_RANGE = -7, - BACKGROUND_INTERVAL = -8, - BACKGROUND_ETA = -9, - BACKGROUND_ERROR_MESSAGE = -10 -}; - -static JSPropertySpec background_props[] = { - {"state", BACKGROUND_STATE, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"id", BACKGROUND_ID, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"url", BACKGROUND_URL, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"file_size", BACKGROUND_FILE_SIZE, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"cur_size", BACKGROUND_CUR_SIZE, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"dest_file", BACKGROUND_DEST_FILE, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"bytes_range", BACKGROUND_BYTES_RANGE, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"interval", BACKGROUND_INTERVAL, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"eta", BACKGROUND_ETA, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"error", BACKGROUND_ERROR_MESSAGE, JSPROP_ENUMERATE|JSPROP_READONLY}, - {0} -}; - -static JSConstDoubleSpec background_constants[] = { - {BACKGROUND_NEW , "NEW"}, - {BACKGROUND_ERROR , "ERROR"}, - {BACKGROUND_COMPLETE , "COMPLETE"}, - {BACKGROUND_SUSPEND , "SUSPEND"}, - {BACKGROUND_DOWN_LOADING , "DOWN_LOADING"}, - {BACKGROUND_DOWN_LOADING_NOW , "DOWN_LOADING_ALL_BYTES_NOW"}, - {BACKGROUND_DONE , "DONE"}, - {0, 0} -}; - - -extern JSClass lm_background_class; - -PR_STATIC_CALLBACK(JSBool) -background_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp); - -PR_STATIC_CALLBACK(void) -background_free(JSBackground *bg); - -PR_STATIC_CALLBACK(void) -background_finalize(JSContext *cx, JSObject *obj); - -PR_STATIC_CALLBACK(JSBool) -background_stop(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval); - -PR_STATIC_CALLBACK(JSBool) -background_start(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval); - -PR_STATIC_CALLBACK(JSBool) -background_done(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval); - -PR_STATIC_CALLBACK(JSBool) -background_downloadNow(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval); - -PR_STATIC_CALLBACK(JSBool) -background_abort(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval); - -PR_STATIC_CALLBACK(JSBool) -background_toString(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval); - -static JSBool -background_constructor(JSContext *cx, JSObject *obj, - char *id, char *url, int32 file_size, - char* script); - -PR_STATIC_CALLBACK(JSBool) -Background(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval); - -static JSObject * -lm_NewBackgroundObject(JSContext* cx, char* id, char* url, int32 file_size, char* script); - -static JSObject * -lm_GetCurrentBackgroundObject(JSContext* cx, char* id); - - -PR_STATIC_CALLBACK(JSBool) -background_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSBackground *bg; - JSString *str; - jsint slot; - AutoUpdateConnnection bg_connect; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - bg = JS_GetInstancePrivate(cx, obj, &lm_background_class, NULL); - if (!bg) - return JS_TRUE; - - /* - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - */ - - bg_connect = bg->bg_connect; - if (!bg_connect) - return JS_TRUE; - - str = JSVAL_TO_STRING(JS_GetEmptyStringValue(cx)); - - switch (slot) { - case BACKGROUND_STATE: - { - BackgroundState state = AutoUpdate_GetState(bg_connect); - *vp = INT_TO_JSVAL(state); - } - return JS_TRUE; - - - case BACKGROUND_ID: - if (bg->id) { - str = JS_NewStringCopyZ(cx, bg->id); - } - break; - - case BACKGROUND_URL: - if (bg->url) { - str = JS_NewStringCopyZ(cx, bg->url); - } - break; - - case BACKGROUND_FILE_SIZE: - { - int32 file_size = AutoUpdate_GetFileSize(bg_connect); - *vp = INT_TO_JSVAL(file_size); - } - return JS_TRUE; - - case BACKGROUND_CUR_SIZE: - { - int32 downloaded = AutoUpdate_GetCurrentFileSize(bg_connect); - *vp = INT_TO_JSVAL(downloaded); - } - return JS_TRUE; - - case BACKGROUND_DEST_FILE: - { - const char* dest_file = AutoUpdate_GetDestFile(bg_connect); - if (dest_file) - str = JS_NewStringCopyZ(cx, dest_file); - } - break; - - case BACKGROUND_BYTES_RANGE: - { - int32 range = AutoUpdate_GetBytesRange(bg_connect); - *vp = INT_TO_JSVAL(range); - } - return JS_TRUE; - - case BACKGROUND_INTERVAL: - { - uint32 interval = AutoUpdate_GetInterval(bg_connect); - *vp = INT_TO_JSVAL(interval); - } - return JS_TRUE; - - case BACKGROUND_ETA: - { - int32 cur_size = AutoUpdate_GetCurrentFileSize(bg_connect); - int32 file_size = AutoUpdate_GetFileSize(bg_connect); - int32 range = AutoUpdate_GetBytesRange(bg_connect); - int32 interval = AutoUpdate_GetInterval(bg_connect); - int32 remaining_bytes = file_size - cur_size; - int32 eta = (interval/range) * remaining_bytes; - *vp = INT_TO_JSVAL(eta); - } - return JS_TRUE; - - case BACKGROUND_ERROR_MESSAGE: - { - const char* msg = AutoUpdate_GetErrorMessage(bg_connect); - if (msg) - str = JS_NewStringCopyZ(cx, msg); - } - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - return JS_TRUE; - } - break; - } - - /* Common tail code for string-type properties. */ - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -background_free(JSBackground *bg) -{ - if (!bg) - return; - - /* Autoupdate_Done(bg->bg_connect); */ - bg->bg_connect = NULL; - PR_FREEIF(bg->id); - bg->id = NULL; - PR_FREEIF(bg->url); - bg->url = NULL; -} - -PR_STATIC_CALLBACK(void) -background_finalize(JSContext *cx, JSObject *obj) -{ - JSBackground *bg; - - bg = JS_GetPrivate(cx, obj); - if (!bg) - return; - background_free(bg); - - JS_free(cx, bg); -} - -PR_STATIC_CALLBACK(JSBool) -background_stop(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval) -{ - JSBackground *bg; - - bg = JS_GetInstancePrivate(cx, obj, &lm_background_class, argv); - if (!bg) - return JS_FALSE; - - /* - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - */ - - Autoupdate_Suspend(bg->bg_connect); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -background_start(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval) -{ - JSBackground *bg; - - bg = JS_GetInstancePrivate(cx, obj, &lm_background_class, argv); - if (!bg) - return JS_FALSE; - - /* - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - */ - - Autoupdate_Resume(bg->bg_connect); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -background_done(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval) -{ - JSBackground *bg; - - bg = JS_GetInstancePrivate(cx, obj, &lm_background_class, argv); - if (!bg) - return JS_FALSE; - - /* - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - */ - - Autoupdate_Done(bg->bg_connect); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -background_downloadNow(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval) -{ - JSBackground *bg; - - bg = JS_GetInstancePrivate(cx, obj, &lm_background_class, argv); - if (!bg) - return JS_FALSE; - - /* - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - */ - - Autoupdate_DownloadNow(bg->bg_connect); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -background_abort(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval) -{ - JSBackground *bg; - - bg = JS_GetInstancePrivate(cx, obj, &lm_background_class, argv); - if (!bg) - return JS_FALSE; - - /* - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - */ - - Autoupdate_Abort(bg->bg_connect); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -background_toString(JSContext *cx, JSObject *obj, - uintN argc, jsval *argv, jsval *rval) -{ - JSBackground *bg; - char *bytes; - JSString *str; - - bg = JS_GetInstancePrivate(cx, obj, &lm_background_class, argv); - if (!bg) - return JS_FALSE; - - /* - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - */ - - bytes = 0; - StrAllocCopy(bytes, "<TITLE>Background download details</TITLE>" - "<TABLE BORDER=0 ALIGN=center VALIGN=top HSPACE=8>"); - StrAllocCat(bytes, "<TR><TD VALIGN=top><STRONG>"); - /* i18n problem */ - /* I believe this part is broken for I18N. Particular after we change the he->title to UTF8 */ - /* force the output HTML to display as in UTF8 will fix it. */ - StrAllocCat(bytes, bg->id); - StrAllocCat(bytes, "</STRONG></TD><TD>&nbsp;</TD>" - "<TD VALIGN=top><A HREF=\""); - StrAllocCat(bytes, bg->url); - StrAllocCat(bytes, "\">"); - StrAllocCat(bytes, bg->url); - StrAllocCat(bytes, "</A></TD></TR>"); - StrAllocCat(bytes, "</TABLE>"); - if (!bytes) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - - str = JS_NewString(cx, bytes, XP_STRLEN(bytes)); - if (!str) - return JS_FALSE; - *rval = STRING_TO_JSVAL(str); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -background_getInfo(JSContext *cx, JSObject *obj, uintN argc, - jsval *argv, jsval *rval) -{ - JSObject *bg_obj; - JSString *str; - char *id; - - if (argc == 0 || !JSVAL_IS_STRING(argv[0])) { - JS_ReportError(cx, "String argument expected for getInfo."); - return JS_FALSE; - } - - str = JS_ValueToString(cx, argv[0]); - if (!str) - return JS_FALSE; - - id = JS_GetStringBytes(str); - if (id == NULL) - return JS_FALSE; - - bg_obj = lm_GetCurrentBackgroundObject(cx, id); - if (!bg_obj) - return JS_TRUE; - *rval = OBJECT_TO_JSVAL(bg_obj); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -background_addPending(JSContext *cx, JSObject *obj, uintN argc, - jsval *argv, jsval *rval) -{ - JSString *str; - char *id; - char* url; - char* script; - int32 file_size; - JSObject *bg_obj; - - if (argc == 0 || !JSVAL_IS_STRING(argv[0])) { - JS_ReportError(cx, "String argument expected for addPending."); - return JS_FALSE; - } - - str = JS_ValueToString(cx, argv[0]); - if (!str) - return JS_FALSE; - - id = JS_GetStringBytes(str); - if (id == NULL) - return JS_FALSE; - - str = JS_ValueToString(cx, argv[1]); - if (!str) - return JS_FALSE; - url = JS_GetStringBytes(str); - - if (!JS_ValueToInt32(cx, argv[2], &file_size)) - return JS_FALSE; - - str = JS_ValueToString(cx, argv[3]); - if (!str) - return JS_FALSE; - script = JS_GetStringBytes(str); - - bg_obj = lm_NewBackgroundObject(cx, id, url, file_size, script); - if (!bg_obj) - return JS_FALSE; - *rval = OBJECT_TO_JSVAL(bg_obj); - return JS_TRUE; -} - - -PR_STATIC_CALLBACK(JSBool) -background_getPending(JSContext *cx, JSObject *obj, uintN argc, - jsval *argv, jsval *rval) -{ - JSObject *bg_obj; - - /* XXX: We need to get a list of bg objects. Or we need to - * get a list of id's and build an array of objects from - * that list - */ - bg_obj = lm_GetCurrentBackgroundObject(cx, NULL); - if (!bg_obj) - return JS_TRUE; - *rval = OBJECT_TO_JSVAL(bg_obj); - return JS_TRUE; -} - - -static JSBool -background_constructor(JSContext *cx, JSObject *obj, - char *id, char *url, int32 file_size, - char* script) -{ - JSBackground *bg; - MWContext* someRandomContext = XP_FindSomeContext(); - - if (!(bg = JS_malloc(cx, sizeof(JSBackground)))) - return JS_FALSE; - XP_BZERO(bg, sizeof *bg); - - bg->bg_connect = AutoUpdate_Setup(someRandomContext, id, url, file_size, script); - bg->id = PL_strdup(id); - bg->url = PL_strdup(url); - - if (!JS_SetPrivate(cx, obj, bg)) { - background_free(bg); - JS_free(cx, bg); - return JS_FALSE; - } - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -Background(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - JSString *str; - char *id; - char *url; - char *script; - int32 file_size; - - if ((!obj) || (argc != 4)) - return JS_FALSE; - - str = JS_ValueToString(cx, argv[0]); - if (!str) - return JS_FALSE; - id = JS_GetStringBytes(str); - - str = JS_ValueToString(cx, argv[1]); - if (!str) - return JS_FALSE; - url = JS_GetStringBytes(str); - - if (!JS_ValueToInt32(cx, argv[2], &file_size)) - return JS_FALSE; - - str = JS_ValueToString(cx, argv[3]); - if (!str) - return JS_FALSE; - script = JS_GetStringBytes(str); - - return background_constructor(cx, obj, id, url, file_size, script); -} - -/* - * Initialize the class - */ -JSClass lm_background_class = { - "Background", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, background_getProperty, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, background_finalize -}; - -static JSFunctionSpec background_methods[] = { - {"stop", background_stop, 0}, - {"start", background_start, 0}, - {"done", background_done, 0}, - {"downloadNow", background_downloadNow, 0}, - {"abort", background_abort, 0}, - {lm_toString_str, background_toString, 1}, - {0} -}; - -static JSFunctionSpec background_static_methods[] = { - {"getInfo", background_getInfo, 1}, - {"addPending", background_addPending, 1}, - {"getPending", background_getPending, 0}, - {0} -}; - -/* XXX: The following is a hack. We shouldn't have to store stuff in globals */ -/* They are used by the static methods */ -static JSObject *gPrototype = NULL; /* Using this as a class prototype */ - /* and a signal if class has been loaded */ - -static MochaDecoder *gDecoder=NULL; - -JSBool -lm_InitBackgroundClass(MochaDecoder *decoder) -{ - JSObject *ctor; - JSObject *obj; - JSContext *cx; - JSObject *prototype; - - obj = decoder->background_update; - if (obj) { - /* XXX: The following is not thread safe */ - gDecoder = decoder; - gPrototype = obj; - return JS_TRUE; - } - cx = decoder->js_context; - - prototype = JS_InitClass(cx, decoder->window_object, NULL, - &lm_background_class, Background, 3, - background_props, background_methods, - NULL, background_static_methods); - if (!prototype || !(ctor = JS_GetConstructor(cx, prototype))) - return JS_FALSE; - - if (!JS_DefineConstDoubles(cx, ctor, background_constants)) - return JS_FALSE; - - /* XXX: Should we hold a reference to prototype and decoder objects?? */ - decoder->background_update = gPrototype = prototype; - gDecoder = decoder; - return JS_TRUE; -} - -static JSObject * -lm_NewBackgroundObject(JSContext* cx, char* id, char* url, int32 file_size, char* script) -{ - JSObject *obj; - - obj = JS_NewObject(cx, &lm_background_class, gPrototype, - gDecoder->window_object); - if (!obj) - return NULL; - - if (!background_constructor(cx, obj, id, url, file_size, script)) - return NULL; - - return obj; -} - -static JSObject * -lm_GetCurrentBackgroundObject(JSContext* cx, char* id) -{ - JSObject *obj; - JSBackground *bg; - AutoUpdateConnnection bg_connect; - - bg_connect = AutoUpdate_GetPending(id); - if (!bg_connect) - return NULL; - obj = JS_NewObject(cx, &lm_background_class, gPrototype, - gDecoder->window_object); - if (!obj) - return NULL; - - if (!(bg = JS_malloc(cx, sizeof(JSBackground)))) - return NULL; - XP_BZERO(bg, sizeof *bg); - - bg->bg_connect = bg_connect; - bg->id = PL_strdup(AutoUpdate_GetID(bg->bg_connect)); - bg->url = PL_strdup(AutoUpdate_GetURL(bg->bg_connect)); - - if (!JS_SetPrivate(cx, obj, bg)) { - background_free(bg); - JS_free(cx, bg); - return NULL; - } - return obj; -} - diff --git a/mozilla/lib/libmocha/lm_cmpnt.c b/mozilla/lib/libmocha/lm_cmpnt.c deleted file mode 100644 index a863feb6cb3..00000000000 --- a/mozilla/lib/libmocha/lm_cmpnt.c +++ /dev/null @@ -1,679 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - - -/* - * JS reflection of Navigator Components. - * - * Created: Tom Pixley, 4/22/97 - * - */ - -#include "lm.h" -#include "prmem.h" -#include "np.h" -#include "net.h" -#include "fe_proto.h" - -/* - * ----------------------------------------------------------------------- - * - * Data types - * - * ----------------------------------------------------------------------- - */ - -typedef struct JSComponent -{ - MochaDecoder *decoder; - JSObject *obj; - JSString *name; - ETBoolPtrFunc active_callback; - ETVoidPtrFunc startup_callback; -} JSComponent; - -typedef struct JSComponentArray -{ - MochaDecoder *decoder; - JSObject *obj; - jsint length; -} JSComponentArray; - -typedef struct JSPreDefComponent -{ - const char *name; - ETVerifyComponentFunc func; -} JSPreDefComponent; - -static JSPreDefComponent predef_components[] = -{ - {0} -}; - -/* - * ----------------------------------------------------------------------- - * - * Reflection of an installed component. - * - * ----------------------------------------------------------------------- - */ - -enum component_slot -{ - COMPONENT_NAME = -1, - COMPONENT_ACTIVE = -2 -}; - - -static JSPropertySpec component_props[] = -{ - {"name", COMPONENT_NAME, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"active", COMPONENT_ACTIVE, JSPROP_ENUMERATE | JSPROP_READONLY}, - {0} -}; - -extern JSClass lm_component_class; - -PR_STATIC_CALLBACK(JSBool) -component_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSComponent *component; - JSString *str; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - component = JS_GetInstancePrivate(cx, obj, &lm_component_class, NULL); - if (!component) - return JS_TRUE; - - switch (slot) { - case COMPONENT_NAME: - str = component->name; - if (str) - *vp = STRING_TO_JSVAL(str); - else - *vp = JS_GetEmptyStringValue(cx); - break; - - case COMPONENT_ACTIVE: - *vp = JSVAL_FALSE; - if (ET_moz_CallFunctionBool((ETBoolPtrFunc)component->active_callback, NULL)) - *vp = JSVAL_TRUE; - break; - - default: - break; - } - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -component_mozilla_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - char *name, *type_str, *get_str; - jsval type, func; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - - name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - type_str = JS_malloc(cx, XP_STRLEN(lm_typePrefix_str) + XP_STRLEN(name) + 1); - get_str = JS_malloc(cx, XP_STRLEN(lm_getPrefix_str) + XP_STRLEN(name) + 1); - if (!type_str || !get_str) - return JS_TRUE; - - XP_STRCPY(type_str, lm_typePrefix_str); - XP_STRCAT(type_str, name); - XP_STRCPY(get_str, lm_getPrefix_str); - XP_STRCAT(get_str, name); - - if (!JS_GetProperty(cx, obj, type_str, &type) || - !JSVAL_IS_INT(type) || - !JS_GetProperty(cx, obj, get_str, &func)) - return JS_TRUE; - - JS_free(cx, type_str); - JS_free(cx, get_str); - - switch(JSVAL_TO_INT(type)) { - case ARGTYPE_INT32: - *vp = INT_TO_JSVAL((int32)ET_moz_CompGetterFunction((ETCompPropGetterFunc)JSVAL_TO_INT(func), name)); - break; - case ARGTYPE_BOOL: - *vp = BOOLEAN_TO_JSVAL((JSBool)ET_moz_CompGetterFunction((ETCompPropGetterFunc)JSVAL_TO_INT(func), name)); - break; - case ARGTYPE_STRING: - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, - (char*)ET_moz_CompGetterFunction((ETCompPropGetterFunc)JSVAL_TO_INT(func), name))); - break; - } - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -component_mozilla_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - char *name, *type_str, *set_str, *prop_val; - jsval type, func; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - - name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - type_str = JS_malloc(cx, XP_STRLEN(lm_typePrefix_str) + XP_STRLEN(name) + 1); - set_str = JS_malloc(cx, XP_STRLEN(lm_setPrefix_str) + XP_STRLEN(name) + 1); - if (!type_str || !set_str) - return JS_TRUE; - - XP_STRCPY(type_str, lm_typePrefix_str); - XP_STRCAT(type_str, name); - XP_STRCPY(set_str, lm_setPrefix_str); - XP_STRCAT(set_str, name); - if (!JS_GetProperty(cx, obj, type_str, &type) || - !JSVAL_IS_INT(type) || - !JS_GetProperty(cx, obj, set_str, &func)) - return JS_TRUE; - - JS_free(cx, type_str); - JS_free(cx, set_str); - - switch(JSVAL_TO_INT(type)) { - case ARGTYPE_INT32: - if (JSVAL_IS_INT(*vp)) - ET_moz_CompSetterFunction((ETCompPropSetterFunc)JSVAL_TO_INT(func), name, (void*)JSVAL_TO_INT(*vp)); - break; - case ARGTYPE_BOOL: - if (JSVAL_IS_BOOLEAN(*vp)) - ET_moz_CompSetterFunction((ETCompPropSetterFunc)JSVAL_TO_INT(func), name, (void*)JSVAL_TO_BOOLEAN(*vp)); - break; - case ARGTYPE_STRING: - if (JSVAL_IS_STRING(*vp)) { - prop_val = JS_GetStringBytes(JSVAL_TO_STRING(*vp)); - ET_moz_CompSetterFunction((ETCompPropSetterFunc)JSVAL_TO_INT(func), name, (void*)prop_val); - } - break; - } - - return JS_TRUE; -} - -void -lm_RegisterComponentProp(const char *comp, const char *targetName, - uint8 retType, ETCompPropSetterFunc setter, - ETCompPropGetterFunc getter) -{ - JSContext *cx; - JSObject *arrayObj, *obj; - jsval val; - char *type, *set, *get; - MochaDecoder *cd = LM_GetCrippledDecoder(); - - if (!comp || !targetName || !(cx = cd->js_context)) - return; - - arrayObj = lm_DefineComponents(cd); - if (!arrayObj) - return; - - if (!JS_GetProperty(cx, arrayObj, comp, &val) || - !JSVAL_IS_OBJECT(val)) - return; - - obj = JSVAL_TO_OBJECT(val); - - if (!JS_DefineProperty(cx, obj, targetName, JSVAL_VOID, component_mozilla_getProperty, - component_mozilla_setProperty, 0)) { - } - - type = JS_malloc(cx, XP_STRLEN(lm_typePrefix_str) + XP_STRLEN(targetName) + 1); - if (type) { - XP_STRCPY(type, lm_typePrefix_str); - XP_STRCAT(type, targetName); - if (!JS_DefineProperty(cx, obj, type, - INT_TO_JSVAL((int32)retType), 0, 0, JSPROP_READONLY)) { - } - JS_free(cx, type); - } - - get = JS_malloc(cx, XP_STRLEN(lm_getPrefix_str) + XP_STRLEN(targetName) + 1); - if (get) { - XP_STRCPY(get, lm_getPrefix_str); - XP_STRCAT(get, targetName); - if (!JS_DefineProperty(cx, obj, get, - INT_TO_JSVAL(getter), 0, 0, JSPROP_READONLY)) { - } - JS_free(cx, get); - } - - set = JS_malloc(cx, XP_STRLEN(lm_setPrefix_str) + XP_STRLEN(targetName) + 1); - if (set) { - XP_STRCPY(set, lm_setPrefix_str); - XP_STRCAT(set, targetName); - if (!JS_DefineProperty(cx, obj, set, - INT_TO_JSVAL(setter), 0, 0, JSPROP_READONLY)) { - } - JS_free(cx, set); - } -} - -PR_STATIC_CALLBACK(JSBool) -component_resolve_name(JSContext *cx, JSObject *obj, jsval id) -{ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -component_finalize(JSContext *cx, JSObject *obj) -{ - JSComponent* component; - - component = JS_GetPrivate(cx, obj); - if (!component) - return; - JS_UnlockGCThing(cx, component->name); - DROP_BACK_COUNT(component->decoder); - JS_free(cx, component); -} - -JSClass lm_component_class = -{ - "Component", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - component_getProperty, component_getProperty, JS_EnumerateStub, - component_resolve_name, JS_ConvertStub, component_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -component_activate(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - JSComponent *component; - - component = JS_GetInstancePrivate(cx, obj, &lm_component_class, argv); - if (!component) - return JS_FALSE; - - ET_moz_CallFunctionAsync((ETVoidPtrFunc)component->startup_callback, NULL); - - return JS_TRUE; -} - -static JSFunctionSpec component_methods[] = -{ - {"activate", component_activate, 0}, - {0} -}; - -PR_STATIC_CALLBACK(JSBool) -component_mozilla_method_stub(JSContext *cx, JSObject *obj, uint argc, - jsval *argv, jsval *rval) -{ - JSFunction *func; - JSObject *func_obj; - jsval type, native; - uint i; - JSCompArg *comp_argv; - - func = JS_ValueToFunction(cx, argv[-2]); - func_obj = JS_GetFunctionObject(func); - - if (!JS_GetProperty(cx, func_obj, lm_typePrefix_str, &type) || - !JSVAL_IS_INT(type) || - !JS_GetProperty(cx, func_obj, lm_methodPrefix_str, &native) || - !(comp_argv = JS_malloc(cx, argc * sizeof(JSCompArg)))) - return JS_TRUE; - - for (i=0; i<argc; i++) { - if (JSVAL_IS_INT(argv[i])) { - comp_argv[i].type = ARGTYPE_INT32; - comp_argv[i].value.intArg = JSVAL_TO_INT(argv[i]); - } - else if (JSVAL_IS_BOOLEAN(argv[i])) { - comp_argv[i].type = ARGTYPE_BOOL; - comp_argv[i].value.boolArg = JSVAL_TO_BOOLEAN(argv[i]); - } - else if (JSVAL_IS_STRING(argv[i])) { - comp_argv[i].type = ARGTYPE_STRING; - comp_argv[i].value.stringArg = JS_GetStringBytes(JSVAL_TO_STRING(argv[i])); - } - else { - comp_argv[i].type = ARGTYPE_NULL; - comp_argv[i].value.intArg = 0; - } - } - - switch(JSVAL_TO_INT(type)) { - case ARGTYPE_NULL: - ET_moz_CompMethodFunction((ETCompMethodFunc)JSVAL_TO_INT(native), argc, NULL); - *rval = 0; - break; - case ARGTYPE_INT32: - *rval = INT_TO_JSVAL((int32)ET_moz_CompMethodFunction((ETCompMethodFunc)JSVAL_TO_INT(native), argc, comp_argv)); - break; - case ARGTYPE_BOOL: - *rval = BOOLEAN_TO_JSVAL((JSBool)ET_moz_CompMethodFunction((ETCompMethodFunc)JSVAL_TO_INT(native), argc, comp_argv)); - break; - case ARGTYPE_STRING: - *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, - (char*)ET_moz_CompMethodFunction((ETCompMethodFunc)JSVAL_TO_INT(native), argc, comp_argv))); - break; - } - return JS_TRUE; -} - -void -lm_RegisterComponentMethod(const char *comp, const char *targetName, - uint8 retType, ETCompMethodFunc method, int32 argc) -{ - JSContext *cx; - JSObject *arrayObj, *obj, *func_obj; - JSFunction *func; - jsval val; - MochaDecoder *cd = LM_GetCrippledDecoder(); - - if (!comp || !targetName || !(cx = cd->js_context)) - return; - - arrayObj = lm_DefineComponents(cd); - if (!arrayObj) - return; - - if (!JS_GetProperty(cx, arrayObj, comp, &val) || - !JSVAL_IS_OBJECT(val)) - return; - - obj = JSVAL_TO_OBJECT(val); - - if (!(func = JS_DefineFunction(cx, obj, targetName, component_mozilla_method_stub, argc, 0))){ - } - - func_obj = JS_GetFunctionObject(func); - - if (!JS_DefineProperty(cx, func_obj, lm_typePrefix_str, - INT_TO_JSVAL((int32)retType), 0, 0, JSPROP_READONLY)) - return; - if (!JS_DefineProperty(cx, func_obj, lm_methodPrefix_str, - INT_TO_JSVAL(method), 0, 0, JSPROP_READONLY)) - return; - if (!JS_DefineProperty(cx, func_obj, lm_methodArgc_str, - INT_TO_JSVAL(argc), 0, 0, JSPROP_READONLY)) - return; -} - -/* Constructor method for a JSComponent object */ -static JSComponent* -component_create_self(JSContext *cx, MochaDecoder* decoder, JSComponent *component, const char *name) -{ - JSObject *obj; - - /* JSComponent may be malloc'd previous to this to make it easier - * to fill in the struct with data from the Mozilla thread - */ - if (!component) { - component = JS_malloc(cx, sizeof(JSComponent)); - if (!component) - return NULL; - } - - obj = JS_NewObject(cx, &lm_component_class, NULL, NULL); - if (!obj || !JS_SetPrivate(cx, obj, component)) { - JS_free(cx, component); - return NULL; - } - - if (!JS_DefineProperties(cx, obj, component_props)) - return NULL; - - if (!JS_DefineFunctions(cx, obj, component_methods)) - return NULL; - - /* Fill out static property fields */ - component->decoder = HOLD_BACK_COUNT(decoder); - component->obj = obj; - - component->name = JS_NewStringCopyZ(cx, name); - if (!component->name || !JS_LockGCThing(cx, component->name)) - return NULL; - - return component; -} - - -/* - * ----------------------------------------------------------------------- - * - * Reflection of the list of installed components. - * The only static property is the array length; - * the array elements (JSComponents) are added - * lazily when referenced. - * - * ----------------------------------------------------------------------- - */ - -enum componentarray_slot -{ - COMPONENTLIST_ARRAY_LENGTH = -1 -}; - -static JSPropertySpec componentarray_props[] = -{ - {"length", COMPONENTLIST_ARRAY_LENGTH, JSPROP_READONLY}, - {0} -}; - -/* Look up the component for the specified slot of the plug-in list */ -static JSComponent* -componentarray_create_component(JSContext *cx, JSComponentArray *array, - JSComponent *component, const char *targetName, jsint targetSlot) -{ - component = component_create_self(cx, array->decoder, component, targetName); - if (component) { - char *name; - jsval val; - - name = JS_GetStringBytes(component->name); - val = OBJECT_TO_JSVAL(component->obj); - JS_DefineProperty(cx, array->obj, name, val, NULL, NULL, - JSPROP_ENUMERATE); - JS_AliasElement(cx, array->obj, name, targetSlot); - array->length++; - return component; - } - return NULL; -} - -extern JSClass lm_component_array_class; - -void -lm_RegisterComponent(const char *targetName, ETBoolPtrFunc active_callback, - ETVoidPtrFunc startup_callback) -{ - JSContext *cx; - JSObject *arrayObj; - JSComponentArray *array; - JSComponent *component; - jsval val; - MochaDecoder *cd = LM_GetCrippledDecoder(); - - if (!(cx = cd->js_context) || !targetName) - return; - - arrayObj = lm_DefineComponents(cd); - if (!arrayObj) - return; - - array = JS_GetInstancePrivate(cx, arrayObj, &lm_component_array_class, NULL); - if (!array) - return; - - if (JS_GetProperty(cx, arrayObj, targetName, &val) && JSVAL_IS_OBJECT(val)) { - /* We already have a component by this name. Update the active and - * startup callback funcs in case ours are out of date - */ - component = JS_GetPrivate(cx, JSVAL_TO_OBJECT(val)); - if (!component) - return; - - component->active_callback = active_callback; - component->startup_callback = startup_callback; - - return; - } - - component = JS_malloc(cx, sizeof(JSComponent)); - if (!component) - return; - - component->active_callback = active_callback; - component->startup_callback = startup_callback; - - componentarray_create_component(cx, array, component, targetName, array->length); -} - - -PR_STATIC_CALLBACK(JSBool) -componentarray_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSComponentArray *array; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - array = JS_GetInstancePrivate(cx, obj, &lm_component_array_class, NULL); - if (!array) - return JS_TRUE; - - switch (slot) { - case COMPONENTLIST_ARRAY_LENGTH: - *vp = INT_TO_JSVAL(array->length); - break; - - default: - /* Don't mess with a user-defined property. */ - if (slot >= 0 && slot < (jsint) array->length) { - - /* Search for an existing JSComponent for this slot */ - JSObject* componentObj = NULL; - jsval val = *vp; - - if (JSVAL_IS_OBJECT(val)) { - componentObj = JSVAL_TO_OBJECT(val); - } - else { - JSComponent* component; - component = componentarray_create_component(cx, array, NULL, - NULL, slot); - if (component) - componentObj = component->obj; - } - - *vp = OBJECT_TO_JSVAL(componentObj); - break; - } - } - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -componentarray_finalize(JSContext *cx, JSObject *obj) -{ - JSComponentArray* array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -JSClass lm_component_array_class = -{ - "ComponentArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - componentarray_getProperty, componentarray_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, componentarray_finalize -}; - - -JSObject* -lm_DefineComponents(MochaDecoder *decoder) -{ - JSObject *obj; - JSComponentArray *array; - JSContext *cx = decoder->js_context; - JSPreDefComponent def_comps; - JSComponent *component; - jsint slot; - - obj = decoder->components; - if (obj) - return obj; - - array = JS_malloc(cx, sizeof(JSComponentArray)); - if (!array) - return NULL; - XP_BZERO(array, sizeof *array); - - obj = JS_NewObject(cx, &lm_component_array_class, NULL, - decoder->window_object); - if (!obj || !JS_SetPrivate(cx, obj, array)) { - JS_free(cx, array); - return NULL; - } - if (!JS_DefineProperties(cx, obj, componentarray_props)) - return NULL; - - array->decoder = HOLD_BACK_COUNT(decoder); - array->obj = obj; - - /* Components can be added dynamically but some are predefined */ - slot = 0; - array->length = 0; - def_comps = predef_components[slot]; - while (def_comps.name) { - component = JS_malloc(cx, sizeof(JSComponent)); - if (!component) - return NULL; - - if (ET_moz_VerifyComponentFunction(def_comps.func, &(component->active_callback), - &(component->startup_callback))) { - componentarray_create_component(cx, array, component, def_comps.name, array->length); - } - else { - /*Component call failed somewhere.*/ - JS_free(cx, component); - } - def_comps = predef_components[++slot]; - } - return obj; -} diff --git a/mozilla/lib/libmocha/lm_dial.c b/mozilla/lib/libmocha/lm_dial.c deleted file mode 100644 index 118722e0576..00000000000 --- a/mozilla/lib/libmocha/lm_dial.c +++ /dev/null @@ -1,509 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* JS reflection of the dialer stack - 8/24/98 -*/ - -#include "lm.h" -#include "prmem.h" - -typedef struct JSDialer -{ - JSObject* obj; - void* pstub; -} JSDialer; - -/* The following definitions need to be kept synchronized with the -values the MUC DLL accepts, currently, there's no universal header -containing them, but you can look in ns/cmd/dialup/win/muc for -the code that implements MUC, and you can reference also -ns/cmd/winfe/mucproc.h for front-end code that references MUC - -There should probably be an xp muc(pub).h or somesuch that contains -a universal MUC API. - -*/ -enum -{ - kGetPluginVersion, - kSelectAcctConfig, - kSelectModemConfig, - kSelectDialOnDemand, - kConfigureDialer, - kConnect, - kHangup, - kEditEntry, - kDeleteEntry, - kRenameEntry, - kMonitor, -}; - -#ifdef XP_WIN -typedef long (STDAPICALLTYPE *FARPEFUNC)( - long selectorCode, - void* paramBlock, - void* returnData ); - -jsint CallMuc( JSDialer* dialer, long selector, void* configData, void* returnData ) -{ - FARPEFUNC mucFunc; - jsint error = 0; - - mucFunc = (FARPEFUNC)dialer->pstub; - if ( !mucFunc ) - return -1; - - error = (jsint)( *mucFunc )( selector, configData, NULL ); - return error; -} -#else -/* provide an empty prototype until we have Unix/Mac support */ -jsint CallMuc( JSDialer*, long, void*, void* ) { } -#endif - - - - -enum dialer_slot -{ - PRIVATE_STUB = -1, -}; - -static JSPropertySpec dialer_props[] = -{ - { "privateStub", PRIVATE_STUB, JSPROP_READONLY }, - {0} -}; - -extern JSClass lm_dialer_class; - -JSBool PR_CALLBACK -dialer_getProperty( JSContext* cx, JSObject* obj, jsval id, jsval* vp) -{ - JSDialer* dialer; - enum dialer_slot dialer_slot; - JSString* str = NULL; - jsint slot; - - *vp = JS_GetEmptyStringValue( cx ); - - if ( !JSVAL_IS_INT(id) ) - return JS_TRUE; - - slot = JSVAL_TO_INT( id ); - dialer = JS_GetInstancePrivate( cx, obj, &lm_dialer_class, NULL); - - if ( !dialer ) - return JS_TRUE; - - dialer_slot = slot; - switch ( dialer_slot ) - { - default: - return JS_TRUE; - } - - if ( str ) - *vp = STRING_TO_JSVAL( str ); - return JS_TRUE; -} - -JSBool PR_CALLBACK -dialer_enumerate( JSContext* cx, JSObject* obj ) -{ - return JS_TRUE; -} - -void PR_CALLBACK -dialer_finalize( JSContext* cx, JSObject* obj ) -{ - JSDialer* dialer; - - dialer = JS_GetPrivate( cx, obj ); - if ( !dialer ) - return; - - XP_DELETE( dialer ); -} - -JSBool PR_CALLBACK -dialer_toString( JSContext* cx, JSObject* obj, uint argc, jsval* argv, jsval* rval ) -{ - JSString* str; - - str = JS_NewStringCopyZ( cx, "[object Dialer]" ); - if ( !str ) - return JS_FALSE; - - *rval = STRING_TO_JSVAL( str ); - return JS_TRUE; -} - - -JSClass lm_dialer_class = -{ - "Dialer", - JSCLASS_HAS_PRIVATE, - JS_PropertyStub, - JS_PropertyStub, - dialer_getProperty, - dialer_getProperty, - dialer_enumerate, - JS_ResolveStub, - JS_ConvertStub, - dialer_finalize -}; - -PR_STATIC_CALLBACK(PRBool) -dialer_config( JSContext* cx, JSObject* obj, uint argc, - jsval* argv, jsval* rval ) -{ - JSObject* stringArray; - jsuint count = 0; - jsval temp; - JSString* stringObject; - jsuint stringArrayLength; - PRBool result; - JSDialer* dialer; - jsint error; - - char** configData; - char* buffer; - - if ( !lm_CanAccessTarget( cx, JSTARGET_UNIVERSAL_DIALER_ACCESS ) ) - return JS_FALSE; - - if ( argc != 1 ) - return JS_FALSE; - - if ( !JSVAL_IS_OBJECT( argv[ 0 ] ) ) - return JS_FALSE; - - JS_ValueToObject( cx, argv[ 0 ], &stringArray ); - if ( !JS_IsArrayObject( cx, stringArray ) ) - return JS_FALSE; - - JS_GetArrayLength( cx, stringArray, &stringArrayLength ); - - configData = JS_malloc( cx, ( ( stringArrayLength + 1 ) * sizeof( char* ) ) ); - if ( !configData ) - return JS_FALSE; - - configData[ 0 ] = NULL; - - while ( count < stringArrayLength ) - { - if ( JS_GetElement( cx, stringArray, count, &temp ) != JS_TRUE ) - continue; - - if ( !JSVAL_IS_STRING( temp ) ) - continue; - - stringObject = JS_ValueToString( cx, temp ); - buffer = JS_strdup( cx, JS_GetStringBytes( stringObject ) ); - if ( !buffer ) - { - configData[ count ] = 0; - result = JS_FALSE; - goto fail; - } - - configData[ count ] = buffer; - buffer = NULL; - configData[ ++count ] = NULL; - } - - dialer = JS_GetPrivate( cx, obj ); - if ( !dialer ) - { - result = JS_FALSE; - goto fail; - } - - error = CallMuc( dialer, kConfigureDialer, (void*)configData, (void*)NULL ); - if ( error ) - { - result = JS_FALSE; - goto fail; - } - - result = JS_TRUE; - -fail: - if ( buffer ) - JS_free( cx, buffer ); - count = 0; - while ( configData[ count ] ) - JS_free( cx, configData[ count++ ] ); - return result; -} - -PR_STATIC_CALLBACK(PRBool) -dialer_connect( JSContext* cx, JSObject* obj, uint argc, - jsval* argv, jsval* rval ) -{ - JSDialer* dialer; - jsint error; - - if ( !lm_CanAccessTarget( cx, JSTARGET_UNIVERSAL_DIALER_ACCESS ) ) - return JS_FALSE; - - dialer = JS_GetPrivate( cx, obj ); - if ( !dialer ) - return JS_FALSE; - - error = CallMuc( dialer, kConnect, (void*)NULL, (void*)NULL ); - - if ( error ) - return JS_FALSE; - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -dialer_hangup( JSContext* cx, JSObject* obj, uint argc, - jsval* argv, jsval* rval ) -{ - JSDialer* dialer; - jsint error; - - if ( !lm_CanAccessTarget( cx, JSTARGET_UNIVERSAL_DIALER_ACCESS ) ) - return JS_FALSE; - - dialer = JS_GetPrivate( cx, obj ); - if ( !dialer ) - return JS_FALSE; - - error = CallMuc( dialer, kHangup, (void*)NULL, (void*)NULL ); - if ( error ) - return JS_FALSE; - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -dialer_rename( JSContext* cx, JSObject* obj, uint argc, - jsval* argv, jsval* rval ) -{ - JSDialer* dialer; - JSString* string = NULL; - jsint error; - - struct - { - char* from; - char* to; - } b; - - if ( !lm_CanAccessTarget( cx, JSTARGET_UNIVERSAL_DIALER_ACCESS ) ) - return JS_FALSE; - - dialer = JS_GetPrivate( cx, obj ); - if ( !dialer ) - return JS_FALSE; - - if ( argc != 2 ) - return JS_FALSE; - - if ( !JSVAL_IS_STRING( argv[ 0 ] ) || - !JSVAL_IS_STRING( argv[ 1 ] ) ) - return JS_FALSE; - - string = JS_ValueToString( cx, argv[ 0 ] ); - b.from = JS_strdup( cx, JS_GetStringBytes( string ) ); - string = JS_ValueToString( cx, argv[ 1 ] ); - b.to = JS_strdup( cx, JS_GetStringBytes( string ) ); - - error = CallMuc( dialer, kRenameEntry, (void*)&b, (void*)NULL ); - - if ( error ) - return JS_FALSE; - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -dialer_delete( JSContext* cx, JSObject* obj, uint argc, - jsval* argv, jsval* rval ) -{ - JSDialer* dialer; - JSString* string = NULL; - char* name = NULL; - jsint error; - - if ( !lm_CanAccessTarget( cx, JSTARGET_UNIVERSAL_DIALER_ACCESS ) ) - return JS_FALSE; - - dialer = JS_GetPrivate( cx, obj ); - if ( !dialer ) - return JS_FALSE; - - if ( argc != 1 ) - return JS_FALSE; - - if ( !JSVAL_IS_STRING( argv[ 0 ] ) ) - return JS_FALSE; - - string = JS_ValueToString( cx, argv[ 0 ] ); - name = JS_strdup( cx, JS_GetStringBytes( string ) ); - - error = CallMuc( dialer, kDeleteEntry, (void*)name, (void*)NULL ); - - if ( error ) - return JS_FALSE; - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -dialer_monitor( JSContext* cx, JSObject* obj, uint argc, - jsval* argv, jsval* rval ) -{ - JSDialer* dialer; - JSString* string = NULL; - char* name = NULL; - jsint error; - - if ( !lm_CanAccessTarget( cx, JSTARGET_UNIVERSAL_DIALER_ACCESS ) ) - return JS_FALSE; - - dialer = JS_GetPrivate( cx, obj ); - if ( !dialer ) - return JS_FALSE; - - error = CallMuc( dialer, kMonitor, (void*)NULL, (void*)NULL ); - - if ( error ) - return JS_FALSE; - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -dialer_edit( JSContext* cx, JSObject* obj, uint argc, - jsval* argv, jsval* rval ) -{ - JSDialer* dialer; - JSString* string = NULL; - char* name = NULL; - jsint error; - - if ( !lm_CanAccessTarget( cx, JSTARGET_UNIVERSAL_DIALER_ACCESS ) ) - return JS_FALSE; - - dialer = JS_GetPrivate( cx, obj ); - if ( !dialer ) - return JS_FALSE; - - if ( argc != 1 ) - return JS_FALSE; - - if ( !JSVAL_IS_STRING( argv[ 0 ] ) ) - return JS_FALSE; - - string = JS_ValueToString( cx, argv[ 0 ] ); - name = JS_strdup( cx, JS_GetStringBytes( string ) ); - - error = CallMuc( dialer, kEditEntry, (void*)name, (void*)NULL ); - - if ( error ) - return JS_FALSE; - - return JS_TRUE; -} - -static JSFunctionSpec dialer_methods[] = { - {"configure", dialer_config, 1}, - {"connect", dialer_connect, 1}, - {"hangup", dialer_hangup, 0}, - {"rename", dialer_rename, 2}, - {"delete", dialer_delete, 1}, - {"monitor", dialer_monitor, 0}, - {"edit", dialer_edit, 1}, - {"toString", dialer_toString, 0}, - {0} -}; - -JSBool PR_CALLBACK -Dialer( JSContext* cx, JSObject* obj, uint argc, jsval* argv, jsval* rval ) -{ - return JS_TRUE; -} - -JSDialer* create_dialer( JSContext* cx, JSObject* parent_obj ) -{ - MochaDecoder* decoder; - JSObject* obj; - JSDialer* dialer = NULL; - -#ifdef XP_WIN - HINSTANCE mucDll = NULL; - FARPEFUNC stub = NULL; - long version; -#endif - - decoder = JS_GetPrivate( cx, JS_GetGlobalObject( cx ) ); - dialer = JS_malloc( cx, sizeof *dialer ); - if ( !dialer ) - return NULL; - XP_BZERO( dialer, sizeof *dialer ); - - obj = JS_InitClass( cx, parent_obj, NULL, &lm_dialer_class, - Dialer, 0, dialer_props, dialer_methods, NULL, NULL); - if ( !obj || !JS_SetPrivate( cx, obj, dialer ) ) - { - JS_free( cx, dialer ); - return NULL; - } - - dialer->obj = obj; - - dialer->pstub = NULL; - -#ifdef XP_WIN - mucDll = LoadLibrary( "muc.dll" ); - - /* apparently LoadLibrary can return failure codes instead of a null ptr. */ - if ( !mucDll || mucDll < 0x00000030 ) - goto done; - - stub = (FARPEFUNC)GetProcAddress( mucDll, "PEPluginFunc" ); - if ( !stub ) - goto done; - - ( *stub )( kGetPluginVersion, NULL, &version ); - if ( version >= 0x00010001 ) - dialer->pstub = (void*)stub; -#endif -done: - return dialer; -} - -JSObject* lm_NewDialer( JSContext* cx, JSObject* parent_obj ) -{ - JSDialer* dialer; - - dialer = create_dialer( cx, parent_obj ); - return ( dialer ? dialer->obj : NULL); -} - diff --git a/mozilla/lib/libmocha/lm_doc.c b/mozilla/lib/libmocha/lm_doc.c deleted file mode 100644 index 6627ca6a17e..00000000000 --- a/mozilla/lib/libmocha/lm_doc.c +++ /dev/null @@ -1,1861 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * JS reflection of the current Navigator Document. - * - * Brendan Eich, 9/8/95 - */ -#include "rosetta.h" -#include "lm.h" -#include "prtypes.h" -#include "plhash.h" -#include "prmem.h" -#include "prtime.h" -#include "xp.h" -#include "lo_ele.h" -#include "shist.h" -#include "cookies.h" -#include "structs.h" /* for MWContext */ -#include "layout.h" /* included via -I../layout */ -#include "pa_parse.h" /* included via -I../libparse */ -#include "pa_tags.h" /* included via -I../libparse */ -#include "secnav.h" -#include "libstyle.h" -#include "prthread.h" -#include "np.h" -#if defined (JAVA) -#include "jsjava.h" -#elif defined (OJI) -#include "jsjava.h" -#include "np2.h" -#endif -#ifdef DOM -#include "domstyle.h" -#endif - -#ifndef DOM -enum doc_slot { - DOC_LENGTH = -1, - DOC_ELEMENTS = -2, - DOC_FORMS = -3, - DOC_LINKS = -4, - DOC_ANCHORS = -5, - DOC_APPLETS = -6, - DOC_EMBEDS = -7, - DOC_TITLE = -8, - DOC_URL = -9, - DOC_REFERRER = -10, - DOC_LAST_MODIFIED = -11, - DOC_COOKIE = -12, - DOC_DOMAIN = -13, - /* slots below this line are not secured */ - DOC_IMAGES = -14, - DOC_LAYERS = -15, - DOC_LOADED_DATE = -16, - DOC_BG_COLOR = -17, - DOC_FG_COLOR = -18, - DOC_LINK_COLOR = -19, - DOC_VLINK_COLOR = -20, - DOC_ALINK_COLOR = -21, - DOC_WIDTH = -22, - DOC_HEIGHT = -23, - DOC_BUILTINS = -24 -}; -#else -enum doc_slot { - DOC_LENGTH = -1, - DOC_ELEMENTS = -2, - DOC_FORMS = -3, - DOC_LINKS = -4, - DOC_ANCHORS = -5, - DOC_APPLETS = -6, - DOC_EMBEDS = -7, - DOC_DOCELEMENT = -8, /* Added for W3C DOM stuff */ - DOC_TITLE = -9, - DOC_URL = -10, - DOC_REFERRER = -11, - DOC_LAST_MODIFIED = -12, - DOC_COOKIE = -13, - DOC_DOMAIN = -14, - /* slots below this line are not secured */ - DOC_IMAGES = -15, - DOC_LAYERS = -16, - DOC_LOADED_DATE = -17, - DOC_BG_COLOR = -18, - DOC_FG_COLOR = -19, - DOC_LINK_COLOR = -20, - DOC_VLINK_COLOR = -21, - DOC_ALINK_COLOR = -22, - DOC_WIDTH = -23, - DOC_HEIGHT = -24, - DOC_BUILTINS = -25 -}; - -#endif -#define IS_SECURE_DOC_SLOT(s) (DOC_DOMAIN <= (s) && (s) <= DOC_LENGTH) - -static JSPropertySpec doc_props[] = { - {lm_length_str, DOC_LENGTH, JSPROP_READONLY}, - {"elements", DOC_ELEMENTS, JSPROP_READONLY}, - {lm_forms_str, DOC_FORMS, JSPROP_ENUMERATE|JSPROP_READONLY}, - {lm_links_str, DOC_LINKS, JSPROP_ENUMERATE|JSPROP_READONLY}, - {lm_anchors_str, DOC_ANCHORS, JSPROP_ENUMERATE|JSPROP_READONLY}, - {lm_applets_str, DOC_APPLETS, JSPROP_ENUMERATE|JSPROP_READONLY}, - {lm_embeds_str, DOC_EMBEDS, JSPROP_ENUMERATE|JSPROP_READONLY}, - {lm_plugins_str, DOC_EMBEDS, JSPROP_READONLY}, - {lm_images_str, DOC_IMAGES, JSPROP_ENUMERATE|JSPROP_READONLY}, - {lm_layers_str, DOC_LAYERS, JSPROP_ENUMERATE|JSPROP_READONLY}, -#ifdef DOM - {"documentElement",DOC_DOCELEMENT, JSPROP_ENUMERATE|JSPROP_READONLY}, -#endif - {"title", DOC_TITLE, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"URL", DOC_URL, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"referrer", DOC_REFERRER, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"lastModified", DOC_LAST_MODIFIED, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"loadedDate", DOC_LOADED_DATE, JSPROP_READONLY}, - {"cookie", DOC_COOKIE, JSPROP_ENUMERATE}, - {"domain", DOC_DOMAIN, JSPROP_ENUMERATE}, - {"bgColor", DOC_BG_COLOR, JSPROP_ENUMERATE}, - {"fgColor", DOC_FG_COLOR, JSPROP_ENUMERATE}, - {"linkColor", DOC_LINK_COLOR, JSPROP_ENUMERATE}, - {"vlinkColor", DOC_VLINK_COLOR, JSPROP_ENUMERATE}, - {"alinkColor", DOC_ALINK_COLOR, JSPROP_ENUMERATE}, - {"width", DOC_WIDTH, JSPROP_ENUMERATE}, - {"height", DOC_HEIGHT, JSPROP_ENUMERATE}, - {lm_builtins_str,DOC_BUILTINS, JSPROP_ENUMERATE|JSPROP_READONLY}, - {0} -}; - -#define LO_COLOR_TYPE(slot) \ - (((slot) == DOC_BG_COLOR) ? LO_COLOR_BG \ - : ((slot) == DOC_FG_COLOR) ? LO_COLOR_FG \ - : ((slot) == DOC_LINK_COLOR) ? LO_COLOR_LINK \ - : ((slot) == DOC_VLINK_COLOR) ? LO_COLOR_VLINK \ - : ((slot) == DOC_ALINK_COLOR) ? LO_COLOR_ALINK \ - : -1) - - -extern PRThread *mozilla_thread; -extern JSClass lm_document_class; -extern JSClass lm_form_class; -extern JSClass *lm_java_clasp; - -JSContext *lm_writing_context; -static int32 writing_context_counter; - -PR_STATIC_CALLBACK(JSBool) -doc_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSDocument *doc; - MochaDecoder *decoder; - MWContext *context; - History_entry *he = NULL; - JSString *str = NULL; - int64 prsec, scale, prusec; - PRExplodedTime prtime; - char *cookie, buf[100]; - const char *domain, *origin; - uint32 type; - LO_Color rgb, *bg_color; - jsint slot; - CL_Layer *layer; - int32 active_layer_id; - - doc = JS_GetInstancePrivate(cx, obj, &lm_document_class, NULL); - if (!doc) - return JS_TRUE; - decoder = doc->decoder; - - slot = JSVAL_IS_INT(id) ? JSVAL_TO_INT(id) : 0; - - if (IS_SECURE_DOC_SLOT(slot) || - (slot == 0 && - JSVAL_IS_OBJECT(*vp) && - JSVAL_TO_OBJECT(*vp) && - (JS_InstanceOf(cx, JSVAL_TO_OBJECT(*vp), &lm_form_class, NULL) || - (lm_java_clasp && - JS_InstanceOf(cx, JSVAL_TO_OBJECT(*vp), lm_java_clasp, NULL))))) - { - if (!lm_CheckPermissions(cx, obj, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - } - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - context = decoder->window_context; - if (!context) - return JS_TRUE; - - LO_LockLayout(); - if(decoder->doc_id != XP_DOCID(context)) { - LO_UnlockLayout(); -#ifdef DEBUG_chouck - XP_TRACE(("DOCID: in doc_getProperty")); -#endif - return JS_FALSE; - } - - switch (slot) { - case DOC_FORMS: - *vp = OBJECT_TO_JSVAL(lm_GetFormArray(decoder, obj)); - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, doc->layer_id); - (void) LO_EnumerateForms(context, doc->layer_id); - LM_SetActiveLayer(context, active_layer_id); - LO_UnlockLayout(); - return JS_TRUE; - - case DOC_LINKS: - *vp = OBJECT_TO_JSVAL(lm_GetLinkArray(decoder, obj)); - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, doc->layer_id); - (void) LO_EnumerateLinks(context, doc->layer_id); - LM_SetActiveLayer(context, active_layer_id); - LO_UnlockLayout(); - return JS_TRUE; - - case DOC_ANCHORS: - *vp = OBJECT_TO_JSVAL(lm_GetNameArray(decoder, obj)); - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, doc->layer_id); - (void) LO_EnumerateNamedAnchors(context,doc->layer_id); - LM_SetActiveLayer(context, active_layer_id); - LO_UnlockLayout(); - return JS_TRUE; - - case DOC_APPLETS: -#if defined(JAVA) || defined(OJI) - if (LM_MOJA_OK != ET_InitMoja(context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - *vp = OBJECT_TO_JSVAL(lm_GetAppletArray(decoder, obj)); - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, doc->layer_id); - (void) LO_EnumerateApplets(context,doc->layer_id); - LM_SetActiveLayer(context, active_layer_id); - LO_UnlockLayout(); - return JS_TRUE; -#else - LO_UnlockLayout(); - break; -#endif - - case DOC_EMBEDS: -#if defined(JAVA) || defined(OJI) - if (LM_MOJA_OK != ET_InitMoja(context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - *vp = OBJECT_TO_JSVAL(lm_GetEmbedArray(decoder, obj)); - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, doc->layer_id); - (void) LO_EnumerateEmbeds(context,doc->layer_id); - LM_SetActiveLayer(context, active_layer_id); - LO_UnlockLayout(); - return JS_TRUE; -#else - LO_UnlockLayout(); - break; -#endif - - case DOC_IMAGES: - *vp = OBJECT_TO_JSVAL(lm_GetImageArray(decoder, obj)); - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, doc->layer_id); - (void) LO_EnumerateImages(context,doc->layer_id); - LM_SetActiveLayer(context, active_layer_id); - LO_UnlockLayout(); - return JS_TRUE; - - case DOC_BUILTINS: - *vp = OBJECT_TO_JSVAL(lm_GetBuiltinsArray(decoder, obj)); - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, doc->layer_id); - (void) LO_EnumerateBuiltins(context,doc->layer_id); - LM_SetActiveLayer(context, active_layer_id); - LO_UnlockLayout(); - return JS_TRUE; - - case DOC_LAYERS: - *vp = OBJECT_TO_JSVAL(lm_GetDocumentLayerArray(decoder, obj)); - LO_UnlockLayout(); - return JS_TRUE; - -#ifdef DOM - case DOC_DOCELEMENT: - *vp = OBJECT_TO_JSVAL(lm_DOMGetDocumentElement(decoder, obj)); - LO_UnlockLayout(); - return JS_TRUE; -#endif /* DOM */ - - /* XXX BUGBUG Need a story for some of these for a layer's document */ - case DOC_TITLE: - he = SHIST_GetCurrent(&context->hist); - str = lm_EncodingToStr(context->mocha_context, CS_UTF8, he ? he->title : ""); - LO_UnlockLayout(); - break; - - case DOC_URL: - he = SHIST_GetCurrent(&context->hist); - str = JS_NewStringCopyZ(cx, he ? he->address : ""); - LO_UnlockLayout(); - break; - - case DOC_REFERRER: - he = SHIST_GetCurrent(&context->hist); - str = JS_NewStringCopyZ(cx, he ? he->referer : ""); - LO_UnlockLayout(); - break; - - case DOC_LAST_MODIFIED: - he = SHIST_GetCurrent(&context->hist); - if (he) { - LL_I2L(prsec, he->last_modified); - LL_I2L(scale, 1000000); - LL_MUL(prusec, prsec, scale); - PR_ExplodeTime(prusec, PR_LocalTimeParameters, &prtime); - PR_FormatTime(buf, sizeof buf, -#ifdef _WIN32 - /* MSVC requires %#c to get a 4-digit date. */ - "%#c", -#else - "%c", -#endif - &prtime); - } else { - buf[0] = '\0'; - } - str = JS_NewStringCopyZ(cx, buf); - LO_UnlockLayout(); - break; - - case DOC_LOADED_DATE: - LO_UnlockLayout(); - /* XXX todo */ - str = JSVAL_TO_STRING(JS_GetEmptyStringValue(cx)); - break; - - case DOC_COOKIE: - /* XXX overloaded return - can't distinguish "none" from "error" */ - he = SHIST_GetCurrent(&context->hist); - cookie = NET_GetCookie(context, he ? he->address : ""); - str = JS_NewStringCopyZ(cx, cookie); - XP_FREEIF(cookie); - LO_UnlockLayout(); - break; - - case DOC_DOMAIN: - LO_UnlockLayout(); - origin = lm_GetObjectOriginURL(cx, obj); - if (!origin) - return JS_FALSE; - domain = NET_ParseURL(origin, GET_HOST_PART); - if (!domain) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - str = JS_NewStringCopyZ(cx, domain); - XP_FREE((char *)domain); - break; - - case DOC_WIDTH: - layer = LO_GetLayerFromId(context, doc->layer_id); - *vp = INT_TO_JSVAL(LO_GetLayerScrollWidth(layer)); - LO_UnlockLayout(); - return JS_TRUE; - - case DOC_HEIGHT: - layer = LO_GetLayerFromId(context, doc->layer_id); - *vp = INT_TO_JSVAL(LO_GetLayerScrollHeight(layer)); - LO_UnlockLayout(); - return JS_TRUE; - - case DOC_BG_COLOR: - layer = LO_GetLayerFromId(context, doc->layer_id); - bg_color = LO_GetLayerBgColor(layer); - LO_UnlockLayout(); - if (bg_color) { - XP_SPRINTF(buf, "#%02x%02x%02x", bg_color->red, bg_color->green, - bg_color->blue); - str = JS_NewStringCopyZ(cx, buf); - } - else { - *vp = JSVAL_NULL; - return JS_TRUE; - } - break; - - default: - type = LO_COLOR_TYPE(slot); - if (type >= LO_NCOLORS) { - LO_UnlockLayout(); - /* Don't mess with a user-defined or method property. */ - return JS_TRUE; - } - /* Note: background color handled above */ - LO_GetDocumentColor(context, type, &rgb); - XP_SPRINTF(buf, "#%02x%02x%02x", rgb.red, rgb.green, rgb.blue); - str = JS_NewStringCopyZ(cx, buf); - LO_UnlockLayout(); - break; - } - - /* Common tail code for string-type properties. */ - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - return JS_TRUE; -} - -static char * -getPortStart(char *host) { - char *p, *result; - - result = NULL; - for (p=host; *p; p++) { - /* - * A little paranioia: check that we have only numbers following the - * colon - */ - if (result && (*p < '0' || '9' < *p)) - result = NULL; - if (*p == ':') - result = p; - } - return result; -} - - -PR_STATIC_CALLBACK(JSBool) -doc_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSObject *layer_obj; - JSDocument *doc; - MochaDecoder *decoder; - MWContext *context; - char *protocol, *pathname, *new_origin_url, *str, *port, *domain; - const char *new_domain, *domain_suffix, *prop_name, *origin; - size_t domain_len, new_domain_len; - JSBool ok; - uint32 type; - LO_Color *rgb; - jsint slot; - int32 val; - CL_Layer *layer; - History_entry *he = NULL; - - doc = JS_GetInstancePrivate(cx, obj, &lm_document_class, NULL); - if (!doc) - return JS_TRUE; - decoder = doc->decoder; - - if (!lm_CheckPermissions(cx, obj, JSTARGET_UNIVERSAL_BROWSER_WRITE)) - return JS_FALSE; - - if (!JSVAL_IS_INT(id)) { - /* - * Due to the wonderful world of threads we need to know ahead of - * time if someone is setting an onMouseMove event handler here or - * in document so that we don't lose messages. - */ - if (JS_TypeOfValue(cx, *vp) == JSTYPE_FUNCTION) { - if (JSVAL_IS_STRING(id)) { - prop_name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - /* XXX use lm_onMouseMove_str etc.*/ - if (XP_STRCMP(prop_name, "onmousemove") == 0 || - XP_STRCMP(prop_name, "onMouseMove") == 0) { - decoder->window_context->js_drag_enabled = TRUE; - } - } - } - return JS_TRUE; - } - - slot = JSVAL_TO_INT(id); - - context = decoder->window_context; - if (!context) - return JS_TRUE; - - LO_LockLayout(); - if(decoder->doc_id != XP_DOCID(context)) { - LO_UnlockLayout(); -#ifdef DEBUG_chouck - XP_TRACE(("DOCID: in doc_setProperty")); -#endif - return JS_FALSE; - } - - switch (slot) { - case DOC_COOKIE: - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - he = SHIST_GetCurrent(&context->hist); - str = JS_GetStringBytes(JSVAL_TO_STRING(*vp)); - - /* will make a copy that netlib can munge */ - if (str) - str = strdup(str); - - LO_UnlockLayout(); - NET_SetCookieString(context, he ? he->address : "", str); - break; - - case DOC_DOMAIN: - LO_UnlockLayout(); - origin = lm_GetObjectOriginURL(cx, obj); - if (!origin || XP_STRCMP(origin, lm_unknown_origin_str) == 0) - return JS_FALSE; - domain = (char *) NET_ParseURL(origin, GET_HOST_PART); - if (!domain) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) { - XP_FREE((char *)domain); - return JS_FALSE; - } - new_domain = JS_GetStringBytes(JSVAL_TO_STRING(*vp)); - new_domain_len = JS_GetStringLength(JSVAL_TO_STRING(*vp)); - - /* Allow setting document.domain to remove a port */ - port = getPortStart(domain); - if (port != NULL && getPortStart((char *) new_domain) == NULL) { - *port = '\0'; - } - - domain_len = XP_STRLEN(domain); - domain_suffix = domain + domain_len - new_domain_len; - ok = (JSBool)(!XP_STRCASECMP(domain, new_domain) || - (domain_len > new_domain_len && - !XP_STRCASECMP(domain_suffix, new_domain) && - (domain_suffix[-1] == '.' || domain_suffix[-1] == '/'))); - if (!ok) { - JS_ReportError(cx, "illegal document.domain value %s", - new_domain); - } else { - protocol = NET_ParseURL(origin, GET_PROTOCOL_PART); - pathname = NET_ParseURL(origin, GET_PATH_PART | GET_HASH_PART | - GET_SEARCH_PART); - new_origin_url = PR_smprintf("%s//%s%s", - protocol, new_domain, pathname); - ok = (JSBool)(protocol && pathname && new_origin_url); - if (!ok) { - JS_ReportOutOfMemory(cx); - } else { - JSPrincipals *principals; - principals = lm_GetInnermostPrincipals(cx, obj, NULL); - if (principals) { - ok = lm_SetDocumentDomain(cx, principals, new_origin_url); - } - } - PR_FREEIF(protocol); - PR_FREEIF(pathname); - PR_FREEIF(new_origin_url); - } - XP_FREE(domain); - return ok; - - case DOC_BG_COLOR: - if (doc->layer_id == LO_DOCUMENT_LAYER_ID) { - layer = LO_GetLayerFromId(context, LO_DOCUMENT_LAYER_ID); - LO_UnlockLayout(); - if (!lm_jsval_to_rgb(cx, vp, &rgb)) - return JS_FALSE; - ET_TweakLayer(decoder->window_context, layer, 0, 0, - rgb, 0, CL_SetBgColor, NULL, decoder->doc_id); - } else { - layer_obj = LO_GetLayerMochaObjectFromId(context, doc->layer_id); - LO_UnlockLayout(); - if (layer_obj) - layer_setBgColorProperty(cx, layer_obj, vp); - } - break; - - case DOC_FG_COLOR: - case DOC_LINK_COLOR: - case DOC_VLINK_COLOR: - case DOC_ALINK_COLOR: - type = LO_COLOR_TYPE(slot); - if (type >= LO_NCOLORS) { - LO_UnlockLayout(); - break; - } - - if (!lm_jsval_to_rgb(cx, vp, &rgb) || !rgb) { - LO_UnlockLayout(); - return JS_FALSE; - } - - LO_SetDocumentColor(context, type, rgb); - LO_UnlockLayout(); - if (rgb) - XP_FREE(rgb); - break; - - /* - * XXX BUGBUG These don't do the right thing for a window's document. - * Does any of this make sense for a layer's document? - */ - case DOC_WIDTH: - /* Front-ends can't cope with a document dimension less than one. */ - if (!JS_ValueToInt32(cx, *vp, &val)) { - LO_UnlockLayout(); - return JS_FALSE; - } - layer = LO_GetLayerFromId(context, doc->layer_id); - LO_SetLayerScrollWidth(layer, val <= 1 ? 1 : val); - LO_UnlockLayout(); - break; - - case DOC_HEIGHT: - /* Front-ends can't cope with a document dimension less than one. */ - if (!JS_ValueToInt32(cx, *vp, &val)) { - LO_UnlockLayout(); - return JS_FALSE; - } - layer = LO_GetLayerFromId(context, doc->layer_id); - LO_SetLayerScrollHeight(layer, val <= 1 ? 1 : val); - LO_UnlockLayout(); - break; - - default: - LO_UnlockLayout(); - break; - } - - return doc_getProperty(cx, obj, id, vp); -} - -#if defined(JAVA) || defined(OJI) -static void -lm_reflect_stuff_eagerly(MWContext * context, int32 layer_id) -{ - - lo_TopState *top_state; - int count, index; - LO_JavaAppStruct *applet; - LO_EmbedStruct *embed; - lo_DocLists *doc_lists; - - LO_LockLayout(); - - top_state = lo_GetMochaTopState(context); - if (top_state == NULL) { - LO_UnlockLayout(); - return; - } - doc_lists = lo_GetDocListsById(top_state->doc_state, layer_id); - - count = 0; - applet = doc_lists->applet_list; - while (applet) { - applet = applet->nextApplet; - count++; - } - - /* reflect all applets in reverse order */ - applet = doc_lists->applet_list; - for (index = count-1; index >= 0; index--) { - if (applet->objTag.mocha_object == NULL) { - LM_ReflectApplet(context, applet, NULL, layer_id, index); - } - applet = applet->nextApplet; - } - - count = 0; - embed = doc_lists->embed_list; - while (embed) { - embed = embed->nextEmbed; - count++; - } - - /* reflect all embeds in reverse order */ - embed = doc_lists->embed_list; - for (index = count-1; index >= 0; index--) { - if (embed->objTag.mocha_object == NULL) { - LM_ReflectEmbed(context, embed, NULL, layer_id, index); - } - embed = embed->nextEmbed; - } - - LO_UnlockLayout(); -} -#endif /* JAVA || OJI*/ - -PR_STATIC_CALLBACK(JSBool) -doc_list_properties(JSContext *cx, JSObject *obj) -{ -#if defined(JAVA) || defined(OJI) - /* reflect applets eagerly, anything else? */ - JSDocument *doc; - MWContext *context; - JSBool bDoInitMoja = JS_FALSE; - lo_TopState *top_state; - lo_DocLists *doc_lists; - - doc = JS_GetPrivate(cx, obj); - if (!doc) - return JS_TRUE; - context = doc->decoder->window_context; - if (!context) - return JS_TRUE; - - LO_LockLayout(); - - /* if no embeds or applets don't eagerly start java */ - top_state = lo_GetMochaTopState(context); - if (top_state) { - doc_lists = lo_GetDocListsById(top_state->doc_state, doc->layer_id); - - if(doc_lists){ - if (doc_lists->applet_list) - bDoInitMoja = JS_TRUE; - else if (doc_lists->embed_list){ - /* determine if any of these embeds actually require java, are liveconnected. */ - LO_EmbedStruct *embed; - for (embed = doc_lists->embed_list; embed != NULL; embed=embed->nextEmbed){ - if (NPL_IsLiveConnected(embed)){ - bDoInitMoja = JS_TRUE; - break; /* it only takes one */ - } - } - } - } - - } - LO_UnlockLayout(); - - if(bDoInitMoja) { - if (LM_MOJA_OK != ET_InitMoja(context)) - return JS_FALSE; - -#ifdef OJI - if (JVM_IsLiveConnectEnabled()) - lm_reflect_stuff_eagerly(context, doc->layer_id); -#else - if (JSJ_IsEnabled()) - lm_reflect_stuff_eagerly(context, doc->layer_id); -#endif /* !OJI */ - } -#endif /* JAVA || OJI */ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -doc_resolve_name(JSContext *cx, JSObject *obj, jsval id) -{ - JSDocument *doc; - const char * name; - JSObject *layer_obj; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - - name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - doc = JS_GetPrivate(cx, obj); - if (!doc) - return JS_TRUE; - - layer_obj = lm_GetNamedLayer(doc->decoder, doc->layer_id, name); - if (layer_obj) - return JS_DefineProperty(cx, obj, name, - OBJECT_TO_JSVAL(layer_obj), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY); - -#ifdef DOM - if (!DOM_DocObjectResolveStyleProps(cx, obj, id)) - return JS_FALSE; -#else - if (!JSS_ResolveDocName(cx, doc->decoder->window_context, obj, id)) - return JS_FALSE; -#endif - - return doc_list_properties(cx, obj); -} - -PR_STATIC_CALLBACK(void) -doc_finalize(JSContext *cx, JSObject *obj) -{ - JSDocument *doc; - - doc = JS_GetPrivate(cx, obj); - if (!doc) - return; - DROP_BACK_COUNT(doc->decoder); - JS_RemoveRoot(cx, &doc->forms); - JS_RemoveRoot(cx, &doc->links); - JS_RemoveRoot(cx, &doc->anchors); - JS_RemoveRoot(cx, &doc->applets); - JS_RemoveRoot(cx, &doc->embeds); - JS_RemoveRoot(cx, &doc->images); - JS_RemoveRoot(cx, &doc->layers); - JS_free(cx, doc); -} - -JSClass lm_document_class = { - "Document", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, doc_getProperty, doc_setProperty, - doc_list_properties, doc_resolve_name, JS_ConvertStub, doc_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Document(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -doc_toString(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - /* XXX make string of whole doc for trusted scripts */ - *rval = JS_GetEmptyStringValue(cx); - return JS_TRUE; -} - -char * -LM_GetBaseHrefTag(JSContext *cx, JSPrincipals *principals) -{ - char *new_origin_url; - const char *origin_url; - const char *cp, *qp, *last_slash; - char *tag; - - origin_url = principals ? principals->codebase : lm_unknown_origin_str; - if (origin_url == NULL) - return NULL; - new_origin_url = 0; - cp = origin_url; - if ((qp = XP_STRCHR(cp, '"')) != 0) { - do { - new_origin_url = PR_sprintf_append(new_origin_url, "%.*s%%%x", - qp - cp, cp, *qp); - cp = qp + 1; - } while ((qp = XP_STRCHR(cp, '"')) != 0); - new_origin_url = PR_sprintf_append(new_origin_url, "%s", cp); - if (!new_origin_url) { - JS_ReportOutOfMemory(cx); - return NULL; - } - origin_url = new_origin_url; - } - last_slash = XP_STRRCHR(origin_url, '/'); - if (last_slash) { - tag = PR_smprintf("<BASE HREF=\"%.*s/\">\n", - last_slash - origin_url, origin_url); - } else { - tag = PR_smprintf("<BASE HREF=\"%s\">\n", origin_url); - } - PR_FREEIF(new_origin_url); - if (!tag) - JS_ReportOutOfMemory(cx); - return tag; -} - -static int -doc_write_stream(JSContext *cx, MochaDecoder *decoder, - NET_StreamClass *stream, char *str, size_t len) -{ - ET_lo_DoDocWrite(cx, decoder->window_context, stream, str, len, - decoder->doc_id); - - return JS_TRUE; -} - -static char * -context_pathname(JSContext *cx, MWContext *context, int32 layer_id) -{ - MWContext *parent; - int count, index; - char *name = 0; - - while ((parent = context->grid_parent) != 0) { - if (context->name) { - name = PR_sprintf_append(name, "%s.", context->name); - } else { - /* XXX silly xp_cntxt.c puts newer contexts at the front! */ - count = XP_ListCount(parent->grid_children); - index = XP_ListGetNumFromObject(parent->grid_children, context); - name = PR_sprintf_append(name, "%u.", count - index); - } - context = parent; - } - name = PR_sprintf_append(name, "%ld", (long)XP_DOCID(context)); - if (layer_id != LO_DOCUMENT_LAYER_ID) - name = PR_sprintf_append(name, ".%ld", layer_id); - if (!name) - JS_ReportOutOfMemory(cx); - return name; -} - -/* Make a wysiwyg: URL containing the context and our origin. */ -char * -lm_MakeWysiwygUrl(JSContext *cx, MochaDecoder *decoder, int32 layer_id, - JSPrincipals *principals) -{ - const char *origin; - const char *pathname; - char *url_string; - char *slash; - - origin = principals ? principals->codebase : lm_unknown_origin_str; - if (origin == NULL) - return NULL; - pathname = context_pathname(cx, decoder->window_context, layer_id); - if (!pathname) - return NULL; - while ((slash = XP_STRCHR(pathname, '/')) != NULL) { - /* Escape '/' in pathname as "%2f" */ - char *newPath; - *slash = '\0'; - newPath = PR_smprintf("%s%%2f%s", pathname, slash+1); - XP_FREE((char *)pathname); - if (!newPath) { - JS_ReportOutOfMemory(cx); - return NULL; - } - pathname = newPath; - } - url_string = PR_smprintf("wysiwyg://%s/%s", pathname, origin); - XP_FREE((char *)pathname); - if (!url_string) { - JS_ReportOutOfMemory(cx); - return NULL; - } - return url_string; -} - -static NET_StreamClass * -doc_cache_converter(JSContext *cx, MochaDecoder *decoder, - URL_Struct *url_struct, char *wysiwyg_url, - int32 layer_id) -{ - NET_StreamClass * rv; - - rv = ET_moz_DocCacheConverter(decoder->window_context, - url_struct, wysiwyg_url, - layer_id); - - if (!rv) - JS_ReportOutOfMemory(cx); - - return rv; - -} - -NET_StreamClass * -LM_WysiwygCacheConverter(MWContext *context, URL_Struct *url_struct, - const char * wysiwyg_url, const char * base_href) -{ - NET_StreamClass *cache_stream; - - if (!wysiwyg_url) { - cache_stream = 0; - } else { - cache_stream = lm_DocCacheConverter(context, url_struct, - wysiwyg_url); - if (cache_stream) { - /* Wysiwyg files need a base tag that removes that URL prefix. */ - if (base_href) { - (void) cache_stream->put_block(cache_stream, - base_href, - XP_STRLEN(base_href)); - } - } - } - return cache_stream; -} - -static char nscp_open_tag[] = "<" PT_NSCP_OPEN ">"; - -static NET_StreamClass * -doc_open_stream(JSContext *cx, MochaDecoder *decoder, JSObject *doc_obj, - const char *mime_type, JSBool replace) -{ - JSDocument *doc; - MWContext *context; - char *wysiwyg_url, *tag; - JSPrincipals *principals; - URL_Struct *url_struct, *cached_url; - MochaDecoder *running; - History_entry *he; - NET_StreamClass *stream; - JSBool is_text_html; - FO_Present_Types present_type; - - context = decoder->window_context; - if (!context) - return NULL; - - doc = JS_GetPrivate(cx, doc_obj); - if (!doc) - return NULL; - - /* Don't allow a script to replace a message window's contents - with its own document.write'ed content, since that would allow - them to spoof mail headers. */ - if ((doc->layer_id == LO_DOCUMENT_LAYER_ID) && IS_MESSAGE_WINDOW(context)) - return NULL; - - /* We must be called after any loading URL has finished. */ - XP_ASSERT(!decoder->url_struct); - principals = lm_GetPrincipalsFromStackFrame(cx); - wysiwyg_url = lm_MakeWysiwygUrl(cx, decoder, doc->layer_id, principals); - if (!wysiwyg_url) - return NULL; - url_struct = NET_CreateURLStruct(wysiwyg_url, NET_DONT_RELOAD); - if (!url_struct) { - XP_FREE(wysiwyg_url); - JS_ReportOutOfMemory(cx); - return NULL; - } - - /* Set content type so it can be cached. */ - StrAllocCopy(url_struct->content_type, mime_type); - url_struct->preset_content_type = TRUE; - url_struct->must_cache = TRUE; - - /* Set these to null so we can goto bad from here onward. */ - stream = 0; - cached_url = 0; - - HG99880 - - /* If we're opening a stream for the window's document */ - if (doc->layer_id == LO_DOCUMENT_LAYER_ID) { - /* Free any old doc before stream building, which may discard too. */ - ET_lo_DiscardDocument(context); - if (replace) { - /* If replacing, flag current entry and url_struct specially. */ - lm_ReplaceURL(context, url_struct); - } - present_type = FO_PRESENT; - } - /* Otherwise, we're dealing with a layer's document */ - else { - const char *referer = lm_GetSubjectOriginURL(cx); - - if (!referer || - !ET_lo_PrepareLayerForWriting(context, doc->layer_id, referer)) { - goto bad; - } - lm_NewLayerDocument(decoder, doc->layer_id); - LM_SetActiveLayer(context, doc->layer_id); - present_type = FO_PRESENT_INLINE; - } - - /* We must be called after any open stream has been closed. */ - XP_ASSERT(!decoder->stream); - stream = ET_net_StreamBuilder(present_type, url_struct, context); - if (!stream) { - JS_ReportError(cx, "cannot open document for %s", mime_type); - goto bad; - } - - if (doc->layer_id == LO_DOCUMENT_LAYER_ID) { - /* Layout discards documents lazily, but we are now eager. */ - if (!decoder->document && !lm_InitWindowContent(decoder)) - goto bad; - - /* - * Reset the doc_id since the context won't have a valid - * one set till we start writing out content. - */ - decoder->doc_id = 0; - } - - decoder->writing_input = JS_TRUE; - if (!lm_SetInputStream(cx, decoder, stream, url_struct, JS_TRUE)) - goto bad; - - is_text_html = (JSBool)(!XP_STRCMP(mime_type, TEXT_HTML)); - - /* Only need to do this for a window's document */ - if (doc->layer_id == LO_DOCUMENT_LAYER_ID) { - if (is_text_html) { - /* Feed layout an internal tag so it will create a new top state.*/ - ET_lo_DoDocWrite(cx, context, stream, nscp_open_tag, - sizeof nscp_open_tag - 1, 0); - } - - if (is_text_html || !XP_STRCMP(mime_type, TEXT_PLAIN)) { - doc_cache_converter(cx, decoder, url_struct, - wysiwyg_url, doc->layer_id); - } - - /* Auto-generate a BASE HREF= tag for generated HTML documents. */ - if (is_text_html) { - tag = LM_GetBaseHrefTag(cx, principals); - if (!tag) - goto bad; - (void) doc_write_stream(cx, decoder, stream, tag, XP_STRLEN(tag)); - XP_FREE(tag); - } - } - else { - if (lm_SetLayerSourceURL(decoder, doc->layer_id, wysiwyg_url)) { - if ((is_text_html || !XP_STRCMP(mime_type, TEXT_PLAIN)) && - !doc_cache_converter(cx, decoder, url_struct, - wysiwyg_url, doc->layer_id)) { - lm_SetLayerSourceURL(decoder, doc->layer_id, NULL); - } - } - } - - /* Drop our ref on url_struct -- decoder holds its own. */ - NET_DropURLStruct(url_struct); - XP_FREE(wysiwyg_url); - return stream; - -bad: - decoder->writing_input = JS_FALSE; - decoder->free_stream_on_close = JS_FALSE; - decoder->stream = 0; - decoder->stream_owner = LO_DOCUMENT_LAYER_ID; - decoder->url_struct = 0; - if (stream) { - (*stream->abort)(stream, MK_UNABLE_TO_CONVERT); - XP_DELETE(stream); - } - NET_FreeURLStruct(url_struct); - if (cached_url) - NET_FreeURLStruct(cached_url); - XP_FREE(wysiwyg_url); - return NULL; -} - -static JSBool -doc_stream_active(MochaDecoder *decoder) -{ - MWContext *context; - lo_TopState *top_state; - - if (!decoder->writing_input) - return JS_TRUE; - - context = decoder->window_context; - if (context) { - LO_LockLayout(); - top_state = lo_GetMochaTopState(context); - if (top_state && top_state->input_write_level) { - LO_UnlockLayout(); - return JS_TRUE; - } - LO_UnlockLayout(); - } - return JS_FALSE; -} - -/* XXX shared from lm_win.c for compatibility hack */ -extern JSBool PR_CALLBACK -win_open(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval); - -PR_STATIC_CALLBACK(JSBool) -doc_open(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - JSDocument *doc; - MochaDecoder *decoder; - JSString *str, *str2; - const char *mime_type, *options; - JSBool replace; - NET_StreamClass *stream; - - if (!JS_InstanceOf(cx, obj, &lm_document_class, argv)) - return JS_FALSE; - doc = JS_GetPrivate(cx, obj); - if (!doc) - return JS_TRUE; - decoder = doc->decoder; - - if (argc > 2 || argv[0] == JS_GetEmptyStringValue(cx)) { - /* XXX hideous compatibility hack to call window.open */ - return win_open(cx, decoder->window_object, argc, argv, rval); - } - - str = str2 = 0; - mime_type = TEXT_HTML; - replace = JS_FALSE; - if (argc >= 1) { - if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_FALSE; - mime_type = JS_GetStringBytes(str); - if (argc >= 2) { - if (!(str2 = JS_ValueToString(cx, argv[1]))) - return JS_FALSE; - options = JS_GetStringBytes(str2); - replace = (JSBool)(!XP_STRCASECMP(options, "replace")); - } - } - stream = decoder->stream; - if (stream) { - if (doc_stream_active(decoder)) { - /* Don't close a stream being fed by netlib. */ - *rval = JSVAL_NULL; - return JS_TRUE; - } - lm_ClearDecoderStream(decoder, JS_FALSE); - } - stream = doc_open_stream(cx, decoder, obj, mime_type, replace); - if (!stream) - return JS_FALSE; - *rval = OBJECT_TO_JSVAL(doc->object); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -doc_close(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - JSDocument *doc; - MochaDecoder *decoder; - - if (!JS_InstanceOf(cx, obj, &lm_document_class, argv)) - return JS_FALSE; - doc = JS_GetPrivate(cx, obj); - if (!doc) - return JS_TRUE; - decoder = doc->decoder; - if (!decoder->stream || doc_stream_active(decoder)) { - /* Don't close a closed stream, or a stream being fed by netlib. */ - *rval = JSVAL_FALSE; - return JS_TRUE; - } - lm_ClearDecoderStream(decoder, JS_FALSE); - *rval = JSVAL_TRUE; - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -doc_clear(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - JSDocument *doc; - MochaDecoder *decoder; - MWContext *context; - - if (!JS_InstanceOf(cx, obj, &lm_document_class, argv)) - return JS_FALSE; - doc = JS_GetPrivate(cx, obj); - if (!doc) - return JS_TRUE; - decoder = doc->decoder; - context = decoder->window_context; - if (!context) - return JS_TRUE; - if (!doc_close(cx, obj, argc, argv, rval)) - return JS_FALSE; - /* XXX need to open and push a tag through layout? */ - ET_PostClearView(context); - return JS_TRUE; -} - -static NET_StreamClass * -doc_get_stream(JSContext *cx, MochaDecoder *decoder, JSObject *doc_obj) -{ - NET_StreamClass *stream; - JSDocument *doc; - - doc = JS_GetPrivate(cx, doc_obj); - if (!doc) - return NULL; - - stream = decoder->stream; - if (!stream) { - stream = doc_open_stream(cx, decoder, doc_obj, TEXT_HTML, JS_FALSE); - /* - * If, at document load time, we're trying to get a stream to a layer - * that isn't the currently loading layer, then disallow it. - */ - } else if (doc->layer_id != decoder->active_layer_id && - !decoder->load_event_sent) { - return NULL; - /* - * If we're writing to the main document or before the main document - * has completely loaded, make sure that we do all the wysiwyg - * nonsense. - */ - } else if (doc->layer_id == LO_DOCUMENT_LAYER_ID || - !decoder->load_event_sent) { - XP_ASSERT(decoder->url_struct); - if (decoder->url_struct && !decoder->url_struct->wysiwyg_url) - ET_moz_SetMochaWriteStream(decoder); - } - return stream; -} - -static JSBool -do_doc_write(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, JSBool write_eol, - jsval *rval) -{ - JSDocument *doc; - MochaDecoder *decoder; - MochaDecoder *running; - NET_StreamClass *stream; - uint i; - int status, total_len, len; - static char eol[] = "\n"; - char * buf, * start; - JSString * str; - - doc = JS_GetPrivate(cx, obj); - if (!doc) - return JS_TRUE; - - if (PR_CurrentThread() == mozilla_thread) - return JS_FALSE; - - decoder = doc->decoder; - stream = doc_get_stream(cx, decoder, obj); - if (!stream) - return JS_FALSE; - - /* see how much space we need */ - total_len = 0; - for (i = 0; i < argc; i++) { - if (JSVAL_IS_STRING(argv[i])) { - str = JSVAL_TO_STRING(argv[i]); - } - else { - str = JS_ValueToString(cx, argv[i]); - if (!str) - return JS_FALSE; - argv[i] = STRING_TO_JSVAL(str); - } - - total_len += JS_GetStringLength(str); - - } - - /* see if we need to allocate space for the end of line */ - if (write_eol) - total_len += XP_STRLEN(eol); - - start = buf = XP_ALLOC((total_len + 1) * sizeof(char)); - if (!buf) - return JS_FALSE; - - buf[0] = '\0'; - - /* cache these so we don't need to look up each iteration */ - running = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - - /* build the string for whatever is on the other end of the stream */ - for (i = 0; i < argc; i++) { - - str = JSVAL_TO_STRING(argv[i]); - len = JS_GetStringLength(str); - - /* - * JSStrings can contain NUL, not sure how well layout will - * deal with that but pass them along in case they're going - * to the imglib. - */ - /* XXXunicode */ - memcpy(buf, JS_GetStringBytes(str), len); - buf += len; - - } - - /* generate a new line */ - if (write_eol) - XP_STRCPY(buf, eol); - else - *buf = '\0'; - - if (lm_writing_context == NULL) - lm_writing_context = cx; - writing_context_counter++; - - /* if we made it to here we must have a valid string */ - status = ET_lo_DoDocWrite(cx, decoder->window_context, stream, start, - total_len, decoder->doc_id); - - if (--writing_context_counter == 0) - lm_writing_context = NULL; - - XP_FREE(start); - - if (status < 0) { - *rval = JSVAL_FALSE; - return JS_TRUE; - } - - if (!decoder->document && !lm_InitWindowContent(decoder)) - return JS_FALSE; - *rval = JSVAL_TRUE; - return JS_TRUE; - -} - -PR_STATIC_CALLBACK(JSBool) -doc_write(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - if (!JS_InstanceOf(cx, obj, &lm_document_class, argv)) - return JS_FALSE; - - return do_doc_write(cx, obj, argc, argv, JS_FALSE, rval); -} - -PR_STATIC_CALLBACK(JSBool) -doc_writeln(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - if (!JS_InstanceOf(cx, obj, &lm_document_class, argv)) - return JS_FALSE; - - return do_doc_write(cx, obj, argc, argv, JS_TRUE, rval); -} - -PR_STATIC_CALLBACK(JSBool) -doc_capture_events(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSDocument *doc; - MochaDecoder *decoder; - jsdouble d; - - if (!JS_InstanceOf(cx, obj, &lm_document_class, argv)) - return JS_FALSE; - doc = JS_GetPrivate(cx, obj); - if (!doc) - return JS_FALSE; - decoder=doc->decoder; - - if (!decoder->window_context) - return JS_TRUE; - - if (argc != 1) - return JS_TRUE; - - if (!JS_ValueToNumber(cx, argv[0], &d)) - return JS_FALSE; - - doc->capturer.event_bit |= (uint32)d; - decoder->window_context->event_bit |= (uint32)d; - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -doc_release_events(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSDocument *doc; - JSEventCapturer *cap; - MochaDecoder *decoder; - jsdouble d; - jsint layer_index; - jsint max_layer_num; - JSObject *cap_obj; - - if (!JS_InstanceOf(cx, obj, &lm_document_class, argv)) - return JS_FALSE; - doc = JS_GetPrivate(cx, obj); - if (!doc) - return JS_FALSE; - decoder=doc->decoder; - - if (!decoder->window_context) - return JS_TRUE; - - if (argc != 1) - return JS_TRUE; - - if (!JS_ValueToNumber(cx, argv[0], &d)) - return JS_FALSE; - - doc->capturer.event_bit &= ~(uint32)d; - decoder->window_context->event_bit &= ~(uint32)d; - - /*Now we have to see if anyone else wanted that bit set. Joy!*/ - /*First we check versus window */ - decoder->window_context->event_bit |= decoder->event_bit; - - /*Now we check versus layers */ - max_layer_num = LO_GetNumberOfLayers(decoder->window_context); - - for (layer_index=0; layer_index <= max_layer_num; layer_index++) { - cap_obj = LO_GetLayerMochaObjectFromId(decoder->window_context, layer_index); - if (cap_obj && (cap = JS_GetPrivate(cx, cap_obj)) != NULL) - decoder->window_context->event_bit |= cap->event_bit; - - cap_obj = lm_GetDocumentFromLayerId(decoder, layer_index); - if (cap_obj && (cap = JS_GetPrivate(cx, cap_obj)) != NULL) - decoder->window_context->event_bit |= cap->event_bit; - } - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -doc_get_selection(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSDocument *doc; - MWContext *context; - JSString *str; - char *text; - - if (!JS_InstanceOf(cx, obj, &lm_document_class, argv)) - return JS_FALSE; - - doc = JS_GetPrivate(cx, obj); - if (!doc) - return JS_FALSE; - context = doc->decoder->window_context; - - text = ET_PostGetSelectedText(context); - str = lm_LocalEncodingToStr(context, text); - XP_FREE(text); - if (!str) - return JS_FALSE; - - *rval = STRING_TO_JSVAL(str); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -doc_get_object_at(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSDocument *doc; - MochaDecoder *decoder; - LO_Element *pElement; - CL_Layer *layer; - JSObject *xy_obj = 0; - LO_AnchorData *anchor; - int32 x, y; - int16 type; - - if (!JS_InstanceOf(cx, obj, &lm_document_class, argv)) - return JS_FALSE; - - doc = JS_GetPrivate(cx, obj); - if (!doc) - return JS_FALSE; - - decoder = doc->decoder; - - if (argc != 2) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - - if (!decoder->window_context) - return JS_TRUE; - - if (!JS_ValueToInt32(cx, argv[0], &x) || !JS_ValueToInt32(cx, argv[1], &y)) - return JS_FALSE; - - layer = LO_GetLayerFromId(decoder->window_context, doc->layer_id); - - LO_LockLayout(); - - pElement = LO_XYToElement(decoder->window_context, x, y, layer); - - type = pElement ? pElement->type : LO_NONE; - - switch (type) { - case LO_TEXT: - anchor = pElement->lo_text.anchor_href; - if (!anchor) - *rval = JSVAL_VOID; - else - *rval = OBJECT_TO_JSVAL(anchor->mocha_object); - break; - case LO_IMAGE: - anchor = pElement->lo_image.anchor_href; - if (!anchor) - *rval = OBJECT_TO_JSVAL(pElement->lo_image.mocha_object); - else - *rval = OBJECT_TO_JSVAL(anchor->mocha_object); - break; - case LO_FORM_ELE: - *rval = OBJECT_TO_JSVAL(pElement->lo_form.mocha_object); - break; - default: - *rval = OBJECT_TO_JSVAL(obj); - break; - } - - LO_UnlockLayout(); - - return JS_TRUE; -} - -static JSFunctionSpec doc_methods[] = { - {"clear", doc_clear, 0}, - {"close", doc_close, 0}, - {"open", doc_open, 1}, - {lm_toString_str, doc_toString, 0}, - {"write", doc_write, 0}, - {"writeln", doc_writeln, 0}, - {"captureEvents", doc_capture_events, 1}, - {"releaseEvents", doc_release_events, 1}, - {"getSelection", doc_get_selection, 0}, - {"getObjectAt", doc_get_object_at, 0}, - {0} -}; - -JSObject * -lm_DefineDocument(MochaDecoder *decoder, int32 layer_id) -{ - - JSObject *obj; - JSContext *cx; - JSDocument *doc; - JSObject *parent; - - cx = decoder->js_context; - doc = JS_malloc(cx, sizeof *doc); - if (!doc) - return NULL; - XP_BZERO(doc, sizeof *doc); - - obj = lm_GetDocumentFromLayerId(decoder, layer_id); - if (obj) - return obj; - - if (layer_id == LO_DOCUMENT_LAYER_ID) { - parent = decoder->window_object; - } else { - parent = - (JSObject *)LO_GetLayerMochaObjectFromId(decoder->window_context, - layer_id); - if (!parent) - parent = decoder->window_object; - } - obj = JS_DefineObject(cx, parent, lm_document_str, &lm_document_class, - decoder->document_prototype, - JSPROP_ENUMERATE|JSPROP_READONLY); - - if (!obj || !JS_SetPrivate(cx, obj, doc)) { - JS_free(cx, doc); - return NULL; - } - - if (!JS_AddNamedRoot(cx, &doc->forms, lm_forms_str) || - !JS_AddNamedRoot(cx, &doc->links, lm_links_str) || - !JS_AddNamedRoot(cx, &doc->anchors, lm_anchors_str) || - !JS_AddNamedRoot(cx, &doc->applets, lm_applets_str) || - !JS_AddNamedRoot(cx, &doc->embeds, lm_embeds_str) || - !JS_AddNamedRoot(cx, &doc->images, lm_images_str) || - !JS_AddNamedRoot(cx, &doc->layers, lm_layers_str)) { - /* doc_finalize will clean up the rest. */ - return NULL; - } - - doc->object = obj; - doc->decoder = HOLD_BACK_COUNT(decoder); - doc->layer_id = layer_id; - if (layer_id == LO_DOCUMENT_LAYER_ID) { - decoder->document = obj; - XP_ASSERT(decoder->window_context); - decoder->doc_id = XP_DOCID(decoder->window_context); - } - - return obj; -} - -JSBool -lm_InitDocumentClass(MochaDecoder *decoder) -{ - JSContext *cx; - JSObject *prototype; - - cx = decoder->js_context; - prototype = JS_InitClass(cx, decoder->window_object, - decoder->event_capturer_prototype, - &lm_document_class, Document, 0, - doc_props, doc_methods, NULL, NULL); - if (!prototype) - return JS_FALSE; - decoder->document_prototype = prototype; - return JS_TRUE; -} - -JSObject * -lm_GetDocumentFromLayerId(MochaDecoder *decoder, int32 layer_id) -{ - JSObject *layer_obj; - JSBool ok; - jsval val; - JSObject *rv; - - LO_LockLayout(); - - if (layer_id == LO_DOCUMENT_LAYER_ID) - rv = decoder->document; - else { - layer_obj = LO_GetLayerMochaObjectFromId(decoder->window_context, - layer_id); - if (!layer_obj) { - LO_UnlockLayout(); - return NULL; - } - - ok = JS_LookupProperty(decoder->js_context, layer_obj, - lm_document_str, &val); - if (!ok) { - LO_UnlockLayout(); - return NULL; - } - - rv = JSVAL_IS_OBJECT(val) ? JSVAL_TO_OBJECT(val) : NULL; - } - - LO_UnlockLayout(); - return rv; -} - -/* Clears out object references from the doc private data */ -void -lm_CleanUpDocumentRoots(MochaDecoder *decoder, JSObject *obj) -{ - JSDocument *doc; - - doc = JS_GetPrivate(decoder->js_context, obj); - - if (!doc) - return; - - doc->forms = NULL; - doc->links = NULL; - doc->anchors = NULL; - doc->applets = NULL; - doc->embeds = NULL; - doc->images = NULL; - doc->layers = NULL; -} - -/* - * Called when the content associated with a document is destroyed, - * but the document itself may not be. Cleans out object references - * from doc private data (so that the objects can be collected). Also - * deals with correctly relinquishing event capture. - */ -void -lm_CleanUpDocument(MochaDecoder *decoder, JSObject *obj) -{ - JSDocument *doc; - MWContext *context; - jsint layer_index, max_layer_num; - JSObject *cap_obj; - JSEventCapturer *cap; - - lm_CleanUpDocumentRoots(decoder, obj); - - doc = JS_GetPrivate(decoder->js_context, obj); - if (!doc) - return; - - doc->capturer.event_bit = 0; - context = decoder->window_context; - if (!context) - return; - context->event_bit = 0; - - /* Now we have to see who still wants events */ - /* First we check versus window */ - context->event_bit |= decoder->event_bit; - - /*Now we check versus layers */ - max_layer_num = LO_GetNumberOfLayers(context); - - for (layer_index=0; layer_index <= max_layer_num; layer_index++) { - if (doc->layer_id == layer_index) - continue; - - cap_obj = LO_GetLayerMochaObjectFromId(decoder->window_context, layer_index); - if (cap_obj && (cap = JS_GetPrivate(decoder->js_context, cap_obj)) != NULL) - context->event_bit |= cap->event_bit; - - cap_obj = lm_GetDocumentFromLayerId(decoder, layer_index); - if (cap_obj && (cap = JS_GetPrivate(decoder->js_context, cap_obj)) != NULL) - context->event_bit |= cap->event_bit; - } - -} - - - -/* - * This routine needs to be callable from either the mocha or - * the mozilla threads. The call to lm_FreeWindowContent() - * may be problematic since its going to try to post - * clearTimeout() messages back to the mozilla thread if any - * are pending. - */ -void -LM_ReleaseDocument(MWContext *context, JSBool resize_reload) -{ - MochaDecoder *decoder; - JSContext *cx; - - if (resize_reload) - return; - - /* Be defensive about JS-unaware contexts. */ - cx = context->mocha_context; - if (!cx) - return; - - /* Hold the context's decoder rather than calling LM_GetMochaDecoder. */ - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - decoder->forw_count++; - - /* Turn of the capture bits for the window and context */ - decoder->event_bit = 0; - decoder->window_context->event_bit = 0; - - /* Set first language version back to unknown for the next document */ - decoder->firstVersion = JSVERSION_UNKNOWN; - - if (decoder->principals) { - /* Drop reference to JSPrincipals object */ - JSPRINCIPALS_DROP(cx, decoder->principals); - decoder->principals = NULL; - } - - /* Free any anonymous images. */ - if (decoder->image_context) - ET_PostFreeAnonImages(context, decoder->image_context); - - /* Free all the HTML-based objects and properties. */ - lm_FreeWindowContent(decoder, JS_TRUE); - JS_GC(cx); - - LM_PutMochaDecoder(decoder); -} diff --git a/mozilla/lib/libmocha/lm_dom.c b/mozilla/lib/libmocha/lm_dom.c deleted file mode 100644 index 3db232dce24..00000000000 --- a/mozilla/lib/libmocha/lm_dom.c +++ /dev/null @@ -1,859 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is Mozilla Communicator client code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - * Glue to connect lib/libdom to lib/layout. - */ - -#include "lm.h" -#include "lm_dom.h" -#include "layout.h" -#include "pa_tags.h" -#include "pa_parse.h" -#include "intl_csi.h" - -#ifdef DEBUG_shaver -#define LOCAL_ASSERT PR_ASSERT -#else -#define LOCAL_ASSERT XP_ASSERT -#endif - -#ifdef DEBUG_shaver -/* #define DEBUG_shaver_verbose */ -#define DEBUG_shaver_treegen -#endif - -#define LAYLOCKED(code) \ -PR_BEGIN_MACRO \ - LO_LockLayout(); \ - code; \ - LO_UnlockLayout(); \ -PR_END_MACRO - -JSBool -lm_CheckNodeDocId(MWContext *context, DOM_HTMLElementPrivate *priv) -{ - return priv->doc_id == context->doc_id; -} - -/* from et_moz.c */ -int -ET_DOMReflow(MWContext *context, LO_Element *element, PRBool reflow, - int32 doc_id); - -static JSBool -lm_DOMInsertBefore(JSContext *cx, DOM_Node *node, DOM_Node *child, - DOM_Node *ref, JSBool before) -{ - return JS_TRUE; -} - -static JSBool -lm_DOMReplaceChild(JSContext *cx, DOM_Node *node, DOM_Node *child, - DOM_Node *old, JSBool before) -{ - return JS_TRUE; -} - -static JSBool -lm_DOMRemoveChild(JSContext *cx, DOM_Node *node, DOM_Node *child, - JSBool before) -{ - return JS_TRUE; -} - -static JSBool -lm_DOMAppendChild(JSContext *cx, DOM_Node *node, DOM_Node *child, - JSBool before) -{ - return JS_TRUE; -} - -static JSObject * -lm_DOMReflectNode(JSContext *cx, DOM_Node *node) -{ - MochaDecoder *decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - - if (!decoder || !node) - return NULL; - - switch(node->type) { - case NODE_TYPE_ELEMENT: - return DOM_NewElementObject(cx, (DOM_Element *)node); - case NODE_TYPE_TEXT: - return DOM_NewTextObject(cx, (DOM_Text *)node); - case NODE_TYPE_ATTRIBUTE: - return DOM_NewAttributeObject(cx, (DOM_Attribute *)node); - default: - XP_ASSERT((0 && "unknown DOM type")); - } - return NULL; -} - -DOM_NodeOps lm_NodeOps = { - lm_DOMInsertBefore, lm_DOMReplaceChild, lm_DOMRemoveChild, - lm_DOMAppendChild, DOM_DestroyNodeStub, lm_DOMReflectNode -}; - -/* - * Signal an exception on doc_id mismatch. Must be called with layout lock - * held (unlocks on failure). - */ -#define CHECK_DOC_ID(context, priv) \ -PR_BEGIN_MACRO \ - if (!lm_CheckNodeDocId(context, priv)) { \ - DOM_SignalException(cx, DOM_WRONG_DOCUMENT_ERR); \ - LO_UnlockLayout(); \ - return JS_FALSE; \ - } \ -PR_END_MACRO - -static JSBool -lm_DOMSetAttributes(JSContext *cx, DOM_Element *element, const char *name, - const char *value) -{ - JSBool matched = JS_FALSE; - MochaDecoder *decoder; - MWContext *context; - DOM_HTMLElementPrivate *priv; - void *ele = NULL; - lo_DocState *doc; - - decoder = (MochaDecoder *)JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - context = decoder->window_context; - doc = (lo_FetchTopState(context->doc_id))->doc_state; - priv = (DOM_HTMLElementPrivate *)element->node.data; - - switch(priv->tagtype) { - case P_TABLE_DATA: { - LO_Element *iter, *start, *end; - lo_TableCell *cell; - - LO_LockLayout(); - CHECK_DOC_ID(context, priv); - cell = (lo_TableCell *)priv->ele_start; - if (!cell) - goto out_unlock; - - if (!XP_STRCASECMP("valign", name)) { - /* tweak valign */ - } else if(!XP_STRCASECMP("halign", name)) { - /* tweak halign */ - } else if(!XP_STRCASECMP("bgcolor", name)) { - LO_Color rgb; - start = cell->cell->cell_list; - end = cell->cell->cell_list_end; - if (!start || - !LO_ParseRGB((char *)value, &rgb.red, &rgb.green, &rgb.blue)) - goto out_unlock; - for (iter = start; iter && iter != end; iter = iter->lo_any.next) - lo_SetColor(iter, &rgb, doc, TRUE); - if (iter != start) - lo_SetColor(start, &rgb, doc, TRUE); - } else { - /* No match */ - matched = JS_FALSE; - LO_UnlockLayout(); - break; - } - LO_UnlockLayout(); - matched = JS_TRUE; - break; - } - default:; - } - - if (!matched) { - DOM_SignalException(cx, DOM_INVALID_NAME_ERR); - return JS_FALSE; - } - - return (JSBool)ET_DOMReflow(context, (LO_Element *)ele, PR_TRUE, - decoder->doc_id); - out_unlock: - LO_UnlockLayout(); - return JS_TRUE; -} - -static void -lm_BreakLayoutNodeLinkRecurse(DOM_Node *node) -{ - DOM_HTMLElementPrivate *priv; - if (node->type == NODE_TYPE_TEXT || - node->type == NODE_TYPE_ELEMENT) { - priv = (DOM_HTMLElementPrivate *)node->data; - if (priv) - priv->ele_start = priv->ele_end = NULL; - } - - for (node = node->child; node; node = node->sibling) - lm_BreakLayoutNodeLinkRecurse(node); -} - -void -lm_DestroyDocumentNodes(MWContext *context) -{ - JSContext *cx; - lo_TopState *top; - cx = context->mocha_context; - top = lo_FetchTopState(context->doc_id); - - /* XXX LO_LockLayout(); */ - lm_BreakLayoutNodeLinkRecurse(top->top_node); - /* XXX LO_UnlockLayout(); */ - DOM_DestroyTree(cx, top->top_node); - -} - -DOM_ElementOps lm_ElementOps = { - lm_DOMSetAttributes, DOM_GetAttributeStub, DOM_GetNumAttrsStub -}; - -/* - * Handle text alterations. Most of the time, we're just carving up - * new text blocks, but sometimes text inside stuff is magic, like - * <TITLE> and maybe <HREF>. - */ -static JSBool -lm_CDataOp(JSContext *cx, DOM_CharacterData *cdata, DOM_CDataOperationCode op) -{ - JSBool ok; - DOM_Node *node; - MWContext *context; - MochaDecoder *decoder; - char *data; - LO_TextBlock *text; - - node = cdata->node.parent; - data = cdata->data; - - decoder = (MochaDecoder *)JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - context = decoder->window_context; - - if (node->type == NODE_TYPE_ELEMENT) { - switch(ELEMENT_PRIV(node)->tagtype) { - case P_TITLE: - /* - * XXX clean up the text, find the current charset, make - * sure we're not a subdoc, etc. All this logic lives in - * lo_process_title_tag, and should be refactored. - */ - LAYLOCKED( - CHECK_DOC_ID(context, ELEMENT_PRIV(node)); - FE_SetDocTitle(context, data); - ); - return JS_TRUE; - } - } - text = (LO_TextBlock *)ELEMENT_PRIV(cdata)->ele_start; - if (!text) { -#ifdef DEBUG - fprintf(stderr, "no data for text node on %s %s\n", - ((DOM_Element *)node)->tagName, node->name); -#endif - return JS_TRUE; - } - - /* - * Tell layout to use the new text instead. - */ - LAYLOCKED(ok = lo_ChangeText(text, data)); - if (!ok) - return JS_FALSE; - - return (JSBool)ET_DOMReflow(context, (LO_Element *)text, PR_TRUE, - decoder->doc_id); - -} - -static DOM_Node * -lm_NodeForTag(JSContext *cx, PA_Tag *tag, DOM_Node *current, - MWContext *context, int16 csid) -{ - DOM_Node *node; - DOM_HTMLElementPrivate *elepriv; - char **names, **values; - uintN nattrs; - - if (current->type == NODE_TYPE_TEXT) - /* - * it's going to get skipped back over by the HTMLPushNode stuff, - * so build a tag as though we were pushing on its parent. - */ - current = current->parent; - - switch (tag->type) { - case P_TEXT: - if (current->type != NODE_TYPE_ELEMENT) - return NULL; - /* create Text node */ - node = (DOM_Node *)DOM_NewText((char *)tag->data, tag->data_len, - lm_CDataOp, &lm_NodeOps); - if (!node) - return NULL; - break; -#if 0 /* Urgh...we don't reflect comments! */ - case P_COMMENT: - /* create Comment node */ - break; -#endif - case P_UNKNOWN: - return NULL; - default: - /* just a regular old element */ - node = (DOM_Node *) - DOM_NewElement(PA_TagString(tag->type), &lm_ElementOps, - (char *)PA_FetchParamValue(tag, "name", csid), - (char *)PA_FetchParamValue(tag, "class", csid), - (char *)PA_FetchParamValue(tag, "id", csid), - &lm_NodeOps); - if (!node) - return NULL; - nattrs = PA_FetchAllNameValues(tag, &names, &values, csid); - if (!DOM_SetElementAttributes(cx, (DOM_Element *)node, - (const char**)names, - (const char **)values, nattrs)) { - /* XXX free data */ - return NULL; - } - break; - } - - elepriv = XP_NEW_ZAP(DOM_HTMLElementPrivate); - if (!elepriv) { - XP_FREE(node); - return NULL; - } - elepriv->tagtype = tag->type; - elepriv->doc_id = context->doc_id; - node->data = elepriv; - return node; -} - -#ifdef DEBUG_shaver -static int LM_Node_indent; -#endif - -DOM_Node * -DOM_HTMLPushNode(DOM_Node *node, DOM_Node *parent) -{ - LOCAL_ASSERT(parent->type == NODE_TYPE_ELEMENT); - - /* XXX factor this information out, and share with parser */ - if (node->type == NODE_TYPE_ELEMENT) { - /* - * Because HTML is such a cool markup language, we have to - * worry about tags that are implicitly closed by new tags. - * There are a couple of cases: - * - * <P> et alii: they close the ``enclosing'' one of the same type, - * so that you get: - * <SOME> - * <P> - * <P> - * and not - * <SOME> - * <P> - * <P> - * - * <DL>/<DT>/<DD>: these close up to an enclosing DL element, so - * that you get: - * <DL> - * <DT> - * <DD> - * and not - * <DL> - * <DT> - * <DD> - * We could enforce further stricture here, I guess, by only - * allowing <DT> and <DD> elements as children of <DL>, etc. - * Maybe later. - */ - TagType type = ELEMENT_PRIV(node)->tagtype; - DOM_Node *iter; - TagType breakType = P_UNKNOWN; - JSBool breakIsNewParent = JS_FALSE; - - switch(type) { - case P_DESC_TITLE: - case P_DESC_TEXT: - breakType = P_DESC_LIST; - breakIsNewParent = JS_TRUE; - /* fallthrough */ - case P_PARAGRAPH: - case P_LIST_ITEM: - case P_HEADER_1: - case P_HEADER_2: - case P_HEADER_3: - case P_HEADER_4: - case P_HEADER_5: - case P_HEADER_6: - case P_ANCHOR: - case P_OPTION: - /* these don't nest with themselves */ - iter = parent; - if (breakType == P_UNKNOWN) - breakType = type; - while (iter && - iter->parent->type == NODE_TYPE_ELEMENT) { - /* find the enclosing tag for this type */ - if (ELEMENT_PRIV(iter)->tagtype == breakType) { - if (breakIsNewParent) - parent = iter; - else - parent = iter->parent; - break; - } - /* XXX CLOSE_NODE(iter); */ - iter = iter->parent; - } -#ifdef DEBUG_shaver - LM_Node_indent -= 2; -#endif - break; - default:; - } - } - -#ifdef DEBUG_shaver - LM_Node_indent -= 2; -#endif -#ifdef DEBUG_shaver_verbose - { - TagType dbgtype = 0, partype = 0; /* text */ - if (node->type == NODE_TYPE_ELEMENT) - dbgtype = ELEMENT_PRIV(node)->tagtype; - if (parent->type == NODE_TYPE_ELEMENT) - partype = ELEMENT_PRIV(parent)->tagtype; - fprintf(stderr, "%*s<%s %s> on <%s %s>\n", LM_Node_indent, "", - PA_TagString(dbgtype), node->name ? node->name : "", - PA_TagString(partype), parent->name ? parent->name : ""); - if (dbgtype) - LM_Node_indent += 2; - } -#endif - - if (!DOM_PushNode(node, parent)) - return NULL; - LOCAL_ASSERT(node->parent == parent); - if (node->type == NODE_TYPE_TEXT || - (node->type == NODE_TYPE_ELEMENT && - lo_IsEmptyTag(ELEMENT_PRIV(node)->tagtype))) { - return parent; - } else { - return node; - } - -} - -void /* DOM_Node */ * -LM_ReflectTagNode(PA_Tag *tag, void *doc_state, MWContext *context) -{ - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(context); - int16 csid = INTL_GetCSIWinCSID(c); - lo_DocState *doc = (lo_DocState *)doc_state; - DOM_Node *node; - JSContext *cx; - - cx = context->mocha_context; - - if (!TOP_NODE(doc)) { - DOM_HTMLElementPrivate *elepriv; -#if 0 - node = DOM_NewDocument(context, doc); -#else - node = XP_NEW_ZAP(DOM_Node); -#endif - if (!node) - return NULL; - node->type = NODE_TYPE_DOCUMENT; - node->name = XP_STRDUP("#document"); - TOP_NODE(doc) = node; - - /* now put a single <HTML> element as child */ - node = (DOM_Node *)DOM_NewElement ("HTML", &lm_ElementOps, - NULL, NULL, NULL, &lm_NodeOps); - if (!node) - return NULL; - elepriv = XP_NEW_ZAP(DOM_HTMLElementPrivate); - if (!elepriv) { - XP_FREE(node); - return NULL; - } - elepriv->tagtype = P_HTML; - elepriv->doc_id = context->doc_id; - - node->data = elepriv; - TOP_NODE(doc)->child = node; - node->parent = TOP_NODE(doc); - CURRENT_NODE(doc) = node; - ACTIVE_NODE(doc) = node; - } - - if (!tag) { - CURRENT_NODE(doc) = TOP_NODE(doc)->child; - ACTIVE_NODE(doc) = CURRENT_NODE(doc); - return CURRENT_NODE(doc); - } - - if (tag->type == P_UNKNOWN || - tag->type == P_HTML) - return CURRENT_NODE(doc); - - if (tag->is_end) { - DOM_Node *last_node, *closing_node; - LOCAL_ASSERT(CURRENT_NODE(doc)->type == NODE_TYPE_ELEMENT || - CURRENT_NODE(doc)->type == NODE_TYPE_TEXT); - closing_node = CURRENT_NODE(doc); - last_node = (DOM_Node *)DOM_HTMLPopElementByType(tag->type, - (DOM_Element *)CURRENT_NODE(doc)); - if (!last_node) - return NULL; - LOCAL_ASSERT(last_node->parent && - last_node->type == NODE_TYPE_ELEMENT); - /* - * The caller is interested in the node that we just closed. - */ - CURRENT_NODE(doc) = last_node; - ACTIVE_NODE(doc) = CURRENT_NODE(doc); - return closing_node; - } - - node = lm_NodeForTag(cx, tag, CURRENT_NODE(doc), context, csid); - if (node) { - DOM_Node *newCurrent = DOM_HTMLPushNode(node, CURRENT_NODE(doc)); - if (!newCurrent) { -#ifdef DEBUG_shaver - fprintf(stderr, "bad push of node %d for tag %d\n", - node->type, tag->type); -#endif - if (node->ops && node->ops->destroyNode) - node->ops->destroyNode(context->mocha_context, - node); - return NULL; - } - ACTIVE_NODE(doc) = node; - LOCAL_ASSERT(node->parent && - node->parent->type != NODE_TYPE_DOCUMENT); - CURRENT_NODE(doc) = newCurrent; - - } else { - } - XP_ASSERT(!CURRENT_NODE(doc)->parent || - CURRENT_NODE(doc)->parent->type != NODE_TYPE_TEXT); - - return node; -} - -JSBool -lm_DOMInit(MochaDecoder *decoder) -{ - JSObject *win = decoder->window_object; - JSContext *cx = decoder->js_context; - - return DOM_Init(cx, win); -} - -JSObject * -lm_DOMGetDocumentElement(MochaDecoder *decoder, JSObject *docobj) -{ - JSObject *obj; - JSDocument *doc; - lo_TopState *top_state; - - doc = JS_GetPrivate(decoder->js_context, docobj); - if (!doc) - return NULL; - obj = doc->dom_documentElement; - if (obj) - return obj; - - top_state = lo_GetMochaTopState(decoder->window_context); - if (!top_state) - return NULL; - - /* XXX really create a DocumentElement - obj = NewDocument(decoder, docobj, doc); - */ - - obj = DOM_NewNodeObject(decoder->js_context, - top_state->top_node); - - doc->dom_documentElement = obj; - return obj; -} - -/* - * Close the element, popping it (and enclosing elements that are marked - * closed) if it's the current element, otherwise marking it closed and - * returning. - */ - -DOM_Element * -DOM_HTMLPopElementByType(TagType type, DOM_Element *element) -{ - DOM_Node *closing; -#ifdef DEBUG_shaver_verbose - int new_indent = LM_Node_indent; -#endif - - LOCAL_ASSERT(element->node.type != NODE_TYPE_DOCUMENT); - if (element->node.type == NODE_TYPE_DOCUMENT) - return element; - - LOCAL_ASSERT(type != P_HTML && type != NODE_TYPE_TEXT); - - closing = (DOM_Node *)element; - - if (closing->type == NODE_TYPE_TEXT) - /* really, we're closing the enclosing parent */ - closing = closing->parent; - - /* if we don't match, just mark it closed */ - if (ELEMENT_PRIV(closing)->tagtype != type) { -#ifdef DEBUG_shaver_treegen - fprintf(stderr, "</%s> doesn't close <%s> ", PA_TagString(type), - PA_TagString(ELEMENT_PRIV(closing)->tagtype)); -#endif - /* find it, mark it closed, and return. */ - do { -#ifdef DEBUG_shaver_treegen - fprintf(stderr, "skipping <%s>", - PA_TagString(ELEMENT_PRIV(closing)->tagtype)); -#endif - closing = closing->parent; - } while (closing->type == NODE_TYPE_ELEMENT && - ELEMENT_PRIV(closing)->tagtype != type && - ELEMENT_PRIV(closing)->tagtype != P_HTML); - if (closing->type == NODE_TYPE_ELEMENT && - ELEMENT_PRIV(closing)->tagtype == type) { -#ifdef DEBUG_shaver_treegen - fprintf(stderr, "found <%s>, marking closed\n", - PA_TagString(ELEMENT_PRIV(closing)->tagtype)); -#endif - LM_SetNodeFlags(closing, NODE_CLOSED); - } else { -#ifdef DEBUG_shaver_treegen - fprintf(stderr, "didn't find <%s>\n", PA_TagString(type)); -#endif - } - return element; - } - - /* - * This matches, so close it off. - * We should call LO_CloseNode so that it can close layers and the like - * as appropriate. - */ -#ifdef DEBUG_shaver_treegen - fprintf(stderr, "closing matched <%s> ", PA_TagString(type)); -#endif - closing = element->node.parent; - if (ELEMENT_PRIV(closing)->flags & NODE_CLOSED) { - do { -#ifdef DEBUG_shaver_treegen - fprintf(stderr, "<%s> already closed ", - PA_TagString(ELEMENT_PRIV(closing)->tagtype)); -#endif - LM_ClearNodeFlags(closing, NODE_CLOSED); - /* XXX CLOSE_NODE(closing) */ - closing = closing->parent; - LOCAL_ASSERT(closing); - } while (closing->type == NODE_TYPE_ELEMENT && - ELEMENT_PRIV(closing)->tagtype != P_HTML && - (ELEMENT_PRIV(closing)->flags & NODE_CLOSED)); - } - - fputs("\n", stderr); - - return (DOM_Element *)closing; -} - -JSBool -LM_SetNodeFlags(DOM_Node *node, uint32 flags) -{ - DOM_HTMLElementPrivate *priv; - XP_ASSERT(PR_CurrentThread() == mozilla_thread); - if (!(node->type == NODE_TYPE_ELEMENT || - node->type == NODE_TYPE_TEXT)) - return JS_FALSE; - priv = ELEMENT_PRIV(node); - if (!priv) - return JS_FALSE; - priv->flags |= flags; - return JS_TRUE; -} - -JSBool -LM_ClearNodeFlags(DOM_Node *node, uint32 flags) -{ - DOM_HTMLElementPrivate *priv = ELEMENT_PRIV(node); - XP_ASSERT(PR_CurrentThread() == mozilla_thread); - if (!(node->type == NODE_TYPE_ELEMENT || - node->type == NODE_TYPE_TEXT) || - !priv) - return JS_FALSE; - return JS_FALSE; - priv->flags &= ~flags; - return JS_TRUE; -} - -#include "laystyle.h" -#define IMAGE_DEF_ANCHOR_BORDER 2 -#define IMAGE_DEF_VERTICAL_SPACE 0 - -DOM_StyleDatabase * -DOMMOZ_NewStyleDatabase(JSContext *cx, lo_DocState *state) -{ - DOM_StyleDatabase *db; - LO_Color visitCol, linkCol; - DOM_StyleSelector *sel, *imgsel; - DOM_AttributeEntry *entry; - lo_TopState *top = state->top_state; - - /* - * Install default rules. - * In an ideal world (perhaps 5.0?), we would parse .netscape/ua.css - * at startup and keep the JSSS style buffer around for execution - * right here. That would be very cool in many ways, including the - * fact that people could have ua.css at all. We might want to - * make the weighting stuff work correctly at the same time, too, - * but I don't think it's vital. - */ - db = DOM_NewStyleDatabase(cx); - if (!db) - return NULL; - - linkCol.red = STATE_UNVISITED_ANCHOR_RED(state); - linkCol.green = STATE_UNVISITED_ANCHOR_GREEN(state); - linkCol.blue = STATE_UNVISITED_ANCHOR_BLUE(state); - visitCol.red = STATE_VISITED_ANCHOR_RED(state); - visitCol.green = STATE_VISITED_ANCHOR_GREEN(state); - visitCol.blue = STATE_VISITED_ANCHOR_BLUE(state); - - top->style_db = db; - - sel = DOM_StyleFindSelectorFull(cx, db, NULL, SELECTOR_TAG, - "A", NULL, "link"); - if (!sel) - goto error; - -#define SET_DEFAULT_VALUE(name, value) \ - entry = DOM_StyleAddRule(cx, db, sel, name, "default"); \ - if (!entry) \ - goto error; \ - entry->dirty = JS_FALSE; \ - entry->data = value; - - /* A:link { color:prefLinkColor } */ - SET_DEFAULT_VALUE(COLOR_STYLE, *(uint32*)&linkCol); - - /* A:link { text-decoration:underline } */ - if (lo_underline_anchors() && - !DOM_StyleAddRule(cx, db, sel, TEXTDECORATION_STYLE, "underline")) - goto error; - - sel = DOM_StyleFindSelectorFull(cx, db, NULL, SELECTOR_TAG, - "A", NULL, "visited"); - if (!sel) - goto error; - - /* A:visited { color:prefVisitedLinkColor } */ - SET_DEFAULT_VALUE(COLOR_STYLE, *(uint32*)&visitCol); - - /* A:visited { text-decoration:underline } */ - if (lo_underline_anchors() && - !DOM_StyleAddRule(cx, db, sel, TEXTDECORATION_STYLE, "underline")) - goto error; - - /* set styles for IMG within A:link and A:visited */ - /* XXX should set (and teach layout about) borderTop/Bottom, etc. */ - imgsel = DOM_StyleFindSelectorFull(cx, db, NULL, SELECTOR_TAG, - "IMG", NULL, NULL); - if (!imgsel) - goto error; - - /* set border styles for ``A:link IMG'' */ - sel = DOM_StyleFindSelectorFull(cx, db, imgsel, SELECTOR_TAG, - "A", NULL, "link"); - if (!sel) - goto error; - SET_DEFAULT_VALUE(BORDERWIDTH_STYLE, IMAGE_DEF_ANCHOR_BORDER); - SET_DEFAULT_VALUE(PADDING_STYLE, IMAGE_DEF_VERTICAL_SPACE); - - /* set border styles for ``A:visited IMG'' */ - sel = DOM_StyleFindSelectorFull(cx, db, imgsel, SELECTOR_TAG, - "A", NULL, "visited"); - if (!sel) - goto error; - SET_DEFAULT_VALUE(BORDERWIDTH_STYLE, IMAGE_DEF_ANCHOR_BORDER); - SET_DEFAULT_VALUE(PADDING_STYLE, IMAGE_DEF_VERTICAL_SPACE); - -#ifdef DEBUG_shaver - fprintf(stderr, "successfully added all default rules to db %p\n", - db); -#endif - return db; - - error: - if (db) - DOM_DestroyStyleDatabase(cx, db); - return NULL; -} - -DOM_StyleDatabase * -DOM_StyleDatabaseFromContext(JSContext *cx) -{ - MochaDecoder *decoder; - lo_TopState *top; - lo_DocState *state; - DOM_StyleDatabase *db = NULL; - - if (!cx) - return NULL; - - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - if (!decoder) - return NULL; - - LO_LockLayout(); - top = lo_FetchTopState(decoder->window_context->doc_id); - if (!top) - goto out; - - if (top->style_db) { - LO_UnlockLayout(); - return (DOM_StyleDatabase *)top->style_db; - } - - state = top->doc_state; - if (!state) - goto out; - - db = DOMMOZ_NewStyleDatabase(cx, state); - top->style_db = db; - -out: - LO_UnlockLayout(); - return db; -} - diff --git a/mozilla/lib/libmocha/lm_dom.h b/mozilla/lib/libmocha/lm_dom.h deleted file mode 100644 index 37917833196..00000000000 --- a/mozilla/lib/libmocha/lm_dom.h +++ /dev/null @@ -1,91 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifdef DOM - -#ifndef LM_DOM_H -#define LM_DOM_H - -#include "libmocha.h" -#include "domstyle.h" -#include "lo_ele.h" -#include "pa_parse.h" -#include "layout.h" - -typedef struct DOM_HTMLElementPrivate { - TagType tagtype; - LO_Element * ele_start; - LO_Element * ele_end; - int32 doc_id; - uint32 flags; -} DOM_HTMLElementPrivate; - - -#define STYLE_NODE_NEED_TO_POP_TABLE 0x0001 -#define STYLE_NODE_NEED_TO_POP_LIST 0x0002 -#define STYLE_NODE_NEED_TO_POP_MARGINS 0x0004 -#define STYLE_NODE_NEED_TO_POP_FONT 0x0008 -#define STYLE_NODE_NEED_TO_POP_PRE 0x0010 -#define STYLE_NODE_NEED_TO_POP_ALIGNMENT 0x0020 -#define STYLE_NODE_NEED_TO_POP_LINE_HEIGHT 0x0040 -#define STYLE_NODE_NEED_TO_POP_LAYER 0x0080 -#define STYLE_NODE_NEED_TO_POP_CONTENT_HIDING 0x0100 -#define NODE_CLOSED 0x1000 - -#define LM_NODE_FLAGS_ALL 0x11ff -#define LM_NODE_FLAGS_STYLE 0x01ff - -#define ELEMENT_PRIV(e) ((DOM_HTMLElementPrivate *)(((DOM_Node *)(e))->data)) -#define CURRENT_NODE(d) ((DOM_Node *)((d)->top_state->current_node)) -#define TOP_NODE(d) ((DOM_Node *)((d)->top_state->top_node)) -#define ACTIVE_NODE(d) ((DOM_Node *)((d)->top_state->active_node)) - -DOM_Element * -DOM_HTMLPopElementByType(TagType type, DOM_Element *element); - -DOM_StyleDatabase * -DOMMOZ_NewStyleDatabase(JSContext *cx, lo_DocState *state); - -JSBool -lm_DOMInitNode(MochaDecoder *decoder); - -JSBool -lm_DOMInitElement(MochaDecoder *decoder); - -JSBool -lm_DOMInitAttribute(MochaDecoder *decoder); - -void -lm_DestroyDocumentNodes(MWContext *context); - -JSBool -lm_CheckDocId(MWContext *context, DOM_HTMLElementPrivate *priv); - -JSBool -LM_SetNodeFlags(DOM_Node *node, uint32 flags); - -JSBool -LM_ClearNodeFlags(DOM_Node *node, uint32 flags); - -#endif /* DOM */ - -#endif /* LM_DOM_H */ diff --git a/mozilla/lib/libmocha/lm_embed.c b/mozilla/lib/libmocha/lm_embed.c deleted file mode 100644 index c032641edfe..00000000000 --- a/mozilla/lib/libmocha/lm_embed.c +++ /dev/null @@ -1,367 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - * JS reflection of embeds in the current document. The - * reflected object is the java object associated with the - * embed... if there is none then the reflection is JSVAL_NULL. - */ - -/* Please leave outside of ifdef for windows precompiled headers */ -#include "lm.h" - -#if defined(JAVA) || defined(OJI) - -#include "xp.h" -#include "layout.h" -#include "np.h" -#include "nppriv.h" -#ifdef OJI -#include "jni.h" -#include "jvmmgr.h" -#else -#include "jri.h" -#endif -#include "jsjava.h" -#include "jsobj.h" -#include "prlog.h" - -extern PRLogModuleInfo* Moja; -#define warn PR_LOG_WARN -#define debug PR_LOG_DEBUG - -enum embed_array_slot { - EMBED_ARRAY_LENGTH = -1 -}; - -static JSPropertySpec embed_array_props[] = { - {lm_length_str, EMBED_ARRAY_LENGTH, - JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {0} -}; - -extern JSClass lm_embed_array_class; - -PR_STATIC_CALLBACK(JSBool) -embed_array_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSObjectArray *array; - MochaDecoder *decoder; - MWContext *context; - jsint count, slot; - LO_EmbedStruct *embed_data; - int32 active_layer_id; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - array = JS_GetInstancePrivate(cx, obj, &lm_embed_array_class, NULL); - if (!array) - return JS_TRUE; - decoder = array->decoder; - context = decoder->window_context; - - if (!context) return JS_TRUE; - - if (LM_MOJA_OK != ET_InitMoja(context)) - return JS_FALSE; - - LO_LockLayout(); - switch (slot) { - case EMBED_ARRAY_LENGTH: - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, array->layer_id); - count = LO_EnumerateEmbeds(context, array->layer_id); - LM_SetActiveLayer(context, active_layer_id); - if (count > array->length) - array->length = count; - *vp = INT_TO_JSVAL(array->length); - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - LO_UnlockLayout(); - return JS_TRUE; - } - embed_data = LO_GetEmbedByIndex(context, array->layer_id, (uint)slot); - if (embed_data) { - JSObject *mo = LM_ReflectEmbed(context, embed_data, NULL, - array->layer_id, (uint)slot); - if (!mo) { - JS_ReportError(cx, - "unable to reflect embed with index %d - not loaded yet?", - (uint) slot); - goto err; - } - *vp = OBJECT_TO_JSVAL(mo); - XP_ASSERT(slot < array->length); - } else { - JS_ReportError(cx, "no embed with index %d\n"); - goto err; - } - break; - } - LO_UnlockLayout(); - return JS_TRUE; - err: - LO_UnlockLayout(); - return JS_FALSE; -} - -PR_STATIC_CALLBACK(void) -embed_array_finalize(JSContext *cx, JSObject *obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -JSClass lm_embed_array_class = { - "EmbedArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - embed_array_getProperty, embed_array_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, embed_array_finalize -}; - -JSObject * -lm_GetEmbedArray(MochaDecoder *decoder, JSObject *document) -{ - JSContext *cx = decoder->js_context; - JSObject *obj; - JSObjectArray *array; - JSDocument *doc; - - doc = JS_GetPrivate(cx, document); - if (!doc) - return NULL; - - obj = doc->embeds; - if (obj) - return obj; - - array = JS_malloc(cx, sizeof *array); - if (!array) - return NULL; - array->decoder = NULL; /* in case of error below */ - - obj = JS_NewObject(cx, &lm_embed_array_class, NULL, document); - if (!obj || !JS_SetPrivate(cx, obj, array)) { - JS_free(cx, array); - return NULL; - } - - if (!JS_DefineProperties(cx, obj, embed_array_props)) - return NULL; - - array->decoder = HOLD_BACK_COUNT(decoder); - array->length = 0; - array->layer_id = doc->layer_id; - doc->embeds = obj; - return obj; -} - - - -/* this calls MozillaEmbedContext to reflect the embed by - * calling into mocha... yow! */ -static JSObject * -lm_ReallyReflectEmbed(MWContext *context, LO_EmbedStruct *lo_embed, - int32 layer_id, uint32 index) -{ - JSObject *obj; - MochaDecoder *decoder; - JSContext *cx; - jref jembed; - NPEmbeddedApp* embed; - lo_TopState *top_state; - PRHashTable *map; - PR_LOG(Moja, debug, ("really reflect embed 0x%x\n", lo_embed)); - - if ((obj = lo_embed->objTag.mocha_object) != NULL) - return obj; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - cx = decoder->js_context; - - top_state = lo_GetMochaTopState(context); - if (top_state->resize_reload) { - map = lm_GetIdToObjectMap(decoder); - - if (map) - obj = (JSObject *)PR_HashTableLookup(map, - LM_GET_MAPPING_KEY(LM_EMBEDS, layer_id, index)); - if (obj) { - lo_embed->objTag.mocha_object = obj; - return obj; - } - } - -#ifdef OJI - if (!JVM_IsLiveConnectEnabled()) { - PR_LOG(Moja, debug, ("reflected embed 0x%x as null\n", - lo_embed)); - return lo_embed->objTag.mocha_object = lm_DummyObject; - } -#else - /* set the element to something bad if we can't get the java obj */ - if (!JSJ_IsEnabled()) { - PR_LOG(Moja, debug, ("reflected embed 0x%x as null\n", - lo_embed)); - return lo_embed->objTag.mocha_object = lm_DummyObject; - } -#endif /* !OJI */ - embed = (NPEmbeddedApp*) lo_embed->objTag.FE_Data; - if (embed) { - np_data *ndata = (np_data*) embed->np_data; - np_instance *instance; - - /* XXX this comes from npglue.c, it should be put - * in one of the plugin header files */ - extern jref npn_getJavaPeer(NPP npp); - - if (!ndata || ndata->state == NPDataSaved) { - PR_LOG(Moja, warn, ("embed 0x%x is missing or suspended\n", - lo_embed)); - return NULL; - } - instance = ndata->instance; - if (!instance) return NULL; - jembed = npn_getJavaPeer(instance->npp); - -#ifdef OJI - { - jsval val; - if (JSJ_ConvertJavaObjectToJSValue(decoder->js_context, jembed, &val)) - obj = JSVAL_TO_OBJECT(val); - } -#else - obj = js_ReflectJObjectToJSObject(decoder->js_context, - (HObject *)jembed); -#endif /* !OJI */ - PR_LOG(Moja, debug, ("reflected embed 0x%x (java 0x%x) to 0x%x ok\n", - lo_embed, jembed, obj)); - - map = lm_GetIdToObjectMap(decoder); - if (map) - PR_HashTableAdd(map, - LM_GET_MAPPING_KEY(LM_EMBEDS, layer_id, index), - obj); - - return lo_embed->objTag.mocha_object = obj; - } else { - PR_LOG(Moja, warn, ("failed to reflect embed 0x%x\n", lo_embed)); - return NULL; - } -} - - -JSObject * -LM_ReflectEmbed(MWContext *context, LO_EmbedStruct *lo_embed, - PA_Tag * tag, int32 layer_id, uint index) -{ - JSObject *obj, *array_obj, *outer_obj, *document; - MochaDecoder *decoder; - JSContext *cx; - char *name; - int i; - - obj = lo_embed->objTag.mocha_object; - if (obj) - return obj; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - - cx = decoder->js_context; - - /* get the name */ - name = 0; - for (i = 0; i < lo_embed->attributes.n; i++) { - if (!XP_STRCASECMP(lo_embed->attributes.names[i], "name")) { - name = strdup(lo_embed->attributes.values[i]); - break; - } - } - - /* Get the document object that will hold this applet */ - document = lm_GetDocumentFromLayerId(decoder, layer_id); - if (!document) { - LM_PutMochaDecoder(decoder); - return NULL; - } - - array_obj = lm_GetEmbedArray(decoder, document); - if (!array_obj) { - LM_PutMochaDecoder(decoder); - return NULL; - } - - /* XXX should pass thru ReallyReflectApplet to whatever calls NewObject */ - outer_obj = lm_GetOuterObject(decoder); - - /* this function does the real work */ - obj = lm_ReallyReflectEmbed(context, lo_embed, layer_id, index); - - if (!obj) - goto out; - - /* put it in the embed array */ - if (!lm_AddObjectToArray(cx, array_obj, name, index, obj)) { - obj = NULL; - goto out; - } - - /* put it in the document scope */ - if (name && !JS_DefineProperty(cx, outer_obj, name, OBJECT_TO_JSVAL(obj), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - PR_LOG(Moja, warn, ("failed to define embed 0x%x as %s\n", - lo_embed, name)); - /* XXX remove it altogether? */ - } - - /* cache it in layout data structure */ - lo_embed->objTag.mocha_object = obj; - -out: - LM_PutMochaDecoder(decoder); - return obj; -} - -PRIVATE JSObject * -LM_ReflectNamedEmbed(MWContext *context, lo_NameList *name_rec, - int32 layer_id, uint index) -{ - return NULL; -} - -#endif /* JAVA || OJI */ diff --git a/mozilla/lib/libmocha/lm_env.c b/mozilla/lib/libmocha/lm_env.c deleted file mode 100644 index a4e3e0315b4..00000000000 --- a/mozilla/lib/libmocha/lm_env.c +++ /dev/null @@ -1,190 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "lm.h" -#include "libi18n.h" - -typedef struct JSEnvironment { - MochaDecoder *decoder; -} JSEnvironment; - -enum environment_tinyid { - ENVIRONMENT_LANGUAGE = -1, - ENVIRONMENT_LANGUAGE_COLLATE = -2, - ENVIRONMENT_LANGUAGE_MONETARY = -3, - ENVIRONMENT_LANGUAGE_NUMERIC = -4, - ENVIRONMENT_LANGUAGE_TIME = -5, - ENVIRONMENT_COUNTRY = -6, - ENVIRONMENT_COUNTRY_COLLATE = -7, - ENVIRONMENT_COUNTRY_MONETARY = -8, - ENVIRONMENT_COUNTRY_NUMERIC = -9, - ENVIRONMENT_COUNTRYE_TIME = -10, - ENVIRONMENT_LOCALES = -11 -}; - -static JSPropertySpec environment_props[] = { - {"language", ENVIRONMENT_LANGUAGE, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"languageCollate", ENVIRONMENT_LANGUAGE_COLLATE, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"languageMonetary", ENVIRONMENT_LANGUAGE_MONETARY, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"languageNumeric", ENVIRONMENT_LANGUAGE_NUMERIC, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"languageTime", ENVIRONMENT_LANGUAGE_TIME, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"country", ENVIRONMENT_COUNTRY, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"countryCollate", ENVIRONMENT_COUNTRY_COLLATE, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"countryMonetary", ENVIRONMENT_COUNTRY_MONETARY, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"countryNumeric", ENVIRONMENT_COUNTRY_NUMERIC, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"countryTime", ENVIRONMENT_COUNTRYE_TIME, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"locales", ENVIRONMENT_LOCALES, JSPROP_ENUMERATE | JSPROP_READONLY}, - {0} -}; - -extern JSClass lm_environment_class; - - -PR_STATIC_CALLBACK(JSBool) -environment_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSEnvironment *environment; - jsint slot; - char * arch = NULL; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - environment = JS_GetInstancePrivate(cx, obj, &lm_environment_class, NULL); - if (!environment) - return JS_TRUE; - - /* Temporary using JSTARGET_UNIVERSAL_BROWSER_READ, change this to a real one before ship. */ - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - return TRUE; - - switch (slot) { - case ENVIRONMENT_LANGUAGE: - arch = INTL_GetLanguageCountry(INTL_LanguageSel); - break; - case ENVIRONMENT_LANGUAGE_COLLATE: - arch = INTL_GetLanguageCountry(INTL_LanguageCollateSel); - break; - case ENVIRONMENT_LANGUAGE_MONETARY: - arch = INTL_GetLanguageCountry(INTL_LanguageMonetarySel); - break; - case ENVIRONMENT_LANGUAGE_NUMERIC: - arch = INTL_GetLanguageCountry(INTL_LanguageNumericSel); - break; - case ENVIRONMENT_LANGUAGE_TIME: - arch = INTL_GetLanguageCountry(INTL_LanguageTimeSel); - break; - case ENVIRONMENT_COUNTRY: - arch = INTL_GetLanguageCountry(INTL_CountrySel); - break; - case ENVIRONMENT_COUNTRY_COLLATE: - arch = INTL_GetLanguageCountry(INTL_CountryCollateSel); - break; - case ENVIRONMENT_COUNTRY_MONETARY: - arch = INTL_GetLanguageCountry(INTL_CountryMonetarySel); - break; - case ENVIRONMENT_COUNTRY_NUMERIC: - arch = INTL_GetLanguageCountry(INTL_CountryNumericSel); - break; - case ENVIRONMENT_COUNTRYE_TIME: - arch = INTL_GetLanguageCountry(INTL_CountryTimeSel); - break; - case ENVIRONMENT_LOCALES: - arch = INTL_GetLanguageCountry(INTL_ALL_LocalesSel); - break; - default: - return JS_TRUE; - } - - if (arch != NULL) - { - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, arch)); - XP_FREE(arch); - } - - return JS_TRUE; -} - - -PR_STATIC_CALLBACK(void) -environment_finalize(JSContext *cx, JSObject *obj) -{ - JSEnvironment *environment; - - environment = JS_GetPrivate(cx, obj); - if (!environment) - return; - DROP_BACK_COUNT(environment->decoder); - JS_free(cx, environment); -} - -JSClass lm_environment_class = { - "Environment", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, environment_getProperty, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, environment_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Environment(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -JSObject * -lm_DefineEnvironment(MochaDecoder *decoder) -{ - JSObject *obj; - JSContext *cx; - JSEnvironment *environment; - - obj = decoder->environment; - if (obj) - return obj; - - cx = decoder->js_context; - if (!(environment = JS_malloc(cx, sizeof(JSEnvironment)))) - return NULL; - environment->decoder = NULL; /* in case of error below */ - - obj = JS_InitClass(cx, decoder->window_object, NULL, &lm_environment_class, - Environment, 0, environment_props, NULL, NULL, NULL); - - if (!obj || !JS_SetPrivate(cx, obj, environment)) { - JS_free(cx, environment); - return NULL; - } - - if (!JS_DefineProperty(cx, decoder->window_object, "environment", - OBJECT_TO_JSVAL(obj), NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - return NULL; - } - - environment->decoder = HOLD_BACK_COUNT(decoder); - decoder->environment = obj; - - return obj; -} - diff --git a/mozilla/lib/libmocha/lm_event.c b/mozilla/lib/libmocha/lm_event.c deleted file mode 100644 index f13e592d8d3..00000000000 --- a/mozilla/lib/libmocha/lm_event.c +++ /dev/null @@ -1,595 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - - -/* - * JS event class. - */ -#include "lm.h" -#include "lo_ele.h" -#include "pa_tags.h" -#include "xp.h" -#include "prbit.h" -#include "prtypes.h" -#include "mkhelp.h" /* For onhelp support */ -#include "jsapi.h" /* For onhelp support */ - -static JSEventNames event_names[] = { - /* ordered by log2(event_bit) */ - {"mousedown", "MouseDown"}, - {"mouseup", "MouseUp"}, - {"mouseover", "MouseOver"}, - {"mouseout", "MouseOut"}, - {"mousemove", "MouseMove"}, - {"mousedrag", "MouseDrag"}, - {"click", "Click"}, - {"dblclick", "DblClick"}, - {"keydown", "KeyDown"}, - {"keyup", "KeyUp"}, - {"keypress", "KeyPress"}, - {"dragdrop", "DragDrop"}, - {"focus", "Focus"}, - {"blur", "Blur"}, - {"select", "Select"}, - {"change", "Change"}, - {"reset", "Reset"}, - {"submit", "Submit"}, - {"scroll", "Scroll"}, - {"load", "Load"}, - {"unload", "Unload"}, - {"xferdone", "XferDone"}, - {"abort", "Abort"}, - {"error", "Error"}, - {"locate", "Locate"}, - {"move", "Move"}, - {"resize", "Resize"}, - {"forward", "Forward"}, - {"help", "Help"}, - {"back", "Back"}, -}; - -#define NUM_EVENTS (sizeof event_names / sizeof event_names[0]) - -static JSConstDoubleSpec event_constants[] = { - {EVENT_ALT_MASK , "ALT_MASK"}, - {EVENT_CONTROL_MASK , "CONTROL_MASK"}, - {EVENT_SHIFT_MASK , "SHIFT_MASK"}, - {EVENT_META_MASK , "META_MASK"}, - {EVENT_MOUSEDOWN , "MOUSEDOWN"}, - {EVENT_MOUSEUP , "MOUSEUP"}, - {EVENT_MOUSEOVER , "MOUSEOVER"}, - {EVENT_MOUSEOUT , "MOUSEOUT"}, - {EVENT_MOUSEMOVE , "MOUSEMOVE"}, - {EVENT_MOUSEDRAG , "MOUSEDRAG"}, - {EVENT_CLICK , "CLICK"}, - {EVENT_DBLCLICK , "DBLCLICK"}, - {EVENT_KEYDOWN , "KEYDOWN"}, - {EVENT_KEYUP , "KEYUP"}, - {EVENT_KEYPRESS , "KEYPRESS"}, - {EVENT_DRAGDROP , "DRAGDROP"}, - {EVENT_FOCUS , "FOCUS"}, - {EVENT_BLUR , "BLUR"}, - {EVENT_SELECT , "SELECT"}, - {EVENT_CHANGE , "CHANGE"}, - {EVENT_RESET , "RESET"}, - {EVENT_SUBMIT , "SUBMIT"}, - {EVENT_SCROLL , "SCROLL"}, - {EVENT_LOAD , "LOAD"}, - {EVENT_UNLOAD , "UNLOAD"}, - {EVENT_XFER_DONE , "XFER_DONE"}, - {EVENT_ABORT , "ABORT"}, - {EVENT_ERROR , "ERROR"}, - {EVENT_LOCATE , "LOCATE"}, - {EVENT_MOVE , "MOVE"}, - {EVENT_RESIZE , "RESIZE"}, - {EVENT_FORWARD , "FORWARD"}, - {EVENT_HELP , "HELP"}, - {EVENT_BACK , "BACK"}, - {0, 0} -}; - -const char * -lm_EventName(uint32 event_bit) -{ - uint index = (uint)PR_CeilingLog2(event_bit); - - if (index >= NUM_EVENTS) - return "unknown event"; - return event_names[index].lowerName; -} - -JSEventNames * -lm_GetEventNames(uint32 event_bit) -{ - uint index = (uint)PR_CeilingLog2(event_bit); - - if (index >= NUM_EVENTS) - return NULL; - return &event_names[index]; -} - -uint32 -lm_FindEventInMWContext(MWContext *context) -{ - int i; - XP_List *kids; - MWContext *kid; - uint32 events; - - - if (!context->grid_children) - return context->event_bit; - - events = 0; - - if ((kids = context->grid_children) != NULL) { - for (i = 1; ((kid = XP_ListGetObjectNum(kids, i)) != NULL); i++) { - events |= lm_FindEventInMWContext(kid); - } - } - return events; -} - -XP_Bool -LM_EventCaptureCheck(MWContext * context, uint32 current_event) { - - if (context->event_bit & current_event) - return TRUE; - if (context->grid_parent) - return LM_EventCaptureCheck(context->grid_parent, current_event); - return FALSE; -} - -enum event_tinyid { - EVENT_TYPE = -1, - EVENT_X = -2, - EVENT_Y = -3, - EVENT_LAYERX = -4, - EVENT_LAYERY = -5, - EVENT_WHICH = -6, - EVENT_MODIFIERS = -7, - EVENT_DATA = -8, - EVENT_DOCX = -9, - EVENT_DOCY = -10, - EVENT_SCREENX = -11, - EVENT_SCREENY = -12, - EVENT_OBJECT = -13 -}; - -static JSPropertySpec event_props[] = { - {"type" , EVENT_TYPE, JSPROP_ENUMERATE}, - {"x" , EVENT_X, JSPROP_ENUMERATE}, - {"y" , EVENT_Y, JSPROP_ENUMERATE}, - {"width" , EVENT_X, JSPROP_ENUMERATE}, - {"height" , EVENT_Y, JSPROP_ENUMERATE}, - {"layerX" , EVENT_LAYERX, JSPROP_ENUMERATE}, - {"layerY" , EVENT_LAYERY, JSPROP_ENUMERATE}, - {"which" , EVENT_WHICH, JSPROP_ENUMERATE}, - {"modifiers" , EVENT_MODIFIERS, JSPROP_ENUMERATE}, - {"data" , EVENT_DATA, JSPROP_ENUMERATE}, - {"pageX" , EVENT_DOCX, JSPROP_ENUMERATE}, - {"pageY" , EVENT_DOCY, JSPROP_ENUMERATE}, - {"screenX" , EVENT_SCREENX, JSPROP_ENUMERATE}, - {"screenY" , EVENT_SCREENY, JSPROP_ENUMERATE}, - {"target" , EVENT_OBJECT, JSPROP_ENUMERATE}, - {0} -}; - -extern JSClass lm_event_class; - -PR_STATIC_CALLBACK(JSBool) -event_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSEvent *event; - JSString *str; - char ** urlArray; - jsval urlVal; - JSObject *array; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - event = JS_GetInstancePrivate(cx, obj, &lm_event_class, NULL); - if (!event) - return JS_TRUE; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - /* - * You might think the following would make a real nice - * switch() statement. But if you make it into one be - * ready to battle the Win16 internal compiler error - * demons. - */ - if (JSVAL_TO_INT(id) == EVENT_TYPE) { - str = JS_NewStringCopyZ(cx, lm_EventName(event->type)); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - } - else if ((JSVAL_TO_INT(id) == EVENT_X) || (JSVAL_TO_INT(id) == EVENT_LAYERX)) { - * vp = INT_TO_JSVAL(event->x); - } - else if ((JSVAL_TO_INT(id) == EVENT_Y) || (JSVAL_TO_INT(id) == EVENT_LAYERY)){ - * vp = INT_TO_JSVAL(event->y); - } - else if (JSVAL_TO_INT(id) == EVENT_DOCX) { - * vp = INT_TO_JSVAL(event->docx); - } - else if (JSVAL_TO_INT(id) == EVENT_DOCY) { - * vp = INT_TO_JSVAL(event->docy); - } - else if (JSVAL_TO_INT(id) == EVENT_SCREENX) { - * vp = INT_TO_JSVAL(event->screenx); - } - else if (JSVAL_TO_INT(id) == EVENT_SCREENY) { - * vp = INT_TO_JSVAL(event->screeny); - } - else if (JSVAL_TO_INT(id) == EVENT_WHICH) { - if (event->type == EVENT_HELP) { - /* For onHelp events, the which parameter holds the - URL of the help topic, as given in the pHelpInfo - field of the MWContext associated with this window. */ - MWContext *context; - - context = event->ce.context; - if (context->pHelpInfo) { - char *topicID; - JSString *topicStr; - - topicID = ((HelpInfoStruct *) (context->pHelpInfo))->topicURL; - topicStr = JS_NewStringCopyZ(cx, topicID); - - * vp = STRING_TO_JSVAL(topicStr); - - } - else { - JSString *topicStr; - - topicStr = JS_NewStringCopyZ(cx, "about:blank"); /* Do not localize */ - * vp = STRING_TO_JSVAL(topicStr); - } - - } - else { - * vp = INT_TO_JSVAL(event->which); - } - } - else if (JSVAL_TO_INT(id) == EVENT_MODIFIERS) { - * vp = INT_TO_JSVAL(event->modifiers); - } - - else if (JSVAL_TO_INT(id) == EVENT_OBJECT) { - if (event->object) - * vp = OBJECT_TO_JSVAL(event->object); - } - - else if (JSVAL_TO_INT(id) == EVENT_DATA) { - if (event->type == EVENT_DRAGDROP) { - if (lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) { - array = JS_NewArrayObject(cx, 0, NULL); - if (!array) - return JS_FALSE; - - urlArray = (char**)event->data; - if (!urlArray) - return JS_TRUE; - for (slot=0; slot<(jsint)event->dataSize; slot++) { - str = JS_NewStringCopyZ(cx, urlArray[slot]); - if (!str) - return JS_FALSE; - urlVal = STRING_TO_JSVAL(str); - if (!JS_SetElement(cx, array, slot, &urlVal)) - return JS_FALSE; - } - - *vp = OBJECT_TO_JSVAL(array); - } - } - } - - return JS_TRUE; - -} - -static JSBool -GetUint32(JSContext *cx, jsval v, uint32 *uip) -{ - jsdouble d; - - if (!JS_ValueToNumber(cx, v, &d)) - return JS_FALSE; - *uip = (uint32)d; - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -event_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSEvent *event; - jsint slot, i; - JSString *str; - const char *name; - uint32 temp; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - event = JS_GetInstancePrivate(cx, obj, &lm_event_class, NULL); - if (!event) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - if (slot==EVENT_TYPE) { - if (!JSVAL_IS_STRING(*vp) || !(str = JS_ValueToString(cx, *vp))) - return JS_FALSE; - name = JS_GetStringBytes(str); - for (i = 0; i < NUM_EVENTS; i++) { - if (!XP_STRCASECMP(event_names[i].lowerName, name)) - event->type = PR_BIT(i); - } - } - else if ((slot==EVENT_X) || (slot==EVENT_LAYERX)) - return JS_ValueToInt32(cx, *vp, &event->x); - else if ((slot==EVENT_Y) || (slot==EVENT_LAYERY)) - return JS_ValueToInt32(cx, *vp, &event->y); - else if (slot==EVENT_DOCX) - return JS_ValueToInt32(cx, *vp, &event->docx); - else if (slot==EVENT_DOCY) - return JS_ValueToInt32(cx, *vp, &event->docy); - else if (slot==EVENT_SCREENX) - return JS_ValueToInt32(cx, *vp, &event->screenx); - else if (slot==EVENT_SCREENY) - return JS_ValueToInt32(cx, *vp, &event->screeny); - else if (slot==EVENT_WHICH) - return GetUint32(cx, *vp, &event->which); - else if (slot==EVENT_MODIFIERS) - GetUint32(cx, *vp, &temp); - event->modifiers = temp; - return JS_TRUE; - /* Win16 hack */ - /*else if (slot==EVENT_DATA) { - GetUint32(cx, *vp, &temp); - event->data = temp; - return JS_TRUE; - } */ - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -event_finalize(JSContext *cx, JSObject *obj) -{ - JSEvent *event; - - event = JS_GetPrivate(cx, obj); - if (!event) - return; - DROP_BACK_COUNT(event->decoder); - JS_free(cx, event); -} - -JSClass lm_event_class = { - "Event", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, event_getProperty, event_setProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, event_finalize -}; - - -static JSBool -InitEventObject(JSContext *cx, JSObject *obj, JSEvent *pEvent) - -{ - MochaDecoder *decoder; - - XP_ASSERT(JS_InstanceOf(cx, obj, &lm_event_class, NULL)); - - if (!JS_SetPrivate(cx, obj, pEvent)) { - JS_free(cx, pEvent); - return JS_FALSE; - } - - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - pEvent->decoder = HOLD_BACK_COUNT(decoder); - pEvent->saved = JS_TRUE; - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -lm_Event(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - JSEvent *pEvent; - - if (!JS_InstanceOf(cx, obj, &lm_event_class, argv)) - return JS_FALSE; - - pEvent = JS_malloc(cx, sizeof(JSEvent)); - if (!pEvent) - return JS_FALSE; - XP_BZERO(pEvent, sizeof(JSEvent)); - - /* Need to decide what arguments can be used */ - - if (!InitEventObject(cx, obj, pEvent)) - return JS_FALSE; - *rval = OBJECT_TO_JSVAL(obj); - return JS_TRUE; -} - -static JSClass event_receiver_class = { - "EventReceiver", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub -}; - -PR_STATIC_CALLBACK(JSBool) -EventReceiver(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -event_receiver_handle_event(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSObject *eventObj; - - if (argc != 1) - return JS_TRUE; - - if (!JSVAL_IS_OBJECT(argv[0]) && - !JS_ConvertValue(cx, argv[0], JSTYPE_OBJECT, &argv[0])) - return JS_FALSE; - - eventObj = JSVAL_TO_OBJECT(argv[0]); - if (!JS_InstanceOf(cx, eventObj, &lm_event_class, argv)) - return JS_FALSE; - - return lm_HandleEvent(cx, obj, eventObj, JSVAL_NULL, rval); -} - -static JSFunctionSpec event_receiver_methods[] = { - {"handleEvent", event_receiver_handle_event, 1}, - {0} -}; - -static JSClass event_capturer_class = { - "EventCapturer", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub -}; - -PR_STATIC_CALLBACK(JSBool) -EventCapturer(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -event_capturer_route_event(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSObject *eventObj; - JSEvent *event; - - if (argc != 1) - return JS_TRUE; - - if (!JSVAL_IS_OBJECT(argv[0]) && - !JS_ConvertValue(cx, argv[0], JSTYPE_OBJECT, &argv[0])) - return JS_FALSE; - - eventObj = JSVAL_TO_OBJECT(argv[0]); - if (!(event = JS_GetInstancePrivate (cx, eventObj, &lm_event_class, argv))) - return JS_FALSE; - - /* Routing objects to themselves causes infinite recursion. - * And that's a big no-no. - */ - if (event->object == obj) - return JS_TRUE; - - if (!event->object || !event->decoder || !event->decoder->window_context) - return JS_TRUE; - return lm_FindEventHandler(event->decoder->window_context, - event->object, eventObj, JSVAL_NULL, - rval); -} - -PR_STATIC_CALLBACK(JSBool) -event_capturer_capture_events(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -event_capturer_release_events(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -static JSFunctionSpec event_capturer_methods[] = { - {"routeEvent", event_capturer_route_event, 1}, - {"captureEvents", event_capturer_capture_events, 1}, - {"releaseEvents", event_capturer_release_events, 1}, - {0} -}; - -JSBool -lm_InitEventClasses(MochaDecoder *decoder) -{ - JSContext *cx; - JSObject *prototype, *ctor; - - cx = decoder->js_context; - - prototype = JS_InitClass(cx, decoder->window_object, NULL, &lm_event_class, - lm_Event, 0, event_props, NULL, NULL, NULL); - - if (!prototype|| !(ctor = JS_GetConstructor(cx, prototype))) - return JS_FALSE; - - if (!JS_DefineConstDoubles(cx, ctor, event_constants)) - return JS_FALSE; - - decoder->event_prototype = prototype; - - prototype = JS_InitClass(cx, decoder->window_object, NULL, - &event_receiver_class, EventReceiver, 0, - NULL, event_receiver_methods, NULL, NULL); - - if (!prototype) - return JS_FALSE; - decoder->event_receiver_prototype = prototype; - - prototype = JS_InitClass(cx, decoder->window_object, - decoder->event_receiver_prototype, - &event_capturer_class, EventCapturer, 0, - NULL, event_capturer_methods, NULL, NULL); - - - if (!prototype) - return JS_FALSE; - decoder->event_capturer_prototype = prototype; - return JS_TRUE; -} - - -JSObject * -lm_NewEventObject(MochaDecoder * decoder, JSEvent *pEvent) -{ - JSContext * cx; - JSObject *obj; - - cx = decoder->js_context; - obj = JS_NewObject(cx, &lm_event_class, decoder->event_prototype, 0); - if (!obj) - return NULL; - if (!InitEventObject(cx, obj, pEvent)) - return NULL; - return obj; -} diff --git a/mozilla/lib/libmocha/lm_form.c b/mozilla/lib/libmocha/lm_form.c deleted file mode 100644 index 0a3b73d92da..00000000000 --- a/mozilla/lib/libmocha/lm_form.c +++ /dev/null @@ -1,997 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * JS reflection of the HTML FORM elements. - * - * Brendan Eich, 9/27/95 - */ -#include "lm.h" -#include "lo_ele.h" -/* #include "netutils.h" */ -#include "mkutils.h" -#include "layout.h" -#include "pa_tags.h" -#include "shist.h" - -enum form_array_slot { - FORM_ARRAY_LENGTH = -1 -}; - -static JSPropertySpec form_array_props[] = { - {lm_length_str, FORM_ARRAY_LENGTH, - JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {0} -}; - -extern JSClass lm_form_array_class; - -PR_STATIC_CALLBACK(JSBool) -form_array_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSObjectArray *array; - MochaDecoder *decoder; - MWContext *context; - jsint count, slot; - lo_FormData *form_data; - int32 active_layer_id; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - array = JS_GetInstancePrivate(cx, obj, &lm_form_array_class, NULL); - if (!array) - return JS_TRUE; - decoder = array->decoder; - context = decoder->window_context; - if (!context) return JS_TRUE; - - LO_LockLayout(); - switch (slot) { - case FORM_ARRAY_LENGTH: - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, array->layer_id); - count = LO_EnumerateForms(context, array->layer_id); - LM_SetActiveLayer(context, active_layer_id); - if (count > array->length) - array->length = count; - *vp = INT_TO_JSVAL(array->length); - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - LO_UnlockLayout(); - return JS_TRUE; - } - if (slot >= array->length) - array->length = slot + 1; - /* NB: form IDs start at 1, not 0. */ - form_data = LO_GetFormDataByID(context, array->layer_id, slot + 1); - if (form_data) - *vp = OBJECT_TO_JSVAL(LM_ReflectForm(context, form_data, NULL, - array->layer_id, 0)); - break; - } - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -form_array_finalize(JSContext *cx, JSObject *obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -JSClass lm_form_array_class = { - "FormArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - form_array_getProperty, form_array_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, form_array_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -FormArray(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -JSObject * -lm_GetFormArray(MochaDecoder *decoder, JSObject *document) -{ - JSObject *obj; - JSContext *cx; - JSObjectArray *array; - JSDocument *doc; - - cx = decoder->js_context; - doc = JS_GetPrivate(cx, document); - if (!doc) - return NULL; - - obj = doc->forms; - if (obj) - return obj; - - array = JS_malloc(cx, sizeof *array); - if (!array) - return NULL; - XP_BZERO(array, sizeof *array); - - obj = JS_NewObject(cx, &lm_form_array_class, NULL, document); - if (!obj || !JS_SetPrivate(cx, obj, array)) { - JS_free(cx, array); - return NULL; - } - - if (!JS_DefineProperties(cx, obj, form_array_props)) - return NULL; - - array->decoder = HOLD_BACK_COUNT(decoder); - array->layer_id = doc->layer_id; - doc->forms = obj; - return obj; -} - -/* - * Forms can be treated as arrays of their elements, so all named properties - * have negative slot numbers < -1. - */ -enum form_slot { - FORM_LENGTH = -1, - FORM_NAME = -2, - FORM_ELEMENTS = -3, - FORM_METHOD = -4, - FORM_ACTION = -5, - FORM_ENCODING = -6, - FORM_TARGET = -7 -}; - -static char form_action_str[] = "action"; - -static JSPropertySpec form_props[] = { - {"length", FORM_LENGTH, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"name", FORM_NAME, JSPROP_ENUMERATE}, - {"elements", FORM_ELEMENTS, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"method", FORM_METHOD, JSPROP_ENUMERATE}, - {form_action_str, FORM_ACTION, JSPROP_ENUMERATE}, - {"encoding", FORM_ENCODING, JSPROP_ENUMERATE}, - {"target", FORM_TARGET, JSPROP_ENUMERATE}, - {0} -}; - -typedef struct JSForm { - JSObjectArray object_array; - JSObject *form_object; - uint32 form_event_mask; - int32 layer_id; - intn form_id; - JSString *name; - PRHashTable *form_element_map; /* Map from element id to object */ -} JSForm; - -#define form_decoder object_array.decoder -#define form_length object_array.length - -typedef struct FormMethodMap { - char *name; - uint code; -} FormMethodMap; - -static FormMethodMap form_method_map[] = { - {"get", FORM_METHOD_GET}, - {"post", FORM_METHOD_POST}, - {0} -}; - -static char * -form_method_name(uint code) -{ - FormMethodMap *mm; - - for (mm = form_method_map; mm->name; mm++) - if (mm->code == code) - return mm->name; - return "unknown"; -} - -static int -form_method_code(const char *name) -{ - FormMethodMap *mm; - - for (mm = form_method_map; mm->name; mm++) - if (XP_STRCASECMP(mm->name, name) == 0) - return mm->code; - return -1; -} - -extern JSClass lm_form_class; - -PR_STATIC_CALLBACK(JSBool) -form_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSForm *form; - MWContext *context; - lo_FormData *form_data; - jsint count; - JSString *str; - LO_Element **ele_list; - LO_FormElementStruct *first_ele; - uint first_index; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - form = JS_GetInstancePrivate(cx, obj, &lm_form_class, NULL); - if (!form) - return JS_TRUE; - context = form->form_decoder->window_context; - if (!context) return JS_TRUE; - - LO_LockLayout(); - form_data = LO_GetFormDataByID(context, form->layer_id, form->form_id); - if (!form_data) - goto good; - - switch (slot) { - case FORM_LENGTH: - count = LO_EnumerateFormElements(context, form_data); - if (count > form->form_length) - form->form_length = count; - *vp = INT_TO_JSVAL(form->form_length); - goto good; - - case FORM_NAME: - str = lm_LocalEncodingToStr(context, (char *)form_data->name); - break; - - case FORM_ELEMENTS: - *vp = OBJECT_TO_JSVAL(form->form_object); - goto good; - - case FORM_METHOD: - str = JS_NewStringCopyZ(cx, form_method_name(form_data->method)); - break; - - case FORM_ACTION: - str = JS_NewStringCopyZ(cx, (char *)form_data->action); - break; - - case FORM_ENCODING: - str = JS_NewStringCopyZ(cx, (char *)form_data->encoding); - break; - - case FORM_TARGET: - str = JS_NewStringCopyZ(cx, (char *)form_data->window_target); - break; - - default: - if ((uint)slot >= (uint)form_data->form_ele_cnt) { - /* Don't mess with a user-defined or method property. */ - goto good; - } - - PA_LOCK(ele_list, LO_Element **, form_data->form_elements); - first_ele = (LO_FormElementStruct *)ele_list[0]; - first_index = (uint)first_ele->element_index; - PA_UNLOCK(form_data->form_elements); - - *vp = OBJECT_TO_JSVAL(LM_ReflectFormElement(context, form->layer_id, - form->form_id, - first_index + slot, NULL)); - goto good; - } - - LO_UnlockLayout(); - - /* Common tail code for string-type properties. */ - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - return JS_TRUE; - -good: - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -form_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSForm *form; - MWContext *context; - lo_FormData *form_data; - const char *value; - jsint slot; - - form = JS_GetInstancePrivate(cx, obj, &lm_form_class, NULL); - if (!form) - return JS_TRUE; - context = form->form_decoder->window_context; - if (!context) - return JS_TRUE; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - LO_LockLayout(); - form_data = LO_GetFormDataByID(context, form->layer_id, form->form_id); - if (!form_data) - goto good; - - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) { - goto bad; - } - - value = JS_GetStringBytes(JSVAL_TO_STRING(*vp)); - switch (slot) { - case FORM_METHOD: - form_data->method = form_method_code(value); - break; - - case FORM_ACTION: - value = lm_CheckURL(cx, value, JS_TRUE); - if (!value) - goto bad; - if (!lm_SaveParamString(cx, &form_data->action, value)) - goto bad; - XP_FREE((char *)value); - break; - - case FORM_ENCODING: - if (!lm_SaveParamString(cx, &form_data->encoding, value)) - goto bad; - break; - - case FORM_TARGET: - if (!lm_CheckWindowName(cx, value)) - goto bad; - if (!lm_SaveParamString(cx, &form_data->window_target, value)) - goto bad; - break; - } - - LO_UnlockLayout(); - return form_getProperty(cx, obj, id, vp); -good: - LO_UnlockLayout(); - return JS_TRUE; -bad: - LO_UnlockLayout(); - return JS_FALSE; - -} - -PR_STATIC_CALLBACK(JSBool) -form_list_properties(JSContext *cx, JSObject *obj) -{ - JSForm *form; - MWContext *context; - lo_FormData *form_data; - - form = JS_GetPrivate(cx, obj); - if (!form) - return JS_TRUE; - context = form->form_decoder->window_context; - if (!context) - return JS_TRUE; - - LO_LockLayout(); - form_data = LO_GetFormDataByID(context, form->layer_id, form->form_id); - if (!form_data) { - LO_UnlockLayout(); - return JS_TRUE; - } - /* XXX should return FALSE on reflection error */ - (void) LO_EnumerateFormElements(context, form_data); - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -form_resolve_name(JSContext *cx, JSObject *obj, jsval id) -{ - JSForm *form; - MWContext *context; - lo_FormData *form_data; - LO_Element **ele_list; - LO_FormElementStruct *form_ele; - lo_FormElementMinimalData *min_data; - int32 i; - const char * name; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - - name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - form = JS_GetPrivate(cx, obj); - if (!form) - return JS_TRUE; - context = form->form_decoder->window_context; - if (!context) - return JS_TRUE; - - LO_LockLayout(); - form_data = LO_GetFormDataByID(context, form->layer_id, form->form_id); - if (!form_data) { - LO_UnlockLayout(); - return JS_TRUE; - } - - PA_LOCK(ele_list, LO_Element **, form_data->form_elements); - for (i = 0; i < form_data->form_ele_cnt; i++) { - if (ele_list[i]->type != LO_FORM_ELE) - continue; - form_ele = (LO_FormElementStruct *)ele_list[i]; - if (!form_ele->element_data) - continue; - min_data = &form_ele->element_data->ele_minimal; - if (min_data->name && XP_STRCMP((char *)min_data->name, name) == 0) - (void) LM_ReflectFormElement(context, form->layer_id, - form->form_id, - form_ele->element_index, NULL); - } - - PA_UNLOCK(form_data->form_elements); - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -form_finalize(JSContext *cx, JSObject *obj) -{ - JSForm *form; - MochaDecoder *decoder; - MWContext *context; - lo_FormData *form_data; - - form = JS_GetPrivate(cx, obj); - if (!form) - return; - decoder = form->form_decoder; - context = decoder->window_context; - if (context) { - LO_LockLayout(); - form_data = LO_GetFormDataByID(context, form->layer_id, form->form_id); - if (form_data && form_data->mocha_object == obj) - form_data->mocha_object = NULL; - LO_UnlockLayout(); - } - DROP_BACK_COUNT(decoder); - if (form->form_element_map) - PR_HashTableDestroy(form->form_element_map); - JS_free(cx, form); -} - -JSClass lm_form_class = { - "Form", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, form_getProperty, form_setProperty, - form_list_properties, form_resolve_name, JS_ConvertStub, form_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Form(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -static JSBool -form_native_prolog(JSContext *cx, JSObject *obj, jsval *argv, - JSForm **formp, lo_FormData **form_datap) -{ - JSForm *form; - MochaDecoder *decoder; - lo_FormData *form_data; - - if (!JS_InstanceOf(cx, obj, &lm_form_class, argv)) - return JS_FALSE; - form = JS_GetPrivate(cx, obj); - if (!form) { - *formp = NULL; - *form_datap = NULL; - return JS_TRUE; - } - decoder = form->form_decoder; - form_data = decoder->window_context - ? LO_GetFormDataByID(decoder->window_context, - form->layer_id, - form->form_id) - : 0; - *formp = form; - *form_datap = form_data; - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -form_reset(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSForm *form; - lo_FormData *form_data; - LO_Element **ele_list; - - if (!form_native_prolog(cx, obj, argv, &form, &form_data)) - return JS_FALSE; - if (form_data && form_data->form_ele_cnt > 0) { - /* There is no form LO_Element; use the first thing in the form. */ - PA_LOCK(ele_list, LO_Element **, form_data->form_elements); - ET_lo_ResetForm(form->form_decoder->window_context, ele_list[0]); - PA_UNLOCK(form_data->form_elements); - } - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -form_submit(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSForm *form; - lo_FormData *form_data; - JSBool ok; - MochaDecoder *decoder; - MWContext *context; - LO_Element **ele_list, *element; - - if (!form_native_prolog(cx, obj, argv, &form, &form_data)) - return JS_FALSE; - if (!form_data) - return JS_TRUE; - - switch (NET_URL_Type((const char *) form_data->action)) { - case MAILTO_TYPE_URL: - case NEWS_TYPE_URL: - /* only OK if we are a signed script */ - ok = lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_SEND_MAIL); - break; - default: - ok = JS_TRUE; - break; - } - - if (!ok) { - /* XXX silently fail this mailto: or news: form post. */ - return JS_TRUE; - } - - if (form_data->form_ele_cnt > 0) { - decoder = form->form_decoder; - context = decoder->window_context; - PA_LOCK(ele_list, LO_Element **, form_data->form_elements); - element = ele_list[0]; - PA_UNLOCK(form_data->form_elements); - ET_fe_SubmitInputElement(context, element); - - } - - return JS_TRUE; -} - -static JSFunctionSpec form_methods[] = { - {"reset", form_reset, 0}, - {"submit", form_submit, 0}, - {0} -}; - -static JSBool -form_event(MWContext *context, LO_Element *element, JSEvent *event, char *method) -{ - lo_FormData *form_data; - JSObject *obj; - JSForm *form; - JSBool ok; - jsval rval; - - if (element->type != LO_FORM_ELE && - (element->type != LO_IMAGE || !element->lo_image.image_attr)) { - LO_UnlockLayout(); - return JS_TRUE; - } - form_data = LO_GetFormDataByID(context, - (element->type == LO_IMAGE) - ? element->lo_image.image_attr->layer_id - : element->lo_form.layer_id, - (element->type == LO_IMAGE) - ? element->lo_image.image_attr->form_id - : element->lo_form.form_id); - if (!form_data || !(obj = form_data->mocha_object)) { - LO_UnlockLayout(); - return JS_TRUE; - } - - - LO_UnlockLayout(); - - form = JS_GetPrivate(context->mocha_context, obj); - if (!form) - return JS_TRUE; - - if (form->form_event_mask & event->type) - return JS_TRUE; - - form->form_event_mask |= event->type; - ok = lm_SendEvent(context, obj, event, &rval); - form->form_event_mask &= ~event->type; - - if (ok && rval == JSVAL_FALSE) - return JS_FALSE; - return JS_TRUE; -} - -JSBool -lm_SendOnReset(MWContext *context, JSEvent *event, LO_Element *element) -{ - return form_event(context, element, event, lm_onReset_str); -} - -JSBool -lm_SendOnSubmit(MWContext *context, JSEvent *event, LO_Element *element) -{ - return form_event(context, element, event, lm_onSubmit_str); -} - -#ifdef DEBUG_brendan -static char * -form_name(lo_FormData *form_data) -{ - static char buf[20]; - - if (form_data->name) - return (char *)form_data->name; - PR_snprintf(buf, sizeof buf, "$form%d", form_data->id - 1); - return buf; -} -#endif - -JSObject * -LM_ReflectForm(MWContext *context, lo_FormData *form_data, PA_Tag * tag, - int32 layer_id, uint index) -{ - JSObject *obj, *array_obj, *prototype, *document; - MochaDecoder *decoder; - JSContext *cx; - JSForm *form; - JSBool ok; - lo_TopState *top_state; - PRHashTable *map; - - /* if we got passed an index get the form data by index and don't - * trust the lo_FormData that was passed in - */ - if (index) - form_data = LO_GetFormDataByID(context, layer_id, index); - - if (!form_data) - return NULL; - - obj = form_data->mocha_object; - if (obj) - return obj; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - cx = decoder->js_context; - - top_state = lo_GetMochaTopState(context); - if (top_state->resize_reload) { - map = lm_GetIdToObjectMap(decoder); - - if (map) - obj = (JSObject *)PR_HashTableLookup(map, - LM_GET_MAPPING_KEY(LM_FORMS, layer_id, index)); - if (obj) { - form_data->mocha_object = obj; - goto out; - } - } - - /* Get the document object that will hold this form */ - document = lm_GetDocumentFromLayerId(decoder, layer_id); - if (!document) - goto out; - - array_obj = lm_GetFormArray(decoder, document); - if (!array_obj) - goto out; - - prototype = decoder->form_prototype; - if (!prototype) { - prototype = JS_InitClass(cx, decoder->window_object, - decoder->event_receiver_prototype, - &lm_form_class, - Form, 0, form_props, form_methods, - NULL, NULL); - if (!prototype) - goto out; - decoder->form_prototype = prototype; - } - - form = JS_malloc(cx, sizeof *form); - if (!form) - goto out; - XP_BZERO(form, sizeof *form); - - obj = JS_NewObject(cx, &lm_form_class, prototype, document); - if (!obj || !JS_SetPrivate(cx, obj, form)) { - JS_free(cx, form); - obj = NULL; - goto out; - } - if (form_data->name) { - ok = JS_DefineProperty(cx, document, - (char *) form_data->name, - OBJECT_TO_JSVAL(obj), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY); - if (!ok) { - obj = NULL; - goto out; - } - } - - /* put it in the form array */ - if (!lm_AddObjectToArray(cx, array_obj, (char *) form_data->name, - index - 1, obj)) { - obj = NULL; - goto out; - } - - /* Put it in the index to object hash table */ - map = lm_GetIdToObjectMap(decoder); - if (map) - PR_HashTableAdd(map, LM_GET_MAPPING_KEY(LM_FORMS, layer_id, index), - obj); - - form->form_decoder = HOLD_BACK_COUNT(decoder); - form->form_element_map = NULL; - form->form_object = obj; - form->form_id = form_data->id; - form->layer_id = layer_id; - form_data->mocha_object = obj; - - /* see if there are any other attributes that we should be - * adding to this object - */ - if(tag) { - PA_Block onreset, onsubmit, id; - - /* don't hold the layout lock across compiles */ - LO_UnlockLayout(); - - onreset = lo_FetchParamValue(context, tag, PARAM_ONRESET); - onsubmit = lo_FetchParamValue(context, tag, PARAM_ONSUBMIT); - id = lo_FetchParamValue(context, tag, PARAM_ID); - - ok = JS_TRUE; - if (onsubmit) { - ok = lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONSUBMIT, onsubmit); - PA_FREE(onsubmit); - } - if (onreset) { - ok &= lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONRESET, onreset); - PA_FREE(onreset); - } - if (!ok) - obj = NULL; - if (id) - PA_FREE(id); - - LO_LockLayout(); - } - -out: - LM_PutMochaDecoder(decoder); - return obj; -} - -JSObject * -lm_GetFormObjectByID(MWContext * context, int32 layer_id, uint form_id) -{ - lo_FormData *form_data; - - form_data = LO_GetFormDataByID(context, layer_id, form_id); - if (!form_data) - return NULL; - return form_data->mocha_object; -} - -LO_FormElementStruct * -lm_GetFormElementByIndex(JSContext * cx, JSObject *form_obj, int32 index) -{ - JSForm *form; - MWContext *context; - lo_FormData *form_data; - - if (!form_obj) - return NULL; - form = JS_GetPrivate(cx, form_obj); - if (!form) - return NULL; - context = form->form_decoder->window_context; - if (!context) - return NULL; - form_data = LO_GetFormDataByID(context, form->layer_id, form->form_id); - if (!form_data) - return NULL; - return LO_GetFormElementByIndex(form_data, index); -} - -PRIVATE JSBool -lm_normalize_element_index(lo_FormData *form_data, uint *index) -{ - LO_Element **ele_list; - LO_FormElementStruct *first_ele; - uint first_index; - - /* XXX confine this to laymocha.c where LO_GetFormByElementIndex() lives */ - if (form_data->form_ele_cnt == 0) { - *index = 0; - } else { - ele_list = (LO_Element **) form_data->form_elements; - first_ele = (LO_FormElementStruct *)ele_list[0]; - first_index = (uint)first_ele->element_index; - XP_ASSERT(*index >= first_index); - if (*index < first_index) - return JS_FALSE; - *index -= first_index; - } - - return JS_TRUE; -} - -JSBool -lm_AddFormElement(JSContext *cx, JSObject *form_obj, JSObject *ele_obj, - char *name, uint index) -{ - JSForm *form; - MWContext *context; - lo_FormData *form_data; - - form = JS_GetPrivate(cx, form_obj); - if (!form) - return JS_TRUE; - context = form->form_decoder->window_context; - if (!context) - return JS_FALSE; - form_data = LO_GetFormDataByID(context, form->layer_id, form->form_id); - if (!form_data) - return JS_FALSE; - - if (!lm_normalize_element_index(form_data, &index)) - return JS_FALSE; - - if (!form->form_element_map) - form->form_element_map = PR_NewHashTable(LM_FORM_ELEMENT_MAP_SIZE, - lm_KeyHash, - PR_CompareValues, - PR_CompareValues, - NULL, NULL); - if (!form->form_element_map) - return JS_FALSE; - - PR_HashTableAdd(form->form_element_map, (void *)index, ele_obj); - - /* put it in the form elememt array */ - return (lm_AddObjectToArray(cx, form_obj, name, index, ele_obj)); - -} - -JSObject * -lm_GetFormElementFromMapping(JSContext *cx, JSObject *form_obj, uint32 index) -{ - JSForm *form; - MWContext *context; - lo_FormData *form_data; - - form = JS_GetPrivate(cx, form_obj); - if (!form || !form->form_element_map) - return NULL; - - context = form->form_decoder->window_context; - if (!context) - return NULL; - form_data = LO_GetFormDataByID(context, form->layer_id, form->form_id); - if (!form_data) - return NULL; - - /* - * This converts element_id to index within this form. Need to do - * this here, because it also happens when we put it into the hash - * table. - */ - if (!lm_normalize_element_index(form_data, (uint *)&index)) - return NULL; - - return (JSObject *)PR_HashTableLookup(form->form_element_map, - (void *)index); -} - - -JSBool -lm_ReflectRadioButtonArray(MWContext *context, int32 layer_id, intn form_id, - const char *name, PA_Tag * tag) -{ - lo_FormData *form_data; - JSBool ok; - LO_Element **ele_list; - int32 i, element_index; - LO_FormElementStruct *form_ele; - LO_FormElementData *data; - - form_data = LO_GetFormDataByID(context, layer_id, form_id); - if (!form_data) - return JS_FALSE; - ok = JS_TRUE; - for (i = 0; i < form_data->form_ele_cnt; i++) { - /* - * Resample since the reflect call may release the layout - * lock and the element list might get reallocated - */ - ele_list = (LO_Element **) form_data->form_elements; - form_ele = (LO_FormElementStruct *)ele_list[i]; - - /* - * If both the current element name and the passed in name are - * non-NULL they must be equal. If name is NULL reflect all - * radio buttons - */ - data = form_ele->element_data; - if (data && - ((data->ele_minimal.name && name) ? - !XP_STRCMP((char *)data->ele_minimal.name, name) : - data->type == FORM_TYPE_RADIO) && - form_ele->mocha_object == NULL) { - - element_index = form_ele->element_index; - ok = (JSBool) - (LM_ReflectFormElement(context, layer_id, form_id, - element_index, - (tag->lo_data == (void *)element_index) - ? tag : NULL) - != NULL); - if (!ok) - break; - } - } - return ok; -} diff --git a/mozilla/lib/libmocha/lm_hardw.c b/mozilla/lib/libmocha/lm_hardw.c deleted file mode 100644 index 1071dd4600d..00000000000 --- a/mozilla/lib/libmocha/lm_hardw.c +++ /dev/null @@ -1,163 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - * JS reflection of the Hardware info top-level object. - * - * Tom Pixley, 1/2/98 - */ -#ifdef NAV_HARDWARE -#include "lm.h" - -typedef struct JSHardware { - MochaDecoder *decoder; -} JSHardware; - -enum hardware_tinyid { - HARDWARE_ARCHITECTURE = -1, - HARDWARE_CLOCK_SPEED = -2, - HARDWARE_RAM = -3 -}; - -static JSPropertySpec hardware_props[] = { - {"architecture", HARDWARE_ARCHITECTURE, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"clockSpeed", HARDWARE_CLOCK_SPEED, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"ram", HARDWARE_RAM , JSPROP_ENUMERATE | JSPROP_READONLY}, - {0} -}; - -extern JSClass lm_hardware_class; - -PR_STATIC_CALLBACK(JSBool) -hardware_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - MWContext *context; - JSHardware *hardware; - jsint slot; - char * arch; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - hardware = JS_GetInstancePrivate(cx, obj, &lm_hardware_class, NULL); - if (!hardware) - return JS_TRUE; - context = hardware->decoder->window_context; - if (!context) - return JS_TRUE; - - switch (slot) { - case HARDWARE_ARCHITECTURE: -#ifdef XP_WIN - arch = ET_moz_CallFunctionString((ETStringPtrFunc)FE_SystemCPUInfo, NULL); - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, arch)); - XP_FREE(arch); -#endif - break; - case HARDWARE_CLOCK_SPEED: -#ifdef XP_WIN - *vp = INT_TO_JSVAL( - ET_moz_CallFunctionInt((ETIntPtrFunc)FE_SystemClockSpeed, NULL)); -#endif - break; - case HARDWARE_RAM: -#ifdef XP_WIN - *vp = INT_TO_JSVAL( - ET_moz_CallFunctionInt((ETIntPtrFunc)FE_SystemRAM, NULL)); -#endif - break; - default: - return JS_TRUE; - } - return JS_TRUE; -} - - -PR_STATIC_CALLBACK(void) -hardware_finalize(JSContext *cx, JSObject *obj) -{ - JSHardware *hardware; - - hardware = JS_GetPrivate(cx, obj); - if (!hardware) - return; - DROP_BACK_COUNT(hardware->decoder); - JS_free(cx, hardware); -} - -JSClass lm_hardware_class = { - "Hardware", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, hardware_getProperty, hardware_getProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, hardware_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Hardware(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -JSObject * -lm_DefineHardware(MochaDecoder *decoder, JSObject *parent) -{ - JSObject *obj; - JSContext *cx; - JSHardware *hardware; - - if (parent == decoder->window_object) { - obj = decoder->hardware; - if (obj) - return obj; - } - - cx = decoder->js_context; - if (!(hardware = JS_malloc(cx, sizeof(JSHardware)))) - return 0; - hardware->decoder = NULL; /* in case of error below */ - - obj = JS_InitClass(cx, decoder->window_object, NULL, &lm_hardware_class, - Hardware, 0, hardware_props, NULL, NULL, NULL); - - if (!obj || !JS_SetPrivate(cx, obj, hardware)) { - JS_free(cx, hardware); - return 0; - } - - if (!JS_DefineProperty(cx, parent, "hardware", - OBJECT_TO_JSVAL(obj), NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - return 0; - } - - hardware->decoder = HOLD_BACK_COUNT(decoder); - if (parent == decoder->window_object) - decoder->hardware = obj; - return obj; -} -#else -#ifdef OSF1 -static int dumbcc = 0; /* The 3.2 compiler aborts when there's "nothing to compile", and 4.0 warns. This fixes both problems. */ -#endif -#endif diff --git a/mozilla/lib/libmocha/lm_hist.c b/mozilla/lib/libmocha/lm_hist.c deleted file mode 100644 index fa815023e80..00000000000 --- a/mozilla/lib/libmocha/lm_hist.c +++ /dev/null @@ -1,344 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * JS reflection of the Navigator Session History. - * - * Brendan Eich, 9/8/95 - */ -#include "lm.h" -#include "shist.h" -#include "structs.h" - -enum hist_slot { - HIST_LENGTH = -1, - HIST_CURRENT = -2, - HIST_PREVIOUS = -3, - HIST_NEXT = -4 -}; - -static JSPropertySpec hist_props[] = { - {lm_length_str, HIST_LENGTH, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"current", HIST_CURRENT, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"previous", HIST_PREVIOUS, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"next", HIST_NEXT, JSPROP_ENUMERATE|JSPROP_READONLY}, - {0} -}; - -typedef struct JSHistory { - MochaDecoder *decoder; - JSObject *object; -} JSHistory; - -/* - * DO NOT REMOVE: - * forward decl of hist_go and early def of hist_forward to work - * around a Win16 compiler bug! - */ -JSBool PR_CALLBACK -hist_go(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval); - -PR_STATIC_CALLBACK(JSBool) -hist_forward(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval) -{ - jsval plus_one; - - plus_one = INT_TO_JSVAL(1); - return hist_go(cx, obj, 1, &plus_one, rval); -} - -extern JSClass lm_hist_class; - -PR_STATIC_CALLBACK(JSBool) -hist_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSHistory *hist; - MochaDecoder *decoder; - MWContext *context; - History_entry *he, *he2; - JSString *str; - XP_List *histlist; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - hist = JS_GetInstancePrivate(cx, obj, &lm_hist_class, NULL); - if (!hist) - return JS_TRUE; - decoder = hist->decoder; - context = decoder->window_context; - if (!context) - return JS_TRUE; - - str = JSVAL_TO_STRING(JS_GetEmptyStringValue(cx)); - switch (slot) { - case HIST_LENGTH: - histlist = SHIST_GetList(context); - *vp = INT_TO_JSVAL(XP_ListCount(histlist)); - return JS_TRUE; - - case HIST_CURRENT: - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - break; - he = SHIST_GetCurrent(&context->hist); - if (he && he->address) - str = JS_NewStringCopyZ(cx, he->address); - break; - - case HIST_PREVIOUS: - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - break; - he2 = SHIST_GetPrevious(context); - if (he2 && he2->address) - str = JS_NewStringCopyZ(cx, he2->address); - break; - - case HIST_NEXT: - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - break; - he2 = SHIST_GetNext(context); - if (he2 && he2->address) - str = JS_NewStringCopyZ(cx, he2->address); - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - return JS_TRUE; - } - if (lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) { - /* Access granted against potential privacy attack */ - he = SHIST_GetObjectNum(&context->hist, 1 + slot); - if (he && he->address) { - str = JS_NewStringCopyZ(cx, he->address); - } - } - break; - } - - /* Common tail code for string-type properties. */ - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -hist_finalize(JSContext *cx, JSObject *obj) -{ - JSHistory *hist; - - hist = JS_GetPrivate(cx, obj); - if (!hist) - return; - DROP_BACK_COUNT(hist->decoder); - XP_DELETE(hist); -} - -JSClass lm_hist_class = { - "History", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, hist_getProperty, hist_getProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, hist_finalize -}; - -JSBool PR_CALLBACK -hist_go(JSContext *cx, JSObject *obj, - unsigned int argc, jsval *argv, jsval *rval) -{ - JSHistory *hist; - MochaDecoder *decoder; - MWContext *context; - History_entry *he; - int index, delta; - XP_List *histlist; - URL_Struct *url_struct; - - if (!JS_InstanceOf(cx, obj, &lm_hist_class, argv)) - return JS_FALSE; - hist = JS_GetPrivate(cx, obj); - if (!hist) - return JS_TRUE; - decoder = hist->decoder; - context = decoder->window_context; - if (!context) - return JS_TRUE; - he = SHIST_GetCurrent(&context->hist); - - if (JSVAL_IS_INT(argv[0])) { - index = SHIST_GetIndex(&context->hist, he); - delta = JSVAL_TO_INT(argv[0]); - index += delta; - he = SHIST_GetObjectNum(&context->hist, index); - } - else if (JSVAL_IS_STRING(argv[0])) { - /* i18n problem */ - /* I believe this part is broken for I18N. Particular after we change the he->title to UTF8 */ - char * argv_str = JS_GetStringBytes(JSVAL_TO_STRING(argv[0])); - histlist = SHIST_GetList(context); - if (histlist) - histlist = histlist->next; - - for (index = XP_ListCount(histlist); index > 0; index--) { - he = SHIST_GetObjectNum(&context->hist, index); - if (XP_STRSTR(he->address, argv_str) || - XP_STRSTR(he->title, argv_str)) { - goto out; - } - } - he = 0; - } - else { - he = 0; - } - - if (!he) - return JS_TRUE; -out: - url_struct = SHIST_CreateURLStructFromHistoryEntry(context, he); - if (!url_struct) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - return lm_GetURL(cx, decoder, url_struct); -} - -PR_STATIC_CALLBACK(JSBool) -hist_back(JSContext *cx, JSObject *obj, - unsigned int argc, jsval *argv, jsval *rval) -{ - jsval minus_one; - - minus_one = INT_TO_JSVAL(-1); - return hist_go(cx, obj, 1, &minus_one, rval); -} - -PR_STATIC_CALLBACK(JSBool) -hist_toString(JSContext *cx, JSObject *obj, - unsigned int argc, jsval *argv, jsval *rval) -{ - JSHistory *hist; - MochaDecoder *decoder; - MWContext *context; - XP_List *histlist; - History_entry *he; - char *bytes; - JSString *str; - - if (!JS_InstanceOf(cx, obj, &lm_hist_class, argv)) - return JS_FALSE; - - hist = JS_GetPrivate(cx, obj); - if (!hist) - return JS_TRUE; - decoder = hist->decoder; - context = decoder->window_context; - if (!context) - return JS_TRUE; - histlist = SHIST_GetList(context); - - /* only build a string if we have permission */ - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_TRUE; - - bytes = 0; - StrAllocCopy(bytes, "<TITLE>Window History</TITLE>" - "<TABLE BORDER=0 ALIGN=center VALIGN=top HSPACE=8>"); - while ((he = XP_ListNextObject(histlist)) != 0) { - StrAllocCat(bytes, "<TR><TD VALIGN=top><STRONG>"); - /* i18n problem */ - /* I believe this part is broken for I18N. Particular after we change the he->title to UTF8 */ - /* force the output HTML to display as in UTF8 will fix it. */ - StrAllocCat(bytes, he->title); - StrAllocCat(bytes, "</STRONG></TD><TD>&nbsp;</TD>" - "<TD VALIGN=top><A HREF=\""); - StrAllocCat(bytes, he->address); - StrAllocCat(bytes, "\">"); - StrAllocCat(bytes, he->address); - StrAllocCat(bytes, "</A></TD></TR>"); - } - StrAllocCat(bytes, "</TABLE>"); - if (!bytes) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - - str = JS_NewString(cx, bytes, XP_STRLEN(bytes)); - if (!str) - return JS_FALSE; - *rval = STRING_TO_JSVAL(str); - return JS_TRUE; -} - -static JSFunctionSpec hist_methods[] = { - {"go", hist_go, 1}, - {"back", hist_back, 0}, - {"forward", hist_forward, 0}, - {lm_toString_str, hist_toString, 1}, - {0} -}; - -/* XXX avoid ntypes.h History typedef name clash */ -PR_STATIC_CALLBACK(JSBool) -History_ctor(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - - -JSObject * -lm_DefineHistory(MochaDecoder *decoder) -{ - JSObject *obj; - JSContext *cx; - JSHistory *hist; - - obj = decoder->history; - if (obj) - return obj; - - cx = decoder->js_context; - hist = JS_malloc(cx, sizeof *hist); - if (!hist) - return NULL; - XP_BZERO(hist, sizeof *hist); - - obj = JS_InitClass(cx, decoder->window_object, NULL, &lm_hist_class, - History_ctor, 0, hist_props, hist_methods, NULL, NULL); - if (!obj || !JS_SetPrivate(cx, obj, hist)) { - JS_free(cx, hist); - return NULL; - } - - if (!JS_DefineProperty(cx, decoder->window_object, "history", - OBJECT_TO_JSVAL(obj), NULL, NULL, - JSPROP_ENUMERATE|JSPROP_READONLY)) { - return NULL; - } - - hist->object = obj; - hist->decoder = HOLD_BACK_COUNT(decoder); - decoder->history = obj; - return obj; -} diff --git a/mozilla/lib/libmocha/lm_href.c b/mozilla/lib/libmocha/lm_href.c deleted file mode 100644 index 52279a5305e..00000000000 --- a/mozilla/lib/libmocha/lm_href.c +++ /dev/null @@ -1,699 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * JS reflection of the HREF and NAME Anchors in the current document. - * - * Brendan Eich, 9/8/95 - */ -#include "lm.h" -#include "pa_tags.h" -#include "layout.h" /* XXX for lo_NameList only */ - -enum anchor_array_slot { - ANCHOR_ARRAY_LENGTH = -1 -}; - -static JSPropertySpec anchor_array_props[] = { - {lm_length_str, ANCHOR_ARRAY_LENGTH, - JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {0} -}; - -extern JSClass lm_link_array_class; - -PR_STATIC_CALLBACK(JSBool) -link_array_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSObjectArray *array; - MochaDecoder *decoder; - MWContext *context; - jsint count, slot; - LO_AnchorData *anchor_data; - int32 active_layer_id; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - array = JS_GetInstancePrivate(cx, obj, &lm_link_array_class, NULL); - if (!array) - return JS_TRUE; - decoder = array->decoder; - context = decoder->window_context; - if (!context) return JS_TRUE; - - LO_LockLayout(); - switch (slot) { - case ANCHOR_ARRAY_LENGTH: - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, array->layer_id); - count = LO_EnumerateLinks(context, array->layer_id); - LM_SetActiveLayer(context, active_layer_id); - if (count > array->length) - array->length = count; - *vp = INT_TO_JSVAL(count); - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - LO_UnlockLayout(); - return JS_TRUE; - } - if (slot >= array->length) - array->length = slot + 1; - anchor_data = LO_GetLinkByIndex(context, array->layer_id, (uint)slot); - if (anchor_data) { - *vp = OBJECT_TO_JSVAL(LM_ReflectLink(context, anchor_data, NULL, - array->layer_id, (uint)slot)); - } - break; - } - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -anchor_array_finalize(JSContext *cx, JSObject *obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -JSClass lm_link_array_class = { - "LinkArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - link_array_getProperty, link_array_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, anchor_array_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -LinkArray(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -extern JSClass lm_anchor_array_class; - -PR_STATIC_CALLBACK(JSBool) -anchor_array_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSObjectArray *array; - MochaDecoder *decoder; - MWContext *context; - jsint count, slot; - lo_NameList *name_rec; - int32 active_layer_id; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - array = JS_GetInstancePrivate(cx, obj, &lm_anchor_array_class, NULL); - if (!array) - return JS_TRUE; - decoder = array->decoder; - context = decoder->window_context; - if (!context) return JS_TRUE; - LO_LockLayout(); - switch (slot) { - case ANCHOR_ARRAY_LENGTH: - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, array->layer_id); - count = LO_EnumerateNamedAnchors(context, array->layer_id); - LM_SetActiveLayer(context, active_layer_id); - if (count > array->length) - array->length = count; - *vp = INT_TO_JSVAL(count); - break; - - default: - if (slot >= array->length) - array->length = slot + 1; - name_rec = LO_GetNamedAnchorByIndex(context, array->layer_id, - (uint)slot); - if (name_rec) { - *vp = OBJECT_TO_JSVAL(LM_ReflectNamedAnchor(context, name_rec, - NULL, array->layer_id, - (uint)slot)); - } - break; - } - LO_UnlockLayout(); - return JS_TRUE; -} - -JSClass lm_anchor_array_class = { - "AnchorArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - anchor_array_getProperty, anchor_array_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, anchor_array_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -AnchorArray(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -static JSObject * -reflect_anchor_array(MochaDecoder *decoder, JSClass *clasp, - JSNative constructor, JSObject *document) -{ - JSContext *cx; - JSObject *obj, *prototype; - JSObjectArray *array; - JSDocument *doc; - - cx = decoder->js_context; - doc = JS_GetPrivate(cx, document); - if (!doc) - return NULL; - - prototype = JS_InitClass(cx, decoder->window_object, NULL, - clasp, constructor, 0, - anchor_array_props, NULL, NULL, NULL); - if (!prototype) - return NULL; - array = JS_malloc(cx, sizeof *array); - if (!array) - return NULL; - XP_BZERO(array, sizeof *array); - obj = JS_NewObject(cx, clasp, prototype, document); - if (!obj || !JS_SetPrivate(cx, obj, array)) { - JS_free(cx, array); - return NULL; - } - array->decoder = HOLD_BACK_COUNT(decoder); - array->layer_id = doc->layer_id; - return obj; -} - -JSObject * -lm_GetLinkArray(MochaDecoder *decoder, JSObject *document) -{ - JSObject *obj; - JSDocument *doc; - - doc = JS_GetPrivate(decoder->js_context, document); - if (!doc) - return NULL; - - obj = doc->links; - if (obj) - return obj; - obj = reflect_anchor_array(decoder, &lm_link_array_class, LinkArray, - document); - doc->links = obj; - return obj; -} - -JSObject * -lm_GetNameArray(MochaDecoder *decoder, JSObject *document) -{ - JSObject *obj; - JSDocument *doc; - - doc = JS_GetPrivate(decoder->js_context, document); - if (!doc) - return NULL; - - obj = doc->anchors; - if (obj) - return obj; - obj = reflect_anchor_array(decoder, &lm_anchor_array_class, AnchorArray, - document); - doc->anchors = obj; - return obj; -} - -JSObject * -LM_ReflectLink(MWContext *context, LO_AnchorData *anchor_data, PA_Tag * tag, - int32 layer_id, uint index) -{ - JSObject *obj, *array_obj, *document; - MochaDecoder *decoder; - JSContext *cx; - JSURL *url; - lo_TopState *top_state; - PRHashTable *map; - - anchor_data = LO_GetLinkByIndex(context, layer_id, index); - if (!anchor_data) - return NULL; - - obj = anchor_data->mocha_object; - if (obj) - return obj; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - cx = decoder->js_context; - - top_state = lo_GetMochaTopState(context); - if (top_state->resize_reload) { - map = lm_GetIdToObjectMap(decoder); - - if (map) - obj = (JSObject *)PR_HashTableLookup(map, - LM_GET_MAPPING_KEY(LM_LINKS, layer_id, index)); - if (obj) { - anchor_data->mocha_object = obj; - LM_PutMochaDecoder(decoder); - return obj; - } - } - - /* Get the document object that will hold this link */ - document = lm_GetDocumentFromLayerId(decoder, layer_id); - if (!document) { - LM_PutMochaDecoder(decoder); - return NULL; - } - - array_obj = lm_GetLinkArray(decoder, document); - if (!array_obj) { - LM_PutMochaDecoder(decoder); - return NULL; - } - - url = lm_NewURL(cx, decoder, anchor_data, document); - - if (!url) { - LM_PutMochaDecoder(decoder); - return NULL; - } - url->index = index; - url->layer_id = layer_id; - obj = url->url_object; - - /* XXX should find a name/id to pass in */ - /* put it in the links array */ - if (!lm_AddObjectToArray(cx, array_obj, NULL, index, obj)) { - LM_PutMochaDecoder(decoder); - return NULL; - } - - /* Put it in the index to object hash table */ - map = lm_GetIdToObjectMap(decoder); - if (map) - PR_HashTableAdd(map, LM_GET_MAPPING_KEY(LM_LINKS, layer_id, index), - obj); - - anchor_data->mocha_object = obj; - LM_PutMochaDecoder(decoder); - - /* see if there are any event handlers we need to reflect */ - if(tag) { - - PA_Block onclick, onmouseover, onmouseout, onmousedown, onmouseup, ondblclick, id; - - /* don't hold the layout lock across compiles */ - LO_UnlockLayout(); - - onclick = lo_FetchParamValue(context, tag, PARAM_ONCLICK); - onmouseover = lo_FetchParamValue(context, tag, PARAM_ONMOUSEOVER); - onmouseout = lo_FetchParamValue(context, tag, PARAM_ONMOUSEOUT); - onmousedown = lo_FetchParamValue(context, tag, PARAM_ONMOUSEDOWN); - onmouseup = lo_FetchParamValue(context, tag, PARAM_ONMOUSEUP); - ondblclick = lo_FetchParamValue(context, tag, PARAM_ONDBLCLICK); - id = lo_FetchParamValue(context, tag, PARAM_ID); - - if (onclick) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, url->url_object, - PARAM_ONCLICK, onclick); - PA_FREE(onclick); - anchor_data->event_handler_present = TRUE; - } - if (onmouseover) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, url->url_object, - PARAM_ONMOUSEOVER, onmouseover); - PA_FREE(onmouseover); - anchor_data->event_handler_present = TRUE; - } - if (onmouseout) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, url->url_object, - PARAM_ONMOUSEOUT, onmouseout); - PA_FREE(onmouseout); - anchor_data->event_handler_present = TRUE; - } - if (onmousedown) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, url->url_object, - PARAM_ONMOUSEDOWN, onmousedown); - PA_FREE(onmousedown); - anchor_data->event_handler_present = TRUE; - } - if (onmouseup) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, url->url_object, - PARAM_ONMOUSEUP, onmouseup); - PA_FREE(onmouseup); - anchor_data->event_handler_present = TRUE; - } - if (ondblclick) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, url->url_object, - PARAM_ONDBLCLICK, ondblclick); - PA_FREE(ondblclick); - anchor_data->event_handler_present = TRUE; - } - if (id) - PA_FREE(id); - LO_LockLayout(); - } - - return obj; -} - -/* - * XXX chouck - the onLocate stuff hasn't been implemented yet - * so just return JS_TRUE and go away - */ -JSBool -LM_SendOnLocate(MWContext *context, lo_NameList *name_rec) -{ - JSBool ok; - JSObject *obj; - jsval result; - JSEvent *event; - - return JS_TRUE; - - obj = name_rec->mocha_object; - if (!obj) - return JS_FALSE; - - event = XP_NEW_ZAP(JSEvent); - event->type = EVENT_LOCATE; - ok = lm_SendEvent(context, obj, event, &result); - return ok; -} - -/* Anchor property slots. */ -enum anchor_slot { - ANCHOR_TEXT = -1, - ANCHOR_NAME = -2, - ANCHOR_X = -3, - ANCHOR_Y = -4 -}; - -/* Static anchor properties. */ -static JSPropertySpec anchor_props[] = { - {"text", ANCHOR_TEXT, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"name", ANCHOR_NAME, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"x", ANCHOR_X, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"y", ANCHOR_Y, JSPROP_ENUMERATE | JSPROP_READONLY}, - {0} -}; - -/* Base anchor element type. */ -typedef struct JSAnchor { - MochaDecoder *decoder; - int32 layer_id; - uint index; - JSString *text; - JSString *name; -} JSAnchor; - -extern JSClass lm_anchor_class; - -PR_STATIC_CALLBACK(JSBool) -anchor_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSAnchor *named_anchor; - lo_NameList *name_rec; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - named_anchor = JS_GetInstancePrivate(cx, obj, &lm_anchor_class, NULL); - if (!named_anchor) - return JS_TRUE; - - LO_LockLayout(); - name_rec = LO_GetNamedAnchorByIndex(named_anchor->decoder->window_context, - named_anchor->layer_id, - named_anchor->index); - if (!name_rec) { - LO_UnlockLayout(); - return JS_TRUE; /* Try to handle this case gracefully. */ - } - - switch (slot) { - case ANCHOR_TEXT: - if (named_anchor->text) - *vp = STRING_TO_JSVAL(named_anchor->text); - else - *vp = JSVAL_NULL; - break; - - case ANCHOR_NAME: - if (named_anchor->name) - *vp = STRING_TO_JSVAL(named_anchor->name); - else - *vp = JSVAL_NULL; - break; - - case ANCHOR_X: - *vp = INT_TO_JSVAL(name_rec->element->lo_any.x); - break; - - case ANCHOR_Y: - *vp = INT_TO_JSVAL(name_rec->element->lo_any.y); - break; - - default: - /* Don't mess with a user-defined or method property. */ - break; - } - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -anchor_finalize(JSContext *cx, JSObject *obj) -{ - JSAnchor *named_anchor; - MochaDecoder *decoder; - MWContext *context; - lo_NameList *name_rec; - - named_anchor = JS_GetPrivate(cx, obj); - if (!named_anchor) - return; - decoder = named_anchor->decoder; - context = decoder->window_context; - if (context) { - LO_LockLayout(); - name_rec = LO_GetNamedAnchorByIndex(context, named_anchor->layer_id, - named_anchor->index); - if (name_rec && name_rec->mocha_object == obj) - name_rec->mocha_object = NULL; - LO_UnlockLayout(); - } - DROP_BACK_COUNT(decoder); - JS_UnlockGCThing(cx, named_anchor->text); - JS_UnlockGCThing(cx, named_anchor->name); - JS_free(cx, named_anchor); -} - - -/* Named anchors are read only, so there is no anchor_setProperty. */ -JSClass lm_anchor_class = { - "Anchor", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, anchor_getProperty, anchor_getProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, anchor_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Anchor(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -JSObject * -LM_ReflectNamedAnchor(MWContext *context, lo_NameList *name_rec, - PA_Tag * tag, int32 layer_id, uint index) -{ - JSObject *obj, *array_obj, *document; - MochaDecoder *decoder; - JSContext *cx; - JSObjectArray *array; - JSAnchor *named_anchor; - lo_TopState *top_state; - PRHashTable *map; - JSString *str; - - obj = name_rec->mocha_object; - if (obj) - return obj; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - cx = decoder->js_context; - - top_state = lo_GetMochaTopState(context); - if (top_state->resize_reload) { - map = lm_GetIdToObjectMap(decoder); - - if (map) - obj = (JSObject *)PR_HashTableLookup(map, - LM_GET_MAPPING_KEY(LM_NAMEDANCHORS, - layer_id, index)); - if (obj) { - name_rec->mocha_object = obj; - LM_PutMochaDecoder(decoder); - return obj; - } - } - - /* Get the document object that will hold this anchor */ - document = lm_GetDocumentFromLayerId(decoder, layer_id); - if (!document) { - LM_PutMochaDecoder(decoder); - return NULL; - } - - array_obj = lm_GetNameArray(decoder, document); - if (!array_obj) { - LM_PutMochaDecoder(decoder); - return NULL; - } - array = JS_GetPrivate(cx, array_obj); - if (!array) { - LM_PutMochaDecoder(decoder); - return NULL; - } - - named_anchor = JS_malloc(cx, sizeof *named_anchor); - if (!named_anchor) { - LM_PutMochaDecoder(decoder); - return NULL; - } - XP_BZERO(named_anchor, sizeof *named_anchor); - - obj = JS_NewObject(cx, &lm_anchor_class, decoder->anchor_prototype, - document); - - if (!obj || !JS_SetPrivate(cx, obj, named_anchor)) { - JS_free(cx, named_anchor); - LM_PutMochaDecoder(decoder); - return NULL; - } - - /* Put obj into the document.anchors array. */ - JS_DefineProperty(cx, array_obj, (char *) name_rec->name, - OBJECT_TO_JSVAL(obj), NULL, NULL, - JSPROP_ENUMERATE|JSPROP_READONLY); - JS_AliasElement(cx, array_obj, (char *) name_rec->name, index); - - /* Put it in the index to object hash table */ - map = lm_GetIdToObjectMap(decoder); - if (map) { - PR_HashTableAdd(map, - LM_GET_MAPPING_KEY(LM_NAMEDANCHORS, layer_id, index), - obj); - } - if ((jsint) index >= array->length) - array->length = index + 1; - - named_anchor->decoder = HOLD_BACK_COUNT(decoder); - named_anchor->layer_id = layer_id; - named_anchor->index = index; - if (name_rec->element && name_rec->element->type == LO_TEXT) { - str = lm_LocalEncodingToStr(context, - (char *) name_rec->element->lo_text.text); - if (!str || !JS_LockGCThing(cx, str)) { - LM_PutMochaDecoder(decoder); - return NULL; - } - named_anchor->text = str; - } - str = JS_NewStringCopyZ(cx, (char *) name_rec->name); - if (!str || !JS_LockGCThing(cx, str)) { - LM_PutMochaDecoder(decoder); - return NULL; - } - named_anchor->name = str; - - name_rec->mocha_object = obj; - - /* see if there are any attributes for event handlers */ - if(tag) { - PA_Block onlocate, id; - - /* don't hold the layout lock across compiles */ - LO_UnlockLayout(); - - onlocate = lo_FetchParamValue(context, tag, PARAM_ONLOCATE); - id = lo_FetchParamValue(context, tag, PARAM_ID); - if (onlocate) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONLOCATE, onlocate); - PA_FREE(onlocate); - } - if (id) - PA_FREE(id); - LO_LockLayout(); - } - - LM_PutMochaDecoder(decoder); - return obj; -} - - -JSBool -lm_InitAnchorClass(MochaDecoder *decoder) -{ - JSContext *cx; - JSObject *prototype; - - cx = decoder->js_context; - prototype = JS_InitClass(cx, decoder->window_object, - decoder->event_receiver_prototype, - &lm_anchor_class, Anchor, 0, - anchor_props, NULL, NULL, NULL); - if (!prototype) - return JS_FALSE; - decoder->anchor_prototype = prototype; - return JS_TRUE; -} diff --git a/mozilla/lib/libmocha/lm_img.c b/mozilla/lib/libmocha/lm_img.c deleted file mode 100644 index ea4e10c3d03..00000000000 --- a/mozilla/lib/libmocha/lm_img.c +++ /dev/null @@ -1,858 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * Image reflection and event notification - * - * Scott Furman, 3/30/96 - */ - -#include "lm.h" - -#include "lo_ele.h" -#include "prtypes.h" -#include "pa_tags.h" -#include "layout.h" - -#define IL_CLIENT -#include "libimg.h" /* Image Library public API. */ - -enum image_array_slot { - IMAGE_ARRAY_LENGTH = -1 -}; - -static JSPropertySpec image_array_props[] = { - {lm_length_str, IMAGE_ARRAY_LENGTH, - JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {0} -}; - -extern JSClass lm_image_array_class; - -PR_STATIC_CALLBACK(JSBool) -image_array_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSObjectArray *array; - MochaDecoder *decoder; - MWContext *context; - jsint count, slot; - LO_ImageStruct *image; - int32 active_layer_id; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - array = JS_GetInstancePrivate(cx, obj, &lm_image_array_class, NULL); - if (!array) - return JS_TRUE; - decoder = array->decoder; - context = decoder->window_context; - if (!context) - return JS_TRUE; - - LO_LockLayout(); - switch (slot) { - case IMAGE_ARRAY_LENGTH: - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, array->layer_id); - count = LO_EnumerateImages(context, array->layer_id); - LM_SetActiveLayer(context, active_layer_id); - if (count > array->length) - array->length = count; - *vp = INT_TO_JSVAL(count); - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - LO_UnlockLayout(); - return JS_TRUE; - } - if (slot >= array->length) - array->length = slot + 1; - image = LO_GetImageByIndex(context, array->layer_id, (uint)slot); - if (image) { - *vp = OBJECT_TO_JSVAL(LM_ReflectImage(context, image, NULL, - array->layer_id, - (uint)slot)); - } - break; - } - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -image_array_finalize(JSContext *cx, JSObject *obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -JSClass lm_image_array_class = { - "ImageArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - image_array_getProperty, image_array_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, image_array_finalize -}; - -enum image_slot { - IMAGE_NAME = -2, - IMAGE_SRC = -3, - IMAGE_LOWSRC = -4, - IMAGE_X = -5, - IMAGE_Y = -6, - IMAGE_HEIGHT = -7, - IMAGE_WIDTH = -8, - IMAGE_BORDER = -9, - IMAGE_VSPACE = -10, - IMAGE_HSPACE = -11, - IMAGE_COMPLETE = -12 -}; - -static JSPropertySpec image_props[] = { - {"name", IMAGE_NAME, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"src", IMAGE_SRC, JSPROP_ENUMERATE}, - {"lowsrc", IMAGE_LOWSRC, JSPROP_ENUMERATE}, - {"x", IMAGE_X, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"y", IMAGE_Y, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"height", IMAGE_HEIGHT, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"width", IMAGE_WIDTH, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"border", IMAGE_BORDER, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"vspace", IMAGE_VSPACE, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"hspace", IMAGE_HSPACE, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"complete", IMAGE_COMPLETE, JSPROP_ENUMERATE | JSPROP_READONLY}, - {0} -}; - -/* - * Base image element type. - */ -typedef struct JSImage { - JSEventReceiver receiver; - MochaDecoder *decoder; - LO_ImageStruct *image_data; /* 0 unless made by new Image() */ - uint8 pending_events; - int32 layer_id; - uint index; - JSBool complete; /* Finished loading or aborted */ - JSString *name; -} JSImage; - -#define GET_IMAGE_DATA(context, image) \ - ((image)->image_data ? (image)->image_data \ - : LO_GetImageByIndex((context), (image)->layer_id, (image)->index)) - -extern JSClass lm_image_class; - -/* - * Force the mozilla event queue to flush to make sure any image-set-src - * events have been processed - */ -PR_STATIC_CALLBACK(void) -lm_img_src_sync(void * data) -{ -} - - -PR_STATIC_CALLBACK(JSBool) -image_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSImage *image; - LO_ImageStruct *image_data; - enum image_slot image_slot; - JSString *str; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - image = JS_GetInstancePrivate(cx, obj, &lm_image_class, NULL); - if (!image) - return JS_TRUE; - image_data = GET_IMAGE_DATA(image->decoder->window_context, image); - if (!image_data) - return JS_TRUE; /* Try to handle this case gracefully. */ - - image_slot = slot; - if (image_slot == IMAGE_SRC || image_slot == IMAGE_LOWSRC) { - if (!lm_CheckPermissions(cx, obj, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - } - - switch (image_slot) { - case IMAGE_NAME: - if (image->name) - *vp = STRING_TO_JSVAL(image->name); - else - *vp = JSVAL_NULL; - break; - - case IMAGE_SRC: - if (image_data->pending_mocha_event) { - ET_moz_CallFunction(lm_img_src_sync, NULL); - image_data->pending_mocha_event = PR_FALSE; - } - str = JS_NewStringCopyZ(cx, (char*)image_data->image_url); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - - case IMAGE_LOWSRC: - if (image_data->pending_mocha_event) { - ET_moz_CallFunction(lm_img_src_sync, NULL); - image_data->pending_mocha_event = PR_FALSE; - } - str = JS_NewStringCopyZ(cx, (char*)image_data->lowres_image_url); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - - case IMAGE_X: - *vp = INT_TO_JSVAL(image_data->x + image_data->x_offset); - break; - - case IMAGE_Y: - *vp = INT_TO_JSVAL(image_data->y + image_data->y_offset); - break; - - case IMAGE_HEIGHT: - *vp = INT_TO_JSVAL(image_data->height); - break; - - case IMAGE_WIDTH: - *vp = INT_TO_JSVAL(image_data->width); - break; - - case IMAGE_BORDER: - *vp = INT_TO_JSVAL(image_data->border_width); - break; - - case IMAGE_HSPACE: - *vp = INT_TO_JSVAL(image_data->border_horiz_space); - break; - - case IMAGE_VSPACE: - *vp = INT_TO_JSVAL(image_data->border_vert_space); - break; - - case IMAGE_COMPLETE: - *vp = BOOLEAN_TO_JSVAL(image->complete); - break; - - default: - /* Don't mess with a user-defined or method property. */ - return JS_TRUE; - } - - return JS_TRUE; -} - -static JSBool -image_set_src(JSImage *image, const char *str, LO_ImageStruct *image_data) -{ - MochaDecoder *decoder; - MWContext *context; - IL_GroupContext *img_cx; - - decoder = image->decoder; - context = decoder->window_context; - img_cx = decoder->image_context; - - if (!context) return JS_TRUE; - - image_data->pending_mocha_event = PR_TRUE; - image_data->image_attr->attrmask |= LO_ATTR_MOCHA_IMAGE; - - ET_il_GetImage(str, context, img_cx, image_data, NET_DONT_RELOAD); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -image_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSBool ok=JS_FALSE; - JSImage *image; - MochaDecoder *decoder; - MWContext *context; - LO_ImageStruct *image_data; - enum image_slot image_slot; - const char *url; - jsint slot; - - image = JS_GetInstancePrivate(cx, obj, &lm_image_class, NULL); - if (!image) - return JS_TRUE; - decoder = image->decoder; - context = decoder->window_context; - if (!context) - return JS_TRUE; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - image_data = GET_IMAGE_DATA(context, image); - if (!image_data) - return JS_TRUE; /* Try to handle this case gracefully. */ - - image_slot = slot; - switch (image_slot) { - case IMAGE_SRC: - case IMAGE_LOWSRC: - if (!lm_CheckPermissions(cx, obj, JSTARGET_UNIVERSAL_BROWSER_WRITE)) - return JS_FALSE; - - if (JSVAL_IS_NULL(*vp)) { - url = NULL; - } else { - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) - return JS_FALSE; - - url = JS_GetStringBytes(JSVAL_TO_STRING(*vp)); - url = lm_CheckURL(cx, url, JS_TRUE); /* will allocate new string */ - if (!url) - return JS_FALSE; - } - - if (image_slot == IMAGE_SRC) { - ok = image_set_src(image, url, image_data); - } else if (url) { - ok = lm_SaveParamString(cx, &image_data->lowres_image_url, url); - } - - if (url) - XP_FREE((void *) url); - - if (!ok) - return JS_FALSE; - - /* - * don't call image_getProperty so that we don't immediately - * turn around and block - */ - return JS_TRUE; - break; - - case IMAGE_NAME: - case IMAGE_X: - case IMAGE_Y: - case IMAGE_HEIGHT: - case IMAGE_WIDTH: - case IMAGE_BORDER: - case IMAGE_VSPACE: - case IMAGE_HSPACE: - case IMAGE_COMPLETE: - /* These are immutable. */ - break; - } - - return image_getProperty(cx, obj, id, vp); -} - -PR_STATIC_CALLBACK(void) -image_finalize(JSContext *cx, JSObject *obj) -{ - JSImage *image; - LO_ImageStruct *image_data; - MochaDecoder *decoder; - MWContext *context; - - image = JS_GetPrivate(cx, obj); - if (!image) - return; - - image_data = image->image_data; - decoder = image->decoder; - context = decoder->window_context; - if (image_data) { - /* If this is a layer background image or a reflection of an - existing layout image, then layout will take care of - destroying the image. For anonymous images, however, - we need to handle destruction here. */ - if (!image_data->layer) { - ET_PostFreeImageElement(context, image_data); - XP_FREE(image_data->image_attr); - XP_FREE(image_data); - } - } else { - if (context) { - LO_LockLayout(); - image_data = LO_GetImageByIndex(context, image->layer_id, - image->index); - if (image_data && image_data->mocha_object == obj) - image_data->mocha_object = NULL; - LO_UnlockLayout(); - } - } - DROP_BACK_COUNT(decoder); - - JS_UnlockGCThing(cx, image->name); - JS_free(cx, image); -} - -JSClass lm_image_class = { - "Image", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, image_getProperty, image_setProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, image_finalize -}; - -/* Fill in native, private part of JS image */ -static JSImage * -init_image_object(JSContext *cx, JSObject *obj, LO_ImageStruct *image_data) -{ - JSImage *image; - MochaDecoder *decoder; - - image = JS_malloc(cx, sizeof *image); - if (!image) - return NULL; - XP_BZERO(image, sizeof *image); - - image->image_data = image_data; - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - image->decoder = HOLD_BACK_COUNT(decoder); - image_data->mocha_object = obj; - - /* Events are never blocked for anonymous images - since there is no associated layout. */ - image->pending_events = PR_BIT(LM_IMGUNBLOCK); - if (!JS_SetPrivate(cx, obj, image)) - return NULL; - - return image; -} - -JSObject * -lm_NewImage(JSContext *cx, - LO_ImageStruct *image_data) -{ - JSObject *obj, *outer_obj; - MochaDecoder *decoder; - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - outer_obj = lm_GetOuterObject(decoder); - - obj = JS_NewObject(cx, &lm_image_class, decoder->image_prototype, - outer_obj); - if (!init_image_object(cx, obj, image_data)) - return NULL; - - return obj; -} - -PR_STATIC_CALLBACK(JSBool) -Image(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - jsint width, height; - LO_ImageStruct *image_data; - - XP_ASSERT(JS_InstanceOf(cx, obj, &lm_image_class, NULL)); - - height = width = 0; - - if (argc > 0) { - if (argc != 2) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - if (!JSVAL_IS_INT(argv[0]) || - !JSVAL_IS_INT(argv[1])) { - return JS_FALSE; - } - width = JSVAL_TO_INT(argv[0]); - height = JSVAL_TO_INT(argv[1]); - } - - /* Allocate dummy layout structure. This is not really - used by layout, but the front-ends and the imagelib - need it as a handle on an image instance. */ - image_data = XP_NEW_ZAP(LO_ImageStruct); - if (!image_data) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - image_data->image_attr = XP_NEW_ZAP(LO_ImageAttr); - if (!image_data->image_attr) { - XP_FREE(image_data); - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - - image_data->type = LO_IMAGE; - - /* Fake layout ID, guaranteed not to match any real layout element */ - image_data->ele_id = -1; - - if (!init_image_object(cx, obj, image_data)) { - XP_FREE(image_data->image_attr); - XP_FREE(image_data); - return JS_FALSE; - } - - /* Process arguments */ - - /* Width & Height */ - if (argc == 2) { - image_data->width = (int)width; - image_data->height = (int)height; - } - - return JS_TRUE; -} - -static JSObject * -reflect_image_array(MochaDecoder *decoder, JSObject *document) -{ - JSContext *cx; - JSObjectArray *array; - JSObject *obj; - JSDocument *doc; - - cx = decoder->js_context; - doc = JS_GetPrivate(cx, document); - if (!doc) - return NULL; - - array = JS_malloc(cx, sizeof *array); - if (!array) - return NULL; - XP_BZERO(array, sizeof *array); - - obj = JS_NewObject(cx, &lm_image_array_class, NULL, document); - if (!obj || !JS_SetPrivate(cx, obj, array)) { - LM_PutMochaDecoder(decoder); - return NULL; - } - - if (!JS_DefineProperties(cx, obj, image_array_props)) - return NULL; - - array->decoder = HOLD_BACK_COUNT(decoder); - array->layer_id = doc->layer_id; - return obj; -} - -JSObject * -lm_GetImageArray(MochaDecoder *decoder, JSObject *document) -{ - JSObject *obj; - JSDocument *doc; - - doc = JS_GetPrivate(decoder->js_context, document); - if (!doc) - return NULL; - - obj = doc->images; - if (obj) - return obj; - obj = reflect_image_array(decoder, document); - doc->images = obj; - return obj; -} - -JSObject * -LM_ReflectImage(MWContext *context, LO_ImageStruct *image_data, - PA_Tag * tag, int32 layer_id, uint index) -{ - JSObject *obj, *array_obj, *outer_obj, *document; - MochaDecoder *decoder; - JSContext *cx; - JSImage *image; - PA_Block name = NULL; - lo_TopState *top_state; - PRHashTable *map; - - image_data = LO_GetImageByIndex(context, layer_id, index); - XP_ASSERT(image_data); - if (! image_data) - return NULL; - - obj = image_data->mocha_object; - if (obj) - return obj; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - cx = decoder->js_context; - - top_state = lo_GetMochaTopState(context); - if (top_state->resize_reload) { - map = lm_GetIdToObjectMap(decoder); - - if (map) - obj = (JSObject *)PR_HashTableLookup(map, - LM_GET_MAPPING_KEY(LM_IMAGES, layer_id, index)); - if (obj) { - image_data->mocha_object = obj; - goto done; - } - } - - /* Get the document object that will hold this link */ - document = lm_GetDocumentFromLayerId(decoder, layer_id); - if (!document) - goto done; - - array_obj = lm_GetImageArray(decoder, document); - if (!array_obj) - goto done; - - image = JS_malloc(cx, sizeof *image); - if (!image) - goto done; - - XP_BZERO(image, sizeof *image); - - /* if we got a tag passed in try to get the name out of there */ - name = lo_FetchParamValue(context, tag, PARAM_NAME); - - outer_obj = lm_GetOuterObject(decoder); - - obj = JS_NewObject(cx, &lm_image_class, decoder->image_prototype, - outer_obj); - if (!obj || !JS_SetPrivate(cx, obj, image)) { - JS_free(cx, image); - goto done; - } - - if (name) { - JSObject *doc_obj; - extern JSClass lm_form_class; - - if (!JS_DefineProperty(cx, outer_obj, (const char *) name, - OBJECT_TO_JSVAL(obj), NULL, NULL, - JSPROP_ENUMERATE|JSPROP_READONLY)) { - obj = NULL; - goto done; - } - /* XXX backward compatibility with 3.0 bug: lo_BlockedImageLayout - would eagerly reflect images outside of any active form, so - they'd end up in document scope. */ - if (JS_GetClass(cx, outer_obj) == &lm_form_class && - (doc_obj = JS_GetParent(cx, outer_obj)) != NULL && - !JS_DefineProperty(cx, doc_obj, (const char *) name, - OBJECT_TO_JSVAL(obj), NULL, NULL, - JSPROP_ENUMERATE|JSPROP_READONLY)) { - obj = NULL; - goto done; - } - } - - image->decoder = HOLD_BACK_COUNT(decoder); - image->index = index; - image->layer_id = layer_id; - image->name = JS_NewStringCopyZ(cx, (const char *) name); - if (!JS_LockGCThing(cx, image->name)) { - obj = NULL; - goto done; - } - image_data->mocha_object = obj; - - if (!lm_AddObjectToArray(cx, array_obj, (const char *) name, - index, obj)) { - obj = NULL; - goto done; - } - - /* Put it in the index to object hash table */ - map = lm_GetIdToObjectMap(decoder); - if (map) - PR_HashTableAdd(map, - LM_GET_MAPPING_KEY(LM_IMAGES, layer_id, index), - obj); - - /* OK, we've got our image, see if there are any event handlers - * defined with it - */ - if(tag) { - PA_Block onload = lo_FetchParamValue(context, tag, PARAM_ONLOAD); - PA_Block onabort = lo_FetchParamValue(context, tag, PARAM_ONABORT); - PA_Block onerror = lo_FetchParamValue(context, tag, PARAM_ONERROR); - PA_Block onmousedown = lo_FetchParamValue(context, tag, PARAM_ONMOUSEDOWN); - PA_Block onmouseup = lo_FetchParamValue(context, tag, PARAM_ONMOUSEUP); - PA_Block id = lo_FetchParamValue(context, tag, PARAM_ID); - - /* don't hold the layout lock across compiles */ - LO_UnlockLayout(); - - if (onload != NULL) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONLOAD, onload); - PA_FREE(onload); - } - - if (onabort != NULL) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONABORT, onabort); - PA_FREE(onabort); - } - - if (onerror != NULL) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONERROR, onerror); - PA_FREE(onerror); - } - if (onmousedown != NULL) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONMOUSEDOWN, onmousedown); - PA_FREE(onmousedown); - } - if (onmouseup != NULL) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONMOUSEUP, onmouseup); - PA_FREE(onmouseup); - } - - if (id) - PA_FREE(id); - - LO_LockLayout(); - } - -done: - - if(name) - PA_FREE(name); - LM_PutMochaDecoder(decoder); - - return obj; -} - -void -lm_ProcessImageEvent(MWContext *context, JSObject *obj, - LM_ImageEvent event) -{ - uint event_mask; - jsval result; - JSImage *image; - - image = JS_GetPrivate(context->mocha_context, obj); - if (!image) - return; - - image->pending_events |= PR_BIT(event); - - /* Special event used to trigger deferred events */ - if (! (image->pending_events & PR_BIT(LM_IMGUNBLOCK))) - return; - - for (event = LM_IMGLOAD; event <= LM_LASTEVENT; event++) { - event_mask = PR_BIT(event); - if (image->pending_events & event_mask) { - - JSEvent *pEvent; - pEvent=XP_NEW_ZAP(JSEvent); - - image->pending_events &= ~event_mask; - switch (event) { - case LM_IMGLOAD: - pEvent->type = EVENT_LOAD; - image->complete = JS_TRUE; - break; - case LM_IMGABORT: - pEvent->type = EVENT_ABORT; - image->complete = JS_TRUE; - break; - case LM_IMGERROR: - pEvent->type = EVENT_ERROR; - image->complete = JS_TRUE; - break; - default: - XP_ABORT(("Unknown image event")); - } - - lm_SendEvent(context, obj, pEvent, &result); - } - } -} - -JSBool -lm_InitImageClass(MochaDecoder *decoder) -{ - JSContext *cx; - JSObject *prototype; - - cx = decoder->js_context; - prototype = JS_InitClass(cx, decoder->window_object, - decoder->event_receiver_prototype, &lm_image_class, - Image, 0, image_props, NULL, NULL, NULL); - if (!prototype) - return JS_FALSE; - decoder->image_prototype = prototype; - return JS_TRUE; -} - -/* Create an image context for anonymous images and attach it to the specified - mocha decoder. */ -JSBool -lm_NewImageContext(MWContext *context, MochaDecoder *decoder) -{ - IL_GroupContext *img_cx; - IMGCB* img_cb; - JMCException *exc = NULL; - - if (!decoder->image_context) { - img_cb = IMGCBFactory_Create(&exc); /* JMC Module */ - if (exc) { - JMC_DELETE_EXCEPTION(&exc); /* XXX Should really return - exception */ - JS_ReportOutOfMemory(decoder->js_context); - return JS_FALSE; - } - - /* Create an Image Group Context. IL_NewGroupContext augments the - reference count for the JMC callback interface. The opaque argument - to IL_NewGroupContext is the Front End's display context, which will - be passed back to all the Image Library's FE callbacks. */ - img_cx = IL_NewGroupContext((void*)context, (IMGCBIF *)img_cb); - if (!img_cx) { - JS_ReportOutOfMemory(decoder->js_context); - return JS_FALSE; - } - - /* Attach the IL_GroupContext to the mocha decoder. */ - decoder->image_context = img_cx; - - /* Allow the context to observe the decoder's image context. */ - ET_il_SetGroupObserver(context, decoder->image_context, context, JS_TRUE); - } - return JS_TRUE; -} diff --git a/mozilla/lib/libmocha/lm_init.c b/mozilla/lib/libmocha/lm_init.c deleted file mode 100644 index 28a5048944c..00000000000 --- a/mozilla/lib/libmocha/lm_init.c +++ /dev/null @@ -1,2107 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * JS in the Navigator top-level stuff. - * - * Brendan Eich, 9/8/95 - */ -#include "lm.h" -#ifdef DOM -#include "lm_dom.h" -#endif -#include "xp.h" -#include "net.h" -#include "structs.h" -#include "layout.h" /* for lo_FormData */ -#include "pa_tags.h" /* included via -I../libparse */ -#include "prmem.h" -#include "prthread.h" -#include "prmon.h" -#ifdef XP_MAC -#include "pprthred.h" /* for PR_CreateThreadGCAble */ -#else -#include "private/pprthred.h" -#endif - -#if defined (JAVA) -#include "jri.h" -#include "jriext.h" -#include "java.h" -#elif defined (OJI) -/* -#include "jni.h" -#include "np2.h" -#include "jsjava.h" -*/ -#include "jvmmgr.h" -#endif - -#include "prefapi.h" -#include "libi18n.h" -#include "intl_csi.h" - -#define UNICODE /* remove after working everywhere */ - -extern PRThread *mozilla_thread; - -char js_language_name[] = "JavaScript"; -char js_content_type[] = APPLICATION_JAVASCRIPT; - -char lm_argc_err_str[] = "incorrect number of arguments"; - -char lm_onLoad_str[] = PARAM_ONLOAD; -char lm_onUnload_str[] = PARAM_ONUNLOAD; -char lm_onAbort_str[] = PARAM_ONABORT; -char lm_onError_str[] = PARAM_ONERROR; -char lm_onScroll_str[] = PARAM_ONSCROLL; -char lm_onFocus_str[] = PARAM_ONFOCUS; -char lm_onBlur_str[] = PARAM_ONBLUR; -char lm_onSelect_str[] = PARAM_ONSELECT; -char lm_onChange_str[] = PARAM_ONCHANGE; -char lm_onReset_str[] = PARAM_ONRESET; -char lm_onSubmit_str[] = PARAM_ONSUBMIT; -char lm_onClick_str[] = PARAM_ONCLICK; -char lm_onMouseDown_str[] = PARAM_ONMOUSEDOWN; -char lm_onMouseOver_str[] = PARAM_ONMOUSEOVER; -char lm_onMouseOut_str[] = PARAM_ONMOUSEOUT; -char lm_onMouseUp_str[] = PARAM_ONMOUSEUP; -char lm_onLocate_str[] = PARAM_ONLOCATE; -char lm_onHelp_str[] = PARAM_ONHELP; - -char lm_focus_str[] = "focus"; -char lm_blur_str[] = "blur"; -char lm_select_str[] = "select"; -char lm_click_str[] = "click"; -char lm_scroll_str[] = "scroll"; -char lm_enable_str[] = "enable"; -char lm_disable_str[] = "disable"; - -char lm_toString_str[] = "toString"; -char lm_length_str[] = "length"; -char lm_document_str[] = "document"; -char lm_forms_str[] = "forms"; -char lm_links_str[] = "links"; -char lm_anchors_str[] = "anchors"; -char lm_plugins_str[] = "plugins"; -char lm_applets_str[] = "applets"; -char lm_embeds_str[] = "embeds"; -char lm_images_str[] = "images"; -char lm_layers_str[] = "layers"; -char lm_builtins_str[] = "trees"; -char lm_location_str[] = "location"; -char lm_navigator_str[] = "navigator"; -char lm_netcaster_str[] = "netcaster"; -char lm_components_str[] = "components"; - -char lm_parentLayer_str[] = "parentLayer"; -char lm_opener_str[] = "opener"; -char lm_closed_str[] = "closed"; -char lm_assign_str[] = "assign"; -char lm_reload_str[] = "reload"; -char lm_replace_str[] = "replace"; -char lm_event_str[] = "event"; -char lm_methodPrefix_str[] = "#method"; -char lm_methodArgc_str[] = "#margc"; -char lm_methodArgv_str[] = "#margv"; -char lm_getPrefix_str[] = "#get_"; -char lm_setPrefix_str[] = "#set_"; -char lm_typePrefix_str[] = "#type_"; -const char *lm_event_argv[] = {lm_event_str}; - -JSRuntime *lm_runtime; -static uint32 lm_max_gc_bytes = 4L * 1024L * 1024L; /* XXX use a pref */ - -#ifdef OJI -JNIEnv *lm_JSEnv; /* Java env for lm_InterpretThread */ -#elif defined(JAVA) -JRIEnv *lm_JSEnv; /* Java env for lm_InterpretThread */ -#endif /* ! (OJI || JAVA) */ - -#ifdef JAVA -extern LJ_JSJ_Init(void); -#endif - -static JSClass lm_dummy_class = { - "Dummy", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub -}; -JSObject *lm_DummyObject; - -MochaDecoder *crippled_decoder; -JSContext *crippled_context; /* exported to jsStubs.c */ - -MochaDecoder *LM_GetCrippledDecoder() -{ - JS_SetContextThread(crippled_decoder->js_context); - return crippled_decoder; -} - -void LM_SetCrippledDecoder(MochaDecoder *md) -{ - crippled_decoder = md; - if(crippled_decoder) { - crippled_context = crippled_decoder->js_context; - } -} - -JSContext *LM_GetCrippledContext() -{ - JS_SetContextThread(crippled_decoder->js_context); - return crippled_context; -} - -PR_STATIC_CALLBACK(JSBool) -lm_alert(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - MWContext *context; - JSString *arg; - - decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv); - if (!decoder) - return JS_TRUE; - if (!(arg = JS_ValueToString(cx, argv[0]))) - return JS_FALSE; - context = decoder->window_context; - if (context) { - char * message; - message = lm_StrToLocalEncoding(context, arg); - ET_PostMessageBox(context, message, JS_FALSE); - XP_FREEIF(message); - } - return JS_TRUE; -} - -#ifdef DEBUG - -#include "jscntxt.h" - -PR_STATIC_CALLBACK(JSBool) -lm_tracing(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSBool bval; - - if (argc == 0) { - *rval = BOOLEAN_TO_JSVAL(cx->tracefp != 0); - return JS_TRUE; - } - - if (JSVAL_IS_INT(argv[0])) { - if (JSVAL_TO_INT(argv[0]) != 0) - bval = JS_TRUE; - } else if (JSVAL_IS_BOOLEAN(argv[0])) { - bval = JSVAL_TO_BOOLEAN(argv[0]); - } else { - return JS_TRUE; /* XXX should be error */ - } - if (cx->tracefp) - fclose(cx->tracefp); - cx->tracefp = bval ? fopen("/dev/tty", "w") : 0; - return JS_TRUE; -} - -#endif /* DEBUG */ - -static JSFunctionSpec lm_global_functions[] = { - {"alert", lm_alert, 0}, -#ifdef DEBUG - {"tracing", lm_tracing, 0}, -#endif - {0} -}; - -/* - * If we don't get passed an object, assume we are supposed to use - * the main window object - */ -JSBool -lm_CompileEventHandler(MochaDecoder * decoder, PA_Block id, PA_Block all, - int newline_count, JSObject *object, - const char *name, PA_Block block) -{ - JSPrincipals *principals, *registered; - JSContext *cx; - char *body, *p; - JSBool ok; - JSString *unicode; - - cx = decoder->js_context; - if (object == NULL) - object = decoder->window_object; - - principals = lm_GetCompilationPrincipals(decoder, NULL); - if (principals == NULL) - return JS_FALSE; - - JSPRINCIPALS_HOLD(cx, principals); - - body = (char *) block; - - /* Find block in all and subtract newlines in and after block - from newline_count */ - if (all) { - /* - * XXX - We really should fix it so that "all" is always - * nonnull. - */ - for (p=(char *) all; *p; p++) { - if (*p == '\r' || *p == '\n') { - p = XP_STRSTR((char *) all, body); - if (p == NULL) - break; - /* - * XXX - doesn't handle case where there are two - * handlers with the same text - */ - while (*p) { - switch (*p) { - case '\r': - if (p[1] == '\n') - p++; - /* fall through */ - case '\n': - newline_count--; - break; - default: - break; - } - p++; - } - break; - } - } - } - - registered = LM_RegisterPrincipals(decoder, principals, - (char *) id, (char *) all); - - unicode = lm_LocalEncodingToStr(decoder->window_context, body); - JS_LockGCThing(cx, unicode); - ok = (JSBool)(registered && - JS_CompileUCFunctionForPrincipals(cx, object, - registered, - name, 1, lm_event_argv, - JS_GetStringChars(unicode), JS_GetStringLength(unicode), - LM_GetSourceURL(decoder), - newline_count + 1) - != NULL); - - JSPRINCIPALS_DROP(cx, principals); - JS_UnlockGCThing(cx, unicode); - return ok; -} - -#define INTERRUPT_BRANCH_COUNT_MASK 255 -#define MAYBE_GC_BRANCH_COUNT_MASK 4095 - -#ifdef XP_UNIX -static uint32 lm_handling_event; -#endif - -JSBool PR_CALLBACK -lm_BranchCallback(JSContext *cx, JSScript *script) -{ - static uint32 count = 0; - - /* - * If we have been running for a while yield and see if anyone - * else is waiting for a time slice or is trying to stop us. - * At a much less frequent interval, force a GC to catch any garbage - * created by long-running or long-resident scripts. - */ - if ((++count & INTERRUPT_BRANCH_COUNT_MASK) == 0) { - MochaDecoder *decoder; - MWContext *context; - - PR_Sleep(PR_INTERVAL_NO_WAIT); - - /* check to see if we've been stopped */ - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - context = decoder->window_context; - if (!ET_ContinueProcessing(context)) { -#ifdef DEBUG_chouck - XP_TRACE(("Interrupted in branch callback")); -#endif - return JS_FALSE; - } - - /* if not stopped, go look for garbage */ - if ((count & MAYBE_GC_BRANCH_COUNT_MASK) == 0) { -#ifdef XP_UNIX - /* X lacks an idle loop from which to do this opportunistically. */ - if (lm_handling_event && context) - ET_moz_CallFunction((ETVoidPtrFunc)FE_UpdateStopState, context); -#endif /* XP_UNIX */ - - JS_MaybeGC(cx); - } - } - return JS_TRUE; -} - -#define ERROR_REPORT_LIMIT 10 - -static JSBool -lm_lookup_event_handler(JSContext *cx, JSObject *obj, uint32 type, jsval *fvp); - -void PR_CALLBACK -lm_ErrorReporter(JSContext *cx, const char *message, JSErrorReport *report) -{ - JSObject *obj; - MochaDecoder *decoder; - jsval fval, rval, argv[3]; - JSString *str; - JSBool ok; - char *last; - int i, j, k, n; - const char *s, *t; -#ifdef JAVA - JSBool java_errors = JS_TRUE; -#else - JSBool java_errors = JS_FALSE; -#endif /* JAVA */ - MWContext *context; - -#ifdef XP_WIN16 - java_errors = JS_FALSE; - return; -#endif - - obj = JS_GetGlobalObject(cx); - decoder = JS_GetPrivate(cx, obj); - if (!decoder) - return; - - context = decoder->window_context; - if (context && context->type == MWContextPrint) - return; - - JS_SetErrorReporter(cx, NULL); - if (lm_lookup_event_handler(cx, obj, EVENT_ERROR, &fval)) { - if (fval == JSVAL_NULL) { - /* User has set onerror to null, so cancel this report. */ - goto out; - } - if (JS_TypeOfValue(cx, fval) == JSTYPE_FUNCTION) { - str = JS_NewStringCopyZ(cx, message); - if (!str) - goto out; - argv[0] = STRING_TO_JSVAL(str); - str = JS_NewStringCopyZ(cx, report ? report->filename : ""); - if (!str) - goto out; - argv[1] = STRING_TO_JSVAL(str); - argv[2] = INT_TO_JSVAL(report ? report->lineno : 0); -#ifdef XP_UNIX - lm_handling_event++; -#endif - ok = JS_CallFunctionValue(cx, obj, fval, 3, argv, &rval); -#ifdef XP_UNIX - lm_handling_event--; -#endif - if (!ok) { - /* Error during onerror, message is probably free now. */ - goto out; - } - if (rval == JSVAL_TRUE) { - /* True return value means the function reported this error. */ - goto out; - } - } - } - - decoder->error_count++; - if (decoder->error_count >= ERROR_REPORT_LIMIT) { - if (decoder->error_count == ERROR_REPORT_LIMIT) { - last = PR_smprintf("too many %s errors", js_language_name); - if (last) { - ET_PostMessageBox(decoder->window_context, last, JS_FALSE); - XP_FREE(last); - } - } - goto out; - } - - last = PR_sprintf_append(NULL, - java_errors - ? "java.lang.System.err.println(\"%s Error: " - : "<FONT SIZE=4>\\\n<B>%s Error:</B> ", - js_language_name); - - if (!report) { - last = PR_sprintf_append(last, - java_errors - ? "%s\\\n" - : "<B>%s</B>\n", - message); - } - else { - if (report->filename) - last = PR_sprintf_append(last, "%s, ", report->filename); - if (report->lineno) { - last = PR_sprintf_append(last, - java_errors - ? "line %u:\\\n" - : "<B>line %u:</B>", - report->lineno); - } - last = PR_sprintf_append(last, - java_errors - ? " %s." - : "<BR><BR>%s.</FONT><PRE><FONT SIZE=4>", - message); - if (report->linebuf) { - if (java_errors) - last = PR_sprintf_append(last, "\\\n"); - for (s = t = report->linebuf; *s != '\0'; s = t) { - for (; t != report->tokenptr && *t != '<' && *t != '\0'; t++) - ; - last = PR_sprintf_append(last, "%.*s", t - s, s); - if (*t == '\0') - break; - if (java_errors) { - last = PR_sprintf_append(last, (*t == '\"') ? "\\\"" : "%c", *t); - } - else { - if (t == report->tokenptr) { - last = PR_sprintf_append(last, - "</FONT>" - "<FONT SIZE=4 COLOR=#ff2020>"); - } - last = PR_sprintf_append(last, (*t == '<') ? "&lt;" : "%c", *t); - } - t++; - } - if (java_errors) { - last = PR_sprintf_append(last, "\\\n"); - } - else { - last = PR_sprintf_append(last, "</FONT><FONT SIZE=4>\n"); - n = report->tokenptr - report->linebuf; - for (i = j = 0; i < n; i++) { - if (report->linebuf[i] == '\t') { - for (k = (j + 8) & ~7; j < k; j++) - last = PR_sprintf_append(last, "."); - continue; - } - last = PR_sprintf_append(last, "."); - j++; - } - last = PR_sprintf_append(last, java_errors ? "^" : "<B>^</B>"); - } - } - if (!java_errors) - last = PR_sprintf_append(last, "\n</FONT></PRE>"); - } - - if (java_errors) - last = PR_sprintf_append(last, "\");"); - - if (last) { - if (java_errors) { - JSContext *crc = LM_GetCrippledContext(); - JS_EvaluateScript(crc, JS_GetGlobalObject(crc), - last, strlen(last), NULL, 0, &rval); - } - else { - if (context) - ET_MakeHTMLAlert(context, last); - } - - XP_FREE(last); - } - -out: - JS_SetErrorReporter(cx, lm_ErrorReporter); -} - -static MochaDecoder * -lm_new_decoder(JSRuntime *rt, JSClass *clasp) -{ - JSContext *cx; - MochaDecoder *decoder; - JSObject *obj; - - decoder = XP_NEW_ZAP(MochaDecoder); - if (!decoder) - return NULL; - -/* XXX begin common */ - cx = JS_NewContext(rt, LM_STACK_SIZE); - if (!cx) { - XP_DELETE(decoder); - return NULL; - } - JS_BeginRequest(cx); - JS_SetGCCallback(cx, LM_ShouldRunGC); - - decoder->forw_count = 1; - decoder->js_context = cx; - JS_SetBranchCallback(cx, lm_BranchCallback); - JS_SetErrorReporter(cx, lm_ErrorReporter); - - obj = JS_NewObject(cx, clasp, NULL, NULL); - if (!obj || !JS_SetPrivate(cx, obj, decoder)) { - JS_EndRequest(cx); - JS_DestroyContext(cx); - XP_DELETE(decoder); - return NULL; - } - - /* If this decoder ever needs to hold anonymous images, then call - lm_NewImageContext with a NULL context and use IL_SetDisplayMode to - set the context later. */ - decoder->image_context = 0; - decoder->window_context = 0; - decoder->window_object = obj; - JS_AddNamedRoot(cx, &decoder->window_object, "window_object"); - - JS_SetGlobalObject(cx, obj); -/* XXX end common */ - - JS_DefineFunctions(cx, obj, lm_global_functions); - JS_EndRequest(cx); - - return decoder; -} - -/* - * Enable or disable local JS decoding. - */ -static XP_Bool lm_enabled = TRUE; -static XP_Bool lm_enabledMailNews = TRUE; -static XP_Bool lm_enabledSigning = TRUE; -static XP_Bool lm_enabledCrossOrigin = TRUE; -static XP_Bool lm_enabledUnsignedExecution = TRUE; - -/* - * Is this window enbled to do JS? - */ -JSBool -LM_CanDoJS(MWContext *context) -{ - PRBool forceJSEnabled; - if (context) { - forceJSEnabled = (JSBool)context->forceJSEnabled; - } else { - forceJSEnabled = PR_FALSE; - } - - /* No JS for Editor unless forced on - * (e.g., for Composer Plugins, which uses JS to access preferences) - */ - if (!forceJSEnabled && - (!LM_GetMochaEnabled() || EDT_IS_EDITOR(context))) { - return JS_FALSE; - } - - switch (context->type) { - case MWContextBrowser: - case MWContextDialog: - case MWContextPane: -/* DSR101097 - OS/2 must follow NT w/ this or hangs printing large pages w/ JS */ -#if defined(XP_WIN) || defined(XP_MAC) || defined(XP_OS2) - /* only alow JS to run in windows print mode - * don't know about the safty of other platforms yet - */ - case MWContextPrint: -#endif /* XP_WIN */ - return JS_TRUE; - case MWContextMail: - case MWContextNews: - case MWContextMailMsg: - case MWContextNewsMsg: - case MWContextMessageComposition: - return (JSBool) lm_enabledMailNews; - default: - return JS_FALSE; - } -} - -/* - * Is JS globally enabled? - */ -JSBool -LM_GetMochaEnabled(void) -{ - return (JSBool) lm_enabled; -} - -/* - * Is cross-origin access enabled? - */ -JSBool -lm_GetCrossOriginEnabled() -{ - return (JSBool) lm_enabledCrossOrigin; -} - -/* - * Is execution of unsigned scripts enabled? - */ -JSBool -lm_GetUnsignedExecutionEnabled() -{ - return (JSBool) lm_enabledUnsignedExecution; -} - -static char lm_jsEnabled[] = "javascript.enabled"; -static char lm_jsEnabledMN[] = "javascript.allow.mailnews"; -static char lm_jsEnabledSigning[] = "javascript.allow.signing"; -static char lm_jsEnabledCrossOrigin[] = "javascript.allow.crossOrigin"; - -static JSBool mochaInited = JS_FALSE; -static char lm_jsEnabledUnsignedExecution[] = - "javascript.allow.unsignedExecution"; - -PR_STATIC_CALLBACK(int) -lm_PrefChangedFunc(const char *pref, void *data) -{ - PREF_GetBoolPref(lm_jsEnabled, &lm_enabled); - PREF_GetBoolPref(lm_jsEnabledMN, &lm_enabledMailNews); - PREF_GetBoolPref(lm_jsEnabledSigning, &lm_enabledSigning); - PREF_GetBoolPref(lm_jsEnabledCrossOrigin, &lm_enabledCrossOrigin); - PREF_GetBoolPref(lm_jsEnabledUnsignedExecution, - &lm_enabledUnsignedExecution); - - /* - * If we started up w/ JS turned off we will have not bothered - * the separate thread and event queues, do it now - */ - /* MLM - Use the boolean mochaInited instead of checking for the thread. */ - if (!mochaInited && lm_enabled) - LM_InitMocha(); - - return PREF_NOERROR; -} - -/* has mocha been inited? MLM */ -JSBool lm_inited(void) -{ - return mochaInited; -} - -/* - * create the mocha thread, event queues, and stream converters - */ -static void -lm_ReallyInitMocha(void) -{ - /* register callback in case pref changes while we're running */ - PREF_RegisterCallback(lm_jsEnabled, lm_PrefChangedFunc, NULL); - PREF_RegisterCallback(lm_jsEnabledMN, lm_PrefChangedFunc, NULL); - PREF_RegisterCallback(lm_jsEnabledSigning, lm_PrefChangedFunc, NULL); - PREF_RegisterCallback(lm_jsEnabledCrossOrigin, lm_PrefChangedFunc, NULL); - PREF_RegisterCallback(lm_jsEnabledUnsignedExecution, lm_PrefChangedFunc, - NULL); - - if ( mochaInited ) { - return; - } - - lm_runtime = JS_Init(lm_max_gc_bytes); - if (!lm_runtime) - return; - - mochaInited = JS_TRUE; - - /* Initialize a crippled decoder/context for use by Java. */ - crippled_decoder = lm_new_decoder(lm_runtime, &lm_dummy_class); - crippled_context = crippled_decoder->js_context; - - /* Initialize a dummy object used for unreflectable applets and embeds. */ - lm_DummyObject = crippled_decoder->window_object; - - /* Associate a JS netlib "converter" with our mime type. */ - /* Cool, we are still in the mozilla thread at this point so - we don't have to make this call into an event passage */ - NET_RegisterContentTypeConverter(js_content_type, FO_PRESENT, 0, - NET_CreateMochaConverter); - NET_RegisterContentTypeConverter(TEXT_CSS, FO_PRESENT, 0, - NET_CreateMochaConverter); - NET_RegisterContentTypeConverter(TEXT_JSSS, FO_PRESENT, 0, - NET_CreateMochaConverter); - - /* Associate a JS netlib "converter" with our CSS too. */ - NET_RegisterContentTypeConverter(TEXT_CSS, FO_PRESENT, 0, - NET_CreateMochaConverter); - - /* Make sure the mozilla event queue is around */ - XP_ASSERT(mozilla_event_queue != NULL); - - /* MLM - init the first window group and therefore the first JS thread */ - lm_InitWindowGroups(); - - /* AutoInstall trigger functions for JS config object */ - lm_DefineTriggers(); - -#ifdef JSDEBUGGER - lm_InitJSDebug(lm_runtime); -#endif - - /* beard: move this to end, to ensure complete initialization before initing LiveConnect. */ -#if defined(OJI) - if (JVM_MaybeStartupLiveConnect()) - JSJ_InitJSContext(LM_GetCrippledContext(), - JS_GetGlobalObject(LM_GetCrippledContext()), NULL); - -#elif defined(JAVA) - LJ_JSJ_Init(); - - /* - * Get liveconnect functions defined for the crippled context - * so we can pass error messages to the JavaConsole - */ - JSJ_InitContext(crippled_context, JS_GetGlobalObject(crippled_context)); -#endif - - return; -} - -void -LM_ForceJSEnabled(MWContext *cx) -{ - lm_ReallyInitMocha(); - cx->forceJSEnabled = PR_TRUE; - return; -} - -/* XXX return boolean to propagate errors. */ -void -LM_InitMocha(void) -{ - /* register callback incase pref changes while we're running */ - PREF_RegisterCallback(lm_jsEnabled, lm_PrefChangedFunc, NULL); - PREF_RegisterCallback(lm_jsEnabledMN, lm_PrefChangedFunc, NULL); - PREF_RegisterCallback(lm_jsEnabledSigning, lm_PrefChangedFunc, NULL); - PREF_RegisterCallback(lm_jsEnabledCrossOrigin, lm_PrefChangedFunc, NULL); - PREF_RegisterCallback(lm_jsEnabledUnsignedExecution, lm_PrefChangedFunc, - NULL); - - /* get our enabled-ness states */ - PREF_GetBoolPref(lm_jsEnabled, &lm_enabled); - PREF_GetBoolPref(lm_jsEnabledMN, &lm_enabledMailNews); - PREF_GetBoolPref(lm_jsEnabledSigning, &lm_enabledSigning); - PREF_GetBoolPref(lm_jsEnabledCrossOrigin, &lm_enabledCrossOrigin); - PREF_GetBoolPref(lm_jsEnabledUnsignedExecution, - &lm_enabledUnsignedExecution); - - /* XXXMLM - there used to be a race condition where et_TopQueue was being - * initialized here because someone was putting events on it - * before lm_ReallyInitMocha() had been called. Is this still - * an issue? We don't have the default window group yet here. - */ - - if (!lm_enabled) - return; - - lm_ReallyInitMocha(); -} - -static int lm_moja_initialized = LM_MOJA_UNINITIALIZED; - -PRLogModuleInfo* Moja; - -void MojaLogModuleInit() -{ - Moja = PR_NewLogModule("Moja"); -} - -/* returns FALSE if already done or TRUE for success */ -int -LM_InitMoja() -{ - LMWindowGroup *grp; - - /* XXX assert mozilla thread */ - /* this stuff should only be done once. since it is always - * called on the moz thread we can do it the easy way */ - if (lm_moja_initialized != LM_MOJA_UNINITIALIZED) - return lm_moja_initialized; - - /* BONEHEAD - does this stuff need to be cross-thread, or will one do? */ - grp = LM_GetDefaultWindowGroup(NULL); - -#if defined(OJI) - { - nsJVMStatus status = JVM_GetJVMStatus(); - if (status != nsJVMStatus_Running) { - lm_moja_initialized = LM_MOJA_JAVA_FAILED; - return lm_moja_initialized; - } - - lm_moja_initialized = LM_MOJA_OK; - } -#elif defined(JAVA) - /* initialize the java env associated with the mocha thread */ - lm_JSEnv = LJ_EnsureJavaEnv(grp->thread); - if (lm_JSEnv == NULL) { - lm_moja_initialized = LM_MOJA_JAVA_FAILED; - return lm_moja_initialized; - } - - lm_moja_initialized = LM_MOJA_OK; -#else - lm_moja_initialized = LM_MOJA_JAVA_FAILED; -#endif - - MojaLogModuleInit(); - - return lm_moja_initialized; -} - -/* returns FALSE if already done or TRUE for success */ -int -LM_IsMojaInitialized() -{ - return lm_moja_initialized; -} - -void -LM_FinishMoja() -{ - /* XXX write me */ -} - - -/* BONEHEAD - defaults to the default thread group. Hmm. */ -PRBool PR_CALLBACK -LM_HandOffJSLock(PRThread * oldOwner, PRThread *newOwner) -{ - /* XXX note this doesn't worry about the lm_owner_count, - * assumes it's pushed/popped properly */ - LMWindowGroup *grp; - PRBool didHandOff = PR_FALSE; - grp = LM_GetDefaultWindowGroup(NULL); - PR_EnterMonitor(grp->owner_monitor); - if (grp->owner == oldOwner) { - grp->owner = newOwner; - didHandOff = PR_TRUE; - } - PR_Notify(grp->owner_monitor); - PR_ExitMonitor(grp->owner_monitor); - return didHandOff; -} - -/* - * push the mozilla event loop until the jslock is obtained - */ -static void -LM_WaitForJSLock(LMWindowGroup *grp) -{ - PREventQueue *q = mozilla_event_queue; - PRMonitor *mon = PR_GetEventQueueMonitor(q); - PRBool hadLayoutLock; - - XP_ASSERT(PR_CurrentThread() == mozilla_thread); - - hadLayoutLock = (JSBool)(!LO_VerifyUnlockedLayout()); - if (hadLayoutLock) - LO_UnlockLayout(); - while (!(grp->mozGotLock)) { - PR_EnterMonitor(mon); - if (!PR_EventAvailable(q)) - PR_Wait(mon, PR_INTERVAL_NO_TIMEOUT); - PR_ExitMonitor(mon); - PR_ProcessPendingEvents(q); - } - /* XXXMLM - We need a JSContext to set the thread on! */ - /* In current code, though, modules/applet is no - * longer active. Does this mean Mozilla isn't - * going to try to get the lock anymore? - */ - if (hadLayoutLock) - LO_LockLayout(); -} - -/* - * Wait until we get the JSLock for a given MWContext - */ -JSBool PR_CALLBACK -LM_LockJS(MWContext *mwc, char **errp) -{ - LMWindowGroup *grp = lm_MWContextToGroup(mwc); - - if(grp == NULL) { - grp = LM_GetDefaultWindowGroup(mwc); - LM_AddContextToGroup(grp, mwc); - } - return LM_LockJSByGroup(grp, errp); -} - -JSBool PR_CALLBACK -LM_LockJSByGroup(LMWindowGroup *grp, char **errp) -{ - PRThread *t = PR_CurrentThread(); - - XP_ASSERT(grp->owner_monitor != NULL); - - PR_EnterMonitor(grp->owner_monitor); - - while (grp->owner != t) { - if (grp->owner == NULL) { - grp->owner = t; - break; - } - if (PR_CurrentThread() == mozilla_thread) { - /* blocking here could deadlock, because the owner - * of the js thread may make synchronous event calls - * to the moz thread through et_moz.c or others. */ - - /* while we wait, run another event loop */ - grp->mozWantsLock = PR_TRUE; - grp->mozGotLock = PR_FALSE; - PR_ExitMonitor(grp->owner_monitor); - LM_WaitForJSLock(grp); - PR_EnterMonitor(grp->owner_monitor); - XP_ASSERT(grp->owner == mozilla_thread); - grp->mozWantsLock = PR_FALSE; - grp->mozGotLock = PR_FALSE; - } else { - PR_Wait(grp->owner_monitor, PR_INTERVAL_NO_TIMEOUT); - } - } - grp->current_count++; - PR_ExitMonitor(grp->owner_monitor); - return( JS_TRUE ); -} - -/* - * Try to get the JSLock but just return JS_FALSE if we can't - * get it, don't wait since we could deadlock - */ -JSBool PR_CALLBACK -LM_AttemptLockJS(MWContext *mwc, JSLockReleaseFunc fn, void * data) -{ - PRThread *t = PR_CurrentThread(); - LMWindowGroup *grp = lm_MWContextToGroup(mwc); - - /* - * If javascript is disabled this might have never been - * created. In that case its never possible to get the - * js lock. - */ - /* MLM - changing to use mochaInited */ - if (!mochaInited) - return JS_FALSE; - - if(grp == NULL) { - grp = LM_GetDefaultWindowGroup(mwc); - LM_AddContextToGroup(grp, mwc); - } - - PR_EnterMonitor(grp->owner_monitor); - if (grp->owner == NULL || grp->owner == t) { - grp->owner = t; - grp->current_count++; - PR_ExitMonitor(grp->owner_monitor); - return JS_TRUE; - } - - if (fn) { /* XXX - Only one waitor function allowed at a time */ - lm_lock_waiter ** p; - lm_lock_waiter * waiter = XP_NEW_ZAP(lm_lock_waiter); - if (!waiter) { - PR_ExitMonitor(grp->owner_monitor); - return JS_FALSE; - } - - waiter->fn = fn; - waiter->data = data; - - /* double indirection! */ - for (p = &grp->waiting_list; *p; p = &(*p)->next) - ; - - *p = waiter; - } - - PR_ExitMonitor(grp->owner_monitor); - return JS_FALSE; - -} - -JSBool PR_CALLBACK -LM_ClearAttemptLockJS(MWContext *mwc, JSLockReleaseFunc fn, void * data) -{ - LMWindowGroup *grp = lm_MWContextToGroup(mwc); - lm_lock_waiter ** p; - lm_lock_waiter * waiter; - - XP_ASSERT(grp != NULL); - - for (p = &grp->waiting_list; (waiter = *p) != NULL; p = &waiter->next) { - if (waiter->fn == fn && waiter->data == data) { - *p = waiter->next; - XP_FREE(waiter); - return JS_TRUE; - } - } - return JS_FALSE; -} - -PR_STATIC_CALLBACK(void) -lm_MozGotJSLock(void *data) -{ - /* does nothing - signalling is done when the lock - * is transferred over. the event that calls this - * function is only sent to wake up the nested event - * loop */ -} - -/* - * Release the JSLock - */ -void PR_CALLBACK -LM_UnlockJS(MWContext *mwc) -{ - LMWindowGroup *grp = lm_MWContextToGroup(mwc); - - XP_ASSERT(grp != NULL); - - LM_UnlockJSByGroup(grp); -} - - -void PR_CALLBACK -LM_UnlockJSByGroup(LMWindowGroup *grp) -{ - XP_ASSERT(PR_CurrentThread() == grp->owner); - PR_EnterMonitor(grp->owner_monitor); - XP_ASSERT(grp->current_count > 0); - if (--grp->current_count <= 0) { - - grp->current_count = 0; - grp->owner = NULL; - grp->current_context = NULL; - - /* was anyone waiting for us to release the JSLock? */ - - /* moz gets priority, and we hand the lock off immediately */ - if (grp->mozWantsLock) { - grp->owner = mozilla_thread; - grp->current_count = 0; - grp->mozWantsLock = PR_FALSE; - grp->mozGotLock = PR_TRUE; - ET_moz_CallFunctionAsync(lm_MozGotJSLock, NULL); - } else if (grp->waiting_list) { - lm_lock_waiter * waiter = grp->waiting_list; - grp->waiting_list = waiter->next; - ET_moz_CallFunctionAsync(waiter->fn, waiter->data); - XP_FREE(waiter); - } - - PR_Notify(grp->owner_monitor); - } - PR_ExitMonitor(grp->owner_monitor); -} - -/* - * keep track of the current context that owns the JS lock in - * case we get an interrupt event and need to decide whether - * to interrupt the current operation or not - */ -void -LM_JSLockSetContext(MWContext * context) -{ - LMWindowGroup *grp = lm_MWContextToGroup(context); - if(grp == NULL) { - grp = LM_GetDefaultWindowGroup(context); - LM_AddContextToGroup(grp, context); - } - - XP_ASSERT(grp->owner_monitor != NULL); - PR_EnterMonitor(grp->owner_monitor); - XP_ASSERT(grp->owner == PR_CurrentThread()); - grp->current_context = context; - PR_ExitMonitor(grp->owner_monitor); -} - -MWContext * -LM_JSLockGetContext(MWContext *mwc) -{ - LMWindowGroup *grp = lm_MWContextToGroup(mwc); - XP_ASSERT(grp != NULL); - return grp->current_context; -} - - -MochaDecoder * -LM_GetMochaDecoder(MWContext *context) -{ - JSContext *cx; - MochaDecoder *decoder; - - if (!LM_CanDoJS(context)) - return NULL; - - /* Get the context's JS decoder, creating one if necessary. */ - cx = context->mocha_context; - if (cx) { - JS_SetContextThread(cx); - /* XXXMLM - are we already in the request here? */ - JS_BeginRequest(cx); - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - JS_EndRequest(cx); - } else { - decoder = lm_NewWindow(context); - if (!decoder) - return NULL; - cx = decoder->js_context; - } - if (!decoder->document) { - JS_BeginRequest(cx); - if(!lm_InitWindowContent(decoder)) { - JS_EndRequest(cx); - return NULL; - } - JS_EndRequest(cx); - } - /* The decoder has at least one forward ref from context. */ - XP_ASSERT(decoder->forw_count > 0); - decoder->forw_count++; - return decoder; -} - -void -LM_PutMochaDecoder(MochaDecoder *decoder) -{ - JSContext * cx; - - XP_ASSERT(decoder->forw_count > 0); - if (--decoder->forw_count <= 0) { - decoder->forw_count = 0; - if (decoder->window_context) - decoder->window_context->mocha_context = NULL; - -#define CLEAR(obj) obj = 0 - - /* Clear all object prototype refs. */ - CLEAR(decoder->anchor_prototype); - CLEAR(decoder->bar_prototype); - CLEAR(decoder->document_prototype); - CLEAR(decoder->event_prototype); - CLEAR(decoder->event_capturer_prototype); - CLEAR(decoder->event_receiver_prototype); - CLEAR(decoder->form_prototype); - CLEAR(decoder->image_prototype); - CLEAR(decoder->input_prototype); - CLEAR(decoder->layer_prototype); - CLEAR(decoder->option_prototype); - CLEAR(decoder->rect_prototype); - CLEAR(decoder->url_prototype); - - /* Clear window sub-object refs. */ - if (decoder->document) - lm_CleanUpDocumentRoots(decoder, decoder->document); - CLEAR(decoder->document); - CLEAR(decoder->history); - CLEAR(decoder->location); - CLEAR(decoder->navigator); - CLEAR(decoder->components); - CLEAR(decoder->crypto); - CLEAR(decoder->screen); -#ifdef NAV_HARDWARE - CLEAR(decoder->hardware); -#endif - CLEAR(decoder->environment); - CLEAR(decoder->pkcs11); - CLEAR(decoder->background_update); - - - /* Clear ad-hoc GC roots. */ - CLEAR(decoder->event_receiver); - CLEAR(decoder->opener); - - /* Clear the root of this window's object tree. */ - CLEAR(decoder->window_object); - -#undef CLEAR - - /* Don't forget to clear GC roots in the context. */ - cx = decoder->js_context; - JS_ClearRegExpRoots(cx); - - /* Reset these in case a backward reference to decoder lingers. */ - decoder->firstVersion = JSVERSION_UNKNOWN; - decoder->principals = NULL; - - /* Hold an extra back ref to keep cx and decoder alive. */ - HOLD_BACK_COUNT(decoder); - JS_SetGlobalObject(cx, NULL); - JS_GC(cx); - - /* - * If the finalizer ran, and there are no back refs from private - * data of objects held by other windows' properties, then this drop - * will destroy the decoder. Otherwise it must live on until its - * runaway kids are all finalized. - */ - DROP_BACK_COUNT(decoder); - } -} - -JSBool -LM_IsActive(MWContext *context) -{ - JSContext *cx = context->mocha_context; - JSBool ans; - if (!cx) - return JS_FALSE; - /* No need to lock here. MLM */ - ans = JS_IsRunning(cx); - return (JSBool)(ans || (context->js_timeouts_pending > 0)); -} - -const char * -LM_GetSourceURL(MochaDecoder *decoder) -{ - JSContext *cx; - const char *originURL; - - if (decoder->nesting_url) - return decoder->nesting_url->str; - if (decoder->source_url) - return decoder->source_url; - cx = decoder->js_context; - originURL = lm_GetObjectOriginURL(cx, decoder->window_object); - if (!originURL) - return NULL; - decoder->source_url = JS_strdup(cx, originURL); - return decoder->source_url; -} - -static const char AUTOINSTALL_PREFIX[] = "autoinstall:"; -static size_t AUTOINSTALL_PREFIX_LENGTH = sizeof AUTOINSTALL_PREFIX - 1; - -static JSObject * -lm_get_scope_from_string(MochaDecoder *decoder, JSContext *cx, - const char *source_url, uint lineno, - char *scope_to, JSPrincipals *principals) -{ - jsval result; - JSBool ok; - JSObject *scope; - - if (!scope_to) - return NULL; - - /* - * Hack for ASD -- create a new object with environment from scope_to. - * If we ever change autoinstall:, change the define MOCHA_CONTEXT_PREFIX - * in softupdt.c XXXbe how about a single definition in a .h file? - */ - if (!XP_STRNCMP(scope_to, AUTOINSTALL_PREFIX, AUTOINSTALL_PREFIX_LENGTH)) { - return lm_NewSoftupObject(cx, decoder, - scope_to + AUTOINSTALL_PREFIX_LENGTH); - } - - - if (decoder->active_layer_id == LO_DOCUMENT_LAYER_ID) { - scope = decoder->window_object; - } else { - LO_LockLayout(); - scope = LO_GetLayerMochaObjectFromId(decoder->window_context, - decoder->active_layer_id); - LO_UnlockLayout(); - } - - /* pass the scope as a script to return the scope object */ - ok = JS_EvaluateScriptForPrincipals(cx, - scope, - principals, - scope_to, - strlen(scope_to), - source_url, - lineno, - &result); - - if (ok) { - XP_ASSERT(JSVAL_IS_OBJECT(result)); - if (JSVAL_IS_OBJECT(result)) - return JSVAL_TO_OBJECT(result); - } - - return NULL; -} - -JSBool -LM_EvaluateBuffer(MochaDecoder *decoder, void *base, size_t length, - uint lineno, char *scope_to, JSPrincipals *principals, - JSBool unicode, jsval *result) -{ - JSContext *cx; - const char *source_url; - JSBool ok; - JSObject *scope; - - /* XXX if lineno == 0, do something smart */ - source_url = LM_GetSourceURL(decoder); - if (!source_url) - return JS_FALSE; - cx = decoder->js_context; - - principals = LM_RegisterPrincipals(decoder, principals, NULL, base); - if (!principals) - return JS_FALSE; - - scope = lm_get_scope_from_string(decoder, cx, source_url, lineno, - scope_to, principals); - if (!scope) { - if (decoder->active_layer_id == LO_DOCUMENT_LAYER_ID) { - scope = decoder->window_object; - } else { - const char *scope_source_url; - - LO_LockLayout(); - scope = LO_GetLayerMochaObjectFromId(decoder->window_context, - decoder->active_layer_id); - LO_UnlockLayout(); - if (!scope) - return JS_FALSE; - scope_source_url = lm_GetLayerOriginURL(cx, scope); - if (scope_source_url) - source_url = scope_source_url; - } - } - - if (unicode) - ok = JS_EvaluateUCScriptForPrincipals(cx, scope, principals, base, - length, source_url, lineno, - result); - else - ok = JS_EvaluateScriptForPrincipals(cx, scope, principals, base, - length, source_url, lineno, - result); - return ok; -} - -char * -LM_EvaluateAttribute(MWContext *context, char *expr, uint lineno) -{ - char *bytes; - MochaDecoder *decoder; - jsval result; - JSContext *cx; - JSPrincipals *principals; - - bytes = 0; - if (!expr) - return bytes; - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return bytes; - - /* - * Since this called directly from the mozilla thread, we know that - * it's safe to sample the doc_id. In fact, we have to do that, - * otherwise the doc_id check could fail for any entities processed. - */ - decoder->doc_id = XP_DOCID(context); - - cx = decoder->js_context; - - /* Make sure the correct thread ID is set on the JS context */ - JS_SetContextThread(cx); - - /* Since we're on the Mozilla thread, we haven't begun a request yet. */ - JS_BeginRequest(cx); - - if (!JS_AddRoot(cx, &result)) { /* XXX chouck - can we do a lockGCThing here */ - JS_EndRequest(cx); - LM_PutMochaDecoder(decoder); - return bytes; - } - principals = lm_GetCompilationPrincipals(decoder, NULL); - if (principals) { - JSPRINCIPALS_HOLD(cx, principals); - if (LM_EvaluateBuffer(decoder, expr, XP_STRLEN(expr), lineno, NULL, - principals, JS_FALSE, &result)) { - bytes = lm_StrToLocalEncoding(context, - JS_ValueToString(cx, result)); - } - JSPRINCIPALS_DROP(cx, principals); - } - JS_RemoveRoot(cx, &result); - JS_EndRequest(cx); - LM_PutMochaDecoder(decoder); - return bytes; -} - -static JSObject* -lm_get_layer_parent(JSContext *cx, JSObject *obj) -{ - JSObject *save = obj; - jsval val; - - if (!JS_InstanceOf(cx, obj, &lm_layer_class, NULL)) - return NULL; - - while (obj) { - if (JS_InstanceOf(cx, obj, &lm_document_class, NULL)) { - return obj; - } - obj = JS_GetParent(cx, obj); - } - - /* Should only get here if the layer's parent has been severed - * Don't want to use this method in general because it could - * cause a security violation on the layer container check. - */ - if (!JS_GetProperty(cx, save, lm_parentLayer_str, &val)) - return NULL; - if (val != JSVAL_NULL && JSVAL_IS_OBJECT(val)) { - obj = JSVAL_TO_OBJECT(val); - if (!JS_GetProperty(cx, obj, lm_document_str, &val)) - return NULL; - - if (val != JSVAL_NULL && JSVAL_IS_OBJECT(val)) - return JSVAL_TO_OBJECT(val); - } - - return NULL; -} - - -static JSBool -lm_lookup_event_handler(JSContext *cx, JSObject *obj, uint32 type, jsval *fvp) -{ - JSEventNames *names; - char name[32]; - JSBool ok; - - names = lm_GetEventNames(type); - if (!names) { - *fvp = JSVAL_VOID; - return JS_TRUE; - } - PR_snprintf(name, sizeof name, "on%s", names->lowerName); - ok = JS_LookupProperty(cx, obj, name, fvp); - if (ok && JSVAL_IS_VOID(*fvp)) { - PR_snprintf(name, sizeof name, "on%s", names->mixedName); - ok = JS_LookupProperty(cx, obj, name, fvp); - } - return ok; -} - -JSBool -lm_SendEvent(MWContext *context, JSObject *obj, JSEvent *event, jsval *result) -{ - JSContext *cx; - JSObject *eventObj; - MochaDecoder *decoder; - JSBool ok = JS_TRUE; - jsval funval, argv[1]; - MWContext *mwcx; - uint32 event_capture_bit = 0; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return JS_FALSE; - - cx = decoder->js_context; - - if (!event->object) - event->object = obj; - - event_capture_bit |= context->event_bit; - - if (context->is_grid_cell) { - mwcx = context; - while (mwcx->grid_parent) { - mwcx = mwcx->grid_parent; - event_capture_bit |= mwcx->event_bit; - } - } - - ok = lm_lookup_event_handler(cx, obj, event->type, &funval); - if (!ok || - (JS_TypeOfValue(cx, funval) != JSTYPE_FUNCTION && - !(event_capture_bit & event->type))) { - goto out; - } - - eventObj = lm_NewEventObject(decoder, event); - if (!eventObj) { - ok = JS_FALSE; - goto out; - } - - argv[0] = OBJECT_TO_JSVAL(eventObj); - ok = lm_FindEventHandler(context, obj, eventObj, funval, result); - -#ifdef DOM - /* when firing the onUnload event, destroy the node tree afterwards */ - if (event->type == EVENT_UNLOAD) { - /* XXX should we run GC before, to clean up reflections? */ - lm_DestroyDocumentNodes(context); - } -#endif - -out: - LM_PutMochaDecoder(decoder); - return ok; -} - -JSBool -lm_FindEventHandler(MWContext *context, JSObject *obj, JSObject *eventObj, - jsval funval, jsval *result) -{ - - MochaDecoder *decoder; - JSContext *cx; - JSBool ok=JS_FALSE, is_window; - JSEventCapturer *js_cap; - JSEvent *event; - MWContext *mwcx; - uint32 event_capture_bit = 0; - - if (!obj) - return JS_TRUE; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return JS_FALSE; - - cx = decoder->js_context; - - /* Fun, fun. Time for the reverse architecture event capturing. - * First, let's see if we're capturing at all. - */ - event_capture_bit |= context->event_bit; - - if (context->is_grid_cell) { - mwcx = context; - while (mwcx->grid_parent) { - mwcx = mwcx->grid_parent; - event_capture_bit |= mwcx->event_bit; - } - } - - if (!(event = JS_GetInstancePrivate(cx, eventObj, &lm_event_class, NULL))) { - LM_PutMochaDecoder(decoder); - return JS_FALSE; - } - - if (!(event_capture_bit & event->type)) { - /*No capturing going on. Just call the function.*/ - LM_PutMochaDecoder(decoder); - return lm_HandleEvent(cx, obj, eventObj, funval, result); - - } - - event->event_handled = JS_FALSE; - - /*Somebody wants it. Let's go! Time for recursion!*/ - - is_window = JS_InstanceOf(cx, obj, &lm_window_class, NULL); - if (!is_window || context->grid_parent) { - if (is_window && context->is_grid_cell) { - if (context->grid_parent->mocha_context) { - ok = lm_FindEventHandler(context->grid_parent, - JS_GetGlobalObject(context->grid_parent->mocha_context), - eventObj, 0, result); - } else { - ok = JS_TRUE; - } - } else if (JS_InstanceOf(cx, obj, &lm_layer_class, NULL)) { - ok = lm_FindEventHandler(context, lm_get_layer_parent(cx, obj), - eventObj, 0, result); - } else { - ok = lm_FindEventHandler(context, JS_GetParent(cx, obj), - eventObj, 0, result); - } - } - - if (!event->event_handled) { - - /*We unfortunately have to check versus different type here.*/ - if (JS_InstanceOf(cx, obj, &lm_window_class, NULL)) { - - if (decoder->event_bit & event->type && - !(decoder->event_mask & event->type)) - { - decoder->event_mask |= event->type; - ok = lm_HandleEvent(cx, obj, eventObj, funval, result); - decoder->event_mask &= ~event->type; - LM_PutMochaDecoder(decoder); - event->event_handled = ok; - return ok; - } - } - - if (JS_InstanceOf(cx, obj, &lm_document_class, NULL) || - JS_InstanceOf(cx, obj, &lm_layer_class, NULL)) { - js_cap = JS_GetPrivate(cx, obj); - - if (js_cap && js_cap->event_bit & event->type && - !(js_cap->base.event_mask & event->type)) - { - XP_ASSERT(cx == event->decoder->js_context); - js_cap->base.event_mask |= event->type; - ok = lm_HandleEvent(cx, obj, eventObj, funval, result); - js_cap->base.event_mask &= ~event->type; - LM_PutMochaDecoder(decoder); - event->event_handled = ok; - return ok; - } - } - - /* If we get this far we should be back at the original object and it - * needs to have its eventhandler called. - */ - if (obj == event->object) { - ok = lm_HandleEvent(cx, obj, eventObj, funval, result); - } - } - LM_PutMochaDecoder(decoder); - return ok; -} - -JSBool -lm_HandleEvent(JSContext *cx, JSObject *obj, JSObject *eventObj, - jsval funval, jsval *result) -{ - JSEvent *event; - JSBool ok = JS_TRUE; - jsval argv[1]; - char name[32]; - JSFunction *fun; - - if (JS_TypeOfValue(cx, funval) != JSTYPE_FUNCTION) { - event = JS_GetPrivate(cx, eventObj); - if (!event) { - ok = JS_FALSE; - goto out; - } - - PR_snprintf(name, sizeof name, "on%s", lm_EventName(event->type)); - if (!JS_LookupProperty(cx, obj, name, result)) { - ok = JS_FALSE; - goto out; - } - - ok = lm_lookup_event_handler(cx, obj, event->type, &funval); - if (!ok || JS_TypeOfValue(cx, funval) != JSTYPE_FUNCTION) - goto out; - - fun = JS_ValueToFunction(cx, funval); - if (fun == NULL) { - ok = JS_FALSE; - goto out; - } - - if (!lm_CanCaptureEvent(cx, fun, event)) { - ok = JS_FALSE; - goto out; - } - } - - - argv[0] = OBJECT_TO_JSVAL(eventObj); -#ifdef XP_UNIX - lm_handling_event++; -#endif - ok = JS_CallFunctionValue(cx, obj, funval, 1, argv, result); -#ifdef XP_UNIX - lm_handling_event--; -#endif - -out: - return ok; -} - -/* - * Wrapper for the common case of decoder's stream being set by code running - * on decoder's JS context. - */ -JSBool -LM_SetDecoderStream(MWContext * context, NET_StreamClass *stream, - URL_Struct *url_struct, JSBool free_stream_on_close) -{ - MochaDecoder *decoder = LM_GetMochaDecoder(context); - JSBool rv; - - if (!decoder) - return (JS_FALSE); - - rv = lm_SetInputStream(decoder->js_context, decoder, stream, - url_struct, free_stream_on_close); - - LM_PutMochaDecoder(decoder); - return(rv); - -} - -void -lm_SetActiveForm(MWContext * context, int32 id) -{ - MochaDecoder *decoder = LM_GetMochaDecoder(context); - - if (!decoder) - return; - - decoder->active_form_id = id; - LM_PutMochaDecoder(decoder); - -} - -void -LM_SetActiveLayer(MWContext * context, int32 layer_id) -{ - MochaDecoder *decoder = LM_GetMochaDecoder(context); - if (!decoder) - return; - - decoder->active_layer_id = layer_id; - - LM_PutMochaDecoder(decoder); -} - -int32 -LM_GetActiveLayer(MWContext * context) -{ - int32 layer_id; - - MochaDecoder *decoder = LM_GetMochaDecoder(context); - if (!decoder) - return LO_DOCUMENT_LAYER_ID; - - layer_id = decoder->active_layer_id; - - LM_PutMochaDecoder(decoder); - - return layer_id; -} - -JSBool -lm_SetInputStream(JSContext *cx, MochaDecoder *decoder, - NET_StreamClass *stream, URL_Struct *url_struct, - JSBool free_stream_on_close) -{ - const char *origin_url; - JSObject *container; - JSPrincipals *principals; - - /* - * If the stream is NULL don't clobber the old value - */ - if (stream) { - decoder->stream = stream; - decoder->free_stream_on_close = free_stream_on_close; - } - - /* - * If we're still in the process of loading the main parser stream - * (i.e. the window's load event hasn't been sent), the window is the - * owner of the stream. - */ - if (!decoder->load_event_sent) - decoder->stream_owner = LO_DOCUMENT_LAYER_ID; - decoder->url_struct = NET_HoldURLStruct(url_struct); - - /* Don't update origin for <SCRIPT SRC="URL"> URLs. */ - if (decoder->nesting_url) - return JS_TRUE; - - /* Update the origin URL associated with the document in decoder. */ - if (!decoder->writing_input) { - switch (NET_URL_Type(url_struct->address)) { - case ABOUT_TYPE_URL: - case MOCHA_TYPE_URL: - return JS_TRUE; - } - origin_url = url_struct->address; - } else { - origin_url = lm_GetSubjectOriginURL(cx); - if (!origin_url) - return JS_FALSE; - } - - container = lm_GetActiveContainer(decoder); - if (container == NULL) - return JS_FALSE; - principals = lm_GetInnermostPrincipals(cx, container, NULL); - if (principals == NULL) - return JS_FALSE; - if (XP_STRCMP(principals->codebase, origin_url) == 0) { - /* XXXbe Don't want to invalidate self-modifying doc's cert principals - pessimisticly (for fear of a written unsigned <script> tag). - Rather, let LM_RegisterPrincipals handle that case only when - it arises. Note that overwrite of a closed doc drops any old - principals via LM_ReleaseDocument/lm_FreeWindowContent. - lm_InvalidateCertPrincipals(decoder, principals); - */ - return JS_TRUE; - } - principals = LM_NewJSPrincipals(NULL, NULL, origin_url); - if (principals == NULL) - return JS_FALSE; - lm_SetContainerPrincipals(cx, container, principals); - return JS_TRUE; -} - -NET_StreamClass * -lm_ClearDecoderStream(MochaDecoder *decoder, JSBool fromDiscard) -{ - NET_StreamClass *stream; - URL_Struct *url_struct; - - stream = decoder->stream; - url_struct = decoder->url_struct; - decoder->stream = 0; - decoder->stream_owner = LO_DOCUMENT_LAYER_ID; - decoder->url_struct = 0; - if (decoder->writing_input) { - decoder->writing_input = JS_FALSE; - if (stream) { - /* - * Complete the stream before freeing the URL struct to which it - * may hold a private pointer. - */ - if (!fromDiscard) { - if (decoder->window_context && - XP_DOCID(decoder->window_context) != -1) - ET_moz_CallFunction( (ETVoidPtrFunc) stream->complete, (void *)stream); - if (decoder->free_stream_on_close) - XP_DELETE(stream); - } - stream = NULL; - } - if (url_struct) { - /* we should no longer be setting this */ - XP_ASSERT(url_struct->pre_exit_fn == NULL); - } - } - - /* - * whether we were writing or not we were holding a reference - * to this url_struct. Let go of it now - */ - if (url_struct) - NET_DropURLStruct(url_struct); - decoder->free_stream_on_close = JS_FALSE; - return(stream); -} - -#ifndef DOM -/* XXX believe that this is dead code, can I remove it? */ -PRIVATE void -LM_ClearContextStream(MWContext *context) -{ - MochaDecoder *decoder; - - if (!context->mocha_context) { - /* Don't impose cost on non-JS contexts. */ - return; - } - decoder = LM_GetMochaDecoder(context); - if (!decoder) { - /* XXX how can this happen? If lm_InitWindow fails or if the user - turns off JS in the middle of a load. Return false! */ - return; - } - lm_ClearDecoderStream(decoder, JS_FALSE); - LM_PutMochaDecoder(decoder); -} -#endif - -JSBool -lm_SaveParamString(JSContext *cx, PA_Block *bp, const char *str) -{ - if (*bp) - PA_FREE(*bp); - - *bp = (PA_Block) strdup(str); - if (!*bp) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - return JS_TRUE; -} - -JSObject * -lm_GetOuterObject(MochaDecoder * decoder) -{ - lo_FormData *form_data; - JSObject * rv = NULL; - - if (decoder->active_form_id) { - LO_LockLayout(); - form_data = - LO_GetFormDataByID(decoder->window_context, - decoder->active_layer_id, - decoder->active_form_id); - if (form_data) - rv = form_data->mocha_object; - - LO_UnlockLayout(); - } - else - rv = lm_GetDocumentFromLayerId(decoder, decoder->active_layer_id); - - return rv; -} - -/* - * Add an object to an array - */ -JSBool -lm_AddObjectToArray(JSContext * cx, JSObject * array_obj, - const char * name, jsint index, JSObject * obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, array_obj); - if (!array) - return JS_TRUE; - - if (name) { - if (!JS_DefineProperty(cx, array_obj, name, OBJECT_TO_JSVAL(obj), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - return JS_FALSE; - } - } - - if (!JS_DefineElement(cx, array_obj, (jsint) index, - OBJECT_TO_JSVAL(obj), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - return JS_FALSE; - } - - if (index >= array->length) - array->length = index + 1; - - return JS_TRUE; - -} - -void -lm_SetVersion(MochaDecoder *decoder, JSVersion version) { - if (version == JSVERSION_UNKNOWN) { - version = (decoder->firstVersion == JSVERSION_UNKNOWN) - ? JSVERSION_DEFAULT - : decoder->firstVersion; - } - if (decoder->firstVersion == JSVERSION_UNKNOWN) { - decoder->firstVersion = version; - } - JS_SetVersion(decoder->js_context, version); -} - -/* - * Convert a locally encoded string into a 16-bit unicode string to pass - * to the JS runtime. Allow cx to be NULL - */ - -char * -lm_StrToEncoding(JSContext * cx, uint16 charset, JSString * str) -{ - INTL_Unicode * src = JS_GetStringChars(str); - uint32 srclen = JS_GetStringLength(str); - uint32 destlen; - char * dest; - - if (!str) - return NULL; - - destlen = INTL_UnicodeToStrLen(charset, src, srclen); - dest = XP_ALLOC(destlen); - if (!dest) { - JS_ReportOutOfMemory(cx); - return NULL; - } - - INTL_UnicodeToStr(charset, src, srclen, (unsigned char *) dest, destlen); - return dest; - -} - -JSString * -lm_EncodingToStr(JSContext * cx, uint16 charset, char * bytes) -{ - uint32 srclen, destlen; - INTL_Unicode * unicode = NULL; - - /* return NULL or empty string? */ - if (!bytes) - return JS_NewStringCopyZ(cx, NULL); - - srclen = XP_STRLEN(bytes); - - /* find out how many unicode characters we'll end up with */ - destlen = INTL_StrToUnicodeLen(charset, (unsigned char *) bytes); - unicode = XP_ALLOC(sizeof(INTL_Unicode) * destlen); - if (!unicode) - return NULL; - - /* do the conversion */ - destlen = INTL_StrToUnicode(charset, (unsigned char *) bytes, - unicode, destlen); - return JS_NewUCString(cx, (jschar *) unicode, destlen); - -} - - -/* - * Convert a locally encoded string into a 16-bit unicode string to pass - * to the JS runtime. Allow cx to be NULL - */ -char * -lm_StrToLocalEncoding(MWContext * context, JSString * str) -{ -#ifdef UNICODE - uint16 charset; - charset = INTL_GetCSIWinCSID(LO_GetDocumentCharacterSetInfo(context)); - XP_ASSERT(charset != CS_UNKNOWN); - if (charset == CS_DEFAULT || charset == CS_UNKNOWN) - charset = CS_LATIN1; - return lm_StrToEncoding(context->mocha_context, charset, str); - -#else - return strdup(JS_GetStringBytes(str)); -#endif - -} - -JSString * -lm_LocalEncodingToStr(MWContext * context, char * bytes) -{ - uint16 charset; - -#ifdef UNICODE - charset = INTL_GetCSIWinCSID(LO_GetDocumentCharacterSetInfo(context)); - XP_ASSERT(charset != CS_UNKNOWN); - if (charset == CS_DEFAULT || charset == CS_UNKNOWN) - charset = CS_LATIN1; - - return lm_EncodingToStr(context->mocha_context, charset, bytes); - -#else - return JS_NewStringCopyZ(context->mocha_context, bytes); -#endif - -} diff --git a/mozilla/lib/libmocha/lm_input.c b/mozilla/lib/libmocha/lm_input.c deleted file mode 100644 index c2301640a58..00000000000 --- a/mozilla/lib/libmocha/lm_input.c +++ /dev/null @@ -1,2577 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * JS input focus and event notifiers. - * - * Brendan Eich, 9/27/95 - * - * XXX SIZE, MAXLENGTH attributes - */ -#include "lm.h" -#include "xp.h" -#include "lo_ele.h" -#include "pa_tags.h" -#include "layout.h" -#include "prmem.h" - -enum input_slot { - INPUT_TYPE = -1, - INPUT_NAME = -2, - INPUT_FORM = -3, - INPUT_VALUE = -4, - INPUT_DEFAULT_VALUE = -5, - INPUT_LENGTH = -6, - INPUT_OPTIONS = -7, - INPUT_SELECTED_INDEX = -8, - INPUT_STATUS = -9, - INPUT_DEFAULT_STATUS = -10 -#if DISABLED_READONLY_SUPPORT - INPUT_DISABLED = -11, - INPUT_READONLY = -12 -#endif -}; - -static char lm_options_str[] = "options"; - -static JSPropertySpec input_props[] = { - {"type", INPUT_TYPE, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"name", INPUT_NAME, JSPROP_ENUMERATE}, - {"form", INPUT_FORM, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"value", INPUT_VALUE, JSPROP_ENUMERATE}, - {"defaultValue", INPUT_DEFAULT_VALUE, JSPROP_ENUMERATE}, - {lm_length_str, INPUT_LENGTH, JSPROP_ENUMERATE}, - {lm_options_str, INPUT_OPTIONS, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"selectedIndex", INPUT_SELECTED_INDEX, JSPROP_ENUMERATE}, - {"status", INPUT_STATUS, 0}, - {"defaultStatus", INPUT_DEFAULT_STATUS, 0}, - {PARAM_CHECKED, INPUT_STATUS, JSPROP_ENUMERATE}, - {"defaultChecked", INPUT_DEFAULT_STATUS, JSPROP_ENUMERATE}, -#if DISABLED_READONLY_SUPPORT - {"disabled", INPUT_DISABLED, JSPROP_ENUMERATE}, - {"readonly", INPUT_READONLY, JSPROP_ENUMERATE}, -#endif - {0} -}; - -/* - * Base input element type. - */ -typedef struct JSInput { - JSInputHandler handler; - int32 index; -} JSInput; - -#define input_decoder handler.base_decoder -#define input_type handler.base_type -#define input_object handler.object -#define input_event_mask handler.event_mask - -/* - * Text and textarea input type. - */ -typedef struct JSTextInput { - JSInput input; -} JSTextInput; - -/* - * Select option tag reflected type. - */ -enum option_slot { - OPTION_INDEX = -1, - OPTION_TEXT = -2, - OPTION_VALUE = -3, - OPTION_DEFAULT_SELECTED = -4, - OPTION_SELECTED = -5 -}; - -static JSPropertySpec option_props[] = { - {"index", OPTION_INDEX, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"text", OPTION_TEXT, JSPROP_ENUMERATE}, - {"value", OPTION_VALUE, JSPROP_ENUMERATE}, - {"defaultSelected", OPTION_DEFAULT_SELECTED, JSPROP_ENUMERATE}, - {"selected", OPTION_SELECTED, JSPROP_ENUMERATE}, - {0} -}; - -typedef struct JSSelectOption { - MochaDecoder *decoder; - JSObject *object; - uint32 index; - int32 indexInForm; - lo_FormElementOptionData *data; -} JSSelectOption; - -extern JSClass lm_option_class; - -PR_STATIC_CALLBACK(JSBool) -option_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSSelectOption *option; - lo_FormElementOptionData *optionData; - lo_FormElementSelectData *selectData; - LO_FormElementStruct *form_element; - enum option_slot option_slot; - JSString *str; - char *value; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - option = JS_GetInstancePrivate(cx, obj, &lm_option_class, NULL); - if (!option) - return JS_TRUE; - - LO_LockLayout(); - optionData = option->data; - if (optionData) { - selectData = 0; - form_element = 0; - } else { - JSObject * parent = JS_GetParent(cx, obj); - if (!parent) - goto good; - form_element = lm_GetFormElementByIndex(cx, JS_GetParent(cx, parent), - option->indexInForm); - if (!form_element) - goto good; - selectData = &form_element->element_data->ele_select; - } - option_slot = slot; - switch (option_slot) { - case OPTION_INDEX: - *vp = INT_TO_JSVAL(option->index); - break; - - case OPTION_TEXT: - case OPTION_VALUE: - if (selectData) - optionData = (lo_FormElementOptionData *) selectData->options; - if (slot == OPTION_TEXT) - value = (char *)optionData[option->index].text_value; - else - value = (char *)optionData[option->index].value; - str = lm_LocalEncodingToStr(option->decoder->window_context, - value); - if (!str) - goto bad; - *vp = STRING_TO_JSVAL(str); - break; - - case OPTION_DEFAULT_SELECTED: - case OPTION_SELECTED: - if (selectData) - optionData = (lo_FormElementOptionData *) selectData->options; - *vp = BOOLEAN_TO_JSVAL((option_slot == OPTION_DEFAULT_SELECTED) - ? optionData[option->index].def_selected - : optionData[option->index].selected); - break; - default: - /* Don't mess with a user-defined or method property. */ - break; - } - -good: - LO_UnlockLayout(); - return JS_TRUE; -bad: - LO_UnlockLayout(); - return JS_FALSE; -} - -PR_STATIC_CALLBACK(JSBool) -option_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSSelectOption *option; - lo_FormElementOptionData *optionData; - lo_FormElementSelectData *selectData; - LO_FormElementStruct *form_element; - enum option_slot option_slot; - JSBool showChange; - int32 i; - jsint slot; - char * value = NULL; - MWContext * context; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - option = JS_GetInstancePrivate(cx, obj, &lm_option_class, NULL); - if (!option) - return JS_TRUE; - - context = option->decoder->window_context; - optionData = option->data; - LO_LockLayout(); - if (optionData) { - selectData = 0; - form_element = 0; - } else { - JSObject * parent = JS_GetParent(cx, obj); - if (!parent) - goto good; - form_element = lm_GetFormElementByIndex(cx, JS_GetParent(cx, parent), - option->indexInForm); - if (!form_element) - goto good; - selectData = &form_element->element_data->ele_select; - } - - if (selectData && option->index >= (uint32) selectData->option_cnt) - goto good; - - option_slot = slot; - showChange = JS_FALSE; - switch (option_slot) { - case OPTION_TEXT: - case OPTION_VALUE: - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) { - goto bad; - } - if (selectData) - optionData = (lo_FormElementOptionData *) selectData->options; - - value = lm_StrToLocalEncoding(context, JSVAL_TO_STRING(*vp)); - if (!value) - goto bad; - - if (option_slot == OPTION_TEXT) { - if (!lm_SaveParamString(cx, &optionData[option->index].text_value, - value)) { - goto bad; - } - showChange = JS_TRUE; - } else { - if (!lm_SaveParamString(cx, &optionData[option->index].value, - value)) { - goto bad; - } - } - XP_FREE(value); - break; - - case OPTION_DEFAULT_SELECTED: - case OPTION_SELECTED: - if (!JSVAL_IS_BOOLEAN(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_BOOLEAN, vp)) { - goto bad; - } - - if (selectData) - optionData = (lo_FormElementOptionData *) selectData->options; - if (option_slot == OPTION_DEFAULT_SELECTED) - optionData[option->index].def_selected = JSVAL_TO_BOOLEAN(*vp); - else - optionData[option->index].selected = JSVAL_TO_BOOLEAN(*vp); - if (selectData) { - if (JSVAL_TO_BOOLEAN(*vp) && !selectData->multiple) { - /* Clear all the others. */ - for (i = 0; i < selectData->option_cnt; i++) { - if ((uint32)i == option->index) - continue; - if (option_slot == OPTION_DEFAULT_SELECTED) - optionData[i].def_selected = FALSE; - else - optionData[i].selected = FALSE; - } - } - } - - if (option_slot == OPTION_SELECTED) - showChange = JS_TRUE; - break; - - default: - /* Don't mess with a user-defined property. */ - goto good; - } - - if (showChange && context && form_element) { - ET_PostManipulateForm(context, - (LO_Element *)form_element, - EVENT_CHANGE); - } - -good: - LO_UnlockLayout(); - return JS_TRUE; -bad: - XP_FREEIF(value); - LO_UnlockLayout(); - return JS_FALSE; -} - -PR_STATIC_CALLBACK(void) -option_finalize(JSContext *cx, JSObject *obj) -{ - JSSelectOption *option; - lo_FormElementOptionData *optionData; - - option = JS_GetPrivate(cx, obj); - if (!option) - return; - optionData = option->data; - if (optionData) { - if (optionData->text_value) - JS_free(cx, optionData->text_value); - if (optionData->value) - JS_free(cx, optionData->value); - JS_free(cx, optionData); - } - DROP_BACK_COUNT(option->decoder); - JS_free(cx, option); -} - -JSClass lm_option_class = { - "Option", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, option_getProperty, option_setProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, option_finalize -}; - -/* - * Select option constructor, can be called any of these ways: - * opt = new Option() - * opt = new Option(text) - * opt = new Option(text, value) - * opt = new Option(text, value, defaultSelected) - * opt = new Option(text, value, defaultSelected, selected) - * Where opt can be selectData.options[i] for any nonnegative integer i. - */ -PR_STATIC_CALLBACK(JSBool) -Option(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - JSSelectOption *option; - lo_FormElementOptionData *optionData; - JSString *str; - JSBool bval; - MWContext *context; - - XP_ASSERT(JS_InstanceOf(cx, obj, &lm_option_class, NULL)); - - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - context = decoder->window_context; - option = JS_malloc(cx, sizeof *option); - if (!option) - return JS_TRUE; - XP_BZERO(option, sizeof *option); - if (!JS_SetPrivate(cx, obj, option)) { - JS_free(cx, option); - return JS_FALSE; - } - - optionData = JS_malloc(cx, sizeof *optionData); - if (!optionData) - return JS_FALSE; - XP_BZERO(optionData, sizeof *optionData); - option->data = optionData; - - if (argc >= 4) { - if (!JSVAL_IS_BOOLEAN(argv[3]) && - !JS_ValueToBoolean(cx, argv[3], &bval)) { - return JS_FALSE; - } - optionData->selected = bval; - } - if (argc >= 3) { - if (!JSVAL_IS_BOOLEAN(argv[2]) && - !JS_ValueToBoolean(cx, argv[2], &bval)) { - return JS_FALSE; - } - optionData->def_selected = bval; - } - if (argc >= 2) { - if (JSVAL_IS_STRING(argv[1])) - str = JSVAL_TO_STRING(argv[1]); - else if (!(str = JS_ValueToString(cx, argv[1]))) - return JS_FALSE; - optionData->value = - (PA_Block)lm_StrToLocalEncoding(context, str); - if (!optionData->value) - return JS_FALSE; - } - if (argc >= 1) { - if (JSVAL_IS_STRING(argv[0])) - str = JSVAL_TO_STRING(argv[0]); - else if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_FALSE; - optionData->text_value = - (PA_Block)lm_StrToLocalEncoding(context, str); - if (!optionData->text_value) - return JS_FALSE; - } - - option->decoder = HOLD_BACK_COUNT(decoder); - option->object = obj; - option->index = 0; /* so option->data[option->index] works */ - option->indexInForm = -1; - return JS_TRUE; -} - -static char *typenames[] = { - "none", - S_FORM_TYPE_TEXT, - S_FORM_TYPE_RADIO, - S_FORM_TYPE_CHECKBOX, - S_FORM_TYPE_HIDDEN, - S_FORM_TYPE_SUBMIT, - S_FORM_TYPE_RESET, - S_FORM_TYPE_PASSWORD, - S_FORM_TYPE_BUTTON, - S_FORM_TYPE_JOT, - "select-one", - "select-multiple", - "textarea", - "isindex", - S_FORM_TYPE_IMAGE, - S_FORM_TYPE_FILE, - "keygen", - S_FORM_TYPE_READONLY -}; - -extern JSClass lm_input_class; - -/* - * Note early returns below, to avoid common string-valued property code at - * the bottom of the function. - */ -PR_STATIC_CALLBACK(JSBool) -input_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSInput *input; - MWContext *context; - enum input_slot input_slot; - LO_FormElementStruct *form_element; - JSObject *option_obj; - JSString *str; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - input = JS_GetInstancePrivate(cx, obj, &lm_input_class, NULL); - if (!input) - return JS_TRUE; - input_slot = slot; - if (input_slot == INPUT_FORM) { - /* Each input in a form has a back-pointer to its form. */ - *vp = OBJECT_TO_JSVAL(JS_GetParent(cx, obj)); - return JS_TRUE; - } - - LO_LockLayout(); - - form_element = lm_GetFormElementByIndex(cx, JS_GetParent(cx, obj), - input->index); - if (!form_element) - goto good; - - if (input_slot == INPUT_TYPE) { - uint type_index; - - type_index = form_element->element_data->type; - if (type_index >= sizeof typenames / sizeof typenames[0]) { - JS_ReportError(cx, "unknown form element type %u", type_index); - goto bad; - } - str = JS_NewStringCopyZ(cx, typenames[type_index]); - if (!str) - goto bad; - *vp = STRING_TO_JSVAL(str); - goto good; - } - - context = input->input_decoder->window_context; - switch (form_element->element_data->type) { - case FORM_TYPE_TEXT: - case FORM_TYPE_TEXTAREA: /* XXX we ASSUME common struct prefixes */ - case FORM_TYPE_FILE: /* XXX as above, also get-only without signing */ - case FORM_TYPE_PASSWORD: -#ifdef ENDER - case FORM_TYPE_HTMLAREA : -#endif /*ENDER*/ - { - lo_FormElementTextData *text; - - text = &form_element->element_data->ele_text; - switch (input_slot) { - case INPUT_NAME: - str = lm_LocalEncodingToStr(context, - (char *)text->name); - break; - case INPUT_VALUE: - str = lm_LocalEncodingToStr(context, - (char *)text->current_text); - break; - case INPUT_DEFAULT_VALUE: - str = lm_LocalEncodingToStr(context, - (char *)text->default_text); - break; -#if DISABLED_READONLY_SUPPORT - case INPUT_DISABLED: - *vp = BOOLEAN_TO_JSVAL(text->disabled); - goto good; - case INPUT_READONLY: - *vp = BOOLEAN_TO_JSVAL(text->read_only); - goto good; -#endif - default: - /* Don't mess with a user-defined property. */ - goto good; - } - } - break; - - case FORM_TYPE_SELECT_ONE: - case FORM_TYPE_SELECT_MULT: - { - lo_FormElementSelectData *selectData; - lo_FormElementOptionData *optionData; - int32 i; - JSSelectOption *option; - - selectData = &form_element->element_data->ele_select; - switch (input_slot) { - case INPUT_NAME: - str = lm_LocalEncodingToStr(context, - (char *)selectData->name); - break; - - case INPUT_LENGTH: - *vp = INT_TO_JSVAL(selectData->option_cnt); - goto good; - - case INPUT_OPTIONS: - *vp = OBJECT_TO_JSVAL(input->input_object); - goto good; - - case INPUT_SELECTED_INDEX: - *vp = INT_TO_JSVAL(-1); - optionData = (lo_FormElementOptionData *) selectData->options; - for (i = 0; i < selectData->option_cnt; i++) { - if (optionData[i].selected) { - *vp = INT_TO_JSVAL(i); - break; - } - } - goto good; - -#if DISABLED_READONLY_SUPPORT - case INPUT_DISABLED: - *vp = BOOLEAN_TO_JSVAL(selectData->disabled); - goto good; - case INPUT_READONLY: - *vp = BOOLEAN_TO_JSVAL(FALSE); - goto good; -#endif - default: - if ((uint32)slot >= (uint32)selectData->option_cnt) { - *vp = JSVAL_NULL; - goto good; - } - - if (JSVAL_IS_OBJECT(*vp) && JSVAL_TO_OBJECT(*vp)) { - XP_ASSERT(JS_InstanceOf(cx, JSVAL_TO_OBJECT(*vp), - &lm_option_class, NULL)); - goto good; - } - - option = JS_malloc(cx, sizeof *option); - if (!option) - goto bad; - - option_obj = - JS_NewObject(cx, &lm_option_class, - input->input_decoder->option_prototype, obj); - - if (!option_obj || !JS_SetPrivate(cx, option_obj, option)) { - JS_free(cx, option); - goto bad; - } - option->decoder = HOLD_BACK_COUNT(input->input_decoder); - option->object = option_obj; - option->index = (uint32)slot; - option->indexInForm = form_element->element_index; - option->data = NULL; - *vp = OBJECT_TO_JSVAL(option_obj); - goto good; - } - } - break; - - case FORM_TYPE_RADIO: - case FORM_TYPE_CHECKBOX: - { - lo_FormElementToggleData *toggle; - - toggle = &form_element->element_data->ele_toggle; - switch (input_slot) { - case INPUT_NAME: - str = lm_LocalEncodingToStr(context, - (char *)toggle->name); - break; - case INPUT_VALUE: - str = lm_LocalEncodingToStr(context, - (char *)toggle->value); - break; - case INPUT_STATUS: - *vp = BOOLEAN_TO_JSVAL(toggle->toggled); - goto good; - case INPUT_DEFAULT_STATUS: - *vp = BOOLEAN_TO_JSVAL(toggle->default_toggle); - goto good; - -#if DISABLED_READONLY_SUPPORT - case INPUT_DISABLED: - *vp = BOOLEAN_TO_JSVAL(toggle->disabled); - goto good; - case INPUT_READONLY: - *vp = BOOLEAN_TO_JSVAL(FALSE); - goto good; -#endif - default: - /* Don't mess with a user-defined property. */ - goto good; - } - } - break; - - default: - { - lo_FormElementMinimalData *minimal; - - minimal = &form_element->element_data->ele_minimal; - switch (input_slot) { - case INPUT_NAME: - str = lm_LocalEncodingToStr(context, - (char *)minimal->name); - break; - case INPUT_VALUE: - str = lm_LocalEncodingToStr(context, - (char *)minimal->value); - break; -#if DISABLED_READONLY_SUPPORT - case INPUT_DISABLED: - *vp = BOOLEAN_TO_JSVAL(minimal->disabled); - goto good; - case INPUT_READONLY: - *vp = BOOLEAN_TO_JSVAL(FALSE); /* minimal elements don't have the readonly attribute. */ - goto good; -#endif - default: - /* Don't mess with a user-defined property. */ - goto good; - } - } - break; - } - - if (!str) - goto bad; - *vp = STRING_TO_JSVAL(str); - -good: - LO_UnlockLayout(); - return JS_TRUE; - -bad: - LO_UnlockLayout(); - return JS_FALSE; - -} - -char * -lm_FixNewlines(JSContext *cx, const char *value, JSBool formElement) -{ - size_t size; - const char *cp; - char *tp, *new_value; - -#if defined XP_PC - size = 1; - for (cp = value; *cp != '\0'; cp++) { - switch (*cp) { - case '\r': - if (cp[1] != '\n') - size++; - break; - case '\n': - if (cp > value && cp[-1] != '\r') - size++; - break; - } - } - size += cp - value; -#else - size = XP_STRLEN(value) + 1; -#endif - new_value = JS_malloc(cx, size); - if (!new_value) - return NULL; - for (cp = value, tp = new_value; *cp != '\0'; cp++) { -#if defined XP_MAC - if (*cp == '\n') { - if (cp > value && cp[-1] != '\r') - *tp++ = '\r'; - } else { - *tp++ = *cp; - } -#elif defined XP_PC - switch (*cp) { - case '\r': - *tp++ = '\r'; - if (cp[1] != '\n' && formElement) - *tp++ = '\n'; - break; - case '\n': - if (cp > value && cp[-1] != '\r' && formElement) - *tp++ = '\r'; - *tp++ = '\n'; - break; - default: - *tp++ = *cp; - break; - } -#else /* XP_UNIX */ - if (*cp == '\r') { - if (cp[1] != '\n') - *tp++ = '\n'; - } else { - *tp++ = *cp; - } -#endif - } - *tp = '\0'; - return new_value; -} - -PR_STATIC_CALLBACK(JSBool) -input_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSInput *input; - enum input_slot input_slot; - const char *prop_name; - char *value = NULL; - LO_FormElementStruct *form_element; - MochaDecoder *decoder; - MWContext *context; - int32 intval; - jsint slot; - - input = JS_GetInstancePrivate(cx, obj, &lm_input_class, NULL); - if (!input) - return JS_TRUE; - - /* If the property is seting a key handler we find out now so - * that we can tell the front end to send the event. */ - if (JSVAL_IS_STRING(id)) { - prop_name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - /* XXX use lm_onKeyDown_str etc. initialized by PARAM_ONKEYDOWN */ - if (XP_STRCASECMP(prop_name, "onkeydown") == 0 || - XP_STRCASECMP(prop_name, "onkeyup") == 0 || - XP_STRCASECMP(prop_name, "onkeypress") == 0) { - form_element = lm_GetFormElementByIndex(cx, JS_GetParent(cx, obj), - input->index); - form_element->event_handler_present = TRUE; - } - return JS_TRUE; - } - - XP_ASSERT(JSVAL_IS_INT(id)); - slot = JSVAL_TO_INT(id); - - decoder = input->input_decoder; - context = decoder->window_context; - input_slot = slot; - switch (input_slot) { - case INPUT_TYPE: - case INPUT_FORM: - case INPUT_OPTIONS: - /* These are immutable. */ - break; - case INPUT_NAME: - case INPUT_VALUE: - case INPUT_DEFAULT_VALUE: - /* These are string-valued. */ - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) { - return JS_FALSE; - } - value = lm_StrToLocalEncoding(context, JSVAL_TO_STRING(*vp)); - break; - case INPUT_STATUS: - case INPUT_DEFAULT_STATUS: -#if DISABLED_READONLY_SUPPORT - case INPUT_READONLY: - case INPUT_DISABLED: -#endif - /* These must be Booleans. */ - if (!JSVAL_IS_BOOLEAN(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_BOOLEAN, vp)) { - return JS_FALSE; - } - break; - case INPUT_LENGTH: - case INPUT_SELECTED_INDEX: - /* These should be integers. */ - if (JSVAL_IS_INT(*vp)) - intval = JSVAL_TO_INT(*vp); - else if (!JS_ValueToInt32(cx, *vp, &intval)) { - return JS_FALSE; - } - break; - } - - LO_LockLayout(); - - form_element = lm_GetFormElementByIndex(cx, JS_GetParent(cx, obj), - input->index); - if (!form_element) - goto good; - - switch (form_element->element_data->type) { - case FORM_TYPE_FILE: - /* if we try to set a file upload widget we better be a signed script */ - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_FILE_READ)) - break; - /* else fall through... */ - - case FORM_TYPE_TEXT: - case FORM_TYPE_TEXTAREA: /* XXX we ASSUME common struct prefixes */ - case FORM_TYPE_PASSWORD: -#ifdef ENDER - case FORM_TYPE_HTMLAREA : -#endif /*ENDER*/ - { - lo_FormElementTextData *text; - JSBool ok; - char * fixed_string; - - text = &form_element->element_data->ele_text; - switch (input_slot) { - case INPUT_NAME: - if (!lm_SaveParamString(cx, &text->name, value)) - goto bad; - break; - case INPUT_VALUE: - case INPUT_DEFAULT_VALUE: - fixed_string = lm_FixNewlines(cx, value, JS_TRUE); - if (!fixed_string) - goto bad; - ok = (input_slot == INPUT_VALUE) - ? lm_SaveParamString(cx, &text->current_text, fixed_string) - : lm_SaveParamString(cx, &text->default_text, fixed_string); - - JS_free(cx, (char *)fixed_string); - if (!ok) - goto bad; - if (input_slot == INPUT_VALUE && context) { - ET_PostManipulateForm(context, (LO_Element *)form_element, - EVENT_CHANGE); - } - break; -#if DISABLED_READONLY_SUPPORT - case INPUT_DISABLED: - text->disabled = JSVAL_TO_BOOLEAN(*vp); - if (context) { - ET_PostManipulateForm(context, (LO_Element *)form_element, - EVENT_CHANGE); - } - break; - case INPUT_READONLY: - if (form_element->element_data->type == FORM_TYPE_FILE) - break; - text->read_only = JSVAL_TO_BOOLEAN(*vp); - if (context) { - ET_PostManipulateForm(context, (LO_Element *)form_element, - EVENT_CHANGE); - } - break; -#endif - default: - /* Don't mess with option or user-defined property. */ - goto good; - } - } - break; - - case FORM_TYPE_SELECT_ONE: - case FORM_TYPE_SELECT_MULT: - { - lo_FormElementSelectData *selectData; - lo_FormElementOptionData *optionData; - JSSelectOption *option; - int32 i, new_option_cnt, old_option_cnt; - - selectData = &form_element->element_data->ele_select; - switch (slot) { - case INPUT_NAME: - if (!lm_SaveParamString(cx, &selectData->name, value)) - goto bad; - break; - - case INPUT_LENGTH: - new_option_cnt = intval; - old_option_cnt = selectData->option_cnt; - optionData = (lo_FormElementOptionData *) selectData->options; - - /* Remove truncated slots, or clear extended element data. */ - if (new_option_cnt < old_option_cnt) { - /* - * Make truncated options stand alone in case someone else - * in case someone else has a reference to one. - */ - for (i = new_option_cnt; i < old_option_cnt; i++) { - jsval oval; - JSObject * option_obj; - - if (!JS_LookupElement(cx, obj, i, &oval)) - goto bad; - if (JSVAL_IS_OBJECT(oval) && - (option_obj = JSVAL_TO_OBJECT(oval))) { - lo_FormElementOptionData *myData; - - myData = - JS_malloc(cx, sizeof(lo_FormElementOptionData)); - if (!myData) - goto bad; - XP_MEMCPY(myData, &optionData[i], - sizeof(lo_FormElementOptionData)); - option = JS_GetPrivate(cx, option_obj); - option->data = myData; - } - JS_DeleteElement(cx, obj, i); - } - } - - /* Get layout to reallocate the options array. */ - selectData->option_cnt = new_option_cnt; - if (!LO_ResizeSelectOptions(selectData)) { - selectData->option_cnt = old_option_cnt; - JS_ReportOutOfMemory(cx); - goto bad; - } - - /* Handle the grow case by clearing the new options. */ - if (new_option_cnt > old_option_cnt) { - XP_BZERO(&optionData[old_option_cnt], - (new_option_cnt - old_option_cnt) - * sizeof *optionData); - } - - /* Tell the FE about it. */ - if (context) { - ET_PostManipulateForm(context, (LO_Element *)form_element, - EVENT_CHANGE); - } - break; - - case INPUT_OPTIONS: - break; - - case INPUT_SELECTED_INDEX: - optionData = (lo_FormElementOptionData *) - selectData->options; - for (i = 0; i < selectData->option_cnt; i++) - optionData[i].selected = (i == intval); - - /* Tell the FE about it. */ - if (context) - ET_PostManipulateForm(context, (LO_Element *)form_element, - EVENT_CHANGE); - break; - -#if DISABLED_READONLY_SUPPORT - case INPUT_DISABLED: - selectData->disabled = JSVAL_TO_BOOLEAN(*vp); - if (context) { - ET_PostManipulateForm(context, (LO_Element *)form_element, - EVENT_CHANGE); - } - break; - case INPUT_READONLY: - /* silenty ignore updates to the READONLY attribute. */ - break; -#endif - default: - if (slot < 0) { - /* Don't mess with a user-defined, named property. */ - goto good; - } - - /* The vp arg must refer to an object of the right class. */ - if (!JSVAL_IS_OBJECT(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_OBJECT, vp)) { - goto bad; - } - - if (JSVAL_IS_NULL(*vp)) { - int32 count, limit; - JSBool ok = JS_TRUE; - - if (slot >= selectData->option_cnt) - goto good; - - /* Clear the option and compress the options array. */ - optionData = (lo_FormElementOptionData *) - selectData->options; - count = selectData->option_cnt - (slot + 1); - if (count > 0) { - /* - * Move down the options that were after the option - * we are deleting. Note, the JS_GetElement() - * and SetElement() calls will make sure the - * layout-based data gets copied too. - */ - for (limit = slot + count; slot < limit; slot++) { - jsval v; - ok = JS_GetElement(cx, obj, slot + 1, &v); - if (!ok) - break; - JS_SetElement(cx, obj, slot, &v); - - /* Fix each option's index-in-select property. */ - XP_ASSERT(JSVAL_IS_OBJECT(v)); - option = JS_GetPrivate(cx, JSVAL_TO_OBJECT(v)); - option->index = slot; - } - if (ok) - JS_DeleteElement(cx, obj, slot); - } - - /* Shrink the select element data's options array. */ - if (ok) { - selectData->option_cnt--; - ok = (JSBool)LO_ResizeSelectOptions(selectData); - if (!ok) { - JS_ReportOutOfMemory(cx); - } else if (context) { - ET_PostManipulateForm(context, - (LO_Element *)form_element, - EVENT_CHANGE); - } - } - LO_UnlockLayout(); - return ok; - } - - if (!JS_InstanceOf(cx, JSVAL_TO_OBJECT(*vp), &lm_option_class, - NULL)) { - JS_ReportError(cx, "cannot set %s.%s to incompatible %s", - JS_GetClass(cx, obj)->name, lm_options_str, - JS_GetClass(cx, JSVAL_TO_OBJECT(*vp))->name); - goto bad; - } - option = JS_GetPrivate(cx, JSVAL_TO_OBJECT(*vp)); - if (!option) - goto good; - - if (!option->data && - JS_GetParent(cx, option->object) != obj) { - JS_ReportError(cx, "can't share options between select elements"); - goto bad; - } - - /* Grow the option array if necessary. */ - old_option_cnt = selectData->option_cnt; - if (slot >= old_option_cnt) { - selectData->option_cnt = slot + 1; - if (!LO_ResizeSelectOptions(selectData)) { - selectData->option_cnt = old_option_cnt; - JS_ReportOutOfMemory(cx); - goto bad; - } - } - - /* Clear any option structs in the gap, then set slot. */ - optionData = (lo_FormElementOptionData *) selectData->options; - if (slot > old_option_cnt) { - XP_BZERO(&optionData[old_option_cnt], - (slot - old_option_cnt) * sizeof *optionData); - } - if (option->data) { - XP_MEMCPY(&optionData[slot], option->data, - sizeof(lo_FormElementOptionData)); - } else if ((uint32)slot != option->index) { - XP_MEMCPY(&optionData[slot], &optionData[option->index], - sizeof(lo_FormElementOptionData)); - } - - /* Update the option to point at its form and form element. */ - JS_SetParent(cx, JSVAL_TO_OBJECT(*vp), obj); - option->index = (uint32)slot; - option->indexInForm = form_element->element_index; - if (option->data) { - JS_free(cx, option->data); - option->data = NULL; - } - - /* Tell the FE about it. */ - if (context) - ET_PostManipulateForm(context, (LO_Element *)form_element, - EVENT_CHANGE); - break; - } - } - break; - - case FORM_TYPE_RADIO: - case FORM_TYPE_CHECKBOX: - { - lo_FormElementToggleData *toggle; - - toggle = &form_element->element_data->ele_toggle; - switch (input_slot) { - case INPUT_NAME: - if (!lm_SaveParamString(cx, &toggle->name, value)) - goto bad; - break; - case INPUT_VALUE: - if (!lm_SaveParamString(cx, &toggle->value, value)) - goto bad; - break; - case INPUT_STATUS: - if (JSVAL_IS_BOOLEAN(*vp)) - toggle->toggled = JSVAL_TO_BOOLEAN(*vp); - - /* Tell the FE about it (the FE keeps radio-sets consistent). */ - if (context) - ET_PostManipulateForm(context, (LO_Element *)form_element, - EVENT_CHANGE); - break; - case INPUT_DEFAULT_STATUS: - if (JSVAL_IS_BOOLEAN(*vp)) - toggle->default_toggle = JSVAL_TO_BOOLEAN(*vp); - break; -#if DISABLED_READONLY_SUPPORT - case INPUT_DISABLED: - toggle->disabled = JSVAL_TO_BOOLEAN(*vp); - if (context) { - ET_PostManipulateForm(context, (LO_Element *)form_element, - EVENT_CHANGE); - } - break; - case INPUT_READONLY: - /* silenty ignore updates to the READONLY attribute. */ - break; -#endif - default: - /* Don't mess with a user-defined property. */ - goto good; - } - } - break; - - case FORM_TYPE_READONLY: - /* Don't allow modification of readonly fields. */ - break; - - default: - { - lo_FormElementMinimalData *minimal; - - minimal = &form_element->element_data->ele_minimal; - switch (input_slot) { - case INPUT_NAME: - if (!lm_SaveParamString(cx, &minimal->name, value)) - goto bad; - break; - case INPUT_VALUE: - if (!lm_SaveParamString(cx, &minimal->value, value)) - goto bad; - if (context) { - ET_PostManipulateForm(context, (LO_Element *)form_element, - EVENT_CHANGE); - } - break; -#if DISABLED_READONLY_SUPPORT - case INPUT_DISABLED: - minimal->disabled = JSVAL_TO_BOOLEAN(*vp); - if (context) { - ET_PostManipulateForm(context, (LO_Element *)form_element, - EVENT_CHANGE); - } - break; - case INPUT_READONLY: - /* silenty ignore updates to the READONLY attribute. */ - break; -#endif - default: - /* Don't mess with a user-defined property. */ - goto good; - } - } - break; - } - -good: - XP_FREEIF(value); - LO_UnlockLayout(); - return JS_TRUE; - -bad: - XP_FREEIF(value); - LO_UnlockLayout(); - return JS_FALSE; - -} - -PR_STATIC_CALLBACK(void) -input_finalize(JSContext *cx, JSObject *obj) -{ - JSInput *input; - LO_FormElementStruct *form_element; - - input = JS_GetPrivate(cx, obj); - if (!input) - return; - - LO_LockLayout(); - form_element = lm_GetFormElementByIndex(cx, JS_GetParent(cx, obj), - input->index); - if (form_element && form_element->mocha_object == obj) - form_element->mocha_object = NULL; - LO_UnlockLayout(); - DROP_BACK_COUNT(input->input_decoder); - JS_free(cx, input); -} - -JSClass lm_input_class = { - "Input", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, input_getProperty, input_setProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, input_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Input(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -input_toString(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSInput *input; - LO_FormElementStruct *form_element; - uint type; - char *typename, *string, *value; - size_t length; - long truelong; - jsval result; - JSString *str; - - if (!JS_InstanceOf(cx, obj, &lm_input_class, argv)) - return JS_FALSE; - input = JS_GetPrivate(cx, obj); - if (!input) - return JS_TRUE; - - LO_LockLayout(); - form_element = lm_GetFormElementByIndex(cx, JS_GetParent(cx, obj), - input->index); - if (!form_element) { - *rval = JS_GetEmptyStringValue(cx); - goto bad; - } - - type = form_element->element_data->type; - if (type >= sizeof typenames / sizeof typenames[0]) { - JS_ReportError(cx, "unknown form element type %u", type); - goto bad; - } - typename = typenames[type]; - string = PR_sprintf_append(0, "<"); - switch (type) { - case FORM_TYPE_TEXT: - { - lo_FormElementTextData *text; - - text = &form_element->element_data->ele_text; - string = PR_sprintf_append(string, "%s %s=\"%s\"", - PT_INPUT, PARAM_TYPE, typename); - if (text->name) { - string = PR_sprintf_append(string, " %s=\"%s\"", - PARAM_NAME, (char *)text->name); - } - if (text->default_text) { - string = PR_sprintf_append(string, " %s=\"%s\"", - PARAM_VALUE, - (char *)text->default_text); - } - if (text->size) { - truelong = text->size; - string = PR_sprintf_append(string, " %s=%ld\"", - PARAM_SIZE, truelong); - } - if (text->max_size) { - truelong = text->max_size; - string = PR_sprintf_append(string, " %s=%ld\"", - PARAM_MAXLENGTH, truelong); - } - } - break; - - case FORM_TYPE_TEXTAREA: /* XXX we ASSUME common struct prefixes */ -#ifdef ENDER - case FORM_TYPE_HTMLAREA : -#endif /*ENDER*/ - { - lo_FormElementTextareaData *textarea; - - textarea = &form_element->element_data->ele_textarea; - string = PR_sprintf_append(string, PT_TEXTAREA); - if (textarea->name) { - string = PR_sprintf_append(string, " %s=\"%s\"", - PARAM_NAME, (char *)textarea->name); - } - if (textarea->default_text) { - string = PR_sprintf_append(string, " %s=\"%s\"", - PARAM_VALUE, - (char *)textarea->default_text); - } - if (textarea->rows) { - truelong = textarea->rows; - string = PR_sprintf_append(string, " %s=%ld\"", - PARAM_SIZE, truelong); - } - if (textarea->cols) { - truelong = textarea->cols; - string = PR_sprintf_append(string, " %s=%ld\"", - PARAM_SIZE, truelong); - } - if (textarea->auto_wrap) { - switch (textarea->auto_wrap) { - case TEXTAREA_WRAP_OFF: - value = "off"; - break; - case TEXTAREA_WRAP_HARD: - value = "hard"; - break; - case TEXTAREA_WRAP_SOFT: - value = "soft"; - break; - default: - value = "unknown"; - break; - } - string = PR_sprintf_append(string, " %s=\"%s\"", - PARAM_WRAP, value); - } - } - break; - - case FORM_TYPE_SELECT_ONE: - case FORM_TYPE_SELECT_MULT: - { - lo_FormElementSelectData *selectData; - lo_FormElementOptionData *optionData; - int32 i; - - selectData = &form_element->element_data->ele_select; - string = PR_sprintf_append(string, PT_SELECT); - if (selectData->name) { - string = PR_sprintf_append(string, " %s=\"%s\"", - PARAM_NAME, - (char *)selectData->name); - } - if (selectData->size) { - truelong = selectData->size; - string = PR_sprintf_append(string, " %s=%ld\"", - PARAM_SIZE, truelong); - } - if (selectData->multiple) { - string = PR_sprintf_append(string, " %s", PARAM_MULTIPLE); - } - - string = PR_sprintf_append(string, ">\n"); - PA_LOCK(optionData, lo_FormElementOptionData *, - selectData->options); - for (i = 0; i < selectData->option_cnt; i++) { - string = PR_sprintf_append(string, "<%s", PT_OPTION); - if (optionData[i].value) { - string = PR_sprintf_append(string, " %s=\"%s\"", - PARAM_VALUE, - optionData[i].value); - } - if (optionData[i].def_selected) - string = PR_sprintf_append(string, " %s", PARAM_SELECTED); - string = PR_sprintf_append(string, ">"); - if (optionData[i].text_value) { - string = PR_sprintf_append(string, "%s", - optionData[i].text_value); - } - string = PR_sprintf_append(string, "\n"); - } - PA_UNLOCK(selectData->options); - - string = PR_sprintf_append(string, "</%s", PT_SELECT); - } - break; - - case FORM_TYPE_RADIO: - case FORM_TYPE_CHECKBOX: - { - lo_FormElementToggleData *toggle; - - toggle = &form_element->element_data->ele_toggle; - string = PR_sprintf_append(string, "%s %s=\"%s\"", - PT_INPUT, PARAM_TYPE, typename); - if (toggle->name) { - string = PR_sprintf_append(string, " %s=\"%s\"", - PARAM_NAME, (char *)toggle->name); - } - if (toggle->value) { - string = PR_sprintf_append(string, " %s=\"%s\"", - PARAM_VALUE, (char *)toggle->value); - } - if (toggle->default_toggle) - string = PR_sprintf_append(string, " %s", PARAM_CHECKED); - } - break; - - default: - { - lo_FormElementMinimalData *minimal; - - minimal = &form_element->element_data->ele_minimal; - string = PR_sprintf_append(string, "%s %s=\"%s\"", - PT_INPUT, PARAM_TYPE, typename); - if (minimal->name) { - string = PR_sprintf_append(string, " %s=\"%s\"", - PARAM_NAME, (char *)minimal->name); - } - if (minimal->value) { - string = PR_sprintf_append(string, " %s=\"%s\"", - PARAM_VALUE, (char *)minimal->value); - } - } - break; - } - -#define FROB(param) { \ - if (!JS_LookupProperty(cx, input->input_object, param, &result)) { \ - PR_FREEIF(string); \ - return JS_FALSE; \ - } \ - if (JS_TypeOfValue(cx, result) == JSTYPE_FUNCTION) { \ - JSFunction *fun = JS_ValueToFunction(cx, result); \ - if (!fun) { \ - PR_FREEIF(string); \ - return JS_FALSE; \ - } \ - str = JS_DecompileFunctionBody(cx, fun, 0); \ - value = JS_GetStringBytes(str); \ - length = strlen(value); \ - if (length && value[length-1] == '\n') length--; \ - string = PR_sprintf_append(string," %s='%.*s'", param, length, value);\ - } \ -} - - FROB(lm_onFocus_str); - FROB(lm_onBlur_str); - FROB(lm_onSelect_str); - FROB(lm_onChange_str); - FROB(lm_onClick_str); - FROB(lm_onScroll_str); -#undef FROB - - LO_UnlockLayout(); - - string = PR_sprintf_append(string, ">"); - if (!string) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - str = lm_LocalEncodingToStr(input->input_decoder->window_context, - string); - XP_FREE(string); - if (!str) - return JS_FALSE; - *rval = STRING_TO_JSVAL(str); - return JS_TRUE; - -bad: - LO_UnlockLayout(); - return JS_FALSE; -} - -static JSBool -input_method(JSContext *cx, JSObject *obj, jsval *argv, - uint32 event) -{ - JSInput *input; - MWContext *context; - LO_FormElementStruct *form_element; - - if (!JS_InstanceOf(cx, obj, &lm_input_class, argv)) - return JS_FALSE; - input = JS_GetPrivate(cx, obj); - if (!input) - return JS_TRUE; - context = input->input_decoder->window_context; - if (!context) - return JS_TRUE; - LO_LockLayout(); - form_element = lm_GetFormElementByIndex(cx, JS_GetParent(cx, obj), - input->index); - if (!form_element) { - LO_UnlockLayout(); - return JS_TRUE; - } - input->input_event_mask |= event; - ET_PostManipulateForm(context, (LO_Element *)form_element, event); - input->input_event_mask &= ~event; - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -input_focus(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return input_method(cx, obj, argv, EVENT_FOCUS); -} - -PR_STATIC_CALLBACK(JSBool) -input_blur(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return input_method(cx, obj, argv, EVENT_BLUR); -} - -PR_STATIC_CALLBACK(JSBool) -input_select(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return input_method(cx, obj, argv, EVENT_SELECT); -} - -PR_STATIC_CALLBACK(JSBool) -input_click(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return input_method(cx, obj, argv, EVENT_CLICK); -} - -#ifdef NOTYET -PR_STATIC_CALLBACK(JSBool) -input_enable(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return input_method(cx, obj, argv, EVENT_ENABLE); -} - -PR_STATIC_CALLBACK(JSBool) -input_disable(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return input_method(cx, obj, argv, EVENT_DISABLE); -} -#endif /* NOTYET */ - -static JSFunctionSpec input_methods[] = { - {lm_toString_str, input_toString, 0}, - {"focus", input_focus, 0}, - {"blur", input_blur, 0}, - {"select", input_select, 0}, - {"click", input_click, 0}, -#ifdef NOTYET - {"enable", input_enable, 0}, - {"disable", input_disable, 0}, -#endif /* NOTYET */ - {0} -}; - -/* - * XXX move me somewhere else... - */ -enum input_array_slot { - INPUT_ARRAY_LENGTH = -1 -}; - -static JSPropertySpec input_array_props[] = { - {lm_length_str, INPUT_ARRAY_LENGTH, - JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {0} -}; - -typedef struct JSInputArray { - JSInputBase base; - uint length; -} JSInputArray; - -extern JSClass lm_input_array_class; - -PR_STATIC_CALLBACK(JSBool) -input_array_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSInputArray *array; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - array = JS_GetInstancePrivate(cx, obj, &lm_input_array_class, NULL); - if (!array) - return JS_TRUE; - switch (slot) { - case INPUT_ARRAY_LENGTH: - *vp = INT_TO_JSVAL(array->length); - break; - } - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -input_array_finalize(JSContext *cx, JSObject *obj) -{ - JSInputArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->base_decoder); - JS_free(cx, array); -} - -JSClass lm_input_array_class = { - "InputArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - input_array_getProperty, input_array_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, input_array_finalize -}; - -#ifdef NOTYET -PR_STATIC_CALLBACK(JSBool) -InputArray(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} -#endif - - -static void -lm_compile_event_handlers(MochaDecoder * decoder, - LO_FormElementStruct * form_element, - JSObject *obj, - PA_Tag *tag) -{ - MWContext * context = decoder->window_context; - PA_Block method, id, keydown, keypress, keyup; - JSInputBase *base; - JSContext *cx; - - cx = decoder->js_context; - base = JS_GetPrivate(cx, obj); - - keydown = lo_FetchParamValue(context, tag, PARAM_ONKEYDOWN); - keypress = lo_FetchParamValue(context, tag, PARAM_ONKEYPRESS); - keyup = lo_FetchParamValue(context, tag, PARAM_ONKEYUP); - - /* Text fields need this info. */ - if (keydown || keypress || keyup) - form_element->event_handler_present = TRUE; - - LO_UnlockLayout(); - - id = lo_FetchParamValue(context, tag, PARAM_ID); - method = lo_FetchParamValue(context, tag, PARAM_ONCLICK); - if (method) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONCLICK, method); - base->handlers |= HANDLER_ONCLICK; - PA_FREE(method); - } - method = lo_FetchParamValue(context, tag, PARAM_ONFOCUS); - if (method) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONFOCUS, method); - base->handlers |= HANDLER_ONFOCUS; - PA_FREE(method); - } - method = lo_FetchParamValue(context, tag, PARAM_ONBLUR); - if (method) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONBLUR, method); - base->handlers |= HANDLER_ONBLUR; - PA_FREE(method); - } - method = lo_FetchParamValue(context, tag, PARAM_ONCHANGE); - if (method) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONCHANGE, method); - base->handlers |= HANDLER_ONCHANGE; - PA_FREE(method); - } - method = lo_FetchParamValue(context, tag, PARAM_ONSELECT); - if (method) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONSELECT, method); - base->handlers |= HANDLER_ONSELECT; - PA_FREE(method); - } - method = lo_FetchParamValue(context, tag, PARAM_ONSCROLL); - if (method) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONSCROLL, method); - base->handlers |= HANDLER_ONSCROLL; - PA_FREE(method); - } - method = lo_FetchParamValue(context, tag, PARAM_ONMOUSEDOWN); - if (method) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONMOUSEDOWN, method); - base->handlers |= HANDLER_ONMOUSEDOWN; - PA_FREE(method); - } - method = lo_FetchParamValue(context, tag, PARAM_ONMOUSEUP); - if (method) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONMOUSEUP, method); - base->handlers |= HANDLER_ONMOUSEUP; - PA_FREE(method); - } - if (keydown) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONKEYDOWN, keydown); - base->handlers |= HANDLER_ONKEYDOWN; - PA_FREE(keydown); - } - if (keyup) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONKEYUP, keyup); - base->handlers |= HANDLER_ONKEYUP; - PA_FREE(keyup); - } - if (keypress) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONKEYPRESS, keypress); - base->handlers |= HANDLER_ONKEYPRESS; - PA_FREE(keypress); - } - method = lo_FetchParamValue(context, tag, PARAM_ONDBLCLICK); - if (method) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONDBLCLICK, method); - base->handlers |= HANDLER_ONDBLCLICK; - PA_FREE(method); - } - if (id) - PA_FREE(id); - LO_LockLayout(); -} - -#define ANTI_RECURSIVE_KLUDGE ((JSObject *)1) - -/* - * Reflect a bunch of different types of form elements into JS. - */ -JSObject * -LM_ReflectFormElement(MWContext *context, int32 layer_id, int32 form_id, - int32 element_id, PA_Tag * tag) -{ - JSObject *obj, *form_obj, *prototype, *old_obj, *array_obj; - LO_FormElementData *data; - LO_FormElementStruct *form_element; - MochaDecoder *decoder; - JSContext *cx; - int32 type; - char *name = NULL; - JSBool ok; - size_t size; - JSInput *input; - JSClass *clasp; - JSInputBase *base; - JSInputArray *array; - jsval val; - lo_FormData * form_data; - lo_TopState *top_state; - int32 element_index; - LMWindowGroup *grp; - - /* reflect the form */ - if (!LM_ReflectForm(context, NULL, NULL, layer_id, form_id)) - return NULL; - - /* make the form the active form */ - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - - LM_PutMochaDecoder(decoder); - - /* if this is a radio button we're gonna need to get this later */ - if (tag) - ((PA_Tag *)tag)->lo_data = (void*)element_id; - - form_data = LO_GetFormDataByID(context, layer_id, form_id); - if (!form_data || !form_data->mocha_object) - return NULL; - - form_obj = form_data->mocha_object; - - form_element = LO_GetFormElementByIndex(form_data, element_id); - if (!form_element || !form_element->element_data) - return NULL; - data = form_element->element_data; - - /* see if we've already reflected it (or are reflecting it) */ - obj = form_element->mocha_object; - if (obj) { - if (obj == ANTI_RECURSIVE_KLUDGE) - return NULL; - - /* - * This object might have already gotten reflected but it might - * not have had its tag (and thus event handlers) at the time - * it was reflected - */ - if (tag) - lm_compile_event_handlers(decoder, form_element, obj, tag); - - return obj; - } - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - - cx = decoder->js_context; - - top_state = lo_GetMochaTopState(context); - if (top_state->resize_reload) { - obj = lm_GetFormElementFromMapping(cx, form_obj, element_id); - if (obj) { - form_element->mocha_object = obj; - LM_PutMochaDecoder(decoder); - return obj; - } - } - - prototype = decoder->input_prototype; - - type = data->type; - if ((char *)data->ele_minimal.name) - name = XP_STRDUP((char *)data->ele_minimal.name); - - grp = lm_MWContextToGroup(context); - if(!grp) { - grp = LM_GetDefaultWindowGroup(context); - } - - switch (type) { - case FORM_TYPE_TEXT: - case FORM_TYPE_TEXTAREA: -#ifdef ENDER - case FORM_TYPE_HTMLAREA: -#endif /*ENDER*/ - size = sizeof(JSTextInput); - break; - - case FORM_TYPE_RADIO: - if (!grp->inputRecurring) { - grp->inputRecurring++; - ok = lm_ReflectRadioButtonArray(context, layer_id, - form_element->form_id, - name, tag); - grp->inputRecurring--; - obj = form_element->mocha_object; - if (obj) { - LM_PutMochaDecoder(decoder); - return obj; - } - } - /* FALL THROUGH */ - - default: - size = sizeof(JSInput); - break; - } - - input = JS_malloc(cx, size); - if (!input) - goto fail; - XP_BZERO(input, size); - - obj = JS_NewObject(cx, &lm_input_class, prototype, form_obj); - if (!obj || !JS_SetPrivate(cx, obj, input)) { - JS_free(cx, input); - goto fail; - } - - /* - * get val before we lose the form_element since - * lm_compile_event_handlers() is going to lose the layout lock - */ - if (name) { - form_element->mocha_object = ANTI_RECURSIVE_KLUDGE; - ok = JS_LookupProperty(cx, form_obj, name, &val); - form_element->mocha_object = NULL; - if (!ok) { - LM_PutMochaDecoder(decoder); - return NULL; - } - } - - element_index = form_element->element_index; - - /* see if there are any event handlers we need to compile */ - if (tag) - lm_compile_event_handlers(decoder, form_element, obj, tag); - - /* - * In 3.0 we would reflect hidden elements only if they had event - * handlers, not just a name attribute. - */ - if (type == FORM_TYPE_HIDDEN && JS_GetVersion(cx) < JSVERSION_1_2) { - base = JS_GetPrivate(cx, obj); - if (!base || (!name && !base->handlers)) - goto fail; - } - - array_obj = NULL; - - if (name) { - old_obj = JSVAL_IS_OBJECT(val) ? JSVAL_TO_OBJECT(val) : NULL; - if (old_obj) { - clasp = JS_GetClass(cx, old_obj); - if (clasp != &lm_input_class && clasp != &lm_input_array_class) - old_obj = NULL; - } - - if (old_obj) { - base = JS_GetPrivate(cx, old_obj); - if (!base) - goto fail; - - if (JS_GetVersion(cx) < JSVERSION_1_2 && - base->type == FORM_TYPE_HIDDEN) { - /* - * We have two or more elements of the form with the same name. - * For JavaScript1.1 or earlier some peculiarities apply to a - * set of form elements with the same name. If any elements in - * the set had handlers, then only those elements with handlers - * would be reflected. Otherwise, all form elements in the set - * are reflected. - */ - JSObject *temp_obj; - jsval result; - JSBool currentHasHandler; - JSBool accumulatedHasHandlers; - JSInputBase *currentBase; - - currentBase = JS_GetPrivate(cx, obj); - if (!currentBase) - goto fail; - - currentHasHandler = (JSBool)(currentBase->handlers != 0); - temp_obj = old_obj; - if (clasp == &lm_input_array_class) { - JS_GetElement(cx, old_obj, 0, &result); - temp_obj = JSVAL_TO_OBJECT(result); - } - accumulatedHasHandlers = (JSBool)( - (JS_LookupProperty(cx, temp_obj, lm_onClick_str, &result) && - JS_TypeOfValue(cx, result) == JSTYPE_FUNCTION) || - (JS_LookupProperty(cx, temp_obj, lm_onFocus_str, &result) && - JS_TypeOfValue(cx, result) == JSTYPE_FUNCTION) || - (JS_LookupProperty(cx, temp_obj, lm_onBlur_str, &result) && - JS_TypeOfValue(cx, result) == JSTYPE_FUNCTION) || - (JS_LookupProperty(cx, temp_obj, lm_onChange_str, &result) && - JS_TypeOfValue(cx, result) == JSTYPE_FUNCTION) || - (JS_LookupProperty(cx, temp_obj, lm_onSelect_str, &result) && - JS_TypeOfValue(cx, result) == JSTYPE_FUNCTION) || - (JS_LookupProperty(cx, temp_obj, lm_onScroll_str, &result) && - JS_TypeOfValue(cx, result) == JSTYPE_FUNCTION)); - - if (currentHasHandler && !accumulatedHasHandlers) { - /* - * Replace the accumulated form elements with this one. - * That way, we will create an array for form elements with - * the same name, adding only those elements that have - * handlers, unless no elements have handlers, in which - * case all are reflected. - */ - JS_DeleteProperty(cx, form_obj, name); - old_obj = NULL; - } else if (!currentHasHandler && accumulatedHasHandlers) { - /* Don't add the current form element to the array. */ - goto fail; - } - } - } - - if (old_obj) { - if (clasp == &lm_input_class) { - /* Make an array out of the previous element and this one. */ - array = JS_malloc(cx, sizeof *array); - if (!array) - goto fail; - XP_BZERO(array, sizeof *array); - - /* - * Lock old_obj temporarily until we remove it from form_obj - * and add it as a property of the radio button array. - */ - JS_LockGCThing(cx, old_obj); - JS_DeleteProperty(cx, form_obj, name); - - /* XXXbe use JS_InitClass instead of this! */ - array_obj = JS_DefineObject(cx, form_obj, name, - &lm_input_array_class, - NULL, - JSPROP_ENUMERATE|JSPROP_READONLY); - - if (array_obj && !JS_SetPrivate(cx, array_obj, array)) - array_obj = NULL; - - if (array_obj && - !JS_DefineProperties(cx, array_obj, input_array_props)) { - array_obj = NULL; - } - - if (!array_obj) { - JS_UnlockGCThing(cx, old_obj); - JS_free(cx, array); - goto fail; - } - array->base_decoder = HOLD_BACK_COUNT(decoder); - array->base_type = base->type; - - /* Insert old_obj (referred to by val) into the array. */ - if (!JS_DefineElement(cx, array_obj, (jsint) array->length, - val, NULL, NULL, - JSPROP_ENUMERATE|JSPROP_READONLY)) { - JS_UnlockGCThing(cx, old_obj); - goto fail; - } - array->length++; - JS_UnlockGCThing(cx, old_obj); - - } else { - array_obj = old_obj; - array = (JSInputArray *)base; - } - - /* ugly hack to prevent rebinding in lm_AddFormElement */ - name = NULL; - - if (!JS_DefineElement(cx, array_obj, (jsint) array->length, - OBJECT_TO_JSVAL(obj), NULL, NULL, - JSPROP_ENUMERATE|JSPROP_READONLY)) { - goto fail; - } - array->length++; - } - } - - input->input_decoder = HOLD_BACK_COUNT(decoder); - input->input_type = type; - input->input_object = obj; - input->index = element_index; - - /* - * get the form_element again incase it changed when we release the - * layout lock - */ - form_element = LO_GetFormElementByIndex(form_data, element_id); - if (form_element) - form_element->mocha_object = obj; - - if (!lm_AddFormElement(cx, form_obj, obj, name, input->index)) { - /* XXX undefine name if it's non-null? */ - } - - LM_PutMochaDecoder(decoder); - XP_FREEIF(name); - return obj; - -fail: - LM_PutMochaDecoder(decoder); - XP_FREEIF(name); - return NULL; - -} - -JSBool -lm_InitInputClasses(MochaDecoder *decoder) -{ - JSContext *cx; - JSObject *prototype; - - cx = decoder->js_context; - prototype = JS_InitClass(cx, decoder->window_object, - decoder->event_receiver_prototype, &lm_input_class, - Input, 0, input_props, input_methods, NULL, NULL); - if (!prototype) - return JS_FALSE; - decoder->input_prototype = prototype; - - prototype = JS_InitClass(cx, decoder->window_object, NULL, &lm_option_class, - Option, 0, option_props, NULL, NULL, NULL); - if (!prototype) - return JS_FALSE; - decoder->option_prototype = prototype; - return JS_TRUE; -} - -#define MAX_KEY_NUM 256 - -#define KEY_STATE_DOWN 0x00000001 -#define KEY_STATE_UP 0x00000002 -#define KEY_STATE_PRESS 0x00000004 /* user is mousing over a link */ -#define KEY_STATE_CANCEL 0x00000008 /* user is mousing out of a link */ - -static uint8 key_state[MAX_KEY_NUM]; - -/* We need to look here to see if any KEYPRESS events coming in were cancelled - * at the KEYDOWN phase and should be blocked. We also need to use the KEYDOWN - * and KEYUP messages to update this state. After this we can normally process - * through lm_InputEvent. - */ - -JSBool -lm_KeyInputEvent(MWContext *context, LO_Element *element, JSEvent *pEvent, jsval *rval) -{ - JSBool ok = JS_TRUE; - - if (pEvent->which > 255) - return lm_InputEvent(context, element, pEvent, rval); - - switch (pEvent->type) { - case EVENT_KEYDOWN: - key_state[pEvent->which] = (uint8)KEY_STATE_DOWN; - break; - - case EVENT_KEYPRESS: - if (key_state[pEvent->which] == KEY_STATE_CANCEL) { - *rval = BOOLEAN_TO_JSVAL(JS_FALSE); - LO_UnlockLayout(); - return JS_TRUE; - } - key_state[pEvent->which] = (uint8)KEY_STATE_PRESS; - break; - - case EVENT_KEYUP: - key_state[pEvent->which] = (uint8)KEY_STATE_UP; - break; - default: - break; - } - ok = lm_InputEvent(context, element, pEvent, rval); - - if (pEvent->type == EVENT_KEYDOWN && *rval == JSVAL_FALSE) - key_state[pEvent->which] = (uint8)KEY_STATE_CANCEL; - return ok; -} - -#define MAX_MOUSE_NUM 4 - -#define MOUSE_STATE_DOWN 0x00000001 -#define MOUSE_STATE_UP 0x00000002 -#define MOUSE_STATE_CANCEL 0x00000004 -#define MOUSE_STATE_DBLCLICK 0x00000008 - -static uint8 mouse_state[MAX_MOUSE_NUM]; - -/* If a mousedown is cancelled we do not allow mouseups to do anything. This is - * because all Navigator mouse responses are based on a down followed by an up. - * This has the net effect of returning false from all mouseups if the previous - * mousedown was cancelled. - */ - -JSBool -lm_MouseInputEvent(MWContext *context, LO_Element *element, JSEvent *pEvent, jsval *rval) -{ - JSBool ok = JS_TRUE; - JSEvent *dcEvent; - - switch (pEvent->type) { - case EVENT_MOUSEDOWN: - mouse_state[pEvent->which] = (uint8)MOUSE_STATE_DOWN; - break; - case EVENT_DBLCLICK: - mouse_state[pEvent->which] = (uint8)MOUSE_STATE_DBLCLICK; - pEvent->type = EVENT_MOUSEDOWN; - break; - default: - break; - } - - ok = lm_InputEvent(context, element, pEvent, rval); - - switch (pEvent->type) { - case EVENT_MOUSEDOWN: - if (*rval == JSVAL_FALSE) - mouse_state[pEvent->which] = (uint8)MOUSE_STATE_CANCEL; - break; - case EVENT_MOUSEUP: - if (mouse_state[pEvent->which] == MOUSE_STATE_CANCEL) { - *rval = BOOLEAN_TO_JSVAL(JS_FALSE); - } - else if (*rval != JSVAL_FALSE && - mouse_state[pEvent->which] == MOUSE_STATE_DBLCLICK) { - dcEvent = XP_NEW_ZAP(JSEvent); - dcEvent->type = EVENT_DBLCLICK; - dcEvent->x = pEvent->x; - dcEvent->y = pEvent->y; - dcEvent->docx = pEvent->docx; - dcEvent->docy = pEvent->docy; - dcEvent->screenx = pEvent->screenx; - dcEvent->screeny = pEvent->screeny; - dcEvent->which = pEvent->which; - dcEvent->modifiers = pEvent->modifiers; - dcEvent->layer_id = pEvent->layer_id; - - LO_LockLayout(); - ok = lm_InputEvent(context, element, dcEvent, rval); - - if (!dcEvent->saved) - XP_FREE(dcEvent); - } - mouse_state[pEvent->which] = (uint8)MOUSE_STATE_UP; - break; - default: - break; - } - return ok; -} - -/* - * OK, we assume our caller has locked layout so that we can hold - * on to the element pointer. As soon as we are done with the - * element pointer it is up to us to make sure we unlock layout. - * Unlock layout before we call lm_SendEvent() so that we don't go - * re-entrant into the mozilla thread (and also so we hold the - * lock for as little time as possible) - */ -JSBool -lm_InputEvent(MWContext *context, LO_Element *element, JSEvent *pEvent, - jsval *rval) -{ - JSContext *cx; - MochaDecoder *decoder = NULL; - JSBool ok; - LO_AnchorData *anchor; - JSObject *obj; - JSDocument *doc; - JSEventCapturer *cap; - JSEventReceiver *rec=NULL; - JSInputHandler *handler=NULL; - LO_FormElementData *data; - lo_FormData *form_data; - JSString *str; - char *re_input_bytes = NULL; - JSBool multiline = JS_FALSE; - int16 type; - JSBool event_receiver_type = JS_FALSE; - int32 layer_id, active_layer_id; - - *rval = JSVAL_VOID; - cx = context->mocha_context; - if (!cx) { - LO_UnlockLayout(); - return JS_TRUE; - } - - /* - * If the event is has no element and is one of the event types listed - * in the if statement it is being sent to the layer or window. Handle - * these first. - */ - if (!element && (pEvent->type == EVENT_FOCUS || pEvent->type == EVENT_BLUR || - pEvent->type == EVENT_MOUSEOVER || - pEvent->type == EVENT_MOUSEOUT)) { - - if (pEvent->layer_id == LO_DOCUMENT_LAYER_ID) { - - decoder = LM_GetMochaDecoder(context); - if (!decoder) { - LO_UnlockLayout(); - return JS_FALSE; - } - - /* Send event to the window. */ - obj = decoder->window_object; - - LO_UnlockLayout(); - - if (decoder->event_mask & pEvent->type) { - ok = JS_TRUE; - } - else { - decoder->event_mask |= pEvent->type; - ok = lm_SendEvent(context, obj, pEvent, rval); - decoder->event_mask &= ~pEvent->type; - } - LM_PutMochaDecoder(decoder); - } - else { - /* Send event to the layer matching the layer_id. */ - obj = LO_GetLayerMochaObjectFromId(context, pEvent->layer_id); - - LO_UnlockLayout(); - - if (!obj) - return JS_FALSE; - - cap = JS_GetPrivate(cx, obj); - if (!cap) - return JS_FALSE; - - if (cap->base.event_mask & pEvent->type){ - ok = JS_TRUE; - } - else { - cap->base.event_mask |= pEvent->type; - ok = lm_SendEvent(context, obj, pEvent, rval); - cap->base.event_mask &= ~pEvent->type; - } - } - - return ok; - } - - type = element ? element->type : LO_NONE; - - /* If we're over plain text its easier to do this now than in the switch */ - if (type == LO_TEXT && !element->lo_text.anchor_href && - LM_EventCaptureCheck(context, pEvent->type)) { - type = LO_NONE; - } - - switch (type) { - case LO_TEXT: - anchor = element->lo_text.text ? element->lo_text.anchor_href : 0; - obj = anchor ? anchor->mocha_object : 0; - if (!obj) { - if (!LM_EventCaptureCheck(context, pEvent->type) || !anchor) { - LO_UnlockLayout(); - return JS_TRUE; - } - /* Reflect the anchor now because someone is capturing */ - layer_id = LO_GetIdFromLayer(context, anchor->layer); - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, pEvent->layer_id); - LO_EnumerateLinks(context, pEvent->layer_id); - LM_SetActiveLayer(context, active_layer_id); - obj = anchor->mocha_object; - } - re_input_bytes = (char *)element->lo_text.text; - multiline = JS_TRUE; - break; - case LO_IMAGE: - anchor = element->lo_image.image_attr ? element->lo_image.anchor_href : 0; - if (anchor) { - obj = anchor->mocha_object; - } - else { - obj = element->lo_image.image_attr ? element->lo_image.mocha_object : 0; - event_receiver_type = JS_TRUE; - } - if (!obj) { - if (!LM_EventCaptureCheck(context, pEvent->type) || - !element->lo_image.image_attr) { - LO_UnlockLayout(); - return JS_TRUE; - } - /* Reflect the object now because someone is capturing */ - if (anchor) { - layer_id = LO_GetIdFromLayer(context, anchor->layer); - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, layer_id); - LO_EnumerateLinks(context, layer_id); - LM_SetActiveLayer(context, active_layer_id); - obj = anchor->mocha_object; - } - else { - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, element->lo_image.layer_id); - LO_EnumerateImages(context, element->lo_image.layer_id); - LM_SetActiveLayer(context, active_layer_id); - obj = element->lo_image.mocha_object; - event_receiver_type = JS_TRUE; - } - } - break; - case LO_FORM_ELE: - obj = element->lo_form.element_data ? element->lo_form.mocha_object:0; - if (!obj) { - if (!LM_EventCaptureCheck(context, pEvent->type) || - !element->lo_form.element_data) { - LO_UnlockLayout(); - return JS_TRUE; - } - /* Reflect the object now because someone is capturing */ - active_layer_id = LM_GetActiveLayer(context); - LM_SetActiveLayer(context, element->lo_form.layer_id); - LO_EnumerateForms(context, element->lo_form.layer_id); - form_data = LO_GetFormDataByID(context, element->lo_form.layer_id, - element->lo_form.form_id); - if (!form_data) { - LM_SetActiveLayer(context, active_layer_id); - LO_UnlockLayout(); - return JS_TRUE; - } - LO_EnumerateFormElements(context, form_data); - LM_SetActiveLayer(context, active_layer_id); - obj = element->lo_form.mocha_object; - } - data = element->lo_form.element_data; - switch (data->type) { - case FORM_TYPE_TEXT: - re_input_bytes = (char *)data->ele_text.current_text; - break; - case FORM_TYPE_TEXTAREA: -#ifdef ENDER - case FORM_TYPE_HTMLAREA: -#endif /*ENDER*/ - re_input_bytes = (char *)data->ele_textarea.current_text; - multiline = JS_TRUE; - break; - case FORM_TYPE_SELECT_ONE: - case FORM_TYPE_SELECT_MULT: - { - lo_FormElementSelectData *selectData; - lo_FormElementOptionData *optionData; - int32 i; - - selectData = &data->ele_select; - optionData = (lo_FormElementOptionData *) selectData->options; - for (i = 0; i < selectData->option_cnt; i++) { - if (optionData[i].selected) { - re_input_bytes = (char *)optionData[i].text_value; - break; - } - } - } - break; - } - break; - default: - /* Any event over nothing or a non-reflectable layout element (linefeeds, - * horizontal rules, etc) goes to the main document or layer document. - */ - decoder = LM_GetMochaDecoder(context); - if (!decoder) { - LO_UnlockLayout(); - return JS_FALSE; - } - - obj = lm_GetDocumentFromLayerId(decoder, pEvent->layer_id); - LO_UnlockLayout(); - LM_PutMochaDecoder(decoder); - - if (!obj) - return JS_FALSE; - - doc = JS_GetPrivate(cx, obj); - if (!doc) - return JS_FALSE; - - if (doc->capturer.base.event_mask & pEvent->type) { - ok = JS_TRUE; - } - else { - doc->capturer.base.event_mask |= pEvent->type; - ok = lm_SendEvent(context, obj, pEvent, rval); - doc->capturer.base.event_mask &= ~pEvent->type; - } - return ok; - } - - /* whether we got an object or not we are done with the element ptr */ - LO_UnlockLayout(); - - if (!obj) { - XP_ASSERT(0); - return JS_FALSE; - } - - /* Images do not have the same base private data structure as the - * other input elements do so we must use a different private data - * structs. Eventually these should be unified for all event receivers. - */ - if (event_receiver_type) { - rec = JS_GetPrivate(cx, obj); - if (!rec || rec->event_mask & pEvent->type) - return JS_FALSE; - } - else { - handler = JS_GetPrivate(cx, obj); - if (!handler || handler->event_mask & pEvent->type) - return JS_FALSE; - } - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return JS_FALSE; - decoder->event_receiver = obj; - LM_PutMochaDecoder(decoder); - - if (re_input_bytes) { - str = lm_LocalEncodingToStr(context, re_input_bytes); - if (!str) - return JS_FALSE; - JS_SetRegExpInput(cx, str, multiline); - } - - if (event_receiver_type) - rec->event_mask |= pEvent->type; - else - handler->event_mask |= pEvent->type; - - ok = lm_SendEvent(context, obj, pEvent, rval); - - if (event_receiver_type) - rec->event_mask &= ~pEvent->type; - else - handler->event_mask &= ~pEvent->type; - - if (re_input_bytes) - JS_ClearRegExpStatics(cx); - return ok; -} diff --git a/mozilla/lib/libmocha/lm_jsd.c b/mozilla/lib/libmocha/lm_jsd.c deleted file mode 100644 index c6f305cd473..00000000000 --- a/mozilla/lib/libmocha/lm_jsd.c +++ /dev/null @@ -1,340 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - * JSDebug StreamConverter hooks for source text in Navigator - */ - -/* Please leave outside of ifdef for windows precompiled headers */ -#include "lm.h" - -#include "net.h" -#include "prlink.h" - - -#ifdef JSDEBUGGER -#include "jsdebug.h" - -/***************************************/ -/* a static global, oh well... */ - -static JSDContext* g_jsdc = NULL; - -typedef struct -{ - NET_StreamClass* next_stream; - JSDSourceText* jsdsrc; - -} LocalData; - -/***************************************/ -/* support for dynamic library load and calling */ - -/* these must match declarations in jsdebug.h */ - -typedef void -(*SetUserCallbacksProc)(JSRuntime* jsruntime, JSD_UserCallbacks* callbacks, void* user); - -typedef JSDSourceText* -(*NewSourceTextProc)(JSDContext* jsdc, const char* url); - -typedef JSDSourceText* -(*AppendSourceTextProc)(JSDContext* jsdc, - JSDSourceText* jsdsrc, - const char* text, /* *not* zero terminated */ - size_t length, - JSDSourceStatus status); - -static SetUserCallbacksProc g_SetUserCallbacks = NULL; -static NewSourceTextProc g_NewSourceText = NULL; -static AppendSourceTextProc g_AppendSourceText = NULL; -static PRLibrary* g_JSDModule = NULL; - -#ifdef XP_PC -#if defined(_WIN32) || defined(XP_OS2) - static char moduleName[] = "jsd3240.dll"; -#else - static char moduleName[] = "jsd1640.dll"; -#endif /* _WIN32 */ -#endif /* XP_PC */ - -#ifdef XP_MAC - static char moduleName[] = "JavaScript Debug Support"; -#endif - -#ifdef XP_UNIX - static char moduleName[] = "libjsd"; -#endif /*XP_UNIX */ - -#ifdef XP_UNIX -static PRLibrary* -LoadUnixLibrary(const char *name) -{ - PRLibrary* lib = NULL; - char* libPath; - char* fullname; - const char* rawLibPath; - char* cur; - char* next; - - rawLibPath = PR_GetLibraryPath(); - if( ! rawLibPath ) - return NULL; - - cur = libPath = strdup(rawLibPath); - if( ! libPath ) - return NULL; - - do - { - next = strchr(cur, ':'); - if(next) - *next++ = 0; - - if( cur[strlen(cur)-1] == '/' ) - fullname = PR_smprintf("%s%s.%s", cur, name, DLL_SUFFIX); - else - fullname = PR_smprintf("%s/%s.%s", cur, name, DLL_SUFFIX); - - lib = PR_LoadLibrary(fullname); - free(fullname); - - if( lib ) - break; - - cur = next; - } while( cur && *cur ); - - free(libPath); - return lib; -} -#endif /*XP_UNIX */ - - -static void -UnLoadJSDModule(void) -{ - if( g_JSDModule ) - PR_UnloadLibrary(g_JSDModule); - - g_JSDModule = NULL; - g_SetUserCallbacks = NULL; - g_NewSourceText = NULL; - g_AppendSourceText = NULL; -} - -static int -LoadJSDModuleAndCallbacks(void) -{ -#ifdef XP_MAC - const char *libPath = PR_GetLibraryPath(); - PR_SetLibraryPath( "/usr/local/netscape/" ); - - g_JSDModule = PR_LoadLibrary(moduleName); - - /* set path back to original path (don't have ourselves in list) */ - PR_SetLibraryPath( libPath ); -#elif defined(XP_UNIX) - g_JSDModule = LoadUnixLibrary(moduleName); -#else - g_JSDModule = PR_LoadLibrary(moduleName); -#endif - - if( ! g_JSDModule ) - return 0; - - g_SetUserCallbacks = (SetUserCallbacksProc) PR_FindSymbol( g_JSDModule, "JSD_SetUserCallbacks"); - g_NewSourceText = (NewSourceTextProc ) PR_FindSymbol( g_JSDModule, "JSD_NewSourceText"); - g_AppendSourceText = (AppendSourceTextProc) PR_FindSymbol( g_JSDModule, "JSD_AppendSourceText"); - - if( ! g_SetUserCallbacks || - ! g_NewSourceText || - ! g_AppendSourceText ) - { - UnLoadJSDModule(); - return 0; - } - return 1; -} - -/***************************************/ -/* helpers */ - -PR_STATIC_CALLBACK(void) -lmjsd_SetContext(JSDContext* jsdc, void* user) -{ - g_jsdc = jsdc; -} - -static void cleanup_ld( LocalData* ld ) -{ - if( ld ) - { - XP_FREEIF(ld->next_stream); - XP_FREE(ld); - } -} - -/***************************************/ -/* converter callbacks */ - -PR_STATIC_CALLBACK(int) -lmjsd_CvtPutBlock (NET_StreamClass *stream, const char *str, int32 len) -{ - LocalData* ld = (LocalData*) stream->data_object; - - if( g_jsdc && ld->jsdsrc ) - ld->jsdsrc = g_AppendSourceText(g_jsdc, ld->jsdsrc, - str, len, JSD_SOURCE_PARTIAL ); - - return ((*ld->next_stream->put_block)(ld->next_stream,str,len)); -} - -PR_STATIC_CALLBACK(void) -lmjsd_CvtComplete (NET_StreamClass *stream) -{ - LocalData* ld = (LocalData*) stream->data_object; - - if( g_jsdc && ld->jsdsrc ) - g_AppendSourceText(g_jsdc, ld->jsdsrc, - NULL, 0, JSD_SOURCE_COMPLETED ); - - (*ld->next_stream->complete)(ld->next_stream); - - cleanup_ld(ld); -} - -PR_STATIC_CALLBACK(void) -lmjsd_CvtAbort (NET_StreamClass *stream, int status) -{ - LocalData* ld = (LocalData*) stream->data_object; - - if( g_jsdc && ld->jsdsrc ) - g_AppendSourceText(g_jsdc, ld->jsdsrc, - NULL, 0, JSD_SOURCE_ABORTED ); - - (*ld->next_stream->abort)(ld->next_stream, status); - - cleanup_ld(ld); -} - -PR_STATIC_CALLBACK(unsigned int) -lmjsd_CvtWriteReady (NET_StreamClass *stream) -{ - LocalData* ld = (LocalData*) stream->data_object; - return (*ld->next_stream->is_write_ready)(ld->next_stream); -} - -/***************************************/ -/* exported functions */ - -void -lm_InitJSDebug(JSRuntime *jsruntime) -{ - JSD_UserCallbacks cbs; - - if( LoadJSDModuleAndCallbacks() ) - { - memset(&cbs, 0, sizeof(JSD_UserCallbacks) ); - cbs.size = sizeof(JSD_UserCallbacks); - cbs.setContext = lmjsd_SetContext; - g_SetUserCallbacks( jsruntime, &cbs, &g_jsdc ); /* &g_jsdc is just a unique address */ - } - -} - -void -lm_ExitJSDebug(JSRuntime *jsruntime) -{ - if( g_SetUserCallbacks ) - g_SetUserCallbacks( jsruntime, NULL, &g_jsdc ); /* &g_jsdc is just a unique address */ - g_jsdc = NULL; - UnLoadJSDModule(); -} - -JSBool -LM_GetJSDebugActive(void) -{ - return (JSBool)(NULL != g_jsdc); -} - -void -LM_JamSourceIntoJSDebug( const char *filename, - const char *str, - int32 len, - MWContext *mwcontext ) -{ - JSDSourceText* jsdsrc; - - if( ! g_jsdc ) - return; - - jsdsrc = g_NewSourceText(g_jsdc, filename); - if( jsdsrc ) - jsdsrc = g_AppendSourceText(g_jsdc, jsdsrc, - str, len, JSD_SOURCE_PARTIAL ); - if( jsdsrc ) - g_AppendSourceText(g_jsdc, jsdsrc, - NULL, 0, JSD_SOURCE_COMPLETED ); -} - -extern NET_StreamClass* -LM_StreamBuilder( int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *mwcontext ) -{ - LocalData* ld; - NET_StreamClass* stream; - - /* If JSDebug is not active, then don't link into chain */ - if( ! g_jsdc ) - return NET_StreamBuilder(format_out, URL_s, mwcontext); - - if( ! (ld = XP_NEW_ZAP(LocalData)) || - ! (ld->jsdsrc = g_NewSourceText(g_jsdc, URL_s->address)) ) - { - cleanup_ld(ld); - return NET_StreamBuilder(format_out, URL_s, mwcontext); - } - - if( ! (stream = NET_NewStream("JSDebuggerConverter", lmjsd_CvtPutBlock, - lmjsd_CvtComplete, lmjsd_CvtAbort, - lmjsd_CvtWriteReady, ld, mwcontext)) ) - { - g_AppendSourceText(g_jsdc, ld->jsdsrc, NULL, 0, JSD_SOURCE_FAILED); - cleanup_ld(ld); - return NET_StreamBuilder(format_out, URL_s, mwcontext); - } - - if( ! (ld->next_stream = NET_StreamBuilder(format_out, URL_s, mwcontext)) ) - { - g_AppendSourceText(g_jsdc, ld->jsdsrc, NULL, 0, JSD_SOURCE_FAILED); - cleanup_ld(ld); - XP_FREE(stream); - return NULL; - } - - return stream; -} - -#endif /* JSDEBUGGER */ diff --git a/mozilla/lib/libmocha/lm_layer.c b/mozilla/lib/libmocha/lm_layer.c deleted file mode 100644 index a67a39eba06..00000000000 --- a/mozilla/lib/libmocha/lm_layer.c +++ /dev/null @@ -1,2998 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * Compositor layer reflection and event notification - * - * Scott Furman, 6/20/96 - * - */ - -#include "lm.h" /* moved out of ifdef for pre compiled headers */ -#include "xp.h" -#include "lo_ele.h" -#include "prtypes.h" -#include "pa_tags.h" -#include "layout.h" -#include "jsdbgapi.h" - -#include "layers.h" - -/* Forward declarations. Can these be static? */ -PR_STATIC_CALLBACK(JSBool) -rect_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp); -PR_STATIC_CALLBACK(JSBool) -rect_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp); - -/* HACK: We don't want to resolve layers when we restore the layer state on - resizes. This boolean gets set to FALSE for that case in - lm_RestoreLayerState() */ -static Bool lm_really_resolve_layer = TRUE; - -enum layer_array_slot { - LAYER_ARRAY_LENGTH = -1 -}; - -/* Native part of mocha object reflecting children layers of another layer */ -typedef struct JSLayerArray { - MochaDecoder *decoder; /* prefix must match JSObjectArray */ - jsint length; /* # of entries in array */ - int32 parent_layer_id; -} JSLayerArray; - -extern JSClass lm_layer_array_class; - -PR_STATIC_CALLBACK(JSBool) -layer_array_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSLayerArray *array; - MochaDecoder *decoder; - MWContext *context; - jsint count, slot; - CL_Layer *layer, *parent_layer; - int32 layer_id; - - while (!(array = JS_GetInstancePrivate(cx, obj, &lm_layer_array_class, - NULL))) { - obj = JS_GetPrototype(cx, obj); - if (!obj) - return JS_TRUE; - } - decoder = array->decoder; - - if (!lm_CheckContainerAccess(cx, obj, decoder, - JSTARGET_UNIVERSAL_BROWSER_READ)) { - return JS_FALSE; - } - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - context = decoder->window_context; - if (!context) - return JS_TRUE; - - LO_LockLayout(); - - if(decoder->doc_id != XP_DOCID(context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - parent_layer = LO_GetLayerFromId(context, array->parent_layer_id); - if (!parent_layer) { - LO_UnlockLayout(); - return JS_TRUE; - } - - switch (slot) { - case LAYER_ARRAY_LENGTH: - count = CL_GetLayerChildCount(parent_layer); - if (count > array->length) - array->length = count; - *vp = INT_TO_JSVAL(count); - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - LO_UnlockLayout(); - return JS_TRUE; - } - if (slot >= array->length) - array->length = slot + 1; - layer = CL_GetLayerChildByIndex(parent_layer, slot); - if (!layer) { - JS_ReportError(cx, - "Attempt to access nonexistent slot %d " - "of layers[] array", slot); - LO_UnlockLayout(); - return JS_FALSE; - } - layer_id = LO_GetIdFromLayer(context, layer); - *vp = OBJECT_TO_JSVAL(LM_ReflectLayer(context, layer_id, - array->parent_layer_id, - NULL)); - break; - } - - LO_UnlockLayout(); - return JS_TRUE; -} - -/* XXXMLM - gross hack until we have JS_HasProperty. - * Do not resolve a property if this static - * flag is set. See lm_reflect_layer_using_existing_obj. - */ -static JSBool layer_array_should_resolve = JS_TRUE; - -PR_STATIC_CALLBACK(JSBool) -layer_array_resolve_name(JSContext *cx, JSObject *obj, jsval id) -{ - JSLayerArray *array; - MochaDecoder *decoder; - const char * name; - JSObject *layer_obj; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - - /* XXXMLM - see above; wish we had JS_HasProperty */ - if (!layer_array_should_resolve) { - return JS_TRUE; - } - - name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - if (!name) - return JS_TRUE; - - array = JS_GetPrivate(cx, obj); - if (!array) - return JS_TRUE; - decoder = array->decoder; - - /* - * If the layer exists, we don't have to define the property here, - * since the reflection code will define it for us. - */ - layer_obj = lm_GetNamedLayer(decoder, array->parent_layer_id, name); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -layer_array_finalize(JSContext *cx, JSObject *obj) -{ - JSLayerArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -JSClass lm_layer_array_class = { - "LayerArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - layer_array_getProperty, layer_array_getProperty, JS_EnumerateStub, - layer_array_resolve_name, JS_ConvertStub, layer_array_finalize -}; - -static JSPropertySpec layer_array_props[] = { - {lm_length_str, LAYER_ARRAY_LENGTH, - JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {0} -}; - - -/* Native part of a mocha object that reflects a single compositor layer - */ -typedef struct JSLayer { - JSEventCapturer capturer; - MochaDecoder *decoder; - int32 layer_id; - JSString *name; - JSObject *child_layers_array_obj; - char *source_url; - /* - * Indicates which properties have been modified and should be - * saved across a resize relayout. - */ - uint32 modification_mask; - /* - * The following are properties whose saved values are of a different - * type than the property itself. - */ - JSString *sibling_above; - JSString *sibling_below; - int32 width; - PRPackedBool properties_locked; - PRPackedBool principals_compromised; - JSPrincipals *principals; -} JSLayer; - - -static JSObject * -reflect_layer_array(MochaDecoder *decoder, - int32 parent_layer_id) -{ - JSContext *cx; - JSLayer *js_layer_parent; - JSLayerArray *array; - JSObject *obj, *layer_obj, *parent_doc_obj; - JSClass *clasp; - CL_Layer *parent_layer; - - cx = decoder->js_context; - layer_obj = LO_GetLayerMochaObjectFromId(decoder->window_context, - parent_layer_id); - parent_layer = LO_GetLayerFromId(decoder->window_context, parent_layer_id); - parent_doc_obj = lm_GetDocumentFromLayerId(decoder, parent_layer_id); - if (! layer_obj || !parent_layer || !parent_doc_obj) /* paranoia */ - return NULL; - js_layer_parent = JS_GetPrivate(cx, layer_obj); - if (!js_layer_parent) - return NULL; - obj = js_layer_parent->child_layers_array_obj; - - if (obj) /* Are layer children already reflected ? */ - return obj; - - clasp = &lm_layer_array_class; - - array = JS_malloc(cx, sizeof *array); - if (!array) - return NULL; - XP_BZERO(array, sizeof *array); - - obj = JS_NewObject(cx, clasp, NULL, parent_doc_obj); - if (!obj || !JS_SetPrivate(cx, obj, array)) { - JS_free(cx, array); - return NULL; - } - - if (!JS_DefineProperties(cx, obj, layer_array_props)) - return NULL; - - array->decoder = HOLD_BACK_COUNT(decoder); - array->parent_layer_id = parent_layer_id; - return obj; -} - -/* Given the mocha object reflecting a compositor layer, return - the mocha object that reflects its child layers in an array. */ -PRIVATE JSObject * -lm_GetLayerArray(MochaDecoder *decoder, - JSObject *parent_js_layer_obj) -{ - JSLayer *js_layer_parent; - JSObject *obj; - JSContext *cx; - - if (! parent_js_layer_obj) - return NULL; - cx = decoder->js_context; - js_layer_parent = JS_GetPrivate(cx, parent_js_layer_obj); - if (!js_layer_parent) - return NULL; - obj = js_layer_parent->child_layers_array_obj; - if (obj) - return obj; - - obj = reflect_layer_array(decoder, js_layer_parent->layer_id); - - if (obj && !JS_DefineProperty(cx, parent_js_layer_obj, "layers", - OBJECT_TO_JSVAL(obj), NULL, NULL, - JSPROP_ENUMERATE|JSPROP_READONLY| - JSPROP_PERMANENT)) { - return NULL; - } - - js_layer_parent->child_layers_array_obj = obj; - return obj; -} - - -/* The top-level document object contains the distinguished _DOCUMENT - layer. Reflect the array containing children of the _DOCUMENT layer. */ -JSObject * -lm_GetDocumentLayerArray(MochaDecoder *decoder, JSObject *document) -{ - MWContext *context; - JSObject *obj; - JSLayerArray *array; - JSClass *clasp; - JSContext *cx; - JSDocument *doc; - - cx = decoder->js_context; - doc = JS_GetPrivate(cx, document); - if (!doc) - return NULL; - - obj = doc->layers; - if (obj) - return obj; - context = decoder->window_context; - - /* If this is a layer's document, return the layer's child array */ - if (doc->layer_id != LO_DOCUMENT_LAYER_ID) { - JSObject *layer_obj; - - layer_obj = LO_GetLayerMochaObjectFromId(context, doc->layer_id); - if (!layer_obj) - return NULL; - doc->layers = lm_GetLayerArray(decoder, layer_obj); - - return doc->layers; - } - - clasp = &lm_layer_array_class; - - array = JS_malloc(cx, sizeof *array); - if (!array) - return NULL; - XP_BZERO(array, sizeof *array); - - obj = JS_NewObject(cx, clasp, NULL, document); - if (!obj || !JS_SetPrivate(cx, obj, array)) { - JS_free(cx, array); - return NULL; - } - - if (!JS_DefineProperties(cx, obj, layer_array_props)) { - JS_free(cx, array); - return NULL; - } - - array->decoder = HOLD_BACK_COUNT(decoder); - array->parent_layer_id = doc->layer_id; - - doc->layers = obj; - return obj; -} - -#define LM_SET_LAYER_MODIFICATION(layer, bit) \ - (layer)->modification_mask |= (1 << (bit)) -#define LM_CLEAR_LAYER_MODIFICATION(layer, bit) \ - (layer)->modification_mask &= ~(1 << (bit)) -#define LM_CHECK_LAYER_MODIFICATION(layer, bit) \ - (((layer)->modification_mask & (1 << (bit))) != 0) - -enum layer_prop_modification_bits { - LAYER_MOD_LEFT = 0, - LAYER_MOD_TOP, - LAYER_MOD_VISIBILITY, - LAYER_MOD_SRC, - LAYER_MOD_ZINDEX, - LAYER_MOD_BGCOLOR, - LAYER_MOD_BACKGROUND, - LAYER_MOD_PARENT, - LAYER_MOD_SIB_ABOVE, - LAYER_MOD_SIB_BELOW, - LAYER_MOD_CLIP_LEFT, - LAYER_MOD_CLIP_RIGHT, - LAYER_MOD_CLIP_TOP, - LAYER_MOD_CLIP_BOTTOM, - LAYER_MOD_WIDTH -}; - -/* Static compositor layer property slots */ -enum layer_slot { - LAYER_WINDOW = -1, - LAYER_NAME = -2, - LAYER_LEFT = -3, - LAYER_TOP = -4, - LAYER_X = -5, - LAYER_Y = -6, - LAYER_HIDDEN = -7, - LAYER_SIB_ABOVE = -8, - LAYER_SIB_BELOW = -9, - LAYER_PARENT = -10, - LAYER_CHILDREN = -11, - LAYER_SRC = -12, - LAYER_VISIBILITY = -13, - LAYER_ABOVE = -14, - LAYER_BELOW = -15, - LAYER_ZINDEX = -16, - LAYER_BGCOLOR = -17 -}; - -char lm_left_str[] = "left"; -char lm_top_str[] = "top"; -char lm_right_str[] = "right"; -char lm_bottom_str[] = "bottom"; -char lm_src_str[] = "src"; -char lm_visibility_str[] = "visibility"; -char lm_zindex_str[] = "zIndex"; -char lm_bgcolor_str[] = "bgColor"; -char lm_background_str[] = "background"; -char lm_clip_str[] = "clip"; - -/* Static compositor layer properties */ -static JSPropertySpec layer_props[] = { - {"window", LAYER_WINDOW, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"id", LAYER_NAME, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"name", LAYER_NAME, JSPROP_ENUMERATE}, - {lm_left_str, LAYER_LEFT, JSPROP_ENUMERATE}, - {"x", LAYER_LEFT, JSPROP_ENUMERATE}, /* Synonym for left */ - {lm_top_str, LAYER_TOP, JSPROP_ENUMERATE}, - {"y", LAYER_TOP, JSPROP_ENUMERATE}, /* Synonym for top */ - {"pageX", LAYER_X, JSPROP_ENUMERATE}, - {"pageY", LAYER_Y, JSPROP_ENUMERATE}, - {"hidden", LAYER_HIDDEN, JSPROP_ENUMERATE}, - {"layers", LAYER_CHILDREN, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"siblingAbove", LAYER_SIB_ABOVE, JSPROP_ENUMERATE | JSPROP_READONLY}, /* FIXME - should be writeable */ - {"siblingBelow", LAYER_SIB_BELOW, JSPROP_ENUMERATE | JSPROP_READONLY}, /* FIXME - should be writeable */ - {lm_parentLayer_str, LAYER_PARENT, JSPROP_ENUMERATE | JSPROP_READONLY}, - {lm_src_str, LAYER_SRC, JSPROP_ENUMERATE}, - {lm_visibility_str, LAYER_VISIBILITY, JSPROP_ENUMERATE}, - {"above", LAYER_ABOVE, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"below", LAYER_BELOW, JSPROP_ENUMERATE | JSPROP_READONLY}, - {lm_zindex_str, LAYER_ZINDEX, JSPROP_ENUMERATE}, - {lm_bgcolor_str, LAYER_BGCOLOR, JSPROP_ENUMERATE}, - {0} -}; - -/* - * Static compositor rect property slots. Declared here since we - * need the ids in some of the methods. - */ -enum rect_slot { - RECT_LEFT = -1, - RECT_TOP = -2, - RECT_RIGHT = -3, - RECT_BOTTOM = -4, - RECT_WIDTH = -5, - RECT_HEIGHT = -6 -}; - -extern JSClass lm_layer_class; - -PR_STATIC_CALLBACK(JSBool) -layer_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSLayer *js_layer; - MochaDecoder *decoder; - MWContext *context; - JSString *str; - CL_Layer *layer, *layer_above, *layer_below, *layer_parent; - LO_Color *bg_color; - jsint slot; - char *visibility; - uint32 flags; - - while (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, NULL))) { - obj = JS_GetPrototype(cx, obj); - if (!obj) - return JS_TRUE; - } - - decoder = js_layer->decoder; - - if (!lm_CheckContainerAccess(cx, obj, decoder, - JSTARGET_UNIVERSAL_BROWSER_READ)) { - return JS_FALSE; - } - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - context = decoder->window_context; - if (!context) - return JS_TRUE; - - /* - * Not sure if this is enough protection or not... - */ - LO_LockLayout(); - - if(decoder->doc_id != XP_DOCID(context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - layer = LO_GetLayerFromId(context, js_layer->layer_id); - if (!layer) { - LO_UnlockLayout(); - return JS_TRUE; - } - - switch (slot) { - case LAYER_WINDOW: - *vp = OBJECT_TO_JSVAL(decoder->window_object); - break; - - case LAYER_NAME: - if (js_layer->name) - *vp = STRING_TO_JSVAL(js_layer->name); - else - *vp = JSVAL_NULL; - break; - - case LAYER_HIDDEN: - *vp = BOOLEAN_TO_JSVAL(CL_GetLayerHidden(layer)); - break; - - case LAYER_VISIBILITY: - flags = CL_GetLayerFlags(layer); - if (flags & CL_HIDDEN) - visibility = "hide"; - else if (flags & CL_OVERRIDE_INHERIT_VISIBILITY) - visibility = "show"; - else - visibility = "inherit"; - - str = JS_NewStringCopyZ(cx, visibility); - if (!str) { - LO_UnlockLayout(); - return JS_FALSE; - } - *vp = STRING_TO_JSVAL(str); - break; - - case LAYER_LEFT: - *vp = INT_TO_JSVAL(LO_GetLayerXOffset(layer)); - break; - - case LAYER_TOP: - *vp = INT_TO_JSVAL(LO_GetLayerYOffset(layer)); - break; - - case LAYER_X: - *vp = INT_TO_JSVAL(CL_GetLayerXOrigin(layer)); - break; - - case LAYER_Y: - *vp = INT_TO_JSVAL(CL_GetLayerYOrigin(layer)); - break; - - case LAYER_CHILDREN: - *vp = OBJECT_TO_JSVAL(lm_GetLayerArray(js_layer->decoder, obj)); - break; - - case LAYER_SIB_ABOVE: - layer_above = CL_GetLayerSiblingAbove(layer); - if (layer_above) - *vp = OBJECT_TO_JSVAL(LO_GetLayerMochaObjectFromLayer(context, - layer_above)); - else - *vp = JSVAL_NULL; - break; - - case LAYER_SIB_BELOW: - layer_below = CL_GetLayerSiblingBelow(layer); - if (layer_below) - *vp = OBJECT_TO_JSVAL(LO_GetLayerMochaObjectFromLayer(context, - layer_below)); - else - *vp = JSVAL_NULL; - break; - - case LAYER_PARENT: - layer_parent = CL_GetLayerParent(layer); - - /* - * XXX This is a bit controversial - should the parent layer of - * a top-level layer be the window?? - */ - if (layer_parent) { - if (CL_GetLayerFlags(layer_parent) & CL_DONT_ENUMERATE) - *vp = OBJECT_TO_JSVAL(decoder->window_object); - else - *vp = OBJECT_TO_JSVAL(LO_GetLayerMochaObjectFromLayer(context, - layer_parent)); - } - else - *vp = JSVAL_NULL; - break; - - case LAYER_ZINDEX: - *vp = INT_TO_JSVAL(CL_GetLayerZIndex(layer)); - break; - - case LAYER_ABOVE: - layer_above = CL_GetLayerAbove(layer); - if (layer_above) - *vp = OBJECT_TO_JSVAL(LO_GetLayerMochaObjectFromLayer(context, - layer_above)); - else - *vp = JSVAL_NULL; - break; - - case LAYER_BELOW: - layer_below = CL_GetLayerBelow(layer); - if (layer_below) - *vp = OBJECT_TO_JSVAL(LO_GetLayerMochaObjectFromLayer(context, - layer_below)); - else - *vp = JSVAL_NULL; - break; - - case LAYER_BGCOLOR: - bg_color = LO_GetLayerBgColor(layer); - if (bg_color) { - uint32 packed_color = - (bg_color->red << 16) | (bg_color->green << 8) | (bg_color->blue); - *vp = INT_TO_JSVAL(packed_color); - } else - *vp = JSVAL_NULL; - break; - - case LAYER_SRC: - if (!lm_CheckPermissions(cx, obj, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - if (!js_layer->source_url) { - *vp = JSVAL_NULL; - } else { - JSString *url; - - url = JS_NewStringCopyZ(cx, js_layer->source_url); - if (!url) { - LO_UnlockLayout(); - return JS_FALSE; - } - *vp = STRING_TO_JSVAL(url); - } - break; - default: - /* Don't mess with a user-defined or method property. */ - break; - } - - LO_UnlockLayout(); - - return JS_TRUE; -} - -JSBool -lm_jsval_to_rgb(JSContext *cx, jsval *vp, LO_Color **rgbp) -{ - LO_Color *rgb = NULL; - int32 color; - - if (JSVAL_IS_NUMBER(*vp)) { - if (!JS_ValueToInt32(cx, *vp, &color)) - return JS_FALSE; - if ((color >> 24) != 0) - return JS_FALSE; - - rgb = XP_NEW(LO_Color); - if (!rgb) - return JS_FALSE; - - rgb->red = (uint8) (color >> 16); - rgb->green = (uint8) ((color >> 8) & 0xff); - rgb->blue = (uint8) (color & 0xff); - } else { - switch(JS_TypeOfValue(cx, *vp)) { - - case JSTYPE_OBJECT: - /* Check for null (transparent) bgcolor */ - if (JSVAL_IS_NULL(*vp)) { - rgb = NULL; - break; - } - /* FALL THROUGH */ - - default: - if (!JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) - return JS_FALSE; - /* FALL THROUGH */ - - case JSTYPE_STRING: - rgb = XP_NEW(LO_Color); - if (!rgb) - return JS_FALSE; - - if (!LO_ParseRGB((char *)JS_GetStringBytes(JSVAL_TO_STRING(*vp)), - &rgb->red, &rgb->green, &rgb->blue)) { - JS_ReportError(cx, "Invalid color specification %s", - (char *)JS_GetStringBytes(JSVAL_TO_STRING(*vp))); - XP_FREE(rgb); - return JS_FALSE; - } - break; - } - } - *rgbp = rgb; - return JS_TRUE; - -} - - -PR_STATIC_CALLBACK(JSBool) -layer_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - int32 val; - int32 val32; - JSBool hidden; - PRBool properties_locked; - JSLayer *js_layer; - MochaDecoder *decoder; - MWContext *context; - CL_Layer *layer, *parent; - char *url; - LO_Color *rgb; - jsint slot; - jsval js_val; - const char *referer; - JSBool unlockp = JS_TRUE; - - while (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, NULL))) { - obj = JS_GetPrototype(cx, obj); - if (!obj) - return JS_TRUE; - } - properties_locked = (PRBool)js_layer->properties_locked; - - decoder = js_layer->decoder; - - if (!lm_CheckContainerAccess(cx, obj, decoder, - JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - return JS_FALSE; - } - - context = decoder->window_context; - if (!context) - return JS_TRUE; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - LO_LockLayout(); - if(decoder->doc_id != XP_DOCID(context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - layer = LO_GetLayerFromId(context, js_layer->layer_id); - if (!layer) { - LO_UnlockLayout(); - return JS_TRUE; - } - - /* If a layer is dynamically changing, it will probably look - better if it utilizes offscreen compositing. */ - CL_ChangeLayerFlag(layer, CL_PREFER_DRAW_OFFSCREEN, PR_TRUE); - - switch (slot) { - case LAYER_HIDDEN: - if (!JS_ValueToBoolean(cx, *vp, &hidden)) - goto error_exit; - js_val = BOOLEAN_TO_JSVAL(!hidden); - JS_SetProperty(cx, obj, lm_visibility_str, &js_val); - break; - - case LAYER_VISIBILITY: - { - JSBool hidden, inherit; - - if (JSVAL_IS_BOOLEAN(*vp)) { - hidden = (JSBool)(!JSVAL_TO_BOOLEAN(*vp)); - CL_ChangeLayerFlag(layer, CL_HIDDEN, (PRBool)hidden); - } else { - JSString *str; - const char *visibility; - - if (!(str = JS_ValueToString(cx, *vp))) - goto error_exit; - visibility = JS_GetStringBytes(str); - /* Accept "hidden" or "hide" */ - hidden = (JSBool)(!XP_STRNCASECMP(visibility, "hid", 3)); - inherit = (JSBool)(!XP_STRCASECMP(visibility, "inherit")); - - if (!hidden && !inherit && - XP_STRCASECMP(visibility, "show") && - XP_STRCASECMP(visibility, "visible")) { - JS_ReportError(cx, - "Layer visibility property must be set to " - "one of 'hide', 'show' or 'inherit'"); - } - CL_ChangeLayerFlag(layer, CL_HIDDEN, (PRBool)hidden); - CL_ChangeLayerFlag(layer, CL_OVERRIDE_INHERIT_VISIBILITY, - (PRBool)!inherit); - } - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_VISIBILITY); - break; - } - - case LAYER_LEFT: - /* Some layers have mostly read-only properties because we - don't want a malicious/careless JS author to modify them, - e.g. for layers that are used to encapulate a mail - message. In such cases, we fail silently. */ - if (properties_locked) - break; - if (!JS_ValueToInt32(cx, *vp, &val)) - goto error_exit; - LO_MoveLayer(layer, (int32)val, LO_GetLayerYOffset(layer)); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_LEFT); - break; - - case LAYER_TOP: - /* Some layers have mostly read-only properties because we - don't want a malicious/careless JS author to modify them, - e.g. for layers that are used to encapulate a mail - message. In such cases, we fail silently. */ - if (properties_locked) - break; - if (!JS_ValueToInt32(cx, *vp, &val)) - goto error_exit; - LO_MoveLayer(layer, LO_GetLayerXOffset(layer), (int32)val); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_TOP); - break; - - case LAYER_X: - /* Some layers have mostly read-only properties because we - don't want a malicious/careless JS author to modify them, - e.g. for layers that are used to encapulate a mail - message. In such cases, we fail silently. */ - if (properties_locked) - break; - if (!JS_ValueToInt32(cx, *vp, &val32)) - goto error_exit; - parent = CL_GetLayerParent(layer); - XP_ASSERT(parent); - if (parent) - val32 -= CL_GetLayerXOrigin(parent); - js_val = INT_TO_JSVAL(val32); - JS_SetProperty(cx, obj, lm_left_str, &js_val); - break; - - case LAYER_Y: - /* Some layers have mostly read-only properties because we - don't want a malicious/careless JS author to modify them, - e.g. for layers that are used to encapulate a mail - message. In such cases, we fail silently. */ - if (properties_locked) - break; - if (!JS_ValueToInt32(cx, *vp, &val32)) - goto error_exit; - parent = CL_GetLayerParent(layer); - XP_ASSERT(parent); - if (parent) - val32 -= CL_GetLayerYOrigin(parent); - js_val = INT_TO_JSVAL(val32); - JS_SetProperty(cx, obj, lm_top_str, &js_val); - break; - - case LAYER_SRC: - /* Some layers have mostly read-only properties because we - don't want a malicious/careless JS author to modify them, - e.g. for layers that are used to encapulate a mail - message. In such cases, we fail silently. */ - if (properties_locked) - break; - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) { - goto error_exit; - } - - url = JS_GetStringBytes(JSVAL_TO_STRING(*vp)); - LO_UnlockLayout(); - - url = (char *)lm_CheckURL(cx, url, JS_TRUE); - if (! url) - return JS_FALSE; - - referer = lm_GetSubjectOriginURL(cx); - if (! referer) { - XP_FREE(url); - return JS_FALSE; - } - - if (ET_TweakLayer(decoder->window_context, layer, 0, 0, - (void *)url, js_layer->layer_id, - CL_SetSrc, referer, decoder->doc_id)) { - lm_NewLayerDocument(decoder, js_layer->layer_id); - XP_FREEIF(js_layer->source_url); - js_layer->source_url = url; - if (js_layer->principals) { - JSPRINCIPALS_DROP(cx, js_layer->principals); - } - js_layer->principals = LM_NewJSPrincipals(NULL, NULL, url); - if (js_layer->principals == NULL) { - XP_FREE(url); - return JS_FALSE; - } - JSPRINCIPALS_HOLD(cx, js_layer->principals); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_SRC); - decoder->stream_owner = js_layer->layer_id; - } - else { - XP_FREE(url); - } - - /* Note that the name will be deallocated at the other end - of this call. */ - - /* Return true here to avoid passing through the getter and - * hitting the additional security checks there. Return - * value has already been stringized here. */ - return JS_TRUE; - - break; - - case LAYER_ZINDEX: - if (!JS_ValueToInt32(cx, *vp, &val)) - goto error_exit; - parent = CL_GetLayerParent(layer); - CL_RemoveChild(parent, layer); - CL_InsertChildByZ(parent, layer, (int32)val); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_ZINDEX); - LM_CLEAR_LAYER_MODIFICATION(js_layer, LAYER_MOD_SIB_ABOVE); - LM_CLEAR_LAYER_MODIFICATION(js_layer, LAYER_MOD_SIB_BELOW); - break; - - case LAYER_BGCOLOR: - LO_UnlockLayout(); - unlockp = JS_FALSE; - if (!lm_jsval_to_rgb(cx, vp, &rgb)) - return JS_FALSE; - ET_TweakLayer(decoder->window_context, layer, 0, 0, - rgb, 0, CL_SetBgColor, NULL, decoder->doc_id); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_BGCOLOR); - break; - - case LAYER_SIB_ABOVE: - case LAYER_SIB_BELOW: - /* FIXME - these should be writeable */ - break; - - /* These are immutable. */ - case LAYER_NAME: - case LAYER_CHILDREN: - break; - - default: - break; - } - - if (unlockp) - LO_UnlockLayout(); - return layer_getProperty(cx, obj, id, vp); - - error_exit: - LO_UnlockLayout(); - return JS_FALSE; -} - -JSBool -layer_setBgColorProperty(JSContext *cx, JSObject *obj, jsval *vp) -{ - return layer_setProperty(cx, obj, INT_TO_JSVAL(LAYER_BGCOLOR), vp); -} - -/* Lazily synthesize an Image object for the layer's 'background' property */ -PR_STATIC_CALLBACK(JSBool) -layer_resolve_name(JSContext *cx, JSObject *obj, jsval id) -{ - JSLayer *js_layer; - MochaDecoder *decoder; - const char * name; - - if (!lm_really_resolve_layer) - return JS_FALSE; - - js_layer = JS_GetPrivate(cx, obj); - if (!js_layer) - return JS_TRUE; - decoder = js_layer->decoder; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - if (!XP_STRCMP(name, lm_background_str)) { - JSObject *image_obj; - CL_Layer *layer; - - layer = LO_GetLayerFromId(decoder->window_context, js_layer->layer_id); - if (!layer) - return JS_FALSE; - image_obj = lm_NewImage(cx, LO_GetLayerBackdropImage(layer)); - if (!image_obj) - return JS_FALSE; - - return JS_DefineProperty(cx, obj, name, OBJECT_TO_JSVAL(image_obj), - NULL, NULL, JSPROP_ENUMERATE | JSPROP_READONLY); - } - return lm_ResolveWindowProps(cx, decoder, obj, id); -} - -PR_STATIC_CALLBACK(void) -layer_finalize(JSContext *cx, JSObject *obj) -{ - JSLayer *js_layer; - PRHashTable *map; - - js_layer = JS_GetPrivate(cx, obj); - if (!js_layer) - return; - -/* XXX js_layer->layer is sometimes freed by the time the GC runs - CL_SetLayerMochaObject(js_layer->layer, NULL); - */ - DROP_BACK_COUNT(js_layer->decoder); - JS_RemoveRoot(cx, &js_layer->name); - - map = lm_GetIdToObjectMap(js_layer->decoder); - if (map) - PR_HashTableRemove(map, LM_GET_MAPPING_KEY(LM_LAYERS, 0, js_layer->layer_id)); - - JS_RemoveRoot(cx, &js_layer->sibling_above); - JS_RemoveRoot(cx, &js_layer->sibling_below); - XP_FREEIF(js_layer->source_url); - if (js_layer->principals) { - JSPRINCIPALS_DROP(cx, js_layer->principals); - } - JS_free(cx, js_layer); -} - -JSBool layer_check_access(JSContext *cx, JSObject *obj, jsval id, - JSAccessMode mode, jsval *vp) -{ - if(mode == JSACC_PARENT) { - return lm_CheckSetParentSlot(cx, obj, id, vp); - } - return JS_TRUE; -} - -JSClass lm_layer_class = { - "Layer", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, layer_getProperty, layer_setProperty, - JS_EnumerateStub, layer_resolve_name, JS_ConvertStub, layer_finalize, - NULL, layer_check_access -}; - -/* JS native method: - - Translate layer to given XY coordinates, e.g. - document.layers[0].moveto(1, 3); */ -static JSBool -move_layer(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval, PRBool is_absolute) -{ - int32 x, y; - JSLayer *js_layer; - MochaDecoder *decoder; - jsval val; - CL_Layer *layer; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - - /* Some layers have mostly read-only properties because we - don't want a malicious/careless JS author to modify them, - e.g. for layers that are used to encapulate a mail - message. In such cases, we fail silently. */ - if (js_layer->properties_locked) - return JS_TRUE; - - decoder = js_layer->decoder; - - LO_LockLayout(); - if(!decoder->window_context || - decoder->doc_id != XP_DOCID(decoder->window_context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - layer = LO_GetLayerFromId(decoder->window_context, js_layer->layer_id); - if (!layer) - goto error_exit; - if (argc != 2) { - JS_ReportError(cx, lm_argc_err_str); - goto error_exit; - } - if (!JS_ValueToInt32(cx, argv[0], &x) || - !JS_ValueToInt32(cx, argv[1], &y)) { - goto error_exit; - } - - if (is_absolute) { - CL_Layer *parent_layer = CL_GetLayerParent(layer); - x -= CL_GetLayerXOrigin(parent_layer); - y -= CL_GetLayerYOrigin(parent_layer); - } - - /* If a layer is moving, it will probably look better if it - utilizes offscreen compositing. */ - CL_ChangeLayerFlag(layer, CL_PREFER_DRAW_OFFSCREEN, PR_TRUE); - LO_MoveLayer(layer, x, y); - - /* - * Record that we've side-effected left and top. We do a DefineProperty - * to mutate the property and ensure that we have a unique slot per-object. - */ - if (!LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_LEFT)) { - JS_DefinePropertyWithTinyId(cx, obj, lm_left_str, LAYER_LEFT, - INT_TO_JSVAL(x), layer_getProperty, - layer_setProperty, JSPROP_ENUMERATE); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_LEFT); - } - else - JS_GetProperty(cx, obj, lm_left_str, &val); - if (!LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_TOP)) { - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_TOP); - JS_DefinePropertyWithTinyId(cx, obj, lm_top_str, LAYER_TOP, - INT_TO_JSVAL(y), layer_getProperty, - layer_setProperty, JSPROP_ENUMERATE); - } - else - JS_GetProperty(cx, obj, lm_top_str, &val); - - LO_UnlockLayout(); - return JS_TRUE; - - error_exit: - LO_UnlockLayout(); - return JS_FALSE; -} - -/* JS native method: - - Translate layer to given XY coordinates relative to BODY document origin, e.g. - document.layers[0].moveto(1, 3); */ -PR_STATIC_CALLBACK(JSBool) -move_layer_abs(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return move_layer(cx, obj, argc, argv, rval, PR_TRUE); -} - -/* JS native method: - - Translate layer to given XY coordinates relative to parent_layer, e.g. - document.layers[0].moveto(1, 3); */ -PR_STATIC_CALLBACK(JSBool) -move_layer_rel(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return move_layer(cx, obj, argc, argv, rval, PR_FALSE); -} - -/* JS native method: - - Stack layer above argument layer, e.g. - document.layers[0].moveAbove(document.layers[2]); */ -static JSBool -change_layer_stacking(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval, - CL_LayerPosition position) -{ - int32 sibling_parent_layer_id; - JSLayer *js_layer, *sibling_js_layer; - JSObject *sibling_obj; - MochaDecoder *decoder; - CL_Layer *layer, *sibling_layer, *parent, *sibling_layer_parent; - char *new_sibling_name; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - decoder = js_layer->decoder; - - if (argc != 1) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - if (!JS_ValueToObject(cx, argv[0], &sibling_obj)) - return JS_FALSE; - - /* no-op */ - if (!sibling_obj) - return JS_TRUE; - - /* could be an object of another class. */ - if (!JS_InstanceOf(cx, sibling_obj, &lm_layer_class, argv)) - return JS_FALSE; - - sibling_js_layer = JS_GetPrivate(cx, sibling_obj); - if (!sibling_js_layer) - return JS_TRUE; - - LO_LockLayout(); - if(decoder->doc_id != XP_DOCID(decoder->window_context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - layer = LO_GetLayerFromId(decoder->window_context, js_layer->layer_id); - sibling_layer = LO_GetLayerFromId(decoder->window_context, - sibling_js_layer->layer_id); - parent = CL_GetLayerParent(layer); - sibling_layer_parent = CL_GetLayerParent(sibling_layer); - - sibling_parent_layer_id = LO_GetIdFromLayer(decoder->window_context, - sibling_layer_parent); - if (IS_MESSAGE_WINDOW(decoder->window_context) && - (sibling_parent_layer_id == LO_DOCUMENT_LAYER_ID)) { - LO_UnlockLayout(); - JS_ReportError(cx, - "Disallowed attempt to manipulate top-level layer" - " in a message window"); - return JS_FALSE; - } - - if (layer == sibling_layer) { - LO_UnlockLayout(); - JS_ReportError(cx, "Cannot stack a Layer above or beneath itself"); - return JS_FALSE; - } - - /* It shouldn't be possible to be passed the - compositor's root layer. */ - XP_ASSERT(parent); - XP_ASSERT(sibling_layer_parent); - if (!sibling_layer_parent || !parent) { - LO_UnlockLayout(); - return JS_FALSE; - } - - /* If a layer is dynamically changing, it will probably look - better if it utilizes offscreen compositing. */ - CL_ChangeLayerFlag(layer, CL_PREFER_DRAW_OFFSCREEN, PR_TRUE); - - CL_RemoveChild(parent, layer); - CL_InsertChild(sibling_layer_parent, layer, - sibling_layer, position); - - /* - * Now store the sibling's name. Note that preservation of zindex, - * sibling_above and sibling_below are mutually exclusive, so if - * we set one, the others are cleared. - */ - LM_CLEAR_LAYER_MODIFICATION(js_layer, LAYER_MOD_ZINDEX); - if (position == CL_ABOVE) { - LM_CLEAR_LAYER_MODIFICATION(js_layer, LAYER_MOD_SIB_ABOVE); - new_sibling_name = CL_GetLayerName(sibling_layer); - if (new_sibling_name) { - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_SIB_BELOW); - js_layer->sibling_below = JS_NewStringCopyZ(cx, new_sibling_name); - } - } - - if (position == CL_BELOW) { - LM_CLEAR_LAYER_MODIFICATION(js_layer, LAYER_MOD_SIB_BELOW); - new_sibling_name = CL_GetLayerName(sibling_layer); - if (new_sibling_name) { - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_SIB_ABOVE); - js_layer->sibling_above = JS_NewStringCopyZ(cx, new_sibling_name); - } - } - - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -move_above(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return change_layer_stacking(cx, obj, argc, argv, rval, CL_ABOVE); -} - -PR_STATIC_CALLBACK(JSBool) -move_below(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return change_layer_stacking(cx, obj, argc, argv, rval, CL_BELOW); -} - -/* JS native method: - - Translate layer by given XY offset, e.g. - document.layers[0].offset(1, 3); */ -PR_STATIC_CALLBACK(JSBool) -offset_layer(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - int32 x, y; - JSLayer *js_layer; - MochaDecoder *decoder; - CL_Layer *layer; - jsval val; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - decoder = js_layer->decoder; - - /* Some layers have mostly read-only properties because we - don't want a malicious/careless JS author to modify them, - e.g. for layers that are used to encapulate a mail - message. In such cases, we fail silently. */ - if (js_layer->properties_locked) - return JS_TRUE; - - LO_LockLayout(); - if(!decoder->window_context || - decoder->doc_id != XP_DOCID(decoder->window_context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - layer = LO_GetLayerFromId(decoder->window_context, js_layer->layer_id); - if (!layer) - goto error_exit; - - if (argc != 2) { - JS_ReportError(cx, lm_argc_err_str); - goto error_exit; - } - if (!JS_ValueToInt32(cx, argv[0], &x) || - !JS_ValueToInt32(cx, argv[1], &y)) { - goto error_exit; - } - - /* If a layer is dynamically changing, it will probably look - better if it utilizes offscreen compositing. */ - CL_ChangeLayerFlag(layer, CL_PREFER_DRAW_OFFSCREEN, PR_TRUE); - - CL_OffsetLayer(layer, (int32) x, (int32) y); - - /* We record that we've mutated left and top */ - if (!LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_LEFT)) { - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_LEFT); - JS_GetProperty(cx, obj, lm_left_str, &val); - JS_DefinePropertyWithTinyId(cx, obj, lm_left_str, LAYER_LEFT, val, - layer_getProperty, layer_setProperty, - JSPROP_ENUMERATE); - } - else - JS_GetProperty(cx, obj, lm_left_str, &val); - if (!LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_TOP)) { - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_TOP); - JS_GetProperty(cx, obj, lm_top_str, &val); - JS_DefinePropertyWithTinyId(cx, obj, lm_top_str, LAYER_TOP, val, - layer_getProperty, layer_setProperty, - JSPROP_ENUMERATE); - } - else - JS_GetProperty(cx, obj, lm_top_str, &val); - - LO_UnlockLayout(); - return JS_TRUE; - - error_exit: - LO_UnlockLayout(); - return JS_FALSE; -} - -#define CLEAR_LAYER_EXPANSION_POLICY(layer, bits) \ - lo_SetLayerClipExpansionPolicy(layer, \ - lo_GetLayerClipExpansionPolicy(layer) & ~(bits)) - -PRIVATE JSBool -resize_layer_common(JSContext *cx, JSObject *obj, CL_Layer *layer, - int32 width, int32 height) -{ - JSLayer *js_layer; - MochaDecoder * decoder; - JSObject *clip; - jsval val; - - if (!(js_layer = JS_GetPrivate(cx, obj))) - return JS_FALSE; - - /* Some layers have mostly read-only properties because we - don't want a malicious/careless JS author to modify them, - e.g. for layers that are used to encapulate a mail - message. In such cases, we fail silently. */ - if (js_layer->properties_locked) - return JS_TRUE; - - decoder = js_layer->decoder; - - /* If a layer is dynamically changing, it will probably look - better if it utilizes offscreen compositing. */ - CL_ChangeLayerFlag(layer, CL_PREFER_DRAW_OFFSCREEN, PR_TRUE); - - CL_ResizeLayer(layer, (int32) width, (int32) height); - - CLEAR_LAYER_EXPANSION_POLICY(layer, - LO_AUTO_EXPAND_CLIP_BOTTOM | LO_AUTO_EXPAND_CLIP_RIGHT); - if (JS_LookupProperty(cx, obj, lm_clip_str, &val) && - JSVAL_IS_OBJECT(val)) { - clip = JSVAL_TO_OBJECT(val); - if (!LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_RIGHT)) { - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_RIGHT); - JS_DefinePropertyWithTinyId(cx, clip, lm_right_str, RECT_RIGHT, - INT_TO_JSVAL(width), rect_getProperty, - rect_setProperty, JSPROP_ENUMERATE); - } - else { - JS_GetProperty(cx, clip, lm_right_str, &val); - } - - if (!LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_BOTTOM)) { - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_BOTTOM); - JS_DefinePropertyWithTinyId(cx, clip, lm_bottom_str, RECT_BOTTOM, - INT_TO_JSVAL(height), rect_getProperty, - rect_setProperty, JSPROP_ENUMERATE); - } - else { - JS_GetProperty(cx, clip, lm_bottom_str, &val); - } - } - - return JS_TRUE; -} - - -PR_STATIC_CALLBACK(JSBool) -resize_layer_to(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - int32 x, y; - JSLayer *js_layer; - MochaDecoder * decoder; - CL_Layer *layer; - JSBool ret; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - decoder = js_layer->decoder; - - LO_LockLayout(); - if(!decoder->window_context || - decoder->doc_id != XP_DOCID(decoder->window_context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - layer = LO_GetLayerFromId(decoder->window_context, js_layer->layer_id); - if (!layer) - goto error_exit; - - if (argc != 2) { - JS_ReportError(cx, lm_argc_err_str); - goto error_exit; - } - if (!JS_ValueToInt32(cx, argv[0], &x) || - !JS_ValueToInt32(cx, argv[1], &y)) { - goto error_exit; - } - - ret = resize_layer_common(cx, obj, layer, x, y); - - LO_UnlockLayout(); - return ret; - - error_exit: - LO_UnlockLayout(); - return JS_FALSE; -} - -PR_STATIC_CALLBACK(JSBool) -resize_layer_by(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - int32 x, y; - JSLayer *js_layer; - MochaDecoder * decoder; - CL_Layer *layer; - XP_Rect bbox; - JSBool ret; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - decoder = js_layer->decoder; - - LO_LockLayout(); - if(!decoder->window_context || - decoder->doc_id != XP_DOCID(decoder->window_context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - layer = LO_GetLayerFromId(decoder->window_context, js_layer->layer_id); - if (!layer) - goto error_exit; - if (argc != 2) { - JS_ReportError(cx, lm_argc_err_str); - goto error_exit; - } - if (!JS_ValueToInt32(cx, argv[0], &x) || - !JS_ValueToInt32(cx, argv[1], &y)) { - goto error_exit; - } - - CL_GetLayerBbox(layer, &bbox); - - ret = resize_layer_common(cx, obj, layer, - (bbox.right - bbox.left + x), - (bbox.bottom - bbox.top + y)); - - LO_UnlockLayout(); - return ret; - - error_exit: - LO_UnlockLayout(); - return JS_FALSE; -} - - -PR_STATIC_CALLBACK(JSBool) -load_layer(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - jsdouble width; - JSLayer *js_layer; - MochaDecoder * decoder; - char *url; - JSBool ret; - const char *referer; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - - /* Some layers have mostly read-only properties because we - don't want a malicious/careless JS author to modify them, - e.g. for layers that are used to encapulate a mail - message. In such cases, we fail silently. */ - if (js_layer->properties_locked) - return JS_TRUE; - - decoder = js_layer->decoder; - if (argc != 2) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - - if ((!JSVAL_IS_STRING(argv[0]) && - !JS_ConvertValue(cx, argv[0], JSTYPE_STRING, &argv[0])) || - !JS_ValueToNumber(cx, argv[1], &width)) - return JS_FALSE; - - url = JS_GetStringBytes(JSVAL_TO_STRING(argv[0])); - url = (char *)lm_CheckURL(cx, url, JS_TRUE); - if (! url) - return JS_FALSE; - - referer = lm_GetSubjectOriginURL(cx); - if (! referer) { - XP_FREE(url); - return JS_FALSE; - } - - ret = (JSBool)ET_TweakLayer(decoder->window_context, NULL, - (int32)width, 0, - (void *)url, js_layer->layer_id, - CL_SetSrcWidth, referer, - decoder->doc_id); - - *rval = BOOLEAN_TO_JSVAL(ret); - - if (ret) { - lm_NewLayerDocument(decoder, js_layer->layer_id); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_WIDTH); - js_layer->width = (int32)width; - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_SRC); - XP_FREEIF(js_layer->source_url); - js_layer->source_url = url; - decoder->stream_owner = js_layer->layer_id; - if (js_layer->principals) - JSPRINCIPALS_DROP(cx, js_layer->principals); - js_layer->principals = LM_NewJSPrincipals(NULL, NULL, url); - if (js_layer->principals == NULL) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - JSPRINCIPALS_HOLD(cx, js_layer->principals); - } - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -layer_capture(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSLayer *js_layer; - MochaDecoder * decoder; - jsdouble d; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - decoder = js_layer->decoder; - - if (!decoder->window_context) - return JS_TRUE; - - if (argc != 1) - return JS_TRUE; - - if (!JS_ValueToNumber(cx, argv[0], &d)) - return JS_FALSE; - - js_layer->capturer.event_bit |= (uint32)d; - decoder->window_context->event_bit |= (uint32)d; - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -layer_release(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSLayer *js_layer; - JSEventCapturer *cap; - MochaDecoder *decoder; - jsdouble d; - jsint layer_index; - jsint max_layer_num; - JSObject *cap_obj; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - decoder = js_layer->decoder; - - if (!decoder->window_context) - return JS_TRUE; - - if (argc != 1) - return JS_TRUE; - - if (!JS_ValueToNumber(cx, argv[0], &d)) - return JS_FALSE; - - - js_layer->capturer.event_bit &= ~(uint32)d; - decoder->window_context->event_bit &= ~(uint32)d; - - /*Now we have to see if anyone else wanted that bit set. Joy!*/ - /*First we check versus window */ - decoder->window_context->event_bit |= decoder->event_bit; - - /*Now we check versus layers */ - max_layer_num = LO_GetNumberOfLayers(decoder->window_context); - - for (layer_index=0; layer_index <= max_layer_num; layer_index++) { - cap_obj = LO_GetLayerMochaObjectFromId(decoder->window_context, layer_index); - if (cap_obj && (cap = JS_GetPrivate(cx, cap_obj)) != NULL) - decoder->window_context->event_bit |= cap->event_bit; - - cap_obj = lm_GetDocumentFromLayerId(decoder, layer_index); - if (cap_obj && (cap = JS_GetPrivate(cx, cap_obj)) != NULL) - decoder->window_context->event_bit |= cap->event_bit; - } - - return JS_TRUE; -} - -static PRBool -setExternalCapture(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, JSBool val) -{ - JSLayer *js_layer; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - - if (argc != 0) - return JS_TRUE; - - if (lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - JSPrincipals *principals; - - principals = lm_GetInnermostPrincipals(cx, obj, NULL); - if (principals == NULL) - return JS_FALSE; - - lm_SetExternalCapture(cx, principals, val); - } - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -layer_enable_external_capture(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return setExternalCapture(cx, obj, argc, argv, JS_TRUE); -} - -PR_STATIC_CALLBACK(PRBool) -layer_disable_external_capture(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return setExternalCapture(cx, obj, argc, argv, JS_FALSE); -} - -PR_STATIC_CALLBACK(PRBool) -layer_compromise_principals(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSLayer *js_layer; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - - js_layer->principals_compromised = JS_TRUE; - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -layer_downgrade_principals(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSLayer *js_layer; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - - if (js_layer->principals) - lm_InvalidateCertPrincipals(js_layer->decoder, js_layer->principals); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -layer_initStandardObjects(JSContext *cx, JSObject *obj, uint argc, jsval *argv, - jsval *rval) -{ - JSLayer *js_layer; - - if (!(js_layer = JS_GetInstancePrivate(cx, obj, &lm_layer_class, argv))) - return JS_FALSE; - return (JSBool)(JS_InitStandardClasses(cx, obj) && - lm_DefineWindowProps(cx, js_layer->decoder)); -} - -/* The minimum number of arguments for each of the functions in this - table is set to zero, so that argc is the actual number of arguments - passed by the user. */ -static JSFunctionSpec layer_methods[] = { - {"offset", offset_layer, 0}, - {"moveBy", offset_layer, 0}, - {"moveTo", move_layer_rel, 0}, - {"moveToAbsolute", move_layer_abs, 0}, - {"resize", resize_layer_to, 0}, - {"resizeTo", resize_layer_to, 0}, - {"resizeBy", resize_layer_by, 0}, - {"moveAbove", move_above, 0}, - {"moveBelow", move_below, 0}, - {"load", load_layer, 0}, - {"captureEvents", layer_capture, 0}, - {"releaseEvents", layer_release, 0}, - {"enableExternalCapture", layer_enable_external_capture, 0 }, - {"disableExternalCapture", layer_disable_external_capture, 0 }, - {"compromisePrincipals", layer_compromise_principals, 0 }, - {"downgradePrincipals", layer_downgrade_principals, 0 }, - {"initStandardObjects", layer_initStandardObjects, 0}, - {0} -}; - -static JSObject * -lm_reflect_layer_using_existing_obj(MWContext *context, - int32 layer_id, - int32 parent_layer_id, - PA_Tag *tag, - JSObject *obj); - -PR_STATIC_CALLBACK(JSBool) -Layer(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSObject *parent_layer_obj = NULL, *window_obj, *enclosing_obj; - JSLayer *js_layer_parent; - int32 wrap_width = 0; - int32 parent_layer_id, layer_id; - MochaDecoder *decoder; - MWContext *context; - - XP_ASSERT(JS_InstanceOf(cx, obj, &lm_layer_class, NULL)); - - /* XXX - Hack to force constructor not to allocate any layers */ - if (argc == 0) - return JS_TRUE; - - if (argc < 1) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - - /* Mandatory first argument is layer's wrap width. */ - if (!JS_ValueToInt32(cx, argv[0], &wrap_width)) - return JS_FALSE; - - /* By default, we're creating the layer for the current window. */ - window_obj = JS_GetGlobalObject(cx); - - /* Get enclosing window or layer of the code that calls the constructor. */ - parent_layer_id = LO_DOCUMENT_LAYER_ID; /* Default */ - enclosing_obj = JS_GetScopeChain(cx); - while (enclosing_obj) { - if (JS_InstanceOf(cx, enclosing_obj, &lm_layer_class, 0)) { - js_layer_parent = JS_GetPrivate(cx, enclosing_obj); - parent_layer_id = js_layer_parent->layer_id; - break; - } - if (JS_InstanceOf(cx, enclosing_obj, &lm_window_class, 0)) - break; - enclosing_obj = JS_GetParent(cx, enclosing_obj); - } - /* Optional second argument is parent layer */ - if (argc >= 2) { - /* The parent has to be an object */ - if ((JS_TypeOfValue(cx, argv[1]) == JSTYPE_OBJECT) && - ((parent_layer_obj = JSVAL_TO_OBJECT(argv[1])) != NULL)) { - /* If the parent is a layer, we get its layer_id */ - if (JS_InstanceOf(cx, parent_layer_obj, &lm_layer_class, 0)) { - js_layer_parent = JS_GetPrivate(cx, parent_layer_obj); - parent_layer_id = js_layer_parent->layer_id; - decoder = js_layer_parent->decoder; - window_obj = decoder->window_object; - } - /* - * If the parent is another window, the new layer is created - * in that window's context as a top-level layer. - */ - else if (JS_InstanceOf(cx, parent_layer_obj, - &lm_window_class, 0)) { - parent_layer_id = LO_DOCUMENT_LAYER_ID; - window_obj = parent_layer_obj; - } - else - return JS_FALSE; - } else { - return JS_FALSE; - } - } - - decoder = JS_GetPrivate(cx, window_obj); - context = decoder->window_context; - - /* From a security standpoint, it's dangerous to allow new - top-level layers to be created in a mail/news window. */ - if (IS_MESSAGE_WINDOW(context) && - (parent_layer_id == LO_DOCUMENT_LAYER_ID)) { - JS_ReportError(cx, - "Disallowed attempt to create new top-level layer" - " in a message window"); - return JS_FALSE; - } - - layer_id = ET_PostCreateLayer(context, wrap_width, parent_layer_id); - - /* Zero-valued return means layout/parser stream is busy. A -1 - return indicates error. */ - if (!layer_id || layer_id == -1) - return JS_FALSE; - - /* Reflect the layer, but don't create a new object parented by - the layers array. Rather, use the object that we're - constructing now. */ - obj = lm_reflect_layer_using_existing_obj(context, layer_id, - parent_layer_id, NULL, obj); - if (!obj) - return JS_FALSE; - return JS_TRUE; -} - -static JSObject * -lm_init_layer_clip(MochaDecoder *decoder, - int32 layer_id, - JSObject *parent_layer_obj); - -void -lm_RestoreLayerState(MWContext *context, int32 layer_id, - LO_BlockInitializeStruct *param) -{ - PRHashTable *map; - MochaDecoder *decoder; - JSContext *cx; - JSLayer *js_layer; - JSObject *obj, *clip_obj; - jsval val; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) /* Paranoia */ - return; - cx = decoder->js_context; - - /* - * Get the mocha object associated with this layer, since it's been - * preserved across a resize_relayout. - */ - map = lm_GetIdToObjectMap(decoder); - if (map) - obj = (JSObject *)PR_HashTableLookup(map, - LM_GET_MAPPING_KEY(LM_LAYERS, 0, layer_id)); - if (!obj) - goto out; - - js_layer = JS_GetPrivate(cx, obj); - if (!js_layer) - goto out; - - /* - * For each property that was modified, set the value for the - * corresponding attribute in the param struct. - */ - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_LEFT) && - JS_LookupProperty(cx, obj, lm_left_str, &val)) { - param->has_left = TRUE; - param->left = JSVAL_TO_INT(val); - } - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_TOP) && - JS_LookupProperty(cx, obj, lm_top_str, &val)) { - param->has_top = TRUE; - param->top = JSVAL_TO_INT(val); - } - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_WIDTH)) { - param->has_width = TRUE; - param->width = js_layer->width; - } - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_SIB_ABOVE)) { - XP_FREEIF(param->above); - param->above = XP_STRDUP(JS_GetStringBytes(js_layer->sibling_above)); - } - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_SIB_BELOW)) { - XP_FREEIF(param->below); - param->below = XP_STRDUP(JS_GetStringBytes(js_layer->sibling_below)); - } - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_ZINDEX) && - JS_LookupProperty(cx, obj, lm_zindex_str, &val)) { - param->has_zindex = TRUE; - param->zindex = JSVAL_TO_INT(val); - } - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_VISIBILITY) && - JS_LookupProperty(cx, obj, lm_visibility_str, &val)) { - XP_FREEIF(param->visibility); - param->visibility = XP_STRDUP(JS_GetStringBytes(JSVAL_TO_STRING(val))); - } - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_BGCOLOR) && - JS_LookupProperty(cx, obj, lm_bgcolor_str, &val)) { - XP_FREEIF(param->bgcolor); - param->is_style_bgcolor = FALSE; - param->bgcolor = XP_ALLOC(10); - PR_snprintf(param->bgcolor, 10, "%x", JSVAL_TO_INT(val)); - } - - lm_really_resolve_layer = FALSE; - if (JS_LookupProperty(cx, obj, lm_background_str, &val) && - JSVAL_IS_OBJECT(val)) { - JSObject *background; - - if (JS_ValueToObject(cx, val, &background) && background && - JS_LookupProperty(cx, background, "src", &val) && - JSVAL_IS_STRING(val)) { - XP_FREEIF(param->bgimage); - param->bgimage = XP_STRDUP(JS_GetStringBytes(JSVAL_TO_STRING(val))); - } - } - lm_really_resolve_layer = TRUE; - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_SRC) && - js_layer->source_url) { - XP_FREEIF(param->src); - param->src = XP_STRDUP(js_layer->source_url); - } - - if (JS_LookupProperty(cx, obj, lm_clip_str, &val) && - JSVAL_IS_OBJECT(val)) { - clip_obj = JSVAL_TO_OBJECT(val); - if (!clip_obj) - goto out; - - if (!param->clip && - (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_LEFT) || - LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_RIGHT) || - LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_BOTTOM) || - LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_TOP))) { - param->clip = XP_NEW_ZAP(XP_Rect); - if (!param->clip) - goto out; - } - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_LEFT) && - JS_LookupProperty(cx, clip_obj, lm_left_str, &val)) { - param->clip->left = JSVAL_TO_INT(val); - param->clip_expansion_policy &= ~LO_AUTO_EXPAND_CLIP_LEFT; - } - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_RIGHT) && - JS_LookupProperty(cx, clip_obj, lm_right_str, &val)) { - param->clip->right = JSVAL_TO_INT(val); - param->clip_expansion_policy &= ~LO_AUTO_EXPAND_CLIP_RIGHT; - } - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_TOP) && - JS_LookupProperty(cx, clip_obj, lm_top_str, &val)) { - param->clip->top = JSVAL_TO_INT(val); - param->clip_expansion_policy &= ~LO_AUTO_EXPAND_CLIP_TOP; - } - - if (LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_BOTTOM) && - JS_LookupProperty(cx, clip_obj, lm_bottom_str, &val)) { - param->clip->bottom = JSVAL_TO_INT(val); - param->clip_expansion_policy &= ~LO_AUTO_EXPAND_CLIP_BOTTOM; - } - } - -out: - LM_PutMochaDecoder(decoder); - return; -} - -static void -lm_process_layer_tag(MochaDecoder *decoder, PA_Tag *tag, JSObject *obj) -{ - MWContext *context = decoder->window_context; - PA_Block onload, onunload, onmouseover, onmouseout, onblur, onfocus, id; - PA_Block properties_locked; - JSLayer *js_layer; - JSContext *cx; - char *source_url; - - cx = decoder->js_context; - js_layer = JS_GetPrivate(cx, obj); - if (!js_layer) - return; - - if (tag) { - onload = lo_FetchParamValue(context, tag, PARAM_ONLOAD); - onunload = lo_FetchParamValue(context, tag, PARAM_ONUNLOAD); - onmouseover = lo_FetchParamValue(context, tag, PARAM_ONMOUSEOVER); - onmouseout = lo_FetchParamValue(context, tag, PARAM_ONMOUSEOUT); - onblur = lo_FetchParamValue(context, tag, PARAM_ONBLUR); - onfocus = lo_FetchParamValue(context, tag, PARAM_ONFOCUS); - id = lo_FetchParamValue(context, tag, PARAM_ID); - properties_locked = lo_FetchParamValue(context, tag, PARAM_LOCKED); - - /* don't hold the layout lock across compiles */ - LO_UnlockLayout(); - - if (properties_locked) { - js_layer->properties_locked = PR_TRUE; - PA_FREE(properties_locked); - } - - if (onload != NULL) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONLOAD, onload); - PA_FREE(onload); - } - - if (onunload != NULL) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONUNLOAD, onunload); - PA_FREE(onunload); - } - - if (onmouseover != NULL) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONMOUSEOVER, onmouseover); - PA_FREE(onmouseover); - } - - if (onmouseout != NULL) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONMOUSEOUT, onmouseout); - PA_FREE(onmouseout); - } - - if (onblur != NULL) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONBLUR, onblur); - PA_FREE(onblur); - } - - if (onfocus != NULL) { - (void) lm_CompileEventHandler(decoder, id, tag->data, - tag->newline_count, obj, - PARAM_ONFOCUS, onfocus); - PA_FREE(onfocus); - } - - if (id) - PA_FREE(id); - - LO_LockLayout(); - - source_url = (char*)lo_FetchParamValue(context, tag, - PARAM_SRC); - - if (source_url) { - /* - * Temporarily unlock layout so that we don't hold the lock - * across a call (lm_CheckURL) that may result in - * synchronous event handling. - */ - LO_UnlockLayout(); - js_layer->source_url = (char *)lm_CheckURL(cx, source_url, - JS_TRUE); - if (js_layer->principals) - JSPRINCIPALS_DROP(cx, js_layer->principals); - js_layer->principals = LM_NewJSPrincipals(NULL, NULL, - js_layer->source_url); - if (js_layer->principals) - JSPRINCIPALS_HOLD(cx, js_layer->principals); - LO_LockLayout(); - } - } -} - - -static JSObject * -lm_reflect_layer_using_existing_obj(MWContext *context, - int32 layer_id, - int32 parent_layer_id, - PA_Tag *tag, - JSObject *obj) -{ - JSObject *array_obj, *clip_obj, *doc_obj; - MochaDecoder *decoder; - JSContext *cx; - JSLayer *js_layer; - char *name = NULL; - uint flags = JSPROP_READONLY; - JSBool bFreeName = JS_FALSE; - static fake_layer_count = 0; - CL_Layer *layer; - lo_TopState *top_state; - PRHashTable *map; - jsval existing_layer; - char *newname = NULL; - JSLayer *existing_js_layer; - JSObject *existing_layer_object; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - - if (!obj) { - obj = LO_GetLayerMochaObjectFromId(context, layer_id); - if (obj) { /* Already reflected ? */ - /* - * We might already have been reflected by someone other than the - * layer tag processing code (e.g. as a result of entity - * processing). In that case, we just process the tag if it - * exists. - */ - if (tag) - lm_process_layer_tag(decoder, tag, obj); - LM_PutMochaDecoder(decoder); - return obj; - } - } - - cx = decoder->js_context; - - top_state = lo_GetMochaTopState(context); - if (!obj && top_state->resize_reload && !decoder->load_event_sent) { - map = lm_GetIdToObjectMap(decoder); - - if (map) - obj = (JSObject *)PR_HashTableLookup(map, - LM_GET_MAPPING_KEY(LM_LAYERS, 0, layer_id)); - if (obj) { - LO_SetLayerMochaObject(context, layer_id, obj); - LM_PutMochaDecoder(decoder); - return obj; - } - } - - /* Layer is accessible by name in child array of parent layer. - For example a layer named "Fred" could be accessed as - document.layers["Fred"] if it is a child of the distinguished - _DOCUMENT layer. */ - if (parent_layer_id == LO_DOCUMENT_LAYER_ID) - array_obj = lm_GetDocumentLayerArray(decoder, decoder->document); - else - array_obj = - lm_GetLayerArray(decoder, - LO_GetLayerMochaObjectFromId(context, - parent_layer_id)); - if (!array_obj) { - LM_PutMochaDecoder(decoder); - return NULL; - } - - js_layer = JS_malloc(cx, sizeof *js_layer); - if (!js_layer) { - LM_PutMochaDecoder(decoder); - return NULL; - } - XP_BZERO(js_layer, sizeof *js_layer); - - if (!obj) { - obj = JS_NewObject(cx, &lm_layer_class, decoder->layer_prototype, - array_obj); - } else { - /* Anonymous layers, created with the "new" operator, are - scoped by their parent layer's document */ - JS_SetParent(cx, obj, array_obj); - } - - LO_SetLayerMochaObject(context, layer_id, obj); - - /* Put it in the index to object hash table */ - map = lm_GetIdToObjectMap(decoder); - if (map) - PR_HashTableAdd(map, - LM_GET_MAPPING_KEY(LM_LAYERS, 0, layer_id), - obj); - - if (obj) - clip_obj = lm_init_layer_clip(decoder, layer_id, obj); - - if (obj && clip_obj) - doc_obj = lm_DefineDocument(decoder, layer_id); - - if (!obj || !clip_obj || !doc_obj || !JS_SetPrivate(cx, obj, js_layer)) { - JS_free(cx, js_layer); - LM_PutMochaDecoder(decoder); - return NULL; - } - - JS_AddNamedRoot(cx, &js_layer->sibling_above, "layer.sibling_above"); - JS_AddNamedRoot(cx, &js_layer->sibling_below, "layer.sibling_below"); - - layer = LO_GetLayerFromId(context, layer_id); - if (layer) - name = CL_GetLayerName(layer); - if (name) { - flags |= JSPROP_ENUMERATE; - } else { - name = PR_smprintf("_js_layer_%d", fake_layer_count++); - bFreeName = JS_TRUE; - if (!name) { - LM_PutMochaDecoder(decoder); - return NULL; - } - } - - /* XXXMLM - There's a problem where a user creates two layers that - * have the same parent and the same name. What used to - * happen was that JS_DefineProperty would simply overwrite - * the old property, causing the old property to become - * unrooted, and therefore freed the next time the GC was - * run. Since the CL_Layer keeps a mocha_object pointer - * around, the pointer was stale as soon as the GC was - * run, and it would crash. - * - * We need a function JS_HasProperty so we can figure out - * if the property has been defined yet, without resolving - * the property through native code. We don't have the - * function yet, so we take the backwards approach - if - * we know we're trying to find a property without resolving - * it, we set a static boolean that our resolving function - * sees and knows not to do the resolution. - */ - layer_array_should_resolve = JS_FALSE; - if(!JS_LookupProperty(cx, array_obj, name, &existing_layer)) { - layer_array_should_resolve = JS_TRUE; - obj = NULL; - goto out; - } - layer_array_should_resolve = JS_TRUE; - if(JSVAL_IS_OBJECT(existing_layer)) { - /* Hrmph. Okay, rename the old one. */ - existing_layer_object = JSVAL_TO_OBJECT(existing_layer); - if(!existing_layer_object) { - obj = NULL; - goto out; - } - existing_js_layer = JS_GetPrivate(cx, existing_layer_object); - if(!existing_js_layer) { - obj = NULL; - goto out; - } - - newname = PR_smprintf("%s_%d", name, fake_layer_count++); - if(!newname) { - obj = NULL; - goto out; - } - - existing_js_layer->name = JS_NewStringCopyZ(cx, newname); - - JS_DefineProperty(cx, array_obj, newname, - OBJECT_TO_JSVAL(existing_layer_object), - NULL, NULL, flags); - XP_FREE(newname); - } - - if (name && - !JS_DefineProperty(cx, array_obj, name, OBJECT_TO_JSVAL(obj), - NULL, NULL, flags)) { - LM_PutMochaDecoder(decoder); - if (bFreeName) - XP_FREE(name); - return NULL; - } - - js_layer->decoder = HOLD_BACK_COUNT(decoder); - js_layer->layer_id = layer_id; - js_layer->name = JS_NewStringCopyZ(cx, name); - js_layer->source_url = NULL; - if (!JS_AddRoot(cx, &js_layer->name)) { - LM_PutMochaDecoder(decoder); - if (bFreeName) - XP_FREE(name); - return NULL; - } - - if(tag) - lm_process_layer_tag(decoder, tag, obj); - -out: - LM_PutMochaDecoder(decoder); - - if (bFreeName) - XP_FREE(name); - - return obj; -} - -JSObject * -LM_ReflectLayer(MWContext *context, int32 layer_id, int32 parent_layer_id, - PA_Tag *tag) -{ - return lm_reflect_layer_using_existing_obj(context, layer_id, - parent_layer_id, tag, NULL); -} - -JSObject * -lm_GetNamedLayer(MochaDecoder *decoder, int32 parent_layer_id, - const char *name) -{ - MWContext *context = decoder->window_context; - lo_TopState *top_state; - CL_Layer *layer, *parent_layer; - int32 layer_id; - JSObject *layer_obj = NULL; - - LO_LockLayout(); - - top_state = lo_GetMochaTopState(context); - if (top_state == NULL) - goto done; - - if(!context || decoder->doc_id != XP_DOCID(context)) - goto done; - - /* Get the parent layer (the owner of this array) */ - parent_layer = LO_GetLayerFromId(context, parent_layer_id); - if (!parent_layer) - goto done; - - /* Search for the child layer by name */ - layer = CL_GetLayerChildByName(parent_layer, (char *)name); - if (!layer) - goto done; - - /* Reflect the child layer if it hasn't been reflected yet */ - layer_id = LO_GetIdFromLayer(context, layer); - layer_obj = LM_ReflectLayer(context, layer_id, - parent_layer_id, - NULL); - done: - LO_UnlockLayout(); - return layer_obj; -} - -void -lm_NewLayerDocument(MochaDecoder *decoder, int32 layer_id) -{ - JSObject *layer_obj, *doc_obj, *layer_array_obj; - JSLayer *js_layer; - JSContext *cx; - jsval layer_array_jsval; - - cx = decoder->js_context; - - LO_LockLayout(); - - layer_obj = LO_GetLayerMochaObjectFromId(decoder->window_context, - layer_id); - if (!layer_obj) { - LO_UnlockLayout(); - return; - } - - js_layer = JS_GetPrivate(cx, layer_obj); - if (!js_layer) { - LO_UnlockLayout(); - return; - } - - /* Throw away the child_layers_array */ - js_layer->child_layers_array_obj = NULL; - - /* Reset security status, clear watchpoints to close security holes. */ - /* XXX must clear scope or evil.org's functions/vars persist into signed - script doc loaded from victim.com! */ - js_layer->principals_compromised = JS_FALSE; - JS_ClearWatchPointsForObject(cx, layer_obj); - - /* - * Clean out a document i.e. clean out the arrays associated with - * the document, but not all its properties. - */ - doc_obj = lm_GetDocumentFromLayerId(decoder, layer_id); - lm_CleanUpDocument(decoder, doc_obj); - - /* We're about to replace the contents of this layer, so sever - all the references to the layer's children, so that they - can be GC'ed. */ - if (JS_LookupProperty(cx, layer_obj, "layers", &layer_array_jsval) && - JSVAL_IS_OBJECT(layer_array_jsval)) { - layer_array_obj = JSVAL_TO_OBJECT(layer_array_jsval); - JS_ClearScope(cx, layer_array_obj); - JS_DefineProperties(cx, layer_array_obj, layer_array_props); - } - LO_UnlockLayout(); -} - -void -lm_SendLayerLoadEvent(MWContext *context, int32 event, int32 layer_id, - JSBool resize_reload) -{ - MochaDecoder *decoder; - JSObject *obj; - JSEvent *pEvent; - jsval rval; - - decoder = context->mocha_context ? LM_GetMochaDecoder(context) : 0; - if (resize_reload) - goto out; - - LO_LockLayout(); - obj = LO_GetLayerMochaObjectFromId(context, layer_id); - LO_UnlockLayout(); - if (!obj) - goto out; - - /* - * XXX Right now, we send the load event when the layer is finished - * laying out, not when all the streams associated with a layer - * are completed. - */ - switch (event) { - case EVENT_LOAD: - case EVENT_UNLOAD: - pEvent = XP_NEW_ZAP(JSEvent); - if (!pEvent) - goto out; - - pEvent->type = event; - - (void) lm_SendEvent(context, obj, pEvent, &rval); - - if (!pEvent->saved) - XP_FREE(pEvent); - break; - case EVENT_ABORT: - break; - default: ; - } - -out: - if (decoder) - LM_PutMochaDecoder(decoder); - return; -} - -void -lm_DestroyLayer(MWContext *context, JSObject *obj) -{ - jsval val; - JSObject *child_doc_obj, *parent_doc_obj, *layer_array_obj; - JSLayer *js_layer; - JSBool ok; - MochaDecoder *decoder; - JSContext *cx; - char *layer_name; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return; - - cx = decoder->js_context; - - if (!JS_GetProperty(cx, obj, lm_document_str, &val) || - !JSVAL_IS_OBJECT(val)) { - goto end; - } - - child_doc_obj = JSVAL_TO_OBJECT(val); - if (!child_doc_obj) - goto end; - - /* If we had a layer called "foo", then there was a "document.foo" - property created in the parent document at the time this layer - was reflected. Get rid of it, so that we can GC the layer - object. */ - layer_array_obj = JS_GetParent(cx, obj); - if (!layer_array_obj) - goto end; - - parent_doc_obj = JS_GetParent(cx, layer_array_obj); - if (!parent_doc_obj) - goto end; - - js_layer = JS_GetPrivate(cx, obj); - layer_name = (char *)JS_GetStringBytes(js_layer->name); - ok = JS_DeleteProperty(cx, parent_doc_obj, layer_name); - XP_ASSERT(ok); - - lm_CleanUpDocumentRoots(decoder, child_doc_obj); - - end: - LM_PutMochaDecoder(decoder); -} - - -/* - * Called to set the source URL as a result of a document.open() on the - * layer's document. - */ -JSBool -lm_SetLayerSourceURL(MochaDecoder *decoder, int32 layer_id, char *url) -{ - MWContext *context; - JSObject *layer_obj; - JSLayer *js_layer; - - context = decoder->window_context; - if (!context) - return JS_FALSE; - - LO_LockLayout(); - layer_obj = LO_GetLayerMochaObjectFromId(context, layer_id); - LO_UnlockLayout(); - if (!layer_obj) - return JS_FALSE; - - js_layer = JS_GetPrivate(decoder->js_context, layer_obj); - if (!js_layer) - return JS_FALSE; - - XP_FREEIF(js_layer->source_url); - js_layer->source_url = XP_STRDUP(url); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_SRC); - decoder->stream_owner = layer_id; - - return JS_TRUE; -} - -const char * -lm_GetLayerOriginURL(JSContext *cx, JSObject *obj) { - JSLayer *js_layer = JS_GetPrivate(cx, obj); - if (js_layer == NULL || js_layer->source_url == NULL) { - return NULL; - } - return js_layer->source_url; - -} - -JSBool -lm_InitLayerClass(MochaDecoder *decoder) -{ - JSContext *cx; - JSObject *prototype; - - cx = decoder->js_context; - prototype = JS_InitClass(cx, decoder->window_object, - decoder->event_capturer_prototype, &lm_layer_class, - Layer, 1, layer_props, layer_methods, NULL, NULL); - if (!prototype) - return JS_FALSE; - decoder->layer_prototype = prototype; - return JS_TRUE; -} - -/* ======================== Rect Class definition ======================= */ - -typedef struct JSRect { - MochaDecoder *decoder; - int32 layer_id; -} JSRect; - - -/* Static compositor rect properties */ -static JSPropertySpec rect_props[] = { - {lm_left_str, RECT_LEFT, JSPROP_ENUMERATE}, - {lm_top_str, RECT_TOP, JSPROP_ENUMERATE}, - {lm_right_str, RECT_RIGHT, JSPROP_ENUMERATE}, - {lm_bottom_str, RECT_BOTTOM, JSPROP_ENUMERATE}, - {"height", RECT_HEIGHT, JSPROP_ENUMERATE}, - {"width", RECT_WIDTH, JSPROP_ENUMERATE}, - {0} -}; - -PR_STATIC_CALLBACK(JSBool) -rect_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - MochaDecoder *decoder; - MWContext *context; - JSRect *js_rect; - XP_Rect bbox; - jsint slot; - CL_Layer *layer; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - js_rect = JS_GetPrivate(cx, obj); - if (!js_rect) - return JS_TRUE; - - decoder = js_rect->decoder; - context = decoder->window_context; - - LO_LockLayout(); - if(!context || decoder->doc_id != XP_DOCID(context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - layer = LO_GetLayerFromId(context, js_rect->layer_id); - if (!layer) { - LO_UnlockLayout(); - return JS_TRUE; - } - - CL_GetLayerBbox(layer, &bbox); - - switch (slot) { - case RECT_LEFT: - *vp = INT_TO_JSVAL(bbox.left); - break; - - case RECT_RIGHT: - *vp = INT_TO_JSVAL(bbox.right); - break; - - case RECT_TOP: - *vp = INT_TO_JSVAL(bbox.top); - break; - - case RECT_BOTTOM: - *vp = INT_TO_JSVAL(bbox.bottom); - break; - - case RECT_WIDTH: - *vp = INT_TO_JSVAL(bbox.right - bbox.left); - break; - - case RECT_HEIGHT: - *vp = INT_TO_JSVAL(bbox.bottom - bbox.top); - break; - - default: - break; - } - - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -rect_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSRect *js_rect; - MochaDecoder *decoder; - MWContext *context; - CL_Layer *layer; - int32 val; - enum rect_slot rect_slot; - jsint slot; - JSObject *layer_obj; - JSLayer *js_layer; - jsval js_val; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - rect_slot = slot = JSVAL_TO_INT(id); - - js_rect = JS_GetPrivate(cx, obj); - if (!js_rect) - return JS_TRUE; - - decoder = js_rect->decoder; - layer = LO_GetLayerFromId(decoder->window_context, js_rect->layer_id); - if (!layer) - return JS_TRUE; - layer_obj = LO_GetLayerMochaObjectFromId(decoder->window_context, - js_rect->layer_id); - if (!layer_obj) - return JS_TRUE; - js_layer = JS_GetPrivate(cx, layer_obj); - if (!js_layer) - return JS_TRUE; - /* Some layers have mostly read-only properties because we - don't want a malicious/careless JS author to modify them, - e.g. for layers that are used to encapulate a mail - message. In such cases, we fail silently. */ - if (js_layer->properties_locked) - return JS_TRUE; - - context = decoder->window_context; - - if (rect_slot == RECT_LEFT || - rect_slot == RECT_RIGHT || - rect_slot == RECT_TOP || - rect_slot == RECT_BOTTOM || - rect_slot == RECT_WIDTH || - rect_slot == RECT_HEIGHT) { - - XP_Rect bbox; - - if (!JS_ValueToInt32(cx, *vp, &val)) - return JS_FALSE; - - LO_LockLayout(); - if(!context || decoder->doc_id != XP_DOCID(context)) { - LO_UnlockLayout(); - return JS_FALSE; - } - - CL_GetLayerBbox(layer, &bbox); - - /* If a layer is dynamically changing, it will probably look - better if it utilizes offscreen compositing. */ - CL_ChangeLayerFlag(layer, CL_PREFER_DRAW_OFFSCREEN, PR_TRUE); - - switch (rect_slot) { - case RECT_LEFT: - bbox.left = (int32)val; - LO_SetLayerBbox(layer, &bbox); - CLEAR_LAYER_EXPANSION_POLICY(layer, LO_AUTO_EXPAND_CLIP_LEFT); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_LEFT); - break; - - case RECT_RIGHT: - bbox.right = (int32)val; - LO_SetLayerBbox(layer, &bbox); - CLEAR_LAYER_EXPANSION_POLICY(layer, LO_AUTO_EXPAND_CLIP_RIGHT); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_RIGHT); - break; - - case RECT_TOP: - bbox.top = (int32)val; - LO_SetLayerBbox(layer, &bbox); - CLEAR_LAYER_EXPANSION_POLICY(layer, LO_AUTO_EXPAND_CLIP_TOP); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_TOP); - break; - - case RECT_BOTTOM: - bbox.bottom = (int32)val; - LO_SetLayerBbox(layer, &bbox); - CLEAR_LAYER_EXPANSION_POLICY(layer, LO_AUTO_EXPAND_CLIP_BOTTOM); - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_BOTTOM); - break; - - case RECT_WIDTH: - bbox.right = bbox.left + (int32)val; - LO_SetLayerBbox(layer, &bbox); - CLEAR_LAYER_EXPANSION_POLICY(layer, LO_AUTO_EXPAND_CLIP_RIGHT); - if (!LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_RIGHT)) { - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_RIGHT); - JS_DefinePropertyWithTinyId(cx, obj, lm_right_str, RECT_RIGHT, - INT_TO_JSVAL(bbox.right), - rect_getProperty, - rect_setProperty, - JSPROP_ENUMERATE); - } - else - JS_GetProperty(cx, obj, lm_right_str, &js_val); - break; - - case RECT_HEIGHT: - bbox.bottom = bbox.top + (int32)val; - LO_SetLayerBbox(layer, &bbox); - CLEAR_LAYER_EXPANSION_POLICY(layer, LO_AUTO_EXPAND_CLIP_BOTTOM); - if (!LM_CHECK_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_BOTTOM)) { - LM_SET_LAYER_MODIFICATION(js_layer, LAYER_MOD_CLIP_BOTTOM); - JS_DefinePropertyWithTinyId(cx, obj, lm_bottom_str, - RECT_BOTTOM, - INT_TO_JSVAL(bbox.bottom), - rect_getProperty, - rect_setProperty, - JSPROP_ENUMERATE); - } - else - JS_GetProperty(cx, obj, lm_bottom_str, &js_val); - break; - } - } - - LO_UnlockLayout(); - return rect_getProperty(cx, obj, id, vp); -} - -PR_STATIC_CALLBACK(void) -rect_finalize(JSContext *cx, JSObject *obj) -{ - JSRect *js_rect; - - js_rect = JS_GetPrivate(cx, obj); - if (!js_rect) - return; - DROP_BACK_COUNT(js_rect->decoder); - JS_free(cx, js_rect); -} - -static JSClass rect_class = { - "Rect", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, rect_getProperty, rect_setProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, rect_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -RectConstructor(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -/* Initialize the 'clip' property of a layer to be a Rect object */ -static JSObject * -lm_init_layer_clip(MochaDecoder *decoder, - int32 layer_id, - JSObject *parent_layer_obj) -{ - JSObject *obj; - JSContext *cx; - JSRect *js_rect; - - cx = decoder->js_context; - - js_rect = JS_malloc(cx, sizeof *js_rect); - if (!js_rect) - return NULL; - js_rect->decoder = NULL; /* in case of error below */ - - obj = JS_NewObject(cx, &rect_class, decoder->rect_prototype, - parent_layer_obj); - if (!obj || !JS_SetPrivate(cx, obj, js_rect)) { - JS_free(cx, js_rect); - return NULL; - } - if (!JS_DefineProperty(cx, parent_layer_obj, lm_clip_str, - OBJECT_TO_JSVAL(obj), - NULL, NULL, JSPROP_ENUMERATE | JSPROP_READONLY)) { - return NULL; - } - - js_rect->decoder = HOLD_BACK_COUNT(decoder); - js_rect->layer_id = layer_id; - return obj; -} - -JSBool -lm_InitRectClass(MochaDecoder *decoder) -{ - JSContext *cx; - JSObject *prototype; - - cx = decoder->js_context; - prototype = JS_InitClass(cx, decoder->window_object, NULL, &rect_class, - RectConstructor, 0, rect_props, NULL, NULL, NULL); - if (!prototype) - return JS_FALSE; - decoder->rect_prototype = prototype; - return JS_TRUE; -} - - -static JSPrincipals ** -getContainerPrincipalsAddress(JSContext *cx, JSObject *container) -{ - JSClass *classp = JS_GetClass(cx, container); - - if (classp == &lm_window_class) { - MochaDecoder *decoder = JS_GetPrivate(cx, container); - return decoder ? &decoder->principals : NULL; - } else if (classp == &lm_layer_class) { - JSLayer *layer = JS_GetPrivate(cx, container); - return layer ? &layer->principals : NULL; - } else { - return NULL; - } -} - -extern JSPrincipals * -lm_GetContainerPrincipals(JSContext *cx, JSObject *container) -{ - JSPrincipals **p = getContainerPrincipalsAddress(cx, container); - return p ? *p : NULL; -} - -extern void -lm_SetContainerPrincipals(JSContext *cx, JSObject *container, - JSPrincipals *principals) -{ - JSPrincipals **p = getContainerPrincipalsAddress(cx, container); - if (p && *p != principals) { - if (*p) { - JSPRINCIPALS_DROP(cx, *p); - } - *p = principals; - JSPRINCIPALS_HOLD(cx, *p); - } -} - - -extern JSObject * -lm_GetActiveContainer(MochaDecoder *decoder) -{ - if (decoder->active_layer_id == LO_DOCUMENT_LAYER_ID) { - /* immediate container is the window */ - return decoder->window_object; - } else { - /* immediate container is a layer */ - JSObject *result; - LO_LockLayout(); - result = LO_GetLayerMochaObjectFromId(decoder->window_context, - decoder->active_layer_id); - LO_UnlockLayout(); - return result; - } -} - -extern JSBool -lm_GetPrincipalsCompromise(JSContext *cx, JSObject *obj) -{ - JSClass *clasp; - MochaDecoder *decoder; - JSLayer *js_layer; - JSBool flag; - - clasp = JS_GetClass(cx, obj); - if (clasp == &lm_window_class) { - decoder = JS_GetPrivate(cx, obj); - flag = (JSBool)decoder->principals_compromised; - } else if (clasp == &lm_layer_class) { - js_layer = JS_GetPrivate(cx, obj); - flag = (JSBool)js_layer->principals_compromised; - } else { - flag = JS_FALSE; - } - return flag; -} diff --git a/mozilla/lib/libmocha/lm_nav.c b/mozilla/lib/libmocha/lm_nav.c deleted file mode 100644 index 2025de4c1b8..00000000000 --- a/mozilla/lib/libmocha/lm_nav.c +++ /dev/null @@ -1,394 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * JS reflection of the Navigator top-level object. - * - * Brendan Eich, 11/16/95 - */ -#include "rosetta.h" -#include "lm.h" -#include "prmem.h" -#ifdef JAVA -#include "java.h" -#endif -#include "gui.h" -#include "prefapi.h" -#include "msgcom.h" - -#include "secnav.h" - -typedef struct JSNavigator { - JSString *userAgent; - JSString *appCodeName; - JSString *appVersion; - JSString *appName; - JSString *appLanguage; - JSString *appPlatform; - JSString *securityPolicy; -} JSNavigator; - -enum nav_slot { - NAV_USER_AGENT = -1, - NAV_APP_CODE_NAME = -2, - NAV_APP_VERSION = -3, - NAV_APP_NAME = -4, - NAV_APP_LANGUAGE = -5, - NAV_APP_PLATFORM = -6, - NAV_SECURITY_POLICY = -7 -}; - -static JSPropertySpec nav_props[] = { - {"userAgent", NAV_USER_AGENT, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"appCodeName", NAV_APP_CODE_NAME, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"appVersion", NAV_APP_VERSION, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"appName", NAV_APP_NAME, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"language", NAV_APP_LANGUAGE, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"platform", NAV_APP_PLATFORM, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"securityPolicy", NAV_SECURITY_POLICY, JSPROP_ENUMERATE | JSPROP_READONLY}, - {0} -}; - -extern JSClass lm_navigator_class; - -PR_STATIC_CALLBACK(JSBool) -nav_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSNavigator *nav; - JSString *str; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - nav = JS_GetInstancePrivate(cx, obj, &lm_navigator_class, NULL); - if (!nav) - return JS_TRUE; - - switch (slot) { - case NAV_USER_AGENT: - str = nav->userAgent; - break; - case NAV_APP_CODE_NAME: - str = nav->appCodeName; - break; - case NAV_APP_VERSION: - str = nav->appVersion; - break; - case NAV_APP_NAME: - str = nav->appName; - break; - case NAV_APP_LANGUAGE: - str = nav->appLanguage; - break; - case NAV_APP_PLATFORM: - str = nav->appPlatform; - break; - case NAV_SECURITY_POLICY: - str = nav->securityPolicy; - break; - - - default: - /* Don't mess with user-defined or method properties. */ - return JS_TRUE; - } - - if (str) - *vp = STRING_TO_JSVAL(str); - else - *vp = JS_GetEmptyStringValue(cx); - return JS_TRUE; -} - - -PR_STATIC_CALLBACK(void) -nav_finalize(JSContext *cx, JSObject *obj) -{ - JSNavigator *nav; - - nav = JS_GetPrivate(cx, obj); - if (!nav) - return; - - JS_UnlockGCThing(cx, nav->userAgent); - JS_UnlockGCThing(cx, nav->appCodeName); - JS_UnlockGCThing(cx, nav->appVersion); - JS_UnlockGCThing(cx, nav->appName); - JS_UnlockGCThing(cx, nav->appLanguage); - JS_UnlockGCThing(cx, nav->appPlatform); - JS_UnlockGCThing(cx, nav->securityPolicy); - XP_DELETE(nav); -} - -JSClass lm_navigator_class = { - "Navigator", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, nav_getProperty, nav_getProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, nav_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Navigator(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -nav_java_enabled(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ -#ifdef JAVA - *rval = BOOLEAN_TO_JSVAL(LJ_GetJavaEnabled()); -#else - *rval = JSVAL_FALSE; -#endif - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -nav_taint_enabled(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - *rval = JSVAL_FALSE; - return JS_TRUE; -} - - -/* - * 1 arg == get pref value - * 2 args == set pref value - */ -PR_STATIC_CALLBACK(JSBool) -nav_prefs(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSBool ok = JS_TRUE; - - if (argc != 1 && argc != 2) - return JS_TRUE; - - ok = lm_CanAccessTarget(cx, argc == 1 - ? JSTARGET_UNIVERSAL_PREFERENCES_READ - : JSTARGET_UNIVERSAL_PREFERENCES_WRITE); - - if (!ok) - return JS_FALSE; - - return ET_HandlePref(cx, argc, argv, rval); - -} - -PR_STATIC_CALLBACK(JSBool) -nav_save_prefs(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSBool ok = JS_TRUE; - - ok = lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_PREFERENCES_WRITE); - - if (!ok) - return JS_FALSE; - - ET_moz_CallFunctionAsync((ETVoidPtrFunc)PREF_SavePrefFile, NULL); - return JS_TRUE; -} - -JSBool PR_CALLBACK -nav_is_default(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ -#ifdef XP_WIN - *rval = BOOLEAN_TO_JSVAL( - ET_moz_CallFunctionBool((ETBoolPtrFunc)FE_IsNetscapeDefault, NULL)); -#endif - return JS_TRUE; -} - -JSBool PR_CALLBACK -nav_make_default(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ -#ifdef XP_WIN - *rval = BOOLEAN_TO_JSVAL( - ET_moz_CallFunctionBool((ETBoolPtrFunc)FE_MakeNetscapeDefault, NULL)); -#endif - return JS_TRUE; -} - -static JSFunctionSpec nav_methods[] = { - {"javaEnabled", nav_java_enabled, 0}, - {"taintEnabled", nav_taint_enabled, 0}, - {"preference", nav_prefs, 1}, - {"savePreferences", nav_save_prefs, 0}, - {"isNetscapeDefault", nav_is_default, 0}, - {"makeNetscapeDefault", nav_make_default, 0}, - {0} -}; - -/* - * ------------------------------------------------------------------ - */ -static JSClass mail_class = -{ - "Mail", 0 /* no private data, yet */, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub -}; - -/* - * Update an imap mail folder - */ -PR_STATIC_CALLBACK(JSBool) -mail_update(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ -#ifdef MOZ_MAIL_NEWS - jsval folder; - char *folder_url; - - /* make sure we got a string as our input value */ - if (!JSVAL_IS_STRING(argv[0]) && - !JS_ConvertValue(cx, argv[0], JSTYPE_STRING, &argv[0])) { - return JS_FALSE; - } - - folder_url = JS_GetStringBytes(JSVAL_TO_STRING(argv[0])); - XP_TRACE(("Folder URL = '%s'", folder_url)); - /* use et_moz.c stuff to send a message over to the mozilla thread */ - ET_moz_CallFunctionAsync((ETVoidPtrFunc) MSG_IMAPFolderChangedNotification, folder_url); -#endif /* MOZ_MAIL_NEWS */ - return JS_TRUE; - -} - -static JSFunctionSpec mail_methods[] = { - {"updateFolder", mail_update, 1}, - {0} -}; - -static JSObject * -lm_NewMailObject(JSContext * cx) -{ - JSObject *obj; - - obj = JS_NewObject(cx, &mail_class, NULL, NULL); - if (!obj || !JS_DefineFunctions(cx, obj, mail_methods)) - return NULL; - - return obj; -} - -/* - * ------------------------------------------------------------------ - */ - -JSObject * -lm_DefineNavigator(MochaDecoder *decoder) -{ - JSObject *obj, *list_obj, *mail_obj; - JSContext *cx; - JSNavigator *nav; - char *userAgent; - - obj = decoder->navigator; - if (obj) - return obj; - - cx = decoder->js_context; - nav = JS_malloc(cx, sizeof *nav); - if (!nav) - return NULL; - XP_BZERO(nav, sizeof *nav); - - obj = JS_InitClass(cx, decoder->window_object, NULL, &lm_navigator_class, - Navigator, 0, nav_props, nav_methods, NULL, NULL); - if (!obj || !JS_SetPrivate(cx, obj, nav)) { - JS_free(cx, nav); - return NULL; - } - - if (!JS_DefineProperty(cx, decoder->window_object, "navigator", - OBJECT_TO_JSVAL(obj), NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - return NULL; - } - - /* XXX bail on null returns from PR_smprintf and JS_NewStringCopyZ */ - userAgent = PR_smprintf("%s/%s", XP_AppCodeName, XP_AppVersion); - nav->userAgent = JS_NewStringCopyZ(cx, userAgent); - PR_FREEIF(userAgent); - JS_LockGCThing(cx, nav->userAgent); - - nav->appCodeName = JS_NewStringCopyZ(cx, XP_AppCodeName); - JS_LockGCThing(cx, nav->appCodeName); - - nav->appVersion = JS_NewStringCopyZ(cx, XP_AppVersion); - JS_LockGCThing(cx, nav->appVersion); - - nav->appName = JS_NewStringCopyZ(cx, XP_AppName); - JS_LockGCThing(cx, nav->appName); - - nav->appLanguage = JS_NewStringCopyZ(cx, XP_AppLanguage); - JS_LockGCThing(cx, nav->appLanguage); - - nav->appPlatform = JS_NewStringCopyZ(cx, XP_AppPlatform); - JS_LockGCThing(cx, nav->appPlatform); - - HG99881 - - - /* Ask lm_plgin.c to create objects for plug-in and MIME-type arrays */ - - list_obj = lm_NewPluginList(cx, obj); - if (!list_obj || - !JS_DefineProperty(cx, obj, "plugins", - OBJECT_TO_JSVAL(list_obj), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - return NULL; - } - - list_obj = lm_NewMIMETypeList(cx); - if (!list_obj || - !JS_DefineProperty(cx, obj, "mimeTypes", - OBJECT_TO_JSVAL(list_obj), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - return NULL; - } - - /* mail stuff -- don't make it JSPROP_ENUMERATE for now XXX */ - mail_obj = lm_NewMailObject(cx); - if (!mail_obj || - !JS_DefineProperty(cx, obj, "mail", - OBJECT_TO_JSVAL(mail_obj), - NULL, NULL, - JSPROP_READONLY)) { - return NULL; - } - - - - decoder->navigator = obj; - return obj; -} diff --git a/mozilla/lib/libmocha/lm_plgin.c b/mozilla/lib/libmocha/lm_plgin.c deleted file mode 100644 index 6608f0ea1d7..00000000000 --- a/mozilla/lib/libmocha/lm_plgin.c +++ /dev/null @@ -1,1267 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * JS reflection of Navigator Plugins. - * - * This file contains implementations of several JS objects: - * - * + JSPluginList, a lazily-filled array of all installed - * plug-ins, based on the information exported from lib/plugin - * by the functions in np.h. The plug-in properties in the - * array are named by plug-in name, so you can do an array - * lookup by name, e.g. plugins["Shockwave"]. - * - * + JSMIMETypeList, a lazily-filled array of all handled - * MIME types, based in the information exported from libnet - * by the functions in net.h. The type properties in the - * array are named by type, so you can do an array lookup by - * type, e.g. mimetypes["video/quicktime"]. - * - * + JSPlugin, the reflection of an installed plug-in, with - * static properties for the plug-in's name, file name, etc. - * and dynamic properties for the MIME types supported by - * the plug-in. - * - * + JSMIMEType, the reflection of an individual MIME type, - * with properties for the type, file extensions, platform- - * specific file type, description of the type, and enabled - * plug-in. The enabled plug-in property is a weak object - * reference marked as JSPROP_BACKEDGE to break the cycle of - * references from plug-in to mime type to plug-in. - * - */ - -#include "lm.h" -#include "prmem.h" -#include "np.h" -#include "net.h" - - -/* - * ----------------------------------------------------------------------- - * - * Data types - * - * ----------------------------------------------------------------------- - */ - -typedef struct JSMIMEType -{ - MochaDecoder *decoder; - JSObject *obj; - JSString *type; /* MIME type itself, e.g. "text/html" */ - JSString *description; /* English description of MIME type */ - JSString *suffixes; /* Comma-separated list of file suffixes */ - JSObject *enabledPluginObj; /* Plug-in enabled for this MIME type */ - void *fileType; /* Platform-specific file type */ -} JSMIMEType; - -typedef struct JSPlugin -{ - MochaDecoder *decoder; - JSObject *obj; - JSString *name; /* Name of plug-in */ - JSString *filename; /* Name of file on disk */ - JSString *description; /* Descriptive HTML (version, etc.) */ - NPReference plugref; /* Opaque reference to private plugin object */ - uint32 length; /* Total number of mime types we have */ - XP_Bool reentrant; /* Flag to halt recursion of getProperty */ -} JSPlugin; - - -typedef struct JSPluginList -{ - MochaDecoder *decoder; - JSObject *obj; - uint32 length; /* Total number of plug-ins */ - XP_Bool reentrant; /* Flag to halt recursion of getProperty */ -} JSPluginList; - - -typedef struct JSMIMETypeList -{ - MochaDecoder *decoder; - JSObject *obj; - uint32 length; /* Total number of mime types */ - PRPackedBool reentrant; /* Flag to halt recursion of getProperty */ -} JSMIMETypeList; - - - -/* - * ----------------------------------------------------------------------- - * - * Function protos (all private to this file) - * - * ----------------------------------------------------------------------- - */ - -static JSMIMEType* mimetype_create_self(JSContext *cx, MochaDecoder* decoder, char* type, - char* description, char** suffixes, uint32 numExtents, void* fileType); -JSBool PR_CALLBACK mimetype_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp); -void PR_CALLBACK mimetype_finalize(JSContext *cx, JSObject *obj); - -static JSPlugin* plugin_create_self(JSContext *cx, MochaDecoder* decoder, char* name, - char* filename, char* description, NPReference plugref); -static JSMIMEType* plugin_create_mimetype(JSContext* cx, JSPlugin* plugin, - XP_Bool byName, const char* targetName, jsint targetSlot); -JSBool PR_CALLBACK plugin_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp); -JSBool PR_CALLBACK plugin_resolve_name(JSContext *cx, JSObject *obj, jsval id); -void PR_CALLBACK plugin_finalize(JSContext *cx, JSObject *obj); - -static JSPluginList* pluginlist_create_self(JSContext *cx, MochaDecoder* decoder, JSObject* parent_obj); -static JSPlugin* pluginlist_create_plugin(JSContext *cx, JSPluginList *pluginlist, - XP_Bool byName, const char* targetName, jsint targetSlot); -JSBool PR_CALLBACK pluginlist_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp); -JSBool PR_CALLBACK pluginlist_resolve_name(JSContext *cx, JSObject *obj, jsval id); -JSBool PR_CALLBACK pluginlist_enumerate(JSContext *cx, JSObject *obj); -void PR_CALLBACK pluginlist_finalize(JSContext *cx, JSObject *obj); -JSBool PR_CALLBACK pluginlist_refresh(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval); - -static JSMIMETypeList* mimetypelist_create_self(JSContext *cx, MochaDecoder* decoder); -static JSMIMEType* mimetypelist_create_mimetype(JSContext* cx, JSMIMETypeList* mimetypelist, - XP_Bool byName, const char* targetName, jsint targetSlot); -JSBool PR_CALLBACK mimetypelist_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp); -JSBool PR_CALLBACK mimetypelist_resolve_name(JSContext *cx, JSObject *obj, jsval id); -JSBool PR_CALLBACK mimetypelist_enumerate(JSContext *cx, JSObject *obj); -void PR_CALLBACK mimetypelist_finalize(JSContext *cx, JSObject *obj); - -/* - * ----------------------------------------------------------------------- - * - * Reflection of a MIME type. - * - * ----------------------------------------------------------------------- - */ - -enum mimetype_slot -{ - MIMETYPE_TYPE = -1, - MIMETYPE_DESCRIPTION = -2, - MIMETYPE_SUFFIXES = -3, - MIMETYPE_ENABLEDPLUGIN = -4 -}; - - -static JSPropertySpec mimetype_props[] = -{ - {"type", MIMETYPE_TYPE, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"description", MIMETYPE_DESCRIPTION, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"suffixes", MIMETYPE_SUFFIXES, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"enabledPlugin", MIMETYPE_ENABLEDPLUGIN, JSPROP_ENUMERATE|JSPROP_READONLY}, - {0} -}; - - -static JSClass mimetype_class = -{ - "MimeType", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - mimetype_getProperty, mimetype_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, mimetype_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -MimeType(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -/* Constructor method for a JSMIMEType object */ -static JSMIMEType* -mimetype_create_self(JSContext *cx, MochaDecoder* decoder, - char* type, char* description, char ** suffixes, - uint32 numExtents, void* fileType) -{ - JSObject *obj; - JSMIMEType *mimetype; - - mimetype = JS_malloc(cx, sizeof(JSMIMEType)); - if (!mimetype) - return NULL; - XP_BZERO(mimetype, sizeof *mimetype); - - obj = JS_NewObject(cx, &mimetype_class, NULL, NULL); - if (!obj || !JS_SetPrivate(cx, obj, mimetype)) { - JS_free(cx, mimetype); - return NULL; - } - - if (!JS_DefineProperties(cx, obj, mimetype_props)) - return NULL; - - mimetype->decoder = HOLD_BACK_COUNT(decoder); - mimetype->obj = obj; - mimetype->fileType = fileType; - - mimetype->type = JS_NewStringCopyZ(cx, type); - if (!mimetype->type || !JS_LockGCThing(cx, mimetype->type)) - return NULL; - - mimetype->description = JS_NewStringCopyZ(cx, description); - if (!mimetype->description || !JS_LockGCThing(cx, mimetype->description)) - return NULL; - - - /* - * Assemble the list of file extensions into a string. - * The extensions are stored in an array of individual strings, so we - * first traverse the array to see how big the concatenated string will - * be, then allocate the memory and re-traverse the array to build the - * string. Each extension is seperated by trailing comma and space. - */ - { - uint32 index; - uint32 totalSize = 0; - char *extStr; - - if (numExtents > 0) - { - for (index = 0; index < numExtents; index++) - totalSize += XP_STRLEN(suffixes[index]); - - /* Add space for ', ' after each extension */ - totalSize += (2 * (numExtents - 1)); - } - - /* Total size plus terminator */ - extStr = XP_ALLOC(totalSize + 1); - if (! extStr) - return NULL; - - extStr[0] = 0; - - for (index = 0; index < numExtents; index++) - { - extStr = strcat(extStr, suffixes[index]); - if (index < numExtents - 1) - extStr = strcat(extStr, ", "); - } - mimetype->suffixes = JS_NewStringCopyZ(cx, extStr); - XP_FREE(extStr); - if (!mimetype->suffixes || !JS_LockGCThing(cx, mimetype->suffixes)) - return NULL; - } - - /* - * Conjure up the JS object for the plug-in enabled for this - * MIME type. First we get the name of the plug-in from libplugin; - * then we look up the plugin object by name in the global plug-in - * list (it's actually a "resolve", not a "lookup", so that the - * plug-in object will be created if it doesn't already exist). - */ - if (type) { - char* pluginName = NPL_FindPluginEnabledForType(type); - if (pluginName) - { - /* Look up the global plugin list object */ - jsval val; - if (JS_LookupProperty(cx, decoder->navigator, "plugins", &val) && - JSVAL_IS_OBJECT(val)) - { - /* Look up the desired plugin by name in the list */ - JSObject* pluginListObj = JSVAL_TO_OBJECT(val); - if (JS_GetProperty(cx, pluginListObj, pluginName, &val) && - JSVAL_IS_OBJECT(val)) - { - mimetype->enabledPluginObj = JSVAL_TO_OBJECT(val); - } - } - - XP_FREE(pluginName); - } - } - - return mimetype; -} - - -JSBool PR_CALLBACK -mimetype_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSMIMEType *mimetype; - JSString *str; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - mimetype = JS_GetInstancePrivate(cx, obj, &mimetype_class, NULL); - if (!mimetype) - return JS_TRUE; - - switch (slot) - { - case MIMETYPE_TYPE: - str = mimetype->type; - break; - - case MIMETYPE_DESCRIPTION: - str = mimetype->description; - break; - - case MIMETYPE_SUFFIXES: - str = mimetype->suffixes; - break; - - case MIMETYPE_ENABLEDPLUGIN: - *vp = OBJECT_TO_JSVAL(mimetype->enabledPluginObj); - return JS_TRUE; - - default: - /* don't mess with user-defined props. */ - return JS_TRUE; - } - - if (str) - *vp = STRING_TO_JSVAL(str); - else - *vp = JS_GetEmptyStringValue(cx); - return JS_TRUE; -} - - -void PR_CALLBACK -mimetype_finalize(JSContext *cx, JSObject *obj) -{ - JSMIMEType *mimetype; - - mimetype = JS_GetPrivate(cx, obj); - if (!mimetype) - return; - - DROP_BACK_COUNT(mimetype->decoder); - JS_UnlockGCThing(cx, mimetype->type); - JS_UnlockGCThing(cx, mimetype->description); - JS_UnlockGCThing(cx, mimetype->suffixes); - JS_free(cx, mimetype); -} - - - - - - -/* - * ----------------------------------------------------------------------- - * - * Reflection of an installed plug-in. - * - * ----------------------------------------------------------------------- - */ - -enum plugin_slot -{ - PLUGIN_NAME = -1, - PLUGIN_FILENAME = -2, - PLUGIN_DESCRIPTION = -3, - PLUGIN_ARRAY_LENGTH = -4 -}; - - -static JSPropertySpec plugin_props[] = -{ - {"name", PLUGIN_NAME, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"filename", PLUGIN_FILENAME, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"description", PLUGIN_DESCRIPTION, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"length", PLUGIN_ARRAY_LENGTH, JSPROP_ENUMERATE | JSPROP_READONLY}, - {0} -}; - -static JSClass plugin_class = -{ - "Plugin", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - plugin_getProperty, plugin_getProperty, JS_EnumerateStub, - plugin_resolve_name, JS_ConvertStub, plugin_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Plugin(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -/* Constructor method for a JSPlugin object */ -static JSPlugin* -plugin_create_self(JSContext *cx, MochaDecoder* decoder, char* name, - char* filename, char* description, NPReference plugref) -{ - JSObject *obj; - JSPlugin *plugin; - - plugin = JS_malloc(cx, sizeof(JSPlugin)); - if (!plugin) - return NULL; - XP_BZERO(plugin, sizeof *plugin); - - obj = JS_NewObject(cx, &plugin_class, NULL, NULL); - if (!obj || !JS_SetPrivate(cx, obj, plugin)) { - JS_free(cx, plugin); - return NULL; - } - - if (!JS_DefineProperties(cx, obj, plugin_props)) - return NULL; - - /* Fill out static property fields */ - plugin->decoder = HOLD_BACK_COUNT(decoder); - plugin->obj = obj; - plugin->plugref = plugref; - - plugin->name = JS_NewStringCopyZ(cx, name); - if (!plugin->name || !JS_LockGCThing(cx, plugin->name)) - return NULL; - - plugin->filename = JS_NewStringCopyZ(cx, filename); - if (!plugin->filename || !JS_LockGCThing(cx, plugin->filename)) - return NULL; - - plugin->description = JS_NewStringCopyZ(cx, description); - if (!plugin->description || !JS_LockGCThing(cx, plugin->description)) - return NULL; - - /* Count how many MIME types we have */ - { - NPReference typeref = NPRefFromStart; - while (NPL_IteratePluginTypes(&typeref, plugref, NULL, NULL, NULL, NULL)) - plugin->length++; - } - - return plugin; -} - - -/* Create a mimetype property for a plugin for a specified slot or name */ -static JSMIMEType* -plugin_create_mimetype(JSContext* cx, JSPlugin* plugin, XP_Bool byName, - const char* targetName, jsint targetSlot) -{ - NPMIMEType type = NULL; - char** suffixes = NULL; - char* description = NULL; - void* fileType = NULL; - NPReference typeref = NPRefFromStart; - jsint slot = 0; - XP_Bool found = FALSE; - - /* Search for the type (by type name or slot number) */ - while (NPL_IteratePluginTypes(&typeref, plugin->plugref, &type, - &suffixes, &description, &fileType)) - { - if (byName) - found = (type && (XP_STRCMP(targetName, type) == 0)); - else - found = (targetSlot == slot); - - if (found) - break; - - slot++; - } - - /* Found the mime type, so create an object and property */ - if (found) { - JSMIMEType* mimetype; - uint32 numExtents = 0; - - while (suffixes[numExtents]) - numExtents++; - - mimetype = mimetype_create_self(cx, plugin->decoder, type, description, - suffixes, numExtents, fileType); - if (mimetype) { - char *name; - jsval val; - - name = JS_GetStringBytes(mimetype->type); - val = OBJECT_TO_JSVAL(mimetype->obj); - JS_DefineProperty(cx, plugin->obj, name, val, NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY); - JS_AliasElement(cx, plugin->obj, name, slot); - } - - return mimetype; - } - return NULL; -} - - -JSBool PR_CALLBACK -plugin_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSPlugin *plugin; - JSString *str; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - plugin = JS_GetInstancePrivate(cx, obj, &plugin_class, NULL); - if (!plugin) - return JS_TRUE; - - /* Prevent infinite recursion through call to GetSlot below */ - if (plugin->reentrant) - return JS_TRUE; - - switch (slot) - { - case PLUGIN_NAME: - str = plugin->name; - break; - - case PLUGIN_FILENAME: - str = plugin->filename; - break; - - case PLUGIN_DESCRIPTION: - str = plugin->description; - break; - - case PLUGIN_ARRAY_LENGTH: - *vp = INT_TO_JSVAL(plugin->length); - return JS_TRUE; - - default: - /* Don't mess with a user-defined property. */ - if (slot >= 0 && slot < (jsint) plugin->length) { - /* Search for an existing JSMIMEType for this slot */ - JSObject* mimetypeObj = NULL; - jsval val; - - plugin->reentrant = TRUE; - if (JS_GetElement(cx, obj, slot, &val) && JSVAL_IS_OBJECT(val)) - mimetypeObj = JSVAL_TO_OBJECT(val); - else { - JSMIMEType* mimetype; - mimetype = plugin_create_mimetype(cx, plugin, FALSE, NULL, slot); - if (mimetype) - mimetypeObj = mimetype->obj; - } - plugin->reentrant = FALSE; - - *vp = OBJECT_TO_JSVAL(mimetypeObj); - return JS_TRUE; - } - return JS_FALSE; - } - - if (str) - *vp = STRING_TO_JSVAL(str); - else - *vp = JS_GetEmptyStringValue(cx); - return JS_TRUE; -} - - -JSBool PR_CALLBACK -plugin_resolve_name(JSContext *cx, JSObject *obj, jsval id) -{ - JSPlugin* plugin; - jsval val; - const char * name; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - - name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - plugin = JS_GetPrivate(cx, obj); - if (!plugin) - return JS_TRUE; - - /* Prevent infinite recursion through call to LookupProperty below */ - if (plugin->reentrant) - return JS_TRUE; - - /* Look for a JSMIMEType object by this name already in our list */ - plugin->reentrant = TRUE; - if (JS_LookupProperty(cx, obj, name, &val) && JSVAL_IS_OBJECT(val)) { - plugin->reentrant = FALSE; - return JS_TRUE; - } - plugin->reentrant = FALSE; - - /* We don't already have the object, so make a new one */ - if (plugin_create_mimetype(cx, plugin, TRUE, name, 0)) - return JS_TRUE; - - /* Still no match for the name? Must be some other property, or invalid. */ - return JS_TRUE; -} - - -void PR_CALLBACK -plugin_finalize(JSContext *cx, JSObject *obj) -{ - JSPlugin* plugin; - - plugin = JS_GetPrivate(cx, obj); - if (!plugin) - return; - DROP_BACK_COUNT(plugin->decoder); - JS_UnlockGCThing(cx, plugin->name); - JS_UnlockGCThing(cx, plugin->filename); - JS_UnlockGCThing(cx, plugin->description); - JS_free(cx, plugin); -} - - - - - - -/* - * ----------------------------------------------------------------------- - * - * Reflection of the list of installed plug-ins. - * The only static property is the array length; - * the array elements (JSPlugins) are added - * lazily when referenced. - * - * ----------------------------------------------------------------------- - */ - -enum pluginlist_slot -{ - PLUGINLIST_ARRAY_LENGTH = -1 -}; - - -static JSPropertySpec pluginlist_props[] = -{ - {"length", PLUGINLIST_ARRAY_LENGTH, JSPROP_READONLY}, - {0} -}; - - -static JSClass pluginlist_class = -{ - "PluginArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - pluginlist_getProperty, pluginlist_getProperty, pluginlist_enumerate, - pluginlist_resolve_name, JS_ConvertStub, pluginlist_finalize -}; - - -static JSFunctionSpec pluginlist_methods[] = -{ - {"refresh", pluginlist_refresh, 0}, - {0} -}; - - -PR_STATIC_CALLBACK(JSBool) -PluginList(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - - -/* Constructor method for a JSPluginList object */ -static JSPluginList* -pluginlist_create_self(JSContext *cx, MochaDecoder* decoder, JSObject* parent_obj) -{ - JSObject *obj; - JSPluginList *pluginlist; - - pluginlist = JS_malloc(cx, sizeof(JSPluginList)); - if (!pluginlist) - return NULL; - XP_BZERO(pluginlist, sizeof *pluginlist); - - obj = JS_InitClass(cx, parent_obj, NULL, &pluginlist_class, - PluginList, 0, pluginlist_props, - pluginlist_methods, NULL, NULL); - - if (!obj || !JS_SetPrivate(cx, obj, pluginlist)) { - JS_free(cx, pluginlist); - return NULL; - } - - pluginlist->decoder = HOLD_BACK_COUNT(decoder); - pluginlist->obj = obj; - - { - /* Compute total number of plug-ins (potential slots) */ - NPReference ref = NPRefFromStart; - while (NPL_IteratePluginFiles(&ref, NULL, NULL, NULL)) - pluginlist->length++; - } - - return pluginlist; -} - - -/* Look up the plugin for the specified slot of the plug-in list */ -static JSPlugin* -pluginlist_create_plugin(JSContext *cx, JSPluginList *pluginlist, XP_Bool byName, - const char* targetName, jsint targetSlot) -{ - char* plugname = NULL; - char* filename = NULL; - char* description = NULL; - NPReference plugref = NPRefFromStart; - jsint slot = 0; - XP_Bool found = FALSE; - - /* Search for the plug-in (by name or slot number) */ - while (NPL_IteratePluginFiles(&plugref, &plugname, &filename, &description)) { - if (byName) - found = (plugname && (XP_STRCMP(targetName, plugname) == 0)); - else - found = (targetSlot == slot); - - if (found) - break; - - slot++; - } - - /* Found the plug-in, so create an object and property */ - if (found) { - JSPlugin* plugin; - plugin = plugin_create_self(cx, pluginlist->decoder, plugname, - filename, description, plugref); - if (plugin) { - char *name; - jsval val; - - name = JS_GetStringBytes(plugin->name); - val = OBJECT_TO_JSVAL(plugin->obj); - JS_DefineProperty(cx, pluginlist->obj, name, val, NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY); - JS_AliasElement(cx, pluginlist->obj, name, slot); - } - - return plugin; - } - return NULL; -} - - -JSBool PR_CALLBACK -pluginlist_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSPluginList *pluginlist; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - pluginlist = JS_GetInstancePrivate(cx, obj, &pluginlist_class, NULL); - if (!pluginlist) - return JS_TRUE; - - /* Prevent infinite recursion through call to GetSlot below */ - if (pluginlist->reentrant) - return JS_TRUE; - - switch (slot) { - case PLUGINLIST_ARRAY_LENGTH: - *vp = INT_TO_JSVAL(pluginlist->length); - break; - - default: - /* Don't mess with a user-defined property. */ - if (slot >= 0 && slot < (jsint) pluginlist->length) { - - /* Search for an existing JSPlugin for this slot */ - JSObject* pluginObj = NULL; - jsval val; - - pluginlist->reentrant = TRUE; - if (JS_GetElement(cx, obj, slot, &val) && JSVAL_IS_OBJECT(val)) { - pluginObj = JSVAL_TO_OBJECT(val); - } - else { - JSPlugin* plugin; - plugin = pluginlist_create_plugin(cx, pluginlist, FALSE, NULL, slot); - if (plugin) - pluginObj = plugin->obj; - } - pluginlist->reentrant = FALSE; - - *vp = OBJECT_TO_JSVAL(pluginObj); - return JS_TRUE; - } - } - - return JS_TRUE; -} - - -JSBool PR_CALLBACK -pluginlist_resolve_name(JSContext *cx, JSObject *obj, jsval id) -{ - JSPluginList* pluginlist; - jsval val; - const char * name; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - - name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - pluginlist = JS_GetPrivate(cx, obj); - if (!pluginlist) - return JS_TRUE; - - /* Prevent infinite recursion through call to LookupProperty below */ - if (pluginlist->reentrant) - return JS_TRUE; - - /* Look for a JSMIMEType object by this name already in our list */ - pluginlist->reentrant = TRUE; - if (JS_LookupProperty(cx, obj, name, &val) && JSVAL_IS_OBJECT(val)) - { - pluginlist->reentrant = FALSE; - return JS_TRUE; - } - pluginlist->reentrant = FALSE; - - /* We don't already have the object, so make a new one */ - if (pluginlist_create_plugin(cx, pluginlist, TRUE, name, 0)) - return JS_TRUE; - - /* Still no match for the name? Must be some other property, or invalid. */ - return JS_TRUE; -} - -JSBool PR_CALLBACK -pluginlist_enumerate(JSContext *cx, JSObject *obj) -{ - return JS_TRUE; -} - -void PR_CALLBACK -pluginlist_finalize(JSContext *cx, JSObject *obj) -{ - JSPluginList* pluginlist; - - pluginlist = JS_GetPrivate(cx, obj); - if (!pluginlist) - return; - DROP_BACK_COUNT(pluginlist->decoder); - JS_free(cx, pluginlist); -} - - -JSBool PR_CALLBACK -pluginlist_refresh(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSBool value = JS_FALSE; - JSPluginList* pluginlist; - JSObject* navigator; - MochaDecoder* decoder; - MochaDecoder* crippled_decoder; - NPError error = NPERR_NO_ERROR; - - if (!(pluginlist = JS_GetInstancePrivate(cx, obj, &pluginlist_class, argv))) - return JS_FALSE; - decoder = pluginlist->decoder; - - /* - * Evaluate the parameter (if any). If the parameter - * is missing or can't be evaluated, default to FALSE. - */ - if (argc > 0) - (void) JS_ValueToBoolean(cx, argv[0], &value); - - /* Synchronously execute this function on the Mozilla thread */ - error = (NPError) ET_npl_RefreshPluginList(decoder->window_context, value); - if (error != NPERR_NO_ERROR) - { - /* XXX should JS_ReportError() here, but can't happen currently */ - return JS_FALSE; - } - - /* - * Remove references to the existing navigator object, - * and make a new one. If scripts have outstanding - * references to the old objects, they'll still be - * valid, but if they reference navigator.plugins - * anew they'll see any new plug-ins registered by - * NPL_RefreshPlugins. - */ - navigator = decoder->navigator; - decoder->navigator = NULL; /* Prevent lm_DefineNavigator from short-circuiting */ - crippled_decoder = LM_GetCrippledDecoder(); - crippled_decoder->navigator = NULL; - crippled_decoder->navigator = lm_DefineNavigator(decoder); - if (!decoder->navigator) - { - /* - * We failed to create a new navigator object, so - * restore the old one (saved in a local variable). - */ - decoder->navigator = navigator; - return JS_FALSE; - } - return JS_TRUE; -} - - - -/* - * ----------------------------------------------------------------------- - * - * Reflection of the list of handled MIME types. - * - * ----------------------------------------------------------------------- - */ - -enum mimetypelist_slot -{ - MIMETYPELIST_ARRAY_LENGTH = -1 -}; - - -static JSPropertySpec mimetypelist_props[] = -{ - {"length", MIMETYPELIST_ARRAY_LENGTH, JSPROP_READONLY}, - {0} -}; - - -static JSClass mimetypelist_class = -{ - "MimeTypeArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - mimetypelist_getProperty, mimetypelist_getProperty, mimetypelist_enumerate, - mimetypelist_resolve_name, JS_ConvertStub, mimetypelist_finalize -}; - - -/* Constructor method for a JSMIMETypeList object */ -static JSMIMETypeList* -mimetypelist_create_self(JSContext *cx, MochaDecoder* decoder) -{ - JSObject *obj; - JSMIMETypeList *mimetypelist; - - mimetypelist = JS_malloc(cx, sizeof(JSMIMETypeList)); - if (!mimetypelist) - return NULL; - XP_BZERO(mimetypelist, sizeof *mimetypelist); - - obj = JS_NewObject(cx, &mimetypelist_class, NULL, NULL); - - if (!obj || !JS_SetPrivate(cx, obj, mimetypelist)) { - JS_free(cx, mimetypelist); - return NULL; - } - - if (!JS_DefineProperties(cx, obj, mimetypelist_props)) - return NULL; - - mimetypelist->decoder = HOLD_BACK_COUNT(decoder); - mimetypelist->obj = obj; - - /* - * Count the number of types in the list. - * We can't just go by the number of items - * in the list, since it contains encodings, too. - */ - { - XP_List* cinfoList = cinfo_MasterListPointer(); - NET_cdataStruct* cdata = NULL; - mimetypelist->length = 0; - while (cinfoList) - { - cdata = cinfoList->object; - if (cdata && cdata->ci.type) - mimetypelist->length++; - cinfoList = cinfoList->next; - } - } - - return mimetypelist; -} - -/* - * Common code to take a cdata and create a mimetype - */ -static JSMIMEType* -define_mimetype(JSContext* cx, JSMIMETypeList* mimetypelist, - NET_cdataStruct* cdata, jsint targetSlot) -{ - - JSMIMEType* mimetype; - mimetype = mimetype_create_self(cx, mimetypelist->decoder, cdata->ci.type, - cdata->ci.desc, cdata->exts, cdata->num_exts, NULL); - if (mimetype) { - char *name; - name = JS_GetStringBytes(mimetype->type); - JS_DefineProperty(cx, mimetypelist->obj, name, - OBJECT_TO_JSVAL(mimetype->obj), NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY); - JS_AliasElement(cx, mimetypelist->obj, name, targetSlot); - } - - return mimetype; -} - -/* Create a mimetype property for a specified slot or name */ -static JSMIMEType* -mimetypelist_create_mimetype(JSContext* cx, JSMIMETypeList* mimetypelist, - XP_Bool byName, const char* targetName, jsint targetSlot) -{ - XP_List* cinfoList = cinfo_MasterListPointer(); - NET_cdataStruct* cdata = NULL; - XP_Bool found = FALSE; - - if (byName) { - /* Look up by name */ - targetSlot = 0; - while (cinfoList) { - cdata = cinfoList->object; - if (cdata) { - char* type = cdata->ci.type; - if (type && (XP_STRCMP(type, targetName) == 0)) { - found = TRUE; - break; - } - } - targetSlot++; - cinfoList = cinfoList->next; - } - } - else { - /* - * Look up by slot. - * The slot number does not directly correspond to list index, - * since not all items in the list correspond to properties - * (encodings are in list list as well as types). - */ - uint32 count = targetSlot + 1; - while (cinfoList) { - cdata = cinfoList->object; - if (cdata && cdata->ci.type) - count--; - - if (count == 0) { - found = TRUE; - break; - } - - cinfoList = cinfoList->next; - } - } - - if (found) - return define_mimetype(cx, mimetypelist, cdata, targetSlot); - - return NULL; -} - - -JSBool PR_CALLBACK -mimetypelist_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSMIMETypeList *mimetypelist; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - mimetypelist = JS_GetInstancePrivate(cx, obj, &mimetypelist_class, NULL); - if (!mimetypelist) - return JS_TRUE; - - /* Prevent infinite recursion through call to GetSlot below */ - if (mimetypelist->reentrant) - return JS_TRUE; - - switch (slot) - { - case MIMETYPELIST_ARRAY_LENGTH: - *vp = INT_TO_JSVAL(mimetypelist->length); - break; - - default: - /* Don't mess with a user-defined property. */ - if (slot >= 0 && slot < (jsint) mimetypelist->length) { - /* Search for an existing JSMIMEType for this slot */ - JSObject* mimetypeObj = NULL; - jsval val = JSVAL_VOID; - - mimetypelist->reentrant = TRUE; - if (JS_GetElement(cx, obj, slot, &val) && JSVAL_IS_OBJECT(val)) { - mimetypeObj = JSVAL_TO_OBJECT(val); - } - else { - JSMIMEType* mimetype; - mimetype = mimetypelist_create_mimetype(cx, mimetypelist, FALSE, NULL, slot); - if (mimetype) - mimetypeObj = mimetype->obj; - } - mimetypelist->reentrant = FALSE; - - *vp = OBJECT_TO_JSVAL(mimetypeObj); - return JS_TRUE; - } - break; - } - - return JS_TRUE; -} - - -JSBool PR_CALLBACK -mimetypelist_resolve_name(JSContext *cx, JSObject *obj, jsval id) -{ - JSMIMETypeList* mimetypelist; - jsval val; - const char * name; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - - name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - mimetypelist = JS_GetPrivate(cx, obj); - if (!mimetypelist) - return JS_TRUE; - - /* Prevent infinite recursion through call to LookupProperty below */ - if (mimetypelist->reentrant) - return JS_TRUE; - - /* Look for a JSMIMEType object by this name already in our list */ - mimetypelist->reentrant = TRUE; - if (JS_LookupProperty(cx, obj, name, &val) && JSVAL_IS_OBJECT(val)) - { - mimetypelist->reentrant = FALSE; - return JS_TRUE; - } - mimetypelist->reentrant = FALSE; - - /* We don't already have the object, so make a new one */ - if (mimetypelist_create_mimetype(cx, mimetypelist, TRUE, name, 0)) - return JS_TRUE; - - /* Still no match for the name? Must be some other property, or invalid. */ - return JS_TRUE; -} - -JSBool PR_CALLBACK -mimetypelist_enumerate(JSContext *cx, JSObject *obj) -{ - JSMIMETypeList* mimetypelist; - XP_List* cinfoList = cinfo_MasterListPointer(); - NET_cdataStruct* cdata = NULL; - jsint targetSlot = 0; - - mimetypelist = JS_GetPrivate(cx, obj); - if (!mimetypelist) - return JS_TRUE; - - while (cinfoList) { - cdata = cinfoList->object; - if (cdata) - define_mimetype(cx, mimetypelist, cdata, targetSlot++); - cinfoList = cinfoList->next; - } - - return JS_TRUE; -} - -void PR_CALLBACK -mimetypelist_finalize(JSContext *cx, JSObject *obj) -{ - JSMIMETypeList *mimetypelist; - - mimetypelist = JS_GetPrivate(cx, obj); - if (!mimetypelist) - return; - DROP_BACK_COUNT(mimetypelist->decoder); - JS_free(cx, mimetypelist); -} - - - - -/* - * Exported entry point, called from lm_nav.c. - * This function creates the JSPluginList object. The - * properties for the installed plug-ins are instantiated - * lazily in pluginlist_resolve_name. - */ -JSObject* -lm_NewPluginList(JSContext *cx, JSObject *parent_obj) -{ - MochaDecoder* decoder; - JSPluginList* pluginlist; - - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - pluginlist = pluginlist_create_self(cx, decoder, parent_obj); - return (pluginlist ? pluginlist->obj : NULL); -} - - - - -/* - * Exported entry point to this file, called from lm_nav.c. - * This function creates the JSMIMETypeList object. The - * properties for the MIME types are instantiated - * lazily in mimetypelist_resolve_name. - */ -JSObject* -lm_NewMIMETypeList(JSContext *cx) -{ - MochaDecoder* decoder; - JSMIMETypeList* mimetypelist; - - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - mimetypelist = mimetypelist_create_self(cx, decoder); - return (mimetypelist ? mimetypelist->obj : NULL); -} - -JSBool -lm_DefinePluginClasses(MochaDecoder *decoder) -{ - JSContext *cx = decoder->js_context; - - if (!JS_InitClass(cx, decoder->window_object, NULL, &mimetype_class, - MimeType, 0, mimetype_props, NULL, NULL, NULL)) - return JS_FALSE; - - if (!JS_InitClass(cx, decoder->window_object, NULL, &plugin_class, - Plugin, 0, plugin_props, NULL, NULL, NULL)) - return JS_FALSE; - - return JS_TRUE; -} diff --git a/mozilla/lib/libmocha/lm_screen.c b/mozilla/lib/libmocha/lm_screen.c deleted file mode 100644 index 4b0970452b7..00000000000 --- a/mozilla/lib/libmocha/lm_screen.c +++ /dev/null @@ -1,179 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * JS reflection of the Screen info top-level object. - * - * Tom Pixley, 3/1/97 - */ -#include "lm.h" - -typedef struct JSScreen { - MochaDecoder *decoder; -} JSScreen; - -enum screen_tinyid { - SCREEN_WIDTH = -1, - SCREEN_HEIGHT = -2, - SCREEN_PIXEL_DEPTH = -3, - SCREEN_COLOR_DEPTH = -4, - SCREEN_AVAIL_WIDTH = -5, - SCREEN_AVAIL_HEIGHT = -6, - SCREEN_AVAIL_LEFT = -7, - SCREEN_AVAIL_TOP = -8 -}; - -static JSPropertySpec screen_props[] = { - {"width", SCREEN_WIDTH, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"height", SCREEN_HEIGHT, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"pixelDepth", SCREEN_PIXEL_DEPTH, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"colorDepth", SCREEN_COLOR_DEPTH, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"availWidth", SCREEN_AVAIL_WIDTH, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"availHeight", SCREEN_AVAIL_HEIGHT, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"availLeft", SCREEN_AVAIL_LEFT, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"availTop", SCREEN_AVAIL_TOP, JSPROP_ENUMERATE | JSPROP_READONLY}, - {0} -}; - -extern JSClass lm_screen_class; - -PR_STATIC_CALLBACK(JSBool) -screen_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - MWContext *context; - JSScreen *screen; - jsint slot; - int32 width, height, left, top, pixel, pallette; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - screen = JS_GetInstancePrivate(cx, obj, &lm_screen_class, NULL); - if (!screen) - return JS_TRUE; - context = screen->decoder->window_context; - if (!context) - return JS_TRUE; - - switch (slot) { - case SCREEN_WIDTH: - ET_PostGetScreenSize(context, &width, &height); - *vp = INT_TO_JSVAL(width); - break; - case SCREEN_HEIGHT: - ET_PostGetScreenSize(context, &width, &height); - *vp = INT_TO_JSVAL(height); - break; - case SCREEN_PIXEL_DEPTH: - ET_PostGetColorDepth(context, &pixel, &pallette); - *vp = INT_TO_JSVAL(pixel); - break; - case SCREEN_COLOR_DEPTH: - ET_PostGetColorDepth(context, &pixel, &pallette); - *vp = INT_TO_JSVAL(pallette); - break; - case SCREEN_AVAIL_WIDTH: - ET_PostGetAvailScreenRect(context, &width, &height, &left, &top); - *vp = INT_TO_JSVAL(width); - break; - case SCREEN_AVAIL_HEIGHT: - ET_PostGetAvailScreenRect(context, &width, &height, &left, &top); - *vp = INT_TO_JSVAL(height); - break; - case SCREEN_AVAIL_LEFT: - ET_PostGetAvailScreenRect(context, &width, &height, &left, &top); - *vp = INT_TO_JSVAL(left); - break; - case SCREEN_AVAIL_TOP: - ET_PostGetAvailScreenRect(context, &width, &height, &left, &top); - *vp = INT_TO_JSVAL(top); - break; - default: - return JS_TRUE; - } - return JS_TRUE; -} - - -PR_STATIC_CALLBACK(void) -screen_finalize(JSContext *cx, JSObject *obj) -{ - JSScreen *screen; - - screen = JS_GetPrivate(cx, obj); - if (!screen) - return; - DROP_BACK_COUNT(screen->decoder); - JS_free(cx, screen); -} - -JSClass lm_screen_class = { - "Screen", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, screen_getProperty, screen_getProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, screen_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Screen(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -JSObject * -lm_DefineScreen(MochaDecoder *decoder, JSObject *parent) -{ - JSObject *obj; - JSContext *cx; - JSScreen *screen; - - if (parent == decoder->window_object) { - obj = decoder->screen; - if (obj) - return obj; - } - - cx = decoder->js_context; - if (!(screen = JS_malloc(cx, sizeof(JSScreen)))) - return NULL; - screen->decoder = NULL; /* in case of error below */ - - obj = JS_InitClass(cx, decoder->window_object, NULL, &lm_screen_class, - Screen, 0, screen_props, NULL, NULL, NULL); - - if (!obj || !JS_SetPrivate(cx, obj, screen)) { - JS_free(cx, screen); - return NULL; - } - - if (!JS_DefineProperty(cx, parent, "screen", - OBJECT_TO_JSVAL(obj), NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - return NULL; - } - - screen->decoder = HOLD_BACK_COUNT(decoder); - if (parent == decoder->window_object) - decoder->screen = obj; - return obj; -} diff --git a/mozilla/lib/libmocha/lm_supdt.c b/mozilla/lib/libmocha/lm_supdt.c deleted file mode 100644 index 5dc20711dfe..00000000000 --- a/mozilla/lib/libmocha/lm_supdt.c +++ /dev/null @@ -1,234 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * Sofware Update object - * This object only exists to pass the data from SoftwareUpdate trigger - * to softupdate Java class. It has a single property, src, that is read-only - * It is created as a part of the scope for softupdate - * - * Aleks Totic 3/5/97 - * - */ - -#include "lm.h" - -/* Private object data */ -typedef struct JSSoftup { - JSString * src; /* Name of the JAR file */ - JSBool silent; - JSBool force; -} JSSoftup; - -/* Properties */ -enum su_slot { - SU_SRC = -1, - SU_SILENT = -2, - SU_FORCE = -3 -}; - -static JSPropertySpec su_props[] = { - { "src", SU_SRC, JSPROP_READONLY }, - { "silent", SU_SILENT, JSPROP_READONLY }, - { "force", SU_FORCE, JSPROP_READONLY }, - {0} -}; - -/* Prototypes */ -JSBool PR_CALLBACK -su_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp); -void PR_CALLBACK -su_finalize(JSContext *cx, JSObject *obj); -JSBool PR_CALLBACK -SoftUpdate(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval); -static JSBool -su_InitSoftUpClass( MochaDecoder * decoder, JSContext *cx ); -char * -DecodeSoftUpJSArgs(const char * jsArgs, JSBool* force, JSBool* silent ); - -extern JSClass lm_softup_class; - -/* - * su_getProperty - * - */ -JSBool PR_CALLBACK -su_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSSoftup *softup; - jsint slot; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - softup = JS_GetInstancePrivate(cx, obj, &lm_softup_class, NULL); - XP_ASSERT( softup ); - if (!softup ) - return JS_TRUE; - - switch (slot) - { - case SU_SRC: - *vp = STRING_TO_JSVAL(softup->src); - return JS_TRUE; - case SU_SILENT: - *vp = BOOLEAN_TO_JSVAL(softup->silent); - return JS_TRUE; - case SU_FORCE: - *vp = BOOLEAN_TO_JSVAL(softup->force); - return JS_TRUE; - default: - return JS_TRUE; - } - return JS_TRUE; -} - -/* - * clean up - */ -void PR_CALLBACK -su_finalize(JSContext *cx, JSObject *obj) -{ - JSSoftup *softup; - softup = JS_GetPrivate(cx, obj); - if (softup) - { - JS_UnlockGCThing( cx, softup->src ); - XP_FREE(softup); - } -} - -/* Global, referenced in su_trigger.c to check if the object is the - correct class */ - -JSClass lm_softup_class = { - "SoftUpdate", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, su_getProperty, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, su_finalize -}; - -/* - * Constructor - * No one should be able to construct one of these, except as a scope object - * for softupdate. - */ -JSBool PR_CALLBACK -SoftUpdate(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -/* - * Initialize the class - */ -static JSObject *prototype = NULL; /* Using this as a class prototype */ - /* and a signal if class has been loaded */ - -static JSBool -su_InitSoftUpClass(MochaDecoder * decoder, JSContext *cx) -{ - JSObject *prototype; - prototype = JS_InitClass( cx, /* JSContext *cx */ - decoder->window_object, /* JSObject *obj */ - NULL, /* decoder->event_receiver_prototype, JSObject *parent_proto */ - &lm_softup_class, /* JSClass *clasp */ - SoftUpdate, /* JSNative constructor */ - 0, /* PRUintn nargs */ - su_props, /* JSPropertySpec *ps */ - 0, /* JSFunctionSpec *fs */ - 0, /* JSPropertySpec *static_ps */ - 0); /* JSFunctionSpec *static_fs */ - - if (!prototype) - return JS_FALSE; - - /* JS_InitStandardClasses makes the "standard" JS functions available - if ( !JS_InitStandardClasses(cx, prototype)) - return JS_FALSE; -*/ return JS_TRUE; -} - -/* Decodes the JSArgs */ -/* see softupdt.c, EncodeSoftUpJSArgs for info on encoding */ -/* jsArgs do not have 'autoinstall:' prefix */ -char * -DecodeSoftUpJSArgs(const char *jsArgs, JSBool *force, JSBool *silent ) -{ - char * fileName; - int32 length; - int32 fileNameLength; - - *force = JS_FALSE; - *silent = JS_FALSE; - if (jsArgs == NULL) - return NULL; - length = XP_STRLEN(jsArgs); - fileNameLength = length - 4; - fileName = XP_ALLOC(fileNameLength +1); - XP_MEMCPY(fileName, jsArgs, fileNameLength); - fileName[fileNameLength] = 0; - *force = (JSBool)(jsArgs[length - 1] == 'T'); - *silent = (JSBool)(jsArgs[length - 3] == 'T'); - return fileName; -} - -/* - * Creates a new object - * Arguments: jarargs jar: followed by name of the JAR file - */ - -JSObject * -lm_NewSoftupObject( JSContext *cx, MochaDecoder *decoder, const char *jarargs ) -{ - JSObject * obj; - if (prototype == NULL) - { - if ( !su_InitSoftUpClass(decoder, cx )) - return NULL; - } - - obj = JS_NewObject(cx, &lm_softup_class, prototype, decoder->window_object); - if ( obj ) - { - JSSoftup * su; - su = XP_ALLOC (sizeof (JSSoftup)); - if ( su ) - { - char * fileName; - JSBool silent; - JSBool force; - fileName = DecodeSoftUpJSArgs( jarargs, &force, &silent); - su->src = JS_NewStringCopyZ(cx, fileName); - if ( fileName ) - XP_FREE(fileName); - su->force = force; - su->silent = silent; - JS_LockGCThing( cx, su->src ); - JS_SetPrivate( cx, obj, su ); - } - } - - return obj; -} - diff --git a/mozilla/lib/libmocha/lm_taint.c b/mozilla/lib/libmocha/lm_taint.c deleted file mode 100644 index 9e1c09fc6e5..00000000000 --- a/mozilla/lib/libmocha/lm_taint.c +++ /dev/null @@ -1,2245 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * JS/Mozilla data tainting support. - * XXX replace with lm_sec.c and lm_CheckAccess or similar - * - */ -#include "lm.h" -#include "xp.h" -#include "mkparse.h" -#include "prclist.h" -#include "plhash.h" -#include "prmem.h" -#include "shist.h" -#include "jsapi.h" -#include "jsdbgapi.h" -#include "jscntxt.h" /* XXX - needed for charSetName */ -#include "nsZip.h" -#include "zig.h" -#include "nsLoadZig.h" -#include "nsCaps.h" -#include "jri.h" -#ifdef JAVA_OR_OJI -#include "jsjava.h" -#endif -#ifdef JAVA -#include "java.h" -#endif -#include "jsobj.h" -#include "jsatom.h" -#include "jsscope.h" - -#ifdef OJI -#include "jvmmgr.h" -#endif -#include "nsCaps.h" - -extern JRIEnv * LJ_JSJ_CurrentEnv(JSContext * cx); -extern char *LJ_GetAppletScriptOrigin(JRIEnv *env); - -char lm_unknown_origin_str[] = "[unknown origin]"; - -static char file_url_prefix[] = "file:"; -static char access_error_message[] = - "access disallowed from scripts at %s to documents at another domain"; -static char container_error_message[] = - "script at '%s' is not signed by sufficient principals to access " - "signed container"; -static char enablePrivilegeStr[] = "enablePrivilege"; -static char isPrivilegeEnabledStr[] = "isPrivilegeEnabled"; -static char disablePrivilegeStr[] = "disablePrivilege"; -static char revertPrivilegeStr[] = "revertPrivilege"; - -#define FILE_URL_PREFIX_LEN (sizeof file_url_prefix - 1) -#define WYSIWYG_TYPE_LEN 10 /* wysiwyg:// */ - -/* XXX: raman: We should set this when JS console is ready */ -PRBool lm_console_is_ready = PR_FALSE; - -static void lm_PrintToConsole(const char *data); -static void setupJSCapsCallbacks(); - -/* XXX what about the PREXTERN? */ -typedef PRBool -(*nsCapsFn)(void* context, struct nsTarget *target, PRInt32 callerDepth); - -static JSBool -callCapsCode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, - jsval *rval, nsCapsFn fn, char *name) -{ - JSString *str; - char *cstr; - struct nsTarget *target; - - if (argc == 0 || !JSVAL_IS_STRING(argv[0])) { - JS_ReportError(cx, "String argument expected for %s.", name); - return JS_FALSE; - } - /* - * We don't want to use JS_ValueToString because we want to be able - * to have an object to represent a target in subsequent versions. - * XXX but then use of an object will cause errors here.... - */ - str = JSVAL_TO_STRING(argv[0]); - if (!str) - return JS_FALSE; - - cstr = JS_GetStringBytes(str); - if (cstr == NULL) - return JS_FALSE; - - target = nsCapsFindTarget(cstr); - if (target == NULL) - return JS_FALSE; - /* stack depth of 1: first frame is for the native function called */ - if (!(*fn)(cx, target, 1)) { - /* XXX report error, later, throw exception */ - return JS_FALSE; - } - return JS_TRUE; -} - - -JSBool -lm_netscape_security_isPrivilegeEnabled(JSContext *cx, JSObject *obj, uintN argc, - jsval *argv, jsval *rval) -{ - return callCapsCode(cx, obj, argc, argv, rval, nsCapsIsPrivilegeEnabled, - isPrivilegeEnabledStr); -} - -JSBool -lm_netscape_security_enablePrivilege(JSContext *cx, JSObject *obj, uintN argc, - jsval *argv, jsval *rval) -{ - return callCapsCode(cx, obj, argc, argv, rval, nsCapsEnablePrivilege, - enablePrivilegeStr); -} - -JSBool -lm_netscape_security_disablePrivilege(JSContext *cx, JSObject *obj, uintN argc, - jsval *argv, jsval *rval) -{ - return callCapsCode(cx, obj, argc, argv, rval, nsCapsDisablePrivilege, - disablePrivilegeStr); -} - -JSBool -lm_netscape_security_revertPrivilege(JSContext *cx, JSObject *obj, uintN argc, - jsval *argv, jsval *rval) -{ - return callCapsCode(cx, obj, argc, argv, rval, nsCapsRevertPrivilege, - revertPrivilegeStr); -} - -static JSFunctionSpec PrivilegeManager_static_methods[] = { - { isPrivilegeEnabledStr, lm_netscape_security_isPrivilegeEnabled, 1}, - { enablePrivilegeStr, lm_netscape_security_enablePrivilege, 1}, - { disablePrivilegeStr, lm_netscape_security_disablePrivilege, 1}, - { revertPrivilegeStr, lm_netscape_security_revertPrivilege, 1}, - {0} -}; - -JSBool -lm_InitSecurity(MochaDecoder *decoder) -{ - JSContext *cx; - JSObject *obj; - JSObject *proto; - JSClass *objectClass; - jsval v; - JSObject *securityObj; - - /* - * "Steal" calls to netscape.security.PrivilegeManager.enablePrivilege, - * et. al. so that code that worked with 4.0 can still work. - */ - - /* - * Find Object.prototype's class by walking up the window object's - * prototype chain. - */ - cx = decoder->js_context; - obj = decoder->window_object; - while (proto = JS_GetPrototype(cx, obj)) - obj = proto; - objectClass = JS_GetClass(cx, obj); - - if (!JS_GetProperty(cx, decoder->window_object, "netscape", &v)) - return JS_FALSE; - if (JSVAL_IS_OBJECT(v)) { - /* - * "netscape" property of window object exists; must be LiveConnect - * package. Get the "security" property. - */ - obj = JSVAL_TO_OBJECT(v); - if (!JS_GetProperty(cx, obj, "security", &v) || !JSVAL_IS_OBJECT(v)) - return JS_FALSE; - securityObj = JSVAL_TO_OBJECT(v); - } else { - /* define netscape.security object */ - obj = JS_DefineObject(cx, decoder->window_object, "netscape", - objectClass, NULL, 0); - if (obj == NULL) - return JS_FALSE; - securityObj = JS_DefineObject(cx, obj, "security", objectClass, - NULL, 0); - if (securityObj == NULL) - return JS_FALSE; - } - - /* Define PrivilegeManager object with the necessary "static" methods. */ - obj = JS_DefineObject(cx, securityObj, "PrivilegeManager", objectClass, - NULL, 0); - if (obj == NULL) - return JS_FALSE; - - return JS_DefineFunctions(cx, obj, PrivilegeManager_static_methods); -} - - -static void -lm_PrintToConsole(const char *data) -{ - if (lm_console_is_ready) { - /* XXX: raman: We should write to JS console when it is ready */ - /* JS_PrintToConsole(data); */ - } else { - MWContext* someRandomContext = XP_FindSomeContext(); - FE_Alert(someRandomContext, data); - } -} - -PR_PUBLIC_API(int) -LM_PrintZigError(int status, void *zigPtr, const char *metafile, - char *pathname, char *errortext) -{ - ZIG *zig = (ZIG *) zigPtr; - char* data; - char* error_fmt = "# Error: %s (%d)\n#\tjar file: %s\n#\tpath: %s\n"; - char* zig_name = NULL; - int len; - - XP_ASSERT(errortext); - - if (zig) { - zig_name = SOB_get_url(zig); - } - - if (!zig_name) { - zig_name = "unknown"; - } - - if (!pathname) { - pathname = ""; - } - - /* Add 16 slop bytes */ - len = strlen(error_fmt) + strlen(zig_name) + strlen(pathname) + - strlen(errortext) + 32; - - if ((data = malloc(len)) == 0) { - return 0; - } - sprintf(data, error_fmt, errortext, status, zig_name, pathname); - - lm_PrintToConsole(data); - XP_FREE(data); - - return 0; -} - -PR_PUBLIC_API(char *) -LM_LoadFromZipFile(void *zip, char *fn) -{ - struct stat st; - char* data; - - if (!ns_zip_stat((ns_zip_t *)zip, fn, &st)) { - return NULL; - } - if ((data = malloc((size_t)st.st_size + 1)) == 0) { - return NULL; - } - if (!ns_zip_get((ns_zip_t *)zip, fn, data, st.st_size)) { - XP_FREE(data); - return NULL; - } - data[st.st_size] = '\0'; - return data; -} - - -const char * -LM_StripWysiwygURLPrefix(const char *url_string) -{ - switch (NET_URL_Type(url_string)) { - case WYSIWYG_TYPE_URL: - return LM_SkipWysiwygURLPrefix(url_string); - default: - return url_string; - } -} - -const char * -LM_SkipWysiwygURLPrefix(const char *url_string) -{ - if (XP_STRLEN(url_string) < WYSIWYG_TYPE_LEN) - return NULL; - url_string += WYSIWYG_TYPE_LEN; - url_string = XP_STRCHR(url_string, '/'); - if (!url_string) - return NULL; - return url_string + 1; -} - - -JSPrincipals * -lm_GetCompilationPrincipals(MochaDecoder *decoder, - JSPrincipals *layoutPrincipals) -{ - JSContext *cx; - JSPrincipals *principals; - - cx = decoder->js_context; - - if (decoder->writing_input && lm_writing_context != NULL) { - /* - * Compiling a script added due to a document.write. - * Get principals from stack frame. We can't just use these - * principals since the document.write code will fail signature - * verification. So just grab the codebase and form a new set - * of principals. - */ - principals = lm_GetPrincipalsFromStackFrame(lm_writing_context); - principals = LM_NewJSPrincipals(NULL, NULL, principals - ? principals->codebase - : NULL); - if (principals == NULL) { - JS_ReportOutOfMemory(cx); - return NULL; - } - lm_InvalidateCertPrincipals(decoder, principals); - return principals; - } - - if (layoutPrincipals) { - return layoutPrincipals; - } - - /* - * Just get principals corresponding to the window or layer we're - * currently parsing. - */ - return lm_GetInnermostPrincipals(cx, - lm_GetActiveContainer(decoder), - NULL); -} - -static const char * -find_creator_url(MWContext *context) -{ - History_entry *he; - const char *address; - JSContext *cx; - MochaDecoder *decoder; - - he = SHIST_GetCurrent(&context->hist); - if (he) { - address = he->wysiwyg_url; - if (!address) - address = he->address; - switch (NET_URL_Type(address)) { - case MOCHA_TYPE_URL: - /* This type cannot name the true origin (server) of JS code. */ - break; - case WYSIWYG_TYPE_URL: - return LM_SkipWysiwygURLPrefix(address); - case VIEW_SOURCE_TYPE_URL: - XP_ASSERT(0); - default: - return address; - } - } - - if (context->grid_parent) { - address = find_creator_url(context->grid_parent); - if (address) - return address; - } - - cx = context->mocha_context; - if (cx) { - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - if (decoder && decoder->opener) { - /* self.opener property is valid, check its MWContext. */ - MochaDecoder *opener = JS_GetPrivate(cx, decoder->opener); - if (!opener->visited) { - opener->visited = JS_TRUE; - address = opener->window_context - ? find_creator_url(opener->window_context) - : NULL; - opener->visited = JS_FALSE; - if (address) - return address; - } - } - } - - return NULL; -} - -static const char * -find_origin_url(JSContext *cx, MochaDecoder *decoder) -{ - const char *url_string; - MWContext *context; - MochaDecoder *running; - - context = decoder->window_context; - url_string = context ? find_creator_url(context) : NULL; - if (url_string == NULL) { - /* Must be a new, empty window? Use running origin. */ - running = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - - /* Compare running and decoder to avoid infinite recursion. */ - if (running == decoder) { - url_string = lm_unknown_origin_str; - } else { - url_string = lm_GetSubjectOriginURL(cx); - if (!url_string) - return NULL; - } - } - return url_string; -} - -static char * -strip_file_double_slash(const char *url_string) -{ - char *new_url_string; - - if (!XP_STRNCASECMP(url_string, file_url_prefix, FILE_URL_PREFIX_LEN) && - url_string[FILE_URL_PREFIX_LEN + 0] == '/' && - url_string[FILE_URL_PREFIX_LEN + 1] == '/') { - new_url_string = PR_smprintf("%s%s", - file_url_prefix, - url_string + FILE_URL_PREFIX_LEN + 2); - } else { - new_url_string = XP_STRDUP(url_string); - } - return new_url_string; -} - -static char * -getCanonicalizedOrigin(JSContext *cx, const char *url_string) -{ - const char *origin; - - if (NET_URL_Type(url_string) == WYSIWYG_TYPE_URL) - url_string = LM_SkipWysiwygURLPrefix(url_string); - origin = NET_ParseURL(url_string, GET_PROTOCOL_PART | GET_HOST_PART); - if (!origin) { - JS_ReportOutOfMemory(cx); - return NULL; - } - return (char *) origin; -} - -const char * -lm_GetObjectOriginURL(JSContext *cx, JSObject *obj) -{ - JSPrincipals *principals; - - principals = lm_GetInnermostPrincipals(cx, obj, NULL); - return principals ? principals->codebase : NULL; -} - -static JSBool -sameOrigins(JSContext *cx, const char *origin1, const char *origin2) -{ - char *cmp1, *cmp2; - JSBool ok; - - if (origin1 == NULL || origin2 == NULL) - return JS_FALSE; -#if 0 /* XXX Need to enable this and test throroughly */ - /* Shouldn't return true if both origin1 and origin2 are - * lm_unknown_origin_str. */ - if (XP_STRCMP(origin1, lm_unknown_origin_str) == 0) - return JS_FALSE; -#endif - if (XP_STRCMP(origin1, origin2) == 0) - return JS_TRUE; - cmp1 = getCanonicalizedOrigin(cx, origin1); - cmp2 = getCanonicalizedOrigin(cx, origin2); - if (cmp1 && cmp2 && - XP_STRNCASECMP(cmp1, file_url_prefix, FILE_URL_PREFIX_LEN) == 0 && - XP_STRNCASECMP(cmp2, file_url_prefix, FILE_URL_PREFIX_LEN) == 0) { - ok = JS_TRUE; - goto done; - } - ok = (JSBool)(cmp1 && cmp2 && XP_STRCMP(cmp1, cmp2) == 0); - -done: - PR_FREEIF(cmp1); - PR_FREEIF(cmp2); - return ok; -} - -JSBool -lm_CheckPermissions(JSContext *cx, JSObject *obj, JSTarget target) -{ - const char *subjectOrigin, *objectOrigin; - MochaDecoder *running; - JSPrincipals *principals; - JSBool result; - - /* May be in a layer loaded from a different origin.*/ - subjectOrigin = lm_GetSubjectOriginURL(cx); - - /* - * Hold onto reference to the running decoder's principals - * in case a call to lm_GetInnermostPrincipals ends up - * dropping a reference due to an origin changing - * underneath us. - */ - running = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - principals = running ? running->principals : NULL; - if (principals) - JSPRINCIPALS_HOLD(cx, principals); - - objectOrigin = lm_GetObjectOriginURL(cx, obj); - - if (subjectOrigin == NULL || objectOrigin == NULL) { - result = JS_FALSE; - goto out; - } - - /* Now see whether the origin methods and servers match. */ - if (sameOrigins(cx, subjectOrigin, objectOrigin)) { - result = JS_TRUE; - goto out; - } - - /* - * If we failed the origin tests it still might be the case that we - * are a signed script and have permissions to do this operation. - * Check for that here - */ - if (target != JSTARGET_MAX && lm_CanAccessTarget(cx, target)) { - result = JS_TRUE; - goto out; - } - - JS_ReportError(cx, access_error_message, subjectOrigin); - result = JS_FALSE; - -out: - if (principals) - JSPRINCIPALS_DROP(cx, principals); - return result; -} - -static JSBool -isExternalCaptureEnabled(JSContext *cx, JSPrincipals *principals); - -JSBool -lm_CanCaptureEvent(JSContext *cx, JSFunction *fun, JSEvent *event) -{ - JSScript *script; - JSPrincipals *principals; - const char *origin; - - script = JS_GetFunctionScript(cx, fun); - if (script == NULL) - return JS_FALSE; - principals = JS_GetScriptPrincipals(cx, script); - if (principals == NULL) - return JS_FALSE; - origin = lm_GetObjectOriginURL(cx, event->object); - if (origin == NULL) - return JS_FALSE; - return (JSBool)(sameOrigins(cx, origin, principals->codebase) || - isExternalCaptureEnabled(cx, principals)); -} - - -JSPrincipals * -lm_GetPrincipalsFromStackFrame(JSContext *cx) -{ - /* - * Get principals from script of innermost interpreted frame. - */ - JSStackFrame *fp; - JSScript *script; - JSStackFrame *pFrameToStartLooking = JVM_GetStartJSFrameFromParallelStack(); - JSStackFrame *pFrameToEndLooking = JVM_GetEndJSFrameFromParallelStack(pFrameToStartLooking); - - fp = pFrameToStartLooking; - while ((fp = JS_FrameIterator(cx, &fp)) != pFrameToEndLooking) { - script = JS_GetFrameScript(cx, fp); - if (script) { - return JS_GetScriptPrincipals(cx, script); - } - } -#ifdef OJI - return JVM_GetJavaPrincipalsFromStack(pFrameToStartLooking); -#endif - - return NULL; -} - -const char * -lm_GetSubjectOriginURL(JSContext *cx) -{ - /* - * Get origin from script of innermost interpreted frame. - */ - JSPrincipals *principals; - JSStackFrame *fp; - JSScript *script; - MochaDecoder *running; -#ifdef JAVA - JRIEnv *env; - char *str; -#endif - - fp = NULL; - while ((fp = JS_FrameIterator(cx, &fp)) != NULL) { - script = JS_GetFrameScript(cx, fp); - if (script) { - principals = JS_GetScriptPrincipals(cx, script); - return principals - ? principals->codebase - : JS_GetScriptFilename(cx, script); - } - } - -#ifdef JAVA - /* fell off the js stack, look to see if there's a java - * classloader above us that has MAYSCRIPT set on it */ - if (JSJ_IsCalledFromJava(cx)) { - env = LJ_JSJ_CurrentEnv(cx); - if (!env) { - return NULL; - } - - str = LJ_GetAppletScriptOrigin(env); - if (!str) - return NULL; - return str; - } -#endif - - /* - * Not called from either JS or Java. We must be called - * from the interpreter. Get the origin from the decoder. - */ - running = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - return lm_GetObjectOriginURL(cx, running->window_object); -} - -/* - * Reference count ZIGs to increase sharing since creating - * them is so expensive. - */ -typedef struct SharedZig { - ZIG *zig; - int32 refCount; -} SharedZig; - -static SharedZig * -newSharedZig(ns_zip_t *zip) -{ - ZIG *zig; - SharedZig *result; - - zig = nsInitializeZig(zip, - (int (*) (int, ZIG *, const char *, - char *, char *)) LM_PrintZigError); - if (zig == NULL) - return NULL; - - result = (SharedZig *) XP_ALLOC(sizeof(SharedZig)); - if (result == NULL) { - SOB_destroy(zig); - return NULL; - } - result->zig = zig; - result->refCount = 0; - return result; -} - -static void -destroySharedZig(SharedZig *sharedZig) -{ - SOB_destroy(sharedZig->zig); - XP_FREE(sharedZig); -} - -static SharedZig * -holdZig(SharedZig *sharedZig) -{ - if (sharedZig) { - XP_ASSERT(sharedZig->refCount >= 0); - /* XXX: Why are you checking this again */ - if (sharedZig) - sharedZig->refCount++; - } - return sharedZig; -} - -static void -dropZig(SharedZig *sharedZig) -{ - if (sharedZig) { - XP_ASSERT(sharedZig->refCount > 0); - if (--sharedZig->refCount == 0) { - destroySharedZig(sharedZig); - } - } -} - -struct JSPrincipalsList { - JSPrincipals *principals; - struct JSPrincipalsList *next; -}; - -void -lm_DestroyPrincipalsList(JSContext *cx, JSPrincipalsList *p) -{ - while (p) { - JSPrincipalsList *next = p->next; - if (p->principals) - JSPRINCIPALS_DROP(cx, p->principals); - XP_FREE(p); - p = next; - } -} - -enum Signedness { - HAS_NO_SCRIPTS, - HAS_UNSIGNED_SCRIPTS, - HAS_SIGNED_SCRIPTS -}; - -#ifdef DEBUG_norris -static int serial; -#endif - -typedef struct JSPrincipalsData { - JSPrincipals principals; - SharedZig *sharedZig; - JRIGlobalRef principalsArrayRef; - URL_Struct *url_struct; - char *name; - ns_zip_t *zip; - uint32 externalCapturePrincipalsCount; - char *untransformed; - char *transformed; - JSBool needUnlock; - char *codebaseBeforeSettingDomain; -#ifdef DEBUG_norris - int serial; -#endif - enum Signedness signedness; - void *pNSISecurityContext; -} JSPrincipalsData; - -PR_STATIC_CALLBACK(void) -destroyJSPrincipals(JSContext *cx, JSPrincipals *principals); - -static JSBool -principalsCanAccessTarget(JSContext *cx, JSTarget target); - -PR_STATIC_CALLBACK(void *) -getPrincipalArray(JSContext *cx, struct JSPrincipals *principals); - -PR_STATIC_CALLBACK(JSBool) -globalPrivilegesEnabled(JSContext *cx, JSPrincipals *principals); - -static JSPrincipalsData unknownPrincipals = { - { - lm_unknown_origin_str, - getPrincipalArray, - globalPrivilegesEnabled, - 0, - destroyJSPrincipals - }, - NULL -}; - -static char * -getOriginFromSourceURL(const char *sourceURL) -{ - char *s; - char *result; - int urlType; - - if (*sourceURL == '\0' || XP_STRCMP(sourceURL, lm_unknown_origin_str) == 0) { - return XP_STRDUP(lm_unknown_origin_str); - } - urlType = NET_URL_Type(sourceURL); - if (urlType == WYSIWYG_TYPE_URL) { - sourceURL = LM_SkipWysiwygURLPrefix(sourceURL); - } else if (urlType == MOCHA_TYPE_URL) { - XP_ASSERT(JS_FALSE); /* this shouldn't occur */ - return XP_STRDUP(lm_unknown_origin_str); - } - s = strip_file_double_slash(sourceURL); - if (s == NULL) - return NULL; - result = NET_ParseURL(s, GET_PROTOCOL_PART|GET_HOST_PART|GET_PATH_PART); - PR_FREEIF(s); - return result; -} - -static char * -getJavaCodebaseFromOrigin(const char *origin) -{ - /* Remove filename part. */ - char *result = XP_STRDUP(origin); - if (result) { - char *slash = XP_STRRCHR(result, '/'); - if (slash && slash > result && slash[-1] != '/') - slash[1] = '\0'; - } - return result; -} - - -extern JSPrincipals * -LM_NewJSPrincipals(URL_Struct *archive, char *id, const char *codebase) -{ - JSPrincipalsData *result; - JSBool needUnlock = JS_FALSE; - ns_zip_t *zip = NULL; - - setupJSCapsCallbacks(); - - if (archive) { - char *fn = NULL; - - if (NET_IsLocalFileURL(archive->address)) { - char* pathPart = NET_ParseURL(archive->address, GET_PATH_PART); - NET_UnEscape(pathPart); /* Handle "file:D%7C/dir/file.zip" */ - fn = WH_FileName(pathPart, xpURL); - XP_FREE(pathPart); - } else if (archive->cache_file && NET_ChangeCacheFileLock(archive, TRUE)) { - fn = WH_FileName(archive->cache_file, xpCache); - needUnlock = JS_TRUE; - } - - if (fn) { -#ifdef XP_MAC - /* - * Unfortunately, ns_zip_open wants a Unix-style name. Convert - * Mac path to a Unix-style path. This code is copied from - * appletStubs.c. - */ - OSErr ConvertMacPathToUnixPath(const char *macPath, char **unixPath); - char *unixPath = NULL; - - if (ConvertMacPathToUnixPath(fn, &unixPath) == 0) { - zip = ns_zip_open(unixPath); - } - XP_FREEIF(unixPath); -#else - zip = ns_zip_open(fn); -#endif - XP_FREE(fn); - } - } - - result = XP_NEW_ZAP(JSPrincipalsData); - if (result == NULL) - return NULL; - result->principals.codebase = codebase - ? getOriginFromSourceURL(codebase) - : NULL; - if (result->principals.codebase == NULL) { - result->principals.codebase = XP_STRDUP(lm_unknown_origin_str); - if (result->principals.codebase == NULL) { - XP_FREE(result); - return NULL; - } - } - if (id) { - result->name = XP_STRDUP(id); - if (result->name == NULL) { - XP_FREE(result); - return NULL; - } - } - result->principals.destroy = destroyJSPrincipals; - result->principals.getPrincipalArray = getPrincipalArray; - result->principals.globalPrivilegesEnabled = globalPrivilegesEnabled; - result->url_struct = NET_HoldURLStruct(archive); - result->zip = zip; - result->needUnlock = needUnlock; -#ifdef DEBUG_norris - result->serial = ++serial; - XP_TRACE(("JSPrincipals #%.4d allocated\n", serial)); -#endif - - return (JSPrincipals *) result; -} - - -PR_STATIC_CALLBACK(void) -destroyJSPrincipals(JSContext *cx, JSPrincipals *principals) -{ - if (principals != NULL && - principals != (JSPrincipals *) &unknownPrincipals) - { - JSPrincipalsData *data = (JSPrincipalsData *) principals; - -#ifdef DEBUG_norris - XP_TRACE(("JSPrincipals #%.4d released\n", data->serial)); -#endif - XP_FREEIF(principals->codebase); - if (data->sharedZig) { - dropZig(data->sharedZig); - } - if (data->principalsArrayRef != NULL) { - /* XXX: raman: Should we free up the principals that are in that array also? */ - nsCapsFreePrincipalArray(data->principalsArrayRef); - } - XP_FREEIF(data->name); - XP_FREEIF(data->untransformed); - XP_FREEIF(data->transformed); - if (data->zip) - ns_zip_close(data->zip); - if (data->needUnlock) - NET_ChangeCacheFileLock(data->url_struct, FALSE); - if (data->url_struct) - NET_DropURLStruct(data->url_struct); - XP_FREEIF(data->codebaseBeforeSettingDomain); - XP_FREE(data); - } -} - -PR_STATIC_CALLBACK(JSBool) -globalPrivilegesEnabled(JSContext *cx, JSPrincipals *principals) -{ - JSPrincipalsData *data = (JSPrincipalsData *) principals; - - return (JSBool)(data->principalsArrayRef != NULL || - XP_STRCMP(principals->codebase, lm_unknown_origin_str) != 0); -} - -static void -printPrincipalsToConsole(JSContext *cx, JSPrincipals *principals) -{ - void *principalsArray; - struct nsPrincipal *principal; - const char *vendor; - uint32 i, count; - static char emptyStr[] = "<empty>\n"; - - principalsArray = principals->getPrincipalArray(cx, principals); - - if (principalsArray == NULL) { - lm_PrintToConsole(emptyStr); - return; - } - - lm_PrintToConsole("[\n"); - count = nsCapsGetPrincipalArraySize(principalsArray); - for (i = 0; i < count; i++) { - principal = nsCapsGetPrincipalArrayElement(principalsArray, i); - vendor = nsCapsPrincipalGetVendor(principal); - if (vendor == NULL) { - JS_ReportOutOfMemory(cx); - return; - } - lm_PrintToConsole(vendor); - lm_PrintToConsole(",\n"); - } - lm_PrintToConsole("]\n"); -} - -extern void -lm_InvalidateCertPrincipals(MochaDecoder *decoder, JSPrincipals *principals) -{ - JSPrincipalsData *data = (JSPrincipalsData *) principals; - - if (data->principalsArrayRef) { - lm_PrintToConsole("Invalidating certificate principals in "); - printPrincipalsToConsole(decoder->js_context, principals); - nsCapsFreePrincipalArray(data->principalsArrayRef); - data->principalsArrayRef = NULL; - } - data->signedness = HAS_UNSIGNED_SCRIPTS; -} - -extern JSBool -lm_SetDocumentDomain(JSContext *cx, JSPrincipals *principals, - const char *codebase) -{ - JSPrincipalsData *data; - - if (principals->codebase == codebase) - return JS_TRUE; - data = (JSPrincipalsData *) principals; - if (data->codebaseBeforeSettingDomain == NULL) - data->codebaseBeforeSettingDomain = principals->codebase; - else - XP_FREEIF(principals->codebase); - principals->codebase = getOriginFromSourceURL(codebase); - if (principals->codebase == NULL) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - if (data->principalsArrayRef != NULL) { - nsCapsFreePrincipalArray(data->principalsArrayRef); - data->principalsArrayRef = NULL; - } - return JS_TRUE; -} - -JSPrincipals * -lm_GetInnermostPrincipals(JSContext *cx, JSObject *container, - JSObject **foundIn) -{ - /* Get innermost non-null principals */ - while (container) { - if (foundIn) - *foundIn = container; - if (JS_InstanceOf(cx, container, &lm_layer_class, 0)) { - JSPrincipals *principals = lm_GetContainerPrincipals(cx, container); - if (principals) - return principals; - } else if (JS_InstanceOf(cx, container, &lm_window_class, 0)) { - MochaDecoder *decoder = JS_GetInstancePrivate(cx, container, - &lm_window_class, - NULL); - const char *origin_url; - - /* - * We need to check that the origin hasn't changed underneath - * us as a result of user navigation. - */ - origin_url = find_origin_url(cx, decoder); - if (!origin_url) - return NULL; - if (decoder->principals) { - JSPrincipalsData *data; - - if (sameOrigins(cx, origin_url, decoder->principals->codebase)) - return decoder->principals; - data = (JSPrincipalsData *) decoder->principals; - if (data->codebaseBeforeSettingDomain && - sameOrigins(cx, origin_url, - data->codebaseBeforeSettingDomain)) - { - /* document.domain was set, so principals are okay */ - return decoder->principals; - } - /* Principals have changed underneath us. Remove them. */ - JSPRINCIPALS_DROP(cx, decoder->principals); - decoder->principals = NULL; - } - /* Create new principals and return them. */ - decoder->principals = LM_NewJSPrincipals(NULL, NULL, origin_url); - if (decoder->principals == NULL) { - JS_ReportOutOfMemory(cx); - return NULL; - } - JSPRINCIPALS_HOLD(cx, decoder->principals); - return decoder->principals; - } - container = JS_GetParent(cx, container); - } - if (foundIn) - *foundIn = NULL; - return (JSPrincipals *) &unknownPrincipals; -} - -JSBool lm_CheckSetParentSlot(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSObject *newParent; - - if (!JSVAL_IS_OBJECT(*vp)) - return JS_TRUE; - newParent = JSVAL_TO_OBJECT(*vp); - if (newParent) { - const char *oldOrigin = lm_GetObjectOriginURL(cx, obj); - const char *newOrigin = lm_GetObjectOriginURL(cx, newParent); - if (!sameOrigins(cx, oldOrigin, newOrigin)) - return JS_TRUE; - } else { - if (!JS_InstanceOf(cx, obj, &lm_layer_class, 0) && - !JS_InstanceOf(cx, obj, &lm_window_class, 0)) - { - return JS_TRUE; - } - if (lm_GetContainerPrincipals(cx, obj) == NULL) { - JSPrincipals *principals; - principals = lm_GetInnermostPrincipals(cx, obj, NULL); - if (principals == NULL) - return JS_FALSE; - lm_SetContainerPrincipals(cx, obj, principals); - } - } - return JS_TRUE; -} - -static JSBool -canExtendTrust(JSContext *cx, void *from, void *to) -{ - if (from == NULL || to == NULL) { - return JS_FALSE; - } - return (from == to) || (JSBool)nsCapsCanExtendTrust(from, to); -} - -static JSPrincipals * -newJSPrincipalsFromArray(JSContext *cx, void *principalsArray, void *pNSISecurityContext); - -extern JSBool -lm_CheckContainerAccess(JSContext *cx, JSObject *obj, MochaDecoder *decoder, - JSTarget target) -{ - JSPrincipals *principals; - JSPrincipalsData *data; - JSStackFrame *fp; - JSScript *script; - JSPrincipals *subjPrincipals; - JSPrincipalsList *list; - const char *fn; - - if(decoder->principals) { - /* The decoder's js_context isn't in a request, so we should put it - * in one during this call. */ - JS_BeginRequest(decoder->js_context); - principals = lm_GetInnermostPrincipals(decoder->js_context, obj, NULL); - JS_EndRequest(decoder->js_context); - } else { - principals = NULL; - } - - if (principals == NULL) { - /* - * Attempt to access container before container has any scripts. - * Most of these accesses come from natives when initializing a - * window. Check for that by seeing if we have an executing script. - * If we do, remember the principals of the script that performed - * the access so we can report an error later if need be. - */ - fp = NULL; - subjPrincipals = lm_GetPrincipalsFromStackFrame(cx); - if (subjPrincipals == NULL) { - return JS_TRUE; - } - - /* See if subjPrincipals are already on list */ - list = (JSPrincipalsList *) decoder->early_access_list; - while (list && list->principals != subjPrincipals) { - list = list->next; - } - if (list == NULL) { - list = XP_ALLOC(sizeof(*list)); - if (list == NULL) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - list->principals = subjPrincipals; - JSPRINCIPALS_HOLD(cx, list->principals); - list->next = (JSPrincipalsList *) decoder->early_access_list; - decoder->early_access_list = list; - } - /* - * XXX - Still possible to modify contents of another page - * even if cross-origin access is disabled by setting to - * about:blank, modifying, and then loading the attackee. - * Similarly with window.open(""). - */ - return JS_TRUE; - } - - /* - * If object doesn't have signed scripts and cross-origin access - * is enabled, return true. - */ - data = (JSPrincipalsData *) principals; - if (data->signedness != HAS_SIGNED_SCRIPTS && lm_GetCrossOriginEnabled()) - return JS_TRUE; - - /* Check if user requested lower privileges */ - - if (data->signedness == HAS_SIGNED_SCRIPTS && - !lm_GetPrincipalsCompromise(cx, obj)) - { - /* - * We have signed scripts. Must check that the object principals are - * a subset of the the subject principals. - */ - fp = NULL; - fp = JS_FrameIterator(cx, &fp); - if (fp == NULL || (script = JS_GetFrameScript(cx, fp)) == NULL) { - /* haven't begun execution yet; allow the parser to create functions */ - return JS_TRUE; - } - subjPrincipals = JS_GetScriptPrincipals(cx, script); - if (subjPrincipals && - canExtendTrust(cx, - principals->getPrincipalArray(cx, principals), - subjPrincipals->getPrincipalArray(cx, subjPrincipals))) - { - return JS_TRUE; - } - fn = lm_GetSubjectOriginURL(cx); - if (!fn) - return JS_FALSE; - if (subjPrincipals && principals) { - lm_PrintToConsole("Principals of script: "); - printPrincipalsToConsole(cx, subjPrincipals); - lm_PrintToConsole("Principals of signed container: "); - printPrincipalsToConsole(cx, principals); - } - JS_ReportError(cx, container_error_message, fn); - return JS_FALSE; - } - - /* The signed script has called compromisePrincipals(), so - * we do the weaker origin check. - */ - return lm_CheckPermissions(cx, obj, target); -} - -static JSBool -checkEarlyAccess(MochaDecoder *decoder, JSPrincipals *principals) -{ - JSContext *cx; - JSPrincipalsData *data; - JSPrincipalsList *p; - JSBool ok; - - cx = decoder->js_context; - data = (JSPrincipalsData *) principals; - ok = JS_TRUE; - - for (p = (JSPrincipalsList *) decoder->early_access_list; p; p = p->next) { - if (data->signedness == HAS_SIGNED_SCRIPTS) { - if (!canExtendTrust(cx, - principals->getPrincipalArray(cx, principals), - p->principals->getPrincipalArray(cx, - p->principals))) - { - JS_ReportError(cx, container_error_message, - p->principals->codebase); - ok = JS_FALSE; - break; - } - } else { - if (!sameOrigins(cx, p->principals->codebase, - principals->codebase)) - { - /* - * Check to see if early access violated the cross-origin - * container check. - */ - JS_ReportError(cx, access_error_message, - p->principals->codebase); - ok = JS_FALSE; - break; - } - } - } - lm_DestroyPrincipalsList(cx, decoder->early_access_list); - decoder->early_access_list = NULL; - return ok; -} - -/* - * Compute the intersection of "principals" and "other", saving in - * "principals". Return true iff the intersection is nonnull. - */ -static JSBool -intersectPrincipals(MochaDecoder *decoder, JSPrincipals *principals, - JSPrincipals *newPrincipals) -{ - JSPrincipalsData *data = (JSPrincipalsData *) principals; - JSPrincipalsData *newData = (JSPrincipalsData *) newPrincipals; - JSContext *cx; - void *principalArray; - void *newPrincipalArray; - - XP_ASSERT(data->signedness != HAS_NO_SCRIPTS); - XP_ASSERT(newData->signedness != HAS_NO_SCRIPTS); - - cx = decoder->js_context; - if (!sameOrigins(cx, principals->codebase, newPrincipals->codebase)) { - XP_FREEIF(principals->codebase); - principals->codebase = JS_strdup(cx, lm_unknown_origin_str); - if (principals->codebase == NULL) { - return JS_FALSE; - } - } - - if (data->signedness == HAS_UNSIGNED_SCRIPTS || - newData->signedness == HAS_UNSIGNED_SCRIPTS) - { - /* - * No cert principals. Nonempty only if there is a codebase - * principal. - */ - lm_InvalidateCertPrincipals(decoder, principals); - return JS_TRUE; - } - /* Compute the intersection. */ - principalArray = getPrincipalArray(cx, principals); - newPrincipalArray = getPrincipalArray(cx, newPrincipals); - if (principalArray == NULL - || newPrincipalArray == NULL) - { - lm_InvalidateCertPrincipals(decoder, principals); - return JS_TRUE; - } - - principalArray = nsCapsIntersectPrincipalArray( - principalArray, newPrincipalArray); - - if (principalArray == NULL) { - lm_InvalidateCertPrincipals(decoder, principals); - return JS_TRUE; - } - - data->principalsArrayRef = principalArray; - return JS_TRUE; -} - -static uint32 -getPrincipalsCount(JSContext *cx, JSPrincipals *principals) -{ - void *principalArray; - - /* Get array of principals */ - principalArray = getPrincipalArray(cx, principals); - - return principalArray ? nsCapsGetPrincipalArraySize(principalArray) : 0; -} - -static JSBool -principalsEqual(JSContext *cx, JSPrincipals *a, JSPrincipals *b) -{ - JSPrincipalsData *dataA, *dataB; - void *arrayA; - void *arrayB; - - if (a == b) - return JS_TRUE; - - dataA = (JSPrincipalsData *) a; - dataB = (JSPrincipalsData *) b; - - if (dataA->signedness != dataB->signedness) - return JS_FALSE; - - arrayA = getPrincipalArray(cx, a); - arrayB = getPrincipalArray(cx, b); - - return (JSBool)(nsCapsComparePrincipalArray(arrayA, arrayB) - == nsSetComparisonType_Equal); -} - -/* - * createPrincipalsArray takes ZIG file information and returns a - * pointer to an array of nsPrincipal objects. - * It also registers the principals with the nsPrivilegeManager. - */ -static jref -createPrincipalsArray(JSPrincipals *principals) -{ - JSPrincipalsData *data = (JSPrincipalsData *) principals; - JSBool hasCodebase; - SOBITEM *item; - int i; - ZIG *zig; - unsigned count; - void *result; - struct nsPrincipal *principal; - ZIG_Context * zig_cx = NULL; - - setupJSCapsCallbacks(); - - if (principals == (JSPrincipals *) &unknownPrincipals) - return NULL; - - hasCodebase = (JSBool)(principals->codebase && - XP_STRCMP(principals->codebase, lm_unknown_origin_str) != 0); - - /* First count the number of principals */ - count = hasCodebase ? 1 : 0; - - zig = data->signedness == HAS_UNSIGNED_SCRIPTS - ? NULL - : (data->sharedZig ? data->sharedZig->zig : NULL); - - if (zig && data->name) { - /* Make sure file is signed */ - if ((zig_cx = SOB_find(zig, data->name, ZIG_SIGN)) != NULL) { - int zig_count=0; - /* count the number of signers */ - while (SOB_find_next(zig_cx, &item) >= 0) { - zig_count++; - } - SOB_find_end(zig_cx); - count += zig_count; - } else { - zig = NULL; - } - } - - if (count == 0) { - return NULL; - } - - /* Now allocate the array */ - result = nsCapsNewPrincipalArray(count); - if (result == NULL) { - return NULL; - } - - if (zig && ((zig_cx = SOB_find(zig, data->name, ZIG_SIGN)) == NULL)) { - return NULL; - } - - i = 0; - while (zig && SOB_find_next(zig_cx, &item) >= 0) { - FINGERZIG *fingPrint; - - fingPrint = (FINGERZIG *) item->data; - - /* create a new nsPrincipal(CERT_KEY, fingPrint->key) */ - principal = nsCapsNewPrincipal(nsPrincipalType_CertKey, - fingPrint->key, - fingPrint->length, - zig); - nsCapsRegisterPrincipal(principal); - nsCapsSetPrincipalArrayElement(result, i++, principal); - } - if (zig) { - SOB_find_end(zig_cx); - } - - if (hasCodebase) { - /* Add a codebase principal. */ - char *javaCodebase; - javaCodebase = getJavaCodebaseFromOrigin(principals->codebase); - if (javaCodebase == NULL) - return NULL; - principal = nsCapsNewPrincipal(nsPrincipalType_CodebaseExact, - javaCodebase, - XP_STRLEN(javaCodebase), - NULL); - nsCapsRegisterPrincipal(principal); - nsCapsSetPrincipalArrayElement(result, i++, principal); - XP_FREE(javaCodebase); - } - - data->principalsArrayRef = result; - - return result; -} - -static JSBool -isExternalCaptureEnabled(JSContext *cx, JSPrincipals *principals) -{ - JSPrincipalsData *data = (JSPrincipalsData *) principals; - - if (data->externalCapturePrincipalsCount == 0) { - return JS_FALSE; - } else { - uint32 count = getPrincipalsCount(cx, principals); - return (JSBool)(data->externalCapturePrincipalsCount == count); - } -} - -void -lm_SetExternalCapture(JSContext *cx, JSPrincipals *principals, - JSBool b) -{ - JSPrincipalsData *data = (JSPrincipalsData *) principals; - - if (b) { - uint32 count = getPrincipalsCount(cx, principals); - data->externalCapturePrincipalsCount = count; - } else { - data->externalCapturePrincipalsCount = 0; - } -} - - -JSBool -lm_CanAccessTarget(JSContext *cx, JSTarget target) -{ - JSPrincipals *principals; - - principals = lm_GetPrincipalsFromStackFrame(cx); - - if ((nsCapsGetRegistrationModeFlag()) && principals && - (NET_URL_Type(principals->codebase) == FILE_TYPE_URL)) - return JS_TRUE; - - if (principals && !globalPrivilegesEnabled(cx, principals)) { - return JS_FALSE; - } - if (!principalsCanAccessTarget(cx, target)) { - return JS_FALSE; - } - return JS_TRUE; -} - - -/* This array must be kept in sync with the JSTarget enum in jsapi.h */ -static char *targetStrings[] = { - "UniversalBrowserRead", - "UniversalBrowserWrite", - "UniversalSendMail", - "UniversalFileRead", - "UniversalFileWrite", - "UniversalPreferencesRead", - "UniversalPreferencesWrite", - "AccountSetup", - /* See Target.java for more targets */ -}; - -int -findTarget(const char *target) -{ - int i=0; - for(i=0; i<JSTARGET_MAX; i++) - { - if (XP_STRCMP(target, targetStrings[i]) == 0) - { - return i; - } - } - return -1; -} -/* -** Exported entry point to support nsISecurityContext::Implies method. -*/ -JSBool -LM_CanAccessTargetStr(JSContext *cx, const char *target) -{ - int intTarget = findTarget(target); - JSTarget jsTarget; - if(intTarget < 0) - { - return PR_FALSE; - } - jsTarget = (JSTarget)intTarget; - return lm_CanAccessTarget(cx, jsTarget); -} - - -/* - * If given principals can access the given target, return true. Otherwise - * return false. The script must already have explicitly requested access - * to the given target. - */ -static JSBool -principalsCanAccessTarget(JSContext *cx, JSTarget target) -{ - struct nsPrivilegeTable *annotation; - struct nsPrivilege *privilege; - struct nsTarget *capsTarget; - nsPermissionState perm; - JSStackFrame *fp; - void *annotationRef; - void *principalArray = NULL; - JSStackFrame *pFrameToStartLooking = JVM_GetStartJSFrameFromParallelStack(); - JSStackFrame *pFrameToEndLooking = JVM_GetEndJSFrameFromParallelStack(pFrameToStartLooking); - - setupJSCapsCallbacks(); - - /* Map JSTarget to nsTarget */ - XP_ASSERT(target >= 0); - XP_ASSERT(target < sizeof(targetStrings)/sizeof(targetStrings[0])); - capsTarget = nsCapsFindTarget(targetStrings[target]); - - /* Find annotation */ - annotationRef = NULL; - principalArray = NULL; - fp = pFrameToStartLooking; - while ((fp = JS_FrameIterator(cx, &fp)) != pFrameToEndLooking) { - void *current; - if (JS_GetFrameScript(cx, fp) == NULL) - continue; - current = JS_GetFramePrincipalArray(cx, fp); - if (current == NULL) { - return JS_FALSE; - } - annotationRef = (void *) JS_GetFrameAnnotation(cx, fp); - if (annotationRef) { - if (principalArray && - !nsCapsCanExtendTrust(current, principalArray)) - { - return JS_FALSE; - } - break; - } - principalArray = principalArray - ? nsCapsIntersectPrincipalArray(principalArray, current) - : current; - } - - if (annotationRef) { - annotation = (struct nsPrivilegeTable *)annotationRef; - } else { -#ifdef OJI - /* - * Call from Java into JS. Just call the Java routine for checking - * privileges. - */ - if (principalArray) { - /* - * Must check that the principals that signed the Java applet are - * a subset of the principals that signed this script. - */ - void *javaPrincipals = JVM_GetJavaPrincipalsFromStack(pFrameToStartLooking); - - if (!canExtendTrust(cx, javaPrincipals, principalArray)) { - return JS_FALSE; - } - } - /* - * XXX sudu: TODO: Setup the parameters representing a target. - */ - return JVM_NSISecurityContextImplies(pFrameToStartLooking, targetStrings[target], NULL); -#endif /* JAVA */ - /* No annotation in stack */ - return JS_FALSE; - } - - /* Now find permission for (annotation, target) pair. */ - privilege = nsCapsGetPrivilege(annotation, capsTarget); - if (privilege == NULL) { - return JS_FALSE; - } - XP_ASSERT(privilege); - perm = nsCapsGetPermission(privilege); - - return (JSBool)(perm == nsPermissionState_Allowed); -} - - -PR_STATIC_CALLBACK(void *) -getPrincipalArray(JSContext *cx, struct JSPrincipals *principals) -{ - JSPrincipalsData *data = (JSPrincipalsData *) principals; - - /* Get array of principals */ - - if (data->principalsArrayRef == NULL) { - if (createPrincipalsArray(principals) == NULL) - return NULL; - } - - return data->principalsArrayRef; -} - - -extern char * -LM_ExtractFromPrincipalsArchive(JSPrincipals *principals, char *name, - uint *length) -{ - JSPrincipalsData *data = (JSPrincipalsData *) principals; - char *result = NULL; - - result = LM_LoadFromZipFile(data->zip, name); - *length = result ? XP_STRLEN(result) : 0; - - return result; -} - -extern JSBool -LM_SetUntransformedSource(JSPrincipals *principals, char *original, - char *transformed) -{ - JSPrincipalsData *data = (JSPrincipalsData *) principals; - - XP_ASSERT(data->untransformed == NULL); - data->untransformed = XP_STRDUP(original); - if (data->untransformed == NULL) - return JS_FALSE; - data->transformed = XP_STRDUP(transformed); - if (data->transformed == NULL) - return JS_FALSE; - return JS_TRUE; -} - -JSPrincipals * PR_CALLBACK -LM_GetJSPrincipalsFromJavaCaller(JSContext *cx, void *principalsArray, void *pNSISecurityContext) -{ - setupJSCapsCallbacks(); - if (principalsArray == NULL) - return NULL; - - return newJSPrincipalsFromArray(cx, principalsArray, pNSISecurityContext); -} - -static JSPrincipals * -newJSPrincipalsFromArray(JSContext *cx, void *principalsArray, void *pNSISecurityContext) -{ - JSPrincipals *result; - struct nsPrincipal *principal; - const char *codebase; - JSPrincipalsData *data; - uint32 i, count; - - setupJSCapsCallbacks(); - - count = nsCapsGetPrincipalArraySize(principalsArray); - if (count == 0) { - JS_ReportError(cx, "No principals found for Java caller"); - return NULL; - } - - codebase = NULL; - for (i = count; i > 0; i--) { - principal = nsCapsGetPrincipalArrayElement(principalsArray, i-1); - if (nsCapsIsCodebaseExact(principal)) { - codebase = nsCapsPrincipalToString(principal); - break; - } - } - - result = LM_NewJSPrincipals(NULL, NULL, (char *) codebase); - if (result == NULL) { - JS_ReportOutOfMemory(cx); - return NULL; - } - - data = (JSPrincipalsData *) result; - data->principalsArrayRef = principalsArray; - data->pNSISecurityContext = pNSISecurityContext; - data->signedness = count == 1 && codebase - ? HAS_UNSIGNED_SCRIPTS - : HAS_SIGNED_SCRIPTS; - - return result; -} - -static JSBool -verifyPrincipals(MochaDecoder *decoder, JSPrincipals *containerPrincipals, - JSPrincipals *principals, char *name, char *src, - uint srcSize, JSBool implicitName) -{ - JSPrincipalsData *data = (JSPrincipalsData *) principals; - ZIG *zig; - DIGESTS *dig = NULL; - JSBool sameName = JS_FALSE; - int ret; - JSPrincipalsData *containerData; - ns_zip_t *containerZip; - JSBool verified; - SOBITEM *item; - ZIG_Context * zig_cx; - - if (data->signedness == HAS_UNSIGNED_SCRIPTS) - return JS_FALSE; - - containerData = (JSPrincipalsData *) containerPrincipals; - - containerZip = - (containerData && containerData->signedness != HAS_UNSIGNED_SCRIPTS) - ? containerData->zip - : NULL; - - if (data->zip == NULL && containerZip == NULL) - return JS_FALSE; - - if (data->name && data->signedness == HAS_NO_SCRIPTS) { - if (XP_STRCMP(name, data->name) == 0) { - sameName = JS_TRUE; - } else { - return JS_FALSE; - } - } - - /* - * Set to the value we want if verification fails, and then - * reset below. - */ - verified = JS_FALSE; - - if (containerData == NULL) { - /* First script seen; initialize zig. */ - data->sharedZig = holdZig(newSharedZig(data->zip)); - } else if (data == containerData) { - /* Already have a zig if there is one; nothing more to do. */ - } else if (data->zip == NULL) { - /* "Inherit" data->sharedZig from container data. */ - data->sharedZig = holdZig(containerData->sharedZig); - } else if (containerData->url_struct && - XP_STRCMP(data->url_struct->address, - containerData->url_struct->address) == 0) - { - /* Two identical zips. Share the zigs. */ - data->sharedZig = holdZig(containerData->sharedZig); - } else { - /* Different zips. Must create a new zig. */ - data->sharedZig = holdZig(newSharedZig(data->zip)); - } - - if (data->sharedZig == NULL) - return JS_FALSE; - - zig = data->sharedZig->zig; - dig = SOB_calculate_digest(src, srcSize); - if (dig == NULL) - return JS_FALSE; - - zig_cx = NULL; - ret = SOB_verify_digest(zig, name, dig); - XP_FREE(dig); - if ((ret >= 0) && - ((zig_cx = SOB_find(zig, name, ZIG_SIGN)) != NULL) && - (SOB_find_next(zig_cx, &item) >= 0)) - { - verified = JS_TRUE; - if (!sameName) { - data->name = JS_strdup(decoder->js_context, name); - if (data->name == NULL) - return JS_FALSE; - } - } else if (!implicitName || ret != ZIG_ERR_PNF) { - LM_PrintZigError(ret, zig, "", name, SOB_get_error(ret)); - } - if (zig_cx) { - SOB_find_end(zig_cx); - } - return verified; -} - - - -extern JSPrincipals * -LM_RegisterPrincipals(MochaDecoder *decoder, JSPrincipals *principals, - char *name, char *src) -{ - JSContext *cx = decoder->js_context; - JSBool verified; - JSPrincipalsData *data; - JSObject *inner, *container; - JSPrincipals *containerPrincipals; - JSPrincipalsData *containerData; - char *untransformed, *implicitName; - - data = (JSPrincipalsData *) principals; - inner = lm_GetActiveContainer(decoder); - if (inner == NULL) - return NULL; - containerPrincipals = lm_GetInnermostPrincipals(decoder->js_context, - inner, &container); - if (containerPrincipals == NULL) { - /* Out of memory */ - return NULL; - } - containerData = (JSPrincipalsData *) containerPrincipals; - - if (name == NULL && principals != containerPrincipals && principals) { - /* - * "name" argument omitted since it was specified when "principals" - * was created. Get it from "principals". - */ - name = data->name; - } - implicitName = NULL; - if (name == NULL && data && data->signedness == HAS_SIGNED_SCRIPTS) { - /* - * Name is unspecified. Use the implicit name formed from the - * origin URL and the ordinal within the page. For example, the - * third implicit name on http://www.co.com/dir/mypage.html - * would be "_mypage2". - */ - const char *url; - char *path; - - url = LM_GetSourceURL(decoder); - if (url == NULL) { - return NULL; - } - path = *url? NET_ParseURL(url, GET_PATH_PART) : NULL; - if (path && *path) { - char *s; - s = XP_STRRCHR(path, '.'); - if (s) - *s = '\0'; - s = XP_STRRCHR(path, '/'); - implicitName = PR_sprintf_append(NULL, "_%s%d", s ? s+1 : path, - decoder->signature_ordinal++); - name = implicitName; - } - XP_FREEIF(path); - } - - untransformed = NULL; - if (data && data->untransformed && !XP_STRCMP(data->transformed, src)) { - /* Perform verification on original source. */ - src = untransformed = data->untransformed; - data->untransformed = NULL; - XP_FREE(data->transformed); - data->transformed = NULL; - } - - /* Verify cert principals */ - verified = (JSBool)(principals && name && src && - verifyPrincipals(decoder, containerPrincipals, principals, name, - src, XP_STRLEN(src), (JSBool)(implicitName != NULL))); - - XP_FREEIF(untransformed); - src = NULL; - XP_FREEIF(implicitName); - name = NULL; - - /* - * Now that we've attempted verification, we need to set the appropriate - * level of signedness based on whether verification succeeded. - * We avoid setting signedness if principals is the same as container - * principals (i.e., we "inherited" the principals from a script earlier - * in the page) and we are not in a subcontainer of the container where - * the principals were found. In that case we will create a new set of - * principals for the inner container. - */ - if (data && !(principals == containerPrincipals && container != inner)) { - data->signedness = verified ? HAS_SIGNED_SCRIPTS : HAS_UNSIGNED_SCRIPTS; - } - - if (verified && decoder->early_access_list && - !checkEarlyAccess(decoder, principals)) - { - return NULL; - } - - if (!verified) { - if (!lm_GetUnsignedExecutionEnabled()) { - /* Execution of unsigned scripts disabled. Return now. */ - return NULL; - } - /* No cert principals; try codebase principal */ - if (principals == NULL || principals == containerPrincipals) { - if (container == inner || - containerData->signedness == HAS_UNSIGNED_SCRIPTS) - { - principals = containerPrincipals; - data = (JSPrincipalsData *) principals; - } else { - /* Just put restricted principals in inner */ - principals = LM_NewJSPrincipals(NULL, NULL, - containerPrincipals->codebase); - if (principals == NULL) { - JS_ReportOutOfMemory(cx); - return NULL; - } - data = (JSPrincipalsData *) principals; - } - } - lm_InvalidateCertPrincipals(decoder, principals); - - if (decoder->early_access_list && !lm_GetCrossOriginEnabled() && - !checkEarlyAccess(decoder, principals)) - { - return NULL; - } - - if (container == inner) { - lm_InvalidateCertPrincipals(decoder, containerPrincipals); - - /* compare codebase principals */ - if (!sameOrigins(cx, containerPrincipals->codebase, - principals->codebase)) - { - /* Codebases don't match; evaluate under different - principals than container */ - return principals; - } - /* Codebases match */ - return containerPrincipals; - } - - /* Just put restricted principals in inner */ - lm_SetContainerPrincipals(cx, inner, principals); - return principals; - } - - if (!principalsEqual(cx, principals, containerPrincipals)) { - /* We have two unequal sets of principals. */ - if (containerData->signedness == HAS_NO_SCRIPTS && - sameOrigins(cx, principals->codebase, - containerPrincipals->codebase)) - { - /* - * Principals are unequal because we have container principals - * carrying only a codebase, and the principals of this script - * that carry cert principals as well. - */ - lm_SetContainerPrincipals(cx, container, principals); - return principals; - } - if (inner == container) { - if (containerData->signedness == HAS_NO_SCRIPTS) { - lm_SetContainerPrincipals(cx, container, principals); - return principals; - } - /* - * Intersect principals and container principals, - * modifying the container principals. - */ - lm_PrintToConsole("Intersecting principals "); - printPrincipalsToConsole(cx, containerPrincipals); - lm_PrintToConsole("with "); - printPrincipalsToConsole(cx, principals); - if (!intersectPrincipals(decoder, containerPrincipals, - principals)) - { - return NULL; - } - lm_PrintToConsole("yielding "); - printPrincipalsToConsole(cx, containerPrincipals); - } else { - /* - * Store the disjoint set of principals in the - * innermost container - */ - lm_SetContainerPrincipals(cx, inner, principals); - return principals; - } - - } - return containerPrincipals; -} - - -/******************************************************************************* - * Glue code for JS stack crawling callbacks - ******************************************************************************/ - -typedef struct JSFrameIterator { - JSStackFrame *fp; - JSContext *cx; - JRIEnv *env; - void *intersect; - PRBool sawEmptyPrincipals; -} JSFrameIterator; - -static JSFrameIterator * -lm_NewJSFrameIterator(void *context) -{ - JSContext *cx = (JSContext *)context; - JSFrameIterator *result; - void *array; - JRIEnv *env = NULL; - - result = XP_ALLOC(sizeof(JSFrameIterator)); - if (result == NULL) { - return NULL; - } - - if (cx == NULL) { - return NULL; - } - - result->env = env; - result->fp = NULL; - result->cx = cx; - result->fp = JS_FrameIterator(cx, &result->fp); - array = result->fp - ? JS_GetFramePrincipalArray(cx, result->fp) - : NULL; - result->intersect = array; - result->sawEmptyPrincipals = - (result->intersect == NULL && result->fp && - JS_GetFrameScript(cx, result->fp)) - ? PR_TRUE : PR_FALSE; - - return result; -} - - -static PRBool -lm_NextJSJavaFrame(struct JSFrameIterator *iterator) -{ - void *current; - void *previous; - - if (iterator->fp == 0) { - return PR_FALSE; - } - - current = JS_GetFramePrincipalArray(iterator->cx, iterator->fp); - if (current == NULL) { - if (JS_GetFrameScript(iterator->cx, iterator->fp)) - iterator->sawEmptyPrincipals = PR_TRUE; - } else { - if (iterator->intersect) { - previous = iterator->intersect; - current = nsCapsIntersectPrincipalArray(current, previous); - /* XXX: raman: should we do a free the previous principal Array */ - nsCapsFreePrincipalArray(iterator->intersect); - } - iterator->intersect = current; - } - iterator->fp = JS_FrameIterator(iterator->cx, &iterator->fp); - return iterator->fp != NULL; -} - -static PRBool -nextJSFrame(struct JSFrameIterator **iteratorp) -{ - JSFrameIterator *iterator = *iteratorp; - PRBool result = lm_NextJSJavaFrame(iterator); - if (!result) { - if (iterator->intersect) - nsCapsFreePrincipalArray(iterator->intersect); - XP_FREE(iterator); - *iteratorp = NULL; - } - return result; -} - -/* - * - * CALLBACKS to walk the stack - * - */ - -typedef struct NSJSJavaFrameWrapper { - struct JSFrameIterator *iterator; -} NSJSJavaFrameWrapper; - -struct NSJSJavaFrameWrapper * -lm_NewNSJSJavaFrameWrapperCB(void *context) -{ - struct NSJSJavaFrameWrapper *result; - - result = (struct NSJSJavaFrameWrapper *)PR_CALLOC(sizeof(struct NSJSJavaFrameWrapper)); - if (result == NULL) { - return NULL; - } - - result->iterator = lm_NewJSFrameIterator(context); - return result; -} - -void lm_FreeNSJSJavaFrameWrapperCB(struct NSJSJavaFrameWrapper *wrapper) -{ - PR_FREEIF(wrapper); -} - -void lm_GetStartFrameCB(struct NSJSJavaFrameWrapper *wrapper) -{ -} - -PRBool lm_IsEndOfFrameCB(struct NSJSJavaFrameWrapper *wrapper) -{ - if ((wrapper == NULL) || (wrapper->iterator == NULL)) - return PR_TRUE; - return PR_FALSE; -} - -PRBool lm_IsValidFrameCB(struct NSJSJavaFrameWrapper *wrapper) -{ - return (wrapper->iterator != NULL); -} - -void *lm_GetNextFrameCB(struct NSJSJavaFrameWrapper *wrapper, int *depth) -{ - if ((wrapper->iterator == NULL) || - (!nextJSFrame(&(wrapper->iterator)))) { - return NULL; - } - (*depth)++; - return wrapper->iterator; -} - -void * lm_GetPrincipalArrayCB(struct NSJSJavaFrameWrapper *wrapper) -{ - JSFrameIterator *iterator; - if (wrapper->iterator == NULL) - return NULL; - iterator = wrapper->iterator; - return JS_GetFramePrincipalArray(iterator->cx, iterator->fp); -} - -void * lm_GetAnnotationCB(struct NSJSJavaFrameWrapper *wrapper) -{ - JSFrameIterator *iterator; - void *annotaion; - void *current; - - if (wrapper->iterator == NULL) { - return NULL; - } - iterator = wrapper->iterator; - - annotaion = JS_GetFrameAnnotation(iterator->cx, iterator->fp); - if (annotaion == NULL) - return NULL; - - current = JS_GetFramePrincipalArray(iterator->cx, iterator->fp); - - if (iterator->sawEmptyPrincipals || current == NULL || - (iterator->intersect && - !canExtendTrust(iterator->cx, current, iterator->intersect))) - return NULL; - - return annotaion; -} - -void * lm_SetAnnotationCB(struct NSJSJavaFrameWrapper *wrapper, void *privTable) -{ - if (wrapper->iterator) { - JSFrameIterator *iterator = wrapper->iterator; - JS_SetFrameAnnotation(iterator->cx, iterator->fp, privTable); - } - return privTable; -} - -/* End of Callbacks */ - -static PRBool privManagerInited = PR_FALSE; - -static void -setupJSCapsCallbacks() -{ - if (privManagerInited) - return; - privManagerInited = TRUE; - - nsCapsInitialize(); - setNewNSJSJavaFrameWrapperCallback(lm_NewNSJSJavaFrameWrapperCB); - setFreeNSJSJavaFrameWrapperCallback(lm_FreeNSJSJavaFrameWrapperCB); - setGetStartFrameCallback(lm_GetStartFrameCB); - setIsEndOfFrameCallback(lm_IsEndOfFrameCB); - setIsValidFrameCallback(lm_IsValidFrameCB); - setGetNextFrameCallback(lm_GetNextFrameCB); - setOJIGetPrincipalArrayCallback(lm_GetPrincipalArrayCB); - setOJIGetAnnotationCallback(lm_GetAnnotationCB); - setOJISetAnnotationCallback(lm_SetAnnotationCB); -} diff --git a/mozilla/lib/libmocha/lm_tree.c b/mozilla/lib/libmocha/lm_tree.c deleted file mode 100644 index 0f309cbbec9..00000000000 --- a/mozilla/lib/libmocha/lm_tree.c +++ /dev/null @@ -1,1395 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - * JS reflection of builtins in the current document. - * - * rjc@netscape.com, 9/21/98 - */ - -#include "lm.h" -#include "xp.h" -#include "layout.h" -#include "prlog.h" -#include "htrdf.h" - -/* XXXbe move to layout.h */ -extern uint -LO_EnumerateBuiltins(MWContext *context, int32 layer_id); - -/* Global XXX #1: don't hold LO_BuiltinStruct pointers, use ids, to avoid - dangling refs when mocha thread races with doc-discard */ - -/* Global XXX #2: don't hold the layout lock across JS_* callouts, or if not - necesary to fondle LO_BuiltinStruct etc. (see above) */ - -extern PRLogModuleInfo* Moja; -#define warn PR_LOG_WARN -#define debug PR_LOG_DEBUG - -enum builtins_array_slot { - BUILTINS_ARRAY_LENGTH = -1 -}; - -enum builtin_element_array_slot { - BUILTIN_ELEMENT_ARRAY_LENGTH = -1 -}; - -enum builtins_node_array_slot { - BUILTIN_NODE_ARRAY_LENGTH = -1, - BUILTINS_NODE_ARRAY_NAME = -2, - BUILTINS_NODE_ARRAY_URL = -3, - BUILTINS_NODE_ARRAY_SELECTED = -4, - BUILTINS_NODE_ARRAY_CONTAINER = -5, - BUILTINS_NODE_ARRAY_CONTAINER_OPEN = -6, - BUILTINS_NODE_ARRAY_SEPARATOR = -7, - BUILTINS_NODE_ARRAY_ENABLED = -8 -}; - -enum builtins_slot { - BUILTINS_NAME = -1, - BUILTINS_DATA = -2, - BUILTINS_TARGET = -3, - BUILTINS_LENGTH = -4, - BUILTINS_SELECTEDINDEX = -5, - BUILTINS_ELEMENTS = -6, - BUILTINS_NODES = -7 -}; - -enum builtins_element_slot { - BUILTINS_ELEMENT_NAME = -1, - BUILTINS_ELEMENT_URL = -2, - BUILTINS_ELEMENT_SELECTED = -3, - BUILTINS_ELEMENT_CONTAINER = -4, - BUILTINS_ELEMENT_CONTAINER_OPEN = -5, - BUILTINS_ELEMENT_SEPARATOR = -6, - BUILTINS_ELEMENT_ENABLED = -7 -}; - -enum builtins_node_slot { - BUILTINS_NODE_NAME = -1, - BUILTINS_NODE_URL = -2, - BUILTINS_NODE_SELECTED = -3, - BUILTINS_NODE_CONTAINER = -4, - BUILTINS_NODE_CONTAINER_OPEN = -5, - BUILTINS_NODE_SEPARATOR = -6, - BUILTINS_NODE_ENABLED = -7 -}; - -static JSPropertySpec builtins_array_props[] = { - {lm_length_str, BUILTINS_ARRAY_LENGTH, - JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {0} -}; - -static JSPropertySpec builtin_element_array_props[] = { - {lm_length_str, BUILTIN_ELEMENT_ARRAY_LENGTH, - JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {0} -}; - -static JSPropertySpec builtin_node_array_props[] = { - {lm_length_str, BUILTIN_NODE_ARRAY_LENGTH, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"name", BUILTINS_NODE_ARRAY_NAME, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"url", BUILTINS_NODE_ARRAY_URL, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"selected", BUILTINS_NODE_ARRAY_SELECTED, JSPROP_ENUMERATE}, - {"container", BUILTINS_NODE_ARRAY_CONTAINER, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"open", BUILTINS_NODE_ARRAY_CONTAINER_OPEN, JSPROP_ENUMERATE}, - {"separator", BUILTINS_NODE_ARRAY_SEPARATOR, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"enabled", BUILTINS_NODE_ARRAY_ENABLED, JSPROP_ENUMERATE}, - {0} -}; - -static JSPropertySpec builtins_props[] = { - {"name", BUILTINS_NAME, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"data", BUILTINS_DATA, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"target", BUILTINS_TARGET, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {lm_length_str, BUILTINS_LENGTH, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"selectedIndex", BUILTINS_SELECTEDINDEX, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"elements", BUILTINS_ELEMENTS, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"nodes", BUILTINS_NODES, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {0} -}; - -static JSPropertySpec builtin_element_props[] = { - {"name", BUILTINS_ELEMENT_NAME, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"url", BUILTINS_ELEMENT_URL, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"selected", BUILTINS_ELEMENT_SELECTED, JSPROP_ENUMERATE}, - {"container", BUILTINS_ELEMENT_CONTAINER, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"open", BUILTINS_ELEMENT_CONTAINER_OPEN, JSPROP_ENUMERATE}, - {"separator", BUILTINS_ELEMENT_SEPARATOR, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"enabled", BUILTINS_ELEMENT_ENABLED, JSPROP_ENUMERATE}, - {0} -}; - -static JSPropertySpec builtin_node_props[] = { - {"name", BUILTINS_NODE_NAME, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"url", BUILTINS_NODE_URL, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"selected", BUILTINS_NODE_SELECTED, JSPROP_ENUMERATE}, - {"container", BUILTINS_NODE_CONTAINER, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"open", BUILTINS_NODE_CONTAINER_OPEN, JSPROP_ENUMERATE}, - {"separator", BUILTINS_NODE_SEPARATOR, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT}, - {"enabled", BUILTINS_NODE_ENABLED, JSPROP_ENUMERATE}, - {0} -}; - -typedef struct JSBuiltin { - MochaDecoder *decoder; - LO_BuiltinStruct *builtin; -} JSBuiltin; -typedef struct JSElement { - MochaDecoder *decoder; - LO_BuiltinStruct *builtin; - uint32 slot; -} JSElement; -typedef struct JSNode { - MochaDecoder *decoder; - LO_BuiltinStruct *builtin; - HT_Resource node; -} JSNode; - -extern JSClass lm_builtins_array_class; -extern JSClass lm_builtins_class; -extern JSClass lm_builtin_element_array_class; -extern JSClass lm_builtin_element_class; -extern JSClass lm_builtin_node_array_class; -extern JSClass lm_builtin_node_class; - -JSObject * -lm_GetBuiltinsArray(MochaDecoder *decoder, JSObject *document) -{ - JSContext *cx = decoder->js_context; - JSObject *obj; - JSObjectArray *array; - JSDocument *doc; - - doc = JS_GetPrivate(cx, document); - if (!doc) - return NULL; - - obj = doc->builtins; - if (obj) - return obj; - - array = JS_malloc(cx, sizeof *array); - if (!array) - return NULL; - array->decoder = NULL; /* in case of error below */ - - obj = JS_NewObject(cx, &lm_builtins_array_class, NULL, document); - if (!obj || !JS_SetPrivate(cx, obj, array)) { - JS_free(cx, array); - return NULL; - } - - if (!JS_DefineProperties(cx, obj, builtins_array_props)) - return NULL; - - array->decoder = HOLD_BACK_COUNT(decoder); - array->length = 0; - array->layer_id = doc->layer_id; - doc->builtins = obj; - return obj; -} - -JSObject * -LM_ReflectBuiltin(MWContext *context, LO_BuiltinStruct *lo_builtin, - PA_Tag * tag, int32 layer_id, uint index) -{ - JSObject *obj, *array_obj, *outer_obj, *document; - JSBuiltin *builtin; - MochaDecoder *decoder; - JSContext *cx; - char *name; - uint32 i; - - obj = lo_builtin->mocha_object; - if (obj) - return obj; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return NULL; - - cx = decoder->js_context; - - /* get the name */ - name = 0; - for (i = 0; i < lo_builtin->attributes.n; i++) { - if (!XP_STRCASECMP(lo_builtin->attributes.names[i], "name")) { - name = strdup(lo_builtin->attributes.values[i]); - break; - } - } - - /* Get the document object that will hold this builtin */ - document = lm_GetDocumentFromLayerId(decoder, layer_id); - if (!document) { - LM_PutMochaDecoder(decoder); - return NULL; - } - - array_obj = lm_GetBuiltinsArray(decoder, document); - if (!array_obj) { - LM_PutMochaDecoder(decoder); - return NULL; - } - - /* XXX */ - outer_obj = lm_GetOuterObject(decoder); - - obj = JS_NewObject(cx, &lm_builtins_class, NULL, document); - if (!obj) - goto out; - - builtin = JS_malloc(cx, sizeof *builtin); - if (!builtin) - goto out; - builtin->decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - builtin->decoder = HOLD_BACK_COUNT(decoder); - builtin->builtin = lo_builtin; - if (!JS_SetPrivate(cx, obj, builtin)) - { - obj = NULL; - goto out; - } - - /* put it in the builtin array */ - if (!lm_AddObjectToArray(cx, array_obj, name, index, obj)) { - obj = NULL; - goto out; - } - - if (!JS_DefineProperties(cx, obj, builtins_props)) - { - obj = NULL; - goto out; - } - - /* put it in the document scope */ - if (name && !JS_DefineProperty(cx, outer_obj, name, OBJECT_TO_JSVAL(obj), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - PR_LOG(Moja, warn, ("failed to define builtin 0x%x as %s\n", - lo_builtin, name)); - /* XXX remove it altogether? */ - } - - /* cache it in layout data structure */ - lo_builtin->mocha_object = obj; - -out: - LM_PutMochaDecoder(decoder); - return obj; -} - -PR_STATIC_CALLBACK(JSBool) -builtins_array_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSObjectArray *array; - MochaDecoder *decoder; - MWContext *context; - jsint count, slot; - LO_BuiltinStruct *builtin_data; - JSObject *newobj; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - array = JS_GetPrivate(cx, obj); - if (!array) - return JS_TRUE; - decoder = array->decoder; - context = decoder->window_context; - - if (!context) - return JS_TRUE; - - LO_LockLayout(); - switch (slot) { - case BUILTINS_ARRAY_LENGTH: - count = LO_EnumerateBuiltins(context, array->layer_id); - if (count > array->length) - array->length = count; - *vp = INT_TO_JSVAL(array->length); - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - LO_UnlockLayout(); - return JS_TRUE; - } - builtin_data = LO_GetBuiltinByIndex(context, array->layer_id, (uint)slot); - if (!builtin_data) { - JS_ReportError(cx, "no builtin with index %d\n"); - goto err; - } - newobj = LM_ReflectBuiltin(context, builtin_data, NULL, - array->layer_id, (uint)slot); - if (!newobj) { - JS_ReportError(cx, - "unable to reflect builtin with index %d - not loaded yet?", - (uint) slot); - goto err; - } - *vp = OBJECT_TO_JSVAL(newobj); - XP_ASSERT(slot < array->length); - break; - } - LO_UnlockLayout(); - return JS_TRUE; - err: - LO_UnlockLayout(); - return JS_FALSE; -} - -PR_STATIC_CALLBACK(JSBool) -builtin_element_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSElement *element; - MochaDecoder *decoder; - MWContext *context; - jsint slot; - HT_Pane pane; - HT_View view; - HT_Resource node; - - element = JS_GetPrivate(cx, obj); - if (!element) - return JS_TRUE; - decoder = element->decoder; - context = decoder->window_context; - if (!context) - return JS_TRUE; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - slot = JSVAL_TO_INT(id); - - switch (slot) { - case BUILTINS_ELEMENT_SELECTED: - if (!JSVAL_IS_BOOLEAN(*vp)) - return JS_TRUE; - - if ((pane = element->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - if ((node = HT_GetNthItem(view, element->slot)) != NULL) - { - HT_SetSelectedState(node, JSVAL_TO_BOOLEAN(*vp)); - } - } - } - break; - - case BUILTINS_ELEMENT_CONTAINER_OPEN: - if (!JSVAL_IS_BOOLEAN(*vp)) - return JS_TRUE; - - if ((pane = element->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - if ((node = HT_GetNthItem(view, element->slot)) != NULL) - { - HT_SetOpenState(node, JSVAL_TO_BOOLEAN(*vp)); - } - } - } - break; - - case BUILTINS_ELEMENT_ENABLED: - if (!JSVAL_IS_BOOLEAN(*vp)) - return JS_TRUE; - - if ((pane = element->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - if ((node = HT_GetNthItem(view, element->slot)) != NULL) - { - HT_SetEnabledState(node, JSVAL_TO_BOOLEAN(*vp)); - } - } - } - break; - - default:; - } - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -builtin_element_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSElement *element; - MochaDecoder *decoder; - MWContext *context; - JSString *jstr; - jsint slot; - HT_Pane pane; - HT_View view; - HT_Resource node; - char *name; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - element = JS_GetPrivate(cx, obj); - if (!element) - return JS_TRUE; - decoder = element->decoder; - context = decoder->window_context; - - if (!context) - return JS_TRUE; - - LO_LockLayout(); - switch (slot) { - case BUILTINS_ELEMENT_NAME: - if ((pane = element->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - if ((node = HT_GetNthItem(view, element->slot)) != NULL) - { - if ((name = HT_GetNodeName(node)) != NULL) - { - if ((jstr = lm_LocalEncodingToStr(context, name)) != NULL) - { - *vp = STRING_TO_JSVAL(jstr); - } - } - } - } - } - break; - - case BUILTINS_ELEMENT_URL: - if ((pane = element->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - if ((node = HT_GetNthItem(view, element->slot)) != NULL) - { - if ((name = HT_GetNodeURL(node)) != NULL) - { - if ((jstr = lm_LocalEncodingToStr(context, name)) != NULL) - { - *vp = STRING_TO_JSVAL(jstr); - } - } - } - } - } - break; - - case BUILTINS_ELEMENT_SELECTED: - if ((pane = element->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - if ((node = HT_GetNthItem(view, element->slot)) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsSelected(node)); - } - } - } - break; - - case BUILTINS_ELEMENT_CONTAINER: - if ((pane = element->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - if ((node = HT_GetNthItem(view, element->slot)) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsContainer(node)); - } - } - } - break; - - case BUILTINS_ELEMENT_CONTAINER_OPEN: - if ((pane = element->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - if ((node = HT_GetNthItem(view, element->slot)) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsContainerOpen(node)); - } - } - } - break; - - case BUILTINS_ELEMENT_SEPARATOR: - if ((pane = element->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - if ((node = HT_GetNthItem(view, element->slot)) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsSeparator(node)); - } - } - } - break; - - case BUILTINS_ELEMENT_ENABLED: - if ((pane = element->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - if ((node = HT_GetNthItem(view, element->slot)) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsEnabled(node)); - } - } - } - break; - - default:; - } - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(void) -builtin_element_finalize(JSContext *cx, JSObject *obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -JSClass lm_builtin_element_class = { - "TreeElement", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - builtin_element_getProperty, builtin_element_setProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, builtin_element_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -builtin_element_array_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSBuiltin *builtin; - JSElement *element; - JSObject *element_obj; - MochaDecoder *decoder; - MWContext *context; - jsint slot; - int theIndex; - HT_Pane pane; - HT_View view; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - builtin = JS_GetPrivate(cx, obj); - if (!builtin) - return JS_TRUE; - decoder = builtin->decoder; - context = decoder->window_context; - - if (!context) - return JS_TRUE; - - LO_LockLayout(); - switch (slot) { - case BUILTIN_ELEMENT_ARRAY_LENGTH: - theIndex = 0; - if ((pane = builtin->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - theIndex = HT_GetItemListCount(view); - } - } - *vp = INT_TO_JSVAL(theIndex); - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - LO_UnlockLayout(); - return JS_TRUE; - } - element = JS_malloc(cx, sizeof *element); - if (!element) - goto err; - element_obj = JS_NewObject(cx, &lm_builtin_element_class, - decoder->builtin_element_prototype, obj); - if (!element_obj || !JS_SetPrivate(cx, element_obj, element)) - { - JS_free(cx, element); - goto err; - } - if (!JS_DefineProperties(cx, obj, builtin_element_props)) - { - JS_free(cx, element); - goto err; - } - element->decoder = HOLD_BACK_COUNT(decoder); - element->builtin = builtin->builtin; - element->slot = slot; - *vp = OBJECT_TO_JSVAL(element_obj); - - break; - } - LO_UnlockLayout(); - return JS_TRUE; - err: - LO_UnlockLayout(); - return JS_FALSE; -} - -PR_STATIC_CALLBACK(JSBool) -builtin_node_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSNode *jsNode; - MochaDecoder *decoder; - MWContext *context; - jsint slot; - HT_Resource node; - - jsNode = JS_GetPrivate(cx, obj); - if (!jsNode) - return JS_TRUE; - decoder = jsNode->decoder; - context = decoder->window_context; - if (!context) return JS_TRUE; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - slot = JSVAL_TO_INT(id); - - switch (slot) { - case BUILTINS_NODE_SELECTED: - if (!JSVAL_IS_BOOLEAN(*vp)) - return JS_TRUE; - - if ((node = jsNode->node) != NULL) - { - HT_SetSelectedState(node, JSVAL_TO_BOOLEAN(*vp)); - } - break; - - case BUILTINS_NODE_CONTAINER_OPEN: - if (!JSVAL_IS_BOOLEAN(*vp)) - return JS_TRUE; - - if ((node = jsNode->node) != NULL) - { - HT_SetOpenState(node, JSVAL_TO_BOOLEAN(*vp)); - } - break; - - case BUILTINS_NODE_ENABLED: - if (!JSVAL_IS_BOOLEAN(*vp)) - return JS_TRUE; - - if ((node = jsNode->node) != NULL) - { - HT_SetEnabledState(node, JSVAL_TO_BOOLEAN(*vp)); - } - break; - - default:; - } - return(JS_TRUE); -} - -PR_STATIC_CALLBACK(JSBool) -builtin_node_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSNode *jsNode; - MochaDecoder *decoder; - MWContext *context; - JSString *jstr; - jsint slot; - HT_Resource node; - char *name; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - jsNode = JS_GetPrivate(cx, obj); - if (!jsNode) - return JS_TRUE; - decoder = jsNode->decoder; - context = decoder->window_context; - - if (!context) - return JS_TRUE; - - LO_LockLayout(); - switch (slot) { - case BUILTINS_NODE_NAME: - if ((node = jsNode->node) != NULL) - { - if ((name = HT_GetNodeName(node)) != NULL) - { - if ((jstr = lm_LocalEncodingToStr(context, name)) != NULL) - { - *vp = STRING_TO_JSVAL(jstr); - } - } - } - break; - - case BUILTINS_NODE_URL: - if ((node = jsNode->node) != NULL) - { - if ((name = HT_GetNodeURL(node)) != NULL) - { - if ((jstr = lm_LocalEncodingToStr(context, name)) != NULL) - { - *vp = STRING_TO_JSVAL(jstr); - } - } - } - break; - - case BUILTINS_NODE_SELECTED: - if ((node = jsNode->node) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsSelected(node)); - } - break; - - case BUILTINS_NODE_CONTAINER: - if ((node = jsNode->node) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsContainer(node)); - } - break; - - case BUILTINS_NODE_CONTAINER_OPEN: - if ((node = jsNode->node) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsContainerOpen(node)); - } - break; - - case BUILTINS_NODE_SEPARATOR: - if ((node = jsNode->node) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsSeparator(node)); - } - break; - - case BUILTINS_NODE_ENABLED: - if ((node = jsNode->node) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsEnabled(node)); - } - break; - - default:; - } - LO_UnlockLayout(); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -builtin_node_children(JSContext *cx, JSObject *obj, uint argc, jsval *argv, - jsval *rval) -{ - JSNode *jsNode, *newJSNode; - JSObject *jsnode_obj; - MochaDecoder *decoder; - HT_Resource node; - - if (!JS_InstanceOf(cx, obj, &lm_builtin_node_class, argv)) - return JS_FALSE; - jsNode = JS_GetPrivate(cx, obj); - if (!jsNode) - return JS_TRUE; - decoder = jsNode->decoder; - - if ((node = jsNode->node) == NULL) - return JS_TRUE; /* XXXbe no silent error */ - - if (!HT_IsContainer(node)) - *rval = JSVAL_NULL; - else if (!HT_IsContainerOpen(node)) - *rval = JSVAL_NULL; - else - { - newJSNode = JS_malloc(cx, sizeof *newJSNode); - if (!newJSNode) - return JS_FALSE; - jsnode_obj = JS_NewObject(cx, &lm_builtin_node_array_class, - decoder->builtin_node_prototype, obj); - if (!jsnode_obj || !JS_SetPrivate(cx, jsnode_obj, newJSNode)) - { - JS_free(cx, newJSNode); - return JS_FALSE; - } - if (!JS_DefineProperties(cx, jsnode_obj, builtin_node_array_props)) - { - JS_free(cx, newJSNode); - return JS_FALSE; - } - newJSNode->decoder = HOLD_BACK_COUNT(decoder); - newJSNode->builtin = jsNode->builtin; - newJSNode->node = node; - *rval = OBJECT_TO_JSVAL(jsnode_obj); - } - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -builtin_node_parent(JSContext *cx, JSObject *obj, uint argc, jsval *argv, - jsval *rval) -{ - JSNode *jsNode, *newJSNode; - JSObject *jsnode_obj; - MochaDecoder *decoder; - HT_Resource node; - - if (!JS_InstanceOf(cx, obj, &lm_builtin_node_class, argv)) - return JS_FALSE; - jsNode = JS_GetPrivate(cx, obj); - if (!jsNode) - return JS_TRUE; - decoder = jsNode->decoder; - - if ((node = jsNode->node) == NULL) - return JS_TRUE; /* XXXbe no silent error */ - - newJSNode = JS_malloc(cx, sizeof *newJSNode); - if (!newJSNode) - return(JS_FALSE); - jsnode_obj = JS_NewObject(cx, &lm_builtin_node_array_class, - decoder->builtin_node_prototype, obj); - if (!jsnode_obj || !JS_SetPrivate(cx, jsnode_obj, newJSNode)) - { - JS_free(cx, newJSNode); - return JS_FALSE; - } - if (!JS_DefineProperties(cx, jsnode_obj, builtin_node_array_props)) - { - JS_free(cx, newJSNode); - return JS_FALSE; - } - newJSNode->decoder = HOLD_BACK_COUNT(decoder); - newJSNode->builtin = jsNode->builtin; - newJSNode->node = HT_GetParent(node); - *rval = OBJECT_TO_JSVAL(jsnode_obj); - return(JS_TRUE); -} - -PR_STATIC_CALLBACK(JSBool) -builtin_element_parentIndex(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSElement *element; - MochaDecoder *decoder; - HT_Pane pane; - HT_View view; - HT_Resource node, parent; - int32 parentIndex = -1; - - if (!JS_InstanceOf(cx, obj, &lm_builtin_element_class, argv)) - return JS_FALSE; - if (!(element = JS_GetPrivate(cx, obj))) - return JS_TRUE; - decoder = element->decoder; - - if ((pane = element->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - if ((node = HT_GetNthItem(view, element->slot)) != NULL) - { - if ((parent = HT_GetParent(node)) != NULL) - { - if (parent != HT_TopNode(view)) - { - parentIndex = HT_GetNodeIndex(view, parent); - } - } - } - } - } - *rval = INT_TO_JSVAL(parentIndex); - return JS_TRUE; -} - -static JSFunctionSpec builtin_element_methods[] = { - {"parentIndex", builtin_element_parentIndex, 0}, - {0} -}; - -static JSFunctionSpec builtin_node_methods[] = { - {"children", builtin_node_children, 0}, - {"parent", builtin_node_parent, 0}, - {0} -}; - -PR_STATIC_CALLBACK(void) -builtin_node_finalize(JSContext *cx, JSObject *obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -JSClass lm_builtin_node_class = { - "TreeNode", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - builtin_node_getProperty, builtin_node_setProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, builtin_node_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -builtin_node_array_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSNode *jsNode, *newJSNode; - JSObject *jsnode_obj; - MochaDecoder *decoder; - MWContext *context; - jsint slot; - JSString *jstr; - char *name; - uint32 theCount; - HT_Resource node; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - jsNode = JS_GetPrivate(cx, obj); - if (!jsNode) - return JS_TRUE; - decoder = jsNode->decoder; - context = decoder->window_context; - - if (!context) - return JS_TRUE; - - LO_LockLayout(); - switch (slot) { - case BUILTIN_NODE_ARRAY_LENGTH: - if ((node = jsNode->node) != NULL) - { - theCount = HT_GetCountDirectChildren(jsNode->node); - *vp = INT_TO_JSVAL(theCount); - } - break; - - case BUILTINS_NODE_ARRAY_NAME: - if ((node = jsNode->node) != NULL) - { - if ((name = HT_GetNodeName(node)) != NULL) - { - if ((jstr = lm_LocalEncodingToStr(context, name)) != NULL) - { - *vp = STRING_TO_JSVAL(jstr); - } - } - } - break; - - case BUILTINS_NODE_ARRAY_URL: - if ((node = jsNode->node) != NULL) - { - if ((name = HT_GetNodeURL(node)) != NULL) - { - if ((jstr = lm_LocalEncodingToStr(context, name)) != NULL) - { - *vp = STRING_TO_JSVAL(jstr); - } - } - } - break; - - case BUILTINS_NODE_ARRAY_SELECTED: - if ((node = jsNode->node) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsSelected(node)); - } - break; - - case BUILTINS_NODE_ARRAY_CONTAINER: - if ((node = jsNode->node) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsContainer(node)); - } - break; - - case BUILTINS_NODE_ARRAY_CONTAINER_OPEN: - if ((node = jsNode->node) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsContainerOpen(node)); - } - break; - - case BUILTINS_NODE_ARRAY_SEPARATOR: - if ((node = jsNode->node) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsSeparator(node)); - } - break; - - case BUILTINS_NODE_ARRAY_ENABLED: - if ((node = jsNode->node) != NULL) - { - *vp = BOOLEAN_TO_JSVAL(HT_IsEnabled(node)); - } - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - LO_UnlockLayout(); - return JS_TRUE; - } - newJSNode = JS_malloc(cx, sizeof *newJSNode); - if (!newJSNode) - goto err; - jsnode_obj = JS_NewObject(cx, &lm_builtin_node_class, - decoder->builtin_node_prototype, obj); - if (!jsnode_obj || !JS_SetPrivate(cx, jsnode_obj, newJSNode)) - { - JS_free(cx, newJSNode); - goto err; - } - if (!JS_DefineProperties(cx, obj, builtin_node_props)) - { - JS_free(cx, newJSNode); - goto err; - } - newJSNode->decoder = HOLD_BACK_COUNT(decoder); - newJSNode->builtin = jsNode->builtin; - newJSNode->node = HT_GetContainerItem(jsNode->node, slot); - *vp = OBJECT_TO_JSVAL(jsnode_obj); - - break; - } - LO_UnlockLayout(); - return JS_TRUE; - err: - LO_UnlockLayout(); - return JS_FALSE; -} - -PR_STATIC_CALLBACK(void) -builtin_element_array_finalize(JSContext *cx, JSObject *obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -PR_STATIC_CALLBACK(void) -builtin_node_array_finalize(JSContext *cx, JSObject *obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -JSClass lm_builtin_element_array_class = { - "TreeElementArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - builtin_element_array_getProperty, builtin_element_array_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, builtin_element_array_finalize -}; - -JSClass lm_builtin_node_array_class = { - "TreeNodeArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - builtin_node_array_getProperty, builtin_node_array_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, builtin_node_array_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -builtin_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSBuiltin *builtin, *element; - JSNode *jsNode; - JSObject *element_obj, *jsNode_obj; - MochaDecoder *decoder; - MWContext *context; - jsint slot; - JSString *jstr; - uint32 i; - int theIndex; - HT_Pane pane; - HT_View view; - HT_Resource node = NULL; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - builtin = JS_GetPrivate(cx, obj); - if (!builtin) - return JS_TRUE; - decoder = builtin->decoder; - context = decoder->window_context; - - if (!context) - return JS_TRUE; - - LO_LockLayout(); - switch (slot) { - case BUILTINS_NAME: - for (i = 0; i < builtin->builtin->attributes.n; i++) - { - if (!XP_STRCASECMP(builtin->builtin->attributes.names[i], "name")) - { - if ((jstr = lm_LocalEncodingToStr(context, - builtin->builtin->attributes.values[i])) != NULL) - { - *vp = STRING_TO_JSVAL(jstr); - } - break; - } - } - break; - - case BUILTINS_DATA: - for (i = 0; i < builtin->builtin->attributes.n; i++) - { - if (!XP_STRCASECMP(builtin->builtin->attributes.names[i], "data")) - { - if ((jstr = JS_NewStringCopyZ(cx, - builtin->builtin->attributes.values[i])) != NULL) - { - *vp = STRING_TO_JSVAL(jstr); - } - break; - } - } - break; - - case BUILTINS_TARGET: - for (i = 0; i < builtin->builtin->attributes.n; i++) - { - if (!XP_STRCASECMP(builtin->builtin->attributes.names[i], "target")) - { - if ((jstr = JS_NewStringCopyZ(cx, - builtin->builtin->attributes.values[i])) != NULL) - { - *vp = STRING_TO_JSVAL(jstr); - } - break; - } - } - break; - - case BUILTINS_LENGTH: - theIndex = 0; - if ((pane = builtin->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - theIndex = HT_GetItemListCount(view); - } - } - *vp = INT_TO_JSVAL(theIndex); - break; - - case BUILTINS_SELECTEDINDEX: - theIndex = -1; - if ((pane = builtin->builtin->htPane) != NULL) - { - if ((view = HT_GetNthView(pane, 0)) != NULL) - { - node = NULL; - if ((node = HT_GetNextSelection(view, node)) != NULL) - { - theIndex = HT_GetNodeIndex(view, node); - } - } - } - *vp = INT_TO_JSVAL(theIndex); - break; - - case BUILTINS_ELEMENTS: - element = JS_malloc(cx, sizeof *element); - if (!element) - goto err; - element_obj = JS_NewObject(cx, &lm_builtin_element_array_class, decoder->builtin_prototype, obj); - if (!element_obj || !JS_SetPrivate(cx, element_obj, element)) - { - JS_free(cx, element); - goto err; - } - if (!JS_DefineProperties(cx, element_obj, builtin_element_array_props)) - { - JS_free(cx, element); - goto err; - } - element->decoder = HOLD_BACK_COUNT(decoder); - element->builtin = builtin->builtin; - *vp = OBJECT_TO_JSVAL(element_obj); - break; - - case BUILTINS_NODES: - jsNode = JS_malloc(cx, sizeof *jsNode); - if (!jsNode) - goto err; - jsNode_obj = JS_NewObject(cx, &lm_builtin_node_array_class, decoder->builtin_node_prototype, obj); - if (!jsNode_obj || !JS_SetPrivate(cx, jsNode_obj, jsNode)) - { - JS_free(cx, jsNode); - goto err; - } - if (!JS_DefineProperties(cx, jsNode_obj, builtin_node_array_props)) - { - JS_free(cx, jsNode); - goto err; - } - jsNode->decoder = HOLD_BACK_COUNT(decoder); - jsNode->builtin = builtin->builtin; - jsNode->node = HT_TopNode(HT_GetNthView(builtin->builtin->htPane, 0)); - *vp = OBJECT_TO_JSVAL(jsNode_obj); - break; - - default:; - } - LO_UnlockLayout(); - return JS_TRUE; - err: - LO_UnlockLayout(); - return JS_FALSE; -} - -PR_STATIC_CALLBACK(void) -builtins_array_finalize(JSContext *cx, JSObject *obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -PR_STATIC_CALLBACK(void) -builtin_finalize(JSContext *cx, JSObject *obj) -{ - JSObjectArray *array; - - array = JS_GetPrivate(cx, obj); - if (!array) - return; - DROP_BACK_COUNT(array->decoder); - JS_free(cx, array); -} - -JSClass lm_builtins_array_class = { - "TreesArray", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - builtins_array_getProperty, builtins_array_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, builtins_array_finalize -}; - -JSClass lm_builtins_class = { - "Trees", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, - builtin_getProperty, builtin_getProperty, JS_EnumerateStub, - JS_ResolveStub, JS_ConvertStub, builtin_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Builtin(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -BuiltinElement(JSContext *cx, JSObject *obj, uint argc, jsval *argv, - jsval *rval) -{ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -BuiltinNode(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -JSBool -lm_InitBuiltinClass(MochaDecoder *decoder) -{ - JSContext *cx; - JSObject *prototype; - - cx = decoder->js_context; - prototype = JS_InitClass(cx, decoder->window_object, - decoder->event_receiver_prototype, &lm_builtins_class, - Builtin, 0, builtins_props, NULL, NULL, NULL); - if (!prototype) - return JS_FALSE; - decoder->builtin_prototype = prototype; - - prototype = JS_InitClass(cx, decoder->window_object, - decoder->event_receiver_prototype, &lm_builtin_element_class, - BuiltinElement, 0, builtin_element_props, builtin_element_methods, NULL, NULL); - if (!prototype) - return JS_FALSE; - decoder->builtin_element_prototype = prototype; - - prototype = JS_InitClass(cx, decoder->window_object, - decoder->event_receiver_prototype, &lm_builtin_node_class, - BuiltinNode, 0, builtin_node_props, builtin_node_methods, NULL, NULL); - if (!prototype) - return JS_FALSE; - decoder->builtin_node_prototype = prototype; - return JS_TRUE; -} diff --git a/mozilla/lib/libmocha/lm_trggr.c b/mozilla/lib/libmocha/lm_trggr.c deleted file mode 100644 index 9c9cafc6f01..00000000000 --- a/mozilla/lib/libmocha/lm_trggr.c +++ /dev/null @@ -1,297 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * lm_trggr.c - * - * Reflects AutoInstall trigger methods - * into the global JavaScript config object. - * - * See Trigger.java for related functions. - */ - -#include "lm.h" -#include "prefapi.h" -#include "VerReg.h" -#ifdef MOZ_SMARTUPDATE -#include "softupdt.h" -#endif -#include "gui.h" /* XP_AppPlatform */ - -JSBool PR_CALLBACK asd_Version(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval); -JSBool PR_CALLBACK asd_get_version(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval); -JSBool PR_CALLBACK asd_start_update(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval); -JSBool PR_CALLBACK asd_conditional_update(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval); -JSBool PR_CALLBACK asd_alert(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval); -JSBool PR_CALLBACK asd_platform(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval); - -PRIVATE JSFunctionSpec autoinstall_methods[] = { - { "getVersion", asd_get_version, 2 }, - { "startUpdate", asd_start_update, 2 }, - { "conditionalUpdate", asd_conditional_update, 4 }, - { "startUpdateComponent", asd_conditional_update, 4 }, /* old name */ - { NULL, NULL, 0 } -}; - -PRIVATE JSFunctionSpec globalconfig_methods[] = { - { "alert", asd_alert, 1 }, - { "getPlatform", asd_platform, 0 }, - { NULL, NULL, 0 } -}; - -PRIVATE JSClass autoinstall_class = { - "AutoInstall", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub -}; - -PRIVATE JSClass version_class = { - "VersionInfo", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub -}; - -JSBool lm_DefineTriggers() -{ - JSContext *globalContext = NULL; - JSObject *globalObject = NULL; - JSObject *autoInstallObject, *versionObject; - JSBool ans; - - /* get global mocha context and object */ - PREF_GetConfigContext(&globalContext); - PREF_GetGlobalConfigObject(&globalObject); - - if (globalContext == NULL || globalObject == NULL) { - return JS_FALSE; - } - - JS_BeginRequest(globalContext); - /* define AutoInstall object in global object */ - autoInstallObject = JS_DefineObject(globalContext, globalObject, - "AutoInstall", - &autoinstall_class, - NULL, - JSPROP_ENUMERATE|JSPROP_READONLY); - - if (!autoInstallObject) { - JS_EndRequest(globalContext); - return JS_FALSE; - } - - - /* define Version class in AutoInstall */ - versionObject = JS_InitClass(globalContext, autoInstallObject, NULL, - &version_class, asd_Version, 0, NULL, NULL, NULL, NULL); - - if (!versionObject) { - JS_EndRequest(globalContext); - return JS_FALSE; - } - - /* define some global config utility functions */ - JS_DefineFunctions(globalContext, globalObject, globalconfig_methods); - - ans = JS_DefineFunctions(globalContext, autoInstallObject, - autoinstall_methods); - JS_EndRequest(globalContext); - return ans; -} - -/* Convert VERSION type to Version JS object */ -static void asd_versToObj(JSContext *cx, VERSION* vers, JSObject* versObj) -{ - jsval val = INT_TO_JSVAL(vers->major); - JS_SetProperty(cx, versObj, "major", &val); - val = INT_TO_JSVAL(vers->minor); - JS_SetProperty(cx, versObj, "minor", &val); - val = INT_TO_JSVAL(vers->release); - JS_SetProperty(cx, versObj, "release", &val); - val = INT_TO_JSVAL(vers->build); - JS_SetProperty(cx, versObj, "build", &val); -} - -/* Convert Version JS object to VERSION type */ -static void asd_objToVers(JSContext *cx, JSObject* versObj, VERSION* vers) -{ - jsval val; - JS_GetProperty(cx, versObj, "major", &val); - vers->major = JSVAL_TO_INT(val); - JS_GetProperty(cx, versObj, "minor", &val); - vers->minor = JSVAL_TO_INT(val); - JS_GetProperty(cx, versObj, "release", &val); - vers->release = JSVAL_TO_INT(val); - JS_GetProperty(cx, versObj, "build", &val); - vers->build = JSVAL_TO_INT(val); -} - -/* - * ?? -- move this to VR? - * Returns 0 if versions are equal; < 0 if vers2 is newer; > 0 if vers1 is newer - */ -static int asd_compareVersion(VERSION* vers1, VERSION* vers2) -{ - int diff; - if (vers1 == NULL) - diff = -4; - else if (vers2 == NULL) - diff = 4; - else if (vers1->major == vers2->major) { - if (vers1->minor == vers2->minor) { - if (vers1->release == vers2->release) { - if (vers1->build == vers2->build) - diff = 0; - else diff = (vers1->build > vers2->build) ? 1 : -1; - } - else diff = (vers1->release > vers2->release) ? 2 : -2; - } - else diff = (vers1->minor > vers2->minor) ? 3 : -3; - } - else diff = (vers1->major > vers2->major) ? 4 : -4; - return diff; -} - -/* Version constructor - (accepts up to four int params to initialize fields) */ -JSBool PR_CALLBACK asd_Version - (JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - VERSION vers; - vers.major = (argc >= 1 && JSVAL_IS_INT(argv[0])) ? JSVAL_TO_INT(argv[0]) : 0; - vers.minor = (argc >= 2 && JSVAL_IS_INT(argv[1])) ? JSVAL_TO_INT(argv[1]) : 0; - vers.release = (argc >= 3 && JSVAL_IS_INT(argv[2])) ? JSVAL_TO_INT(argv[2]) : 0; - vers.build = (argc >= 4 && JSVAL_IS_INT(argv[3])) ? JSVAL_TO_INT(argv[3]) : 0; - - asd_versToObj(cx, &vers, obj); - return JS_TRUE; -} - -/* arguments: - 0. component name - 1. version no. to fill in - return: - error status */ -JSBool PR_CALLBACK asd_get_version - (JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - REGERR status = 0; - if (argc >= 2 && JSVAL_IS_STRING(argv[0]) - && JSVAL_IS_OBJECT(argv[1])) - { - VERSION vers; - char* component_path = JS_GetStringBytes(JSVAL_TO_STRING(argv[0])); - status = VR_GetVersion(component_path, &vers); - - if (status == REGERR_OK) { - JSObject* versObj = JSVAL_TO_OBJECT(argv[1]); - asd_versToObj(cx, &vers, versObj); - } - } - *rval = INT_TO_JSVAL(status); - return JS_TRUE; -} - -/* arguments: - 0. url - 1. flags - return: - true if no errors */ -JSBool PR_CALLBACK asd_start_update - (JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - *rval = BOOLEAN_TO_JSVAL(JS_FALSE); - -#ifdef MOZ_SMARTUPDATE - if (argc >= 2 && JSVAL_IS_STRING(argv[0]) && - JSVAL_IS_INT(argv[1])) { - char* url = JS_GetStringBytes(JSVAL_TO_STRING(argv[0])); - MWContext* cx = FE_GetInitContext(); - XP_Bool result = SU_StartSoftwareUpdate( cx, url, - NULL, NULL, NULL, JSVAL_TO_INT(argv[1]) ); - *rval = BOOLEAN_TO_JSVAL(result); - return JS_TRUE; - } -#endif - return JS_TRUE; -} - -/* arguments: - 0. url - 1. component name - 2. version no. to compare - 3. flags - return: - true if update triggered and no errors */ -JSBool PR_CALLBACK asd_conditional_update - (JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - REGERR status = 0; - - *rval = BOOLEAN_TO_JSVAL(JS_FALSE); /*INT_TO_JSVAL(status);*/ - -#ifdef MOZ_SMARTUPDATE - if (argc >= 4 && JSVAL_IS_STRING(argv[0]) && - JSVAL_IS_STRING(argv[1]) && - JSVAL_IS_OBJECT(argv[2]) && - JSVAL_IS_INT(argv[3])) - { - VERSION curr_vers; - char* component_path = JS_GetStringBytes(JSVAL_TO_STRING(argv[1])); - status = VR_GetVersion(component_path, &curr_vers); - - if (status == REGERR_OK) { - JSObject* versObj = JSVAL_TO_OBJECT(argv[2]); - VERSION req_vers; - asd_objToVers(cx, versObj, &req_vers); - if ( asd_compareVersion(&req_vers, &curr_vers) > 0 ) { - char* url = JS_GetStringBytes(JSVAL_TO_STRING(argv[0])); - MWContext* cx = FE_GetInitContext(); - XP_Bool result = SU_StartSoftwareUpdate( cx, url, - NULL, NULL, NULL, JSVAL_TO_INT(argv[3]) ); - *rval = BOOLEAN_TO_JSVAL(result); - return JS_TRUE; - } - } - } -#endif - return JS_TRUE; -} - -JSBool PR_CALLBACK asd_alert - (JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - if (argc >= 1 && JSVAL_IS_STRING(argv[0])) { - char* msg = JS_GetStringBytes(JSVAL_TO_STRING(argv[0])); - MWContext* ctx = FE_GetInitContext(); - - if (ctx) - FE_Alert(ctx, msg); - } - return JS_TRUE; -} - -JSBool PR_CALLBACK asd_platform - (JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - *rval = STRING_TO_JSVAL( JS_NewStringCopyZ(cx, XP_AppPlatform) ); - return JS_TRUE; -} - diff --git a/mozilla/lib/libmocha/lm_url.c b/mozilla/lib/libmocha/lm_url.c deleted file mode 100644 index c310eddee0e..00000000000 --- a/mozilla/lib/libmocha/lm_url.c +++ /dev/null @@ -1,944 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * JS reflection of the current Navigator URL (Location) object. - * - * Brendan Eich, 9/8/95 - */ -#include "lm.h" -#include "xp.h" -#include "net.h" /* for URL_Struct */ -#include "shist.h" /* for session history stuff */ -#include "structs.h" /* for MWContext */ -#include "layout.h" /* included via -I../layout */ -#include "mkparse.h" /* included via -I../libnet */ - -/* NB: these named properties use non-negative slots; code below knows that. */ -/* Non-negative slots are protected by a permissions check; others aren't. */ -enum url_slot { - URL_HREF, /* the entire URL as a string */ - URL_PROTOCOL, /* protocol:... */ - URL_HOST, /* protocol://host/... */ - URL_HOSTNAME, /* protocol://hostname:... */ - URL_PORT, /* protocol://hostname:port/... */ - URL_PATHNAME, /* protocol://host/pathname[#?...] */ - URL_HASH, /* protocol://host/pathname#hash */ - URL_SEARCH, /* protocol://host/pathname?search */ - URL_TARGET, /* target window or null */ - URL_TEXT, /* text within A container */ - URL_X = -1, /* layout X coordinate */ - URL_Y = -2 /* layout Y coordinate */ -}; - -static JSPropertySpec url_props[] = { - {"href", URL_HREF, JSPROP_ENUMERATE}, - {"protocol", URL_PROTOCOL, JSPROP_ENUMERATE}, - {"host", URL_HOST, JSPROP_ENUMERATE}, - {"hostname", URL_HOSTNAME, JSPROP_ENUMERATE}, - {"port", URL_PORT, JSPROP_ENUMERATE}, - {"pathname", URL_PATHNAME, JSPROP_ENUMERATE}, - {"hash", URL_HASH, JSPROP_ENUMERATE}, - {"search", URL_SEARCH, JSPROP_ENUMERATE}, - {"target", URL_TARGET, JSPROP_ENUMERATE}, - {"text", URL_TEXT, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"x", URL_X, JSPROP_ENUMERATE | JSPROP_READONLY}, - {"y", URL_Y, JSPROP_ENUMERATE | JSPROP_READONLY}, - {0} -}; - -#define ParseURL(url,part) ((url) ? NET_ParseURL(url,part) : 0) - -static JSBool -url_get_coord(JSContext *cx, JSURL *url, jsint slot, jsval *vp) -{ - int32 coord; - LO_AnchorData *anchor_data; - MWContext *context; - - LO_LockLayout(); - context = url->url_decoder->window_context; - anchor_data = LO_GetLinkByIndex(context, url->layer_id, url->index); - if (anchor_data && anchor_data->element) { - switch (slot) { - case URL_X: - coord = anchor_data->element->lo_any.x; - break; - - case URL_Y: - coord = anchor_data->element->lo_any.y; - break; - - default: - LO_UnlockLayout(); - return JS_FALSE; - } - - *vp = INT_TO_JSVAL(coord); - LO_UnlockLayout(); - return JS_TRUE; - } - *vp = JSVAL_NULL; - LO_UnlockLayout(); - return JS_TRUE; -} - -extern JSClass lm_url_class; -extern JSClass lm_location_class; - -PR_STATIC_CALLBACK(JSBool) -url_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - jsval slot; - JSURL *url; - JSString * str; - char *port; - const char *cstr, *tmp; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - url = JS_GetInstancePrivate(cx, obj, &lm_url_class, NULL); - if (!url) { - url = JS_GetInstancePrivate(cx, obj, &lm_location_class, NULL); - if (!url) - return JS_TRUE; - } - - str = 0; - cstr = 0; - - switch (slot) { - case URL_HREF: - str = url->href; - break; - - case URL_PROTOCOL: - if (url->href) - cstr = ParseURL(JS_GetStringBytes(url->href), GET_PROTOCOL_PART); - break; - - case URL_HOST: - if (url->href) - cstr = ParseURL(JS_GetStringBytes(url->href), GET_HOST_PART); - break; - - case URL_HOSTNAME: - if (url->href) - cstr = ParseURL(JS_GetStringBytes(url->href), GET_HOST_PART); - if (cstr && (port = XP_STRCHR(cstr, ':')) != 0) - *port = '\0'; - break; - - case URL_PORT: - if (url->href) - cstr = ParseURL(JS_GetStringBytes(url->href), GET_HOST_PART); - if (cstr && (port = XP_STRCHR(cstr, ':')) != 0) - port++; - else - port = ""; - tmp = cstr; - cstr = JS_strdup(cx, port); - XP_FREE((void *)tmp); - break; - - case URL_PATHNAME: - if (url->href) - cstr = ParseURL(JS_GetStringBytes(url->href), GET_PATH_PART); - break; - - case URL_HASH: - if (url->href) - cstr = ParseURL(JS_GetStringBytes(url->href), GET_HASH_PART); - break; - - case URL_SEARCH: - if (url->href) - cstr = ParseURL(JS_GetStringBytes(url->href), GET_SEARCH_PART); - break; - - case URL_TARGET: - if (!url->target) { - *vp = JSVAL_NULL; - return JS_TRUE; - } - str = url->target; - break; - - case URL_TEXT: - if (!url->text) { - *vp = JSVAL_NULL; - return JS_TRUE; - } - str = url->text; - break; - - case URL_X: - case URL_Y: - return url_get_coord(cx, url, slot, vp); - - default: - /* Don't mess with user-defined or method properties. */ - return JS_TRUE; - } - - if (!str && cstr) - str = JS_NewStringCopyZ(cx, cstr); - if (cstr) - XP_FREE((char *)cstr); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -url_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSURL *url; - const char *href, *name, *checked_href; - char *new_href, *prop_name; - JSBool free_href; - jsval tmp; - JSString *str; - MWContext *context; - LO_AnchorData *anchor_data; - JSBool ok; - jsint slot; - - url = JS_GetInstancePrivate(cx, obj, &lm_url_class, NULL); - if (!url) { - url = JS_GetInstancePrivate(cx, obj, &lm_location_class, NULL); - if (!url) - return JS_TRUE; - } - - /* If the property is setting an event handler we find out now so - * that we can tell the front end to send the event. - */ - if (JSVAL_IS_STRING(id)) { - prop_name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - if (XP_STRCASECMP(prop_name, lm_onClick_str) == 0 || - XP_STRCASECMP(prop_name, lm_onMouseDown_str) == 0 || - XP_STRCASECMP(prop_name, lm_onMouseOver_str) == 0 || - XP_STRCASECMP(prop_name, lm_onMouseOut_str) == 0 || - XP_STRCASECMP(prop_name, lm_onMouseUp_str) == 0) { - context = url->url_decoder->window_context; - if (context) { - anchor_data = LO_GetLinkByIndex(context, url->layer_id, - url->index); - if (anchor_data) - anchor_data->event_handler_present = TRUE; - } - } - return JS_TRUE; - } - - XP_ASSERT(JSVAL_IS_INT(id)); - slot = JSVAL_TO_INT(id); - - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - return JS_TRUE; - } - - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) { - return JS_FALSE; - } - - ok = JS_TRUE; - - switch (slot) { - case URL_HREF: - url->href = JSVAL_TO_STRING(*vp); - href = JS_GetStringBytes(url->href); - free_href = JS_FALSE; - break; - - case URL_PROTOCOL: - case URL_HOST: - case URL_HOSTNAME: - case URL_PORT: - case URL_PATHNAME: - case URL_HASH: - case URL_SEARCH: - /* a component property changed -- recompute href. */ - new_href = NULL; - -#define GET_SLOT(aslot, ptmp) { \ - if (aslot == slot) { \ - *(ptmp) = *vp; \ - } else { \ - if (!JS_GetElement(cx, obj, aslot, ptmp)) { \ - if (new_href) XP_FREE(new_href); \ - return JS_FALSE; \ - } \ - } \ -} - -#define ADD_SLOT(aslot, separator) { \ - GET_SLOT(aslot, &tmp); \ - name = JS_GetStringBytes(JSVAL_TO_STRING(tmp)); \ - if (*name) { \ - if (separator) StrAllocCat(new_href, separator); \ - StrAllocCat(new_href, name); \ - } \ -} - - GET_SLOT(URL_PROTOCOL, &tmp); - StrAllocCopy(new_href, JS_GetStringBytes(JSVAL_TO_STRING(tmp))); - if (slot == URL_HOST) { - ADD_SLOT(URL_HOST, "//"); - } else { - ADD_SLOT(URL_HOSTNAME, "//"); - ADD_SLOT(URL_PORT, ":"); - } - ADD_SLOT(URL_PATHNAME, NULL); - ADD_SLOT(URL_HASH, NULL); - ADD_SLOT(URL_SEARCH, NULL); - - if (!new_href) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - - free_href = JS_TRUE; - href = new_href; - str = JS_NewStringCopyZ(cx, href); - if (!str) { - ok = JS_FALSE; - goto out; - } - url->href = str; - break; - - case URL_TARGET: - url->target = JSVAL_TO_STRING(*vp); - if (url->index != URL_NOT_INDEXED) { - context = url->url_decoder->window_context; - if (context) { - anchor_data = LO_GetLinkByIndex(context, url->layer_id, - url->index); - if (anchor_data) { - name = JS_GetStringBytes(url->target); - if (!lm_CheckWindowName(cx, name)) - return JS_FALSE; - if (!lm_SaveParamString(cx, &anchor_data->target, name)) - return JS_FALSE; - } - } - } - /* Note early return, to bypass href update and freeing. */ - return JS_TRUE; - - default: - /* Don't mess with a user-defined property. */ - return ok; - } - - if (url->index != URL_NOT_INDEXED) { - context = url->url_decoder->window_context; - if (context) { - anchor_data = LO_GetLinkByIndex(context, url->layer_id, - url->index); - if (anchor_data) { - checked_href = lm_CheckURL(cx, href, JS_FALSE); - if (!checked_href || - !lm_SaveParamString(cx, &anchor_data->anchor, - checked_href)) { - ok = JS_FALSE; - goto out; - } - XP_FREE((char *)checked_href); - } - } - } - -out: - if (free_href && href) - XP_FREE((char *)href); - return ok; -} - -PR_STATIC_CALLBACK(void) -url_finalize(JSContext *cx, JSObject *obj) -{ - JSURL *url; - MochaDecoder *decoder; - MWContext *context; - LO_AnchorData *anchor_data; - - url = JS_GetPrivate(cx, obj); - if (!url) - return; - decoder = url->url_decoder; - if (url->index != URL_NOT_INDEXED) { - context = decoder->window_context; - if (context) { - LO_LockLayout(); - anchor_data = LO_GetLinkByIndex(context, url->layer_id, - url->index); - if (anchor_data && anchor_data->mocha_object == obj) - anchor_data->mocha_object = NULL; - LO_UnlockLayout(); - } - } - DROP_BACK_COUNT(decoder); - JS_RemoveRoot(cx, &url->href); - JS_RemoveRoot(cx, &url->target); - JS_RemoveRoot(cx, &url->text); - XP_DELETE(url); -} - -JSClass lm_url_class = { - "Url", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, url_getProperty, url_setProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, url_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Url(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -url_toString(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return url_getProperty(cx, obj, INT_TO_JSVAL(URL_HREF), rval); -} - -static JSFunctionSpec url_methods[] = { - {lm_toString_str, url_toString, 0}, - {0} -}; - -JSURL * -lm_NewURL(JSContext *cx, MochaDecoder *decoder, LO_AnchorData *anchor_data, - JSObject *document) -{ - JSObject *obj; - JSURL *url; - JSString *str; - - if (!decoder->url_prototype) { - obj = JS_InitClass(cx, decoder->window_object, - decoder->event_receiver_prototype, &lm_url_class, - Url, 0, url_props, NULL, NULL, NULL); - if (!obj) - return NULL; - decoder->url_prototype = obj; - } - - url = JS_malloc(cx, sizeof *url); - if (!url) - return NULL; - XP_BZERO(url, sizeof *url); - - obj = JS_NewObject(cx, &lm_url_class, decoder->url_prototype, - lm_GetOuterObject(decoder)); - if (!obj || !JS_SetPrivate(cx, obj, url)) { - JS_free(cx, url); - return NULL; - } - - if (!JS_DefineFunctions(cx, obj, url_methods)) - return NULL; - - url->url_decoder = HOLD_BACK_COUNT(decoder); - url->url_type = FORM_TYPE_NONE; - url->index = URL_NOT_INDEXED; - url->url_object = obj; - - str = JS_NewStringCopyZ(cx, (char *) anchor_data->anchor); - if (!str) - return NULL; - url->href = str; - if (!JS_AddNamedRoot(cx, &url->href, "url.href")) - return NULL; - - if (anchor_data->target) { - str = JS_NewStringCopyZ(cx, (char *) anchor_data->target); - if (!str) - return NULL; - url->target = str; - } - if (!JS_AddNamedRoot(cx, &url->target, "url.target")) - return NULL; - - if (anchor_data->element && anchor_data->element->type == LO_TEXT) { - str = lm_LocalEncodingToStr(decoder->window_context, - (char *) anchor_data->element->lo_text.text); - if (!str) - return NULL; - url->text = str; - } - if (!JS_AddNamedRoot(cx, &url->text, "url.text")) - return NULL; - - return url; -} - -static const char * -get_url_string(JSContext *cx, JSObject *obj) -{ - JSURL *url; - MochaDecoder *decoder; - MWContext *context; - History_entry *he; - const char *url_string; - - url = JS_GetInstancePrivate(cx, obj, &lm_location_class, NULL); - if (!url) - return NULL; - decoder = url->url_decoder; - - context = decoder->window_context; - if (!context) - return NULL; - he = SHIST_GetCurrent(&context->hist); - if (he) { - url_string = he->address; - if (NET_URL_Type(url_string) == WYSIWYG_TYPE_URL && - !(url_string = LM_SkipWysiwygURLPrefix(url_string))) { - url_string = he->address; - } - return url_string; - } - return NULL; -} - -/* - * Top-level window URL object, a reflection of the "Location:" GUI field. - */ -PR_STATIC_CALLBACK(JSBool) -loc_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSURL *url; - MochaDecoder *decoder; - MWContext *context; - const char *url_string; - JSString *str; - - if (!JSVAL_IS_INT(id) || JSVAL_TO_INT(id) < 0) - return JS_TRUE; - - url = JS_GetInstancePrivate(cx, obj, &lm_location_class, NULL); - if (!url) - return JS_TRUE; - decoder = url->url_decoder; - - context = decoder->window_context; - if (!context) - return JS_TRUE; - if (context->type == MWContextMail || - context->type == MWContextNews || - context->type == MWContextMailMsg || - context->type == MWContextNewsMsg) { - /* - * Don't give out the location of a the mail folder to a script - * embedded in a mail message. Just return the empty string. - */ - url->href = JSVAL_TO_STRING(JS_GetEmptyStringValue(cx)); - } else { - /* - * Only need to check permissions for native getters - */ - if (!lm_CheckPermissions(cx, obj, JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - url_string = get_url_string(cx, obj); - if (url_string && (!url->href || XP_STRCMP(JS_GetStringBytes(url->href), - url_string) != 0)) - { - str = JS_NewStringCopyZ(cx, url_string); - if (!str) - return JS_FALSE; - url->href = str; - } - } - return url_getProperty(cx, obj, id, vp); -} - -void -lm_ReplaceURL(MWContext *context, URL_Struct *url_struct) -{ - History_entry *he; - - he = SHIST_GetCurrent(&context->hist); - if (!he) - return; - he->history_num = SHIST_GetIndex(&context->hist, he); - he->replace = TRUE; - url_struct->history_num = he->history_num; -} - -JSBool -lm_GetURL(JSContext *cx, MochaDecoder *decoder, URL_Struct *url_struct) -{ - MWContext *context; - - context = decoder->window_context; - if (!context) { - NET_FreeURLStruct(url_struct); - return JS_TRUE; - } - - if (decoder->replace_location) { - decoder->replace_location = JS_FALSE; - lm_ReplaceURL(context, url_struct); - } - ET_PostGetUrl(context, url_struct); - return JS_TRUE; -} - -const char * -lm_CheckURL(JSContext *cx, const char *url_string, JSBool checkFile) -{ - char *protocol, *absolute; - JSObject *obj; - MochaDecoder *decoder; - - protocol = NET_ParseURL(url_string, GET_PROTOCOL_PART); - if (!protocol || *protocol == '\0' || XP_STRCHR(protocol, '?')) { - lo_TopState *top_state; - - obj = JS_GetGlobalObject(cx); - decoder = JS_GetPrivate(cx, obj); - - LO_LockLayout(); - top_state = lo_GetMochaTopState(decoder->window_context); - if (top_state && top_state->base_url) { - absolute = NET_MakeAbsoluteURL(top_state->base_url, - (char *)url_string); /*XXX*/ - /* - * Temporarily unlock layout so that we don't hold the lock - * across a call (lm_CheckPermissions) that may result in - * synchronous event handling. - */ - LO_UnlockLayout(); - if (!lm_CheckPermissions(cx, obj, - JSTARGET_UNIVERSAL_BROWSER_READ)) - { - /* Don't leak information about the url of this page. */ - XP_FREEIF(absolute); - return NULL; - } - LO_LockLayout(); - } else { - absolute = NULL; - } - if (absolute) { - if (protocol) XP_FREE(protocol); - protocol = NET_ParseURL(absolute, GET_PROTOCOL_PART); - } - LO_UnlockLayout(); - } else { - absolute = JS_strdup(cx, url_string); - if (!absolute) { - XP_FREE(protocol); - return NULL; - } - decoder = NULL; - } - - if (absolute) { - - /* Make sure it's a safe URL type. */ - switch (NET_URL_Type(protocol)) { - case FILE_TYPE_URL: - if (checkFile) { - const char *subjectOrigin = lm_GetSubjectOriginURL(cx); - if (subjectOrigin == NULL) { - XP_FREE(protocol); - return NULL; - } - if (NET_URL_Type(subjectOrigin) != FILE_TYPE_URL && - !lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_FILE_READ)) - { - XP_FREE(absolute); - absolute = NULL; - } - } - break; - case FTP_TYPE_URL: - case GOPHER_TYPE_URL: - case HTTP_TYPE_URL: - case MAILTO_TYPE_URL: - case NEWS_TYPE_URL: - case RLOGIN_TYPE_URL: - case TELNET_TYPE_URL: - case TN3270_TYPE_URL: - case WAIS_TYPE_URL: - case SECURE_HTTP_TYPE_URL: - case URN_TYPE_URL: - case NFS_TYPE_URL: - case MOCHA_TYPE_URL: - case VIEW_SOURCE_TYPE_URL: - case NETHELP_TYPE_URL: - case WYSIWYG_TYPE_URL: - case LDAP_TYPE_URL: -#ifdef JAVA - case MARIMBA_TYPE_URL: -#endif - /* These are "safe". */ - break; - case ABOUT_TYPE_URL: - if (XP_STRCASECMP(absolute, "about:blank") == 0) - break; - if (XP_STRNCASECMP(absolute, "about:pics", 10) == 0) - break; - /* these are OK if we are signed */ - if (lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_READ)) - break; - /* FALL THROUGH */ - default: - /* All others are naughty. */ - XP_FREE(absolute); - absolute = NULL; - break; - } - } - - if (!absolute) { - JS_ReportError(cx, "illegal URL method '%s'", - protocol && *protocol ? protocol : url_string); - } - if (protocol) - XP_FREE(protocol); - return absolute; -} - -static JSBool -url_load(JSContext *cx, JSObject *obj, const char *url_string, - NET_ReloadMethod reload_how) -{ - JSURL *url; - URL_Struct *url_struct; - const char *referer; - - url = JS_GetPrivate(cx, obj); - if (!url) - return JS_TRUE; - url_struct = NET_CreateURLStruct(url_string, reload_how); - if (!url_struct) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - if (!(referer = lm_GetSubjectOriginURL(cx)) || - !(url_struct->referer = JS_strdup(cx, referer))) { - NET_FreeURLStruct(url_struct); - return JS_FALSE; - } - return lm_GetURL(cx, url->url_decoder, url_struct); -} - -PR_STATIC_CALLBACK(JSBool) -loc_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - const char *url_string; - JSString *str; - jsval val; - jsint slot; - JSURL *url; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - /* Setting these properties should not cause a FE_GetURL. */ - if (slot < 0 || slot == URL_TARGET) - return url_setProperty(cx, obj, id, vp); - - /* Make sure vp is a string. */ - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) { - return JS_FALSE; - } - - /* Two cases: setting href vs. setting a component property. */ - if (slot == URL_HREF || slot == URL_PROTOCOL) { - /* Make sure the URL is absolute and sanity-check its protocol. */ - url_string = JS_GetStringBytes(JSVAL_TO_STRING(*vp)); - url_string = lm_CheckURL(cx, url_string, JS_TRUE); - if (!url_string) - return JS_FALSE; - str = JS_NewStringCopyZ(cx, url_string); - XP_FREE((char *)url_string); - if (!str) - return JS_FALSE; - val = STRING_TO_JSVAL(str); - vp = &val; - } else { - /* Get href from session history before setting a piece of it. */ - if (!loc_getProperty(cx, obj, INT_TO_JSVAL(URL_HREF), &val)) - return JS_FALSE; - } - - /* Set slot's property. */ - if (!url_setProperty(cx, obj, id, vp)) - return JS_FALSE; - - url = JS_GetPrivate(cx, obj); - if (!url) - return JS_TRUE; - if (url->href) - url_string = JS_GetStringBytes(url->href); - else - url_string = ""; - return url_load(cx, obj, url_string, NET_DONT_RELOAD); -} - -JSClass lm_location_class = { - "Location", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, loc_getProperty, loc_setProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, url_finalize -}; - -PR_STATIC_CALLBACK(JSBool) -Location(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -loc_toString(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return loc_getProperty(cx, obj, INT_TO_JSVAL(URL_HREF), rval); -} - -PR_STATIC_CALLBACK(JSBool) -loc_assign(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSURL *url; - jsval v; - JSObject *locobj; - - if (!JS_InstanceOf(cx, obj, &lm_location_class, NULL)) { - if(!JS_LookupProperty(cx, obj, lm_location_str, &v)) { - return JS_FALSE; - } - if(!JSVAL_IS_OBJECT(v) || !JSVAL_TO_OBJECT(v)) { - return JS_TRUE; - } - locobj = JSVAL_TO_OBJECT(v); - } else { - locobj = obj; - } - if (!(url = JS_GetInstancePrivate(cx, locobj, &lm_location_class, NULL))) - return JS_FALSE; - if (!loc_setProperty(cx, locobj, INT_TO_JSVAL(URL_HREF), vp)) - return JS_FALSE; - *vp = OBJECT_TO_JSVAL(url->url_object); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -loc_reload(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - if (!JS_InstanceOf(cx, obj, &lm_location_class, argv)) - return JS_FALSE; - return url_load(cx, obj, get_url_string(cx, obj), - (JSVAL_IS_BOOLEAN(argv[0]) && JSVAL_TO_BOOLEAN(argv[0])) - ? NET_SUPER_RELOAD - : NET_NORMAL_RELOAD); -} - -PR_STATIC_CALLBACK(JSBool) -loc_replace(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - JSURL *url; - JSBool ans; - - if (!(url = JS_GetInstancePrivate(cx, obj, &lm_location_class, argv))) - return JS_FALSE; - url->url_decoder->replace_location = JS_TRUE; - /* Note: loc_assign ignores the id in favor of its own id anyway */ - ans = loc_assign(cx, obj, 0, argv); - *rval = *argv; - return ans; -} - -static JSFunctionSpec loc_methods[] = { - {lm_toString_str, loc_toString, 0}, - {lm_reload_str, loc_reload, 1}, - {lm_replace_str, loc_replace, 1}, - {0} -}; - -JSObject * -lm_DefineLocation(MochaDecoder *decoder) -{ - JSObject *obj; - JSContext *cx; - JSURL *url; - - obj = decoder->location; - if (obj) - return obj; - - cx = decoder->js_context; - url = JS_malloc(cx, sizeof *url); - if (!url) - return NULL; - XP_BZERO(url, sizeof *url); - - obj = JS_InitClass(cx, decoder->window_object, NULL, &lm_location_class, - Location, 0, url_props, loc_methods, NULL, NULL); - if (!obj || !JS_SetPrivate(cx, obj, url)) { - JS_free(cx, url); - return NULL; - } - - /* XXX common subroutine this and above with lm_NewURL */ - if (!JS_AddNamedRoot(cx, &url->href, "loc.text")) - return NULL; - if (!JS_AddNamedRoot(cx, &url->target, "loc.target")) - return NULL; - if (!JS_AddNamedRoot(cx, &url->text, "loc.text")) - return NULL; - - if (!JS_DefineProperty(cx, decoder->window_object, lm_location_str, - OBJECT_TO_JSVAL(obj), NULL, loc_assign, - JSPROP_ENUMERATE | JSPROP_PERMANENT)) { - return NULL; - } - if (!JS_DefineProperty(cx, decoder->document, lm_location_str, - OBJECT_TO_JSVAL(obj), NULL, loc_assign, - JSPROP_ENUMERATE | JSPROP_PERMANENT)) { - return NULL; - } - - /* Define the Location object (the current URL). */ - url->url_decoder = HOLD_BACK_COUNT(decoder); - url->url_type = FORM_TYPE_NONE; - url->url_object = obj; - url->index = URL_NOT_INDEXED; - decoder->location = obj; - return obj; -} diff --git a/mozilla/lib/libmocha/lm_win.c b/mozilla/lib/libmocha/lm_win.c deleted file mode 100644 index d88ec6ef749..00000000000 --- a/mozilla/lib/libmocha/lm_win.c +++ /dev/null @@ -1,3561 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - * JS reflection of the current Navigator Window. - * - * Brendan Eich, 9/8/95 - */ -#include "rosetta.h" -#include "lm.h" -#include "xp.h" -#include "xpgetstr.h" -#include "structs.h" -#include "layout.h" /* included via -I../layout */ -#include "prtime.h" -#include "shist.h" -#include "ssl.h" -#include "libi18n.h" -#include "jsdbgapi.h" -#include "intl_csi.h" -#include "layers.h" -#include "base64.h" - -#define IL_CLIENT -#include "libimg.h" /* Image Library public API. */ -#include "prthread.h" - -#if defined(JAVA) -#include "jsjava.h" -#elif defined (OJI) -#include "jsjava.h" -#include "jvmmgr.h" -#endif - -#undef FREE_AND_CLEAR /* XXX over-including Mac compiled headers */ - -extern int XP_MSG_JS_CLOSE_WINDOW; -extern int XP_MSG_JS_CLOSE_WINDOW_NAME; - -enum window_slot { - WIN_LENGTH = -1, - WIN_FRAMES = -2, - WIN_PARENT = -3, - WIN_TOP = -4, - WIN_SELF = -5, - WIN_NAME = -6, - WIN_STATUS = -7, - WIN_DEFAULT_STATUS = -8, - WIN_OPENER = -9, - WIN_CLOSED = -10, - WIN_WIDTH = -11, - WIN_HEIGHT = -12, - WIN_OUTWIDTH = -13, - WIN_OUTHEIGHT = -14, - WIN_XPOS = -15, - WIN_YPOS = -16, - WIN_XOFFSET = -17, - WIN_YOFFSET = -18, - WIN_SECURE = -19, - WIN_LOADING = -20, - WIN_FRAMERATE = -21, - WIN_OFFSCREEN_BUFFERING = -22 -}; - -#define IS_INSECURE_SLOT(s) (WIN_LOADING <= (s) && (s) <= WIN_CLOSED) - -static JSPropertySpec window_props[] = { - {"length", WIN_LENGTH, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"frames", WIN_FRAMES, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"parent", WIN_PARENT, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"top", WIN_TOP, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"self", WIN_SELF, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"window", WIN_SELF, JSPROP_READONLY}, - {"name", WIN_NAME, JSPROP_ENUMERATE}, - {"status", WIN_STATUS, JSPROP_ENUMERATE}, - {"defaultStatus", WIN_DEFAULT_STATUS, JSPROP_ENUMERATE}, - {lm_opener_str, WIN_OPENER, JSPROP_ENUMERATE}, - {lm_closed_str, WIN_CLOSED, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"innerWidth", WIN_WIDTH, JSPROP_ENUMERATE}, - {"innerHeight", WIN_HEIGHT, JSPROP_ENUMERATE}, - {"outerWidth", WIN_OUTWIDTH, JSPROP_ENUMERATE}, - {"outerHeight", WIN_OUTHEIGHT, JSPROP_ENUMERATE}, - {"screenX", WIN_XPOS, JSPROP_ENUMERATE}, - {"screenY", WIN_YPOS, JSPROP_ENUMERATE}, - {"pageXOffset", WIN_XOFFSET, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"pageYOffset", WIN_YOFFSET, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"secure", WIN_SECURE, JSPROP_ENUMERATE|JSPROP_READONLY}, - {"frameRate", WIN_FRAMERATE, JSPROP_ENUMERATE}, - {"offscreenBuffering", - WIN_OFFSCREEN_BUFFERING,JSPROP_ENUMERATE}, - {0} -}; - -static Chrome * -win_get_chrome(MWContext *context, Chrome *chrome) -{ - if (!context->mocha_context) - return NULL; - - /* All calls to this function must free the Chrome struct themselves!!! */ - chrome = JS_malloc(context->mocha_context, sizeof *chrome); - if (!chrome) - return NULL; - XP_BZERO(chrome, sizeof *chrome); - - ET_PostQueryChrome(context, chrome); - - return chrome; -} - -PR_STATIC_CALLBACK(PRBool) -win_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - MochaDecoder *decoder; - MWContext *context; - jsint count; - Chrome *chrome = NULL; - JSString * str; - jsint slot; - CL_OffscreenMode offscreen_mode; - int status; - - while (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, NULL))) { - obj = JS_GetPrototype(cx, obj); - if (!obj) - return JS_TRUE; - } - - /* - * Allow anyone who can address this window to refer to its "window" and - * "self" properties, because they refer to the window already in hand by - * the accessing script. Useful for layer scripts that 'import window.*'. - */ - if (JSVAL_IS_INT(id) && JSVAL_TO_INT(id) == WIN_SELF) { - *vp = OBJECT_TO_JSVAL(decoder->window_object); - return JS_TRUE; - } - - slot = JSVAL_IS_INT(id) ? JSVAL_TO_INT(id) : 0; - - if (!IS_INSECURE_SLOT(slot) && - !lm_CheckContainerAccess(cx, obj, decoder, - JSTARGET_UNIVERSAL_BROWSER_READ)) { - return JS_FALSE; - } - - context = decoder->window_context; - if (!context) { - if (JSVAL_IS_INT(id) && JSVAL_TO_INT(id) == WIN_CLOSED) - *vp = JSVAL_TRUE; - return JS_TRUE; - } - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - switch (slot) { - case WIN_LENGTH: - *vp = INT_TO_JSVAL(XP_ListCount(context->grid_children)); - break; - - case WIN_FRAMES: - *vp = OBJECT_TO_JSVAL(decoder->window_object); - break; - - case WIN_PARENT: - *vp = OBJECT_TO_JSVAL(decoder->window_object); - if (context->grid_parent) { - decoder = LM_GetMochaDecoder(context->grid_parent); - if (decoder) { - *vp = OBJECT_TO_JSVAL(decoder->window_object); - LM_PutMochaDecoder(decoder); - } - } - break; - - case WIN_TOP: - while (context->grid_parent) - context = context->grid_parent; - decoder = LM_GetMochaDecoder(context); - *vp = OBJECT_TO_JSVAL(decoder ? decoder->window_object : NULL); - if (decoder) - LM_PutMochaDecoder(decoder); - break; - - case WIN_NAME: - str = lm_LocalEncodingToStr(context, context->name); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - - case WIN_STATUS: - return JS_TRUE; /* XXX can't get yet, return last known */ - - case WIN_DEFAULT_STATUS: - str = JS_NewStringCopyZ(cx, context->defaultStatus); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - - case WIN_OPENER: - if (!JSVAL_IS_OBJECT(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_OBJECT, vp)) { - return JS_FALSE; - } - break; - - case WIN_CLOSED: - *vp = JSVAL_FALSE; - break; - - case WIN_WIDTH: - if (!(chrome = win_get_chrome(context, chrome))) - return JS_FALSE; - *vp = INT_TO_JSVAL(chrome->w_hint); - break; - - case WIN_HEIGHT: - if (!(chrome = win_get_chrome(context, chrome))) - return JS_FALSE; - *vp = INT_TO_JSVAL(chrome->h_hint); - break; - - case WIN_OUTWIDTH: - if (!(chrome = win_get_chrome(context, chrome))) - return JS_FALSE; - *vp = INT_TO_JSVAL(chrome->outw_hint); - break; - - case WIN_OUTHEIGHT: - if (!(chrome = win_get_chrome(context, chrome))) - return JS_FALSE; - *vp = INT_TO_JSVAL(chrome->outh_hint); - break; - - case WIN_XPOS: - if (!(chrome = win_get_chrome(context, chrome))) - return JS_FALSE; - *vp = INT_TO_JSVAL(chrome->l_hint); - break; - - case WIN_YPOS: - if (!(chrome = win_get_chrome(context, chrome))) - return JS_FALSE; - *vp = INT_TO_JSVAL(chrome->t_hint); - break; - - case WIN_XOFFSET: - *vp = INT_TO_JSVAL(CL_GetCompositorXOffset(context->compositor)); - break; - - case WIN_YOFFSET: - *vp = INT_TO_JSVAL(CL_GetCompositorYOffset(context->compositor)); - break; - - case WIN_SECURE: - *vp = JSVAL_FALSE; - HG99882 - break; - - case WIN_LOADING: - decoder = LM_GetMochaDecoder(context); - if (decoder && !decoder->load_event_sent) - *vp = JSVAL_TRUE; - else - *vp = JSVAL_FALSE; - if (decoder) - LM_PutMochaDecoder(decoder); - break; - - case WIN_FRAMERATE: - *vp = INT_TO_JSVAL(CL_GetCompositorFrameRate(context->compositor)); - break; - - case WIN_OFFSCREEN_BUFFERING: - offscreen_mode = CL_GetCompositorOffscreenDrawing(context->compositor); - - switch (offscreen_mode) { - case CL_OFFSCREEN_ENABLED: - *vp = JSVAL_TRUE; - break; - case CL_OFFSCREEN_DISABLED: - *vp = JSVAL_FALSE; - break; - case CL_OFFSCREEN_AUTO: - str = JS_NewStringCopyZ(cx, "auto"); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - } - break; - - default: - if (slot < 0) { - /* Don't mess with user-defined or method properties. */ - return JS_TRUE; - } - - /* XXX silly xp_cntxt.c puts newer contexts at the front! fix. */ - count = XP_ListCount(context->grid_children); - context = XP_ListGetObjectNum(context->grid_children, count - slot); - if (context) { - decoder = LM_GetMochaDecoder(context); - if (decoder) { - *vp = OBJECT_TO_JSVAL(decoder->window_object); - LM_PutMochaDecoder(decoder); - } else { - *vp = JSVAL_NULL; - } - } - break; - } - if (chrome) - JS_free(cx, chrome); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - MochaDecoder *decoder, *parent_decoder; - CL_OffscreenMode mode; - JSBool enable_offscreen; - jsdouble frame_rate, size; - MWContext *context; - Chrome *chrome = NULL; - enum window_slot window_slot; - const char *prop_name; - char *str, *name, *old_name; - jsint slot; - int32 width, height; - - while (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, NULL))) { - obj = JS_GetPrototype(cx, obj); - if (!obj) - return JS_TRUE; - } - - if (!lm_CheckContainerAccess(cx, obj, decoder, - JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - return JS_FALSE; - } - - context = decoder->window_context; - if (!context) - return JS_TRUE; - - if (!JSVAL_IS_INT(id)) { - /* Due to the wonderful world of threads we need to know ahead of time if - * someone is setting an onMouseMove event handler here or in document so - * that we don't lose messages.*/ - if (JS_TypeOfValue(cx, *vp) == JSTYPE_FUNCTION) { - if (JSVAL_IS_STRING(id)) { - prop_name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - /* XXX use lm_onMouseMove_str etc.*/ - if (XP_STRCMP(prop_name, "onmousemove") == 0 || - XP_STRCMP(prop_name, "onMouseMove") == 0) { - decoder->window_context->js_drag_enabled = TRUE; - } - } - } - return JS_TRUE; - } - - slot = JSVAL_TO_INT(id); - - window_slot = slot; - switch (window_slot) { - case WIN_NAME: - case WIN_STATUS: - case WIN_DEFAULT_STATUS: - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) { - return JS_FALSE; - } - break; - default:; - } - - switch (window_slot) { - case WIN_NAME: - /* Don't let rogue JS name a mail or news window and then close it. */ - if (context->type != MWContextBrowser && context->type != MWContextPane) - return JS_TRUE; - name = lm_StrToLocalEncoding(context, JSVAL_TO_STRING(*vp)); - if (!name) - return JS_FALSE; - if (!lm_CheckWindowName(cx, name)) { - XP_FREE(name); - return JS_FALSE; - } - old_name = context->name; - if (old_name) { - /* If context is a frame, change its name in its parent's scope. */ - if (context->grid_parent) { - parent_decoder = LM_GetMochaDecoder(context->grid_parent); - if (parent_decoder) { - JS_DeleteProperty(cx, parent_decoder->window_object, - old_name); - LM_PutMochaDecoder(parent_decoder); - } - } - XP_FREE(old_name); - } - context->name = name; - break; - - case WIN_STATUS: - ET_PostProgress(context, JS_GetStringBytes(JSVAL_TO_STRING(*vp))); - break; - - case WIN_DEFAULT_STATUS: - str = JS_strdup(cx, JS_GetStringBytes(JSVAL_TO_STRING(*vp))); - if (!str) - return JS_FALSE; - if (context->defaultStatus) - XP_FREE(context->defaultStatus); - context->defaultStatus = str; - ET_PostProgress(context, NULL); - break; - - case WIN_OPENER: - if (decoder->opener && !JSVAL_TO_OBJECT(*vp)) - decoder->opener = NULL; - break; - - case WIN_WIDTH: - if (context->grid_parent) - return JS_TRUE; - if (!JS_ValueToNumber(cx, *vp, &size)) - return JS_FALSE; - if (!(chrome = win_get_chrome(decoder->window_context, chrome))) - return JS_FALSE; - chrome->w_hint = (int32)size; - chrome->outw_hint = chrome->outh_hint = 0; - /* Minimum window size is 100 x 100 without security */ - if (chrome->w_hint < 100) { - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) - chrome->w_hint = 100; - } - chrome->w_hint = (chrome->w_hint < 10) ? 10 : chrome->w_hint; - ET_PostUpdateChrome(decoder->window_context, chrome); - break; - - case WIN_HEIGHT: - if (context->grid_parent) - return JS_TRUE; - if (!JS_ValueToNumber(cx, *vp, &size)) - return JS_FALSE; - if (!(chrome = win_get_chrome(decoder->window_context, chrome))) - return JS_FALSE; - chrome->h_hint = (int32)size; - chrome->outw_hint = chrome->outh_hint = 0; - /* Minimum window size is 100 x 100 without security */ - if (chrome->h_hint < 100) { - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) - chrome->h_hint = 100; - } - chrome->h_hint = (chrome->h_hint < 10) ? 10 : chrome->h_hint; - ET_PostUpdateChrome(decoder->window_context, chrome); - break; - - case WIN_OUTWIDTH: - if (!JS_ValueToNumber(cx, *vp, &size)) - return JS_FALSE; - if (!(chrome = win_get_chrome(decoder->window_context, chrome))) - return JS_FALSE; - chrome->outw_hint = (int32)size; - /* Minimum window size is 100 x 100 without security */ - if (chrome->outw_hint < 100) { - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) - chrome->outw_hint = 100; - } - chrome->outw_hint = (chrome->outw_hint < 10) ? 10 : chrome->outw_hint; - ET_PostUpdateChrome(decoder->window_context, chrome); - break; - - case WIN_OUTHEIGHT: - if (!JS_ValueToNumber(cx, *vp, &size)) - return JS_FALSE; - if (!(chrome = win_get_chrome(decoder->window_context, chrome))) - return JS_FALSE; - chrome->outh_hint = (int32)size; - /* Minimum window size is 100 x 100 without security */ - if (chrome->outh_hint < 100) { - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) - chrome->outh_hint = 100; - } - chrome->outh_hint = (chrome->outh_hint < 10) ? 10 : chrome->outh_hint; - ET_PostUpdateChrome(decoder->window_context, chrome); - break; - - case WIN_XPOS: - if (!JS_ValueToNumber(cx, *vp, &size)) - return JS_FALSE; - if (!(chrome = win_get_chrome(decoder->window_context, chrome))) - return JS_FALSE; - chrome->l_hint = (int32)size; - /* Windows must be positioned on screen without security */ - ET_PostGetScreenSize(decoder->window_context, &width, &height); - if ((width < chrome->l_hint + chrome->outw_hint)||(chrome->l_hint < 0)){ - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - chrome->l_hint = (width < chrome->l_hint + chrome->outw_hint) ? - width - chrome->outw_hint : chrome->l_hint; - chrome->l_hint = (chrome->l_hint < 0) ? 0 : chrome->l_hint; - } - } - ET_PostUpdateChrome(decoder->window_context, chrome); - break; - - case WIN_YPOS: - if (!JS_ValueToNumber(cx, *vp, &size)) - return JS_FALSE; - if (!(chrome = win_get_chrome(decoder->window_context, chrome))) - return JS_FALSE; - chrome->t_hint = (int32)size; - /* Windows must be positioned on screen without security */ - ET_PostGetScreenSize(decoder->window_context, &width, &height); - if ((height < chrome->t_hint + chrome->outh_hint)||(chrome->t_hint < 0)){ - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - chrome->t_hint = (height < chrome->t_hint + chrome->outh_hint) ? - height - chrome->outh_hint : chrome->t_hint; - chrome->t_hint = (chrome->t_hint < 0) ? 0 : chrome->t_hint; - } - } - ET_PostUpdateChrome(decoder->window_context, chrome); - break; - - case WIN_FRAMERATE: - if (!JS_ValueToNumber(cx, *vp, &frame_rate)) - return JS_FALSE; - CL_SetCompositorFrameRate(context->compositor, (uint32) frame_rate); - break; - - case WIN_OFFSCREEN_BUFFERING: - if (!JS_ValueToBoolean(cx, *vp, &enable_offscreen)) - return JS_FALSE; - mode = enable_offscreen ? CL_OFFSCREEN_ENABLED : CL_OFFSCREEN_DISABLED; - CL_SetCompositorOffscreenDrawing(context->compositor, mode); - break; - - default:; - } - if (chrome) - JS_free(cx, chrome); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -win_list_properties(JSContext *cx, JSObject *obj) -{ - MochaDecoder *decoder; - MWContext *context, *kid; - XP_List *list; - uint slot; - - decoder = JS_GetPrivate(cx, obj); - if (!decoder) - return JS_TRUE; - context = decoder->window_context; - if (!context) - return JS_TRUE; - - /* xp_cntxt.c puts newer contexts at the front! deal. */ - list = context->grid_children; - slot = XP_ListCount(list); - while ((kid = XP_ListNextObject(list)) != NULL) { - slot--; - if (!JS_DefineProperty(cx, decoder->window_object, kid->name, - JSVAL_NULL, NULL, NULL, - JSPROP_ENUMERATE|JSPROP_READONLY)) - return JS_FALSE; - } - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -win_resolve_name(JSContext *cx, JSObject *obj, jsval id) -{ - char * name = NULL; - MochaDecoder *decoder; - MWContext *context, *kid; - XP_List *list; - jsint slot; - JSObject *window_obj; - JSBool rv = JS_TRUE; - - /* Don't resolve any of names if id is on the left side of an = op. */ - if (JS_IsAssigning(cx)) - return JS_TRUE; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - - decoder = JS_GetPrivate(cx, obj); - if (!decoder) - return JS_TRUE; - context = decoder->window_context; - if (!context) - return JS_TRUE; - - name = lm_StrToLocalEncoding(context, JSVAL_TO_STRING(id)); - if (!name) - return JS_TRUE; - - /* xp_cntxt.c puts newer contexts at the front! deal. */ - list = context->grid_children; - slot = XP_ListCount(list); - while ((kid = XP_ListNextObject(list)) != NULL) { - slot--; - if (kid->name && XP_STRCMP(kid->name, name) == 0) { - window_obj = decoder->window_object; - if (!JS_DefinePropertyWithTinyId(cx, window_obj, - kid->name, (int8)slot, JSVAL_NULL, - NULL, NULL, - JSPROP_ENUMERATE|JSPROP_READONLY)) - { - rv = JS_FALSE; - goto done; - } - if (!JS_AliasElement(cx, window_obj, kid->name, slot)) { - rv = JS_FALSE; - goto done; - } - goto done; - } - } - - XP_FREE(name); - return lm_ResolveWindowProps(cx, decoder, obj, id); - -done: - XP_FREE(name); - return rv; -} - -JSBool -lm_ResolveWindowProps(JSContext *cx, MochaDecoder *decoder, JSObject *obj, - jsval id) -{ - const char * name; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - if (!XP_STRCMP(name, "screen")) - return ((JSBool) (lm_DefineScreen(decoder, obj) != NULL)); - -#ifdef NAV_HARDWARE - if (!XP_STRCMP(name, "hardware")) - return ((JSBool) (lm_DefineHardware(decoder, obj) != NULL)); -#endif - - if (!XP_STRCMP(name, "loading")) - return (JS_DefinePropertyWithTinyId(cx, obj, name, WIN_LOADING, - JSVAL_VOID, NULL, NULL, - JSPROP_ENUMERATE)); - - if (!XP_STRCMP(name, lm_navigator_str)) { - /* see if there is a global navigator object yet */ - MochaDecoder *crd = LM_GetCrippledDecoder(); - if (!crd->navigator) { - lm_DefinePluginClasses(crd); - crd->navigator = lm_DefineNavigator(crd); - if (!crd->navigator) - return JS_FALSE; - if (!JS_AddRoot(cx, &crd->navigator)) - return JS_FALSE; - } - - /* use the global navigator */ - decoder->navigator = crd->navigator; - if (!JS_DefineProperty(cx, obj, lm_navigator_str, - OBJECT_TO_JSVAL(decoder->navigator), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - return JS_FALSE; - } - - } - - if (!XP_STRCMP(name, lm_components_str)) { - /* see if there is a global components object yet */ - MochaDecoder *crd = LM_GetCrippledDecoder(); - if (!crd->components) { - crd->components = - lm_DefineComponents(crd); - if (!crd->components) - return JS_FALSE; - if (!JS_AddRoot(cx, &crd->components)) - return JS_FALSE; - } - - /* use the global navigator */ - decoder->components = crd->components; - if (!JS_DefineProperty(cx, obj, lm_components_str, - OBJECT_TO_JSVAL(decoder->components), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY)) { - return JS_FALSE; - } - } - - return lm_ResolveBar(cx, decoder, name); -} - -PR_STATIC_CALLBACK(void) -win_finalize(JSContext *cx, JSObject *obj) -{ - MochaDecoder *decoder; - - decoder = JS_GetPrivate(cx, obj); - if (!decoder) - return; - decoder->window_object = NULL; - - /* - * If the decoder is going down and no one has a ref to - * us run GC in LM_PutMochaDecoder() else destroy - * the context here because its not being used by - * whomever is finalizing us (i.e. a ref to a window - * from another) - */ - DROP_BACK_COUNT(decoder); -} - -JSBool win_check_access(JSContext *cx, JSObject *obj, jsval id, - JSAccessMode mode, jsval *vp) -{ - if(mode == JSACC_PARENT) { - return lm_CheckSetParentSlot(cx, obj, id, vp); - } - return JS_TRUE; -} - -JSClass lm_window_class = { - "Window", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, win_getProperty, win_setProperty, - win_list_properties, win_resolve_name, JS_ConvertStub, win_finalize, - NULL, win_check_access -}; - -/* - * Alert and some simple dialogs. - */ -PR_STATIC_CALLBACK(PRBool) -win_alert(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - MWContext *context; - char *message, *platform_message; - JSString * str; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_FALSE; - - /* if there is no context let the script continue */ - context = decoder->window_context; - if (!context) - return JS_TRUE; - - message = lm_StrToLocalEncoding(context, str); - - if (message) { - platform_message = lm_FixNewlines(cx, message, JS_FALSE); - ET_PostMessageBox(context, platform_message, JS_FALSE); - XP_FREEIF(platform_message); - XP_FREE(message); - } - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_confirm(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - MWContext *context; - JSString * str; - char *message; - JSBool ok; - - decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv); - if (!decoder) - return JS_FALSE; - if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_FALSE; - - context = decoder->window_context; - if (context) { - char *platform_message; - message = lm_StrToLocalEncoding(context, str); - if (!message) { - *rval = JSVAL_FALSE; - return JS_TRUE; - } - platform_message = lm_FixNewlines(cx, message, JS_FALSE); - ok = ET_PostMessageBox(context, platform_message, JS_TRUE); - XP_FREEIF(platform_message); - XP_FREE(message); - } - else { - ok = JS_FALSE; - } - *rval = BOOLEAN_TO_JSVAL(ok); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_prompt(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - MWContext *context; - jsval arg; - JSString *str; - char *retval; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - arg = argv[0]; - - context = decoder->window_context; - if (context) { - char *query, *defval, *platform_query; - - /* - * Build the query_string - */ - if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_FALSE; - query = lm_StrToLocalEncoding(context, str); - if (!query) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - platform_query = lm_FixNewlines(cx, query, JS_FALSE); - - /* - * Build the default value - */ - if (!(str = JS_ValueToString(cx, argv[1]))) { - return JS_FALSE; - } - defval = lm_StrToLocalEncoding(context, str); - - retval = ET_PostPrompt(context, platform_query, defval); - XP_FREEIF(query); - XP_FREEIF(defval); - XP_FREEIF(platform_query); - } - else { - retval = NULL; - } - - if (!retval) { - *rval = JSVAL_NULL; - return JS_TRUE; - } - - XP_ASSERT(context); - str = lm_LocalEncodingToStr(context, retval); - XP_FREE(retval); - if (!str) - return JS_FALSE; - *rval = STRING_TO_JSVAL(str); - return JS_TRUE; -} - -/* - * Open and close of a named window. - */ -JSBool -lm_CheckWindowName(JSContext *cx, const char *window_name) -{ - const char *cp; - - for (cp = window_name; *cp != '\0'; cp++) { - if (!XP_IS_ALPHA(*cp) && !XP_IS_DIGIT(*cp) && *cp != '_') { - JS_ReportError(cx, - "illegal character '%c' ('\\%o') in window name %s", - *cp, *cp, window_name); - return JS_FALSE; - } - } - return JS_TRUE; -} - -static int32 -win_has_option(char *options, char *name) -{ - char *comma, *equal; - int32 found = 0; - - for (;;) { - comma = XP_STRCHR(options, ','); - if (comma) *comma = '\0'; - equal = XP_STRCHR(options, '='); - if (equal) *equal = '\0'; - if (XP_STRCASECMP(options, name) == 0) { - if (!equal || XP_STRCASECMP(equal + 1, "yes") == 0) - found = 1; - else - found = XP_ATOI(equal + 1); - } - if (equal) *equal = '='; - if (comma) *comma = ','; - if (found || !comma) - break; - options = comma + 1; - } - return found; -} - -/* These apply to top-level windows only, not to frames */ -static uint lm_window_count = 0; -static uint lm_window_limit = 100; - -JSBool PR_CALLBACK -real_win_open(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval, PRBool newGroup); - -/* XXX this can't be static yet, it's called by lm_doc.c/doc_open */ -JSBool PR_CALLBACK -win_open(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return real_win_open(cx, obj, argc, argv, rval, PR_FALSE); -} - -JSBool PR_CALLBACK -win_spawn(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return real_win_open(cx, obj, argc, argv, rval, PR_TRUE); -} - -JSBool PR_CALLBACK -real_win_open(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval, PRBool newGroup) -{ - MochaDecoder *decoder, *new_decoder; - URL_Struct *url_struct; - JSString *str, *window_name_str; - const char *url_string; - char *window_name = NULL; - char *options; - Chrome *chrome = NULL; - MWContext *old_context, *context; - int32 width, height; - int32 win_width, win_height; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - /* Make url_string absolute based on current document's base URL. */ - url_struct = NULL; - if (argc > 0) { - if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_FALSE; - url_string = JS_GetStringBytes(str); - if (*url_string != '\0') { - url_string = lm_CheckURL(cx, url_string, JS_TRUE); - if (url_string) { - const char *referer; - url_struct = NET_CreateURLStruct(url_string, NET_DONT_RELOAD); - XP_FREE((char *)url_string); - if (!url_struct) { - JS_ReportOutOfMemory(cx); - return JS_FALSE; - } - if (!(referer = lm_GetSubjectOriginURL(cx)) || - !(url_struct->referer = JS_strdup(cx, referer))) { - NET_FreeURLStruct(url_struct); - return JS_FALSE; - } - } - } - if (!url_string) - return JS_FALSE; - } - - /* Set this to null so we can goto fail from here onward. */ - new_decoder = NULL; - - /* Sanity-check the optional window_name argument. */ - if (argc > 1) { - if (!(window_name_str = JS_ValueToString(cx, argv[1]))) - goto fail; - if (!JS_LockGCThing(cx, window_name_str)) - goto fail; - /* XXXunicode ? */ - window_name = lm_StrToLocalEncoding(decoder->window_context, window_name_str); - if (!lm_CheckWindowName(cx, window_name)) - goto fail; - } else { - window_name_str = NULL; - window_name = NULL; - } - - - /* Check for window chrome options. */ - chrome = XP_NEW_ZAP(Chrome); - if(chrome == NULL) - goto fail; - if (argc > 2) { - if (!(str = JS_ValueToString(cx, argv[2]))) - goto fail; - options = JS_GetStringBytes(str); - - chrome->show_button_bar = win_has_option(options, "toolbar"); - chrome->show_url_bar = win_has_option(options, "location"); - chrome->show_directory_buttons = - win_has_option(options, "directories") | win_has_option(options, "personalbar"); - chrome->show_bottom_status_bar = win_has_option(options, "status"); - chrome->show_menu = win_has_option(options, "menubar"); - chrome->show_security_bar = FALSE; - chrome->w_hint = - win_has_option(options, "innerWidth") | win_has_option(options, "width"); - chrome->h_hint = - win_has_option(options, "innerHeight") | win_has_option(options, "height"); - chrome->outw_hint = win_has_option(options, "outerWidth"); - chrome->outh_hint = win_has_option(options, "outerHeight"); - chrome->l_hint = - win_has_option(options, "left") | win_has_option(options, "screenX"); - chrome->t_hint = - win_has_option(options, "top") | win_has_option(options, "screenY"); - chrome->show_scrollbar = win_has_option(options, "scrollbars"); - chrome->allow_resize = win_has_option(options, "resizable"); - chrome->allow_close = TRUE; - chrome->dependent = win_has_option(options, "dependent"); - chrome->copy_history = FALSE; /* XXX need strong trust */ - chrome->topmost = win_has_option(options, "alwaysRaised"); - chrome->bottommost = win_has_option(options, "alwaysLowered"); - chrome->z_lock = win_has_option(options, "z-lock"); - chrome->is_modal = win_has_option(options, "modal"); - chrome->hide_title_bar = !(win_has_option(options, "titlebar")); - - /* Allow disabling of commands only if there is no menubar */ - if (!chrome->show_menu) { - chrome->disable_commands = !win_has_option(options, "hotkeys"); - if (XP_STRCASESTR(options,"hotkeys")==NULL) - chrome->disable_commands = FALSE; - } - /* If titlebar condition not specified, default to shown */ - if (XP_STRCASESTR(options,"titlebar")==0) - chrome->hide_title_bar=FALSE; - - if (chrome->topmost || chrome->bottommost || - chrome->z_lock || chrome->is_modal || - chrome->hide_title_bar || chrome->disable_commands) { - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - chrome->topmost = chrome->bottommost = - chrome->z_lock = chrome->is_modal = - chrome->hide_title_bar = chrome->disable_commands = 0; - } - } - - - /* In order to not start Java for every single window open we - * have to first check if we need to check, and then check. - * Start by getting width and height to use for positioning - * calculations. Defaults to 100 if neither are specified. - * Then get screen size. - */ - win_width = chrome->w_hint ? chrome->w_hint : - (chrome->outw_hint ? chrome->outw_hint : 100); - win_height = chrome->h_hint ? chrome->h_hint : - (chrome->outh_hint ? chrome->outh_hint : 100); - ET_PostGetScreenSize(decoder->window_context, &width, &height); - if ((chrome->w_hint && chrome->w_hint < 100) || - (chrome->h_hint && chrome->h_hint < 100) || - (chrome->outw_hint && chrome->outw_hint < 100) || - (chrome->outh_hint && chrome->outh_hint < 100) || - (width < chrome->l_hint + win_width) || - (chrome->l_hint < 0) || - (height < chrome->t_hint + win_height) || - (chrome->t_hint < 0)) { - /* The window is trying to put a window offscreen or make it too - * small. We have to check the security permissions - */ - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - /* Make sure windows are at least 100 by 100 pixels. */ - if (chrome->w_hint && chrome->w_hint < 100) { - chrome->w_hint = 100; - win_width = 100; - } - if (chrome->h_hint && chrome->h_hint < 100) { - chrome->h_hint = 100; - win_height = 100; - } - if (chrome->outw_hint && chrome->outw_hint < 100) { - chrome->outw_hint = 100; - win_width = 100; - } - if (chrome->outh_hint && chrome->outh_hint < 100) { - chrome->outh_hint = 100; - win_height = 100; - } - /* Windows must be positioned on screen without security */ - chrome->l_hint = (width < chrome->l_hint + win_width) ? - width - win_width : chrome->l_hint; - chrome->l_hint = (chrome->l_hint < 0) ? 0 : chrome->l_hint; - chrome->t_hint = (height < chrome->t_hint + win_height) ? - height - win_height : chrome->t_hint; - chrome->t_hint = (chrome->t_hint < 0) ? 0 : chrome->t_hint; - } - } - /* Make sure they always at least 10 x 10 regardless of security. 1 x 1 - * windows are really hard to spot */ - if (chrome->w_hint && chrome->w_hint < 10) chrome->w_hint = 10; - if (chrome->h_hint && chrome->h_hint < 10) chrome->h_hint = 10; - if (chrome->outw_hint && chrome->outw_hint < 10) chrome->outw_hint = 10; - if (chrome->outh_hint && chrome->outh_hint < 10) chrome->outh_hint = 10; - - /* You must specify both width and height to get either */ - if (chrome->w_hint == 0 || chrome->h_hint == 0) - chrome->w_hint = chrome->h_hint = 0; - if (chrome->outw_hint == 0 || chrome->outh_hint == 0) - chrome->outw_hint = chrome->outh_hint = 0; - - /* Needed to allow positioning of windows at 0,0 */ - if ((XP_STRCASESTR(options,"top") || XP_STRCASESTR(options,"left") || - XP_STRCASESTR(options,"screenX") || XP_STRCASESTR(options,"screenY")) != 0) - chrome->location_is_chrome=TRUE; - - options = 0; - } else { - /* Make a fully chromed window, but don't copy history. */ - chrome->show_button_bar = TRUE; - chrome->show_url_bar = TRUE; - chrome->show_directory_buttons = TRUE; - chrome->show_bottom_status_bar = TRUE; - chrome->show_menu = TRUE; - chrome->show_security_bar = FALSE; - chrome->w_hint = chrome->h_hint = 0; - chrome->is_modal = FALSE; - chrome->show_scrollbar = TRUE; - chrome->allow_resize = TRUE; - chrome->allow_close = TRUE; - chrome->copy_history = FALSE; /* XXX need strong trust */ - } - - /* Windows created by JS cannot be randomly used by Mail/News */ - chrome->restricted_target = TRUE; - - old_context = decoder->window_context; - if (!old_context) - goto fail; - if (window_name) - context = XP_FindNamedContextInList(old_context, (char*)window_name); - else - context = NULL; - - if (context && !newGroup) { - new_decoder = LM_GetMochaDecoder(context); - if (!new_decoder) - goto fail; - if (url_struct && !lm_GetURL(cx, new_decoder, url_struct)) { - url_struct = 0; - goto fail; - } - /* lm_GetURL() stashed a url_struct pointer, and owns it now. */ - url_struct = 0; - - /* If specific options are specified we will update the named - * window to match those options. If not, we won't change them */ - if (argc > 2) - ET_PostUpdateChrome(context, chrome); - } else { - LMWindowGroup *grp; - - if (lm_window_count >= lm_window_limit) - goto fail; - - if(newGroup) { - grp = lm_NewWindowGroup(); - } else { - grp = lm_MWContextToGroup(old_context); - } - - context = ET_PostNewWindow(old_context, url_struct, - (char*)window_name, - chrome, grp); - - if (!context) { - goto fail; - } - - /* ET_PostNewWindow() stashed a url_struct pointer, and owns it now. */ - url_struct = 0; - new_decoder = LM_GetMochaDecoder(context); - if (!new_decoder) { - (void) ET_PostDestroyWindow(context); - goto fail; - } - - /* Everything went well. Tell the new window it's okay to start - * reading events. - */ - if(newGroup) { - lm_StartWindowGroup(grp); - } - } - - new_decoder->opener = obj; - if (!JS_DefinePropertyWithTinyId(cx, new_decoder->window_object, - lm_opener_str, WIN_OPENER, - OBJECT_TO_JSVAL(obj), - NULL, NULL, JSPROP_ENUMERATE)) { - goto fail; - } - JS_UnlockGCThing(cx, window_name_str); - new_decoder->in_window_quota = JS_TRUE; - lm_window_count++; - LM_PutMochaDecoder(new_decoder); - *rval = OBJECT_TO_JSVAL(new_decoder->window_object); - - XP_FREE(chrome); - XP_FREEIF(window_name); - return JS_TRUE; - -fail: - if (window_name_str) - JS_UnlockGCThing(cx, window_name_str); - if (new_decoder) - LM_PutMochaDecoder(new_decoder); - if (url_struct) - NET_FreeURLStruct(url_struct); - XP_FREEIF(chrome); - XP_FREEIF(window_name); - *rval = JSVAL_NULL; - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -win_set_zoptions(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - JSString *str; - char *options; - Chrome *chrome = NULL; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - if (argc != 1) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - if (!decoder->window_context) - return JS_TRUE; - - /* Check for window chrome options. */ - chrome = win_get_chrome(decoder->window_context, chrome); - if(chrome == NULL) - return JS_FALSE; - - if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_TRUE; - options = JS_GetStringBytes(str); - - if (lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - chrome->topmost = win_has_option(options, "alwaysRaised"); - chrome->bottommost = win_has_option(options, "alwaysLowered"); - chrome->z_lock = win_has_option(options, "z-lock"); - } - - ET_PostUpdateChrome(decoder->window_context, chrome); - - options = 0; - JS_free(cx, chrome); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -win_set_hotkeys(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - Chrome *chrome = NULL; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - if (argc != 1) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - if (!decoder->window_context) - return JS_TRUE; - - /* Check for window chrome options. */ - chrome = win_get_chrome(decoder->window_context, chrome); - if(chrome == NULL) - return JS_FALSE; - - if(JSVAL_IS_BOOLEAN(argv[0])) { - if (lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - if (!chrome->show_menu) { - chrome->disable_commands = !JSVAL_TO_BOOLEAN(argv[0]); - } - } - } - - ET_PostUpdateChrome(decoder->window_context, chrome); - - JS_free(cx, chrome); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(JSBool) -win_set_resizable(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - Chrome *chrome = NULL; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - if (argc != 1) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - if (!decoder->window_context) - return JS_TRUE; - - /* Check for window chrome options. */ - chrome = win_get_chrome(decoder->window_context, chrome); - if(chrome == NULL) - return JS_FALSE; - - if(JSVAL_IS_BOOLEAN(argv[0])) { - chrome->allow_resize = JSVAL_TO_BOOLEAN(argv[0]); - } - - ET_PostUpdateChrome(decoder->window_context, chrome); - - JS_free(cx, chrome); - return JS_TRUE; -} - -static void -destroy_window(void *closure) -{ - MWContext * context = (MWContext *) - ((MozillaEvent_Timeout *)closure)->pClosure; - ET_PostDestroyWindow(context); -} - -PR_STATIC_CALLBACK(PRBool) -win_close(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - MochaDecoder *running_decoder; - MWContext *context; - char *message; - JSBool ok; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - context = decoder->window_context; - if (!context || context->grid_parent) - return JS_TRUE; - running_decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - /* Bypass close window check if script is signed */ - if (context->type != MWContextBrowser && context->type != MWContextPane || - (!decoder->opener && - (XP_ListCount(SHIST_GetList(context)) > 1 || - decoder != running_decoder)) && - !lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - /* - * Prevent this window.close() call if this window - * - is not a browser window, or - * - was not opened by javascript, and - * - has session history other than the current document, or - * - does not contain the script that is closing this window. - * - has no security privileges. - */ - if (context->name) - message = PR_smprintf(XP_GetString(XP_MSG_JS_CLOSE_WINDOW_NAME), - context->name); - else - message = XP_GetString(XP_MSG_JS_CLOSE_WINDOW); - ok = ET_PostMessageBox(context, message, JS_TRUE); - if (context->name) - XP_FREE(message); - if (!ok) - return JS_TRUE; - } - if(!decoder->called_win_close) { - decoder->called_win_close = JS_TRUE; - /* - * If we are closing the window that the script is running in - * wait until the script has finished running before sending - * the close message - */ - if (decoder == running_decoder) - ET_PostSetTimeout(destroy_window, context, 0, XP_DOCID(context)); - else - ET_PostDestroyWindow(context); - - } - - return JS_TRUE; -} - -/* - * Timeout support. - */ -static uint lm_timeout_count = 0; -static uint lm_timeout_limit = 1000; -PRMonitor *lm_timeout_monitor = NULL; - -uint lm_GetTimeoutCount(void) -{ - uint ans; - if(!lm_timeout_monitor) - lm_timeout_monitor = PR_NewMonitor(); - PR_EnterMonitor(lm_timeout_monitor); - ans = lm_timeout_count; - PR_ExitMonitor(lm_timeout_monitor); - return ans; -} - -void lm_IncrementTimeoutCount(void) -{ - if(!lm_timeout_monitor) - lm_timeout_monitor = PR_NewMonitor(); - PR_EnterMonitor(lm_timeout_monitor); - lm_timeout_count++; - PR_ExitMonitor(lm_timeout_monitor); -} - -void lm_DecrementTimeoutCount(void) -{ - if(!lm_timeout_monitor) - lm_timeout_monitor = PR_NewMonitor(); - PR_EnterMonitor(lm_timeout_monitor); - lm_timeout_count--; - PR_ExitMonitor(lm_timeout_monitor); -} - -#define HOLD_TIMEOUT(cx,to) ((to)->ref_count++) -#define DROP_TIMEOUT(decoder,to) \ - NSPR_BEGIN_MACRO \ - XP_ASSERT((to)->ref_count > 0); \ - if (--(to)->ref_count == 0) \ - free_timeout(decoder,to); \ - NSPR_END_MACRO - -static void -free_timeout(MochaDecoder *decoder, JSTimeout *timeout) -{ - MWContext *context; - JSContext *cx; - - cx = decoder->js_context; - context = decoder->window_context; - if (context) { - XP_ASSERT(context->js_timeouts_pending > 0); - context->js_timeouts_pending--; - } - - if (timeout->expr) - JS_free(cx, timeout->expr); - else if (timeout->funobj) { - JS_RemoveRoot(cx, &timeout->funobj); - if (timeout->argv) { - int i; - for (i = 0; i < timeout->argc; i++) - JS_RemoveRoot(cx, &timeout->argv[i]); - JS_free(cx, timeout->argv); - } - } - if (timeout->principals) - JSPRINCIPALS_DROP(cx, timeout->principals); - XP_FREEIF(timeout->filename); - JS_free(cx, timeout); - lm_DecrementTimeoutCount(); -} - -/* Re-insert timeout before the first list item with greater deadline, or at - * the head if the list is empty, or at the tail if there is no item with - * greater deadline. - * Through the righteousness of double-indirection we do this without two - * ugly if-tests. - */ -static void -insert_timeout_into_list(JSTimeout **listp, JSTimeout *timeout) -{ - JSTimeout *to; - - while ((to = *listp) != NULL) { - if (LL_CMP(to->when, >, timeout->when)) - break; - listp = &to->next; - } - timeout->next = to; - *listp = timeout; -} - -static void -win_run_timeout(void *closure) -{ - JSTimeout *timeout, *next; - JSTimeout *last_expired_timeout; - JSTimeout dummy_timeout; - MochaDecoder *decoder; - JSContext *cx; - int64 now; - jsval result; - LMWindowGroup *grp; - MWContext * context = (MWContext *)((MozillaEvent_Timeout *)closure)->pClosure; - void *timer_id; - - /* make sure the context hasn't disappeared out from under us */ - if (!XP_IsContextInList(context)) - return; - - timer_id = ((MozillaEvent_Timeout *)closure)->pTimerId; - - decoder = LM_GetMochaDecoder(context); - if (!decoder) - return; - - if (!decoder->timeouts) { - LM_PutMochaDecoder(decoder); - return; - } - - grp = lm_MWContextToGroup(context); - cx = decoder->js_context; - - /* - * A front end timer has gone off. See which of our timeouts need - * servicing - */ -restart: - LL_I2L(now, PR_IntervalNow()); - - /* The timeout list is kept in deadline order. Discover the - latest timeout whose deadline has expired. On some platforms, - front-end timeout events fire "early", so we need to test the - timer_id as well as the deadline. */ - last_expired_timeout = NULL; - for (timeout = decoder->timeouts; timeout; timeout = timeout->next) { - if ((timer_id == timeout->toid) || !LL_CMP(timeout->when, >, now)) - last_expired_timeout = timeout; - } - - /* Maybe the timeout that the event was fired for has been deleted - and there are no others timeouts with deadlines that make them - eligible for execution yet. Go away. */ - if (!last_expired_timeout) - return; - - /* Insert a dummy timeout into the list of timeouts between the portion - of the list that we are about to process now and those timeouts that - will be processed in a future call to win_run_timeout(). This dummy - timeout serves as the head of the list for any timeouts inserted as - a result of running a timeout. */ - dummy_timeout.toid = NULL; - dummy_timeout.public_id = 0; - dummy_timeout.next = last_expired_timeout->next; - last_expired_timeout->next = &dummy_timeout; - - /* Don't let lm_ClearWindowTimeouts throw away our stack-allocated - dummy timeout. */ - dummy_timeout.ref_count = 2; - - XP_ASSERT(!grp->js_timeout_insertion_point); - grp->js_timeout_insertion_point = &dummy_timeout.next; - - for (timeout = decoder->timeouts; timeout != &dummy_timeout; timeout = next) { - next = timeout->next; - - /* - * make sure the document that asked for this timeout is still - * the active document - */ - if (timeout->doc_id != XP_DOCID(decoder->window_context)) { -#ifdef DEBUG_chouck - XP_TRACE(("DOCID: in win_run_timeout")); -#endif - /* make sure this gets removed from the list */ - decoder->timeouts = next; - DROP_TIMEOUT(decoder, timeout); - continue; - } - - /* Hold the timeout in case expr or funobj releases its doc. */ - HOLD_TIMEOUT(cx, timeout); - grp->js_timeout_running = timeout; - - if (timeout->expr) { - /* Evaluate the timeout expression. */ - JSVersion save = JS_SetVersion(decoder->js_context, - timeout->version); - JS_EvaluateScriptForPrincipals(decoder->js_context, - decoder->window_object, - timeout->principals, - timeout->expr, - XP_STRLEN(timeout->expr), - timeout->filename, timeout->lineno, - &result); - JS_SetVersion(decoder->js_context, save); - } else { - int64 lateness64; - int32 lateness; - - /* Add "secret" final argument that indicates timeout - lateness in milliseconds */ - LL_SUB(lateness64, now, timeout->when); - LL_L2I(lateness, lateness64); - timeout->argv[timeout->argc] = INT_TO_JSVAL((jsint)lateness); - JS_CallFunctionValue(cx, decoder->window_object, - OBJECT_TO_JSVAL(timeout->funobj), - timeout->argc + 1, timeout->argv, &result); - } - - /* If timeout's reference count is now 1, its doc was released - * and we should restart this function. - */ - grp->js_timeout_running = NULL; - if (timeout->ref_count == 1) { - free_timeout(decoder, timeout); - goto restart; - } - DROP_TIMEOUT(decoder, timeout); - - /* If we have a regular interval timer, we re-fire the - * timeout, accounting for clock drift. - */ - if (timeout->interval) { - /* Compute time to next timeout for interval timer. */ - int32 delay32; - int64 interval, delay; - LL_I2L(interval, timeout->interval); - LL_ADD(timeout->when, timeout->when, interval); - LL_I2L(now, PR_IntervalNow()); - LL_SUB(delay, timeout->when, now); - LL_L2I(delay32, delay); - - /* If the next interval timeout is already supposed to - * have happened then run the timeout immediately. - */ - if (delay32 < 0) - delay32 = 0; - - /* Reschedule timeout. Account for possible error return in - code below that checks for zero toid. */ - timeout->toid = ET_PostSetTimeout(win_run_timeout, - decoder->window_context, - (uint32)delay32, - decoder->doc_id); - } - - /* Running a timeout can cause another timeout to be deleted, - so we need to reset the pointer to the following timeout. */ - next = timeout->next; - decoder->timeouts = next; - - /* Free the timeout if this is not a repeating interval - * timeout (or if it was an interval timeout, but we were - * unsuccessful at rescheduling it.) - */ - if (!timeout->interval || !timeout->toid) { - DROP_TIMEOUT(decoder, timeout); - } else { - /* Reschedule an interval timeout */ - /* Insert interval timeout onto list sorted in deadline order. */ - insert_timeout_into_list(grp->js_timeout_insertion_point, timeout); - } - } - - /* Take the dummy timeout off the head of the list */ - XP_ASSERT(decoder->timeouts == &dummy_timeout); - decoder->timeouts = dummy_timeout.next; - grp->js_timeout_insertion_point = NULL; - - LM_PutMochaDecoder(decoder); -} - -void -lm_ClearWindowTimeouts(MochaDecoder *decoder) -{ - JSTimeout *timeout, *next; - LMWindowGroup *grp; - - if(decoder->window_context) { - grp = lm_MWContextToGroup(decoder->window_context); - if(!grp) - grp = LM_GetDefaultWindowGroup(decoder->window_context); - } - - for (timeout = decoder->timeouts; timeout; timeout = next) { - /* If win_run_timeouts() is higher up on the stack for this - decoder, e.g. as a result of document.write from a timeout, - then we need to reset the list insertion point for - newly-created timeouts in case the user adds a timeout, - before we pop the stack back to win_run_timeouts(). */ - if (grp->js_timeout_running == timeout) - grp->js_timeout_insertion_point = NULL; - - next = timeout->next; - if (timeout->toid) - ET_PostClearTimeout(timeout->toid); - timeout->toid = NULL; - DROP_TIMEOUT(decoder, timeout); - } - - for (timeout = decoder->saved_timeouts; timeout; timeout = next) { - next = timeout->next; - DROP_TIMEOUT(decoder, timeout); - } - - decoder->timeouts = NULL; - decoder->saved_timeouts = NULL; -} - -/* - * Stop time temporarily till we restore the timeouts. The timeouts - * are cancelled with the FE, the current time is recorded and - * the timeout list is saved. - */ -void -lm_SaveWindowTimeouts(MochaDecoder *decoder) -{ - JSTimeout *timeout; - int64 now, time_left; - - if (!decoder->timeouts) - return; - - LL_I2L(now, PR_IntervalNow()); - - /* - * Clear all the timeouts so that they don't fire till we're - * ready to restart time. - */ - for (timeout = decoder->timeouts; timeout; timeout = timeout->next) { - ET_PostClearTimeout(timeout->toid); - /* Figure out how much time was left before the timeout fired */ - LL_SUB(time_left, timeout->when, now); - timeout->when = time_left; - } - - decoder->saved_timeouts = decoder->timeouts; - decoder->timeouts = NULL; -} - -/* - * Restore timeouts from the saved_timeouts list and restart time. - * These are timeouts that were suspended while we were reloading - * the document. - */ -void -lm_RestoreWindowTimeouts(MochaDecoder *decoder) -{ - JSTimeout *timeout, *next; - int64 now, when; - int interval; - JSBool fire_now = JS_FALSE; - - if (!decoder->saved_timeouts) - return; - - LL_I2L(now, PR_IntervalNow()); - - for (timeout = decoder->saved_timeouts; timeout; timeout = next) { - next = timeout->next; - - LL_L2I(interval, timeout->when); - /* Unclear if result can be one of the operands */ - LL_ADD(when, timeout->when, now); - timeout->when = when; - - timeout->doc_id = decoder->doc_id; - - /* - * If we don't have to fire this timeout now, we tell the - * FE to call us back. - */ - if (interval > 0) { - timeout->toid = ET_PostSetTimeout(win_run_timeout, - decoder->window_context, - (uint32)interval, - decoder->doc_id); - } - else { - timeout->toid = NULL; - fire_now = JS_TRUE; - } - - insert_timeout_into_list(&decoder->timeouts, timeout); - } - - decoder->saved_timeouts = NULL; - - /* - * If there are any timeouts that are ready to go, have them fired - * off immediately. - */ - if (fire_now) { - MozillaEvent_Timeout e; - - e.ce.doc_id = decoder->doc_id; - e.pClosure = decoder->window_context; - e.pTimerId = NULL; - e.ulTime = 0; - - win_run_timeout((void *)&e); - } -} - -static timeout_public_id_counter = 0; - -static const char setTimeout_str[] = "setTimeout"; -static const char setInterval_str[] = "setInterval"; -static const char *time_methods[2] = { setTimeout_str, setInterval_str }; - -static JSBool -win_set_timeout_or_interval(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval, - JSBool interval_timer) -{ - MWContext *context; - MochaDecoder *decoder; - jsdouble interval; - JSString *str; - char *expr; - JSTimeout *timeout, **insertion_point; - int64 now, delta; - JSObject *funobj; - JSStackFrame *fp; - LMWindowGroup *grp; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (lm_GetTimeoutCount() >= lm_timeout_limit) { - JS_ReportError(cx, "too many timeouts and intervals"); - return JS_FALSE; - } - - if (!JS_ValueToNumber(cx, argv[1], &interval)) - return JS_FALSE; - - switch (JS_TypeOfValue(cx, argv[0])) { - case JSTYPE_FUNCTION: - funobj = JSVAL_TO_OBJECT(argv[0]); - expr = NULL; - break; - case JSTYPE_STRING: - case JSTYPE_OBJECT: - if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_FALSE; - expr = JS_strdup(cx, JS_GetStringBytes(str)); - if (!expr) - return JS_FALSE; - funobj = NULL; - break; - default: - JS_ReportError(cx, "useless %s call (missing quotes around argument?)", - time_methods[interval_timer]); - return JS_FALSE; - } - - timeout = JS_malloc(cx, sizeof *timeout); - if (!timeout) { - JS_free(cx, expr); - return JS_FALSE; - } - XP_BZERO(timeout, sizeof *timeout); - timeout->ref_count = 1; - if (interval_timer) - timeout->interval = (int32)interval; - timeout->expr = expr; - timeout->funobj = funobj; - timeout->version = JS_GetVersion(cx); - timeout->principals = lm_GetPrincipalsFromStackFrame(cx); - if (timeout->principals == NULL) { - /* Result of out of memory error */ - DROP_TIMEOUT(decoder, timeout); - return JS_FALSE; - } - JSPRINCIPALS_HOLD(cx, timeout->principals); - - fp = NULL; - while ((fp = JS_FrameIterator(cx, &fp)) != NULL) { - JSScript *script = JS_GetFrameScript(cx, fp); - if (script) { - /* - * XXX - Disable error reporter; we may get an error - * trying to find a line number. Two cases where we - * get an error is in evaluating an expression as part - * of the preferences code, and evaluating a javascript: - * typein. In both cases there are no newlines and no - * source annotations are generated, and the initial - * linenumber is specified as zero. We need to clean - * up all those cases and then remove the error reporter - * workaround. - */ - JSErrorReporter reporter = JS_SetErrorReporter(cx, NULL); - const char *filename = JS_GetScriptFilename(cx, script); - timeout->filename = filename ? XP_STRDUP(filename) : NULL; - timeout->lineno = JS_PCToLineNumber(cx, script, - JS_GetFramePC(cx, fp)); - JS_SetErrorReporter(cx, reporter); - break; - } - } - - /* Keep track of any pending timeouts so that FE can tell whether - the stop button should be active. */ - context = decoder->window_context; - if (context) { - context->js_timeouts_pending++; - grp = lm_MWContextToGroup(context); - } else { - grp = LM_GetDefaultWindowGroup(NULL); - } - - if (expr) { - timeout->argv = 0; - timeout->argc = 0; - } else { - int i; - /* Leave an extra slot for a secret final argument that - indicates to the called function how "late" the timeout is. */ - timeout->argv = JS_malloc(cx, (argc - 1) * sizeof(jsval)); - if (!timeout->argv) { - DROP_TIMEOUT(decoder, timeout); - return JS_FALSE; - } - if (!JS_AddNamedRoot(cx, &timeout->funobj, "timeout.funobj")) { - DROP_TIMEOUT(decoder, timeout); - return JS_FALSE; - } - - timeout->argc = 0; - for (i = 2; (uint)i < argc; i++) { - timeout->argv[i - 2] = argv[i]; - if (!JS_AddNamedRoot(cx, &timeout->argv[i - 2], "timeout.argv[i]")) - { - DROP_TIMEOUT(decoder, timeout); - return JS_FALSE; - } - timeout->argc++; - } - } - - LL_I2L(now, PR_IntervalNow()); - LL_D2L(delta, interval); - LL_ADD(timeout->when, now, delta); - timeout->doc_id = decoder->doc_id; - - if (interval < 0) - interval = 0; - - timeout->toid = ET_PostSetTimeout(win_run_timeout, - decoder->window_context, - (uint32)interval, - decoder->doc_id); - if (!timeout->toid) { - DROP_TIMEOUT(decoder, timeout); - return JS_FALSE; - } - - if (grp->js_timeout_insertion_point == NULL) - insertion_point = &decoder->timeouts; - else - insertion_point = grp->js_timeout_insertion_point; - - /* Insert interval timeout onto list sorted in deadline order */ - insert_timeout_into_list(insertion_point, timeout); - - lm_IncrementTimeoutCount(); - - timeout->public_id = ++timeout_public_id_counter; - *rval = INT_TO_JSVAL((jsint)timeout->public_id); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_set_timeout(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return win_set_timeout_or_interval(cx, obj, argc, argv, rval, JS_FALSE); -} - -PR_STATIC_CALLBACK(PRBool) -win_set_interval(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return win_set_timeout_or_interval(cx, obj, argc, argv, rval, JS_TRUE); -} - -PR_STATIC_CALLBACK(PRBool) -win_clear_timeout(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - uint32 public_id; - JSTimeout **top, *timeout; - LMWindowGroup *grp; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - if (!JSVAL_IS_INT(argv[0])) - return JS_TRUE; - public_id = (uint32)JSVAL_TO_INT(argv[0]); - if (!public_id) /* id of zero is reserved for internal use */ - return JS_TRUE; - if(decoder->window_context) { - grp = lm_MWContextToGroup(decoder->window_context); - if(!grp) - grp = LM_GetDefaultWindowGroup(decoder->window_context); - } else { - grp = LM_GetDefaultWindowGroup(NULL); - } - for (top = &decoder->timeouts; ((timeout = *top) != NULL); top = &timeout->next) { - if (timeout->public_id == public_id) { - if (grp->js_timeout_running == timeout) { - /* We're running from inside the timeout. Mark this - timeout for deferred deletion by the code in - win_run_timeout() */ - timeout->interval = 0; - } else { - /* Delete the timeout from the pending timeout list */ - *top = timeout->next; - ET_PostClearTimeout(timeout->toid); - DROP_TIMEOUT(decoder, timeout); - } - break; - } - } - return JS_TRUE; -} - -/* Sleep for the specified number of milliseconds */ -PR_STATIC_CALLBACK(PRBool) -win_delay(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - -/* XXX - Brendan and Scott decided not to provide a delay() method - because of untoward side-effects of its use. We might do so in the - future, so I'm effectively reserving the name by leaving a - do-nothing method in the Window object. */ - -#if DELAY_METHOD_ALLOWED - -/* Arbitrary maximum delay to prevent near-infinit delays */ -#define JS_MAX_DELAY 1000 - - jsdouble ms; - int64 ms64, c; - - if (argc < 1) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - - if (!JS_ValueToNumber(cx, argv[0], &ms)) - return JS_FALSE; - - if (ms < 0) { - JS_ReportError(cx, "milliseconds argument must be non-negative"); - return JS_FALSE; - } - - /* Don't let someone hang the JS thread for too long. */ - if (ms > JS_MAX_DELAY) - ms = JS_MAX_DELAY; - - LL_UI2L(ms64, (uint32)ms); - LL_I2L(c, 1000); - LL_MUL(ms64, ms64, c); - { - PRIntervalTime i; - LL_L2I(i, ms64); - PR_Sleep(i); - } -#undef JS_MAX_DELAY - -#endif - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_focus(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (!decoder->window_context) - return JS_TRUE; - - ET_PostManipulateForm(decoder->window_context, 0, EVENT_FOCUS); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_blur(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (!decoder->window_context) - return JS_TRUE; - - ET_PostManipulateForm(decoder->window_context, 0, EVENT_BLUR); - - return JS_TRUE; -} - -/* - * Scrolling support. - */ -PR_STATIC_CALLBACK(PRBool) -win_scroll_to(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - int32 x, y; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (argc != 2) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - - if (!decoder->window_context) - return JS_TRUE; - - if (!JS_ValueToInt32(cx, argv[0], &x) || !JS_ValueToInt32(cx, argv[1], &y)) - return JS_FALSE; - - ET_PostScrollDocTo(decoder->window_context, 0, x<0?0:x, y<0?0:y); - return JS_TRUE; -} - -/* - * Scrolling support. - */ -PR_STATIC_CALLBACK(PRBool) -win_scroll_by(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - int32 x, y; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (argc != 2) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - - if (!decoder->window_context) - return JS_TRUE; - - if (!JS_ValueToInt32(cx, argv[0], &x) || !JS_ValueToInt32(cx, argv[1], &y)) - return JS_FALSE; - - ET_PostScrollDocBy(decoder->window_context, 0, x, y); - return JS_TRUE; -} - -/* - * Window resizing after initial creation. - */ -PR_STATIC_CALLBACK(PRBool) -win_resize_to(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - Chrome *chrome = NULL; - int32 width, height; - JSBool outer_size; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (argc > 3) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - - if (!decoder->window_context) - return JS_TRUE; - - if (!JS_ValueToInt32(cx, argv[0], &width) || !JS_ValueToInt32(cx, argv[1], &height)) - return JS_FALSE; - - if (!(chrome = win_get_chrome(decoder->window_context, chrome))) - return JS_FALSE; - - if (argc==3 && JS_ValueToBoolean(cx, argv[2], &outer_size) && outer_size == JS_TRUE) { - chrome->outw_hint = width; - chrome->outh_hint = height; - if (chrome->outw_hint <= 0 || chrome->outh_hint <= 0) { - JS_free(cx, chrome); - return JS_TRUE; - } - } - else { - chrome->w_hint = width; - chrome->h_hint = height; - chrome->outw_hint = 0; - chrome->outh_hint = 0; - if (chrome->w_hint <= 0 || chrome->h_hint <= 0 || - decoder->window_context->grid_parent) { - JS_free(cx, chrome); - return JS_TRUE; - } - } - if ((chrome->w_hint && chrome->w_hint < 100) || - (chrome->h_hint && chrome->h_hint < 100) || - (chrome->outw_hint && chrome->outw_hint < 100) || - (chrome->outh_hint && chrome->outh_hint < 100)) { - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - /* Make sure windows are at least 100 by 100 pixels. */ - if (chrome->w_hint && chrome->w_hint < 100) chrome->w_hint = 100; - if (chrome->h_hint && chrome->h_hint < 100) chrome->h_hint = 100; - if (chrome->outw_hint && chrome->outw_hint < 100) chrome->outw_hint = 100; - if (chrome->outh_hint && chrome->outh_hint < 100) chrome->outh_hint = 100; - } - } - /* Make sure they always at least 10 x 10 regardless of security. 1 x 1 - * windows are really hard to spot */ - if (chrome->w_hint && chrome->w_hint < 10) chrome->w_hint = 10; - if (chrome->h_hint && chrome->h_hint < 10) chrome->h_hint = 10; - if (chrome->outw_hint && chrome->outw_hint < 10) chrome->outw_hint = 10; - if (chrome->outh_hint && chrome->outh_hint < 10) chrome->outh_hint = 10; - - ET_PostUpdateChrome(decoder->window_context, chrome); - JS_free(cx, chrome); - return JS_TRUE; -} - -/* - * Scrolling support. - */ -PR_STATIC_CALLBACK(PRBool) -win_resize_by(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - Chrome *chrome = NULL; - int32 width, height; - JSBool outer_size; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (argc > 3) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - - if (!decoder->window_context) - return JS_TRUE; - - if (!JS_ValueToInt32(cx, argv[0], &width) || !JS_ValueToInt32(cx, argv[1], &height)) - return JS_FALSE; - - if (!(chrome = win_get_chrome(decoder->window_context, chrome))) - return JS_FALSE; - - if (argc==3 && JS_ValueToBoolean(cx, argv[2], &outer_size) && outer_size == JS_TRUE) { - chrome->outw_hint += width; - chrome->outh_hint += height; - if (chrome->outw_hint <= 0 || chrome->outh_hint <= 0) { - JS_free(cx, chrome); - return JS_TRUE; - } - } - else { - chrome->w_hint += width; - chrome->h_hint += height; - chrome->outw_hint = 0; - chrome->outh_hint = 0; - if (chrome->w_hint <= 0 || chrome->h_hint <= 0 || - decoder->window_context->grid_parent) { - JS_free(cx, chrome); - return JS_TRUE; - } - } - if ((chrome->w_hint && chrome->w_hint < 100) || - (chrome->h_hint && chrome->h_hint < 100) || - (chrome->outw_hint && chrome->outw_hint < 100) || - (chrome->outh_hint && chrome->outh_hint < 100)) { - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - /* Make sure windows are at least 100 by 100 pixels. */ - if (chrome->w_hint && chrome->w_hint < 100) chrome->w_hint = 100; - if (chrome->h_hint && chrome->h_hint < 100) chrome->h_hint = 100; - if (chrome->outw_hint && chrome->outw_hint < 100) chrome->outw_hint = 100; - if (chrome->outh_hint && chrome->outh_hint < 100) chrome->outh_hint = 100; - } - } - /* Make sure they always at least 10 x 10 regardless of security. 1 x 1 - * windows are really hard to spot */ - if (chrome->w_hint && chrome->w_hint < 10) chrome->w_hint = 10; - if (chrome->h_hint && chrome->h_hint < 10) chrome->h_hint = 10; - if (chrome->outw_hint && chrome->outw_hint < 10) chrome->outw_hint = 10; - if (chrome->outh_hint && chrome->outh_hint < 10) chrome->outh_hint = 10; - - ET_PostUpdateChrome(decoder->window_context, chrome); - JS_free(cx, chrome); - return JS_TRUE; -} - -/* - * Scrolling support. - */ -PR_STATIC_CALLBACK(PRBool) -win_move_to(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - Chrome *chrome = NULL; - int32 width, height, x, y; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (argc != 2) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - - if (!decoder->window_context) - return JS_TRUE; - - if (!JS_ValueToInt32(cx, argv[0], &x) || !JS_ValueToInt32(cx, argv[1], &y)) - return JS_FALSE; - - if (!(chrome = win_get_chrome(decoder->window_context, chrome))) - return JS_FALSE; - - chrome->l_hint = x; - chrome->t_hint = y; - - /* Windows must be positioned on screen without security */ - ET_PostGetScreenSize(decoder->window_context, &width, &height); - if ((width < chrome->l_hint + chrome->outw_hint) || - (chrome->l_hint < 0) || - (height < chrome->t_hint + chrome->outh_hint) || - (chrome->t_hint < 0)) { - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - chrome->l_hint = (width < chrome->l_hint + chrome->outw_hint) ? - width - chrome->outw_hint : chrome->l_hint; - chrome->l_hint = (chrome->l_hint < 0) ? 0 : chrome->l_hint; - chrome->t_hint = (height < chrome->t_hint + chrome->outh_hint) ? - height - chrome->outh_hint : chrome->t_hint; - chrome->t_hint = (chrome->t_hint < 0) ? 0 : chrome->t_hint; - } - } - - ET_PostUpdateChrome(decoder->window_context, chrome); - JS_free(cx, chrome); - return JS_TRUE; -} - -/* - * Scrolling support. - */ -PR_STATIC_CALLBACK(PRBool) -win_move_by(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - Chrome *chrome = NULL; - int32 x, y, width, height; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (argc != 2) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - - if (!decoder->window_context) - return JS_TRUE; - - if (!JS_ValueToInt32(cx, argv[0], &x) || !JS_ValueToInt32(cx, argv[1], &y)) - return JS_FALSE; - - if (!(chrome = win_get_chrome(decoder->window_context, chrome))) - return JS_FALSE; - - chrome->l_hint += x; - chrome->t_hint += y; - - /* Windows must be positioned on screen without security */ - ET_PostGetScreenSize(decoder->window_context, &width, &height); - if ((width < chrome->l_hint + chrome->outw_hint) || - (chrome->l_hint < 0) || - (height < chrome->t_hint + chrome->outh_hint) || - (chrome->t_hint < 0)) { - if (!lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - chrome->l_hint = (width < chrome->l_hint + chrome->outw_hint) ? - width - chrome->outw_hint : chrome->l_hint; - chrome->l_hint = (chrome->l_hint < 0) ? 0 : chrome->l_hint; - chrome->t_hint = (height < chrome->t_hint + chrome->outh_hint) ? - height - chrome->outh_hint : chrome->t_hint; - chrome->t_hint = (chrome->t_hint < 0) ? 0 : chrome->t_hint; - } - } - - ET_PostUpdateChrome(decoder->window_context, chrome); - JS_free(cx, chrome); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_capture_events(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - jsdouble d; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (!decoder->window_context) - return JS_TRUE; - - if (argc != 1) - return JS_TRUE; - - if (!JS_ValueToNumber(cx, argv[0], &d)) - return JS_FALSE; - - decoder->event_bit |= (uint32)d; - decoder->window_context->event_bit |= (uint32)d; - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_release_events(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - JSEventCapturer *cap; - jsdouble d; - jsint layer_index; - jsint max_layer_num; - JSObject *cap_obj; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (!decoder->window_context) - return JS_TRUE; - - if (argc != 1) - return JS_TRUE; - - if (!JS_ValueToNumber(cx, argv[0], &d)) - return JS_FALSE; - - decoder->event_bit &= ~(uint32)d; - decoder->window_context->event_bit &= ~(uint32)d; - - /* Now we have to see if anyone else wanted that bit set. Joy!*/ - max_layer_num = LO_GetNumberOfLayers(decoder->window_context); - - for (layer_index=0; layer_index <= max_layer_num; layer_index++) { - cap_obj = LO_GetLayerMochaObjectFromId(decoder->window_context, layer_index); - if (cap_obj && (cap = JS_GetPrivate(cx, cap_obj)) != NULL) - decoder->window_context->event_bit |= cap->event_bit; - - cap_obj = lm_GetDocumentFromLayerId(decoder, layer_index); - if (cap_obj && (cap = JS_GetPrivate(cx, cap_obj)) != NULL) - decoder->window_context->event_bit |= cap->event_bit; - } - - return JS_TRUE; -} - -static PRBool -setExternalCapture(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, JSBool val) -{ - MochaDecoder *decoder; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (argc != 0) - return JS_TRUE; - - if (lm_CanAccessTarget(cx, JSTARGET_UNIVERSAL_BROWSER_WRITE)) { - if (decoder->principals) - lm_SetExternalCapture(cx, decoder->principals, val); - } - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_enable_external_capture(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return setExternalCapture(cx, obj, argc, argv, JS_TRUE); -} - -PR_STATIC_CALLBACK(PRBool) -win_disable_external_capture(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - return setExternalCapture(cx, obj, argc, argv, JS_FALSE); -} - -PR_STATIC_CALLBACK(PRBool) -win_compromise_principals(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - decoder->principals_compromised = JS_TRUE; - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_downgrade_principals(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - - if (decoder->principals) - lm_InvalidateCertPrincipals(decoder, decoder->principals); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_back(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - if (!decoder->window_context) - return JS_TRUE; - - ET_PostBackCommand(decoder->window_context); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_forward(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - if (!decoder->window_context) - return JS_TRUE; - - ET_PostForwardCommand(decoder->window_context); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_home(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - if (!decoder->window_context) - return JS_TRUE; - - ET_PostHomeCommand(decoder->window_context); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_find(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - MWContext *context; - JSString *str; - JSBool ret = JS_TRUE, - matchCase = JS_FALSE, - searchBackward = JS_FALSE; - char * findStr; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - context = decoder->window_context; - if (!context) - return JS_TRUE; - - /* If no find argument set, just bring up find dialog */ - if (argc == 0) { - ET_PostFindCommand(context, NULL, JS_FALSE, JS_FALSE); - return JS_TRUE; - } - - if (argc >3 ) - return JS_FALSE; - - if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_TRUE; - if (!lm_CheckPermissions(cx, decoder->window_object, - JSTARGET_UNIVERSAL_BROWSER_READ)) - return JS_FALSE; - - if (argc == 3) { - if (!JS_ValueToBoolean(cx, argv[1], &matchCase)) - matchCase = JS_FALSE; - if (!JS_ValueToBoolean(cx, argv[2], &searchBackward)) - searchBackward = JS_FALSE; - } - - findStr = lm_StrToLocalEncoding(context, str); - ret = ET_PostFindCommand(context, findStr, matchCase, searchBackward); - - XP_FREEIF(findStr); - *rval = BOOLEAN_TO_JSVAL(ret); - - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_print(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - if (!decoder->window_context) - return JS_TRUE; - - ET_PostPrintCommand(decoder->window_context); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_open_file(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - if (!decoder->window_context) - return JS_TRUE; - - ET_PostOpenFileCommand(decoder->window_context); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_stop(JSContext *cx, JSObject *obj, - uint argc, jsval *argv, jsval *rval) -{ - MochaDecoder *decoder; - - if (!(decoder = JS_GetInstancePrivate(cx, obj, &lm_window_class, argv))) - return JS_FALSE; - if (!decoder->window_context) - return JS_TRUE; - - ET_moz_CallFunctionAsync((ETVoidPtrFunc) XP_InterruptContext, decoder->window_context); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_atob(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - JSString *str; - char *srcStr, *destStr = NULL, *tmpStr; - unsigned int len; - - if (argc != 1) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_FALSE; - - srcStr = JS_GetStringBytes(str); - if (JS_GetStringLength(str) == 0) { - *rval = JS_GetEmptyStringValue(cx); - return JS_TRUE; - } - - tmpStr = (char *)ATOB_AsciiToData(srcStr, &len); - if (tmpStr == NULL) { - JS_ReportError(cx, "base64 decoder failure"); - return JS_FALSE; - } - - destStr = JS_malloc(cx, len + 1); - if (destStr == NULL) { - XP_FREE(tmpStr); - return JS_FALSE; - } - destStr[len] = 0; - - XP_MEMCPY(destStr, tmpStr, len); - XP_FREE(tmpStr); - str = JS_NewString(cx, destStr, len); - if (str == NULL) { - JS_free(cx, destStr); - return JS_FALSE; - } - - *rval= STRING_TO_JSVAL(str); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_btoa(JSContext *cx, JSObject *obj, uint argc, jsval *argv, jsval *rval) -{ - JSString *str; - char *srcStr, *destStr; - unsigned int len; - - if (argc != 1) { - JS_ReportError(cx, lm_argc_err_str); - return JS_FALSE; - } - - if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_FALSE; - srcStr = JS_GetStringBytes(str); - len = JS_GetStringLength(str); - if (len == 0) { - *rval = JS_GetEmptyStringValue(cx); - return JS_TRUE; - } - - destStr = BTOA_DataToAscii((unsigned char *)srcStr, len); - if (destStr == NULL) { - JS_ReportError(cx, "base64 encoder failure"); - return JS_FALSE; - } - - len = XP_STRLEN(destStr); - str = JS_NewString(cx, destStr, len); - if (str == NULL) - return JS_FALSE; - - *rval= STRING_TO_JSVAL(str); - return JS_TRUE; -} - -PR_STATIC_CALLBACK(PRBool) -win_taint_stub(JSContext *cx, JSObject *obj, uint argc, jsval *argv, - jsval *rval) -{ - *rval = argv[0]; - return JS_TRUE; -} - -static JSFunctionSpec lm_window_methods[] = { - {"alert", win_alert, 1}, - {"clearTimeout", win_clear_timeout, 1}, - {"clearInterval", win_clear_timeout, 1}, - {"close", win_close, 0}, - {"confirm", win_confirm, 1}, - {"open", win_open, 1}, - {"spawn", win_spawn, 1}, - {"setZOptions", win_set_zoptions, 1}, - {"setHotkeys", win_set_hotkeys, 1}, - {"setResizable", win_set_resizable, 1}, - {"prompt", win_prompt, 2}, - {setTimeout_str, win_set_timeout, 2}, - {setInterval_str, win_set_interval, 2}, - {"delay", win_delay, 0}, - /* escape and unescape are now spec'ed by ECMA, and have been moved - * into the core engine. - */ - {lm_blur_str, win_blur, 0}, - {lm_focus_str, win_focus, 0}, - {lm_scroll_str, win_scroll_to, 2}, - {"scrollTo", win_scroll_to, 2}, - {"scrollBy", win_scroll_by, 2}, - {"moveTo", win_move_to, 2}, - {"moveBy", win_move_by, 2}, - {"resizeTo", win_resize_to, 2}, - {"resizeBy", win_resize_by, 2}, - {"captureEvents", win_capture_events, 1}, - {"releaseEvents", win_release_events, 1}, - {"enableExternalCapture", win_enable_external_capture, 0 }, - {"disableExternalCapture", win_disable_external_capture, 0 }, - {"compromisePrincipals", win_compromise_principals, 0 }, - {"downgradePrincipals", win_downgrade_principals, 0 }, - {"back", win_back, 0}, - {"forward", win_forward, 0}, - {"home", win_home, 0}, - {"find", win_find, 0}, - {"print", win_print, 0}, - {"openFile", win_open_file, 0}, - {"stop", win_stop, 0}, - {"atob", win_atob, 1}, - {"btoa", win_btoa, 1}, - {"taint", win_taint_stub, 1}, - {"untaint", win_taint_stub, 1}, - {0} -}; - -static JSBool -is_context_really_busy_or_loading(MWContext *context) -{ - lo_TopState *top_state; - int i; - XP_List *kids; - MWContext *kid; - - if (!context) - return JS_FALSE; - - LO_LockLayout(); - - if ((top_state = lo_FetchTopState(XP_DOCID(context))) != NULL && - (top_state->mocha_loading_applets_count || - top_state->mocha_loading_embeds_count)) { - LO_UnlockLayout(); - return JS_TRUE; - } - - if ((kids = context->grid_children) != NULL) { - for (i = 1; ((kid = XP_ListGetObjectNum(kids, i)) != NULL); i++) { - - /* see if this frame is loading */ - if (is_context_really_busy_or_loading(kid)) { - LO_UnlockLayout(); - return JS_TRUE; - } - - /* make sure the load event has fired for this frame */ - if (kid->mocha_context) { - MochaDecoder * decoder = LM_GetMochaDecoder(kid); - if (!decoder->load_event_sent) { - LM_PutMochaDecoder(decoder); - LO_UnlockLayout(); - return JS_TRUE; - } - LM_PutMochaDecoder(decoder); - } - } - } - - LO_UnlockLayout(); - return JS_FALSE; -} - -static JSBool -is_context_busy(MWContext *context) -{ - if (XP_IsContextBusy(context)) - return JS_TRUE; - return is_context_really_busy_or_loading(context); -} - -/* - * 3.0 ran load events from the timeout loop to avoid freeing contexts in use, - * e.g., parent.document.write() in a frame's BODY onLoad= attribute. That - * hack ran afoul of WinFE's failure to FIFO-schedule same-deadline timeouts. - * Now, with threading and no way for the mozilla thread to blow away its own - * data structures without unwinding to its event loop, an event handler can - * use document.write or start a new load without fear of free memory usage by - * the front end code that sent the event. - */ -static void -try_load_event(MWContext *context, MochaDecoder *decoder) -{ - /* - * Don't do anything if we are waiting for URLs to load, or if applets - * have not been loaded and initialized. - */ - if (is_context_busy(context)) - return; - - /* - * Send a load event at most once. - */ - if (!decoder->load_event_sent) { - JSEvent *event; - jsval rval; - - event = XP_NEW_ZAP(JSEvent); - if (!event) - return; - - event->type = decoder->resize_reload ? EVENT_RESIZE : EVENT_LOAD; - if (context->compositor) { - XP_Rect rect; - - CL_GetCompositorWindowSize(context->compositor, &rect); - event->x = rect.right; - event->y = rect.bottom; - } - - decoder->load_event_sent = JS_TRUE; - (void) lm_SendEvent(context, decoder->window_object, event, &rval); - - decoder->event_mask &= ~event->type; - - if (!event->saved) - XP_FREE(event); - - } - - /* - * Now that we may have scheduled a load event for this context, send - * a transfer-done event to our parent frameset, in case it was - * waiting for us to finish - */ - if (context->grid_parent) - lm_SendLoadEvent(context->grid_parent, EVENT_XFER_DONE, JS_FALSE); - -} - -/* - * Entry point for the netlib to notify JS of load and unload events. - * Note: we can only rely on the resize_reload parameter to be - * correct in the load and unload (but not the xfer) cases. - */ -void -lm_SendLoadEvent(MWContext *context, int32 event, JSBool resize_reload) -{ - MochaDecoder *decoder; - JSEvent *pEvent; - jsval rval; - - decoder = context->mocha_context ? LM_GetMochaDecoder(context) : 0; - if (!decoder) - return; - - switch (event) { - case EVENT_LOAD: - decoder->event_mask |= EVENT_LOAD; - if (resize_reload) { - decoder->resize_reload = JS_TRUE; - /* Restore any saved timeouts that we have for this window */ - lm_RestoreWindowTimeouts(decoder); - } - try_load_event(context, decoder); - break; - - case EVENT_UNLOAD: - decoder->load_event_sent = JS_FALSE; - decoder->event_mask &= ~EVENT_LOAD; - - /* If we're resizing, just save timeouts but don't send an event */ - if (resize_reload) { - lm_SaveWindowTimeouts(decoder); - } else { - pEvent = XP_NEW_ZAP(JSEvent); - pEvent->type = EVENT_UNLOAD; - - (void) lm_SendEvent(context, decoder->window_object, - pEvent, &rval); - if (!pEvent->saved) - XP_FREE(pEvent); - } - - break; - - case EVENT_XFER_DONE: - if ((decoder->event_mask & EVENT_LOAD)) - try_load_event(context, decoder); - if (context->grid_parent) - lm_SendLoadEvent(context->grid_parent, EVENT_XFER_DONE, JS_FALSE); - break; - - case EVENT_ABORT: - default: - break; - } - - if (decoder) - LM_PutMochaDecoder(decoder); - return; -} - -/* - * Entry point for front-ends to notify JS code of help events. - */ -void -LM_SendOnHelp(MWContext *context) -{ - JSEvent *pEvent; - - pEvent = XP_NEW_ZAP(JSEvent); - pEvent->type = EVENT_HELP; - - ET_SendEvent(context, NULL, pEvent, NULL, NULL); - -} - -/* - * Entry point for front-ends to notify JS code of scroll events. - */ -void -LM_SendOnScroll(MWContext *context, int32 x, int32 y) -{ - MochaDecoder *decoder; - JSEvent *event; - jsval rval; - -XP_ASSERT(0); - - if (!context->mocha_context) - return; - decoder = LM_GetMochaDecoder(context); - if (!(decoder->event_mask & EVENT_SCROLL)) { - decoder->event_mask |= EVENT_SCROLL; - - event = XP_NEW_ZAP(JSEvent); - event->type = EVENT_SCROLL; - - (void) lm_SendEvent(context, decoder->window_object, event, - &rval); - decoder->event_mask &= ~EVENT_SCROLL; - } - LM_PutMochaDecoder(decoder); -} - -PRHashNumber -lm_KeyHash(const void *key) -{ - return (PRHashNumber)key; -} - -PRHashTable * -lm_GetIdToObjectMap(MochaDecoder *decoder) -{ - PRHashTable *map; - - map = decoder->id_to_object_map; - if (map) - return map; - - map = PR_NewHashTable(LM_ID_TO_OBJ_MAP_SIZE, - lm_KeyHash, - PR_CompareValues, - PR_CompareValues, - NULL, NULL); - - if (!map) - return NULL; - - decoder->id_to_object_map = map; - return map; -} - - -MochaDecoder * -lm_NewWindow(MWContext *context) -{ - History_entry *he; - MochaDecoder *decoder; - JSContext *cx; - JSObject *obj; - - /* make sure its a JS-able context */ - if (!LM_CanDoJS(context)) - return NULL; - - /* - * If this is a (resizing) frame, get its decoder from session history. - * Using the layout lock to protect context->hist.cur_doc_ptr (which is - * all SHIST_GetCurrent uses) is dicey. XXXchouck - */ - LO_LockLayout(); - he = context->is_grid_cell ? SHIST_GetCurrent(&context->hist) : NULL; - if (he && he->savedData.Window) { - decoder = he->savedData.Window; - he->savedData.Window = NULL; - cx = decoder->js_context; - obj = decoder->window_object; - decoder->window_context = context; - context->mocha_context = cx; - LO_UnlockLayout(); - - /* - * Allow the context to observe the decoder's image context. - */ - ET_il_SetGroupObserver(context, decoder->image_context, context, JS_TRUE); - - return decoder; - } - LO_UnlockLayout(); - - /* Otherwise, make a new decoder/context/object for this window. */ - decoder = XP_NEW_ZAP(MochaDecoder); - if (!decoder) - return NULL; - cx = JS_NewContext(lm_runtime, LM_STACK_SIZE); - if (!cx) { - XP_DELETE(decoder); - return NULL; - } - obj = JS_NewObject(cx, &lm_window_class, NULL, NULL); - if (!obj || !JS_SetPrivate(cx, obj, decoder)) { - JS_DestroyContext(cx); - XP_DELETE(decoder); - return NULL; - } - - /* Set the backward refcount to 1 because obj now holds decoder. */ - decoder->back_count = 1; - - /* Add a root in decoder for obj early, in case the GC runs soon. */ - decoder->window_object = obj; - if (!JS_AddNamedRoot(cx, &decoder->window_object, "window_object")) - return NULL; - - /* Create a new image context for anonymous images. */ - if (!lm_NewImageContext(context, decoder)) - return NULL; - - /* Set the forward refcount to 1 because context holds decoder. */ - decoder->forw_count = 1; - decoder->window_context = context; - decoder->js_context = cx; - context->mocha_context = cx; - - if (!lm_InitWindowContent(decoder)) { - /* This will cause finalization and call lm_DestroyWindow(). */ - decoder->window_object = NULL; - return NULL; - } - -#define HOLD(obj) if (!JS_AddNamedRoot(cx, &(obj), #obj)) return NULL - - /* Drop all object prototype refs. */ - HOLD(decoder->anchor_prototype); - HOLD(decoder->bar_prototype); - HOLD(decoder->document_prototype); - HOLD(decoder->event_prototype); - HOLD(decoder->event_capturer_prototype); - HOLD(decoder->event_receiver_prototype); - HOLD(decoder->form_prototype); - HOLD(decoder->image_prototype); - HOLD(decoder->input_prototype); - HOLD(decoder->layer_prototype); - HOLD(decoder->option_prototype); - HOLD(decoder->rect_prototype); - HOLD(decoder->url_prototype); - - /* Drop window sub-object refs. */ - HOLD(decoder->document); - HOLD(decoder->history); - HOLD(decoder->location); - HOLD(decoder->navigator); - HOLD(decoder->components); - HOLD(decoder->crypto); - HOLD(decoder->screen); -#ifdef NAV_HARDWARE - HOLD(decoder->hardware); -#endif - HOLD(decoder->environment); - HOLD(decoder->pkcs11); - HOLD(decoder->background_update); - /* Drop ad-hoc GC roots. */ - HOLD(decoder->event_receiver); - HOLD(decoder->opener); - -#undef HOLD - - JS_SetBranchCallback(cx, lm_BranchCallback); - JS_SetErrorReporter(cx, lm_ErrorReporter); - return decoder; -} - -void -lm_DestroyWindow(MochaDecoder *decoder) -{ - JSContext *cx; - - /* All reference counts must be 0 here. */ - XP_ASSERT(decoder->forw_count == 0); - XP_ASSERT(decoder->back_count == 0); - - /* We must not have an MWContext at this point. */ - XP_ASSERT(!decoder->window_context); - - /* Drop decoder refs to window prototypes and sub-objects. */ - lm_FreeWindowContent(decoder, JS_FALSE); - - /* Set cx for use by DROP. */ - cx = decoder->js_context; - -#define DROP(obj) JS_RemoveRoot(cx, &(obj)) - - /* Drop all object prototype refs. */ - DROP(decoder->anchor_prototype); - DROP(decoder->bar_prototype); - DROP(decoder->document_prototype); - DROP(decoder->event_prototype); - DROP(decoder->event_capturer_prototype); - DROP(decoder->event_receiver_prototype); - DROP(decoder->form_prototype); - DROP(decoder->image_prototype); - DROP(decoder->input_prototype); - DROP(decoder->layer_prototype); - DROP(decoder->option_prototype); - DROP(decoder->rect_prototype); - DROP(decoder->url_prototype); - - /* Drop window sub-object refs. */ - DROP(decoder->document); - DROP(decoder->history); - DROP(decoder->location); - DROP(decoder->navigator); - DROP(decoder->components); - DROP(decoder->crypto); - DROP(decoder->screen); -#ifdef NAV_HARDWARE - DROP(decoder->hardware); -#endif - DROP(decoder->background_update); - DROP(decoder->environment); - DROP(decoder->pkcs11); - /* Drop ad-hoc GC roots. */ - DROP(decoder->event_receiver); - DROP(decoder->opener); - - if (decoder->in_window_quota) - lm_window_count--; - - /* Remove the root that holds up the whole window in the decoder world */ - DROP(decoder->window_object); - -#undef DROP - - /* - * Destroy the mocha image context. All mocha images need to have been - * finalized *before* we get here, since image destruction requires a - * valid MWContext. - */ - ET_PostFreeImageContext(NULL, decoder->image_context); - - /* Free JS context and decoder struct, window is gone. */ - JS_DestroyContext(cx); - - XP_DELETE(decoder); -} - -#ifdef DEBUG -extern MochaDecoder * -lm_HoldBackCount(MochaDecoder *decoder) -{ - if (decoder) { - XP_ASSERT(decoder->back_count >= 0); - decoder->back_count++; - } - return decoder; -} - -extern void -lm_DropBackCount(MochaDecoder *decoder) -{ - if (!decoder) - return; - XP_ASSERT(decoder->back_count > 0); - if (--decoder->back_count <= 0) { - decoder->back_count = 0; - XP_ASSERT(decoder->forw_count >= 0); - if (!decoder->forw_count) - lm_DestroyWindow(decoder); - } -} -#endif /* DEBUG */ - -JSBool -lm_InitWindowContent(MochaDecoder *decoder) -{ - JSContext *cx; - JSObject *obj; - - cx = decoder->js_context; - obj = decoder->window_object; - if (!JS_InitStandardClasses(cx, obj)) - return JS_FALSE; - -#if defined(OJI) -#if 1 - if (JVM_MaybeStartupLiveConnect()) - JSJ_InitJSContext(cx, obj, NULL); -#else - { - PRBool jvmMochaPrefsEnabled = PR_FALSE; - if (NPL_IsJVMAndMochaPrefsEnabled() == PR_TRUE) { - jvmMochaPrefsEnabled = NPL_JSJInit(); - } - if ( (jvmMochaPrefsEnabled == PR_TRUE) - &&(!JSJ_InitJSContext(cx, obj, NULL)) - ) - { - return JS_FALSE; - } - } -#endif -#elif defined(JAVA) - if (JSJ_IsEnabled() && !JSJ_InitContext(cx, obj)) - return JS_FALSE; -#endif - if (!JS_DefineProperties(cx, obj, window_props)) - return JS_FALSE; - - if (decoder->opener) { - if (!JS_DefinePropertyWithTinyId(cx, obj, lm_opener_str, WIN_OPENER, - OBJECT_TO_JSVAL(decoder->opener), - NULL, NULL, JSPROP_ENUMERATE)) { - return JS_FALSE; - } - } -#ifdef DOM - if (!dom_StyleSelectorInit(cx, obj)) - return JS_FALSE; -#endif - - return (JSBool)(lm_DefineWindowProps(cx, decoder) && - JS_SetPrototype(cx, obj, decoder->event_capturer_prototype)); -} - -JSBool -lm_DefineWindowProps(JSContext *cx, MochaDecoder *decoder) -{ - JSObject *obj; - - obj = decoder->window_object; - return (JSBool)(JS_DefineFunctions(cx, obj, lm_window_methods) && - lm_InitSecurity(decoder) && - lm_InitEventClasses(decoder) && - lm_InitDocumentClass(decoder) && - lm_DefineDocument(decoder, LO_DOCUMENT_LAYER_ID) && - lm_DefineHistory(decoder) && - lm_DefineLocation(decoder) && - lm_DefineCrypto(decoder) && - lm_DefineBarClasses(decoder) && - lm_InitLayerClass(decoder) && - lm_InitRectClass(decoder) && - lm_InitImageClass(decoder) && - lm_InitAnchorClass(decoder) && -#ifdef DOM - lm_DOMInit(decoder) && -#endif - lm_InitBuiltinClass(decoder) && - lm_InitInputClasses(decoder) && - lm_InitBackgroundClass(decoder) && - lm_DefineEnvironment(decoder) && - lm_DefinePkcs11(decoder)); -} - -void -lm_FreeWindowContent(MochaDecoder *decoder, JSBool fromDiscard) -{ - JSContext *cx; - JSObject *obj; - JSNestingUrl * url, * next_url; - - /* Clear any stream that the user forgot to close. */ - lm_ClearDecoderStream(decoder, fromDiscard); - - /* Clear any pending timeouts and URL fetches. */ - lm_ClearWindowTimeouts(decoder); - - /* These flags should never be set, but if any are, we'll cope. */ - decoder->replace_location = JS_FALSE; - decoder->resize_reload = JS_FALSE; - decoder->load_event_sent = JS_FALSE; - decoder->visited = JS_FALSE; - decoder->writing_input = JS_FALSE; - - /* This flag may have been set by a script; clear it now. */ - decoder->principals_compromised = JS_FALSE; - - /* need to inline this since source_url is 'const char *' and the Mac will whine */ - if (decoder->source_url) { - XP_FREE((char *) decoder->source_url); - decoder->source_url = NULL; - } - - for (url = decoder->nesting_url; url; url = next_url) { - next_url = url->next; - XP_FREE(url->str); - XP_FREE(url); - } - decoder->nesting_url = NULL; - - /* Forgive and forget all excessive errors. */ - decoder->error_count = 0; - - decoder->active_form_id = 0; - decoder->signature_ordinal = 0; - - /* Clear the event mask. */ - decoder->event_mask = 0; - - if (decoder->id_to_object_map) { - PR_HashTableDestroy(decoder->id_to_object_map); - decoder->id_to_object_map = NULL; - } - - cx = decoder->js_context; - decoder->firstVersion = JSVERSION_UNKNOWN; - decoder->principals = NULL; - if (decoder->early_access_list) - lm_DestroyPrincipalsList(cx, decoder->early_access_list); - decoder->early_access_list = NULL; - -#define CLEAR(obj) obj = NULL - - /* Clear all object prototype refs. */ - CLEAR(decoder->anchor_prototype); - CLEAR(decoder->bar_prototype); - CLEAR(decoder->document_prototype); - CLEAR(decoder->event_prototype); - CLEAR(decoder->event_capturer_prototype); - CLEAR(decoder->event_receiver_prototype); - CLEAR(decoder->form_prototype); - CLEAR(decoder->image_prototype); - CLEAR(decoder->input_prototype); - CLEAR(decoder->layer_prototype); - CLEAR(decoder->option_prototype); - CLEAR(decoder->rect_prototype); - CLEAR(decoder->url_prototype); - - /* Clear window sub-object refs. */ - if (decoder->document) - lm_CleanUpDocumentRoots(decoder, decoder->document); - CLEAR(decoder->document); - CLEAR(decoder->history); - CLEAR(decoder->location); - CLEAR(decoder->navigator); - CLEAR(decoder->components); - CLEAR(decoder->crypto); - CLEAR(decoder->screen); -#ifdef NAV_HARDWARE - CLEAR(decoder->hardware); -#endif - CLEAR(decoder->background_update); - CLEAR(decoder->environment); - CLEAR(decoder->pkcs11); - - /* Drop ad-hoc GC roots, but not opener -- it survives unloads. */ - CLEAR(decoder->event_receiver); - -#undef CLEAR - -#undef DROP_AND_CLEAR - - obj = decoder->window_object; - if (obj) { - JS_ClearWatchPointsForObject(cx, obj); - JS_ClearScope(cx, obj); - (void) JS_DefinePropertyWithTinyId(cx, obj, lm_closed_str, WIN_CLOSED, - JSVAL_FALSE, NULL, NULL, - JSPROP_ENUMERATE|JSPROP_READONLY); - } -} - -void -LM_RemoveWindowContext(MWContext *context, History_entry * he) -{ - MochaDecoder *decoder; - JSContext *cx; - - /* Do work only if this context has a JS decoder. */ - cx = context->mocha_context; - if (!cx) - return; - decoder = JS_GetPrivate(cx, JS_GetGlobalObject(cx)); - - /* Sever the bidirectional connection between context and decoder. */ - XP_ASSERT(decoder->window_context == context); - context->mocha_context = NULL; - decoder->window_context = NULL; - lm_ClearDecoderStream(decoder, JS_TRUE); - - ET_il_SetGroupObserver(context, decoder->image_context, NULL, JS_FALSE); - - if (he) { - /* - * Set current history entry's saved window from its layout cell. - * We need to do this rather than SHIST_SetCurrentDocWindowData() - * because FE_FreeGridWindow (who calls us indirectly) has already - * "stolen" session history for return to layout, who saves it in - * parent session history in lo_InternalDiscardDocument(). - */ - he->savedData.Window = decoder; - return; - } - - /* This might call lm_DestroyWindow(decoder), so do it last. */ - LM_PutMochaDecoder(decoder); -} - -extern void -LM_DropSavedWindow(MWContext *context, void *window) -{ - MochaDecoder *decoder = window; -#ifdef DEBUG - extern PRThread *mozilla_thread; - - /* Our caller, SHIST_FreeHistoryEntry, must run on the mozilla thread. */ - XP_ASSERT(PR_CurrentThread() == mozilla_thread); -#endif - - et_PutMochaDecoder(context, decoder); -} diff --git a/mozilla/lib/libmocha/lm_wngrp.c b/mozilla/lib/libmocha/lm_wngrp.c deleted file mode 100644 index daa1d7971cd..00000000000 --- a/mozilla/lib/libmocha/lm_wngrp.c +++ /dev/null @@ -1,425 +0,0 @@ -/* - * lm_wngrp.c: Structures and functions to deal with new LM window groups - * and multiple LM threads and what not. - * - * All blame to Mike McCool (mlm@netscape.com) 2/17/98 - */ - -#include "lm.h" -#include "xp.h" -#include "prclist.h" -#include "prthread.h" -#include "prmon.h" - -#ifdef XP_MAC -#include "pprthred.h" /* for PR_CreateThreadGCAble */ -#else -#include "private/pprthred.h" -#endif - -/* - * Notes to self - * - * - lm_window_count: do we care that there's only one? - * - do we need to add a limit to number of threads we spawn()? - * - JRIEnv: do we need multiple? - * - JSRuntime: do we need multiple? - * - Threading changes: impact on debugger? - * - JS_SetGlobalObject(JSContext) will be important - * - If the global structure is on the mozilla thread, can other threads - * creating a new thread group access, or do I have to post an event? - * - * ? Rename "MochaDecoder" to "LMWindow" - * ? Change so that there is only one JSContext - */ - -PRMonitor *wingroups_mon; -LMWindowGroup *wingroups; -PRMonitor *request_mon; - -struct ContextListStr { - ContextList *next; - ContextList *prev; - MWContext *context; -}; - -LMWindowGroup *_lm_NewWindowGroup(int priority); - -/* Initialize my globals, from the Mozilla thread - */ -void lm_InitWindowGroups(void) -{ - int priority; - - /* run at slightly lower priority than the mozilla thread */ - priority = PR_GetThreadPriority(PR_CurrentThread()); - PR_ASSERT(priority >= PR_PRIORITY_FIRST && priority <= PR_PRIORITY_LAST); - - if (priority == PR_PRIORITY_NORMAL) - priority = PR_PRIORITY_LOW; - else if (priority == PR_PRIORITY_HIGH) - priority = PR_PRIORITY_NORMAL; - else if (priority == PR_PRIORITY_URGENT) - priority = PR_PRIORITY_HIGH; - else - priority = PR_PRIORITY_LOW; - - wingroups_mon = PR_NewMonitor(); - request_mon = PR_NewMonitor(); - wingroups = NULL; - wingroups = _lm_NewWindowGroup(priority); - if(wingroups != NULL) { - PR_INIT_CLIST(wingroups); - lm_StartWindowGroup(wingroups); - } /* else huh?! */ -} - -/* Create a new window group. Create new context, create new monitor, create - * new thread, event queue, queue stack, empty context list. - */ -LMWindowGroup *lm_NewWindowGroup(void) -{ - int priority; - - /* Run at same priority as current thread (which should be a JS - * thread. - */ - priority = PR_GetThreadPriority(PR_CurrentThread()); - PR_ASSERT(priority>=PR_PRIORITY_FIRST && priority<=PR_PRIORITY_LAST); - return _lm_NewWindowGroup(priority); -} - -LMWindowGroup *_lm_NewWindowGroup(int priority) -{ - LMWindowGroup *newgrp = XP_NEW_ZAP(LMWindowGroup); - if(newgrp != NULL) { - newgrp->done = PR_FALSE; - newgrp->hasLock = PR_FALSE; - - /* Create a new JS Context for this set of windows. - * Note: Need to get global runtime lm_runtime from somewhere, - * and perhaps the LM_STACK_SIZE? - */ -/**************************************************** MLM * - newgrp->js_context = JS_NewContext(lm_runtime, LM_STACK_SIZE); - if(newgrp->js_context == NULL) { - XP_DELETE(newgrp); - return NULL; - } - **************************************************** MLM */ - newgrp->js_context = NULL; - /* JS_SetGCCallback(newgrp->js_context, LM_ShouldRunGC); */ - - newgrp->mw_contexts = XP_NEW_ZAP(ContextList); - if(newgrp->mw_contexts == NULL) { - JS_DestroyContext(newgrp->js_context); - XP_DELETE(newgrp); - return NULL; - } - PR_INIT_CLIST(newgrp->mw_contexts); - newgrp->mw_contexts->context = NULL; - newgrp->current_context = NULL; - - newgrp->queue_stack = XP_NEW_ZAP(QueueStackElement); - if(!newgrp->queue_stack) { - JS_DestroyContext(newgrp->js_context); - XP_DELETE(newgrp->mw_contexts); - XP_DELETE(newgrp); - return NULL; - } - - /* Do this here so we don't race ourselves in lm_wait_for_events */ - PR_EnterMonitor(wingroups_mon); - if(wingroups != NULL) { - PR_APPEND_LINK(newgrp, wingroups); - } - PR_ExitMonitor(wingroups_mon); - - newgrp->waiting_list = NULL; - - newgrp->owner_monitor = PR_NewMonitor(); - newgrp->queue_monitor = PR_NewMonitor(); - - PR_EnterMonitor(newgrp->owner_monitor); - newgrp->thread = PR_CreateThreadGCAble(PR_USER_THREAD, - lm_wait_for_events, newgrp, - priority, PR_LOCAL_THREAD, - PR_UNJOINABLE_THREAD, 0); - newgrp->owner = newgrp->thread; - newgrp->current_count = 0; - newgrp->mozWantsLock = PR_FALSE; - newgrp->mozGotLock = PR_FALSE; - newgrp->interruptCurrentOp = PR_FALSE; - newgrp->queue_depth = 0; - newgrp->queue_count = 0; - - /* Note: Need a unique identifier for this queue? - */ - newgrp->interpret_queue = PR_CreateEventQueue("new_event_queue", - newgrp->thread); - newgrp->queue_stack->queue = newgrp->interpret_queue; - - newgrp->lock_context = NULL; - newgrp->js_timeout_insertion_point = NULL; - newgrp->js_timeout_running = NULL; - newgrp->inputRecurring = 0; - } - return newgrp; -} - -void lm_StartWindowGroup(LMWindowGroup *grp) -{ - PR_Notify(grp->owner_monitor); - PR_ExitMonitor(grp->owner_monitor); -} - -void lm_DestroyWindowGroup(LMWindowGroup *grp) -{ - PR_EnterMonitor(wingroups_mon); - /* Note: Thread terminates when the thread's main function (in - * this case, lm_wait_for_events) exits. - */ - /************************************ MLM * - * JS_DestroyContext(grp->js_context); - ************************************ MLM */ - PR_DestroyMonitor(grp->owner_monitor); - PR_DestroyMonitor(grp->queue_monitor); - - /* Note: How to destroy an event queue or two? - */ - - /* Note: Context list should already be null - */ - - PR_REMOVE_LINK(grp); - XP_DELETE(grp); - PR_ExitMonitor(wingroups_mon); -} - -LMWindowGroup *LM_GetDefaultWindowGroup(MWContext *mwc) -{ - LMWindowGroup *ans; - - /* Check to see if this is a frame context. If so, check its parent. */ - if((mwc != NULL) && (mwc->is_grid_cell)) { - MWContext *grid_parent, *grid_child; - grid_child = mwc; - grid_parent = mwc->grid_parent; - /* Find the root parent. I wonder if I need to add cycle checking. */ - while(grid_parent != NULL) { - grid_child = grid_parent; - grid_parent = grid_child->grid_parent; - } - if( (ans = lm_MWContextToGroup(grid_child)) != NULL) { - /* The parent's been found, return its group. */ - return ans; - } else { /* Else add the parent to the default group, - * and return that. */ - PR_EnterMonitor(wingroups_mon); - LM_AddContextToGroup(wingroups, grid_child); - ans = wingroups; - PR_ExitMonitor(wingroups_mon); - return ans; - } - } - PR_EnterMonitor(wingroups_mon); - ans = wingroups; - PR_ExitMonitor(wingroups_mon); - return ans; -} - -LMWindowGroup *lm_MWContextToGroup(MWContext *mwc) -{ - LMWindowGroup *ptr = NULL; - LMWindowGroup *ans = NULL; - - PR_EnterMonitor(wingroups_mon); - - ptr = wingroups; - - if(lm_GetEntryForContext(wingroups, mwc) != NULL) { - ans = wingroups; - PR_ExitMonitor(wingroups_mon); - return ans; - } - - ptr = PR_NEXT_LINK(ptr); - while(ptr != wingroups) { - if(lm_GetEntryForContext(ptr, mwc) != NULL) { - ans = ptr; - PR_ExitMonitor(wingroups_mon); - return ans; - } - ptr = PR_NEXT_LINK(ptr); - } - PR_ExitMonitor(wingroups_mon); - return NULL; -} - -LMWindowGroup *lm_QueueStackToGroup(QueueStackElement *qse) -{ - LMWindowGroup *ptr = NULL; - LMWindowGroup *ans = NULL; - - PR_EnterMonitor(wingroups_mon); - ptr = wingroups; - - if(wingroups->queue_stack == qse) { - ans = wingroups; - PR_ExitMonitor(wingroups_mon); - return ans; - } - - ptr = PR_NEXT_LINK(ptr); - while(ptr != wingroups) { - if(ptr->queue_stack == qse) { - ans = ptr; - PR_ExitMonitor(wingroups_mon); - return ans; - } - ptr = PR_NEXT_LINK(ptr); - } - PR_ExitMonitor(wingroups_mon); - return NULL; -} - -PREventQueue *LM_MWContextToQueue(MWContext *mwc) -{ - /* Note: This gets the interpret queue, need to get top queue as well - */ - LMWindowGroup *grp = lm_MWContextToGroup(mwc); - if(grp != NULL) { - return LM_WindowGroupToQueue(grp); - } - return NULL; -} - -PREventQueue *LM_WindowGroupToQueue(LMWindowGroup *lmg) -{ - return lmg->interpret_queue; -} - -ContextList *lm_GetEntryForContext(LMWindowGroup *grp, MWContext *cx) -{ - ContextList *cxl = grp->mw_contexts; - ContextList *ans = NULL; - - if(PR_CLIST_IS_EMPTY(cxl)) { - return NULL; - } else { - ContextList *ptr = PR_NEXT_LINK(cxl); - while(ptr != cxl) { - if(ptr->context == cx) { - ans = ptr; - break; - } - ptr = PR_NEXT_LINK(ptr); - } - } - return ans; -} - -void LM_AddContextToGroup(LMWindowGroup *grp, MWContext *cx) -{ - ContextList *cxl; - - if(lm_MWContextToGroup(cx) != NULL) { - /* Hey, why are we adding this stuff twice? */ - XP_ASSERT(0); - } - - cxl = XP_NEW_ZAP(ContextList); - /* Note: failure?!?!?! - */ - cxl->context = cx; - - PR_APPEND_LINK(cxl, grp->mw_contexts); -} - -void lm_RemoveContextFromGroup(LMWindowGroup *grp, MWContext *cx); - -void LM_RemoveContextFromGroup(MWContext *cx) -{ - LMWindowGroup *grp = lm_MWContextToGroup(cx); - if(grp) { - lm_RemoveContextFromGroup(grp, cx); - } -} - -void lm_RemoveContextFromGroup(LMWindowGroup *grp, MWContext *cx) -{ - if(!PR_CLIST_IS_EMPTY(grp->mw_contexts)) { - ContextList *entry = lm_GetEntryForContext(grp, cx); - if(entry != NULL) { - PR_REMOVE_LINK(entry); - XP_DELETE(entry); - } - } - if(PR_CLIST_IS_EMPTY(grp->mw_contexts) && (grp != wingroups)) { - grp->done = PR_TRUE; - } -} - -PRBool LM_IsLocked(LMWindowGroup *grp) -{ - PRBool ans; - PR_EnterMonitor(request_mon); - ans = grp->hasLock; - PR_ExitMonitor(request_mon); - return ans; -} - -void LM_BeginRequest(LMWindowGroup *grp, JSContext *jsc) -{ - PR_EnterMonitor(request_mon); - grp->hasLock = PR_TRUE; - grp->lock_context = jsc; - if((JS_GetContextThread(jsc)) != ((intN) grp->thread)) { - JS_SetContextThread(jsc); - } - PR_ExitMonitor(request_mon); - JS_BeginRequest(jsc); -} - -void LM_EndRequest(LMWindowGroup *grp, JSContext *jsc) -{ - JS_EndRequest(jsc); - PR_EnterMonitor(request_mon); - grp->lock_context = NULL; - grp->hasLock = PR_FALSE; - PR_ExitMonitor(request_mon); -} - -JSBool LM_ShouldRunGC(JSContext *cx, JSGCStatus status) -{ - JSBool ans = JS_TRUE; - JSContext *active; - LMWindowGroup *ptr; - - if(status != JSGC_BEGIN) { - return JS_TRUE; - } - - PR_EnterMonitor(request_mon); - if(wingroups->hasLock) { - active = wingroups->lock_context; - if(active != cx) { - ans=JS_FALSE; - goto bye; - } - } - ptr = PR_NEXT_LINK(wingroups); - while(ptr != wingroups) { - if(ptr->hasLock) { - active = ptr->lock_context; - if(active != cx) { - ans=JS_FALSE; - goto bye; - } - } - ptr = PR_NEXT_LINK(ptr); - } -bye: - PR_ExitMonitor(request_mon); - return ans; -} diff --git a/mozilla/lib/libmocha/macbuild/LibMocha.mcp b/mozilla/lib/libmocha/macbuild/LibMocha.mcp deleted file mode 100644 index 358a148d63c..00000000000 Binary files a/mozilla/lib/libmocha/macbuild/LibMocha.mcp and /dev/null differ diff --git a/mozilla/lib/libmsg/MANIFEST b/mozilla/lib/libmsg/MANIFEST deleted file mode 100644 index 9306491f3eb..00000000000 --- a/mozilla/lib/libmsg/MANIFEST +++ /dev/null @@ -1,84 +0,0 @@ -ad_codes.h -appledbl.h -bytearr.h -chngntfy.h -dberror.h -dwordarr.h -errcode.h -grec.h -grpinfo.h -hosttbl.h -idarray.h -imaphost.h -imapoff.h -jsmsg.h -listngst.h -m_binhex.h -m_cvstrm.h -maildb.h -mailhdr.h -mhtmlstm.h -msg.h -msg_opaq.h -msgbg.h -msgbgcln.h -msgbiff.h -msgccach.h -msgcflds.h -msgcmfld.h -msgcpane.h -msgdb.h -msgdbapi.h -msgdbtyp.h -msgdbvw.h -msgdlqml.h -msgdwnof.h -msgfcach.h -msgfinfo.h -msgfpane.h -msghdr.h -msghost.h -msgimap.h -msglpane.h -msgmast.h -msgmdn.h -msgmpane.h -msgoffnw.h -msgpane.h -msgppane.h -msgprefs.h -msgprnot.h -msgpurge.h -msgrulet.h -msgsec.h -msgsend.h -msgsendp.h -msgspane.h -msgstrob.h -msgtpane.h -msgundac.h -msgundmg.h -msgundo.h -msgurlq.h -msgutils.h -msgzap.h -neohdrs.h -newsdb.h -newshdr.h -newshost.h -newspane.h -newsrc.h -newsset.h -nwsartst.h -pmsgfilt.h -pmsgsrch.h -prsembst.h -ptrarray.h -subline.h -subpane.h -thrdbvw.h -threads.h -thrhead.h -thrlstst.h -thrnewvw.h -vwerror.h diff --git a/mozilla/lib/libmsg/Makefile b/mozilla/lib/libmsg/Makefile deleted file mode 100644 index 82e48563fd5..00000000000 --- a/mozilla/lib/libmsg/Makefile +++ /dev/null @@ -1,217 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../.. - -MODULE = msg -LIBRARY_NAME = mozmsg - -CSRCS = \ - ad_strm.c \ - ap_decod.c \ - ap_encod.c \ - appledbl.c \ - bh_strm.c \ - m_binhex.c \ - msgutils.c \ - $(NULL) - - -CPPSRCS = \ - addrutil.cpp \ - biffmast.cpp \ - bytearr.cpp \ - chngntfy.cpp \ - dwordarr.cpp \ - filters.cpp \ - grec.cpp \ - grpinfo.cpp \ - hosttbl.cpp \ - idarray.cpp \ - imaphost.cpp \ - imapoff.cpp \ - jsmsg.cpp \ - listngst.cpp \ - maildb.cpp \ - mailhdr.cpp \ - mhtmlstm.cpp \ - msgbg.cpp \ - msgbgcln.cpp \ - msgccach.cpp \ - msgcflds.cpp \ - msgcmfld.cpp \ - msgcpane.cpp \ - msgdb.cpp \ - msgdbini.cpp \ - msgdbvw.cpp \ - msgdlqml.cpp \ - msgdwnof.cpp \ - msgfcach.cpp \ - msgfinfo.cpp \ - msgfpane.cpp \ - msgglue.cpp \ - msghdr.cpp \ - msgimap.cpp \ - msglpane.cpp \ - msglsrch.cpp \ - msgmapi.cpp \ - msgmast.cpp \ - msgmdn.cpp \ - msgmpane.cpp \ - msgmsrch.cpp \ - msgnsrch.cpp \ - msgoffnw.cpp \ - msgpane.cpp \ - msgppane.cpp \ - msgprefs.cpp \ - msgpurge.cpp \ - msgrulet.cpp \ - msgsend.cpp \ - msgsendp.cpp \ - msgspane.cpp \ - msgtpane.cpp \ - msgundac.cpp \ - msgundmg.cpp \ - msgurlq.cpp \ - msgzap.cpp \ - newsdb.cpp \ - newshdr.cpp \ - newshost.cpp \ - newspane.cpp \ - newsset.cpp \ - nwsartst.cpp \ - prsembst.cpp \ - ptrarray.cpp \ - search.cpp \ - subline.cpp \ - subpane.cpp \ - thrdbvw.cpp \ - thrhead.cpp \ - thrlstst.cpp \ - thrnewvw.cpp \ - $(NULL) - -EXPORTS = \ - ad_codes.h \ - appledbl.h \ - bytearr.h \ - chngntfy.h \ - dberror.h \ - dwordarr.h \ - errcode.h \ - grec.h \ - grpinfo.h \ - hosttbl.h \ - idarray.h \ - imaphost.h \ - imapoff.h \ - jsmsg.h \ - listngst.h \ - m_binhex.h \ - m_cvstrm.h \ - maildb.h \ - mailhdr.h \ - mhtmlstm.h \ - msg.h \ - msg_opaq.h \ - msgbg.h \ - msgbgcln.h \ - msgbiff.h \ - msgccach.h \ - msgcflds.h \ - msgcmfld.h \ - msgcpane.h \ - msgdb.h \ - msgdbapi.h \ - msgdbtyp.h \ - msgdbvw.h \ - msgdlqml.h \ - msgdwnof.h \ - msgfcach.h \ - msgfinfo.h \ - msgfpane.h \ - msghdr.h \ - msghost.h \ - msgimap.h \ - msglpane.h \ - msgmast.h \ - msgmdn.h \ - msgmpane.h \ - msgoffnw.h \ - msgpane.h \ - msgppane.h \ - msgprefs.h \ - msgprnot.h \ - msgpurge.h \ - msgrulet.h \ - msgsec.h \ - msgsend.h \ - msgsendp.h \ - msgspane.h \ - msgstrob.h \ - msgtpane.h \ - msgundac.h \ - msgundmg.h \ - msgundo.h \ - msgurlq.h \ - msgutils.h \ - msgzap.h \ - neohdrs.h \ - newsdb.h \ - newshdr.h \ - newshost.h \ - newspane.h \ - newsrc.h \ - newsset.h \ - nwsartst.h \ - pmsgfilt.h \ - pmsgsrch.h \ - prsembst.h \ - ptrarray.h \ - subline.h \ - subpane.h \ - thrdbvw.h \ - threads.h \ - thrhead.h \ - thrlstst.h \ - thrnewvw.h \ - vwerror.h \ - - -REQUIRES = nspr dbm htmldlgs img util layer pref security js java net progress msg addr network - - -include $(DEPTH)/config/rules.mk - -ifeq ($(subst /,_,$(shell uname -s)),OS2) -INCLUDES += -I$(PUBLIC)/neo -else -INCLUDES += $(G++INCLUDES) -endif - -ifndef NO_UNIX_LDAP -INCLUDES += -I$(XPDIST)/public/ldap -DEFINES += -DLIBMSG_LDAP -endif - -INCLUDES += -I$(DIST)/include -I$(PUBLIC)/security -I../libaddr -I$(PUBLIC)/msg diff --git a/mozilla/lib/libmsg/Makefile.in b/mozilla/lib/libmsg/Makefile.in deleted file mode 100644 index 242747879fe..00000000000 --- a/mozilla/lib/libmsg/Makefile.in +++ /dev/null @@ -1,223 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = msg -LIBRARY_NAME = mozmsg - -CSRCS = \ - ad_strm.c \ - ap_decod.c \ - ap_encod.c \ - appledbl.c \ - bh_strm.c \ - m_binhex.c \ - msgutils.c \ - $(NULL) - - -CPPSRCS = \ - addrutil.cpp \ - biffmast.cpp \ - bytearr.cpp \ - chngntfy.cpp \ - dwordarr.cpp \ - filters.cpp \ - grec.cpp \ - grpinfo.cpp \ - hosttbl.cpp \ - idarray.cpp \ - imaphost.cpp \ - imapoff.cpp \ - jsmsg.cpp \ - listngst.cpp \ - maildb.cpp \ - mailhdr.cpp \ - mhtmlstm.cpp \ - msgbg.cpp \ - msgbgcln.cpp \ - msgccach.cpp \ - msgcflds.cpp \ - msgcmfld.cpp \ - msgcpane.cpp \ - msgdb.cpp \ - msgdbini.cpp \ - msgdbvw.cpp \ - msgdlqml.cpp \ - msgdwnof.cpp \ - msgfcach.cpp \ - msgfinfo.cpp \ - msgfpane.cpp \ - msgglue.cpp \ - msghdr.cpp \ - msgimap.cpp \ - msglpane.cpp \ - msglsrch.cpp \ - msgmapi.cpp \ - msgmast.cpp \ - msgmdn.cpp \ - msgmpane.cpp \ - msgmsrch.cpp \ - msgnsrch.cpp \ - msgoffnw.cpp \ - msgpane.cpp \ - msgppane.cpp \ - msgprefs.cpp \ - msgpurge.cpp \ - msgrulet.cpp \ - msgsend.cpp \ - msgsendp.cpp \ - msgspane.cpp \ - msgtpane.cpp \ - msgundac.cpp \ - msgundmg.cpp \ - msgurlq.cpp \ - msgzap.cpp \ - newsdb.cpp \ - newshdr.cpp \ - newshost.cpp \ - newspane.cpp \ - newsset.cpp \ - nwsartst.cpp \ - prsembst.cpp \ - ptrarray.cpp \ - search.cpp \ - subline.cpp \ - subpane.cpp \ - thrdbvw.cpp \ - thrhead.cpp \ - thrlstst.cpp \ - thrnewvw.cpp \ - $(NULL) - -EXPORTS = \ - ad_codes.h \ - appledbl.h \ - bytearr.h \ - chngntfy.h \ - dberror.h \ - dwordarr.h \ - errcode.h \ - grec.h \ - grpinfo.h \ - hosttbl.h \ - idarray.h \ - imaphost.h \ - imapoff.h \ - jsmsg.h \ - listngst.h \ - m_binhex.h \ - m_cvstrm.h \ - maildb.h \ - mailhdr.h \ - mhtmlstm.h \ - msg.h \ - msg_opaq.h \ - msgbg.h \ - msgbgcln.h \ - msgbiff.h \ - msgccach.h \ - msgcflds.h \ - msgcmfld.h \ - msgcpane.h \ - msgdb.h \ - msgdbapi.h \ - msgdbtyp.h \ - msgdbvw.h \ - msgdlqml.h \ - msgdwnof.h \ - msgfcach.h \ - msgfinfo.h \ - msgfpane.h \ - msghdr.h \ - msghost.h \ - msgimap.h \ - msglpane.h \ - msgmast.h \ - msgmdn.h \ - msgmpane.h \ - msgoffnw.h \ - msgpane.h \ - msgppane.h \ - msgprefs.h \ - msgprnot.h \ - msgpurge.h \ - msgrulet.h \ - msgsec.h \ - msgsend.h \ - msgsendp.h \ - msgspane.h \ - msgstrob.h \ - msgtpane.h \ - msgundac.h \ - msgundmg.h \ - msgundo.h \ - msgurlq.h \ - msgutils.h \ - msgzap.h \ - neohdrs.h \ - newsdb.h \ - newshdr.h \ - newshost.h \ - newspane.h \ - newsrc.h \ - newsset.h \ - nwsartst.h \ - pmsgfilt.h \ - pmsgsrch.h \ - prsembst.h \ - ptrarray.h \ - subline.h \ - subpane.h \ - thrdbvw.h \ - threads.h \ - thrhead.h \ - thrlstst.h \ - thrnewvw.h \ - vwerror.h \ - -EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) - -REQUIRES = nspr dbm htmldlgs img util layer pref security js java net progress msg addr network - - -include $(topsrcdir)/config/rules.mk - -ifeq ($(subst /,_,$(shell uname -s)),OS2) -INCLUDES += -I$(PUBLIC)/neo -else -INCLUDES += $(G++INCLUDES) -endif - -ifndef NO_UNIX_LDAP -INCLUDES += -I$(XPDIST)/public/ldap -DEFINES += -DLIBMSG_LDAP -endif - -INCLUDES += -I$(DIST)/include -I$(PUBLIC)/security -I$(srcdir)/../libaddr -I$(PUBLIC)/msg diff --git a/mozilla/lib/libmsg/ad_codes.h b/mozilla/lib/libmsg/ad_codes.h deleted file mode 100644 index d3331c35abf..00000000000 --- a/mozilla/lib/libmsg/ad_codes.h +++ /dev/null @@ -1,133 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* -** AD_Codes.h -** -** --------------- -** -** Head file for Apple Decode/Encode enssential codes. -** -** -*/ - -#ifndef ad_codes_h -#define ad_codes_h - -#include "xp_core.h" - -/* -** applefile definitions used -*/ -#ifdef XP_MAC -#if PRAGMA_ALIGN_SUPPORTED -#pragma options align=mac68k -#endif -#endif /* XP_MAC */ - -#define APPLESINGLE_MAGIC 0x00051600L -#define APPLEDOUBLE_MAGIC 0x00051607L -#define VERSION 0x00020000 - -#define NUM_ENTRIES 6 - -#define ENT_DFORK 1L -#define ENT_RFORK 2L -#define ENT_NAME 3L -#define ENT_COMMENT 4L -#define ENT_DATES 8L -#define ENT_FINFO 9L -#define CONVERT_TIME 1265437696L - -/* -** data type used in the encoder/decoder. -*/ -typedef struct ap_header -{ - int32 magic; - int32 version; - char fill[16]; - int16 entries; - -} ap_header; - -typedef struct ap_entry -{ - uint32 id; - uint32 offset; - uint32 length; - -} ap_entry; - -typedef struct ap_dates -{ - int32 create, modify, backup, access; - -} ap_dates; - -typedef struct myFInfo /* the mac FInfo structure for the cross platform. */ -{ - int32 fdType, fdCreator; - int16 fdFlags; - int32 fdLocation; /* it really should be a pointer, but just a place-holder */ - int16 fdFldr; - -} myFInfo; - -XP_BEGIN_PROTOS -/* -** string utils. -*/ -int write_stream(appledouble_encode_object *p_ap_encode_obj,char *s,int len); - -int fill_apple_mime_header(appledouble_encode_object *p_ap_encode_obj); -int ap_encode_file_infor(appledouble_encode_object *p_ap_encode_obj); -int ap_encode_header(appledouble_encode_object* p_ap_encode_obj, XP_Bool firstTime); -int ap_encode_data( appledouble_encode_object* p_ap_encode_obj, XP_Bool firstTime); - -/* -** the prototypes for the ap_decoder. -*/ -int fetch_a_line(appledouble_decode_object* p_ap_decode_obj, char *buff); -int ParseFileHeader(appledouble_decode_object* p_ap_decode_obj); -int ap_seek_part_start(appledouble_decode_object* p_ap_decode_obj); -void parse_param(char *p, char **param, char**define, char **np); -int ap_seek_to_boundary(appledouble_decode_object* p_ap_decode_obj, XP_Bool firstime); -int ap_parse_header(appledouble_decode_object* p_ap_decode_obj,XP_Bool firstime); -int ap_decode_file_infor(appledouble_decode_object* p_ap_decode_obj); -int ap_decode_process_header(appledouble_decode_object* p_ap_decode_obj, XP_Bool firstime); -int ap_decode_process_data( appledouble_decode_object* p_ap_decode_obj, XP_Bool firstime); - -#ifdef XP_MAC -OSErr my_FSSpecFromPathname(char* src_filename, FSSpec* fspec); -char* my_PathnameFromFSSpec(FSSpec* fspec); - -#endif - XP_END_PROTOS - -#ifdef XP_MAC -#if PRAGMA_ALIGN_SUPPORTED -#pragma options align=reset -#endif -#endif /* XP_MAC */ - -#endif /* ad_codes_h */ diff --git a/mozilla/lib/libmsg/ad_strm.c b/mozilla/lib/libmsg/ad_strm.c deleted file mode 100644 index 8da9387feb9..00000000000 --- a/mozilla/lib/libmsg/ad_strm.c +++ /dev/null @@ -1,723 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/** -* Apple Double encode/decode stream -* ---------------------------------- -* -* 11sep95 mym created. -*/ - -#include "msg.h" -#include "appledbl.h" -#include "m_binhex.h" -#include "m_cvstrm.h" -#include "ad_codes.h" -/* for XP_GetString() */ -#include "xpgetstr.h" - -extern int MK_MSG_SAVE_ATTACH_AS; - -#ifdef XP_MAC -#pragma warn_unusedarg off - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; -extern int MK_MIME_ERROR_WRITING_FILE; - -/* --------------------------------------------------------------------------------- -** -** The codes for Apple-double encoding stream. --- it's only useful on Mac OS -** -** --------------------------------------------------------------------------------- -*/ - -#define WORKING_BUFF_SIZE 8192 - -typedef struct _AppledoubleEncodeObject -{ - appledouble_encode_object ap_encode_obj; - - char* buff; /* the working buff. */ - int32 s_buff; /* the working buff size. */ - - XP_File fp; /* file to hold the encoding */ - char *fname; /* and the file name. */ - -} AppleDoubleEncodeObject; - -/* - Let's go "l" characters forward of the encoding for this write. - Note: - "s" is just a dummy paramter. - */ -PRIVATE int -net_AppleDouble_Encode_Write ( - void *stream, const char* s, int32 l) -{ - int status = 0; - AppleDoubleEncodeObject * obj = (AppleDoubleEncodeObject*)stream; - int32 count, size; - - while (l > 0) - { - size = obj->s_buff * 11 / 16; - size = MIN(l, size); - status = ap_encode_next(&(obj->ap_encode_obj), - obj->buff, - size, - &count); - if (status == noErr || status == errDone) - { - /* - * we get the encode data, so call the next stream to write it to the disk. - */ - if (XP_FileWrite(obj->buff, count, obj->fp) != count) - return errFileWrite; - } - - if (status != noErr ) /* abort when error / done? */ - break; - - l -= size; - } - return status; -} - -/* -** is the stream ready for writing? - */ -PRIVATE unsigned int net_AppleDouble_Encode_Ready (void *stream) -{ - return(MAX_WRITE_READY); /* always ready for writing */ -} - - -PRIVATE void net_AppleDouble_Encode_Complete (void *stream) -{ - AppleDoubleEncodeObject * obj = (AppleDoubleEncodeObject*)stream; - - ap_encode_end(&(obj->ap_encode_obj), false); /* this is a normal ending */ - - if (obj->fp) - { - XP_FileClose(obj->fp); /* done with the target file */ - - FREEIF(obj->fname); /* and the file name too */ - } - - FREEIF(obj->buff); /* free the working buff. */ - XP_FREE(obj); -} - -PRIVATE void net_AppleDouble_Encode_Abort (void *stream, int status) -{ - AppleDoubleEncodeObject * obj = (AppleDoubleEncodeObject*)stream; - - ap_encode_end(&(obj->ap_encode_obj), true); /* it is an aborting exist... */ - - if (obj->fp) - { - XP_FileClose(obj->fp); - - XP_FileRemove (obj->fname, xpURL); /* remove the partial file. */ - - FREEIF(obj->fname); - } - FREEIF(obj->buff); /* free the working buff. */ - XP_FREE(obj); -} - -/* -** fe_MakeAppleDoubleEncodeStream -** ------------------------------ -** -** Will create a apple double encode stream: -** -** -> take the filename as the input source (it needs to be a mac file.) -** -> take a file name for the temp file we are generating. -*/ - -PUBLIC NET_StreamClass * -fe_MakeAppleDoubleEncodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - char* src_filename, - char* dst_filename, - char* separator) -{ - AppleDoubleEncodeObject* obj; - NET_StreamClass* stream; - char* working_buff = NULL; - int bSize = WORKING_BUFF_SIZE; - - TRACEMSG(("Setting up apple encode stream. Have URL: %s\n", URL_s->address)); - - stream = XP_NEW(NET_StreamClass); - if(stream == NULL) - return(NULL); - - obj = XP_NEW(AppleDoubleEncodeObject); - if (obj == NULL) - { - XP_FREE (stream); - return(NULL); - } - - while (!working_buff && (bSize >= 512)) - { - working_buff = (char *)XP_ALLOC(bSize); - if (!working_buff) - bSize /= 2; - } - if (working_buff == NULL) - { - XP_FREE (obj); - XP_FREE (stream); - return (NULL); - } - - stream->name = "Apple Double Encode"; - stream->complete = (MKStreamCompleteFunc) net_AppleDouble_Encode_Complete; - stream->abort = (MKStreamAbortFunc) net_AppleDouble_Encode_Abort; - stream->put_block = (MKStreamWriteFunc) net_AppleDouble_Encode_Write; - stream->is_write_ready = (MKStreamWriteReadyFunc) net_AppleDouble_Encode_Ready; - stream->data_object = obj; - stream->window_id = window_id; - - obj->fp = XP_FileOpen(dst_filename, xpFileToPost, XP_FILE_WRITE_BIN); - if (obj->fp == NULL) - { - XP_FREE (working_buff); - XP_FREE (obj); - XP_FREE (stream); - return (NULL); - } - - obj->fname = XP_STRDUP(dst_filename); - - obj->buff = working_buff; - obj->s_buff = bSize; - - /* - ** setup all the need information on the apple double encoder. - */ - ap_encode_init(&(obj->ap_encode_obj), - src_filename, /* pass the file name of the source. */ - separator); - - TRACEMSG(("Returning stream from NET_AppleDoubleEncoder\n")); - - return stream; -} -#endif - -/* -** --------------------------------------------------------------------------------- -** -** The codes for the Apple sigle/double decoding. -** -** --------------------------------------------------------------------------------- -*/ -typedef struct AppleDoubleDecodeObject -{ - appledouble_decode_object ap_decode_obj; - - char* in_buff; /* the temporary buff to accumulate */ - /* the input, make sure the call to */ - /* the dedcoder engine big enough buff */ - int32 bytes_in_buff; /* the count for the temporary buff. */ - - NET_StreamClass* binhex_stream; /* a binhex encode stream to convert */ - /* the decoded mac file to binhex. */ - -} AppleDoubleDecodeObject; - -PRIVATE int -net_AppleDouble_Decode_Write ( - void *stream, const char* s, int32 l) -{ - int status = NOERR; - AppleDoubleDecodeObject * obj = (AppleDoubleDecodeObject*) stream; - int32 size; - - /* - ** To force an effecient decoding, we should - ** make sure that the buff pass to the decode next is great than 1024 bytes. - */ - if (obj->bytes_in_buff + l > 1024) - { - size = 1024 - obj->bytes_in_buff; - XP_MEMCPY(obj->in_buff+obj->bytes_in_buff, - s, - size); - s += size; - l -= size; - - status = ap_decode_next(&(obj->ap_decode_obj), - obj->in_buff, - 1024); - obj->bytes_in_buff = 0; - } - - if (l > 1024) - { - /* we are sure that obj->bytes_in_buff == 0 at this point. */ - status = ap_decode_next(&(obj->ap_decode_obj), - (char *)s, - l); - } - else - { - /* and we are sure we will not get overflow with the buff. */ - XP_MEMCPY(obj->in_buff+obj->bytes_in_buff, - s, - l); - obj->bytes_in_buff += l; - } - return status; -} - -PRIVATE unsigned int -net_AppleDouble_Decode_Ready (NET_StreamClass *stream) -{ - return(MAX_WRITE_READY); /* always ready for writing */ -} - - -PRIVATE void -net_AppleDouble_Decode_Complete (void *stream) -{ - AppleDoubleDecodeObject *obj = (AppleDoubleDecodeObject *)stream; - - if (obj->bytes_in_buff) - { - - ap_decode_next(&(obj->ap_decode_obj), /* do the last calls. */ - (char *)obj->in_buff, - obj->bytes_in_buff); - obj->bytes_in_buff = 0; - } - - ap_decode_end(&(obj->ap_decode_obj), FALSE); /* it is a normal clean up cases.*/ - - if (obj->binhex_stream) - XP_FREE(obj->binhex_stream); - - if (obj->in_buff) - XP_FREE(obj->in_buff); - - XP_FREE(obj); -} - -PRIVATE void -net_AppleDouble_Decode_Abort ( - void *stream, int status) -{ - AppleDoubleDecodeObject *obj = (AppleDoubleDecodeObject *)stream; - - ap_decode_end(&(obj->ap_decode_obj), TRUE); /* it is an abort. */ - - if (obj->binhex_stream) - XP_FREE(obj->binhex_stream); - - if (obj->in_buff) - XP_FREE(obj->in_buff); - - XP_FREE(obj); -} - - -/* -** fe_MakeAppleDoubleDecodeStream_1 -** --------------------------------- -** -** Create the apple double decode stream. -** -** In the Mac OS, it will create a stream to decode to an apple file; -** -** In other OS, the stream will decode apple double object, -** then encode it in binhex format, and save to the file. -*/ -#ifndef XP_MAC -static void -simple_copy(MWContext* context, char* saveName, void* closure) -{ - /* just copy the filename to the closure, so the caller can get it. */ - XP_STRCPY(closure, saveName); -} -#endif - -PUBLIC NET_StreamClass * -fe_MakeAppleDoubleDecodeStream_1 (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id) -{ -#ifdef XP_MAC - return fe_MakeAppleDoubleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - false, - NULL); -#else - -#if 0 /* just a test in the mac OS */ - NET_StreamClass *p; - char* url; - StandardFileReply reply; - - StandardPutFile("\pSave binhex encoded file as:", "\pUntitled", &reply); - if (!reply.sfGood) - { - return NULL; - } - url = my_PathnameFromFSSpec(&(reply.sfFile)); - - p = fe_MakeAppleDoubleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - true, - url+7); - XP_FREE(url); - return (p); - -#else /* for the none mac-os to get a file name */ - - NET_StreamClass *p; - char* filename; - - filename = XP_ALLOC(1024); - if (filename == NULL) - return NULL; - - if (FE_PromptForFileName(window_id, - XP_GetString(MK_MSG_SAVE_ATTACH_AS), - 0, - FALSE, - FALSE, - simple_copy, - filename) == -1) - { - return NULL; - } - - p = fe_MakeAppleDoubleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - TRUE, - filename); - XP_FREE(filename); - return (p); - -#endif - -#endif -} - - -PUBLIC NET_StreamClass * -fe_MakeAppleDoubleDecodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - XP_Bool write_as_binhex, - char *dst_filename) -{ - AppleDoubleDecodeObject* obj; - NET_StreamClass* stream; - - TRACEMSG(("Setting up apple double decode stream. Have URL: %s\n", URL_s->address)); - - stream = XP_NEW(NET_StreamClass); - if(stream == NULL) - return(NULL); - - obj = XP_NEW(AppleDoubleDecodeObject); - if (obj == NULL) - { - XP_FREE(stream); - return(NULL); - } - - stream->name = "AppleDouble Decode"; - stream->complete = (MKStreamCompleteFunc) net_AppleDouble_Decode_Complete; - stream->abort = (MKStreamAbortFunc) net_AppleDouble_Decode_Abort; - stream->put_block = (MKStreamWriteFunc) net_AppleDouble_Decode_Write; - stream->is_write_ready = (MKStreamWriteReadyFunc) net_AppleDouble_Decode_Ready; - stream->data_object = obj; - stream->window_id = window_id; - - /* - ** setup all the need information on the apple double encoder. - */ - obj->in_buff = (char *)XP_ALLOC(1024); - if (obj->in_buff == NULL) - { - XP_FREE(obj); - XP_FREE(stream); - return (NULL); - } - - obj->bytes_in_buff = 0; - - if (write_as_binhex) - { - obj->binhex_stream = - fe_MakeBinHexEncodeStream(format_out, - data_obj, - URL_s, - window_id, - dst_filename); - if (obj->binhex_stream == NULL) - { - XP_FREE(obj); - XP_FREE(stream); - XP_FREE(obj->in_buff); - return NULL; - } - - ap_decode_init(&(obj->ap_decode_obj), - FALSE, - TRUE, - obj->binhex_stream); - } - else - { - obj->binhex_stream = NULL; - ap_decode_init(&(obj->ap_decode_obj), - FALSE, - FALSE, - window_id); - /* - * jt 8/8/97 -- I think this should be set to true. But' - * let's not touch it for now. - * - * obj->ap_decode_obj.is_binary = TRUE; - */ - } - - if (dst_filename) - { - XP_STRNCPY_SAFE(obj->ap_decode_obj.fname, dst_filename, - sizeof(obj->ap_decode_obj.fname)); - } - #ifdef XP_MAC - obj->ap_decode_obj.mSpec = (FSSpec*)( URL_s->fe_data ); - #endif - TRACEMSG(("Returning stream from NET_AppleDoubleDecode\n")); - - return stream; -} - -/* -** fe_MakeAppleSingleDecodeStream_1 -** -------------------------------- -** -** Create the apple single decode stream. -** -** In the Mac OS, it will create a stream to decode object to an apple file; -** -** In other OS, the stream will decode apple single object, -** then encode context in binhex format, and save to the file. -*/ - -PUBLIC NET_StreamClass * -fe_MakeAppleSingleDecodeStream_1 (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id) -{ -#ifdef XP_MAC - return fe_MakeAppleSingleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - FALSE, - NULL); -#else - -#if 0 /* just a test in the mac OS */ - NET_StreamClass *p; - char* url; - StandardFileReply reply; - - StandardPutFile("\pSave binhex encoded file as:", "\pUntitled", &reply); - if (!reply.sfGood) - { - return NULL; - } - url = my_PathnameFromFSSpec(&(reply.sfFile)); - - p = fe_MakeAppleSingleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - true, - url+7); - XP_FREE(url); - return (p); - -#else /* for the none mac-os to get a file name */ - - NET_StreamClass *p; - char* filename; - char* defaultPath = 0; - - defaultPath = URL_s->content_name; - -#ifdef XP_WIN16 - if (XP_FileNameContainsBadChars(defaultPath)) - defaultPath = 0; -#endif - - filename = XP_ALLOC(1024); - if (filename == NULL) - return NULL; - - if (FE_PromptForFileName(window_id, - XP_GetString(MK_MSG_SAVE_ATTACH_AS), - defaultPath, - FALSE, - FALSE, - simple_copy, - filename) == -1) - { - return NULL; - } - - p = fe_MakeAppleSingleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - FALSE, - filename); - XP_FREE(filename); - return (p); - -#endif - -#endif -} - -/* -** Create the Apple Doube Decode stream. -** -*/ -PUBLIC NET_StreamClass * -fe_MakeAppleSingleDecodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - XP_Bool write_as_binhex, - char *dst_filename) -{ - AppleDoubleDecodeObject* obj; - NET_StreamClass* stream; - int encoding = kEncodeNone; /* default is that we don't know the encoding */ - - TRACEMSG(("Setting up apple single decode stream. Have URL: %s\n", URL_s->address)); - - stream = XP_NEW(NET_StreamClass); - if(stream == NULL) - return(NULL); - - obj = XP_NEW(AppleDoubleDecodeObject); - if (obj == NULL) - { - XP_FREE(stream); - return(NULL); - } - - stream->name = "AppleSingle Decode"; - stream->complete = (MKStreamCompleteFunc) net_AppleDouble_Decode_Complete; - stream->abort = (MKStreamAbortFunc) net_AppleDouble_Decode_Abort; - stream->put_block = (MKStreamWriteFunc) net_AppleDouble_Decode_Write; - stream->is_write_ready = (MKStreamWriteReadyFunc) net_AppleDouble_Decode_Ready; - stream->data_object = obj; - stream->window_id = window_id; - - /* - ** setup all the need information on the apple double encoder. - */ - obj->in_buff = (char *)XP_ALLOC(1024); - if (obj->in_buff == NULL) - { - XP_FREE(obj); - XP_FREE(stream); - return (NULL); - } - - obj->bytes_in_buff = 0; - - if (write_as_binhex) - { - obj->binhex_stream = - fe_MakeBinHexEncodeStream(format_out, - data_obj, - URL_s, - window_id, - dst_filename); - if (obj->binhex_stream == NULL) - { - XP_FREE(obj); - XP_FREE(stream); - XP_FREE(obj->in_buff); - return NULL; - } - - ap_decode_init(&(obj->ap_decode_obj), - TRUE, - TRUE, - obj->binhex_stream); - } - else - { - obj->binhex_stream = NULL; - ap_decode_init(&(obj->ap_decode_obj), - TRUE, - FALSE, - window_id); -#ifndef XP_MAC - obj->ap_decode_obj.is_binary = TRUE; -#endif - } - - if (dst_filename) - { - XP_STRNCPY_SAFE(obj->ap_decode_obj.fname, dst_filename, - sizeof(obj->ap_decode_obj.fname)); - } - /* If we are of a broken content-type, impose its encoding. */ - if (URL_s->content_type - && !XP_STRNCASECMP(URL_s->content_type, "x-uuencode-apple-single", 23)) - obj->ap_decode_obj.encoding = kEncodeUU; - else - obj->ap_decode_obj.encoding = kEncodeNone; - - TRACEMSG(("Returning stream from NET_AppleSingleDecode\n")); - - return stream; -} diff --git a/mozilla/lib/libmsg/addrutil.cpp b/mozilla/lib/libmsg/addrutil.cpp deleted file mode 100644 index 183cfa1facb..00000000000 --- a/mozilla/lib/libmsg/addrutil.cpp +++ /dev/null @@ -1,1611 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* addrutil.cpp --- parsing RFC822 addresses. - */ - -#include "msg.h" -#include "msgprefs.h" - -#undef FREEIF -#define FREEIF(obj) do { if (obj) { XP_FREE (obj); obj = 0; }} while (0) - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; -} - -static int msg_quote_phrase_or_addr (char *address, int32 length, - XP_Bool addr_p); -static int msg_parse_rfc822_addresses (const char *line, - char **names, - char **addresses, - XP_Bool quote_names_p, - XP_Bool quote_addrs_p, - XP_Bool first_only_p); - - -/* Given a string which contains a list of RFC822 addresses, parses it into - their component names and mailboxes. - - The returned value is the number of addresses, or a negative error code; - the names and addresses are returned into the provided pointers as - consecutive null-terminated strings. It is up to the caller to free them. - Note that some of the strings may be zero-length. - - Either of the provided pointers may be NULL if the caller is not interested - in those components. - - quote_names_p and quote_addrs_p control whether the returned strings should - be quoted as RFC822 entities, or returned in a more human-presentable (but - not necessarily parsable) form. - - If first_only_p is true, then only the first element of the list is - returned; we don't bother parsing the rest. - */ -int -msg_parse_rfc822_addresses (const char *line, - char **names, - char **addresses, - XP_Bool quote_names_p, - XP_Bool quote_addrs_p, - XP_Bool first_only_p) -{ - uint32 addr_count = 0; - uint32 line_length; - const char *line_end; - const char *this_start; - char *name_buf = 0, *name_out, *name_start; - char *addr_buf = 0, *addr_out, *addr_start; - XP_ASSERT (line); - if (! line) - return -1; - if (names) - *names = 0; - if (addresses) - *addresses = 0; - line_length = XP_STRLEN (line); - if (line_length == 0) - return 0; - - name_buf = (char *) XP_ALLOC (line_length * 2 + 10); - if (! name_buf) - return MK_OUT_OF_MEMORY; - - addr_buf = (char *) XP_ALLOC (line_length * 2 + 10); - if (! addr_buf) - { - FREEIF (name_buf); - return MK_OUT_OF_MEMORY; - } - - line_end = line; - addr_out = addr_buf; - name_out = name_buf; - name_start = name_buf; - addr_start = addr_buf; - this_start = line; - - /* Skip over extra whitespace or commas before addresses. */ - while (*line_end && - (XP_IS_SPACE (*line_end) || *line_end == ',')) - line_end++; - - while (*line_end) - { - uint32 paren_depth = 0; - const char *oparen = 0; - const char *mailbox_start = 0; - const char *mailbox_end = 0; - - while (*line_end && - !(*line_end == ',' && - paren_depth <= 0 && /* comma is ok inside () */ - (!mailbox_start || mailbox_end))) /* comma is ok inside <> */ - { - if (*line_end == '\\') - { - line_end++; - if (!*line_end) /* otherwise, we walk off end of line, right? */ - break; - } - else if (*line_end == '"') - { - int leave_quotes = 0; - - line_end++; /* remove open " */ - - /* handle '"John.Van Doe"@space.com' case */ - if (paren_depth == 0 && !mailbox_start) - { - char *end_quote = strchr(line_end, '"'); - char *mailbox = end_quote ? strchr(end_quote, '<') : (char *)NULL, - *comma = end_quote ? strchr(end_quote, ',') : (char *)NULL; - if (!mailbox || (comma && comma < mailbox)) - { - - leave_quotes = 1; /* no mailbox for this address */ - *addr_out++ = '"'; - } - } - - while (*line_end) - { - if (*line_end == '\\') - { - if ( paren_depth == 0 - && (*(line_end+1) == '\\' || *(line_end+1) == '"')) - *addr_out++ = *line_end++; - else - line_end++; - } - else if (*line_end == '"') - break; - - if (paren_depth == 0) - *addr_out++ = *line_end; - - line_end++; - } - if (*line_end) line_end++; /* remove close " */ - if (leave_quotes) *addr_out++ = '"'; - continue; - } - - if (*line_end == '(') - { - if (paren_depth == 0) - oparen = line_end; - paren_depth++; - } - else if (*line_end == '<' && paren_depth == 0) - { - mailbox_start = line_end; - } - else if (*line_end == '>' && mailbox_start && paren_depth == 0) - { - mailbox_end = line_end; - } - else if (*line_end == ')' && paren_depth > 0) - { - paren_depth--; - if (paren_depth == 0) - { - const char *s = oparen + 1; - /* Copy the characters inside the parens onto the - "name" buffer. */ - - /* Push out some whitespace before the paren, if - there is non-whitespace there already. */ - if (name_out > name_start && - !XP_IS_SPACE (name_out [-1])) - *name_out++ = ' '; - - /* Skip leading whitespace. */ - while (XP_IS_SPACE (*s) && s < line_end) - s++; - - while (s < line_end) - { - if (*s == '\"') - { - /* Strip out " within () unless backslashed */ - s++; - continue; - } - - if (*s == '\\') /* remove one \ */ - s++; - - if (XP_IS_SPACE (*s) && - name_out > name_start && - XP_IS_SPACE (name_out[-1])) - /* collapse consecutive whitespace */; - else - *name_out++ = *s; - - s++; - } - oparen = 0; - } - } - else - { - /* If we're not inside parens or a <mailbox>, tack this - on to the end of the addr_buf. */ - if (paren_depth == 0 && - (!mailbox_start || mailbox_end)) - { - /* Eat whitespace at the beginning of the line, - and eat consecutive whitespace within the line. */ - if (XP_IS_SPACE (*line_end) && - (addr_out == addr_start || - XP_IS_SPACE (addr_out[-1]))) - /* skip it */; - else - *addr_out++ = *line_end; - } - } - - line_end++; - } - - /* Now we have extracted a single address from the comma-separated - list of addresses. The characters have been divided among the - various buffers: the parts inside parens have been placed in the - name_buf, and everything else has been placed in the addr_buf. - Quoted strings and backslashed characters have been `expanded.' - - If there was a <mailbox> spec in it, we have remembered where it was. - Copy that on to the addr_buf, replacing what was there, and copy the - characters not inside <> onto the name_buf, replacing what is there - now (which was just the parenthesized parts.) (And we need to do the - quote and backslash hacking again, since we're coming from the - original source.) - - Otherwise, we're already done - the addr_buf and name_buf contain - the right data already (de-quoted.) - */ - if (mailbox_end) - { - const char *s; - XP_ASSERT (*mailbox_start == '<'); - XP_ASSERT (*mailbox_end == '>'); - - /* First, copy the name. - */ - name_out = name_start; - s = this_start; - /* Skip leading whitespace. */ - while (XP_IS_SPACE (*s) && s < mailbox_start) - s++; - /* Copy up to (not including) the < */ - while (s < mailbox_start) - { - if (*s == '\"') - { - s++; - continue; - } - if (*s == '\\') - { - if (s + 1 < mailbox_start && (*(s+1) == '\\' || *(s+1) == '\"')) - *name_out++ = *s++; - else - s++; - } - if (XP_IS_SPACE (*s) && - name_out > name_start && - XP_IS_SPACE (name_out[-1])) - /* collapse consecutive whitespace */; - else - *name_out++ = *s; - s++; - } - /* Trim trailing whitespace. */ - while (name_out > name_start && XP_IS_SPACE (name_out[-1])) - name_out--; - /* Push out one space. */ - *name_out++ = ' '; - s = mailbox_end+1; - /* Skip whitespace after > */ - while (XP_IS_SPACE (*s) && s < line_end) - s++; - /* Copy from just after > to the end. */ - while (s < line_end) - { - if (*s == '\"') - { - s++; - continue; - } - if (*s == '\\') - { - if (s + 1 < line_end && (*(s+1) == '\\' || *(s+1) == '\"')) - *name_out++ = *s++; - else - s++; - } - if (XP_IS_SPACE (*s) && - name_out > name_start && - XP_IS_SPACE (name_out[-1])) - /* collapse consecutive whitespace */; - else - *name_out++ = *s; - s++; - } - /* Trim trailing whitespace. */ - while (name_out > name_start && XP_IS_SPACE (name_out[-1])) - name_out--; - /* null-terminate. */ - *name_out++ = 0; - - /* Now, copy the address. - */ - mailbox_start++; - addr_out = addr_start; - s = mailbox_start; - /* Skip leading whitespace. */ - while (XP_IS_SPACE (*s) && s < mailbox_end) - s++; - /* Copy up to (not including) the > */ - while (s < mailbox_end) - { - if (*s == '\"') - { - s++; - continue; - } - if (*s == '\\') - { - if (s + 1 < mailbox_end && (*(s+1) == '\\' || *(s+1) == '\"')) - *addr_out++ = *s++; - else - s++; - } - *addr_out++ = *s++; - } - /* Trim trailing whitespace. */ - while (addr_out > addr_start && XP_IS_SPACE (addr_out[-1])) - addr_out--; - /* null-terminate. */ - *addr_out++ = 0; - } - else /* No component of <mailbox> form. */ - { - /* Trim trailing whitespace. */ - while (addr_out > addr_start && XP_IS_SPACE (addr_out[-1])) - addr_out--; - /* null-terminate. */ - *addr_out++ = 0; - - /* Trim trailing whitespace. */ - while (name_out > name_start && XP_IS_SPACE (name_out[-1])) - name_out--; - /* null-terminate. */ - *name_out++ = 0; - - /* Attempt to deal with the simple error case of a missing comma. - We can only really deal with this in the non-<> case. - If there is no name, and if the address doesn't contain - double-quotes, but the address does contain whitespace, - then assume that the whitespace is an address delimiter. - */ - if (!name_start || !*name_start) - { - char *s; - char *space = 0; - for (s = addr_start; s < addr_out; s++) - if (*s == '\\') - s++; - else if (!space && XP_IS_SPACE (*s)) - space = s; - else if (*s == '"') - { - space = 0; - break; - } - if (space) - { - for (s = space; s < addr_out; s++) - if (*s == '\\') - s++; - else if (XP_IS_SPACE (*s)) - { - *s = 0; - *name_out++ = 0; - addr_count++; - } - } - } - } - - /* Now re-quote the names and addresses if necessary. - */ - if (quote_names_p && names) - { - int L = name_out - name_start - 1; - L = msg_quote_phrase_or_addr (name_start, L, FALSE); - name_out = name_start + L + 1; - } - - if (quote_addrs_p && addresses) - { - int L = addr_out - addr_start - 1; - L = msg_quote_phrase_or_addr (addr_start, L, TRUE); - addr_out = addr_start + L + 1; - } - - addr_count++; - - if (first_only_p) - /* If we only want the first address, we can stop now. */ - break; - - if (*line_end) - line_end++; - - /* Skip over extra whitespace or commas between addresses. */ - while (*line_end && - (XP_IS_SPACE (*line_end) || *line_end == ',')) - line_end++; - - this_start = line_end; - name_start = name_out; - addr_start = addr_out; - } - - /* Make one more pass through and convert all whitespace characters - to SPC. We could do that in the first pass, but this is simpler. */ - { - char *s; - for (s = name_buf; s < name_out; s++) - if (XP_IS_SPACE (*s) && *s != ' ') - *s = ' '; - for (s = addr_buf; s < addr_out; s++) - if (XP_IS_SPACE (*s) && *s != ' ') - *s = ' '; - } - - /* #### Should we bother realloc'ing them smaller? */ - - if (names) - *names = name_buf; - else - XP_FREE (name_buf); - - if (addresses) - *addresses = addr_buf; - else - XP_FREE (addr_buf); - - return addr_count; -} - - -extern "C" int -MSG_ParseRFC822Addresses (const char *line, - char **names, - char **addresses) -{ - return msg_parse_rfc822_addresses(line, names, addresses, TRUE, TRUE, FALSE); -} - - - -/* Given a single mailbox, this quotes the characters in it which need - to be quoted; it writes into `address' and returns a new length. - `address' is assumed to be long enough; worst case, its size will - be (N*2)+2. - */ -static int -msg_quote_phrase_or_addr (char *address, int32 length, XP_Bool addr_p) -{ - int quotable_count = 0, in_quote = 0; - int unquotable_count = 0; - int32 i, new_length; - char *in, *out; - XP_Bool atsign = FALSE; - XP_Bool user_quote = FALSE; - - /* If the entire address is quoted, fall out now. */ - if (address[0] == '"' && address[length - 1] == '"') - return length; - - for (i = 0, in = address; i < length; i++, in++) - { - if (*in == 0) - return length; /* #### horrible kludge... */ - - else if (addr_p && *in == '@' && !atsign && !in_quote) - { - /* Exactly one unquoted at-sign is allowed in an address. */ - atsign = TRUE; - - /* If address is of the form '"userid"@somewhere.com' don't quote - * the quotes around 'userid'. Also reset the quotable count, since - * any quotables we've seen are already inside quotes. - */ - if (address[0] == '"' && in > address + 2 && *(in - 1) == '"' && *(in - 2) != '\\') - unquotable_count -= 2, quotable_count = 0, user_quote = TRUE; - } - - else if (*in == '\\') - { - if (i + 1 < length && (*(in + 1) == '\\' || *(in + 1) == '"')) - /* If the next character is a backslash or quote, this backslash */ - /* is an escape backslash; ignore it and the next character. */ - i++, in++; - else - /* If the name contains backslashes or quotes, they must be escaped. */ - unquotable_count++; - } - - else if (*in == '"') - /* If the name contains quotes, they must be escaped. */ - unquotable_count++, in_quote = !in_quote; - - else if ( *in >= 127 || *in < 0 - || *in == '[' || *in == ']' || *in == '(' || *in == ')' - || *in == '<' || *in == '>' || *in == '@' || *in == ',' - || *in == ';' || *in == '$') - /* If the name contains control chars or RFC822 specials, it needs to - * be enclosed in quotes. Double-quotes and backslashes will be dealt - * with seperately. - * - * The ":" character is explicitly not in this list, though RFC822 says - * it should be quoted, because that has been seen to break VMS - * systems. (Rather, it has been seen that there are Unix SMTP servers - * which accept RCPT TO:<host::user> but not RCPT TO:<"host::user"> or - * RCPT TO:<host\:\:user>, which is the syntax that VMS/DECNET hosts - * use. - * - * For future reference: it is also claimed that some VMS SMTP servers - * allow \ quoting but not "" quoting; and that sendmail uses self- - * contradcitory quoting conventions that violate both RFCs 821 and - * 822, so any address quoting on a sendmail system will lose badly. - */ - quotable_count++; - - else if (addr_p && *in == ' ') - /* Naked spaces are allowed in names, but not addresses. */ - quotable_count++; - - else if ( !addr_p - && (*in == '.' || *in == '!' || *in == '$' || *in == '%')) - /* Naked dots are allowed in addresses, but not in names. - * The other characters (!$%) are technically allowed in names, but - * are surely going to cause someone trouble, so we quote them anyway. - */ - quotable_count++; - } - - if (quotable_count == 0 && unquotable_count == 0) - return length; - - /* Add 2 to the length for the quotes, plus one for each character - * which will need a backslash as well. - */ - new_length = length + unquotable_count + 2; - - /* Now walk through the string backwards (so that we can use the same - * block.) First put on the terminating quote, then push out each - * character, backslashing as necessary. Then a final quote. - * Uh, except, put the second quote just before the last @ if there - * is one. - */ - out = address + new_length - 1; - in = address + length - 1; - if (!atsign || (user_quote && quotable_count > 0)) - *out-- = '"'; - while (out > address) - { - XP_ASSERT(in >= address); - - if (*in == '@' && user_quote && quotable_count > 0) - *out-- = '"'; - - *out-- = *in; - - if (*in == '@' && atsign && !user_quote) - { - *out-- = '"'; - atsign = FALSE; - } - else if (*in == '\\' || *in == '"') - { - if ( user_quote && *in == '"' - && ( in == address - || ( in < address + length - 1 && in > address - && *(in + 1) == '@' && *(in - 1) != '\\'))) - /* Do nothing */; - else if (in > address && *(in - 1) == '\\') - *out-- = *--in; - else - { - XP_ASSERT(out > address); - *out-- = '\\'; - } - } - in--; - } - XP_ASSERT(in == address - 1 || (user_quote && in == address)); - XP_ASSERT(out == address); - *out = '"'; - address[new_length] = 0; - return new_length; -} - -/* Given a name or address that might have been quoted - it will take out the escape and double quotes - The caller is responsible for freeing the resulting - string. - */ -extern "C" int -MSG_UnquotePhraseOrAddr (char *line, char** lineout) -{ - int outlen = 0; - char *lineptr = NULL; - char *tmpLine = NULL; - char *outptr = NULL; - int result = 0; - - (*lineout) = NULL; - if (line) { - /* if the first character isnt a double quote - then there is nothing to do */ - if (*line != '"') - { - (*lineout) = XP_STRDUP (line); - if (!lineout) - return -1; - else - return 0; - } - - /* dont count the first character that is the double quote */ - lineptr = line; - lineptr++; - /* count up how many characters we are going to output */ - while (*lineptr) { - /* if the character is an '\' then - output the escaped character */ - if (*lineptr == '\\') - lineptr++; - outlen++; - lineptr++; - } - tmpLine = (char *) XP_ALLOC (outlen + 1); - if (!tmpLine) - return -1; - XP_MEMSET(tmpLine, 0, outlen); - /* dont output the first double quote */ - line++; - lineptr = line; - outptr = (tmpLine); - while ((*lineptr) != '\0') { - /* if the character is an '\' then - output the character that was escaped */ - /* if it was part of the quote then don't - output it */ - if (*lineptr == '\\' || *lineptr == '"') { - lineptr++; - } - *outptr = *lineptr; - if (*lineptr != '\0') { - outptr++; - lineptr++; - } - } - *outptr = '\0'; - if (tmpLine) - (*lineout) = XP_STRDUP (tmpLine); - else - result = -1; - XP_FREEIF (tmpLine); - } - return result; -} -/* Given a string which contains a list of RFC822 addresses, returns a - comma-seperated list of just the `mailbox' portions. - */ -extern "C" char * -MSG_ExtractRFC822AddressMailboxes (const char *line) -{ - char *addrs = 0; - char *result, *s, *out; - uint32 i, size = 0; - int status = MSG_ParseRFC822Addresses (line, 0, &addrs); - if (status <= 0) - return 0; - - s = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j = XP_STRLEN (s); - s += j + 1; - size += j + 2; - } - - result = (char*)XP_ALLOC (size + 1); - if (! result) - { - XP_FREE (addrs); - return 0; - } - out = result; - s = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j = XP_STRLEN (s); - XP_MEMCPY (out, s, j); - out += j; - if ((int) (i+1) < status) - { - *out++ = ','; - *out++ = ' '; - } - s += j + 1; - } - *out = 0; - - XP_FREE (addrs); - return result; -} - - -/* Given a string which contains a list of RFC822 addresses, returns a - comma-seperated list of just the `user name' portions. If any of - the addresses doesn't have a name, then the mailbox is used instead. - - The names are *unquoted* and therefore cannot be re-parsed in any way. - They are, however, nice and human-readable. - */ -extern "C" char * -MSG_ExtractRFC822AddressNames (const char *line) -{ - char *names = 0; - char *addrs = 0; - char *result, *s1, *s2, *out; - uint32 i, size = 0; - int status = msg_parse_rfc822_addresses(line, &names, &addrs, FALSE, FALSE, - FALSE); - if (status <= 0) - return 0; - - s1 = names; - s2 = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size += (j1 ? j1 : j2) + 2; - } - - result = (char*)XP_ALLOC (size + 1); - if (! result) - { - XP_FREE (names); - XP_FREE (addrs); - return 0; - } - out = result; - s1 = names; - s2 = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - - if (j1) - { - XP_MEMCPY (out, s1, j1); - out += j1; - } - else - { - XP_MEMCPY (out, s2, j2); - out += j2; - } - - if ((int) (i+1) < status) - { - *out++ = ','; - *out++ = ' '; - } - s1 += j1 + 1; - s2 += j2 + 1; - } - *out = 0; - - XP_FREE (names); - XP_FREE (addrs); - return result; -} - -/* Like MSG_ExtractRFC822AddressNames(), but only returns the first name - in the list, if there is more than one. - */ -extern "C" char * -MSG_ExtractRFC822AddressName (const char *line) -{ - char *name = 0; - char *addr = 0; - int status = msg_parse_rfc822_addresses(line, &name, &addr, FALSE, FALSE, - TRUE); - if (status <= 0) - return 0; - /* This can happen if there is an address like "From: foo bar" which - we parse as two addresses (that's a syntax error.) In that case, - we'll return just the first one (the rest is after the NULL.) - XP_ASSERT(status == 1); - */ - if (name && *name) - { - FREEIF(addr); - return name; - } - else - { - FREEIF(name); - return addr; - } -} - - -static char * -msg_format_rfc822_addresses (const char *names, const char *addrs, - int count, XP_Bool wrap_lines_p) -{ - char *result, *out; - const char *s1, *s2; - uint32 i, size = 0; - uint32 column = 10; - - if (count <= 0) - return 0; - - s1 = names; - s2 = addrs; - for (i = 0; (int) i < count; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size += j1 + j2 + 10; - } - - result = (char *) XP_ALLOC (size + 1); - if (! result) return 0; - - out = result; - s1 = names; - s2 = addrs; - - for (i = 0; (int) i < count; i++) - { - char *o; - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - - if (wrap_lines_p && i > 0 && - (column + j1 + j2 + 3 + - (((int) (i+1) < count) ? 2 : 0) - > 76)) - { - if (out > result && out[-1] == ' ') - out--; - *out++ = CR; - *out++ = LF; - *out++ = '\t'; - column = 8; - } - - o = out; - - if (j1) - { - XP_MEMCPY (out, s1, j1); - out += j1; - *out++ = ' '; - *out++ = '<'; - } - XP_MEMCPY (out, s2, j2); - out += j2; - if (j1) - *out++ = '>'; - - if ((int) (i+1) < count) - { - *out++ = ','; - *out++ = ' '; - } - s1 += j1 + 1; - s2 += j2 + 1; - - column += (out - o); - } - *out = 0; - return result; -} - -/* Given a string which contains a list of RFC822 addresses, returns a new - string with the same data, but inserts missing commas, parses and reformats - it, and wraps long lines with newline-tab. - */ -extern "C" char * -MSG_ReformatRFC822Addresses (const char *line) -{ - char *names = 0; - char *addrs = 0; - char *result; - int status = MSG_ParseRFC822Addresses (line, &names, &addrs); - if (status <= 0) - return 0; - result = msg_format_rfc822_addresses (names, addrs, status, TRUE); - XP_FREE (names); - XP_FREE (addrs); - return result; -} - -/* Returns a copy of ADDRS which may have had some addresses removed. - Addresses are removed if they are already in either ADDRS or OTHER_ADDRS. - (If OTHER_ADDRS contain addresses which are not in ADDRS, they are not - added. That argument is for passing in addresses that were already - mentioned in other header fields.) - - Addresses are considered to be the same if they contain the same mailbox - part (case-insensitive.) Real names and other comments are not compared. - - removeAliasesToMe allows the address parser to use the preference which - contains regular expressions which also mean 'me' for the purpose of - stripping the user's email address(es) out of addrs - */ -extern "C" char * -MSG_RemoveDuplicateAddresses (const char *addrs, - const char *other_addrs, - XP_Bool removeAliasesToMe) -{ - /* This is probably way more complicated than it should be... */ - char *s1 = 0, *s2 = 0; - char *output = 0, *out = 0; - char *result = 0; - int count1 = 0, count2 = 0, count3 = 0; - int size1 = 0, size2 = 0, size3 = 0; - char *names1 = 0, *names2 = 0; - char *addrs1 = 0, *addrs2 = 0; - char **a_array1 = 0, **a_array2 = 0, **a_array3 = 0; - char **n_array1 = 0, **n_array3 = 0; - int i, j; - - if (!addrs) return 0; - - count1 = MSG_ParseRFC822Addresses (addrs, &names1, &addrs1); - if (count1 < 0) goto FAIL; - if (count1 == 0) - { - result = XP_STRDUP(""); - goto FAIL; - } - if (other_addrs) - count2 = MSG_ParseRFC822Addresses (other_addrs, &names2, &addrs2); - if (count2 < 0) goto FAIL; - - s1 = names1; - s2 = addrs1; - for (i = 0; i < count1; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size1 += j1 + j2 + 10; - } - - s1 = names2; - s2 = addrs2; - for (i = 0; i < count2; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size2 += j1 + j2 + 10; - } - - a_array1 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!a_array1) goto FAIL; - n_array1 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!n_array1) goto FAIL; - - if (count2 > 0) - { - a_array2 = (char **) XP_ALLOC (count2 * sizeof(char *)); - if (!a_array2) goto FAIL; - /* don't need an n_array2 */ - } - - a_array3 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!a_array3) goto FAIL; - n_array3 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!n_array3) goto FAIL; - - - /* fill in the input arrays */ - s1 = names1; - s2 = addrs1; - for (i = 0; i < count1; i++) - { - n_array1[i] = s1; - a_array1[i] = s2; - s1 += XP_STRLEN (s1) + 1; - s2 += XP_STRLEN (s2) + 1; - } - - s2 = addrs2; - for (i = 0; i < count2; i++) - { - a_array2[i] = s2; - s2 += XP_STRLEN (s2) + 1; - } - - /* Iterate over all addrs in the "1" arrays. - If those addrs are not present in "3" or "2", add them to "3". - */ - for (i = 0; i < count1; i++) /* iterate over all addrs */ - { - XP_Bool found = FALSE; - for (j = 0; j < count2; j++) - if (!strcasecomp (a_array1[i], a_array2[j])) - { - found = TRUE; - break; - } - - if (!found) - for (j = 0; j < count3; j++) - if (!strcasecomp (a_array1[i], a_array3[j])) - { - found = TRUE; - break; - } - - if (!found && removeAliasesToMe) - { - found = MSG_Prefs::IsEmailAddressAnAliasForMe (a_array1[i]); - if (found) - break; - } - - if (!found) - { - n_array3[count3] = n_array1[i]; - a_array3[count3] = a_array1[i]; - size3 += (XP_STRLEN(n_array3[count3]) + XP_STRLEN(a_array3[count3]) - + 10); - count3++; - XP_ASSERT (count3 <= count1); - if (count3 > count1) break; - } - } - - output = (char *) XP_ALLOC (size3 + 1); - if (!output) goto FAIL; - - *output = 0; - out = output; - s2 = output; - for (i = 0; i < count3; i++) - { - XP_STRCPY (out, a_array3[i]); - out += XP_STRLEN (out); - *out++ = 0; - } - s1 = out; - for (i = 0; i < count3; i++) - { - XP_STRCPY (out, n_array3[i]); - out += XP_STRLEN (out); - *out++ = 0; - } - result = msg_format_rfc822_addresses (s1, s2, count3, FALSE); - - FAIL: - FREEIF (a_array1); - FREEIF (a_array2); - FREEIF (a_array3); - FREEIF (n_array1); - FREEIF (n_array3); - FREEIF (names1); - FREEIF (names2); - FREEIF (addrs1); - FREEIF (addrs2); - FREEIF (output); - return result; -} - - -/* Given an e-mail address and a person's name, cons them together into a - single string of the form "name <address>", doing all the necessary quoting. - A new string is returned, which you must free when you're done with it. - */ -extern "C" char * -MSG_MakeFullAddress (const char* name, const char* addr) -{ - int nl = name ? XP_STRLEN (name) : 0; - int al = addr ? XP_STRLEN (addr) : 0; - char *buf, *s; - int L; - if (al == 0) - return 0; - buf = (char *) XP_ALLOC ((nl * 2) + (al * 2) + 20); - if (!buf) - return 0; - if (nl > 0) - { - XP_STRCPY (buf, name); - L = msg_quote_phrase_or_addr (buf, nl, FALSE); - s = buf + L; - *s++ = ' '; - *s++ = '<'; - } - else - { - s = buf; - } - - XP_STRCPY (s, addr); - L = msg_quote_phrase_or_addr (s, al, TRUE); - s += L; - if (nl > 0) - *s++ = '>'; - *s = 0; - L = (s - buf) + 1; - buf = (char *) XP_REALLOC (buf, L); - return buf; -} - -#if 0 -main (int argc, char **argv) -{ - fprintf (stderr, "%s\n", - MSG_RemoveDuplicateAddresses (argv[1], argv[2], FALSE)); -} -#endif - - -#if 0 -main (int argc, char **argv) -{ - fprintf (stderr, "%s\n", MSG_MakeFullAddress (argv[1], argv[2])); -} -#endif - - -#if 0 -/* Test cases for the above routines. - */ -static void -test1 (const char *line, XP_Bool np, XP_Bool ap, - uint32 expect_count, const char *expect_n, const char *expect_a) -{ - char *names = 0, *addrs = 0; - int result; - if (! np) expect_n = 0; - if (! ap) expect_a = 0; - result = MSG_ParseRFC822Addresses (line, - (np ? &names : 0), - (ap ? &addrs : 0)); - if (result <= 0) - printf (" #### error %d\n", result); - else - { - uint32 i; - char *n = names, *a = addrs; - if (expect_count != result) - printf (" #### wrong number of results (%d instead of %d)\n", - (int) result, (int) expect_count); - for (i = 0; i < result; i++) - { - if (((!!n) != (!!expect_n)) || - (n && XP_STRCMP (n, expect_n))) - { - printf (" ####### name got: %s\n" - " #### name wanted: %s\n", - (n ? n : "<NULL>"), - (expect_n ? expect_n : "<NULL>")); - } - if (((!!a) != (!!expect_a)) || - (a && XP_STRCMP (a, expect_a))) - { - printf (" ####### addr got: %s\n" - " #### addr wanted: %s\n", - (a ? a : "<NULL>"), - (expect_a ? expect_a : "<NULL>")); - } - if (n) n += XP_STRLEN (n) + 1; - if (a) a += XP_STRLEN (a) + 1; - if (expect_n) expect_n += XP_STRLEN (expect_n) + 1; - if (expect_a) expect_a += XP_STRLEN (expect_a) + 1; - } - } - FREEIF (names); - FREEIF (addrs); -} - -static void -test (const char *line, uint32 expect_n, - const char *expect_names, const char *expect_addrs, - const char *expect_all_names, const char *expect_all_addrs, - const char *canonical) -{ - char *s; - printf ("testing %s\n", line); - test1 (line, TRUE, TRUE, expect_n, expect_names, expect_addrs); - test1 (line, TRUE, FALSE, expect_n, expect_names, expect_addrs); - test1 (line, FALSE, TRUE, expect_n, expect_names, expect_addrs); - test1 (line, FALSE, FALSE, expect_n, expect_names, expect_addrs); - - s = MSG_ExtractRFC822AddressMailboxes (line); - if (!s || XP_STRCMP (s, expect_all_addrs)) - printf (" #### expected addrs: %s\n" - " ######### got addrs: %s\n", - expect_all_addrs, (s ? s : "<NULL>")); - FREEIF (s); - - s = MSG_ExtractRFC822AddressNames (line); - if (!s || XP_STRCMP (s, expect_all_names)) - printf (" #### expected names: %s\n" - " ######### got names: %s\n", - expect_all_names, (s ? s : "<NULL>")); - FREEIF (s); - - s = MSG_ReformatRFC822Addresses (line); - if (!s || XP_STRCMP (s, canonical)) - printf (" #### expected canonical: %s\n" - " ######### got canonical: %s\n", - canonical, (s ? s : "<NULL>")); - FREEIF (s); -} - - -void -main () -{ - test ("spanky", - 1, "", "spanky", - "spanky", "spanky", - "spanky"); - - test ("<spanky>", - 1, "", "spanky", - "spanky", "spanky", - "spanky"); - - test ("< spanky> ", - 1, "", "spanky", - "spanky", "spanky", - "spanky"); - - test ("Simple Case <simple1>", - 1, - "Simple Case", "simple1", - "Simple Case", "simple1", - "Simple Case <simple1>"); - - test (" Simple Case < simple1 > ", - 1, - "Simple Case", "simple1", - "Simple Case", "simple1", - "Simple Case <simple1>"); - - test ("simple2 (Simple Case)", - 1, - "Simple Case", "simple2", - "Simple Case", "simple2", - "Simple Case <simple2>"); - - test ("simple3 (Slightly) (Trickier)", - 1, - "Slightly Trickier", "simple3", - "Slightly Trickier", "simple3", - "Slightly Trickier <simple3>"); - - test ("(Slightly) simple3 (Trickier)", - 1, - "Slightly Trickier", "simple3", - "Slightly Trickier", "simple3", - "Slightly Trickier <simple3>"); - - test ("( Slightly ) simple3 ( Trickier ) ", - 1, - "Slightly Trickier", "simple3", - "Slightly Trickier", "simple3", - "Slightly Trickier <simple3>"); - - test ("(Even) more <trickier> (Trickier\\, I say)", - 1, - "\"(Even) more (Trickier, I say)\"", "trickier", - "(Even) more (Trickier, I say)", "trickier", - "\"(Even) more (Trickier, I say)\" <trickier>"); - - test ("\"this, is\" <\"some loser\"@address> (foo)", - 1, - "\"this, is (foo)\"", "\"some loser\"@address", - "this, is (foo)", "\"some loser\"@address", - "\"this, is (foo)\" <\"some loser\"@address>"); - - test ("foo, bar", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("<foo>, <bar>", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("< foo > , < bar > ", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("< foo > , , , ,,,,, , < bar > ,", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("\"this, is\" <\"some loser\"@address> (foo), <bar>", - 2, - "\"this, is (foo)\"" "\000" "", - "\"some loser\"@address" "\000" "bar", - "this, is (foo), bar", - "\"some loser\"@address, bar", - "\"this, is (foo)\" <\"some loser\"@address>, bar"); - - test ("\"this, is\" <some\\ loser@address> (foo), bar", - 2, - "\"this, is (foo)\"" "\000" "", - "\"some loser\"@address" "\000" "bar", - "this, is (foo), bar", - "\"some loser\"@address, bar", - "\"this, is (foo)\" <\"some loser\"@address>, bar"); - - test ("(I'm a (total) loser) \"space address\"", - 1, - "\"I'm a (total) loser\"", "\"space address\"", - "I'm a (total) loser", "\"space address\"", - "\"I'm a (total) loser\" <\"space address\">"); - - test ("(I'm a (total) loser) \"space address\"@host", - 1, - "\"I'm a (total) loser\"", "\"space address\"@host", - "I'm a (total) loser", "\"space address\"@host", - "\"I'm a (total) loser\" <\"space address\"@host>"); - - test ("It\\'s \"me\" <address>, I'm a (total) loser <\"space address\">", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space address\"", - "It's me, I'm a (total) loser", - "address, \"space address\"", - "It's me <address>, \"I'm a (total) loser\" <\"space address\">"); - - test("It\\'s \"me\" <address>, I'm a (total) loser <\"space address\"@host>", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space address\"@host", - "It's me, I'm a (total) loser", - "address, \"space address\"@host", - "It's me <address>, \"I'm a (total) loser\" <\"space address\"@host>"); - - test ("(It\\'s \"me\") address, (I'm a (total) loser) \"space address\"", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space address\"", - "It's me, I'm a (total) loser", - "address, \"space address\"", - "It's me <address>, \"I'm a (total) loser\" <\"space address\">"); - - test ("(It\\'s \"me\") address, (I'm a (total) loser) \"space \\\"address\"", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space \\\"address\"", - "It's me, I'm a (total) loser", - "address, \"space \\\"address\"", - "It's me <address>, \"I'm a (total) loser\" <\"space \\\"address\">"); - - test ("(It\\'s \"me\") address, (I'm a (total) loser) \"space @address\"@host", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space @address\"@host", - "It's me, I'm a (total) loser", - "address, \"space @address\"@host", - "It's me <address>, \"I'm a (total) loser\" <\"space @address\"@host>"); - - test ("Probably Bogus <some@loser@somewhere>", - 1, - "Probably Bogus", - "\"some@loser\"@somewhere", - "Probably Bogus", - "\"some@loser\"@somewhere", - "Probably Bogus <\"some@loser\"@somewhere>"); - - test ("Probably Bogus <\"some$loser,666\"@somewhere>", - 1, - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus <\"some$loser,666\"@somewhere>"); - - test ("Probably Bogus <\"some$loser,666\"@somewhere>", - 1, - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus <\"some$loser,666\"@somewhere>"); - - test ("\"Probably Bogus, Jr.\" <\"some$loser,666\"@somewhere>", - 1, - "\"Probably Bogus, Jr.\"", - "\"some$loser,666\"@somewhere", - "Probably Bogus, Jr.", - "\"some$loser,666\"@somewhere", - "\"Probably Bogus, Jr.\" <\"some$loser,666\"@somewhere>"); - - test ("Probably Bogus\\, Jr. <\"some$loser,666\"@somewhere>", - 1, - "\"Probably Bogus, Jr.\"", - "\"some$loser,666\"@somewhere", - "Probably Bogus, Jr.", - "\"some$loser,666\"@somewhere", - "\"Probably Bogus, Jr.\" <\"some$loser,666\"@somewhere>"); - - test ("This isn't legal <some$loser,666@somewhere>", - 1, - "This isn't legal", "\"some$loser,666\"@somewhere", - "This isn't legal", "\"some$loser,666\"@somewhere", - "This isn't legal <\"some$loser,666\"@somewhere>"); - - test ("This isn't legal!! <some$loser,666@somewhere>", - 1, - "\"This isn't legal!!\"", "\"some$loser,666\"@somewhere", - "This isn't legal!!", "\"some$loser,666\"@somewhere", - "\"This isn't legal!!\" <\"some$loser,666\"@somewhere>"); - - test ("addr1, addr2, \n\taddr3", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test ("addr1 addr2 addr3", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test (" addr1 addr2 addr3 ,,,,,, ", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test ("addr1, addr2 \n\t addr3", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test ("addr1, addr2, addr3 addr4, <addr5>, (and) addr6 (yeah)", - 6, - "" "\000" "" "\000" "" "\000" "" "\000" "" - "\000" "and yeah", - "addr1" "\000" "addr2" "\000" "addr3" "\000" "addr4" "\000" "addr5" - "\000" "addr6", - "addr1, addr2, addr3, addr4, addr5, and yeah", - "addr1, addr2, addr3, addr4, addr5, addr6", - "addr1, addr2, addr3, addr4, addr5, and yeah <addr6>"); - - test ("addr1 (and some (nested) parens), addr2 <and unbalanced mbox", - 2, - "\"and some (nested) parens\"" "\000" "", - "addr1" "\000" "addr2", - "and some (nested) parens, addr2", - "addr1, addr2", - "\"and some (nested) parens\" <addr1>, addr2"); - - test ("addr1))) ((()))()()()()()()())), addr2 addr3, addr4 (foo, bar)", - 4, - "\"(())\"" "\000" "" "\000" "" "\000" "\"foo, bar\"", - "\"addr1))) ))\"" "\000" "addr2" "\000" "addr3" "\000" "addr4", - "(()), addr2, addr3, foo, bar", - "\"addr1))) ))\", addr2, addr3, addr4", - "\"(())\" <\"addr1))) ))\">, addr2, addr3, \"foo, bar\" <addr4>"); - - test ("avec le quoted quotes <\"a \\\" quote\">", - 1, - "avec le quoted quotes", "\"a \\\" quote\"", - "avec le quoted quotes", "\"a \\\" quote\"", - "avec le quoted quotes <\"a \\\" quote\">"); - - test ("avec le quoted quotes <\"a \\\" quote\"@host>", - 1, - "avec le quoted quotes", "\"a \\\" quote\"@host", - "avec le quoted quotes", "\"a \\\" quote\"@host", - "avec le quoted quotes <\"a \\\" quote\"@host>"); - - /* bang paths work, right? */ - test ("nelsonb <abit.com!nelsonb@netscape.com>", - 1, - "nelsonb", "abit.com!nelsonb@netscape.com", - "nelsonb", "abit.com!nelsonb@netscape.com", - "nelsonb <abit.com!nelsonb@netscape.com>"); - -# if 0 /* these tests don't pass, but should. */ - - /* a perverse example from RFC822: */ - test ("Muhammed.(I am the greatest) Ali @(the)Vegas.WBA", - 1, - "I am the greatest", "Muhammed.Ali@Vegas.WBA", - "I am the greatest", "Muhammed.Ali@Vegas.WBA", - "I am the greatest <Muhammed.Ali@Vegas.WBA>"); - - /* Oops, this should work but doesn't. */ - test ("nelsonb <@abit.com.tw:nelsonb@netscape.com>", - 1, - "nelsonb", "@abit.com.tw:nelsonb@netscape.com", - "nelsonb", "@abit.com.tw:nelsonb@netscape.com", - "nelsonb <@abit.com.tw:nelsonb@netscape.com>"); - - test ("(Sat43Jan@cyberpromo.com) <Ronald.F.Guilmette#$&'*+-/=?^_`|~@monkeys.com> ((#$&'*+-/=?^_`|~)) ((\\)))", - 1, - "(Sat43Jan@cyberpromo.com)", "\"Ronald.F.Guilmette#$&'*+-/=?^_`|~\"@monkeys.com", - "(Sat43Jan@cyberpromo.com)", "\"Ronald.F.Guilmette#$&'*+-/=?^_`|~\"@monkeys.com", - "(Sat43Jan@cyberpromo.com) <\"Ronald.F.Guilmette#$&'*+-/=?^_`|~\"@monkeys.com>"); - - /* Intentionally fail this one */ - test("my . name @ my . host . com", - 1, - "", "my.name@my.host.com", - "", "my.name@my.host.com", - "<my.name@my.host.com>"); - - /* but this one should work */ - test("loser < my . name @ my . host . com > ", - 1, - "loser", "my.name@my.host.com", - "loser", "my.name@my.host.com", - "loser <my.name@my.host.com>"); - - test("my(@).(@)name(<)@(>)my(:).(;)host(((\\)))).(@)com", - 1, - "@", "my.name@my.host.com", - "@", "my.name@my.host.com", - "\"@\" <my.name@my.host.com>"); - -# endif /* 0 */ - - exit (0); -} -#endif /* 0 */ diff --git a/mozilla/lib/libmsg/ap_decod.c b/mozilla/lib/libmsg/ap_decod.c deleted file mode 100644 index 7ff0a3f46d5..00000000000 --- a/mozilla/lib/libmsg/ap_decod.c +++ /dev/null @@ -1,1780 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - * - * apple_double_decode.c - * - * --------------------- - * - * Codes for decoding Apple Single/Double object parts. - * - * 05aug95 mym Created. - * 25sep95 mym Add support to write to binhex encoding on non-mac system. - */ - -#include "msg.h" -#include "appledbl.h" -#include "ad_codes.h" -#include "m_binhex.h" -#ifdef XP_MAC -#include <StandardFile.h> -#endif - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; -extern int MK_MIME_ERROR_WRITING_FILE; - -/* -** Static functions. -*/ -PRIVATE int from_decoder(appledouble_decode_object* p_ap_decode_obj, - char *buff, - int buff_size, - uint32 *in_count); -PRIVATE int from_64(appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size); -PRIVATE int from_qp(appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size); -PRIVATE int from_uu(appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size); -PRIVATE int from_none(appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size); - -PRIVATE int decoder_seek(appledouble_decode_object* p_ap_decode_obj, - int seek_pos, - int start_pos); - -/* -** fetch_a_line -** ------------- -** -** get a line from the in stream.. -*/ -int fetch_a_line( - appledouble_decode_object* p_ap_decode_obj, - char *buff) -{ - int i, left; - char *p, c = 0; - - if (p_ap_decode_obj->s_leftover == 0 && - p_ap_decode_obj->s_inbuff <= p_ap_decode_obj->pos_inbuff) - { - *buff = '\0'; - return errEOB; - } - - if (p_ap_decode_obj->s_leftover) - { - for (p = p_ap_decode_obj->b_leftover, i = p_ap_decode_obj->s_leftover; i>0; i--) - *buff++ = *p++; - - p_ap_decode_obj->s_leftover = 0; - } - - p = p_ap_decode_obj->inbuff + p_ap_decode_obj->pos_inbuff; - left = p_ap_decode_obj->s_inbuff - p_ap_decode_obj->pos_inbuff; - - for (i = 0; i < left; ) - { - c = *p++; i++; - - if (c == CR && *p == LF) - { - p++; i++; /* make sure skip both LF & CR */ - } - - if (c == LF || c == CR) - break; - - *buff++ = c; - } - p_ap_decode_obj->pos_inbuff += i; - - if (i == left && c != LF && c != CR) - { - /* - ** we meet the buff end before we can terminate the string, - ** save the string to the left_over buff. - */ - p_ap_decode_obj->s_leftover = i; - - for (p = p_ap_decode_obj->b_leftover; i>0; i--) - *p++ = *(buff-i); - - return errEOB; - } - *buff = '\0'; - return NOERR; -} - -void parse_param( - char *p, - char **param, /* the param */ - char **define, /* the defination. */ - char **np) /* next position. */ -{ - while (*p == ' ' || *p == '\"' || *p == ';') p++; - *param = p; - - while (*p != ' ' && *p != '=' ) p++; - if (*p == ' ') - *define = p+1; - else - *define = p+2; - - while (*p && *p != ';') p++; - - if (*p == ';') - *np = p + 1; - else - *np = p; -} - -int ap_seek_part_start( - appledouble_decode_object* p_ap_decode_obj) -{ - int status; - char newline[256]; - - while (1) - { - status = fetch_a_line(p_ap_decode_obj, newline); - if(status != NOERR) - break; - - if (newline[0] == '\0' && p_ap_decode_obj->boundary0 != NULL) - return errDone; - - if (!XP_STRNCASECMP(newline, "--", 2)) - { - /* we meet the start seperator, copy it and it will be our boundary */ - p_ap_decode_obj->boundary0 = XP_STRDUP(newline+2); - return errDone; - } - } - return status; -} - -int ParseFileHeader( - appledouble_decode_object *p_ap_decode_obj) -{ - int status; - int i; - char newline[256], *p; - char *param, *define; - - while (1) - { - status = fetch_a_line(p_ap_decode_obj, newline); - if (newline[0] == '\0') - break; /* we get the end of a defination section. */ - - p = newline; - while (1) - { - parse_param(p, &param, &define, &p); - /* - ** we only care about these params. - */ - if (!XP_STRNCASECMP(param, "Content-Type:", 13)) - { - if (!XP_STRNCASECMP(define, MULTIPART_APPLEDOUBLE, - XP_STRLEN(MULTIPART_APPLEDOUBLE)) || - !XP_STRNCASECMP(define, MULTIPART_HEADER_SET, - XP_STRLEN(MULTIPART_HEADER_SET))) - p_ap_decode_obj->messagetype = kAppleDouble; - else - p_ap_decode_obj->messagetype = kGeneralMine; - } - else if (!XP_STRNCASECMP(param, "boundary=", 9)) - { - for (i = 0; *define && *define != '\"'; ) - p_ap_decode_obj->boundary0[i++] = *define++; - - p_ap_decode_obj->boundary0[i] = '\0'; - } - else if (!XP_STRNCASECMP(param, "Content-Disposition:", 20)) - { - if (!XP_STRNCASECMP(define, "inline", 5)) - p_ap_decode_obj->deposition = kInline; - else - p_ap_decode_obj->deposition = kDontCare; - } - else if (!XP_STRNCASECMP(param, "filename=", 9)) - { - for (i = 0, p=define; *p && *p != '\"'; ) - p_ap_decode_obj->fname[i++] = *p++; - - p_ap_decode_obj->fname[i] = '\0'; - } - - if (*p == '\0') - break; - } - } - - return NOERR; -} - -int ap_seek_to_boundary( - appledouble_decode_object *p_ap_decode_obj, - XP_Bool firstime) -{ - int status = NOERR; - char buff[256]; - - while (status == NOERR) - { - status = fetch_a_line(p_ap_decode_obj, buff); - if (status != NOERR) - break; - - if ((!XP_STRNCASECMP(buff, "--", 2) && - !XP_STRNCASECMP( buff+2, - p_ap_decode_obj->boundary0, - XP_STRLEN(p_ap_decode_obj->boundary0))) - ||!XP_STRNCASECMP( buff, - p_ap_decode_obj->boundary0, - XP_STRLEN(p_ap_decode_obj->boundary0))) - { - TRACEMSG(("Found boundary: %s", p_ap_decode_obj->boundary0)); - status = errDone; - break; - } - } - - if (firstime && status == errEOB) - status = NOERR; /* so we can do it again. */ - - return status; -} - -int ap_parse_header( - appledouble_decode_object *p_ap_decode_obj, - XP_Bool firstime) -{ - int status, i; - char newline[256], *p; - char *param, *define; - - if (firstime) - { - /* do the clean ups. */ - p_ap_decode_obj->encoding = kEncodeNone; - p_ap_decode_obj->which_part = kFinishing; - } - - while (1) - { - status = fetch_a_line(p_ap_decode_obj, newline); - if (status != NOERR) - return status; /* a possible end of buff happened. */ - - if (newline[0] == '\0') - break; /* we get the end of a defination section. */ - - p = newline; - while (1) - { - parse_param(p, &param, &define, &p); - /* - ** we only care about these params. - */ - if (!XP_STRNCASECMP(param, "Content-Type:", 13)) - { - if (!XP_STRNCASECMP(define, "application/applefile", 21)) - p_ap_decode_obj->which_part = kHeaderPortion; - else - { - p_ap_decode_obj->which_part = kDataPortion; - if (!XP_STRNCASECMP(define, "text/plain", 10)) - p_ap_decode_obj->is_binary = FALSE; - else - p_ap_decode_obj->is_binary = TRUE; - } - - /* Broken QuickMail messages */ - if (!XP_STRNCASECMP(define, "x-uuencode-apple-single", 23)) - p_ap_decode_obj->encoding = kEncodeUU; - } - else if (!XP_STRNCASECMP(param, "Content-Transfer-Encoding:",26)) - { - if (!XP_STRNCASECMP(define, "base64", 6)) - p_ap_decode_obj->encoding = kEncodeBase64; - else if (!XP_STRNCASECMP(define, "quoted-printable", 16)) - p_ap_decode_obj->encoding = kEncodeQP; - else - p_ap_decode_obj->encoding = kEncodeNone; - } - else if (!XP_STRNCASECMP(param, "Content-Disposition:", 20)) - { - if (!XP_STRNCASECMP(define, "inline", 5)) - p_ap_decode_obj->deposition = kInline; - else - p_ap_decode_obj->deposition = kDontCare; - } - else if (!XP_STRNCASECMP(param, "filename=", 9)) - { - if (p_ap_decode_obj->fname[0] == '\0') - { - for (i = 0; *define && *define != '\"'; ) - p_ap_decode_obj->fname[i++] = *define++; - - p_ap_decode_obj->fname[i] = '\0'; - } - } - - if (*p == '\0') - break; - } - } - return errDone; -} - - -/* -** decode the head portion. -*/ - - -int ap_decode_file_infor(appledouble_decode_object *p_ap_decode_obj) -{ - ap_header head; - ap_entry entries[NUM_ENTRIES + 1]; - int i, j; - int st_pt; - uint32 in_count; - int status; - char name[256]; - XP_Bool positionedAtRFork = FALSE; - - st_pt = p_ap_decode_obj->pos_inbuff; - - /* - ** Read & verify header - */ - status = from_decoder( - p_ap_decode_obj, - (char *) &head, - 26, /* sizeof (head), */ - &in_count); - if (status != NOERR) - return status; - - if (p_ap_decode_obj->is_apple_single) - { - if (ntohl(head.magic) != APPLESINGLE_MAGIC) - return errVersion; - } - else - { - if(ntohl(head.magic) != APPLEDOUBLE_MAGIC) - return errVersion; - } - - if (ntohl(head.version) != VERSION) - { - return errVersion; - } - - /* read entries */ - head.entries = ntohs(head.entries); - for (i = j = 0; i < head.entries; ++i) - { - status = from_decoder( - p_ap_decode_obj, - (char *) (entries + j), - sizeof (ap_entry), - &in_count); - if (status != NOERR) - return errDecoding; - - /* - ** correct the byte order now. - */ - entries[j].id = ntohl(entries[j].id); - entries[j].offset = ntohl(entries[j].offset); - entries[j].length = ntohl(entries[j].length); - /* - ** only care about these entries... - */ - if (j < NUM_ENTRIES) - switch (entries[j].id) - { - case ENT_NAME: - case ENT_FINFO: - case ENT_DATES: - case ENT_COMMENT: - case ENT_RFORK: - case ENT_DFORK: - ++j; - break; - } - } - - in_count = XP_STRLEN(p_ap_decode_obj->fname); - - /* if the user has not provided the output file name, read it - * from the ENT_NAME entry - */ - - if (in_count == 0) - { - /* read name */ - for (i = 0; i < j && entries[i].id != ENT_NAME; ++i) - ; - if (i == j) - return errDecoding; - - status = decoder_seek( - p_ap_decode_obj, - entries[i].offset, - st_pt); - if (status != NOERR) - return status; - - if (entries[i].length > 63) - entries[i].length = 63; - - status = from_decoder( - p_ap_decode_obj, - p_ap_decode_obj->fname, - entries[i].length, - &in_count); - if (status != NOERR) - return status; - - p_ap_decode_obj->fname[in_count] = '\0'; - } - - /* P_String version of the file name. */ - XP_STRCPY((char *)name+1, p_ap_decode_obj->fname); - name[0] = (char) in_count; - - if (p_ap_decode_obj->write_as_binhex) - { - /* - ** fill out the simple the binhex head. - */ - binhex_header head; - myFInfo myFInfo; - - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - name, - name[0] + 2); - if (status != NOERR) - return status; - - /* get finder info */ - for (i = 0; i < j && entries[i].id != ENT_FINFO; ++i) - ; - if (i < j) - { - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - if (status != NOERR) - return status; - - status = from_decoder(p_ap_decode_obj, - (char *) &myFInfo, - sizeof (myFInfo), - &in_count); - if (status != NOERR) - return status; - } - - head.type = myFInfo.fdType; - head.creator = myFInfo.fdCreator; - head.flags = myFInfo.fdFlags; - - for (i = 0; i < j && entries[i].id != ENT_DFORK; ++i) - ; - if (i < j && entries[i].length != 0) - { - head.dlen = entries[i].length; /* set the data fork length */ - } - else - { - head.dlen = 0; - } - - for (i = 0; i < j && entries[i].id != ENT_RFORK; ++i) - ; - if (i < j && entries[i].length != 0) - { - head.rlen = entries[i].length; /* set the resource fork length */ - } - else - { - head.rlen = 0; - } - - /* - ** and the dlen, rlen is in the host byte order, correct it if needed ... - */ - head.dlen = htonl(head.dlen); - head.rlen = htonl(head.rlen); - /* - ** then encode them in binhex. - */ - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - (char*)&head, - sizeof(binhex_header)); - if (status != NOERR) - return status; - - /* - ** after we have done with the header, end the binhex header part. - */ - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - NULL, - 0); - } - else - { - -#ifdef XP_MAC - - ap_dates dates; - HFileInfo *fpb; - CInfoPBRec cipbr; - IOParam vinfo; - GetVolParmsInfoBuffer vp; - DTPBRec dtp; - char comment[256]; - - unsigned char filename[256]; /* this is a pascal string - should be unsigned char. */ - StandardFileReply reply; - - /* convert char* p_ap_decode_obj->fname to a pascal string */ - XP_STRCPY((char*)filename + 1, p_ap_decode_obj->fname); - filename[0] = XP_STRLEN(p_ap_decode_obj->fname); - - if( !p_ap_decode_obj->mSpec ) - { - StandardPutFile("\pSave decoded file as:", - (const unsigned char*)filename, - &reply); - - if (!reply.sfGood) - { - return errUsrCancel; - } - } - else - { - reply.sfFile.vRefNum = p_ap_decode_obj->mSpec->vRefNum; - reply.sfFile.parID = p_ap_decode_obj->mSpec->parID; - XP_MEMCPY(&reply.sfFile.name, p_ap_decode_obj->mSpec->name , 63 ); - } - - XP_MEMCPY(p_ap_decode_obj->fname, - reply.sfFile.name+1, - *(reply.sfFile.name)+1); - p_ap_decode_obj->fname[*(reply.sfFile.name)] = '\0'; - - p_ap_decode_obj->vRefNum = reply.sfFile.vRefNum; - p_ap_decode_obj->dirId = reply.sfFile.parID; - - /* create & get info for file */ - HDelete(reply.sfFile.vRefNum, - reply.sfFile.parID, - reply.sfFile.name); - -#define DONT_CARE_TYPE 0x3f3f3f3f - - if (HCreate(reply.sfFile.vRefNum, - reply.sfFile.parID, - reply.sfFile.name, - DONT_CARE_TYPE, - DONT_CARE_TYPE) != NOERR) - { - return errFileOpen; - } - - fpb = (HFileInfo *) &cipbr; - fpb->ioVRefNum = reply.sfFile.vRefNum; - fpb->ioDirID = reply.sfFile.parID; - fpb->ioNamePtr = reply.sfFile.name; - fpb->ioFDirIndex = 0; - PBGetCatInfoSync(&cipbr); - - /* get finder info */ - for (i = 0; i < j && entries[i].id != ENT_FINFO; ++i) - ; - if (i < j) - { - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - if (status != NOERR) - return status; - - status = from_decoder(p_ap_decode_obj, - (char *) &fpb->ioFlFndrInfo, - sizeof (FInfo), - &in_count); - if (status != NOERR) - return status; - - status = from_decoder(p_ap_decode_obj, - (char *) &fpb->ioFlXFndrInfo, - sizeof (FXInfo), - &in_count); - - if (status != NOERR && status != errEOP ) - return status; - - fpb->ioFlFndrInfo.fdFlags &= 0xfc00; /* clear flags maintained by finder */ - } - - /* - ** get file date info - */ - for (i = 0; i < j && entries[i].id != ENT_DATES; ++i) - ; - if (i < j) - { - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - if (status != NOERR && status != errEOP ) - return status; - - status = from_decoder(p_ap_decode_obj, - (char *) &dates, - sizeof (dates), - &in_count); - if (status != NOERR) - return status; - - fpb->ioFlCrDat = dates.create - CONVERT_TIME; - fpb->ioFlMdDat = dates.modify - CONVERT_TIME; - fpb->ioFlBkDat = dates.backup - CONVERT_TIME; - } - - /* - ** update info - */ - fpb->ioDirID = fpb->ioFlParID; - PBSetCatInfoSync(&cipbr); - - /* - ** get comment & save it - */ - for (i = 0; i < j && entries[i].id != ENT_COMMENT; ++i) - ; - if (i < j && entries[i].length != 0) - { - memset((void *) &vinfo, '\0', sizeof (vinfo)); - vinfo.ioVRefNum = fpb->ioVRefNum; - vinfo.ioBuffer = (Ptr) &vp; - vinfo.ioReqCount = sizeof (vp); - if (PBHGetVolParmsSync((HParmBlkPtr) &vinfo) == NOERR && - ((vp.vMAttrib >> bHasDesktopMgr) & 1)) - { - memset((void *) &dtp, '\0', sizeof (dtp)); - dtp.ioVRefNum = fpb->ioVRefNum; - if (PBDTGetPath(&dtp) == NOERR) - { - if (entries[i].length > 255) - entries[i].length = 255; - - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - if (status != NOERR) - return status; - - status = from_decoder(p_ap_decode_obj, - comment, - entries[i].length, - &in_count); - if (status != NOERR) - return status; - - dtp.ioDTBuffer = (Ptr) comment; - dtp.ioNamePtr = fpb->ioNamePtr; - dtp.ioDirID = fpb->ioDirID; - dtp.ioDTReqCount = entries[i].length; - if (PBDTSetCommentSync(&dtp) == NOERR) - { - PBDTFlushSync(&dtp); - } - } - } - } - -#else - /* - ** in non-mac system, creating a data fork file will be it. - */ -#endif - } - - /* - ** Get the size of the resource fork, and (maybe) position to the beginning of it. - */ - for (i = 0; i < j && entries[i].id != ENT_RFORK; ++i) - ; - if (i < j && entries[i].length != 0) - { -#ifdef XP_MAC - /* Seek to the start of the resource fork only if we're on a Mac */ - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - positionedAtRFork = TRUE; -#endif - p_ap_decode_obj->rksize = entries[i].length; - } - else - p_ap_decode_obj->rksize = 0; - - /* - ** Get the size of the data fork, and (maybe) position to the beginning of it. - */ - for (i = 0; i < j && entries[i].id != ENT_DFORK; ++i) - ; - if (i < j && entries[i].length != 0) - { - if (p_ap_decode_obj->is_apple_single && !positionedAtRFork) - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - p_ap_decode_obj->dksize = entries[i].length; - } - else - p_ap_decode_obj->dksize = 0; - - /* - ** Prepare a tempfile to hold the resource fork decoded by the decoder, - ** because in binhex, resource fork appears after the data fork!!! - */ - if (p_ap_decode_obj->write_as_binhex) - { - if (p_ap_decode_obj->rksize != 0) - { - /* we need a temp file to hold all the resource data, because the */ - p_ap_decode_obj->tmpfname - = WH_TempName(xpTemporary, "apmail"); - - p_ap_decode_obj->tmpfd - = XP_FileOpen(p_ap_decode_obj->tmpfname, - xpTemporary, - XP_FILE_TRUNCATE_BIN); - - if (p_ap_decode_obj->tmpfd == NULL) - return errFileOpen; - } - } - return NOERR; -} - -/* -** ap_decode_process_header -** -** -*/ -int ap_decode_process_header( - appledouble_decode_object* p_ap_decode_obj, - XP_Bool firstime) -{ - uint32 in_count; - int status = NOERR; - char wr_buff[1024]; - - if (firstime) - { - status = ap_decode_file_infor(p_ap_decode_obj); - if (status != NOERR) - return status; - - if (p_ap_decode_obj->rksize > 0) - { -#ifdef XP_MAC - if(!p_ap_decode_obj->write_as_binhex) - { - Str63 fname; - short refNum; - - fname[0] = XP_STRLEN(p_ap_decode_obj->fname); - XP_STRCPY((char*)fname+1, p_ap_decode_obj->fname); - - if (HOpenRF(p_ap_decode_obj->vRefNum, - p_ap_decode_obj->dirId, - fname, - fsWrPerm, - &refNum) != NOERR) - { - return (errFileOpen); - } - p_ap_decode_obj->fileId = refNum; - } -#endif - } - else - { - status = errDone; - } - } - - /* - ** Time to continue decoding all the resource data. - */ - while (status == NOERR && p_ap_decode_obj->rksize > 0) - { - in_count = MIN(1024, p_ap_decode_obj->rksize); - - status = from_decoder(p_ap_decode_obj, - wr_buff, - in_count, - &in_count); - - if (p_ap_decode_obj->write_as_binhex) - { - /* - ** Write to the temp file first, because the resource fork appears after - ** the data fork in the binhex encoding. - */ - if (XP_FileWrite(wr_buff, - in_count, - p_ap_decode_obj->tmpfd) != in_count) - { - status = errFileWrite; - break; - } - p_ap_decode_obj->data_size += in_count; - } - else - { -#ifdef XP_MAC - long howMuch = in_count; - - if (FSWrite(p_ap_decode_obj->fileId, - &howMuch, - wr_buff) != NOERR) - { - status = errFileWrite; - break; - } -#else - /* ====== Write nothing in a non mac file system ============ */ -#endif - } - - p_ap_decode_obj->rksize -= in_count; - } - - if (p_ap_decode_obj->rksize <= 0 || status == errEOP) - { - if (p_ap_decode_obj->write_as_binhex) - { - /* - ** No more resource data, but we are not done - ** with tempfile yet, just seek back to the start point, - ** -- ready for a readback later - */ - if (p_ap_decode_obj->tmpfd) - XP_FileSeek(p_ap_decode_obj->tmpfd, 0L, 1); - } - -#ifdef XP_MAC - else if (p_ap_decode_obj->fileId) /* close the resource fork of the macfile */ - { - FSClose(p_ap_decode_obj->fileId); - p_ap_decode_obj->fileId = 0; - } -#endif - if (!p_ap_decode_obj->is_apple_single) - { - p_ap_decode_obj->left = 0; - p_ap_decode_obj->state64 = 0; - } - status = errDone; - } - return status; -} - -int ap_decode_process_data( - appledouble_decode_object* p_ap_decode_obj, - XP_Bool firstime) -{ - char wr_buff[1024]; - uint32 in_count; - int status = NOERR; - int retval = NOERR; - - if (firstime) - { - if (!p_ap_decode_obj->write_as_binhex) - { -#ifdef XP_MAC - char *filename; - FSSpec fspec; - - fspec.vRefNum = p_ap_decode_obj->vRefNum; - fspec.parID = p_ap_decode_obj->dirId; - fspec.name[0] = XP_STRLEN(p_ap_decode_obj->fname); - XP_STRCPY((char*)fspec.name+1, p_ap_decode_obj->fname); - - filename = my_PathnameFromFSSpec(&fspec); - if (p_ap_decode_obj->is_binary) - p_ap_decode_obj->fd = - XP_FileOpen(filename+7, xpURL, XP_FILE_TRUNCATE_BIN); - else - p_ap_decode_obj->fd = - XP_FileOpen(filename+7, xpURL, XP_FILE_TRUNCATE); - XP_FREE(filename); -#else - if (p_ap_decode_obj->is_binary) - p_ap_decode_obj->fd = - XP_FileOpen(p_ap_decode_obj->fname, xpURL, XP_FILE_TRUNCATE_BIN); - else - p_ap_decode_obj->fd = - XP_FileOpen(p_ap_decode_obj->fname, xpURL, XP_FILE_TRUNCATE); -#endif - } - else - { - ; /* == don't need do anything to binhex stream, it is ready already == */ - } - } - - if (p_ap_decode_obj->is_apple_single && - p_ap_decode_obj->dksize == 0) - { - /* if no data in apple single, we already done then. */ - status = errDone; - } - - while (status == NOERR && retval == NOERR) - { - retval = from_decoder(p_ap_decode_obj, - wr_buff, - 1024, - &in_count); - - if (p_ap_decode_obj->is_apple_single) /* we know the data fork size in */ - p_ap_decode_obj->dksize -= in_count; /* apple single, use it to decide the end */ - - if (p_ap_decode_obj->write_as_binhex) - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - wr_buff, - in_count); - else - status = XP_FileWrite(wr_buff, - in_count, - p_ap_decode_obj->fd) == in_count ? NOERR : errFileWrite; - - if (retval == errEOP || /* for apple double, we meet the boundary */ - ( p_ap_decode_obj->is_apple_single && - p_ap_decode_obj->dksize <= 0)) /* for apple single, we know it is ending */ - { - status = errDone; - break; - } - } - - if (status == errDone) - { - if (p_ap_decode_obj->write_as_binhex) - { - /* CALL with data == NULL && size == 0 to end a part object in binhex encoding */ - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - NULL, - 0); - if (status != NOERR) - return status; - } - else if (p_ap_decode_obj->fd) - { - XP_FileClose(p_ap_decode_obj->fd); - p_ap_decode_obj->fd = 0; - } - - status = errDone; - } - return status; -} - -/* -** Fill the data from the decoder stream. -*/ -PRIVATE int from_decoder( - appledouble_decode_object* p_ap_decode_obj, - char *buff, - int buff_size, - uint32 *in_count) -{ - int status; - - switch (p_ap_decode_obj->encoding) - { - case kEncodeQP: - status = from_qp(p_ap_decode_obj, - buff, - buff_size, - in_count); - break; - case kEncodeBase64: - status = from_64(p_ap_decode_obj, - buff, - buff_size, - in_count); - break; - case kEncodeUU: - status = from_uu(p_ap_decode_obj, - buff, - buff_size, - in_count); - break; - case kEncodeNone: - default: - status = from_none(p_ap_decode_obj, - buff, - buff_size, - in_count); - break; - } - return status; -} - -/* -** decoder_seek -** -** simulate a stream seeking on the encoded stream. -*/ -PRIVATE int decoder_seek( - appledouble_decode_object* p_ap_decode_obj, - int seek_pos, - int start_pos) -{ - char tmp[1024]; - int status = NOERR; - uint32 in_count; - - /* - ** force a reset on the in buffer. - */ - p_ap_decode_obj->state64 = 0; - p_ap_decode_obj->left = 0; - p_ap_decode_obj->pos_inbuff = start_pos; - p_ap_decode_obj->uu_starts_line = TRUE; - p_ap_decode_obj->uu_bytes_written = p_ap_decode_obj->uu_line_bytes = 0; - p_ap_decode_obj->uu_state = kWaitingForBegin; - - while (seek_pos > 0) - { - status = from_decoder(p_ap_decode_obj, - tmp, - MIN(1024, seek_pos), - &in_count); - if (status != NOERR) - break; - - seek_pos -= in_count; - } - return status; -} - -#define XX 127 -/* - * Table for decoding base64 - */ -static char index_64[256] = { - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,62, XX,XX,XX,63, - 52,53,54,55, 56,57,58,59, 60,61,XX,XX, XX,XX,XX,XX, - XX, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14, - 15,16,17,18, 19,20,21,22, 23,24,25,XX, XX,XX,XX,XX, - XX,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40, - 41,42,43,44, 45,46,47,48, 49,50,51,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, -}; - -#ifdef XP_OS2_HACK -/*DSR102196 - the OS/2 Visual Age compiler croaks when it tries*/ -/*to optomize this macro (/O+ on CSD4) */ -char CHAR64(int c) -{ - unsigned char index; - char rc; - - index = (unsigned char) c; - rc = index_64[index]; - return rc; -} -#else /*normal code...*/ -#define CHAR64(c) (index_64[(unsigned char)(c)]) -#endif -#define EndOfBuff(p) ((p)->pos_inbuff >= (p)->s_inbuff) - -PRIVATE int fetch_next_char_64( - appledouble_decode_object* p_ap_decode_obj) -{ - char c; - - c = p_ap_decode_obj->inbuff[p_ap_decode_obj->pos_inbuff++]; - if (c == '-') - --p_ap_decode_obj->pos_inbuff; /* put back */ - - while (c == LF || c == CR) /* skip the CR character. */ - { - if (EndOfBuff(p_ap_decode_obj)) - { - c = 0; - break; - } - - c = p_ap_decode_obj->inbuff[p_ap_decode_obj->pos_inbuff++]; - if (c == '-') - { - --p_ap_decode_obj->pos_inbuff; /* put back */ - } - } - return (int)c; -} - - -PRIVATE int from_64( - appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size) -{ - int i, j, buf[4]; - int c1, c2, c3, c4; - - (*real_size) = 0; - - /* - ** decode 4 by 4s characters - */ - for (i = p_ap_decode_obj->state64; i<4; i++) - { - if (EndOfBuff(p_ap_decode_obj)) - { - p_ap_decode_obj->state64 = i; - break; - } - if ((p_ap_decode_obj->c[i] = fetch_next_char_64(p_ap_decode_obj)) == 0) - break; - } - - if (i != 4) - { - /* - ** not enough data to fill the decode buff. - */ - return errEOB; /* end of buff */ - } - - while (size > 0) - { - c1 = p_ap_decode_obj->c[0]; - c2 = p_ap_decode_obj->c[1]; - c3 = p_ap_decode_obj->c[2]; - c4 = p_ap_decode_obj->c[3]; - - if (c1 == '-' || c2 == '-' || c3 == '-' || c4 == '-') - { - return errEOP; /* we meet the part boundary. */ - } - - if (c1 == '=' || c2 == '=') - { - return errDecoding; - } - - c1 = CHAR64(c1); - c2 = CHAR64(c2); - buf[0] = ((c1<<2) | ((c2&0x30)>>4)); - - if (c3 != '=') - { - c3 = CHAR64(c3); - buf[1] = (((c2&0x0F) << 4) | ((c3&0x3C) >> 2)); - - if (c4 != '=') - { - c4 = CHAR64(c4); - buf[2] = (((c3&0x03) << 6) | c4); - } - else - { - if (p_ap_decode_obj->left == 0) - { - *buff++ = buf[0]; (*real_size)++; - } - *buff++ = buf[1]; (*real_size)++; - /* return errEOP; */ /* bug 87784 */ - return EndOfBuff(p_ap_decode_obj) ? errEOP : NOERR; - } - } - else - { - *buff++ = *buf; - (*real_size)++; - /* return errEOP; *bug 87784*/ /* we meet the the end */ - return EndOfBuff(p_ap_decode_obj) ? errEOP : NOERR; - } - /* - ** copy the content - */ - for (j = p_ap_decode_obj->left; j<3; ) - { - *buff++ = buf[j++]; - (*real_size)++; - if (--size <= 0) - break; - } - p_ap_decode_obj->left = j % 3; - - if (size <=0) - { - if (j == 3) - p_ap_decode_obj->state64 = 0; /* See if we used up all data, */ - /* ifnot, keep the data, */ - /* we need it for next time. */ - else - p_ap_decode_obj->state64 = 4; - - break; - } - - /* - ** fetch the next 4 character group. - */ - for (i = 0; i < 4; i++) - { - if (EndOfBuff(p_ap_decode_obj)) - break; - - if ((p_ap_decode_obj->c[i] = fetch_next_char_64(p_ap_decode_obj)) == 0) - break; - } - - p_ap_decode_obj->state64 = i % 4; - - if (i != 4) - break; /* some kind of end of buff met.*/ - } - - /* - ** decide the size and status. - */ - return EndOfBuff(p_ap_decode_obj) ? errEOB : NOERR; -} - -/* - * Table for decoding hexadecimal in quoted-printable - */ -static char index_hex[256] = { - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,XX,XX, XX,XX,XX,XX, - XX,10,11,12, 13,14,15,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,10,11,12, 13,14,15,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, -}; - -#define HEXCHAR(c) (index_hex[(unsigned char)(c)]) -#define NEXT_CHAR(p) ((int)((p)->inbuff[(p)->pos_inbuff++])) -#define CURRENT_CHAR(p) ((int)((p)->inbuff[(p)->pos_inbuff])) -/* -** quoted printable decode, as defined in RFC 1521, page18 - 20 -*/ -PRIVATE int from_qp( - appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size) -{ - char c; - int c1, c2; - - *real_size = 0; - - if (p_ap_decode_obj->c[0] == '=') - { - /* - ** continue with the last time's left over. - */ - p_ap_decode_obj->c[0] = 0; - - c1 = p_ap_decode_obj->c[1]; p_ap_decode_obj->c[1] = 0; - - if ( c1 == 0) - { - c1 = NEXT_CHAR(p_ap_decode_obj); - c2 = NEXT_CHAR(p_ap_decode_obj); - } - else - { - c2 = NEXT_CHAR(p_ap_decode_obj); - } - c = HEXCHAR(c1) << 4 | HEXCHAR(c2); - - size --; - *buff ++ = c; - (*real_size) ++; - } - - /* - ** Then start to work on the new data - */ - while (size > 0) - { - if (EndOfBuff(p_ap_decode_obj)) - break; - - c1 = NEXT_CHAR(p_ap_decode_obj); - - if (c1 == '=') - { - if (EndOfBuff(p_ap_decode_obj)) - { - p_ap_decode_obj->c[0] = c1; - break; - } - - c1 = NEXT_CHAR(p_ap_decode_obj); - if (c1 != '\n') - { - /* - ** Rule #2 - */ - c1 = HEXCHAR(c1); - if (EndOfBuff(p_ap_decode_obj)) - { - p_ap_decode_obj->c[0] = '='; - p_ap_decode_obj->c[1] = c1; - break; - } - - c2 = NEXT_CHAR(p_ap_decode_obj); - c2 = HEXCHAR(c2); - c = c1 << 4 | c2; - if (c != '\r') - { - size --; - *buff++ = c; - (*real_size)++; - } - } - else - { - /* ignore the line break -- soft line break, rule #5 */ - } - } - else - { - if (c1 == CR || c1 == LF) - { - if (p_ap_decode_obj->pos_inbuff < p_ap_decode_obj->s_inbuff) - { - if (p_ap_decode_obj->boundary0 && - (!XP_STRNCASECMP(p_ap_decode_obj->pos_inbuff+p_ap_decode_obj->inbuff, - "--", - 2) - && - !XP_STRNCASECMP(p_ap_decode_obj->pos_inbuff+p_ap_decode_obj->inbuff+2, - p_ap_decode_obj->boundary0, - XP_STRLEN(p_ap_decode_obj->boundary0)))) - { - return errEOP; - } - } - } - - /* - ** general 8bits case, Rule #1 - */ - size -- ; - *buff++ = c1; - (*real_size) ++; - } - } - return EndOfBuff(p_ap_decode_obj) ? errEOB : NOERR; -} - -#define UUEOL(c) (((c) == CR) || ((c) == LF)) -# undef UUDEC -# define UUDEC(c) (((c) - ' ') & 077) - -/* Check for and skip past the "begin" line of a uuencode body. */ -PRIVATE void ensure_uu_body_state(appledouble_decode_object* p) -{ - char *end = &(p->inbuff[p->s_inbuff]); - char *current = &(p->inbuff[p->pos_inbuff]); - - if (p->uu_state == kMainBody && p->uu_starts_line - && !XP_STRNCASECMP(current, "end", MIN(3, end - current))) - p->uu_state = kEnd; - - while (p->uu_state != kMainBody && (current < end)) - { - switch(p->uu_state) - { - case kWaitingForBegin: - case kBegin: - /* If we're not at the beginning of a line, move to the next line. */ - if (! p->uu_starts_line) - { - while(current < end && !UUEOL(*current)) - current++; - while(current < end && UUEOL(*current)) - current++; - - p->uu_starts_line = TRUE; /* we reached the start of a line */ - if (p->uu_state == kBegin) - p->uu_state = kMainBody; - - continue; - } - else - { - /* - At the start of a line. Test for "begin". - - ### mwelch: - - There is a potential danger here. If a buffer ends with a line - starting with some substring of "begin", this code will be fooled - into thinking that the uuencode body starts with the following line. - If the message itself contains lines that begin with a substring of - "begin", such as "be", "because", or "bezoar", and if those lines happen - to end a 1024-byte chunk, this becomes Really Bad. However, there is - no good, safe way to overcome this problem. So, for now, I hope and - pray that the 1024 character limit will always incorporate the entire - first line of a uuencode body. - - It should be noted that broken messages that have the body text in - the same MIME part as the uuencode attachment also risk this same - pitfall if any line in the message starts with "begin". - */ - - if ((p->uu_state == kWaitingForBegin) - && !XP_STRNCASECMP(current, "begin", MIN(5, end - current))) - p->uu_state = kBegin; - p->uu_starts_line = FALSE; /* make us advance to next line */ - } - break; - case kEnd: - /* Run out the buffer. */ - current = end; - } - } - - /* Record where we stopped scanning. */ - p->pos_inbuff = p->s_inbuff - (end - current); -} - -#define UU_VOID_CHAR 0 - -PRIVATE int fetch_next_char_uu(appledouble_decode_object* p, XP_Bool newBunch) -{ - char c=0; - XP_Bool gotChar = FALSE; - - if (EndOfBuff(p)) - return 0; - - while(!gotChar) - { - if (EndOfBuff(p)) - { - c = 0; - gotChar = TRUE; - } - else if (p->uu_starts_line) - { - char *end = &(p->inbuff[p->s_inbuff]); - char *current = &(p->inbuff[p->pos_inbuff]); - - /* Look here for 'end' line signifying end of uuencode body. */ - if (!XP_STRNCASECMP(current, "end", MIN(3, end - current))) - { - p->uu_state = kEnd; /* set the uuencode state to end */ - p->pos_inbuff = p->s_inbuff; /* run out the current buffer */ - - c = 0; /* return a 0 to uudecoder */ - gotChar = TRUE; - } - } - if (gotChar) - continue; - - c = NEXT_CHAR(p); - - if ((c == CR) || (c == LF)) - { - if (newBunch) - { - /* A new line could immediately follow either a CR or an LF. - If we reach the end of a buffer, simply assume the next buffer - will start a line (as it should in the current libmime implementation). - If it starts with CR or LF, that line will be skipped as well. */ - if (EndOfBuff(p) || ((CURRENT_CHAR(p) != CR) && (CURRENT_CHAR(p) != LF))) - p->uu_starts_line = TRUE; - - continue; - } - - /* End of line, but we have to finish a 4-tuple. Stop here. */ - -- p->pos_inbuff; /* give back the end-of-line character */ - c = UU_VOID_CHAR; /* flag as truncated */ - gotChar = TRUE; - } - - /* At this point, we have a valid char. */ - - else if (p->uu_starts_line) - { - /* read length char at start of each line */ - p->uu_line_bytes = UUDEC(c); - p->uu_starts_line = FALSE; - continue; - } - - else if (p->uu_line_bytes <= 0) - /* We ran out of bytes to decode on this line. Skip spare chars until - we reach the end of (line or buffer). */ - continue; - - else - gotChar = TRUE; /* valid returnable char */ - } - - return (int) c; -} - -/* -** uudecode -*/ - -PRIVATE int from_uu( - appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size) -{ - char c; - int i; - int returnVal = NOERR; - int c1, c2, c3, c4; - - *real_size = 0; - - /* Make sure that we're in the uuencode body, or run out the buffer if - we don't have any body text in this buffer. */ - ensure_uu_body_state(p_ap_decode_obj); - - if (p_ap_decode_obj->uu_state == kEnd) - return errEOP; - - /* Continue with what was left over last time. */ - for (i = p_ap_decode_obj->state64; i<4; i++) - { - if (EndOfBuff(p_ap_decode_obj)) - { - p_ap_decode_obj->state64 = i; - break; - } - if ((p_ap_decode_obj->c[i] = fetch_next_char_uu(p_ap_decode_obj, (i==0))) == 0) - break; - } - - if ( (i < p_ap_decode_obj->uu_line_bytes+1) - && (EndOfBuff(p_ap_decode_obj))) - /* not enough data to decode, return here. */ - return errEOB; - - while((size > 0) && (!EndOfBuff(p_ap_decode_obj))) - { - c1 = p_ap_decode_obj->c[0]; - c2 = p_ap_decode_obj->c[1]; - c3 = p_ap_decode_obj->c[2]; - c4 = p_ap_decode_obj->c[3]; - - /* - At this point we have characters ready to decode. - Convert them to binary bytes. - */ - if ((i > 1) - && (p_ap_decode_obj->uu_bytes_written < 1) - && (p_ap_decode_obj->uu_line_bytes > 0)) - { - c = UUDEC(c1) << 2 | UUDEC(c2) >> 4; - size --; - *buff ++ = c; - (*real_size) ++; - p_ap_decode_obj->uu_line_bytes--; - p_ap_decode_obj->uu_bytes_written++; - } - - if ((i > 2) && (size > 0) - && (p_ap_decode_obj->uu_bytes_written < 2) - && (p_ap_decode_obj->uu_line_bytes > 0)) - { - c = UUDEC(c2) << 4 | UUDEC(c3) >> 2; - size --; - *buff ++ = c; - (*real_size) ++; - p_ap_decode_obj->uu_line_bytes--; - p_ap_decode_obj->uu_bytes_written++; - } - - if ((i > 3) && (size > 0) - && (p_ap_decode_obj->uu_line_bytes > 0)) - { - c = UUDEC(c3) << 6 | UUDEC(c4); - size --; - *buff ++ = c; - (*real_size) ++; - p_ap_decode_obj->uu_line_bytes--; - p_ap_decode_obj->uu_bytes_written = 0; - } - - if (p_ap_decode_obj->uu_state == kEnd) - continue; - - /* If this line is finished, this tuple is also finished. */ - if (p_ap_decode_obj->uu_line_bytes <= 0) - p_ap_decode_obj->uu_bytes_written = 0; - - if (p_ap_decode_obj->uu_bytes_written > 0) - { - /* size == 0, but we have bytes left in current tuple */ - p_ap_decode_obj->state64 = i; - continue; - } - - /* - ** fetch the next 4 character group. - */ - - for (i = 0; i < 4; i++) - { - if (EndOfBuff(p_ap_decode_obj)) - break; - - if ((p_ap_decode_obj->c[i] = fetch_next_char_uu(p_ap_decode_obj, (i == 0))) == 0) - break; - } - - p_ap_decode_obj->state64 = i; - - if ( (i < p_ap_decode_obj->uu_line_bytes+1) - && (EndOfBuff(p_ap_decode_obj))) - /* not enough data to decode, return here. */ - continue; - } - - if (p_ap_decode_obj->uu_state == kEnd) - returnVal = errEOP; - else if (EndOfBuff(p_ap_decode_obj)) - returnVal = errEOB; - - return returnVal; -} - -/* -** from_none -** -** plain text transfer. -*/ -PRIVATE int from_none( - appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size) -{ - char c; - int i, status = NOERR; - int left = p_ap_decode_obj->s_inbuff - p_ap_decode_obj->pos_inbuff; - int total = MIN(size, left); - - for (i = 0; i < total; i++) - { - *buff ++ = c = NEXT_CHAR(p_ap_decode_obj); - if (c == CR || c == LF) - { - /* make sure the next thing is not a boundary string */ - if (p_ap_decode_obj->pos_inbuff < p_ap_decode_obj->s_inbuff) - { - if (p_ap_decode_obj->boundary0 && - (!XP_STRNCASECMP(p_ap_decode_obj->pos_inbuff+p_ap_decode_obj->inbuff, - "--", - 2) - && - !XP_STRNCASECMP(p_ap_decode_obj->pos_inbuff+p_ap_decode_obj->inbuff+2, - p_ap_decode_obj->boundary0, - XP_STRLEN(p_ap_decode_obj->boundary0)))) - { - status = errEOP; - break; - } - } - } - } - - *real_size = i; - if (status == NOERR) - status = (left == i) ? errEOB : status; - return status; -} - diff --git a/mozilla/lib/libmsg/ap_encod.c b/mozilla/lib/libmsg/ap_encod.c deleted file mode 100644 index f14f5ae1755..00000000000 --- a/mozilla/lib/libmsg/ap_encod.c +++ /dev/null @@ -1,737 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - * - * apple_double_encode.c - * --------------------- - * - * The routines doing the Apple Double Encoding. - * - * 2aug95 mym Created. - * - */ - -#include "msg.h" -#include "appledbl.h" -#include "ad_codes.h" - -#ifdef XP_MAC - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; -extern int MK_MIME_ERROR_WRITING_FILE; - -#include <Errors.h> - -/* -** Local Functions prototypes. -*/ -PRIVATE int output64chunk( appledouble_encode_object* p_ap_encode_obj, - int c1, int c2, int c3, int pads); - -PRIVATE int to64(appledouble_encode_object* p_ap_encode_obj, - char *p, - int in_size); - -PRIVATE int finish64(appledouble_encode_object* p_ap_encode_obj); - - -#define BUFF_LEFT(p) ((p)->s_outbuff - (p)->pos_outbuff) - -/* -** write_stream. -*/ -int write_stream( - appledouble_encode_object *p_ap_encode_obj, - char *out_string, - int len) -{ - if (p_ap_encode_obj->pos_outbuff + len < p_ap_encode_obj->s_outbuff) - { - XP_MEMCPY(p_ap_encode_obj->outbuff + p_ap_encode_obj->pos_outbuff, - out_string, - len); - p_ap_encode_obj->pos_outbuff += len; - return noErr; - } - else - { - /* - ** If the buff doesn't have enough space, use the overflow buffer then. - */ - int s_len = p_ap_encode_obj->s_outbuff - p_ap_encode_obj->pos_outbuff; - - XP_MEMCPY(p_ap_encode_obj->outbuff + p_ap_encode_obj->pos_outbuff, - out_string, - s_len); - XP_MEMCPY(p_ap_encode_obj->b_overflow + p_ap_encode_obj->s_overflow, - out_string + s_len, - p_ap_encode_obj->s_overflow += (len - s_len)); - p_ap_encode_obj->pos_outbuff += s_len; - return errEOB; - } -} - -int fill_apple_mime_header( - appledouble_encode_object *p_ap_encode_obj) -{ - int status; - - char tmpstr[266]; - -#if 0 -// strcpy(tmpstr, "Content-Type: multipart/mixed; boundary=\"-\"\n\n---\n"); -// status = write_stream(p_ap_encode_env, -// tmpstr, -// strlen(tmpstr)); -// if (status != noErr) -// return status; - - sprintf(tmpstr, - "Content-Type: multipart/appledouble; boundary=\"=\"; name=\""); - status = write_stream(p_ap_encode_obj, - tmpstr, - strlen(tmpstr)); - if (status != noErr) - return status; - - status = write_stream(p_ap_encode_obj, - p_ap_encode_obj->fname, - XP_STRLEN(p_ap_encode_obj->fname)); - if (status != noErr) - return status; - - XP_SPRINTF(tmpstr, - "\"\nContent-Disposition: inline; filename=\"%s\"\n\n\n--=\n", - p_ap_encode_obj->fname); -#endif - XP_SPRINTF(tmpstr, "--%s"CRLF, p_ap_encode_obj->boundary); - status = write_stream(p_ap_encode_obj, - tmpstr, - XP_STRLEN(tmpstr)); - return status; -} - -int ap_encode_file_infor( - appledouble_encode_object *p_ap_encode_obj) -{ - CInfoPBRec cipbr; - HFileInfo *fpb = (HFileInfo *)&cipbr; - ap_header head; - ap_entry entries[NUM_ENTRIES]; - ap_dates dates; - short i; - long comlen, procID; - DateTimeRec cur_time; - unsigned long cur_secs; - IOParam vinfo; - GetVolParmsInfoBuffer vp; - DTPBRec dtp; - char comment[256]; - Str63 fname; - int status; - - strcpy((char *)fname+1,p_ap_encode_obj->fname); - fname[0] = XP_STRLEN(p_ap_encode_obj->fname); - - fpb->ioNamePtr = fname; - fpb->ioDirID = p_ap_encode_obj->dirId; - fpb->ioVRefNum = p_ap_encode_obj->vRefNum; - fpb->ioFDirIndex = 0; - if (PBGetCatInfoSync(&cipbr) != noErr) - { - return errFileOpen; - } - - /* get a file comment, if possible */ - procID = 0; - GetWDInfo(p_ap_encode_obj->vRefNum, &fpb->ioVRefNum, &fpb->ioDirID, &procID); - memset((void *) &vinfo, '\0', sizeof (vinfo)); - vinfo.ioCompletion = nil; - vinfo.ioVRefNum = fpb->ioVRefNum; - vinfo.ioBuffer = (Ptr) &vp; - vinfo.ioReqCount = sizeof (vp); - comlen = 0; - if (PBHGetVolParmsSync((HParmBlkPtr) &vinfo) == noErr && - ((vp.vMAttrib >> bHasDesktopMgr) & 1)) - { - memset((void *) &dtp, '\0', sizeof (dtp)); - dtp.ioVRefNum = fpb->ioVRefNum; - if (PBDTGetPath(&dtp) == noErr) - { - dtp.ioCompletion = nil; - dtp.ioDTBuffer = (Ptr) comment; - dtp.ioNamePtr = fpb->ioNamePtr; - dtp.ioDirID = fpb->ioFlParID; - if (PBDTGetCommentSync(&dtp) == noErr) - comlen = dtp.ioDTActCount; - } - } - - /* write header */ -// head.magic = dfork ? APPLESINGLE_MAGIC : APPLEDOUBLE_MAGIC; - head.magic = APPLEDOUBLE_MAGIC; /* always do apple double */ - head.version = VERSION; - memset(head.fill, '\0', sizeof (head.fill)); - head.entries = NUM_ENTRIES - 1; - status = to64(p_ap_encode_obj, - (char *) &head, - sizeof (head)); - if (status != noErr) - return status; - - /* write entry descriptors */ - entries[0].offset = sizeof (head) + sizeof (ap_entry) * head.entries; - entries[0].id = ENT_NAME; - entries[0].length = *fpb->ioNamePtr; - entries[1].id = ENT_FINFO; - entries[1].length = sizeof (FInfo) + sizeof (FXInfo); - entries[2].id = ENT_DATES; - entries[2].length = sizeof (ap_dates); - entries[3].id = ENT_COMMENT; - entries[3].length = comlen; - entries[4].id = ENT_RFORK; - entries[4].length = fpb->ioFlRLgLen; - entries[5].id = ENT_DFORK; - entries[5].length = fpb->ioFlLgLen; - - /* correct the link in the entries. */ - for (i = 1; i < NUM_ENTRIES; ++i) - { - entries[i].offset = entries[i-1].offset + entries[i-1].length; - } - status = to64(p_ap_encode_obj, - (char *) entries, - sizeof (ap_entry) * head.entries); - if (status != noErr) - return status; - - /* write name */ - status = to64(p_ap_encode_obj, - (char *) fpb->ioNamePtr + 1, - *fpb->ioNamePtr); - if (status != noErr) - return status; - - /* write finder info */ - status = to64(p_ap_encode_obj, - (char *) &fpb->ioFlFndrInfo, - sizeof (FInfo)); - if (status != noErr) - return status; - - status = to64(p_ap_encode_obj, - (char *) &fpb->ioFlXFndrInfo, - sizeof (FXInfo)); - if (status != noErr) - return status; - - /* write dates */ - GetTime(&cur_time); - DateToSeconds(&cur_time, &cur_secs); - dates.create = fpb->ioFlCrDat + CONVERT_TIME; - dates.modify = fpb->ioFlMdDat + CONVERT_TIME; - dates.backup = fpb->ioFlBkDat + CONVERT_TIME; - dates.access = cur_secs + CONVERT_TIME; - status = to64(p_ap_encode_obj, - (char *) &dates, - sizeof (ap_dates)); - if (status != noErr) - return status; - - /* write comment */ - if (comlen) - { - status = to64(p_ap_encode_obj, - comment, - comlen * sizeof(char)); - } - /* - ** Get some help information on deciding the file type. - */ - if (fpb->ioFlFndrInfo.fdType == 'TEXT' || fpb->ioFlFndrInfo.fdType == 'text') - { - p_ap_encode_obj->text_file_type = true; - } - - return status; -} -/* -** ap_encode_header -** -** encode the file header and the resource fork. -** -*/ -int ap_encode_header( - appledouble_encode_object* p_ap_encode_obj, - XP_Bool firstime) -{ - Str255 name; - char rd_buff[256]; - short fileId; - OSErr retval = noErr; - int status; - long inCount; - - if (firstime) - { - XP_STRCPY(rd_buff, - "Content-Type: application/applefile\nContent-Transfer-Encoding: base64\n\n"); - status = write_stream(p_ap_encode_obj, - rd_buff, - strlen(rd_buff)); - if (status != noErr) - return status; - - status = ap_encode_file_infor(p_ap_encode_obj); - if (status != noErr) - return status; - - /* - ** preparing to encode the resource fork. - */ - name[0] = strlen(p_ap_encode_obj->fname); - strcpy((char *)name+1, p_ap_encode_obj->fname); - if (HOpenRF(p_ap_encode_obj->vRefNum, p_ap_encode_obj->dirId, - name, fsRdPerm, - &p_ap_encode_obj->fileId) != noErr) - { - return errFileOpen; - } - } - - fileId = p_ap_encode_obj->fileId; - while (retval == noErr) - { - if (BUFF_LEFT(p_ap_encode_obj) < 400) - break; - - inCount = 256; - retval = FSRead(fileId, &inCount, rd_buff); - if (inCount) - { - status = to64(p_ap_encode_obj, - rd_buff, - inCount); - if (status != noErr) - return status; - } - } - - if (retval == eofErr) - { - FSClose(fileId); - - status = finish64(p_ap_encode_obj); - if (status != noErr) - return status; - - /* - ** write out the boundary - */ - XP_SPRINTF(rd_buff, - CRLF"--%s"CRLF, - p_ap_encode_obj->boundary); - - status = write_stream(p_ap_encode_obj, - rd_buff, - XP_STRLEN(rd_buff)); - if (status == noErr) - status = errDone; - } - return status; -} - -static void replace(char *p, int len, char frm, char to) -{ - for (; len > 0; len--, p++) - if (*p == frm) *p = to; -} - -/* Description of the various file formats and their magic numbers */ -struct magic -{ - char *name; /* Name of the file format */ - char *num; /* The magic number */ - int len; /* Length (0 means strlen(magicnum)) */ -}; - -/* The magic numbers of the file formats we know about */ -static struct magic magic[] = -{ - { "image/gif", "GIF", 0 }, - { "image/jpeg", "\377\330\377", 0 }, - { "video/mpeg", "\0\0\001\263", 4 }, - { "application/postscript", "%!", 0 }, -}; -static int num_magic = (sizeof(magic)/sizeof(magic[0])); - -static char *text_type = TEXT_PLAIN; /* the text file type. */ -static char *default_type = APPLICATION_OCTET_STREAM; - - -/* - * Determins the format of the file "inputf". The name - * of the file format (or NULL on error) is returned. - */ -PRIVATE char *magic_look(char *inbuff, int numread) -{ - int i, j; - - for (i=0; i<num_magic; i++) - { - if (magic[i].len == 0) - magic[i].len = XP_STRLEN(magic[i].num); - } - - for (i=0; i<num_magic; i++) - { - if (numread >= magic[i].len) - { - for (j=0; j<magic[i].len; j++) - { - if (inbuff[j] != magic[i].num[j]) break; - } - - if (j == magic[i].len) - return magic[i].name; - } - } - - return default_type; -} -/* -** ap_encode_data -** -** --------------- -** -** encode on the data fork. -** -*/ -int ap_encode_data( - appledouble_encode_object* p_ap_encode_obj, - XP_Bool firstime) -{ - Str255 name; - char rd_buff[256]; - short fileId; - OSErr retval = noErr; - long in_count; - int status; - - if (firstime) - { - char* magic_type; - - /* - ** preparing to encode the data fork. - */ - name[0] = XP_STRLEN(p_ap_encode_obj->fname); - XP_STRCPY((char*)name+1, p_ap_encode_obj->fname); - if (HOpen( p_ap_encode_obj->vRefNum, - p_ap_encode_obj->dirId, - name, - fsRdPerm, - &fileId) != noErr) - { - return errFileOpen; - } - p_ap_encode_obj->fileId = fileId; - - - if (!p_ap_encode_obj->text_file_type) - { - OSErr err; - FSSpec file_spec; - char* path; - Bool do_magic = true; - - /* First attempt to get the file's mime type via FE_FileType. - If that fails, we'll do a "magic_look" - */ - - err = FSMakeFSSpec(p_ap_encode_obj->vRefNum, p_ap_encode_obj->dirId, name, &file_spec); - if (err == noErr) - { - path = my_PathnameFromFSSpec(&file_spec); - if (path != NULL) - { - char* ignore; - FE_FileType(path, &do_magic, &magic_type, &ignore); - - /* - if we ended up with the default type, dispose of it - so we can do a magic_look - */ - - if (do_magic && magic_type) - XP_FREE(magic_type); - } - } - - if (do_magic) - { - /* - ** do a smart check for the file type. - */ - in_count = 256; - retval = FSRead(fileId, &in_count, rd_buff); - magic_type = magic_look(rd_buff, in_count); - - /* don't forget to rewind the index to start point. */ - SetFPos(fileId, fsFromStart, 0L); - } - } - else - { - magic_type = text_type; /* we already know it is a text type. */ - } - - /* - ** the data portion header information. - */ - XP_SPRINTF(rd_buff, - "Content-Type: %s; name=\"%s\"" CRLF "Content-Transfer-Encoding: base64" CRLF "Content-Disposition: inline; filename=\"%s\""CRLF CRLF, - magic_type, - p_ap_encode_obj->fname, - p_ap_encode_obj->fname); - - status = write_stream(p_ap_encode_obj, - rd_buff, - XP_STRLEN(rd_buff)); - if (status != noErr) - return status; - } - - while (retval == noErr) - { - if (BUFF_LEFT(p_ap_encode_obj) < 400) - break; - - in_count = 256; - retval = FSRead(p_ap_encode_obj->fileId, - &in_count, - rd_buff); - if (in_count) - { -/* replace(rd_buff, in_count, '\r', '\n'); */ -/* ** may be need to do character set conversion here for localization. ** */ - status = to64(p_ap_encode_obj, - rd_buff, - in_count); - if (status != noErr) - return status; - } - } - - if (retval == eofErr) - { - FSClose(p_ap_encode_obj->fileId); - - status = finish64(p_ap_encode_obj); - if (status != noErr) - return status; - - /* write out the boundary */ - - XP_SPRINTF(rd_buff, - CRLF"--%s--"CRLF CRLF, - p_ap_encode_obj->boundary); - - status = write_stream(p_ap_encode_obj, - rd_buff, - XP_STRLEN(rd_buff)); - - if (status == noErr) - status = errDone; - } - return status; -} - -static char basis_64[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -/* -** convert the stream in the inbuff to 64 format and put it in the out buff. -** To make the life easier, the caller will responcable of the cheking of the outbuff's bundary. -*/ -PRIVATE int -to64(appledouble_encode_object* p_ap_encode_obj, - char *p, - int in_size) -{ - int status; - int c1, c2, c3, ct; - unsigned char *inbuff = (unsigned char*)p; - - ct = p_ap_encode_obj->ct; /* the char count left last time. */ - - /* - ** resume the left state of the last conversion. - */ - switch (p_ap_encode_obj->state64) - { - case 0: - p_ap_encode_obj->c1 = c1 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 1; - return noErr; - } - p_ap_encode_obj->c2 = c2 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 2; - return noErr; - } - c3 = *inbuff ++; --in_size; - break; - case 1: - c1 = p_ap_encode_obj->c1; - p_ap_encode_obj->c2 = c2 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 2; - return noErr; - } - c3 = *inbuff ++; --in_size; - break; - case 2: - c1 = p_ap_encode_obj->c1; - c2 = p_ap_encode_obj->c2; - c3 = *inbuff ++; --in_size; - break; - } - - while (in_size >= 0) - { - status = output64chunk(p_ap_encode_obj, - c1, - c2, - c3, - 0); - if (status != noErr) - return status; - - ct += 4; - if (ct > 71) - { - status = write_stream(p_ap_encode_obj, - CRLF, - 2); - if (status != noErr) - return status; - - ct = 0; - } - - if (in_size <= 0) - { - p_ap_encode_obj->state64 = 0; - break; - } - - c1 = (int)*inbuff++; - if (--in_size <= 0) - { - p_ap_encode_obj->c1 = c1; - p_ap_encode_obj->state64 = 1; - break; - } - c2 = *inbuff++; - if (--in_size <= 0) - { - p_ap_encode_obj->c1 = c1; - p_ap_encode_obj->c2 = c2; - p_ap_encode_obj->state64 = 2; - break; - } - c3 = *inbuff++; - in_size--; - } - p_ap_encode_obj->ct = ct; - return status; -} - -/* -** clear the left base64 encodes. -*/ -PRIVATE int -finish64(appledouble_encode_object* p_ap_encode_obj) -{ - int status; - - switch (p_ap_encode_obj->state64) - { - case 0: - break; - case 1: - status = output64chunk(p_ap_encode_obj, - p_ap_encode_obj->c1, - 0, - 0, - 2); - break; - case 2: - status = output64chunk(p_ap_encode_obj, - p_ap_encode_obj->c1, - p_ap_encode_obj->c2, - 0, - 1); - break; - } - status = write_stream(p_ap_encode_obj, CRLF, 2); - p_ap_encode_obj->state64 = 0; - p_ap_encode_obj->ct = 0; - return status; -} - -PRIVATE int output64chunk( - appledouble_encode_object* p_ap_encode_obj, - int c1, int c2, int c3, int pads) -{ - char tmpstr[32]; - char *p = tmpstr; - - *p++ = basis_64[c1>>2]; - *p++ = basis_64[((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)]; - if (pads == 2) - { - *p++ = '='; - *p++ = '='; - } - else if (pads) - { - *p++ = basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)]; - *p++ = '='; - } - else - { - *p++ = basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)]; - *p++ = basis_64[c3 & 0x3F]; - } - return write_stream(p_ap_encode_obj, - tmpstr, - p-tmpstr); -} - -#endif /* if define XP_MAC */ diff --git a/mozilla/lib/libmsg/appledbl.c b/mozilla/lib/libmsg/appledbl.c deleted file mode 100644 index 39c039ac5dc..00000000000 --- a/mozilla/lib/libmsg/appledbl.c +++ /dev/null @@ -1,619 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* -* -* apple-double.c -* -------------- -* -* The codes to do apple double encoding/decoding. -* -* 02aug95 mym created. -* 27sep95 mym Add the XP_Mac to ensure the cross-platform. -* -*/ - -#include "msg.h" -#include "appledbl.h" -#include "ad_codes.h" - -#ifdef XP_MAC - -#pragma warn_unusedarg off -#include "m_cvstrm.h" - -#pragma cplusplus on -#include "InternetConfig.h" -#include "ufilemgr.h" -#include "BufferStream.h" -#include "Umimemap.h" -#include "uprefd.h" -#include "ulaunch.h" -void DecodingDone( appledouble_decode_object* p_ap_decode_obj ); - -OSErr my_FSSpecFromPathname(char* src_filename, FSSpec* fspec) -{ - /* don't resolve aliases... */ - return CFileMgr::FSSpecFromLocalUnixPath(src_filename, fspec, false); -} - -char* my_PathnameFromFSSpec(FSSpec* fspec) -{ - return CFileMgr::GetURLFromFileSpec(*fspec); -} - -/* returns true if the resource fork should be sent */ -XP_Bool isMacFile(char* filename) -{ - Boolean returnValue = FALSE; - - FSSpec fspec; - my_FSSpecFromPathname(filename, &fspec); - - returnValue = CFileMgr::FileHasResourceFork(fspec); - /* always use IC even if the pref isn't checked since we have no - other way to determine if the resource is significant */ - if ( returnValue ) - { - - CMimeMapper * mapper = CPrefs::sMimeTypes.FindMimeType(fspec); - if ( mapper ) - { - returnValue = mapper->GetFileFlags()& ICmap_resource_fork_mask; - return returnValue; - } - - // Get the Internet Config file mapping for this type - // and see if the existing resources are significant. - - // First, get the type/creator of the file. - FInfo fileInfo; - OSErr err = ::FSpGetFInfo(&fspec, &fileInfo); - if (err == noErr) - { - if ( fileInfo.fdType == 'APPL' ) - return TRUE; - ICMapEntry ent; - err = CInternetConfigInterface::GetInternetConfigFileMapping(fileInfo.fdType, - fileInfo.fdCreator, - fspec.name, &ent); - if (err == noErr) - { - // resource fork is significant if the resource fork mask bit is set - returnValue = (ent.flags & ICmap_resource_fork_mask) != 0; - } - } - } - - return (XP_Bool) returnValue; -} - -void DecodingDone( appledouble_decode_object* p_ap_decode_obj ) -{ - FSSpec fspec; - - fspec.vRefNum = p_ap_decode_obj->vRefNum; - fspec.parID = p_ap_decode_obj->dirId; - fspec.name[0] = XP_STRLEN(p_ap_decode_obj->fname); - XP_STRCPY((char*)fspec.name+1, p_ap_decode_obj->fname); - CMimeMapper * mapper = CPrefs::sMimeTypes.FindMimeType(fspec); - if( mapper && (mapper->GetLoadAction() == CMimeMapper::Launch ) ) - { - LFileBufferStream file( fspec ); - LaunchFile( &file ); - } -} - -#pragma cplusplus reset - -/* -* ap_encode_init -* -------------- -* -* Setup the encode envirment -*/ - -int ap_encode_init( - appledouble_encode_object *p_ap_encode_obj, - char* fname, - char* separator) -{ - FSSpec fspec; - - if (my_FSSpecFromPathname(fname, &fspec) != noErr ) - return -1; - - XP_MEMSET(p_ap_encode_obj, 0, sizeof(appledouble_encode_object)); - - /* - ** Fill out the source file inforamtion. - */ - XP_MEMCPY(p_ap_encode_obj->fname, fspec.name+1, *fspec.name); - p_ap_encode_obj->fname[*fspec.name] = '\0'; - p_ap_encode_obj->vRefNum = fspec.vRefNum; - p_ap_encode_obj->dirId = fspec.parID; - - p_ap_encode_obj->boundary = XP_STRDUP(separator); - return noErr; -} -/* -** ap_encode_next -** -------------- -** -** return : -** noErr : everything is ok -** errDone : when encoding is done. -** errors : otherwise. -*/ -int ap_encode_next( - appledouble_encode_object* p_ap_encode_obj, - char *to_buff, - int32 buff_size, - int32* real_size) -{ - int status; - - /* - ** install the out buff now. - */ - p_ap_encode_obj->outbuff = to_buff; - p_ap_encode_obj->s_outbuff = buff_size; - p_ap_encode_obj->pos_outbuff = 0; - - /* - ** first copy the outstandind data in the overflow buff to the out buffer. - */ - if (p_ap_encode_obj->s_overflow) - { - status = write_stream(p_ap_encode_obj, - p_ap_encode_obj->b_overflow, - p_ap_encode_obj->s_overflow); - if (status != noErr) - return status; - - p_ap_encode_obj->s_overflow = 0; - } - - /* - ** go the next processing stage based on the current state. - */ - switch (p_ap_encode_obj->state) - { - case kInit: - /* - ** We are in the starting position, fill out the header. - */ - status = fill_apple_mime_header(p_ap_encode_obj); - if (status != noErr) - break; /* some error happens */ - - p_ap_encode_obj->state = kDoingHeaderPortion; - status = ap_encode_header(p_ap_encode_obj, true); - /* it is the first time to calling */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneHeaderPortion; - } - else - { - break; /* we need more work on header portion. */ - } - - /* - ** we are done with the header, so let's go to the data port. - */ - p_ap_encode_obj->state = kDoingDataPortion; - status = ap_encode_data(p_ap_encode_obj, true); - /* it is first time call do data portion */ - - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoingHeaderPortion: - - status = ap_encode_header(p_ap_encode_obj, false); - /* continue with the header portion. */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneHeaderPortion; - } - else - { - break; /* we need more work on header portion. */ - } - - /* - ** start the data portion. - */ - p_ap_encode_obj->state = kDoingDataPortion; - status = ap_encode_data(p_ap_encode_obj, true); - /* it is the first time calling */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoingDataPortion: - - status = ap_encode_data(p_ap_encode_obj, false); - /* it is not the first time */ - - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoneDataPortion: -#if 0 - status = write_stream(p_ap_encode_obj, - "\n-----\n\n", - 8); - if (status == noErr) -#endif - status = errDone; /* we are really done. */ - - break; - } - - *real_size = p_ap_encode_obj->pos_outbuff; - return status; -} - -/* -** ap_encode_end -** ------------- -** -** clear the apple encoding. -*/ - -int ap_encode_end( - appledouble_encode_object *p_ap_encode_obj, - XP_Bool is_aborting) -{ - /* - ** clear up the apple doubler. - */ - if (p_ap_encode_obj == NULL) - return noErr; - - if (p_ap_encode_obj->fileId) /* close the file if it is open. */ - FSClose(p_ap_encode_obj->fileId); - - FREEIF(p_ap_encode_obj->boundary); /* the boundary string. */ - - return noErr; -} - -#endif /* the ifdef of XP_MAC */ - - -/* -** The initial of the apple double decoder. -** -** Set up the next output stream based on the input. -*/ -int ap_decode_init( - appledouble_decode_object* p_ap_decode_obj, - XP_Bool is_apple_single, - XP_Bool write_as_binhex, - void *closure) -{ - XP_MEMSET(p_ap_decode_obj, 0, sizeof(appledouble_decode_object)); - - /* presume first buff starts a line */ - p_ap_decode_obj->uu_starts_line = TRUE; - - if (write_as_binhex) - { - p_ap_decode_obj->write_as_binhex = TRUE; - p_ap_decode_obj->binhex_stream = (NET_StreamClass*)closure; - p_ap_decode_obj->data_size = 0; - } - else - { - p_ap_decode_obj->write_as_binhex = FALSE; - p_ap_decode_obj->binhex_stream = NULL; - - p_ap_decode_obj->context = (MWContext*)closure; - } - - p_ap_decode_obj->is_apple_single = is_apple_single; - - if (is_apple_single) - { - p_ap_decode_obj->encoding = kEncodeNone; - } - - return NOERR; -} - -static int ap_decode_state_machine(appledouble_decode_object* p_ap_decode_obj); -/* -* process the buffer -*/ -int ap_decode_next( - appledouble_decode_object* p_ap_decode_obj, - char *in_buff, - int32 buff_size) -{ - /* - ** install the buff to the decoder. - */ - p_ap_decode_obj->inbuff = in_buff; - p_ap_decode_obj->s_inbuff = buff_size; - p_ap_decode_obj->pos_inbuff = 0; - - /* - ** run off the decode state machine - */ - return ap_decode_state_machine(p_ap_decode_obj); -} - -PRIVATE int ap_decode_state_machine( - appledouble_decode_object* p_ap_decode_obj) -{ - int status = NOERR; - int32 size; - - switch (p_ap_decode_obj->state) - { - case kInit: - /* - ** Make sure that there are stuff in the buff - ** before we can parse the file head . - */ - if (p_ap_decode_obj->s_inbuff <=1 ) - return NOERR; - - if (p_ap_decode_obj->is_apple_single) - { - p_ap_decode_obj->state = kBeginHeaderPortion; - } - else - { - status = ap_seek_part_start(p_ap_decode_obj); - if (status != errDone) - return status; - - p_ap_decode_obj->state = kBeginParseHeader; - } - status = ap_decode_state_machine(p_ap_decode_obj); - break; - - case kBeginSeekBoundary: - p_ap_decode_obj->state = kSeekingBoundary; - status = ap_seek_to_boundary(p_ap_decode_obj, TRUE); - if (status == errDone) - { - p_ap_decode_obj->state = kBeginParseHeader; - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kSeekingBoundary: - status = ap_seek_to_boundary(p_ap_decode_obj, FALSE); - if (status == errDone) - { - p_ap_decode_obj->state = kBeginParseHeader; - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kBeginParseHeader: - p_ap_decode_obj->state = kParsingHeader; - status = ap_parse_header(p_ap_decode_obj, TRUE); - if (status == errDone) - { - if (p_ap_decode_obj->which_part == kDataPortion) - p_ap_decode_obj->state = kBeginDataPortion; - else if (p_ap_decode_obj->which_part == kHeaderPortion) - p_ap_decode_obj->state = kBeginHeaderPortion; - else - p_ap_decode_obj->state = kFinishing; - - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kParsingHeader: - status = ap_parse_header(p_ap_decode_obj, FALSE); - if (status == errDone) - { - if (p_ap_decode_obj->which_part == kDataPortion) - p_ap_decode_obj->state = kBeginDataPortion; - else if (p_ap_decode_obj->which_part == kHeaderPortion) - p_ap_decode_obj->state = kBeginHeaderPortion; - else - p_ap_decode_obj->state = kFinishing; - - status = ap_decode_state_machine(p_ap_decode_obj); - - } - break; - - case kBeginHeaderPortion: - p_ap_decode_obj->state = kProcessingHeaderPortion; - status = ap_decode_process_header(p_ap_decode_obj, TRUE); - if (status == errDone) - { - if (p_ap_decode_obj->is_apple_single) - p_ap_decode_obj->state = kBeginDataPortion; - else - p_ap_decode_obj->state = kBeginSeekBoundary; - - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - case kProcessingHeaderPortion: - status = ap_decode_process_header(p_ap_decode_obj, FALSE); - if (status == errDone) - { - if (p_ap_decode_obj->is_apple_single) - p_ap_decode_obj->state = kBeginDataPortion; - else - p_ap_decode_obj->state = kBeginSeekBoundary; - - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kBeginDataPortion: - p_ap_decode_obj->state = kProcessingDataPortion; - status = ap_decode_process_data(p_ap_decode_obj, TRUE); - if (status == errDone) - { - if (p_ap_decode_obj->is_apple_single) - p_ap_decode_obj->state = kFinishing; - else - p_ap_decode_obj->state = kBeginSeekBoundary; - - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kProcessingDataPortion: - status = ap_decode_process_data(p_ap_decode_obj, FALSE); - if (status == errDone) - { - if (p_ap_decode_obj->is_apple_single) - p_ap_decode_obj->state = kFinishing; - else - p_ap_decode_obj->state = kBeginSeekBoundary; - - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kFinishing: - if (p_ap_decode_obj->write_as_binhex) - { - if (p_ap_decode_obj->tmpfd) - { - /* - ** It is time to append the data fork to bin hex encoder. - ** - ** The reason behind this dirt work is resource fork is the last - ** piece in the binhex, while it is the first piece in apple double. - */ - XP_FileSeek(p_ap_decode_obj->tmpfd, 0L, SEEK_SET); - - while (p_ap_decode_obj->data_size > 0) - { - char buff[1024]; - - size = MIN(1024, p_ap_decode_obj->data_size); - XP_FileRead(buff, size, p_ap_decode_obj->tmpfd); - - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - buff, - size); - - p_ap_decode_obj->data_size -= size; - } - } - - if (p_ap_decode_obj->data_size <= 0) - { - /* CALL put_block with size == 0 to close a part. */ - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - NULL, - 0); - if (status != NOERR) - break; - - /* and now we are really done. */ - status = errDone; - } - else - status = NOERR; - } - break; - } - return (status == errEOB) ? NOERR : status; -} - -int ap_decode_end( - appledouble_decode_object* p_ap_decode_obj, - XP_Bool is_aborting) -{ - /* - ** clear up the apple doubler object. - */ - if (p_ap_decode_obj == NULL) - return NOERR; - - FREEIF(p_ap_decode_obj->boundary0); - -#ifdef XP_MAC - if (p_ap_decode_obj->fileId) - FSClose(p_ap_decode_obj->fileId); - if( p_ap_decode_obj->vRefNum ) - FlushVol(nil, p_ap_decode_obj->vRefNum ); -#endif - - if (p_ap_decode_obj->write_as_binhex) - { - /* - ** make sure close the binhex stream too. - */ - if (is_aborting) - { - (*p_ap_decode_obj->binhex_stream->abort) - (p_ap_decode_obj->binhex_stream->data_object, 0); - } - else - { - (*p_ap_decode_obj->binhex_stream->complete) - (p_ap_decode_obj->binhex_stream->data_object); - } - - if (p_ap_decode_obj->tmpfd) - XP_FileClose(p_ap_decode_obj->tmpfd); - - if (p_ap_decode_obj->tmpfname) - { - XP_FileRemove(p_ap_decode_obj->tmpfname, xpTemporary); - /* remove tmp file if we used it */ - XP_FREE(p_ap_decode_obj->tmpfname); /* and release the file name too. */ - } - } - else if (p_ap_decode_obj->fd) - { - XP_FileClose(p_ap_decode_obj->fd); - } -#ifdef XP_MAC - if( !is_aborting ) - DecodingDone( p_ap_decode_obj); -#endif - return NOERR; - -} diff --git a/mozilla/lib/libmsg/appledbl.h b/mozilla/lib/libmsg/appledbl.h deleted file mode 100644 index f9a9bacbb12..00000000000 --- a/mozilla/lib/libmsg/appledbl.h +++ /dev/null @@ -1,236 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* -* AppleDouble.h -* ------------- -* -* The header file for a stream based apple single/double encodor/decodor. -* -* 2aug95 mym -* -*/ - - -#ifndef AppleDouble_h -#define AppleDouble_h - -#include "xp.h" -#include "xp_file.h" -#include "msg.h" - -#define NOERR 0 -#define errDone 1 - /* Done with current operation. */ -#define errEOB 2 - /* End of a buffer. */ -#define errEOP 3 - /* End of a Part. */ - - -#define errMemoryAlloc MK_OUT_OF_MEMORY -#define errDataCrupt -1 -#define errDiskFull MK_DISK_FULL -#define errFileOpen MK_UNABLE_TO_OPEN_TMP_FILE - -#define errVersion -1 -#define errFileWrite MK_MIME_ERROR_WRITING_FILE -#define errDecoding -1 - -#define errUsrCancel MK_INTERRUPTED -/* -** The envirment block data type. -*/ -enum -{ - kInit, - kDoingHeaderPortion, - kDoneHeaderPortion, - kDoingDataPortion, - kDoneDataPortion -}; - -typedef struct _appledouble_encode_object -{ - char fname[64]; - int32 dirId; - int16 vRefNum; - int16 fileId; /* the id for the open file (data/resource fork) */ - - int state; - int text_file_type; /* if the file has a text file type with it. */ - char *boundary; /* the boundary string. */ - - int status; /* the error code if anyerror happens. */ - char b_overflow[200]; - int s_overflow; - - int state64; /* the left over state of base64 enocding */ - int ct; /* the character count of base64 encoding */ - int c1, c2; /* the left of the last base64 encoding */ - - char *outbuff; /* the outbuff by the caller. */ - int s_outbuff; /* the size of the buffer. */ - int pos_outbuff; /* the offset in the current buffer. */ - -} appledouble_encode_object; - -/* The possible content transfer encodings */ - -enum -{ - kEncodeNone, - kEncodeQP, - kEncodeBase64, - kEncodeUU -}; - -enum -{ - kGeneralMine, - kAppleDouble, - kAppleSingle -}; - -enum -{ - kInline, - kDontCare -}; - -enum -{ - kHeaderPortion, - kDataPortion -}; - -/* the decode states. */ -enum -{ - kBeginParseHeader = 3, - kParsingHeader, - kBeginSeekBoundary, - kSeekingBoundary, - kBeginHeaderPortion, - kProcessingHeaderPortion, - kBeginDataPortion, - kProcessingDataPortion, - kFinishing -}; - -/* uuencode states */ -enum -{ - kWaitingForBegin = (int) 0, - kBegin, - kMainBody, - kEnd -}; - -typedef struct _appledouble_decode_object -{ - int is_binary; - int is_apple_single; /* if the object encoded is in apple single */ - int write_as_binhex; - - int messagetype; - char* boundary0; /* the boundary for the enclosure. */ - int deposition; /* the deposition. */ - int encoding; /* the encoding method. */ - int which_part; - - char fname[256]; -#ifdef XP_MAC - FSSpec* mSpec; /* the filespec to save the file to*/ - int16 vRefNum; - int32 dirId; - int16 fileId; /* the id for the open file (data/resource fork) */ -#endif - XP_File fd; /* the fd for data fork work. */ - - MWContext *context; - NET_StreamClass* binhex_stream; /* the stream to output as binhex output.*/ - - int state; - - int rksize; /* the resource fork size count. */ - int dksize; /* the data fork size count. */ - - int status; /* the error code if anyerror happens. */ - char b_leftover[256]; - int s_leftover; - - int encode; /* the encode type of the message. */ - int state64; /* the left over state of base64 enocding */ - int left; /* the character count of base64 encoding */ - int c[4]; /* the left of the last base64 encoding */ - int uu_starts_line; /* is decoder at the start of a line? (uuencode) */ - int uu_state; /* state w/r/t the uuencode body */ - int uu_bytes_written; /* bytes written from the current tuple (uuencode) */ - int uu_line_bytes; /* encoded bytes remaining in the current line (uuencode) */ - - char *inbuff; /* the outbuff by the caller. */ - int s_inbuff; /* the size of the buffer. */ - int pos_inbuff; /* the offset in the current buffer. */ - - - char* tmpfname; /* the temp file to hold the decode data fork */ - /* when doing the binhex exporting. */ - XP_File tmpfd; - int32 data_size; /* the size of the data in the tmp file. */ - -} appledouble_decode_object; - - -/* -** The protypes. -*/ - -XP_BEGIN_PROTOS - -int ap_encode_init(appledouble_encode_object *p_ap_encode_obj, - char* fname, - char* separator); - -int ap_encode_next(appledouble_encode_object* p_ap_encode_obj, - char *to_buff, - int32 buff_size, - int32* real_size); - -int ap_encode_end(appledouble_encode_object* p_ap_encode_obj, - XP_Bool is_aborting); - -int ap_decode_init(appledouble_decode_object* p_ap_decode_obj, - XP_Bool is_apple_single, - XP_Bool write_as_bin_hex, - void *closure); - -int ap_decode_next(appledouble_decode_object* p_ap_decode_obj, - char *in_buff, - int32 buff_size); - -int ap_decode_end(appledouble_decode_object* p_ap_decode_obj, - XP_Bool is_aborting); - -XP_END_PROTOS - -#endif diff --git a/mozilla/lib/libmsg/bh_strm.c b/mozilla/lib/libmsg/bh_strm.c deleted file mode 100644 index a12f4893eee..00000000000 --- a/mozilla/lib/libmsg/bh_strm.c +++ /dev/null @@ -1,415 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* -** -** Binhex_stream.c -** --------------- -** -** The code for the binhex encode/decode stream. -** -** 20sep95 mym Created. -** -*/ - -#include "msg.h" -#include "appledbl.h" -#include "m_binhex.h" -#include "m_cvstrm.h" -#include "ad_codes.h" - -#ifdef XP_MAC -#pragma warn_unusedarg off -#endif /* XP_MAC */ - -/* -** ----------------------------------------------------------- -** -** The BinHex encode writer stream. -** -** ----------------------------------------------------------- -*/ -extern int MK_MIME_ERROR_WRITING_FILE; - -#define WORKING_BUFF_SIZE 8192 - -typedef struct -{ - binhex_encode_object bh_encode_obj; - - char *buff; /* the working buff */ - int32 s_buff; /* the size of workiong buff. */ - - XP_File fp; - char *fname; /* the filename for file holding the encoding */ - -} BinHexEncodeObject ; - - -/* -** Let's go "l" characters forward of the encoding for this write. -** Note: -** "s" is just a dummy paramter. -*/ -PRIVATE int net_BinHex_Encode_Write (void *dataObject, const char* s, int32 l) -{ - int status = 0; - BinHexEncodeObject * obj = (BinHexEncodeObject*)dataObject; - int32 count; - int32 size; - - do - { - size = obj->s_buff * 11 / 16; - size = MIN(l, size); - status = binhex_encode_next(&(obj->bh_encode_obj), - (char*)s, - size, - obj->buff, - obj->s_buff, - &count); - if (status == NOERR || status == errDone) - { - /* - * we get the encode data, so call the next stream to write it to the disk. - */ - if ((int) XP_FileWrite(obj->buff, count, obj->fp) != count ) - return errFileWrite; - } - - if (status < 0) /* abort */ - break; - - l -= size; - s += size; - - } while (l > 0); - - return status; -} - -PRIVATE unsigned int net_BinHex_Encode_Ready (NET_StreamClass *dataObject) -{ - return(MAX_WRITE_READY); /* always ready for writing */ -} - - -PRIVATE void net_BinHex_Encode_Complete (void *dataObject) -{ - int32 count, len = 0; - BinHexEncodeObject *obj = (BinHexEncodeObject *)dataObject; - - /* - ** push the close part. - */ - len = binhex_encode_next(&(obj->bh_encode_obj), - NULL, - 0, - obj->buff, - obj->s_buff, - &count); /* this help us generate the finishing */ - - len = XP_FileWrite(obj->buff, count, obj->fp); - - /* - ** time to do some dirty work -- fix the real file size. - ** (since we can only know by now) - */ - - binhex_reencode_head(&(obj->bh_encode_obj), - obj->buff, - obj->s_buff, - &count); /* get the head part encoded again */ - - XP_FileSeek(obj->fp, 0L, SEEK_SET); /* and override the previous dummy */ - XP_FileWrite(obj->buff, count, obj->fp); - - binhex_encode_end(&(obj->bh_encode_obj), FALSE); /* now we get a real ending */ - - if (obj->fp) - { - XP_FileClose(obj->fp); /* we are done with the target file */ - FREEIF(obj->fname); /* free the space for the file name */ - } - - FREEIF(obj->buff); /* and free the working buff. */ - XP_FREE(obj); -} - -PRIVATE void net_BinHex_Encode_Abort (void *dataObject, int status) -{ - BinHexEncodeObject * obj = (BinHexEncodeObject*)dataObject; - - binhex_encode_end(&(obj->bh_encode_obj), TRUE); /* it is an aborting exist... */ - - if (obj->fp) - { - XP_FileClose(obj->fp); /* we are aboring with the decoding */ - XP_FileRemove(obj->fname, xpURL); - /* remove the incomplete file. */ - FREEIF (obj->fname); /* free the space for the file name */ - } - - FREEIF(obj->buff); /* free the working buff. */ - XP_FREE(obj); -} - - -/* -** Will create a apple double encode stream: -** -** -> take the filename as the input source (it needs to be a mac file.) -** -> tkae a stream to take care of the writing to a temp file. -*/ -PUBLIC NET_StreamClass * -fe_MakeBinHexEncodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - char* dst_filename ) -{ - BinHexEncodeObject* obj; - NET_StreamClass* stream; - char* working_buff = NULL; - int bSize = WORKING_BUFF_SIZE; - - TRACEMSG(("Setting up apple encode stream. Have URL: %s\n", URL_s->address)); - - stream = XP_NEW(NET_StreamClass); - if(stream == NULL) - return(NULL); - - obj = XP_NEW(BinHexEncodeObject); - if (obj == NULL) - { - XP_FREE (stream); - return(NULL); - } - - while (!working_buff && (bSize >= 512)) - { - working_buff = (char *)XP_ALLOC(bSize); - if (!working_buff) - bSize /= 2; - } - if (working_buff == NULL) - { - XP_FREE (obj); - XP_FREE (stream); - return (NULL); - } - - stream->name = "BinHex Encode"; - stream->complete = (MKStreamCompleteFunc) net_BinHex_Encode_Complete; - stream->abort = (MKStreamAbortFunc) net_BinHex_Encode_Abort; - stream->put_block = (MKStreamWriteFunc) net_BinHex_Encode_Write; - stream->is_write_ready = (MKStreamWriteReadyFunc) net_BinHex_Encode_Ready; - stream->data_object = obj; /* document info object */ - stream->window_id = window_id; - - obj->fname = XP_STRDUP(dst_filename); - obj->fp = XP_FileOpen(obj->fname, xpURL, XP_FILE_TRUNCATE); - /* this file will hold all the encoded data */ - if (obj->fp == NULL) - { - XP_FREE(working_buff); /* if we can't open the target file, roll back then */ - if(obj->fname) XP_FREE(obj->fname); - XP_FREE (obj); - XP_FREE (stream); - return (NULL); - } - - obj->buff = working_buff; - obj->s_buff = WORKING_BUFF_SIZE; - - /* - ** setup all the need information on the apple double encoder. - */ - binhex_encode_init(&(obj->bh_encode_obj)); /* pass the file name of the source.*/ - - TRACEMSG(("Returning stream from NET_BinHexEncoder\n")); - - return stream; -} - -/* -** ----------------------------------------------------------- -** -** The BinHex decode writer stream. -** -** ----------------------------------------------------------- -*/ - -typedef struct BinHexDecodeObject -{ - binhex_decode_object bh_decode_obj; - - char* in_buff; - int32 bytes_in_buff; - -} BinHexDecodeObject; - - -PRIVATE int -net_BinHex_Decode_Write ( - void *dataObject, const char* s, int32 l) -{ - int status = NOERR; - BinHexDecodeObject * obj = (BinHexDecodeObject*)dataObject; - int32 size; - - if (obj->bytes_in_buff + l > 1024) - { - size = 1024 - obj->bytes_in_buff; - XP_MEMCPY(obj->in_buff+obj->bytes_in_buff, - s, - size); - s += size; - l -= size; - - status = binhex_decode_next(&(obj->bh_decode_obj), - obj->in_buff, - 1024); - if (status != NOERR) - return status; - - obj->bytes_in_buff = 0; - } - - if (l > 1024) - { - /* we are sure that obj->bytes_in_buff == 0 at this point. */ - status = binhex_decode_next(&(obj->bh_decode_obj), - s, - l); - } - else - { - XP_MEMCPY(obj->in_buff+obj->bytes_in_buff, - s, - l); - obj->bytes_in_buff += l; - } - return status; -} - -/* - * is the stream ready for writeing? - */ -PRIVATE unsigned int net_BinHex_Decode_Ready (void *stream) -{ - return(MAX_WRITE_READY); /* always ready for writing */ -} - - -PRIVATE void net_BinHex_Decode_Complete (void *dataObject) -{ - BinHexDecodeObject *obj = (BinHexDecodeObject *) dataObject; - - if (obj->bytes_in_buff) - { - /* do the last calls. */ - binhex_decode_next(&(obj->bh_decode_obj), - (char *)obj->in_buff, - obj->bytes_in_buff); - obj->bytes_in_buff = 0; - } - - binhex_decode_end(&(obj->bh_decode_obj), FALSE); /* it is a normal clean up classes. */ - - if (obj->in_buff) - XP_FREE(obj->in_buff); - - XP_FREE(obj); -} - -PRIVATE void net_BinHex_Decode_Abort (void *dataObject, int status) -{ - BinHexDecodeObject *obj = (BinHexDecodeObject *)dataObject; - - binhex_decode_end(&(obj->bh_decode_obj), TRUE); /* it is an abort. */ - - if (obj->in_buff) - XP_FREE(obj->in_buff); - - XP_FREE(obj); -} - -/* -** Create the bin hex decode stream. -** -*/ -PUBLIC NET_StreamClass * -fe_MakeBinHexDecodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id ) -{ - BinHexDecodeObject* obj; - NET_StreamClass* stream; - - TRACEMSG(("Setting up bin hex decode stream. Have URL: %s\n", URL_s->address)); - - stream = XP_NEW(NET_StreamClass); - if(stream == NULL) - return(NULL); - - obj = XP_NEW(BinHexDecodeObject); - if (obj == NULL) - { - XP_FREE(stream); - return(NULL); - } - - if ((obj->in_buff = (char *)XP_ALLOC(1024)) == NULL) - { - XP_FREE(obj); - XP_FREE(stream); - return (NULL); - } - - stream->name = "BinHex Decoder"; - stream->complete = (MKStreamCompleteFunc) net_BinHex_Decode_Complete; - stream->abort = (MKStreamAbortFunc) net_BinHex_Decode_Abort; - stream->put_block = (MKStreamWriteFunc) net_BinHex_Decode_Write; - stream->is_write_ready = (MKStreamWriteReadyFunc) net_BinHex_Decode_Ready; - stream->data_object = obj; - stream->window_id = window_id; - - /* - ** Some initial to the object. - */ - obj->bytes_in_buff = 0; - - /* - ** setup all the need information on the apple double encoder. - */ - binhex_decode_init(&(obj->bh_decode_obj),window_id); - #ifdef XP_MAC - obj->bh_decode_obj.mSpec = (FSSpec*)( URL_s->fe_data ); - #endif - TRACEMSG(("Returning stream from NET_BinHexDecode\n")); - - return stream; -} - - diff --git a/mozilla/lib/libmsg/biffmast.cpp b/mozilla/lib/libmsg/biffmast.cpp deleted file mode 100644 index 534be7f7aae..00000000000 --- a/mozilla/lib/libmsg/biffmast.cpp +++ /dev/null @@ -1,786 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - Implementation file for the Biff Master (check to see if there is mail) for multiple - servers. rb -*/ - -#include "msg.h" -#include "msgfpane.h" -#include "msgprefs.h" -#include "msgfinfo.h" -#include "imaphost.h" -#include "msgimap.h" -#include "msgsend.h" -#include "msgmast.h" -#include "client.h" -#include "imap.h" -#include "prefapi.h" -#include "msgbiff.h" -#include "pw_public.h" - - - - -/********************************************************************/ - - -/* OBSOLETE WRAPPER STUFF */ - -extern "C" void MSG_RegisterBiffCallback( MSG_BIFF_CALLBACK /*cb*/ ) -{ - XP_ASSERT(FALSE); -} -extern "C" void MSG_UnregisterBiffCallback() -{ - XP_ASSERT(FALSE); -} -/* Set the preference of how often to run biff. If zero is passed in, then - never check. */ -extern "C" void MSG_SetBiffInterval(int32 /*seconds*/) -{ - XP_ASSERT(FALSE); -} -#ifdef XP_UNIX -/* Set the file to stat, instead of using pop3. This is for the Unix movemail - nonsense. If the filename is NULL (the default), then use pop3. */ -extern "C" void MSG_SetBiffStatFile(const char* filename) -{ -// XP_ASSERT(FALSE); -} -#endif -/* Causes a biff check to occur immediately. This gets caused - automatically by MSG_SetBiffInterval or whenever libmsg gets new mail. */ -extern "C" void MSG_BiffCheckNow(MWContext* /*context*/) -{ - XP_ASSERT(FALSE); -} - - -/* END WRAPPER LEGACY STUFF */ - - - -/**************** T H E B I F F M A S T E R *************************/ - -static MSG_Biff_Master *gBiffMaster = NULL; - -extern "C" void MSG_SetBiffStateAndUpdateFE(MSG_BIFF_STATE newState) -{ - if (gBiffMaster) - gBiffMaster->SetNikiBiffState(newState); -} - - -void MSG_Biff_Master::SetNikiBiffState(MSG_BIFF_STATE state) -{ - if (state != m_state) { - FE_UpdateBiff(state); - // if (m_biffcallback) - // (*m_biffcallback)(state, m_state); - m_state = state; - } -} - - -/* Get and set the current biff state */ -extern "C" MSG_BIFF_STATE MSG_GetBiffState() -{ - if (gBiffMaster) - return (gBiffMaster->GetNikiBiffState()); - return MSG_BIFF_NoMail; -} - - -MSG_BIFF_STATE MSG_Biff_Master::GetNikiBiffState(void) -{ - return m_state; -} - - -extern "C" XP_Bool MSG_Biff_Master_NikiCallingGetNewMail() -{ - return MSG_Biff_Master::NikiCallingGetNewMail(); -} - - -/* static */ -XP_Bool MSG_Biff_Master::NikiCallingGetNewMail(void) -{ - if (gBiffMaster) - return gBiffMaster->NikiBusy(); - return FALSE; -} - - -XP_Bool MSG_Biff_Master::NikiBusy(void) -{ - return m_nikiBusy; -} - -/* static */ -MSG_Pane* MSG_Biff_Master::GetPane(void) -{ - if (gBiffMaster) - return gBiffMaster->m_nikiPane; - return 0L; -} - - -void MSG_Biff_Master::PrefCalls(const char* pref, void* closure) -{ - int32 serverType = 0; - - if (m_biff) - m_biff->PrefsChanged(pref, closure); - PREF_GetIntPref("mail.server_type", &serverType); - if (serverType != m_serverType) - { - m_serverType = serverType; // User switched from POP to IMAP or vice-versa - } - FindNextBiffer(); // someone may be enabled now -} - - -/* static */ -void MSG_Biff_Master::TimerCall(void* /*closure*/) -{ - if (gBiffMaster) - gBiffMaster->TimeIsUp(); -} - - -int PR_CALLBACK -MSG_Biff_Master::PrefsChanged(const char* pref, void* closure) -{ - if (gBiffMaster) - gBiffMaster->PrefCalls(pref, closure); - return 0; -} - -// show progress information to the user, but if the context we are being given is -// our own, then find another one visible to the user and that has to do with mail, -// since the biff context is not visible. - -extern "C" -void MSG_Biff_Master_FE_Progress(MWContext *context, char *msg) -{ - MWContext *msgContext = NULL; - - if (gBiffMaster) - msgContext = gBiffMaster->GetContext(); - if (context == msgContext) - msgContext = gBiffMaster->FindMailContext(); - else - msgContext = context; - FE_Progress(msgContext, msg); -} - - -MWContext* MSG_Biff_Master::FindMailContext(void) -{ - MWContext *context = m_context; - MSG_Pane *mailPane = NULL; - - if (!m_master) - return context; - mailPane = m_master->FindFirstPaneOfType(MSG_FOLDERPANE); - if (!mailPane) - mailPane = m_master->FindFirstPaneOfType(MSG_THREADPANE); - if (mailPane) - context = mailPane->GetContext(); - return context; -} - -MWContext *MSG_GetBiffContext() -{ - return (gBiffMaster) ? gBiffMaster->GetContext() : 0; -} - -MWContext* MSG_Biff_Master::GetContext(void) -{ - return m_context; -} - - -extern "C" int -MSG_BiffCleanupContext(MWContext* context) -{ - if (gBiffMaster) - { - MWContext *ct = context; - - if (!ct) - ct = gBiffMaster->GetContext(); - PREF_UnregisterCallback("mail.", MSG_Biff_Master::PrefsChanged, ct); - delete gBiffMaster; - gBiffMaster = 0; - } - return 0; -} - - - -extern "C" int -MSG_BiffInit(MWContext* context, MSG_Prefs* prefs) -{ - MSG_Biff_Master::Init_Biff_Master(context, prefs); - return 0; -} - -/* static */ -void MSG_Biff_Master::AddBiffFolder(char *name, XP_Bool checkMail, int interval, XP_Bool enabled, char *host) -{ - if (gBiffMaster) - gBiffMaster->AddFolder(name, checkMail, interval, enabled, host); -} - -/* static */ -void MSG_Biff_Master::RemoveBiffFolder(char *name) -{ - if (gBiffMaster) - gBiffMaster->RemoveFolder(name); -} - -void MSG_Biff_Master::RemoveFolder(char *name) -{ - MSG_NikiBiff *biff = m_biff, *prevBiff = NULL; - - while (biff) - { - if (XP_STRCMP(biff->GetName(), name) == 0) - { - if (!prevBiff) - m_biff = biff->RemoveSelf(); - else - prevBiff->SetNext(biff->RemoveSelf()); - return; - } - prevBiff = biff; - biff = biff->GetNext(); - } -} - - -// When we add a folder, see if we have a folder with no name, which would indicate it was -// meant to check for POP3 mail until the user opens the mail component, so re-use that folder -// with the real settings from the user now. - -void MSG_Biff_Master::AddFolder(char *name, XP_Bool checkMail, int interval, XP_Bool enabled, char *host) -{ - MSG_NikiBiff *biff = NULL; - - if (m_biff) - { - if (m_biff->GetName() == NULL) - m_biff = m_biff->RemoveSelf(); - } - biff = new MSG_NikiBiff(); - if (!biff) - return; - biff->SetFolderName(name); - biff->SetInterval(interval); - biff->SetCheckFlag(checkMail); - biff->SetEnabled(enabled); - biff->SetPrefs(m_prefs); - biff->SetHostName(host); - biff->SetContext(m_context); - if (m_biff) - biff->SetNext(m_biff); - m_biff = biff; - FindNextBiffer(); // start our checks if enabled -} - - -/* static */ -void MSG_Biff_Master::Init_Biff_Master(MWContext* context, MSG_Prefs* prefs) -{ - if (!gBiffMaster) - gBiffMaster = new MSG_Biff_Master(); - if (gBiffMaster) - gBiffMaster->Init(context, prefs); -} - -// Our timer has expired, so call whoever was next and then calculate once -// more who will be next - -void MSG_Biff_Master::TimeIsUp() -{ - //if (m_timer) - // FE_ClearTimeout(m_timer); // already cleared by timer API - m_nikiBusy = TRUE; - m_timer = NULL; - if (m_currentBiff) - m_currentBiff->MailCheck(); - m_nikiBusy = FALSE; - FindNextBiffer(); -} - -MSG_Biff_Master::~MSG_Biff_Master() -{ - MSG_NikiBiff *biff; - - if (m_timer) - FE_ClearTimeout(m_timer); - biff = m_biff; - while (biff) - biff = biff->RemoveSelf(); - if (m_nikiContext) - { - PW_AssociateWindowWithContext(m_nikiContext, 0L); // The FE's destroy our windows - PW_DestroyProgressContext(m_nikiContext); - } - m_nikiContext = NULL; -} - - - -MSG_Biff_Master::MSG_Biff_Master() -{ - m_context = m_nikiContext = NULL; - m_nikiPane = NULL; - m_prefs = NULL; - m_biff = m_currentBiff = NULL; - m_timer = NULL; - m_state = MSG_BIFF_Unknown; - m_nikiBusy = FALSE; - m_master = NULL; - FE_UpdateBiff(m_state); -} - - -// Init our stuff, if the user i using POP3 and they have the options for check new mail -// and remember password, then make a fake niki biff object to check for mail. We will -// kill it if they open mail. - -void MSG_Biff_Master::Init(MWContext* context, MSG_Prefs* prefs) -{ - int32 serverType = 0; - - m_context = context; - m_prefs = prefs; - PREF_RegisterCallback("mail.", MSG_Biff_Master::PrefsChanged, m_context); - if (m_prefs) - { - m_master = m_prefs->GetMasterForBiff(); - if (!m_master) - m_master = MSG_InitializeMail(m_prefs); - PREF_GetIntPref("mail.server_type", &serverType); - m_serverType = serverType; - if (m_serverType == 0) // see if they want to check mail, create fake folder for biffing POP3 - { - int32 interval = 0; - XP_Bool checkMail = FALSE, enabled = FALSE; - - PREF_GetIntPref("mail.check_time", &interval); - PREF_GetBoolPref("mail.check_new_mail", &checkMail); - PREF_GetBoolPref("mail.remember_password", &enabled); - AddFolder(NULL, checkMail, interval, enabled, NULL); - } - } - if (!m_nikiContext) - { - XP_Bool show = FALSE; - - PREF_GetBoolPref("mail.progress_pane", &show); - if (show) - { - m_nikiContext = PW_CreateProgressContext(); - if (m_nikiContext) - m_nikiPane = MSG_CreateProgressPane (m_context, m_prefs->GetMasterForBiff(), NULL); - } - } -} - - -/* static */ -void MSG_Biff_Master::MailCheckEnable(char *name, XP_Bool enable) -{ - if (gBiffMaster) - { - gBiffMaster->FindAndEnable(name, enable); - gBiffMaster->FindNextBiffer(); - } -} - - -void MSG_Biff_Master::FindAndEnable(char *name, XP_Bool enable) -{ - MSG_NikiBiff *biff = m_biff; - - while (biff) - { - if (XP_STRCMP(biff->GetName(), name) == 0) - { - biff->SetEnabled(enable); - return; - } - biff = biff->GetNext(); - } -} - - -void MSG_Biff_Master::FindNextBiffer(void) -{ - MSG_NikiBiff *biff = NULL; - time_t low = 0, next = 0, current = 0; - - if (m_timer) - FE_ClearTimeout(m_timer); - m_timer = NULL; - biff = m_biff; - m_currentBiff = NULL; - time(&low); - low += 30000; // make bogus future date - while (biff) - { - next = biff->GetNextBiffTime(); // returns 0 if not active - if (next && (next <= low)) - { - low = next; - m_currentBiff = biff; - } - biff = biff->GetNext(); - } - if (m_currentBiff) // we have a winner ! - { - time(&current); - low = low - current; // stopped on debugger or whatever - if (low < 0) - low = 1; - m_timer = FE_SetTimeout(MSG_Biff_Master::TimerCall, m_context, low * 1000L); - } -} - - - - - - - - -/***********************************************************************/ - - -// I18N - this is a preference string and should not be localized -static const char *kPrefTemplate = "mail.imap.server.%s.%s"; - - -void MSG_NikiBiff::PrefsChanged(const char* pref, void *closure) -{ - char *prefName = NULL; - XP_Bool check = FALSE; - int32 interval = 0; - - // See if our server changed mail_check prefs - if (m_next) - m_next->PrefsChanged(pref, closure); - if (!m_host) // POP3 - { - PREF_GetIntPref("mail.check_time", &interval); - m_interval = interval * 60; - - PREF_GetBoolPref("mail.check_new_mail", &check); - m_needsToCheck = check; - - PREF_GetBoolPref("mail.pop3_gets_new_mail", &check); - m_pop3GetsMail = check; - return; - } - if (XP_STRSTR(pref, m_host) && (XP_STRSTR(pref, "check_time") || XP_STRSTR(pref, "check_new_mail") || - XP_STRSTR(pref, "get_headers"))) - { - prefName = (char*) XP_ALLOC(200); - if (!prefName) - return; - PR_snprintf(prefName, 200, kPrefTemplate, m_host, "check_time"); - PREF_GetIntPref(prefName, &interval); - m_interval = interval * 60; - - PR_snprintf(prefName, 200, kPrefTemplate, m_host, "check_new_mail"); - PREF_GetBoolPref(prefName, &check); - m_needsToCheck = check; - - PREF_GetBoolPref("mail.imap.new_mail_get_headers", &check); - m_getHeaders = check; - XP_FREE(prefName); - } -} - - -char * MSG_NikiBiff::GetName(void) -{ - return m_folderName; -} - - -void MSG_NikiBiff::SetCallback(void *call) -{ - m_callback = (void*) call; -} - -// If set, and enabled also set the we need to check for new mail, otherwise sleep - -void MSG_NikiBiff::SetCheckFlag(XP_Bool check) -{ - m_needsToCheck = check; -} - - -time_t MSG_NikiBiff::GetNextBiffTime(void) -{ - if (m_needsToCheck && m_enabled && !NET_IsOffline()) - return m_nextTime; - return 0; -} - -// Remove ourselves from the list, the iterator will get our next and give to -// our previous - -MSG_NikiBiff* MSG_NikiBiff::RemoveSelf(void) -{ - MSG_NikiBiff *next = m_next; - - delete this; - return next; -} - -void MSG_NikiBiff::SetInterval(int32 interval) -{ - time_t t; - - m_nextTime = 0; - m_interval = interval * 60; // calculate seconds, since interval is minutes - if (m_interval < 0) - m_interval = 0; - if (m_interval) - { - time(&t); - m_nextTime = t + m_interval; - } -} - -// Set the next guy in out list - -void MSG_NikiBiff::SetNext(MSG_NikiBiff *next) -{ - m_next = next; -} - - -MSG_NikiBiff* MSG_NikiBiff::GetNext(void) -{ - return m_next; -} - - - -MSG_NikiBiff::MSG_NikiBiff() -{ - m_folderName = m_host = NULL; - m_pane = NULL; - m_master = NULL; - m_context = NULL; - m_prefs = NULL; - m_interval = 0; - m_biffStatFile = NULL; - m_next = 0L; - m_nextTime = 0; - m_needsToCheck = m_enabled = FALSE; - m_callback = 0; - m_getHeaders = m_pop3GetsMail = FALSE; -} - - - -MSG_NikiBiff::~MSG_NikiBiff() -{ - FREEIF(m_folderName); - FREEIF(m_biffStatFile); - FREEIF(m_host); -} - - -void MSG_NikiBiff::SetEnabled(XP_Bool enabled) -{ - m_enabled = enabled; -} - - -void MSG_NikiBiff::SetFolderName(char *name) -{ - FREEIF(m_folderName); - m_folderName = NULL; - if (name) - m_folderName = XP_STRDUP(name); -} - -void MSG_NikiBiff::SetHostName(char *host) -{ - XP_Bool check = FALSE; - - FREEIF(m_host); - m_host = NULL; - if (host) - { - m_host = XP_STRDUP(host); - PREF_GetBoolPref("mail.imap.new_mail_get_headers", &check); - m_getHeaders = check; - } else { - PREF_GetBoolPref("mail.pop3_gets_new_mail", &check); - m_pop3GetsMail = check; - } -} - -void MSG_NikiBiff::SetStatFile(char *name) -{ - FREEIF(m_biffStatFile); - m_biffStatFile = NULL; - if (name) - m_biffStatFile = XP_STRDUP(name); -} - - -void MSG_NikiBiff::SetPrefs(MSG_Prefs *prefs) -{ - m_prefs = prefs; -} - - -void MSG_NikiBiff::SetContext(MWContext *context) -{ - m_context = context; -} - - -// If the user does not want us to get their POP3 new mail, but just to check for it... -// then check it. - -void MSG_NikiBiff::OldPOP3Biff(void) -{ - char* url = NULL; - URL_Struct* url_struct = NULL; - - url = PR_smprintf("pop3://%s/?check", MSG_GetPopHost(m_prefs)); - if (!url) - return; - url_struct = NET_CreateURLStruct(url, NET_SUPER_RELOAD); /* Old style biff */ - if (!url_struct) - return; - url_struct->internal_url = TRUE; - msg_InterruptContext(m_context, FALSE); - NET_GetURL(url_struct, FO_PRESENT, m_context, 0L); - XP_FREE(url); /* allocated by PR_smprintf() */ -} - - - -// Reset (recalculate) our time and check for mail if possible - -void MSG_NikiBiff::MailCheck(void) -{ - MSG_FolderInfoMail *mailFolder = NULL; - MSG_IMAPFolderInfoMail *imapFolderNotInView = NULL; - time_t t; - int counter = 0, total = 0; - XPPtrArray panes; - MSG_Pane *pane; - - time(&t); - m_nextTime = t + m_interval; -/* -#ifdef XP_UNIX - XP_StatStruct biffst; - - if (!XP_Stat(biffStatFile, &biffst, xpMailFolder) && biffst.st_size > 0) - MSG_SetBiffStateAndUpdateFE(MSG_BIFF_NewMail); - else - MSG_SetBiffStateAndUpdateFE(MSG_BIFF_NoMail); - #endif -*/ - - if (NET_IsOffline() || !m_prefs) - return; - if (!m_master) - m_master = m_prefs->GetMasterForBiff(); - if (!m_master) - m_master = MSG_InitializeMail(m_prefs); - if (!m_master) - return; // Bogus - - // Later on we can pass the owner name and folder name if not just doing inboxes - if (m_host) // IMAP folder - mailFolder = m_master->FindFolderForNikiBiff("INBOX" /* m_folderName */ , (const char*) m_host, NULL /* owner */ ); - else - mailFolder = m_master->FindFolderForNikiBiff(m_folderName, NULL, NULL); - if (!mailFolder) - { - if (!m_host) - OldPOP3Biff(); - return; - } - if (mailFolder->GetGettingMail()) - { - time(&t); - m_nextTime = t + 30; // try again in 30 seconds since we are busy - return; - } - pane = MSG_Biff_Master::GetPane(); - if (!pane) - { - m_master->FindPanesReferringToFolder (mailFolder, &panes); - total = panes.GetSize(); - m_pane = pane = NULL; - for (counter = 0; counter < total; counter++) - { - pane = (MSG_Pane*) panes.GetAt(counter); - if ((pane && (pane->GetPaneType() == MSG_FOLDERPANE)) || (pane && !m_pane)) // MSG_THREADPANE - m_pane = pane; // find folder pane, or last resort any pane - } - } else - m_pane = pane; - if (!m_pane) // Currently only in use for UNIX, until we get a pane - { - imapFolderNotInView = mailFolder->GetIMAPFolderInfoMail(); // Folder is not opened in any pane, so just borrow one - if (imapFolderNotInView && m_context && !imapFolderNotInView->GetGettingMail() && !imapFolderNotInView->IsLocked()) - imapFolderNotInView->MailCheck(m_context); - return; - } - if (!mailFolder->GetGettingMail() && !mailFolder->IsLocked()) - { - if ((m_host && m_getHeaders) || (!m_host && m_pop3GetsMail)) // POP3 or IMAP - m_pane->GetMailForAFolder((MSG_FolderInfo*) mailFolder); - else - { - imapFolderNotInView = mailFolder->GetIMAPFolderInfoMail(); - if (imapFolderNotInView) - imapFolderNotInView->Biff(m_context); // IMAP Folder, don't get mail - else - OldPOP3Biff(); // POP3, don't get mail - } - } -} - - - - diff --git a/mozilla/lib/libmsg/bytearr.cpp b/mozilla/lib/libmsg/bytearr.cpp deleted file mode 100644 index 0505e288e11..00000000000 --- a/mozilla/lib/libmsg/bytearr.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "xp.h" -#include "bytearr.h" - -#ifdef XP_WIN16 -#define SIZE_T_MAX 0xFF80 // Maximum allocation size -#define MAX_ARR_ELEMS SIZE_T_MAX/sizeof(BYTE) -#endif - - -XPByteArray::XPByteArray() -{ - m_nSize = 0; - m_nMaxSize = 0; - m_pData = NULL; -} - -XPByteArray::~XPByteArray() -{ - SetSize(0); -} - -///////////////////////////////////////////////////////////////////////////// - -int XPByteArray::GetSize() const -{ - return m_nSize; -} - -XP_Bool XPByteArray::SetSize(int nSize) -{ - XP_ASSERT(nSize >= 0); - -#ifdef MAX_ARR_ELEMS - if (nSize > MAX_ARR_ELEMS); - { - XP_ASSERT(nSize <= MAX_ARR_ELEMS); // Will fail - return FALSE; - } -#endif - - if (nSize == 0) - { - // Remove all elements - XP_FREE(m_pData); - m_nSize = 0; - m_nMaxSize = 0; - m_pData = NULL; - } - else if (m_pData == NULL) - { - // Create a new array - m_nMaxSize = MAX(8, nSize); - m_pData = (BYTE *)XP_CALLOC(1, m_nMaxSize * sizeof(BYTE)); - if (m_pData) - m_nSize = nSize; - else - m_nSize = m_nMaxSize = 0; - } - else if (nSize <= m_nMaxSize) - { - // The new size is within the current maximum size, make sure new - // elements are to initialized to zero - if (nSize > m_nSize) - XP_MEMSET(&m_pData[m_nSize], 0, (nSize - m_nSize) * sizeof(BYTE)); - - m_nSize = nSize; - } - else - { - // The array needs to grow, figure out how much - int nGrowBy, nMaxSize; - nGrowBy = MIN(1024, MAX(8, m_nSize / 8)); - nMaxSize = MAX(nSize, m_nMaxSize + nGrowBy); -#ifdef MAX_ARR_ELEMS - nMaxSize = MIN(MAX_ARR_ELEMS, nMaxSize); -#endif - - BYTE *pNewData = (BYTE *)XP_ALLOC(nMaxSize * sizeof(BYTE)); - if (pNewData) - { - // Copy the data from the old array to the new one - XP_MEMCPY(pNewData, m_pData, m_nSize * sizeof(BYTE)); - - // Zero out the remaining elements - XP_MEMSET(&pNewData[m_nSize], 0, (nSize - m_nSize) * sizeof(BYTE)); - m_nSize = nSize; - m_nMaxSize = nMaxSize; - - // Free the old array - XP_FREE(m_pData); - m_pData = pNewData; - } - } - - return nSize == m_nSize; -} - -///////////////////////////////////////////////////////////////////////////// - -BYTE &XPByteArray::ElementAt(int nIndex) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -BYTE XPByteArray::GetAt(int nIndex) const -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -void XPByteArray::SetAt(int nIndex, BYTE newElement) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - m_pData[nIndex] = newElement; -} - -///////////////////////////////////////////////////////////////////////////// - -int XPByteArray::Add(BYTE newElement) -{ - int nIndex = m_nSize; - -#ifdef MAX_ARR_ELEMS - if (nIndex >= MAX_ARR_ELEMS) - return -1; -#endif - - SetAtGrow(nIndex, newElement); - return nIndex; -} - -void XPByteArray::InsertAt(int nIndex, BYTE newElement, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nCount > 0); - - if (nIndex >= m_nSize) - { - // If the new element is after the end of the array, grow the array - SetSize(nIndex + nCount); - } - else - { - // The element is being insert inside the array - int nOldSize = m_nSize; - SetSize(m_nSize + nCount); - - // Move the data after the insertion point - XP_MEMMOVE(&m_pData[nIndex + nCount], &m_pData[nIndex], - (nOldSize - nIndex) * sizeof(BYTE)); - } - - // Insert the new elements - XP_ASSERT(nIndex + nCount <= m_nSize); - while (nCount--) - m_pData[nIndex++] = newElement; -} - -void XPByteArray::InsertAt(int nStartIndex, const XPByteArray *pNewArray) -{ - XP_ASSERT(nStartIndex >= 0); - XP_ASSERT(pNewArray != NULL); - - if (pNewArray->GetSize() > 0) - { - InsertAt(nStartIndex, pNewArray->GetAt(0), pNewArray->GetSize()); - for (int i = 1; i < pNewArray->GetSize(); i++) - m_pData[nStartIndex + i] = pNewArray->GetAt(i); - } -} - -void XPByteArray::RemoveAll() -{ - SetSize(0); -} - -void XPByteArray::RemoveAt(int nIndex, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nIndex + nCount <= m_nSize); - - if (nCount > 0) - { - // Make sure not to overstep the end of the array - int nMoveCount = m_nSize - (nIndex + nCount); - if (nCount && nMoveCount >= 0) - XP_MEMMOVE(&m_pData[nIndex], &m_pData[nIndex + nCount], - nMoveCount * sizeof(BYTE)); - - m_nSize -= nCount; - } -} - -void XPByteArray::SetAtGrow(int nIndex, BYTE newElement) -{ - XP_ASSERT(nIndex >= 0); - - if (nIndex >= m_nSize) - SetSize(nIndex+1); - m_pData[nIndex] = newElement; -} diff --git a/mozilla/lib/libmsg/bytearr.h b/mozilla/lib/libmsg/bytearr.h deleted file mode 100644 index 90cf00f1eca..00000000000 --- a/mozilla/lib/libmsg/bytearr.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _ByteArray_H_ -#define _ByteArray_H_ - -#if !defined(_WINDOWS) && !defined(XP_OS2) -typedef uint8 BYTE; -#endif - -class XPByteArray -{ -public: - // Construction/destruction - XPByteArray(); - ~XPByteArray(); - - // State/attribute member functions - int GetSize() const; - XP_Bool SetSize(int nNewSize); - - // Accessor member functions - BYTE &ElementAt(int nIndex); - BYTE GetAt(int nIndex) const; - void SetAt(int nIndex, BYTE newElement); - - // Insertion/deletion member functions - int Add(BYTE newElement); - void InsertAt(int nIndex, BYTE newElement, int nCount = 1); - void InsertAt(int nStartIndex, const XPByteArray *pNewArray); - void RemoveAll(); - void RemoveAt(int nIndex, int nCount = 1); - void SetAtGrow(int nIndex, BYTE newElement); - - // Overloaded operators - BYTE operator[](int nIndex) const { return GetAt(nIndex); } - BYTE &operator[](int nIndex) { return ElementAt(nIndex); } - - // Use the result carefully, it is only valid until another function called on the array - BYTE *GetArray(void) {return((BYTE *)m_pData);} - -protected: - // Member data - int m_nSize; - int m_nMaxSize; - BYTE* m_pData; -}; - -#endif diff --git a/mozilla/lib/libmsg/chngntfy.cpp b/mozilla/lib/libmsg/chngntfy.cpp deleted file mode 100644 index 71cb272bdd5..00000000000 --- a/mozilla/lib/libmsg/chngntfy.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "chngntfy.h" - -ChangeAnnouncer::ChangeAnnouncer() -{ -} - -ChangeAnnouncer::~ChangeAnnouncer() -{ - XP_ASSERT(GetSize() == 0); // better not be any listeners, because we're going away. -} - -XP_Bool ChangeAnnouncer::AddListener(ChangeListener *listener) -{ - XPPtrArray::Add((void *) listener); - return TRUE; -} - -XP_Bool ChangeAnnouncer::RemoveListener(ChangeListener *listener) -{ - for (int i = 0; i < GetSize(); i++) - { - if ((ChangeListener *) GetAt(i) == listener) - { - RemoveAt(i); - return TRUE; - } - } - return FALSE; -} - -// convenience routines to notify all our ChangeListeners -void ChangeAnnouncer::NotifyViewChangeAll(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator) -{ - for (int i = 0; i < GetSize(); i++) - { - ChangeListener *changeListener = (ChangeListener *) GetAt(i); - - changeListener->OnViewChange(startIndex, numChanged, changeType, - instigator); - } -} - -// convenience routines to notify all our ChangeListeners -void ChangeAnnouncer::NotifyViewStartChangeAll(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator) -{ - for (int i = 0; i < GetSize(); i++) - { - ChangeListener *changeListener = (ChangeListener *) GetAt(i); - - changeListener->OnViewStartChange(startIndex, numChanged, changeType, - instigator); - } -} - -// convenience routines to notify all our ChangeListeners -void ChangeAnnouncer::NotifyViewEndChangeAll(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator) -{ - for (int i = 0; i < GetSize(); i++) - { - ChangeListener *changeListener = (ChangeListener *) GetAt(i); - - changeListener->OnViewEndChange(startIndex, numChanged, changeType, - instigator); - } -} - - -void ChangeAnnouncer::NotifyKeyChangeAll(MessageKey keyChanged, int32 flags, - ChangeListener *instigator) -{ - for (int i = 0; i < GetSize(); i++) - { - ChangeListener *changeListener = (ChangeListener *) GetAt(i); - - changeListener->OnKeyChange(keyChanged, flags, instigator); - } -} - -void ChangeAnnouncer::NotifyAnnouncerGoingAway(ChangeAnnouncer *instigator) -{ - if (instigator == NULL) - instigator = this; // not sure about this - should listeners even care? - for (int i = 0; i < GetSize(); i++) - { - ChangeListener *changeListener = (ChangeListener *) GetAt(i); - - changeListener->OnAnnouncerGoingAway(instigator); - } -} - -void ChangeAnnouncer::NotifyAnnouncerChangingView(ChangeAnnouncer *instigator, MessageDBView *newView) -{ - if (instigator == NULL) - instigator = this; // not sure about this - should listeners even care? - for (int i = 0; i < GetSize(); i++) - { - ChangeListener *changeListener = (ChangeListener *) GetAt(i); - - changeListener->OnAnnouncerChangingView(instigator, newView); - } -} - -ChangeListener::ChangeListener() -{ -} - -ChangeListener::~ChangeListener() -{ -} - -// virtual inlines... -void ChangeListener::OnViewChange(MSG_ViewIndex /*startInd*/, int32 /*numChanged*/, - MSG_NOTIFY_CODE /* changeType */, ChangeListener * /*instigator*/) {} -void ChangeListener::OnViewStartChange(MSG_ViewIndex /*startInd*/, int32 /*numChanged*/, - MSG_NOTIFY_CODE /* changeType */, ChangeListener * /*instigator*/) {} -void ChangeListener::OnViewEndChange(MSG_ViewIndex /*startInd*/, int32 /*numChanged*/, - MSG_NOTIFY_CODE /* changeType */, ChangeListener * /*instigator*/) {} -void ChangeListener::OnKeyChange(MessageKey /*keyChanged*/, int32 /*flags*/, - ChangeListener * /*instigator*/) {} -void ChangeListener::OnAnnouncerGoingAway(ChangeAnnouncer * /*instigator*/) {} -void ChangeListener::OnAnnouncerChangingView(ChangeAnnouncer * /* instigator */, MessageDBView * /* view */) {} - - - diff --git a/mozilla/lib/libmsg/chngntfy.h b/mozilla/lib/libmsg/chngntfy.h deleted file mode 100644 index d336f4dad2c..00000000000 --- a/mozilla/lib/libmsg/chngntfy.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _ChngNtfy_H_ -#define _ChngNtfy_H_ - -#include "ptrarray.h" - -class ChangeListener; -class MessageDBView; - -class ChangeAnnouncer : public XPPtrArray // array of ChangeListeners -{ -public: - ChangeAnnouncer(); - virtual ~ChangeAnnouncer(); - virtual XP_Bool AddListener(ChangeListener *listener); - virtual XP_Bool RemoveListener(ChangeListener *listener); - - // convenience routines to notify all our ChangeListeners - void NotifyViewChangeAll(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator); - void NotifyViewStartChangeAll(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator); - void NotifyViewEndChangeAll(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator); - void NotifyKeyChangeAll(MessageKey keyChanged, int32 flags, - ChangeListener *instigator); - void NotifyAnnouncerGoingAway(ChangeAnnouncer *instigator); - void NotifyAnnouncerChangingView(ChangeAnnouncer *instigator, MessageDBView *newView); -}; - -class ChangeListener -{ -public: - ChangeListener(); - virtual ~ChangeListener(); - // do nothing notification routines - subclass to do something. - // New notification routines need to be added here as do nothing routines - virtual void OnViewChange(MSG_ViewIndex /*startInd*/, int32 /*numChanged*/, - MSG_NOTIFY_CODE /* changeType */, ChangeListener * /*instigator*/); - virtual void OnViewStartChange(MSG_ViewIndex /*startInd*/, int32 /*numChanged*/, - MSG_NOTIFY_CODE /* changeType */, ChangeListener * /*instigator*/) ; - virtual void OnViewEndChange(MSG_ViewIndex /*startInd*/, int32 /*numChanged*/, - MSG_NOTIFY_CODE /* changeType */, ChangeListener * /*instigator*/) ; - virtual void OnKeyChange(MessageKey /*keyChanged*/, int32 /*flags*/, - ChangeListener * /*instigator*/) ; - virtual void OnAnnouncerGoingAway(ChangeAnnouncer * /*instigator*/) ; - virtual void OnAnnouncerChangingView(ChangeAnnouncer * /* instigator */, MessageDBView * /* view */) ; -}; - -#endif diff --git a/mozilla/lib/libmsg/dberror.h b/mozilla/lib/libmsg/dberror.h deleted file mode 100644 index 6a5383dcb1b..00000000000 --- a/mozilla/lib/libmsg/dberror.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef DBERROR_H -#define DBERROR_H - -#include "errcode.h" - -/* General errors */ -MsgError (msgErrorDb, eFAILURE, 0xFFFF) /* -1 Unqualified DB failure */ -MsgError (msgErrorDb, eBAD_PARAMETER, 0xFFFE) /* -2 Null pointer, empty string, etc. */ -MsgError (msgErrorDb, eMORE, 0xFFFD) /* -3 More work to do. */ -MsgError (msgErrorDb, eNYI, 0xFFFC) /* -4 Not yet implemented */ -MsgError (msgErrorDb, eEXCEPTION, 0xFFFB) /* -5 An unexpected exception occurred */ -MsgError (msgErrorDb, eBAD_VIEW_INTF, 0xFFFA) /* -6 COM intf to view layer is out of sync */ -MsgError (msgErrorDb, eBAD_DB_INTF, 0xFFF9) /* -7 COM intf to db is out of sync */ -MsgError (msgErrorDb, eID_NOT_FOUND, 0xFFF8) /* -8 Message id not found */ -MsgError (msgErrorDb, eDBEndOfList, 0xFFF7) /* -9 iterator reached end of db */ -MsgError (msgErrorDb, eBAD_URL, 0xFFF5) /* -11 Unable to parse URL */ -/* NewsRC errors */ -MsgError (msgErrorDb, eNewsRCError, 0xFFF4) /* -10 General news rc error */ -/* News errors */ -MsgError (msgErrorDb, eXOverParseError, 0xFFF3) /* -13 Error parsing XOver data */ -/* Internal db errors */ -MsgError (msgErrorDb, eDBExistsNot, 0xFFF2) /* -14 db doesn't exist */ -MsgError (msgErrorDb, eDBNotOpen, 0xFFF1) /* -15 our db is not open (or ptr NULL) */ -MsgError (msgErrorDb, eErrorOpeningDB, 0xFFF0) /* -16 Error opening internal db */ -MsgError (msgErrorDb, eOldSummaryFile, 0xFFE0) /* -32 Attempt to oepn old summary file format */ -MsgError (msgErrorDb, eNullView, 0xFFE1) /* -31 View Null */ -MsgError (msgErrorDb, eNotThread, 0xFFE2) /* -30 operation requires a thread */ -MsgError (msgErrorDb, eNoSummaryFile, 0xFFE3) /* -31 summary file was gone */ -MsgError (msgErrorDb, eBuildViewInBackground, 0xFFE4) /* -32 db is huge - build view in background */ -MsgError (msgErrorDb, eCorruptDB, 0xFFE5) /* -33 db is corrupt - throw it away */ -/* Platform System Errors */ - -MsgError (msgErrorDb, eOUT_OF_MEMORY, 0xFF7F) /* -129 Out of memory for buffer or file-level objects */ - -/* file errors */ -MsgError (msgErrorDb, eWRITE_ERROR, 0xFFC0) /* -64 Error writing to disk */ -#endif diff --git a/mozilla/lib/libmsg/dwordarr.cpp b/mozilla/lib/libmsg/dwordarr.cpp deleted file mode 100644 index 832d96139be..00000000000 --- a/mozilla/lib/libmsg/dwordarr.cpp +++ /dev/null @@ -1,285 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp.h" -#include "dwordarr.h" -#include "xp_qsort.h" - -#ifdef XP_WIN16 -#define SIZE_T_MAX 0xFF80 // Maximum allocation size -#define MAX_ARR_ELEMS SIZE_T_MAX/sizeof(uint32) -#endif - - -XPDWordArray::XPDWordArray() -{ - m_nSize = 0; - m_nMaxSize = 0; - m_nGrowBy = 0; - m_pData = NULL; -} - -XPDWordArray::~XPDWordArray() -{ - SetSize(0); -} - -///////////////////////////////////////////////////////////////////////////// - -int XPDWordArray::GetSize() const -{ - return m_nSize; -} - -XP_Bool XPDWordArray::SetSize(int nSize, int nGrowBy) -{ - XP_ASSERT(nSize >= 0); - - if (nGrowBy >= 0) - m_nGrowBy = nGrowBy; - -#ifdef MAX_ARR_ELEMS - if (nSize > MAX_ARR_ELEMS); - { - XP_ASSERT(nSize <= MAX_ARR_ELEMS); // Will fail - return FALSE; - } -#endif - - if (nSize == 0) - { - // Remove all elements - XP_FREE(m_pData); - m_nSize = 0; - m_nMaxSize = 0; - m_pData = NULL; - } - else if (m_pData == NULL) - { - // Create a new array - m_nMaxSize = MAX(8, nSize); - m_pData = (uint32 *)XP_CALLOC(1, m_nMaxSize * sizeof(uint32)); - if (m_pData) - m_nSize = nSize; - else - m_nSize = m_nMaxSize = 0; - } - else if (nSize <= m_nMaxSize) - { - // The new size is within the current maximum size, make sure new - // elements are to initialized to zero - if (nSize > m_nSize) - XP_MEMSET(&m_pData[m_nSize], 0, (nSize - m_nSize) * sizeof(uint32)); - - m_nSize = nSize; - } - else - { - // The array needs to grow, figure out how much - int nMaxSize; - nGrowBy = MAX(m_nGrowBy, MIN(1024, MAX(8, m_nSize / 8))); - nMaxSize = MAX(nSize, m_nMaxSize + nGrowBy); -#ifdef MAX_ARR_ELEMS - nMaxSize = MIN(MAX_ARR_ELEMS, nMaxSize); -#endif - - uint32 *pNewData = (uint32 *)XP_ALLOC(nMaxSize * sizeof(uint32)); - if (pNewData) - { - // Copy the data from the old array to the new one - XP_MEMCPY(pNewData, m_pData, m_nSize * sizeof(uint32)); - - // Zero out the remaining elements - XP_MEMSET(&pNewData[m_nSize], 0, (nSize - m_nSize) * sizeof(uint32)); - m_nSize = nSize; - m_nMaxSize = nMaxSize; - - // Free the old array - XP_FREE(m_pData); - m_pData = pNewData; - } - } - - return nSize == m_nSize; -} - -///////////////////////////////////////////////////////////////////////////// - -uint32 &XPDWordArray::ElementAt(int nIndex) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -uint32 XPDWordArray::GetAt(int nIndex) const -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -uint32 *XPDWordArray::GetData() -{ - return m_pData; -} - -void XPDWordArray::SetAt(int nIndex, uint32 newElement) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - m_pData[nIndex] = newElement; -} - -///////////////////////////////////////////////////////////////////////////// - -int XPDWordArray::Add(uint32 newElement) -{ - int nIndex = m_nSize; - -#ifdef MAX_ARR_ELEMS - if (nIndex >= MAX_ARR_ELEMS) - return -1; -#endif - - SetAtGrow(nIndex, newElement); - return nIndex; -} - -uint XPDWordArray::Add(uint32 *elementPtr, uint numElements) -{ - if (SetSize(m_nSize + numElements)) - XP_MEMCPY(m_pData + m_nSize, elementPtr, numElements * sizeof(uint32)); - - return m_nSize; -} - -uint32 *XPDWordArray::CloneData() -{ - uint32 *copyOfData = (uint32 *)XP_ALLOC(m_nSize * sizeof(uint32)); - if (copyOfData) - XP_MEMCPY(copyOfData, m_pData, m_nSize * sizeof(uint32)); - - return copyOfData; -} - -void XPDWordArray::InsertAt(int nIndex, uint32 newElement, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nCount > 0); - - if (nIndex >= m_nSize) - { - // If the new element is after the end of the array, grow the array - SetSize(nIndex + nCount); - } - else - { - // The element is being insert inside the array - int nOldSize = m_nSize; - SetSize(m_nSize + nCount); - - // Move the data after the insertion point - XP_MEMMOVE(&m_pData[nIndex + nCount], &m_pData[nIndex], - (nOldSize - nIndex) * sizeof(uint32)); - } - - // Insert the new elements - XP_ASSERT(nIndex + nCount <= m_nSize); - while (nCount--) - m_pData[nIndex++] = newElement; -} - -void XPDWordArray::InsertAt(int nStartIndex, const XPDWordArray *pNewArray) -{ - XP_ASSERT(nStartIndex >= 0); - XP_ASSERT(pNewArray != NULL); - - if (pNewArray->GetSize() > 0) - { - InsertAt(nStartIndex, pNewArray->GetAt(0), pNewArray->GetSize()); - for (int i = 1; i < pNewArray->GetSize(); i++) - m_pData[nStartIndex + i] = pNewArray->GetAt(i); - } -} - -void XPDWordArray::RemoveAll() -{ - SetSize(0); -} - -void XPDWordArray::RemoveAt(int nIndex, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nIndex + nCount <= m_nSize); - - if (nCount > 0) - { - // Make sure not to overstep the end of the array - int nMoveCount = m_nSize - (nIndex + nCount); - if (nCount && nMoveCount) - XP_MEMMOVE(&m_pData[nIndex], &m_pData[nIndex + nCount], - nMoveCount * sizeof(uint32)); - - m_nSize -= nCount; - } -} - -void XPDWordArray::SetAtGrow(int nIndex, uint32 newElement) -{ - XP_ASSERT(nIndex >= 0); - - if (nIndex >= m_nSize) - SetSize(nIndex+1); - m_pData[nIndex] = newElement; -} - -///////////////////////////////////////////////////////////////////////////// - -void XPDWordArray::CopyArray(XPDWordArray *oldA) -{ - CopyArray(*oldA); -} - -void XPDWordArray::CopyArray(XPDWordArray &oldA) -{ - if (m_pData) - XP_FREE(m_pData); - m_nSize = oldA.m_nSize; - m_nMaxSize = oldA.m_nMaxSize; - m_pData = (uint32 *)XP_ALLOC(m_nSize * sizeof(uint32)); - if (m_pData) - XP_MEMCPY(m_pData, oldA.m_pData, m_nSize * sizeof(uint32)); -} - -///////////////////////////////////////////////////////////////////////////// - -static int CompareDWord (const void *v1, const void *v2) -{ - // QuickSort callback to compare array values - uint32 i1 = *(uint32 *)v1; - uint32 i2 = *(uint32 *)v2; - return i1 - i2; -} - -void XPDWordArray::QuickSort (int (*compare) (const void *elem1, const void *elem2)) -{ - if (m_nSize > 1) - XP_QSORT (m_pData, m_nSize, sizeof(void*), compare ? compare : CompareDWord); -} diff --git a/mozilla/lib/libmsg/dwordarr.h b/mozilla/lib/libmsg/dwordarr.h deleted file mode 100644 index 2b16514d114..00000000000 --- a/mozilla/lib/libmsg/dwordarr.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef _DWordArray_H_ -#define _DWordArray_H_ - -class XPDWordArray -{ -public: - // Construction/destruction - XPDWordArray(); - ~XPDWordArray(); - - // State/attribute member functions - int GetSize() const; - XP_Bool SetSize(int nNewSize, int nGrowBy = -1); - - // Accessor member functions - uint32 &ElementAt(int nIndex); - uint32 GetAt(int nIndex) const; - uint32 *GetData(); - void SetAt(int nIndex, uint32 newElement); - - // Insertion/deletion member functions - int Add(uint32 newElement); - uint Add(uint32 *elementPtr, uint numElements); - void InsertAt(int nIndex, uint32 newElement, int nCount = 1); - void InsertAt(int nStartIndex, const XPDWordArray *pNewArray); - void RemoveAll(); - void RemoveAt(int nIndex, int nCount = 1); - void SetAtGrow(int nIndex, uint32 newElement); - - // Sorting member functions - void QuickSort(int (*compare) (const void *elem1, const void *elem2) = NULL); - - // Overloaded operators - uint32 operator[](int nIndex) const { return GetAt(nIndex); } - uint32 &operator[](int nIndex) { return ElementAt(nIndex); } - - // Miscellaneous member functions - uint32 *CloneData(); - void CopyArray(XPDWordArray *oldA); - void CopyArray(XPDWordArray &oldA); - -protected: - // Member data - int m_nSize; - int m_nMaxSize; - int m_nGrowBy; - uint32* m_pData; -}; - - -#endif // _DWordArray_H_ diff --git a/mozilla/lib/libmsg/errcode.h b/mozilla/lib/libmsg/errcode.h deleted file mode 100644 index f0fb0306f09..00000000000 --- a/mozilla/lib/libmsg/errcode.h +++ /dev/null @@ -1,122 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// errcode.h - -#ifndef _ERRCODE_H_ -#define _ERRCODE_H_ - - -/* -** Error classifications (Database, RPC, Network, etc) -** -** Each error classification defines a range of up to 0xffff error codes. -** -** The top word of an msgERR is the classification, the low byte is an error -** offset within that classification. -** -** For diagnostic purposes, each classification can register it's strings for GetErrorString -** support. These are NOT nationalizable strings; the string tables are autogenerated from the -** MsgError() macro machinery, not stored in .rc files. They're intended for use in debugging, -** logfiles, etc. -*/ - -typedef uint32 MsgERR; -typedef MsgERR msgErrorClass; - -#define msgErrorDb 0xFF000000 /* DB errors (generic) */ -#define msgErrorVw 0xF8000000 /* View layer */ -#define msgErrorMisc 0xF0000000 /* Random miscellaneous errors. */ -#define msgErrorOk 0x00000000 - -/* -** GetErrorClass(msgERR) -** -** Returns classification range for an error. -** -** For example, -** if (GetErrorClass(err) == msgErrorRp) -** Alert("Problem chatting with forum service."); -** -*/ -#define GetErrorClass(err) ((err) & ((MsgERR) 0xFFFF0000)) - -/* -** RegisterErrorClass (msgErrorClass, pFn) -** -** Register a function to return error-strings in the given class. -** -** (Note: this could be best done by automatically building a linked list of -** diagnostic routines/classes - by simply using a C++ class for error -** classes, and a static constructor to link each class into the queue. -** However, we've had problems with static constructors within DLL's -** that use MFC and DLL's on NT - so we're avoiding them for now.) -** -** See dberror.cpp (in the database) for an example of an auto-generated diagnostic -** map. The error-code to string mapping function implementation can be generated -** automatically, but the client must register the function manually. -** -** There is no limit on how many ranges a given diagnostic function might handle. -** The function must be registered once for each class, of course. -** -** Normally there will be a function for every specific .h that defines error codes -** (whether that .h defines one or more classes of error codes). For example, -** dberror.h defines 3 error class ranges, so the DB registers one diagnostic function -** that handles those 3 classes accordingly. -** -*/ -//typedef const char * (msgCALLBACK *msgErrorDiagnosticCallback) (msgERR); - -//extern void RegisterErrorClass (msgErrorClass, msgErrorDiagnosticCallback pFn); - -/* -** NOTE: remainder of this file may be multiply-included -** place all one-shot definitions above this point -*/ -#endif // __msgERROR_H__ - - -/* -** Within an error-class range, the errors are allocated/declared independently. -** See, for example, dberror.h, rperror.h, ecerror.h, etc. -*/ - -/* msgError: wrapper-macro for an error code definition */ -#ifndef MsgError -#define MsgError(errorclass, name, offset) const MsgERR name = (MsgERR) (errorclass + offset); -#endif - -/* msgErrorDiagnostic: causes wrapper-macro to generate a diagnostic string */ -#ifndef MsgErrorDiagnostic -#define MsgErrorDiagnostic(errorclass, name, offset) case ((errorclass)+(offset)): return #name; -#endif - -/* -** msgSUCCESS - universal no-error indication (zero). -** '! msgERR' is guaranteed to mean success. -*/ -#ifndef MsgErrorBasic -#define MsgErrorBasic -MsgError (msgErrorOk, eSUCCESS, 0x0000) /* 0 Success */ -MsgError (msgErrorMisc, eUNKNOWN, 0x0001) // 1 Something weird - // happened. -#endif - diff --git a/mozilla/lib/libmsg/filters.cpp b/mozilla/lib/libmsg/filters.cpp deleted file mode 100644 index a7afe12abe4..00000000000 --- a/mozilla/lib/libmsg/filters.cpp +++ /dev/null @@ -1,1573 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "msg_filt.h" /* public API */ -#include "pmsgfilt.h" /* private API */ -#include "pmsgsrch.h" /* private Search API */ -#include "msgimap.h" -#include "msgprefs.h" -#include "xpgetstr.h" -#include "msgstrob.h" -#include "imaphost.h" - -extern "C" -{ - extern int XP_FILTER_MOVE_TO_FOLDER; - extern int XP_FILTER_CHANGE_PRIORITY; - extern int XP_FILTER_DELETE; - extern int XP_FILTER_MARK_READ; - extern int XP_FILTER_KILL_THREAD; - extern int XP_FILTER_WATCH_THREAD; -} - -const int16 kFileVersion = 6; -const int16 kFileVersionOldMoveTarget = 5; -#if defined(XP_WIN) || defined(XP_OS2) -const int16 kFileVersionAbsPath = 3; -#endif -const int16 kFileVersionOldStream = 2; - -// This will return a zero length string ("") instead of NULL on -// empty strings. If this is a problem, we will need a way to -// distinguish memory allocation failures from empty strings. -static int XP_FileReadAllocStr(char **str, XP_File fid) -{ - int status; - int length; - - if ((status = XP_FileRead(&length, sizeof(length), fid)) < 0) - return status; - *str = (char *) XP_ALLOC(length + 1); - if (*str != NULL) - { - if (length > 0) - status = XP_FileRead(*str, length, fid); - (*str)[length] = '\0'; - } - return status; -} - -// ------------ FilterList methods ------------------ -MSG_FilterError MSG_OpenFilterList(MSG_Master *master, MSG_FilterType type, MSG_FilterList **filterList) -{ - return MSG_FilterList::Open(master, type, NULL, NULL, filterList); -} - -MSG_FilterError MSG_OpenFolderFilterList(MSG_Pane *pane, MSG_FolderInfo *folder, MSG_FilterType type, MSG_FilterList **filterList) -{ - return MSG_FilterList::Open(pane->GetMaster(), type, pane, folder, filterList); -} - -MSG_FilterError MSG_OpenFolderFilterListFromMaster(MSG_Master *master, MSG_FolderInfo *folder, MSG_FilterType type, MSG_FilterList **filterList) -{ - return MSG_FilterList::Open(master, type, NULL, folder, filterList); -} - -MSG_FilterError MSG_FilterList::Open(MSG_Master *master, MSG_FilterType type, MSG_FilterList **filterList) -{ - return MSG_FilterList::Open(master, type, NULL, NULL, filterList); -} -// static method to open a filter list from persistent storage -MSG_FilterError MSG_FilterList::Open(MSG_Master *master, MSG_FilterType type, MSG_Pane *pane, MSG_FolderInfo *folderInfo, MSG_FilterList **filterList) -{ - MSG_FilterError err = FilterError_Success; - XP_File fid; - XP_StatStruct outStat; - MSG_FilterList *newFilterList; - - if (type != filterInbox - && type != filterNews) - return FilterError_InvalidFilterType; - - if (NULL == filterList) - return FilterError_NullPointer; - - newFilterList = new MSG_FilterList; - if (newFilterList == NULL) - return FilterError_OutOfMemory; - - newFilterList->m_master = master; - - // hack up support for news filters by checking the current folder of the pane and massaging input params. - if (pane != NULL && folderInfo == NULL) - { - folderInfo = pane->GetFolder(); - if (folderInfo) - { - if (folderInfo->IsNews()) - type = filterNews; - } - } - - newFilterList->m_folderInfo = folderInfo; - newFilterList->m_pane = pane; - - *filterList = newFilterList; - const char *upgradeIMAPFiltersDestFileName = 0; - - if (type == filterNews) - { - MSG_FolderInfoNews *newsFolder = folderInfo->GetNewsFolderInfo(); - if (newsFolder) - newFilterList->m_filterFileName = newsFolder->GetXPRuleFileName(); - newFilterList->m_fileType = xpNewsSort; - } - else - { - MSG_IMAPFolderInfoMail *imapMailFolder = (folderInfo) ? folderInfo->GetIMAPFolderInfoMail() : (MSG_IMAPFolderInfoMail *)NULL; - - newFilterList->m_filterFileName = ""; - newFilterList->m_fileType = xpMailSort; - if (imapMailFolder) - { - MSG_IMAPHost *defaultHost = imapMailFolder->GetMaster()->GetIMAPHostTable()->GetDefaultHost(); - if (imapMailFolder->GetIMAPHost() == defaultHost) - { - XP_Bool defaultHostFiltersExist = !XP_Stat(imapMailFolder->GetIMAPHost()->GetHostName(), &outStat, newFilterList->m_fileType); - if (!defaultHostFiltersExist) - upgradeIMAPFiltersDestFileName = imapMailFolder->GetIMAPHost()->GetHostName(); - } - - if (!upgradeIMAPFiltersDestFileName) - newFilterList->m_filterFileName = imapMailFolder->GetIMAPHost()->GetHostName(); - } - - } - - if (XP_Stat(newFilterList->m_filterFileName, &outStat, newFilterList->m_fileType)) - { - // file must not exist - no rules, we're done. - return FilterError_Success; - } - fid = XP_FileOpen(newFilterList->m_filterFileName, newFilterList->m_fileType, XP_FILE_READ_BIN); - if (fid) - { - err = newFilterList->LoadTextFilters(fid); - XP_FileClose(fid); - // if the file version changed, save it out right away. - if (newFilterList->GetVersion() != kFileVersion || upgradeIMAPFiltersDestFileName) - { - if (upgradeIMAPFiltersDestFileName) - newFilterList->m_filterFileName = upgradeIMAPFiltersDestFileName; - newFilterList->Close(); - } - } - else - { - err = FilterError_FileError; - } - - return err; -} - -extern "C" MSG_FolderInfo *MSG_GetFolderInfoForFilterList(MSG_FilterList *filterList) -{ - return filterList ? filterList->GetFolderInfo() : (MSG_FolderInfo *)NULL; -} - -typedef struct -{ - FilterFileAttrib attrib; - const char *attribName; -} FilterFileAttribEntry; - -FilterFileAttribEntry FilterFileAttribTable[] = -{ - {filterAttribNone, ""}, - {filterAttribVersion, "version"}, - {filterAttribLogging, "logging"}, - {filterAttribName, "name"}, - {filterAttribEnabled, "enabled"}, - {filterAttribDescription, "description"}, - {filterAttribType, "type"}, - {filterAttribScriptFile, "scriptName"}, - {filterAttribAction, "action"}, - {filterAttribActionValue, "actionValue"}, - {filterAttribCondition, "condition"} -}; - -// If we want to buffer file IO, wrap it in here. -char MSG_FilterList::ReadChar(XP_File fid) -{ - char newChar; - int status = XP_FileRead(&newChar, sizeof(newChar), fid); - return (status > 0) ? newChar : (char) -1; -} - -XP_Bool MSG_FilterList::IsWhitespace(char ch) -{ - return (ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t'); -} - -char MSG_FilterList::SkipWhitespace(XP_File fid) -{ - char ch; - do - { - ch = ReadChar(fid); - } while (IsWhitespace(ch)); - return ch; -} - -XP_Bool MSG_FilterList::StrToBool(const char *str) -{ - return !XP_STRCASECMP(str, "yes"); -} - -char MSG_FilterList::LoadAttrib(XP_File fid, FilterFileAttrib &attrib) -{ - char attribStr[100]; - char curChar; - - curChar = SkipWhitespace(fid); - int i; - for (i = 0; i + 1 < sizeof(attribStr); ) - { - if (curChar == (char) -1 || IsWhitespace(curChar) || curChar == '=') - break; - attribStr[i++] = curChar; - curChar = ReadChar(fid); - } - attribStr[i] = '\0'; - for (int tableIndex = 0; tableIndex < sizeof(FilterFileAttribTable) / sizeof(FilterFileAttribTable[0]); tableIndex++) - { - if (!XP_STRCASECMP(attribStr, FilterFileAttribTable[tableIndex].attribName)) - { - attrib = FilterFileAttribTable[tableIndex].attrib; - break; - } - } - return curChar; -} - -const char *MSG_FilterList::GetStringForAttrib(FilterFileAttrib attrib) -{ - for (int tableIndex = 0; tableIndex < sizeof(FilterFileAttribTable) / sizeof(FilterFileAttribTable[0]); tableIndex++) - { - if (attrib == FilterFileAttribTable[tableIndex].attrib) - return FilterFileAttribTable[tableIndex].attribName; - } - return NULL; -} - -MSG_FilterError MSG_FilterList::LoadValue(XP_File fid, XPStringObj &value) -{ - char valueStr[100]; - char curChar; - value = ""; - curChar = SkipWhitespace(fid); - if (curChar != '"') - { - XP_ASSERT(FALSE); - return FilterError_FileError; - } - curChar = ReadChar(fid); - for (int i = 0; i + 2 < sizeof(valueStr); ) - { - if (curChar == '\\') - { - char nextChar = ReadChar(fid); - if (nextChar == '"') - curChar = '"'; - else if (nextChar == '\\') // replace "\\" with "\" - { - curChar = ReadChar(fid); - } - else - { - valueStr[i++] = curChar; - curChar = nextChar; - } - } - else - { - if (curChar == (char) -1 || curChar == '"' || curChar == '\n' || curChar == '\r') - { - valueStr[i] = '\0'; - if (XP_STRLEN(value)) - value += (const char *)valueStr; - else - value = (const char *) valueStr; - break; - } - } - valueStr[i++] = curChar; - curChar = ReadChar(fid); - if (i + 2 >= sizeof(valueStr)) - { - valueStr[i] = '\0'; - if (XP_STRLEN(value)) - value += (const char *)valueStr; - else - value = (const char *) valueStr; - i = 0; - } - } - return FilterError_Success; -} - -MSG_FilterError MSG_FilterList::LoadTextFilters(XP_File fid) -{ - MSG_FilterError err = FilterError_Success; - FilterFileAttrib attrib; - - // We'd really like to move lot's of these into the objects that they refer to. - XP_FileSeek(fid, 0, SEEK_SET); - do - { - XPStringObj value; - char curChar = LoadAttrib(fid, attrib); - if (attrib == filterAttribNone) - break; - err = LoadValue(fid, value); - if (err != FilterError_Success) - break; - switch(attrib) - { - case filterAttribNone: - break; - case filterAttribVersion: - m_fileVersion = XP_ATOI(value); - break; - case filterAttribLogging: - m_loggingEnabled = StrToBool(value); - break; - case filterAttribName: - { - MSG_Filter *filter = new MSG_Filter; - if (filter == NULL) - { - err = FilterError_OutOfMemory; - break; - } - filter->SetFilterList(this); - filter->SetName(value); - m_curFilter = filter; - m_filters.Add(filter); - } - break; - case filterAttribEnabled: - if (m_curFilter) - m_curFilter->SetEnabled(StrToBool(value)); - break; - case filterAttribDescription: - if (m_curFilter) - m_curFilter->SetDescription(value); - break; - case filterAttribType: - if (m_curFilter) - { - m_curFilter->SetType((MSG_FilterType) XP_ATOI(value)); - if (!m_curFilter->IsScript()) - { - m_curFilter->m_filter.m_rule = new MSG_Rule(m_curFilter); - if (m_curFilter->m_filter.m_rule == NULL) - err = FilterError_OutOfMemory; - } - } - break; - case filterAttribScriptFile: - if (m_curFilter) - m_curFilter->SetFilterScript(value); - break; - case filterAttribAction: - m_curFilter->m_filter.m_rule->m_action.m_type = MSG_Rule::GetActionForFilingStr(value); - break; - case filterAttribActionValue: - if (m_curFilter->m_filter.m_rule->m_action.m_type == acMoveToFolder) - err = m_curFilter->m_filter.m_rule->ConvertMoveToFolderValue((const char *) value); - else if (m_curFilter->m_filter.m_rule->m_action.m_type == acChangePriority) - m_curFilter->m_filter.m_rule->SetAction(m_curFilter->m_filter.m_rule->m_action.m_type, (void *) (int32) MSG_GetPriorityFromString(value)); - break; - case filterAttribCondition: - err = ParseCondition(value); - break; - } - } while (attrib != filterAttribNone); - return err; -} - -// parse condition like "(subject, contains, fred) AND (body, isn't, "foo)")" -// values with close parens will be quoted. -// what about values with close parens and quotes? e.g., (body, isn't, "foo")") -// I guess interior quotes will need to be escaped - ("foo\")") -// which will get written out as (\"foo\\")\") and read in as ("foo\")" -MSG_FilterError MSG_FilterList::ParseCondition(const char *value) -{ - XP_Bool done = FALSE; - MSG_FilterError err = FilterError_Success; - const char *curPtr = value; - while (!done) - { - // insert code to save the boolean operator if there is one for this search term.... - const char *openParen = XP_STRCHR(curPtr, '('); - const char *orTermPos = XP_STRCHR(curPtr, 'O'); // determine if an "OR" appears before the openParen... - XP_Bool ANDTerm = TRUE; - if (orTermPos && orTermPos < openParen) // make sure OR term falls before the '(' - ANDTerm = FALSE; - - char *termDup = NULL; - if (openParen) - { - XP_Bool foundEndTerm = FALSE; - XP_Bool inQuote = FALSE; - for (curPtr = openParen +1; *curPtr; curPtr++) - { - if (*curPtr == '\\' && *(curPtr + 1) == '"') - curPtr++; - else if (*curPtr == ')' && !inQuote) - { - foundEndTerm = TRUE; - break; - } - else if (*curPtr == '"') - inQuote = !inQuote; - } - if (foundEndTerm) - { - int termLen = curPtr - openParen - 1; - termDup = (char *) XP_ALLOC(termLen + 1); - if (termDup) - XP_STRNCPY_SAFE(termDup, openParen + 1, termLen + 1); - else - { - err = FilterError_OutOfMemory; - break; - } - } - } - else - break; - if (termDup) - { - MSG_SearchTerm *newTerm = new MSG_SearchTerm; - if (newTerm) - newTerm->m_booleanOp = ANDTerm ? MSG_SearchBooleanAND : MSG_SearchBooleanOR; - if (newTerm->DeStreamNew(termDup, XP_STRLEN(termDup)) == SearchError_Success) - m_curFilter->m_filter.m_rule->GetTermList().Add(newTerm); - FREEIF(termDup); - } - else - break; - } - return err; -} - -MSG_FilterError MSG_FilterList::WriteIntAttr(XP_File fid, FilterFileAttrib attrib, int value) -{ - const char *attribStr = GetStringForAttrib(attrib); - if (attribStr) - XP_FilePrintf(fid, "%s=\"%d\"%s", attribStr, value, LINEBREAK); - return FilterError_Success; -} - -MSG_FilterError MSG_FilterList::WriteStrAttr(XP_File fid, FilterFileAttrib attrib, const char *str) -{ - char *escapedStr = NULL; - if (XP_STRCHR(str, '"')) - escapedStr = MSG_SearchTerm::EscapeQuotesInStr(str); - - const char *attribStr = GetStringForAttrib(attrib); - if (attribStr) - XP_FilePrintf(fid, "%s=\"%s\"%s", attribStr, (escapedStr) ? escapedStr : str, LINEBREAK); - FREEIF(escapedStr); - return FilterError_Success; -} - -MSG_FilterError MSG_FilterList::WriteBoolAttr(XP_File fid, FilterFileAttrib attrib, XP_Bool boolVal) -{ - return WriteStrAttr(fid, attrib, (boolVal) ? "yes" : "no"); -} - -MSG_FilterError MSG_FilterList::SaveTextFilters(XP_File fid) -{ - MSG_FilterError err = FilterError_Success; - const char *attribStr; - int32 filterCount = m_filters.GetSize(); - - attribStr = GetStringForAttrib(filterAttribVersion); - err = WriteIntAttr(fid, filterAttribVersion, kFileVersion); - err = WriteBoolAttr(fid, filterAttribLogging, m_loggingEnabled); - for (int i = 0; i < filterCount; i ++) - { - MSG_Filter *filter; - if (GetFilterAt(i, &filter) == FilterError_Success && filter != NULL) - { - filter->SetFilterList(this); - if ((err = filter->SaveToTextFile(fid)) != FilterError_Success) - break; - } - else - break; - } - return err; -} - -MSG_FilterList::MSG_FilterList() : msg_OpaqueObject (m_expectedMagic) -{ - m_loggingEnabled = FALSE; - m_master = NULL; - m_curFilter = NULL; -} - -MSG_FilterList::~MSG_FilterList() -{ - for (int32 i = 0; i < m_filters.GetSize(); i++) - { - MSG_Filter *filter; - if (GetFilterAt(i, &filter) == FilterError_Success) - delete filter; - } -} - -uint32 MSG_FilterList::GetExpectedMagic () -{ - return m_expectedMagic; -} - -// What should we do about file errors here? If we blow away the -// filter list even when we have an error, we can't let the user -// correct the problem. But if we don't blow it away, we'll have -// memory leaks. -MSG_FilterError MSG_CloseFilterList(MSG_FilterList *filterList) -{ - MSG_FilterError err; - - if (filterList == NULL) - return FilterError_NullPointer; - - err = filterList->Close(); - if (err == FilterError_Success) - delete filterList; - return err; -} - -MSG_FilterError MSG_CancelFilterList(MSG_FilterList *filterList) -{ - if (filterList == NULL) - return FilterError_NullPointer; - - delete filterList; - return FilterError_Success; -} - -MSG_FilterError MSG_SaveFilterList(MSG_FilterList *filterList) -{ - if (filterList == NULL) - return FilterError_NullPointer; - - return filterList->Close(); -} - -MSG_FilterError MSG_FilterList::Close() -{ - MSG_FilterError err = FilterError_FileError; - XP_File fid; - XP_FileType retType; - const char *finalName = m_filterFileName; - char *tmpName = (finalName) ? FE_GetTempFileFor(NULL, finalName, m_fileType, &retType) : (char *)NULL; - - - if (!tmpName || !finalName) - return FilterError_OutOfMemory; - fid = XP_FileOpen(tmpName, xpTemporary, - XP_FILE_TRUNCATE_BIN); - if (fid) - { - err = SaveTextFilters(fid); - XP_FileClose(fid); - if (err == FilterError_Success) - { - int status = XP_FileRename(tmpName, xpTemporary, finalName, m_fileType); - XP_ASSERT(status >= 0); - } - } - - FREEIF(tmpName); - return err; -} - -MSG_FilterError MSG_GetFilterCount(MSG_FilterList *filterList, int32 *pCount) -{ - return filterList->GetFilterCount(pCount); -} - - -MSG_FilterError MSG_FilterList::GetFilterCount(int32 *pCount) -{ - if (pCount == NULL) - return FilterError_NullPointer; - *pCount = m_filters.GetSize(); - return FilterError_Success; -} - -MSG_FilterError MSG_GetFilterAt(MSG_FilterList *filterList, MSG_FilterIndex filterIndex, MSG_Filter **filter) -{ - return filterList->GetFilterAt(filterIndex, filter); -} - -MSG_FilterError MSG_FilterList::GetFilterAt(MSG_FilterIndex filterIndex, MSG_Filter **filter) -{ - if (!m_filters.IsValidIndex(filterIndex)) - return FilterError_InvalidIndex; - if (filter == NULL) - return FilterError_NullPointer; - *filter = (MSG_Filter *) m_filters.GetAt(filterIndex); - return FilterError_Success; -} - -MSG_FilterError MSG_SetFilterAt(MSG_FilterList *filterList, MSG_FilterIndex filterIndex, - MSG_Filter *filter) -{ - return filterList->SetFilterAt(filterIndex, filter); -} - -MSG_FilterError MSG_FilterList::SetFilterAt(MSG_FilterIndex filterIndex, MSG_Filter *filter) -{ - m_filters.SetAtGrow(filterIndex, filter); - return FilterError_Success; -} - -MSG_FilterError MSG_RemoveFilterAt(MSG_FilterList *filterList, MSG_FilterIndex filterIndex) -{ - return filterList->RemoveFilterAt(filterIndex); -} - -MSG_FilterError MSG_FilterList::RemoveFilterAt(MSG_FilterIndex filterIndex) -{ - m_filters.RemoveAt(filterIndex, 1); - return FilterError_Success; -} - -MSG_FilterError MSG_InsertFilterAt(MSG_FilterList *filterList, - MSG_FilterIndex filterIndex, MSG_Filter *filter) -{ - return filterList->InsertFilterAt(filterIndex, filter); -} - - -MSG_FilterError MSG_FilterList::InsertFilterAt(MSG_FilterIndex filterIndex, MSG_Filter *filter) -{ - m_filters.InsertAt(filterIndex, filter); - return FilterError_Success; -} - - -MSG_FilterError MSG_MoveFilterAt(MSG_FilterList *filterList, - MSG_FilterIndex filterIndex, MSG_FilterMotion motion) -{ - return filterList->MoveFilterAt(filterIndex, motion); -} - -// Attempt to move the filter at index filterIndex in the specified direction. -// If motion not possible in that direction, we still return success. -// We could return an error if the FE's want to beep or something. -MSG_FilterError MSG_FilterList::MoveFilterAt(MSG_FilterIndex filterIndex, - MSG_FilterMotion motion) -{ - MSG_Filter *tempFilter; - - if (!m_filters.IsValidIndex(filterIndex)) - return FilterError_InvalidIndex; - - tempFilter = (MSG_Filter *) m_filters.GetAt(filterIndex); - if (motion == filterUp) - { - if (filterIndex == 0) - return FilterError_Success; - m_filters.SetAt(filterIndex, m_filters.GetAt(filterIndex - 1)); - m_filters.SetAt(filterIndex - 1, tempFilter); - } - else if (motion == filterDown) - { - if (filterIndex + 1 > (MSG_FilterIndex) (m_filters.GetSize() - 1)) - return FilterError_Success; - m_filters.SetAt(filterIndex, m_filters.GetAt(filterIndex + 1)); - m_filters.SetAt(filterIndex + 1, tempFilter); - } - else - { - return FilterError_InvalidMotion; - } - return FilterError_Success; -} - -MSG_FilterError MSG_EnableLogging(MSG_FilterList *filterList, XP_Bool enable) -{ - if (filterList == NULL) - return FilterError_NullPointer; - filterList->EnableLogging(enable); - return FilterError_Success; -} - -XP_Bool MSG_IsLoggingEnabled(MSG_FilterList *filterList) -{ - if (filterList == NULL) - return FALSE; - return filterList->IsLoggingEnabled(); -} - -#ifdef DEBUG -void MSG_FilterList::Dump() -{ - XP_Trace("%d filters\n", m_filters.GetSize()); - - for (int32 i = 0; i < m_filters.GetSize(); i++) - { - MSG_Filter *filter; - if (GetFilterAt(i, &filter) == FilterError_Success) - filter->Dump(); - } - -} -#endif - -// ------------ End FilterList methods ------------------ - -// ------------ MSG_Filter methods ---------------------- -MSG_Filter::MSG_Filter (MSG_FilterType type, char *name) : msg_OpaqueObject (m_expectedMagic) -{ - m_filterName = XP_STRDUP(name); - m_type = type; - m_description = NULL; - m_enabled = FALSE; - if (IsRule()) - m_filter.m_rule = new MSG_Rule(this); - else - m_filter.m_rule = NULL; - m_dontFileMe = FALSE; -} - -MSG_Filter::MSG_Filter() : msg_OpaqueObject (m_expectedMagic) -{ - m_filterName = NULL; - m_description = NULL; - m_dontFileMe = FALSE; -} - -MSG_Filter::~MSG_Filter () -{ - FREEIF(m_filterName); - FREEIF(m_description); - if (IsRule()) - delete m_filter.m_rule; -} - -MSG_FilterError MSG_CreateFilter (MSG_FilterType type, char *name, MSG_Filter **result) -{ - if (NULL == result || NULL == name) - return FilterError_NullPointer; - - *result = new MSG_Filter(type, name); - if (*result == NULL) - return FilterError_OutOfMemory; - return FilterError_Success; -} - -MSG_FilterError MSG_DestroyFilter(MSG_Filter *filter) -{ - if (NULL == filter) - return FilterError_NullPointer; - delete filter; - return FilterError_Success; -} - -MSG_FilterError MSG_Filter::SaveToTextFile(XP_File fid) -{ - MSG_FilterError err; - - err = m_filterList->WriteStrAttr(fid, filterAttribName, m_filterName); - err = m_filterList->WriteBoolAttr(fid, filterAttribEnabled, m_enabled); - err = m_filterList->WriteStrAttr(fid, filterAttribDescription, m_description); - err = m_filterList->WriteIntAttr(fid, filterAttribType, m_type); - if (IsScript()) - err = m_filterList->WriteStrAttr(fid, filterAttribScriptFile, m_filter.m_scriptFileName); - else - err = m_filter.m_rule->SaveToTextFile(fid); - return err; -} - -MSG_FilterError MSG_GetFilterType(MSG_Filter *filter, MSG_FilterType *filterType) -{ - if (NULL == filterType || NULL == filter) - return FilterError_NullPointer; - *filterType = filter->GetType(); - return FilterError_Success; -} - -MSG_FilterError MSG_EnableFilter(MSG_Filter *filter, XP_Bool enable) -{ - if (NULL == filter) - return FilterError_NullPointer; - filter->SetEnabled(enable); - return FilterError_Success; -} - -MSG_FilterError MSG_IsFilterEnabled(MSG_Filter *filter, XP_Bool *enabled) -{ - if (NULL == filter || NULL == enabled) - return FilterError_NullPointer; - - *enabled = filter->GetEnabled(); - return FilterError_Success; -} - -MSG_FilterError MSG_GetFilterRule(MSG_Filter *filter, MSG_Rule ** result) -{ - if (NULL == filter || NULL == result) - return FilterError_NullPointer; - return filter->GetRule(result); -} - -MSG_FilterError MSG_Filter::GetRule(MSG_Rule **result) -{ - if (!(m_type & (filterInboxRule | filterNewsRule))) - return FilterError_NotRule; - *result = m_filter.m_rule; - return FilterError_Success; -} - -MSG_FilterError MSG_GetFilterName(MSG_Filter *filter, char **name) -{ - return filter->GetName(name); -} - -MSG_FilterError MSG_Filter::GetName(char **name) -{ - *name = m_filterName; - return FilterError_Success; -} - -MSG_FilterError MSG_GetFilterScript(MSG_Filter *filter, char **name) -{ - if (NULL == filter || NULL == name) - return FilterError_NullPointer; - return filter->GetFilterScript(name); -} - -MSG_FilterError MSG_Filter::GetFilterScript(char **name) -{ - if (!(m_type & (filterInboxJavaScript | filterNewsJavaScript))) - return FilterError_NotScript; - *name = m_filter.m_scriptFileName; - return FilterError_Success; -} - -MSG_FilterError MSG_SetFilterScript(MSG_Filter *filter, const char *name) -{ - if (NULL == filter || NULL == name) - return FilterError_NullPointer; - - return filter->SetFilterScript(name); -} - -MSG_FilterError MSG_Filter::SetFilterScript(const char *name) -{ - m_filter.m_scriptFileName = XP_STRDUP(name); - return FilterError_Success; -} - -MSG_FilterError MSG_SetFilterDesc(MSG_Filter *filter, const char *desc) -{ - if (NULL == filter) - return FilterError_NullPointer; - return filter->SetDescription(desc); -} - -MSG_FilterError MSG_SetFilterName(MSG_Filter *filter, const char *name) -{ - if (NULL == filter) - return FilterError_NullPointer; - return filter->SetName(name); -} - -MSG_FilterError MSG_Filter::SetDescription(const char *desc) -{ - FREEIF(m_description); - m_description = XP_STRDUP(desc); - return FilterError_Success; -} - -MSG_FilterError MSG_Filter::SetName(const char *name) -{ - FREEIF(m_filterName); - m_filterName = XP_STRDUP(name); - return FilterError_Success; -} - -MSG_FilterError MSG_GetFilterDesc(MSG_Filter *filter, char **desc) -{ - return filter->GetDescription(desc); -} - -MSG_FilterError MSG_Filter::GetDescription(char **desc) -{ - *desc = m_description; - return FilterError_Success; -} - -#ifdef DEBUG -void MSG_Filter::Dump() -{ - XP_Trace("filter %s type %d enabled %s\n", m_filterName, m_type, - m_enabled ? "TRUE" : "FALSE"); - XP_Trace("desc = %s\n", m_description); - if (IsRule()) - { - m_filter.m_rule->Dump(); - } - else - { - XP_Trace("script file = %s\n", m_filter.m_scriptFileName); - } - -} -#endif - -// ------------ End MSG_Filter methods ------------------ -MSG_Rule::MSG_Rule(MSG_Filter *filter) : msg_OpaqueObject(m_expectedMagic) -{ - m_scope = NULL; - m_action.m_type = acNone; - m_action.m_originalServerPath = NULL; - m_filter = filter; -} - -const char *MSG_Rule::kImapPrefix = "//imap:"; - -MSG_Rule::~MSG_Rule() -{ - for (int i = 0; i < m_termList.GetSize(); i++) - { - MSG_SearchTerm * term = (MSG_SearchTerm *) m_termList.GetAt(i); - if (term == NULL) - continue; - delete term; - } - if (m_scope != NULL) - delete m_scope; - if (acMoveToFolder == m_action.m_type) - { - FREEIF(m_action.m_value.m_folderName); - FREEIF(m_action.m_originalServerPath); - } -} -MSG_FilterError MSG_Rule::SaveToTextFile(XP_File fid) -{ - MSG_FilterError err = FilterError_Success; - MSG_Master *master = GetFilter()->GetMaster(); - char *relativePath = NULL; - const char *folderDirectory; - MSG_FilterList *filterList = m_filter->GetFilterList(); - - err = filterList->WriteStrAttr(fid, filterAttribAction, GetActionFilingStr(m_action.m_type)); - if (err != FilterError_Success) - return err; - switch(m_action.m_type) - { - case acMoveToFolder: - folderDirectory = master->GetPrefs()->GetFolderDirectory(); - // if path starts off with folder directory, strip it off. - if (!XP_STRNCASECMP(m_action.m_value.m_folderName, folderDirectory, XP_STRLEN(folderDirectory))) - { - relativePath = m_action.m_value.m_folderName + XP_STRLEN(folderDirectory); - if (*relativePath == '/') - relativePath++; - err = filterList->WriteStrAttr(fid, filterAttribActionValue, relativePath); - } - else - { - if (!m_action.m_originalServerPath && m_action.m_value.m_folderName) - { - // attempt to convert full path to server path - MSG_IMAPFolderInfoMail *imapMailFolder = (filterList->GetFolderInfo()) ? filterList->GetFolderInfo()->GetIMAPFolderInfoMail() : (MSG_IMAPFolderInfoMail *)NULL; - MSG_IMAPFolderInfoContainer *imapContainer = (imapMailFolder) ? imapMailFolder->GetIMAPContainer() : GetFilter()->GetMaster()->GetImapMailFolderTree(); - if (imapContainer) - { - MSG_IMAPFolderInfoMail *imapFolder = (MSG_IMAPFolderInfoMail *) imapContainer->FindMailPathname(m_action.m_value.m_folderName); - if (imapFolder) - m_action.m_originalServerPath = XP_STRDUP(imapFolder->GetOnlineName()); - } - - if (!m_action.m_originalServerPath) - m_action.m_originalServerPath = XP_STRDUP(""); // emergency fallback - } - - if (m_action.m_originalServerPath) - { - char *imapTargetString = (char *)XP_ALLOC(XP_STRLEN(kImapPrefix) + XP_STRLEN(m_action.m_originalServerPath) + 1); - if (imapTargetString) - { - XP_STRCPY(imapTargetString, kImapPrefix); - XP_STRCAT(imapTargetString, m_action.m_originalServerPath); - err = filterList->WriteStrAttr(fid, filterAttribActionValue, imapTargetString); - XP_FREE(imapTargetString); - } - } - } - break; - case acChangePriority: - { - char priority[50]; - MSG_GetUntranslatedPriorityName (m_action.m_value.m_priority, priority, sizeof(priority)); - err = filterList->WriteStrAttr(fid, filterAttribActionValue, priority); - } - break; - default: - break; - } - // and here we begin - file out term list... - int searchIndex; - XPStringObj condition = " "; // do not inser the open paren.... - for (searchIndex = 0; searchIndex < m_termList.GetSize() && err == FilterError_Success; - searchIndex++) - { - char *stream; - int16 length; - MSG_SearchError searchError; - - MSG_SearchTerm * term = (MSG_SearchTerm *) m_termList.GetAt(searchIndex); - if (term == NULL) - continue; - - if (XP_STRLEN(condition) > 1) - condition += ' '; - - if (term->m_booleanOp == MSG_SearchBooleanOR) - condition += "OR ("; - else - condition += "AND ("; - - searchError = term->EnStreamNew(&stream, &length); - if (searchError != SearchError_Success) - { - err = FilterError_SearchError; - break; - } - - condition += stream; - condition += ')'; - XP_FREE(stream); - } - if (err == FilterError_Success) - err = filterList->WriteStrAttr(fid, filterAttribCondition, condition); - return err; -} - - - -MSG_FilterError MSG_Rule::ConvertMoveToFolderValue(const char *relativePath) -{ - MSG_Master *master = GetFilter()->GetMaster(); - const char *folderDirectory; - MSG_FilterList *filterList = m_filter->GetFilterList(); - if (relativePath) - { - folderDirectory = master->GetPrefs()->GetFolderDirectory(); - // ### dmb - check to see if the start of the dest folder name is the - // mail directory. If not, add the directory name back on. In general, - // the mail directory won't be there, so this is upgrade code. - - // km add check to make sure we don't prepend the mail dir to an imap path - const char *imapDirectory = master->GetPrefs()->GetIMAPFolderDirectory(); - - if (GetFilter()->GetVersion() <= kFileVersionOldMoveTarget) - { - if (XP_STRNCASECMP(relativePath, folderDirectory, XP_STRLEN(folderDirectory)) && - XP_STRNCASECMP(relativePath, imapDirectory, XP_STRLEN(imapDirectory)) ) - { - m_action.m_value.m_folderName = PR_smprintf("%s/%s", master->GetPrefs()->GetFolderDirectory(), relativePath); - } - else - { - m_action.m_originalServerPath = NULL; - m_action.m_value.m_folderName = XP_STRDUP(relativePath); - - // upgrade: save m_originalServerPath - MSG_IMAPFolderInfoMail *imapMailFolder = (filterList->GetFolderInfo()) ? filterList->GetFolderInfo()->GetIMAPFolderInfoMail() : (MSG_IMAPFolderInfoMail *)NULL; - MSG_IMAPFolderInfoContainer *imapContainer = (imapMailFolder) ? imapMailFolder->GetIMAPContainer() : GetFilter()->GetMaster()->GetImapMailFolderTree(); - if (imapContainer) - { - MSG_IMAPFolderInfoMail *imapFolder = (MSG_IMAPFolderInfoMail *) imapContainer->FindMailPathname(relativePath); - if (imapFolder) - m_action.m_originalServerPath = XP_STRDUP(imapFolder->GetOnlineName()); - } - - if (!m_action.m_originalServerPath) - { - // did the user switch servers?? - FREEIF(m_action.m_value.m_folderName); - m_action.m_value.m_folderName = XP_STRDUP(""); - } - } - } - else - { - if (XP_STRNCMP(MSG_Rule::kImapPrefix, relativePath, XP_STRLEN(MSG_Rule::kImapPrefix))) - m_action.m_value.m_folderName = PR_smprintf("%s/%s", master->GetPrefs()->GetFolderDirectory(), relativePath); - else - { - m_action.m_originalServerPath = XP_STRDUP(relativePath + XP_STRLEN(MSG_Rule::kImapPrefix)); - // convert the server path to the local full path - MSG_IMAPFolderInfoMail *imapMailFolder = (filterList->GetFolderInfo()) ? filterList->GetFolderInfo()->GetIMAPFolderInfoMail() : (MSG_IMAPFolderInfoMail *)NULL; - MSG_IMAPFolderInfoContainer *imapContainer = (imapMailFolder) ? imapMailFolder->GetIMAPContainer() : GetFilter()->GetMaster()->GetImapMailFolderTree(); - - MSG_IMAPFolderInfoMail *imapFolder = NULL; - if (imapContainer) - imapFolder = GetFilter()->GetMaster()->FindImapMailFolder(imapContainer->GetHostName(), relativePath + XP_STRLEN(MSG_Rule::kImapPrefix), NULL, FALSE); - if (imapFolder) - m_action.m_value.m_folderName = XP_STRDUP(imapFolder->GetPathname()); - else - { - // did the user switch servers?? - // we'll still save this filter, the filter code in the mail parser will handle this case - m_action.m_value.m_folderName = XP_STRDUP(""); - } - } - } -#if defined(XP_WIN) || defined(XP_OS2) - if (GetFilter()->GetVersion() <= kFileVersionAbsPath) - { - XP_File folderFile = XP_FileOpen(m_action.m_value.m_folderName, xpMailFolder, XP_FILE_READ_BIN); - char *mailPart = m_action.m_value.m_folderName; - char *newFolderName = NULL; - while (!folderFile) // dest got messed up - try to fix by finding "mail" part of path - { // preprending mail directory, and seeing if the folder exists. - if (newFolderName) - XP_FREE(newFolderName); - mailPart = strcasestr(mailPart + 1, "mail"); - if (mailPart) - { - newFolderName = PR_smprintf("%s/%s", folderDirectory, mailPart + 5); - folderFile = XP_FileOpen(newFolderName, xpMailFolder, XP_FILE_READ_BIN); - } - else - { - newFolderName = XP_STRDUP(INBOX_FOLDER_NAME); -#ifdef DEBUG_bienvenu - FE_Alert(NULL, "Couldn't find destination for move rule"); -#endif - break; - } - } - if (newFolderName) - { - XP_FREE(m_action.m_value.m_folderName); - m_action.m_value.m_folderName = newFolderName; - } - - if (folderFile) - XP_FileClose(folderFile); - } -#endif - } - return FilterError_Success; -} - -MSG_FilterError MSG_RuleAddTerm(MSG_Rule *rule, - MSG_SearchAttribute attrib, /* attribute for this term */ - MSG_SearchOperator op, /* operator e.g. opContains */ - MSG_SearchValue *value, /* value e.g. "Fred" */ - XP_Bool booleanAND, /* set to true of boolean operator is AND */ - char * arbitraryHeader) /* the "Other..." header the user manually provided the FE. - ignored by BE unless attrib is attribOtherHeader */ -{ - if (NULL == rule) - return FilterError_NullPointer; - - return rule->AddTerm(attrib, op, value, booleanAND, arbitraryHeader); -} - -MSG_FilterError MSG_Rule::AddTerm( - MSG_SearchAttribute attrib, /* attribute for this term */ - MSG_SearchOperator op, /* operator e.g. opContains */ - MSG_SearchValue *value, /* value e.g. "Fred" */ - XP_Bool booleanAND, /* set to TRUE if boolean operator is AND */ - char * arbitraryHeader) /* arbitrary header provided by user. ignored unless attrib = attribOtherHeader */ -{ - MSG_SearchTerm *newSearchTerm = new MSG_SearchTerm(attrib, op, value, booleanAND, arbitraryHeader); - if (newSearchTerm == NULL) - return FilterError_OutOfMemory; - m_termList.Add(newSearchTerm); - return FilterError_Success; -} - -MSG_FilterError MSG_RuleGetNumTerms(MSG_Rule *rule, int32 *numTerms) -{ - if (NULL == rule || NULL == numTerms) - return FilterError_NullPointer; - - return rule->GetNumTerms(numTerms); -} - -MSG_FilterError MSG_Rule::GetNumTerms(int32 *numTerms) -{ - *numTerms = m_termList.GetSize(); - return FilterError_Success; -} - -MSG_FilterError MSG_RuleGetTerm(MSG_Rule *rule, int32 termIndex, - MSG_SearchAttribute *attrib, /* attribute for this term */ - MSG_SearchOperator *op, /* operator e.g. opContains */ - MSG_SearchValue *value, /* value e.g. "Fred" */ - XP_Bool * booleanAND, /* Boolean AND operator */ - char ** arbitraryHeader) -{ - if (NULL == rule || NULL == attrib || NULL == op) - return FilterError_NullPointer; - return rule->GetTerm(termIndex, attrib, op, value, booleanAND, arbitraryHeader); -} - -MSG_FilterError MSG_Rule::GetTerm(int32 termIndex, - MSG_SearchAttribute *attrib, /* attribute for this term */ - MSG_SearchOperator *op, /* operator e.g. opContains */ - MSG_SearchValue *value, /* value e.g. "Fred" */ - XP_Bool * BooleanAND, - char ** arbitraryHeader) -{ - // we're going to leave the first element empty, like search does - MSG_SearchTerm *term = (MSG_SearchTerm *) m_termList.GetAt(termIndex); - if (term == NULL) - return FilterError_InvalidIndex; - *attrib = term->m_attribute; - *op = term->m_operator; - *value = term->m_value; - if (BooleanAND) - * BooleanAND = term->IsBooleanOpAND(); - if (arbitraryHeader) - * arbitraryHeader = term->m_arbitraryHeader; - return FilterError_Success; -} - -MSG_FilterError MSG_RuleSetScope(MSG_Rule *rule, MSG_ScopeTerm *scope) -{ - if (NULL == rule || NULL == scope) - return FilterError_NullPointer; - - return FilterError_NotImplemented; -} - -MSG_FilterError MSG_RuleGetScope(MSG_Rule *rule, MSG_ScopeTerm **scope) -{ - if (NULL == rule || NULL == scope) - return FilterError_NullPointer; - - return FilterError_NotImplemented; -} - -/* if type is acChangePriority, value is a pointer to priority. - If type is acMoveToFolder, value is pointer to folder name. - Otherwise, value is ignored. -*/ -MSG_FilterError MSG_RuleSetAction(MSG_Rule *rule, MSG_RuleActionType type, void *value) -{ - if (NULL == rule) // value is sometimes legally NULL here... - return FilterError_NullPointer; - - return rule->SetAction(type, value); -} - - -MSG_FilterError MSG_Rule::SetAction(MSG_RuleActionType type, void *value) -{ - m_action.m_type = type; - switch (type) - { - case acMoveToFolder: - if (value == NULL) - return FilterError_NullPointer; - m_action.m_value.m_folderName = XP_STRDUP((char *) value); - - // reset m_action.m_originalServerPath to NULL, the SaveToTextFile - // function will convert m_action.m_value.m_folderName to the right - // m_action.m_originalServerPath and write it out. - FREEIF(m_action.m_originalServerPath); - m_action.m_originalServerPath = NULL; // FREEIF does this but prevent - // future changes from breaking this - break; - case acChangePriority: - if (value == NULL) - return FilterError_NullPointer; - m_action.m_value.m_priority = (MSG_PRIORITY ) (int32) value; - break; - default: - break; - } - return FilterError_Success; -} - -MSG_FilterError MSG_RuleGetAction(MSG_Rule *rule, MSG_RuleActionType *type, void **value) -{ - if (NULL == rule || NULL == value || NULL == type) - return FilterError_NullPointer; - - return rule->GetAction(type, value); -} - -MSG_FilterError MSG_Rule::GetAction(MSG_RuleActionType *type, void **value) -{ - *type = m_action.m_type; - switch (*type) - { - case acMoveToFolder: - - * (char **) value = (m_action.m_value.m_folderName); - break; - case acChangePriority: - * (MSG_PRIORITY *) value = m_action.m_value.m_priority; - break; - default: - break; - } - return FilterError_Success; -} - -/* help FEs manage menu choices in Filter dialog box */ -extern "C" -MSG_FilterError MSG_GetRuleActionMenuItems( - MSG_FilterType type, /* type of filter */ - MSG_RuleMenuItem *items, /* array of caller-allocated structs */ - uint16 *maxItems) /* in- max array size; out- num returned */ -{ - if (NULL == items || NULL == maxItems) - return FilterError_NullPointer; - - return MSG_Rule::GetActionMenuItems(type, items, maxItems); -} - -// for each action, this table encodes the filterTypes that support the action. -struct RuleActionsTableEntry -{ - MSG_RuleActionType action; - MSG_FilterType supportedTypes; - int xp_strIndex; - const char *actionFilingStr; /* used for filing out filters, don't translate! */ -}; - -// Because some native C++ compilers can't initialize static objects with ints, -// we can't initialize this structure directly, so we have to do it in two phases. -static struct RuleActionsTableEntry ruleActionsTable[] = -{ - { acMoveToFolder, filterInbox, 0, /*XP_FILTER_MOVE_TO_FOLDER*/ "Move to folder" }, - { acChangePriority, filterInbox, 0, /*XP_FILTER_CHANGE_PRIORITY*/ "Change priority"}, - { acDelete, filterAll, 0, /*XP_FILTER_DELETE */ "Delete"}, - { acMarkRead, filterAll, 0, /*XP_FILTER_MARK_READ */ "Mark read"}, - { acKillThread, filterAll, 0, /*XP_FILTER_KILL_THREAD */ "Ignore thread"}, - { acWatchThread, filterAll, 0, /*XP_FILTER_WATCH_THREAD */ "Watch thread"} -}; - -/*static*/ void MSG_Rule::InitActionsTable() -{ - if (ruleActionsTable[0].xp_strIndex == 0) - { - ruleActionsTable[0].xp_strIndex = XP_FILTER_MOVE_TO_FOLDER; - ruleActionsTable[1].xp_strIndex = XP_FILTER_CHANGE_PRIORITY; - ruleActionsTable[2].xp_strIndex = XP_FILTER_DELETE; - ruleActionsTable[3].xp_strIndex = XP_FILTER_MARK_READ; - ruleActionsTable[4].xp_strIndex = XP_FILTER_KILL_THREAD; - ruleActionsTable[5].xp_strIndex = XP_FILTER_WATCH_THREAD; - } -} -/*static */char *MSG_Rule::GetActionStr(MSG_RuleActionType action) -{ - int numActions = sizeof(ruleActionsTable) / sizeof(ruleActionsTable[0]); - - InitActionsTable(); - for (int i = 0; i < numActions; i++) - { - if (action == ruleActionsTable[i].action) - return XP_GetString(ruleActionsTable[i].xp_strIndex); - } - return ""; -} - -/*static */const char *MSG_Rule::GetActionFilingStr(MSG_RuleActionType action) -{ - int numActions = sizeof(ruleActionsTable) / sizeof(ruleActionsTable[0]); - - for (int i = 0; i < numActions; i++) - { - if (action == ruleActionsTable[i].action) - return ruleActionsTable[i].actionFilingStr; - } - return ""; -} - - -MSG_RuleActionType MSG_Rule::GetActionForFilingStr(const char *actionStr) -{ - int numActions = sizeof(ruleActionsTable) / sizeof(ruleActionsTable[0]); - - for (int i = 0; i < numActions; i++) - { - if (!XP_STRCASECMP(ruleActionsTable[i].actionFilingStr, actionStr)) - return ruleActionsTable[i].action; - } - return acNone; -} - -MSG_FilterError MSG_Rule::GetActionMenuItems( - MSG_FilterType type, - MSG_RuleMenuItem *items, /* array of caller-allocated structs */ - uint16 *maxItems) /* in- max array size; out- num returned */ -{ - int numActions = sizeof(ruleActionsTable) / sizeof(ruleActionsTable[0]); - int numReturned = 0; - - InitActionsTable(); - for (int i = 0; i < numActions; i++) - { - if (numReturned >= *maxItems) - break; - if (type & ruleActionsTable[i].supportedTypes) - { - items[numReturned].attrib = ruleActionsTable[i].action; - char *name = XP_GetString(ruleActionsTable[i].xp_strIndex); - XP_STRNCPY_SAFE (items[numReturned].name, name, sizeof(items[numReturned].name)); - numReturned++; - } - } - *maxItems = numReturned; - return FilterError_Success; -} - -extern "C" MSG_FilterError MSG_GetFilterWidgetForAction( MSG_RuleActionType action, - MSG_SearchValueWidget *widget ) -{ - switch (action) { - case acMoveToFolder: - case acChangePriority: - *widget = widgetMenu; - break; - case acNone: - case acDelete: - case acMarkRead: - case acKillThread: - case acWatchThread: - default: - *widget = widgetNone; - break; - } - return FilterError_Success; -} - -extern "C" MSG_SearchError MSG_GetValuesForAction( MSG_RuleActionType action, - MSG_SearchMenuItem *items, - uint16 *maxItems) -{ - const MSG_PRIORITY aiPriorityValues[] = { MSG_NoPriority, - MSG_LowestPriority, - MSG_LowPriority, - MSG_NormalPriority, - MSG_HighPriority, - MSG_HighestPriority }; - - uint16 nPriorities = sizeof(aiPriorityValues) / sizeof(MSG_PRIORITY); - uint16 i; - - switch (action) { - case acChangePriority: - for ( i = 0; i < nPriorities && i < *maxItems; i++ ) { - items[i].attrib = (int16) aiPriorityValues[i]; - MSG_GetUntranslatedPriorityName( (MSG_PRIORITY) items[i].attrib, - items[i].name, - sizeof( items[i].name ) / sizeof(char) ); - items[i].isEnabled = TRUE; - } - *maxItems = i; - if ( i == nPriorities ) { - return SearchError_Success; - } else { - return SearchError_ListTooSmall; - } - default: - *maxItems = 0; - return SearchError_InvalidAttribute; - } -} - -void MSG_ViewFilterLog(MSG_Pane *pane) -{ - char *filterLogName = WH_FileName("", xpMailFilterLog); - char *platformFileName = XP_PlatformFileToURL(filterLogName); - URL_Struct *url_struct = NET_CreateURLStruct(platformFileName, NET_NORMAL_RELOAD); - pane->GetURL(url_struct, TRUE); - FREEIF(filterLogName); - FREEIF(platformFileName); -} - - -#ifdef DEBUG -void MSG_Rule::Dump() -{ - XP_Trace("action type = %d, \n", m_action.m_type); - switch (m_action.m_type) - { - case acMoveToFolder: - XP_Trace("dest folder = %s\n", m_action.m_value.m_folderName); - break; - case acChangePriority: - XP_Trace("result priority = %d\n", m_action.m_value.m_priority); - break; - default: - break; - } - - for (int i = 0; i < m_termList.GetSize(); i++) - { - MSG_SearchTerm * term = (MSG_SearchTerm *) m_termList.GetAt(i); - if (term == NULL) - continue; - XP_Trace("search term attr = %d op = %d\n", term->m_attribute, - term->m_operator); - switch (term->m_attribute) - { - case attribDate: - XP_Trace("date = %ld\n", (long) term->m_value.u.date); - break; - case attribPriority: - XP_Trace("priority = %d\n", term->m_value.u.priority); - break; - case attribMsgStatus: - XP_Trace("msg_status = %lx\n", (long) term->m_value.u.msgStatus); - break; - case attribSender : - case attribSubject: - case attribBody: - case attribTo: - case attribCC: - case attribToOrCC: - XP_Trace("value = %s\n", term->m_value.u.string); - break; - default: - break; - } - } -} -#endif - -/* ---------- Private implementation ---------- */ - -uint32 MSG_Rule::m_expectedMagic = 0x44444444; -uint32 MSG_Filter::m_expectedMagic = 0x55555555; -uint32 MSG_FilterList::m_expectedMagic = 0x66666666; - diff --git a/mozilla/lib/libmsg/grec.cpp b/mozilla/lib/libmsg/grec.cpp deleted file mode 100644 index e08ea368359..00000000000 --- a/mozilla/lib/libmsg/grec.cpp +++ /dev/null @@ -1,629 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" - -#include "grec.h" - -extern "C" { - extern int MK_OUT_OF_MEMORY; -} - -const uint32 F_ISGROUP = 0x00000001; -const uint32 F_EXPANDED = 0x00000002; -const uint32 F_CATCONT = 0x00000004; -const uint32 F_PROFILE = 0x00000008; -const uint32 F_DIRTY = 0x00000010; -const uint32 F_DESCENDENTSLOADED = 0x00000020; -const uint32 F_HTMLOKGROUP = 0x00000040; -const uint32 F_HTMLOKTREE = 0x00000080; -const uint32 F_NEEDEXTRAINFO = 0x00000100; -const uint32 F_DOESNOTEXIST = 0x00000200; -const uint32 RUNTIMEFLAGS = // Flags to be sure *not* to write to disk. - F_DIRTY | F_DESCENDENTSLOADED | F_EXPANDED; - - - -int -msg_GroupRecord::GroupNameCompare(const char* name1, const char* name2, char delimiter) -{ - while (*name1 && *name1 == *name2) { - name1++; - name2++; - } - if (*name1 && *name2) { - if (*name1 == delimiter) return -1; - if (*name2 == delimiter) return 1; - } - return int(*name1) - int(*name2); -} - - -msg_GroupRecord* -msg_GroupRecord::Create(msg_GroupRecord* parent, const char* partname, - time_t time, int32 uniqueid, int32 fileoffset) -{ - msg_GroupRecord* result = new msg_GroupRecord(parent, partname, - time, uniqueid, fileoffset); - if (result && partname && !result->m_partname) { - // We ran out of memory. - delete result; - result = NULL; - } - return result; -} - - -msg_GroupRecord::msg_GroupRecord(msg_GroupRecord* parent, const char* partname, - time_t time, int32 uniqueid, int32 fileoffset, - char delimiter /* = '.' */) -{ - int length; - m_prettyname = NULL; - m_parent = parent; - m_children = NULL; - m_sibling = NULL; - m_flags = 0; - m_partname = NULL; - m_addtime = time; - m_uniqueId = uniqueid; - m_fileoffset = fileoffset; - m_delimiter = delimiter; - if (partname) { - length = XP_STRLEN(partname); - // XP_ASSERT(parent != NULL); - m_partname = new char [length + 1]; - if (!m_partname) { - m_parent = NULL; - return; - } - XP_STRCPY(m_partname, partname); - } - - if (parent) { - XP_ASSERT(partname != NULL); - msg_GroupRecord** ptr; - for (ptr = &(parent->m_children) ; *ptr ; ptr = &((*ptr)->m_sibling)) { - int comp = GroupNameCompare((*ptr)->m_partname, partname, m_delimiter); - XP_ASSERT(comp != 0); - if (comp >= 0) break; - } - m_sibling = *ptr; - *ptr = this; - } - -} - - -msg_GroupRecord::~msg_GroupRecord() -{ - delete [] m_partname; - m_partname = NULL; - delete [] m_prettyname; - m_prettyname = NULL; - while (m_children) { - delete m_children; - } - m_children = NULL; - if (m_parent) { - msg_GroupRecord** ptr; - for (ptr = &(m_parent->m_children); - *ptr; - ptr = &((*ptr)->m_sibling)) { - if (*ptr == this) { - *ptr = m_sibling; - break; - } - } - } -} - - - -msg_GroupRecord* -msg_GroupRecord::FindDescendant(const char* name) -{ - if (!name || !*name) return this; - char* ptr = XP_STRCHR(name, m_delimiter); - if (ptr) *ptr = '\0'; - msg_GroupRecord* child; - for (child = m_children ; child ; child = child->m_sibling) { - if (XP_STRCMP(child->m_partname, name) == 0) { - break; - } - } - if (ptr) { - *ptr++ = m_delimiter; - if (child) { - return child->FindDescendant(ptr); - } - } - return child; -} - - -msg_GroupRecord* -msg_GroupRecord::GetSiblingOrAncestorSibling() -{ - if (m_sibling) return m_sibling; - if (m_parent) return m_parent->GetSiblingOrAncestorSibling(); - return NULL; -} - -msg_GroupRecord* -msg_GroupRecord::GetNextAlphabetic() -{ - msg_GroupRecord* result; - if (m_children) result = m_children; - else result = GetSiblingOrAncestorSibling(); -#ifdef DEBUG_slowAndParanoid - if (result) { - char* ptr1 = GetFullName(); - char* ptr2 = result->GetFullName(); - XP_ASSERT(GroupNameCompare(ptr1, ptr2) < 0); - delete [] ptr1; - delete [] ptr2; - } -#endif - return result; -} - -msg_GroupRecord* -msg_GroupRecord::GetNextAlphabeticNoCategories() -{ - if (IsCategoryContainer()) { - return GetSiblingOrAncestorSibling(); - } else { - return GetNextAlphabetic(); - } -} - - -char* -msg_GroupRecord::GetFullName() -{ - int length = 0; - msg_GroupRecord* ptr; - for (ptr = this ; ptr ; ptr = ptr->m_parent) { - if (ptr->m_partname) length += XP_STRLEN(ptr->m_partname) + 1; - } - XP_ASSERT(length > 0); - if (length <= 0) return NULL; - char* result = new char [length]; - if (result) { - SuckInName(result); - XP_ASSERT(int(XP_STRLEN(result)) + 1 == length); - } - return result; -} - - -char* -msg_GroupRecord::SuckInName(char* ptr) -{ - if (m_parent && m_parent->m_partname) { - ptr = m_parent->SuckInName(ptr); - *ptr++ = m_delimiter; - } - XP_STRCPY(ptr, m_partname); - return ptr + XP_STRLEN(ptr); -} - - - -int -msg_GroupRecord::SetPrettyName(const char* name) -{ - if (name == NULL && m_prettyname == NULL) return 0; - m_flags |= F_DIRTY; - delete [] m_prettyname; - m_prettyname = NULL; - if (!name || !*name) { - return 0; - } - int length = XP_STRLEN(name); - m_prettyname = new char [length + 1]; - if (!m_prettyname) { - return MK_OUT_OF_MEMORY; - } - XP_STRCPY(m_prettyname, name); - return 1; -} - - -XP_Bool -msg_GroupRecord::IsCategory() -{ - return GetCategoryContainer() != NULL; -} - -XP_Bool -msg_GroupRecord::IsCategoryContainer() -{ - return (m_flags & F_CATCONT) != 0; -} - -XP_Bool -msg_GroupRecord::NeedsExtraInfo() -{ - return (m_flags & F_NEEDEXTRAINFO) != 0; -} - -int -msg_GroupRecord::SetNeedsExtraInfo(XP_Bool value) -{ - return TweakFlag(F_NEEDEXTRAINFO, value); -} - - -int -msg_GroupRecord::SetIsCategoryContainer(XP_Bool value) -{ - // refuse to set a group to be a category container if it has a parent - // that's a category container. - if (! (value && GetCategoryContainer())) - return TweakFlag(F_CATCONT, value); - else - return 0; -} - - -msg_GroupRecord* -msg_GroupRecord::GetCategoryContainer() -{ - if (IsCategoryContainer()) return NULL; - for (msg_GroupRecord* ptr = m_parent ; ptr ; ptr = ptr->m_parent) { - if (ptr->IsCategoryContainer()) return ptr; - } - return NULL; -} - - -XP_Bool -msg_GroupRecord::IsProfile() -{ - return (m_flags & F_PROFILE) != 0; -} - -int -msg_GroupRecord::SetIsProfile(XP_Bool value) -{ - return TweakFlag(F_PROFILE, value); -} - - - -XP_Bool -msg_GroupRecord::IsExpanded() -{ - return (m_flags & F_EXPANDED) != 0; -} - -int -msg_GroupRecord::SetIsExpanded(XP_Bool value) -{ - return TweakFlag(F_EXPANDED, value); -} - - -XP_Bool -msg_GroupRecord::IsHTMLOKGroup() -{ - return (m_flags & F_HTMLOKGROUP) != 0; -} - -int -msg_GroupRecord::SetIsHTMLOKGroup(XP_Bool value) -{ - return TweakFlag(F_HTMLOKGROUP, value); -} - - - -XP_Bool -msg_GroupRecord::IsHTMLOKTree() -{ - return (m_flags & F_HTMLOKTREE) != 0; -} - -int -msg_GroupRecord::SetIsHTMLOKTree(XP_Bool value) -{ - return TweakFlag(F_HTMLOKTREE, value); -} - - - -XP_Bool -msg_GroupRecord::IsGroup() -{ - return (m_flags & F_ISGROUP) != 0; -} - -int -msg_GroupRecord::SetIsGroup(XP_Bool value) -{ - return TweakFlag(F_ISGROUP, value); -} - - -XP_Bool -msg_GroupRecord::IsDescendentsLoaded() -{ - return (m_flags & F_DESCENDENTSLOADED) != 0; -} - - -int -msg_GroupRecord::SetIsDescendentsLoaded(XP_Bool value) -{ - XP_ASSERT(value); // No reason we'd ever unset this. - TweakFlag(F_DESCENDENTSLOADED, TRUE); - msg_GroupRecord* child; - for (child = m_children ; child ; child = child->m_sibling) { - child->SetIsDescendentsLoaded(value); - } - return 0; -} - -XP_Bool msg_GroupRecord::DoesNotExistOnServer() -{ - return (m_flags & F_DOESNOTEXIST) != 0; -} - -int msg_GroupRecord::SetDoesNotExistOnServer(XP_Bool value) -{ - if (value) // turn off group flag if doesn't exist on server. - TweakFlag(F_ISGROUP, FALSE); - return TweakFlag(F_DOESNOTEXIST, value); -} - -int -msg_GroupRecord::TweakFlag(uint32 flagbit, XP_Bool value) -{ - if (value) { - if (!(m_flags & flagbit)) { - m_flags |= flagbit; - if (flagbit & ~RUNTIMEFLAGS) - m_flags |= F_DIRTY; - return 1; - } - } else { - if (m_flags & flagbit) { - m_flags &= ~flagbit; - if (flagbit & ~RUNTIMEFLAGS) - m_flags |= F_DIRTY; - return 1; - } - } - return 0; -} - - -int32 -msg_GroupRecord::GetNumKids() -{ - int32 result = 0; - msg_GroupRecord* child; - for (child = m_children ; child ; child = child->m_sibling) { - if (IsIMAPGroupRecord()) - result++; - else - if (child->m_flags & F_ISGROUP) result++; - - if (!IsIMAPGroupRecord()) - result += child->GetNumKids(); - } - return result; -} - - - - -char* -msg_GroupRecord::GetSaveString() -{ - char* pretty = NULL; - if (m_prettyname) { - pretty = NET_Escape(m_prettyname, URL_XALPHAS); - if (!pretty) return NULL; - } - char* fullname = GetFullName(); - if (!fullname) return NULL; - char* result = PR_smprintf("%s,%s,%lx,%lx,%lx" LINEBREAK, - fullname, pretty ? pretty : "", - (long) (m_flags & ~RUNTIMEFLAGS), - (long) m_addtime, - (long) m_uniqueId); - delete [] fullname; - if (pretty) XP_FREE(pretty); - m_flags &= ~F_DIRTY; - return result; -} - - -XP_Bool -msg_GroupRecord::IsDirty() -{ - return (m_flags & F_DIRTY) != 0; -} - - -int32 -msg_GroupRecord::GetDepth() -{ - int32 result = 0; - msg_GroupRecord* tmp = m_parent; - while (tmp) { - tmp = tmp->m_parent; - result++; - } - return result; -} - - - - -msg_GroupRecord* -msg_GroupRecord::Create(msg_GroupRecord* parent, const char* saveline, - int32 savelinelength, int32 fileoffset) -{ - char* tmp; - char* ptr; - char* endptr; - char* partname; - char* prettyname; - int32 flags; - int32 addtime; - int32 uniqueid; - msg_GroupRecord* result = NULL; - - if (savelinelength < 0) savelinelength = XP_STRLEN(saveline); - tmp = (char*) XP_ALLOC(savelinelength + 1); - if (!tmp) return NULL; - XP_STRNCPY_SAFE(tmp, saveline, savelinelength); - tmp[savelinelength] = '\0'; - ptr = XP_STRCHR(tmp, ','); - XP_ASSERT(ptr); - if (!ptr) goto FAIL; - *ptr++ = '\0'; - partname = XP_STRRCHR(tmp, '.'); - if (!partname) partname = tmp; - else partname++; - -#ifdef DEBUG_slowAndParanoid - if (parent->m_partname) { - char* parentname = parent->GetFullName(); - XP_ASSERT(partname > tmp && partname[-1] == '.'); - partname[-1] = '\0'; - XP_ASSERT(XP_STRCMP(parentname, tmp) == 0); - partname[-1] = '.'; - delete [] parentname; - parentname = NULL; - } else { - XP_ASSERT(partname == tmp); - } -#endif - - endptr = XP_STRCHR(ptr, ','); - XP_ASSERT(endptr); - if (!endptr) goto FAIL; - *endptr++ = '\0'; - prettyname = NET_UnEscape(ptr); - - ptr = endptr; - endptr = XP_STRCHR(ptr, ','); - XP_ASSERT(endptr); - if (!endptr) goto FAIL; - *endptr++ = '\0'; - flags = strtol(ptr, NULL, 16); - - ptr = endptr; - endptr = XP_STRCHR(ptr, ','); - XP_ASSERT(endptr); - if (!endptr) goto FAIL; - *endptr++ = '\0'; - addtime = strtol(ptr, NULL, 16); - - ptr = endptr; - uniqueid = strtol(ptr, NULL, 16); - - result = Create(parent, partname, addtime, uniqueid, fileoffset); - if (result) { - XP_Bool maybeCategoryContainer = flags & F_CATCONT; - flags &= ~F_CATCONT; - result->m_flags = flags; - if (maybeCategoryContainer) - result->SetIsCategoryContainer(TRUE); - if (prettyname && *prettyname) result->SetPrettyName(prettyname); - } - -FAIL: - XP_FREE(tmp); - return result; - -} - - - -msg_IMAPGroupRecord* -msg_IMAPGroupRecord::Create(msg_IMAPGroupRecord* parent, const char* folderName, - char delimiter, XP_Bool filledInGroup) -{ - char* tmp = NULL; - char* partname = NULL; - msg_IMAPGroupRecord* result = NULL; - - if (folderName) - { - tmp = XP_STRDUP(folderName); - partname = XP_STRRCHR(tmp, delimiter); - if (!partname) partname = tmp; - else partname++; - } - -#ifdef DEBUG_slowAndParanoid - if (parent->m_partname) { - char* parentname = parent->GetFullName(); - XP_ASSERT(partname > tmp && partname[-1] == m_delimiter); - partname[-1] = '\0'; - XP_ASSERT(XP_STRCMP(parentname, tmp) == 0); - partname[-1] = m_delimiter; - delete [] parentname; - parentname = NULL; - } else { - XP_ASSERT(partname == tmp); - } -#endif - - result = msg_IMAPGroupRecord::CreateFromPartname(parent, partname, delimiter, filledInGroup); - if (result) { - result->m_flags = 0; - } - - XP_FREE(tmp); - return result; - -} - - -msg_IMAPGroupRecord* -msg_IMAPGroupRecord::CreateFromPartname(msg_IMAPGroupRecord* parent, const char* partname, char delimiter, XP_Bool filledInGroup) -{ - msg_IMAPGroupRecord* result = new msg_IMAPGroupRecord(parent, partname, delimiter, filledInGroup); - if (result && partname && !result->m_partname) { - // We ran out of memory. - delete result; - result = NULL; - } - return result; -} - - -msg_IMAPGroupRecord::msg_IMAPGroupRecord(msg_IMAPGroupRecord* parent, - const char* partname, char delimiter, XP_Bool filledInGroup) : msg_GroupRecord(parent, partname, 0, 0, 0, delimiter) -{ - m_flags = 0; - m_allGrandChildrenDiscovered = FALSE; - m_filledInGroup = filledInGroup; -} - diff --git a/mozilla/lib/libmsg/grec.h b/mozilla/lib/libmsg/grec.h deleted file mode 100644 index b981be09370..00000000000 --- a/mozilla/lib/libmsg/grec.h +++ /dev/null @@ -1,198 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// This class should only be used by the subscribe UI and by newshost.cpp. -// And, well, a bit by the category code. Everyone else should use the stuff -// in newshost.h. - -#ifndef _grec_h_ -#define _grec_h_ - -class msg_IMAPGroupRecord; - -class msg_GroupRecord { -public: - static msg_GroupRecord* Create(msg_GroupRecord* parent, - const char* partname, - time_t m_addtime, - int32 uniqueid, - int32 fileoffset); - static msg_GroupRecord* Create(msg_GroupRecord* parent, - const char* saveline, - int32 savelinelength, - int32 fileoffset); - - virtual XP_Bool IsIMAPGroupRecord() { return FALSE; } - virtual msg_IMAPGroupRecord *GetIMAPGroupRecord() { return 0; } - - // This is just like strcmp(), except it works on news group names. - // A container groupname is always less than any contained groups. - // So, "netscape.devs-client-technical" > "netscape.devs.directory", even - // though strcmp says otherwise. (YICK!) - static int GroupNameCompare(const char* name1, - const char* name2, - char delimiter = '.'); - - - virtual ~msg_GroupRecord(); - - msg_GroupRecord* FindDescendant(const char* name); - - msg_GroupRecord* GetParent() {return m_parent;} - msg_GroupRecord* GetChildren() {return m_children;} - msg_GroupRecord* GetSibling() {return m_sibling;} - msg_GroupRecord* GetSiblingOrAncestorSibling(); - msg_GroupRecord* GetNextAlphabetic(); - - msg_GroupRecord* GetNextAlphabeticNoCategories(); - - const char* GetPartName() {return m_partname;} - - // The resulting string must be free'd using delete[]. - char* GetFullName(); - - const char* GetPrettyName() {return m_prettyname;} - int SetPrettyName(const char* prettyname); - - time_t GetAddTime() {return m_addtime;} - - virtual XP_Bool IsCategory(); - virtual XP_Bool IsCategoryContainer(); - virtual int SetIsCategoryContainer(XP_Bool value); - - msg_GroupRecord* GetCategoryContainer(); - - // Get/Set whether this is a virtual newsgroup. - XP_Bool IsProfile(); - int SetIsProfile(XP_Bool value); - - // Get/Set whether this is really a newsgroup (and not just a container - // for newsgroups). - virtual XP_Bool IsGroup(); - int SetIsGroup(XP_Bool value); - - XP_Bool IsDescendentsLoaded(); - int SetIsDescendentsLoaded(XP_Bool value); - - XP_Bool IsExpanded(); - int SetIsExpanded(XP_Bool value); - - XP_Bool IsHTMLOKGroup(); - int SetIsHTMLOKGroup(XP_Bool value); - - XP_Bool IsHTMLOKTree(); - int SetIsHTMLOKTree(XP_Bool value); - - XP_Bool NeedsExtraInfo(); - int SetNeedsExtraInfo(XP_Bool value); - - XP_Bool DoesNotExistOnServer(); - int SetDoesNotExistOnServer(XP_Bool value); - - int32 GetUniqueID() {return m_uniqueId;} - - int32 GetFileOffset() {return m_fileoffset;} - int SetFileOffset(int32 value) {m_fileoffset = value; return 0;} - - // Get the number of descendents (not including ourself) that are - // really newsgroups. - int32 GetNumKids(); - - // Gets the string that represents this group in the save file. The - // resulting string must be free'd with XP_FREE(). - char* GetSaveString(); - - XP_Bool IsDirty(); // Whether this record has had changes made - // to it. Cleared by calls to GetSaveString(). - - int32 GetDepth(); // Returns how deep in the heirarchy we are. - // Basically, the number of dots in the full - // newsgroup name, plus 1. - virtual char GetHierarchySeparator() { return '.'; } - -protected: - msg_GroupRecord(msg_GroupRecord* parent, - const char* partname, - time_t m_addtime, - int32 uniqueid, - int32 fileoffset, - char delimiter = '.'); - int TweakFlag(uint32 flagbit, XP_Bool value); - char* SuckInName(char* ptr); - - char* m_partname; - char* m_prettyname; - msg_GroupRecord* m_parent; - msg_GroupRecord* m_children; - msg_GroupRecord* m_sibling; - uint32 m_flags; - time_t m_addtime; - int32 m_uniqueId; - int32 m_fileoffset; - char m_delimiter; -}; - - - -class msg_IMAPGroupRecord : public msg_GroupRecord { - - -public: - static msg_IMAPGroupRecord* Create(msg_IMAPGroupRecord* parent, - const char* folderName, - char delimiter, - XP_Bool filledInGroup); - - static msg_IMAPGroupRecord* CreateFromPartname(msg_IMAPGroupRecord* parent, const char* partname, char delimiter, - XP_Bool filledInGroup); - - virtual XP_Bool IsCategory() { return FALSE;} - virtual XP_Bool IsCategoryContainer() { return FALSE; } - virtual int SetIsCategoryContainer(XP_Bool /* value */) { XP_ASSERT(0); return 0; } - virtual XP_Bool IsIMAPGroupRecord() { return TRUE; } - virtual msg_IMAPGroupRecord *GetIMAPGroupRecord() { return this; } - - virtual XP_Bool IsGroup() { return TRUE; } - - virtual char GetHierarchySeparator() { return m_delimiter; } - void SetHierarchySeparator(char delimiter) { m_delimiter = delimiter; } - - XP_Bool GetAllGrandChildrenDiscovered() { return m_allGrandChildrenDiscovered; } - void SetAllGrandChildrenDiscovered(XP_Bool discovered) { m_allGrandChildrenDiscovered = discovered; } - - XP_Bool GetIsGroupFilledIn() { return m_filledInGroup; } - void SetIsGroupFilledIn(XP_Bool filledIn) { m_filledInGroup = filledIn; } - - void SetFlags(uint32 flags) { m_flags = flags; } - uint32 GetFlags() { return m_flags; } - -protected: - msg_IMAPGroupRecord(msg_IMAPGroupRecord* parent, const char* partname, char delimiter, XP_Bool filledInGroup); - - XP_Bool m_allGrandChildrenDiscovered; - XP_Bool m_filledInGroup; - uint32 m_flags; - -}; - - -#endif /* _grec_h_ */ diff --git a/mozilla/lib/libmsg/grpinfo.cpp b/mozilla/lib/libmsg/grpinfo.cpp deleted file mode 100644 index bba061523c5..00000000000 --- a/mozilla/lib/libmsg/grpinfo.cpp +++ /dev/null @@ -1,457 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp.h" -#include "msghdr.h" -#include "grpinfo.h" -#include "maildb.h" -#include "newsdb.h" -#include "newsset.h" -#include "csid.h" -#include "msgdbapi.h" - -DBFolderInfo::DBFolderInfo(MSG_DBFolderInfoHandle handle) -{ - m_articleNumHighWater = 0; - m_expiredMark = 0; - m_numVisibleMessages = 0; - m_numNewMessages = 0; - m_numMessages = 0; - m_folderSize = 0; - m_folderDate = 0; - m_parsedThru = 0; - m_expunged_bytes = 0; - m_flags = 0; - m_version = kFolderInfoVersion; - m_LastMessageUID = 0; - m_ImapUidValidity = 0; - m_TotalPendingMessages = 0; - m_UnreadPendingMessages = 0; - m_viewType = ViewAllThreads; - m_sortType = SortByDate; - m_sortOrder = SortTypeAscending; - // this is a bogus value. Better to make it always bogus than sometimes. - m_folderType = FOLDER_CONTAINERONLY; - m_csid = CS_DEFAULT; - m_IMAPHierarchySeparator = kOnlineHierarchySeparatorUnknown; - m_dbFolderInfoHandle = handle; -} - -void DBFolderInfo::AddReference() -{ -} - -void DBFolderInfo::RemoveReference() -{ - MSG_DBFolderInfoHandle_RemoveReference(m_dbFolderInfoHandle); -} - -DBFolderInfo::~DBFolderInfo() -{ - MSG_DBFolderInfoHandle_RemoveReference(m_dbFolderInfoHandle); -} - -void DBFolderInfo::GetExchangeInfo(MSG_DBFolderInfoExchange &infoExchange) -{ - infoExchange.m_version = m_version; /* for upgrading...*/ - infoExchange.m_sortType = m_sortType; /* the last sort type open on this db. */ - infoExchange.m_csid = m_csid; /* default csid for these messages */ - infoExchange.m_IMAPHierarchySeparator = m_IMAPHierarchySeparator; /* imap path separator */ - infoExchange.m_sortOrder = m_sortOrder; /* the last sort order (up or down) */ - infoExchange.m_folderSize = m_folderSize; - infoExchange.m_folderDate = m_folderDate; - infoExchange.m_parsedThru = m_parsedThru; /* how much of the folder have we parsed? Not sure needed in new world order */ - infoExchange.m_expunged_bytes = m_expunged_bytes; /* sum of size of deleted messages in folder */ - - infoExchange.m_LastMessageUID = m_LastMessageUID; - infoExchange.m_ImapUidValidity = m_ImapUidValidity; - infoExchange.m_TotalPendingMessages = m_TotalPendingMessages; - infoExchange.m_UnreadPendingMessages = m_UnreadPendingMessages; - - // news only (for now) - infoExchange.m_articleNumHighWater = m_articleNumHighWater; /* largest article number whose header we've seen */ - infoExchange.m_expiredMark = m_articleNumHighWater; /* Highest invalid article number in group - for expiring */ - infoExchange.m_viewType = m_viewType; /* for news, the last view type open on this db. */ - - infoExchange.m_numVisibleMessages = m_numVisibleMessages ; // doesn't include expunged or ignored messages (but does include collapsed). - infoExchange.m_numNewMessages = m_numNewMessages; - infoExchange.m_numMessages = m_numMessages; // includes expunged and ignored messages - infoExchange.m_flags = m_flags; // folder specific flags. This holds things like re-use thread pane, - // configured for off-line use, use default retrieval, purge article/header options - infoExchange.m_lastMessageLoaded = m_lastMessageLoaded; // set by the FE's to remember the last loaded message - -} - -void DBFolderInfo::SetExchangeInfo(MSG_DBFolderInfoExchange &infoExchange) -{ - m_version = infoExchange.m_version; - m_sortType = infoExchange.m_sortType; - m_csid = infoExchange.m_csid ; - m_IMAPHierarchySeparator = infoExchange.m_IMAPHierarchySeparator; - m_sortOrder = infoExchange.m_sortOrder ; - m_folderSize = infoExchange.m_folderSize; - m_folderDate = infoExchange.m_folderDate ; - m_parsedThru = infoExchange.m_parsedThru; - m_expunged_bytes = infoExchange.m_expunged_bytes; - - m_LastMessageUID = infoExchange.m_LastMessageUID; - m_ImapUidValidity = infoExchange.m_ImapUidValidity ; - m_TotalPendingMessages = infoExchange.m_TotalPendingMessages; - m_UnreadPendingMessages = infoExchange.m_UnreadPendingMessages; - - m_articleNumHighWater = infoExchange.m_articleNumHighWater; - m_articleNumHighWater = infoExchange.m_expiredMark ; - m_viewType = infoExchange.m_viewType; - - m_numVisibleMessages = infoExchange.m_numVisibleMessages; - m_numNewMessages = infoExchange.m_numNewMessages; - m_numMessages = infoExchange.m_numMessages ; - m_flags = infoExchange.m_flags; - - m_lastMessageLoaded = infoExchange.m_lastMessageLoaded; -} - -// set highwater mark, if it really is the highest article number we've seen, -// or caller is forcing new highwater mark. -void DBFolderInfo::SetHighWater(MessageKey highWater, Bool force /* = FALSE */) -{ - if (highWater > m_articleNumHighWater || force) - { - m_articleNumHighWater = highWater; - } -} - -// Remember the number of articles we've already expired -void DBFolderInfo::SetExpiredMark(MessageKey expiredKey) -{ - if (expiredKey > m_expiredMark) - { - m_expiredMark = expiredKey; - } -} -void DBFolderInfo::SetViewType(int32 viewType) -{ - if (m_viewType != viewType) - { - m_viewType = viewType; - } -} - -void DBFolderInfo::SetSortInfo(SortType sortType, SortOrder sortOrder) -{ - if (m_sortType != sortType || m_sortOrder != sortOrder) - { - m_sortType = sortType; - m_sortOrder = sortOrder; - } -} - -void DBFolderInfo::GetSortInfo(SortType *pSortType, SortOrder *pSortOrder) -{ - *pSortType = (SortType) m_sortType; - *pSortOrder = (SortOrder) m_sortOrder; -} - -int32 DBFolderInfo::GetFlags() -{ - return m_flags; -} - -void DBFolderInfo::SetFlags(int32 flags) -{ - if (m_flags != flags) - { - m_flags = flags; - } -} - -void DBFolderInfo::OrFlags(int32 flags) -{ - m_flags |= flags; -} - -void DBFolderInfo::AndFlags(int32 flags) -{ - m_flags &= flags; -} - -XP_Bool DBFolderInfo::TestFlag(int32 flags) -{ - return (m_flags & flags) != 0; -} - -XP_Bool DBFolderInfo::AddLaterKey(MessageKey key, time_t until) -{ -// m_lateredKeys.Add(key); -// m_lateredKeys.Add(until); -// setDirty(); - return TRUE; -} - -int32 DBFolderInfo::GetNumLatered() -{ -// return m_lateredKeys.GetNumElems() / 2; - return 0; -} - -MessageKey DBFolderInfo::GetLateredAt(int32 laterIndex, time_t *pUntil) -{ - MessageKey retKey = MSG_MESSAGEKEYNONE; - -// if (laterIndex < GetNumLatered()) -// { -// retKey = m_lateredKeys[laterIndex * 2]; -// if (pUntil) -// *pUntil = m_lateredKeys[(laterIndex * 2) + 1]; -// } - return retKey; -} - -void DBFolderInfo::RemoveLateredAt(int32 laterIndex) -{ - if (laterIndex < GetNumLatered()) - { -// m_lateredKeys.RemoveAt(laterIndex, 2); - } -} - -int32 DBFolderInfo::ChangeNumNewMessages(int32 delta) -{ - m_numNewMessages += delta; - if (m_numNewMessages < 0) - { -#ifdef DEBUG_bienvenu1 - XP_ASSERT(FALSE); -#endif - m_numNewMessages = 0; - } - return m_numNewMessages; -} - -int32 DBFolderInfo::ChangeNumMessages(int32 delta) -{ - m_numMessages += delta; - if (m_numMessages < 0) - { -#ifdef DEBUG_bienvenu - XP_ASSERT(FALSE); -#endif - m_numMessages = 0; - } - return m_numMessages; -} - -int32 DBFolderInfo::ChangeNumVisibleMessages(int32 delta) -{ - m_numVisibleMessages += delta; - if (m_numVisibleMessages < 0) - { -#ifdef DEBUG_bienvenu - XP_ASSERT(FALSE); -#endif - m_numVisibleMessages = 0; - } - return m_numVisibleMessages; -} - -void DBFolderInfo::SetNewArtsSet(const char *newArts, MSG_DBHandle dbHandle) -{ - MSG_DBFolderInfo_SetNewArtsSet(GetHandle(), newArts, dbHandle); -} - -void DBFolderInfo::GetNewArtsSet(XPStringObj &newArts) -{ - char *newArtsStr; - MSG_DBFolderInfo_GetNewArtsSet(GetHandle(), &newArtsStr); - newArts.SetStrPtr(newArtsStr); -} - -void DBFolderInfo::SetMailboxName(const char *newBoxName) -{ - MSG_DBFolderInfo_SetMailboxName(GetHandle(), newBoxName); -} - -void DBFolderInfo::GetMailboxName(XPStringObj &boxName) -{ - char *mailboxNameStr; - MSG_DBFolderInfo_GetMailboxName(GetHandle(), &mailboxNameStr); - boxName.SetStrPtr(mailboxNameStr); -} - -void DBFolderInfo::SetCachedPassword(const char *password, MSG_DBHandle db) -{ - MSG_DBFolderInfo_SetCachedPassword(GetHandle(), password, db); -} - -void DBFolderInfo::GetCachedPassword(XPStringObj &password, MSG_DBHandle db) -{ - char *passwordStr; - MSG_DBFolderInfo_GetCachedPassword(GetHandle(), &passwordStr, db); - password.SetStrPtr(passwordStr); -} - -NewsFolderInfo::NewsFolderInfo(MSG_DBFolderInfoHandle handle) : DBFolderInfo(handle) -{ - m_newsRCLineDate = 0; - m_sortType = SortByThread; - m_newsDB = NULL; - XP_BZERO(&m_purgeHdrInfo, sizeof(m_purgeHdrInfo)); - m_purgeHdrInfo.m_useDefaults = TRUE; - m_purgeArtInfo.m_useDefaults = TRUE; - XP_BZERO(&m_purgeArtInfo, sizeof(m_purgeArtInfo)); - XP_BZERO(&m_retrieveArtInfo, sizeof(m_retrieveArtInfo)); - m_retrieveArtInfo.m_useDefaults = TRUE; -} - -NewsFolderInfo::~NewsFolderInfo() -{ -} - -void NewsFolderInfo::SetKnownArtsSet(const char *knownArts) -{ - MSG_NewsDBFolderInfoHandle_SetKnownArts(GetHandle(), knownArts); -} - -void NewsFolderInfo::GetKnownArtsSet(XPStringObj &knownArts) -{ - char *knownArtsStr; - MSG_NewsDBFolderInfoHandle_GetKnownArts(GetHandle(), &knownArtsStr); - knownArts.SetStrPtr(knownArtsStr); -} - -void NewsFolderInfo::SetPurgeHeaderInfo(MSG_PurgeInfo *info) -{ - m_purgeHdrInfo = *info; -} - -void NewsFolderInfo::SetPurgeArticleInfo(MSG_PurgeInfo *info) -{ - m_purgeArtInfo = *info; -} - - -void NewsFolderInfo::ClearOfflineRetrievalTerms() -{ -} - -void NewsFolderInfo::ClearPurgeHeaderTerms() -{ -} - -void NewsFolderInfo::ClearPurgeArticleTerms() -{ -} - -MsgERR NewsFolderInfo::GetOfflineRetrievalInfo(MSG_RetrieveArtInfo *retrieveArtInfo) -{ - *retrieveArtInfo = m_retrieveArtInfo; - return eSUCCESS; -} - -void NewsFolderInfo::SetOfflineRetrievalInfo(MSG_RetrieveArtInfo *retrieveArtInfo) -{ - m_retrieveArtInfo = *retrieveArtInfo; -} - -MsgERR NewsFolderInfo::GetPurgeHeaderInfo(MSG_PurgeInfo *info) -{ - *info = m_purgeHdrInfo; - return eSUCCESS; -} - -MsgERR NewsFolderInfo::GetPurgeArticleInfo(MSG_PurgeInfo *info) -{ - *info = m_purgeArtInfo; - return eSUCCESS; -} - -extern "C" XP_Bool -msg_IsSummaryValid(const char* pathname, XP_StatStruct* folderst) -{ - XP_Bool result = FALSE; - MailDB *pMessageDB; - char *summary_file_name = WH_FileName((char*) pathname, xpMailFolderSummary); - - if (summary_file_name) - { - if (MailDB::Open(pathname, FALSE, &pMessageDB) != eSUCCESS) - { - result = FALSE ; - } - else - { - if (pMessageDB->m_dbFolderInfo->m_folderSize == folderst->st_size - && pMessageDB->m_dbFolderInfo->m_folderDate == folderst->st_mtime) - result = TRUE; - pMessageDB->Close(); - } - FREEIF(summary_file_name); - } - return result; -} - - - -// a silly place for this, but it's a silly function. -extern "C" void -msg_SetSummaryValid(const char* pathname, int num, int numunread) -{ - XP_StatStruct folderst; - -#ifdef DEBUG -// XP_ASSERT(lastquery_result && XP_FILENAMECMP(pathname, lastquery_path) == 0); -#endif - - if (!XP_Stat((char*) pathname, &folderst, xpMailFolder)) - { - char *summary_file_name = WH_FileName((char*) pathname, xpMailFolderSummary); - if (summary_file_name) - { - MailDB::SetFolderInfoValid(pathname, num, numunread); - FREEIF(summary_file_name); - } - } -} - - -TDBFolderInfoTransfer::TDBFolderInfoTransfer(DBFolderInfo &sourceInfo) -{ - sourceInfo.GetMailboxName(m_mailboxName); - m_IMAPHierarchySeparator = sourceInfo.GetIMAPHierarchySeparator(); - m_viewType = sourceInfo.GetViewType(); - sourceInfo.GetSortInfo(&m_sortType, &m_sortOrder); - m_csid = sourceInfo.GetCSID(); - m_flags = sourceInfo.GetFlags(); -} - - -void TDBFolderInfoTransfer::TransferFolderInfo(DBFolderInfo &destinationInfo) -{ - destinationInfo.SetMailboxName(m_mailboxName); - destinationInfo.SetIMAPHierarchySeparator(m_IMAPHierarchySeparator); - destinationInfo.SetViewType(m_viewType); - destinationInfo.SetCSID(m_csid); - destinationInfo.SetSortInfo(m_sortType, m_sortOrder); - destinationInfo.SetFlags(m_flags); -} - - diff --git a/mozilla/lib/libmsg/grpinfo.h b/mozilla/lib/libmsg/grpinfo.h deleted file mode 100644 index d3305e75541..00000000000 --- a/mozilla/lib/libmsg/grpinfo.h +++ /dev/null @@ -1,201 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// mail/news folder info - Currently, DBFolderInfo is used for mail, and its subclass, -// DBFolderInfoNews is used by news. -#ifndef _GRPINFO_H -#define _GRPINFO_H - -#include "msgfinfo.h" -#include "msgpurge.h" -#include "nwsartst.h" -#include "msgstrob.h" - -class NewsGroupDB; - -const int kFolderInfoVersion = 12; - -class DBFolderInfo -{ -public: - /** Instance Methods **/ - DBFolderInfo(MSG_DBFolderInfoHandle handle); - ~DBFolderInfo(); - void SetHighWater(MessageKey highWater, Bool force = FALSE) ; - MessageKey GetHighWater() {return m_articleNumHighWater;} - void SetExpiredMark(MessageKey expiredKey); - int GetDiskVersion() {return m_version;} - void GetExchangeInfo(MSG_DBFolderInfoExchange &infoExchange); - void SetExchangeInfo(MSG_DBFolderInfoExchange &infoExchange); - - XP_Bool AddLaterKey(MessageKey key, time_t until); - int32 GetNumLatered(); - MessageKey GetLateredAt(int32 laterIndex, time_t *pUntil); - void RemoveLateredAt(int32 laterIndex); - - virtual void SetNewArtsSet(const char *newArtsSet, MSG_DBHandle dbHandle); - virtual void GetNewArtsSet(XPStringObj &newArtsSet); - - virtual void SetMailboxName(const char *newBoxName); - virtual void GetMailboxName(XPStringObj &boxName); - - void SetViewType(int32 viewType); - int32 GetViewType() {return m_viewType;} - void SetSortInfo(SortType, SortOrder); - void GetSortInfo(SortType *, SortOrder *); - int32 ChangeNumNewMessages(int32 delta); - int32 ChangeNumMessages(int32 delta); - int32 ChangeNumVisibleMessages(int32 delta); - int32 GetNumNewMessages() {return m_numNewMessages;} - int32 GetNumMessages() {return m_numMessages;} - int32 GetNumVisibleMessages() {return m_numVisibleMessages;} - int32 GetFlags(); - void SetFlags(int32 flags); - void OrFlags(int32 flags); - void AndFlags(int32 flags); - XP_Bool TestFlag(int32 flags); - int16 GetCSID() {return m_csid;} - void SetCSID(int16 csid) {m_csid = csid; } - int16 GetIMAPHierarchySeparator() {return m_IMAPHierarchySeparator;} - void SetIMAPHierarchySeparator(int16 hierarchySeparator) {m_IMAPHierarchySeparator = hierarchySeparator;} - int32 GetImapTotalPendingMessages() {return m_TotalPendingMessages;} - void ChangeImapTotalPendingMessages(int32 delta) {m_TotalPendingMessages+=delta;} - int32 GetImapUnreadPendingMessages() {return m_UnreadPendingMessages;} - void ChangeImapUnreadPendingMessages(int32 delta) {m_UnreadPendingMessages+=delta;} - - int32 GetImapUidValidity() {return m_ImapUidValidity;} - void SetImapUidValidity(int32 uidValidity) {m_ImapUidValidity=uidValidity;} - - MessageKey GetLastMessageLoaded() {return m_lastMessageLoaded;} - void SetLastMessageLoaded(MessageKey lastLoaded) {m_lastMessageLoaded=lastLoaded;} - - void SetCachedPassword(const char *password, MSG_DBHandle db); - void GetCachedPassword(XPStringObj &password, MSG_DBHandle db); - virtual void AddReference(); - virtual void RemoveReference(); - - // mail and news - uint16 m_version; // for upgrading... - int32 m_sortType; // the last sort type open on this db. - int16 m_csid; // default csid for these messages - int16 m_IMAPHierarchySeparator; // imap path separator - int8 m_sortOrder; // the last sort order (up or down - // mail only (for now) - int32 m_folderSize; - time_t m_folderDate; - int32 m_parsedThru; // how much of the folder have we parsed? Not sure needed in new world order - int32 m_expunged_bytes; // sum of size of deleted messages in folde - - // IMAP only - int32 m_LastMessageUID; - int32 m_ImapUidValidity; - int32 m_TotalPendingMessages; - int32 m_UnreadPendingMessages; - - // news only (for now) - MessageKey m_articleNumHighWater; // largest article number whose header we've seen - MessageKey m_expiredMark; // Highest invalid article number in group - for expiring - int32 m_viewType; // for news, the last view type open on this db. - MSG_DBFolderInfoHandle GetHandle() {return m_dbFolderInfoHandle;} - void SetHandle(MSG_DBFolderInfoHandle handle) {m_dbFolderInfoHandle = handle;} - - // db object on disk contains kNumUnused more uint32's for future expansion -protected: - - MSG_DBFolderInfoHandle m_dbFolderInfoHandle; - int32 m_numVisibleMessages; // doesn't include expunged or ignored messages (but does include collapsed). - int32 m_numNewMessages; - int32 m_numMessages; // includes expunged and ignored messages - FolderType m_folderType; // not currently filed out - int32 m_flags; // folder specific flags. This holds things like re-use thread pane, - // configured for off-line use, use default retrieval, purge article/header options - MessageKey m_lastMessageLoaded; // set by the FE's to remember the last loaded message -}; - - -class NewsFolderInfo : public DBFolderInfo -{ -public: - NewsFolderInfo(MSG_DBFolderInfoHandle handle); - ~NewsFolderInfo(); - virtual void SetKnownArtsSet(const char *newsArtSet); - virtual void GetKnownArtsSet(XPStringObj &newsArtSet); - // offline retrieval and purge control settings - these override the users' - // default settings, which should be stored in the xp preferences, when that's done. - virtual void SetOfflineRetrievalInfo(MSG_RetrieveArtInfo *retrieveArtInfo); - virtual void SetPurgeHeaderInfo(MSG_PurgeInfo *info); - virtual void SetPurgeArticleInfo(MSG_PurgeInfo *info); - virtual void ClearOfflineRetrievalTerms(); - virtual void ClearPurgeHeaderTerms(); - virtual void ClearPurgeArticleTerms(); - virtual MsgERR GetOfflineRetrievalInfo(MSG_RetrieveArtInfo *retrieveArtInfo); - virtual MsgERR GetPurgeHeaderInfo(MSG_PurgeInfo *info); - virtual MsgERR GetPurgeArticleInfo(MSG_PurgeInfo *info); - - void SetNewsDB(NewsGroupDB *newsDB) {m_newsDB = newsDB;} - -protected: - NewsGroupDB *m_newsDB; - time_t m_newsRCLineDate; // the time/date we remembered this line. - // These are streamed search terms, preceded by the count of terms. - - MSG_PurgeInfo m_purgeHdrInfo; // news hdr purge info. - MSG_PurgeInfo m_purgeArtInfo; // news art purge info. (only uses age, currently) - MSG_RetrieveArtInfo m_retrieveArtInfo; - -}; - -// kmcentee -// Use one of these guys to transfer info when duplicating a message db. -// Initially this happens when emptying trash (pop and imap) and compressing -// pop folders. - -// The reason that this is a separate object rather than some methods on -// DBFolderInfo is that it is handy to delete the source db before you -// create the new one. -class TDBFolderInfoTransfer { -public: - TDBFolderInfoTransfer(DBFolderInfo &sourceInfo); - ~TDBFolderInfoTransfer() {} - - void TransferFolderInfo(DBFolderInfo &destinationInfo); -private: - // add transfer fields as needed. - XPStringObj m_mailboxName; // name presented to the user, will match imap server name - int16 m_IMAPHierarchySeparator; // imap path separator - int32 m_viewType; - SortType m_sortType; // the last sort type open on this db. - int16 m_csid; // default csid for these messages - SortOrder m_sortOrder; // the last sort order (up or down - int32 m_flags; // folder specific flags. This holds things like re-use thread pane, - // configured for off-line use, use default retrieval, purge article/header options -}; - - -XP_BEGIN_PROTOS - -XP_Bool msg_IsSummaryValid(const char* pathname, XP_StatStruct* folderst); -void msg_SetSummaryValid(const char* pathname, int num, int numunread); - -XP_END_PROTOS - -#endif - diff --git a/mozilla/lib/libmsg/hosttbl.cpp b/mozilla/lib/libmsg/hosttbl.cpp deleted file mode 100644 index e620fb036d8..00000000000 --- a/mozilla/lib/libmsg/hosttbl.cpp +++ /dev/null @@ -1,286 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "hosttbl.h" -#include "newshost.h" -#include "msgmast.h" -#include "prefapi.h" - -msg_HostTable* msg_HostTable::Create(MSG_Master* master) -{ - msg_HostTable *result = NULL; - - result = new msg_HostTable(master); - XP_ASSERT(result); - if (!result) // Should have extra checks for memory - // failures and such. ###tw - { - delete result; - result = NULL; - } - return result; -} - -msg_HostTable::msg_HostTable(MSG_Master* master) -{ - char** newsrclist; - char* defname = NULL; - int32 defport = NEWS_PORT; - HG73252 - - PREF_CopyCharPref("network.hosts.nntp_server", &defname); - if (defname && *defname == '\0') { - XP_FREE(defname); - defname = NULL; - } - if (defname) { - PREF_GetIntPref("news.server_port", &defport); - HG93733 - } - - char** rest; - MSG_NewsHost *h = NULL; - - m_master = master; - m_numhosts = 0; - m_maxhosts = 0; - m_hosts = NULL; - - newsrclist = XP_GetNewsRCFiles(); - char* allocatedName = NULL; - for (rest = newsrclist; rest && *rest ; rest++) { - FREEIF(allocatedName); - allocatedName = XP_STRDUP(*rest); - char* name = allocatedName; - if (!name) continue; - XP_Bool newsrc_name_ok = (!XP_STRCMP(name, "newsrc") || - !XP_STRCMP(name, "snewsrc") || - !XP_STRNCMP(name, "newsrc-", 7) || - !XP_STRNCMP(name, "snewsrc-", 8)); - XP_ASSERT(newsrc_name_ok); - if (!newsrc_name_ok) continue; - int32 port = NEWS_PORT; - - HG29828 - name = XP_STRCHR(name, '-'); - if (name) name++; - else { - name = defname; - port = defport; - HG38276 - } - if (!name || !*name) continue; - char* ptr = XP_STRCHR(name, ':'); - if (ptr) { - *ptr = '\0'; - port = 0; - unsigned long p; - char dummy; - int n = sscanf(ptr+1, "%lu%c", &p, &dummy); - port = p; - XP_ASSERT(n == 1 && port != 0); - if (n != 1 || port == 0) continue; - } - - - char* ptr2 = XP_STRCHR(*rest, '-'); - if (ptr2) ptr2++; - else ptr2 = ""; - - h = NULL; - // Check that the newsrc file actually really exists before - // bothering to add it to our database. - XP_StatStruct statstr; - if (XP_Stat(ptr2, &statstr, HG36527) >= 0) { - h = AddNewsHost(name, HG98333, port, ptr2); - } - } - FREEIF(allocatedName); - - for (rest = newsrclist; rest && *rest ; rest++) { - XP_FREE(*rest); - } - - XP_FREE(newsrclist); - newsrclist = NULL; - - // ### let's try this - h = GetDefaultHost(FALSE); - if (h == NULL && defname) { - h = AddNewsHost(defname, HG73267, defport, defname); - if (h != NULL) { - h->MarkDirty(); // so the default .newsrc file gets created - // when we close the DB - } - } - - if (defname) XP_FREE(defname); -} - - -msg_HostTable::~msg_HostTable() -{ - for (int i=0 ; i<m_numhosts ; i++) { - delete m_hosts[i]; - } - delete [] m_hosts; - m_hosts = NULL; - m_numhosts = 0; -} - - -MSG_NewsHost *msg_HostTable::AddNewsHost(const char *name, XP_Bool xxx, - int32 port, const char* newsrcname) -{ - MSG_NewsHost *h = NULL; - - HG87366 - - h = new MSG_NewsHost(m_master, name, xxx, port); - - XP_ASSERT(h && h->getStr() && XP_STRCMP(h->getStr(), name) == 0); - if (!h || h->getStr() == NULL || XP_STRCMP(h->getStr(), name) != 0) { - // Somehow ran out of memory or something. Oh, well, skip it. - delete h; - return NULL; - } - if (m_numhosts >= m_maxhosts) { - m_maxhosts += 10; - MSG_NewsHost** oldlist = m_hosts; - m_hosts = new MSG_NewsHost* [m_maxhosts]; - for (int i=0 ; i<m_numhosts ; i++) { - m_hosts[i] = oldlist[i]; - } - delete [] oldlist; - } - if (h->SetNewsrcFileName(newsrcname) != 0) { - // bogus host, probably - better not leave it around or we will - // die later. - delete h; - return NULL; - } - - m_hosts[m_numhosts++] = h; - return h; -} - - - - -int32 -msg_HostTable::GetHostList(MSG_NewsHost** result, int32 resultsize) -{ - int32 n = getNumHosts(); - if (n > resultsize) n = resultsize; - for (int32 i=0 ; i<n ; i++) { - result[i] = getHost(i); - } - return getNumHosts(); -} - - -MSG_NewsHost* -msg_HostTable::GetDefaultHost(XP_Bool createIfMissing) -{ - MSG_NewsHost* host = NULL; - char* defname = NULL; - int32 defport = 0; - HG83765 - - PREF_CopyCharPref("network.hosts.nntp_server", &defname); - if (defname && *defname == '\0') { - XP_FREE(defname); - defname = NULL; - } - if (defname) { - PREF_GetIntPref("news.server_port", &defport); - HG83178 - if (defport == 0) defport = HG37630 NEWS_PORT; - for (int i=0 ; i<getNumHosts() ; i++) { - host = getHost(i); - if (host && - XP_STRCMP(host->getStr(), defname) == 0 && - host->getPort() == defport HG78636) break; - host = NULL; - } - if (!host && createIfMissing) { - host = m_master->AddNewsHost(defname, HG72688, defport); - } - XP_FREE(defname); - } - return host; -} - -MSG_NewsHost *msg_HostTable::FindNewsHost(MSG_FolderInfo *container) -{ - for (int i = 0; i < getNumHosts(); i++) { - MSG_NewsHost *host = getHost(i); - if (host && host->GetHostInfo() == container) { - return host; - } - } - return NULL; -} - - -int -msg_HostTable::RemoveEntry(MSG_NewsHost* host) -{ - for (int i=0 ; i<getNumHosts() ; i++) { - if (m_hosts[i] == host) { - m_hosts[i] = m_hosts[--m_numhosts]; - return 0; - } - } - XP_ASSERT(0); - return -1; -} - - -MSG_NewsHost *msg_HostTable::InferHostFromGroups (const char *groups) -{ - MSG_NewsHost *host = NULL; - msg_StringArray strings (TRUE /*owns memory*/); - - if (strings.ImportTokenList (groups, ", \t\r\n")) - { - for (int i = 0; i < strings.GetSize(); i++) - { - const char *group = strings.GetAt(i); - for (int i = 0; i < getNumHosts(); i++) - { - MSG_NewsHost *host = getHost(i); - if (host) - { - if (host->FindGroup (group)) - return host; - } - } - - } - } - - return NULL; -} - diff --git a/mozilla/lib/libmsg/hosttbl.h b/mozilla/lib/libmsg/hosttbl.h deleted file mode 100644 index 520fbbcb3c9..00000000000 --- a/mozilla/lib/libmsg/hosttbl.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef __msg_HostTable__ -#define __msg_HostTable__ 1 - -/* This class manages the list of newshosts. It opens the database at - startup (or creates one from scratch if it's missing). */ - - -class MSG_NewsHost; -class CMozillaDatabase; - -class msg_HostTable { -public: - static msg_HostTable* Create(MSG_Master* master); - - ~msg_HostTable(); - - int getNumHosts() {return m_numhosts;} - MSG_NewsHost* getHost(int i) { - XP_ASSERT(i >= 0 && i < m_numhosts); - return m_hosts[i]; - } - MSG_NewsHost* GetDefaultHost(XP_Bool createIfMissing); - - int32 GetHostList(MSG_NewsHost** result, int32 resultsize); - - MSG_NewsHost *AddNewsHost(const char* name, XP_Bool secure, int32 port, - const char* newsrcname); - - MSG_NewsHost *FindNewsHost (MSG_FolderInfo *container); - - int RemoveEntry(MSG_NewsHost* host); - - MSG_NewsHost *InferHostFromGroups (const char *groups); - -protected: - msg_HostTable(MSG_Master* master); - - MSG_Master* m_master; - int32 m_numhosts; - int32 m_maxhosts; - MSG_NewsHost** m_hosts; -}; - - - -#endif /* __msg_HostTable__ */ diff --git a/mozilla/lib/libmsg/idarray.cpp b/mozilla/lib/libmsg/idarray.cpp deleted file mode 100644 index 113dfc656d4..00000000000 --- a/mozilla/lib/libmsg/idarray.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// idarray.cpp : implementation file -// -#include "msg.h" -#include "xp.h" -#include "msgcom.h" -#include "idarray.h" - - -MSG_ViewIndex IDArray::FindIndex(MessageKey id) -{ - for (int i = 0; i < GetSize(); i++) - { - if ((MessageKey)(m_pData[i]) == id) - { - return i; - } - } - return MSG_VIEWINDEXNONE; -} - -void IDArray::SetArray(MessageKey* pData, int numElements, int numAllocated) -{ - XP_ASSERT(pData != NULL); - XP_ASSERT(numElements >= 0); - XP_ASSERT(numAllocated >= numElements); - - delete [] m_pData; // delete previous array - m_pData = pData; // set new array - m_nMaxSize = numAllocated; // set size - m_nSize = numElements; // set allocated length -} diff --git a/mozilla/lib/libmsg/idarray.h b/mozilla/lib/libmsg/idarray.h deleted file mode 100644 index 9280290efc3..00000000000 --- a/mozilla/lib/libmsg/idarray.h +++ /dev/null @@ -1,85 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// idarray.h: header file -// - -#ifndef _IDARRAY_H_ -#define _IDARRAY_H_ - -///////////////////////////////////////////////////////////////////////////// -// IDArray - Array of ID's - Can contain up to uint - 1 ids. On Win16, 64K - 1 -// On 32 bit platforms, more. -///////////////////////////////////////////////////////////////////////////// -#include "dwordarr.h" - -class IDArray : public XPDWordArray -{ -// constructors -public: - IDArray() : XPDWordArray() {} - -// Public Operations on the MessageKey array - typesafe overrides -public: - MessageKey operator[](uint nIndex) const { - return((MessageKey)XPDWordArray::operator[](nIndex)); - } - MessageKey GetIdFromIndex(uint nIndex) { - return(operator[](nIndex)); - } - MessageKey GetAt(uint nIndex) const { - return(operator[](nIndex)); - } - void SetAt(uint nIndex, MessageKey id) { - XPDWordArray::SetAt(nIndex, (uint32)id); - } - void SetAtGrow(uint nIndex, MessageKey id) { - XPDWordArray::SetAtGrow(nIndex, (uint32)id); - } - void InsertAt(uint nIndex, MessageKey id, int nCount = 1) { - XPDWordArray::InsertAt(nIndex, (uint32)id, nCount); - } - void InsertAt(uint nIndex, const IDArray *idArray) { - XPDWordArray::InsertAt(nIndex, idArray); - } - uint Add(MessageKey id) { - return(XPDWordArray::Add((uint32)id)); - } - uint Add(MessageKey *elementPtr, uint numElements) { - return XPDWordArray::Add((uint32 *) elementPtr, numElements); - } - void CopyArray(IDArray *oldA) { XPDWordArray::CopyArray((XPDWordArray*) oldA); } - void CopyArray(IDArray &oldA) { XPDWordArray::CopyArray(oldA); } -// new operations -public: - MSG_ViewIndex FindIndex(MessageKey key); // returns -1 if not found - - // use these next two carefully - MessageKey* GetArray(void) { - return((MessageKey*)m_pData); // only valid until another function - // called on the array (like - // GetBuffer() in CString) - } - void SetArray(MessageKey* pData, int numElements, - int numAllocated); -}; -/////////////////////////////////////////////////////// -#endif // _IDARRAY_H_ diff --git a/mozilla/lib/libmsg/imaphost.cpp b/mozilla/lib/libmsg/imaphost.cpp deleted file mode 100644 index 404ea9efa33..00000000000 --- a/mozilla/lib/libmsg/imaphost.cpp +++ /dev/null @@ -1,1386 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "imaphost.h" -#include "prefapi.h" -#include "msgmast.h" -#include "msgpane.h" -#include "msgimap.h" -#include "rosetta.h" -#include HG77677 -#include "msgprefs.h" - -#define FE_DOES_DELETE_MODEL // all frontends do this now. - -// I18N - this is a preference string and should not be localized -static const char *kPrefTemplate = "mail.imap.server.%s.%s"; - -MSG_IMAPHost::MSG_IMAPHost(const char* name, - XP_Bool xxx, - const char *userName, - XP_Bool checkNewMail, - int biffInterval, - XP_Bool rememberPassword, - XP_Bool usingSubscription, - XP_Bool overrideNamespaces, - const char *personalOnlineDir, - const char *publicOnlineDir, - const char *otherUsersOnlineDir) -{ - m_name = XP_STRDUP(name); - HG83737 - m_userName = XP_STRDUP(userName); - m_userPassword = NULL; - m_adminURL = NULL; - m_manageListsURL = NULL; - m_manageFiltersURL = NULL; - m_imapLocalDirectory = NULL; - m_checkNewMail = checkNewMail; - m_biffInterval = biffInterval; - m_rememberPassword = rememberPassword; - m_usingSubscription = usingSubscription; - m_overrideNamespaces = overrideNamespaces; - m_personalNamespacePrefix = (personalOnlineDir && *personalOnlineDir) ? XP_STRDUP(personalOnlineDir) : 0; - m_publicNamespacePrefixes = (publicOnlineDir && *publicOnlineDir) ? XP_STRDUP(publicOnlineDir) : 0; - m_otherUsersNamespacePrefixes = (otherUsersOnlineDir && *otherUsersOnlineDir) ? XP_STRDUP(otherUsersOnlineDir) : 0; - if (!m_personalNamespacePrefix && !m_publicNamespacePrefixes && !m_otherUsersNamespacePrefixes) - m_personalNamespacePrefix = PR_smprintf("\"\""); - m_rootNamespacePrefix = PR_smprintf(""); - m_writingOutPrefs = FALSE; - m_capability = 0; - m_expungeInboxOnExit = TRUE; - m_emptyTrashOnExit = FALSE; - m_emptyTrashThreshhold = 0; - m_passwordWritten = FALSE; - m_folderOfflineDefault = FALSE; - // set up m_imapLocalDirectory - taken from prefs code. - char *machinePathName = 0; - // see if there's a :port in the server name. If so, strip it off when - // creating the server directory. - char *server = XP_STRDUP(m_name); - char *port = 0; - if (server) - { - port = XP_STRCHR(server,':'); - if (port) - { - *port = 0; - } - machinePathName = WH_FileName(server, xpImapServerDirectory); - XP_FREE(server); - } - if (machinePathName) - { - char *imapUrl = XP_PlatformFileToURL (machinePathName); - if (imapUrl) - { - m_imapLocalDirectory = XP_STRDUP(imapUrl + XP_STRLEN("file://")); - XP_FREE(imapUrl); - } - XP_FREE (machinePathName); - } - m_hasExtendedAdminURLs = FALSE; - m_deleteIsMoveToTrash = FALSE; // default is false. - m_imapDeleteModel = MSG_IMAPDeleteIsIMAPDelete; -} - -MSG_IMAPHost::~MSG_IMAPHost() -{ - FREEIF(m_name); - FREEIF(m_userName); - FREEIF(m_userPassword); - FREEIF(m_adminURL); - FREEIF(m_manageListsURL); - FREEIF(m_manageFiltersURL); - FREEIF(m_personalNamespacePrefix); - FREEIF(m_publicNamespacePrefixes); - FREEIF(m_otherUsersNamespacePrefixes); - FREEIF(m_imapLocalDirectory); - FREEIF(m_rootNamespacePrefix); -} - -MSG_IMAPHostTable::MSG_IMAPHostTable(MSG_Master *master) -{ - m_master = master; -} - -MSG_IMAPHostTable::~MSG_IMAPHostTable() -{ - int32 n = GetSize(); - for (int32 i=0 ; i<n ; i++) { - delete GetHost(i); - } -} - -MSG_IMAPHost* MSG_IMAPHostTable::GetDefaultHost(XP_Bool /* createIfMissing */) -{ - return (GetSize() > 0) ? GetHost(0) : 0; -} - -void MSG_IMAPHostTable::UpdatePrefs(const char *prefName) -{ - if (!XP_STRNCMP(prefName, "mail.imap.server.", 17) && *(prefName + 17)) - { - char *serverName = XP_STRDUP(prefName + 17); - char *endServerName = XP_STRCHR(serverName, '.'); - if (endServerName) - { - *endServerName = '\0'; - MSG_IMAPHost *imapHost = FindIMAPHost (serverName); - if (imapHost) - imapHost->InitFromPrefs(); - } - FREEIF(serverName); - } -} - -/* do we need this */ -/* I think so, for subscribe */ -int32 MSG_IMAPHostTable::GetHostList(MSG_IMAPHost** result, int32 resultsize) -{ - int32 n = GetSize(); - if (n > resultsize) n = resultsize; - for (int32 i=0 ; i<n ; i++) { - result[i] = GetHost(i); - } - return GetSize(); -} - -MSG_IMAPHost *MSG_IMAPHostTable::AddIMAPHost(const char* name, XP_Bool xxx, - const char *userName, - XP_Bool checkNewMail, - int biffInterval, - XP_Bool rememberPassword, - XP_Bool usingSubscription, - XP_Bool overrideNamespace, - const char *personalOnlineDir, - const char *publicOnlineDir, - const char *otherUsersOnlineDir, - XP_Bool writePrefs) -{ - MSG_IMAPHost *host = new MSG_IMAPHost(name, xxx, userName, checkNewMail, biffInterval, rememberPassword, usingSubscription, - overrideNamespace, personalOnlineDir, publicOnlineDir, otherUsersOnlineDir); - if (host) - { - Add(host); - WriteServerList(); // flush server list to prefs. - if (writePrefs) // if we're adding this server from existing prefs, don't rewrite prefs, especially those that haven't been set yet - host->WriteHostPrefs(); - } - return host; -} - -MSG_IMAPHost *MSG_IMAPHostTable::FindIMAPHost (const char* name) -{ - if (name) - { - for (int i = 0; i < GetSize(); i++) - { - MSG_IMAPHost *host = GetHost(i); - if (!XP_STRCMP(name, host->m_name)) - return host; - } - } - return NULL; -} - -MSG_IMAPHost *MSG_IMAPHostTable::FindIMAPHost (MSG_FolderInfo *container) -{ - for (int i = 0; i < GetSize(); i++) - { - MSG_IMAPHost *host = GetHost(i); - if (host->m_hostinfo == container) - return host; - } - return NULL; -} - -// if afterHost is NULL, put this host first. -void MSG_IMAPHostTable::ReorderIMAPHost(MSG_IMAPHost *newHost, MSG_IMAPHost *afterHost) -{ - XP_ASSERT(afterHost != newHost); - if (afterHost == newHost) - return; - - for (int i = 0; i < GetSize(); i++) - { - MSG_IMAPHost *curHost = GetHost(i); - if (newHost == curHost) - { - RemoveAt(i); - i--; - } - else if (curHost == afterHost) - { - InsertAt(i + 1, newHost); - i++; - } - } - - if (!afterHost) - InsertAt(0, newHost); - - WriteServerList(); -} - -int MSG_IMAPHostTable::DeleteIMAPHost(MSG_IMAPHost* hostToRemove) -{ - for (int i = 0; i < GetSize(); i++) - { - MSG_IMAPHost *host = GetHost(i); - if (host == hostToRemove) - { - char prefName[200]; - - PR_snprintf(prefName, sizeof(prefName), kPrefTemplate, hostToRemove->m_name, ""); - // take off trailing '.' - *( prefName + XP_STRLEN(prefName) - 1) = '\0'; - - RemoveAt(i); - PREF_DeleteBranch(prefName); - - XP_RemoveDirectoryRecursive(hostToRemove->m_name, xpImapServerDirectory); - delete hostToRemove; - - break; - } - } - WriteServerList(); - return 0; -} - -void MSG_IMAPHostTable::WriteServerList() -{ - int serverListLen = 0; - int i; - - for (i = 0; i < GetSize(); i++) - { - MSG_IMAPHost *host = GetHost(i); - serverListLen += XP_STRLEN(host->m_name) + 1; - } - char *serverList = serverListLen ? (char *) XP_ALLOC(serverListLen) : 0; - for (i = 0; i < GetSize(); i++) - { - MSG_IMAPHost *host = GetHost(i); - if (i == 0) - XP_STRCPY(serverList, host->m_name); - else - { - XP_STRCAT(serverList, ","); - XP_STRCAT(serverList, host->m_name); - } - } - - PREF_SetCharPref("network.hosts.imap_servers", (serverList) ? serverList : ""); - FREEIF(serverList); -} - -/* static */ -void MSG_IMAPHost::UpgradeDefaultServerPrefs(MSG_Master *mailMaster) -{ - const char *hostFromPrefs = mailMaster->GetPrefs()->GetPopHost(); - char *hostName = hostFromPrefs ? XP_STRDUP(hostFromPrefs) : (char *)NULL; - const char *userNameFromPrefs = NET_GetPopUsername(); // default to the default pop user name - char *userName = userNameFromPrefs ? XP_STRDUP(userNameFromPrefs) : (char *)NULL; - XP_Bool deleteIsMoveToTrash; - int32 biffInterval = 0; - XP_Bool checkNewMail; - XP_Bool rememberPassword; - XP_Bool defaultOfflineDownload; - char *serverList = NULL; - char *onlineDir = NULL; - HG77678 - - HG72266 - PREF_GetIntPref("mail.check_time", &biffInterval); - PREF_GetBoolPref("mail.remember_password", &rememberPassword); - PREF_GetBoolPref("mail.check_new_mail", &checkNewMail); - PREF_GetBoolPref("mail.imap.delete_is_move_to_trash", &deleteIsMoveToTrash); - PREF_CopyCharPref("mail.imap.server_sub_directory", &onlineDir); - PREF_GetBoolPref("mail.imap.local_copies", &defaultOfflineDownload); - PREF_CopyCharPref("network.hosts.imap_servers", &serverList); - if (!serverList) - PREF_SetCharPref("network.hosts.imap_servers", hostName); - - MSG_IMAPHost *imapHost = new MSG_IMAPHost(hostName, HG63531, userName, checkNewMail, biffInterval, rememberPassword, FALSE, TRUE, - onlineDir, NULL, NULL); - - - if (imapHost) - { - imapHost->SetUserPassword(HG72267(NET_GetPopPassword())); - imapHost->SetDeleteIsMoveToTrash(deleteIsMoveToTrash); - imapHost->SetDefaultOfflineDownload(defaultOfflineDownload); - imapHost->WriteHostPrefs(); - delete imapHost; - } - HG29872 - FREEIF(serverList); - FREEIF(onlineDir); - FREEIF(hostName); - FREEIF(userName); -} - -/* static */ -MSG_IMAPHost * -MSG_IMAPHost::AddHostFromPrefs(const char *hostName, MSG_Master *mailMaster) -{ - char *userName; - char *adminURL = NULL; - int prefSize = XP_STRLEN(hostName) + 60; - char *prefName = (char *) XP_ALLOC(prefSize); - int32 biffInterval = 0; - int32 deleteModel = -1; - XP_Bool biff = FALSE; - XP_Bool isXXX = FALSE; - XP_Bool rememberPassword = FALSE; - XP_Bool usingSubscription = FALSE; - XP_Bool overrideNamespaces = TRUE; // set to true if the NAMESPACE command can override user's manual prefs - XP_Bool deleteIsMoveToTrash = TRUE; - XP_Bool checkNewMail = FALSE; - char *personalOnlineDir = NULL; - char *publicOnlineDir = NULL; - char *otherUsersOnlineDir = NULL; - - if (!prefName) - return NULL; - - - HG52442 - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "userName"); - if (PREF_OK != PREF_CopyCharPref(prefName, &userName)) - userName = XP_STRDUP(NET_GetPopUsername()); // default to the default pop user name - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "check_time"); - PREF_GetIntPref(prefName, &biffInterval); - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "check_new_mail"); - PREF_GetBoolPref(prefName, &checkNewMail); - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "remember_password"); - PREF_GetBoolPref(prefName, &rememberPassword); - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "using_subscription"); - PREF_GetBoolPref(prefName, &usingSubscription); - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "override_namespaces"); - PREF_GetBoolPref(prefName, &overrideNamespaces); - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "delete_is_move_to_trash"); - PREF_GetBoolPref(prefName, &deleteIsMoveToTrash); - -#ifdef FE_DOES_DELETE_MODEL - int32 tempDeleteModel; - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "delete_model"); - if (PREF_OK == PREF_GetIntPref(prefName, &tempDeleteModel)) - deleteModel = tempDeleteModel; -#endif - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "namespace.personal"); - PREF_CopyCharPref(prefName, &personalOnlineDir); - if (personalOnlineDir && !(*personalOnlineDir)) - { - XP_FREE(personalOnlineDir); - personalOnlineDir = 0; - } - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "namespace.public"); - PREF_CopyCharPref(prefName, &publicOnlineDir); - if (publicOnlineDir && !(*publicOnlineDir)) - { - XP_FREE(publicOnlineDir); - publicOnlineDir = 0; - } - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "namespace.other_users"); - PREF_CopyCharPref(prefName, &otherUsersOnlineDir); - if (otherUsersOnlineDir && !(*otherUsersOnlineDir)) - { - XP_FREE(otherUsersOnlineDir); - otherUsersOnlineDir = 0; - } - - - // this adds the host to the folder tree, if the host doesn't already exist. - MSG_IMAPHost *newHost = mailMaster->AddIMAPHost(hostName, isXXX, userName, checkNewMail, biffInterval, - rememberPassword, usingSubscription, overrideNamespaces, personalOnlineDir, publicOnlineDir, otherUsersOnlineDir, FALSE); - - if (newHost) - { - XP_Bool expungeInboxOnExit = TRUE; - XP_Bool emptyTrashOnExit = FALSE; - int32 emptyTrashThreshhold = 0; - XP_Bool offlineDownload = FALSE; - - if (rememberPassword) - { - char *password = NULL; - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "password"); - PREF_CopyCharPref(prefName, &password); - newHost->SetUserPassword(password); - FREEIF(password); - } - - if (deleteModel != -1) - newHost->SetIMAPDeleteModel((MSG_IMAPDeleteModel) deleteModel); - else - newHost->SetDeleteIsMoveToTrash(deleteIsMoveToTrash); - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "cleanup_inbox_on_exit"); - PREF_GetBoolPref(prefName, &expungeInboxOnExit); - - newHost->SetExpungeInboxOnExit(expungeInboxOnExit); - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "empty_trash_on_exit"); - PREF_GetBoolPref(prefName, &emptyTrashOnExit); - - newHost->SetEmptyTrashOnExit(emptyTrashOnExit); - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "offline_download"); - PREF_GetBoolPref(prefName, &offlineDownload); - - newHost->SetDefaultOfflineDownload(offlineDownload); - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "empty_trash_threshhold"); - PREF_GetIntPref(prefName, &emptyTrashThreshhold); - - newHost->SetEmptyTrashThreshhold(emptyTrashThreshhold); - - PR_snprintf(prefName, prefSize, kPrefTemplate, hostName, "admin_url"); - PREF_CopyCharPref(prefName, &adminURL); - - newHost->SetAdminURL(adminURL); - - // Creates a new host object for the IMAP thread to use for runtime data - IMAP_AddIMAPHost(hostName, usingSubscription, overrideNamespaces, newHost->GetPersonalNamespacePrefixPref(), - newHost->GetPublicNamespacePrefixPref(), newHost->GetOtherUsersNamespacePrefixPref(), - adminURL && XP_STRLEN(adminURL) > 0); - - } - - - FREEIF(userName); - FREEIF(adminURL); - FREEIF(personalOnlineDir); - FREEIF(publicOnlineDir); - FREEIF(otherUsersOnlineDir); - XP_FREE(prefName); - return newHost; -} - -void MSG_IMAPHost::InitFromPrefs() -{ - if (m_writingOutPrefs) - return; // Don't do this if we are just trying to write them out (in WriteHostPrefs). - - int prefSize = XP_STRLEN(m_name) + 60; - char *prefName = (char *) XP_ALLOC(prefSize); - - if (!prefName) - return; - - HG42322 - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "userName"); - FREEIF(m_userName); - PREF_CopyCharPref(prefName, &m_userName); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "check_time"); - PREF_GetIntPref(prefName, &m_biffInterval); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "remember_password"); - PREF_GetBoolPref(prefName, &m_rememberPassword); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "using_subscription"); - PREF_GetBoolPref(prefName, &m_usingSubscription); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "override_namespaces"); - PREF_GetBoolPref(prefName, &m_overrideNamespaces); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "namespace.personal"); - FREEIF(m_personalNamespacePrefix); - PREF_CopyCharPref(prefName, &m_personalNamespacePrefix); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "namespace.public"); - FREEIF(m_publicNamespacePrefixes); - PREF_CopyCharPref(prefName, &m_publicNamespacePrefixes); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "namespace.other_users"); - FREEIF(m_otherUsersNamespacePrefixes); - PREF_CopyCharPref(prefName, &m_otherUsersNamespacePrefixes); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "delete_model"); - - int32 tempDeleteModel; - int deleteModelStatus = PREF_GetIntPref(prefName, &tempDeleteModel); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "delete_is_move_to_trash"); - PREF_GetBoolPref(prefName, &m_deleteIsMoveToTrash); - -#ifdef FE_DOES_DELETE_MODEL - if (PREF_OK == deleteModelStatus) - { -// PREF_ClearUserPref(prefName); want to turn this on soon... - m_imapDeleteModel = (MSG_IMAPDeleteModel) tempDeleteModel; - m_deleteIsMoveToTrash = (m_imapDeleteModel == MSG_IMAPDeleteIsMoveToTrash); - } - else -#endif - { - if (m_deleteIsMoveToTrash) - m_imapDeleteModel = MSG_IMAPDeleteIsMoveToTrash; - else - m_imapDeleteModel = MSG_IMAPDeleteIsIMAPDelete; - } - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "cleanup_inbox_on_exit"); - PREF_GetBoolPref(prefName, &m_expungeInboxOnExit); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "empty_trash_on_exit"); - PREF_GetBoolPref(prefName, &m_emptyTrashOnExit); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "offline_download"); - PREF_GetBoolPref(prefName, &m_folderOfflineDefault); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "empty_trash_threshhold"); - PREF_GetIntPref(prefName, &m_emptyTrashThreshhold); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "admin_url"); - FREEIF(m_adminURL); - PREF_CopyCharPref(prefName, &m_adminURL); - - XP_FREE(prefName); - - HG72530 -} - -void MSG_IMAPHost::WriteHostPrefs() -{ - int prefSize = XP_STRLEN(m_name) + 60; - char *prefName = (char *) XP_ALLOC(prefSize); - - if (!prefName) - return; - - // Disable clobbering via pref callbacks. - m_writingOutPrefs = TRUE; - - HG52421 - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "userName"); - PREF_SetCharPref(prefName, m_userName); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "check_time"); - PREF_SetIntPref(prefName, m_biffInterval); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "remember_password"); - PREF_SetBoolPref(prefName, m_rememberPassword); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "using_subscription"); - PREF_SetBoolPref(prefName, m_usingSubscription); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "override_namespaces"); - PREF_SetBoolPref(prefName, m_overrideNamespaces); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "namespace.personal"); - PREF_SetCharPref(prefName, (m_personalNamespacePrefix) ? m_personalNamespacePrefix : ""); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "namespace.public"); - PREF_SetCharPref(prefName, (m_publicNamespacePrefixes) ? m_publicNamespacePrefixes : ""); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "namespace.other_users"); - PREF_SetCharPref(prefName, (m_otherUsersNamespacePrefixes) ? m_otherUsersNamespacePrefixes : ""); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "admin_url"); - PREF_SetCharPref(prefName, (m_adminURL) ? m_adminURL : ""); - - if (m_rememberPassword && m_userPassword) - { - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "password"); - PREF_SetCharPref(prefName, (m_userPassword) ? m_userPassword : ""); - } - // don't write this out, which will punt on backward compatability... -// PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "delete_is_move_to_trash"); -// PREF_SetBoolPref(prefName, m_deleteIsMoveToTrash); - -#ifdef FE_DOES_DELETE_MODEL - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "delete_model"); - PREF_SetIntPref(prefName, m_imapDeleteModel); -#endif - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "cleanup_inbox_on_exit"); - PREF_SetBoolPref(prefName, m_expungeInboxOnExit); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "empty_trash_on_exit"); - PREF_SetBoolPref(prefName, m_emptyTrashOnExit); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "empty_trash_threshhold"); - PREF_SetIntPref(prefName, m_emptyTrashThreshhold); - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "offline_download"); - PREF_SetBoolPref(prefName, m_folderOfflineDefault); - - // Re-enable clobbering via pref callbacks. - m_writingOutPrefs = FALSE; - - XP_FREE(prefName); -} - - -char *MSG_IMAPHost::GetPrettyName() -{ - int prefSize = XP_STRLEN(m_name) + 60; - char *prefName = (char *) XP_ALLOC(prefSize); - char *rv = NULL; - - if (!prefName) - return NULL; - - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "displayName"); - PREF_CopyCharPref(prefName, &rv); - - XP_FREE(prefName); - return rv; -} - - -void MSG_IMAPHost::SetNamespacePrefix(EIMAPNamespaceType type, const char *prefixes) -{ - if (m_overrideNamespaces) // if the server can override us - { - - int prefSize = XP_STRLEN(m_name) + 60; - char *prefName = (char *) XP_ALLOC(prefSize); - - switch (type) - { - case kPersonalNamespace: - FREEIF(m_personalNamespacePrefix); - m_personalNamespacePrefix = prefixes ? XP_STRDUP(prefixes) : (char *)NULL; - - // update the prefs now. - if (prefName) - { - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "namespace.personal"); - m_writingOutPrefs = TRUE; - if (m_personalNamespacePrefix) - PREF_SetCharPref(prefName, m_personalNamespacePrefix); - else - PREF_SetCharPref(prefName, ""); - m_writingOutPrefs = FALSE; - } - break; - case kPublicNamespace: - FREEIF(m_publicNamespacePrefixes); - m_publicNamespacePrefixes = prefixes ? XP_STRDUP(prefixes) : (char *)NULL; - - // update the prefs now. - if (prefName) - { - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "namespace.public"); - m_writingOutPrefs = TRUE; - if (m_publicNamespacePrefixes) - PREF_SetCharPref(prefName, m_publicNamespacePrefixes); - else - PREF_SetCharPref(prefName, ""); - m_writingOutPrefs = FALSE; - } - break; - case kOtherUsersNamespace: - FREEIF(m_otherUsersNamespacePrefixes); - m_otherUsersNamespacePrefixes = prefixes ? XP_STRDUP(prefixes) : (char *)NULL; - - // update the prefs now. - if (prefName) - { - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "namespace.other_users"); - m_writingOutPrefs = TRUE; - if (prefixes) - PREF_SetCharPref(prefName, m_otherUsersNamespacePrefixes); - else - PREF_SetCharPref(prefName, ""); - m_writingOutPrefs = FALSE; - } - break; - default: - XP_ASSERT(FALSE); - break; - } - - FREEIF(prefName); - HG52987 - WriteHostPrefs(); - } -} - -const char *MSG_IMAPHost::GetUserPassword() -{ - if (m_hostinfo && m_hostinfo->GetMaster()->IsCachePasswordProtected()) - { - MSG_FolderInfo *folderToUpdate = NULL; - m_hostinfo->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, &folderToUpdate, 1); - if (folderToUpdate) - { - const char *password = folderToUpdate->GetRememberedPassword(); - } - } - return m_userPassword; -} - -void MSG_IMAPHost::SetUserPassword(const char *password) -{ - if (!m_passwordWritten && m_hostinfo && m_hostinfo->GetMaster()->IsCachePasswordProtected()) - { - MSG_FolderInfo *folderToUpdate = NULL; - m_hostinfo->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, &folderToUpdate, 1); - if (folderToUpdate) - { - folderToUpdate->RememberPassword(password); - } - } - if (password) - { - FREEIF(m_userPassword); - m_userPassword = XP_STRDUP(password); - WriteHostPrefs(); - } - m_passwordWritten = TRUE; -} - -void MSG_IMAPHost::SetAdminURL(const char *adminURL) -{ - if (adminURL) - { - FREEIF(m_adminURL); - m_adminURL = XP_STRDUP(adminURL); - WriteHostPrefs(); - } -} - -void MSG_IMAPHost::SetManageFiltersURL(const char *manageFiltersURL) -{ - // by definition, if we have this url, we have extended urls - m_hasExtendedAdminURLs = TRUE; - if (manageFiltersURL) - { - FREEIF(m_manageFiltersURL); - m_manageFiltersURL = XP_STRDUP(manageFiltersURL); - WriteHostPrefs(); - } -} - -void MSG_IMAPHost::SetManageListsURL(const char *manageListsURL) -{ - m_hasExtendedAdminURLs = TRUE; - if (manageListsURL) - { - FREEIF(m_manageListsURL); - m_manageListsURL = XP_STRDUP(manageListsURL); - WriteHostPrefs(); - } -} - -/*static*/ void MSG_IMAPHost::RefreshUrlCallback (URL_Struct *, int status, MWContext *window_id) -{ - if (status >= 0) - { - if (window_id->currentIMAPfolder && window_id->currentIMAPfolder->AdminUrl() != NULL) - window_id->currentIMAPfolder->GetAdminUrl(window_id, MSG_AdminFolder); - } -} - - -int32 MSG_IMAPHost::GetBiffInterval() -{ - return m_biffInterval; -} - - -XP_Bool MSG_IMAPHost::RunAdminURL(MWContext *context, MSG_FolderInfo *folder, MSG_AdminURLType type) -{ - char *url = NULL; - Net_GetUrlExitFunc *preExitFunc = NULL; - - if (HaveAdminURL(type)) - { - switch (type) - { - case MSG_AdminServer: - url = XP_STRDUP(m_adminURL); - break; - case MSG_AdminFolder: - { - MSG_IMAPFolderInfoMail *imapFolder = (folder) ? folder->GetIMAPFolderInfoMail() : 0; - if (imapFolder) - { - const char *adminUrl = imapFolder->AdminUrl(); - if (!adminUrl) - { - url = CreateIMAPRefreshFolderURLs(m_name, imapFolder->GetOnlineName()); - context->mailMaster = folder->GetMaster(); - context->currentIMAPfolder = imapFolder; - preExitFunc = RefreshUrlCallback; - } - else - { - url = XP_STRDUP(adminUrl); - } - } - break; - } - case MSG_AdminServerSideFilters: - if (m_manageFiltersURL && XP_STRLEN(m_manageFiltersURL) > 0) - url = XP_STRDUP(m_manageFiltersURL); - break; - case MSG_AdminServerLists: - if (m_manageListsURL && XP_STRLEN(m_manageListsURL) > 0) - url = XP_STRDUP(m_manageListsURL); - break; - default: - break; - } - } - if (url) - { - URL_Struct *urlStruct = NET_CreateURLStruct(url, NET_NORMAL_RELOAD); - urlStruct->pre_exit_fn = preExitFunc; - - FE_GetURL (context, urlStruct); - XP_FREE(url); - return TRUE; - } - return FALSE; -} - -XP_Bool MSG_IMAPHost::HaveAdminURL(MSG_AdminURLType type) -{ - if (m_adminURL && XP_STRLEN(m_adminURL)) - { - switch (type) - { - case MSG_AdminServer: - return TRUE; - case MSG_AdminServerSideFilters: - case MSG_AdminFolder: - case MSG_AdminServerLists: - return m_hasExtendedAdminURLs; - default: - break; - } - } - return FALSE; -} - -void MSG_IMAPHost::SetDeleteIsMoveToTrash(XP_Bool deleteIsMoveToTrash) -{ - m_deleteIsMoveToTrash = deleteIsMoveToTrash; - m_imapDeleteModel = (deleteIsMoveToTrash) ? MSG_IMAPDeleteIsMoveToTrash : MSG_IMAPDeleteIsIMAPDelete; -} - -void MSG_IMAPHost::SetIMAPDeleteModel(MSG_IMAPDeleteModel deleteModel) -{ - m_imapDeleteModel = deleteModel; - m_deleteIsMoveToTrash = (deleteModel == MSG_IMAPDeleteIsMoveToTrash); -} - -int MSG_IMAPHost::RemoveHost() -{ - // ### dmb - need to delete all the associated files... - MSG_Master *master = m_hostinfo->GetMaster(); - master->BroadcastFolderDeleted(m_hostinfo); - master->GetFolderTree()->RemoveSubFolder(m_hostinfo); - master->GetIMAPHostTable()->DeleteIMAPHost(this); - return 0; -} - - -void MSG_IMAPHost::SetHostNeedsFolderUpdate(XP_Bool needsUpdate) -{ - MSG_IMAPFolderInfoContainer *hostFolderInfo = GetHostFolderInfo(); - if (hostFolderInfo) - { - hostFolderInfo->SetHostNeedsFolderUpdate(needsUpdate); - } -} - -// This should really only be set in the one-time subscription upgrade process -XP_Bool MSG_IMAPHost::SetIsHostUsingSubscription(XP_Bool usingSubscription) -{ - m_usingSubscription = usingSubscription; - WriteHostPrefs(); - IMAP_SetHostIsUsingSubscription(m_name, usingSubscription); - return m_usingSubscription; -} - -// later: Fix this to return the real port. -int32 MSG_IMAPHost::getPort() -{ - XP_ASSERT(FALSE); - return 143; -} - -MSG_FolderInfo *MSG_IMAPHost::GetTrashFolderForHost() -{ - if (!m_deleteIsMoveToTrash) // If delete is not move to trash, then there is no - return NULL; // magic trash folder - - MSG_FolderInfo *trashFolder = NULL; - GetHostFolderInfo()->GetFoldersWithFlag(MSG_FOLDER_FLAG_TRASH, &trashFolder, 1); - return trashFolder; -} - -int MSG_IMAPHost::FolderMatchesNamespace(const char *folder, const char *nsprefix) -{ - if (!folder) return -1; - - // If the namespace is part of the folder - if (XP_STRSTR(folder, nsprefix) == folder) - return XP_STRLEN(nsprefix); - - // If the folder is part of the prefix - // (Used for matching Personal folder with Personal/ namespace, etc.) - if (XP_STRSTR(nsprefix, folder) == nsprefix) - return XP_STRLEN(folder); - - return -1; -} - -const char *MSG_IMAPHost::GetNamespacePrefixForFolder(const char *folder) -{ - - int lengthMatched = -1, currentMatchedLength = -1; - char *rv = NULL, *nspref = m_personalNamespacePrefix; - EIMAPNamespaceType type = kPersonalNamespace; - - for (int i = 1; i <= 3; i++) - { - switch (i) - { - case 1: - type = kPersonalNamespace; - nspref = m_personalNamespacePrefix; - break; - case 2: - type = kPublicNamespace; - nspref = m_publicNamespacePrefixes; - break; - case 3: - type = kOtherUsersNamespace; - nspref = m_otherUsersNamespacePrefixes; - break; - } - - - int numNamespaces = IMAP_UnserializeNamespaces(nspref, NULL, 0); - char **ns = (char**) XP_CALLOC(numNamespaces, sizeof(char*)); - if (ns) - { - int len = IMAP_UnserializeNamespaces(nspref, ns, numNamespaces); - for (int k = 0; k < len; k++) - { - currentMatchedLength = FolderMatchesNamespace(folder, ns[k]); - if (currentMatchedLength > lengthMatched) - { - rv = ns[k]; - lengthMatched = currentMatchedLength; - } - else - { - FREEIF(ns[k]); - } - } - XP_FREE(ns); - } - } - - return rv; -} - - -EIMAPNamespaceType MSG_IMAPHost::GetNamespaceTypeForFolder(const char *folder) -{ - - int lengthMatched = -1, currentMatchedLength = -1; - char *nspref = m_personalNamespacePrefix; - EIMAPNamespaceType type = kPersonalNamespace, rv = kUnknownNamespace; - - for (int i = 1; i <= 3; i++) - { - switch (i) - { - case 1: - type = kPersonalNamespace; - nspref = m_personalNamespacePrefix; - break; - case 2: - type = kPublicNamespace; - nspref = m_publicNamespacePrefixes; - break; - case 3: - type = kOtherUsersNamespace; - nspref = m_otherUsersNamespacePrefixes; - break; - } - - - int numNamespaces = IMAP_UnserializeNamespaces(nspref, NULL, 0); - char **ns = (char**) XP_CALLOC(numNamespaces, sizeof(char*)); - if (ns) - { - int len = IMAP_UnserializeNamespaces(nspref, ns, numNamespaces); - for (int k = 0; k < len; k++) - { - currentMatchedLength = FolderMatchesNamespace(folder, ns[k]); - if (currentMatchedLength > lengthMatched) - { - rv = type; - lengthMatched = currentMatchedLength; - } - else - { - FREEIF(ns[k]); - } - } - XP_FREE(ns); - } - } - - return rv; -} - -const char *MSG_IMAPHost::GetDefaultNamespacePrefixOfType(EIMAPNamespaceType type) -{ - char *str = m_personalNamespacePrefix; - switch (type) - { - case kPersonalNamespace: - str = m_personalNamespacePrefix; - break; - case kPublicNamespace: - str = m_publicNamespacePrefixes; - break; - case kOtherUsersNamespace: - str = m_otherUsersNamespacePrefixes; - break; - } - - char *rv = NULL, *firstFound = NULL;; - - int numNamespaces = IMAP_UnserializeNamespaces(str, NULL, 0); - char **ns = (char**) XP_CALLOC(numNamespaces, sizeof(char*)); - if (ns) - { - int len = IMAP_UnserializeNamespaces(str, ns, numNamespaces); - for (int k = 0; k < len; k++) - { - if (!(*(ns[k]))) - { - // If this is the empty namespace of this type, it is the default - rv = ns[k]; - } - - if (k ==0) - { - firstFound = ns[k]; - } - else if (rv != ns[k]) - { - FREEIF(ns[k]); - } - } - XP_FREE(ns); - } - if (!rv) // If we didn't find an empty ("") namespace, use the first one in the list - rv = firstFound; - if (firstFound != rv) // If the empty namespace wasn't the first one found, free the first one found - FREEIF(firstFound); - return rv; -} - -XP_Bool MSG_IMAPHost::GetAreAnyNamespacesRoot() -{ - XP_Bool rootFound = FALSE; - char *rv = NULL, *nspref = m_personalNamespacePrefix; - EIMAPNamespaceType type = kPersonalNamespace; - - for (int i = 1; i <= 3 && !rootFound; i++) - { - switch (i) - { - case 1: - type = kPersonalNamespace; - nspref = m_personalNamespacePrefix; - break; - case 2: - type = kPublicNamespace; - nspref = m_publicNamespacePrefixes; - break; - case 3: - type = kOtherUsersNamespace; - nspref = m_otherUsersNamespacePrefixes; - break; - } - - - int numNamespaces = IMAP_UnserializeNamespaces(nspref, NULL, 0); - char **ns = (char**) XP_CALLOC(numNamespaces, sizeof(char*)); - if (ns) - { - int len = IMAP_UnserializeNamespaces(nspref, ns, numNamespaces); - for (int k = 0; k < len && !rootFound; k++) - { - rootFound = (!(*(ns[k]))); - FREEIF(ns[k]); - } - XP_FREE(ns); - } - } - - return rootFound; -} - -XP_Bool MSG_IMAPHost::GetShouldStripThisNamespacePrefix(const char *prefix) -{ - // If this namespace is "" then we don't need to strip it - if (!(*prefix)) - return FALSE; - - // If any other namespaces are "" then we can't strip this one - if (GetAreAnyNamespacesRoot()) - return FALSE; - - // If this is the only personal namespace, then we can strip it off. - EIMAPNamespaceType type = GetNamespaceTypeForFolder(prefix); - if (type == kPersonalNamespace) - { - char *str = m_personalNamespacePrefix; - switch (type) - { - case kPersonalNamespace: - str = m_personalNamespacePrefix; - break; - case kPublicNamespace: - str = m_publicNamespacePrefixes; - break; - case kOtherUsersNamespace: - str = m_personalNamespacePrefix; - break; - } - int numNamespaces = IMAP_UnserializeNamespaces(str, NULL, 0); - return (numNamespaces <= 1); - } - else - return FALSE; -} - -// This returns the namespace prefix of the namespace which -// was stripped to the root -const char *MSG_IMAPHost::GetRootNamespacePrefix() -{ - const char *def = GetDefaultNamespacePrefixOfType(kPersonalNamespace); - if (def) - { - if (GetShouldStripThisNamespacePrefix(def)) - return def; // This is the one that was stripped to be the root - else - return m_rootNamespacePrefix; // the default personal namespace wasn't stripped; so, there must really be "" at the root - } - else - return m_rootNamespacePrefix; -} - -XP_Bool MSG_IMAPHost::GetHostSupportsSharing() -{ - return (GetCapabilityForHost() & kACLCapability); -} - -// If there is a runtime host and we have its capabilities, -// get them from there. If it has changed since the last session, -// write it out to the preferences. -// If we don't have a runtime capability, get them from the cached -// info in the prefs. -uint32 MSG_IMAPHost::GetCapabilityForHost() -{ - - uint32 runtimeCapability = IMAP_GetCapabilityForHost(m_name); - if (runtimeCapability) // capabilities defined - { - if (runtimeCapability != m_capability) // capabilities different than those in the prefs, or we haven't read from prefs yet - { - m_capability = runtimeCapability; - int prefSize = XP_STRLEN(m_name) + 60; - char *prefName = (char *) XP_ALLOC(prefSize); - if (prefName) - { - // update the prefs - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "capability"); - m_writingOutPrefs = TRUE; - PREF_SetIntPref(prefName, m_capability); - m_writingOutPrefs = FALSE; - XP_FREE(prefName); - } - } - } - else - { - // haven't connected yet, try getting it from the prefs. - int prefSize = XP_STRLEN(m_name) + 60; - char *prefName = (char *) XP_ALLOC(prefSize); - if (prefName) - { - PR_snprintf(prefName, prefSize, kPrefTemplate, m_name, "capability"); - int32 capability = 0; - PREF_GetIntPref(prefName, &capability); - m_capability = (uint32) capability; - XP_FREE(prefName); - } - } - return m_capability; -} - -extern "C" const char *MSG_GetIMAPHostUsername(MSG_Master *master, const char *hostName) -{ - MSG_IMAPHost *host = NULL; - if (master && master->GetIMAPHostTable()) - { - host = master->GetIMAPHostTable()->FindIMAPHost(hostName); - if (host) - return host->GetUserName(); - } - // we could look up the preference for the host, if we were nice. - return NULL; -} - -extern "C" const char *MSG_GetIMAPHostPassword(MSG_Master *master, const char *hostName) -{ - MSG_IMAPHost *host = NULL; - if (master && master->GetIMAPHostTable()) - { - host = master->GetIMAPHostTable()->FindIMAPHost(hostName); - if (host) - return HG72224(host->GetUserPassword()); - } - // we could look up the preference for the host, if we were nice. - return NULL; -} - -extern "C" void MSG_SetIMAPHostPassword(MSG_Master *master, const char *hostName, const char *password) -{ - MSG_IMAPHost *host = NULL; - if (master && master->GetIMAPHostTable()) - { - host = master->GetIMAPHostTable()->FindIMAPHost(hostName); - if (host) - { - HG52286 - host->SetUserPassword(HG62294(password)); - if (host->GetRememberPassword()) - { - int prefSize = XP_STRLEN(host->GetHostName()) + 60; - char *prefName = (char *) XP_ALLOC(prefSize); - PR_snprintf(prefName, prefSize, "mail.imap.server.%s.password", host->GetHostName()); - host->SetWritingOutPrefs(TRUE); - PREF_SetCharPref(prefName, host->GetUserPassword()); - host->SetWritingOutPrefs(FALSE); - XP_FREE(prefName); - } - } - } -} - -extern "C" void MSG_SetNamespacePrefixes(MSG_Master *master, const char *hostName, - EIMAPNamespaceType type, const char *prefixes) -{ - MSG_IMAPHost *host = NULL; - if (master && master->GetIMAPHostTable()) - { - host = master->GetIMAPHostTable()->FindIMAPHost(hostName); - if (host) - host->SetNamespacePrefix(type, prefixes); - } -} - -extern "C" void MSG_CommitCapabilityForHost(const char *hostName, MSG_Master *master) -{ - MSG_IMAPHost *host = NULL; - if (master && master->GetIMAPHostTable()) - { - host = master->GetIMAPHostTable()->FindIMAPHost(hostName); - if (host) - host->GetCapabilityForHost(); /* causes a refresh */ - } -} - -void MSG_IMAPHost::WriteStrPref(const char *prefName, const char *strValue) -{ - int prefSize = XP_STRLEN(m_name) + 60; - char *wholePrefName = (char *) XP_ALLOC(prefSize); - - if (!wholePrefName) - return; - - // Disable clobbering via pref callbacks. - m_writingOutPrefs = TRUE; - HG64384 - PR_snprintf(wholePrefName, prefSize, kPrefTemplate, m_name, prefName); - PREF_SetCharPref(wholePrefName, strValue); - m_writingOutPrefs = FALSE; - XP_FREE(wholePrefName); -} - -void MSG_IMAPHost::WriteBoolPref(const char *prefName, XP_Bool boolValue) -{ - int prefSize = XP_STRLEN(m_name) + 60; - char *wholePrefName = (char *) XP_ALLOC(prefSize); - - if (!wholePrefName) - return; - - // Disable clobbering via pref callbacks. - m_writingOutPrefs = TRUE; - - PR_snprintf(wholePrefName, prefSize, kPrefTemplate, m_name, prefName); - PREF_SetBoolPref(wholePrefName, boolValue); - m_writingOutPrefs = FALSE; - XP_FREE(wholePrefName); -} - -void MSG_IMAPHost::WriteIntPref(const char *prefName, int32 intValue) -{ - int prefSize = XP_STRLEN(m_name) + 60; - char *wholePrefName = (char *) XP_ALLOC(prefSize); - - if (!wholePrefName) - return; - - // Disable clobbering via pref callbacks. - m_writingOutPrefs = TRUE; - - PR_snprintf(wholePrefName, prefSize, kPrefTemplate, m_name, prefName); - PREF_SetIntPref(wholePrefName, intValue); - m_writingOutPrefs = FALSE; - XP_FREE(wholePrefName); -} - diff --git a/mozilla/lib/libmsg/imaphost.h b/mozilla/lib/libmsg/imaphost.h deleted file mode 100644 index 2ddb9b11a12..00000000000 --- a/mozilla/lib/libmsg/imaphost.h +++ /dev/null @@ -1,204 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _IMAPHOST_H -#define _IMAPHOST_H - -#include "msghost.h" -#include "ptrarray.h" -#include "imap.h" -class MSG_IMAPFolderInfoContainer; - -class MSG_IMAPHost : public MSG_Host { - friend class MSG_IMAPHostTable; -public: - MSG_IMAPHost(const char* name, - XP_Bool secure, - const char *userName, - XP_Bool checkNewMail, - int biffInterval, - XP_Bool rememberPassword, - XP_Bool usingSubscription, - XP_Bool overrideNamespace, - const char *personalOnlineDir, - const char *publicOnlineDir, - const char *otherUsersOnlineDir); - virtual ~MSG_IMAPHost(); - - virtual XP_Bool IsIMAP () { return TRUE; } - virtual MSG_IMAPHost *GetIMAPHost() { return this; } - - // Returns a fully descriptive name for this IMAP host, possibly including the - // ":<port>" and also possibly a trailing (and localized) " (secure)" - // Well, in theory, anyway. - virtual const char* getFullUIName() { return GetHostName(); } - - // Returns a newly-allocated pretty name for this host, only if set in the prefs. - // Returns NULL otherwise - virtual char *GetPrettyName(); - virtual int32 getPort(); - - virtual int RemoveHost(); - - static MSG_IMAPHost *AddHostFromPrefs(const char *hostName, MSG_Master *mailMaster); - static void UpgradeDefaultServerPrefs(MSG_Master *mailMaster); - void WriteHostPrefs(); - void InitFromPrefs(); - - // GetTrashFolderForHost() returns the MSG_FolderInfo* of the Trash - // folder on the host if it is using the Trash delete model; otherwise, - // returns NULL. - MSG_FolderInfo *GetTrashFolderForHost(); - - virtual XP_Bool isSecure() {return m_secure;} - const char *GetUserName() {return m_userName;} - void SetHostInfo(MSG_IMAPFolderInfoContainer *folder) {m_hostinfo = folder;} - MSG_IMAPFolderInfoContainer *GetHostFolderInfo() {return m_hostinfo;} - const char *GetHostName() { return m_name;} - const char *GetUserPassword() ; - void SetUserPassword(const char *password) ; - const char *GetLocalDirectory() {return m_imapLocalDirectory;} - XP_Bool GetRememberPassword() {return m_rememberPassword;} - XP_Bool GetIsHostUsingSubscription() {return m_usingSubscription;} - XP_Bool SetIsHostUsingSubscription(XP_Bool usingSubscription); - void SetAdminURL(const char *adminURL); - const char *GetAdminURL() {return m_adminURL;} - void SetManageFiltersURL(const char *manageFiltersURL); - const char *GetManageFiltersURL() {return m_manageFiltersURL;} - void SetManageListsURL(const char *manageListsURL); - const char *GetManageListsURL() {return m_manageListsURL;} - static void RefreshUrlCallback (URL_Struct *URL_s, int status, MWContext *window_id); - XP_Bool RunAdminURL(MWContext *context, MSG_FolderInfo *folder, MSG_AdminURLType type); - XP_Bool HaveAdminURL(MSG_AdminURLType type); - void SetHostNeedsFolderUpdate(XP_Bool needsUpdate); - XP_Bool GetOverrideNamespaces() { return m_overrideNamespaces; } - void SetDeleteIsMoveToTrash(XP_Bool deleteIsMoveToTrash); - XP_Bool GetDeleteIsMoveToTrash() {return (m_imapDeleteModel == MSG_IMAPDeleteIsMoveToTrash);} - XP_Bool GetCheckNewMail() {return m_checkNewMail;} - MSG_IMAPDeleteModel GetIMAPDeleteModel() {return m_imapDeleteModel;} - void SetIMAPDeleteModel(MSG_IMAPDeleteModel deleteModel); - - XP_Bool GetExpungeInboxOnExit() {return m_expungeInboxOnExit;} - XP_Bool GetEmptyTrashOnExit() { return m_emptyTrashOnExit;} - int32 GetEmptyTrashThreshhold() {return m_emptyTrashThreshhold;} - void SetEmptyTrashOnExit(XP_Bool emptyTrash) {m_emptyTrashOnExit = emptyTrash;} - void SetExpungeInboxOnExit(XP_Bool expungeInbox) {m_expungeInboxOnExit = expungeInbox;} - void SetEmptyTrashThreshhold(int32 threshhold) {m_emptyTrashThreshhold = threshhold;} - XP_Bool GetDefaultOfflineDownload() {return m_folderOfflineDefault;} - void SetDefaultOfflineDownload(XP_Bool defaultOffline) {m_folderOfflineDefault = defaultOffline;} - - //const char *GetPersonalNamespacePrefix() { return m_personalNamespacePrefix; } - void SetNamespacePrefix(EIMAPNamespaceType type, const char *prefix); - const char *GetNamespacePrefixForFolder(const char *folder); - EIMAPNamespaceType GetNamespaceTypeForFolder(const char *folder); - const char *GetDefaultNamespacePrefixOfType(EIMAPNamespaceType type); - const char *GetRootNamespacePrefix(); - XP_Bool GetShouldStripThisNamespacePrefix(const char *prefix); - XP_Bool GetAreAnyNamespacesRoot(); - XP_Bool GetHostSupportsSharing(); - int32 GetBiffInterval(); - uint32 GetCapabilityForHost(); - void SetWritingOutPrefs(XP_Bool w) { m_writingOutPrefs = w; } - - -protected: - int FolderMatchesNamespace(const char *folder, const char *nsprefix); - char *GetPersonalNamespacePrefixPref() { return m_personalNamespacePrefix; } - char *GetPublicNamespacePrefixPref() { return m_publicNamespacePrefixes; } - char *GetOtherUsersNamespacePrefixPref() { return m_otherUsersNamespacePrefixes; } - void WriteStrPref(const char *prefName, const char *strValue); - void WriteBoolPref(const char *prefName, XP_Bool boolValue); - void WriteIntPref(const char *prefName, int32 intValue); - - -protected: - char * m_name; - XP_Bool m_secure; - XP_Bool m_usingSubscription; - XP_Bool m_overrideNamespaces; - XP_Bool m_checkNewMail; - uint32 m_capability; - - char *m_personalNamespacePrefix; - char *m_publicNamespacePrefixes; - char *m_otherUsersNamespacePrefixes; - char *m_rootNamespacePrefix; - char *m_userName; - char *m_userPassword; - char *m_imapLocalDirectory; - char *m_defaultPersonalNamespacePrefix; - char *m_adminURL; - char *m_manageListsURL; - char *m_manageFiltersURL; - int32 m_biffInterval; - MSG_IMAPDeleteModel m_imapDeleteModel; - XP_Bool m_rememberPassword; - XP_Bool m_hasExtendedAdminURLs; - XP_Bool m_deleteIsMoveToTrash; - XP_Bool m_expungeInboxOnExit; - XP_Bool m_emptyTrashOnExit; - int32 m_emptyTrashThreshhold; - XP_Bool m_writingOutPrefs; - MSG_IMAPFolderInfoContainer* m_hostinfo; // Object representing entire imap host in tree - XP_Bool m_passwordWritten; - XP_Bool m_folderOfflineDefault; -}; - -class MSG_IMAPHostTable : public XPPtrArray{ -public: - MSG_IMAPHostTable(MSG_Master* master); - ~MSG_IMAPHostTable(); - - MSG_IMAPHost* GetHost(int i) - { - return (MSG_IMAPHost *) GetAt(i); - } - - void UpdatePrefs(const char *prefName); - MSG_IMAPHost* GetDefaultHost(XP_Bool createIfMissing = FALSE); - - int32 GetHostList(MSG_IMAPHost** result, int32 resultsize); - - MSG_IMAPHost *AddIMAPHost(const char* name, XP_Bool secure, - const char *userName, - XP_Bool checkNewMail, - int biffInterval, - XP_Bool rememberPassword, - XP_Bool usingSubscription, - XP_Bool overrideNamespace, - const char *personalOnlineDir, - const char *publicOnlineDir, - const char *otherUsersOnlineDir, - XP_Bool writePrefs); - - MSG_IMAPHost *FindIMAPHost (MSG_FolderInfo *container); - MSG_IMAPHost *FindIMAPHost (const char* name); - - int DeleteIMAPHost(MSG_IMAPHost* host); - void ReorderIMAPHost(MSG_IMAPHost *host, MSG_IMAPHost *afterHost /* NULL = pos 0 */); - void WriteServerList(); - -protected: - MSG_Master* m_master; -}; - -#endif diff --git a/mozilla/lib/libmsg/imapoff.cpp b/mozilla/lib/libmsg/imapoff.cpp deleted file mode 100644 index 4a789306892..00000000000 --- a/mozilla/lib/libmsg/imapoff.cpp +++ /dev/null @@ -1,1178 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* offline imap download stream */ -#include "msg.h" -#include "imapoff.h" -#include "maildb.h" -#include "msgfinfo.h" -#include "mailhdr.h" -#include "msgpane.h" -#include "msgprefs.h" -#include "msgurlq.h" -#include "xpgetstr.h" -#include "prefapi.h" -#include "imap.h" -#include "grpinfo.h" -#include "msgdbapi.h" -#include "msgstrob.h" - -extern "C" -{ - extern int MK_MSG_CONFIRM_CONTINUE_IMAP_SYNC; - extern int MK_MSG_HTML_IMAP_NO_CACHED_BODY; -} // extern "C" - - - -// lame forward to kill mac warning -void OffOnlineSynchExitFunction (URL_Struct *URL_s, int status, MWContext *window_id); - -// when we get here, we're done, give the other deferred tasks a chance now -void OffOnlineSynchExitFunction (URL_Struct *URL_s, int /*status*/, MWContext *) -{ - OfflineImapGoOnlineState *goState = URL_s->msg_pane->GetGoOnlineState(); - if (goState) - { - delete goState; - URL_s->msg_pane->SetGoOnlineState(NULL); - } - - // kick off any other on/off urls (like news synching) - if (URL_s->msg_pane && URL_s->msg_pane->GetURLChain()) - URL_s->msg_pane->GetURLChain()->GetNextURL(); -} - -// lame forward to kill mac warning -void OfflineOpExitFunction (URL_Struct *URL_s, int status, MWContext *window_id); - -void OfflineOpExitFunction (URL_Struct *URL_s, int status, MWContext *window_id) -{ - OfflineImapGoOnlineState *goState = URL_s->msg_pane->GetGoOnlineState(); - if (goState) - { -#ifdef DEBUG_bienvenu - XP_ASSERT(status != MK_INTERRUPTED); // unless user interrupted, don't want to see this. -#endif - if (status != MK_INTERRUPTED && ((status >= 0) || FE_Confirm(URL_s->msg_pane->GetContext(), XP_GetString(MK_MSG_CONFIRM_CONTINUE_IMAP_SYNC) ))) - goState->ProcessNextOperation(); - else - { - // This function will clear the pane of any information about - // folder loads and send a MSG_PaneNotifyFolderLoaded is necessary - if (goState->ProcessingStaleFolderUpdate()) - ImapFolderSelectCompleteExitFunction(URL_s, status, window_id); - - delete goState; - URL_s->msg_pane->SetGoOnlineState(NULL); - } - } -} - -void ReportLiteSelectUIDVALIDITY(MSG_Pane *receivingPane, uint32 UIDVALIDITY) -{ - OfflineImapGoOnlineState *goState = receivingPane ? receivingPane->GetGoOnlineState() : (OfflineImapGoOnlineState *)NULL; - if (goState) - goState->SetCurrentUIDValidity(UIDVALIDITY); -} - - -OfflineImapGoOnlineState::OfflineImapGoOnlineState(MSG_Pane *workerPane, MSG_IMAPFolderInfoMail *singleFolderOnly) -{ - workerPane->SetGoOnlineState(this); - workerPane->GetMaster()->SetPlayingBackOfflineOps(TRUE); - m_workerPane = workerPane; - m_mailboxupdatesStarted = FALSE; - mCurrentPlaybackOpType = kFlagsChanged; - m_pseudoOffline = FALSE; - m_createdOfflineFolders = FALSE; - - m_singleFolderToUpdate = singleFolderOnly; - - // start with the first imap mailbox - if (!m_singleFolderToUpdate) - { - m_folderIterator = new MSG_FolderIterator(workerPane->GetMaster()->GetImapMailFolderTree()); - m_currentFolder = (MSG_FolderInfoMail *) m_folderIterator->First(); - if (m_currentFolder && (m_currentFolder->GetFlags() & MSG_FOLDER_FLAG_IMAP_SERVER)) - AdvanceToNextFolder(); - } - else - m_currentFolder = m_singleFolderToUpdate; - m_urlQueue = NULL; - m_downloadOfflineImapState = NULL; -} - -OfflineImapGoOnlineState::~OfflineImapGoOnlineState() -{ - if (m_currentDB) - m_currentDB->Close(); - m_workerPane->GetMaster()->SetPlayingBackOfflineOps(FALSE); - delete m_folderIterator; - delete m_downloadOfflineImapState; -} - -MSG_UrlQueue *OfflineImapGoOnlineState::GetUrlQueue(XP_Bool *alreadyRunning) -{ - MSG_UrlQueue *queue = MSG_UrlQueue::FindQueue (m_workerPane); - *alreadyRunning = queue != NULL; - - if (!queue) // should this be a MSG_ImapLoadFolderUrlQueue? I think so. - queue = new MSG_ImapLoadFolderUrlQueue(m_workerPane); - else - XP_Trace("we're using another queue for playing back an online operation!\n"); - - queue->AddInterruptCallback(MSG_UrlQueue::HandleFolderLoadInterrupt); - - return queue; -} - -void OfflineImapGoOnlineState::AdvanceToNextFolder() -{ - // we always start by changing flags - mCurrentPlaybackOpType = kFlagsChanged; - - m_currentFolder = (MSG_FolderInfoMail *) m_folderIterator->Next(); - if (m_currentFolder && (m_currentFolder->GetFlags() & MSG_FOLDER_FLAG_IMAP_SERVER)) - AdvanceToNextFolder(); - - if (!m_currentFolder && (m_folderIterator->m_masterParent == m_workerPane->GetMaster()->GetImapMailFolderTree())) - { - delete m_folderIterator; - m_folderIterator = new MSG_FolderIterator(m_workerPane->GetMaster()->GetLocalMailFolderTree()); - m_currentFolder = (MSG_FolderInfoMail *) m_folderIterator->First(); - } -} - -void OfflineImapGoOnlineState::ProcessFlagOperation(DBOfflineImapOperation *currentOp) -{ - IDArray matchingFlagKeys; - int currentKeyIndex = m_KeyIndex; - imapMessageFlagsType matchingFlags = currentOp->GetNewMessageFlags(); - - do { // loop for all messsages with the same flags - matchingFlagKeys.Add(currentOp->GetMessageKey()); - currentOp->ClearImapFlagOperation(); - delete currentOp; - currentOp = NULL; - if (++currentKeyIndex < m_CurrentKeys.GetSize()) - currentOp = m_currentDB->GetOfflineOpForKey(m_CurrentKeys[currentKeyIndex], FALSE); - } while (currentOp && (currentOp->GetOperationFlags() & kFlagsChanged) && (currentOp->GetNewMessageFlags() == matchingFlags) ); - - if (currentOp) - { - delete currentOp; - currentOp = NULL; - } - - char *uids = MSG_IMAPFolderInfoMail::AllocateImapUidString(matchingFlagKeys); - if (uids && (m_currentFolder->GetFlags() & MSG_FOLDER_FLAG_IMAPBOX)) - { - char *url = CreateImapSetMessageFlagsUrl(((MSG_IMAPFolderInfoMail *) m_currentFolder)->GetHostName(), - ((MSG_IMAPFolderInfoMail *) m_currentFolder)->GetOnlineName(), - ((MSG_IMAPFolderInfoMail *) m_currentFolder)->GetOnlineHierarchySeparator(), - uids, matchingFlags, TRUE); - if (url) - { - XP_Bool alreadyRunningQueue; - MSG_UrlQueue *queue = GetUrlQueue(&alreadyRunningQueue); - - if (queue) - { - // should we insert this at 0, or add? I think we want to run offline events - // before any new events...but this is just a lite select - queue->AddUrl(url, OfflineOpExitFunction); - if (!alreadyRunningQueue) - queue->GetNextUrl(); - } - XP_FREE(url); - } - } - FREEIF(uids); -} - -/* static */ void -OfflineImapGoOnlineState::PostAppendMsgExitFunction(URL_Struct *URL_s, int - status, MWContext - *window_id) -{ - AppendMsgOfflineImapState *appendMsgState = - (AppendMsgOfflineImapState *) URL_s->fe_data; - // Append Msg specific - if (status >= 0) - { - appendMsgState->RemoveMsgFile(); - appendMsgState->RemoveHdrFromDB(); - } - URL_s->fe_data = 0; - delete appendMsgState; - - OfflineOpExitFunction(URL_s, status, window_id); -} - -void -OfflineImapGoOnlineState::ProcessAppendMsgOperation(DBOfflineImapOperation - *currentOp, int32 opType) -{ - MailMessageHdr *mailHdr = - m_currentDB->GetMailHdrForKey(currentOp->GetMessageKey()); - if (mailHdr) - { - char *msg_file_name = WH_TempName (xpFileToPost, "nsmail"); - if (msg_file_name) - { - XP_File msg_file = XP_FileOpen(msg_file_name, xpFileToPost, - XP_FILE_WRITE_BIN); - if (msg_file) - { - mailHdr->WriteOfflineMessage(msg_file, m_currentDB->GetDB()); - XP_FileClose(msg_file); - XPStringObj moveDestination; - currentOp->GetMoveDestination(m_currentDB->GetDB(), moveDestination); - MSG_IMAPFolderInfoMail *currentIMAPFolder = m_currentFolder->GetIMAPFolderInfoMail(); - - MSG_IMAPFolderInfoMail *mailFolderInfo = currentIMAPFolder - ? m_workerPane->GetMaster()->FindImapMailFolder(currentIMAPFolder->GetHostName(), moveDestination, NULL, FALSE) - : m_workerPane->GetMaster()->FindImapMailFolder(moveDestination); - char *urlString = - CreateImapAppendMessageFromFileUrl( - mailFolderInfo->GetHostName(), - mailFolderInfo->GetOnlineName(), - mailFolderInfo->GetOnlineHierarchySeparator(), - opType == kAppendDraft); - if (urlString) - { - URL_Struct *url = NET_CreateURLStruct(urlString, - NET_NORMAL_RELOAD); - if (url) - { - url->post_data = XP_STRDUP(msg_file_name); - url->post_data_size = XP_STRLEN(msg_file_name); - url->post_data_is_file = TRUE; - url->method = URL_POST_METHOD; - url->fe_data = (void *) new - AppendMsgOfflineImapState( - mailFolderInfo, - currentOp->GetMessageKey(), msg_file_name); - url->internal_url = TRUE; - url->msg_pane = m_workerPane; - m_workerPane->GetContext()->imapURLPane = m_workerPane; - MSG_UrlQueue::AddUrlToPane (url, - PostAppendMsgExitFunction, - m_workerPane, TRUE); - currentOp->ClearAppendMsgOperation(m_currentDB->GetDB(), opType); - } - XP_FREEIF(urlString); - } - } - XP_FREEIF(msg_file_name); - } - delete mailHdr; - } - delete currentOp; -} - - -void OfflineImapGoOnlineState::ProcessMoveOperation(DBOfflineImapOperation *currentOp) -{ - IDArray *matchingFlagKeys = new IDArray ; - int currentKeyIndex = m_KeyIndex; - XPStringObj moveDestination; - currentOp->GetMoveDestination(m_currentDB->GetDB(), moveDestination); - XP_Bool moveMatches = TRUE; - - do { // loop for all messsages with the same destination - if (moveMatches) - { - matchingFlagKeys->Add(currentOp->GetMessageKey()); - currentOp->ClearMoveOperation(m_currentDB->GetDB()); - } - delete currentOp; - currentOp = NULL; - - if (++currentKeyIndex < m_CurrentKeys.GetSize()) - { - XPStringObj nextDestination; - currentOp = m_currentDB->GetOfflineOpForKey(m_CurrentKeys[currentKeyIndex], FALSE); - if (currentOp && (currentOp->GetOperationFlags() & kMsgMoved) ) - { - currentOp->GetMoveDestination(m_currentDB->GetDB(), nextDestination); - moveMatches = XP_STRCMP(moveDestination, nextDestination) == 0; - } - else - moveMatches = FALSE; - } - } while (currentOp); - - XP_Bool alreadyRunningQueue; - MSG_UrlQueue *queue = GetUrlQueue(&alreadyRunningQueue); - - MSG_IMAPFolderInfoMail *currentIMAPFolder = m_currentFolder->GetIMAPFolderInfoMail(); - MSG_IMAPFolderInfoMail *destFolder = (currentIMAPFolder) - ? m_workerPane->GetMaster()->FindImapMailFolder(currentIMAPFolder->GetHostName(), moveDestination, NULL, FALSE) - : 0; - m_currentFolder->StartAsyncCopyMessagesInto( destFolder, - m_workerPane, m_currentDB, matchingFlagKeys, matchingFlagKeys->GetSize(), - m_workerPane->GetContext(), queue, TRUE); - if (!alreadyRunningQueue) - queue->GetNextUrl(); - -} - - -void OfflineImapGoOnlineState::ProcessCopyOperation(DBOfflineImapOperation *currentOp) -{ - IDArray *matchingFlagKeys = new IDArray ; - int currentKeyIndex = m_KeyIndex; - XPStringObj copyDestination; - currentOp->GetIndexedCopyDestination(m_currentDB->GetDB(), 0,copyDestination); - XP_Bool copyMatches = TRUE; - - do { // loop for all messsages with the same destination - if (copyMatches) - { - matchingFlagKeys->Add(currentOp->GetMessageKey()); - currentOp->ClearFirstCopyOperation(m_currentDB->GetDB()); - } - delete currentOp; - currentOp = NULL; - - if (++currentKeyIndex < m_CurrentKeys.GetSize()) - { - XPStringObj nextDestination; - currentOp = m_currentDB->GetOfflineOpForKey(m_CurrentKeys[currentKeyIndex], FALSE); - if (currentOp && (currentOp->GetOperationFlags() & kMsgCopy) ) - { - currentOp->GetIndexedCopyDestination(m_currentDB->GetDB(), 0,copyDestination); - copyMatches = XP_STRCMP(copyDestination, nextDestination) == 0; - } - else - copyMatches = FALSE; - } - } while (currentOp); - - XP_Bool alreadyRunningQueue; - MSG_UrlQueue *queue = GetUrlQueue(&alreadyRunningQueue); - - MSG_IMAPFolderInfoMail *currentIMAPFolder = m_currentFolder->GetIMAPFolderInfoMail(); - MSG_IMAPFolderInfoMail *destFolder = (currentIMAPFolder) - ? m_workerPane->GetMaster()->FindImapMailFolder(currentIMAPFolder->GetHostName(), copyDestination, NULL, FALSE) - : 0; - - m_currentFolder->StartAsyncCopyMessagesInto(destFolder, m_workerPane, m_currentDB, matchingFlagKeys, matchingFlagKeys->GetSize(), - m_workerPane->GetContext(), queue, FALSE); - if (!alreadyRunningQueue) - queue->GetNextUrl(); -} - -void OfflineImapGoOnlineState::ProcessEmptyTrash(DBOfflineImapOperation *currentOp) -{ - XP_Bool alreadyRunningQueue; - MSG_UrlQueue *queue = GetUrlQueue(&alreadyRunningQueue); - - delete currentOp; - MSG_IMAPFolderInfoMail *currentIMAPFolder = m_currentFolder->GetIMAPFolderInfoMail(); - char *trashUrl = CreateImapDeleteAllMessagesUrl(currentIMAPFolder->GetHostName(), - currentIMAPFolder->GetOnlineName(), - currentIMAPFolder->GetOnlineHierarchySeparator()); - // we're not going to delete sub-folders, since that prompts the user, a no-no while synchronizing. - if (trashUrl) - { - queue->AddUrl(trashUrl, OfflineOpExitFunction); - if (!alreadyRunningQueue) - queue->GetNextUrl(); - m_currentDB->DeleteOfflineOp(currentOp->GetMessageKey()); - - m_currentDB = NULL; // empty trash deletes the database? - } -} - -// returns TRUE if we found a folder to create, FALSE if we're done creating folders. -XP_Bool OfflineImapGoOnlineState::CreateOfflineFolders() -{ - while (m_currentFolder) - { - int32 prefFlags = m_currentFolder->GetFolderPrefFlags(); - XP_Bool offlineCreate = prefFlags & MSG_FOLDER_PREF_CREATED_OFFLINE; - if (offlineCreate) - { - if (CreateOfflineFolder(m_currentFolder)) - return TRUE; - } - AdvanceToNextFolder(); - } - return FALSE; -} - -XP_Bool OfflineImapGoOnlineState::CreateOfflineFolder(MSG_FolderInfo *folder) -{ - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - char *url = CreateImapMailboxCreateUrl(imapFolder->GetHostName(), imapFolder->GetOnlineName(), imapFolder->GetOnlineHierarchySeparator()); - if (url) - { - XP_Bool alreadyRunningQueue; - MSG_UrlQueue *queue = GetUrlQueue(&alreadyRunningQueue); - if (queue) - { - // should we insert this at 0, or add? I think we want to run offline events - // before any new events...but this is just a lite select - queue->AddUrl(url, OfflineOpExitFunction); - if (!alreadyRunningQueue) - queue->GetNextUrl(); - return TRUE; // this is asynch, we have to return and be called again by the OfflineOpExitFunction - } - } - return FALSE; -} - -// Playing back offline operations is one giant state machine that runs through ProcessNextOperation. -// The first state is creating online any folders created offline (we do this first, so we can play back -// any operations in them in the next pass) - -void OfflineImapGoOnlineState::ProcessNextOperation() -{ - char *url; - // find a folder that needs to process operations - MSG_FolderInfo *deletedAllOfflineEventsInFolder = NULL; - - // if we haven't created offline folders, and we're updating all folders, - // first, find offline folders to create. - if (!m_createdOfflineFolders) - { - if (m_singleFolderToUpdate) - { - int32 prefFlags = m_singleFolderToUpdate->GetFolderPrefFlags(); - XP_Bool offlineCreate = prefFlags & MSG_FOLDER_PREF_CREATED_OFFLINE; - - m_createdOfflineFolders = TRUE; - if (offlineCreate && CreateOfflineFolder(m_singleFolderToUpdate)) - return; - } - else - { - if (CreateOfflineFolders()) - return; - - delete m_folderIterator; - m_folderIterator = new MSG_FolderIterator(m_workerPane->GetMaster()->GetImapMailFolderTree()); - m_currentFolder = (MSG_FolderInfoMail *) m_folderIterator->First(); - if (m_currentFolder && (m_currentFolder->GetFlags() & MSG_FOLDER_FLAG_IMAP_SERVER)) - AdvanceToNextFolder(); - } - m_createdOfflineFolders = TRUE; - } - while (m_currentFolder && !m_currentDB) - { - int32 prefFlags = m_currentFolder->GetFolderPrefFlags(); - // need to check if folder has offline events, or is configured for offline - if (prefFlags & (MSG_FOLDER_PREF_OFFLINEEVENTS | MSG_FOLDER_PREF_OFFLINE)) - { - if (m_currentFolder->GetFlags() & MSG_FOLDER_FLAG_IMAPBOX) - { - XP_Bool wasCreated=FALSE; - ImapMailDB::Open(m_currentFolder->GetPathname(), FALSE, &m_currentDB, m_currentFolder->GetMaster(), &wasCreated); - } - else - MailDB::Open (m_currentFolder->GetPathname(), FALSE, &m_currentDB, FALSE); - } - if (m_currentDB) - { - FE_Progress(m_workerPane->GetContext(), m_currentFolder->GetName()); - m_CurrentKeys.RemoveAll(); - m_KeyIndex = 0; - if ((m_currentDB->ListAllOfflineOpIds(m_CurrentKeys) != 0) || !m_CurrentKeys.GetSize()) - { - m_currentDB->Close(); - m_currentDB = NULL; - } - else - { - // trash any ghost msgs - XP_Bool deletedGhostMsgs = FALSE; - for (int fakeIndex=0; fakeIndex < m_CurrentKeys.GetSize(); fakeIndex++) - { - DBOfflineImapOperation *currentOp = m_currentDB->GetOfflineOpForKey(m_CurrentKeys[fakeIndex], FALSE); - if (currentOp && (currentOp->GetOperationFlags() & kMoveResult)) - { - m_currentDB->DeleteOfflineOp(currentOp->GetMessageKey()); - deletedGhostMsgs = TRUE; - - MailMessageHdr *mailHdr = m_currentDB->GetMailHdrForKey(currentOp->GetMessageKey()); - if (mailHdr) - { - m_currentDB->DeleteMessage(mailHdr->GetMessageKey(), NULL, FALSE); - delete mailHdr; - } - delete currentOp; - } - } - - if (deletedGhostMsgs) - m_currentFolder->SummaryChanged(); - - m_CurrentKeys.RemoveAll(); - if ( (m_currentDB->ListAllOfflineOpIds(m_CurrentKeys) != 0) || !m_CurrentKeys.GetSize() ) - { - m_currentDB->Close(); - m_currentDB = NULL; - if (deletedGhostMsgs) - deletedAllOfflineEventsInFolder = m_currentFolder; - } - else if (m_currentFolder->GetFlags() & MSG_FOLDER_FLAG_IMAPBOX) - { - MSG_IMAPFolderInfoMail *imapFolder = m_currentFolder->GetIMAPFolderInfoMail(); -// if (imapFolder->GetHasOfflineEvents()) -// XP_ASSERT(FALSE); - - if (!m_pseudoOffline) // if pseudo offline, falls through to playing ops back. - { - // there are operations to playback so check uid validity - SetCurrentUIDValidity(0); // force initial invalid state - url = CreateImapMailboxLITESelectUrl(imapFolder->GetHostName(), - imapFolder->GetOnlineName(), - imapFolder->GetOnlineHierarchySeparator()); - if (url) - { - XP_Bool alreadyRunningQueue; - MSG_UrlQueue *queue = GetUrlQueue(&alreadyRunningQueue); - if (queue) - { - // should we insert this at 0, or add? I think we want to run offline events - // before any new events...but this is just a lite select - queue->AddUrl(url, OfflineOpExitFunction); - if (!alreadyRunningQueue) - queue->GetNextUrl(); - return; // this is asynch, we have to return as be called again by the OfflineOpExitFunction - } - } - } - } - } - } - - if (!m_currentDB) - { - // only advance if we are doing all folders - if (!m_singleFolderToUpdate) - AdvanceToNextFolder(); - else - m_currentFolder = NULL; // force update of this folder now. - } - - } - - // do the current operation - if (m_currentDB) - { - XP_Bool currentFolderFinished = FALSE; - // user canceled the lite select! if GetCurrentUIDValidity() == 0 - if ((m_KeyIndex < m_CurrentKeys.GetSize()) && (m_pseudoOffline || (GetCurrentUIDValidity() != 0) || !(m_currentFolder->GetFlags() & MSG_FOLDER_FLAG_IMAPBOX)) ) - { - XP_Bool uidvalidityChanged = (!m_pseudoOffline && m_currentFolder->GetFlags() & MSG_FOLDER_FLAG_IMAPBOX) && (GetCurrentUIDValidity() != m_currentDB->m_dbFolderInfo->GetImapUidValidity()); - DBOfflineImapOperation *currentOp = NULL; - if (uidvalidityChanged) - DeleteAllOfflineOpsForCurrentDB(); - else - currentOp = m_currentDB->GetOfflineOpForKey(m_CurrentKeys[m_KeyIndex], FALSE); - - if (currentOp) - { - // loop until we find the next db record that matches the current playback operation - while (currentOp && !(currentOp->GetOperationFlags() & mCurrentPlaybackOpType)) - { - delete currentOp; - currentOp = NULL; - if (++m_KeyIndex < m_CurrentKeys.GetSize()) - currentOp = m_currentDB->GetOfflineOpForKey(m_CurrentKeys[m_KeyIndex], FALSE); - } - - // if we did not find a db record that matches the current playback operation, - // then move to the next playback operation and recurse. - if (!currentOp) - { - // we are done with the current type - if (mCurrentPlaybackOpType == kFlagsChanged) - { - mCurrentPlaybackOpType = kMsgCopy; - // recurse to deal with next type of operation - m_KeyIndex = 0; - ProcessNextOperation(); - } - else if (mCurrentPlaybackOpType == kMsgCopy) - { - mCurrentPlaybackOpType = kMsgMoved; - // recurse to deal with next type of operation - m_KeyIndex = 0; - ProcessNextOperation(); - } - else if (mCurrentPlaybackOpType == kMsgMoved) - { - mCurrentPlaybackOpType = kAppendDraft; - // recurse to deal with next type of operation - m_KeyIndex = 0; - ProcessNextOperation(); - } - else if (mCurrentPlaybackOpType == kAppendDraft) - { - mCurrentPlaybackOpType = kAppendTemplate; - // recurse to deal with next type of operation - m_KeyIndex = 0; - ProcessNextOperation(); - } - else if (mCurrentPlaybackOpType == kAppendTemplate) - { - mCurrentPlaybackOpType = kDeleteAllMsgs; - m_KeyIndex = 0; - ProcessNextOperation(); - } - else - { - DeleteAllOfflineOpsForCurrentDB(); - currentFolderFinished = TRUE; - } - - } - else - { - if (mCurrentPlaybackOpType == kFlagsChanged) - ProcessFlagOperation(currentOp); - else if (mCurrentPlaybackOpType == kMsgCopy) - ProcessCopyOperation(currentOp); - else if (mCurrentPlaybackOpType == kMsgMoved) - ProcessMoveOperation(currentOp); - else if (mCurrentPlaybackOpType == kAppendDraft) - ProcessAppendMsgOperation(currentOp, kAppendDraft); - else if (mCurrentPlaybackOpType == kAppendTemplate) - ProcessAppendMsgOperation(currentOp, kAppendTemplate); - else if (mCurrentPlaybackOpType == kDeleteAllMsgs) - ProcessEmptyTrash(currentOp); - else - XP_ASSERT(FALSE); - // currentOp was RemoveReferencered by one of the Process functions - // so do not reference it again! - currentOp = NULL; - } - } - else - currentFolderFinished = TRUE; - } - else - currentFolderFinished = TRUE; - - if (currentFolderFinished) - { - m_currentDB->Close(); - m_currentDB = NULL; - if (!m_singleFolderToUpdate) - { - AdvanceToNextFolder(); - ProcessNextOperation(); - return; - } - else - m_currentFolder = NULL; - } - } - - if (!m_currentFolder && !m_mailboxupdatesStarted) - { - m_mailboxupdatesStarted = TRUE; - FE_Progress(m_workerPane->GetContext(), ""); - - // if we are updating more than one folder then we need the iterator - MSG_FolderIterator *updateFolderIterator = m_singleFolderToUpdate ? (MSG_FolderIterator *)NULL : new MSG_FolderIterator(m_workerPane->GetMaster()->GetImapMailFolderTree()); - MSG_UrlQueue *queue = NULL; - - if ((updateFolderIterator || m_singleFolderToUpdate)) - { - if (updateFolderIterator) - { - // this means that we are updating all of the folders. Update the INBOX first so the updates on the remaining - // folders pickup the results of any filter moves. - MSG_FolderInfo *inboxFolder; - if (!m_pseudoOffline && m_workerPane->GetMaster()->GetImapMailFolderTree()->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, &inboxFolder, 1) ) - ((MSG_IMAPFolderInfoMail *) inboxFolder)->StartUpdateOfNewlySelectedFolder(m_workerPane, FALSE, queue, NULL, FALSE, FALSE); - } - - - // we are done playing commands back, now queue up the sync with each imap folder - MSG_FolderInfo* folder = m_singleFolderToUpdate ? m_singleFolderToUpdate : updateFolderIterator->First(); - while (folder) - { - XP_Bool loadingFolder = m_workerPane->GetLoadingImapFolder() == folder; - if ((folder->GetType() == FOLDER_IMAPMAIL) && (deletedAllOfflineEventsInFolder == folder || (folder->GetFolderPrefFlags() & MSG_FOLDER_PREF_OFFLINE) - || loadingFolder) - && !(folder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOSELECT) ) - { - MSG_IMAPFolderInfoMail *imapMail = (MSG_IMAPFolderInfoMail *) folder; - XP_Bool lastChance = ((deletedAllOfflineEventsInFolder == folder) && m_singleFolderToUpdate) || loadingFolder; - // if deletedAllOfflineEventsInFolder == folder and we're only updating one folder, then we need to update newly selected folder - // I think this also means that we're really opening the folder...so we tell StartUpdate that we're loading a folder. - if (!updateFolderIterator || !(imapMail->GetFlags() & MSG_FOLDER_FLAG_INBOX)) // avoid queueing the inbox twice - imapMail->StartUpdateOfNewlySelectedFolder(m_workerPane, lastChance, queue, NULL, FALSE, FALSE); - } - folder= m_singleFolderToUpdate ? (MSG_FolderInfo *)NULL : updateFolderIterator->Next(); - } - - MSG_UrlQueue::AddUrlToPane(kImapOnOffSynchCompleteURL, OffOnlineSynchExitFunction, m_workerPane); - } - } -} - - -void OfflineImapGoOnlineState::DeleteAllOfflineOpsForCurrentDB() -{ - m_KeyIndex = 0; - DBOfflineImapOperation *currentOp = m_currentDB->GetOfflineOpForKey(m_CurrentKeys[m_KeyIndex], FALSE); - while (currentOp) - { - XP_ASSERT(currentOp->GetOperationFlags() == 0); - // delete any ops that have already played back - m_currentDB->DeleteOfflineOp(currentOp->GetMessageKey()); - delete currentOp; - currentOp = NULL; - - if (++m_KeyIndex < m_CurrentKeys.GetSize()) - currentOp = m_currentDB->GetOfflineOpForKey(m_CurrentKeys[m_KeyIndex], FALSE); - } - MSG_FolderInfo *folderInfo = m_currentDB->GetFolderInfo(); - // turn off MSG_FOLDER_PREF_OFFLINEEVENTS - if (folderInfo) - { - folderInfo->SetFolderPrefFlags(folderInfo->GetFolderPrefFlags() & ~MSG_FOLDER_PREF_OFFLINEEVENTS); - if (folderInfo->GetType() == FOLDER_IMAPMAIL) - { - MSG_IMAPFolderInfoMail *imapFolder = (MSG_IMAPFolderInfoMail *) folderInfo; - imapFolder->SetHasOfflineEvents(FALSE); - // where should we clear this flag? At the end of the process events url? - } - } -} - - -OfflineImapState::OfflineImapState(MSG_IMAPFolderInfoMail *folder) -{ - XP_ASSERT(folder); - - m_maildb = NULL; - m_msgHdr = NULL; - SetFolderInfo(folder); -} - -void OfflineImapState::SetFolderInfo(MSG_IMAPFolderInfoMail *folder) -{ - - XP_Bool wasCreated=FALSE; - if (m_folderInfo != folder) - { - if (m_maildb) - m_maildb->Close(); - ImapMailDB::Open(folder->GetPathname(), TRUE, &m_maildb, folder->GetMaster(), &wasCreated); - } - m_folderInfo = folder; -} - -OfflineImapState::~OfflineImapState() -{ - delete m_msgHdr; - if (m_maildb) - m_maildb->Close(); -} - -DownloadOfflineImapState::DownloadOfflineImapState(MSG_IMAPFolderInfoMail *folder, NET_StreamClass *displayStream) : - OfflineImapState(folder), m_displayStream(displayStream) -{ - m_offlineWriteFailure = FALSE; - m_dbWriteDocument = NULL; - m_deleteOnComplete = TRUE; -} - -DownloadOfflineImapState::~DownloadOfflineImapState() -{ - MSG_OfflineMsgDocumentHandle_Destroy(m_dbWriteDocument); -} - - -//static -void DownloadOfflineImapState::CreateOfflineImapStream(NET_StreamClass *theStream, MSG_IMAPFolderInfoMail *folder, NET_StreamClass *displayStream, DownloadOfflineImapState *closureData) -{ - XP_Bool deleteOnComplete = (closureData == NULL); - if (!closureData) - { - closureData = new DownloadOfflineImapState(folder, displayStream); - } - else - { - closureData->m_displayStream = displayStream; // memory leak? - closureData->SetFolderInfo(folder); - } - theStream->data_object = closureData; - theStream->is_write_ready = DownloadOfflineImapState::OfflineImapStreamWriteReady; - theStream->put_block = DownloadOfflineImapState::OfflineImapStreamWrite; - theStream->complete = DownloadOfflineImapState::OfflineImapStreamComplete; - theStream->abort = DownloadOfflineImapState::OfflineImapStreamAbort; -} - -//static -void DownloadOfflineImapState::OfflineImapStreamComplete(NET_StreamClass *stream) -{ - DownloadOfflineImapState *state = (DownloadOfflineImapState *) stream->data_object; - if (state) - { - state->CompleteStream(); - if (state->m_dbWriteDocument) - MSG_OfflineMsgDocumentHandle_Complete(state->m_dbWriteDocument); - if (state->m_deleteOnComplete) - delete state; - } -} - -//static -void DownloadOfflineImapState::OfflineImapStreamAbort (NET_StreamClass *stream, int status) -{ - DownloadOfflineImapState *state = (DownloadOfflineImapState *) stream->data_object; - if (state) - { - state->AbortStream(status); - delete state; - } -} - -//static -int DownloadOfflineImapState::OfflineImapStreamWrite (NET_StreamClass *stream, const char *block, int32 messageKey) -{ - DownloadOfflineImapState *state = (DownloadOfflineImapState *) stream->data_object; - if (state) - return state->WriteStream(block, messageKey); - else - return XP_STRLEN(block); -} - -int DownloadOfflineImapState::WriteStream(const char *block, uint32 messageKey) -{ - int returnLength = 0; - int blockLength = XP_STRLEN(block); - if (m_maildb) - { - if (!m_msgHdr || (m_msgHdr->GetMessageKey() != messageKey)) - { - if (m_msgHdr) - { - // this should not happen but be paranoid - m_msgHdr->PurgeOfflineMessage(m_maildb->GetDB()); - delete m_msgHdr; - } - m_msgHdr = m_maildb->GetMailHdrForKey(messageKey); - if (!m_dbWriteDocument) - m_dbWriteDocument = MSG_OfflineMsgDocumentHandle_Create(m_maildb->GetDB(), m_msgHdr->GetHandle()); - else - MSG_OfflineMsgDocumentHandle_SetMsgHeaderHandle(m_dbWriteDocument, m_msgHdr->GetHandle(), m_maildb->GetDB()); - } - - - if (m_msgHdr && m_dbWriteDocument && !m_offlineWriteFailure) - { -// int32 bytesAdded = m_msgHdr->AddToOfflineMessage(block, blockLength, m_maildb->GetDB()); - int32 bytesAdded = MSG_OfflineMsgDocumentHandle_AddToOfflineMessage(m_dbWriteDocument, block, blockLength); - m_offlineWriteFailure = bytesAdded != blockLength; - } - } - - if (m_maildb) - returnLength += blockLength; - - - if (m_displayStream) - (*m_displayStream->put_block) (m_displayStream, - block, - XP_STRLEN(block)); - - return returnLength; -} - -void DownloadOfflineImapState::CompleteStream() -{ - if (m_maildb && m_msgHdr) - { - m_maildb->MarkOffline(m_msgHdr->GetMessageKey(), TRUE, NULL); - delete m_msgHdr; - m_msgHdr = NULL; - } - - if ( m_displayStream) - (*m_displayStream->complete) (m_displayStream); - -} - -void DownloadOfflineImapState::AbortStream(int /*status*/) -{ - if (m_maildb && m_msgHdr) - { - m_msgHdr->PurgeOfflineMessage(m_maildb->GetDB()); - delete m_msgHdr; - m_msgHdr = NULL; - } - if ( m_displayStream) - (*m_displayStream->abort) (m_displayStream, -1); -} - - -DisplayOfflineImapState::DisplayOfflineImapState(MSG_IMAPFolderInfoMail *folder, MessageKey key) : OfflineImapState(folder) -{ - m_bytesDisplayedSoFar = 0; - m_wasUnread = FALSE; - - if (m_maildb) - { - m_msgHdr = m_maildb->GetMailHdrForKey(key); - if (m_msgHdr) - m_wasUnread = !((m_msgHdr->GetFlags() & kIsRead) != 0); - } -} - -DisplayOfflineImapState::~DisplayOfflineImapState() -{ -} - -uint32 DisplayOfflineImapState::GetMsgSize() -{ - uint32 size = 0; - if (m_msgHdr) - size = m_msgHdr->GetOfflineMessageLength(m_maildb->GetDB()); - return size; -} - -int DisplayOfflineImapState::ProcessDisplay(char *socketBuffer, uint32 read_size) -{ - uint32 bytesDisplayed = 0; - if (m_msgHdr) - { - int32 offlineLength = m_msgHdr->GetOfflineMessageLength(m_maildb->GetDB()); - - if (0 == offlineLength) - { - if (0 == m_bytesDisplayedSoFar) - { - // annoy the user about going online - const char *htmlAnnoyance = XP_GetString(MK_MSG_HTML_IMAP_NO_CACHED_BODY); - bytesDisplayed = XP_STRLEN( htmlAnnoyance ) < read_size ? XP_STRLEN( htmlAnnoyance ) + 1 : read_size; - XP_MEMCPY(socketBuffer, htmlAnnoyance, bytesDisplayed); - m_bytesDisplayedSoFar = bytesDisplayed; - } - // else bytesDisplayed == 0, ProcessDisplay is not called again - } - else - { - uint32 bytesLeft = offlineLength - m_bytesDisplayedSoFar; - uint32 bytesToDisplay = (read_size <= bytesLeft) ? read_size : bytesLeft; - - if (bytesToDisplay) - { - bytesDisplayed += m_msgHdr->ReadFromOfflineMessage(socketBuffer, bytesToDisplay, m_bytesDisplayedSoFar, m_maildb->GetDB()); - m_bytesDisplayedSoFar += bytesDisplayed; - } - else if (NET_IsOffline() && m_wasUnread) - { - // we are done displaying this message. Save an operation to mark it read - IDArray readIds; - readIds.Add(m_msgHdr->GetMessageKey()); - m_folderInfo->StoreImapFlags(NULL, kImapMsgSeenFlag, TRUE, readIds); - } - } - } - - return bytesDisplayed; -} - -AppendMsgOfflineImapState::AppendMsgOfflineImapState(MSG_IMAPFolderInfoMail - *folder, MessageKey key, - const char *msg_file_name) - : OfflineImapState(folder) -{ - m_msg_file_name = XP_STRDUP(msg_file_name); - if (m_maildb) - { - m_msgHdr = m_maildb->GetMailHdrForKey(key); - } -} - -AppendMsgOfflineImapState::~AppendMsgOfflineImapState() -{ - XP_FREEIF(m_msg_file_name); -} - -void -AppendMsgOfflineImapState::RemoveHdrFromDB() -{ - if (m_maildb && m_msgHdr) - { - MessageKey doomedKey = m_msgHdr->GetMessageKey(); - delete m_msgHdr; - m_msgHdr = 0; - m_maildb->DeleteMessage(doomedKey); - } -} - -void -AppendMsgOfflineImapState::RemoveMsgFile() -{ - if (m_msg_file_name) - { - XP_FileRemove(m_msg_file_name, xpFileToPost); - XP_FREEIF(m_msg_file_name); - } -} - -/* - member functions for offlinedb records -*/ - -DBOfflineImapOperation::DBOfflineImapOperation() -{ - m_offlineIMAPOperationHandle = NULL; -} - -DBOfflineImapOperation::~DBOfflineImapOperation() -{ - if (m_offlineIMAPOperationHandle) - MSG_OfflineIMAPOperationHandle_RemoveReference(m_offlineIMAPOperationHandle); -} - -void DBOfflineImapOperation::SetMessageKey(MessageKey messageKey) -{ - MSG_OfflineIMAPOperationHandle_SetMessageKey(GetHandle(), m_dbHandle, messageKey); -} - - // the flags we start with -void DBOfflineImapOperation::SetInitialImapFlags(imapMessageFlagsType flags) -{ - MSG_OfflineIMAPOperationHandle_SetInitialImapFlags(GetHandle(), flags, m_dbHandle); -} - -void DBOfflineImapOperation::SetImapFlagOperation(imapMessageFlagsType flags) -{ - MSG_OfflineIMAPOperationHandle_SetImapFlagOperation(GetHandle(), flags, m_dbHandle); -} - -void DBOfflineImapOperation::ClearImapFlagOperation() -{ - MSG_OfflineIMAPOperationHandle_ClearImapFlagOperation(GetHandle(), m_dbHandle); -} - -uint32 DBOfflineImapOperation::GetOperationFlags() -{ - return MSG_OfflineIMAPOperationHandle_GetOperationFlags(GetHandle(), m_dbHandle); -} - -imapMessageFlagsType DBOfflineImapOperation::GetNewMessageFlags() -{ - return MSG_OfflineIMAPOperationHandle_GetNewMessageFlags(GetHandle(), m_dbHandle); -} - -void -DBOfflineImapOperation::SetAppendMsgOperation(const char *destinationBox, - int32 opType) -{ - MSG_OfflineIMAPOperationHandle_SetAppendMsgOperation(GetHandle(), m_dbHandle, destinationBox, opType); -} - -void DBOfflineImapOperation::ClearAppendMsgOperation(MSG_DBHandle dbHandle, int32 opType) -{ - MSG_OfflineIMAPOperationHandle_ClearAppendMsgOperation(GetHandle(), dbHandle, opType); -} - -void DBOfflineImapOperation::SetMessageMoveOperation(const char *destinationBox) -{ - MSG_OfflineIMAPOperationHandle_SetMessageMoveOperation(GetHandle(), m_dbHandle, destinationBox); -} - -void DBOfflineImapOperation::ClearMoveOperation(MSG_DBHandle dbHandle) -{ - MSG_OfflineIMAPOperationHandle_ClearMoveOperation(GetHandle(), dbHandle); -} - -void DBOfflineImapOperation::AddMessageCopyOperation(const char *destinationBox) -{ - MSG_OfflineIMAPOperationHandle_AddMessageCopyOperation(GetHandle(), m_dbHandle, destinationBox); -} - -void DBOfflineImapOperation::ClearFirstCopyOperation(MSG_DBHandle dbHandle) -{ - MSG_OfflineIMAPOperationHandle_ClearFirstCopyOperation(GetHandle(), m_dbHandle); -} - -void DBOfflineImapOperation::SetDeleteAllMsgs() -{ - MSG_OfflineIMAPOperationHandle_SetDeleteAllMsgs(GetHandle(), m_dbHandle); -} - -void DBOfflineImapOperation::ClearDeleteAllMsgs() -{ - MSG_OfflineIMAPOperationHandle_ClearDeleteAllMsgs(GetHandle(), m_dbHandle); -} - -void DBOfflineImapOperation::SetSourceMailbox(const char *sourceMailbox, MessageId sourceKey) -{ - MSG_OfflineIMAPOperationHandle_SetSourceMailbox(GetHandle(), m_dbHandle, sourceMailbox, sourceKey); -} - - -// This is the key used in the database, which is almost always the same -// as the m_messageKey, except for the first message in a mailbox, -// which has a m_messageKey of 0, but a non-zero ID in the database. -MessageKey DBOfflineImapOperation::GetMessageKey() -{ - return MSG_OfflineIMAPOperationHandle_GetMessageKey(GetHandle(), m_dbHandle); -} - - -XP_Bool DBOfflineImapOperation::GetMoveDestination(MSG_DBHandle dbHandle, XPStringObj &boxName) -{ - char *boxNameStr; - XP_Bool ret = MSG_OfflineIMAPOperationHandle_GetMoveDestination(GetHandle(), dbHandle, &boxNameStr); - boxName.SetStrPtr(boxNameStr); - return ret; -} - - -uint32 DBOfflineImapOperation::GetNumberOfCopyOps() -{ - return MSG_OfflineIMAPOperationHandle_GetNumberOfCopyOps(GetHandle(), m_dbHandle); -} - -XP_Bool DBOfflineImapOperation::GetIndexedCopyDestination(MSG_DBHandle dbHandle, uint32 index, XPStringObj &boxName) -{ - char *boxNameStr; - XP_Bool ret = MSG_OfflineIMAPOperationHandle_GetIndexedCopyDestination(GetHandle(), dbHandle, index, &boxNameStr); - if (ret) - boxName.SetStrPtr(boxNameStr); - - return ret; -} - -XP_Bool DBOfflineImapOperation::GetSourceInfo(XPStringObj &sourceBoxName, MessageId &sourceKey) -{ - sourceKey = MSG_OfflineIMAPOperationHandle_GetSourceMessageKey(GetHandle(), m_dbHandle); - return GetMoveDestination(m_dbHandle, sourceBoxName); -} - - diff --git a/mozilla/lib/libmsg/imapoff.h b/mozilla/lib/libmsg/imapoff.h deleted file mode 100644 index 8c237ef420d..00000000000 --- a/mozilla/lib/libmsg/imapoff.h +++ /dev/null @@ -1,226 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef imapoff_H -#define imapoff_H - -class MailDB; -class MailMessageHdr; -class MSG_IMAPFolderInfoMail; -class DBOfflineImapOperation; -class MSG_UrlQueue; -class MsgDocument; -class DownloadOfflineImapState; - -#include "net.h" -#include "msgcom.h" -#include "msgimap.h" -#include "msgzap.h" -#include "msgdbtyp.h" - -class XPStringObj; - -class OfflineImapGoOnlineState : public MSG_ZapIt { -public: // set to one folder to playback one folder only - OfflineImapGoOnlineState(MSG_Pane *workerPane, MSG_IMAPFolderInfoMail *singleFolderOnly = NULL); - virtual ~OfflineImapGoOnlineState(); - - void ProcessNextOperation(); - - uint32 GetCurrentUIDValidity() { return mCurrentUIDValidity; } - void SetCurrentUIDValidity(uint32 uidvalidity) { mCurrentUIDValidity = uidvalidity; } - - void SetPseudoOffline(XP_Bool pseudoOffline) {m_pseudoOffline = pseudoOffline;} - XP_Bool ProcessingStaleFolderUpdate() { return m_singleFolderToUpdate != NULL; } - - MSG_UrlQueue *GetUrlQueue(XP_Bool *alreadyRunning); - DownloadOfflineImapState *GetDownloadOfflineImapState() {return m_downloadOfflineImapState;} - void SetDownloadOfflineImapState(DownloadOfflineImapState *state) {m_downloadOfflineImapState = state;} - XP_Bool CreateOfflineFolder(MSG_FolderInfo *folder); -private: - XP_Bool CreateOfflineFolders(); - void AdvanceToNextFolder(); - void DeleteAllOfflineOpsForCurrentDB(); - - void ProcessFlagOperation(DBOfflineImapOperation *currentOp); - void ProcessMoveOperation(DBOfflineImapOperation *currentOp); - void ProcessCopyOperation(DBOfflineImapOperation *currentOp); - void ProcessEmptyTrash(DBOfflineImapOperation *currentOp); - void ProcessAppendMsgOperation(DBOfflineImapOperation *currentOp, - int32 opType); - static void PostAppendMsgExitFunction(URL_Struct *URL_s, int status, - MWContext *window_id); - - MSG_Pane *m_workerPane; - MSG_FolderInfoMail *m_currentFolder; - MSG_IMAPFolderInfoMail *m_singleFolderToUpdate; - MSG_FolderIterator *m_folderIterator; - IDArray m_CurrentKeys; - int m_KeyIndex; - MailDB *m_currentDB; - uint32 mCurrentUIDValidity; - int32 mCurrentPlaybackOpType; // kFlagsChanged -> kMsgCopy -> kMsgMoved - XP_Bool m_mailboxupdatesStarted; - XP_Bool m_pseudoOffline; // for queueing online events in offline db - XP_Bool m_createdOfflineFolders; - MSG_UrlQueue *m_urlQueue; - DownloadOfflineImapState *m_downloadOfflineImapState; - -}; - - -class OfflineImapState : public MSG_ZapIt -{ -public: - OfflineImapState(MSG_IMAPFolderInfoMail *folder); - virtual ~OfflineImapState(); -protected: - void SetFolderInfo(MSG_IMAPFolderInfoMail *folder); - MailDB *m_maildb; - MailMessageHdr *m_msgHdr; - MSG_IMAPFolderInfoMail *m_folderInfo; -}; - - -// used for streaming msg bodies into the db -class DownloadOfflineImapState : public OfflineImapState -{ -public: - DownloadOfflineImapState(MSG_IMAPFolderInfoMail *folder, NET_StreamClass *displayStream); // only called by CreateOfflineImapStream - virtual ~DownloadOfflineImapState(); - - static void CreateOfflineImapStream(NET_StreamClass *theStream, MSG_IMAPFolderInfoMail *folder, NET_StreamClass *displayStream, DownloadOfflineImapState *closureData = NULL); - - static unsigned int OfflineImapStreamWriteReady (NET_StreamClass *stream) { return MAX_WRITE_READY; } - static void OfflineImapStreamComplete(NET_StreamClass *stream); - static void OfflineImapStreamAbort (NET_StreamClass *stream, int status); - static int OfflineImapStreamWrite (NET_StreamClass *stream, const char *block, int32 messageKey); - - int WriteStream(const char *block, uint32 messageKey); - void CompleteStream(); - void AbortStream(int status); - MSG_OfflineMsgDocumentHandle m_dbWriteDocument; - void SetDeleteOnComplete(XP_Bool deleteOnComplete) {m_deleteOnComplete = deleteOnComplete;} -private: - NET_StreamClass *m_displayStream; - XP_Bool m_offlineWriteFailure; - XP_Bool m_deleteOnComplete; -}; - - -// used for streaming bodies from the db into the display -class DisplayOfflineImapState : public OfflineImapState -{ -public: - DisplayOfflineImapState(MSG_IMAPFolderInfoMail *folder, MessageKey key); - virtual ~DisplayOfflineImapState(); - - uint32 GetMsgSize(); - - int ProcessDisplay(char *socketBuffer, uint32 read_size); -protected: - uint32 m_bytesDisplayedSoFar; - XP_Bool m_wasUnread; -}; - - -// used for append msg operation -class AppendMsgOfflineImapState : public OfflineImapState -{ -public: - AppendMsgOfflineImapState(MSG_IMAPFolderInfoMail *folder, MessageKey key, - const char *msg_file_name); - virtual ~AppendMsgOfflineImapState(); - void RemoveHdrFromDB(); - void RemoveMsgFile(); -protected: - char *m_msg_file_name; -}; - - -// new access type of stored imap operations - -const int32 kFlagsChanged = 0x1; -const int32 kMsgMoved = 0x2; -const int32 kMsgCopy = 0x4; -const int32 kMoveResult = 0x8; -const int32 kAppendDraft = 0x10; -const int32 kAddedHeader = 0x20; -const int32 kDeletedMsg = 0x40; -const int32 kMsgMarkedDeleted = 0x80; -const int32 kAppendTemplate = 0x100; -const int32 kDeleteAllMsgs = 0x200; - -class DBOfflineImapOperation -{ -public: - /** Instance Methods **/ - DBOfflineImapOperation(); - virtual ~DBOfflineImapOperation(); - - void SetMessageKey(MessageId key); - void SetInitialImapFlags(imapMessageFlagsType flags); // the flags we start with - - void SetImapFlagOperation(imapMessageFlagsType flags); - void ClearImapFlagOperation(); - - // you can only move (copy,delete) a msg once - void SetMessageMoveOperation(const char *destinationBox); - void ClearMoveOperation(MSG_DBHandle dbHandle); - - // you can copy a message more than once - void AddMessageCopyOperation(const char *destinationBox); - void ClearCopyOperations(); - - void SetSourceMailbox(const char *sourceMailBox, MessageKey sourceKey); - - void SetDeleteAllMsgs(); - void ClearDeleteAllMsgs(); - - MessageKey GetMessageKey(); - uint32 GetOperationFlags() ; - imapMessageFlagsType GetNewMessageFlags() ; - - XP_Bool GetMoveDestination(MSG_DBHandle dbHandle, XPStringObj &boxName); - - uint32 GetNumberOfCopyOps(); - XP_Bool GetIndexedCopyDestination(MSG_DBHandle dbHandle, uint32 index, XPStringObj &boxName); - void ClearFirstCopyOperation(MSG_DBHandle dbHandle); - - XP_Bool GetSourceInfo(XPStringObj &sourceBoxName, MessageKey &sourceKey); - - void SetAppendMsgOperation(const char *destinationBox, - int32 opType); - void ClearAppendMsgOperation(MSG_DBHandle dbHandle, int32 opType); - MSG_OfflineIMAPOperationHandle GetHandle() {return m_offlineIMAPOperationHandle;} - void SetHandle(MSG_OfflineIMAPOperationHandle handle) {m_offlineIMAPOperationHandle = handle;} - void SetDBHandle(MSG_DBHandle dbHandle) {m_dbHandle = dbHandle;} - -protected: - MSG_OfflineIMAPOperationHandle m_offlineIMAPOperationHandle; - MSG_DBHandle m_dbHandle; // which db is this in? - -}; - - - - -#endif diff --git a/mozilla/lib/libmsg/jsmsg.cpp b/mozilla/lib/libmsg/jsmsg.cpp deleted file mode 100644 index dc8a6a776b1..00000000000 --- a/mozilla/lib/libmsg/jsmsg.cpp +++ /dev/null @@ -1,1294 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* jsmsg.c -- javascript reflection of mail messages for filters. - */ - -#include "msg.h" -#include "msgmast.h" -#include "msgprefs.h" -#include "prsembst.h" -#include "pmsgsrch.h" -#include "pmsgfilt.h" -#include "maildb.h" -#include "newsdb.h" -#include "mailhdr.h" -#include "newshdr.h" - -#include "prefapi.h" - -#include "libmime.h" // for the MimeHeaders stuff. - -#include "jsapi.h" -#include "xp_core.h" -#include "xp_mcom.h" -#include "msgstrob.h" - -#include "ds.h" /* XXX required by htmldlgs.h */ -#include "htmldlgs.h" - -#ifdef DEBUG -extern "C" void js_traceon(JSContext*); -#endif - -#if defined(XP_MAC) && defined (__MWERKS__) -#pragma require_prototypes off -#endif - -static JSObject *filter_obj = NULL; -static JSContext *filter_context = NULL; - -static JSBool error_reporter_installed = JS_FALSE; -static JSErrorReporter previous_error_reporter; -static int error_count = 0; - -/* tells us when we should recompile the file. */ -static JSBool need_compile = JS_TRUE; - -/* Unfortunately, news db's don't waste space store the CC fields or msg priority */ - -/* This is the private instance data associated with a mail message */ -struct JSMailMsgData { - JSContext *js_context; - JSObject *js_object; - MSG_Filter *filter; - - MailMessageHdr *msgHdr; - MailDB *mailDB; - MimeHeaders *mime_headers; - ParseNewMailState *state; - XP_Bool msgMoved; - XP_Bool actionPerformed; -}; - -/* This is the private instance data associated with a news message */ -struct JSNewsMsgData { - JSContext *js_context; - JSObject *js_object; - MSG_Filter *filter; - - DBMessageHdr *msgHdr; - NewsGroupDB *newsDB; - XP_Bool actionPerformed; -}; - -/* The properties of a message that we reflect */ -enum msg_slot { - MSG_SUBJECT = -1, - MSG_PRI = -2, - MSG_SENDER = -3, - MSG_RECIPIENT = -4, - MSG_CC = -5, - MSG_READ = -6, - MSG_FOLDER = -7, /* mail only */ - MSG_GROUP = -8 /* news only */ -}; - -static JSPropertySpec mail_msg_props[] = { - { "subject", MSG_SUBJECT, JSPROP_ENUMERATE|JSPROP_READONLY }, - { "priority", MSG_PRI, JSPROP_ENUMERATE }, - { "sender", MSG_SENDER, JSPROP_ENUMERATE|JSPROP_READONLY }, - { "recipient", MSG_RECIPIENT, JSPROP_ENUMERATE|JSPROP_READONLY }, - { "cc", MSG_CC, JSPROP_ENUMERATE|JSPROP_READONLY }, - { "read", MSG_READ, JSPROP_ENUMERATE }, - { "folder", MSG_FOLDER, JSPROP_ENUMERATE }, - { 0 } -}; - -static JSPropertySpec news_msg_props[] = { - { "subject", MSG_SUBJECT, JSPROP_ENUMERATE|JSPROP_READONLY }, -#if news_dbs_waste_space_for_convience_of_js_filters - { "priority", MSG_PRI, JSPROP_ENUMERATE }, -#endif - { "sender", MSG_SENDER, JSPROP_ENUMERATE|JSPROP_READONLY }, -#if news_dbs_waste_space_for_convience_of_js_filters - { "recipient", MSG_RECIPIENT, JSPROP_ENUMERATE|JSPROP_READONLY }, - { "cc", MSG_CC, JSPROP_ENUMERATE|JSPROP_READONLY }, -#endif - { "read", MSG_READ, JSPROP_ENUMERATE }, - { "group", MSG_GROUP, JSPROP_ENUMERATE|JSPROP_READONLY }, - { 0 } -}; - -static char* -msg_convertToMailboxUrl(const char *full_path_to_folder) -{ - char *folder_path; - - PREF_CopyCharPref("mail.directory", &folder_path); - - if (folder_path && !strncmp(full_path_to_folder, folder_path, strlen(folder_path))) - { - char *mailbox_path; - - full_path_to_folder += strlen(folder_path); - - XP_FREE(folder_path); - - if (full_path_to_folder[0] == '/') - full_path_to_folder++; - - mailbox_path = PR_smprintf("mailbox:%s", full_path_to_folder); - - return mailbox_path; - } - else - { - XP_FREEIF(folder_path); - - return XP_STRDUP(full_path_to_folder); - } -} - -static char * -msg_convertFromMailboxUrl(const char *mailbox_url) -{ - char *folder_path; - - PREF_CopyCharPref("mail.directory", &folder_path); - - if (folder_path && !strncmp(mailbox_url, "mailbox:", 8 /* strlen("mailbox:")*/)) - { - mailbox_url += 8; /* strlen(mailbox:) */ - - if (mailbox_url[0] == '/') - { - return XP_STRDUP(mailbox_url); - } - else - { - char *result; - - result = PR_smprintf("%s%s%s", - folder_path, - folder_path[strlen(folder_path) - 1] == '/' ? "" : "/", - mailbox_url); - - return result; - } - } - else - { - XP_FREEIF(folder_path); - - return XP_STRDUP(mailbox_url); - } -} - -/* this function is listed as a friend of ParseNewMailState. The reason - for this is that we have to call a protected method of that class, - MoveIncorporatedMessage. This is much better in my opinion than the alternative, - which is for all this code to live in ParseNewMailState. */ -void JSMailFilter_MoveMessage(ParseNewMailState *state, - MailMessageHdr *msgHdr, - MailDB *mailDB, - const char *folder, - MSG_Filter *filter, - XP_Bool *pMoved) -{ - XP_Bool msgMoved = FALSE; - - if (XP_FILENAMECMP(mailDB->GetFolderName(), (char *) folder)) - { - XP_Trace ("+Moving message from %s to %s\n", mailDB->GetFolderName(), folder); - - MsgERR err = state->MoveIncorporatedMessage(msgHdr, - mailDB, - msg_convertFromMailboxUrl(folder), - filter); - if (err == eSUCCESS) - msgMoved = TRUE; - } - - if (pMoved) - *pMoved = msgMoved; -} - -/* these should probably be exposed in libmime.h, as they are very useful, at least - for what I use them for. */ -extern "C" int MimeHeaders_parse_line (const char *buffer, int32 size, MimeHeaders *hdrs); -extern "C" MimeHeaders *MimeHeaders_new (void); -extern "C" void MimeHeaders_free(MimeHeaders*); - -static JSString * -msg_getHeader(JSMailMsgData *data, char *header_name) -{ - char *header_value; - - if (!data->mime_headers) - return NULL; - - header_value = MimeHeaders_get(data->mime_headers, header_name, TRUE, FALSE); - - if (!header_value) header_value = ""; - - return JS_NewStringCopyZ(data->js_context, (char*)header_value); -} - -static JSString * -mailMsg_initializeHeaders(JSMailMsgData *data) -{ - ParseNewMailState *state; - state = data->state; - - if (state->GetMsgState()->m_headers_size) - { - int32 size = state->GetMsgState()->m_headers_fp; - char *headers = (char*)XP_ALLOC(size + 1); - char *buf = headers; - char *buf_end = buf + size; - JSString *result; - - if (!headers) - return NULL; - - memcpy(buf, state->GetMsgState()->m_headers, size); - buf[size] = 0; - - data->mime_headers = MimeHeaders_new(); - if (!data->mime_headers) - return NULL; - - while (buf < buf_end) - { - int len = strlen(buf); - /* - ** turns out that prsembst takes out the \n's at the ends - ** of the lines, and puts \0's there instead. So, if we want - ** to build up the mime header stuff, we have to save off the - ** length, put a \n in where the \0 was, and parse it. - ** Why can't we all just get along, and base our code on - ** something that does the job *quite* well, and that already exists? - */ - if (len != 0) // why are there 0 length header lines? - { - int result; - buf[len] = '\n'; - - result = MimeHeaders_parse_line(buf, - len + 1, - data->mime_headers); - - if (result < 0) - break; - } - - buf += len + 1; - } - - /* - ** after the above loop, headers contains - ** the \n separated list of headers. - */ - printf ("Headers are:\n%s", headers); - result = JS_NewStringCopyZ(data->js_context, headers); - XP_FREE(headers); - return result; - } - else - { - return NULL; - } -} - -JSBool PR_CALLBACK -mailMsg_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSMailMsgData *data; - enum msg_slot msg_slot; - JSString * str; - jsint slot; - MailMessageHdr *msgHdr; - MailDB *mailDB; - - data = (JSMailMsgData*)JS_GetPrivate(cx, obj); - if (!data) - return JS_TRUE; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - msgHdr = data->msgHdr; - mailDB = data->mailDB; - if (!msgHdr || !mailDB) - return JS_TRUE; - - msg_slot = (enum msg_slot)slot; - - switch (msg_slot) { - case MSG_SUBJECT: - { - XPStringObj subject; - - msgHdr->GetSubject(subject, TRUE, mailDB->GetDB()); - - str = JS_NewStringCopyZ(cx, (const char*)subject); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - } - case MSG_PRI: - { - char priority_buf[100]; - - MSG_GetUntranslatedPriorityName(msgHdr->GetPriority(), priority_buf, 100); - - str = JS_NewStringCopyZ(cx, priority_buf); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - } - case MSG_SENDER: - { - char author[512]; - - msgHdr->GetAuthor(author, sizeof(author), mailDB->GetDB()); - str = JS_NewStringCopyZ(cx, author); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - - break; - } - case MSG_RECIPIENT: - { - XPStringObj recipients; - - msgHdr->GetRecipients(recipients, mailDB->GetDB()); - - str = JS_NewStringCopyZ(cx, (const char*)recipients); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - } - case MSG_CC: - { - XPStringObj cc; - - msgHdr->GetCCList(cc, mailDB->GetDB()); - - str = JS_NewStringCopyZ(cx, (const char*)cc); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - } - case MSG_READ: - { - XP_Bool is_read = (msgHdr->GetFlags() & MSG_FLAG_READ) != 0; - - *vp = BOOLEAN_TO_JSVAL(is_read); - - break; - } - case MSG_FOLDER: - { - char *folder = msg_convertToMailboxUrl(mailDB->GetFolderName()); - - str = JS_NewStringCopyZ(cx, folder); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - - XP_FREE(folder); - break; - } - } - return JS_TRUE; -} - -JSBool PR_CALLBACK -mailMsg_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSMailMsgData *data; - enum msg_slot msg_slot; - ParseNewMailState *state; - jsint slot; - MailMessageHdr *msgHdr; - MailDB *mailDB; - MSG_Filter *filter; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - data = (JSMailMsgData*)JS_GetPrivate(cx, obj); - if (!data) - return JS_TRUE; - - msgHdr = data->msgHdr; - mailDB = data->mailDB; - filter = data->filter; - state = data->state; - - if (!msgHdr || !mailDB || !filter || !state) - return JS_TRUE; - - msg_slot = (enum msg_slot)slot; - - /* make sure that if the user is setting either the priority - or folder that we can convert the value to a string. */ - switch (msg_slot) { - case MSG_PRI: - case MSG_FOLDER: - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) { - return JS_FALSE; - } - break; - default:; - } - - switch (msg_slot) { - case MSG_PRI: - { - char *priority = JS_GetStringBytes(JSVAL_TO_STRING(*vp)); - - mailDB->SetPriority(msgHdr, MSG_GetPriorityFromString(priority)); - break; - } - case MSG_READ: - { - JSBool mark_as_read; - - if (!JS_ValueToBoolean(cx, *vp, &mark_as_read)) - return JS_FALSE; - - if (mark_as_read) - msgHdr->OrFlags(kIsRead); - else - msgHdr->AndFlags(~kIsRead); - - break; - } - case MSG_FOLDER: - { - char *folder_name = JS_GetStringBytes(JSVAL_TO_STRING(*vp)); - - JSMailFilter_MoveMessage(state, msgHdr, mailDB, folder_name, filter, &data->msgMoved); - - break; - } - default:; - } - - data->actionPerformed = TRUE; - - return JS_TRUE; -} - -JSBool PR_CALLBACK -mailMsg_Resolve(JSContext *cx, JSObject *obj, jsval id) -{ - JSMailMsgData *data; - JSString *header_value; - char *header_name; - - if (!JSVAL_IS_STRING(id)) - return JS_TRUE; - - data = (JSMailMsgData*)JS_GetPrivate(cx, obj); - if (!data) - return JS_TRUE; - - header_name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - header_value = msg_getHeader(data, header_name); - - return JS_DefineProperty(cx, obj, header_name, - STRING_TO_JSVAL(header_value), - NULL, NULL, - JSPROP_ENUMERATE | JSPROP_READONLY); -} - -void PR_CALLBACK -mailMsg_Finalize(JSContext *cx, JSObject *obj) -{ - JSMailMsgData *msg_data; - - msg_data = (JSMailMsgData*)JS_GetPrivate(cx, obj); - if (!msg_data) - return; - - /* free our mimeheaders if we had any. */ - if (msg_data->mime_headers) - MimeHeaders_free(msg_data->mime_headers); - - XP_FREE(msg_data); -} - -JSBool PR_CALLBACK -newsMsg_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSNewsMsgData *data; - enum msg_slot msg_slot; - JSString * str; - jsint slot; - DBMessageHdr *msgHdr; - NewsGroupDB *newsDB; - - data = (JSNewsMsgData*)JS_GetPrivate(cx, obj); - if (!data) - return JS_TRUE; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - msgHdr = data->msgHdr; - newsDB = data->newsDB; - if (!msgHdr || !newsDB) - return JS_TRUE; - - msg_slot = (enum msg_slot)slot; - - switch (msg_slot) { - case MSG_SUBJECT: - { - XPStringObj subject; - - msgHdr->GetSubject(subject, TRUE, newsDB->GetDB()); - - str = JS_NewStringCopyZ(cx, (const char*)subject); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - } -#if news_dbs_waste_space_for_convience_of_js_filters - case MSG_PRI: - { - char priority_buf[100]; - - MSG_GetUntranslatedPriorityName(msgHdr->GetPriority(), priority_buf, 100); - - str = JS_NewStringCopyZ(cx, priority_buf); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - } -#endif - case MSG_SENDER: - { - char author[512]; - - msgHdr->GetAuthor(author, sizeof(author), newsDB->GetDB()); - str = JS_NewStringCopyZ(cx, author); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - - break; - } -#if news_dbs_waste_space_for_convience_of_js_filters - case MSG_RECIPIENT: - { - XPStringObj recipients; - - msgHdr->GetRecipients(recipients, newsDB->GetDB()); - - str = JS_NewStringCopyZ(cx, (const char*)recipients); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - } - case MSG_CC: - { - XPStringObj cc; - - msgHdr->GetCCList(cc, newsDB->GetDB()); - - str = JS_NewStringCopyZ(cx, (const char*)cc); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - break; - } -#endif - case MSG_READ: - { - XP_Bool is_read = (msgHdr->GetFlags() & MSG_FLAG_READ) != 0; - - *vp = BOOLEAN_TO_JSVAL(is_read); - - break; - } - case MSG_GROUP: - { - char *groupName = NewsGroupDB::GetGroupNameFromURL(newsDB->GetGroupURL()); - - if (!groupName) - return JS_FALSE; - str = JS_NewStringCopyZ(cx, groupName); - if (!str) - return JS_FALSE; - *vp = STRING_TO_JSVAL(str); - - XP_FREE(groupName); - break; - } - } - return JS_TRUE; -} - -JSBool PR_CALLBACK -newsMsg_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) -{ - JSNewsMsgData *data; - enum msg_slot msg_slot; - jsint slot; - DBMessageHdr *msgHdr; - NewsGroupDB *newsDB; - MSG_Filter *filter; - - if (!JSVAL_IS_INT(id)) - return JS_TRUE; - - slot = JSVAL_TO_INT(id); - - data = (JSNewsMsgData*)JS_GetPrivate(cx, obj); - if (!data) - return JS_TRUE; - - msgHdr = data->msgHdr; - newsDB = data->newsDB; - filter = data->filter; - - if (!msgHdr || !newsDB || !filter) - return JS_TRUE; - - msg_slot = (enum msg_slot)slot; - - /* make sure that if the user is setting the priority - that we can convert the value to a string. */ - if (msg_slot == MSG_PRI) - if (!JSVAL_IS_STRING(*vp) && - !JS_ConvertValue(cx, *vp, JSTYPE_STRING, vp)) { - return JS_FALSE; - } - - switch (msg_slot) { -#if news_dbs_waste_space_for_convience_of_js_filters - case MSG_PRI: - { - char *priority = JS_GetStringBytes(JSVAL_TO_STRING(*vp)); - - newsDB->SetPriority(msgHdr, MSG_GetPriorityFromString(priority)); - break; - } -#endif - case MSG_READ: - { - JSBool mark_as_read; - - if (!JS_ValueToBoolean(cx, *vp, &mark_as_read)) - return JS_FALSE; - - if (mark_as_read) - msgHdr->OrFlags(kIsRead); - else - msgHdr->AndFlags(~kIsRead); - - break; - } - default:; - } - - data->actionPerformed = TRUE; - - return JS_TRUE; -} - -void PR_CALLBACK -newsMsg_Finalize(JSContext *cx, JSObject *obj) -{ - JSNewsMsgData *msg_data; - - msg_data = (JSNewsMsgData*)JS_GetPrivate(cx, obj); - if (!msg_data) - return; - - XP_FREE(msg_data); -} - -/* So we can possibly add functions "global" to filters... */ -static JSClass global_class = { - "MessageFilters", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub -}; - -static JSClass js_mail_msg_class = { - "MailMessage", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, mailMsg_getProperty, mailMsg_setProperty, - JS_EnumerateStub, mailMsg_Resolve, JS_ConvertStub, mailMsg_Finalize -}; - -static JSClass js_news_msg_class = { - "NewsMessage", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, newsMsg_getProperty, newsMsg_setProperty, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, newsMsg_Finalize -}; - -/* message.trash() -- moves the message to the trash folder and marks it as read. */ -JSBool PR_CALLBACK -mailMsg_delete(JSContext *cx, JSObject *obj, uint /*argc*/, jsval *argv, jsval * /*rval*/) -{ - JSMailMsgData *data; - MailMessageHdr *msgHdr; - ParseNewMailState *state; - MailDB *mailDB; - MSG_Filter *filter; - char *trash_folder; - - if (!(data = (JSMailMsgData*)JS_GetInstancePrivate(cx, obj, &js_mail_msg_class, argv))) - return JS_FALSE; - - msgHdr = data->msgHdr; - state = data->state; - mailDB = data->mailDB; - filter = data->filter; - - if (!msgHdr || !mailDB || !state || !filter) - return JS_FALSE; - - /* copy the behaviour from prsembst.cpp */ - trash_folder = state->GetMaster()->GetPrefs()->MagicFolderName(MSG_FOLDER_FLAG_TRASH); - msgHdr->OrFlags(kIsRead); // mark read in trash. - - JSMailFilter_MoveMessage(state, msgHdr, mailDB, trash_folder, filter, &data->msgMoved); - - data->actionPerformed = TRUE; - return JS_TRUE; -} - -/* message.killThread() -- marks the thread containing this message as ignored. */ -JSBool PR_CALLBACK -mailMsg_killthread(JSContext *cx, JSObject *obj, uint /*argc*/, jsval *argv, jsval * /*rval*/) -{ - JSMailMsgData *data; - MailMessageHdr *msgHdr; - - if (!(data = (JSMailMsgData*)JS_GetInstancePrivate(cx, obj, &js_mail_msg_class, argv))) - return JS_FALSE; - - msgHdr = data->msgHdr; - - if (!msgHdr) - return JS_FALSE; - - /* copy the behaviour from prsembst.cpp */ - msgHdr->OrFlags(kIgnored); - - data->actionPerformed = TRUE; - return JS_TRUE; -} - -/* message.watchThread() -- marks the thread containing this message as watched. */ -JSBool PR_CALLBACK -mailMsg_watchthread(JSContext *cx, JSObject *obj, uint /*argc*/, jsval *argv, jsval * /*rval*/) -{ - JSMailMsgData *data; - MailMessageHdr *msgHdr; - - if (!(data = (JSMailMsgData*)JS_GetInstancePrivate(cx, obj, &js_mail_msg_class, argv))) - return JS_FALSE; - - msgHdr = data->msgHdr; - - if (!msgHdr) - return JS_FALSE; - - /* copy the behaviour from prsembst.cpp */ - msgHdr->OrFlags(kWatched); - - data->actionPerformed = TRUE; - return JS_TRUE; -} - -/* message.killThread() -- marks the thread containing this message as ignored. */ -JSBool PR_CALLBACK -newsMsg_killthread(JSContext *cx, JSObject *obj, uint /*argc*/, jsval *argv, jsval * /*rval*/) -{ - JSNewsMsgData *data; - - if (!(data = (JSNewsMsgData*)JS_GetInstancePrivate(cx, obj, &js_news_msg_class, argv))) - return JS_FALSE; - - data->msgHdr->OrFlags(kIgnored); - - data->actionPerformed = TRUE; - return JS_TRUE; -} - -/* message.watchThread() -- marks the thread containing this message as watched. */ -JSBool PR_CALLBACK -newsMsg_watchthread(JSContext *cx, JSObject *obj, uint /*argc*/, jsval *argv, jsval * /*rval*/) -{ - JSNewsMsgData *data; - - if (!(data = (JSNewsMsgData*)JS_GetInstancePrivate(cx, obj, &js_news_msg_class, argv))) - return JS_FALSE; - - data->msgHdr->OrFlags(kWatched); - - data->actionPerformed = TRUE; - return JS_TRUE; -} - -#if DEBUG -/* trace() -- outputs spew to stderr. Actually, this (or something like it - that perhaps outputs to the same file that the rest of the filter logging code - writes to) would probably be very useful in the normal course of writing filters. */ -JSBool PR_CALLBACK -filter_trace(JSContext *cx, JSObject * /*obj*/, uint argc, jsval *argv, jsval * /*rval*/) -{ - - if (argc > 0) - { - JSString *str; - const char *trace_str; - if (!(str = JS_ValueToString(cx, argv[0]))) - return JS_FALSE; - - trace_str = JS_GetStringBytes(str); - if (*trace_str != '\0') - { - fprintf (stderr, "jsfilter trace: %s\n", trace_str); - } - return JS_TRUE; - } - - return JS_FALSE; -} -#endif - -static JSFunctionSpec mail_msg_methods[] = { - { "trash", mailMsg_delete, 0 }, - { "killThread", mailMsg_killthread, 0 }, - { "watchThread", mailMsg_watchthread, 0 }, - { 0 } -}; - -static JSFunctionSpec news_msg_methods[] = { - { "killThread", newsMsg_killthread, 0 }, - { "watchThread", newsMsg_watchthread, 0 }, - { 0 } -}; - -static JSFunctionSpec filter_methods[] = { -#ifdef DEBUG - { "trace", filter_trace, 1 }, -#endif - { 0 } -}; - -static void -destroyJSFilterStuff() -{ - filter_obj = NULL; -} - -static JSContext * -initializeJSFilterStuff(MWContext *context) -{ - PREF_GetConfigContext(&filter_context); - - /* we're totally hosed. Let's bail */ - if (!filter_context) - return NULL; - - /* we're already initialized */ - if (filter_obj) - return filter_context; - - /* create our "global" object. We make the message object a child of this */ - filter_obj = JS_NewObject(filter_context, &global_class, NULL, NULL); - - if (!filter_obj - || !JS_SetPrivate(filter_context, filter_obj, context) - || !JS_InitStandardClasses(filter_context, filter_obj) - || !JS_DefineFunctions(filter_context, filter_obj, filter_methods)) - { - destroyJSFilterStuff(); - return NULL; - } - - return filter_context; -} - -static JSObject * -newMailMsgObject() -{ - JSObject *message_obj; - JSMailMsgData *msg_data; - - /* define the javascript object that is going to reflect all the message - properties we allow. The name in quotes is the word that in the script - that will represent this object -- "message.trash()" */ - message_obj = JS_DefineObject(filter_context, filter_obj, - "mailMessage", &js_mail_msg_class, - NULL, JSPROP_ENUMERATE); - - if (!message_obj) - return NULL; - - msg_data = XP_NEW_ZAP(JSMailMsgData); - - if (!msg_data) - return NULL; - - if (!JS_SetPrivate(filter_context, message_obj, msg_data) - || !JS_DefineProperties(filter_context, message_obj, mail_msg_props) - || !JS_DefineFunctions(filter_context, message_obj, mail_msg_methods)) - { - return NULL; - } - - return message_obj; -} - -static JSObject * -newNewsMsgObject() -{ - JSObject *message_obj; - JSNewsMsgData *msg_data; - - /* define the javascript object that is going to reflect all the message - properties we allow. The name in quotes is the word that in the script - that will represent this object -- "message.trash()" */ - message_obj = JS_DefineObject(filter_context, filter_obj, - "newsMessage", &js_news_msg_class, - NULL, JSPROP_ENUMERATE); - - if (!message_obj) - return NULL; - - msg_data = XP_NEW_ZAP(JSNewsMsgData); - - if (!msg_data) - return NULL; - - if (!JS_SetPrivate(filter_context, message_obj, msg_data) - || !JS_DefineProperties(filter_context, message_obj, news_msg_props) - || !JS_DefineFunctions(filter_context, message_obj, news_msg_methods)) - { - return NULL; - } - - return message_obj; -} - -void -jsmsg_ErrorReporter(JSContext *cx, const char *message, - JSErrorReport *report) -{ - char *last = NULL; - int i, j, k, n; - const char *s, *t; - MWContext *context = (MWContext*)JS_GetPrivate(cx, filter_obj); - - if (!context) - return; - - // for now we only put up one dialog. - if (error_count) - return; - - error_count++; - - last = PR_sprintf_append(0, - "<FONT SIZE=4>\n<B>JavaScript Mail Filter Error:</B><BR>"); - last = PR_sprintf_append(last, - "Messages that would have ordinarily been modified by your JavaScript<BR>" - "Filters have been placed, unmodified, in your Inbox.<BR><BR>"); - - if (!report) { - last = PR_sprintf_append(last, "<B>%s:</B>\n", message); - } else { - if (report->filename) - last = PR_sprintf_append(last, "<A HREF=\"%s\">%s</A>, ", - report->filename, report->filename); - if (report->lineno) - last = PR_sprintf_append(last, "<B>line %u:</B>", report->lineno); - last = PR_sprintf_append(last, - "<BR><BR>%s.</FONT><PRE><FONT SIZE=4>", - message); - if (report->linebuf) { - for (s = t = report->linebuf; *s != '\0'; s = t) { - for (; t != report->tokenptr && *t != '<' && *t != '\0'; t++) - ; - last = PR_sprintf_append(last, "%.*s", t - s, s); - if (*t == '\0') - break; - if (t == report->tokenptr) { - last = PR_sprintf_append(last, - "</FONT>" - "<FONT SIZE=4 COLOR=#ff2020>"); - } - last = PR_sprintf_append(last, (*t == '<') ? "&lt;" : "%c", *t); - t++; - } - last = PR_sprintf_append(last, "</FONT><FONT SIZE=4>\n"); - n = report->tokenptr - report->linebuf; - for (i = j = 0; i < n; i++) { - if (report->linebuf[i] == '\t') { - for (k = (j + 8) & ~7; j < k; j++) - last = PR_sprintf_append(last, "."); - continue; - } - last = PR_sprintf_append(last, "."); - j++; - } - last = PR_sprintf_append(last, "<B>^</B>"); - } - last = PR_sprintf_append(last, "\n</FONT></PRE>"); - } - - if (last) - { - XP_MakeHTMLAlert(context, last); - - XP_FREE(last); - } -} - -static JSBool -compileJSFilters() -{ - static time_t m_time = 0; // the last modification time of filters.js - static JSBool ret_val = JS_FALSE; - char *filename; - XP_File fp; - XP_StatStruct stats; - MWContext *context = (MWContext*)JS_GetPrivate(filter_context, filter_obj); - - if (!need_compile) - return ret_val; - - filename = WH_FileName("", xpJSMailFilters); - - XP_Trace("+Filename for script filter is %s\n", filename); - -#ifdef XP_WIN - _stat(filename, &stats); -#else - stat(filename, &stats); -#endif - - if (stats.st_mtime > m_time || need_compile) - { - long fileLength; - char *buffer; - - m_time = stats.st_mtime; - - fileLength = stats.st_size; - if (fileLength <= 1) - { - ret_val = JS_FALSE; - return ret_val; - } - - fp = fopen(filename, "r"); - - buffer = (char*)malloc(fileLength); - if (!buffer) - { - fclose(fp); - ret_val = JS_FALSE; - return ret_val; - } - - fileLength = XP_FileRead(buffer, fileLength, fp); - - XP_FileClose(fp); - - XP_Trace("+Compiling filters.js...\n"); - - jsval rval; - ret_val = JS_EvaluateScript(filter_context, filter_obj, buffer, fileLength, - filename, 1, &rval); - - XP_Trace("+Done.\n"); - - XP_FREE(buffer); - - need_compile = JS_FALSE; - } - - return ret_val; -} - -MSG_SearchError -JSMailFilter_execute(ParseNewMailState *state, - MSG_Filter *filter, - MailMessageHdr *msgHdr, - MailDB *mailDB, - XP_Bool *pMoved) -{ - jsval result; - jsval filter_arg; /* we will this in with the message object we create. */ - JSObject *message_obj; - JSString *regexp_input; - JSMailMsgData *msg_data; - char *script_name; - - /* initialize the filter stuff, and bomb out early if it fails */ - if (!initializeJSFilterStuff(state->GetContext())) - return SearchError_OutOfMemory; // XXX - - if (!error_reporter_installed) - { - error_reporter_installed = JS_TRUE; - previous_error_reporter = JS_SetErrorReporter(filter_context, - jsmsg_ErrorReporter); - } - - /* reload the filters.js file if necessary, and compile it. */ - - if (!compileJSFilters()) - return SearchError_OutOfMemory; // XXX - - message_obj = newMailMsgObject(); - if (!message_obj) - return SearchError_OutOfMemory; // XXX - - /* fill in the fields of the msg_data that allow us to - get at all the state we need */ - msg_data = (JSMailMsgData*)JS_GetPrivate(filter_context, message_obj); - msg_data->msgHdr = msgHdr; - msg_data->mailDB = mailDB; - msg_data->filter = filter; - msg_data->state = state; - msg_data->js_context = filter_context; - msg_data->js_object = message_obj; - - /* initialize the regular expression machinery, setting $_ to - the message headers */ - regexp_input = mailMsg_initializeHeaders(msg_data); - JS_SetRegExpInput(filter_context, regexp_input, JS_TRUE /* multiline */); - - filter_arg = OBJECT_TO_JSVAL(message_obj); - filter->GetFilterScript(&script_name); - if (script_name) - JS_CallFunctionName(filter_context, filter_obj, script_name, - 1, &filter_arg, &result); - - /* clean up the regexp stuff. */ - JS_ClearRegExpStatics(filter_context); - - if (pMoved) - *pMoved = msg_data->msgMoved; - - /* msg_data->actionPerformed is set in the js methods and setProperty() above. - XXX we should also probably take into account the return value of the script.*/ - if (msg_data->actionPerformed) - return SearchError_Success; - else - return SearchError_NotAMatch; -} - -MSG_SearchError -JSNewsFilter_execute(MSG_Filter* filter, - DBMessageHdr* msgHdr, - NewsGroupDB* newsDB) -{ - jsval result; - jsval filter_arg; /* we will this in with the message object we create. */ - JSObject *message_obj; - JSNewsMsgData *msg_data; - char *script_name; - - /* initialize the filter stuff, and bomb out early if it fails */ - if (!initializeJSFilterStuff(NULL)) - return SearchError_OutOfMemory; // XXX - - if (!error_reporter_installed) - { - error_reporter_installed = JS_TRUE; - previous_error_reporter = JS_SetErrorReporter(filter_context, - jsmsg_ErrorReporter); - } - - /* reload the filters.js file if necessary, and compile it. */ - - if (!compileJSFilters()) - return SearchError_OutOfMemory; // XXX - - message_obj = newNewsMsgObject(); - if (!message_obj) - return SearchError_OutOfMemory; // XXX - - /* fill in the fields of the msg_data that allow us to - get at all the state we need */ - msg_data = (JSNewsMsgData*)JS_GetPrivate(filter_context, message_obj); - msg_data->msgHdr = msgHdr; - msg_data->newsDB = newsDB; - msg_data->filter = filter; - msg_data->js_context = filter_context; - msg_data->js_object = message_obj; - - filter_arg = OBJECT_TO_JSVAL(message_obj); - filter->GetFilterScript(&script_name); - if (script_name) - JS_CallFunctionName(filter_context, filter_obj, script_name, - 1, &filter_arg, &result); - - /* msg_data->actionPerformed is set in the js methods and setProperty() above. - XXX we should also probably take into account the return value of the script.*/ - if (msg_data->actionPerformed) - return SearchError_Success; - else - return SearchError_NotAMatch; -} - -void -JSFilter_cleanup() -{ - XP_Trace("+Cleaning up JS Filters"); - - error_count = 0; - - need_compile = JS_TRUE; - - if (filter_context) - { - if (error_reporter_installed) - { - error_reporter_installed = JS_FALSE; - JS_SetErrorReporter(filter_context, previous_error_reporter); - } - - JS_GC(filter_context); - - destroyJSFilterStuff(); - } -} diff --git a/mozilla/lib/libmsg/jsmsg.h b/mozilla/lib/libmsg/jsmsg.h deleted file mode 100644 index ef7787b8fa8..00000000000 --- a/mozilla/lib/libmsg/jsmsg.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* jsmsg.h -- javascript reflection of mail messages for filters. - */ - -#ifndef _JSMSG_H_ -#define _JSMSG_H_ - -class ParseNewMailState; - -extern MSG_SearchError JSMailFilter_execute(ParseNewMailState *state, - MSG_Filter* filter, - MailMessageHdr* msgHdr, - MailDB* mailDB, - XP_Bool* pMoved); - -extern MSG_SearchError JSNewsFilter_execute(MSG_Filter* filter, - DBMessageHdr* msgHdr, - NewsGroupDB* newsDB); - -/* runs the garbage collector on the filter context. Probably a good - idea to call on completion of GetNewMail */ -extern void JSFilter_cleanup(); - -#endif /* _JSMSG_H_ */ diff --git a/mozilla/lib/libmsg/listngst.cpp b/mozilla/lib/libmsg/listngst.cpp deleted file mode 100644 index 6d7f5bc7d5a..00000000000 --- a/mozilla/lib/libmsg/listngst.cpp +++ /dev/null @@ -1,561 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "listngst.h" -#include "dberror.h" -#include "newsdb.h" -#include "msgdbvw.h" -#include "newsset.h" -#include "msgpane.h" -#include "xpgetstr.h" -#include "grpinfo.h" -#include "prefapi.h" -#include "msgprefs.h" -#include "msgstrob.h" - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; - extern int MK_HDR_DOWNLOAD_COUNT; - extern int MK_NO_NEW_DISC_MSGS; -} - -ListNewsGroupState::ListNewsGroupState(const char *url, const char *groupName, MSG_Pane *pane) -{ - m_newsDB = NULL; - m_msgDBView = NULL; - m_groupName = XP_STRDUP(groupName); - m_host = NULL; - m_url = XP_STRDUP(url); - m_lastProcessedNumber = 0; - m_lastMsgNumber = 0; - m_set = NULL; - XP_ASSERT(pane); - m_pane = pane; - m_master = pane->GetMaster(); - - m_startedUpdate = FALSE; - XP_MEMSET(&m_knownArts, 0, sizeof(m_knownArts)); - m_knownArts.group_name = m_groupName; - char* host_and_port = NET_ParseURL(url, GET_HOST_PART); - m_host = m_master->FindHost(host_and_port, - (url[0] == 's' || url[0] == 'S'), - -1); - FREEIF(host_and_port); - m_knownArts.host = m_host; - m_getOldMessages = FALSE; - m_promptedAlready = FALSE; - m_downloadAll = FALSE; - m_maxArticles = 0; -} - -ListNewsGroupState::~ListNewsGroupState() -{ - XP_FREE(m_url); - XP_FREE(m_groupName); - if (m_msgDBView != NULL) - m_msgDBView->Remove(this); - - if (m_newsDB) - m_newsDB->Close(); - delete m_knownArts.set; -} - -void ListNewsGroupState::SetView(MessageDBView *view) -{ - m_msgDBView = view; - if (view) - view->Add(this); -} - -void ListNewsGroupState::OnAnnouncerGoingAway (ChangeAnnouncer *instigator) -{ - if (m_msgDBView != NULL) - { - m_msgDBView->Remove(this); - m_msgDBView->NotifyAnnouncerGoingAway(instigator); // shout it to the world! - m_msgDBView = NULL; - } -} - -extern "C" XP_Bool FE_NewsDownloadPrompt(MWContext *context, - int32 numMessagesToDownload, - XP_Bool *downloadAll); - -int ListNewsGroupState::GetRangeOfArtsToDownload(MSG_NewsHost* host, - const char* group_name, - int32 first_possible, - int32 last_possible, - int32 maxextra, - int32* first, - int32* last) -{ - int status = 0; - XP_Bool emptyGroup_p = FALSE; - MsgERR err; - - XP_ASSERT(first && last); - if (!first || !last) return -1; - - *first = 0; - *last = 0; - - if (m_pane != NULL && !m_startedUpdate) - { - m_startedUpdate = TRUE; - m_pane->StartingUpdate(MSG_NotifyNone, 0, 0); - } - - if (!m_newsDB) - { - if ((err = NewsGroupDB::Open(m_url, m_master, &m_newsDB)) != eSUCCESS) - return ConvertMsgErrToMKErr(err); - else - { - m_set = m_newsDB->GetNewsArtSet(); - m_set->SetLastMember(last_possible); // make sure highwater mark is valid. - NewsFolderInfo *newsGroupInfo = m_newsDB->GetNewsFolderInfo(); - if (newsGroupInfo) - { - XPStringObj knownArtsString; - newsGroupInfo->GetKnownArtsSet(knownArtsString); - m_knownArts.set = msg_NewsArtSet::Create(knownArtsString); - } - else - { - m_knownArts.set = msg_NewsArtSet::Create(); - m_knownArts.set->AddRange(m_newsDB->GetLowWaterArticleNum(), m_newsDB->GetHighwaterArticleNum()); - } - m_pane->StartingUpdate(MSG_NotifyNone, 0, 0); - m_newsDB->ExpireUpTo(first_possible, m_pane->GetContext()); - m_pane->EndingUpdate(MSG_NotifyNone, 0, 0); - if (m_knownArts.set->IsMember(last_possible)) // will this be progress pane? - { - char *noNewMsgs = XP_GetString(MK_NO_NEW_DISC_MSGS); - MWContext *context = m_pane->GetContext(); - MSG_Pane* parentpane = m_pane->GetParentPane(); - // send progress to parent pane, if any, because progress pane is going down. - if (parentpane) - context = parentpane->GetContext(); - FE_Progress (context, noNewMsgs); - } - } - } - - if (maxextra <= 0 || last_possible < first_possible || last_possible < 1) - { - emptyGroup_p = TRUE; - } - - if (m_knownArts.host != host || - m_knownArts.group_name == NULL || - XP_STRCMP(m_knownArts.group_name, group_name) != 0 || - !m_knownArts.set) - { - /* We're displaying some other group. Clear out that display, and set up - everything to return the proper first chunk. */ - XP_ASSERT(FALSE); // ### dmb todo - need nwo way of doing this - if (emptyGroup_p) - return 0; - } - else - { - if (emptyGroup_p) - return 0; - } - - m_knownArts.first_possible = first_possible; - m_knownArts.last_possible = last_possible; - - /* Determine if we only want to get just new articles or more messages. - If there are new articles at the end we haven't seen, we always want to get those first. - Otherwise, we get the newest articles we haven't gotten, if we're getting more. - My thought for now is that opening a newsgroup should only try to get new articles. - Selecting "More Messages" will first try to get unseen messages, then old messages. */ - - if (m_getOldMessages || !m_knownArts.set->IsMember(last_possible)) - { - XP_Bool notifyMaxExceededOn = (m_pane && m_pane->GetPrefs() && m_pane->GetPrefs()->GetNewsNotifyOn()); - // if the preference to notify when downloading more than x headers is not on, - // and we're downloading new headers, set maxextra to a very large number. - if (!m_getOldMessages && !notifyMaxExceededOn) - maxextra = 0x7FFFFFFFL; - - status = m_knownArts.set->LastMissingRange(first_possible, last_possible, - first, last); - if (status < 0) - return status; - if (*first > 0 && *last - *first >= maxextra) - { - if (!m_getOldMessages && !m_promptedAlready && notifyMaxExceededOn) - { - XP_Bool result = FE_NewsDownloadPrompt(m_pane->GetContext(), - *last - *first + 1, - &m_downloadAll); - if (result) - { - m_maxArticles = 0; - - PREF_GetIntPref("news.max_articles", &m_maxArticles); - NET_SetNumberOfNewsArticlesInListing(m_maxArticles); - maxextra = m_maxArticles; - if (!m_downloadAll) - { - XP_Bool markOldRead = FALSE; - PREF_GetBoolPref("news.mark_old_read", &markOldRead); - if (markOldRead && m_set) - m_set->AddRange(*first, *last - maxextra); - *first = *last - maxextra + 1; - } - } - else - *first = *last = 0; - m_promptedAlready = TRUE; - } - else if (m_promptedAlready && !m_downloadAll) - *first = *last - m_maxArticles + 1; - else if (!m_downloadAll) - *first = *last - maxextra + 1; - } - } -#ifdef DEBUG_bienvenu - XP_Trace("GetRangeOfArtsToDownload(first possible = %ld, last possible = %ld, first = %ld, last = %ld maxextra = %ld\n", - first_possible, last_possible, *first, *last, maxextra); -#endif - return 0; -} - -int ListNewsGroupState::AddToKnownArticles(MSG_NewsHost* host, - const char* group_name, - int32 first, int32 last) -{ - int status; - if (m_knownArts.host != host || - m_knownArts.group_name == NULL || - XP_STRCMP(m_knownArts.group_name, group_name) != 0 || - !m_knownArts.set) - { - m_knownArts.host = host; - FREEIF(m_knownArts.group_name); - m_knownArts.group_name = XP_STRDUP(group_name); - delete m_knownArts.set; - m_knownArts.set = msg_NewsArtSet::Create(); - - if (!m_knownArts.group_name || !m_knownArts.set) { - return MK_OUT_OF_MEMORY; - } - - } - - status = m_knownArts.set->AddRange(first, last); - if (m_newsDB) - { - NewsFolderInfo *newsGroupInfo = m_newsDB->GetNewsFolderInfo(); - if (newsGroupInfo) - { - char *output = m_knownArts.set->Output(); - if (output) - newsGroupInfo->SetKnownArtsSet(output); - delete[] output; - } - } - return status; -} - -int ListNewsGroupState::InitXOVER( - MSG_NewsHost* /*host*/, - const char * /*group_name*/, - uint32 first_msg, uint32 last_msg, - uint32 /*oldest_msg*/, uint32 /*youngest_msg*/) -{ - int status = 0; - - // Tell the FE to show the GetNewMessages progress dialog - FE_PaneChanged (m_pane, FALSE, MSG_PanePastPasswordCheck, 0); - - /* Consistency checks, not that I know what to do if it fails (it will - probably handle it OK...) */ - XP_ASSERT(first_msg <= last_msg); - - /* If any XOVER lines from the last time failed to come in, mark those - messages as read. */ - if (m_lastProcessedNumber < m_lastMsgNumber) - { - m_set->AddRange(m_lastProcessedNumber + 1, m_lastMsgNumber); - } - m_firstMsgNumber = first_msg; - m_lastMsgNumber = last_msg; - m_lastProcessedNumber = first_msg > 1 ? first_msg - 1 : 1; - - return status; -} - -int ListNewsGroupState::ProcessXOVER(char *line) -{ - int status = 0; - char *next; - uint32 message_number; - // int32 lines; - XP_Bool read_p = FALSE; - - XP_ASSERT (line); - if (!line) - return -1; - - if (m_msgDBView != NULL) - { - status = ConvertMsgErrToMKErr(m_msgDBView->AddHdrFromServerLine(line, &message_number)); - if (status < 0) - return status; - } - else if (m_newsDB != NULL) - { - status = ConvertMsgErrToMKErr(m_newsDB->AddHdrFromXOver(line, &message_number)); - } - else - return -1; - - next = line; - - - XP_ASSERT(message_number > m_lastProcessedNumber || - message_number == 1); - if (m_set && message_number > m_lastProcessedNumber + 1) - { - /* There are some articles that XOVER skipped; they must no longer - exist. Mark them as read in the newsrc, so we don't include them - next time in our estimated number of unread messages. */ - if (m_set->AddRange(m_lastProcessedNumber + 1, message_number - 1)) - { - /* This isn't really an important enough change to warrant causing - the newsrc file to be saved; we haven't gathered any information - that won't also be gathered for free next time. - */ - } - } - - m_lastProcessedNumber = message_number; - if (m_knownArts.set) - { - status = m_knownArts.set->Add(message_number); - if (status < 0) return status; - } - - if (message_number > m_lastMsgNumber) - m_lastMsgNumber = message_number; - else if (message_number < m_firstMsgNumber) - m_firstMsgNumber = message_number; - - if (m_set) { - read_p = m_set->IsMember(message_number); - } - - /* Update the thermometer with a percentage of articles retrieved. - */ - if (m_lastMsgNumber > m_firstMsgNumber) - { - int32 percent = (int32) (100 * (((double) (m_lastProcessedNumber- - m_firstMsgNumber + 1)) / - ((double) (m_lastMsgNumber - - m_firstMsgNumber + 1)))); - char *statusTemplate = XP_GetString (MK_HDR_DOWNLOAD_COUNT); - FE_SetProgressBarPercent (m_pane->GetContext(), percent); - char *statusString = PR_smprintf (statusTemplate, m_lastProcessedNumber - m_firstMsgNumber + 1, m_lastMsgNumber - m_firstMsgNumber + 1); - - FE_Progress (m_pane->GetContext(), statusString); - XP_FREE(statusString); - } - return status; -} - -int ListNewsGroupState::ResetXOVER() -{ - m_lastMsgNumber = m_firstMsgNumber; - m_lastProcessedNumber = m_lastMsgNumber; - return 0; -} - -/* When we don't have XOVER, but use HEAD, this is called instead. - It reads lines until it has a whole header block, then parses the - headers; then takes selected headers and creates an XOVER line - from them. This is more for simplicity and code sharing than - anything else; it means we end up parsing some things twice. - But if we don't have XOVER, things are going to be so horribly - slow anyway that this just doesn't matter. - */ - -int ListNewsGroupState::ProcessNonXOVER (char * /*line*/) -{ - // ### dmb write me - int status = 0; - return status; -} - - - -int ListNewsGroupState::FinishXOVER (int status) -{ - struct MSG_NewsKnown* k; - - /* If any XOVER lines from the last time failed to come in, mark those - messages as read. */ - - if (status >= 0 && m_lastProcessedNumber < m_lastMsgNumber) - { - m_set->AddRange(m_lastProcessedNumber + 1, m_lastMsgNumber); - } - - - if (m_msgDBView != NULL) - { - // we should think about not doing this if status != MK_INTERRUPTED, but we'd need to still clean up the view. - m_msgDBView->AddNewMessages(); - m_msgDBView->Remove(this); - m_msgDBView = NULL; - } - - if (m_newsDB) - { - m_newsDB->Close(); - m_newsDB = NULL; - } - - k = &m_knownArts; - - if (k->set) - { - int32 n = k->set->FirstNonMember(); - if (n < k->first_possible || n > k->last_possible) - { - /* We know we've gotten all there is to know. Take advantage of that to - update our counts... */ - // ### dmb - } - } - - if (m_pane != NULL) - { - // save the pane and NULL out m_pane - this is a horrible hack to avoid recursive - // calls which happen when the fe selects a message as a result of getting EndingUpdate, - // which interrupts this url right before it was going to finish and causes FinishXOver - // to get called again. - MSG_Pane *savePane = m_pane; - m_pane = NULL; - // if we haven't started an update, start one so the fe - // will know to update the size of the view. - if (!m_startedUpdate) - { - savePane->StartingUpdate(MSG_NotifyNone, 0, 0); - m_startedUpdate = TRUE; - } - savePane->EndingUpdate(MSG_NotifyNone, 0, 0); - m_startedUpdate = FALSE; - - if (m_lastMsgNumber > 0) - { - MWContext *context = savePane->GetContext(); - MSG_Pane* parentpane = savePane->GetParentPane(); - // send progress to parent pane, if any, because progress pane is going down. - if (parentpane) - context = parentpane->GetContext(); - - char *statusTemplate = XP_GetString (MK_HDR_DOWNLOAD_COUNT); - char *statusString = PR_smprintf (statusTemplate, m_lastProcessedNumber - m_firstMsgNumber + 1, m_lastMsgNumber - m_firstMsgNumber + 1); - - if (statusString) - { - FE_Progress (context, statusString); - XP_FREE(statusString); - } - } - MSG_FolderInfoNews *newsFolder = NULL; // This is the way it was. - // All platforms should probably do this! But I'm scared to make it so - jrm 98/03/10 - // Be brave, my son! I might as well experience any pane, er, pain, this is going to cause - dmb - newsFolder = (savePane) ? savePane->GetMaster()->FindNewsFolder(m_host, m_groupName, FALSE) : 0; - FE_PaneChanged(savePane, FALSE, MSG_PaneNotifyFolderLoaded, (uint32)newsFolder); - } - - return 0; - // ListNewsGroupState object gets deleted by the master when a new one is created. -} - -ListNewsGroupArticleKeysState::ListNewsGroupArticleKeysState(MSG_NewsHost *host, const char *groupName, MSG_Pane *pane) -{ - m_host = host; - m_groupName = groupName; - m_pane = pane; - m_newsDB = NULL; - m_idsOnServer.set = msg_NewsArtSet::Create(); - MSG_FolderInfoNews *newsFolder = m_pane->GetMaster()->FindNewsFolder(host, groupName, FALSE); - if (newsFolder) - { - char *url = newsFolder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - if (url) - NewsGroupDB::Open(url, m_pane->GetMaster(), &m_newsDB); - if (m_newsDB) - m_newsDB->ListAllIds(m_idsInDB); - m_dbIndex = 0; - - FREEIF(url); - } -} - -ListNewsGroupArticleKeysState::~ListNewsGroupArticleKeysState() -{ - if (m_newsDB) - m_newsDB->Close(); -} - -int ListNewsGroupArticleKeysState::AddArticleKey(int32 key) -{ - m_idsOnServer.set->Add(key); - if (m_dbIndex < m_idsInDB.GetSize()) - { - int32 idInDBToCheck = m_idsInDB.GetAt(m_dbIndex); - // if there are keys in the database that aren't in the newsgroup - // on the server, remove them. We probably shouldn't do this if - // we have a copy of the article offline. - while (idInDBToCheck < key) - { - m_newsDB->DeleteMessage(idInDBToCheck, NULL, FALSE); -#ifdef DEBUG_bienvenu - m_idsDeleted.Add(idInDBToCheck); -#endif - if (m_dbIndex >= m_idsInDB.GetSize()) - break; - idInDBToCheck = m_idsInDB.GetAt(++m_dbIndex); - } - if (idInDBToCheck == key) - m_dbIndex++; - } - return 0; -} - -int ListNewsGroupArticleKeysState::FinishAddingArticleKeys() -{ - // make sure none of the deleted turned up on the idsOnServer list -#ifdef DEBUG_bienvenu - for (int32 i = 0; i < m_idsDeleted.GetSize(); i++) - XP_ASSERT (!m_idsOnServer.set->IsMember(m_idsDeleted.GetAt(i))); -#endif - return 0; -} diff --git a/mozilla/lib/libmsg/listngst.h b/mozilla/lib/libmsg/listngst.h deleted file mode 100644 index 0369cafff15..00000000000 --- a/mozilla/lib/libmsg/listngst.h +++ /dev/null @@ -1,139 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef ListNGSt_H -#define ListNGSt_H - -class MSG_Master; -class NewsGroupDB; -class MessageDBView; -class msg_NewsArtSet; - -#include "msg.h" -#include "chngntfy.h" -#include "idarray.h" - - /* The below is all stuff that we remember for libnet about which - articles we've already seen in the current newsgroup. */ -typedef struct MSG_NewsKnown { - MSG_NewsHost* host; - char* group_name; - msg_NewsArtSet* set; /* Set of articles we've already gotten - from the newsserver (if it's marked - "read", then we've already gotten it). - If an article is marked "read", it - doesn't mean we're actually displaying - it; it may be an article that no longer - exists, or it may be one that we've - marked read and we're only viewing - unread messages. */ - - int32 first_possible; /* The oldest article in this group. */ - int32 last_possible; /* The newest article in this group. */ - - XP_Bool shouldGetOldest; - } MSG_NewsKnown; - - -// This class should ultimately be part of a news group listing -// state machine - either by inheritance or delegation. -// Currently, a folder pane owns one and libnet news group listing -// related messages get passed to this object. -class ListNewsGroupState : public ChangeListener -{ -public: - ListNewsGroupState(const char *url, const char *groupName, MSG_Pane *pane); - ~ListNewsGroupState(); - int GetRangeOfArtsToDownload(MSG_NewsHost* host, - const char* group_name, - int32 first_possible, - int32 last_possible, - int32 maxextra, - int32* first, - int32* lastprotected); - int AddToKnownArticles(MSG_NewsHost* host, - const char* group_name, - int32 first, int32 last); - int InitXOVER(MSG_NewsHost* host, - const char *group_name, - uint32 first_msg, uint32 last_msg, - uint32 oldest_msg, uint32 youngest_msg); - int ProcessXOVER(char *line); - int ResetXOVER(); - int ProcessNonXOVER(char *line); - int FinishXOVER (int status); - - MSG_Master *GetMaster() {return m_master;} - void SetMaster(MSG_Master *master) {m_master = master;} - void SetView(MessageDBView *view); - void SetPane(MSG_Pane *pane) {m_pane = pane;} - MSG_NewsHost* GetHost() {return m_host;} - const char * GetGroupName() {return m_groupName;} - const char * GetURL() {return m_url;} - virtual void OnAnnouncerGoingAway (ChangeAnnouncer *instigator); - void SetGetOldMessages(XP_Bool getOldMessages) {m_getOldMessages = getOldMessages;} - XP_Bool GetGetOldMessages() {return m_getOldMessages;} - -protected: - NewsGroupDB *m_newsDB; - MessageDBView *m_msgDBView; // open view on current download, if any - MSG_Pane *m_pane; - XP_Bool m_startedUpdate; - XP_Bool m_getOldMessages; - XP_Bool m_promptedAlready; - XP_Bool m_downloadAll; - int32 m_maxArticles; - char *m_groupName; - MSG_NewsHost *m_host; - char *m_url; // url we're retrieving - MSG_Master *m_master; - - MessageKey m_lastProcessedNumber; - MessageKey m_firstMsgNumber; - MessageKey m_lastMsgNumber; - - struct MSG_NewsKnown m_knownArts; - msg_NewsArtSet *m_set; -}; - -class ListNewsGroupArticleKeysState : public ChangeListener -{ -public: - ListNewsGroupArticleKeysState(MSG_NewsHost *host, const char *groupName, MSG_Pane *pane); - ~ListNewsGroupArticleKeysState(); - int AddArticleKey(int32 key); - int FinishAddingArticleKeys(); -protected: - struct MSG_NewsKnown m_idsOnServer; - MSG_Pane *m_pane; - const char * m_groupName; - MSG_NewsHost *m_host; - NewsGroupDB *m_newsDB; - IDArray m_idsInDB; -#ifdef DEBUG_bienvenu - IDArray m_idsDeleted; -#endif - int32 m_dbIndex; - MessageKey m_highwater; -}; - - -#endif diff --git a/mozilla/lib/libmsg/m_binhex.c b/mozilla/lib/libmsg/m_binhex.c deleted file mode 100644 index 0337166e747..00000000000 --- a/mozilla/lib/libmsg/m_binhex.c +++ /dev/null @@ -1,1045 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* -* -* Mac_BinHex.c -* ------------ -* -* The decode and encode for BinHex 4.0 -* -* 09sep95 mym Created -* 18sep95 mym Added the functions to do encoding from -* the input stream instead of file. -*/ - -#include "msg.h" -#include "appledbl.h" -#include "m_binhex.h" -#include "ad_codes.h" -/* for XP_GetString() */ -#include "xpgetstr.h" - -#ifdef XP_MAC -#include <StandardFile.h> -#pragma warn_unusedarg off -#endif - -extern int MK_MSG_SAVE_DECODED_AS; - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; -extern int MK_MIME_ERROR_WRITING_FILE; -extern int MK_MIME_DATA_CORRUPTED; - -static char BinHexTable[64] = -{ - 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, - 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x30, 0x31, 0x32, - 0x33, 0x34, 0x35, 0x36, 0x38, 0x39, 0x40, 0x41, - 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, - 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x50, 0x51, 0x52, - 0x53, 0x54, 0x55, 0x56, 0x58, 0x59, 0x5a, 0x5b, - 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x68, - 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x70, 0x71, 0x72 -}; - -/* - * The encode for bin hex format. - */ - -PRIVATE int binhex_fill_data( - binhex_encode_object* p_bh_encode_obj, char c) -{ - int i; - - if (p_bh_encode_obj->pos_outbuff >= p_bh_encode_obj->s_outbuff) - { - p_bh_encode_obj->overflow[p_bh_encode_obj->s_overflow++] = c; - } - else - { - p_bh_encode_obj->outbuff[p_bh_encode_obj->pos_outbuff++] =c; - } - - if (++p_bh_encode_obj->line_length == 64) - { - /* - ** Incase the new line is 2 character. LRCR - */ - for(i = 1; i <= p_bh_encode_obj->newline[0]; i++) - binhex_fill_data(p_bh_encode_obj, p_bh_encode_obj->newline[i]); - - p_bh_encode_obj->line_length = 0; - } - - return p_bh_encode_obj->s_overflow ? errEOB : NOERR; -} - -/************************************************************************ - * EncodeDataChar - encode an 8-bit data char into a six-bit buffer - * returns the number of valid encoded characters generated - ************************************************************************/ -PRIVATE int binhex_encode_data_char( - binhex_encode_object *p_bh_encode_obj, - unsigned char c) -{ - int status = 0; - - switch (p_bh_encode_obj->state86++) - { - case 0: - status = binhex_fill_data(p_bh_encode_obj, - BinHexTable[(c>>2)&0x3f]); - p_bh_encode_obj->saved_bits = (c&0x3)<<4; - break; - case 1: - status = binhex_fill_data(p_bh_encode_obj, - BinHexTable[p_bh_encode_obj->saved_bits | ((c>>4)&0xf)]); - p_bh_encode_obj->saved_bits = (c&0xf)<<2; - break; - case 2: - status = binhex_fill_data(p_bh_encode_obj, - BinHexTable[p_bh_encode_obj->saved_bits | ((c>>6)&0x3)]); - if (status != NOERR) - break; - - status = binhex_fill_data(p_bh_encode_obj, - BinHexTable[c&0x3f]); - p_bh_encode_obj->state86 = 0; - break; - } - return status; -} - -#define BYTEMASK 0xff -#define BYTEBIT 0x100 -#define WORDMASK 0xffff -#define WORDBIT 0x10000 -#define CRCCONSTANT 0x1021 - -#define WOW { \ - c <<= 1; \ - if ((temp <<= 1) & WORDBIT) \ - temp = (temp & WORDMASK) ^ CRCCONSTANT; \ - temp ^= (c >> 8); \ - c &= BYTEMASK; \ - } - -PRIVATE void binhex_comp_q_crc_out( - binhex_encode_object *p_bh_encode_obj, uint16 c) -{ - register uint32 temp = p_bh_encode_obj->CRC; - - WOW; - WOW; - WOW; - WOW; - WOW; - WOW; - WOW; - WOW; - p_bh_encode_obj->CRC = temp; -} - -PRIVATE int binhex_encode_buff( - binhex_encode_object *p_bh_encode_obj, - unsigned char* data, - int size) -{ - int i, status = 0; - unsigned char dc; - - for (i = 0; i < size; i++) - { - dc = *data++; - - status = binhex_encode_data_char(p_bh_encode_obj, dc); - if ((char)dc == (char)0x90) - status = binhex_encode_data_char(p_bh_encode_obj, 0); - - if (status != NOERR) - break; - - binhex_comp_q_crc_out(p_bh_encode_obj, dc); /* and compute the CRC too */ - } - return status; -} - -PRIVATE int binhex_encode_end_a_part( - binhex_encode_object* p_bh_encode_obj) -{ - int status; - uint16 tempCrc; - - /* - ** write the CRC to the encode. - */ - binhex_comp_q_crc_out(p_bh_encode_obj, 0); - binhex_comp_q_crc_out(p_bh_encode_obj, 0); - tempCrc = (uint16)(p_bh_encode_obj->CRC & 0xffff); - tempCrc = htons(tempCrc); - status = binhex_encode_buff(p_bh_encode_obj, - (unsigned char*)&tempCrc, - sizeof(uint16)); - p_bh_encode_obj->CRC = 0; - return status; -} - -PRIVATE int binhex_encode_finishing( - binhex_encode_object *p_bh_encode_obj) -{ - int i, status = 0; - - if (p_bh_encode_obj->state86) - status = binhex_encode_buff(p_bh_encode_obj, (unsigned char*)&status, 1); - - /* - ** The close token. - */ - status = binhex_fill_data(p_bh_encode_obj, ':'); - - for (i=1; i <= p_bh_encode_obj->newline[0]; i++) - status = binhex_fill_data(p_bh_encode_obj, - p_bh_encode_obj->newline[i]); - - return errDone; -} - - -int binhex_encode_init(binhex_encode_object *p_bh_encode_obj) -{ - /* - ** init all the status. - */ - XP_MEMSET(p_bh_encode_obj, 0, sizeof(binhex_encode_object)); - - p_bh_encode_obj->line_length = 1; - - p_bh_encode_obj->newline[0] = 2; - p_bh_encode_obj->newline[1] = CR; - p_bh_encode_obj->newline[2] = LF; /* to confirm with rfc822, use CRLF */ - - return NOERR; -} - -int binhex_encode_next( - binhex_encode_object* p_bh_encode_obj, - char *in_buff, - int32 in_size, - char *out_buff, - int32 buff_size, - int32 *real_size) -{ - int status = 0; - /* - ** setup the buffer information. - */ - p_bh_encode_obj->outbuff = out_buff; - p_bh_encode_obj->s_outbuff = buff_size; - p_bh_encode_obj->pos_outbuff = 0; - - /* - ** copy over the left over from last time. - */ - if (p_bh_encode_obj->s_overflow) - { - XP_MEMCPY(p_bh_encode_obj->overflow, - p_bh_encode_obj->outbuff, - p_bh_encode_obj->s_overflow); - - p_bh_encode_obj->pos_outbuff = p_bh_encode_obj->s_overflow; - p_bh_encode_obj->s_overflow = 0; - } - - /* - ** Jump to the right state. - */ - if ( p_bh_encode_obj->state < BINHEX_STATE_DONE) - { - if (in_buff == NULL && in_size == 0) - { - /* this is our special token of end of a part, time to append crc codes */ - if (p_bh_encode_obj->state != BINHEX_STATE_FINISH) - status = binhex_encode_end_a_part(p_bh_encode_obj); - else - status = binhex_encode_finishing(p_bh_encode_obj); - - p_bh_encode_obj->state += 2; /* so we can jump to the next state.*/ - } - else - { - if (p_bh_encode_obj->state == BINHEX_STATE_START) - { - XP_STRCPY(p_bh_encode_obj->outbuff + p_bh_encode_obj->pos_outbuff, - "\r\n(This file must be converted with BinHex 4.0)\r\n\r\n:"); - p_bh_encode_obj->pos_outbuff += 52; - - p_bh_encode_obj->state = BINHEX_STATE_HEADER; - - XP_MEMCPY(p_bh_encode_obj->name, - in_buff, - in_size); - } - else if (p_bh_encode_obj->state == BINHEX_STATE_HEADER) - { - XP_MEMCPY(&(p_bh_encode_obj->head), - in_buff, - sizeof(binhex_header)); - - if (in_size == 20) /* in the platform that alignment is 4-bytes. */ - in_size = 18; - - p_bh_encode_obj->head.dlen = 0; /* we just can't trust the dlen from */ - /* apple double decoder told us. */ - /* do our own counting. */ - } - else if (p_bh_encode_obj->state == BINHEX_STATE_DFORK) - { - if (p_bh_encode_obj->head.dlen == 0) - { - p_bh_encode_obj->c[0] = in_buff[0]; /* save the first 2 bytes, in case */ - p_bh_encode_obj->c[1] = in_buff[1]; /* head and data share 1 code block */ - } - p_bh_encode_obj->head.dlen += in_size; - } - - status = binhex_encode_buff(p_bh_encode_obj, - (unsigned char *)in_buff, - in_size); - } - } - *real_size = p_bh_encode_obj->pos_outbuff; - return status; -} - -/* -** Only generate the header part of the encoding, -** so we can fix up the -*/ -int binhex_reencode_head( - binhex_encode_object *p_bh_encode_obj, - char* outbuff, - int32 buff_size, - int32* real_size) -{ - int32 size, dlen; - int status; - char buff[64]; - - p_bh_encode_obj->state = 0; - p_bh_encode_obj->state86 = 0; - p_bh_encode_obj->CRC = 0; - p_bh_encode_obj->line_length= 1; - p_bh_encode_obj->saved_bits = 0; - p_bh_encode_obj->s_overflow = 0 ; - - status = binhex_encode_next( - p_bh_encode_obj, - p_bh_encode_obj->name, - p_bh_encode_obj->name[0]+2, /* in_size */ - outbuff, - buff_size, - real_size); - if (status != NOERR) - return status; - - size = *real_size; - - /* now we should have the right data length in the head structure, but don't */ - /* forget convert it back to the net byte order (i.e., Motolora) before write it */ - /* */ - /* Note: since we don't change the size of rlen, so don't need to worry about it */ - - p_bh_encode_obj->head.dlen = htonl(dlen = p_bh_encode_obj->head.dlen); - - /* make a copy before do the encoding, -- it may modify the head!!!. */ - XP_MEMCPY(buff, (char*)&p_bh_encode_obj->head, - sizeof(binhex_header)); - if (18 < sizeof(binhex_header)) - { - /* we get an alignment problem here. */ - XP_MEMCPY(buff + 10, buff + 12, 8); - } - - status = binhex_encode_next( - p_bh_encode_obj, - (char*)buff, - 18, /* sizeof(binhex_header),*/ - outbuff + size, - buff_size - size, - real_size); - if (status != NOERR) - return status; - - size += *real_size; - - status = binhex_encode_next( /* for CRC */ - p_bh_encode_obj, - NULL, - 0, /* in_size */ - outbuff + size, - buff_size - size, - real_size); - - if (status != NOERR) - return status; - - size += *real_size; - - if (p_bh_encode_obj->state86 != 0) - { - /* - ** Make sure we don't destroy the orignal valid coding. - ** - ** (Keep in mind that 3 characters share 4 coding chars, - ** so it is possible for the head and data stream share one 4 code group. - ** - ** How about only one or zero character in the data fork? - ** ---- just rerun the encoding, not a big deal. - */ - if (dlen <= 1) - { - /* why just rerun the encoding once more. */ - status = binhex_encode_next( - p_bh_encode_obj, - p_bh_encode_obj->c, - dlen, - outbuff + size, - buff_size - size, - real_size); - if (status != NOERR) - return status; - - size += *real_size; /* encode the data fork */ - - status = binhex_encode_next( - p_bh_encode_obj, - NULL, - 0, - outbuff + size, - buff_size - size, - real_size); - if (status != NOERR) - return status; - - size += *real_size; /* for the end up data fork */ - - status = binhex_encode_next( - p_bh_encode_obj, - NULL, - 0, - outbuff + size, - buff_size - size, - real_size); /* for the end up encoding*/ - } - else - { - status = binhex_encode_next( - p_bh_encode_obj, - p_bh_encode_obj->c, - 3 - p_bh_encode_obj->state86, /* in_size */ - outbuff + size, - buff_size - size, - real_size); - } - size += *real_size; - } - *real_size = size; - - return status; -} - -int binhex_encode_end ( - binhex_encode_object *p_bh_encode_obj, - XP_Bool is_aborting) -{ - return NOERR; -} - - -/* -** The decode's. -*/ -static char binhex_decode[256] = -{ - -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, - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, - 13, 14, 15, 16, 17, 18, 19, -1, 20, 21, -1, -1, -1, -1, -1, -1, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, -1, - 37, 38, 39, 40, 41, 42, 43, -1, 44, 45, 46, 47, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, -1, 55, 56, 57, 58, 59, 60, -1, -1, - 61, 62, 63, -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, -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, -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, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -}; - -#define BHEXVAL(c) (binhex_decode[(unsigned char) c]) - -/* -** the decode for bin hex format. -*/ -int binhex_decode_init ( - binhex_decode_object *p_bh_decode_obj, - MWContext *context) -{ - XP_MEMSET(p_bh_decode_obj, 0, sizeof(binhex_decode_object)); - - p_bh_decode_obj->octetin = 26; - p_bh_decode_obj->donepos = 3; - p_bh_decode_obj->context = context; - - return NOERR; -} - -static void -simple_copy(MWContext* context, char* newFile, void* closure) -{ - XP_STRCPY((char *)closure, newFile); -} - -PRIVATE void binhex_process( - binhex_decode_object *p_bh_decode_obj) -{ - int32 status; - uint16 tmpcrc, cval; - unsigned char ctmp, c = p_bh_decode_obj->rlebuf; - - /* do CRC */ - ctmp = p_bh_decode_obj->inCRC ? c : 0; - cval = p_bh_decode_obj->CRC & 0xf000; - tmpcrc = ((uint16) (p_bh_decode_obj->CRC << 4) | - (ctmp >> 4)) - ^ (cval | (cval >> 7) | - (cval >> 12)); - cval = tmpcrc & 0xf000; - p_bh_decode_obj->CRC = ((uint16) (tmpcrc << 4) | - (ctmp & 0x0f)) - ^ (cval | (cval >> 7) | - (cval >> 12)); - - /* handle state */ - switch (p_bh_decode_obj->state) - { - case BINHEX_STATE_START: - p_bh_decode_obj->state = BINHEX_STATE_FNAME; - p_bh_decode_obj->count = 1; -#ifndef XP_MAC - p_bh_decode_obj->name = XP_ALLOC(64); -#endif - *(p_bh_decode_obj->name) = (c & 63); - break; - - case BINHEX_STATE_FNAME: - p_bh_decode_obj->name[p_bh_decode_obj->count] = c; - - if (p_bh_decode_obj->count++ > *(p_bh_decode_obj->name)) - { -#if 0 - char* p; - /* convert it to the c-string too. */ - c = *(p_bh_decode_obj->name); - p = p_bh_decode_obj->name; - - while (c--) - { - *p = *(p+1); p++; - } - - *p = '\0'; -#endif - p_bh_decode_obj->state = BINHEX_STATE_HEADER; - p_bh_decode_obj->count = 0; - } - break; - - case BINHEX_STATE_HEADER: - ((char *)&p_bh_decode_obj->head)[p_bh_decode_obj->count] = c; - if (++p_bh_decode_obj->count == 18) - { -#ifndef XP_MAC - if (sizeof(binhex_header) != 18) /* fix the alignment problem in some OS */ - { - char *p = (char *)&p_bh_decode_obj->head; - p += 19; - for (c = 0; c < 8; c++) - { - *p = *(p-2); p--; - } - } -#endif - p_bh_decode_obj->state = BINHEX_STATE_HCRC; - p_bh_decode_obj->inCRC = 1; - p_bh_decode_obj->count = 0; - } - break; - - case BINHEX_STATE_DFORK: - case BINHEX_STATE_RFORK: - p_bh_decode_obj->outbuff[p_bh_decode_obj->pos_outbuff++] = c; - if (-- p_bh_decode_obj->count == 0) - { -#ifdef XP_MAC - long howMuch = p_bh_decode_obj->pos_outbuff; - status = FSWrite(p_bh_decode_obj->fileId, - &howMuch, - p_bh_decode_obj->outbuff); - FSClose(p_bh_decode_obj->fileId); -#else - /* only output data fork in the non-mac system. */ - if (p_bh_decode_obj->state == BINHEX_STATE_DFORK) - { - status = XP_FileWrite(p_bh_decode_obj->outbuff, - p_bh_decode_obj->pos_outbuff, - p_bh_decode_obj->fileId) - == p_bh_decode_obj->pos_outbuff ? NOERR : errFileWrite; - - XP_FileClose(p_bh_decode_obj->fileId); - } - else - { - status = NOERR; /* do nothing for resource fork. */ - } -#endif - p_bh_decode_obj->pos_outbuff = 0; - - if (status != NOERR) - p_bh_decode_obj->state = status; - else - { - p_bh_decode_obj->state ++; - p_bh_decode_obj->fileId = 0; - } - p_bh_decode_obj->inCRC = 1; - } - else if (p_bh_decode_obj->pos_outbuff >= MAX_BUFF_SIZE) - { -#ifdef XP_MAC - long howMuch = p_bh_decode_obj->pos_outbuff; - status = FSWrite(p_bh_decode_obj->fileId, - &howMuch, - p_bh_decode_obj->outbuff); -#else - if (p_bh_decode_obj->state == BINHEX_STATE_DFORK) - { - status = XP_FileWrite(p_bh_decode_obj->outbuff, - p_bh_decode_obj->pos_outbuff, - p_bh_decode_obj->fileId) - == p_bh_decode_obj->pos_outbuff ? NOERR : errFileWrite; - } - else - { - status = NOERR; /* don't care about the resource fork. */ - } -#endif - if (status != NOERR) - p_bh_decode_obj->state = status; - - p_bh_decode_obj->pos_outbuff = 0; - } - break; - - case BINHEX_STATE_HCRC: - case BINHEX_STATE_DCRC: - case BINHEX_STATE_RCRC: - if (!p_bh_decode_obj->count++) - { - p_bh_decode_obj->fileCRC = (unsigned short) c << 8; - } - else - { - if ((p_bh_decode_obj->fileCRC | c) != p_bh_decode_obj->CRC) - { - if (p_bh_decode_obj->state > BINHEX_STATE_HCRC) - { -#ifdef XP_MAC - HDelete(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name); -#else - XP_FileRemove(p_bh_decode_obj->name, xpURL); -#endif - } - p_bh_decode_obj->state = errDecoding; - break; - } - - /* - ** passed the CRC check!!! - */ - p_bh_decode_obj->CRC = 0; - if (++ p_bh_decode_obj->state == BINHEX_STATE_FINISH) - { -#ifdef XP_MAC - FInfo finfo; - - /* set back the file information.before we declare done ! */ - finfo.fdType = p_bh_decode_obj->head.type; - finfo.fdCreator = p_bh_decode_obj->head.creator; - finfo.fdFlags = p_bh_decode_obj->head.flags & 0xf800; - - HSetFInfo(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char *)p_bh_decode_obj->name, - &finfo); -#endif - /* now We are done with everything. */ - p_bh_decode_obj->state++; - break; - } - - if (p_bh_decode_obj->state == BINHEX_STATE_DFORK) - { -#ifdef XP_MAC - StandardFileReply reply; - if( !p_bh_decode_obj->mSpec ) - { - StandardPutFile("\pSave decoded file as:", - (unsigned char *)p_bh_decode_obj->name, - &reply); - - if (!reply.sfGood) - { - p_bh_decode_obj->state = errUsrCancel; - break; - } - } - else - { - reply.sfFile.vRefNum = p_bh_decode_obj->mSpec->vRefNum; - reply.sfFile.parID = p_bh_decode_obj->mSpec->parID; - XP_MEMCPY(&reply.sfFile.name, p_bh_decode_obj->mSpec->name , 63 ); - } - - XP_MEMCPY(p_bh_decode_obj->name, - reply.sfFile.name, - *(reply.sfFile.name)+1); /* save the new file name. */ - - p_bh_decode_obj->vRefNum = reply.sfFile.vRefNum; - p_bh_decode_obj->parID = reply.sfFile.parID; - - HDelete(reply.sfFile.vRefNum, - reply.sfFile.parID, - reply.sfFile.name); - - status = HCreate(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - reply.sfFile.name, - p_bh_decode_obj->head.creator, - p_bh_decode_obj->head.type); -#else /* non-mac OS case */ - char* filename; - - filename = XP_ALLOC(1024); - if (filename == NULL || - FE_PromptForFileName(p_bh_decode_obj->context, - XP_GetString(MK_MSG_SAVE_DECODED_AS), - 0, - FALSE, - FALSE, - simple_copy, - filename) == -1) - { - FREEIF(filename); - p_bh_decode_obj->state = errUsrCancel; - break; - } - - FREEIF(p_bh_decode_obj->name); - p_bh_decode_obj->name = XP_STRDUP(filename); - p_bh_decode_obj->fileId - = XP_FileOpen(filename, - xpURL, - XP_FILE_TRUNCATE_BIN); - if (p_bh_decode_obj->fileId == NULL) - status = errFileOpen; - else - status = NOERR; - - XP_FREE(filename); - -#endif - if (status != NOERR) - p_bh_decode_obj->state = status; - - p_bh_decode_obj->count - = ntohl(p_bh_decode_obj->head.dlen); - } - else - { - p_bh_decode_obj->count - = ntohl(p_bh_decode_obj->head.rlen); /* it should in host byte order */ - } - - if (p_bh_decode_obj->count) - { - p_bh_decode_obj->inCRC = 0; -#ifdef XP_MAC - if (p_bh_decode_obj->state == BINHEX_STATE_DFORK) - status = HOpen(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name, - fsWrPerm, - &(p_bh_decode_obj->fileId)); - else - status = HOpenRF(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name, - fsWrPerm, - &(p_bh_decode_obj->fileId)); - if (status != NOERR) - { - p_bh_decode_obj->state = errFileOpen; - HDelete(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name); - break; - } -#else - /* for None Mac OS -- nothing is required, file already open. */ - -#endif - } - else - { - /* nothing inside, so skip to the next state. */ - p_bh_decode_obj->state ++; - } - } - break; - } - - return; -} - -static int get_next_char(binhex_decode_object *p_bh_decode_obj) -{ - char c = 0; - - while (p_bh_decode_obj->pos_inbuff < p_bh_decode_obj->s_inbuff) - { - c = p_bh_decode_obj->inbuff[p_bh_decode_obj->pos_inbuff++]; - if (c != LF && c != CR) - break; - } - return (c == LF || c == CR) ? 0 : (int) c; -} - -int binhex_decode_next ( - binhex_decode_object *p_bh_decode_obj, - const char *in_buff, - int32 buff_size) -{ - int found_start; - int octetpos, c = 0; - uint32 val; - - /* - ** reset the buff first. - */ - p_bh_decode_obj->inbuff = (char*)in_buff; - p_bh_decode_obj->s_inbuff = buff_size; - p_bh_decode_obj->pos_inbuff = 0; - - /* - ** if it is the first time, seek to the right start place. - */ - if (p_bh_decode_obj->state == BINHEX_STATE_START) - { - found_start = FALSE; - /* - ** go through the line, until we get a ':' - */ - while (p_bh_decode_obj->pos_inbuff < p_bh_decode_obj->s_inbuff) - { - c = p_bh_decode_obj->inbuff[p_bh_decode_obj->pos_inbuff++]; - while (c == CR || c == LF) - { - if (p_bh_decode_obj->pos_inbuff >= p_bh_decode_obj->s_inbuff) - break; - - c = p_bh_decode_obj->inbuff[p_bh_decode_obj->pos_inbuff++]; - if (c == ':') - { - found_start = TRUE; - break; - } - } - if (found_start) break; /* we got the start point. */ - } - - if (p_bh_decode_obj->pos_inbuff >= p_bh_decode_obj->s_inbuff) - return NOERR; /* we meet buff end before we get the */ - /* start point, wait till next fills. */ - - if (c != ':') - return errDecoding; /* can't find the start character. */ - } - - /* - ** run - through the in-stream now. - */ - while (p_bh_decode_obj->state >= 0 && - p_bh_decode_obj->state < BINHEX_STATE_DONE) - { - /* fill in octetbuf */ - do - { - if (p_bh_decode_obj->pos_inbuff >= p_bh_decode_obj->s_inbuff) - return NOERR; /* end of buff, go on for the nxet calls. */ - - c = get_next_char(p_bh_decode_obj); - if (c == 0) - return NOERR; - - if ((val = BHEXVAL(c)) == -1) - { - /* - ** we incount an invalid character. - */ - if (c) - { - /* - ** rolling back. - */ - p_bh_decode_obj->donepos --; - if (p_bh_decode_obj->octetin >= 14) p_bh_decode_obj->donepos--; - if (p_bh_decode_obj->octetin >= 20) p_bh_decode_obj->donepos--; - } - break; - } - p_bh_decode_obj->octetbuf.val |= val << p_bh_decode_obj->octetin; - } - while ((p_bh_decode_obj->octetin -= 6) > 2); - - /* handle decoded characters -- run length encoding (rle) detection */ - -#ifndef XP_MAC - p_bh_decode_obj->octetbuf.val - = ntohl(p_bh_decode_obj->octetbuf.val); -#endif - - for (octetpos = 0; octetpos < p_bh_decode_obj->donepos; ++octetpos) - { - c = p_bh_decode_obj->octetbuf.c[octetpos]; - - if (c == 0x90 && !p_bh_decode_obj->marker++) - continue; - - if (p_bh_decode_obj->marker) - { - if (c == 0) - { - p_bh_decode_obj->rlebuf = 0x90; - binhex_process(p_bh_decode_obj); - } - else - { - while (--c > 0) /* we are in the run lenght mode */ - { - binhex_process(p_bh_decode_obj); - } - } - p_bh_decode_obj->marker = 0; - } - else - { - p_bh_decode_obj->rlebuf = (unsigned char) c; - binhex_process(p_bh_decode_obj); - } - - - if (p_bh_decode_obj->state >= BINHEX_STATE_FINISH) - break; - } - - /* prepare for next 3 characters. */ - if (p_bh_decode_obj->donepos < 3 && p_bh_decode_obj->state < BINHEX_STATE_FINISH) - p_bh_decode_obj->state = errDecoding; - - p_bh_decode_obj->octetin = 26; - p_bh_decode_obj->octetbuf.val = 0; - } - - /* - ** Error clean-ups - */ - if (p_bh_decode_obj->state < 0 && p_bh_decode_obj->fileId) - { -#ifdef XP_MAC - FSClose(p_bh_decode_obj->fileId); - p_bh_decode_obj->fileId = 0; - HDelete(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name); -#else - XP_FileClose(p_bh_decode_obj->fileId); - p_bh_decode_obj->fileId = 0; - XP_FileRemove(p_bh_decode_obj->name, xpURL); -#endif - } - - - return p_bh_decode_obj->state < 0 ? (p_bh_decode_obj->state) : - p_bh_decode_obj->state >= BINHEX_STATE_FINISH ? errDone : NOERR; -} - -int binhex_decode_end ( - binhex_decode_object *p_bh_decode_obj, - XP_Bool is_aborting) -{ -#ifdef XP_MAC - if (p_bh_decode_obj->fileId) - { - FSClose(p_bh_decode_obj->fileId); - p_bh_decode_obj->fileId = 0; - - if (is_aborting) - { - HDelete(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name); - } - } - -#else - - if (p_bh_decode_obj->fileId) - { - XP_FileClose(p_bh_decode_obj->fileId); - p_bh_decode_obj->fileId = NULL; - - if (is_aborting) - XP_FileRemove(p_bh_decode_obj->name, xpURL); - } - FREEIF(p_bh_decode_obj->name); -#endif - - return NOERR; -} - - diff --git a/mozilla/lib/libmsg/m_binhex.h b/mozilla/lib/libmsg/m_binhex.h deleted file mode 100644 index 7872a746f9c..00000000000 --- a/mozilla/lib/libmsg/m_binhex.h +++ /dev/null @@ -1,188 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* -* The head file for Bin Hex 4.0 encode/decode -* ------------------------------------------- -* -* 10sep95 mym created -*/ - -#ifndef binhex_h -#define binhex_h - -#ifdef XP_MAC -#if PRAGMA_ALIGN_SUPPORTED -#pragma options align=mac68k -#endif -#endif /* XP_MAC */ - -#define BINHEX_STATE_START 0 -#define BINHEX_STATE_FNAME 1 -#define BINHEX_STATE_HEADER 2 -#define BINHEX_STATE_HCRC 3 -#define BINHEX_STATE_DFORK 4 -#define BINHEX_STATE_DCRC 5 -#define BINHEX_STATE_RFORK 6 -#define BINHEX_STATE_RCRC 7 -#define BINHEX_STATE_FINISH 8 -#define BINHEX_STATE_DONE 9 -/* #define BINHEX_STATE_ERROR 10 */ - -/* -** The Definitions for the binhex encoder -*/ -typedef struct _binhex_header -{ - uint32 type, creator; - uint16 flags; - int32 dlen, rlen ; - -} binhex_header; - -typedef struct _binhex_encode_object -{ - int state; /* progress state. */ - - int state86; /* binhex encode state. */ - unsigned long CRC; /* accumulated CRC */ - int line_length; /* the line length count */ - char saved_bits; - - int s_inbuff; /* the inbuff size */ - int pos_inbuff; /* the inbuff position */ - char* inbuff; /* the inbuff pool */ - - int s_outbuff; /* the outbuff size */ - int pos_outbuff; /* the outbuff position */ - char* outbuff; /* the outbuf pool */ - - int s_overflow; /* the real size of overflow */ - char overflow[32]; /* a small overflow buffer */ - - char c[2]; - char newline[4]; /* the new line char seq. */ - - /* -- for last fix up. -- */ - - char name[64]; - binhex_header head; - -} binhex_encode_object; - -/* -** The defination for the binhex decoder. -** NOTE: This define is for Mac only. -*/ - -typedef union -{ - unsigned char c[4]; - uint32 val; - -} longbuf; - -#define MAX_BUFF_SIZE 256 - -typedef struct _binhex_decode_object -{ - int state; /* current state */ - uint16 CRC; /* cumulative CRC */ - uint16 fileCRC; /* CRC value from file */ - - longbuf octetbuf; /* buffer for decoded 6-bit values */ - int16 octetin; /* current input position in octetbuf */ - int16 donepos; /* ending position in octetbuf */ - int16 inCRC; /* flag set when reading a CRC */ - - int32 count; /* generic counter */ - int16 marker; /* flag indicating maker */ - unsigned char rlebuf; /* buffer for last run length encoding value */ - - binhex_header head; /* buffer for header */ - -#ifdef XP_MAC - FSSpec* mSpec; - char name[64]; /* fsspec for the output file */ - int16 vRefNum; - int32 parID ; - int16 fileId; /* the refnum of the output file */ -#else - char *name; /* file name for the output file in non-mac OS */ - XP_File fileId; /* the file if for the outpur file. non-mac OS */ -#endif - - MWContext* context; /* context for call back function. */ - - int32 s_inbuff; /* the valid size of the inbuff */ - int32 pos_inbuff; /* the index of the inbuff. */ - char* inbuff; /* the inbuff pointer. */ - int32 pos_outbuff; /* the position of the out buff. */ - char outbuff[MAX_BUFF_SIZE]; - -} binhex_decode_object; - -XP_BEGIN_PROTOS - -/* -** The binhex file encode prototypes. -*/ -int binhex_encode_init(binhex_encode_object *p_bh_encode_obj); - -int binhex_encode_next(binhex_encode_object *p_bh_encode_obj, - char *in_buff, - int32 in_size, - char *out_buff, - int32 buff_size, - int32 *real_size); - -int binhex_encode_end (binhex_encode_object *p_bh_encode_obj, - XP_Bool is_aborting); - -int binhex_reencode_head( - binhex_encode_object *p_bh_encode_obj, - char* outbuff, - int32 buff_size, - int32* real_size); - - -/* -** The binhex stream decode prototypes. -*/ - -int binhex_decode_init(binhex_decode_object *p_bh_decode_env, - MWContext *context); - -int binhex_decode_next(binhex_decode_object *p_bh_decode_env, - const char *in_buff, - int32 buff_size); -int binhex_decode_end (binhex_decode_object *p_bh_decode_env, - XP_Bool is_aborting); - -XP_END_PROTOS - -#ifdef XP_MAC -#if PRAGMA_ALIGN_SUPPORTED -#pragma options align=reset -#endif -#endif /* XP_MAC */ - -#endif /* binhex_h */ diff --git a/mozilla/lib/libmsg/m_cvstrm.h b/mozilla/lib/libmsg/m_cvstrm.h deleted file mode 100644 index 8980b797dc0..00000000000 --- a/mozilla/lib/libmsg/m_cvstrm.h +++ /dev/null @@ -1,96 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* -** -** Mac_Convert_Stream.h -** -------------------- -** -** The header file for the constructing functions of apple file -** encode/decode stream. -** -** 27sep95 mym created. -*/ - -#ifndef M_CVStrm_h -#define M_CVStrm_h - -XP_BEGIN_PROTOS - -PUBLIC NET_StreamClass * -fe_MakeBinHexEncodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - char* dst_filename); - -PUBLIC NET_StreamClass * -fe_MakeBinHexDecodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id ); - -PUBLIC NET_StreamClass * -fe_MakeAppleDoubleDecodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - XP_Bool write_as_binhex, - char *dst_filename); - -PUBLIC NET_StreamClass * -fe_MakeAppleSingleDecodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - XP_Bool write_as_binhex, - char *dst_filename); - -#ifdef XP_MAC - -PUBLIC NET_StreamClass * -fe_MakeAppleDoubleEncodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - char* src_filename, - char* dst_filename, - char* separator); - -XP_Bool isMacFile(char* filename); - -#endif - -PUBLIC NET_StreamClass * -fe_MakeAppleDoubleDecodeStream_1 (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id); - -PUBLIC NET_StreamClass * -fe_MakeAppleSingleDecodeStream_1 (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id); - -XP_END_PROTOS - -#endif diff --git a/mozilla/lib/libmsg/macbuild/MsgLib.mcp b/mozilla/lib/libmsg/macbuild/MsgLib.mcp deleted file mode 100644 index 5ff556a5c9d..00000000000 Binary files a/mozilla/lib/libmsg/macbuild/MsgLib.mcp and /dev/null differ diff --git a/mozilla/lib/libmsg/macbuild/MsgLib.pch b/mozilla/lib/libmsg/macbuild/MsgLib.pch deleted file mode 100644 index 11e9a1e59d9..00000000000 --- a/mozilla/lib/libmsg/macbuild/MsgLib.pch +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// NOTE: -// -// You will typically not need to edit this file. If you want to add -// a file to the C/C++ precompiled header, do it in NeoLibHeaders.c -// -// If you're doing a non-debug build, use the non-debug project which -// will has pch files that generate non-debug dumps. - -#include "MacPrefix.h" - -#ifdef powerc - #pragma precompile_target "MsgLibHeadersPPC" -#else - #pragma precompile_target "MsgLibHeaders68K" -#endif - -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ -// ¥ Include the list of headers. -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ - -#include "MsgLib_Headers.h" diff --git a/mozilla/lib/libmsg/macbuild/MsgLib.pch++ b/mozilla/lib/libmsg/macbuild/MsgLib.pch++ deleted file mode 100644 index a23e33c43d1..00000000000 --- a/mozilla/lib/libmsg/macbuild/MsgLib.pch++ +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// NOTE: -// -// You will typically not need to edit this file. If you want to add -// a file to the C/C++ precompiled header, do it in NeoLibHeaders.c -// -// If you're doing a non-debug build, use the non-debug project which -// will has pch files that generate non-debug dumps. - -#include "MacPrefix.h" - -#ifdef powerc - #pragma precompile_target "MsgLibHeadersPPC++" -#else - #pragma precompile_target "MsgLibHeaders68K++" -#endif - -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ -// ¥ Include the list of headers. -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ - -#include "MsgLib_Headers.h" diff --git a/mozilla/lib/libmsg/macbuild/MsgLibDebug.pch b/mozilla/lib/libmsg/macbuild/MsgLibDebug.pch deleted file mode 100644 index ff5cb08d299..00000000000 --- a/mozilla/lib/libmsg/macbuild/MsgLibDebug.pch +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// NOTE: -// -// You will typically not need to edit this file. If you want to add -// a file to the C/C++ precompiled header, do it in NeoLibHeaders.c -// -// If you're doing a non-debug build, use the non-debug project which -// will has pch files that generate non-debug dumps. - -#include "MacPrefix_debug.h" - -#ifdef powerc - #pragma precompile_target "MsgLibDebugHeadersPPC" -#else - #pragma precompile_target "MsgLibDebugHeaders68K" -#endif - -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ -// ¥ Include the list of headers. -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ - -#include "MsgLib_Headers.h" \ No newline at end of file diff --git a/mozilla/lib/libmsg/macbuild/MsgLibDebug.pch++ b/mozilla/lib/libmsg/macbuild/MsgLibDebug.pch++ deleted file mode 100644 index e561ff77c66..00000000000 --- a/mozilla/lib/libmsg/macbuild/MsgLibDebug.pch++ +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// NOTE: -// -// You will typically not need to edit this file. If you want to add -// a file to the C/C++ precompiled header, do it in NeoLibHeaders.c -// -// If you're doing a non-debug build, use the non-debug project which -// will has pch files that generate non-debug dumps. - -#include "MacPrefix_debug.h" - -#ifdef powerc - #pragma precompile_target "MsgLibDebugHeadersPPC++" -#else - #pragma precompile_target "MsgLibDebugHeaders68K++" -#endif - -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ -// ¥ Include the list of headers. -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ - -#include "MsgLib_Headers.h" \ No newline at end of file diff --git a/mozilla/lib/libmsg/macbuild/MsgLib_DebugPrefix.h b/mozilla/lib/libmsg/macbuild/MsgLib_DebugPrefix.h deleted file mode 100644 index 8e3f064a91c..00000000000 --- a/mozilla/lib/libmsg/macbuild/MsgLib_DebugPrefix.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ -// -// NOTE: -// You typically won't need to change anything in this file. -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ - -#include "IDE_Options.h" - - -#ifdef __powerc - #ifdef __cplusplus - #include "MsgLibDebugHeadersPPC++" - #else - #include "MsgLibDebugHeadersPPC" - #endif -#else - #ifdef __cplusplus - #include "MsgLibDebugHeaders68K++" - #else - #include "MsgLibDebugHeaders68K" - #endif -#endif - diff --git a/mozilla/lib/libmsg/macbuild/MsgLib_Headers.h b/mozilla/lib/libmsg/macbuild/MsgLib_Headers.h deleted file mode 100644 index 670710075cb..00000000000 --- a/mozilla/lib/libmsg/macbuild/MsgLib_Headers.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ -// Common headers for all the MsgLib files. -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ - -#ifndef __MIXEDMODE__ -#include <MixedMode.h> -#endif - -/* ======== misc ============ */ - -#include "prefapi.h" - -/* ======== libnet ============ */ - -#include "mkutils.h" /* must be placed before msg.h, because both define FREEIF macro. */ - -/* ======== libmsg ============ */ - -#include "msg.h" /* includes msgcom.h */ - -/* ======== libaddr ============ */ - -#ifdef __cplusplus -#include "addrbook.h" -#endif - diff --git a/mozilla/lib/libmsg/macbuild/MsgLib_Prefix.h b/mozilla/lib/libmsg/macbuild/MsgLib_Prefix.h deleted file mode 100644 index e136ef1f7fd..00000000000 --- a/mozilla/lib/libmsg/macbuild/MsgLib_Prefix.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ -// NOTE: -// You typically won't need to change anything in this file. -// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ - -#include "IDE_Options.h" - - -#ifdef __powerc - #ifdef __cplusplus - #include "MsgLibHeadersPPC++" - #else - #include "MsgLibHeadersPPC" - #endif -#else - #ifdef __cplusplus - #include "MsgLibHeaders68K++" - #else - #include "MsgLibHeaders68K" - #endif -#endif - diff --git a/mozilla/lib/libmsg/maildb.cpp b/mozilla/lib/libmsg/maildb.cpp deleted file mode 100644 index 6f744dd3aae..00000000000 --- a/mozilla/lib/libmsg/maildb.cpp +++ /dev/null @@ -1,678 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp.h" - -#include "maildb.h" -#include "dberror.h" - -#include "msgdbvw.h" -#include "mailhdr.h" -#include "thrhead.h" -#include "grpinfo.h" -#include "imap.h" -#include "msgmast.h" -#include "msgprefs.h" -#include "msgimap.h" -#include "imapoff.h" -#include "prefapi.h" -#include "msgdbapi.h" - -extern "C" -{ - extern int MK_MSG_CANT_OPEN; -} - -MailDB::MailDB() -{ - m_folderName = NULL; - m_reparse = FALSE; - m_folderFile = NULL; - m_master = NULL; -} - -MailDB::~MailDB() -{ - FREEIF(m_folderName); -} - -MsgERR MailDB::OnNewPath (const char *newPath) -{ - FREEIF(m_folderName); - m_folderName = XP_STRDUP (newPath); - return eSUCCESS; -} - -// static method. This routine works in very different ways depending on the passed flags. -// If create is true, we will create a database if none was there. -// If upgrading is TRUE, the caller is upgrading and does not care that the database is -// gone, or out of sync with the mail folder. The caller will upgrade in the background -// and just wants a db open to upgrade into. -MsgERR MailDB::Open(const char * folderName, XP_Bool create, - MailDB** pMessageDB, - XP_Bool upgrading /*=FALSE*/) -{ - MailDB *mailDB; - int statResult; - XP_StatStruct st; - DBFolderInfo *folderInfo = NULL; - XP_Bool newFile = FALSE; - char *dbName; - - *pMessageDB = NULL; - - if (m_cacheEnabled) - { - dbName = WH_FileName(folderName, xpMailFolderSummary); - if (!dbName) return eOUT_OF_MEMORY; - mailDB = (MailDB *) FindInCache(dbName); - XP_FREE(dbName); - if (mailDB) - { - *pMessageDB = mailDB; - // make this behave like the non-cache case. Is global dB set? DMB TODO - ++(mailDB->m_useCount); - return(eSUCCESS); - } - } - // if the old summary doesn't exist, we're creating a new one. - if (XP_Stat (folderName, &st, xpMailFolderSummary) && create) - newFile = TRUE; - - - mailDB = new MailDB; - - if (!mailDB) - return(eOUT_OF_MEMORY); - - mailDB->m_folderName = XP_STRDUP(folderName); - - dbName = WH_FileName(folderName, xpMailFolderSummary); - if (!dbName) return eOUT_OF_MEMORY; - // stat file before we open the db, because if we've latered - // any messages, handling latered will change time stamp on - // folder file. - statResult = XP_Stat (folderName, &st, xpMailFolder); - - MsgERR err = mailDB->MessageDBOpen(dbName, create); - XP_FREE(dbName); - - if (err == eSUCCESS) - { - folderInfo = mailDB->GetDBFolderInfo(); - if (folderInfo == NULL) - { - err = eOldSummaryFile; - } - else - { - // if opening existing file, make sure summary file is up to date. - // if caller is upgrading, don't return eOldSummaryFile so the caller - // can pull out the transfer info for the new db. - if (!newFile && !statResult && !upgrading) - { - if (folderInfo->m_folderSize != st.st_size || - folderInfo->m_folderDate != st.st_mtime || folderInfo->GetNumNewMessages() < 0) - err = eOldSummaryFile; - } - // compare current version of db versus filed out version info. - if (mailDB->GetCurVersion() != folderInfo->GetDiskVersion()) - err = eOldSummaryFile; - } - if (err != eSUCCESS) - { - mailDB->Close(); - mailDB = NULL; - } - } - if (err != eSUCCESS || newFile) - { - // if we couldn't open file, or we have a blank one, and we're supposed - // to upgrade, updgrade it. - if (newFile && !upgrading) // caller is upgrading, and we have empty summary file, - { // leave db around and open so caller can upgrade it. - err = eNoSummaryFile; - } - else if (err != eSUCCESS) - { - *pMessageDB = NULL; - delete mailDB; - } - } - if (err == eSUCCESS || err == eNoSummaryFile) - { - *pMessageDB = mailDB; - if (m_cacheEnabled) - GetDBCache()->Add(mailDB); - if (err == eSUCCESS) - mailDB->HandleLatered(); - - } - return(err); -} - -// This routine opens an invalid db, pulls out the information worth saving, (like sort order), -// blows away the invalid db, creates a new empty one, and restores the information worth saving. -/* static */ -MsgERR MailDB::CloneInvalidDBInfoIntoNewDB(const char * pathname, MailDB** pMailDB) -{ - XP_StatStruct folderst; - MailDB *mailDB; - TDBFolderInfoTransfer *originalInfo = NULL; - - int status = MailDB::Open(pathname, TRUE, &mailDB, TRUE); - - if (status == eSUCCESS && mailDB != NULL) - { - originalInfo = new TDBFolderInfoTransfer(*mailDB->GetDBFolderInfo()); - mailDB->Close(); - } - - XP_Trace("blowing away old summary file\n"); - if (!XP_Stat(pathname, &folderst, xpMailFolderSummary) && XP_FileRemove(pathname, xpMailFolderSummary) != 0) - { - status = MK_MSG_CANT_OPEN; - } - else - { - status = MailDB::Open(pathname, TRUE, &mailDB, TRUE); - if (originalInfo) - { - if (status == eSUCCESS && mailDB != NULL) - originalInfo->TransferFolderInfo(*mailDB->GetDBFolderInfo()); - delete originalInfo; - } - } - - *pMailDB = mailDB; - return status; -} - -MSG_FolderInfo *MailDB::GetFolderInfo() -{ - if (!m_folderInfo) - { - m_folderInfo = m_master->FindMailFolder(m_folderName, FALSE); - } - return m_folderInfo; -} - - -// caller needs to unrefer when finished. -MailMessageHdr *MailDB::GetMailHdrForKey(MessageKey messageKey) -{ - MailMessageHdr *headerObject = NULL; - MSG_HeaderHandle headerHandle = MSG_DBHandle_GetHandleForKey(m_dbHandle, messageKey); - if (headerHandle) - headerObject = new MailMessageHdr(headerHandle); - - return headerObject; -} - -MsgERR MailDB::DeleteMessages(IDArray &messageKeys, ChangeListener *instigator) -{ - m_folderFile = XP_FileOpen(m_folderName, xpMailFolder, - XP_FILE_UPDATE_BIN); - MsgERR err = MessageDB::DeleteMessages(messageKeys, instigator); - if (m_folderFile) - XP_FileClose(m_folderFile); - m_folderFile = NULL; - SetFolderInfoValid(m_folderName, 0, 0); - return err; -} - -// Helper routine - lowest level of flag setting -void MailDB::SetHdrFlag(DBMessageHdr *msgHdr, XP_Bool bSet, MsgFlags flag) -{ - XP_File fid = NULL; - - MessageDB::SetHdrFlag(msgHdr, bSet, flag); - // update summary flag - if (msgHdr->GetFlags() & kDirty) - { - // ### Hack - we know it's a mail message hdr 'cuz it's in a maildb - // ImapMailDB::UpdateFolderFlag does nothing - UpdateFolderFlag((MailMessageHdr *) msgHdr, bSet, flag, &fid); - if (fid != NULL) - { - XP_FileClose(fid); - SetFolderInfoValid(m_folderName, 0, 0); - } - } -} - -// We let the caller close the file in case he's updating a lot of flags -// and we don't want to open and close the file every time through. -// As an experiment, try caching the fid in the db as m_folderFile. -// If this is set, use it but don't return *pFid. -void MailDB::UpdateFolderFlag(MailMessageHdr *mailHdr, XP_Bool /*bSet*/, - MsgFlags /*flag*/, XP_File *pFid) -{ - static char buf[30]; - XP_File fid = (m_folderFile) ? m_folderFile : *pFid; - if (mailHdr->GetFlags() & kDirty) - { - if (mailHdr->GetStatusOffset() > 0) - { - if (fid == NULL) - { - fid = XP_FileOpen(m_folderName, xpMailFolder, - XP_FILE_UPDATE_BIN); - } - if (fid) - { - uint32 position = - mailHdr->GetStatusOffset() + mailHdr->GetMessageOffset(); - XP_ASSERT(mailHdr->GetStatusOffset() < 10000); - XP_FileSeek(fid, position, SEEK_SET); - buf[0] = '\0'; - if (XP_FileReadLine(buf, sizeof(buf), fid)) - { - if (strncmp(buf, X_MOZILLA_STATUS, X_MOZILLA_STATUS_LEN) == 0 && - strncmp(buf + X_MOZILLA_STATUS_LEN, ": ", 2) == 0 && - strlen(buf) > X_MOZILLA_STATUS_LEN + 6) - { - XP_FileSeek(fid, position, SEEK_SET); - // We are filing out old Cheddar flags here - XP_FilePrintf(fid, X_MOZILLA_STATUS_FORMAT, - (mailHdr->GetMozillaStatusFlags() & ~MSG_FLAG_RUNTIME_ONLY)); - // time to upate x-mozilla-status2 - position = XP_FileTell(fid); - XP_FileSeek(fid, position + LINEBREAK_LEN, SEEK_SET); - if (XP_FileReadLine(buf, sizeof(buf), fid)) - { - if (strncmp(buf, X_MOZILLA_STATUS2, X_MOZILLA_STATUS2_LEN) == 0 && - strncmp(buf + X_MOZILLA_STATUS2_LEN, ": ", 2) == 0 && - strlen(buf) > X_MOZILLA_STATUS2_LEN + 10) - { - uint32 dbFlags = mailHdr->GetFlags(); - MessageDB::ConvertDBFlagsToPublicFlags(&dbFlags); - dbFlags &= (MSG_FLAG_MDN_REPORT_NEEDED | MSG_FLAG_MDN_REPORT_SENT | MSG_FLAG_TEMPLATE); - XP_FileSeek(fid, position + LINEBREAK_LEN, SEEK_SET); - XP_FilePrintf(fid, X_MOZILLA_STATUS2_FORMAT, dbFlags); - } - } - } else - { - PRINTF(("Didn't find %s where expected at position %ld\n" - "instead, found %s.\n", - X_MOZILLA_STATUS, (long) position, buf)); - SetReparse(TRUE); - } - } - else - { - PRINTF(("Couldn't read old status line at all at position %ld\n", - (long) position)); - SetReparse(TRUE); - } - } - else - { - PRINTF(("Couldn't open mail folder for update%s!\n", m_folderName)); - XP_ASSERT(FALSE); - } - } - if (!m_folderFile) - *pFid = fid; - mailHdr->AndFlags(~kDirty); - } -} - -// Use this function if you have the correct counts, but just want to protect -// from a crash. In theory, this Commit should be quick, since there's only -// one or two dirty objects. -MsgERR MailDB::SetSummaryValid(XP_Bool valid /*= TRUE*/) -{ - XP_StatStruct folderst; - - if (XP_Stat((char*) m_folderName, &folderst, xpMailFolder)) - return eDBExistsNot; - if (valid) - { - m_dbFolderInfo->m_folderSize = folderst.st_size; - m_dbFolderInfo->m_folderDate = folderst.st_mtime; - } - else - { - m_dbFolderInfo->m_folderDate = 0; // that ought to do the trick. - } -// m_dbFolderInfo->setDirty(); DMB TODO - Commit(); - return eSUCCESS; -} - -MsgERR MailDB::GetIdsWithNoBodies (IDArray &bodylessIds) -{ - DBMessageHdr *currentHeader; - ListContext *listContext = NULL; - MsgERR dbErr = ListFirst (&listContext, &currentHeader); - int32 maxMsgSize = 0x7fffffff; - XP_Bool respectMsgSizeLimit = FALSE; - - PREF_GetBoolPref("mail.limit_message_size", &respectMsgSizeLimit); - - if (respectMsgSizeLimit && PREF_OK == PREF_GetIntPref("mail.max_size", &maxMsgSize)) - maxMsgSize *= 1024; - - while (dbErr == eSUCCESS) - { - if (0 == ((MailMessageHdr *)currentHeader)->GetOfflineMessageLength(GetDB()) && currentHeader->GetByteLength() < (uint32) maxMsgSize) - bodylessIds.Add(currentHeader->GetMessageKey()); - delete currentHeader; - dbErr = ListNext(listContext, &currentHeader); - } - - if (dbErr == eDBEndOfList) - { - dbErr = eSUCCESS; - ListDone(listContext); - } - - return dbErr; -} - -/* static */ -MsgERR MailDB::SetFolderInfoValid(const char* pathname, int num, int numunread) -{ - XP_StatStruct folderst; - MsgERR err; - - if (XP_Stat((char*) pathname, &folderst, xpMailFolder)) - return eDBExistsNot; - - char *dbName = WH_FileName(pathname, xpMailFolderSummary); - if (!dbName) return eOUT_OF_MEMORY; - MessageDB *pMessageDB = MessageDB::FindInCache(dbName); - if (pMessageDB == NULL) - { - pMessageDB = new MailDB; - // ### this does later stuff (marks latered messages unread), which may be a problem - err = pMessageDB->MessageDBOpen(dbName, FALSE); - if (err != eSUCCESS) - { - delete pMessageDB; - pMessageDB = NULL; - } - } - else - pMessageDB->AddUseCount(); - - XP_FREE(dbName); - - if (pMessageDB == NULL) - { - XP_Trace("Exception opening summary file\n"); - return eOldSummaryFile; - } - - pMessageDB->m_dbFolderInfo->m_folderSize = folderst.st_size; - pMessageDB->m_dbFolderInfo->m_folderDate = folderst.st_mtime; - pMessageDB->m_dbFolderInfo->ChangeNumVisibleMessages(num); - pMessageDB->m_dbFolderInfo->ChangeNumNewMessages(numunread); - pMessageDB->m_dbFolderInfo->ChangeNumMessages(num); - pMessageDB->Close(); - return eSUCCESS; -} - - -// This is used to remember that the db is out of sync with the mail folder -// and needs to be regenerated. -void MailDB::SetReparse(XP_Bool reparse) -{ - m_reparse = reparse; -} - -ImapMailDB::ImapMailDB() : MailDB() -{ -} - -ImapMailDB::~ImapMailDB() -{} - -MsgERR ImapMailDB::Open(const char * folderName, XP_Bool create, - MailDB** pMessageDB, - MSG_Master* mailMaster, - XP_Bool *dbWasCreated) -{ - ImapMailDB *mailDB=NULL; - XP_StatStruct st; - DBFolderInfo *folderInfo = NULL; - XP_Bool newFile = FALSE; - char* dbName; - MsgERR err=eUNKNOWN; - XP_Bool dbFoundInCache=FALSE; - - XP_ASSERT(mailMaster); - - *dbWasCreated = FALSE; - - // code below can't call XP_File routines, or dbName will be crunched. - - if (m_cacheEnabled) - { - dbName = WH_FileName(folderName, xpMailFolderSummary); - if (!dbName) return eOUT_OF_MEMORY; - mailDB = (ImapMailDB *) FindInCache(dbName); - XP_FREE(dbName); - if (mailDB) - { - *pMessageDB = mailDB; - ++(mailDB->m_useCount); - // make this behave like the non-cache case. Is global DB set? DMB TODO - err = eSUCCESS; - dbFoundInCache = TRUE; - } - } - - if (!dbFoundInCache) - { - // if the old summary doesn't exist, we're creating a new one. - if (XP_Stat (folderName, &st, xpMailFolderSummary) && create) - { - newFile = TRUE; - *dbWasCreated = TRUE; - } - - mailDB = new ImapMailDB; - if (!mailDB) - { - *pMessageDB = NULL; - return(eOUT_OF_MEMORY); - } - mailDB->m_folderName = XP_STRDUP(folderName); - - dbName = WH_FileName(folderName, xpMailFolderSummary); - if (!dbName) { - err = eOUT_OF_MEMORY; - } else { - err = mailDB->MessageDBOpen(dbName, create); - XP_FREE(dbName); - } - if (err == eSUCCESS) - { - folderInfo = mailDB->GetDBFolderInfo(); - // if opening existing file, make sure summary file is up to date. - if (!newFile && !XP_Stat (folderName, &st, xpMailFolder)) - { - if (folderInfo->m_folderSize != st.st_size) - err = eOldSummaryFile; - } - if (mailDB->GetCurVersion() != folderInfo->GetDiskVersion()) - err = eOldSummaryFile; - if (err != eSUCCESS) - { - mailDB->Close(); - mailDB = NULL; - } - } - if (err == eSUCCESS) - { - *pMessageDB = mailDB; - if (m_cacheEnabled) - GetDBCache()->Add(mailDB); - } - } - - if (mailDB) - { - mailDB->SetMaster(mailMaster); - if (mailMaster) - { - // this causes an infinite recursion, so don't do it. -// MSG_FolderInfoMail *folderInfo = mailMaster->FindImapMailFolder(folderName); -// mailDB->SetFolderInfo(folderInfo); - } - } - return(err); -} - -void ImapMailDB::UpdateFolderFlag(MailMessageHdr *, XP_Bool , - MsgFlags , XP_File *fid) -{ - fid = NULL; -} - -MSG_FolderInfo *ImapMailDB::GetFolderInfo() -{ - if (!m_folderInfo) - { - XPStringObj mailBoxName; - - m_dbFolderInfo->GetMailboxName(mailBoxName); - m_folderInfo = m_master->FindImapMailFolderFromPath(m_folderName); - } - return m_folderInfo; -} - - -// caller needs to unrefer when finished. -DBOfflineImapOperation *MailDB::GetOfflineOpForKey(MessageKey messageKey, XP_Bool create) -{ - DBOfflineImapOperation *offlineObject = NULL; - MSG_OfflineIMAPOperationHandle offlineOpHandle = MSG_DBHandle_GetOfflineOp(m_dbHandle, messageKey); - if (offlineOpHandle) - { - offlineObject = new DBOfflineImapOperation; - if (offlineObject) - { - offlineObject->SetHandle(offlineOpHandle); - offlineObject->SetDBHandle(m_dbHandle); - } - } - - if (!offlineObject && create) - { - offlineObject = new DBOfflineImapOperation; - if (offlineObject) - { - offlineObject->SetHandle(GetOfflineIMAPOperation()); - - offlineObject->SetMessageKey(messageKey); - offlineObject->SetDBHandle(m_dbHandle); - - // if there is a corresponding msg, use its flags - MailMessageHdr *msgHdr = GetMailHdrForKey(messageKey); - if (msgHdr) - { - imapMessageFlagsType imapFlags = kNoImapMsgFlag; - if (msgHdr->GetFlags() & MSG_FLAG_READ) - imapFlags |= kImapMsgSeenFlag; - if (msgHdr->GetFlags() & MSG_FLAG_REPLIED) - imapFlags |= kImapMsgAnsweredFlag; - if (msgHdr->GetFlags() & MSG_FLAG_MARKED) - imapFlags |= kImapMsgFlaggedFlag; - if (msgHdr->GetFlags() & MSG_FLAG_FORWARDED) - imapFlags |= kImapMsgForwardedFlag; - offlineObject->SetInitialImapFlags(imapFlags); - delete msgHdr; - } - - AddOfflineOp(offlineObject); - } - } - - return offlineObject; -} - -MsgERR MailDB::SetSourceMailbox(DBOfflineImapOperation *op, const char *mailbox, MessageKey key) -{ - MsgERR err = MSG_OfflineIMAPOperationHandle_SetSourceMailbox(op->GetHandle(), m_dbHandle, mailbox, key); - if (err == eCorruptDB) - SetSummaryValid(FALSE); - return err; -} - -MsgERR MailDB::ListAllOfflineOpIds(IDArray &outputIds) -{ - MessageKey *resultKeys; - int32 numKeys; - MsgERR err = MSG_DBHandle_ListAllOflineOperationKeys(m_dbHandle, &resultKeys, &numKeys); - outputIds.SetArray(resultKeys, numKeys, numKeys); - return err; -} - -// List the ids of messages that are going to be deleted via offline playback, -// because we don't need to refetch those headers. -int MailDB::ListAllOfflineDeletes(IDArray &outputIds) -{ - MessageKey *deletedKeys; - int32 numKeys; - MsgERR err = MSG_DBHandle_ListAllOfflineDeletedMessageKeys(m_dbHandle, &deletedKeys, &numKeys); - outputIds.Add(deletedKeys, numKeys); - XP_FREE(deletedKeys); - return numKeys; -} - -MsgERR MailDB::AddOfflineOp(DBOfflineImapOperation *op) -{ - MSG_DBHandle_AddOfflineOperation(m_dbHandle, op->GetHandle()); - MSG_FolderInfo *folderInfo = GetFolderInfo(); - XP_ASSERT(folderInfo); // it would be bad if we couldn't get the folder info. - if (folderInfo) - { - folderInfo->SetFolderPrefFlags(folderInfo->GetFolderPrefFlags() | MSG_FOLDER_PREF_OFFLINEEVENTS); - if (folderInfo->GetType() == FOLDER_IMAPMAIL) - { - MSG_IMAPFolderInfoMail *imapFolder = (MSG_IMAPFolderInfoMail *) folderInfo; - imapFolder->SetHasOfflineEvents(TRUE); - // where should we clear this flag? At the end of the process events url? - } - } - return eSUCCESS; -} - -MsgERR MailDB::DeleteOfflineOp(MessageKey opKey) -{ - DBOfflineImapOperation *doomedOp = GetOfflineOpForKey(opKey, FALSE); - if (doomedOp) - { - MSG_DBHandle_RemoveOfflineOperation(m_dbHandle, doomedOp->GetHandle()); - delete doomedOp; - } - return eSUCCESS; -} - -MsgERR ImapMailDB::SetSummaryValid(XP_Bool valid /* = TRUE */) -{ - return MessageDB::SetSummaryValid(valid); -} diff --git a/mozilla/lib/libmsg/maildb.h b/mozilla/lib/libmsg/maildb.h deleted file mode 100644 index 4ce69af1e16..00000000000 --- a/mozilla/lib/libmsg/maildb.h +++ /dev/null @@ -1,116 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// mail message header database - subclass of MessageDB -#ifndef MAIL_DB_H_ -#define MAIL_DB_H_ - -#include "msgdb.h" -#include "errcode.h" - -class DBThreadMessageHdr; -class MailMessageHdr; -class DBOfflineImapOperation; - -// this is the version number for the mail db. -// If the file format changes, we just reparse the -// mail folder. The news database is not so lucky and -// since they share DBMessageHdr as a base class for the headers, -// we need to stop changing DBMessageHdr. Another way of putting -// this is the newsdb has its own version, but they both need -// to be changed if DBMessageHdr changes! -const int kMailDBVersion = 12; - -// mail message database - -class MailDB : public MessageDB -{ -public: - MailDB(); - virtual ~MailDB(); - static MsgERR Open(const char * dbName, XP_Bool create, - MailDB** pMessageDB, - XP_Bool upgrading = FALSE); - - static MsgERR CloneInvalidDBInfoIntoNewDB(const char * pathName, MailDB** pMailDB); - - virtual MsgERR OnNewPath (const char *newPath); - - virtual MailMessageHdr *GetMailHdrForKey(MessageKey messageKey); - virtual MsgERR DeleteMessages(IDArray &messageKeys, ChangeListener *instigator); - - virtual int GetCurVersion() {return kMailDBVersion;} - static MsgERR SetFolderInfoValid(const char* pathname, int num, int numunread); - virtual const char *GetFolderName() {return m_folderName;} - virtual MailDB *GetMailDB() {return this;} - MSG_Master *GetMaster() {return m_master;} - void SetMaster(MSG_Master *master) {m_master = master;} - - virtual MSG_FolderInfo *GetFolderInfo(); - - // for offline imap queued operations - MsgERR ListAllOfflineOpIds(IDArray &outputIds); - int ListAllOfflineDeletes(IDArray &outputIds); - DBOfflineImapOperation *GetOfflineOpForKey(MessageKey opKey, XP_Bool create); - MsgERR AddOfflineOp(DBOfflineImapOperation *op); - MsgERR DeleteOfflineOp(MessageKey opKey); - MsgERR SetSourceMailbox(DBOfflineImapOperation *op, const char *mailbox, MessageKey key); - - virtual MsgERR SetSummaryValid(XP_Bool valid = TRUE); - - MsgERR GetIdsWithNoBodies (IDArray &bodylessIds); - - -protected: - virtual void SetHdrFlag(DBMessageHdr *, XP_Bool bSet, MsgFlags flag); - virtual void UpdateFolderFlag(MailMessageHdr *msgHdr, XP_Bool bSet, - MsgFlags flag, XP_File *fid); - virtual void SetReparse(XP_Bool reparse); - - XP_Bool m_reparse; - char *m_folderName; - XP_File m_folderFile; /* this is a cache for loops which want file left open */ - MSG_Master *m_master; -}; - - -class ImapMailDB : public MailDB -{ -public: - ImapMailDB(); - virtual ~ImapMailDB(); - - static MsgERR Open(const char * dbName, XP_Bool create, - MailDB** pMessageDB, - MSG_Master* mailMaster, - XP_Bool *dbWasCreated); - - virtual MsgERR SetSummaryValid(XP_Bool valid = TRUE); - - virtual MSG_FolderInfo *GetFolderInfo(); -protected: - // IMAP does not set local file flags, override does nothing - virtual void UpdateFolderFlag(MailMessageHdr *msgHdr, XP_Bool bSet, - MsgFlags flag, XP_File *fid); -}; - - -#endif diff --git a/mozilla/lib/libmsg/mailhdr.cpp b/mozilla/lib/libmsg/mailhdr.cpp deleted file mode 100644 index f391d99b413..00000000000 --- a/mozilla/lib/libmsg/mailhdr.cpp +++ /dev/null @@ -1,313 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp.h" -#include "mailhdr.h" -#include "maildb.h" -#include "newshdr.h" -#include "imapoff.h" -#include "msg_srch.h" // for MSG_GetPriorityFromString -#include "msgdbapi.h" -#include "msgstrob.h" - -/* ****************************************************************** */ - /** MailMessageHdr Class **/ -/* ****************************************************************** */ -MailMessageHdr::MailMessageHdr() -{ - m_priority = 0; - m_byteLength = 0; - m_statusOffset = 0; - m_numLines = 0; - if (!m_dbHeaderHandle) - m_dbHeaderHandle = GetNewMailHeaderHandle(); -} - -MailMessageHdr::MailMessageHdr(MSG_HeaderHandle handle) : DBMessageHdr(handle) -{ - m_priority = 0; - m_byteLength = 0; - m_statusOffset = 0; - m_numLines = 0; -} - -MailMessageHdr::~MailMessageHdr() -{ -} - -MSG_PRIORITY MailMessageHdr::GetPriority() -{ - m_priority = MSG_HeaderHandle_GetPriority(GetHandle()); - switch (m_priority) { - case MSG_PriorityNotSet: - case MSG_NoPriority: - return MSG_NormalPriority; - default: - return (MSG_PRIORITY) m_priority; - } -} - -void MailMessageHdr::CopyFromMsgHdr(MailMessageHdr *msgHdr, MSG_DBHandle srcDBHandle, MSG_DBHandle destDBHandle) -{ - MSG_HeaderHandle_CopyFromMailMsgHdr(m_dbHeaderHandle, msgHdr->m_dbHeaderHandle, srcDBHandle, destDBHandle); -} - -void MailMessageHdr::CopyFromMsgHdr(NewsMessageHdr *msgHdr, MSG_DBHandle srcDB, MSG_DBHandle destDB) -{ - DBMessageHdr::CopyFromDBMsgHdr(msgHdr, srcDB, destDB); -} - -void MailMessageHdr::CopyFromMsgHdr(DBMessageHdr *msgHdr, MSG_DBHandle srcDB, MSG_DBHandle destDB) -{ - DBMessageHdr::CopyFromDBMsgHdr(msgHdr, srcDB, destDB); -} - -void MailMessageHdr::SetPriority(MSG_PRIORITY priority) -{ - if (priority < 0 || priority > MSG_HighestPriority) - { - priority = MSG_NoPriority; -#ifdef DEBUG_bienvenu - XP_ASSERT(FALSE); -#endif - } - m_priority = (unsigned char) priority; - MSG_HeaderHandle_SetPriority(GetHandle(), (MSG_PRIORITY) m_priority); -} - -void MailMessageHdr::SetPriority(const char *priority) -{ - m_priority = MSG_GetPriorityFromString(priority); -} - - -void MailMessageHdr::SetByteLength(uint32 byteLength) -{ - m_byteLength = byteLength; - MSG_HeaderHandle_SetByteLength(GetHandle(), byteLength); -} - -void MailMessageHdr::SetStatusOffset(uint16 statusOffset) -{ - m_statusOffset = statusOffset; - MSG_HeaderHandle_SetStatusOffset(GetHandle(), statusOffset); -} - -uint16 MailMessageHdr::GetStatusOffset() -{ - return MSG_HeaderHandle_GetStatusOffset(GetHandle()); -} - -void MailMessageHdr::SetRecipients(const char *recipients, MSG_DBHandle dbHandle, XP_Bool rfc822) -{ - MSG_HeaderHandle_SetRecipients(m_dbHeaderHandle, recipients, dbHandle, rfc822); -} - - -int32 MailMessageHdr::GetNumRecipients() -{ - return MSG_HeaderHandle_GetNumRecipients(m_dbHeaderHandle); -} - -int32 MailMessageHdr::GetNumCCRecipients() -{ - return MSG_HeaderHandle_GetNumCCRecipients(m_dbHeaderHandle); -} - -void MailMessageHdr::GetRecipients(XPStringObj &recipient, MSG_DBHandle dbHandle) -{ - char *addressList; - MSG_HeaderHandle_GenerateAddressList(m_dbHeaderHandle, dbHandle, &addressList); - - recipient.SetStrPtr(addressList); -} - -void MailMessageHdr::GetCCList(XPStringObj &ccList, MSG_DBHandle dbHandle) -{ - char *addressList; - MSG_HeaderHandle_GenerateCCAddressList(m_dbHeaderHandle, dbHandle, &addressList); - - ccList.SetStrPtr(addressList); -} - -void MailMessageHdr::GetFullRecipient(XPStringObj &recipient, int whichRecipient, MSG_DBHandle dbHandle) -{ - char *address; - MSG_HeaderHandle_GetFullRecipient(m_dbHeaderHandle, dbHandle, whichRecipient, &address); - recipient.SetStrPtr(address); -} - -void MailMessageHdr::GetFullCCRecipient(XPStringObj &recipient, int whichRecipient, MSG_DBHandle dbHandle) -{ - char *address; - MSG_HeaderHandle_GetFullCCRecipient(m_dbHeaderHandle, dbHandle, whichRecipient, &address); - recipient.SetStrPtr(address); -} - -void MailMessageHdr::GetNameOfRecipient(XPStringObj &recipient, int whichRecipient, MSG_DBHandle dbHandle) -{ - XPStringObj fullRecipient; - - if (GetNumRecipients() != 0) - { - GetFullRecipient(fullRecipient, whichRecipient, dbHandle); - char *name = MSG_ExtractRFC822AddressNames(fullRecipient); - if (name != NULL) - { - recipient = name; - XP_FREE(name); - return; - } - } - recipient = ""; -} - -void MailMessageHdr::GetMailboxOfRecipient(XPStringObj &recipient, int whichRecipient, MSG_DBHandle dbHandle) -{ - XPStringObj fullRecipient; - - if (GetNumRecipients() != 0) - { - GetFullRecipient(fullRecipient, whichRecipient, dbHandle); - char *mailbox = MSG_ExtractRFC822AddressMailboxes(fullRecipient); - if (mailbox != NULL) - { - recipient = mailbox; - XP_FREE(mailbox); - return; - } - } - recipient = ""; -} - -void MailMessageHdr::GetNameOfCCRecipient(XPStringObj &recipient, int whichRecipient, MSG_DBHandle dbHandle) -{ - XPStringObj fullRecipient; - - if (GetNumCCRecipients() != 0) - { - GetFullCCRecipient(fullRecipient, whichRecipient, dbHandle); - char *name = MSG_ExtractRFC822AddressNames(fullRecipient); - if (name != NULL) - { - recipient = name; - XP_FREE(name); - return; - } - } - recipient = ""; -} - -void MailMessageHdr::GetMailboxOfCCRecipient(XPStringObj &recipient, int whichRecipient, MSG_DBHandle dbHandle) -{ - XPStringObj fullRecipient; - - if (GetNumCCRecipients() != 0) - { - GetFullCCRecipient(fullRecipient, whichRecipient, dbHandle); - char *mailbox = MSG_ExtractRFC822AddressMailboxes(fullRecipient); - if (mailbox != NULL) - { - recipient = mailbox; - XP_FREE(mailbox); - return; - } - } - recipient = ""; -} - - -void MailMessageHdr::SetCCList(const char *cclist, MSG_DBHandle dbHandle) -{ - MSG_HeaderHandle_SetCCRecipients(m_dbHeaderHandle, cclist, dbHandle); -} - -int32 MailMessageHdr::AddToOfflineMessage(const char *block, int32 length, MSG_DBHandle dbHandle) -{ - return MSG_HeaderHandle_AddToOfflineMessage(m_dbHeaderHandle, block, length, dbHandle); -} - -int32 MailMessageHdr::ReadFromOfflineMessage(char *block, int32 length, int32 offset, MSG_DBHandle dbHandle) -{ - return MSG_HeaderHandle_ReadFromOfflineMessage(m_dbHeaderHandle, block, length, offset, dbHandle); -} - -void MailMessageHdr::PurgeOfflineMessage(MSG_DBHandle dbHandle) -{ - MSG_HeaderHandle_PurgeOfflineMessage(m_dbHeaderHandle, dbHandle); -} - - -uint32 MailMessageHdr::WriteOfflineMessage(XP_File destinationFile, - MSG_DBHandle dbHandle, - XP_Bool needEnvelope) -{ - uint32 bytesAttempted = 0; - uint32 filedBytes = 0; - XP_FileSeek(destinationFile, 0, SEEK_END); - - // if writing to a local mail folder - // this message needs a Berkely envlope - if (needEnvelope) - { - char *envelope = msg_GetDummyEnvelope(); // not allocated, do not free - if (envelope) - { - bytesAttempted += XP_STRLEN(envelope); - filedBytes += XP_FileWrite(envelope, XP_STRLEN(envelope), destinationFile); - } - } - - if (filedBytes == bytesAttempted) - { - // this message needs an X-MOZILLA_STATUS line - char status_buf[X_MOZILLA_STATUS_LEN + 10]; - PR_snprintf(status_buf, X_MOZILLA_STATUS_LEN + 10, - X_MOZILLA_STATUS_FORMAT LINEBREAK, GetFlags()); - bytesAttempted += XP_STRLEN(status_buf); - filedBytes += XP_FileWrite(status_buf, XP_STRLEN(status_buf), destinationFile); - - uint32 dbFlags = GetFlags(); - char *status2_buf = NULL; - MessageDB::ConvertDBFlagsToPublicFlags(&dbFlags); - dbFlags &= (MSG_FLAG_MDN_REPORT_NEEDED | MSG_FLAG_MDN_REPORT_SENT | MSG_FLAG_TEMPLATE); - status2_buf = PR_smprintf(X_MOZILLA_STATUS2_FORMAT LINEBREAK, dbFlags); - if (status2_buf) - { - bytesAttempted += XP_STRLEN(status2_buf); - filedBytes += XP_FileWrite(status2_buf, XP_STRLEN(status2_buf), destinationFile); - XP_FREEIF(status2_buf); - } - - int32 bytesWritten = MSG_HeaderHandle_WriteOfflineMessageBody(m_dbHeaderHandle, dbHandle, destinationFile); - //DMB TODO - not quite right...do we need to know how many bytes we tried to write? - filedBytes += bytesWritten; - bytesAttempted += bytesWritten; - } - return (filedBytes == bytesAttempted) ? filedBytes : 0; -} - -int32 MailMessageHdr::GetOfflineMessageLength(MSG_DBHandle dbHandle) -{ - return MSG_HeaderHandle_GetOfflineMessageLength(m_dbHeaderHandle, dbHandle); -} - diff --git a/mozilla/lib/libmsg/mailhdr.h b/mozilla/lib/libmsg/mailhdr.h deleted file mode 100644 index f4c65347867..00000000000 --- a/mozilla/lib/libmsg/mailhdr.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// mail message header - subclass of DBMessageHdr -#ifndef MAIL_HDR_H_ -#define MAIL_HDR_H_ - -#include "msghdr.h" - -class NewsMessageHdr; - -class MailMessageHdr : public DBMessageHdr -{ -public: - /** Instance Methods **/ - MailMessageHdr(); - MailMessageHdr(MSG_HeaderHandle handle); - ~MailMessageHdr(); - - virtual void CopyFromMsgHdr(MailMessageHdr *msgHdr, MSG_DBHandle srcDBHandle, MSG_DBHandle destDBHandle); - virtual void CopyFromMsgHdr(NewsMessageHdr *msgHdr, MSG_DBHandle srcDBHandle, MSG_DBHandle destDBHandle); - virtual void CopyFromMsgHdr(DBMessageHdr *msgHdr, MSG_DBHandle srcDBHandle, MSG_DBHandle destDBHandle); - - /** Accessor Methods **/ - virtual void SetPriority(MSG_PRIORITY priority); - void SetPriority(const char *priority); - MSG_PRIORITY GetPriority(); - void SetByteLength(uint32 byteLength); - uint32 GetByteLength() {return m_byteLength;} - void SetStatusOffset(uint16 statusOffset); - uint16 GetStatusOffset(); - void SetRecipients(const char *recipients, MSG_DBHandle db, XP_Bool rfc822 = TRUE); - void SetCCList(const char *cclist, MSG_DBHandle db); - virtual int32 GetNumRecipients(); - virtual int32 GetNumCCRecipients(); - virtual void GetRecipients(XPStringObj &recipient, MSG_DBHandle dbHandle); - virtual void GetCCList(XPStringObj &ccList, MSG_DBHandle dbHandle); - virtual void GetFullRecipient(XPStringObj &recipient, int whichRecipient, MSG_DBHandle dbHandle); - virtual void GetFullCCRecipient(XPStringObj &recipient, int whichRecipient, MSG_DBHandle dbHandle); - virtual void GetNameOfRecipient(XPStringObj &recipient, int whichRecipient, MSG_DBHandle dbHandle); - virtual void GetMailboxOfRecipient(XPStringObj &recipient, int whichRecipient, MSG_DBHandle dbHandle); - virtual void GetNameOfCCRecipient(XPStringObj & recipient, int whichRecipient, MSG_DBHandle dbHandle); - virtual void GetMailboxOfCCRecipient(XPStringObj & recipient, int whichRecipient, MSG_DBHandle dbHandle); - - virtual uint32 GetLineCount() {return m_numLines;} - virtual void SetLineCount(uint32 lineCount) {m_numLines = lineCount;} - - int32 AddToOfflineMessage(const char *block, int32 length, MSG_DBHandle dbHandle); - int32 ReadFromOfflineMessage(char *block, int32 length, int32 offset, MSG_DBHandle dbHandle); - void PurgeOfflineMessage(MSG_DBHandle dbHandle); - int32 GetOfflineMessageLength(MSG_DBHandle dbHandle); - uint32 WriteOfflineMessage(XP_File destinationFile,MSG_DBHandle dbHandle, XP_Bool needEnvelope = TRUE); // returns bytes written - -protected: - - - unsigned char m_priority; - uint16 m_statusOffset; // carried over from Moz 2.0 summary files - uint32 m_byteLength; // ditto - uint32 m_numLines; -}; - - -#endif diff --git a/mozilla/lib/libmsg/mhtmlstm.cpp b/mozilla/lib/libmsg/mhtmlstm.cpp deleted file mode 100644 index 98829194900..00000000000 --- a/mozilla/lib/libmsg/mhtmlstm.cpp +++ /dev/null @@ -1,889 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* mhtmlstm.c --- generation of MIME HTML. - */ - -//#ifdef MSG_SEND_MULTIPART_RELATED - -#include "msg.h" -#include "net.h" -#include "structs.h" -#include "xp_core.h" -#include "mhtmlstm.h" -#include "xp_mem.h" -#include "xp_str.h" -#include "xp_mcom.h" -#include "xp_file.h" -#include "prprf.h" -#include "xpassert.h" -#include "msgsend.h" -#include "msgsendp.h" -#include "mimeenc.h" -#include "libi18n.h" - -extern "C" { - extern int MK_UNABLE_TO_OPEN_FILE; -} - - - -/* Defined in libnet/mkcache.c */ -extern "C" int NET_FindURLInCache(URL_Struct * URL_s, MWContext *ctxt); - -/* Defined in layout/editor.cpp */ -extern "C" XP_Bool EDT_IsSameURL(char *url1,char *url2,char *base1,char *base2); - -/* ----------------------------------------------------------------------- -MSG_MimeRelatedFileInfo ----------------------------------------------------------------------- -*/ - - -/* ----------------------------------------------------------------------- -MSG_MimeRelatedStreamOut ----------------------------------------------------------------------- -*/ - -class MSG_MimeRelatedStreamOut : public IStreamOut -{ -public: - MSG_MimeRelatedStreamOut(XP_File file); - ~MSG_MimeRelatedStreamOut(void); - - virtual void Write( char *pBuffer, int32 iCount ); - //static int WriteMimeData( const char *pBuffer, int32 iCount, void *closure); - - virtual EOutStreamStatus Status(); - - virtual intn Close(void); - - XP_File m_file; - XP_Bool m_hasWritten; - //MimeEncoderData *m_encoder; - EOutStreamStatus m_status; -}; - - - -MSG_MimeRelatedStreamOut::MSG_MimeRelatedStreamOut(XP_File file) - : m_file(file), m_hasWritten(FALSE), m_status(EOS_NoError) -{ -} - -MSG_MimeRelatedStreamOut::~MSG_MimeRelatedStreamOut(void) -{ - Close(); -} - -void -MSG_MimeRelatedStreamOut::Write(char *pBuffer, int32 iCount) -{ -// if (!m_encoder) -// (void) WriteMimeData(pBuffer, iCount, this); -// else -// (void) MimeEncoderWrite(m_encoder, pBuffer, iCount); - - if (m_status != EOS_NoError) - return; - - // For now, pass through the information. - XP_ASSERT(m_file); - int numBytes = 0; - if (m_file) - { - numBytes = XP_FileWrite(pBuffer, iCount, m_file); - if (numBytes != iCount) - { - TRACEMSG(("MSG_MimeRelatedStreamOut::Write(): error: %d written != %ld to write",numBytes, (long)iCount)); - if (m_hasWritten) - m_status = EOS_DeviceFull; // wrote in the past, so this means the disk is full - else - m_status = EOS_FileError; // couldn't even write once, so assume it's some other problem - } - } - - if (!m_hasWritten) m_hasWritten = TRUE; -} - -//int -//MSG_MimeRelatedStreamOut::WriteMimeData(const char *pBuffer, int32 iCount, void *closure) -//{ -//} - -IStreamOut::EOutStreamStatus -MSG_MimeRelatedStreamOut::Status(void) -{ - return m_status; -} - -intn -MSG_MimeRelatedStreamOut::Close(void) -{ - if (m_file) - { - XP_FileClose(m_file); - m_file = 0; - } - return 0; -} - -/* ----------------------------------------------------------------------- -MSG_MimeRelatedSubpart ----------------------------------------------------------------------- -*/ - -char * -MSG_MimeRelatedSubpart::GenerateCIDHeader(void) -{ - char *header; - - // If we have a Content-ID, generate that. - header = (m_pContentID ? - PR_smprintf("Content-ID: <%s>", m_pContentID) : 0); - // If we have no Content-ID but an original URL, send that. - if (!header && m_pOriginalURL) - header = PR_smprintf("Content-Location: %s", m_pOriginalURL); - // If none of the above and we have a local URL, use that instead. - if (!header && m_pLocalURL) - header = PR_smprintf("Content-Location: %s", m_pLocalURL); - if (!header) - header = XP_STRDUP(""); - - return header; -} - -char * -MSG_MimeRelatedSubpart::GenerateEncodingHeader(void) -{ - char *header = NULL; - - if (m_pEncoding) - header = PR_smprintf("Content-Transfer-Encoding: %s", m_pEncoding); - else - header = XP_STRDUP(""); - - return header; -} - -char * -MSG_MimeRelatedSubpart::GetContentID(XP_Bool bAttachMIMEPrefix) -{ - char *result = NULL; - - if (m_pContentID) - { - result = PR_smprintf("%s%s", (bAttachMIMEPrefix ? "cid:" : ""), - m_pContentID); - } - - return result; -} - - -int -MSG_MimeRelatedSubpart::GetStreamOut(IStreamOut **pReturn) -{ - int result = 0; - - if (!m_pStreamOut) - { - if (m_filename) - { - XP_File file = XP_FileOpen(m_filename, xpFileToPost, XP_FILE_WRITE_BIN); - if (file) - { - m_pStreamOut = new MSG_MimeRelatedStreamOut(file); - } - } - } - if (!m_pStreamOut) - result = MK_UNABLE_TO_OPEN_FILE; /* -1; rb */ - *pReturn = (IStreamOut *) m_pStreamOut; - - return result; -} - -int -MSG_MimeRelatedSubpart::CloseStreamOut(void) -{ - int result = 0; - - if (m_pStreamOut) - { - delete m_pStreamOut; // this will close the stream - m_pStreamOut = NULL; - } - - return result; -} - -MSG_MimeRelatedSubpart::MSG_MimeRelatedSubpart(MSG_MimeRelatedSaver *parent, - char *pContentID, - char *pOriginal, char *pLocal, - char *pMime, int16 part_csid, char *pFilename) - : MSG_SendPart(NULL, part_csid), m_pOriginalURL(NULL), - m_pLocalURL(NULL), m_pParentFS(parent), - m_pContentID(NULL), m_pContentName(NULL), m_rootPart(FALSE) -{ - m_filetype = xpFileToPost; - - if (pOriginal) - m_pOriginalURL = XP_STRDUP(pOriginal); - if (pLocal) - m_pLocalURL = XP_STRDUP(pLocal); - if (pMime) - m_type = XP_STRDUP(pMime); - if (pContentID) - m_pContentID = XP_STRDUP(pContentID); - - if ((!m_pOriginalURL) && (!m_type)) - { - // Assume we're saving an untitled HTML document (the root part) if - // we're given neither the name nor the type. - m_type = XP_STRDUP(TEXT_HTML); - } - - if (pFilename) - { - CopyString(&m_filename, pFilename); - m_rootPart = TRUE; - } - else - { - // Generate a temp name for a file to which to write. - char *tmp = WH_TempName(xpFileToPost, "nsmail"); - if (tmp) - { - CopyString(&m_filename, tmp); - XP_FREE(tmp); - } - } - - // If we have a filename, create the file now so that - // the Mac doesn't generate the same file name twice. - if (m_filename) - { - XP_File fp = XP_FileOpen(m_filename, xpFileToPost, XP_FILE_WRITE_BIN); - if (fp) - XP_FileClose(fp); - } - - //XP_ASSERT(m_type != NULL); - XP_ASSERT(m_filename != NULL); - //XP_ASSERT(m_pContentID != NULL); -} - -MSG_MimeRelatedSubpart::~MSG_MimeRelatedSubpart(void) -{ - // Close any streams we may have had open. - if (m_pStreamOut) - delete m_pStreamOut; - - // Delete the file we represent. - if (m_filename) - { - XP_FileRemove(m_filename, xpFileToPost); - } - - XP_FREEIF(m_pOriginalURL); - XP_FREEIF(m_pLocalURL); - XP_FREEIF(m_pContentID); - XP_FREEIF(m_pEncoding); - XP_FREEIF(m_pContentName); - - m_pOriginalURL = m_pLocalURL = NULL; -} - -int -MSG_MimeRelatedSubpart::WriteEncodedMessageBody(const char *buf, int32 size, - void *pPart) -{ - MSG_MimeRelatedSubpart *subpart = (MSG_MimeRelatedSubpart *) pPart; - int returnVal = 0; - - XP_ASSERT(subpart->m_state != NULL); - if (subpart->m_state) - returnVal = mime_write_message_body(subpart->m_state, (char *) buf, size); - - return returnVal; -} - -void -MSG_MimeRelatedSubpart::CopyURLInfo(const URL_Struct *pURL) -{ - char *suffix = NULL; - if (pURL != NULL) - { - // Get the MIME type if we have it. - if (pURL->content_type && *(pURL->content_type)) - SetType(pURL->content_type); - - // Look for a content name in this order: - // 1. If we have a content name, use that as is. - // 2. If we have a content type, find an extension - // corresponding to the content type, and attach it to - // the temp filename. - // 3. If we have neither a content name nor a content type, - // duplicate the temp filename as is. (Yuck.) - if (pURL->content_name && *(pURL->content_name)) - m_pContentName = XP_STRDUP(pURL->content_name); - - else if (pURL->content_type && (suffix = NET_cinfo_find_ext(pURL->content_type)) != NULL) - { - // We found an extension locally, add it to the temp name. - char *end = XP_STRRCHR(m_filename, '.'); - - if (end) - *end = '\0'; - - m_pContentName = PR_smprintf("%s.%s", m_filename, suffix); - - if (end) - *end = '.'; - } - } - - if (!m_pContentName) - m_pContentName = XP_STRDUP(m_filename); -} - -int -MSG_MimeRelatedSubpart::Write(void) -{ - // If we weren't given the mime type by the editor, - // then attempt to deduce it from what information we can get. - - if ((m_pOriginalURL) && (!m_type)) - { - // We weren't explicitly given the MIME type, so - // we ask the cache if it knows anything about this URL. - URL_Struct testUrl; - XP_MEMSET(&testUrl, 0, sizeof(URL_Struct)); - - testUrl.address = m_pOriginalURL; - int findResult = NET_FindURLInCache(&testUrl, - m_pParentFS->GetContext()); - if ((findResult != 0) && (testUrl.content_type)) - { - // Got a MIME type from the cache. - m_type = XP_STRDUP(testUrl.content_type); - } - } - - if ((m_pOriginalURL) && (!m_type)) - { - // Either we didn't find the URL in the cache, or - // we have it but don't know its MIME type. - // So, we trot out our last resort: attempt to grok - // the MIME type based on the filename. (Mr. Yuk says: "Yuk.") - - NET_cinfo *pMimeInfo = NET_cinfo_find_type(m_pOriginalURL); - if ((pMimeInfo) && (pMimeInfo->type)) - { - // Got a MIME type based on the filename. - m_type = XP_STRDUP(pMimeInfo->type); - } - } - - if (!m_type) - { - // No matter what we've done, we will never figure out the type. - // So, we punt and call it an application/octet-stream. - m_type = XP_STRDUP(APPLICATION_OCTET_STREAM); - } - - // Determine what the encoding of this data should be depending - // on the MIME type. This is fairly braindead: base64 encode anything - // that isn't text. - if (m_type && (!m_rootPart)) - { - // Uuencode only if we have to, otherwise use base64 - if (m_pParentFS->m_pPane-> - GetCompBoolHeader(MSG_UUENCODE_BINARY_BOOL_HEADER_MASK)) - { - m_pEncoding = XP_STRDUP(ENCODING_UUENCODE); - SetEncoderData(MimeUUEncoderInit(m_pContentName ? m_pContentName : "", -#ifdef XP_OS2 - (int (_Optlink*) (const char*,int32,void*)) -#endif - WriteEncodedMessageBody, - this)); - } - else - { - m_pEncoding = XP_STRDUP(ENCODING_BASE64); - SetEncoderData(MimeB64EncoderInit( -#ifdef XP_OS2 - (int (_Optlink*) (const char*,int32,void*)) -#endif - WriteEncodedMessageBody, - this)); - } - } - - // Horrible hack: if we got a local filename then we're the root lump, - // hence we don't generate a content ID header in that case - // (but we do in all other cases where we have a content ID) - char *cidHeader = NULL; - if ((!m_rootPart) && (m_pContentID)) - { - cidHeader = GenerateCIDHeader(); - if (cidHeader) - { - AppendOtherHeaders(cidHeader); - AppendOtherHeaders(CRLF); - XP_FREE(cidHeader); - } - } - - if (m_pEncoding) - { - char *encHeader = GenerateEncodingHeader(); - if (encHeader) - { - AppendOtherHeaders(encHeader); - AppendOtherHeaders(CRLF); - XP_FREE(encHeader); - } - } - - if ((!m_rootPart) && (m_pOriginalURL)) - { - char *fileHeader = PR_smprintf("Content-Disposition: inline; filename=\"%s\"", - m_pContentName ? m_pContentName : ""); - if (fileHeader) - { - AppendOtherHeaders(fileHeader); - AppendOtherHeaders(CRLF); - XP_FREE(fileHeader); - } - } - - return MSG_SendPart::Write(); -} - -/* ----------------------------------------------------------------------- -MSG_MimeRelatedParentPart ----------------------------------------------------------------------- -*/ - -MSG_MimeRelatedParentPart::MSG_MimeRelatedParentPart(int16 part_csid) -: MSG_SendPart(NULL, part_csid) -{ -} - -MSG_MimeRelatedParentPart::~MSG_MimeRelatedParentPart(void) -{ -} - -/* ----------------------------------------------------------------------- -MSG_MimeRelatedSaver ----------------------------------------------------------------------- -*/ - -extern char * msg_generate_message_id(void); - -// Constructor -MSG_MimeRelatedSaver::MSG_MimeRelatedSaver(MSG_CompositionPane *pane, - MWContext *context, - MSG_CompositionFields *fields, - XP_Bool digest_p, - MSG_Deliver_Mode deliver_mode, - const char *body, - uint32 body_length, - MSG_AttachedFile *attachedFiles, - DeliveryDoneCallback cb, - char **ppOriginalRootURL) - : m_pContext(context), m_pBaseURL(NULL), m_pPane(pane), - m_pFields(fields), m_digest(digest_p), m_deliverMode(deliver_mode), - m_pBody(body), m_bodyLength(body_length), - m_pAttachedFiles(attachedFiles), m_cbDeliveryDone(cb), m_pSourceBaseURL(NULL) - -{ - // Generate the message ID. - m_pMessageID = msg_generate_message_id(); - if (m_pMessageID) - { - // Massage the message ID so that it can be used for generating - // part IDs. For now, just remove the angle brackets. - m_pMessageID[strlen(m_pMessageID)-1] = '\0'; // shorten the end by 1 - char *temp = XP_STRDUP(&(m_pMessageID[1])); // and strip off the leading '<' - if (temp) - { - XP_FREE(m_pMessageID); - m_pMessageID = temp; - } - } - XP_ASSERT(m_pMessageID); - - // Create the part object that we represent. - m_pPart = new MSG_MimeRelatedParentPart(INTL_DefaultWinCharSetID(context)); - XP_ASSERT(m_pPart); - - if ((ppOriginalRootURL != NULL) && *(ppOriginalRootURL)) - { - // Have a valid string of some sort, wait to be added. - } - else if (ppOriginalRootURL != NULL) - { - // ### mwelch This is a hack, required because EDT_SaveFileTo - // requires a source URL string, even if the document - // is currently untitled. The hack consists of adding - // the return parameter in the constructor, and passing - // back an improvised source URL if we were not given one. - // - // Autogenerate the title and pass it back. - m_rootFilename = WH_TempName(xpFileToPost,"nsmail"); - XP_ASSERT(m_rootFilename); - char * temp = WH_FileName(m_rootFilename, xpFileToPost); - *ppOriginalRootURL = XP_PlatformFileToURL(temp); - if (temp) - XP_FREE( temp ); - } - - // Set our type to be multipart/related. - m_pPart->SetType(MULTIPART_RELATED); -} - -// Destructor -MSG_MimeRelatedSaver::~MSG_MimeRelatedSaver(void) -{ - XP_FREEIF(m_pSourceBaseURL); - if (m_rootFilename) - { - XP_FileRemove(m_rootFilename, xpFileToPost); - XP_FREEIF(m_rootFilename); - } - XP_FREEIF(m_pMessageID); -} - -intn MSG_MimeRelatedSaver::GetType() -{ - return ITapeFileSystem::MailSend; -} - -MSG_MimeRelatedSubpart * -MSG_MimeRelatedSaver::GetSubpart(intn iFileIndex) -{ - XP_ASSERT(m_pPart != NULL); - - MSG_MimeRelatedSubpart *part = - (MSG_MimeRelatedSubpart *) m_pPart->GetChild(iFileIndex); - - return part; -} - -// This function is called before anything else. -// Tell the file system the base URL it is going to see. -void -MSG_MimeRelatedSaver::SetSourceBaseURL(char *pURL) -{ - XP_FREEIF(m_pSourceBaseURL); - m_pSourceBaseURL = XP_STRDUP(pURL); - -#if 0 - MSG_MimeRelatedSubpart *part = NULL; - // Remember the URL for later. - m_pBaseURL = pURL; - - // Add this URL as the first in the list. - if (m_pPart->GetNumChildren() == 0) - { - AddFile(pURL); - } - else - { - part = GetSubpart(0); - if (part) - { - XP_FREEIF(part->m_pOriginalURL); - part->m_pOriginalURL = (pURL == NULL) ? NULL : XP_STRDUP(pURL); - } - } - - // Fix the local URL/filename reference if we haven't already opened the file. - if (!part) - part = GetSubpart(0); - if (part && (part->m_pStreamOut == NULL)) - { - XP_FREEIF(part->m_pLocalURL); - part->m_pLocalURL = PR_smprintf("file:%s",part->GetFilename()); - XP_ASSERT(part->m_pLocalURL); - - part->SetOtherHeaders(""); // no headers for the lead part - } -#endif -} - -char* -MSG_MimeRelatedSaver::GetSourceURL(intn iFileIndex) -{ - char *result = NULL; - - MSG_MimeRelatedSubpart *part = GetSubpart(iFileIndex); - if (part->m_pOriginalURL) { - // Try to make absolute relative to value set in MSG_MimeRelatedSaver::SetSourceBaseURL(). - if (m_pSourceBaseURL) { - result = NET_MakeAbsoluteURL(m_pSourceBaseURL,part->m_pOriginalURL); - } - else { - result = XP_STRDUP(part->m_pOriginalURL); - } - } - - return result; -} - -// Add a name to the file system. -// Returns the index of the file added (0 based). -intn -MSG_MimeRelatedSaver::AddFile(char * pURL, char * pMimeType, int16 part_csid) -{ - intn returnValue = 0; - MSG_MimeRelatedSubpart *newPart = NULL; - int i; - - // See if a part with this url already exists. - for(i=0;(i<m_pPart->GetNumChildren()) && (!newPart);i++) - { - newPart = GetSubpart(i); - // Use EDT_IsSameURL to deal with case insensitivity on MAC and Win16 - if (!newPart || - !EDT_IsSameURL(newPart->m_pOriginalURL, pURL,m_pSourceBaseURL,m_pSourceBaseURL)) { - newPart = NULL; // not this one, try the next one - } - else { - // found it. - returnValue = i; - } - } - - if (newPart == NULL) - { - // Generate a Content ID. This will look a lot like our message ID, - // except that we will add the part number. - XP_ASSERT(m_pMessageID != NULL); - char *newPartID = PR_smprintf("part%ld.%s", (long) m_pPart->GetNumChildren(), - m_pMessageID); - XP_ASSERT(newPartID != NULL); - - char *newLocalURL = PR_smprintf("cid:%s",newPartID); - XP_ASSERT(newLocalURL != NULL); - - returnValue = m_pPart->GetNumChildren(); - - if (m_pPart->GetNumChildren() == 0) - // This is the root file in the file system. - newPart = new MSG_MimeRelatedSubpart(this, newPartID, pURL, - pURL, TEXT_HTML, part_csid, - m_rootFilename); - else - newPart = new MSG_MimeRelatedSubpart(this, newPartID, pURL, - newLocalURL, pMimeType, part_csid ); - - if (newPart) - m_pPart->AddChild(newPart); - else - returnValue = (intn) ITapeFileSystem::Error; // an error since 0 is the base URL (??) - - XP_FREEIF(newPartID); - XP_FREEIF(newLocalURL); - } - - return returnValue; -} - -intn -MSG_MimeRelatedSaver::GetNumFiles(void) -{ - return m_pPart->GetNumChildren(); -} - -char * -MSG_MimeRelatedSaver::GetDestAbsURL() -{ - // No meaningful destination URL for sending mail. - return NULL; -} - -// Get the name of the relative url to place in the file. -char * -MSG_MimeRelatedSaver::GetDestURL(intn iFileIndex) -{ - char *result = NULL; - - MSG_MimeRelatedSubpart *thePart = GetSubpart(iFileIndex); - if (thePart != NULL) - { - result = XP_STRDUP(thePart->m_pLocalURL); - } - - return result; -} - -char * -MSG_MimeRelatedSaver::GetDestPathURL(void) -{ - //return XP_STRDUP(""); // no path prefix for content IDs - return NULL; -} - -// Return the name to display when saving the file. -char * -MSG_MimeRelatedSaver::GetHumanName(intn iFileIndex) -{ - char *result = NULL; - - MSG_MimeRelatedSubpart *thePart = GetSubpart(iFileIndex); - if (thePart != NULL) - { - result = thePart->m_pOriginalURL; - char *end = XP_STRRCHR(result, '/'); - if (end) - result = XP_STRDUP(++end); - else - result = XP_STRDUP(result); - } - return result; -} - -// Open the output stream. -IStreamOut * -MSG_MimeRelatedSaver::OpenStream(intn iFileIndex) -{ - intn theError = 0; - IStreamOut *pStream = NULL; // in case we fail - - // Create a stream object that can be written to. - MSG_MimeRelatedSubpart *thePart = GetSubpart(iFileIndex); - if (thePart) - { - theError = (intn) thePart->GetStreamOut(&pStream); - } - return pStream; -} - -void -MSG_MimeRelatedSaver::CopyURLInfo(intn iFileIndex, const URL_Struct *pURL) -{ - MSG_MimeRelatedSubpart *thePart = GetSubpart(iFileIndex); - if (thePart != NULL) - thePart->CopyURLInfo(pURL); -} - -// Close the output stream. -// Called on completion. bSuccess is TRUE if completed successfully, -// FALSE if it failed. -void -MSG_MimeRelatedSaver::Complete(Bool bSuccess, - EDT_ITapeFileSystemComplete *pfComplete, void *pArg ) -{ - m_pEditorCompletionFunc = pfComplete; - m_pEditorCompletionArg = pArg; - - // Call StartMessageDelivery (and should) if we - // were told to at creation time. - if (bSuccess) - { - // If we only generated a single HTML part, treat that as - // the root part. - if (m_pPart->GetNumChildren() == 1) - { - MSG_SendPart *tempPart = m_pPart->DetachChild(0); - delete m_pPart; - m_pPart = tempPart; - } - - msg_StartMessageDeliveryWithAttachments(m_pPane, this, - m_pFields, - m_digest, FALSE, - m_deliverMode, - TEXT_HTML, - m_pBody, m_bodyLength, - m_pAttachedFiles, - m_pPart, -#ifdef XP_OS2 - (void (_Optlink*) (MWContext*,void*,int,const char*)) -#endif - MSG_MimeRelatedSaver::UrlExit); - } - else - { - // delete the contained part since we failed - delete m_pPart; - m_pPart = NULL; - - // Call our UrlExit routine to perform cleanup. - UrlExit(m_pPane->GetContext(), this, MK_INTERRUPTED, NULL); - } -} - -void -MSG_MimeRelatedSaver::UrlExit(MWContext *context, void *fe_data, int status, - const char *error_message) -{ - MSG_MimeRelatedSaver *saver = (MSG_MimeRelatedSaver *) fe_data; - XP_ASSERT(saver != NULL); - if (saver) - { - if (saver->m_pEditorCompletionFunc) - { - (*(saver->m_pEditorCompletionFunc))((status == 0), - saver->m_pEditorCompletionArg); - } - if (saver->m_cbDeliveryDone) - { - (*(saver->m_cbDeliveryDone))(context,saver->m_pPane, - status,error_message); - } - } - delete saver; // the part within stays around, we don't -} - -void -MSG_MimeRelatedSaver::CloseStream( intn iFileIndex ) -{ - // Get the piece whose stream we will close. - MSG_MimeRelatedSubpart *thePart = GetSubpart(iFileIndex); - if (thePart) - { - thePart->CloseStreamOut(); - } -} - -XP_Bool -MSG_MimeRelatedSaver::FileExists( intn /*iFileIndex*/ ) -{ - return FALSE; -} - -XP_Bool -MSG_MimeRelatedSaver::IsLocalPersistentFile(intn /*iFileIndex*/) { - return FALSE; -} - -//#endif diff --git a/mozilla/lib/libmsg/mhtmlstm.h b/mozilla/lib/libmsg/mhtmlstm.h deleted file mode 100644 index 2344e0de549..00000000000 --- a/mozilla/lib/libmsg/mhtmlstm.h +++ /dev/null @@ -1,229 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - mhtmlstm.h --- generation of MIME HTML from the editor. - */ - -#ifndef LIBMSG_MHTMLSTM_H -#define LIBMSG_MHTMLSTM_H - -// Comment out the next line if you want to turn off the sending of multipart/related info. -#define MSG_SEND_MULTIPART_RELATED - -//#ifdef MSG_SEND_MULTIPART_RELATED - -#include "msg.h" -#include "itapefs.h" -#include "ptrarray.h" -#include "xp_file.h" -#include "ntypes.h" -#include "msgcpane.h" -#include "msgsendp.h" -#include "itapefs.h" - -class MSG_MimeRelatedStreamIn; -class MSG_MimeRelatedStreamOut; -class MSG_MimeRelatedSubpart; -class MSG_MimeRelatedSaver; -class MSG_SendMimeDeliveryState; - -typedef void (*DeliveryDoneCallback) (MWContext *context, - void *fe_data, - int status, - const char *error_message); - -// A record which represents a part of this multipart. -// Encapsulates the stuff necessary to convert MIME part data -// into message text. -class MSG_MimeRelatedSubpart : public MSG_SendPart -{ -public: - char *m_pOriginalURL; // Original URL for this lump - char *m_pLocalURL; // Local relative URL for this lump - MSG_MimeRelatedSaver *m_pParentFS; // The parent FS that includes us - char *m_pContentID; // Content ID of this lump - char *m_pEncoding; // Content transfer encoding - char *m_pContentName; // Content name (as conveyed by CopyURLInfo) - MSG_MimeRelatedStreamOut *m_pStreamOut; // Current output (to file) stream - XP_Bool m_rootPart; // Are we the first part of the multipart? - - MSG_MimeRelatedSubpart(MSG_MimeRelatedSaver *parent, - char *pContentID, - char *pOriginal, - char *pLocal, - char *pMime, - int16 part_csid, - char *pRootFileName = NULL); - - ~MSG_MimeRelatedSubpart(void); - - char *GetContentID(XP_Bool bAddMIMEPrefix); - int GetStreamOut(IStreamOut **pReturn); - int CloseStreamOut(void); - int Write(void); - - // Copy information out of the URL used to fetch its data - void CopyURLInfo(const URL_Struct *pURL); - - // Function used by the mime encoder when writing to message file - static int WriteEncodedMessageBody(const char *buf, int32 size, void *pPart); - - // Generate any additional header strings for this part - // (such as the "Content-ID:" string) - char * GenerateCIDHeader(void); - char * GenerateEncodingHeader(void); -}; - -class MSG_MimeRelatedSaver; - -class MSG_MimeRelatedParentPart : public MSG_SendPart -{ -public: - MSG_MimeRelatedParentPart(int16 part_csid); - virtual ~MSG_MimeRelatedParentPart(); - - //virtual int Write(); - - //virtual int SetFile(const char* filename, XP_FileType filetype); - //virtual int SetBuffer(const char* buffer); - //virtual int SetOtherHeaders(const char* other); - //virtual int AppendOtherHeaders(const char* moreother); - //virtual int AddChild(MSG_SendPart* child); -}; - -class MSG_MimeRelatedSaver : public ITapeFileSystem -{ -public: - MWContext * m_pContext; // Context - char * m_pBaseURL; // Base URL of this lump - char * m_pMessageID; // Message ID that we will use to generate - // unique names for each content ID - char * m_rootFilename; // Filename for root object (created at const. time) - char * m_pSourceBaseURL; // Only used to return absolute URLs for GetSourceURL() - - MSG_SendPart *m_pPart; - - // All these are parameters to be passed to StartMessageDelivery - MSG_CompositionPane *m_pPane; - MSG_CompositionFields *m_pFields; - XP_Bool m_digest; - MSG_Deliver_Mode m_deliverMode; - const char *m_pBody; - uint32 m_bodyLength; - MSG_AttachedFile *m_pAttachedFiles; - DeliveryDoneCallback m_cbDeliveryDone; - void (*m_pEditorCompletionFunc)(XP_Bool success, void *data); - void *m_pEditorCompletionArg; - - void ClearAllParts(void); - -public: - MSG_MimeRelatedSaver(MSG_CompositionPane *pane, MWContext *context, - MSG_CompositionFields *fields, - XP_Bool digest_p, MSG_Deliver_Mode deliver_mode, - const char *body, uint32 body_length, - MSG_AttachedFile *attachedFiles, - DeliveryDoneCallback cb, - char **ppOriginalRootURL); - virtual ~MSG_MimeRelatedSaver(); - - - virtual intn GetType(); - - // This function is called before anything else. It tells the file - // system the base url it is going to see. - virtual void SetSourceBaseURL( char* pURL ); - - virtual char* GetSourceURL(intn iFileIndex); - - // DESCRIPTION: - // - // Add a name to the file system. It is up to the file system to localize - // the name. For example, I could add 'http://home.netscape.com/' - // and the file system might decide that it should be called 'index.html' - // if the file system were DOS, the url might be converted to INDEX.HTML - // - // RETURNS: index of the file (0 based) - // - virtual intn AddFile( char* pURL, char *pMimeType, int16 iDocCharSetID ); - - // Count the number of files we know about. - virtual intn GetNumFiles(void); - - virtual char* GetDestAbsURL(); - - // Gets the name of the RELATIVE url to place in the file. String is - // allocated with XP_STRDUP(); - // - virtual char* GetDestURL( intn iFileIndex ); - - // String is allocated with XP_STRDUP(). - virtual char* GetDestPathURL(); - - // - // Returns the name to display when saving the file, can be the same as - // GetURLName. String is allocated with XP_STRDUP(); - // - virtual char* GetHumanName( intn iFileIndex ); - - virtual XP_Bool IsLocalPersistentFile(intn iFileIndex); - - // Does the file referenced by iFileIndex already exist? - // For the MHTML version, this will always return FALSE. - virtual XP_Bool FileExists(intn iFileIndex); - - // - // Opens the output stream. Returns a stream that can be written to. All - // 'AddFile's occur before the first OpenStream. - // - virtual IStreamOut * OpenStream( intn iFileIndex ); - - virtual void CloseStream( intn iFileIndex ); - - // ### mwelch Added so that multipart/related message saver can properly construct - // messages using quoted/forwarded part data. - // Tell the tape file system the mime type of a particular part. - // (Calling this overrides any previously determined mime type for this part.) - virtual void CopyURLInfo(intn iFileIndex, const URL_Struct *pURL); - - // - // Called on completion, TRUE if completed successfully, FALSE if it failed. - // - virtual void Complete( Bool bSuccess, EDT_ITapeFileSystemComplete *pfComplete, void *pArg ); - // Has this file system received a true multipart or just some HTML? - char *GetMimeType(void); - - MWContext *GetContext(void) const { return m_pContext; } - - char *GetMessageID(void) const { return m_pMessageID; } - - MSG_MimeRelatedSubpart *GetSubpart( intn iFileIndex ); - - // Used when the mail system is done sending the message. - // Causes the editor to clean up from the save. - static void UrlExit(MWContext *context, void *fe_data, int status, - const char *error_message); -}; - -//#endif - -#endif diff --git a/mozilla/lib/libmsg/msg.h b/mozilla/lib/libmsg/msg.h deleted file mode 100644 index dac8a091cb4..00000000000 --- a/mozilla/lib/libmsg/msg.h +++ /dev/null @@ -1,322 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - msg.h --- internal defs for the msg library - */ -#ifndef _MSG_H_ -#define _MSG_H_ - -#include "xp.h" -#include "msgcom.h" -#include "msgnet.h" -#include "msgutils.h" -#include "xpgetstr.h" - -#ifdef XP_CPLUSPLUS -class MessageDBView; -class MSG_SendPart; -#endif - -#define MANGLE_INTERNAL_ENVELOPE_LINES /* We always need to do this, for now */ -#undef FIXED_SEPARATORS /* this doesn't work yet */ -#define EMIT_CONTENT_LENGTH /* Experimental; and anyway, we only - emit it, we don't parse it, so this - is only the first step. */ - -/* This string gets appended to the beginning of an attachment field - during a forward quoted operation */ - -#define MSG_FORWARD_COOKIE "$forward_quoted$" - - -/* The PRINTF macro is for debugging messages of unusual events (summary */ -/* files out of date or invalid or the like. It's so that as I use the mail */ -/* to actually read my e-mail, I can look at the shell output whenever */ -/* something unusual happens so I can get some clues as to what's going on. */ -/* Please don't remove any PRINTF calls you see, and be sparing of adding */ -/* any additional ones. Thanks. - Terry */ - -#ifdef DEBUG -#define PRINTF(msg) XP_Trace msg -#else -#define PRINTF(msg) -#endif - -#ifdef FREEIF -#undef FREEIF -#endif -#define FREEIF(obj) do { if (obj) { XP_FREE (obj); obj = 0; }} while (0) - -/* The Netscape-specific header fields that we use for storing our - various bits of state in mail folders. - */ -#define X_MOZILLA_STATUS "X-Mozilla-Status" -#define X_MOZILLA_STATUS_FORMAT X_MOZILLA_STATUS ": %04.4x" -#define X_MOZILLA_STATUS_LEN /*1234567890123456*/ 16 - -#define X_MOZILLA_STATUS2 "X-Mozilla-Status2" -#define X_MOZILLA_STATUS2_FORMAT X_MOZILLA_STATUS2 ": %08.8x" -#define X_MOZILLA_STATUS2_LEN /*12345678901234567*/ 17 - -#define X_MOZILLA_DRAFT_INFO "X-Mozilla-Draft-Info" -#define X_MOZILLA_DRAFT_INFO_LEN /*12345678901234567890*/ 20 - -#define X_MOZILLA_NEWSHOST "X-Mozilla-News-Host" -#define X_MOZILLA_NEWSHOST_LEN /*1234567890123456789*/ 19 - -#define X_UIDL "X-UIDL" -#define X_UIDL_LEN /*123456*/ 6 - -#define CONTENT_LENGTH "Content-Length" -#define CONTENT_LENGTH_LEN /*12345678901234*/ 14 - -/* Provide a common means of detecting empty lines in a message. i.e. to detect the end of headers among other things...*/ -#define EMPTY_MESSAGE_LINE(buf) (buf[0] == CR || buf[0] == LF || buf[0] == '\0') - -typedef int32 MsgChangeCookie; /* used to unregister change notification */ - -/* The three ways the list of newsgroups can be pruned. - */ -typedef enum -{ - MSG_ShowAll, - MSG_ShowSubscribed, - MSG_ShowSubscribedWithArticles -} MSG_NEWSGROUP_DISPLAY_STYLE; - -/* The three ways to deliver a message. - */ -typedef enum -{ - MSG_DeliverNow, - MSG_QueueForLater, - MSG_SaveAsDraft, - MSG_SaveAsTemplate -} MSG_Deliver_Mode; - - -/* A little enum for things we'd like to learn lazily. - * e.g. displaying recipients for this pane? Yes we are, - * no we're not, haven't figured it out yet - */ -typedef enum -{ - msg_No, - msg_Yes, - msg_DontKnow -} msg_YesNoDontKnow; - -/* The MSG_REPLY_TYPE shares the same space as MSG_CommandType, to avoid - possible weird errors, but is restricted to the `composition' commands - (MSG_ReplyToSender through MSG_ForwardMessage.) - */ -typedef MSG_CommandType MSG_REPLY_TYPE; - -/* The list of all message flags to not write to disk. */ -#define MSG_FLAG_RUNTIME_ONLY (MSG_FLAG_ELIDED) - - -/* =========================================================================== - Structures. - =========================================================================== - */ - -/* Used for the various things that parse RFC822 headers... - */ -typedef struct message_header -{ - const char *value; /* The contents of a header (after ": ") */ - int32 length; /* The length of the data (it is not NULL-terminated.) */ -} message_header; - - - -/* Argument to msg_NewsgroupNameMapper() */ -typedef int (*msg_SubscribedGroupNameMapper) (MWContext *context, - const char *name, - void *closure); - -XP_BEGIN_PROTOS - -/* we'll need this for localized folder names */ - -extern int MK_MSG_INBOX_L10N_NAME; -extern int MK_MSG_OUTBOX_L10N_NAME; /* win16 variations are in allxpstr.h */ -extern int MK_MSG_OUTBOX_L10N_NAME_OLD; -extern int MK_MSG_TRASH_L10N_NAME; -extern int MK_MSG_DRAFTS_L10N_NAME; -extern int MK_MSG_SENT_L10N_NAME; -extern int MK_MSG_TEMPLATES_L10N_NAME; - -#define INBOX_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_INBOX_L10N_NAME) -#define QUEUE_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_OUTBOX_L10N_NAME) -#define QUEUE_FOLDER_NAME_OLD MSG_GetSpecialFolderName(MK_MSG_OUTBOX_L10N_NAME_OLD) -#define TRASH_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_TRASH_L10N_NAME) -#define DRAFTS_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_DRAFTS_L10N_NAME) -#define SENT_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_SENT_L10N_NAME) -#define TEMPLATES_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_TEMPLATES_L10N_NAME) -#ifdef XP_OS2 -#define INBOX_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_INBOX_L10N_NAME) -#define QUEUE_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_OUTBOX_L10N_NAME) -#define QUEUE_FOLDER_PRETTY_NAME_OLD MSG_GetSpecialFolderPrettyName(MK_MSG_OUTBOX_L10N_NAME_OLD) -#define TRASH_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_TRASH_L10N_NAME) -#define DRAFTS_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_DRAFTS_L10N_NAME) -#define SENT_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_SENT_L10N_NAME) -#define TEMPLATES_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_TEMPLATES_L10N_NAME) -#endif - - -int ConvertMsgErrToMKErr(uint32 err); /* this routine might live - the rest are - probably already dead */ - - -/* =========================================================================== - Redisplay-related stuff - =========================================================================== - */ - -/* Clear out the message display (make Layout be displaying no document.) */ -extern void msg_ClearMessageArea (MWContext *context); - - -/* Returns a line suitable for using as the envelope line in a BSD - mail folder. The returned string is stored in a static, and so - should be used before msg_GetDummyEnvelope is called again. */ -extern char * msg_GetDummyEnvelope(void); - -/* Returns TRUE if the buffer looks like a valid envelope. - This test is somewhat more restrictive than XP_STRNCMP(buf, "From ", 5). - */ -extern XP_Bool msg_IsEnvelopeLine(const char *buf, int32 buf_size); - - -/* =========================================================================== - Utilities specific to mail folders and their Folders and ThreadEntries. - =========================================================================== - */ - -/* returns the name of a magic folder - returns a new string. */ -extern char *msg_MagicFolderName(MSG_Prefs* prefs, uint32 flag, int *pStatus); - - -/* Get the current fcc folder name, so we can sort them up at the top of the - other folder lists with the other magic folders. */ -const char* msg_GetDefaultFcc(XP_Bool news_p); - - -/* Reads the first few bytes of the file and returns FALSE if it doesn't - seem to be a mail folder. (Empty and nonexistent files return TRUE.) - If it doesn't seem to be one, the user is asked whether it should be - written to anyway, and their answer is returned. - */ -extern XP_Bool msg_ConfirmMailFile (MWContext *context, const char *file_name); - -/* =========================================================================== - The content-type converters for the MIME types. These are provided by - compose.c, but are registered by netlib rather than msglib, for some - destined-to-be-mysterious reason. - =========================================================================== - */ -extern NET_StreamClass *MIME_MessageConverter (int format_out, void *closure, - URL_Struct *url, - MWContext *context); - -extern NET_StreamClass *MIME_RichtextConverter (int format_out, void *data_obj, - URL_Struct *url, - MWContext *context); - -extern NET_StreamClass *MIME_EnrichedTextConverter (int format_out, - void *data_obj, - URL_Struct *url, - MWContext *context); - -extern NET_StreamClass *MIME_ToDraftConverter (int format_out, void *closure, - URL_Struct *url, - MWContext *context); - -extern NET_StreamClass *MIME_VCardConverter (int format_out, void *data_obj, - URL_Struct *url, - MWContext *context); - -extern NET_StreamClass *MIME_JulianConverter (int format_out, void *data_obj, - URL_Struct *url, - MWContext *context); - - -/* This nastiness is how msg_SaveSelectedNewsMessages() works. */ -extern NET_StreamClass *msg_MakeAppendToFolderStream (int format_out, - void *closure, - URL_Struct *url, - MWContext *); - -/* This probably should be in mime.h, except that mime.h should mostly be - private to libmsg. So it's here. */ -extern void -msg_StartMessageDeliveryWithAttachments (MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode deliver_mode, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachedFile *attachments, - void *mimeRelatedPart, - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)); - -extern int -msg_DownloadAttachments (MSG_Pane *pane, - void *fe_data, - const struct MSG_AttachmentData *attachments, - void (*attachments_done_callback) - (MWContext *context, - void *fe_data, - int status, const char *error_message, - struct MSG_AttachedFile *attachments)); - - -extern -int msg_DoFCC (MSG_Pane *pane, - const char *input_file, XP_FileType input_file_type, - const char *output_file, XP_FileType output_file_type, - const char *bcc_header_value, - const char *fcc_header_value); - -extern char* msg_generate_message_id (void); - -#ifdef XP_UNIX -extern int msg_DeliverMessageExternally(MWContext *, const char *msg_file); -#endif /* XP_UNIX */ - - -XP_END_PROTOS - - - - - -#endif /* !_MSG_H_ */ diff --git a/mozilla/lib/libmsg/msg.i b/mozilla/lib/libmsg/msg.i deleted file mode 100644 index c82b5ccf02f..00000000000 --- a/mozilla/lib/libmsg/msg.i +++ /dev/null @@ -1,637 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef MSG_I -#define MSG_I - -#include "resdef.h" - -/******************************************************************* - Syntax: ResDef(Token, Id, String) - - Note: Please change Id based on IDS_MSG_BASE - -********************************************************************/ - -BEGIN_STR (MSG_strings) - - -/* Search attribute names */ -/* WARNING -- order must match MSG_SearchAttribute enum */ -ResDef(XP_SEARCH_SENDER, XP_MSG_BASE + 648, "from") -ResDef(XP_SEARCH_SUBJECT, XP_MSG_BASE + 649, "subject") -ResDef(XP_SEARCH_BODY, XP_MSG_BASE + 650, "body") -ResDef(XP_SEARCH_DATE, XP_MSG_BASE + 651, "date") -ResDef(XP_SEARCH_PRIORITY, XP_MSG_BASE + 652, "priority") -ResDef(XP_SEARCH_STATUS, XP_MSG_BASE + 653, "status") -ResDef(XP_SEARCH_TO, XP_MSG_BASE + 654, "to") -ResDef(XP_SEARCH_CC, XP_MSG_BASE + 655, "CC") -ResDef(XP_SEARCH_TO_OR_CC, XP_MSG_BASE + 656, "to or CC") -ResDef(XP_SEARCH_COMMON_NAME, XP_MSG_BASE + 657, "name") -ResDef(XP_SEARCH_EMAIL_ADDRESS, XP_MSG_BASE + 658, "e-mail address") -ResDef(XP_SEARCH_PHONE_NUMBER, XP_MSG_BASE + 659, "phone number") -ResDef(XP_SEARCH_ORG, XP_MSG_BASE + 660, "organization") -ResDef(XP_SEARCH_ORG_UNIT, XP_MSG_BASE + 661, "organizational unit") -ResDef(XP_SEARCH_LOCALITY, XP_MSG_BASE + 662, "locality") -ResDef(XP_SEARCH_STREET_ADDRESS, XP_MSG_BASE + 663, "street address") - -/* Search operator names */ -/* WARNING -- order must match MSG_SearchOperator enum */ -ResDef(XP_SEARCH_CONTAINS, XP_MSG_BASE + 664, "contains") -ResDef(XP_SEARCH_DOESNT_CONTAIN, XP_MSG_BASE + 665, "doesn't contain") -ResDef(XP_SEARCH_IS, XP_MSG_BASE + 666, "is") -ResDef(XP_SEARCH_ISNT, XP_MSG_BASE + 667, "isn't") -ResDef(XP_SEARCH_IS_EMPTY, XP_MSG_BASE + 668, "is empty") -ResDef(XP_SEARCH_IS_BEFORE, XP_MSG_BASE + 669, "is before") -ResDef(XP_SEARCH_IS_AFTER, XP_MSG_BASE + 670, "is after") -ResDef(XP_SEARCH_IS_HIGHER, XP_MSG_BASE + 671, "is higher than") -ResDef(XP_SEARCH_IS_LOWER, XP_MSG_BASE + 672, "is lower than") -ResDef(XP_SEARCH_SOUNDS_LIKE, XP_MSG_BASE + 673, "sounds like") -ResDef(XP_BEGINS_WITH, XP_MSG_BASE + 674, "begins with") - - -/* Message priority names */ -ResDef(XP_PRIORITY_NONE, XP_MSG_BASE + 675, "none") -ResDef(XP_PRIORITY_LOWEST, XP_MSG_BASE + 676, "lowest") -ResDef(XP_PRIORITY_LOW, XP_MSG_BASE + 677, "low") -ResDef(XP_PRIORITY_NORMAL, XP_MSG_BASE + 678, "normal") -ResDef(XP_PRIORITY_HIGH, XP_MSG_BASE + 679, "high") -ResDef(XP_PRIORITY_HIGHEST, XP_MSG_BASE + 680, "highest") - -/* Message status names */ -ResDef(XP_STATUS_READ, XP_MSG_BASE + 681, "read") -ResDef(XP_STATUS_REPLIED, XP_MSG_BASE + 682, "replied") - -ResDef(MK_MSG_RENAME_FOLDER, XP_MSG_BASE + 683, "Rename selected folder") - - -/* 684 unused */ - -ResDef(XP_FILTER_MOVE_TO_FOLDER, XP_MSG_BASE + 685, "Move to folder") -ResDef(XP_FILTER_CHANGE_PRIORITY,XP_MSG_BASE + 686, "Change priority") -ResDef(XP_FILTER_DELETE, XP_MSG_BASE + 687, "Delete") -ResDef(XP_FILTER_MARK_READ, XP_MSG_BASE + 688, "Mark read") -ResDef(XP_FILTER_KILL_THREAD, XP_MSG_BASE + 689, "Kill thread") -ResDef(XP_FILTER_WATCH_THREAD, XP_MSG_BASE + 690, "Watch thread") - - -/* 691, 692 unused */ - -ResDef (XP_SEARCH_DISPLAY_PARTIAL, XP_MSG_BASE + 693, "Display items found so far?") -ResDef (XP_LDAP_SIZELIMIT_EXCEEDED, XP_MSG_BASE + 694, "More than %d items were found. ") - -ResDef (MK_MSG_READ_MORE, XP_MSG_BASE + 700, "Read More" ) -ResDef (MK_MSG_NEXTUNREAD_THREAD, XP_MSG_BASE + 701, "Next Unread Thread" ) -ResDef (MK_MSG_NEXTUNREAD_CATEGORY, XP_MSG_BASE + 702, "Next Unread Category" ) -ResDef (MK_MSG_NEXTUNREAD_GROUP, XP_MSG_BASE + 703, "Next Unread Group" ) - -ResDef (MK_MSG_BY_PRIORITY, XP_MSG_BASE + 704, "By Priority" ) - -ResDef (MK_MSG_FIND, XP_MSG_BASE + 705, "Find..." ) -ResDef (MK_MSG_BY_TYPE, XP_MSG_BASE + 706, "By Type" ) -ResDef (MK_MSG_BY_NAME, XP_MSG_BASE + 707, "By Name" ) -ResDef (MK_MSG_BY_NICKNAME, XP_MSG_BASE + 708, "By Nickname" ) -ResDef (MK_MSG_BY_EMAILADDRESS, XP_MSG_BASE + 709, "By Email Address" ) -ResDef (MK_MSG_BY_COMPANY, XP_MSG_BASE + 710, "By Company" ) -ResDef (MK_MSG_BY_LOCALITY, XP_MSG_BASE + 711, "By Locality" ) -ResDef (MK_MSG_SORT_DESCENDING, XP_MSG_BASE + 712, "Descending" ) -ResDef (MK_MSG_ADD_NAME, XP_MSG_BASE + 713, "Add Name..." ) -ResDef (MK_MSG_ADD_LIST, XP_MSG_BASE + 714, "Add List..." ) -ResDef (MK_MSG_PROPERTIES, XP_MSG_BASE + 715, "Properties..." ) - -ResDef (MK_MSG_SEARCH_STATUS, XP_MSG_BASE + 716, "Searching %s..." ) -ResDef (MK_MSG_NEED_FULLNAME, XP_MSG_BASE + 717, "You must enter a full name." ) -ResDef (MK_MSG_NEED_GIVENNAME, XP_MSG_BASE + 718, "You must enter a first name." ) -ResDef (MK_MSG_REPARSE_FOLDER, XP_MSG_BASE + 719, "Building summary file for %s...") - -ResDef( MK_MSG_ALIVE_THREADS, XP_MSG_BASE + 720, "View all threads") -ResDef( MK_MSG_KILLED_THREADS, XP_MSG_BASE + 721, "View killed threads") -ResDef( MK_MSG_WATCHED_THREADS, XP_MSG_BASE + 722, "View watched threads with new messages") -ResDef( MK_MSG_THREADS_WITH_NEW, XP_MSG_BASE + 723, "View threads with new messages") - -ResDef (XP_LDAP_DIALOG_TITLE, XP_MSG_BASE + 724, "LDAP Directory Entry") -ResDef (XP_LDAP_OPEN_ENTRY_FAILED, XP_MSG_BASE + 725, "Failed to open entry for %s due to LDAP error '%s' (0x%02X)") -ResDef (XP_LDAP_OPEN_SERVER_FAILED,XP_MSG_BASE + 726, "Failed to open a connection to '%s' due to LDAP error '%s' (0x%02X)") -ResDef (XP_LDAP_BIND_FAILED, XP_MSG_BASE + 727, "Failed to bind to '%s' due to LDAP error '%s' (0x%02X)") -ResDef (XP_LDAP_SEARCH_FAILED, XP_MSG_BASE + 728, "Failed to search '%s' due to LDAP error '%s' (0x%02X)") -ResDef (XP_LDAP_MODIFY_FAILED, XP_MSG_BASE + 729, "Failed to modify entry on '%s' due to LDAP error '%s' (0x%02X)") -ResDef (MK_SEARCH_HITS_COUNTER, XP_MSG_BASE + 730, "Found %d matches") -ResDef( MK_MSG_UNSUBSCRIBE_GROUP, XP_MSG_BASE + 731, "Are you sure you want to unsubscribe to %s?") - -ResDef (MK_HDR_DOWNLOAD_COUNT, XP_MSG_BASE + 732, "Received %ld of %ld headers") - -ResDef (MK_MSG_MARK_SEL_FOR_RETRIEVAL, XP_MSG_BASE + 733, "Mark Selected for Retrieval") -ResDef (MK_MSG_DOWNLOAD_COUNT, XP_MSG_BASE + 734, "Received %ld of %ld messages") - -ResDef(XP_MAIL_SEARCHING, XP_MSG_BASE + 735, -"Mail: Searching mail folders..." ) - -ResDef(MK_MSG_IGNORE_THREAD, XP_MSG_BASE + 736, -"Ignore Thread") - -ResDef(MK_MSG_IGNORE_THREADS, XP_MSG_BASE + 737, -"Ignore Threads") - -ResDef(MK_MSG_WATCH_THREAD, XP_MSG_BASE + 738, -"Watch Thread") - -ResDef(MK_MSG_WATCH_THREADS, XP_MSG_BASE + 739, -"Watch Threads") - - -/* #define MK_MIME_NO_SUBJECT -268 */ -ResDef(MK_MIME_NO_SUBJECT, -268, /* Subject: empty */ -"No subject was specified.") - - -ResDef(MK_MSG_ASSEMBLING_MSG, XP_MSG_BASE + 407, - "Assembling message...") - -ResDef(MK_MSG_ASSEMB_DONE_MSG, XP_MSG_BASE + 408, -"Assembling message...Done") - -ResDef(MK_MSG_LOAD_ATTACHMNT, XP_MSG_BASE + 409, - "Loading attachment...") - -ResDef(MK_MSG_LOAD_ATTACHMNTS, XP_MSG_BASE + 410, - "Loading attachments...") - -ResDef(MK_MSG_DELIVERING_MAIL, XP_MSG_BASE + 411, - "Delivering mail...") - -ResDef(MK_MSG_DELIV_MAIL, XP_MSG_BASE + 412, - "Delivering mail...") - -ResDef(MK_MSG_DELIV_MAIL_DONE, XP_MSG_BASE + 413, - "Delivering mail...Done") - -ResDef(MK_MSG_DELIV_NEWS, XP_MSG_BASE + 414, - "Delivering news...") - -ResDef(MK_MSG_DELIV_NEWS_DONE, XP_MSG_BASE + 415, - "Delivering news...Done") - -ResDef(MK_MSG_QUEUEING, XP_MSG_BASE + 416, - "Queueing for later delivery...") - -ResDef(MK_MSG_WRITING_TO_FCC, XP_MSG_BASE + 417, - "Writing to FCC file...") - -ResDef(MK_MSG_QUEUED, XP_MSG_BASE + 418, - "Queued for later delivery.") - -ResDef(MK_MSG_MSG_COMPOSITION, XP_MSG_BASE + 419, - "Message Composition") - -/* MK_MSG_UNKNOWN_ERROR unused XP_MSG_BASE + 420, */ - - -ResDef(MK_MSG_KBYTES_WASTED, XP_MSG_BASE + 421, - "%s %ldK bytes wasted (%ld%%)") - -ResDef(MK_MSG_LOADED_MESSAGES, XP_MSG_BASE + 422, - "%s loaded %ld messages (%ld%%)") - -ResDef(MK_MSG_OPEN_FOLDER, XP_MSG_BASE + 423, - "Add Folder") - -ResDef(MK_MSG_OPEN_FOLDER2, XP_MSG_BASE + 424, - "Add Folder...") - -ResDef(MK_MSG_ENTER_FOLDERNAME, XP_MSG_BASE + 425, - "Enter the name for your new folder.") - -ResDef(MK_MSG_SAVE_MESSAGE_AS, XP_MSG_BASE + 426, - "Save Message As") - -ResDef(MK_MSG_SAVE_MESSAGES_AS, XP_MSG_BASE + 427, - "Save Messages As") - -ResDef(MK_MSG_GET_NEW_MAIL, XP_MSG_BASE + 428, - "Get New Mail") - -ResDef(MK_MSG_DELIV_NEW_MSGS, XP_MSG_BASE + 429, - "Send Messages in Outbox") - -ResDef(MK_MSG_NEW_FOLDER, XP_MSG_BASE + 430, - "New Folder...") - -ResDef(MK_MSG_COMPRESS_FOLDER, XP_MSG_BASE + 431, - "Compress This Folder") - -ResDef(MK_MSG_COMPRESS_ALL_FOLDER, XP_MSG_BASE + 432, - "Compress All Folders") - -ResDef(MK_MSG_OPEN_NEWS_HOST_ETC, XP_MSG_BASE + 433, - "Open News Host...") - -ResDef(MK_MSG_EMPTY_TRASH_FOLDER, XP_MSG_BASE + 434, - "Empty Trash Folder") - -ResDef(MK_MSG_PRINT, XP_MSG_BASE + 435, - "Print...") - -ResDef(MK_MSG_UNDO, XP_MSG_BASE + 436, - "Undo") - -ResDef(MK_MSG_REDO, XP_MSG_BASE + 437, - "Redo") - -ResDef(MK_MSG_DELETE_SEL_MSGS, XP_MSG_BASE + 438, - "Delete Selected Messages") - -ResDef(MK_MSG_DELETE_MESSAGE, XP_MSG_BASE + 439, - "Delete Message") - -ResDef(MK_MSG_DELETE_FOLDER, XP_MSG_BASE + 440, - "Delete Folder") - -ResDef(MK_MSG_CANCEL_MESSAGE, XP_MSG_BASE + 441, - "Cancel Message") - -ResDef(MK_MSG_RMV_NEWS_HOST, XP_MSG_BASE + 442, - "Remove News Host") - -ResDef(MK_MSG_SUBSCRIBE, XP_MSG_BASE + 443, - "Subscribe") - -ResDef(MK_MSG_UNSUBSCRIBE, XP_MSG_BASE + 444, - "Unsubscribe") - -ResDef(MK_MSG_SELECT_THREAD, XP_MSG_BASE + 445, - "Select Thread") - -ResDef(MK_MSG_SELECT_FLAGGED_MSG, XP_MSG_BASE + 446, - "Select Flagged Messages") - -ResDef(MK_MSG_SELECT_ALL, XP_MSG_BASE + 447, - "Select All Messages") - -ResDef(MK_MSG_DESELECT_ALL_MSG, XP_MSG_BASE + 448, - "Deselect All Messages") - -ResDef(MK_MSG_FLAG_MESSAGE, XP_MSG_BASE + 449, - "Flag Message") - -ResDef(MK_MSG_UNFLAG_MESSAGE, XP_MSG_BASE + 450, - "Unflag Message") - -ResDef(MK_MSG_AGAIN, XP_MSG_BASE + 451, - "Again") - -ResDef(MK_MSG_THREAD_MESSAGES, XP_MSG_BASE + 452, - "Thread Messages") - -ResDef(MK_MSG_BY_DATE, XP_MSG_BASE + 453, - "By Date") - -ResDef(MK_MSG_BY_SENDER, XP_MSG_BASE + 454, - "By Sender") - -ResDef(MK_MSG_BY_SUBJECT, XP_MSG_BASE + 455, - "By Subject") - -ResDef(MK_MSG_BY_MESSAGE_NB, XP_MSG_BASE + 456, - "By Message Number") - -ResDef(MK_MSG_UNSCRAMBLE, XP_MSG_BASE + 457, - "Unscramble (Rot13)") - -ResDef(MK_MSG_ADD_FROM_NEW_MSG, XP_MSG_BASE + 458, - "Add from Newest Messages") - -ResDef(MK_MSG_ADD_FROM_OLD_MSG, XP_MSG_BASE + 459, - "Add from Oldest Messages") - -ResDef(MK_MSG_GET_MORE_MSGS, XP_MSG_BASE + 460, - "Get More Messages") - -ResDef(MK_MSG_GET_ALL_MSGS, XP_MSG_BASE + 461, - "Get All Messages") - -ResDef(MK_MSG_ADDRESS_BOOK, XP_MSG_BASE + 462, - "Address Book") - -ResDef(MK_MSG_VIEW_ADDR_BK_ENTRY, XP_MSG_BASE + 463, - "View Address Book Entry") - -ResDef(MK_MSG_ADD_TO_ADDR_BOOK, XP_MSG_BASE + 464, - "Add to Address Book") - -ResDef(MK_MSG_NEW_NEWS_MESSAGE, XP_MSG_BASE + 465, - "New News Message") - -ResDef(MK_MSG_POST_REPLY, XP_MSG_BASE + 466, - "Post Reply") - -ResDef(MK_MSG_POST_MAIL_REPLY, XP_MSG_BASE + 467, - "Post And Mail Reply") - -ResDef(MK_MSG_NEW_MAIL_MESSAGE, XP_MSG_BASE + 468, - "New Mail Message") - -ResDef(MK_MSG_REPLY, XP_MSG_BASE + 469, - "Reply") - -ResDef(MK_MSG_REPLY_TO_ALL, XP_MSG_BASE + 470, - "Reply To All") - -ResDef(MK_MSG_FWD_SEL_MESSAGES, XP_MSG_BASE + 471, - "Forward Selected Messages") - -ResDef(MK_MSG_FORWARD, XP_MSG_BASE + 472, - "Forward") - -ResDef(MK_MSG_MARK_SEL_AS_READ, XP_MSG_BASE + 473, - "Mark Selected as Read") - -ResDef(MK_MSG_MARK_AS_READ, XP_MSG_BASE + 474, - "Mark as Read") - -ResDef(MK_MSG_MARK_SEL_AS_UNREAD, XP_MSG_BASE + 475, - "Mark Selected as Unread") - -ResDef(MK_MSG_MARK_AS_UNREAD, XP_MSG_BASE + 476, - "Mark as Unread") - -ResDef(MK_MSG_UNFLAG_ALL_MSGS, XP_MSG_BASE + 477, - "Unflag All Messages") - -ResDef(MK_MSG_COPY_SEL_MSGS, XP_MSG_BASE + 478, - "Copy Selected Messages") - -ResDef(MK_MSG_COPY_ONE, XP_MSG_BASE + 479, - "Copy") - -ResDef(MK_MSG_MOVE_SEL_MSG, XP_MSG_BASE + 480, - "Move Selected Messages") - -ResDef(MK_MSG_MOVE_ONE, XP_MSG_BASE + 481, - "Move") - -ResDef(MK_MSG_SAVE_SEL_MSGS, XP_MSG_BASE + 482, - "Save Selected Messages As...") - -ResDef(MK_MSG_SAVE_AS, XP_MSG_BASE + 483, - "Save As...") - -ResDef(MK_MSG_MOVE_SEL_MSG_TO, XP_MSG_BASE + 484, - "Move Selected Messages To...") - -ResDef(MK_MSG_MOVE_MSG_TO, XP_MSG_BASE + 485, - "Move This Message To...") - -ResDef(MK_MSG_FIRST_MSG, XP_MSG_BASE + 486, - "First Message") - -ResDef(MK_MSG_NEXT_MSG, XP_MSG_BASE + 487, - "Next Message") - -ResDef(MK_MSG_PREV_MSG, XP_MSG_BASE + 488, - "Previous Message") - -ResDef(MK_MSG_LAST_MSG, XP_MSG_BASE + 489, - "Last Message") - -ResDef(MK_MSG_FIRST_UNREAD, XP_MSG_BASE + 490, - "First Unread") - -ResDef(MK_MSG_NEXT_UNREAD, XP_MSG_BASE + 491, - "Next Unread") - -ResDef(MK_MSG_PREV_UNREAD, XP_MSG_BASE + 492, - "Previous Unread") - -ResDef(MK_MSG_LAST_UNREAD, XP_MSG_BASE + 493, - "Last Unread") - -ResDef(MK_MSG_FIRST_FLAGGED, XP_MSG_BASE + 494, - "First Flagged") - -ResDef(MK_MSG_NEXT_FLAGGED, XP_MSG_BASE + 495, - "Next Flagged") - -ResDef(MK_MSG_PREV_FLAGGED, XP_MSG_BASE + 496, - "Previous Flagged") - -ResDef(MK_MSG_LAST_FLAGGED, XP_MSG_BASE + 497, - "Last Flagged") - -ResDef(MK_MSG_MARK_SEL_READ, XP_MSG_BASE + 498, - "Mark Selected Threads Read") - -ResDef(MK_MSG_MARK_THREAD_READ, XP_MSG_BASE + 499, - "Mark Thread Read") - -ResDef(MK_MSG_MARK_NEWSGRP_READ, XP_MSG_BASE + 500, - "Mark Newsgroup Read") - -ResDef(MK_MSG_SHOW_SUB_NEWSGRP, XP_MSG_BASE + 501, - "Show Subscribed Newsgroups") - -ResDef(MK_MSG_SHOW_ACT_NEWSGRP, XP_MSG_BASE + 502, - "Show Active Newsgroups") - -ResDef(MK_MSG_SHOW_ALL_NEWSGRP, XP_MSG_BASE + 503, - "Show All Newsgroups") - -ResDef(MK_MSG_CHECK_FOR_NEW_GRP, XP_MSG_BASE + 504, - "Check for New Groups") - -ResDef(MK_MSG_SHOW_ALL_MSGS, XP_MSG_BASE + 505, - "Show All Messages") - -ResDef(MK_MSG_SHOW_UNREAD_ONLY, XP_MSG_BASE + 506, - "Show Only Unread Messages") - -/* This #$%^S!! - MK_MSG_SHOW_MICRO_HEADERS and MK_MSG_SHOW_SOME_HEADERS are way at the end. - */ - -ResDef(MK_MSG_SHOW_ALL_HEADERS, XP_MSG_BASE + 507, - "All") - -ResDef(MK_MSG_QUOTE_MESSAGE, XP_MSG_BASE + 508, - "Include Original Text") - -ResDef(MK_MSG_FROM, XP_MSG_BASE + 509, - "From") - -ResDef(MK_MSG_REPLY_TO, XP_MSG_BASE + 510, - "Reply To") - -ResDef(MK_MSG_MAIL_TO, XP_MSG_BASE + 511, - "Mail To") - -ResDef(MK_MSG_MAIL_CC, XP_MSG_BASE + 512, - "Mail CC") - -ResDef(MK_MSG_MAIL_BCC, XP_MSG_BASE + 513, - "Mail BCC") - -ResDef(MK_MSG_FILE_CC, XP_MSG_BASE + 514, - "File CC") - -ResDef(MK_MSG_POST_TO, XP_MSG_BASE + 515, - "Newsgroups") - -ResDef(MK_MSG_FOLLOWUPS_TO, XP_MSG_BASE + 516, - "Followups To") - -ResDef(MK_MSG_SUBJECT, XP_MSG_BASE + 517, - "Subject") - -ResDef(MK_MSG_ATTACHMENT, XP_MSG_BASE + 518, - "Attachment") - -ResDef(MK_MSG_SEND_FORMATTED_TEXT, XP_MSG_BASE + 519, - "Send Formatted Text") - -ResDef(MK_MSG_Q4_LATER_DELIVERY, XP_MSG_BASE + 520, - "Queue For Later Delivery") - -ResDef(MK_MSG_ATTACH_AS_TEXT, XP_MSG_BASE + 521, - "Attach As Text") - -ResDef(MK_MSG_FLAG_MESSAGES, XP_MSG_BASE + 522, - "Flag Messages") - -ResDef(MK_MSG_UNFLAG_MESSAGES, XP_MSG_BASE + 523, - "Unflag Messages") - -ResDef(MK_MSG_SORT_BACKWARD, XP_MSG_BASE + 524, - "Ascending") - -ResDef(MK_MSG_PARTIAL_MSG_FMT_1, XP_MSG_BASE + 525, - "<P><CENTER>\n<TABLE BORDER CELLSPACING=5 CELLPADDING=10 WIDTH=\04280%%\042>\n\ -<TR><TD ALIGN=CENTER><FONT SIZE=\042+1\042>Truncated!</FONT><HR>\n") - -ResDef(MK_MSG_PARTIAL_MSG_FMT_2, XP_MSG_BASE + 526, - "<B>This message exceeded the Maximum Message Size set in Preferences,\n\ -so we have only downloaded the first few lines from the mail server.<P>Click <A HREF=\042") - -ResDef(MK_MSG_PARTIAL_MSG_FMT_3, XP_MSG_BASE + 527, - "\042>here</A> to download the rest of the message.</B></TD></TR></TABLE></CENTER>\n") - -ResDef(MK_MSG_NO_HEADERS, XP_MSG_BASE + 528, - "(no headers)") - -ResDef(MK_MSG_UNSPECIFIED, XP_MSG_BASE + 529, - "(unspecified)") - -ResDef(MK_MSG_MIME_MAC_FILE, XP_MSG_BASE + 530, - "Macintosh File") - -ResDef(MK_MSG_DIR_DOESNT_EXIST, XP_MSG_BASE + 531, - "The directory %s does not exist. Mail will not\nwork without it.\n\nCreate it now?") - -ResDef(MK_MSG_SAVE_DECODED_AS, XP_MSG_BASE + 532, - "Save decoded file as:") - -ResDef(MK_MSG_FILE_HAS_CHANGED, XP_MSG_BASE + 533, - "The file %s has been changed by some other program!\nOverwrite it?") - -ResDef(MK_MSG_OPEN_NEWS_HOST, XP_MSG_BASE + 534, - "Open News Host") - -ResDef(MK_MSG_ANNOUNCE_NEWSGRP, XP_MSG_BASE + 535, - "news.announce.newusers") - -ResDef(MK_MSG_QUESTIONS_NEWSGRP, XP_MSG_BASE + 536, - "news.newusers.questions") - -ResDef(MK_MSG_ANSWERS_NEWSGRP, XP_MSG_BASE + 537, - "news.answers") - -ResDef(MK_MSG_COMPRESS_FOLDER_ETC, XP_MSG_BASE + 538, - "Mail: Compressing folder %s...") - -ResDef(MK_MSG_COMPRESS_FOLDER_DONE, XP_MSG_BASE + 539, - "Mail: Compressing folder %s...Done") - -ResDef(MK_MSG_CANT_OPEN, XP_MSG_BASE + 540, - "Can't open %s.") - -ResDef(MK_MSG_SAVE_ATTACH_AS, XP_MSG_BASE + 541, - "Save attachment in BinHex file as:") - -ResDef(MK_MSG_ADD_NEWS_GROUP, XP_MSG_BASE + 574, "Add Newsgroup...") -ResDef(MK_MSG_FIND_AGAIN, XP_MSG_BASE + 575, "Find Again") -ResDef(MK_MSG_SEND, XP_MSG_BASE + 576, "Send") -ResDef(MK_MSG_SEND_LATER, XP_MSG_BASE + 577, "Send Later") -ResDef(MK_MSG_ATTACH_ETC, XP_MSG_BASE + 578, "Attach...") -ResDef(MK_MSG_ATTACHMENTSINLINE, XP_MSG_BASE + 579, "Attachments Inline") -ResDef(MK_MSG_ATTACHMENTSASLINKS, XP_MSG_BASE + 580, "Attachments as Links") -ResDef(MK_MSG_FORWARD_QUOTED, XP_MSG_BASE + 581, "Forward Quoted") -ResDef(MK_MSG_REMOVE_HOST_CONFIRM, XP_MSG_BASE + 582, - "Are you sure you want to remove the news host %s\n\ -and all of the newsgroups in it?") - -ResDef(MK_MSG_ALL_FIELDS, XP_MSG_BASE + 583, "All Fields") - -ResDef(MK_MSG_BOGUS_QUEUE_MSG_1, XP_MSG_BASE + 584, - "The `Outbox' folder contains a message which is not\n\ -scheduled for delivery!") - -ResDef(MK_MSG_BOGUS_QUEUE_MSG_N, XP_MSG_BASE + 585, - "The `Outbox' folder contains %d messages which are not\n\ -scheduled for delivery!") - -ResDef(MK_MSG_BOGUS_QUEUE_REASON, XP_MSG_BASE + 586, - "\n\nThis probably means that some program other than\n\ -Netscape has added messages to this folder.\n") - -ResDef(MK_MSG_WHY_QUEUE_SPECIAL, XP_MSG_BASE + 587, - "The `Outbox' folder is special; it is only for holding\n\ -messages which have been deferred for later delivery.") - -ResDef(MK_MSG_NOT_AS_SENT_FOLDER, XP_MSG_BASE + 588, - "\nTherefore, you can't use it as your `Sent' folder.\n\ -\n\ -Please verify that your outgoing messages destination is correct\n\ -in your Mail & News preferences.") -ResDef(MK_MSG_QUEUED_DELIVERY_FAILED, XP_MSG_BASE + 589, - "An error occurred delivering deferred mail.\n\n\ -%s\n\ -Continue delivery of any remaining deferred messages ?") - -ResDef(XP_PASSWORD_FOR_POP3_USER, XP_MSG_BASE + 590, - "Password for POP3 user %.100s@%.100s:") - - -/* Whoever decided all these numbers should be consecutive should be shot. */ -ResDef(MK_MSG_SHOW_MICRO_HEADERS, XP_MSG_BASE + 630, - "Brief") -ResDef(MK_MSG_SHOW_SOME_HEADERS, XP_MSG_BASE + 631, - "Normal") - -ResDef(MK_MSG_DELETE_FOLDER_MESSAGES, XP_MSG_BASE + 632, - "There are still messages in folder '%s'.\n\ -Are you sure you still want to delete this folder?") - - -END_STR (MSG_strings) - -#endif - - - - diff --git a/mozilla/lib/libmsg/msg_opaq.h b/mozilla/lib/libmsg/msg_opaq.h deleted file mode 100644 index 954c44e0e40..00000000000 --- a/mozilla/lib/libmsg/msg_opaq.h +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* Defines a base class designed to validate objects across the C to C++ API */ - -#ifndef _MSG_OPAQ_H -#define _MSG_OPAQ_H - -struct msg_OpaqueObject -{ -public: - msg_OpaqueObject (uint32 magic); - virtual ~msg_OpaqueObject (); - XP_Bool IsValid (); -protected: - virtual uint32 GetExpectedMagic() = 0; - - XP_Bool m_deleted; - uint32 m_magic; -}; - -inline msg_OpaqueObject::msg_OpaqueObject (uint32 magic) -{ - m_magic = magic; - m_deleted = FALSE; -} -inline msg_OpaqueObject::~msg_OpaqueObject () -{ - m_deleted = TRUE; -} -inline XP_Bool msg_OpaqueObject::IsValid () -{ - // might die simply calling thru the v-table. definitely invalid! - return (this && !m_deleted) && (m_magic == GetExpectedMagic()); -} - -#endif - - diff --git a/mozilla/lib/libmsg/msgbg.cpp b/mozilla/lib/libmsg/msgbg.cpp deleted file mode 100644 index c870f3c65a2..00000000000 --- a/mozilla/lib/libmsg/msgbg.cpp +++ /dev/null @@ -1,137 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "msgbg.h" -#include "msgpane.h" -#include "msgurlq.h" - -extern "C" { - extern int MK_OUT_OF_MEMORY; -} - -msg_Background::msg_Background() -{ -} - - -msg_Background::~msg_Background() -{ - if (m_pane) Interrupt(); -} - - -int -msg_Background::Begin(MSG_Pane* pane) -{ - XP_ASSERT(!m_pane); - if (m_pane) return -1; - char* url = XP_STRDUP("mailbox:?background"); - if (!url) return MK_OUT_OF_MEMORY; - m_urlstruct = NET_CreateURLStruct(url, NET_NORMAL_RELOAD); - if (!m_urlstruct) { - XP_FREE(url); - return MK_OUT_OF_MEMORY; - } - XP_FREE(url); - m_urlstruct->internal_url = TRUE; - m_pane = pane; - msg_InterruptContext(pane->GetContext(), TRUE); - XP_ASSERT(pane->GetCurrentBackgroundJob() == NULL); - pane->SetCurrentBackgroundJob(this); - MSG_UrlQueue::AddUrlToPane(m_urlstruct, msg_Background::PreExit_s, pane); - return 0; -} - - - -void -msg_Background::Interrupt() -{ - XP_ASSERT(m_pane); - if (m_pane) { - msg_InterruptContext(m_pane->GetContext(), FALSE); - XP_ASSERT(m_pane == NULL); - } -} - - -msg_Background* -msg_Background::FindBGObj(URL_Struct* urlstruct) -{ - XP_ASSERT(urlstruct && urlstruct->msg_pane); - if (!urlstruct || !urlstruct->msg_pane) return NULL; - msg_Background* result = urlstruct->msg_pane->GetCurrentBackgroundJob(); - // OK, I'm truly evil, but I'm using this as an empty url that goes through - // netlib once. so result will be null... - XP_ASSERT(!result || result->m_pane == urlstruct->msg_pane); - return result; -} - - -int -msg_Background::ProcessBackground(URL_Struct* urlstruct) -{ - msg_Background* obj = FindBGObj(urlstruct); - if (obj) { - return obj->DoSomeWork(); - } - return MK_CONNECTED; -} - - - -void -msg_Background::PreExit_s(URL_Struct* urlstruct, int status, - MWContext* context) -{ - msg_Background* obj = FindBGObj(urlstruct); - if (obj) { - obj->PreExit(urlstruct, status, context); - } -} - -void -msg_Background::PreExit(URL_Struct* /*urlstruct*/, int status, - MWContext*) -{ - XP_Bool deleteself = AllDone(status); - XP_ASSERT(m_pane); - if (m_pane) { - m_pane->SetCurrentBackgroundJob(NULL); - m_pane = NULL; - } - if (deleteself) delete this; -} - - -XP_Bool -msg_Background::AllDone(int /*status*/) -{ - return FALSE; -} - -XP_Bool -msg_Background::IsRunning() -{ - return m_pane != NULL; -} diff --git a/mozilla/lib/libmsg/msgbg.h b/mozilla/lib/libmsg/msgbg.h deleted file mode 100644 index 13cd6ae44ee..00000000000 --- a/mozilla/lib/libmsg/msgbg.h +++ /dev/null @@ -1,87 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgBg_H_ -#define _MsgBg_H_ - -#include "msgzap.h" - -class MSG_Pane; - -class msg_Background : public MSG_ZapIt { -public: - msg_Background(); - virtual ~msg_Background(); - - /* Begin() kicks things off. Sometime after making this call, calls will - be made to DoSomeWork(). This will interrupt any current background - operation or URL running on the given MSG_Pane. */ - virtual int Begin(MSG_Pane* pane); - - - /* Interrupt() interrupts the running background operation. Just does an - InterruptContext on the pane's context. */ - virtual void Interrupt(); - - /* Whether we are currently doing our background operation. */ - virtual XP_Bool IsRunning(); - - - // This routine is called from netlib (via msgglue) to cause us to actually - // do something. - static int ProcessBackground(URL_Struct* urlstruct); - -protected: - - static msg_Background* FindBGObj(URL_Struct* urlstruct); - - static void PreExit_s(URL_Struct* urlstruct, int status, - MWContext* context); - virtual void PreExit(URL_Struct* urlstruct, int status, - MWContext* context); - - - - /* The below are the only routines typically redefined by subclasses. */ - - - /* DoSomeWork() keeps getting called. If it returns - MK_WAITING_FOR_CONNECTION, that means it hasn't finished its stuff. If - it returns MK_CONNECTED, that means it has successfully finished. If it - returns a negative value, that means we failed and it's an error - condition. */ - virtual int DoSomeWork() = 0; - - - /* AllDone() gets called when things are finished. If the given status is - negative, then we were interrupted or had an error. This is a good - place to kick off another background operation. If it returns TRUE, - then this background object will be destroyed. */ - virtual XP_Bool AllDone(int status); - - MSG_Pane* m_pane; - URL_Struct* m_urlstruct; - -}; - - -#endif /* _MsgBg_H_ */ diff --git a/mozilla/lib/libmsg/msgbgcln.cpp b/mozilla/lib/libmsg/msgbgcln.cpp deleted file mode 100644 index 6e306ed01eb..00000000000 --- a/mozilla/lib/libmsg/msgbgcln.cpp +++ /dev/null @@ -1,174 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" - -#include "msgbgcln.h" -#include "msgcmfld.h" -#include "msgpane.h" -#include "msgfinfo.h" -#include "msgpurge.h" -#include "msgimap.h" - -MSG_BackgroundCleanup::MSG_BackgroundCleanup(XPPtrArray &foldersToCleanup) -{ - m_foldersToCleanup.InsertAt(0, &foldersToCleanup); - m_currentFolderCompressor = 0; - m_currentNewsgroupPurger = 0; -} - -MSG_BackgroundCleanup::~MSG_BackgroundCleanup() -{ - delete m_currentFolderCompressor; - delete m_currentNewsgroupPurger; -} - -int MSG_BackgroundCleanup::DoSomeWork() -{ - int status; - - switch (m_state) - { - case BGCleanupStart: - m_state = BGCleanupNextGroup; - break; - case BGCleanupNextGroup: - if (m_folderIndex >= m_foldersToCleanup.GetSize()) - return MK_CONNECTED; - else - m_folder = m_foldersToCleanup.GetAt(m_folderIndex++); - m_bytesTotal = m_bytesCompressed = 0; - if (m_folder->IsMail()) - { - MSG_IMAPFolderInfoMail *imapFolder = m_folder->GetIMAPFolderInfoMail(); - // only try to cleanup this folder if the user is authenticated - if (imapFolder && m_pane->GetMaster()->IsUserAuthenticated()) - { - // this will add the compress url to the url queue we are running in. - imapFolder->ClearRequiresCleanup(); // pretend it's going to work. - if (imapFolder->GetFlags() & MSG_FOLDER_FLAG_TRASH) - imapFolder->DeleteAllMessages(m_pane, FALSE); - else if (m_pane->GetMaster()->HasCachedConnection(imapFolder)) - m_pane->CompressOneMailFolder(imapFolder); - } - else - { - m_currentFolderCompressor = - new MSG_CompressFolderState(m_pane->GetMaster(), m_pane->GetContext(), NULL, - (MSG_FolderInfoMail *)m_folder, - m_bytesCompressed, - m_bytesTotal); - - status = m_currentFolderCompressor->BeginCompression(); - } - } - else if (m_folder->IsNews()) - { - // ### dmb check errors - m_currentNewsgroupPurger = new MSG_PurgeNewsgroupState(m_pane, m_folder); - m_currentNewsgroupPurger->Init(); - } - m_state = BGCleanupMoreHeaders; - break; - case BGCleanupMoreHeaders: - { - if (m_folder->IsMail()) - { - MSG_IMAPFolderInfoMail *imapFolder = m_folder->GetIMAPFolderInfoMail(); - if (imapFolder) - { - m_state = BGCleanupNextGroup; - status = 0; - } - else - { - status = m_currentFolderCompressor->CompressSomeMore(); - if (status != MK_WAITING_FOR_CONNECTION) - { - if (status < 0) - { - char* pString = XP_GetString(status); - if (pString && strlen(pString)) - FE_Alert(m_pane->GetContext(), pString); - } - m_state = BGCleanupNextGroup; - status = StopCompression(); - } - } - } - else if (m_folder->IsNews()) - { - status = m_currentNewsgroupPurger->PurgeSomeMore(); - if (status != MK_WAITING_FOR_CONNECTION) - { - m_state = BGCleanupNextGroup; - status = StopPurging(); - } - } - } - break; - default: - break; - } - return MK_WAITING_FOR_CONNECTION; -} - -int MSG_BackgroundCleanup::StopCompression() -{ - int status = m_currentFolderCompressor->FinishCompression(); - delete m_currentFolderCompressor; - m_currentFolderCompressor = NULL; - return status; -} - -int MSG_BackgroundCleanup::StopPurging() -{ - int status = m_currentNewsgroupPurger->FinishPurging(); - delete m_currentNewsgroupPurger; - m_currentNewsgroupPurger = NULL; - return status; -} - - -XP_Bool MSG_BackgroundCleanup::AllDone(int /*status*/) -{ - if (m_folder) - { - if (m_folder->IsMail() && m_currentFolderCompressor) - StopCompression(); - else if (m_folder->IsNews() && m_currentNewsgroupPurger) - StopPurging(); - - } - return TRUE; -} - -int MSG_BackgroundCleanup::DoNextFolder() -{ - return 0; -} - -int MSG_BackgroundCleanup::DoProcess() -{ - return 0; -} - diff --git a/mozilla/lib/libmsg/msgbgcln.h b/mozilla/lib/libmsg/msgbgcln.h deleted file mode 100644 index 7407152b39b..00000000000 --- a/mozilla/lib/libmsg/msgbgcln.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgBgCleanup_H_ -#define _MsgBgCleanup_H_ - -#include "msgbg.h" -#include "ptrarray.h" - -class MSG_CompressFolderState; -class MSG_PurgeNewsgroupState; - -enum BackgroundCleanupState -{ - BGCleanupStart = 0, - BGCleanupNextGroup, - BGCleanupMoreHeaders, - BGCleanupAbort -}; - - -class MSG_BackgroundCleanup : public msg_Background -{ -public: - MSG_BackgroundCleanup(XPPtrArray &foldersToCleanup); - virtual ~MSG_BackgroundCleanup(); - -protected: - MSG_FolderArray m_foldersToCleanup; - int m_folderIndex; - MSG_FolderInfo *m_folder; - MSG_CompressFolderState *m_currentFolderCompressor; - MSG_PurgeNewsgroupState *m_currentNewsgroupPurger; - virtual int DoSomeWork(); - virtual XP_Bool AllDone(int status); - int DoNextFolder(); - int DoProcess(); - int StopCompression(); - int StopPurging(); - BackgroundCleanupState m_state; - int32 m_bytesCompressed; - int32 m_bytesTotal; -}; - -#endif diff --git a/mozilla/lib/libmsg/msgbiff.h b/mozilla/lib/libmsg/msgbiff.h deleted file mode 100644 index e21d14ab66f..00000000000 --- a/mozilla/lib/libmsg/msgbiff.h +++ /dev/null @@ -1,127 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - -This are the new classes defined to support multi-server conenctions -and biffing. But just because my dog's name has to be somewhere in here -(a log, very long tradition and story we hereby say 'nikidawg' So There. -You would be amazed how many programs/platforms have NIKI in their code... - - We declare a master class for the Biff, which handles the timeouts, - adding and removing biff classes. Each folder of INBOX type should - have a biff, altough it does not need to be actively beefing. - -*/ - - - -class MSG_NikiBiff -{ -public: - - MSG_NikiBiff(); - ~MSG_NikiBiff(); - void MailCheck(void); - void SetFolderName(char *name); - void SetNext(MSG_NikiBiff *next); - void SetInterval(int32 interval); - void SetCheckFlag(XP_Bool check); - void SetEnabled(XP_Bool enabled); - void SetCallback(void *call); - void SetStatFile(char *name); - void SetPrefs(MSG_Prefs *prefs); - void SetHostName(char *name); - void SetContext(MWContext *context); - void OldPOP3Biff(void); - MSG_NikiBiff* GetNext(void); - MSG_NikiBiff* RemoveSelf(void); - time_t GetNextBiffTime(void); - void PrefsChanged(const char* pref, void *closure); - char* GetName(void); - -private: - char *m_folderName; - char *m_host; - MSG_Pane *m_pane; - MSG_Master *m_master; - MWContext *m_context; - MSG_Prefs *m_prefs; - int32 m_interval; - char *m_biffStatFile; - MSG_NikiBiff *m_next; - time_t m_nextTime; - XP_Bool m_needsToCheck; - XP_Bool m_enabled; - XP_Bool m_getHeaders; - XP_Bool m_pop3GetsMail; - void *m_callback; -}; - - - -class MSG_Biff_Master -{ -public: - - MSG_Biff_Master(); - ~MSG_Biff_Master(); - void Init(MWContext* context, MSG_Prefs* prefs); - void FindNextBiffer(void); - void TimeIsUp(void); - static void Init_Biff_Master(MWContext* context, MSG_Prefs* prefs); - static void TimerCall(void *closure); - static int PR_CALLBACK PrefsChanged(const char* pref, void* closure); - static void AddBiffFolder(char *name, XP_Bool checkMail, int interval, XP_Bool enabled, char *host); - static void RemoveBiffFolder(char *name); - static void MailCheckEnable(char *name, XP_Bool enable); - static XP_Bool NikiCallingGetNewMail(void); - static MSG_Pane* GetPane(void); - void FindAndEnable(char *name, XP_Bool enable); - void AddFolder(char *name, XP_Bool checkMail, int interval, XP_Bool enabled, char *host); - void RemoveFolder(char *name); - void PrefCalls(const char* pref, void* closure); - void SetNikiBiffState(MSG_BIFF_STATE state); - XP_Bool NikiBusy(void); - MSG_BIFF_STATE GetNikiBiffState(void); - MWContext* GetContext(void); - MWContext* FindMailContext(void); - - - -private: - - MSG_Prefs *m_prefs; - MSG_Pane *m_nikiPane; - MWContext *m_context; // for old biff - MWContext *m_nikiContext; // for our new progress dialog - MSG_Master *m_master; - MSG_NikiBiff *m_biff; - MSG_NikiBiff *m_currentBiff; - void *m_timer; - MSG_BIFF_STATE m_state; - int32 m_serverType; - XP_Bool m_nikiBusy; -}; - - - diff --git a/mozilla/lib/libmsg/msgccach.cpp b/mozilla/lib/libmsg/msgccach.cpp deleted file mode 100644 index 9efa4408ede..00000000000 --- a/mozilla/lib/libmsg/msgccach.cpp +++ /dev/null @@ -1,265 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "msgccach.h" -#include "imap.h" -#include "prtime.h" -#include "msgimap.h" -#include "prefapi.h" - -const int32 kImapCacheTimeLimitInSeconds = 1740; // 29 minutes, RFC says server must not -// drop before 30 minutes - - -MSG_CachedConnectionList::MSG_CachedConnectionList() -{ - m_numNullFolders = 0; -} - -MSG_CachedConnectionList::~MSG_CachedConnectionList() -{ -} - -XP_Bool MSG_CachedConnectionList::AddConnection(TNavigatorImapConnection *connection, MSG_FolderInfo *folder, MSG_IMAPHost *host) -{ - int32 maxCachedConnections = 10; - PREF_GetIntPref("mail.imap.max_cached_connections", &maxCachedConnections); -#ifdef DEBUG_bienvenu - if (GetSize() >= maxCachedConnections) - { - XP_Trace("connection cache full!\n"); - for (int32 i = 0; i < GetSize(); i++) - { - struct MSG_CachedConnection *curConn = GetAt(i); - if (curConn) - XP_Trace("in connection cache - %s\n", curConn->m_folder ? curConn->m_folder->GetName() : ""); - } - } -#endif - if (GetSize() >= maxCachedConnections) - { // try to find a connection to remove - XPPtrArray referringPanes; - - for (int32 i = 0; i < GetSize(); i++) - { - struct MSG_CachedConnection *curConn = GetAt(i); - MSG_FolderInfo *connFolder = curConn ? curConn->m_folder : 0; - - // remove the first cached connection we can find that is not for an inbox, - // and which isn't being displayed in any window - if (connFolder && !(connFolder->GetFlags() & MSG_FOLDER_FLAG_INBOX)) - { - connFolder->GetMaster()->FindPanesReferringToFolder(connFolder, &referringPanes); - if (referringPanes.GetSize() == 0) - { - IMAP_TerminateConnection (curConn->m_connection); - RemoveAt(i); - delete curConn; - break; - } - } - } - } - if (GetSize() >= maxCachedConnections || (folder == NULL && m_numNullFolders > 1)) - return FALSE; - - struct MSG_CachedConnection *cachedConnection = new MSG_CachedConnection; - - if (cachedConnection) - { - if (!folder) - m_numNullFolders++; - cachedConnection->m_connection = connection; - cachedConnection->m_folder = folder; - cachedConnection->m_host = (folder) ? ((MSG_IMAPFolderInfoMail *) folder)->GetIMAPHost() : host; -#ifndef NSPR20 - cachedConnection->m_ImapCacheTimeStamp = PR_NowS(); // time in seconds -#else - { - int64 nowS; - LL_I2L(nowS, PR_IntervalToSeconds(PR_IntervalNow())); - cachedConnection->m_ImapCacheTimeStamp = nowS; // time in seconds - } -#endif /* NSPR20 */ - Add(cachedConnection); - return TRUE; - } - return FALSE; -} - -TNavigatorImapConnection * MSG_CachedConnectionList::RemoveConnection(MSG_FolderInfo *folder, MSG_IMAPHost *host) -{ - int cacheIndex; - TNavigatorImapConnection *returnConnection = NULL; - XP_Bool hasConnection = HasConnection(folder, host, cacheIndex); - if (hasConnection) - { - struct MSG_CachedConnection *curConn = GetAt(cacheIndex); - returnConnection = curConn->m_connection; - delete curConn; - RemoveAt(cacheIndex); - } - // if we didn't find one, try finding an unused (by an open folder) connection - if (!returnConnection && folder) - return RemoveConnection(NULL, host); - - return returnConnection; -} - -XP_Bool MSG_CachedConnectionList::HasConnection(MSG_FolderInfo *folder, MSG_IMAPHost *host, int &cacheIndex) -{ - TNavigatorImapConnection *returnConnection = NULL; - int32 timeoutLimitInSeconds = kImapCacheTimeLimitInSeconds; - - int i; - for (i = 0; i < GetSize(); i++) - { - struct MSG_CachedConnection *curConn = GetAt(i); - // if curConn->m_folder is NULL - if (curConn && curConn->m_folder == folder && curConn->m_host == host) - { - returnConnection = curConn->m_connection; - - if (curConn->m_folder == NULL) - m_numNullFolders--; - if (returnConnection) - { - // check to see if time limit expired - int64 cacheTimeLimit; - int64 diffFromLimit; - - int32 overriddenTimeLimit; - if (PREF_GetIntPref("mail.imap.connection_timeout", &overriddenTimeLimit) == PREF_OK) - timeoutLimitInSeconds = overriddenTimeLimit; - - LL_I2L(cacheTimeLimit, timeoutLimitInSeconds); -#ifndef NSPR20 - LL_SUB(diffFromLimit, PR_NowS(), curConn->m_ImapCacheTimeStamp); // r = a - b -#else - { - int64 nowS; - LL_I2L(nowS, PR_IntervalToSeconds(PR_IntervalNow())); - LL_SUB(diffFromLimit, nowS, curConn->m_ImapCacheTimeStamp); // r = a - b - } -#endif /* NSPR20 */ - LL_SUB(diffFromLimit, diffFromLimit, cacheTimeLimit); // r = a - b - if (LL_GE_ZERO(diffFromLimit)) - { - // the time limit was exceeded, kill this connection - IMAP_TerminateConnection(returnConnection); - delete curConn; - RemoveAt(i); - returnConnection = NULL; - } - } - break; - } - } - // if we didn't find one, try finding an unused (by an open folder) connection - - cacheIndex = i; - return (returnConnection != NULL); -} - -struct MSG_CachedConnection *MSG_CachedConnectionList::GetAt (int i) const -{ - return (struct MSG_CachedConnection *) XPPtrArray::GetAt(i); -} - -void MSG_CachedConnectionList::CloseAllConnections() -{ - for (int i = 0; i < GetSize(); i++) - { - struct MSG_CachedConnection *cachedConn = GetAt(i); - if (cachedConn) - { - IMAP_TerminateConnection (cachedConn->m_connection); - delete cachedConn; - } - } - RemoveAll(); -} - -void MSG_CachedConnectionList::FolderClosed(MSG_FolderInfo *folder) -{ - if (!(folder->GetFlags() & MSG_FOLDER_FLAG_INBOX)) - { - // if one of the connections in the connection cache is for - // this folder, close it and remove it. If we are the only - // connection, leave it, but clear the folder so we will - // re-use the connection for another folder. - for (int i = 0; i < GetSize(); i++) - { - struct MSG_CachedConnection *cachedConn = GetAt(i); - if (cachedConn && cachedConn->m_folder == folder) - { - // We want to account for the fact that we will leave a - // connection for the inbox open at all times. It's possible - // that we could have two connections that aren't the inbox - if (ShouldRemoveConnection()) - { - IMAP_TerminateConnection (cachedConn->m_connection); - RemoveAt(i); - delete cachedConn; - } - else - { - cachedConn->m_folder = NULL; - } - } - } - } -} - -void MSG_CachedConnectionList::FolderDeleted(MSG_FolderInfo *folder) -{ - { - // if one of the connections in the connection cache is for - // this folder, close it and remove it. - for (int i = 0; i < GetSize(); i++) - { - struct MSG_CachedConnection *cachedConn = GetAt(i); - if (cachedConn && cachedConn->m_folder == folder) - { - IMAP_TerminateConnection (cachedConn->m_connection); - RemoveAt(i); - delete cachedConn; - break; - } - } - } -} - - -// check if we already have a connection cached that is not for the inbox. -XP_Bool MSG_CachedConnectionList::ShouldRemoveConnection() -{ - for (int i = 0; i < GetSize(); i++) - { - struct MSG_CachedConnection *cachedConn = GetAt(i); - if (cachedConn && (!cachedConn->m_folder || !(cachedConn->m_folder->GetFlags() & MSG_FOLDER_FLAG_INBOX))) - return TRUE; - } - return FALSE; -} - diff --git a/mozilla/lib/libmsg/msgccach.h b/mozilla/lib/libmsg/msgccach.h deleted file mode 100644 index ffbb009cc85..00000000000 --- a/mozilla/lib/libmsg/msgccach.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MSGCCACH_H -#define _MSGCCACH_H - -#include "ptrarray.h" - -struct MSG_CachedConnection -{ - TNavigatorImapConnection *m_connection; - MSG_FolderInfo *m_folder; - MSG_IMAPHost *m_host; - int64 m_ImapCacheTimeStamp; -}; - -class MSG_CachedConnectionList : public XPPtrArray -{ -public: - MSG_CachedConnectionList(); - virtual ~MSG_CachedConnectionList(); - XP_Bool AddConnection(TNavigatorImapConnection *, MSG_FolderInfo *folder, MSG_IMAPHost *host); - TNavigatorImapConnection *RemoveConnection(MSG_FolderInfo *folder, MSG_IMAPHost *host); - XP_Bool HasConnection(MSG_FolderInfo *folder, MSG_IMAPHost *host, int &cacheIndex); - void FolderClosed(MSG_FolderInfo *folder); - void FolderDeleted(MSG_FolderInfo *folder); - void CloseAllConnections(); - MSG_CachedConnection *GetAt (int i) const; -protected: - int m_numNullFolders; - XP_Bool ShouldRemoveConnection(); - -}; - -#endif diff --git a/mozilla/lib/libmsg/msgcflds.cpp b/mozilla/lib/libmsg/msgcflds.cpp deleted file mode 100644 index d081adbe1ee..00000000000 --- a/mozilla/lib/libmsg/msgcflds.cpp +++ /dev/null @@ -1,385 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "errcode.h" -#include "dberror.h" - -#include "msgcflds.h" -#include "prefapi.h" -#include "ptrarray.h" - -extern "C" { - extern int MK_OUT_OF_MEMORY; -} - -MSG_CompositionFields::MSG_CompositionFields() -{ - XP_Bool bReturnReceiptOn = FALSE; - - PREF_GetBoolPref("mail.request.return_receipt_on", &bReturnReceiptOn); - PREF_GetIntPref("mail.request.return_receipt", &m_receiptType); - SetReturnReceipt (bReturnReceiptOn); -} - - -MSG_CompositionFields::MSG_CompositionFields(MSG_CompositionFields* c) -{ - int i; - for (i=0 ; i<sizeof(m_headers) / sizeof(char*) ; i++) { - if (c->m_headers[i]) { - m_headers[i] = XP_STRDUP(c->m_headers[i]); - } - } - if (c->m_body) { - m_body = XP_STRDUP(c->m_body); - } - for (i=0 ; i<c->m_numforward ; i++) { - AddForwardURL(c->m_forwardurl[i]); - } - for (i=0; i<sizeof(m_boolHeaders)/sizeof(XP_Bool) ; i++) { - m_boolHeaders[i] = c->m_boolHeaders[i]; - } - m_receiptType = c->m_receiptType; -} - - - -MSG_CompositionFields::~MSG_CompositionFields() -{ - int i; - for (i=0 ; i<sizeof(m_headers) / sizeof(char*) ; i++) { - FREEIF(m_headers[i]); - } - FREEIF(m_body); - for (i=0 ; i<m_numforward ; i++) { - delete [] m_forwardurl[i]; - } - delete [] m_forwardurl; -} - - -int MSG_CompositionFields::SetNewsUrlHeader (const char *hostPort, XP_Bool xxx, const char *group) -{ - // Here's where we allow URLs in the newsgroups: header - - int status = -1; - if (hostPort && group) // must have a group - { - char *newsPostUrl = PR_smprintf ("%s://%s/", HG71654 "news", hostPort); - if (newsPostUrl) - { - SetHeader (MSG_NEWSPOSTURL_HEADER_MASK, newsPostUrl); - XP_FREE(newsPostUrl); - status = 0; // we succeeded, no need to keep looking at this header - } - else - status = MK_OUT_OF_MEMORY; - } - - return status; -} - - -int MSG_CompositionFields::ParseNewsgroupsForUrls (const char *value) -{ - int status = 0; - - // Here we pull apart the comma-separated header value and look for news - // URLs. We'll use the URL to set the newspost URL to determine the host - msg_StringArray values (TRUE /*owns memory for strings*/); - values.ImportTokenList (value); - for (int i = 0; i < values.GetSize(); i++) - { - const char *singleValue = values.GetAt(i); - if (NEWS_TYPE_URL == NET_URL_Type (singleValue)) - { - char *hostPort, *group, *id, *data; - XP_Bool xxx; - if (0 == NET_parse_news_url (value, &hostPort, &xxx, &group, &id, &data)) - { - status = SetNewsUrlHeader (hostPort, xxx, group); - if (status == 0) - { - values.RemoveAt(i); // Remove the URL spec for this group - values.Add (group); // Add in the plain old group name - } - FREEIF (hostPort); - FREEIF (group); - FREEIF (id); - FREEIF (data); - } - } - } - char *newValue = values.ExportTokenList (); - if (newValue) - { - status = SetHeader (MSG_NEWSGROUPS_HEADER_MASK, newValue); - XP_FREE(newValue); - } - return status; -} - - -int -MSG_CompositionFields::SetHeader(MSG_HEADER_SET header, const char* value) -{ - int status = 0; - - // Since colon is not a legal character in a newsgroup name under son-of-1036 - // we're assuming that such a header contains a URL, and we should parse it out - // to infer the news server. - if (value && MSG_NEWSGROUPS_HEADER_MASK == header && XP_STRCHR(value, ':')) - return ParseNewsgroupsForUrls (value); - - int i = DecodeHeader(header); - if (i >= 0) - { - char* old = m_headers[i]; // Done with careful paranoia, in case the - // value given is the old value (or worse, - // a substring of the old value, as does - // happen here and there.) - if (value != old) - { - if (value) - { - m_headers[i] = XP_STRDUP(value); - if (!m_headers[i]) - status = MK_OUT_OF_MEMORY; - } - else - m_headers[i] = NULL; - FREEIF(old); - } - } - - return status; -} - -extern "C"const char* MSG_GetCompFieldsHeader(MSG_CompositionFields *fields, - MSG_HEADER_SET header) -{ - return fields->GetHeader(header); -} - -const char* -MSG_CompositionFields::GetHeader(MSG_HEADER_SET header) -{ - int i = DecodeHeader(header); - if (i >= 0) { - return m_headers[i] ? m_headers[i] : ""; - } - return NULL; -} - - -int -MSG_CompositionFields::SetBoolHeader(MSG_BOOL_HEADER_SET header, XP_Bool bValue) -{ - int status = 0; - XP_ASSERT ((int) header >= (int) MSG_RETURN_RECEIPT_BOOL_HEADER_MASK && - (int) header < (int) MSG_LAST_BOOL_HEADER_MASK); - - if ( (int) header < (int) MSG_RETURN_RECEIPT_BOOL_HEADER_MASK || - (int) header >= (int) MSG_LAST_BOOL_HEADER_MASK ) - return -1; - - m_boolHeaders[header] = bValue; - return status; -} - - -XP_Bool -MSG_CompositionFields::GetBoolHeader(MSG_BOOL_HEADER_SET header) -{ - XP_ASSERT ((int) header >= (int) MSG_RETURN_RECEIPT_BOOL_HEADER_MASK && - (int) header < (int) MSG_LAST_BOOL_HEADER_MASK); - - if ( (int) header < (int) MSG_RETURN_RECEIPT_BOOL_HEADER_MASK || - (int) header >= (int) MSG_LAST_BOOL_HEADER_MASK ) - return FALSE; - - return m_boolHeaders[header]; -} - - -int -MSG_CompositionFields::SetBody(const char* value) -{ - FREEIF(m_body); - if (value) { - m_body = XP_STRDUP(value); - if (!m_body) return MK_OUT_OF_MEMORY; - } - return 0; -} - - -const char* -MSG_CompositionFields::GetBody() -{ - return m_body ? m_body : ""; -} - - -int -MSG_CompositionFields::AppendBody(const char* value) -{ - if (!value || !*value) return 0; - if (!m_body) { - return SetBody(value); - } else { - char* tmp = (char*) XP_ALLOC(XP_STRLEN(m_body) + XP_STRLEN(value) + 1); - if (tmp) { - XP_STRCPY(tmp, m_body); - XP_STRCAT(tmp, value); - XP_FREE(m_body); - m_body = tmp; - } else { - return MK_OUT_OF_MEMORY; - } - } - return 0; -} - - -int -MSG_CompositionFields::DecodeHeader(MSG_HEADER_SET header) -{ - int result; - switch(header) { - case MSG_FROM_HEADER_MASK: - result = 0; - break; - case MSG_REPLY_TO_HEADER_MASK: - result = 1; - break; - case MSG_TO_HEADER_MASK: - result = 2; - break; - case MSG_CC_HEADER_MASK: - result = 3; - break; - case MSG_BCC_HEADER_MASK: - result = 4; - break; - case MSG_FCC_HEADER_MASK: - result = 5; - break; - case MSG_NEWSGROUPS_HEADER_MASK: - result = 6; - break; - case MSG_FOLLOWUP_TO_HEADER_MASK: - result = 7; - break; - case MSG_SUBJECT_HEADER_MASK: - result = 8; - break; - case MSG_ATTACHMENTS_HEADER_MASK: - result = 9; - break; - case MSG_ORGANIZATION_HEADER_MASK: - result = 10; - break; - case MSG_REFERENCES_HEADER_MASK: - result = 11; - break; - case MSG_OTHERRANDOMHEADERS_HEADER_MASK: - result = 12; - break; - case MSG_NEWSPOSTURL_HEADER_MASK: - result = 13; - break; - case MSG_PRIORITY_HEADER_MASK: - result = 14; - break; - case MSG_NEWS_FCC_HEADER_MASK: - result = 15; - break; - case MSG_MESSAGE_ENCODING_HEADER_MASK: - result = 16; - break; - case MSG_CHARACTER_SET_HEADER_MASK: - result = 17; - break; - case MSG_MESSAGE_ID_HEADER_MASK: - result = 18; - break; - case MSG_NEWS_BCC_HEADER_MASK: - result = 19; - break; - case MSG_HTML_PART_HEADER_MASK: - result = 20; - break; - case MSG_DEFAULTBODY_HEADER_MASK: - result = 21; - break; - case MSG_X_TEMPLATE_HEADER_MASK: - result = 22; - break; - default: - XP_ASSERT(0); - result = -1; - break; - } - XP_ASSERT(result < sizeof(m_headers) / sizeof(char*)); - return result; -} - -int -MSG_CompositionFields::AddForwardURL(const char* url) -{ - XP_ASSERT(url && *url); - if (!url || !*url) return -1; - if (m_numforward >= m_maxforward) { - m_maxforward += 10; - char** tmp = new char* [m_maxforward]; - if (!tmp) return MK_OUT_OF_MEMORY; - for (int32 i=0 ; i<m_numforward ; i++) { - tmp[i] = m_forwardurl[i]; - } - delete [] m_forwardurl; - m_forwardurl = tmp; - } - m_forwardurl[m_numforward] = new char[XP_STRLEN(url) + 1]; - if (!m_forwardurl[m_numforward]) return MK_OUT_OF_MEMORY; - XP_STRCPY(m_forwardurl[m_numforward], url); - m_numforward++; - return 0; -} - -int32 -MSG_CompositionFields::GetNumForwardURL() -{ - return m_numforward; -} - -const char* -MSG_CompositionFields::GetForwardURL(int32 which) -{ - XP_ASSERT(which >= 0 && which < m_numforward); - if (which >= 0 && which < m_numforward) { - return m_forwardurl[which]; - } - return NULL; -} diff --git a/mozilla/lib/libmsg/msgcflds.h b/mozilla/lib/libmsg/msgcflds.h deleted file mode 100644 index 93c6059aecd..00000000000 --- a/mozilla/lib/libmsg/msgcflds.h +++ /dev/null @@ -1,292 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgCFlds_H_ -#define _MsgCFlds_H_ - -#include "rosetta.h" -#include "msgzap.h" - - -// Note that all the "Get" methods never return NULL (except in case of serious -// error, like an illegal parameter); rather, they return "" if things were set -// to NULL. This makes it real handy for the callers. - -class MSG_CompositionFields : public MSG_ZapIt { -public: - MSG_CompositionFields(); - MSG_CompositionFields(MSG_CompositionFields*); // Makes a copy. - virtual ~MSG_CompositionFields(); - - int SetHeader(MSG_HEADER_SET header, const char* value); - const char* GetHeader(MSG_HEADER_SET header); - - int SetBoolHeader(MSG_BOOL_HEADER_SET header, XP_Bool bValue); - XP_Bool GetBoolHeader(MSG_BOOL_HEADER_SET header); - - int SetBody(const char*); - const char* GetBody(); - - int AppendBody(const char*); - - // When forwarding a bunch of messages, we can have a bunch of - // "forward url's" instead of an attachment. - - int AddForwardURL(const char*); - - int32 GetNumForwardURL(); - const char* GetForwardURL(int32 which); - - int32 GetReturnReceiptType() { return m_receiptType; }; - void SetReturnReceiptType(int32 type) {m_receiptType = type;}; - - - // Convenience routines... - - int SetFrom(const char* value) { - return SetHeader(MSG_FROM_HEADER_MASK, value); - } - const char* GetFrom() { - return GetHeader(MSG_FROM_HEADER_MASK); - } - - int SetReplyTo(const char* value) { - return SetHeader(MSG_REPLY_TO_HEADER_MASK, value); - } - const char* GetReplyTo() { - return GetHeader(MSG_REPLY_TO_HEADER_MASK); - } - - int SetTo(const char* value) { - return SetHeader(MSG_TO_HEADER_MASK, value); - } - const char* GetTo() { - return GetHeader(MSG_TO_HEADER_MASK); - } - - int SetCc(const char* value) { - return SetHeader(MSG_CC_HEADER_MASK, value); - } - const char* GetCc() { - return GetHeader(MSG_CC_HEADER_MASK); - } - - int SetBcc(const char* value) { - return SetHeader(MSG_BCC_HEADER_MASK, value); - } - const char* GetBcc() { - return GetHeader(MSG_BCC_HEADER_MASK); - } - - int SetFcc(const char* value) { - return SetHeader(MSG_FCC_HEADER_MASK, value); - } - const char* GetFcc() { - return GetHeader(MSG_FCC_HEADER_MASK); - } - - int SetNewsFcc(const char* value) { - return SetHeader(MSG_NEWS_FCC_HEADER_MASK, value); - } - const char* GetNewsFcc() { - return GetHeader(MSG_NEWS_FCC_HEADER_MASK); - } - int SetNewsBcc(const char* value) { - return SetHeader(MSG_NEWS_BCC_HEADER_MASK, value); - } - const char* GetNewsBcc() { - return GetHeader(MSG_NEWS_BCC_HEADER_MASK); - } - - int SetNewsgroups(const char* value) { - return SetHeader(MSG_NEWSGROUPS_HEADER_MASK, value); - } - const char* GetNewsgroups() { - return GetHeader(MSG_NEWSGROUPS_HEADER_MASK); - } - - int SetFollowupTo(const char* value) { - return SetHeader(MSG_FOLLOWUP_TO_HEADER_MASK, value); - } - const char* GetFollowupTo() { - return GetHeader(MSG_FOLLOWUP_TO_HEADER_MASK); - } - - int SetSubject(const char* value) { - return SetHeader(MSG_SUBJECT_HEADER_MASK, value); - } - const char* GetSubject() { - return GetHeader(MSG_SUBJECT_HEADER_MASK); - } - - int SetAttachments(const char* value) { - return SetHeader(MSG_ATTACHMENTS_HEADER_MASK, value); - } - const char* GetAttachments() { - return GetHeader(MSG_ATTACHMENTS_HEADER_MASK); - } - - int SetOrganization(const char* value) { - return SetHeader(MSG_ORGANIZATION_HEADER_MASK, value); - } - const char* GetOrganization() { - return GetHeader(MSG_ORGANIZATION_HEADER_MASK); - } - - int SetReferences(const char* value) { - return SetHeader(MSG_REFERENCES_HEADER_MASK, value); - } - const char* GetReferences() { - return GetHeader(MSG_REFERENCES_HEADER_MASK); - } - - int SetOtherRandomHeaders(const char* value) { - return SetHeader(MSG_OTHERRANDOMHEADERS_HEADER_MASK, value); - } - const char* GetOtherRandomHeaders() { - return GetHeader(MSG_OTHERRANDOMHEADERS_HEADER_MASK); - } - - int SetNewspostUrl(const char* value) { - return SetHeader(MSG_NEWSPOSTURL_HEADER_MASK, value); - } - const char* GetNewspostUrl() { - return GetHeader(MSG_NEWSPOSTURL_HEADER_MASK); - } - - int SetDefaultBody(const char* value) { - return SetHeader(MSG_DEFAULTBODY_HEADER_MASK, value); - } - const char* GetDefaultBody() { - return GetHeader(MSG_DEFAULTBODY_HEADER_MASK); - } - - int SetPriority(const char* value) { - return SetHeader(MSG_PRIORITY_HEADER_MASK, value); - } - - const char* GetPriority() { - return GetHeader(MSG_PRIORITY_HEADER_MASK); - } - - int SetMessageEncoding(const char* value) { - return SetHeader(MSG_MESSAGE_ENCODING_HEADER_MASK, value); - } - - const char* GetMessageEncoding() { - return GetHeader(MSG_MESSAGE_ENCODING_HEADER_MASK); - } - - int SetCharacterSet(const char* value) { - return SetHeader (MSG_CHARACTER_SET_HEADER_MASK, value); - } - - const char* GetCharacterSet() { - return GetHeader(MSG_CHARACTER_SET_HEADER_MASK); - } - - int SetMessageId(const char* value) { - return SetHeader (MSG_MESSAGE_ID_HEADER_MASK, value); - } - - const char* GetMessageId() { - return GetHeader(MSG_MESSAGE_ID_HEADER_MASK); - } - - int SetHTMLPart(const char* value) { - return SetHeader(MSG_HTML_PART_HEADER_MASK, value); - } - - const char* GetHTMLPart() { - return GetHeader(MSG_HTML_PART_HEADER_MASK); - } - - int SetTemplateName(const char* value) { - return SetHeader(MSG_X_TEMPLATE_HEADER_MASK, value); - } - - const char* GetTemplateName() { - return GetHeader(MSG_X_TEMPLATE_HEADER_MASK); - } - - // Bool headers - - int SetReturnReceipt(XP_Bool value) { - return SetBoolHeader(MSG_RETURN_RECEIPT_BOOL_HEADER_MASK, value); - } - - XP_Bool GetReturnReceipt() { - return GetBoolHeader(MSG_RETURN_RECEIPT_BOOL_HEADER_MASK); - } - -HG87266 - - int SetSigned(XP_Bool value) { - return SetBoolHeader(MSG_SIGNED_BOOL_HEADER_MASK, value); - } - - XP_Bool GetSigned() { - return GetBoolHeader(MSG_SIGNED_BOOL_HEADER_MASK); - } - - int SetAttachVCard(XP_Bool value) { - return SetBoolHeader(MSG_ATTACH_VCARD_BOOL_HEADER_MASK, value); - } - - XP_Bool GetAttachVCard() { - return GetBoolHeader(MSG_ATTACH_VCARD_BOOL_HEADER_MASK); - } - - - void SetOwner(MSG_Pane *pane) { - m_owner = pane; - } - - MSG_Pane * GetOwner() { return m_owner; } - - - void SetForcePlainText(XP_Bool value) {m_force_plain_text = value;} - XP_Bool GetForcePlainText() {return m_force_plain_text;} - void SetUseMultipartAlternative(XP_Bool value) {m_multipart_alt = value;} - XP_Bool GetUseMultipartAlternative() {return m_multipart_alt;} - -protected: - int DecodeHeader(MSG_HEADER_SET header); - - // These methods allow news URLs in the newsgroups header - int SetNewsUrlHeader (const char *hostPort, XP_Bool xxx, const char *group); - int ParseNewsgroupsForUrls (const char *value); - - MSG_Pane *m_owner; - char* m_headers[32]; - char* m_body; - char** m_forwardurl; - int32 m_numforward; - int32 m_maxforward; - XP_Bool m_boolHeaders[MSG_LAST_BOOL_HEADER_MASK]; - XP_Bool m_force_plain_text; - XP_Bool m_multipart_alt; - int32 m_receiptType; /* 0:None 1:DSN 2:MDN 3:BOTH */ -}; - - -#endif /* _MsgCFlds_H_ */ diff --git a/mozilla/lib/libmsg/msgcmfld.cpp b/mozilla/lib/libmsg/msgcmfld.cpp deleted file mode 100644 index a6f47b951a9..00000000000 --- a/mozilla/lib/libmsg/msgcmfld.cpp +++ /dev/null @@ -1,794 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "xp.h" -#include "prsembst.h" -#include "maildb.h" -#include "mailhdr.h" -#include "xpgetstr.h" -#include "grpinfo.h" -#include "msgfinfo.h" -#include "msgcmfld.h" -#include "msgtpane.h" -extern "C" -{ - extern int MK_MSG_COMPRESS_FOLDER_ETC; - extern int MK_OUT_OF_MEMORY; - extern int MK_UNABLE_TO_OPEN_FILE; - extern int MK_UNABLE_TO_DELETE_FILE; - extern int MK_MSG_ERROR_WRITING_MAIL_FOLDER; - extern int MK_MSG_FOLDER_UNREADABLE; - extern int MK_MSG_COMPRESS_FOLDER_ETC; - extern int MK_MSG_COMPRESS_FAILED; -} - -/* Folder compression. We inherit from ParseMailboxState so we can - reparse the folder if needed, and share its parsing code in - general. - */ - - /* The algorithm is as follows: - - Open the database for the mail folder. If this fails, we can't tell if the - folder needs compressing or not. We could reparse the folder to determine - if any messages have been expunged. Let's do that, for fun. - - Let's pretend we could open the database. Check if DBFolderInfo->m_expungedBytes - == 0. If so, no messages have been expunged, so we're done. - - Otherwise, we need to compress. We could either use the database, or use - the msg flags in the folder to determine if a message should be copied over. - Ideally, the database is cheaper, since we can skip over expunged messages. - - - So let's try that road. Open a temp output folder and temp output database. - Iterate through the source db, check each header, if not expunged, read the - message and write it out to the temp output folder and db. When done, rename - the temp folder to the original folder, and the temp database to the - original database (after closing each). - - */ - - -/* ----------------------------------------------------- -class MSG_CompressFolderState ----------------------------------------------------- -*/ - -MSG_CompressFolderState::MSG_CompressFolderState(MSG_Master *master, - MWContext *context, - URL_Struct *url, - MSG_FolderInfoMail *mailFolderInfo, - int32 progressBytesDoneOffset, - int32 progressBytesTotal) - : MSG_CompressState(master, context, url), ParseMailboxState(mailFolderInfo->GetPathname()) -{ - m_compressState = CFStart; - m_listContext = NULL; - m_outPosition = 0; - m_folderInfo = NULL; - m_folder = mailFolderInfo; -// m_newMailHdr = NULL; - m_newMailDB = NULL; - m_srcMailDB = NULL; - m_infile = NULL; - m_outfile = NULL; - m_pHeader = NULL; - m_bytesLeftInMessage = 0; - m_bytesInMessage = 0; - m_progressBytesDoneOffset = progressBytesDoneOffset; - m_progressBytesTotalOffset = progressBytesTotal; - m_context = context; - m_mailboxName = mailFolderInfo->GetPathname(); - m_ignoreNonMailFolder = TRUE; - SetMaster(master); -} - -MSG_CompressFolderState::~MSG_CompressFolderState() -{ - if (m_srcMailDB != NULL) - m_srcMailDB->ListDone (m_listContext); -// if (m_newMailHdr != NULL) -// delete m_newMailHdr; - FREEIF(m_obuffer); -} - -int MSG_CompressFolderState::BeginCompression(void) -{ - int bufSize = 10240; -#ifdef DEBUG_bienvenu - XP_Trace("begin compression\n"); -#endif - m_obuffer = (char *) XP_ALLOC(bufSize); // what would be a good size? - while (m_obuffer == NULL) - { - bufSize /= 2; - m_obuffer = (char *) XP_ALLOC(bufSize); - if (!m_obuffer && (bufSize < 1024)) - { - m_obuffer_size = 0; - return MK_OUT_OF_MEMORY; - } - } - - m_obuffer_size = bufSize; - m_master->BroadcastFolderKeysAreInvalid (m_folder); - - return 0; -} - -int MSG_CompressFolderState::FinishCompression() -{ -#ifdef DEBUG_bienvenu - XP_Trace("finish compression\n"); -#endif - // does this always get called, even if an error occurs or we get interrupted? - CloseFiles(FALSE); // do we care what return value is? - return 0; -} - -int MSG_CompressFolderState::StartOutput() -{ - /* Print a status message, and open up the output file. */ - - const char *fmt = XP_GetString(MK_MSG_COMPRESS_FOLDER_ETC); /* #### i18n */ - const char *f = m_mailboxName; - char *s = XP_STRRCHR (f, '/'); - if (s) - f = s+1; - char *unEscapedF = XP_STRDUP(f); - if (unEscapedF) - { - NET_UnEscape(unEscapedF); // Mac apparently stores as "foo%20bar" - s = PR_smprintf (fmt, unEscapedF); - if (s) - { - FE_Progress(m_context, s); - XP_FREE(s); - } - XP_FREE(unEscapedF); - } - m_graph_progress_total = - m_folderInfo->m_folderSize - m_folderInfo->m_expunged_bytes; - - if (m_graph_progress_total < 1) - { - /* Pure paranoia. */ - m_graph_progress_total = 1; - } - m_graph_progress_received = 0; - FE_SetProgressBarPercent(m_context, 0); - - - m_tmpName = FE_GetTempFileFor(m_context, m_mailboxName, xpMailFolder, - &tmptype); - if (!m_tmpName) return MK_OUT_OF_MEMORY; /* ### */ - m_outfile = XP_FileOpen(m_tmpName, xpMailFolder, - XP_FILE_WRITE_BIN); - if (!m_outfile) return MK_UNABLE_TO_OPEN_FILE; - - // setup outgoing parser to make sure mozilla-status gets written out. - ParseOutgoingMessage *outgoingParser = new ParseOutgoingMessage; - if (!outgoingParser) - return MK_OUT_OF_MEMORY; - outgoingParser->SetOutFile(m_outfile); - SetMailMessageParseState(outgoingParser); - - m_tmpdbName = FE_GetTempFileFor(m_context, m_mailboxName, xpMailFolderSummary, - &tmptype); - if (!m_tmpdbName) - return MK_OUT_OF_MEMORY; /* ### do we need to free other stuff? */ - - if (MailDB::Open(m_tmpdbName, TRUE, &m_newMailDB, TRUE) != eSUCCESS) - return MK_UNABLE_TO_OPEN_FILE; - /* #### We should check here that the folder is writable, and warn. - (open it for append, then close it right away?) Just checking - S_IWUSR is not enough. - */ - - // transfer any needed DBFolderInfo to the new db - DBFolderInfo *destinationInfo = m_newMailDB->GetDBFolderInfo(); - if (m_folderInfo && destinationInfo) - { - TDBFolderInfoTransfer transferInfo(*m_folderInfo); - transferInfo.TransferFolderInfo(*destinationInfo); - } - - - // thanks to use of Multiple Inheritance, we need to change the maildb of the - // base class to the db we're writing to. - ParseMailboxState::SetDB(m_newMailDB); - outgoingParser->SetMailDB(m_newMailDB); // make sure new header goes to correct DB. - -#ifdef XP_UNIX - /* Clone the permissions of the "real" folder file into the temp file, - so that when we rename the finished temp file to the real file, the - preferences don't appear to change. */ - { - XP_StatStruct st; - if (XP_Stat (m_mailboxName, &st, xpMailFolder) == 0) - /* Ignore errors; if it fails, bummer. */ - /* This is unbelievable. SCO doesn't define fchmod at all. no big deal. - AIX3, however, defines it to take a char* as the first parameter. The - man page sez it takes an int, though. ... */ -#if defined(SCO_SV) || defined(AIXV3) - { - char *really_tmp_file = WH_FileName(m_tmpName, xpMailFolder); - - chmod (really_tmp_file, (st.st_mode | S_IRUSR | S_IWUSR)); - - XP_FREE(really_tmp_file); - } -#else - fchmod (fileno(m_outfile), (st.st_mode | S_IRUSR | S_IWUSR)); -#endif - } -#endif /* XP_UNIX */ - return 0; -} - -int MSG_CompressFolderState::OpenFolder() -{ - m_compressState = CFDBOpened; - m_infile = XP_FileOpen(m_mailboxName, xpMailFolder, XP_FILE_READ_BIN); - if (!m_infile) - return MK_MSG_FOLDER_UNREADABLE; - else - return MK_WAITING_FOR_CONNECTION; -} - -int MSG_CompressFolderState::OpenFolderAndDB() -{ - MsgERR err = MailDB::Open(m_mailboxName, FALSE /* create? */, &m_srcMailDB, FALSE); - if (err != eSUCCESS) - { - err = MailDB::CloneInvalidDBInfoIntoNewDB(m_mailboxName, &m_srcMailDB); - if (err != eSUCCESS) - return MK_UNABLE_TO_OPEN_FILE; - m_compressState = CFParsingSource; - m_mailDB = m_srcMailDB; - return BeginOpenFolderSock(m_mailboxName, NULL, 0, NULL); - } - else - { - return OpenFolder(); - } -} - -int MSG_CompressFolderState::StartFirstMessage() -{ - int status; - status = StartOutput(); - if (status != 0) - return status; - m_outPosition = 0; - return AdvanceToNextNonExpungedMessage(); -} - -int MSG_CompressFolderState::AdvanceToNextNonExpungedMessage() -{ - int status = MK_WAITING_FOR_CONNECTION; - MsgERR dbErr; - - while (TRUE) - { - if (m_listContext == NULL) - dbErr = m_srcMailDB->ListFirst (&m_listContext, (DBMessageHdr **) &m_pHeader); - else - dbErr = m_srcMailDB->ListNext(m_listContext, (DBMessageHdr **) &m_pHeader); - - if (dbErr == eDBEndOfList) - { - m_compressState = CFFinishedCopyingToTemp; - break; - } - // this currently doesn't happen since ListNext doesn't return errors - // other than eDBEndOfList. - else if (dbErr != eSUCCESS) - { - m_compressState = CFAbortCompress; - break; - } - if (! (m_pHeader->GetFlags() & kExpunged)) - { - if (XP_FileSeek(m_infile, m_pHeader->GetMessageOffset(), SEEK_SET) != 0) - { - m_compressState = CFAbortCompress; - } - else - { - m_compressState = CFCopyingMsgToTemp; - m_bytesInMessage = m_bytesLeftInMessage = m_pHeader->GetByteLength(); - } - if (m_pHeader != NULL) // dmb - find way to rearrange this code - { - delete m_pHeader; - m_pHeader = NULL; - } - break; - } - if (m_pHeader != NULL) - { - delete m_pHeader; - m_pHeader = NULL; - } - } - return status; -} - -// Copy the next block of a message -int MSG_CompressFolderState::CopyNextBlock() -{ - int status; - - int32 length = m_bytesLeftInMessage; - // try to get a buffer if we don't have one. - if (m_obuffer == NULL) - BeginCompression(); - - if (length > (int32) m_obuffer_size) - length = m_obuffer_size; - - status = XP_FileRead(m_obuffer, length, m_infile); - if (status < 0) - return status; - if (status == 0) // at end of file? unexpected - Abort - { - m_compressState = CFAbortCompress; - } - else - { - if (m_bytesLeftInMessage == m_bytesInMessage) // at start of message. - { - if (strncmp("From ", m_obuffer, 5)) // should be From - at start of msg. - { - m_compressState = CFAbortCompress; - return MK_WAITING_FOR_CONNECTION; - } - } - // do progress - m_graph_progress_received += status; - UpdateProgressPercent(); - - m_bytesLeftInMessage -= status; - ParseBlock(m_obuffer, status); // this gets written to m_outfile using the outgoing parser - m_outPosition += status; - } - if (m_bytesLeftInMessage == 0) - { - /* End of message. Flush out any partial line remaining in the buffer. */ - if (m_ibuffer_fp > 0) - { - m_parseMsgState->ParseFolderLine(m_ibuffer, m_ibuffer_fp); - m_ibuffer_fp = 0; - } - status = XP_FileRead(m_obuffer, 7, m_infile); - if (status > 0) // if we got any bytes (i.e., not at eof) - { - // make sure buffer is null terminated - if (status < m_obuffer_size) - m_obuffer[status] = '\0'; - // First, advance past any trailing CRLF's, because sometimes the db header - // message length does not include trailing CRLF's (in particular, fcc folders - // write an extra blank line at the end of the previous message before adding - // a new message.) - int crlfLen = 0; - for (crlfLen = 0; crlfLen < status; crlfLen++) - { - char curChar = m_obuffer[crlfLen]; - if (curChar != CR && curChar != LF) - break; - } - // Check if we're positioned at the start of the next message, - // since we're not at eof. If not, DB is probably wrong, so it's risky - // to keep compressing. It's OK to read from the file here - // because we're going to seek to the start of the next message later. - if (XP_STRNCMP("From ", m_obuffer + crlfLen, 5)) - { - m_compressState = CFAbortCompress; - return MK_WAITING_FOR_CONNECTION; - } - } - m_compressState = CFGetNextMessage; - } - - return MK_WAITING_FOR_CONNECTION; -} - -int MSG_CompressFolderState::CloseAndRenameFiles() -{ - int status = CloseFiles(TRUE); // pass TRUE to indicate success - if (status >= 0) - status = RenameFiles(); - - // Flush the DBFolderInfo into the MSG_FolderInfo. Req'd esp. for expunged bytes - MSG_FolderInfo *folder = m_mailMaster->FindMailFolder (m_mailboxName, FALSE /*create?*/); - if (folder) - folder->SummaryChanged(); - - if (status == 0) - { - // reload thread pane because it's invalid now. - MSG_ThreadPane* threadPane = NULL; - if (m_mailMaster != NULL) - threadPane = m_mailMaster->FindThreadPaneNamed(m_mailboxName); - if (threadPane != NULL) - threadPane->ReloadFolder(); - } - return (status == 0) ? MK_CONNECTED : status; -} - -int MSG_CompressFolderState::CloseFiles(XP_Bool success) -{ - if (m_newMailDB && success) // if no DB, we're probably not really doing anything. - DoneParsingFolder(); // force out any remaining data. - might need to override. - else - FreeBuffers(); - /* We've finished up this folder. */ - if (m_infile != NULL) - { - XP_FileClose(m_infile); - m_infile = NULL; - } - if (m_outfile) - { - if (XP_FileClose(m_outfile) != 0) - { - m_outfile = NULL; - return MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - m_outfile = NULL; - } - - // ### mwelch This is a hack designed to ensure that the uncompressed - // mail DB isn't closed when the compress ended unsuccessfully. - // The real solution to this (which we want to implement) is - // to move the (success) code into CloseAndRenameFiles, leaving - // CloseFiles to handle the unsuccessful case. - // (Simpler paths instead of simpler fixes.) - if (success) - { - if (m_srcMailDB != NULL) - { - if (m_newMailDB) // if we have a new mail db, we're going to rename. - m_srcMailDB->ForceClosed(); - else // otherwise, just release our reference so we don't have to reload folder. - m_srcMailDB->Close(); - m_srcMailDB = NULL; - } - if (m_newMailDB != NULL) - { - UpdateDBFolderInfo(m_newMailDB, m_tmpName); // fix folder info in temp file. - m_folder->SetExpungedBytesCount(0); - m_newMailDB->Close(); - m_newMailDB = NULL; - } - } - else - { - if (m_srcMailDB != NULL) - { - // Don't force the db closed in this case, because the thread pane - // still refers to it. - m_srcMailDB->Close(); - m_srcMailDB = NULL; - } - if (m_newMailDB != NULL) - { - // Force the new (compressed) mail db closed, because we won't use it. - m_newMailDB->ForceClosed(); - m_newMailDB = NULL; - - // Delete the files that would have been the new mailbox and db. - XP_FileRemove(m_tmpName, xpMailFolder); - XP_FileRemove(m_tmpdbName, xpMailFolderSummary); - } - } - - FREEIF(m_obuffer); - m_obuffer = NULL; - m_obuffer_size = 0; - return MK_CONNECTED; -} - -int MSG_CompressFolderState::RenameFiles() -{ - int status = 0; - if (m_tmpdbName) - { - if (MessageDB::RenameDB(m_tmpdbName, m_mailboxName) != eSUCCESS) - status = MK_UNABLE_TO_DELETE_FILE; -// XP_FileRename(m_tmpdbName, tmptype, m_mailboxName, xpMailFolderSummary); - XP_FREE(m_tmpdbName); - m_tmpdbName = NULL; - } - if (status == 0 && m_tmpName) - { -#ifdef XP_MAC - // FIX ME! tmpType == xpMailFolderSummary at this point, and if you use it, - // this call will not be very good to us... jrm 97/03/13 - status = XP_FileRename(m_tmpName, xpMailFolder, m_mailboxName, xpMailFolder); -#else - status = XP_FileRename(m_tmpName, tmptype, m_mailboxName, xpMailFolder); -#endif - XP_FREE(m_tmpName); - m_tmpName = NULL; - } - - return status; -} - -int MSG_CompressFolderState::CompressSomeMore() -{ - int status; - - // m_context = context; - switch (m_compressState) - { - case CFStart: - return OpenFolderAndDB(); - case CFParsingSource: - status = ParseMoreFolderSock(m_mailboxName, NULL, 0, NULL); - // if it's not a mail folder, status will be MK_CONNECTED but - // GetIsRealMailFolder() will be FALSE. - if (status < 0 || (status == MK_CONNECTED && !GetIsRealMailFolder())) - { - CloseFolderSock (m_mailboxName, NULL, 0, NULL); - m_srcMailDB = NULL; //###phil hack. too many cleanup mechanisms here - CloseFiles(FALSE); - return status; - } - - if (status == MK_CONNECTED) - { - CloseFolderSock(m_mailboxName, NULL, 0, NULL); - if (m_folder) - m_folder->SummaryChanged(); - return OpenFolder(); - } - - return MK_WAITING_FOR_CONNECTION; - case CFDBOpened: - - m_folderInfo = m_srcMailDB->GetDBFolderInfo(); - if (m_folderInfo->m_expunged_bytes == 0) // nothing to do! - return CloseFiles(FALSE); - return StartFirstMessage(); - case CFCopyingMsgToTemp: - return CopyNextBlock(); - case CFGetNextMessage: - return AdvanceToNextNonExpungedMessage(); - case CFAbortCompress: - XP_Trace("aborting compress!\n"); - FE_Alert(m_context, XP_GetString(MK_MSG_COMPRESS_FAILED)); - m_srcMailDB->SetSummaryValid(FALSE); - return CloseFiles(FALSE); - case CFFinishedCopyingToTemp: - return CloseAndRenameFiles(); - default: - XP_ASSERT(FALSE); - break; - } - return MK_CONNECTED; // ### dmb or not - really an internal error -} - - -/* ----------------------------------------------------- -class MSG_CompressAllFoldersState ----------------------------------------------------- -*/ - -MSG_CompressAllFoldersState::MSG_CompressAllFoldersState(MSG_Master *master, - MWContext *context, - URL_Struct *url) - : MSG_CompressState(master, context, url), - m_bytesCompressed(0) -{ - m_folders = m_master->GetLocalMailFolderTree(); - - // Count the total number of unexpunged bytes in all folders. - // ### mw Can't do this until I know how to properly open a mail folder - // just to peek at its size. -// MSG_FolderInfo *i; -// m_bytesTotal = 0; - - m_iter = new MSG_FolderIterator(m_folders); - XP_ASSERT(m_iter != NULL); // ### mw How can we handle this failure gracefully? - -// while((i = m_iter->Next()) != NULL) -// { -// m_bytesTotal += i->m_folderSize - i->m_expunged_bytes; -// } - - // Reset our iterator and get the first folder. - m_iter->Init(); - m_currentFolder = NULL; - NextMailFolder(); - - - // Initialize the first single-folder compressor. - - // ### mw Casting the current folder to MSG_FolderInfoMail * - // is safe because we checked for the folder type - // above. - if (m_currentFolder) - m_currentFolderCompressor = - new MSG_CompressFolderState(master, context, url, - (MSG_FolderInfoMail *)m_currentFolder, - m_bytesCompressed, - m_bytesTotal); -} - -void -MSG_CompressAllFoldersState::NextMailFolder(void) -{ - // Get the next folder to be compressed. - XP_Bool haveMailFile = FALSE; - do - { - m_currentFolder = m_iter->Next(); -#ifdef DEBUG_bienvenu - if (m_currentFolder) - XP_Trace("in compress all folders iterator - %s\n", m_currentFolder->GetName()); -#endif - - // Make sure the current folder is appropriate for compression. - if (m_currentFolder && (m_currentFolder->GetType() == FOLDER_MAIL)) - { - // See if the file represented by this folder is a directory. - // If it isn't a directory, we have an eligible mail file. - XP_StatStruct fileInfo; - - if (XP_Stat(((MSG_FolderInfoMail *) m_currentFolder)-> - GetPathname(), &fileInfo, xpMailFolder)) - continue; // not a mail folder or had problems statting -#if defined (XP_MAC) || defined(XP_UNIX) || defined(XP_OS2) - if (fileInfo.st_mode & S_IFREG) -#else - if (fileInfo.st_mode & _S_IFREG) -#endif -// if (S_ISREG(fileInfo.st_mode)) - haveMailFile = TRUE; // regular file == probable mail folder - } - } - while ((haveMailFile == FALSE) && (m_currentFolder)); -} - -int -MSG_CompressAllFoldersState::BeginCompression(void) -{ - // Begin compression on the current (first) folder compressor. - return m_currentFolderCompressor->BeginCompression(); -} - -int -MSG_CompressAllFoldersState::CompressSomeMore(void) -{ - int result = MK_CONNECTED; - - XP_ASSERT(m_currentFolderCompressor != NULL); - XP_ASSERT(m_iter != NULL); - - if (m_currentFolderCompressor) - { - // Call the single-folder compressor for the current folder. - result = m_currentFolderCompressor->CompressSomeMore(); - - // If we finished with the current folder, or if we managed - // to compress a new folder in one pass, start on a new one. - while ((result == MK_CONNECTED) && (m_currentFolderCompressor != NULL)) - { - // Done with this folder. Time to pick up the next one. - - // Delete the pre-existing folder compressor. - delete m_currentFolderCompressor; - m_currentFolderCompressor = NULL; - - // Update the number of bytes already compressed - // so that we can properly show progress. (not yet) - //m_bytesCompressed += m_currentFolder->m_folderSize - - // m_currentFolder->m_expunged_bytes; - - NextMailFolder(); - - if (m_currentFolder) - { - // Got a folder. Create a compressor for it. - // ### mw Casting the current folder to MSG_FolderInfoMail - // is safe because we checked for the folder type - // above. - m_currentFolderCompressor = - new MSG_CompressFolderState(m_master, - m_compressContext, m_url, - ((MSG_FolderInfoMail *) - m_currentFolder), - m_bytesCompressed, - m_bytesTotal); - XP_ASSERT(m_currentFolderCompressor != NULL); - - if (m_currentFolderCompressor) - { - // Begin compression on the new folder. - // If it completes in one pass, the loop will - // pick up the next folder in line. - result = m_currentFolderCompressor->BeginCompression(); - // result = m_currentFolderCompressor->CompressSomeMore(); - } - } - } - } - - return result; -} - -int -MSG_CompressAllFoldersState::FinishCompression(void) -{ - // *** jefft -- m_currentFolderCompressor can be null; - // check before calling FinishCompression - if (m_currentFolderCompressor) - return m_currentFolderCompressor->FinishCompression(); - return 0; -} - -/* ----------------------------------------------------- -class MSG_CompressState ----------------------------------------------------- -*/ - -MSG_CompressState::MSG_CompressState(MSG_Master *master, - MWContext *context, - URL_Struct *url) - : m_master(master), m_compressContext(context), m_url(url) -{ - XP_ASSERT(m_master != NULL); - XP_ASSERT(m_compressContext != NULL); -} - -MSG_CompressState * -MSG_CompressState::Create(MSG_Master *master, - MWContext *context, - URL_Struct *url, - const char *mailboxName) -{ - if ((mailboxName == NULL) || (mailboxName[0] == '\0')) - { - return new MSG_CompressAllFoldersState(master, context, url); - } - else - { - MSG_CompressFolderState *compressFolderState - = new MSG_CompressFolderState(master, context, url, - master->FindMailFolder(mailboxName, FALSE), - 0 /* extra progress done */, - 0 /* actual progress total */); - // by default, compress folder state objects ignore non-mail folders, - // but if we're doing a compress of a single folder, we should whine. - if (compressFolderState) - compressFolderState->SetIgnoreNonMailFolder(FALSE); - return compressFolderState; - } -} diff --git a/mozilla/lib/libmsg/msgcmfld.h b/mozilla/lib/libmsg/msgcmfld.h deleted file mode 100644 index 8ef20fc59cf..00000000000 --- a/mozilla/lib/libmsg/msgcmfld.h +++ /dev/null @@ -1,159 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef MSG_COMPRESS_FOLDER_H -#define MSG_COMPRESS_FOLDER_H - -#include "prsembst.h" - -class MSG_FolderInfoMail; -class DBFolderInfo; -struct ListContext; -class MSG_FolderIterator; - -enum CompressFolderState -{ - CFStart, - CFParsingSource, - CFDBOpened, - CFCopyingMsgToTemp, - CFGetNextMessage, - CFAbortCompress, - CFFinishedCopyingToTemp, - CFCreateEmptyFolder -}; - -/* - MSG_CompressState: An abstract class for objects which compress one or more - mailbox files. - */ -class MSG_CompressState -{ -public: - static MSG_CompressState * - Create(MSG_Master *master, - MWContext *context, - URL_Struct *url, - const char *mailboxName); - - MSG_CompressState(MSG_Master *master, - MWContext *context, - URL_Struct *url); - - /* - The message pane calls these three methods in order to achieve - compression. - */ - virtual int BeginCompression(void) = 0; - virtual int CompressSomeMore(void) = 0; - virtual int FinishCompression(void) = 0; - - MSG_Master *m_master; - MWContext *m_compressContext; - URL_Struct *m_url; -}; - -/* - MSG_CompressFolderState: A class which compresses one mailbox file. - */ -class MSG_CompressFolderState : public MSG_CompressState, - public ParseMailboxState -{ -public: - MSG_CompressFolderState(MSG_Master *master, - MWContext *context, - URL_Struct *url, - MSG_FolderInfoMail *mailFolderInfo, - int32 progressBytesDoneOffset, - int32 progressBytesTotal); - virtual ~MSG_CompressFolderState(); - - virtual int BeginCompression(void); - virtual int CompressSomeMore(void); - virtual int FinishCompression(void); -protected: - int OpenFolderAndDB(); - int OpenFolder(); - int StartFirstMessage(); - int CopyNextBlock(); - int StartOutput(); - int AdvanceToNextNonExpungedMessage(); - int CloseAndRenameFiles(); - int CloseFiles(XP_Bool success); - int RenameFiles(); - - //virtual void UpdateProgressPercent(); - - CompressFolderState m_compressState; - MSG_FolderInfoMail *m_folder; /* Folder being compressed. */ - DBFolderInfo *m_folderInfo; - ListContext *m_listContext; - MailMessageHdr *m_pHeader; - MailMessageHdr *m_newMailHdr; - int32 m_progressBytesDoneOffset; - int32 m_progressBytesTotalOffset; - const char * m_folderName; - - XP_File m_infile; /* The original folder we're parsing. */ - XP_File m_outfile; /* The new compressed folder. */ - - MailDB *m_newMailDB; // where the new headers are going - MailDB *m_srcMailDB; // where the headers are coming from - int32 m_bytesLeftInMessage; - int32 m_bytesInMessage; // total bytes in message. - XP_FileType tmptype; - char *m_tmpName; // Temporary filename of new folder. - char *m_tmpdbName; // Temporary filename of new database - XP_StatStruct m_folderst; - int32 m_outPosition; - const char * m_mailboxName; // Name of folder we're compressing -}; - -/* - MSG_CompressAllFoldersState: A class which compresses all known mailbox - files. - */ -class MSG_CompressAllFoldersState : public MSG_CompressState -{ -public: - MSG_CompressAllFoldersState(MSG_Master *master, - MWContext *context, - URL_Struct *url); - - /* - The message pane calls these three methods in order to achieve - compression. - */ - virtual int BeginCompression(void); - virtual int CompressSomeMore(void); - virtual int FinishCompression(void); - - void NextMailFolder(void); - - MSG_FolderInfo *m_currentFolder; - MSG_CompressFolderState *m_currentFolderCompressor; - MSG_FolderInfo *m_folders; - MSG_FolderIterator *m_iter; - int32 m_bytesCompressed; - int32 m_bytesTotal; -}; - -#endif diff --git a/mozilla/lib/libmsg/msgcpane.cpp b/mozilla/lib/libmsg/msgcpane.cpp deleted file mode 100644 index 006e4d1efe8..00000000000 --- a/mozilla/lib/libmsg/msgcpane.cpp +++ /dev/null @@ -1,3713 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "errcode.h" -#include "dberror.h" - -#include "mime.h" -#include "shist.h" -#include "xlate.h" -#include "bkmks.h" -#include "libi18n.h" -#include "xpgetstr.h" - -#include "msgsec.h" -#include "msgcpane.h" -#include "msgprefs.h" -#include "msgsec.h" -#include "msgcflds.h" -#include "msgimap.h" -#include "msgurlq.h" -#include "maildb.h" -#include "addrbook.h" -#include "abcom.h" -#include "dirprefs.h" - -#include "edt.h" // to invoke save on the html compose pane -#include "mhtmlstm.h" - -#include "prefapi.h" -#include "htmldlgs.h" -#include "hosttbl.h" -#include "newshost.h" -#include "xp_qsort.h" -#include "intl_csi.h" - -extern "C" -{ -extern int MK_MSG_MSG_COMPOSITION; - -extern int MK_COMMUNICATIONS_ERROR; -extern int MK_OUT_OF_MEMORY; - -extern int MK_MSG_EMPTY_MESSAGE; -extern int MK_MSG_DOUBLE_INCLUDE; - -extern int MK_MSG_WHY_QUEUE_SPECIAL; -extern int MK_MSG_WHY_QUEUE_SPECIAL_OLD; -extern int MK_MSG_NOT_AS_SENT_FOLDER; - -extern int MK_MSG_MISSING_SUBJECT; - -HG65256 - -extern int MK_MSG_SEND; -extern int MK_MSG_SEND_LATER; -extern int MK_MSG_ATTACH_ETC; -extern int MK_MSG_QUOTE_MESSAGE; -extern int MK_MSG_FROM; -extern int MK_MSG_REPLY_TO; -extern int MK_MSG_MAIL_TO; -extern int MK_MSG_MAIL_CC; -extern int MK_MSG_MAIL_BCC; -extern int MK_MSG_FILE_CC; -extern int MK_MSG_POST_TO; -extern int MK_MSG_FOLLOWUPS_TO; -extern int MK_MSG_SUBJECT; -extern int MK_MSG_ATTACHMENT; -extern int MK_MSG_ATTACH_AS_TEXT; -extern int MK_MSG_SAVE_DRAFT; -extern int MK_ADDR_BOOK_CARD; - -extern int MK_MSG_ASK_HTML_MAIL; -extern int MK_MSG_ASK_HTML_MAIL_TITLE; -extern int MK_MSG_HTML_RECIPIENTS; -extern int MK_MSG_HTML_RECIPIENTS_TITLE; -extern int MK_MSG_EVERYONE; - -extern int MK_MSG_ENTER_NAME_FOR_TEMPLATE; - -#include "xp_help.h" -} - - - -HG33234 - -#define ALL_HEADERS (MSG_FROM_HEADER_MASK | \ - MSG_REPLY_TO_HEADER_MASK | \ - MSG_TO_HEADER_MASK | \ - MSG_CC_HEADER_MASK | \ - MSG_BCC_HEADER_MASK | \ - MSG_FCC_HEADER_MASK | \ - MSG_NEWSGROUPS_HEADER_MASK | \ - MSG_FOLLOWUP_TO_HEADER_MASK | \ - MSG_SUBJECT_HEADER_MASK | \ - MSG_ATTACHMENTS_HEADER_MASK) - - -enum RecipientType { - Address = 1, Domain = 2, Newsgroup = 3, GroupHierarchy = 4 -}; - -class RecipientEntry : public MSG_ZapIt { -public: - RecipientEntry(const char* name, const char* description, - RecipientType type, XP_Bool htmlok); - ~RecipientEntry(); - - char* GetName() {return m_name;} - char* GetDescription() {return m_description;} - RecipientType GetType() {return m_type;} - XP_Bool GetHTMLOk() {return m_htmlok;} - XP_Bool GetNewHTMLOk() {return m_newhtmlok;} - void SetNewOK(XP_Bool value); - XP_Bool GetTouched() {return m_touched;} - -protected: - char* m_name; - char* m_description; - RecipientType m_type; - XP_Bool m_htmlok; - XP_Bool m_newhtmlok; - XP_Bool m_touched; -}; - - -RecipientEntry::RecipientEntry(const char* name, const char* description, - RecipientType type, XP_Bool htmlok) -{ - m_name = XP_STRDUP(name); - m_description = XP_STRDUP(description); - if (!m_description) { - FREEIF(m_name); // Checking for name being NULL is the hack - // used to see if we're out of memory. - } - m_type = type; - m_htmlok = htmlok; -} - -RecipientEntry::~RecipientEntry() -{ - FREEIF(m_name); - FREEIF(m_description); -} - -void -RecipientEntry::SetNewOK(XP_Bool value) -{ - XP_ASSERT(!m_touched); - m_touched = TRUE; - m_newhtmlok = value; -} - - - -class MSG_HTMLRecipients : public MSG_ZapIt { -public: - MSG_HTMLRecipients(); - ~MSG_HTMLRecipients(); - - int AddOne(const char* name, const char* description, - RecipientType type, XP_Bool htmlok); - MSG_RecipientList* GetList(XP_Bool htmlok); - - int SetNewList(int32* notoklist, int32* oklist); - - char** GetChangedList(RecipientType type, XP_Bool htmlok); - void FreeChangedList(char** list); - int GetNum() {return m_num;} - -protected: - RecipientEntry** m_list; - int32 m_num; - int32 m_max; - MSG_RecipientList* m_generatedList[2]; -}; - -MSG_HTMLRecipients::MSG_HTMLRecipients() { -} - -MSG_HTMLRecipients::~MSG_HTMLRecipients() { - delete m_generatedList[0]; - delete m_generatedList[1]; - for (int32 i=0 ; i<m_num ; i++) { - delete m_list[i]; - } - delete [] m_list; -} - -int -MSG_HTMLRecipients::AddOne(const char* name, const char* description, - RecipientType type, XP_Bool htmlok) -{ - int32 i; - for (i=0 ; i<m_num ; i++) { - if (m_list[i]->GetType() == type && - XP_STRCMP(m_list[i]->GetName(), name) == 0) return 0; - } - if (m_num >= m_max) { - RecipientEntry** tmp = new RecipientEntry* [m_max + 10]; - if (!tmp) return MK_OUT_OF_MEMORY; - m_max += 10; - for (i=0 ; i<m_num ; i++) { - tmp[i] = m_list[i]; - } - delete [] m_list; - m_list = tmp; - } - m_list[m_num] = new RecipientEntry(name, description, type, htmlok); - if (!m_list[m_num]) return MK_OUT_OF_MEMORY; - if (!m_list[m_num]->GetName()) { - delete m_list[m_num]; - return MK_OUT_OF_MEMORY; - } - m_num++; - return 0; -} - - -MSG_RecipientList* -MSG_HTMLRecipients::GetList(XP_Bool htmlok) -{ - int32 i, j; - if (m_generatedList[0] == NULL) { - // Sort the entries in the list. Within a given type, we want to - // keep things in the order they were generated, but they need to - // be grouped by type. So, it's bubble-sort time. Whee... - for (i=1 ; i<m_num ; i++) { - for (j = i; - j > 0 && m_list[j]->GetType() < m_list[j-1]->GetType(); - j--) { - RecipientEntry* tmp = m_list[j]; - m_list[j] = m_list[j-1]; - m_list[j-1] = tmp; - } - } - - m_generatedList[0] = new MSG_RecipientList [m_num + 1]; - if (!m_generatedList[0]) return NULL; - m_generatedList[1] = new MSG_RecipientList [m_num + 1]; - if (!m_generatedList[1]) { - delete [] m_generatedList[0]; - return NULL; - } - int32 cur[2]; - cur[0] = cur[1] = 0; - for (i=0 ; i<m_num ; i++) { - int w = int(m_list[i]->GetHTMLOk()); - m_generatedList[w][cur[w]].name = m_list[i]->GetDescription(); - m_generatedList[w][cur[w]].value = i; - (cur[w])++; - } - for (i=0 ; i<2 ; i++) { - m_generatedList[i][cur[i]].name = NULL; - m_generatedList[i][cur[i]].value = -1; - } - } - return m_generatedList[int(htmlok)]; -} - - -int -MSG_HTMLRecipients::SetNewList(int32* notoklist, int32* oklist) -{ - int32 i; -#ifdef DEBUG - for (i=0 ; i<m_num ; i++) { - XP_ASSERT(!m_list[i]->GetTouched()); - } -#endif - for (int w=0 ; w<2 ; w++) { - XP_Bool ok = (w == 1); - int32* list = ok ? oklist : notoklist; - XP_ASSERT(list); - if (!list) continue; - for ( ; *list >= 0 ; list++) { - XP_ASSERT(*list < m_num); - if (*list >= m_num) break; - m_list[*list]->SetNewOK(ok); - } - } - int status = 0; - for (i=0 ; i<m_num ; i++) { - XP_ASSERT(m_list[i]->GetTouched()); - if (!m_list[i]->GetTouched()) { - status = -1; - } - } - return status; -} - - -char** -MSG_HTMLRecipients::GetChangedList(RecipientType type, XP_Bool htmlok) -{ - char** result = new char * [m_num + 1]; - if (!result) return NULL; - char** tmp = result; - for (int32 i=0 ; i<m_num ; i++) { - if (m_list[i]->GetType() == type && - m_list[i]->GetNewHTMLOk() == htmlok && - m_list[i]->GetHTMLOk() != htmlok) { - *tmp = m_list[i]->GetName(); - tmp++; - } - } - *tmp = NULL; - return result; -} - - -void -MSG_HTMLRecipients::FreeChangedList(char** list) -{ - delete [] list; -} - - -static void msg_free_attachment_list(struct MSG_AttachmentData *list); - -static void -msg_delete_attached_files(struct MSG_AttachedFile *attachments) -{ - struct MSG_AttachedFile *tmp; - if (!attachments) return; - for (tmp = attachments; tmp->orig_url; tmp++) { - FREEIF(tmp->orig_url); - FREEIF(tmp->type); - FREEIF(tmp->real_name); - FREEIF(tmp->encoding); - FREEIF(tmp->description); - FREEIF(tmp->x_mac_type); - FREEIF(tmp->x_mac_creator); - if (tmp->file_name) { - XP_FileRemove(tmp->file_name, xpFileToPost); - XP_FREE(tmp->file_name); - } - } - XP_FREEIF(attachments); -} - - -MSG_CompositionPane::MSG_CompositionPane(MWContext* context, - MWContext* old_context, - MSG_Prefs* prefs, - MSG_CompositionFields* fields, - MSG_Master* master) -: MSG_Pane(context, master) -{ - m_prefs = prefs; - m_htmlaction = MSG_HTMLAskUser; - Initialize(old_context, fields); - // make sure we have a valid folder tree - via side effect of getfoldertree - master->GetFolderTree(); -} - - -MSG_CompositionPane::MSG_CompositionPane(MWContext* context, - MSG_Prefs* prefs, - MSG_Master* master) -: MSG_Pane(context, master) -{ - m_prefs = prefs; - // make sure we have a valid folder tree - via side effect of getfoldertree - master->GetFolderTree(); -} - - -int -MSG_CompositionPane::Initialize(MWContext* old_context, - MSG_CompositionFields* fields) -{ - m_print = new PrintSetup; - HG22658 - // ###tw Should do something if this failed! - -#ifndef MOZ_NEWADDR - // Register with the personal address book - // so that things like name completion will - // happen with out the address book closing each time - DIR_Server* pab = NULL; - ABook * ab = NULL; - - DIR_GetComposeNameCompletionAddressBook (FE_GetDirServers(), &pab); - ab = FE_GetAddressBook(this); - - if (pab && ab) - { - int errorID = 0; - if ((errorID = AB_RegisterComposeWindow(ab, pab)) != 0) - FE_Alert (FE_GetAddressBookContext(NULL, (PRBool)FALSE), XP_GetString (errorID)); - } -#endif - - InitializeHeaders(old_context, fields); - m_visible_headers = GetInterestingHeaders(); - m_deliver_mode = MSG_DeliverNow; - m_haveAttachedVcard = FALSE; - - m_fields->SetForcePlainText(FALSE); // Coming into us, this field meant - // "bring up the editor in plaintext - // mode". Well, that's already been - // done at this point. Now, we want - // it to mean "convert this message - // to plaintext on send". Which we - // do only if DetermineHTMLAction() - // tells us to. - - return 0; -} - - - -MSG_CompositionPane::~MSG_CompositionPane() { - // Don't interrupt if there's nothing to interrupt because we might lose - // mocha messages. - if (NET_AreThereActiveConnectionsForWindow(m_context)) - msg_InterruptContext (m_context, FALSE); - if (m_textContext != NULL) { - msg_InterruptContext(m_textContext, TRUE); - } - - msg_delete_attached_files (m_attachedFiles); - - FREEIF(m_defaultUrl); - FREEIF(m_attachmentString); - - msg_free_attachment_list(m_attachData); - - delete m_print; - m_print = NULL; - - HG28266 - - if (m_context) FE_DestroyMailCompositionContext(m_context); - m_context = NULL; - - delete m_fields; - m_fields = NULL; - delete m_initfields; - m_initfields = NULL; - delete m_htmlrecip; - m_htmlrecip = NULL; - - DIR_Server* pab = NULL; - ABook * ab = NULL; - -#ifndef MOZ_NEWADDR - DIR_GetComposeNameCompletionAddressBook (FE_GetDirServers(), &pab); - ab = FE_GetAddressBook(this); - -#ifdef MOZ_NEWADDR - XP_ASSERT (pab); -#else - XP_ASSERT (pab && ab); -#endif - - if (pab && ab) - AB_UnregisterComposeWindow(ab, pab); -#endif - - FREEIF(m_quotedText); - FREEIF(m_messageId); -} - - -MSG_PaneType -MSG_CompositionPane::GetPaneType() { - return MSG_COMPOSITIONPANE; -} - - -void MSG_CompositionPane::NotifyPrefsChange(NotifyCode) { - // ###tw Write me! -} - - -HG02070 - -int MSG_CompositionPane::CreateVcardAttachment () -{ - DIR_Server* pab; - char* email; - char* name; - PersonEntry person; - ABID entryID; - int status = 0; - - if (!m_haveAttachedVcard) - { -#ifdef MOZ_NEWADDR - char * vCard = NULL; - char * filename = NULL; - AB_LoadIdentityVCard(&vCard); - if (vCard) - { - AB_ExportVCardToTempFile (vCard, &filename); - if (vCard) - XP_FREE(vCard); // free our allocated VCardString... - char buf [ 2 * kMaxFullNameLength ]; - if (FE_UsersFullName()) - name = XP_STRDUP (FE_UsersFullName()); - // write out a content description string - XP_SPRINTF (buf, XP_GetString (MK_ADDR_BOOK_CARD), name); - XP_FREEIF(name); -#else - DIR_GetPersonalAddressBook (FE_GetDirServers(), &pab); - - if (!pab) - return -1; - - person.Initialize(); - if (FE_UsersMailAddress()) { - email = XP_STRDUP (FE_UsersMailAddress()); - person.pEmailAddress = email; - } - if (FE_UsersFullName()) { - name = XP_STRDUP (FE_UsersFullName()); - person.pGivenName = name; - } - - AB_GetEntryIDForPerson(pab, - FE_GetAddressBook(NULL), &entryID, &person); - - person.CleanUp(); - - if (entryID != MSG_MESSAGEIDNONE) { - char fullname [ kMaxFullNameLength ]; - char buf [ 2 * kMaxFullNameLength ]; - char * filename = NULL; - - AB_ExportToVCardTempFile(FE_GetAddressBook(NULL), - pab, entryID, &filename); - - AB_GetFullName(pab, FE_GetAddressBook(NULL), entryID, fullname); - - XP_SPRINTF (buf, XP_GetString (MK_ADDR_BOOK_CARD), fullname); -#endif - - char* temp = WH_FileName(filename, xpFileToPost); - char * fileurl = NULL; - if (temp) - { - fileurl = XP_PlatformFileToURL (temp); - XP_FREE(temp); - } - else - return -1; - - // Send the vCard out with a filename which distinguishes this user. e.g. jsmith.vcf - // The main reason to do this is for interop with Eudora, which saves off - // the attachments separately from the message body - char *vCardFileName = NULL; - const char *mailServerUserName = NET_GetPopUsername(); - if (mailServerUserName) - vCardFileName = PR_smprintf ("%s.vcf", mailServerUserName); - if (!vCardFileName) - { - vCardFileName = XP_STRDUP("vcard.vcf"); - if (!vCardFileName) - return MK_OUT_OF_MEMORY; - } - - char * origurl = XP_PlatformFileToURL (vCardFileName); - int datacount = 0, filecount = 0; - for (MSG_AttachmentData *tmp1 = m_attachData; tmp1 && tmp1->url; tmp1++) datacount++; - for (MSG_AttachedFile *tmp = m_attachedFiles; tmp && tmp->orig_url; tmp++) filecount++; - - MSG_AttachmentData *alist; - if (datacount) { - alist = (MSG_AttachmentData *) - XP_REALLOC(m_attachData, (datacount + 2) * sizeof(MSG_AttachmentData)); - } - else { - alist = (MSG_AttachmentData *) - XP_ALLOC((datacount + 2) * sizeof(MSG_AttachmentData)); - } - if (!alist) - return MK_OUT_OF_MEMORY; - m_attachData = alist; - XP_MEMSET (m_attachData + datacount, 0, 2 * sizeof (MSG_AttachmentData)); - m_attachData[datacount].url = fileurl; - m_attachData[datacount].real_type = XP_STRDUP(vCardMimeFormat); - m_attachData[datacount].description = XP_STRDUP (buf); - m_attachData[datacount].real_name = XP_STRDUP (vCardFileName); - m_attachData[datacount + 1].url = NULL; - - MSG_AttachedFile *aflist; - if (filecount) { - aflist = (struct MSG_AttachedFile *) - XP_REALLOC(m_attachedFiles, (filecount + 2) * sizeof(MSG_AttachedFile)); - } - else { - aflist = (struct MSG_AttachedFile *) - XP_ALLOC((filecount + 2) * sizeof(MSG_AttachedFile)); - } - - if (!aflist) - return MK_OUT_OF_MEMORY; - - m_attachedFiles = aflist; - XP_MEMSET (m_attachedFiles + filecount, 0, 2 * sizeof (MSG_AttachedFile)); - m_attachedFiles[filecount].orig_url = origurl; - m_attachedFiles[filecount].file_name = filename; - m_attachedFiles[filecount].type = XP_STRDUP(vCardMimeFormat); - m_attachedFiles[filecount].description = XP_STRDUP (buf); - m_attachedFiles[filecount].real_name = XP_STRDUP (vCardFileName); - m_attachedFiles[filecount + 1].orig_url = NULL; - - m_haveAttachedVcard = TRUE; - - XP_FREE(vCardFileName); - } - } - return status; -} - - -char* -MSG_CompositionPane::FigureBcc(XP_Bool newsBcc) -{ - ABook* addressbook; - char* result = NULL; - FREEIF(result); - const char* tmp = - GetPrefs()->GetDefaultHeaderContents( - newsBcc ? MSG_NEWS_BCC_HEADER_MASK : MSG_BCC_HEADER_MASK); - if (!GetPrefs()->GetDefaultBccSelf(newsBcc)) { - result = XP_STRDUP(tmp ? tmp : ""); - } else if (!tmp || !*tmp) { - result = XP_STRDUP(FE_UsersMailAddress()); - } else { - result = PR_smprintf("%s, %s", FE_UsersMailAddress(), tmp); - } - if (result) { - addressbook = FE_GetAddressBook(this); - if (addressbook) { - char* t = AB_ExpandHeaderString(addressbook, result, - FALSE); - if (t) { - XP_FREE(result); - result = t; - } - } - } - return result; -} - - -const char* -MSG_CompositionPane::CheckForLosingFcc(const char* fcc) -{ - if (fcc && *fcc) { - char *q = GetPrefs()->MagicFolderName(MSG_FOLDER_FLAG_QUEUE); - if (q && *q && !XP_FILENAMECMP (q, fcc)) { - char *buf; - - /* We cannot allow them to use the queued mail folder - as their fcc folder, too. Tell them why. */ - - const char *q = MSG_GetQueueFolderName(); - if (q) { - if (!strcasecomp(q,QUEUE_FOLDER_NAME_OLD)) - buf = PR_smprintf("%s%s", XP_GetString(MK_MSG_WHY_QUEUE_SPECIAL_OLD), - XP_GetString(MK_MSG_NOT_AS_SENT_FOLDER)); - else buf = PR_smprintf("%s%s", XP_GetString(MK_MSG_WHY_QUEUE_SPECIAL), - XP_GetString(MK_MSG_NOT_AS_SENT_FOLDER)); - } - else buf = PR_smprintf("%s%s", XP_GetString(MK_MSG_WHY_QUEUE_SPECIAL), - XP_GetString(MK_MSG_NOT_AS_SENT_FOLDER)); - if (buf) { - FE_Alert(m_context, buf); - XP_FREE(buf); - } - - /* Now ignore the FCC file they passed in. */ - fcc = 0; - } - FREEIF(q); - } - return fcc; -} - -MsgERR -MSG_CompositionPane::GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, - int32 numindices, - XP_Bool *selectable_pP, - MSG_COMMAND_CHECK_STATE *selected_pP, - const char **display_stringP, - XP_Bool *plural_pP) -{ - const char *display_string = 0; - XP_Bool plural_p = FALSE; - // N.B. default is TRUE, so you don't need to set it in each case - XP_Bool selectable_p = TRUE; - XP_Bool selected_p = FALSE; - XP_Bool selected_used_p = FALSE; - - switch (command) - { - case MSG_AttachAsText: - // the WinFE uses this for lots of update, so pretend we handle it. - display_string = XP_GetString(MK_MSG_ATTACH_AS_TEXT); - break; - case MSG_SendMessage: - display_string = XP_GetString(MK_MSG_SEND); - if (m_attachmentInProgress) - selectable_p = FALSE; - break; - case MSG_SendMessageLater: - display_string = XP_GetString(MK_MSG_SEND_LATER); - if (m_attachmentInProgress) - selectable_p = FALSE; - break; - case MSG_SaveDraft: - case MSG_SaveDraftThenClose: - case MSG_SaveTemplate: - display_string = XP_GetString(MK_MSG_SAVE_DRAFT); - if (m_attachmentInProgress) - selectable_p = FALSE; - break; - case MSG_Attach: - display_string = XP_GetString(MK_MSG_ATTACH_ETC); - break; - - case MSG_ShowFrom: - display_string = XP_GetString(MK_MSG_FROM); - selected_p = ShowingCompositionHeader(MSG_FROM_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowReplyTo: - display_string = XP_GetString(MK_MSG_REPLY_TO); - selected_p = ShowingCompositionHeader(MSG_REPLY_TO_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowTo: - display_string = XP_GetString(MK_MSG_MAIL_TO); - selected_p = ShowingCompositionHeader(MSG_TO_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowCC: - display_string = XP_GetString(MK_MSG_MAIL_CC); - selected_p = ShowingCompositionHeader(MSG_CC_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowBCC: - display_string = XP_GetString(MK_MSG_MAIL_BCC); - selected_p = ShowingCompositionHeader(MSG_BCC_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowFCC: - display_string = XP_GetString(MK_MSG_FILE_CC); - selected_p = ShowingCompositionHeader(MSG_FCC_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowPostTo: - display_string = XP_GetString(MK_MSG_POST_TO); - selected_p = ShowingCompositionHeader(MSG_NEWSGROUPS_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowFollowupTo: - display_string = XP_GetString(MK_MSG_FOLLOWUPS_TO); - selected_p = ShowingCompositionHeader(MSG_FOLLOWUP_TO_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowSubject: - display_string = XP_GetString(MK_MSG_SUBJECT); - selected_p = ShowingCompositionHeader(MSG_SUBJECT_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowAttachments: - display_string = XP_GetString(MK_MSG_ATTACHMENT); - selected_p = ShowingCompositionHeader(MSG_ATTACHMENTS_HEADER_MASK); - selected_used_p = TRUE; - break; - default: - selectable_p = FALSE; - return MSG_Pane::GetCommandStatus(command, indices, numindices, - selectable_pP, selected_pP, display_stringP, plural_pP); - } - if (selectable_pP) - *selectable_pP = selectable_p; - if (selected_pP) - { - if (selected_used_p) - { - if (selected_p) - *selected_pP = MSG_Checked; - else - *selected_pP = MSG_Unchecked; - } - else - { - *selected_pP = MSG_NotUsed; - } - } - if (display_stringP) - *display_stringP = display_string; - if (plural_pP) - *plural_pP = plural_p; - - return 0; -} - - -MsgERR -MSG_CompositionPane::DoCommand(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numindices) -{ - MsgERR status = 0; - InterruptContext(FALSE); - switch (command) { - case MSG_SendMessage: - status = SendMessageNow(); /* ###tw Error-return-type mismatch! */ - break; - case MSG_SendMessageLater: - status = QueueMessageForLater();/* ###tw Error-return-type mismatch! */ - break; - case MSG_SaveDraft: - case MSG_SaveDraftThenClose: - if (command == MSG_SaveDraftThenClose) - m_closeAfterSave = TRUE; - status = SaveMessageAsDraft(); /* ### Error-return-type mismatch! */ - break; - case MSG_SaveTemplate: - status = SaveMessageAsTemplate(); - break; - case MSG_ShowPostTo: // how to do this? - ToggleCompositionHeader(MSG_NEWSGROUPS_HEADER_MASK); - break; - HG82762 - case MSG_ShowFrom: - ToggleCompositionHeader(MSG_FROM_HEADER_MASK); - break; - case MSG_ShowReplyTo: - ToggleCompositionHeader(MSG_REPLY_TO_HEADER_MASK); - break; - case MSG_ShowTo: - ToggleCompositionHeader(MSG_TO_HEADER_MASK); - break; - case MSG_ShowCC: - ToggleCompositionHeader(MSG_CC_HEADER_MASK); - break; - case MSG_ShowBCC: - ToggleCompositionHeader(MSG_BCC_HEADER_MASK); - break; - case MSG_ShowFCC: - ToggleCompositionHeader(MSG_FCC_HEADER_MASK); - break; - case MSG_ShowFollowupTo: - ToggleCompositionHeader(MSG_FOLLOWUP_TO_HEADER_MASK); - break; - case MSG_ShowSubject: - ToggleCompositionHeader(MSG_SUBJECT_HEADER_MASK); - break; - case MSG_ShowAttachments: - ToggleCompositionHeader(MSG_ATTACHMENTS_HEADER_MASK); - break; - default: - status = MSG_Pane::DoCommand(command, indices, numindices); - break; - } - return status; -} - -extern "C" void FE_MsgShowHeaders(MSG_Pane *pPane, MSG_HEADER_SET mhsHeaders); - -void MSG_CompositionPane::ToggleCompositionHeader(uint32 header) -{ - if (m_visible_headers & header) { - m_visible_headers &= ~header; - } else { - m_visible_headers |= header; - } - FE_MsgShowHeaders(this, m_visible_headers); -} - -XP_Bool -MSG_CompositionPane::ShowingAllCompositionHeaders() -{ - return m_visible_headers == ALL_HEADERS; -} - -XP_Bool -MSG_CompositionPane::ShowingCompositionHeader(uint32 mask) -{ - return (m_visible_headers & mask) == mask; -} - - -int -MSG_CompositionPane::SetCallbacks(MSG_CompositionPaneCallbacks* callbacks, - void* closure) -{ - m_callbacks = *callbacks; - m_callbackclosure = closure; - return 0; -} - - -void -MSG_CompositionPane::InitializeHeaders(MWContext* old_context, - MSG_CompositionFields* fields) -{ - XP_ASSERT(m_fields == NULL); - XP_ASSERT(m_initfields == NULL); - - const char *real_addr = FE_UsersMailAddress (); - char *real_return_address; - const char* sig; - XP_Bool forward_quoted; - forward_quoted = FALSE; - - m_fields = new MSG_CompositionFields(fields); - // ###tw Should check for failure! - - /* hack for forward quoted. Checks the attachment field for a cookie - string indicating that this is a forward quoted operation. If a cookie - is found, the attachment string is slid back down over the cookie. This - will put the original string back in tact. */ - - const char* attachment = m_fields->GetAttachments(); - - if (attachment) { - if (!XP_STRNCMP(attachment, MSG_FORWARD_COOKIE, - strlen(MSG_FORWARD_COOKIE))) { - attachment += XP_STRLEN(MSG_FORWARD_COOKIE); - forward_quoted = TRUE; /* set forward with quote flag */ - m_fields->SetAttachments(attachment); - attachment = m_fields->GetAttachments(); - } - } - - m_status = -1; - - if (MISC_ValidateReturnAddress(old_context, real_addr) < 0) { - return; - } - - real_return_address = MIME_MakeFromField(); - - XP_ASSERT (m_context->type == MWContextMessageComposition); - XP_ASSERT (XP_FindContextOfType(0, MWContextMessageComposition)); - XP_ASSERT (!m_context->msg_cframe); - - int32 count = m_fields->GetNumForwardURL(); - if (count > 0) { - // if forwarding one or more messages - XP_ASSERT(*attachment == '\0'); - MSG_AttachmentData *alist = (struct MSG_AttachmentData *) - XP_ALLOC((count + 1) * sizeof(MSG_AttachmentData)); - if (alist) { - XP_MEMSET(alist, 0, (count + 1) * sizeof(*alist)); - for (count--; count >= 0; count--) { - alist[count].url = (char*) m_fields->GetForwardURL(count); - alist[count].real_name = (char*) m_fields->GetForwardURL(count); - } - SetAttachmentList(alist); - XP_FREE(alist); - } - } else if (*attachment) { - // forwarding a single url - // typically a web page - MSG_AttachmentData *alist; - count = 1; - alist = (struct MSG_AttachmentData *) - XP_ALLOC((count + 1) * sizeof(MSG_AttachmentData)); - if (alist) { - XP_MEMSET(alist, 0, (count + 1) * sizeof(*alist)); - alist[0].url = (char *)attachment; - alist[0].real_name = XP_STRDUP ((char *)attachment); - SetAttachmentList(alist); - } - } // else if (*attachment) - - if (*attachment) { - if (*attachment != '(') { - m_defaultUrl = XP_STRDUP(attachment); - } - } - else if (old_context) { - History_entry *h = SHIST_GetCurrent(&old_context->hist); - if (h && h->address) { - m_defaultUrl = XP_STRDUP(h->address); - } - } - - if (!*m_fields->GetFrom()) { - m_fields->SetFrom(real_return_address); - } - - /* Guess what kind of reply this is based on the headers we passed in. - */ - - const char* newsgroups = m_fields->GetNewsgroups(); - const char* to = m_fields->GetTo(); - const char* cc = m_fields->GetCc(); - const char* references = m_fields->GetReferences(); - - if (count > 0 || *attachment) { - /* if an attachment exists and the forward_quoted flag is set, this - is a forward quoted operation. */ - if (forward_quoted) { - m_replyType = MSG_ForwardMessageQuoted; - /* clear out the attachment list for forward quoted messages. */ - SetAttachmentList(NULL); - m_pendingAttachmentsCount = 0; - } else { - m_replyType = MSG_ForwardMessageAttachment; - } - } else if (*references && *newsgroups && (*to || *cc)) { - m_replyType = MSG_PostAndMailReply; - } else if (*references && *newsgroups) { - m_replyType = MSG_PostReply; - } else if (*references && *cc) { - m_replyType = MSG_ReplyToAll; - } else if (*references && *to) { - m_replyType = MSG_ReplyToSender; - } else if (*newsgroups) { - m_replyType = MSG_PostNew; - } else { - m_replyType = MSG_MailNew; - } - - -HG00729 - - - if (!*m_fields->GetOrganization()) { - m_fields->SetOrganization(FE_UsersOrganization()); - } - - if (!*m_fields->GetReplyTo()) { - m_fields-> - SetReplyTo(GetPrefs()-> - GetDefaultHeaderContents(MSG_REPLY_TO_HEADER_MASK)); - } - if (!*m_fields->GetFcc()) - { - XP_Bool useDefaultFcc = TRUE; - /*int prefError =*/ PREF_GetBoolPref(*newsgroups ? "news.use_fcc" : "mail.use_fcc", - &useDefaultFcc); - if (useDefaultFcc) - { - m_fields->SetFcc(GetPrefs()-> - GetDefaultHeaderContents(*newsgroups ? - MSG_NEWS_FCC_HEADER_MASK : MSG_FCC_HEADER_MASK)); - } - } - if (!*m_fields->GetBcc()) { - char* bcc = FigureBcc(*newsgroups); - m_fields->SetBcc(bcc); - FREEIF(bcc); - } - - m_fields->SetFcc(CheckForLosingFcc(m_fields->GetFcc())); - - { - const char *body = m_fields->GetDefaultBody(); - if (body && *body) - { - m_fields->AppendBody(body); - m_fields->AppendBody(LINEBREAK); - /* m_bodyEdited = TRUE; */ - } - } - - HG93653 - sig = FE_UsersSignature (); - if (sig && *sig) { - m_fields->AppendBody(LINEBREAK); - /* If the sig doesn't begin with "--" followed by whitespace or a - newline, insert "-- \n" (the pseudo-standard sig delimiter.) */ - if (sig[0] != '-' || sig[1] != '-' || - (sig[2] != ' ' && sig[2] != CR && sig[2] != LF)) { - m_fields->AppendBody("-- " LINEBREAK); - } - m_fields->AppendBody(sig); - } - - FREEIF (real_return_address); - - - FE_SetDocTitle(m_context, (char*) GetWindowTitle()); - - - m_initfields = new MSG_CompositionFields(m_fields); - // ###tw Should check for failure! - -} - - -XP_Bool MSG_CompositionPane::ShouldAutoQuote() { - if (m_haveQuoted) return FALSE; - if (m_replyType == MSG_ForwardMessageQuoted || - GetPrefs()->GetAutoQuoteReply()) { - switch (m_replyType) { - case MSG_ForwardMessageQuoted: - case MSG_PostAndMailReply: - case MSG_PostReply: - case MSG_ReplyToAll: - case MSG_ReplyToSender: - return TRUE; - - default: - break; - } - } - return FALSE; -} - - - - -const char* MSG_CompositionPane::GetDefaultURL() { - return m_defaultUrl; -} - - - -MSG_CompositionFields* -MSG_CompositionPane::GetInitialFields() -{ - return m_initfields; -} - - - - -#define ALL_HEADERS (MSG_FROM_HEADER_MASK | \ - MSG_REPLY_TO_HEADER_MASK | \ - MSG_TO_HEADER_MASK | \ - MSG_CC_HEADER_MASK | \ - MSG_BCC_HEADER_MASK | \ - MSG_FCC_HEADER_MASK | \ - MSG_NEWSGROUPS_HEADER_MASK | \ - MSG_FOLLOWUP_TO_HEADER_MASK | \ - MSG_SUBJECT_HEADER_MASK | \ - MSG_ATTACHMENTS_HEADER_MASK) - - -MSG_HEADER_SET MSG_CompositionPane::GetInterestingHeaders() -{ - MSG_HEADER_SET desired_mask = 0; - /* The FE has requested the list of "interesting" header fields. - The logic here is a bit complicated, in the interest of DWIMity. - */ - - /* Cc, Subject, and Attachments are always interesting. - */ - desired_mask |= (MSG_CC_HEADER_MASK | - MSG_SUBJECT_HEADER_MASK /* | - MSG_ATTACHMENTS_HEADER_MASK */); - - /* To is interesting if: - - it is non-empty, or - - this composition window was brought up with a "mail sending" - command (Mail New, Reply-*, Forward, or Post and Mail). - */ - if (*m_fields->GetTo() || - m_replyType == MSG_MailNew || - m_replyType == MSG_ReplyToSender || - m_replyType == MSG_ReplyToAll || - m_replyType == MSG_PostAndMailReply || - m_replyType == MSG_ForwardMessageAttachment || - m_replyType == MSG_ForwardMessageQuoted) - desired_mask |= MSG_TO_HEADER_MASK; - - /* CC is interesting if: - - it is non-empty, or - - this composition window was brought up as a reply to another - mail message. (Should mail-and-post do this too?) - */ - if ((*m_fields->GetCc()) || - m_replyType == MSG_ReplyToSender || - m_replyType == MSG_ReplyToAll) - desired_mask |= MSG_CC_HEADER_MASK; - - /* Reply-To and BCC are interesting if: - - they are non-empty, AND - - they are different from the default value - (meaning the user has edited them this session.) - */ - const char* reply_to = m_fields->GetReplyTo(); - const char* default_reply_to = - GetPrefs()->GetDefaultHeaderContents(MSG_REPLY_TO_HEADER_MASK); - if (reply_to && *reply_to && - ((default_reply_to && *default_reply_to) - ? !!XP_STRCMP (reply_to, default_reply_to) : TRUE)) - desired_mask |= MSG_REPLY_TO_HEADER_MASK; - - /* (see above.) */ - const char* bcc = m_fields->GetBcc(); - const char* default_bcc = - GetPrefs()->GetDefaultHeaderContents(MSG_BCC_HEADER_MASK); - if (bcc && *bcc && - ((default_bcc && *default_bcc) - ? !!XP_STRCMP (bcc, default_bcc) : TRUE)) - desired_mask |= MSG_BCC_HEADER_MASK; - - /* FCC is never interesting. - */ - - /* Newsgroups is interesting if: - - it is non-empty, or - - this composition window was brought up with a "news posting" - command (Post New, Post Reply, or Post and Mail). - */ - - const char* newsgroups = m_fields->GetNewsgroups(); - if ((newsgroups && *newsgroups) || - m_replyType == MSG_PostNew || - m_replyType == MSG_PostReply || - m_replyType == MSG_PostAndMailReply) - desired_mask |= MSG_NEWSGROUPS_HEADER_MASK; - - /* Followup-To is interesting if: - - it is non-empty, AND - - it differs from the Newsgroups field. - */ - const char* followup_to = m_fields->GetFollowupTo(); - if (followup_to && *followup_to && - (newsgroups ? XP_STRCMP (followup_to, newsgroups) : TRUE)) - desired_mask |= MSG_FOLLOWUP_TO_HEADER_MASK; - - return desired_mask; -} - - -void -MSG_CompositionPane::GetUrlDone_S(PrintSetup* pptr) -{ - ((MSG_CompositionPane*) (pptr->carg))->GetUrlDone(pptr); -} - - -#define QUOTE_BUFFER_SIZE 10240 - -void -MSG_CompositionPane::GetUrlDone(PrintSetup* /*pptr*/) -{ - XP_File file; - FREEIF(m_quoteUrl); - m_textContext = NULL; /* since this is called as a result of - TXFE_AllConnectionsComplete, we know this context - is going away by natural means */ - int bufSize = QUOTE_BUFFER_SIZE; - - XP_FileClose(m_print->out); - - XP_StatStruct stat; - char* curquote = NULL; - int32 replyOnTop = 0, replyWithExtraLines = 0; - - PREF_GetIntPref("mailnews.reply_on_top", &replyOnTop); - PREF_GetIntPref("mailnews.reply_with_extra_lines", &replyWithExtraLines); - - int32 extra = (m_markup ? 0 : - (replyWithExtraLines ? LINEBREAK_LEN * replyWithExtraLines - : 0)); - - if (XP_Stat(m_print->filename, &stat, xpTemporary) == 0) { - m_quotedText = (char*) XP_ALLOC(stat.st_size + 1 + extra); - - /* Insert two line break at the begining of the quoted text */ - if (!m_quotedText) return; - - curquote = m_quotedText; - - if (!m_markup && extra && replyOnTop == 1) { - for (; replyWithExtraLines > 0; replyWithExtraLines--) { - XP_STRCPY(curquote, LINEBREAK); - curquote += LINEBREAK_LEN; - if (m_quotefunc) - (*m_quotefunc)(m_quoteclosure, LINEBREAK); - } - } - } - - /* Open hateful temporary file as input */ - file = XP_FileOpen (m_print->filename, xpTemporary, XP_FILE_READ); - if (file) { - char* buf = NULL; - while (!buf && (bufSize >= 512)) - { - buf = (char*)XP_ALLOC(bufSize + 1); - if (!buf) - bufSize /= 2; - } - if (buf) { - int32 bufferLen; - CCCDataObject conv; - int doConv; - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(m_context); - int16 win_csid = INTL_GetCSIWinCSID(c); - - /* - * We aren't actually converting character encodings here. - * (Note that both the "from" and "to" are the win_csid.) - * This makes it call a special routine that makes sure we - * deal with whole multibyte characters instead of partial - * ones that happen to lie on the boundary of the buffer. -- erik - */ - conv = INTL_CreateCharCodeConverter(); - if (conv) { - doConv = INTL_GetCharCodeConverter(win_csid, win_csid, conv); - } else { - doConv = 0; - } - - while (0 < (bufferLen = XP_FileRead(buf, bufSize, file))) { - char *newBuf; - buf[bufferLen] = '\0'; - if (doConv) { - newBuf = (char *) - INTL_CallCharCodeConverter(conv, - (unsigned char *) buf, - bufferLen); - if (!newBuf) { - newBuf = buf; - } - } else { - newBuf = buf; - } - if (m_quotefunc) { - (*m_quotefunc)(m_quoteclosure, newBuf); - } - - if (m_quotedText && curquote) { - XP_ASSERT(curquote + bufferLen <= m_quotedText + stat.st_size + extra); - if (curquote + bufferLen <= m_quotedText + stat.st_size + extra) { - XP_STRCPY(curquote, newBuf); - curquote += bufferLen; - } - } - - if (newBuf != buf) { - XP_FREE(newBuf); - } - } - - if (!m_markup && extra && replyOnTop == 0) { - for (; replyWithExtraLines > 1; replyWithExtraLines--) { - XP_STRCPY(curquote, LINEBREAK); - curquote += LINEBREAK_LEN; - if (m_quotefunc) - (*m_quotefunc)(m_quoteclosure, LINEBREAK); - } - } - - XP_FREE(buf); - if (conv) { - INTL_DestroyCharCodeConverter(conv); - } - } - XP_FileClose(file); - } - if (curquote) *curquote = '\0'; - m_cited = TRUE; - XP_FileRemove(m_print->filename, xpTemporary); - FREEIF(m_print->filename); - if (m_exitQuoting) { - (*m_exitQuoting)(m_dummyUrl, 0, m_context); - m_exitQuoting = NULL; - m_dummyUrl = NULL; - - /* hack that manages to get the cursor back to normal. */ - NET_SilentInterruptWindow(m_context); - } - if (m_quotefunc) { - (*m_quotefunc)(m_quoteclosure, NULL); - m_quotefunc = NULL; - } - - - /* Re-enable the UI. */ - FE_UpdateCompToolbar (this); -} - - - -class QuotePlainIntoHTML : public MSG_ZapIt { -public: - QuotePlainIntoHTML(MWContext* context); - ~QuotePlainIntoHTML(); - - int DoQuote(const char* data); - static int32 QuoteLine_s(char* line, uint32 line_length, void* closure); - int32 QuoteLine(char* line, uint32 line_length); -protected: - MWContext* m_context; - char* m_buffer; - uint32 m_size; - uint32 m_fp; - XP_Bool m_insertedpre; - char* m_outbuf; - int32 m_outbufsize; - int m_maxLineWidth; - int32 m_replyOnTop; - int32 m_replyWithExtraLines; -}; - - -static int -MyQuoteFunc(void* closure, const char* data) -{ - return ((QuotePlainIntoHTML*) closure)->DoQuote(data); -} - - - - - -QuotePlainIntoHTML::QuotePlainIntoHTML(MWContext* context) -{ - m_context = context; - if (EDT_PasteQuoteBegin(m_context, TRUE) != EDT_COP_OK) { - m_context = NULL; - } - PREF_GetIntPref("mailnews.reply_on_top", &m_replyOnTop); - PREF_GetIntPref("mailnews.reply_with_extra_lines", &m_replyWithExtraLines); -} - -QuotePlainIntoHTML::~QuotePlainIntoHTML() -{ - FREEIF(m_buffer); - delete [] m_outbuf; -} - - - - -int -QuotePlainIntoHTML::DoQuote(const char* data) -{ - if (data) { - if (!m_context) return 0; - return msg_LineBuffer(data, XP_STRLEN(data), &m_buffer, &m_size, &m_fp, FALSE, -#ifdef XP_OS2 - (int32 (_Optlink*) (char*,uint32,void*)) -#endif - QuoteLine_s, this); - - } else { - if (m_context) { - if (m_fp > 0) { - QuoteLine(m_buffer, m_fp); - } - if (m_insertedpre) { - EDT_PasteQuote(m_context, "</PRE></BLOCKQUOTE>"); - } - if ( 0 == m_replyOnTop && m_replyWithExtraLines) - for (;m_replyWithExtraLines > 0; m_replyWithExtraLines--) - EDT_PasteQuote(m_context, "<BR>"); - EDT_PasteQuoteEnd(m_context); - - MSG_CompositionPane *cpane = (MSG_CompositionPane *) - MSG_FindPane(m_context, MSG_COMPOSITIONPANE); - if (cpane) - cpane->SetLineWidth(m_maxLineWidth); - } - delete this; - return 0; - } -} - - -int32 -QuotePlainIntoHTML::QuoteLine_s(char* line, uint32 length, void* closure) -{ - return ((QuotePlainIntoHTML*)closure)->QuoteLine(line, length); -} - -int32 -QuotePlainIntoHTML::QuoteLine(char* line, uint32 length) -{ - if (length > m_maxLineWidth) - m_maxLineWidth = length; - - if (length >= 2 && line[0] == '>' && line[1] == ' ') { - line += 2; - length -= 2; - if (!m_insertedpre) { - EDT_PasteQuote(m_context, "<BLOCKQUOTE TYPE=CITE><PRE NSCISAW>"); - m_insertedpre = TRUE; - } - } - else if (!m_insertedpre) { - if (1 == m_replyOnTop && m_replyWithExtraLines) - for (; m_replyWithExtraLines > 0; m_replyWithExtraLines--) - EDT_PasteQuote(m_context, "<BR>"); - } - - int l = length * 2 + 50; - if (l > m_outbufsize) { - if (l < 512) l = 512; - m_outbufsize = l; - delete [] m_outbuf; - m_outbuf = new char [m_outbufsize]; - } - if (m_outbuf) { - *m_outbuf = '\0'; - NET_ScanForURLs(NULL, line, length, m_outbuf, m_outbufsize, TRUE); - EDT_PasteQuote(m_context, m_outbuf); - } - return 0; -} - - -void -MSG_CompositionPane::QuoteHTMLDone_S(URL_Struct* url, int /*status*/, MWContext* /*context*/) -{ - MSG_CompositionPane *pane = (MSG_CompositionPane *) url->fe_data; - if (pane) { - FREEIF(pane->m_quoteUrl); - pane->m_quotefunc = NULL; - if (pane->m_quoteclosure) { - delete pane->m_quoteclosure; - pane->m_quoteclosure = NULL; - } - } - NET_FreeURLStruct(url); -} - - - -MsgERR MSG_CompositionPane::QuoteMessage(int (*func)(void* closure, - const char* data), - void* closure) -{ - MsgERR status = 0; - char* ptr; - m_haveQuoted = TRUE; - if (!m_defaultUrl) return 0; /* Nothing to quote. */ - if (m_quoteUrl) return 0; /* Currently already quoting! */ - - XP_ASSERT(m_quotefunc == NULL); - - if (m_markup) { - func = MyQuoteFunc; - closure = new QuotePlainIntoHTML(GetContext()); - if (!closure) return MK_OUT_OF_MEMORY; - } - - const char* htmlpart = m_fields->GetHTMLPart(); - XP_Bool quotehtml = (m_markup && htmlpart != NULL && *htmlpart != '\0'); - - if (m_quotedText) { - if (func) { -#ifdef EXTRA_QUOTE_BEGIN - if (m_markup) { - if (EDT_PasteQuoteBegin(GetContext(), - TRUE) != EDT_COP_OK) { - return eUNKNOWN; - } - } -#endif - (*func)(closure, m_quotedText); - (*func)(closure, NULL); - } - return 0; - } - - - m_quotefunc = func; - m_quoteclosure = closure; - - - m_quoteUrl = XP_STRDUP(m_defaultUrl); - if (!m_quoteUrl) return eOUT_OF_MEMORY; - - /* remove any position information from the url - */ - ptr = XP_STRCHR(m_quoteUrl, '#'); - if (ptr) *ptr = '\0'; - - if (quotehtml) { - URL_Struct* url = NET_CreateURLStruct(m_quoteUrl, NET_DONT_RELOAD); - if (!url) return MK_OUT_OF_MEMORY; - - // This is a hack, really should be url->msg_pane, but this prevents mail - // quoting from working at all. We just need SOME sort of way to give - // the msg_page to the completion function. - url->fe_data = (void *)this; - - // Set this because when quoting messages that might have been - // downloaded through IMAP MIME Parts on Demand (with some parts left out) - // we think it is OK to only quote the inline parts that have been - // downloaded. - // (That is, we don't think it's necessary to re-download the entire message - // from the server. We might be wrong about this, but so far haven't seen - // any examples to the contrary.) - url->allow_content_change = TRUE; - MSG_UrlQueue::AddUrlToPane (url, QuoteHTMLDone_S, this, TRUE, FO_QUOTE_HTML_MESSAGE); - return 0; - } - - - XL_InitializeTextSetup(m_print); - m_print->out = NULL; - m_print->prefix = "> "; - if (m_markup) { - if (htmlpart && *htmlpart) { - // Quoting html into html - // We are kind of doomed on this case when force sending plain text - // if there are hard line breaks. - m_print->width = 999; - } - else { - // Quoting plain text into html; there are hard line breaks - // We should not reformat the line when force sending plain text - // message - // This is done via recording the max line width when we quote each plain - // text line and then use the max line width if it is greater than default - // wraplinewidth. This prevent from reformatting the qutoed line in an - // unwanted fashion. - m_print->width = 998; - } - - // m_print->width = 999; // Cheap hack. The EDT_PasteQuote routine - // generates HTML that is better at wrapping - // than the TextFE is, so try and let it do the - // wrapping instead. - } - else { - if (htmlpart && *htmlpart) { - // We are quoting html message into plain text message - // Use wrapline width from preference - int32 width = 72; - PREF_GetIntPref("mailnews.wraplength", &width); - if (width == 0) width = 72; - else if (width < 10) width = 10; - else if (width > 30000) width = 30000; - m_print->width = width - 2; - } - else { - // We are quoting plain text message.to plain text - // We shouldn't reformat the original message since everyline already - // has hard line break <CR><LF> we simply set the m_print->width to 999. - m_print->width = 997; - } - // m_print->width = 70; // The default window is 72 wide; subtract 2 for "> ". - } - m_print->carg = this; - m_print->url = NET_CreateURLStruct(m_defaultUrl, NET_DONT_RELOAD); - if (!m_print->url) { - status = eOUT_OF_MEMORY; - goto FAIL; - } - HG98265 - m_print->url->position_tag = 0; - m_print->completion = MSG_CompositionPane::GetUrlDone_S; - m_print->filename = WH_TempName(xpTemporary, "ns"); - if (!m_print->filename) { - status = eOUT_OF_MEMORY; - goto FAIL; - } - m_print->out = XP_FileOpen(m_print->filename, xpTemporary, XP_FILE_WRITE); - if (!m_print->out) { - status = 9999; /* ###tw Need the right error code! */ - goto FAIL; - } - m_print->cx = m_context; - m_exitQuoting = NULL; - m_dummyUrl = NET_CreateURLStruct("about:", NET_DONT_RELOAD); - m_dummyUrl->internal_url = TRUE; - if (m_dummyUrl) { - FE_SetWindowLoading(m_context, m_dummyUrl, &m_exitQuoting); - XP_ASSERT(m_exitQuoting != NULL); - } - - /* Start the URL loading... (msg_get_url_done gets called later.) */ - - - m_textContext = (MWContext*) XL_TranslateText(m_context, m_print->url, - m_print); - // ###tw I'm not at all sure this cast is the - // right thing to do here... - - return 0; -FAIL: - FREEIF(m_print->filename); - FREEIF(m_quoteUrl); - if (m_print->out) { - XP_FileClose(m_print->out); - m_print->out = NULL; - } - if (m_print->url) { - NET_FreeURLStruct(m_print->url); - m_print->url = NULL; - } - return status; -} - - -int -MSG_CompositionPane::PastePlaintextQuotation(const char* str) -{ - if (str && *str) { - if (EDT_PasteQuoteBegin(m_context, TRUE) != EDT_COP_OK) { - return -1; - } - EDT_PasteQuote(m_context, "<BLOCKQUOTE TYPE=CITE><PRE>"); - EDT_PasteQuote(m_context, (char*) str); - EDT_PasteQuote(m_context, "</PRE></BLOCKQUOTE>"); - EDT_PasteQuoteEnd(m_context); - } - return 0; -} - - - -int -MSG_CompositionPane::SetAttachmentList(struct MSG_AttachmentData* list) -{ - int count = 0; - MSG_AttachmentData *tmp; - MSG_AttachmentData *tmp2; - int status = 0; - - ClearCompositionMessageID(); /* Since the attachment list has changed, - the message has changed, so make sure - we're using a fresh message-id when we - try to send it. */ - - msg_free_attachment_list(m_attachData); - m_attachData = NULL; - - for (tmp = list; tmp && tmp->url; tmp++) count++; - - if (count > 0) { - m_attachData = (MSG_AttachmentData*) - XP_ALLOC((count + 1) * sizeof(MSG_AttachmentData)); - if (!m_attachData) { - FE_Alert(m_context, XP_GetString(MK_OUT_OF_MEMORY)); - return MK_OUT_OF_MEMORY; - } - - XP_MEMSET(m_attachData, 0, (count + 1) * sizeof(MSG_AttachmentData)); - } - - if (count > 0) { - for (tmp = list, tmp2 = m_attachData; tmp->url; tmp++, tmp2++) { - tmp2->url = XP_STRDUP(tmp->url); - if (tmp->desired_type) { - tmp2->desired_type = XP_STRDUP(tmp->desired_type); - } - if (tmp->real_type) { - tmp2->real_type = XP_STRDUP(tmp->real_type); - } - if (tmp->real_encoding) { - tmp2->real_encoding = XP_STRDUP(tmp->real_encoding); - } - if (tmp->real_name) { - tmp2->real_name = XP_STRDUP(tmp->real_name); - } - if (tmp->description) { - tmp2->description = XP_STRDUP(tmp->description); - } - if (tmp->x_mac_type) { - tmp2->x_mac_type = XP_STRDUP(tmp->x_mac_type); - } - if (tmp->x_mac_creator) { - tmp2->x_mac_creator = XP_STRDUP(tmp->x_mac_creator); - } - } - } - status = DownloadAttachments(); - return status; -} - - -const struct MSG_AttachmentData * -MSG_CompositionPane::GetAttachmentList() -{ - if (m_attachData && m_attachData[0].url != NULL) return m_attachData; - return NULL; -} - - -static void -msg_free_attachment_list(struct MSG_AttachmentData *list) -{ - MSG_AttachmentData* tmp; - if (!list) return; - for (tmp = list ; tmp->url ; tmp++) { - XP_FREE((char*) tmp->url); - if (tmp->desired_type) XP_FREE((char*) tmp->desired_type); - if (tmp->real_type) XP_FREE((char*) tmp->real_type); - if (tmp->real_encoding) XP_FREE((char*) tmp->real_encoding); - if (tmp->real_name) XP_FREE((char*) tmp->real_name); - if (tmp->description) XP_FREE((char*) tmp->description); - if (tmp->x_mac_type) XP_FREE((char*) tmp->x_mac_type); - if (tmp->x_mac_creator) XP_FREE((char*) tmp->x_mac_creator); - } - XP_FREEIF(list); -} - - - -/* Whether the given saved-attachment-file thing is a match for the given - URL (in source and type-conversion.) - */ -static XP_Bool -msg_attachments_match (MSG_AttachmentData *attachment, - MSG_AttachedFile *file) -{ - const char *dt; - XP_ASSERT(attachment && file); - if (!attachment || !file) return FALSE; - XP_ASSERT(attachment->url && file->orig_url); - if (!attachment->url || !file->orig_url) return FALSE; - - XP_ASSERT(file->type); - if (!file->type) return FALSE; - XP_ASSERT(file->file_name); - if (XP_STRCMP(attachment->url, file->orig_url)) return FALSE; - - /* If the attachment has a conversion type specified (and it's not the - "no conversion" type) then this is only a match if the saved document - ended up with that type as well. - */ - dt = ((attachment->desired_type && *attachment->desired_type) - ? attachment->desired_type - : 0); - if (dt && !strcasecomp(dt, TEXT_HTML)) - dt = 0; - - /* dt only has a value if it's "not `As Is', ie, text/plain or app/ps. */ - if (dt && XP_STRCMP(dt, file->type)) - return FALSE; - - return TRUE; -} - - -int -MSG_CompositionPane::DownloadAttachments() -{ - int attachment_count = 0; - int new_download_count = 0; - int download_overlap_count = 0; - MSG_AttachmentData *tmp; - MSG_AttachmentData *downloads = 0; - MSG_AttachedFile *tmp2; - int returnValue = 0; - - // *** Relax the rule a little bit to enable resume downloading at - // *** send time. - // XP_ASSERT(!m_deliveryInProgress); - - // Make sure we do not have an attachement already pending. If we do, - // then we do not want to interrupt it. The new attachement will be picked up - // when we go to send the message. - - if (m_attachmentInProgress) - return MK_INTERRUPTED; // this status value is ignored by the caller - - m_pendingAttachmentsCount = 0; // reset m_pendingAttachmentsCount - // in case the attachmentlist has been - // cleared - - if (m_attachData) - for (tmp = m_attachData; tmp->url; tmp++) - attachment_count++; - - /* First, go through the list of desired attachments, and the list of - currently-saved attachments, and delete the files (and data) of the - ones which were attached/saved but are no longer. - */ - tmp2 = m_attachedFiles; - while (tmp2 && tmp2->orig_url) { - XP_Bool match = FALSE; - for (tmp = m_attachData; tmp && tmp->url; tmp++) { - if (msg_attachments_match(tmp, tmp2)) { - match = TRUE; - break; - } - } - if (match) { - tmp2++; - download_overlap_count++; - } else { - /* Delete the file, free the strings, and pull the other entries - forward to cover this one. */ - int i = 0; - - if (tmp2->file_name) { - XP_FileRemove(tmp2->file_name, xpFileToPost); - XP_FREE(tmp2->file_name); - } - FREEIF(tmp2->orig_url); - FREEIF(tmp2->type); - FREEIF(tmp2->encoding); - FREEIF(tmp2->description); - FREEIF(tmp2->x_mac_type); - FREEIF(tmp2->x_mac_creator); - FREEIF(tmp2->real_name); - - do { - tmp2[i]=tmp2[i+1]; - } while (tmp2[i++].orig_url); - } - } - - /* Now download any new files that are in the list. - */ - if (download_overlap_count != attachment_count) { - MSG_AttachmentData *dfp; - new_download_count = attachment_count - download_overlap_count; - m_pendingAttachmentsCount = new_download_count; - downloads = (MSG_AttachmentData *) - XP_ALLOC(sizeof(MSG_AttachmentData) * (new_download_count + 1)); - if (!downloads) { - FE_Alert(m_context, XP_GetString(MK_OUT_OF_MEMORY)); - return MK_OUT_OF_MEMORY; - } - XP_MEMSET(downloads, 0, sizeof(*downloads) * (new_download_count + 1)); - - dfp = downloads; - for (tmp = m_attachData; tmp && tmp->url; tmp++) { - XP_Bool match = FALSE; - if (m_attachedFiles) - for (tmp2 = m_attachedFiles; tmp2->orig_url; tmp2++) { - if (msg_attachments_match(tmp, tmp2)) { - match = TRUE; - break; - } - } - if (!match) { - *dfp = *tmp; - dfp++; - } - } - if (!downloads[0].url) return 0; - // *** Relax the rule a little bit to enable resume downloading at - // *** send time. - // XP_ASSERT(!m_deliveryInProgress); - XP_ASSERT(!m_attachmentInProgress); - m_attachmentInProgress = TRUE; - FE_UpdateCompToolbar (this); - returnValue = msg_DownloadAttachments(this, this, downloads, -#ifdef XP_OS2 - (void (_Optlink*) (MWContext*,void*,int,const char*,MSG_AttachedFile*)) -#endif - MSG_CompositionPane::DownloadAttachmentsDone_S); - XP_FREE(downloads); - } - return returnValue; -} - -void -MSG_CompositionPane::DownloadAttachmentsDone_S(MWContext *context, - void *fe_data, - int status, - const char *error_message, - struct MSG_AttachedFile *attachments) -{ - ((MSG_CompositionPane*) fe_data)->DownloadAttachmentsDone(context, status, - error_message, - attachments); -} - -void -MSG_CompositionPane::DownloadAttachmentsDone(MWContext* context, int status, - const char* error_message, - struct MSG_AttachedFile *attachments) -{ - XP_ASSERT(context == m_context); - - int old_count = 0; - int new_count = 0; - struct MSG_AttachedFile *tmp; - MSG_AttachedFile *newd; - - // *** Relax the rule a little bit to enable resume downloading at - // *** send time. - // XP_ASSERT(!m_deliveryInProgress); - if (m_attachmentInProgress) { - m_attachmentInProgress = FALSE; - FE_UpdateCompToolbar (this); - } - - if (status < 0) goto FAIL; - - status = MK_INTERRUPTED; - if (!m_attachData) goto FAIL; - - HG98229 - if (m_attachedFiles) { - for (tmp = m_attachedFiles; tmp->orig_url; tmp++) old_count++; - } - if (attachments) { - for (tmp = attachments; tmp->orig_url; tmp++) new_count++; - } - - if (old_count + new_count == 0) goto FAIL; - newd = (MSG_AttachedFile *) - XP_REALLOC(m_attachedFiles, - ((old_count + new_count + 1) - * sizeof(MSG_AttachedFile))); - - if (!newd) { - status = MK_OUT_OF_MEMORY; - error_message = XP_GetString(status); - goto FAIL; - } - m_attachedFiles = newd; - XP_MEMCPY(newd + old_count, - attachments, - sizeof(MSG_AttachedFile) * (new_count + 1)); - - XP_ASSERT (m_pendingAttachmentsCount >= new_count); - m_pendingAttachmentsCount -= new_count; - if (m_deliveryInProgress) { - m_deliveryInProgress = FALSE; - DoneComposeMessage(m_deliver_mode); - } - return; - -FAIL: - XP_ASSERT(status < 0); - if (error_message) { - FE_Alert(context, error_message); - } - else if (status != MK_INTERRUPTED) { - char *errmsg; - errmsg = PR_smprintf(XP_GetString(MK_COMMUNICATIONS_ERROR), status); - if (errmsg) { - FE_Alert(context, errmsg); - XP_FREE(errmsg); - } - } - - /* Since we weren't able to store it, ditch the files and the strings - describing them. */ - msg_delete_attached_files(attachments); -} - - -/* How many implementations of this are there now? 4? */ -static void -msg_mid_truncate_string (const char *input, char *output, int max_length) -{ - int L = XP_STRLEN(input); - if (L <= max_length) { - XP_MEMCPY(output, input, L+1); - } else { - int mid = (max_length - 3) / 2; - char *tmp = 0; - if (input == output) { - tmp = output; - output = (char *) XP_ALLOC(max_length + 1); - *tmp = 0; - if (!output) return; - } - XP_MEMCPY(output, input, mid); - XP_MEMCPY(output + mid, "...", 3); - XP_MEMCPY(output + mid + 3, input + L - mid, mid + 1); - - if (tmp) { - XP_MEMCPY(tmp, output, max_length + 1); - XP_FREE(output); - } - } -} - - -char * -MSG_CompositionPane::GetAttachmentString() -{ - /* #### bug 8688 */ - - MSG_AttachmentData *tmp; - int count; - int chars_per_attachment; - int default_field_width = 63; /* 72 - some space for the word - "Attachment" */ - - count = 0; - for (tmp = m_attachData; tmp && tmp->url ; tmp++) count++; - if (count <= 0) return 0; - - chars_per_attachment = (default_field_width - (count * 2)) / count; - if (chars_per_attachment < 15) chars_per_attachment = 15; - - FREEIF(m_attachmentString); - - m_attachmentString = - (char *) XP_ALLOC(count * (chars_per_attachment + 3) + 20); - if (!m_attachmentString) return 0; - *m_attachmentString = 0; - - for (tmp = m_attachData ; tmp && tmp->url ; tmp++) { - const char *url = tmp->real_name ? tmp->real_name : tmp->url; - const char *ptr = XP_STRCHR(url, ':'); - char *result = 0; - - if (!ptr) { - /* No colon? Must be a file name. */ - ptr = url; - goto DO_FILE; - } - - if (!XP_STRNCMP(url, "news:", 5) || - !XP_STRNCMP(url, "snews:", 6) || - !XP_STRNCMP(url, "IMAP:", 5) || - !XP_STRNCMP(url, "mailbox:", 8)) { - /* ###tw Unfortunately, I don't think this stuff quite ports - directly to the new world, so I'm gonna disable it for now... */ - - goto DONE; - } - - /* Ok, so it must be something vaguely file-name-like. - Look for a slash. - */ - DO_FILE: - { - char *ptr2 = XP_STRDUP(ptr); - if (!ptr2) goto DONE; - char* s = XP_STRCHR(ptr2, '?'); - if (s) *s = 0; - s = XP_STRCHR(ptr2, '#'); - if (s) *s = 0; - s = XP_STRRCHR(ptr2, '/'); - if(!s) { - XP_FREE(ptr2); - goto DONE; - } - s++; - if (!*s || !strcasecomp(s,"index.html") || - !strcasecomp(s,"index.htm")) { - /* This had a useless file name; take the last directory name. */ - char *s2 = s-1; - if (*s2 == '/') s2--; - while (s2 > ptr2 && *s2 != '/') s2--; - if (*s2 == ':' || *s2 == '/') s2++; - result = (char *) XP_ALLOC (s - s2 + 1); - XP_MEMCPY (result, s2, s - s2); - result[s - s2] = 0; - } else { - /* The file name is ok; use it. */ - result = XP_STRDUP (s); - } - NET_UnEscape (result); - XP_FREE(ptr2); - goto DONE; - } - - DONE: - if (tmp != m_attachData) { - XP_STRCAT(m_attachmentString, "; "); - } - - if (!result) { - if (!XP_STRNCMP(url, "news:", 5) || - !XP_STRNCMP(url, "snews:", 6) || - !XP_STRNCMP(url, "IMAP:", 5) || - !XP_STRNCMP(url, "mailbox:", 8)) { - result = XP_STRDUP("<message>"); - } else { - result = XP_STRDUP(url); - } - if (!result) break; - } - - msg_mid_truncate_string(result, - (m_attachmentString + - XP_STRLEN(m_attachmentString)), - chars_per_attachment); - XP_FREE(result); - } - - return m_attachmentString; -} - - -char* -MSG_CompositionPane::UpdateHeaderContents(MSG_HEADER_SET which_header, - const char* value) -{ - ABook* addressbook; - switch (which_header) { - case MSG_TO_HEADER_MASK: - case MSG_CC_HEADER_MASK: - case MSG_BCC_HEADER_MASK: - case MSG_REPLY_TO_HEADER_MASK: - addressbook = FE_GetAddressBook(this); - if (addressbook) { - return AB_ExpandHeaderString(addressbook, value, FALSE); - } - break; - } - return NULL; -} - -int -MSG_CompositionPane::SetCompHeader(MSG_HEADER_SET header, - const char *value) -{ - XP_ASSERT(header != MSG_ATTACHMENTS_HEADER_MASK); - ClearCompositionMessageID(); - m_fields->SetHeader(header, value); - return 0; -} - -const char* -MSG_CompositionPane::GetCompHeader(MSG_HEADER_SET header) -{ - if (header == MSG_ATTACHMENTS_HEADER_MASK) { - return GetAttachmentString(); - } else { - return m_fields ? m_fields->GetHeader(header) : (char *)NULL; - } -} - -int -MSG_CompositionPane::SetCompBoolHeader(MSG_BOOL_HEADER_SET header, - XP_Bool bValue) -{ - return m_fields->SetBoolHeader(header, bValue); -} - -XP_Bool -MSG_CompositionPane::GetCompBoolHeader(MSG_BOOL_HEADER_SET header) -{ - return m_fields ? m_fields->GetBoolHeader(header) : FALSE; -} - -const char* -MSG_CompositionPane::GetCompBody() -{ - return m_fields ? m_fields->GetBody() : (char *)NULL; -} - -int -MSG_CompositionPane::SetCompBody(const char* value) -{ - return m_fields->SetBody(value); -} - -const char* -MSG_CompositionPane::GetWindowTitle() -{ - const char *s; - - if (*m_fields->GetSubject()) { - s = m_fields->GetSubject(); - } else if (*m_fields->GetTo()) { - s = m_fields->GetTo(); - } else if (*m_fields->GetNewsgroups()) { - s = m_fields->GetNewsgroups(); - } else { - s = XP_GetString(MK_MSG_MSG_COMPOSITION); - } - return s; -} - - - -int -MSG_CompositionPane::SanityCheck(int skippast) -{ - const char* body = m_fields->GetBody(); - const char* sub = m_fields->GetSubject(); - - - if (skippast == MK_MSG_DOUBLE_INCLUDE) goto AFTER_DOUBLE_INCLUDE; - if (skippast == MK_MSG_EMPTY_MESSAGE) goto AFTER_EMPTY_MESSAGE; - if (skippast == MK_MSG_MISSING_SUBJECT) goto AFTER_MISSING_SUBJECT; - HG60283 - - // Check if they have quoted a document and not edited it, and also - // attached the same document. - if (m_quotedText && - XP_STRNCMP(body, m_quotedText, XP_STRLEN(m_quotedText)) == 0 && - m_attachData && - m_attachData[0].url && - m_defaultUrl && - !XP_STRCMP (m_attachData[0].url, m_defaultUrl)) { - return MK_MSG_DOUBLE_INCLUDE; - } - -AFTER_DOUBLE_INCLUDE: - // Check if this message has no attachments, and the body has not been - // edited. - if (XP_STRCMP(body, m_initfields->GetBody()) == 0 && - (!m_attachData || !m_attachData[0].url)) { - return MK_MSG_EMPTY_MESSAGE; - } - -AFTER_EMPTY_MESSAGE: - // Check if they neglected to type a subject. - if (sub) { - while (XP_IS_SPACE(*sub)) sub++; - } - if (!sub || !*sub) { - return MK_MSG_MISSING_SUBJECT; - } - -AFTER_MISSING_SUBJECT: -HG60207 - return 0; - -} - - -void -MSG_CompositionPane::DeliveryDoneCB_s(MWContext *context, void *fe_data, - int status, const char *error_message) -{ - ((MSG_CompositionPane*) fe_data)->DeliveryDoneCB(context, status, - error_message); -} - -void -MSG_CompositionPane::DeliveryDoneCB(MWContext* context, int status, - const char* error_message) -{ - XP_ASSERT(context == m_context); - - // *** We don't want to set m_status to status. The default value - // of m_status (-1) prevents the composition pane from closing down - // once we done with saving draft. The composition pane should remain up. - if ((m_deliver_mode != MSG_SaveAsDraft && m_deliver_mode != MSG_SaveAsTemplate) - || (m_deliver_mode == MSG_SaveAsDraft && m_closeAfterSave)) - m_status = status; - - XP_ASSERT(!m_attachmentInProgress); - if (m_deliveryInProgress) { - m_deliveryInProgress = FALSE; -#ifndef XP_UNIX /* Does not need this function call for UNIX. - This will prevent toolbar to be enabled after msg sent on - UNIX. */ - FE_UpdateCompToolbar (this); -#endif - } - - if (status < 0) { - if (error_message) { - FE_Alert(context, error_message); - } else if (status != MK_INTERRUPTED) { - char *errmsg; - - HG92755 - errmsg = PR_smprintf(XP_GetString(MK_COMMUNICATIONS_ERROR), - status); - if (errmsg) { - FE_Alert(context, errmsg); - XP_FREE(errmsg); - } - } - } else { - /* ### jht bug 45220 -- do following only when successfully deliver the message */ - /* time to delete message from draft/outbox */ - if (m_actionInfo) - { - MailDB *mailDB = NULL; - MSG_FolderInfoMail *mailFolderInfo = (m_actionInfo->m_folderInfo) ? m_actionInfo->m_folderInfo->GetMailFolderInfo() : (MSG_FolderInfoMail *)NULL; - - if ( mailFolderInfo && m_actionInfo->m_msgKeyArray.GetSize() > 0 ) - { - - MailDB::Open (mailFolderInfo->GetPathname(), FALSE, &mailDB); - if (mailDB) { - switch ( m_actionInfo->m_flags ) { - case MSG_FLAG_EXPUNGED: - if (m_deliver_mode != MSG_SaveAsDraft && - m_deliver_mode != MSG_SaveAsTemplate) { - // XP_ASSERT(m_actionInfo->m_msgKeyArray.GetSize() == 1); - if (mailFolderInfo->GetType() == FOLDER_IMAPMAIL) - DeleteIMAPOldDraftUID(m_actionInfo); - else - mailDB->DeleteMessage(m_actionInfo->m_msgKeyArray.GetAt(0)); - } - break; - case MSG_FLAG_FORWARDED: - { - uint i, size; - IDArray readIds; - MSG_IMAPFolderInfoMail *imapFolder = mailFolderInfo->GetIMAPFolderInfoMail(); - - size = m_actionInfo->m_msgKeyArray.GetSize(); - if (m_deliver_mode == MSG_SaveAsDraft || - m_deliver_mode == MSG_SaveAsTemplate) - size--; - - for (i=0; i < size; i++) { - mailDB->MarkForwarded(m_actionInfo->m_msgKeyArray.GetAt(0), TRUE); - if (mailFolderInfo) - { - readIds.Add(m_actionInfo->m_msgKeyArray.GetAt(0)); - } - - m_actionInfo->m_msgKeyArray.RemoveAt(0); - } - if (imapFolder && (imapFolder->GetType() - == FOLDER_IMAPMAIL)) - imapFolder->StoreImapFlags - (this, kImapMsgForwardedFlag, - TRUE, readIds); - if (m_deliver_mode == MSG_SaveAsDraft) { - m_actionInfo->m_flags = MSG_FLAG_EXPUNGED; - m_actionInfo->m_folderInfo = GetMaster()-> - FindMagicMailFolder(MSG_FOLDER_FLAG_DRAFTS, TRUE); - - } - else if (m_deliver_mode == MSG_SaveAsTemplate) - { - m_actionInfo->m_flags = 0; // zero it out - } - } - break; - case MSG_FLAG_REPLIED: - { - IDArray readIds; - - // XP_ASSERT(m_actionInfo->m_msgKeyArray.GetSize() == 1); - mailDB->MarkReplied(m_actionInfo->m_msgKeyArray.GetAt(0), TRUE); - - MSG_IMAPFolderInfoMail *imapFolder = mailFolderInfo->GetIMAPFolderInfoMail(); - readIds.Add(m_actionInfo->m_msgKeyArray.GetAt(0)); - if (imapFolder && (imapFolder->GetType() == FOLDER_IMAPMAIL)) - imapFolder->StoreImapFlags(this, kImapMsgAnsweredFlag, TRUE, readIds); - m_actionInfo->m_msgKeyArray.RemoveAt(0); - if (m_deliver_mode == MSG_SaveAsDraft) { - m_actionInfo->m_flags = MSG_FLAG_EXPUNGED; - m_actionInfo->m_folderInfo = GetMaster()-> - FindMagicMailFolder(MSG_FOLDER_FLAG_DRAFTS, TRUE); - - } - else if (m_deliver_mode == MSG_SaveAsTemplate) - { - m_actionInfo->m_flags = 0; // zero it out - } - } - break; - default: - // This is the case of edit message then save as draft/template - m_actionInfo->m_msgKeyArray.RemoveAt(0); - if (m_deliver_mode == MSG_SaveAsDraft) { - m_actionInfo->m_flags = MSG_FLAG_EXPUNGED; - m_actionInfo->m_folderInfo = GetMaster()-> - FindMagicMailFolder(MSG_FOLDER_FLAG_DRAFTS, TRUE); - - } - else if (m_deliver_mode == MSG_SaveAsTemplate) - { - m_actionInfo->m_flags = 0; // zero it out - } - break; - } - mailDB->Close(); - } - } - else if (m_actionInfo->m_folderInfo->GetType() == FOLDER_IMAPMAIL && - m_actionInfo->m_msgKeyArray.GetSize() > 0 && - m_deliver_mode != MSG_SaveAsDraft && - m_deliver_mode != MSG_SaveAsTemplate && - m_actionInfo->m_flags & MSG_FLAG_EXPUNGED) - { - DeleteIMAPOldDraftUID(m_actionInfo); - } - } - - // ### dmb This may not be right for news, but it shouldn't be harmful either - if (m_actionInfo && m_actionInfo->m_folderInfo) - m_actionInfo->m_folderInfo->SummaryChanged(); - - if (m_deliver_mode == MSG_DeliverNow) - { - // If we're delivering the mail right now, tell the FE - // the Sent folder has new counts - MSG_FolderInfo *folder = NULL; - const char *fccPath = m_fields->GetFcc(); - - if (fccPath && *fccPath) - folder = FindFolderOfType(MSG_FOLDER_FLAG_SENTMAIL); - - if (folder) - folder->SummaryChanged(); - } - else if (m_deliver_mode == MSG_QueueForLater) - { - // If we're delivering the mail into the Outbox/queue folder, - // tell the FE the Outbox folder has new counts - MSG_FolderInfo *folder = FindFolderOfType (MSG_FOLDER_FLAG_QUEUE); - if (folder) - folder->SummaryChanged(); - } - } -} - -void -MSG_CompositionPane::MailCompositionAllConnectionsComplete () -{ - /* This may be redundant, I'm not sure... */ - if (m_deliveryInProgress) { - m_deliveryInProgress = FALSE; - FE_UpdateCompToolbar(this); - } - if (m_attachmentInProgress) { - m_attachmentInProgress = FALSE; - FE_UpdateCompToolbar(this); - } - - if (m_status >= 0) { - delete this; - } -} - - -void -MSG_CompositionPane::CheckExpansion(MSG_HEADER_SET header) -{ - ABook* addressbook = FE_GetAddressBook(this); - char* newvalue; - if (addressbook) { - newvalue = AB_ExpandHeaderString(addressbook, m_fields->GetHeader(header), - TRUE); - if (newvalue) { - m_fields->SetHeader(header, newvalue); - XP_FREE(newvalue); - } - } -} - - -XP_Bool -MSG_CompositionPane::DeliveryInProgress () -{ - /* Disable the UI if delivery, attachment loading, or quoting is in - progress. */ - return m_deliveryInProgress || m_attachmentInProgress || (m_quoteUrl != 0); -} - -/* This function sets the markup flag to indicate that the message - body is HTML. Returns the previously set value. -*/ - -void -MSG_CompositionPane::SetHTMLMarkup(XP_Bool flag) -{ - m_markup = flag; -} - -XP_Bool -MSG_CompositionPane::GetHTMLMarkup(void) -{ - return m_markup; -} - -int -MSG_CompositionPane::DoneComposeMessage( MSG_Deliver_Mode deliver_mode ) -{ - int attachment_count = 0; - XP_Bool digest_p = FALSE; - int status = 0; - - if (m_pendingAttachmentsCount) { - m_deliveryInProgress = TRUE; // so that DoneComposeMessage is called again - status = DownloadAttachments(); - return status; - } - - HG92762 - const char *groups = m_fields->GetHeader(MSG_NEWSGROUPS_HEADER_MASK); - if (groups && *groups && !m_host) - m_host = InferNewsHost (groups); - - if (m_markup && (deliver_mode != MSG_SaveAsDraft && - deliver_mode != MSG_SaveAsTemplate)) { - MSG_HTMLComposeAction action = DetermineHTMLAction(); - if (action == MSG_HTMLAskUser) - { - status = -1; -#ifndef XP_UNIX // Unix will have to make this dialog a blocking dialog for this logic to work - if (m_callbacks.CreateAskHTMLDialog) { - status = (*m_callbacks.CreateAskHTMLDialog)(this, m_callbackclosure); - // if status == 0, then user wants to Send, so we continue - // if status < 0, do the HTML dialogs - // if status > 0, cancel - if (status == 0) { - action = DetermineHTMLAction(); // reget the new action - XP_ASSERT(action != MSG_HTMLAskUser); - if (action == MSG_HTMLAskUser) { - // Boy, the FE is busted. Use our own. - status = -1; - } - } - if (status > 0) return 0; // we have to return 0, even in the cancel case so that an error won't get displayed - } -#endif - // if status still negative, do the HTML thing - if (status < 0) { - static XPDialogInfo dialogInfo = { - 0, // I'll provide all my own buttons, thanks. -#ifdef XP_OS2 - (PRBool (_Optlink*) (XPDialogState*,char**,int,unsigned int)) -#endif - MSG_CompositionPane::AskDialogDone_s, - 500, - 300 - }; - XPDialogStrings* strings = - XP_GetDialogStrings(MK_MSG_ASK_HTML_MAIL); - if (!strings) return MK_OUT_OF_MEMORY; - XP_MakeHTMLDialog(GetContext(), &dialogInfo, - MK_MSG_ASK_HTML_MAIL_TITLE, strings, this, PR_FALSE); - return 0; - } - - } - - switch (action) { - case MSG_HTMLUseMultipartAlternative: - m_fields->SetUseMultipartAlternative(TRUE); - break; - case MSG_HTMLConvertToPlaintext: - m_fields->SetForcePlainText(TRUE); - break; - case MSG_HTMLSendAsHTML: - break; - default: - XP_ASSERT(0); - return -1; - } - } - - CheckExpansion(MSG_TO_HEADER_MASK); - CheckExpansion(MSG_CC_HEADER_MASK); - CheckExpansion(MSG_BCC_HEADER_MASK); - - HG42440 - - const char* body = m_fields->GetBody(); - uint32 body_length = XP_STRLEN(body); - - - for (attachment_count = 0; - m_attachData && m_attachData[attachment_count].url; - attachment_count++) - ; - - if (m_attachData && m_attachData[0].url && m_attachData[1].url ) { - MSG_AttachmentData* s; - digest_p = TRUE; - for (s = m_attachData ; s->url ; s++) { - /* When there are attachments, start out assuming it is a digest, - and then decide that it is not if any of the attached URLs are - not mail or news messages. */ - if (XP_STRNCMP(s->url, "news:", 5) != 0 && - XP_STRNCMP(s->url, "snews:", 6) != 0 && - XP_STRNCMP(s->url, "IMAP:", 5) != 0 && - XP_STRNCMP(s->url, "mailbox:", 8) != 0) { - digest_p = FALSE; - } - } - } - - XP_ASSERT(!m_attachmentInProgress); - XP_ASSERT(!m_deliveryInProgress); - m_deliveryInProgress = TRUE; - FE_UpdateCompToolbar(this); - - if (m_messageId == NULL) { - m_messageId = msg_generate_message_id(); - m_duplicatePost = FALSE; - } else { - m_duplicatePost = TRUE; - } - - m_fields->SetMessageId(m_messageId); - - MSG_MimeRelatedSaver *fs = NULL; - -#ifdef MSG_SEND_MULTIPART_RELATED - if (m_markup) - { - char *pRootPartName = NULL; // set to NULL so that we're given a temp filename - fs = new MSG_MimeRelatedSaver(this, m_context, m_fields, - digest_p, deliver_mode, - body, body_length, - m_attachedFiles, - DeliveryDoneCB_s, - &pRootPartName); - if (fs) - { - EDT_SaveFileTo(m_context, - ((deliver_mode == MSG_SaveAsDraft && !m_closeAfterSave) || - deliver_mode == MSG_SaveAsTemplate) ? - ED_FINISHED_SAVE_DRAFT : ED_FINISHED_MAIL_SEND, - pRootPartName, fs, TRUE, TRUE); - // Note: EDT_SaveFileTo will delete fs, even if it returns an error. So - // it is incorrect to delete it here. Also, we ignore the result, because - // it calls FE_Alert itself. - } - FREEIF(pRootPartName); - } - else - -#endif // MSG_SEND_MULTIPART_RELATED - - { - msg_StartMessageDeliveryWithAttachments(this, this, - m_fields, - digest_p, FALSE, deliver_mode, - (m_markup ? TEXT_HTML : - TEXT_PLAIN), - body, body_length, - m_attachedFiles, - NULL, -#ifdef XP_OS2 - (void (_Optlink*) (MWContext*,void*,int,const char*)) -#endif - DeliveryDoneCB_s); - } - return 0; // Always success, because Errors were reported and handled by EDT_SaveFileTo. -} - -int -MSG_CompositionPane::SendMessageNow() -{ - PREF_SetBoolPref("network.online", TRUE); // make sure we're online. - // remember if we're queued so we know which folder - m_deliver_mode = MSG_DeliverNow; - - HG73943 - if (m_fields->GetAttachVCard()) - CreateVcardAttachment(); - // counts we need to update. - return DoneComposeMessage(MSG_DeliverNow); -} - -int -MSG_CompositionPane::QueueMessageForLater() -{ - // remember if we're queued so we know which folder - m_deliver_mode = MSG_QueueForLater; - if (m_fields->GetAttachVCard()) - CreateVcardAttachment(); - // counts we need to update. - return DoneComposeMessage(MSG_QueueForLater); -} - -int -MSG_CompositionPane::SaveMessageAsDraft() -{ - - m_deliver_mode = MSG_SaveAsDraft; // remember if we're saved as draft so we know which - // folder counts we need to update. - return DoneComposeMessage(MSG_SaveAsDraft); -} - -int -MSG_CompositionPane::SaveMessageAsTemplate() -{ - m_deliver_mode = MSG_SaveAsTemplate; - -#ifdef SUPPORT_X_TEMPLATE_NAME - char *defaultName = NULL; - - defaultName = FE_Prompt (GetContext(), - XP_GetString(MK_MSG_ENTER_NAME_FOR_TEMPLATE), - m_fields->GetSubject()); - if (defaultName && *defaultName) - { - m_fields->SetTemplateName(defaultName); - XP_FREEIF(defaultName); - } -#endif /* SUPPORT_X_TEMPLATE_NAME */ - - return DoneComposeMessage(MSG_SaveAsTemplate); -} - -static int -StuffParams(char** params, const char* name, int32 value) -{ - char* escaped = NET_EscapeHTML(name); - if (!escaped) return MK_OUT_OF_MEMORY; - char* tmp = PR_smprintf("<OPTION value=%ld>%s\n", (long) value, escaped); - XP_FREE(escaped); - if (!tmp) return MK_OUT_OF_MEMORY; - NET_SACat(params, tmp); - XP_FREE(tmp); - return 0; -} - -//void *pWnd used to pass in pointer to parent window of Recipients dialog -int -MSG_CompositionPane::PutUpRecipientsDialog(void *pWnd ) -{ - int status; - status = MungeThroughRecipients(NULL, NULL); - if (status < 0) return status; - MSG_RecipientList* ok = m_htmlrecip->GetList(TRUE); - MSG_RecipientList* notok = m_htmlrecip->GetList(FALSE); - if (m_callbacks.CreateRecipientsDialog) { - status = (*m_callbacks.CreateRecipientsDialog)(this, m_callbackclosure, - notok, ok, pWnd); - if (status >= 0) return status; - } - static XPDialogInfo dialogInfo = { - 0, // I'll provide all my own buttons, thanks. -#ifdef XP_OS2 - (PRBool (_Optlink*) (XPDialogState*,char**,int,unsigned int)) -#endif - MSG_CompositionPane::RecipientDialogDone_s, - 600, -#ifdef XP_UNIX - 375 -#else - 300 -#endif - }; - XPDialogStrings* strings = - XP_GetDialogStrings(MK_MSG_HTML_RECIPIENTS); - if (!strings) return MK_OUT_OF_MEMORY; - - - XP_CopyDialogString(strings, 0, "\n\ -function Scour(src) {\n\ - for (i=src.options.length-1 ; i>=0 ; i--) {\n\ - if (parseInt(src.options[i].value) >= 0) {\n\ - return;\n\ - }\n\ - src.options[i] = null;\n\ - }\n\ -}\n\ -Scour(document.theform.nohtml);\n\ -Scour(document.theform.html);\n\ -function MoveItems(src, dest) {\n\ - var i, j, k, v, selectindex;\n\ - selectindex = -1;\n\ - for (i=src.options.length-1 ; i>=0 ; i--) {\n\ - if (src.options[i].selected) {\n\ - src.options[i].selected = false;\n\ - v = parseInt(src.options[i].value);\n\ - selectindex = i;\n\ - for (j=dest.options.length-1 ; j>=0 ; j--) {\n\ - if (parseInt(dest.options[j].value) < v) {\n\ - break;\n\ - }\n\ - dest.options[j+1] = new Option(dest.options[j].text,\n\ - dest.options[j].value);\n\ - }\n\ - j++;\n\ - dest.options[j] = new Option(src.options[i].text,\n\ - src.options[i].value);\n\ - for (k=i ; k<src.options.length - 1 ; k++) {\n\ - src.options[k] = new Option(src.options[k+1].text,\n\ - src.options[k+1].value);\n\ - }\n\ - src.options[k] = null;\n\ - }\n\ - }\n\ - if (selectindex >= src.options.length) {\n\ - selectindex = src.options.length - 1;\n\ - }\n\ - if (selectindex >= 0) {\n\ - src.options[selectindex].selected = true;\n\ - }\n\ -}\n\ -\n\ -function DoAdd() {\n\ - MoveItems(document.theform.nohtml, document.theform.html);\n\ -}\n\ -\n\ -function DoRemove() {\n\ - MoveItems(document.theform.html, document.theform.nohtml);\n\ -}\n\ -\n\ -function SelectAllIn(obj, value) {\n\ - for (i=0 ; i<obj.length ; i++) {\n\ - obj[i].selected = value;\n\ - }\n\ -}\n\ -\n\ -function SelectAll() {\n\ - SelectAllIn(document.theform.html, true);\n\ - SelectAllIn(document.theform.nohtml, true);\n\ -}\n\ -function Doit(value) {\n\ - document.theform.cmd.value = value;\n\ - document.theform.submit();\n\ -}\n\ -"); - - for (int w=1 ; w<=2 ; w++) { - MSG_RecipientList* list; - char* params = NULL; - for (list = (w == 1) ? notok : ok; list->value >= 0 ; list++) { - status = StuffParams(&params, list->name, list->value); - if (status < 0) return status; - } - for (list = (w == 1) ? ok : notok; list->value >= 0 ; list++) { - status = StuffParams(&params, list->name, -1); - if (status < 0) return status; - } - XP_CopyDialogString(strings, w, params ? params : ""); - FREEIF(params); - } - - HG72999 - Chrome chrome; - XP_MEMSET(&chrome, 0, sizeof(chrome)); - chrome.type = MWContextDialog; - chrome.w_hint = dialogInfo.width; - chrome.h_hint = dialogInfo.height; - chrome.is_modal = TRUE; - chrome.show_scrollbar = TRUE; - - XP_MakeHTMLDialogWithChrome(GetContext(), &dialogInfo, - MK_MSG_HTML_RECIPIENTS_TITLE, strings, - &chrome, this, PR_FALSE); - return 0; -} - - -XP_Bool -MSG_CompositionPane::IsDuplicatePost() { - return m_duplicatePost; -} - -void -MSG_CompositionPane::ClearCompositionMessageID() -{ - FREEIF(m_messageId); -} - -const char* -MSG_CompositionPane::GetCompositionMessageID() -{ - return m_messageId; -} - -HG20026 - - -int -MSG_CompositionPane::SetPreloadedAttachments ( MWContext *context, - struct MSG_AttachmentData *attachmentData, - struct MSG_AttachedFile *attachments, - int attachments_count ) -{ - XP_ASSERT ( context == m_context ); - XP_ASSERT ( attachments && attachmentData ); - if ( !attachments || !attachmentData ) return -1; - - int status = 0; - const char *error_message = NULL; - - XP_ASSERT ( m_attachData == NULL ); - - m_attachData = (MSG_AttachmentData *) XP_ALLOC ( (attachments_count+1) * - sizeof (MSG_AttachmentData) ); - if ( !m_attachData ) { - FE_Alert ( m_context, XP_GetString ( MK_OUT_OF_MEMORY ) ); - return MK_OUT_OF_MEMORY; - } - - XP_MEMSET (m_attachData, 0, (attachments_count +1) * sizeof (MSG_AttachmentData)); - - XP_MEMCPY ( m_attachData, attachmentData, - sizeof (MSG_AttachmentData) * attachments_count ); - - m_pendingAttachmentsCount = attachments_count; - m_attachmentInProgress = TRUE; - - DownloadAttachmentsDone ( context, status, error_message, attachments ); - - return status; -} - -void -MSG_CompositionPane::SetIMAPMessageUID ( MessageKey key ) -{ - XP_ASSERT(key != MSG_MESSAGEKEYNONE); - if (key == MSG_MESSAGEKEYNONE) - return; - if (!m_actionInfo) - { - int status = 0; - char * onlineDraftsName = - msg_MagicFolderName(GetPrefs(), MSG_FOLDER_FLAG_DRAFTS, &status); - - if (!onlineDraftsName || !*onlineDraftsName) - StrAllocCopy(onlineDraftsName, DRAFTS_FOLDER_NAME); - - m_actionInfo = new MSG_PostDeliveryActionInfo - (GetMaster()->GetFolderInfo(onlineDraftsName, FALSE)); - - XP_ASSERT (m_deliver_mode == MSG_SaveAsDraft); - m_actionInfo->m_flags = MSG_FLAG_EXPUNGED; - XP_FREEIF(onlineDraftsName); - } - XP_ASSERT(m_actionInfo); - if (m_actionInfo) - { - m_actionInfo->m_msgKeyArray.Add(key); - } -} - -static MSG_HEADER_SET standard_header_set[] = { - MSG_TO_HEADER_MASK, - MSG_REPLY_TO_HEADER_MASK, - MSG_CC_HEADER_MASK, - MSG_BCC_HEADER_MASK, - MSG_NEWSGROUPS_HEADER_MASK, - MSG_FOLLOWUP_TO_HEADER_MASK - }; - -#define TOTAL_HEADERS (sizeof(standard_header_set)/sizeof(MSG_HEADER_SET)) - -int -MSG_CompositionPane::RetrieveStandardHeaders(MSG_HeaderEntry ** return_list) -{ - int i, total; - const char * field; - MSG_HeaderEntry * list = NULL; - - XP_ASSERT(return_list); - - *return_list = NULL; - - for (i=0, total=0; i<TOTAL_HEADERS; i++) { - MSG_HeaderEntry * entry; - int count; - field = GetCompHeader(standard_header_set[i]); - - count = MSG_ExplodeHeaderField(standard_header_set[i],field,&entry); - if (entry) { - list = (MSG_HeaderEntry*)XP_REALLOC(list,(total+count)*sizeof(MSG_HeaderEntry)); - if (list == NULL) { - XP_FREE(entry); - return(-1); - } - memcpy(&list[total],entry,count*sizeof(MSG_HeaderEntry)); - XP_FREE(entry); - total += count; - } - } - - *return_list = list; - return(total); -} - -void -MSG_CompositionPane::ClearComposeHeaders() -{ - int i; - for (i = 0; i<TOTAL_HEADERS; i++) - SetCompHeader(standard_header_set[i],NULL); -} - -void -MSG_CompositionPane::SetHeaderEntries(MSG_HeaderEntry * in_list, int count) -{ - if ((count != -1)&&(in_list!=NULL)) { - int i; - for (i=0; i<count; i++) { - XP_ASSERT(in_list[i].header_value); - SetCompHeader(in_list[i].header_type,in_list[i].header_value); - XP_FREE(in_list[i].header_value); - } - XP_FREE(in_list); - } -} - - - -PRBool -MSG_CompositionPane::AskDialogDone_s(XPDialogState *state, char **argv, - int argc, unsigned int button) -{ - return ((MSG_CompositionPane*)state->arg)->AskDialogDone(state, argv, - argc, button); -} - - -PRBool -MSG_CompositionPane::AskDialogDone(XPDialogState * /*state*/, char **argv, - int argc, unsigned int /*button*/) -{ - switch (XP_ATOI(XP_FindValueInArgs("cmd", argv, argc))) { - case 0: - switch (XP_ATOI(XP_FindValueInArgs("mail", argv, argc))) { - case 1: - SetHTMLAction(MSG_HTMLUseMultipartAlternative); - break; - case 2: - SetHTMLAction(MSG_HTMLConvertToPlaintext); - break; - case 3: - SetHTMLAction(MSG_HTMLSendAsHTML); - break; - HG98276 - default: - XP_ASSERT(0); - } - DoneComposeMessage(m_deliver_mode); - return PR_FALSE; - case 1: - return PR_FALSE; - case 2: - PutUpRecipientsDialog(); - return PR_TRUE; - case 3: - XP_NetHelp(GetContext(), HELP_HTML_MAIL_QUESTION); - return PR_TRUE; - default: - XP_ASSERT(0); - break; - } - return PR_FALSE; -} - -#ifndef XP_OS2 -static -#else -extern "OPTLINK" -#endif -int DomainCompare(const void* e1, const void* e2) -{ - return XP_STRCMP(*((char**) e1), *((char**) e2)); -} - -int -MSG_CompositionPane::ResultsRecipients(XP_Bool cancelled, int32* nohtml, - int32* htmlok) -{ - int status = 0; - if (cancelled) return 0; - XP_ASSERT(m_htmlrecip); - if (!m_htmlrecip) return -1; - status = m_htmlrecip->SetNewList(nohtml, htmlok); - if (status < 0) return status; - - char** list = NULL; - char** tmp; - char* ptr; - char* endptr; - char* domainlist = NULL; - char** domainstrings = NULL; - XP_Bool changed; - int num = 0; - int max = 0; - int length; - int i, j; - - - ABook* addressbook = FE_GetAddressBook(this); - DIR_Server* pab = NULL; - DIR_GetPersonalAddressBook(FE_GetDirServers(), &pab); - - for (int w=0 ; w<2 ; w++) { - XP_Bool html = (w == 1); - if (pab && addressbook) { - list = m_htmlrecip->GetChangedList(Address, html); - for (tmp = list ; tmp && *tmp ; tmp++) { - PersonEntry person; - person.Initialize(); - char* names = NULL; - char* addresses = NULL; - int num = MSG_ParseRFC822Addresses(*tmp, &names, &addresses); - XP_ASSERT(num == 1); - if (num == 1) { - person.pEmailAddress = addresses; - if (names && *names) { - person.pGivenName = names; - } - person.HTMLmail = html; - AB_SetHTMLForPerson(pab, addressbook, &person); - } - FREEIF(addresses); - FREEIF(names); - } - m_htmlrecip->FreeChangedList(list); - list = NULL; - } - if (m_host) { - list = m_htmlrecip->GetChangedList(Newsgroup, html); - for (tmp = list ; tmp && *tmp ; tmp++) { - m_host->SetIsHTMLOKGroup(*tmp, html); - } - m_htmlrecip->FreeChangedList(list); - list = m_htmlrecip->GetChangedList(GroupHierarchy, html); - for (tmp = list ; tmp && *tmp ; tmp++) { - m_host->SetIsHTMLOKTree(*tmp, html); - } - m_htmlrecip->FreeChangedList(list); - list = NULL; - } - } - if (m_host) m_host->SaveHostInfo(); - - PREF_CopyCharPref("mail.htmldomains", &domainlist); - changed = FALSE; - - length = domainlist ? XP_STRLEN(domainlist) : 0; - for (ptr = domainlist ; ptr && *ptr ; ptr = XP_STRCHR(ptr + 1, ',')) { - max++; - } - max += m_htmlrecip->GetNum() + 1; // We be paranoid. - domainstrings = new char* [max]; - if (!domainstrings) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - for (ptr = domainlist ; ptr && *ptr ; ptr = endptr) { - endptr = XP_STRCHR(ptr, ','); - if (endptr) *endptr++ = '\0'; - domainstrings[num++] = ptr; - } - list = m_htmlrecip->GetChangedList(Domain, FALSE); - for (tmp = list ; tmp && *tmp ; tmp++) { - for (i=0 ; i<num ; i++) { - while (i<num && XP_STRCMP(domainstrings[i], *tmp) == 0) { - num--; - domainstrings[i] = domainstrings[num]; - changed = TRUE; - } - } - } - m_htmlrecip->FreeChangedList(list); - list = m_htmlrecip->GetChangedList(Domain, TRUE); - for (tmp = list ; tmp && *tmp ; tmp++) { - domainstrings[num++] = *tmp; - changed = TRUE; - length += XP_STRLEN(*tmp) + 1; - } - if (changed) { - // Now nuke dups. - XP_QSORT(domainstrings, num, sizeof(char*), DomainCompare); - for (i=0 ; i < num-1 ; i++) { - while (i < num-1 && - XP_STRCMP(domainstrings[i], domainstrings[i+1]) == 0) { - num--; - for (j=i+1 ; j<num ; j++) { - domainstrings[j] = domainstrings[j+1]; - } - } - } - ptr = new char [length + 1]; - if (!ptr) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - *ptr = '\0'; - for (i=0 ; i<num ; i++) { - XP_STRCAT(ptr, domainstrings[i]); - if (i < num-1) XP_STRCAT(ptr, ","); - } - PREF_SetCharPref("mail.htmldomains", ptr); - PREF_SavePrefFile(); - delete [] ptr; - ptr = NULL; - } - - FAIL: - m_htmlrecip->FreeChangedList(list); - FREEIF(domainlist); - delete [] domainstrings; - return status; -} - - - - -PRBool -MSG_CompositionPane::RecipientDialogDone_s(XPDialogState *state, char **argv, - int argc, unsigned int button) -{ - return - ((MSG_CompositionPane*)state->arg)->RecipientDialogDone(state, argv, - argc, button); -} - - -static void -Slurp(int32* list, const char* name, char** argv, int argc) -{ - for (; argc > 0 ; argc -= 2 , argv += 2) { - if (XP_STRCMP(name, argv[0]) == 0) { - *list++ = XP_ATOI(argv[1]); - } - } - *list = -1; -} - -PRBool -MSG_CompositionPane::RecipientDialogDone(XPDialogState * /*state*/, - char **argv, - int argc, unsigned int /*button*/) -{ - HG73622 - switch (XP_ATOI(XP_FindValueInArgs("cmd", argv, argc))) { - case 0: { - XP_ASSERT(argc > 0); - if (argc <= 0) return PR_FALSE; - int32* nohtml = new int32 [argc]; - if (!nohtml) return PR_FALSE; - int32* htmlok = new int32 [argc]; - if (!htmlok) { - delete [] nohtml; - return PR_FALSE; - } - Slurp(nohtml, "nohtml", argv, argc); - Slurp(htmlok, "html", argv, argc); - ResultsRecipients(FALSE, nohtml, htmlok); - delete [] nohtml; - delete [] htmlok; - return PR_FALSE; - } - case 1: - ResultsRecipients(TRUE, NULL, NULL); - return PR_FALSE; - case 2: - XP_NetHelp(GetContext(), HELP_HTML_MAIL_QUESTION_RECIPIENT); - return PR_TRUE; - default: - XP_ASSERT(0); - break; - } - return PR_FALSE; -} - - -XP_Bool -MSG_CompositionPane::HasNoMarkup() -{ - - // we want a link with the same text and link to pass - // <A HREF="http://warp/client/dogbert">http://warp/client/dogbert</A> - - XP_ASSERT(m_markup); - if (!m_markup) return TRUE; - const char* body = m_fields->GetBody(); - while (body && *body) { - body = XP_STRCHR(body, '<'); - if (!body) break; - char* endptr = XP_STRCHR(body, '>'); - XP_ASSERT(endptr); - if (!endptr) break; - char c = *++endptr; - *endptr = '\0'; - XP_Bool recognized = FALSE; - char* newEnd = endptr; - - if (XP_STRNCASECMP(body, "<A HREF=", 8) == 0) { - char* pLinkStart = XP_STRCHR(body, '"'); // find the open quote - if (pLinkStart) { - ++pLinkStart; // past the open quote - char* pLinkEnd = XP_STRCHR(pLinkStart, '"');// find the close quote - if (pLinkEnd) { - char c2 = *pLinkEnd; // save this char - *pLinkEnd = '\0'; // terminate the link - - // now pLink points to the URL - // find the text to see if it's the same as the link - char* pTextStart = endptr; - *endptr = c; // restore this char early because it's the lead char of our string - char* pTextEnd = XP_STRCHR(pTextStart, '<'); - if (pTextEnd) { - char c3 = *pTextEnd; - *pTextEnd = '\0'; // terminate the text - recognized = (XP_STRCMP(pLinkStart, pTextStart) == 0); - *pTextEnd = c3; // restore this char - newEnd = pTextEnd + 1; // skip past the opening of the </A> - } - *pLinkEnd = c2; // restore this char - } - } - } else { - recognized = (XP_STRCASECMP(body, "<P>") == 0 || - XP_STRCASECMP(body, "</P>") == 0 || - XP_STRCASECMP(body, "<BR>") == 0 || - XP_STRCASECMP(body, "<DT>") == 0 || - XP_STRCASECMP(body, "</DT>") == 0 || - XP_STRCASECMP(body, "<HTML>") == 0 || - XP_STRCASECMP(body, "</HTML>") == 0 || - XP_STRNCASECMP(body, "<BODY", 5) == 0 || - XP_STRCASECMP(body, "</BODY>") == 0 || - XP_STRCASECMP(body, - "<BLOCKQUOTE TYPE=CITE>") == 0 || - XP_STRCASECMP(body, "</BLOCKQUOTE>") == 0); - } - - *endptr = c; - body = newEnd; - if (!recognized) return FALSE; - } - return TRUE; -} - -int -MSG_CompositionPane::MungeThroughRecipients(XP_Bool* someNonHTML, - XP_Bool* groupNonHTML) -{ - XP_Bool foo; - if (!someNonHTML) someNonHTML = &foo; - if (!groupNonHTML) groupNonHTML = &foo; - *someNonHTML = FALSE; - *groupNonHTML = FALSE; - int status = 0; - char* names = NULL; - char* addresses = NULL; - const char* groups; - char* name = NULL; - char* end; - XP_Bool match = FALSE; - m_host = NULL; // Pure paranoia, in case we some day actually - // have a UI that lets people change this. - - ABook* addressbook = FE_GetAddressBook(this); - DIR_Server* pab = NULL; - static int32 masks[] = { - MSG_TO_HEADER_MASK, - MSG_CC_HEADER_MASK, - MSG_BCC_HEADER_MASK - }; - char* domainlist = NULL; - - HG02726 - delete m_htmlrecip; - m_htmlrecip = new MSG_HTMLRecipients(); - if (!m_htmlrecip) return MK_OUT_OF_MEMORY; - - for (int i=0 ; i < sizeof(masks) / sizeof(masks[0]) ; i++) { - const char* orig = m_fields->GetHeader(masks[i]); - if (!orig || !*orig) continue; - char* value = NULL; - if (addressbook) { - value = AB_ExpandHeaderString(addressbook, orig, TRUE); - } - if (!value) { - value = XP_STRDUP(orig); - if (!value) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - int num = MSG_ParseRFC822Addresses(value, &names, &addresses); - XP_FREE(value); - value = NULL; - char* addr = NULL; - char* name = NULL; - for (int j=0 ; j<num ; j++) { - if (addr) { - addr = addr + XP_STRLEN(addr) + 1; - name = name + XP_STRLEN(name) + 1; - } else { - addr = addresses; - name = names; - } - if (!addr || !*addr) continue; - - // Check for a address book entry for this person. - ABID entryID = MSG_MESSAGEIDNONE; - if (!pab) { - DIR_GetPersonalAddressBook (FE_GetDirServers(), &pab); - } - if (pab && addressbook) { - PersonEntry person; - person.Initialize(); - person.pEmailAddress = addr; - if (name && *name) person.pGivenName = name; - AB_GetEntryIDForPerson(pab, addressbook, &entryID, &person); - if (entryID == MSG_MESSAGEIDNONE && name && *name) { - // See if we can find an entry under any name. - person.pGivenName = NULL; - AB_GetEntryIDForPerson(pab, addressbook, &entryID, - &person); - } - } - char* at = XP_STRCHR(addr, '@'); - match = FALSE; - if (entryID != MSG_MESSAGEIDNONE) { - AB_GetHTMLMail(pab, addressbook, entryID, &match); - } - - char* tmp = MSG_MakeFullAddress(name, addr); - status = m_htmlrecip->AddOne(tmp, addr, Address, match); - if (status < 0) goto FAIL; - XP_FREE(tmp); - tmp = NULL; - - if (!at) { - // ###tw We got to decide what to do in these cases. But - // for now, I'm just gonna ignore them. Which is probably - // exactly the wrong thing. Fortunately, these cases are - // now very rare, as we have code that inserts a default - // domain. - continue; - } - if (!domainlist) { - PREF_CopyCharPref("mail.htmldomains", &domainlist); - } - char* domain = at + 1; - for (;;) { - char* dot = XP_STRCHR(domain, '.'); - if (!dot) break; - int32 domainlength = XP_STRLEN(domain); - char* ptr; - char* endptr = NULL; - XP_Bool found = FALSE; - for (ptr = domainlist ; ptr && *ptr ; ptr = endptr) { - endptr = XP_STRCHR(ptr, ','); - int length; - if (endptr) { - length = endptr - ptr; - endptr++; - } else { - length = XP_STRLEN(ptr); - } - if (length == domainlength) { - if (XP_STRNCASECMP(domain, ptr, length) == 0) { - found = TRUE; - match = TRUE; - break; - } - } - } - char* tmp = PR_smprintf("%s@%s", - XP_GetString(MK_MSG_EVERYONE), - domain); - if (!tmp) return MK_OUT_OF_MEMORY; - status = m_htmlrecip->AddOne(domain, tmp, Domain, found); - XP_FREE(tmp); - if (status < 0) goto FAIL; - domain = dot + 1; - } - if (!match) *someNonHTML = TRUE; - } - } - - groups = m_fields->GetHeader(MSG_NEWSGROUPS_HEADER_MASK); - if (groups && *groups && !m_host) - { - m_host = InferNewsHost (groups); - if (!m_host) - goto FAIL; - } - - end = NULL; - for ( ; groups && *groups ; groups = end) { - end = XP_STRCHR(groups, ','); - if (end) *end = '\0'; - name = XP_STRDUP(groups); - if (end) *end++ = ','; - if (!name) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - char* group = XP_StripLine(name); - match = m_host->IsHTMLOKGroup(group); - status = m_htmlrecip->AddOne(group, group, Newsgroup, match); - if (status < 0) goto FAIL; - char* tmp = XP_STRDUP(group); - if (!tmp) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - HG02977 - for (;;) { - XP_Bool found = m_host->IsHTMLOKTree(tmp); - char* desc = PR_smprintf("%s.*", tmp); - if (!desc) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - status = m_htmlrecip->AddOne(tmp, desc, GroupHierarchy, found); - XP_FREE(desc); - if (status < 0) { - XP_FREE(tmp); - tmp = NULL; - goto FAIL; - } - if (found) match = TRUE; - char* p = XP_STRRCHR(tmp, '.'); - if (p) *p = '\0'; - else break; - } - XP_FREE(tmp); - tmp = NULL; - if (!match) { - *someNonHTML = TRUE; - *groupNonHTML = TRUE; - } - } - - FAIL: - FREEIF(names); - FREEIF(domainlist); - FREEIF(addresses); - FREEIF(name); - return status; -} - - - -MSG_HTMLComposeAction -MSG_CompositionPane::DetermineHTMLAction() -{ - XP_Bool someNonHTML, groupNonHTML; - int status; - - MSG_HTMLComposeAction result = GetHTMLAction(); - - - if (result == MSG_HTMLAskUser) { - // Well, before we ask, see if we can figure out what to do for - // ourselves. - - status = MungeThroughRecipients(&someNonHTML, &groupNonHTML); - if (status < 0) return MSG_HTMLAskUser; // ### - if (!someNonHTML) return MSG_HTMLSendAsHTML; - if (HasNoMarkup()) { - // No point in sending this message as HTML; send it plain. - return MSG_HTMLConvertToPlaintext; - } - // See if a preference has been set to tell us what to do. Note that - // we do not honor that preference for newsgroups, only for e-mail - // addresses. - if (!groupNonHTML) { - int32 value; - if (PREF_GetIntPref("mail.default_html_action", &value) >= 0) { - switch (value) { - case 1: // Force plaintext. - return MSG_HTMLConvertToPlaintext; - case 2: // Force HTML. - return MSG_HTMLSendAsHTML; - case 3: // Force multipart/alternative. - return MSG_HTMLUseMultipartAlternative; - } - } - } - } - return result; -} - - -MSG_NewsHost *MSG_CompositionPane::InferNewsHost (const char *group) -{ - MSG_NewsHost *retHost = NULL; - - // No news host was specified. Use our bag of tricks to try to find one - char* host_and_port = NULL; - XP_Bool xxx_p = FALSE; - - // Trick #1: Do we have a URL for the host in the header fields? This can happen - // if we're posting, or if the user has typed a news URL into the newsgroups field - const char* posturl = m_fields->GetNewspostUrl(); - if (posturl && *posturl) - { - host_and_port = NET_ParseURL(posturl, GET_HOST_PART); - HG93663 - if (host_and_port && *host_and_port) - retHost = GetMaster()->FindHost(host_and_port, xxx_p, -1); - } - - if (!retHost) - { - msg_HostTable *hostTable = GetMaster()->GetHostTable(); - if (!hostTable) - return retHost; - // Trick #2: Look through all the hosts and their subscribed groups for a *unique* match - if (!retHost) - { - retHost = hostTable->InferHostFromGroups (group); - if (retHost) - { - const char *base = retHost->GetURLBase(); - if (base) - m_fields->SetHeader (MSG_NEWSPOSTURL_HEADER_MASK, XP_STRDUP(base)); - } - - // Trick #3: This group isn't found among our subscribed groups, or there's more - // than one group with the same name, so just use the default host. - if (!retHost) - retHost = hostTable->GetDefaultHost(TRUE); - } - } - - FREEIF(host_and_port); - return retHost; -} - - - diff --git a/mozilla/lib/libmsg/msgcpane.h b/mozilla/lib/libmsg/msgcpane.h deleted file mode 100644 index 588e3f0ec79..00000000000 --- a/mozilla/lib/libmsg/msgcpane.h +++ /dev/null @@ -1,280 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgCPane_H_ -#define _MsgCPane_H_ - -#include "rosetta.h" -#include "msg.h" -#include "msgpane.h" -#include "xlate.h" - - -/* The MSG_REPLY_TYPE shares the same space as MSG_CommandType, to avoid - possible weird errors, but is restricted to the `composition' commands - (MSG_ReplyToSender through MSG_ForwardMessage.) - */ -typedef MSG_CommandType MSG_REPLY_TYPE; - - -struct MSG_AttachedFile; -typedef struct PrintSetup_ PrintSetup; -typedef struct _XPDialogState XPDialogState; - -HG82621 -class MSG_NewsHost; -class MSG_HTMLRecipients; - -class MSG_CompositionPane : public MSG_Pane { -public: - - MSG_CompositionPane(MWContext* context, MWContext* old_context, - MSG_Prefs* prefs, MSG_CompositionFields* initfields, - MSG_Master* master); - - // Or, if you prefer, construct using below constructor and be sure to - // soon call the Initialize() method: - - MSG_CompositionPane(MWContext* context, MSG_Prefs* prefs, - MSG_Master* master); - int Initialize(MWContext* old_context, MSG_CompositionFields* initfields); - - virtual ~MSG_CompositionPane(); - - virtual MSG_PaneType GetPaneType(); - - virtual void NotifyPrefsChange(NotifyCode code); - - virtual MsgERR GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, - int32 numindices, - XP_Bool *selectable_p, - MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_string, - XP_Bool * plural_p); - virtual MsgERR DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices); - - const char* GetDefaultURL(); - - - int SetCallbacks(MSG_CompositionPaneCallbacks* callbacks, void* closure); - - MSG_CompositionFields* GetInitialFields(); - - - MSG_HEADER_SET GetInterestingHeaders(); - int SetAttachmentList(struct MSG_AttachmentData*); - char* GetAttachmentString(); - XP_Bool ShouldAutoQuote(); - const char* GetCompHeader(MSG_HEADER_SET); - int SetCompHeader(MSG_HEADER_SET, const char*); - XP_Bool GetCompBoolHeader(MSG_BOOL_HEADER_SET); - int SetCompBoolHeader(MSG_BOOL_HEADER_SET, XP_Bool); - const char* GetCompBody(); - int SetCompBody(const char*); - void ToggleCompositionHeader(uint32 header); - XP_Bool ShowingAllCompositionHeaders(); - XP_Bool ShowingCompositionHeader(uint32 mask); - XP_Bool GetHTMLMarkup(void); - void SetHTMLMarkup(XP_Bool flag); - MsgERR QuoteMessage(int (*func)(void* closure, const char* data), - void* closure); - int PastePlaintextQuotation(const char* str); - const struct MSG_AttachmentData *GetAttachmentList(); - int DownloadAttachments(); - char* UpdateHeaderContents(MSG_HEADER_SET which_header, const char* value); - const char* GetWindowTitle(); - void SetBodyEdited(XP_Bool value); - void MailCompositionAllConnectionsComplete(); - void CheckExpansion(MSG_HEADER_SET header); - XP_Bool DeliveryInProgress(); - - int SendMessageNow(); - int QueueMessageForLater(); - int SaveMessageAsDraft(); - int SaveMessageAsTemplate(); - - XP_Bool IsDuplicatePost(); - const char* GetCompositionMessageID(); - void ClearCompositionMessageID(); - HG22960 - - int SanityCheck(int skippast); - - /* draft */ - int SetPreloadedAttachments ( MWContext *context, - struct MSG_AttachmentData *attachmentData, - struct MSG_AttachedFile *attachments, - int attachments_count ); - - virtual void SetIMAPMessageUID (MessageKey key); - - int RetrieveStandardHeaders(MSG_HeaderEntry ** return_list); - void SetHeaderEntries(MSG_HeaderEntry * in_list,int count); - void ClearComposeHeaders(); - - - - int SetHTMLAction(MSG_HTMLComposeAction action) { - m_htmlaction = action; - return 0; - } - MSG_HTMLComposeAction GetHTMLAction() {return m_htmlaction;} - - int PutUpRecipientsDialog(void *pWnd = NULL); - - int ResultsRecipients(XP_Bool cancelled, int32* nohtml, int32* htmlok); - - XP_Bool m_confirmed_uuencode_p; // Have we confirmed sending uuencoded data? - - // For qutoing plain text to html then convert back to plain text - void SetLineWidth(int width) { m_lineWidth = width; } - int GetLineWidth() { return m_lineWidth; } - -protected: - static void QuoteHTMLDone_S(URL_Struct* url, - int status, MWContext* context); - - void InitializeHeaders(MWContext* old_context, - MSG_CompositionFields* fields); - - char* FigureBcc(XP_Bool newsBcc); - const char* CheckForLosingFcc(const char* fcc); - - static void GetUrlDone_S(PrintSetup*); - void GetUrlDone(PrintSetup*); - - static void DownloadAttachmentsDone_S(MWContext *context, - void *fe_data, - int status, - const char *error_message, - struct MSG_AttachedFile *attachmnts); - - void DownloadAttachmentsDone(MWContext* context, int status, - const char* error_message, - struct MSG_AttachedFile *attachments); - - int DoneComposeMessage(MSG_Deliver_Mode deliver_mode); - - static void DeliveryDoneCB_s(MWContext *context, void *fe_data, int status, - const char *error_message); - void DeliveryDoneCB(MWContext* context, int status, - const char* error_message); - - HG22860 - - XP_Bool HasNoMarkup(); - MSG_HTMLComposeAction DetermineHTMLAction(); - int MungeThroughRecipients(XP_Bool* someNonHTML, XP_Bool* groupNonHTML); - - static PRBool AskDialogDone_s(XPDialogState *state, char **argv, int argc, - unsigned int button); - PRBool AskDialogDone(XPDialogState *state, char **argv, int argc, - unsigned int button); - static PRBool RecipientDialogDone_s(XPDialogState *state, char **argv, - int argc, unsigned int button); - PRBool RecipientDialogDone(XPDialogState *state, char **argv, int argc, - unsigned int button); - - int CreateVcardAttachment (); - - - MSG_NewsHost *InferNewsHost (const char *groups); - - MSG_REPLY_TYPE m_replyType; /* The kind of message composition in - progress (reply, forward, etc.) */ - - XP_Bool m_markup; /* Whether we should generate messages - whose first part is text/html rather - than text/plain. */ - - MSG_AttachmentData *m_attachData; /* null-terminated list of the URLs and - desired types currently scheduled - for attachment. */ - MSG_AttachedFile *m_attachedFiles; /* The attachments which have already - been downloaded, and some info about - them. */ - - char *m_defaultUrl; /* Default URL for attaching, etc. */ - - MSG_CompositionFields* m_initfields; // What all the fields were, - // initially. - MSG_CompositionFields* m_fields; // Current value of all the fields. - - char* m_messageId; // Message-Id to use for composition. - - char* m_attachmentString; // Storage for string to display in UI for - // the list of attachments. - char* m_quotedText; // The results of quoting the original text. - - /* Stuff used while quoting a message. */ - PrintSetup* m_print; - MWContext *m_textContext; - char* m_quoteUrl; - URL_Struct *m_dummyUrl; - Net_GetUrlExitFunc *m_exitQuoting; - int (*m_quotefunc)(void* closure, const char* data); - void* m_quoteclosure; - XP_Bool m_deliveryInProgress; /* True while mail is being sent. */ - XP_Bool m_attachmentInProgress; /* True while attachments being - saved. */ - int m_pendingAttachmentsCount; - - MSG_Deliver_Mode m_deliver_mode; /* MSG_DelverNow, MSG_QueueForLater, - * MSG_SaveAsDraft, MSG_SaveAsTemplate - */ - - - - XP_Bool m_cited; - - XP_Bool m_duplicatePost; /* Whether we seem to be trying for a - second time to post the same message. - (If this is true, then we know to ignore - 435 errors from the newsserver.) */ - HG92827 - - MSG_HTMLComposeAction m_htmlaction; - MSG_HTMLRecipients* m_htmlrecip; - - int m_status; - // I'm sure this isn't what Terry had in mind... // ### dmb - MSG_HEADER_SET m_visible_headers; - - MSG_NewsHost* m_host; // Which newshost we're posting to. This is - // lazily evaluated, so a NULL does necessarily - // mean we have no news host specified. - - XP_Bool m_closeAfterSave; - - XP_Bool m_haveQuoted; - XP_Bool m_haveAttachedVcard; - - MSG_CompositionPaneCallbacks m_callbacks; - void* m_callbackclosure; - int m_lineWidth; // for quoting plain text to html then convert back - // to plain text -}; - - -#endif /* _MsgCPane_H_ */ diff --git a/mozilla/lib/libmsg/msgdb.cpp b/mozilla/lib/libmsg/msgdb.cpp deleted file mode 100644 index bd8e1dcdaea..00000000000 --- a/mozilla/lib/libmsg/msgdb.cpp +++ /dev/null @@ -1,2176 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "xp.h" -#include "xp_time.h" -#include "msgdb.h" -#include "msgdbvw.h" -#include "dberror.h" -#include "grpinfo.h" -#include "thrhead.h" -#include "xpgetstr.h" -#include "newsset.h" -#include "msgdbapi.h" - -extern "C" -{ - extern int MK_MSG_MARKREAD_COUNT; - extern int MK_MSG_DONE_MARKREAD_COUNT; -} - -XP_Bool MessageDB::m_cacheEnabled = TRUE; - -MessageDBArray /*NEAR*/ *MessageDB::m_dbCache = NULL; - -MessageDBArray::MessageDBArray() -{ -} - -MessageDB::MessageDB() -{ - m_useCount = 0; - m_dbHandle = NULL; - m_headerIndex = 0; - m_addCount = 0; - m_commitChunk = 200; - m_dbName = NULL; - m_dbFolderInfo = NULL; - m_newSet = NULL; - m_folderInfo = NULL; -} -//---------------------------------------------------------------------- -// GetDBCache -//---------------------------------------------------------------------- -MessageDBArray * -MessageDB::GetDBCache() -{ - if (!m_dbCache) - { - m_dbCache = new MessageDBArray(); - } - return m_dbCache; - -} - -void -MessageDB::CleanupCache() -{ - if (m_dbCache) // clean up memory leak - { - for (int i = 0; i < GetDBCache()->GetSize(); i++) - { - MessageDB* pMessageDB = GetDBCache()->GetAt(i); - if (pMessageDB) - { -#ifdef DEBUG_bienvenu - XP_Trace("closing %s\n", pMessageDB->m_dbName); -#endif - pMessageDB->ForceClosed(); - i--; // back up array index, since closing removes db from cache. - } - } - XP_ASSERT(GetNumInCache() == 0); // better not be any open db's. - delete m_dbCache; - } - m_dbCache = NULL; // Need to reset to NULL since it's a - // static global ptr and maybe referenced - // again in other places. -} - -MessageDB::~MessageDB() -{ - NotifyAnnouncerGoingAway(NULL); - Purge(); - if (m_dbName) - XP_FREE(m_dbName); - if (m_newSet) - delete m_newSet; -} - -MsgERR MessageDB::MessageDBOpen(const char * dbName, XP_Bool create) -{ - MsgERR err = OpenDB(dbName, create); - if (err == eSUCCESS) - m_useCount++; - - return err; -} - -MsgERR MessageDB::Close() -{ - --m_useCount; - XP_ASSERT(m_useCount >= 0); - if (m_useCount == 0) - { - Purge(); -#ifdef DEBUG_bienvenu1 - Verify(); -#endif - CloseDB(); - RemoveFromCache(this); -#ifdef DEBUG_bienvenu - if (GetNumInCache() != 0) - { - XP_Trace("closing %s\n", m_dbName); - DumpCache(); - } -#endif - // if this terrifies you, we can make it a static method - delete this; - return(eSUCCESS); - } - else - { - return(eSUCCESS); - } -} - -// virtual inlines moved to .cpp file to help compiler charity cases. -MsgERR MessageDB::OnNewPath (const char * /*path*/) { return eSUCCESS; } - -// force the database to close - this'll flush out anybody holding onto -// a database without having a listener! -MsgERR MessageDB::ForceClosed() -{ - MsgERR err = eSUCCESS; - - while (m_useCount > 0 && err == eSUCCESS) - { - int32 saveUseCount = m_useCount; - err = Close(); - if (saveUseCount == 1) - break; - } - return err; -} - -// this routine should not leave the database open if it returns an error. -MsgERR MessageDB::OpenDB(const char *dbFileName, XP_Bool create) -{ - MsgERR err = MSG_OpenDB(dbFileName, create, &m_dbHandle, &m_dbFolderInfoHandle); - - XPStringObj newSet; - - if (err == eSUCCESS) - { - MSG_DBFolderInfoExchange exchangeInfo; - - if (!m_dbFolderInfoHandle) - AddNewFolderInfoToDB(); - - if (m_dbName) - XP_FREE(m_dbName); - m_dbName = XP_STRDUP( dbFileName ); - - m_dbFolderInfo = CreateFolderInfo(m_dbFolderInfoHandle); - m_dbFolderInfo->SetHandle(m_dbFolderInfoHandle); - MSG_DBFolderInfo_GetFolderInfo(m_dbFolderInfoHandle, &exchangeInfo); - m_dbFolderInfo->SetExchangeInfo(exchangeInfo); - - // compare db version filed out to current db version - if (m_dbFolderInfoHandle != NULL && GetCurVersion() != m_dbFolderInfo->GetDiskVersion()) - { - CloseDB(); - err = eOldSummaryFile; - } - else - { - m_dbFolderInfo->GetNewArtsSet(newSet); - m_newSet = msg_NewsArtSet::Create(newSet); - } - } - return err; -} - -MsgERR MessageDB::CloseDB() -{ - if (m_dbHandle != NULL) - { - Commit(); - if (m_dbFolderInfo != NULL) - { - delete m_dbFolderInfo; - m_dbFolderInfo = NULL; - } - MSG_CloseDB(m_dbHandle); - } - return eSUCCESS; -} - -DBFolderInfo *MessageDB::AddNewFolderInfoToDB() -{ - m_dbFolderInfo = CreateFolderInfo(0); -// m_dbFolderInfo->fID = 1; // one and only newsgroup info - m_dbFolderInfo->SetHighWater(0); - m_dbFolderInfo->m_version = GetCurVersion(); -// m_dbFolderInfo->setDirty(); - MSG_AddDBFolderInfo(m_dbHandle, m_dbFolderInfo->GetHandle()); - m_dbFolderInfoHandle = m_dbFolderInfo->GetHandle(); - Commit(); - return m_dbFolderInfo; -} - -// Renames the destdb as sourceDB. DestDB could be open, in which case we need to rename it under -// the covers. SourceDB better not be open, since it's going away. -/*static*/ MsgERR MessageDB::RenameDB(const char *sourceName, const char *destName) -{ - MsgERR err = eSUCCESS; - -#ifdef DEBUG - { - char* filename = WH_FileName(sourceName, xpMailFolderSummary); - XP_ASSERT(filename); - XP_ASSERT(MessageDB::FindInCache(filename) == NULL); - FREEIF(filename); - } -#endif - MessageDB *destDB; - { - char* filename = WH_FileName(destName, xpMailFolderSummary); - if (!filename) return eOUT_OF_MEMORY; - destDB = MessageDB::FindInCache(filename); - XP_FREE(filename); - } - if (destDB) - err = destDB->CloseDB(); - - if (XP_FileRename(sourceName, xpMailFolderSummary, destName, xpMailFolderSummary) == 0) - { - if (destDB) { - char* filename = WH_FileName (destName, xpMailFolderSummary); - if (!filename) return eOUT_OF_MEMORY; - err = destDB->OpenDB (filename, FALSE /*create?*/); - XP_FREE(filename); - } - } - else - err = eFAILURE; // ### dmb - need to come up with better error. - return err; -} - -MsgERR MessageDB::SetSummaryValid(XP_Bool valid /* = TRUE */) -{ - if (!valid) - { - if (m_dbFolderInfo) - { - m_dbFolderInfo->m_version = 0; -// DMB TODO m_dbFolderInfo->setDirty(); - Commit(); - } - else - return eFAILURE; // can't do this w/o a folder info... - } - // for default db (and news), there's no nothing to set to make it it valid - return eSUCCESS; -} - -// returns NULL if not a mail db -MailDB *MessageDB::GetMailDB() -{ - return NULL; -} - -// returns NULL if not a news db -NewsGroupDB *MessageDB::GetNewsDB() -{ - return NULL; -} - -DBFolderInfo *MessageDB::CreateFolderInfo(MSG_DBFolderInfoHandle handle) -{ - return new DBFolderInfo((handle) ? handle : MSG_CreateMailDBFolderInfo()); -} - - -MSG_FolderInfo *MessageDB::GetFolderInfo() -{ - return m_folderInfo; -} - -MsgERR MessageDB::GetHeaderFromHandle(MSG_HeaderHandle headerHandle, DBMessageHdr **pResult) -{ - DBMessageHdr *header = new DBMessageHdr(headerHandle); - *pResult = header; - return eSUCCESS; -} - -DBThreadMessageHdr *MessageDB::GetThreadHeaderFromHandle(MSG_ThreadHandle handle) -{ - return (handle) ? new DBThreadMessageHdr(handle) : 0; -} - -MsgERR MessageDB::Commit(XP_Bool compress /* = FALSE */) -{ - MSG_DBFolderInfoExchange exchangeInfo; - XP_ASSERT(m_dbHandle != NULL); - char *outputLine = (m_newSet) ? m_newSet->Output() : 0; - if (outputLine) - { - GetDBFolderInfo()->SetNewArtsSet(outputLine, m_dbHandle); - delete [] outputLine; - } - else - GetDBFolderInfo()->SetNewArtsSet("", m_dbHandle); - - m_dbFolderInfo->GetExchangeInfo(exchangeInfo); - MSG_DBFolderInfo_SetFolderInfo(m_dbFolderInfoHandle, &exchangeInfo, m_dbHandle); - MsgERR err = MSG_CommitDB(m_dbHandle, compress); - if (err != eSUCCESS) - return eWRITE_ERROR; - - return eSUCCESS; -} - -// Fill in messageHdr from database. Don't change msgHdr if we don't find messageNum. -MsgERR MessageDB::GetMessageHdr(MessageKey messageKey, MessageHdrStruct *msgHdr) -{ - DBMessageHdr *headerObject = GetDBHdrForKey(messageKey); - if (headerObject == NULL) - return 0; - else - { - XP_Bool isRead = FALSE; - - headerObject->CopyToMessageHdr(msgHdr, GetDB()); - // unless/until marking read/unread goes through view layer, we need to get unreadness from newsrc - IsRead(messageKey, &isRead); - if (isRead) - msgHdr->m_flags |= kIsRead; - - delete headerObject; - return eSUCCESS; - } -} - -MsgERR MessageDB::GetShortMessageHdr(MessageKey messageNum, MSG_MessageLine *msgHdr) -{ - MessageHdrStruct messageHdr; - - XP_MEMSET(&messageHdr, 0, sizeof(messageHdr)); - DBMessageHdr *headerObject = GetDBHdrForKey(messageNum); - if (headerObject == NULL) - { - return eID_NOT_FOUND; - } - else - { - XP_Bool isRead = FALSE; - - headerObject->CopyToShortMessageHdr(msgHdr, GetDB()); - - // unless/until marking read/unread goes through view layer, we need to get unreadness from newsrc - IsRead(messageNum, &isRead); - if (isRead) - msgHdr->flags |= kIsRead; - - if (m_newSet && m_newSet->IsMember(headerObject->GetMessageKey())) - msgHdr->flags |= kNew; - - delete headerObject; - return eSUCCESS; - } -} - -// This function merely takes a DBMessageHdr -// and stores that in m_newHeaders. From there, it will be threaded -// and added to the database in a separate pass. -MsgERR MessageDB::AddHeaderToArray(DBMessageHdr *dbMsgHdr) -{ - m_newHeaders.SetAtGrow(m_headerIndex++, dbMsgHdr); - return eSUCCESS; -} - -// given an array of message ids, return list header information for each header -MsgERR MessageDB::ListHeaders(MessageKey *pMessageNums, - int numToList, - MessageHdrStruct *pOutput, - int *pNumListed) -{ - MsgERR err = eSUCCESS; - *pNumListed = 0; - - for (int i = 0; i < numToList; i++) - { - err = GetMessageHdr(pMessageNums[i], &pOutput[i]); - if (err != eSUCCESS) - break; - (*pNumListed)++; - } - - return err; -} -MsgERR MessageDB::ListHeadersShort(MessageKey *pMessageNums, int numToList, MSG_MessageLine *pOutput, int *pNumListed) -{ - MsgERR err = eSUCCESS; - *pNumListed = 0; - - for (int i = 0; i < numToList; i++) - { - err = GetShortMessageHdr(pMessageNums[i], &pOutput[i]); - if (err != eSUCCESS) - break; - (*pNumListed)++; - } - - return err; -} - -MsgERR MessageDB::ListNextUnread(ListContext **pContext, DBMessageHdr **pResult) -{ - DBMessageHdr *pHeader; - MsgERR dbErr = eSUCCESS; - XP_Bool lastWasRead = TRUE; - *pResult = NULL; - - while (TRUE) - { - if (*pContext == NULL) - dbErr = ListFirst (pContext, &pHeader); - else - dbErr = ListNext(*pContext, &pHeader); - - if (dbErr != eSUCCESS) - { - ListDone(*pContext); - break; - } - - // this currently doesn't happen since ListNext doesn't return errors - // other than eDBEndOfList. - else if (dbErr != eSUCCESS) - break; - if (IsHeaderRead(pHeader, &lastWasRead) == eSUCCESS && !lastWasRead) - break; - else - delete pHeader; - } - if (!lastWasRead) - *pResult = pHeader; - return dbErr; -} - -MsgERR MessageDB::ListAllIds(IDArray *outputIds) -{ - MessageKey *resultKeys; - int32 numKeys; - MsgERR err = MSG_DBHandle_ListAllKeys(m_dbHandle, &resultKeys, &numKeys); - outputIds->SetArray(resultKeys, numKeys, numKeys); - return err; -} - -MsgERR MessageDB::ListAllIds(IDArray &outputIds) -{ - return ListAllIds(&outputIds); -} - -MsgERR MessageDB::ListFirst(ListContext **pContext, DBMessageHdr **pResult) -{ - MsgERR err; - - err = CreateListIterator(TRUE, pContext, pResult); - if (err == eCorruptDB) - { - err = eEXCEPTION; - SetSummaryValid(FALSE); - } - return err; - -} - -MsgERR MessageDB::ListNext(ListContext *pContext, DBMessageHdr **pResult) -{ - DBMessageHdr *msgHdr = NULL; - MsgERR err; - MSG_HeaderHandle headerHandle; - - err = MSG_IteratorHandle_GetNextHeader(pContext->m_iterator, m_dbHandle, &headerHandle); - if (err == eSUCCESS) - err = GetHeaderFromHandle(headerHandle, pResult); - else if (err == eCorruptDB) - SetSummaryValid(FALSE); - - return err; -} - -MsgERR MessageDB::ListLast(ListContext **pContext, DBMessageHdr **pResult) -{ - return CreateListIterator(FALSE, pContext, pResult); -} - -// returns the biggest key, kIdNone if none found. -MessageKey MessageDB::ListHighwaterMark() -{ - return MSG_DBHandle_GetHighwaterMark(m_dbHandle); - -} - -// Create an iterator that either starts at the beginning and goes towards the end -// (if forward == TRUE), or starts at the end and goes towards the beginning. -MsgERR MessageDB::CreateListIterator(XP_Bool forward, ListContext **pContext, DBMessageHdr **pResult) -{ - MSG_HeaderHandle headerHandle; - ListContext *listContext = NULL; - - listContext = new ListContext; - MsgERR err = MSG_DBHandle_CreateHdrListIterator(m_dbHandle, forward, &listContext->m_iterator, &headerHandle); - if (err == eSUCCESS) - err = GetHeaderFromHandle(headerHandle, pResult); - *pContext = listContext; - return err; -} - -MsgERR MessageDB::ListDone(ListContext *pContext) -{ - if (pContext != NULL) - { - if (pContext->m_iterator) - MSG_IteratorHandle_DestroyIterator(pContext->m_iterator); - - delete pContext; - } - return eSUCCESS; -} - -/* static */ XP_Bool MessageDB::MatchFlaggedNotOffline(DBMessageHdr *hdr) -{ - return (hdr->GetFlags() & kMsgMarked) && !(hdr->GetFlags() & kOffline); -} - -void MessageDB::ListMatchingKeys(HdrCompareFunc *compareFunc, IDArray &matchingKeys) -{ - MsgERR dbErr; - DBMessageHdr *pHeader; - ListContext *listContext = NULL; - - while (TRUE) - { - if (listContext == NULL) - dbErr = ListFirst (&listContext, &pHeader); - else - dbErr = ListNext(listContext, &pHeader); - - if (dbErr == eDBEndOfList) - { - dbErr = eSUCCESS; - ListDone(listContext); - break; - } - // this currently doesn't happen since ListNext doesn't return errors - // other than eDBEndOfList. - else if (dbErr != eSUCCESS) - break; - if ((*compareFunc)(pHeader)) - matchingKeys.Add(pHeader->GetMessageKey()); - delete pHeader; - } -} - -// list the ids of the top-level thread ids starting at id == startMsg. This actually returns -// the ids of the first message in each thread. -MsgERR MessageDB::ListThreadIds(MessageKey *startMsg, XP_Bool unreadOnly, MessageKey *pOutput, int32 *pFlags, char *pLevels, - int numToList, int *pNumListed, MessageDBView *view, int32 *pTotalHeaders) -{ - MsgERR err = eSUCCESS; - DBMessageHdr *msgHdr; - MSG_ThreadHandle threadHandle = NULL; - DBThreadMessageHdr * threadHdr = NULL; - // N.B..don't ret before assigning numListed to *pNumListed - int numListed = 0; - - if (*startMsg > 0) - { - XP_ASSERT(m_threadIterator != NULL); // for now, we'll just have to rely on the caller leaving - // the iterator in the right place. - err = MSG_IteratorHandle_GetNextThread(m_threadIterator, m_dbHandle, &threadHandle); - } - else - { - MSG_DBHandle_CreateThreadListIterator(m_dbHandle, TRUE, &m_threadIterator, &threadHandle); - } - - if (!threadHandle) - { - if (*startMsg > 0) - err = eID_NOT_FOUND; - } - else - { - - threadHdr = new DBThreadMessageHdr(threadHandle); - int32 threadCount; - int32 threadsRemoved = 0; - for (int i = 0; i < numToList && threadHdr != NULL; i++) - { - MSG_ThreadHandle nextThreadHandle = NULL; - DBThreadMessageHdr *nextThreadHdr = NULL; - err = MSG_IteratorHandle_GetNextThread(m_threadIterator, m_dbHandle, &nextThreadHandle); - if (err == eCorruptDB) - break; - else if (err == eDBEndOfList) - err = eSUCCESS; - if (nextThreadHandle) - nextThreadHdr = new DBThreadMessageHdr(nextThreadHandle); - else - nextThreadHdr = NULL; - - if (threadHdr->GetNumChildren() != 0) // not empty thread - { - if (pTotalHeaders) - *pTotalHeaders += threadHdr->GetNumChildren(); - if (unreadOnly) - msgHdr = threadHdr->GetFirstUnreadChild(this); - else - msgHdr = threadHdr->GetChildHdrAt(0); - uint32 threadFlags = threadHdr->GetFlags(); - - if (msgHdr != NULL && (!view || view->WantsThisThread(threadHdr))) - { - pOutput[numListed] = msgHdr->GetMessageKey(); - pLevels[numListed] = 0 /* msgHdr->GetLevel() */; - // DMB TODO - This will do for now...Until we decide how to - // handle thread flags vs. message flags, if we do decide - // to make them different. - msgHdr->OrFlags(threadFlags & (kWatched | kIgnored)); - XP_Bool isRead = FALSE; - - // make sure DB agrees with newsrc, if we're news. - IsRead(msgHdr->GetMessageKey(), &isRead); - MarkHdrRead(msgHdr, isRead, NULL); - // try adding in kIsThread flag for unreadonly view. - if (GetThreadCount(threadHdr, &threadCount) == eSUCCESS && threadCount > 1) - pFlags[numListed] |= kHasChildren; - pFlags[numListed] = msgHdr->m_flags | kIsThread | threadFlags; - - numListed++; - } - delete msgHdr; - } - else if (threadsRemoved < 10 && !(threadHdr->GetFlags() & (kWatched | kIgnored))) - { - MSG_DBHandle_RemoveThread(m_dbHandle, threadHandle); - threadsRemoved++; // don't want to remove all empty threads first time - // around as it will choke preformance for upgrade. -#ifdef DEBUG_bienvenu - XP_Trace("removing empty non-ignored non-watched thread\n"); -#endif - } - delete threadHdr; - threadHdr = nextThreadHdr; - } - } - if (threadHdr != NULL) - { - *startMsg = threadHdr->GetThreadID(); - delete threadHdr; - } - else - { - *startMsg = kIdNone; - MSG_IteratorHandle_DestroyIterator(m_threadIterator); - m_threadIterator = NULL; - } - *pNumListed = numListed; - return err; -} - -// helper function to get the thread list context from a thread id and start msg. -// If successful, pThreadHdr will be non null on return -MsgERR MessageDB::GetDBThreadListContext(MessageKey threadId, MessageKey startMsg, DBThreadMessageHdr **pThreadHdr, uint16 *pThreadIndex) -{ - *pThreadIndex = 0; - *pThreadHdr = GetDBThreadHdrForThreadID(threadId); - if (*pThreadHdr == NULL) - return eID_NOT_FOUND; - - return GetMessageIndexInThread(*pThreadHdr, startMsg, pThreadIndex); -} - -MsgERR MessageDB::GetMessageIndexInThread(DBThreadMessageHdr *threadHdr, MessageKey startMsg, uint16 *pThreadIndex) -{ - XP_Bool foundStartMsg = FALSE; - - if (startMsg != kIdNone && startMsg != 0) - { - while (*pThreadIndex < threadHdr->GetNumChildren()) - { - if (threadHdr->GetChildAt(*pThreadIndex) == startMsg) - { - foundStartMsg = TRUE; - break; - } - (*pThreadIndex)++; - } - } - else - { - *pThreadIndex = 0; - foundStartMsg = TRUE; - } - return (foundStartMsg) ? eSUCCESS : eID_NOT_FOUND; -} - -// overloaded helper function to get the thread list context from a msgHdr and start msg. -// If successful, pThreadHdr will be non null on return -MsgERR MessageDB::GetDBThreadListContext(DBMessageHdr *msgHdr, MessageKey startMsg, DBThreadMessageHdr **pThreadHdr, uint16 *pThreadIndex) -{ - *pThreadIndex = 0; - *pThreadHdr = GetDBThreadHdrForMsgHdr(msgHdr); - if (*pThreadHdr == NULL) - return eID_NOT_FOUND; - - return GetMessageIndexInThread(*pThreadHdr, startMsg, pThreadIndex); -} - - - -// Overloaded ListThreadIds which takes a ListContext -MsgERR MessageDB::ListThreadIds(ListContext * /*context*/, - MessageKey * /*pOutput*/, - int /*numToList*/, - int * /*numListed*/) -{ - return eNYI; -} - -MsgERR MessageDB::ListUnreadIdsInThread(MessageKey threadId, MessageKey *startMsg, XPByteArray &levelStack, int numToList, MessageKey *pOutput, char *pFlags, char *pLevels, int *pNumListed) -{ - MsgERR err; - uint16 threadIndex = 0; - DBThreadMessageHdr *threadHdr; - - *pNumListed = 0; - - err = GetDBThreadListContext(threadId, *startMsg, &threadHdr, &threadIndex); - if (err != eSUCCESS) - return err; - // these children ids are in thread order. - int i; - int startNumListed = *pNumListed; - for (i = 0; i + threadIndex < threadHdr->GetNumChildren() && (*pNumListed - startNumListed) < numToList; i++) - { - DBMessageHdr *msgHdr = threadHdr->GetChildHdrAt(i + threadIndex); - if (msgHdr != NULL) - { - // if the current header's level is <= to the top of the level stack, - // pop off the top of the stack. - // ### dmb unreadonly - The level stack needs to work across calls - // to this routine, in the case that we have more than 200 unread - // messages in a thread. - while (levelStack.GetSize() > 1 && - msgHdr->GetLevel() <= levelStack.GetAt(levelStack.GetSize() - 1)) - { - levelStack.RemoveAt(levelStack.GetSize() - 1); - } - - if (! (msgHdr->GetFlags() & kExpunged)) - { - XP_Bool isRead = FALSE; - IsRead(msgHdr->GetMessageKey(), &isRead); - if (!isRead) - { - uint8 levelToAdd; - // just make sure flag is right in db. - MarkHdrRead(msgHdr, FALSE, NULL); - *pOutput++ = msgHdr->GetMessageKey(); // was fId DMB TODO - *pFlags = 0; -// pLevels[i] = msgHdr->GetLevel(); - if (levelStack.GetSize() == 0) - levelToAdd = 0; - else - levelToAdd = levelStack.GetAt(levelStack.GetSize() - 1) + 1; - *pLevels++ = levelToAdd; -#ifdef DEBUG_bienvenu -// XP_Trace("added at level %d\n", levelToAdd); -#endif - levelStack.Add(levelToAdd); - MessageDBView::CopyDBFlagsToExtraFlags(msgHdr->m_flags, pFlags); - pFlags++; - (*pNumListed)++; - } - } - delete msgHdr; - } - } - if ((i + threadIndex) < threadHdr->GetNumChildren()) - *startMsg = threadHdr->GetChildAt(i + threadIndex); - else - *startMsg = kIdNone; - - delete threadHdr; - return eSUCCESS; -} - -MsgERR MessageDB::ListIdsInThread(DBMessageHdr *msgHdr, MessageKey *startMsg, int numToList, MessageKey *pOutput, char *pFlags, char *pLevels, int *pNumListed) -{ - uint16 threadIndex = 0; - DBThreadMessageHdr *threadHdr; - MsgERR err; - - err = GetDBThreadListContext(msgHdr, *startMsg, &threadHdr, &threadIndex); - if (err != eSUCCESS) - return err; - return ListIdsInThread(threadHdr, threadIndex, startMsg, numToList, pOutput, pFlags, pLevels, pNumListed); -} - -MsgERR MessageDB::ListIdsInThread(MessageKey threadId, MessageKey *startMsg, int numToList, MessageKey *pOutput, char *pFlags, char *pLevels, int *pNumListed) -{ - uint16 threadIndex = 0; - DBThreadMessageHdr *threadHdr; - MsgERR err; - - *pNumListed = 0; - - err = GetDBThreadListContext(threadId, *startMsg, &threadHdr, &threadIndex); - if (err != eSUCCESS) - return err; - - return ListIdsInThread(threadHdr, threadIndex, startMsg, numToList, pOutput, pFlags, pLevels, pNumListed); -} - -MsgERR MessageDB::ListIdsInThread(DBThreadMessageHdr *threadHdr, uint16 threadIndex, MessageKey *startMsg, int numToList, MessageKey *pOutput, char *pFlags, char *pLevels, int *pNumListed) -{ - // these children ids should be in thread order. - int i; - - *pNumListed = 0; - - for (i = 0; i + threadIndex < threadHdr->GetNumChildren() && i < numToList; i++) - { - DBMessageHdr *msgHdr = threadHdr->GetChildHdrAt(i + threadIndex); - if (msgHdr != NULL) - { - if (! (msgHdr->GetFlags() & kExpunged)) - { - XP_Bool isRead = FALSE; - IsRead(msgHdr->GetMessageKey(), &isRead); - // just make sure flag is right in db. - MarkHdrRead(msgHdr, isRead, NULL); -// if (isRead) -// msgHdr->m_flags |= kIsRead; -// else -// msgHdr->m_flags &= ~kIsRead; - *pOutput++ = msgHdr->GetMessageKey(); - pFlags[i] = 0; - pLevels[i] = msgHdr->GetLevel(); - // turn off thread or elided bit if they got turned on (maybe from new only view?) - if (i > 0) - msgHdr->AndFlags(~(kIsThread|kElided)); - MessageDBView::CopyDBFlagsToExtraFlags(msgHdr->m_flags, &pFlags[i]); - (*pNumListed)++; - } - else - { - XP_ASSERT(FALSE); // shouldn't happen - expunging should remove - } - delete msgHdr; - } - } - if ((i + threadIndex) < threadHdr->GetNumChildren()) - *startMsg = threadHdr->GetChildAt(i + threadIndex); - else - *startMsg = kIdNone; - - delete threadHdr; - return eSUCCESS; -} - -MsgERR MessageDB::GetThreadCount(MessageKey messageKey, int32 *pThreadCount) -{ - MsgERR ret = eID_NOT_FOUND; - DBThreadMessageHdr *threadHdr = GetDBThreadHdrForMsgID(messageKey); - if (threadHdr != NULL) - { - ret = GetThreadCount(threadHdr, pThreadCount); - delete threadHdr; - } - return ret; -} - -MsgERR MessageDB::GetThreadCount(DBThreadMessageHdr *threadHdr, int32 *pThreadCount) -{ - *pThreadCount = threadHdr->GetNumChildren(); - return eSUCCESS; -} - -MessageKey MessageDB::GetKeyOfFirstMsgInThread(MessageKey key) -{ - DBThreadMessageHdr *threadHdr = GetDBThreadHdrForMsgID(key); - MessageKey firstKeyInThread = kIdNone; - - if (threadHdr == NULL) - { - //XP_ASSERT(FALSE); (rb) message not found, deleted already but delete key hit too fast for us - return firstKeyInThread; - } - // ### dmb UnreadOnly - this is wrong. - firstKeyInThread = threadHdr->GetChildAt(0); - delete threadHdr; - return firstKeyInThread; -} - -XP_Bool MessageDB::SetPriority(MessageKey key, MSG_PRIORITY priority) -{ - XP_Bool ret; - - DBMessageHdr *msgHdr = GetDBHdrForKey(key); - if (msgHdr == NULL) - return FALSE; - ret = SetPriority(msgHdr, priority); - delete msgHdr; - return ret; -} - -XP_Bool MessageDB::SetPriority(DBMessageHdr *msgHdr, MSG_PRIORITY priority) -{ - if ((GetMailDB() != NULL)) - { - msgHdr->SetPriority(priority); - // ###dmb calling SetHdrFlag (on mailDB) this way will basically flush the new mozilla - // status which is all we want. Should invent new method. Also, we should only - // call this on maildbs, because other db's will leave dirty flag set. - SetHdrFlag(msgHdr, TRUE, (MsgFlags) 0); - // ###tw When we decide what our priority header and format will be, - // this code should also fix the header in the mail msg, - // just to be extra paranoid. - return TRUE; - } - else - { - return FALSE; - } -} - - -// Helper routine - lowest level of flag setting -void MessageDB::SetHdrFlag(DBMessageHdr *msgHdr, XP_Bool bSet, MsgFlags flag) -{ - XP_ASSERT(! (flag & kDirty)); // this won't do the right thing so don't. - - if (bSet && (!(msgHdr->GetFlags() & flag))) - { - msgHdr->OrFlags(flag | kDirty); - } - else if (!bSet && (msgHdr->GetFlags() & flag)) - { - msgHdr->AndFlags(~flag); - msgHdr->OrFlags(kDirty); - } -} - -void MessageDB::MarkHdrReadInDB(DBMessageHdr *msgHdr, XP_Bool bRead, - ChangeListener *instigator) -{ - SetHdrFlag(msgHdr, bRead, kIsRead); - if (m_newSet) - m_newSet->Remove(msgHdr->GetMessageKey()); - if (m_dbFolderInfo != NULL) - { - if (bRead) - m_dbFolderInfo->ChangeNumNewMessages(-1); - else - m_dbFolderInfo->ChangeNumNewMessages(1); -// DMB TODO m_dbFolderInfo->setDirty(); - } - - NotifyKeyChangeAll(msgHdr->GetMessageKey(), msgHdr->GetFlags(), instigator); -} - -MsgERR MessageDB::MarkRead(MessageKey messageKey, XP_Bool bRead, - ChangeListener *instigator) -{ - MsgERR err; - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKey); - if (msgHdr == NULL) - return eID_NOT_FOUND; - - err = MarkHdrRead(msgHdr, bRead, instigator); - delete msgHdr; - return err; -} - -MsgERR MessageDB::MarkReplied(MessageKey messageKey, XP_Bool bReplied, - ChangeListener *instigator /* = NULL */) -{ - return SetKeyFlag(messageKey, bReplied, kReplied, instigator); -} - -MsgERR MessageDB::MarkForwarded(MessageKey messageKey, XP_Bool bForwarded, - ChangeListener *instigator /* = NULL */) -{ - return SetKeyFlag(messageKey, bForwarded, kForwarded, instigator); -} - -MsgERR MessageDB::MarkHasAttachments(MessageKey messageKey, XP_Bool bHasAttachments, - ChangeListener *instigator) -{ - return SetKeyFlag(messageKey, bHasAttachments, kHasAttachment, instigator); -} - -MsgERR MessageDB::MarkMarked(MessageKey messageKey, XP_Bool mark, - ChangeListener *instigator) -{ - return SetKeyFlag(messageKey, mark, kMsgMarked, instigator); -} - -MsgERR MessageDB::MarkOffline(MessageKey messageKey, XP_Bool offline, - ChangeListener *instigator) -{ - return SetKeyFlag(messageKey, offline, kOffline, instigator); -} - - -MsgERR MessageDB::MarkImapDeleted(MessageKey messageKey, XP_Bool deleted, - ChangeListener *instigator) -{ - return SetKeyFlag(messageKey, deleted, kIMAPdeleted, instigator); -} - -MsgERR MessageDB::MarkMDNNeeded(MessageKey messageKey, XP_Bool bNeeded, - ChangeListener *instigator /* = NULL */) -{ - return SetKeyFlag(messageKey, bNeeded, kMDNNeeded, instigator); -} - -MsgERR MessageDB::IsMDNNeeded(MessageKey messageKey, XP_Bool *pNeeded) -{ - MsgERR err = eSUCCESS; - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKey); - if (msgHdr != NULL && pNeeded) - { - *pNeeded = ((msgHdr->GetFlags() & kMDNNeeded) == kMDNNeeded); - delete msgHdr; - return err; - } - else - { - return eID_NOT_FOUND; - } -} - - -MsgERR MessageDB::MarkMDNSent(MessageKey messageKey, XP_Bool bSent, - ChangeListener *instigator /* = NULL */) -{ - return SetKeyFlag(messageKey, bSent, kMDNSent, instigator); -} - - -MsgERR MessageDB::IsMDNSent(MessageKey messageKey, XP_Bool *pSent) -{ - MsgERR err = eSUCCESS; - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKey); - if (msgHdr != NULL && pSent) - { - *pSent = msgHdr->GetFlags() & kMDNSent; - delete msgHdr; - return err; - } - else - { - return eID_NOT_FOUND; - } -} - - -MsgERR MessageDB::SetKeyFlag(MessageKey messageKey, XP_Bool set, int32 flag, - ChangeListener *instigator) -{ - MsgERR err = eSUCCESS; - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKey); - if (msgHdr == NULL) - return eID_NOT_FOUND; - - SetHdrFlag(msgHdr, set, flag); - - NotifyKeyChangeAll(msgHdr->GetMessageKey(), msgHdr->GetFlags(), instigator); - - delete msgHdr; - return err; -} - -MsgERR MessageDB::MarkHdrRead(DBMessageHdr *msgHdr, XP_Bool bRead, - ChangeListener *instigator) -{ - XP_Bool isRead; - IsHeaderRead(msgHdr, &isRead); - // if the flag is already correct in the db, don't change it - if (!!isRead != !!bRead) - { - DBThreadMessageHdr *threadHdr = GetDBThreadHdrForMsgID(msgHdr->GetMessageKey()); - if (threadHdr != NULL) - { - threadHdr->MarkChildRead(bRead, m_dbHandle); - delete threadHdr; - } - MarkHdrReadInDB(msgHdr, bRead, instigator); - } - return eSUCCESS; -} - -MsgERR MessageDB::MarkAllRead(MWContext *context, IDArray *thoseMarked) -{ - MsgERR dbErr; - DBMessageHdr *pHeader; - ListContext *listContext = NULL; - int32 numChanged = 0; - char msgBuf[100]; - const char * msgTemplate = XP_GetString(MK_MSG_MARKREAD_COUNT); - - while (TRUE) - { - dbErr = ListNextUnread(&listContext, &pHeader); - if (dbErr == eDBEndOfList) - { - dbErr = eSUCCESS; - break; - } - // this currently doesn't happen since ListNext doesn't return errors - // other than eDBEndOfList. - else if (dbErr != eSUCCESS || !pHeader) - break; - - if (numChanged % 10 == 0) - { - PR_snprintf (msgBuf, sizeof(msgBuf), msgTemplate, numChanged); - FE_Progress (context, msgBuf); - } - if (thoseMarked) - thoseMarked->Add(pHeader->GetMessageKey()); - dbErr = MarkHdrRead(pHeader, TRUE, NULL); // ### dmb - blow off error? - delete pHeader; - if (numChanged++ % 200 == 0) // commit every once in a while - Commit(); - } - // force num new to 0. - m_dbFolderInfo->ChangeNumNewMessages(-m_dbFolderInfo->GetNumNewMessages()); -// DMB TODO m_dbFolderInfo->setDirty(); - msgTemplate = XP_GetString(MK_MSG_DONE_MARKREAD_COUNT); - PR_snprintf (msgBuf, sizeof(msgBuf), msgTemplate, numChanged); - FE_Progress (context, msgBuf); - return dbErr; -} - -MsgERR MessageDB::MarkReadByDate (time_t startDate, time_t endDate, MWContext *context, IDArray *markedIds) -{ - MsgERR dbErr; - DBMessageHdr *pHeader; - ListContext *listContext = NULL; - int32 numChanged = 0; - char msgBuf[100]; - const char * msgTemplate = XP_GetString(MK_MSG_MARKREAD_COUNT); - - while (TRUE) - { - if (listContext == NULL) - dbErr = ListFirst (&listContext, &pHeader); - else - dbErr = ListNext(listContext, &pHeader); - - if (dbErr == eDBEndOfList) - { - dbErr = eSUCCESS; - ListDone(listContext); - break; - } - // this currently doesn't happen since ListNext doesn't return errors - // other than eDBEndOfList. - else if (dbErr != eSUCCESS) - break; - time_t headerDate = pHeader->GetDate(); - if (headerDate > startDate && headerDate <= endDate) - { - XP_Bool isRead; - IsRead(pHeader->GetMessageKey(), &isRead); - if (!isRead) - { - if (markedIds) - markedIds->Add(pHeader->GetMessageKey()); - MarkHdrRead(pHeader, TRUE, NULL); // ### dmb - blow off error? - if (numChanged % 10 == 0) - { - PR_snprintf (msgBuf, sizeof(msgBuf), msgTemplate, numChanged); - FE_Progress (context, msgBuf); - } - if (numChanged++ % 1000 == 0) // commit every once in a while - Commit(); - } - } - delete pHeader; - } - msgTemplate = XP_GetString(MK_MSG_DONE_MARKREAD_COUNT); - PR_snprintf (msgBuf, sizeof(msgBuf), msgTemplate, numChanged); - FE_Progress (context, msgBuf); - return dbErr; -} - -MsgERR MessageDB::MarkLater(MessageKey messageKey, time_t until) -{ - XP_ASSERT(m_dbFolderInfo); - if (m_dbFolderInfo != NULL) - { - m_dbFolderInfo->AddLaterKey(messageKey, until); - } - return eSUCCESS; -} - -void MessageDB::ClearNewList(XP_Bool notify /* = FALSE */) -{ - if (m_newSet) - { - if (notify) // need to update view - { - int32 firstMember; - while ((firstMember = m_newSet->GetFirstMember()) != 0) - { - m_newSet->Remove(firstMember); // this bites, since this will cause us to regen new list many times. - DBMessageHdr *msgHdr = GetDBHdrForKey(firstMember); - if (msgHdr != NULL) - { - NotifyKeyChangeAll(msgHdr->GetMessageKey(), msgHdr->GetFlags(), NULL); - delete msgHdr; - } - } - } - delete m_newSet; - m_newSet = NULL; - } -} - -XP_Bool MessageDB::HasNew() -{ - return m_newSet && m_newSet->getLength() > 0; -} - -MessageKey MessageDB::GetFirstNew() -{ - // even though getLength is supposedly for debugging only, it's the only - // way I can tell if the set is empty (as opposed to having a member 0. - if (HasNew()) - return m_newSet->GetFirstMember(); - else - return MSG_MESSAGEKEYNONE; -} - -MessageKey MessageDB::GetUnusedFakeId() -{ - ListContext *listContext = NULL; - DBMessageHdr *highHdr = NULL; - MessageKey fakeMsgKey = kIdStartOfFake; - - if (ListLast(&listContext, &highHdr) == eSUCCESS) - { - MessageKey curKey = highHdr->GetMessageKey(); - - while (curKey == fakeMsgKey || curKey == kIdNone || curKey == kIdPending) - { - if (curKey == fakeMsgKey) fakeMsgKey--; - delete highHdr; - highHdr = NULL; - if (ListNext(listContext, &highHdr) == eSUCCESS) - curKey = highHdr->GetMessageKey(); - else - break; - } - if (highHdr) - delete highHdr; - ListDone(listContext); - } - - return fakeMsgKey; -} - -MsgERR MessageDB::GetUnreadKeyInThread(MessageKey threadId, MessageKey *resultKey, - MessageKey *resultThreadId) -{ - MsgERR err = eSUCCESS; - DBThreadMessageHdr *threadHdr = GetDBThreadHdrForMsgID(threadId); - if (threadHdr == NULL) - { -#ifdef DEBUG_bienvenu - XP_ASSERT(FALSE); -#endif - return eID_NOT_FOUND; - } - if (threadHdr->GetNumNewChildren() > 0) - { - MessageKey startMsg = kIdNone; - int numListed; - do - { - const int listChunk = 200; - MessageKey listIDs[listChunk]; - char listFlags[listChunk]; - char listLevels[listChunk]; - - err = ListIdsInThread(threadHdr->GetThreadID(), &startMsg, listChunk, - listIDs, listFlags, listLevels, &numListed); - - // start at 1, because id 0 is the thread header itself. - for (int i = 1; i < numListed; i++) - { - if (!(listFlags[i] & kIsRead)) - { - *resultKey = listIDs[i]; - if (resultThreadId) - *resultThreadId = threadId; - break; - } - } - if (numListed < listChunk || startMsg == kIdNone) - break; - } - while (err == eSUCCESS && (*resultKey == kIdNone)); - } - delete threadHdr; - return err; -} - -MsgERR MessageDB::DeleteMessages(IDArray &messageKeys, ChangeListener *instigator) -{ - MsgERR err = eSUCCESS; - for (uint index = 0; index < messageKeys.GetSize(); index++) - { - MessageKey messageKey = messageKeys.GetAt(index); - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKey); - if (msgHdr == NULL) - { - err = eID_NOT_FOUND; - break; - } - err = DeleteHeader(msgHdr, instigator, index % 300 == 0); - delete msgHdr; - if (err != eSUCCESS) - break; - } - Commit(); - return err; -} - - -XP_Bool MessageDB::AllMessageKeysImapDeleted(const IDArray &messageKeys) -{ - XP_Bool allDeleted = TRUE; - for (uint index = 0; allDeleted && (index < messageKeys.GetSize()); index++) - { - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKeys.GetAt(index)); - allDeleted = msgHdr && ((msgHdr->GetFlags() & kIMAPdeleted) != 0); - delete msgHdr; - } - - return allDeleted; -} - -MsgERR MessageDB::DeleteMessage(MessageKey messageKey, ChangeListener *instigator, XP_Bool commit) -{ - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKey); - if (msgHdr == NULL) - return eID_NOT_FOUND; - - MsgERR ret = DeleteHeader(msgHdr, instigator, commit); - delete msgHdr; - return ret; -} - -MsgERR MessageDB::DeleteHeader(DBMessageHdr *msgHdr, ChangeListener *instigator, XP_Bool commit, XP_Bool /* onlyRemoveFromThread */) -{ - MessageKey messageKey = msgHdr->GetMessageKey(); - // only need to do this for mail - will this speed up news expiration? Is dirtying objects - // we're about to delete slow for ? But are we short circuiting some - // notifications that we need? -// if (GetMailDB()) - SetHdrFlag(msgHdr, TRUE, kExpunged); // tell mailbox (mail) - - if (m_newSet) // if it's in the new set, better get rid of it. - m_newSet->Remove(msgHdr->GetMessageKey()); - - if (m_dbFolderInfo != NULL) - { - XP_Bool isRead; - m_dbFolderInfo->ChangeNumMessages(-1); - m_dbFolderInfo->ChangeNumVisibleMessages(-1); - IsRead(msgHdr->GetMessageKey(), &isRead); - if (!isRead) - m_dbFolderInfo->ChangeNumNewMessages(-1); - - m_dbFolderInfo->m_expunged_bytes += msgHdr->GetByteLength(); -// DMB TODO m_dbFolderInfo->setDirty(); - - } - NotifyKeyChangeAll(messageKey, msgHdr->GetFlags(), instigator); // tell listeners - -// if (!onlyRemoveFromThread) // to speed up expiration, try this. But really need to do this in RemoveHeaderFromDB - RemoveHeaderFromDB(msgHdr); - if (commit) - Commit(); // ### dmb is this a good time to commit? - return eSUCCESS; -} - -MsgERR MessageDB::UndoDelete(DBMessageHdr *msgHdr) -{ - MsgERR msgErr = AddHdrToDB(msgHdr, NULL, TRUE); - // make sure message is undeleted from source mail folder. - // Need to pretend that it's deleted first to reverse it. - msgHdr->OrFlags(kExpunged); - SetHdrFlag(msgHdr, FALSE, kExpunged); - - if (m_dbFolderInfo) - { - m_dbFolderInfo->m_expunged_bytes -= msgHdr->GetByteLength(); -// DMB TODO m_dbFolderInfo->setDirty(); - } - - return msgErr; -} - -// This is a lower level routine which doesn't send notifcations or -// update folder info. One use is when a rule fires moving a header -// from one db to another, to remove it from the first db. - -void MessageDB::RemoveHeaderFromDB(DBMessageHdr *msgHdr) -{ - // DMB TODO -// if (msgHdr->fMark == 0) // msghdr is not in DB! -// return; - DBThreadMessageHdr *threadHdr = GetDBThreadHdrForMsgID(msgHdr->GetMessageKey()); - if (threadHdr != NULL) - { - threadHdr->RemoveChild(msgHdr->GetMessageKey(), m_dbHandle); - // remove empty thread object if it isn't watched or ignored - if (threadHdr->GetNumChildren() == 0 && !(threadHdr->GetFlags() & (kWatched | kIgnored))) - MSG_DBHandle_RemoveThread(m_dbHandle, threadHdr->GetHandle()); - - delete threadHdr; - } - MSG_DBHandle_RemoveHeader(m_dbHandle, msgHdr->GetHandle()); -} - -MsgERR MessageDB::MarkThreadIgnored(DBThreadMessageHdr *threadHdr, MessageKey messageKey, XP_Bool bIgnored, - ChangeListener *instigator) -{ - if (bIgnored) - { - threadHdr->OrFlags(kIgnored); - threadHdr->AndFlags(~kWatched); // ignore is implicit un-watch - } - else - threadHdr->AndFlags(~kIgnored); - NotifyKeyChangeAll(messageKey, threadHdr->GetFlags(), instigator); - return eSUCCESS; -} - -MsgERR MessageDB::MarkThreadWatched(DBThreadMessageHdr *threadHdr, MessageKey messageKey, XP_Bool bWatched, - ChangeListener *instigator) -{ - if (bWatched) - { - threadHdr->AndFlags(~kIgnored); - threadHdr->OrFlags(kWatched); - } - else - threadHdr->AndFlags(~kWatched); - NotifyKeyChangeAll(messageKey, threadHdr->GetFlags(), instigator); - return eSUCCESS; -} - -MsgERR MessageDB::IsMarked(MessageKey messageKey, XP_Bool *pMarked) -{ - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKey); - if (msgHdr != NULL) - { - *pMarked = (msgHdr->GetFlags() & kMsgMarked) != 0; - delete msgHdr; - return eSUCCESS; - } - else - { - return eID_NOT_FOUND; - } -} - - -MsgERR MessageDB::IsRead(MessageKey messageKey, XP_Bool *pRead) -{ - MsgERR err = eSUCCESS; - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKey); - if (msgHdr != NULL) - { - err = IsHeaderRead(msgHdr, pRead); - delete msgHdr; - return err; - } - else - { - return eID_NOT_FOUND; - } -} - -uint32 MessageDB::GetStatusFlags(DBMessageHdr *msgHdr) -{ - uint32 statusFlags = msgHdr->GetFlags(); - XP_Bool isRead; - - if (m_newSet && m_newSet->IsMember(msgHdr->GetMessageKey())) - statusFlags |= kNew; - if (IsRead(msgHdr->GetMessageKey(), &isRead) == eSUCCESS && isRead) - statusFlags |= kIsRead; - return statusFlags; -} - -MsgERR MessageDB::IsHeaderRead(DBMessageHdr *hdr, XP_Bool *pRead) -{ - if (!hdr) - return eID_NOT_FOUND; - - *pRead = (hdr->GetFlags() & kIsRead) != 0; - return eSUCCESS; -} - -MsgERR MessageDB::IsIgnored(MessageKey messageKey, XP_Bool *pIgnored) -{ - XP_ASSERT(pIgnored != NULL); - if (!pIgnored) - return eBAD_PARAMETER; - - DBThreadMessageHdr *threadHdr = GetDBThreadHdrForMsgID(messageKey); - // This should be very surprising, but we leave that up to the caller - // to determine for now. - if (threadHdr == NULL) - return eID_NOT_FOUND; - *pIgnored = (threadHdr->GetFlags() & kIgnored) ? TRUE : FALSE; - delete threadHdr; - return eSUCCESS; -} - -MsgERR MessageDB::HasAttachments(MessageKey messageKey, XP_Bool *pHasThem) -{ - XP_ASSERT(pHasThem != NULL); - if (!pHasThem) - return eBAD_PARAMETER; - - DBThreadMessageHdr *threadHdr = GetDBThreadHdrForMsgID(messageKey); - // This should be very surprising, but we leave that up to the caller - // to determine for now. - if (threadHdr == NULL) - return eID_NOT_FOUND; - *pHasThem = (threadHdr->GetFlags() & kHasAttachment) ? TRUE : FALSE; - delete threadHdr; - return eSUCCESS; -} - - -// This function goes through the list of latered documents and marks them -// unread if the current date/time is > than the latered "until" setting. -// Since that is currently always 0, this routine should mark everything -// in the latered list unread. -void MessageDB::HandleLatered() -{ - time_t curTime = XP_TIME(); - - if (!m_dbFolderInfo) - return; - - for (int32 laterIndex = 0; laterIndex < m_dbFolderInfo->GetNumLatered(); ) - { - time_t until; - - MessageKey laterKey = m_dbFolderInfo->GetLateredAt(laterIndex, &until); - if (curTime > until) - { - MarkRead(laterKey, FALSE, NULL); - m_dbFolderInfo->RemoveLateredAt(laterIndex); - } - else - { - laterIndex++; - } - } -} - -void MessageDB::SetSortInfo(SortType sortType, SortOrder sortOrder) -{ - if (m_dbFolderInfo) - m_dbFolderInfo->SetSortInfo(sortType, sortOrder); -} - -MsgERR MessageDB::GetSortInfo(SortType *pSortType, SortOrder *pSortOrder) -{ - if (!(pSortType && pSortOrder && m_dbFolderInfo)) - { - XP_ASSERT(FALSE); - return eBAD_PARAMETER; - } - m_dbFolderInfo->GetSortInfo(pSortType, pSortOrder); - return eSUCCESS; -} -// Get a handle for a document given its message number. Because a subclass -// of MsgDocument may be returned, we need to return a pointer to an allocated object. - -// For some reason, the UI has decided to force a purge of the database. -MsgERR MessageDB::Purge() -{ - FinishAddingHeaders(); // this will add m_newHeaders to the db - return eSUCCESS; -} - -//----------------------------------------------------------------------------- -// EnableCache -//----------------------------------------------------------------------------- -XP_Bool MessageDB::EnableCache(XP_Bool enable) -{ - XP_Bool oldVal = m_cacheEnabled; - m_cacheEnabled = enable; - return(oldVal); -} - - -//---------------------------------------------------------------------- -// FindInCache -//---------------------------------------------------------------------- -MessageDB* MessageDB::FindInCache(const char * pDbName) -{ - for (int i = 0; i < GetDBCache()->GetSize(); i++) - { - MessageDB* pMessageDB = GetDBCache()->GetAt(i); - if (pMessageDB->MatchDbName(pDbName)) - { - return(pMessageDB); - } - } - return(NULL); -} - -//---------------------------------------------------------------------- -// FindInCache -//---------------------------------------------------------------------- -int MessageDB::FindInCache(MessageDB* pMessageDB) -{ - for (int i = 0; i < GetDBCache()->GetSize(); i++) - { - if (GetDBCache()->GetAt(i) == pMessageDB) - { - return(i); - } - } - return(-1); -} - -//---------------------------------------------------------------------- -// RemoveFromCache -//---------------------------------------------------------------------- -void MessageDB::RemoveFromCache(MessageDB* pMessageDB) -{ - int i = FindInCache(pMessageDB); - if (i != -1) - { - GetDBCache()->RemoveAt(i); - } -} - - -#ifdef DEBUG -void MessageDB::DumpCache() -{ - for (int i = 0; i < GetDBCache()->GetSize(); i++) - { -#ifdef DEBUG_bienvenu - MessageDB* pMessageDB = -#endif - GetDBCache()->GetAt(i); -#ifdef DEBUG_bienvenu - XP_Trace("db %s in cache use count = %d\n", pMessageDB->m_dbName, pMessageDB->m_useCount); -#endif - } -} -#endif - -XP_Bool MessageDB::MatchDbName(const char * dbName) // returns TRUE if they match -{ - XP_ASSERT(m_dbName); - return !XP_FILENAMECMP(dbName, m_dbName); -} - -MsgERR MessageDB::FinishAddingHeaders() -{ - MsgERR err = eSUCCESS; - XP_Bool isNewThread; - - // go through the new headers adding them to the db - // The idea here is that m_headers is just the new headers - for (int i = 0; i < m_newHeaders.GetSize(); i++) - { - - DBMessageHdr *dbMsgHdr = (DBMessageHdr *) m_newHeaders[i]; - err = AddHdrToDB(dbMsgHdr, &isNewThread); - delete dbMsgHdr; - } - m_headerIndex = 0; - m_newHeaders.RemoveAll(); - return err; - -// m_headerIndex = 0; -// return eSUCCESS; -} - -DBThreadMessageHdr *MessageDB::GetDBThreadHdrForSubject(DBMessageHdr *msgHdr) -{ - MSG_ThreadHandle threadHandle = MSG_DBHandle_GetThreadHandleForMsgHdrSubject(m_dbHandle, msgHdr->GetHandle()); - return GetThreadHeaderFromHandle(threadHandle); -} - -// This functions takes a string message id and returns the -// corresponding message hdr -DBThreadMessageHdr *MessageDB::GetDBMsgHdrForReference(const char * msgID) -{ - DBMessageHdr *headerObject = GetDBMessageHdrForID(msgID); - DBThreadMessageHdr *thread = NULL; - - if (headerObject != NULL) - { - // find thread header for header whose message id we matched. - thread = GetDBThreadHdrForMsgID(headerObject->GetMessageKey()); - delete headerObject; - } - return thread; -} - -// make the passed in header a thread header -MsgERR MessageDB::AddThread(DBMessageHdr *msgHdr) -{ - //TRACE("entering AddThread\n"); - MSG_ThreadHandle threadHandle = MSG_DBHandle_AddThreadFromMsgHandle(m_dbHandle, msgHdr->GetHandle()); - DBThreadMessageHdr *threadHdr = new DBThreadMessageHdr(threadHandle); - AddToThread(msgHdr, threadHdr, FALSE); - - XP_ASSERT(threadHdr->GetThreadID() == msgHdr->GetThreadId()); - - delete threadHdr; - // If this header has references, we might want to create an expired - // header for this thread, instead of promoting this header to thread status. - // In particular, the real thread header might arrive later, in which case - // we would just turn off the expired bit on the dummy. Of course, it - // could be anyone of the parents, and is more likely to be an immediate ancestor... - // which would argue for making the message-id be the last reference, not the first. - // But for now, just make it a top-level thread - we can always rearrange things - // if a better top-level thread header comes in. Or if we decide to have a dummy - // header... -// AddHdr(msgHdr); - //TRACE("adding thread %s\n", (const char *) dummyHdr->m_subject); - -#ifdef _DEBUG1 // check that we can pull it out of the database. - DBThreadMessageHdr *newHdr; - newHdr = GetDBMsgHdrForReference(dummyHdr->m_messageId); - ASSERT(newHdr != NULL); - delete newHdr; -#endif - //TRACE("leaving AddThread\n"); - return eSUCCESS; -} - -// really add it to DB. -MsgERR MessageDB::AddHdr(DBMessageHdr *hdr) -{ - // TODO - need to do exception handling. - MSG_DBHandle_AddHeader(m_dbHandle, hdr->GetHandle()); - - return eSUCCESS; -} - -void MessageDB::AddToNewList(MessageKey key) -{ - if (m_newSet == NULL) - m_newSet = msg_NewsArtSet::Create(); - if (m_newSet) - m_newSet->Add(key); -} - - -// add a header to the database, and thread it. -// For now, it's OK if newThread or resultHdr are NULL -MsgERR MessageDB::AddHdrToDB(DBMessageHdr *newHdr, XP_Bool *newThread, - XP_Bool notify /* = FALSE */) -{ - MsgERR err = eSUCCESS; - DBThreadMessageHdr *refHdr = NULL; - - if (m_addCount >= m_commitChunk) - { - Commit(); - m_addCount = 0; - } - - if (newHdr == NULL) - return err; - -#define SUBJ_THREADING 1// try reference threading first - for (int32 i = 0; i < newHdr->GetNumReferences(); i++) - { - MSG_ThreadHandle refHdrThreadHandle = MSG_HeaderHandle_GetThreadForReference(newHdr->GetHandle(), i, m_dbHandle); - if (refHdrThreadHandle) - { - refHdr = GetThreadHeaderFromHandle(refHdrThreadHandle); - if (refHdr) - { - newHdr->SetThreadId(refHdr->GetThreadID()); - err = AddToThread(newHdr, refHdr, TRUE); - } - break; - } - } -#ifdef SUBJ_THREADING - // try subject threading if we couldn't find a reference and the subject starts with Re: - if ((newHdr->GetFlags() & kHasRe) && refHdr == NULL && (refHdr = GetDBThreadHdrForSubject(newHdr)) != NULL) - { - newHdr->SetThreadId(refHdr->GetThreadID()); - //TRACE("threading based on subject %s\n", (const char *) msgHdr->m_subject); -// AddHdr(newHdr); - // if we move this and do subject threading after, ref threading, - // don't thread within children, since we know it won't work. But for now, pass TRUE. - err = AddToThread(newHdr, refHdr, TRUE); - } -#endif // SUBJ_THREADING - - XP_ASSERT( newHdr != NULL); - if (refHdr == NULL) - { - // couldn't find any parent articles - msgHdr is top-level thread, for now - err = AddThread(newHdr); - if (newThread) - *newThread = TRUE; - } - else - { - if (newThread) - *newThread = FALSE; - } - delete refHdr; - - // update - if (err == eSUCCESS) - { - if ((newHdr->GetFlags() & kNew)) - { - newHdr->AndFlags(~kNew); // make sure not filed out - AddToNewList(newHdr->GetMessageKey()); - } - if (m_dbFolderInfo != NULL) - { - m_dbFolderInfo->ChangeNumMessages(1); - m_dbFolderInfo->ChangeNumVisibleMessages(1); - if (! (newHdr->GetFlags() & kIsRead)) - m_dbFolderInfo->ChangeNumNewMessages(1); -// dmb todo m_dbFolderInfo->setDirty(); - } - if (notify) - NotifyKeyChangeAll(newHdr->GetMessageKey(), newHdr->GetFlags() | kAdded, NULL); - } - m_addCount++; - return err; -} - -MsgERR MessageDB::AddToThread(DBMessageHdr *reply, DBThreadMessageHdr *threadHdr, XP_Bool threadInThread) -{ - reply->SetLevel(0); // for now, until we get threading within a thread. - reply->SetThreadId(threadHdr->GetThreadID()); - // determine where to add to thread. - threadHdr->AddChild(reply, this, threadInThread); - return eSUCCESS; -} - - -// Get the header for the passed in message-id. Could return a DBMailMessageHdr -// because we do a deep find. Caller must RemoveReference DBMessageHdr when done with it. -DBMessageHdr *MessageDB::GetDBMessageHdrForID(const char * msgID) -{ - DBMessageHdr *headerObject = NULL; - MSG_HeaderHandle headerHandle = MSG_DBHandle_GetHandleForMessageID(m_dbHandle, msgID); - if (headerHandle) - GetHeaderFromHandle(headerHandle, &headerObject); - return headerObject; -} - -MessageKey MessageDB::GetMessageKeyForID(const char *msgID) -{ - MessageKey retKey = kIdNone; - DBMessageHdr *msgHdr = GetDBMessageHdrForID(msgID); - if (msgHdr) - { - retKey = msgHdr->GetMessageKey(); - delete msgHdr; - } - return retKey; -} - -// caller needs to RemoveReference when finished. -DBThreadMessageHdr *MessageDB::GetDBThreadHdrForThreadID(MessageKey messageKey) -{ - MSG_ThreadHandle threadHandle = MSG_DBHandle_GetThreadHeaderForThreadID(m_dbHandle, messageKey); - return GetThreadHeaderFromHandle(threadHandle); -} - -DBThreadMessageHdr *MessageDB::GetDBThreadHdrForMsgHdr(DBMessageHdr *msgHdr) -{ - DBThreadMessageHdr *threadHdr = GetDBThreadHdrForThreadID(msgHdr->GetThreadId()); - return threadHdr; -} - -// Given the id of a message, find the thread header for the message's thread -// Returns NULL if we can't find the message hdr, or its thread. -// Caller needs to RemoveReference thread header -DBThreadMessageHdr *MessageDB::GetDBThreadHdrForMsgID(MessageKey messageKey) -{ - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKey); - if (msgHdr == NULL) - return NULL; - DBThreadMessageHdr *threadHdr = GetDBThreadHdrForMsgHdr(msgHdr); - - delete msgHdr; - return threadHdr; -} - -// Given a MessageKey, return the threadId of its thread, or kIdNone -// if we can't find the given MessageKey. -MessageKey MessageDB::GetThreadIdForMsgId(MessageKey messageKey) -{ - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKey); - if (msgHdr != NULL) - { - MessageKey threadId = msgHdr->GetThreadId(); - delete msgHdr; - return threadId; - } - else - { - return kIdNone; - } -} - -// caller needs to delete when finished. -DBMessageHdr *MessageDB::GetDBHdrForKey(MessageKey messageKey) -{ - MSG_DBHandle dbHandle = MSG_DBHandle_GetHandleForKey(m_dbHandle, messageKey); - DBMessageHdr *headerObject = NULL; - - if (dbHandle) - headerObject = new DBMessageHdr(dbHandle); - - return headerObject; -} - -// Test if the key we're about to add already exists (in which case -// the caller shouldn't add. This can happen in news for various reasons -// and should be handled). -XP_Bool MessageDB::KeyToAddExists(MessageKey messageKey) -{ - // this relies on GetMessageHdr not touching msgHdr if it doesn't find key in db - DBMessageHdr *msgHdr = GetDBHdrForKey(messageKey); - if (msgHdr != NULL) - { - // this handles the bizarre case of the the db having all the - // headers but not having the highwater mark set, in which - // case it will always retrieve all headers. - if (m_dbFolderInfo != NULL) - m_dbFolderInfo->SetHighWater(messageKey); - delete msgHdr; - return TRUE; - } - return FALSE; -} - -///////////////////// MessageHdrStruct methods -void MessageHdrStruct::SetSubject(const char * subject) -{ - if (msg_StripRE(&subject, NULL)) - { - m_flags |= kHasRe; - } - else - { - m_flags &= ~kHasRe; - } - XP_STRNCPY_SAFE(m_subject, subject, sizeof(m_subject)); -} - -void MessageHdrStruct::SetAuthor(const char * author) -{ - XP_STRNCPY_SAFE(m_author, author, sizeof(m_author)); -} - -// Set message id, stripping off leading '<' and trailing '>', if any -void MessageHdrStruct::SetMessageID(const char * msgID) -{ - if (msgID) - StripMessageId(msgID, m_messageId, sizeof(m_messageId)); -} - -/* static */void MessageHdrStruct::StripMessageId(const char *msgID, char *outMsgId, int msgIdLen) -{ - if (*msgID == '<') - msgID++; - XP_STRNCPY_SAFE(outMsgId, msgID, msgIdLen); - char * lastChar = outMsgId + strlen(outMsgId) -1; - if (*lastChar == '>') - *lastChar = '\0'; -} - -void MessageHdrStruct::SetReferences(const char * referencesStr) -{ - if (referencesStr) - XP_STRNCPY_SAFE(m_references, referencesStr, sizeof(m_references)); -} - -void MessageHdrStruct::SetDate(const char * date) -{ - m_date = XP_ParseTimeString (date, FALSE); -} -void MessageHdrStruct::SetLines(uint32 lines) -{ - m_messageSize = lines; -} - -void MessageHdrStruct::SetSize(uint32 size) -{ - m_messageSize = size; -} - -// get the next <> delimited reference from nextRef and copy it into reference, -// which is a pointer to a buffer at least kMaxMsgIdLen long. -const char * MessageHdrStruct::GetReference(const char *nextRef, char *reference) -{ - const char *ptr = nextRef; - - while ((*ptr == '<' || *ptr == ' ') && *ptr) - ptr++; - - for (int i = 0; *ptr && *ptr != '>' && i < kMaxMsgIdLen; i++) - *reference++ = *ptr++; - - if (*ptr == '>') - ptr++; - *reference = '\0'; - return ptr; -} - -// Copy the corresponding fields from a full message header into a short message hdr. -void MessageDB::CopyFullHdrToShortHdr(MSG_MessageLine *msgHdr, MessageHdrStruct *fullHdr) -{ - msgHdr->threadId = fullHdr->m_threadId; - msgHdr->messageKey = fullHdr->m_messageKey; //for threads, same as threadId - XP_STRNCPY_SAFE(msgHdr->subject, fullHdr->m_subject, sizeof(msgHdr->subject)); - XP_STRNCPY_SAFE(msgHdr->author, fullHdr->m_author, sizeof(msgHdr->author)); - msgHdr->date = fullHdr->m_date; - msgHdr->messageLines = fullHdr->m_messageSize; // lines for news articles, - // bytes for mail messages - // ###tw Is the above true - // yet? - msgHdr->priority = fullHdr->m_priority; - msgHdr->flags = fullHdr->m_flags; - msgHdr->level = fullHdr->m_level; // indentation level - msgHdr->numChildren = fullHdr->m_numChildren; // for top-level threads - msgHdr->numNewChildren = fullHdr->m_numNewChildren; // for top-level threads -} - -// static helper functions to convert between kFlags and MSG_FLAG_* -void MessageDB::ConvertDBFlagsToPublicFlags(uint32 *flags) -{ - uint32 publicFlags = 0; - publicFlags = (kSameAsMSG_FLAG & *flags); - if (*flags & kExpunged) // is this needed? - publicFlags |= MSG_FLAG_EXPUNGED; - if (*flags & kHasRe) - publicFlags |= MSG_FLAG_HAS_RE; - if (*flags & kIgnored) - publicFlags |= MSG_FLAG_IGNORED; - if (*flags & kPartial) - publicFlags |= MSG_FLAG_PARTIAL; - if (*flags & kMDNNeeded) - publicFlags |= MSG_FLAG_MDN_REPORT_NEEDED; - if (*flags & kMDNSent) - publicFlags |= MSG_FLAG_MDN_REPORT_SENT; - if (*flags & kTemplate) - publicFlags |= MSG_FLAG_TEMPLATE; - *flags = publicFlags; -} - -void MessageDB::ConvertPublicFlagsToDBFlags(uint32 *flags) -{ - uint32 dbFlags = 0; - dbFlags = (kSameAsMSG_FLAG & *flags); - if (*flags & MSG_FLAG_EXPUNGED) // is this needed? - dbFlags |= kExpunged ; - if (*flags & MSG_FLAG_HAS_RE) - dbFlags |= kHasRe ; - if (*flags & MSG_FLAG_IGNORED) - dbFlags |= kIgnored; - if (*flags & MSG_FLAG_PARTIAL) - dbFlags |= kPartial; - if (*flags & MSG_FLAG_MDN_REPORT_NEEDED) - dbFlags |= kMDNNeeded; - if (*flags & MSG_FLAG_MDN_REPORT_SENT) - dbFlags |= kMDNSent; - if (*flags & MSG_FLAG_TEMPLATE) - dbFlags |= kTemplate; - *flags = dbFlags; -} -ViewType MessageDB::GetViewType() -{ - ViewType retViewType = ViewAllThreads; - if (m_dbFolderInfo) - { - retViewType = (ViewType) m_dbFolderInfo->GetViewType(); - if (retViewType == ViewKilledThreads) - { - retViewType = ViewAllThreads; - m_dbFolderInfo->SetFlags(m_dbFolderInfo->GetFlags() | MSG_FOLDER_PREF_SHOWIGNORED); - } - } - return retViewType; -} - -void MessageDB::SetViewType(ViewType viewType) -{ - if (m_dbFolderInfo) - m_dbFolderInfo->SetViewType(viewType); - else - XP_ASSERT(FALSE); -} - -MsgERR MessageDB::GetCachedPassword(XPStringObj &cachedPassword) -{ - m_dbFolderInfo->GetCachedPassword(cachedPassword, m_dbHandle); - return eSUCCESS; -} - -MsgERR MessageDB::SetCachedPassword(const char *password) -{ - m_dbFolderInfo->SetCachedPassword(password, m_dbHandle); - return eSUCCESS; -} - -XP_Bool MessageDB::HasCachedPassword() -{ - XPStringObj password; - m_dbFolderInfo->GetCachedPassword(password, m_dbHandle); - return (XP_STRLEN(password) > 0); -} - diff --git a/mozilla/lib/libmsg/msgdb.h b/mozilla/lib/libmsg/msgdb.h deleted file mode 100644 index bb549078df4..00000000000 --- a/mozilla/lib/libmsg/msgdb.h +++ /dev/null @@ -1,382 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgDB_H_ -#define _MsgDB_H_ - -#include "msgcom.h" -#include "ptrarray.h" -#include "dberror.h" -#include "chngntfy.h" -#include "msgdbtyp.h" - -class MessageDB; -class MsgDocument; -class DBFolderInfo; -class MailDB; -class NewsGroupDB; -class XPByteArray; -class msg_NewsArtSet; -class XPStringObj; - -const int kMaxSubject = 160; -const int kMaxAuthor = 160; -const int kMaxRecipient = 80; -const int kMaxMsgIdLen = 80; -const int kMaxReferenceLen = 10 * kMaxMsgIdLen; - -const MessageKey kIdNone = 0xffffffff; -const MessageKey kIdPending = 0xfffffffe; -const MessageKey kIdStartOfFake = 0xffffff80; // start of the fake message id - -#include "idarray.h" // need MessageKey to be defined before including... - -struct ListContext -{ - MessageDB *m_pMessageDB; - int m_curMessageNum; - MSG_IteratorHandle m_iterator; -}; - -struct MessageHdrStruct -{ - MessageKey m_threadId; - MessageKey m_messageKey; - char m_subject[kMaxSubject]; - char m_author[kMaxAuthor]; - char m_messageId[kMaxMsgIdLen]; - char m_references[kMaxReferenceLen]; - char m_recipients[kMaxRecipient]; - time_t m_date; - uint32 m_messageSize; // lines for news articles, bytes for mail messages - uint32 m_flags; - uint16 m_numChildren; // for top-level threads - uint16 m_numNewChildren; // for top-level threads - char m_level; // indentation level - MSG_PRIORITY m_priority; -public: - void SetSubject(const char * subject); - void SetAuthor(const char * author); - void SetMessageID(const char * msgID); - void SetReferences(const char * referencesStr); - void SetDate(const char * date); - void SetLines(uint32 lines); - void SetSize(uint32 size); - const char *GetReference(const char *nextRef, char *reference); - static void StripMessageId(const char *msgID, char *outMsgId, int msgIdLen); -}; - -typedef int32 MsgFlags; // try to keep flags view is going to care about - // in the first byte, so we can copy the flags over directly - -const int32 kIsRead = 0x1; // same as MSG_FLAG_READ -const int32 kReplied = 0x2; // same as MSG_FLAG_REPLIED -const int32 kMsgMarked = 0x4; // same as MSG_FLAG_MARKED - (kMarked collides with IMAP) -const int32 kHasChildren = 0x8; // no equivalent (shares space with FLAG_EXPUNGED) -const int32 kIsThread = 0x10; // !!shares space with MSG_FLAG_HAS_RE -const int32 kElided = 0x20; // same as MSG_FLAG_ELIDED -const int32 kExpired = 0x40; // same as MSG_FLAG_EXPIRED -const int32 kOffline = 0x80; // this message has been downloaded -const int32 kWatched = 0x100; -const int32 kSenderAuthed = 0x200; // same as MSG_FLAG_SENDER_AUTHED -const int32 kExpunged = 0x400; // NOT same value as MSG_FLAG_EXPUNGED -const int32 kHasRe = 0x800; // Not same values as MSG_FLAG_HAS_RE -const int32 kForwarded = 0x1000; // this message has been forward (mail only) -const int32 kIgnored = 0x2000; // this message is ignored - -const int32 kMDNNeeded = 0x4000; // this message needs MDN report -const int32 kMDNSent = 0x8000; // MDN report has been Sent - -const int32 kNew = 0x10000; // used for status, never stored in db. -const int32 kAdded = 0x20000; // Just added to db - used in - // notifications, never set in msgHdr. - -const int32 kTemplate = 0x40000; // this message is a template - -const int32 kDirty = 0x80000; -const int32 kPartial = 0x100000; // NOT same value as MSG_FLAG_PARTIAL -const int32 kIMAPdeleted = 0x200000; // same value as MSG_FLAG_IMAP_DELETED -const int32 kHasAttachment = 0x10000000; // message has attachments - -const int32 kSameAsMSG_FLAG = kHasAttachment|kIsRead|kMsgMarked|kExpired|kElided|kSenderAuthed|kReplied|kOffline|kForwarded|kWatched|kIMAPdeleted; -const int32 kMozillaSameAsMSG_FLAG = kIsRead|kMsgMarked|kExpired|kElided|kSenderAuthed|kReplied|kOffline|kForwarded|kWatched|kIMAPdeleted; -const int32 kExtraFlags = 0xFF; - - -class MessageDBArray : public XPPtrArray -{ -public: - MessageDBArray(); - - // overrides with proper types to avoid casting - MessageDB* GetAt(int nIndex) const {return((MessageDB*)XPPtrArray::GetAt(nIndex));} - void* operator[](int nIndex) const {return((MessageDB*)XPPtrArray::operator[](nIndex));} -}; - - -#include "msghdr.h" - -class DBThreadMessageHdr; -class DBMessageHdr; - -typedef XP_Bool -HdrCompareFunc (DBMessageHdr *hdr); - -// the DB doing threading, partly because we want it to be persistent, -// to avoid rethreading everytime a group is opened. -class MessageDB : public ChangeAnnouncer -{ - friend class MessageDBView; - friend class DBThreadMessageHdr; -public: - MessageDB(); - virtual ~MessageDB(); - virtual MsgERR OpenDB(const char *dbFileName, XP_Bool create); - virtual MsgERR MessageDBOpen(const char * dbName, XP_Bool create); - - virtual MsgERR Close(); - virtual MsgERR ForceClosed(); - virtual MsgERR CloseDB(); - virtual MsgERR OnNewPath (const char * /*path*/) ; - static MsgERR RenameDB(const char *sourceName, const char *destName); - virtual MsgERR SetSummaryValid(XP_Bool valid = TRUE); - - virtual MsgERR Commit(XP_Bool compress = FALSE); - - virtual MsgERR GetMessageHdr(MessageKey messageNum, MessageHdrStruct *); - virtual MsgERR GetShortMessageHdr(MessageKey messageNum, MSG_MessageLine *msgHdr); - - virtual XP_Bool KeyToAddExists(MessageKey messageKey); - - virtual MsgERR AddHeaderToArray(DBMessageHdr *header); - virtual MsgERR AddHdr(DBMessageHdr *hdr); - virtual MsgERR AddHdrToDB(DBMessageHdr *newHdr, XP_Bool *newThread, - XP_Bool notify = FALSE); - virtual MsgERR AddThread(DBMessageHdr *msgHdr); - virtual DBThreadMessageHdr *GetDBThreadHdrForSubject(DBMessageHdr *msgHdr); - virtual DBThreadMessageHdr *GetDBMsgHdrForReference(const char * msgID); - virtual DBMessageHdr * GetDBMessageHdrForID(const char * msgID); - virtual MsgERR GetHeaderFromHandle(MSG_HeaderHandle headerHandle, DBMessageHdr **pResult); - DBThreadMessageHdr *GetThreadHeaderFromHandle(MSG_ThreadHandle handle); - - virtual MessageKey GetMessageKeyForID(const char *msgID); - virtual DBThreadMessageHdr *GetDBThreadHdrForMsgID(MessageKey messageKey); - virtual MessageKey GetThreadIdForMsgId(MessageKey messageKey); - virtual MsgERR AddToThread(DBMessageHdr *reply, DBThreadMessageHdr *threadHdr, XP_Bool threadInThread); - // we've finished receiving new headers - clean up any temporary info. - virtual MsgERR FinishAddingHeaders(); - // given an array of thread ids, return list header information for each thread - MsgERR ListHeaders(MessageKey *pMessageNums, int numToList, MessageHdrStruct *pOutput, int *pNumListed); - MsgERR ListHeadersShort(MessageKey *pMessageNums, int numToList, MSG_MessageLine *pOutput, int *pNumListed); - // list the headers of the top-level thread ids - virtual MsgERR ListThreadIds(MessageKey *startMsg, XP_Bool unreadOnly, MessageKey *pOutput, int32 *pFlags, - char *pLevels, int numToList, int *numListed, MessageDBView *view, int32 *pTotalHeaders); - virtual MsgERR ListThreadIds(ListContext *context, MessageKey *pOutput, int numToList, int *numListed); - // Info about a given thread - virtual MsgERR GetThreadCount(MessageKey messageKey, int32 *pThreadCount); - virtual MsgERR GetThreadCount(DBThreadMessageHdr *threadHdr, int32 *pThreadCount); - virtual MsgERR GetDBThreadListContext(MessageKey threadId, MessageKey startMsg, DBThreadMessageHdr **pThreadHdr, uint16 *pThreadIndex); - virtual MsgERR GetDBThreadListContext(DBMessageHdr *msgHdr, MessageKey startMsg, DBThreadMessageHdr **pThreadHdr, uint16 *pThreadIndex); - virtual DBThreadMessageHdr * GetDBThreadHdrForThreadID(MessageKey messageID); - virtual DBMessageHdr *GetDBHdrForKey(MessageKey messageKey); - virtual DBThreadMessageHdr *GetDBThreadHdrForMsgHdr(DBMessageHdr *msgHdr); - virtual MessageKey GetKeyOfFirstMsgInThread(MessageKey key); - -// return a flat list of ids (no threading) - MsgERR ListAllIds(IDArray &outputIds); - MsgERR ListAllIds(IDArray *outputIds); - // iterate through message headers, in no particular order (currently, id order). - // Caller must unrefer return DBMessageHdr when done with it. - // eDBEndOfList will be returned when return DBMessageHdr * is NULL. - // Caller must call ListDone to free up the context. - // ListLast will produce a reverse iterator that starts at the end and moves towards the start - MsgERR ListFirst(ListContext **pContext, DBMessageHdr **pResult); - MsgERR ListLast(ListContext **pContext, DBMessageHdr **pResult); - MsgERR ListNext(ListContext *pContext, DBMessageHdr **pResult); - MsgERR ListDone(ListContext *pContext); - - MessageKey ListHighwaterMark(); // returns the biggest key, kIdNone if none found. - // return the list header information for the documents in a thread. - virtual MsgERR ListIdsInThread(MessageKey threadId, MessageKey *startMsg, int numToList, MessageKey *pOutput, char *pFlags, char *pLevels, int *pNumListed); - virtual MsgERR ListIdsInThread(DBMessageHdr *msgHdr, MessageKey *startMsg, int numToList, MessageKey *pOutput, char *pFlags, char *pLevels, int *pNumListed); - virtual MsgERR ListIdsInThread(DBThreadMessageHdr *threadHdr, uint16 threadIndex, MessageKey *startMsg, int numToList, MessageKey *pOutput, char *pFlags, char *pLevels, int *pNumListed); - virtual MsgERR ListUnreadIdsInThread(MessageKey threadId, MessageKey *startMsg, XPByteArray &levelStack, int numToList, MessageKey *pOutput, char *pFlags, char *pLevels, int *pNumListed); - virtual MsgERR ListNextUnread(ListContext **pContext, DBMessageHdr **pResult); - - static XP_Bool MatchFlaggedNotOffline(DBMessageHdr *hdr); - virtual void ListMatchingKeys(HdrCompareFunc *compareFunc, IDArray &matchingKeys); - MsgERR Purge(); - - // MDN support - virtual MsgERR MarkMDNNeeded(MessageKey messageKey, XP_Bool bNeeded, - ChangeListener *instigator = NULL); - // MarkMDNneeded only used when mail server is a POP3 server - // or when the IMAP server does not support user defined - // PERMANENTFLAGS - virtual MsgERR IsMDNNeeded(MessageKey messageKey, XP_Bool *isNeeded); - - virtual MsgERR MarkMDNSent(MessageKey messageKey, XP_Bool bNeeded, - ChangeListener *instigator = NULL); - virtual MsgERR IsMDNSent(MessageKey messageKey, XP_Bool *isSent); - -// methods to get and set docsets for ids. - virtual MsgERR MarkRead(MessageKey messageKey, XP_Bool bRead, - ChangeListener *instigator = NULL); - - virtual MsgERR MarkReplied(MessageKey messageKey, XP_Bool bReplied, - ChangeListener *instigator = NULL); - - virtual MsgERR MarkForwarded(MessageKey messageKey, XP_Bool bForwarded, - ChangeListener *instigator = NULL); - - virtual MsgERR MarkHasAttachments(MessageKey messageKey, XP_Bool bHasAttachments, - ChangeListener *instigator = NULL); - - virtual MsgERR MarkThreadIgnored(DBThreadMessageHdr *thread, MessageKey threadKey, XP_Bool bIgnored, - ChangeListener *instigator = NULL); - virtual MsgERR MarkThreadWatched(DBThreadMessageHdr *thread, MessageKey threadKey, XP_Bool bWatched, - ChangeListener *instigator = NULL); - virtual MsgERR IsRead(MessageKey messageKey, XP_Bool *pRead); - virtual MsgERR IsIgnored(MessageKey messageKey, XP_Bool *pIgnored); - virtual MsgERR IsMarked(MessageKey messageKey, XP_Bool *pMarked); - virtual MsgERR HasAttachments(MessageKey messageKey, XP_Bool *pHasThem); - virtual MsgERR DeleteMessages(IDArray &messageKeys, ChangeListener *instigator); - virtual MsgERR DeleteMessage(MessageKey messageKey, - ChangeListener *instigator = NULL, - XP_Bool commit = TRUE); - virtual MsgERR DeleteHeader(DBMessageHdr *msgHdr, ChangeListener *instigator, XP_Bool commit, XP_Bool onlyRemoveFromThread = FALSE); - virtual MsgERR UndoDelete(DBMessageHdr *msgHdr); - virtual MsgERR MarkLater(MessageKey messageKey, time_t until); - virtual MsgERR MarkMarked(MessageKey messageKey, XP_Bool mark, - ChangeListener *instigator = NULL); - virtual MsgERR MarkOffline(MessageKey messageKey, XP_Bool offline, - ChangeListener *instigator); - virtual XP_Bool AllMessageKeysImapDeleted(const IDArray &keys); - virtual MsgERR MarkImapDeleted(MessageKey messageKey, XP_Bool deleted, - ChangeListener *instigator); - - virtual void RemoveHeaderFromDB(DBMessageHdr *msgHdr); - - virtual MsgERR GetUnreadKeyInThread(MessageKey threadId, - MessageKey *resultKey, - MessageKey *resultThreadId); - - virtual MsgERR MarkReadByDate (time_t startDate, time_t endDate, MWContext *context, IDArray *markedIds); - virtual MsgERR MarkAllRead(MWContext *context, IDArray *thoseMarked = NULL); - virtual XP_Bool SetPriority(MessageKey messageKey, MSG_PRIORITY priority); - virtual XP_Bool SetPriority(DBMessageHdr *msgHdr, MSG_PRIORITY priority); - - void SetSortInfo(SortType, SortOrder); - MsgERR GetSortInfo(SortType *, SortOrder *); - - virtual void HandleLatered(); // mark latered documents unread - - // methods to handle new message support - MessageKey GetFirstNew(); - void AddToNewList(MessageKey key); - XP_Bool HasNew(); - void ClearNewList(XP_Bool notify = FALSE); - - MessageKey GetUnusedFakeId(); - - DBFolderInfo *m_dbFolderInfo; - MSG_DBHandle GetDB() {return m_dbHandle;} - - // typesafe downcasts for db's - virtual MailDB *GetMailDB(); // returns NULL if not a mail db - virtual NewsGroupDB *GetNewsDB(); // returns NULL if not a news db - - virtual MSG_FolderInfo *GetFolderInfo(); - void SetFolderInfo(MSG_FolderInfo *info) {m_folderInfo = info;} - - virtual int GetCurVersion() {return 0;} - DBFolderInfo *GetDBFolderInfo() {return m_dbFolderInfo;} - int AddUseCount() {return ++m_useCount;} - - static void ConvertDBFlagsToPublicFlags(uint32 *flags); - static void ConvertPublicFlagsToDBFlags(uint32 *flags); - - static MessageDB* FindInCache(const char * pDBName); - static void CopyFullHdrToShortHdr(MSG_MessageLine *msgHdr, - MessageHdrStruct *fullHdr); - static void CleanupCache(); -#ifdef DEBUG - static int GetNumInCache(void) {return(GetDBCache()->GetSize());} - static void DumpCache(); -#endif - ViewType GetViewType(); - void SetViewType(ViewType viewType); - uint32 GetStatusFlags(DBMessageHdr *msgHdr); -#ifdef DEBUG_bienvenu - void Verify(); -#endif - virtual MsgERR MarkHdrRead(DBMessageHdr *msgHdr, XP_Bool bRead, - ChangeListener *instigator); - - virtual MsgERR GetCachedPassword(XPStringObj &cachedPassword); - virtual MsgERR SetCachedPassword(const char *password); - virtual XP_Bool HasCachedPassword(); -protected: - virtual MsgERR SetKeyFlag(MessageKey messageKey, XP_Bool set, int32 flag, - ChangeListener *instigator /* = NULL */); - virtual void SetHdrFlag(DBMessageHdr *, XP_Bool bSet, MsgFlags flag); - virtual void MarkHdrReadInDB(DBMessageHdr *msgHdr, XP_Bool bRead, - ChangeListener *instigator); - - virtual DBFolderInfo *CreateFolderInfo(MSG_DBFolderInfoHandle handle); - virtual MsgERR IsHeaderRead(DBMessageHdr *hdr, XP_Bool *pRead); - - XP_Bool MatchDbName(const char * dbName); // returns TRUE if they match - DBFolderInfo *AddNewFolderInfoToDB(); - // helper function for creating iterators; - MsgERR CreateListIterator(XP_Bool forward, ListContext **pContext, DBMessageHdr **pResult); - MsgERR GetMessageIndexInThread(DBThreadMessageHdr *threadHdr, MessageKey startMsg, uint16 *pThreadIndex); -protected: - MSG_DBHandle m_dbHandle; - MSG_DBFolderInfoHandle m_dbFolderInfoHandle; - MSG_IteratorHandle m_threadIterator; - char *m_dbName; - int m_useCount; - MSG_FolderInfo *m_folderInfo; - XPPtrArray m_newHeaders; // array of DBMessageHdr * - int m_headerIndex; // index of last header added to m_newHeaders - int32 m_addCount; // how many added since last commit - int32 m_commitChunk; // how many to add before committing - - IDArray m_lockedKeys; - msg_NewsArtSet *m_newSet; // new messages since last open. -// static message db cache functions - perhaps overlaps with URL caching -// since we can open message dbs without opening a UI on the message db, -// or have two ui widgets open the same db. - static MessageDBArray *m_dbCache; // array of messageDB's - static XP_Bool m_cacheEnabled; - - static void AddToCache(MessageDB* pMessageDB) - {GetDBCache()->Add(pMessageDB);} - static void RemoveFromCache(MessageDB* pMessageDB); - static int FindInCache(MessageDB* pMessageDB); - static XP_Bool EnableCache(XP_Bool enable); - static XP_Bool IsCacheEnabled(void) {return(m_cacheEnabled);} - static MessageDBArray* GetDBCache(); -}; - -#endif diff --git a/mozilla/lib/libmsg/msgdbapi.h b/mozilla/lib/libmsg/msgdbapi.h deleted file mode 100644 index 878cf134044..00000000000 --- a/mozilla/lib/libmsg/msgdbapi.h +++ /dev/null @@ -1,259 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef MSGDBAPI_H -#define MSGDBAPI_H - -#include "msgdbtyp.h" - -MsgERR MSG_InitDB(); -MsgERR MSG_ShutdownDB(); - -// gets an open db handle -MsgERR MSG_OpenDB(const char *dbFileName, XP_Bool create, MSG_DBHandle *dbHandle, MSG_DBFolderInfoHandle *handle) ; -MsgERR MSG_CloseDB(MSG_DBHandle dbHandle); - -// compress means try to recover unused space - we use this very sparingly, at the moment -MsgERR MSG_CommitDB(MSG_DBHandle dbHandle, XP_Bool compress); - -// iteration and enumeration interfaces -MsgERR MSG_DBHandle_ListAllKeys(MSG_DBHandle dbHandle, MessageKey **resultKeys, int32 *numKeys); - -MsgERR MSG_DBHandle_CreateHdrListIterator(MSG_DBHandle dbHandle, XP_Bool forward, MSG_IteratorHandle *iterator, MSG_HeaderHandle *); -MsgERR MSG_IteratorHandle_GetNextHeader(MSG_IteratorHandle iterator, MSG_DBHandle, MSG_HeaderHandle *); - -MsgERR MSG_DBHandle_CreateThreadListIterator(MSG_DBHandle dbHandle, XP_Bool forward, MSG_IteratorHandle *iterator, MSG_ThreadHandle *); -MsgERR MSG_IteratorHandle_GetNextThread(MSG_IteratorHandle iterator, MSG_DBHandle, MSG_ThreadHandle *); -void MSG_IteratorHandle_DestroyIterator(MSG_IteratorHandle iterator); - -// routines to manage mail and news db folder infos. -MSG_MailDBFolderInfoHandle MSG_CreateMailDBFolderInfo(); -MSG_NewsDBFolderInfoHandle MSG_CreateNewsDBFolderInfo(); - -void MSG_DBFolderInfoHandle_RemoveReference(MSG_DBFolderInfoHandle handle); - -MsgERR MSG_AddDBFolderInfo(MSG_DBHandle dbHandle, MSG_DBFolderInfoHandle handle); -MsgERR MSG_AddMailDBFolderInfo(MSG_DBHandle dbHandle, MSG_MailDBFolderInfoHandle handle); -MsgERR MSG_AddNewsDBFolderInfo(MSG_DBHandle dbHandle, MSG_NewsDBFolderInfoHandle handle); -MsgERR MSG_GetMailDBFolderInfo(MSG_DBHandle dbHandle, MSG_MailDBFolderInfoHandle *handle); -MsgERR MSG_GetNewsDBFolderInfo(MSG_DBHandle dbHandle, MSG_NewsDBFolderInfoHandle *handle); - -void MSG_DBFolderInfo_SetFolderInfo(MSG_DBFolderInfoHandle folderInfoHandle, MSG_DBFolderInfoExchange *exchangeInfo, MSG_DBHandle dbHandle); -void MSG_DBFolderInfo_GetFolderInfo(MSG_DBFolderInfoHandle folderInfoHandle, MSG_DBFolderInfoExchange *exchangeInfo); - - void MSG_DBFolderInfo_SetHighWater(MSG_DBFolderInfoHandle folderInfoHandle, MessageKey highWater, Bool force = -FALSE) ; - MessageKey MSG_DBFolderInfo_GetHighWater(MSG_DBFolderInfoHandle folderInfoHandle); - void MSG_DBFolderInfo_SetExpiredMark(MSG_DBFolderInfoHandle folderInfoHandle, MessageKey expiredKey); - int MSG_DBFolderInfo_GetDiskVersion(MSG_DBFolderInfoHandle folderInfoHandle) ; - XP_Bool MSG_DBFolderInfo_AddLaterKey(MSG_DBFolderInfoHandle folderInfoHandle, MessageKey key, time_t until); - int32 MSG_DBFolderInfo_GetNumLatered(MSG_DBFolderInfoHandle folderInfoHandle); - MessageKey MSG_DBFolderInfo_GetLateredAt(MSG_DBFolderInfoHandle folderInfoHandle, int32 laterIndex, time_t *pUntil); - void MSG_DBFolderInfo_RemoveLateredAt(MSG_DBFolderInfoHandle folderInfoHandle, int32 laterIndex); - - void MSG_DBFolderInfo_SetNewArtsSet(MSG_DBFolderInfoHandle folderInfoHandle, const char *newArtsSet, MSG_DBHandle dbHandle); - void MSG_DBFolderInfo_GetNewArtsSet(MSG_DBFolderInfoHandle folderInfoHandle, char **newArtsSet); - - void MSG_DBFolderInfo_SetMailboxName(MSG_DBFolderInfoHandle folderInfoHandle, const char *newBoxName); - void MSG_DBFolderInfo_GetMailboxName(MSG_DBFolderInfoHandle folderInfoHandle, char **boxName); - -void MSG_DBFolderInfo_SetViewType(MSG_DBFolderInfoHandle folderInfoHandle, int32 viewType); - int32 MSG_DBFolderInfo_GetViewType(MSG_DBFolderInfoHandle folderInfoHandle); - void MSG_DBFolderInfo_SetSortInfo(MSG_DBFolderInfoHandle folderInfoHandle, SortType, SortOrder); - void MSG_DBFolderInfo_GetSortInfo(MSG_DBFolderInfoHandle folderInfoHandle, SortType *, SortOrder *); - int32 MSG_DBFolderInfo_ChangeNumNewMessages(MSG_DBFolderInfoHandle folderInfoHandle, int32 delta); - int32 MSG_DBFolderInfo_ChangeNumMessages(MSG_DBFolderInfoHandle folderInfoHandle, int32 delta); - int32 MSG_DBFolderInfo_ChangeNumVisibleMessages(MSG_DBFolderInfoHandle folderInfoHandle, int32 delta); - int32 MSG_DBFolderInfo_GetNumNewMessages(MSG_DBFolderInfoHandle folderInfoHandle); - int32 MSG_DBFolderInfo_GetNumMessages(MSG_DBFolderInfoHandle folderInfoHandle); - int32 MSG_DBFolderInfo_GetNumVisibleMessages(MSG_DBFolderInfoHandle folderInfoHandle); - int32 MSG_DBFolderInfo_GetFlags(MSG_DBFolderInfoHandle folderInfoHandle); - void MSG_DBFolderInfo_SetFlags(MSG_DBFolderInfoHandle folderInfoHandle, int32 flags); - void MSG_DBFolderInfo_OrFlags(MSG_DBFolderInfoHandle folderInfoHandle, int32 flags); - void MSG_DBFolderInfo_AndFlags(MSG_DBFolderInfoHandle folderInfoHandle, int32 flags); - XP_Bool MSG_DBFolderInfo_TestFlag(MSG_DBFolderInfoHandle folderInfoHandle, int32 flags); - int16 MSG_DBFolderInfo_GetCSID(MSG_DBFolderInfoHandle folderInfoHandle); - void MSG_DBFolderInfo_SetCSID(MSG_DBFolderInfoHandle folderInfoHandle, int16 csid) ; - int16 MSG_DBFolderInfo_GetIMAPHierarchySeparator(MSG_DBFolderInfoHandle folderInfoHandle); - void MSG_DBFolderInfo_SetIMAPHierarchySeparator(MSG_DBFolderInfoHandle folderInfoHandle, int16 hierarchySeparator); - int32 MSG_DBFolderInfo_GetImapTotalPendingMessages(MSG_DBFolderInfoHandle folderInfoHandle) ; - void MSG_DBFolderInfo_ChangeImapTotalPendingMessages(MSG_DBFolderInfoHandle folderInfoHandle, int32 delta); - int32 GetImapUnreadPendingMessages(MSG_DBFolderInfoHandle folderInfoHandle); - void MSG_DBFolderInfo_ChangeImapUnreadPendingMessages(MSG_DBFolderInfoHandle folderInfoHandle, int32 delta) ; - - int32 MSG_DBFolderInfo_GetImapUidValidity(MSG_DBFolderInfoHandle folderInfoHandle) ; - void MSG_DBFolderInfo_SetImapUidValidity(MSG_DBFolderInfoHandle folderInfoHandle, int32 uidValidity) ; - - MessageKey MSG_DBFolderInfo_GetLastMessageLoaded(MSG_DBFolderInfoHandle folderInfoHandle); - void MSG_DBFolderInfo_SetLastMessageLoaded(MSG_DBFolderInfoHandle folderInfoHandle, MessageKey lastLoaded); - -void MSG_DBFolderInfo_SetCachedPassword(MSG_DBFolderInfoHandle folderInfoHandle, const char *password, MSG_DBHandle db); -void MSG_DBFolderInfo_GetCachedPassword(MSG_DBFolderInfoHandle folderInfoHandle, char **password, MSG_DBHandle db); - -void MSG_NewsDBFolderInfoHandle_SetKnownArts(MSG_NewsDBFolderInfoHandle handle, const char *knownArts); -void MSG_NewsDBFolderInfoHandle_GetKnownArts(MSG_NewsDBFolderInfoHandle handle, char **knownArts); - -// apis to add, remove, and retrieve various message headers from a DB. -MSG_HeaderHandle MSG_DBHandle_GetHandleForKey(MSG_DBHandle handle, MessageKey messageKey); -MSG_HeaderHandle MSG_DBHandle_GetHandleForMessageID(MSG_DBHandle handle, const char *msgID); -MSG_ThreadHandle MSG_DBHandle_GetThreadHandleForMsgHdrSubject(MSG_DBHandle handle, MSG_HeaderHandle); -MessageKey MSG_DBHandle_GetHighwaterMark(MSG_DBHandle); -// message header apis -void MSG_HeaderHandle_AddReference(MSG_HeaderHandle handle); -void MSG_HeaderHandle_RemoveReference(MSG_HeaderHandle handle); - -MSG_HeaderHandle GetNewMailHeaderHandle(); -MSG_HeaderHandle GetNewNewsHeaderHandle(); - -void MSG_DBHandle_RemoveHeader(MSG_DBHandle, MSG_HeaderHandle); -MsgERR MSG_DBHandle_AddHeader(MSG_DBHandle, MSG_HeaderHandle); - -MsgERR MSG_DBHandle_ExpireRange(MSG_DBHandle dbHandle, MessageKey startRange, MessageKey endRange); - -/* header data setters and getters */ -void MSG_HeaderHandle_GetHeaderInfo(MSG_HeaderHandle, MSG_DBHeaderExchange *); - -MessageKey MSG_HeaderHandle_GetMessageKey(MSG_HeaderHandle); -void MSG_HeaderHandle_SetMessageKey(MSG_HeaderHandle headerHandle, MessageKey key); -uint32 MSG_HeaderHandle_GetMessageSize(MSG_HeaderHandle headerHandle); -void MSG_HeaderHandle_SetMessageSize(MSG_HeaderHandle, uint32 msgSize); -void MSG_HeaderHandle_SetDate(MSG_HeaderHandle, time_t date); -time_t MSG_HeaderHandle_GetDate(MSG_HeaderHandle); -void MSG_HeaderHandle_SetLevel(MSG_HeaderHandle, char level); -char MSG_HeaderHandle_GetLevel(MSG_HeaderHandle); -MessageKey MSG_HeaderHandle_GetThreadID(MSG_HeaderHandle); -void MSG_HeaderHandle_SetThreadID(MSG_HeaderHandle, MessageKey threadID); -uint32 MSG_HeaderHandle_GetByteLength(MSG_HeaderHandle); -uint32 MSG_HeaderHandle_GetLineCount(MSG_HeaderHandle); -void MSG_HeaderHandle_SetByteLength(MSG_HeaderHandle, uint32 byteLength); -void MSG_HeaderHandle_SetStatusOffset(MSG_HeaderHandle, uint16 headerOffset); -uint16 MSG_HeaderHandle_GetStatusOffset(MSG_HeaderHandle); - -void MSG_HeaderHandle_CopyFromMsgHdr(MSG_HeaderHandle destHdrHandle, MSG_HeaderHandle srcHdrHandle, MSG_DBHandle srcDBHandle, MSG_DBHandle destDBHandle); -void MSG_HeaderHandle_CopyFromMailMsgHdr(MSG_HeaderHandle destHdrHandle, MSG_HeaderHandle srcHdrHandle, MSG_DBHandle srcDBHandle, MSG_DBHandle destDBHandle); -void MSG_HeaderHandle_CopyFromNewsMsgHdr(MSG_HeaderHandle destHdrHandle, MSG_HeaderHandle srcHdrHandle, MSG_DBHandle srcDBHandle, MSG_DBHandle destDBHandle); -void MSG_HeaderHandle_CopyToMessageHdr(MSG_HeaderHandle handle, MessageHdrStruct *msgHdr, MSG_DBHandle db); -void MSG_HeaderHandle_CopyToShortMessageHdr(MSG_HeaderHandle handle, MSG_MessageLine *msgHdr, MSG_DBHandle db); -XP_Bool MSG_HeaderHandle_SetSubject(MSG_HeaderHandle handle, const char * subject, MSG_DBHandle db); -XP_Bool MSG_HeaderHandle_SetAuthor(MSG_HeaderHandle handle, const char * author, MSG_DBHandle db); -XP_Bool MSG_HeaderHandle_SetMessageId(MSG_HeaderHandle handle, const char * messageId, MSG_DBHandle db); -XP_Bool MSG_HeaderHandle_SetReferences(MSG_HeaderHandle handle, const char * references, MSG_DBHandle db); - -XP_Bool MSG_HeaderHandle_GetSubject(MSG_HeaderHandle handle, char **subject, XP_Bool withRE, MSG_DBHandle db); -XP_Bool MSG_HeaderHandle_GetAuthor(MSG_HeaderHandle handle, char **author, MSG_DBHandle db); -XP_Bool MSG_HeaderHandle_GetMessageId(MSG_HeaderHandle handle, char **messageId, MSG_DBHandle db); -int32 MSG_HeaderHandle_GetNumReferences(MSG_HeaderHandle handle); - -void MSG_HeaderHandle_SetPriority(MSG_HeaderHandle handle, MSG_PRIORITY priority); -MSG_PRIORITY MSG_HeaderHandle_GetPriority(MSG_HeaderHandle handle); -int32 MSG_HeaderHandle_GetNumRecipients(MSG_HeaderHandle handle); -int32 MSG_HeaderHandle_GetNumCCRecipients(MSG_HeaderHandle handle); -void MSG_HeaderHandle_GenerateAddressList(MSG_HeaderHandle hdrHandle, MSG_DBHandle dbHandle, char **addressList); -void MSG_HeaderHandle_GenerateCCAddressList(MSG_HeaderHandle hdrHandle, MSG_DBHandle dbHandle, char **addressList); -void MSG_HeaderHandle_GetFullRecipient(MSG_HeaderHandle hdrHandle, MSG_DBHandle dbHandle, int whichRecipient, char **recipient); -void MSG_HeaderHandle_GetFullCCRecipient(MSG_HeaderHandle hdrHandle, MSG_DBHandle dbHandle, int whichRecipient, char **recipient); - -uint32 MSG_HeaderHandle_OrFlags(MSG_HeaderHandle hdrHandle, uint32 flags); -uint32 MSG_HeaderHandle_SetFlags(MSG_HeaderHandle hdrHandle, uint32 flags); -uint32 MSG_HeaderHandle_AndFlags(MSG_HeaderHandle hdrHandle, uint32 flags); -uint32 MSG_HeaderHandle_GetFlags(MSG_HeaderHandle hdrHandle); -uint32 MSG_HeaderHandle_SetFlags(MSG_HeaderHandle hdrHandle, uint32 flags); - -// recipients are either comma separated list of rfc 822 addresses, or a newsgroup. -void MSG_HeaderHandle_SetRecipients(MSG_HeaderHandle hdrHandle, const char *recipients, MSG_DBHandle db, XP_Bool rfc822AddressList); -void MSG_HeaderHandle_SetCCRecipients(MSG_HeaderHandle hdrHandle, const char *ccList, MSG_DBHandle db); - -// threading interfaces - these are a bit ugly in order to make threading as efficient as possible. - -// returns the thread header handle for the reference with the passed index in the passed header, NULL if it doesn't exist. -MSG_ThreadHandle MSG_HeaderHandle_GetThreadForReference(MSG_HeaderHandle hdrHandle, int32 refIndex, MSG_DBHandle dbHandle); -void MSG_ThreadHandle_AddChild(MSG_ThreadHandle threadHandle, MSG_HeaderHandle headerHandle, MSG_DBHandle dbHandle, XP_Bool threadInThread); -XP_Bool MSG_ThreadHandle_GetSubject(MSG_ThreadHandle handle, char **subject, MSG_DBHandle db); -MessageKey MSG_ThreadHandle_GetChildAt(MSG_ThreadHandle handle, uint16 index); -MSG_HeaderHandle MSG_ThreadHandle_GetChildHdrAt(MSG_ThreadHandle handle, uint16 index); -MSG_HeaderHandle MSG_ThreadHandle_GetChildForKey(MSG_ThreadHandle handle, MessageKey key); -void MSG_ThreadHandle_MarkChildRead(MSG_ThreadHandle thread, XP_Bool bRead, MSG_DBHandle db); -void MSG_ThreadHandle_RemoveChildByKey(MSG_ThreadHandle, MessageKey key, MSG_DBHandle db); -uint16 MSG_ThreadHandle_GetNumChildren(MSG_ThreadHandle); -MSG_ThreadHandle MSG_DBHandle_AddThreadFromMsgHandle(MSG_DBHandle, MSG_HeaderHandle); - -void MSG_DBHandle_RemoveThread(MSG_DBHandle, MSG_ThreadHandle); - -// thread header apis -void MSG_ThreadHandle_AddReference(MSG_ThreadHandle handle); -void MSG_ThreadHandle_RemoveReference(MSG_ThreadHandle handle); - -void MSG_ThreadHandle_GetThreadInfo(MSG_ThreadHandle, MSG_DBThreadExchange *); -MSG_ThreadHandle MSG_DBHandle_GetThreadHeaderForThreadID(MSG_DBHandle, MessageKey threadID); -// offline operation api's -void MSG_DBHandle_AddOfflineOperation(MSG_DBHandle dbHandle, MSG_OfflineIMAPOperationHandle offlineOpHandle); -void MSG_DBHandle_RemoveOfflineOperation(MSG_DBHandle dbHandle, MSG_OfflineIMAPOperationHandle offlineOpHandle); -MSG_OfflineIMAPOperationHandle MSG_DBHandle_GetOfflineOp(MSG_DBHandle dbHandle, MessageKey messageKey); -MSG_OfflineIMAPOperationHandle GetOfflineIMAPOperation(); -void MSG_OfflineIMAPOperationHandle_RemoveReference(MSG_OfflineIMAPOperationHandle opHandle); - -void MSG_OfflineIMAPOperationHandle_SetMessageKey(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle, MessageKey key); -MessageKey MSG_OfflineIMAPOperationHandle_GetMessageKey(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle); -MessageKey MSG_OfflineIMAPOperationHandle_GetSourceMessageKey(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle); - -void MSG_OfflineIMAPOperationHandle_SetAppendMsgOperation(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle, - const char *destinationBox, int32 opType); -void MSG_OfflineIMAPOperationHandle_ClearAppendMsgOperation(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle, - int32 opType); -void MSG_OfflineIMAPOperationHandle_SetMessageMoveOperation(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle, - const char *destinationBox); -void MSG_OfflineIMAPOperationHandle_ClearMoveOperation(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle); -void MSG_OfflineIMAPOperationHandle_AddMessageCopyOperation(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle, - const char *destinationBox); -void MSG_OfflineIMAPOperationHandle_ClearFirstCopyOperation(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle); -MsgERR MSG_OfflineIMAPOperationHandle_SetSourceMailbox(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle, const char *sourceMailbox); -XP_Bool MSG_OfflineIMAPOperationHandle_GetIndexedCopyDestination(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle, uint32 index, char **boxName); - -XP_Bool MSG_OfflineIMAPOperationHandle_GetMoveDestination(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle, char **boxName); -uint32 MSG_OfflineIMAPOperationHandle_GetNumberOfCopyOps(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle); - -imapMessageFlagsType MSG_OfflineIMAPOperationHandle_GetNewMessageFlags(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle); -uint32 MSG_OfflineIMAPOperationHandle_GetOperationFlags(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle); -void MSG_OfflineIMAPOperationHandle_SetDeleteAllMsgs(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle); -void MSG_OfflineIMAPOperationHandle_ClearDeleteAllMsgs(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle); -void MSG_OfflineIMAPOperationHandle_SetInitialImapFlags(MSG_OfflineIMAPOperationHandle opHandle, imapMessageFlagsType flags, MSG_DBHandle dbHandle); -void MSG_OfflineIMAPOperationHandle_SetImapFlagOperation(MSG_OfflineIMAPOperationHandle opHandle, imapMessageFlagsType flags, MSG_DBHandle dbHandle); -void MSG_OfflineIMAPOperationHandle_ClearImapFlagOperation(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle); -MsgERR MSG_OfflineIMAPOperationHandle_SetSourceMailbox(MSG_OfflineIMAPOperationHandle opHandle, MSG_DBHandle dbHandle, const char *mailbox, MessageKey key); -MsgERR MSG_DBHandle_ListAllOflineOperationKeys(MSG_DBHandle dbHandle, MessageKey **resultKeys, int32 *numKeys); -MsgERR MSG_DBHandle_ListAllOfflineDeletedMessageKeys(MSG_DBHandle, MessageKey **deletedKeys, int32 *numKeys); - -// offline message body apis. -int32 MSG_HeaderHandle_AddToOfflineMessage(MSG_HeaderHandle hdrHandle, const char *block, int32 length, MSG_DBHandle dbHandle); -int32 MSG_HeaderHandle_ReadFromOfflineMessage(MSG_HeaderHandle hdrHandle, char *block, int32 length, int32 offset, MSG_DBHandle dbHandle); -void MSG_HeaderHandle_PurgeOfflineMessage(MSG_HeaderHandle hdrHandle, MSG_DBHandle dbHandle); -int32 MSG_HeaderHandle_WriteOfflineMessageBody(MSG_HeaderHandle hdrHandle, MSG_DBHandle dbHandle, XP_File destinationFile); -int32 MSG_HeaderHandle_GetOfflineMessageLength(MSG_HeaderHandle hdrHandle, MSG_DBHandle dbHandle); - -// Offline Message Document api's - -MSG_OfflineMsgDocumentHandle MSG_OfflineMsgDocumentHandle_Create(MSG_DBHandle dbHandle, MSG_HeaderHandle hdrHandle); -void MSG_OfflineMsgDocumentHandle_Destroy(MSG_OfflineMsgDocumentHandle); -void MSG_OfflineMsgDocumentHandle_Complete(MSG_OfflineMsgDocumentHandle); -void MSG_OfflineMsgDocumentHandle_SetMsgHeaderHandle(MSG_OfflineMsgDocumentHandle, MSG_HeaderHandle hdrHandle, MSG_DBHandle dbHandle); -int32 MSG_OfflineMsgDocumentHandle_AddToOfflineMessage(MSG_OfflineMsgDocumentHandle, const char *block, int32 length); -#endif diff --git a/mozilla/lib/libmsg/msgdbini.cpp b/mozilla/lib/libmsg/msgdbini.cpp deleted file mode 100644 index 7d9d9e9f25a..00000000000 --- a/mozilla/lib/libmsg/msgdbini.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp.h" -#include "prefapi.h" -#include "imap.h" -#include "msgdb.h" -#include "thrhead.h" -#include "msgdbapi.h" -// forward decls. - -extern "C" -void MSG_InitMsgLib() // one-time initialization of libmsg -{ - IMAP_StartupImap(); - - MSG_InitDB(); - int32 maxArticles = 0; - - PREF_GetIntPref("news.max_articles", &maxArticles); - NET_SetNumberOfNewsArticlesInListing(maxArticles); -} - -extern "C" -void MSG_ShutdownMsgLib() -{ -#ifdef DEBUG - XP_ASSERT(MessageDB::GetNumInCache() == 0); // better not be any open db's. - if (MessageDB::GetNumInCache() != 0) - MessageDB::DumpCache(); -#endif - MessageDB::CleanupCache(); - // make sure we're not leaking message headers. -#ifdef DEBUG_bienvenu - XP_ASSERT(DBMessageHdr::numMessageHdrs == 0); - if (DBMessageHdr::numMessageHdrs > 0) - XP_Trace("%ld headers leaked\n", DBMessageHdr::numMessageHdrs); - XP_ASSERT(DBThreadMessageHdr::m_numThreadHeaders == 0); - if (DBThreadMessageHdr::m_numThreadHeaders > 0) - XP_Trace("%ld neo thread headers leaked\n", DBThreadMessageHdr::m_numThreadHeaders); -#endif - - MSG_ShutdownDB(); - IMAP_ShutdownImap(); -} - diff --git a/mozilla/lib/libmsg/msgdbtyp.h b/mozilla/lib/libmsg/msgdbtyp.h deleted file mode 100644 index c69deeca1f5..00000000000 --- a/mozilla/lib/libmsg/msgdbtyp.h +++ /dev/null @@ -1,153 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef MSGDBTYP_H -#define MSGDBTYP_H - -typedef void *MSG_DBHandle; -typedef void *MSG_HeaderHandle; -typedef void *MSG_MailHeaderHandle; -typedef void *MSG_NewsHeaderHandle; - -typedef void *MSG_DBFolderInfoHandle; -typedef void *MSG_MailDBFolderInfoHandle; -typedef void *MSG_NewsDBFolderInfoHandle; - -typedef void *MSG_ThreadHandle; - -typedef void *MSG_OfflineIMAPOperationHandle; -typedef void *MSG_OfflineMsgDocumentHandle; -typedef void *MSG_IteratorHandle; - -const int kNumUnused = 8; -typedef uint32 MsgERR ; - -enum SortOrder -{ - SortTypeNone, - SortTypeAscending, - SortTypeDescending -}; -enum SortType -{ - SortByDate = 0x12, - SortBySubject = 0x13, - SortByAuthor = 0x14, - SortById = 0x15, - SortByThread = 0x16, - SortByPriority = 0x17, - SortByStatus = 0x18, - SortBySize = 0x19, - SortByFlagged = 0x1a, - SortByUnread = 0x1b, - SortByRelevance, - SortByRecipient -}; - -enum ViewType -{ - ViewAny, // this view type matches any other view type, - // for the purpose of matching cached views. - // Else, it's equivalent to ViewAllThreads - ViewAllThreads, // default view, no killed threads - ViewOnlyThreadsWithNew, - ViewKilledThreads, // obsolete!!! Only remembered because it's in old db's. - ViewOnlyNewHeaders, - ViewWatchedThreadsWithNew, - ViewCustom, // client will insert id's by hand - ViewCacheless // probably obsoletes ViewCustom -}; - - -/* This struct is used to get and set the basic info about a folder */ -typedef struct -{ - uint16 m_version; /* for upgrading...*/ - int32 m_sortType; /* the last sort type open on this db. */ - int16 m_csid; /* default csid for these messages */ - int16 m_IMAPHierarchySeparator; /* imap path separator */ - int8 m_sortOrder; /* the last sort order (up or down) */ - /* mail only (for now) */ - int32 m_folderSize; - time_t m_folderDate; - int32 m_parsedThru; /* how much of the folder have we parsed? Not sure needed in new world order */ - int32 m_expunged_bytes; /* sum of size of deleted messages in folder */ - - // IMAP only - int32 m_LastMessageUID; - int32 m_ImapUidValidity; - int32 m_TotalPendingMessages; - int32 m_UnreadPendingMessages; - - // news only (for now) - MessageKey m_articleNumHighWater; /* largest article number whose header we've seen */ - MessageKey m_expiredMark; /* Highest invalid article number in group - for expiring */ - int32 m_viewType; /* for news, the last view type open on this db. */ - - int32 m_numVisibleMessages; // doesn't include expunged or ignored messages (but does include collapsed). - int32 m_numNewMessages; - int32 m_numMessages; // includes expunged and ignored messages - int32 m_flags; // folder specific flags. This holds things like re-use thread pane, - // configured for off-line use, use default retrieval, purge article/header options - MessageKey m_lastMessageLoaded; // set by the FE's to remember the last loaded message - int32 m_unused[kNumUnused]; -} MSG_DBFolderInfoExchange; - -typedef struct -{ - MessageKey m_threadId; - MessageKey m_messageKey; //news: article number, mail mbox offset - time_t m_date; - uint32 m_messageSize; // lines for news articles, bytes for mail messages - uint32 m_flags; - char m_level; -} MSG_DBHeaderExchange; - -typedef struct -{ - uint16 m_numChildren; - uint16 m_numNewChildren; - uint32 m_flags; - MessageKey m_threadKey; -} MSG_DBThreadExchange; - -typedef struct MSG_PurgeInfo -{ - MSG_PurgeByPreferences m_purgeBy; - XP_Bool m_useDefaults; - XP_Bool m_unreadOnly; - int32 m_daysToKeep; - int32 m_numHeadersToKeep; -} MSG_PurgeInfo; - -typedef struct MSG_RetrieveArtInfo -{ - XP_Bool m_useDefaults; - XP_Bool m_byReadness; - XP_Bool m_unreadOnly; - XP_Bool m_byDate; - int32 m_daysOld; -} MSG_RetrieveArtInfo; - - -#endif - diff --git a/mozilla/lib/libmsg/msgdbvw.cpp b/mozilla/lib/libmsg/msgdbvw.cpp deleted file mode 100644 index 099bb0ff77f..00000000000 --- a/mozilla/lib/libmsg/msgdbvw.cpp +++ /dev/null @@ -1,3123 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "msgdb.h" -#include "msgdbvw.h" -#include "thrdbvw.h" -#include "dberror.h" -#include "vwerror.h" -#include "newsdb.h" -#include "maildb.h" -#include "thrhead.h" -#include "grpinfo.h" -#include "chngntfy.h" -#include "msgmast.h" -#include "thrnewvw.h" -#include "xpgetstr.h" -#include "addrbook.h" -#include "dirprefs.h" -#include "msglpane.h" -#include "xp_qsort.h" -#include "intl_csi.h" -#include "msgimap.h" - -extern "C" { -extern int MK_MSG_FIRST_MSG; -extern int MK_MSG_NEXT_MSG; -extern int MK_MSG_PREV_MSG; -extern int MK_MSG_LAST_MSG; -extern int MK_MSG_FIRST_UNREAD; -extern int MK_MSG_NEXT_UNREAD; -extern int MK_MSG_PREV_UNREAD; -extern int MK_MSG_LAST_UNREAD; -extern int MK_MSG_READ_MORE; -extern int MK_MSG_NEXTUNREAD_THREAD; -extern int MK_MSG_NEXTUNREAD_GROUP; -extern int MK_MSG_FIRST_FLAGGED; -extern int MK_MSG_NEXT_FLAGGED; -extern int MK_MSG_PREV_FLAGGED; - -} -#ifdef WINDOWS -#include "windowsx.h" -#else -#define GlobalAllocPtr(a,b) XP_ALLOC(b) -#define GlobalFreePtr(p) XP_FREE(p) -#endif - -ViewChangeListener::ViewChangeListener(MessageDBView *view) -{ - m_dbView = view; -} - -ViewChangeListener::~ViewChangeListener() -{ -} - -void ViewChangeListener::OnViewChange(MSG_ViewIndex startIndex, - int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener * instigator) -{ - // propogate change to views' listeners - // if we're not the instigator, update flags if this key is in our view - if (instigator != &m_dbView->m_changeListener) - { - m_dbView->NotifyViewChangeAll(startIndex, numChanged, changeType, - instigator); - } -} - -void ViewChangeListener::OnViewStartChange(MSG_ViewIndex startIndex, - int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener * instigator) -{ - // propogate change to views' listeners - // if we're not the instigator, update flags if this key is in our view - if (instigator != &m_dbView->m_changeListener) - { - m_dbView->NotifyViewStartChangeAll(startIndex, numChanged, changeType, - instigator); - } -} -void ViewChangeListener::OnViewEndChange(MSG_ViewIndex startIndex, - int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener * instigator) -{ - // propogate change to views' listeners - // if we're not the instigator, update flags if this key is in our view - if (instigator != &m_dbView->m_changeListener) - { - m_dbView->NotifyViewEndChangeAll(startIndex, numChanged, changeType, - instigator); - } -} - -void ViewChangeListener::OnKeyChange(MessageKey keyChanged, int32 flags, - ChangeListener *instigator) -{ - // if we're not the instigator, update flags if this key is in our view - if (instigator != &m_dbView->m_changeListener) - { - if (flags & kAdded) // message just downloaded - { - m_dbView->OnNewHeader(keyChanged, FALSE); - } - else - { - MSG_ViewIndex index = m_dbView->FindViewIndex(keyChanged); - if (index != kViewIndexNone) - { - char extraFlag; - - m_dbView->SetExtraFlagsFromDBFlags(flags, index); - // tell the view the extra flag changed, so it can - // update the previous view, if any. - if (m_dbView->GetExtraFlag(index, &extraFlag) == eSUCCESS) - m_dbView->OnExtraFlagChanged(index, extraFlag); - if (flags & (kExpired|kExpunged)) - m_dbView->DeleteMsgByIndex(index, FALSE); - else - m_dbView->NoteChange(index, 1, MSG_NotifyChanged); - } - else - { - MSG_ViewIndex threadIndex = m_dbView->ThreadIndexOfMsg(keyChanged); - // may need to fix thread counts - if (threadIndex != MSG_VIEWINDEXNONE) - m_dbView->NoteChange(threadIndex, 1, MSG_NotifyChanged); - - } - } - } - // propogate change to views' listeners, even if we're not instigator - m_dbView->NotifyKeyChangeAll(keyChanged, flags, instigator); -} - -void ViewChangeListener::OnAnnouncerGoingAway (ChangeAnnouncer * instigator) -{ - m_dbView->NotifyAnnouncerGoingAway(instigator); // shout it to the world! - m_dbView->m_messageDB->RemoveListener(this); - m_dbView->m_messageDB = NULL; -} - -/*static*/ uint32 MessageDBView::m_publicEquivOfExtraFlags; - -MessageDBView::MessageDBView() : m_changeListener(this) -{ - m_messageDB = NULL; - m_refCount = 1; - m_sortValid = TRUE; - m_sortOrder = SortTypeNone; - m_viewFlags = (ViewFlags) 0; - if (m_publicEquivOfExtraFlags == 0) - { - // first, find out what the 32 bit public equivalent of the extra flags is. - CopyExtraFlagsToDBFlags((char) 0xFF, &m_publicEquivOfExtraFlags); - MessageDB::ConvertDBFlagsToPublicFlags(&m_publicEquivOfExtraFlags); - } -} - -MessageDBView::~MessageDBView() -{ - NotifyAnnouncerGoingAway(this); - CacheRemove (); - XP_ASSERT(m_messageDB == NULL); // should be NULL if no errors closing the DB -} -// static method which given a URL string returns a view on that URL. -// For example, if url = "news:secnews-alt.music.alternative", and viewType = ViewOnlyThreadsWithNew -// We will return a threaded NewsDBView on the newsgroup alt.music.alternative on -// the host secnews with only threads with new. -MsgERR MessageDBView::OpenURL(const char * url, MSG_Master* master, - ViewType viewType, MessageDBView **view, XP_Bool openInForeground) -{ - MailDB *mailDB = NULL; - NewsGroupDB *newsDB = NULL; - MessageDBView *retView = NULL; - MsgERR err = eSUCCESS; - *view = NULL; - const char *startFolder; - char *endFolder = NULL; - char *justFolder = NULL; - - int urlType = NET_URL_Type(url); - - switch (urlType) - { - case NEWS_TYPE_URL: - // news:alt.music.alternative - news group - // news:4agiou%24g7n@news.utdallas.edu - message-id - err = NewsGroupDB::Open(url, master, &newsDB); - if (newsDB != NULL && err == eSUCCESS) - { - if (viewType == ViewAny) - viewType = newsDB->GetViewType(); // use last opened view type. - - // allow this view opening to run in the background. We should do this - // for mail and imap too, but that involves reworking msgtpane.cpp - // to deal with eBuildViewInBackground. - int32 numHeadersInDB = newsDB->GetDBFolderInfo()->GetNumMessages(); - MSG_FolderInfoNews *newsFolder = newsDB->GetFolderInfoNews(); - if (!openInForeground) // if caller doesn't care - openInForeground = (numHeadersInDB < 1000); - // always open category containers in background, so we can check for new categories. - err = OpenViewOnDB(newsDB, viewType, &retView, openInForeground); - newsDB->SetViewType(viewType); // remember this view type. - newsDB->Close(); // always close - above will addref. - - *view = retView; - if (newsDB == NULL || retView == NULL) - return err; - } - break; - case IMAP_TYPE_URL: - { - switch (viewType) - { - case ViewWatchedThreadsWithNew: - case ViewOnlyThreadsWithNew: - case ViewAllThreads: - case ViewOnlyNewHeaders: - case ViewAny: - case ViewCacheless: - { - MailDB *mailDB = NULL; - // strip off id info to get just folder path - startFolder = url + strlen("IMAP:"); - char *host = NET_ParseURL (url, GET_HOST_PART); - char *owner = NET_ParseURL (url, GET_USERNAME_PART); - char *path = NET_ParseURL (url, GET_PATH_PART); - if (!host || !path || !owner) - return eOUT_OF_MEMORY; - MSG_IMAPFolderInfoMail *folder = master->FindImapMailFolder(host, path + 1, owner, FALSE); - FREEIF(host); - FREEIF(owner); - FREEIF(path); - if (!folder) - return eOUT_OF_MEMORY; // ### dmb - what kind of error is this? - - XP_Bool dbWasCreated=FALSE; - err = ImapMailDB::Open(folder->GetPathname(), TRUE , &mailDB, master, - &dbWasCreated); - if (mailDB != NULL && err == eSUCCESS) - { - if (viewType == ViewAny) - viewType = mailDB->GetViewType(); // use last opened view type. - - err = OpenViewOnDB(mailDB, viewType, &retView, TRUE); - mailDB->SetViewType(viewType); // remember this view type. - mailDB->Close(); // always close - above will addref. - - if (err != eSUCCESS) - return err; - - *view = retView; - if (mailDB == NULL || retView == NULL) - return err; - } - - if (justFolder) - XP_FREE (justFolder); - } - break; - case ViewCustom: - { - *view = new ThreadDBView(viewType); - if (!*view) - err = eOUT_OF_MEMORY; - else - err = eSUCCESS; - } - break; - - } - } - break; - case MAILBOX_TYPE_URL: - // strip off id info to get just folder path - startFolder = url + strlen("mailbox:"); - justFolder = XP_STRDUP (startFolder); - if (!justFolder) - return eOUT_OF_MEMORY; - endFolder = XP_STRSTR (justFolder, "?id="); - if (endFolder) - endFolder[0] = '\0'; - - err = MailDB::Open(justFolder, FALSE /* create? */, &mailDB); - if (mailDB != NULL && err == eSUCCESS) - { - retView = CacheLookup (mailDB, viewType); - if (retView) - { - retView->AddReference (); - mailDB->Close(); // adjust ref count down. - } - else - { - if (viewType == ViewAny) - viewType = mailDB->GetViewType(); // use last opened view type. - int32 numHeadersInDB = mailDB->GetDBFolderInfo()->GetNumMessages(); - if (!openInForeground) // if caller doesn't care - openInForeground = (numHeadersInDB < 1000); - // try opening large mail dbs in background - err = OpenViewOnDB(mailDB, viewType, &retView, openInForeground); - mailDB->SetViewType(viewType); // remember this view type. - mailDB->Close(); // always close - above will addref. - if (retView == NULL) - { - mailDB->Close(); - err = eOUT_OF_MEMORY; - } - } - *view = retView; - if (mailDB == NULL || retView == NULL) - return err; - } - if (justFolder) - XP_FREE (justFolder); - break; - default: - return eBAD_URL; - } - - return err; -} - -// static method which creates and opens a view of the passed type on the already open db -MsgERR MessageDBView::OpenViewOnDB(MessageDB *msgDB, ViewType viewType, MessageDBView ** pRetView, XP_Bool runInForeground /* = TRUE */) -{ - MsgERR err = eSUCCESS; - - *pRetView = CacheLookup (msgDB, viewType); - if (*pRetView) - (*pRetView)->AddReference (); - else - { - switch (viewType) - { - case ViewWatchedThreadsWithNew: - // this can just filter out non-watched threads... - case ViewOnlyThreadsWithNew: - *pRetView = new ThreadsWithNewView(viewType); - break; - case ViewOnlyNewHeaders: - case ViewAny: - case ViewAllThreads: - *pRetView = new ThreadDBView(viewType); - break; - case ViewCustom: - *pRetView = new ThreadDBView(viewType); - break; - case ViewCacheless: - *pRetView = new CachelessView(viewType); - default: - err = eInvalidViewType; - break; - } - if (*pRetView != NULL) - { - err = (*pRetView)->Open(msgDB, viewType, NULL, runInForeground); - msgDB->AddUseCount(); // add view as user of db. - } - } - return err; -} - - -MsgERR MessageDBView::Open(MessageDB *messageDB, ViewType viewType, - uint32* /*pCount*/, XP_Bool /* runInForeground = TRUE */) -{ - m_messageDB = messageDB; - m_messageDB->AddListener(&m_changeListener); - if (viewType == ViewAny) - viewType = ViewAllThreads; - m_viewType = viewType; - if (messageDB && messageDB->GetDBFolderInfo()->GetFlags() & MSG_FOLDER_PREF_SHOWIGNORED) - m_viewFlags = (ViewFlags) ((int32) kShowIgnored | (int32) m_viewFlags); - if (messageDB && messageDB->GetDBFolderInfo() - && (viewType == ViewOnlyNewHeaders)) - m_viewFlags = (ViewFlags) ((int32) kUnreadOnly | (int32) m_viewFlags); - - CacheAdd (); - return eSUCCESS; -} - -MsgERR MessageDBView::Close() -{ - //if it's zero or negative, we should already have been deleted - XP_ASSERT(m_refCount > 0); - - MsgERR err = eSUCCESS; - - // opening a view, even from cache, always adds a ref count to db, - // so we should always close it. - - if (!--m_refCount) - { - if (m_messageDB != NULL) - { - m_messageDB->RemoveListener(&m_changeListener); - err = m_messageDB->Close(); - - m_messageDB = NULL; - } - delete this; - } - else if (m_messageDB != NULL) - { - err = m_messageDB->Close(); - } - return err; -} - -MsgERR MessageDBView::Init(uint32 * /*pCount*/, XP_Bool /*runInForeground = TRUE*/) -{ - // MessageDBView is pure virtual in spirit. Subclasses need to override this. - XP_ASSERT(FALSE); - return eSUCCESS; -} - -MsgERR MessageDBView::InitSort(SortType /*sortType*/, SortOrder /*sortOrder*/) -{ - return eSUCCESS; -} - -int32 MessageDBView::AddKeys(MessageKey * /*pOutput*/, int32 * /*pFlags*/, char * /*pLevels*/, SortType /*sortType*/, int /*numListed*/) -{ - XP_ASSERT(FALSE); - return 0; -} - -XP_Bool MessageDBView::GetShowingIgnored() -{ - return m_viewFlags & kShowIgnored; -} - -void MessageDBView::SetShowingIgnored(XP_Bool bShowIgnored) -{ - if (bShowIgnored) - m_viewFlags |= kShowIgnored; - else - m_viewFlags &= ~kShowIgnored; -} - -MsgERR MessageDBView::AddHdr(DBMessageHdr *msgHdr) -{ - char flags = 0; -#ifdef DEBUG_bienvenu - XP_ASSERT((int) m_idArray.GetSize() == m_flags.GetSize() && (int) m_idArray.GetSize() == m_levels.GetSize()); -#endif - if (msgHdr->GetFlags() & kIgnored && !GetShowingIgnored()) - return eSUCCESS; - - CopyDBFlagsToExtraFlags(msgHdr->GetFlags(), &flags); - if (msgHdr->GetArticleNum() == msgHdr->GetThreadId()) - flags |= kIsThread; - MSG_ViewIndex insertIndex = GetInsertIndex(msgHdr); - if (insertIndex == MSG_VIEWINDEXNONE) - { - // if unreadonly, level is 0 because we must be the only msg in the thread. - char levelToAdd = (m_viewFlags & kUnreadOnly) ? 0 : msgHdr->GetLevel(); - - if (m_sortOrder == SortTypeAscending) - { - m_idArray.Add(msgHdr->GetMessageKey()); - m_flags.Add(flags); - m_levels.Add(levelToAdd); - NoteChange(m_idArray.GetSize() - 1, 1, MSG_NotifyInsertOrDelete); - } - else - { - m_idArray.InsertAt(0, msgHdr->GetMessageKey()); - m_flags.InsertAt(0, flags); - m_levels.InsertAt(0, levelToAdd); - NoteChange(0, 1, MSG_NotifyInsertOrDelete); - } - m_sortValid = FALSE; - } - else - { - m_idArray.InsertAt(insertIndex, msgHdr->GetMessageKey()); - m_flags.InsertAt(insertIndex, flags); - m_levels.InsertAt(insertIndex, (m_sortType == SortByThread) ? 0 : msgHdr->GetLevel()); - NoteChange(insertIndex, 1, MSG_NotifyInsertOrDelete); - } - OnHeaderAddedOrDeleted(); - return eSUCCESS; -} - -MsgERR MessageDBView::InsertHdrAt(DBMessageHdr *msgHdr, MSG_ViewIndex insertIndex) -{ - char flags = 0; - CopyDBFlagsToExtraFlags(msgHdr->GetFlags(), &flags); - - NoteStartChange(insertIndex, 1, MSG_NotifyChanged); - m_idArray.SetAt(insertIndex, msgHdr->GetMessageKey()); - m_flags.SetAt(insertIndex, flags); - m_levels.SetAt(insertIndex, (m_sortType == SortByThread) ? 0 : msgHdr->GetLevel()); - NoteEndChange(insertIndex, 1, MSG_NotifyChanged); - OnHeaderAddedOrDeleted(); - return eSUCCESS; -} - -MsgERR MessageDBView::OnNewHeader(MessageKey newKey, XP_Bool /*ensureListed*/) -{ - MsgERR err = eID_NOT_FOUND;; - // views can override this behaviour, which is to append to view. - // This is the mail behaviour, but threaded views might want - // to insert in order... - DBMessageHdr *msgHdr = m_messageDB->GetDBHdrForKey(newKey); - if (msgHdr != NULL) - { - err = AddHdr(msgHdr); - delete msgHdr; - } - return err; -} - -XP_Bool MessageDBView::WantsThisThread(DBThreadMessageHdr * /*threadHdr*/) -{ - return TRUE; -} - -MsgERR MessageDBView::FinishedAddingHeaders() -{ - return eSUCCESS; -} - -// make sure the passed key is "in" the view (e.g., for a threaded sort, this -// may just mean the parent thread is in the view). -void MessageDBView::EnsureListed(MessageKey key) -{ - if (key != MSG_MESSAGEKEYNONE) - { - // find the key, expanding if neccessary. - MSG_ViewIndex index = FindKey(key, TRUE); - if (index == MSG_VIEWINDEXNONE) // tell the view about it. - OnNewHeader(key, TRUE); - } -} - -MessageKey MessageDBView::GetAt(MSG_ViewIndex index) -{ - if (index >= m_idArray.GetSize() || index == MSG_VIEWINDEXNONE) - return kIdNone; - else - return(m_idArray.GetAt(index)); -} - -MSG_ViewIndex MessageDBView::FindKey(MessageKey key, XP_Bool expand) -{ - MSG_ViewIndex retIndex = MSG_VIEWINDEXNONE; - retIndex = (MSG_ViewIndex) (m_idArray.FindIndex(key)); - if (key != MSG_MESSAGEKEYNONE && retIndex == MSG_VIEWINDEXNONE && expand && m_messageDB) - { - MessageKey threadKey = m_messageDB->GetKeyOfFirstMsgInThread(key); - if (threadKey != kIdNone) - { - MSG_ViewIndex threadIndex = FindKey(threadKey, FALSE); - if (threadIndex != MSG_VIEWINDEXNONE) - { - char flags = m_flags[threadIndex]; - if ((flags & kElided) && ExpandByIndex(threadIndex, NULL) == eSUCCESS) - retIndex = FindKey(key, FALSE); - } - } - } - return retIndex; -} - -typedef struct entryInfo -{ - MessageKey id; - char bits; -} EntryInfo; - -typedef struct tagIdStr{ - EntryInfo info; - char str[1]; -} IdStr; - -typedef struct tagIdStrPtr{ - EntryInfo info; - const char *strPtr; -} IdStrPtr; - -static int /* __cdecl */ FnSortIdStr(const void* pItem1, const void* pItem2) -{ - IdStr** p1 = (IdStr**)pItem1; - IdStr** p2 = (IdStr**)pItem2; - int retVal = XP_STRCMP((*p1)->str, (*p2)->str); // used to be strcasecmp, but INTL sorting routine lower cases it. - if (retVal != 0) - return(retVal); - if ((*p1)->info.id >= (*p2)->info.id) - return(1); - else - return(-1); -} - -static int /* __cdecl */ FnSortIdStrPtr(const void* pItem1, const void* pItem2) -{ - IdStrPtr** p1 = (IdStrPtr**)pItem1; - IdStrPtr** p2 = (IdStrPtr**)pItem2; - int retVal = XP_STRCMP((*p1)->strPtr, (*p2)->strPtr); // used to be strcasecmp, but INTL sorting routine lower cases it. - if (retVal != 0) - return(retVal); - if ((*p1)->info.id >= (*p2)->info.id) - return(1); - else - return(-1); -} - - -typedef struct tagIdWord{ - EntryInfo info; - uint16 word; -} IdWord; -static int /* __cdecl */ FnSortIdWord(const void* pItem1, const void* pItem2) -{ - IdWord** p1 = (IdWord**)pItem1; - IdWord** p2 = (IdWord**)pItem2; - long retVal = (*p1)->word - (*p2)->word; - if (retVal > 0) - return(1); - else if (retVal < 0) - return(-1); - else if ((*p1)->info.id >= (*p2)->info.id) - return(1); - else - return(-1); -} - -typedef struct tagIdDWord{ - EntryInfo info; - uint32 dword; -} IdDWord; -static int /* __cdecl */ FnSortIdDWord(const void* pItem1, const void* pItem2) -{ - IdDWord** p1 = (IdDWord**)pItem1; - IdDWord** p2 = (IdDWord**)pItem2; - if ((*p1)->dword > (*p2)->dword) - return(1); - else if ((*p1)->dword < (*p2)->dword) - return(-1); - else if ((*p1)->info.id >= (*p2)->info.id) - return(1); - else - return(-1); -} -MSG_ViewIndex MessageDBView::GetInsertIndex(DBMessageHdr *msgHdr) -{ - XP_Bool done = FALSE; - XP_Bool withinOne = FALSE; - MSG_ViewIndex retIndex = MSG_VIEWINDEXNONE; - MSG_ViewIndex tryIndex = GetSize() / 2; - MSG_ViewIndex newTryIndex; - MSG_ViewIndex lowIndex = 0; - MSG_ViewIndex highIndex = GetSize() - 1; - IdDWord dWordEntryInfo1, dWordEntryInfo2; - IdStrPtr strPtrInfo1, strPtrInfo2; - - if (GetSize() == 0) - return 0; - - uint16 maxLen; - int16 csid = (GetDB()->GetDBFolderInfo()->GetCSID() & ~CS_AUTO); - XPStringObj field1Str; - XPStringObj field2Str; - eFieldType fieldType = GetFieldTypeAndLenForSort(m_sortType, &maxLen); - const void *pValue1, *pValue2; - char *intlString1 = NULL; - - if (m_sortType == SortByThread) // punt on threaded view for now. - return retIndex; - - int (*comparisonFun) (const void *pItem1, const void *pItem2)=NULL; - int retStatus = 0; - switch (fieldType) - { - case kString: - comparisonFun = FnSortIdStrPtr; - strPtrInfo1.strPtr = intlString1 = GetStringField(msgHdr, m_sortType, csid, field1Str); - strPtrInfo1.info.id = msgHdr->GetMessageKey(); - pValue1 = &strPtrInfo1; - break; - case kU16: - case kU32: - pValue1 = &dWordEntryInfo1; - dWordEntryInfo1.dword = GetLongField(msgHdr, m_sortType); - dWordEntryInfo1.info.id = msgHdr->GetMessageKey(); - comparisonFun = FnSortIdDWord; - break; - default: - done = TRUE; - } - while (!done) - { - if (highIndex == lowIndex) - break; - MessageKey messageKey = GetAt(tryIndex); - DBMessageHdr *tryHdr = m_messageDB->GetDBHdrForKey(messageKey); - char *intlString2 = NULL; - if (!tryHdr) - break; - if (fieldType == kString) - { - strPtrInfo2.strPtr = intlString2 = GetStringField(tryHdr, m_sortType, csid, field2Str); - strPtrInfo2.info.id = messageKey; - pValue2 = &strPtrInfo2; - } - else - { - dWordEntryInfo2.dword = GetLongField(tryHdr, m_sortType); - dWordEntryInfo2.info.id = messageKey; - pValue2 = &dWordEntryInfo2; - } - delete tryHdr; - retStatus = (*comparisonFun)(&pValue1, &pValue2); - FREEIF(intlString2); - if (retStatus == 0) - break; - if (m_sortOrder == SortTypeDescending) //switch retStatus based on sort order - retStatus = (retStatus > 0) ? -1 : 1; - - if (retStatus < 0) - { - newTryIndex = tryIndex - (tryIndex - lowIndex) / 2; - if (newTryIndex == tryIndex) - { - if (!withinOne && newTryIndex > lowIndex) - { - newTryIndex--; - withinOne = TRUE; - } - } - highIndex = tryIndex; - } - else - { - newTryIndex = tryIndex + (highIndex - tryIndex) / 2; - if (newTryIndex == tryIndex) - { - if (!withinOne && newTryIndex < highIndex) - { - withinOne = TRUE; - newTryIndex++; - } - lowIndex = tryIndex; - } - } - if (tryIndex == newTryIndex) - break; - else - tryIndex = newTryIndex; - } - if (retStatus >= 0) - retIndex = tryIndex + 1; - else if (retStatus < 0) - retIndex = tryIndex; - - FREEIF(intlString1); - return retIndex; -} - - -MsgERR MessageDBView::ExternalSort(SortType sortType, - XP_Bool sort_forward_p) -{ - SortOrder sortOrder = (sort_forward_p) - ? SortTypeAscending : SortTypeDescending; - return Sort(sortType, sortOrder); -} - -MsgERR MessageDBView::Sort(SortType sortType, SortOrder sortOrder) -{ - return SortInternal(sortType, sortOrder); -} - -MsgERR MessageDBView::SortInternal(SortType sortType, SortOrder sortOrder) -{ - int arraySize; - MsgERR err = eSUCCESS; - XPByteArray *pBits = GetFlagsArray(); - XPPtrArray ptrs; - XPStringObj fieldStr; - int16 csid = (GetDB()->GetDBFolderInfo()->GetCSID() & ~CS_AUTO); - - arraySize = GetSize(); - if (sortType == m_sortType && m_sortValid) - { - if (sortOrder == m_sortOrder) - { - return eSUCCESS; - } - else - { - if (sortType != SortByThread) - { - // reverse the order - ReverseSort(); - err = eSUCCESS; - } - else - { - err = ReverseThreads(); - } - m_sortOrder = sortOrder; - m_messageDB->SetSortInfo(sortType, sortOrder); - return err; - } - } - if (sortType == SortByThread) - return eSUCCESS; - - uint16 maxLen; - eFieldType fieldType = GetFieldTypeAndLenForSort(sortType, &maxLen); - - int i; - // This function uses GlobalAlloc because I don't want to fragment up out heap with these potentially large memory blocks - // Also, freeing a heap block does not return the block to the system, but freeing a globalAlloc block does. - IdStr** pPtrBase = (IdStr**)GlobalAllocPtr(GMEM_MOVEABLE, arraySize * sizeof(IdStr*)); - if (pPtrBase) - { - int numSoFar = 0; - // calc max possible size needed for all the rest - uint32 maxSize = (uint32)(maxLen + sizeof(EntryInfo) + 1) * (uint32)(arraySize - numSoFar); - uint32 maxBlockSize = (uint32) 0xf000L; - uint32 allocSize = MIN(maxBlockSize, maxSize); - char * pTemp = (char *)GlobalAllocPtr(GMEM_MOVEABLE, allocSize); - char * pBase = pTemp; - if (pTemp) - { - - ptrs.Add(pTemp); // keep track of this so we can free them all - XP_Bool more = TRUE; - - DBMessageHdr *msgHdr = NULL; - uint32 longValue; - while (more && numSoFar < arraySize) - { - MessageKey thisKey = m_idArray.GetAt(numSoFar); - if (sortType != SortById) - { - msgHdr = m_messageDB->GetDBHdrForKey(thisKey); - if (msgHdr == NULL) - { - err = eID_NOT_FOUND; - break; - } - } - else - msgHdr = NULL; - // could be a problem here if the ones that appear here are different than the ones already in the array - const char* pField; - char *intlString = NULL; - int paddedFieldLen; - int actualFieldLen; - if (fieldType == kString) - { - pField = intlString = GetStringField(msgHdr, sortType, csid, fieldStr); - actualFieldLen = (pField) ? strlen(pField) + 1 : 1; - paddedFieldLen = actualFieldLen; - int mod4 = actualFieldLen % 4; - if (mod4 > 0) - paddedFieldLen += 4 - mod4; - } - else - { - longValue = (sortType == SortById) ? thisKey : GetLongField(msgHdr, sortType); - pField = (const char *) &longValue; - - actualFieldLen = paddedFieldLen = maxLen; - - } - // check to see if this entry fits into the block we have allocated so far - // pTemp - pBase = the space we have used so far - // sizeof(EntryInfo) + fieldLen = space we need for this entry - // allocSize = size of the current block - if ((uint32)(pTemp - pBase) + (uint32)sizeof(EntryInfo) + (uint32)paddedFieldLen >= allocSize) - { - maxSize = (uint32)(maxLen + sizeof(EntryInfo) + 1) * (uint32)(arraySize - numSoFar); - maxBlockSize = (uint32) 0xf000L; - allocSize = MIN(maxBlockSize, maxSize); - pTemp = (char*)GlobalAllocPtr(GMEM_MOVEABLE, allocSize); - if (!pTemp) - { - err = eOUT_OF_MEMORY; - break; - } - pBase = pTemp; - ptrs.Add(pTemp); // remember this pointer so we can free it later - } - // make sure there aren't more IDs than we allocated space for - if (numSoFar >= arraySize) - { - err = eOUT_OF_MEMORY; - break; - } - - // now store this entry away in the allocated memory - pPtrBase[numSoFar] = (IdStr*)pTemp; - EntryInfo *info = (EntryInfo *) pTemp; - info->id = thisKey; - char bits = 0; - bits = m_flags[numSoFar]; - info->bits = bits; - pTemp += sizeof(EntryInfo); - int32 bytesLeft = allocSize - (int32)(pTemp - pBase); - int32 bytesToCopy = MIN(bytesLeft, actualFieldLen); - if (pField) - { - memcpy((char *)pTemp, pField, bytesToCopy); - if (bytesToCopy < actualFieldLen) - { -#ifdef DEBUG_bienvenu - XP_ASSERT(FALSE); // wow, big block -#endif - *(pTemp + bytesToCopy) = '\0'; - - } - FREEIF(intlString); // free intl'ized string - } - else - *pTemp = 0; - pTemp += paddedFieldLen; - if (msgHdr) - delete msgHdr; - ++numSoFar; - } - - if (err == eSUCCESS) - { - // now sort the array based on the appropriate type of comparison - switch(fieldType) - { - case kString: - XP_QSORT(pPtrBase, numSoFar, sizeof(IdStr*), FnSortIdStr); - break; - case kU16: - XP_QSORT(pPtrBase, numSoFar, sizeof(IdWord*), FnSortIdWord); - break; - case kU32: - XP_QSORT(pPtrBase, numSoFar, sizeof(IdDWord*), FnSortIdDWord); - break; - default: - XP_ASSERT(FALSE); // not supposed to get here - break; - - } - // now puts the IDs into the array in proper order - for (i = 0; i < numSoFar; i++) - { - m_idArray.SetAt(i, pPtrBase[i]->info.id); - if (pBits != NULL) - pBits->SetAt(i, pPtrBase[i]->info.bits); - } - m_sortType = sortType; - m_sortOrder = sortOrder; - if (sortOrder == SortTypeDescending) - { - ReverseSort(); - } - } - } - } - - // free all the memory we allocated - for (i = 0; i < ptrs.GetSize(); i++) - { - GlobalFreePtr(ptrs[i]); - } - if (pPtrBase) - GlobalFreePtr(pPtrBase); - if (err == eSUCCESS) - { - m_sortValid = TRUE; - m_messageDB->SetSortInfo(sortType, sortOrder); - } - return err; -} - -MessageDBView::eFieldType MessageDBView::GetFieldTypeAndLenForSort(SortType sortType, uint16 *pMaxLen) -{ - eFieldType fieldType; - uint16 maxLen; - - switch (sortType) - { - case SortBySubject: - fieldType = kString; - maxLen = kMaxSubject; - break; - case SortByRecipient: - fieldType = kString; - maxLen = kMaxRecipient; - break; - case SortByAuthor: - fieldType = kString; - maxLen = kMaxAuthor; - break; - case SortByDate: - fieldType = kU32; - maxLen = sizeof(time_t); - break; - case SortByPriority: - fieldType = kU32; - maxLen = sizeof(uint32); - break; - case SortByThread: - case SortById: - case SortBySize: - case SortByFlagged: - case SortByUnread: - case SortByStatus: - fieldType = kU32; - maxLen = sizeof(uint32); - break; - default: - XP_ASSERT(FALSE); - return kString; - } - *pMaxLen = maxLen; - return fieldType; -} - -// helper routines for internal sort. XPStringObj is only currently used by -// recipients but we should change the rest so we aren't returning pointers -// to hash strings. This routine allocates a string, so the caller has to free it. -char *MessageDBView::GetStringField(DBMessageHdr *msgHdr, SortType sortType, int16 csid, XPStringObj &string) -{ - const char *pField; - - switch (sortType) - { - case SortBySubject: - if (msgHdr->GetSubject(string, FALSE, m_messageDB->GetDB())) - pField = string; - else - pField = ""; - break; - case SortByRecipient: - msgHdr->GetNameOfRecipient(string, 0, m_messageDB->GetDB()); - pField = string ; - if (!pField) - pField = ""; - break; - case SortByAuthor: - msgHdr->GetRFC822Author(string, m_messageDB->GetDB()); - pField = string ; - if (!pField) - pField = ""; - break; - default: -// XP_ASSERT(FALSE); - return(0); - } - return INTL_DecodeMimePartIIAndCreateCollationKey(pField, csid, 0); -} - -uint32 MessageDBView::GetStatusSortValue(DBMessageHdr *msgHdr) -{ - uint32 sortValue = 5; - uint32 messageFlags = m_messageDB->GetStatusFlags(msgHdr); - - if (messageFlags & MSG_FLAG_NEW) // happily, new by definition stands alone - return 0; - -#define MSG_STATUS_MASK (MSG_FLAG_REPLIED | MSG_FLAG_FORWARDED) - switch (messageFlags & MSG_STATUS_MASK) - { - case MSG_FLAG_REPLIED: - sortValue = 2; - break; - case MSG_FLAG_FORWARDED|MSG_FLAG_REPLIED: - sortValue = 1; - break; - case MSG_FLAG_FORWARDED: - sortValue = 3; - break; - } - - if (sortValue == 5) // none of the above flags set - { - if (messageFlags & MSG_FLAG_READ) // make read a visible status in winfe. - sortValue = 4; - } - return sortValue; -} - -uint32 MessageDBView::GetLongField(DBMessageHdr *msgHdr, SortType sortType) -{ - switch (sortType) - { - case SortByDate: - return msgHdr->GetDate(); - case SortBySize: - return msgHdr->GetMessageSize(); - case SortById: - return msgHdr->GetMessageKey(); - case SortByPriority: // want highest priority to have lowest value - // so ascending sort will have highest priority first. - return MSG_HighestPriority - msgHdr->GetPriority(); - case SortByStatus: - return GetStatusSortValue(msgHdr); - case SortByFlagged: - return !(msgHdr->GetFlags() & kMsgMarked); //make flagged come out on top. - case SortByUnread: - { - XP_Bool isRead = FALSE; - GetDB()->IsRead(msgHdr->GetMessageKey(), &isRead); - return !isRead; // make unread show up at top - } - default: - XP_ASSERT(FALSE); - return 0; - } -} - -void MessageDBView::ReverseSort(void) -{ - XPByteArray *pBits = GetFlagsArray(); - int num = GetSize(); - for (int j = 0; j < (num / 2); j++) - { - // go up half the array swapping values - int end = num - j - 1; - char bits; - if (pBits != NULL) - { - bits = pBits->GetAt(j); - pBits->SetAt(j, pBits->GetAt(end)); - pBits->SetAt(end, bits); - } - MessageKey tempID = m_idArray.GetAt(j); - - m_idArray.SetAt(j, m_idArray.GetAt(end)); - m_idArray.SetAt(end, tempID); - } -} - -// reversing threads involves reversing the threads but leaving the -// expanded messages ordered relative to the thread, so we -// make a copy of each array and copy them over. -MsgERR MessageDBView::ReverseThreads() -{ - MsgERR err = eSUCCESS; - XPByteArray *newFlagArray = new XPByteArray; - IDArray *newIdArray = new IDArray; - XPByteArray *newLevelArray = new XPByteArray; - int sourceIndex, destIndex; - int viewSize = GetSize(); - - if (newIdArray == NULL || newFlagArray == NULL) - { - err = eOUT_OF_MEMORY; - goto CLEANUP; - } - newIdArray->SetSize(m_idArray.GetSize()); - newFlagArray->SetSize(m_flags.GetSize()); - newLevelArray->SetSize(m_levels.GetSize()); - - for (sourceIndex = 0, destIndex = viewSize - 1; sourceIndex < viewSize;) - { - int endThread; // find end of current thread. - XP_Bool inExpandedThread = FALSE; - for (endThread = sourceIndex; endThread < viewSize; endThread++) - { - char flags = m_flags[endThread]; - if (!inExpandedThread && (flags & (kIsThread|kHasChildren)) && !(flags & kElided)) - inExpandedThread = TRUE; - else if (flags & kIsThread) - { - if (inExpandedThread) - endThread--; - break; - } - } - - if (endThread == viewSize) - endThread--; - int saveEndThread = endThread; - while (endThread >= sourceIndex) - { - newIdArray->SetAt(destIndex, m_idArray.GetAt(endThread)); - newFlagArray->SetAt(destIndex, m_flags.GetAt(endThread)); - newLevelArray->SetAt(destIndex, m_levels.GetAt(endThread)); - endThread--; - destIndex--; - } - sourceIndex = saveEndThread + 1; - } - // this copies the contents of both arrays - it would be cheaper to - // just assign the new data ptrs to the old arrays and "forget" the new - // arrays' data ptrs, so they won't be freed when the arrays are deleted. - m_idArray.RemoveAll(); - m_flags.RemoveAll(); - m_levels.RemoveAll(); - m_idArray.InsertAt(0, newIdArray); - m_flags.InsertAt(0, newFlagArray); - m_levels.InsertAt(0, newLevelArray); - -CLEANUP: - // if we swizzle data pointers for these arrays, this won't be right. - if (newFlagArray != NULL) - delete newFlagArray; - if (newIdArray != NULL) - delete newIdArray; - if (newLevelArray != NULL) - delete newLevelArray; - - return err; -} - -MsgERR MessageDBView::ListThreads(MessageKey * /*pMessageNums*/, - int /*numToList*/, - MessageHdrStruct * /*pOutput*/, - int * /*pNumListed*/) -{ - return eNYI; -} -MsgERR MessageDBView::ListThreadsShort(MessageKey * pMessageNums, - int numToList, - MSG_MessageLine * pOutput, - int * pNumListed) -{ - MsgERR err = eSUCCESS; - - XP_BZERO(pOutput, sizeof(*pOutput) * numToList); - int i; - for (i = 0; i < numToList && err == eSUCCESS; i++) - { - { - err = m_messageDB->GetShortMessageHdr(pMessageNums[i], pOutput + i); - if (err == eSUCCESS) - { - // force non-threaded view to be flat. - if (m_sortType != SortByThread) - { - (pOutput + i)->level = 0; -// (pOutput + i)->flags &= ~(kHasChildren); // Not used by FE. - (pOutput + i)->numChildren = 0; - (pOutput + i)->numNewChildren = 0; - } - } - } - } - if (pNumListed != NULL) - *pNumListed = i; - - return err; -} -// list the headers of the top-level thread ids -MsgERR MessageDBView::ListThreadIds(MessageKey * /*startMsg*/, - MessageKey * /*pOutput*/, - int /*numToList*/, - int * /*numListed*/) -{ - return eNYI; -} -MsgERR MessageDBView::ListThreadIds(ListContext * /*context*/, - MessageKey * /*pOutput*/, - int /*numToList*/, - int * /*numListed*/) -{ - return eNYI; -} -// return the list header information for the documents in a thread. -MsgERR MessageDBView::ListThread(MessageKey /*threadId*/, - MessageKey /*startMsg*/, - int /*numToList*/, - MessageHdrStruct * /*pOutput*/, - int * /*pNumListed*/) -{ - return eNYI; -} -MsgERR MessageDBView::ListThreadShort(MessageKey /*threadId*/, - MessageKey /*startMsg*/, - int /*numToList*/, - MSG_MessageLine * /*pOutput*/, - int * /*pNumListed*/) -{ - return eNYI; -} - -MsgERR MessageDBView::ListShortMsgHdrByIndex(MSG_ViewIndex startIndex, int numToList, MSG_MessageLine *pOutput, int *pNumListed) -{ - MsgERR err = eSUCCESS; - - XP_BZERO(pOutput, sizeof(*pOutput) * numToList); - int i; - for (i = 0; i < numToList && err == eSUCCESS; i++) - { - if (i + startIndex < m_idArray.GetSize()) - { - err = m_messageDB->GetShortMessageHdr(m_idArray[i + startIndex], pOutput + i); - if (err == eSUCCESS) - { - char extraFlag = m_flags[i + startIndex]; - - CopyExtraFlagsToPublicFlags(extraFlag, &((pOutput + i)->flags)); - // force non-threaded view to be flat. Wish FE's would do this - if (m_sortType != SortByThread) - { - (pOutput + i)->level = 0; - } - else - { - (pOutput + i)->level = m_levels[i + startIndex]; - } - // m_levels is only valid in the thread sort - otherwise, use kIsThread flag, - // Ideally, we'd always use kIsThread, but this is a safer fix for now. - // It's probably not worth keeping level array valid for sorted views. - if (m_levels[i + startIndex] == 0 && m_sortType == SortByThread || (m_sortType != SortByThread && extraFlag & kIsThread)) - { - DBThreadMessageHdr *thread = m_messageDB->GetDBThreadHdrForThreadID((pOutput + i)->threadId); - if (thread != NULL) - { - if (m_sortType == SortByThread) // don't set child counts if not threaded - { - if (m_viewFlags & kUnreadOnly) - { - if (extraFlag & kElided) - { - (pOutput + i)->numChildren = thread->GetNumNewChildren() - 1; - if (extraFlag & kIsRead) // count top message if it's read. - (pOutput + i)->numChildren++; - } - else - (pOutput + i)->numChildren = CountExpandedThread(i + startIndex) -1; - } - else - (pOutput + i)->numChildren = thread->GetNumChildren() - 1; - if ((int16) ((pOutput + i)->numChildren) < 0) - (pOutput + i)->numChildren = 0; - (pOutput + i)->numNewChildren = thread->GetNumNewChildren(); - } - if (thread->GetFlags() & kIgnored) - (pOutput + i)->flags |= MSG_FLAG_IGNORED; - else - (pOutput + i)->flags &= ~MSG_FLAG_IGNORED; - if (thread->GetFlags() & kWatched) - (pOutput + i)->flags |= MSG_FLAG_WATCHED; - else - (pOutput + i)->flags &= ~MSG_FLAG_WATCHED; - delete thread; - } - } - } - } - else - { - err = eID_NOT_FOUND; - } - } - if (pNumListed != NULL) - *pNumListed = i; - - return err; -} - -MsgERR MessageDBView::ListMsgHdrByIndex(MSG_ViewIndex startIndex, int numToList, MessageHdrStruct *pOutput, int *pNumListed) -{ - MsgERR err = eSUCCESS; - - XP_BZERO(pOutput, sizeof(*pOutput) * numToList); - int i; - for (i = 0; i < numToList && err == eSUCCESS; i++) - { - if (i + startIndex < m_idArray.GetSize()) - { - err = m_messageDB->GetMessageHdr(m_idArray[i + startIndex], - pOutput + i); - if (err == eSUCCESS) - { - CopyExtraFlagsToPublicFlags(m_flags[i + startIndex], - &((pOutput + i)->m_flags)); - // force non-threaded view to be flat. - if (m_sortType != SortByThread) - { - (pOutput + i)->m_level = 0; - (pOutput + i)->m_flags &= ~(kHasChildren); - } - else - { - (pOutput + i)->m_level = m_levels[i + startIndex]; - if ((pOutput + i)->m_level == 0) - { - DBThreadMessageHdr *thread = m_messageDB->GetDBThreadHdrForThreadID((pOutput + i)->m_threadId); - if (thread != NULL) - { - (pOutput + i)->m_numChildren = thread->GetNumChildren() - 1; - (pOutput + i)->m_numNewChildren = thread->GetNumNewChildren(); - delete thread; - } - } - } - } - } - else - { - err = eID_NOT_FOUND; - } - } - if (pNumListed != NULL) - *pNumListed = i; - - return err; -} - -MsgERR MessageDBView::GetMsgLevelByIndex(MSG_ViewIndex index, int &level) -{ - MsgERR err = eSUCCESS; - level = 0; - - if ((int) index < m_levels.GetSize() ) { - level = m_sortType == SortByThread ? m_levels[ index ] : 0; - } else { - err = eID_NOT_FOUND; - } - - return err; -} - -// This counts the number of messages in an expanded thread, given the -// index of the first message in the thread. -int32 MessageDBView::CountExpandedThread(MSG_ViewIndex index) -{ - int32 numInThread = 0; - MSG_ViewIndex startOfThread = index; - while ((int32) startOfThread >= 0 && m_levels[startOfThread] != 0) - startOfThread--; - MSG_ViewIndex threadIndex = startOfThread; - do - { - threadIndex++; - numInThread++; - } - while ((int32) threadIndex < m_levels.GetSize() && m_levels[threadIndex] != 0); - - return numInThread; -} - -// returns the number of lines that would be added (> 0) or removed (< 0) -// if we were to try to expand/collapse the passed index. -MsgERR MessageDBView::ExpansionDelta(MSG_ViewIndex index, int32 *expansionDelta) -{ - int32 numChildren; - MsgERR err; - - *expansionDelta = 0; - if ((int) index > m_idArray.GetSize()) - return eID_NOT_FOUND; - char flags = m_flags[index]; - - if (m_sortType != SortByThread) - return eSUCCESS; - - // The client can pass in the key of any message - // in a thread and get the expansion delta for the thread. - - if (!(m_viewFlags & kUnreadOnly)) - { - err = m_messageDB->GetThreadCount(m_idArray[index], &numChildren); - if (err != eSUCCESS) - return err; - } - else - { - numChildren = CountExpandedThread(index); - } - - if (flags & kElided) - *expansionDelta = numChildren - 1; - else - *expansionDelta = - (numChildren - 1); - - return eSUCCESS; -} - -MsgERR MessageDBView::ToggleExpansion(MSG_ViewIndex index, uint32 *numChanged) -{ - MSG_ViewIndex threadIndex = ThreadIndexOfMsg(GetAt(index), index); - if (threadIndex == MSG_VIEWINDEXNONE) - { - XP_ASSERT(FALSE); - return eNotThread; - } - char flags = m_flags[threadIndex]; - - // if not a thread, or doesn't have children, no expand/collapse - // If we add sub-thread expand collapse, this will need to be relaxed - if (!(flags & kIsThread) || !(flags && kHasChildren)) - return eNotThread; - if (flags & kElided) - return ExpandByIndex(threadIndex, numChanged); - else - return CollapseByIndex(threadIndex, numChanged); - -} - -MsgERR MessageDBView::ExpandAll() -{ - for (int i = GetSize() - 1; i >= 0; i--) - { - uint32 numExpanded; - char flags = m_flags[i]; - if (flags & kElided) - ExpandByIndex(i, &numExpanded); - } - return eSUCCESS; -} - -MsgERR MessageDBView::CollapseAll() -{ - for (int i = 0; i < GetSize(); i++) - { - uint32 numCollapsed; - char flags = m_flags[i]; - if (!(flags & kElided)) - CollapseByIndex(i, &numCollapsed); - } - return eSUCCESS; -} - - -MsgERR MessageDBView::ExpandByIndex(MSG_ViewIndex index, uint32 *pNumExpanded) -{ - int numListed; - char flags = m_flags[index]; - MessageKey firstIdInThread, startMsg = kIdNone; - MsgERR err; - MSG_ViewIndex firstInsertIndex = index + 1; - MSG_ViewIndex insertIndex = firstInsertIndex; - uint32 numExpanded = 0; - IDArray tempIDArray; - XPByteArray tempFlagArray; - XPByteArray tempLevelArray; - XPByteArray unreadLevelArray; - - XP_ASSERT(flags & kElided); - flags &= ~kElided; - - if ((int) index > m_idArray.GetSize()) - return eID_NOT_FOUND; - - firstIdInThread = m_idArray[index]; - DBMessageHdr *msgHdr = m_messageDB->GetDBHdrForKey(firstIdInThread); - if (msgHdr == NULL) - { - XP_ASSERT(FALSE); - return eID_NOT_FOUND; - } - m_flags[index] = flags; - NoteChange(index, 1, MSG_NotifyChanged); - do - { - const int listChunk = 200; - MessageKey listIDs[listChunk]; - char listFlags[listChunk]; - char listLevels[listChunk]; - - - if (m_viewFlags & kUnreadOnly) - { - if (flags & kIsRead) - unreadLevelArray.Add(0); // keep top level hdr in thread, even though read. - err = m_messageDB->ListUnreadIdsInThread(msgHdr->GetThreadId(), &startMsg, unreadLevelArray, - listChunk, listIDs, listFlags, listLevels, &numListed); - } - else - err = m_messageDB->ListIdsInThread(msgHdr, &startMsg, listChunk, - listIDs, listFlags, listLevels, &numListed); - - // Don't add thread to view, it's already in. - for (int i = 0; i < numListed; i++) - { - if (listIDs[i] != firstIdInThread) - { - tempIDArray.Add(listIDs[i]); - tempFlagArray.Add(listFlags[i]); - tempLevelArray.Add(listLevels[i]); - insertIndex++; - } - } - if (numListed < listChunk || startMsg == kIdNone) - break; - } - while (err == eSUCCESS); - numExpanded = (insertIndex - firstInsertIndex); - - NoteStartChange(firstInsertIndex, numExpanded, MSG_NotifyInsertOrDelete); - - m_idArray.InsertAt(firstInsertIndex, &tempIDArray); - m_flags.InsertAt(firstInsertIndex, &tempFlagArray); - m_levels.InsertAt(firstInsertIndex, &tempLevelArray); - - NoteEndChange(firstInsertIndex, numExpanded, MSG_NotifyInsertOrDelete); - delete msgHdr; - if (pNumExpanded != NULL) - *pNumExpanded = numExpanded; - return err; -} - -MsgERR MessageDBView::CollapseByIndex(MSG_ViewIndex index, uint32 *pNumCollapsed) -{ - MessageKey firstIdInThread; - MsgERR err; - char flags = m_flags[index]; - int32 threadCount = 0; - - if (flags & kElided || m_sortType != SortByThread) - return eSUCCESS; - flags |= kElided; - - if (index > m_idArray.GetSize()) - return eID_NOT_FOUND; - - firstIdInThread = m_idArray[index]; - DBMessageHdr *msgHdr = m_messageDB->GetDBHdrForKey(firstIdInThread); - if (msgHdr == NULL) - { - XP_ASSERT(FALSE); - return eID_NOT_FOUND; - } - - m_flags[index] = flags; - NoteChange(index, 1, MSG_NotifyChanged); - - err = ExpansionDelta(index, &threadCount); - if (err == eSUCCESS) - { - int32 numRemoved = threadCount; // don't count first header in thread - NoteStartChange(index + 1, -numRemoved, MSG_NotifyInsertOrDelete); - // start at first id after thread. - for (int i = 1; i <= threadCount && index + 1 < m_idArray.GetSize(); i++) - { - m_idArray.RemoveAt(index + 1); - m_flags.RemoveAt(index + 1); - m_levels.RemoveAt(index + 1); - } - if (pNumCollapsed != NULL) - *pNumCollapsed = numRemoved; - NoteEndChange(index + 1, -numRemoved, MSG_NotifyInsertOrDelete); - } - delete msgHdr; - return err; -} - -MsgERR MessageDBView::FindPrevUnread(MessageKey startKey, MessageKey *pResultKey, - MessageKey *resultThreadId) -{ - MSG_ViewIndex startIndex = FindViewIndex(startKey); - MSG_ViewIndex curIndex = startIndex; - MSG_ViewIndex lastIndex = (uint32) GetSize() - 1; - MsgERR err = eID_NOT_FOUND; - - if (startIndex == kViewIndexNone) - return eID_NOT_FOUND; - - *pResultKey = kIdNone; - if (resultThreadId) - *resultThreadId = kIdNone; - - for (; (int) curIndex >= 0 && (*pResultKey == kIdNone); curIndex--) - { - char flags = m_flags[curIndex]; - - if (curIndex != startIndex && flags & kIsThread && flags & kElided) - { - MessageKey threadId = m_idArray[curIndex]; - err = m_messageDB->GetUnreadKeyInThread(threadId, pResultKey, - resultThreadId); - if (err == eSUCCESS && (*pResultKey != kIdNone)) - break; - } - if (!(flags & kIsRead) && (curIndex != startIndex)) - { - *pResultKey = m_idArray[curIndex]; - err = eSUCCESS; - break; - } - } - // found unread message but we don't know the thread - if (*pResultKey != kIdNone && resultThreadId && *resultThreadId == kIdNone) - { - *resultThreadId = m_messageDB->GetThreadIdForMsgId(*pResultKey); - } - return err; -} - -// Note that these routines do NOT expand collapsed threads! This mimics the old behaviour, -// but it's also because we don't remember whether a thread contains a flagged message the -// same way we remember if a thread contains new messages. It would be painful to dive down -// into each collapsed thread to update navigate status. -// We could cache this info, but it would still be expensive the first time this status needs -// to get updated. -MsgERR MessageDBView::FindFirstFlagged(MSG_ViewIndex * pResultIndex) -{ - return FindNextFlagged(0, pResultIndex); -} - -MsgERR MessageDBView::FindPrevFlagged(MSG_ViewIndex startIndex, MSG_ViewIndex *pResultIndex) -{ - MSG_ViewIndex lastIndex = (uint32) GetSize() - 1; - MSG_ViewIndex curIndex; - - *pResultIndex = MSG_VIEWINDEXNONE; - - if (GetSize() > 0 && IsValidIndex(startIndex)) - { - - curIndex = startIndex; - do - { - if (curIndex != 0) - curIndex--; - - char flags = m_flags[curIndex]; - if (flags & kMsgMarked) - { - *pResultIndex = curIndex; - break; - } - } - while (curIndex != 0); - } - return eSUCCESS; -} - -MsgERR MessageDBView::FindNextFlagged(MSG_ViewIndex startIndex, MSG_ViewIndex *pResultIndex) -{ - MSG_ViewIndex lastIndex = (uint32) GetSize() - 1; - MSG_ViewIndex curIndex; - - *pResultIndex = MSG_VIEWINDEXNONE; - - if (GetSize() > 0) - { - for (curIndex = startIndex; curIndex <= lastIndex; curIndex++) - { - char flags = m_flags[curIndex]; - if (flags & kMsgMarked) - { - *pResultIndex = curIndex; - break; - } - } - } - return eSUCCESS; -} - -MsgERR MessageDBView::FindFirstNew(MSG_ViewIndex * pResultIndex) -{ - MessageKey firstNewKey = m_messageDB->GetFirstNew(); - if (pResultIndex) - *pResultIndex = FindKey(firstNewKey, TRUE); - return eSUCCESS; -} - -// Generic routine to find next unread id. It doesn't do an expand of a -// thread with new messages, so it can't return a view index. -MsgERR MessageDBView::FindNextUnread(MessageKey startId, MessageKey *pResultKey, - MessageKey *resultThreadId) -{ - MSG_ViewIndex startIndex = FindViewIndex(startId); - MSG_ViewIndex curIndex = startIndex; - MSG_ViewIndex lastIndex = (uint32) GetSize() - 1; - MsgERR err = eSUCCESS; - - if (startIndex == kViewIndexNone) - return eID_NOT_FOUND; - - *pResultKey = kIdNone; - if (resultThreadId) - *resultThreadId = kIdNone; - - for (; curIndex <= lastIndex && (*pResultKey == kIdNone); curIndex++) - { - char flags = m_flags[curIndex]; - - if (!(flags & kIsRead) && (curIndex != startIndex)) - { - *pResultKey = m_idArray[curIndex]; - break; - } - // check for collapsed thread with new children - if (m_sortType == SortByThread && flags & kIsThread && flags & kElided) - { - MessageKey threadId = m_idArray[curIndex]; - err = m_messageDB->GetUnreadKeyInThread(threadId, pResultKey, - resultThreadId); - if (err == eSUCCESS && (*pResultKey != kIdNone)) - break; - } - } - // found unread message but we don't know the thread - if (*pResultKey != kIdNone && resultThreadId && *resultThreadId == kIdNone) - { - *resultThreadId = m_messageDB->GetThreadIdForMsgId(*pResultKey); - } - return err; -} - -MsgERR MessageDBView::DataNavigate( MessageKey startKey, MSG_MotionType motion, - MessageKey *pResultKey, MessageKey *pThreadKey) -{ - MsgERR err = eSUCCESS; - MSG_ViewIndex resultIndex; - MSG_ViewIndex lastIndex = (uint32) GetSize() - 1; - MSG_ViewIndex startIndex = FindViewIndex(startKey); - - if (startIndex == kViewIndexNone) - return eID_NOT_FOUND; - - XP_ASSERT(pResultKey != NULL ); - if (pResultKey == NULL) - return eBAD_PARAMETER; - - switch (motion) - { - case MSG_FirstMessage: - *pResultKey = m_idArray[0]; - break; - case MSG_NextMessage: - // return same index and id on next on last message - resultIndex = MIN(startIndex + 1, lastIndex); - *pResultKey = m_idArray[resultIndex]; - break; - case MSG_PreviousMessage: - *pResultKey = m_idArray[(startIndex > 0) ? startIndex : 0]; - break; - case MSG_LastMessage: - *pResultKey = m_idArray[lastIndex]; - break; - case MSG_FirstUnreadMessage: - // note fall thru - is this motion ever used? - startKey = m_idArray[0]; - case MSG_NextUnreadMessage: - // It might be worthwhile to not actually find the next unread, - // but just determine if there is one. Or, it might be worth - // remembering the next unread. - FindNextUnread(startKey, pResultKey, pThreadKey); - break; - case MSG_PreviousUnreadMessage: - // will do an expand - err = FindPrevUnread(startKey, pResultKey, pThreadKey); - break; - case MSG_LastUnreadMessage: - break; - - default: - XP_ASSERT(FALSE); // unsupported motion. - break; - } - return err; -} - -typedef struct CommandStrLookup -{ - int command; - int mkStringNum; -} CommandStrLookup; - -// Because some compilers can't initialize static data with ints, we have the following pain -CommandStrLookup navigateCommands[] = -{ - { MSG_FirstMessage, 0, /*MK_MSG_FIRST_MSG */}, - { MSG_NextMessage, 0, /*MK_MSG_NEXT_MSG */}, - { MSG_PreviousMessage, 0, /*MK_MSG_PREV_MSG */}, - { MSG_LastMessage, 0, /*MK_MSG_LAST_MSG */}, - { MSG_FirstUnreadMessage, 0, /*MK_MSG_FIRST_UNREAD */}, - { MSG_NextUnreadMessage, 0, /*MK_MSG_NEXT_UNREAD */}, - { MSG_PreviousUnreadMessage, 0, /*MK_MSG_PREV_UNREAD */}, - { MSG_LastUnreadMessage, 0, /*MK_MSG_LAST_UNREAD */}, - { MSG_ReadMore, 0, /*MK_MSG_READ_MORE */}, - { MSG_NextUnreadThread, 0, /*MK_MSG_NEXTUNREAD_THREAD */}, - { MSG_NextUnreadGroup, 0, /*MK_MSG_NEXTUNREAD_GROUP */}, - { MSG_FirstFlagged, 0, /*MK_MSG_FIRST_FLAGGED */}, - { MSG_NextFlagged, 0, /*MK_MSG_NEXT_FLAGGED */}, - { MSG_PreviousFlagged, 0, /*MK_MSG_PREVIOUS_FLAGGED */}, -}; - -/*static*/ void MessageDBView::InitNavigateCommands() -{ - if (navigateCommands[0].mkStringNum == 0) - { - navigateCommands[0].mkStringNum = MK_MSG_FIRST_MSG; - navigateCommands[1].mkStringNum = MK_MSG_NEXT_MSG; - navigateCommands[2].mkStringNum = MK_MSG_PREV_MSG; - navigateCommands[3].mkStringNum = MK_MSG_LAST_MSG; - navigateCommands[4].mkStringNum = MK_MSG_FIRST_UNREAD; - navigateCommands[5].mkStringNum = MK_MSG_NEXT_UNREAD; - navigateCommands[6].mkStringNum = MK_MSG_PREV_UNREAD; - navigateCommands[7].mkStringNum = MK_MSG_LAST_UNREAD; - navigateCommands[8].mkStringNum = MK_MSG_READ_MORE; - navigateCommands[9].mkStringNum = MK_MSG_NEXTUNREAD_THREAD; - navigateCommands[10].mkStringNum = MK_MSG_NEXTUNREAD_GROUP; - navigateCommands[11].mkStringNum = MK_MSG_FIRST_FLAGGED; - navigateCommands[12].mkStringNum = MK_MSG_NEXT_FLAGGED; - navigateCommands[13].mkStringNum = MK_MSG_PREV_FLAGGED; - } -} - -MsgERR MessageDBView::GetNavigateStatus(MSG_MotionType motion, MSG_ViewIndex index, - XP_Bool *selectable_p, - const char **display_string) -{ - XP_Bool enable = FALSE; - MsgERR err = eFAILURE; - MessageKey resultKey; - MSG_ViewIndex resultIndex = MSG_VIEWINDEXNONE; - - InitNavigateCommands(); - - // warning - we no longer validate index up front because fe passes in -1 for no - // selection, so if you use index, be sure to validate it before using it - // as an array index. - switch (motion) - { - case MSG_FirstMessage: - case MSG_LastMessage: - if (GetSize() > 0) - enable = TRUE; - break; - case MSG_NextMessage: - if (IsValidIndex(index) && index < (uint32) GetSize() - 1) - enable = TRUE; - break; - case MSG_PreviousMessage: - if (IsValidIndex(index) && index != 0 && GetSize() > 1) - enable = TRUE; - break; - case MSG_FirstFlagged: - err = FindFirstFlagged(&resultIndex); - enable = (err == eSUCCESS && resultIndex != MSG_VIEWINDEXNONE); - break; - case MSG_NextFlagged: - err = FindNextFlagged(index + 1, &resultIndex); - enable = (err == eSUCCESS && resultIndex != MSG_VIEWINDEXNONE); - break; - case MSG_PreviousFlagged: - if (IsValidIndex(index) && index != 0) - err = FindPrevFlagged(index, &resultIndex); - enable = (err == eSUCCESS && resultIndex != MSG_VIEWINDEXNONE); - break; - case MSG_FirstNew: - err = FindFirstNew(&resultIndex); - enable = (err == eSUCCESS && resultIndex != MSG_VIEWINDEXNONE); - break; - case MSG_LaterMessage: - enable = GetSize() > 0; - break; - case MSG_ReadMore: - enable = TRUE; // for now, always true. - break; - case MSG_NextFolder: - case MSG_NextUnreadGroup: - case MSG_NextUnreadThread: - case MSG_NextUnreadMessage: - case (MSG_MotionType) MSG_ToggleThreadKilled: - - enable = TRUE; // always enabled in nwo - break; - case MSG_PreviousUnreadMessage: - if (IsValidIndex(index)) - { - err = FindPrevUnread(m_idArray[index], &resultKey); - enable = (resultKey != kIdNone); - } - break; - default: - XP_ASSERT(FALSE); - - } - - if (selectable_p) - *selectable_p = enable; - -// look up motion code in CommandStrLookup. - for (int i = 0; display_string && i < (sizeof(navigateCommands) / sizeof(navigateCommands[0])); i++) - { - if (navigateCommands[i].command == motion) - { - *display_string = XP_GetString(navigateCommands[i].mkStringNum); - break; - } - } - return eSUCCESS; -} - - - -// Starting from startId, performs the passed in navigation, including -// any marking read needed, and returns the resultKey and index of the -// destination of the navigation. If there are no more unread in the view, -// it returns a resultId of kIdNone and an index of kViewIndexNone. -MsgERR MessageDBView::Navigate(MSG_ViewIndex startIndex, MSG_MotionType motion, - MessageKey * pResultKey, MSG_ViewIndex * pResultIndex, - MSG_ViewIndex *pThreadIndex, XP_Bool wrap /* = TRUE */) -{ - MsgERR err = eSUCCESS; - MessageKey resultThreadKey; - MSG_ViewIndex curIndex; - MSG_ViewIndex lastIndex = (GetSize() > 0) ? (uint32) GetSize() - 1 : kViewIndexNone; - MSG_ViewIndex threadIndex = kViewIndexNone; - - XP_ASSERT(pResultKey != NULL && pResultIndex != NULL ); - if (pResultKey == NULL || pResultIndex == NULL) - return eBAD_PARAMETER; - - switch (motion) - { - case MSG_FirstMessage: - if (GetSize() > 0) - { - *pResultIndex = 0; - *pResultKey = m_idArray[0]; - } - else - { - *pResultIndex = kViewIndexNone; - *pResultKey = MSG_MESSAGEKEYNONE; - } - break; - case MSG_NextMessage: - // return same index and id on next on last message - *pResultIndex = MIN(startIndex + 1, lastIndex); - *pResultKey = m_idArray[*pResultIndex]; - break; - case MSG_PreviousMessage: - *pResultIndex = (startIndex > 0) ? startIndex - 1 : 0; - *pResultKey = m_idArray[*pResultIndex]; - break; - case MSG_LastMessage: - *pResultIndex = lastIndex; - *pResultKey = m_idArray[*pResultIndex]; - break; - case MSG_FirstFlagged: - err = FindFirstFlagged(pResultIndex); - if (IsValidIndex(*pResultIndex)) - *pResultKey = m_idArray[*pResultIndex]; - break; - case MSG_NextFlagged: - err = FindNextFlagged(startIndex + 1, pResultIndex); - if (IsValidIndex(*pResultIndex)) - *pResultKey = m_idArray[*pResultIndex]; - break; - case MSG_PreviousFlagged: - err = FindPrevFlagged(startIndex, pResultIndex); - if (IsValidIndex(*pResultIndex)) - *pResultKey = m_idArray[*pResultIndex]; - break; - case MSG_FirstNew: - err = FindFirstNew(pResultIndex); - if (IsValidIndex(*pResultIndex)) - *pResultKey = m_idArray[*pResultIndex]; - break; - case MSG_FirstUnreadMessage: - startIndex = kViewIndexNone; // note fall thru - is this motion ever used? - case MSG_NextUnreadMessage: - for (curIndex = (startIndex == kViewIndexNone) ? 0 : startIndex; curIndex <= lastIndex && lastIndex != kViewIndexNone; curIndex++) - { - char flags = m_flags[curIndex]; - - // don't return start index since navigate should move - if (!(flags & kIsRead) && (curIndex != startIndex)) - { - *pResultIndex = curIndex; - *pResultKey = m_idArray[*pResultIndex]; - break; - } - // check for collapsed thread with new children - if (m_sortType == SortByThread && flags & kIsThread && flags & kElided) - { - DBThreadMessageHdr *threadHdr = m_messageDB->GetDBThreadHdrForMsgID(m_idArray[curIndex]); - if (threadHdr == NULL) - { - XP_ASSERT(FALSE); - continue; - } - if (threadHdr->GetNumNewChildren() > 0) - { - uint32 numExpanded; - ExpandByIndex(curIndex, &numExpanded); - lastIndex += numExpanded; - if (pThreadIndex != NULL) - *pThreadIndex = curIndex; - } - delete threadHdr; - - } - } - if (curIndex > lastIndex) - { - // wrap around by starting at index 0. - if (wrap) - { - MessageKey startKey = GetAt(startIndex); - - err = Navigate(kViewIndexNone, MSG_NextUnreadMessage, pResultKey, - pResultIndex, pThreadIndex, FALSE); - if (*pResultKey == startKey) // wrapped around and found start message! - { - *pResultIndex = kViewIndexNone; - *pResultKey = kIdNone; - } - } - else - { - *pResultIndex = kViewIndexNone; - *pResultKey = kIdNone; - } - } - break; - case MSG_PreviousUnreadMessage: - err = FindPrevUnread(m_idArray[startIndex], pResultKey, - &resultThreadKey); - if (err == eSUCCESS) - { - *pResultIndex = FindViewIndex(*pResultKey); - if (*pResultKey != resultThreadKey && m_sortType == SortByThread) - { - threadIndex = ThreadIndexOfMsg(*pResultKey, kViewIndexNone); - if (*pResultIndex == kViewIndexNone) - { - DBThreadMessageHdr *threadHdr = m_messageDB->GetDBThreadHdrForMsgID(*pResultKey); - if (threadHdr == NULL) - { - XP_ASSERT(FALSE); - break; - } - if (threadHdr->GetNumNewChildren() > 0) - { - uint32 numExpanded; - ExpandByIndex(threadIndex, &numExpanded); - } - delete threadHdr; - *pResultIndex = FindViewIndex(*pResultKey); - } - } - if (pThreadIndex != NULL) - *pThreadIndex = threadIndex; - } - break; - case MSG_LastUnreadMessage: - break; - case MSG_NextUnreadThread: - if (startIndex == kViewIndexNone) - { - XP_ASSERT(FALSE); - break; - } - err = MarkThreadOfMsgRead(m_idArray[startIndex], startIndex, TRUE); - if (err == eSUCCESS) - return Navigate(startIndex, MSG_NextUnreadMessage, pResultKey, - pResultIndex, pThreadIndex, TRUE); - break; - - - case MSG_ToggleThreadKilled: - { - XP_Bool resultKilled; - - if (startIndex == kViewIndexNone) - { - XP_ASSERT(FALSE); - break; - } - threadIndex = ThreadIndexOfMsg(GetAt(startIndex), startIndex); - ToggleIgnored( &startIndex, 1, &resultKilled); - if (resultKilled) - { - if (threadIndex != MSG_VIEWINDEXNONE) - CollapseByIndex(threadIndex, NULL); - return Navigate(threadIndex, MSG_NextUnreadThread, pResultKey, - pResultIndex, pThreadIndex); - } - else - { - *pResultIndex = startIndex; - *pResultKey = m_idArray[*pResultIndex]; - return eSUCCESS; - } - } - case MSG_LaterMessage: - if (startIndex == kViewIndexNone) - { - XP_ASSERT(FALSE); - break; - } - m_messageDB->MarkLater(m_idArray[startIndex], 0); - return Navigate(startIndex, MSG_NextUnreadMessage, pResultKey, - pResultIndex, pThreadIndex); - - default: - XP_ASSERT(FALSE); // unsupported motion. - break; - } - return err; -} - -MSG_ViewIndex MessageDBView::GetIndexOfFirstDisplayedKeyInThread(DBThreadMessageHdr *threadHdr) -{ - MSG_ViewIndex retIndex = MSG_VIEWINDEXNONE; - int childIndex = 0; - // We could speed up the unreadOnly view by starting our search with the first - // unread message in the thread. Sometimes, that will be wrong, however, so - // let's skip it until we're sure it's neccessary. -// (m_viewFlags & kUnreadOnly) -// ? threadHdr->GetFirstUnreadKey(m_messageDB) : threadHdr->GetChildAt(0); - while (retIndex == MSG_VIEWINDEXNONE && childIndex < threadHdr->GetNumChildren()) - { - MessageKey childKey = threadHdr->GetChildAt(childIndex++); - retIndex = FindViewIndex(childKey); - } - return retIndex; -} - -DBMessageHdr *MessageDBView::GetFirstMessageHdrToDisplayInThread(DBThreadMessageHdr *threadHdr) -{ - DBMessageHdr *msgHdr; - - if (m_viewFlags & kUnreadOnly) - msgHdr = threadHdr->GetFirstUnreadChild(GetDB()); - else - msgHdr = threadHdr->GetChildHdrAt(0); - return msgHdr; -} - -// caller must referTo hdr if they want to hold it or change it! -DBMessageHdr *MessageDBView::GetFirstDisplayedHdrInThread(DBThreadMessageHdr *threadHdr) -{ - MSG_ViewIndex viewIndex = GetIndexOfFirstDisplayedKeyInThread(threadHdr); - MessageKey msgKey = GetAt(viewIndex); - return (msgKey == MSG_MESSAGEKEYNONE) ? 0 : m_messageDB->GetDBHdrForKey(msgKey); -} - -// Find the view index of the thread containing the passed msgKey, if -// the thread is in the view. MsgIndex is passed in as a shortcut if -// it turns out the msgKey is the first message in the thread, -// then we can avoid looking for the msgKey. -MSG_ViewIndex MessageDBView::ThreadIndexOfMsg(MessageKey msgKey, - MSG_ViewIndex msgIndex /* = kViewIndexNone */, - int32 *pThreadCount /* = NULL */, - uint32 *pFlags /* = NULL */) -{ - if (m_sortType != SortByThread) - return kViewIndexNone; - DBThreadMessageHdr *threadHdr = m_messageDB->GetDBThreadHdrForMsgID(msgKey); - MSG_ViewIndex retIndex = kViewIndexNone; - - if (threadHdr != NULL) - { - if (msgIndex == kViewIndexNone) - msgIndex = FindViewIndex(msgKey); - - if (msgIndex == kViewIndexNone) // key is not in view, need to find by thread - { - msgIndex = GetIndexOfFirstDisplayedKeyInThread(threadHdr); - MessageKey threadKey = (msgIndex == kViewIndexNone) ? kIdNone : GetAt(msgIndex); - if (pFlags) - *pFlags = threadHdr->GetFlags(); - } - MSG_ViewIndex startOfThread = msgIndex; - while ((int32) startOfThread >= 0 && m_levels[startOfThread] != 0) - startOfThread--; - retIndex = startOfThread; - if (pThreadCount) - { - int32 numChildren = 0; - MSG_ViewIndex threadIndex = startOfThread; - do - { - threadIndex++; - numChildren++; - } - while ((int32) threadIndex < m_levels.GetSize() && m_levels[threadIndex] != 0); - *pThreadCount = numChildren; - } - delete threadHdr; - } - return retIndex; -} - -MsgERR MessageDBView::MarkThreadOfMsgRead(MessageKey msgId, MSG_ViewIndex msgIndex, XP_Bool bRead) -{ - DBThreadMessageHdr *threadHdr = m_messageDB->GetDBThreadHdrForMsgID(msgId); - MSG_ViewIndex threadIndex; - MsgERR err; - - if (threadHdr == NULL) - { - XP_ASSERT(FALSE); - return eID_NOT_FOUND; - } - if (msgId != threadHdr->GetChildAt(0)) - threadIndex = GetIndexOfFirstDisplayedKeyInThread(threadHdr); - else - threadIndex = msgIndex; - err = MarkThreadRead(threadHdr, threadIndex, bRead); - delete threadHdr; - return err; -} - -MsgERR MessageDBView::MarkThreadRead(DBThreadMessageHdr *threadHdr, - MSG_ViewIndex threadIndex, XP_Bool bRead) -{ - XP_Bool threadElided = TRUE; - if (threadIndex != kViewIndexNone) - threadElided = (m_flags[threadIndex] & kElided); - - for (int childIndex = 0; childIndex < threadHdr->GetNumChildren(); - childIndex++) - { - DBMessageHdr *msgHdr = threadHdr->GetChildHdrAt(childIndex); - if (msgHdr == NULL) - { -#ifdef DEBUG_bienvenu - XP_ASSERT(FALSE); -#endif - continue; - } - // don't pass in listener so we can get change notification! - // We used to mark read through the view, but we weren't checking - // if the key actually was in the view. - m_messageDB->MarkHdrRead(msgHdr, bRead, NULL /* &m_changeListener */); - delete msgHdr; - } - if (bRead) - threadHdr->SetNumNewChildren(0); - else - threadHdr->SetNumNewChildren(threadHdr->GetNumChildren()); - return eSUCCESS; -} -// view modifications methods by index - -// read/unread handling. -MsgERR MessageDBView::ToggleReadByIndex(MSG_ViewIndex index) -{ - if (!IsValidIndex(index)) - return eInvalidIndex; - return SetReadByIndex(index, !(m_flags[index] & kIsRead)); -} - -MsgERR MessageDBView::SetReadByIndex(MSG_ViewIndex index, XP_Bool read) -{ - MsgERR err; - - if (!IsValidIndex(index)) - return eInvalidIndex; - if (read) - OrExtraFlag(index, kIsRead); - else - AndExtraFlag(index, ~kIsRead); - - err = m_messageDB->MarkRead(m_idArray[index], read, &m_changeListener); - NoteChange(index, 1, MSG_NotifyChanged); - if (m_sortType == SortByThread) - { - MSG_ViewIndex threadIndex = ThreadIndexOfMsg(m_idArray[index], index, NULL, NULL); - if (threadIndex != index) - NoteChange(threadIndex, 1, MSG_NotifyChanged); - } - return err; -} - -MsgERR MessageDBView::SetThreadOfMsgReadByIndex(MSG_ViewIndex index, XP_Bool /*read*/) -{ - MsgERR err; - - if (!IsValidIndex(index)) - return eInvalidIndex; - err = MarkThreadOfMsgRead(m_idArray[index], index, TRUE); - return err; -} - - -static MsgERR -msg_AddNameAndAddressToAB (MWContext* context, const char *name, const char *address, XP_Bool lastOneToAdd) -{ - MsgERR err = eSUCCESS; - PersonEntry person; - char * tempname = NULL; - DIR_Server* pab = NULL; - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(context); - - person.Initialize(); - - if (XP_STRLEN (name)) - tempname = XP_STRDUP (name); - else - { - int len = 0; - char * at = NULL; - if (address) - { - // if the mail address doesn't contain @ - // then the name is the whole email address - if ((at = XP_STRCHR(address, '@')) == NULL) - tempname = MSG_ExtractRFC822AddressNames (address); - else { - // otherwise extract everything up to the @ - // for the name - len = XP_STRLEN (address) - XP_STRLEN (at); - tempname = (char *) XP_ALLOC (len + 1); - XP_STRNCPY_SAFE (tempname, address, len + 1); - } - } - } - - person.pGivenName = tempname; - person.pEmailAddress = XP_STRDUP (address); - person.WinCSID = INTL_GetCSIWinCSID(c); - AB_BreakApartFirstName (FE_GetAddressBook(NULL), &person); - DIR_GetPersonalAddressBook (FE_GetDirServers(), &pab); - - err = AB_AddUserWithUI (context, &person, pab, lastOneToAdd); - - person.CleanUp(); - - return err; -} - - /* new address book APIs require a destination container */ -MsgERR MessageDBView::AddSenderToABByIndex(MSG_Pane * pane, MWContext* context, MSG_ViewIndex index, XP_Bool lastOneToAdd, XP_Bool displayRecip, AB_ContainerInfo * destAB) -{ - /* taken verbatim from the old address book version except we call the new API AB_AddNameAndAddress */ - MsgERR err = eSUCCESS; - char author[512]; - char authorname [256]; - int num; - char * name = NULL; - char * address = NULL; - - if (!IsValidIndex(index)) - return eInvalidIndex; - if (!context) - return eUNKNOWN; - - DBMessageHdr *dbHdr = m_messageDB->GetDBHdrForKey(m_idArray[index]); - if (displayRecip) - { - int32 numRecips = dbHdr->GetNumRecipients(); - for (int32 i = 0; i < numRecips && err == eSUCCESS; i++) - { - XPStringObj recipName; - dbHdr->GetNameOfRecipient (recipName, (int) i, m_messageDB->GetDB()); - - XPStringObj recipAddress; - dbHdr->GetMailboxOfRecipient (recipAddress, (int) i, m_messageDB->GetDB()); - - err = AB_AddNameAndAddress(pane, destAB, recipName, recipAddress, lastOneToAdd); - } - } - else - { - dbHdr->GetRFC822Author(authorname, sizeof (authorname), m_messageDB->GetDB()); - dbHdr->GetAuthor(author, sizeof (author), m_messageDB->GetDB()); - num = MSG_ParseRFC822Addresses(author, &name, &address); - if (num < 0) - return eOUT_OF_MEMORY; - - err = AB_AddNameAndAddress (pane, destAB, authorname, address, lastOneToAdd); - } - delete dbHdr; - - XP_FREEIF (name); - XP_FREEIF (address); - - return err; -} - -MsgERR MessageDBView::AddAllToABByIndex(MSG_Pane * pane, MWContext* context, MSG_ViewIndex index, XP_Bool lastOneToAdd, AB_ContainerInfo * destAB) -{ - /* copied pretty much verbatim from the old address book version except we call the new APIs. */ - MsgERR err = eSUCCESS; - XPStringObj prettyname; - XPStringObj mailbox; - int32 numRecipients = 0; - int32 numCCList = 0; - char name [kMaxFullNameLength]; - char address [kMaxEmailAddressLength]; - - if (!IsValidIndex(index)) - return eInvalidIndex; - - DBMessageHdr *dbHdr = m_messageDB->GetDBHdrForKey(m_idArray[index]); - - numRecipients = dbHdr->GetNumRecipients(); - numCCList = dbHdr->GetNumCCRecipients(); - - err = AddSenderToABByIndex (pane, context, index, (lastOneToAdd && numRecipients == 0 && numCCList == 0), FALSE, destAB); - - if (err != eSUCCESS) { - delete dbHdr; - return eUNKNOWN; - } - - for (int32 i = 0; i < numRecipients && err == eSUCCESS; i++) - { - dbHdr->GetNameOfRecipient(prettyname, i, m_messageDB->GetDB()); - XP_STRNCPY_SAFE(name, prettyname, kMaxFullNameLength); - dbHdr->GetMailboxOfRecipient(mailbox, i, m_messageDB->GetDB()); - XP_STRNCPY_SAFE(address, mailbox, kMaxEmailAddressLength); - err = AB_AddNameAndAddress (pane, destAB,name, address, (lastOneToAdd && - ( i == numRecipients - 1) && (numCCList == 0))); - } - - for (int32 j = 0; j < numCCList && err == eSUCCESS; j++) - { - dbHdr->GetNameOfCCRecipient(prettyname, j, m_messageDB->GetDB()); - XP_STRNCPY_SAFE(name, prettyname, kMaxFullNameLength); - dbHdr->GetMailboxOfCCRecipient(mailbox, j, m_messageDB->GetDB()); - XP_STRNCPY_SAFE(address, mailbox, kMaxEmailAddressLength); - err = AB_AddNameAndAddress (pane, destAB, name, address, (lastOneToAdd && (j == numCCList - 1))); - } - - delete dbHdr; - - return err; -} - -/* mscott: DELETE THESE AS SOON AS THE NEW ADDRESS BOOK IS TURNED ON FOR EVERYONE */ -MsgERR MessageDBView::AddSenderToABByIndex(MWContext * context, MSG_ViewIndex index, XP_Bool lastOneToAdd, XP_Bool displayRecip) -{ - MsgERR err = eSUCCESS; - char author[512]; - char authorname [256]; - int num; - char * name = NULL; - char * address = NULL; - - if (!IsValidIndex(index)) - return eInvalidIndex; - if (!context) - return eUNKNOWN; - - DBMessageHdr *dbHdr = m_messageDB->GetDBHdrForKey(m_idArray[index]); - if (displayRecip) - { - int32 numRecips = dbHdr->GetNumRecipients(); - for (int32 i = 0; i < numRecips && err == eSUCCESS; i++) - { - XPStringObj recipName; - dbHdr->GetNameOfRecipient (recipName, (int) i, m_messageDB->GetDB()); - - XPStringObj recipAddress; - dbHdr->GetMailboxOfRecipient (recipAddress, (int) i, m_messageDB->GetDB()); - - err = msg_AddNameAndAddressToAB (context, recipName, recipAddress, lastOneToAdd); - } - } - else - { - dbHdr->GetRFC822Author(authorname, sizeof (authorname), m_messageDB->GetDB()); - dbHdr->GetAuthor(author, sizeof (author), m_messageDB->GetDB()); - num = MSG_ParseRFC822Addresses(author, &name, &address); - if (num < 0) - return eOUT_OF_MEMORY; - - err = msg_AddNameAndAddressToAB (context, authorname, address, lastOneToAdd); - } - delete dbHdr; - - XP_FREEIF (name); - XP_FREEIF (address); - - return err; -} - -MsgERR MessageDBView::AddAllToABByIndex(MWContext* context, MSG_ViewIndex index, XP_Bool lastOneToAdd) -{ - MsgERR err = eSUCCESS; - XPStringObj prettyname; - XPStringObj mailbox; - int32 numRecipients = 0; - int32 numCCList = 0; - char name [kMaxFullNameLength]; - char address [kMaxEmailAddressLength]; - - if (!IsValidIndex(index)) - return eInvalidIndex; - - DBMessageHdr *dbHdr = m_messageDB->GetDBHdrForKey(m_idArray[index]); - - numRecipients = dbHdr->GetNumRecipients(); - numCCList = dbHdr->GetNumCCRecipients(); - - err = AddSenderToABByIndex (context, index, (lastOneToAdd && numRecipients == 0 && numCCList == 0), FALSE); - - if (err != eSUCCESS) { - delete dbHdr; - return eUNKNOWN; - } - - for (int32 i = 0; i < numRecipients && err == eSUCCESS; i++) - { - dbHdr->GetNameOfRecipient(prettyname, i, m_messageDB->GetDB()); - XP_STRNCPY_SAFE(name, prettyname, kMaxFullNameLength); - dbHdr->GetMailboxOfRecipient(mailbox, i, m_messageDB->GetDB()); - XP_STRNCPY_SAFE(address, mailbox, kMaxEmailAddressLength); - err = msg_AddNameAndAddressToAB (context, name, address, (lastOneToAdd && - ( i == numRecipients - 1) && (numCCList == 0))); - } - - for (int32 j = 0; j < numCCList && err == eSUCCESS; j++) - { - dbHdr->GetNameOfCCRecipient(prettyname, j, m_messageDB->GetDB()); - XP_STRNCPY_SAFE(name, prettyname, kMaxFullNameLength); - dbHdr->GetMailboxOfCCRecipient(mailbox, j, m_messageDB->GetDB()); - XP_STRNCPY_SAFE(address, mailbox, kMaxEmailAddressLength); - err = msg_AddNameAndAddressToAB (context, name, address, (lastOneToAdd && (j == numCCList - 1))); - } - - delete dbHdr; - - return err; -} - -MsgERR MessageDBView::MarkMarkedByIndex(MSG_ViewIndex index, XP_Bool mark) -{ - MsgERR err; - - if (!IsValidIndex(index)) - return eInvalidIndex; - - if (mark) - OrExtraFlag(index, kMsgMarked); - else - AndExtraFlag(index, ~kMsgMarked); - - err = m_messageDB->MarkMarked(m_idArray[index], mark, &m_changeListener); - NoteChange(index, 1, MSG_NotifyChanged); - return err; -} - -// caller must RemoveReference thread! -MSG_ViewIndex MessageDBView::GetThreadFromMsgIndex(MSG_ViewIndex index, - DBThreadMessageHdr **threadHdr) -{ - MessageKey msgKey = GetAt(index); - MsgViewIndex threadIndex; - - XP_ASSERT(threadHdr); - *threadHdr = m_messageDB->GetDBThreadHdrForMsgID(msgKey); - - if (*threadHdr == NULL) - { -// XP_ASSERT(FALSE); - return MSG_VIEWINDEXNONE; - } - if (msgKey != (*threadHdr)->m_threadKey) - threadIndex = GetIndexOfFirstDisplayedKeyInThread(*threadHdr); - else - threadIndex = index; - return threadIndex; -} - -// ignore handling. -MsgERR MessageDBView::ToggleThreadIgnored(DBThreadMessageHdr *thread, MSG_ViewIndex threadIndex) - -{ - MsgERR err; - if (!IsValidIndex(threadIndex)) - return eInvalidIndex; - err = SetThreadIgnored(thread, threadIndex, !((thread->GetFlags() & kIgnored) != 0)); - return err; -} - -MsgERR MessageDBView::ToggleThreadWatched(DBThreadMessageHdr *thread, MSG_ViewIndex index) - -{ - MsgERR err; - if (!IsValidIndex(index)) - return eInvalidIndex; - err = SetThreadWatched(thread, index, !((thread->GetFlags() & kWatched) != 0)); - return err; -} - -MsgERR MessageDBView::ToggleIgnored( MsgViewIndex* indices, int32 numIndices, XP_Bool *resultToggleState) -{ - MsgERR err; - DBThreadMessageHdr *thread = NULL; - - if (numIndices == 1) - { - MsgViewIndex threadIndex = GetThreadFromMsgIndex(*indices, &thread); - if (thread) - { - err = ToggleThreadIgnored(thread, threadIndex); - if (resultToggleState) - *resultToggleState = (thread->GetFlags() & kIgnored) ? TRUE : FALSE; - delete thread; - } - } - else - { - if (numIndices > 1) - XP_QSORT (indices, numIndices, sizeof(MSG_ViewIndex), MSG_Pane::CompareViewIndices); - for (int curIndex = numIndices - 1; curIndex >= 0; curIndex--) - { - MsgViewIndex threadIndex = GetThreadFromMsgIndex(*indices, &thread); - } - } - return eSUCCESS; -} -MsgERR MessageDBView::ToggleWatched( MsgViewIndex* indices, int32 numIndices) -{ - MsgERR err; - DBThreadMessageHdr *thread = NULL; - - if (numIndices == 1) - { - MsgViewIndex threadIndex = GetThreadFromMsgIndex(*indices, &thread); - if (threadIndex != MSG_VIEWINDEXNONE) - { - err = ToggleThreadWatched(thread, threadIndex); - delete thread; - } - } - else - { - if (numIndices > 1) - XP_QSORT (indices, numIndices, sizeof(MSG_ViewIndex), MSG_Pane::CompareViewIndices); - for (int curIndex = numIndices - 1; curIndex >= 0; curIndex--) - { - MsgViewIndex threadIndex = GetThreadFromMsgIndex(*indices, &thread); - } - } - return eSUCCESS; -} - -MsgERR MessageDBView::SetThreadIgnored(DBThreadMessageHdr *thread, MSG_ViewIndex threadIndex, XP_Bool ignored) -{ - MsgERR err; - - if (!IsValidIndex(threadIndex)) - return eInvalidIndex; - err = m_messageDB->MarkThreadIgnored(thread, m_idArray[threadIndex], ignored, &m_changeListener); - NoteChange(threadIndex, 1, MSG_NotifyChanged); - if (ignored) - { - MarkThreadRead(thread, threadIndex, TRUE); - } - return err; -} -MsgERR MessageDBView::SetThreadWatched(DBThreadMessageHdr *thread, MSG_ViewIndex index, XP_Bool watched) -{ - MsgERR err; - - if (!IsValidIndex(index)) - return eInvalidIndex; - err = m_messageDB->MarkThreadWatched(thread, m_idArray[index], watched, &m_changeListener); - NoteChange(index, 1, MSG_NotifyChanged); - return err; -} - -MsgERR MessageDBView::SetKeyByIndex(MSG_ViewIndex index, MessageKey id) -{ - m_idArray.SetAt(index, id); - return eSUCCESS; -} - -// This method just removes the specified line from the view. It does -// NOT delete it from the database. -MsgERR MessageDBView::RemoveByIndex(MSG_ViewIndex index) -{ - if (!IsValidIndex(index)) - return eInvalidIndex; - - m_idArray.RemoveAt(index); - m_flags.RemoveAt(index); - m_levels.RemoveAt(index); - NoteChange(index, -1, MSG_NotifyInsertOrDelete); - return eSUCCESS; -} - -MsgERR MessageDBView::DeleteMessagesByIndex(MSG_ViewIndex *indices, int32 numIndices, XP_Bool removeFromDB) -{ - MsgERR err = eSUCCESS; - IDArray messageKeys; - - MSG_ViewIndex *tmpIndices = new MSG_ViewIndex [numIndices]; - if (!tmpIndices) - return eOUT_OF_MEMORY; - memcpy (tmpIndices, indices, numIndices * sizeof(MSG_ViewIndex)); - XP_QSORT (tmpIndices, numIndices, sizeof(MSG_ViewIndex), MSG_Pane::CompareViewIndices); - - if (removeFromDB) - messageKeys.SetSize(numIndices); - - for (int32 i = numIndices - 1; i >= 0 && err == eSUCCESS; i--) - { - MSG_ViewIndex viewIndex = tmpIndices[i]; - if (IsValidIndex(viewIndex)) - { - if (removeFromDB) - messageKeys.SetAt(i, m_idArray[viewIndex]); - - err = RemoveByIndex(viewIndex); - OnHeaderAddedOrDeleted(); - } - } - if (removeFromDB) - { - if (err == eSUCCESS) - err = m_messageDB->DeleteMessages(messageKeys, &m_changeListener); - } - delete [] tmpIndices; - return err; -} -// Delete the message from the database, and remove it from the view. -// If there's an error deleting the message from the db, it will -// not be removed from the view. We could return an error and still -// have deleted the message from the db, if there's an error -// deleting it from the view (this better not happen...) -MsgERR MessageDBView::DeleteMsgByIndex(MSG_ViewIndex index, XP_Bool removeFromDB) -{ - MsgERR err = eSUCCESS; - if (!IsValidIndex(index)) - return eInvalidIndex; - - // cache the key before it is removed from the m_idArray - MessageKey keyOfDeletedMessage = m_idArray[index]; - - if (err == eSUCCESS) - { - err = RemoveByIndex(index); - OnHeaderAddedOrDeleted(); - } - if (removeFromDB) - err = m_messageDB->DeleteMessage(keyOfDeletedMessage, &m_changeListener); - return err; -} - -MsgERR MessageDBView::InsertByIndex(MSG_ViewIndex index, - MessageKey id) -{ - if (!IsValidIndex(index)) - return eInvalidIndex; - m_idArray.InsertAt(index, id, 1); - m_flags.InsertAt(index, 0, 1); - m_levels.InsertAt(index, 0, 1); - return eSUCCESS; -} - -// view modifications methods by ID -MsgERR MessageDBView::SetReadByID(MessageKey id, XP_Bool read, MSG_ViewIndex* pIndex) -{ - MSG_ViewIndex viewIndex = (MSG_ViewIndex) FindViewIndex(id); - if (pIndex != NULL) - *pIndex = viewIndex; - - return SetReadByIndex(viewIndex, read); -} - -// This should insert a new id after the passed in id, and returns the index -// at which it inserted it. Only write if needed. -MsgERR MessageDBView::InsertByID(MessageKey /*id*/, - MessageKey /*newId*/, - MSG_ViewIndex* /*pIndex*/) -{ - return eNYI; -} - -void MessageDBView::NoteChange(MSG_ViewIndex firstlineChanged, int numChanged, - MSG_NOTIFY_CODE changeType) -{ - NotifyViewChangeAll(firstlineChanged, numChanged, changeType, &m_changeListener); -} - -void MessageDBView::NoteStartChange(MSG_ViewIndex firstlineChanged, int numChanged, - MSG_NOTIFY_CODE changeType) -{ - NotifyViewStartChangeAll(firstlineChanged, numChanged, changeType, &m_changeListener); -} - -void MessageDBView::NoteEndChange(MSG_ViewIndex firstlineChanged, int numChanged, - MSG_NOTIFY_CODE changeType) -{ - NotifyViewEndChangeAll(firstlineChanged, numChanged, changeType, &m_changeListener); -} - - -XP_Bool MessageDBView::IsValidIndex(MSG_ViewIndex index) -{ - return (index < (MSG_ViewIndex) m_idArray.GetSize()); -} - -MsgERR MessageDBView::OrExtraFlag(MSG_ViewIndex index, char orflag) -{ - char flag; - if (!IsValidIndex(index)) - return eInvalidIndex; - flag = m_flags[index]; - flag |= orflag; - m_flags[index] = flag; - OnExtraFlagChanged(index, flag); - return eSUCCESS; -} - -MsgERR MessageDBView::AndExtraFlag(MSG_ViewIndex index, char andflag) -{ - char flag; - if (!IsValidIndex(index)) - return eInvalidIndex; - flag = m_flags[index]; - flag &= andflag; - m_flags[index] = flag; - OnExtraFlagChanged(index, flag); - return eSUCCESS; -} - -MsgERR MessageDBView::SetExtraFlag(MSG_ViewIndex index, char extraflag) -{ - if (!IsValidIndex(index)) - return eInvalidIndex; - m_flags[index] = extraflag; - OnExtraFlagChanged(index, extraflag); - return eSUCCESS; -} - -MsgERR MessageDBView::GetExtraFlag(MSG_ViewIndex index, - char *extraFlag) -{ - if (!IsValidIndex(index)) - return eInvalidIndex; - *extraFlag = m_flags[index]; - return eSUCCESS; -} - - -void MessageDBView::SetExtraFlagsFromDBFlags(uint32 messageFlags, MSG_ViewIndex index) -{ - XP_ASSERT(IsValidIndex(index)); - char flags = m_flags[index]; - char origFlags = flags; - char saveFlags; - - // save extra flags not stored in db, and restore them below. - // make a mask of the state of the extra flags - saveFlags = flags & (kHasChildren | kIsThread | kElided); - CopyDBFlagsToExtraFlags(messageFlags, &flags); - - // no matter what CopyDBFlagsToExtraFlags did - // clear the three extra flags - flags &= ~(kHasChildren | kIsThread | kElided); - - // use the mask to restore the state of the three flags - flags |= saveFlags; - m_flags.SetAt(index, flags); - - if (m_sortType == SortByThread && (flags & kIsRead != origFlags & kIsRead)) // to update unread counts on thread headers. - { - MSG_ViewIndex threadIndex = ThreadIndexOfMsg(m_idArray[index], index, NULL, NULL); - if (threadIndex != index) - NoteChange(threadIndex, 1, MSG_NotifyChanged); - } - - -} - -// Copy flags from extra array byte into DBMessageHdr flags. These flags may not have -// the same bit positions, although they do now. The message flags are currently 32 bits, and -// the extra flags just 8. Also, this routine takes a pointer to messageFlags so that it -// can just change the bits it knows about. -// These are the DB flags, not the MSG_FLAG flags. -void MessageDBView::CopyExtraFlagsToDBFlags(char flags, uint32 *messageFlags) -{ - if (flags & kElided) - *messageFlags |= kElided; - else - *messageFlags &= ~kElided; - - if (flags & kExpired) - *messageFlags |= kExpired; - else - *messageFlags &= ~kExpired; - - if (flags & kIsRead) - *messageFlags |= kIsRead; - else - *messageFlags &= ~kIsRead; - if (flags & kHasChildren) - *messageFlags |= kHasChildren; - else - *messageFlags &= ~kHasChildren; - if (flags & kIsThread) - *messageFlags |= kIsThread; - else - *messageFlags &= ~kIsThread; - if (flags & kMsgMarked) - *messageFlags |= kMsgMarked; - else - *messageFlags &= ~kMsgMarked; -} - -void MessageDBView::CopyExtraFlagsToPublicFlags(char flags, uint32 *messageFlags) -{ - uint32 extraFlags = 0; - - // Then turn off the possible bits in the result. - *messageFlags &= ~m_publicEquivOfExtraFlags; - // Now, convert the flags that are on, and turn the 32 bit public - // equivalent on in the result. - CopyExtraFlagsToDBFlags(flags, &extraFlags); - MessageDB::ConvertDBFlagsToPublicFlags(&extraFlags); - *messageFlags |= extraFlags; -} - -void MessageDBView::CopyDBFlagsToExtraFlags(uint32 messageFlags, char *extraFlags) -{ - if (messageFlags & kIsRead) - *extraFlags |= kIsRead; - else - *extraFlags &= ~kIsRead; - - if (messageFlags & kExpired) - *extraFlags |= kExpired; - else - *extraFlags &= ~kExpired; - - if (messageFlags & kHasChildren) - *extraFlags |= kHasChildren; - else - *extraFlags &= ~kHasChildren; - - if (messageFlags & kElided) - *extraFlags |= kElided; - else - *extraFlags &= ~kElided; - if (messageFlags & kIsThread) - *extraFlags |= kIsThread; - else - *extraFlags &= ~kIsThread; - if (messageFlags & kMsgMarked) - *extraFlags |= kMsgMarked; - else - *extraFlags &= ~kMsgMarked; - if (messageFlags & kOffline) - *extraFlags |= kOffline; - else - *extraFlags &= ~kOffline; -} - -/* Cache of open view objects allows us to enforce one open view per DB */ - -XP_List *MessageDBView::m_viewCache = NULL; - -MessageDBView *MessageDBView::CacheLookup (MessageDB *pDB, ViewType type) -{ - if (m_viewCache) - { - XP_List *walkCache = m_viewCache; - - MessageDBView *walkView = 0; - do - { - walkView = (MessageDBView*) XP_ListNextObject(walkCache); - if (walkView && walkView->GetDB() == pDB) - { - // dbShowingIgnored doesn't matter if pDB is NULL, so FALSE is OK. - XP_Bool dbShowingIgnored = (pDB) - ? (pDB->GetDBFolderInfo()->GetFlags() & MSG_FOLDER_PREF_SHOWIGNORED) - : FALSE; - if (( walkView->m_viewType == type && !!walkView->GetShowingIgnored() == !!dbShowingIgnored) || type == ViewAny || !pDB) - return walkView; - } - } while (walkView); - } - return NULL; -} - -void MessageDBView::CacheAdd () -{ - // allocate list when needed - if (!m_viewCache) - m_viewCache = XP_ListNew(); - - // can't already exist in cache - XP_ASSERT (!CacheLookup(m_messageDB, m_viewType)); - - XP_ListAddObject (m_viewCache, this); -} - -void MessageDBView::CacheRemove () -{ - // must already exist in cache - XP_ASSERT (CacheLookup (m_messageDB, m_viewType)); - - XP_ListRemoveObject (m_viewCache, this); - - // delete list when empty - if (XP_ListCount (m_viewCache) == 0) - { - XP_ListDestroy (m_viewCache); - m_viewCache = NULL; // isn't this required? dmb - } -} - -int32 MessageDBView::AddReference () -{ - m_messageDB->AddUseCount (); - return ++m_refCount; -} diff --git a/mozilla/lib/libmsg/msgdbvw.h b/mozilla/lib/libmsg/msgdbvw.h deleted file mode 100644 index 21ca27badf4..00000000000 --- a/mozilla/lib/libmsg/msgdbvw.h +++ /dev/null @@ -1,309 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef _MsgView_H_ -#define _MsgView_H_ - -typedef uint32 MSG_ViewIndex; - -const uint32 kViewIndexNone = MSG_VIEWINDEXNONE; - -#include "msg.h" -#include "msgdb.h" -#include "idarray.h" -#include "bytearr.h" -#include "errcode.h" -#include "chngntfy.h" -#include "abcom.h" - -class XPStringObj; - -class ViewChangeListener : public ChangeListener -{ -public: - ViewChangeListener(MessageDBView *view); - virtual ~ViewChangeListener(); - virtual void OnViewChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, - ChangeListener *instigator); - virtual void OnViewStartChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, - ChangeListener *instigator); - virtual void OnViewEndChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, - ChangeListener *instigator); - virtual void OnKeyChange(MessageKey keyChanged, int32 flags, - ChangeListener *instigator); - virtual void OnAnnouncerGoingAway (ChangeAnnouncer *instigator); -protected: - MessageDBView *m_dbView; -}; - -typedef int32 ViewFlags; - // flags for GetViewFlags -const int kOutlineDisplay = 0x1; -const int kFlatDisplay = 0x2; -const int kShowIgnored = 0x8; -const int kUnreadOnly = 0x10; - -class MessageDBView : public ChangeAnnouncer -{ - friend class ViewChangeListener; -public: - MessageDBView(); - - // Open and close methods -static MsgERR OpenURL(const char * url, MSG_Master *master, - ViewType viewType, MessageDBView **view, XP_Bool openInForeground); -static MsgERR OpenViewOnDB(MessageDB *msgDB, ViewType viewType, - MessageDBView ** pRetView, - XP_Bool runInForeground = TRUE); - - virtual MsgERR Open(MessageDB *messageDB, ViewType viewType, - uint32* pCount, XP_Bool runInForeground = TRUE); - virtual MsgERR Close(); - - virtual MsgERR Init(uint32 *pCount, XP_Bool runInForeground = TRUE); - virtual MsgERR InitSort(SortType sortType, SortOrder sortOrder); - virtual int32 AddKeys(MessageKey *pOutput, int32 *pFlags, char *pLevels, SortType sortType, int numListed); - - // Methods dealing with adding headers - - // this is for background loading and indicates to the view that no - // more headers are coming. For example, the view of only threads with - // new documents could throw away all threads not having new at this point, - // and whatever data structures it no longer needs - virtual MsgERR FinishedAddingHeaders(); - // this tells the view that we've added a chunk and we need to add them to - // the db and view. For threaded views, we want to do threading in chunks. - virtual MsgERR AddNewMessages() = 0; - // for news, xover line, potentially, for IMAP, imap line... - virtual MsgERR AddHdrFromServerLine(char *line, MessageKey *msgId) = 0; - virtual MsgERR AddHdr(DBMessageHdr *msgHdr); - virtual MsgERR InsertHdrAt(DBMessageHdr *msgHdr, MSG_ViewIndex index); - virtual MsgERR OnNewHeader(MessageKey newKey, XP_Bool ensureListed); - virtual XP_Bool WantsThisThread(DBThreadMessageHdr *threadHdr); -public: - // accessors - virtual ViewType GetViewType(void) {return m_viewType;} - XP_Bool GetShowingIgnored(); - void SetShowingIgnored(XP_Bool bShowIgnored); - MessageDB *GetDB() {return m_messageDB;} - virtual void SetInitialSortState(void) = 0; - virtual const char * GetViewName(void) = 0; - - MsgERR ListThreads(MessageKey *pMessageNums, int numToList, - MessageHdrStruct *pOutput, int *pNumListed); - MsgERR ListThreadsShort(MessageKey *pMessageNums, int numToList, - MSG_MessageLine *pOutput, int *pNumListed); - // list the headers of the top-level thread ids - MsgERR ListThreadIds(MessageKey *startMsg, MessageKey *pOutput, - int numToList, int *numListed); - MsgERR ListThreadIds(ListContext *context, MessageKey *pOutput, - int numToList, int *numListed); - // return the list header information for the documents in a thread. - MsgERR ListThread(MessageKey threadId, MessageKey startMsg, - int numToList, MessageHdrStruct *pOutput, - int *pNumListed); - MsgERR ListThreadShort(MessageKey threadId, MessageKey startMsg, - int numToList, MSG_MessageLine *pOutput, - int *pNumListed); - // list headers by index - virtual MsgERR ListShortMsgHdrByIndex(MSG_ViewIndex startIndex, - int numToList, - MSG_MessageLine *pOutput, - int *pNumListed); - virtual MsgERR ListMsgHdrByIndex(MSG_ViewIndex startIndex, - int numToList, MessageHdrStruct *pOutput, - int *pNumListed); - MsgERR GetMsgLevelByIndex(MSG_ViewIndex index, int &level); - // view modification by index. - MsgERR ToggleIgnored(MSG_ViewIndex* indices, int32 numIndices, XP_Bool *resultToggleState); - MsgERR ToggleWatched(MSG_ViewIndex* indices, int32 numIndices); - MsgERR ExpansionDelta(MSG_ViewIndex index, int32 *expansionDelta); - MsgERR ToggleExpansion(MSG_ViewIndex index, uint32 *numChanged); - MsgERR ExpandByIndex(MSG_ViewIndex index, uint32 *numExpanded); - MsgERR CollapseByIndex(MSG_ViewIndex index, uint32 *numCollapsed); - MsgERR ExpandAll(); - MsgERR CollapseAll(); - - // navigation routines - // This can cause a thread to be expanded. Maybe caller doesn't care... - // But we'll return the index of any expanded thread, if asked, and the - // index where we landed.. - MsgERR Navigate(MSG_ViewIndex startIndex, MSG_MotionType motion, - MessageKey *pResultKey, MSG_ViewIndex *resultIndex, - MSG_ViewIndex *pThreadIndex, XP_Bool wrap = TRUE); - // Data navigate has no side effects - could be used to see if navigate - // is valid... - MsgERR DataNavigate(MessageKey startKey, MSG_MotionType motion, - MessageKey *pResultKey, MessageKey *pThreadKey); - - MsgERR GetNavigateStatus(MSG_MotionType motion, MSG_ViewIndex index, - XP_Bool *selectable_p, - const char **display_string); - - MsgERR FindNextUnread(MessageKey startId, MessageKey *resultId, - MessageKey *resultThreadId); - - MsgERR FindPrevUnread(MessageKey startKey, MessageKey *pResultKey, - MessageKey *resultThreadId = NULL); - MsgERR FindFirstFlagged(MSG_ViewIndex * pResultIndex); - MsgERR FindPrevFlagged(MSG_ViewIndex startIndex, MSG_ViewIndex *pResultIndex); - MsgERR FindNextFlagged(MSG_ViewIndex startIndex, MSG_ViewIndex *pResultIndex); - - MsgERR FindFirstNew(MSG_ViewIndex *pResultIndex); -// view modifications methods by index - MsgERR ToggleReadByIndex(MSG_ViewIndex index); - MsgERR SetReadByIndex(MSG_ViewIndex index, XP_Bool read); - MsgERR SetThreadOfMsgReadByIndex(MSG_ViewIndex index, XP_Bool read); - MsgERR ToggleThreadIgnored(DBThreadMessageHdr *thread, MSG_ViewIndex index); - MsgERR SetThreadIgnored(DBThreadMessageHdr *thread, MSG_ViewIndex index, - XP_Bool ignored); - - MsgERR MarkMarkedByIndex(MSG_ViewIndex index, XP_Bool mark); - MsgERR ToggleThreadWatched(DBThreadMessageHdr *thread, MSG_ViewIndex index); - MsgERR SetThreadWatched(DBThreadMessageHdr *thread, MSG_ViewIndex index, - XP_Bool watched); - MsgERR SetKeyByIndex(MSG_ViewIndex index, MessageKey id); - virtual MsgERR RemoveByIndex(MSG_ViewIndex index); - MsgERR InsertByIndex(MSG_ViewIndex index, MessageKey id); - MsgERR DeleteMessagesByIndex(MSG_ViewIndex *indices, int32 numIndices, XP_Bool removeFromDB); - virtual MsgERR DeleteMsgByIndex(MSG_ViewIndex index, XP_Bool removeFromDB); - - /* these are the old methods....delete these once everyone in Nova is using the new address book */ - MsgERR AddSenderToABByIndex(MWContext* context, MSG_ViewIndex index, XP_Bool lastOneToAdd, XP_Bool displayRecip); - MsgERR AddAllToABByIndex(MWContext* context, MSG_ViewIndex index, XP_Bool lastOneToAdd); - - /* new address book APIs require a destination container */ - MsgERR AddSenderToABByIndex(MSG_Pane * pane, MWContext* context, MSG_ViewIndex index, XP_Bool lastOneToAdd, XP_Bool displayRecip, AB_ContainerInfo * destAB); - MsgERR AddAllToABByIndex(MSG_Pane * pane, MWContext* context, MSG_ViewIndex index, XP_Bool lastOneToAdd, AB_ContainerInfo * destAB); - - - - // view modifications methods by ID - returned index can be useful to - // caller. - MsgERR SetReadByID(MessageKey id, XP_Bool read, MSG_ViewIndex* pIndex); - MsgERR InsertByID(MessageKey id, MessageKey newId, MSG_ViewIndex* pIndex); - - // make sure the passed key is "in" the view (e.g., for a threaded sort, this - // may just mean the parent thread is in the view). - virtual void EnsureListed(MessageKey key); - - void EnableChangeUpdates(); - void DisableChangeUpdates(); - void NoteChange(MSG_ViewIndex firstlineChanged, int numChanged, - MSG_NOTIFY_CODE changeType); - void NoteStartChange(MSG_ViewIndex firstlineChanged, int numChanged, - MSG_NOTIFY_CODE changeType); - void NoteEndChange(MSG_ViewIndex firstlineChanged, int numChanged, - MSG_NOTIFY_CODE changeType); - - // array accessors - MessageKey GetAt(MSG_ViewIndex index) ; - MSG_ViewIndex FindViewIndex(MessageKey key) - {return (MSG_ViewIndex) (m_idArray.FindIndex(key));} - virtual MSG_ViewIndex FindKey(MessageKey key, XP_Bool expand); - int GetSize(void) {return(m_idArray.GetSize());} - - virtual MsgViewIndex GetThreadFromMsgIndex(MsgViewIndex index, - DBThreadMessageHdr **threadHdr); - virtual MSG_ViewIndex ThreadIndexOfMsg(MessageKey msgKey, - MSG_ViewIndex msgIndex = kViewIndexNone, - int32 *pThreadCount = NULL, - uint32 *pFlags = NULL); - - // public methods dealing with sorting - virtual MsgERR Sort(SortType sortType, SortOrder sortOrder); - virtual MsgERR ExternalSort(SortType sort_key, - XP_Bool sort_forward_p); - SortType GetSortType(void) {return(m_sortType);} - SortOrder GetSortOrder(void) {return m_sortOrder;} - enum eFieldType { - kString, - kU16, - kU32 - }; - MSG_ViewIndex GetInsertIndex(DBMessageHdr *msgHdr); - - // methods dealing with view flags - virtual MsgERR OrExtraFlag(MSG_ViewIndex index, char orflag); - virtual MsgERR AndExtraFlag(MSG_ViewIndex index, char andflag); - virtual MsgERR SetExtraFlag(MSG_ViewIndex index, char setflag); - virtual MsgERR GetExtraFlag(MSG_ViewIndex, char *extraFlag); - - virtual void SetExtraFlagsFromDBFlags(uint32 messageFlags, - MSG_ViewIndex index); - static void CopyExtraFlagsToDBFlags(char flags, - uint32 *messageFlags); - static void CopyDBFlagsToExtraFlags(uint32 messageFlags, - char *extraFlags); - static void CopyExtraFlagsToPublicFlags(char flags, - uint32 *messageFlags); - - virtual XPByteArray *GetFlagsArray() {return &m_flags;} - int32 AddReference (); -protected: - static void InitNavigateCommands(); - virtual void OnHeaderAddedOrDeleted() {} - virtual void OnExtraFlagChanged(MSG_ViewIndex /*index*/, char /*extraFlag*/) {} - virtual XP_Bool IsValidIndex(MSG_ViewIndex index); - virtual MSG_ViewIndex GetIndexOfFirstDisplayedKeyInThread(DBThreadMessageHdr *threadHdr); - virtual DBMessageHdr *GetFirstDisplayedHdrInThread(DBThreadMessageHdr *threadHdr); - virtual DBMessageHdr *GetFirstMessageHdrToDisplayInThread(DBThreadMessageHdr *threadHdr); - virtual int32 CountExpandedThread(MSG_ViewIndex index); - - virtual MsgERR MarkThreadOfMsgRead(MessageKey msgId, MSG_ViewIndex msgIndex, - XP_Bool bRead); - virtual MsgERR MarkThreadRead(DBThreadMessageHdr *threadHdr, - MSG_ViewIndex threadIndex, XP_Bool bRead); - virtual MsgERR SortInternal(SortType sortType, SortOrder sortOrder); - void ReverseSort(); - virtual MsgERR ReverseThreads(); - // helper routines for internal sort - char *GetStringField(DBMessageHdr *msgHdr, SortType sortType, int16 csid, XPStringObj &string); - uint32 GetLongField(DBMessageHdr *msgHdr, SortType sortType); - eFieldType GetFieldTypeAndLenForSort(SortType sortType, uint16 *pMaxLen); - uint32 GetStatusSortValue(DBMessageHdr *msgHdr); - - static MessageDBView *CacheLookup (MessageDB *, ViewType); - static XP_List *m_viewCache; - void CacheAdd (); - void CacheRemove (); - - virtual ~MessageDBView(); - int32 m_refCount; - -protected: -static uint32 m_publicEquivOfExtraFlags; - SortType m_sortType; - SortOrder m_sortOrder; - ViewType m_viewType; - ViewFlags m_viewFlags; - IDArray m_idArray; - XPByteArray m_flags; - XPByteArray m_levels; - MessageDB *m_messageDB; - ViewChangeListener m_changeListener; - XP_Bool m_sortValid; // has id array been added to since we sorted? -} ; - -#endif diff --git a/mozilla/lib/libmsg/msgdlqml.cpp b/mozilla/lib/libmsg/msgdlqml.cpp deleted file mode 100644 index 748d1b79ca2..00000000000 --- a/mozilla/lib/libmsg/msgdlqml.cpp +++ /dev/null @@ -1,1581 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// This file contains the deliver queued mail state machine -#include "rosetta.h" -#include "msg.h" - -#include "xp_str.h" -#include "merrors.h" -#include "msgtpane.h" -#include "msgmast.h" -#include "maildb.h" -#include "msgfinfo.h" -#include "msgimap.h" -#include "msgprefs.h" -#include "msgurlq.h" -#include "mailhdr.h" -#include "prefapi.h" -#include "imaphost.h" - -#include "msgdlqml.h" - -extern "C" -{ -#include "xpgetstr.h" - extern int MK_MIME_ERROR_WRITING_FILE; - /* extern int MK_MSG_CANT_COPY_TO_DRAFTS_FOLDER; */ - extern int MK_MSG_CANT_COPY_TO_QUEUE_FOLDER; - extern int MK_MSG_CANT_COPY_TO_QUEUE_FOLDER_OLD; - extern int MK_MSG_CANT_COPY_TO_SAME_FOLDER; - extern int MK_MSG_CANT_CREATE_INBOX; - extern int MK_MSG_ERROR_WRITING_MAIL_FOLDER; - extern int MK_MSG_FOLDER_SUMMARY_UNREADABLE; - extern int MK_MSG_FOLDER_UNREADABLE; - extern int MK_MSG_NON_MAIL_FILE_WRITE_QUESTION; - extern int MK_MSG_NO_POP_HOST; - extern int MK_OUT_OF_MEMORY; - extern int MK_UNABLE_TO_OPEN_FILE; - extern int MK_MSG_COULDNT_OPEN_FCC_FILE; - extern int MK_MSG_COMPRESS_FOLDER_ETC; - extern int MK_MSG_COMPRESS_FOLDER_DONE; - extern int MK_MSG_CANT_OPEN; - extern int MK_MSG_BOGUS_QUEUE_MSG_1; - extern int MK_MSG_BOGUS_QUEUE_MSG_N; - extern int MK_MSG_BOGUS_QUEUE_MSG_1_OLD; - extern int MK_MSG_BOGUS_QUEUE_MSG_N_OLD; - extern int MK_MSG_BOGUS_QUEUE_REASON; - extern int MK_MSG_WHY_QUEUE_SPECIAL; - extern int MK_MSG_WHY_QUEUE_SPECIAL_OLD; - extern int MK_MSG_QUEUED_DELIVERY_FAILED; - extern int MK_MSG_DELIVERING_MESSAGE_TO; - extern int MK_MSG_DELIVERING_MESSAGE; - -/* #### Why is this alegedly netlib-specific? What else am I to do? */ -extern char *NET_ExplainErrorDetails (int code, ...); - -} - -#define UNHEX(C) \ - ((C >= '0' && C <= '9') ? C - '0' : \ - ((C >= 'A' && C <= 'F') ? C - 'A' + 10 : \ - ((C >= 'a' && C <= 'f') ? C - 'a' + 10 : 0))) - -MSG_DeliverQueuedMailState::MSG_DeliverQueuedMailState(const char *folderPath, MSG_Pane *pane) -{ - m_context = NULL; - m_folderName = XP_STRDUP(folderPath); - m_tmpName = NULL; - m_infile = 0; - m_outfile = 0; - - m_bcc = m_to = m_newsgroups = m_fcc = NULL; - m_newshost = NULL; - m_flags = 0; - m_status = 0; - m_done = FALSE; - - m_awaitingDelivery = FALSE; - m_deliveryFailed = FALSE; - m_deliveryFailureCount = 0; - m_bogusMessageCount = 0; - m_unreadMessages = 0; - m_totalMessages = 0; - - m_inhead = FALSE; - m_position = 0; - m_headersPosition = 0; - m_flagsPosition = 0; - - m_obuffer = NULL; - m_obufferSize = 0; - - m_ibuffer = NULL; - m_ibufferSize = 0; - m_ibufferFP = 0; - - m_headers = NULL; - m_headersSize = 0; - m_headersFP = 0; - - m_msgNumber = 0; - m_folderSize = 0; - m_bytesRead = 0; - - m_pane = pane; - - m_imapFolderInfo = NULL; - m_localFolderInfo = NULL; - - m_msgKeys.Add(0); // dummy message id in case we are appending to online Sent folder -} - -MSG_DeliverQueuedMailState::~MSG_DeliverQueuedMailState() -{ -} - -/* static */ void MSG_DeliverQueuedMailState::PostLiteSelectExitFunction( URL_Struct *url, - int status, - MWContext *context) -{ - MSG_FolderInfoMail *folderInfo = (MSG_IMAPFolderInfoMail *)url->fe_data; - if (folderInfo) - url->msg_pane->SetLoadingImapFolder(folderInfo->GetIMAPFolderInfoMail()); - url->fe_data = NULL; - ImapFolderSelectCompleteExitFunction(url, status, context); - NET_FreeURLStruct(url); -} - -int MSG_DeliverQueuedMailState::DeliverMoreQueued(URL_Struct* url) -{ - XP_StatStruct folderst; - char* dbName; - char *line; - - if (m_done) - goto ALLDONE; - - /* If we're waiting for our post to a "mailto:" or "news:" URL to - complete, just return. We'll be called again after the current - batch of stuff is serviced, and eventually this will go FALSE. - - #### I think this means that, though we will be servicing user - events, netlib will be running full-tilt until the message is - delivered, calling this function as frequently as it can. - That's kind of bad... - */ - if (m_awaitingDelivery) - return MK_WAITING_FOR_CONNECTION; - - if (m_obuffer == NULL) - { - /* First time through. */ - - if (XP_Stat (m_folderName, &folderst, xpMailFolder)) - { - /* Can't stat the file; must not have any queued messages. */ - goto ALLDONE; - } - - m_folderSize = folderst.st_size; - if (m_folderSize) - FE_GraphProgressInit(m_context, url, m_folderSize); - - m_obufferSize = 8192; - while (!m_obuffer) - { - m_obufferSize /= 2; - m_obuffer = (char *) XP_ALLOC (m_obufferSize); - if (!m_obuffer && m_obufferSize < 2) - { - m_status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - - m_infile = XP_FileOpen(m_folderName, xpMailFolder, - XP_FILE_READ_BIN); - if (!m_infile) goto ALLDONE; - - return MK_WAITING_FOR_CONNECTION; - } - - if (m_infile) - { - /* We're in the middle of parsing the folder. Do a line. - (It would be nice to use msg_LineBuffer() here, but because - of the goofy flow of control, that won't work.) - */ - line = XP_FileReadLine(m_obuffer, m_obufferSize, - m_infile); - if (!line) - /* Finally finished parsing. Close and clean up. */ - goto ALLDONE; - - m_status = DeliverQueuedLine (line, XP_STRLEN(line)); - if (m_status < 0) - goto FAIL; - - return MK_WAITING_FOR_CONNECTION; - } - -ALLDONE: - if (m_infile) - { - XP_FileClose(m_infile); - m_infile = NULL; - - if (!m_inhead && m_headersFP > 0 && m_status >= 0) - { - /* Ah, not really done now, are we? */ - m_status = DeliverQueuedMessage (); - if (m_awaitingDelivery) - return MK_WAITING_FOR_CONNECTION; - } - } - - /* Actually truncate the queue file if all messages in it have been - delivered successfully. */ - if (m_status >= 0 && m_deliveryFailureCount == 0 && m_bogusMessageCount == 0) - { - /* If there is a summary file, it is now out of date. Delete it, - and recreate a new empty one. - */ - - dbName = WH_FileName(m_folderName, xpMailFolderSummary); - if (dbName) - { - MailDB *db = (MailDB *) MessageDB::FindInCache(dbName); - XP_FREEIF(dbName); - if (db) - { - ListContext *listContext = NULL; - MsgERR dbErr; - DBMessageHdr *pHeader; - MSG_Pane *threadPane = (m_pane ? - m_pane->GetMaster()->FindThreadPaneNamed(m_folderName) : - (MSG_Pane *)NULL); - - if (threadPane) - threadPane->StartingUpdate(MSG_NotifyNone, 0, 0); - dbErr = db->ListFirst(&listContext, &pHeader); - while (dbErr == eSUCCESS && pHeader != NULL) - { - // can't delete hdr that iterator is on, so save it. - DBMessageHdr *saveHdr = pHeader; - dbErr = db->ListNext(listContext, &pHeader); - - if (dbErr == eDBEndOfList) - db->ListDone(listContext); - - if (saveHdr) - db->DeleteHeader(saveHdr, NULL, FALSE); - delete saveHdr; - } - - if (threadPane) - threadPane->EndingUpdate(MSG_NotifyNone, 0, 0); - // MessageDB::FindInCache() does not add refCount so don't close - // db->Close(); - db = NULL; - if (m_imapFolderInfo) - { - MSG_Pane *urlPane = NULL; - - if (!urlPane) - m_pane->GetMaster()->FindPaneOfType(m_imapFolderInfo, MSG_THREADPANE); - - if (!urlPane) - urlPane = m_pane; - - dbName = WH_FileName (m_imapFolderInfo->GetPathname(), xpMailFolderSummary); - if (dbName) - db = (MailDB *) MessageDB::FindInCache(dbName); - XP_FREEIF(dbName); - if (db && urlPane) - { - char *url = CreateImapMailboxLITESelectUrl( - m_imapFolderInfo->GetHostName(), - m_imapFolderInfo->GetOnlineName(), - m_imapFolderInfo->GetOnlineHierarchySeparator()); - if (url) - { - URL_Struct *url_struct = - NET_CreateURLStruct(url, - NET_NORMAL_RELOAD); - if (url_struct) - { - m_imapFolderInfo->SetFolderLoadingContext(urlPane->GetContext()); - urlPane->SetLoadingImapFolder(m_imapFolderInfo); - url_struct->fe_data = (void *) m_imapFolderInfo; - url_struct->internal_url = TRUE; - url_struct->msg_pane = urlPane; - urlPane->GetContext()->imapURLPane = urlPane; - - MSG_UrlQueue::AddUrlToPane (url_struct, - PostLiteSelectExitFunction, - urlPane, TRUE); - - } - XP_FREEIF(url); - } - // MessageDB::FindInCache() does not add refCount so don't call close - // db->Close(); - } - } - } - else - { - XP_FileRemove(m_folderName, xpMailFolderSummary); - // create emtpy, blank db - MailDB::Open(m_folderName,TRUE, &db, FALSE); - if (db) - db->Close(); - } - } - XP_FileClose(XP_FileOpen(m_folderName, xpMailFolder, - XP_FILE_WRITE_BIN)); - - if (m_pane && m_pane->GetMaster()) - { - MailDB::SetFolderInfoValid(m_folderName, 0, 0); - MSG_FolderInfoMail *mailFolder = m_pane->GetMaster()->FindMailFolder(m_folderName, FALSE); - if (mailFolder) - mailFolder->SummaryChanged(); - } - } - m_status = MK_CONNECTED; - - /* Warn about failed delivery. - */ - if (m_deliveryFailureCount > 0) - { - char *fmt, *buf; - int L; - if (m_deliveryFailureCount == 1) - fmt = ("Delivery failed for 1 message.\n" - "\n" - "This message has been left in the Outbox folder.\n" - "Before it can be delivered, the error must be\n" - "corrected."); /* #### i18n */ - else - fmt = ("Delivery failed for %d messages.\n" - "\n" - "These messages have been left in the Outbox folder.\n" - "Before they can be delivered, the errors must be\n" - "corrected."); /* #### i18n */ - - L = XP_STRLEN(fmt) + 30; - buf = (char *) XP_ALLOC (L); - if (buf) - { - PR_snprintf(buf, L-1, fmt, m_deliveryFailureCount); - FE_Alert(m_context, buf); - XP_FREE(buf); - } - } - - /* Warn about bogus messages in the Outbox. - */ - else if (m_bogusMessageCount) - { - char *msg1, *msg2, *msg3; - char *buf1, *buf2; - - if (m_bogusMessageCount == 1) - { - buf1 = NULL; - msg1 = XP_GetString(MK_MSG_BOGUS_QUEUE_MSG_1); - msg3 = XP_GetString(MK_MSG_WHY_QUEUE_SPECIAL); - const char *q = MSG_GetQueueFolderName(); - if (q) - { - if (!strcasecomp(q,QUEUE_FOLDER_NAME_OLD)) - msg1 = XP_GetString(MK_MSG_BOGUS_QUEUE_MSG_1_OLD); - msg3 = XP_GetString(MK_MSG_WHY_QUEUE_SPECIAL_OLD); - } - } - else - { - const char *q = MSG_GetQueueFolderName(); - if (q) - { - if (!strcasecomp(q,QUEUE_FOLDER_NAME_OLD)) - { - buf1 = PR_smprintf(XP_GetString(MK_MSG_BOGUS_QUEUE_MSG_N_OLD), - m_bogusMessageCount); - msg3 = XP_GetString(MK_MSG_WHY_QUEUE_SPECIAL_OLD); - } - else - { - buf1 = PR_smprintf(XP_GetString(MK_MSG_BOGUS_QUEUE_MSG_N), - m_bogusMessageCount); - msg3 = XP_GetString(MK_MSG_WHY_QUEUE_SPECIAL); - } - - } - else - { - buf1 = PR_smprintf(XP_GetString(MK_MSG_BOGUS_QUEUE_MSG_N), - m_bogusMessageCount); - msg3 = XP_GetString(MK_MSG_WHY_QUEUE_SPECIAL); - } - - msg1 = buf1; - } - - msg2 = XP_GetString(MK_MSG_BOGUS_QUEUE_REASON); - - if (msg1 && msg2 && msg3) - { - buf2 = PR_smprintf("%s%s%s", msg1, msg2, msg3); - if (buf2) - { - FE_Alert(m_context, buf2); - XP_FREE(buf2); - } - } - - if (buf1) - XP_FREE(buf1); - } - -FAIL: - return m_status; -} - -int MSG_DeliverQueuedMailState::CloseDeliverQueuedSock(URL_Struct* url) -{ - if (m_infile) - XP_FileClose(m_infile); - if (m_outfile) - XP_FileClose(m_outfile); - FREEIF(m_to); - FREEIF(m_bcc); - FREEIF(m_newsgroups); - FREEIF(m_newshost); - FREEIF(m_ibuffer); - FREEIF(m_obuffer); - FREEIF(m_headers); - FREEIF(m_folderName); - if (m_tmpName) - { - XP_FileRemove(m_tmpName, xpFileToPost); - XP_FREEIF(m_tmpName); - } - - if (m_folderSize) - FE_GraphProgressDestroy(m_context, url, - m_folderSize, m_bytesRead); - - return 0; -} - - - -int MSG_DeliverQueuedMailState::DeliverQueuedMessage () -{ - XP_ASSERT (m_outfile && m_tmpName); - if (!m_outfile || !m_tmpName) return -1; - - XP_FileClose (m_outfile); - m_outfile = 0; - - if ((! (m_flags & MSG_FLAG_EXPUNGED)) && - (m_flags & MSG_FLAG_QUEUED)) - { - /* If this message is marked to be delivered, and does not have its - expunged bit set (meaning it has not yet been successfully delivered) - then deliver it now. - */ - - m_totalMessages++; - if (! (m_flags & MSG_FLAG_READ)) - m_unreadMessages++; - -#ifdef XP_UNIX - m_status = msg_DeliverMessageExternally(m_context, - m_tmpName); - if (m_status != 0) - { - if (m_status >= 0) - m_status = DoFcc(); - else - DeliverDone (); - return m_status; - } -#endif /* XP_UNIX */ - - DeliverAsNews (); - } - else - { - /* Just to delete the temp file. */ - DeliverDone (); - } - - return m_status; -} - - -int -MSG_DeliverQueuedMailState::DeliverDone () -{ - int local_status = 0; - if (m_status >= 0 && - !m_deliveryFailed && - m_flagsPosition > 0 && - (m_flags & MSG_FLAG_QUEUED) && - (! (m_flags & MSG_FLAG_EXPUNGED))) - { - /* If delivery was successful, mark the message as expunged in the file - right now - we do this by opening the file a second time, updating it, - and closing it, to make sure that this informationn gets flushed to - disk as quickly as possible. If we make it through the entire folder - and deliver them all, we will delete the whole file - but if we crash - in the middle, it's important that we not re-transmit all the already- - sent messages next time. - - The message should have an X-Mozilla-Status header that is suitable - for us overwriting, but if it doesn't, then we will simply not mark - it as expunged - and should delivery fail, it will get sent again. - */ - XP_File out; - char buf[50]; -#if 0 - XP_Bool summary_valid = FALSE; - XP_StatStruct st; -#endif - - XP_Bool was_read = (m_flags & MSG_FLAG_READ) != 0; - m_flags |= MSG_FLAG_EXPUNGED; - m_flags &= (~MSG_FLAG_QUEUED); - /* it's pretty important that this take up the same space... - We can't write out a line terminator because at this point, - we don't know what the file had in it before. (Safe to - assume LINEBREAK?) */ - PR_snprintf(buf, sizeof(buf), X_MOZILLA_STATUS_FORMAT, m_flags); - -#if 0 - XP_Stat (m_folderName, &st, xpURL); /* must succeed */ - summary_valid = msg_IsSummaryValid (m_folderName, &st); -#endif - - out = XP_FileOpen (m_folderName, xpMailFolder, - XP_FILE_UPDATE_BIN); - if (!out) - { - local_status = m_status = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - goto FAIL; - } - XP_FileSeek (out, m_flagsPosition, SEEK_SET); - m_flagsPosition = 0; /* Just in case we get called again... */ - m_status = XP_FileWrite (buf, XP_STRLEN(buf), out); - XP_FileClose (out); - if (m_status < (int) XP_STRLEN(buf)) { - local_status = m_status = MK_MIME_ERROR_WRITING_FILE; - goto FAIL; - } - - XP_ASSERT(m_totalMessages > 0); - if (m_totalMessages > 0) - m_totalMessages--; - - if (!was_read) - { - XP_ASSERT(m_unreadMessages > 0); - if (m_unreadMessages > 0) - m_unreadMessages--; - } - } - - FAIL: - /* Now we can delete the temp file too. */ - if (m_tmpName) - { - int status2 = XP_FileRemove (m_tmpName, xpFileToPost); - if (local_status >= 0) - local_status = m_status = status2; - XP_FREE (m_tmpName); - m_tmpName = 0; - } - - m_awaitingDelivery = FALSE; - - if (m_deliveryFailed || m_status < 0) - m_deliveryFailureCount++; - m_deliveryFailed = FALSE; - - if (local_status < 0) - /* If local_status is set, then it's an error that occurred in this - routine, not earlier -- so it wasn't a problem with delivery, but - rather, with the post-delivery stuff like updating the summary info. - (This would actually be a rather large problem, as now the message - has been sent, but we were unable to mark it as sent...) - */ - { - char *alert = NET_ExplainErrorDetails(local_status,0,0,0,0); - if (!alert) alert = XP_STRDUP("Unknown error!"); /* ####i18n */ - if (alert) - { - FE_Alert(m_context, alert); - XP_FREE(alert); - } - } - - return m_status; -} - - -int -MSG_DeliverQueuedMailState::DeliverAsNews () -{ - URL_Struct *url; - char *ng = m_newsgroups; - char *host_and_port = m_newshost; - XP_Bool xxx_p = FALSE; - char *buf; - - if (ng) while (XP_IS_SPACE(*ng)) ng++; - - if (!ng || !*ng) - return DeliverAsMail (); - - m_awaitingDelivery = TRUE; - - if (host_and_port && *host_and_port) - { - HG87355 - } - if (host_and_port && !*host_and_port) - host_and_port = 0; - - buf = (char *) XP_ALLOC (30 + (host_and_port ? XP_STRLEN(host_and_port) :0)); - if (!buf) return MK_OUT_OF_MEMORY; - XP_STRCPY(buf, HG25525 "news:"); - if (host_and_port) - { - XP_STRCAT (buf, "//"); - XP_STRCAT (buf, host_and_port); - } - - url = NET_CreateURLStruct (buf, NET_NORMAL_RELOAD); - XP_FREE (buf); - if (!url) return MK_OUT_OF_MEMORY; - - url->post_data = XP_STRDUP(m_tmpName); - url->post_data_size = XP_STRLEN(url->post_data); - url->post_data_is_file = TRUE; - url->method = URL_POST_METHOD; - url->fe_data = this; - url->internal_url = TRUE; - // We don't need to set msg_pane here. It's a good idea but little - // risky for now. - // url->msg_pane = m_pane; - - { - char buf[100]; - const char *fmt = XP_GetString(MK_MSG_DELIVERING_MESSAGE_TO); - - PR_snprintf(buf, sizeof(buf)-1, fmt, (long) m_msgNumber, ng); - FE_Progress(m_context, buf); - } - - /* We can ignore the return value of NET_GetURL() because we have - handled the error in msg_deliver_queued_message_as_news_exit(). */ -#if 0 - NET_GetURL (url, FO_CACHE_AND_PRESENT, m_context, - msg_deliver_queued_message_as_news_exit); -#else - MSG_UrlQueue::AddUrlToPane (url, msg_deliver_queued_message_as_news_exit, - m_pane, TRUE); -#endif - return 0; -} - - -int -MSG_DeliverQueuedMailState::DeliverAsMail () -{ - URL_Struct *url; - char *to = m_to; - char *bcc = m_bcc; - char *buffer; - if (to) while (XP_IS_SPACE(*to)) to++; - if (bcc) while (XP_IS_SPACE(*bcc)) bcc++; - - if (!to || !*to) - return DoFcc (); - - m_awaitingDelivery = TRUE; - -#define EXTRA_BYTES 9 - /* 9 counts for "mailto:" + NULL terminated string + comma if we */ - /* have bcc */ - buffer = (char *) XP_ALLOC(EXTRA_BYTES + XP_STRLEN(to) + - (bcc ? XP_STRLEN(bcc)+1 : 0)); - if (!buffer) return MK_OUT_OF_MEMORY; - XP_STRCPY(buffer, "mailto:"); - XP_STRCAT (buffer, to); - if (bcc) - { - XP_STRCAT(buffer, ","); - XP_STRCAT(buffer, bcc); - } - - url = NET_CreateURLStruct (buffer, NET_NORMAL_RELOAD); - XP_FREEIF (buffer); - if (!url) return MK_OUT_OF_MEMORY; - - url->post_data = XP_STRDUP(m_tmpName); - url->post_data_size = XP_STRLEN(url->post_data); - url->post_data_is_file = TRUE; - url->method = URL_POST_METHOD; - url->fe_data = this; - url->internal_url = TRUE; - url->msg_pane = m_pane; - - { - char buf[100]; - const char *fmt = XP_GetString(MK_MSG_DELIVERING_MESSAGE_TO); - - PR_snprintf(buf, sizeof(buf)-1, fmt, (long)m_msgNumber, to); - FE_Progress(m_context, buf); - } - - /* We can ignore the return value of NET_GetURL() because we have - handled the error in msg_deliver_queued_message_as_mail_exit(). */ -#if 0 - NET_GetURL (url, FO_CACHE_AND_PRESENT, m_context, - msg_deliver_queued_message_as_mail_exit); -#else - MSG_UrlQueue::AddUrlToPane (url, msg_deliver_queued_message_as_mail_exit, - m_pane, TRUE); -#endif - return 0; -} - - -void MSG_DeliverQueuedMailState::msg_deliver_queued_message_as_news_exit (URL_Struct *url, int status, - MWContext * /*context*/) -{ - MSG_DeliverQueuedMailState *state = (MSG_DeliverQueuedMailState *) url->fe_data; - state->DeliverAsNewsExit(url, status); -} - -void MSG_DeliverQueuedMailState::DeliverAsNewsExit(URL_Struct *url, int status) -{ - url->fe_data = 0; - if (m_status >= 0) - m_status = status; - - if (status < 0) - { - char *error_msg = 0; - error_msg = url->error_msg; - url->error_msg = 0; - if (!error_msg) - error_msg = NET_ExplainErrorDetails (status, 0, 0, 0, 0); - Error (error_msg); - FREEIF(error_msg); - } - - NET_FreeURLStruct (url); - - if (m_status >= 0 && !m_deliveryFailed) - m_status = DeliverAsMail (); - else - DeliverDone (); -} - - -void -MSG_DeliverQueuedMailState::msg_deliver_queued_message_as_mail_exit (URL_Struct *url, int status, - MWContext * /*context*/) -{ - MSG_DeliverQueuedMailState *state = (MSG_DeliverQueuedMailState *) url->fe_data; - state->DeliverAsMailExit(url, status); -} - -void MSG_DeliverQueuedMailState::DeliverAsMailExit(URL_Struct *url, int status) -{ - url->fe_data = 0; - if (m_status >= 0) - m_status = status; - - if (status < 0) - { - char *error_msg = 0; - error_msg = url->error_msg; - url->error_msg = 0; - if (!error_msg) - error_msg = NET_ExplainErrorDetails (status, 0, 0, 0, 0); - Error (error_msg); - FREEIF(error_msg); - } - - NET_FreeURLStruct (url); - - if (m_status >= 0 && !m_deliveryFailed) - m_status = DoFcc (); - else - DeliverDone (); -} - -/* statuc */ void -MSG_DeliverQueuedMailState::PostAppendToIMAPSentFolder( - URL_Struct *url, - int status, - MWContext * /* context */) -{ - MSG_DeliverQueuedMailState *state= - (MSG_DeliverQueuedMailState*) url->fe_data; - XP_ASSERT(state); - - if (state) - { - if (status < 0) - { - char *error_msg = 0; - error_msg = url->error_msg; - url->error_msg = 0; - if (!error_msg) - error_msg = NET_ExplainErrorDetails (status, 0, 0, 0, - 0); - state->Error (error_msg); - FREEIF(error_msg); - } - else - { - if (state->m_imapFolderInfo) - { - if (!state->m_localFolderInfo) - state->m_localFolderInfo = - state->m_pane->GetMaster()->FindMailFolder(state->m_folderName, FALSE); - - if (state->m_localFolderInfo) - state->m_localFolderInfo->UpdatePendingCounts(state->m_imapFolderInfo, - &state->m_msgKeys, - FALSE); - state->m_imapFolderInfo->SummaryChanged(); - } - } - state->m_status = state->DeliverDone(); - } - NET_FreeURLStruct(url); -} - -/* static */ void -MSG_DeliverQueuedMailState::PostCreateIMAPSentFolder(URL_Struct *url, - int status, - MWContext *context) -{ - MSG_DeliverQueuedMailState *state = - (MSG_DeliverQueuedMailState*) url->fe_data; - XP_ASSERT(state); - - if (state) - { - if (status < 0) - { - char *error_msg = 0; - error_msg = url->error_msg; - url->error_msg = 0; - if (!error_msg) - error_msg = NET_ExplainErrorDetails (status, 0, 0, 0, - 0); - state->Error (error_msg); - state->m_status = state->DeliverDone(); - FREEIF(error_msg); - } - else - { - MSG_Master::PostCreateImapFolderUrlExitFunc (url, - status, - context); - - char *folderName = IMAP_CreateOnlineSourceFolderNameFromUrl( - url->address); - char *hostName = NET_ParseURL(url->address, GET_HOST_PART); - state->m_imapFolderInfo = - state->m_pane->GetMaster()->FindImapMailFolder(hostName, folderName, NULL, FALSE); - FREEIF(hostName); - XP_ASSERT(state->m_imapFolderInfo); - - if (state->m_imapFolderInfo) - { - state->m_imapFolderInfo->SetFlag(MSG_FOLDER_FLAG_SENTMAIL); - state->AppendToIMAPSentFolder(); - } - else - state->m_status = state->DeliverDone(); - } - } - NET_FreeURLStruct(url); -} - - -void -MSG_DeliverQueuedMailState::PostListIMAPSentFolder ( URL_Struct *url, - int status, - MWContext *) -{ - MSG_DeliverQueuedMailState *state = - (MSG_DeliverQueuedMailState*) url->fe_data; - XP_ASSERT(state); - - if (state) - { - if (status < 0) - { - char *error_msg = 0; - error_msg = url->error_msg; - url->error_msg = 0; - if (!error_msg) - error_msg = NET_ExplainErrorDetails (status, 0, 0, 0, - 0); - state->Error (error_msg); - state->m_status = state->DeliverDone(); - FREEIF(error_msg); - } - else - { - state->m_pane->SetIMAPListInProgress(FALSE); - if (state->m_pane->IMAPListMailboxExist()) - { - state->AppendToIMAPSentFolder(); - } - else - { - char *buf = NULL; - URL_Struct *url_struct = NULL; - char *host = NET_ParseURL(state->m_fcc, GET_HOST_PART); - char *name = NET_ParseURL(state->m_fcc, GET_PATH_PART); - - // *** Create Imap magic folder - // *** then append message to the folder - if (!name || !*name) - { - XP_FREEIF(name); - name = PR_smprintf("/%s", SENT_FOLDER_NAME); - } - - if (host && *host && name && *name) - { - buf = CreateImapMailboxCreateUrl - (host, name+1, kOnlineHierarchySeparatorUnknown); - if (buf) - { - url_struct = NET_CreateURLStruct(buf, NET_NORMAL_RELOAD); - if (url_struct) - { - url_struct->fe_data = state; - url_struct->internal_url = TRUE; - url_struct->msg_pane = state->m_pane; - state->m_pane->GetContext()->imapURLPane = - state->m_pane; - MSG_UrlQueue::AddUrlToPane - (url_struct, PostCreateIMAPSentFolder, - state->m_pane, TRUE); - } - XP_FREEIF(buf); - } - } - XP_FREEIF(host); - XP_FREEIF(name); - } - } - } - NET_FreeURLStruct(url); -} - - -void -MSG_DeliverQueuedMailState::ImapAppendAddBccHeadersIfNeeded( URL_Struct *url) -{ - XP_ASSERT(url); - const char *bcc_headers = m_bcc; - char *post_data = NULL; - if (bcc_headers && *bcc_headers) - { - post_data = WH_TempName(xpFileToPost, "nsmail"); - if (post_data) - { - XP_File dstFile = XP_FileOpen(post_data, xpFileToPost, XP_FILE_WRITE_BIN); - if (dstFile) - { - XP_File srcFile = XP_FileOpen(m_tmpName, xpFileToPost, - XP_FILE_READ_BIN); - if (srcFile) - { - char *tmpBuffer = (char *)XP_ALLOC(4096); - int bytesRead = 0; - if (tmpBuffer) - { - XP_FileWrite("Bcc: ", 5, dstFile); - XP_FileWrite(bcc_headers, XP_STRLEN(bcc_headers), - dstFile); - XP_FileWrite(CRLF, XP_STRLEN(CRLF), dstFile); - bytesRead = XP_FileRead(tmpBuffer, 4096, srcFile); - while (bytesRead > 0) - { - XP_FileWrite(tmpBuffer, bytesRead, dstFile); - bytesRead = XP_FileRead(tmpBuffer, 4096, - srcFile); - } - XP_FREE(tmpBuffer); - } - XP_FileClose(srcFile); - } - XP_FileClose(dstFile); - } - } - } - else - { - post_data = XP_STRDUP(m_tmpName); - } - - if (post_data) - { - url->post_data = post_data; - url->post_data_size = XP_STRLEN(post_data); - url->post_data_is_file = TRUE; - url->method = URL_POST_METHOD; - url->fe_data = this; - url->internal_url = TRUE; - url->msg_pane = m_pane; - m_pane->GetContext()->imapURLPane = m_pane; - - MSG_UrlQueue::AddUrlToPane - (url, PostAppendToIMAPSentFolder, m_pane, TRUE); - } - else - { - NET_FreeURLStruct(url); - } -} - - -void -MSG_DeliverQueuedMailState::AppendToIMAPSentFolder() -{ - char *host = NET_ParseURL(m_fcc, GET_HOST_PART); - char *name = NET_ParseURL(m_fcc, GET_PATH_PART); - char *owner = NET_ParseURL(m_fcc, GET_USERNAME_PART); - - if (!name || !*name) - { - XP_FREEIF(name); - name = PR_smprintf("/%s", SENT_FOLDER_NAME); - } - if (!owner || !*owner) - { - MSG_IMAPHost *imapHost = m_pane->GetMaster()->GetIMAPHost(host); - if (imapHost && imapHost->GetDefaultNamespacePrefixOfType(kPersonalNamespace)) - StrAllocCopy(owner, imapHost->GetUserName()); - } - - m_imapFolderInfo = - m_pane->GetMaster()->FindImapMailFolder(host, name+1, owner, FALSE); - - char *urlBuf = NULL; - URL_Struct *url = NULL; - - if (m_imapFolderInfo) - { - MSG_Pane *urlPane = NULL; - - if (!urlPane) - urlPane = m_pane; - // *** append message to IMAP Send folder - urlBuf = - CreateImapAppendMessageFromFileUrl( - m_imapFolderInfo->GetHostName(), - m_imapFolderInfo->GetOnlineName(), - m_imapFolderInfo->GetOnlineHierarchySeparator(), - FALSE); - if (urlBuf) - { - url = NET_CreateURLStruct (urlBuf, NET_NORMAL_RELOAD); - if (url) - { - ImapAppendAddBccHeadersIfNeeded(url); - } - XP_FREEIF(urlBuf); - } - } - else if (m_pane->IMAPListMailboxExist()) - { - // m_pane->SetIMAPListMailboxExist(FALSE); - // *** append message to not subscribed IMAP Send folder - urlBuf = - CreateImapAppendMessageFromFileUrl(host, name, - kOnlineHierarchySeparatorUnknown, - FALSE); - if (urlBuf) - { - url = NET_CreateURLStruct (urlBuf, NET_NORMAL_RELOAD); - if (url) - { - ImapAppendAddBccHeadersIfNeeded(url); - } - XP_FREEIF(urlBuf); - } - } - else - { - // *** List not subscribed IMAP Sent Folder - urlBuf = - CreateImapListUrl(host, name, kOnlineHierarchySeparatorUnknown); - if (urlBuf) - { - url = NET_CreateURLStruct(urlBuf, NET_NORMAL_RELOAD); - if (url) - { - url->fe_data = this; - url->internal_url = TRUE; - url->msg_pane = m_pane; - if (!m_context) - SetContext(m_pane->GetContext()); - m_pane->GetContext()->imapURLPane = m_pane; - m_pane->SetIMAPListInProgress(TRUE); - MSG_UrlQueue::AddUrlToPane (url, PostListIMAPSentFolder, - m_pane, TRUE); - } - XP_FREEIF(urlBuf); - } - } - XP_FREEIF(host); - XP_FREEIF(name); - XP_FREEIF(owner); -} - -int -MSG_DeliverQueuedMailState::DoFcc () -{ - const char *bcc = m_bcc; - const char *fcc = m_fcc; - if (bcc) while (XP_IS_SPACE(*bcc)) bcc++; - if (fcc) while (XP_IS_SPACE(*fcc)) fcc++; - - if (fcc && *fcc) - { - // check if we are fccing to an an imap server - if (NET_URL_Type(fcc) == IMAP_TYPE_URL) - { - if (m_pane->GetMaster()->GetPrefs()->GetMailServerIsIMAP4()) - { - AppendToIMAPSentFolder(); - return m_status; - } - else - return -1; - } - else - { - int status = msg_DoFCC (m_pane, - m_tmpName, xpFileToPost, - fcc, xpMailFolder, - bcc, fcc); - if (status < 0) - Error (/* #### slightly wrong error */ - XP_GetString (MK_MSG_COULDNT_OPEN_FCC_FILE)); - else - { - // this is normally done in the DeliverDoneCB, but that doesn't seem - // to be used when delivering queued mail - MSG_FolderInfo *folder = m_pane->GetMaster()->FindMailFolder (fcc, FALSE /*create?*/); - if (folder) - folder->SummaryChanged(); - } - } - } - - m_status = DeliverDone (); - return m_status; -} - -void MSG_DeliverQueuedMailState::Error(const char *error_msg) -{ - XP_ASSERT( error_msg); - - m_deliveryFailed = TRUE; - - if (!error_msg) - { - m_done = TRUE; - } - else - { - char *s, *s2; - int L; - XP_Bool cont = FALSE; - - s2 = XP_GetString(MK_MSG_QUEUED_DELIVERY_FAILED); - - L = XP_STRLEN(error_msg) + XP_STRLEN(s2) + 1; - s = (char *) XP_ALLOC(L); - if (!s) - { - m_done = TRUE; - return; - } - PR_snprintf (s, L, s2, error_msg); - cont = FE_Confirm (m_context, s); - XP_FREE(s); - - if (cont) - m_status = 0; - else - m_done = TRUE; - } -} - -/* This function parses the headers, and also deletes from the header block - any headers which should not be delivered in mail, regardless of whether - they were present in the queue file. Such headers include: BCC, FCC, - Sender, X-Mozilla-Status, X-Mozilla-News-Host, and Content-Length. - (Content-Length is for the disk file only, and must not be allowed to - escape onto the network, since it depends on the local linebreak - representation. Arguably, we could allow Lines to escape, but it's not - required by NNTP.) - */ -int32 MSG_DeliverQueuedMailState::HackHeaders() -{ - char *buf = m_headers; - char *buf_end = buf + m_headersFP; - - FREEIF(m_to); - FREEIF(m_bcc); - FREEIF(m_newsgroups); - FREEIF(m_newshost); - m_flags = 0; - - if (m_pane) - m_pane->SetRequestForReturnReceipt(FALSE); - - while (buf < buf_end) - { - XP_Bool prune_p = FALSE; - XP_Bool do_flags_p = FALSE; - XP_Bool do_return_receipt_p = FALSE; - char *colon = XP_STRCHR (buf, ':'); - char *end; - char *value = 0; - char **header = 0; - char *header_start = buf; - - if (! colon) - break; - - end = colon; - while (end > buf && (*end == ' ' || *end == '\t')) - end--; - - switch (buf [0]) - { - case 'B': case 'b': - if (!strncasecomp ("BCC", buf, end - buf)) - { - header = &m_bcc; - prune_p = TRUE; - } - break; - case 'C': case 'c': - if (!strncasecomp ("CC", buf, end - buf)) - header = &m_to; - else if (!strncasecomp (CONTENT_LENGTH, buf, end - buf)) - prune_p = TRUE; - break; - case 'F': case 'f': - if (!strncasecomp ("FCC", buf, end - buf)) - { - header = &m_fcc; - prune_p = TRUE; - } - break; - case 'L': case 'l': - if (!strncasecomp ("Lines", buf, end - buf)) - prune_p = TRUE; - break; - case 'N': case 'n': - if (!strncasecomp ("Newsgroups", buf, end - buf)) - header = &m_newsgroups; - break; - case 'S': case 's': - if (!strncasecomp ("Sender", buf, end - buf)) - prune_p = TRUE; - break; - case 'T': case 't': - if (!strncasecomp ("To", buf, end - buf)) - header = &m_to; - break; - case 'X': case 'x': - if (X_MOZILLA_STATUS2_LEN == end - buf && - !strncasecomp(X_MOZILLA_STATUS2, buf, end - buf)) - prune_p = TRUE; - else if (X_MOZILLA_STATUS_LEN == end - buf && - !strncasecomp(X_MOZILLA_STATUS, buf, end - buf)) - prune_p = do_flags_p = TRUE; - else if (!strncasecomp(X_MOZILLA_DRAFT_INFO, buf, end - buf)) - prune_p = do_return_receipt_p = TRUE; - else if (!strncasecomp(X_MOZILLA_NEWSHOST, buf, end - buf)) - { - prune_p = TRUE; - header = &m_newshost; - } - break; - } - - buf = colon + 1; - while (*buf == ' ' || *buf == '\t') - buf++; - - value = buf; - - SEARCH_NEWLINE: - while (*buf != 0 && *buf != CR && *buf != LF) - buf++; - - if (buf+1 >= buf_end) - ; - /* If "\r\n " or "\r\n\t" is next, that doesn't terminate the header. */ - else if (buf+2 < buf_end && - (buf[0] == CR && buf[1] == LF) && - (buf[2] == ' ' || buf[2] == '\t')) - { - buf += 3; - goto SEARCH_NEWLINE; - } - /* If "\r " or "\r\t" or "\n " or "\n\t" is next, that doesn't terminate - the header either. */ - else if ((buf[0] == CR || buf[0] == LF) && - (buf[1] == ' ' || buf[1] == '\t')) - { - buf += 2; - goto SEARCH_NEWLINE; - } - - if (header) - { - int L = buf - value; - if (*header) - { - char *newh = (char*) XP_REALLOC ((*header), - XP_STRLEN(*header) + L + 10); - if (!newh) return MK_OUT_OF_MEMORY; - *header = newh; - newh = (*header) + XP_STRLEN (*header); - *newh++ = ','; - *newh++ = ' '; - XP_MEMCPY (newh, value, L); - newh [L] = 0; - } - else - { - *header = (char *) XP_ALLOC(L+1); - if (!*header) return MK_OUT_OF_MEMORY; - XP_MEMCPY ((*header), value, L); - (*header)[L] = 0; - } - } - else if (do_flags_p) - { - int i; - char *s = value; - XP_ASSERT(*s != ' ' && *s != '\t'); - m_flags = 0; - for (i=0 ; i<4 ; i++) { - m_flags = (m_flags << 4) | UNHEX(*s); - s++; - } - } - else if (do_return_receipt_p) - { - int L = buf - value; - char *draftInfo = (char*) XP_ALLOC(L+1); - char *receipt = NULL; - if (!draftInfo) return MK_OUT_OF_MEMORY; - XP_MEMCPY(draftInfo, value, L); - *(draftInfo+L)=0; - receipt = XP_STRSTR(draftInfo, "receipt="); - if (receipt) - { - char *s = receipt+8; - int requestForReturnReceipt = 0; - sscanf(s, "%d", &requestForReturnReceipt); - if ((requestForReturnReceipt == 2 || - requestForReturnReceipt == 3) && m_pane) - m_pane->SetRequestForReturnReceipt(TRUE); - } - XP_FREEIF(draftInfo); - } - - if (*buf == CR || *buf == LF) - { - if (*buf == CR && buf[1] == LF) - buf++; - buf++; - } - - if (prune_p) - { - char *to = header_start; - char *from = buf; - while (from < buf_end) - *to++ = *from++; - buf = header_start; - buf_end = to; - m_headersFP = buf_end - m_headers; - } - } - - /* Print a message if this message isn't already expunged. */ - if ((m_flags & MSG_FLAG_QUEUED) && - (! (m_flags & MSG_FLAG_EXPUNGED))) - { - char buf[100]; - const char *fmt = XP_GetString(MK_MSG_DELIVERING_MESSAGE); - - m_msgNumber++; - PR_snprintf(buf, sizeof(buf)-1, fmt, (long) m_msgNumber); - FE_Progress(m_context, buf); - } - else if ((! (m_flags & MSG_FLAG_QUEUED)) && - (! (m_flags & MSG_FLAG_EXPUNGED))) - { - /* Ugh! a non-expunged message without its queued bit set! - How did that get in here? Danger, danger. */ - m_bogusMessageCount++; - } - - /* Now m_headers contains only the headers we should ship. - Write them to the file; - */ - m_headers [m_headersFP++] = CR; - m_headers [m_headersFP++] = LF; - if (XP_FileWrite (m_headers, m_headersFP, - m_outfile) < m_headersFP) { - return MK_MIME_ERROR_WRITING_FILE; - } - return 0; -} - - -#define msg_grow_headers(desired_size) \ - (((desired_size) >= m_headersSize) ? \ - msg_GrowBuffer ((desired_size), sizeof(char), 1024, \ - &m_headers, &m_headersSize) \ - : 0) - -int32 -MSG_DeliverQueuedMailState::DeliverQueuedLine(char *line, uint32 length) -{ - uint32 flength = length; - - m_bytesRead += length; - FE_SetProgressBarPercent(m_context, - ((m_bytesRead * 100) - / m_folderSize)); - - /* convert existing newline to CRLF */ - if (length > 0 && - (line[length-1] == CR || - (line[length-1] == LF && - (length < 2 || line[length-2] != CR)))) - { - line[length-1] = CR; - line[length++] = LF; - } - - if (line[0] == 'F' && msg_IsEnvelopeLine(line, length)) - { - XP_ASSERT (!m_inhead); /* else folder corrupted */ - - if (!m_inhead && - m_headersFP > 0) - { - m_status = DeliverQueuedMessage (); - if (m_status < 0) return m_status; - } - m_headersFP = 0; - m_headersPosition = 0; - m_inhead = TRUE; - } - else if (m_inhead) - { - if (m_headersPosition == 0) - { - /* This line is the first line in a header block. - Remember its position. */ - m_headersPosition = m_position; - - /* Also, since we're now processing the headers, clear out the - slots which we will parse data into, so that the values that - were used the last time around do not persist. - - We must do that here, and not in the previous clause of this - `else' (the "I've just seen a `From ' line clause") because - that clause happens before delivery of the previous message is - complete, whereas this clause happens after the previous msg - has been delivered. If we did this up there, then only the - last message in the folder would ever be able to be both - mailed and posted (or fcc'ed.) - */ - FREEIF(m_to); - FREEIF(m_bcc); - FREEIF(m_newsgroups); - FREEIF(m_newshost); - FREEIF(m_fcc); - } - - if (line[0] == CR || line[0] == LF || line[0] == 0) - { - /* End of headers. Now parse them; open the temp file; - and write the appropriate subset of the headers out. */ - m_inhead = FALSE; - - m_tmpName = WH_TempName (xpFileToPost, "nsqmail"); - if (!m_tmpName) - return MK_OUT_OF_MEMORY; - m_outfile = XP_FileOpen (m_tmpName, xpFileToPost, - XP_FILE_WRITE_BIN); - if (!m_outfile) - return MK_MIME_ERROR_WRITING_FILE; - - m_status = HackHeaders (); - if (m_status < 0) return m_status; - } - else - { - /* Otherwise, this line belongs to a header. So append it to the - header data. */ - - if (!strncasecomp (line, X_MOZILLA_STATUS, X_MOZILLA_STATUS_LEN)) - /* Notice the position of the flags. */ - m_flagsPosition = m_position; - else if (m_headersFP == 0) - m_flagsPosition = 0; - - m_status = msg_grow_headers (length + m_headersFP + 10); - if (m_status < 0) return m_status; - - XP_MEMCPY (m_headers + m_headersFP, line, length); - m_headersFP += length; - } - } - else - { - /* This is a body line. Write it to the file. */ - XP_ASSERT (m_outfile); - if (m_outfile) - { - m_status = XP_FileWrite (line, length, m_outfile); - if (m_status < (int32) length) return MK_MIME_ERROR_WRITING_FILE; - } - } - - m_position += flength; - return 0; -} - diff --git a/mozilla/lib/libmsg/msgdlqml.h b/mozilla/lib/libmsg/msgdlqml.h deleted file mode 100644 index 17a727bdb0a..00000000000 --- a/mozilla/lib/libmsg/msgdlqml.h +++ /dev/null @@ -1,133 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef MSG_DELIVER_QUEUED_MAIL_H -#define MSG_DELIVER_QUEUED_MAIL_H - -class MSG_DeliverQueuedMailState -{ -public: - MSG_DeliverQueuedMailState(const char *folderPath, MSG_Pane *pane); - virtual ~MSG_DeliverQueuedMailState(); - void SetContext(MWContext *context) {m_context = context;} - int DeliverMoreQueued(URL_Struct* url); - int CloseDeliverQueuedSock(URL_Struct* url); - int DeliverDone(); - /* IMAP online Sent Folder support */ - - void AppendToIMAPSentFolder(); - void ImapAppendAddBccHeadersIfNeeded(URL_Struct *url); - void CreateIMAPSentFolder(); - static void PostCreateIMAPSentFolder(URL_Struct *url, - int status, - MWContext *context); - static void PostAppendToIMAPSentFolder(URL_Struct *url, - int status, - MWContext *context); - static void PostListIMAPSentFolder(URL_Struct *url, - int status, - MWContext *context); - static void PostLiteSelectExitFunction(URL_Struct *url, - int status, - MWContext *context); - -protected: - int DeliverQueuedMessage (); - int DeliverAsNews(); - int DeliverAsMail(); - int DoFcc(); - int32 HackHeaders(); - int32 DeliverQueuedLine(char *line, uint32 length); - -static void msg_deliver_queued_message_as_news_exit(URL_Struct *url, - int status, - MWContext *context); -static void msg_deliver_queued_message_as_mail_exit(URL_Struct *url, - int status, - MWContext *context); - - void DeliverAsMailExit(URL_Struct *url, int status); - void DeliverAsNewsExit(URL_Struct *url, int status); - - void Error(const char *error_msg); - -protected: - MSG_Pane *m_pane; - MWContext *m_context; - char *m_folderName; /* The full path of the queue folder. */ - char *m_tmpName; /* The full path of the tmp file. */ - XP_File m_infile; /* The queue file we're parsing. */ - XP_File m_outfile; /* A tmp file for each message in turn. */ - - char *m_bcc, *m_to, *m_newsgroups, *m_fcc; /* The parsed mail and news recipients */ - char *m_newshost; /* Optional host on which the groups reside. */ - uint16 m_flags; /* Flags from the X-Mozilla-Status header */ - int m_status; - XP_Bool m_done; - - XP_Bool m_awaitingDelivery; /* This is set while we are waiting for - another URL to finish - it is used to - make intervening calls to - MSG_FinishDeliverQueued() to no-op. - */ - XP_Bool m_deliveryFailed; /* Set when delivery of one message failed, - but we want to continue on with the next. - */ - int m_deliveryFailureCount; /* So that we can tell whether it's ok to - zero the file at the end. - */ - int m_bogusMessageCount; /* If there are messages in the queue file - which oughtn't be there, this counts them. - */ - - int32 m_unreadMessages; /* As we walk through the folder, we regenerate */ - int32 m_totalMessages; /* the summary info. */ - - XP_Bool m_inhead; - uint32 m_position; - uint32 m_headersPosition; - uint32 m_flagsPosition; - - char *m_obuffer; - uint32 m_obufferSize; - - char *m_ibuffer; - uint32 m_ibufferSize; - uint32 m_ibufferFP; - - char *m_headers; - uint32 m_headersSize; - uint32 m_headersFP; - - /* Thermo stuff - */ - int32 m_msgNumber; /* The ordinal of the message in the file - (not counting expunged messages.) */ - int32 m_folderSize; /* How big the queue folder is. */ - int32 m_bytesRead; /* How many bytes into the file we are. */ - - /* IMAP online Sent Folder support */ - MSG_FolderInfoMail *m_localFolderInfo; - MSG_IMAPFolderInfoMail *m_imapFolderInfo; - IDArray m_msgKeys; -}; - -#endif diff --git a/mozilla/lib/libmsg/msgdwnof.cpp b/mozilla/lib/libmsg/msgdwnof.cpp deleted file mode 100644 index 3734e5e8d00..00000000000 --- a/mozilla/lib/libmsg/msgdwnof.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "msgdwnof.h" -#include "pmsgsrch.h" -#include "msgfinfo.h" -#include "msgurlq.h" -#include "nwsartst.h" -#include "newsdb.h" -#include "listngst.h" - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; -} - -MSG_DownloadOfflineFoldersState::MSG_DownloadOfflineFoldersState(MSG_Pane *pane) -{ - m_folderIterator = new MSG_FolderIterator(pane->GetMaster()->GetFolderTree()); - m_pane = pane; - m_newsDB = NULL; - m_oneFolder = FALSE; - m_foundFolderToDownload = FALSE; - m_curFolder = NULL; -} - -MSG_DownloadOfflineFoldersState::~MSG_DownloadOfflineFoldersState() -{ - delete m_folderIterator; -} - -int MSG_DownloadOfflineFoldersState::DoIt() -{ - return DoSomeMore(); -} - - -/* static */int MSG_DownloadOfflineFoldersState::FolderDoneCB(void *state, int /* status */) -{ - MSG_DownloadOfflineFoldersState *downloadState = (MSG_DownloadOfflineFoldersState *) state; - - return downloadState->DoSomeMore(); -} - -int MSG_DownloadOfflineFoldersState::DownloadOneFolder(MSG_FolderInfo *folder) -{ - m_oneFolder = TRUE; - m_folderIterator->AdvanceToFolder(folder); - return DownloadFolder(folder); -} -int MSG_DownloadOfflineFoldersState::DownloadFolder(MSG_FolderInfo *folder) -{ - char *url = folder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - if (!url) - return eOUT_OF_MEMORY; - - m_curFolder = folder; - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - XP_ASSERT(newsFolder); - const char* groupname = newsFolder->GetNewsgroupName(); - MSG_Master *master = m_pane->GetMaster(); - URL_Struct *url_struct; - url_struct = NET_CreateURLStruct(url, NET_DONT_RELOAD); - ListNewsGroupState * listState = new ListNewsGroupState(url, groupname, m_pane); - - XPPtrArray referringPanes; - - master->FindPanesReferringToFolder(newsFolder, &referringPanes); - - for (int i = 0; i < referringPanes.GetSize(); i++) - { - MSG_Pane *pane = (MSG_Pane *) referringPanes.GetAt(i); - if (pane && pane->GetMsgView()) - { - listState->SetView(pane->GetMsgView()); - break; - } - } - - listState->SetMaster(master); - listState->SetGetOldMessages(FALSE); // get messages below highwater mark if we don't have them - newsFolder->SetListNewsGroupState(listState); - url_struct->fe_data = this; - url_struct->msg_pane = m_pane; - MSG_UrlQueue::AddUrlToPane (url_struct, MSG_DownloadOfflineFoldersState::DownloadArticlesCB, m_pane, TRUE, FO_PRESENT); - return eSUCCESS; -} - -/* static */ void MSG_DownloadOfflineFoldersState::DownloadArticlesCB(URL_Struct *url , int status, MWContext * /* context */) -{ - if (status != MK_INTERRUPTED) - { - MSG_DownloadOfflineFoldersState *downloadState = - (MSG_DownloadOfflineFoldersState *) url->fe_data; - XP_ASSERT (downloadState); - if (downloadState) - downloadState->DownloadArticles(downloadState->GetCurFolder()); - } -#ifdef DEBUG_bienvenu - else - XP_Trace("download articles interrupted\n"); -#endif -} - -int MSG_DownloadOfflineFoldersState::DownloadArticles(MSG_FolderInfo *curFolder) -{ - XP_Bool useDefaults, byReadness, unreadOnly, byDate; - int32 daysOld; - int ret = 0; - - MSG_GetOfflineRetrievalInfo(curFolder, &useDefaults, &byReadness, &unreadOnly, &byDate, &daysOld); - if (useDefaults) - { - // ### dmb find preferences! Change local variables above based on them. - } - MSG_SearchTermArray termArray; - MSG_SearchValue value; - if (byReadness && unreadOnly) - { - value.attribute = attribMsgStatus; - value.u.msgStatus = kIsRead; - termArray.Add(new MSG_SearchTerm(attribMsgStatus, opIsnt, &value, MSG_SearchBooleanAND, NULL)); - } - if (byDate) - { - value.attribute = attribAgeInDays; - value.u.age = daysOld; - termArray.Add(new MSG_SearchTerm(attribAgeInDays, opIsLessThan, &value, MSG_SearchBooleanAND, NULL)); - } - if (termArray.GetSize() == 0) // cons up a search term that will match every msg we need - { - value.attribute = attribMsgStatus; - value.u.msgStatus = kOffline; - termArray.Add(new MSG_SearchTerm(attribMsgStatus, opIsnt, &value, MSG_SearchBooleanAND, NULL)); - } - char *url = curFolder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - if (!url) - return MK_OUT_OF_MEMORY; - - MsgERR err = NewsGroupDB::Open(url, m_pane->GetMaster(), &m_newsDB); - if (err == eSUCCESS) - ret = DownloadMatchingNewsArticlesToNewsDB::SaveMatchingMessages(m_pane->GetContext(), curFolder, - m_newsDB, termArray, FolderDoneCB, this); - - for (int32 index = 0; index < termArray.GetSize(); index++) - { - MSG_SearchTerm *doomedSearchTerm = termArray.GetAt(index); - if (doomedSearchTerm) - delete doomedSearchTerm; - } - return ret; - -} -int MSG_DownloadOfflineFoldersState::DoSomeMore() -{ - int ret = 0; - MSG_FolderInfo *nextFolder = m_folderIterator->Next(); - XP_Bool prevFolderWasCategory = (m_curFolder) ? (m_curFolder->GetFlags() & MSG_FOLDER_FLAG_CATEGORY) != 0 : FALSE; - - if (m_newsDB != NULL) - m_newsDB->Close(); - m_newsDB = NULL; - if (m_oneFolder && !prevFolderWasCategory) // if we're only doing one folder, we're done. - return ret; - while (nextFolder) - { - MSG_FolderInfo *nextCategoryContainer = (prevFolderWasCategory) ? MSG_GetCategoryContainerForCategory(nextFolder) : 0; - uint32 folderPrefFlags = (nextCategoryContainer) - ? nextCategoryContainer->GetFolderPrefFlags() : nextFolder->GetFolderPrefFlags(); - - // if we're doing one folder, and the category container has changed, we're done - if (m_oneFolder && prevFolderWasCategory && - nextCategoryContainer != MSG_GetCategoryContainerForCategory(m_curFolder)) - return ret; - - MSG_FolderInfoNews *newsFolder = nextFolder->GetNewsFolderInfo(); - if (newsFolder && newsFolder->IsSubscribed() && ((folderPrefFlags & MSG_FOLDER_PREF_OFFLINE) != 0) || m_oneFolder) - { - ret = DownloadFolder(nextFolder); - m_foundFolderToDownload = TRUE; - break; - } - else - nextFolder = m_folderIterator->Next(); - } - ret = (m_foundFolderToDownload) ? ret : -1; // didn't find one folder! - if (nextFolder == NULL || ret == MK_CONNECTED) - { - if (m_pane && m_pane->GetURLChain()) - m_pane->GetURLChain()->GetNextURL(); - delete this; // would be nice to do this at a higher level. - } - return ret; -} diff --git a/mozilla/lib/libmsg/msgdwnof.h b/mozilla/lib/libmsg/msgdwnof.h deleted file mode 100644 index 8129e2d5b3d..00000000000 --- a/mozilla/lib/libmsg/msgdwnof.h +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _Msgdwnof_H_ -#define _Msgdwnof_H_ - -#include "msg.h" -class MSG_FolderIterator; -class MSG_FolderInfo; -class MSG_Pane; -class NewsGroupDB; - -class MSG_DownloadOfflineFoldersState -{ -public: - MSG_DownloadOfflineFoldersState(MSG_Pane *pane); - ~MSG_DownloadOfflineFoldersState(); - int DownloadOneFolder(MSG_FolderInfo *folder); - int DoIt(); - MSG_FolderInfo *GetCurFolder() {return m_curFolder;} -static FolderDoneCB(void *state, int status); -static void DownloadArticlesCB(URL_Struct *url , int status, MWContext *context); -protected: - int DoSomeMore(); - int DownloadFolder(MSG_FolderInfo *curFolder); - int DownloadArticles(MSG_FolderInfo *curFolder); - - MSG_FolderIterator *m_folderIterator; - MSG_FolderInfo *m_curFolder; - MSG_Pane *m_pane; - NewsGroupDB *m_newsDB; - XP_Bool m_oneFolder; - XP_Bool m_foundFolderToDownload; -}; -#endif - diff --git a/mozilla/lib/libmsg/msgfcach.cpp b/mozilla/lib/libmsg/msgfcach.cpp deleted file mode 100644 index acda40db606..00000000000 --- a/mozilla/lib/libmsg/msgfcach.cpp +++ /dev/null @@ -1,265 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// - -#include "msg.h" -#include "msgfcach.h" -#include "msgfinfo.h" - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; - extern int MK_UNABLE_TO_OPEN_FILE; -} - - -//----------------------------------------------------------------------------- -// MSG_FolderCacheElement -// -// MSG_FolderCacheElement is like a light FolderInfo. It holds as much -// folder info stuff as we want to put in the folder cache -//----------------------------------------------------------------------------- - -class MSG_FolderCacheElement -{ -public: - MSG_FolderCacheElement (); - virtual ~MSG_FolderCacheElement (); - - void Init (const char *); - -// XP_Bool IsCacheOf (MSG_FolderInfo *); - - static int CompareWithFolder(const void*, const void*); // asymmetric (for searching) - static int CompareElements(const void* pElem1, const void* pElem2); // symmetric (for insertion) - - char *m_name; - char *m_folderSpecificStuff; -}; - - -MSG_FolderCacheElement::MSG_FolderCacheElement () -{ - m_name = NULL; - m_folderSpecificStuff = NULL; -} - - -MSG_FolderCacheElement::~MSG_FolderCacheElement () -{ - XP_FREEIF(m_name); - XP_FREEIF(m_folderSpecificStuff); -} - - -void MSG_FolderCacheElement::Init (const char *buf) -{ - int i; - for (i = 0; buf[i] != '\t'; i++) - ; // do nothing; just count 'em up - - m_name = (char*) XP_ALLOC(i + 1); - - // Get the minimum stuff out of the line to uniquely identify - // a folder. We're using the pathname now, hopefully the relative path later. - XP_STRNCPY_SAFE(m_name, buf, i + 1); - - // Pull out the rest of the stuff from the line. Since different - // folderInfo classes can have different stuff in the file, we'll - // virtualize reading/writing this in MSG_FolderInfo - m_folderSpecificStuff = XP_STRDUP(&buf[i] + 1); -} - -#if 0 -XP_Bool MSG_FolderCacheElement::IsCacheOf (MSG_FolderInfo *folder) -{ - const char *relPath = folder->GetRelativePathName(); - if (relPath && !XP_FILENAMECMP(relPath, m_name)) - return TRUE; - return FALSE; -} -#endif - -int MSG_FolderCacheElement::CompareWithFolder(const void* pElemPtr, const void* pFolderPtr) -{ - MSG_FolderCacheElement* elem = *(MSG_FolderCacheElement**)pElemPtr; - MSG_FolderInfo* folder = *(MSG_FolderInfo**)pFolderPtr; - const char *relPath = folder->GetRelativePathName(); - if (!relPath) - { - XP_ASSERT(FALSE); - return -1; // sort folders with no name at the end? - } - return XP_FILENAMECMP(elem->m_name, relPath); -} - -int MSG_FolderCacheElement::CompareElements(const void* pElem1, const void* pElem2) -{ - MSG_FolderCacheElement* elem1 = *(MSG_FolderCacheElement**)pElem1; - MSG_FolderCacheElement* elem2 = *(MSG_FolderCacheElement**)pElem2; - return XP_FILENAMECMP(elem1->m_name, elem2->m_name); -} - - -//----------------------------------------------------------------------------- -// MSG_FolderCache -// -// Apparently, it's too slow to allow the folder tree to open all of its -// databases at initialization time. So this object is a persistent way -// to store the same stuff as the DBFolderInfo in just one file so it's -// faster to load -//----------------------------------------------------------------------------- - - -MSG_FolderCache::MSG_FolderCache () - : XPSortedPtrArray(MSG_FolderCacheElement::CompareElements) -{ -} - - -MSG_FolderCache::~MSG_FolderCache () -{ - Depopulate(); // probably done already, but just make sure -} - - -int MSG_FolderCache::ReadFromDisk () -{ - int ret = 0; - XP_File f = XP_FileOpen ("", xpFolderCache, XP_FILE_READ_BIN); - if (f) - { - const int bufSize = 1024; // big enough? - char *buf = (char*) XP_ALLOC(bufSize); - if (buf) - { - while (XP_FileReadLine (buf, bufSize, f)) - { - MSG_FolderCacheElement *elem = new MSG_FolderCacheElement; - if (elem) - { - elem->Init (buf); - Add(elem); - } - else - ret = MK_OUT_OF_MEMORY; - } - XP_FREE(buf); - } - else - ret = MK_OUT_OF_MEMORY; - - XP_FileClose (f); - - // Delete folder cache once we've read it. This way, if we use the DBs, then crash, - // we won't be trusting a folder cache which contains out-of-date information. - XP_FileRemove ("", xpFolderCache); - - } - else - ret = MK_UNABLE_TO_OPEN_FILE; - - return ret; -} - - -int MSG_FolderCache::WriteToDisk (MSG_FolderInfo *root) const -{ - XP_File f = 0; - int32 len = 0, count = 0; - - if (root) - { - f = XP_FileOpen ("", xpFolderCache, XP_FILE_TRUNCATE_BIN); - if (f) - { - MSG_FolderIterator iter(root); - MSG_FolderInfo *folder = NULL; - count = XP_STRLEN(LINEBREAK); - while ((folder = iter.Next()) != NULL) - { - if ((folder->IsMail() || folder->IsNews()) && folder->IsCachable()) - { - // Write in the mimimal amount of stuff we need to match a cache line - // with a folderInfo, then ask the folderInfo to add whatever it wants. - const char *relPath = folder->GetRelativePathName(); - if (relPath) - { - XP_FilePrintf (f, "%s\t", relPath); - folder->WriteToCache (f); - len = XP_FileWrite (LINEBREAK, count, f); - if (len != count) - { - XP_FileClose(f); - return len; - } - } - } - } - XP_FileClose (f); - } - } - - return 0; -} - - -XP_Bool MSG_FolderCache::InitializeFolder (MSG_FolderInfo *folder) const -{ -#if 1 - int index = FindIndexUsing(0, folder, MSG_FolderCacheElement::CompareWithFolder); - if (index < 0) - return FALSE; - MSG_FolderCacheElement *elem = GetAt(index); - folder->ReadFromCache(elem->m_folderSpecificStuff); - return TRUE; -#else - MSG_FolderCacheElement *elem; - for (int i = 0; i < GetSize(); i++) - { - elem = GetAt(i); - if (elem->IsCacheOf (folder)) - { - folder->ReadFromCache (elem->m_folderSpecificStuff); - return TRUE; - } - } - return FALSE; -#endif // 1 -} - - -void MSG_FolderCache::Depopulate () -{ - MSG_FolderCacheElement *elem; - for (int i = 0; i < GetSize(); i++) - { - elem = GetAt(i); - delete elem; - } -} - - -MSG_FolderCacheElement *MSG_FolderCache::GetAt (int i) const -{ - return (MSG_FolderCacheElement*) XPPtrArray::GetAt(i); -} diff --git a/mozilla/lib/libmsg/msgfcach.h b/mozilla/lib/libmsg/msgfcach.h deleted file mode 100644 index e84090c77bc..00000000000 --- a/mozilla/lib/libmsg/msgfcach.h +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - - -#ifndef _MSGFCACH_H -#define _MSGFCACH_H - -#include "ptrarray.h" - -class MSG_FolderCacheElement; - -class MSG_FolderCache : public XPSortedPtrArray -{ - -friend MSG_FolderCacheElement; - -public: - - MSG_FolderCache (); - virtual ~MSG_FolderCache (); - - // Read the disk file into 'this', returning zero if successful - int ReadFromDisk (); - - // Write the disk file based on the root folder info - int WriteToDisk (MSG_FolderInfo *root) const; - - // Look up the folder in 'this' and populate the fields known in the cache - // Returns TRUE if the folder was found in the cache - XP_Bool InitializeFolder (MSG_FolderInfo *folder) const; - - // Call this to free memory allocated by the cache since we - // don't need it (or trust it) at runtime. - void Depopulate (); - -protected: - - MSG_FolderCacheElement *GetAt (int i) const; - -}; - -#endif // _MSGFCACH_H diff --git a/mozilla/lib/libmsg/msgfinfo.cpp b/mozilla/lib/libmsg/msgfinfo.cpp deleted file mode 100644 index df285bda4ef..00000000000 --- a/mozilla/lib/libmsg/msgfinfo.cpp +++ /dev/null @@ -1,4743 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "errcode.h" -#include "csid.h" // for CS_UNKNOWN - -#include "msgimap.h" -#include "maildb.h" -#include "mailhdr.h" -#include "msgprefs.h" -#include "msgfpane.h" - -#include "grpinfo.h" -#include "newsdb.h" -#include "msgtpane.h" -#include "msgspane.h" -#include "msgmpane.h" -#include "msgdbvw.h" -#include "prsembst.h" -#include "xpgetstr.h" -#include "nwsartst.h" -#include "msgundmg.h" -#include "msgundac.h" -#include "maildb.h" -#include "xplocale.h" -#include "msgurlq.h" -#include "newshost.h" -#include "hosttbl.h" -#include "newsset.h" -#include "grec.h" -#include "prefapi.h" -#include "newsdb.h" -#include "idarray.h" -#include "imapoff.h" -#include "imaphost.h" -#include "msgbiff.h" - -#if defined(XP_WIN16) || defined(XP_OS2) -#define MAX_FILE_LENGTH_WITHOUT_EXTENSION 8 -#elif defined(XP_MAC) -#define MAX_FILE_LENGTH_WITHOUT_EXTENSION 26 -#elif defined(XP_WIN32) -#define MAX_FILE_LENGTH_WITHOUT_EXTENSION 256 -#else -#define MAX_FILE_LENGTH_WITHOUT_EXTENSION 32000 -#endif - - -void PostMessageCopyUrlExitFunc (URL_Struct *URL_s, int status, MWContext *window_id); -void OfflineOpExitFunction (URL_Struct *URL_s, int status, MWContext *window_id); - -/* Some prototypes for routines in mkpop3.c */ - -extern "C" char* ReadPopData(char *name); -extern "C" void SavePopData(char *data); -extern "C" void net_pop3_delete_if_in_server(char *data, char *uidl, XP_Bool *changed); -extern "C" void KillPopData(char* data); - - -extern "C" -{ - extern int MK_MSG_ERROR_WRITING_MAIL_FOLDER; - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_CANT_COPY_TO_SAME_FOLDER; - extern int MK_MSG_CANT_COPY_TO_QUEUE_FOLDER; - extern int MK_MSG_CANT_COPY_TO_QUEUE_FOLDER_OLD; - extern int MK_MSG_CANT_COPY_TO_DRAFTS_FOLDER; - extern int MK_MSG_CANT_CREATE_FOLDER; - extern int MK_COULD_NOT_CREATE_DIRECTORY; - extern int MK_UNABLE_TO_DELETE_FILE; - extern int MK_UNABLE_TO_OPEN_FILE; - extern int MK_MSG_FOLDER_ALREADY_EXISTS; - extern int MK_MSG_FOLDER_BUSY; - extern int MK_MSG_CANT_DELETE_NEWS_DB; - extern int MK_MSG_IMAP_CONTAINER_NAME; - extern int MK_MSG_CANT_MOVE_FOLDER; - extern int MK_MSG_ONLINE_IMAP_WITH_NO_BODY; - extern int MK_MSG_LOCAL_MAIL; - extern int MK_NEWS_DISCUSSIONS_ON; - extern int MK_MSG_DELETING_MSGS_STATUS; - extern int MK_MSG_COPYING_MSGS_STATUS; - extern int MK_MSG_MOVING_MSGS_STATUS; - extern int MK_MSG_COPY_TARGET_NO_SELECT; - extern int MK_MSG_TMP_FOLDER_UNWRITABLE; - extern int MK_POP3_OUT_OF_DISK_SPACE; -} - -MSG_FolderInfo::MSG_FolderInfo(const char* n, uint8 d, XPCompareFunc* comparator) - : m_subFolders(NULL) - , m_flags(0) - , m_name((n) ? XP_STRDUP(n) : 0) -{ - - m_depth = d; - m_numUnreadMessages = -1; - m_numTotalMessages = 0; - m_master = NULL; - m_semaphoreHolder = NULL; - m_prefFlags = 0; - m_csid = CS_UNKNOWN; - m_lastMessageLoaded = MSG_MESSAGEKEYNONE; - m_numPendingUnreadMessages = 0; - m_numPendingTotalMessages = 0; - m_subFolders = new MSG_FolderArray (comparator); - - m_isCachable = TRUE; -} - -MSG_FolderInfo::~MSG_FolderInfo() -{ -#ifdef DEBUG - m_subFolders->VerifySort(); -#endif // DEBUG - for (int i = 0; i < m_subFolders->GetSize(); i++) - delete m_subFolders->GetAt(i); - - delete m_subFolders; - - if (m_name) - XP_FREE(m_name); -} - -MsgERR MSG_FolderInfo::OnCloseFolder () -{ - return eSUCCESS; -} - -MWContext *MSG_FolderInfo::GetFolderPaneContext() -{ - // find the folder pane context - MSG_Pane *folderPane = m_master->FindFirstPaneOfType(MSG_FOLDERPANE); - MWContext *folderPaneContext = NULL; - if (folderPane) - folderPaneContext = folderPane->GetContext(); - if (!folderPane || !folderPaneContext) - { - XP_ASSERT(FALSE); - return NULL; - } - return folderPaneContext; -} - - -void MSG_FolderInfo::StartAsyncCopyMessagesInto (MSG_FolderInfo *dstFolder, - MSG_Pane* sourcePane, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - MWContext *currentContext, - MSG_UrlQueue *urlQueue, - XP_Bool deleteAfterCopy, - MessageKey nextKeyToLoad) -{ - // General note: If either the source or destination folder is an IMAP folder then we add the copy info struct - // to the end of the current context's chain of copy info structs then fire off an IMAP URL. - // However, local folders don't work this way! We must add the copy info struct to the URL queue where it will be fired - // at its leisure. - - MessageCopyInfo *copyInfo = (MessageCopyInfo *) XP_ALLOC(sizeof(MessageCopyInfo)); - - if (copyInfo) - { - XP_BZERO (copyInfo, sizeof(MessageCopyInfo)); - copyInfo->srcFolder = this; - copyInfo->dstFolder = dstFolder; - copyInfo->nextCopyInfo = NULL; - copyInfo->dstIMAPfolderUpdated=FALSE; - copyInfo->offlineFolderPositionOfMostRecentMessage = 0; - copyInfo->srcDB = sourceDB; - copyInfo->srcArray = srcArray; - copyInfo->srcCount = srcCount; - - copyInfo->moveState.ismove = deleteAfterCopy; - copyInfo->moveState.sourcePane = sourcePane; - copyInfo->moveState.nextKeyToLoad = nextKeyToLoad; - copyInfo->moveState.urlForNextKeyLoad = NULL; - copyInfo->moveState.moveCompleted = FALSE; - copyInfo->moveState.finalDownLoadMessageSize = 0; - copyInfo->moveState.imap_connection = 0; - copyInfo->moveState.haveUploadedMessageSize = FALSE; - - MsgERR openErr = eSUCCESS; - XP_Bool wasCreated; - if (dstFolder->GetType() == FOLDER_MAIL) - openErr = MailDB::Open (dstFolder->GetMailFolderInfo()->GetPathname(), FALSE, &copyInfo->moveState.destDB, FALSE); - else if (dstFolder->GetType() == FOLDER_IMAPMAIL && !IsNews()) - openErr = ImapMailDB::Open (dstFolder->GetMailFolderInfo()->GetPathname(), FALSE, &copyInfo->moveState.destDB, - sourcePane->GetMaster(), &wasCreated); - - - if (!dstFolder->GetMailFolderInfo() || (openErr != eSUCCESS)) - copyInfo->moveState.destDB = NULL; - - // let the front end know that we are starting a long update - sourcePane->StartingUpdate(MSG_NotifyNone, 0, 0); - - if ((this->GetType() == FOLDER_IMAPMAIL) || (dstFolder->GetType() == FOLDER_IMAPMAIL)) - { - // add this copyinfo struct to the end - if (currentContext->msgCopyInfo != NULL) - { - MessageCopyInfo *endingNode = currentContext->msgCopyInfo; - while (endingNode->nextCopyInfo != NULL) - endingNode = endingNode->nextCopyInfo; - endingNode->nextCopyInfo = copyInfo; - } - else - currentContext->msgCopyInfo = copyInfo; - - // BeginCopyMessages will fire an IMAP url. The IMAP - // module will call FinishCopyMessages so that the whole - // shebang is handled as one IMAP url. Previously the copy - // happened with a mailbox url and IMAP url running together - // in the same context. This worked on mac only. - MsgERR copyErr = BeginCopyingMessages(dstFolder, sourceDB, srcArray,urlQueue,srcCount,copyInfo); - if (0 != copyErr) - { - CleanupCopyMessagesInto(&currentContext->msgCopyInfo); - - if (!NET_IsOffline() && ((int32) copyErr < -1) ) - FE_Alert (sourcePane->GetContext(), XP_GetString(copyErr)); - } - } - else - { - // okay, add this URL to our URL queue. - URL_Struct *url_struct = NET_CreateURLStruct("mailbox:copymessages", NET_DONT_RELOAD); - if (url_struct) - { - MSG_UrlQueue::AddLocalMsgCopyUrlToPane(copyInfo, url_struct, PostMessageCopyUrlExitFunc, sourcePane, FALSE); - } - } - } -} - - -void MSG_FolderInfo::CleanupCopyMessagesInto (MessageCopyInfo **info) -{ - if (!info || !*info) - return; - - MSG_Pane *sourcePane = (*info)->moveState.sourcePane; - - XP_Bool searchPane = sourcePane ? sourcePane->GetPaneType() == MSG_SEARCHPANE : FALSE; - - if ((*info)->moveState.destDB != NULL) - { - (*info)->moveState.destDB->Close(); - (*info)->moveState.destDB = NULL; - } - if ((*info)->dstFolder->TestSemaphore(this)) - (*info)->dstFolder->ReleaseSemaphore(this); - - // if we were a search pane, and an error occurred, close the view on this action.. - if (sourcePane != NULL && searchPane) - ((MSG_SearchPane *) sourcePane)->CloseView((*info)->srcFolder); - - - // tell the fe that we are finished with - // out backend driven update. They can - // now do things like load the next message. - - // now that an imap copy message is at most 2 urls, we can end the - // the update here. Now this is this only ending update and resource - // cleanup for message copying - sourcePane->EndingUpdate(MSG_NotifyNone, 0, 0); - - // tell the FE that we're done copying so they can re-enable - // selection if they've decided to disable it during the copy - - // I don't think we want to do this if we are a search pane but i haven't been able to - // justify why yet!! - - if (!searchPane) - FE_PaneChanged(sourcePane, TRUE, MSG_PaneNotifyCopyFinished, 0); - - // EndingUpdate may have caused an interruption of this context and cleaning up the - // url queue may have deleted this MessageCopyInfo already - if (*info) - { - MessageCopyInfo *deleteMe = *info; - *info = deleteMe->nextCopyInfo; // but nextCopyInfo == NULL. this causes the fault later on (MSCOTT) - XP_FREE(deleteMe); - } -} - - -XP_Bool MSG_FolderInfo::HasSubFolders() const -{ - return m_subFolders->GetSize() > 0; -} - -int MSG_FolderInfo::GetNumSubFolders() const -{ - return m_subFolders->GetSize(); -} - -MSG_FolderInfo* MSG_FolderInfo::GetSubFolder(int which) const -{ - XP_ASSERT(which >= 0 && which < m_subFolders->GetSize()); - return m_subFolders->GetAt (which); -} - -void MSG_FolderInfo::RemoveSubFolder (MSG_FolderInfo *which) -{ - int idx = m_subFolders->FindIndex (0, which); - if (idx != -1) - m_subFolders->RemoveAt (idx); - else - XP_ASSERT(FALSE); //someone asked to remove a folder we don't own - - XP_ASSERT(m_subFolders->FindIndex(0, which) == -1); - if (m_subFolders->GetSize() == 0) - { - // Our last child was deleted, so reset our hierarchy bits and tell the panes that this - // folderInfo changed, which eventually redraws the expand/collapse widget in the folder pane - m_flags &= ~MSG_FOLDER_FLAG_DIRECTORY; - m_flags &= ~MSG_FOLDER_FLAG_ELIDED; - m_master->BroadcastFolderChanged (this); - } - -} - -XP_Bool MSG_FolderInfo::GetAdminUrl(MWContext * /* context */, MSG_AdminURLType /* type */) -{ - return FALSE; -} - -XP_Bool MSG_FolderInfo::HaveAdminUrl(MSG_AdminURLType /* type */) -{ - return FALSE; -} - -XP_Bool MSG_FolderInfo::DeleteIsMoveToTrash() -{ - return FALSE; -} - -XP_Bool MSG_FolderInfo::ShowDeletedMessages() -{ - return FALSE; -} - - -void MSG_FolderInfo::ChangeNumPendingUnread(int32 delta) -{ - DBFolderInfo *folderInfo; - MessageDB *db; - MsgERR err = GetDBFolderInfoAndDB(&folderInfo, &db); - if (err == eSUCCESS) - { - if (folderInfo) - { - m_numPendingUnreadMessages += delta; - folderInfo->ChangeImapUnreadPendingMessages(delta); - } - if (db) - db->Close(); - } -} - -void MSG_FolderInfo::ChangeNumPendingTotalMessages(int32 delta) -{ - DBFolderInfo *folderInfo; - MessageDB *db; - MsgERR err = GetDBFolderInfoAndDB(&folderInfo, &db); - if (err == eSUCCESS) - { - if (folderInfo) - { - m_numPendingTotalMessages += delta; - folderInfo->ChangeImapTotalPendingMessages(delta); - } - if (db) - db->Close(); - } -} - - -void MSG_FolderInfo::SetFolderPrefFlags(int32 flags) -{ - DBFolderInfo *folderInfo; - MessageDB *db; - - flags |= MSG_FOLDER_PREF_CACHED; - - // don't do anything if the flags aren't changing (modulo the cached bit) - if (flags != GetFolderPrefFlags()) - { - MsgERR err = GetDBFolderInfoAndDB(&folderInfo, &db); - if (err == eSUCCESS) - { - if (folderInfo) - { - m_prefFlags = flags; - folderInfo->SetFlags(flags & ~MSG_FOLDER_PREF_CACHED); - } - if (db) - db->Close(); - } - } -} - -int32 MSG_FolderInfo::GetFolderPrefFlags() -{ - ReadDBFolderInfo(); - return m_prefFlags; -} - -void MSG_FolderInfo::SetFolderCSID(int16 csid) -{ - DBFolderInfo *folderInfo; - MessageDB *db; - MsgERR err = GetDBFolderInfoAndDB(&folderInfo, &db); - if (err == eSUCCESS) - { - if (folderInfo) - { - m_csid = csid; - folderInfo->SetCSID(m_csid); - } - if (db) - db->Close(); - } -} - -int16 MSG_FolderInfo::GetFolderCSID() -{ - ReadDBFolderInfo(); - return m_csid; -} - -void MSG_FolderInfo::SetLastMessageLoaded(MessageKey lastMessageLoaded) -{ - DBFolderInfo *folderInfo; - MessageDB *db; - MsgERR err = GetDBFolderInfoAndDB(&folderInfo, &db); - if (err == eSUCCESS) - { - if (folderInfo) - { - m_lastMessageLoaded = lastMessageLoaded; - folderInfo->SetLastMessageLoaded(lastMessageLoaded); - } - if (db) - db->Close(); - } -} - -MessageKey MSG_FolderInfo::GetLastMessageLoaded() -{ - ReadDBFolderInfo(); - return m_lastMessageLoaded; -} - -void MSG_FolderInfo::RememberPassword(const char * /* password */) -{ -} - -char *MSG_FolderInfo::GetRememberedPassword() -{ - return NULL; -} - -XP_Bool MSG_FolderInfo::UserNeedsToAuthenticateForFolder(XP_Bool displayOnly) -{ - return FALSE; -} - -const char *MSG_FolderInfo::GetUserName() -{ - return ""; -} -const char *MSG_FolderInfo::GetHostName() -{ - return ""; -} - -const char *MSG_FolderInfoMail::GetUserName() -{ - return NET_GetPopUsername(); -} - -const char *MSG_FolderInfoMail::GetHostName() -{ - return m_master->GetPrefs()->GetPopHost(); -} - -// We're a local folder - if we're using pop, check to see if we've got the pop password. -// If we're using imap, check if we've cached the password on the default imap host. -char *MSG_FolderInfoMail::GetRememberedPassword() -{ - XP_Bool serverIsIMAP = m_master->GetPrefs()->GetMailServerIsIMAP4(); - char *savedPassword = NULL; - if (serverIsIMAP) - { - MSG_IMAPHost *defaultIMAPHost = m_master->GetIMAPHostTable()->GetDefaultHost(); - if (defaultIMAPHost) - { - MSG_FolderInfo *hostFolderInfo = defaultIMAPHost->GetHostFolderInfo(); - MSG_FolderInfo *defaultHostIMAPInbox = NULL; - if (hostFolderInfo->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, &defaultHostIMAPInbox, 1) == 1 - && defaultHostIMAPInbox != NULL) - { - savedPassword = defaultHostIMAPInbox->GetRememberedPassword(); - } - } - } - else - { - MSG_FolderInfo *offlineInbox = NULL; - if (m_flags & MSG_FOLDER_FLAG_INBOX) - { - char *retPassword = NULL; - MailDB *mailDb = NULL; - XP_Bool wasCreated=FALSE; - MailDB::Open(m_pathName, FALSE, &mailDb, FALSE); - if (mailDb) - { - XPStringObj cachedPassword; - mailDb->GetCachedPassword(cachedPassword); - retPassword = XP_STRDUP(cachedPassword); - mailDb->Close(); - - } - return retPassword; - } - if (m_master->GetLocalMailFolderTree()->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, &offlineInbox, 1) && offlineInbox) - savedPassword = offlineInbox->GetRememberedPassword(); - } - return savedPassword; -} - - -XP_Bool MSG_FolderInfoMail::UserNeedsToAuthenticateForFolder(XP_Bool /* displayOnly */) -{ - XP_Bool ret = FALSE; - if (m_master->IsCachePasswordProtected() && !m_master->IsUserAuthenticated() && !m_master->AreLocalFoldersAuthenticated()) - { - char *savedPassword = GetRememberedPassword(); - if (savedPassword && XP_STRLEN(savedPassword)) - ret = TRUE; - FREEIF(savedPassword); - } - return ret; -} - - -int32 MSG_FolderInfo::GetNumPendingUnread(XP_Bool deep) const -{ - int32 total = m_numPendingUnreadMessages; - if (deep) - { - MSG_FolderInfo *folder; - for (int i = 0; i < m_subFolders->GetSize(); i++) - { - folder = m_subFolders->GetAt(i); - if (folder) - total += folder->GetNumPendingUnread(deep); - } - } - return total; -} - -int32 MSG_FolderInfo::GetNumPendingTotalMessages(XP_Bool deep) const -{ - int32 total = m_numPendingTotalMessages; - if (deep) - { - MSG_FolderInfo *folder; - for (int i = 0; i < m_subFolders->GetSize(); i++) - { - folder = m_subFolders->GetAt(i); - total += folder->GetNumPendingTotalMessages(deep); - } - } - return total; -} - - -int32 MSG_FolderInfo::GetNumUnread(XP_Bool deep) const -{ - int32 total = m_numUnreadMessages; - if (deep) - { - MSG_FolderInfo *folder; - for (int i = 0; i < m_subFolders->GetSize(); i++) - { - folder = m_subFolders->GetAt(i); - if (folder) - { - int32 num = folder->GetNumUnread(deep); - if (num >= 0) // it's legal for counts to be negative if we don't know - total += num; - } - } - } - return total; -} - -int32 MSG_FolderInfo::GetTotalMessages(XP_Bool deep) const -{ - int32 total = m_numTotalMessages; - if (deep) - { - MSG_FolderInfo *folder; - for (int i = 0; i < m_subFolders->GetSize(); i++) - { - folder = m_subFolders->GetAt(i); - int32 num = folder->GetTotalMessages (deep); - if (num >= 0) // it's legal for counts to be negative if we don't know - total += num; - } - } - return total; -} - -int32 MSG_FolderInfo::GetExpungedBytesCount() const -{ - return 0; -} - - -const char *MSG_FolderInfo::GetPrettyName() -{ - return m_name; -} - -// return pretty name if any, otherwise ugly name. -const char *MSG_FolderInfo::GetPrettiestName() -{ - const char *prettyName = GetPrettyName(); - return (prettyName) ? prettyName : GetName(); -} - -int MSG_FolderInfo::GetNumSubFoldersToDisplay() const -{ - return GetNumSubFolders(); -} - -MSG_FolderArray *MSG_FolderInfo::GetSubFolders () -{ - return m_subFolders; -} - -void MSG_FolderInfo::GetVisibleSubFolders (MSG_FolderArray &subFolders) -{ - // The folder pane uses this routine to work around the fact - // that unsubscribed newsgroups are children of the news host. - // We can't count those when computing folder pane view indexes. - - for (int i = 0; i < m_subFolders->GetSize(); i++) - { - MSG_FolderInfo *f = m_subFolders->GetAt(i); - if (f && f->CanBeInFolderPane()) - subFolders.Add (f); - } -} - -void MSG_FolderInfo::SummaryChanged() -{ - UpdateSummaryTotals(); - if (m_master) - m_master->BroadcastFolderChanged(this); -} - -MsgERR MSG_FolderInfo::Rename (const char *newName) -{ - MsgERR status = 0; - MSG_FolderInfo *parentFolderInfo; - - parentFolderInfo = m_master->GetFolderTree()->FindParentOf(this); - parentFolderInfo->m_subFolders->Remove(this); - SetName(newName); - parentFolderInfo->m_subFolders->Add(this); - if (!GetName()) - status = MK_OUT_OF_MEMORY; - return status; -} - -const char* MSG_FolderInfo::GetName() -{ // Name of this folder (as presented to user). - return m_name; -} - -void MSG_FolderInfo::SetName(const char *name) -{ - FREEIF(m_name); - m_name = XP_STRDUP(name); -} - - -XP_Bool MSG_FolderInfo::ContainsChildNamed (const char *name) -{ - return FindChildNamed(name) != NULL; -} - -MSG_FolderInfo *MSG_FolderInfo::FindChildNamed (const char *name) -{ - MSG_FolderInfo *folder = NULL; - - for (int i = 0; i < m_subFolders->GetSize(); i++) - { - folder = m_subFolders->GetAt(i); - // case-insensitive compare is probably LCD across OS filesystems - if (!strcasecomp(folder->GetName(), name)) - return folder; - } - - return NULL; -} - -MSG_FolderInfo *MSG_FolderInfo::FindParentOf (MSG_FolderInfo *child) -{ - MSG_FolderInfo *result = NULL; - - for (int i = 0; i < m_subFolders->GetSize() && result == NULL; i++) - { - if (m_subFolders->GetAt (i) == child) - result = this; - } - - for (int j = 0; j < m_subFolders->GetSize() && result == NULL; j++) - { - MSG_FolderInfo *folder = m_subFolders->GetAt (j); - result = folder->FindParentOf (child); - } - - return result; -} - -XP_Bool MSG_FolderInfo::IsParentOf (MSG_FolderInfo *child, XP_Bool deep) -{ - for (int i = 0; i < m_subFolders->GetSize(); i++) - { - MSG_FolderInfo *folder = m_subFolders->GetAt(i); - if (folder == child || (deep && folder->IsParentOf(child, deep))) - return TRUE; - } - return FALSE; -} - -XP_Bool MSG_FolderInfo::UpdateSummaryTotals() -{ - return FALSE; -} - -uint32 MSG_FolderInfo::GetFlags() const -{ - return m_flags; -} - -uint8 MSG_FolderInfo::GetDepth() const -{ - return m_depth; -} - -void MSG_FolderInfo::SetDepth(uint8 depth) -{ - m_depth = depth; -} - -MSG_FolderInfoMail *MSG_FolderInfo::GetMailFolderInfo() {return NULL;} -MSG_FolderInfoNews *MSG_FolderInfo::GetNewsFolderInfo() {return NULL;} -MSG_IMAPFolderInfoMail *MSG_FolderInfo::GetIMAPFolderInfoMail() {return NULL;} -MSG_IMAPFolderInfoContainer *MSG_FolderInfo::GetIMAPFolderInfoContainer() {return NULL;} -MSG_IMAPHost *MSG_FolderInfo::GetIMAPHost() {return NULL;} - - -XP_Bool MSG_FolderInfo::CanCreateChildren () { return FALSE; } -XP_Bool MSG_FolderInfo::CanBeRenamed () { return FALSE; } - -void MSG_FolderInfo::MarkAllRead(MWContext *context, XP_Bool deep) -{ - MessageDB *db; - DBFolderInfo *folderInfo; - if (GetDBFolderInfoAndDB(&folderInfo, &db) == eSUCCESS) - { - if (db) - { - db->MarkAllRead(context); - db->Close(); - UpdateSummaryTotals(); - GetMaster()->BroadcastFolderChanged(this); - } - } - if (deep) - { - for (int i = 0; i < GetNumSubFolders(); i++) - { - MSG_FolderInfo *subFolder = GetSubFolder(i); - if (subFolder) - subFolder->MarkAllRead(context, deep); - } - } -} - -int32 MSG_FolderInfo::GetTotalMessagesInDB() const -{ - return m_numTotalMessages; // news overrides this, since m_numTotalMessages for news is server-based -} - - -void MSG_FolderInfo::ToggleFlag (uint32 whichFlag) -{ - XP_ASSERT(whichFlag != MSG_FOLDER_FLAG_SENTMAIL); - m_flags ^= whichFlag; -} - - -void MSG_FolderInfo::SetFlag (uint32 whichFlag) -{ - m_flags |= whichFlag; -} - - -void MSG_FolderInfo::ClearFlag(uint32 whichFlag) -{ - m_flags &= ~whichFlag; -} - -void MSG_FolderInfo::SetFlagInAllFolderPanes(uint32 which) -{ - SetFlag(which); - - MSG_FolderPane *eachPane; - for (eachPane = (MSG_FolderPane *) m_master->FindFirstPaneOfType(MSG_FOLDERPANE); eachPane; - eachPane = (MSG_FolderPane *) m_master->FindNextPaneOfType(eachPane->GetNextPane(), MSG_FOLDERPANE)) - { - eachPane->SetFlagForFolder(this, which); - } -} - -void MSG_FolderInfo::GetExpansionArray (MSG_FolderArray &array) -{ - // the application of flags in GetExpansionArray is subtly different - // than in GetFoldersWithFlag - - for (int i = 0; i < m_subFolders->GetSize(); i++) - { - MSG_FolderInfo *folder = m_subFolders->GetAt(i); - array.InsertAt(array.GetSize(), folder); - if (!(folder->GetFlags() & MSG_FOLDER_FLAG_ELIDED)) - folder->GetExpansionArray(array); - } -} - - -int32 MSG_FolderInfo::GetFoldersWithFlag(uint32 f, MSG_FolderInfo** result, int32 resultsize) -{ - int num = 0; - if ((f & m_flags) == f) { - if (result && num < resultsize) { - result[num] = this; - } - num++; - } - MSG_FolderInfo *folder = NULL; - for (int i=0; i < m_subFolders->GetSize(); i++) { - folder = m_subFolders->GetAt(i); - // CAREFUL! if NULL ise passed in for result then the caller - // still wants the full count! Otherwise, the result should be at most the - // number that the caller asked for. - if (!result) - num += folder->GetFoldersWithFlag(f, NULL, 0); - else if (num < resultsize) - num += folder->GetFoldersWithFlag(f, result + num, resultsize - num); - else - break; - } - return num; -} - - -char * MSG_FolderInfo::EscapeMessageId (const char *messageId) -{ - char *id = NULL; - - /* Take off bracketing <>, and quote special characters. */ - if (messageId[0] == '<') { - char *i2; - id = XP_STRDUP(messageId + 1); - if (!id) - return 0; - if (*id && id[XP_STRLEN(id) - 1] == '>') - id[XP_STRLEN(id) - 1] = '\0'; - i2 = NET_Escape (id, URL_XALPHAS); - XP_FREE (id); - id = i2; - } - else - id = NET_Escape (messageId, URL_XALPHAS); - return id; -} - - -MsgERR MSG_FolderInfo::AcquireSemaphore (void *semHolder) -{ - XP_ASSERT(semHolder != NULL); - MsgERR err = 0; - - if (m_semaphoreHolder == NULL) - m_semaphoreHolder = semHolder; - else - err = MK_MSG_FOLDER_BUSY; - - return err; -} - - -void MSG_FolderInfo::ReleaseSemaphore (void *semHolder) -{ - XP_ASSERT(m_semaphoreHolder == semHolder); - - if (!m_semaphoreHolder || m_semaphoreHolder == semHolder) - m_semaphoreHolder = NULL; -} - - -XP_Bool MSG_FolderInfo::RequiresCleanup() -{ - return FALSE; -} - -void MSG_FolderInfo::ClearRequiresCleanup() -{ -} - - -XP_Bool MSG_FolderInfo::TestSemaphore (void *semHolder) -{ - XP_ASSERT(semHolder); - - if (m_semaphoreHolder == semHolder) - return TRUE; - return FALSE; -} - - -XP_Bool MSG_FolderInfo::CanBeInFolderPane () -{ - return TRUE; -} - - -XP_Bool MSG_FolderInfo::KnowsSearchNntpExtension() -{ - return FALSE; -} - - -XP_Bool MSG_FolderInfo::AllowsPosting () -{ - return TRUE; -} - -XP_Bool MSG_FolderInfo::DisplayRecipients () -{ - if (m_flags & MSG_FOLDER_FLAG_SENTMAIL && !(m_flags & MSG_FOLDER_FLAG_INBOX)) - return TRUE; - else - { - // Only mail folders can be FCC folders - if (m_flags & MSG_FOLDER_FLAG_MAIL || m_flags & MSG_FOLDER_FLAG_IMAPBOX) - { - // There's one FCC folder for sent mail, and one for sent news - MSG_FolderInfo *fccFolders[2]; - int numFccFolders = m_master->GetFolderTree()->GetFoldersWithFlag (MSG_FOLDER_FLAG_SENTMAIL, fccFolders, 2); - for (int i = 0; i < numFccFolders; i++) - if (fccFolders[i]->IsParentOf (this)) - return TRUE; - } - } - return FALSE; -} - -MsgERR MSG_FolderInfo::ReadDBFolderInfo (XP_Bool force /* = FALSE */) -{ - // Since it turns out to be pretty expensive to open and close - // the DBs all the time, if we have to open it once, get everything - // we might need while we're here - - MsgERR err = eUNKNOWN; - if (force || !(m_prefFlags & MSG_FOLDER_PREF_CACHED)) - { - DBFolderInfo *folderInfo; - MessageDB *db; - err = GetDBFolderInfoAndDB(&folderInfo, &db); - if (err == eSUCCESS) - { - m_isCachable = TRUE; - if (folderInfo) - { - m_prefFlags = folderInfo->GetFlags(); - m_prefFlags |= MSG_FOLDER_PREF_CACHED; - folderInfo->SetFlags(m_prefFlags); - - m_numTotalMessages = folderInfo->GetNumMessages(); - m_numUnreadMessages = folderInfo->GetNumNewMessages(); - - m_numPendingTotalMessages = folderInfo->GetImapTotalPendingMessages(); - m_numPendingUnreadMessages = folderInfo->GetImapUnreadPendingMessages(); - - m_csid = folderInfo->GetCSID(); - if (db && !db->HasNew() && m_numPendingUnreadMessages <= 0) - ClearFlag(MSG_FOLDER_FLAG_GOT_NEW); - } - if (db) - db->Close(); - } - } - - return err; -} - -#define kFolderInfoCacheFormat1 "\t%08lX\t%08lX\t%ld\t%ld\t%d" -#define kFolderInfoCacheFormat2 "\t%08lX\t%08lX\t%ld\t%ld\t%ld\t%ld\t%d" - -#define kFolderInfoCacheVersion 2 - -MsgERR MSG_FolderInfo::WriteToCache (XP_File f) -{ - // This function is coupled tightly with ReadFromCache, - // and loosely with ReadDBFolderInfo - - XP_FilePrintf (f, "\t%d", kFolderInfoCacheVersion); - XP_FilePrintf (f, kFolderInfoCacheFormat2, (long) m_flags, (long) m_prefFlags, - (long) m_numTotalMessages, (long) m_numPendingTotalMessages, - (long) m_numUnreadMessages, (long) m_numPendingUnreadMessages, (int) m_csid); - - return eSUCCESS; -} - - -MsgERR MSG_FolderInfo::ReadFromCache (char *buf) -{ - // This function is coupled tightly with WriteToCache, - // and loosely with ReadDBFolderInfo - - MsgERR err = eSUCCESS; - int version; - int tokensRead = sscanf (buf, "\t%d", &version); - SkipCacheTokens (&buf, tokensRead); - - if ((version == 1) || (version == 2)) - { - uint32 tempFlags; - int tempCsid; - if (version == 1) - sscanf (buf, kFolderInfoCacheFormat1, &tempFlags, &m_prefFlags, - &m_numTotalMessages, &m_numUnreadMessages, &tempCsid); - else - sscanf (buf, kFolderInfoCacheFormat2, &tempFlags, &m_prefFlags, - &m_numTotalMessages, &m_numPendingTotalMessages, &m_numUnreadMessages, &m_numPendingUnreadMessages, &tempCsid); - - m_prefFlags |= MSG_FOLDER_PREF_CACHED; - // I'm chicken to just blast in all the flags, and the real - // reason I'm storing them is to get elided, so just get that - - if (tempFlags & MSG_FOLDER_FLAG_DIRECTORY) - { - m_flags |= MSG_FOLDER_FLAG_DIRECTORY; - if (!(tempFlags & MSG_FOLDER_FLAG_ELIDED)) - m_flags &= ~MSG_FOLDER_FLAG_ELIDED; - else - m_flags |= MSG_FOLDER_FLAG_ELIDED; - } - - // Let's remember the IMAP folder types, too - if (tempFlags & MSG_FOLDER_FLAG_IMAP_PERSONAL) - m_flags |= MSG_FOLDER_FLAG_IMAP_PERSONAL; - if (tempFlags & MSG_FOLDER_FLAG_IMAP_PUBLIC) - m_flags |= MSG_FOLDER_FLAG_IMAP_PUBLIC; - if (tempFlags & MSG_FOLDER_FLAG_IMAP_OTHER_USER) - m_flags |= MSG_FOLDER_FLAG_IMAP_OTHER_USER; - if (tempFlags & MSG_FOLDER_FLAG_PERSONAL_SHARED) - m_flags |= MSG_FOLDER_FLAG_PERSONAL_SHARED; - - // Can't scan a %d into a short on 32 bit platforms - m_csid = (int16) tempCsid; - } - else - err = eUNKNOWN; - - return err; -} - - -XP_Bool MSG_FolderInfo::IsCachable() -{ - // If we haven't opened the DB for this, we don't know what the real - // cache values should be, so don't write anything. - - return m_isCachable; -} - - -void MSG_FolderInfo::SkipCacheTokens (char **ppBuf, int numTokens) -{ - for (int i = 0; i < numTokens; i++) - { - while (**ppBuf == '\t') - (*ppBuf)++; - while (**ppBuf != '\t') - (*ppBuf)++; - } -} - - -const char *MSG_FolderInfo::GetRelativePathName () -{ - return NULL; -} - - -/*static*/ int MSG_FolderInfo::CompareFolderDepth (const void *v1, const void *v2) -{ - MSG_FolderInfo *f1 = *(MSG_FolderInfo**) v1; - MSG_FolderInfo *f2 = *(MSG_FolderInfo**) v2; - - // Sort shallowest folders to the top - return f1->m_depth - f2->m_depth; -} - - -int32 MSG_FolderInfo::GetSizeOnDisk () -{ - return 0; -} - -const char *MSG_FolderInfo::GenerateUniqueSubfolderName(const char* /*prefix*/, MSG_FolderInfo* /*otherFolder*/) -{ - /* override in MSG_FolderInfoMail */ - return NULL; -} - - -static const char* NameFromPathname(const char* pathname) -{ - char* ptr = XP_STRRCHR(pathname, '/'); - if (ptr) - return ptr + 1; - return pathname; -} - -int32 MSG_FolderInfoMail::GetExpungedBytesCount() const -{ - return m_expungedBytes; -} - -void MSG_FolderInfoMail::SetExpungedBytesCount(int32 count) -{ - m_expungedBytes = count; -} - - -XP_Bool MSG_FolderInfoMail::IsMail () { return TRUE; } -XP_Bool MSG_FolderInfoMail::IsNews () { return FALSE; } -XP_Bool MSG_FolderInfoMail::CanCreateChildren () { return TRUE; } - -#ifdef XP_WIN16 -#define RETURN_COMPARE_LONG_VALUES(b,a) \ - if (b > a)\ - return 1;\ - else if (b < a)\ - return -1;\ - else\ - return 0; -#else -#define RETURN_COMPARE_LONG_VALUES(b,a) return b - a; -#endif - -static inline uint32 MakeFakeSortFlags(uint32 folderFlags) -{ - const uint32 kSystemMailboxMask = (0x1F00); - uint32 result = folderFlags & kSystemMailboxMask; - if (folderFlags & MSG_FOLDER_FLAG_TEMPLATES) - result = 0x3FF; // just below drafts. - return result; -} - -int MSG_FolderInfoMail::CompareFolders(const void* a, const void* b) -{ - MSG_FolderInfoMail *aFolder = *((MSG_FolderInfoMail**) a); - MSG_FolderInfoMail *bFolder = *((MSG_FolderInfoMail**) b); - - if (aFolder->GetDepth() == 2) - { - // This bit-twiddling controls the order that system mailboxes are - // shown according to the bitflags and comments in msgcom.h. This code - // relies on the bit positions of the flags (e.g. MSG_FOLDER_FLAG_INBOX) - - - uint32 aFlags = MakeFakeSortFlags(aFolder->GetFlags()); - uint32 bFlags = MakeFakeSortFlags(bFolder->GetFlags()); - if (aFlags != 0 || bFlags != 0) - if (aFlags != bFlags) - RETURN_COMPARE_LONG_VALUES(bFlags, aFlags); - - // Sort IMAP Namespaces at the end of the list - const uint32 kImapNamespaceMask = 0x300000; - uint32 nsFlagsA = aFolder->GetFlags() & kImapNamespaceMask; - uint32 nsFlagsB = bFolder->GetFlags() & kImapNamespaceMask; - if (nsFlagsA != 0 || nsFlagsB != 0) - if (nsFlagsA != nsFlagsB) - RETURN_COMPARE_LONG_VALUES(nsFlagsA, nsFlagsB); - - // Else let the name break the tie (jrm had 2 sent-mail folders!!) - } - - return strcasecomp(aFolder->GetName(), bFolder->GetName()); -} - - -XP_Bool MSG_FolderInfoMail::ShouldIgnoreFile (const char *name) -{ - if (name[0] == '.' || name[0] == '#' || name[XP_STRLEN(name) - 1] == '~') - return TRUE; - - if (!XP_STRCASECMP (name, "rules.dat")) - return TRUE; - -#if defined (XP_WIN) || defined (XP_MAC) || defined(XP_OS2) - // don't add summary files to the list of folders; - //don't add popstate files to the list either, or rules (sort.dat). - if ((XP_STRLEN(name) > 4 && - !XP_STRCASECMP(name + XP_STRLEN(name) - 4, ".snm")) || - !XP_STRCASECMP(name, "popstate.dat") || - !XP_STRCASECMP(name, "sort.dat") || - !XP_STRCASECMP(name, "mailfilt.log") || - !XP_STRCASECMP(name, "filters.js") || - !XP_STRCASECMP(name + XP_STRLEN(name) - 4, ".toc")) - return TRUE; -#endif - - return FALSE; -} - - -// a factory that deals with pathname to long for us to append ".snm" to. Useful when the user imports -// a mailbox file with a long name. If there is a new name then pathname is replaced. -MSG_FolderInfoMail *MSG_FolderInfoMail::CreateMailFolderInfo(char* pathname, MSG_Master *master, uint8 depth, uint32 flags) -{ - int renameStatus = 0; - char *leafName = XP_STRDUP(NameFromPathname (pathname)); // we have to dup it because we need it after pathname is deleted - - char *mangledPath = NULL; - char *mangledLeaf = NULL; - - const int charLimit = MAX_FILE_LENGTH_WITHOUT_EXTENSION; // set on platform specific basis - - char *baseDir = XP_STRDUP(pathname); - if (baseDir) - { - char *lastSlash = XP_STRRCHR(baseDir, '/'); - if (lastSlash) - *lastSlash = '\0'; - } - - if (leafName && (XP_STRLEN(leafName) > charLimit)) - mangledLeaf = CreatePlatformLeafNameForDisk(leafName, master, baseDir); - - if (leafName && mangledLeaf && XP_STRCMP(leafName, mangledLeaf)) - { - // the user must have imported a mailbox with a file name to long for this platform. - mangledPath = XP_STRDUP(pathname); // this is enough room, we will shorten it - if (mangledPath) - { - char *leafPtr = XP_STRRCHR(mangledPath, '/'); - if (leafPtr) - { - XP_STRCPY(++leafPtr, mangledLeaf); - - // rename the mailbox file - renameStatus = XP_FileRename(pathname, xpMailFolder, mangledPath, xpMailFolder); - - XP_FREE(pathname); - pathname = mangledPath; - } - } - } - - MSG_FolderInfoMail *newFolder = new MSG_FolderInfoMail (pathname, master, depth, flags); - - if (newFolder && mangledPath && (0 == renameStatus)) - { - // if this folder was created with a new name, save the old pretty leaf name in the db - MailDB *mailDB; - MsgERR openErr = MailDB::Open (newFolder->GetPathname(), TRUE, &mailDB, TRUE);; - - DBFolderInfo *info = NULL; - if (openErr == eSUCCESS && mailDB) - { - info = mailDB->GetDBFolderInfo(); - newFolder->SetName(leafName); - info->SetMailboxName(leafName); - mailDB->SetSummaryValid(FALSE); - mailDB->Close(); - } - } - - - FREEIF(mangledLeaf); - FREEIF(leafName); - FREEIF(baseDir); - - return newFolder; -} - -void -MSG_FolderInfoMail::SetPrefFolderFlag() -{ - const char *path = GetPathname(); - - if (!path) - return; - - char *localMailFcc = NULL; - char *localNewsFcc = NULL; - - MSG_Prefs::GetXPDirPathPref("mail.default_fcc", FALSE, &localMailFcc); - MSG_Prefs::GetXPDirPathPref("news.default_fcc", FALSE, &localNewsFcc); - - const char *mailDirectory = m_master->GetPrefs()->GetFolderDirectory(); - if (!localMailFcc || !*localMailFcc || XP_STRCMP(mailDirectory, localMailFcc) == 0) - { - XP_FREEIF(localMailFcc); - localMailFcc = PR_smprintf("%s/%s", mailDirectory, SENT_FOLDER_NAME); - } - - if (!localNewsFcc || !*localNewsFcc || XP_STRCMP(mailDirectory, localNewsFcc) == 0) - { - XP_FREEIF(localNewsFcc); - localNewsFcc = PR_smprintf("%s/%s", mailDirectory, SENT_FOLDER_NAME); - } - - if (XP_STRCMP(path, localMailFcc) == 0 || - XP_STRCMP(path, localNewsFcc) == 0) - SetFlag(MSG_FOLDER_FLAG_SENTMAIL); - else - ClearFlag(MSG_FOLDER_FLAG_SENTMAIL); - - XP_FREEIF(localMailFcc); - XP_FREEIF(localNewsFcc); - - char *draftsPath = msg_MagicFolderName (m_master->GetPrefs(), - MSG_FOLDER_FLAG_DRAFTS, NULL); - - // +8 skip "mailbox:" part of url - if ( draftsPath && NET_URL_Type(draftsPath) == MAILBOX_TYPE_URL && - XP_STRCMP(draftsPath+8, mailDirectory) == 0) - { - // Default case - XP_FREEIF(draftsPath); - draftsPath = PR_smprintf("mailbox:%s/%s", mailDirectory, DRAFTS_FOLDER_NAME); - } - - if ( draftsPath && ((NET_URL_Type(draftsPath) == MAILBOX_TYPE_URL && - XP_STRCMP(path, draftsPath+8) == 0) || - XP_STRCMP(path, draftsPath) == 0) ) - SetFlag(MSG_FOLDER_FLAG_DRAFTS); - else - ClearFlag(MSG_FOLDER_FLAG_DRAFTS); - - XP_FREEIF(draftsPath); - - char *templatesPath = msg_MagicFolderName (m_master->GetPrefs(), - MSG_FOLDER_FLAG_TEMPLATES, - NULL); - - if ( templatesPath && NET_URL_Type(templatesPath) == MAILBOX_TYPE_URL && - XP_STRCMP(templatesPath+8, mailDirectory) == 0) - { - // Default case - XP_FREEIF(templatesPath); - templatesPath = PR_smprintf("mailbox:%s/%s", mailDirectory, TEMPLATES_FOLDER_NAME); - } - - if ( templatesPath && - ((NET_URL_Type(templatesPath) == MAILBOX_TYPE_URL && - XP_STRCMP(path, templatesPath+8) == 0) || - XP_STRCMP(path, templatesPath) == 0) ) - SetFlag(MSG_FOLDER_FLAG_TEMPLATES); - else - ClearFlag(MSG_FOLDER_FLAG_TEMPLATES); - - XP_FREEIF(templatesPath); -} - -MSG_FolderInfoMail* -MSG_FolderInfoMail::BuildFolderTree (const char *path, uint8 depth, MSG_FolderArray *parentArray, - MSG_Master *master, XP_Bool buildingImapTree /*= FALSE*/, MSG_IMAPHost *host /* = NULL */) -{ - const char *kDirExt = ".sbd"; - - // newPath will be owned by the folder info, so don't delete it here - char *newPath = (char*) XP_ALLOC(XP_STRLEN(path) + XP_STRLEN(kDirExt) + 1); - if (!newPath) - return NULL; - XP_STRCPY (newPath, path); - - uint32 newFlags = MSG_FOLDER_FLAG_MAIL; - const char *leafName = NameFromPathname (path); - if (buildingImapTree) - { - const char *dbLeafName = leafName; - // this allocates a string, so remember to free it at the end. - leafName = MSG_IMAPFolderInfoMail::CreateMailboxNameFromDbName(dbLeafName); - } - - if (depth == 2) // Gross. "depth 2" means that this is a top - // level folder. (See, depth 0 is the root, - // and depth 1 is the container for all - // local mail, so depth 2 is top level folder.) - { - // certain folder names are magic when in the base directory -#ifdef XP_MAC - char* escapedName = NULL; - do { - escapedName = NET_Escape(INBOX_FOLDER_NAME, URL_PATH); - if (escapedName && !XP_FILENAMECMP(leafName, escapedName) && - (!master->GetPrefs()->GetMailServerIsIMAP4() || buildingImapTree)) - { - newFlags |= MSG_FOLDER_FLAG_INBOX; - break; - } - XP_FREEIF(escapedName); - escapedName = NET_Escape(TRASH_FOLDER_NAME, URL_PATH); - if (escapedName && !XP_FILENAMECMP(leafName, escapedName)) - { - newFlags |= MSG_FOLDER_FLAG_TRASH; - break; - } - XP_FREEIF(escapedName); - escapedName = NET_Escape(MSG_GetQueueFolderName(), URL_PATH); - if (escapedName && !XP_FILENAMECMP(leafName, escapedName)) - { - newFlags |= MSG_FOLDER_FLAG_QUEUE; - break; - } - XP_FREEIF(escapedName); - } while (0); - XP_FREEIF(escapedName); -#else - if (!XP_FILENAMECMP(leafName, INBOX_FOLDER_NAME) && - (!master->GetPrefs()->GetMailServerIsIMAP4() || buildingImapTree)) - newFlags |= MSG_FOLDER_FLAG_INBOX; - else if (!XP_FILENAMECMP(leafName, TRASH_FOLDER_NAME)) - newFlags |= MSG_FOLDER_FLAG_TRASH; - else if (!XP_FILENAMECMP(leafName, MSG_GetQueueFolderName())) - newFlags |= MSG_FOLDER_FLAG_QUEUE; -#endif - } - - MSG_FolderInfoMail *newFolder = NULL; - XP_Dir dir = XP_OpenDir (newPath, xpMailFolder); - if (dir) - { - // newPath specifies a filesystem directory - char *lastFour = &newPath[XP_STRLEN(newPath) - XP_STRLEN(kDirExt)]; - if (XP_STRCASECMP(lastFour, kDirExt)) - { - // if the path doesn't contain .sbd, we can scan it. .sbd directories were - // created with the Navigator UI, and will be picked up when their - // corresponding mail folder is found. - newFlags |= (MSG_FOLDER_FLAG_DIRECTORY | MSG_FOLDER_FLAG_ELIDED); - if (buildingImapTree) - newFolder = new MSG_IMAPFolderInfoMail (newPath, master, depth, newFlags, host); - else - newFolder = new MSG_FolderInfoMail (newPath, master, depth, newFlags); - if (newFolder) - { - newFolder->SetMaster(master); - newFolder->SetPrefFolderFlag(); - } - if (newFolder && parentArray) - parentArray->Add (newFolder); - - XP_DirEntryStruct *entry = NULL; - for (entry = XP_ReadDir(dir); entry; entry = XP_ReadDir(dir)) - { - if (newFolder->ShouldIgnoreFile (entry->d_name)) - continue; - - char *subName = (char*) XP_ALLOC(XP_STRLEN(newPath) + XP_STRLEN(entry->d_name) + 5); - if (subName) - { - XP_STRCPY (subName, newPath); - if (*entry->d_name != '/') - XP_STRCAT (subName, "/"); - XP_STRCAT (subName, entry->d_name); - BuildFolderTree (subName, depth + 1, newFolder->m_subFolders, master, buildingImapTree, host); - FREEIF(subName); - } - } - } - else - { - // This is a .SBD directory that we created. We're going to ignore it - // for the purpose of building the tree, so delete the pathname - FREEIF(newPath); - } - XP_CloseDir (dir); - } - else - { - // newPath specifies a Berkeley mail folder or an imap db - if (buildingImapTree) - { - char *imapBoxName = MSG_IMAPFolderInfoMail::CreateMailboxNameFromDbName(newPath); - if (imapBoxName) - { - FREEIF(newPath); - newPath = imapBoxName; - newFolder = new MSG_IMAPFolderInfoMail (imapBoxName, master, depth, newFlags, host); - } - } - else - { - newFolder = CreateMailFolderInfo (newPath, master, depth, newFlags); - } - if (newFolder) - { - newFolder->SetMaster(master); - newFolder->SetPrefFolderFlag(); - if (parentArray) - { - if (parentArray->FindIndex(0, newFolder) == -1) - parentArray->Add (newFolder); // This maintains the sort order (XPSortedPtrArrray). - else if (buildingImapTree) // this is probably one of those duplicate imap databases - blow it away. - { - delete newFolder; - newFolder = NULL; - char *imapBoxName = MSG_IMAPFolderInfoMail::CreateMailboxNameFromDbName(path); - XP_FileRemove(imapBoxName, xpMailFolderSummary); - XP_Trace("removing duplicate db %s\n", leafName); - FREEIF(imapBoxName); - } - } - - if (newFolder) - { - newFolder->UpdateSummaryTotals(); - int32 flags = newFolder->GetFolderPrefFlags(); // cache folder pref flags - - // Look for a directory for this mail folder, and recurse into it. - // e.g. if the folder is "inbox", look for "inbox.sbd". - XP_Dir subDir = XP_OpenDir(newFolder->GetPathname(), xpMailSubdirectory); - if (subDir) - { - // If we knew it was a directory before getting here, we must have - // found that out from the folder cache. In that case, the elided bit - // is already what it should be, and we shouldn't change it. Otherwise - // the default setting is collapsed. - // NOTE: these flags do not affect the sort order, so we don't have to call - // QuickSort after changing them. - if (!(newFolder->m_flags & MSG_FOLDER_FLAG_DIRECTORY)) - newFolder->m_flags |= MSG_FOLDER_FLAG_ELIDED; - newFolder->m_flags |= MSG_FOLDER_FLAG_DIRECTORY; - - XP_DirEntryStruct *entry = NULL; - for (entry = XP_ReadDir(subDir); entry; entry = XP_ReadDir(subDir)) - { - if (newFolder->ShouldIgnoreFile (entry->d_name)) - continue; - - char *subPath = (char*) XP_ALLOC(XP_STRLEN(newFolder->GetPathname()) + XP_STRLEN(kDirExt) + XP_STRLEN(entry->d_name) + 2); - if (subPath) - { - XP_STRCPY (subPath, newFolder->GetPathname()); - XP_STRCAT (subPath, kDirExt); - if (*entry->d_name != '/') - XP_STRCAT (subPath, "/"); - XP_STRCAT (subPath, entry->d_name); - BuildFolderTree (subPath, depth + 1, newFolder->m_subFolders, master, buildingImapTree, host); - FREEIF(subPath); - } - } - XP_CloseDir (subDir); - } - } - } - } - - if (buildingImapTree && leafName) - XP_FREE((char *) leafName); - - if (newFolder && !buildingImapTree && (newFolder->GetFlags() & MSG_FOLDER_FLAG_INBOX)) - { - // LATER ON WE WILL ENABLE ANY FOLDER, NOT JUST INBOXES, This is a POP3 folder, Imap folders - // are added to the Biff Master in their constructor - XP_Bool getMail = FALSE, activate = FALSE; - int32 interval = 0; - - PREF_GetBoolPref("mail.check_new_mail", &getMail); - PREF_GetIntPref("mail.check_time", &interval); - - MSG_Biff_Master::AddBiffFolder((char*) newFolder->GetPathname(), getMail, - interval, TRUE, NULL /* no host name for POP */); - } - return newFolder; -} - -MsgERR MSG_FolderInfo::SaveMessages(IDArray * array, - const char * fileName, - MSG_Pane *pane, - MessageDB * msgDB, - int (*doneCB)(void *, int status), void *state) -{ - DownloadArticlesToFolder::SaveMessages(array, fileName, pane, this, msgDB, doneCB, state); - return eSUCCESS; -} - - -XP_Bool MSG_FolderInfo::ShouldPerformOperationOffline() -{ -#ifdef XP_UNIX - return NET_IsOffline(); -#else - if (NET_IsOffline()) - return TRUE; - if (GetType() == FOLDER_IMAPMAIL) - { - MSG_IMAPFolderInfoMail *imapFolder = (MSG_IMAPFolderInfoMail *) this; - return imapFolder->GetRunningIMAPUrl(); - } - return FALSE; -#endif -} - -MSG_FolderInfoMail::MSG_FolderInfoMail(char* path, MSG_Master *master, uint8 depth, uint32 flags) : - MSG_FolderInfo(NameFromPathname(path), depth, CompareFolders) -{ - // if we're a top level folder, we don't have unread messages - if ( depth < 2 ) { - m_numUnreadMessages = 0; - } - - m_HaveReadNameFromDB = FALSE; - m_expungedBytes = 0; - m_pathName = path; - m_flags = flags; - m_parseMailboxState = NULL; - m_master = master; - m_gettingMail = FALSE; -} - - -const char *MSG_FolderInfoMail::GetPrettyName() -{ - if (m_depth == 1) { - // Depth == 1 means we are on the mail server level - // override the name here to say "Local Mail" - if (GetType() == FOLDER_MAIL) - return (XP_GetString(MK_MSG_LOCAL_MAIL)); - else return MSG_FolderInfo::GetPrettyName(); - } - else return MSG_FolderInfo::GetPrettyName(); -} - -// this override pulls the value from the db -const char* MSG_FolderInfoMail::GetName() // Name of this folder (as presented to user). -{ - if (!m_HaveReadNameFromDB) - { - if (m_depth == 1) - { - SetName(XP_GetString(MK_MSG_LOCAL_MAIL)); - m_HaveReadNameFromDB = TRUE; - } - else - ReadDBFolderInfo(); - } - -#if defined(XP_WIN16) || defined(XP_OS2_HACK) - // (OS/2) DSR082197 - Mike thinks this is OK, but wants me to flag it in case we run into NLV problems. - // For Win16, try to make the filenames look presentable using the same - // mechanism as the Explorer. These macros are not i18n aware, but neither - // is the FAT filesystem, so no data can be lost here. - // - // For Win16, try to make the filenames look presentable, but only - // if we're using a single byte character set. It would be nice to have - // an XP API for this, but apparently we don't. - static XP_Bool guiCsidIsDoubleBye = (XP_Bool) ::GetSystemMetrics (SM_DBCSENABLED); - if (m_name && !guiCsidIsDoubleBye) - { - int i = 0; - while (m_name[i] != '\0') - { - if (i == 0) - m_name[i] = XP_TO_UPPER(m_name[i]); - else - m_name[i] = XP_TO_LOWER(m_name[i]); - i++; - } - } -#endif - - return m_name; -} - -const char *MSG_FolderInfoMail::GenerateUniqueSubfolderName(const char *prefix, MSG_FolderInfo *otherFolder) -{ - /* only try 256 times */ - for (int count = 0; (count < 256); count++) - { - char *uniqueName = PR_smprintf("%s%d",prefix,count); - if ((!ContainsChildNamed(uniqueName)) && - (otherFolder ? !(otherFolder->ContainsChildNamed(uniqueName)) : TRUE)) - return (uniqueName); - else - FREEIF(uniqueName); - } - return NULL; -} - -XP_Bool MSG_FolderInfoMail::MessageWriteStreamIsReadyForWrite(msg_move_state * /*state*/) -{ - return TRUE; -} - -// since we are writing to file, we don't care -// ahead of time how big the message is -// or what its imap flags are -int MSG_FolderInfoMail::CreateMessageWriteStream(msg_move_state *state, uint32 /*msgSize*/, uint32 /*flags*/) -{ - MsgERR returnError = 0; - XP_StatStruct destFolderStat; - - if (!XP_Stat(this->GetPathname(), &destFolderStat, xpMailFolder)) - state->writestate.position = destFolderStat.st_size; - - state->writestate.fid = XP_FileOpen (this->GetPathname(), xpMailFolder, XP_FILE_APPEND_BIN); - if (!state->writestate.fid) - returnError = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - - return returnError; -} - - -uint32 MSG_FolderInfoMail::MessageCopySize(DBMessageHdr *msgHeader, msg_move_state * /*state*/) -{ - return msgHeader->GetByteLength(); -} - -static void PostMessageCopyUrlExitCompleted(URL_Struct *URL_s, int status, MWContext *window_id) -{ - if ((window_id->msgCopyInfo->dstFolder->GetType() == FOLDER_IMAPMAIL) && !window_id->msgCopyInfo->dstIMAPfolderUpdated ) - { - MSG_IMAPFolderInfoMail *dstImapFolder = (MSG_IMAPFolderInfoMail *) window_id->msgCopyInfo->dstFolder; - window_id->msgCopyInfo->dstIMAPfolderUpdated = TRUE; - - dstImapFolder->FinishUploadFromFile(window_id->msgCopyInfo, status); - - // if the destination folder is open in a thread pane then really run the update - // otherwise we rely on tricking the FE until the user opens this folder. - MSG_Pane *threadPane = window_id->imapURLPane->GetMaster()->FindThreadPaneNamed(dstImapFolder->GetPathname()); - - if (threadPane) - { - MSG_UrlQueue *queue = MSG_UrlQueue::FindQueue(URL_s->address,window_id); - dstImapFolder->StartUpdateOfNewlySelectedFolder(threadPane, FALSE /*pretend we're loading folder, was FALSE*/, queue, - NULL, FALSE, FALSE); - } - } - MSG_MessageCopyIsCompleted (&window_id->msgCopyInfo); - if (URL_s->msg_pane->GetGoOnlineState()) - OfflineOpExitFunction( URL_s, status, window_id); - - - if (MSG_Pane::PaneInMasterList(window_id->imapURLPane)) - { - MSG_FolderPane *folderPane = (MSG_FolderPane *) window_id->imapURLPane->GetMaster()->FindFirstPaneOfType (MSG_FOLDERPANE); - if (folderPane) - folderPane->PostProcessRemoteCopyAction(); - } - else - XP_ASSERT(FALSE); // where'd our pane go? Probably a progress pane, but still. -} - -void PostMessageCopyUrlExitFunc (URL_Struct *URL_s, int status, - MWContext *window_id) -{ - XP_ASSERT(window_id->msgCopyInfo); - - if (window_id->msgCopyInfo) - { - if (window_id->msgCopyInfo->moveState.urlForNextKeyLoad) - { - XP_ASSERT(window_id->msgCopyInfo->moveState.sourcePane); - - URL_Struct *urlStruct = NET_CreateURLStruct(window_id->msgCopyInfo->moveState.urlForNextKeyLoad, NET_DONT_RELOAD); - FREEIF (window_id->msgCopyInfo->moveState.urlForNextKeyLoad); - window_id->msgCopyInfo->moveState.urlForNextKeyLoad = NULL; - - if ((window_id->msgCopyInfo->srcFolder->GetType() == FOLDER_IMAPMAIL) && - (window_id->msgCopyInfo->moveState.sourcePane->GetPaneType() == MSG_MESSAGEPANE)) - { - XP_DELETE(urlStruct); // don't need it, but we need to delete urlForNextKeyLoad before we start next url - MSG_MessagePane *messagePane = (MSG_MessagePane *) window_id->msgCopyInfo->moveState.sourcePane; - // let the message pane load the message. It needs to reset it's own state for loading a new message - // just blasting the message into it never called any MSG_MessagePane functions. - messagePane->LoadMessage(window_id->msgCopyInfo->srcFolder, - window_id->msgCopyInfo->moveState.nextKeyToLoad, - PostMessageCopyUrlExitFunc, - TRUE); - } - else if (window_id->msgCopyInfo->moveState.sourcePane->GetPaneType() == MSG_MESSAGEPANE) - { - // MSG_MessagePane::OpenMessageSock will get called by mailbox url - MSG_Pane *savePane = window_id->msgCopyInfo->moveState.sourcePane; - MSG_MessageCopyIsCompleted (&window_id->msgCopyInfo); - MSG_UrlQueue::AddUrlToPane(urlStruct, NULL, savePane); - } - else - {// probably a move from a thread pane, no message load, we are done - XP_DELETE(urlStruct); // don't need it, but we need to delete urlForNextKeyLoad before we start next url - PostMessageCopyUrlExitCompleted (URL_s, status, window_id); - } - } - else - { - PostMessageCopyUrlExitCompleted (URL_s, status, window_id); - } - } -} - -void MSG_FolderInfoMail::CloseOfflineDestinationDbAfterMove(msg_move_state *state) -{ - if (state->destDB) - { - state->destDB->Close(); - state->destDB = NULL; - MailDB::SetFolderInfoValid(GetPathname(), 0, 0); - SummaryChanged(); - } -} - - -MsgERR MSG_FolderInfoMail::CheckForLegalCopy(MSG_FolderInfo *dstFolder) -{ - XP_ASSERT(dstFolder); - int err = 0; - - if (!dstFolder) - err = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - else if ( (FOLDER_MAIL != dstFolder->GetType()) && (FOLDER_IMAPMAIL != dstFolder->GetType()) ) - err = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - else if (this == dstFolder) - err = MK_MSG_CANT_COPY_TO_SAME_FOLDER; - else if (dstFolder->GetFlags() & (MSG_FOLDER_FLAG_QUEUE)) { - const char *q = MSG_GetQueueFolderName(); - if (q) { - if (!strcasecomp(q,QUEUE_FOLDER_NAME_OLD)) - err = MK_MSG_CANT_COPY_TO_QUEUE_FOLDER_OLD; - else - err = MK_MSG_CANT_COPY_TO_QUEUE_FOLDER; - } - else - err = MK_MSG_CANT_COPY_TO_QUEUE_FOLDER; - } - else if (dstFolder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOSELECT) - err = MK_MSG_COPY_TARGET_NO_SELECT; - -#ifdef DISABL_COPY_MSG_TO_DRAFTS - else if (dstFolder->GetFlags() & (MSG_FOLDER_FLAG_DRAFTS)) - err = MK_MSG_CANT_COPY_TO_DRAFTS_FOLDER; -#endif - - return err; -} - - -MsgERR MSG_FolderInfoMail::BeginOfflineAppend(MSG_IMAPFolderInfoMail *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - msg_move_state *state) -{ - MsgERR stopit = 0; - MailDB *sourceMailDB = sourceDB ? sourceDB->GetMailDB() : 0; - if (sourceMailDB) - { - for (int sourceKeyIndex=0; !stopit && (sourceKeyIndex < srcCount); sourceKeyIndex++) - { - if (state->destDB) - { - MessageKey fakeKey = 1; - fakeKey += state->destDB->ListHighwaterMark(); - - MailMessageHdr *mailHdr = sourceMailDB->GetMailHdrForKey(srcArray->GetAt(sourceKeyIndex)); - if (mailHdr) - { - MailMessageHdr *newMailHdr = new MailMessageHdr; - newMailHdr->CopyFromMsgHdr(mailHdr, sourceMailDB->GetDB(), state->destDB->GetDB()); - newMailHdr->SetMessageKey(fakeKey); - - uint32 onlineMsgSize = dstFolder->MessageCopySize(mailHdr, state); // does its own seek - - XP_FileSeek (state->infid, // seek to beginning of message - mailHdr->GetMessageOffset(), - SEEK_SET); - - uint32 bytesWritten = 0; - while (bytesWritten < onlineMsgSize) - bytesWritten += dstFolder->WriteBlockToImapServer(mailHdr, state, newMailHdr, TRUE); - - newMailHdr->SetMessageSize(onlineMsgSize); - newMailHdr->OrFlags(kOffline); - - stopit = state->destDB->AddHdrToDB(newMailHdr, NULL, TRUE); - - DBOfflineImapOperation *fakeOp = state->destDB->GetOfflineOpForKey(fakeKey, TRUE); - if (fakeOp) - { - fakeOp->SetSourceMailbox(GetPathname(), srcArray->GetAt(sourceKeyIndex)); - delete fakeOp; - } - else - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - - DBOfflineImapOperation *op = sourceMailDB->GetOfflineOpForKey(srcArray->GetAt(sourceKeyIndex), TRUE); - if (op) - { - const char *destinationPath = dstFolder->GetOnlineName(); - - op->AddMessageCopyOperation(destinationPath); - delete op; - } - else - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - delete mailHdr; - } - else - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - else - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - - if (state->destDB) - { - state->destDB->Commit(); - sourceMailDB->Commit(); - dstFolder->SummaryChanged(); - FE_Progress(state->sourcePane->GetContext(), ""); - } - } - else - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - - return stopit ? stopit : -1; -} - - - -MsgERR MSG_FolderInfoMail::BeginCopyingMessages (MSG_FolderInfo *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - MSG_UrlQueue *urlQueue, - int32 srcCount, - MessageCopyInfo *copyInfo) -{ - MsgERR err = CheckForLegalCopy(dstFolder); - - if (err != 0) - return err; - - msg_move_state *state = &copyInfo->moveState; - state->destfolder = dstFolder; - state->infid = XP_FileOpen (GetPathname(), xpMailFolder, XP_FILE_READ_BIN); - if (state->infid) - { - state->midMessage = FALSE; - state->messageBytesMovedSoFar = 0; - - state->size = 10240; - while (!state->buf && (state->size > 1024)) - { - state->buf = new char[state->size]; - if (!state->buf) - state->size /= 2; - } - if (state->buf) - err = 0; - else - err = MK_OUT_OF_MEMORY; - } - else - err = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - - - if ((dstFolder->GetType() == FOLDER_IMAPMAIL) && NET_IsOffline()) - { - return BeginOfflineAppend((MSG_IMAPFolderInfoMail *)dstFolder, - sourceDB, - srcArray, - srcCount, - state); - } - - if ((err == 0) && (dstFolder->GetType() == FOLDER_IMAPMAIL)) - { - state->sourcePane->GetContext()->msgCopyInfo->imapOnLineCopyState = kInProgress; - // make sure that the URL we are firing does not start writing bytes to - // an uninitialized socket - state->uploadToIMAPsocket = NULL; - - MSG_FolderInfoMail *dstMailFolder = dstFolder->GetMailFolderInfo(); - DBMessageHdr *msgHdr = sourceDB->GetDBHdrForKey(srcArray->GetAt(0)); - // remember this up front so we can tell the imap connection about it when we get told about the connection. - if (dstMailFolder && msgHdr) - { - state->msgSize = dstMailFolder->MessageCopySize(msgHdr, state); - state->msg_flags = msgHdr->GetFlags(); - delete msgHdr; - } - - // fire off the imap url to get the server ready for the message upload - MSG_IMAPFolderInfoMail *imapDstFolder = (MSG_IMAPFolderInfoMail *) dstFolder; - char *url_string = CreateImapOffToOnlineCopyUrl(imapDstFolder->GetHostName(), - imapDstFolder->GetOnlineName(), - imapDstFolder->GetOnlineHierarchySeparator()); - - if (urlQueue) - urlQueue->AddUrl(url_string, PostMessageCopyUrlExitFunc); - else - { - URL_Struct *url_struct = NET_CreateURLStruct(url_string, NET_DONT_RELOAD); - - // after this url is done, this exit function will fire a url to update - // the destination folder - - if (url_struct) - { - url_struct->pre_exit_fn = PostMessageCopyUrlExitFunc; - state->sourcePane->GetURL(url_struct, TRUE); - } - } - FREEIF(url_string); - } - - if (err == 0) - { - MSG_FolderInfoMail *dstMailFolder = dstFolder->GetMailFolderInfo(); - DBMessageHdr *msgHdr = sourceDB->GetDBHdrForKey(srcArray->GetAt(0)); - if (dstMailFolder && msgHdr) - { - err = dstMailFolder->CreateMessageWriteStream(state, dstMailFolder->MessageCopySize(msgHdr, state), msgHdr->GetFlags()); - delete msgHdr; - } - else - err = MK_CONNECTED; /* (rb) eID_NOT_FOUND; The message has already been deleted, but the UI has not - cached up, the user pressed the delete key way too fast. Instead say we are done. */ - } - - return err; -} - -uint32 MSG_FolderInfoMail::SeekToEndOfMessageStore(msg_move_state *state) -{ - uint32 newMsgPosition=0; - // state->writestate.fid can be 0 if the destination file is read only - if (state->writestate.fid && !XP_FileSeek (state->writestate.fid, 0, SEEK_END)) - newMsgPosition = ftell (state->writestate.fid); - - return newMsgPosition; -} - -uint32 MSG_FolderInfoMail::WriteMessageBuffer(msg_move_state *state, char *buffer, uint32 bytesToWrite, MailMessageHdr * /*for offline append*/) -{ - XP_FileWrite (buffer, bytesToWrite, state->writestate.fid); - if (ferror(state->writestate.fid)) - return MK_MSG_ERROR_WRITING_MAIL_FOLDER; - return 0; -} - -void MSG_FolderInfoMail::CloseMessageWriteStream(msg_move_state *state) -{ - if (state->writestate.fid) - { - XP_FileClose (state->writestate.fid); - state->writestate.fid = NULL; - } -} - - -void MSG_FolderInfoMail::SaveMessageHeader(msg_move_state *state, MailMessageHdr *hdr, uint32 messageKey, MessageDB * srcDB) -{ - if (state->destDB != NULL) - { - MailMessageHdr *newHdr = new MailMessageHdr(); - if (newHdr) - { - MsgERR msgErr; - MessageDBView *view = state->sourcePane->GetMsgView(); - - // hack for the search pane case!!! hopefully I won't have to do this too often... - if (state->sourcePane->GetPaneType() == MSG_SEARCHPANE) - { - if (srcDB == NULL) - return; // nothing we can do here.. - newHdr->CopyFromMsgHdr (hdr, srcDB->GetDB(), state->destDB->GetDB()); - - } - else - newHdr->CopyFromMsgHdr (hdr, view->GetDB()->GetDB(), state->destDB->GetDB()); - - // set new byte offset, since the offset in the old file is certainly wrong - newHdr->SetMessageKey (messageKey); - // PHP impedance mismatch on error types - msgErr = state->destDB->AddHdrToDB (newHdr, NULL, TRUE); // tell db to notify - - // if this was an IMAP download, then we must tweak the message size to account - // for the envelope and line termination differences - if (state->finalDownLoadMessageSize) - { - newHdr->SetByteLength(state->finalDownLoadMessageSize); - newHdr->SetMessageSize(state->finalDownLoadMessageSize); - } - - // update the folder info -// mailDb->m_dbFolderInfo->m_folderSize += hdr->GetByteLength(); -// mailDb->m_dbFolderInfo->setDirty(); - } - } -} - - - -int MSG_FolderInfoMail::FinishCopyingMessages (MWContext *currentContext, - MSG_FolderInfo *srcFolder, - MSG_FolderInfo *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - msg_move_state *state) -{ - int err = 0; - // int32 diskSpace = 0; - uint32 messageLength = 0; - - if (!state->infid) - return MK_MSG_ERROR_WRITING_MAIL_FOLDER; - - if (!dstFolder->TestSemaphore(this)) - { - err = dstFolder->AcquireSemaphore(this); - if (err) - { - FE_Alert (currentContext, XP_GetString(err)); - return MK_MSG_FOLDER_BUSY; - } - } - - MSG_FolderInfoMail *dstMailFolder = (MSG_FolderInfoMail *) dstFolder; - //diskSpace = FE_DiskSpaceAvailable(currentContext, dstMailFolder->GetPathname()); // too slow probably - - // seek any relevant files to the correct position - - MailMessageHdr *mailHdr = (MailMessageHdr *) sourceDB->GetDBHdrForKey(srcArray->GetAt(state->msgIndex)); - if (mailHdr) - messageLength = mailHdr->GetByteLength(); - /* When checking for disk space available, take in consideration possible database - changes, therefore ask for a little more than what the message size is. - Also, due to disk sector sizes, allocation blocks, etc. The space "available" may be greater - than the actual space usable. */ - //if((diskSpace +3096) <= messageLength) - // return(MK_POP3_OUT_OF_DISK_SPACE); - - if (!mailHdr) - return(MK_POP3_OUT_OF_DISK_SPACE); - - XP_FileSeek (state->infid, - mailHdr->GetMessageOffset() + state->messageBytesMovedSoFar, - SEEK_SET); - - uint32 storePosition = dstMailFolder->SeekToEndOfMessageStore(state); - UndoManager *undoManager = NULL; - - undoManager = state->sourcePane->GetUndoManager(); - - - // write header info if this starts a new message in an offline folder - if (!state->midMessage) - { - const char *statusMsgTemplate; - char *statusMsg; - - statusMsgTemplate = XP_GetString(state->ismove ? MK_MSG_MOVING_MSGS_STATUS : MK_MSG_COPYING_MSGS_STATUS); - if (statusMsgTemplate) - { - statusMsg = PR_smprintf(statusMsgTemplate, state->msgIndex + 1, srcCount, dstMailFolder->GetName()); - FE_Progress (currentContext, statusMsg); - int32 percent = (int32) ((100l * (int32)(state->msgIndex + 1)) / (int32)(srcCount)); - FE_SetProgressBarPercent(currentContext, percent); - FREEIF(statusMsg); - } - if (dstMailFolder->GetType() == FOLDER_MAIL) - { - dstMailFolder->SaveMessageHeader(state, mailHdr, storePosition, sourceDB); // sourceDB added by mscott - // Undo stuff... Who knows what am I doing here - if (undoManager && undoManager->GetState() == UndoIdle) - state->sourcePane->GetUndoManager()->AddMsgKey(storePosition); - // end Undo stuff - } - } - - HG87963 - // copy 2k or up to 10k of data or one message - ImapOnlineCopyState imapAppendState = state->sourcePane->GetContext()->msgCopyInfo->imapOnLineCopyState; - - if (dstMailFolder->MessageWriteStreamIsReadyForWrite(state)) - { - uint32 bytesLeft = messageLength - state->messageBytesMovedSoFar; - - uint32 nRead=0; - if (dstFolder->GetType() == FOLDER_IMAPMAIL) - { - if ((imapAppendState == kReadyForAppendData) && (bytesLeft > 0)) - { - ((MSG_IMAPFolderInfoMail *) dstFolder)->WriteBlockToImapServer(mailHdr, state, NULL, TRUE); // write it now. - - // close the imap stream so we can determine success/fail from server - if (state->messageBytesMovedSoFar >= messageLength) - dstMailFolder->CloseMessageWriteStream(state); - } - } - else - { - // do a block read, this is not line based IO - nRead = XP_FileRead (state->buf, bytesLeft > state->size ? state->size : bytesLeft, state->infid); - err = dstMailFolder->WriteMessageBuffer(state, state->buf, nRead, NULL); - if (err == 0) - state->messageBytesMovedSoFar += nRead; - else - { - // wrote a partial message and somehow we are out of space, back out our changes - // by removing the message and header - XP_FileClose (state->writestate.fid); // close before truncating - state->writestate.fid = NULL; - if (mailHdr) - { - err = XP_FileTruncate (dstMailFolder->GetPathname(), xpMailFolder, storePosition); - sourceDB->DeleteHeader(mailHdr, NULL, FALSE); - delete mailHdr; - } - if (state->buf) - { - delete [] state->buf; - state->buf = NULL; - } - return MK_POP3_OUT_OF_DISK_SPACE; - } - } - - } - - XP_Bool failedImapAppend = imapAppendState == kFailedAppend; - if (failedImapAppend) - state->msgIndex = srcCount; // do not process any more appends. - - if ((state->messageBytesMovedSoFar < messageLength) || (imapAppendState == kReadyForAppendData)) - state->midMessage = TRUE; - else - { - state->midMessage = FALSE; - state->messageBytesMovedSoFar = 0; - state->msgIndex++; - if ((dstFolder->GetType() == FOLDER_IMAPMAIL) && (state->msgIndex < srcCount) ) - { - // create the next IMAP message stream. It will upload the size - MSG_FolderInfoMail *dstMailFolder = (MSG_FolderInfoMail *) dstFolder; - DBMessageHdr *msgHdr = sourceDB->GetDBHdrForKey(srcArray->GetAt(state->msgIndex)); - err = dstMailFolder->CreateMessageWriteStream( - state, - dstMailFolder->MessageCopySize(msgHdr, state), msgHdr->GetFlags()); - delete msgHdr; - } - } - - // if this is the end of the copy, close the source and destination - if (state->msgIndex == srcCount) - { - MSG_ViewIndex doomedIndex = MSG_VIEWINDEXNONE; - - if (dstMailFolder->GetType() == FOLDER_MAIL) - { - dstMailFolder->CloseMessageWriteStream(state); - dstMailFolder->CloseOfflineDestinationDbAfterMove(state); - } - else // let the imap libnet module know that we are done with appends - { - if (!failedImapAppend) - UpdatePendingCounts(dstMailFolder, srcArray); - IMAP_UploadAppendMessageSize(state->imap_connection, 0,0); - } - - - - // *** Undo hook up - local folder only for now - if (!failedImapAppend && undoManager && (undoManager->GetState() == UndoIdle) && - (dstMailFolder->GetType() == FOLDER_MAIL)) - { - MoveCopyMessagesUndoAction *undoAction = - new MoveCopyMessagesUndoAction(srcFolder, - dstFolder, - state->ismove, - state->sourcePane, - srcArray->GetAt(0), - state->nextKeyToLoad); - - if (undoAction) - { - uint i; - for (i=0; i < srcCount; i++) - undoAction->AddDstKey(undoManager->GetAndRemoveMsgKey()); - for (i=0; i < srcCount; i++) - undoAction->AddSrcKey(srcArray->GetAt(i)); - undoManager->AddUndoAction(undoAction); - } - } - // *** End Undo Hook up - - MessageDBView * view = NULL; - // a search pane does not have a view, we need to work around this fact... - if (state->sourcePane && state->sourcePane->GetPaneType() == MSG_SEARCHPANE) // make sure we can cast.. - view = ((MSG_SearchPane *) state->sourcePane)->GetView(srcFolder); - else - view = state->sourcePane ? state->sourcePane->GetMsgView() : 0; - - // if this was a move delete the source messages - int32 i; - if (state->ismove && !failedImapAppend) - { - // Run the delete loop forwards - // so the indices will be right for DeleteMessagesByIndex - if (state->sourcePane) - { - IDArray viewIndices; - for (i = 0; i < srcCount; i++) - { - // should we stop on error? - state->msgIndex--; - if (view) - { - MessageKey key = srcArray->GetAt(i); - - // Tell the FE we're deleting this message in case they want to close - // any open message windows. - if (MSG_THREADPANE == state->sourcePane->GetPaneType()) - FE_PaneChanged (state->sourcePane, TRUE, MSG_PaneNotifyMessageDeleted, (uint32) key); - - doomedIndex = view->FindViewIndex(key); - viewIndices.Add(doomedIndex); - } - } - if (view) - { - //const char *statusMsgTemplate; - //char *statusMsg; - - //statusMsgTemplate = XP_GetString(MK_MSG_DELETING_MSGS_STATUS); - //if (statusMsgTemplate) - //{ - // statusMsg = PR_smprintf(statusMsgTemplate, state->msgIndex, srcCount); - // FE_Progress (currentContext, statusMsg); - // FREEIF(statusMsg); - //} - - state->sourcePane->StartingUpdate(MSG_NotifyNone, 0, 0); - - if (srcFolder->GetType() != FOLDER_IMAPMAIL) - DeleteMsgsOnServer(state, sourceDB, srcArray, srcCount); - err = view->DeleteMessagesByIndex (viewIndices.GetData(), viewIndices.GetSize(), TRUE /* delete from db */); - - state->sourcePane->EndingUpdate(MSG_NotifyNone, 0, 0); - } - } - srcFolder->SummaryChanged(); - } - - if (state->infid) - { - XP_FileClose (state->infid); - state->infid = NULL; - } - if (state->buf) - { - delete [] state->buf; - state->buf = NULL; - } - delete srcArray; - - if (view) - SetUrlForNextMessageLoad(state,view,doomedIndex); // should we do this if we are a search pane? - - // search as view modification..inform search pane that we are done with this view -// if (state->sourcePane && state->sourcePane->GetPaneType() == MSG_SEARCHPANE) -// ((MSG_SearchPane *) state->sourcePane)->CloseView(srcFolder); - - err = MK_CONNECTED; - } - delete mailHdr; - - return err; -} - - -// A message is being deleted from a POP3 mail file, so check and see if we have the message -// being deleted in the server. If so, then we need to remove the message from the server as well. -// We have saved the UIDL of the message in the popstate.dat file and we must match this uidl, so -// read the message headers and see if we have it, then mark the message for deletion from the server. -// The next time we look at mail the message will be deleted from the server. - -void MSG_FolderInfoMail::DeleteMsgsOnServer(msg_move_state *state, MessageDB *sourceDB, IDArray *srcArray, int32 srcCount) -{ - char *uidl; - char *header = NULL; - uint32 offset = 0, err = 0, size = 0, len = 0, i = 0; - MailMessageHdr *hdr = NULL; - MessageKey key = 0; - XP_Bool leave_on_server = FALSE; - XP_Bool changed = FALSE; - char *popData = NULL; - - PREF_GetBoolPref("mail.leave_on_server", &leave_on_server); - offset = XP_FileTell(state->infid); - header = (char*) XP_ALLOC(512); - for (i = 0; header && (i < srcCount); i++) - { - /* get uidl for this message */ - uidl = NULL; - hdr = ((MailDB*) sourceDB)->GetMailHdrForKey(srcArray->GetAt(i)); - if (hdr && ((hdr->GetFlags() & kPartial) || leave_on_server)) - { - len = 0; - err = XP_FileSeek(state->infid, hdr->GetMessageOffset(), SEEK_SET); /* GetMessageKey */ - len = hdr->GetMessageSize(); - while ((len > 0) && !uidl) - { - size = len; - if (size > 512) - size = 512; - if (XP_FileReadLine(header, size, state->infid)) - { - size = strlen(header); - if (!size) - len = 0; - else { - len -= size; - uidl = XP_STRSTR(header, X_UIDL); - } - } else - len = 0; - } - if (uidl) - { - if (!popData) - popData = ReadPopData((char*) MSG_GetPopHost(GetMaster()->GetPrefs())); - uidl += X_UIDL_LEN + 2; // skip UIDL: header - len = strlen(uidl); - if (len >= 2) - uidl[len - 2] = 0; // get rid of return-newline at end of string - net_pop3_delete_if_in_server(popData, uidl, &changed); - } - } - delete hdr; - } - FREEIF(header); - if (popData) - { - if (changed) - SavePopData(popData); - KillPopData(popData); - popData = NULL; - } - err = XP_FileSeek(state->infid, offset, SEEK_SET); -} - - -// This algorithm loads the next message url into the move state -// This function is shared by local and imap copies -void MSG_FolderInfoMail::SetUrlForNextMessageLoad(msg_move_state *state, MessageDBView *view, MSG_ViewIndex doomedIndex) -{ - //if (state->nextKeyToLoad!=MSG_MESSAGEKEYNONE) - { - // in general, the next key to load is the message currently at the - // position of the last key deleted, i.e., doomedIndex. - // If that's not valid, use state->nextKeyToLoad. - MessageKey nextKeyToLoad = view->GetAt(doomedIndex); - if (nextKeyToLoad == MSG_MESSAGEKEYNONE) - nextKeyToLoad = state->nextKeyToLoad; - else - state->nextKeyToLoad = nextKeyToLoad; // used in PostMessageCopyUrlExitFunc - - if (nextKeyToLoad != MSG_MESSAGEKEYNONE) - state->urlForNextKeyLoad = BuildUrl(view->GetDB(), nextKeyToLoad); - else if (state->ismove) - FE_PaneChanged(state->sourcePane, TRUE, MSG_PaneNotifyLastMessageDeleted, 0); - } -} - - - // returns a pointer, within the passed buffer, to the - // next CR, LF, or '\0' -char *MSG_FolderInfoMail::FindNextLineTerminatingCharacter(char *bufferToSearch) -{ - char *returnValue = bufferToSearch; - while ( *returnValue && (*returnValue != CR) && (*returnValue != LF) ) - returnValue++; - - return returnValue; -} - - - // This function ensures that each line in the buffer ends in - // CRLF, as required by RFC822 and therefore IMAP APPEND. - // - // This function assumes that there is enough room in the buffer to - // double its size. The return value is the new buffer size. -uint32 MSG_FolderInfoMail::ConvertBufferToRFC822LineTermination(char *buffer, uint32 bufferSize, XP_Bool *lastCharacterOfPrevBufferWasCR) -{ - // check for a <CR><LF> stradling buffer boundaries - if (*lastCharacterOfPrevBufferWasCR && (*buffer == LF)) - { - // we added a LF last time, shifting the buffer seems inefficient but this condition is very rare - XP_MEMMOVE(buffer, // destination - buffer+1, // source - --bufferSize); - } - - *lastCharacterOfPrevBufferWasCR = *(buffer + bufferSize - 1) == CR; - - - - // adjust the rest of the buffer - uint32 adjustedBufferSize = bufferSize; - *(buffer + bufferSize) = '\0'; // write a '\0' at the end so FindNextLineTerminatingCharacter will stop - - char *currentLineTerminator = FindNextLineTerminatingCharacter(buffer); - - if (*currentLineTerminator) - { - do { - if (XP_STRNCMP(currentLineTerminator, CRLF, 2)) - { - XP_MEMMOVE(currentLineTerminator+2, // destination - currentLineTerminator+1, // source - adjustedBufferSize - (currentLineTerminator - buffer)); - - *currentLineTerminator++ = CR; - *currentLineTerminator++ = LF; - adjustedBufferSize++; - } - else - currentLineTerminator += 2; - currentLineTerminator = FindNextLineTerminatingCharacter(currentLineTerminator); - } while (*currentLineTerminator); - } - - return adjustedBufferSize; -} - - -char *MSG_FolderInfoMail::CreatePlatformLeafNameForDisk(const char *userLeafName, MSG_Master *master, MSG_FolderInfoMail *parent) -{ - char *leafName = NULL; - char *baseDir = NULL; - - if (parent->m_depth > 1) - { - baseDir = (char *) XP_ALLOC(XP_STRLEN(parent->GetPathname()) + XP_STRLEN(".sbd") + 1); - if (baseDir) - { - XP_STRCPY(baseDir, parent->GetPathname()); - XP_STRCAT(baseDir, ".sbd"); - } - } - else - baseDir = XP_STRDUP(parent->GetPathname()); - - leafName = CreatePlatformLeafNameForDisk(userLeafName, master, baseDir); - - FREEIF(baseDir); - - return leafName; -} - - - - -char *MSG_FolderInfoMail::CreatePlatformLeafNameForDisk(const char *userLeafName, MSG_Master *, const char *baseDir) -{ - const int charLimit = MAX_FILE_LENGTH_WITHOUT_EXTENSION; // set on platform specific basis -#if XP_MAC - const char *illegalChars = ":"; -#elif defined(XP_WIN16) || defined(XP_OS2) - const char *illegalChars = "\"/\\[]:;=,|?<>*$. "; -#elif defined(XP_WIN32) - const char *illegalChars = "\"/\\[]:;=,|?<>*$"; -#else // UNIX - const char *illegalChars = ""; -#endif - - // if we weren't passed in anything, return NULL - if (!userLeafName || !baseDir) - return NULL; - - // mangledLeaf is the new leaf name. - // If userLeafName (a) contains all legal characters - // (b) is within the valid length for the given platform - // (c) does not already exist on the disk - // then we simply return XP_STRDUP(userLeafName) - // Otherwise we mangle it - char *mangledLeaf = NULL; - - // leafLength is the length of mangledLeaf which we will return - // if userLeafName is greater than the maximum allowed for this - // platform, then we truncate and mangle it. Otherwise leave it alone. - int32 leafLength = MIN(XP_STRLEN(userLeafName),charLimit); - - // Create the path for the summary file, to see if it already exists - // on the disk - int dirNameLength = XP_STRLEN(baseDir); - - // mangledPath is the entire path to the newly mangled leaf name - int allocatedSizeForMangledPath = dirNameLength + leafLength + 2; - char *mangledPath = (char *) XP_ALLOC(allocatedSizeForMangledPath); // 2 == length of '/' and '\0' - if (!mangledPath) - return NULL; - - // copy the given leaf name into the mangled path for now, truncating it - // at the maximum length. - // enough for 676 names with matching prefix - XP_STRCPY(mangledPath, baseDir); - XP_STRCAT(mangledPath, "/"); // 3rd argument is amount of space left available for cat - XP_STRNCAT_SAFE(mangledPath, userLeafName, allocatedSizeForMangledPath - XP_STRLEN(mangledPath)); - // mangledPath[XP_STRLEN(mangledPath)] = '\0'; - - // pathLeaf points to the location of the leaf name in mangledPath - char *pathLeaf = mangledPath + dirNameLength + 1; - - // after this while, if (*illegalCharacterPtr == 0), there are no illegal characters - const char *illegalCharacterPtr = pathLeaf; - while (*illegalCharacterPtr && !XP_STRCHR(illegalChars, *illegalCharacterPtr) && (*illegalCharacterPtr >= 31)) - illegalCharacterPtr++; - - - XP_StatStruct possibleNameStat; - if (!*illegalCharacterPtr && (0 != XP_Stat(mangledPath, &possibleNameStat, xpMailFolderSummary))) { - // if there are no illegal characters - // and the file doesn't already exist, then don't do anything to the string - // Note that this might be truncated to charLength, but if so, the file still - // does not exist, so we are OK. - mangledLeaf = XP_STRDUP(pathLeaf); - XP_FREE(mangledPath); - return mangledLeaf; - } - - - // if we are here, then any of the following may apply: - // (a) there were illegal characters - // (b) the file already existed - - // First, replace all illegal characters with '_' - for (char *possibleillegal = pathLeaf; *possibleillegal; possibleillegal++) - if (XP_STRCHR(illegalChars, *possibleillegal) || (*possibleillegal < 31) ) - *possibleillegal = '_'; - - - // Now, we have to loop until we find a filename that doesn't already - // exist on the disk - XP_Bool nameSpaceExhausted = FALSE; - - if (0 == XP_Stat(mangledPath, &possibleNameStat, xpMailFolderSummary)) { - if (leafLength >= 2) pathLeaf[leafLength - 2] = 'A'; - pathLeaf[leafLength - 1] = 'A'; // leafLength must be at least 1 - // pathLeaf[leafLength] = 0; - } - - - while (!nameSpaceExhausted && (0 == XP_Stat(mangledPath, &possibleNameStat, xpMailFolderSummary))) - { - - if (leafLength >= 2) - { - if (++(pathLeaf[leafLength - 1]) > 'Z') - { - pathLeaf[leafLength - 1] = 'A'; - nameSpaceExhausted = (pathLeaf[leafLength - 2])++ == 'Z'; - } - } - else - { - nameSpaceExhausted = (++(pathLeaf[leafLength - 1]) == 'Z'); - } - } - - mangledLeaf = XP_STRDUP(pathLeaf); - - XP_FREE(mangledPath); - return mangledLeaf; -} - -MsgERR MSG_FolderInfoMail::CreateSubfolder (const char *leafNameFromUser, MSG_FolderInfo **ppOutFolder, int32 *pOutPos) -{ - MsgERR status = 0; - *ppOutFolder = NULL; - *pOutPos = 0; - XP_StatStruct stat; - - - // Only create a .sbd pathname if we're not in the root folder. The root folder - // e.g. c:\netscape\mail has to behave differently than subfolders. - if (m_depth > 1) - { - // Look around in our directory to get a subdirectory, creating it - // if necessary - XP_BZERO (&stat, sizeof(stat)); - if (0 == XP_Stat (m_pathName, &stat, xpMailSubdirectory)) - { - if (!S_ISDIR(stat.st_mode)) - status = MK_COULD_NOT_CREATE_DIRECTORY; // a file .sbd already exists - } - else { - status = XP_MakeDirectory (m_pathName, xpMailSubdirectory); - if (status == -1) - status = MK_COULD_NOT_CREATE_DIRECTORY; - } - } - - char *leafNameForDisk = CreatePlatformLeafNameForDisk(leafNameFromUser,m_master, this); - if (!leafNameForDisk) - status = MK_OUT_OF_MEMORY; - - if (0 == status) //ok so far - { - // Now that we have a suitable parent directory created/identified, - // we can create the new mail folder inside the parent dir. Again, - - char *newFolderPath = (char*) XP_ALLOC(XP_STRLEN(m_pathName) + XP_STRLEN(leafNameForDisk) + XP_STRLEN(".sbd/") + 1); - if (newFolderPath) - { - XP_STRCPY (newFolderPath, m_pathName); - if (m_depth == 1) - XP_STRCAT (newFolderPath, "/"); - else - XP_STRCAT (newFolderPath, ".sbd/"); - XP_STRCAT (newFolderPath, leafNameForDisk); - - if (0 != XP_Stat (newFolderPath, &stat, xpMailFolder)) - { - XP_File file = XP_FileOpen(newFolderPath, xpMailFolder, XP_FILE_WRITE_BIN); - if (file) - { - // Create an empty database for this mail folder, set its name from the user - MailDB *unusedDb = NULL; - MailDB::Open(newFolderPath, TRUE, &unusedDb, TRUE); - if (unusedDb) - { - unusedDb->m_dbFolderInfo->SetMailboxName(leafNameFromUser); - - MSG_FolderInfoMail *newFolder = BuildFolderTree (newFolderPath, m_depth + 1, m_subFolders, m_master); - if (newFolder) - { - // so we don't show ??? in totals - newFolder->SummaryChanged(); - *ppOutFolder = newFolder; - *pOutPos = m_subFolders->FindIndex (0, newFolder); - } - else - status = MK_OUT_OF_MEMORY; - unusedDb->SetFolderInfoValid(newFolderPath,0,0); - unusedDb->Close(); - } - else - { - XP_FileClose(file); - file = NULL; - XP_FileRemove (newFolderPath, xpMailFolder); - status = MK_MSG_CANT_CREATE_FOLDER; - } - if (file) - { - XP_FileClose(file); - file = NULL; - } - } - else - status = MK_MSG_CANT_CREATE_FOLDER; - } - else - status = MK_MSG_FOLDER_ALREADY_EXISTS; - FREEIF(newFolderPath); - } - else - status = MK_OUT_OF_MEMORY; - } - FREEIF(leafNameForDisk); - return status; -} - - -void MSG_FolderInfoMail::RemoveSubFolder (MSG_FolderInfo *which) -{ - // Let the base class do list management - MSG_FolderInfo::RemoveSubFolder (which); - - // Derived class is responsible for managing the subdirectory - if (0 == m_subFolders->GetSize()) - XP_RemoveDirectory (m_pathName, xpMailSubdirectory); -} - -void MSG_FolderInfoMail::SetGettingMail(XP_Bool flag) -{ - m_gettingMail = flag; -} - -XP_Bool MSG_FolderInfoMail::GetGettingMail() -{ - return m_gettingMail; -} - - -MsgERR MSG_FolderInfoMail::Delete () -{ - MessageDB *db; - // remove the summary file - MsgERR status = CloseDatabase (m_pathName, &db); - if (0 == status) - { - if (db != NULL) - db->Close(); // decrement ref count, so it will leave cache - XP_FileRemove (m_pathName, xpMailFolderSummary); - } - - if ((0 == status) && (GetType() == FOLDER_MAIL)) - { - // remove the mail folder file - status = XP_FileRemove (m_pathName, xpMailFolder); - - // if the delete seems to have failed, but the file doesn't - // exist, that's not really an error condition, is it now? - if (status) - { - XP_StatStruct fileStat; - if (0 == XP_Stat(m_pathName, &fileStat, xpMailFolder)) - status = 0; - } - } - - - if (0 != status) - status = MK_UNABLE_TO_DELETE_FILE; - return status; -} - - -MsgERR MSG_FolderInfo::PropagateDelete (MSG_FolderInfo **ppFolder, XP_Bool deleteStorage) -{ - MsgERR status = 0; - - // first, find the folder we're looking to delete - for (int i = 0; i < m_subFolders->GetSize() && *ppFolder; i++) - { - MSG_FolderInfo *child = m_subFolders->GetAt(i); - if (*ppFolder == child) - { - // maybe delete disk storage for it, and its subfolders - status = child->RecursiveDelete(deleteStorage); - - if (status == 0) - { - // Send out a broadcast message that this folder is going away. - // Many important things happen on this broadcast. - m_master->BroadcastFolderDeleted (child); - - RemoveSubFolder(child); - delete child; - *ppFolder = NULL; // stop looking - } - } - else if ((*ppFolder)->GetDepth() > child->GetDepth()) - { - status = child->PropagateDelete (ppFolder, deleteStorage); - } - } - - return status; -} - - -MsgERR MSG_FolderInfo::RecursiveDelete (XP_Bool deleteStorage) -{ - // If deleteStorage is TRUE, recursively deletes disk storage for this folder - // and all its subfolders. - // Regardless of deleteStorage, always unlinks them from the children lists and - // frees memory for the subfolders but NOT for _this_ - - MsgERR status = 0; - - for (int k = 0; k < m_subFolders->GetSize() && !status; k++) - { - MSG_FolderInfo *child = m_subFolders->GetAt(k); - status = child->RecursiveDelete(deleteStorage); // recur - RemoveSubFolder(child); // unlink it from this's child list - delete child; // free memory - } - - // now delete the disk storage for _this_ - if (deleteStorage && (status == 0)) - status = Delete(); - - return status; - -} - - -MsgERR MSG_FolderInfoMail::CloseDatabase (const char *path, MessageDB **outDb) -{ - MsgERR err = eDBNotOpen; - - char* dbName = WH_FileName(path, xpMailFolderSummary); - if (!dbName) return eOUT_OF_MEMORY; - MessageDB *db = MessageDB::FindInCache(dbName); - XP_FREE(dbName); - if (db) - err = db->CloseDB(); - - if (outDb) - *outDb = db; - - // This is not really an error condition when trying to close the DB - if (eDBNotOpen == err) - err = 0; - - return err; -} - - -MsgERR MSG_FolderInfoMail::ReopenDatabase (MessageDB *db, const char *newPath) -{ - char* dbName = WH_FileName (newPath, xpMailFolderSummary); - if (!dbName) return eOUT_OF_MEMORY; - MsgERR err = db->OpenDB (dbName, FALSE /*create?*/); - if (eSUCCESS == err) - err = db->OnNewPath (newPath); - XP_FREE(dbName); - return err; -} - - -XP_Bool MSG_FolderInfoMail::CanBeRenamed () -{ - // The root mail folder can't be renamed - if (m_depth < 2) - return FALSE; - - // Here's a weird case necessitated because we don't have a separate - // preference for any folder name except the FCC folder (Sent). Others - // are known by name, and as such, can't be renamed. I guess. - if (m_flags & MSG_FOLDER_FLAG_TRASH || - m_flags & MSG_FOLDER_FLAG_DRAFTS || - m_flags & MSG_FOLDER_FLAG_QUEUE || - m_flags & MSG_FOLDER_FLAG_INBOX || - m_flags & MSG_FOLDER_FLAG_TEMPLATES) - return FALSE; - - return TRUE; -} - - -MsgERR MSG_FolderInfoMail::Rename (const char * newUserLeafName) -{ - // change the leaf name (stored separately) - MsgERR status = MSG_FolderInfo::Rename (newUserLeafName); - if (status == 0) - { - char *baseDir = XP_STRDUP(m_pathName); - if (baseDir) - { - char *base_slash = XP_STRRCHR (baseDir, '/'); - if (base_slash) - *base_slash = '\0'; - } - - char *leafNameForDisk = CreatePlatformLeafNameForDisk(newUserLeafName,m_master, baseDir); - if (!leafNameForDisk) - status = MK_OUT_OF_MEMORY; - - if (0 == status) - { - // calculate the new path name - char *newPath = (char*) XP_ALLOC(XP_STRLEN(m_pathName) + XP_STRLEN(leafNameForDisk) + 1); - XP_STRCPY (newPath, m_pathName); - char *slash = XP_STRRCHR (newPath, '/'); - if (slash) - XP_STRCPY (slash + 1, leafNameForDisk); - - // rename the mail summary file, if there is one - MessageDB *db = NULL; - status = CloseDatabase (m_pathName, &db); - - XP_StatStruct fileStat; - if (!XP_Stat(m_pathName, &fileStat, xpMailFolderSummary)) - status = XP_FileRename(m_pathName, xpMailFolderSummary, newPath, xpMailFolderSummary); - if (0 == status) - { - if (db) - { - if (ReopenDatabase (db, newPath) == 0) - db->m_dbFolderInfo->SetMailboxName(newUserLeafName); - } - else - { - MailDB *mailDb = NULL; - MailDB::Open(newPath, TRUE, &mailDb, TRUE); - if (mailDb) - { - mailDb->m_dbFolderInfo->SetMailboxName(newUserLeafName); - mailDb->Close(); - } - } - } - - // rename the mail folder file, if its local - if ((status == 0) && (GetType() == FOLDER_MAIL)) - status = XP_FileRename (m_pathName, xpMailFolder, newPath, xpMailFolder); - - if (status == 0) - { - // rename the subdirectory if there is one - if (m_subFolders->GetSize() > 0) - status = XP_FileRename (m_pathName, xpMailSubdirectory, newPath, xpMailSubdirectory); - - // tell all our children about the new pathname - if (status == 0) - { - int startingAt = XP_STRLEN (newPath) - XP_STRLEN (leafNameForDisk) + 1; // add one for trailing '/' - status = PropagateRename (leafNameForDisk, startingAt); - } - } - } - FREEIF(baseDir); - } - return status; -} - - -MsgERR MSG_FolderInfoMail::PropagateRename (const char *newName, int startingAt) -{ - XP_ASSERT(newName); - XP_ASSERT(m_pathName); - - // change our own pathname in memory to reflect the new name - MsgERR err = 0; - char *walkPath = &m_pathName[startingAt]; - char *diffEnd = XP_STRCHR (walkPath, '/'); - int diffLen = diffEnd ? (XP_STRLEN(diffEnd) + 1) : 0; - - char *newPath = (char*) XP_ALLOC (startingAt + XP_STRLEN(newName) + diffLen + 5); - if (newPath) - { - XP_STRNCPY_SAFE (newPath, m_pathName, startingAt); - XP_STRCAT (newPath, newName); - if (diffLen > 0) - { - XP_STRCAT (newPath, ".sbd"); - XP_STRNCAT_SAFE (newPath, diffEnd, diffLen); - } - XP_FREE (m_pathName); - m_pathName = newPath; - } - else - err = MK_OUT_OF_MEMORY; - - // recurse down the subfolders, changing their pathname in memory - MSG_FolderInfoMail *folder = NULL; - for (int i = 0; i < m_subFolders->GetSize() && err == 0; i++) - { - folder = (MSG_FolderInfoMail*) m_subFolders->GetAt(i); - XP_ASSERT(folder->IsMail()); - err = folder->PropagateRename (newName, startingAt); - } - - return err; -} - - -MsgERR MSG_FolderInfoMail::PropagateAdopt (const char *parentName, uint8 parentDepth) -{ - XP_ASSERT(parentName); - MSG_FolderInfoMail *child = NULL; - MsgERR err = eSUCCESS; - - // Build the new path to this folder - const char *pathNameLeaf = XP_STRRCHR (m_pathName, '/'); - XP_ASSERT(pathNameLeaf); - - char *newPathName = (char*) XP_ALLOC (XP_STRLEN(parentName) + XP_STRLEN(pathNameLeaf) + XP_STRLEN(".sbd/") + 1); - XP_STRCPY (newPathName, parentName); - if (parentDepth > 1) - XP_STRCAT (newPathName, ".sbd"); - XP_STRCAT (newPathName, pathNameLeaf); - - // Move the mail folder new parent's tree - int mailboxRenameStatus = 0; - if (GetType() == FOLDER_MAIL) // only rename local mailbox file, imap mailbox is not here - km - mailboxRenameStatus = XP_FileRename(m_pathName, xpMailFolder, newPathName, xpMailFolder); - if (0 == mailboxRenameStatus) - { - // Close the summary file and move it - MessageDB *db = NULL; - err = CloseDatabase (m_pathName, &db); - int dataBaseRenameStatus = 0; - XP_StatStruct fileStat; - if (!XP_Stat(m_pathName, &fileStat, xpMailFolderSummary)) - dataBaseRenameStatus = XP_FileRename(m_pathName, xpMailFolderSummary, newPathName, xpMailFolderSummary); - if (0 == dataBaseRenameStatus) - { - if (db) - err = ReopenDatabase (db, newPathName); - - // Depth at new location may be different - m_depth = parentDepth + 1; - - if (m_subFolders->GetSize() > 0) - { - // Create a subdirectory in the new location - XP_MakeDirectory (newPathName, xpMailSubdirectory); - - // Adopt our children into the new tree - for (int i = 0; i < m_subFolders->GetSize(); i++) - { - child = (MSG_FolderInfoMail*) m_subFolders->GetAt (i); - err = child->PropagateAdopt (newPathName, m_depth); - } - - // Remove the old subdirectory since its children have been moved - XP_RemoveDirectory (m_pathName, xpMailSubdirectory); - } - - // Now we're really done with the old name - XP_FREE(m_pathName); - m_pathName = newPathName; - newPathName = NULL; - } - else - err = MK_MSG_CANT_CREATE_FOLDER; - } - else - err = MK_MSG_CANT_CREATE_FOLDER; - - if (newPathName) - XP_FREE(newPathName); // only for error conditions - - return err; -} - - -MsgERR MSG_FolderInfoMail::Adopt (MSG_FolderInfo *srcFolder, int32 *pOutPos) -{ - MsgERR err = eSUCCESS; - XP_ASSERT (srcFolder->GetType() == GetType()); // we can only adopt the same type of folder - MSG_FolderInfoMail *mailFolder = (MSG_FolderInfoMail*) srcFolder; - - if (srcFolder == this) - return MK_MSG_CANT_COPY_TO_SAME_FOLDER; - - if (ContainsChildNamed(mailFolder->GetName())) - return MK_MSG_FOLDER_ALREADY_EXISTS; - - // If we aren't already a directory, create the directory and set the flag bits - if (0 == m_subFolders->GetSize()) - { - XP_Dir dir = XP_OpenDir (m_pathName, xpMailSubdirectory); - if (dir) - XP_CloseDir (dir); - else - { - XP_MakeDirectory (m_pathName, xpMailSubdirectory); - dir = XP_OpenDir (m_pathName, xpMailSubdirectory); - if (dir) - XP_CloseDir (dir); - else - err = MK_COULD_NOT_CREATE_DIRECTORY; - } - if (eSUCCESS == err) - { - m_flags |= MSG_FOLDER_FLAG_DIRECTORY; - m_flags |= MSG_FOLDER_FLAG_ELIDED; - } - } - - // Recurse the tree to adopt srcFolder's children - err = mailFolder->PropagateAdopt (m_pathName, m_depth); - - // Add the folder to our tree in the right sorted position - if (eSUCCESS == err) - { - XP_ASSERT(m_subFolders->FindIndex(0, srcFolder) == -1); - *pOutPos = m_subFolders->Add (srcFolder); - } - - return err; -} - -MSG_FolderInfoMail::~MSG_FolderInfoMail() -{ - if (m_pathName) - MSG_Biff_Master::RemoveBiffFolder(m_pathName); - FREEIF(m_pathName); -} - - -FolderType MSG_FolderInfoMail::GetType() -{ - return FOLDER_MAIL; -} - - -char *MSG_FolderInfoMail::BuildUrl (MessageDB *db, MessageKey key) -{ - const char *urlScheme = "mailbox:"; - const char *urlSeparator = "?id="; - - char *url = NULL; - if (db) - { - DBMessageHdr *msgHdr = db->GetDBHdrForKey(key); - if (msgHdr) - { - XPStringObj messageId; - msgHdr->GetMessageId(messageId, db->GetDB()); - - char *escapedId = EscapeMessageId (messageId); - if (escapedId) { - char *messageNumStr = PR_smprintf("&number=%ld", key); - - url = (char*) XP_ALLOC (XP_STRLEN(m_pathName) + - XP_STRLEN(escapedId) + XP_STRLEN(urlScheme) + - XP_STRLEN(urlSeparator) + - XP_STRLEN(messageNumStr) + 1 /*null terminator*/); - - if (url) { - XP_STRCPY (url, urlScheme); - XP_STRCAT (url, m_pathName); - XP_STRCAT (url, urlSeparator); - XP_STRCAT (url, escapedId); - XP_STRCAT(url, messageNumStr); - } - XP_FREE(escapedId); - XP_FREE(messageNumStr); - } - delete msgHdr; - } - } else { - url = PR_smprintf("%s%s", urlScheme, m_pathName); - } - return url; -} - -MsgERR MSG_FolderInfoMail::ReadDBFolderInfo (XP_Bool force /* = FALSE */) -{ - MsgERR err = eSUCCESS; - - if (m_master->InitFolderFromCache (this)) - return err; - - if (force || !m_HaveReadNameFromDB) - { - DBFolderInfo *folderInfo; - MessageDB *db; - - err = GetDBFolderInfoAndDB (&folderInfo, &db); - if (eSUCCESS == err) - { - // Get the number of expunged byted - m_expungedBytes = folderInfo->m_expunged_bytes; - - // Get the real mailbox name. Use this flag to preserve the - // contract we have with the FE, which is that we're allowed - // to give out an unallocated pointer, and must never free it. - if (!m_HaveReadNameFromDB) - { - if (db) - { - XPStringObj userBoxName; - db->m_dbFolderInfo->GetMailboxName(userBoxName); - if (XP_STRLEN(userBoxName)) - SetName(userBoxName); - // else, this db is old or this folder was created from - // a mailbox file and no corresponding db file. - } - } - - // Tell the base class to go get all its stuff - err = MSG_FolderInfo::ReadDBFolderInfo (force); - - if (db) - db->Close(); - } - - // Set this so we don't keep asking if we didn't get it. - m_HaveReadNameFromDB = TRUE; - } - return err; -} - -#define kMailFolderCacheFormat "\t%s\t%ld" -#define kMailFolderCacheVersion 1 - -MsgERR MSG_FolderInfoMail::WriteToCache (XP_File f) -{ - XP_FilePrintf (f, "\t%d", kMailFolderCacheVersion); - XP_FilePrintf (f, kMailFolderCacheFormat, GetName(), (long) m_expungedBytes); - - return MSG_FolderInfo::WriteToCache (f); -} - -MsgERR MSG_FolderInfoMail::ReadFromCache (char *buf) -{ - MsgERR err = eSUCCESS; - int version; - int tokensRead = sscanf (buf, "\t%d", &version); - SkipCacheTokens (&buf, tokensRead); - - if (version == 1) - { - // Use natural long tmp to prevent 64-bit OSs from scribbling 64 bits into an int32 - long tmpExpungedBytes; - char *tmpName = (char*) XP_ALLOC(XP_STRLEN(buf)); - if (tmpName) - { - sscanf (buf, kMailFolderCacheFormat, tmpName, &tmpExpungedBytes); - char *name = buf + 1; // skip over tab; - char *secondTab = XP_STRCHR(name, '\t'); - if (secondTab) - { - *secondTab = '\0'; - SetName (name); // kinda hacky. maybe scan/printf wasn't such a good idea - *secondTab = '\t'; - } - SkipCacheTokens (&buf, 2); - m_expungedBytes = (int32) tmpExpungedBytes; - XP_FREE(tmpName); - } - else - err = eOUT_OF_MEMORY; - m_HaveReadNameFromDB = TRUE; - } - else - err = eUNKNOWN; - - err = MSG_FolderInfo::ReadFromCache (buf); - - return err; -} - -const char *MSG_FolderInfoMail::GetRelativePathName () -{ -#if 0 - // ###phil What we really want here is the profile directory, but - // there's no XP way to get that yet. jonm says he'll add a pref. - const char *userMailDir = m_master->GetPrefs()->GetFolderDirectory(); - return m_pathName + XP_STRLEN(userMailDir); -#else - return m_pathName; -#endif -} - -MsgERR MSG_FolderInfoMail::GetDBFolderInfoAndDB(DBFolderInfo **folderInfo, MessageDB **db) -{ - MailDB *mailDB; - - MsgERR openErr; - XP_Bool wasCreated; - XP_ASSERT(db && folderInfo); - if (!db || !folderInfo) - return eBAD_PARAMETER; - - if (GetType() == FOLDER_MAIL) - openErr = MailDB::Open (GetMailFolderInfo()->GetPathname(), FALSE, &mailDB, FALSE); - else - openErr = ImapMailDB::Open (GetMailFolderInfo()->GetPathname(), FALSE, &mailDB, - GetMaster(), &wasCreated); - - *db = mailDB; - if (openErr == eSUCCESS && *db) - *folderInfo = (*db)->GetDBFolderInfo(); - return openErr; -} - -XP_Bool MSG_FolderInfoMail::UpdateSummaryTotals() -{ - MsgERR err = ReadDBFolderInfo (TRUE /*force read*/); - - // If we asked, but didn't get any, stop asking - if (m_numUnreadMessages == -1) - m_numUnreadMessages = -2; - - return err == eSUCCESS; -} - - -MSG_FolderInfoMail* MSG_FolderInfoMail::FindPathname(const char* p) -{ - if (XP_FILENAMECMP(m_pathName, p) == 0) - return this; - for (int i=0 ; i < m_subFolders->GetSize() ; i++) { - MSG_FolderInfoMail* sub = (MSG_FolderInfoMail*) m_subFolders->GetAt(i); - FolderType folderType = sub->GetType(); - XP_ASSERT((folderType == FOLDER_MAIL) || - (folderType == FOLDER_IMAPMAIL)); // descends from MSG_FolderInfoMail - MSG_FolderInfoMail* result = sub->FindPathname(p); - if (result) - return result; - } - return NULL; -} - -XP_Bool MSG_FolderInfoMail::IsDeletable () -{ - // These are specified in the "Mail/News Windows" UI spec - if ((m_flags & MSG_FOLDER_FLAG_TRASH) && !DeleteIsMoveToTrash()) - return TRUE; // allow delete of trash if we don't use trash - if (m_depth == 1) - return FALSE; - if (m_flags & MSG_FOLDER_FLAG_INBOX || - m_flags & MSG_FOLDER_FLAG_DRAFTS || - m_flags & MSG_FOLDER_FLAG_TRASH || - m_flags & MSG_FOLDER_FLAG_TEMPLATES) - return FALSE; - return TRUE; -} - -XP_Bool MSG_FolderInfoMail::RequiresCleanup() -{ - if (m_expungedBytes > 0) - { - int32 purgeThreshhold = m_master->GetPrefs()->GetPurgeThreshhold(); - XP_Bool purgePrompt = m_master->GetPrefs()->GetPurgeThreshholdEnabled();; - return (purgePrompt && m_expungedBytes / 1000L > purgeThreshhold); - } - return FALSE; -} - - -int32 MSG_FolderInfoMail::GetSizeOnDisk () -{ - int32 ret = 0; - XP_StatStruct st; - - if (!XP_Stat(GetPathname(), &st, xpMailFolder)) - ret += st.st_size; - - if (!XP_Stat(GetPathname(), &st, xpMailFolderSummary)) - ret += st.st_size; - - return ret; -} - -void MSG_FolderInfoMail::UpdatePendingCounts(MSG_FolderInfo * dstFolder, - IDArray *srcArray, - XP_Bool countUnread, XP_Bool missingAreRead) -{ - if (dstFolder->GetType() == FOLDER_IMAPMAIL) - { - XP_Bool wasCreated=FALSE; - - dstFolder->ChangeNumPendingTotalMessages(srcArray->GetSize()); - - if (countUnread) - { - MailDB *affectedDB = NULL; - ImapMailDB::Open(GetPathname(), FALSE, &affectedDB, GetMaster(), &wasCreated); - if (affectedDB) - { - // count the moves that were unread - int numUnread = 0; - for (int keyIndex=0; keyIndex < srcArray->GetSize(); keyIndex++) - { - // if the key is not there, then assume what the caller tells us to. - XP_Bool isRead = missingAreRead; - affectedDB->IsRead((*srcArray)[keyIndex], &isRead); - if (!isRead) - numUnread++; - } - - if (numUnread) - dstFolder->ChangeNumPendingUnread(numUnread); - affectedDB->Close(); - } - } - dstFolder->SummaryChanged(); - } -} - - -MSG_FolderInfoNews::MSG_FolderInfoNews(char *groupName, msg_NewsArtSet* set, - XP_Bool subscribed, MSG_NewsHost* host, - uint8 depth) -: MSG_FolderInfo(groupName, depth) -{ - m_flags |= MSG_FOLDER_FLAG_NEWSGROUP; - m_host = host; - m_set = set; - m_subscribed = subscribed; - m_dbfilename = NULL; - m_XPDBFileName = NULL; - m_XPRuleFileName = NULL; - m_prettyName = NULL; - m_master = m_host->GetMaster(); - m_listNewsGroupState = NULL; - if (m_subscribed) { -#ifdef XP_MAC - // Should be done on all platforms: macintosh-only for beta-paranoid reasons. - m_flags |= MSG_FOLDER_FLAG_SUBSCRIBED; -#endif - if (m_host->IsCategoryContainer(groupName)) - m_flags |= - MSG_FOLDER_FLAG_CAT_CONTAINER | MSG_FOLDER_FLAG_CATEGORY; - if (m_host->IsProfile(groupName)) - m_flags |= MSG_FOLDER_FLAG_PROFILE_GROUP; - } - - m_wantNewTotals = TRUE; - m_purgeStatus = PurgeMaybeNeeded; - m_username = NULL; - m_password = NULL; - m_nntpHighwater = 0; - m_nntpTotalArticles = -1; - m_totalInDB = 0; - m_unreadInDB = 0; - m_autoSubscribed = FALSE; - m_isCachable = FALSE; -} - -MSG_FolderInfoNews::~MSG_FolderInfoNews() -{ - FREEIF(m_dbfilename); - FREEIF(m_XPDBFileName); - delete [] m_prettyName; - m_prettyName = NULL; - FREEIF(m_username); - FREEIF(m_password); - delete m_set; -} - - -char *MSG_FolderInfoNews::BuildUrl (MessageDB * db, MessageKey key) -{ - char* url = NULL; - const char* groupname = GetNewsgroupName(); - const char* urlbase = GetHost()->GetURLBase(); - - if (db == NULL) { - - if (key == MSG_MESSAGEKEYNONE) - url = PR_smprintf("%s/%s", urlbase, groupname); - } - else - { - DBMessageHdr *header = db->GetDBHdrForKey (key); - - if (header != NULL) - { - XPStringObj messageId; - header->GetMessageId(messageId, db->GetDB()); - char *escapedId = EscapeMessageId (messageId); - if (escapedId) - { - url = PR_smprintf("%s/%s", urlbase, escapedId); - XP_FREE(escapedId); - } - delete header; - } - } - return url; -} - -/* Compute a value for the "?newshost=" parameter. This gets passed in - with all of the mailto's, even the ones that don't have to do with - posting, because the user might decide later to type in some newsgroups, - and we need to know which host to send them to. Perhaps the UI should - have a way of selecting the host - say you wanted to forward a message - frome one news server to another. But it doesn't now. - The caller must free the returned pointer. -*/ -char *MSG_FolderInfoNews::GetHostUrl() -{ - const char *hostName; - HG26477 - - hostName = GetHost()->getNameAndPort(); - MSG_NewsHost *newsHost = GetHost(); - if (newsHost) - { - HG78365 - if (hostName != NULL) - { - int32 length = XP_STRLEN(hostName) + 20; - char *host = (char *) XP_ALLOC (length); - if (!host) - return 0; /* #### MK_OUT_OF_MEMORY */ - XP_STRCPY (host, hostName); - HG89732 - return host; - } - } - return NULL; -} - -FolderType MSG_FolderInfoNews::GetType() { - return FOLDER_NEWSGROUP; -} - -// more virtual inlines for the compiler-challenged platforms -XP_Bool MSG_FolderInfoNews::IsMail () { return FALSE; } -XP_Bool MSG_FolderInfoNews::IsNews () { return TRUE; } -XP_Bool MSG_FolderInfoNews::IsDeletable () { return TRUE; } -MSG_FolderInfoNews *MSG_FolderInfoNews::GetNewsFolderInfo() {return this;} - -int32 MSG_FolderInfoNews::GetTotalMessagesInDB() const -{ - return m_totalInDB; // override this, since m_numTotalMessages for news is server-based -} - - -MsgERR MSG_FolderInfoNews::CreateSubfolder (const char *, MSG_FolderInfo **, int32 *) -{ - //PHP maybe we can use this to create categories - return 0; -} - -MsgERR MSG_FolderInfoNews::Delete () -{ - return 0; -} - -MsgERR MSG_FolderInfoNews::Rename (const char * /*newName*/) -{ - return MK_UNABLE_TO_OPEN_FILE; -} - -MsgERR MSG_FolderInfoNews::Adopt (MSG_FolderInfo *src, int32 *newIdx) -{ - MsgERR err = MK_MSG_CANT_MOVE_FOLDER; - - if (0 == m_host->ReorderGroup (src->GetNewsFolderInfo(), this, newIdx)) - err = eSUCCESS; - - return err; -} - - -msg_NewsArtSet* -MSG_FolderInfoNews::GetSet() -{ - return m_set; -} - -XP_Bool -MSG_FolderInfoNews::IsSubscribed() -{ - return m_subscribed; -} - -XP_Bool -MSG_FolderInfoNews::IsCategory() -{ - return m_subscribed && m_host->IsCategory(GetNewsgroupName()); - // ###tw Probably should keep this info cached. -} - -XP_Bool MSG_FolderInfoNews::CanBeInFolderPane () -{ - return m_subscribed; -} - -const char *MSG_FolderInfoNews::GetRelativePathName () -{ - // xp db file name ought to be unique enough - return GetXPDBFileName(); -} - -const char* -MSG_FolderInfoNews::GetDBFileName() -{ - if (!m_dbfilename) { - const char* dbFileName = GetXPDBFileName(); - if (!dbFileName) return NULL; - m_dbfilename = WH_FileName(dbFileName, xpXoverCache); - } - return m_dbfilename; -} - -char * -MSG_FolderInfoNews::GetUniqueFileName(const char *extension) -{ - char* tmp; - const char* newsgroupName = GetNewsgroupName(); - const char* dbName = m_host->GetDBDirName(); - if (XP_STRLEN(newsgroupName) > MAX_FILE_LENGTH_WITHOUT_EXTENSION) - { - // Use a hex version of the unique id (forcing 8.3 format). - long uniqueID = (long)m_host->GetUniqueID(newsgroupName); - tmp = PR_smprintf("%s/08%lX.%s", dbName, uniqueID, extension); - } - else - tmp = PR_smprintf("%s/%s.%s", dbName, newsgroupName, extension); - if (!tmp) - return NULL; - return tmp; -#undef MAX_FILE_LENGTH_WITHOUT_EXTENSION -} - -const char * -MSG_FolderInfoNews::GetXPDBFileName() -{ - if (!m_XPDBFileName) - { - m_XPDBFileName = GetUniqueFileName("snm"); - } - return m_XPDBFileName; -} - -const char * -MSG_FolderInfoNews::GetXPRuleFileName() -{ - if (!m_XPRuleFileName) - { - m_XPRuleFileName = GetUniqueFileName("dat"); - } - return m_XPRuleFileName; -} - -const char *MSG_FolderInfoNews::GetPrettyName() -{ - if (!m_prettyName) { - m_prettyName = m_host->GetPrettyName(GetNewsgroupName()); - } - return m_prettyName; -} - -void MSG_FolderInfoNews::ClearPrettyName() -{ - if (m_prettyName) - { - delete [] m_prettyName; - m_prettyName = NULL; - } -} - -NewsGroupDB *MSG_FolderInfoNews::OpenNewsDB(XP_Bool deleteInvalidDB /* = FALSE */, MsgERR *pErr /* = NULL */) -{ - NewsGroupDB *newsDB = NULL; - char *url = BuildUrl(NULL, MSG_MESSAGEKEYNONE); - MsgERR err = eOUT_OF_MEMORY; - - if (url != NULL) - { - if ((err = NewsGroupDB::Open(url, m_host->GetMaster(), &newsDB)) != eSUCCESS) - newsDB = NULL; - if (err != eSUCCESS && deleteInvalidDB) - { - const char *dbFileName = GetXPDBFileName(); - - XP_Trace("blowing away old database file\n"); - if (dbFileName != NULL) - { - XP_FileRemove(dbFileName, xpXoverCache); - err = NewsGroupDB::Open(url, m_host->GetMaster(), &newsDB); - } - } - HG87535 - XP_FREE(url); - } - if (pErr) - *pErr = err; - return newsDB; -} - -void MSG_FolderInfoNews::MarkAllRead(MWContext *context, XP_Bool deep) -{ - MSG_FolderInfo::MarkAllRead(context, deep); - if (m_set && 1 <= m_nntpHighwater) - { - m_set->AddRange(1, m_nntpHighwater); - UpdateSummaryTotals(); - GetMaster()->BroadcastFolderChanged(this); - } -} - -MsgERR MSG_FolderInfoNews::GetDBFolderInfoAndDB(DBFolderInfo **folderInfo, MessageDB **db) -{ - MsgERR err; - - XP_ASSERT(db && folderInfo); - if (!db || !folderInfo) - return eBAD_PARAMETER; - - if ((*db = OpenNewsDB(FALSE, &err)) != NULL) - *folderInfo = (*db) ->GetDBFolderInfo(); - - return err; -} - - -MsgERR MSG_FolderInfoNews::ReadFromCache (char *buf) -{ - MsgERR err = MSG_FolderInfo::ReadFromCache (buf); - if (eSUCCESS == err) - m_isCachable = TRUE; - return err; -} - - -XP_Bool MSG_FolderInfoNews::UpdateSummaryTotals() -{ - MessageDB *newsDB; - DBFolderInfo *folderInfo; - XP_Bool gotTotals = FALSE; - - MsgERR err = GetDBFolderInfoAndDB(&folderInfo, &newsDB); - if (err == eSUCCESS && newsDB) - { - if (folderInfo != NULL) - { - m_isCachable = TRUE; - m_totalInDB = m_numTotalMessages = folderInfo->GetNumMessages(); - m_unreadInDB = folderInfo->GetNumNewMessages(); - m_csid = folderInfo->GetCSID(); - if (m_nntpHighwater) - { - m_numUnreadMessages = m_set->CountMissingInRange(1, m_nntpHighwater); - m_numTotalMessages = m_nntpTotalArticles; - // can't be more unread than on the server (there can, but it's a bit weird) - if (m_numUnreadMessages > m_numTotalMessages) - { - m_numUnreadMessages = m_numTotalMessages; - int32 deltaInDB = MIN(m_totalInDB - m_unreadInDB, m_numUnreadMessages); - // if we know there are read messages in the db, subtract that from the unread total - if (deltaInDB > 0) - m_numUnreadMessages -= deltaInDB; - } - } - else - m_numUnreadMessages = folderInfo->GetNumNewMessages(); - XP_ASSERT(m_numUnreadMessages >= 0); - gotTotals = TRUE; - if (m_purgeStatus == PurgeMaybeNeeded) - m_purgeStatus = newsDB->GetNewsDB()->PurgeNeeded(GetMaster()->GetPurgeHdrInfo(), GetMaster()->GetPurgeArtInfo()) - ? PurgeNeeded : PurgeNotNeeded; - } - newsDB->Close(); - } - if (!gotTotals) { - // Well, we tried. Set to -2 (meaning don't bother trying again), - // unless we already got a guess from somewhere else, in which case - // we'll keep that guess. - if (m_numUnreadMessages < 0) { - m_numUnreadMessages = -2; // well, we tried... - } - } - - return gotTotals; -} - - -void -MSG_FolderInfoNews::UpdateSummaryFromNNTPInfo(int32 oldest, - int32 youngest, - int32 total) -{ - /* First, mark all of the articles now known to be expired as read. */ - if (oldest > 1) m_set->AddRange(1, oldest - 1); - /* Now search the newsrc line and figure out how many of these - messages are marked as unread. */ - // make sure youngest is a least 1. MSNews seems to return a youngest of 0. - if (youngest == 0) - youngest = 1; - int32 unread = m_set->CountMissingInRange(oldest, youngest); - XP_ASSERT(unread >= 0); - if (unread < 0) return; - if (unread > total) { - /* This can happen when the newsrc file shows more unread than exist - in the group (total is not necessarily `end - start'.) */ - unread = total; - int32 deltaInDB = m_totalInDB - m_unreadInDB; - // if we know there are read messages in the db, subtract that from the unread total - if (deltaInDB > 0) - unread -= deltaInDB; - } - m_wantNewTotals = FALSE; - m_numUnreadMessages = unread; - m_numTotalMessages = total; - m_nntpHighwater = youngest; - m_master->BroadcastFolderChanged(this); - m_nntpTotalArticles = total; -} - -MsgERR MSG_FolderInfoNews::Subscribe(XP_Bool bSubscribe, MSG_Pane *invokingPane /* = NULL */) -{ - if (!bSubscribe) - { - // Try to delete the database to free up disk space - if ((!m_XPDBFileName || 0 != XP_FileRemove (m_XPDBFileName, xpXoverCache)) && invokingPane) - { - const char *prompt = XP_GetString (MK_MSG_CANT_DELETE_NEWS_DB); - char *message = PR_smprintf (prompt, GetName()); - if (message) - { - XP_Bool continueUnsubscribe = FE_Confirm (invokingPane->GetContext(), message); - XP_FREE(message); - if (!continueUnsubscribe) - return eUNKNOWN; //don't continue unsubscribing - } - } - } - - if (m_subscribed != bSubscribe) - { - // Remember the new setting and rewrite the news rc file - m_subscribed = bSubscribe; -#ifdef XP_MAC - // Should be done on all platforms: macintosh-only for beta-paranoid reasons. - m_flags ^= MSG_FOLDER_FLAG_SUBSCRIBED; -#endif - GetHost()->MarkDirty(); - } - return eSUCCESS; //continue unsubscribing -} - - -typedef struct tIMAPUploadInfo -{ - MSG_IMAPFolderInfoMail *m_destFolder; - MSG_FolderInfoMail *m_srcFolder; - MSG_Pane *m_sourcePane; - MailDB *m_sourceDB; - IDArray *m_idArrayForTempDB; - IDArray *m_sourceIDArray; - XP_Bool m_isMove; -} IMAPUploadInfo; - -void MSG_IMAPFolderInfoMail::FinishUploadFromFile(struct MessageCopyInfo*, int status) -{ - if (m_uploadInfo) - { - if (m_uploadInfo->m_sourceDB) - m_uploadInfo->m_sourceDB->Close(); - XP_FileRemove(m_uploadInfo->m_srcFolder->GetPathname(), xpMailFolder); - XP_FileRemove(m_uploadInfo->m_srcFolder->GetPathname(), xpMailFolderSummary); - MSG_FolderInfoMail *localTree = GetMaster()->GetLocalMailFolderTree(); - localTree->RemoveSubFolder(m_uploadInfo->m_srcFolder); - // delete the original messages - if (m_uploadInfo->m_isMove && status == 0) - { - MSG_IMAPFolderInfoMail *imapFolder = (m_uploadInfo->m_sourcePane->GetFolder()) - ? m_uploadInfo->m_sourcePane->GetFolder()->GetIMAPFolderInfoMail() : 0; - - if (imapFolder) - imapFolder->DeleteSpecifiedMessages(m_uploadInfo->m_sourcePane, *m_uploadInfo->m_sourceIDArray); - } - // unfortunately, PostMessageCopyExit hasn't been called yet - this leaks the folder info - // which isn't acceptable - need to run this after we've called CleanupCopyMessagesInto - // delete m_uploadInfo->m_srcFolder; - delete m_uploadInfo->m_sourceIDArray; - delete m_uploadInfo; - m_uploadInfo = NULL; - } -} - -void MSG_IMAPFolderInfoMail::UploadMessagesFromFile(MSG_FolderInfoMail *srcFolder, MSG_Pane *sourcePane, MailDB *mailDB) -{ - m_uploadInfo->m_idArrayForTempDB = new IDArray; - MWContext *sourceContext = sourcePane->GetContext(); - - // send a matching ending update - because of double copy nature of download+upload - sourcePane->EndingUpdate(MSG_NotifyNone, 0, 0); - - MSG_FinishCopyingMessages(sourceContext); - - // search as view modification..inform search pane that we are done with this view - // mscott: we have to do this here because when we copy news aticles to an IMAP folder, - // we need to tell the search pane to close its DB view when the operation is done. - // This calback happens in ::CleanupMessageCopy for everyone else except for this case!!! - // Why here? By the time we reach ::CleanupMessageCopy, the src folder is the temp file - // the news articles were copied to and not the news db view the search pane is keeping open....*sigh* - if (sourcePane && sourcePane->GetPaneType() == MSG_SEARCHPANE && sourceContext && sourceContext->msgCopyInfo) - ((MSG_SearchPane *) sourcePane)->CloseView(sourceContext->msgCopyInfo->srcFolder); - - // clear out the copyinfo from the news source copy - FREEIF(sourceContext->msgCopyInfo); - - if (mailDB) - { - mailDB->ListAllIds(m_uploadInfo->m_idArrayForTempDB); - if (m_uploadInfo->m_idArrayForTempDB->GetSize() > 0) - { - srcFolder->StartAsyncCopyMessagesInto (this, - sourcePane, - mailDB, - m_uploadInfo->m_idArrayForTempDB, - m_uploadInfo->m_idArrayForTempDB->GetSize(), - sourcePane->GetContext(), - NULL, // do not run in url queue - FALSE, - MSG_MESSAGEKEYNONE); - } - else - { - XP_ASSERT(FALSE); - FinishUploadFromFile(NULL, -1); - } - // we need to know when this is done so we can delete the tmp folder and folder info, and close the db. - } -} - -/* static */ int MSG_IMAPFolderInfoMail::UploadMsgsInFolder(void *uploadInfo, int status) -{ - IMAPUploadInfo *imapUploadInfo = (IMAPUploadInfo *) uploadInfo; - - imapUploadInfo->m_destFolder->m_uploadInfo = imapUploadInfo; - if (status >= 0) - { - imapUploadInfo->m_destFolder->UploadMessagesFromFile(imapUploadInfo->m_srcFolder, imapUploadInfo->m_sourcePane, imapUploadInfo->m_sourceDB); - } - else - { - MSG_FinishCopyingMessages(imapUploadInfo->m_sourcePane->GetContext()); - imapUploadInfo->m_destFolder->FinishUploadFromFile(imapUploadInfo->m_sourcePane->GetContext()->msgCopyInfo, status); - } - return 0; -} - -MsgERR MSG_FolderInfoNews::BeginCopyingMessages (MSG_FolderInfo *dstFolder, - MessageDB * /* sourceDB */, - IDArray *srcArray, - MSG_UrlQueue * /*urlQueue will use for news -> imap */, - int32 srcCount, - MessageCopyInfo *copyInfo) -{ - FolderType dstFolderType = dstFolder->GetType(); - NewsGroupDB *newsDB = OpenNewsDB(); - - msg_move_state *state = &copyInfo->moveState; - state->sourceNewsDB = newsDB; - - if (newsDB != NULL) - { - IDArray keysToSave; - for (int32 i = 0; i < srcCount; i++) - keysToSave.Add (srcArray->GetAt(i)); - - if (dstFolderType == FOLDER_MAIL) - { - const char *fileName = ((MSG_FolderInfoMail*) dstFolder)->GetPathname(); - - return SaveMessages (&keysToSave, fileName, state->sourcePane, newsDB); - } - else if (dstFolderType == FOLDER_IMAPMAIL) - { - return DownloadToTempFileAndUpload(copyInfo, keysToSave, dstFolder, newsDB); - } - } - return 0; -} - -int MSG_FolderInfoNews::FinishCopyingMessages(MWContext * /*context*/, - MSG_FolderInfo * /* srcFolder */, - MSG_FolderInfo * dstFolder, - MessageDB * /*sourceDB*/, - IDArray * /*srcArray*/, - int32 /*srcCount*/, - msg_move_state * state) -{ - if (dstFolder && dstFolder->TestSemaphore(this)) - return MK_WAITING_FOR_CONNECTION; - else - { - if (state->sourceNewsDB) - { - state->sourceNewsDB->Close(); - state->sourceNewsDB = NULL; - } - return MK_CONNECTED; - } -} - -int MSG_FolderInfo::DownloadToTempFileAndUpload(MessageCopyInfo *copyInfo, IDArray &keysToSave, MSG_FolderInfo *dstFolder, MessageDB *sourceDB) -{ - XP_FileType tmptype; - msg_move_state *state = &copyInfo->moveState; - MSG_FolderInfoMail *dstMailFolder = dstFolder->GetMailFolderInfo(); - - char *fileName = FE_GetTempFileFor(state->sourcePane->GetContext(), dstMailFolder->GetPathname(), xpMailFolder, - &tmptype); - if (!fileName) - return MK_OUT_OF_MEMORY; - - // this is unfortunate, but we'd like to have the tmp folder info in the folder tree so - // that downloading the news articles will update the database. We're going to have - // to remove it when we're done. This scheme also has the disadvantage of putting - // all the messages in the same tmp file, and then uploading one by one, but it's - // the easiest way to hook the existing code. If we did it one message at a time, - // we wouldn't need the database (or would we?). - // We could pass a dest folder to saveMessages, null for the save as case. - // Then, we wouldn't need to put it in the folder tree... - - MSG_FolderInfoMail *localTree = GetMaster()->GetLocalMailFolderTree(); - MSG_FolderInfoMail *tmpFolderInfo = new MSG_FolderInfoMail(XP_STRDUP(fileName), m_master, 2, 0); - - FREEIF(fileName); - if (!tmpFolderInfo) - return MK_OUT_OF_MEMORY; - - localTree->GetSubFolders()->Add(tmpFolderInfo); - - IMAPUploadInfo *uploadInfo = new IMAPUploadInfo; - - if (!uploadInfo) - return MK_OUT_OF_MEMORY; - - // replace the dstFolder in the copy info to be the temp file to clean up locks correctly - copyInfo->dstFolder = tmpFolderInfo; - - uploadInfo->m_destFolder = dstMailFolder->GetIMAPFolderInfoMail(); - uploadInfo->m_sourcePane = state->sourcePane; - uploadInfo->m_srcFolder = tmpFolderInfo; - uploadInfo->m_isMove = copyInfo->moveState.ismove; - uploadInfo->m_sourceIDArray = new IDArray; - uploadInfo->m_sourceIDArray->CopyArray(keysToSave); // copy source id array. - XP_File outFp = XP_FileOpen (tmpFolderInfo->GetPathname(), xpMailFolder, XP_FILE_WRITE_BIN); - if (outFp) - XP_FileClose(outFp); - if (copyInfo->moveState.destDB) - copyInfo->moveState.destDB->Close(); - MsgERR err = MailDB::Open(tmpFolderInfo->GetPathname(), TRUE, &uploadInfo->m_sourceDB, FALSE); - if ((err == eSUCCESS || err == eNoSummaryFile) && uploadInfo->m_sourceDB) - { - copyInfo->moveState.destDB = uploadInfo->m_sourceDB; - uploadInfo->m_sourceDB->AddUseCount(); - state->sourcePane->GetContext()->currentIMAPfolder = this->GetIMAPFolderInfoMail(); - MSG_StartImapMessageToOfflineFolderDownload(state->sourcePane->GetContext()); - // UploadMsgsInFolder needs to know the dstFolder, the source fileName, and the sourcePane, to run the context in. - return SaveMessages(&keysToSave, tmpFolderInfo->GetPathname(), state->sourcePane, sourceDB, MSG_IMAPFolderInfoMail::UploadMsgsInFolder, uploadInfo); - } - else - return MK_MSG_TMP_FOLDER_UNWRITABLE; -} - -XP_Bool MSG_FolderInfoNews::RequiresCleanup() -{ - return (m_purgeStatus == PurgeNeeded); -} - -void MSG_FolderInfoNews::ClearRequiresCleanup() -{ - m_purgeStatus = PurgeNotNeeded; -} - -void MSG_FolderInfoNews::SetNewsgroupUsername(const char *username) -{ - if (username) - StrAllocCopy (m_username, username); - else - FREEIF(m_username); -} - - -const char * MSG_FolderInfoNews::GetNewsgroupUsername(void) -{ - return m_username; -} - - -void MSG_FolderInfoNews::SetNewsgroupPassword(const char *password) -{ - if (password) - StrAllocCopy(m_password, password); - else - FREEIF(m_password); - RememberPassword(password); // save it in the db for offline use. -} - - -const char * MSG_FolderInfoNews::GetNewsgroupPassword(void) -{ - return m_password; -} - - -XP_Bool MSG_FolderInfoNews::KnowsSearchNntpExtension() -{ - // The host must know the SEARCH extension AND the group must be in the LIST SEARCHES response - return m_host->QueryExtension("SEARCH") && m_host->QuerySearchableGroup (GetName()); -} - - -XP_Bool MSG_FolderInfoNews::AllowsPosting () -{ - // Don't allow posting to virtual newsgroups - if (m_flags & MSG_FOLDER_FLAG_PROFILE_GROUP) - return FALSE; - - // The news host can tell us in the connection banner if it doesn't - // allow posting. Honor that setting here. - if (!m_host || !m_host->GetPostingAllowed()) - return FALSE; - - return TRUE; -} - - -int32 MSG_FolderInfoNews::GetSizeOnDisk () -{ - int32 ret = 0; - XP_StatStruct st; - - if (!XP_Stat(GetXPDBFileName(), &st, xpXoverCache)) - ret += st.st_size; - - return ret; -} - - -FolderType MSG_FolderInfoCategoryContainer::GetType() -{ - return FOLDER_CATEGORYCONTAINER; -} - -MSG_FolderInfoCategoryContainer::MSG_FolderInfoCategoryContainer(char *groupName, msg_NewsArtSet* set, - XP_Bool subscribed, MSG_NewsHost* host, uint8 depth) - : MSG_FolderInfoNews(groupName, set, subscribed, host, depth) -{ -} - -MSG_FolderInfoCategoryContainer::~MSG_FolderInfoCategoryContainer() -{ -} - -MSG_FolderInfoNews * -MSG_FolderInfoCategoryContainer::BuildCategoryTree(MSG_FolderInfoNews *parent, - const char *groupName, - msg_GroupRecord* group, - uint8 depth, - MSG_Master *master) -{ - m_host->AssureAllDescendentsLoaded(group); - - msg_GroupRecord* child; - int32 result = 0; - - // slip in a new parent which represents the root category. - for (child = group->GetChildren() ; child ; child = child->GetSibling()) { - MSG_FolderInfoNews *info = NULL; - char *catName = PR_smprintf("%s.%s", groupName, child->GetPartName()); - if (!catName) - break; - - if (child->IsGroup()) { - info = m_host->FindGroup(catName); - // this relies on auto-subscribe of categories! - if (info && info->IsSubscribed()) { - // set the level correctly for category pane. - info->SetDepth(depth + 1); - info->SetFlag(MSG_FOLDER_FLAG_CATEGORY); - - if (child->GetChildren()) - info->SetFlag(MSG_FOLDER_FLAG_DIRECTORY); - - if (!parent->IsParentOf(info, FALSE)) - parent->GetSubFolders()->Add(info); -#ifdef DEBUG_bienvenu1 - XP_Trace("Adding %s at depth %d\n", catName, depth + 1); -#endif -// parent = info; - result++; - } - } - BuildCategoryTree(info ? info : parent, catName, child, - depth + ((info) ? 1 : 0), master); - - XP_FREE(catName); - } - return parent; -} - -// while it would be nice to put this in the right place, rebuilding the category -// tree is really easy. -MSG_FolderInfoNews * -MSG_FolderInfoCategoryContainer::AddToCategoryTree(MSG_FolderInfoNews* /*parent*/, - const char* /*groupName*/, - msg_GroupRecord* group, - MSG_Master *master) -{ - MSG_FolderInfoNews *retFolder = NULL; - msg_GroupRecord *categoryParent = group->GetParent(); - if (categoryParent) - { - char *categoryParentName = categoryParent->GetFullName(); - if (categoryParentName) - { - MSG_FolderInfoNews *parent = m_host->FindGroup(categoryParentName); - if (parent) - { - // make sure we're using the root category... - parent = parent->GetNewsFolderInfo(); - parent->GetSubFolders()->RemoveAll(); - retFolder = BuildCategoryTree(parent, categoryParentName, categoryParent, parent->GetDepth(), master); - } - delete [] categoryParentName; - } - } - return retFolder; -} - -MSG_FolderInfoCategoryContainer *MSG_FolderInfoNews::CloneIntoCategoryContainer() -{ - msg_NewsArtSet *newSet = m_set->Create(m_set->Output(), m_host); - MSG_FolderInfoCategoryContainer *retFolder = - new MSG_FolderInfoCategoryContainer(m_name, newSet, m_subscribed, m_host, m_depth); - if (retFolder) - { - retFolder->GetSubFolders()->Add(this); - } - // due to load time "optimization" for unsubscribed category containers, we may not know this! - SetFlag(MSG_FOLDER_FLAG_CATEGORY); - return retFolder; -} - -MSG_FolderInfoNews *MSG_FolderInfoCategoryContainer::CloneIntoNewsFolder() -{ - msg_NewsArtSet *newSet = m_set->Create(m_set->Output(), m_host); - MSG_FolderInfoNews *retFolder = new MSG_FolderInfoNews(m_name, newSet, m_subscribed, m_host, m_depth); - if (retFolder) - retFolder->GetSubFolders()->InsertAt(0, m_subFolders); - - return retFolder; -} - -// Well, this is a long shot, but lets try always returning the root -// category when this gets called. -MSG_FolderInfoNews *MSG_FolderInfoCategoryContainer::GetNewsFolderInfo() -{ - return GetRootCategory(); -} - -MSG_FolderInfoNews *MSG_FolderInfoCategoryContainer::GetRootCategory() -{ - return this; -} - - -MSG_FolderInfoContainer::MSG_FolderInfoContainer(const char* name, uint8 depth, XPCompareFunc* func) - : MSG_FolderInfo(name, depth, func) -{ - m_flags |= MSG_FOLDER_FLAG_DIRECTORY; - m_numUnreadMessages = 0; -} - -MSG_FolderInfoContainer::~MSG_FolderInfoContainer() -{ -} - -FolderType -MSG_FolderInfoContainer::GetType() -{ - return FOLDER_CONTAINERONLY; -} - -char* -MSG_FolderInfoContainer::BuildUrl(MessageDB*, MessageKey) -{ - return NULL; -} - -MsgERR -MSG_FolderInfoContainer::BeginCopyingMessages(MSG_FolderInfo *, - MessageDB *, - IDArray *, - MSG_UrlQueue *, - int32, - MessageCopyInfo *) -{ - XP_ASSERT(0); - return eUNKNOWN; -} - - -int -MSG_FolderInfoContainer::FinishCopyingMessages(MWContext *, - MSG_FolderInfo *, - MSG_FolderInfo *, - MessageDB * /*sourceDB*/, - IDArray *, - int32, - msg_move_state *) -{ - XP_ASSERT(0); - return -1; -} - -MsgERR MSG_FolderInfoContainer::SaveMessages(IDArray*, const char *, - MSG_Pane *, MessageDB *, - int (*)(void *, int status) , void *) -{ - XP_ASSERT(0); - return eUNKNOWN; -} - -MsgERR -MSG_FolderInfoContainer::CreateSubfolder(const char *, MSG_FolderInfo**, int32 *) -{ - XP_ASSERT(0); - return eUNKNOWN; -} - - -MsgERR -MSG_FolderInfoContainer::Delete() -{ - XP_ASSERT(0); - return eUNKNOWN; -} - - -MsgERR -MSG_FolderInfoContainer::Adopt(MSG_FolderInfo *, int32*) -{ - return MK_MSG_CANT_MOVE_FOLDER; -} - -MSG_FolderInfoMail* MSG_FolderInfoContainer::FindMailPathname(const char* p) -{ - for (int i=0 ; i < m_subFolders->GetSize() ; i++) { - MSG_FolderInfoMail* sub = (MSG_FolderInfoMail*) m_subFolders->GetAt(i); - FolderType folderType = sub->GetType(); - XP_ASSERT((folderType == FOLDER_MAIL) || - (folderType == FOLDER_IMAPMAIL)); // descends from MSG_FolderInfoMail - MSG_FolderInfoMail* result = sub->FindPathname(p); - if (result) - return result; - } - return NULL; -} - -MSG_NewsFolderInfoContainer::MSG_NewsFolderInfoContainer(MSG_NewsHost* host, - uint8 depth) - : MSG_FolderInfoContainer(host->getFullUIName(), depth, NULL) -{ - m_host = host; - m_prettyName = NULL; -} - -MSG_NewsFolderInfoContainer::~MSG_NewsFolderInfoContainer() -{ - FREEIF(m_prettyName); -} - -XP_Bool -MSG_NewsFolderInfoContainer::IsDeletable() -{ - return TRUE; -} - - -MsgERR -MSG_NewsFolderInfoContainer::Delete() -{ - return 0; -} - - -XP_Bool MSG_NewsFolderInfoContainer::KnowsSearchNntpExtension() -{ - return m_host->QueryExtension ("SEARCH"); -} - -XP_Bool MSG_NewsFolderInfoContainer::AllowsPosting() -{ - // The news host can tell us in the connection banner if it doesn't - // allow posting. Honor that setting here. - if (!m_host || !m_host->GetPostingAllowed()) - return FALSE; - - return TRUE; -} - - -int MSG_NewsFolderInfoContainer::GetNumSubFoldersToDisplay() const -{ - // Since unsubscribed newsgroups have folderInfos in the tree, the news - // host will appear to have children (and the FEs draw the twisty) - // even when there are no subscribed groups. So consider whether the - // groups are subscribed when counting up children for display purposes - - int numTotal, numSubscribed; - numTotal = numSubscribed = GetNumSubFolders(); - - for (int i = 0; i < numTotal; i++) - { - MSG_FolderInfoNews *newsFolder = GetSubFolder(i)->GetNewsFolderInfo(); - XP_ASSERT(newsFolder); - if (newsFolder && !newsFolder->IsSubscribed()) - numSubscribed--; - } - - return numSubscribed; -} - -/* --------------------------------------------------------------- -MSG_FolderIterator --------------------------------------------------------------- - */ - -// Construct a new folder iterator. -// ### mw What if someone else messes with this folder tree -// while we're iterating over it? -MSG_FolderIterator::MSG_FolderIterator(MSG_FolderInfo *parent) - : m_masterParent(parent), m_currentParent(parent), m_currentIndex(-1) -{ - Init(); -} - -MSG_FolderIterator::~MSG_FolderIterator() -{ - Init(); // This removes any stack we may have had. -} - -// Initialize the iterator to a known state -// (pointing at the first element in the folder tree). -void -MSG_FolderIterator::Init(void) -{ - // If we happen to have any stack left from a previous iteration, - // then remove it. - if (m_stack.GetSize() > 0) - { - // ### mw clumsy, but clean. I need to better understand the way that - // delete[] is used in XPPtrArray::SetSize(); perhaps I can - // call that instead of doing this. - for(int i=0; i < m_stack.GetSize(); i++) - { - MSG_FolderIteratorStackElement *elem = - (MSG_FolderIteratorStackElement *) m_stack.GetAt(i); - if (elem) delete elem; - } - m_stack.RemoveAt(0, m_stack.GetSize()); - } - - // Using a NULL parent means that we're operating on the - // master parent folder. - m_currentParent = NULL; - m_currentIndex = 0; -} - -// Push the currently iterating folder onto the stack. -// This is used when one of its subfolders contains subfolders. -XP_Bool -MSG_FolderIterator::Push(void) -{ - XP_Bool result = FALSE; - MSG_FolderInfo *nextParent = NextNoAdvance(); - XP_ASSERT(nextParent != NULL); - - // Create a new layer to add to the stack. - MSG_FolderIteratorStackElement *elem = new MSG_FolderIteratorStackElement; - - XP_ASSERT(elem != NULL); - if (elem) - { - // Save current state info. - elem->m_parent = m_currentParent; - elem->m_currentIndex = m_currentIndex; - - // Add the new layer to the stack at the end. - m_stack.InsertAt(m_stack.GetSize(), elem, 1); - - // Reset the current parent/index to reflect the new element. - m_currentParent = nextParent; - m_currentIndex = 0; - - result = TRUE; // signal that we successfully pushed - } - - return result; -} - -// Pop the most recently iterating folder container from the stack. -// This is typically used when one finishes iterating over a subfolder -// which itself contains subfolders. -XP_Bool -MSG_FolderIterator::Pop(void) -{ - XP_Bool result = FALSE; - - if (m_stack.GetSize() > 0) - { - // Get the most recent (highest numbered) element from the stack. - MSG_FolderIteratorStackElement *elem = - (MSG_FolderIteratorStackElement *) m_stack[m_stack.GetSize() - 1]; - if (elem) - { - // Got a stack element. Shrink the stack. - m_stack.RemoveAt(m_stack.GetSize() - 1, 1); - - // Restore state information from the popped stack element. - m_currentParent = elem->m_parent; - m_currentIndex = elem->m_currentIndex + 1; - - // Now that we don't need it, delete the stack element. - delete elem; - - // Signal that we successfully popped. - result = TRUE; - } - } - return result; -} - -MSG_FolderInfo * -MSG_FolderIterator::First() -{ - // Reset our iteration state. - Init(); - // We're now pointing at the first folder info element. Return it. - return Next(); -} - -MSG_FolderInfo * -MSG_FolderIterator::NextNoAdvance() -{ - MSG_FolderInfo *returnInfo = NULL; - - if ((!m_currentParent) && (m_currentIndex == 0)) - returnInfo = m_masterParent; - else - { - // Have we run out of folders at this depth? - while ((m_currentParent) && (m_currentIndex >= m_currentParent->GetNumSubFolders())) - { - // Try to pop out. - if (!Pop()) // if we can't Pop, we must be done. - break; - } - if ((m_currentParent) && - (m_currentIndex < m_currentParent->GetNumSubFolders())) - { - // Get the folder we're sitting on. - returnInfo = m_currentParent->GetSubFolder(m_currentIndex); - } - } - // Return the folder. - return returnInfo; -} - -MSG_FolderInfo * -MSG_FolderIterator::Next() -{ - MSG_FolderInfo *returnInfo = NextNoAdvance(); - - if (returnInfo) - // Advance to the next folder, if any. - Advance(); - - // Return the folder. - return returnInfo; -} - -void -MSG_FolderIterator::Advance() -{ - - // If the current folder sits atop subfolders, push down - // into the subfolders. - MSG_FolderInfo *currFolder = NextNoAdvance(); - - if (currFolder && currFolder->HasSubFolders() > 0) - { - // Drill down to the next level. - Push(); - } - else - { - // Increment from where we are. - m_currentIndex++; - } -} - -// Test whether we have more folders through which to iterate. -XP_Bool -MSG_FolderIterator::More() -{ - // We should be sitting on top of the next folder if it exists, so - // test the next folder for existence. - XP_Bool result = FALSE; - if (!m_currentParent && m_currentIndex == 0) - result = TRUE; - if (m_currentParent && - m_currentIndex < m_currentParent->GetNumSubFolders()) - result = TRUE; - - return result; -} - -// Return the advanced-to folder if successful, NULL otherwise. -MSG_FolderInfo * -MSG_FolderIterator::AdvanceToFolder(MSG_FolderInfo *desiredFolder) -{ - MSG_FolderInfo *curFolder = First(); - - while(curFolder && curFolder != desiredFolder) - { - curFolder = Next(); - } - return curFolder; -} diff --git a/mozilla/lib/libmsg/msgfinfo.h b/mozilla/lib/libmsg/msgfinfo.h deleted file mode 100644 index 4a285868343..00000000000 --- a/mozilla/lib/libmsg/msgfinfo.h +++ /dev/null @@ -1,733 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgFInfo_H_ -#define _MsgFInfo_H_ - -#include "ptrarray.h" -#include "imap.h" -#include "errcode.h" -#include "msgmast.h" -#include "dberror.h" -#include "idarray.h" -#include "msgundmg.h" - -class MessageDB; -class NewsGroupDB; -class MailDB; -class MailMessageHdr; -class DBMessageHdr; -class MessageDBView; -class msg_NewsArtSet; -class MSG_NewsHost; -class MSG_FolderInfoContainer; -class MSG_FolderInfoCategoryContainer; -class ImapMailDB; -class ParseMailboxState; -class DBFolderInfo; -class MSG_UrlQueue; -class msg_GroupRecord; -class DBOfflineImapOperation; -class MSG_FolderArray; -class MSG_IMAPHost; - -struct MSG_Filter; - - -/* Info about a single folder. */ - - -enum FolderType { - FOLDER_MAIL, - FOLDER_IMAPMAIL, - FOLDER_NEWSGROUP, - FOLDER_CONTAINERONLY, // Can't actually hold messages, just other - // folders. - FOLDER_CATEGORYCONTAINER, - FOLDER_IMAPSERVERCONTAINER -}; /* What kind of folder thingy this is. */ - - -typedef struct msg_write_state { - XP_Bool inhead; - - XP_File fid; - uint32 statusPosition; - uint32 position; - uint32 header_bytes; - XP_Bool update_msg; - char *uidl; - int numskip; - int32 (*writefunc)(char* line, uint32 length, void* closure); - void* writeclosure; - uint32 flags; -} msg_write_state; - - - -typedef struct msg_move_state { - XP_Bool ismove; - XP_Bool midMessage; // in the middle of copying a large message - uint32 messageBytesMovedSoFar; // for the current message - - uint32 totalSizeForProgressGraph; - uint32 finalDownLoadMessageSize; - XP_File infid; - - PRFileDesc *uploadToIMAPsocket; - UploadCompleteFunctionPointer *uploadCompleteFunction; - void *uploadCompleteArgument; - - char* buf; - int size; /* size of buf */ - MSG_FolderInfo* destfolder; - MSG_Pane* sourcePane; - TNavigatorImapConnection *imap_connection; - XP_Bool haveUploadedMessageSize; /* for imap uploading of msg size*/ - uint32 msgSize; - uint32 msg_flags; - - MailDB *destDB; - NewsGroupDB *sourceNewsDB; - msg_write_state writestate; - char *ibuffer; - uint32 ibuffer_size; - uint32 ibuffer_fp; - int num; - int numunread; - MessageKey nextKeyToLoad; // what to load after delete from message pane - char *urlForNextKeyLoad; - - int32 msgIndex; - XP_Bool moveCompleted; - - -} msg_move_state; - -typedef enum -{ - PurgeNeeded, - PurgeNotNeeded, - PurgeMaybeNeeded -} MSG_PurgeStatus; - -class MSG_FolderInfo { -public: - MSG_FolderInfo(const char* name, uint8 depth, XPCompareFunc* comparator = NULL); - virtual ~MSG_FolderInfo(); - - virtual FolderType GetType() = 0; - - // Gets the URL that represents the given message. Returns a newly - // created string that must be free'd using XP_FREE(). - // If the db is NULL, then returns a URL that represents the entire - // folder as a whole. - virtual char *BuildUrl (MessageDB *db, MessageKey key) = 0; - - - virtual void StartAsyncCopyMessagesInto (MSG_FolderInfo *dstFolder, - MSG_Pane* sourcePane, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - MWContext *currentContext, - MSG_UrlQueue *urlQueue, - XP_Bool deleteAfterCopy, - MessageKey nextKey = MSG_MESSAGEKEYNONE); - - - virtual MsgERR BeginCopyingMessages (MSG_FolderInfo *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - MSG_UrlQueue *urlQueue, - int32 srcCount, - MessageCopyInfo *copyInfo) = 0; - - - virtual int FinishCopyingMessages (MWContext *context, - MSG_FolderInfo * srcFolder, - MSG_FolderInfo *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - msg_move_state *state) = 0; - - - virtual void CleanupCopyMessagesInto (MessageCopyInfo **info); - - virtual MsgERR SaveMessages(IDArray *, const char *fileName, - MSG_Pane *pane, MessageDB *msgDB, - int (*doneCB)(void *, int status) = NULL, void *state = NULL); - - virtual const char *GetPrettyName(); // so news can override and return pretty name - virtual const char* GetName(); // Name of this folder (as presented to user). - virtual void SetName(const char *name); - - virtual const char *GetPrettiestName() ; - XP_Bool HasSubFolders() const; - int GetNumSubFolders() const; - virtual int GetNumSubFoldersToDisplay() const; - MSG_FolderInfo* GetSubFolder(int which) const; - MSG_FolderArray *GetSubFolders (); - virtual void RemoveSubFolder (MSG_FolderInfo *which); - void GetVisibleSubFolders (MSG_FolderArray&); - - virtual XP_Bool GetAdminUrl(MWContext *context, MSG_AdminURLType type); - virtual XP_Bool HaveAdminUrl(MSG_AdminURLType type); - virtual XP_Bool DeleteIsMoveToTrash(); - virtual XP_Bool ShowDeletedMessages(); - virtual MsgERR OnCloseFolder () ; - virtual MsgERR Delete () = 0; - MsgERR PropagateDelete (MSG_FolderInfo **folder, XP_Bool deleteStorage = TRUE); - MsgERR RecursiveDelete (XP_Bool deleteStorage = TRUE); // called by PropagateDelete - virtual MsgERR CreateSubfolder (const char *, MSG_FolderInfo**, int32*) = 0; - virtual MsgERR Rename (const char *name); - virtual MsgERR Adopt (MSG_FolderInfo *srcFolder, int32*) = 0; - - virtual XP_Bool ContainsChildNamed (const char *name); - virtual MSG_FolderInfo *FindChildNamed (const char *name); - virtual MSG_FolderInfo *FindParentOf (MSG_FolderInfo *); - virtual XP_Bool IsParentOf (MSG_FolderInfo *, XP_Bool deep = TRUE); - - virtual const char *GenerateUniqueSubfolderName(const char *prefix, MSG_FolderInfo *otherFolder = NULL); - - uint8 GetDepth() const; - void SetDepth(uint8 depth); - - // updates num messages and num unread - should be pure virtual - // when I get around to implementing in all subclasses? - virtual XP_Bool UpdateSummaryTotals(); - void SummaryChanged(); - int32 GetNumUnread(XP_Bool deep = FALSE) const; // How many unread messages in this folder. - int32 GetTotalMessages(XP_Bool deep = FALSE) const; // Total number of messages in this folder. - virtual int32 GetTotalMessagesInDB() const; // How many messages in database. - virtual void MarkAllRead(MWContext *context, XP_Bool deep); - - // These functions are used for tricking the front end into thinking that we have more - // messages than are really in the DB. This is usually after and IMAP message copy where - // we don't want to do an expensive select until the user actually opens that folder - // These functions are called when MSG_Master::GetFolderLineById is populating a MSG_FolderLine - // struct used by the FE - int32 GetNumPendingUnread(XP_Bool deep = FALSE) const; - int32 GetNumPendingTotalMessages(XP_Bool deep = FALSE) const; - - void ChangeNumPendingUnread(int32 delta); - void ChangeNumPendingTotalMessages(int32 delta); - - void SetFolderPrefFlags(int32 flags); - int32 GetFolderPrefFlags(); - void SetFolderCSID(int16 csid); - int16 GetFolderCSID(); - void SetLastMessageLoaded(MessageKey lastMessageLoaded); - MessageKey GetLastMessageLoaded(); - uint32 GetFlags() const ; - void ToggleFlag (uint32 which); - void SetFlag (uint32 which); - - void SetFlagInAllFolderPanes(uint32 which); - void ClearFlag (uint32 which); - XP_Bool TestFlag (uint32 which) { return (m_flags & which) != 0; } // Type conversion to char-sized XP_Bool - - int32 GetFoldersWithFlag(uint32 flags, MSG_FolderInfo** result, - int32 resultsize); - // for everyone else... - virtual void GetExpansionArray (MSG_FolderArray &array ); - - char *EscapeMessageId (const char *messageId); - - virtual int32 GetExpungedBytesCount() const; - virtual MSG_FolderInfoMail *GetMailFolderInfo() ; - virtual MSG_FolderInfoNews *GetNewsFolderInfo() ; - virtual MSG_IMAPFolderInfoMail *GetIMAPFolderInfoMail() ; - virtual MSG_IMAPFolderInfoContainer *GetIMAPFolderInfoContainer() ; - virtual MSG_IMAPHost *GetIMAPHost() ; - - virtual XP_Bool IsMail () = 0; - virtual XP_Bool IsNews () = 0; - virtual XP_Bool IsDeletable () = 0; - virtual XP_Bool CanCreateChildren (); - virtual XP_Bool CanBeRenamed () ; - virtual XP_Bool RequiresCleanup(); - virtual void ClearRequiresCleanup(); - virtual XP_Bool CanBeInFolderPane (); - virtual XP_Bool KnowsSearchNntpExtension(); - virtual XP_Bool AllowsPosting(); - virtual XP_Bool DisplayRecipients(); - - MsgERR AcquireSemaphore (void *semHolder); - void ReleaseSemaphore (void *semHolder); - XP_Bool TestSemaphore (void *semHolder); - XP_Bool IsLocked () { return m_semaphoreHolder != NULL; } - MWContext *GetFolderPaneContext(); - MSG_Master *GetMaster() {return m_master;} - virtual MsgERR GetDBFolderInfoAndDB(DBFolderInfo **folderInfo, MessageDB **db) = 0; - virtual MsgERR ReadDBFolderInfo (XP_Bool force = FALSE); - - virtual MsgERR WriteToCache (XP_File); - virtual MsgERR ReadFromCache (char *); - virtual XP_Bool IsCachable (); - void SkipCacheTokens (char **ppBuf, int numTokens); - virtual const char *GetRelativePathName (); - - virtual int32 GetSizeOnDisk(); - - virtual XP_Bool ShouldPerformOperationOffline(); - static int CompareFolderDepth (const void *, const void *); - - int DownloadToTempFileAndUpload(MessageCopyInfo *copyInfo, IDArray &keysToSave, MSG_FolderInfo *dstFolder, MessageDB *sourceDB); - virtual void RememberPassword(const char *password); - virtual char *GetRememberedPassword(); - virtual XP_Bool UserNeedsToAuthenticateForFolder(XP_Bool displayOnly); - virtual const char *GetUserName(); - virtual const char *GetHostName(); - -protected: - - char* m_name; - uint32 m_flags; - int32 m_numUnreadMessages; /* count of unread messages (-1 means - unknown; -2 means unknown but we already - tried to find out.) */ - int32 m_numTotalMessages; /* count of existing messages. */ - MSG_FolderArray *m_subFolders; - MSG_Master *m_master; - int16 m_csid; // default csid for folder/newsgroup - maintained by fe. - uint8 m_depth; - int32 m_prefFlags; // prefs like MSG_PREF_OFFLINE, MSG_PREF_ONE_PANE, etc - void *m_semaphoreHolder; // set when the folder is being written to - MessageKey m_lastMessageLoaded; - - // These values are used for tricking the front end into thinking that we have more - // messages than are really in the DB. This is usually after and IMAP message copy where - // we don't want to do an expensive select until the user actually opens that folder - int32 m_numPendingUnreadMessages; - int32 m_numPendingTotalMessages; - - XP_Bool m_isCachable; -}; - - -struct MessageCopyInfo { - MSG_FolderInfo *srcFolder; - MSG_FolderInfo *dstFolder; - MessageCopyInfo *nextCopyInfo; - - XP_Bool dstIMAPfolderUpdated; - uint32 offlineFolderPositionOfMostRecentMessage; - MessageDB *srcDB; - IDArray *srcArray; - int32 srcCount; - msg_move_state moveState; - ImapOnlineCopyState imapOnLineCopyState; -}; - - - -class MSG_FolderInfoMail : public MSG_FolderInfo { -public: - static MSG_FolderInfoMail *BuildFolderTree (const char *path, - uint8 depth, MSG_FolderArray *parentArray, MSG_Master *master, - XP_Bool buildingImapTree = FALSE, MSG_IMAPHost *host = NULL); - - MSG_FolderInfoMail(char* pathname, MSG_Master *master, uint8 depth, uint32 flags); - virtual ~MSG_FolderInfoMail(); - - virtual void SetPrefFolderFlag(); - - virtual FolderType GetType(); - - virtual char *BuildUrl (MessageDB *db, MessageKey key); - - virtual MsgERR BeginCopyingMessages (MSG_FolderInfo *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - MSG_UrlQueue *urlQueue, - int32 srcCount, - MessageCopyInfo *copyInfo); - - - virtual int FinishCopyingMessages (MWContext *context, - MSG_FolderInfo * srcFolder, - MSG_FolderInfo *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - msg_move_state *state); - - virtual MsgERR CheckForLegalCopy(MSG_FolderInfo *dstFolder); - - virtual MsgERR CreateSubfolder (const char *, MSG_FolderInfo**, int32*); - - virtual void RemoveSubFolder (MSG_FolderInfo *which); - virtual MsgERR Delete (); - virtual MsgERR Rename (const char *newName); - virtual MsgERR Adopt (MSG_FolderInfo *srcFolder, int32 *newPos); - - MsgERR PropagateRename (const char *newName, int startingAt); - MsgERR PropagateAdopt (const char *parentPath, uint8 parentDepth); - - // this override pulls the value from the db - virtual const char* GetName(); // Name of this folder (as presented to user). - virtual const char* GetPrettyName(); // Override of the base, for top-level mail folder - - virtual const char *GenerateUniqueSubfolderName(const char *prefix, MSG_FolderInfo *otherFolder = NULL); - - const char* GetPathname() {return m_pathName;} // Full path to this folder. - MSG_FolderInfoMail* FindPathname(const char* pathname); - XP_Bool UpdateSummaryTotals() ; - - // used in copying messages - virtual int CreateMessageWriteStream(msg_move_state *state, uint32 msgSize, uint32 msg_flags); - // only makes sense if CreateMessageWriteStream worked - virtual XP_Bool MessageWriteStreamIsReadyForWrite(msg_move_state *state); - virtual uint32 SeekToEndOfMessageStore(msg_move_state *state); - virtual uint32 WriteMessageBuffer(msg_move_state *state, char *buffer, uint32 bytesToWrite, MailMessageHdr *offlineHdr); - virtual void CloseMessageWriteStream(msg_move_state *state); - - // srcDB is passed in when we are dealing with a search pane & it it doesn't have an message view. everyone else - // should ignore this extra parameter.. - virtual void SaveMessageHeader(msg_move_state *state, MailMessageHdr *hdr, uint32 messageKey, MessageDB * srcDB = NULL); - - virtual void CloseOfflineDestinationDbAfterMove(msg_move_state *state); - - void SetMaster(MSG_Master *master) {m_master = master;} - // these methods handle current folder being parsed, if any. - ParseMailboxState *GetParseMailboxState() {return m_parseMailboxState;} - void SetParseMailboxState(ParseMailboxState *state) {m_parseMailboxState = state;} - - virtual uint32 MessageCopySize(DBMessageHdr *msgHeader, msg_move_state *state); - - virtual MSG_FolderInfoMail *GetMailFolderInfo() {return this;} - virtual int32 GetExpungedBytesCount() const; - virtual void SetExpungedBytesCount(int32 count) ; - virtual XP_Bool IsMail () ; - virtual XP_Bool IsNews () ; - virtual XP_Bool IsDeletable (); - virtual XP_Bool CanCreateChildren () ; - virtual XP_Bool CanBeRenamed (); - virtual XP_Bool RequiresCleanup(); - - MsgERR GetDBFolderInfoAndDB(DBFolderInfo **folderInfo, MessageDB **db); - virtual MsgERR ReadDBFolderInfo (XP_Bool force = FALSE); - - virtual MsgERR WriteToCache (XP_File); - virtual MsgERR ReadFromCache (char *); - virtual const char *GetRelativePathName (); - - static char *CreatePlatformLeafNameForDisk(const char *userLeafName, MSG_Master *master, const char *baseDir); - static char *CreatePlatformLeafNameForDisk(const char *userLeafName, MSG_Master *master, MSG_FolderInfoMail *parentFolder); - IDArray *GetImapIdsToMoveFromInbox() {return &m_imapIdsToMoveFromInbox;} - void ClearImapIdsToMoveFromInbox() {m_imapIdsToMoveFromInbox.RemoveAll();} - - virtual int32 GetSizeOnDisk(); - - static int CompareFolders (const void *, const void *); - void UpdatePendingCounts(MSG_FolderInfo * dstFolder, - IDArray *srcArray, - XP_Bool countUnread = TRUE, - XP_Bool missingAreRead = TRUE); - void SetGettingMail(XP_Bool flag); - XP_Bool GetGettingMail(); - virtual const char *GetUserName(); - virtual const char *GetHostName(); - virtual void DeleteMsgsOnServer(msg_move_state *state, MessageDB *sourceDB, IDArray *srcArray, int32 srcCount); - virtual XP_Bool UserNeedsToAuthenticateForFolder(XP_Bool displayOnly); - virtual char *GetRememberedPassword(); - -protected: - // a factory that deals with pathname to long for us to append ".snm" to. Useful when the user imports - // a mailbox file with a long name. If there is a new name then pathname is replaced. - static MSG_FolderInfoMail *CreateMailFolderInfo(char* pathname, MSG_Master *master, uint8 depth, uint32 flags); - - MsgERR BeginOfflineAppend(MSG_IMAPFolderInfoMail *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - msg_move_state *state); - - MsgERR CloseDatabase (const char *name, MessageDB **outDB); - MsgERR ReopenDatabase (MessageDB *db, const char *newName); - - // This function ensures that each line in the buffer ends in - // CRLF, as required by RFC822 and therefore IMAP APPEND. - // - // This function assumes that there is enough room in the buffer to - // double its size. The return value is the new buffer size. - uint32 ConvertBufferToRFC822LineTermination(char *buffer, uint32 bufferSize, - XP_Bool *lastCharacterOfPrevBufferWasCR); - - void SetUrlForNextMessageLoad(msg_move_state *state, MessageDBView *view, MSG_ViewIndex doomedIndex); - - char *FindNextLineTerminatingCharacter(char *bufferToSearch); - - - virtual XP_Bool ShouldIgnoreFile (const char *fileName); - char* m_pathName; - ParseMailboxState *m_parseMailboxState; - int32 m_expungedBytes; - XP_Bool m_HaveReadNameFromDB; - IDArray m_imapIdsToMoveFromInbox; // use to apply imap move filters with this - // folder as a destination. - XP_Bool m_gettingMail; -}; - - -class MSG_FolderInfoNews : public MSG_FolderInfo { -public: - MSG_FolderInfoNews(char *groupName, msg_NewsArtSet* set, - XP_Bool subscribed, MSG_NewsHost* host, uint8 depth); - virtual ~MSG_FolderInfoNews(); - - virtual FolderType GetType(); - virtual char *BuildUrl (MessageDB *db, MessageKey key); - - virtual MsgERR BeginCopyingMessages (MSG_FolderInfo * /*dstFolder*/, - MessageDB * /*sourceDB*/, - IDArray * /*srcArray*/, - MSG_UrlQueue * /*urlQueue*/, - int32 /*srcCount*/, - MessageCopyInfo * /* copyInfo */); - - - virtual int FinishCopyingMessages (MWContext * context, - MSG_FolderInfo * srcFolder, - MSG_FolderInfo * dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - msg_move_state * state) ; - - virtual MsgERR CreateSubfolder (const char *, MSG_FolderInfo**, int32*); - virtual MsgERR Delete (); - virtual MsgERR Rename (const char *newName); - virtual MsgERR Adopt (MSG_FolderInfo *srcFolder, int32 *newPos); - - virtual const char *GetRelativePathName (); - const char *GetNewsgroupName() const {return m_name;} - const char *GetDBFileName(); // Fully expanded filename, suitable to pass to db - const char *GetXPDBFileName(); // filename suitable to pass to xp routines - const char *GetXPRuleFileName(); // newsgroup rule filename suitable to pass to xp routines. - - void SetNewsgroupUsername(const char * username); // munged username - const char *GetNewsgroupUsername(void); // return munged username; - - void SetNewsgroupPassword(const char * password); // munged password - const char *GetNewsgroupPassword(void); // return munged password; - - virtual const char *GetPrettyName(); - virtual void ClearPrettyName(); - virtual char *GetHostUrl(); - - XP_Bool IsSubscribed(); - MsgERR Subscribe(XP_Bool bSubscribe, MSG_Pane *invokingPane = NULL); - msg_NewsArtSet* GetSet(); - void ClearSet() {m_set = NULL;} - virtual XP_Bool UpdateSummaryTotals(); - virtual void UpdateSummaryFromNNTPInfo(int32 oldest_message, - int32 youngest_message, - int32 total_messages); - - MSG_FolderInfoCategoryContainer *CloneIntoCategoryContainer(); - - void SetWantNewTotals(XP_Bool value) {m_wantNewTotals = value;} - XP_Bool GetWantNewTotals() {return m_wantNewTotals;} - - void SetAutoSubscribed(XP_Bool value) {m_autoSubscribed = value;} - XP_Bool GetAutoSubscribed() {return m_autoSubscribed;} - - virtual void MarkAllRead(MWContext *context, XP_Bool deep); - - virtual int32 GetTotalMessagesInDB() const; // How many messages in database. - MSG_NewsHost* GetHost() {return m_host;} - - virtual XP_Bool CanBeInFolderPane (); - virtual XP_Bool IsMail () ; - virtual XP_Bool IsNews (); - virtual XP_Bool IsDeletable (); - virtual XP_Bool IsCategory(); - virtual XP_Bool RequiresCleanup(); - virtual void ClearRequiresCleanup(); - virtual XP_Bool KnowsSearchNntpExtension(); - virtual XP_Bool AllowsPosting(); - - virtual MSG_FolderInfoNews *GetNewsFolderInfo(); - virtual NewsGroupDB *OpenNewsDB(XP_Bool deleteInvalidDB = FALSE, MsgERR *pErr = NULL); - MsgERR GetDBFolderInfoAndDB(DBFolderInfo **folderInfo, MessageDB **db); - // these methods handle current folder being parsed, if any. - ListNewsGroupState *GetListNewsGroupState() {return m_listNewsGroupState;} - void SetListNewsGroupState(ListNewsGroupState *state) {m_listNewsGroupState = state;} - - virtual int32 GetSizeOnDisk(); - - virtual MsgERR ReadFromCache (char*); - -protected: - char * GetUniqueFileName(const char *extension); - - MSG_NewsHost* m_host; - msg_NewsArtSet* m_set; - int32 m_nntpHighwater; - int32 m_nntpTotalArticles; - int32 m_totalInDB; - int32 m_unreadInDB; - XP_Bool m_subscribed; - XP_Bool m_autoSubscribed; - XP_Bool m_wantNewTotals; - char * m_dbfilename; - char * m_XPDBFileName; // name to pass to XPFile routines - char * m_XPRuleFileName; // name to pass to XPFile routines - char * m_prettyName; - MSG_PurgeStatus m_purgeStatus; - ListNewsGroupState *m_listNewsGroupState; - char * m_username; // munged username - char * m_password; // munged password -}; - - -class MSG_FolderInfoCategoryContainer : public MSG_FolderInfoNews { -public: - MSG_FolderInfoCategoryContainer(char *groupName, msg_NewsArtSet* set, - XP_Bool subscribed, MSG_NewsHost* host, uint8 depth); - virtual ~MSG_FolderInfoCategoryContainer(); - - MSG_FolderInfoNews *BuildCategoryTree(MSG_FolderInfoNews *parent, - const char *catName, - msg_GroupRecord* group, - uint8 depth, MSG_Master *master); - -MSG_FolderInfoNews *AddToCategoryTree(MSG_FolderInfoNews *parent, - const char *groupName, - msg_GroupRecord* group, - MSG_Master *master); - - virtual FolderType GetType(); - // these don't expand in folder pane. - MSG_FolderInfoNews *CloneIntoNewsFolder(); - MSG_FolderInfoNews *GetRootCategory(); - virtual MSG_FolderInfoNews *GetNewsFolderInfo() ; -}; - - -// A folder that contains other folders, but doesn't do much else. -class MSG_FolderInfoContainer : public MSG_FolderInfo { -public: - MSG_FolderInfoContainer(const char* name, uint8 depth, XPCompareFunc* f); - virtual ~MSG_FolderInfoContainer(); - virtual FolderType GetType(); - virtual char *BuildUrl (MessageDB *db, MessageKey key); - virtual MsgERR BeginCopyingMessages (MSG_FolderInfo *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - MSG_UrlQueue *urlQueue, - int32 srcCount, - MessageCopyInfo *copyInfo); - - - virtual int FinishCopyingMessages (MWContext *context, - MSG_FolderInfo * srcFolder, - MSG_FolderInfo *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - msg_move_state *state); - - virtual MsgERR CreateSubfolder (const char *, MSG_FolderInfo**, int32*); - - virtual MsgERR SaveMessages (IDArray*, const char *fileName, - MSG_Pane *pane, MessageDB *msgDB, - int (*doneCB)(void *, int status) = NULL, void *state = NULL); - - virtual MsgERR Delete(); - virtual MsgERR Adopt (MSG_FolderInfo *srcFolder, int32 *newPos); - - // returns mail folder within container - virtual MSG_FolderInfoMail* FindMailPathname(const char* p); - - // move these into msgfinfo.cpp - virtual XP_Bool IsMail () { return FALSE; } - virtual XP_Bool IsNews () { return FALSE; } - virtual XP_Bool IsDeletable () { return FALSE; } - virtual MSG_NewsHost* GetHost() {return NULL;} - MsgERR GetDBFolderInfoAndDB(DBFolderInfo ** /*folderInfo*/, MessageDB ** /*db*/) - {return eFAILURE;} - -protected: -}; - - -class MSG_NewsFolderInfoContainer : public MSG_FolderInfoContainer -{ -public: - MSG_NewsFolderInfoContainer(MSG_NewsHost* host, uint8 depth); - virtual ~MSG_NewsFolderInfoContainer(); - - virtual XP_Bool IsDeletable(); - virtual MsgERR Delete(); - virtual MSG_NewsHost* GetHost() {return m_host;} - virtual XP_Bool KnowsSearchNntpExtension (); - virtual XP_Bool AllowsPosting(); - virtual int GetNumSubFoldersToDisplay() const; - -protected: - MSG_NewsHost* m_host; - char *m_prettyName; -}; - - -struct MSG_FolderIteratorStackElement -{ - MSG_FolderInfo *m_parent; - int m_currentIndex; -}; - - -/* - MSG_FolderIterator: A class for traversing folder lists. - ### mw Right now, traversal is depth first. Other people can add - their favorite traversal methods. - */ -class MSG_FolderIterator -{ -public: - MSG_FolderInfo *m_masterParent; // Top of tree - MSG_FolderArray m_stack; // Stack of pointer indices - - MSG_FolderInfo *m_currentParent; // Currently iterating - int m_currentIndex; - - MSG_FolderIterator(MSG_FolderInfo *parent); - ~MSG_FolderIterator(); - - XP_Bool Push(); - XP_Bool Pop(); - void Init(); - void Advance(); - - MSG_FolderInfo *First(); - MSG_FolderInfo *Next(); - MSG_FolderInfo *NextNoAdvance(); - MSG_FolderInfo *AdvanceToFolder(MSG_FolderInfo *); - XP_Bool More(); -}; - - -#endif /* _MsgFInfo_H_ */ diff --git a/mozilla/lib/libmsg/msgfpane.cpp b/mozilla/lib/libmsg/msgfpane.cpp deleted file mode 100644 index b6e3fe7396f..00000000000 --- a/mozilla/lib/libmsg/msgfpane.cpp +++ /dev/null @@ -1,2692 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "errcode.h" -#include "xp_str.h" -#include "xpgetstr.h" - -#include "msgfpane.h" -#include "msgimap.h" -#include "newshost.h" -#include "imaphost.h" - -#include "msgtpane.h" -#include "msgmpane.h" - -#include "msgprefs.h" -#include "msgdbvw.h" -#include "mailhdr.h" -#include "maildb.h" -#include "msgmast.h" - -#include "msg_filt.h" -#include "pmsgfilt.h" -#include "pmsgsrch.h" -#include "prsembst.h" -#include "grpinfo.h" -#include "msgrulet.h" -#include "dwordarr.h" -#include "newshost.h" -#include "msgundac.h" -#include "msgurlq.h" -#include "hosttbl.h" -#include "xp_qsort.h" -#include "prefapi.h" -extern "C" -{ -extern int MK_OUT_OF_MEMORY; -extern int MK_MSG_OFFER_COMPRESS; -extern int MK_MSG_OPEN_FOLDER; -extern int MK_MSG_OPEN_FOLDER2; -extern int MK_MSG_NEW_FOLDER; -extern int MK_MSG_COMPRESS_FOLDER; -extern int MK_MSG_COMPRESS_ALL_FOLDER; -extern int MK_MSG_OPEN_NEWS_HOST_ETC; -extern int MK_MSG_ADD_NEWS_GROUP; -extern int MK_MSG_EMPTY_TRASH_FOLDER; -extern int MK_MSG_UNDO; -extern int MK_MSG_REDO; -extern int MK_MSG_DELETE_FOLDER; -extern int MK_MSG_RMV_NEWS_HOST; -extern int MK_MSG_SUBSCRIBE; -extern int MK_MSG_UNSUBSCRIBE; -extern int MK_MSG_NEW_NEWS_MESSAGE; -extern int MK_MSG_MARK_ALL_READ; -extern int MK_MSG_CANT_OPEN; -extern int MK_MSG_ENTER_FOLDERNAME; -extern int MK_MSG_RENAME_FOLDER; -extern int MK_MSG_DELETE_FOLDER_MESSAGES; -extern int MK_MSG_FOLDER_ALREADY_EXISTS; -extern int MK_MSG_CAN_ONLY_DELETE_MAIL_FOLDERS; -extern int XP_NEWS_PROMPT_ADD_NEWSGROUP; -extern int MK_MSG_UNSUBSCRIBE_GROUP; -extern int MK_MSG_UNSUBSCRIBE_PROFILE_GROUP; -extern int MK_MSG_PANES_OPEN_ON_FOLDER; -extern int MK_MSG_ILLEGAL_CHARS_IN_NAME; -extern int MK_MSG_NEW_NEWSGROUP; -extern int MK_MSG_CANT_MOVE_FOLDER_TO_CHILD; -extern int MK_MSG_NEW_GROUPS_DETECTED; -extern int MK_MSG_REMOVE_HOST_CONFIRM; -extern int MK_MSG_NO_POP_HOST; -extern int MK_MSG_RENAME_FOLDER_CAPTION; -extern int MK_MSG_NEW_FOLDER_CAPTION; -extern int MK_MSG_MANAGE_MAIL_ACCOUNT; -extern int MK_MSG_UNABLE_MANAGE_MAIL_ACCOUNT; -extern int MK_POP3_NO_MESSAGES; -extern int MK_MSG_MODERATE_NEWSGROUP; -extern int MK_MSG_CANT_MOVE_INBOX; -extern int MK_MSG_CONFIRM_MOVE_MAGIC_FOLDER; -extern int MK_MSG_UPDATE_MSG_COUNTS; -extern int MK_MSG_MOVE_TARGET_NO_INFERIORS; -extern int MK_MSG_PARENT_TARGET_NO_INFERIORS; -extern int MK_MSG_TRASH_NO_INFERIORS; -extern int MK_MSG_TRACK_FOLDER_MOVE; -extern int MK_MSG_TRACK_FOLDER_DEL; -extern int MK_MSG_NO_MAIL_TO_NEWS; -extern int MK_MSG_NO_NEWS_TO_MAIL; -extern int MK_MSG_UNIQUE_TRASH_RENAME_FAILED; -extern int MK_MSG_NEEDED_UNIQUE_TRASH_NAME; -extern int MK_MSG_CANT_MOVE_FOLDER; -extern int MK_MSG_CONFIRM_MOVE_FOLDER_TO_TRASH; -extern int MK_MSG_REMOVE_IMAP_HOST_CONFIRM; -} - - -#ifdef XP_OS2 -#define qsort(a,b,c,d) qsort(a,b,c,(int (_Optlink*) (const void*,const void*)) d) -#endif - - -MSG_FolderPane::MSG_FolderPane(MWContext* context, MSG_Master* master) -: MSG_LinedPane(context, master) -{ -} - -MsgERR MSG_FolderPane::Init() -{ - FEStart(); - MSG_FolderInfo* folderTree = m_master->GetFolderTree(); - - int32 num = folderTree->GetNumSubFolders(); - if (num != 0) - { - for (int32 i = 0; i < num; i++) - { - // Add the top level folder - MSG_FolderInfo *folder = folderTree->GetSubFolder((MSG_ViewIndex) i); - if (folder->CanBeInFolderPane ()) - { - int index = m_folderView.Add (folder); - m_flagsArray.Add(folder->GetFlags() & 0xFF); - - // Add any children of the folder which might be expanded - if (!(folder->GetFlags() & MSG_FOLDER_FLAG_ELIDED) && !(folder->GetType() == FOLDER_CATEGORYCONTAINER)) - { - MSG_FolderArray array; - GetExpansionArray (folder, array); - if (array.GetSize() != 0) - { - InsertFlagsArrayAt(++index, array); - m_folderView.InsertAt (index, &array); - } - } - } - } - } - - FEEnd(); - // for fun, ### dmb - remove when we figure out how notifications should work - FlushUpdates(); - return eSUCCESS; -} - -MSG_FolderPane::~MSG_FolderPane() -{ - if (m_scanTimer) - FE_ClearTimeout (m_scanTimer); -} - - -void -MSG_FolderPane::RedisplayAll() -{ - StartingUpdate(MSG_NotifyAll, 0, 0); - m_folderView.RemoveAll(); - m_flagsArray.RemoveAll(); - Init(); - EndingUpdate(MSG_NotifyAll, 0, 0); -} - -MSG_PaneType MSG_FolderPane::GetPaneType() -{ - return MSG_FOLDERPANE; -} - -void MSG_FolderPane::NotifyPrefsChange(NotifyCode) -{ - // ###tw Write me! -} - -void MSG_FolderPane::InsertFlagsArrayAt(MSG_ViewIndex index, MSG_FolderArray &folders) -{ - for (int32 arrayIndex = 0; arrayIndex < folders.GetSize(); arrayIndex++) - { - MSG_FolderInfo *arrayFolder = folders.GetAt(arrayIndex); - m_flagsArray.InsertAt(index + arrayIndex, arrayFolder->GetFlags() & 0xFF); - } -} - - -XP_Bool -MSG_FolderPane::ScanFolder_1() -{ - // ###tw To heck with it. This should search through all the folders, and - // find one that does not have an accurate count of unread messages in - // memory. If it finds one, then this should attempt to quickly get that - // number from the database, and then return TRUE. If every folder either - // has an accurate count or we have already determined an accurate count - // can't be gotten quickly, then this routine should return FALSE. - for (int32 i=0 ; i<m_folderView.GetSize() ; i++) - { - MSG_FolderInfo *folder = m_folderView.GetAt((MSG_ViewIndex) i); - if (folder->GetNumUnread() == -1) - { - if (folder->GetType() == FOLDER_MAIL || folder->IsNews()) - { - folder->UpdateSummaryTotals(); - GetMaster()->BroadcastFolderChanged(folder); - return TRUE; - } - } - } - return FALSE; -} - -void -MSG_FolderPane::ScanFolder_s(void* closure) -{ - ((MSG_FolderPane*) closure)->ScanFolder(); -} - -void -MSG_FolderPane::ScanFolder() -{ - m_scanTimer = NULL; - if (ScanFolder_1()) { - if (m_scanTimer == NULL) { - m_scanTimer = FE_SetTimeout((TimeoutCallbackFunction)MSG_FolderPane::ScanFolder_s, this, 1); - } - } else { - if (m_wantCompress && !m_offeredCompress) { - char* buf; - if (NET_AreThereActiveConnectionsForWindow(m_context)) { - /* Looks like we're busy doing something, probably incorporating - new mail. Don't interrupt that; we can wait until we're idle - to ask our silly compression question. Just try again in a - half-second. */ - m_scanTimer = FE_SetTimeout((TimeoutCallbackFunction) MSG_FolderPane::ScanFolder_s, this, 500); - return; - } - buf = PR_smprintf(XP_GetString(MK_MSG_OFFER_COMPRESS), - /*###tw msg_addup_wasted_bytes(f->folders)*/ 0 / 1024); - if (buf) { - m_offeredCompress = TRUE; /* Set it now, before FE_Confirm gets called, - as timers and things can get called from - FE_Confirm, and we could end up back here - again. */ - if (FE_Confirm(m_context, buf)) { - msg_InterruptContext(m_context, FALSE); - CompressAllFolders(); - } - XP_FREE(buf); - } - } - m_offeredCompress = TRUE; - } -} - - -void -MSG_FolderPane::FlushUpdates() -{ - // ###tw This stuff probably needs to get moved somewhere else, and this - // FlushUpdates() method should probably go away... - if (m_scanTimer == NULL) { - /* What a disgusting way to do a background job. ### */ - m_scanTimer = FE_SetTimeout((TimeoutCallbackFunction) MSG_FolderPane::ScanFolder_s, this, 1); - } -} - - - -XP_Bool MSG_FolderPane::GetFolderLineByIndex(MSG_ViewIndex line, int32 numlines, MSG_FolderLine* data) -{ - if (line == MSG_VIEWINDEXNONE || line + numlines > (MSG_ViewIndex) m_folderView.GetSize() || numlines < 1) - return FALSE; - - for (int i=0 ; i<numlines ; i++) - { - MSG_FolderInfo *folder = m_folderView.GetAt(line + i); - XP_Bool result = m_master->GetFolderLineById(folder, data + i); - int8 flags = m_flagsArray.GetAt(line + i); - if (flags & MSG_FOLDER_FLAG_ELIDED) - data->flags |= MSG_FOLDER_FLAG_ELIDED; - else - data->flags &= ~MSG_FOLDER_FLAG_ELIDED; - XP_ASSERT(result); - if (!result) - return FALSE; - } - return TRUE; -} - -int MSG_FolderPane::GetFolderLevelByIndex(MSG_ViewIndex line) -{ - if (line == MSG_VIEWINDEXNONE || line >= (MSG_ViewIndex) m_folderView.GetSize()) - return 0; - - MSG_FolderLine data[1]; - MSG_FolderInfo *folder = m_folderView.GetAt(line); - XP_Bool result = m_master->GetFolderLineById(folder, data); - XP_ASSERT(result); - if (!result) - return 0; - return data[0].level; -} - - -int MSG_FolderPane::GetFolderMaxDepth() -{ - int result = 0; - for (MSG_ViewIndex i=0 ; i < (MSG_ViewIndex) m_folderView.GetSize() ; i++) - { - uint8 depth = m_folderView.GetAt(i)->GetDepth(); - if (result < depth) - result = depth; - } - return result; -} - - - -char* -MSG_FolderPane::GetFolderName(MSG_ViewIndex line) -{ - XP_ASSERT(int(line) >= 0 && line < (MSG_ViewIndex) m_folderView.GetSize()); - XP_ASSERT ( m_folderView.GetAt(line)->IsMail() ); - - if (int(line) >= 0 && line < (MSG_ViewIndex) m_folderView.GetSize()) - { - MSG_FolderInfoMail* f = m_folderView.GetAt(line)->GetMailFolderInfo(); - if (f && (f->GetType() == FOLDER_MAIL) || (f->GetType() == FOLDER_IMAPMAIL)) - return XP_STRDUP(f->GetPathname()); - } - return NULL; -} - - -void MSG_FolderPane::MakeFolderVisible (MSG_FolderInfo *folder) -{ - MSG_ViewIndex idx = GetFolderIndex (folder); - if (idx == MSG_VIEWINDEXNONE) - { - MSG_FolderInfo *parent = m_master->GetFolderTree()->FindParentOf (folder); - if (parent) - { - MakeFolderVisible (parent); - idx = GetFolderIndex (folder); - } - } - - if (idx != MSG_VIEWINDEXNONE && m_flagsArray.GetAt(idx) & MSG_FOLDER_FLAG_ELIDED) - { - int32 unused; - ToggleExpansion (idx, &unused); - } -} - - -MSG_ViewIndex MSG_FolderPane::GetFolderIndex(MSG_FolderInfo *folder, XP_Bool expand /*= FALSE*/) -{ - MSG_ViewIndex idx = (MSG_ViewIndex) m_folderView.FindIndex (0, folder); - if (idx == MSG_VIEWINDEXNONE && expand) - { - MakeFolderVisible (folder); - idx = (MSG_ViewIndex) m_folderView.FindIndex (0, folder); - } - return idx; -} - - -MSG_FolderInfo *MSG_FolderPane::GetFolderInfo(MSG_ViewIndex index) -{ - XP_ASSERT(index != MSG_VIEWINDEXNONE); - XP_ASSERT(index < (MSG_ViewIndex) m_folderView.GetSize()); - if (index == MSG_VIEWINDEXNONE || index >= (MSG_ViewIndex) m_folderView.GetSize()) - return NULL; - - return m_folderView.GetAt(index); -} - -/* becoming obsolete with switch to new Subscribe MSG_Host* APIs */ -MSG_NewsHost *MSG_FolderPane::GetNewsHostFromIndex (MSG_ViewIndex index) -{ - MSG_NewsHost *host = NULL; - - MSG_FolderInfo *folder = GetFolderInfo (index); - msg_HostTable *table = m_master->GetHostTable(); - if (folder && table) - host = table->FindNewsHost (folder); - - return host; -} - -MSG_Host *MSG_FolderPane::GetHostFromIndex (MSG_ViewIndex index) -{ - MSG_FolderInfo *folder = GetFolderInfo (index); - if (folder) - { - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - if (newsFolder) - return newsFolder->GetHost(); - else if (FOLDER_CONTAINERONLY == folder->GetType()) - return ((MSG_FolderInfoContainer*) folder)->GetHost(); - else if (FOLDER_IMAPSERVERCONTAINER == folder->GetType()) - return ((MSG_IMAPFolderInfoContainer*) folder)->GetIMAPHost(); - else { - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - if (imapFolder) - { - return imapFolder->GetIMAPHost(); - } - } - } - return NULL; -} - - -void MSG_FolderPane::OnFolderChanged(MSG_FolderInfo *folderInfo) -{ - MSG_ViewIndex index = GetFolderIndex(folderInfo); - - if (index != MSG_VIEWINDEXNONE) - { - StartingUpdate (MSG_NotifyChanged, index, 1); - EndingUpdate (MSG_NotifyChanged, index, 1); - } - - MSG_LinedPane::OnFolderChanged (folderInfo); -} - - -void -MSG_FolderPane::OpenFolderCB_s(MWContext *context, char *file_name, - void *closure) -{ - XP_ASSERT(((MSG_FolderPane*) closure)->m_context == context); - ((MSG_FolderPane*) closure)->OpenFolderCB(file_name); -} - - -void -MSG_FolderPane::OpenFolderCB(char* file_name) -{ - if (!file_name) - return; - - MSG_FolderInfo* folder = FindMailFolder(file_name, TRUE); - if (folder) { - // ###tw Uh, do something to let the FE's know about it? Maybe not... - } -} - -MsgERR -MSG_FolderPane::OpenFolder () -{ - FE_PromptForFileName (m_context, XP_GetString(MK_MSG_OPEN_FOLDER), 0, /* default_path */ - TRUE, FALSE, (ReadFileNameCallbackFunction) MSG_FolderPane::OpenFolderCB_s, this); - return 0; -} - -// The IMAP libnet module is still discovering folders after this -// pane was created. So we need a way to add folders as they come in. -void MSG_FolderPane::OnFolderAdded(MSG_FolderInfo *addedFolder, MSG_Pane *instigator) -{ - MSG_FolderInfo *tree = m_master->GetFolderTree(); - XP_ASSERT(tree); - MSG_FolderInfo *parentFolder = tree->FindParentOf(addedFolder); - if (parentFolder) - { - // at this point the parent folder already contains the child. - // find the index of the child within the parent's list - MSG_FolderArray subFolders; - parentFolder->GetVisibleSubFolders(subFolders); - int32 newPosition = subFolders.FindIndex (0, addedFolder); - - // Add the folder to the folder pane's view - AddFolderToView(addedFolder, parentFolder, newPosition); - - // Tell the FE that a new folder was created that they should select - // notification for imap folders happens in create url exit function - if (!(addedFolder->GetFlags() & MSG_FOLDER_FLAG_IMAPBOX)) - FE_PaneChanged (this, FALSE, MSG_PaneNotifySelectNewFolder, MSG_VIEWINDEXNONE); - } - else - { - // this is likely the container? - // this was being hit when a UofW server was serving up /u/kmcentee XP_ASSERT(FALSE); - } - - MSG_LinedPane::OnFolderAdded (addedFolder, instigator); -} - -void MSG_FolderPane::PostProcessRemoteCopyAction() -{ - if (m_RemoteCopyState) - { - MsgERR err = m_RemoteCopyState->DoNextAction(); - if (err) - { - delete m_RemoteCopyState; - m_RemoteCopyState = NULL; - } - } -} - - -void MSG_FolderPane::AddFoldersToView (MSG_FolderArray &folders, MSG_FolderInfo *parent, int32 newFolderIdx) -{ - // This is a hack to allow creating folders inside the folderPane c-tor. Yuck. - if (m_folderView.GetSize() == 0) - return; - - if (parent == NULL) - parent = GetMaster()->GetFolderTree(); - - // If the parent is not already visible, expand any folders we need to so the - // newly added children will be visible. - MSG_ViewIndex parentIdx = GetFolderIndex (parent, TRUE /*expand*/); - - // If this is the first child for this parent, the FE needs to - // redraw the parent line to get the expand/collapse widget - if ((parent->GetNumSubFolders() == 1) && (parentIdx != MSG_VIEWINDEXNONE)) - { - StartingUpdate (MSG_NotifyChanged, parentIdx, 1); - parent->SetFlag (MSG_FOLDER_FLAG_DIRECTORY); - // tell the view - ClearFlagForFolder(parent, MSG_FOLDER_FLAG_ELIDED); // make sure elided bit isn't set. - EndingUpdate (MSG_NotifyChanged, parentIdx, 1); - } - - if (parentIdx != MSG_VIEWINDEXNONE && !(m_flagsArray.GetAt(parentIdx) & MSG_FOLDER_FLAG_ELIDED)) - { - // The new parent may have expanded folders in the folder pane between the parent - // index and the position of the new child. Therefore, we need to adjust [the index - // of the new child relative to its parent] into [an index into the folder pane's view]. - int32 expansionOffset = 0; - MSG_FolderArray visibleSubFolders; - parent->GetVisibleSubFolders(visibleSubFolders); - - for (int i = 0; i < newFolderIdx; i++) - { - MSG_FolderInfo *folder = visibleSubFolders.GetAt(i); - uint32 flags = folder->GetFlags(); - // ### dmb - should this use the flag array? - if ((flags & MSG_FOLDER_FLAG_DIRECTORY) && !(m_flagsArray.GetAt(parentIdx + i + expansionOffset + 1) & MSG_FOLDER_FLAG_ELIDED)) - { - MSG_FolderArray array; - GetExpansionArray (folder, array); - expansionOffset += array.GetSize(); - } - } - expansionOffset += newFolderIdx; - // Now that we know where the new folder goes in the folder pane, tell - // the FE to redraw at that index - if (MSG_VIEWINDEXNONE == GetFolderIndex (folders.GetAt(0))) - { - MSG_ViewIndex newIdx = expansionOffset; - if (parentIdx != MSG_VIEWINDEXNONE) - newIdx += parentIdx + 1; - StartingUpdate (MSG_NotifyInsertOrDelete, newIdx, folders.GetSize()); - InsertFlagsArrayAt(newIdx, folders); - m_folderView.InsertAt (newIdx, &folders); - EndingUpdate (MSG_NotifyInsertOrDelete, newIdx, folders.GetSize()); - - } - } - else if (parentIdx != MSG_VIEWINDEXNONE) - { - int32 unused; - ToggleExpansion(parentIdx, &unused); - } - else if (parentIdx == MSG_VIEWINDEXNONE) - { - // The new parent may have expanded folders in the folder pane between the parent - // index and the position of the new child. Therefore, we need to adjust [the index - // of the new child relative to its parent] into [an index into the folder pane's view]. - int32 expansionOffset = 0; - MSG_FolderArray visibleSubFolders; - parent->GetVisibleSubFolders(visibleSubFolders); - - for (int i = 0; i < newFolderIdx; i++) - { - MSG_FolderInfo *folder = visibleSubFolders.GetAt(i); - uint32 flags = folder->GetFlags(); - // ### dmb - should this use the flag array? - if ((flags & MSG_FOLDER_FLAG_DIRECTORY) && !(m_flagsArray.GetAt(parentIdx + i + expansionOffset + 1) & MSG_FOLDER_FLAG_ELIDED)) - { - MSG_FolderArray array; - GetExpansionArray (folder, array); - expansionOffset += array.GetSize(); - } - } - expansionOffset += newFolderIdx; - // this case is for when the root object is the parent... - StartingUpdate (MSG_NotifyInsertOrDelete, expansionOffset, folders.GetSize()); - InsertFlagsArrayAt(expansionOffset, folders); - m_folderView.InsertAt (expansionOffset, &folders); - EndingUpdate (MSG_NotifyInsertOrDelete, expansionOffset, folders.GetSize()); - - // add all the expanded children - for (int index = 0; index < folders.GetSize(); index++) - { - MSG_FolderInfo *folder = folders.GetAt(index); - if (!(folder->GetFlags() & MSG_FOLDER_FLAG_ELIDED)) - { - MSG_FolderArray array; - GetExpansionArray (folder, array); - if (array.GetSize() != 0) - { - StartingUpdate (MSG_NotifyInsertOrDelete, ++expansionOffset, array.GetSize()); - InsertFlagsArrayAt(expansionOffset, array); - m_folderView.InsertAt (expansionOffset, &array); - EndingUpdate (MSG_NotifyInsertOrDelete, expansionOffset, array.GetSize()); - expansionOffset += folders.GetSize(); - } - } - } - } -} - -void MSG_FolderPane::SetFlagForFolder (MSG_FolderInfo *folder, uint32 which) -{ - MSG_ViewIndex viewIndex = GetFolderIndex (folder); - if (viewIndex != MSG_VIEWINDEXNONE) - { - m_flagsArray.SetAt(viewIndex, m_flagsArray.GetAt(viewIndex) | which); - } -} - -void MSG_FolderPane::ClearFlagForFolder(MSG_FolderInfo *folder, uint32 flag) -{ - MSG_ViewIndex viewIndex = GetFolderIndex (folder); - if (viewIndex != MSG_VIEWINDEXNONE) - { - m_flagsArray.SetAt(viewIndex, m_flagsArray.GetAt(viewIndex) & ~flag); - } -} - -void MSG_FolderPane::AddFolderToView (MSG_FolderInfo *folder, MSG_FolderInfo *parent, int32 newPos) -{ - // Just a little convenience routine since not all folder operations have an array - MSG_FolderArray array; - array.Add(folder); - AddFoldersToView (array, parent, newPos); -} - - -MsgERR MSG_FolderPane::NewFolderWithUI (MSG_ViewIndex *indices, int32 numIndices) -{ - MsgERR status = 0; - - XP_ASSERT (numIndices == 1); - MSG_FolderInfo *folder = GetFolderInfo (indices[0]); - - if (folder && (folder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOINFERIORS)) - { - FE_Alert(GetContext(), XP_GetString(MK_MSG_PARENT_TARGET_NO_INFERIORS)); - // leave status == 0, since we already annoyed the user - } - else if (folder) - { - char *name = GetValidNewFolderName (folder, MK_MSG_NEW_FOLDER_CAPTION, folder); - - // If the user didn't click cancel, (name non-null) create the folder - if (name) - { - status = GetMaster()->CreateMailFolder (this, folder, name); - XP_FREE (name); - } - } - return status; -} - - - - // remove the folders from the visible folder pane. leave disk storage intact -MsgERR MSG_FolderPane::RemoveFolderFromView(MSG_FolderInfo *doomedFolder) -{ - MSG_FolderArray children; - GetExpansionArray (doomedFolder, children); - MSG_ViewIndex doomedIndex = GetFolderIndex(doomedFolder); - - MSG_FolderInfo *parentOfDoomed = m_master->GetFolderTree()->FindParentOf (doomedFolder); - - return RemoveIndexedFolderFromView(doomedIndex, children, (doomedIndex == MSG_VIEWINDEXNONE) ? 0 : m_flagsArray.GetAt(doomedIndex), parentOfDoomed); -} - - // remove the indexed folders from the visible folder pane. -MsgERR MSG_FolderPane::RemoveIndexedFolderFromView(MSG_ViewIndex doomedIndex, MSG_FolderArray &children, uint32 doomedFlags, MSG_FolderInfo *parentOfDoomed) -{ - if (MSG_VIEWINDEXNONE != doomedIndex) - { - // total number of changing lines is 'folder' plus any visible children - // since we're deleting, the count is negative - int32 countVector = -1; // default for collapsed - if (!(doomedFlags & MSG_FOLDER_FLAG_ELIDED)) - countVector = -(children.GetSize() + 1); - StartingUpdate (MSG_NotifyInsertOrDelete, doomedIndex, countVector); - // remove children, if any and parent expanded, from view - if (!(doomedFlags & MSG_FOLDER_FLAG_ELIDED)) - { - m_folderView.RemoveAt (doomedIndex + 1, &children); - m_flagsArray.RemoveAt(doomedIndex + 1, children.GetSize()); - } - // remove 'folder' from view - m_folderView.RemoveAt (doomedIndex); - m_flagsArray.RemoveAt(doomedIndex); - EndingUpdate (MSG_NotifyInsertOrDelete, doomedIndex, countVector); - } - - return 0; -} - - - // delete the folders and associated disk storage, calls RemoveFolderFromView -MsgERR MSG_FolderPane::DeleteFolder (MSG_FolderInfoMail *folder, XP_Bool performPreflight) -{ - MsgERR status = 0; - if (performPreflight) // preflight is not performed to delete non-existant imap folders. - status = PreflightDeleteFolder (folder, TRUE /*getUserConfirmation*/); - - if (status != 0) - return 0; // ###phil not nice to drop this error, but we don't want another alert box. - - if (folder->GetType() == FOLDER_MAIL) - { - MSG_FolderInfo *tree = m_master->GetFolderTree(); - XP_ASSERT (tree); - if (tree) - { - // I'm leaving the FindParent split out in case we put in parent pointers, - // which would make this an O(1) operation - MSG_FolderInfo *parent = tree->FindParentOf (folder); - status = parent->PropagateDelete ((MSG_FolderInfo**) &folder); - } - } - else if (folder->GetType() == FOLDER_IMAPMAIL) - { - char *deleteMailboxURL = CreateImapMailboxDeleteUrl(((MSG_IMAPFolderInfoMail *)folder)->GetHostName(), - ((MSG_IMAPFolderInfoMail *)folder)->GetOnlineName(), - ((MSG_IMAPFolderInfoMail *)folder)->GetOnlineHierarchySeparator()); - if (deleteMailboxURL) - { - MSG_UrlQueue *q = MSG_UrlQueue::AddUrlToPane(deleteMailboxURL, NULL, this, NET_SUPER_RELOAD); - XP_ASSERT(q); - if (q) - q->AddInterruptCallback (SafeToSelectInterruptFunction); - - XP_FREE(deleteMailboxURL); - } - else - status = MK_OUT_OF_MEMORY; - } - else - { - XP_ASSERT(FALSE); // should have been caught by command status - status = eUNKNOWN; - } - - - return status; -} - - -MsgERR MSG_FolderPane::DeleteVirtualNewsgroup (MSG_FolderInfo *folder) -{ - MSG_FolderInfoNews *virtualGroup = folder->GetNewsFolderInfo(); - - XP_ASSERT(virtualGroup); - XP_ASSERT(virtualGroup->GetFlags() & MSG_FOLDER_FLAG_PROFILE_GROUP); - - // Can't use BuildUrl because a group name in the URL will open a new window - char *profileUrl = PR_smprintf("%s/dummy?profile/PROFILE DEL %s", - virtualGroup->GetHost()->GetURLBase(), virtualGroup->GetName()); - if (profileUrl) - { - URL_Struct* urlStruct = NET_CreateURLStruct (profileUrl, NET_DONT_RELOAD); - if (urlStruct) - GetURL (urlStruct, FALSE); - XP_FREE(profileUrl); - } - return eSUCCESS; -} - - -void MSG_FolderPane::OnFolderDeleted(MSG_FolderInfo *folder) -{ - // Here we catch the broadcast message that a folder has been deleted. - // In the context of the folder pane, this means we remove the folder - // from the folder view, since that view element has a stale pointer - RemoveFolderFromView (folder); - - // Call our parent in case they need to respond to this notification - // - // I think it makes sense to send the folderDeleted notification even if - // the folder isn't in view. This is different from a list notification - MSG_LinedPane::OnFolderDeleted (folder); -} - - -MsgERR MSG_FolderPane::TrashFolders (const MSG_ViewIndex *indices, int32 numIndices, XP_Bool noTrash /*=FALSE*/) -{ - MSG_FolderArray srcFolders; - MsgERR status = MakeMoveFoldersArray (indices, numIndices, &srcFolders); - if (eSUCCESS == status) - status = TrashFolders (srcFolders, noTrash); - return status; -} - - -MsgERR MSG_FolderPane::TrashFolders (MSG_FolderArray &srcFolders, XP_Bool noTrash /*=FALSE*/) -{ - MSG_FolderInfo *folder = NULL; - MsgERR status = -1; // assume error, because there are so many error paths. - XP_Bool userCancelled = FALSE; - - // If the prefs say not to confirm, pretend the user already has confirmed - XP_Bool trashFoldersConfirmed = !(GetPrefs()->GetConfirmMoveFoldersToTrash()); - - for (int i = 0; (i < srcFolders.GetSize()) && (!userCancelled); i++) - { - folder = srcFolders.GetAt(i); - XP_ASSERT (folder); - int32 flags = folder->GetFlags(); - - if ((flags & MSG_FOLDER_FLAG_NEWS_HOST) || folder->GetType() == FOLDER_IMAPSERVERCONTAINER) - { - MSG_Host* host; - int confirmStrID; - - if (flags & MSG_FOLDER_FLAG_NEWS_HOST) - { - host = ((MSG_NewsFolderInfoContainer*) folder)->GetHost(); - confirmStrID = MK_MSG_REMOVE_HOST_CONFIRM; - } - else - { - host = ((MSG_IMAPFolderInfoContainer*) folder)->GetIMAPHost(); - confirmStrID = MK_MSG_REMOVE_IMAP_HOST_CONFIRM; - } - char* tmp = PR_smprintf(XP_GetString(confirmStrID), host->getFullUIName()); - if (tmp) - { - XP_Bool doit = FE_Confirm(GetContext(), tmp); - XP_FREE(tmp); - // I don't think we need to preflight this - we need to just do it. - if (doit /* && PreflightDeleteFolder(folder) == 0 */) - { - status = host->RemoveHost(); -#if !defined(XP_WIN32) && !defined(XP_WIN16) //bug# 112472 - RedisplayAll(); -#endif - } - } - break; // Only allow one newshost to be deleted at - // a time (since it is a background operation). - } - - - if (folder->GetType() != FOLDER_MAIL && folder->GetType() != FOLDER_IMAPMAIL && !folder->IsNews()) - { - // Shouldn't have been able to get here, because the menu item should have been disabled. Right? - XP_ASSERT(0); - FE_Alert (GetContext(), XP_GetString(MK_MSG_CAN_ONLY_DELETE_MAIL_FOLDERS)); - continue; - } - - if (folder->IsNews()) - { - XP_Bool isVirtualGroup = folder->TestFlag(MSG_FOLDER_FLAG_PROFILE_GROUP); - char *vgPrompt = ""; - if (isVirtualGroup) - vgPrompt = PR_smprintf (XP_GetString(MK_MSG_UNSUBSCRIBE_PROFILE_GROUP), folder->GetName()); - char *unsubPrompt = PR_smprintf (XP_GetString (MK_MSG_UNSUBSCRIBE_GROUP), folder->GetPrettiestName()); - - if (vgPrompt && unsubPrompt) - { - char *wholePrompt = PR_smprintf ("%s%s",vgPrompt, unsubPrompt); - if (wholePrompt) - { - if (!FE_Confirm (GetContext(), wholePrompt)) - { - XP_FREE(wholePrompt); - if (isVirtualGroup) - XP_FREE(vgPrompt); - XP_FREE(unsubPrompt); - continue; - } - else if (isVirtualGroup) - status = DeleteVirtualNewsgroup (folder); - XP_FREE(wholePrompt); - } - else - continue; // out of memory - if (isVirtualGroup) - XP_FREE(vgPrompt); - XP_FREE(unsubPrompt); - } - else - continue; // out of memory - } - - MSG_FolderInfoMail *mailFolder = folder->GetMailFolderInfo(); - if ((mailFolder) && (folder->GetType() == FOLDER_MAIL)) - { - // Find the Trash folder - MSG_FolderInfoMail *tree = m_master->GetLocalMailFolderTree(); - XP_ASSERT(tree); - MSG_FolderInfo *trashFolder = NULL; - tree->GetFoldersWithFlag (MSG_FOLDER_FLAG_TRASH, &trashFolder, 1); - - // If the folder already lives in the Trash, really delete it, - // otherwise move it to the Trash folder. - if (trashFolder != NULL) { - if (noTrash || trashFolder->IsParentOf(mailFolder)) - status = DeleteFolder (mailFolder); - else - { - // first see if the trash has a folder with the same name - XP_Bool needUnique = trashFolder->ContainsChildNamed(mailFolder->GetName()); - const char *uniqueName = NULL; - char *oldName = XP_STRDUP(mailFolder->GetName()); - status = 0; - if (needUnique) - { - // if so, first move the folder to a unique name - MSG_FolderInfo *parentOfCurrent = m_master->GetFolderTree()->FindParentOf (mailFolder); - uniqueName = trashFolder->GenerateUniqueSubfolderName(mailFolder->GetName(), parentOfCurrent); - - if (uniqueName) - status = RenameFolder(mailFolder,uniqueName); - if (!uniqueName || ((int32) status < 0)) - { - // if the unique rename fails, simply alert the user and don't trash it - char *templateString = XP_GetString(MK_MSG_UNIQUE_TRASH_RENAME_FAILED); - char *alertString = NULL; - if (templateString) alertString = PR_smprintf(templateString,mailFolder->GetName()); - if (alertString) FE_Alert(GetContext(),alertString); - FREEIF(alertString); - } - - } - // move it to the trash. - if ((int32) status >= 0) - { - MSG_FolderArray tempArray; - tempArray.Add (folder); - if (!trashFoldersConfirmed) - { - if (FE_Confirm (GetContext(), XP_GetString(MK_MSG_CONFIRM_MOVE_FOLDER_TO_TRASH))) - status = MoveFolders (tempArray, trashFolder); - else - userCancelled = TRUE; - - trashFoldersConfirmed = TRUE; - } - else - status = MoveFolders (tempArray, trashFolder); - } - if (needUnique && (status == 0)) - { - char *templateString = XP_GetString(MK_MSG_NEEDED_UNIQUE_TRASH_NAME); - char *alertString = NULL; - if (templateString) alertString = PR_smprintf(templateString,oldName,uniqueName); - if (alertString) FE_Alert(GetContext(),alertString); - FREEIF(alertString); - } - FREEIF(oldName); - } - } - else - FE_Alert(GetContext(),"Could not locate Trash folder!"); - } - else if ((mailFolder) && (folder->GetType() == FOLDER_IMAPMAIL) && !folder->DeleteIsMoveToTrash()) - { - status = DeleteFolder (mailFolder); - } - else if ((mailFolder) && (folder->GetType() == FOLDER_IMAPMAIL)) - { - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - // Find the IMAP Trash folder - MSG_FolderInfo *trashFolder = MSG_GetTrashFolderForHost(imapFolder->GetIMAPHost()); - - // If the folder already lives in the Trash, really delete it, - // otherwise move it to the Trash folder. - if (trashFolder != NULL) { - if (noTrash || trashFolder->IsParentOf(mailFolder)) - status = DeleteFolder (mailFolder); - else if (trashFolder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOINFERIORS) - { - if (FE_Confirm(GetContext(), XP_GetString(MK_MSG_TRASH_NO_INFERIORS)) ) - status = DeleteFolder (mailFolder); - } - else - { - // first see if the trash has a folder with the same name - XP_Bool needUnique = trashFolder->ContainsChildNamed(mailFolder->GetName()); - if (needUnique) - { - // if the unique rename fails, simply alert the user and don't trash it - char *templateString = XP_GetString(MK_MSG_UNIQUE_TRASH_RENAME_FAILED); - char *alertString = NULL; - if (templateString) alertString = PR_smprintf(templateString,mailFolder->GetName()); - if (alertString) FE_Alert(GetContext(),alertString); - FREEIF(alertString); - } - else - { - // With the three pane UI, it's sometimes hard to tell which pane has focus, and - // sometimes users can delete a folder when they think they're deleting a message. - MSG_FolderArray tempArray; - tempArray.Add (folder); - if (!trashFoldersConfirmed) - { - if (FE_Confirm (GetContext(), XP_GetString(MK_MSG_CONFIRM_MOVE_FOLDER_TO_TRASH))) - status = MoveFolders (tempArray, trashFolder); - else - userCancelled = TRUE; - trashFoldersConfirmed = TRUE; // only ask once - } - else - status = MoveFolders (tempArray, trashFolder); - } - } - } - else FE_Alert(GetContext(),"Could not locate Trash folder!"); - } - else if (folder->IsNews()) - { - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - if (newsFolder) - { - newsFolder->GetHost()->RemoveGroup (newsFolder); - status = 0; // lovely remove group is void - } - } - else - { - XP_ASSERT(FALSE); - continue; - } - } - - // Must add this URL after all the IMAP delete URLs (if any) to tell the FE when - // it's safe to select a folder (which runs a URL which might interrupt the delete) - MSG_UrlQueue::AddUrlToPane ("mailbox:?null", SafeToSelectExitFunction, this); - - return status; -} - - -/*static*/ void MSG_FolderPane::RuleTrackCB (void *cookie, XPPtrArray& rules, - XPDWordArray &actions, XP_Bool isDelete) -{ - MWContext *context = ((MSG_FolderPane*) cookie)->GetContext(); - MSG_RuleTrackAction action = dontChange; - - // Ask once what the user wants to do. Asking for every rule is pretty annoying - if (!isDelete) - { - if (FE_Confirm (context, XP_GetString(MK_MSG_TRACK_FOLDER_MOVE))) - action = trackChange; - else - action = dontChange; - } - else - { - if (FE_Confirm (context, XP_GetString(MK_MSG_TRACK_FOLDER_DEL))) - action = disableRule; - else - action = dontChange; - } - - // Set the user's choice into the array to apply to each affected rule - for (int i = 0; i < rules.GetSize(); i++) - actions.SetAtGrow (i, action); -} - - -MsgERR MSG_FolderPane::MakeMoveFoldersArray (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderArray *outArray) -{ - // When we move a group of folders, constrain the list of source folders - // such that we don't try to move a folder whose parent is also in the - // list. This allows us to preserve hierarchy as much as possible, and also - // to reduce the number of errors we need to handle (e.g. uh-oh, this - // folder's gone; I wonder if I moved it already) - - // First, put 'em all in a temporary list - int i; - MSG_FolderArray tmpArray; - for (i = 0; i < numIndices; i++) - tmpArray.Add(GetFolderInfo(indices[i])); - - // Now sort the list to get the shallowest folders first. Doing this - // assures that one pass through the folders will catch all the - // parent-child relationships. - tmpArray.QuickSort (MSG_FolderInfo::CompareFolderDepth); - - // Add elements to the array if they aren't a child of another array element - for (i = 0; i < tmpArray.GetSize(); i++) - { - MSG_FolderInfo *folder = tmpArray.GetAt(i); - XP_Bool alreadyHaveParent = FALSE; - - for (int j = 0; j < outArray->GetSize(); j++) - { - alreadyHaveParent = outArray->GetAt(j)->IsParentOf(folder); - if (alreadyHaveParent) - break; - } - - if (!alreadyHaveParent) - outArray->Add(folder); - } - - return eSUCCESS; -} - - -int MSG_FolderPane::PreflightMoveFolder (MSG_FolderInfo *srcFolder, MSG_FolderInfo *srcParent, MSG_FolderInfo *destFolder) -{ - // can't move categories around. -// if (srcFolder->IsCategory() && srcFolder->GetType() != FOLDER_CATEGORYCONTAINER) -// return -1; - - if (srcParent == destFolder || srcFolder == destFolder) - { - // Moving folder into same hierarchy level it's already in -- do nothing. - return -1; - } - // can't move catgories, but can move category containers - if (srcFolder->GetNewsFolderInfo() && srcFolder->GetNewsFolderInfo()->IsCategory() && srcFolder->GetType() != FOLDER_CATEGORYCONTAINER) - { - return -1; - } - // can't drop onto categories. - if (destFolder->GetNewsFolderInfo() && destFolder->GetNewsFolderInfo()->IsCategory()) - return -1; - - if (srcFolder->GetFlags() & MSG_FOLDER_FLAG_NEWS_HOST) - { - if (destFolder->TestFlag (MSG_FOLDER_FLAG_TRASH)) - return 0; // dragging news host to trash ==> remove host - return -1; // can't move news hosts currently - } - else if (srcFolder->GetType() == FOLDER_IMAPSERVERCONTAINER) - { - // we were not catching this because the srcFolder and destFolder were of different types - return (destFolder->GetType() == FOLDER_IMAPSERVERCONTAINER) ? 0 : -1; - } - else if (destFolder->GetType() != srcFolder->GetType()) - { - // Allow unsubscribe via move to Trash - if (srcFolder->IsNews() && destFolder->GetFlags() & MSG_FOLDER_FLAG_TRASH) - return 0; - - if (srcFolder->IsMail()) - { - if (destFolder->IsNews() || destFolder->GetType() == FOLDER_CONTAINERONLY) - return MK_MSG_NO_MAIL_TO_NEWS; - else - return 0; - } - else if (destFolder->IsMail()) - { - if (srcFolder->IsNews() || srcFolder->GetType() == FOLDER_CONTAINERONLY) - return MK_MSG_NO_NEWS_TO_MAIL; - else - return 0; - } - else if (destFolder->GetType() == FOLDER_IMAPSERVERCONTAINER) - { - if (srcFolder->IsNews() || srcFolder->GetType() == FOLDER_CONTAINERONLY) - return MK_MSG_NO_NEWS_TO_MAIL; - } - - } - else if (destFolder->IsNews()) - { - if (srcFolder->IsNews()) - { - MSG_FolderInfoNews *srcGroup = srcFolder->GetNewsFolderInfo(); - MSG_FolderInfoNews *destGroup = destFolder->GetNewsFolderInfo(); - // Newsgroups can only be reordered if they live on the same host - if (srcGroup->GetHost() != destGroup->GetHost()) - return -1; - } - else - return 0; - } - - // Don't allow a folder to be moved into one of its own children - if (srcFolder->IsParentOf (destFolder)) - return MK_MSG_CANT_MOVE_FOLDER_TO_CHILD; - - // don't allow a destFolder where the MSG_FOLDER_PREF_IMAPNOINFERIORS pref flag is set - if (destFolder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOINFERIORS) - return MK_MSG_MOVE_TARGET_NO_INFERIORS; - - - // Don't allow the user to move their imap inbox - uint32 flags = srcFolder->GetFlags(); - if ( (flags & MSG_FOLDER_FLAG_INBOX) && (flags & MSG_FOLDER_FLAG_IMAPBOX) ) - return MK_MSG_CANT_MOVE_INBOX; - - return 0; -} - -int MSG_FolderPane::PreflightMoveFolderWithUI (MSG_FolderInfo *srcFolder, MSG_FolderInfo *srcParent, MSG_FolderInfo *destFolder) -{ - int err = PreflightMoveFolder (srcFolder, srcParent, destFolder); - if (0 == err) - { - // Since these folders are special based on their name and location, - // changing the location makes them not special. Make sure the user - // really wants to do this. - if (srcFolder->GetDepth() == 2) - { - int32 flags = srcFolder->GetFlags(); - if (flags & MSG_FOLDER_FLAG_INBOX || flags & MSG_FOLDER_FLAG_DRAFTS || - flags & MSG_FOLDER_FLAG_QUEUE || flags & MSG_FOLDER_FLAG_TRASH || - flags & MSG_FOLDER_FLAG_TEMPLATES) - { - char *prompt = PR_smprintf (XP_GetString(MK_MSG_CONFIRM_MOVE_MAGIC_FOLDER), - srcFolder->GetName(), srcFolder->GetName()); - if (prompt) - { - XP_Bool allowMove = FE_Confirm(GetContext(), prompt); - XP_FREE(prompt); - if (!allowMove) - err = -1; - } - else - err = MK_OUT_OF_MEMORY; - } - } - } - else - { - if (err != -1) // -1 is a generic failure -- no specific error string - FE_Alert (GetContext(), XP_GetString (err)); - } - - return err; -} - - -XP_Bool MSG_FolderPane::OneFolderInArrayIsIMAP(MSG_FolderArray &theFolders) -{ - for (int32 i = 0; i < theFolders.GetSize(); i++) - { - MSG_FolderInfo *srcFolder = theFolders.GetAt(i); - if (srcFolder->GetType() == FOLDER_IMAPMAIL) - return TRUE; - } - - return FALSE; -} - - -MSG_DragEffect MSG_FolderPane::DragFoldersStatus ( - const MSG_ViewIndex *indices, int32 numIndices, - MSG_FolderInfo *destFolder, MSG_DragEffect request) -{ - if ((request & MSG_Require_Move) != MSG_Require_Move) - return MSG_Drag_Not_Allowed; - - // IMAP ACLs - check destination folder - MSG_IMAPFolderInfoMail *imapFolder = destFolder->GetIMAPFolderInfoMail(); - if (imapFolder) - { - if (!imapFolder->GetCanDropFolderIntoThisFolder()) - return MSG_Drag_Not_Allowed; - } - - for (int i = 0; i < numIndices; i++) - { - MSG_FolderInfo *src = GetFolderInfo (indices[i]); - MSG_FolderInfo *srcParent = GetMaster()->GetFolderTree()->FindParentOf (src); - if (0 != PreflightMoveFolder (src, srcParent, destFolder)) - return MSG_Drag_Not_Allowed; - } - return MSG_Require_Move; -} - - -MsgERR MSG_FolderPane::MoveFolders (const MSG_ViewIndex *indices, int32 numIndices, MSG_FolderInfo *dest, XP_Bool needExitFunc /*= FALSE*/) -{ - MSG_FolderArray srcFolders; - MsgERR status = MakeMoveFoldersArray (indices, numIndices, &srcFolders); - if (eSUCCESS == status) - status = MoveFolders (srcFolders, dest, needExitFunc); - return status; -} - - -MsgERR MSG_FolderPane::MoveFolders (MSG_FolderArray &srcFolders, MSG_FolderInfo *destFolder, XP_Bool needExitFunc /* = FALSE*/) -{ - MsgERR err = 0; - - for (int32 i = 0; i < srcFolders.GetSize(); i++) - { - MSG_FolderInfo *srcFolder = srcFolders.GetAt(i); - MSG_FolderInfo *srcParent = GetMaster()->GetFolderTree()->FindParentOf (srcFolder); - - if (0 == PreflightMoveFolderWithUI (srcFolder, srcParent, destFolder)) - { - // Deleting a newsgroup and dragging it to the trash are synonymous - if ((srcFolder->IsNews() || srcFolder->GetType() == FOLDER_CONTAINERONLY) && destFolder->GetFlags() & MSG_FOLDER_FLAG_TRASH) - { - MSG_ViewIndex srcIdx = m_folderView.FindIndex (0, srcFolder); - if (srcIdx != MSG_VIEWINDEXNONE) - err = TrashFolders (&srcIdx, 1); - } - else - { - - // If we're moving into an IMAP folder, start the URL here - if ( ((destFolder->GetType() == FOLDER_IMAPMAIL) || (destFolder == GetMaster()->GetImapMailFolderTree())) && - (srcFolder->GetType() == FOLDER_IMAPMAIL) ) - { - const char *destinationName = ""; // covers promote to root - char destinationHierarchySeparator = 0; // covers promote to root - if (destFolder->GetType() == FOLDER_IMAPMAIL) - { - destinationName = ((MSG_IMAPFolderInfoMail *)destFolder)->GetOnlineName(); - destinationHierarchySeparator = ((MSG_IMAPFolderInfoMail *)destFolder)->GetOnlineHierarchySeparator(); - } - - // the rename on the server has to happen first imap.h - char *renameMailboxURL = CreateImapMailboxMoveFolderHierarchyUrl - (((MSG_IMAPFolderInfoMail *) srcFolder)->GetHostName(), - ((MSG_IMAPFolderInfoMail *) srcFolder)->GetOnlineName(), - ((MSG_IMAPFolderInfoMail *) srcFolder)->GetOnlineHierarchySeparator(), - destinationName,destinationHierarchySeparator); - if (renameMailboxURL) - { - MSG_UrlQueue *q = MSG_UrlQueue::AddUrlToPane(renameMailboxURL, NULL, this, NET_SUPER_RELOAD); - XP_ASSERT(q); - if (q) - q->AddInterruptCallback (SafeToSelectInterruptFunction); - - XP_FREE(renameMailboxURL); - } - } - else if (srcFolder->GetType() != destFolder->GetType() && srcFolder->IsMail() && (destFolder->IsMail() || destFolder->GetType() == FOLDER_IMAPSERVERCONTAINER)) - { - // this must be a move on/offline of a mail folder - m_RemoteCopyState = new MSG_RemoteFolderCopyState(srcFolder, destFolder, this); - if (m_RemoteCopyState) - { - err = m_RemoteCopyState->DoNextAction(); - if (err) - { - delete m_RemoteCopyState; - m_RemoteCopyState = NULL; - } - } - } - else - { - // moving local folders around - err = PerformLegalFolderMove(srcFolder, destFolder); // stop on error? - } - } - } - } - - if (needExitFunc) - { - // Must add this URL after all the IMAP delete URLs (if any) to tell the FE when - // it's safe to select a folder (which runs a URL which might interrupt the delete) - MSG_UrlQueue::AddUrlToPane ("mailbox:?null", SafeToSelectExitFunction, this); - } - - return err; -} - - -MsgERR MSG_FolderPane::PerformLegalFolderMove(MSG_FolderInfo *srcFolder, MSG_FolderInfo *newParent) -{ - MsgERR err = 0; - int32 movedPos = 0; - MSG_FolderInfo *originalParent = GetMaster()->GetFolderTree()->FindParentOf (srcFolder); - XP_ASSERT(originalParent); - - // Rule changes get written when 'tracker' gets destructed - MSG_RuleTracker tracker (GetMaster(), RuleTrackCB, this); - tracker.WatchMoveFolders(&srcFolder, 1); - if (originalParent) - { - originalParent->RemoveSubFolder (srcFolder); - // If the srcFolder is an IMAP folder then reset its stored online name - // This has to happen after MSG_RuleTracker decides if srcFolder was - // a filter target and before MSG_RuleTracker gets destructed and writes - // the new filter move destination. - // Special case newParent being the imap container - if (srcFolder->GetType() == FOLDER_IMAPMAIL) - { - MSG_IMAPFolderInfoMail *srcImapFolder = (MSG_IMAPFolderInfoMail *) srcFolder; - MSG_IMAPHost *srcHost = srcImapFolder->GetIMAPHost(); - XP_ASSERT(srcHost); - if (newParent->GetType() == FOLDER_IMAPMAIL) - srcImapFolder->ParentRenamed( ((MSG_IMAPFolderInfoMail *) newParent)->GetOnlineName()); - else if (newParent->GetType() == FOLDER_IMAPSERVERCONTAINER) - srcImapFolder->ParentRenamed(srcHost->GetRootNamespacePrefix()); - else - XP_ASSERT(FALSE); // should be impossible - } - - // Move items around in the folder pane to reflect the new ancestry - // since either the source or the destination might be expanded. - -// MSG_FolderPane *eachPane; -// for (eachPane = (MSG_FolderPane *) m_master->FindFirstPaneOfType(MSG_FOLDERPANE); eachPane; -// eachPane = (MSG_FolderPane *) m_master->FindNextPaneOfType(eachPane->GetNextPane(), MSG_FOLDERPANE)) -// { -// eachPane->UpdateFolderPaneAfterFolderMove(srcFolder, originalParent, newParent, movedPos); -// } - // Begin Undo hook - // **** use StartBatch, EndBatch when moving multiple folders enabled - UndoManager *undoManager = GetUndoManager(); - - if (undoManager && undoManager->GetState () == UndoIdle) - { - MoveFolderUndoAction *undoAction = - new MoveFolderUndoAction(this, originalParent, srcFolder, newParent); - - if (undoAction) - undoManager->AddUndoAction(undoAction); - } - // End Undo hook - } - if (err == eSUCCESS) - { - // Mail folder and summary get moved here, unless moving imap server - m_master->BroadcastFolderDeleted(srcFolder); - if (srcFolder->GetType() != FOLDER_IMAPSERVERCONTAINER) - { - err = newParent->Adopt (srcFolder, &movedPos); - } - else - { - movedPos = originalParent->GetSubFolders()->FindIndex (0, newParent); - if (newParent->GetIMAPFolderInfoContainer()) - { - MSG_IMAPHostTable *imapHostTable = m_master->GetIMAPHostTable(); - if (imapHostTable) - imapHostTable->ReorderIMAPHost(srcFolder->GetIMAPFolderInfoContainer()->GetIMAPHost(), newParent->GetIMAPFolderInfoContainer()->GetIMAPHost()); - // put the src folder after the drop target. - originalParent->GetSubFolders()->InsertAt(movedPos + 1, srcFolder); - } - else - XP_ASSERT(FALSE); - } - m_master->BroadcastFolderAdded(srcFolder, NULL); - } - else - { - char *errorString = XP_GetString (err); - if (errorString && *errorString) - FE_Alert (GetContext(), errorString); - } - return err; -} - -// Undo helper function -MsgERR MSG_FolderPane::UndoMoveFolder (MSG_FolderInfo *srcParent, - MSG_FolderInfo *srcFolder, - MSG_FolderInfo *destFolder) -{ - MSG_ViewIndex viewIndex; - MsgERR err = eUNKNOWN; - int32 movedPos = 0; - { - // Don't remove the enclosing bracket.... - MSG_RuleTracker tracker (GetMaster(), RuleTrackCB, this); - tracker.WatchMoveFolders(&srcFolder, 1); - - // Mail folder and summary get moved here - err = destFolder->Adopt (srcFolder, &movedPos); - - // Rule changes get written when 'tracker' gets destructed - } - - if (eSUCCESS == err) - { - viewIndex = GetFolderIndex (srcFolder); - // Move items around in the folder pane to reflect the new ancestry - // since either the source or the destination might be expanded. - - MSG_FolderArray itemsToMove; - GetExpansionArray(srcFolder, itemsToMove); // add the expanded children - itemsToMove.InsertAt(0, srcFolder); // we will want to move the item itself. - - // Remove srcFolder and any open children of srcFolder - int32 countVector = 0 - itemsToMove.GetSize(); - if (MSG_VIEWINDEXNONE != viewIndex) { - StartingUpdate (MSG_NotifyInsertOrDelete, viewIndex, countVector); - m_folderView.RemoveAt (viewIndex, &itemsToMove); - m_flagsArray.RemoveAt(viewIndex, itemsToMove.GetSize()); - } - srcParent->RemoveSubFolder (srcFolder); - if (MSG_VIEWINDEXNONE != viewIndex) - EndingUpdate (MSG_NotifyInsertOrDelete, viewIndex, countVector); - - // If we've just moved out the only child of this parent, tell the FE that - // the state of the parent has changed so they redraw the expand/collapse widget - if (srcParent && srcParent->GetNumSubFolders() == 0) - { - int srcParentIdx = m_folderView.FindIndex (0, srcParent); - if (srcParentIdx != -1) - { - StartingUpdate (MSG_NotifyChanged, srcParentIdx, 1); - EndingUpdate (MSG_NotifyChanged, srcParentIdx, 1); - } - } - - // Add srcFolder and its children to the new parent if the parent is expanded - uint32 destFlags = destFolder->GetFlags(); - int32 destFolderIdx = m_folderView.FindIndex (0, destFolder); - XP_Bool destElided = m_flagsArray.GetAt(destFolderIdx) & MSG_FOLDER_FLAG_ELIDED; - if ((destFlags & MSG_FOLDER_FLAG_DIRECTORY) && !destElided) - { - XP_ASSERT (destFolderIdx >= 0); - AddFoldersToView (itemsToMove, destFolder, movedPos); - } - - // If we've just added the first child of the destination, tell the FE to - // redraw the dest folder line to get a new expand/collapse widget - if (destFolder->GetNumSubFolders() == 1 && destFolderIdx != -1) - { - StartingUpdate (MSG_NotifyChanged, destFolderIdx, 1); - EndingUpdate (MSG_NotifyChanged, destFolderIdx, 1); - } - } - return err; -} - - -MsgERR MSG_FolderPane::RenameOnlineFolder (MSG_FolderInfo *folder, const char *newName) -{ - char *renameMailboxURL = CreateImapMailboxRenameLeafUrl(((MSG_IMAPFolderInfoMail *)folder)->GetHostName(), - ((MSG_IMAPFolderInfoMail *)folder)->GetOnlineName(), - ((MSG_IMAPFolderInfoMail *)folder)->GetOnlineHierarchySeparator(), - newName); // name is assumed to be leafname - // and doesn't affect hierarchy - if (renameMailboxURL) - { - MSG_UrlQueue::AddUrlToPane (renameMailboxURL, NULL, this, NET_SUPER_RELOAD); - XP_FREE(renameMailboxURL); - } - - return eSUCCESS; -} - - -MsgERR MSG_FolderPane::RenameOfflineFolder (MSG_FolderInfo *folder, const char *newName) -{ - // Begin Undo hook - UndoManager *undoManager = GetUndoManager(); - if (undoManager && undoManager->GetState() == UndoIdle) - { - UndoAction *undoAction = NULL; - - if (folder->GetType() == FOLDER_MAIL) { - undoAction = new RenameFolderUndoAction(this, folder, folder->GetName(), newName); - } - else if (folder->GetType() == FOLDER_IMAPMAIL) { - undoAction = new IMAPRenameFolderUndoAction(this, folder, - folder->GetName(), newName); // name is assumed to be leafname - } - - if (undoAction) - undoManager->AddUndoAction (undoAction); - } - // End Undo hook - MsgERR returnErr = eFAILURE; - MSG_RuleTracker tracker (GetMaster(), RuleTrackCB, this); - tracker.WatchMoveFolders(&folder, 1); - - // I moved the StartingUpdate/EndingUpdate code here - // because I call this function when I am notified that - // the imap netlib module has renamed a folder - // (i.e. the end of an asynch operation - km - returnErr = folder->Rename (newName); - if (returnErr == 0) - // Force UI to update and for various lists to resort. - RedisplayAll(); - - return returnErr; -} - - -char *MSG_FolderPane::GetValidNewFolderName (MSG_FolderInfo *parent, int captionId, MSG_FolderInfo *folder) -{ - // Loop until we get a unique name, or else the user clicks cancel - char *name = NULL; - XP_Bool validName = FALSE; - while (!validName) - { - name = FE_PromptWithCaption (GetContext(), XP_GetString(captionId), XP_GetString(MK_MSG_ENTER_FOLDERNAME), folder->GetPrettiestName()); - if (name) - { - if (parent->ContainsChildNamed(name)) - { - FE_Alert (GetContext(), XP_GetString(MK_MSG_FOLDER_ALREADY_EXISTS)); - XP_FREE(name); - } - else - validName = TRUE; - } - else - validName = TRUE; - } - return name; -} - - -MsgERR MSG_FolderPane::PreflightRename(MSG_FolderInfo *folder, int depth) -{ - MSG_FolderArray *subFolders = folder->GetSubFolders(); - for (int i = 0; i < subFolders->GetSize(); i++) - { - MsgERR err = PreflightRename (subFolders->GetAt(i), depth + 1); - if (err) - return err; - } - - if (depth > 0) // only need to check children - we handle the top-level case - { - // Prevent the user from really deleting any folder which has a thread pane open - XPPtrArray panes; - GetMaster()->FindPanesReferringToFolder (folder, &panes); - if (panes.GetSize() > 0) - { - char *prompt = PR_smprintf (XP_GetString (MK_MSG_PANES_OPEN_ON_FOLDER), folder->GetName()); - if (prompt) - { - FE_Alert (GetContext(), prompt); - XP_FREE(prompt); - } - return (MsgERR) -1; - } - } - return eSUCCESS; -} - -MsgERR MSG_FolderPane::RenameFolder(MSG_FolderInfo *folder, const char *newName) -{ - MsgERR status = 0; - char *name = NULL; - XP_Bool mustFreeName = FALSE; - - XP_ASSERT(folder); - if (!folder) - return eUNKNOWN; - - // if this folder has sub-folders, preflight the rename - XPPtrArray *subFolders = folder->GetSubFolders(); - if (subFolders && subFolders->GetSize() > 0) - { - MsgERR err = PreflightRename(folder, 0); - if (err != eSUCCESS) - return err; - } - // If we didn't get a new name on input, ask for one from the user - if (!newName) - { - name = GetValidNewFolderName (GetMaster()->GetFolderTree()->FindParentOf(folder), MK_MSG_RENAME_FOLDER_CAPTION, folder); - mustFreeName = TRUE; - } - else - { - name = (char*) newName; - MSG_FolderInfo *parent = GetMaster()->GetFolderTree()->FindParentOf(folder); - if (parent && parent->ContainsChildNamed(name)) - { - // we don't want to free it, since we didn't dup it. - name = NULL; - status = eFAILURE; - } - else if (XP_FileNameContainsBadChars(name)) - { - name = NULL; - status = eFAILURE; - } - } - - if (name && (XP_STRLEN(name) > 0) && XP_STRCMP(folder->GetName(), name)) // don't do anything unless names are different - { - if (folder->GetType() == FOLDER_MAIL) - status = RenameOfflineFolder (folder, name); - else if (folder->GetType() == FOLDER_IMAPMAIL) - RenameOnlineFolder (folder, name); - else - { - XP_ASSERT(FALSE); // should have been caught by command status - status = eUNKNOWN; - } - if (mustFreeName) - XP_FREE(name); - } - - - return status; -} - -void MSG_FolderPane::GetExpansionArray(MSG_FolderInfo *folder, MSG_FolderArray &array) -{ - MSG_FolderArray *subFolders = folder->GetSubFolders(); - for (int i = 0; i < subFolders->GetSize(); i++) - { - MSG_FolderInfo *subFolder = subFolders->GetAt(i); - if (subFolder->CanBeInFolderPane()) - { - array.InsertAt(array.GetSize(), subFolder); - // now, this is not right, unless we're expanding...We can look for this in - // the view. - MSG_ViewIndex subFolderIndex = GetFolderIndex(subFolder); - int32 flags = (subFolderIndex == MSG_VIEWINDEXNONE) ? subFolder->GetFlags() : m_flagsArray.GetAt(subFolderIndex); - if (!(flags & MSG_FOLDER_FLAG_ELIDED)) - GetExpansionArray(subFolder, array); - } - } -} - -void MSG_FolderPane::OnToggleExpansion(MSG_FolderInfo* toggledinfo, - MSG_ViewIndex line, int32 countVector) -{ - if (countVector == 0) return; // Can this actually happen? - // this is pretty horrible, but somewhere we need to update counts on - // expanded folder. - if (countVector > 0) { - ScanFolder(); - MSG_FolderInfoNews* newsinfo = - (MSG_FolderInfoNews*) GetFolderInfo(line); - if (newsinfo && newsinfo->IsNews()) { - // OK, we just opened up a newshost. Go ask that host - // for all the latest counts. - MSG_NewsHost* host = newsinfo->GetHost(); - host->SetEverExpanded(TRUE); - host->SetWantNewTotals(TRUE); - UpdateNewsCounts(host); - } - else if (toggledinfo->GetType() == FOLDER_IMAPMAIL) - { - MSG_IMAPFolderInfoMail *imapInfo = toggledinfo->GetIMAPFolderInfoMail(); - if (imapInfo) - { - XP_Bool usingSubscription = TRUE; - MSG_IMAPHost *imapHost = imapInfo->GetIMAPHost(); - if (imapHost) - { - usingSubscription = imapHost->GetIsHostUsingSubscription(); - } - if (!usingSubscription) - { - // we need to run a child discovery URL, if we're doing LIST instead of LSUB - char *url = CreateImapChildDiscoveryUrl(imapInfo->GetHostName(), - imapInfo->GetOnlineName(), imapInfo->GetOnlineHierarchySeparator()); - if (url) - { - URL_Struct *url_s = NET_CreateURLStruct(url, NET_SUPER_RELOAD); - if (url_s) - { - MSG_UrlQueue::AddUrlToPane(url_s, NULL, this); - } - XP_FREE(url); - } - } - } - } - else if (toggledinfo->GetType() == FOLDER_IMAPSERVERCONTAINER) { - RefreshIMAPHostFolders(toggledinfo, TRUE); - } - } else { - if ((toggledinfo->GetType() == FOLDER_CONTAINERONLY) || - (toggledinfo->GetType() == FOLDER_IMAPMAIL) || - (toggledinfo->GetType() == FOLDER_IMAPSERVERCONTAINER)) { - // OK, we just collapsed a newshost or an imap folder. Stop any background process - // we may have had going (which probably was us getting counts - // or new newsgroups on that newshost). - InterruptContext(FALSE); - } - } -} - - -char *MSG_FolderPane::RefreshIMAPHostFolders(MSG_FolderInfo* hostinfo, XP_Bool runURL) -{ - // Expanding an imap server, update folder list. - // First, clear the verified bits so that we can discover - // folders going away, also. - XPPtrArray *subFolders = hostinfo->GetSubFolders(); - for (int i = 0; i < subFolders->GetSize(); i++) - { - MSG_IMAPFolderInfoMail *childinfo = ((MSG_FolderInfo*)subFolders->GetAt(i))->GetIMAPFolderInfoMail(); - if (childinfo) - { - childinfo->SetHierarchyIsOnlineVerified(FALSE); - } - } - - // Now re-discover the folders - char * url = CreateImapAllMailboxDiscoveryUrl(hostinfo->GetName()); - if (!runURL) - return url; - if (url) - { - URL_Struct *url_struct = NET_CreateURLStruct(url, NET_SUPER_RELOAD); - if (url_struct) - { - MSG_UrlQueue::AddUrlToPane(url_struct, NULL, this); - } - XP_FREE(url); - } - return 0; -} - -void MSG_FolderPane::RefreshUpdatedIMAPHosts() -{ - for (MSG_ViewIndex currentIndex = 0; currentIndex < (MSG_ViewIndex) GetNumLines(); currentIndex++) - { - MSG_FolderInfo *finfo = GetFolderInfo(currentIndex); - if (finfo && finfo->GetType() == FOLDER_IMAPSERVERCONTAINER) - { - MSG_IMAPFolderInfoContainer *imapinfo = (MSG_IMAPFolderInfoContainer *)finfo; - if (imapinfo->GetHostNeedsFolderUpdate()) - { - imapinfo->SetHostNeedsFolderUpdate(FALSE); - char *url = RefreshIMAPHostFolders(imapinfo, FALSE); - if (url) - { - MSG_UrlQueue::AddUrlToPane(url, NULL, this); - XP_FREE(url); - } - } - } - } -} - - -void MSG_FolderPane::ToggleExpansion(MSG_ViewIndex line, int32* numChanged) -{ - // Build the array of what will change - MSG_FolderInfo *folder = GetFolderInfo (line); - MSG_FolderArray array; - - GetExpansionArray(folder, array); - - // Tell the FE to redraw the expand/collapse widget of the parent folder - StartingUpdate (MSG_NotifyChanged, line, 1); - uint8 flag = m_flagsArray.GetAt(line); - if (flag & MSG_FOLDER_FLAG_ELIDED) - flag &= ~MSG_FOLDER_FLAG_ELIDED; - else - flag |= MSG_FOLDER_FLAG_ELIDED; - m_flagsArray.SetAt(line, flag); - folder->ToggleFlag (MSG_FOLDER_FLAG_ELIDED); - EndingUpdate (MSG_NotifyChanged, line, 1); - - // Update the folder pane's array of what's visible - line++; // all the interesting stuff happens *after* the sel line - - // Compute how many lines to tell the FE about, and in which direction. - // Negative direction if the folder was just collapsed. - int32 countVector = array.GetSize(); - if (flag & MSG_FOLDER_FLAG_ELIDED) - countVector = 0 - countVector; - - StartingUpdate (MSG_NotifyInsertOrDelete, line, countVector); - if (flag & MSG_FOLDER_FLAG_ELIDED) - { - m_folderView.RemoveAt (line, &array); - m_flagsArray.RemoveAt(line, array.GetSize()); - } - else - { - m_folderView.InsertAt (line, &array); - InsertFlagsArrayAt(line, array); - } - EndingUpdate (MSG_NotifyInsertOrDelete, line, countVector); - - OnToggleExpansion(folder, line, countVector); - - if (numChanged) - *numChanged = countVector; -} - -int32 MSG_FolderPane::ExpansionDelta(MSG_ViewIndex line) -{ - // Build the array of what will change - MSG_FolderInfo *folder = GetFolderInfo (line); - MSG_FolderArray array; - GetExpansionArray(folder, array); - - // If the selected item is collapsed, we will be adding to the view, so - // the delta is a positive number. If the sel item is expanded, we will - // be shrinking the view, so the expansionDelta should be negative - int32 vector = array.GetSize(); - return m_flagsArray.GetAt(line) & MSG_FOLDER_FLAG_ELIDED ? vector : -vector; -} - - -int32 MSG_FolderPane::GetNumLines() -{ - return m_folderView.GetSize(); -} - -MsgERR MSG_FolderPane::UpdateMessageCounts(MSG_ViewIndex *indices, int32 numIndices) -{ - MSG_NewsHost *host = NULL; - for (MSG_ViewIndex index = 0; index < numIndices; index++) - { - MSG_FolderInfo* folderInfo = GetFolderInfo(indices[index]); - if (folderInfo) - { - if (folderInfo->GetType() == FOLDER_CONTAINERONLY) - { - MSG_FolderInfoContainer *newsContainer = (MSG_FolderInfoContainer *) folderInfo; - host = newsContainer->GetHost(); - if (host) - { - host->SetWantNewTotals(TRUE); - break; - } - } - MSG_FolderInfoNews *newsFolder = folderInfo->GetNewsFolderInfo(); - if (newsFolder) - { - newsFolder->SetWantNewTotals(TRUE); - host = newsFolder->GetHost(); - } - // queue up an imap status url to update the counts. Could make this a method on - // the imapfolderinfomail, but we'd need to pass in a pane. - MSG_IMAPFolderInfoMail *imapFolder = folderInfo->GetIMAPFolderInfoMail(); - if (imapFolder) - { - char *url = CreateIMAPStatusFolderURL(imapFolder->GetHostName(), imapFolder->GetOnlineName(), imapFolder->GetOnlineHierarchySeparator()); - if (url) - { - MSG_UrlQueue::AddUrlToPane(url, NULL, this); - XP_FREE(url); - } - } - } - } - if (host) - UpdateNewsCounts(host); - return eSUCCESS; -} - -/*static*/ void MSG_FolderPane::SafeToSelectInterruptFunction (MSG_UrlQueue * /*queue*/, URL_Struct *URL_s, int status, MWContext *context) -{ - // This is the interrupt function for the URL queue we use for IMAP move/delete folder URLs - // If the user interrupts such a URL, we need to tell the FE it's ok to select the folder - // so we don't get caught holding the "not ok to select folder" state forever. - SafeToSelectExitFunction (URL_s, status, context); -} - -/*static*/ void MSG_FolderPane::SafeToSelectExitFunction (URL_Struct *URL_s, int /*status*/, MWContext* /*context*/) -{ - XP_ASSERT(URL_s->msg_pane); - if (URL_s->msg_pane) - { - // Tell the FE that we're done, and they can run another URL if they want. - // - // NB: If you add IMAP code which uses this callback to avoid getting interrupted, make - // sure that the local folder code also sends the same notification, so the operation looks - // the same to the FE whether it's IMAP or local. - FE_PaneChanged (URL_s->msg_pane, FALSE, MSG_PaneNotifySafeToSelectFolder, 0); - } - -} - -MsgERR MSG_FolderPane::CompressFolder(MSG_ViewIndex *indices, int32 numIndices) -{ - MsgERR status = eSUCCESS; - - for (int i = 0; i < numIndices; i++) - { - MSG_FolderInfoMail *folder = NULL; - - folder = (MSG_FolderInfoMail*) GetFolderInfo (indices[i]); - XP_ASSERT (folder); - - status = CompressOneMailFolder(folder); - } - return status; -} - - -MsgERR MSG_FolderPane::AddNewsGroup() -{ - // ###tw Write me! - - // This is just a place holder for alpha news... ###tw - char *groupURL = FE_Prompt(GetContext(), XP_GetString(XP_NEWS_PROMPT_ADD_NEWSGROUP), ""); - if (!groupURL) return 0; /* User cancelled. */ - - MSG_FolderInfo *newsFolder = m_master->AddNewsGroup(groupURL); - - return newsFolder ? 0 : eUNKNOWN; -} - -MsgERR MSG_FolderPane::Undo() -{ - UndoManager *undoManager = GetUndoManager(); - - if (undoManager) - { - UndoStatus status; - - status = undoManager->Undo(); - switch (status) { - case UndoComplete: - case UndoInProgress: - return eSUCCESS; - default: - return eUNKNOWN; - } - } - - return 0; -} - - -MsgERR MSG_FolderPane::Redo() -{ - UndoManager *undoManager = GetUndoManager(); - - if (undoManager) - { - UndoStatus status; - - status = undoManager->Redo(); - switch (status) { - case UndoComplete: - case UndoInProgress: - return eSUCCESS; - default: - return eUNKNOWN; - } - } - - return 0; -} - -MsgERR MSG_FolderPane::MarkAllMessagesRead(MSG_ViewIndex* indices, int32 numIndices) -{ - MSG_FolderInfo *folder; - for (MSG_ViewIndex i = 0; i < numIndices; i++) - { - folder = GetFolderInfo(indices[i]); - if (folder) // do a deep mark read for category containers. - folder->MarkAllRead(GetContext(), folder->GetType() == FOLDER_CATEGORYCONTAINER); - } - return 0; -} - - -XP_Bool MSG_FolderPane::CanUndo() -{ - UndoManager *undoManager = GetUndoManager(); - - if (undoManager) - return undoManager->CanUndo(); - - return FALSE; -} - - -XP_Bool MSG_FolderPane::CanRedo() -{ - UndoManager *undoManager = GetUndoManager(); - - if (undoManager) - return undoManager->CanRedo(); - - return FALSE; -} - - -MsgERR MSG_FolderPane::DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, - int32 numIndices) -{ - MsgERR status = 0; - -# define MSG_ASSERT_MAIL() \ - XP_ASSERT(IndicesAreMail(indices,numIndices)); \ - if (!IndicesAreMail(indices,numIndices)) break -# define MSG_ASSERT_NEWS() \ - XP_ASSERT(IndicesAreNews(indices,numIndices)); \ - if (!IndicesAreNews(indices,numIndices)) break -# define MSG_ASSERT_NOT_NEWS() \ - XP_ASSERT(!IndicesAreNews(indices,numIndices)); \ - if (IndicesAreNews(indices,numIndices)) break -# define MSG_ASSERT_MAIL_OR_NEWS() ; // No other possibilities right now, - // so nothing to assert! - - InterruptContext(FALSE); - - //###tw DisableUpdates(); - - switch (command) { - - /* FILE MENU - ========= - */ - case MSG_GetNewMail: - status = GetNewMail(this, (numIndices) ? GetFolderInfo(indices[0]) : 0); - break; - case MSG_OpenFolder: - MSG_ASSERT_MAIL(); - status = OpenFolder(); - break; - case MSG_NewFolder: - MSG_ASSERT_NOT_NEWS(); // IMAP container ok - status = NewFolderWithUI(indices, numIndices); - break; - case MSG_CompressFolder: - MSG_ASSERT_MAIL(); - status = CompressFolder(indices, numIndices); - break; - case MSG_AddNewsGroup: -// MSG_ASSERT_NEWS(); should just use default news server - status = AddNewsGroup(); - break; - case MSG_UpdateMessageCount: - status = UpdateMessageCounts(indices, numIndices); - break; - case MSG_Print: - XP_ASSERT(0); - status = eUNKNOWN; - break; - case MSG_NewNewsgroup: - { - MSG_FolderInfo *folder = GetFolderInfo(indices[0]); - XP_ASSERT(NewNewsgroupStatus(folder)); - status = NewNewsgroup (folder, FOLDER_CATEGORYCONTAINER == folder->GetType()); - } - break; - - /* EDIT MENU - ========= - */ - case MSG_Undo: - MSG_ASSERT_MAIL_OR_NEWS(); - status = Undo(); - break; - case MSG_Redo: - MSG_ASSERT_MAIL_OR_NEWS(); - status = Redo(); - break; - case MSG_Unsubscribe: - // should be MSG_Delete but winfe is defeating me at the moment - case MSG_DeleteFolder: - case MSG_DeleteNoTrash: - MSG_ASSERT_MAIL_OR_NEWS(); - status = TrashFolders(indices, numIndices, (command == MSG_DeleteNoTrash)); - break; - case MSG_ManageMailAccount: - MSG_ASSERT_MAIL(); - status = ManageMailAccount((numIndices) ? GetFolderInfo(indices[0]) : 0); - break; - case MSG_ModerateNewsgroup: - status = ModerateNewsgroup(GetFolderInfo(indices[0])); - break; - - /* VIEW/SORT MENUS - =============== - */ - - /* MESSAGE MENU - ============ - */ - case MSG_PostNew: - MSG_ASSERT_NEWS(); - status = ComposeNewsMessage(GetFolderInfo (indices[0])); - break; - - /* GO MENU - ======= - */ - case MSG_MarkAllRead: - MSG_ASSERT_MAIL_OR_NEWS(); - status = MarkAllMessagesRead(indices, numIndices); - break; - - /* FOLDER MENU - =========== - */ - case MSG_DoRenameFolder: - MSG_ASSERT_MAIL(); - status = RenameFolder (GetFolderInfo (indices[0])); - break; - - /* OPTIONS MENU - ============ - */ - - case MSG_EmptyTrash: - status = EmptyTrash((numIndices) ? GetFolderInfo(indices[0]) : 0); - break; - default: - status = MSG_LinedPane::DoCommand(command, indices, numIndices); - break; - } - - -# undef MSG_ASSERT_MAIL -# undef MSG_ASSERT_NEWS -# undef MSG_ASSERT_MAIL_OR_NEWS - - //###tw EnableUpdates(); - - return status; -} - - -MsgERR -MSG_FolderPane::GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, - int32 numindices, - XP_Bool *selectable_pP, - MSG_COMMAND_CHECK_STATE *selected_pP, - const char **display_stringP, - XP_Bool *plural_pP) -{ - const char *display_string = 0; - XP_Bool plural_p = FALSE; - XP_Bool selectable_p = TRUE; - XP_Bool selected_p = FALSE; - XP_Bool selected_used_p = FALSE; - XP_Bool selected_newsgroups_p = FALSE; - XP_Bool folder_selected_p; - XP_Bool news_p = IndicesAreNews (indices, numindices); - XP_Bool mail_p = IndicesAreMail (indices, numindices); - - //###phil not if it's a container XP_ASSERT(news_p || mail_p && !(news_p && mail_p)); // Amazing paranoia. - - folder_selected_p = (numindices > 0); - if (news_p && folder_selected_p) - { - selected_newsgroups_p = TRUE; // ###tw Should figure out if anything - // selected is actually a newsgroup. - } - - switch (command) { - - /* FILE MENU - ========= - */ - case MSG_OpenFolder: - display_string = XP_GetString(MK_MSG_OPEN_FOLDER2); - selectable_p = mail_p; - break; - case MSG_NewFolder: - display_string = XP_GetString(MK_MSG_NEW_FOLDER); - selectable_p = numindices == 1 && GetFolderInfo(indices[0])->CanCreateChildren(); - break; - case MSG_CompressFolder: - display_string = XP_GetString(MK_MSG_COMPRESS_FOLDER); - // multiple compresses are done with a url queue - selectable_p = mail_p && folder_selected_p; - break; - case MSG_AddNewsGroup: - display_string = XP_GetString(MK_MSG_ADD_NEWS_GROUP); - // selectable_p = TRUE; /*news_p needs to work for news container.*/; /* ###tw && context->msgframe->data.news.current_host != NULL; */ - selectable_p = GetMaster()->GetHostTable() != NULL; - break; - case MSG_Unsubscribe: - selectable_p = news_p && numindices >= 1; // is last check redundant? - display_string = XP_GetString(MK_MSG_UNSUBSCRIBE); - break; - case MSG_NewNewsgroup: - display_string = XP_GetString(MK_MSG_NEW_NEWSGROUP); - selectable_p = numindices > 0 && NewNewsgroupStatus (GetFolderInfo(indices[0])); - break; - - /* EDIT MENU - ========= - */ - case MSG_Undo: - display_string = XP_GetString(MK_MSG_UNDO); - selectable_p = CanUndo(); - break; - case MSG_Redo: - display_string = XP_GetString(MK_MSG_REDO); - selectable_p = CanRedo(); - break; - case MSG_DeleteFolder: // should be MSG_Delete - { - XP_Bool allSelectionsAreDeletable = TRUE; - for (int i = 0; i < numindices; i++) - { - MSG_FolderInfo *f = m_folderView.GetAt(indices[i]); - if (!f->IsDeletable() || - ((f->GetFlags() & MSG_FOLDER_FLAG_NEWS_HOST) && numindices>1)) - { - allSelectionsAreDeletable = FALSE; - break; - } - } - - display_string = XP_GetString(MK_MSG_DELETE_FOLDER); - selectable_p = folder_selected_p && allSelectionsAreDeletable; - break; - } - - case MSG_ManageMailAccount: - display_string = XP_GetString(MK_MSG_MANAGE_MAIL_ACCOUNT); - selectable_p = mail_p && numindices > 0 && GetFolderInfo(indices[0])->HaveAdminUrl(MSG_AdminServer); - break; - case MSG_ModerateNewsgroup: - display_string = XP_GetString (MK_MSG_MODERATE_NEWSGROUP); - selectable_p = (numindices > 0 && ModerateNewsgroupStatus(GetFolderInfo(indices[0]))); - break; - - case MSG_UpdateMessageCount: - display_string = XP_GetString(MK_MSG_UPDATE_MSG_COUNTS); - selectable_p = news_p || AnyIndicesAreIMAPMail (indices, numindices); - break; - /* VIEW/SORT MENUS - =============== - */ - - /* MESSAGE MENU - ============ - */ - case MSG_PostNew: - display_string = XP_GetString(MK_MSG_NEW_NEWS_MESSAGE); - // we're currently only supporting posting to one newsgroup at a time. - selectable_p = news_p && numindices == 1 && GetFolderInfo(indices[0])->AllowsPosting(); - break; - - /* GO MENU - ======= - */ - case MSG_MarkAllRead: - display_string = XP_GetString(MK_MSG_MARK_ALL_READ); - selectable_p = news_p && folder_selected_p && selected_newsgroups_p; - break; - - /* FOLDER MENU - =========== - */ - case MSG_DoRenameFolder: - display_string = XP_GetString (MK_MSG_RENAME_FOLDER); - selectable_p = mail_p && folder_selected_p && numindices == 1; - if (selectable_p && !GetFolderInfo(indices[0])->CanBeRenamed ()) - selectable_p = FALSE; - break; - - /* OPTIONS MENU - ============ - */ - - default: - return MSG_Pane::GetCommandStatus(command, indices, numindices, - selectable_pP, selected_pP, - display_stringP, plural_pP); - } - - if (selectable_pP) - *selectable_pP = selectable_p; - if (selected_pP) - { - if (selected_used_p) - { - if (selected_p) - *selected_pP = MSG_Checked; - else - *selected_pP = MSG_Unchecked; - } - else - { - *selected_pP = MSG_NotUsed; - } - } - if (display_stringP) - *display_stringP = display_string; - if (plural_pP) - *plural_pP = plural_p; - - return 0; -} - - -XP_Bool MSG_FolderPane::IndicesAreNews (const MSG_ViewIndex *indices, int32 numIndices) -{ - for (int i = 0; i < numIndices; i++) - { - MSG_ViewIndex index = indices[i]; - if (!IsValidIndex(index)) - return FALSE; - MSG_FolderInfo *folder = m_folderView.GetAt (index); - if (!folder->IsNews()) - return FALSE; - } - - return TRUE; -} - - -XP_Bool MSG_FolderPane::IndicesAreMail (const MSG_ViewIndex *indices, int32 numIndices) -{ - for (int i = 0; i < numIndices; i++) - { - MSG_ViewIndex index = indices[i]; - if (!IsValidIndex(index)) - return FALSE; - MSG_FolderInfo *folder = m_folderView.GetAt(index); - if (!folder->IsMail()) - return FALSE; - } - return TRUE; -} - - -XP_Bool MSG_FolderPane::AnyIndicesAreIMAPMail (const MSG_ViewIndex *indices, int32 numIndices) -{ - for (int i = 0; i < numIndices; i++) - { - MSG_ViewIndex index = indices[i]; - if (!IsValidIndex(index)) - continue; - MSG_FolderInfo *folder = m_folderView.GetAt(index); - if (folder->IsMail() && folder->GetType() == FOLDER_IMAPMAIL) - return TRUE; - } - return FALSE; -} - - -MsgERR MSG_FolderPane::CheckForNew(MSG_NewsHost* host) -{ - XP_ASSERT(host); - if (!host) return eUNKNOWN; - m_numNewGroups = 0; - return MSG_Pane::CheckForNew(host); -} - - -void MSG_FolderPane::CheckForNewDone(URL_Struct* url_struct, int status, - MWContext* context) -{ - MSG_NewsHost* host = m_hostCheckingForNew; - XP_ASSERT(host); - if (!host) return; - MSG_Pane::CheckForNewDone(url_struct, status, context); -} - - - -void MSG_FolderPane::UpdateNewsCountsDone(int status) -{ - if (status < 0) return; - // See if we have a newshost opened that we haven't checked for new groups - // on yet. If so, do it. - msg_HostTable* table = m_master->GetHostTable(); - XP_ASSERT(table); - for (int32 i=0 ; i<table->getNumHosts() ; i++) { - MSG_NewsHost* host = table->getHost(i); - XP_ASSERT(host); - if (!host) continue; - if (host->GetEverExpanded() && !host->GetCheckedForNew() && - host->getLastUpdate() > 0) { - host->SetCheckedForNew(TRUE); - CheckForNew(host); - return; - } - } -} - - -MSG_RemoteFolderCopyState::MSG_RemoteFolderCopyState(MSG_FolderInfo *sourceTree, MSG_FolderInfo *destinationTree, MSG_FolderPane *urlPane) -{ - m_sourceTree = sourceTree; - m_destinationTree = destinationTree; - - m_currentSourceNode = m_currentDestinationParent = NULL; - - m_urlPane = urlPane; - m_currentTask = kMakingMailbox; - m_copySourceDB = NULL; -} - -MSG_RemoteFolderCopyState::~MSG_RemoteFolderCopyState() -{ - if (m_copySourceDB) - m_copySourceDB->Close(); -} - -void MSG_RemoteFolderCopyState::SetNextSourceFromParent(MSG_FolderInfo *parent, MSG_FolderInfo *child) -{ - if (parent && !parent->IsParentOf(m_sourceTree)) // prevent looking at the parent of m_sourceTree - { - XPPtrArray *children = parent->GetSubFolders(); - int childIndex = children->FindIndex(0, child); - - if (++childIndex < parent->GetNumSubFolders()) - { - m_currentSourceNode = parent->GetSubFolder(childIndex); - } - else if (parent != m_sourceTree) - { - m_currentDestinationParent = m_destinationTree->FindParentOf(m_currentDestinationParent); - SetNextSourceFromParent(m_sourceTree->FindParentOf(parent), parent); - } - else - m_currentSourceNode = NULL; // we are finished - } - else - m_currentSourceNode = NULL; // we are finished -} - -void MSG_RemoteFolderCopyState::SetNextSourceNode() -{ - if (m_currentSourceNode->HasSubFolders()) - { - // imap mailbox names are stored unescaped - char *unescapedName = XP_STRDUP(m_currentSourceNode->GetName()); - if (unescapedName) - { - m_currentDestinationParent = m_currentDestinationParent->FindChildNamed(NET_UnEscape(unescapedName)); - if (m_currentDestinationParent) - m_currentSourceNode = m_currentSourceNode->GetSubFolder(0); - else - m_currentSourceNode = NULL; // will stop this copy operation - XP_FREE(unescapedName); - } - else - m_currentSourceNode = NULL; // will stop this copy operation - } - else - { - // we have no children, kick up to my parent - //m_currentDestinationParent = m_currentDestinationParent->FindParentOf(m_currentDestinationParent); - SetNextSourceFromParent(m_sourceTree->FindParentOf(m_currentSourceNode), m_currentSourceNode); - } -} - - -MsgERR MSG_RemoteFolderCopyState::MakeCurrentMailbox() -{ - MsgERR returnCode = m_urlPane->GetMaster()->CreateMailFolder(m_urlPane, m_currentDestinationParent, m_currentSourceNode->GetName()); - if ( (returnCode == 0) && (m_sourceTree->GetType() == FOLDER_IMAPMAIL)) - returnCode = DoNextAction(); - - return returnCode; -} - - -/* static */ void MSG_FolderPane::RemoteFolderCopySelectCompleteExitFunction(URL_Struct *URL_s, int /*status*/, MWContext* /*window_id*/) -{ - if (URL_s->msg_pane) - { - MSG_Pane *urlPane = (URL_s->msg_pane->GetParentPane() ? URL_s->msg_pane->GetParentPane() : URL_s->msg_pane); - if (urlPane->GetPaneType() == MSG_FOLDERPANE) - { - MSG_FolderPane *folderPane = (MSG_FolderPane *) urlPane; - if (folderPane->m_RemoteCopyState) - folderPane->m_RemoteCopyState->DoNextAction(); - } - } -} - -MsgERR MSG_RemoteFolderCopyState::DoUpdateCurrentMailbox() -{ - MsgERR returnCode = eSUCCESS; - XP_ASSERT(m_currentSourceNode); - MSG_IMAPFolderInfoMail *srcMailFolder = m_currentSourceNode->GetIMAPFolderInfoMail(); - if (srcMailFolder) - { - srcMailFolder->StartUpdateOfNewlySelectedFolder(m_urlPane, FALSE, NULL, NULL, FALSE, FALSE, - MSG_FolderPane::RemoteFolderCopySelectCompleteExitFunction); - - } - else - { - // must be local folder, no need to select - DoNextAction(); - } - return returnCode; -} - -MsgERR MSG_RemoteFolderCopyState::DoCurrentCopy() -{ - MsgERR returnCode = eFAILURE; - XP_ASSERT(m_currentSourceNode); - - // imap mailbox names are stored unescaped - char *unescapedName = XP_STRDUP(m_currentSourceNode->GetName()); - if (unescapedName) - { - MSG_FolderInfo *copyDestination = m_currentDestinationParent->FindChildNamed(NET_UnEscape(unescapedName)); - if (copyDestination) - { - if (m_currentSourceNode->GetTotalMessages()) - { - MSG_FolderInfoMail *srcMailFolder = m_currentSourceNode->GetMailFolderInfo(); - if (srcMailFolder) - { - DBFolderInfo *grpInfo = NULL; - if (srcMailFolder->GetDBFolderInfoAndDB(&grpInfo, &m_copySourceDB) == 0) - { - IDArray *allMsgs = new IDArray; - if (allMsgs) - { - m_copySourceDB->ListAllIds(*allMsgs); - srcMailFolder->StartAsyncCopyMessagesInto(copyDestination, - m_urlPane, - m_copySourceDB, - allMsgs, - allMsgs->GetSize(), - m_urlPane->GetContext(), - NULL, FALSE); - returnCode = 0; - } - } - } - } - else - returnCode = DoNextAction(); // nothing to copy here - } - XP_FREE(unescapedName); - } - return returnCode; -} - - - -MsgERR MSG_RemoteFolderCopyState::DoNextAction() -{ - MsgERR returnCode = 0; - - if (!m_currentSourceNode) - { - // this is the first call for this copy! - m_currentTask = kMakingMailbox; - m_currentSourceNode = m_sourceTree; - m_currentDestinationParent = m_destinationTree; - } - else - { - if (m_currentTask == kCopyingMessages) - { - if (m_copySourceDB) - { - // we finished a copy, close its source DB - m_copySourceDB->Close(); - m_copySourceDB = NULL; - } - m_currentTask = kMakingMailbox; - SetNextSourceNode(); - } - else if (m_currentTask == kMakingMailbox) - m_currentTask = kUpdatingMailbox; - else - m_currentTask = kCopyingMessages; - } - - if (m_currentSourceNode) - { - if (m_currentTask == kMakingMailbox) - returnCode = MakeCurrentMailbox(); - else if (m_currentTask == kUpdatingMailbox) - returnCode = DoUpdateCurrentMailbox(); - else - returnCode = DoCurrentCopy(); - } - else - returnCode = eFAILURE; // finito - - return returnCode; -} - - diff --git a/mozilla/lib/libmsg/msgfpane.h b/mozilla/lib/libmsg/msgfpane.h deleted file mode 100644 index c6beb24a810..00000000000 --- a/mozilla/lib/libmsg/msgfpane.h +++ /dev/null @@ -1,231 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgFPane_H_ -#define _MsgFPane_H_ - -#include "msglpane.h" -#include "ptrarray.h" -#include "bytearr.h" - -class MSG_ThreadPane; -class MailMessageHdr; -class MessageDB; - -class MSG_Prefs; -class MSG_FolderInfoMail; -class ListNewsGroupState; -class MSG_FolderArray; -class MSG_FolderPane; -class MSG_RuleTracker; -class MSG_UrlQueue; - -class MSG_RemoteFolderCopyState { -public: - MSG_RemoteFolderCopyState(MSG_FolderInfo *sourceTree, MSG_FolderInfo *destinationTree, MSG_FolderPane *urlPane); - virtual ~MSG_RemoteFolderCopyState(); - - virtual MsgERR DoNextAction(); -private: - void SetNextSourceFromParent(MSG_FolderInfo *parent, MSG_FolderInfo *child); - void SetNextSourceNode(); - - MsgERR MakeCurrentMailbox(); - MsgERR DoCurrentCopy(); - MsgERR DoUpdateCurrentMailbox(); - - - MSG_FolderInfo *m_sourceTree; - MSG_FolderInfo *m_destinationTree; - - MSG_FolderInfo *m_currentSourceNode; - MSG_FolderInfo *m_currentDestinationParent; - - enum eWhatAmIDoing { - kMakingMailbox, - kUpdatingMailbox, - kCopyingMessages - }; - - eWhatAmIDoing m_currentTask; - - MSG_FolderPane *m_urlPane; - MessageDB *m_copySourceDB; -}; - -class MSG_FolderPane : public MSG_LinedPane -{ -public: - - MSG_FolderPane(MWContext* context, MSG_Master* master); - virtual ~MSG_FolderPane(); - - virtual MsgERR Init(); - virtual MSG_PaneType GetPaneType(); - - virtual void OnFolderDeleted (MSG_FolderInfo *); - virtual void OnFolderChanged(MSG_FolderInfo *folderInfo); - virtual void OnFolderAdded (MSG_FolderInfo *, MSG_Pane *instigator); - - virtual void NotifyPrefsChange(NotifyCode code); - - int GetFolderMaxDepth(); - - virtual XP_Bool GetFolderLineByIndex(MSG_ViewIndex line, int32 numlines, - MSG_FolderLine* data); - virtual int GetFolderLevelByIndex( MSG_ViewIndex line ); - - char* GetFolderName(MSG_ViewIndex line); - MSG_ViewIndex GetFolderIndex(MSG_FolderInfo* info, XP_Bool expand = FALSE); - MSG_FolderInfo* GetFolderInfo(MSG_ViewIndex index); - MSG_NewsHost *GetNewsHostFromIndex (MSG_ViewIndex index); - MSG_Host *GetHostFromIndex (MSG_ViewIndex index); - - void AddFoldersToView (MSG_FolderArray &folders, MSG_FolderInfo *parent, int32 folderIdx); - void AddFolderToView (MSG_FolderInfo *folder, MSG_FolderInfo *parent, int32 folderIdx); - void MakeFolderVisible (MSG_FolderInfo *folder); - - MSG_FolderArray * GetFolderView () { return &m_folderView; } - - virtual void ToggleExpansion(MSG_ViewIndex line, int32* numchanged); - virtual int32 ExpansionDelta(MSG_ViewIndex line); - virtual int32 GetNumLines(); - - virtual MsgERR DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices); - - virtual MsgERR GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, int32 numindices, - XP_Bool *selectable_p, - MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_string, - XP_Bool *plural_p); - - int LineForFolder(MSG_FolderInfo* folder); - - void SetFlagForFolder (MSG_FolderInfo *folder, uint32 which); - void ClearFlagForFolder (MSG_FolderInfo *folder, uint32 which); - - // Causes us to recreate the view from the folder tree, and tell the - // FE to redisplay everything. Ugly, causes flashes, but it's easy... - void RedisplayAll(); - - MsgERR OpenFolder(); - MsgERR NewFolderWithUI (MSG_ViewIndex *indices, int32 numIndices); - - MsgERR RenameFolder (MSG_FolderInfo *folder, const char *newName = NULL); - MsgERR RenameOfflineFolder(MSG_FolderInfo *folder, const char *newName); - - // move folders to trash - MsgERR TrashFolders(MSG_FolderArray&, XP_Bool noTrash = FALSE); - MsgERR TrashFolders(const MSG_ViewIndex *indices, int32 numIndices, XP_Bool noTrash = FALSE); - - // delete the folders and associated disk storage, calls RemoveFolderFromView - // performPreflight defaults to TRUE, called with FALSE for non-existant imap folders - MsgERR DeleteFolder (MSG_FolderInfoMail *folder, XP_Bool performPreflight = TRUE); - - // remove the folders from the visible folder pane. leave disk storage intact - MsgERR RemoveFolderFromView(MSG_FolderInfo *doomedFolder); - - // Move folders around the hierarchy - MsgERR MoveFolders (MSG_FolderArray&, MSG_FolderInfo *dest, XP_Bool needExitFunc = FALSE); - MsgERR MoveFolders (const MSG_ViewIndex *indices, int32 numIndices, MSG_FolderInfo *dest, XP_Bool needExitFunc = FALSE); - MSG_DragEffect DragFoldersStatus (const MSG_ViewIndex *indices, int32 numIndices, - MSG_FolderInfo *dest, MSG_DragEffect request); - - // Helpers for MoveFolders - int PreflightMoveFolder (MSG_FolderInfo *src, MSG_FolderInfo *srcParent, MSG_FolderInfo *dest); - int PreflightMoveFolderWithUI (MSG_FolderInfo *src, MSG_FolderInfo *srcParent, MSG_FolderInfo *dest); - MsgERR PerformLegalFolderMove (MSG_FolderInfo *newChild, MSG_FolderInfo *newParent); - MsgERR MakeMoveFoldersArray (const MSG_ViewIndex *indices, int32 numIndices, MSG_FolderArray *outArray); - - MsgERR CompressFolder(MSG_ViewIndex *indices, int32 numIndices); - MsgERR AddNewsGroup(); - MsgERR DeleteVirtualNewsgroup (MSG_FolderInfo*); - MsgERR UpdateMessageCounts(MSG_ViewIndex *indices, int32 numIndices); - MsgERR Undo(); - MsgERR Redo(); - // Undo helper functions - MsgERR UndoMoveFolder (MSG_FolderInfo *srcParent, MSG_FolderInfo *src, MSG_FolderInfo *dest); - - XP_Bool CanUndo(); - XP_Bool CanRedo(); - MsgERR MarkAllMessagesRead(MSG_ViewIndex* indices, int32 numIndices); - - MsgERR CheckForNew(MSG_NewsHost* host); - - void InsertFlagsArrayAt(MSG_ViewIndex index, MSG_FolderArray &folders); - virtual void PostProcessRemoteCopyAction(); - static void RuleTrackCB (void *cookie, XPPtrArray& rules, XPDWordArray &actions, XP_Bool isDelete); - - static void RemoteFolderCopySelectCompleteExitFunction(URL_Struct *URL_s, int status, MWContext *context); - static void SafeToSelectExitFunction(URL_Struct *URL_s, int status, MWContext *context); - static void SafeToSelectInterruptFunction (MSG_UrlQueue *queue, URL_Struct *URL_s, int status, MWContext *context); - - void RefreshUpdatedIMAPHosts(); // updates hosts after changes from the subscribe pane - -protected: - virtual void FlushUpdates(); - virtual void OnToggleExpansion(MSG_FolderInfo* toggledline, - MSG_ViewIndex line, int32 countVector); - - char *RefreshIMAPHostFolders(MSG_FolderInfo *hostinfo, XP_Bool runURL); // refreshes the folder list from the server, for a given IMAP host - virtual void GetExpansionArray(MSG_FolderInfo *folder, MSG_FolderArray &array); - XP_Bool ScanFolder_1(); - static void ScanFolder_s(void* closure); - void ScanFolder(); - char *GetValidNewFolderName(MSG_FolderInfo *parent, int captionId, MSG_FolderInfo *folder); - - MsgERR PreflightRename(MSG_FolderInfo *folder, int depth); - - // remove the indexed folders from the visible folder pane. - MsgERR RemoveIndexedFolderFromView(MSG_ViewIndex doomedIndex, MSG_FolderArray &children, uint32 doomedFlags, MSG_FolderInfo *parentOfDoomed); - - XP_Bool IndicesAreMail (const MSG_ViewIndex*, int32); - XP_Bool IndicesAreNews (const MSG_ViewIndex*, int32); - XP_Bool AnyIndicesAreIMAPMail (const MSG_ViewIndex*, int32); - - static void OpenFolderCB_s(MWContext* context, char* filename, - void* closure); - void OpenFolderCB(char* filename); - virtual void UpdateNewsCountsDone(int status); - virtual void CheckForNewDone(URL_Struct* url_struct, int status, - MWContext* context); - - MsgERR RenameOnlineFolder(MSG_FolderInfo *folder, const char *newName); - - XP_Bool OneFolderInArrayIsIMAP(MSG_FolderArray &theFolders); - - MSG_FolderArray m_folderView; // Array of displayed MSG_FolderInfo* - XP_Bool m_needToolbarUpdate; - - void* m_scanTimer; - XP_Bool m_wantCompress; - XP_Bool m_offeredCompress; - XP_Bool m_confirmedDeleteFolders; - - XPByteArray m_flagsArray; - MSG_RemoteFolderCopyState *m_RemoteCopyState; -}; - - -#endif /* _MsgFPane_H_ */ diff --git a/mozilla/lib/libmsg/msgglue.cpp b/mozilla/lib/libmsg/msgglue.cpp deleted file mode 100644 index 2040508eeef..00000000000 --- a/mozilla/lib/libmsg/msgglue.cpp +++ /dev/null @@ -1,3983 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "msgcom.h" -#include "dberror.h" -#include "client.h" -#include "xpgetstr.h" -#include "msgfpane.h" -#include "msgtpane.h" -#include "msgmpane.h" -#include "msgcpane.h" -#include "msgspane.h" -#include "msgprefs.h" -#include "msgmast.h" -#include "listngst.h" -#include "msgdb.h" -#include "msgdbvw.h" -#include "msgfinfo.h" -#include "msgcflds.h" -#include "newshost.h" -#include "hosttbl.h" -#include "subpane.h" -#include "newsdb.h" -#include "msgoffnw.h" -#include "shist.h" -#include "pmsgsrch.h" -#include "msgppane.h" -#include "mime.h" -#include "msgbg.h" -#include "nwsartst.h" -#include "maildb.h" -#include "mailhdr.h" -#include "imapoff.h" -#include "prefapi.h" -#include "imaphost.h" -#include "msgurlq.h" -#include "msgimap.h" -#include "msgsend.h" -#include "pw_public.h" -#include HG99874 - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_ID_NOT_IN_FOLDER; - extern int MK_MSG_CANT_OPEN; - extern int MK_MSG_INBOX_L10N_NAME; - extern int MK_MSG_OUTBOX_L10N_NAME; - extern int MK_MSG_OUTBOX_L10N_NAME_OLD; - extern int MK_MSG_TRASH_L10N_NAME; - extern int MK_MSG_DRAFTS_L10N_NAME; - extern int MK_MSG_SENT_L10N_NAME; - extern int MK_MSG_TEMPLATES_L10N_NAME; - extern int XP_MSG_IMAP_ACL_FULL_RIGHTS; - extern int XP_MSG_IMAP_PERSONAL_FOLDER_TYPE_NAME; - extern int XP_MSG_IMAP_PERSONAL_FOLDER_TYPE_DESCRIPTION; -} - -#ifndef IMAP4_PORT_SSL_DEFAULT -#define IMAP4_PORT_SSL_DEFAULT 993 /* use a separate port for imap4 over ssl */ -#endif - -#if defined(XP_MAC) && defined (__MWERKS__) -#pragma require_prototypes off -#endif - -extern "C" -int ConvertMsgErrToMKErr(uint32 err); // ### Need to get from a header file... - - -inline MSG_LinedPane* CastLinePane(MSG_Pane* pane) { - XP_ASSERT(pane && pane->IsLinePane()); - return (MSG_LinedPane*) pane; -} - -inline MSG_FolderPane* CastFolderPane(MSG_Pane* pane) { - XP_ASSERT(pane && (pane->GetPaneType() == MSG_FOLDERPANE)); - return (MSG_FolderPane*) pane; -} - -inline MSG_ThreadPane* CastThreadPane(MSG_Pane* pane) { - XP_ASSERT(pane && pane->GetPaneType() == MSG_THREADPANE); - return (MSG_ThreadPane*) pane; -} - -inline MSG_MessagePane* CastMessagePane(MSG_Pane* pane) { - XP_ASSERT(pane && pane->GetPaneType() == MSG_MESSAGEPANE); - return (MSG_MessagePane*) pane; -} - -inline MSG_CompositionPane* CastCompositionPane(MSG_Pane* pane) { - XP_ASSERT(pane && pane->GetPaneType() == MSG_COMPOSITIONPANE); - return (MSG_CompositionPane*) pane; -} - -inline MSG_SubscribePane* CastSubscribePane(MSG_Pane* pane) { - XP_ASSERT(pane && pane->GetPaneType() == MSG_SUBSCRIBEPANE); - return (MSG_SubscribePane*) pane; -} - -extern "C" MSG_Pane* MSG_FindPane(MWContext* context, MSG_PaneType type) { - return MSG_Pane::FindPane(context, type, FALSE); -} - -/* really find the pane of passed type with given context, NULL otherwise */ -extern "C" MSG_Pane *MSG_FindPaneOfContext (MWContext *context, MSG_PaneType type) -{ - return MSG_Pane::FindPane(context, type, TRUE); -} - -extern "C" MSG_Pane *MSG_FindPaneOfType(MSG_Master* master, MSG_FolderInfo *id, - MSG_PaneType type) -{ - return master->FindPaneOfType(id, type); -} - -extern "C" MSG_Pane *MSG_FindPaneFromUrl (MSG_Pane *pane, const char *url, - MSG_PaneType type) -{ - return pane->GetMaster()->FindPaneOfType (url, type); -} - -HG52432 - -extern "C" XP_Bool -MSG_RequiresMailMsgWindow(const char *url) -{ - if (!url) - return FALSE; - if (!strncasecomp (url, "mailbox:", 8) || !strncasecomp (url, "IMAP:", 5)) - { - HG83647 - char *q = XP_STRCHR (url, '?'); - /* If we're copying messages, we don't need a new window */ - if (!XP_STRNCMP (url, "mailbox:copymessages", 20)) - return FALSE; - /* If this is a reference to a folder, we don't need a mail msg window. */ - if (!q) - return FALSE; - /* If it is a reference to a message, we require one. */ - else if (!XP_STRNCMP (q, "?id=", 4) || XP_STRSTR (q, "&id=") || !XP_STRNCMP(q, "?fetch",6)) - { - if (XP_STRSTR(url, "?part=") || XP_STRSTR(url, "&part=")) - return FALSE; - else - return TRUE; - } - else - return FALSE; - } - else - return FALSE; -} - -/* in mknews.c. */ -extern "C" XP_Bool NET_IsNewsMessageURL (const char *url); -extern "C" XP_Bool NET_IsNewsServerURL( const char *url ); - -extern "C" XP_Bool -MSG_RequiresNewsMsgWindow(const char *url) -{ - if (!url) return FALSE; - if (*url == 's' || *url == 'S') - url++; - if (!strncasecomp (url, "news:", 5)) - { - /* If we're asking for a message ID, a news msg window is required. */ - return NET_IsNewsMessageURL (url); - } - return FALSE; -} - -extern "C" XP_Bool -MSG_RequiresFolderPane(const char *url) -{ - if (!url) return FALSE; - if (*url == 's' || *url == 'S') - url++; - - if (!XP_STRCMP(url, "news:") - || !XP_STRCMP(url, "mailbox:") || (!strncasecomp (url, "news:", 5) && NET_IsNewsServerURL(url))) - return TRUE; - - return FALSE; -} - -/* Certain URLs must always be displayed in certain types of windows: - for example, all "mailbox:" URLs must go in the mail window, and - all "http:" URLs must go in a browser window. These predicates - look at the address and say which window type is required. - */ -extern "C" XP_Bool -MSG_RequiresMailWindow (const char *url) -{ - if (!url) return FALSE; - if (!strncasecomp (url, "pop3:", 5)) - return TRUE; - if (!strncasecomp (url, "mailbox:", 8) || !strncasecomp(url, "IMAP:", 5)) - { - HG62453 - char *q = XP_STRCHR (url, '?'); - /* If we're copying messages, we don't need a new window */ - if (!XP_STRNCMP (url, "mailbox:copymessages", 20)) - return FALSE; - /* If this is a reference to a folder, it requires a mail window. */ - if (!q) - return TRUE; - if (XP_STRSTR(url, "addmsgflags")) - return FALSE; - /* If this is a mailbox discovery URL, we don't necessarily need - a mail window. (It can be run in the subscribe pane. */ - if (XP_STRSTR(url, "discoverallboxes") || - XP_STRSTR(url, "discoverchildren") || - XP_STRSTR(url, "discoverallandsubscribed") || - XP_STRSTR(url, "discoverlevelchildren")) - return FALSE; - - // committing subscriptions can happen in the subscribe pane also - if (XP_STRSTR(url, "subscribe") || - XP_STRSTR(url, "unsubscribe")) - return FALSE; - // should we make sure we have an "id=" ?? - if (XP_STRSTR(url, "?part=") || XP_STRSTR(url, "&part=")) - return FALSE; - else - return TRUE; - /* If it is a reference to a message, it doesn't require one. */ -/* else if (XP_STRNCMP (q, "id=", 3) || XP_STRSTR (q, "&id=")) - return FALSE; */ - } - // we'll arbitrarily say that folder panes are mail windows. - return MSG_RequiresFolderPane(url); -} - -extern "C" XP_Bool -MSG_RequiresNewsWindow (const char *url) -{ - XP_Bool ret = FALSE; - if (!url) return FALSE; - if (*url == 's' || *url == 'S') - url++; - if (!strncasecomp (url, "news:", 5)) - { - if (NET_IsNewsMessageURL(url)) - return TRUE; - char *groupName = NET_ParseURL(url, GET_PATH_PART); - if (groupName) - { - // don't say we need a news window for listing newsgroups or updating totals. - // groupName comes back with leading '/', so just a '/' isn't a group. - ret = XP_STRLEN(groupName) > 1 && !XP_STRCHR(groupName, '*'); - XP_FREE(groupName); - - // don't say we need a news window for deleting profile groups. Just - // let the URL run in the folder pane. - char *searchPart = NET_ParseURL(url, GET_SEARCH_PART); - if (XP_STRSTR(searchPart, "?profile/PROFILE DEL")) - ret = FALSE; - if (XP_STRSTR(searchPart, "?list-ids")) - ret = FALSE; - XP_FREE(searchPart); - } - } - /* If we're asking for a message ID, it's ok to display those in a - browser window. Otherwise, a news window is required. */ -// return !NET_IsNewsMessageURL (url); - return ret; -} - -/* If this URL requires a particular kind of window, and this is not - that kind of window, then we need to find or create one. - */ -XP_Bool msg_NewWindowRequired (MWContext *context, const char *url) -{ - if (!context) - return TRUE; - if (context->type == MWContextSearch || context->type == MWContextPrint || context->type == MWContextBiff) - return FALSE; - - /* Search URLs always run in the pane they started in */ - if (!XP_STRNCASECMP(url, "search-libmsg:", 14)) - return FALSE; - - // If we can figure out the content type, and there is no converter, - // return FALSE so we'll run the save as url in our window instead - // of creating an empty browser window. - char *contentType = MimeGetURLContentType(context, url); - if (contentType && !NET_HaveConverterForMimeType(contentType)) - return FALSE; - - /* This is not a browser window, and one is required. */ - if (context->type != MWContextBrowser && context->type != MWContextPane && MSG_RequiresBrowserWindow(url)) - return TRUE; - - /* otherwise this is probably an addbook: url */ - /* must check *after* browser window so http URLs from AB work */ - if (context->type == MWContextAddressBook) - return FALSE; - - MSG_Pane *msgPane = MSG_FindPaneOfContext(context, MSG_MESSAGEPANE); - // if this msg pane has an associated thread pane, and an associated folder, - // make sure it's in the right folder - MSG_Pane *threadPane = MSG_FindPaneOfContext(context, MSG_THREADPANE); - MSG_Pane *folderPane = MSG_FindPaneOfContext(context, MSG_FOLDERPANE); - - if (!folderPane && MSG_RequiresFolderPane(url)) - return TRUE; - -// this checks for switching between mail and news with the dropdown (or reuse thread pane) - if (threadPane && threadPane->GetFolder() && threadPane->GetFolder()->IsMail() && MSG_RequiresNewsWindow(url)) - return TRUE; - - // url is running from folder pane - we need a new window for newsgroup or news msg. - if (folderPane && !threadPane && MSG_RequiresNewsWindow(url)) // standalone folder pane - return TRUE; - - if (msgPane && msgPane->GetFolder() &&!threadPane) // standalone message window - { - int urlType = NET_URL_Type(url); - - // this is to make following links to newsgroups from standalone - // message panes work. - if (urlType == NEWS_TYPE_URL && MSG_PaneTypeForURL(url) == MSG_THREADPANE) - return TRUE; - } - if (msgPane && msgPane->GetFolder() && threadPane) - { - MSG_Pane *threadPaneForFolder = MSG_FindPaneFromUrl(msgPane, url, MSG_THREADPANE); - if (MSG_RequiresNewsWindow(url)) - { - if (NET_IsNewsMessageURL(url)) // we don't know what folder news messages belong to. - { - if (threadPane->GetFolder() && !threadPane->GetFolder()->IsNews()) - return TRUE; - else - return FALSE; - } - else - { -#ifdef FE_IMPLEMENTS_NEW_GET_FOLDER_INFO - MSG_FolderInfo *folderForURL = MSG_GetFolderInfoFromURL(threadPane->GetMaster(), url, TRUE); -#else - MSG_FolderInfo *folderForURL = MSG_GetFolderInfoFromURL(threadPane->GetMaster(), url); -#endif - if (threadPane->GetFolder() != folderForURL) - return TRUE; - } - } - else - { - // if we know it's not the right thread pane, tell fe we need a new window. - if (threadPane->GetFolder() && threadPaneForFolder && threadPane != threadPaneForFolder) - return TRUE; - } - } - if (/* This is not a mail window, and one is required. */ - (context->type != MWContextMail && context->type != MWContextMailMsg && - context->type != MWContextMailNewsProgress && - MSG_RequiresMailWindow (url)) || - - /* This is not a news/mail window, and one is required. */ - (context->type != MWContextNews && context->type != MWContextMail && context->type != MWContextMailNewsProgress - && (context->type != MWContextNewsMsg && context->type != MWContextMailMsg) && MSG_RequiresNewsWindow (url)) || - - /* this is not a message window, and one is required */ - (msgPane == NULL && context->type != MWContextMailMsg && MSG_RequiresMailMsgWindow(url)) - - ) - return TRUE; - else - return FALSE; /*!msgPane && threadPane; */ // if msgPane is NULL, but we have a thread pane, return FALSE because we have the wrong window. -} - -extern "C" XP_Bool MSG_NewWindowRequiredForURL (MWContext *context, URL_Struct *urlStruct) -{ - if (urlStruct->open_new_window_specified) - return urlStruct->open_new_window; - - if (context->type != MWContextBrowser && !strncasecomp (urlStruct->address, "about:", 6) && !urlStruct->internal_url - && strncasecomp(urlStruct->address, "about:editfilenew", 17)) - return TRUE; - - return msg_NewWindowRequired(context, urlStruct->address); -} - -extern "C" -{ - void MSG_InitMsgLib(void); -} - -extern "C" MSG_Master* MSG_InitializeMail(MSG_Prefs* prefs) -{ - MSG_Master *master = prefs->GetMasterForBiff(); - if (master) - return (master); // already initialized - - MSG_InitMsgLib(); // make sure db code is initialized - - master = new MSG_Master(prefs); - prefs->SetMasterForBiff(master); - return master; -} - -extern "C" void MSG_ImapBiff(MWContext* context, MSG_Prefs* prefs) { - MSG_Master *master = prefs->GetMasterForBiff(); - MSG_Pane *mailPane = NULL; - - if (master) - { - MSG_IMAPFolderInfoMail *inboxFolder = NULL; - - mailPane = (MSG_Pane*) master->FindFirstPaneOfType(MSG_FOLDERPANE); - if (master->GetImapMailFolderTree() && - master->GetImapMailFolderTree()->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, - (MSG_FolderInfo**) &inboxFolder, 1)) - { - if (!inboxFolder->GetGettingMail()) - { - inboxFolder->SetGettingMail(TRUE); - inboxFolder->Biff(context); - } - } - } -} - - -extern "C" void MSG_StartImapMessageToOfflineFolderDownload(MWContext* context) { - if (context->msgCopyInfo && context->msgCopyInfo->srcFolder) - { - if (context->msgCopyInfo->srcFolder->GetType() == FOLDER_IMAPMAIL) - { - MSG_IMAPFolderInfoMail *imapFolder = (MSG_IMAPFolderInfoMail *) context->msgCopyInfo->srcFolder; - imapFolder->SetDownloadState(MSG_IMAPFolderInfoMail::kDownLoadMessageForCopy); - } - } -} - - -extern "C" MSG_PaneType MSG_PaneTypeForURL(const char *url) -{ - return MSG_Pane::PaneTypeForURL(url); -} - -extern "C" MSG_Pane* MSG_CreateFolderPane(MWContext* context, - MSG_Master* master) { - MSG_FolderPane *pane = new MSG_FolderPane(context, master); - if (pane) - pane->Init(); - return pane; -} - -extern "C" MSG_Pane* MSG_CreateThreadPane(MWContext* context, - MSG_Master* master) { - return new MSG_ThreadPane(context, master); -} - -extern "C" MSG_Pane* MSG_CreateMessagePane(MWContext* context, - MSG_Master* master) { - return new MSG_MessagePane(context, master); -} - - -extern "C" int MSG_SetMessagePaneCallbacks(MSG_Pane* messagepane, - MSG_MessagePaneCallbacks* c, - void* closure) { - return CastMessagePane(messagepane)->SetMessagePaneCallbacks(c, closure); -} - - -extern "C" MSG_MessagePaneCallbacks* -MSG_GetMessagePaneCallbacks(MSG_Pane* messagepane, - void** closure) -{ - return CastMessagePane(messagepane)->GetMessagePaneCallbacks(closure); -} - - -extern "C" MSG_Pane* MSG_CreateProgressPane (MWContext *context, - MSG_Master *master, - MSG_Pane *parentPane) -{ - return new MSG_ProgressPane(context, master, parentPane); -} - -extern "C" MSG_Pane* MSG_CreateCompositionPane(MWContext* context, - MWContext* old_context, - MSG_Prefs* prefs, - MSG_CompositionFields* fields, - MSG_Master* master) -{ - return new MSG_CompositionPane(context, old_context, prefs, fields, master); -} - -extern "C" int -MSG_SetCompositionPaneCallbacks(MSG_Pane* composepane, - MSG_CompositionPaneCallbacks* callbacks, - void* closure) -{ - return CastCompositionPane(composepane)->SetCallbacks(callbacks, closure); -} - -extern "C" MSG_Pane* MSG_CreateCompositionPaneNoInit(MWContext* context, - MSG_Prefs* prefs, - MSG_Master* master) -{ - return new MSG_CompositionPane(context, prefs, master); -} - - -extern "C" int MSG_InitializeCompositionPane(MSG_Pane* comppane, - MWContext* old_context, - MSG_CompositionFields* fields) -{ - return CastCompositionPane(comppane)->Initialize(old_context, fields); -} - - -extern "C" MSG_Pane *MSG_CreateSearchPane (MWContext *context, MSG_Master *master) -{ - return new MSG_SearchPane (context, master); -} - -extern "C" void MSG_SetFEData(MSG_Pane* pane, void* data) { - pane->SetFEData(data); -} - -extern "C" void* MSG_GetFEData(MSG_Pane* pane) { - return pane->GetFEData(); -} - -extern "C" MSG_PaneType MSG_GetPaneType(MSG_Pane* pane) { - return pane->GetPaneType(); -} - -extern "C" MWContext* MSG_GetContext(MSG_Pane* pane) { - if (pane) - return pane->GetContext(); - else - return NULL; -} - -extern "C" MSG_Prefs* MSG_GetPrefs(MSG_Pane* pane) { - return pane->GetPrefs(); -} - -extern "C" void MSG_WriteNewProfileAge() { - PREF_SetIntPref("mailnews.profile_age", MSG_IMAP_CURRENT_START_FLAGS); -} - -extern "C" MSG_Prefs* MSG_GetPrefsForMaster(MSG_Master* master) { - return master->GetPrefs(); -} - -extern "C" int MSG_GetURL(MSG_Pane *pane, URL_Struct* url) -{ - XP_ASSERT(pane && url); - if (pane && url) - { - url->msg_pane = pane; - return msg_GetURL(pane->GetContext(), url, FALSE); - } - else - return 0; -} - -extern "C" void MSG_Command(MSG_Pane* pane, MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices) { - int status = - ConvertMsgErrToMKErr(pane->DoCommand(command, indices, numindices)); - if (status < 0) { - char* pString = XP_GetString(status); - if (pString && strlen(pString)) - FE_Alert(pane->GetContext(), pString); - } -} - -extern "C" int MSG_CommandStatus(MSG_Pane* pane, - MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices, - XP_Bool *selectable_p, - MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_string, - XP_Bool *plural_p) { - return ConvertMsgErrToMKErr(pane->GetCommandStatus(command, - indices, numindices, - selectable_p, - selected_p, - display_string, - plural_p)); -} - -extern "C" int MSG_SetToggleStatus(MSG_Pane* pane, MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices, - MSG_COMMAND_CHECK_STATE value) { - return ConvertMsgErrToMKErr(pane->SetToggleStatus(command, - indices, numindices, - value)); -} - - -extern "C" MSG_COMMAND_CHECK_STATE MSG_GetToggleStatus(MSG_Pane* pane, - MSG_CommandType command, - MSG_ViewIndex* indices, - int32 numindices) -{ - return pane->GetToggleStatus(command, indices, numindices); -} - -extern "C" XP_Bool MSG_DisplayingRecipients(MSG_Pane* pane) -{ - return pane ? pane->DisplayingRecipients() : FALSE; -} - -extern "C" int MSG_AddToAddressBook(MSG_Pane* pane, MSG_CommandType command, MSG_ViewIndex* indices, int32 numIndices, AB_ContainerInfo * destAB) -{ - if (pane) - return ConvertMsgErrToMKErr(pane->AddToAddressBook(command, indices, numIndices, destAB)); - else - return 0; -} - -/* We also provide a status function to support this command */ -extern "C" int MSG_AddToAddressBookStatus(MSG_Pane* pane, MSG_CommandType command, MSG_ViewIndex* indices, int32 numIndices, XP_Bool *selectable_p, MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_string, XP_Bool *plural_p, AB_ContainerInfo * /* destAB */) -{ - return ConvertMsgErrToMKErr(pane->GetCommandStatus(command, - indices, numIndices, - selectable_p, - selected_p, - display_string, - plural_p)); -} - -extern "C" int MSG_GetFolderMaxDepth(MSG_Pane* folderpane) { - return CastFolderPane(folderpane)->GetFolderMaxDepth(); -} - - -extern "C" XP_Bool MSG_GetFolderLineByIndex(MSG_Pane* folderpane, - MSG_ViewIndex line, - int32 numlines, - MSG_FolderLine* data) { - return CastFolderPane(folderpane)->GetFolderLineByIndex(line, numlines, - data); -} - -extern "C" uint32 MSG_GetFolderFlags(MSG_FolderInfo *folder) -{ - return folder->GetFlags(); -} - - -extern "C" XP_Bool MSG_GetThreadLineByIndex(MSG_Pane* threadpane, - MSG_ViewIndex line, - int32 numlines, - MSG_MessageLine* data) { - return CastThreadPane(threadpane)->GetThreadLineByIndex(line, numlines, - data); -} - -extern "C" int MSG_GetFolderLevelByIndex( MSG_Pane *folderpane, - MSG_ViewIndex line ) { - return CastFolderPane(folderpane)->GetFolderLevelByIndex( line ); -} - -extern "C" int MSG_GetThreadLevelByIndex( MSG_Pane *threadpane, - MSG_ViewIndex line ) { - return CastThreadPane(threadpane)->GetThreadLevelByIndex( line ); -} - - -extern "C" XP_Bool MSG_GetFolderLineById(MSG_Master* master, - MSG_FolderInfo* info, - MSG_FolderLine* data) { - return master->GetFolderLineById(info, data); -} - -extern "C" int32 MSG_GetFolderSizeOnDisk (MSG_FolderInfo *folder) -{ - return folder->GetSizeOnDisk(); -} - -extern "C" XP_Bool MSG_GetThreadLineById(MSG_Pane* pane, - MessageKey key, - MSG_MessageLine* data) { - if (MSG_THREADPANE == pane->GetPaneType()) - return CastThreadPane(pane)->GetThreadLineByKey(key, data); - else - if (MSG_MESSAGEPANE == pane->GetPaneType()) - return CastMessagePane(pane)->GetThreadLineByKey(key, data); - else - { - XP_ASSERT(FALSE); - return FALSE; - } -} - -extern "C" MSG_ViewIndex MSG_ThreadIndexOfMsg(MSG_Pane* pane, MessageKey key) -{ - return pane->GetThreadIndexOfMsg(key); -} - -extern "C" XP_Bool MSG_SetPriority(MSG_Pane *pane, /* thread or message */ - MessageKey key, - MSG_PRIORITY priority) -{ - return pane->SetMessagePriority(key, priority); -} - -extern "C" const char* MSG_FormatDate(MSG_Pane* pane, time_t date) { - return MSG_FormatDateFromContext(pane->GetContext(), date); -} - - -extern "C" void MSG_DestroyMaster (MSG_Master* master) { - delete master; -} - - -extern "C" void MSG_DestroyPane(MSG_Pane* pane) { - delete pane; -} - - -extern "C" int MSG_LoadFolder(MSG_Pane* pane, MSG_FolderInfo* folder) -{ - MsgERR status = 0; - if (MSG_THREADPANE == pane->GetPaneType()) - status = CastThreadPane(pane)->LoadFolder(folder); - else if (MSG_MESSAGEPANE == pane->GetPaneType()) - status = CastMessagePane(pane)->LoadFolder(folder); - - if ((int) status == MK_MSG_CANT_OPEN) - { - char *statusMsg = PR_smprintf(XP_GetString(MK_MSG_CANT_OPEN), folder->GetName()); - if (statusMsg) - { - FE_Alert(pane->GetContext(), statusMsg); - XP_FREE(statusMsg); - } - } - return status; -// return ConvertMsgErrToMKErr(CastThreadPane(threadpane)->LoadFolder(folder)); -} - -//extern "C" int MSG_LoadFolderURL(MSG_Pane *threadPane, const char *url) { -// return ConvertMsgErrToMKErr(CastThreadPane(threadPane)->LoadFolder(url)); -//} - -extern "C" int MSG_LoadMessage(MSG_Pane* messagepane, MSG_FolderInfo* folder, - MessageKey key) { - return - ConvertMsgErrToMKErr(CastMessagePane(messagepane)->LoadMessage(folder, - key, NULL, TRUE)); -} -//extern "C" int MSG_LoadMessageURL(MSG_Pane* messagepane, const char *url) { -// return -// ConvertMsgErrToMKErr(CastMessagePane(messagepane)->LoadMessage(url)); -//} - - -extern "C" int MSG_OpenDraft(MSG_Pane* threadpane, MSG_FolderInfo* folder, - MessageKey key) { - return - ConvertMsgErrToMKErr(CastThreadPane(threadpane)->OpenDraft(folder, key)); -} - -extern "C" void MSG_SetLineWidth(MSG_Pane* composepane, int width) -{ - CastCompositionPane(composepane)->SetLineWidth(width); -} - -extern "C" void MSG_AddBacktrackMessage (MSG_Pane *pane, MSG_FolderInfo* folder, - MessageKey key) -{ - BacktrackManager *backtrackManager = pane->GetBacktrackManager(); - backtrackManager->AddEntry(folder, key); -} - -extern "C" void MSG_SetBacktrackState(MSG_Pane *pane, MSG_BacktrackState state) -{ - pane->GetBacktrackManager()->SetState(state); -} - -extern "C" MSG_BacktrackState MSG_GetBacktrackState (MSG_Pane *pane) -{ - return pane->GetBacktrackManager()->GetState(); -} - -extern "C" int MSG_SetHTMLAction(MSG_Pane* composepane, - MSG_HTMLComposeAction action) -{ - return CastCompositionPane(composepane)->SetHTMLAction(action); -} - -extern "C" MSG_HTMLComposeAction MSG_GetHTMLAction(MSG_Pane* composepane) -{ - return CastCompositionPane(composepane)->GetHTMLAction(); -} - -extern "C" int MSG_PutUpRecipientsDialog(MSG_Pane* composepane, void *pWnd) -{ - return CastCompositionPane(composepane)->PutUpRecipientsDialog(pWnd); -} - -extern "C" int MSG_ResultsRecipients(MSG_Pane* composepane, - XP_Bool cancelled, - int32* nohtml, - int32* htmlok) -{ - return CastCompositionPane(composepane)->ResultsRecipients(cancelled, - nohtml, - htmlok); -} - -extern "C" void MSG_SetUserAuthenticated (MSG_Master *master, XP_Bool bAuthenticated) -{ - master->SetUserAuthenticated(bAuthenticated); -} - -extern "C" XP_Bool MSG_IsUserAuthenticated (MSG_Master *master) -{ - return master->IsUserAuthenticated(); -} - -extern "C" void MSG_SetMailAccountURL (MSG_Master *master, const char *urlString) -{ - master->SetMailAccountURL(urlString); -} - -extern "C" void MSG_SetHostMailAccountURL (MSG_Master *master, const char *hostName, const char *urlString) -{ - MSG_IMAPHost *host = master->GetIMAPHostTable()->FindIMAPHost(hostName); - if (host) - host->SetAdminURL(urlString); -} - -extern "C" const char* MSG_GetMailAccountURL (MSG_Master *master) -{ - return master->GetMailAccountURL(); -} - -extern "C" void MSG_SetHostManageFiltersURL (MSG_Master *master, const char *hostName, const char *urlString) -{ - MSG_IMAPHost *host = master->GetIMAPHostTable()->FindIMAPHost(hostName); - if (host) - host->SetManageFiltersURL(urlString); -} - -extern "C" void MSG_SetHostManageListsURL (MSG_Master *master, const char *hostName, const char *urlString) -{ - MSG_IMAPHost *host = master->GetIMAPHostTable()->FindIMAPHost(hostName); - if (host) - host->SetManageListsURL(urlString); -} - -extern "C" MSG_Master* MSG_GetMaster (MSG_Pane *pane) -{ - return pane->GetMaster(); -} - -extern "C" XP_Bool MSG_GetHTMLMarkup(MSG_Pane * composepane) { - return CastCompositionPane(composepane)->GetHTMLMarkup(); -} - -extern "C" XP_Bool MSG_DeliveryInProgress(MSG_Pane * composepane) { - if (!composepane || MSG_COMPOSITIONPANE != MSG_GetPaneType(composepane)) - return FALSE; - return CastCompositionPane(composepane)->DeliveryInProgress(); -} - -extern "C" void MSG_SetHTMLMarkup(MSG_Pane * composepane, XP_Bool flag) { - CastCompositionPane(composepane)->SetHTMLMarkup(flag); -} - -extern "C" void MSG_SetPostDeliveryActionInfo (MSG_Pane* pane, - void *actionInfo) -{ - if (pane) - pane->SetPostDeliveryActionInfo ((MSG_PostDeliveryActionInfo - *) actionInfo); -} - -extern "C" uint32 MSG_GetActionInfoFlags(void *actionInfo) -{ - if (actionInfo) - return ((MSG_PostDeliveryActionInfo *) actionInfo)->m_flags; - else - return 0; -} - -extern "C" void MSG_SetIMAPMessageUID (MessageKey key, - void *state) -{ - if (state) - ((MSG_SendMimeDeliveryState *) state)->SetIMAPMessageUID(key); -} - -extern "C" const char *MSG_GetMessageIdFromState(void *state) -{ - if (state) - { - MSG_SendMimeDeliveryState *deliveryState = - (MSG_SendMimeDeliveryState *) state; - return deliveryState->m_fields->GetMessageId(); - } - return NULL; -} - -extern "C" XP_Bool MSG_IsSaveDraftDeliveryState(void *state) -{ - if (state) - return (((MSG_SendMimeDeliveryState *) state)->m_deliver_mode == - MSG_SaveAsDraft); - return FALSE; -} - -extern "C" int MSG_SetPreloadedAttachments ( MSG_Pane *composepane, - MWContext *context, - void *attachmentData, - void *attachments, - int attachments_count ) -{ - return ConvertMsgErrToMKErr ( CastCompositionPane( - composepane)->SetPreloadedAttachments ( - context, - (MSG_AttachmentData *) attachmentData, - (MSG_AttachedFile *) attachments, - attachments_count) ); -} - - -#ifdef XP_UNIX -extern "C" void -MSG_IncorporateFromFile(MSG_Pane* pane, XP_File infid, - void (*donefunc)(void*, XP_Bool), - void* doneclosure) -{ - pane->IncorporateFromFile(infid, - donefunc, doneclosure); -} - -#endif - - -extern "C" MSG_Prefs* MSG_CreatePrefs() { - return new MSG_Prefs(); -} - -extern "C" void MSG_DestroyPrefs(MSG_Prefs* prefs) { - delete prefs; -} - - -extern "C" void MSG_SetFolderDirectory(MSG_Prefs* prefs, - const char* directory) { - prefs->SetFolderDirectory(directory); -} - -extern "C" const char* MSG_GetFolderDirectory(MSG_Prefs* prefs) { - return prefs->GetFolderDirectory(); -} - -extern "C" void MSG_GetCitationStyle(MSG_Prefs* prefs, - MSG_FONT* font, - MSG_CITATION_SIZE* size, - const char** color) { - prefs->GetCitationStyle(font, size, color); -} - -extern "C" XP_Bool MSG_GetMailServerIsIMAP4(MSG_Prefs* prefs) { - return prefs->GetMailServerIsIMAP4(); -} - -HG42326 - -// ### mwelch Now that the standard folder names are i18n strings, -// I'm putting them into easily accessible static pointers. -// The reason for this is because XP strings can move around -// in memory, and fall away at bad times. -static const char *sInboxName = NULL; -static const char *sQueueName = NULL; -static const char *sQueueOldName = NULL; -static const char *sTrashName = NULL; -static const char *sDraftsName = NULL; -static const char *sSentName = NULL; -static const char *sTemplatesName = NULL; - -extern "C" const char *MSG_GetSpecialFolderName(int whichOne) -{ - const char *returnValue = NULL; - - if (sInboxName == NULL) - { - // first time through, need to initialize -#ifndef XP_OS2 - sInboxName = XP_STRDUP(XP_GetString(MK_MSG_INBOX_L10N_NAME)); - sQueueName = XP_STRDUP(XP_GetString(MK_MSG_OUTBOX_L10N_NAME)); - sQueueOldName = XP_STRDUP(XP_GetString(MK_MSG_OUTBOX_L10N_NAME_OLD)); - sTrashName = XP_STRDUP(XP_GetString(MK_MSG_TRASH_L10N_NAME)); - sDraftsName = XP_STRDUP(XP_GetString(MK_MSG_DRAFTS_L10N_NAME)); - sSentName = XP_STRDUP(XP_GetString(MK_MSG_SENT_L10N_NAME)); - sTemplatesName = XP_STRDUP(XP_GetString(MK_MSG_TEMPLATES_L10N_NAME)); -#else - sInboxName = XP_STRDUP("Inbox"); - sQueueName = XP_STRDUP("Unsent"); - sQueueOldName = XP_STRDUP("Outbox"); - sTrashName = XP_STRDUP("Trash"); - sDraftsName = XP_STRDUP("Drafts"); - sSentName = XP_STRDUP("Sent"); - sTemplatesName = XP_STRDUP("Templates"); -#endif - } - - if(whichOne == MK_MSG_INBOX_L10N_NAME) - returnValue = sInboxName; - else if(whichOne == MK_MSG_OUTBOX_L10N_NAME) - returnValue = sQueueName; - else if(whichOne == MK_MSG_OUTBOX_L10N_NAME_OLD) - returnValue = sQueueOldName; - else if(whichOne == MK_MSG_TRASH_L10N_NAME) - returnValue = sTrashName; - else if(whichOne == MK_MSG_DRAFTS_L10N_NAME) - returnValue = sDraftsName; - else if(whichOne == MK_MSG_SENT_L10N_NAME) - returnValue = sSentName; - else if(whichOne == MK_MSG_TEMPLATES_L10N_NAME) - returnValue = sTemplatesName; - else - XP_ASSERT(!"Bad index passed to MSG_GetSpecialFolderName."); - return returnValue; -} - -#ifdef XP_OS2 -// Netscape implementation of Folder names is pretty flawed. The file names of -// the special folders should be the same, regardless of the language. All -// that should change is the PrettyName. This additional code allows me to -// query the pretty names, while the above code uses the actual English -// names to represent the physical files. -static const char *sInboxPrettyName = NULL; -static const char *sQueuePrettyName = NULL; -static const char *sQueueOldPrettyName = NULL; -static const char *sTrashPrettyName = NULL; -static const char *sDraftsPrettyName = NULL; - -extern "C" const char *MSG_GetSpecialFolderPrettyName(int whichOne) -{ - const char *returnValue = NULL; - - if (sInboxPrettyName == NULL) - { - // first time through, need to initialize - sInboxPrettyName = XP_STRDUP(XP_GetString(MK_MSG_INBOX_L10N_NAME)); - sQueuePrettyName = XP_STRDUP(XP_GetString(MK_MSG_OUTBOX_L10N_NAME)); - sQueueOldPrettyName = XP_STRDUP(XP_GetString(MK_MSG_OUTBOX_L10N_NAME_OLD)); - sTrashPrettyName = XP_STRDUP(XP_GetString(MK_MSG_TRASH_L10N_NAME)); - sDraftsPrettyName = XP_STRDUP(XP_GetString(MK_MSG_DRAFTS_L10N_NAME)); - } - - if(whichOne == MK_MSG_INBOX_L10N_NAME) - returnValue = sInboxPrettyName; - else if(whichOne == MK_MSG_OUTBOX_L10N_NAME) - returnValue = sQueuePrettyName; - else if(whichOne == MK_MSG_OUTBOX_L10N_NAME_OLD) - returnValue = sQueueOldPrettyName; - else if(whichOne == MK_MSG_TRASH_L10N_NAME) - returnValue = sTrashPrettyName; - else if(whichOne == MK_MSG_DRAFTS_L10N_NAME) - returnValue = sDraftsPrettyName; - else - XP_ASSERT(!"Bad index passed to MSG_GetSpecialFolderName."); - return returnValue; -} -#endif - - -// Current queue folder name -static const char *sCurrentQueueFolderName = NULL; - -extern "C" const char * MSG_GetQueueFolderName() { - // Initial value is the i18n queue folder name, if it hasn't - // been tinkered with by MSG_SetQueueFolderName. - if (sCurrentQueueFolderName == NULL) - sCurrentQueueFolderName = QUEUE_FOLDER_NAME; - // don't free the return value - return (sCurrentQueueFolderName); -} - -extern "C" const char * MSG_SetQueueFolderName(const char *newName) { - sCurrentQueueFolderName = newName; - return sCurrentQueueFolderName; -} - -extern "C" XP_Bool -MSG_GetNoInlineAttachments(MSG_Prefs* prefs) -{ - return prefs->GetNoInlineAttachments(); -} - -extern "C" const char* MSG_GetPopHost(MSG_Prefs* prefs) { - return prefs->GetPopHost(); -} - -extern "C" XP_Bool MSG_GetAutoQuoteReply(MSG_Prefs* prefs) { - return prefs->GetAutoQuoteReply(); -} - -extern "C" void MSG_ToggleExpansion (MSG_Pane* pane, MSG_ViewIndex line, - int32* numchanged) { - CastLinePane(pane)->ToggleExpansion(line, numchanged); -} - - -extern "C" int32 MSG_ExpansionDelta(MSG_Pane* pane, MSG_ViewIndex line) { - return CastLinePane(pane)->ExpansionDelta(line); -} - - -extern "C" MSG_DragEffect MSG_DragMessagesStatus(MSG_Pane* pane, - const MSG_ViewIndex* indices, int32 numIndices, - const char* folderPath, MSG_DragEffect request) -{ - return pane->DragMessagesStatus(indices, numIndices, folderPath, request); -} - -extern "C" int MSG_CopyMessagesInto(MSG_Pane* pane, - const MSG_ViewIndex* indices, int32 numIndices, - const char* folderPath) -{ - return ConvertMsgErrToMKErr (pane->CopyMessages (indices, numIndices, folderPath, FALSE)); -} - -extern "C" int MSG_MoveMessagesInto(MSG_Pane* pane, - const MSG_ViewIndex *indices, int32 numIndices, - const char* folderPath) { - return ConvertMsgErrToMKErr(pane->CopyMessages (indices, numIndices, folderPath, TRUE)); -} - -extern "C" MSG_DragEffect MSG_DragMessagesIntoFolderStatus(MSG_Pane *pane, - const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder, - MSG_DragEffect request) -{ - return pane->DragMessagesStatus(indices, numIndices, folder, request); -} - -extern "C" int MSG_CopyMessagesIntoFolder (MSG_Pane *pane, - const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder) -{ - return ConvertMsgErrToMKErr( - pane->CopyMessages (indices, numIndices, folder,FALSE)); -} - -extern "C" int MSG_MoveMessagesIntoFolder (MSG_Pane *pane, - const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder) -{ - return ConvertMsgErrToMKErr( - pane->MoveMessages (indices, numIndices, folder)); -} - - -extern "C" int MSG_MoveFoldersInto (MSG_Pane *folderPane, - const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *destFolder) -{ - return ConvertMsgErrToMKErr - (CastFolderPane(folderPane)->MoveFolders ((MSG_ViewIndex*)indices, numIndices, destFolder, TRUE /*needExitFunc*/)); -} - - -extern "C" MSG_DragEffect MSG_DragFoldersIntoStatus(MSG_Pane *folderPane, - const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *destFolder, - MSG_DragEffect request) -{ - return CastFolderPane(folderPane)->DragFoldersStatus( - (MSG_ViewIndex*)indices, numIndices, destFolder, request); -} - - -extern "C" const char* MSG_GetFolderName(MSG_Pane* folderpane, - MSG_ViewIndex line) { - return CastFolderPane(folderpane)->GetFolderName(line); -} - - -extern "C" int32 MSG_GetNumLines(MSG_Pane* pane) { - return CastLinePane(pane)->GetNumLines(); -} - - -extern "C" MSG_ViewIndex MSG_GetFolderIndex(MSG_Pane* folderpane, - MSG_FolderInfo* info) { - return CastFolderPane(folderpane)->GetFolderIndex(info, FALSE); -} - -/* This routine should replace the above routine when people port over to it. - If expand is TRUE, we will expand the folderPane enough to - expose the passed in folder info. Otherwise, if the folder is collapsed, - we return MSG_ViewIndexNone. -*/ -extern MSG_ViewIndex MSG_GetFolderIndexForInfo(MSG_Pane *folderpane, - MSG_FolderInfo *info, - XP_Bool /*expand*/) -{ - return CastFolderPane(folderpane)->GetFolderIndex(info, TRUE); -} - - -extern "C" MSG_FolderInfo* MSG_GetFolderInfo(MSG_Pane* folderpane, - MSG_ViewIndex index) { - return CastFolderPane(folderpane)->GetFolderInfo(index); -} - -#ifdef FE_IMPLEMENTS_NEW_GET_FOLDER_INFO -extern "C" MSG_FolderInfo* MSG_GetFolderInfoFromURL(MSG_Master* master, const char *url, XP_Bool forGetUrl) -{ - if (url) - { - if (NET_URL_Type(url) == IMAP_TYPE_URL) - { - return master->GetFolderInfo(url, forGetUrl); // If IMAP, we may want to auto-create the folderInfo when - // trying to open it (i.e. someone clicked on an IMAP URL, for sharing folders) - // Note that we may create the FolderInfo, but we do not actually create - // the folder on the server. - } - else - { - return master->GetFolderInfo(url, FALSE); // We don't want to auto-create any other types of folderInfos - } - } - else - { - return NULL; // no URL passed, return NULL. - } -} -#else -extern "C" MSG_FolderInfo* MSG_GetFolderInfoFromURL(MSG_Master* master, const char *url) -{ - return master->GetFolderInfo(url, FALSE); -} -#endif - -/* returns folder info of host owning this folder*/ -extern "C" MSG_FolderInfo* GetHostFolderInfo(MSG_FolderInfo* info) -{ - MSG_FolderInfo *ret = 0; - if (info) - { - MSG_IMAPFolderInfoMail *imapFolder = info->GetIMAPFolderInfoMail(); - if (imapFolder) - ret = imapFolder->GetIMAPContainer(); - if (!ret) - { - MSG_FolderInfoNews *newsFolder = info->GetNewsFolderInfo(); - if (newsFolder && newsFolder->GetHost()) - ret = newsFolder->GetHost()->GetHostInfo(); - } - } - return ret; -} - - -extern "C" MSG_FolderInfo* MSG_GetThreadFolder(MSG_Pane* threadpane) -{ - return CastThreadPane(threadpane)->GetFolder(); -} - -#ifdef SUBSCRIBE_USE_OLD_API -extern "C" MSG_NewsHost *MSG_GetNewsHostFromIndex (MSG_Pane *folderPane, - MSG_ViewIndex index) -{ - return CastFolderPane (folderPane)->GetNewsHostFromIndex (index); -} -#endif /* SUBSCRIBE_USE_OLD_API */ - -extern "C" MSG_Host *MSG_GetHostFromIndex (MSG_Pane *folderPane, - MSG_ViewIndex index) -{ - return CastFolderPane (folderPane)->GetHostFromIndex(index); -} - -extern "C" int MSG_GetMessageLineForURL(MSG_Master *master, const char *url, MSG_MessageLine *msgLine) -{ - return master->GetMessageLineForURL(url, msgLine); -} - -extern "C" MSG_ViewIndex MSG_GetMessageIndexForKey(MSG_Pane* threadpane, MessageKey key, XP_Bool expand) -{ - return CastThreadPane(threadpane)->GetMessageIndex(key, expand); -} - - -extern "C" MessageKey MSG_GetMessageKey(MSG_Pane* threadpane, - MSG_ViewIndex index) { - return CastThreadPane(threadpane)->GetMessageKey(index); -} - -extern "C" XP_Bool MSG_GetUndoMessageKey( MSG_Pane *pane, - MSG_FolderInfo** pFolderInfo, - MessageKey* pKey) -{ - if (pFolderInfo && pKey) { - *pKey = pane->GetUndoManager()->GetAndRemoveMsgKey(); - *pFolderInfo = pane->GetUndoManager()->GetUndoMsgFolder(); - return *pKey != MSG_MESSAGEKEYNONE; - } - return FALSE; -} - -extern "C" UndoStatus MSG_GetUndoStatus(MSG_Pane *pane) -{ - return pane->GetUndoManager()->GetStatus(); -} - -extern "C" UndoMgrState MSG_GetUndoState(MSG_Pane *pane) -{ - return pane->GetUndoManager()->GetState(); -} - -extern "C" int MSG_GetKeyFromMessageId (MSG_Pane *pane, - const char *messageId, - MessageKey *outId) -{ - XP_ASSERT(pane && messageId && outId); - return pane->GetKeyFromMessageId (messageId,outId); -} - -extern "C" int32 MSG_GetFolderChildren(MSG_Master* master, - MSG_FolderInfo* folder, - MSG_FolderInfo** result, - int32 resultsize) { - return master->GetFolderChildren(folder, result, resultsize); -} - -extern "C" MSG_FolderInfo* MSG_GetLocalMailTree(MSG_Master* master) { - return master->GetLocalMailFolderTree(); -} - - -extern "C" int32 MSG_GetFoldersWithFlag(MSG_Master* master, - uint32 flags, - MSG_FolderInfo** result, - int32 resultsize) { - return master->GetFoldersWithFlag(flags, result, resultsize); -} - -extern "C" MSG_FolderInfo* MSG_GetCurFolder(MSG_Pane* pane) { - return pane->GetFolder(); -} - -extern "C" int MSG_CreateMailFolderWithPane (MSG_Pane *invokingPane, - MSG_Master *master, - MSG_FolderInfo *parent, - const char *childName) { - return ConvertMsgErrToMKErr(master->CreateMailFolder (invokingPane, parent, childName)); -} - -extern "C" int MSG_CreateMailFolder (MSG_Master *master, - MSG_FolderInfo *parent, - const char *childName) { - return ConvertMsgErrToMKErr(master->CreateMailFolder (NULL, parent, childName)); -} - -/* Call this from the new folder properties UI */ -extern int MSG_RenameMailFolder (MSG_Pane *folderPane, MSG_FolderInfo *folder, - const char *newName) -{ - return ConvertMsgErrToMKErr(CastFolderPane(folderPane)->RenameFolder (folder, newName)); -} - -// This function is currently only used to store filter rules destination -// folders. -extern "C" const char *MSG_GetFolderNameFromID(MSG_FolderInfo *f) { - if (f->GetType() == FOLDER_MAIL - || f->GetType() == FOLDER_IMAPMAIL) - { - MSG_FolderInfoMail *mailFolder = (MSG_FolderInfoMail *) f; - return mailFolder->GetPathname(); - } - return NULL; -} - -extern "C" void MSG_GetCurMessage(MSG_Pane* messagepane, - MSG_FolderInfo** folder, - MessageKey* key, - MSG_ViewIndex *index) { - CastMessagePane(messagepane)->GetCurMessage(folder, key, index); -} - - -extern int MSG_GetViewedAttachments(MSG_Pane* messagepane, - MSG_AttachmentData** data, - XP_Bool* iscomplete) { - return CastMessagePane(messagepane)->GetViewedAttachments(data, - iscomplete); -} - - -extern void MSG_FreeAttachmentList(MSG_Pane* messagepane, - MSG_AttachmentData* data) -{ - CastMessagePane(messagepane)->FreeAttachmentList(data); -} - - - -extern "C" URL_Struct * MSG_ConstructUrlForPane(MSG_Pane *pane) -{ - return pane->ConstructUrlForMessage(); -} - -extern "C" URL_Struct * MSG_ConstructUrlForMessage(MSG_Pane *pane, MessageKey key) -{ - return pane->ConstructUrlForMessage(key); -} - -extern "C" URL_Struct* MSG_ConstructUrlForFolder(MSG_Pane * /*pane*/, MSG_FolderInfo *folder) -{ - return MSG_Pane::ConstructUrl(folder); -} - -extern "C" XP_Bool -MSG_ShouldRot13Message(MSG_Pane* messagepane) -{ - return CastMessagePane(messagepane)->ShouldRot13Message(); -} - -extern MSG_Pane* -MSG_GetParentPane(MSG_Pane* progresspane) -{ - return progresspane->GetParentPane(); -} - - -extern "C" MSG_Pane* -MSG_MailDocument (MWContext *old_context) -{ - // For backwards compatability. - return MSG_MailDocumentURL(old_context,NULL); -} - -extern "C" MSG_Pane* -MSG_MailDocumentURL (MWContext *old_context,const char *url) -{ - // Don't allow a compose window to be created if the user hasn't - // specified an email address - const char *real_addr = FE_UsersMailAddress(); - if (MISC_ValidateReturnAddress(old_context, real_addr) < 0) - return NULL; - - MSG_CompositionFields* fields = new MSG_CompositionFields(); - if (!fields) return NULL; // Out of memory. - - /* It's so cool that there are half a dozen entrypoints to - composition-window-creation. */ - HG62239 - - /* If url is not specified, grab current history entry. */ - if (!url) { - History_entry *h = - (old_context ? SHIST_GetCurrent (&old_context->hist) : 0); - if (h && h->address && *h->address) { - url = h->address; - } - } -#if 1 /* Do this if we want to attach the target of Mail Document by default */ - - if (url) { - fields->SetHeader(MSG_ATTACHMENTS_HEADER_MASK, url); - } -#endif - - if (old_context && old_context->title) { - fields->SetHeader(MSG_SUBJECT_HEADER_MASK, old_context->title); - } - - if (url) { - fields->SetBody(url); - } - - XP_Bool prefBool = FALSE; - PREF_GetBoolPref("mail.attach_vcard",&prefBool); - fields->SetAttachVCard(prefBool); - - MSG_CompositionPane* comppane = (MSG_CompositionPane*) - FE_CreateCompositionPane(old_context, fields, NULL, MSG_DEFAULT); - if (!comppane) { - delete fields; - return NULL; - } - - HG42420 - XP_ASSERT(comppane->GetPaneType() == MSG_COMPOSITIONPANE); - return comppane; -} - - -extern "C" MSG_Pane* -MSG_Mail (MWContext *old_context) -{ - MSG_CompositionFields* fields = new MSG_CompositionFields(); - if (!fields) return NULL; // Out of memory. - - /* It's so cool that there are half a dozen entrypoints to - composition-window-creation. */ - HG42933 - - XP_Bool prefBool = FALSE; - PREF_GetBoolPref("mail.attach_vcard",&prefBool); - fields->SetAttachVCard(prefBool); - - MSG_CompositionPane* comppane = (MSG_CompositionPane*) - FE_CreateCompositionPane(old_context, fields, NULL, MSG_DEFAULT); - if (!comppane) { - delete fields; - return NULL; - } - - HG52965 - XP_ASSERT(comppane->GetPaneType() == MSG_COMPOSITIONPANE); - return comppane; -} - -extern "C" void -MSG_ResetUUEncode(MSG_Pane *pane) -{ - CastCompositionPane(pane)->m_confirmed_uuencode_p = FALSE; -} - -extern "C" MSG_CompositionFields* -MSG_CreateCompositionFields ( - const char *from, - const char *reply_to, - const char *to, - const char *cc, - const char *bcc, - const char *fcc, - const char *newsgroups, - const char *followup_to, - const char *organization, - const char *subject, - const char *references, - const char *other_random_headers, - const char *priority, - const char *attachment, - const char *newspost_url - HG66663 - ) -{ - MSG_CompositionFields* fields = new MSG_CompositionFields(); - - fields->SetFrom(from); - fields->SetReplyTo(reply_to); - fields->SetTo(to); - fields->SetCc(cc); - fields->SetBcc(bcc); - fields->SetFcc(fcc); - fields->SetNewsgroups(newsgroups); - fields->SetFollowupTo(followup_to); - fields->SetOrganization(organization); - fields->SetSubject(subject); - fields->SetReferences(references); - fields->SetOtherRandomHeaders(other_random_headers); - fields->SetAttachments(attachment); - fields->SetNewspostUrl(newspost_url); - fields->SetPriority(priority); - HG65243 - return fields; -} - -extern "C" void -MSG_DestroyCompositionFields(MSG_CompositionFields *fields) -{ - delete fields; -} - -extern "C" void -MSG_SetCompFieldsReceiptType(MSG_CompositionFields *fields, - int32 type) -{ - fields->SetReturnReceiptType(type); -} - -extern "C" int32 -MSG_GetCompFieldsReceiptType(MSG_CompositionFields *fields) -{ - return fields->GetReturnReceiptType(); -} - -extern "C" int -MSG_SetCompFieldsBoolHeader(MSG_CompositionFields *fields, - MSG_BOOL_HEADER_SET header, - XP_Bool bValue) -{ - return fields->SetBoolHeader(header, bValue); -} - -extern "C" XP_Bool -MSG_GetCompFieldsBoolHeader(MSG_CompositionFields *fields, - MSG_BOOL_HEADER_SET header) -{ - return fields->GetBoolHeader(header); -} - -extern "C" XP_Bool -MSG_GetForcePlainText(MSG_CompositionFields* fields) -{ - return fields->GetForcePlainText(); -} - -extern "C" MSG_Pane* -MSG_ComposeMessage (MWContext *old_context, - const char *from, - const char *reply_to, - const char *to, - const char *cc, - const char *bcc, - const char *fcc, - const char *newsgroups, - const char *followup_to, - const char *organization, - const char *subject, - const char *references, - const char *other_random_headers, - const char *priority, - const char *attachment, - const char *newspost_url, - const char *body, - HG00282 - XP_Bool force_plain_text, - const char* html_part - ) -{ - // Don't allow a compose window to be created if the user hasn't - // specified an email address - const char *real_addr = FE_UsersMailAddress(); - if (MISC_ValidateReturnAddress(old_context, real_addr) < 0) - return NULL; - - - HG02872 - - - MSG_CompositionFields* fields = - MSG_CreateCompositionFields(from, reply_to, to, cc, bcc, - fcc, newsgroups, followup_to, - organization, subject, references, - other_random_headers, priority, attachment, - newspost_url HG65241); - - fields->SetForcePlainText(force_plain_text); - fields->SetHTMLPart(html_part); - fields->SetDefaultBody(body); - - XP_Bool prefBool = FALSE; - PREF_GetBoolPref("mail.attach_vcard",&prefBool); - fields->SetAttachVCard(prefBool); - - MSG_CompositionPane* comppane = (MSG_CompositionPane*) - FE_CreateCompositionPane(old_context, fields, NULL, MSG_DEFAULT); - if (!comppane) { - delete fields; - return NULL; - } - - XP_ASSERT(comppane->GetPaneType() == MSG_COMPOSITIONPANE); - return comppane; -} - - -extern "C" XP_Bool -MSG_ShouldAutoQuote(MSG_Pane* comppane) -{ - return CastCompositionPane(comppane)->ShouldAutoQuote(); -} - -extern "C" const char* -MSG_GetCompHeader(MSG_Pane* comppane, MSG_HEADER_SET header) -{ - return CastCompositionPane(comppane)->GetCompHeader(header); -} - - -extern "C" int -MSG_SetCompHeader(MSG_Pane* comppane, MSG_HEADER_SET header, const char* value) -{ - return CastCompositionPane(comppane)->SetCompHeader(header, value); -} - - -extern "C" XP_Bool -MSG_GetCompBoolHeader(MSG_Pane* comppane, MSG_BOOL_HEADER_SET header) -{ - return CastCompositionPane(comppane)->GetCompBoolHeader(header); -} - - -extern "C" int -MSG_SetCompBoolHeader(MSG_Pane* comppane, MSG_BOOL_HEADER_SET header, XP_Bool bValue) -{ - return CastCompositionPane(comppane)->SetCompBoolHeader(header, bValue); -} - - -extern "C" const char* -MSG_GetCompBody(MSG_Pane* comppane) -{ - return CastCompositionPane(comppane)->GetCompBody(); -} - - -extern "C" int -MSG_SetCompBody(MSG_Pane* comppane, const char* value) -{ - return CastCompositionPane(comppane)->SetCompBody(value); -} - - - -extern "C" void -MSG_QuoteMessage(MSG_Pane* comppane, - int (*func)(void* closure, const char* data), - void* closure) -{ - CastCompositionPane(comppane)->QuoteMessage(func, closure); -} - - -extern "C" int -MSG_SanityCheck(MSG_Pane* comppane, int skippast) -{ - return CastCompositionPane(comppane)->SanityCheck(skippast); -} - - - - -extern "C" const char* -MSG_GetAssociatedURL(MSG_Pane* comppane) -{ - return CastCompositionPane(comppane)->GetDefaultURL(); -} - - -extern "C" void -MSG_MailCompositionAllConnectionsComplete(MSG_Pane* comppane) -{ - CastCompositionPane(comppane)->MailCompositionAllConnectionsComplete(); -} - - -extern "C" XP_Bool -MSG_IsHTMLOK(MSG_Master* master, MSG_FolderInfo* group) -{ - return master->IsHTMLOK(group); -} - - -extern "C" int -MSG_SetIsHTMLOK(MSG_Master* master, MSG_FolderInfo* group, MWContext* context, - XP_Bool value) -{ - return master->SetIsHTMLOK(group, context, value); -} - - -extern "C" int -MSG_PastePlaintextQuotation(MSG_Pane* comppane, const char* string) -{ - return CastCompositionPane(comppane)->PastePlaintextQuotation(string); -} - -extern "C" char* -MSG_UpdateHeaderContents(MSG_Pane* comppane, - MSG_HEADER_SET header, - const char* value) -{ - return CastCompositionPane(comppane)->UpdateHeaderContents(header, value); -} - - - -extern "C" int -MSG_SetAttachmentList(MSG_Pane* comppane, - struct MSG_AttachmentData* list) -{ - return CastCompositionPane(comppane)->SetAttachmentList(list); -} - - -extern "C" const struct MSG_AttachmentData* -MSG_GetAttachmentList(MSG_Pane* comppane) -{ - return CastCompositionPane(comppane)->GetAttachmentList(); -} - - -extern "C" MSG_HEADER_SET MSG_GetInterestingHeaders(MSG_Pane* comppane) -{ - return CastCompositionPane(comppane)->GetInterestingHeaders(); -} - - - - - - - - - -// ###tw The below is all stuff called from netlib; it's probably all wrong. - - - -extern "C" XP_Bool -MSG_BeginMailDelivery(MSG_Pane* pane) -{ - /* #### Switch to the right folder or something; return false if we - can't accept new mail for some reason (other than disk space.) - */ - pane->BeginMailDelivery(); - return TRUE; -} - -extern "C" void -MSG_AbortMailDelivery (MSG_Pane* pane) -{ - // not sure we have to do anything different. - pane->EndMailDelivery(); -} - -extern "C" void -MSG_EndMailDelivery (MSG_Pane* pane) -{ - pane->EndMailDelivery(); -} - - -extern "C" void* -MSG_IncorporateBegin(MSG_Pane* pane, - FO_Present_Types format_out, - char *pop3_uidl, - URL_Struct *url, - uint32 flags) -{ - return pane->IncorporateBegin(format_out, pop3_uidl, url, flags); -} - - - -extern "C" -int MSG_IncorporateWrite(MSG_Pane* pane, void *closure, - const char *block, int32 length) -{ - return pane->IncorporateWrite(closure, block, length); -} - - -extern "C" -int MSG_IncorporateComplete(MSG_Pane* pane, void *closure) -{ - return pane->IncorporateComplete(closure); -} - - -extern "C" -void MSG_ClearSenderAuthedFlag(MSG_Pane *pane, void *closure) -{ - if (pane && closure) - pane->ClearSenderAuthedFlag(closure); -} - - -extern "C" -int MSG_IncorporateAbort(MSG_Pane* pane, void *closure, int status) -{ - return pane->IncorporateAbort(closure, status); -} - - -extern "C" int -MSG_MarkMessageKeyRead(MSG_Pane* pane, MessageKey key, - const char *xref) -{ - return pane->MarkMessageKeyRead(key, xref); -} - - -extern "C" void -MSG_ActivateReplyOptions(MSG_Pane* messagepane, MimeHeaders* headers) -{ - CastMessagePane(messagepane)->ActivateReplyOptions(headers); -} - - -extern "C" int -MSG_AddNewNewsGroup(MSG_Pane* pane, MSG_NewsHost* host, - const char* groupname, int32 oldest, int32 youngest, - const char *flag, XP_Bool bXactiveFlags) -{ - return pane->AddNewNewsGroup(host, groupname, oldest, youngest, flag, bXactiveFlags); -} - -extern "C" int -MSG_SetGroupNeedsExtraInfo(MSG_NewsHost *host, const char* groupname, XP_Bool needsExtra) -{ - return host->SetGroupNeedsExtraInfo(groupname, needsExtra); -} - -extern "C" char *MSG_GetFirstGroupNeedingExtraInfo(MSG_NewsHost *host) -{ - return host->GetFirstGroupNeedingExtraInfo(); -} - -extern "C" int -MSG_AddPrettyName(MSG_NewsHost* host, const char *groupName, - const char *prettyName) -{ - return host->SetPrettyName(groupName, prettyName); -} - -extern "C" int MSG_SetXActiveFlags(MSG_Pane* /*pane*/, char* /*groupName*/, - int32 /*firstPossibleArt*/, - int32 /*lastPossibleArt*/, - char* /*flags*/) -{ - return 0; -} - - -extern "C" time_t -MSG_NewsgroupsLastUpdatedTime(MSG_NewsHost* host) -{ - XP_ASSERT(host); - if (!host) return 0; - return host->getLastUpdate(); -} - -extern "C" XP_Bool MSG_IsDuplicatePost(MSG_Pane* comppane) { - // if we're sending from the outbox, we don't have a compostion pane, so guess NO. - return (comppane->GetPaneType() == MSG_COMPOSITIONPANE) - ? CastCompositionPane(comppane)->IsDuplicatePost() - : FALSE; -} - - -extern "C" void -MSG_ClearCompositionMessageID(MSG_Pane* comppane) -{ - if (comppane->GetPaneType() == MSG_COMPOSITIONPANE) - CastCompositionPane(comppane)->ClearCompositionMessageID(); -} - - -extern "C" const char* -MSG_GetCompositionMessageID(MSG_Pane* comppane) -{ - return (comppane->GetPaneType() == MSG_COMPOSITIONPANE) - ? CastCompositionPane(comppane)->GetCompositionMessageID() - : 0; -} - - -extern "C" -void MSG_PrepareToIncUIDL(MSG_Pane* messagepane, URL_Struct* url, - const char* uidl) -{ - CastMessagePane(messagepane)->PrepareToIncUIDL(url, uidl); -} - - -extern "C" -char* MSG_GeneratePartialMessageBlurb (MSG_Pane* messagepane, - URL_Struct *url, void *closure, - MimeHeaders *headers HG73530) { - return CastMessagePane(messagepane)->GeneratePartialMessageBlurb(url, - closure, - headers HG73530); -} - -// the following two functions are used by mkmailbx.c to process -// background message copying. - -extern "C" -int MSG_BeginCopyingMessages(MWContext *context) -{ - return context->msgCopyInfo->srcFolder->BeginCopyingMessages( - context->msgCopyInfo->dstFolder, - context->msgCopyInfo->srcDB, - context->msgCopyInfo->srcArray, - NULL, /* do not launch in url queue */ - context->msgCopyInfo->srcCount, - context->msgCopyInfo); -} - -extern "C" -int MSG_FinishCopyingMessages(MWContext *context) -{ - return context->msgCopyInfo->srcFolder->FinishCopyingMessages( - context, - context->msgCopyInfo->srcFolder, - context->msgCopyInfo->dstFolder, - context->msgCopyInfo->srcDB, - context->msgCopyInfo->srcArray, - context->msgCopyInfo->srcCount, - &context->msgCopyInfo->moveState); -} - -extern "C" -void MSG_MessageCopyIsCompleted(MessageCopyInfo **info) -{ - (*info)->srcFolder->CleanupCopyMessagesInto (info); -} - -extern "C" -XP_Bool MSG_IsMessageCopyFinished(struct MessageCopyInfo *info) -{ - // if we have no info, probably better to say copy is finished. - // This can happen if we're interrupted, it seems. - return (info) ? info->moveState.moveCompleted : TRUE; -} - - - -extern "C" -int MSG_BeginOpenFolderSock(MSG_Pane* pane, - const char *folder_name, - const char *message_id, int32 msgnum, - void **folder_ptr) -{ - return pane->BeginOpenFolderSock(folder_name, message_id, msgnum, - folder_ptr); -} - -extern "C" -int MSG_FinishOpenFolderSock(MSG_Pane* pane, - const char *folder_name, - const char *message_id, int32 msgnum, - void **folder_ptr) -{ - return pane->FinishOpenFolderSock(folder_name, message_id, msgnum, - folder_ptr); -} - -extern "C" -void MSG_CloseFolderSock(MSG_Pane* pane, const char *folder_name, - const char *message_id, int32 msgnum, - void *folder_ptr) -{ - pane->CloseFolderSock(folder_name, message_id, msgnum, folder_ptr); -} - -extern "C" -int MSG_OpenMessageSock(MSG_Pane* pane, const char *folder_name, - const char *msg_id, int32 msgnum, - void *folder_ptr, void **message_ptr, - int32 *content_length) -{ - return pane->OpenMessageSock(folder_name, msg_id, - msgnum, folder_ptr, - message_ptr, - content_length); -} - -extern "C" -int MSG_ReadMessageSock(MSG_Pane* pane, const char *folder_name, - void *message_ptr, const char *message_id, - int32 msgnum, char *buffer, int32 buffer_size) -{ - return pane->ReadMessageSock(folder_name, - message_ptr, message_id, - msgnum, buffer, - buffer_size); -} - -extern "C" -void MSG_CloseMessageSock(MSG_Pane* pane, - const char *folder_name, - const char *message_id, int32 msgnum, - void *message_ptr) -{ - pane->CloseMessageSock(folder_name, message_id, - msgnum, message_ptr); -} - - -extern "C" -int MSG_BeginCompressFolder(MSG_Pane* pane, URL_Struct* url, - const char* foldername, void** closure) -{ - return pane->BeginCompressFolder(url, foldername, closure); -} - -extern "C" -int MSG_FinishCompressFolder(MSG_Pane* pane, URL_Struct* url, - const char* foldername, void* closure) -{ - return pane->FinishCompressFolder(url, foldername, closure); -} - -extern "C" -int MSG_CloseCompressFolderSock(MSG_Pane* pane, URL_Struct* url, - void* closure) -{ - return pane->CloseCompressFolderSock(url, closure); -} - - -extern "C" -int MSG_BeginDeliverQueued(MSG_Pane* pane, URL_Struct* url, - void** closure) -{ - return pane->BeginDeliverQueued(url, closure); -} - -extern "C" -int MSG_FinishDeliverQueued(MSG_Pane* pane, URL_Struct* url, - void* closure) -{ - return pane->FinishDeliverQueued(url, closure); -} - -extern "C" -int MSG_CloseDeliverQueuedSock(MSG_Pane* pane, URL_Struct* url, - void* closure) -{ - return pane->CloseDeliverQueuedSock(url, closure); -} - - - -// Navigation routines - -extern "C" -int MSG_ViewNavigate(MSG_Pane* pane, MSG_MotionType motion, - MSG_ViewIndex startIndex, - MessageKey *resultKey, MSG_ViewIndex *resultIndex, - MSG_ViewIndex *pThreadIndex, - MSG_FolderInfo **folderInfo) -{ - if (folderInfo) - *folderInfo = NULL; - return pane->ViewNavigate(motion, startIndex, - resultKey, resultIndex, pThreadIndex, folderInfo); -} - -extern "C" -int MSG_DataNavigate(MSG_Pane* threadpane, MSG_MotionType motion, - MessageKey startKey, MessageKey *resultKey, - MessageKey *resultThreadKey) -{ - return CastThreadPane(threadpane)->DataNavigate(motion, startKey, - resultKey, resultThreadKey); -} - -extern "C" int MSG_NavigateStatus(MSG_Pane* pane, - MSG_MotionType command, - MSG_ViewIndex index, - XP_Bool *selectable_p, - const char **display_string) - { - return ConvertMsgErrToMKErr(pane->GetNavigateStatus(command, - index, - selectable_p, - display_string)); -} - -extern "C" int MSG_MarkReadByDate (MSG_Pane* pane, time_t startDate, time_t endDate) -{ - return ConvertMsgErrToMKErr(pane->MarkReadByDate(startDate, endDate)); -} - -extern "C" void MSG_RecordImapMessageFlags(MSG_Pane* pane, - MessageKey msgKey, - imapMessageFlagsType flags) -{ - if (pane) // there is no pane during a biff - { - MessageDBView *dbView = pane->GetMsgView(); - if (dbView) - { - MessageDB *db = dbView->GetDB(); - if (db) - { - db->MarkRead( msgKey, (flags & kImapMsgSeenFlag) != 0); - db->MarkReplied(msgKey, (flags & kImapMsgAnsweredFlag) != 0); - db->MarkMarked( msgKey, (flags & kImapMsgFlaggedFlag) != 0); - } - } - } -} - -extern "C" void MSG_ImapMsgsDeleted(MSG_Pane *urlPane, - const char *onlineMailboxName, - const char *hostName, - XP_Bool deleteAllMsgs, - const char *doomedKeyString) -{ - MSG_IMAPFolderInfoMail *affectedFolder = urlPane->GetMaster()->FindImapMailFolder(hostName, onlineMailboxName, NULL, FALSE); - if (affectedFolder) - affectedFolder->MessagesWereDeleted(urlPane, deleteAllMsgs, doomedKeyString); -} - -/* notify libmsg that inbox filtering is complete */ -extern "C" void MSG_ImapInboxFilteringComplete(MSG_Pane * /*urlPane*/) -{ -} - -/* notify libmsg that the online/offline synch is complete */ -extern "C" void MSG_ImapOnOffLineSynchComplete(MSG_Pane * /*urlPane*/) -{ -} - -extern "C" void MSG_GetNextURL(MSG_Pane *pane) -{ - if (pane && pane->GetURLChain()) - pane->GetURLChain()->GetNextURL(); -} - -/* notify libmsg that an imap folder load was interrupted */ -extern "C" void MSG_InterruptImapFolderLoad(MSG_Pane *urlPane, const char *hostName, const char *onlineFolderPath) -{ - if (urlPane && onlineFolderPath) - { - MSG_IMAPFolderInfoMail *interruptBox = urlPane->GetMaster()->FindImapMailFolder(hostName, onlineFolderPath, NULL, FALSE); - if (interruptBox) - interruptBox->NotifyFolderLoaded(urlPane, TRUE); // TRUE, load was interrupted - } -} - -extern "C" MSG_FolderInfo* MSG_FindImapFolder(MSG_Pane *urlPane, const char *hostName, const char *onlineFolderPath) -{ - MSG_FolderInfo *returnBox = NULL; - if (urlPane && onlineFolderPath && hostName) - returnBox = urlPane->GetMaster()->FindImapMailFolder(hostName, onlineFolderPath, NULL, FALSE); - return returnBox; -} - -extern "C" MSG_FolderInfo *MSG_SetFolderRunningIMAPUrl(MSG_Pane *urlPane, const char *hostName, const char *onlineFolderPath, MSG_RunningState running) -{ - MSG_IMAPFolderInfoMail *imapFolder = NULL; - if (urlPane && onlineFolderPath && MSG_Pane::PaneInMasterList(urlPane)) - { - imapFolder = urlPane->GetMaster()->FindImapMailFolder(hostName, onlineFolderPath, NULL, FALSE); - if (imapFolder) - { - // check to see that we're not already running an imap url in this folder. -#ifdef DEBUG_bienvenu - XP_ASSERT(running != MSG_RunningOnline || imapFolder->GetRunningIMAPUrl() != MSG_RunningOnline); -#endif - imapFolder->SetRunningIMAPUrl(running); - } - } - return imapFolder; -} - -extern "C" void MSG_IMAPUrlFinished(MSG_FolderInfo *folder, URL_Struct *URL_s) -{ - if (!folder) - return; - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - if (imapFolder) - { - // really want to check if there are offline imap events, and find a url queue, - // and add them. - if (imapFolder->GetHasOfflineEvents()) - { - // find a url queue for this pane. - MSG_UrlQueue *queue = MSG_UrlQueue::FindQueue (URL_s->msg_pane); -#ifdef DEBUG_bienvenu - XP_ASSERT(queue); -#endif - if (queue) // send some sort of url so we can chain correctly - this may be the wrong one to send. - { - // I think this causes an allconnectionscomplete to get called because there's no bg object, so - // the url returns right a way. This is probably a bad thing. - queue->AddUrl("mailbox:?null", MSG_IMAPFolderInfoMail::URLFinished); - } - } - } - else - { - XP_ASSERT(FALSE); - } -} - - -extern "C" void MSG_StoreNavigatorIMAPConnectionInMoveState(MWContext *context, - TNavigatorImapConnection *connection) -{ - if (context->msgCopyInfo) - { - context->msgCopyInfo->moveState.imap_connection = connection; - if (connection) - { - IMAP_UploadAppendMessageSize(connection, context->msgCopyInfo->moveState.msgSize,context->msgCopyInfo->moveState.msg_flags); - context->msgCopyInfo->moveState.haveUploadedMessageSize = TRUE; - } - } -} - -/* If there is a cached connection, uncache it and return it */ -extern "C" TNavigatorImapConnection* MSG_UnCacheImapConnection(MSG_Master* master, const char *host, const char *folderName) -{ - return master->UnCacheImapConnection(host, folderName); -} - -/* Cache this connection and return TRUE if there is not one there already, else false */ -extern "C" XP_Bool MSG_TryToCacheImapConnection(MSG_Master* master, const char *host, const char *folderName, - TNavigatorImapConnection *connection) -{ - return master->TryToCacheImapConnection(connection, host, folderName); -} - - -// The following are the MSG_ routines called by libnet in response to -// a news url. They turn around and delegate the commands to -// a ListNewsGroupState object owned by the folder pane. This is a step -// towards having an nntp state object which is a subclass of some -// generic asynchronous state object to be designed later. -// One thing that bothers me about using a pane for this is that potentially -// some of this stuff could happen without a pane being up. The asynchronous -// state object architecture should address this. -extern "C" int -MSG_GetRangeOfArtsToDownload(MSG_Pane* pane, void** data, MSG_NewsHost* host, - const char* group_name, - int32 first_possible, - int32 last_possible, - int32 maxextra, - int32* first, - int32* last) -{ - ListNewsGroupState *listState = pane->GetMaster()->GetListNewsGroupState(host, group_name); - if (data) - *data = listState; - if (pane != NULL && listState != NULL) - { - return listState->GetRangeOfArtsToDownload( - host, group_name, first_possible, - last_possible, maxextra, first, last); - } - else - { -// XP_ASSERT(FALSE); - return 0; - } -} - -int -MSG_AddToKnownArticles(MSG_Pane* pane, MSG_NewsHost* host, - const char* group_name, int32 first, int32 last) -{ - ListNewsGroupState *listState = - pane->GetMaster()->GetListNewsGroupState(host, group_name); - if (pane != NULL && listState != NULL) - { - return listState->AddToKnownArticles(host, group_name, first, last); - } - else - { -// XP_ASSERT(FALSE); - return 0; - } -} - -extern "C" int MSG_InitAddArticleKeyToGroup(MSG_Pane *pane, MSG_NewsHost* host, - const char* groupName, void **parseState) -{ - *parseState = new ListNewsGroupArticleKeysState(host, groupName, pane); - return 0; -} - -extern "C" int MSG_AddArticleKeyToGroup(void *parseState, int32 key) -{ - ListNewsGroupArticleKeysState *state = (ListNewsGroupArticleKeysState *) parseState; - if (state) - state->AddArticleKey(key); - return 0; -} - -extern "C" int MSG_FinishAddArticleKeyToGroup(MSG_Pane* /*pane*/, void **parseState) -{ - ListNewsGroupArticleKeysState *state = (ListNewsGroupArticleKeysState *) *parseState; - delete state; - *parseState = NULL; - return 0; -} - -extern "C" int MSG_SynchronizeNewsFolder(MSG_Pane *pane, MSG_FolderInfo *folder) -{ - char *url = folder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - URL_Struct *url_struct; - char *syncUrl = PR_smprintf("%s/?list-ids", - url); - url_struct = NET_CreateURLStruct (syncUrl, NET_NORMAL_RELOAD); - XP_FREE (syncUrl); - if (!url_struct) - return MK_OUT_OF_MEMORY; - pane->GetURL(url_struct, FALSE); - XP_FREE(url); - return 0; -} - - -extern "C" int -MSG_InitXOVER (MSG_Pane* pane, - MSG_NewsHost* host, - const char *group_name, - uint32 first_msg, uint32 last_msg, - uint32 oldest_msg, uint32 youngest_msg, - void ** parse_data) -{ - ListNewsGroupState *listState = - pane->GetMaster()->GetListNewsGroupState(host, group_name); - - *parse_data = listState; - - if (pane != NULL && listState != NULL) - { - return listState->InitXOVER(host, group_name, first_msg, last_msg, - oldest_msg, youngest_msg); - } - else - { - XP_ASSERT(FALSE); - return 0; - } -} - -extern "C" int -MSG_ProcessXOVER (MSG_Pane* pane, char *line, void ** data ) -{ - if (data) - { - ListNewsGroupState *listState = (ListNewsGroupState *) *data; - if (pane != NULL && listState != NULL) - return listState->ProcessXOVER(line); - - } - XP_ASSERT(FALSE); - return 0; -} - -extern "C" int -MSG_ResetXOVER (MSG_Pane* /*pane*/, void ** data) -{ - if (data && *data) - { - ListNewsGroupState *listState = (ListNewsGroupState *) *data; - return listState->ResetXOVER(); - } - else - { - // we don't assert, because this can happen when we re-validate against a news server - return 0; - } -} - - -extern "C" int -MSG_ProcessNonXOVER (MSG_Pane* pane, char *line, void ** data) -{ - if (data) - { - ListNewsGroupState *listState = (ListNewsGroupState *) *data; - if (pane != NULL && listState != NULL) - return listState->ProcessNonXOVER(line); - } - XP_ASSERT(FALSE); - return 0; -} - -extern "C" int -MSG_FinishXOVER (MSG_Pane* pane, void **data, int status) -{ - // first check if pane has been deleted out from under us. - if (!MSG_Pane::PaneInMasterList(pane)) - return 0; - MSG_Master *master = pane->GetMaster(); - ListNewsGroupState *listState = NULL; - MSG_FolderInfo *folder = pane->GetFolder(); - MSG_FolderInfoNews *newsFolder = (folder) ? folder->GetNewsFolderInfo() : 0; - if (data && *data) - listState = (ListNewsGroupState *) *data; - else - { - if (newsFolder) - listState = newsFolder->GetListNewsGroupState(); - } - if (pane!= NULL && listState != NULL) - { - *data = NULL; - status = listState->FinishXOVER(status); - // now that we can get the folderinfo from the pane, can avoid lookup in master - if (newsFolder && newsFolder->GetListNewsGroupState() == listState) - { - newsFolder->SetListNewsGroupState(NULL); - delete listState; - } - else - master->ClearListNewsGroupState(listState->GetHost(), - listState->GetGroupName()); - return status; - } -// XP_ASSERT(FALSE); - return 0; -} - -extern "C" XP_Bool MSG_IsOfflineArticle (MSG_Pane *pane, - const char *message_id, - const char **groupName, - uint32 *message_number_return) -{ - if (!message_id) return FALSE; - - if (!pane->GetFolder() || !pane->GetFolder()->IsNews()) - return FALSE; - - MessageDBView *view = pane->GetMsgView(); - if (!view) - return FALSE; - NewsGroupDB *newsDB = view->GetDB()->GetNewsDB(); - MessageKey msgKey = newsDB->GetMessageKeyForID(message_id); - if (msgKey != MSG_MESSAGEKEYNONE) - { - MSG_FolderInfo *folderInfo = pane->GetFolder(); - if (folderInfo != NULL && folderInfo->IsNews()) - { - MSG_FolderInfoNews *newsFolderInfo = - (MSG_FolderInfoNews *) folderInfo; - *groupName = newsFolderInfo->GetNewsgroupName(); - *message_number_return = msgKey; - } - return newsDB->IsArticleOffline(msgKey); - } - else - return FALSE; -} - -extern "C" int MSG_StartOfflineRetrieval(MSG_Pane *pane, - const char *group, - uint32 messageNumber, - void **offlineState) -{ - *offlineState = (void *) new MSG_OfflineNewsArtState(pane, group, messageNumber); - return 0; -} - -extern "C" int MSG_ProcessOfflineNews(void *offlineState, char *outputBuffer, int outputBufSize) -{ - - MSG_OfflineNewsArtState *offlineNewsArtState = (MSG_OfflineNewsArtState *) offlineState; - int status= offlineNewsArtState->Process(outputBuffer, outputBufSize); - if (status <= 0) - delete offlineNewsArtState; - return status; -} - -extern "C" int MSG_InterruptOfflineNews(void *offlineState) -{ - - MSG_OfflineNewsArtState *offlineNewsArtState = (MSG_OfflineNewsArtState *) offlineState; - offlineNewsArtState->Interrupt(); - - return 0; -} - -/* OFFLINE IMAP OPERATIONS and settings - ==================================== -*/ -extern "C" uint32 MSG_GetImapMessageFlags(MSG_Pane *urlPane, - const char *hostName, - const char *onlineBoxName, - uint32 key) -{ - uint32 flags = 0; - if (urlPane && urlPane->GetMaster()) - { - MSG_IMAPFolderInfoMail *imapFolder = urlPane->GetMaster()->FindImapMailFolder(hostName, onlineBoxName, NULL, FALSE); - if (imapFolder) - { - XP_Bool wasCreated=FALSE; - MailDB *imapDB = NULL; - ImapMailDB::Open(imapFolder->GetPathname(), TRUE, &imapDB, imapFolder->GetMaster(), &wasCreated); - if (imapDB) - { - MailMessageHdr *mailhdr = imapDB->GetMailHdrForKey(key); - if (mailhdr) - { - flags = mailhdr->GetFlags(); - delete mailhdr; - } - imapDB->Close(); - } - } - } - return flags; -} - -extern "C" void MSG_StartOfflineImapRetrieval(MSG_Pane *urlPane, - const char *hostName, - const char *onlineBoxName, - uint32 key, - void **offLineRetrievalData) -{ - if (urlPane && urlPane->GetMaster()) - { - MSG_IMAPFolderInfoMail *imapFolder = urlPane->GetMaster()->FindImapMailFolder(hostName, onlineBoxName, NULL, FALSE); - if (imapFolder) - *offLineRetrievalData = new DisplayOfflineImapState(imapFolder, key); - } -} - - -extern "C" uint32 MSG_GetOfflineMessageSize(void *offLineRetrievalData) -{ - return ( (DisplayOfflineImapState *) offLineRetrievalData)->GetMsgSize(); -} - -extern "C" int MSG_ProcessOfflineImap(void *offLineRetrievalData, char *socketBuffer, uint32 read_size) -{ - DisplayOfflineImapState *state = (DisplayOfflineImapState *) offLineRetrievalData; - int status = state->ProcessDisplay(socketBuffer, read_size); - if (status == 0) - delete state; - return status; -} - -extern "C" int MSG_InterruptOfflineImap(void *offLineRetrievalData) -{ - DisplayOfflineImapState *state = (DisplayOfflineImapState *) offLineRetrievalData; - delete state; - return MK_INTERRUPTED; -} - - -// This whole routine should go away and be replaced with a mechanism whereby -// we create a url which asks for an article number in a particular newsgroup. -// It makes at least one potentially bad assumption: -// 1. The groupName returned from MSG_FolderInfoNews *can be returned -// It also doesn't try to find a news pane like the old routine did. -// Its implementation shouldn't be in msgglue, but where should it be? -// In thread pane? message pane? Master? -extern "C" void MSG_NewsGroupAndNumberOfID (MSG_Pane *pane, - const char *message_id, - const char **groupName, - uint32 *message_number_return) -{ - *groupName = 0; - *message_number_return = 0; - if (!message_id) - return; - - if (!pane->GetFolder() || !pane->GetFolder()->IsNews()) - return; - - MessageDBView *view = pane->GetMsgView(); - if (!view || !view->GetDB()) - return; - *message_number_return = view->GetDB()->GetMessageKeyForID(message_id); - MSG_FolderInfo *folderInfo = pane->GetFolder(); - if (folderInfo != NULL && folderInfo->IsNews()) - { - MSG_FolderInfoNews *newsFolderInfo = - (MSG_FolderInfoNews *) folderInfo; - *groupName = newsFolderInfo->GetNewsgroupName(); - } - -} - - -extern "C" int32 -MSG_GetNewsRCCount(MSG_Pane* pane, MSG_NewsHost* host) -{ - return pane->GetNewsRCCount(host); -} - - -extern "C" char* -MSG_GetNewsRCGroup(MSG_Pane* pane, MSG_NewsHost* host) -{ - return pane->GetNewsRCGroup(host); -} - - -extern "C" int -MSG_DisplaySubscribedGroup(MSG_Pane* pane, - MSG_NewsHost* host, - const char *group, - int32 oldest_message, - int32 youngest_message, - int32 total_messages, - XP_Bool nowvisiting) -{ - XP_ASSERT(pane); - if (!pane) return -1; - return pane->DisplaySubscribedGroup(host, - group, - oldest_message, - youngest_message, - total_messages, - nowvisiting); -} - -extern "C" int -MSG_GroupNotFound(MSG_Pane* pane, MSG_NewsHost* host, const char *group, XP_Bool opening) -{ - XP_ASSERT(pane); - if (!pane) return -1; - pane->GroupNotFound(host, group, opening); - return 0; -} - - - -extern "C" MSG_Pane* -MSG_CreateSubscribePane(MWContext* context, - MSG_Master* master) -{ - return MSG_SubscribePane::Create(context, master); -} - - -#ifdef SUBSCRIBE_USE_OLD_API -extern "C" MSG_Pane* -MSG_CreateSubscribePaneOnHost(MWContext* context, - MSG_Master* master, - MSG_NewsHost* host) -{ - return MSG_SubscribePane::Create(context, master, host); -} -#endif /* SUBSCRIBE_USE_OLD_API */ - - -extern "C" MSG_Pane* -MSG_CreateSubscribePaneForHost(MWContext* context, - MSG_Master* master, - MSG_Host* host) -{ - return MSG_SubscribePane::Create(context, master, host); -} - - -extern "C" int32 -MSG_GetNewsHosts(MSG_Master* master, MSG_NewsHost** result, int32 resultsize) -{ - XP_ASSERT(master); - if (!master) return -1; - return master->GetHostTable()->GetHostList(result, resultsize); -} - -extern "C" int32 -MSG_GetIMAPHosts(MSG_Master* master, MSG_IMAPHost** result, int32 resultsize) -{ - XP_ASSERT(master); - if (!master) return -1; - MSG_IMAPHostTable *imapTable = master->GetIMAPHostTable(); - if (imapTable) - return imapTable->GetHostList(result, resultsize); - else - return 0; -} - -extern "C" int32 -MSG_GetSubscribingIMAPHosts(MSG_Master* master, MSG_IMAPHost** result, int32 resultsize) -{ - XP_ASSERT(master); - if (!master) return -1; - return master->GetSubscribingIMAPHosts(result, resultsize); -} - -extern "C" int32 -MSG_GetSubscribingHosts(MSG_Master* master, MSG_Host** result, int32 resultsize) -{ - XP_ASSERT(master); - if (!master) return -1; - return master->GetSubscribingHosts(result, resultsize); -} - -extern "C" XP_Bool -MSG_IsNewsHost(MSG_Host* host) -{ - return host->IsNews(); -} - -extern "C" XP_Bool -MSG_IsIMAPHost(MSG_Host* host) -{ - return host->IsIMAP(); -} - -/* Returns a pointer to the associated MSG_Host object for this MSG_NewsHost */ -extern "C" MSG_Host* -MSG_GetMSGHostFromNewsHost(MSG_NewsHost *newsHost) -{ - return newsHost; -} - -/* Returns a pointer to the associated MSG_Host object for this MSG_IMAPHost */ -extern "C" MSG_Host* -MSG_GetMSGHostFromIMAPHost(MSG_IMAPHost *imapHost) -{ - return imapHost; -} - -/* Returns a pointer to the associated MSG_NewsHost object for this MSG_Host, - if it is a MSG_NewsHost. Otherwise, returns NULL. */ -extern MSG_NewsHost* -MSG_GetNewsHostFromMSGHost(MSG_Host *host) -{ - return host->GetNewsHost(); -} - -/* Returns a pointer to the associated MSG_IMAPHost object for this MSG_Host, - if it is a MSG_IMAPHost. Otherwise, returns NULL. */ -extern MSG_IMAPHost* -MSG_GetIMAPHostFromMSGHost(MSG_Host *host) -{ - return host->GetIMAPHost(); -} - - -extern "C" MSG_NewsHost* -MSG_CreateNewsHost(MSG_Master* master, const char* hostname, - XP_Bool isxxx, int32 port) -{ - XP_ASSERT(master); - if (!master) return NULL; - return master->AddNewsHost(hostname, isxxx, port); -} - -extern "C" MSG_NewsHost* -MSG_GetDefaultNewsHost(MSG_Master* master) -{ - XP_ASSERT(master); - if (!master) return NULL; - return master->GetDefaultNewsHost(); -} - -extern "C" int -MSG_DeleteNewsHost(MSG_Master* master, MSG_NewsHost* host) -{ - // remove the host - int status = host->RemoveHost(); - - // refresh each folder pane - /* - // We don't have to do this, since it is broadcast in RemoveHost(). - MSG_FolderPane *eachPane; - for (eachPane = (MSG_FolderPane *) master->FindFirstPaneOfType(MSG_FOLDERPANE); eachPane; - eachPane = (MSG_FolderPane *) master->FindNextPaneOfType(eachPane->GetNextPane(), MSG_FOLDERPANE)) - { - eachPane->RedisplayAll(); - } - */ - return status; -} - -#ifdef SUBSCRIBE_USE_OLD_API -extern "C" const char* -MSG_GetNewsHostUIName(MSG_NewsHost* host) -{ - return host->getFullUIName(); -} -#endif /* SUBSCRIBE_USE_OLD_API */ - -extern "C" const char* -MSG_GetHostUIName(MSG_Host* host) -{ - return host->getFullUIName(); -} - -#ifdef SUBSCRIBE_USE_OLD_API -extern "C" const char* -MSG_GetNewsHostName(MSG_NewsHost* host) -{ - return host->getStr(); -} -#endif /* SUBSCRIBE_USE_OLD_API */ - -extern "C" const char* -MSG_GetHostName(MSG_Host* host) -{ - MSG_IMAPHost *imapHost = host->GetIMAPHost(); - if (imapHost) - { - return imapHost->GetHostName(); - } - MSG_NewsHost *newsHost = host->GetNewsHost(); - if (newsHost) - { - return newsHost->getStr(); - } - return NULL; -} - -HG91476 - -#ifdef SUBSCRIBE_USE_OLD_API -extern "C" int32 -MSG_GetNewsHostPort(MSG_NewsHost* host) -{ - return host->getPort(); -} -#endif /* SUBSCRIBE_USE_OLD_API */ - -extern "C" int32 -MSG_GetHostPort(MSG_Host* host) -{ - return host->getPort(); -} - -extern void MSG_SupportsNewsExtensions (MSG_NewsHost *host, XP_Bool supports) -{ - XP_ASSERT(host); - if (host) - host->SetSupportsExtensions(supports); -} - -extern "C" void MSG_AddNewsExtension (MSG_NewsHost *host, const char *ext) -{ - XP_ASSERT(host); - if (host) - host->AddExtension(ext); -} - -extern "C" XP_Bool MSG_QueryNewsExtension (MSG_NewsHost *host, const char *ext) -{ - XP_ASSERT(host); - if (host) - return host->QueryExtension (ext); - return FALSE; -} - -extern "C" XP_Bool MSG_NeedsNewsExtension (MSG_NewsHost *host, const char *ext) -{ - XP_ASSERT(host); - if (host) - return host->NeedsExtension (ext); - return FALSE; -} - -extern "C" void MSG_AddSearchableGroup (MSG_NewsHost *host, const char *group) -{ - XP_ASSERT(host); - if (host) - host->AddSearchableGroup (group); -} - -extern "C" void MSG_AddSearchableHeader (MSG_NewsHost *host, const char *header) -{ - XP_ASSERT(host); - if (host) - host->AddSearchableHeader(header); -} - -extern "C" void MSG_AddPropertyForGet (MSG_NewsHost *host, const char *property, - const char *value) -{ - XP_ASSERT(host); - if (host) - host->AddPropertyForGet (property, value); -} - -extern "C" void MSG_SetNewsHostPostingAllowed (MSG_NewsHost *host, XP_Bool allowed) -{ - XP_ASSERT(host); - if (host) - host->SetPostingAllowed(allowed); -} - -extern "C" XP_Bool MSG_GetNewsHostPushAuth (MSG_NewsHost *host) -{ - XP_ASSERT(host); - if (host) - return host->GetPushAuth(); - return FALSE; -} - -extern "C" void MSG_SetNewsHostPushAuth (MSG_NewsHost *host, XP_Bool pushAuth) -{ - XP_ASSERT(host); - if (host) - host->SetPushAuth(pushAuth); -} - -extern "C" MSG_IMAPHost* MSG_CreateIMAPHost(MSG_Master* master, - const char* hostname, - XP_Bool isxxx, - const char *userName, - XP_Bool checkNewMail, - int biffInterval, - XP_Bool rememberPassword, - XP_Bool usingSubscription, - XP_Bool overrideNamespaces, - const char *personalOnlineDir, - const char *publicOnlineDir, - const char *otherUsersOnlineDir - HG72523) -{ - XP_ASSERT(master); - if (!master) return NULL; - MSG_FolderArray *subFolders = master->GetFolderTree()->GetSubFolders(); - - MSG_IMAPHost *host = master->AddIMAPHost(hostname, isxxx, userName, checkNewMail, biffInterval,rememberPassword, usingSubscription, - overrideNamespaces, personalOnlineDir, publicOnlineDir, otherUsersOnlineDir, TRUE); - - MSG_IMAPFolderInfoMail::BuildIMAPServerTree(master, hostname, subFolders, FALSE, 1); - - HG09275 - if (host) - { - MSG_Pane* pane; - for (pane = master->GetFirstPane() ; pane ; pane = pane->GetNextPane()) { - if (pane->GetPaneType() == MSG_FOLDERPANE) { - ((MSG_FolderPane*) pane)->RedisplayAll(); - } - } - } - return host; - -} - - -/* Gets the default imap host. Could be NULL, if the user has managed to - configure himself that way. */ -extern "C" MSG_IMAPHost* MSG_GetDefaultIMAPHost(MSG_Master* master) -{ - // don't know if we'll need this createIfMissing flag. - MSG_IMAPHostTable *hostTable = master->GetIMAPHostTable(); - if (hostTable) - { - return hostTable->GetDefaultHost(FALSE); - } - else - return NULL; -} - -/* Deletes an imap host. This deletes everything known about this hosts -- the - preferences, the databases, everything. The user had better have confirmed - this operation before making this call. */ - -extern "C" int MSG_DeleteIMAPHost(MSG_Master* master, MSG_IMAPHost* host) -{ - MSG_IMAPHostTable *imapHostTable = master->GetIMAPHostTable(); - if (imapHostTable) - { - // remove the host - return host->RemoveHost(); - } - else - { - XP_ASSERT(FALSE); - return -1; - } -} - -/* same as above, except takes in the host name */ - -extern "C" int MSG_DeleteIMAPHostByName(MSG_Master* master, const char *hostname) -{ - MSG_IMAPHostTable *imapHostTable = master->GetIMAPHostTable(); - MSG_IMAPHost *host = imapHostTable ? imapHostTable->FindIMAPHost(hostname) : 0; - - if (host) - { - return MSG_DeleteIMAPHost(master, host); - } - else - return -1; // host not found with given name -} - -extern "C" MSG_IMAPHost *MSG_GetIMAPHostByName(MSG_Master *master, const char *hostName) -{ - MSG_IMAPHostTable *imapHostTable = master->GetIMAPHostTable(); - return imapHostTable ? imapHostTable->FindIMAPHost(hostName) : 0; -} - -extern "C" void MSG_ReorderIMAPHost(MSG_Master *master, MSG_IMAPHost *host, MSG_IMAPHost *afterHost /* NULL = pos 0 */) -{ - MSG_IMAPHostTable *imapHostTable = master->GetIMAPHostTable(); - if (imapHostTable) - { - master->BroadcastFolderDeleted(host->GetHostFolderInfo()); - imapHostTable->ReorderIMAPHost(host, afterHost); - master->BroadcastFolderAdded(host->GetHostFolderInfo(), NULL); - } -} - -/* If we can find the IMAP host in our table, returns 0 and sets usingSubscription to TRUE - if this host is configured for using subscription. If we can't find the host, returns -1. */ -extern "C" int MSG_GetIMAPHostIsUsingSubscription(MSG_Master *master, const char *hostName, XP_Bool *usingSubscription) -{ - MSG_IMAPHostTable *imapHostTable = master->GetIMAPHostTable(); - MSG_IMAPHost *host = imapHostTable ? imapHostTable->FindIMAPHost(hostName) : (MSG_IMAPHost *)NULL; - if (host) - { - *usingSubscription = host->GetIsHostUsingSubscription(); - return (0); - } - else return (-1); -} - -extern "C" XP_Bool MSG_GetIMAPHostDeleteIsMoveToTrash(MSG_Master *master, const char *hostName) -{ - MSG_IMAPHostTable *imapHostTable = master->GetIMAPHostTable(); - MSG_IMAPHost *host = imapHostTable ? imapHostTable->FindIMAPHost(hostName) : (MSG_IMAPHost *)NULL; - return (host) ? host->GetDeleteIsMoveToTrash() : FALSE; -} - -HG78271 - -extern "C" MSG_FolderInfo *MSG_GetTrashFolderForHost(MSG_IMAPHost *host) -{ - return host->GetTrashFolderForHost(); -} - -extern "C" int -MSG_SubscribeSetCallbacks(MSG_Pane* subscribepane, - MSG_SubscribeCallbacks* callbacks, - void* closure) -{ - return CastSubscribePane(subscribepane)->SetCallbacks(callbacks, closure); -} - -HG24327 - -extern "C" int -MSG_SubscribeCancel(MSG_Pane* subscribepane) -{ - return CastSubscribePane(subscribepane)->Cancel(); -} - -extern "C" int -MSG_SubscribeCommit(MSG_Pane* subscribepane) -{ - return CastSubscribePane(subscribepane)->CommitSubscriptions(); -} - - -#ifdef SUBSCRIBE_USE_OLD_API -extern "C" MSG_NewsHost* -MSG_SubscribeGetNewsHost(MSG_Pane* subscribepane) -{ - return (MSG_NewsHost *)(CastSubscribePane(subscribepane)->GetHost()); -} -#endif /* SUBSCRIBE_USE_OLD_API */ - -extern "C" MSG_Host* -MSG_SubscribeGetHost(MSG_Pane* subscribepane) -{ - return CastSubscribePane(subscribepane)->GetHost(); -} - -#ifdef SUBSCRIBE_USE_OLD_API -extern "C" int -MSG_SubscribeSetNewsHost(MSG_Pane* subscribepane, MSG_NewsHost* host) -{ - return CastSubscribePane(subscribepane)->SetHost(host); -} -#endif /* SUBSCRIBE_USE_OLD_API */ - -extern "C" int -MSG_SubscribeSetHost(MSG_Pane* subscribepane, MSG_Host* host) -{ - return CastSubscribePane(subscribepane)->SetHost(host); -} - -extern "C" MSG_SubscribeMode -MSG_SubscribeGetMode(MSG_Pane* subscribepane) -{ - return CastSubscribePane(subscribepane)->GetMode(); -} - -extern "C" int -MSG_SubscribeSetMode(MSG_Pane* subscribepane, MSG_SubscribeMode mode) -{ - return CastSubscribePane(subscribepane)->SetMode(mode); -} - -extern "C" MSG_ViewIndex -MSG_SubscribeFindFirst(MSG_Pane* subscribepane, const char* str) -{ - return CastSubscribePane(subscribepane)->FindFirst(str); -} - -extern "C" int -MSG_SubscribeFindAll(MSG_Pane* subscribepane, const char* str) -{ - return CastSubscribePane(subscribepane)->FindAll(str); -} - -extern "C" XP_Bool -MSG_GetGroupNameLineByIndex(MSG_Pane* subscribepane, - MSG_ViewIndex firstline, - int32 numlines, - MSG_GroupNameLine* data) -{ - return CastSubscribePane(subscribepane)->GetGroupNameLineByIndex(firstline, - numlines, - data); -} - -extern "C" int MSG_AddSubscribedNewsgroup (MSG_Pane *pane, const char *groupUrl) -{ - MSG_FolderInfoNews *group = pane->GetMaster()->AddNewsGroup(groupUrl); - return group ? 0 : -1; -} - - -// Internal routines only -- I hope these go away soon. - - -extern "C" char* -msg_MagicFolderName(MSG_Prefs* prefs, uint32 flag, int *pStatus) -{ - return prefs->MagicFolderName(flag, pStatus); -} - -extern "C" void MSG_SetFolderPrefFlags(MSG_FolderInfo *info, int32 flags) -{ - if (info) - info->SetFolderPrefFlags(flags); -} - -extern "C" int32 MSG_GetFolderPrefFlags(MSG_FolderInfo *info) -{ - if (!info) - return 0; - return info->GetFolderPrefFlags(); -} - -extern "C" void MSG_SetFolderCSID(MSG_FolderInfo *info, int16 csid) -{ - if (info) - info->SetFolderCSID(csid); -} - -extern "C" int16 MSG_GetFolderCSID(MSG_FolderInfo *info) -{ - return (info) ? info->GetFolderCSID() : 0; -} - -extern "C" void MSG_SetLastMessageLoaded(MSG_FolderInfo *info, MessageKey lastMessageLoaded) -{ - if (info) - info->SetLastMessageLoaded(lastMessageLoaded); -} - -extern "C" MessageKey MSG_GetLastMessageLoaded(MSG_FolderInfo *info) -{ - return (info) ? info->GetLastMessageLoaded() : 0; -} - - -extern "C" int MSG_DownloadForOffline(MSG_Master *master, MSG_Pane *pane) -{ - return master->DownloadForOffline(pane); -} -extern "C" int MSG_DownloadFolderForOffline(MSG_Master *master, MSG_Pane *pane, MSG_FolderInfo *folder) -{ - return master->DownloadForOffline(pane, folder); -} - -extern "C" int MSG_GoOffline(MSG_Master *master, MSG_Pane *pane, XP_Bool downloadDiscussions, XP_Bool getNewMail, XP_Bool sendOutbox, XP_Bool getDirectories) -{ - return master->SynchronizeOffline(pane, downloadDiscussions, getNewMail, sendOutbox, getDirectories, !NET_IsOffline()); -} - -extern "C" int MSG_SynchronizeOffline(MSG_Master *master, MSG_Pane *pane, XP_Bool downloadDiscussions, XP_Bool getNewMail, XP_Bool sendOutbox, XP_Bool getDirectories, XP_Bool goOffline) -{ - return master->SynchronizeOffline(pane, downloadDiscussions, getNewMail, sendOutbox, getDirectories, goOffline); -} - -extern "C" int MSG_SetOfflineRetrievalInfo( - MSG_FolderInfo *newsGroup, - XP_Bool useDefaults, - XP_Bool byReadness, - XP_Bool unreadOnly, - XP_Bool byDate, - int32 daysOld) -{ - NewsGroupDB *newsDB = newsGroup->GetNewsFolderInfo()->OpenNewsDB(TRUE, NULL); - - if (newsDB) - { - MSG_RetrieveArtInfo retrieveInfo; - retrieveInfo.m_useDefaults = useDefaults; - retrieveInfo.m_byReadness = byReadness; - retrieveInfo.m_unreadOnly = unreadOnly; - retrieveInfo.m_byDate = byDate; - retrieveInfo.m_daysOld = daysOld; - - newsDB->SetOfflineRetrievalInfo(&retrieveInfo); - newsDB->Close(); - } - return 0; -} - -extern "C" int MSG_SetArticlePurgingInfo( - MSG_FolderInfo *newsGroup, - XP_Bool useDefaults, - MSG_PurgeByPreferences purgeBy, - int32 daysToKeep) -{ - NewsGroupDB *newsDB = (newsGroup->GetNewsFolderInfo()) ? newsGroup->GetNewsFolderInfo()->OpenNewsDB(TRUE, NULL) : 0; - - if (newsDB) - { - MSG_PurgeInfo purgeInfo; - purgeInfo.m_useDefaults = useDefaults; - purgeInfo.m_daysToKeep = daysToKeep; - purgeInfo.m_purgeBy = purgeBy; - newsDB->SetPurgeArticleInfo(&purgeInfo); - newsDB->Close(); - } - return 0; -} - -extern "C" int MSG_SetHeaderPurgingInfo( - MSG_FolderInfo *newsGroup, - XP_Bool useDefaults, - MSG_PurgeByPreferences purgeBy, - XP_Bool unreadOnly, - int32 daysToKeep, - int32 numHeadersToKeep) -{ - NewsGroupDB *newsDB = newsGroup->IsNews() ? newsGroup->GetNewsFolderInfo()->OpenNewsDB(TRUE, NULL) : 0; - - if (newsDB) - { - MSG_PurgeInfo purgeInfo; - purgeInfo.m_useDefaults = useDefaults; - purgeInfo.m_purgeBy = purgeBy; - purgeInfo.m_unreadOnly = unreadOnly; - purgeInfo.m_daysToKeep = daysToKeep; - purgeInfo.m_numHeadersToKeep = numHeadersToKeep; - newsDB->SetPurgeHeaderInfo(&purgeInfo); - newsDB->Close(); - } - return 0; -} - -extern "C" void MSG_GetOfflineRetrievalInfo(MSG_FolderInfo *newsGroup, - XP_Bool *pUseDefaults, - XP_Bool *pByReadness, - XP_Bool *pUnreadOnly, - XP_Bool *pByDate, - int32 *pDaysOld) -{ - NewsGroupDB *newsDB = newsGroup->IsNews() ? newsGroup->GetNewsFolderInfo()->OpenNewsDB(TRUE, NULL) : 0; - - if (newsDB) - { - MSG_RetrieveArtInfo retrieveInfo; - newsDB->GetOfflineRetrievalInfo(&retrieveInfo); - *pUseDefaults = retrieveInfo.m_useDefaults; - if (retrieveInfo.m_useDefaults) - { - PREF_GetBoolPref("offline.news.download.unread_only", pUnreadOnly); - PREF_GetBoolPref("offline.news.download.by_date", pByDate); - PREF_GetIntPref("offline.news.download.days", pDaysOld); // days - } - else - { - *pByReadness = retrieveInfo.m_byReadness; - *pUnreadOnly = retrieveInfo.m_unreadOnly; - *pByDate = retrieveInfo.m_byDate; - *pDaysOld = retrieveInfo.m_daysOld; - } - newsDB->Close(); - } -} - -extern "C" void MSG_GetArticlePurgingInfo(MSG_FolderInfo *newsGroup, - XP_Bool *pUseDefaults, - MSG_PurgeByPreferences *pPurgeBy, - int32 *pDaysToKeep) -{ - NewsGroupDB *newsDB = newsGroup->IsNews() ? newsGroup->GetNewsFolderInfo()->OpenNewsDB() : 0; - - if (newsDB) - { - MSG_PurgeInfo purgeInfo; - newsDB->GetPurgeArticleInfo(&purgeInfo); - if (purgeInfo.m_useDefaults) - { - XP_Bool purgeRemoveBodies; - PREF_GetBoolPref("news.remove_bodies.by_age", &purgeRemoveBodies); - *pPurgeBy = (purgeRemoveBodies) ? MSG_PurgeByAge : MSG_PurgeNone; - PREF_GetIntPref("news.remove_bodies.days", pDaysToKeep); - } - else - { - *pPurgeBy = purgeInfo.m_purgeBy; - *pDaysToKeep = purgeInfo.m_daysToKeep; - *pUseDefaults = purgeInfo.m_useDefaults; - } - newsDB->Close(); - } -} - -extern "C" void MSG_GetHeaderPurgingInfo(MSG_FolderInfo *newsGroup, - XP_Bool *pUseDefaults, - MSG_PurgeByPreferences *pPurgeBy, - XP_Bool *pUnreadOnly, - int32 *pDaysToKeep, - int32 *pNumHeadersToKeep) -{ - NewsGroupDB *newsDB = NULL; - - if (newsGroup->GetNewsFolderInfo()) - newsDB = newsGroup->GetNewsFolderInfo()->OpenNewsDB(); - MSG_PurgeInfo purgeInfo; - - if (newsDB) - { - newsDB->GetPurgeHeaderInfo(&purgeInfo); - newsDB->Close(); - } - else - { - if (newsGroup && newsGroup->GetMaster() && newsGroup->GetMaster()->GetPurgeHdrInfo()) - purgeInfo = *(newsGroup->GetMaster()->GetPurgeHdrInfo()); - else - return; - } - *pUseDefaults = purgeInfo.m_useDefaults; - if (purgeInfo.m_useDefaults) - { - int32 keepMethod; - PREF_GetIntPref("news.keep.method", &keepMethod); - *pPurgeBy = (MSG_PurgeByPreferences) keepMethod; - PREF_GetIntPref("news.keep.days", pDaysToKeep); - PREF_GetIntPref("news.keep.count", pNumHeadersToKeep); - PREF_GetBoolPref("news.keep.only_unread", pUnreadOnly); - } - else - { - *pPurgeBy = purgeInfo.m_purgeBy; - *pUnreadOnly = purgeInfo.m_unreadOnly; - *pDaysToKeep = purgeInfo.m_daysToKeep; - *pNumHeadersToKeep = purgeInfo.m_numHeadersToKeep; - } -} - -/* What are we going to do about error messages and codes? Internally, we'd - like a nice error range system, but we need to export errors too... ### - */ -extern "C" -int ConvertMsgErrToMKErr(MsgERR err) -{ - switch (err) - { - case eSUCCESS: - return 0; - case eOUT_OF_MEMORY: - return MK_OUT_OF_MEMORY; - case eID_NOT_FOUND: - return MK_MSG_ID_NOT_IN_FOLDER; - case eUNKNOWN: - return -1; - } - // Well, most likely, someone returned a negative number that - // got cast somewhere into a MsgERR. If so, just return that value. - if (int(err) < 0) return int(err); - // Punt, and return the generic unknown error. - return -1; -} - -extern "C" -int MSG_RetrieveStandardHeaders(MSG_Pane * pane, MSG_HeaderEntry ** return_list) -{ - XP_ASSERT(pane && pane->GetPaneType() == MSG_COMPOSITIONPANE); - return CastCompositionPane(pane)->RetrieveStandardHeaders(return_list); -} - -extern "C" -void MSG_SetHeaderEntries(MSG_Pane * pane,MSG_HeaderEntry * in_list,int count) -{ - XP_ASSERT(pane && pane->GetPaneType() == MSG_COMPOSITIONPANE); - CastCompositionPane(pane)->SetHeaderEntries(in_list,count); -} - -extern "C" -void MSG_ClearComposeHeaders(MSG_Pane * pane) -{ - XP_ASSERT(pane && pane->GetPaneType() == MSG_COMPOSITIONPANE); - CastCompositionPane(pane)->ClearComposeHeaders(); -} - -extern "C" -int MSG_ProcessBackground(URL_Struct* urlstruct) -{ - return msg_Background::ProcessBackground(urlstruct); -} - -extern "C" -XP_Bool MSG_CleanupNeeded(MSG_Master *master) -{ - return master->CleanupNeeded(); -} - -extern "C" -void MSG_CleanupFolders(MSG_Pane *pane) -{ - pane->GetMaster()->CleanupFolders(pane); -} - -/* - * In general, when calling the following 4 functions we must have a pane, - * a news folder info associated the pane. However there are cases we might not - * have a pane and not have a news folder info associated with the pane. - * A typical example is send later a news - * posting to a x newsgroup, and then later deliver the message from the - * outbox when you close the folder pane. - */ -extern "C" -void MSG_SetNewsgroupUsername(MSG_Pane *pane, const char *username) -{ - if (!pane || !pane->GetFolder() || !pane->GetFolder()->IsNews()) - return; - pane->GetFolder()->GetNewsFolderInfo()->SetNewsgroupUsername(username); -} - -extern "C" -const char * MSG_GetNewsgroupUsername(MSG_Pane *pane) -{ - if (!pane || !pane->GetFolder() || !pane->GetFolder()->IsNews()) - return NULL; - return pane->GetFolder()->GetNewsFolderInfo()->GetNewsgroupUsername(); -} - - -extern "C" -void MSG_SetNewsgroupPassword(MSG_Pane *pane, const char *password) -{ - if (!pane || !pane->GetFolder() || !pane->GetFolder()->IsNews()) - return; - pane->GetFolder()->GetNewsFolderInfo()->SetNewsgroupPassword(password); -} - -extern "C" -const char * MSG_GetNewsgroupPassword(MSG_Pane *pane) -{ - if (!pane || !pane->GetFolder() || !pane->GetFolder()->IsNews()) - return NULL; - return pane->GetFolder()->GetNewsFolderInfo()->GetNewsgroupPassword(); -} - -extern "C" MSG_FolderInfo* MSG_GetCategoryContainerForCategory(MSG_FolderInfo *category) -{ - if (category) - { - MSG_FolderInfoNews *newsFolder = category->GetNewsFolderInfo(); - if (newsFolder && newsFolder->GetHost()) - return newsFolder->GetHost()->GetCategoryContainerFolderInfo(category->GetName()); - } - return NULL; -} - -#ifdef SUBSCRIBE_USE_OLD_API -extern "C" MSG_NewsHost* MSG_GetNewsHostForFolder(MSG_FolderInfo* folder) -{ - if (folder) { - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - if (newsFolder) - return newsFolder->GetHost(); - else if (FOLDER_CONTAINERONLY == folder->GetType()) - return ((MSG_FolderInfoContainer*) folder)->GetHost(); - } - return NULL; -} -#endif /* SUBSCRIBE_USE_OLD_API */ - -extern "C" MSG_Host* MSG_GetHostForFolder(MSG_FolderInfo* folder) -{ - if (folder) - { - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - if (newsFolder) - return newsFolder->GetHost(); - else if (FOLDER_CONTAINERONLY == folder->GetType()) - return ((MSG_FolderInfoContainer*) folder)->GetHost(); - else if (FOLDER_IMAPSERVERCONTAINER == folder->GetType()) - return ((MSG_IMAPFolderInfoContainer*) folder)->GetIMAPHost(); - else { - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - if (imapFolder) - { - return imapFolder->GetIMAPHost(); - } - } - } - return NULL; -} - - -extern "C" MSG_FolderInfo * -MSG_GetFolderInfoForHost(MSG_Host *host) -{ - MSG_IMAPHost *imapHost = host->GetIMAPHost(); - if (imapHost) - { - return imapHost->GetHostFolderInfo(); - } - MSG_NewsHost *newsHost = host->GetNewsHost(); - if (newsHost) - { - return newsHost->GetHostInfo(); - } - return NULL; -} - - -/* This method gets called when the Messaging Server 4.0 Admin UI changes the - properties of a folder (e.g., sharing). It sends the url for the folder. - We discover which server and folder this is, and note that we need to update - the folder properties. How this will work, I don't know. -*/ -extern "C" void MSG_IMAPFolderChangedNotification(const char *folder_url) -{ - MSG_Master* master = NULL; - char *folderURL = XP_STRDUP(folder_url); - if (folderURL) - { - master = FE_GetMaster(); - - XP_ASSERT (master); - - if (master) - { -#ifdef FE_IMPLEMENTS_NEW_GET_FOLDER_INFO - MSG_FolderInfo *folder = MSG_GetFolderInfoFromURL(master, folderURL, FALSE); -#else - MSG_FolderInfo *folder = MSG_GetFolderInfoFromURL(master, folderURL); -#endif - if (folder) - { - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - if (imapFolder) - { - if (IMAP_HostHasACLCapability(imapFolder->GetHostName())) - { - char *refreshACLURL = CreateIMAPRefreshACLForFolderURL(imapFolder->GetHostName(), imapFolder->GetOnlineName()); - URL_Struct *URL_s = NET_CreateURLStruct(refreshACLURL, NET_DONT_RELOAD); - if(URL_s) // out of memory? - { - // maybe we should find a folder pane and use its context if we can, - // since the folder pane may need to know. - URL_s->internal_url = TRUE; - MWContext *newContext = PW_CreateProgressContext(); - pw_ptr progressWindow = PW_Create(NULL, pwStandard); - if (progressWindow) - { - PW_AssociateWindowWithContext(newContext, progressWindow); - PW_SetWindowTitle(progressWindow, "Refreshing ACL"); - PW_SetLine1(progressWindow, "Refreshing ACL..."); - PW_SetLine2(progressWindow, NULL); - PW_SetProgressRange(progressWindow, 0, 0); - PW_Show(progressWindow); - } - NET_GetURL(URL_s, FO_PRESENT, newContext, NULL); - } - } - } - } - } - XP_FREE(folderURL); - } -} - -extern "C" int MSG_NotifyChangeDirectoryServers() -{ - MSG_Master* master = NULL; - MSG_Pane *pane = NULL; - - master = FE_GetMaster(); - - XP_ASSERT (master); - - if (master) - { - pane = (MSG_Pane *) master->FindFirstPaneOfType(MSG_ADDRPANE); - while (pane != NULL) - { - FE_PaneChanged(pane, FALSE, MSG_PaneDirectoriesChanged, 0); - pane = master->FindNextPaneOfType(pane->GetNextPane(), MSG_ADDRPANE); - } - } - return 0; -} - -extern "C" XP_Bool MSG_RequestForReturnReceipt(MSG_Pane *pane) -{ - return pane->GetRequestForReturnReceipt(); -} - -extern "C" XP_Bool MSG_SendingMDNInProgress(MSG_Pane *pane) -{ - return pane->GetSendingMDNInProgress(); -} - - -int32 atoi32(char *ascii) -{ - char *endptr; - int32 rvalue = XP_STRTOUL(ascii, &endptr, 10); - return rvalue; -} - - -extern "C" uint32 MSG_GetIMAPMessageSizeFromDB(MSG_Pane *masterPane, const char *hostName, char *folderName, char *messageId, XP_Bool idIsUid) -{ - uint32 rv = 0; - if (masterPane && masterPane->GetMaster()) - { - MSG_IMAPFolderInfoMail *imapFolder = masterPane->GetMaster()->FindImapMailFolder(hostName, folderName, NULL, FALSE); - if (imapFolder) - { - XP_Bool wasCreated=FALSE; - MailDB *imapDB = NULL; - ImapMailDB::Open(imapFolder->GetPathname(), TRUE, &imapDB, imapFolder->GetMaster(), &wasCreated); - if (imapDB) - { - uint32 key = atoi32(messageId); - MailMessageHdr *mailhdr = 0; - XP_ASSERT(idIsUid); - if (idIsUid) - mailhdr = imapDB->GetMailHdrForKey(key); - if (mailhdr) - { - rv = mailhdr->GetMessageSize(); - delete mailhdr; - } - imapDB->Close(); - } - } - } - return rv; -} - -extern "C" void MSG_SetFolderAdminURL(MSG_Master *master, const char *hostName, const char*mailboxName, const char *url) -{ - MSG_IMAPFolderInfoMail *imapFolder = master->FindImapMailFolder(hostName, mailboxName, NULL, FALSE); - if (imapFolder) - imapFolder->SetAdminUrl(url); -} - -extern "C" XP_Bool MSG_GetAdminUrlForFolder(MWContext *context, MSG_FolderInfo *folder, MSG_AdminURLType type) -{ - return folder->GetAdminUrl(context, type); -} - -/* use this to decide to show buttons and/or menut items */ -extern "C" XP_Bool MSG_HaveAdminUrlForFolder(MSG_FolderInfo *folder, MSG_AdminURLType type) -{ - return folder->HaveAdminUrl(type); -} - -extern "C" void MSG_RefreshFoldersForUpdatedIMAPHosts(MWContext *context) -{ - MSG_FolderPane *folderPane = (MSG_FolderPane *) MSG_FindPane(context, MSG_FOLDERPANE); - if (folderPane) - { - folderPane->RefreshUpdatedIMAPHosts(); - } -} - - -// Returns a newly-allocated space-delimited list of the arbitrary headers needed to be downloaded -// for a given host, when using IMAP. Returns NULL if there are none, or the host could not be found. -extern "C" char *MSG_GetArbitraryHeadersForHost(MSG_Master *master, const char *hostName) -{ - if (!master) - return NULL; - - char *headersFromFilters = master->GetArbitraryHeadersForHostFromFilters(hostName); - char *headersForMDN = master->GetArbitraryHeadersForHostFromMDN(hostName); - if (!headersFromFilters && !headersForMDN) - return NULL; - if (headersFromFilters && !headersForMDN) - return headersFromFilters; - if (!headersFromFilters && headersForMDN) - return headersForMDN; - - // Headers for both filters and MDN - char *finalHeaders = PR_smprintf("%s %s",headersFromFilters,headersForMDN); - XP_FREE(headersFromFilters); - XP_FREE(headersForMDN); - return finalHeaders; -} - - -extern "C" XP_Bool MSG_GetCanCreateSubfolderOfFolder(MSG_FolderInfo *f) -{ - if (f->GetType() != FOLDER_MAIL && - f->GetType() != FOLDER_IMAPMAIL && - f->GetType() != FOLDER_IMAPSERVERCONTAINER) - return FALSE; - - switch (f->GetType()) - { - case FOLDER_IMAPMAIL: - { - MSG_IMAPFolderInfoMail *imapInfo = f->GetIMAPFolderInfoMail(); - if (!imapInfo) - { - XP_ASSERT(FALSE); - return FALSE; - } - return imapInfo->GetCanDropFolderIntoThisFolder(); - } - break; - default: // local mail or IMAP server container - return TRUE; - break; - } -} - - -// current is the currently-selected folder. If current is NULL, returns NULL. -// Otherwise, returns the MSG_FolderInfo* of the suggested default parent folder which -// should be used in the New Folder dialog. -extern "C" MSG_FolderInfo *MSG_SuggestNewFolderParent(MSG_FolderInfo *current, MSG_Master *master) -{ - if (!current) - return current; - - MSG_FolderInfo *tree = master->GetFolderTree(); - MSG_FolderInfo *localTree = master->GetLocalMailFolderTree(); - if (!tree || !localTree) - return current; - - // If current is "Local Mail" or one of the IMAP servers, return current - if (current == localTree || - current->GetType() == FOLDER_IMAPSERVERCONTAINER) - { - return current; - } - - // Figure out a default. - MSG_FolderInfo *defaultSuggestion = localTree; - MSG_IMAPHostTable *imapHostTable = master->GetIMAPHostTable(); - if (imapHostTable) - { - MSG_IMAPHost *defaultImapHost = imapHostTable->GetDefaultHost(); - if (defaultImapHost) - defaultSuggestion = defaultImapHost->GetHostFolderInfo(); - } - - if (current->GetType() == FOLDER_CONTAINERONLY || // a news host - current->GetType() == FOLDER_NEWSGROUP || // a news group - current->GetType() == FOLDER_CATEGORYCONTAINER) // a news category container - { - return defaultSuggestion; // return default -- we can't create a subfolder of a news host - // -- not from the client's New Folder dialog, anyway - } - - MSG_FolderInfo *parent = tree->FindParentOf(current); - if (!parent) - return defaultSuggestion; - - if (current->GetType() == FOLDER_MAIL) // a local mail folder. - { - return parent ? parent : localTree; // Return the parent of the currently selected folder - } - - - // If it gets here, we think it's a mail folder. - if (MSG_GetCanCreateSubfolderOfFolder(parent)) - return parent; - else - { - if (current->GetType() == FOLDER_MAIL) - return localTree; - else - { - MSG_IMAPFolderInfoMail *imapInfo = current->GetIMAPFolderInfoMail(); - if (imapInfo) - { - MSG_IMAPHost *host = imapInfo->GetIMAPHost(); - if (host) - return host->GetHostFolderInfo(); - } - return defaultSuggestion; - } - } -} - - -// Given a folder info, returns a newly allocated string containing a description -// of the folder rights for a given folder. It is the caller's responsibility -// to free this string. -// Returns NULL if we could not get ACL rights information for this folder. - -extern "C" char *MSG_GetACLRightsStringForFolder(MSG_FolderInfo *folder) -{ - char *rv = NULL; - MSG_IMAPFolderInfoMail *imapInfo = folder->GetIMAPFolderInfoMail(); - if (imapInfo) - { - rv = imapInfo->CreateACLRightsStringForFolder(); - } - else - rv = PR_smprintf(XP_GetString(XP_MSG_IMAP_ACL_FULL_RIGHTS)); - return rv; -} - -/* Given a folder info, returns a newly allocated string with the folder - type name. For instance, "Personal Folder", "Public Folder", etc. - It is the caller's responsibility to free this string. - Returns NULL if we could not get the a type for this folder. - */ - -extern "C" char *MSG_GetFolderTypeName(MSG_FolderInfo *folder) -{ - char *rv = NULL; - MSG_IMAPFolderInfoMail *imapInfo = folder->GetIMAPFolderInfoMail(); - if (imapInfo) - { - rv = imapInfo->GetTypeNameForFolder(); - } - else - rv = PR_smprintf(XP_GetString(XP_MSG_IMAP_PERSONAL_FOLDER_TYPE_NAME)); - return rv; -} - -/* Given a folder info, returns a newly allocated string containing a description - of the folder type. For instance, "This is a personal mail folder that you have shared." - It is the caller's responsibility to free this string. - Returns NULL if we could not get the a type for this folder. - */ - -extern "C" char *MSG_GetFolderTypeDescription(MSG_FolderInfo *folder) -{ - char *rv = NULL; - MSG_IMAPFolderInfoMail *imapInfo = folder->GetIMAPFolderInfoMail(); - if (imapInfo) - { - rv = imapInfo->GetTypeDescriptionForFolder(); - } - else - rv = PR_smprintf(XP_GetString(XP_MSG_IMAP_PERSONAL_FOLDER_TYPE_DESCRIPTION)); - return rv; -} - -/* Returns TRUE if the given IMAP host supports the sharing of folders. */ - -extern "C" XP_Bool MSG_GetHostSupportsSharing(MSG_IMAPHost *host) -{ - return host->GetHostSupportsSharing(); -} - diff --git a/mozilla/lib/libmsg/msghdr.cpp b/mozilla/lib/libmsg/msghdr.cpp deleted file mode 100644 index b2f546a0f16..00000000000 --- a/mozilla/lib/libmsg/msghdr.cpp +++ /dev/null @@ -1,596 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "xp.h" -#include "msghdr.h" -#include "xp_time.h" -#include "msgdbapi.h" -#include "msgstrob.h" - -/* ****************************************************************** */ - /** DBMessageHdr Class **/ -/* ****************************************************************** */ - -#ifdef DEBUG_bienvenu -int32 DBMessageHdr::numMessageHdrs = 0; -#endif -DBMessageHdr::DBMessageHdr() -{ - m_level = 0; - m_threadId = 0; - m_flags = 0; - m_messageKey = 0; - m_date = 0; - m_dbHeaderHandle = 0; -#ifdef DEBUG_bienvenu - numMessageHdrs++; -#endif -} - -DBMessageHdr::DBMessageHdr(MSG_HeaderHandle handle) -{ - MSG_DBHeaderExchange headerInfo; - m_dbHeaderHandle = handle; - if (handle) - { - MSG_HeaderHandle_GetHeaderInfo(handle, &headerInfo); - m_threadId = headerInfo.m_threadId; - m_messageKey = headerInfo.m_messageKey; //news: article number, mail mbox offset - m_date = headerInfo.m_date; - m_messageSize = headerInfo.m_messageSize; // lines for news articles, bytes for mail messages - m_flags = headerInfo.m_flags; - m_level = headerInfo.m_level; - } - else - { - m_threadId = kIdNone; - m_messageKey = kIdNone; - m_date = 0; - m_messageSize = 0; - m_flags = 0; - m_level = 0; - } -#ifdef DEBUG_bienvenu - numMessageHdrs++; -#endif -} - -DBMessageHdr::~DBMessageHdr() -{ -#ifdef DEBUG_bienvenu - numMessageHdrs--; -#endif - if (m_dbHeaderHandle) - MSG_HeaderHandle_RemoveReference(m_dbHeaderHandle); -} - - -XP_Bool DBMessageHdr::InitFromXOverLine(char * xOverLine, MSG_DBHandle db) -{ - if (!ParseLine(xOverLine, this, db)) - return FALSE; - return TRUE; -} - -/* static method */ -XP_Bool DBMessageHdr::ParseLine(char *line, DBMessageHdr *msgHdr, MSG_DBHandle db) -{ - uint32 lines; - uint32 msgSize = 0; - char *next = line; -#define GET_TOKEN() \ - line = next; \ - next = (line ? XP_STRCHR (line, '\t') : 0); \ - if (next) *next++ = 0 - - GET_TOKEN (); /* message number */ - msgHdr->SetMessageKey (atol (line)); - - if (msgHdr->GetMessageKey() == 0) /* bogus xover data */ - return FALSE; - - GET_TOKEN (); /* subject */ - if (line) - msgHdr->SetSubject(line, db); - - GET_TOKEN (); /* sender */ - if (line) - msgHdr->SetAuthor(line, db); - - GET_TOKEN (); - if (line) - msgHdr->SetDate(XP_ParseTimeString (line, FALSE)); /* date */ - - GET_TOKEN (); /* message id */ - if (line) - msgHdr->SetUnstrippedMessageId(line, db); - - GET_TOKEN (); /* references */ - if (line) - msgHdr->SetReferences(line, db); - - GET_TOKEN (); /* bytes */ -// msgSize = (line) ? atol (line) : 0; -// msgHdr->SetMessageSize(msgSize); - /* ignored */ - - GET_TOKEN (); /* lines */ - lines = line ? atol (line) : 0; - if (!msgSize) - msgHdr->SetMessageSize(lines); - GET_TOKEN (); /* xref */ - return TRUE; -} - -// It would be nice to get rid of this in favor of the routine above that takes -// a DBMessageHdr. -/* static method */ -XP_Bool DBMessageHdr::ParseLine(char *line, MessageHdrStruct *msgHdr) -{ - uint32 lines; - char *next = line; -#define GET_TOKEN() \ - line = next; \ - next = (line ? XP_STRCHR (line, '\t') : 0); \ - if (next) *next++ = 0 - - GET_TOKEN (); /* message number */ - msgHdr->m_messageKey = atol (line); - - if (msgHdr->m_messageKey == 0) /* bogus xover data */ - return FALSE; - - GET_TOKEN (); /* subject */ - if (line) - msgHdr->SetSubject(line); - - GET_TOKEN (); /* sender */ - if (line) - msgHdr->SetAuthor(line); - - GET_TOKEN (); - if (line) - msgHdr->SetDate(line); /* date */ - - GET_TOKEN (); /* message id */ - if (line) - msgHdr->SetMessageID(line); - - GET_TOKEN (); /* references */ - if (line) - msgHdr->SetReferences(line); - - GET_TOKEN (); /* bytes */ - /* ignored */ - - GET_TOKEN (); /* lines */ - lines = line ? atol (line) : 0; - msgHdr->SetLines(lines); - GET_TOKEN (); /* xref */ - return TRUE; -} - -void DBMessageHdr::CopyToMessageHdr(MessageHdrStruct *msgHdr, MSG_DBHandle db /* = NULL */) -{ - MSG_HeaderHandle_CopyToMessageHdr(m_dbHeaderHandle, msgHdr, db); -} - -void DBMessageHdr::CopyToShortMessageHdr(MSG_MessageLine *msgHdr, MSG_DBHandle db /* = NULL */) -{ - MSG_HeaderHandle_CopyToShortMessageHdr(m_dbHeaderHandle, msgHdr, db); - // msgHdr should be set to zeroes by caller -} - -void DBMessageHdr::CopyDBFlagsToMsgHdrFlags(uint32 *pflags) -{ - uint32 dbFlags = GetFlags(); - MessageDB::ConvertDBFlagsToPublicFlags(&dbFlags); - *pflags = dbFlags; -} - -XP_Bool DBMessageHdr::SetThreadId(MessageKey threadId) -{ - m_threadId = threadId; - MSG_HeaderHandle_SetThreadID(m_dbHeaderHandle, threadId); - return TRUE; -} -XP_Bool DBMessageHdr::SetMessageKey(MessageKey messageKey) -{ - m_messageKey = messageKey; - MSG_HeaderHandle_SetMessageKey(m_dbHeaderHandle, messageKey); - // DMB TODO -// XP_ASSERT(messageKey != 0); // does this happen? should I set messageKey to 1 for db? - return TRUE; -} - -// these could all be virtual inlines -MSG_PRIORITY DBMessageHdr::GetPriority() {return MSG_NoPriority;} -void DBMessageHdr::SetPriority(const char * /*priority*/) {} -void DBMessageHdr::SetPriority(MSG_PRIORITY /*priority*/) {} -int32 DBMessageHdr::GetNumRecipients() {return 0;} -int32 DBMessageHdr::GetNumCCRecipients() {return 0;} -void DBMessageHdr::GetCCList(XPStringObj & /*ccList*/ ,MSG_DBHandle /*db*/) {} -void DBMessageHdr::GetRecipients(XPStringObj & /*recipient*/, MSG_DBHandle /*db*/) {} -void DBMessageHdr::GetNameOfRecipient(XPStringObj & /*recipient*/, int /*whichRecipient*/, MSG_DBHandle /*db*/) {} -void DBMessageHdr::GetMailboxOfRecipient(XPStringObj & /*recipient*/, int /*whichRecipient*/, MSG_DBHandle /*db*/) {} -void DBMessageHdr::GetNameOfCCRecipient(XPStringObj & /*recipient*/, int /*whichRecipient*/, MSG_DBHandle /*db*/) {} -void DBMessageHdr::GetMailboxOfCCRecipient(XPStringObj & /*recipient*/, int /*whichRecipient*/, MSG_DBHandle /*db*/) {} -uint32 DBMessageHdr::GetByteLength() {return MSG_HeaderHandle_GetByteLength(GetHandle());} -uint32 DBMessageHdr::GetLineCount() {return MSG_HeaderHandle_GetLineCount(GetHandle());} -uint32 DBMessageHdr::GetMessageSize() {return MSG_HeaderHandle_GetMessageSize(GetHandle());} - -void DBMessageHdr::PurgeArticle() {} - -// This is the key used in the database, which is almost always the same -// as the m_messageKey, except for the first message in a mailbox, -// which has a m_messageKey of 0, but a non-zero fID in the database. -MessageKey DBMessageHdr::GetMessageKey() -{ - m_messageKey = MSG_HeaderHandle_GetMessageKey(GetHandle()); - return m_messageKey; - // DMB TODO - do we need to play the 0 key/id problem? -} - -void DBMessageHdr::SetMessageSize(uint32 messageSize) -{ - m_messageSize = messageSize; - MSG_HeaderHandle_SetMessageSize(m_dbHeaderHandle, messageSize); -} - -XP_Bool DBMessageHdr::SetSubject(const char * subject, MSG_DBHandle db) -{ - MSG_HeaderHandle_SetSubject(m_dbHeaderHandle, subject, db); - return TRUE; -} - -XP_Bool DBMessageHdr::SetAuthor(const char * author, - MSG_DBHandle db) -{ - MSG_HeaderHandle_SetAuthor(m_dbHeaderHandle, author, db); - return TRUE; -} - -// This assumes the caller has done the stripping off of '<' and '>' -XP_Bool DBMessageHdr::SetMessageId(const char * messageId, - MSG_DBHandle db) -{ -// XP_ASSERT(messageId[0] != '<'); Nelson Bolyard hits this assert because of some spam, so we can't leave it in. - - MSG_HeaderHandle_SetMessageId(m_dbHeaderHandle, messageId, db); - return TRUE; -} - -XP_Bool DBMessageHdr::SetUnstrippedMessageId(char * messageId, - MSG_DBHandle db) -{ - if (messageId[0] == '<') - messageId++; - - char * lastChar = messageId + strlen(messageId) -1; - if (*lastChar == '>') - *lastChar = '\0'; - MSG_HeaderHandle_SetMessageId(m_dbHeaderHandle, messageId, db); - return TRUE; -} - -XP_Bool DBMessageHdr::SetReferences(const char * references, MSG_DBHandle db) -{ - MSG_HeaderHandle_SetReferences(m_dbHeaderHandle, references, db); - return TRUE; -} - -void DBMessageHdr::SetFlags(uint32 flags) -{ - m_flags = flags; - MSG_HeaderHandle_SetFlags(m_dbHeaderHandle, flags); -} - -uint32 DBMessageHdr::OrFlags(uint32 flags) -{ - return MSG_HeaderHandle_OrFlags(m_dbHeaderHandle, flags); -} - -uint32 DBMessageHdr::AndFlags(uint32 flags) -{ - return MSG_HeaderHandle_AndFlags(m_dbHeaderHandle, flags); -} - - -void DBMessageHdr::SetDate(time_t date) -{ - m_date = date; - MSG_HeaderHandle_SetDate(m_dbHeaderHandle, date); -} - -void DBMessageHdr::SetLevel(char level) -{ - m_level = level; - MSG_HeaderHandle_SetLevel(m_dbHeaderHandle, level); -} - - -char DBMessageHdr::GetLevel() -{ - return m_level; -} - -uint32 DBMessageHdr::GetFlags() -{ - return (m_flags = MSG_HeaderHandle_GetFlags(m_dbHeaderHandle)); -} - -uint32 DBMessageHdr::GetMozillaStatusFlags() -{ - uint32 flags = 0; - uint32 priority = GetPriority(); - - // copy over flags that are the same - flags |= (kMozillaSameAsMSG_FLAG & m_flags); - if (m_flags & kExpunged) // is this needed? - flags |= MSG_FLAG_EXPUNGED; - if (m_flags & kHasRe) - flags |= MSG_FLAG_HAS_RE; - if (m_flags & kPartial) - flags |= MSG_FLAG_PARTIAL; - if (priority != 0) - { - flags |= (priority << 13); // use the upper three bits for priority. - } - // Disaster will ensue if we use more than 16 bits! If somebody adds a bad bit, - // make sure we don't corrupt the user's mail folder by writing out more than - // four characters. - uint32 legalFlags = flags & 0x0000FFFF; - XP_ASSERT(flags==legalFlags); - return legalFlags; -} - -MessageId DBMessageHdr::GetArticleNum() -{ -// XP_ASSERT(fID == m_messageKey || m_messageKey == 0); - // DMB TODO ??? - return m_messageKey; -// return fID; -} - -MessageId DBMessageHdr::GetThreadId() -{ - return m_threadId; -} - -void DBMessageHdr::CopyFromDBMsgHdr(DBMessageHdr *oldHdr, MSG_DBHandle srcDB, MSG_DBHandle destDB /*= NULL*/) -{ - MSG_HeaderHandle_CopyFromMsgHdr(m_dbHeaderHandle, oldHdr->GetHandle(), srcDB, destDB); -} - - -XP_Bool DBMessageHdr::GetMessageId(XPStringObj &messageId, MSG_DBHandle db /* = NULL */) -{ - char *messageIdStr; - - XP_Bool ret = MSG_HeaderHandle_GetMessageId(m_dbHeaderHandle, &messageIdStr, db); - messageId.SetStrPtr(messageIdStr); - return ret; -} - -XP_Bool DBMessageHdr::GetSubject(XPStringObj &subject, XP_Bool withRe, MSG_DBHandle db) -{ - char *subjectStr; - XP_Bool ret = MSG_HeaderHandle_GetSubject(m_dbHeaderHandle, &subjectStr, withRe, db); - subject.SetStrPtr(subjectStr); - return ret; -} - -XP_Bool DBMessageHdr::GetAuthor(XPStringObj &author, MSG_DBHandle db) -{ - char *authorStr; - XP_Bool ret = MSG_HeaderHandle_GetAuthor(m_dbHeaderHandle, &authorStr, db); - author.SetStrPtr(authorStr); - return ret; -} - -XP_Bool DBMessageHdr::GetRFC822Author(XPStringObj &author, MSG_DBHandle db) -{ - XP_Bool ret = GetAuthor(author, db); - if (ret) - { - char *rfc822Sender; - rfc822Sender = MSG_ExtractRFC822AddressName (author); - if (rfc822Sender) - { - author = rfc822Sender; - FREEIF(rfc822Sender); - } - return TRUE; - } - return FALSE; -} - -// copy the subject back into the passed buffer. -void DBMessageHdr::GetSubject(char *outSubject, int subjectLen, XP_Bool withRe, MSG_DBHandle db ) -{ - XPStringObj subjectStr; - - GetSubject(subjectStr, withRe, db); - *outSubject = '\0'; - if ((const char *) subjectStr != NULL) - { - // Fix problem of going one over the real length of the array - // for source strings that are longer than the destination. - if (subjectLen <= (int) XP_STRLEN(subjectStr)) - subjectLen --; - - XP_STRNCAT_SAFE(outSubject, subjectStr, subjectLen); - } -#ifdef DEBUG_bienvenu - else - XP_ASSERT(FALSE); -#endif -} -// copy the messageid back into the passed buffer. -void DBMessageHdr::GetMessageId(char *outMessageId, int messageIdLen, MSG_DBHandle db) -{ - XPStringObj messageIdStr; - GetMessageId(messageIdStr, db); - if ((const char *) messageIdStr != NULL) - XP_STRNCPY_SAFE(outMessageId, messageIdStr, messageIdLen); -#ifdef DEBUG_bienvenu - else - XP_ASSERT(FALSE); -#endif -} -// copy the author back into the passed buffer. -void DBMessageHdr::GetAuthor(char *outAuthor, int authorLen, MSG_DBHandle db /* = NULL */) -{ - XPStringObj authorStr; - GetAuthor(authorStr, db); - if ((const char* ) authorStr != NULL) - XP_STRNCPY_SAFE(outAuthor, authorStr, authorLen); -#ifdef DEBUG_bienvenu - else - XP_ASSERT(FALSE); -#endif -} -// copy the author back into the passed buffer. -void DBMessageHdr::GetRFC822Author(char *outAuthor, int authorLen, MSG_DBHandle db /* = NULL */) -{ - XPStringObj authorStr; - GetAuthor(authorStr, db); - if ((const char *) authorStr != NULL) - { - char *rfc822Sender; - rfc822Sender = MSG_ExtractRFC822AddressName (authorStr); - if (rfc822Sender) - { - XP_STRNCPY_SAFE(outAuthor, rfc822Sender, authorLen); - FREEIF(rfc822Sender); - } - } -#ifdef DEBUG_bienvenu1 - else - XP_ASSERT(FALSE); -#endif -} - -void DBMessageHdr::GetMailboxOfAuthor(char *outAuthor, int authorLen, MSG_DBHandle db /* = NULL */) -{ - XPStringObj authorStr; - GetAuthor(authorStr, db); - if ((const char *) authorStr != NULL) - { - char *rfc822Sender; - rfc822Sender = MSG_ExtractRFC822AddressMailboxes (authorStr); - if (rfc822Sender) - { - XP_STRNCPY_SAFE(outAuthor, rfc822Sender, authorLen); - FREEIF(rfc822Sender); - } - } -#ifdef DEBUG_bienvenu - else - XP_ASSERT(FALSE); -#endif -} - -int32 DBMessageHdr::GetNumReferences() -{ - return MSG_HeaderHandle_GetNumReferences(GetHandle()); -} - - -// get the next <> delimited reference from nextRef and copy it into reference, -// which is a pointer to a buffer at least kMaxMsgIdLen long. -const char * DBMessageHdr::GetReference(const char *nextRef, char *reference) -{ - const char *ptr = nextRef; - - while ((*ptr == '<' || *ptr == ' ') && *ptr) - ptr++; - - for (int i = 0; *ptr && *ptr != '>' && i < kMaxMsgIdLen; i++) - *reference++ = *ptr++; - - if (*ptr == '>') - ptr++; - *reference = '\0'; - return ptr; -} -// Get previous <> delimited reference - used to go backwards through the -// reference string. Caller will need to make sure that prevRef is not before -// the start of the reference string when we return. -const char *DBMessageHdr::GetPrevReference(const char *prevRef, char *reference) -{ - const char *ptr = prevRef; - - while ((*ptr == '>' || *ptr == ' ') && *ptr) - ptr--; - - // scan back to '<' - for (int i = 0; *ptr && *ptr != '<' ; i++) - ptr--; - - GetReference(ptr, reference); - if (*ptr == '<') - ptr--; - return ptr; -} - -// If the m_messageIdID string in the hash table has a ref count -// greater than 1, the presumption is another header must -// refer to it. -XP_Bool DBMessageHdr::IsReferredTo(MSG_DBHandle db) -{ - XP_Bool isReferredTo = FALSE; - // DMB TODO -#if 0 - if (m_messageIdID != 0) - { - HashString *hashString = HashString::GetHashString(m_messageIdID, kMessageIdStringID, db); - if (hashString) - { - if (hashString->GetRefCount() > 1) - isReferredTo = TRUE; - hashString->unrefer(); - } - } -#endif - return isReferredTo; -} - -// Does this hdr refer to passed in hdr? I.e., should we be a child -// of the passed in hdr? -XP_Bool DBMessageHdr::RefersTo(DBMessageHdr *hdr) -{ - // if the hash string id of the passed in hdr is equal to one of the - // hash string id's in our reference id array, then we refer to hdr. - // DMB TODO - return FALSE; - -} - - -void DBMessageHdr::PurgeOfflineMessage(MSG_DBHandle /* db */) -{ - // ### dmb could move the news and imap overrides into here -} - - diff --git a/mozilla/lib/libmsg/msghdr.h b/mozilla/lib/libmsg/msghdr.h deleted file mode 100644 index ab7638886fe..00000000000 --- a/mozilla/lib/libmsg/msghdr.h +++ /dev/null @@ -1,131 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MSGHDR_H -#define _MSGHDR_H - - -#include "msgdb.h" - -class XPStringObj; - -#include "msgdbtyp.h" - -class DBMessageHdr -{ - friend class MessageDB; - friend class NewsGroupDB; -public: - /** Instance Methods **/ - DBMessageHdr(); - DBMessageHdr(MSG_HeaderHandle handle); - virtual ~DBMessageHdr(); - virtual XP_Bool InitFromXOverLine(char * xOverLine, MSG_DBHandle db); - - void CopyToMessageHdr(MessageHdrStruct *msgHdr,MSG_DBHandle db = NULL); // helper function to publish header info - void CopyToShortMessageHdr(MSG_MessageLine *msgHdr, MSG_DBHandle db /* = NULL */); // helper function to publish header info - virtual void CopyFromDBMsgHdr(DBMessageHdr *msgHdr, MSG_DBHandle srcDB, MSG_DBHandle destDB); - - static XP_Bool ParseLine(char *line, DBMessageHdr *msgHdr, MSG_DBHandle db); - static XP_Bool ParseLine(char *line, MessageHdrStruct *msgHdr); - - virtual XP_Bool RefersTo(DBMessageHdr *hdr); - virtual XP_Bool IsReferredTo(MSG_DBHandle db); -// set and get methods - XP_Bool SetThreadId(MessageId threadId); - XP_Bool SetMessageKey(MessageId articleNumber); - XP_Bool SetSubject(const char * subject, MSG_DBHandle db); - XP_Bool SetAuthor(const char * author, MSG_DBHandle db); - XP_Bool SetMessageId(const char * messageId, MSG_DBHandle db); - XP_Bool SetUnstrippedMessageId(char * messageId, MSG_DBHandle db); - XP_Bool SetReferences(const char * references, MSG_DBHandle db); - void SetMessageSize(uint32 messageSize); - void SetLevel(char level); - void SetDate(time_t date); - // flag handling routines - void SetFlags(uint32 flags); - uint32 GetFlags(); - uint32 OrFlags(uint32 flags); - uint32 AndFlags(uint32 flags); - uint32 GetMozillaStatusFlags(); - virtual void CopyDBFlagsToMsgHdrFlags(uint32 *pflags); - - char GetLevel(); - time_t GetDate() {return m_date;} - - MessageKey GetArticleNum(); - MessageKey GetMessageKey(); - MessageKey GetThreadId(); - - // this is almost always the m_messageKey, except for the first message. - virtual uint32 GetMessageOffset() {return (m_messageKey < 5) ? 0 : m_messageKey;} - - virtual MSG_PRIORITY GetPriority() ; - /* does news have priority? By default, we ignore it. */ - virtual void SetPriority(const char * /*priority*/); - virtual void SetPriority(MSG_PRIORITY /*priority*/); - // this one should go away... DMB - virtual uint32 GetMessageSize(); - void GetSubject(char *subject, int subjectLen, XP_Bool withRe /* = FALSE */, MSG_DBHandle db ); - XP_Bool GetSubject(XPStringObj &subject, XP_Bool withRe /* = FALSE */, MSG_DBHandle db ); - void GetMessageId(char *outMessageId, int messageIdLen, MSG_DBHandle db); - void GetAuthor(char *outAuthor, int authorLen, MSG_DBHandle db = NULL); - void GetRFC822Author(char *outAuthor, int authorLen, MSG_DBHandle db ); - XP_Bool GetAuthor(XPStringObj &subject, MSG_DBHandle db); - XP_Bool GetRFC822Author(XPStringObj &subject, MSG_DBHandle db); - void GetMailboxOfAuthor(char *outAuthor, int authorLen, MSG_DBHandle db ); - XP_Bool GetMessageId(XPStringObj &messageId, MSG_DBHandle db ); - int32 GetNumReferences(); - const char *GetReference(const char *nextRef, char *reference); - const char *GetPrevReference(const char *prefRef, char *reference); - // These are all virtual methods so callers don't need to downcast - // to mailhdrs. - virtual int32 GetNumRecipients(); - virtual int32 GetNumCCRecipients(); - virtual void GetCCList(XPStringObj & /*ccList*/ ,MSG_DBHandle /*db*/); - virtual void GetRecipients(XPStringObj & /*recipient*/, MSG_DBHandle /*db*/); - virtual void GetNameOfRecipient(XPStringObj & /*recipient*/, int /*whichRecipient*/, MSG_DBHandle /*db*/) ; - virtual void GetMailboxOfRecipient(XPStringObj & /*recipient*/, int /*whichRecipient*/, MSG_DBHandle /*db*/); - virtual void GetNameOfCCRecipient(XPStringObj & /*recipient*/, int /*whichRecipient*/, MSG_DBHandle /*db*/) ; - virtual void GetMailboxOfCCRecipient(XPStringObj & /*recipient*/, int /*whichRecipient*/, MSG_DBHandle /*db*/); - virtual uint32 GetByteLength(); - virtual uint32 GetLineCount(); - virtual void PurgeArticle(); - virtual void PurgeOfflineMessage(MSG_DBHandle db); - MSG_HeaderHandle GetHandle() {return m_dbHeaderHandle;} - void SetHandle(MSG_HeaderHandle headerHandle) {m_dbHeaderHandle = headerHandle;} - -#ifdef DEBUG_bienvenu - static int32 numMessageHdrs; -#endif -protected: - MSG_HeaderHandle m_dbHeaderHandle; - MessageId m_threadId; - MessageId m_messageKey; //news: article number, mail mbox offset - time_t m_date; - uint32 m_messageSize; // lines for news articles, bytes for mail messages - uint32 m_flags; - char m_level; // indentation level -}; - - -#endif diff --git a/mozilla/lib/libmsg/msghost.h b/mozilla/lib/libmsg/msghost.h deleted file mode 100644 index 3193939a242..00000000000 --- a/mozilla/lib/libmsg/msghost.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef __msg_Host__ -#define __msg_Host__ 1 - -#include "msgzap.h" - -class MSG_NewsHost; -class MSG_IMAPHost; - -class MSG_Host : public MSG_ZapIt { - -public: - virtual XP_Bool IsIMAP () { return FALSE; } - virtual XP_Bool IsNews () { return FALSE; } - virtual MSG_NewsHost *GetNewsHost() { return 0; } - virtual MSG_IMAPHost *GetIMAPHost() { return 0; } - virtual const char* getFullUIName() { return 0; } - virtual int RemoveHost() {return 0;} - virtual XP_Bool isSecure() {return FALSE;} - virtual int32 getPort() { return 0; } -}; - - - -#endif /* __msg_Host__ */ diff --git a/mozilla/lib/libmsg/msgimap.cpp b/mozilla/lib/libmsg/msgimap.cpp deleted file mode 100644 index 9857a65b7e9..00000000000 --- a/mozilla/lib/libmsg/msgimap.cpp +++ /dev/null @@ -1,6039 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* imap related libmsg stuff */ - -#include "msg.h" -#include "errcode.h" -#include "msgimap.h" -#include "maildb.h" -#include "mailhdr.h" -#include "msgprefs.h" -#include "msgurlq.h" -#include "msgdbvw.h" -#include "grpinfo.h" -#include "msgtpane.h" -#include "msgspane.h" -#include "imap.h" -#include "msgfpane.h" -#include "pmsgfilt.h" -#include "prsembst.h" -#include "xpgetstr.h" -#include "xplocale.h" -#include "imapoff.h" -#include "msgurlq.h" -#include "prefapi.h" -#include "msgundmg.h" -#include "msgundac.h" -#include "libi18n.h" -#include "msgmpane.h" -#include "prtime.h" -#include "imaphost.h" -#include "subpane.h" -#include "prthread.h" -#include "xp_hash.h" -#include "pw_public.h" -#include "msgundmg.h" -#include "prlong.h" -#include "msgbiff.h" -#include "netutils.h" - -extern "C" -{ - extern int MK_MSG_ERROR_WRITING_MAIL_FOLDER; - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_CANT_COPY_TO_SAME_FOLDER; - extern int MK_MSG_CANT_COPY_TO_QUEUE_FOLDER; - extern int MK_MSG_CANT_COPY_TO_QUEUE_FOLDER_OLD; - extern int MK_MSG_CANT_COPY_TO_DRAFTS_FOLDER; - extern int MK_MSG_CANT_CREATE_FOLDER; - extern int MK_COULD_NOT_CREATE_DIRECTORY; - extern int MK_UNABLE_TO_DELETE_FILE; - extern int MK_UNABLE_TO_OPEN_FILE; - extern int MK_MSG_FOLDER_ALREADY_EXISTS; - extern int MK_MSG_FOLDER_BUSY; - extern int MK_MSG_CANT_DELETE_NEWS_DB; - extern int MK_MSG_IMAP_CONTAINER_NAME; - extern int MK_MSG_ONLINE_IMAP_WITH_NO_BODY; - extern int MK_MSG_ONLINE_COPY_FAILED; - extern int MK_MSG_ONLINE_MOVE_FAILED; - extern int MK_MSG_CANT_FIND_SNM; - extern int MK_MSG_NO_UNDO_DURING_IMAP_FOLDER_LOAD; - extern int MK_MSG_BOGUS_SERVER_MAILBOX_UID_STATE; - extern int MK_POP3_NO_MESSAGES; - extern int MK_MSG_LOTS_NEW_IMAP_FOLDERS; - extern int MK_MSG_IMAP_DIR_PROMPT; - extern int MK_MSG_IMAP_DISCOVERING_MAILBOX; - extern int XP_ALERT_OFFLINE_MODE_SELECTED; - extern int MK_MSG_IMAP_INBOX_NAME; - extern int XP_MSG_PASSWORD_FAILED; - extern int XP_MSG_IMAP_ACL_READ_RIGHT; - extern int XP_MSG_IMAP_ACL_WRITE_RIGHT; - extern int XP_MSG_IMAP_ACL_LOOKUP_RIGHT; - extern int XP_MSG_IMAP_ACL_INSERT_RIGHT; - extern int XP_MSG_IMAP_ACL_DELETE_RIGHT; - extern int XP_MSG_IMAP_ACL_CREATE_RIGHT; - extern int XP_MSG_IMAP_ACL_SEEN_RIGHT; - extern int XP_MSG_IMAP_ACL_POST_RIGHT; - extern int XP_MSG_IMAP_ACL_ADMINISTER_RIGHT; - extern int XP_MSG_IMAP_ACL_FULL_RIGHTS; - extern int XP_MSG_IMAP_UNKNOWN_USER; - extern int XP_MSG_IMAP_PERSONAL_FOLDER_TYPE_NAME; - extern int XP_MSG_IMAP_PERSONAL_SHARED_FOLDER_TYPE_NAME; - extern int XP_MSG_IMAP_PUBLIC_FOLDER_TYPE_NAME; - extern int XP_MSG_IMAP_OTHER_USERS_FOLDER_TYPE_NAME; - extern int XP_MSG_IMAP_PERSONAL_FOLDER_TYPE_DESCRIPTION; - extern int XP_MSG_IMAP_PERSONAL_SHARED_FOLDER_TYPE_DESCRIPTION; - extern int XP_MSG_IMAP_PUBLIC_FOLDER_TYPE_DESCRIPTION; - extern int XP_MSG_IMAP_OTHER_USERS_FOLDER_TYPE_DESCRIPTION; -} - -// This string is defined in the ACL RFC to be "anyone" -#define IMAP_ACL_ANYONE_STRING "anyone" - -// forward - -extern "C" int32 -NET_BlockingWrite (PRFileDesc *filedes, const void * buf, unsigned int nbyte); - -void PostMessageCopyUrlExitFunc(URL_Struct *URL_s, int status, MWContext *window_id); -void UpdateStandAloneIMAPBiff(const IDArray& keysToFetch); - -static -void PostEmptyImapTrashExitFunc(URL_Struct *URL_s, int status, MWContext* /*window_id*/) -{ - // if this was launched from a folder pane. then start compress folders url. - if ((status >= 0) && (URL_s->msg_pane->GetPaneType() == MSG_FOLDERPANE)) - ((MSG_FolderPane *) URL_s->msg_pane)->CompressAllFolders(); -} - - -// This exit function will get called when you pass false in the loadingFolder argument to -// MSG_IMAPFolderInfoMail::StartUpdateOfNewlySelectedFolder -void ImapFolderClearLoadingFolder(URL_Struct *URL_s, int /*status*/, MWContext* window_id) -{ - if (URL_s->msg_pane && !URL_s->msg_pane->GetActiveImapFiltering()) - { - MSG_IMAPFolderInfoMail *loadedFolder = URL_s->msg_pane->GetLoadingImapFolder(); - URL_s->msg_pane->SetLoadingImapFolder(NULL); - if (loadedFolder) - { - loadedFolder->SetGettingMail(FALSE); - loadedFolder->NotifyFolderLoaded(URL_s->msg_pane); // dmb - fix stop watch when no connections? - } - } -} - -// This exit function will get called when you pass true in the loadingFolder argument to -// MSG_IMAPFolderInfoMail::StartUpdateOfNewlySelectedFolder -void ImapFolderSelectCompleteExitFunction(URL_Struct *URL_s, int /*status*/, MWContext* window_id) -{ - if (URL_s->msg_pane && !URL_s->msg_pane->GetActiveImapFiltering()) - { - MSG_IMAPFolderInfoMail *loadedFolder = URL_s->msg_pane->GetLoadingImapFolder(); - URL_s->msg_pane->SetLoadingImapFolder(NULL); - - XP_Bool sendFolderLoaded = (loadedFolder != NULL); - - if (sendFolderLoaded) - { - MSG_Master *master = URL_s->msg_pane->GetMaster(); - loadedFolder->SetGettingMail(FALSE); - if (master->IsCachePasswordProtected() && !master->IsUserAuthenticated() && !NET_IsOffline()) - { - sendFolderLoaded = FALSE; - char *alert = XP_GetString(XP_MSG_PASSWORD_FAILED); -#ifndef XP_UNIX - FE_Alert(window_id, alert); -#else - FE_Alert_modal(window_id, alert); -#endif -#ifndef XP_MAC - URL_Struct *url_struct = NET_CreateURLStruct("mailbox:", NET_SUPER_RELOAD); - if (url_struct) - FE_GetURL(window_id, url_struct); -#endif - FE_PaneChanged(URL_s->msg_pane, TRUE, MSG_PaneNotifyFolderDeleted, (uint32) loadedFolder); - } - } - if (sendFolderLoaded) - { - FE_PaneChanged(URL_s->msg_pane, TRUE, MSG_PaneNotifyFolderLoaded, (uint32) loadedFolder); - loadedFolder->NotifyFolderLoaded(URL_s->msg_pane); // dmb - fix stop watch when no connections? - } - } -#ifdef DEBUG_bienvenu - else if (URL_s->msg_pane) - XP_Trace("pane has active imap filtering so we didn't send a folderloaded notification\n"); -#endif -} - -// static -void MSG_IMAPFolderInfoMail::ReportErrorFromBuildIMAPFolderTree(MSG_Master *mailMaster, const char *fileName, XP_FileType filetype) -{ - XP_FILE_NATIVE_PATH failedDir = WH_FileName(fileName,filetype); - char *errormsg = failedDir ? PR_smprintf(XP_GetString(MK_COULD_NOT_CREATE_DIRECTORY), failedDir) : (char *)NULL; - MWContext *alertContext = mailMaster->GetFirstPane() ? mailMaster->GetFirstPane()->GetContext() : (MWContext *)NULL; - if (errormsg) - FE_Alert(alertContext, errormsg); - FREEIF(failedDir); - FREEIF(errormsg); -} - - -MSG_IMAPFolderInfoContainer* -MSG_IMAPFolderInfoMail::BuildIMAPFolderTree (MSG_Master *mailMaster, - uint8 depth, - MSG_FolderArray * parentArray) -{ - // the imap folders start at level 1 - XP_ASSERT(depth == 1); - - XP_Bool errorReturnRootContainerOnly = FALSE; - - // make sure the root imap folder exists - XP_StatStruct imapfolderst; - if (XP_Stat("", &imapfolderst, xpImapRootDirectory)) - { - XP_MakeDirectory("", xpImapRootDirectory); - if (XP_Stat("", &imapfolderst, xpImapRootDirectory)) - { - errorReturnRootContainerOnly = TRUE; // can't create dir, why? - } - } - else if (!S_ISDIR(imapfolderst.st_mode)) - errorReturnRootContainerOnly = TRUE; - - if (errorReturnRootContainerOnly) - ReportErrorFromBuildIMAPFolderTree(mailMaster,"", xpImapRootDirectory); - - MSG_Prefs *prefs = mailMaster->GetPrefs(); - if (prefs) - { - int32 profileAge = prefs->GetStartingMailNewsProfileAge(); - // Upgrade default IMAP host prefs - if (! (profileAge & MSG_IMAP_DEFAULT_HOST_UPGRADE_FLAG)) // have we upgraded the default host? - { - prefs->SetMailNewsProfileAgeFlag(MSG_IMAP_DEFAULT_HOST_UPGRADE_FLAG); - MSG_IMAPHost::UpgradeDefaultServerPrefs(mailMaster); - } - } - - char *serverList = NULL; - MSG_IMAPFolderInfoContainer *container = NULL; - - PREF_CopyCharPref("network.hosts.imap_servers", &serverList); - char *serverPtr = serverList; - while (serverPtr) - { - char *endPtr = XP_STRCHR(serverPtr, ','); - if (endPtr) - *endPtr++ = '\0'; - MSG_IMAPFolderInfoContainer *curContainer = BuildIMAPServerTree(mailMaster, serverPtr, parentArray, errorReturnRootContainerOnly, depth); - if (!container) - container = curContainer; // we will return first container; - serverPtr = endPtr; - } - FREEIF(serverList); - return container; // return first container. -} - -/* static */ -MSG_IMAPFolderInfoContainer* MSG_IMAPFolderInfoMail::BuildIMAPServerTree(MSG_Master *mailMaster, - const char *imapServerName, - MSG_FolderArray * parentArray, - XP_Bool errorReturnRootContainerOnly, - int depth) -{ - XP_StatStruct imapfolderst; - // see if there's a :port in the server name. If so, strip it off when - // creating the server directory. - char *port = 0; - if (imapServerName) - { - port = XP_STRCHR(imapServerName,':'); - if (port) - *port=0; - } - const char *imapServerDir = imapServerName; - -#if defined(XP_WIN16) || defined(XP_MAC) || defined(XP_OS2) - -#if defined(XP_WIN16) || defined(XP_OS2) - const int limit = 8; -#elif XP_MAC - const int limit = 31; -#endif - - int len = 0; - if ((len = XP_STRLEN(imapServerDir)) > limit) { - imapServerDir = imapServerDir + len - limit; - } -#endif - - MSG_IMAPHost *imapHost = MSG_IMAPHost::AddHostFromPrefs(imapServerName, mailMaster); - XP_Bool alreadyReportedError = errorReturnRootContainerOnly; - if (!errorReturnRootContainerOnly && XP_Stat(imapServerDir, &imapfolderst, xpImapServerDirectory)) - { - XP_MakeDirectory(imapServerDir, xpImapServerDirectory); - if (XP_Stat(imapServerDir, &imapfolderst, xpImapServerDirectory)) - { - errorReturnRootContainerOnly = TRUE; // can't create dir, why? - } - } - else if (!errorReturnRootContainerOnly && !S_ISDIR(imapfolderst.st_mode)) - errorReturnRootContainerOnly = TRUE; - - if (errorReturnRootContainerOnly && !alreadyReportedError) - ReportErrorFromBuildIMAPFolderTree(mailMaster,imapServerDir, xpImapServerDirectory); - - // create the root level imap box - char *defaultImapDirectory = XP_STRDUP(mailMaster->GetPrefs()->GetIMAPFolderDirectory()); - char *imapDirLeafName = XP_STRRCHR(defaultImapDirectory, '/'); - XP_ASSERT(imapDirLeafName); - imapDirLeafName++; - *imapDirLeafName = '\0'; - char *imapDirectory = XP_AppendStr(defaultImapDirectory, imapServerName); - - MSG_IMAPFolderInfoContainer *rootIMAPfolder = new MSG_IMAPFolderInfoContainer(imapServerName,1, imapHost, mailMaster); - imapHost->SetHostInfo(rootIMAPfolder); - - if (rootIMAPfolder && parentArray) // need to figure out where to add imap host. - just before local host - { - int i = 0; - for (; i < parentArray->GetSize(); i++) - { - MSG_FolderInfo *folder = parentArray->GetAt(i); - if (folder && folder->GetFlags() & MSG_FOLDER_FLAG_DIRECTORY && folder->GetType() != FOLDER_IMAPSERVERCONTAINER) // local mail - break; - } - parentArray->InsertAt(i, rootIMAPfolder); - } - - // start the buildfoldertree recursion from the inbox - if (rootIMAPfolder && !errorReturnRootContainerOnly) - { - // there is a similar loop in MSG_FolderInfoMail::BuildFolderTree - // I have my own here because I would have to mangle MSG_FolderInfoMail::BuildFolderTree - // a lot to make it work with the MSG_IMAPFolderInfoContainer type - - XP_Dir dir = XP_OpenDir (imapDirectory, xpMailFolder); - if (dir) - { - XP_DirEntryStruct *entry = NULL; - for (entry = XP_ReadDir(dir); entry; entry = XP_ReadDir(dir)) - { - // ###phil not nice, but now that ShouldIgnoreFile is in the folderInfoMail, - // we have no way to ask here, since the IMAP container isn't a folderInfoMail - if (StaticShouldIgnoreFile(entry->d_name)) - continue; - - char *subName = (char*) XP_ALLOC(XP_STRLEN(imapDirectory) + XP_STRLEN(entry->d_name) + 2); // '/' + '\0' - if (subName) - { - XP_STRCPY (subName, imapDirectory); - if (*entry->d_name != '/') - XP_STRCAT (subName, "/"); - XP_STRCAT (subName, entry->d_name); - BuildFolderTree (subName, depth + 1, rootIMAPfolder->GetSubFolders(), mailMaster, TRUE, imapHost); - FREEIF(subName); - } - } - - - MSG_FolderInfo *foundInbox = NULL; - MSG_IMAPHostTable *imapHostTable = mailMaster->GetIMAPHostTable(); - XP_ASSERT(imapHostTable); // we just added one, right? - MSG_IMAPHost *defaultIMAPHost = imapHostTable->GetDefaultHost(); - - // Always make sure there's an IMAP INBOX on the default server, if we're using IMAP. - // We also always want to create an INBOX if there are no folders for a given host. - int32 numberOfInboxesFound = rootIMAPfolder->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, &foundInbox, 1); - int32 numberOfmailboxesFound = rootIMAPfolder->GetNumSubFolders(); - if ((imapHost == defaultIMAPHost) ? (numberOfInboxesFound == 0) : (numberOfmailboxesFound == 0)) - { - char *inboxPath = (char*) XP_ALLOC (XP_STRLEN(imapHost->GetLocalDirectory()) + XP_STRLEN(INBOX_FOLDER_NAME) + 2); // '/' + '\0' - if (inboxPath) - { - XP_STRCPY(inboxPath, imapDirectory); - XP_STRCAT(inboxPath, "/"); - XP_STRCAT(inboxPath, INBOX_FOLDER_NAME); - - // create the new database, set the online name - MailDB *newDb = NULL; - XP_Bool wasCreated=FALSE; - ImapMailDB::Open(inboxPath, TRUE, &newDb, mailMaster, &wasCreated); - if (newDb) - { - newDb->m_dbFolderInfo->SetMailboxName("INBOX"); // RFC inbox name - MSG_IMAPFolderInfoMail *inboxFolder = new MSG_IMAPFolderInfoMail(inboxPath, mailMaster, 2, MSG_FOLDER_FLAG_MAIL | MSG_FOLDER_FLAG_INBOX, imapHost); - if (imapHost->GetDefaultOfflineDownload()) - inboxFolder->SetFolderPrefFlags(inboxFolder->GetFolderPrefFlags() | MSG_FOLDER_PREF_OFFLINE); - - newDb->SetFolderInfoValid(inboxPath,0,0); - newDb->Close(); - if (inboxFolder && rootIMAPfolder) - { - // inboxFolder->SetIsOnlineVerified(TRUE); - XPPtrArray *rootSubfolderArray = (XPPtrArray *) rootIMAPfolder->GetSubFolders(); - rootSubfolderArray->Add(inboxFolder); - } - } - } - } - - XP_CloseDir(dir); - } - } - - FREEIF(imapDirectory); - return rootIMAPfolder; -} - -void -MSG_IMAPFolderInfoMail::MatchPathWithPersonalNamespaceThenSetFlag(const char *path, - const char *personalNameSpace, uint32 folderFlag, const char *onlineName) -{ - if (!path || NET_URL_Type(path) != IMAP_TYPE_URL) - return; - - char * folderName = NET_ParseURL(path, GET_PATH_PART); - - if (!folderName || !*folderName) - { - StrAllocCopy(folderName, "/"); - StrAllocCat(folderName, msg_DefaultFolderName(folderFlag)); - } - - if (folderName && *folderName && personalNameSpace && *personalNameSpace) - { - char *newN = PR_smprintf("/%s%s", personalNameSpace, folderName+1); - if(newN) - { - XP_FREEIF(folderName); folderName = newN; - } - } - if (folderName && *folderName && XP_STRCMP(folderName+1, onlineName) == 0) - SetFlag(folderFlag); - XP_FREEIF(folderName); -} - -void -MSG_IMAPFolderInfoMail::SetPrefFolderFlag() -{ - const char *path = GetPathname(); - const char *personalNamespacePrefix = GetIMAPHost() ? - GetIMAPHost()->GetDefaultNamespacePrefixOfType(kPersonalNamespace) : (char *)NULL; - - if (!path) - return; - - char *onlineName = - CreateOnlineVersionOfLocalPathString(*(m_master->GetPrefs()), path); - char *draftsPath = msg_MagicFolderName (m_master->GetPrefs(), - MSG_FOLDER_FLAG_DRAFTS, NULL); - char *templatesPath = msg_MagicFolderName (m_master->GetPrefs(), - MSG_FOLDER_FLAG_TEMPLATES, - NULL); - - ClearFlag(MSG_FOLDER_FLAG_DRAFTS); - MatchPathWithPersonalNamespaceThenSetFlag(draftsPath, personalNamespacePrefix, - MSG_FOLDER_FLAG_DRAFTS, onlineName); - XP_FREEIF(draftsPath); - - ClearFlag(MSG_FOLDER_FLAG_TEMPLATES); - MatchPathWithPersonalNamespaceThenSetFlag(templatesPath, personalNamespacePrefix, - MSG_FOLDER_FLAG_TEMPLATES, onlineName); - XP_FREEIF(templatesPath); - - char *imapSentMail = NULL; - char *imapSentNews = NULL; - - ClearFlag(MSG_FOLDER_FLAG_SENTMAIL); - PREF_CopyCharPref("mail.imap_sentmail_path", &imapSentMail); - MatchPathWithPersonalNamespaceThenSetFlag(imapSentMail, personalNamespacePrefix, - MSG_FOLDER_FLAG_SENTMAIL, onlineName); - XP_FREEIF(imapSentMail); - - PREF_CopyCharPref("news.imap_sentmail_path", &imapSentNews); - MatchPathWithPersonalNamespaceThenSetFlag(imapSentNews, personalNamespacePrefix, - MSG_FOLDER_FLAG_SENTMAIL, onlineName); - XP_FREEIF(imapSentNews); - - XP_FREEIF(onlineName); -} - -MSG_IMAPFolderInfoMail::MSG_IMAPFolderInfoMail(char* pathname, - MSG_Master *mailMaster, - uint8 depth, - uint32 flags, - MSG_IMAPHost *host) : - m_DownLoadState(kNoDownloadInProgress), - MSG_FolderInfoMail(pathname, mailMaster, depth, flags | MSG_FOLDER_FLAG_IMAPBOX | MSG_FOLDER_FLAG_MAIL) -{ - m_canBeInFolderPane = TRUE; - m_VerifiedAsOnlineFolder = FALSE; - m_OnlineHierSeparator = kOnlineHierarchySeparatorUnknown; - m_OnlineFolderName = NULL; - m_runningIMAPUrl = MSG_NotRunning; - m_requiresCleanup = FALSE; - m_LoadingInContext = NULL; - m_TimeStampOfLastList = LL_ZERO; - m_uploadInfo = NULL; - m_hasOfflineEvents = FALSE; - m_host = host; - m_folderNeedsSubscribing = FALSE; - m_folderNeedsACLListed = TRUE; - m_ownerUserName = NULL; - m_folderACL = NULL; - m_adminUrl = NULL; - XP_BZERO(&m_mailboxSpec, sizeof(m_mailboxSpec)); - if (flags & MSG_FOLDER_FLAG_INBOX) // LATER ON WE WILL ENABLE ANY FOLDER, NOT JUST INBOXES - MSG_Biff_Master::AddBiffFolder(pathname, host->GetCheckNewMail(), - host->GetBiffInterval(), TRUE, (char*) host->GetHostName()); -} - -void MSG_IMAPFolderInfoMail::SetTimeStampOfLastListNow() { m_TimeStampOfLastList = PR_Now(); } - - -#define kBogusImapFolderName "+=+=+=" - -MSG_IMAPFolderInfoMail::~MSG_IMAPFolderInfoMail() -{ - MSG_Master *master = NULL; - TNavigatorImapConnection *imapConnection = NULL; - - master = GetMaster(); - if (master && (GetFlags() & MSG_FOLDER_FLAG_INBOX)) - { - imapConnection = (TNavigatorImapConnection*) master->UnCacheImapConnection(GetHostName(), m_OnlineFolderName); - MSG_IMAP_KillConnection(imapConnection); // stop the connection and kill it - } - - // MSG_Biff_Master::RemoveBiffFolder(m_pathName); // Done in MSG_FolderInfoMail destructor - if (m_OnlineFolderName && XP_STRCMP(m_OnlineFolderName, kBogusImapFolderName)) - XP_FREE(m_OnlineFolderName); - delete m_folderACL; - FREEIF(m_ownerUserName); - FREEIF(m_adminUrl); -} - -MSG_IMAPFolderInfoMail *MSG_IMAPFolderInfoMail::GetIMAPFolderInfoMail() -{ - return this; -} - -MsgERR MSG_IMAPFolderInfoMail::OnCloseFolder () -{ - // Tell the connection cache this folder is closing. - m_master->ImapFolderClosed(this); - return eSUCCESS; -} - -void MSG_IMAPFolderInfoMail::SetOnlineName(const char *name) -{ - if (m_OnlineFolderName && XP_STRCMP(m_OnlineFolderName, kBogusImapFolderName)) - XP_FREE(m_OnlineFolderName); - m_OnlineFolderName = XP_STRDUP(name); - - if (m_OnlineFolderName) - { - MailDB *mailDb = NULL; - XP_Bool wasCreated=FALSE; - ImapMailDB::Open(m_pathName, TRUE, &mailDb, m_master, &wasCreated); - if (mailDb) - { - mailDb->m_dbFolderInfo->SetMailboxName(m_OnlineFolderName); - mailDb->Close(); - - // tell the kids, their online path is different now - int numberOfChildren = GetNumSubFolders(); - int status = 0; - for (int childIndex = 0; (childIndex < numberOfChildren) && !status; childIndex++) - { - MSG_IMAPFolderInfoMail *currentChild = (MSG_IMAPFolderInfoMail *) GetSubFolder(childIndex); - status = currentChild->ParentRenamed(m_OnlineFolderName); - } - - } - } -} - -#define kIMAPFolderCacheFormat "\t%s" -#define kIMAPFolderInfoCacheVersion 2 - -MsgERR MSG_IMAPFolderInfoMail::WriteToCache (XP_File f) -{ - // This function is coupled tightly with ReadFromCache, - // and loosely with ReadDBFolderInfo - - XP_FilePrintf (f, "\t%d", kIMAPFolderInfoCacheVersion); - XP_FilePrintf (f, kIMAPFolderCacheFormat, GetOnlineName()); - - return MSG_FolderInfoMail::WriteToCache (f); -} - -MsgERR MSG_IMAPFolderInfoMail::ReadFromCache (char *buf) -{ - MsgERR err = eSUCCESS; - char *saveBuf = buf; - int version; - int tokensRead = sscanf (buf, "\t%d", &version); - SkipCacheTokens (&buf, tokensRead); - - if (version == 2) - { - char *tmpName = (char*) XP_ALLOC(XP_STRLEN(buf)); - if (tmpName) - { - char *name = buf + 1; // skip over tab; - char *secondTab = XP_STRCHR(name, '\t'); - if (secondTab) - { - *secondTab = '\0'; - XP_FREEIF(m_OnlineFolderName); - m_OnlineFolderName = XP_STRDUP(name); // kinda hacky. maybe scan/printf wasn't such a good idea - *secondTab = '\t'; - } - SkipCacheTokens (&buf, 1); - XP_FREE(tmpName); - } - else - err = eOUT_OF_MEMORY; -// m_HaveReadNameFromDB = TRUE; - } - else if (version == 1) - { - // this was really a MSG_FolderInfoMail generated line so reset buf - // and call base class. - buf = saveBuf; - } - else - err = eUNKNOWN; - - err = MSG_FolderInfoMail::ReadFromCache (buf); - - return err; -} - -MsgERR MSG_IMAPFolderInfoMail::ReadDBFolderInfo (XP_Bool force /* = FALSE */) -{ - MsgERR err = eSUCCESS; - - if (m_master->InitFolderFromCache (this) && m_OnlineFolderName) - return err; - - if (!m_OnlineFolderName || force) - { - MailDB *mailDb = NULL; - XP_Bool wasCreated=FALSE; - ImapMailDB::Open(m_pathName, TRUE, &mailDb, m_master, &wasCreated); - if (mailDb) - { - XPStringObj serverPathName; - mailDb->m_dbFolderInfo->GetMailboxName(serverPathName); - if (XP_STRLEN(serverPathName)) - { - // this is a current db that was created with the path name - // m_name was read from the db by MSG_FolderInfoMail::MSG_FolderInfoMail - // for imap folders, the name in the db is the full server path - XP_FREEIF(m_OnlineFolderName); - m_OnlineFolderName = XP_STRDUP(serverPathName); - - // set m_name to the leaf of this. - if (!XP_STRCASECMP(m_OnlineFolderName,"INBOX")) - { - char *imapInboxName = XP_GetString(MK_MSG_IMAP_INBOX_NAME); - if (imapInboxName && *imapInboxName) - SetName(imapInboxName); - else - SetName("Inbox"); - } - else - { - char *leafSlash = NULL; - const char *namespacePrefix = m_host->GetNamespacePrefixForFolder(m_OnlineFolderName); - XP_Bool folderIsNamespace = (namespacePrefix && - !XP_STRCMP(namespacePrefix, m_OnlineFolderName)); - if (!folderIsNamespace) - leafSlash = XP_STRRCHR(m_OnlineFolderName, '/'); - if (leafSlash) - { - SetName(++leafSlash); - } - else - { - SetName(m_OnlineFolderName); // this is the leaf - } - } - } - else // this db is probably from before we store the path in it. - { // Take a wild guess. Works for most platforms. A failed - // guess will be deleted when we delete non verified folders - m_OnlineFolderName = CreateOnlineVersionOfLocalPathString( *m_master->GetPrefs(), m_pathName); - mailDb->m_dbFolderInfo->SetMailboxName(m_OnlineFolderName); - } - - // this is probably the first time we opened this db, so while we are here with an open - // db, preload a few more values that would cause a db open during mailbox discovery - char hierSeparator = GetOnlineHierarchySeparator(); - - // Call base class, but make sure it knows not to get the name again - m_HaveReadNameFromDB = TRUE; - err = MSG_FolderInfoMail::ReadDBFolderInfo(force); - - mailDb->Close(); - } - else - { - // can't open the DB? Well take a wild guess. Most stuff will be pretty horked but we can't return NULL - m_OnlineFolderName = CreateOnlineVersionOfLocalPathString( *m_master->GetPrefs(), m_pathName); - } - } - - return err; -} - - -const char* MSG_IMAPFolderInfoMail::GetOnlineName() -{ - ReadDBFolderInfo(); - - if (!m_OnlineFolderName) // memory allocation error? - { - MSG_IMAPFolderInfoMail *nonConstThis = (MSG_IMAPFolderInfoMail *) this; - nonConstThis->m_OnlineFolderName = kBogusImapFolderName; // invalid imap name - } - - return m_OnlineFolderName; -} - -MSG_IMAPHost * MSG_IMAPFolderInfoMail::GetIMAPHost() -{ - return m_host; -} - -MSG_IMAPFolderInfoContainer * MSG_IMAPFolderInfoMail::GetIMAPContainer() -{ - return (m_host) ? m_host->GetHostFolderInfo() : (MSG_IMAPFolderInfoContainer *)NULL; -} - -const char* MSG_IMAPFolderInfoMail::GetHostName() -{ - return (m_host) ? m_host->GetHostName() : GetMaster()->GetPrefs()->GetPopHost(); -} - -// make sure the m_OnlineFolderName is pulled from the db and that m_name -// is the leaf of this m_OnlineFolderName -const char* MSG_IMAPFolderInfoMail::GetName() // Name of this folder (as presented to user). -{ - if (!m_OnlineFolderName) - GetOnlineName(); // lazy initialize from db - return m_name; -} - -void MSG_IMAPFolderInfoMail::SetIsOnlineVerified(XP_Bool verified) -{ - m_VerifiedAsOnlineFolder = verified; -} - -void MSG_IMAPFolderInfoMail::SetHierarchyIsOnlineVerified(XP_Bool verified) -{ - // recursion for the children - int numberOfChildren = GetNumSubFolders(); - for (int childIndex = 0; childIndex < numberOfChildren; childIndex++) - { - MSG_IMAPFolderInfoMail *currentChild = (MSG_IMAPFolderInfoMail *) GetSubFolder(childIndex); - if (currentChild) - currentChild->SetHierarchyIsOnlineVerified(verified); - } - // this level - SetIsOnlineVerified(verified); -} - -XP_Bool MSG_IMAPFolderInfoMail::GetIsOnlineVerified() -{ - return m_VerifiedAsOnlineFolder; -} - -int32 MSG_IMAPFolderInfoMail::GetUnverifiedFolders(MSG_IMAPFolderInfoMail** result, - int32 resultsize) -{ - int num = 0; - if (!GetIsOnlineVerified()) { - if (result && num < resultsize) { - result[num] = this; - } - num++; - } - MSG_IMAPFolderInfoMail *folder = NULL; - for (int i=0; i < m_subFolders->GetSize(); i++) { - folder = (MSG_IMAPFolderInfoMail*) m_subFolders->GetAt(i); - num += folder->GetUnverifiedFolders(result + num, resultsize - num); - } - return num; -} - -void MSG_IMAPFolderInfoMail::SetRunningIMAPUrl(MSG_RunningState runningIMAPUrl) -{ - m_runningIMAPUrl = runningIMAPUrl; -} - -MSG_RunningState MSG_IMAPFolderInfoMail::GetRunningIMAPUrl() -{ - return m_runningIMAPUrl; -} - -void MSG_IMAPFolderInfoMail::SetHasOfflineEvents(XP_Bool hasOfflineEvents) -{ - m_hasOfflineEvents = hasOfflineEvents; -} - -XP_Bool MSG_IMAPFolderInfoMail::GetHasOfflineEvents() -{ - return m_hasOfflineEvents; -} - -// define the message download stream functions, implemented at the bottom of file -unsigned int MessageDownLoadStreamWriteReady(NET_StreamClass *stream); - -int IMAPHandleBlockForDataBaseCreate(NET_StreamClass *stream, const char *str, int32 msgUID); -void IMAPFinishStreamForDataBaseCreate(NET_StreamClass *stream); -void IMAPAbortStreamForDataBaseCreate (NET_StreamClass *stream, int status); - -int IMAPHandleBlockForMessageCopyDownload(NET_StreamClass *stream, const char *str, int32 strlength); -void IMAPFinishStreamForMessageCopyDownload(NET_StreamClass *stream); -void IMAPAbortStreamForMessageCopyDownload(NET_StreamClass *stream, int status); - -int MSG_IMAPFolderInfoMail::CreateMessageWriteStream(msg_move_state *state, uint32 msgSize, uint32 msg_flags) -{ - imapMessageFlagsType imapFlags = kNoImapMsgFlag; - - if (msg_flags & MSG_FLAG_READ) - imapFlags |= kImapMsgSeenFlag; - if (msg_flags & MSG_FLAG_REPLIED) - imapFlags |= kImapMsgAnsweredFlag; - if (msg_flags & MSG_FLAG_MARKED) - imapFlags |= kImapMsgFlaggedFlag; - - // graph the progress for the user - state->totalSizeForProgressGraph = msgSize; - FE_GraphProgressInit(state->sourcePane->GetContext(), - NULL, - state->totalSizeForProgressGraph); - - // remember these if we have to upload this later. - state->msgSize = msgSize; - state->msg_flags = msg_flags; - // upload the size for this message - if (state->imap_connection) - { - IMAP_UploadAppendMessageSize(state->imap_connection, msgSize,imapFlags); - state->haveUploadedMessageSize = TRUE; - } - else - { - XP_Trace(" no connection to append size to - what to do?\n"); - } - - // wait until the connection tells us which socket to write to - state->uploadToIMAPsocket = NULL; - - - return 0; -} - -XP_Bool MSG_IMAPFolderInfoMail::MessageWriteStreamIsReadyForWrite(msg_move_state *state) -{ - return state->uploadToIMAPsocket != 0; -} - - -uint32 MSG_IMAPFolderInfoMail::SeekToEndOfMessageStore(msg_move_state * /*state*/) -{return 0;} // we don't seek for online folder - - - -uint32 MSG_IMAPFolderInfoMail::WriteMessageBuffer(msg_move_state *state, char *buffer, uint32 bytesToWrite, MailMessageHdr *offlineHdr) -{ - uint32 bytesWritten = 0; - if (offlineHdr && state->destDB) - bytesWritten = offlineHdr->AddToOfflineMessage(buffer, bytesToWrite, state->destDB->GetDB()); - else - bytesWritten = NET_BlockingWrite(state->uploadToIMAPsocket, buffer, bytesToWrite); - - return bytesWritten; // success -} - - -void MSG_IMAPFolderInfoMail::CloseMessageWriteStream(msg_move_state *state) -{ - // see if this will notify the end of a message - NET_BlockingWrite(state->uploadToIMAPsocket, CRLF, 2); - /* wrong context - FE_GraphProgressDestroy (GetFolderPaneContext(), - NULL, - state->totalSizeForProgressGraph, - state->messageBytesMovedSoFar); - */ - // imap was waiting for a specific number of bytes. Once they got there, we were done. - (state->uploadCompleteFunction) (state->uploadCompleteArgument); -} - -void MSG_IMAPFolderInfoMail::SaveMessageHeader(msg_move_state * /*state*/, MailMessageHdr * /*hdr*/, uint32 /*messageKey*/, MessageDB * /*srcDB = NULL*/) -{} // we don't know the message key until our next full sync with the mailbox - - - -class IMAPdownLoadStreamData { -public: - IMAPdownLoadStreamData(); - ~IMAPdownLoadStreamData(); - - void Clear(); - - MWContext *urlContext; - uint32 msgSize; - ParseOutgoingMessage outgoingParser; - char *obuffer; - int32 obufferSize; - int32 obufferIndex; - char *m_mozillaStatus; -}; - -IMAPdownLoadStreamData::IMAPdownLoadStreamData() -{ - Clear(); -} - -IMAPdownLoadStreamData::~IMAPdownLoadStreamData() -{ - XP_FREEIF(m_mozillaStatus); -} - - -void IMAPdownLoadStreamData::Clear() -{ - urlContext = NULL; - msgSize = 0; - obuffer = NULL; - obufferSize = 0; - obufferIndex = 0; - m_mozillaStatus = NULL; -} - -NET_StreamClass *MSG_IMAPFolderInfoMail::CreateDownloadMessageStream(ImapActiveEntry *ce, - uint32 size, const char *content_type, - XP_Bool content_modified) -{ - MSG_Pane *urlPane = IMAP_GetActiveEntryPane(ce); - OfflineImapGoOnlineState *offlineImapGoOnlineState = (urlPane) ? urlPane->GetGoOnlineState() : (OfflineImapGoOnlineState *)NULL; - DownloadOfflineImapState *downloadOfflineImapState = (offlineImapGoOnlineState) - ? offlineImapGoOnlineState->GetDownloadOfflineImapState() : (DownloadOfflineImapState *)NULL; - - NET_StreamClass *returnStream = (NET_StreamClass *) XP_ALLOC(sizeof(NET_StreamClass)); - IMAPdownLoadStreamData *imapStreamData = new IMAPdownLoadStreamData; - - if (returnStream && imapStreamData) // all streams share some characteristics - { - imapStreamData->urlContext = urlPane->GetContext(); - imapStreamData->msgSize = size; - imapStreamData->obuffer = NULL; - imapStreamData->obufferSize = 0; - imapStreamData->obufferIndex = 0; - - returnStream->window_id = urlPane->GetContext(); - returnStream->data_object = imapStreamData; - returnStream->is_write_ready = MessageDownLoadStreamWriteReady; - returnStream->is_multipart = FALSE; - } - - switch (m_DownLoadState) { - case kDownLoadingAllMessageHeaders: - if (returnStream) - { - returnStream->name = XP_STRDUP("kDownLoadingAllMessageHeaders"); - returnStream->put_block = IMAPHandleBlockForDataBaseCreate; - returnStream->complete = IMAPFinishStreamForDataBaseCreate; - returnStream->abort = IMAPAbortStreamForDataBaseCreate; - } - break; - case kDownLoadMessageForCopy: - if (returnStream) - { - returnStream->name = XP_STRDUP("kDownLoadMessageForCopy"); - returnStream->put_block = IMAPHandleBlockForMessageCopyDownload; - returnStream->complete = IMAPFinishStreamForMessageCopyDownload; - returnStream->abort = IMAPAbortStreamForMessageCopyDownload; - } - break; - case kDownLoadMessageForOfflineDB: - if (returnStream) - { - delete imapStreamData; - returnStream->data_object = NULL; // set differently by CreateOfflineImapStream - // so lets not leak. - - returnStream->name = XP_STRDUP("kDownLoadMessageForOfflineDB"); - DownloadOfflineImapState::CreateOfflineImapStream(returnStream, this, NULL, downloadOfflineImapState); - if (!downloadOfflineImapState && offlineImapGoOnlineState) - { - DownloadOfflineImapState *downloadState = (DownloadOfflineImapState *) returnStream->data_object; - offlineImapGoOnlineState->SetDownloadOfflineImapState(downloadState); - downloadState->SetDeleteOnComplete(FALSE); - } - } - break; - default: - { - delete imapStreamData; - - XP_Bool captureOffline = (GetFolderPrefFlags() & MSG_FOLDER_PREF_OFFLINE) != 0; - - NET_StreamClass *displayStream = IMAP_CreateDisplayStream(ce,captureOffline, size, content_type); - - // If this is an offline imap folder, don't pass up the chance to cache this message. - // Note that we would not be here if there already was a body - // Don't do this if the message body has been modified (parts left out) - if (captureOffline && !content_modified) - DownloadOfflineImapState::CreateOfflineImapStream(returnStream, this, displayStream); - else - { - // this is a pure display stream. mkimap4.cpp in libnet will expect currentIMAPfolder==NULL in this case - urlPane->GetContext()->currentIMAPfolder = NULL; - XP_FREE(returnStream); - returnStream = displayStream; - } - } - } - return returnStream; -} - -#define ServerBugWorkAroundString "Status: 0" - -uint32 MSG_IMAPFolderInfoMail::WriteBlockToImapServer(DBMessageHdr *msgHeader, //move this header - msg_move_state *state, // track it in this state - MailMessageHdr *offlineHdr, // NON-NULL means offline append - XP_Bool actuallySendToServer) -{ - // copy state->size or one message - uint32 messageLength = msgHeader->GetByteLength(); - uint32 bytesLeft = messageLength - state->messageBytesMovedSoFar; - uint32 nRead=0; - uint32 nOfBytesWritten=0; - - XP_Bool lastCharacterOfPrevBufferWasCR = FALSE; - - do { // if the last char of this buffer is CR, then do another read/write - // we don't want to store that tidbit of info for the next visit - uint32 maxBytesItsSafeToConvert = state->size/2; - uint32 numberOfBytesToRead = bytesLeft > maxBytesItsSafeToConvert ? maxBytesItsSafeToConvert : bytesLeft; - nRead = XP_FileRead (state->buf, numberOfBytesToRead, state->infid); - XP_ASSERT(nRead == numberOfBytesToRead); - char *currentWriteableBuffer = state->buf; - if (state->messageBytesMovedSoFar == 0) // skip the first line. It's the Berkely envelope - { - // there might be one or more newlines before the envelope, so eat chars until we get the envelope - char *endOfLine = FindNextLineTerminatingCharacter(currentWriteableBuffer); - while (!msg_IsEnvelopeLine(currentWriteableBuffer, (endOfLine - currentWriteableBuffer) + 1)) - { - currentWriteableBuffer = endOfLine; - if (*currentWriteableBuffer && (*++currentWriteableBuffer == LF)) // skip the line terminator, any kind - currentWriteableBuffer++; - endOfLine = FindNextLineTerminatingCharacter(currentWriteableBuffer); - } - - // ok, so now currentWriteableBuffer is at the envelope, endOfLine is at the next eol char - // advance currentWriteableBuffer to leave room only for ServerBugWorkAroundString - currentWriteableBuffer += (endOfLine - currentWriteableBuffer) - XP_STRLEN(ServerBugWorkAroundString); - - // replace the envelope with the mail server bug work around - char eolChar = *endOfLine; - XP_STRCPY(currentWriteableBuffer, ServerBugWorkAroundString); - *endOfLine = eolChar; // replace NULL left by XP_STRCPY - - currentWriteableBuffer = FindNextLineTerminatingCharacter(currentWriteableBuffer); - if (*currentWriteableBuffer && (*++currentWriteableBuffer == LF)) // skip the line terminator, any kind - currentWriteableBuffer++; - } - uint32 nOfBytesToWrite = ConvertBufferToRFC822LineTermination(currentWriteableBuffer, - nRead - (currentWriteableBuffer - state->buf), - &lastCharacterOfPrevBufferWasCR); - if (actuallySendToServer) - nOfBytesWritten += WriteMessageBuffer(state, currentWriteableBuffer, nOfBytesToWrite, offlineHdr); - else - nOfBytesWritten += nOfBytesToWrite; - state->messageBytesMovedSoFar += nRead; - bytesLeft -= nRead; - } while (lastCharacterOfPrevBufferWasCR && (state->messageBytesMovedSoFar < messageLength)); - - return nOfBytesWritten; -} - - -uint32 MSG_IMAPFolderInfoMail::MessageCopySize(DBMessageHdr *msgHeader, msg_move_state *state) -{ - // seek to the beginning of the message - XP_FileSeek (state->infid, - msgHeader->GetMessageOffset(), - SEEK_SET); - - - uint32 nOfBytesWritten = 0; - state->messageBytesMovedSoFar = 0; - while (state->messageBytesMovedSoFar < msgHeader->GetByteLength()) - nOfBytesWritten += WriteBlockToImapServer(msgHeader, state, NULL, FALSE); // count only, no writing! - - state->messageBytesMovedSoFar = 0; // we actually did not write anything - return nOfBytesWritten; -} - - - -MsgERR MSG_IMAPFolderInfoMail::OfflineImapMsgToLocalFolder(MailMessageHdr *sourceHeader, MSG_FolderInfoMail *destFolder, MessageDB *sourceDB, msg_move_state *state) -{ - MsgERR stopit = 0; - - if (sourceHeader->GetOfflineMessageLength(state->destDB->GetDB())) - { - XP_File writeFid = XP_FileOpen (destFolder->GetPathname(), xpMailFolder, XP_FILE_APPEND_BIN); - if (writeFid) - { - XP_StatStruct destFolderStat; - uint32 newMsgPosition = 0; - if (!XP_Stat(destFolder->GetPathname(), &destFolderStat, xpMailFolder)) - newMsgPosition = destFolderStat.st_size; - - uint32 offlineMsgSize = sourceHeader->WriteOfflineMessage(writeFid, sourceDB->GetDB()); - XP_FileClose( writeFid ); - - if (offlineMsgSize == 0) - { - // cruds. truncate back to where we started the file - XP_FileTruncate(destFolder->GetPathname(), xpMailFolder, newMsgPosition); - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - - if (!stopit) - { - MailMessageHdr *newMailHdr = new MailMessageHdr; - if (newMailHdr) - { - newMailHdr->CopyFromMsgHdr(sourceHeader, sourceDB->GetDB(), state->destDB->GetDB()); - newMailHdr->PurgeOfflineMessage(state->destDB->GetDB()); - newMailHdr->SetMessageKey(newMsgPosition); - newMailHdr->SetMessageSize(offlineMsgSize); - - stopit = state->destDB->AddHdrToDB(newMailHdr, NULL, TRUE); - MailDB::SetFolderInfoValid(destFolder->GetPathname(), 0, 0); - destFolder->SummaryChanged(); - } - else - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - - MailDB *sourceMailDB = sourceDB->GetMailDB(); - if (state->ismove && sourceMailDB) - { - // the only playback action needed to to delete the source message - DBOfflineImapOperation *op = sourceMailDB->GetOfflineOpForKey(sourceHeader->GetMessageKey(), TRUE); - if (op) - { - op->SetImapFlagOperation(op->GetNewMessageFlags() | kImapMsgDeletedFlag); - delete op; - } - else - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - - } - } - } - else - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - else - stopit = MK_MSG_ONLINE_IMAP_WITH_NO_BODY; - - return stopit; -} - - -DBOfflineImapOperation *MSG_IMAPFolderInfoMail::GetClearedOriginalOp(DBOfflineImapOperation *op, MailDB **originalDB) -{ - DBOfflineImapOperation *returnOp = NULL; - XP_ASSERT(op->GetOperationFlags() & kMoveResult); - - XPStringObj originalBoxName; - MessageKey originalKey; - op->GetSourceInfo(originalBoxName, originalKey); - - MSG_FolderInfoMail *sourceFolder = GetMaster()->FindImapMailFolder(originalBoxName); - if (!sourceFolder) - sourceFolder = GetMaster()->FindMailFolder(originalBoxName,FALSE); - if (sourceFolder) - { - if (sourceFolder->GetFlags() & MSG_FOLDER_FLAG_IMAPBOX) - { - XP_Bool wasCreated=FALSE; - ImapMailDB::Open(sourceFolder->GetPathname(), TRUE, originalDB, GetMaster(), &wasCreated); - } - else - MailDB::Open(sourceFolder->GetPathname(), TRUE, originalDB); - - if (*originalDB) - { - returnOp = (*originalDB)->GetOfflineOpForKey(originalKey, FALSE); - if (returnOp) - { - XPStringObj moveDestination; - returnOp->GetMoveDestination((*originalDB)->GetDB(), moveDestination); - if (!XP_STRCMP(moveDestination, this->GetOnlineName())) - returnOp->ClearMoveOperation((*originalDB)->GetDB()); - } - } - } - - return returnOp; -} - -DBOfflineImapOperation *MSG_IMAPFolderInfoMail::GetOriginalOp(DBOfflineImapOperation *op, MailDB **originalDB) -{ - DBOfflineImapOperation *returnOp = NULL; - - XPStringObj originalBoxName; - MessageKey originalKey; - op->GetSourceInfo(originalBoxName, originalKey); - - MSG_FolderInfoMail *sourceFolder = GetMaster()->FindImapMailFolder(originalBoxName); - if (!sourceFolder) - sourceFolder = GetMaster()->FindMailFolder(originalBoxName,FALSE); - if (sourceFolder) - { - if (sourceFolder->GetFlags() & MSG_FOLDER_FLAG_IMAPBOX) - { - XP_Bool wasCreated=FALSE; - ImapMailDB::Open(sourceFolder->GetPathname(), TRUE, originalDB, GetMaster(), &wasCreated); - } - else - MailDB::Open(sourceFolder->GetPathname(), TRUE, originalDB); - - if (*originalDB) - { - returnOp = (*originalDB)->GetOfflineOpForKey(originalKey, FALSE); - } - } - - return returnOp; -} - -MsgERR MSG_IMAPFolderInfoMail::BeginOfflineCopy (MSG_FolderInfo *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - msg_move_state *state) -{ - MsgERR stopit = 0; - XP_Bool operationOnMoveResult = FALSE; - MailDB *sourceMailDB = sourceDB ? sourceDB->GetMailDB() : 0; - MSG_IMAPFolderInfoMail *dstImapFolder = dstFolder->GetIMAPFolderInfoMail(); - XP_Bool deleteToTrash = FALSE; - if (GetMaster() && GetMaster()->GetPrefs()) - deleteToTrash = DeleteIsMoveToTrash(); - - if (sourceMailDB) - { - UndoManager *undoManager = NULL; - - if (state && state->sourcePane) - undoManager = state->sourcePane->GetUndoManager(); - - XP_Bool shouldUndoOffline = undoManager && NET_IsOffline(); - if (shouldUndoOffline) - undoManager->StartBatch(); - // save the future ops in the source DB, if this is not a imap->local copy/move - - if (state->destDB && !stopit) // offline delete - { - // get the highest key in the dest db, so we can make up our fake keys - XP_Bool highWaterDeleted = FALSE; - XP_Bool haveWarnedUserAboutMoveTargets = FALSE; - MessageKey fakeBase = 1; - fakeBase += state->destDB->ListHighwaterMark(); - - // put fake message in destination db, delete source if move - for (int sourceKeyIndex=0; !stopit && (sourceKeyIndex < srcCount); sourceKeyIndex++) - { - XP_Bool messageReturningHome = FALSE; - char *originalBoxName = XP_STRDUP(GetOnlineName()); - MessageKey originalKey = srcArray->GetAt(sourceKeyIndex); - - if (dstFolder->GetFlags() & MSG_FOLDER_FLAG_IMAPBOX) - { - DBOfflineImapOperation *sourceOp = sourceMailDB->GetOfflineOpForKey(originalKey, TRUE); - if (sourceOp) - { - MailDB *originalDB = NULL; - if (sourceOp->GetOperationFlags() == kMoveResult) // offline move - { - // gracious me, we are moving something we already moved while offline! - // find the original operation and clear it! - DBOfflineImapOperation *originalOp = GetClearedOriginalOp(sourceOp, &originalDB); - if (originalOp) - { - XPStringObj originalString; - sourceOp->GetSourceInfo(originalString,originalKey); - FREEIF(originalBoxName); - originalBoxName = XP_STRDUP(originalString); - originalKey = sourceOp->GetMessageKey(); - - if (state->ismove) - sourceMailDB->DeleteOfflineOp(sourceOp->GetMessageKey()); - delete sourceOp; - - sourceOp = originalOp; - if (dstImapFolder && !XP_STRCMP(originalBoxName, dstImapFolder->GetOnlineName())) - { - messageReturningHome = TRUE; - originalDB->DeleteOfflineOp(originalOp->GetMessageKey()); - } - } - } - - if (!messageReturningHome) - { - const char *destinationPath = ((MSG_IMAPFolderInfoMail *) dstFolder)->GetOnlineName(); - int32 opType = kMsgCopy; - - if (state->ismove) - { - sourceOp->SetMessageMoveOperation(destinationPath); // offline move - opType = kMsgMoved; - } - else - sourceOp->AddMessageCopyOperation(destinationPath); // offline copy - if (shouldUndoOffline && undoManager->GetState() == UndoIdle) - { // only need undo if we're really offline and not pseudo offline - OfflineIMAPUndoAction *undoAction = new - OfflineIMAPUndoAction(state->sourcePane, (MSG_FolderInfo*) this, sourceOp->GetMessageKey(), opType, - sourceMailDB->GetFolderInfo(), dstFolder, 0, NULL, 0); - if (undoAction) - undoManager->AddUndoAction(undoAction); - } - delete sourceOp; - } - if (originalDB) - originalDB->Close(); - } - else - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - - } - - MailMessageHdr *mailHdr = sourceMailDB->GetMailHdrForKey(originalKey); - if (mailHdr) - { - XP_Bool successfulCopy = FALSE; - highWaterDeleted = !highWaterDeleted && state->ismove && deleteToTrash && - (mailHdr->GetMessageKey() == sourceMailDB->m_dbFolderInfo->m_LastMessageUID); - - if (dstFolder->GetFlags() & MSG_FOLDER_FLAG_IMAPBOX) - { - MailMessageHdr *newMailHdr = new MailMessageHdr; - if (newMailHdr) - { - newMailHdr->CopyFromMsgHdr(mailHdr, sourceMailDB->GetDB(), state->destDB->GetDB()); - newMailHdr->SetMessageKey(fakeBase + sourceKeyIndex); - stopit = state->destDB->AddHdrToDB(newMailHdr, NULL, TRUE); - } - else - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - - if (!stopit) - { - DBOfflineImapOperation *destOp = state->destDB->GetOfflineOpForKey(fakeBase + sourceKeyIndex, TRUE); - if (destOp) - { - // check if this is a move back to the original mailbox, in which case - // we just delete the offline operation. - if (messageReturningHome) - { - state->destDB->DeleteOfflineOp(destOp->GetMessageKey()); - } - else - { - state->destDB->SetSourceMailbox(destOp, originalBoxName, originalKey); - if (shouldUndoOffline && undoManager->GetState() == UndoIdle) - { - OfflineIMAPUndoAction *undoAction = new - OfflineIMAPUndoAction(state->sourcePane, (MSG_FolderInfo*) this, destOp->GetMessageKey(), kAddedHeader, - state->destDB->GetFolderInfo(), dstFolder, 0, newMailHdr); - if (undoAction) - undoManager->AddUndoAction(undoAction); - } - } - delete destOp; - } - else - stopit = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - successfulCopy = stopit == 0; - } - else - { - MSG_FolderInfoMail *mailDest = dstFolder->GetMailFolderInfo(); - if (mailDest) - { - stopit = OfflineImapMsgToLocalFolder(mailHdr, mailDest, sourceMailDB, state); - successfulCopy = (stopit == 0); - } - } - - - if (state->ismove && successfulCopy) - { - int32 opType = kDeletedMsg; - if (!deleteToTrash) - opType = kMsgMarkedDeleted; - if (shouldUndoOffline && undoManager->GetState() == UndoIdle) { - OfflineIMAPUndoAction *undoAction = new - OfflineIMAPUndoAction(state->sourcePane, (MSG_FolderInfo*) this, mailHdr->GetMessageKey(), opType, - sourceMailDB->GetFolderInfo(), dstFolder, 0, mailHdr); - if (undoAction) - undoManager->AddUndoAction(undoAction); - } - if (deleteToTrash) - sourceMailDB->DeleteMessage(mailHdr->GetMessageKey(), NULL, FALSE); - else - sourceMailDB->MarkImapDeleted(mailHdr->GetMessageKey(),TRUE,NULL); // offline delete - } - - delete mailHdr; - - if (!successfulCopy) - highWaterDeleted = FALSE; - } - FREEIF(originalBoxName); - } - - - if (sourceMailDB->m_dbFolderInfo->GetNumVisibleMessages() && highWaterDeleted) - { - ListContext *listContext = NULL; - DBMessageHdr *highHdr = NULL; - if (sourceMailDB->ListLast(&listContext, &highHdr) == eSUCCESS) - { - sourceMailDB->m_dbFolderInfo->m_LastMessageUID = highHdr->GetMessageKey(); - delete highHdr; -// sourceMailDB->m_dbFolderInfo->setDirty(); DMB TODO - sourceMailDB->ListDone(listContext); - } - } - - state->destDB->Commit(); - SummaryChanged(); - dstFolder->SummaryChanged(); - - } - - // load the next message in the message pane if needed - if (state->nextKeyToLoad && (state->sourcePane->GetPaneType() == MSG_MESSAGEPANE)) - { - MSG_MessagePane *messagePane = (MSG_MessagePane *) state->sourcePane; - messagePane->LoadMessage(this, state->nextKeyToLoad, NULL, TRUE); - } - if (shouldUndoOffline) - undoManager->EndBatch(); - } - - return stopit ? stopit : -1; -} - - -MsgERR MSG_IMAPFolderInfoMail::BeginCopyingMessages (MSG_FolderInfo *dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - MSG_UrlQueue *urlQueue, - int32 srcCount, - MessageCopyInfo *copyInfo) -{ - MsgERR returnError = CheckForLegalCopy(dstFolder); - - msg_move_state *state = &copyInfo->moveState; - - if (returnError != 0) - return returnError; - - state->destfolder = dstFolder; - - if (NET_IsOffline() || (!urlQueue && ShouldPerformOperationOffline() && state->destDB)) - return BeginOfflineCopy(dstFolder, sourceDB, srcArray, srcCount, state); - - // build a list of message UIDs - char *idString = AllocateImapUidString(*srcArray); - - char *copyURL = NULL; - state->sourcePane->GetContext()->msgCopyInfo->imapOnLineCopyState = kInProgress; - - MSG_IMAPFolderInfoMail *onlineDestinationFolder = dstFolder->GetIMAPFolderInfoMail(); - - if (FOLDER_MAIL == dstFolder->GetType()) // online to offline - { - // will be set in MSG_StartImapMessageToOfflineFolderDownload - // m_DownLoadState = kDownLoadMessageForCopy; - - state->sourcePane->GetContext()->mailMaster = m_master; - state->sourcePane->GetContext()->currentIMAPfolder = this; - - if (idString) - { - copyURL = CreateImapOnToOfflineCopyUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator(), - idString, - "OFFLINEFOLDER", - TRUE, // ids are uids - state->ismove); - } - } - // check if we're copying within the same host - else if (onlineDestinationFolder && onlineDestinationFolder->GetIMAPHost() == GetIMAPHost()) - { - - if (idString) - { - copyURL = CreateImapOnlineCopyUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator(), - idString, - onlineDestinationFolder->GetOnlineName(), - onlineDestinationFolder->GetOnlineHierarchySeparator(), - TRUE, // ids are uids - state->ismove); - } - } - // copying across hosts - else if (onlineDestinationFolder) - { - IDArray keysToSave; - for (int32 i = 0; i < srcCount; i++) - keysToSave.Add (srcArray->GetAt(i)); - FREEIF(idString); - return DownloadToTempFileAndUpload(copyInfo, keysToSave, dstFolder, sourceDB); - - } - MSG_UrlQueue::AddUrlToPane(copyURL, PostMessageCopyUrlExitFunc, state->sourcePane); - FREEIF(copyURL); - - FREEIF(idString); - - return returnError; -} - - -XP_Bool -MSG_IMAPFolderInfoMail::UndoMoveCopyMessagesHelper(MSG_Pane *urlPane, - const IDArray &keysToUndo, - UndoObject *undoObject) -{ - UndoManager *undoManager = urlPane->GetUndoManager(); - URL_Struct *url_struct = NULL; - - if (urlPane->GetContext() == GetFolderLoadingContext()) - { - FE_Alert(urlPane->GetContext(), XP_GetString(MK_MSG_NO_UNDO_DURING_IMAP_FOLDER_LOAD)); - return FALSE; - } - - if (undoManager->GetState() == UndoUndoing) { - StartUpdateOfNewlySelectedFolder(urlPane, FALSE, NULL, &keysToUndo, TRUE); - } - else if (undoManager->GetState() == UndoRedoing) { - StartUpdateOfNewlySelectedFolder(urlPane, FALSE, NULL, &keysToUndo, FALSE); - } - - if (url_struct) { - url_struct->msg_pane = urlPane; - undoObject->UndoURLHook(url_struct); - urlPane->GetURL(url_struct, FALSE); - return TRUE; - } - - return FALSE; -} - - -void MSG_IMAPFolderInfoMail::NotifyFolderLoaded(MSG_Pane *urlPane, XP_Bool /*loadWasInterrupted*/ /* default false */) -{ - // if we were loading in urlPane context, then clear the loading context - if (urlPane) - m_LoadingInContext = NULL; - - // MSG_PaneNotifyFolderLoaded now handled in the ImapFolderSelectCompleteExitFunction -} - - -int -MSG_IMAPFolderInfoMail::FinishCopyingMessages(MWContext *currentContext, - MSG_FolderInfo *srcFolder, - MSG_FolderInfo * dstFolder, - MessageDB* /*srcDB*/, - IDArray *srcArray, - int32 srcCount, - msg_move_state *state) -{ - int returnErr = 0; - - if (!dstFolder->TestSemaphore(this)) - { - returnErr = dstFolder->AcquireSemaphore(this); - if (returnErr) - { - FE_Alert (currentContext, XP_GetString(returnErr)); - return MK_MSG_FOLDER_BUSY; - } - } - - MessageDBView * view; - // added to handle search as view... - if (state->sourcePane && state->sourcePane->GetPaneType() == MSG_SEARCHPANE) - view = ((MSG_SearchPane *) state->sourcePane)->GetView(srcFolder); - else - view = (state->sourcePane) ? state->sourcePane->GetMsgView() : 0; - - // during debugging I realized that the state can change from - // kInProgress -> kSuccessfulCopy -> kSuccessfulDelete before this - // function gets called. Code written to process interim states - // may not get called - km - - switch (state->sourcePane->GetContext()->msgCopyInfo->imapOnLineCopyState) { - case kInProgress: - returnErr = 0; // tell ProcessMailbox to keep it coming.. - break; - case kSuccessfulCopy: - if (!state->ismove) // This is the final state for copy - { - state->moveCompleted = TRUE; - - // The download worked, update the destination panes - if (dstFolder->GetType() == FOLDER_MAIL) - ((MSG_FolderInfoMail *) dstFolder)->CloseOfflineDestinationDbAfterMove(state); - // else imap, handled by url exit function - returnErr = MK_CONNECTED; - UpdatePendingCounts(dstFolder, srcArray); - } - // search as view modification...inform search pane, that we are done with this view -// if (state->sourcePane && state->sourcePane->GetPaneType() == MSG_SEARCHPANE) -// ((MSG_SearchPane *) state->sourcePane)->CloseView(srcFolder); - - break; - case kFailedCopy: - returnErr = MK_MSG_ONLINE_COPY_FAILED; - break; - case kSuccessfulDelete: - { - XP_Bool showDeletedMessages = ShowDeletedMessages(); - - // if we filtering, assume missing are unread, otherwise read. - // don't diddle counts if playing back offline ops because the counts have already been diddled. - if (!m_master->GetPlayingBackOfflineOps()) - UpdatePendingCounts(dstFolder, srcArray, TRUE, !state->sourcePane->GetActiveImapFiltering()); - - state->moveCompleted = TRUE; - // The download worked, update the destination panes - if (dstFolder->GetType() == FOLDER_MAIL) - ((MSG_FolderInfoMail *) dstFolder)->CloseOfflineDestinationDbAfterMove(state); - // else imap, handled by url exit function - - - if (!showDeletedMessages) - { - // Run the delete loop forwards - // so the indices will be right for DeleteMessagesByIndex - MSG_ViewIndex doomedIndex = 0; - XP_Bool highWaterUIDwasDeleted = FALSE; - MailDB *affectedDB = NULL; - - if (view) - { - affectedDB = (MailDB *) view->GetDB(); - - IDArray viewIndices; - int total = srcArray->GetSize(); // Check for bug 113085 rb - XP_ASSERT(srcCount == total); - for (int32 i = 0; i < total; i++) - { - // should we stop on error? - MessageKey doomedKey = srcArray->GetAt(i); - doomedIndex = view->FindViewIndex(doomedKey); - if (doomedIndex != MSG_VIEWINDEXNONE) - { - viewIndices.Add(doomedIndex); - - // Tell the FE we're deleting this message in case they want to close - // any open message windows. - if (MSG_THREADPANE == state->sourcePane->GetPaneType()) - FE_PaneChanged (state->sourcePane, TRUE, MSG_PaneNotifyMessageDeleted, (uint32) doomedKey); - } - - if ((doomedKey == affectedDB->m_dbFolderInfo->m_LastMessageUID) && !highWaterUIDwasDeleted) - highWaterUIDwasDeleted = TRUE; - } - if (viewIndices.GetSize() != 0) - returnErr = view->DeleteMessagesByIndex (viewIndices.GetData(), viewIndices.GetSize(), TRUE /* delete from db */); - else - returnErr = 0; - } - else - { - // we are here because we did a get new mail from somewhere besides the inbox thread pane - // and some new messages were filtered to other folders - XP_Bool wasCreated=FALSE; - ImapMailDB::Open(GetPathname(), FALSE, &affectedDB, GetMaster(), &wasCreated); - if (affectedDB) - { - IDArray messageKeys; - messageKeys.SetSize(srcCount); - for (int32 msgIndex=0; msgIndex < srcCount; msgIndex++) - { - MessageKey doomedKey = srcArray->GetAt(msgIndex); - messageKeys.SetAt(msgIndex, doomedKey); - - if ((doomedKey == affectedDB->m_dbFolderInfo->m_LastMessageUID) && !highWaterUIDwasDeleted) - highWaterUIDwasDeleted = TRUE; - } - - returnErr = affectedDB->DeleteMessages(messageKeys, NULL); - } - // else, how could we fail to open this db, oh well at least we don't mess with it - } - - if (highWaterUIDwasDeleted && affectedDB) - { - // our sync info with the state of the server mailbox is stale - // grab the highest message keyleft, if there is one - - // also, check for 0 messages here - - if (affectedDB->m_dbFolderInfo->GetNumVisibleMessages()) - { - ListContext *listContext = NULL; - DBMessageHdr *highHdr = NULL; - if (affectedDB->ListLast(&listContext, &highHdr) == eSUCCESS) - { - affectedDB->m_dbFolderInfo->m_LastMessageUID = highHdr->GetMessageKey(); - delete highHdr; -// DMB TODO affectedDB->m_dbFolderInfo->setDirty(); - affectedDB->ListDone(listContext); - } - } - } - // if I opened the db, I should close it - if (!view && affectedDB) - { - affectedDB->Close(); - affectedDB = NULL; - } - if (view) - SetUrlForNextMessageLoad(state,view,doomedIndex); - } - else - { - DBFolderInfo *folderInfo = NULL; - MessageDB *messagedb = NULL; - MsgERR opendbErr = GetDBFolderInfoAndDB(&folderInfo, &messagedb); - if (opendbErr == 0) - { - MailDB *mailDB = messagedb->GetMailDB(); - if (mailDB) - SetIMAPDeletedFlag(mailDB, *srcArray); - messagedb->Close(); - messagedb = NULL; - } - } - - srcFolder->SummaryChanged(); - - - // Begin Undo hook - { - UndoManager *undoManager = state->sourcePane->GetUndoManager(); - if (undoManager && undoManager->GetState() == UndoIdle) { - IMAPMoveCopyMessagesUndoAction *undoAction = new - IMAPMoveCopyMessagesUndoAction(state->sourcePane, - srcFolder, - dstFolder, - state->ismove, - srcArray->GetAt(0), - state->nextKeyToLoad); - if (undoAction) { - int32 i; - for (i=0; i < srcCount; i++) - undoAction->AddKey(srcArray->GetAt(i)); - undoManager->AddUndoAction(undoAction); - } - } - } - // End Undo hook - - delete srcArray; // shouldn't this be deleted everywhere??? - - // search as view modification...inform search pane, that we are done with this view -// if (state->sourcePane && state->sourcePane->GetPaneType() == MSG_SEARCHPANE) -// ((MSG_SearchPane *) state->sourcePane)->CloseView(srcFolder); - - returnErr = MK_CONNECTED; // add code to delete from view - } - break; - case kFailedDelete: - // The download worked, update the destination panes - if (dstFolder->GetType() == FOLDER_MAIL) - dstFolder->SummaryChanged(); - // else imap, handled by url exit function - - returnErr = MK_MSG_ONLINE_MOVE_FAILED; - break; - } - - - return returnErr; -} - - -void MSG_IMAPFolderInfoMail::StoreImapFlags(MSG_Pane *paneForFlagUrl, imapMessageFlagsType flags, XP_Bool addFlags, - const IDArray &keysToFlag, MSG_UrlQueue *urlQueue /* = NULL */) -{ - URL_Struct *url = NULL; - - // fire off the url to do this marking - if (urlQueue || !NET_IsOffline() /* ShouldPerformOperationOffline() */) - { - // If we are not offline, we want to add the flag changes to the url queue. Otherwise our - // changes are reflected only after offline ops are executed. The screen wont match the - // flag states if they get new mail. Bug #108636 - char *idString = MSG_IMAPFolderInfoMail::AllocateImapUidString(keysToFlag); - char *urlString; - - if (addFlags) - urlString = CreateImapAddMessageFlagsUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator(), - idString, - flags, - TRUE); - else - urlString = CreateImapSubtractMessageFlagsUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator(), - idString, - flags, - TRUE); - - url = NET_CreateURLStruct (urlString, NET_DONT_RELOAD); - url->internal_url = TRUE; - url->msg_pane = paneForFlagUrl; - MSG_UrlQueue::AddUrlToPane(url, NULL, paneForFlagUrl, TRUE); - - FREEIF(urlString); - FREEIF( idString ); - } - else - { - MailDB *mailDb = NULL; // change flags offline - XP_Bool wasCreated=FALSE; - - ImapMailDB::Open(GetPathname(), TRUE, &mailDb, GetMaster(), &wasCreated); - if (mailDb) - { - UndoManager *undoManager = NULL; - MSG_Pane *fPane = mailDb->GetMaster()->FindFirstPaneOfType(MSG_FOLDERPANE); - uint32 total = keysToFlag.GetSize(); - - if (fPane) - undoManager = fPane->GetUndoManager(); - - for (int keyIndex=0; keyIndex < total; keyIndex++) - { - DBOfflineImapOperation *op = mailDb->GetOfflineOpForKey(keysToFlag[keyIndex], TRUE); - if (op) - { - MailDB *originalDB = NULL; - if (op->GetOperationFlags() & kMoveResult) - { - // get the op in the source db and change the flags there - DBOfflineImapOperation *originalOp = GetOriginalOp(op, &originalDB); - if (originalOp) - { - if (undoManager && undoManager->GetState() == UndoIdle && NET_IsOffline()) { - OfflineIMAPUndoAction *undoAction = new - OfflineIMAPUndoAction(paneForFlagUrl, (MSG_FolderInfo*) this, op->GetMessageKey(), kFlagsChanged, - this, NULL, flags, NULL, addFlags); - if (undoAction) - undoManager->AddUndoAction(undoAction); - } - delete op; - op = originalOp; - } - } - - if (addFlags) - op->SetImapFlagOperation(op->GetNewMessageFlags() | flags); - else - op->SetImapFlagOperation(op->GetNewMessageFlags() & ~flags); - delete op; - - if (originalDB) - { - originalDB->Close(); - originalDB = NULL; - } - } - } - mailDb->Close(); - mailDb = NULL; - } - } -} - - - -MsgERR MSG_IMAPFolderInfoMail::DeleteAllMessages(MSG_Pane *paneForDeleteUrl, XP_Bool deleteSubFoldersToo /* = TRUE */) // implements empty trash -{ - MsgERR preFlightError = 0; - - - if (NET_IsOffline()) - { - MailDB *mailDB = NULL; - XP_Bool wasCreated=FALSE; - ImapMailDB::Open(GetPathname(), TRUE, &mailDB, GetMaster(), &wasCreated); - if (mailDB) - { - MessageKey fakeId = mailDB->GetUnusedFakeId(); - DBOfflineImapOperation *op = mailDB->GetOfflineOpForKey(fakeId, TRUE); - if (op) - { - op->SetDeleteAllMsgs(); - delete op; - } - } - URL_Struct *url_struct = NET_CreateURLStruct("mailbox:?null", NET_SUPER_RELOAD); - if (url_struct) - { - url_struct->msg_pane = paneForDeleteUrl; - url_struct->pre_exit_fn = PostEmptyImapTrashExitFunc; - paneForDeleteUrl->GetURL(url_struct, FALSE); - } - return 0; - } - - // this url will delete the subfolders as well. Preflight this with the user. - if (deleteSubFoldersToo && HasSubFolders()) - { - MSG_FolderIterator iterator(this); - MSG_FolderInfo *currentFolder = iterator.First(); - while (currentFolder && eSUCCESS == preFlightError) - { - if (currentFolder != this) - preFlightError = paneForDeleteUrl->PreflightDeleteFolder(currentFolder, TRUE /*getUserConfirmation*/); - currentFolder = iterator.Next(); - } - } - - if (eSUCCESS == preFlightError) - { - char *trashUrl = CreateImapDeleteAllMessagesUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator()); - if (trashUrl) - { - MSG_UrlQueue::AddUrlToPane(trashUrl, PostEmptyImapTrashExitFunc, paneForDeleteUrl); - XP_FREE(trashUrl); - } - } - return preFlightError; -} - -void MSG_IMAPFolderInfoMail::DeleteSpecifiedMessages(MSG_Pane *paneForDeleteUrl, - const IDArray &keysToDelete, - MessageKey loadKeyOnExit) -{ - // see if we should "undelete" a selection of deleted messages - XP_Bool doUndelete = FALSE; - if (loadKeyOnExit == MSG_MESSAGEKEYNONE) - { - MailDB *newDb = NULL; - XP_Bool wasCreated=FALSE; - ImapMailDB::Open(GetPathname(), TRUE, &newDb, GetMaster(), &wasCreated); - if (newDb) - { - doUndelete = newDb->AllMessageKeysImapDeleted(keysToDelete); - if (doUndelete) - SetIMAPDeletedFlag(newDb,keysToDelete,FALSE); - newDb->Close(); - } - } - - - // build the index string - char *idString = AllocateImapUidString(keysToDelete); - - XP_Bool shouldRunInBackground = ShouldPerformOperationOffline(); - if (doUndelete || shouldRunInBackground) - { - StoreImapFlags(paneForDeleteUrl, kImapMsgDeletedFlag, !doUndelete, keysToDelete); - if (ShouldPerformOperationOffline() && !doUndelete) - { - MessagesWereDeleted(paneForDeleteUrl, FALSE, idString); - if ((loadKeyOnExit != MSG_MESSAGEKEYNONE) && (paneForDeleteUrl->GetPaneType() == MSG_MESSAGEPANE)) - { - // do loading of next message while offline - ((MSG_MessagePane *) paneForDeleteUrl)->LoadMessage(this, loadKeyOnExit, NULL, TRUE); - } - } - } - else - { - // do the url boogie - char *deleteUrl = CreateImapDeleteMessageUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator(), - idString, - TRUE); // ids are uids - if (deleteUrl) - { - URL_Struct *url_struct = NET_CreateURLStruct(deleteUrl, NET_SUPER_RELOAD); - if (url_struct) - { - if ((loadKeyOnExit != MSG_MESSAGEKEYNONE) && (paneForDeleteUrl->GetPaneType() == MSG_MESSAGEPANE)) - { - // url exit function will load next message - ((MSG_MessagePane *) paneForDeleteUrl)->SetPostDeleteLoadKey(loadKeyOnExit); - url_struct->pre_exit_fn = MSG_MessagePane::PostDeleteLoadExitFunction; - } - paneForDeleteUrl->GetURL(url_struct, FALSE); - } - XP_FREE(deleteUrl); - } - } - FREEIF(idString); -} - - // MSG_FolderInfoMail::Adopt does to much. We already know the - // newFolder pathname and parent sbd exist, so use this during - // imap folder discovery -void MSG_IMAPFolderInfoMail::LightWeightAdopt(MSG_IMAPFolderInfoMail *newChild) -{ - GetSubFolders()->Add (newChild); -// GetSubFolders()->InsertAt (0, newChild); -// GetSubFolders()->QuickSort (CompareFolders); -} - - -// Try and see if we have any mail pending, if Biff does not run it is because either -// we have not yet connected to the server or because we are busy talking to it, in -// which case we don't need to run biff here since the server will talk to us anyway. -// Called if the user has selected not to get the mail headers automatically when new -// mail arrives - -void MSG_IMAPFolderInfoMail::Biff(MWContext *biffContext) -{ - MailDB *folderDB; - XP_Bool wasCreated; - uint32 highWaterUid = 0; - - if (!NET_IsOffline()) { - if (ImapMailDB::Open(GetPathname(), FALSE, &folderDB, GetMaster(), &wasCreated) == eSUCCESS) - { - highWaterUid = folderDB->m_dbFolderInfo->m_LastMessageUID; - char *biffUrl = CreateImapBiffUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator(), - highWaterUid); - if (biffUrl) - { - URL_Struct *url_struct = NET_CreateURLStruct(biffUrl, NET_SUPER_RELOAD); - if (url_struct) - { - biffContext->imapURLPane = NULL; // might have a bogus url pane, so clear it. - biffContext->mailMaster = GetMaster();// so the biff will use the cached connection - // we know biff isn't running in a pane - msg_GetURL(biffContext, url_struct, FALSE); - } - XP_FREE(biffUrl); - } - folderDB->Close(); - } - } -} - - - -// Check to see if there is new mail waiting for us at the server, and then see if we should -// read the headers or not. - -XP_Bool MSG_IMAPFolderInfoMail::MailCheck(MWContext *biffContext) -{ - MSG_Master *master; - XP_Bool newMail = FALSE; - - if (NET_IsOffline()) - return FALSE; - master = GetMaster(); - if (master && (GetFlags() & MSG_FOLDER_FLAG_IMAPBOX)) - { - TNavigatorImapConnection *imapConnection = NULL; - - imapConnection = (TNavigatorImapConnection*) master->UnCacheImapConnection(GetHostName(), m_OnlineFolderName); - if (!imapConnection) { - biffContext->mailMaster = master; - Biff(biffContext); // start a connection - } - if (imapConnection) - { - if (!biffContext->mailMaster) - biffContext->mailMaster = master; - if (IMAP_CheckNewMail(imapConnection)) // if new mail, and they want headers we get in here - { - newMail = TRUE; - master->TryToCacheImapConnection(imapConnection, GetHostName(), m_OnlineFolderName); // put back for biff to use - // we should really find a pane that's not busy, if possible. Or create a progress pane! - MSG_Pane *pane = master->FindFirstPaneOfType(MSG_FOLDERPANE); - if (!pane) - pane = master->FindFirstPaneOfType(MSG_THREADPANE); - if (!pane) - pane = master->FindFirstPaneOfType(MSG_MESSAGEPANE); - if (pane /* && !XP_IsContextBusy(pane->GetContext()) */) - StartUpdateOfNewlySelectedFolder(pane, FALSE, NULL, NULL, FALSE, FALSE); - } else { - if (IMAP_NewMailDetected(imapConnection)) - newMail = TRUE; - master->TryToCacheImapConnection(imapConnection, GetHostName(), m_OnlineFolderName); // put back for biff to use - Biff(biffContext); // just check for new mail and get flags - } - } - } - return newMail; -} - - - -void MSG_IMAPFolderInfoMail::MessagesWereDeleted(MSG_Pane *urlPane, - XP_Bool deleteAllMsgs, - const char *doomedKeyString) -{ - XP_Bool showDeletedMessages = ShowDeletedMessages(); - - if (deleteAllMsgs) - { - TDBFolderInfoTransfer *originalInfo = NULL; - MailDB *folderDB; - XP_Bool wasCreated; - if (ImapMailDB::Open(GetPathname(), FALSE, &folderDB, GetMaster(), &wasCreated) == eSUCCESS) - { - originalInfo = new TDBFolderInfoTransfer(*folderDB->m_dbFolderInfo); - folderDB->ForceClosed(); - } - - // Remove summary file. - XP_FileRemove(GetPathname(), xpMailFolderSummary); - - // Create a new summary file, update the folder message counts, and - // Close the summary file db. - if (ImapMailDB::Open(GetPathname(), TRUE, &folderDB, GetMaster(), &wasCreated) == eSUCCESS) - { - if (originalInfo) - { - originalInfo->TransferFolderInfo(*folderDB->m_dbFolderInfo); - delete originalInfo; - } - SummaryChanged(); - folderDB->Close(); - } - - // Reload any thread pane because it's invalid now. - MSG_ThreadPane* threadPane = NULL; - if (m_master != NULL) - threadPane = m_master->FindThreadPaneNamed(GetPathname()); - if (threadPane != NULL) - threadPane->ReloadFolder(); - return; - } - - char *keyTokenString = XP_STRDUP(doomedKeyString); - IDArray affectedMessages; - ParseUidString(keyTokenString, affectedMessages); - - if (doomedKeyString && !showDeletedMessages) - { - MessageDBView *trashView = urlPane->GetMsgView(); - - if (trashView && keyTokenString) - { - IDArray viewIndexArray; - - for (uint32 i = 0; i < affectedMessages.GetSize(); i++) - viewIndexArray.Add(trashView->FindViewIndex(affectedMessages.GetAt(i))); - - trashView->DeleteMessagesByIndex (viewIndexArray.GetData(), viewIndexArray.GetSize(), TRUE /* delete from db */); - SummaryChanged(); - } - - } - else if (doomedKeyString) // && !imapDeleteIsMoveToTrash - { - MailDB *folderDB; - XP_Bool wasCreated; - if (ImapMailDB::Open(GetPathname(), FALSE, &folderDB, GetMaster(), &wasCreated) == eSUCCESS) - { - SetIMAPDeletedFlag(folderDB, affectedMessages); - folderDB->Close(); - } - } - FREEIF(keyTokenString); -} - - -// store MSG_FLAG_IMAP_DELETED in the specified mailhdr records -void MSG_IMAPFolderInfoMail::SetIMAPDeletedFlag(MailDB *mailDB, const IDArray &msgids, XP_Bool markDeleted) -{ - MsgERR markStatus = 0; - uint32 total = msgids.GetSize(); - - for (int index=0; !markStatus && (index < total); index++) - { - markStatus = mailDB->MarkImapDeleted(msgids[index], markDeleted, NULL); - } -} - -void MSG_IMAPFolderInfoMail::OpenThreadView(MailDB *mailDB,mailbox_spec *adoptedBoxSpec) -{ - // update all of the database flags - if (adoptedBoxSpec && adoptedBoxSpec->folderSelected && adoptedBoxSpec->flagState) - { - int numberOfFlags = IMAP_GetFlagStateNumberOfMessages(adoptedBoxSpec->flagState); - for (int flagIndex=0; flagIndex < numberOfFlags; flagIndex++) - { - imap_uid currentUID = IMAP_GetUidOfMessage(flagIndex, adoptedBoxSpec->flagState); - imapMessageFlagsType serverflags = IMAP_GetMessageFlags(flagIndex, adoptedBoxSpec->flagState); - - MailMessageHdr *mailHdr = mailDB->GetMailHdrForKey(currentUID); - if (mailHdr) - { - // noop calls that set db flags can cause a view invalidation and excessive - uint32 dbFlags = mailHdr->GetFlags(); - - if ( ((dbFlags & MSG_FLAG_READ) == 0) != ((serverflags & kImapMsgSeenFlag) == 0)) - mailDB->MarkRead( currentUID, (serverflags & kImapMsgSeenFlag) != 0); - - if ( ((dbFlags & MSG_FLAG_REPLIED) == 0) != ((serverflags & kImapMsgAnsweredFlag) == 0)) - mailDB->MarkReplied( currentUID, (serverflags & kImapMsgAnsweredFlag) != 0); - - if ( ((dbFlags & MSG_FLAG_MARKED) == 0) != ((serverflags & kImapMsgFlaggedFlag) == 0)) - mailDB->MarkMarked( currentUID, (serverflags & kImapMsgFlaggedFlag) != 0); - - if ( ((dbFlags & MSG_FLAG_IMAP_DELETED) == 0) != ((serverflags & kImapMsgDeletedFlag) == 0)) - mailDB->MarkImapDeleted(currentUID, (serverflags & kImapMsgDeletedFlag) != 0, NULL); - - delete mailHdr; - } - } - } - - // find the thread pane in the master - MSG_ThreadPane *threadPane = m_master->FindThreadPaneNamed(GetPathname()); - MessageDBView *threadView = NULL; - - // reinitialize the db view of the thread pane, if it has not been opened yet - if (threadPane) - threadView = threadPane->GetMsgView(); - - if (threadPane && threadView && !threadView->GetDB()) - { - uint32 pCount=0; - threadPane->StartingUpdate(MSG_NotifyAll, 0, 0); - threadView->Open(mailDB, threadView->GetViewType() , &pCount); - threadPane->EndingUpdate(MSG_NotifyAll, 0, 0); - } - else // if there is no thread pane then we should close the db we would - mailDB->Close(); // have passed to its view. -} - - - -// hierarchy separating character on the server -char MSG_IMAPFolderInfoMail::GetOnlineHierarchySeparator() -{ - if (m_OnlineHierSeparator == kOnlineHierarchySeparatorUnknown) - { - MailDB *mailDB=NULL; - XP_Bool dbWasCreated=FALSE; - - MsgERR dbStatus = ImapMailDB::Open(GetPathname(), - TRUE, // create if necessary - &mailDB, - m_master, - &dbWasCreated); - - if (dbStatus == eSUCCESS) - { - m_OnlineHierSeparator = (char) mailDB->m_dbFolderInfo->GetIMAPHierarchySeparator(); - mailDB->Close(); - } - } - - return m_OnlineHierSeparator ? m_OnlineHierSeparator : kOnlineHierarchySeparatorUnknown; -} - -void MSG_IMAPFolderInfoMail::SetOnlineHierarchySeparator(char separator) -{ - if (separator != m_OnlineHierSeparator) - { - MailDB *mailDB=NULL; - XP_Bool dbWasCreated=FALSE; - - MsgERR dbStatus = ImapMailDB::Open(GetPathname(), - TRUE, // create if necessary - &mailDB, - m_master, - &dbWasCreated); - - if (dbStatus == eSUCCESS) - { - if (m_OnlineHierSeparator == kOnlineHierarchySeparatorUnknown) - m_OnlineHierSeparator = (char) mailDB->m_dbFolderInfo->GetIMAPHierarchySeparator(); - if (separator != m_OnlineHierSeparator) - { - m_OnlineHierSeparator = separator; - mailDB->m_dbFolderInfo->SetIMAPHierarchySeparator(m_OnlineHierSeparator); - } - - mailDB->Close(); - } - } -} - - - -// both of these algorithms assume that key arrays and flag states are sorted by increasing key. -void MSG_IMAPFolderInfoMail::FindKeysToDelete(const IDArray &existingKeys, IDArray &keysToDelete, TImapFlagAndUidState *flagState) -{ - XP_Bool imapDeleteIsMoveToTrash = DeleteIsMoveToTrash(); - uint32 total = existingKeys.GetSize(); - uint32 index; - - int onlineIndex=0; // current index into flagState - for (uint32 keyIndex=0; keyIndex < total; keyIndex++) - { - index = IMAP_GetFlagStateNumberOfMessages(flagState); - while ((onlineIndex < index) && - (existingKeys[keyIndex] > IMAP_GetUidOfMessage(onlineIndex, flagState)) ) - { - onlineIndex++; - } - - // delete this key if it is not there or marked deleted - if ( (onlineIndex >= IMAP_GetFlagStateNumberOfMessages(flagState) ) || - (existingKeys[keyIndex] != IMAP_GetUidOfMessage(onlineIndex, flagState)) || - ((IMAP_GetMessageFlags(onlineIndex, flagState) & kImapMsgDeletedFlag) && imapDeleteIsMoveToTrash) ) - { - MessageKey doomedKey = existingKeys[keyIndex]; - if ((int32) doomedKey < 0 && doomedKey != kIdNone && doomedKey != kIdPending) - continue; - else - keysToDelete.Add(existingKeys[keyIndex]); - } - - if (existingKeys[keyIndex] == IMAP_GetUidOfMessage(onlineIndex, flagState)) - onlineIndex++; - } -} - -void MSG_IMAPFolderInfoMail::FindKeysToAdd(const IDArray &existingKeys, IDArray &keysToFetch, TImapFlagAndUidState *flagState) -{ - XP_Bool showDeletedMessages = ShowDeletedMessages(); - - int dbIndex=0; // current index into existingKeys - uint32 existTotal, numberOfKnownKeys; - uint32 index; - - existTotal = numberOfKnownKeys = existingKeys.GetSize(); - index = IMAP_GetFlagStateNumberOfMessages(flagState); - for (uint32 flagIndex=0; flagIndex < index; flagIndex++) - { - while ( (flagIndex < numberOfKnownKeys) && (dbIndex < existTotal) && - (existingKeys[dbIndex] < IMAP_GetUidOfMessage(flagIndex, flagState)) ) - dbIndex++; - - if ( (flagIndex >= numberOfKnownKeys) || - (dbIndex >= existTotal) || - (existingKeys[dbIndex] != IMAP_GetUidOfMessage(flagIndex , flagState) ) ) - { - numberOfKnownKeys++; - if (showDeletedMessages || ! (IMAP_GetMessageFlags(flagIndex, flagState) & kImapMsgDeletedFlag)) - { - keysToFetch.Add(IMAP_GetUidOfMessage(flagIndex, flagState)); - } - } - } -} - -void MSG_IMAPFolderInfoMail::UpdateFolderStatus(mailbox_spec *adoptedBoxSpec, MSG_Pane * /*url_pane*/) -{ - MailDB *mailDB=NULL; - XP_Bool dbWasCreated=FALSE; - - MsgERR dbStatus = ImapMailDB::Open(GetPathname(), - TRUE, // create if necessary - &mailDB, - m_master, - &dbWasCreated); - - if (dbStatus == eSUCCESS) - { - DBFolderInfo *groupInfo = mailDB->m_dbFolderInfo; - // diddle the imap pending counts to reflect the accurate counts according to the server - int32 totalMessages = groupInfo->GetNumMessages() + groupInfo->GetImapTotalPendingMessages(); - int32 totalUnreadMessages = groupInfo->GetNumNewMessages() + groupInfo->GetImapUnreadPendingMessages(); - int32 totalDelta = adoptedBoxSpec->number_of_messages - totalMessages; - int32 numNewDelta = adoptedBoxSpec->number_of_unseen_messages - totalUnreadMessages; - groupInfo->ChangeImapTotalPendingMessages(totalDelta - groupInfo->GetImapTotalPendingMessages()); - groupInfo->ChangeImapUnreadPendingMessages(numNewDelta - groupInfo->GetImapUnreadPendingMessages()); - SummaryChanged(); - mailDB->Close(); - } -} - -void MSG_IMAPFolderInfoMail::UpdateNewlySelectedFolder(mailbox_spec *adoptedBoxSpec, MSG_Pane *url_pane) -{ - MailDB *mailDB=NULL; - XP_Bool dbWasCreated=FALSE; - - MSG_Biff_Master::MailCheckEnable((char*) GetPathname(), (XP_Bool) ~NET_IsOffline()); // enable or disable start mail checking if allowed - - MsgERR dbStatus = ImapMailDB::Open(GetPathname(), - TRUE, // create if necessary - &mailDB, - m_master, - &dbWasCreated); - - // remember the info in the maibox_spec. This is currently only used - // for cacheless view to know how big to make the view, but there - // could be other uses. It might be better to try to get hold - // of this from the connection object in the libnet imap thread - // instead of a potentially stale copy of the data. - m_mailboxSpec = *adoptedBoxSpec; - if ((dbStatus == eSUCCESS) && adoptedBoxSpec->folderSelected) - { - IDArray existingKeys; - IDArray keysToDelete; - IDArray keysToFetch; - - - mailDB->ListAllIds(existingKeys); - if (mailDB->ListAllOfflineDeletes(existingKeys) > 0) - existingKeys.QuickSort(); - if ((mailDB->m_dbFolderInfo->GetImapUidValidity() != adoptedBoxSpec->folder_UIDVALIDITY) && // if UIDVALIDITY Changed - !NET_IsOffline()) - { - // store the new UIDVALIDITY value - mailDB->m_dbFolderInfo->SetImapUidValidity(adoptedBoxSpec->folder_UIDVALIDITY); - // delete all my msgs, the keys are bogus now - // add every message in this folder - keysToDelete.CopyArray(&existingKeys); - - if (adoptedBoxSpec->flagState) - { - IDArray no_existingKeys; - FindKeysToAdd(no_existingKeys, keysToFetch, adoptedBoxSpec->flagState); - } - } - else if (!adoptedBoxSpec->flagState && !NET_IsOffline()) // if there are no messages on the server - { - keysToDelete.CopyArray(&existingKeys); - } - else if (!NET_IsOffline()) - { - FindKeysToDelete(existingKeys, keysToDelete, adoptedBoxSpec->flagState); - - // if this is the result of an expunge then don't grab headers - if (!(adoptedBoxSpec->box_flags & kJustExpunged)) - FindKeysToAdd(existingKeys, keysToFetch, adoptedBoxSpec->flagState); - } - - - if (keysToDelete.GetSize()) - { - uint32 total; - - XP_Bool highWaterDeleted = FALSE; - url_pane->StartingUpdate(MSG_NotifyNone, 0, 0); - mailDB->DeleteMessages(keysToDelete,NULL); - url_pane->EndingUpdate(MSG_NotifyNone, 0, 0); - total = keysToDelete.GetSize(); - - for (uint32 deleteKeyIndex=0; !highWaterDeleted && deleteKeyIndex < total; deleteKeyIndex++) - { - highWaterDeleted = (keysToDelete[deleteKeyIndex] == mailDB->m_dbFolderInfo->m_LastMessageUID); - } - - if (highWaterDeleted) - { - if (mailDB->m_dbFolderInfo->GetNumVisibleMessages()) - { - ListContext *listContext = NULL; - DBMessageHdr *currentHdr = NULL; - if ((mailDB->ListLast(&listContext, &currentHdr) == eSUCCESS) && - currentHdr) - { - mailDB->m_dbFolderInfo->m_LastMessageUID = currentHdr->GetMessageKey(); - delete currentHdr; - mailDB->ListDone(listContext); - } - else - mailDB->m_dbFolderInfo->m_LastMessageUID = 0; - } - else - mailDB->m_dbFolderInfo->m_LastMessageUID = 0; -// mailDB->m_dbFolderInfo->setDirty(); DMB TODO - } - - SummaryChanged(); - } - - // if this is the INBOX, tell the stand-alone biff about the new high water mark - if (GetFlags() & MSG_FOLDER_FLAG_INBOX) - { - UpdateStandAloneIMAPBiff(keysToFetch); - } - - if (keysToFetch.GetSize()) - { - MSG_SetBiffStateAndUpdateFE(MSG_BIFF_NewMail); - // Ending update called in NotifyFetchAnyNeededBodies - url_pane->StartingUpdate(MSG_NotifyNone, 0, 0); - - OpenThreadView(mailDB,adoptedBoxSpec); - mailDB = NULL; // storage adopted by OpenThreadView - - AddToSummaryMailDB(keysToFetch, url_pane, adoptedBoxSpec); - } - else if (url_pane) // somehow xfe gets here during biff(!) with no url_pane - { - // Ending update called in NotifyFetchAnyNeededBodies - url_pane->StartingUpdate(MSG_NotifyNone, 0, 0); - // let the imap libnet module know that we don't need headers - IMAP_DoNotDownLoadAnyMessageHeadersForMailboxSelect(adoptedBoxSpec->connection); - // wait until we can get body id monitor before continuing. - IMAP_BodyIdMonitor(adoptedBoxSpec->connection, TRUE); - // I think the real fix for this is to seperate the header ids from body id's. - NotifyFetchAnyNeededBodies(url_pane, adoptedBoxSpec->connection, mailDB); - IMAP_BodyIdMonitor(adoptedBoxSpec->connection, FALSE); - - OpenThreadView(mailDB,adoptedBoxSpec); - mailDB = NULL; // storage adopted by OpenThreadView - if (GetGettingMail()) - { - MSG_Pane *msgPane = url_pane; - MSG_Pane* parentpane = MSG_GetParentPane(url_pane); - if (parentpane) - msgPane = parentpane; - NET_Progress(msgPane->GetContext(), XP_GetString(MK_POP3_NO_MESSAGES)); - } - } - } - - - if (dbStatus != eSUCCESS) - - { - if (XP_FileRemove(GetPathname(), xpMailFolderSummary) == 0) - UpdateNewlySelectedFolder(adoptedBoxSpec, url_pane); - else - { - // This DB is a read only file? We are hosed here. - // Let the user cancel this select. If we interrupt here - // we could re-enter NET_InterruptIMAP4. - } - } - else - { - if (!adoptedBoxSpec->folderSelected) - { - // we got here because the select url failed! Open what we've got - NotifyFolderLoaded(url_pane, TRUE); // TRUE was "interrupted" - OpenThreadView(mailDB,adoptedBoxSpec); - } - IMAP_FreeBoxSpec(adoptedBoxSpec); - } - SetGettingMail(FALSE); -} - - -XP_Bool MSG_IMAPFolderInfoMail::StaticShouldIgnoreFile(const char *fileName) -{ - XP_Bool ignoreIt = TRUE; - // for imap we ignore everything that is not a summary mail file - // or a directory - - // check for directory - // cannot use XP_OpenDir for the check because sometimes fileName is a leaf name - // XP_OpenDir expects a full path. So, fall back on ".sbd" convention - if (XP_STRLEN(fileName) > XP_STRLEN(".sbd")) - ignoreIt = 0 != XP_STRCASECMP(fileName + XP_STRLEN(fileName) - XP_STRLEN(".sbd"), ".sbd"); - - if (ignoreIt) - { - // platform specific checks for summary mail files -#if defined (XP_WIN) || defined (XP_MAC) || defined (XP_OS2) - if (XP_STRLEN(fileName) > XP_STRLEN(".snm")) - ignoreIt = 0 != XP_STRCASECMP(fileName + XP_STRLEN(fileName) - XP_STRLEN(".snm"), ".snm"); -#endif - -#if defined (XP_UNIX) - if (XP_STRLEN(fileName) > XP_STRLEN(".summary")) - ignoreIt = (0 != XP_STRCASECMP(fileName + XP_STRLEN(fileName) - XP_STRLEN(".summary"), ".summary")) || (*fileName != '.'); -#endif - } - - return ignoreIt; -} - - -XP_Bool MSG_IMAPFolderInfoMail::ShouldIgnoreFile (const char *name) -{ - return StaticShouldIgnoreFile(name); -} - -char *MSG_IMAPFolderInfoMail::CreateMailboxNameFromDbName(const char *dbName) -{ - char *mailboxName = (char*) XP_ALLOC(XP_STRLEN(dbName) + 1); - if (mailboxName) - { - XP_STRCPY(mailboxName, dbName); -#if defined (XP_WIN) || defined (XP_MAC) || defined(XP_OS2) - // mac and windows append ".snm" - if (XP_STRLEN(mailboxName) > XP_STRLEN(".snm")) - *(mailboxName + XP_STRLEN(mailboxName) - XP_STRLEN(".snm")) = '\0'; -#endif -#if defined (XP_UNIX) - // unix format is ".boxname.summary" - if (XP_STRLEN(mailboxName) > XP_STRLEN(".summary")) - { - // we edit the leaf, so find it - char *leafNode = XP_STRRCHR(mailboxName, '/'); - if (leafNode) - leafNode++; - else - leafNode = mailboxName; - - *(leafNode + XP_STRLEN(leafNode) - XP_STRLEN(".summary")) = '\0'; - XP_STRCPY(leafNode, leafNode + 1); - } -#endif - } - - return mailboxName; -} - - -void MSG_IMAPFolderInfoMail::GetFilterSearchUrlString(MSG_Filter *currenFilter, char **imapUrlString) -{ - *imapUrlString = NULL; - - if (currenFilter->IsRule()) - { - MSG_Rule *rule=NULL; - if (currenFilter->GetRule(&rule) == FilterError_Success) - { - msg_SearchOnlineMail::Encode(imapUrlString, rule->GetTermList(), - INTL_DefaultWinCharSetID(0), - GetFolderCSID() & ~CS_AUTO); - } - } -} - -void MSG_IMAPFolderInfoMail::QueueUpImapFilterUrls(MSG_UrlQueue *urlQueue) -{ - MSG_FilterList *filters = NULL; - if (MSG_FilterList::Open(GetMaster(), filterInbox, NULL, this, &filters) == FilterError_Success) - { - int32 filtCount=0; - filters->GetFilterCount(&filtCount); - for (int32 filterIndex=0; filterIndex < filtCount; filterIndex++) - { - MSG_Filter *currenFilter=NULL; - if (filters->GetFilterAt(filterIndex, &currenFilter) == FilterError_Success) - { - char *searchCommandString = NULL; - GetFilterSearchUrlString(currenFilter, &searchCommandString); - if (searchCommandString) - { - char *searchUrl = CreateImapSearchUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator(), - searchCommandString, - TRUE); // use uids - if (searchUrl) - urlQueue->AddUrlAt(urlQueue->GetCursor() + filterIndex + 1, searchUrl, NULL); - FREEIF(searchUrl); - } - } - } - - filters->Close(); - } -} - -#define WHITESPACE " \015\012" // token delimiter msgfinfo.h - -IDArray *MSG_IMAPFolderInfoMail::CreateFilterIDArray(const char *imapSearchResultString, int &numberOfHits) -{ - // I expect here a string of UID's, the '* SEARCH' should be already stripped - - // make one pass to count the number of hits - numberOfHits = 0; - IDArray *retIDArray = new IDArray; - char *hitTokenString = XP_STRDUP(imapSearchResultString); - if (hitTokenString) - { - char *hitUidToken = XP_STRTOK(hitTokenString, WHITESPACE); - while (hitUidToken) - { - numberOfHits++; - hitUidToken = XP_STRTOK(NULL, WHITESPACE); - } - FREEIF(hitTokenString); - } - - // now create the array - do we really need db anymore? - if (numberOfHits) - { - MailDB *imapDB = NULL; - XP_Bool wasCreated; - if (ImapMailDB::Open (GetPathname(), FALSE, &imapDB, GetMaster(), &wasCreated) == eSUCCESS) - { - hitTokenString = XP_STRDUP(imapSearchResultString); - if (hitTokenString) - { - char *hitUidToken = XP_STRTOK(hitTokenString, WHITESPACE); - while (hitUidToken) - { - MessageKey hitUid; - sscanf(hitUidToken, "%ld", &hitUid); - retIDArray->Add(hitUid); - hitUidToken = XP_STRTOK(NULL, WHITESPACE); - } - FREEIF(hitTokenString); - } - - imapDB->Close(); - } - } - - return retIDArray; -} - -void MSG_IMAPFolderInfoMail::LogRuleHit(MSG_Filter *filter, DBMessageHdr *msgHdr, MWContext *context) -{ - char *filterName = ""; - time_t date; - char dateStr[40]; /* 30 probably not enough */ - MSG_RuleActionType actionType; - MSG_Rule *rule; - void *value; - - MailDB *imapDB = NULL; - XP_Bool wasCreated; - if (ImapMailDB::Open (GetPathname(), FALSE, &imapDB, GetMaster(), &wasCreated) == eSUCCESS) - { - MSG_DBHandle db = (imapDB) ? imapDB->GetDB() : 0; - XPStringObj author; - XPStringObj subject; - - FILE *logFile = XP_FileOpen("", xpMailFilterLog, XP_FILE_APPEND); // will this create? - - filter->GetName(&filterName); - if (filter->GetRule(&rule) != FilterError_Success) - return; - rule->GetAction(&actionType, &value); - date = msgHdr->GetDate(); - XP_StrfTime(context, dateStr, sizeof(dateStr), XP_DATE_TIME_FORMAT, - localtime(&date)); - msgHdr->GetAuthor(author, db); - msgHdr->GetSubject(subject, TRUE, db); - XP_FilePrintf(logFile, "Applied filter \"%s\" to message from %s - %s at %s\n", filterName, - (const char *) author, (const char *) subject, dateStr); - char *actionStr = rule->GetActionStr(actionType); - char *actionValue = ""; - if (actionType == acMoveToFolder) - actionValue = (char *) value; - XP_FilePrintf(logFile, "Action = %s %s\n\n", actionStr, actionValue); - } -} - -void MSG_IMAPFolderInfoMail::StartUpdateOfNewlySelectedFolder(MSG_Pane *paneOfCommand, - XP_Bool loadingFolder, - MSG_UrlQueue *urlQueueForSelectURL, // can be NULL - const IDArray *keysToUndoRedo, // can be NULL - XP_Bool undo, - XP_Bool playbackOfflineEvents, /* = TRUE */ - Net_GetUrlExitFunc *selectExitFunction /* = NULL */) -{ - XP_ASSERT(paneOfCommand); - - // pane could be gone - just return for now... - if (!MSG_Pane::PaneInMasterList(paneOfCommand)) - return; - SetGettingMail(TRUE); - if (playbackOfflineEvents) - { // limit the scope of this db - - DBFolderInfo *folderInfo = NULL; - MessageDB *messagedb = NULL; - - // if there are any offline operations that have not been played back, then do it - MsgERR opendbErr = GetDBFolderInfoAndDB(&folderInfo, &messagedb); - if ((opendbErr == 0) && !NET_IsOffline()) - { - IDArray offlineOperationKeys; - MailDB *mailDB = messagedb->GetMailDB(); - if (mailDB) - mailDB->ListAllOfflineOpIds(offlineOperationKeys); - messagedb->Close(); - messagedb = NULL; - - XP_Bool offlineCreate = GetFolderPrefFlags() & MSG_FOLDER_PREF_CREATED_OFFLINE; - - if (offlineCreate || offlineOperationKeys.GetSize() > 0) - { - // this can't be right if we have a url queue, because this code - // doesn't use it. The bug arises if we select the inbox in order to - // download new headers to filter them before going offline, - // we don't want to play back these events. - // So, if we don't have a url queue, or it's not the inbox, play back - // any offline events. - XP_ASSERT(!urlQueueForSelectURL); - // make sure this flag is turned on - SetFolderPrefFlags(GetFolderPrefFlags() | MSG_FOLDER_PREF_OFFLINEEVENTS); - OfflineImapGoOnlineState *goOnline = new OfflineImapGoOnlineState(paneOfCommand, this); - if (goOnline) - { - // will force a MSG_PaneNotifyFolderLoaded if offline playbasck fails - if (loadingFolder) - paneOfCommand->SetLoadingImapFolder(this); - - goOnline->ProcessNextOperation(); - SetGettingMail(FALSE); - return; - } - } - } - - if ((opendbErr == 0) && messagedb) - messagedb->Close(); - - } // limit the scopeof this db - - - XP_Bool selectFolder = !GetFolderLoadingContext(); - - if (selectFolder) - { - // if we're selecting the inbox, and the user wants us to cleanupinbox on exit, - // just set requiresCleanup to TRUE. It would be nicest if we knew a message - // had been moved or deleted, but I'm not sure where that would be known. - if (m_flags & MSG_FOLDER_FLAG_INBOX) - { - if (GetIMAPHost()->GetExpungeInboxOnExit()) - m_requiresCleanup = TRUE; - } - char *undoString = NULL; - if (keysToUndoRedo) - { - undoString = AllocateImapUidString(*keysToUndoRedo); - if (undoString) - { - // enough space for uno mas - StrAllocCat(undoString, " "); - if (undoString) - { - XP_MEMMOVE(undoString + 1, undoString, XP_STRLEN(undoString) - 1); - if (undo) - *undoString = '-'; - else - *undoString = '+'; - } - } - } - - char *selectMailboxesURL = GetOnlineName() ? CreateImapMailboxSelectUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator(), - undoString) - : 0; -#ifdef DEBUG_bienvenu - if (!XP_STRCMP(GetName(), "r-thompson")) - selectMailboxesURL = CreateImapMailboxLITESelectUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator()); -#endif - if (selectMailboxesURL) - { - // we are getting these messages for real now, so stop tricking the fe. - if (GetNumPendingUnread()) - ChangeNumPendingUnread(-GetNumPendingUnread()); - if (GetNumPendingTotalMessages()) - { - ChangeNumPendingTotalMessages(-GetNumPendingTotalMessages()); - SummaryChanged(); - } - - paneOfCommand->GetContext()->mailMaster = m_master; - paneOfCommand->GetContext()->imapURLPane = paneOfCommand; - -// Revisit the url queue later, see if we can enable the following case -// urlQueueForSelectURL = MSG_UrlQueue::AddUrlToPane( selectMailboxesURL, -// ImapFolderSelectCompleteExitFunction, paneOfCommand); -// paneOfCommand->SetLoadingImapFolder(this); - - MSG_UrlQueue *urlQueue = urlQueueForSelectURL; - - if (!urlQueue) - urlQueueForSelectURL = urlQueue = MSG_UrlQueue::FindQueue(paneOfCommand); - if (!urlQueue) - urlQueue = new MSG_ImapLoadFolderUrlQueue(paneOfCommand); - if (urlQueue) - { - urlQueue->AddInterruptCallback(urlQueue->HandleFolderLoadInterrupt); - // if the url queue is in a different pane, this pane won't get it's - // loading imap folder cleared, so don't set it. - if (paneOfCommand == urlQueue->GetPane()) - { - paneOfCommand->SetLoadingImapFolder(this); - // lock others from loading this folder or loading a message this this pane - m_LoadingInContext = paneOfCommand->GetContext(); - } - - if (loadingFolder) - { - if (!selectExitFunction) // don't override what the caller may have asked for - selectExitFunction = ImapFolderSelectCompleteExitFunction; - } - else if (!selectExitFunction) - selectExitFunction = ImapFolderClearLoadingFolder; - - urlQueue->AddUrl( selectMailboxesURL, selectExitFunction); - - if (!urlQueueForSelectURL) // do we need to start this url queue? - urlQueue->GetNextUrl(); - } - FREEIF(selectMailboxesURL); - - } - FREEIF(undoString); - } - else - { - // this folder is already being loaded elsewhere, so just open the view and notify loaded - MailDB *mailDB=NULL; - XP_Bool dbWasCreated=FALSE; - - MsgERR dbStatus = ImapMailDB::Open(GetPathname(), - TRUE, // create if necessary - &mailDB, - m_master, - &dbWasCreated); - - XP_Trace("folder already loading, or so we think\n"); - if (dbStatus == eSUCCESS) - { - OpenThreadView(mailDB,NULL); - mailDB = NULL; // storage adopted by OpenThreadView - - FE_PaneChanged(paneOfCommand, FALSE, MSG_PaneProgressDone, 0); - // tell the fe that this folder is loaded - NotifyFolderLoaded(paneOfCommand); - } - } -} - -void MSG_IMAPFolderInfoMail::AddToSummaryMailDB(const IDArray &keysToFetch, - MSG_Pane *url_pane, - mailbox_spec *boxSpec) -{ - uint32 *theKeys = (uint32 *) XP_ALLOC( keysToFetch.GetSize() * sizeof(uint32) ); - if (theKeys) - { - uint32 total = keysToFetch.GetSize(); - - for (int keyIndex=0; keyIndex < total; keyIndex++) - theKeys[keyIndex] = keysToFetch[keyIndex]; - - m_DownLoadState = kDownLoadingAllMessageHeaders; - - url_pane->GetContext()->imapURLPane = url_pane; - url_pane->GetContext()->mailMaster = m_master; - url_pane->GetContext()->currentIMAPfolder = this; - - char *currentUrl = IMAP_GetCurrentConnectionUrl(boxSpec->connection); - MSG_UrlQueue *urlQueue = MSG_UrlQueue::FindQueue(currentUrl, url_pane->GetContext()); - FREEIF(currentUrl); - -#ifdef DEBUG_bienvenu -// XP_ASSERT(urlQueue && urlQueue->IsIMAPLoadFolderUrlQueue()); -#endif - SetParseMailboxState(new ParseIMAPMailboxState(m_master, m_host, this, - urlQueue, - boxSpec->flagState)); - GetParseMailboxState()->SetPane(url_pane); - - boxSpec->flagState = NULL; // adopted by ParseIMAPMailboxState - MailDB *mailDB=NULL; - XP_Bool dbWasCreated=FALSE; - - MsgERR status = ImapMailDB::Open(m_pathName, - TRUE, // create if necessary - &mailDB, - m_master, - &dbWasCreated); - - if (status == eSUCCESS) - { - GetParseMailboxState()->SetDB(mailDB); - GetParseMailboxState()->SetIncrementalUpdate(TRUE); - GetParseMailboxState()->SetMaster(m_master); - GetParseMailboxState()->SetContext(url_pane->GetContext()); - GetParseMailboxState()->SetFolder(this); - - GetParseMailboxState()->BeginParsingFolder(0); - - // the imap libnet module will start downloading message headers imap.h - IMAP_DownLoadMessagesForMailboxSelect(boxSpec->connection, theKeys, total /*keysToFetch.GetSize() */); - } - else - { - IMAP_DoNotDownLoadAnyMessageHeadersForMailboxSelect(boxSpec->connection); - } - } - - -} - - -// returns TRUE if it's an inbox, and the user has selected it, and they've set the pref to cleanup inbox on exit. -XP_Bool MSG_IMAPFolderInfoMail::RequiresCleanup() -{ - // if this is the trash, check if this host has auto empty trash turned on - if (m_flags & MSG_FOLDER_FLAG_TRASH) - { - MSG_IMAPHost *host = GetIMAPHost(); - if (host && host->GetEmptyTrashOnExit()) - { - if (GetTotalMessages() + GetNumPendingTotalMessages() > host->GetEmptyTrashThreshhold()) - m_requiresCleanup = TRUE; - } - } - return m_requiresCleanup; -} - -void MSG_IMAPFolderInfoMail::ClearRequiresCleanup() -{ - m_requiresCleanup = FALSE; -} - - -extern int32 msg_ParseFolderLine (char *line, uint32 line_size, void *closure); -extern MessageDB *GetDBFromState(struct msg_FolderParseState *state); - -int MSG_IMAPFolderInfoMail::HandleBlockForDataBaseCreate(MSG_Pane *pane, - const char *str, - int32 len, - int32 msgUID, - uint32 msgSize) -{ - // RFC822 messages do not contain the BSD 'From - <date>' message - // header that our mailbox parser expects. Create one for each msg. - ParseIMAPMailboxState *parser = (ParseIMAPMailboxState *) GetParseMailboxState(); - if (NULL == parser) - { -#ifndef XP_UNIX - XP_ASSERT(FALSE); -#endif -#if 0 - SetParseMailboxState(new ParseIMAPMailboxState(m_master, m_host, this, - NULL, - boxSpec->flagState)); - GetParseMailboxState()->SetPane(pane); - - boxSpec->flagState = NULL; // adopted by ParseIMAPMailboxState - MailDB *mailDB=NULL; - XP_Bool dbWasCreated=FALSE; - - MsgERR status = ImapMailDB::Open(m_pathName, - TRUE, // create if necessary - &mailDB, - m_master, - &dbWasCreated); - - if (status == eSUCCESS) - { - GetParseMailboxState()->SetDB(mailDB); - GetParseMailboxState()->SetIncrementalUpdate(TRUE); - GetParseMailboxState()->SetMaster(m_master); - GetParseMailboxState()->SetContext(pane->GetContext()); - GetParseMailboxState()->SetFolder(this); - } -#endif - // Catch a problem relating to a stream created based on the value of - // m_DownLoadState. - // This is an extremely rare edge case that depends on the timing of when you - // click on message in a thread pane while the folder is being loaded. - // If you try to load the message after the folder starts loading and before - // the folder load starts downloading headers, and the message bytes arrive - // after the header bytes are finished, you will get into this state. - // The effect of this fix is to not crash and cancel the current url. - // I have only witnessed this happening when using the X-client. - return -1; - } - - MessageDB *msgDB = parser->GetDB(); - XP_ASSERT(msgDB); - - int returnLength = 0; - - if (msgDB->m_dbFolderInfo->m_LastMessageUID != msgUID) - { - // before we change the tracked UID, let the parser know the - // UID - parser->SetPublishUID(msgDB->m_dbFolderInfo->m_LastMessageUID); - - msgDB->m_dbFolderInfo->m_LastMessageUID = msgUID; - char *envelopeString = msg_GetDummyEnvelope(); // not allocated, do not free - - - returnLength += HandleBlockForDataBaseCreate(pane, envelopeString, XP_STRLEN(envelopeString), msgUID, msgSize); - - // let the parser know the message size for the next msg header publish - parser->SetPublishByteLength(msgSize); - } - - // we can get blocks that contain more than one line, - // but they never contain partial lines - char *currentEOL = XP_STRSTR(str, LINEBREAK); - const char *currentLine = str; - while (currentLine < (str + len)) - { - if (currentEOL) - { - parser->ParseFolderLine(currentLine, (currentEOL + LINEBREAK_LEN) - currentLine); - currentLine = currentEOL + LINEBREAK_LEN; - currentEOL = XP_STRSTR(currentLine, LINEBREAK); - } - else - { - parser->ParseFolderLine(currentLine, strlen(currentLine)); - currentLine = str + len + 1; - } - } - - return returnLength + len; -} - - -void MSG_IMAPFolderInfoMail::FinishStreamForDataBaseCreate() -{ -} - - -void MSG_IMAPFolderInfoMail::ParseUidString(char *uidString, IDArray &keys) -{ - // This is in the form <id>,<id>, or <id1>:<id2> - char curChar = *uidString; - XP_Bool isRange = FALSE; - int32 curToken; - int32 saveStartToken=0; - - for (char *curCharPtr = uidString; curChar && *curCharPtr;) - { - char *currentKeyToken = curCharPtr; - curChar = *curCharPtr; - while (curChar != ':' && curChar != ',' && curChar != '\0') - curChar = *curCharPtr++; - *(curCharPtr - 1) = '\0'; - curToken = atol(currentKeyToken); - if (isRange) - { - while (saveStartToken < curToken) - keys.Add(saveStartToken++); - } - keys.Add(curToken); - isRange = (curChar == ':'); - if (isRange) - saveStartToken = curToken + 1; - } -} - -// create a string of uids, suitable for passing to imap url create functions -char *MSG_IMAPFolderInfoMail::AllocateImapUidString(const IDArray &keys) -{ - int blocksAllocated = 1; - char *returnIdString = (char *) XP_ALLOC(256); - if (returnIdString) - { - IDArray copyOfKeys; - - copyOfKeys.InsertAt(0, &keys); - - // sort keys if they're not already sorted so ranges will work - copyOfKeys.QuickSort(MSG_Pane::CompareViewIndices); - char *currentidString = returnIdString; - *returnIdString = 0; - - int32 startSequence = (copyOfKeys.GetSize() > 0) ? copyOfKeys[0] : -1; - int32 curSequenceEnd = startSequence; - uint32 total = copyOfKeys.GetSize(); - - for (int keyIndex=0; returnIdString && (keyIndex < total); keyIndex++) - { - int32 curKey = copyOfKeys[keyIndex]; - int32 nextKey = (keyIndex + 1 < total) ? copyOfKeys[keyIndex + 1] : -1; - XP_Bool lastKey = (nextKey == -1); - - if (lastKey) - curSequenceEnd = curKey; - if (nextKey == curSequenceEnd + 1 && !lastKey) - { - curSequenceEnd = nextKey; - continue; - } - else if (curSequenceEnd > startSequence) - { - sprintf(currentidString, "%ld:%ld,", startSequence, curSequenceEnd); - startSequence = nextKey; - curSequenceEnd = startSequence; - } - else - { - startSequence = nextKey; - curSequenceEnd = startSequence; - sprintf(currentidString, "%ld,", copyOfKeys[keyIndex]); - } - currentidString += XP_STRLEN(currentidString); - if ((currentidString + 20) > (returnIdString + (blocksAllocated * 256))) - { - returnIdString = (char *) XP_REALLOC(returnIdString, ++blocksAllocated*256); - if (returnIdString) - currentidString = returnIdString + XP_STRLEN(returnIdString); - } - } - } - - if (returnIdString && *returnIdString) - *(returnIdString + XP_STRLEN(returnIdString) - 1) = 0; // eat the comma - - return returnIdString; -} - -// create a fixed size array of uids. Used for downloading bodies -uint32 *MSG_IMAPFolderInfoMail::AllocateImapUidArray(const IDArray &keys) -{ - uint32 *returnArray = (uint32 *) XP_ALLOC(keys.GetSize() * sizeof(uint32)); - uint32 total = keys.GetSize(); - - if (returnArray) - for(int keyIndex=0; keyIndex < total; keyIndex++) - returnArray[keyIndex] = keys[keyIndex]; - return returnArray; -} - -// when we get here, we're done filtering. Let the fe know its ok to load a message -void FilteringCompleteExitFunction (URL_Struct *URL_s, int status, MWContext *window_id) -{ - if (URL_s->msg_pane && URL_s->msg_pane->GetMaster()) - { - // find the imap inbox - MSG_IMAPFolderInfoMail *urlFolder = window_id->currentIMAPfolder; - MSG_IMAPFolderInfoMail *imapInbox; - if (urlFolder) - imapInbox = URL_s->msg_pane->GetMaster()->FindImapMailFolder(urlFolder->GetHostName(), "INBOX", NULL, FALSE); - else - imapInbox = URL_s->msg_pane->GetMaster()->FindImapMailFolder("INBOX"); - if (imapInbox) - imapInbox->NotifyFolderLoaded(URL_s->msg_pane); - - // make sure the inbox notfies the FE that its loaded - URL_s->msg_pane->SetActiveImapFiltering(FALSE); - ImapFolderSelectCompleteExitFunction(URL_s, status, window_id); - } -} - - -void MSG_IMAPFolderInfoMail::NotifyFetchAnyNeededBodies(MSG_Pane *urlPane, TNavigatorImapConnection *imapConnection, MailDB *folderDb) -{ - uint32 *bodyFetchIds = NULL; - uint32 numberOfBodies= 0; - if (!urlPane) - { - XP_ASSERT(FALSE); // shouldn't happen, but it does - need to understand why. - return; - } - if ((GetFolderPrefFlags() & MSG_FOLDER_PREF_OFFLINE) && urlPane->GetGoOnlineState() && !urlPane->GetGoOnlineState()->ProcessingStaleFolderUpdate()) - { - m_DownLoadState = kDownLoadMessageForOfflineDB; - IDArray bodyKeys; - - folderDb->GetIdsWithNoBodies(bodyKeys); - - if (bodyKeys.GetSize()) - { - urlPane->GetContext()->imapURLPane = urlPane; - urlPane->GetContext()->mailMaster = m_master; - urlPane->GetContext()->currentIMAPfolder = this; - - bodyFetchIds = AllocateImapUidArray(bodyKeys); - if (bodyFetchIds) - numberOfBodies = bodyKeys.GetSize(); - } - } - - IMAP_DownLoadMessageBodieForMailboxSelect(imapConnection, bodyFetchIds, numberOfBodies); - - - urlPane->EndingUpdate(MSG_NotifyNone, 0, 0); - - NotifyFolderLoaded(urlPane); // release loading lock on this folder -} - -void MSG_IMAPFolderInfoMail::AllFolderHeadersAreDownloaded(MSG_Pane *urlPane, TNavigatorImapConnection *imapConnection) -{ - ParseIMAPMailboxState *currentParser = (ParseIMAPMailboxState *) GetParseMailboxState(); - if (currentParser) - { - { // a block here to limit the scope of this db. - MessageDB *folderDB = NULL; - DBFolderInfo *dbInfo = NULL; - - // since there is a parser this should get the db from the cache - MsgERR err = GetDBFolderInfoAndDB(&dbInfo, &folderDB); - if (err == eSUCCESS) - { - currentParser->SetPublishUID(dbInfo->m_LastMessageUID); - currentParser->DoneParsingFolder(); - NotifyFetchAnyNeededBodies(urlPane, imapConnection, folderDB->GetMailDB()); - folderDB->Close(); - } - } - - - // if this is the inbox, apply the filters... - if (GetFlags() & MSG_FOLDER_FLAG_INBOX) - { - MSG_FolderIterator folderIterator(m_master->GetFolderTree()); - - MSG_FolderInfo *curFolder; - XPPtrArray foldersToFireFilters; - - curFolder = folderIterator.First(); - MSG_UrlQueue *urlQueue = currentParser->GetFilterUrlQueue(); - if (urlQueue) - urlQueue->SetSpecialIndexOfNextUrl(urlQueue->GetCursor() + 1); - - // build up list of folders that need filter move actions fired. - while(curFolder) - { - MSG_FolderInfoMail *mailFolder = curFolder->GetMailFolderInfo(); - if (mailFolder) - { - int numHits = mailFolder->GetImapIdsToMoveFromInbox()->GetSize(); - if (numHits > 0) - { - IDArray *copyOfIds = new IDArray; - copyOfIds->InsertAt(0, mailFolder->GetImapIdsToMoveFromInbox()); - // maybe we want to do this when we're sure it worked? - mailFolder->ClearImapIdsToMoveFromInbox(); - StartAsyncCopyMessagesInto(mailFolder, - urlPane, NULL /*sourceDB*/, // don't need sourceDB for IMAP... - copyOfIds, numHits, - urlPane->GetContext(), - urlQueue, - TRUE, - MSG_MESSAGEKEYNONE); - foldersToFireFilters.Add(curFolder); - } - } - curFolder = folderIterator.Next(); - } - - // now that we know there are more filter urls to run, do not let this select url's exit function - // do the MSG_PaneNotifyFolderLoaded. We'll make it happen in FilteringCompleteExitFunction - urlPane->SetActiveImapFiltering(TRUE); - if (urlQueue) - { - urlQueue->SetSpecialIndexOfNextUrl(MSG_UrlQueue::kNoSpecialIndex); - urlQueue->AddUrl(kImapFilteringCompleteURL, FilteringCompleteExitFunction, urlPane); - // tell queue to put new things before the filtering complete exit function - urlQueue->SetSpecialIndexOfNextUrl(urlQueue->GetSize() - 1); - } - } - - delete currentParser; -#ifdef DEBUG_bienvenu - XP_Trace("clearing parse mailbox state in AllFolderHeadersAreDownloaded\n"); -#endif - SetParseMailboxState(NULL); - } - else - XP_Trace("current parser is null\n"); -} - -void MSG_IMAPFolderInfoMail::AbortStreamForDataBaseCreate (int /*status*/) -{ - FinishStreamForDataBaseCreate(); // I think its the same deal! -km -} - - -FolderType MSG_IMAPFolderInfoMail::GetType() -{ - return FOLDER_IMAPMAIL; -} - -MSG_IMAPFolderInfoMail *MSG_IMAPFolderInfoMail::FindImapMailOnline(const char* onlineServerName) -{ - MSG_IMAPFolderInfoMail *thePrize = NULL; - - - if (GetOnlineName() && !XP_STRCMP(GetOnlineName(), onlineServerName)) - { - /* - // The online folder names match. Then see if the namespace has been stripped off. - // If it has, we want to make sure that we still want that to be the case. - // Otherwise, we say the folders don't match. - const char *personalDir = m_host->GetPersonalNamespacePrefix(); - XP_ASSERT(personalDir); - - if (personalDir && (XP_STRLEN(personalDir) >= 1) && // personal namespace prefix exists - IMAP_GetNumberOfNamespacesForHost(GetHostName()) == 1) // only one namespace - { - // we should have stripped off the namespace - if (GetFolderPrefFlags() & MSG_FOLDER_PREF_NAMESPACE_STRIPPED) - thePrize = this; - } - else - { - // we should not have stripped off the namespace - if (!(GetFolderPrefFlags() & MSG_FOLDER_PREF_NAMESPACE_STRIPPED)) - thePrize = this; - } - */ - thePrize = this; - } - - if (!thePrize) - { - int numberOfChildren = GetNumSubFolders(); - for (int childIndex = 0; (childIndex < numberOfChildren) && !thePrize; childIndex++) - { - MSG_IMAPFolderInfoMail *currentChild = (MSG_IMAPFolderInfoMail *) GetSubFolder(childIndex); - thePrize = currentChild->FindImapMailOnline(onlineServerName); - } - } - - return thePrize; -} - -MsgERR MSG_IMAPFolderInfoMail::ParentRenamed (const char * parentOnlineName) -{ - MsgERR status = 0; - const char *currentOnlineName = GetOnlineName(); - char *newName = (char *) XP_ALLOC(XP_STRLEN(currentOnlineName) + XP_STRLEN(parentOnlineName) + 2); // worse case - if (newName) - { - // append my leaf to parent path - XP_STRCPY(newName, parentOnlineName); - if (*parentOnlineName != '\0') // true if promoting to root and no root parent dir - XP_STRCAT(newName, "/"); - - const char *currentLeaf = XP_STRRCHR(currentOnlineName, '/'); - if (currentLeaf) - currentLeaf++; - else - currentLeaf = currentOnlineName; - XP_STRCAT(newName, currentLeaf); - - SetOnlineName(newName); // reset this node's name - - - FREEIF(newName); - } - else - status = MK_OUT_OF_MEMORY; - - return status; -} - -MsgERR MSG_IMAPFolderInfoMail::Rename (const char * newName) -{ - // call the ancestor hotline - MsgERR status = MSG_FolderInfoMail::Rename (newName); - if (status == 0) - { - // fixup the online name - // replace the leaf of the m_OnlineFolderName with newName - char *newOnlineName = (char *) XP_ALLOC(XP_STRLEN(newName) + XP_STRLEN(GetOnlineName()) + 1); - if (newOnlineName) - { - XP_STRCPY(newOnlineName, GetOnlineName()); - char *leafTarget = XP_STRRCHR(newOnlineName, '/'); - if (leafTarget) - leafTarget++; - else - leafTarget = newOnlineName; - XP_STRCPY(leafTarget, newName); - - SetOnlineName(newOnlineName); // reset this node's name - - FREEIF(newOnlineName); - } - else - status = MK_OUT_OF_MEMORY; - } - return status; -} - -char *MSG_IMAPFolderInfoMail::BuildUrl (MessageDB *db, MessageKey key) -{ - - char *url = NULL; - if (db) - { - // This is a message fetch URL - char idList[10]; - sprintf(idList, "%ld", (long)key); - url = CreateImapMessageFetchUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator(), - idList, // messageKey - TRUE); // This is a UID - - } - else - { - // This is a URL to the folder itself - if (!(m_flags & MSG_FOLDER_FLAG_IMAP_PUBLIC)) - { - // this folder is owned by someone (maybe us). Adjust the URL accordingly. - url = PR_smprintf("%s//%s@%s/%s", "IMAP:", GetFolderOwnerUserName(), GetHostName(), GetOwnersOnlineFolderName()); - } - else // public, or default - url = PR_smprintf("%s//%s/%s", "IMAP:", GetHostName(), GetOnlineName()); - } - - return url; -} - -char *MSG_IMAPFolderInfoMail::SetupHeaderFetchUrl(MSG_Pane *pane, MessageDB *db, MessageKey startSeq, MessageKey endSeq) -{ - char *url = NULL; - char idList[20]; - ParseIMAPMailboxState *parseState; - - sprintf(idList, "%ld:%ld", (long)startSeq, (long)endSeq); - -#ifdef DEBUG_bienvenu - XP_Trace("fetching idList %s\n", idList); -#endif - m_DownLoadState = kDownLoadingAllMessageHeaders; - -// url_pane->GetContext()->imapURLPane = url_pane; -// url_pane->GetContext()->mailMaster = m_master; -// url_pane->GetContext()->currentIMAPfolder = this; - - pane->GetContext()->mailMaster = m_master; // rb testing - -// MSG_UrlQueue *urlQueue = MSG_UrlQueue::FindQueue(IMAP_GetCurrentConnectionUrl(boxSpec->connection), url_pane->GetContext()); - parseState = new ParseIMAPMailboxState(m_master, m_host, this, /*urlQueue*/ NULL, NULL /*boxSpec->flagState*/) ; - SetParseMailboxState (parseState); - // boxSpec->flagState = NULL; // adopted by ParseIMAPMailboxState - GetParseMailboxState()->SetDB(db->GetMailDB()); - parseState->SetNextSequenceNum(startSeq); - GetParseMailboxState()->SetIncrementalUpdate(TRUE); - GetParseMailboxState()->SetMaster(m_master); -// GetParseMailboxState()->SetContext(url_pane->GetContext()); - GetParseMailboxState()->SetFolder(this); - - GetParseMailboxState()->SetPane(pane); - - // hook up the view to the parse mailbox state. - // convince context that we're downloading messages to get parsed. - // This is the wrong place for this but... - pane->GetContext()->currentIMAPfolder = this; - if (pane->GetMsgView()) - { - GetParseMailboxState()->SetView(pane->GetMsgView()); - for (MSG_ViewIndex viewIndex = startSeq - 1; viewIndex < endSeq - 1; viewIndex++) - pane->GetMsgView()->SetKeyByIndex(viewIndex, kIdPending); - } - - GetParseMailboxState()->BeginParsingFolder(0); - - return CreateImapMessageHeaderUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator(), - idList, // sequence range - FALSE); // This is a message sequence number - -} - - -int MSG_IMAPFolderInfoMail::SaveFlaggedMessagesToDB(MSG_Pane *pane, MessageDB *db, IDArray &keysToSave) -{ - // this kinda sucks, because we're doing it in the foreground, but we don't have the infrastructure - // to do it in the background for imap. - db->ListMatchingKeys(MessageDB::MatchFlaggedNotOffline, keysToSave); - return SaveMessagesToDB(pane, db, keysToSave); -} - - -int MSG_IMAPFolderInfoMail::SaveMessagesToDB(MSG_Pane *pane, MessageDB *db, IDArray &keysToSave) -{ - char *downloadURL = SetupMessageBodyFetchUrl(pane, db, keysToSave); - - URL_Struct *url_s = NET_CreateURLStruct(downloadURL, NET_DONT_RELOAD); - if (!url_s) - return eUNKNOWN; - - url_s->allow_content_change = FALSE; - - MSG_UrlQueue::AddUrlToPane (url_s, NULL, pane); - return 0; -} - -char *MSG_IMAPFolderInfoMail::SetupMessageBodyFetchUrl(MSG_Pane *pane, MessageDB* /*db*/, IDArray &keysToDownload) -{ - char *url = NULL; - char *idList = AllocateImapUidString(keysToDownload); - -#ifdef DEBUG_bienvenu - XP_Trace("fetching idList %s\n", idList); -#endif - m_DownLoadState = kDownLoadMessageForOfflineDB; - - pane->GetContext()->currentIMAPfolder = this; - - return CreateImapMessageFetchUrl(GetHostName(), - GetOnlineName(), - GetOnlineHierarchySeparator(), - idList, // sequence range - TRUE); // This is a message sequence number - -} - -// libmsg always uses the canonical '/' as the directory separator -// libnet will translate those chars to the the server -// dependent directory separator string. -char *MSG_IMAPFolderInfoMail::CreateOnlineVersionOfLocalPathString - (MSG_Prefs& /*prefs*/, - const char *localPath) const -{ - const char *leafName = localPath + - strlen(m_host->GetLocalDirectory()) + 1; - - const char *rootPrefix = m_host->GetRootNamespacePrefix(); - XP_ASSERT(rootPrefix); - char *onlineReturnName = XP_STRDUP(rootPrefix); - if (onlineReturnName) - { - int lengthOfCanonicalInboxName = XP_STRLEN(INBOX_FOLDER_NAME); - if (!XP_STRNCMP(leafName, INBOX_FOLDER_NAME, lengthOfCanonicalInboxName)) - { - // do not prepend server sub dir for INBOX - *onlineReturnName = '\0'; - // convert canonical INBOX_FOLDER_NAME to "INBOX" - StrAllocCat(onlineReturnName, "INBOX"); - // the inbox can have children on some servers - if (XP_STRLEN(leafName) > lengthOfCanonicalInboxName) - StrAllocCat(onlineReturnName, leafName + lengthOfCanonicalInboxName); - } - else - StrAllocCat(onlineReturnName, leafName); - } - - - // squish any ".sbd/" substrings to "/" - char *sbdSubString = XP_STRSTR(onlineReturnName, ".sbd/"); - while(sbdSubString) - { - XP_STRCPY(sbdSubString, // destination - sbdSubString + 4); // source - - sbdSubString = XP_STRSTR(sbdSubString + 4, ".sbd/"); - } - - // covert escaped spaces to spaces - char *escapedSpaceString = XP_STRSTR(onlineReturnName, "%20"); - while(escapedSpaceString) - { - *escapedSpaceString++ = ' '; - XP_STRCPY(escapedSpaceString, // destination - escapedSpaceString + 2); // source - - escapedSpaceString = XP_STRSTR(escapedSpaceString, "%20"); - } - - - - - return onlineReturnName; -} - -void MSG_IMAPFolderInfoMail::URLFinished(URL_Struct *URL_s, int /*status*/, MWContext* /*window_id*/) -{ - DBFolderInfo *folderInfo = NULL; - MessageDB *messagedb = NULL; - - MSG_IMAPFolderInfoMail *folder = NULL; - if (URL_s->msg_pane) - { - MSG_FolderInfo *mailFolder = URL_s->msg_pane->GetFolder(); - if (mailFolder && mailFolder->GetType() == FOLDER_IMAPMAIL) - folder = (MSG_IMAPFolderInfoMail *) mailFolder; - } - if (!folder) - return; - // I thought this should be true...but it's not. -// XP_ASSERT(folder == window_id->currentIMAPfolder); - - // if there are any offline operations that have not been played back, then try to just do it - // this isn't right because we don't want to play real offline events here. - MsgERR opendbErr = folder->GetDBFolderInfoAndDB(&folderInfo, &messagedb); - if ((opendbErr == 0) && !NET_IsOffline()) - { - IDArray offlineOperationKeys; - MailDB *mailDB = messagedb->GetMailDB(); - if (mailDB) - mailDB->ListAllOfflineOpIds(offlineOperationKeys); - messagedb->Close(); - messagedb = NULL; - - folder->SetHasOfflineEvents(FALSE); // turn off this flag, so we won't confuse MSG_IMAPURLFinished - - if (offlineOperationKeys.GetSize() > 0) - { - OfflineImapGoOnlineState *goOnline = new OfflineImapGoOnlineState(URL_s->msg_pane, (MSG_IMAPFolderInfoMail *) folder); - if (goOnline) - { - goOnline->SetPseudoOffline(TRUE); - - // will force a MSG_PaneNotifyFolderLoaded if offline playbasck fails -// if (loadingFolder) -// paneOfCommand->SetLoadingImapFolder(this); - - goOnline->ProcessNextOperation(); - return; - } - } - } - - if ((opendbErr == 0) && messagedb) - messagedb->Close(); -} - -const char *MSG_IMAPFolderInfoMail::GetFolderOwnerUserName() -{ - - if ((m_flags & MSG_FOLDER_FLAG_IMAP_PERSONAL) || - !(m_flags & (MSG_FOLDER_FLAG_IMAP_PUBLIC | MSG_FOLDER_FLAG_IMAP_OTHER_USER))) - { - // this is one of our personal mail folders - // return our username on this host - return GetIMAPHost()->GetUserName(); - } - - // the only other type of owner is if it's in the other users' namespace - if (!(m_flags & MSG_FOLDER_FLAG_IMAP_OTHER_USER)) - return NULL; - - if (m_ownerUserName) - return m_ownerUserName; - - char *onlineName = XP_STRDUP(GetOnlineName()); - if (onlineName) - { - const char *otherUserNS = m_host->GetNamespacePrefixForFolder(onlineName); - if (otherUserNS) - { - char *otherUserName = onlineName + XP_STRLEN(otherUserNS); - if (otherUserName) - { - char *nextDelimiter = XP_STRCHR(otherUserName, GetOnlineHierarchySeparator()); - if (nextDelimiter) - *nextDelimiter = 0; - - m_ownerUserName = XP_STRDUP(otherUserName); // freed in the destructor - } - } - XP_FREE(onlineName); - } - - return m_ownerUserName; -} - -// returns the online folder name, with the other users' namespace and his username -// stripped out -const char *MSG_IMAPFolderInfoMail::GetOwnersOnlineFolderName() -{ - const char *folder = GetOnlineName(); - if (m_flags & MSG_FOLDER_FLAG_IMAP_OTHER_USER) - { - const char *user = GetFolderOwnerUserName(); - if (folder && user) - { - char *where = XP_STRSTR(folder, user); - if (where) - { - char *relativeFolder = where + XP_STRLEN(user) + 1; - if (!relativeFolder) // root of this user's personal namespace - return (PR_smprintf("")); // leak of one character? - else - return relativeFolder; - } - } - return folder; - } - else if (!(m_flags & MSG_FOLDER_FLAG_IMAP_PUBLIC)) - { - // we own this folder - const char *personalNS = m_host->GetNamespacePrefixForFolder(folder); - if (personalNS) - { - const char *where = folder + XP_STRLEN(personalNS); - if (where) - return where; - else // root of our personal namespace - return (PR_smprintf("")); // leak of one character? - } - else - return folder; - } - else - return folder; -} - -XP_Bool MSG_IMAPFolderInfoMail::GetAdminUrl(MWContext *context, MSG_AdminURLType type) -{ - return m_host->RunAdminURL(context, this, type); -} - -XP_Bool MSG_IMAPFolderInfoMail::HaveAdminUrl(MSG_AdminURLType type) -{ - return m_host->HaveAdminURL(type); -} - -MSG_IMAPFolderACL *MSG_IMAPFolderInfoMail::GetFolderACL() -{ - if (!m_folderACL) - m_folderACL = new MSG_IMAPFolderACL(this); - return m_folderACL; -} - -char *MSG_IMAPFolderInfoMail::CreateACLRightsStringForFolder() -{ - GetFolderACL(); // lazy create - if (m_folderACL) - { - return m_folderACL->CreateACLRightsString(); - } - return NULL; -} - -// Allocates and returns a string naming this folder's type -// i.e. "Personal Folder" -// The caller should free the returned value. -char *MSG_IMAPFolderInfoMail::GetTypeNameForFolder() -{ - if (m_flags & MSG_FOLDER_FLAG_IMAP_PUBLIC) - { - return PR_smprintf(XP_GetString(XP_MSG_IMAP_PUBLIC_FOLDER_TYPE_NAME)); - } - if (m_flags & MSG_FOLDER_FLAG_IMAP_OTHER_USER) - { - return PR_smprintf(XP_GetString(XP_MSG_IMAP_OTHER_USERS_FOLDER_TYPE_NAME)); - } - // personal folder - if (GetFolderACL()->GetIsFolderShared()) - { - return PR_smprintf(XP_GetString(XP_MSG_IMAP_PERSONAL_SHARED_FOLDER_TYPE_NAME)); - } - else - { - return PR_smprintf(XP_GetString(XP_MSG_IMAP_PERSONAL_FOLDER_TYPE_NAME)); - } -} - -// Allocates and returns a string describing this folder's type -// i.e. "This is a personal folder. It is shared." -// The caller should free the returned value. -char *MSG_IMAPFolderInfoMail::GetTypeDescriptionForFolder() -{ - if (m_flags & MSG_FOLDER_FLAG_IMAP_PUBLIC) - { - return PR_smprintf(XP_GetString(XP_MSG_IMAP_PUBLIC_FOLDER_TYPE_DESCRIPTION)); - } - if (m_flags & MSG_FOLDER_FLAG_IMAP_OTHER_USER) - { - const char *owner = GetFolderOwnerUserName(); - if (owner) - { - return PR_smprintf(XP_GetString(XP_MSG_IMAP_OTHER_USERS_FOLDER_TYPE_DESCRIPTION), owner); - } - else - { - // Another user's folder, for which we couldn't find an owner name - XP_ASSERT(FALSE); - return PR_smprintf(XP_GetString(XP_MSG_IMAP_OTHER_USERS_FOLDER_TYPE_DESCRIPTION), - XP_GetString(XP_MSG_IMAP_UNKNOWN_USER)); - } - } - // personal folder - if (GetFolderACL()->GetIsFolderShared()) - { - return PR_smprintf(XP_GetString(XP_MSG_IMAP_PERSONAL_SHARED_FOLDER_TYPE_DESCRIPTION)); - } - else - { - return PR_smprintf(XP_GetString(XP_MSG_IMAP_PERSONAL_FOLDER_TYPE_DESCRIPTION)); - } -} - -void MSG_IMAPFolderInfoMail::AddFolderRightsForUser(const char *userName, const char *rights) -{ - SetFolderNeedsACLListed(FALSE); - GetFolderACL()->SetFolderRightsForUser(userName, rights); -} - -void MSG_IMAPFolderInfoMail::ClearAllFolderACLRights() -{ - SetFolderNeedsACLListed(FALSE); - delete m_folderACL; - m_folderACL = new MSG_IMAPFolderACL(this); -} - -void MSG_IMAPFolderInfoMail::RefreshFolderACLRightsView() -{ - if (GetFolderACL()->GetIsFolderShared()) - { - SetFlag(MSG_FOLDER_FLAG_PERSONAL_SHARED); - } - else - { - ClearFlag(MSG_FOLDER_FLAG_PERSONAL_SHARED); - } - - // refresh the view in any folder panes - if (m_master) - { - m_master->BroadcastFolderChanged(this); - } -} - -void MSG_IMAPFolderInfoMail::SetAdminUrl(const char *adminUrl) -{ - FREEIF(m_adminUrl); - m_adminUrl = XP_STRDUP(adminUrl); -} - - -XP_Bool MSG_IMAPFolderInfoMail::GetCanIOpenThisFolder() -{ - if (GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOSELECT) - return FALSE; - - return (GetFolderACL()->GetCanIReadFolder()); -} - -// returns TRUE if another folder can be dropped into this folder -XP_Bool MSG_IMAPFolderInfoMail::GetCanDropFolderIntoThisFolder() -{ - // no inferiors allowed - if (GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOINFERIORS) - return FALSE; - - return GetFolderACL()->GetCanICreateSubfolder(); -} - -// returns TRUE if messages can be dropped into this folder -XP_Bool MSG_IMAPFolderInfoMail::GetCanDropMessagesIntoFolder() -{ - if (GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOSELECT) - return FALSE; - - return (GetFolderACL()->GetCanIInsertInFolder()); -} - -// returns TRUE if messages can be dragged from of this folder (but not deleted) -XP_Bool MSG_IMAPFolderInfoMail::GetCanDragMessagesFromThisFolder() -{ - if (GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOSELECT) - return FALSE; - - return GetFolderACL()->GetCanIReadFolder(); -} - -// returns TRUE if we can delete messages in this folder -XP_Bool MSG_IMAPFolderInfoMail::GetCanDeleteMessagesInFolder() -{ - return GetFolderACL()->GetCanIDeleteInFolder(); -} - -XP_Bool MSG_IMAPFolderInfoMail::AllowsPosting () -{ - return (m_flags & MSG_FOLDER_FLAG_IMAP_PUBLIC); -} - -void MSG_IMAPFolderInfoMail::RememberPassword(const char * password) -{ - MailDB *mailDb = NULL; - XP_Bool wasCreated=FALSE; - ImapMailDB::Open(m_pathName, TRUE, &mailDb, m_master, &wasCreated); - if (mailDb) - { - mailDb->SetCachedPassword(password); - mailDb->Close(); - } -} - -char *MSG_IMAPFolderInfoMail::GetRememberedPassword() -{ - char *retPassword = NULL; - if (m_flags & MSG_FOLDER_FLAG_INBOX) - { - MailDB *mailDb = NULL; - XP_Bool wasCreated=FALSE; - ImapMailDB::Open(m_pathName, TRUE, &mailDb, m_master, &wasCreated); - if (mailDb) - { - XPStringObj cachedPassword; - mailDb->GetCachedPassword(cachedPassword); - retPassword = XP_STRDUP(cachedPassword); - mailDb->Close(); - - } - } - else - { - MSG_FolderInfo *inbox = NULL; - if (GetIMAPContainer()->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, &inbox, 1) == 1 - && inbox != NULL) - { - retPassword = inbox->GetRememberedPassword(); - } - } - return retPassword; -} - -const char *MSG_IMAPFolderInfoMail::GetUserName() -{ - return GetIMAPHost()->GetUserName(); -} - -XP_Bool MSG_IMAPFolderInfoMail::UserNeedsToAuthenticateForFolder(XP_Bool displayOnly) -{ - if (m_master->IsCachePasswordProtected() && !m_master->IsUserAuthenticated() && !m_master->AreLocalFoldersAuthenticated()) - { - char *savedPassword = GetRememberedPassword(); - XP_Bool havePassword = savedPassword && XP_STRLEN(savedPassword); - FREEIF(savedPassword); - - if (havePassword) - { - // If we're offline or we're not authenticated, get authenticated - if (NET_IsOffline() /* && displayOnly */ ) - return TRUE; - } - } - return FALSE; -} - - -unsigned int MessageDownLoadStreamWriteReady(NET_StreamClass *stream) -{ - return MAX_WRITE_READY; -} - -int IMAPHandleBlockForDataBaseCreate(NET_StreamClass *stream, const char *str, int32 msgUID) -{ - void *data_object=stream->data_object; - MWContext *urlPaneContext = ((IMAPdownLoadStreamData *) data_object)->urlContext; - MSG_IMAPFolderInfoMail *imapFolder = urlPaneContext->currentIMAPfolder; - return imapFolder->HandleBlockForDataBaseCreate(urlPaneContext->imapURLPane, str, - strlen(str), - msgUID, - ((IMAPdownLoadStreamData *) data_object)->msgSize); -} - -void IMAPFinishStreamForDataBaseCreate(NET_StreamClass *stream) -{ - IMAPdownLoadStreamData *downloadData = (IMAPdownLoadStreamData *) stream->data_object; - MWContext *urlPaneContext = downloadData->urlContext; - MSG_IMAPFolderInfoMail *imapFolder = urlPaneContext->currentIMAPfolder; - imapFolder->FinishStreamForDataBaseCreate(); - delete downloadData; -} - -extern "C" void NotifyHeaderFetchCompleted(MWContext *currentContext, TNavigatorImapConnection *imapConnection) -{ - if (currentContext->currentIMAPfolder) - currentContext->currentIMAPfolder->AllFolderHeadersAreDownloaded(currentContext->imapURLPane, imapConnection); - else - XP_ASSERT(FALSE); -} - - -void IMAPAbortStreamForDataBaseCreate (NET_StreamClass *stream, int status) -{ - IMAPdownLoadStreamData *downloadData = (IMAPdownLoadStreamData *) stream->data_object; - MWContext *urlPaneContext = downloadData->urlContext; - MSG_IMAPFolderInfoMail *imapFolder = urlPaneContext->currentIMAPfolder; - imapFolder->AbortStreamForDataBaseCreate(status); - delete downloadData; -} - -#ifndef XP_OS2 -static -#else -extern "OPTLINK" -#endif -int32 IMAPHandleDownloadLine(char* line, uint32 length, void* closure) -{ - ParseOutgoingMessage *outgoingParser = (ParseOutgoingMessage *) closure; - - return outgoingParser->ParseFolderLine(line, length); -} - -int IMAPHandleBlockForMessageCopyDownload(NET_StreamClass *stream, const char *str, int32 msgUID) -{ - int returnValue = 0; - IMAPdownLoadStreamData *downloadStreamData = (IMAPdownLoadStreamData *) stream->data_object; - MWContext *urlPaneContext = downloadStreamData->urlContext; - MSG_FolderInfoMail *localFolder = (MSG_FolderInfoMail *) urlPaneContext->msgCopyInfo->dstFolder; - - if (!urlPaneContext->msgCopyInfo->moveState.writestate.fid) - { - int createError = localFolder->CreateMessageWriteStream(&urlPaneContext->msgCopyInfo->moveState,0,0); // download msg size and flags don't matter - if (createError != 0) - { - FE_Alert(urlPaneContext, XP_GetString(createError)); - return createError; - } - - - if (urlPaneContext->msgCopyInfo->moveState.writestate.fid) - { - downloadStreamData->outgoingParser.Clear(); - downloadStreamData->outgoingParser.SetOutFile(urlPaneContext->msgCopyInfo->moveState.writestate.fid); - downloadStreamData->outgoingParser.SetMailDB(urlPaneContext->msgCopyInfo->moveState.destDB); - - char *envelopeString = msg_GetDummyEnvelope(); // not allocated, do not free - uint32 storePosition = localFolder->SeekToEndOfMessageStore(&urlPaneContext->msgCopyInfo->moveState); - downloadStreamData->outgoingParser.Init(storePosition); - urlPaneContext->msgCopyInfo->offlineFolderPositionOfMostRecentMessage = storePosition; - downloadStreamData->outgoingParser.StartNewEnvelope(envelopeString, strlen(envelopeString)); - - // Conjure up an X-Mozilla-Status line from the source IMAP database so the - // message will have the right flags in the local mail folder. We don't - // apparently have a DB for filtering IMAP to local, but we should still - // put the X-Mozilla-Status header into the local folder. - uint32 xMozillaFlags = 0; - MessageDB *db = urlPaneContext->msgCopyInfo->srcDB; - if (db) - { - DBMessageHdr *dbHdr = db->GetDBHdrForKey (msgUID); - xMozillaFlags = dbHdr->GetMozillaStatusFlags() & ~MSG_FLAG_RUNTIME_ONLY; - delete dbHdr; - } - - char *mozStatus = PR_smprintf("%04.4x", (int) xMozillaFlags); - if (mozStatus) - { - downloadStreamData->m_mozillaStatus = mozStatus; - downloadStreamData->outgoingParser.m_mozstatus.value = mozStatus; - downloadStreamData->outgoingParser.m_mozstatus.length = XP_STRLEN(mozStatus); - - // If the message on the server has an X-Mozilla-Status, it must be bogus, - // so make sure our local opinion of X-Mozilla-Status is the one we keep - downloadStreamData->outgoingParser.m_IgnoreXMozillaStatus = TRUE; - } - } - } - - if (urlPaneContext->msgCopyInfo->moveState.writestate.fid) - { - localFolder->SeekToEndOfMessageStore(&urlPaneContext->msgCopyInfo->moveState); - returnValue = msg_LineBuffer (str, strlen(str), - &downloadStreamData->obuffer, (uint32 *)&downloadStreamData->obufferSize, - (uint32*)&downloadStreamData->obufferIndex, - FALSE, IMAPHandleDownloadLine, - &downloadStreamData->outgoingParser); - // note that we need to update the db with the position of the start of a message, - } - - return returnValue; -} - -void IMAPFinishStreamForMessageCopyDownload(NET_StreamClass *stream) -{ - IMAPdownLoadStreamData *downloadStreamData = (IMAPdownLoadStreamData *) stream->data_object; - MWContext *urlPaneContext = downloadStreamData->urlContext; - MSG_FolderInfoMail *localFolder = (MSG_FolderInfoMail *) urlPaneContext->msgCopyInfo->dstFolder; - - // if there are any bytes left in the buffer, send them. Happens when last line ends in <CR> - if (downloadStreamData->obufferIndex) - { - IMAPHandleDownloadLine(downloadStreamData->obuffer, - downloadStreamData->obufferIndex, - &downloadStreamData->outgoingParser); - } - - - // save the message header so relevant panes are updated - MailDB::SetFolderInfoValid(localFolder->GetPathname(), 0, 0); - - msg_move_state *state = &urlPaneContext->msgCopyInfo->moveState; - downloadStreamData->outgoingParser.FinishHeader(); -// MailMessageHdr *mailHdr = (MailMessageHdr*) urlPaneContext->msgCopyInfo->srcDB->GetDBHdrForKey(urlPaneContext->msgCopyInfo->srcArray->GetAt(state->msgIndex)); - - uint32 endOfMessageStore = localFolder->SeekToEndOfMessageStore(state); - localFolder->CloseMessageWriteStream(&urlPaneContext->msgCopyInfo->moveState); - - // tweak the msg size because line termination and envelope lines are different - state->finalDownLoadMessageSize = endOfMessageStore - urlPaneContext->msgCopyInfo->offlineFolderPositionOfMostRecentMessage; - - if (downloadStreamData->outgoingParser.m_newMsgHdr) - { - if (!(downloadStreamData->outgoingParser.m_newMsgHdr->GetFlags() & kIsRead)) - downloadStreamData->outgoingParser.m_newMsgHdr->OrFlags(kNew); - downloadStreamData->outgoingParser.m_newMsgHdr->SetMessageKey (urlPaneContext->msgCopyInfo->offlineFolderPositionOfMostRecentMessage); - if (state->destDB) - state->destDB->AddHdrToDB (downloadStreamData->outgoingParser.m_newMsgHdr, NULL, TRUE); // tell db to notify - // we must tweak the message size to account - // for the envelope and line termination differences - if (state->finalDownLoadMessageSize) - { - downloadStreamData->outgoingParser.m_newMsgHdr->SetByteLength(state->finalDownLoadMessageSize); - downloadStreamData->outgoingParser.m_newMsgHdr->SetMessageSize(state->finalDownLoadMessageSize); - } - downloadStreamData->outgoingParser.m_newMsgHdr = NULL; - } - if (downloadStreamData->obuffer) - XP_FREE (downloadStreamData->obuffer); - - // for IMAP downloads, this is the only place where msgIndex is used - // advance it so we do not copy the same header n times during a multimessage - // download. - state->msgIndex++; - delete downloadStreamData; -} - -void IMAPAbortStreamForMessageCopyDownload(NET_StreamClass *stream, int /*status*/) -{ - IMAPdownLoadStreamData *downloadStreamData = (IMAPdownLoadStreamData *) stream->data_object; - MWContext *urlPaneContext = downloadStreamData->urlContext; - MSG_FolderInfoMail *localFolder = (MSG_FolderInfoMail *) urlPaneContext->msgCopyInfo->moveState.destfolder; - localFolder->CloseMessageWriteStream(&urlPaneContext->msgCopyInfo->moveState); - delete downloadStreamData; -} - - - - -extern "C" NET_StreamClass *CreateIMAPDownloadMessageStream(ImapActiveEntry *ce, uint32 size, - const char *content_type, XP_Bool content_modified) -{ - MSG_Pane *urlPane = IMAP_GetActiveEntryPane(ce); - MWContext *currentContext = (urlPane) ? urlPane->GetContext() : (MWContext *)NULL; - - NET_StreamClass *returnStream = (NET_StreamClass *)NULL; - if (currentContext && currentContext->currentIMAPfolder) - returnStream = currentContext->currentIMAPfolder->CreateDownloadMessageStream(ce, size, content_type, content_modified); - - return returnStream; -} - -extern "C" void UpdateIMAPMailboxStatus(mailbox_spec *adoptedBoxSpec, MWContext *currentContext) -{ - MSG_IMAPFolderInfoMail *mailFolder = adoptedBoxSpec->allocatedPathName ? - currentContext->mailMaster->FindImapMailFolder(adoptedBoxSpec->hostName, adoptedBoxSpec->allocatedPathName, NULL, FALSE) : - (MSG_IMAPFolderInfoMail *)NULL; - if (mailFolder && currentContext->imapURLPane) // imap biff gets here for XFE somehow with null imapurlpane - { - mailFolder->UpdateFolderStatus(adoptedBoxSpec, currentContext->imapURLPane); - } -} - -extern "C" void UpdateIMAPMailboxInfo(mailbox_spec *adoptedBoxSpec, MWContext *currentContext) -{ - if (!currentContext->mailMaster) // bogus ! - return; // currentContext->mailMaster = (MSG_Master*) adoptedBoxSpec->connection->fCurrentEntry->window_id; - MSG_IMAPFolderInfoMail *mailFolder = adoptedBoxSpec->allocatedPathName ? - currentContext->mailMaster->FindImapMailFolder(adoptedBoxSpec->hostName, adoptedBoxSpec->allocatedPathName, NULL, FALSE) : - (MSG_IMAPFolderInfoMail *)NULL; - if (mailFolder && currentContext->imapURLPane) // imap biff gets here for XFE somehow with null imapurlpane - { - mailFolder->UpdateNewlySelectedFolder(adoptedBoxSpec, currentContext->imapURLPane); - } - else - { - // we should never get here, some how we can't find folder info that started this update - - // if we have a mailbox name, alert the user. Otherwise this was probably an interrupt context - if (adoptedBoxSpec->allocatedPathName) - { - const char *errorFormat = XP_GetString(MK_MSG_CANT_FIND_SNM); - char *errorMessage = (char *) XP_ALLOC(XP_STRLEN(errorFormat) + XP_STRLEN(adoptedBoxSpec->allocatedPathName) + 1); - if (errorMessage) - { - sprintf(errorMessage, errorFormat, adoptedBoxSpec->allocatedPathName); - FE_Alert(currentContext, errorMessage); - XP_FREE(errorMessage); - } - } - IMAP_DoNotDownLoadAnyMessageHeadersForMailboxSelect(adoptedBoxSpec->connection); - } -} - -extern "C" int32 GetUIDValidityForSpecifiedImapFolder(const char *hostName, const char *canonicalimapName, MWContext *currentContext) -{ - int32 rvalue = kUidUnknown; - - XP_ASSERT(canonicalimapName); - - if (currentContext->mailMaster && canonicalimapName) - { - MSG_IMAPFolderInfoMail *mailFolder = currentContext->mailMaster->FindImapMailFolder(hostName, canonicalimapName, NULL, FALSE); - - if (mailFolder) - { - DBFolderInfo *folderInfo = NULL; - MessageDB *msgDb = NULL; - mailFolder->GetDBFolderInfoAndDB(&folderInfo,&msgDb); - if (folderInfo) - rvalue = folderInfo->GetImapUidValidity(); - if (msgDb) - msgDb->Close(); - } - } - - return rvalue; -} - - -static -XP_Bool FolderNamesMatch(const char *name1, const char *name2) -{ - XP_Bool theyMatch = XP_STRCMP(name1, name2) == 0; - if (!theyMatch) - { - char *nonConstName1 = (char *) name1; - char *slash1 = 0; - char *nonConstName2 = (char *) name2; - char *slash2 = 0; - - // if one or both end in slash, ignore it - if ( *nonConstName1 && (*(nonConstName1 + XP_STRLEN(nonConstName1) - 1 ) == '/') ) - { - slash1 = nonConstName1 + XP_STRLEN(nonConstName1) - 1; - *slash1 = '\0'; - } - if ( *nonConstName2 && (*(nonConstName2 + XP_STRLEN(nonConstName2) - 1 ) == '/') ) - { - slash2 = nonConstName2 + XP_STRLEN(nonConstName2) - 1; - *slash2 = '\0'; - } - - theyMatch = XP_STRCMP(nonConstName1, nonConstName2) == 0; - - // replace the slashes, we promised 'const' - if (slash1) *slash1 = '/'; - if (slash2) *slash2 = '/'; - } - - return theyMatch; -} - -// forward -static -void DeleteNonVerifiedImapFolders(MSG_FolderInfo* parentFolder, - MSG_FolderPane *folderPane, - MSG_Pane **urlPane); - - -// obsolete ? -static enum EMailboxDiscoverStatus GiveUserAChanceToChangeServerDir(MSG_Pane *imapURLPane, const char* /*hostName*/) -{ - EMailboxDiscoverStatus discoveryStatus = eContinue; - - // I don't think we want this stopgap anymore, now that we're using subscription. - if (FALSE /*!FE_Confirm(imapURLPane->GetContext(), XP_GetString(MK_MSG_LOTS_NEW_IMAP_FOLDERS))*/) - { - discoveryStatus = eCancelled; - char onlineDir[256]; - onlineDir[0] = '\0'; - int stringSize = 256; - PREF_GetCharPref("mail.imap.server_sub_directory", - onlineDir, &stringSize); - - char *newImapDir = FE_Prompt(imapURLPane->GetContext(), XP_GetString(MK_MSG_IMAP_DIR_PROMPT), onlineDir); - - if (newImapDir && XP_STRCMP(newImapDir, onlineDir )) - { - discoveryStatus = eNewServerDirectory; - PREF_SetCharPref("mail.imap.server_sub_directory", newImapDir); - //IMAP_SetNamespacesFromPrefs(hostName, newImapDir, "", ""); - - // set all existing imap folders to be non verified and delete them from the folder pane - MSG_FolderIterator folderIterator(imapURLPane->GetMaster()->GetImapMailFolderTree()); - MSG_FolderInfo *currentFolder = folderIterator.First(); - while (currentFolder) - { - if ((currentFolder->GetType() == FOLDER_IMAPMAIL) && !(currentFolder->GetFlags() & MSG_FOLDER_FLAG_INBOX)) - ((MSG_IMAPFolderInfoMail *)currentFolder)->SetIsOnlineVerified(FALSE); - currentFolder = folderIterator.Next(); - } - - DeleteNonVerifiedImapFolders(imapURLPane->GetMaster()->GetImapMailFolderTree(), - (MSG_FolderPane *) imapURLPane->GetMaster()->FindFirstPaneOfType(MSG_FOLDERPANE), &imapURLPane); - XP_FREE(newImapDir); - } - - } - - return discoveryStatus; -} - - -static enum EMailboxDiscoverStatus DiscoverIMAPMailboxForSubscribe(mailbox_spec *adoptedBoxSpec, MWContext *currentContext) -{ - char *folderName = adoptedBoxSpec->allocatedPathName; - if (currentContext->imapURLPane) - { - MSG_Pane *pane = currentContext->imapURLPane; - XP_ASSERT(pane->GetPaneType() == MSG_SUBSCRIBEPANE); - if (pane->GetPaneType() == MSG_SUBSCRIBEPANE) - { - uint32 folder_flags = 0; - if (adoptedBoxSpec->box_flags & kPersonalMailbox) - folder_flags |= MSG_GROUPNAME_FLAG_IMAP_PERSONAL; - if (adoptedBoxSpec->box_flags & kPublicMailbox) - folder_flags |= MSG_GROUPNAME_FLAG_IMAP_PUBLIC; - if (adoptedBoxSpec->box_flags & kOtherUsersMailbox) - folder_flags |= MSG_GROUPNAME_FLAG_IMAP_OTHER_USER; - if (adoptedBoxSpec->box_flags & kNoselect) - folder_flags |= MSG_GROUPNAME_FLAG_IMAP_NOSELECT; - ((MSG_SubscribePane *)pane)->AddIMAPGroupToList(folderName, adoptedBoxSpec->hierarchySeparator, adoptedBoxSpec->discoveredFromLsub, folder_flags); - } - } - IMAP_FreeBoxSpec(adoptedBoxSpec); - return eContinue; -} - -/* static */ MSG_IMAPFolderInfoMail *MSG_IMAPFolderInfoMail::CreateNewIMAPFolder(MSG_IMAPFolderInfoMail *parentFolder, MWContext *currentContext, - const char *mailboxName, const char *onlineLeafName, uint32 mailboxFlags, MSG_IMAPHost *host) -{ - MailDB *newDb = NULL; - XP_Bool wasCreated=FALSE; - MSG_IMAPFolderInfoMail *newFolder = NULL; - - // convert spaces back to %20 quote char - char *offlinePathLeafTokenString = XP_PlatformPartialPathToXPPartialPath(onlineLeafName); - - // calculate a leaf name that works for this client's platform - char *diskLeafName; - if (parentFolder) - diskLeafName = MSG_FolderInfoMail::CreatePlatformLeafNameForDisk(offlinePathLeafTokenString,currentContext->mailMaster,parentFolder); - else - diskLeafName = MSG_FolderInfoMail::CreatePlatformLeafNameForDisk(offlinePathLeafTokenString,currentContext->mailMaster, host->GetLocalDirectory()); - int newPathStringLength = parentFolder ? XP_STRLEN(parentFolder->GetPathname()) : - XP_STRLEN(host->GetLocalDirectory()); - newPathStringLength += XP_STRLEN(diskLeafName) + 6; // 6 enough for .sbd/ and \0 - char *newboxPath = (char*) XP_ALLOC (newPathStringLength); - - if (newboxPath) - { - XP_STRCPY(newboxPath, parentFolder ? parentFolder->GetPathname() : host->GetLocalDirectory()); - - if (parentFolder) - { - // make sure the parent .sbd dir exists - int dirStatus = 0; - XP_StatStruct stat; - XP_BZERO (&stat, sizeof(stat)); - if (0 == XP_Stat (newboxPath, &stat, xpMailSubdirectory)) - { - if (!S_ISDIR(stat.st_mode)) - dirStatus = MK_COULD_NOT_CREATE_DIRECTORY; // a file .sbd already exists - } - else - dirStatus = XP_MakeDirectory (newboxPath, xpMailSubdirectory); - if ((0 != dirStatus) && currentContext) - { - char *str = PR_smprintf(XP_GetString(MK_COULD_NOT_CREATE_DIRECTORY),newboxPath); - if (str) - { - FE_Alert(currentContext, str); - XP_FREE(str); - } - } - XP_STRCAT(newboxPath,".sbd"); - } - - XP_STRCAT(newboxPath, "/"); - XP_STRCAT(newboxPath, diskLeafName); - - char *progressString = PR_smprintf(XP_GetString(MK_MSG_IMAP_DISCOVERING_MAILBOX),onlineLeafName); - if (progressString) - { - NET_Progress(currentContext, progressString); - XP_FREE(progressString); - } - - // create the new database, set the online name - ImapMailDB::Open(newboxPath, TRUE, &newDb, currentContext->mailMaster, &wasCreated); - if (newDb) - { - newDb->m_dbFolderInfo->SetMailboxName(mailboxName); - newFolder = new MSG_IMAPFolderInfoMail(newboxPath, - currentContext->mailMaster, - parentFolder ? parentFolder->GetDepth() + 1 : 2, - MSG_FOLDER_FLAG_MAIL, host); - - if (host->GetDefaultOfflineDownload()) - newFolder->SetFolderPrefFlags(newFolder->GetFolderPrefFlags() | MSG_FOLDER_PREF_OFFLINE); - - newDb->SetFolderInfoValid(newboxPath,0,0); - - - // set this flag now because it is used in the compare function when adding the folder - // to its parent sub folder array - if (mailboxFlags & kImapTrash) - newFolder->SetFlag(MSG_FOLDER_FLAG_TRASH); - - // set the mailbox type flags, if they exist - if (mailboxFlags & kPersonalMailbox) - newFolder->SetFlag(MSG_FOLDER_FLAG_IMAP_PERSONAL); - else if (mailboxFlags & kPublicMailbox) - newFolder->SetFlag(MSG_FOLDER_FLAG_IMAP_PUBLIC); - else if (mailboxFlags & kOtherUsersMailbox) - newFolder->SetFlag(MSG_FOLDER_FLAG_IMAP_OTHER_USER); - - XP_Bool addToFolderPane = FALSE; - if (parentFolder) - { - if (!parentFolder->HasSubFolders()) - { - // if this is a new parent, its initial state should be collapsed - parentFolder->SetFlagInAllFolderPanes(MSG_FOLDER_FLAG_ELIDED); - } - - // MSG_FolderInfoMail::Adopt does too much. We already know the - // newFolder pathname and parent sbd exist - parentFolder->LightWeightAdopt(newFolder); - parentFolder->SummaryChanged(); - addToFolderPane = !(parentFolder->GetFlags() & MSG_FOLDER_FLAG_ELIDED); - } - else // no parent - { - MSG_FolderInfoContainer *imapRootFolder = host->GetHostFolderInfo(); - if (imapRootFolder) - { - XPPtrArray *rootSubfolderArray = (XPPtrArray *) imapRootFolder->GetSubFolders(); - rootSubfolderArray->Add(newFolder); - imapRootFolder->SummaryChanged(); - addToFolderPane = TRUE; - } - } - - // add the new folder to the folder pane trees so the fe can see it. - - if (addToFolderPane) - { - currentContext->mailMaster->BroadcastFolderAdded (newFolder); - newFolder->SummaryChanged(); - } - } - } - if (newDb) - newDb->Close(); - return newFolder; -} - -// If currentContext is NULL, we are simply discovering this folder and adding it to the folder list automatically, as if -// the user clicked on a link to a folder that's not in his list yet. -// Master should never be NULL. -static enum EMailboxDiscoverStatus DiscoverIMAPMailboxForFolderPane(mailbox_spec *adoptedBoxSpec, MSG_Master *master, - MWContext *currentContext, XP_Bool broadcastDiscovery) -{ - MailDB *newDb = NULL; - XP_Bool wasCreated=FALSE; - XP_Bool shouldStripNamespace = TRUE; - XP_Bool folderIsNew = FALSE; - XP_Bool folderIsNamespace = FALSE; - - EMailboxDiscoverStatus discoveryStatus = eContinue; - - MSG_IMAPHost *host = master->GetIMAPHost(adoptedBoxSpec->hostName); - if (!host) - { - // We discovered an IMAP folder on a host we don't know about. This should never happen. - XP_ASSERT(FALSE); - return discoveryStatus; - } - - // Check to see if we already know about it. Maybe we created it when we found its child. - MSG_IMAPFolderInfoMail *newFolder = master->FindImapMailFolder(adoptedBoxSpec->hostName, adoptedBoxSpec->allocatedPathName, NULL, FALSE); - - if (!newFolder) // if we haven't seen this guy before, then create it - { - folderIsNew = TRUE; - MSG_IMAPFolderInfoMail *parentFolder = NULL; - - const char *namespacePrefix = host->GetNamespacePrefixForFolder(adoptedBoxSpec->allocatedPathName); - if (namespacePrefix && - !XP_STRCMP(namespacePrefix, adoptedBoxSpec->allocatedPathName)) - { - folderIsNamespace = TRUE; // the folder we are discovering is actually a namespace prefix. - } - - if (!folderIsNamespace) // if the folder is really a namespace, don't break up the hierarchy - { - // make sure we know about the parent - char *parentFolderName = XP_STRDUP(adoptedBoxSpec->allocatedPathName); - - if (parentFolderName) // trying to find/discover the parent - { - char *lastSlash = XP_STRRCHR(parentFolderName, '/'); - if (lastSlash) // if there is a hierarchy, there is a parent - { - *lastSlash = '\0'; - - if (namespacePrefix && - (XP_STRLEN(namespacePrefix) >= 1) && - host->GetShouldStripThisNamespacePrefix(namespacePrefix)) - { - // this namespace is being stripped - parentFolder = NULL; - } - else - { - const char *parentNamespace = host->GetNamespacePrefixForFolder(parentFolderName); - if (parentNamespace && - !XP_STRNCMP(parentNamespace, parentFolderName, XP_STRLEN(parentFolderName))) - { - // The parent is a namespace itself. Find the folder for that namespace. - parentFolder = master->FindImapMailFolder(adoptedBoxSpec->hostName, parentNamespace, NULL, FALSE); - } - else - { - parentFolder = master->FindImapMailFolder(adoptedBoxSpec->hostName, parentFolderName, NULL, FALSE); - if (!parentFolder) - { - mailbox_spec *parentSpec = (mailbox_spec *) XP_ALLOC( sizeof(mailbox_spec)); - if (parentSpec) - { - parentSpec->folderSelected = FALSE; - parentSpec->hierarchySeparator = adoptedBoxSpec->hierarchySeparator; - parentSpec->allocatedPathName = XP_STRDUP(parentFolderName); - parentSpec->hostName = XP_STRDUP(adoptedBoxSpec->hostName); - parentSpec->flagState = NULL; - parentSpec->discoveredFromLsub = FALSE; - parentSpec->box_flags = 0; - parentSpec->onlineVerified = FALSE; - - DiscoverIMAPMailbox(parentSpec, // storage adopted - master, - currentContext, - broadcastDiscovery); - parentFolder = master->FindImapMailFolder(adoptedBoxSpec->hostName, parentFolderName, NULL, FALSE); - } - } - } - } - } - XP_FREE(parentFolderName); - } - } - - if (folderIsNamespace && host->GetShouldStripThisNamespacePrefix(namespacePrefix)) - { - // We've discovered a namespace (only) that we're going to strip off. - // So don't discover a folderinfo for it. - return eContinue; - } - - // now create this folder - const char *onlineLeafName = NULL; - if (!folderIsNamespace) // only break out the hierarchy if this folder is not a namespace itself - onlineLeafName = XP_STRRCHR(adoptedBoxSpec->allocatedPathName, '/'); - - if (!onlineLeafName) - onlineLeafName = adoptedBoxSpec->allocatedPathName; // this is a root level folder - else - onlineLeafName++; // eat the '/' - - // convert spaces back to %20 quote char - char *offlinePathLeafTokenString = XP_PlatformPartialPathToXPPartialPath(onlineLeafName); - - // calculate a leaf name that works for this client's platform - char *diskLeafName; - if (parentFolder) - diskLeafName = MSG_FolderInfoMail::CreatePlatformLeafNameForDisk(offlinePathLeafTokenString,master,parentFolder); - else - diskLeafName = MSG_FolderInfoMail::CreatePlatformLeafNameForDisk(offlinePathLeafTokenString,master, host->GetLocalDirectory()); - int newPathStringLength = parentFolder ? XP_STRLEN(parentFolder->GetPathname()) : - XP_STRLEN(host->GetLocalDirectory()); - newPathStringLength += XP_STRLEN(diskLeafName) + 6; // 6 enough for .sbd/ and \0 - char *newboxPath = (char*) XP_ALLOC (newPathStringLength); - - if (newboxPath) - { - XP_STRCPY(newboxPath, parentFolder ? parentFolder->GetPathname() : host->GetLocalDirectory()); - - if (parentFolder) - { - // make sure the parent .sbd dir exists - int dirStatus = 0; - XP_StatStruct stat; - XP_BZERO (&stat, sizeof(stat)); - if (0 == XP_Stat (newboxPath, &stat, xpMailSubdirectory)) - { - if (!S_ISDIR(stat.st_mode)) - dirStatus = MK_COULD_NOT_CREATE_DIRECTORY; // a file .sbd already exists - } - else - dirStatus = XP_MakeDirectory (newboxPath, xpMailSubdirectory); - if ((0 != dirStatus) && currentContext) - { - char *str = PR_smprintf(XP_GetString(MK_COULD_NOT_CREATE_DIRECTORY),newboxPath); - if (str) - { - FE_Alert(currentContext, str); - XP_FREE(str); - } - } - XP_STRCAT(newboxPath,".sbd"); - } - - XP_STRCAT(newboxPath, "/"); - XP_STRCAT(newboxPath, diskLeafName); - - if (currentContext) - { - char *progressString = PR_smprintf(XP_GetString(MK_MSG_IMAP_DISCOVERING_MAILBOX),onlineLeafName); - if (progressString) - { - NET_Progress(currentContext, progressString); - XP_FREE(progressString); - } - } - - // create the new database, set the online name - ImapMailDB::Open(newboxPath, TRUE, &newDb, master, &wasCreated); - if (newDb) - { - newDb->m_dbFolderInfo->SetMailboxName(adoptedBoxSpec->allocatedPathName); - newFolder = new MSG_IMAPFolderInfoMail(newboxPath, - master, - parentFolder ? parentFolder->GetDepth() + 1 : 2, - MSG_FOLDER_FLAG_MAIL, host); - - if (host->GetDefaultOfflineDownload()) - newFolder->SetFolderPrefFlags(newFolder->GetFolderPrefFlags() | MSG_FOLDER_PREF_OFFLINE); - - newDb->SetFolderInfoValid(newboxPath,0,0); - - - // set this flag now because it is used in the compare function when adding the folder - // to its parent sub folder array - if (adoptedBoxSpec->box_flags & kImapTrash) - newFolder->SetFlag(MSG_FOLDER_FLAG_TRASH); - - // set the mailbox type flags, if they exist - if (adoptedBoxSpec->box_flags & kPersonalMailbox) - newFolder->SetFlag(MSG_FOLDER_FLAG_IMAP_PERSONAL); - else if (adoptedBoxSpec->box_flags & kPublicMailbox) - newFolder->SetFlag(MSG_FOLDER_FLAG_IMAP_PUBLIC); - else if (adoptedBoxSpec->box_flags & kOtherUsersMailbox) - newFolder->SetFlag(MSG_FOLDER_FLAG_IMAP_OTHER_USER); - - XP_Bool addToFolderPane = FALSE; - if (parentFolder) - { - if (!parentFolder->HasSubFolders()) - { - // if this is a new parent, its initial state should be collapsed - parentFolder->SetFlagInAllFolderPanes(MSG_FOLDER_FLAG_ELIDED); - } - - // MSG_FolderInfoMail::Adopt does too much. We already know the - // newFolder pathname and parent sbd exist - parentFolder->LightWeightAdopt(newFolder); - parentFolder->SummaryChanged(); - addToFolderPane = !(parentFolder->GetFlags() & MSG_FOLDER_FLAG_ELIDED); - } - else // no parent - { - MSG_FolderInfoContainer *imapRootFolder = master->GetImapMailFolderTreeForHost(adoptedBoxSpec->hostName); - if (imapRootFolder) - { - XPPtrArray *rootSubfolderArray = (XPPtrArray *) imapRootFolder->GetSubFolders(); - rootSubfolderArray->Add(newFolder); - imapRootFolder->SummaryChanged(); - addToFolderPane = TRUE; - } - } - - - // add the new folder to the folder pane trees so the fe can see it. - if (addToFolderPane && currentContext) - { - if (broadcastDiscovery) - master->BroadcastFolderAdded (newFolder, currentContext->imapURLPane); - newFolder->SummaryChanged(); - } - - } - } - - FREEIF(offlinePathLeafTokenString); - FREEIF(diskLeafName); - } - - if (newFolder && (discoveryStatus == eContinue) ) - { - MSG_IMAPHost *host = master->GetIMAPHost(adoptedBoxSpec->hostName); - XP_ASSERT(host); - XP_Bool usingSubscription = host ? host->GetIsHostUsingSubscription() : FALSE; - - if (adoptedBoxSpec->box_flags & kImapTrash) - newFolder->SetFlag(MSG_FOLDER_FLAG_TRASH); - - // set the mailbox type flags, if they exist - if (adoptedBoxSpec->box_flags & kPersonalMailbox) - newFolder->SetFlag(MSG_FOLDER_FLAG_IMAP_PERSONAL); - else if (adoptedBoxSpec->box_flags & kPublicMailbox) - newFolder->SetFlag(MSG_FOLDER_FLAG_IMAP_PUBLIC); - else if (adoptedBoxSpec->box_flags & kOtherUsersMailbox) - newFolder->SetFlag(MSG_FOLDER_FLAG_IMAP_OTHER_USER); - - newFolder->SetIsOnlineVerified(adoptedBoxSpec->onlineVerified); - newFolder->SetOnlineHierarchySeparator(adoptedBoxSpec->hierarchySeparator); - - int32 prefFlags = newFolder->GetFolderPrefFlags(); - - // for each imap folder flag, record it if its different - prefFlags = (adoptedBoxSpec->box_flags & kMarked) ? (prefFlags | MSG_FOLDER_PREF_IMAPMARKED) : (prefFlags & ~MSG_FOLDER_PREF_IMAPMARKED); - prefFlags = (adoptedBoxSpec->box_flags & kUnmarked) ? (prefFlags | MSG_FOLDER_PREF_IMAPUNMARKED) : (prefFlags & ~MSG_FOLDER_PREF_IMAPUNMARKED); - prefFlags = (adoptedBoxSpec->box_flags & kNoinferiors) ? (prefFlags | MSG_FOLDER_PREF_IMAPNOINFERIORS) : (prefFlags & ~MSG_FOLDER_PREF_IMAPNOINFERIORS); - prefFlags = (adoptedBoxSpec->box_flags & kNoselect) ? (prefFlags | MSG_FOLDER_PREF_IMAPNOSELECT) : (prefFlags & ~MSG_FOLDER_PREF_IMAPNOSELECT); - // good time to clear this flag. - prefFlags &= ~MSG_FOLDER_PREF_CREATED_OFFLINE; - - // once we've discovered it using LSUB, it sticks - if (!(prefFlags & MSG_FOLDER_PREF_LSUB_DISCOVERED)) - prefFlags = usingSubscription ? (prefFlags | MSG_FOLDER_PREF_LSUB_DISCOVERED) : (prefFlags & ~MSG_FOLDER_PREF_LSUB_DISCOVERED); - - // Set a flag on whether or not we've stripped off the namespace - //if (folderIsNew) - // prefFlags = shouldStripNamespace ? (prefFlags | MSG_FOLDER_PREF_NAMESPACE_STRIPPED) : (prefFlags & ~MSG_FOLDER_PREF_NAMESPACE_STRIPPED); - - if (prefFlags != newFolder->GetFolderPrefFlags()) - newFolder->SetFolderPrefFlags(prefFlags); - } - - if (newDb) - newDb->Close(); - - IMAP_FreeBoxSpec(adoptedBoxSpec); - - if (discoveryStatus == eContinue && folderIsNew) - discoveryStatus = eContinueNew; - - return discoveryStatus; -} - - -extern "C" enum EMailboxDiscoverStatus DiscoverIMAPMailbox(mailbox_spec *adoptedBoxSpec, MSG_Master *master, - MWContext *currentContext, XP_Bool broadcastDiscovery) -{ - // Not sure why this happens (pane is deleted), but it's a guaranteed crash. - if (currentContext && !MSG_Pane::PaneInMasterList(currentContext->imapURLPane)) - currentContext->imapURLPane = NULL; - if (currentContext && currentContext->imapURLPane && - (currentContext->imapURLPane->GetPaneType() == - MSG_SUBSCRIBEPANE)) - return DiscoverIMAPMailboxForSubscribe(adoptedBoxSpec, - currentContext); - else if (currentContext && currentContext->imapURLPane && - currentContext->imapURLPane->IMAPListInProgress()) - { - currentContext->imapURLPane->SetIMAPListMailboxExist(TRUE); - return eContinue; - } - else - return DiscoverIMAPMailboxForFolderPane(adoptedBoxSpec, - master, - currentContext, - broadcastDiscovery); -} - -extern "C" void ReportSuccessOfOnlineDelete(MWContext *currentContext, const char *hostName, const char *mailboxName) -{ - XP_ASSERT(currentContext && currentContext->mailMaster); - if (currentContext && currentContext->mailMaster) - { - MSG_IMAPFolderInfoMail *doomedFolder = currentContext->mailMaster->FindImapMailFolder(hostName, mailboxName, NULL, FALSE); - XP_ASSERT(doomedFolder); - if (doomedFolder) - { - MSG_FolderInfo *tree = currentContext->mailMaster->GetImapMailFolderTree(); - XP_ASSERT(tree); - if (tree) - { - // I'm leaving the FindParent split out in case we put in parent pointers, - // which would make this an O(1) operation - MSG_FolderInfo *parent = tree->FindParentOf (doomedFolder); - XP_ASSERT(parent); - if (parent) - parent->PropagateDelete ((MSG_FolderInfo**) &doomedFolder); // doomedFolder is null on return - } - } - } -} - -extern "C" void ReportFailureOfOnlineCreate(MWContext *currentContext, const char* /*serverMessage*/) -{ - // Tell the FE object that was trying to create the folder that it failed. This is - // their signal to do something with the New Folder dialog. Not sure if they *should* take - // it down, but this is enough info for them to clean up. - // - // If we need to send this to more panes than just the URLPane, we should create a new - // broadcast thing in the master - - XP_ASSERT(currentContext->imapURLPane); - if (currentContext->imapURLPane) - FE_PaneChanged (currentContext->imapURLPane, FALSE, MSG_PaneNotifyNewFolderFailed, 0); -} - -extern "C" void ReportSuccessOfOnlineRename(MWContext *currentContext, folder_rename_struct *names) -{ - XP_ASSERT(currentContext->mailMaster); - MSG_IMAPFolderInfoMail *renameFolder = currentContext->mailMaster->FindImapMailFolder(names->fOldName); - - if (renameFolder) - { - // calculate the leaf of the new name - char *newleafName = XP_STRRCHR(names->fNewName, '/'); - if (newleafName) - newleafName++; - else - newleafName = names->fNewName; // renaming root level box - - // if the renameFolder->GetName() == newleafName, then this is a hierarchy move - if (0 == XP_STRCMP(renameFolder->GetName(), newleafName)) - { - // find the new parent folder - MSG_FolderInfo *parentFolder = NULL; - char *parentOnlineName = XP_STRDUP(names->fNewName); - char *slash = XP_STRRCHR(parentOnlineName,'/'); - if (slash) - { - *slash = 0; - parentFolder = currentContext->mailMaster->FindImapMailFolder(parentOnlineName); - } - else - { - // moving to root level - parentFolder = currentContext->mailMaster->GetImapMailFolderTree(); - } - - // fix up the folder pane - MSG_FolderPane *folderPane = (MSG_FolderPane *) currentContext->mailMaster->FindFirstPaneOfType(MSG_FOLDERPANE); - if (folderPane) - { - // folder pane - folderPane->PerformLegalFolderMove(renameFolder, parentFolder); - } - } - else - { - // do the rename - MSG_Pane *folderPane = currentContext->mailMaster->FindFirstPaneOfType(MSG_FOLDERPANE); - if (folderPane) - ((MSG_FolderPane *) folderPane)->RenameOfflineFolder(renameFolder, newleafName); - } - } -} - -static -XP_Bool NoDescendantsAreVerified(MSG_IMAPFolderInfoMail *parentFolder) -{ - XP_Bool nobodyIsVerified = TRUE; - int numberOfSubfolders = parentFolder->GetNumSubFolders(); - - for (int childIndex=0; nobodyIsVerified && (childIndex < numberOfSubfolders); childIndex++) - { - MSG_IMAPFolderInfoMail *currentChild = (MSG_IMAPFolderInfoMail *) parentFolder->GetSubFolder(childIndex); - nobodyIsVerified = !currentChild->GetIsOnlineVerified() && NoDescendantsAreVerified(currentChild); - } - - return nobodyIsVerified; -} - -static -XP_Bool AllDescendantsAreNoSelect(MSG_IMAPFolderInfoMail *parentFolder) -{ - XP_Bool allDescendantsAreNoSelect = TRUE; - int numberOfSubfolders = parentFolder->GetNumSubFolders(); - - for (int childIndex=0; allDescendantsAreNoSelect && (childIndex < numberOfSubfolders); childIndex++) - { - MSG_IMAPFolderInfoMail *currentChild = (MSG_IMAPFolderInfoMail *) parentFolder->GetSubFolder(childIndex); - allDescendantsAreNoSelect = (currentChild->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOSELECT) && - AllDescendantsAreNoSelect(currentChild); - } - - return allDescendantsAreNoSelect; -} - -static -void UnsubscribeFromAllDescendants(MSG_IMAPFolderInfoMail *parentFolder, MSG_Pane *pane) -{ - int numberOfSubfolders = parentFolder->GetNumSubFolders(); - - for (int childIndex=0; childIndex < numberOfSubfolders; childIndex++) - { - MSG_IMAPFolderInfoMail *currentChild = (MSG_IMAPFolderInfoMail *) parentFolder->GetSubFolder(childIndex); - char *unsubscribeUrl = CreateIMAPUnsubscribeMailboxURL(currentChild->GetHostName(), currentChild->GetOnlineName()); // unsubscribe from child - if (unsubscribeUrl) - { - MSG_UrlQueue::AddUrlToPane(unsubscribeUrl, NULL, pane); - XP_FREE(unsubscribeUrl); - } - UnsubscribeFromAllDescendants(currentChild, pane); // unsubscribe from its children - } -} - -static -void DeleteNonVerifiedImapFolders(MSG_FolderInfo* parentFolder, - MSG_FolderPane *folderPane,// can be null - MSG_Pane **url_pane) -{ - XP_Bool autoUnsubscribeFromNoSelectFolders = TRUE; - PREF_GetBoolPref("mail.imap.auto_unsubscribe_from_noselect_folders", &autoUnsubscribeFromNoSelectFolders); - int numberOfSubFolders = parentFolder->GetNumSubFolders(); - for (int folderIndex = 0; folderIndex < numberOfSubFolders; ) - { - MSG_FolderInfo* currentFolder = parentFolder->GetSubFolder(folderIndex); - if (currentFolder && (currentFolder->GetType() == FOLDER_IMAPMAIL)) - { - MSG_IMAPFolderInfoMail *currentImapFolder = (MSG_IMAPFolderInfoMail *) currentFolder; - - MSG_IMAPFolderInfoMail *parentImapFolder = (parentFolder->GetType() == FOLDER_IMAPMAIL) ? - (MSG_IMAPFolderInfoMail *) parentFolder : - (MSG_IMAPFolderInfoMail *)NULL; - - // if the parent is the imap container or an imap folder whose children were listed, then this bool is true. - // We only delete .snm files whose parent's children were listed - XP_Bool parentChildrenWereListed = (parentImapFolder == NULL) || - (LL_CMP(parentImapFolder->GetTimeStampOfLastList(), >= , IMAP_GetTimeStampOfNonPipelinedList())); - - MSG_IMAPHost *imapHost = currentImapFolder->GetIMAPHost(); -#ifdef DEBUG_chrisf - XP_ASSERT(imapHost); -#endif - XP_Bool usingSubscription = imapHost ? imapHost->GetIsHostUsingSubscription() : TRUE; - XP_Bool folderIsNoSelectFolder = (currentImapFolder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOSELECT); - XP_Bool shouldDieBecauseNoSelect = usingSubscription ? - (folderIsNoSelectFolder ? (NoDescendantsAreVerified(currentImapFolder) || AllDescendantsAreNoSelect(currentImapFolder)): FALSE) - : FALSE; - - if (shouldDieBecauseNoSelect || - ((usingSubscription ? TRUE : parentChildrenWereListed) && !currentImapFolder->GetIsOnlineVerified() && NoDescendantsAreVerified(currentImapFolder))) - { - // This folder is going away. - // Give notification so that folder menus can be rebuilt. - if (*url_pane) - { - XPPtrArray referringPanes; - uint32 total; - - (*url_pane)->GetMaster()->FindPanesReferringToFolder(currentFolder,&referringPanes); - total = referringPanes.GetSize(); - for (int i=0; i < total;i++) - { - MSG_Pane *currentPane = (MSG_Pane *) referringPanes.GetAt(i); - if (currentPane) - { - if (currentPane->GetFolder() == currentFolder) - { - currentPane->SetFolder(NULL); - FE_PaneChanged(currentPane, TRUE, MSG_PaneNotifyFolderDeleted, (uint32)currentFolder); - } - } - } - - FE_PaneChanged(*url_pane, TRUE, MSG_PaneNotifyFolderDeleted, (uint32)currentFolder); - - // If we are running the IMAP subscribe upgrade, and we are deleting the folder that we'd normally - // try to load after the process completes, then tell the pane not to load that folder. - if (((MSG_ThreadPane *)(*url_pane))->GetIMAPUpgradeFolder() == currentFolder) - ((MSG_ThreadPane *)(*url_pane))->SetIMAPUpgradeFolder(NULL); - - if ((*url_pane)->GetFolder() == currentFolder) - *url_pane = NULL; - - - if (shouldDieBecauseNoSelect && autoUnsubscribeFromNoSelectFolders && usingSubscription) - { - char *unsubscribeUrl = CreateIMAPUnsubscribeMailboxURL(imapHost->GetHostName(), currentImapFolder->GetOnlineName()); - if (unsubscribeUrl) - { - if (url_pane) - MSG_UrlQueue::AddUrlToPane(unsubscribeUrl, NULL, *url_pane); - else if (folderPane) - MSG_UrlQueue::AddUrlToPane(unsubscribeUrl, NULL, folderPane); -#ifdef DEBUG_chrisf - else XP_ASSERT(FALSE); -#endif - XP_FREE(unsubscribeUrl); - } - - if (AllDescendantsAreNoSelect(currentImapFolder) && (currentImapFolder->GetNumSubFolders() > 0)) - { - // This folder has descendants, all of which are also \NoSelect. - // We'd like to unsubscribe from all of these as well. - if (url_pane) - UnsubscribeFromAllDescendants(currentImapFolder, *url_pane); - else if (folderPane) - UnsubscribeFromAllDescendants(currentImapFolder, folderPane); - } - - } - } - else - { -#ifdef DEBUG_chrisf - XP_ASSERT(FALSE); -#endif - } - - parentFolder->PropagateDelete(&currentFolder); // currentFolder is null on return - numberOfSubFolders--; - folderIndex--; - } - else - { - if (currentFolder->HasSubFolders()) - DeleteNonVerifiedImapFolders(currentFolder, folderPane, url_pane); - } - } - folderIndex++; // not in for statement because we modify it - } -} - - -static void DeleteNonVerifiedExitFunction (URL_Struct *URL_s, int status, MWContext *window_id) -{ - if (URL_s->msg_pane) - { - MSG_Master *master = URL_s->msg_pane->GetMaster(); - MSG_Pane *notificationPane = URL_s->msg_pane; - if (notificationPane->GetParentPane() != NULL) - notificationPane = notificationPane->GetParentPane(); - - Net_GetUrlExitFunc *existingExit = URL_s->msg_pane->GetPreImapFolderVerifyUrlExitFunction(); - if (existingExit) - { - URL_s->msg_pane->SetPreImapFolderVerifyUrlExitFunction(NULL); - (existingExit) (URL_s, status, window_id); - } - - if (MSG_Pane::PaneInMasterList(notificationPane)) - { - char *host = NET_ParseURL (URL_s->address, GET_HOST_PART); - - if (host && (status >= 0)) // don't delete non-verified folders if there was some kind of error (such as interruption) - { - // trash any MSG_IMAPFolderInfoMail's for folders that were not online verified - MSG_FolderInfoContainer *imapContainer = master->GetImapMailFolderTreeForHost(host); - MSG_FolderPane *folderPane = (MSG_FolderPane *) master->FindFirstPaneOfType(MSG_FOLDERPANE); - DeleteNonVerifiedImapFolders(imapContainer, folderPane, &notificationPane); - XP_FREE(host); - } - } - } -} - - -extern "C" void ReportMailboxDiscoveryDone(MWContext *currentContext, URL_Struct *URL_s) -{ - XP_ASSERT(currentContext->mailMaster); - - if (currentContext->imapURLPane && (currentContext->imapURLPane->GetPaneType() == MSG_SUBSCRIBEPANE)) - { - // Finished discovering folders for the subscribe pane. - ((MSG_SubscribePane *)(currentContext->imapURLPane))->ReportIMAPFolderDiscoveryFinished(); - } - else - { - // only do this if we're discovering folders for real (i.e. not subscribe UI) - - // if this profile has not yet dealt with the mail.imap.delete_is_move_to_trash pref yet, - // deal with it now. If there is a trash folder change the preference to delete to trash. - if (currentContext->mailMaster) - { - MSG_Prefs *prefs = currentContext->mailMaster->GetPrefs(); - if (!(prefs->GetStartingMailNewsProfileAge() & MSG_IMAP_DELETE_MODEL_UPGRADE_FLAG)) - { - // 0 -> 1 transition is reserved for the imap delete model trick - prefs->SetMailNewsProfileAgeFlag(MSG_IMAP_DELETE_MODEL_UPGRADE_FLAG); - - if (!prefs->IMAPMessageDeleteIsMoveToTrash()) - { - MSG_IMAPFolderInfoContainer *tree = currentContext->mailMaster->GetImapMailFolderTree(); - if (tree) - { - MSG_FolderInfo *trashFolder = NULL; - tree->GetFoldersWithFlag (MSG_FOLDER_FLAG_TRASH, &trashFolder, 1); - if (trashFolder) - { - // so a trash folder exists, lets change the delete model - PREF_SetBoolPref("mail.imap.delete_is_move_to_trash",TRUE); - } - } - } - } - } - - if (URL_s && URL_s->msg_pane && !URL_s->msg_pane->GetPreImapFolderVerifyUrlExitFunction()) - { - URL_s->msg_pane->SetPreImapFolderVerifyUrlExitFunction(URL_s->pre_exit_fn); - URL_s->pre_exit_fn = DeleteNonVerifiedExitFunction; - } - - XP_ASSERT(currentContext->imapURLPane); - if (currentContext->imapURLPane) - currentContext->imapURLPane->SetNumberOfNewImapMailboxes(0); - - // Go through folders and find if there are still any that are left unverified. - // If so, manually LIST them to see if we can find out any info about them. - char *hostName = NET_ParseURL(URL_s->address, GET_HOST_PART); - if (hostName && currentContext->mailMaster && currentContext->imapURLPane) - { - MSG_FolderInfoContainer *hostContainerInfo = currentContext->mailMaster->GetImapMailFolderTreeForHost(hostName); - MSG_IMAPFolderInfoContainer *hostInfo = hostContainerInfo ? hostContainerInfo->GetIMAPFolderInfoContainer() : (MSG_IMAPFolderInfoContainer *)NULL; - if (hostInfo) - { - // for each folder - - int32 numberOfUnverifiedFolders = hostInfo->GetUnverifiedFolders(NULL, 0); - if (numberOfUnverifiedFolders > 0) - { - MSG_IMAPFolderInfoMail **folderList = (MSG_IMAPFolderInfoMail **)XP_ALLOC(sizeof(MSG_IMAPFolderInfoMail*) * numberOfUnverifiedFolders); - if (folderList) - { - int32 numUsed = hostInfo->GetUnverifiedFolders(folderList, numberOfUnverifiedFolders); - for (int32 k = 0; k < numUsed; k++) - { - MSG_IMAPFolderInfoMail *currentFolder = folderList[k]; - if ((currentFolder->GetNumSubFolders() > 0) && !NoDescendantsAreVerified(currentFolder)) - { - // If there are no subfolders and this is unverified, we don't want to run - // this url. That is, we want to undiscover the folder. - // If there are subfolders and no descendants are verified, we want to - // undiscover all of the folders. - // Only if there are subfolders and at least one of them is verified do we want - // to refresh that folder's flags, because it won't be going away. - char *url = CreateIMAPListFolderURL(hostName, currentFolder->GetOnlineName()); - if (url) - { - MSG_UrlQueue::AddUrlToPane(url, NULL, currentContext->imapURLPane); - XP_FREE(url); - } - } - } - XP_FREE(folderList); - } - } - } - XP_FREE(hostName); - } - else - { - XP_ASSERT(FALSE); - } - } - -} - - - -extern "C" void ReportSuccessOfOnlineCopy(MWContext *currentContext, enum ImapOnlineCopyState copyState) -{ - if (currentContext->msgCopyInfo) - { - currentContext->msgCopyInfo->imapOnLineCopyState = copyState; - MSG_FinishCopyingMessages(currentContext); - } - - if (copyState == kFailedCopy) - FE_Alert(currentContext, XP_GetString(MK_MSG_ONLINE_COPY_FAILED)); - if (copyState == kFailedDelete) - FE_Alert(currentContext, XP_GetString(MK_MSG_ONLINE_MOVE_FAILED)); -} - -extern "C" void ReportSuccessOfChildMailboxDiscovery(MWContext *currentContext) -{ - if (!currentContext || !currentContext->imapURLPane) - return; - MSG_Pane *pane = currentContext->imapURLPane; - if (pane->GetPaneType() == MSG_SUBSCRIBEPANE) - { - ((MSG_SubscribePane *)pane)->IMAPChildDiscoverySuccessful(); - } -} - - -extern "C" -void BeginMessageUpload(MWContext *currentContext, - PRFileDesc *ioSocket, - UploadCompleteFunctionPointer *completeFunction, - void *completionFunctionArgument) -{ - msg_move_state *moveState = &currentContext->msgCopyInfo->moveState; - moveState->uploadToIMAPsocket = ioSocket; // this will be detected and the copy will start - moveState->uploadCompleteFunction = completeFunction; - moveState->uploadCompleteArgument = completionFunctionArgument; -} - - -extern "C" XP_Bool MSG_ShouldUpgradeToIMAPSubscription(MSG_Master *mast) -{ - MSG_Prefs *prefs = mast->GetPrefs(); - XP_ASSERT(prefs); - if (prefs) - { - int32 profileAge = prefs->GetStartingMailNewsProfileAge(); - if (profileAge & MSG_IMAP_SUBSCRIBE_UPGRADE_FLAG) // we've upgraded to subscription already - return FALSE; - else - return TRUE; - } - else - return FALSE; -} - -extern "C" void MSG_ReportSuccessOfUpgradeToIMAPSubscription(MWContext *context, enum EIMAPSubscriptionUpgradeState *state) -{ - XP_ASSERT(context->mailMaster); - - if (!context->mailMaster) - return; - - if (*state == kBringUpSubscribeUI) - { - // force it to bring up the subscribe UI - context->mailMaster->TryUpgradeToIMAPSubscription(context, TRUE, NULL, NULL); - } - else // write out the prefs, all done! - { - context->mailMaster->SetIMAPSubscriptionUpgradedPrefs(); - } - - // storage now owned by us - FREEIF(state); -} - -extern "C" XP_Bool MSG_GetFolderNeedsSubscribing(MSG_FolderInfo *folder) -{ - if (folder) - { - MSG_IMAPFolderInfoMail *imapInfo = folder->GetIMAPFolderInfoMail(); - if (imapInfo) - return imapInfo->GetFolderNeedsSubscribing(); - else - return FALSE; - } - else - return FALSE; -} - -extern "C" XP_Bool MSG_GetFolderNeedsACLListed(MSG_FolderInfo *folder) -{ - if (folder) - { - MSG_IMAPFolderInfoMail *imapInfo = folder->GetIMAPFolderInfoMail(); - if (imapInfo) - return imapInfo->GetFolderNeedsACLListed(); - else - return FALSE; - } - else - return FALSE; -} - -extern "C" void -MSG_AddFolderRightsForUser(MSG_Master *master, const char *hostName, const char*mailboxName, - const char *userName, const char *rights) -{ - - MSG_IMAPFolderInfoMail *fi = master->FindImapMailFolder(hostName, mailboxName, NULL, FALSE); - if (fi) - { - fi->AddFolderRightsForUser(userName, rights); - } - else - { - // we don't have info about this folder... maybe it's an unsolicited response? probably not. - XP_ASSERT(FALSE); - } -} - -extern "C" void -MSG_ClearFolderRightsForFolder(MSG_Master *master, const char *hostName, const char *mailboxName) -{ - MSG_IMAPFolderInfoMail *fi = master->FindImapMailFolder(hostName, mailboxName, NULL, FALSE); - if (fi) - { - fi->ClearAllFolderACLRights(); - } - else - { - // we don't have info about this folder... maybe it's an unsolicited response? probably not. - XP_ASSERT(FALSE); - } -} - -extern "C" void -MSG_RefreshFolderRightsViewForFolder(MSG_Master *master, const char *hostName, const char *mailboxName) -{ - MSG_IMAPFolderInfoMail *fi = master->FindImapMailFolder(hostName, mailboxName, NULL, FALSE); - if (fi) - { - fi->RefreshFolderACLRightsView(); - } - else - { - // we don't have info about this folder... maybe it's an unsolicited response? probably not. - XP_ASSERT(FALSE); - } -} - - -/* --------------------------------------------------------------- -MSG_IMAPFolderInfoContainer --------------------------------------------------------------- - */ - -MSG_IMAPFolderInfoContainer::MSG_IMAPFolderInfoContainer (const char *name, uint8 depth, MSG_IMAPHost *host, MSG_Master *master) -: MSG_FolderInfoContainer (name, depth, MSG_FolderInfoMail::CompareFolders) -{ - m_prettyName = NULL; - m_flags |= MSG_FOLDER_FLAG_MAIL | MSG_FOLDER_FLAG_IMAPBOX | MSG_FOLDER_FLAG_IMAP_SERVER; - m_host = host; - m_foldersNeedUpdating = FALSE; - m_master = master; -} - -const char *MSG_IMAPFolderInfoContainer::GetPrettyName() -{ - if (!m_prettyName) - { - m_prettyName = m_host->GetPrettyName(); - if (!m_prettyName) - m_prettyName = PR_smprintf (XP_GetString(MK_MSG_IMAP_CONTAINER_NAME), GetName()); - } - return m_prettyName; -} - -FolderType MSG_IMAPFolderInfoContainer::GetType() -{ - return FOLDER_IMAPSERVERCONTAINER; -} - -XP_Bool -MSG_IMAPFolderInfoContainer::IsDeletable() -{ - return TRUE; -} - - -MSG_IMAPFolderInfoMail *MSG_IMAPFolderInfoContainer::FindImapMailOnline(const char* onlineServerName, const char *owner, XP_Bool createIfMissing) -{ - MSG_IMAPFolderInfoMail *thePrize = NULL; - char *ourOnlineServerName = XP_STRDUP(onlineServerName); - XP_ASSERT(ourOnlineServerName); - if (!ourOnlineServerName) - return NULL; - - if (owner && *owner) - { - // if there was an owner of this folder specified in the URL - if (!XP_STRCMP(owner, m_host->GetUserName())) - { - // the owner is us. Prepend the personal namespace, if it's not INBOX (protocol-defined) - if (XP_STRCASECMP(onlineServerName, "INBOX")) - { - const char *prefix = m_host->GetDefaultNamespacePrefixOfType(kPersonalNamespace); - if (prefix) - { - ourOnlineServerName = PR_smprintf("%s%s", prefix, onlineServerName); - } - } - } - else - { - // the owner is not us. Prepend the other users namespace - const char *prefix = m_host->GetDefaultNamespacePrefixOfType(kOtherUsersNamespace); - if (prefix) - { - ourOnlineServerName = PR_smprintf("%s%s%c%s", prefix, owner, prefix[XP_STRLEN(prefix)-1], onlineServerName); - } - } - } - - int numberOfChildren = GetNumSubFolders(); - for (int childIndex = 0; (childIndex < numberOfChildren) && !thePrize; childIndex++) - { - MSG_IMAPFolderInfoMail *currentChild = (MSG_IMAPFolderInfoMail *) GetSubFolder(childIndex); - thePrize = currentChild->FindImapMailOnline(ourOnlineServerName); - } - - if (!thePrize && createIfMissing) - { - mailbox_spec *createdSpec = (mailbox_spec *) XP_ALLOC( sizeof(mailbox_spec)); - if (createdSpec) - { - createdSpec->folderSelected = FALSE; - createdSpec->hierarchySeparator = '/'; // we don't know anything about this folder yet. Try '/'. - createdSpec->allocatedPathName = XP_STRDUP(ourOnlineServerName); - createdSpec->hostName = XP_STRDUP(GetHostName()); - createdSpec->flagState = NULL; - createdSpec->discoveredFromLsub = FALSE; - createdSpec->box_flags = kNoselect; // default, until we've discovered otherwise - createdSpec->onlineVerified = FALSE; - - DiscoverIMAPMailbox(createdSpec, m_master, NULL, TRUE); - - thePrize = FindImapMailOnline(ourOnlineServerName, NULL, FALSE); // don't try to create it again - - if (thePrize) - thePrize->SetFolderNeedsSubscribing(TRUE); - } - } - - FREEIF(ourOnlineServerName); - - return thePrize; -} - -char *MSG_IMAPFolderInfoContainer::BuildUrl (MessageDB * /* db */, MessageKey /* key */) -{ - return PR_smprintf("%s//%s", "IMAP:", GetHostName()); -} - -XP_Bool MSG_IMAPFolderInfoContainer::GetAdminUrl(MWContext *context, MSG_AdminURLType type) -{ - return m_host->RunAdminURL(context, this, type); -} -XP_Bool MSG_IMAPFolderInfoContainer::HaveAdminUrl(MSG_AdminURLType type) -{ - return m_host->HaveAdminURL(type); -} - -int32 MSG_IMAPFolderInfoContainer::GetUnverifiedFolders(MSG_IMAPFolderInfoMail** result, - int32 resultsize) -{ - int num = 0; - MSG_IMAPFolderInfoMail *folder = NULL; - for (int i=0; i < m_subFolders->GetSize(); i++) { - folder = (MSG_IMAPFolderInfoMail*) m_subFolders->GetAt(i); - num += folder->GetUnverifiedFolders(result + num, resultsize - num); - } - return num; -} - -XP_Bool MSG_IMAPFolderInfoMail::DeleteIsMoveToTrash() -{ - return m_host->GetDeleteIsMoveToTrash(); -} - -XP_Bool MSG_IMAPFolderInfoMail::ShowDeletedMessages() -{ - return (m_host->GetIMAPDeleteModel() == MSG_IMAPDeleteIsIMAPDelete); -} - -#ifdef FE_SetBiffInfoDefined // only Win32 has the stand-alone biff for now - // to enable this on other platforms, simply add them to the - // #ifdef around FE_SetBiffInfo in msgcom.h - // and implement FE_SetBiffInfo in the FE - - -void UpdateStandAloneIMAPBiff(const IDArray& keysToFetch) -{ - // there are new keys to fetch here - // if this is the INBOX, we want to record the highest UID - // we've ever seen for purposes of the stand-alone biff - // affectedDB->m_dbFolderInfo->m_LastMessageUID; - uint32 highWaterUID = 0; - static const char szHighWaterKey[] = "IMAPHighWaterUID"; - uint32 total = keysToFetch.GetSize(); - - for (uint32 fetchIndex = 0; fetchIndex < total; fetchIndex++) - { - if (keysToFetch[fetchIndex] > highWaterUID) - highWaterUID = keysToFetch[fetchIndex]; - } - if (highWaterUID != 0) - { - FE_SetBiffInfo(MSG_IMAPHighWaterMark, highWaterUID); - } -} - -#else - -void UpdateStandAloneIMAPBiff(const IDArray& /*keysToFetch*/) -{ -} - -#endif // #ifdef FE_SetBiffInfoDefined - -MsgERR MSG_IMAPFolderInfoContainer::Adopt (MSG_FolderInfo *srcFolder, int32 *pOutPos) -{ - MsgERR err = eSUCCESS; - XP_ASSERT (srcFolder->GetType() == FOLDER_IMAPMAIL); // we can only adopt imap folders msgfinfo.h - MSG_FolderInfoMail *mailFolder = (MSG_FolderInfoMail*) srcFolder; - - if (srcFolder == this) - return MK_MSG_CANT_COPY_TO_SAME_FOLDER; - - if (ContainsChildNamed(mailFolder->GetName())) - return MK_MSG_FOLDER_ALREADY_EXISTS; - - // Recurse the tree to adopt srcFolder's children - err = mailFolder->PropagateAdopt (m_host->GetLocalDirectory(), m_depth); - // Add the folder to our tree in the right sorted position - if (eSUCCESS == err) - { - XP_ASSERT(m_subFolders->FindIndex(0, srcFolder) == -1); - *pOutPos = m_subFolders->Add (srcFolder); -// m_subFolders.InsertAt (0, srcFolder); -// m_subFolders.QuickSort (MSG_FolderInfoMail::CompareFolders); -// *pOutPos = m_subFolders.FindIndex (0, srcFolder); - } - - return err; -} - -MSG_IMAPHost *MSG_IMAPFolderInfoContainer::GetIMAPHost() {return m_host;} - -const char* MSG_IMAPFolderInfoContainer::GetHostName() -{ - return (m_host) ? m_host->GetHostName() : GetMaster()->GetPrefs()->GetPopHost(); -} - - -MSG_IMAPFolderInfoContainer::~MSG_IMAPFolderInfoContainer () -{ - FREEIF(m_prettyName); -} - -MSG_IMAPFolderInfoContainer *MSG_IMAPFolderInfoContainer::GetIMAPFolderInfoContainer() -{ - return this; -} - - -///////// MSG_IMAPFolderACL class /////////////////////////////// - -static int -imap_hash_strcmp (const void *a, const void *b) -{ - return XP_STRCMP ((const char *) a, (const char *) b); -} - -static XP_Bool imap_freehashrights(XP_HashTable /*table*/, const void* key, - void* value, void* /*closure*/) -{ - char *valueChar = (char*) value; - char *userChar = (char*) key; - FREEIF(valueChar); - FREEIF(userChar); - return TRUE; -} - -MSG_IMAPFolderACL::MSG_IMAPFolderACL(MSG_IMAPFolderInfoMail *folder) -{ - XP_ASSERT(folder); - m_folder = folder; - m_rightsHash = XP_HashTableNew(24, XP_StringHash, imap_hash_strcmp); - m_aclCount = 0; - BuildInitialACLFromCache(); -} - -MSG_IMAPFolderACL::~MSG_IMAPFolderACL() -{ - XP_MapRemhash(m_rightsHash, imap_freehashrights, NULL); - XP_HashTableDestroy(m_rightsHash); -} - -// We cache most of our own rights in the MSG_FOLDER_PREF_* flags -void MSG_IMAPFolderACL::BuildInitialACLFromCache() -{ - char *myrights = 0; - - if (m_folder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAP_ACL_READ) - StrAllocCat(myrights,"r"); - if (m_folder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAP_ACL_STORE_SEEN) - StrAllocCat(myrights,"s"); - if (m_folder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAP_ACL_WRITE) - StrAllocCat(myrights,"w"); - if (m_folder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAP_ACL_INSERT) - StrAllocCat(myrights,"i"); - if (m_folder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAP_ACL_POST) - StrAllocCat(myrights,"p"); - if (m_folder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAP_ACL_CREATE_SUBFOLDER) - StrAllocCat(myrights,"c"); - if (m_folder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAP_ACL_DELETE) - StrAllocCat(myrights,"d"); - if (m_folder->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAP_ACL_ADMINISTER) - StrAllocCat(myrights,"a"); - - if (myrights && *myrights) - SetFolderRightsForUser(NULL, myrights); - FREEIF(myrights); -} - -void MSG_IMAPFolderACL::UpdateACLCache() -{ - if (GetCanIReadFolder()) - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() | MSG_FOLDER_PREF_IMAP_ACL_READ); - else - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() & ~MSG_FOLDER_PREF_IMAP_ACL_READ); - - if (GetCanIStoreSeenInFolder()) - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() | MSG_FOLDER_PREF_IMAP_ACL_STORE_SEEN); - else - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() & ~MSG_FOLDER_PREF_IMAP_ACL_STORE_SEEN); - - if (GetCanIWriteFolder()) - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() | MSG_FOLDER_PREF_IMAP_ACL_WRITE); - else - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() & ~MSG_FOLDER_PREF_IMAP_ACL_WRITE); - - if (GetCanIInsertInFolder()) - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() | MSG_FOLDER_PREF_IMAP_ACL_INSERT); - else - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() & ~MSG_FOLDER_PREF_IMAP_ACL_INSERT); - - if (GetCanIPostToFolder()) - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() | MSG_FOLDER_PREF_IMAP_ACL_POST); - else - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() & ~MSG_FOLDER_PREF_IMAP_ACL_POST); - - if (GetCanICreateSubfolder()) - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() | MSG_FOLDER_PREF_IMAP_ACL_CREATE_SUBFOLDER); - else - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() & ~MSG_FOLDER_PREF_IMAP_ACL_CREATE_SUBFOLDER); - - if (GetCanIDeleteInFolder()) - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() | MSG_FOLDER_PREF_IMAP_ACL_DELETE); - else - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() & ~MSG_FOLDER_PREF_IMAP_ACL_DELETE); - - if (GetCanIAdministerFolder()) - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() | MSG_FOLDER_PREF_IMAP_ACL_ADMINISTER); - else - m_folder->SetFolderPrefFlags(m_folder->GetFolderPrefFlags() & ~MSG_FOLDER_PREF_IMAP_ACL_ADMINISTER); -} - -XP_Bool MSG_IMAPFolderACL::SetFolderRightsForUser(const char *userName, const char *rights) -{ - XP_Bool rv = FALSE; - const char *myUserName = m_folder->GetIMAPHost()->GetUserName(); - char *ourUserName = NULL; - - if (!userName) - ourUserName = XP_STRDUP(myUserName); - else - ourUserName = XP_STRDUP(userName); - - char *rightsWeOwn = XP_STRDUP(rights); - if (rightsWeOwn && ourUserName) - { - char *oldValue = (char *)XP_Gethash(m_rightsHash, ourUserName, NULL); - if (oldValue) - { - XP_FREE(oldValue); - XP_Remhash(m_rightsHash, ourUserName); - m_aclCount--; - XP_ASSERT(m_aclCount >= 0); - } - m_aclCount++; - rv = (XP_Puthash(m_rightsHash, ourUserName, rightsWeOwn) == 0); - - } - - if (ourUserName && - (!XP_STRCMP(ourUserName, myUserName) || !XP_STRCMP(ourUserName, IMAP_ACL_ANYONE_STRING))) - { - // if this is setting an ACL for me, cache it in the folder pref flags - UpdateACLCache(); - } - - return rv; -} - -const char *MSG_IMAPFolderACL::GetRightsStringForUser(const char *userName) -{ - if (!userName) - userName = m_folder->GetIMAPHost()->GetUserName(); - - return (const char *)XP_Gethash(m_rightsHash, userName, NULL); -} - -// First looks for individual user; then looks for 'anyone' if the user isn't found. -// Returns defaultIfNotFound, if neither are found. -XP_Bool MSG_IMAPFolderACL::GetFlagSetInRightsForUser(const char *userName, char flag, XP_Bool defaultIfNotFound) -{ - const char *flags = GetRightsStringForUser(userName); - if (!flags) - { - const char *anyoneFlags = GetRightsStringForUser(IMAP_ACL_ANYONE_STRING); - if (!anyoneFlags) - return defaultIfNotFound; - else - return (XP_STRCHR(anyoneFlags, flag) != NULL); - } - else - return (XP_STRCHR(flags, flag) != NULL); -} - -XP_Bool MSG_IMAPFolderACL::GetCanUserLookupFolder(const char *userName) -{ - return GetFlagSetInRightsForUser(userName, 'l', FALSE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanUserReadFolder(const char *userName) -{ - return GetFlagSetInRightsForUser(userName, 'r', FALSE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanUserStoreSeenInFolder(const char *userName) -{ - return GetFlagSetInRightsForUser(userName, 's', FALSE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanUserWriteFolder(const char *userName) -{ - return GetFlagSetInRightsForUser(userName, 'w', FALSE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanUserInsertInFolder(const char *userName) -{ - return GetFlagSetInRightsForUser(userName, 'i', FALSE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanUserPostToFolder(const char *userName) -{ - return GetFlagSetInRightsForUser(userName, 'p', FALSE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanUserCreateSubfolder(const char *userName) -{ - return GetFlagSetInRightsForUser(userName, 'c', FALSE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanUserDeleteInFolder(const char *userName) -{ - return GetFlagSetInRightsForUser(userName, 'd', FALSE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanUserAdministerFolder(const char *userName) -{ - return GetFlagSetInRightsForUser(userName, 'a', FALSE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanILookupFolder() -{ - return GetFlagSetInRightsForUser(NULL, 'l', TRUE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanIReadFolder() -{ - return GetFlagSetInRightsForUser(NULL, 'r', TRUE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanIStoreSeenInFolder() -{ - return GetFlagSetInRightsForUser(NULL, 's', TRUE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanIWriteFolder() -{ - return GetFlagSetInRightsForUser(NULL, 'w', TRUE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanIInsertInFolder() -{ - return GetFlagSetInRightsForUser(NULL, 'i', TRUE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanIPostToFolder() -{ - return GetFlagSetInRightsForUser(NULL, 'p', TRUE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanICreateSubfolder() -{ - return GetFlagSetInRightsForUser(NULL, 'c', TRUE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanIDeleteInFolder() -{ - return GetFlagSetInRightsForUser(NULL, 'd', TRUE); -} - -XP_Bool MSG_IMAPFolderACL::GetCanIAdministerFolder() -{ - return GetFlagSetInRightsForUser(NULL, 'a', TRUE); -} - -// We use this to see if the ACLs think a folder is shared or not. -// We will define "Shared" in 5.0 to mean: -// At least one user other than the currently authenticated user has at least one -// explicitly-listed ACL right on that folder. -XP_Bool MSG_IMAPFolderACL::GetIsFolderShared() -{ - // If we have more than one ACL count for this folder, which means that someone - // other than ourself has rights on it, then it is "shared." - if (m_aclCount > 1) - return TRUE; - - // Or, if "anyone" has rights to it, it is shared. - const char *anyonesRights = (const char *)XP_Gethash(m_rightsHash, IMAP_ACL_ANYONE_STRING, NULL); - - return (anyonesRights != NULL); -} - -XP_Bool MSG_IMAPFolderACL::GetDoIHaveFullRightsForFolder() -{ - return (GetCanIReadFolder() && - GetCanIWriteFolder() && - GetCanIInsertInFolder() && - GetCanIAdministerFolder() && - GetCanICreateSubfolder() && - GetCanIDeleteInFolder() && - GetCanILookupFolder() && - GetCanIStoreSeenInFolder() && - GetCanIPostToFolder()); -} - -// Returns a newly allocated string describing these rights -char *MSG_IMAPFolderACL::CreateACLRightsString() -{ - char *rv = NULL; - - if (GetDoIHaveFullRightsForFolder()) - { - rv = PR_smprintf(XP_GetString(XP_MSG_IMAP_ACL_FULL_RIGHTS)); - } - else - { - if (GetCanIReadFolder()) - { - if (rv) StrAllocCat(rv, ", "); - StrAllocCat(rv, XP_GetString(XP_MSG_IMAP_ACL_READ_RIGHT)); - } - if (GetCanIWriteFolder()) - { - if (rv) StrAllocCat(rv, ", "); - StrAllocCat(rv, XP_GetString(XP_MSG_IMAP_ACL_WRITE_RIGHT)); - } - if (GetCanIInsertInFolder()) - { - if (rv) StrAllocCat(rv, ", "); - StrAllocCat(rv, XP_GetString(XP_MSG_IMAP_ACL_INSERT_RIGHT)); - } - if (GetCanILookupFolder()) - { - if (rv) StrAllocCat(rv, ", "); - StrAllocCat(rv, XP_GetString(XP_MSG_IMAP_ACL_LOOKUP_RIGHT)); - } - if (GetCanIStoreSeenInFolder()) - { - if (rv) StrAllocCat(rv, ", "); - StrAllocCat(rv, XP_GetString(XP_MSG_IMAP_ACL_SEEN_RIGHT)); - } - if (GetCanIDeleteInFolder()) - { - if (rv) StrAllocCat(rv, ", "); - StrAllocCat(rv, XP_GetString(XP_MSG_IMAP_ACL_DELETE_RIGHT)); - } - if (GetCanICreateSubfolder()) - { - if (rv) StrAllocCat(rv, ", "); - StrAllocCat(rv, XP_GetString(XP_MSG_IMAP_ACL_CREATE_RIGHT)); - } - if (GetCanIPostToFolder()) - { - if (rv) StrAllocCat(rv, ", "); - StrAllocCat(rv, XP_GetString(XP_MSG_IMAP_ACL_POST_RIGHT)); - } - if (GetCanIAdministerFolder()) - { - if (rv) StrAllocCat(rv, ", "); - StrAllocCat(rv, XP_GetString(XP_MSG_IMAP_ACL_ADMINISTER_RIGHT)); - } - } - - return rv; -} - - -XP_Bool MSG_IsFolderACLInitialized(MSG_Master *master, const char *folderName, const char *hostName) -{ - MSG_IMAPFolderInfoMail *fi = master->FindImapMailFolder(hostName, folderName, NULL, FALSE); - if (fi) - return (fi->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAP_ACL_RETRIEVED); - else - return FALSE; -} - -extern "C" XP_Bool -MSG_IsFolderNoSelect(MSG_Master *master, const char *folderName, const char *hostName) -{ - MSG_IMAPFolderInfoMail *fi = master->FindImapMailFolder(hostName, folderName, NULL, FALSE); - if (fi) - return (fi->GetFolderPrefFlags() & MSG_FOLDER_PREF_IMAPNOSELECT); - else - return FALSE; -} diff --git a/mozilla/lib/libmsg/msgimap.h b/mozilla/lib/libmsg/msgimap.h deleted file mode 100644 index 8dbf3e964dd..00000000000 --- a/mozilla/lib/libmsg/msgimap.h +++ /dev/null @@ -1,461 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgIMAP_H_ -#define _MsgIMAP_H_ - -#include "msgfinfo.h" - -/* url exit functions that may be called by MSG_ImapLoadFolderUrlQueue::HandleUrlQueueInterrupt */ -void FilteringCompleteExitFunction (URL_Struct *URL_s, int status, MWContext *window_id); -void ImapFolderSelectCompleteExitFunction (URL_Struct *URL_s, int status, MWContext *window_id); - - -// forward declaration -struct msg_FolderParseState; -struct tIMAPUploadInfo; -class MSG_IMAPFolderACL; - -typedef struct xp_HashTable *XP_HashTable; - -class MSG_IMAPFolderInfoMail : public MSG_FolderInfoMail { -public: - static MSG_IMAPFolderInfoContainer *BuildIMAPFolderTree - (MSG_Master *mailMaster, - uint8 depth, - MSG_FolderArray *parentArray); - - static char *CreateMailboxNameFromDbName(const char *dbName); - static int UploadMsgsInFolder(void *uploadInfo, int status); - static void URLFinished(URL_Struct *URL_s, int status, MWContext *window_id); - - static MSG_IMAPFolderInfoMail *CreateNewIMAPFolder(MSG_IMAPFolderInfoMail *parentFolder, MWContext *currentContext, - const char *mailboxName, const char *onlineLeafName, uint32 mailboxFlags, MSG_IMAPHost *host); - MSG_IMAPFolderInfoMail(char* pathname, - MSG_Master *mailMaster, - uint8 depth, uint32 flags, MSG_IMAPHost *host); - virtual ~MSG_IMAPFolderInfoMail(); - - virtual void SetPrefFolderFlag(); - - virtual MSG_IMAPFolderInfoMail *GetIMAPFolderInfoMail() ; - virtual MsgERR OnCloseFolder () ; - virtual FolderType GetType(); - virtual char *BuildUrl (MessageDB *db, MessageKey key); - - virtual char *SetupHeaderFetchUrl(MSG_Pane *pane, MessageDB *db, MessageKey startSeq, MessageKey endSeq); - virtual char *SetupMessageBodyFetchUrl(MSG_Pane *pane, MessageDB *db, IDArray &keysToDownload); - virtual int SaveFlaggedMessagesToDB(MSG_Pane *pane, MessageDB *db, IDArray &keysToSave); - virtual int SaveMessagesToDB(MSG_Pane *pane, MessageDB *db, IDArray &keysToSave); - virtual MsgERR BeginCopyingMessages (MSG_FolderInfo * dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - MSG_UrlQueue *urlQueue, - int32 srcCount, - MessageCopyInfo * copyInfo); - - - virtual int FinishCopyingMessages (MWContext * context, - MSG_FolderInfo * srcFolder, - MSG_FolderInfo * dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - msg_move_state * state); - - - virtual void AddToSummaryMailDB(const IDArray &keysToFetch, - MSG_Pane *url_pane, - mailbox_spec *boxSpec); - - virtual int HandleBlockForDataBaseCreate(MSG_Pane *pane, const char *str, - int32 len, - int32 msgUID, - uint32 msgSize); - virtual void FinishStreamForDataBaseCreate(); - virtual void AllFolderHeadersAreDownloaded(MSG_Pane *urlPane, TNavigatorImapConnection *imapConnection); - virtual void AbortStreamForDataBaseCreate (int status); - - virtual void StartUpdateOfNewlySelectedFolder(MSG_Pane *paneOfCommand, - XP_Bool loadingFolder, // only set by msgtpane::loadfolder - MSG_UrlQueue *urlQueueForSelectURL, - const IDArray *keysToUndoRedo = NULL, - XP_Bool undo = FALSE, - XP_Bool playbackOfflineEvents = TRUE, - Net_GetUrlExitFunc *selectExitFunction = NULL); - - virtual void UpdateNewlySelectedFolder(mailbox_spec *adoptedBoxSpec, - MSG_Pane *url_pane); - - virtual void UpdateFolderStatus(mailbox_spec *adoptedBoxSpec, - MSG_Pane *url_pane); - - virtual MsgERR Rename (const char *newName); - virtual MsgERR ParentRenamed (const char * parentOnlineName); - - - const char* GetOnlineName(); // Name of this folder online - void SetOnlineName(const char *name); - - virtual const char* GetName(); // Name of this folder (as presented to user). - virtual const char* GetHostName(); // host name to create imap urls with. - MSG_IMAPFolderInfoMail *FindImapMailOnline(const char* onlineServerName); - virtual MSG_IMAPHost *GetIMAPHost() ; - MSG_IMAPFolderInfoContainer *GetIMAPContainer() ; - // hierarchy separating character on the server - char GetOnlineHierarchySeparator(); - void SetOnlineHierarchySeparator(char separator); - - enum eMessageDownLoadState { - kNoDownloadInProgress, - kDownLoadingAllMessageHeaders, - kDownLoadMessageForCopy, - kDownLoadMessageForOfflineDB - } ; - - void SetDownloadState(eMessageDownLoadState state) { m_DownLoadState = state; } - // depending on the state of m_DownLoadState, create the stream that will catch - // the upcoming message download. - NET_StreamClass *CreateDownloadMessageStream(ImapActiveEntry *ce,uint32 size, - const char *content_type, XP_Bool content_modified); - - - // used in copying messages - virtual int CreateMessageWriteStream(msg_move_state *state, uint32 msgSize, uint32 msg_flags); - // only makes sense if CreateMessageWriteStream worked - virtual XP_Bool MessageWriteStreamIsReadyForWrite(msg_move_state *state); - virtual uint32 SeekToEndOfMessageStore(msg_move_state *state); - virtual uint32 WriteMessageBuffer(msg_move_state *state, char *buffer, uint32 bytesToWrite, MailMessageHdr *offlineHdr); - virtual void CloseMessageWriteStream(msg_move_state *state); - virtual void SaveMessageHeader(msg_move_state *state, MailMessageHdr *hdr, uint32 messageKey, MessageDB * srcDB = NULL); - - virtual uint32 MessageCopySize(DBMessageHdr *msgHeader, msg_move_state *state); - virtual uint32 WriteBlockToImapServer(DBMessageHdr *msgHeader, //move this header - msg_move_state *state, // track it in this state - MailMessageHdr *newmsgHeader, // offline append? - XP_Bool actuallySendToServer); // false to use for counting - - void UploadMessagesFromFile(MSG_FolderInfoMail *srcFolder, MSG_Pane *sourcePane, MailDB *mailDB); - void FinishUploadFromFile(struct MessageCopyInfo *msgCopyInfo, int status); - virtual void SetIsOnlineVerified(XP_Bool verified); - virtual void SetHierarchyIsOnlineVerified(XP_Bool verified); - virtual XP_Bool GetIsOnlineVerified(); - int32 GetUnverifiedFolders(MSG_IMAPFolderInfoMail** result, int32 resultsize); - - MsgERR DeleteAllMessages(MSG_Pane *paneForDeleteUrl, XP_Bool deleteSubFoldersToo = TRUE); // implements empty trash - void DeleteSpecifiedMessages(MSG_Pane *paneForDeleteUrl, // implements delete from trash - const IDArray &keysToDelete, - MessageKey loadKeyOnExit = MSG_MESSAGEKEYNONE); - - void StoreImapFlags(MSG_Pane *paneForFlagUrl, imapMessageFlagsType flags, XP_Bool addFlags, - const IDArray &keysToFlag, MSG_UrlQueue *urlQueue = NULL); - - void MessagesWereDeleted(MSG_Pane *urlPane, - XP_Bool deleteAllMsgs, - const char *doomedKeyString); - - // store MSG_FLAG_IMAP_DELETED in the specified mailhdr records - void SetIMAPDeletedFlag(MailDB *mailDB, const IDArray &msgids, XP_Bool markDeleted = TRUE); - - void Biff(MWContext *biffContext); // set the biff indicator after comparing this db to online state - - XP_Bool MailCheck(MWContext *biffContext); // the future of biff - - // MSG_FolderInfoMail::Adopt does to much. We already know the - // newFolder pathname and parent sbd exist, so use this during - // imap folder discovery - void LightWeightAdopt(MSG_IMAPFolderInfoMail *newChild); - - // create a string of uids, suitable for passing to imap url create functions - static char *AllocateImapUidString(const IDArray &keys); - static void ParseUidString(char *uidString, IDArray &keys); - // we never compress imap folders - virtual XP_Bool RequiresCleanup(); - virtual void ClearRequiresCleanup(); - - // for syncing with server - void FindKeysToDelete(const IDArray &existingKeys, IDArray &keysToDelete, TImapFlagAndUidState *flagState); - void FindKeysToAdd(const IDArray &existingKeys, IDArray &keysToFetch, TImapFlagAndUidState *flagState); - - // Helper function for undo MoveCopyMessages - XP_Bool UndoMoveCopyMessagesHelper(MSG_Pane *urlPane, const IDArray &keysToUndo, UndoObject *undoObject); - - - // non null if we are current loading this folder in some - // context. This is to prevent loading a message in the same - // context that is synching with the server - MWContext *GetFolderLoadingContext() { return m_LoadingInContext; } - void SetFolderLoadingContext(MWContext *context) { m_LoadingInContext = context; } - - void NotifyFolderLoaded(MSG_Pane *urlPane, XP_Bool loadWasInterrupted = FALSE); - - virtual MsgERR ReadDBFolderInfo (XP_Bool force = FALSE); - - virtual MsgERR ReadFromCache (char *); - virtual MsgERR WriteToCache (XP_File f); - - struct mailbox_spec *GetMailboxSpec() {return &m_mailboxSpec;} - /* used to prevent recursive listing of mailboxes during discovery */ - int64 GetTimeStampOfLastList() { return m_TimeStampOfLastList; } - void SetTimeStampOfLastListNow(); - - /* used to determine if we should store subsequent imap urls in the offline db to avoid interrupting - the current url. - */ - void SetRunningIMAPUrl(MSG_RunningState runningIMAPUrl); - MSG_RunningState GetRunningIMAPUrl() ; - - void SetHasOfflineEvents(XP_Bool hasOfflineEvents); - XP_Bool GetHasOfflineEvents(); - - virtual XP_Bool CanBeInFolderPane () { return m_canBeInFolderPane; } - void AllowInFolderPane (XP_Bool allowed) { m_canBeInFolderPane = allowed; } - - virtual XP_Bool GetAdminUrl(MWContext *context, MSG_AdminURLType type); - virtual XP_Bool HaveAdminUrl(MSG_AdminURLType type); - const char *AdminUrl() {return m_adminUrl;} - virtual XP_Bool DeleteIsMoveToTrash(); - virtual XP_Bool ShowDeletedMessages(); - - virtual XP_Bool GetFolderNeedsSubscribing() { return m_folderNeedsSubscribing; } - virtual void SetFolderNeedsSubscribing(XP_Bool needsSubscribing) { m_folderNeedsSubscribing = needsSubscribing; } - virtual XP_Bool GetFolderNeedsACLListed() { return m_folderNeedsACLListed; } - virtual void SetFolderNeedsACLListed(XP_Bool needsACL) { m_folderNeedsACLListed = needsACL; } - - virtual void AddFolderRightsForUser(const char *userName, const char *rights); - virtual void ClearAllFolderACLRights(); - virtual void RefreshFolderACLRightsView(); - - void SetAdminUrl(const char *adminUrl); - virtual const char *GetFolderOwnerUserName(); // gets the username of the owner of this folder - virtual const char *GetOwnersOnlineFolderName(); // gets the online name of this folder, relative to the personal namespace - // of its owner; returns the unmodified online name if there is no owner - - virtual XP_Bool GetCanIOpenThisFolder(); // returns TRUE if I can open (select) this folder - virtual XP_Bool GetCanDropFolderIntoThisFolder(); // returns TRUE if another folder can be dropped into this folder - virtual XP_Bool GetCanDropMessagesIntoFolder(); // returns TRUE if messages can be dropped into this folder - virtual XP_Bool GetCanDragMessagesFromThisFolder(); // returns TRUE if messages can be dragged from of this folder (but not deleted) - virtual XP_Bool GetCanDeleteMessagesInFolder(); // returns TRUE if we can delete messages in this folder - - virtual char *CreateACLRightsStringForFolder(); - virtual char *GetTypeNameForFolder(); // Allocates and returns a string naming this folder's type - // i.e. "Personal Folder" - // The caller should free the returned value. - virtual char *GetTypeDescriptionForFolder(); // Allocates and returns a string describing this folder's type - // i.e. "This is a mail folder shared by user 'bob'" - // The caller should free the returned value. - - virtual XP_Bool AllowsPosting(); - - static MSG_IMAPFolderInfoContainer* BuildIMAPServerTree(MSG_Master *mailMaster, const char *imapServerName, MSG_FolderArray * parentArray, - XP_Bool errorReturnRootContainerOnly, int depth); - - virtual void RememberPassword(const char *password); - virtual char *GetRememberedPassword(); - virtual XP_Bool UserNeedsToAuthenticateForFolder(XP_Bool displayOnly); - virtual const char *GetUserName(); - -protected: - // helper function for SetPrefFolderFlag() method - void MatchPathWithPersonalNamespaceThenSetFlag(const char *path, - const char *personalNameSpace, - uint32 folderFlag, - const char *onlineName); - - static void ReportErrorFromBuildIMAPFolderTree(MSG_Master *mailMaster, const char *fileName, XP_FileType filetype); - void NotifyFetchAnyNeededBodies(MSG_Pane *urlPane, TNavigatorImapConnection *imapConnection, MailDB *folderDb); - - virtual MsgERR BeginOfflineCopy (MSG_FolderInfo * dstFolder, - MessageDB *sourceDB, - IDArray *srcArray, - int32 srcCount, - msg_move_state * state); - - DBOfflineImapOperation *GetClearedOriginalOp(DBOfflineImapOperation *op, MailDB **originalDB); - DBOfflineImapOperation *GetOriginalOp(DBOfflineImapOperation *op, MailDB **originalDB); - - MsgERR OfflineImapMsgToLocalFolder(MailMessageHdr *sourceHeader, MSG_FolderInfoMail *destFolder,MessageDB *sourceDB,msg_move_state *state); - - // create a fixed size array of uids. Used for downloading bodies - uint32 *AllocateImapUidArray(const IDArray &keys); - - // used the first time I know that my db is in sync with server - void OpenThreadView(MailDB *mailDB,mailbox_spec *adoptedBoxSpec); - - void QueueUpImapFilterUrls(MSG_UrlQueue *urlQueue); - void GetFilterSearchUrlString(MSG_Filter *currenFilter, char **imapUrlString); - IDArray *CreateFilterIDArray(const char *imapSearchResultString, - int &numberOfHits); - void LogRuleHit(MSG_Filter *filter, DBMessageHdr *msgHdr , MWContext *context); - - static XP_Bool StaticShouldIgnoreFile(const char *fileName); - virtual XP_Bool ShouldIgnoreFile (const char *fileName); - - char *CreateOnlineVersionOfLocalPathString(MSG_Prefs &prefs,const char *localPath) const; - MSG_IMAPFolderACL *GetFolderACL(); - -private: - XP_Bool m_canBeInFolderPane; - XP_Bool m_FolderIsRoot; - XP_Bool m_VerifiedAsOnlineFolder; - MSG_RunningState m_runningIMAPUrl; - XP_Bool m_requiresCleanup; - XP_Bool m_folderNeedsSubscribing; - XP_Bool m_folderNeedsACLListed; - char *m_ownerUserName; // username of the "other user," as in - // "Other Users' Mailboxes" - - char *m_OnlineFolderName; - char m_OnlineHierSeparator; - - struct mailbox_spec m_mailboxSpec; // most recent mailbox spec for this folder - - // non null if we are current loading this folder in some - // context. This is to prevent loading a message in the same - // context that is synching with the server - MWContext *m_LoadingInContext; - - /* used to prevent recursive listing of mailboxes during discovery */ - int64 m_TimeStampOfLastList; - - XP_Bool m_hasOfflineEvents; - eMessageDownLoadState m_DownLoadState; - struct tIMAPUploadInfo *m_uploadInfo; // for uploading news messages to imap folders - MSG_IMAPHost *m_host; - MSG_IMAPFolderACL *m_folderACL; - char *m_adminUrl; -}; - - -struct tImapFilterClosure { - MSG_IMAPFolderInfoMail *sourceFolder; - int32 filterIndex; - MSG_UrlQueue *urlQueue; - MSG_Pane *filterPane; - MessageDB *sourceDB; -}; - -class MSG_IMAPFolderInfoContainer : public MSG_FolderInfoContainer -{ -public: - MSG_IMAPFolderInfoContainer (const char *name, uint8 depth, MSG_IMAPHost *host, MSG_Master *master); - virtual ~MSG_IMAPFolderInfoContainer (); - - virtual FolderType GetType(); - virtual MSG_IMAPFolderInfoContainer *GetIMAPFolderInfoContainer() ; - - virtual XP_Bool CanCreateChildren () { return TRUE; } - virtual XP_Bool IsDeletable(); - virtual const char *GetPrettyName(); - - virtual char *BuildUrl (MessageDB *db, MessageKey key); - MSG_IMAPFolderInfoMail *FindImapMailOnline(const char* onlineServerName, const char *owner, XP_Bool createIfMissing); - - int32 GetUnverifiedFolders(MSG_IMAPFolderInfoMail** result, int32 resultsize); - - - virtual MSG_IMAPHost *GetIMAPHost(); - virtual const char* GetHostName(); // host name to create imap urls with. - MsgERR Adopt (MSG_FolderInfo *srcFolder, int32 *pOutPos); - virtual XP_Bool GetAdminUrl(MWContext *context, MSG_AdminURLType type); - virtual XP_Bool HaveAdminUrl(MSG_AdminURLType type); - void SetHostNeedsFolderUpdate(XP_Bool needsUpdate) {m_foldersNeedUpdating = needsUpdate; } - XP_Bool GetHostNeedsFolderUpdate() { return m_foldersNeedUpdating; } - -protected: - char *m_prettyName; - MSG_IMAPHost *m_host; - XP_Bool m_foldersNeedUpdating; -}; - - - -// ACLs for this folder. -// Generally, we will try to always query this class when performing -// an operation on the folder. -// If the server doesn't support ACLs, none of this data will be filled in. -// Therefore, we can assume that if we look up ourselves and don't find -// any info (and also look up "anyone") then we have full rights, that is, ACLs don't exist. -class MSG_IMAPFolderACL -{ -public: - MSG_IMAPFolderACL(MSG_IMAPFolderInfoMail *folder); - ~MSG_IMAPFolderACL(); - - XP_Bool SetFolderRightsForUser(const char *userName, const char *rights); - -public: - - // generic for any user, although we might not use them in - // DO NOT use these for looking up information about the currently authenticated user. - // (There are some different checks and defaults we do). - // Instead, use the functions below, GetICan....() - XP_Bool GetCanUserLookupFolder(const char *userName); // Is folder visible to LIST/LSUB? - XP_Bool GetCanUserReadFolder(const char *userName); // SELECT, CHECK, FETCH, PARTIAL, SEARCH, COPY from folder? - XP_Bool GetCanUserStoreSeenInFolder(const char *userName); // STORE SEEN flag? - XP_Bool GetCanUserWriteFolder(const char *userName); // STORE flags other than SEEN and DELETED? - XP_Bool GetCanUserInsertInFolder(const char *userName); // APPEND, COPY into folder? - XP_Bool GetCanUserPostToFolder(const char *userName); // Can I send mail to the submission address for folder? - XP_Bool GetCanUserCreateSubfolder(const char *userName); // Can I CREATE a subfolder of this folder? - XP_Bool GetCanUserDeleteInFolder(const char *userName); // STORE DELETED flag, perform EXPUNGE? - XP_Bool GetCanUserAdministerFolder(const char *userName); // perform SETACL? - - // Functions to find out rights for the currently authenticated user. - - XP_Bool GetCanILookupFolder(); // Is folder visible to LIST/LSUB? - XP_Bool GetCanIReadFolder(); // SELECT, CHECK, FETCH, PARTIAL, SEARCH, COPY from folder? - XP_Bool GetCanIStoreSeenInFolder(); // STORE SEEN flag? - XP_Bool GetCanIWriteFolder(); // STORE flags other than SEEN and DELETED? - XP_Bool GetCanIInsertInFolder(); // APPEND, COPY into folder? - XP_Bool GetCanIPostToFolder(); // Can I send mail to the submission address for folder? - XP_Bool GetCanICreateSubfolder(); // Can I CREATE a subfolder of this folder? - XP_Bool GetCanIDeleteInFolder(); // STORE DELETED flag, perform EXPUNGE? - XP_Bool GetCanIAdministerFolder(); // perform SETACL? - - XP_Bool GetDoIHaveFullRightsForFolder(); // Returns TRUE if I have full rights on this folder (all of the above return TRUE) - - XP_Bool GetIsFolderShared(); // We use this to see if the ACLs think a folder is shared or not. - // We will define "Shared" in 5.0 to mean: - // At least one user other than the currently authenticated user has at least one - // explicitly-listed ACL right on that folder. - - char *CreateACLRightsString(); // Returns a newly allocated string describing these rights - - - - -protected: - const char *GetRightsStringForUser(const char *userName); - XP_Bool GetFlagSetInRightsForUser(const char *userName, char flag, XP_Bool defaultIfNotFound); - void BuildInitialACLFromCache(); - void UpdateACLCache(); - -protected: - XP_HashTable m_rightsHash; // Hash table, mapping username strings to rights strings. - MSG_IMAPFolderInfoMail *m_folder; - uint32 m_aclCount; - -}; - - - -#endif diff --git a/mozilla/lib/libmsg/msglpane.cpp b/mozilla/lib/libmsg/msglpane.cpp deleted file mode 100644 index 0a02412d429..00000000000 --- a/mozilla/lib/libmsg/msglpane.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "errcode.h" - -#include "msglpane.h" - - -struct MSG_LinedPaneStack { - int fecount; - MSG_NOTIFY_CODE code; - MSG_ViewIndex where; - int32 num; -}; - - -MSG_LinedPane::MSG_LinedPane(MWContext* context, MSG_Master* master) -: MSG_Pane(context, master) { -} - -MSG_LinedPane::~MSG_LinedPane() { -#ifdef DEBUG - delete [] m_stack; -#endif -} - - -XP_Bool MSG_LinedPane::IsLinePane() { - return TRUE; -} - - - -void MSG_LinedPane::StartingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num) { -#ifdef DEBUG - if (m_numstack <= m_maxstack) { - m_maxstack = m_numstack + 5; - MSG_LinedPaneStack* tmp = m_stack; - m_stack = new MSG_LinedPaneStack[m_maxstack]; - for (int i=0 ; i<m_numstack ; i++) { - m_stack[i] = tmp[i]; - } - delete [] tmp; - } - m_stack[m_numstack].fecount = m_fecount; - m_stack[m_numstack].code = code; - m_stack[m_numstack].where = where; - m_stack[m_numstack].num = num; - XP_ASSERT(m_numstack == 0 || m_stack[m_numstack-1].fecount == m_fecount); -#endif - m_numstack++; - if (m_disablecount == 0) { - FE_ListChangeStarting(this, m_fecount == 0, code, where, num); - } -} - - -void MSG_LinedPane::EndingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num) { - m_numstack--; -#ifdef DEBUG - XP_ASSERT(m_numstack >= 0); - XP_ASSERT(m_stack[m_numstack].fecount == m_fecount); - XP_ASSERT(m_stack[m_numstack].code == code); - XP_ASSERT(m_stack[m_numstack].where == where); - XP_ASSERT(m_stack[m_numstack].num == num); -#endif - if (m_disablecount == 0) { - FE_ListChangeFinished(this, m_fecount == 0, code, where, num); - } -} - -void MSG_LinedPane::OnFolderChanged(MSG_FolderInfo *folderInfo) -{ - // I believe all FE's support this now... - FE_PaneChanged(this, FALSE, MSG_PaneNotifyFolderInfoChanged, (uint32) folderInfo); -} - - -void MSG_LinedPane::DisableUpdate() -{ - m_disablecount++; -} - -void MSG_LinedPane::EnableUpdate() -{ - m_disablecount--; - XP_ASSERT(m_disablecount >= 0); -} - -XP_Bool MSG_LinedPane::IsValidIndex(MSG_ViewIndex index) -{ - return (XP_Bool) ((index != MSG_VIEWINDEXNONE) && index < (MSG_ViewIndex) GetNumLines()); -} diff --git a/mozilla/lib/libmsg/msglpane.h b/mozilla/lib/libmsg/msglpane.h deleted file mode 100644 index 917053106cd..00000000000 --- a/mozilla/lib/libmsg/msglpane.h +++ /dev/null @@ -1,76 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgLPane_H_ -#define _MsgLPane_H_ - -#include "msgpane.h" - -typedef struct MSG_LinedPaneStack MSG_LinedPaneStack; - -class MSG_LinedPane : public MSG_Pane { -public: - MSG_LinedPane(MWContext* context, MSG_Master* master); - virtual ~MSG_LinedPane(); - - virtual XP_Bool IsLinePane(); - virtual void ToggleExpansion(MSG_ViewIndex line, int32* numchanged) = 0; - virtual int32 ExpansionDelta(MSG_ViewIndex line) = 0; - virtual int32 GetNumLines() = 0; - virtual void StartingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num); - virtual void EndingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num); - virtual void OnFolderChanged(MSG_FolderInfo *); - virtual XP_Bool IsValidIndex(MSG_ViewIndex index); -protected: - virtual void FEStart() { // Starting a call from the FE. - m_fecount++; - } - - virtual void FEEnd() { // Finished a call from the FE. - m_fecount--; - XP_ASSERT(m_fecount >= 0); - } - - virtual void DisableUpdate(); // Don't actually do anything when calling - // StartingUpdate() and EndingUpdate(). - virtual void EnableUpdate(); // OK; StartingUpdate() and EndingUpdate() - // can do things again. - - MSG_LinedPaneStack* m_stack;// Used only when DEBUG is on; helps check - // that calls to StartingUpdate and - // EndingUpdate match up correctly. - - // m_numstack is now in the base class because we use it to know if we're nested - int m_maxstack; - - - int m_fecount; // How many calls we've had to FEStart() - // without a matching call to FEEnd(). - - int m_disablecount; // How many calls we've had to DisableUpdate() - // without a matching call to EnableUpdate(). - -}; - -#endif /* _MsgLPane_H_ */ diff --git a/mozilla/lib/libmsg/msglsrch.cpp b/mozilla/lib/libmsg/msglsrch.cpp deleted file mode 100644 index 1a9c28981f7..00000000000 --- a/mozilla/lib/libmsg/msglsrch.cpp +++ /dev/null @@ -1,2028 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// Implementation of search for LDAP directories -// - -#include "rosetta.h" -#include "msg.h" -#include "xpgetstr.h" -#include "pmsgsrch.h" // private search API -#include "msgutils.h" // for msg_GetURL -#include "dirprefs.h" -#include "libi18n.h" -#include HG77677 -#include "intl_csi.h" - -#ifdef MOZ_LDAP - #define NEEDPROTOS - #define LDAP_REFERRALS - #include "lber.h" - #include "ldap.h" - #include "disptmpl.h" -#endif /* MOZ_LDAP */ - -extern "C" -{ - extern int XP_PROGRESS_CONTACTHOST; - - extern int XP_LDAP_SIZELIMIT_EXCEEDED; - extern int XP_LDAP_SERVER_SIZELIMIT_EXCEEDED; - extern int XP_LDAP_OPEN_ENTRY_FAILED; - extern int XP_LDAP_OPEN_SERVER_FAILED; - extern int XP_LDAP_BIND_FAILED; - extern int XP_LDAP_SEARCH_FAILED; - extern int XP_LDAP_MODIFY_FAILED; - - extern int MK_MSG_SEARCH_STATUS; - extern int XP_ALERT_OFFLINE_MODE_SELECTED; - extern int MK_LDAP_AUTH_PROMPT; -} - - -#ifdef MOZ_LDAP -// This class holds data needed across the modify operations -class LdapModifyBucket -{ -public: - LdapModifyBucket () - { - dnValue = NULL; - modList[0] = &mod; - berValList[0] = &ber; - modList[1] = NULL; - berValList[1] = NULL; - } - ~LdapModifyBucket () - { - MSG_DestroySearchValue (dnValue); - XP_FREE (ber.bv_val); - } - - LDAPMod *modList[2]; - LDAPMod mod; - - struct berval *berValList[2]; - struct berval ber; - MSG_SearchValue *dnValue; -}; -#endif /* MOZ_LDAP */ - - -msg_SearchLdap::msg_SearchLdap (MSG_ScopeTerm *scope, MSG_SearchTermArray &termList) : msg_SearchAdapter (scope, termList) -{ -#ifdef MOZ_LDAP - m_ldap = NULL; - m_message = NULL; - m_modifyBucket = NULL; - m_filter = NULL; - - m_password = NULL; - m_authDn = NULL; - m_valueUsedToFindDn = NULL; - - m_nextState = kInitialize; -#endif /* MOZ_LDAP */ -} - - -msg_SearchLdap::~msg_SearchLdap () -{ - XP_FREEIF(m_filter); - XP_FREEIF(m_password); - XP_FREEIF(m_valueUsedToFindDn); - XP_FREEIF(m_authDn); - - ldap_msgfree (m_message); - -#ifdef MOZ_LDAP - UnbindRequest (); -#endif /* MOZ_LDAP */ -} - - -MSG_SearchError msg_SearchLdap::ValidateTerms () -{ - XP_FREEIF(m_filter); - m_filter = NULL; - - MSG_SearchError err = msg_SearchAdapter::ValidateTerms (); - if (SearchError_Success == err) - err = Encode (&m_filter); - return err; -} - - -MSG_SearchError msg_SearchLdap::Search () -{ -#ifndef MOZ_LDAP - return SearchError_NotImplemented; -#else - MSG_SearchError err = SearchError_Success; - switch (m_nextState) - { - case kInitialize: - err = Initialize(); - break; - case kPreAuthBindRequest: - err = PreAuthBindRequest (); - break; - case kPreAuthBindResponse: - err = PreAuthBindResponse (); - break; - case kPreAuthSearchRequest: - err = PreAuthSearchRequest (); - break; - case kPreAuthSearchResponse: - err = PreAuthSearchResponse (); - break; - case kAnonymousBindRequest: - err = AnonymousBindRequest(); - break; - case kAuthenticatedBindRequest: - err = AuthenticatedBindRequest (); - break; - case kBindResponse: - err = BindResponse (); - break; - case kSearchRequest: - if ( GetSearchType() == searchNormal - || ( GetSearchType() != searchRootDSE - && DIR_TestFlag(GetDirServer(), DIR_LDAP_ROOTDSE_PARSED))) - err = SearchRequest (); - else - err = SearchRootDSERequest (); - break; - case kSearchVLVSearchRequest: - err = SearchVLVSearchRequest (); - break; - case kSearchVLVIndexRequest: - err = SearchVLVIndexRequest (); - break; - case kSearchResponse: - if ( GetSearchType() == searchNormal - || ( GetSearchType() != searchRootDSE - && DIR_TestFlag(GetDirServer(), DIR_LDAP_ROOTDSE_PARSED))) - err = SearchResponse (); - else - err = SearchRootDSEResponse (); - break; - case kSearchVLVSearchResponse: - err = SearchVLVSearchResponse (); - break; - case kSearchVLVIndexResponse: - err = SearchVLVIndexResponse (); - break; - case kModifyRequest : - err = ModifyRequest (); - break; - case kModifyResponse: - err = ModifyResponse (); - break; - case kUnbindRequest: - err = UnbindRequest (); - break; - default: - XP_ASSERT(FALSE); - } - - if (SearchError_ScopeDone == err) - { - UnbindRequest(); - m_scope->m_frame->EndCylonMode(); - } - return err; -#endif /* MOZ_LDAP */ -} - - -DIR_Server *msg_SearchLdap::GetDirServer () -{ - return m_scope->m_server; -} - -typedef struct AttribToIdMap -{ - MSG_SearchAttribute attrib; - DIR_AttributeId id; -} AttribToIdMap; - - -// string overhead per encoded term is -// req'd: '=' + '(' + ')' + '\0' + optional: at most two '*' + at most one '!' + () for '!' terms -#define kLdapTermOverhead 9 - - -MSG_SearchError msg_SearchLdap::EncodeCustomFilter (const char *value, const char *filter, char **outEncoding) -{ - MSG_SearchError err = SearchError_Success; - *outEncoding = NULL; - - // Find out how many occurrences of %s there are - const char *walkFilter = filter; - int substCount = 0; - while (*walkFilter) - { - if (!XP_STRNCASECMP(walkFilter, "%s", 2)) - { - substCount++; - walkFilter += 2; - } - else - walkFilter++; - } - - // Allocate a string large enough to substitute the value as many times as necessary - int valueLength = XP_STRLEN(value); - int length = XP_STRLEN(filter) + (substCount * valueLength); - *outEncoding = (char*) XP_ALLOC(length + 1); - - // Build the encoding. ### it would be nice to allow %$1 formatting here - if (*outEncoding) - { - char *walkEncoding = *outEncoding; - walkFilter = filter; - while (*walkFilter) - { - if (!XP_STRNCASECMP(walkFilter, "%s", 2)) - { - XP_STRCPY(walkEncoding, value); - walkEncoding += valueLength; - walkFilter += 2; - } - else - *walkEncoding++ = *walkFilter++; - } - *walkEncoding = '\0'; - } - else - err = SearchError_OutOfMemory; - - return err; -} - - -MSG_SearchError msg_SearchLdap::EncodeDwim (const char *mnemonic, const char *value, - char **ppOutEncoding, int *pEncodingLength) -{ - MSG_SearchError err = SearchError_Success; - DIR_Server *dirServer = GetDirServer(); - - const char *filter = DIR_GetFilterString (dirServer); - if (TRUE /*!DIR_RepeatFilterForTokens (dirServer, filter)*/) // I'm not sure this makes sense anymore - { - char *wildValue = NULL; - XP_Bool valueContainedSpaces = FALSE; - if (value) - { - valueContainedSpaces = (XP_STRCHR(value, ' ') != NULL); - wildValue = TransformSpacesToStars (value); - if (!wildValue) - return SearchError_OutOfMemory; - } - - if (filter) - err = EncodeCustomFilter (wildValue, filter, ppOutEncoding); - else - { - // There are a bunch of heuristics happening here. I don't know if this is all correct, but - // here's the current thinking: - // - If there's no value, don't try to sprintf it - // - If there's an empty value let it through - // - If the LDAP server supports VLV, we want a typedown style search, without a leading * - // - If the user typed a phrase separated by spaces, we want a typedown style search, without a leading * - // - If the user just typed one word, we'll drop down to a contains style search, with a leading * - if (!value) - *ppOutEncoding = PR_smprintf ("%s=*"); - else if (GetSearchType()== searchLdapVLV || !*wildValue || valueContainedSpaces) - *ppOutEncoding = PR_smprintf ("%s=%s*", mnemonic, wildValue); - else - *ppOutEncoding = PR_smprintf ("%s=*%s*", mnemonic, wildValue); - } - - XP_FREEIF(wildValue); - - if (SearchError_Success == err && *ppOutEncoding) - *pEncodingLength += XP_STRLEN(*ppOutEncoding); - else - { - *pEncodingLength = 0; - err = SearchError_OutOfMemory; - } - return err; - } - - char *token = NULL; - char *allocatedToken = NULL; - - msg_StringArray commaSeparatedTokens (TRUE /*owns memory for substrings*/); - commaSeparatedTokens.ImportTokenList (value, ",;"); - - XPPtrArray *singleWordTokens = new XPPtrArray [commaSeparatedTokens.GetSize()]; - if (singleWordTokens) - { - int cchSingleWords = 0; - int i; - - for (i = 0; i < commaSeparatedTokens.GetSize(); i++) - { - char *subValue = XP_STRDUP (commaSeparatedTokens.GetAt(i)); // make a copy since strtok will change it - if (!subValue) - break; - - token = XP_STRTOK(subValue, " "); - while (token) - { - if (!XP_STRCMP(token, "*")) - { - // A special case for the user typing just one star - allocatedToken = PR_smprintf ("(%s=%s)", mnemonic, token); - } - else - { - // In the general case, just encode the filter - const char *filterString = DIR_GetFilterString (GetDirServer()); - if (filterString) - { - allocatedToken = NULL; - err = EncodeCustomFilter (token, filterString, &allocatedToken); - } - else - allocatedToken = PR_smprintf ("(%s=%s*)", mnemonic, token); - } - - if (allocatedToken) - { - cchSingleWords += XP_STRLEN(allocatedToken) + 1; - singleWordTokens[i].Add(allocatedToken); - } - - token = XP_STRTOK(NULL, " "); - } - XP_FREE(subValue); - } - - *pEncodingLength = cchSingleWords + (commaSeparatedTokens.GetSize() * 4) + 4; - *ppOutEncoding = (char*) XP_ALLOC (*pEncodingLength); - if (*ppOutEncoding) - { - if (commaSeparatedTokens.GetSize() > 1) - XP_STRCPY (*ppOutEncoding, "(|"); - else - *ppOutEncoding[0] = '\0'; - for (i = 0; i < commaSeparatedTokens.GetSize(); i++) - { - if (singleWordTokens[i].GetSize() > 1) - XP_STRCAT (*ppOutEncoding, "(&"); - for (int j = 0; j < singleWordTokens[i].GetSize(); j++) - { - char *word = (char*) /*hack*/ singleWordTokens[i].GetAt(j); - XP_STRCAT (*ppOutEncoding, word); - XP_FREE(word); - } - if (singleWordTokens[i].GetSize() > 1) - XP_STRCAT (*ppOutEncoding, ")"); - } - if (commaSeparatedTokens.GetSize() > 1) - XP_STRCAT (*ppOutEncoding, ")"); - } - else - err = SearchError_OutOfMemory; - - delete [] singleWordTokens; - } - else - err = SearchError_OutOfMemory; - - return err; -} - - -MSG_SearchError msg_SearchLdap::EncodeMnemonic (MSG_SearchTerm *pTerm, const char *whichMnemonic, char **ppOutEncoding, int *pEncodingLength) -{ - MSG_SearchError err = SearchError_Success; - char *utf8String = NULL; - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(m_scope->m_frame->GetContext()); - - *ppOutEncoding = NULL; - *pEncodingLength = 0; - - if (IsStringAttribute(pTerm->m_attribute)) - { - utf8String = DIR_ConvertToServerCharSet (m_scope->m_server, pTerm->m_value.u.string, INTL_GetCSIWinCSID(c)); - if (!utf8String) - return SearchError_InvalidSearchTerm; - } - - // If we're doing the simple, Address Book search, use a different encoding system - if (opLdapDwim == pTerm->m_operator) - err = EncodeDwim (whichMnemonic, utf8String, ppOutEncoding, pEncodingLength); - else - { - // Build the actual LDAP filter encoding for this attribute - *pEncodingLength = XP_STRLEN (utf8String) + XP_STRLEN (whichMnemonic) + kLdapTermOverhead; - *ppOutEncoding = (char*) XP_ALLOC (*pEncodingLength); - - if (*ppOutEncoding) - { - // Figure out which operators apply. Our negative operators should - // be mapped to a prefix '!', and our contains operators should be - // mapped to '*' around the value string - XP_Bool useBang = FALSE; - XP_Bool useTilde = FALSE; - XP_Bool leadingStar = FALSE; - XP_Bool trailingStar = FALSE; - switch (pTerm->m_operator) - { - case opDoesntContain: - leadingStar = trailingStar = TRUE; - // intentional fall-through - case opIsnt: - useBang = TRUE; - break; - case opContains: - leadingStar = trailingStar = TRUE; - break; - case opIs: - // nothing req'd, - break; - case opSoundsLike: - useTilde = TRUE; - break; - case opBeginsWith: - trailingStar = TRUE; - break; - case opEndsWith: - leadingStar = TRUE; - break; - default: - err = SearchError_ScopeAgreement; - } - XP_STRCPY (*ppOutEncoding, "("); - if (useBang) - XP_STRCAT (*ppOutEncoding, "!("); - XP_STRCAT (*ppOutEncoding, whichMnemonic); - if (useTilde) - XP_STRCAT (*ppOutEncoding, "~"); - XP_STRCAT (*ppOutEncoding, "="); - if ((leadingStar || trailingStar) && XP_STRCMP (utf8String, "*")) - { - char *wildValue = NULL; - if (pTerm->m_operator == opContains) - wildValue = TransformSpacesToStars(utf8String); - else - wildValue = XP_STRDUP(utf8String); - if (wildValue) - { - if (leadingStar) - XP_STRCAT (*ppOutEncoding, "*"); - XP_STRCAT (*ppOutEncoding, wildValue); - if (trailingStar) - XP_STRCAT (*ppOutEncoding, "*"); - - XP_FREE(wildValue); - } - else - err = SearchError_OutOfMemory; - } - else - XP_STRCAT (*ppOutEncoding, utf8String); - XP_STRCAT (*ppOutEncoding, ")"); - if (useBang) - XP_STRCAT (*ppOutEncoding, ")"); - } - else - err = SearchError_OutOfMemory; - } - - XP_FREEIF (utf8String); - - return err; -} - - -MSG_SearchError msg_SearchLdap::EncodeTerm (MSG_SearchTerm *pTerm, char **ppOutEncoding, int *pEncodingLength) -{ - // In the general case, there is only one LDAP attribute per search term. However, with - // site-configurable LDAP preferences, administrators can set up several attributes, such - // that saying "E-mail address" really means (|(mail=foo)(xmail=foo)(ymail=foo)). Dealing - // with that substitution is the role of this function. - - MSG_SearchError err = SearchError_Success; - *pEncodingLength = 0; - DIR_Server *server = GetDirServer(); - - DIR_AttributeId id; - err = MSG_SearchAttribToDirAttrib (pTerm->m_attribute, &id); - - if (SearchError_Success == err) - { - const char **mnemonicList = DIR_GetAttributeStrings (server, id); - int count = 0; - while (mnemonicList[count]) - count++; - char **encodingsPerMnemonic = (char**) XP_ALLOC (count * sizeof (char*)); - if (encodingsPerMnemonic) - { - int encodingLength = 0; - int totalEncodingLength = 0; - int i; - for (i = 0; i < count; i++) - { - err = EncodeMnemonic (pTerm, mnemonicList[i], &encodingsPerMnemonic[i], &encodingLength); - totalEncodingLength += encodingLength; - } - - *pEncodingLength = totalEncodingLength + 1; - if (count > 1) - *pEncodingLength += 3; - *ppOutEncoding = (char*) XP_ALLOC (*pEncodingLength); - if (*ppOutEncoding) - { - *ppOutEncoding[0] = '\0'; - if (count > 1) - XP_STRCAT (*ppOutEncoding, "(|"); - for (i = 0; i < count; i++) - { - if (encodingsPerMnemonic[i]) - { - XP_STRCAT(*ppOutEncoding, encodingsPerMnemonic[i]); - XP_FREE (encodingsPerMnemonic[i]); - } - } - XP_FREE (encodingsPerMnemonic); - if (count > 1) - XP_STRCAT(*ppOutEncoding, ")"); - } - else - err = SearchError_OutOfMemory; - } - else - err = SearchError_OutOfMemory; - } - - return err; -} - - -MSG_SearchError msg_SearchLdap::Encode (char **ppOutEncoding) -{ - // Generate the LDAP search encodings as specified in rfc-1558. - - if (!ppOutEncoding) - return SearchError_NullPointer; - MSG_SearchError err = SearchError_Success; - - // list of encodings, one per term - int cchTermEncodings = 0; - char **termEncodings = (char**) XP_ALLOC (m_searchTerms.GetSize() * sizeof (char*)); - if (!termEncodings) - return SearchError_OutOfMemory; - - XP_Bool booleanAND = TRUE; // should the terms be ANDed or ORed together? - - // Encode each term in the list into its string form - for (int i = 0; i < m_searchTerms.GetSize() && SearchError_Success == err; i++) - { - MSG_SearchTerm *pTerm = m_searchTerms.GetAt(i); - XP_ASSERT (pTerm->IsValid()); - if (pTerm->IsValid()) - { - booleanAND = pTerm->IsBooleanOpAND(); - int cchThisEncoding = 0; - err = EncodeTerm (pTerm, &termEncodings[i], &cchThisEncoding); - cchTermEncodings += cchThisEncoding; - } - } - - // Build up the string containing all the term encodings catenated together - - int idx = 0; - char *pTotalEncoding = (char*) XP_ALLOC (cchTermEncodings + kLdapTermOverhead + 1); // +1 for '&' between terms - if (pTotalEncoding && SearchError_Success == err) - { - pTotalEncoding[0] = '\0'; - - if (m_searchTerms.GetSize() > 1) - { - // since a search term can have AND or OR boolean operators, check the first term to determine which - // symbol we need. - if (booleanAND) - XP_STRCPY (pTotalEncoding, "(&"); // use AND symbol - else - XP_STRCPY (pTotalEncoding, "(|"); // use OR symbol - - for (idx = 0; idx < m_searchTerms.GetSize(); idx++) - XP_STRCAT (pTotalEncoding, termEncodings[idx]); - XP_STRCAT (pTotalEncoding, ")"); - } - else - XP_STRCAT (pTotalEncoding, termEncodings[0]); - } - else - err = SearchError_OutOfMemory; - - // Clean up the intermediate encodings - for (idx = 0; idx < m_searchTerms.GetSize(); idx++) - XP_FREEIF (termEncodings[idx]); - XP_FREE (termEncodings); - - // Only return the total encoding if we're sure it's right - if (SearchError_Success == err) - *ppOutEncoding = pTotalEncoding; - else - { - XP_FREE (pTotalEncoding); - *ppOutEncoding = NULL; - } - - return err; -} - - -MSG_SearchError msg_SearchLdap::BuildUrl (const char *dn, char **outUrl, XP_Bool forAddToAB) -{ - MSG_SearchError err = SearchError_Success; - *outUrl = DIR_BuildUrl (m_scope->m_server, dn, forAddToAB); - if (NULL == *outUrl) - err = SearchError_OutOfMemory; - return err; -} - - -MSG_SearchError msg_SearchLdap::OpenResultElement(MSG_MessagePane *, - MSG_ResultElement *) -{ - XP_ASSERT(FALSE); // shouldn't get here with a messagePane - return SearchError_NotImplemented; -} - - -MSG_SearchError msg_SearchLdap::OpenResultElement(MWContext *context, MSG_ResultElement *result) -{ - MSG_SearchError err = SearchError_NotImplemented; - -#ifdef MOZ_LDAP - // fire a URL at a browser context, and use mkldap.cpp to build HTML - MSG_SearchValue *dnValue = NULL; - err = result->GetValue (attribDistinguishedName, &dnValue); - if (SearchError_Success == err) - { - char *url = NULL; - err = BuildUrl (dnValue->u.string, &url, FALSE /*addToAB*/); - if (SearchError_Success == err) - { - URL_Struct *url_s = NET_CreateURLStruct (url, NET_NORMAL_RELOAD); - if (url_s) - { - msg_GetURL (context, url_s, FALSE); - XP_FREE(url); - } - } - MSG_DestroySearchValue (dnValue); - } -#endif /* MOZ_LDAP */ - - return err; -} - - -MSG_SearchError msg_SearchLdap::ModifyResultElement(MSG_ResultElement *result, MSG_SearchValue *value) -{ - MSG_SearchError err = SearchError_Success; -#ifdef MOZ_LDAP - char *platformName = value->u.string + XP_STRLEN("file://"); - XP_File file = XP_FileOpen (platformName, xpMailFolder, XP_FILE_READ_BIN); - if (file) - { - XP_FileSeek (file, 0, SEEK_END); - int length = XP_FileTell (file); - char *jpegBuf = (char*) XP_ALLOC (length + 1); - if (jpegBuf) - { - XP_FileSeek (file, 0, SEEK_SET); - XP_FileRead (jpegBuf, length, file); - XP_FileClose (file); - - MSG_SearchValue *value = NULL; - err = result->GetValue (attribDistinguishedName, &value); - if (SearchError_Success == err) - { - m_modifyBucket = new LdapModifyBucket; - if (m_modifyBucket) - { - m_modifyBucket->dnValue = value; // deleted in bucket dtor - - m_modifyBucket->ber.bv_len = length; - m_modifyBucket->ber.bv_val = jpegBuf; - - m_modifyBucket->mod.mod_op = LDAP_MOD_REPLACE | LDAP_MOD_BVALUES; - m_modifyBucket->mod.mod_type = "jpegphoto"; - m_modifyBucket->mod.mod_vals.modv_bvals = m_modifyBucket->berValList; - - Initialize(); - m_nextState = kPreAuthBindRequest; - CollectUserCredentials(); - - m_scope->m_frame->m_parallelScopes.Add(m_scope); - err = m_scope->m_frame->GetUrl (); - } - else - err = SearchError_OutOfMemory; - } - else - err = SearchError_ScopeAgreement; - } - else - err = SearchError_OutOfMemory; - } - -#endif /* MOZ_LDAP */ - return err; -} - - -#ifdef MOZ_LDAP - -int msg_SearchLdap::PollConnection () -{ - struct timeval timeout; - XP_BZERO (&timeout, sizeof(timeout)); - ldap_msgfree (m_message); - int err = ldap_result (m_ldap, m_currentMessage, 0, &timeout, &m_message); - if (err == 0) - err = LDAP_TIMEOUT; - else - if (err != -1 && err != LDAP_RES_SEARCH_ENTRY /*&& err != LDAP_RES_SEARCH_RESULT*/) - { - int err2 = ldap_result2error (m_ldap, m_message, 0); - if (err2 != 0) - err = err2; - } - return err; -} - - -MSG_SearchError msg_SearchLdap::Initialize () -{ - if (NET_IsOffline()) - { - FE_Alert (m_scope->m_frame->GetContext(), XP_GetString(XP_ALERT_OFFLINE_MODE_SELECTED)); - return SearchError_ScopeDone; - } - - MSG_SearchError err = SearchError_Success; - m_scope->m_frame->UpdateStatusBar (XP_PROGRESS_CONTACTHOST); - m_scope->m_frame->BeginCylonMode(); - - m_ldap = ldap_init ((char*) GetHostName(), GetPort()); - if (m_ldap) - { - XP_Bool wantReferrals = TRUE; - ldap_set_option (m_ldap, LDAP_OPT_REFERRALS, &wantReferrals); - - // Set up the max number of entries to return here. I don't - // think we should have a time limit since we have a Stop button. - int maxHits = GetMaxHits(); - ldap_set_option (m_ldap, LDAP_OPT_SIZELIMIT, &maxHits); - - if (DIR_TestFlag(GetDirServer(), DIR_LDAP_VERSION3)) - { - int version = LDAP_VERSION3; - ldap_set_option (m_ldap, LDAP_OPT_PROTOCOL_VERSION, &version); - } - - if (GetEnableAuth() && SearchError_Success == CollectUserCredentials()) - { - if (m_authDn && m_password) - { - // Got the credentials directly from prefs; go right to auth - // bind since there's no need to go fish for the DN - m_nextState = kAuthenticatedBindRequest; - } - else - m_nextState = kPreAuthBindRequest; - } - else - m_nextState = kAnonymousBindRequest; - } - else - { - DisplayError (XP_LDAP_OPEN_SERVER_FAILED, GetHostDescription(), LDAP_SERVER_DOWN); - err = SearchError_ScopeDone; - } - - return err; -} - - -MSG_SearchError msg_SearchLdap::PreAuthBindRequest () -{ - MSG_SearchError err = BindRequest (NULL, NULL); // turns out to mean the same thing - if (SearchError_Success == err) - m_nextState = kPreAuthBindResponse; - return err; -} - - -MSG_SearchError msg_SearchLdap::PreAuthBindResponse () -{ - MSG_SearchError err = BindResponse (); // turns out to mean the same thing - m_nextState = kPreAuthSearchRequest; - return err; -} - - -MSG_SearchError msg_SearchLdap::PreAuthSearchRequest () -{ - MSG_SearchError err = SearchError_Success; - - char *attribs[2]; - DIR_Server *server = GetDirServer(); - attribs[0] = XP_STRDUP(DIR_GetFirstAttributeString (server, cn)); - attribs[1] = NULL; - - char *filter = PR_smprintf ("(%s=%s)", DIR_GetFirstAttributeString (server, auth), m_valueUsedToFindDn); - - if (attribs[0] && filter) - m_currentMessage = ldap_search (m_ldap, (char*) GetSearchBase(), LDAP_SCOPE_SUBTREE, filter, &attribs[0], 0); - else - err = SearchError_OutOfMemory; - - int i = 0; - while (attribs[i]) - XP_FREE(attribs[i++]); - - XP_FREEIF(filter); - - m_nextState = kPreAuthSearchResponse; - return err; -} - - -MSG_SearchError msg_SearchLdap::PreAuthSearchResponse () -{ - MSG_SearchError err = SearchError_Success; - - int msgId = PollConnection (); - switch (msgId) - { - case LDAP_TIMEOUT: // search still pending - break; - case LDAP_RES_SEARCH_ENTRY: // got a hit, find its DN - if (!m_authDn) - { - char *authDn = ldap_get_dn (m_ldap, m_message); - m_authDn = XP_STRDUP(authDn); - ldap_memfree(authDn); - } - else - { - // Better not have more than one hit for this search. - // We don't have a way for the user to choose which "phil" they are - HandleSizeLimitExceeded(); - err = SearchError_ScopeDone; - } - break; - case LDAP_RES_SEARCH_RESULT: // search finished - m_nextState = m_authDn ? kAuthenticatedBindRequest : kUnbindRequest; - break; - case LDAP_SIZELIMIT_EXCEEDED: - // Better not have more than one hit for this search. - // We don't have a way for the user to choose which "phil" they are - HandleSizeLimitExceeded(); - m_nextState = m_authDn ? kAuthenticatedBindRequest : kUnbindRequest; - err = SearchError_ScopeDone; - break; - default: - DisplayError (XP_LDAP_SEARCH_FAILED, GetHostDescription(), msgId); - err = SearchError_ScopeDone; - } - - return err; -} - - -MSG_SearchError msg_SearchLdap::SaveCredentialsToPrefs () -{ - DIR_Server *server = GetDirServer(); - - if (m_authDn) - DIR_SetAuthDN (server, m_authDn); - - if (server->savePassword && m_password) - DIR_SetPassword (server, m_password); - - return SearchError_Success; -} - - -MSG_SearchError msg_SearchLdap::CollectUserCredentials () -{ - MSG_SearchError err = SearchError_Success; - DIR_Server *server = GetDirServer(); - - // First look in the DIR_Server we read out of the prefs. If it already - // knows the user's credentials, there's no need to ask again here. - if (server->authDn && XP_STRLEN(server->authDn)) - m_authDn = XP_STRDUP (server->authDn); - if (server->savePassword && server->password && XP_STRLEN(server->password)) - m_password = XP_STRDUP (server->password); - if (m_authDn && m_password) - return err; - - char *username = NULL; - char *password = NULL; - const char *anonAttrName = DIR_GetAttributeName (server, auth); - - char *prompt = PR_smprintf (XP_GetString(MK_LDAP_AUTH_PROMPT), anonAttrName, server->description); - if (prompt) - { - if (FE_PromptUsernameAndPassword (m_scope->m_frame->GetContext(), prompt, &username, &password)) - { - if (password && username) - { - m_password = HG72267 (password); - XP_FREE(password); - m_valueUsedToFindDn = username; - } - else - m_nextState = kAnonymousBindRequest; // no credentials -- let 'em try it anonymously - } - else - m_nextState = kAnonymousBindRequest; // no credentials -- let 'em try it anonymously - - XP_FREE(prompt); - } - else - err = SearchError_OutOfMemory; - - return err; -} - - -MSG_SearchError msg_SearchLdap::AuthenticatedBindRequest () -{ - return BindRequest (m_authDn, m_password); - -} - - -MSG_SearchError msg_SearchLdap::AnonymousBindRequest() -{ - return BindRequest (NULL, NULL); -} - - -MSG_SearchError msg_SearchLdap::BindRequest (const char *dn, const char *password) -{ - MSG_SearchError err = SearchError_Success; - char *unmungedPassword = NULL; - - if (password) - unmungedPassword = HG72224 (password); - - m_currentMessage = ldap_simple_bind (m_ldap, dn, unmungedPassword); - - if (m_currentMessage > -1) - m_nextState = kBindResponse; - else - { - DisplayError (XP_LDAP_BIND_FAILED, GetHostDescription(), ldap_get_lderrno(m_ldap,NULL,NULL)); - err = SearchError_ScopeDone; - } - - XP_FREEIF(unmungedPassword); - return err; -} - - -MSG_SearchError msg_SearchLdap::BindResponse () -{ - MSG_SearchError err = SearchError_Success; - int msgId = PollConnection (); - switch (msgId) - { - case LDAP_TIMEOUT: // bind still pending - break; - case LDAP_RES_BIND: // bind succeeded - m_nextState = m_modifyBucket ? kModifyRequest : kSearchRequest; - break; - default: - DisplayError (XP_LDAP_BIND_FAILED, GetHostDescription(), msgId); - err = SearchError_ScopeDone; - } - return err; -} - - -MSG_SearchError msg_SearchLdap::SearchRootDSERequest () -{ - m_nextState = kSearchResponse; - - char *attribs[1]; - attribs[0] = NULL; - - m_currentMessage = ldap_search (m_ldap, "", LDAP_SCOPE_BASE, "(objectClass=*)", &attribs[0], 0); - - return SearchError_Success; -} - -MSG_SearchError msg_SearchLdap::SearchVLVSearchRequest () -{ - m_nextState = kSearchVLVSearchResponse; - - char *attribs[4]; - attribs[0] = XP_STRDUP(DIR_GetFirstAttributeString (GetDirServer(), cn)); - attribs[1] = "vlvBase"; - attribs[2] = "vlvFilter"; - attribs[3] = NULL; - - m_currentPair = 0; - m_currentMessage = ldap_search (m_ldap, LDAP_VLV_BASE, LDAP_SCOPE_ONELEVEL, LDAP_VLV_SEARCHCLASS, &attribs[0], 0); - - XP_FREE(attribs[0]); - - return SearchError_Success; -} - -MSG_SearchError msg_SearchLdap::SearchVLVIndexRequest () -{ - MSG_SearchError err = SearchError_Success; - - m_nextState = kSearchVLVIndexResponse; - - msg_LdapPair *pair = (msg_LdapPair *)m_pairList.GetAt(m_currentPair); - if (pair) - { - char *attribs[3]; - attribs[0] = "vlvSort"; - attribs[1] = "vlvEnabled"; - attribs[2] = NULL; - - char *base = PR_smprintf ("%s=%s,%s", DIR_GetFirstAttributeString (GetDirServer(), cn), pair->cn, LDAP_VLV_BASE); - m_currentMessage = ldap_search (m_ldap, base, LDAP_SCOPE_SUBTREE, LDAP_VLV_INDEXCLASS, &attribs[0], 0); - XP_FREE(base); - } - else - err = SearchError_ScopeDone; - - return err; -} - -MSG_SearchError msg_SearchLdap::SearchRequest () -{ - m_scope->m_frame->UpdateStatusBar (MK_MSG_SEARCH_STATUS); - - // This array serves to prune the returned attributes to only the ones - // we're interested in. If the user wants to see the whole entry, - // he/she can double-click on the result element. - char *attribs[8]; - DIR_Server *server = GetDirServer(); - attribs[0] = XP_STRDUP(DIR_GetFirstAttributeString (server, cn)); - attribs[1] = XP_STRDUP(DIR_GetFirstAttributeString (server, telephonenumber)); - attribs[2] = XP_STRDUP(DIR_GetFirstAttributeString (server, mail)); - attribs[3] = XP_STRDUP(DIR_GetFirstAttributeString (server, l)); - attribs[4] = XP_STRDUP(DIR_GetFirstAttributeString (server, o)); - attribs[5] = XP_STRDUP(DIR_GetFirstAttributeString (server, givenname)); - attribs[6] = XP_STRDUP(DIR_GetFirstAttributeString (server, sn)); - attribs[7] = NULL; - - char *filter = m_filter; - LDAPControl *sort_request = NULL; - LDAPControl *vlv_request = NULL; - LDAPControl *pldapCtrlList[3] = { NULL, NULL, NULL }; - if (IsValidVLVSearch()) - { - char *sort = "cn"; - LDAPsortkey **keylist = NULL; - LDAPVirtualList *pLdapVLV = GetLdapVLVData(); - - /* We use the extra data pointer for passing the search filter and - * sort order. - */ - if (pLdapVLV->ldvlist_extradata) - { - filter = (char *)pLdapVLV->ldvlist_extradata; - sort = XP_STRCHR(filter, ':'); - sort++[0] = '\0'; - - for (int i = 0; sort[i]; i++) - if (sort[i] != '-' && !isalnum(sort[i])) - sort[i] = ' '; - - pLdapVLV->ldvlist_extradata = NULL; - } - - ldap_create_sort_keylist (&keylist, sort); - ldap_create_sort_control (m_ldap, keylist, 0, &sort_request); - ldap_free_sort_keylist (keylist); - - ldap_create_virtuallist_control (m_ldap, pLdapVLV, &vlv_request); - - pldapCtrlList[0] = sort_request; - pldapCtrlList[1] = vlv_request; - } - - int msgid; - if (ldap_search_ext (m_ldap, (char *) GetSearchBase(), LDAP_SCOPE_SUBTREE, - filter, &attribs[0], 0, - (pldapCtrlList[0] ? pldapCtrlList : (LDAPControl **)NULL), - (LDAPControl **)NULL, (struct timeval *)NULL, - -1, &msgid) == LDAP_SUCCESS) - m_currentMessage = msgid; - else - m_currentMessage = -1; - - if (sort_request) - ldap_control_free (sort_request); - if (vlv_request) - ldap_control_free (vlv_request); - if (filter != m_filter) - XP_FREE(filter); - - - int i = 0; - while (attribs[i]) - XP_FREE(attribs[i++]); - - m_nextState = kSearchResponse; - - return SearchError_Success; -} - - -MSG_SearchError msg_SearchLdap::SearchRootDSEResponse () -{ - XP_Bool keepPolling; - MSG_SearchError err = SearchError_Success; - - do - { - int msgId = PollConnection (); - - keepPolling = FALSE; - switch (msgId) - { - case LDAP_TIMEOUT: // search still pending - break; - case LDAP_RES_SEARCH_ENTRY: - DIR_ParseRootDSE (GetDirServer(), m_ldap, m_message); - keepPolling = TRUE; - break; - case LDAP_RES_SEARCH_RESULT:// search complete - default: // some error occurred, consider search complete - DIR_SetFlag (GetDirServer(), DIR_LDAP_ROOTDSE_PARSED); - - if (GetSearchType() == searchRootDSE) - { - m_nextState = kUnbindRequest; - err = SearchError_ScopeDone; - } - else if ( GetSearchType() == searchLdapVLV - && !DIR_TestFlag(GetDirServer(), DIR_LDAP_VIRTUALLISTVIEW)) - RestartFailedVLVSearch(); - else - m_nextState = kSearchVLVSearchRequest; - } - } while (keepPolling); - - return err; -} - -MSG_SearchError msg_SearchLdap::SearchVLVSearchResponse () -{ - XP_Bool keepPolling; - MSG_SearchError err = SearchError_Success; - - do - { - int msgId = PollConnection (); - - keepPolling = FALSE; - switch (msgId) - { - case LDAP_TIMEOUT: // search still pending - break; - case LDAP_RES_SEARCH_ENTRY: - keepPolling = TRUE; - AddPair (ldap_first_entry (m_ldap, m_message)); - break; - case LDAP_RES_SEARCH_RESULT:// search complete - if (m_pairList.GetSize() == 0) - { - DIR_ClearFlag(GetDirServer(), DIR_LDAP_VIRTUALLISTVIEW); - RestartFailedVLVSearch(); - } - else - m_nextState = kSearchVLVIndexRequest; - break; - default: // some error occurred, consider search complete - err = SearchError_ScopeDone; - UnbindRequest(); - break; - } - } while (keepPolling); - - return err; -} - -MSG_SearchError msg_SearchLdap::SearchVLVIndexResponse () -{ - XP_Bool keepPolling; - MSG_SearchError err = SearchError_Success; - - do - { - int msgId = PollConnection (); - - keepPolling = FALSE; - switch (msgId) - { - case LDAP_TIMEOUT: // search still pending - break; - case LDAP_RES_SEARCH_ENTRY: - keepPolling = TRUE; - AddSortToPair((msg_LdapPair *)(m_pairList[m_currentPair]), ldap_first_entry (m_ldap, m_message)); - break; - case LDAP_RES_SEARCH_RESULT:// search complete - /* If there are more pairs to process, do so. - */ - if (m_pairList.GetSize() > ++m_currentPair) - { - m_nextState = kSearchVLVIndexRequest; - break; - } - - /* We're done processing the VLV pairs, we can now build the VLV pair string. - */ - ParsePairList(); - /* Fall-through */ - default: // some error occurred, consider search complete - UnbindRequest(); - err = Initialize(); - } - } while (keepPolling); - - return err; -} - -MSG_SearchError msg_SearchLdap::SearchResponse () -{ - MSG_SearchError err = SearchError_Success; - - // The "keepPolling" logic is designed to read as many entries as we can - // right now. However, on a high-speed connection to an idle server, it - // can spew entries so fast that the user is likely to be mad that we're - // not giving them control of their machine. So we'll read in chunks, or - // until we need to pause for read. - const int chunkSize = 50; - XP_Bool keepPolling; - int numEntriesReceived = 0; - - do - { - keepPolling = FALSE; - int msgId = PollConnection (); - switch (msgId) - { - case LDAP_TIMEOUT: // search still pending - break; - case LDAP_RES_SEARCH_ENTRY: // got some hits, search continues - AddMessageToResults (ldap_first_entry (m_ldap, m_message)); - keepPolling = ++numEntriesReceived < chunkSize; - break; - case LDAP_RES_SEARCH_RESULT: // search finished - SaveCredentialsToPrefs (); - - if (IsValidVLVSearch()) - ProcessVLVResults (m_message); - - m_nextState = kUnbindRequest; - err = SearchError_ScopeDone; - break; - case LDAP_SIZELIMIT_EXCEEDED: - HandleSizeLimitExceeded(); - m_nextState = kUnbindRequest; - err = SearchError_ScopeDone; - break; - default: - DisplayError (XP_LDAP_SEARCH_FAILED, GetHostDescription(), msgId); - err = SearchError_ScopeDone; - } - } while (keepPolling); - - return err; -} - - -MSG_SearchError msg_SearchLdap::ModifyRequest () -{ - MSG_SearchError err = SearchError_Success; - XP_ASSERT(m_modifyBucket); - if (m_modifyBucket) - { - m_currentMessage = ldap_modify (m_ldap, m_modifyBucket->dnValue->u.string, m_modifyBucket->modList); - m_nextState = kModifyResponse; - } - else - err = SearchError_NullPointer; - return err; -} - - -MSG_SearchError msg_SearchLdap::ModifyResponse () -{ - MSG_SearchError err = SearchError_Success; - int msgId = PollConnection (); - switch (msgId) - { - case LDAP_TIMEOUT: // modify still pending - break; - case LDAP_RES_MODIFY: // modify is complete - m_nextState = kUnbindRequest; - err = SearchError_ScopeDone; - - // Free memory shared across the async modify operation - delete m_modifyBucket; - m_modifyBucket = NULL; - - break; - default: - DisplayError (XP_LDAP_MODIFY_FAILED, GetHostDescription(), msgId); - err = SearchError_ScopeDone; - } - return err; -} - - -MSG_SearchError msg_SearchLdap::UnbindRequest () -{ - if (NULL != m_ldap) - { - ldap_unbind (m_ldap); - m_ldap = NULL; - } - - return SearchError_ScopeDone; -} - - -#if !defined(MOZ_NO_LDAP) -void msg_SearchLdap::AddMessageToResults (LDAPMessage *messageChain) -{ - if (!messageChain) - return; // Stop recursing on this chain - - MSG_ResultElement *result = new MSG_ResultElement (this); - if (result) - { - XP_ASSERT (result); - MSG_SearchValue *value = NULL; - char **scratchArray = NULL; - XP_Bool needOrg = TRUE; - XP_Bool needCn = TRUE; - - DIR_Server *server = GetDirServer(); - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(m_scope->m_frame->GetContext()); - int16 win_csid = INTL_GetCSIWinCSID(c); - - scratchArray = ldap_get_values (m_ldap, messageChain, DIR_GetFirstAttributeString(server, cn)); - if (scratchArray && scratchArray[0]) - { - value = new MSG_SearchValue; - value->attribute = attribCommonName; - value->u.string = DIR_ConvertFromServerCharSet (m_scope->m_server, scratchArray[0], win_csid); - result->AddValue (value); - ldap_value_free (scratchArray); - - needCn = FALSE; - } - - scratchArray = ldap_get_values (m_ldap, messageChain, DIR_GetFirstAttributeString(server, givenname)); - if (scratchArray && scratchArray[0]) - { - value = new MSG_SearchValue; - value->attribute = attribGivenName; - value->u.string = DIR_ConvertFromServerCharSet (m_scope->m_server, scratchArray[0], win_csid); - result->AddValue (value); - ldap_value_free (scratchArray); - } - - scratchArray = ldap_get_values (m_ldap, messageChain, DIR_GetFirstAttributeString(server, sn)); - if (scratchArray && scratchArray[0]) - { - value = new MSG_SearchValue; - value->attribute = attribSurname; - value->u.string = DIR_ConvertFromServerCharSet (m_scope->m_server, scratchArray[0], win_csid); - result->AddValue (value); - ldap_value_free (scratchArray); - } - - scratchArray = ldap_get_values (m_ldap, messageChain, DIR_GetFirstAttributeString(server, mail)); - if (scratchArray && scratchArray[0]) - { - char *mailbox = MSG_ExtractRFC822AddressMailboxes (scratchArray[0]); - if (mailbox) - { - value = new MSG_SearchValue; - value->attribute = attrib822Address; - value->u.string = DIR_ConvertFromServerCharSet (m_scope->m_server, mailbox, win_csid); - result->AddValue (value); - XP_FREE(mailbox); - } - ldap_value_free (scratchArray); - } - - scratchArray = ldap_get_values (m_ldap, messageChain, DIR_GetFirstAttributeString(server, telephonenumber)); - if (scratchArray && scratchArray[0]) - { - value = new MSG_SearchValue; - value->attribute = attribPhoneNumber; - value->u.string = DIR_ConvertFromServerCharSet (m_scope->m_server, scratchArray[0], win_csid); - result->AddValue (value); - ldap_value_free (scratchArray); - } - - scratchArray = ldap_get_values (m_ldap, messageChain, DIR_GetFirstAttributeString(server, l)); - if (scratchArray && scratchArray[0]) - { - value = new MSG_SearchValue; - value->attribute = attribLocality; - value->u.string = DIR_ConvertFromServerCharSet (m_scope->m_server, scratchArray[0], win_csid); - result->AddValue (value); - ldap_value_free (scratchArray); - } - - scratchArray = ldap_get_values (m_ldap, messageChain, DIR_GetFirstAttributeString(server, o)); - if (scratchArray && scratchArray[0]) - { - value = new MSG_SearchValue; - value->attribute = attribOrganization; - value->u.string = DIR_ConvertFromServerCharSet (m_scope->m_server, scratchArray[0], win_csid); - result->AddValue (value); - ldap_value_free (scratchArray); - - needOrg = FALSE; - } - - // Save off the DN so the server can get back to this entry quickly - // if we need to get more attributes - char *distinguishedName = ldap_get_dn (m_ldap, messageChain); - if (distinguishedName) - { - value = new MSG_SearchValue; - if (value) - { - value->attribute = attribDistinguishedName; - value->u.string = DIR_ConvertFromServerCharSet (m_scope->m_server, distinguishedName, win_csid); - result->AddValue (value); - } - - // If we didn't get some attributes we wanted, try to pick them up from the DN - if (needOrg || needCn) - { - if ((scratchArray = ldap_explode_dn (distinguishedName, FALSE /*want types*/)) != NULL) - { - char *dnComponent = NULL; - int i = 0; - while ((dnComponent = scratchArray[i++]) != NULL) - { - if (needOrg && !strncasecomp (dnComponent, "o=", 2)) - { - if ((value = new MSG_SearchValue) != NULL) - { - value->attribute = attribOrganization; - value->u.string = DIR_ConvertFromServerCharSet (m_scope->m_server, dnComponent+2, win_csid); - result->AddValue (value); - needOrg = FALSE; - } - } - if (needCn && !strncasecomp (dnComponent, "cn=", 3)) - { - if ((value = new MSG_SearchValue) != NULL) - { - value->attribute = attribCommonName; - value->u.string = DIR_ConvertFromServerCharSet (m_scope->m_server, dnComponent+3, win_csid); - result->AddValue (value); - needCn = FALSE; - } - } - } - ldap_value_free (scratchArray); - } - } - - ldap_memfree (distinguishedName); - } - - // Add this result element to the list we show the user - m_scope->m_frame->AddResultElement (result); - } - - // Recurse down other possible messages in this chain - AddMessageToResults (ldap_next_entry (m_ldap, messageChain)); -} - -void msg_SearchLdap::AddPair (LDAPMessage *messageChain) -{ - if (!messageChain) - return; // Stop recursing on this chain - - msg_LdapPair *pair = (msg_LdapPair *)XP_CALLOC(1, sizeof(msg_LdapPair)); - if (pair) - { - XP_Bool baseMatches = FALSE; - char **scratchArray = NULL; - - DIR_Server *server = GetDirServer(); - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(m_scope->m_frame->GetContext()); - int16 win_csid = INTL_GetCSIWinCSID(c); - - /* Ignore VLVs whose base does not match the search base in the server. - * Unfortunately we can't just compare the search base with strcmp, LDAP attribute - * values are insensitive to extra whitespace. - */ - scratchArray = ldap_get_values (m_ldap, messageChain, "vlvBase"); - if (scratchArray && scratchArray[0]) - { - int i; - char *base[2], *start, *end, *compend; - - base[0] = XP_STRDUP(server->searchBase), - base[1] = DIR_ConvertFromServerCharSet (m_scope->m_server, scratchArray[0], win_csid); - ldap_value_free (scratchArray); - - /* Strip any non-significant whitespace from the search base strings. - */ - for (i = 0; i < 2 && base[i]; i++) - { - for (start = end = base[i]; *end; ) - { - /* Get rid of space at the beginning of the string and - * after '=' and ','. - */ - while (*end && XP_IS_SPACE(*end)) - end++; - - if (*end == '=' || *end == ',') - { - *start++ = *end++; - } - else if (*end) - { - /* Find the beginning of the next token/component - */ - for (compend = end; *compend && *compend != '=' && *compend != ','; ) - compend++; - - /* Back up to the last non-whitespace character. - */ - while (compend > end && XP_IS_SPACE(*(compend-1))) - compend--; - - /* Copy the component. - */ - while (end < compend) - *start++ = *end++; - } - } - *start = '\0'; - } - - baseMatches = (XP_STRCASECMP(base[0], base[1]) == 0); - - XP_FREE(base[0]); - XP_FREE(base[1]); - } - - if (baseMatches) - { - int numAttributesLeft = 2; - - scratchArray = ldap_get_values (m_ldap, messageChain, DIR_GetFirstAttributeString(server, cn)); - if (scratchArray && scratchArray[0]) - { - pair->cn = XP_STRDUP(DIR_ConvertFromServerCharSet (m_scope->m_server, scratchArray[0], win_csid)); - ldap_value_free (scratchArray); - numAttributesLeft--; - } - scratchArray = ldap_get_values (m_ldap, messageChain, "vlvFilter"); - if (scratchArray && scratchArray[0]) - { - pair->filter = XP_STRDUP(DIR_ConvertFromServerCharSet (m_scope->m_server, scratchArray[0], win_csid)); - ldap_value_free (scratchArray); - numAttributesLeft--; - } - - if (numAttributesLeft > 0) - FreePair(pair); - } - - if (baseMatches) - { - pair->sort = NULL; - m_pairList.Add(pair); - } - } - - // Recurse down other possible messages in this chain - AddPair (ldap_next_entry (m_ldap, messageChain)); -} - -void msg_SearchLdap::AddSortToPair (msg_LdapPair *pair, LDAPMessage *messageChain) -{ - if (!messageChain) - return; // Stop recursing on this chain - - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(m_scope->m_frame->GetContext()); - int16 win_csid = INTL_GetCSIWinCSID(c); - - XP_Bool enabled = FALSE; - char **scratchArray = NULL; - DIR_Server *server = GetDirServer(); - - scratchArray = ldap_get_values (m_ldap, messageChain, "vlvEnabled"); - if (scratchArray && scratchArray[0]) - { - enabled = (XP_Bool)XP_ATOI(scratchArray[0]); - ldap_value_free (scratchArray); - } - - if (enabled) - { - /* Only the first vlvSort attribute is recognized by the server. - */ - scratchArray = ldap_get_values (m_ldap, messageChain, "vlvSort"); - if (scratchArray && scratchArray[0]) - { - char *sort; - char *newsort = DIR_ConvertFromServerCharSet (m_scope->m_server, scratchArray[0], win_csid); - - if (pair->sort) - { - sort = PR_smprintf ("%s;%s:%s", pair->sort, pair->filter, newsort); - XP_FREE(pair->sort); - } - else - sort = PR_smprintf ("%s:%s", pair->filter, newsort); - - pair->sort = sort; - ldap_value_free (scratchArray); - } - } - - // Recurse down other possible messages in this chain - AddSortToPair (pair, ldap_next_entry (m_ldap, messageChain)); -} - -void msg_SearchLdap::FreePair (msg_LdapPair *pair) -{ - XP_ASSERT(pair); - XP_FREEIF(pair->cn); - XP_FREEIF(pair->filter); - XP_FREEIF(pair->sort); - XP_FREE(pair); -} - -void msg_SearchLdap::ParsePairList () -{ - uint32 i, offset, size; - msg_LdapPair *pair; - - /* First allocate space for the complete VLV pair list. - */ - for (i = 0, size = 0; i < m_pairList.GetSize(); i++) - { - pair = (msg_LdapPair *)(m_pairList[i]); - if (pair->sort) - size += XP_STRLEN(pair->sort) + 1; - } - size++; - - char *pairList = (char *)XP_ALLOC(size); - if (pairList) - { - /* coallesce the VLV pairs into one string. - */ - pairList[0] = '\0'; - for (i = 0, offset = 0; i < m_pairList.GetSize(); i++) - { - pair = (msg_LdapPair *)(m_pairList[i]); - if (pair->sort) - offset += PR_snprintf(&pairList[offset], size - offset, "%s;", pair->sort); - } - - /* Store the pair string in the DIR_Server - */ - DIR_Server *server = GetDirServer(); - XP_FREEIF(server->searchPairList); - server->searchPairList = pairList; - DIR_SaveServerPreferences (FE_GetDirServers()); - } - - /* Finally, free the pair list. - */ - for (i = 0; i < m_pairList.GetSize(); i++) - FreePair((msg_LdapPair *)(m_pairList[i])); - m_pairList.SetSize(0); -} - -LDAPVirtualList *msg_SearchLdap::GetLdapVLVData () -{ - return (LDAPVirtualList *)(m_scope->m_frame->GetSearchParam()); -} - -MSG_SearchType msg_SearchLdap::GetSearchType () -{ - return m_scope->m_frame->GetSearchType(); -} - -MSG_SearchError msg_SearchLdap::SetSearchParam (MSG_SearchType type, void *param) -{ - return m_scope->m_frame->SetSearchParam(type, param); -} - -XP_Bool msg_SearchLdap::IsValidVLVSearch () -{ - return DIR_TestFlag(m_scope->m_server, DIR_LDAP_VIRTUALLISTVIEW) - && m_scope->m_frame->GetSearchType() == searchLdapVLV - && m_scope->m_frame->GetSearchParam(); -} - -MSG_SearchError msg_SearchLdap::RestartFailedVLVSearch () -{ - MSG_SearchError err = SearchError_ScopeDone; - - /* We attempted a VLV search on a server that doesn't support VLV, we need - * to remap the search term to the VLV attribute value. - */ - LDAPVirtualList *pLdapVLV = GetLdapVLVData(); - if (pLdapVLV && pLdapVLV->ldvlist_attrvalue) - { - MSG_SearchTerm *term = m_scope->m_frame->m_termList.GetAt(0); - - XP_ASSERT(m_scope->m_frame->m_termList.GetSize() == 1); - XP_ASSERT(term->m_value.u.string[0] == '\0'); - term->m_value.u.string = XP_STRDUP(pLdapVLV->ldvlist_attrvalue); - - SetSearchParam (searchNormal, NULL); - if (ValidateTerms() == SearchError_Success) - { - UnbindRequest(); - err = Initialize(); - } - } - - if (err != SearchError_Success) - { - m_nextState = kUnbindRequest; - err = SearchError_ScopeDone; - } - - return err; -} - -void msg_SearchLdap::ProcessVLVResults (LDAPMessage *messageChain) -{ - int rc; - if (( rc = ldap_result2error (m_ldap, messageChain, 0)) != LDAP_SUCCESS) - { - SetSearchParam (searchLdapVLV, NULL); - } - - /* Check for the sort and VLV response controls - */ - LDAPControl **ldapCtrlList; - ldap_parse_result (m_ldap, messageChain, &rc, NULL, NULL, NULL, - &ldapCtrlList, FALSE); - - int error; - unsigned long result = 0, index, size; - char *attrib; - - if ( ldap_parse_sort_control (m_ldap, ldapCtrlList, &result, &attrib) == LDAP_SUCCESS - && ldap_parse_virtuallist_control (m_ldap, ldapCtrlList, &index, &size, &error) == LDAP_SUCCESS) - { - LDAPVirtualList *pldapVL = GetLdapVLVData (); - if (pldapVL) - { - pldapVL->ldvlist_index = index; - pldapVL->ldvlist_size = size; - } - } - else - { - SetSearchParam (searchLdapVLV, NULL); - } - - ldap_controls_free (ldapCtrlList); -} -#endif - -void msg_SearchLdap::DisplayError (int templateId, const char *contextString, int ldapErrorId, XP_Bool /*isTemplate*/) -{ - // This builds up error dialogs which look like: - // "Failed to open connection to 'ldap.mcom.com' due to LDAP error 'bad DN name' (0x22)" - - char *templateString = XP_GetString (templateId); - char *ldapErrString = NULL; - - m_scope->m_frame->m_handlingError = TRUE; - -// if (isTemplate) -// ldapErrString = ldap_tmplerr2string (ldapErrorId); -// else - ldapErrString = ldap_err2string (ldapErrorId); - - if (templateString && contextString && ldapErrString) - { - int len = XP_STRLEN(templateString) + XP_STRLEN(ldapErrString) + XP_STRLEN(contextString) + 10; - char *theBigString = (char*) XP_ALLOC (len); - if (theBigString) - { - PR_snprintf (theBigString, len, templateString, contextString, ldapErrString, ldapErrorId); - FE_Alert (m_scope->m_frame->GetContext(), theBigString); - XP_FREE(theBigString); - } - } - - m_scope->m_frame->m_handlingError = FALSE; -} - - -#endif /* MOZ_LDAP */ - - -int msg_SearchLdap::Abort () -{ -#ifdef MOZ_LDAP - int result = 0; - if (m_ldap) - result = ldap_abandon (m_ldap, m_currentMessage); - if (0 == result) - result = msg_SearchAdapter::Abort (); - m_scope->m_frame->EndCylonMode(); - return result; -#else - return msg_SearchAdapter::Abort (); -#endif /* MOZ_LDAP */ -} - - -const char *msg_SearchLdap::GetHostName() -{ - return m_scope->m_server->serverName; -} - - -const char *msg_SearchLdap::GetSearchBase () -{ - return m_scope->m_server->searchBase; -} - - -int msg_SearchLdap::GetMaxHits () -{ - return m_scope->m_server->maxHits; -} - -XP_Bool msg_SearchLdap::GetEnableAuth () -{ - return m_scope->m_server->enableAuth; -} - -int msg_SearchLdap::GetPort () -{ -#ifdef MOZ_LDAP - if (m_scope->m_server->port) - return m_scope->m_server->port; - return GetStandardPort(); -#else - return 0; -#endif /* MOZ_LDAP */ -} - - -int msg_SearchLdap::GetStandardPort() -{ - HG25167 -} - - -HG98726 - - -const char *msg_SearchLdap::GetUrlScheme (XP_Bool forAddToAB) -{ - HG82798 - return forAddToAB ? "addbook-ldap:" : "ldap:"; -} - - -const char *msg_SearchLdap::GetHostDescription() -{ - // since the description is optional, it might be null, so pick up - // the server's DNS name if necessary - char *desc = m_scope->m_server->description; - if (desc && *desc) - return desc; - return GetHostName(); -} - - -void msg_SearchLdap::HandleSizeLimitExceeded () -{ - if (m_scope->m_frame->m_resultList.GetSize() < GetMaxHits()) - { - // If we've exceeded a size limit less than our client-imposed limit, - // we must have blown through the "look-through limit" on the server - - FE_Progress (m_scope->m_frame->GetContext(), XP_GetString (XP_LDAP_SERVER_SIZELIMIT_EXCEEDED)); - } - else - { - // If we have actually gotten hits back, we've probably exceeded - // the client-imposed limit stored in the DIR_Server - - char *prompt = PR_smprintf (XP_GetString (XP_LDAP_SIZELIMIT_EXCEEDED), GetMaxHits()); - if (prompt) - { - FE_Progress (m_scope->m_frame->GetContext(), prompt); - XP_FREE (prompt); - } - } -} - - -void msg_SearchValidityManager::EnableLdapAttribute (MSG_SearchAttribute attrib, XP_Bool enableIt) -{ - m_ldapTable->SetAvailable (attrib, opContains, enableIt); - m_ldapTable->SetEnabled (attrib, opContains, enableIt); - m_ldapTable->SetAvailable (attrib, opDoesntContain, enableIt); - m_ldapTable->SetEnabled (attrib, opDoesntContain, enableIt); - m_ldapTable->SetAvailable (attrib, opIs, enableIt); - m_ldapTable->SetEnabled (attrib, opIs, enableIt); - m_ldapTable->SetAvailable (attrib, opIsnt, enableIt); - m_ldapTable->SetEnabled (attrib, opIsnt, enableIt); - m_ldapTable->SetAvailable (attrib, opSoundsLike, enableIt); - m_ldapTable->SetEnabled (attrib, opSoundsLike, enableIt); - m_ldapTable->SetAvailable (attrib, opBeginsWith, enableIt); - m_ldapTable->SetEnabled (attrib, opBeginsWith, enableIt); - m_ldapTable->SetAvailable (attrib, opEndsWith, enableIt); - m_ldapTable->SetEnabled (attrib, opEndsWith, enableIt); -} - - -MSG_SearchError msg_SearchValidityManager::InitLdapTable (DIR_Server *server) -{ - MSG_SearchError err = SearchError_Success; - - if (NULL == m_ldapTable) - err = NewTable (&m_ldapTable); - - if (SearchError_Success == err) - { - EnableLdapAttribute (attribCommonName); - EnableLdapAttribute (attrib822Address); - EnableLdapAttribute (attribPhoneNumber); - EnableLdapAttribute (attribOrganization); - EnableLdapAttribute (attribOrgUnit); - EnableLdapAttribute (attribLocality); - EnableLdapAttribute (attribStreetAddress); - - if (server) - { - EnableLdapAttribute (attribCustom1, DIR_UseCustomAttribute (server, custom1)); - EnableLdapAttribute (attribCustom2, DIR_UseCustomAttribute (server, custom2)); - EnableLdapAttribute (attribCustom3, DIR_UseCustomAttribute (server, custom3)); - EnableLdapAttribute (attribCustom4, DIR_UseCustomAttribute (server, custom4)); - EnableLdapAttribute (attribCustom5, DIR_UseCustomAttribute (server, custom5)); - } - } - - return err; -} - -MSG_SearchError msg_SearchValidityManager::PostProcessValidityTable (DIR_Server *server) -{ - return InitLdapTable (server); -} diff --git a/mozilla/lib/libmsg/msgmapi.cpp b/mozilla/lib/libmsg/msgmapi.cpp deleted file mode 100644 index 815c62a756a..00000000000 --- a/mozilla/lib/libmsg/msgmapi.cpp +++ /dev/null @@ -1,462 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// -// msgmapi.cpp -- implements XP mail/news support for the Microsoft Mail API (MAPI) -// - -#include "msg.h" // Leave this first for Windows precompiled headers - -#if defined (XP_WIN) - -#include "xp.h" -#include "msgmapi.h" -#include "msgzap.h" -#include "maildb.h" -#include "mailhdr.h" -#include "msgfinfo.h" -#include "msgpane.h" -#include "pmsgsrch.h" -#include "abcinfo.h" -#include "abpane2.h" -#include "msgstrob.h" - -//***************************************************************************** -// Encapsulate the XP DB stuff required to enumerate messages - -class MSG_MapiListContext : public MSG_ZapIt -{ -public: - MSG_MapiListContext () {} - ~MSG_MapiListContext (); - - MsgERR OpenDatabase (MSG_FolderInfo *folder); - - MessageKey GetFirst (); - MessageKey GetNext (); - MsgERR MarkRead (MessageKey key, XP_Bool read); - - lpMapiMessage GetMessage (MessageKey); - -protected: - - char *ConvertDateToMapiFormat (time_t); - char *ConvertBodyToMapiFormat (MailMessageHdr *hdr); - void ConvertRecipientsToMapiFormat (const char *ourRecips, lpMapiRecipDesc mapiRecips, - int numRecips, int mapiRecipClass); - - MSG_FolderInfo *m_folder; - MailDB *m_db; - ListContext *m_listContext; -}; - - -MSG_MapiListContext::~MSG_MapiListContext () -{ - if (m_listContext && m_db) - m_db->ListDone (m_listContext); - if (m_db) - m_db->Close(); -} - - -MsgERR MSG_MapiListContext::OpenDatabase (MSG_FolderInfo *folder) -{ - MsgERR dbErr = eFAILURE; - MSG_FolderInfoMail *mailFolder = NULL; - if (folder && (mailFolder = folder->GetMailFolderInfo())) - { - XP_Bool wasCreated; - if (FOLDER_MAIL == mailFolder->GetType()) - dbErr = MailDB::Open (mailFolder->GetPathname(), FALSE, &m_db, FALSE); - else - dbErr = ImapMailDB::Open (mailFolder->GetPathname(), FALSE, &m_db, mailFolder->GetMaster(), &wasCreated); - - m_folder = folder; - } - return dbErr; -} - - -MessageKey MSG_MapiListContext::GetFirst () -{ - MessageKey key = MSG_MESSAGEKEYNONE; - XP_ASSERT (NULL == m_listContext); - XP_ASSERT (NULL != m_db); - - DBMessageHdr *headers = NULL; - if (eSUCCESS == m_db->ListFirst (&m_listContext, &headers) && headers) - { - key = headers->GetMessageKey (); - delete headers; - } - - return key; -} - - -MessageKey MSG_MapiListContext::GetNext () -{ - MessageKey key = MSG_MESSAGEKEYNONE; - - XP_ASSERT (m_listContext && m_db); - if (m_listContext && m_db) - { - DBMessageHdr *headers = NULL; - if (eSUCCESS == m_db->ListNext (m_listContext, &headers)) - { - key = headers->GetMessageKey (); - delete headers; - } - } - - return key; -} - - -MsgERR MSG_MapiListContext::MarkRead (MessageKey key, XP_Bool read) -{ - MsgERR err = eFAILURE; - XP_ASSERT(m_db); - if (m_db) - err = m_db->MarkRead (key, read); - return err; -} - - -lpMapiMessage MSG_MapiListContext::GetMessage (MessageKey key) -{ - lpMapiMessage message = (lpMapiMessage) XP_CALLOC (1, sizeof(MapiMessage)); - if (message) - { - char scratch[256]; - - MailMessageHdr *header = m_db->GetMailHdrForKey (key); - if (header) - { - header->GetSubject (scratch, sizeof(scratch), TRUE /*withRe?*/, m_db->GetDB()); - message->lpszSubject = XP_STRDUP (scratch); - message->lpszDateReceived = ConvertDateToMapiFormat (header->GetDate()); - - // Pull out the flags info - // anything to do with MAPI_SENT? Since we're only reading the Inbox, I guess not - uint32 ourFlags = header->GetFlags(); - if (!(ourFlags & kIsRead)) - message->flFlags |= MAPI_UNREAD; - if (ourFlags & kMDNNeeded || ourFlags & kMDNSent) - message->flFlags |= MAPI_RECEIPT_REQUESTED; - - // Pull out the author/originator info - message->lpOriginator = (lpMapiRecipDesc) XP_CALLOC (1, sizeof(MapiRecipDesc)); - if (message->lpOriginator) - { - header->GetAuthor (scratch, sizeof(scratch), m_db->GetDB()); - ConvertRecipientsToMapiFormat (scratch, message->lpOriginator, 1, MAPI_ORIG); - } - - // Pull out the To/CC info - int32 numToRecips = header->GetNumRecipients(); - int32 numCCRecips = header->GetNumCCRecipients(); - message->lpRecips = (lpMapiRecipDesc) XP_CALLOC (numToRecips + numCCRecips, sizeof(MapiRecipDesc)); - if (message->lpRecips) - { - XPStringObj ourRecips; - - header->GetRecipients (ourRecips, m_db->GetDB()); - ConvertRecipientsToMapiFormat (ourRecips, message->lpRecips, numToRecips, MAPI_TO); - - header->GetCCList (ourRecips, m_db->GetDB()); - ConvertRecipientsToMapiFormat (ourRecips, &message->lpRecips[numToRecips], numCCRecips, MAPI_CC); - - message->nRecipCount = numToRecips + numCCRecips; - } - - // Convert any body text that we have locally - message->lpszNoteText = ConvertBodyToMapiFormat (header); - - delete header; - } - } - return message; -} - - -char *MSG_MapiListContext::ConvertDateToMapiFormat (time_t ourTime) -{ - char *date = (char*) XP_ALLOC(32); - if (date) - { - // MAPI time format is YYYY/MM/DD HH:MM - // Note that we're not using XP_StrfTime because that localizes the time format, - // and the way I read the MAPI spec is that their format is canonical, not localized. - struct tm *local = localtime (&ourTime); - if (local) - strftime (date, 32, "%Y/%m/%d %I:%M", local); //use %H if hours should be 24 hour format - } - return date; -} - - -void MSG_MapiListContext::ConvertRecipientsToMapiFormat (const char *ourRecips, lpMapiRecipDesc mapiRecips, - int numRecips, int mapiRecipClass) -{ - char *names = NULL; - char *addresses = NULL; - - int count = MSG_ParseRFC822Addresses (ourRecips, &names, &addresses); - if (count > 0) - { - char *walkNames = names; - char *walkAddresses = addresses; - for (int i = 0; i < count && i < numRecips; i++) - { - if (walkNames) - { - mapiRecips[i].lpszName = XP_STRDUP (walkNames); - walkNames += XP_STRLEN (walkNames) + 1; - } - - if (walkAddresses) - { - mapiRecips[i].lpszAddress = XP_STRDUP (walkAddresses); - walkAddresses += XP_STRLEN (walkAddresses) + 1; - } - - mapiRecips[i].ulRecipClass = mapiRecipClass; - } - } - - XP_FREEIF (names); - XP_FREEIF (addresses); -} - - -char *MSG_MapiListContext::ConvertBodyToMapiFormat (MailMessageHdr *hdr) -{ - const int kBufLen = 64000; - int bytesUsed = 0; - int bytesThisLine; - - char *body = (char*) XP_ALLOC (kBufLen); - if (body) - { - MSG_ScopeTerm *scope = new MSG_ScopeTerm (NULL /*search frame not needed, I hope*/, scopeMailFolder, m_folder); - if (scope) - { - MSG_BodyHandler *handler = new MSG_BodyHandler (scope, hdr->GetArticleNum(), hdr->GetLineCount(), hdr, m_db); - if (handler) - { - *body = '\0'; - while (TRUE) - { - bytesThisLine = handler->GetNextLine (&body[bytesUsed], kBufLen - bytesUsed); - bytesUsed += bytesThisLine; - if (0 == bytesThisLine) - break; - else - bytesUsed--; // strip off null terminator - } - body[bytesUsed++] = '\0'; // rhp - fix last line garbage... - delete handler; - } - delete scope; - } - } - return body = (char*) XP_REALLOC(body, bytesUsed); -} - - -//***************************************************************************** -// MSGMAPI API implementation - - -extern "C" MessageKey MSG_GetFirstKeyInFolder (MSG_FolderInfo *folder, MSG_MapiListContext **context) -{ - MessageKey key = MSG_MESSAGEKEYNONE; - - *context = new MSG_MapiListContext (); - if (*context) - { - if (eSUCCESS == (*context)->OpenDatabase (folder)) - key = (*context)->GetFirst (); - } - else - delete *context; - - return key; -} - - -extern "C" MessageKey MSG_GetNextKeyInFolder (MSG_MapiListContext *context) -{ - MessageKey key = MSG_MESSAGEKEYNONE; - - XP_ASSERT(context); - if (context) - { - key = context->GetNext(); - if (MSG_MESSAGEKEYNONE == key) // Do we know they're always going to run to completion? - delete context; - } - - return key; -} - - -extern "C" XP_Bool MSG_GetMapiMessageById (MSG_FolderInfo *folder, MessageKey key, lpMapiMessage *message) -{ - XP_Bool success = FALSE; - MSG_MapiListContext *context = new MSG_MapiListContext(); - if (context) - { - if (eSUCCESS == context->OpenDatabase(folder)) - { - *message = context->GetMessage (key); - success = TRUE; - } - delete context; - } - return success; -} - - -static void msg_FreeMAPIFile(lpMapiFileDesc f) -{ - if (f) - { - XP_FREEIF(f->lpszPathName); - XP_FREEIF(f->lpszFileName); - } -} - -static void msg_FreeMAPIRecipient(lpMapiRecipDesc rd) -{ - if (rd) - { - XP_FREEIF(rd->lpszName); - XP_FREEIF(rd->lpszAddress); - XP_FREEIF(rd->lpEntryID); - } -} - -extern "C" void MSG_FreeMapiMessage (lpMapiMessage msg) -{ - ULONG i; - - if (msg) - { - XP_FREEIF(msg->lpszSubject); - XP_FREEIF(msg->lpszNoteText); - XP_FREEIF(msg->lpszMessageType); - XP_FREEIF(msg->lpszDateReceived); - XP_FREEIF(msg->lpszConversationID); - - if (msg->lpOriginator) - msg_FreeMAPIRecipient(msg->lpOriginator); - - for (i=0; i<msg->nRecipCount; i++) - if (&(msg->lpRecips[i]) != NULL) - msg_FreeMAPIRecipient(&(msg->lpRecips[i])); - - XP_FREEIF(msg->lpRecips); - - for (i=0; i<msg->nFileCount; i++) - if (&(msg->lpFiles[i]) != NULL) - msg_FreeMAPIFile(&(msg->lpFiles[i])); - - XP_FREEIF(msg->lpFiles); - - XP_FREE(msg); - } -} - - -extern "C" XP_Bool MSG_MarkMapiMessageRead (MSG_FolderInfo *folder, MessageKey key, XP_Bool read) -{ - XP_Bool success = FALSE; - MSG_MapiListContext *context = new MSG_MapiListContext(); - if (context) - { - if (eSUCCESS == context->OpenDatabase(folder)) - { - if (eSUCCESS == context->MarkRead (key, read)) - success = TRUE; - } - delete context; - } - return success; -} - - -extern "C" int AB_MAPI_ResolveName(char * string,AB_ContainerInfo ** ctr, /* caller allocates ptr to ctr, BE fills. Caller must close the ctr when done */ - ABID * entryID) -{ - *ctr = NULL; - *entryID = 0; - return 0; -} - -/* Caller must free the character strings returned by these functions using XP_FREE */ -extern "C" char * AB_MAPI_GetEmailAddress(AB_ContainerInfo * ctr,ABID id) -{ - return XP_STRDUP("johndoe@netscape.com"); // just a temporary stub -} - -extern "C" char * AB_MAPI_GetFullName(AB_ContainerInfo * ctr,ABID id) -{ - return XP_STRDUP("John Doe"); -} - - -extern "C" char * AB_MAPI_ConvertToDescription(AB_ContainerInfo * ctr) -{ - AB_ContainerAttribValue * value; - if (AB_GetContainerAttribute(ctr, attribName, &value) == AB_SUCCESS) - { - char * temp = XP_STRDUP(value->u.string); - AB_FreeContainerAttribValue(value); - return temp; - } - else - return NULL; -} - -extern "C" AB_ContainerInfo * AB_MAPI_ConvertToContainer(MWContext * context, char * description) -{ - return NULL; -} - - -extern "C" int AB_MAPI_CreatePropertySheetPane(MWContext * context,MSG_Master * master,AB_ContainerInfo * ctr, ABID id, MSG_Pane ** personPane) -{ - AB_PersonPane * pPane = new AB_PersonPane(context, master, ctr, id); - *personPane = pPane; - return AB_SUCCESS; // let Rich know what this value is??? -} - -extern "C" void AB_MAPI_CloseContainer(AB_ContainerInfo ** ctr) -{ - if (*ctr) - (*ctr)->Close(); - *ctr = NULL; -} - -#endif /* XP_WIN */ diff --git a/mozilla/lib/libmsg/msgmast.cpp b/mozilla/lib/libmsg/msgmast.cpp deleted file mode 100644 index a4882c25f6f..00000000000 --- a/mozilla/lib/libmsg/msgmast.cpp +++ /dev/null @@ -1,2405 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#define FORCE_PR_LOG /* Allow logging in the release build */ - -#include "rosetta.h" -#include "msg.h" -#include "errcode.h" - -#include "msgmast.h" -#include "msgprefs.h" -#include "msgfinfo.h" -#include "msgfpane.h" -#include "msgtpane.h" -#include "hosttbl.h" -#include "newshost.h" -#include "prsembst.h" -#include "listngst.h" -#include "newsdb.h" -#include "maildb.h" -#include "prtime.h" -#include "msgbgcln.h" -#include "prefapi.h" -#include "rosetta.h" -#include HG99877 -#include "msgdwnof.h" -#include "imapoff.h" -#include "msgurlq.h" -#include "xpgetstr.h" -#include "msgfcach.h" -#include "prlog.h" -#include "pmsgsrch.h" -#include "msgccach.h" -#include "imaphost.h" -#include "msgimap.h" -#include "nslocks.h" -#include "pw_public.h" - -extern "C" { - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_SET_HTML_NEWSGROUP_HEIRARCHY_CONFIRM; - extern int MK_MSG_FOLDER_ALREADY_EXISTS; - extern int MK_MSG_INBOX_L10N_NAME; - extern int MK_IMAP_UPGRADE_WAIT_WHILE_UPGRADE; - extern int MK_IMAP_UPGRADE_PROMPT_QUESTION; - extern int MK_IMAP_UPGRADE_CUSTOM; - extern int MK_POP3_USERNAME_UNDEFINED; - extern int XP_PASSWORD_FOR_POP3_USER; - extern int XP_MSG_CACHED_PASSWORD_NOT_MATCHED; - extern int XP_MSG_PASSWORD_FAILED; - extern int MK_POP3_PASSWORD_UNDEFINED; -} - -#ifndef NSPR20 -PR_LOG_DEFINE(IMAP); -#else -PRLogModuleInfo *IMAP; -#endif - -MSG_Master::MSG_Master(MSG_Prefs* prefs) -{ - XP_Bool purgeBodiesByAge; - int32 purgeMethod; - int32 daysToKeepHdrs; - int32 headersToKeep; - int32 daysToKeepBodies; - - PREF_GetBoolPref("news.enabled",&m_collabraEnabled); - - m_prefs = prefs; - m_folderTree = NULL; - m_IMAPfoldersBuilt = FALSE; - m_upgradingToIMAPSubscription = FALSE; - if (m_collabraEnabled) - m_hosttable = msg_HostTable::Create(this); - else - m_hosttable = NULL; - m_rulesSemaphoreHolder = NULL; - m_editHeadersSemaphoreHolder = NULL; - m_mailfolders = NULL; - m_imapfolders = NULL; - m_parseMailboxState = NULL; - m_userAuthenticated = FALSE; - m_localFoldersAuthenticated = FALSE; - m_prefs->AddNotify(this); - m_purgeHdrPref = new MSG_PurgeInfo; - m_purgeArtPref = new MSG_PurgeInfo; - PREF_GetIntPref("mail.purge_threshhold", &m_purgeThreshhold); - PREF_GetIntPref("news.keep.method", &purgeMethod); - PREF_GetIntPref("news.keep.days", &daysToKeepHdrs); // days - PREF_GetIntPref("news.keep.count", &headersToKeep); //keep x newest messages - PREF_GetBoolPref("news.keep.only_unread", &m_purgeHdrPref->m_unreadOnly); - PREF_GetBoolPref("news.remove_bodies.by_age", &purgeBodiesByAge); - PREF_GetIntPref("news.remove_bodies.days", &daysToKeepBodies); - PREF_GetBoolPref("mail.password_protect_local_cache" , &m_passwordProtectCache); - - m_purgeHdrPref->m_purgeBy = (MSG_PurgeByPreferences) purgeMethod; - m_purgeHdrPref->m_daysToKeep = daysToKeepHdrs; - m_purgeHdrPref->m_numHeadersToKeep = headersToKeep; - m_purgeArtPref->m_purgeBy = (purgeBodiesByAge) ? MSG_PurgeByAge : MSG_PurgeNone; - m_mailAccountUrl = NULL; - m_cachedConnectionList = NULL; - m_playingBackOfflineOps = FALSE; - m_progressWindow = NULL; - m_imapUpgradeBeginPane = NULL; - m_upgradingToIMAPSubscription = FALSE; - -#ifndef NSPR20 - PR_LogInit(&IMAPLog); -#else - IMAP = PR_NewLogModule("IMAP"); -#endif - // on the mac, use this java script preference - // as an alternate to setenv - XP_Bool imapIOlogging; - PREF_GetBoolPref("imap.io.mac.logging", &imapIOlogging); - if (imapIOlogging) - IMAP->level = PR_LOG_ALWAYS; - -} - -MSG_Master::~MSG_Master() -{ - m_prefs->RemoveNotify(this); - - MSG_FolderCache cache; - cache.WriteToDisk (m_folderTree); - - delete m_hosttable; - delete m_folderTree; - delete m_purgeHdrPref; - delete m_purgeArtPref; - XP_FREEIF(m_mailAccountUrl); - delete m_cachedConnectionList; - delete m_imapHostTable; -} - - -// See if there is a previous connection cached for us, if so, then return it. -// If there is no connection, allow them to make -// a connection since it will be the first one, somebody has got to start one. - -TNavigatorImapConnection* MSG_Master::UnCacheImapConnection(const char *host, const char *folderName) -{ - if (m_cachedConnectionList) // Someone has made a connection at least once - { - if (folderName) - { - MSG_IMAPFolderInfoMail *folder = (folderName) ? FindImapMailFolder(host, folderName, NULL, FALSE) : 0; - if (folder) - return (m_cachedConnectionList->RemoveConnection(folder, folder->GetIMAPHost())); - } - else - return m_cachedConnectionList->RemoveConnection(NULL, GetIMAPHost(host)); - } - else - { - m_cachedConnectionList = new MSG_CachedConnectionList; // mark a connection has been created - } - - return NULL; // No connections have been made, you are the first dude -} - -XP_Bool MSG_Master::HasCachedConnection(MSG_IMAPFolderInfoMail *folder) -{ - int cacheIndex; - - if (m_cachedConnectionList) // Someone has made a connection at least once - return (m_cachedConnectionList->HasConnection(folder, folder->GetIMAPHost(), cacheIndex)); - else - return FALSE; -} - -void MSG_Master::CloseCachedImapConnections() -{ - if (m_cachedConnectionList) - m_cachedConnectionList->CloseAllConnections(); -} - -XP_Bool MSG_Master::TryToCacheImapConnection(TNavigatorImapConnection *connection, const char *host, const char *folderName) -{ - XP_Bool wasCached = FALSE; - - - if (!m_cachedConnectionList) - m_cachedConnectionList = new MSG_CachedConnectionList; - - if (m_cachedConnectionList) - { - - MSG_FolderInfo *folder = (folderName) ? FindImapMailFolder(host, folderName, NULL, FALSE) : 0; - wasCached = m_cachedConnectionList->AddConnection(connection, folder, GetIMAPHost(host)); - } -#ifdef DEBUG_bienvenu - XP_Trace("trying to uncache %s result = %s\n", folderName, (wasCached) ? "TRUE" : "FALSE"); -#endif - return wasCached; -} - -void MSG_Master::ImapFolderClosed(MSG_FolderInfo *folder) -{ - if (m_cachedConnectionList) - m_cachedConnectionList->FolderClosed(folder); -} - -void -MSG_Master::SetFirstPane(MSG_Pane* pane) -{ - m_firstpane = pane; -} - - -MSG_Pane* -MSG_Master::GetFirstPane() -{ - return m_firstpane; -} - -void MSG_Master::NotifyPrefsChange(NotifyCode code) -{ - // km - There is no way to get a notification from anybody but the MSG_Prefs - // object. Therefore hacking NET_Setpopusername (name wrong) cannot work without - // also adding to MSG_Prefs - - if (HG24326 (m_prefs->GetMailServerIsIMAP4())) - { - // if we're using IMAP - // then we should clear the connection cache and info here - IMAP_ResetAnyCachedConnectionInfo(); - // if there is any existing cached imap connection, tell it to die - CloseCachedImapConnections(); - } - else if (m_firstpane && ((code == MailServerType) || (code == PopHost))) - { - // biff state is unknown now - FE_UpdateBiff(MSG_BIFF_Unknown); - - // if the new mail server is IMAP, then delete any previous - // imap thread and message panes - if (m_prefs->GetMailServerIsIMAP4()) - { - // mwelch will add code here for pane deletion? - } - - // remove any existing imap folders from the folders from the folder pane. - if (m_imapfolders) - BroadcastFolderDeleted (m_imapfolders); - - // leak m_imapfolders. Until the closure of thread panes and - // message panes works, there will be dangling references - // in the front ends. - if (m_imapfolders && m_folderTree) - { - m_folderTree->RemoveSubFolder(m_imapfolders); - m_imapfolders = NULL; - } - - // if the new server is imap, populate the folder pane. - if (m_prefs->GetMailServerIsIMAP4()) - { - // BuildIMAPFolderTree will flag the IMAP inbox with - // MSG_FOLDER_FLAG_INBOX. Remove this flag from any pop - // mailbox that has it. - MSG_FolderInfo *offlineInbox = NULL; - if (GetLocalMailFolderTree()->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, &offlineInbox, 1)) - { - XP_ASSERT(offlineInbox); - offlineInbox->ClearFlag(MSG_FOLDER_FLAG_INBOX); - BroadcastFolderChanged(offlineInbox); - } - - // start fresh - IMAP_ResetAnyCachedConnectionInfo(); - - // build the imap folder tree - m_imapfolders = - MSG_IMAPFolderInfoMail::BuildIMAPFolderTree( - this, // master is used by libnet - 1, - m_folderTree->GetSubFolders()); // parent of imap folders - - // add them to the folder pane - if (m_imapfolders) - { - m_IMAPfoldersBuilt = TRUE; - BroadcastFolderAdded (m_imapfolders); - } - } - else - { - if (m_IMAPfoldersBuilt) - { - // this was a switch from imap to pop. Flag the pop inbox - MSG_FolderInfoMail *offlineInbox = FindMagicMailFolder(MSG_FOLDER_FLAG_INBOX, TRUE); - if (offlineInbox) - { - offlineInbox->SetFlag(MSG_FOLDER_FLAG_INBOX); - BroadcastFolderChanged (offlineInbox); - } - } - m_IMAPfoldersBuilt = FALSE; - m_imapfolders = NULL; - } - - // if there is any existing cached imap connection, tell it to die - CloseCachedImapConnections(); - } - else if (code == ChangeIMAPDeleteModel) - { - IMAP_ResetAnyCachedConnectionInfo(); - CloseCachedImapConnections(); - } -} - -int32 -MSG_Master::GetFolderChildren(MSG_FolderInfo* folder, - MSG_FolderInfo** result, - int32 resultsize) -{ - if (folder == NULL) - folder = GetFolderTree(); - int32 num = folder->GetNumSubFolders(); - int32 numResults = 0; - - if (result && resultsize > num) - resultsize = num; - - for (int i=0 ; i<num ; i++) - { - MSG_FolderInfo *child = folder->GetSubFolder(i); - if (child->CanBeInFolderPane()) - { - if (result) - result[numResults] = child; - numResults++; - } - } - - return numResults; -} - - -int32 -MSG_Master::GetFoldersWithFlag(uint32 flags, MSG_FolderInfo** result, - int32 resultsize) -{ - return GetFolderTree()->GetFoldersWithFlag(flags, result, resultsize); -} - -XP_Bool -MSG_Master::GetFolderLineById(MSG_FolderInfo* folder, - MSG_FolderLine* data) { - XP_BZERO (data, sizeof(*data)); - XP_ASSERT(folder); - - if (!folder) return FALSE; - data->level = folder->GetDepth(); - - data->name = folder->GetName(); - data->prettyName = folder->GetPrettyName(); - data->flags = folder->GetFlags(); - data->prefFlags = folder->GetFolderPrefFlags(); - data->unseen = folder->GetNumUnread() + folder->GetNumPendingUnread(); - data->total = folder->GetTotalMessages() + folder->GetNumPendingTotalMessages(); - data->deepUnseen = folder->GetNumUnread(TRUE /*deep?*/) + - folder->GetNumPendingUnread(TRUE /*deep?*/); - data->deepTotal = folder->GetTotalMessages(TRUE /*deep?*/) + - folder->GetNumPendingTotalMessages(TRUE /*deep?*/); - data->id = folder; - data->numChildren = folder->GetNumSubFoldersToDisplay(); - data->deletedBytes = folder->GetExpungedBytesCount(); - return TRUE; -} - - -void MSG_Master::BroadcastFolderChanged(MSG_FolderInfo *folderInfo) -{ - MSG_Pane *pane; - - for (pane = GetFirstPane(); pane != NULL; pane = pane->GetNextPane()) - { - if (pane->GetPaneType() == MSG_FOLDERPANE) - { - MSG_FolderPane* folderPane = (MSG_FolderPane*) pane; - - MSG_FolderInfo *parent = folderInfo; - while (parent) - { - // since we're not rolling up container counts, don't invalidate, since it slows down the mac. - if (parent->GetType() != FOLDER_CONTAINERONLY) - folderPane->OnFolderChanged (parent); - parent = m_folderTree->FindParentOf(parent); - } - } - else if (pane->GetPaneType() == MSG_THREADPANE) - { - pane->OnFolderChanged (folderInfo); - } - } -} - -void MSG_Master::BroadcastFolderDeleted (MSG_FolderInfo *folderInfo) -{ - MSG_Pane *pane; - XP_ASSERT (folderInfo); - if (!folderInfo) - return; - - MSG_IMAPFolderInfoMail *imapFolder = folderInfo->GetIMAPFolderInfoMail(); - if (imapFolder && m_cachedConnectionList) - m_cachedConnectionList->FolderDeleted(folderInfo); - - for (pane = GetFirstPane(); pane != NULL; pane = pane->GetNextPane()) - pane->OnFolderDeleted (folderInfo); -} - - -void MSG_Master::BroadcastFolderAdded (MSG_FolderInfo *folder, MSG_Pane *instigator) -{ - MSG_Pane *pane; - XP_ASSERT(folder); - if (!folder) - return; - - for (pane = GetFirstPane(); pane != NULL; pane = pane->GetNextPane()) - pane->OnFolderAdded (folder, instigator); -} - - -void MSG_Master::BroadcastFolderKeysAreInvalid (MSG_FolderInfo *folder) -{ - MSG_Pane *pane; - XP_ASSERT(folder); - if (!folder) - return; - - for (pane = GetFirstPane(); pane != NULL; pane = pane->GetNextPane()) - pane->OnFolderKeysAreInvalid (folder); -} - - -MSG_Pane *MSG_Master::FindFirstPaneOfType(MSG_PaneType type) -{ - return FindNextPaneOfType(GetFirstPane(), type); -} - -MSG_Pane *MSG_Master::FindNextPaneOfType(MSG_Pane *startHere, MSG_PaneType type) -{ - MSG_Pane *pane; - - for (pane = startHere; pane != NULL; pane = pane->GetNextPane()) - { - if (pane->GetPaneType() == type) - return pane; - } - return NULL; -} - - -MSG_Pane *MSG_Master::FindPaneOfType(MSG_FolderInfo *id, MSG_PaneType type) -{ - MSG_Pane *pane; - - for (pane = GetFirstPane(); pane != NULL; pane = pane->GetNextPane()) - { - if (pane->GetPaneType() == type || type == MSG_ANYPANE) - { - MSG_FolderInfo *paneFolder = pane->GetFolder(); - if (paneFolder == id) - return pane; - } - } - return NULL; -} - - -MSG_Pane *MSG_Master::FindPaneOfType (const char *url, MSG_PaneType type) -{ - char *path = NET_ParseURL (url, GET_PATH_PART); - if (path) - { - MSG_FolderInfo *folder = FindMailFolder (path, FALSE /*createIfMissing*/); - FREEIF(path); - if (folder) - return FindPaneOfType (folder, type); - } - return NULL; -} - - -void MSG_Master::ClearParseMailboxState() -{ - if (m_parseMailboxState != NULL) - { - delete m_parseMailboxState; - m_parseMailboxState = NULL; - } -} - -void MSG_Master::ClearParseMailboxState(const char *folderName) -{ - MSG_FolderInfoMail *mailFolder = FindMailFolder(folderName, FALSE); - ParseMailboxState *parser = (mailFolder) ? mailFolder->GetParseMailboxState() : 0; - if (parser != NULL) - { - delete parser; - mailFolder->SetParseMailboxState(NULL); - } -} - -void MSG_Master::ClearListNewsGroupState(MSG_NewsHost* host, - const char *newsGroupName) - { - MSG_FolderInfoNews *newsFolder = FindNewsFolder(host, newsGroupName); - ListNewsGroupState *state = (newsFolder) ? newsFolder->GetListNewsGroupState() : 0; - if (state != NULL) - { - delete state; - newsFolder->SetListNewsGroupState(NULL); - } -} - - -XP_Bool MSG_Master::FolderTreeExists () -{ - return m_folderTree != NULL; -} - - -MSG_FolderInfo *MSG_Master::GetFolderTree() -{ - if (!m_folderTree) - { - char* dir = XP_STRDUP(GetPrefs()->GetFolderDirectory()); - m_folderTree = new MSG_FolderInfoContainer("Parent of mail and news", 0, NULL); - - MSG_FolderArray *parentFolder = m_folderTree->GetSubFolders(); - - m_folderCache = new MSG_FolderCache (); - if (m_folderCache) - m_folderCache->ReadFromDisk (); - - if (GetPrefs()->GetMailServerIsIMAP4() && - !m_IMAPfoldersBuilt) - { - // ###tw This probably needs revisiting now that news folders are - // crammed in here too. - m_imapfolders = - MSG_IMAPFolderInfoMail::BuildIMAPFolderTree( - this, // master is used by libnet - 1, - parentFolder); - - m_IMAPfoldersBuilt = TRUE; - } - - - m_mailfolders = MSG_FolderInfoMail::BuildFolderTree(dir, 1, parentFolder, this); - - - // Create the magic folders on startup - - ///// DRAFTS ////// - XP_Bool imapDrafts = FALSE; - char *draftsLocation = NULL; - PREF_CopyCharPref("mail.default_drafts", &draftsLocation); - imapDrafts = (draftsLocation ? - (NET_URL_Type(draftsLocation) == IMAP_TYPE_URL) : - FALSE); - - if (imapDrafts) - FindMagicMailFolder(MSG_FOLDER_FLAG_DRAFTS, FALSE); - else - FindMagicMailFolder(MSG_FOLDER_FLAG_DRAFTS, TRUE); - - ///// TEMPLATES ////// - XP_Bool imapTemplates = FALSE; - char *templatesLocation = NULL; - PREF_CopyCharPref("mail.default_templates", &templatesLocation); - imapTemplates = (templatesLocation ? (NET_URL_Type(templatesLocation) == IMAP_TYPE_URL) : FALSE); - if (imapTemplates) - FindMagicMailFolder(MSG_FOLDER_FLAG_TEMPLATES, FALSE); - else - FindMagicMailFolder(MSG_FOLDER_FLAG_TEMPLATES, TRUE); - - ///// TRASH ////// - FindMagicMailFolder(MSG_FOLDER_FLAG_TRASH, TRUE); - - ///// SENT ////// - FindMagicMailFolder(MSG_FOLDER_FLAG_SENTMAIL, TRUE); - - ///// UNSENT (OUTBOX) ////// - MSG_SetQueueFolderName(QUEUE_FOLDER_NAME); - MSG_FolderInfo *q = FindMagicMailFolder(MSG_FOLDER_FLAG_QUEUE, FALSE); // see if we have "Unsent Messages" - if (!q) { - MSG_SetQueueFolderName(QUEUE_FOLDER_NAME_OLD); - q = FindMagicMailFolder(MSG_FOLDER_FLAG_QUEUE, FALSE); // if not, see if we have "Outbox" - if (!q) - { - MSG_SetQueueFolderName(QUEUE_FOLDER_NAME); - FindMagicMailFolder(MSG_FOLDER_FLAG_QUEUE,TRUE); // if not, fresh install: create "Unsent Messages" - } - else { - q->SetFlag(MSG_FOLDER_FLAG_QUEUE); // make sure we know this is the queue folder. - } - } - - // It is kept sorted, but we must resort after promoting the magic folder. - // jrm asks: probably faster to remove q, set the flag, then add it back. - m_mailfolders->GetSubFolders()->QuickSort(m_mailfolders->CompareFolders); - - - // for POP create the inbox here. Imap does it after it - // discovers all of its mailboxes - if (GetPrefs()->GetMailServerIsIMAP4()) - m_mailfolders->SetFlag(MSG_FOLDER_FLAG_ELIDED); // collapse offline mail - else - { - FindMagicMailFolder(MSG_FOLDER_FLAG_INBOX, TRUE); - m_mailfolders->ClearFlag(MSG_FOLDER_FLAG_ELIDED); - } - - // m_hosttable can be NULL if we failed to build the hosts DB - int n = m_hosttable ? m_hosttable->getNumHosts() : 0; - for (int i=0 ; i<n ; i++) { - MSG_NewsHost* host = m_hosttable->getHost(i); - XP_ASSERT(host); - if (!host) continue; - MSG_NewsFolderInfoContainer* info = - new MSG_NewsFolderInfoContainer(host, 1); - info->SetFlag(MSG_FOLDER_FLAG_ELIDED); - info->SetFlag(MSG_FOLDER_FLAG_NEWS_HOST); - parentFolder->Add(info); - host->LoadNewsrc(info); // ###tw Sigh. This is expensive. - // Probably should at least put it off until - // the user opens the host... - } - - delete m_folderCache; - m_folderCache = NULL; - XP_FREE(dir); - } - - return m_folderTree; -} - -MSG_FolderInfoMail* -MSG_Master::GetLocalMailFolderTree() -{ - if (!m_mailfolders) { - (void) GetFolderTree(); // Has a side effect of creating folders. - } - return m_mailfolders; -} - -MSG_IMAPFolderInfoContainer* -MSG_Master::GetImapMailFolderTree() -{ - if (!m_imapfolders) { - (void) GetFolderTree(); // Has a side effect of creating folders. - } - return m_imapfolders; -} - -// Find a folder, but do not create the folder trees - -MSG_FolderInfoMail* MSG_Master::FindFolderForNikiBiff(const char *path, const char *host, const char *owner) -{ - MSG_FolderInfoMail *folder = NULL; - - if (m_mailfolders) - folder = m_mailfolders->FindPathname((const char*) path); - if (!folder && m_imapfolders) - folder = FindImapMailFolder(host, path, owner, FALSE); - return folder; -} - - -MSG_NewsHost *MSG_Master::AddNewsHost(const char* hostname, - XP_Bool isxxx, int32 port) -{ - if (GetHostTable() == NULL) return NULL; - int32 defaultport = HG19826 NEWS_PORT; - if (port == 0) port = defaultport; - MSG_NewsHost* newsHost = FindHost(hostname, isxxx, port); - if (newsHost) return newsHost; - char* hostAndPort = NULL; - if (port != defaultport) { - hostAndPort = PR_smprintf("%s:%ld", hostname, long(port)); - if (!hostAndPort) return NULL; // Out of memory. - } - newsHost = - GetHostTable()->AddNewsHost(hostname, - isxxx, port, - hostAndPort ? hostAndPort : hostname); - FREEIF(hostAndPort); - if (newsHost) - { - XPPtrArray *parentFolder = - (XPPtrArray *) GetFolderTree()->GetSubFolders(); - MSG_NewsFolderInfoContainer* info = - new MSG_NewsFolderInfoContainer(newsHost, 1); - info->SetFlag(MSG_FOLDER_FLAG_ELIDED); - info->SetFlag(MSG_FOLDER_FLAG_NEWS_HOST); - parentFolder->Add(info); - // need to diddle the fat file, I guess - I'm lost. - newsHost->SetNewsrcFileName(newsHost->getNameAndPort()); - - newsHost->LoadNewsrc(info); // ###tw Sigh. This is expensive. - // Probably should at least put it off until - // the user opens the host... - - newsHost->MarkDirty(); // Make sure the newsrc will get created if it - // isn't already out there. This makes sure - // that adding the newshost will stick to the - // next session, even if the user never - // subscribes to any groups in it. See bug - // 39791. - - MSG_Pane* pane; - for (pane = GetFirstPane() ; pane ; pane = pane->GetNextPane()) { - if (pane->GetPaneType() == MSG_FOLDERPANE) { - ((MSG_FolderPane*) pane)->RedisplayAll(); - } - } - } - return newsHost; -} - -MSG_IMAPHostTable *MSG_Master::GetIMAPHostTable() -{ - if (!m_imapHostTable) - { - m_imapHostTable = new MSG_IMAPHostTable(this); - GetFolderTree(); // make sure we've loaded the hosts - } - return m_imapHostTable; -} - -MSG_IMAPHost *MSG_Master::AddIMAPHost(const char* hostname, - XP_Bool isxxx, - const char *userName, - XP_Bool checkNewMail, - int biffInterval, - XP_Bool rememberPassword, - XP_Bool usingSubscription, - XP_Bool overrideNamespace, - const char *personalOnlineDir, - const char *publicOnlineDir, - const char *otherUsersOnlineDir, - XP_Bool writePrefs /* = TRUE */) -{ - MSG_IMAPHost* imapHost = GetIMAPHostTable()->FindIMAPHost(hostname); - if (imapHost) - return imapHost; - - imapHost = - GetIMAPHostTable()->AddIMAPHost(hostname, isxxx, userName, checkNewMail, biffInterval, rememberPassword, - usingSubscription, overrideNamespace, personalOnlineDir, publicOnlineDir, otherUsersOnlineDir, writePrefs); - return imapHost; -} - -MSG_ThreadPane* MSG_Master::FindThreadPaneNamed(const char *pathname) -{ - MSG_Pane *pane; - - for (pane = GetFirstPane(); pane != NULL; pane = pane->GetNextPane()) { - if (pane->GetPaneType() == MSG_THREADPANE) { - MSG_ThreadPane* threadPane = (MSG_ThreadPane*) pane; - MSG_FolderInfo *folderInfo = threadPane->GetFolder(); - MSG_FolderInfoMail *mailFolderInfo = (folderInfo) ? folderInfo->GetMailFolderInfo() : 0; - if (mailFolderInfo && !XP_FILENAMECMP(mailFolderInfo->GetPathname(), pathname)) { - return threadPane; - } - } - } - return NULL; -} - - -void MSG_Master::FindPanesReferringToFolder (MSG_FolderInfo *folder, XPPtrArray *outArray) -{ - for (MSG_Pane *pane = GetFirstPane() ; pane != NULL; pane = pane->GetNextPane()) - { - if (folder == pane->GetFolder()) - outArray->Add (pane); - } -} - -MSG_IMAPFolderInfoMail* -MSG_Master::FindImapMailFolder(const char *hostName, const char* onlineServerName, const char *owner, XP_Bool createIfMissing) -{ - if (!hostName) - return FindImapMailFolder(onlineServerName); - - MSG_IMAPHostTable *imapHostTable = GetIMAPHostTable(); - if (imapHostTable) - { - MSG_IMAPHost *host = imapHostTable->FindIMAPHost (hostName); - - if (host && host->GetHostFolderInfo()) - return host->GetHostFolderInfo()->FindImapMailOnline(onlineServerName, owner, createIfMissing); - } - return NULL; -} - -MSG_IMAPFolderInfoMail * -MSG_Master::FindImapMailFolderFromPath(const char *pathName) -{ - if (!m_imapHostTable) return NULL; - - for (int i = 0; i < m_imapHostTable->GetSize(); i++) - { - MSG_IMAPHost *host = (MSG_IMAPHost *) m_imapHostTable->GetAt(i); - - if (host && host->GetHostFolderInfo()) - { - MSG_FolderInfo *folderInfo = host->GetHostFolderInfo()->FindMailPathname(pathName); - if (folderInfo) - return folderInfo->GetIMAPFolderInfoMail(); - } - } - return NULL; -} - -// ### dmb - what about port???? -MSG_FolderInfoContainer *MSG_Master::GetImapMailFolderTreeForHost(const char *hostName) -{ - if (!m_imapHostTable) return NULL; - MSG_IMAPHost *host = m_imapHostTable->FindIMAPHost (hostName); - - if (host && host->GetHostFolderInfo()) - return host->GetHostFolderInfo(); - return NULL; -} - -MSG_IMAPHost *MSG_Master::GetIMAPHost(const char *hostName) -{ - return (m_imapHostTable) ? m_imapHostTable->FindIMAPHost (hostName) : 0; -} - -int32 MSG_Master::GetSubscribingIMAPHosts(MSG_IMAPHost** result, int32 resultsize) -{ - if (result == NULL) - { - // just checking for size - int32 numSubscribingIMAPHosts = 0; - MSG_IMAPHostTable *imapHostTable = GetIMAPHostTable(); - if (imapHostTable) - { - int32 numIMAPHostsToFillIn = imapHostTable->GetHostList(NULL, 0); - MSG_IMAPHost **imapHosts = new MSG_IMAPHost* [numIMAPHostsToFillIn]; - int32 numIMAPHosts = GetIMAPHostTable()->GetHostList(imapHosts, numIMAPHostsToFillIn); - - for (int i = 0; i < numIMAPHosts; i++) - { - if (imapHosts[i]->GetIsHostUsingSubscription()) - numSubscribingIMAPHosts++; - } - delete imapHosts; - } - return numSubscribingIMAPHosts; - } - else - { - // actually filling in the list - int32 numIMAPHostsToFillIn = resultsize, numSubscribingIMAPHosts = 0; - if (numIMAPHostsToFillIn > 0 && (GetIMAPHostTable() != NULL)) - { - // get the IMAP Host list - int32 numIMAPHosts = GetIMAPHostTable()->GetSize(); - MSG_IMAPHost **imapHosts = new MSG_IMAPHost* [numIMAPHosts]; - int32 numIMAPHostsListed = GetIMAPHostTable()->GetHostList(imapHosts, numIMAPHosts); - - // copy them from the IMAP host list to the main result list - for (int i = 0; (i < numIMAPHostsToFillIn) && (i < numIMAPHosts); i++) - { - if (imapHosts[i]->GetIsHostUsingSubscription()) - { - result[numSubscribingIMAPHosts] = imapHosts[i]; - numSubscribingIMAPHosts++; - } - } - delete imapHosts; - } - - return numSubscribingIMAPHosts; - } -} - -// This is being changed to include all IMAP hosts, regardless of whether or not we are -// showing only subscribed folders. -// If later we want to change it back, just remove the two "TRUE"'s in the if statements. -int32 MSG_Master::GetSubscribingHosts(MSG_Host** result, int32 resultsize) -{ - if (result == NULL) - { - // just checking for size - int32 numNewsHosts = GetHostTable()->GetHostList(NULL, resultsize); - - int32 numSubscribingIMAPHosts = 0; - MSG_IMAPHostTable *imapHostTable = GetIMAPHostTable(); - if (imapHostTable) - { - numSubscribingIMAPHosts = imapHostTable->GetSize(); - } - int32 total = numNewsHosts + numSubscribingIMAPHosts; - return total; - } - else - { - // actually filling in the list - int32 numNewsHosts = GetHostTable()->GetHostList((MSG_NewsHost **)result,resultsize); - int32 total = numNewsHosts; - int32 numIMAPHostsToFillIn = resultsize - numNewsHosts; - XP_ASSERT(numIMAPHostsToFillIn >= 0); - if (numIMAPHostsToFillIn > 0 && GetIMAPHostTable() != NULL) - { - // get the IMAP Host list - int32 numIMAPHosts = GetIMAPHostTable()->GetSize(); - MSG_Host **imapHosts = new MSG_Host* [numIMAPHosts]; - int32 numIMAPHostsListed = GetIMAPHostTable()->GetHostList((MSG_IMAPHost **)imapHosts, numIMAPHosts); - int32 numSubscribingIMAPHosts = 0; - - // copy them from the IMAP host list to the main result list - for (int i = 0; i < numIMAPHosts && numNewsHosts + numSubscribingIMAPHosts < resultsize; i++) - { - result[numNewsHosts + numSubscribingIMAPHosts] = imapHosts[i]; - numSubscribingIMAPHosts++; - } - - total += numSubscribingIMAPHosts; - delete imapHosts; - } - - return total; - } -} - - -MSG_IMAPFolderInfoMail* -MSG_Master::FindImapMailFolder(const char* onlineServerName) -{ - if (!m_imapfolders) return NULL; - - return m_imapfolders->FindImapMailOnline(onlineServerName, NULL, FALSE); -} - -MSG_FolderInfoMail* -MSG_Master::FindMagicMailFolder(int flag, XP_Bool createIfMissing) -{ - MSG_FolderInfoMail *retFolder = NULL; - char *magicFolderName = m_prefs->MagicFolderName(flag); - if (magicFolderName) - { - retFolder = FindMailFolder(magicFolderName, createIfMissing); -#ifdef XP_OS2 - if (retFolder) - { - if (flag & MSG_FOLDER_FLAG_INBOX) - retFolder->SetName(INBOX_FOLDER_PRETTY_NAME); - if (flag & MSG_FOLDER_FLAG_TRASH) - retFolder->SetName(TRASH_FOLDER_PRETTY_NAME); - if (flag & MSG_FOLDER_FLAG_QUEUE) - retFolder->SetName(QUEUE_FOLDER_PRETTY_NAME); - if (flag & MSG_FOLDER_FLAG_DRAFTS) - retFolder->SetName(DRAFTS_FOLDER_PRETTY_NAME); - if (flag & MSG_FOLDER_FLAG_TEMPLATES) - retFolder->SetName(TEMPLATES_FOLDER_PRETTY_NAME); - } -#endif - - XP_FREE(magicFolderName); - } - return retFolder; -} - -MSG_FolderInfoMail* -MSG_Master::FindMailFolder(const char* pathURL, XP_Bool createIfMissing) -{ - if (!m_mailfolders) - GetFolderTree(); // at least try to build the folder tree before failing... - - if (!m_mailfolders || !pathURL) return NULL; - - if (NET_URL_Type(pathURL) == IMAP_TYPE_URL) - { - return GetFolderInfo(pathURL, createIfMissing) ? - GetFolderInfo(pathURL, createIfMissing)->GetMailFolderInfo(): - 0 ; - } - - char* folderPath = NET_ParseURL(pathURL, GET_PATH_PART); - if (!*folderPath) - StrAllocCat(folderPath, pathURL); // it was already a path? - MSG_FolderInfo* result = m_mailfolders->FindPathname(folderPath); - if (!result) - { - if (createIfMissing) - { - XP_StatStruct stat; - - /* removing orphaned summary file for nonexistent mail folder - * otherwise the creation of the missing mail folder will fail. - */ - if (0 == XP_Stat (folderPath, &stat, xpMailFolderSummary)) - XP_FileRemove(folderPath, xpMailFolderSummary); - - MSG_FolderInfoMail *mailRoot = GetLocalMailFolderTree(); - // try to strip off the folder from the pathname, since - // that's what CreateSubfolder wants. - const char *folderDir = GetPrefs()->GetFolderDirectory(); - const char *folderName = folderPath + strlen(folderDir); - if (strncmp(folderDir, folderPath, strlen(folderDir))) - goto Cleanup; - if (folderName[0] == '/') - folderName++; - int32 newFolderPos = 0; - if (mailRoot->CreateSubfolder(folderName, &result, &newFolderPos)!= eSUCCESS) - result = NULL; - else - { - MSG_FolderPane *folderPane = (MSG_FolderPane*) FindPaneOfType ((MSG_FolderInfo*)NULL, MSG_FOLDERPANE); - if (folderPane) - { - MSG_FolderInfo *parent = m_folderTree->FindParentOf (result); - if (parent) - folderPane->AddFolderToView (result, parent, newFolderPos); - } - } - } - } -Cleanup: - XP_FREEIF(folderPath); - return (MSG_FolderInfoMail *) result; -} - -// createIfMissing is currently only used for IMAPFolderInfoMail's. Also note that this -// only creates the folder info, not the actual folder on the server. This is used -// for automatically adding folders to the list before we've discovered them, as in -// a URL click on a link to a folder. -MSG_FolderInfo* MSG_Master::GetFolderInfo(const char *url, XP_Bool createIfMissing) -{ - int urlType = NET_URL_Type(url); - MSG_FolderInfo *folder = NULL; - char *folderName = NULL; - char *host_and_port = NULL; - char *owner = NULL; - - switch (urlType) - { - case NEWS_TYPE_URL: - { - folderName = NewsGroupDB::GetGroupNameFromURL(url); - host_and_port = NET_ParseURL (url, GET_HOST_PART); - - folder = FindNewsFolder(host_and_port, folderName, *url == 's'); - } - break; - case MAILBOX_TYPE_URL: - { - folderName = NET_ParseURL(url, GET_PATH_PART); - if (folderName && folderName[0] != '/') - { - char *saveFolderName = folderName; - folderName = PR_smprintf("%s/%s", m_prefs->GetFolderDirectory(), saveFolderName); - FREEIF(saveFolderName); - } - folder = FindMailFolder(folderName, FALSE); - break; - } - case IMAP_TYPE_URL: - { - owner = NET_ParseURL (url, GET_USERNAME_PART); - host_and_port = NET_ParseURL (url, GET_HOST_PART); - folderName = NET_ParseURL(url, GET_PATH_PART); // folderName will have leading '/' - if (folderName && *folderName) - folder = FindImapMailFolder(host_and_port, folderName + 1, owner, createIfMissing); - else - folder = GetImapMailFolderTreeForHost(host_and_port); - } - default: - break; - } - - FREEIF(folderName); - FREEIF(host_and_port); - FREEIF(owner); - return folder; -} - - -int MSG_Master::GetMessageLineForURL(const char *url, MSG_MessageLine *msgLine) -{ - int urlType = NET_URL_Type(url); - MSG_FolderInfo *folder = NULL; - char *folderName = NULL; - char *hostName = NULL; - int ret = -1; // ### dmb what should error be? - MessageKey key = MSG_MESSAGEKEYNONE; - - switch (urlType) - { - case NEWS_TYPE_URL: - { - // given a url of the form news://news/<message-id>, GetGroupNameFromURL - // will return the <message-id>, so go with it. - char *idPart = NewsGroupDB::GetGroupNameFromURL(url); - if (!idPart) - break; - - char *msgId = XP_STRDUP (NET_UnEscape (idPart)); - - // need to iterate through open thread and message panes trying to - // find this messageid. - MSG_Pane *pane = FindFirstPaneOfType(MSG_MESSAGEPANE); - while (pane != NULL) - { - if (MSG_GetKeyFromMessageId(pane, msgId, &key) == 0) - break; - pane = FindNextPaneOfType(pane->GetNextPane(), MSG_MESSAGEPANE); - } - if (pane == NULL) - { - pane = FindFirstPaneOfType(MSG_THREADPANE); - while (pane != NULL) - { - if (MSG_GetKeyFromMessageId(pane, msgId, &key) == 0) - break; - pane = FindNextPaneOfType(pane->GetNextPane(), MSG_THREADPANE); - } - } - if (key != MSG_MESSAGEKEYNONE) - ret = MSG_GetThreadLineById(pane, key, msgLine); - - } - break; - case MAILBOX_TYPE_URL: - { - folderName = NET_ParseURL(url, GET_PATH_PART); - if (folderName && folderName[0] != '/') - { - char *saveFolderName = folderName; - folderName = PR_smprintf("%s/%s", m_prefs->GetFolderDirectory(), saveFolderName); - FREEIF(saveFolderName); - } - folder = FindMailFolder(folderName, FALSE); - if (folder) - { - MSG_Pane *pane = FindPaneOfType(folder, MSG_ANYPANE); - if (!pane) - break; - char *path = NET_ParseURL(url, GET_SEARCH_PART); // is this right? - char *idPart = XP_STRSTR(path, "?id="); - char *msgId = NULL; - if (idPart) - { - char *amp = XP_STRCHR(idPart+1, '&'); - if (amp) - *amp = '\0'; // get rid of next ? if any - msgId = XP_STRDUP (NET_UnEscape (idPart+4)); - - ret = MSG_GetKeyFromMessageId (pane, msgId, &key); - if (ret >= 0) - ret = MSG_GetThreadLineById(pane, key, msgLine); - } - FREEIF(path); - FREEIF(msgId); - } - break; - } - case IMAP_TYPE_URL: - { - } - default: - break; - } - FREEIF(folderName); - FREEIF(hostName); - return ret; -} - - -MSG_FolderInfoNews *MSG_Master::FindNewsFolder(const char *host_and_port, - const char *newsGroupName, - XP_Bool xxxP, - XP_Bool autoSubscribe /*= TRUE*/) -{ - const char *atSign = XP_STRCHR(host_and_port, '@'); - const char *hostName = atSign; - - // if Collabra has been disabled through the prefs/mission control - if (!m_collabraEnabled) - return NULL; - - // in case this is a x newsgroup and has username/password tagged along - if (hostName) - hostName++; - else - hostName = host_and_port; - - int32 port = 0; - char* colon = XP_STRCHR(host_and_port, ':'); - if (colon) { - *colon = '\0'; - port = XP_ATOI(colon + 1); - } - - MSG_NewsHost *host = FindHost(hostName, xxxP, port); - MSG_FolderInfoNews *info = NULL; - - if (!host && strlen(hostName) == 0) - host = m_hosttable->GetDefaultHost(TRUE); - if (!host && autoSubscribe) - host = AddNewsHost(hostName, xxxP, port); - if (host) - { - GetFolderTree(); // this has the side effect of loading the - // news rc - it is great! - info = host->FindGroup(newsGroupName); - - // maybe we should add the group but not subscribe to it - though this - // will grow newsrc file - if ((!info || !info->IsSubscribed()) && autoSubscribe && XP_STRLEN(newsGroupName) > 0) { - // let us try autosubscribe... - info = host->AddGroup(newsGroupName); - if (info) - info->SetAutoSubscribed(TRUE); - } - if (info && hostName != host_and_port) { - // we have a pair of username and password here - // parse it and save it along with the newsgroup - const char *usercolon = XP_STRCHR(host_and_port, ':'); - if (usercolon) { - char *username = (char*) - XP_ALLOC(usercolon - host_and_port + 1); - if (username) { - XP_MEMSET(username, 0, usercolon - host_and_port + 1); - XP_MEMCPY(username, host_and_port, - usercolon - host_and_port); - char *munged = HG28265(username); - info->SetNewsgroupUsername(munged); - FREEIF(munged); - HG24239 - } - usercolon++; - if (usercolon < atSign) { - char *password = (char*) XP_ALLOC(atSign - usercolon + 1); - if (password) { - XP_MEMSET(password, 0, atSign - usercolon + 1); - XP_MEMCPY(password, usercolon, atSign - usercolon); - char *munged = HG23258(password); - info->SetNewsgroupPassword(munged); - FREEIF(munged); - HG56307 - } - } - } - // else we do not have a legitimate username/password - // forget about the whole thing - } - // if (info && !info->IsSubscribed()) - // info->Subscribe(TRUE, this); - } - if (colon) *colon = ':'; - return info; -} - - - -MSG_FolderInfoNews* -MSG_Master::FindNewsFolder(MSG_NewsHost* host, - const char *newsGroupName, - XP_Bool autoSubscribe /*= TRUE*/) -{ - MSG_FolderInfoNews *info = NULL; - - // if Collabra has been disabled through the prefs/mission control - if (!m_collabraEnabled) - return NULL; - - XP_ASSERT(host); - if (!host) return NULL; - GetFolderTree(); // this has the side effect of loading the - // news rc - it is great! - info = host->FindGroup(newsGroupName); - // maybe we should add the group but not subscribe to it - though this - // will grow newsrc file - if (!info && autoSubscribe && XP_STRLEN(newsGroupName) > 0) { - // let us try autosubscribe... - info = host->AddGroup(newsGroupName); - } - return info; -} - - -MSG_FolderInfo *MSG_Master::FindNextFolder(MSG_FolderInfo *startFolder) -{ - MSG_FolderIterator folderIterator(GetFolderTree()); - MSG_FolderInfo *curFolder; - - curFolder = folderIterator.AdvanceToFolder(startFolder); - curFolder = folderIterator.Next(); - while (curFolder != NULL && (curFolder->GetType() == FOLDER_CONTAINERONLY || curFolder->GetType() == FOLDER_IMAPSERVERCONTAINER)) - curFolder = folderIterator.Next(); - return curFolder; -} - -MSG_FolderInfo *MSG_Master::FindNextFolderWithUnread(MSG_FolderInfo *startFolder) -{ - MSG_FolderIterator folderIterator(GetFolderTree()); - MSG_FolderInfo *curFolder; - MSG_FolderInfo *retFolder = NULL; - - curFolder = folderIterator.AdvanceToFolder(startFolder); - while (curFolder != NULL) - { - curFolder = folderIterator.Next(); - // ignore trash folder while looking for next folder with unread - // This will still hit child folders of trash with unread. - if (curFolder && (curFolder->GetNumUnread() + curFolder->GetNumPendingUnread()) > 0 && !(curFolder->GetFlags() & MSG_FOLDER_FLAG_TRASH)) - { - retFolder = curFolder; - break; - } - } - - return retFolder; -} - -ParseMailboxState * -MSG_Master::GetParseMailboxState(const char *folderName) -{ - MSG_FolderInfoMail *mailFolder = FindMailFolder(folderName, FALSE); - return (mailFolder) ? mailFolder->GetParseMailboxState() : 0; -} - -ListNewsGroupState * -MSG_Master::GetListNewsGroupState(MSG_NewsHost* host, - const char *newsGroupName) -{ - MSG_FolderInfoNews *newsFolder = FindNewsFolder(host, newsGroupName); - return (newsFolder) ? newsFolder->GetListNewsGroupState() : 0; -} - -MSG_NewsHost* -MSG_Master::FindHost(const char* name, XP_Bool isxxx, int32 port) -{ - if (!name) return NULL; // Can happen, especially if we do not have a - // default newshost set. - const char* atSign = XP_STRCHR(name, '@'); - if (atSign) { - name = atSign + 1; // In case there is a username/password tagged - // along with this host. - } - char* dupname = NULL; - MSG_NewsHost* result = NULL; - if (port < 0) { - port = 0; - if (XP_STRCHR(name, ':')) { - dupname = XP_STRDUP(name); - if (!dupname) return NULL; - char* ptr = XP_STRCHR(dupname, ':'); - XP_ASSERT(ptr); - if (ptr) { - *ptr++ = '\0'; - port = XP_ATOI(ptr); - } - name = dupname; - } - } - if (port == 0) port = HG82266 NEWS_PORT; - XP_ASSERT(XP_STRCHR(name, ':') == NULL); - // m_hosttable can be NULL if we failed to build the hosts DB - int n = m_hosttable ? m_hosttable->getNumHosts() : 0; - for (int i=0 ; i<n ; i++) { - MSG_NewsHost* host = m_hosttable->getHost(i); - if (XP_STRCMP(host->getStr(), name) == 0 && - HG18262 - host->getPort() == port) { - result = host; - break; - } - } - FREEIF(dupname); - return result; -} - - -MSG_NewsHost* -MSG_Master::GetDefaultNewsHost() -{ - if (m_hosttable) return m_hosttable->GetDefaultHost(TRUE); - return NULL; -} - - -// The intent is to allow the user to type in a group name -// or a group url (including news server) and we would add the -// group to the newsrc file. -MSG_FolderInfoNews *MSG_Master::AddNewsGroup(const char *groupURL) -{ - char *hostName = NET_ParseURL (groupURL, GET_HOST_PART); - char *groupName = NET_ParseURL(groupURL, GET_PATH_PART); - char *origGroupName = groupName; - char *origHostName = hostName; - MSG_FolderInfoNews *newsInfo = NULL; - HG12765 - - if (groupName[0] == '/') - groupName++; - else if (groupName[0] == '\0') - groupName = (char *) groupURL; - if (hostName[0] == '\0') - { - FREEIF(origHostName); - PREF_CopyCharPref("network.hosts.nntp_server", &origHostName); - if (origHostName && *origHostName == '\0') { - XP_FREE(origHostName); - origHostName = NULL; - } - if (!origHostName) return NULL; - hostName = origHostName; - int32 defport = 0; - PREF_GetIntPref("news.server_port", &defport); - if (defport && defport != (HG16236 NEWS_PORT)) { - char* tmp = PR_smprintf("%s:%ld", origHostName, long(defport)); - XP_FREE(origHostName); - origHostName = tmp; - if (!origHostName) return NULL; - } - hostName = origHostName; - } - - MSG_NewsHost *newsHost = FindHost(hostName, *groupURL == 's', -1); - if (newsHost) - newsInfo = newsHost->AddGroup(groupName); - - if (newsInfo) // if group already exists, AddGroup will return NULL. - { - XP_File newsrcFile = XP_FileOpen(hostName, - HG16215 xpNewsRC, - XP_FILE_APPEND_BIN); - if (newsrcFile != NULL) - { - XP_FileWrite(groupName, strlen(groupName), newsrcFile); - XP_FileWrite(":\n", 2, newsrcFile); - XP_FileClose(newsrcFile); - } - } - FREEIF(origHostName); - FREEIF(origGroupName); - - return newsInfo; -} - -MSG_FolderInfoNews *MSG_Master::AddProfileNewsgroup (MSG_NewsHost* host, - const char *groupName) -{ - char *groupUrl = PR_smprintf ("%s/%s", host->GetURLBase(), groupName); - if (groupUrl) - { - MSG_FolderInfoNews *newsFolder = AddNewsGroup (groupUrl); - host->SetIsProfile (groupName, TRUE); - XP_FREE(groupUrl); - - if (newsFolder) - { - newsFolder->SetFlag (MSG_FOLDER_FLAG_PROFILE_GROUP); - BroadcastFolderChanged (newsFolder); - } - - return newsFolder; - } - return NULL; -} - -XP_Bool MSG_Master::AcquireRulesSemaphore (void *semRequester) -{ - if (m_rulesSemaphoreHolder) - return FALSE; - - m_rulesSemaphoreHolder = semRequester; - return TRUE; -} - -XP_Bool MSG_Master::ReleaseRulesSemaphore (void *semHolder) -{ - if (m_rulesSemaphoreHolder == semHolder) - { - m_rulesSemaphoreHolder = NULL; - return TRUE; - } - return FALSE; -} - -XP_Bool MSG_Master::AcquireEditHeadersSemaphore (void * semRequester) -{ - if (m_editHeadersSemaphoreHolder) - return FALSE; - m_editHeadersSemaphoreHolder = semRequester; - return TRUE; -} - -XP_Bool MSG_Master::ReleaseEditHeadersSemaphore (void *semHolder) -{ - if (m_editHeadersSemaphoreHolder == semHolder) - { - m_editHeadersSemaphoreHolder = NULL; - return TRUE; - } - return FALSE; -} - - -void MSG_Master::PostCreateImapFolderUrlExitFunc (URL_Struct *URL_s, int status, MWContext * /* window_id */) -{ - // Not sure why this happens (pane is deleted), but it's a guaranteed crash. - if (!MSG_Pane::PaneInMasterList(URL_s->msg_pane)) - URL_s->msg_pane = NULL; - if (URL_s->msg_pane && (0 == status)) - { - MSG_Master *master = URL_s->msg_pane->GetMaster(); - char *host_and_port = NET_ParseURL (URL_s->address, GET_HOST_PART); - - // find the folder we created - char *folderName = IMAP_CreateOnlineSourceFolderNameFromUrl(URL_s->address); - MSG_IMAPFolderInfoMail *newImapFolder = master->FindImapMailFolder(host_and_port, folderName, NULL, FALSE); - FREEIF(host_and_port); - - if (MSG_FOLDERPANE == URL_s->msg_pane->GetPaneType()) - ((MSG_FolderPane*) URL_s->msg_pane)->PostProcessRemoteCopyAction(); - - master->BroadcastFolderAdded (newImapFolder, URL_s->msg_pane); - - FREEIF(folderName); - - } - else if (URL_s->msg_pane) // this may be wrong - the url could have been interrupted after the folder was created. - { - MSG_Master *master = URL_s->msg_pane->GetMaster(); - for (MSG_Pane *pane = master->GetFirstPane(); pane; pane = pane->GetNextPane()) - { - MSG_PaneType type = pane->GetPaneType(); - if (type == MSG_PANE || type == MSG_FOLDERPANE) - FE_PaneChanged (pane, FALSE, MSG_PaneNotifyNewFolderFailed, 0); - } - } -} - - -// This function is in the Master because we want to be able to create mail -// folders without having any panes, and certainly without a folder pane. -// -MsgERR MSG_Master::CreateMailFolder (MSG_Pane *invokingPane, MSG_FolderInfo *parent, const char *childName) -{ - MsgERR status = 0; - MSG_FolderPane *folderPane = (MSG_FolderPane*) FindFirstPaneOfType (MSG_FOLDERPANE); - - XP_Bool folderIsIMAPContainer = parent && (parent->GetType() == FOLDER_IMAPSERVERCONTAINER); - - if (parent && !folderIsIMAPContainer && (parent->GetDepth() == 1)) { - // trying to create a folder in the root - parent = GetLocalMailFolderTree(); - } - - - if (parent && parent->ContainsChildNamed(childName)) - { - status = MK_MSG_FOLDER_ALREADY_EXISTS; - if (invokingPane) - { - FE_Alert(invokingPane->GetContext(),XP_GetString(status)); - FE_PaneChanged (folderPane, FALSE, MSG_PaneNotifyNewFolderFailed, status); // let the FE know creation failed, - } - return status; - } - - if ((parent->GetType() == FOLDER_IMAPMAIL) || folderIsIMAPContainer) - { - - // this code will only allow creation of subfolders for existing - // online folders. - - const char *parentOnlineName; - const char *hostName; - MSG_IMAPHost *host = NULL; - char newFolderOnlineHierarchySeparator = kOnlineHierarchySeparatorUnknown; - if (folderIsIMAPContainer) - { - // creating a new IMAP folder, and the parent is the IMAP container. - // This means that we might actually need to use the personal namespace - // as the parent folder, since we will sometimes strip it off. - hostName = ((MSG_IMAPFolderInfoContainer *) parent)->GetName(); - host = ((MSG_IMAPFolderInfoContainer *) parent)->GetIMAPHost(); - parentOnlineName = host->GetRootNamespacePrefix(); - } - else - { - parentOnlineName = ((MSG_IMAPFolderInfoMail *) parent)->GetOnlineName(); - host = ((MSG_IMAPFolderInfoMail *) parent)->GetIMAPHost(); - newFolderOnlineHierarchySeparator = ((MSG_IMAPFolderInfoMail *) parent)->GetOnlineHierarchySeparator(); - } - - char *newFolderOnlineName = (char *) XP_ALLOC(XP_STRLEN(childName) + XP_STRLEN(parentOnlineName) + 2); // 2 == '/' and '\0' - XP_STRCPY(newFolderOnlineName, parentOnlineName); - - const char *namespacePrefix = host->GetNamespacePrefixForFolder(parentOnlineName); - XP_Bool parentIsNamespace = FALSE; - if (namespacePrefix && - !XP_STRCMP(namespacePrefix, parentOnlineName)) - { - parentIsNamespace = TRUE; // the folder we are discovering is actually a namespace prefix. - } - - // If the parent is a namespace itself, we shouldn't append any delimiters between the namespace - // and the top-level folder - if (!parentIsNamespace) - { - if (*newFolderOnlineName && *(newFolderOnlineName + XP_STRLEN(newFolderOnlineName) - 1) != '/') - XP_STRCAT(newFolderOnlineName, "/"); - } - XP_STRCAT(newFolderOnlineName, childName); - - if (NET_IsOffline()) - { - MSG_IMAPFolderInfoMail *newFolder = MSG_IMAPFolderInfoMail::CreateNewIMAPFolder(parent->GetIMAPFolderInfoMail(), invokingPane->GetContext(), - newFolderOnlineName, childName, kPersonalMailbox, host); - if (newFolder) - newFolder->SetFolderPrefFlags(MSG_FOLDER_PREF_OFFLINEEVENTS | MSG_FOLDER_PREF_CREATED_OFFLINE | newFolder->GetFolderPrefFlags()); - - // tell FE about new folder, but don't make it select it - I hate that. - FE_PaneChanged (invokingPane, FALSE, MSG_PaneNotifySelectNewFolder, MSG_VIEWINDEXNONE); - // what about name validation? What about other folder types besides kPersonalMailbox? - return 0; - } - - char *createMailboxURL = CreateImapMailboxCreateUrl(host->GetHostName(), newFolderOnlineName,newFolderOnlineHierarchySeparator); - if (createMailboxURL) - { - URL_Struct *url_struct = NET_CreateURLStruct(createMailboxURL, NET_SUPER_RELOAD); - if (url_struct && (invokingPane || folderPane)) - { - if (invokingPane) - { - MSG_UrlQueue::AddUrlToPane(url_struct, MSG_Master::PostCreateImapFolderUrlExitFunc, invokingPane); - } - else - { - // should not get here, but just for backward compatibility until XFE and MacFE call the right glue function - if (folderPane) - MSG_UrlQueue::AddUrlToPane(url_struct, MSG_Master::PostCreateImapFolderUrlExitFunc, folderPane); - } - } - - XP_FREE(createMailboxURL); - } - FREEIF(newFolderOnlineName); - - } - else - { - MSG_FolderInfo *newFolder = NULL; - int32 newFolderPos = 0; - status = parent->CreateSubfolder (childName, &newFolder, &newFolderPos); - if (status == 0) - { - BroadcastFolderAdded (newFolder, invokingPane); - } - else { // status != 0; folder creation failed - if (folderPane) { - FE_Alert (folderPane->GetContext(), XP_GetString (status)); // put up the message to the user - FE_PaneChanged (folderPane, FALSE, MSG_PaneNotifyNewFolderFailed, status); // let the FE know creation failed, - } - // in case it wants to do anything - } - } - - return status; -} - -XP_Bool MSG_Master::CleanupNeeded() -{ - MSG_FolderIterator folderIterator(GetFolderTree()); - MSG_FolderInfo *curFolder; - - curFolder = folderIterator.First(); - - while(curFolder) - { - if (curFolder->RequiresCleanup()) - return TRUE; - curFolder = folderIterator.Next(); - } - return FALSE; -} - -void MSG_Master::CleanupFolders(MSG_Pane *pane) -{ - MSG_FolderIterator folderIterator(GetFolderTree()); - MSG_FolderInfo *curFolder; - XPPtrArray foldersToCleanup; - - curFolder = folderIterator.First(); - - // build up list of folders that need compaction - while(curFolder) - { - if (curFolder->RequiresCleanup()) - foldersToCleanup.Add(curFolder); - curFolder = folderIterator.Next(); - } - if (foldersToCleanup.GetSize() > 0) - { - MSG_BackgroundCleanup *bgCleanupHandler = new MSG_BackgroundCleanup(foldersToCleanup); - if (bgCleanupHandler) - bgCleanupHandler->Begin(pane); - } -} - -int MSG_Master::DownloadForOffline(MSG_Pane *pane, MSG_FolderInfo *folder /*=NULL*/) -{ - int returnValue = 0; - if (folder && !folder->IsNews()) - { - FE_AllConnectionsComplete(pane->GetContext()); - return -1; - } - - MSG_DownloadOfflineFoldersState *downloadOfflineFoldersState = new MSG_DownloadOfflineFoldersState(pane); - if (downloadOfflineFoldersState) - { - if (folder) - returnValue = downloadOfflineFoldersState->DownloadOneFolder(folder); - else - returnValue = downloadOfflineFoldersState->DoIt(); - } - - return returnValue; -} - -class MSG_GoOfflineState : public MSG_PaneURLChain -{ -public: - MSG_GoOfflineState(MSG_Pane *pane, XP_Bool goOffline); - virtual int GetNextURL(); - XP_Bool m_bReplicateDirectories; - XP_Bool m_bDownloadDiscussions; - XP_Bool m_bGetNewMail; - XP_Bool m_bSendOutbox; - XP_Bool m_bOnline; - XP_Bool m_bDownloadRet; - XP_Bool m_bLaunchedURL; - XP_Bool m_bGoOffline; -}; - -MSG_GoOfflineState::MSG_GoOfflineState(MSG_Pane *pane, XP_Bool goOffline) : MSG_PaneURLChain(pane) -{ - m_bDownloadDiscussions = FALSE; - m_bGetNewMail = FALSE; - m_bSendOutbox = FALSE; - m_bDownloadRet = 0; - m_bLaunchedURL = FALSE; - m_bGoOffline = goOffline; - PREF_GetBoolPref("network.online", &m_bOnline); - if (!m_bOnline) - PREF_SetBoolPref("network.online", TRUE); -} - -int MSG_GoOfflineState::GetNextURL() -{ - int ret = 0; - if (m_bDownloadDiscussions) - { - m_bDownloadDiscussions = FALSE; - m_bDownloadRet = m_pane->GetMaster()->DownloadForOffline(m_pane); - m_bLaunchedURL = (m_bLaunchedURL) ? TRUE : (ret >= 0); - if (m_bLaunchedURL) - return 0; - } - if (m_bSendOutbox) - { - m_bSendOutbox = FALSE; - m_bLaunchedURL = TRUE; - m_pane->DeliverQueuedMessages(); - return 0; - } - if (m_bGetNewMail) - { - m_bGetNewMail = FALSE; - m_bLaunchedURL = TRUE; - if (m_pane->GetMaster()->GetPrefs()->GetMailServerIsIMAP4()) - { - m_pane->GetMaster()->ImapGoOnline(m_pane); // uses MSG_UrlQueue chaining - } - else - return m_pane->GetNewMail(m_pane, NULL); - } - if (m_bReplicateDirectories) - { - m_bReplicateDirectories = FALSE; - if (NET_ReplicateDirectory(m_pane, NULL)) - m_bLaunchedURL = TRUE; - } - else - { - if (m_bOnline && m_bGoOffline) - { - // this will need to terminate all imap connections, not just the cached one, - m_pane->GetMaster()->CloseCachedImapConnections(); - PREF_SetBoolPref("network.online", FALSE); - } - if (!m_bLaunchedURL) - FE_PaneChanged(m_pane, TRUE, MSG_PaneProgressDone, 0); - else - m_pane->ClearURLChain(); // will delete this, so don't do anything after this with this!!! - } - return 0; -} - -int MSG_Master::SynchronizeOffline(MSG_Pane *pane, XP_Bool bDownloadDiscussions, XP_Bool bGetNewMail, XP_Bool bSendOutbox, XP_Bool bReplicateDirectories, XP_Bool goOffline) -{ - MSG_GoOfflineState *queue = new MSG_GoOfflineState (pane, goOffline); - if (queue) - { - queue->m_bReplicateDirectories = bReplicateDirectories; - queue->m_bDownloadDiscussions = bDownloadDiscussions; - queue->m_bGetNewMail = bGetNewMail; - queue->m_bSendOutbox = bSendOutbox; - pane->SetURLChain(queue); - queue->GetNextURL(); - } - return 0; -} - -MSG_PurgeInfo *MSG_Master::GetPurgeHdrInfo() -{ - return m_purgeHdrPref; -} - -MSG_PurgeInfo *MSG_Master::GetPurgeArtInfo() -{ - return m_purgeArtPref; -} - -void MSG_Master::ImapGoOnline(MSG_Pane *paneForUrls) -{ - if (GetPrefs()->GetMailServerIsIMAP4()) - { - XP_ASSERT(paneForUrls); - - OfflineImapGoOnlineState *goState = new OfflineImapGoOnlineState(paneForUrls); - if (goState) - goState->ProcessNextOperation(); - } -} - -XP_Bool MSG_Master::IsCachePasswordProtected() -{ - return m_passwordProtectCache; -} - -XP_Bool -MSG_Master::IsHTMLOK(MSG_FolderInfo* info) -{ - MSG_FolderInfoNews* group = info->GetNewsFolderInfo(); - XP_ASSERT(group && group->GetHost() && group->GetNewsgroupName()); - if (!group || !group->GetHost() || !group->GetNewsgroupName()) return -1; - return group->GetHost()->IsHTMLOk(group->GetNewsgroupName()); -} - -int -MSG_Master::SetIsHTMLOK(MSG_FolderInfo* info, MWContext* context, - XP_Bool value) -{ - MSG_FolderInfoNews* group = info->GetNewsFolderInfo(); - XP_ASSERT(group && group->GetHost() && group->GetNewsgroupName()); - if (!group || !group->GetHost() || !group->GetNewsgroupName()) return -1; - MSG_NewsHost* host = group->GetHost(); - const char* name = group->GetNewsgroupName(); - if (value == host->IsHTMLOk(name)) return 0; - if (value) { - return host->SetIsHTMLOKGroup(name, value); - } - char* tmp = XP_STRDUP(name); - if (!tmp) return MK_OUT_OF_MEMORY; - char* ancestor = NULL; - while (*tmp) { - if (host->IsHTMLOKTree(tmp)) { - FREEIF(ancestor); - ancestor = XP_STRDUP(tmp); - if (!ancestor) return MK_OUT_OF_MEMORY; - } - char* ptr = XP_STRRCHR(tmp, '.'); - if (ptr) *ptr = '\0'; - else break; - } - XP_FREE(tmp); - tmp = NULL; - if (!ancestor) { - return host->SetIsHTMLOKGroup(name, value); - } - XP_ASSERT(!value); // If value is TRUE, and we found an ancestor, - // then host->IsHTMLOk() should have returned - // TRUE as well. - if (value) return -1; - tmp = - PR_smprintf(XP_GetString(MK_MSG_SET_HTML_NEWSGROUP_HEIRARCHY_CONFIRM), - name, ancestor, ancestor); - XP_FREE(ancestor); - ancestor = NULL; - if (!tmp) return MK_OUT_OF_MEMORY; - XP_Bool doit = FE_Confirm(context, tmp); - XP_FREE(tmp); - tmp = NULL; - if (!doit) return -1; // ### Need a better return value. - tmp = XP_STRDUP(name); - if (!tmp) return MK_OUT_OF_MEMORY; - while (*tmp) { - host->SetIsHTMLOKTree(tmp, value); - char* ptr = XP_STRRCHR(tmp, '.'); - if (ptr) *ptr = '\0'; - else break; - } - return host->SetIsHTMLOKGroup(name, value); -} - -void MSG_Master::ClearFolderGotNewBit() -{ - MSG_FolderIterator folderIterator(GetFolderTree()); - MSG_FolderInfo *curFolder = folderIterator.First(); - - // clear new bit on all folders - should stop at mail... - while(curFolder) - { - curFolder->ClearFlag(MSG_FOLDER_FLAG_GOT_NEW); - curFolder = folderIterator.Next(); - } -} - -void MSG_Master::SetMailAccountURL(const char* urlString) -{ - if (!urlString) - { - FREEIF(m_mailAccountUrl); - } - else - { - if (urlString && XP_STRLEN(urlString)) - StrAllocCopy(m_mailAccountUrl, urlString); - } -} - -XP_Bool MSG_Master::InitFolderFromCache (MSG_FolderInfo *folder) -{ - if (m_folderCache) - return m_folderCache->InitializeFolder (folder); - return FALSE; -} - -// Returns TRUE if we are running the auto-upgrade process now, FALSE otherwise -XP_Bool MSG_Master::TryUpgradeToIMAPSubscription(MWContext *context, XP_Bool forceBringUpSubscribeUI, - MSG_Pane *paneToAssociate, MSG_IMAPHost *hostBeingOpened) -{ - if (forceBringUpSubscribeUI || - (!NET_IsOffline() && ShouldUpgradeToIMAPSubscription())) - { - XP_Bool usingIMAP = FALSE; - - char *oldHostName = NULL; - MSG_IMAPHost *upgradeHost = NULL; - PREF_CopyCharPref("network.hosts.pop_server", &oldHostName); - if (oldHostName) - { - upgradeHost = GetIMAPHost(oldHostName); - usingIMAP = (upgradeHost != NULL); - } - - if (paneToAssociate->GetPaneType() == MSG_THREADPANE) - m_imapUpgradeBeginPane = (MSG_ThreadPane *)paneToAssociate; - - if (hostBeingOpened && (upgradeHost != hostBeingOpened)) - { - // This case should be extremely rare, and there is no really good way to handle it. - // But we will try our best... - // It occurs when the user has added a second IMAP server before running - // the upgrade, and has made that second server their default host. - // If that's the case, we should run the upgrade on the host for - // the folder being opened (hostBeingOpened), but ONLY IF the - // host's using_subscription bit is set to false. If it is set to - // true, then we should mark the upgrade as done. - upgradeHost = hostBeingOpened; - XP_Bool alreadyUsingSubscription = FALSE; - char *prefString = PR_smprintf("mail.imap.server.%s.using_subscription", hostBeingOpened->GetHostName()); - if (prefString) - { - PREF_GetBoolPref(prefString, &alreadyUsingSubscription); - XP_FREE(prefString); - } - if (alreadyUsingSubscription) - { - m_prefs->SetMailNewsProfileAgeFlag(MSG_IMAP_SUBSCRIBE_UPGRADE_FLAG); - m_imapUpgradeBeginPane = 0; - return FALSE; - } - } - - if (usingIMAP) - { - XP_Bool leaveSubscriptionAlone = FALSE; - PREF_GetBoolPref("mail.imap.upgrade.leave_subscriptions_alone", &leaveSubscriptionAlone); - if (leaveSubscriptionAlone && !forceBringUpSubscribeUI) - { - // set the upgraded flag, and don't turn on using_subscription - m_prefs->SetMailNewsProfileAgeFlag(MSG_IMAP_SUBSCRIBE_UPGRADE_FLAG); - m_imapUpgradeBeginPane = 0; - return FALSE; - } - else - { - // ok, it's time to upgrade - XP_Bool subscribeToAll = FALSE; - MSG_IMAPUpgradeType upgradePath = MSG_IMAPUpgradeAutomatic; - PREF_GetBoolPref("mail.imap.upgrade.auto_subscribe_to_all", &subscribeToAll); - if (subscribeToAll && !forceBringUpSubscribeUI) - { - FE_Alert(context, XP_GetString(MK_IMAP_UPGRADE_WAIT_WHILE_UPGRADE)); - } - else if (!forceBringUpSubscribeUI) - { -#ifdef FE_IMPLEMENTS_IMAP_SUBSCRIBE_UPGRADE - upgradePath = FE_PromptIMAPSubscriptionUpgrade (context, oldHostName); - if (upgradePath == MSG_IMAPUpgradeDont) - { - m_imapUpgradeBeginPane = 0; - return TRUE; // don't let them continue - } -#else // FE_IMPLEMENTS_IMAP_SUBSCRIBE_UPGRADE - XP_Bool upgradePathBool = FE_Confirm(context, XP_GetString(MK_IMAP_UPGRADE_PROMPT_QUESTION)); - if (upgradePathBool) - upgradePath = MSG_IMAPUpgradeAutomatic; - else - upgradePath = MSG_IMAPUpgradeCustom; -#endif - } - else if (forceBringUpSubscribeUI) - { - // forceBringUpSubscribeUI - upgradePath = MSG_IMAPUpgradeCustom; - } - - if (upgradePath == MSG_IMAPUpgradeCustom) - { - // the user said "Manual", so bring up the subscribe UI. - //if (!forceBringUpSubscribeUI) // don't alert them if we're forcing it - we already alterted them - // FE_Alert(context, XP_GetString(MK_IMAP_UPGRADE_CUSTOM)); - // Set some flags so we know the callback should write out - // the upgrade state if successful. - SetUpgradingToIMAPSubscription(TRUE); // It is the subscribe pane's responsibility - // to clear this flag; it is not critical if it - // is not immediately cleared, however, since its only - // purpose is to instruct the subscribe pane to write - // out the fact that we've upgraded. - FE_CreateSubscribePaneOnHost(this, context, upgradeHost); - // return TRUE, since we want to stop the current folder load URL - return TRUE; - } - else - { - // either "subscribe to all" or "automatic," so switch to the new URL - char *upgradeUrl = CreateIMAPUpgradeToSubscriptionURL(oldHostName, subscribeToAll); - URL_Struct *URL_s = NET_CreateURLStruct(upgradeUrl, NET_DONT_RELOAD); - if(!URL_s) // out of memory? - { - FE_Alert(context, XP_GetString(MK_OUT_OF_MEMORY)); - m_imapUpgradeBeginPane = 0; - return FALSE; - } - URL_s->internal_url = TRUE; - /*pw_ptr */ m_progressWindow = PW_Create(context, pwApplicationModal); - if (m_progressWindow) - { - MWContext *progressContext = PW_CreateProgressContext(); - if (progressContext) - { - PW_SetCancelCallback(m_progressWindow, CancelIMAPProgressCallback, progressContext); - progressContext->mailMaster = this; - PW_AssociateWindowWithContext(progressContext, m_progressWindow); - PW_SetWindowTitle(m_progressWindow, "IMAP Folder Upgrade"); - PW_SetLine1(m_progressWindow, "Upgrading to IMAP Subscription..."); - PW_SetLine2(m_progressWindow, NULL); - //PW_Show(m_progressWindow); - paneToAssociate->AdoptProgressContext(progressContext); - m_upgradingToIMAPSubscription = TRUE; - NET_GetURL(URL_s, FO_PRESENT, progressContext, MSG_Master::PostImapSubscriptionUpgradeExitFunc); - } - else - { - FE_Alert(context, XP_GetString(MK_OUT_OF_MEMORY)); - m_imapUpgradeBeginPane = 0; - return FALSE; - } - } - else - { - FE_Alert(context, XP_GetString(MK_OUT_OF_MEMORY)); - m_imapUpgradeBeginPane = 0; - return FALSE; - } - return TRUE; - } - - } - } - else - { - // Not Using IMAP - set the pref flag, and don't try again - m_prefs->SetMailNewsProfileAgeFlag(MSG_IMAP_SUBSCRIBE_UPGRADE_FLAG); - m_imapUpgradeBeginPane = 0; - return FALSE; - } - } - else - { - // Offline, or shouldn't upgrade - return FALSE; - } -} - -void MSG_Master::PostIMAPUpgradeFolderLoad(int status) -{ - if (m_imapUpgradeBeginPane) - { - m_imapUpgradeBeginPane->FinishLoadingIMAPUpgradeFolder(status != MK_INTERRUPTED); - m_imapUpgradeBeginPane = 0; - } -} - -XP_Bool MSG_Master::ShouldUpgradeToIMAPSubscription() -{ - int32 profileAge = m_prefs->GetStartingMailNewsProfileAge(); - if (profileAge & MSG_IMAP_SUBSCRIBE_UPGRADE_FLAG) // we've upgraded to subscription already - return FALSE; - else - return TRUE; -} - -void MSG_Master::SetIMAPSubscriptionUpgradedPrefs() -{ - char *oldHostName = NULL; - PREF_CopyCharPref("network.hosts.pop_server", &oldHostName); - if (oldHostName) - { - MSG_IMAPHost *upgradedHost = GetIMAPHost(oldHostName); - XP_ASSERT(upgradedHost); - if (upgradedHost) - { - upgradedHost->SetIsHostUsingSubscription(TRUE); - } - XP_FREE(oldHostName); - } - - m_prefs->SetMailNewsProfileAgeFlag(MSG_IMAP_SUBSCRIBE_UPGRADE_FLAG); -} - - -XP_Bool MSG_Master::ShowIMAPProgressWindow() -{ - if (m_progressWindow) - { - PW_Show(m_progressWindow); - PW_SetProgressRange(m_progressWindow, 1, 0); - return TRUE; - } - else - return FALSE; -} - -/* static */ void MSG_Master::PostImapSubscriptionUpgradeExitFunc (URL_Struct *, int status, MWContext *context) -{ - MSG_Master *master = context->mailMaster; - if (context->type == MWContextProgressModule) - PW_AssociateWindowWithContext(context, NULL); - - XP_ASSERT(master); - if (master) - { - if (master->m_progressWindow) - { - PW_Hide(master->m_progressWindow); - PW_Destroy(master->m_progressWindow); - master->m_progressWindow = NULL; - } - master->m_upgradingToIMAPSubscription = FALSE; - master->PostIMAPUpgradeFolderLoad(status); - } -} - - -/* static */ void MSG_Master::CancelIMAPProgressCallback(void *closure) -{ - MWContext *context = (MWContext *)closure; - if (context) - { - XP_InterruptContext(context); - } -} - -// Returns a newly-allocated space-delimited list of the arbitrary headers needed to be downloaded for filters -// for a given host, when using IMAP. Returns NULL if there are none, or the host could not be found. -// This list should not include standard filter headers, such as "To" or "CC" -char *MSG_Master::GetArbitraryHeadersForHostFromFilters(const char* /*hostName*/) -{ - // eventually we'll want to provide just the ones used in filters... - // short term fix for now to test the system where we return a space delimited list of - // all registered custom headers from the prefs. Return string is null terminated. - - int numHeaders = 0; - int headerBufSize = 0; - - MSG_Prefs * prefs = GetPrefs(); - if (prefs) - { - numHeaders = prefs->GetNumCustomHeaders(); - if (numHeaders > 0) - { - char ** arrayOfHeaders = (char **) XP_ALLOC(sizeof(char *) * numHeaders); - if (arrayOfHeaders) - { - for (int index = 0; index < numHeaders; index++) - { - arrayOfHeaders[index] = prefs->GetNthCustomHeader(index); - if (arrayOfHeaders[index]) - headerBufSize += XP_STRLEN(arrayOfHeaders[index])+1; // + 1 for space delimter or null terminator - } - - char * headerBuffer = (char *) XP_ALLOC(sizeof(char) * headerBufSize); - if (headerBuffer) - { - XP_STRCPY(headerBuffer, ""); - int i = 0; - for (i = 0; i < numHeaders; i++) - if (arrayOfHeaders[i]) - { - XP_STRCAT(headerBuffer, arrayOfHeaders[i]); - XP_FREE(arrayOfHeaders[i]); // free memory for the arbitrary header string - - // However, on this day NJ wins... - if (i < numHeaders-1) // only add the space if it is the last character... - XP_STRCAT(headerBuffer, " "); // space delimited - } - } - - XP_FREE(arrayOfHeaders); - return headerBuffer; - } - } // NJ > TX - } // TX >>> nj - - return NULL; -} - - -// Returns a newly-allocated space-delimited list of the arbitrary headers needed to be downloaded for MDN -// for a given host, when using IMAP. Returns NULL if there are none, or the host could not be found. -// For instance, if MDN is not enabled, it should return NULL. -// An example of something it might return would look like: "From To CC Resent-From" -char *MSG_Master::GetArbitraryHeadersForHostFromMDN(const char* /*hostName*/) -{ - XP_Bool bMdnEnabled = FALSE; - int32 intPref = 0; - char *hdrString = NULL; - - PREF_GetIntPref("mail.incorporate.return_receipt", &intPref); - if (intPref == 1) - StrAllocCopy(hdrString, "Content-Type"); - - PREF_GetBoolPref("mail.mdn.report.enabled", &bMdnEnabled); - if (bMdnEnabled) - if (hdrString) - StrAllocCat(hdrString, " Return-Receipt-To Disposition-Notification-To"); - else - StrAllocCopy(hdrString, "Return-Receipt-To Disposition-Notification-To"); - - return hdrString; -} - -int MSG_Master::PromptForHostPassword(MWContext *context, MSG_FolderInfo *folder) -// prompt for the password and match against saved password until user gets it -// right or cancels. Returns 0 if passed, non-zero for failure. -// For local folders, we want to use the default imap host password if there's an imap host, -// otherwise, we want to use the pop password, which we'll store in the local Inbox summary file. -// This routine also needs to set the appropriate internal state so the user won't be challenged -// again for the password when they make a real network connection. -{ - const char *userName = folder->GetUserName(); - - int ret = -1; - const int kNumPasswordTries = 3; - - char *userNameDup = NULL; - - if (userName) - userNameDup = XP_STRDUP(userName); - else - return MK_POP3_USERNAME_UNDEFINED; - - const char *host = folder->GetHostName(); - char *alert; - - const char *savedPassword = folder->GetRememberedPassword(); - - // well, if we don't have a remembered password, just let them in. - if (!savedPassword || !XP_STRLEN(savedPassword)) - { - FREEIF(userNameDup); - return 0; - } - - const char *fmt1 = XP_GetString( XP_PASSWORD_FOR_POP3_USER ); - - if (fmt1) /* We need to read a password. */ - { - - char *password; - size_t len = (XP_STRLEN(fmt1) + (host ? XP_STRLEN(host) : 0) + 300) * sizeof(char); - char *prompt = (char *) XP_ALLOC (len); - if (!prompt) - return MK_OUT_OF_MEMORY; - - PR_snprintf (prompt, len, fmt1, userNameDup, host); - - FREEIF(userNameDup); - char *unmungedPassword = NULL; - if (savedPassword) - unmungedPassword = HG32686(savedPassword); - - if (unmungedPassword == NULL || !XP_STRLEN(unmungedPassword)) - return MK_POP3_PASSWORD_UNDEFINED; - - int i; - for (i = 0; i < kNumPasswordTries; i++) - { - password = FE_PromptPassword(context, prompt); - - if (!password || !XP_STRLEN(password)) - { - ret = -1; - break; - } - if (!XP_STRCMP(password, unmungedPassword)) - { - ret = 0; - if (GetPrefs()->GetMailServerIsIMAP4()) - { - MSG_IMAPHost *defaultIMAPHost = GetIMAPHostTable()->GetDefaultHost(); - if (defaultIMAPHost) - IMAP_SetPasswordForHost(defaultIMAPHost->GetHostName(), password); - } - else - { - HG53961 - NET_SetPopPassword(savedPassword); - } - SetLocalFoldersAuthenticated(); - break; - } - else - { - char *alert = XP_GetString(XP_MSG_CACHED_PASSWORD_NOT_MATCHED); - if (alert) - FE_Alert(context, alert); - } - FREEIF(password); - } - if (ret != 0) - { - alert = XP_GetString(XP_MSG_PASSWORD_FAILED); - FE_Alert(context, alert); - } - - XP_FREE(prompt); - FREEIF(unmungedPassword); - } - return ret; -} diff --git a/mozilla/lib/libmsg/msgmast.h b/mozilla/lib/libmsg/msgmast.h deleted file mode 100644 index 78b75f2117d..00000000000 --- a/mozilla/lib/libmsg/msgmast.h +++ /dev/null @@ -1,255 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgMast_H_ -#define _MsgMast_H_ - -#include "prlong.h" -#include "msgprnot.h" -#include "errcode.h" -class MSG_Prefs; -class MSG_Pane; -class MSG_ThreadPane; -class MSG_FolderInfo; -class MSG_FolderInfoMail; -class MSG_FolderInfoContainer; -class MSG_IMAPFolderInfoContainer; -class MSG_FolderInfoNews; -class ParseMailboxState; -class msg_HostTable; -class MSG_NewsHost; -class ListNewsGroupState; -class XPPtrArray; -struct MSG_PurgeInfo; -class MSG_FolderCache; -class MSG_CachedConnectionList; -class MSG_IMAPHostTable; - -typedef void * pw_ptr; - -class MSG_Master : public MSG_PrefsNotify { -public: - MSG_Master(MSG_Prefs* prefs); - virtual ~MSG_Master(); - - virtual void NotifyPrefsChange(NotifyCode code); - - MSG_FolderInfo *GetFolderTree(); - MSG_FolderInfoMail* GetLocalMailFolderTree(); - MSG_IMAPFolderInfoContainer* GetImapMailFolderTree(); - XP_Bool FolderTreeExists (); - - void BroadcastFolderChanged(MSG_FolderInfo *folder); - void BroadcastFolderDeleted (MSG_FolderInfo *folder); - void BroadcastFolderAdded (MSG_FolderInfo *folder, MSG_Pane *instigator = NULL); - void BroadcastFolderKeysAreInvalid (MSG_FolderInfo *folder); - - MSG_Prefs* GetPrefs() {return m_prefs;} - - void SetFirstPane(MSG_Pane* pane); - MSG_Pane* GetFirstPane(); - - int32 GetFolderChildren(MSG_FolderInfo* folder, MSG_FolderInfo** result, - int32 resultsize); - - int32 GetFoldersWithFlag(uint32 flags, MSG_FolderInfo** result, - int32 resultsize); - - XP_Bool GetFolderLineById(MSG_FolderInfo* info, MSG_FolderLine* data); - MSG_Pane *FindPaneOfType(MSG_FolderInfo *id, MSG_PaneType type) ; - MSG_Pane *FindPaneOfType(const char *url, MSG_PaneType type) ; - - MSG_Pane *FindFirstPaneOfType(MSG_PaneType type); - MSG_Pane *FindNextPaneOfType(MSG_Pane *startHere, MSG_PaneType type); - - MSG_IMAPFolderInfoMail *FindImapMailFolder(const char* onlineServerName); // As imap would say, BAD - MSG_IMAPFolderInfoMail *FindImapMailFolder(const char *hostName, const char* onlineServerName, const char *owner, XP_Bool createIfMissing); - - MSG_IMAPFolderInfoMail *FindImapMailFolderFromPath(const char *pathName); - MSG_FolderInfoMail* FindMagicMailFolder(int flag, XP_Bool createIfMissing); - MSG_FolderInfoMail* FindFolderForNikiBiff(const char *path, const char *host, const char *owner); - MSG_FolderInfoMail *FindMailFolder(const char* pathname, - XP_Bool createIfMissing); - MSG_FolderInfoNews *FindNewsFolder(const char *host_and_port, - const char *newsGroupName, - XP_Bool secureP, - XP_Bool autoSubscribe = TRUE); - MSG_FolderInfoNews *FindNewsFolder(MSG_NewsHost* host, - const char *newsGroupName, - XP_Bool autoSubscribe = TRUE); - MSG_ThreadPane* FindThreadPaneNamed(const char *pathname); - void FindPanesReferringToFolder (MSG_FolderInfo *folder, XPPtrArray *outArray); - MSG_FolderInfo *FindNextFolder(MSG_FolderInfo *startFolder); - MSG_FolderInfo *FindNextFolderWithUnread(MSG_FolderInfo *startFolder); - - ParseMailboxState *GetParseMailboxState(const char *folderName); - ParseMailboxState *GetMailboxParseState() {return m_parseMailboxState;} - void SetParseMailboxState(ParseMailboxState *state) - {m_parseMailboxState = state;} - void ClearParseMailboxState(); - void ClearParseMailboxState(const char *folderName); - - // Get News Header helper routines - ListNewsGroupState *GetListNewsGroupState(MSG_NewsHost* host, - const char *newsGroupName); - void ClearListNewsGroupState(MSG_NewsHost* host, - const char *newsGroupName); - - MSG_FolderInfo* GetFolderInfo(const char *url, XP_Bool createIfMissing); - int GetMessageLineForURL(const char *url, MSG_MessageLine *msgLine); - MSG_NewsHost* FindHost(const char* name, XP_Bool isSecure, - int32 port); // If port is negative, then we will - // look for a ":portnum" as part of the - // name. Otherwise, there had better - // not be a colon in the name. - MSG_NewsHost* GetDefaultNewsHost(); - MSG_FolderInfoNews * AddNewsGroup(const char *groupURL); - MSG_FolderInfoNews * AddProfileNewsgroup(MSG_NewsHost* host, - const char *group); - MSG_NewsHost * AddNewsHost(const char* hostname, XP_Bool isSecure, int32 port); - - msg_HostTable* GetHostTable() {return m_hosttable;} - MSG_IMAPHostTable *GetIMAPHostTable(); - MSG_IMAPHost *AddIMAPHost(const char* hostname, - XP_Bool isSecure, - const char *userName, - XP_Bool checkNewMail, - int biffInterval, - XP_Bool rememberPassword, - XP_Bool usingSubscription, - XP_Bool overrideNamespace, - const char *personalOnlineDir, - const char *publicOnlineDir, - const char *otherUsersOnlineDir, - XP_Bool writePrefs = TRUE); - - MSG_IMAPHost *GetIMAPHost(const char *hostName); - MSG_FolderInfoContainer *GetImapMailFolderTreeForHost(const char *hostName); - int32 GetSubscribingHosts(MSG_Host** result, int32 resultsize); - int32 GetSubscribingIMAPHosts(MSG_IMAPHost** result, int32 resultsize); - - XP_Bool CleanupNeeded(); - void CleanupFolders(MSG_Pane *pane); - int SynchronizeOffline(MSG_Pane *pane, XP_Bool bDownloadDiscussions, XP_Bool bGetNewMail, XP_Bool bSendOutbox, XP_Bool bGetDirectories, XP_Bool goOffline); - int DownloadForOffline(MSG_Pane *pane, MSG_FolderInfo *folder = NULL); - void ClearFolderGotNewBit(); - - XP_Bool AcquireRulesSemaphore (void*); - XP_Bool ReleaseRulesSemaphore (void*); - - XP_Bool AcquireEditHeadersSemaphore (void *); - XP_Bool ReleaseEditHeadersSemaphore (void *); - - // Non-standard implementation but to lure the customers ... - XP_Bool IsUserAuthenticated() {return m_userAuthenticated;} - void SetUserAuthenticated(XP_Bool bAuthenticated) { m_userAuthenticated = bAuthenticated; } - XP_Bool AreLocalFoldersAuthenticated() {return m_localFoldersAuthenticated;} - void SetLocalFoldersAuthenticated() {m_localFoldersAuthenticated = TRUE;} - - void SetMailAccountURL(const char* urlString); - const char* GetMailAccountURL() { return m_mailAccountUrl; } - - TNavigatorImapConnection* UnCacheImapConnection(const char *host, const char *folderName); - XP_Bool TryToCacheImapConnection(TNavigatorImapConnection *connection, const char *host, const char *folderName); - void CloseCachedImapConnections(); - XP_Bool HasCachedConnection(MSG_IMAPFolderInfoMail *folder); - void ImapFolderClosed(MSG_FolderInfo *folder); - - MsgERR CreateMailFolder (MSG_Pane *invokingPane, MSG_FolderInfo *parent, const char *childName); - MSG_PurgeInfo *GetPurgeHdrInfo(); - MSG_PurgeInfo *GetPurgeArtInfo(); - - void ImapGoOnline(MSG_Pane *paneForUrls); - - XP_Bool IsHTMLOK(MSG_FolderInfo* group); - int SetIsHTMLOK(MSG_FolderInfo* group, MWContext* context, XP_Bool value); - - XP_Bool InitFolderFromCache (MSG_FolderInfo *folder); - - static void PostCreateImapFolderUrlExitFunc (URL_Struct *URL_s, int status, MWContext *window_id); - - XP_Bool IsCachePasswordProtected(); - XP_Bool IsCollabraEnabled() { return m_collabraEnabled; }; - XP_Bool TryUpgradeToIMAPSubscription(MWContext *context, XP_Bool forceBringUpSubscribeUI, - MSG_Pane *paneToAssociate, MSG_IMAPHost *hostBeingOpened); - void SetUpgradingToIMAPSubscription(XP_Bool upgrading) { m_upgradingToIMAPSubscription = upgrading; } - XP_Bool GetUpgradingToIMAPSubscription() { return m_upgradingToIMAPSubscription; } - static void PostImapSubscriptionUpgradeExitFunc (URL_Struct *URL_s, int status, MWContext *context); - static void CancelIMAPProgressCallback(void *closure); - void SetIMAPSubscriptionUpgradedPrefs(); // call upon upgrade success, to write out pref. - XP_Bool ShowIMAPProgressWindow(); - void PostIMAPUpgradeFolderLoad(int status); - - XP_Bool GetPlayingBackOfflineOps() {return m_playingBackOfflineOps;} - void SetPlayingBackOfflineOps(XP_Bool playingBackOfflineOps) {m_playingBackOfflineOps = playingBackOfflineOps;} - - char *GetArbitraryHeadersForHostFromFilters(const char *hostName); - char *GetArbitraryHeadersForHostFromMDN(const char *hostName); - int PromptForHostPassword(MWContext *context, MSG_FolderInfo *folder); - -protected: - XP_Bool ShouldUpgradeToIMAPSubscription(); - -private: - MSG_Prefs* m_prefs; - MSG_Pane* m_firstpane; - - MSG_FolderInfo* m_folderTree; // Master list of all folders. - MSG_FolderInfoMail* m_mailfolders; // List of local mail folders. - MSG_IMAPFolderInfoContainer* m_imapfolders; // List of imap mail folders. - - // get mailbox header handling state - only one ever... - // This means we can only be parsing one at a time. - ParseMailboxState *m_parseMailboxState; - XP_Bool m_IMAPfoldersBuilt; - msg_HostTable* m_hosttable; - MSG_IMAPHostTable *m_imapHostTable; - - MSG_CachedConnectionList *m_cachedConnectionList; - - void *m_editHeadersSemaphoreHolder; - void *m_rulesSemaphoreHolder; - // This is a non-standard implementation. But.... - XP_Bool m_userAuthenticated; - - MSG_PurgeInfo *m_purgeHdrPref; - MSG_PurgeInfo *m_purgeArtPref; - int32 m_purgeThreshhold; - char *m_mailAccountUrl; - - MSG_FolderCache *m_folderCache; - - // whether or not Collabra is enabled, from the prefs and/or Mission Control - // default is true - XP_Bool m_collabraEnabled; - XP_Bool m_upgradingToIMAPSubscription; - XP_Bool m_playingBackOfflineOps; - XP_Bool m_passwordProtectCache; - XP_Bool m_localFoldersAuthenticated; - - // For the IMAP subscription upgrade - pw_ptr m_progressWindow; - MSG_ThreadPane *m_imapUpgradeBeginPane; -}; - - -#endif /* _MsgMast_H_ */ diff --git a/mozilla/lib/libmsg/msgmdn.cpp b/mozilla/lib/libmsg/msgmdn.cpp deleted file mode 100644 index 15a84d4c6c2..00000000000 --- a/mozilla/lib/libmsg/msgmdn.cpp +++ /dev/null @@ -1,930 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msgmdn.h" -#include "net.h" -#include "xp_time.h" -#include "prtime.h" -#include "prtypes.h" -#include "prsystem.h" -#include "fe_proto.h" -#include "msg.h" -#include "msgfinfo.h" -#include "msgimap.h" -#include "msgpane.h" -#include "prefapi.h" -#include "intl_csi.h" -#include "msgurlq.h" -#include "gui.h" -#include "msgprefs.h" -#include "mkutils.h" -#include "mktcp.h" -#include "netutils.h" - -extern "C" -{ - extern int MK_MSG_MDN_DISPLAYED; - extern int MK_MSG_MDN_DISPATCHED; - extern int MK_MSG_MDN_PROCESSED; - extern int MK_MSG_MDN_DELETED; - extern int MK_MSG_MDN_DENIED; - extern int MK_MSG_MDN_FAILED; - extern int MK_MSG_MDN_WISH_TO_SEND; - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_DELIV_MAIL; - extern int MK_MDN_DISPLAYED_RECEIPT; - extern int MK_MDN_DISPATCHED_RECEIPT; - extern int MK_MDN_PROCESSED_RECEIPT; - extern int MK_MDN_DELETED_RECEIPT; - extern int MK_MDN_DENIED_RECEIPT; - extern int MK_MDN_FAILED_RECEIPT; -} - -extern "C" char *mime_make_separator(const char *prefix); -extern "C" char *msg_generate_message_id(); -extern "C" char *strip_continuations(char *original); - -#define MH_ALLOC_COPY(dst, src) \ - do { dst = (char *) XP_ALLOC(src->length+1); *(dst+src->length)=0; \ - if (src->length) XP_MEMCPY(dst, src->value, src->length); } while (0) -#define PUSH_N_FREE_STRING(p) \ - do { if (p) { status = WriteString(p); PR_smprintf_free(p); p=0; \ - if (status<0) return status; } \ - else { return MK_OUT_OF_MEMORY; } } while (0) - -char DispositionTypes[7][16] = { - "displayed", - "dispatched", - "processed", - "deleted", - "denied", - "failed", - "" -}; - -MSG_ProcessMdnNeededState::MSG_ProcessMdnNeededState( - EDisposeType intendedType, - MSG_Pane *pane, - MSG_FolderInfo *folder, - uint32 key, - MimeHeaders *srcHeaders, - XP_Bool autoAction) -{ - XP_ASSERT (srcHeaders && pane); - if (!srcHeaders || !pane) return; - m_disposeType = intendedType; - m_pane = pane; - m_autoAction = autoAction; - - // *** no matter what happened with sending MDN report set the IMAP - // MDNSent flag first. - StoreImapMDNSentFlag(folder, key); - - m_returnPath = MimeHeaders_get (srcHeaders, HEADER_RETURN_PATH, FALSE, - FALSE); - m_dispositionNotificationTo = - MimeHeaders_get(srcHeaders, HEADER_DISPOSITION_NOTIFICATION_TO, FALSE, - FALSE); - if (!m_dispositionNotificationTo) - m_dispositionNotificationTo = - MimeHeaders_get(srcHeaders, HEADER_RETURN_RECEIPT_TO, FALSE, - FALSE); - m_date = MimeHeaders_get (srcHeaders, HEADER_DATE, FALSE, FALSE); - m_to = MimeHeaders_get (srcHeaders, HEADER_TO, FALSE, FALSE); - m_cc = MimeHeaders_get (srcHeaders, HEADER_CC, FALSE, FALSE); - m_subject = MimeHeaders_get (srcHeaders, HEADER_SUBJECT, FALSE, FALSE); - if (m_subject) strip_continuations(m_subject); - m_messageId = MimeHeaders_get (srcHeaders, HEADER_MESSAGE_ID, FALSE, - FALSE); - m_originalRecipient = MimeHeaders_get (srcHeaders, - HEADER_ORIGINAL_RECIPIENT, FALSE, - FALSE); - - m_all_headers = (char *) XP_ALLOC(srcHeaders->all_headers_fp + 1); - *(m_all_headers+srcHeaders->all_headers_fp)=0; - m_all_headers_size = srcHeaders->all_headers_fp; - XP_MEMCPY(m_all_headers, srcHeaders->all_headers, - srcHeaders->all_headers_fp); - InitAndProcess(); -} - -MSG_ProcessMdnNeededState::MSG_ProcessMdnNeededState( - EDisposeType intendedType, - MSG_Pane *pane, - MSG_FolderInfo *folder, - uint32 key, - struct message_header *returnPath, - struct message_header *dnt, - struct message_header *to, - struct message_header *cc, - struct message_header *subject, - struct message_header *date, - struct message_header *originalRecipient, - struct message_header *messageId, - char *allHeaders, - int32 allHeadersSize, - XP_Bool autoAction) -{ - XP_ASSERT (pane); - if (!pane) return; - m_disposeType = intendedType; - m_pane = pane; - m_autoAction = autoAction; - - // *** no matter what happened with sending MDN report set the IMAP - // MDNSent flag first. - StoreImapMDNSentFlag(folder, key); - - MH_ALLOC_COPY (m_returnPath, returnPath); - MH_ALLOC_COPY (m_dispositionNotificationTo, dnt); - MH_ALLOC_COPY (m_to, to); - MH_ALLOC_COPY (m_cc, cc); - MH_ALLOC_COPY (m_date, date); - MH_ALLOC_COPY (m_subject, subject); - MH_ALLOC_COPY (m_originalRecipient, originalRecipient); - MH_ALLOC_COPY (m_messageId, messageId); - - m_all_headers = (char *) XP_ALLOC (allHeadersSize+1); - *(m_all_headers+allHeadersSize) = 0; - m_all_headers_size = allHeadersSize; - XP_MEMCPY(m_all_headers, allHeaders, allHeadersSize); - InitAndProcess(); -} - -void MSG_ProcessMdnNeededState::InitAndProcess() -{ - XP_Bool mdnEnabled = FALSE; - - m_outFile = 0; - m_csid = 0; - m_msgFileName = 0; - m_mimeSeparator = 0; - m_autoSend = FALSE; - m_reallySendMdn = FALSE; - - PREF_GetBoolPref("mail.mdn.report.enabled", &mdnEnabled); - - if (m_dispositionNotificationTo && - mdnEnabled && - ProcessSendMode() && - ValidateReturnPath()) - CreateMdnMsg(); -} - -int32 MSG_ProcessMdnNeededState::OutputAllHeaders() -{ - XP_ASSERT(m_all_headers && m_all_headers_size); - - // **** this is disgusting; I don't have a better way to deal with it - char *buf = m_all_headers, *buf_end = - m_all_headers+m_all_headers_size; - char *start = buf, *end = buf; - int32 count = 0, ret = 0; - - while (buf < buf_end) - { - switch (*buf) - { - case 0: - if (*(buf+1) == LF) - { - // *buf = CR; - end = buf; - } - else if (*(buf+1) == 0) - { - // the case of message id - *buf = '>'; - } - break; - case CR: - end = buf; - *buf = 0; - break; - case LF: - if (buf > start && *(buf-1) == 0) - { - start = buf + 1; - end = start; - } - else - { - end = buf; - } - break; - } - buf++; - - if (end > start && (*end == LF || !*end)) - { - // strip out private X-Mozilla-Status header & X-Mozilla-Draft-Info - if (!XP_STRNCASECMP(start, X_MOZILLA_STATUS, X_MOZILLA_STATUS_LEN) || - !XP_STRNCASECMP(start, X_MOZILLA_DRAFT_INFO, X_MOZILLA_DRAFT_INFO_LEN)) - { - // make sure we are also copying the last null terminated char - // XP_MEMCPY(start, end+2, (buf_end+1) - (end+2)); - // buf_end -= (end+2 - start); - // m_all_headers_size -= (end+2 - start); - if (*end == LF) - start = end+1; - else - start = end+2; - } - else - { - XP_Bool endIsLF = *end == LF; - if (endIsLF) - *end = 0; - char *wrapped_string = (char *) - XP_WordWrap(m_csid, (unsigned char *) start, 72, FALSE); - if (wrapped_string) - { - ret = WriteString(wrapped_string); - if (ret < 0) return ret; - count += ret; - XP_FREEIF(wrapped_string); - ret = WriteString(CRLF); - if (ret < 0) return ret; - count += ret; - } - if (endIsLF) - start = end+1; - else - start = end+2; - } - buf = start; - end = start; - } - } - return count; -} - - -MSG_ProcessMdnNeededState::~MSG_ProcessMdnNeededState() -{ - if (m_outFile) - { - XP_FileClose(m_outFile); - m_outFile = 0; - } - - if (m_msgFileName) - { - XP_FileRemove(m_msgFileName, xpFileToPost); - XP_FREEIF(m_msgFileName); - } - - XP_FREEIF(m_mimeSeparator); - XP_FREEIF(m_returnPath); - XP_FREEIF(m_dispositionNotificationTo); - XP_FREEIF(m_to); - XP_FREEIF(m_cc); - XP_FREEIF(m_subject); - XP_FREEIF(m_date); - XP_FREEIF(m_originalRecipient); - XP_FREEIF(m_messageId); - XP_FREEIF(m_all_headers); -} - -int32 -MSG_ProcessMdnNeededState::WriteString( const char *str ) -{ - XP_ASSERT (str); - if (!str) return 0; - - int32 len = XP_STRLEN(str); - - return XP_FileWrite(str, len, m_outFile); -} - - -XP_Bool -MSG_ProcessMdnNeededState::MailAddrMatch( const char *addr1, const char *addr2) -{ - XP_Bool isMatched = TRUE; - const char *atSign1 = NULL, *atSign2 = NULL; - const char *lt = NULL, *local1 = NULL, *local2 = NULL; - const char *end1 = NULL, *end2 = NULL; - - if (!addr1 || !addr2) - return FALSE; - - lt = XP_STRCHR(addr1, '<'); - if (!lt) - local1 = addr1; - else - local1 = lt+1; - - lt = XP_STRCHR(addr2, '<'); - if (!lt) - local2 = addr2; - else - local2 = lt+1; - - end1 = XP_STRCHR(local1, '>'); - if (!end1) - end1 = addr1 + XP_STRLEN(addr1); - - end2 = XP_STRCHR(local2, '>'); - if (!end2) - end2 = addr2 + XP_STRLEN(addr2); - - atSign1 = XP_STRCHR(local1, '@'); - atSign2 = XP_STRCHR(local2, '@'); - if (!atSign1 || !atSign2 || // ill formed addr-spec - (atSign1 - local1) != (atSign2 - local2)) - { - isMatched = FALSE; - } - else if (XP_STRNCMP(local1, local2, (atSign1-local1))) - { // case sensitive compare for local part - isMatched = FALSE; - } - else if ((end1 - atSign1) != (end2 - atSign2) || - XP_STRNCASECMP(atSign1, atSign2, (end1 - atSign1))) - { // case insensitive compare for domain part - isMatched = FALSE; - } - return isMatched; -} - -XP_Bool -MSG_ProcessMdnNeededState::ValidateReturnPath() -{ - // ValidateReturnPath applies to Automatic Send Mode only - // if we were in manual mode by pass this check - if (!m_autoSend) - return m_reallySendMdn; - - if (!m_returnPath || !m_dispositionNotificationTo || - !*m_returnPath || !*m_dispositionNotificationTo) - { - m_autoSend = FALSE; - goto done; - } - - m_autoSend = MailAddrMatch(m_returnPath, m_dispositionNotificationTo); - -done: - return m_reallySendMdn; -} - -XP_Bool -MSG_ProcessMdnNeededState::NotInToOrCc() -{ - XP_ASSERT(m_pane); - msg_StringArray to_cc_list (TRUE); - MSG_Prefs *prefs = m_pane->GetPrefs(); - XP_ASSERT(prefs); - char *reply_to = NULL; - char *to = m_to ? MSG_ExtractRFC822AddressMailboxes(m_to) : (char *)NULL; - char *cc = m_cc ? MSG_ExtractRFC822AddressMailboxes(m_cc) : (char *)NULL; - const char *usr_addr = FE_UsersMailAddress(); - int i, size; - XP_Bool bRet = FALSE; - - // start with a simple check - if (XP_STRCASESTR(m_to, usr_addr) || XP_STRCASESTR(m_cc, usr_addr)) - goto done; - - PREF_CopyCharPref("mail.identity.reply_to", &reply_to); - - to_cc_list.ImportTokenList(to); - to_cc_list.ImportTokenList(cc); - - for (i=0, size=to_cc_list.GetSize(); i < size; i++) - { - const char *addr = to_cc_list.GetAt(i); - - if (prefs->IsEmailAddressAnAliasForMe(addr) || - (reply_to && XP_STRCASESTR(reply_to, addr))) - goto done; - } - bRet = TRUE; - -done: - XP_FREEIF(to); - XP_FREEIF(cc); - XP_FREEIF(reply_to); - return bRet; -} - -XP_Bool -MSG_ProcessMdnNeededState::ProcessSendMode() -{ - const char *user_addr = FE_UsersMailAddress(); - const char *localDomain = NULL; - char *prefDomain = NULL; - int miscState = 0; - int32 intPref; - - XP_ASSERT(user_addr); - if (!user_addr) - return m_reallySendMdn; - - PREF_CopyCharPref("mail.identity.defaultdomain", &prefDomain); - - - localDomain = XP_STRCHR(user_addr, '@'); - - if (prefDomain && *prefDomain) - { - if (!XP_STRCASESTR(m_dispositionNotificationTo, prefDomain)) - miscState |= MDN_OUTSIDE_DOMAIN; - XP_FREEIF(prefDomain); - } - else if (localDomain) - { - localDomain++; // advance after @ sign - if (!XP_STRCASESTR(m_dispositionNotificationTo, localDomain)) - miscState |= MDN_OUTSIDE_DOMAIN; - } - if (NotInToOrCc()) - { - miscState |= MDN_NOT_IN_TO_CC; - } - m_reallySendMdn = TRUE; - // ********* - // How are we gona deal with the auto forwarding issues? Some server - // didn't bother to add addition header or modify existing header to the - // message when forwarding. They simply copy the exact same message to - // another user's mailbox. Some change To: to Apparently-To: - // ********* - // starting from lowest denominator to highest - if (!miscState) - { // under normal situation: recipient is in to and cc - // list, sender is from the same domain - intPref = 0; - PREF_GetIntPref("mail.mdn.report.other", &intPref); - switch (intPref) - { - default: - case 0: - m_reallySendMdn = FALSE; - break; - case 1: - m_autoSend = TRUE; - break; - case 2: - m_autoSend = FALSE; - break; - case 3: - m_autoSend = TRUE; - m_disposeType = eDenied; - break; - } -#ifdef CHECK_SENDER_AND_USER_ARE_SAME - // original sender is same as current user; doesn't make sense - if (m_reallySendMdn && - MailAddrMatch(m_dispositionNotificationTo, user_addr)) - m_reallySendMdn = FALSE; -#endif - } - else if (miscState == (MDN_OUTSIDE_DOMAIN | MDN_NOT_IN_TO_CC)) - { - int32 intPref2 = 0; - intPref = 0; - PREF_GetIntPref("mail.mdn.report.outside_domain", &intPref); - PREF_GetIntPref("mail.mdn.report.not_in_to_cc", &intPref2); - if (intPref != intPref2) - { - m_autoSend = FALSE; // ambiguous; always ask - } - else - { - switch (intPref) - { - default: - case 0: - m_reallySendMdn = FALSE; - break; - case 1: - m_autoSend = TRUE; - break; - case 2: - m_autoSend = FALSE; - break; - } - } - } - else if (miscState & MDN_OUTSIDE_DOMAIN) - { - intPref = 0; // reset int pref to 0 - PREF_GetIntPref("mail.mdn.report.outside_domain", &intPref); - switch (intPref) - { - default: - case 0: - m_reallySendMdn = FALSE; - break; - case 1: - m_autoSend = TRUE; - break; - case 2: - m_autoSend = FALSE; - break; - } - } - else if (miscState & MDN_NOT_IN_TO_CC) - { - intPref =0; // reset to 0 - PREF_GetIntPref("mail.mdn.report.not_in_to_cc", &intPref); - switch (intPref) - { - case 0: - default: - m_reallySendMdn = FALSE; - break; - case 1: - m_autoSend = TRUE; - break; - case 2: - m_autoSend = FALSE; - break; - } - } - - return m_reallySendMdn; -} - -void -MSG_ProcessMdnNeededState::CreateMdnMsg() -{ - int32 status = 0; - - if (!m_autoSend) - m_reallySendMdn = - FE_Confirm(m_pane->GetContext(), - XP_GetString(MK_MSG_MDN_WISH_TO_SEND)); - - if (!m_reallySendMdn) - return; - m_msgFileName = WH_TempName (xpFileToPost, "mdnmsg"); - if (!m_msgFileName) - return; - m_outFile = XP_FileOpen (m_msgFileName, xpFileToPost, XP_FILE_WRITE_BIN); - if (!m_outFile) goto done; - status = CreateFirstPart(); - if (status < 0) goto done; - status = CreateSecondPart(); - if (status < 0) goto done; - status = CreateThirdPart(); - -done: - if (m_outFile) - { - XP_FileClose(m_outFile); - m_outFile = 0; - } - if (status < 0) - { - // may want post out error message - XP_FileRemove(m_msgFileName, xpFileToPost); - XP_FREEIF(m_msgFileName); - } - else - { - DoSendMdn(); - } -} - -int32 -MSG_ProcessMdnNeededState::CreateFirstPart() -{ - int gmtoffset = XP_LocalZoneOffset(); - char *convbuf = NULL, *tmpBuffer = NULL; - int16 win_csid; - char *parm = NULL; - char *firstPart = NULL; - int formatId = MK_MSG_MDN_DISPLAYED; - int32 status = 0; - char *receipt_string = NULL; - char *wrapped_string = NULL; - - XP_ASSERT(m_outFile); - - if (!m_mimeSeparator) - m_mimeSeparator = mime_make_separator("mdn"); - if (!m_mimeSeparator) - return MK_OUT_OF_MEMORY; - - tmpBuffer = (char *) XP_ALLOC(256); - - if (!tmpBuffer) - return MK_OUT_OF_MEMORY; - - win_csid = INTL_DefaultWinCharSetID(m_pane->GetContext()); - m_csid = INTL_DefaultMailCharSetID(win_csid); - -#ifndef NSPR20 - PRTime now; - PR_ExplodeTime(&now, PR_Now()); -#else - PRExplodedTime now; - PR_ExplodeTime(PR_Now(), PR_LocalTimeParameters, &now); -#endif /* NSPR20 */ - - /* Use PR_FormatTimeUSEnglish() to format the date in US English format, - then figure out what our local GMT offset is, and append it (since - PR_FormatTimeUSEnglish() can't do that.) Generate four digit years as - per RFC 1123 (superceding RFC 822.) - */ - PR_FormatTimeUSEnglish(tmpBuffer, 100, - "Date: %a, %d %b %Y %H:%M:%S ", - &now); - - PR_snprintf(tmpBuffer + XP_STRLEN(tmpBuffer), 100, - "%c%02d%02d" CRLF, - (gmtoffset >= 0 ? '+' : '-'), - ((gmtoffset >= 0 ? gmtoffset : -gmtoffset) / 60), - ((gmtoffset >= 0 ? gmtoffset : -gmtoffset) % 60)); - - status = WriteString(tmpBuffer); - XP_FREEIF(tmpBuffer); - if (status < 0) return status; - - convbuf = IntlEncodeMimePartIIStr((char *) FE_UsersMailAddress(), - m_csid, TRUE); - - parm = PR_smprintf("From: %s" CRLF, convbuf ? convbuf : FE_UsersMailAddress()); - PUSH_N_FREE_STRING (parm); - - XP_FREEIF(convbuf); - - parm = msg_generate_message_id(); - tmpBuffer = PR_smprintf("Message-ID: %s" CRLF, parm); - PUSH_N_FREE_STRING(tmpBuffer); - - XP_FREEIF(parm); - - receipt_string = XP_GetString(MK_MDN_DISPLAYED_RECEIPT + (int) - m_disposeType); - - parm = PR_smprintf ("%s - %s", (receipt_string ? receipt_string : - "Return Receipt"), (m_subject ? m_subject - : "")); - convbuf = - IntlEncodeMimePartIIStr(parm ? parm : "Return Receipt", - m_csid, TRUE); - tmpBuffer = PR_smprintf("Subject: %s" CRLF, (convbuf ? convbuf : (parm ? parm : - "Return Receipt"))); - PUSH_N_FREE_STRING(tmpBuffer); - if (parm) - { - PR_smprintf_free(parm); - parm = 0; - } - XP_FREEIF(convbuf); - - convbuf = IntlEncodeMimePartIIStr(m_dispositionNotificationTo, m_csid, - TRUE); - tmpBuffer = PR_smprintf("To: %s" CRLF, convbuf ? convbuf : m_dispositionNotificationTo); - PUSH_N_FREE_STRING(tmpBuffer); - - XP_FREEIF(convbuf); - - // *** This is not in the spec. I am adding this so we could do - // threading - if (*m_messageId == '<') - tmpBuffer = PR_smprintf("References: %s" CRLF, m_messageId); - else - tmpBuffer = PR_smprintf("References: <%s>" CRLF, m_messageId); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF, "MIME-Version: 1.0"); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("Content-Type: multipart/report; \ -report-type=disposition-notification;\r\n\tboundary=\"%s\"" CRLF CRLF, - m_mimeSeparator); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("--%s" CRLF, m_mimeSeparator); - PUSH_N_FREE_STRING(tmpBuffer); - - char charset[30]; - INTL_CharSetIDToName(m_csid, charset); - - tmpBuffer = PR_smprintf("Content-Type: text/plain; charset=%s" CRLF, charset); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("Content-Transfer-Encoding: %s" CRLF CRLF, ENCODING_7BIT); - PUSH_N_FREE_STRING(tmpBuffer); - - formatId = MK_MSG_MDN_DISPLAYED + ((int) m_disposeType - (int) - eDisplayed); - - firstPart = XP_STRDUP(XP_GetString(formatId)); - convbuf = IntlEncodeMimePartIIStr(firstPart, m_csid, TRUE); - wrapped_string = (char *) XP_WordWrap(m_csid, (unsigned char *) - (convbuf ? convbuf : firstPart), - 72, FALSE); - tmpBuffer = PR_smprintf("%s" CRLF CRLF, wrapped_string ? wrapped_string : firstPart); - PUSH_N_FREE_STRING(tmpBuffer); - - XP_FREEIF(firstPart); - XP_FREEIF(convbuf); - XP_FREEIF(wrapped_string); - - return status; -} - -int32 -MSG_ProcessMdnNeededState::CreateSecondPart() -{ - char *tmpBuffer = NULL; - char *convbuf = NULL; - int32 status = 0; - char hostName[256]; - *hostName = '\0'; - - PR_GetSystemInfo(PR_SI_HOSTNAME, hostName, 254); - - tmpBuffer = PR_smprintf("--%s" CRLF, m_mimeSeparator); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF, "Content-Type: message/disposition-notification"); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF, "Content-Disposition: inline"); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("Content-Transfer-Encoding: %s" CRLF CRLF, ENCODING_7BIT); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("Reporting-UA: %s; %s %s" CRLF, - hostName, XP_AppCodeName, XP_AppVersion); - PUSH_N_FREE_STRING(tmpBuffer); - - if (m_originalRecipient && *m_originalRecipient) - { - tmpBuffer = PR_smprintf("Original-Recipient: %s" CRLF, m_originalRecipient); - PUSH_N_FREE_STRING(tmpBuffer); - } - - convbuf = IntlEncodeMimePartIIStr((char *) FE_UsersMailAddress(), m_csid, - TRUE); - tmpBuffer = PR_smprintf("Final-Recipient: rfc822;%s" CRLF, convbuf ? convbuf : - FE_UsersMailAddress()); - PUSH_N_FREE_STRING(tmpBuffer); - - XP_FREEIF (convbuf); - - if (*m_messageId == '<') - tmpBuffer = PR_smprintf("Original-Message-ID: %s" CRLF, m_messageId); - else - tmpBuffer = PR_smprintf("Original-Message-ID: <%s>" CRLF, m_messageId); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("Disposition: %s/%s; %s" CRLF CRLF, - (m_autoAction ? "automatic-action" : "manual-action"), - (m_autoSend ? "MDN-sent-automatically" : "MDN-sent-manually"), - DispositionTypes[(int) m_disposeType]); - PUSH_N_FREE_STRING(tmpBuffer); - - return status; -} - -int32 -MSG_ProcessMdnNeededState::CreateThirdPart() -{ - char *tmpBuffer = NULL; - int32 status = 0; - - tmpBuffer = PR_smprintf("--%s" CRLF, m_mimeSeparator); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF, "Content-Type: text/rfc822-headers"); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF, "Content-Transfer-Encoding: 7bit"); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF CRLF, "Content-Disposition: inline"); - PUSH_N_FREE_STRING(tmpBuffer); - - status = OutputAllHeaders(); - - if (status < 0) return status; - - status = WriteString(CRLF); - if (status < 0) return status; - - tmpBuffer = PR_smprintf("--%s--" CRLF, m_mimeSeparator); - PUSH_N_FREE_STRING(tmpBuffer); - - return status; -} - -void -MSG_ProcessMdnNeededState::DoSendMdn() -{ - XP_ASSERT(m_dispositionNotificationTo); - - if (!m_dispositionNotificationTo) return; // MK_OUT_OF_MEMORY - - char *tmpBuffer = // 9 = mailto: + null + 1 extra - (char *) XP_ALLOC(XP_STRLEN(m_dispositionNotificationTo) + 9); - - if (!tmpBuffer) return; // MK_OUT_OF_MEMORY - - URL_Struct *url = NULL; - - FE_Progress (m_pane->GetContext(), XP_GetString(MK_MSG_DELIV_MAIL)); - - XP_STRCPY(tmpBuffer, "mailto:"); - - XP_STRCAT(tmpBuffer, m_dispositionNotificationTo); - - url = NET_CreateURLStruct (tmpBuffer, NET_DONT_RELOAD); - if (url) - { - url->post_data = XP_STRDUP(m_msgFileName); - url->post_data_size = XP_STRLEN(m_msgFileName); - url->post_data_is_file = TRUE; - url->method = URL_POST_METHOD; - url->fe_data = this; - url->internal_url = TRUE; - url->msg_pane = m_pane; - // clear m_msgFileName to prevent removing temp file too early - XP_FREEIF(m_msgFileName); - // Set sending MDN in progress so the smtp state machine can null out - // the address for MAIL FROM - m_pane->SetSendingMDNInProgress(TRUE); - - MSG_UrlQueue::AddUrlToPane (url, - MSG_ProcessMdnNeededState::PostSendMdn, - m_pane, - TRUE); - } - XP_FREEIF(tmpBuffer); -} - -/* static */ void -MSG_ProcessMdnNeededState::PostSendMdn(URL_Struct *url, int status, MWContext - *context) -{ - if (url->msg_pane) - url->msg_pane->SetSendingMDNInProgress(FALSE); - - if (status < 0) - { - char *error_msg = NET_ExplainErrorDetails(status, 0, 0, 0, 0); - if (error_msg) - FE_Alert(context, error_msg); - XP_FREEIF(error_msg); - } - if (url->post_data) - { - XP_FileRemove(url->post_data, xpFileToPost); - XP_FREEIF(url->post_data); - url->post_data_size = 0; - } - NET_FreeURLStruct(url); -} - -void -MSG_ProcessMdnNeededState::StoreImapMDNSentFlag(MSG_FolderInfo *folder, - MessageKey key) -{ - if (!folder || key == MSG_MESSAGEKEYNONE) - return; - if (folder->GetType() == FOLDER_IMAPMAIL) - { - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - if (imapFolder) - { - MSG_UrlQueue *queue = MSG_UrlQueue::FindQueue(m_pane); - - IDArray idArray; - idArray.Add(key); - - imapFolder->StoreImapFlags(m_pane, - kImapMsgMDNSentFlag, - TRUE, - idArray, - queue); - } - } -} - - diff --git a/mozilla/lib/libmsg/msgmdn.h b/mozilla/lib/libmsg/msgmdn.h deleted file mode 100644 index e2b384c735d..00000000000 --- a/mozilla/lib/libmsg/msgmdn.h +++ /dev/null @@ -1,133 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef MSGMDN_H -#define MSGMDN_H - -#include "xp.h" -#include "msgzap.h" -#include "libmime.h" - -class MSG_Pane; -class MSG_FolderInfo; -struct message_header; - -#define MDN_NOT_IN_TO_CC ((int) 0x0001) -#define MDN_OUTSIDE_DOMAIN ((int) 0x0002) - -#define HEADER_RETURN_PATH "Return-Path" -#define HEADER_DISPOSITION_NOTIFICATION_TO "Disposition-Notification-To" -#define HEADER_APPARENTLY_TO "Apparently-To" -#define HEADER_ORIGINAL_RECIPIENT "Original-Recipient" -#define HEADER_REPORTING_UA "Reporting-UA" -#define HEADER_MDN_GATEWAY "MDN-Gateway" -#define HEADER_FINAL_RECIPIENT "Final-Recipient" -#define HEADER_DISPOSITION "Disposition" -#define HEADER_ORIGINAL_MESSAGE_ID "Original-Message-ID" -#define HEADER_FAILURE "Failure" -#define HEADER_ERROR "Error" -#define HEADER_WARNING "Warning" -#define HEADER_RETURN_RECEIPT_TO "Return-Receipt-To" - - -class MSG_ProcessMdnNeededState : public MSG_ZapIt -{ -public: - enum EDisposeType { - eDisplayed = 0x0, - eDispatched, - eProcessed, - eDeleted, - eDenied, - eFailed - }; - -public: - MSG_ProcessMdnNeededState (EDisposeType intendedType, - MSG_Pane *pane, - MSG_FolderInfo *folder, - uint32 key, - MimeHeaders *srcHeader, - XP_Bool autoAction = FALSE); - - MSG_ProcessMdnNeededState (EDisposeType intendedType, - MSG_Pane *pane, - MSG_FolderInfo *folder, - uint32 key, - struct message_header *returnPath, - struct message_header *dnt, - struct message_header *to, - struct message_header *cc, - struct message_header *subject, - struct message_header *date, - struct message_header *originalRecipient, - struct message_header *messageId, - char *allHeaders, - int32 allHeadersSize, - XP_Bool autoAction = TRUE); - - virtual ~MSG_ProcessMdnNeededState (); - static void PostSendMdn(URL_Struct *url, int status, MWContext *context); - -protected: - - XP_Bool ProcessSendMode(); // this should be called prior to - // ValidateReturnPath(); - XP_Bool ValidateReturnPath(); - XP_Bool MailAddrMatch(const char *addr1, const char *addr2); - XP_Bool NotInToOrCc(); - - void StoreImapMDNSentFlag(MSG_FolderInfo *folder, uint32 key); - - void CreateMdnMsg(); - int32 CreateFirstPart(); - int32 CreateSecondPart(); - int32 CreateThirdPart(); - void DoSendMdn(); - - // helper function - void InitAndProcess(); - int32 OutputAllHeaders(); - int32 WriteString(const char *str); - -protected: - EDisposeType m_disposeType; - MSG_Pane *m_pane; - XP_File m_outFile; - int16 m_csid; - char *m_msgFileName; - char *m_mimeSeparator; - XP_Bool m_reallySendMdn; /* really send mdn? */ - XP_Bool m_autoSend; /* automatic vs manual send mode */ - XP_Bool m_autoAction; /* automatic vs manual action */ - char *m_returnPath; - char *m_dispositionNotificationTo; - char *m_date; - char *m_to; - char *m_cc; - char *m_subject; - char *m_messageId; - char *m_originalRecipient; - char *m_all_headers; - int32 m_all_headers_size; -}; - -#endif diff --git a/mozilla/lib/libmsg/msgmpane.cpp b/mozilla/lib/libmsg/msgmpane.cpp deleted file mode 100644 index 9572d0485b2..00000000000 --- a/mozilla/lib/libmsg/msgmpane.cpp +++ /dev/null @@ -1,1819 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - - -#include "rosetta.h" -#include "msg.h" -#include "errcode.h" -#include "xp_str.h" -#include "xpgetstr.h" - -#include "msgmpane.h" -#include "msgtpane.h" -#include "msgfinfo.h" -#include "msgdb.h" -#include "msgdbvw.h" -#include "msgmast.h" -#include "msgprefs.h" -#include "msgsec.h" -#include "mailhdr.h" - -#include "msgundmg.h" -#include "msgundac.h" -#include "mime.h" - -#include "addrbook.h" - -#include "libi18n.h" -#include "newshost.h" -#include "prefapi.h" -#include "maildb.h" -#include "prsembst.h" -#include "listngst.h" -#include "newsdb.h" -#include "intl_csi.h" -#include "msgimap.h" -#include "msgurlq.h" -#include "msgmdn.h" -#include "msgstrob.h" - -extern "C" -{ - extern int MK_MSG_DELETE_MESSAGE; - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_MARK_AS_READ; - extern int MK_MSG_MARK_AS_UNREAD; - extern int MK_MSG_NEW_NEWS_MESSAGE; - extern int MK_MSG_POST_REPLY; - extern int MK_MSG_POST_MAIL_REPLY; - extern int MK_MSG_NEW_MAIL_MESSAGE; - extern int MK_MSG_REPLY; - extern int MK_MSG_REPLY_TO_SENDER; - extern int MK_MSG_REPLY_TO_ALL; - extern int MK_MSG_FORWARD_QUOTED; - extern int MK_MSG_FORWARD; - extern int MK_MSG_PARTIAL_MSG_FMT_1; - extern int MK_MSG_PARTIAL_MSG_FMT_2; - extern int MK_MSG_PARTIAL_MSG_FMT_3; - extern int MK_MSG_ID_NOT_IN_FOLDER; - extern int MK_MSG_FOLDER_UNREADABLE; - extern int MK_MSG_OPEN_DRAFT; - extern int MK_MSG_ADD_SENDER_TO_ADDRESS_BOOK; - extern int MK_MSG_ADD_ALL_TO_ADDRESS_BOOK; - extern int MK_MSG_CANT_OPEN; -} - - -#ifdef DEBUG_terry -static void -StupidAttachmentCount(MSG_Pane* pane, void*, int32 num, XP_Bool finished) -{ - XP_Trace("@@@ %d attachments (%s)\n", num, finished ? "Done" : "Not done"); - if (finished && num > 0) { - MSG_AttachmentData* data; - finished = FALSE; - MSG_GetViewedAttachments(pane, &data, &finished); - XP_ASSERT(finished); - MSG_AttachmentData* tmp; - for (tmp = data ; tmp->url ; tmp++) { - XP_Trace("@@@ %s\n", tmp->url); - XP_Trace("@@@ %s\n", tmp->real_type); - XP_Trace("@@@ %s\n", tmp->real_name); - XP_Trace("@@@ %s\n", tmp->description); - } - MSG_FreeAttachmentList(pane, data); - } -} -#endif - - -MSG_MessagePane::MSG_MessagePane(MWContext* context, MSG_Master* master) -: m_PaneListener(this), MSG_Pane(context, master) -{ - m_key = MSG_MESSAGEKEYNONE; - m_postDeleteLoadKey = MSG_MESSAGEKEYNONE; - -#ifdef DEBUG_terry - - static MSG_MessagePaneCallbacks call; - call.AttachmentCount = StupidAttachmentCount; - SetMessagePaneCallbacks(&call, NULL); - -#endif - -} - - -MSG_MessagePane::~MSG_MessagePane () -{ - ClearDerivedStrings(); - InterruptContext(FALSE); - if (m_view) { - m_view->Remove(&m_PaneListener); - m_view->Close(); // drop reference count - m_view = NULL; - } -} - - -MSG_PaneType MSG_MessagePane::GetPaneType() -{ - return MSG_MESSAGEPANE; -} - - -int MSG_MessagePane::SetMessagePaneCallbacks(MSG_MessagePaneCallbacks* c, - void* closure) -{ - m_callbacks = c; - m_callbackclosure = closure; - return 0; -} - - -MSG_MessagePaneCallbacks* -MSG_MessagePane::GetMessagePaneCallbacks(void** closure) -{ - if (closure) *closure = m_callbackclosure; - return m_callbacks; -} - - - -void MSG_MessagePane::NotifyPrefsChange(NotifyCode code) -{ - if (m_folder) - { - if (((code == MailServerType)||(code == PopHost)) && - (GetFolder()->GetType() == FOLDER_IMAPMAIL)) - { - FE_PaneChanged(this, TRUE, MSG_PaneNotifyFolderDeleted, - (uint32)GetFolder()); - } - else if (code != Directory) - { - // We don't want to reload the message on a directory change - // because a directory notification can result from a prefs - // reload, which can in turn result from loading a message. - // (Holy recursion, Batman!) - LoadMessage(m_folder, m_key, NULL, TRUE); - } - else // code == Directory - { - // If the main mail directory changes, do we not close ourselves? - } - } -} - -MSG_FolderInfo *MSG_MessagePane::GetFolder() -{ - return m_folder; -} - -void MSG_MessagePane::SetFolder(MSG_FolderInfo *info) -{ - m_folder = info; -} - -PaneListener *MSG_MessagePane::GetListener() -{ - return &m_PaneListener; -} - -MsgERR MSG_MessagePane::InitializeFolderAndView (const char *folderName) -{ - MsgERR status = 0; - MSG_FolderInfo *folder = GetMaster()->FindMailFolder (folderName, FALSE); - - if (m_folder != folder) // don't reinitialize folder and view unless it has changed - { - if (folder) // sometimes, folderName is NULL, so folder will be NULL, so re-use m_folder - m_folder = folder; - CloseView(); - char* url = m_folder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - status = MessageDBView::OpenURL(url, GetMaster(), - ViewAny, - &m_view, TRUE /* open in foreground */); - - if (status == eSUCCESS && m_view != NULL) - m_view->Add(&m_PaneListener); // add listener back to view - XP_FREE(url); - } - - return status; -} - -void MSG_MessagePane::StartingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num) -{ - if (m_numstack == 0) - m_PaneListener.StartKeysChanging(); - - MSG_Pane::StartingUpdate(code, where, num); -} - -void MSG_MessagePane::EndingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num) -{ - MSG_Pane::EndingUpdate(code, where, num); - if (m_numstack == 0) - m_PaneListener.EndKeysChanging(); -} - - -void MSG_MessagePane::SwitchView(MessageDBView *newView) -{ - m_view->Remove(&m_PaneListener); - m_view->Close(); - m_view = newView; - m_view->AddReference(); - m_view->Add(&m_PaneListener); // add listener back to view - newView->EnsureListed(m_key); -} - -// allow_content_change indicates whether we should maintain the -// integrity of the original message from the server. If set to TRUE, -// that means it is safe for us to fiddle with the content. For instance, -// we are allowed to download it by IMAP MIME parts and assemble a somewhat -// empty shell. -MsgERR -MSG_MessagePane::LoadMessage(MSG_FolderInfo* folder, - MessageKey key, - Net_GetUrlExitFunc *loadUrlExitFunction, - XP_Bool allow_content_change) -{ - XP_Bool clearMessageArea = (m_key != key); - - if (m_key != key) - MSG_SetBiffStateAndUpdateFE(MSG_BIFF_NoMail); - -#ifdef XP_MAC - { - // Ask FE if it's OK to load another message (the window may be closing). - enum { MSG_PaneNotifyOKToLoadNewMessage = 999 }; // Can we make this official? - XP_Bool ok = TRUE; - FE_PaneChanged(this, FALSE, (MSG_PANE_CHANGED_NOTIFY_CODE)MSG_PaneNotifyOKToLoadNewMessage, (int32)&ok); - if (!ok) - return eSUCCESS; - } -#endif - - if (clearMessageArea && folder && folder->GetType() == FOLDER_IMAPMAIL) - { - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - MSG_UrlQueue *queue = MSG_UrlQueue::FindQueueWithSameContext (this); - if (queue != NULL) - clearMessageArea = FALSE; - // pseudo interrupt any message load, if we're fetching by chunks - XP_Bool fetchByChunks = TRUE; - PREF_GetBoolPref("mail.imap.fetch_by_chunks", &fetchByChunks); - if (fetchByChunks && imapFolder && imapFolder->GetRunningIMAPUrl()) - { - IMAP_PseudoInterruptFetch(GetContext()); - clearMessageArea = FALSE; - } - } - - // Clear message area, but only if we're loading - // a new message. This is all very unfortunate. Clearing message - // area causes libparse to interrupt the mail context, which happens - // to be reparsing a folder in some cases. This is because WinFE - // clears the message area if the view is empty (even if it was - // empty to start with) as a side effect of trying to select something. - if (clearMessageArea) - { -#ifndef XP_MAC - // macfe has its own clearing routine (CMessageView::ClearMessageArea) - msg_ClearMessageArea(GetContext()); -#endif - m_key = key; - } - if (key == MSG_MESSAGEKEYNONE) - return eSUCCESS; - - // don't reinitialize folder and view unless it has changed, or the view or DB seem invalid - if (m_folder != folder || !m_view || !m_view->GetDB()) - { - m_folder = folder; - MsgERR status = InitializeFolderAndView (NULL); - if (status != eSUCCESS) - return status; - } - - FE_PaneChanged(this, FALSE, MSG_PaneNotifyMessageLoaded, key); - - if (m_callbacks && m_callbacks->AttachmentCount) { - m_callbacks->AttachmentCount(this, m_callbackclosure, 0, FALSE); - } - - XP_ASSERT(m_view); - char *url = m_folder->BuildUrl(m_view->GetDB(), key); - if (NULL != url) - { - Net_GetUrlExitFunc *preExitFunc; - - m_doneLoadingFunc = NULL; - m_doneLoading = FALSE; - if (m_justmakecompose) - { - preExitFunc = MSG_MessagePane::FinishComposeFor; - } - else - { - preExitFunc = MSG_MessagePane::FinishedLoading; - m_doneLoadingFunc = loadUrlExitFunction; - } - - - if (folder->GetType() == FOLDER_IMAPMAIL) - { - MSG_IMAPFolderInfoMail *imapFolder = (MSG_IMAPFolderInfoMail *) folder; - imapFolder->SetDownloadState(MSG_IMAPFolderInfoMail::kNoDownloadInProgress); - GetContext()->currentIMAPfolder = imapFolder; - } - - if (m_callbacks && m_callbacks->AttachmentCount) { - m_callbacks->AttachmentCount(this, m_callbackclosure, 0, FALSE); - } - - // if an imap folder is being loaded in this context, then this - // is the result of the user clicking on a message. We interrupt - // and load - XP_Bool shouldNotInterrupt = TRUE; - if (folder->GetType() == FOLDER_IMAPMAIL) - { - XP_Bool urlIsInMemoryCache = FALSE; - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - if (imapFolder->GetFolderLoadingContext() == GetContext()) - shouldNotInterrupt = FALSE; - - URL_Struct *url_s = NET_CreateURLStruct (url, NET_IsOffline() ? NET_SUPER_RELOAD : NET_DONT_RELOAD); - char extraFlag = 0; // figure out extra flag before we start loading offline messages, because that marks it read. - - MSG_UrlQueue *q = NULL; - if (url_s) - { - if (!NET_IsOffline()) - { - MSG_ViewIndex viewIndex = m_view->FindKey(key, FALSE); - if (viewIndex != MSG_VIEWINDEXNONE) - { - m_view->GetExtraFlag(viewIndex, &extraFlag); - } - } - url_s->allow_content_change = allow_content_change; - m_key = key; - q = MSG_UrlQueue::AddUrlToPane(url_s, preExitFunc, this, FALSE, NET_IsOffline() ? NET_SUPER_RELOAD : NET_DONT_RELOAD); - urlIsInMemoryCache = NET_IsURLInMemCache(url_s); - } - else - return eUNKNOWN; - - XP_FREE(url); - - // if this message was previously unread, and the message is offline or - // in memory cache, make sure the server knows it's read - - if (!NET_IsOffline()) - { - if (!(extraFlag & kIsRead)) - { - if (urlIsInMemoryCache || (extraFlag & kOffline)) - { - IDArray keysToFlag; - - keysToFlag.Add(m_key); - imapFolder->StoreImapFlags(this, kImapMsgSeenFlag, TRUE, keysToFlag, q); - } - } - } - - return eSUCCESS; - } - URL_Struct* ustruct = NET_CreateURLStruct(url, NET_IsOffline() ? NET_SUPER_RELOAD : NET_DONT_RELOAD); - ustruct->pre_exit_fn = preExitFunc; - GetURL(ustruct, TRUE); // TRUE will quietly work if any existing - // url is 'almost done'. - - // clear any imap copy info so download will work - - XP_FREE (url); - - return eSUCCESS; - } - else - return eUNKNOWN; //PHP need better error code -} - - -void MSG_MessagePane::FinishedLoading(URL_Struct* ustruct, int status, - MWContext* context) -{ - MSG_MessagePane* pane = (MSG_MessagePane*) ustruct->msg_pane; - XP_ASSERT(pane && pane->GetPaneType() == MSG_MESSAGEPANE); - if (!pane || pane->GetPaneType() != MSG_MESSAGEPANE) return; - if (pane->m_doneLoadingFunc) { - (*pane->m_doneLoadingFunc)(ustruct, status, context); - pane->m_doneLoadingFunc = NULL; - } - pane->m_doneLoading = TRUE; - if (pane->m_callbacks && pane->m_callbacks->AttachmentCount) { - pane->m_callbacks->AttachmentCount(pane, pane->m_callbackclosure, - MimeGetAttachmentCount(context), - TRUE); - if (context && MIME_HasAttachments(context)) - (pane->m_view->GetDB())->MarkHasAttachments(pane->m_key, TRUE, (ChangeListener*) pane /* m_view ? */); - } -} - - - -void MSG_MessagePane::DestroyPane(URL_Struct* ustruct, int /*status*/, - MWContext* /*context*/) -{ - MSG_MessagePane* pane = (MSG_MessagePane*) ustruct->msg_pane; - XP_ASSERT(pane->GetPaneType() == MSG_MESSAGEPANE); - if (pane->GetPaneType() == MSG_MESSAGEPANE) { - delete pane; - } -} - - -void MSG_MessagePane::FinishComposeFor(URL_Struct* ustruct, int /*status*/, - MWContext* /*context*/) -{ - MSG_MessagePane* pane = (MSG_MessagePane*) ustruct->msg_pane; - XP_ASSERT(pane->GetPaneType() == MSG_MESSAGEPANE); - if (pane->GetPaneType() == MSG_MESSAGEPANE) { - pane->UnregisterFromPaneList(); // Make sure that netlib won't decide - // to attach this pane to a URL, - // because this pane is about to go - // away. - if (pane->ComposeMessage(pane->m_composetype, - MSG_MessagePane::DestroyPane) != eSUCCESS) { - delete pane; - } - } -} - - -MsgERR -MSG_MessagePane::MakeComposeFor(MSG_FolderInfo* folder, MessageKey key, - MSG_CommandType type) -{ - m_justmakecompose = TRUE; - m_composetype = type; - XP_Bool allow_content_change = - ((type == MSG_ReplyToSender) || - (type == MSG_ReplyToAll) || - (type == MSG_ForwardMessageQuoted)); - MsgERR status = LoadMessage(folder, key, NULL, allow_content_change); // forwarding requires message integrity - if (status != eSUCCESS) delete this; - return status; -} - - - -void -MSG_MessagePane::ClearDerivedStrings() -{ - FREEIF(m_mailToSenderUrl); - FREEIF(m_mailToAllUrl); - FREEIF(m_postReplyUrl); - FREEIF(m_postAndMailUrl); - FREEIF(m_displayedMessageSubject); - FREEIF(m_displayedMessageId); -} - - -static char* -msg_get_1522_header(MWContext *context, MimeHeaders *headers, - const char *name, XP_Bool all_p) -{ - char *contents = MimeHeaders_get(headers, name, FALSE, all_p); - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(context); - if (contents && *contents) { - char *converted = IntlDecodeMimePartIIStr(contents, INTL_GetCSIWinCSID(c), - FALSE); - if (converted) { - XP_FREE(contents); - contents = converted; - } - } - return contents; -} - - - - -void -MSG_MessagePane::ActivateReplyOptions(MimeHeaders* headers) -{ - XP_Bool mdnNeeded = FALSE, isRead = FALSE; - - // Since this gets called when the text appears in the pane, this is a - // great time to mark the message as read. - - if (!m_justmakecompose) { - XP_Bool bMarkMessageRead = TRUE; - char *xref = MimeHeaders_get(headers, HEADER_XREF, FALSE, FALSE); - char *messageID = MimeHeaders_get(headers, HEADER_MESSAGE_ID, FALSE, FALSE); - if (messageID && m_view && m_view->GetDB()) - { - MessageDB *db = m_view->GetDB(); - // check if this is the same message-id as we think we should have for the - // current key. - DBMessageHdr *curHdr = db->GetDBHdrForKey(m_key); - db->IsMDNNeeded(m_key, &mdnNeeded); - db->IsRead(m_key, &isRead); - - if (curHdr) - { - XPStringObj curKeyMessageID; - curHdr->GetMessageId(curKeyMessageID, db->GetDB()); - char *strippedMsgID = (char *) XP_ALLOC(XP_STRLEN(messageID)); - if (strippedMsgID) - { - MessageHdrStruct::StripMessageId(messageID, strippedMsgID, XP_STRLEN(messageID)); - if (XP_STRCMP(strippedMsgID, curKeyMessageID)) - { - char *newsgroups = MimeHeaders_get(headers, HEADER_NEWSGROUPS, FALSE, FALSE); - m_key = db->GetMessageKeyForID(messageID); - FE_PaneChanged(this, FALSE, MSG_PaneNotifyMessageLoaded, m_key); - // ### dmb should check if we've changed newsgroups! - FREEIF(newsgroups); - - } - } - FREEIF(strippedMsgID); - delete curHdr; - } - if (m_folder && m_key == m_folder->GetLastMessageLoaded()) - { - m_folder->SetLastMessageLoaded(MSG_MESSAGEKEYNONE); - bMarkMessageRead = FALSE; - } - } - if (bMarkMessageRead) - MarkMessageKeyRead(m_key, xref); - FREEIF(xref); - FREEIF(messageID); - } - - - char *host = 0; - char *to_and_cc = 0; - char *re_subject = 0; - char *new_refs = 0; - - char *from = 0; - char *repl = 0; - char *subj = 0; - char *id = 0; - char *refs = 0; - char *to = 0; - char *cc = 0; - char *grps = 0; - char *foll = 0; - - HG02087 - - ClearDerivedStrings(); - - if (headers) { - - from = msg_get_1522_header(m_context, headers, HEADER_FROM, FALSE); - repl = msg_get_1522_header(m_context, headers, HEADER_REPLY_TO, FALSE); - subj = msg_get_1522_header(m_context, headers, HEADER_SUBJECT, FALSE); - to = msg_get_1522_header(m_context, headers, HEADER_TO, TRUE); - cc = msg_get_1522_header(m_context, headers, HEADER_CC, TRUE); - - /* These headers should not be RFC-1522-decoded. */ - grps = MimeHeaders_get(headers, HEADER_NEWSGROUPS, FALSE, TRUE); - foll = MimeHeaders_get(headers, HEADER_FOLLOWUP_TO, FALSE, TRUE); - id = MimeHeaders_get(headers, HEADER_MESSAGE_ID, FALSE, FALSE); - refs = MimeHeaders_get(headers, HEADER_REFERENCES, FALSE, TRUE); - - if (repl) { - FREEIF(from); - from = repl; - repl = 0; - } - - if (foll) { - FREEIF(grps); - grps = foll; - foll = 0; - } - - - HG82126 - } - - if (m_folder && m_folder->IsNews()) { - /* Decide whether cancelling this message should be allowed. */ - m_cancellationAllowed = FALSE; - if (from) { - char *us = MSG_MakeFullAddress (NULL, FE_UsersMailAddress ()); - char *them = MSG_ExtractRFC822AddressMailboxes(from); - m_cancellationAllowed = (us && them && !strcasecomp (us, them)); - FREEIF(us); - FREEIF(them); - } - } - - if (!headers) return; - - if (subj) { - m_displayedMessageSubject = XP_STRDUP(subj); - } - if (id) { - m_displayedMessageId = XP_STRDUP(id); - } - - host = ComputeNewshostArg(); - - if (to || cc) { - to_and_cc = (char *) - XP_ALLOC((to ? XP_STRLEN (to) : 0) + - (cc ? XP_STRLEN (cc) : 0) + - 5); - if (!to_and_cc) goto FAIL; - *to_and_cc = 0; - if (to) XP_STRCPY(to_and_cc, to); - if (to && *to && cc && *cc) { - XP_STRCAT(to_and_cc, ", "); - } - if (cc) XP_STRCAT(to_and_cc, cc); - } - - if (id || refs) { - int maxlen = - (id ? XP_STRLEN(id) : 0) + - (refs ? XP_STRLEN (refs) : 0) + - 5; - new_refs = (char *) XP_ALLOC(maxlen); - if (!new_refs) goto FAIL; - *new_refs = 0; - if (refs) XP_STRCPY (new_refs, refs); - if (refs && id) { - XP_STRCAT (new_refs, " "); - } - if (id) XP_STRCAT (new_refs, id); - } - - if (from || grps || to_and_cc) { - const char *s = subj; - if (s) msg_StripRE(&s, NULL); - - re_subject = (char *) XP_ALLOC((s ? XP_STRLEN (s) : 0) + 10); - if (!re_subject) goto FAIL; - XP_STRCPY (re_subject, "Re: "); - if (s) XP_STRCAT (re_subject, s); - } - - if (from) { - m_mailToSenderUrl = MakeMailto(from, 0, 0, re_subject, new_refs, - 0, host, HG62212); - } - - if (from || to_and_cc) { - m_mailToAllUrl = MakeMailto(from, to_and_cc, 0, re_subject, - new_refs, 0, host, HG91611); - } - - if (grps) { - if (!strcasecomp(grps, "poster")) { - /* "Followup-to: poster" makes "post reply" act the same as - "reply to sender". */ - if (m_mailToSenderUrl) { - m_postReplyUrl = XP_STRDUP(m_mailToSenderUrl); - } - } else { - m_postReplyUrl = - MakeMailto(0, 0, grps, re_subject, new_refs, 0, host, HG81762); - } - } - - if (from || grps) { - if (grps && !strcasecomp(grps, "poster")) { - /* "Followup-to: poster" makes "post and mail reply" act the - same as "reply to sender". */ - if (m_mailToSenderUrl) { - m_postAndMailUrl = XP_STRDUP(m_mailToSenderUrl); - } - } else { - m_postAndMailUrl = MakeMailto(from, 0, grps, - re_subject, new_refs, 0, host, - HG76255); - } - } - - if (m_folder && !m_folder->IsNews() && mdnNeeded && !isRead) - { - // Constructor of MSG_ProcessMdnNeededState will send out - // an MDN report if needed. - MSG_ProcessMdnNeededState - processMdnNeeded(MSG_ProcessMdnNeededState::eDisplayed, - this, - m_folder, - m_key, - headers, - FALSE); - m_view->GetDB()->MarkMDNNeeded(m_key, FALSE); - m_view->GetDB()->MarkMDNSent(m_key, TRUE); - } - -FAIL: - FREEIF(host); - FREEIF(to_and_cc); - FREEIF(re_subject); - FREEIF(new_refs); - FREEIF(from); - FREEIF(repl); - FREEIF(subj); - FREEIF(id); - FREEIF(refs); - FREEIF(to); - FREEIF(cc); - FREEIF(grps); - FREEIF(foll); -} - - -void -MSG_MessagePane::DoIncWithUIDL_s(URL_Struct *url, int status, - MWContext *context) -{ - XP_ASSERT(url && url->msg_pane); - if (url && url->msg_pane) { - XP_ASSERT(url->msg_pane->GetPaneType() == MSG_MESSAGEPANE); - if (url->msg_pane->GetPaneType() == MSG_MESSAGEPANE) { - ((MSG_MessagePane*)url->msg_pane)->DoIncWithUIDL(url, status, - context); - } - } -} - - -void -MSG_MessagePane::DoIncWithUIDL(URL_Struct * /*url*/, int /*status*/, - MWContext * /*context*/) -{ - if (GetUIDL()) { - DoCommand(MSG_GetNewMail, NULL, 0); - } -} - - - - -void MSG_MessagePane::PrepareToIncUIDL(URL_Struct* url, const char* uidl) -{ - XP_ASSERT(url && uidl); - if (!url || !uidl) return; - FREEIF(m_incUidl); - m_incUidl = XP_STRDUP(uidl); - if (url->msg_pane == NULL) url->msg_pane = this; - XP_ASSERT(url->msg_pane == this); - if (url && url->msg_pane == this && m_incUidl) { - url->pre_exit_fn = MSG_MessagePane::DoIncWithUIDL_s; - } -} - - -void -MSG_MessagePane::IncorporateShufflePartial(URL_Struct * /* url */, int status, - MWContext * /* context */) -{ - FREEIF(m_incUidl); - if (status < 0) - return; - XP_ASSERT(m_view); - if (!m_view) - return; - MessageDB* db = m_view->GetDB(); - - XP_ASSERT(db); - if (!db) - return; - XP_ASSERT(m_folder); - if (!m_folder) - return; - MSG_FolderInfoMail* mailfolder = m_folder->GetMailFolderInfo(); - - XP_ASSERT(mailfolder); - if (!mailfolder) - return; - - MessageKey oldkey = m_key; - MessageKey newkey = MSG_MESSAGEKEYNONE; - ListContext* list = NULL; - DBMessageHdr* hdr = NULL; - - if (db->ListLast(&list, &hdr) == eSUCCESS) { - newkey = hdr->GetMessageKey(); - db->ListDone(list); - } - - if (newkey == MSG_MESSAGEKEYNONE) - return; - - MSG_ThreadPane* threadpane = GetMaster()->FindThreadPaneNamed(mailfolder->GetPathname()); - if (threadpane) - { - MessageDBView* threadview = threadpane->GetMsgView(); - if (threadview) - { - MSG_ViewIndex index = threadview->FindViewIndex(oldkey); - if (index != MSG_VIEWINDEXNONE) - threadview->RemoveByIndex(index); // kill old msg line - //threadview->SetKeyByIndex(index, newkey); - } - } - - hdr = db->GetDBHdrForKey(oldkey); - if (hdr) { - db->RemoveHeaderFromDB(hdr); - delete hdr; - } - - LoadMessage(m_folder, newkey, NULL, TRUE); - - // Ok, this is a little weird. The GetNewMail command rightly acquires - // the semaphore, and hopes that GetNewMailExit will be called to releaase - // the semaphore. But when incorporating the rest of a truncated message, - // the exit function is IncorporateShufflePartial, so release it here. - m_folder->ReleaseSemaphore (this); - mailfolder->SetGettingMail(FALSE); -} - - - -char * -MSG_MessagePane::MakeForwardMessageUrl(XP_Bool quote_original) -{ - char *url = 0; - char *host = ComputeNewshostArg(); - MessageHdrStruct header; - char *fwd_subject = 0; - const char *id = 0; - char *attachment = 0; - - HG22987 - - if (!m_view || m_key == MSG_MESSAGEKEYNONE || - !m_folder || !m_view->GetDB()) { - return NULL; - } - if (m_view->GetDB()->GetMessageHdr(m_key, &header) != eSUCCESS) { - return NULL; - } - - fwd_subject = CreateForwardSubject(&header); - id = header.m_messageId; - - if (*id) { - attachment = m_folder->BuildUrl(m_view->GetDB(), m_key); - } - - /* if we are quoting the original document, slip a cookie string in - at the beginning of the attachment field. This will be removed - before processing. */ - - if (quote_original && attachment) { - char * new_attachment = PR_smprintf(MSG_FORWARD_COOKIE "%s", - attachment); - FREEIF(attachment); - attachment = new_attachment; - } - - url = MakeMailto(0, 0, 0, fwd_subject, 0, attachment, host, HG22296); - FREEIF(attachment); - - FREEIF(host); - FREEIF(fwd_subject); - - return url; -} - - - -MsgERR -MSG_MessagePane::ComposeMessage(MSG_CommandType type, Net_GetUrlExitFunc* func) -{ - char *host = 0; - char *url = 0; - XP_Bool free_url_p = FALSE; - URL_Struct *url_struct = 0; - MSG_FolderInfoNews *newsFolder; - MSG_PostDeliveryActionInfo *actionInfo = 0; - XP_Bool checkForHTML = FALSE; - - HG22867 - - switch (type) { - case MSG_MailNew: - host = ComputeNewshostArg (); - HG32145 - url = MakeMailto (0, 0, 0, 0, 0, 0, host, HG09990); - free_url_p = TRUE; - break; - case MSG_PostNew: - // ### tw - fix me - cast hack below - if (!m_folder->IsNews()) - break; - newsFolder = (MSG_FolderInfoNews *) m_folder; - - HG89520 - host = ComputeNewshostArg (); - url = MakeMailto (0, 0, newsFolder->GetNewsgroupName(), 0, 0, 0, - host, HG02192); - free_url_p = TRUE; - break; - case MSG_ReplyToSender: - url = m_mailToSenderUrl; - checkForHTML = TRUE; - break; - case MSG_ReplyToAll: - url = m_mailToAllUrl; - checkForHTML = TRUE; - break; - case MSG_PostReply: - url = m_postReplyUrl; - checkForHTML = TRUE; - break; - case MSG_PostAndMailReply: - url = m_postAndMailUrl; - checkForHTML = TRUE; - break; - case MSG_ForwardMessageAttachment: - url = MakeForwardMessageUrl(FALSE); - free_url_p = TRUE; - break; - case MSG_ForwardMessageQuoted: - /* last flag indicates to quote the original message. */ - url = MakeForwardMessageUrl(TRUE); - free_url_p = TRUE; - break; - default: - XP_ASSERT (0); - break; - } - - FREEIF(host); - if (!url) { - url = "mailto:"; - free_url_p = FALSE; - } - - // This is the place to add a "&force-plain-text" to the URL, if we ever - // again wanted the feature of forcing a plaintext composition when you - // reply to a plaintext message. - - if (checkForHTML) { - char* part = MimeGetHtmlPartURL(GetContext()); - if (part) { - char* tmp = PR_smprintf("%s&html-part=%s", url, part); - if (tmp) { - if (free_url_p) XP_FREE(url); - url = tmp; - free_url_p = TRUE; - } - } - } - - url_struct = NET_CreateURLStruct (url, NET_NORMAL_RELOAD); - if (free_url_p && url) { - XP_FREE(url); - } - if (!url_struct) return eOUT_OF_MEMORY; - - /* Get a ride from url_struct->fe_data to attach - * post delivery action info */ - if ( type == MSG_ReplyToSender || - type == MSG_ReplyToAll || - type == MSG_ForwardMessageAttachment || - type == MSG_ForwardMessageQuoted ) { - actionInfo = new MSG_PostDeliveryActionInfo(m_folder); - - if (actionInfo) { - actionInfo->m_msgKeyArray.Add(m_key); - - XP_ASSERT( url_struct->fe_data == NULL ); - - switch (type) { - case MSG_ReplyToSender: - case MSG_ReplyToAll: - actionInfo->m_flags |= MSG_FLAG_REPLIED; - url_struct->fe_data = actionInfo; - /* actionInfo will be freed by CompositionPane - * when we close down the Composition Window. - */ - break; - case MSG_ForwardMessageAttachment: - case MSG_ForwardMessageQuoted: - actionInfo->m_flags |= MSG_FLAG_FORWARDED; - url_struct->fe_data = actionInfo; - /* actionInfo will be freed by CompositionPane - * when we close down the Composition Window. - */ - break; - default: - XP_FREE (actionInfo); - break; - } - } - } - url_struct->internal_url = TRUE; - url_struct->pre_exit_fn = func; - - GetURL (url_struct, TRUE); - - return 0; -} - - -MsgERR MSG_MessagePane::SetViewFromUrl (const char *url) -{ - XP_ASSERT(!m_view); - XP_ASSERT(url); - - return MessageDBView::OpenURL(url, GetMaster(), - ViewAny, &m_view, TRUE); -} - -MsgERR MSG_MessagePane::DeleteMessage () -{ - MSG_ViewIndex index = m_view->FindViewIndex(m_key); - -// if (index != MSG_VIEWINDEXNONE) // try using the base class method...see what happens. -// return TrashMessages(&index, 1); - - MessageKey nextKey = MSG_MESSAGEKEYNONE; - IDArray *headerIds = new IDArray; - XP_Bool imapDeleteIsMoveToTrash = (m_folder) ? m_folder->DeleteIsMoveToTrash() : FALSE; - - // allocate an array for the async machine - - if (!headerIds) - { - XP_ASSERT(FALSE); - return eOUT_OF_MEMORY; - } - - // fill in the header for the selected message - headerIds->Add(m_key); - - // copy the messages into the trash folder - if (m_folder && (!(m_folder->GetFlags() & MSG_FOLDER_FLAG_TRASH) || !imapDeleteIsMoveToTrash)) - { - XP_ASSERT (m_folder->IsMail()); - - MSG_FolderInfoMail *trashFolder = NULL; - const char *path = NULL; - if (m_folder->GetType() == FOLDER_MAIL) - { - path = m_master->GetPrefs()->MagicFolderName (MSG_FOLDER_FLAG_TRASH); - trashFolder = m_master->FindMailFolder (path, TRUE); - } - else - { - if (imapDeleteIsMoveToTrash) - { - MSG_IMAPFolderInfoMail *imapInfo = m_folder->GetIMAPFolderInfoMail(); - if (imapInfo) - { - MSG_FolderInfo *foundTrash = MSG_GetTrashFolderForHost(imapInfo->GetIMAPHost()); - trashFolder = foundTrash ? foundTrash->GetMailFolderInfo() : (MSG_FolderInfoMail *)NULL; - } - } - } - - // Figure out what messate to load after this one is deleted - // MSG_FolderInfoMail::FinishCopyingMessages does the actual load. - if (index != MSG_VIEWINDEXNONE) - { - nextKey = m_view->GetAt(index + 1); - if (nextKey == MSG_MESSAGEKEYNONE) // if last msg, try getting previous - nextKey = m_view->GetAt(index - 1); - } - - if (trashFolder) - m_folder->StartAsyncCopyMessagesInto (trashFolder, - this, - m_view->GetDB(), - headerIds, - 1, - m_context, - NULL, // do not run in url queue - TRUE, - nextKey); - else if (!imapDeleteIsMoveToTrash && (m_folder->GetType() == FOLDER_IMAPMAIL) ) - ((MSG_IMAPFolderInfoMail *)m_folder)->DeleteSpecifiedMessages(this, *headerIds,nextKey); - //PHP impedance mismatch on error codes - } - return 0; -} - -// static -void MSG_MessagePane::PostDeleteLoadExitFunction(URL_Struct *URL_s, int status, MWContext *) -{ - if ((status == 0) && (URL_s->msg_pane->GetPaneType() == MSG_MESSAGEPANE)) - { - MSG_MessagePane *msgPane = (MSG_MessagePane *) URL_s->msg_pane; - MessageKey loadKey = msgPane->GetPostDeleteLoadKey(); - if (loadKey != MSG_MESSAGEKEYNONE) - { - msgPane->LoadMessage(msgPane->GetFolder(), loadKey, NULL, TRUE); - } - } - - if (URL_s->msg_pane->GetPaneType() == MSG_MESSAGEPANE) - ((MSG_MessagePane *) URL_s->msg_pane)->SetPostDeleteLoadKey(MSG_MESSAGEKEYNONE); -} - -MsgERR MSG_MessagePane::DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numIndices) -{ - // Note that nothing in here pays the slightest attention to indices or - // numIndices. On messagepanes, commands effect the displayed message - // and that's it. - - // We'd better not be trying to do any commands at all if we don't even - // have a m_view. - XP_ASSERT(m_view); - if (!m_view) return eUNKNOWN; - - if (command == MSG_ForwardMessage) - { - int32 forwardMsgMode = 0; - PREF_GetIntPref("mail.forward_message_mode", &forwardMsgMode); - if (forwardMsgMode == 1) - command = MSG_ForwardMessageQuoted; - else if (forwardMsgMode == 2) - command = MSG_ForwardMessageInline; - else - command = MSG_ForwardMessageAttachment; - } - - MsgERR err = eSUCCESS; - - switch (command) - { - case MSG_DeleteMessage: - { - // put this bug back in (deleting message from the trash) so that - // deleting a message from non-trash in stand-alone message will - // work for alpha. - // The real solution is to send a notification to the fe that - // a delete has finished. - err = DeleteMessage(); -// MSG_ViewIndex idx = m_view->FindIndex(m_key); -// err = TrashMessages (&idx, 1); - } - break; - case MSG_PostNew: - case MSG_PostReply: - case MSG_PostAndMailReply: - case MSG_MailNew: - case MSG_ReplyToSender: - case MSG_ReplyToAll: - case MSG_ForwardMessageAttachment: - case MSG_ForwardMessageQuoted: - err = ComposeMessage(command, NULL); - break; - case MSG_AddSender: - AddURLToAddressBook(m_mailToSenderUrl); - break; - case MSG_AddAll: - AddURLToAddressBook(m_mailToAllUrl); - break; - case MSG_ShowAllHeaders: - case MSG_ShowSomeHeaders: - case MSG_ShowMicroHeaders: - // ### mwelch Changed from m/n prefs object accessor - // to prefs api (will tweak prefs object) - PREF_SetIntPref("mail.show_headers", - (int) (command - MSG_ShowMicroHeaders)); - //GetMaster()->GetPrefs()->SetHeaderStyle (command); - err = LoadMessage (m_folder, m_key, NULL, TRUE); // is there an easier way to do this? - break; - case MSG_SaveMessagesAs: - case MSG_ForwardMessageInline: - case MSG_OpenMessageAsDraft: - { - MSG_ViewIndex index = m_view->FindViewIndex(m_key); - err = MSG_Pane::DoCommand(command, &index, 1); - } - break; - case MSG_AttachmentsInline: - case MSG_AttachmentsAsLinks: - { - MessageKey key = m_key; - PREF_SetBoolPref("mail.inline_attachments", - (command == MSG_AttachmentsInline)); - LoadMessage (m_folder, MSG_MESSAGEKEYNONE, NULL, TRUE); - LoadMessage (m_folder, key, NULL, TRUE); - } - break; - case MSG_WrapLongLines: - { - MessageKey key = m_key; - XP_Bool newWrap = !GetPrefs()->GetWrapLongLines(); - PREF_SetBoolPref("mail.wrap_long_lines", newWrap); - LoadMessage (m_folder, MSG_MESSAGEKEYNONE, NULL, TRUE); - LoadMessage (m_folder, key, NULL, TRUE); - } - break; - - case MSG_Rot13Message: - { - m_rot13p = !m_rot13p; - MessageKey key = m_key; - LoadMessage (m_folder, MSG_MESSAGEKEYNONE, NULL, TRUE); - LoadMessage (m_folder, key, NULL, TRUE); - } - break; - case MSG_CompressFolder: - { - MSG_FolderInfoMail *mailFolder = GetFolder()->GetMailFolderInfo(); - if (mailFolder) - err = CompressOneMailFolder(mailFolder); - else - XP_ASSERT(FALSE); // MSG_CommandStatus should have failed! - break; - } - default: - if (!indices) - { - MSG_ViewIndex index = m_view->FindViewIndex(m_key); - if (index != MSG_VIEWINDEXNONE ) - { - indices = &index; - numIndices = 1; - } - } - err = MSG_Pane::DoCommand(command, indices, numIndices); - } - return err; -} - -MsgERR MSG_MessagePane::AddToAddressBook(MSG_CommandType command, MSG_ViewIndex*indices, int32 numIndices, AB_ContainerInfo * destAB) -{ - MsgERR status = 0; - MessageHdrStruct header; - - status = m_view->GetDB()->GetMessageHdr(m_key, &header); - if (status != eSUCCESS) - return status; - - switch(command) - { - case MSG_AddSender: - AB_AddSenderAB2(this, destAB, header.m_author, m_mailToSenderUrl); - break; - case MSG_AddAll: - AB_AddSenderAB2(this, destAB, header.m_author, m_mailToAllUrl); - break; - default: - XP_ASSERT(0); - } - - return status; -} - -MsgERR MSG_MessagePane::AddURLToAddressBook(char * url) -{ - MessageHdrStruct header; - - if (!url) return 0; - if (m_view->GetDB()->GetMessageHdr(m_key, &header) != eSUCCESS) { - return 0; - } - // assume add to personal address book - AB_AddSenderToAddBook(FE_GetAddressBook(this), GetContext(), header.m_author, url); - return 0; -} - - -MsgERR MSG_MessagePane::GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, - int32 numindices, - XP_Bool *selectable_pP, - MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_stringP, - XP_Bool * plural_p) -{ - MsgERR err = eSUCCESS; - const char *display_string = NULL; - XP_Bool selectable_p = TRUE; - XP_Bool showingMsg = (m_key != MSG_MESSAGEKEYNONE); - MSG_ViewIndex curIndex; - - XP_Bool news_p = (m_folder && m_folder->IsNews() ); - - switch (command) - { - case MSG_CompressFolder: - { - selectable_p = m_folder && m_folder->IsMail(); - break; - } - case MSG_DeleteMessageNoTrash: - case MSG_DeleteMessage: - { - MessageDB *db = (m_view) ? m_view->GetDB() : 0; - selectable_p = (db != NULL && NULL != db->GetMailDB() && showingMsg); - if (selectable_p) - selectable_p = (MSG_VIEWINDEXNONE != m_view->FindViewIndex(m_key)); - - // can't delete news msg - display_string = XP_GetString (MK_MSG_DELETE_MESSAGE); - if (selected_p) - *selected_p = MSG_NotUsed; - break; - } - case MSG_MarkMessagesRead: - { - MessageDB *db = (m_view) ? m_view->GetDB() : 0; - if (m_view && db) - { - XP_Bool isRead; - if (db->IsRead(m_view->GetAt(m_view->FindViewIndex(m_key)), &isRead) == eSUCCESS) - { - if (!isRead) - { - selectable_p = TRUE; - } - } - display_string = XP_GetString (MK_MSG_MARK_AS_READ); - if (selected_p) - *selected_p = MSG_NotUsed; - } - break; - } - case MSG_MarkMessagesUnread: - { - MessageDB *db = (m_view) ? m_view->GetDB() : 0; - if (m_view && db) - { - XP_Bool isRead; - if (db->IsRead(m_view->GetAt(m_view->FindViewIndex(m_key)), &isRead) == eSUCCESS) - { - if (isRead) - { - selectable_p = TRUE; - } - } - display_string = XP_GetString (MK_MSG_MARK_AS_UNREAD); - if (selected_p) - *selected_p = MSG_NotUsed; - } - break; - } - case MSG_AddSender: - display_string = XP_GetString(MK_MSG_ADD_SENDER_TO_ADDRESS_BOOK); - selectable_p = showingMsg; - break; - case MSG_AddAll: - display_string = XP_GetString(MK_MSG_ADD_ALL_TO_ADDRESS_BOOK); - selectable_p = showingMsg; - break; - case MSG_PostNew: - display_string = XP_GetString(MK_MSG_NEW_NEWS_MESSAGE); - selectable_p = news_p && m_folder->AllowsPosting(); - break; - case MSG_PostReply: - display_string = XP_GetString(MK_MSG_POST_REPLY); - selectable_p = news_p && showingMsg && m_folder->AllowsPosting(); - break; - case MSG_PostAndMailReply: - display_string = XP_GetString(MK_MSG_POST_MAIL_REPLY); - selectable_p = news_p && showingMsg && m_folder->AllowsPosting(); - break; - case MSG_MailNew: - display_string = XP_GetString(MK_MSG_NEW_MAIL_MESSAGE); - break; - case MSG_ReplyToSender: - display_string = XP_GetString(MK_MSG_REPLY_TO_SENDER); - selectable_p = showingMsg; - break; - case MSG_ReplyToAll: - display_string = XP_GetString(MK_MSG_REPLY_TO_ALL); - selectable_p = showingMsg; - break; - case MSG_ForwardMessageQuoted: - display_string = XP_GetString(MK_MSG_FORWARD_QUOTED); - selectable_p = showingMsg; - break; - case MSG_ForwardMessage: - case MSG_ForwardMessageAttachment: - if (plural_p) - *plural_p = FALSE; - selectable_p = showingMsg; - display_string = XP_GetString(MK_MSG_FORWARD); - break; - case MSG_Rot13Message: - selectable_p = showingMsg; - if (selected_p) - *selected_p = (m_rot13p) ? MSG_Checked : MSG_Unchecked; - break; - case MSG_ShowAllHeaders: - case MSG_ShowSomeHeaders: - case MSG_ShowMicroHeaders: - if (selected_p) - *selected_p = (command == GetPrefs()->GetHeaderStyle() ? - MSG_Checked : MSG_Unchecked); - selectable_p = showingMsg; - break; - case MSG_AttachmentsInline: - if (selected_p) - *selected_p = (GetPrefs()->GetNoInlineAttachments() ? - MSG_Unchecked : MSG_Checked); - selectable_p = showingMsg; - break; - case MSG_AttachmentsAsLinks: - if (selected_p) - *selected_p = (GetPrefs()->GetNoInlineAttachments() ? - MSG_Checked : MSG_Unchecked); - selectable_p = showingMsg; - break; - case MSG_WrapLongLines: - if (selected_p) - *selected_p = (GetPrefs()->GetWrapLongLines() ? - MSG_Checked : MSG_Unchecked); - selectable_p = showingMsg; - break; - default: - if (indices == NULL && m_view) - { - curIndex = m_view->FindViewIndex(m_key); - indices = &curIndex; - numindices = 1; - } - return MSG_Pane::GetCommandStatus(command, indices, numindices, - selectable_pP, selected_p, - display_stringP, plural_p); - } - if (display_stringP) - *display_stringP = display_string; - - if (selectable_pP) - *selectable_pP = selectable_p; - - return err; -} - - -void -MSG_MessagePane::GetCurMessage(MSG_FolderInfo** folder, MessageKey* key, - MSG_ViewIndex *index) -{ - MessageKey curKey = (m_folder) ? m_key : MSG_MESSAGEKEYNONE; - - if (folder) *folder = m_folder; - if (key) *key = curKey; - if (index) - { - *index = (m_view && curKey != MSG_MESSAGEKEYNONE) - ? m_view->FindViewIndex(curKey) : MSG_VIEWINDEXNONE; - } -} - -int -MSG_MessagePane::GetViewedAttachments(MSG_AttachmentData** data, - XP_Bool* iscomplete) -{ - if (iscomplete) *iscomplete = m_doneLoading; - return MimeGetAttachmentList(GetContext(), data); -} - - -void -MSG_MessagePane::FreeAttachmentList(MSG_AttachmentData* data) -{ - MimeFreeAttachmentList(data); -} - - -HG82821 - -XP_Bool MSG_MessagePane::GetThreadLineByKey(MessageKey key, MSG_MessageLine* data) -{ - XP_ASSERT(m_view); - if (!m_view) - return FALSE; - -// XP_ASSERT(key == m_key); //When we load new msg ,this isn't be true - - int numlisted = -1; - MsgERR status = m_view->ListThreadsShort(&key, 1, data, &numlisted); - return (status == 0 && numlisted == 1); -} - - -XP_Bool MSG_MessagePane::ShouldRot13Message() -{ - return m_rot13p; -} - - - -/* This function opens a message and returns a handle to that message in the - * msg_ptr pointer. - * - * The message handle will be passed to MSG_ReadMessage and MSG_CloseMessage - * to read data and to close the message - * - * Return values: return a negative return value listed in merrors.h to - * signify an error. return zero (0) on success. - * - * !Set message_ptr to NULL on error! - */ - -int -MSG_MessagePane::OpenMessageSock(const char *folder_name, - const char *msg_id, int32 msgnum, - void *folder_ptr, void **message_ptr, - int32 *content_length) -{ - if (!m_view) - InitializeFolderAndView (folder_name); - - if (msgnum == MSG_MESSAGEKEYNONE && m_view) - { - MailMessageHdr *hdr = (MailMessageHdr*) m_view->GetDB()->GetDBMessageHdrForID(msg_id); - if (hdr) - msgnum = hdr->GetMessageKey(); - } - - if ( msgnum != MSG_MESSAGEKEYNONE ) { - m_key = msgnum; - InitializeFolderAndView (folder_name); - FE_PaneChanged(this, FALSE, MSG_PaneNotifyMessageLoaded, msgnum); - } - - return MSG_Pane::OpenMessageSock ( folder_name, msg_id, msgnum, - folder_ptr, message_ptr, - content_length ); -} - - -/* Partial messages - */ - - -char * -MSG_MessagePane::GeneratePartialMessageBlurb(URL_Struct *url, - void * /*closure*/, - MimeHeaders *headers) - -{ - char *stuff = 0; - char *new_url = 0, *quoted = 0; - unsigned long flags = 0; - char dummy = 0; - char *uidl = 0, *xmoz = 0; - - /* The message is partial if it has an X-UIDL header field, and it has - an X-Mozilla-Status header field which contains the `partial' bit. - */ - - uidl = MimeHeaders_get(headers, HEADER_X_UIDL, FALSE, FALSE); - if (!uidl) goto DONE; - xmoz = MimeHeaders_get(headers, HEADER_X_MOZILLA_STATUS, FALSE, FALSE); - if (!xmoz) goto DONE; - - if (1 != sscanf (xmoz, " %lx %c", &flags, &dummy)) goto DONE; - - if (! (flags & MSG_FLAG_PARTIAL)) goto DONE; - - quoted = NET_Escape (uidl, URL_XALPHAS); - if (!quoted) goto DONE; - FREEIF(uidl); - - new_url = (char *) XP_ALLOC (XP_STRLEN (url->address) + - XP_STRLEN (quoted) + 20); - if (!new_url) goto DONE; - - XP_STRCPY (new_url, url->address); - XP_ASSERT (XP_STRCHR (new_url, '?')); - if (XP_STRCHR (new_url, '?')) { - XP_STRCAT (new_url, "&uidl="); - } else { - XP_STRCAT (new_url, "?uidl="); - } - XP_STRCAT (new_url, quoted); - FREEIF(quoted); - - stuff = PR_smprintf ("%s%s%s%s", - XP_GetString(MK_MSG_PARTIAL_MSG_FMT_1), - XP_GetString(MK_MSG_PARTIAL_MSG_FMT_2), - new_url, - XP_GetString(MK_MSG_PARTIAL_MSG_FMT_3)); - -DONE: - FREEIF(new_url); - FREEIF(quoted); - FREEIF(uidl); - FREEIF(xmoz); - - return stuff; -} - -URL_Struct * MSG_MessagePane::ConstructUrlForMessage(MessageKey key) -{ - if (key == MSG_MESSAGEKEYNONE) - key = m_key; - return MSG_Pane::ConstructUrlForMessage(key); -} - - -MsgERR -MSG_MessagePane::LoadFolder(MSG_FolderInfo* f) -{ - char *url = NULL; - XP_Bool finishedLoadingFolder = FALSE; // are we finished loading folder? - XP_StatStruct folderst; - - if (f == m_folder) return 0; - - m_folder = f; - - if (!f) - return CloseView(); - - XP_ASSERT(f->GetType() == FOLDER_MAIL || - f->GetType() == FOLDER_NEWSGROUP || - f->GetType() == FOLDER_IMAPMAIL || - f->GetType() == FOLDER_CATEGORYCONTAINER); - - // we need to abort any current background parsing. - if (m_folder != NULL) - msg_InterruptContext(GetContext(), TRUE); - - if (m_folder && m_folder->UserNeedsToAuthenticateForFolder(FALSE) && m_master->PromptForHostPassword(GetContext(), m_folder) != 0) - return 0; - - CloseView(); - - url = f->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - - ViewType typeOfView = ViewAny; - - - MsgERR status = MessageDBView::OpenURL(url, GetMaster(), - typeOfView, &m_view, FALSE); - - - // fire off the IMAP url to update this folder, if it is IMAP - if ((f->GetType() == FOLDER_IMAPMAIL) && (status == eSUCCESS)) - { - MSG_IMAPFolderInfoMail *imapFolder = f->GetIMAPFolderInfoMail(); - if (imapFolder) - { - imapFolder->StartUpdateOfNewlySelectedFolder(this,TRUE,NULL); - } - else - { - XP_ASSERT(FALSE); - } - } - - if (f->GetType() == FOLDER_MAIL && status != eSUCCESS /*== eOldSummaryFile*/) - { - MailDB *mailDB; - - XP_Trace("blowing away old summary file\n"); - const char* pathname = ((MSG_FolderInfoMail*) f)->GetPathname(); - if (!XP_Stat(pathname, &folderst, xpMailFolderSummary) && XP_FileRemove(pathname, xpMailFolderSummary) != 0) - { - status = MK_MSG_CANT_OPEN; - } - else - { - MSG_Master *mailMaster = GetMaster(); - URL_Struct *url_struct; - url_struct = NET_CreateURLStruct(url, NET_DONT_RELOAD); - - status = MailDB::Open(pathname, TRUE, &mailDB, TRUE); - if (mailDB != NULL && (status == eSUCCESS || status == eNoSummaryFile)) - { - status = MessageDBView::OpenViewOnDB(mailDB, - ViewAny, &m_view); - mailDB->Close(); // decrement ref count. - } - if (m_view != NULL && m_view->GetDB() != NULL) - { - ParseMailboxState *parseMailboxState = new ParseMailboxState(pathname); - parseMailboxState->SetView(m_view); - parseMailboxState->SetPane(this); - parseMailboxState->SetIncrementalUpdate(FALSE); - parseMailboxState->SetMaster(mailMaster); - parseMailboxState->SetDB(m_view->GetDB()->GetMailDB()); - parseMailboxState->SetContext(GetContext()); - parseMailboxState->SetFolder(m_folder); - ((MSG_FolderInfoMail*)f)->SetParseMailboxState(parseMailboxState); - // fire off url to create summary file from mailbox - will work in background - GetURL(url_struct, FALSE); - } - } - } - else if (f->IsNews()) - { - MSG_FolderInfoNews *newsFolder = f->GetNewsFolderInfo(); - XP_ASSERT(newsFolder); - const char* groupname = newsFolder->GetNewsgroupName(); - if (status != eSUCCESS) - { - if (status == eErrorOpeningDB || status == eOldSummaryFile) // corrupt database or out of date - { - NewsGroupDB *newsDB; - const char *dbFileName = newsFolder->GetXPDBFileName(); - - if (dbFileName != NULL) - XP_FileRemove(dbFileName, xpXoverCache); - status = NewsGroupDB::Open(url, GetMaster(), &newsDB); - if (status == eSUCCESS) - { - status = MessageDBView::OpenViewOnDB(newsDB, - ViewAny, &m_view); - newsDB->Close(); - } - } - } - if (status == eSUCCESS) // get new articles from server. - { - MSG_Master *master = GetMaster(); - URL_Struct *url_struct; - url_struct = NET_CreateURLStruct(url, NET_DONT_RELOAD); - ListNewsGroupState * listState = new ListNewsGroupState(url, groupname, this); - listState->SetMaster(master); - listState->SetView(m_view); - newsFolder->SetListNewsGroupState(listState); - int status = GetURL(url_struct, FALSE); - if (status == MK_INTERRUPTED || status == MK_OFFLINE) - { - if (newsFolder->GetListNewsGroupState()) // FinishXOver not called... - { - delete listState; - newsFolder->SetListNewsGroupState(NULL); - } - StartingUpdate(MSG_NotifyAll, 0, 0); - EndingUpdate(MSG_NotifyAll, 0, 0); - finishedLoadingFolder = TRUE; - } - } - else if (status == eBuildViewInBackground) - { - status = ListThreads(); - } - } - else if (f->GetType() == FOLDER_IMAPMAIL && status != eSUCCESS) - { - const char* pathname = ((MSG_FolderInfoMail*) f)->GetPathname(); - XP_FileRemove(pathname, xpMailFolderSummary); - } - else if (status == eSUCCESS) - { - finishedLoadingFolder = TRUE; - } - if (status == eSUCCESS) - { - m_view->Add(GetListener()); - } - - // imap folders loads are asynchronous - // this notification will happen in - // MSG_IMAPFolderInfoMail::AllFolderHeadersAreDownloaded - if (finishedLoadingFolder && (f->GetType() != FOLDER_IMAPMAIL)) - { - FE_PaneChanged(this, TRUE, MSG_PaneNotifyFolderLoaded, (uint32) f); - } - - if (m_folder) - m_folder->SummaryChanged(); // for Will - so thread pane can display counts. - - XP_FREE(url); - return status; -} diff --git a/mozilla/lib/libmsg/msgmpane.h b/mozilla/lib/libmsg/msgmpane.h deleted file mode 100644 index a7151f80f97..00000000000 --- a/mozilla/lib/libmsg/msgmpane.h +++ /dev/null @@ -1,184 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgMPane_H_ -#define _MsgMPane_H_ - -#include "rosetta.h" - -#include "msgpane.h" -#include "msgsec.h" - -class MSG_ThreadPane; -class MessageDB; - -class MSG_MessagePane : public MSG_Pane -{ -public: - MSG_MessagePane(MWContext* context, MSG_Master* master); - virtual ~MSG_MessagePane(); - - virtual MSG_PaneType GetPaneType(); - - int SetMessagePaneCallbacks(MSG_MessagePaneCallbacks* c, void* closure); - MSG_MessagePaneCallbacks* GetMessagePaneCallbacks(void** closure); - - virtual MessageDBView *GetMsgView() {return m_view;} - virtual void SetMsgView(MessageDBView *view) {m_view = view;} - virtual void SwitchView(MessageDBView *); - - virtual void StartingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, int32 num); - - virtual void EndingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, int32 num); - - virtual MSG_FolderInfo *GetFolder(); - virtual void SetFolder(MSG_FolderInfo *info); - - virtual PaneListener *GetListener(); - - virtual void NotifyPrefsChange(NotifyCode code); - - virtual MsgERR LoadFolder(MSG_FolderInfo* f) ; - MsgERR LoadMessage(MSG_FolderInfo* folder, MessageKey key, Net_GetUrlExitFunc *loadUrlExitFunction, - XP_Bool allow_content_change); - - - // This is a true hack. If called, then this message pane is really just - // being used to gather info in order to make a composition based on this - // message. Cause the message to get loaded, then go launch the - // composition, and then destroy this message pane. - - MsgERR MakeComposeFor(MSG_FolderInfo* folder, MessageKey key, - MSG_CommandType type); - MsgERR LoadMessage(const char *url); - - virtual int OpenMessageSock(const char *folder_name, const char *msg_id, - int32 msgnum, void *folder_ptr, void **message_ptr, - int32 *content_length); - - char* GeneratePartialMessageBlurb(URL_Struct* url, - void* closure, - MimeHeaders* headers); - - void ActivateReplyOptions(MimeHeaders* headers); - - void PrepareToIncUIDL(URL_Struct* url, const char* uidl); - - // new address book requires us to pull "add to address book" out of commmand status so we can include a dest AB - virtual MsgERR AddToAddressBook(MSG_CommandType command, MSG_ViewIndex*indices, int32 numIndices, AB_ContainerInfo * destAB); - - virtual MsgERR DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices); - virtual MsgERR GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, int32 numindices, - XP_Bool *selectable_p, - MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_string, - XP_Bool *plural_p); - - MsgERR DeleteMessages (MSG_ViewIndex* indices, int32 numindices); - MsgERR SetViewFromUrl (const char *url); - // return a url_struct with a url that refers to this pane. - URL_Struct * ConstructUrlForMessage(MessageKey key = MSG_MESSAGEKEYNONE); - - int AddAttachment(const char *type, int typelen, const char *name, - int namelen, const char *url, uint32 partnumber, - const char *description, const char *x_mac_type, - const char *x_mac_creator); - - void GetCurMessage(MSG_FolderInfo** folder, MessageKey* key, - MSG_ViewIndex *index); - - int GetViewedAttachments(MSG_AttachmentData** data, XP_Bool* iscomplete); - void FreeAttachmentList(MSG_AttachmentData* data); - - HG82224 - - XP_Bool GetThreadLineByKey(MessageKey key, MSG_MessageLine* data); - - XP_Bool ShouldRot13Message(); - MsgERR ComposeMessage(MSG_CommandType type, Net_GetUrlExitFunc* func = NULL); - - static void PostDeleteLoadExitFunction(URL_Struct *URL_s, int status, MWContext *window_id); - - // used to load next message when using imap delete model - void SetPostDeleteLoadKey(MessageKey key) { m_postDeleteLoadKey = key; } - MessageKey GetPostDeleteLoadKey() { return m_postDeleteLoadKey; } -protected: - char* MakeForwardMessageUrl(XP_Bool quote_original); - - void ClearDerivedStrings(); - MsgERR DeleteMessage (); - MsgERR AddURLToAddressBook(char* url); - MsgERR InitializeFolderAndView (const char *folderName); - - static void FinishedLoading(URL_Struct*, int status, MWContext* context); - static void FinishComposeFor(URL_Struct*, int status, MWContext* context); - static void DestroyPane(URL_Struct*, int status, MWContext* context); - - static void DoIncWithUIDL_s(URL_Struct *url, int status, - MWContext *context); - void DoIncWithUIDL(URL_Struct *url, int status, MWContext *context); - virtual void IncorporateShufflePartial(URL_Struct *url, int status, - MWContext *context); - - - - MSG_MessagePaneCallbacks* m_callbacks; - void* m_callbackclosure; - - MSG_FolderInfo* m_folder; - MessageKey m_key; - - // used to load next message when using imap delete model - MessageKey m_postDeleteLoadKey; - - MessageDBView* m_view; // the database view this message belongs to - PaneListener m_PaneListener; - - - // These are a bunch of URL's and strings that we remember from the message - // (we grab this info as we are streaming the stuff to be translated to - // HTML and rendered). - - char* m_mailToSenderUrl; // URL to use for "Reply to sender." - char* m_mailToAllUrl; // URL to use for "Reply to all." - char* m_postReplyUrl; // URL to use for "Post reply." - char* m_postAndMailUrl; // URL to use for "Post and mail reply." - char* m_displayedMessageSubject; // The subject of the displayed message. - char* m_displayedMessageId; // The message-id of the displayed message. - - XP_Bool m_cancellationAllowed; // For news only -- whether it's OK to - // cancel this message. - - XP_Bool m_justmakecompose; - MSG_CommandType m_composetype; - - HG22821 - - Net_GetUrlExitFunc* m_doneLoadingFunc; - XP_Bool m_doneLoading; - XP_Bool m_rot13p; -}; - - -#endif /* _MsgMPane_H_ */ diff --git a/mozilla/lib/libmsg/msgmsrch.cpp b/mozilla/lib/libmsg/msgmsrch.cpp deleted file mode 100644 index 6d56bdc83d2..00000000000 --- a/mozilla/lib/libmsg/msgmsrch.cpp +++ /dev/null @@ -1,1314 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// Implementation of search for POP and IMAP mail folders - -#include "msg.h" -#include "pmsgsrch.h" - -#include "prsembst.h" -#include "maildb.h" -#include "newsdb.h" -#include "grpinfo.h" -#include "msgfinfo.h" -#include "msgmpane.h" -#include "imap.h" -#include "msgprefs.h" -#include "xpgetstr.h" -#include "mailhdr.h" -#include "libi18n.h" -#include "msgimap.h" - -extern "C" -{ - extern int MK_MSG_SEARCH_STATUS; - extern int MK_MSG_CANT_SEARCH_IF_NO_SUMMARY; - extern int MK_MSG_SEARCH_HITS_NOT_IN_DB; -} - - -//---------------------------------------------------------------------------- -// Class definitions for the boolean expression structure.... -//---------------------------------------------------------------------------- -CBoolExpression::CBoolExpression() -{ - m_term = NULL; - m_boolOp = MSG_SearchBooleanAND; - m_encodingStr = NULL; - m_evalValue = FALSE; - m_leftChild = NULL; - m_rightChild = NULL; -} - -CBoolExpression::CBoolExpression (MSG_SearchTerm * newTerm, XP_Bool evalValue, char * encodingStr) -// we are creating an expression which contains a single search term (newTerm) -// and the search term's IMAP or NNTP encoding value for online search expressions AND -// a boolean evaluation value which is used for offline search expressions. -{ - m_term = newTerm; - m_encodingStr = encodingStr; - m_evalValue = evalValue; - - // this expression does not contain sub expressions - m_leftChild = NULL; - m_rightChild = NULL; -} - - -CBoolExpression::CBoolExpression (CBoolExpression * expr1, CBoolExpression * expr2, MSG_SearchBooleanOp boolOp) -// we are creating an expression which contains two sub expressions and a boolean operator used to combine -// them. -{ - m_leftChild = expr1; - m_rightChild = expr2; - m_boolOp = boolOp; - - m_term = NULL; - m_evalValue = FALSE; -} - -CBoolExpression::~CBoolExpression() -{ - // we must recursively destroy all sub expressions before we destroy ourself.....We leave search terms alone! - if (m_leftChild) - delete m_leftChild; - if (m_rightChild) - delete m_rightChild; -} - -CBoolExpression * CBoolExpression::AddSearchTerm(MSG_SearchTerm * newTerm, char * encodingStr) -// appropriately add the search term to the current expression and return a pointer to the -// new expression. The encodingStr is the IMAP/NNTP encoding string for newTerm. -{ - return leftToRightAddTerm(newTerm,FALSE,encodingStr); -} - -CBoolExpression * CBoolExpression::AddSearchTerm(MSG_SearchTerm * newTerm, XP_Bool evalValue) -// appropriately add the search term to the current expression -// Returns: a pointer to the new expression which includes this new search term -{ - return leftToRightAddTerm(newTerm, evalValue,NULL); // currently we build our expressions to - // evaluate left to right. -} - -CBoolExpression * CBoolExpression::leftToRightAddTerm(MSG_SearchTerm * newTerm, XP_Bool evalValue, char * encodingStr) -{ - // we have a base case where this is the first term being added to the expression: - if (!m_term && !m_leftChild && !m_rightChild) - { - m_term = newTerm; - m_evalValue = evalValue; - m_encodingStr = encodingStr; - return this; - } - - CBoolExpression * tempExpr = new CBoolExpression (newTerm,evalValue,encodingStr); - if (tempExpr) // make sure creation succeeded - { - CBoolExpression * newExpr = new CBoolExpression (this, tempExpr, newTerm->GetBooleanOp()); - if (newExpr) - return newExpr; - else - delete tempExpr; // clean up memory allocation in case of failure - } - return this; // in case we failed to create a new expression, return self -} - - -XP_Bool CBoolExpression::OfflineEvaluate() -// returns TRUE or FALSE depending on what the current expression evaluates to. Since this is -// offline, when we created the expression we stored an evaluation value for each search term in -// the expression. These are the values we use to determine if the expression is TRUE or FALSE. -{ - if (m_term) // do we contain just a search term? - return m_evalValue; - - // otherwise we must recursively determine the value of our sub expressions - XP_Bool result1 = TRUE; // always default to false positives - XP_Bool result2 = TRUE; - - if (m_leftChild) - result1 = m_leftChild->OfflineEvaluate(); - if (m_rightChild) - result2 = m_rightChild->OfflineEvaluate(); - - if (m_boolOp == MSG_SearchBooleanOR) - { - if (result1 || result2) - return TRUE; - } - - if (m_boolOp == MSG_SearchBooleanAND) - { - if (result1 && result2) - return TRUE; - } - - return FALSE; -} - -int32 CBoolExpression::CalcEncodeStrSize() -// recursively examine each sub expression and calculate a final size for the entire IMAP/NNTP encoding -{ - if (!m_term && (!m_leftChild || !m_rightChild)) // is the expression empty? - return 0; - if (m_term) // are we a leaf node? - return XP_STRLEN(m_encodingStr); - if (m_boolOp == MSG_SearchBooleanOR) - return sizeOfORTerm + m_leftChild->CalcEncodeStrSize() + m_rightChild->CalcEncodeStrSize(); - if (m_boolOp == MSG_SearchBooleanAND) - return sizeOfANDTerm + m_leftChild->CalcEncodeStrSize() + m_rightChild->CalcEncodeStrSize(); - return 0; -} - - -int32 CBoolExpression::GenerateEncodeStr(char * buffer, int32 bufSize) -// recurively combine sub expressions to form a single IMAP/NNTP encoded string -// assumes buffer[0] == '\0' -// RETURNS: number of bytes copied into the buffer -{ - if (bufSize < CalcEncodeStrSize() || (!m_term && (!m_leftChild || !m_rightChild))) // is expression empty? - return 0; - - if (m_term) // are we a leaf expression? - { - XP_STRCAT(buffer, m_encodingStr); - return XP_STRLEN(m_encodingStr); - } - - // add encode strings of each sub expression - int32 numBytesAdded = 0; - if (m_boolOp == MSG_SearchBooleanOR) - { - char * marker = buffer; - XP_STRCAT(buffer, " (OR"); - buffer[4] = '\0'; // terminate the string - buffer += 4; // advance buffer - bufSize -= 4; // adjust remaining buffer size - - numBytesAdded = m_leftChild->GenerateEncodeStr(buffer, bufSize); // insert left expression into the buffer - buffer += numBytesAdded; - buffer[0] = '\0'; - bufSize -= numBytesAdded; - numBytesAdded = m_rightChild->GenerateEncodeStr(buffer, bufSize); // insert right expression into the buffer - - // hack. If last returned character in the buffer is now a ' ' then we need to remove it because we don't want - // a ' ' to preceded the closing paren in the OR encoding. - if (buffer[numBytesAdded-1] == ' ') - numBytesAdded--; - - buffer[numBytesAdded++] = ')'; - buffer[numBytesAdded] = '\0'; - return XP_STRLEN(marker); // return # bytes we have added to the beginning of the buffer - } - - if (m_boolOp == MSG_SearchBooleanAND) - { - char * marker = buffer; - buffer[0] = '\0'; - numBytesAdded = m_leftChild->GenerateEncodeStr(buffer, bufSize); // insert left expression - buffer += numBytesAdded; - bufSize -= numBytesAdded; - buffer[0] = '\0'; - - numBytesAdded = m_rightChild->GenerateEncodeStr(buffer, bufSize); - buffer += numBytesAdded; - buffer[numBytesAdded] = '\0'; - return XP_STRLEN(marker); - } - return 0; -} - - - -//---------------- Adapter class for searching offline IMAP folders ----------- -//----------------------------------------------------------------------------- -msg_SearchIMAPOfflineMail::msg_SearchIMAPOfflineMail (MSG_ScopeTerm *scope, MSG_SearchTermArray &termList) : msg_SearchOfflineMail(scope, termList) -{ - -} - - -msg_SearchIMAPOfflineMail::~msg_SearchIMAPOfflineMail() -{ - -} - -MSG_SearchError msg_SearchIMAPOfflineMail::ValidateTerms () -{ - // most of this was copied from MSG_SearchOffline::ValidateTerms()....Difference: When using IMAP offline, we do not - // have a mail folder to validate. - - MSG_SearchError err = msg_SearchAdapter::ValidateTerms (); - if (SearchError_Success == err) - { - // Mail folder must exist. Don't worry about the summary file now since we may - // have to regenerate the index later -// XP_StatStruct fileStatus; -// if (!XP_Stat (m_scope->GetMailPath(), &fileStatus, xpMailFolder)) -// { - // Make sure the terms themselves are valid - msg_SearchValidityTable *table = NULL; - err = gValidityMgr.GetTable (msg_SearchValidityManager::offlineMail, &table); - if (SearchError_Success == err) - { - XP_ASSERT (table); - err = table->ValidateTerms (m_searchTerms); - } -// } -// else -// XP_ASSERT(0); - } - return err; -} - - - -//----------------------------------------------------------------------------- -//---------------- Adapter class for searching offline folders ---------------- -//----------------------------------------------------------------------------- - - -msg_SearchOfflineMail::msg_SearchOfflineMail (MSG_ScopeTerm *scope, MSG_SearchTermArray &termList) : msg_SearchAdapter (scope, termList) -{ - m_db = NULL; - m_listContext = NULL; - - m_mailboxParser = NULL; - m_parserState = kOpenFolderState; -} - - -msg_SearchOfflineMail::~msg_SearchOfflineMail () -{ - // Database should have been closed when the scope term finished. - XP_ASSERT(!m_db); -} - - -MSG_SearchError msg_SearchOfflineMail::ValidateTerms () -{ - MSG_SearchError err = msg_SearchAdapter::ValidateTerms (); - if (SearchError_Success == err) - { - // Mail folder must exist. Don't worry about the summary file now since we may - // have to regenerate the index later - XP_StatStruct fileStatus; - if (!XP_Stat (m_scope->GetMailPath(), &fileStatus, xpMailFolder)) - { - // Make sure the terms themselves are valid - msg_SearchValidityTable *table = NULL; - err = gValidityMgr.GetTable (msg_SearchValidityManager::offlineMail, &table); - if (SearchError_Success == err) - { - XP_ASSERT (table); - err = table->ValidateTerms (m_searchTerms); - } - } - else - XP_ASSERT(0); - } - return err; -} - - -MSG_SearchError msg_SearchOfflineMail::OpenSummaryFile () -{ - MailDB *mailDb = NULL; - - // do password protection of local cache thing. - if (m_scope->m_folder && m_scope->m_folder->UserNeedsToAuthenticateForFolder(FALSE) && m_scope->m_folder->GetMaster()->PromptForHostPassword(m_scope->m_frame->GetContext(), m_scope->m_folder) != 0) - return SearchError_DBOpenFailed; - - MsgERR dbErr = MailDB::Open (m_scope->GetMailPath(), FALSE /*create?*/, &mailDb); - MSG_SearchError err = SearchError_Success; - switch (dbErr) - { - case eSUCCESS: - break; - case eDBExistsNot: - case eNoSummaryFile: - case eOldSummaryFile: - m_mailboxParser = new ParseMailboxState (m_scope->GetMailPath()); - if (!m_mailboxParser) - err = SearchError_OutOfMemory; - else - { - // Remove the old summary file so maildb::open can create a new one - XP_FileRemove (m_scope->GetMailPath(), xpMailFolderSummary); - dbErr = MailDB::Open (m_scope->GetMailPath(), TRUE /*create?*/, &mailDb, TRUE /*upgrading?*/); - XP_ASSERT(mailDb); - - // Initialize the async parser to rebuild the summary file - m_parserState = kOpenFolderState; - m_mailboxParser->SetContext (m_scope->m_frame->GetContext()); - m_mailboxParser->SetDB (mailDb); - m_mailboxParser->SetFolder(m_scope->m_folder); - m_mailboxParser->SetIgnoreNonMailFolder(TRUE); - err = SearchError_Success; - } - break; - default: - { -#ifdef _DEBUG - char *buf = PR_smprintf ("Failed to open '%s' with error 0x%08lX", m_scope->m_folder->GetName(), (long) dbErr); - FE_Alert (m_scope->m_frame->GetContext(), buf); - XP_FREE (buf); -#endif - err = SearchError_DBOpenFailed; - } - } - - if (mailDb && err == SearchError_Success) - m_db = mailDb; - - return err; -} - - -MSG_SearchError msg_SearchOfflineMail::BuildSummaryFile () -{ - // State machine for rebuilding the summary file asynchronously in the - // middle of the already-asynchronous search. - - MSG_SearchError err = SearchError_Success; - int mkErr = 0; - switch (m_parserState) - { - case kOpenFolderState: - mkErr = m_mailboxParser->BeginOpenFolderSock (m_scope->GetMailPath(), NULL, 0, NULL); - if (mkErr == MK_WAITING_FOR_CONNECTION) - m_parserState++; - else - err = SummaryFileError(); - break; - case kParseMoreState: - mkErr = m_mailboxParser->ParseMoreFolderSock (m_scope->GetMailPath(), NULL, 0, NULL); - if (mkErr == MK_CONNECTED) - m_parserState++; - else - if (mkErr != MK_WAITING_FOR_CONNECTION) - err = SummaryFileError(); - break; - case kCloseFolderState: - m_mailboxParser->CloseFolderSock (NULL, NULL, 0, NULL); - if (!m_mailboxParser->GetIsRealMailFolder()) - { - // mailbox parser has already closed the db (right?) - XP_ASSERT(m_mailboxParser->GetDB() == 0); - m_db = NULL; - err = SearchError_ScopeDone; - } - delete m_mailboxParser; - m_mailboxParser = NULL; - // Put our regular "searching Inbox..." status text back up - m_scope->m_frame->UpdateStatusBar(MK_MSG_SEARCH_STATUS); - break; - } - return err; -} - - -MSG_SearchError msg_SearchOfflineMail::SummaryFileError () -{ - char *errTemplate = XP_GetString(MK_MSG_CANT_SEARCH_IF_NO_SUMMARY); - if (errTemplate) - { - char *prompt = PR_smprintf (errTemplate, m_scope->m_folder->GetName()); - if (prompt) - { - FE_Alert (m_scope->m_frame->GetContext(), prompt); - XP_FREE(prompt); - } - } - - // If we got a summary file error while parsing, clean up all the parser state - if (m_mailboxParser) - { - m_mailboxParser->CloseFolderSock (NULL, NULL, 0, NULL); - delete m_mailboxParser; - m_mailboxParser = NULL; - m_db = NULL; - } - - return SearchError_ScopeDone; -} - -MSG_SearchError msg_SearchOfflineMail::MatchTermsForFilter(DBMessageHdr *msgToMatch, - MSG_SearchTermArray & termList, - MSG_ScopeTerm * scope, - MessageDB * db, - char * headers, - uint32 headerSize) -{ - return MatchTerms(msgToMatch, termList, scope, db, headers, headerSize, TRUE); -} - -// static method which matches a header against a list of search terms. -MSG_SearchError msg_SearchOfflineMail::MatchTermsForSearch(DBMessageHdr *msgToMatch, - MSG_SearchTermArray &termList, - MSG_ScopeTerm *scope, - MessageDB *db) -{ - return MatchTerms(msgToMatch, termList, scope, db, NULL, 0, FALSE); -} - -MSG_SearchError msg_SearchOfflineMail::MatchTerms(DBMessageHdr *msgToMatch, - MSG_SearchTermArray & termList, - MSG_ScopeTerm * scope, - MessageDB * db, - char * headers, - uint32 headerSize, - XP_Bool Filtering) -{ - MSG_SearchError err = SearchError_Success; - XPStringObj recipients; - XPStringObj ccList; - XPStringObj matchString; - MSG_DBHandle dbHandle = (db) ? db->GetDB() : 0; - -#ifdef _DEBUG - // Use this to peek at the message since the atom IDs make the header strings opaque - MessageHdrStruct debugHdr; - msgToMatch->CopyToMessageHdr (&debugHdr); -#endif - - // Don't even bother to look at expunged messages awaiting compression - if (msgToMatch->GetFlags() & kExpunged) - err = SearchError_NotAMatch; - - // Loop over all terms, and match them all to this message. - - int16 csid = scope->m_folder->GetFolderCSID() & ~CS_AUTO; - if (CS_DEFAULT == csid) - csid = INTL_DefaultWinCharSetID(0); - - - CBoolExpression * expression = new CBoolExpression(); // create our expression - if (!expression) - return SearchError_OutOfMemory; - for (int i = 0; i < termList.GetSize(); i++) - { - MSG_SearchTerm *pTerm = termList.GetAt(i); - XP_ASSERT (pTerm->IsValid()); - XP_ASSERT (msgToMatch); - - switch (pTerm->m_attribute) - { - case attribSender: - msgToMatch->GetAuthor(matchString, dbHandle); - err = pTerm->MatchRfc822String (matchString, csid); - break; - case attribSubject: - msgToMatch->GetSubject(matchString, TRUE, dbHandle); - err = pTerm->MatchString (matchString, csid); - break; - case attribToOrCC: - { - MSG_SearchError errKeepGoing = pTerm->MatchAllBeforeDeciding() ? SearchError_Success : SearchError_NotAMatch; - msgToMatch->GetRecipients(recipients, db->GetDB()); - err = pTerm->MatchRfc822String (recipients, csid); - if (errKeepGoing == err) - { - msgToMatch->GetCCList(ccList, db->GetDB()); - err = pTerm->MatchRfc822String (ccList, csid); - } - } - break; - case attribBody: - err = pTerm->MatchBody (scope, msgToMatch->GetArticleNum(), msgToMatch->GetLineCount(), csid, msgToMatch, db); - break; - case attribDate: - err = pTerm->MatchDate (msgToMatch->GetDate()); - break; - case attribMsgStatus: - err = pTerm->MatchStatus (msgToMatch->GetFlags()); - break; - case attribPriority: - err = pTerm->MatchPriority (msgToMatch->GetPriority()); - break; - case attribSize: - err = pTerm->MatchSize (msgToMatch->GetByteLength()); - break; - case attribTo: - msgToMatch->GetRecipients(recipients, db->GetDB()); - err = pTerm->MatchRfc822String(recipients, csid); - break; - case attribCC: - msgToMatch->GetCCList(ccList, db->GetDB()); - err = pTerm->MatchRfc822String (ccList, csid); - break; - case attribAgeInDays: - err = pTerm->MatchAge (msgToMatch->GetDate()); - break; - case attribOtherHeader: - err = pTerm->MatchArbitraryHeader (scope, msgToMatch->GetArticleNum(), msgToMatch->GetLineCount(),csid, - msgToMatch, db, headers, headerSize, Filtering); - break; - - default: - err = SearchError_InvalidAttribute; - } - - if (expression && (err == SearchError_Success || err == SearchError_NotAMatch)) - expression = expression->AddSearchTerm(pTerm, (err == SearchError_Success)); // added the term and its value to the expression tree - else - return SearchError_OutOfMemory; - } - XP_Bool result = expression->OfflineEvaluate(); - delete expression; - return result ? SearchError_Success : SearchError_NotAMatch; -} - - -MSG_SearchError msg_SearchOfflineMail::Search () -{ - MSG_SearchError err = SearchError_Success; - DBMessageHdr *pHeaders = NULL; - MsgERR dbErr = 0; - - // If we need to parse the mailbox before searching it, give another time - // slice to the parser - if (m_mailboxParser) - err = BuildSummaryFile (); - else - // Try to open the DB lazily. This will set up a parser if one is required - if (!m_db) - err = OpenSummaryFile (); - - // Reparsing is unnecessary or completed - if (m_mailboxParser == NULL && err == SearchError_Success) - { - XP_ASSERT (m_db); - - if (!m_listContext) - dbErr = m_db->ListFirst (&m_listContext, &pHeaders); - else - dbErr = m_db->ListNext (m_listContext, &pHeaders); - if (eSUCCESS != dbErr) - { - // Do clean up for end-of-scope processing - err = SearchError_ScopeDone; //###phil dbErr is dropped on the floor - m_db->ListDone (m_listContext); - - // Let go of the DB when we're done with it so we don't kill the db cache - if (m_db) - m_db->Close(); - m_db = NULL; - - // If we were searching the body of the message, close the folder - if (m_scope->m_file) - XP_FileClose (m_scope->m_file); - m_scope->m_file = NULL; - - return err; - } - else - // Is this message a hit? - err = MatchTermsForSearch (pHeaders, m_searchTerms, m_scope, m_db); - - // Add search hits to the results list - if (SearchError_Success == err) - AddResultElement (pHeaders, m_db); - - m_scope->m_frame->IncrementOfflineProgress(); - - delete pHeaders; - - } - return err; -} - - -MSG_SearchError msg_SearchOfflineMail::AddResultElement (DBMessageHdr *pHeaders, MessageDB *db) -{ - MSG_SearchError err = SearchError_Success; - MSG_DBHandle dbHandle = (db) ? db->GetDB() : 0; - - MSG_ResultElement *newResult = new MSG_ResultElement (this); - - if (newResult) - { - XP_ASSERT (newResult); - - // This isn't very general. Just add the headers we think we'll be interested in - // to the list of attributes per result element. - MSG_SearchValue *pValue = new MSG_SearchValue; - if (pValue) - { - XPStringObj subject; - pValue->attribute = attribSubject; - char *reString = (pHeaders->GetFlags() & kHasRe) ? "Re: " : ""; - pHeaders->GetSubject(subject, FALSE, dbHandle); - pValue->u.string = PR_smprintf ("%s%s", reString, (const char*) subject); // hack. invoke cast operator by force - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribSender; - pValue->u.string = (char*) XP_ALLOC(64); - if (pValue->u.string) - { - pHeaders->GetAuthor(pValue->u.string, 64, dbHandle); - newResult->AddValue (pValue); - } - else - err = SearchError_OutOfMemory; - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribDate; - pValue->u.date = pHeaders->GetDate(); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribMsgStatus; - pValue->u.msgStatus = pHeaders->GetFlags(); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribPriority; - pValue->u.priority = pHeaders->GetPriority(); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribLocation; - pValue->u.string = XP_STRDUP(m_scope->m_folder->GetName()); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribMessageKey; - pValue->u.key = pHeaders->GetMessageKey(); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribSize; - pValue->u.size = pHeaders->GetByteLength(); - newResult->AddValue (pValue); - } - if (!pValue) - err = SearchError_OutOfMemory; - m_scope->m_frame->AddResultElement (newResult); - } - return err; -} - -int -msg_SearchOfflineMail::Abort () -{ - // Let go of the DB when we're done with it so we don't kill the db cache - if (m_db) - m_db->Close(); - m_db = NULL; - - // If we got aborted in the middle of parsing a mail folder, we should - // free the parser object (esp. so it releases the folderInfo's semaphore) - if (m_mailboxParser) - delete m_mailboxParser; - m_mailboxParser = NULL; - - return msg_SearchAdapter::Abort (); -} - - -//----------------------------------------------------------------------------- -//---------- Adapter class for searching online (IMAP) folders ---------------- -//----------------------------------------------------------------------------- - -const char *msg_SearchOnlineMail::m_kSearchTemplate = "SEARCH%s%s"; - - -msg_SearchOnlineMail::msg_SearchOnlineMail (MSG_ScopeTerm *scope, MSG_SearchTermArray &termList) : msg_SearchAdapter (scope, termList) -{ - m_encoding = NULL; -} - - -msg_SearchOnlineMail::~msg_SearchOnlineMail () -{ - XP_FREEIF(m_encoding); -} - - -MSG_SearchError msg_SearchOnlineMail::ValidateTerms () -{ - MSG_SearchError err = msg_SearchAdapter::ValidateTerms (); - - if (SearchError_Success == err) - { - // ### mwelch Figure out the charsets to use - // for the search terms and targets. - int16 src_csid, dst_csid; - GetSearchCSIDs(src_csid, dst_csid); - - // do IMAP specific validation - char *tmpEncoding = NULL; - err = Encode (&tmpEncoding, m_searchTerms, src_csid, dst_csid); - if (SearchError_Success == err) - { - // we are searching an online folder, right? - XP_ASSERT(m_scope->m_folder->GetType() == FOLDER_IMAPMAIL); - MSG_IMAPFolderInfoMail *imapFolder = (MSG_IMAPFolderInfoMail *) m_scope->m_folder; - m_encoding = CreateImapSearchUrl(imapFolder->GetHostName(), - imapFolder->GetOnlineName(), - imapFolder->GetOnlineHierarchySeparator(), - tmpEncoding, - TRUE); // return UIDs - delete [] tmpEncoding; - } - else - if (err == SearchError_ScopeAgreement) - XP_ASSERT(FALSE); - } - - return err; -} - - -const char *msg_SearchOnlineMail::GetEncoding () -{ - return m_encoding; -} - - -void msg_SearchOnlineMail::PreExitFunction (URL_Struct * /*url*/, int status, MWContext *context) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromContext (context); - msg_SearchAdapter *adapter = frame->GetRunningAdapter(); - - if (status == MK_INTERRUPTED) - { - adapter->Abort(); - frame->EndCylonMode(); - } - else - { - frame->m_idxRunningScope++; - if (frame->m_idxRunningScope >= frame->m_scopeList.GetSize()) - frame->EndCylonMode(); - } -} - - -// taken from offline mail, talk to phil -MSG_SearchError msg_SearchOnlineMail::AddResultElement (DBMessageHdr *pHeaders, MessageDB *db) -{ - MSG_SearchError err = SearchError_Success; - MSG_DBHandle dbHandle = (db) ? db->GetDB() : 0; - - MSG_ResultElement *newResult = new MSG_ResultElement (this); - - if (newResult) - { - XP_ASSERT (newResult); - - // This isn't very general. Just add the headers we think we'll be interested in - // to the list of attributes per result element. - MSG_SearchValue *pValue = new MSG_SearchValue; - if (pValue) - { - XPStringObj subject; - pValue->attribute = attribSubject; - char *reString = (pHeaders->GetFlags() & kHasRe) ? "Re:" : ""; - pHeaders->GetSubject(subject, FALSE, dbHandle); - pValue->u.string = PR_smprintf ("%s%s", reString, (const char*) subject); // hack. invoke cast operator by force - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribSender; - pValue->u.string = (char*) XP_ALLOC(64); - if (pValue->u.string) - { - pHeaders->GetAuthor(pValue->u.string, 64, dbHandle); - newResult->AddValue (pValue); - } - else - err = SearchError_OutOfMemory; - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribDate; - pValue->u.date = pHeaders->GetDate(); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribMsgStatus; - pValue->u.msgStatus = pHeaders->GetFlags(); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribPriority; - pValue->u.priority = pHeaders->GetPriority(); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribLocation; - pValue->u.string = XP_STRDUP(m_scope->m_folder->GetName()); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribMessageKey; - pValue->u.key = pHeaders->GetMessageKey(); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribSize; - pValue->u.size = pHeaders->GetByteLength(); - newResult->AddValue (pValue); - } - if (!pValue) - err = SearchError_OutOfMemory; - m_scope->m_frame->AddResultElement (newResult); - } - return err; -} - - -#define WHITESPACE " \015\012" // token delimiter - -SEARCH_API void MSG_AddImapSearchHit (MWContext *context, const char *resultLine) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromContext (context); - if (frame) - { // this search happened because of a search dialog - msg_SearchOnlineMail *adapter = (msg_SearchOnlineMail *) frame->GetRunningAdapter(); - if (adapter) - { - // open the relevant IMAP db - MailDB *imapDB = NULL; - XP_Bool wasCreated = FALSE; - ImapMailDB::Open(adapter->m_scope->m_folder->GetMailFolderInfo()->GetPathname(), - FALSE, // do not create if not found - &imapDB, - adapter->m_scope->m_folder->GetMaster(), - &wasCreated); - - if (imapDB) - { - // expect search results in the form of "* SEARCH <hit> <hit> ..." - char *tokenString = XP_STRDUP(resultLine); - if (tokenString) - { - char *currentPosition = strcasestr(tokenString, "SEARCH"); - if (currentPosition) - { - currentPosition += XP_STRLEN("SEARCH"); - - XP_Bool shownUpdateAlert = FALSE; - char *hitUidToken = XP_STRTOK(currentPosition, WHITESPACE); - while (hitUidToken) - { - long naturalLong; // %l is 64 bits on OSF1 - sscanf(hitUidToken, "%ld", &naturalLong); - MessageKey hitUid = (MessageKey) naturalLong; - - MailMessageHdr *hitHeader = imapDB->GetMailHdrForKey(hitUid); - if (hitHeader) - adapter->AddResultElement(hitHeader, imapDB); - else if (!shownUpdateAlert) - { - FE_Alert(context, XP_GetString(MK_MSG_SEARCH_HITS_NOT_IN_DB)); - shownUpdateAlert = TRUE; - } - - hitUidToken = XP_STRTOK(NULL, WHITESPACE); - } - } - - XP_FREE(tokenString); - } - - imapDB->Close(); - } - } - } - else - { - XP_ASSERT(FALSE); // apparently, this was left over from trying to do filtering on the server - } -} - -MSG_SearchError msg_SearchOnlineMail::Search () -{ - // we should never end up here for a purely online - // folder. We might for an offline IMAP folder. - MSG_SearchError err = SearchError_NotImplemented; - - return err; -} - - -MSG_SearchError msg_SearchOnlineMail::Encode (char **ppEncoding, MSG_SearchTermArray &searchTerms, int16 src_csid, int16 dest_csid) -{ - *ppEncoding = NULL; - char *imapTerms = NULL; - - // Get the optional CHARSET parameter, in case we need it. - char *csname = GetImapCharsetParam(dest_csid); - - MSG_SearchError err = msg_SearchAdapter::EncodeImap (&imapTerms,searchTerms, src_csid, dest_csid, FALSE); - if (SearchError_Success == err) - { - int len = XP_STRLEN(m_kSearchTemplate) + XP_STRLEN(imapTerms) + (csname ? XP_STRLEN(csname) : 0) + 1; - *ppEncoding = new char [len]; - if (*ppEncoding) - { - PR_snprintf (*ppEncoding, len, m_kSearchTemplate, - csname ? csname : "", imapTerms); - } - else - err = SearchError_OutOfMemory; - } - XP_FREEIF(csname); - return err; -} - - -MSG_SearchError msg_SearchValidityManager::InitOfflineMailTable () -{ - XP_ASSERT (NULL == m_offlineMailTable); - MSG_SearchError err = NewTable (&m_offlineMailTable); - - if (SearchError_Success == err) - { - m_offlineMailTable->SetAvailable (attribSender, opContains, 1); - m_offlineMailTable->SetEnabled (attribSender, opContains, 1); - m_offlineMailTable->SetAvailable (attribSender, opDoesntContain, 1); - m_offlineMailTable->SetEnabled (attribSender, opDoesntContain, 1); - m_offlineMailTable->SetAvailable (attribSender, opIs, 1); - m_offlineMailTable->SetEnabled (attribSender, opIs, 1); - m_offlineMailTable->SetAvailable (attribSender, opIsnt, 1); - m_offlineMailTable->SetEnabled (attribSender, opIsnt, 1); - m_offlineMailTable->SetAvailable (attribSender, opBeginsWith, 1); - m_offlineMailTable->SetEnabled (attribSender, opBeginsWith, 1); - m_offlineMailTable->SetAvailable (attribSender, opEndsWith, 1); - m_offlineMailTable->SetEnabled (attribSender, opEndsWith, 1); - - m_offlineMailTable->SetAvailable (attribTo, opContains, 1); - m_offlineMailTable->SetEnabled (attribTo, opContains, 1); - m_offlineMailTable->SetAvailable (attribTo, opDoesntContain, 1); - m_offlineMailTable->SetEnabled (attribTo, opDoesntContain, 1); - m_offlineMailTable->SetAvailable (attribTo, opIs, 1); - m_offlineMailTable->SetEnabled (attribTo, opIs, 1); - m_offlineMailTable->SetAvailable (attribTo, opIsnt, 1); - m_offlineMailTable->SetEnabled (attribTo, opIsnt, 1); - m_offlineMailTable->SetAvailable (attribTo, opBeginsWith, 1); - m_offlineMailTable->SetEnabled (attribTo, opBeginsWith, 1); - m_offlineMailTable->SetAvailable (attribTo, opEndsWith, 1); - m_offlineMailTable->SetEnabled (attribTo, opEndsWith, 1); - - m_offlineMailTable->SetAvailable (attribCC, opContains, 1); - m_offlineMailTable->SetEnabled (attribCC, opContains, 1); - m_offlineMailTable->SetAvailable (attribCC, opDoesntContain, 1); - m_offlineMailTable->SetEnabled (attribCC, opDoesntContain, 1); - m_offlineMailTable->SetAvailable (attribCC, opIs, 1); - m_offlineMailTable->SetEnabled (attribCC, opIs, 1); - m_offlineMailTable->SetAvailable (attribCC, opIsnt, 1); - m_offlineMailTable->SetEnabled (attribCC, opIsnt, 1); - m_offlineMailTable->SetAvailable (attribCC, opBeginsWith, 1); - m_offlineMailTable->SetEnabled (attribCC, opBeginsWith, 1); - m_offlineMailTable->SetAvailable (attribCC, opEndsWith, 1); - m_offlineMailTable->SetEnabled (attribCC, opEndsWith, 1); - - m_offlineMailTable->SetAvailable (attribToOrCC, opContains, 1); - m_offlineMailTable->SetEnabled (attribToOrCC, opContains, 1); - m_offlineMailTable->SetAvailable (attribToOrCC, opDoesntContain, 1); - m_offlineMailTable->SetEnabled (attribToOrCC, opDoesntContain, 1); - m_offlineMailTable->SetAvailable (attribToOrCC, opBeginsWith, 1); - m_offlineMailTable->SetEnabled (attribToOrCC, opBeginsWith, 1); - m_offlineMailTable->SetAvailable (attribToOrCC, opEndsWith, 1); - m_offlineMailTable->SetEnabled (attribToOrCC, opEndsWith, 1); - - m_offlineMailTable->SetAvailable (attribSubject, opContains, 1); - m_offlineMailTable->SetEnabled (attribSubject, opContains, 1); - m_offlineMailTable->SetAvailable (attribSubject, opDoesntContain, 1); - m_offlineMailTable->SetEnabled (attribSubject, opDoesntContain, 1); - m_offlineMailTable->SetAvailable (attribSubject, opIs, 1); - m_offlineMailTable->SetEnabled (attribSubject, opIs, 1); - m_offlineMailTable->SetAvailable (attribSubject, opIsnt, 1); - m_offlineMailTable->SetEnabled (attribSubject, opIsnt, 1); - m_offlineMailTable->SetAvailable (attribSubject, opBeginsWith, 1); - m_offlineMailTable->SetEnabled (attribSubject, opBeginsWith, 1); - m_offlineMailTable->SetAvailable (attribSubject, opEndsWith, 1); - m_offlineMailTable->SetEnabled (attribSubject, opEndsWith, 1); - - m_offlineMailTable->SetAvailable (attribBody, opContains, 1); - m_offlineMailTable->SetEnabled (attribBody, opContains, 1); - m_offlineMailTable->SetAvailable (attribBody, opDoesntContain, 1); - m_offlineMailTable->SetEnabled (attribBody, opDoesntContain, 1); - m_offlineMailTable->SetAvailable (attribBody, opIs, 1); - m_offlineMailTable->SetEnabled (attribBody, opIs, 1); - m_offlineMailTable->SetAvailable (attribBody, opIsnt, 1); - m_offlineMailTable->SetEnabled (attribBody, opIsnt, 1); - - m_offlineMailTable->SetAvailable (attribDate, opIsBefore, 1); - m_offlineMailTable->SetEnabled (attribDate, opIsBefore, 1); - m_offlineMailTable->SetAvailable (attribDate, opIsAfter, 1); - m_offlineMailTable->SetEnabled (attribDate, opIsAfter, 1); - m_offlineMailTable->SetAvailable (attribDate, opIs, 1); - m_offlineMailTable->SetEnabled (attribDate, opIs, 1); - m_offlineMailTable->SetAvailable (attribDate, opIsnt, 1); - m_offlineMailTable->SetEnabled (attribDate, opIsnt, 1); - - m_offlineMailTable->SetAvailable (attribPriority, opIsHigherThan, 1); - m_offlineMailTable->SetEnabled (attribPriority, opIsHigherThan, 1); - m_offlineMailTable->SetAvailable (attribPriority, opIsLowerThan, 1); - m_offlineMailTable->SetEnabled (attribPriority, opIsLowerThan, 1); - m_offlineMailTable->SetAvailable (attribPriority, opIs, 1); - m_offlineMailTable->SetEnabled (attribPriority, opIs, 1); - - m_offlineMailTable->SetAvailable (attribMsgStatus, opIs, 1); - m_offlineMailTable->SetEnabled (attribMsgStatus, opIs, 1); - m_offlineMailTable->SetAvailable (attribMsgStatus, opIsnt, 1); - m_offlineMailTable->SetEnabled (attribMsgStatus, opIsnt, 1); - -// m_offlineMailTable->SetValidButNotShown (attribAgeInDays, opIsHigherThan, 1); -// m_offlineMailTable->SetValidButNotShown (attribAgeInDays, opIsLowerThan, 1); - m_offlineMailTable->SetAvailable (attribAgeInDays, opIsGreaterThan, 1); - m_offlineMailTable->SetEnabled (attribAgeInDays, opIsGreaterThan, 1); - m_offlineMailTable->SetAvailable (attribAgeInDays, opIsLessThan, 1); - m_offlineMailTable->SetEnabled (attribAgeInDays, opIsLessThan, 1); - m_offlineMailTable->SetAvailable (attribAgeInDays, opIs, 1); - m_offlineMailTable->SetEnabled (attribAgeInDays, opIs, 1); - - m_offlineMailTable->SetAvailable (attribOtherHeader, opContains, 1); // added for arbitrary headers - m_offlineMailTable->SetEnabled (attribOtherHeader, opContains, 1); - m_offlineMailTable->SetAvailable (attribOtherHeader, opDoesntContain, 1); - m_offlineMailTable->SetEnabled (attribOtherHeader, opDoesntContain, 1); - m_offlineMailTable->SetAvailable (attribOtherHeader, opIs, 1); - m_offlineMailTable->SetEnabled (attribOtherHeader, opIs, 1); - m_offlineMailTable->SetAvailable (attribOtherHeader, opIsnt, 1); - m_offlineMailTable->SetEnabled (attribOtherHeader, opIsnt, 1); - - } - - return err; -} - - -MSG_SearchError msg_SearchValidityManager::InitOnlineMailTable () -{ - XP_ASSERT (NULL == m_onlineMailTable); - MSG_SearchError err = NewTable (&m_onlineMailTable); - - if (SearchError_Success == err) - { - m_onlineMailTable->SetAvailable (attribSender, opContains, 1); - m_onlineMailTable->SetEnabled (attribSender, opContains, 1); - m_onlineMailTable->SetAvailable (attribSender, opDoesntContain, 1); - m_onlineMailTable->SetEnabled (attribSender, opDoesntContain, 1); - - m_onlineMailTable->SetAvailable (attribTo, opContains, 1); - m_onlineMailTable->SetEnabled (attribTo, opContains, 1); - m_onlineMailTable->SetAvailable (attribTo, opDoesntContain, 1); - m_onlineMailTable->SetEnabled (attribTo, opDoesntContain, 1); - - m_onlineMailTable->SetAvailable (attribCC, opContains, 1); - m_onlineMailTable->SetEnabled (attribCC, opContains, 1); - m_onlineMailTable->SetAvailable (attribCC, opDoesntContain, 1); - m_onlineMailTable->SetEnabled (attribCC, opDoesntContain, 1); - - m_onlineMailTable->SetAvailable (attribToOrCC, opContains, 1); - m_onlineMailTable->SetEnabled (attribToOrCC, opContains, 1); - m_onlineMailTable->SetAvailable (attribToOrCC, opDoesntContain, 1); - m_onlineMailTable->SetEnabled (attribToOrCC, opDoesntContain, 1); - - m_onlineMailTable->SetAvailable (attribSubject, opContains, 1); - m_onlineMailTable->SetEnabled (attribSubject, opContains, 1); - m_onlineMailTable->SetAvailable (attribSubject, opDoesntContain, 1); - m_onlineMailTable->SetEnabled (attribSubject, opDoesntContain, 1); - - m_onlineMailTable->SetAvailable (attribBody, opContains, 1); - m_onlineMailTable->SetEnabled (attribBody, opContains, 1); - m_onlineMailTable->SetAvailable (attribBody, opDoesntContain, 1); - m_onlineMailTable->SetEnabled (attribBody, opDoesntContain, 1); - - m_onlineMailTable->SetAvailable (attribDate, opIsBefore, 1); - m_onlineMailTable->SetEnabled (attribDate, opIsBefore, 1); - m_onlineMailTable->SetAvailable (attribDate, opIsAfter, 1); - m_onlineMailTable->SetEnabled (attribDate, opIsAfter, 1); - m_onlineMailTable->SetAvailable (attribDate, opIs, 1); - m_onlineMailTable->SetEnabled (attribDate, opIs, 1); - m_onlineMailTable->SetAvailable (attribDate, opIsnt, 1); - m_onlineMailTable->SetEnabled (attribDate, opIsnt, 1); - - m_onlineMailTable->SetAvailable (attribMsgStatus, opIs, 1); - m_onlineMailTable->SetEnabled (attribMsgStatus, opIs, 1); - m_onlineMailTable->SetAvailable (attribMsgStatus, opIsnt, 1); - m_onlineMailTable->SetEnabled (attribMsgStatus, opIsnt, 1); - - m_onlineMailTable->SetAvailable (attribAgeInDays, opIsGreaterThan, 1); - m_onlineMailTable->SetEnabled (attribAgeInDays, opIsGreaterThan, 1); - m_onlineMailTable->SetAvailable (attribAgeInDays, opIsLessThan, 1); - m_onlineMailTable->SetEnabled (attribAgeInDays, opIsLessThan, 1); - m_onlineMailTable->SetEnabled (attribAgeInDays, opIs, 1); - m_onlineMailTable->SetAvailable (attribAgeInDays, opIs, 1); - - m_onlineMailTable->SetAvailable (attribOtherHeader, opContains, 1); // added for arbitrary headers - m_onlineMailTable->SetEnabled (attribOtherHeader, opContains, 1); - m_onlineMailTable->SetAvailable (attribOtherHeader, opDoesntContain, 1); - m_onlineMailTable->SetEnabled (attribOtherHeader, opDoesntContain, 1); - - } - - return err; -} - - -MSG_SearchError msg_SearchValidityManager::InitOnlineMailFilterTable () -{ - // IMAP filtering happens on the client, fundamentally using the same - // capabilities as POP filtering. However, since we don't yet have the - // IMAP message body, we can't filter on body attributes. So this table - // is supposed to be the same as offline mail, except that the body - // attribute is omitted - - XP_ASSERT (NULL == m_onlineMailFilterTable); - MSG_SearchError err = NewTable (&m_onlineMailFilterTable); - - if (SearchError_Success == err) - { - m_onlineMailFilterTable->SetAvailable (attribSender, opContains, 1); - m_onlineMailFilterTable->SetEnabled (attribSender, opContains, 1); - m_onlineMailFilterTable->SetAvailable (attribSender, opDoesntContain, 1); - m_onlineMailFilterTable->SetEnabled (attribSender, opDoesntContain, 1); - m_onlineMailFilterTable->SetAvailable (attribSender, opIs, 1); - m_onlineMailFilterTable->SetEnabled (attribSender, opIs, 1); - m_onlineMailFilterTable->SetAvailable (attribSender, opIsnt, 1); - m_onlineMailFilterTable->SetEnabled (attribSender, opIsnt, 1); - m_onlineMailFilterTable->SetAvailable (attribSender, opBeginsWith, 1); - m_onlineMailFilterTable->SetEnabled (attribSender, opBeginsWith, 1); - m_onlineMailFilterTable->SetAvailable (attribSender, opEndsWith, 1); - m_onlineMailFilterTable->SetEnabled (attribSender, opEndsWith, 1); - - m_onlineMailFilterTable->SetAvailable (attribTo, opContains, 1); - m_onlineMailFilterTable->SetEnabled (attribTo, opContains, 1); - m_onlineMailFilterTable->SetAvailable (attribTo, opDoesntContain, 1); - m_onlineMailFilterTable->SetEnabled (attribTo, opDoesntContain, 1); - m_onlineMailFilterTable->SetAvailable (attribTo, opIs, 1); - m_onlineMailFilterTable->SetEnabled (attribTo, opIs, 1); - m_onlineMailFilterTable->SetAvailable (attribTo, opIsnt, 1); - m_onlineMailFilterTable->SetEnabled (attribTo, opIsnt, 1); - m_onlineMailFilterTable->SetAvailable (attribTo, opBeginsWith, 1); - m_onlineMailFilterTable->SetEnabled (attribTo, opBeginsWith, 1); - m_onlineMailFilterTable->SetAvailable (attribTo, opEndsWith, 1); - m_onlineMailFilterTable->SetEnabled (attribTo, opEndsWith, 1); - - m_onlineMailFilterTable->SetAvailable (attribCC, opContains, 1); - m_onlineMailFilterTable->SetEnabled (attribCC, opContains, 1); - m_onlineMailFilterTable->SetAvailable (attribCC, opDoesntContain, 1); - m_onlineMailFilterTable->SetEnabled (attribCC, opDoesntContain, 1); - m_onlineMailFilterTable->SetAvailable (attribCC, opIs, 1); - m_onlineMailFilterTable->SetEnabled (attribCC, opIs, 1); - m_onlineMailFilterTable->SetAvailable (attribCC, opIsnt, 1); - m_onlineMailFilterTable->SetEnabled (attribCC, opIsnt, 1); - m_onlineMailFilterTable->SetAvailable (attribCC, opBeginsWith, 1); - m_onlineMailFilterTable->SetEnabled (attribCC, opBeginsWith, 1); - m_onlineMailFilterTable->SetAvailable (attribCC, opEndsWith, 1); - m_onlineMailFilterTable->SetEnabled (attribCC, opEndsWith, 1); - - m_onlineMailFilterTable->SetAvailable (attribToOrCC, opContains, 1); - m_onlineMailFilterTable->SetEnabled (attribToOrCC, opContains, 1); - m_onlineMailFilterTable->SetAvailable (attribToOrCC, opDoesntContain, 1); - m_onlineMailFilterTable->SetEnabled (attribToOrCC, opDoesntContain, 1); - m_onlineMailFilterTable->SetAvailable (attribToOrCC, opBeginsWith, 1); - m_onlineMailFilterTable->SetEnabled (attribToOrCC, opBeginsWith, 1); - m_onlineMailFilterTable->SetAvailable (attribToOrCC, opEndsWith, 1); - m_onlineMailFilterTable->SetEnabled (attribToOrCC, opEndsWith, 1); - - m_onlineMailFilterTable->SetAvailable (attribSubject, opContains, 1); - m_onlineMailFilterTable->SetEnabled (attribSubject, opContains, 1); - m_onlineMailFilterTable->SetAvailable (attribSubject, opDoesntContain, 1); - m_onlineMailFilterTable->SetEnabled (attribSubject, opDoesntContain, 1); - m_onlineMailFilterTable->SetAvailable (attribSubject, opIs, 1); - m_onlineMailFilterTable->SetEnabled (attribSubject, opIs, 1); - m_onlineMailFilterTable->SetAvailable (attribSubject, opIsnt, 1); - m_onlineMailFilterTable->SetEnabled (attribSubject, opIsnt, 1); - m_onlineMailFilterTable->SetAvailable (attribSubject, opBeginsWith, 1); - m_onlineMailFilterTable->SetEnabled (attribSubject, opBeginsWith, 1); - m_onlineMailFilterTable->SetAvailable (attribSubject, opEndsWith, 1); - m_onlineMailFilterTable->SetEnabled (attribSubject, opEndsWith, 1); - - m_onlineMailFilterTable->SetAvailable (attribDate, opIsBefore, 1); - m_onlineMailFilterTable->SetEnabled (attribDate, opIsBefore, 1); - m_onlineMailFilterTable->SetAvailable (attribDate, opIsAfter, 1); - m_onlineMailFilterTable->SetEnabled (attribDate, opIsAfter, 1); - m_onlineMailFilterTable->SetAvailable (attribDate, opIs, 1); - m_onlineMailFilterTable->SetEnabled (attribDate, opIs, 1); - m_onlineMailFilterTable->SetAvailable (attribDate, opIsnt, 1); - m_onlineMailFilterTable->SetEnabled (attribDate, opIsnt, 1); - - m_onlineMailFilterTable->SetAvailable (attribPriority, opIsHigherThan, 1); - m_onlineMailFilterTable->SetEnabled (attribPriority, opIsHigherThan, 1); - m_onlineMailFilterTable->SetAvailable (attribPriority, opIsLowerThan, 1); - m_onlineMailFilterTable->SetEnabled (attribPriority, opIsLowerThan, 1); - m_onlineMailFilterTable->SetAvailable (attribPriority, opIs, 1); - m_onlineMailFilterTable->SetEnabled (attribPriority, opIs, 1); - - m_onlineMailFilterTable->SetAvailable (attribMsgStatus, opIs, 1); - m_onlineMailFilterTable->SetEnabled (attribMsgStatus, opIs, 1); - m_onlineMailFilterTable->SetAvailable (attribMsgStatus, opIsnt, 1); - m_onlineMailFilterTable->SetEnabled (attribMsgStatus, opIsnt, 1); - - m_onlineMailFilterTable->SetValidButNotShown (attribAgeInDays, opIsGreaterThan, 1); - m_onlineMailFilterTable->SetValidButNotShown (attribAgeInDays, opIsLessThan, 1); - m_onlineMailFilterTable->SetValidButNotShown (attribAgeInDays, opIs, 1); - - m_onlineMailFilterTable->SetAvailable (attribOtherHeader, opContains, 1); // added for arbitrary headers - m_onlineMailFilterTable->SetEnabled (attribOtherHeader, opContains, 1); - m_onlineMailFilterTable->SetAvailable (attribOtherHeader, opDoesntContain, 1); - m_onlineMailFilterTable->SetEnabled (attribOtherHeader, opDoesntContain, 1); - m_onlineMailFilterTable->SetAvailable (attribOtherHeader, opIs, 1); - m_onlineMailFilterTable->SetEnabled (attribOtherHeader, opIs, 1); - m_onlineMailFilterTable->SetAvailable (attribOtherHeader, opIsnt, 1); - m_onlineMailFilterTable->SetEnabled (attribOtherHeader, opIsnt, 1); - - } - - return err; -} - diff --git a/mozilla/lib/libmsg/msgnsrch.cpp b/mozilla/lib/libmsg/msgnsrch.cpp deleted file mode 100644 index 73f1059b577..00000000000 --- a/mozilla/lib/libmsg/msgnsrch.cpp +++ /dev/null @@ -1,1009 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// Implementation of search for newsgroups - -#include "msg.h" -#include "pmsgsrch.h" -#include "msgfinfo.h" -#include "newsdb.h" -#include "newshdr.h" -#include "newshost.h" -#include "hosttbl.h" -#include "libi18n.h" - -//----------------------------------------------------------------------------- -//----------- Adapter class for searching XPAT-capable news servers ----------- -//----------------------------------------------------------------------------- - - -const char *msg_SearchNews::m_kNntpFrom = "FROM "; -const char *msg_SearchNews::m_kNntpSubject = "SUBJECT "; -const char *msg_SearchNews::m_kTermSeparator = "/"; - - -msg_SearchNews::msg_SearchNews (MSG_ScopeTerm *scope, MSG_SearchTermArray &termList) : msg_SearchAdapter (scope, termList) -{ - m_encoding = NULL; -} - - -msg_SearchNews::~msg_SearchNews () -{ - delete [] m_encoding; -} - - -MSG_SearchError msg_SearchNews::ValidateTerms () -{ - MSG_SearchError err = msg_SearchAdapter::ValidateTerms (); - if (SearchError_Success == err) - { - err = Encode (&m_encoding); - if (SearchError_Success == err) - { - // hack - URL_Struct *url = NET_CreateURLStruct (m_encoding, NET_DONT_RELOAD); - if (url) - { - url->pre_exit_fn = PreExitFunction; - m_scope->m_frame->m_urlStruct = url; - } - else - err = SearchError_OutOfMemory; - } - } - - return err; -} - - -MSG_SearchError msg_SearchNews::Search () -{ - // the state machine runs in the news: handler - MSG_SearchError err = SearchError_NotImplemented; - return err; -} - - -char *msg_SearchNews::EncodeTerm (MSG_SearchTerm *term) -{ - // Develop an XPAT-style encoding for the search term - - XP_ASSERT(term); - if (!term) - return NULL; - - // Find a string to represent the attribute - const char *attribEncoding = NULL; - switch (term->m_attribute) - { - case attribSender: - attribEncoding = m_kNntpFrom; - break; - case attribSubject: - attribEncoding = m_kNntpSubject; - break; - default: - XP_ASSERT(FALSE); // malformed search term? - return NULL; - } - - // Build a string to represent the string pattern - XP_Bool leadingStar = FALSE; - XP_Bool trailingStar = FALSE; - int overhead = 1; // null terminator - switch (term->m_operator) - { - case opContains: - leadingStar = TRUE; - trailingStar = TRUE; - overhead += 2; - break; - case opIs: - break; - case opBeginsWith: - trailingStar = TRUE; - overhead++; - break; - case opEndsWith: - leadingStar = TRUE; - overhead++; - break; - default: - XP_ASSERT(FALSE); // malformed search term? - return NULL; - } - - int16 wincsid = INTL_DefaultWinCharSetID(0); // *** FIX ME: Should not get default csid, should get csid from FE or folder - - // Do INTL_FormatNNTPXPATInRFC1522Format trick for non-ASCII string - unsigned char *intlNonRFC1522Value = - INTL_FormatNNTPXPATInNonRFC1522Format (wincsid, (unsigned char*)term->m_value.u.string); - if (!intlNonRFC1522Value) - return NULL; - - // TO DO: Do INTL_FormatNNTPXPATInRFC1522Format trick for non-ASCII string - // Unfortunately, we currently do not handle xxx or xxx search in XPAT - // Need to add the INTL_FormatNNTPXPATInRFC1522Format call after we can do that - // so we should search a string in either RFC1522 format and non-RFC1522 format - - char *escapedValue = MSG_EscapeSearchUrl ((char*)intlNonRFC1522Value); - XP_FREE(intlNonRFC1522Value); - - if (!escapedValue) - return NULL; - - // We also need to apply NET_Escape to it since we have to pass 8-bits data - // And sometimes % in the 7-bit doulbe byte JIS - // - char * urlEncoded = NET_Escape((char*)escapedValue, URL_PATH); - XP_FREE(escapedValue); - - if (! urlEncoded) - return NULL; - - char *pattern = pattern = new char [XP_STRLEN(urlEncoded) + overhead]; - if (!pattern) - return NULL; - else - pattern[0] = '\0'; - - if (leadingStar) - XP_STRCAT (pattern, "*"); - XP_STRCAT (pattern, urlEncoded); - if (trailingStar) - XP_STRCAT (pattern, "*"); - - // Combine the XPAT command syntax with the attribute and the pattern to - // form the term encoding - char *xpatTemplate = "XPAT %s 1- %s"; - int termLength = XP_STRLEN(xpatTemplate) + XP_STRLEN(attribEncoding) + XP_STRLEN(pattern) + 1; - char *termEncoding = new char [termLength]; - if (termEncoding) - PR_snprintf (termEncoding, termLength, xpatTemplate, attribEncoding, pattern); - - XP_FREE(urlEncoded); - delete [] pattern; - - return termEncoding; -} - - -char *msg_SearchNews::BuildUrlPrefix () -{ - char *result = NULL; - switch (m_scope->m_folder->GetType()) - { - case FOLDER_CONTAINERONLY: - { - // Would be better to do this in the folder info, but we need to get - // back to the NewsHost to find out if it's secure. - msg_HostTable *table = m_scope->m_frame->m_pane->GetMaster()->GetHostTable(); - for (int i = 0; i < table->getNumHosts() && !result; i++) - { - MSG_NewsHost *host = table->getHost(i); - if (m_scope->m_folder == host->GetHostInfo()) - result = PR_smprintf("%s/unused", host->GetURLBase()); - } - break; - } - case FOLDER_NEWSGROUP: - case FOLDER_CATEGORYCONTAINER: - result = m_scope->m_folder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - break; - default: - XP_ASSERT(FALSE); - } - return result; -} - - -MSG_SearchError msg_SearchNews::Encode (char **outEncoding) -{ - XP_ASSERT(outEncoding); - if (!outEncoding) - return SearchError_NullPointer; - - *outEncoding = NULL; - MSG_SearchError err = SearchError_Success; - - char **intermediateEncodings = new char * [m_searchTerms.GetSize()]; - if (intermediateEncodings) - { - char *urlPrefix = BuildUrlPrefix(); - if (urlPrefix) - { - // Build an XPAT command for each term - int encodingLength = XP_STRLEN(urlPrefix); - int i; - for (i = 0; i < m_searchTerms.GetSize(); i++) - { - MSG_SearchTerm * term = m_searchTerms.GetAt(i); - // set boolean OR term if any of the search terms are an OR...this only works if we are using - // homogeneous boolean operators. - m_ORSearch = !(term->IsBooleanOpAND()); - - intermediateEncodings[i] = EncodeTerm (m_searchTerms.GetAt(i)); - if (intermediateEncodings[i]) - encodingLength += XP_STRLEN(intermediateEncodings[i]) + XP_STRLEN(m_kTermSeparator); - } - encodingLength += XP_STRLEN("?search"); - // Combine all the term encodings into one big encoding - char *encoding = new char [encodingLength + 1]; - if (encoding) - { - XP_STRCPY (encoding, urlPrefix); - XP_STRCAT (encoding, "?search"); - for (i = 0; i < m_searchTerms.GetSize(); i++) - { - if (intermediateEncodings[i]) - { - XP_STRCAT (encoding, m_kTermSeparator); - XP_STRCAT (encoding, intermediateEncodings[i]); - delete [] intermediateEncodings[i]; - } - } - *outEncoding = encoding; - } - else - err = SearchError_OutOfMemory; - XP_FREE(urlPrefix); - } - else - err = SearchError_OutOfMemory; - delete [] intermediateEncodings; - } - else - err = SearchError_OutOfMemory; - - return err; -} - - -// Callback from libnet -SEARCH_API void MSG_AddNewsXpatHit (MWContext *context, uint32 artNum) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromContext(context); - msg_SearchNews *adapter = (msg_SearchNews*) frame->GetRunningAdapter(); - adapter->AddHit (artNum); -} - - -void msg_SearchNews::PreExitFunction (URL_Struct * /*url*/, int status, MWContext *context) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromContext (context); - msg_SearchNews *adapter = (msg_SearchNews*) frame->GetRunningAdapter(); - adapter->CollateHits(); - adapter->ReportHits(); - - if (status == MK_INTERRUPTED) - { - adapter->Abort(); - frame->EndCylonMode(); - } - else - { - frame->m_idxRunningScope++; - if (frame->m_idxRunningScope >= frame->m_scopeList.GetSize()) - frame->EndCylonMode(); - } -} - -XP_Bool msg_SearchNews::DuplicateHit(uint32 artNum) -// ASSUMES m_hits is sorted!! -{ - int index; - for (index = 0; index < m_hits.GetSize(); index++) - if (artNum == m_hits.GetAt(index)) - return TRUE; - return FALSE; -} - - -void msg_SearchNews::CollateHits () -{ - // Since the XPAT commands are processed one at a time, the result set for the - // entire query is the intersection of results for each XPAT command if an AND Search - // otherwise we want the union of all the search hits (minus the duplicates of course) - - if (m_candidateHits.GetSize() == 0) - return; - - // Sort the article numbers first, so it's easy to tell how many hits - // on a given article we got - m_candidateHits.QuickSort(CompareArticleNumbers); - int size = m_candidateHits.GetSize(); - int index = 0; - uint32 candidate = m_candidateHits.GetAt(index); - - if (m_ORSearch) - { - for (index = 0; index < size; index++) - { - candidate = m_candidateHits.GetAt(index); - if (!DuplicateHit(candidate)) // if not a dup, add it to the hit list - m_hits.Add (candidate); - } - return; - } - - - // otherwise we have a traditional and search which must be collated - - // In order to get promoted into the hits list, a candidate article number - // must appear in the results of each XPAT command. So if we fire 3 XPAT - // commands (one per search term), the article number must appear 3 times. - // If it appears less than 3 times, it matched some search terms, but not all - - int termCount = m_searchTerms.GetSize(); - int candidateCount = 0; - while (index < size) - { - if (candidate == m_candidateHits.GetAt(index)) - candidateCount++; - else - candidateCount = 1; - if (candidateCount == termCount) - m_hits.Add (m_candidateHits.GetAt(index)); - candidate = m_candidateHits.GetAt(index++); - } -} - - -void msg_SearchNews::ReportHits () -{ - XP_ASSERT (m_scope->m_folder->IsNews()); - if (!m_scope->m_folder->IsNews()) - return; - - MSG_FolderInfoNews *folder = (MSG_FolderInfoNews*) m_scope->m_folder; - - // Construct a URL for the newsgroup, since thats what newDB::open wants - char *url = folder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - if (!url) - return; - - NewsGroupDB *newsDB = NULL; - MsgERR status = NewsGroupDB::Open(url, m_scope->m_frame->m_pane->GetMaster(), &newsDB); - if (status == eSUCCESS) - { - XP_ASSERT(newsDB); - if (!newsDB) - return; - - XP_FREEIF(url); - - for (uint32 i = 0; i < m_hits.GetSize(); i++) - { - NewsMessageHdr *header = newsDB->GetNewsHdrForKey(m_hits.GetAt(i)); - if (header) - { - ReportHit(header); - delete header; - } - } - newsDB->Close(); - } -} - - -void msg_SearchNews::ReportHit (MessageHdrStruct *pHeaders, const char *location) -{ - // this is taken from msg_SearchOfflineMail until I decide whether the - // right thing is to get them from the db or from NNTP - - MSG_SearchError err = SearchError_Success; - MSG_ResultElement *newResult = new MSG_ResultElement (this); - - if (newResult) - { - XP_ASSERT (newResult); - - // This isn't very general. Just add the headers we think we'll be interested in - // to the list of attributes per result element. - MSG_SearchValue *pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribSubject; - char *reString = (pHeaders->m_flags & MSG_FLAG_HAS_RE) ? "Re:" : ""; - pValue->u.string = PR_smprintf ("%s%s", reString, pHeaders->m_subject); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribSender; - pValue->u.string = (char*) XP_ALLOC(64); - if (pValue->u.string) - { - XP_STRNCPY_SAFE(pValue->u.string, pHeaders->m_author, 64); - newResult->AddValue (pValue); - } - else - err = SearchError_OutOfMemory; - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribDate; - pValue->u.date = pHeaders->m_date; - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribMsgStatus; - pValue->u.msgStatus = pHeaders->m_flags; - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribPriority; - pValue->u.priority = pHeaders->m_priority; - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribLocation; - pValue->u.string = XP_STRDUP(location); - newResult->AddValue (pValue); - } - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribMessageKey; - pValue->u.key = pHeaders->m_messageKey; - newResult->AddValue (pValue); - } - if (pHeaders->m_messageId) - { - pValue = new MSG_SearchValue; - if (pValue) - { - pValue->attribute = attribMessageId; - pValue->u.string = XP_STRDUP(pHeaders->m_messageId); - newResult->AddValue (pValue); - } - } - if (!pValue) - err = SearchError_OutOfMemory; - m_scope->m_frame->AddResultElement (newResult); - } -} - - -void msg_SearchNews::ReportHit (DBMessageHdr *pHeaders) -{ - MessageHdrStruct hdr; - pHeaders->CopyToMessageHdr(&hdr); - ReportHit (&hdr, m_scope->m_folder->GetName()); -} - - -int msg_SearchNews::CompareArticleNumbers (const void *v1, const void *v2) -{ - // QuickSort callback to compare article numbers - - uint32 i1 = *(uint32*) v1; - uint32 i2 = *(uint32*) v2; - return i1 - i2; -} - - -//----------------------------------------------------------------------------- -//-------- Adapter class for searching SEARCH-capable news servers ------------ -//----------------------------------------------------------------------------- - - -const char *msg_SearchNewsEx::m_kSearchTemplate = "?search/SEARCH HEADER NEWSGROUPS %s %s"; -const char *msg_SearchNewsEx::m_kProfileTemplate = "%s/dummy?profile/PROFILE NEW %s HEADER NEWSGROUPS %s %s"; - -msg_SearchNewsEx::msg_SearchNewsEx (MSG_ScopeTerm *scope, MSG_SearchTermArray &termList) : msg_SearchNews (scope, termList) -{ -} - - -msg_SearchNewsEx::~msg_SearchNewsEx () -{ -} - - -MSG_SearchError msg_SearchNewsEx::ValidateTerms () -{ - MSG_SearchError err = msg_SearchAdapter::ValidateTerms (); - if (SearchError_Success == err) - { - err = Encode (&m_encoding); - if (SearchError_Success == err) - { - // hack. - URL_Struct *url = NET_CreateURLStruct (m_encoding, NET_DONT_RELOAD); - if (url) - { - url->pre_exit_fn = PreExitFunctionEx; - m_scope->m_frame->m_urlStruct = url; - } - else - err = SearchError_OutOfMemory; - } - } - return err; -} - - -MSG_SearchError msg_SearchNewsEx::Search () -{ - // State machine runs in mknews.c? - return SearchError_NotImplemented; -} - -MSG_SearchError msg_SearchNewsEx::Encode (char **ppOutEncoding) -{ - *ppOutEncoding = NULL; - char *imapTerms = NULL; - - // Figure out the charsets to use for the search terms and targets. - int16 src_csid, dst_csid; - GetSearchCSIDs(src_csid, dst_csid); - - MSG_SearchError err = EncodeImap (&imapTerms, m_searchTerms, src_csid, dst_csid, TRUE ); - if (SearchError_Success == err) - { - char *scopeString = NULL; - err = m_scope->m_frame->EncodeRFC977bisScopes (&scopeString); - if (SearchError_Success == err) - { - // Wrap the pattern with the RFC-977bis specified SEARCH syntax - char *RFC977bisEncoding = PR_smprintf (m_kSearchTemplate, scopeString, imapTerms); - if (RFC977bisEncoding) - { - // Build the host/group specification - char *urlPrefix = BuildUrlPrefix (); - if (urlPrefix) - { - // Build the whole URL e.g. new://host/local.index/search?SEARCH FROM "John Smith" - *ppOutEncoding = new char [XP_STRLEN(urlPrefix) + XP_STRLEN(RFC977bisEncoding) + 1]; - if (*ppOutEncoding) - { - XP_STRCPY (*ppOutEncoding, urlPrefix); - XP_STRCAT (*ppOutEncoding, RFC977bisEncoding); - } - else - err = SearchError_OutOfMemory; - XP_FREE(urlPrefix); - } - else - err = SearchError_OutOfMemory; - XP_FREE(RFC977bisEncoding); - } - else - err = SearchError_OutOfMemory; - XP_FREE(scopeString); - } - } - - return err; -} - - -MSG_SearchError msg_SearchNewsEx::SaveProfile (const char *profileName) -{ - MSG_SearchError err = SearchError_Success; - MSG_FolderInfo *folder = m_scope->m_folder; - - // Figure out which news host to fire the URL at. Maybe we should have a virtual function in MSG_FolderInfo for this? - MSG_NewsHost *host = NULL; - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - if (newsFolder) - host = newsFolder->GetHost(); - else if (FOLDER_CONTAINERONLY == folder->GetType()) - host = ((MSG_NewsFolderInfoContainer*) folder)->GetHost(); - - XP_ASSERT(NULL != host && NULL != profileName); - if (NULL != host && NULL != profileName) - { - char *scopeString = NULL; - m_scope->m_frame->EncodeRFC977bisScopes (&scopeString); - - // Figure out the charsets to use for the search terms and targets. - int16 src_csid, dst_csid; - GetSearchCSIDs(src_csid, dst_csid); - - char *termsString = NULL; - EncodeImap (&termsString, m_searchTerms, - src_csid, dst_csid, - TRUE ); - - char *legalProfileName = XP_STRDUP(profileName); - - if (termsString && scopeString && legalProfileName) - { - msg_MakeLegalNewsgroupComponent (legalProfileName); - char *url = PR_smprintf (m_kProfileTemplate, host->GetURLBase(), - legalProfileName, scopeString, - termsString); - if (url) - { - URL_Struct *urlStruct = NET_CreateURLStruct (url, NET_DONT_RELOAD); - if (urlStruct) - { - // Set the internal_url flag so just in case someone else happens to have - // a search-libmsg URL, it won't fire my code, and surely crash. - urlStruct->internal_url = TRUE; - - // Set the pre_exit_fn to we can turn off cylon mode when we're done - urlStruct->pre_exit_fn = PreExitFunctionEx; - - int getUrlErr = m_scope->m_frame->m_pane->GetURL (urlStruct, FALSE); - if (getUrlErr != 0) - err = SearchError_ScopeAgreement; // ### not really. impedance mismatch - else - m_scope->m_frame->BeginCylonMode(); - } - else - err = SearchError_OutOfMemory; - XP_FREE(url); - } - else - err = SearchError_OutOfMemory; - } - - XP_FREEIF(scopeString); - delete [] termsString; - XP_FREEIF(legalProfileName); - } - return err; -} - - -// Callback from libnet -SEARCH_API void MSG_AddNewsSearchHit (MWContext *context, const char *resultLine) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromContext (context); - msg_SearchNewsEx *adapter = (msg_SearchNewsEx *) frame->GetRunningAdapter(); - if (adapter) - { - MessageHdrStruct hdr; - XP_BZERO(&hdr, sizeof(hdr)); - - // Here we make the SEARCH result compatible with xover conventions. In SEARCH, the - // group name and a ':' precede the article number, so try to skip over this stuff - // before asking DBMessageHdr to parse it - char *xoverCompatLine = XP_STRCHR(resultLine, ':'); - if (xoverCompatLine) - xoverCompatLine++; - else - xoverCompatLine = (char*) resultLine; //### casting away const - - if (DBMessageHdr::ParseLine ((char*) xoverCompatLine, &hdr)) //### casting away const - { - if (hdr.m_flags & kHasRe) // hack around which kind of flag we actually got - { - hdr.m_flags &= !kHasRe; - hdr.m_flags |= MSG_FLAG_HAS_RE; - } - adapter->ReportHit (&hdr, XP_STRTOK((char*) resultLine, ":")); //### casting away const - } - } -} - - -SEARCH_API MSG_SearchError MSG_SaveProfileStatus (MSG_Pane *searchPane, XP_Bool *cmdEnabled) -{ - MSG_SearchError err = SearchError_Success; - - XP_ASSERT(cmdEnabled); - if (cmdEnabled) - { - *cmdEnabled = FALSE; - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (searchPane); - if (frame) - *cmdEnabled = frame->GetSaveProfileStatus(); - } - else - err = SearchError_NullPointer; - - return err; -} - - -SEARCH_API MSG_SearchError MSG_SaveProfile (MSG_Pane *searchPane, const char * profileName) -{ - MSG_SearchError err = SearchError_Success; - -#ifdef _DEBUG - XP_Bool enabled = FALSE; - MSG_SaveProfileStatus (searchPane, &enabled); - XP_ASSERT(enabled); - if (!enabled) - return SearchError_ScopeAgreement; -#endif - - if (profileName) - { - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (searchPane); - XP_ASSERT(frame); - if (frame) - { - msg_SearchNewsEx *adapter = frame->GetProfileAdapter(); - XP_ASSERT(adapter); - if (adapter) - err = adapter->SaveProfile (profileName); - } - } - else - err = SearchError_NullPointer; - - return err; -} - - -SEARCH_API int MSG_AddProfileGroup (MSG_Pane *pane, MSG_NewsHost* host, - const char *groupName) -{ - MSG_FolderInfoNews *group = - pane->GetMaster()->AddProfileNewsgroup(host, groupName); - return group ? 0 : -1; -} - - -void msg_SearchNewsEx::PreExitFunctionEx (URL_Struct * /*url*/, int /*status*/, MWContext *context) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromContext (context); - frame->EndCylonMode(); -} - - -//----------------------------------------------------------------------------- -//------------ Adapter class for searching offline news groups ---------------- -//----------------------------------------------------------------------------- - - -msg_SearchOfflineNews::msg_SearchOfflineNews (MSG_ScopeTerm *scopes, MSG_SearchTermArray &terms) : msg_SearchOfflineMail (scopes, terms) -{ -} - - -msg_SearchOfflineNews::~msg_SearchOfflineNews () -{ -} - - -MSG_SearchError msg_SearchOfflineNews::OpenSummaryFile () -{ - MSG_SearchError err = SearchError_DBOpenFailed; - if (m_scope->m_folder->IsNews()) - { - MSG_FolderInfoNews *newsFolder = (MSG_FolderInfoNews*) m_scope->m_folder; - char *url = newsFolder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - if (url) - { - NewsGroupDB *newsDb = NULL; - MsgERR msgErr = NewsGroupDB::Open (url, m_scope->m_frame->m_pane->GetMaster(), &newsDb); - if (eSUCCESS == msgErr) - { - m_db = newsDb; - err = SearchError_Success; - } - XP_FREE(url); - } - else - err = SearchError_OutOfMemory; - } - return err; -} - -MSG_SearchError msg_SearchOfflineNews::ValidateTerms () -{ - MSG_SearchError err = msg_SearchAdapter::ValidateTerms (); - if (SearchError_Success == err) - { - // Make sure the terms themselves are valid - msg_SearchValidityTable *table = NULL; - err = gValidityMgr.GetTable (msg_SearchValidityManager::localNews, &table); - if (SearchError_Success == err) - { - XP_ASSERT (table); - err = table->ValidateTerms (m_searchTerms); - } - } - return err; -} - - -//----------------------------------------------------------------------------- -MSG_SearchError msg_SearchValidityManager::InitLocalNewsTable() -{ - XP_ASSERT (NULL == m_localNewsTable); - MSG_SearchError err = NewTable (&m_localNewsTable); - - if (SearchError_Success == err) - { - m_localNewsTable->SetAvailable (attribSender, opContains, 1); - m_localNewsTable->SetEnabled (attribSender, opContains, 1); - m_localNewsTable->SetAvailable (attribSender, opIs, 1); - m_localNewsTable->SetEnabled (attribSender, opIs, 1); - m_localNewsTable->SetAvailable (attribSender, opBeginsWith, 1); - m_localNewsTable->SetEnabled (attribSender, opBeginsWith, 1); - m_localNewsTable->SetAvailable (attribSender, opEndsWith, 1); - m_localNewsTable->SetEnabled (attribSender, opEndsWith, 1); - - m_localNewsTable->SetAvailable (attribSubject, opContains, 1); - m_localNewsTable->SetEnabled (attribSubject, opContains, 1); - m_localNewsTable->SetAvailable (attribSubject, opIs, 1); - m_localNewsTable->SetEnabled (attribSubject, opIs, 1); - m_localNewsTable->SetAvailable (attribSubject, opBeginsWith, 1); - m_localNewsTable->SetEnabled (attribSubject, opBeginsWith, 1); - m_localNewsTable->SetAvailable (attribSubject, opEndsWith, 1); - m_localNewsTable->SetEnabled (attribSubject, opEndsWith, 1); - - m_localNewsTable->SetAvailable (attribBody, opContains, 1); - m_localNewsTable->SetEnabled (attribBody, opContains, 1); - m_localNewsTable->SetAvailable (attribBody, opDoesntContain, 1); - m_localNewsTable->SetEnabled (attribBody, opDoesntContain, 1); - m_localNewsTable->SetAvailable (attribBody, opIs, 1); - m_localNewsTable->SetEnabled (attribBody, opIs, 1); - m_localNewsTable->SetAvailable (attribBody, opIsnt, 1); - m_localNewsTable->SetEnabled (attribBody, opIsnt, 1); - - - m_localNewsTable->SetEnabled (attribDate, opIsBefore, 1); - m_localNewsTable->SetAvailable (attribDate, opIsAfter, 1); - m_localNewsTable->SetEnabled (attribDate, opIsAfter, 1); - m_localNewsTable->SetAvailable (attribDate, opIs, 1); - m_localNewsTable->SetEnabled (attribDate, opIs, 1); - m_localNewsTable->SetAvailable (attribDate, opIsnt, 1); - m_localNewsTable->SetEnabled (attribDate, opIsnt, 1); - - m_localNewsTable->SetAvailable (attribOtherHeader, opContains, 1); // added for arbitrary headers - m_localNewsTable->SetEnabled (attribOtherHeader, opContains, 1); - m_localNewsTable->SetAvailable (attribOtherHeader, opDoesntContain, 1); - m_localNewsTable->SetEnabled (attribOtherHeader, opDoesntContain, 1); - m_localNewsTable->SetAvailable (attribOtherHeader, opIs, 1); - m_localNewsTable->SetEnabled (attribOtherHeader, opIs, 1); - m_localNewsTable->SetAvailable (attribOtherHeader, opIsnt, 1); - m_localNewsTable->SetEnabled (attribOtherHeader, opIsnt, 1); - - m_localNewsTable->SetAvailable (attribAgeInDays, opIsGreaterThan, 1); - m_localNewsTable->SetEnabled (attribAgeInDays, opIsGreaterThan, 1); - m_localNewsTable->SetAvailable (attribAgeInDays, opIsLessThan, 1); - m_localNewsTable->SetEnabled (attribAgeInDays, opIsLessThan, 1); - m_localNewsTable->SetAvailable (attribAgeInDays, opIs, 1); - m_localNewsTable->SetEnabled (attribAgeInDays, opIs, 1); - - m_localNewsTable->SetAvailable (attribMsgStatus, opIs, 1); - m_localNewsTable->SetEnabled (attribMsgStatus, opIs, 1); - m_localNewsTable->SetAvailable (attribMsgStatus, opIsnt, 1); - m_localNewsTable->SetEnabled (attribMsgStatus, opIsnt, 1); - - } - - return err; -} - - -MSG_SearchError msg_SearchValidityManager::InitNewsTable () -{ - XP_ASSERT (NULL == m_newsTable); - MSG_SearchError err = NewTable (&m_newsTable); - - if (SearchError_Success == err) - { - m_newsTable->SetAvailable (attribSender, opContains, 1); - m_newsTable->SetEnabled (attribSender, opContains, 1); - m_newsTable->SetAvailable (attribSender, opIs, 1); - m_newsTable->SetEnabled (attribSender, opIs, 1); - m_newsTable->SetAvailable (attribSender, opBeginsWith, 1); - m_newsTable->SetEnabled (attribSender, opBeginsWith, 1); - m_newsTable->SetAvailable (attribSender, opEndsWith, 1); - m_newsTable->SetEnabled (attribSender, opEndsWith, 1); - - m_newsTable->SetAvailable (attribSubject, opContains, 1); - m_newsTable->SetEnabled (attribSubject, opContains, 1); - m_newsTable->SetAvailable (attribSubject, opIs, 1); - m_newsTable->SetEnabled (attribSubject, opIs, 1); - m_newsTable->SetAvailable (attribSubject, opBeginsWith, 1); - m_newsTable->SetEnabled (attribSubject, opBeginsWith, 1); - m_newsTable->SetAvailable (attribSubject, opEndsWith, 1); - m_newsTable->SetEnabled (attribSubject, opEndsWith, 1); - - } - - return err; -} - - -MSG_SearchError msg_SearchValidityManager::InitNewsExTable (MSG_NewsHost *newsHost) -{ - MSG_SearchError err = SearchError_Success; - - if (!m_newsExTable) - err = NewTable (&m_newsExTable); - - if (SearchError_Success == err) - { - XP_Bool hasAttrib = newsHost ? newsHost->QuerySearchableHeader("FROM") : TRUE; - m_newsExTable->SetAvailable (attribSender, opContains, hasAttrib); - m_newsExTable->SetEnabled (attribSender, opContains, hasAttrib); - m_newsExTable->SetAvailable (attribSender, opDoesntContain, hasAttrib); - m_newsExTable->SetEnabled (attribSender, opDoesntContain, hasAttrib); - - hasAttrib = newsHost ? newsHost->QuerySearchableHeader ("SUBJECT") : TRUE; - m_newsExTable->SetAvailable (attribSubject, opContains, hasAttrib); - m_newsExTable->SetEnabled (attribSubject, opContains, hasAttrib); - m_newsExTable->SetAvailable (attribSubject, opDoesntContain, hasAttrib); - m_newsExTable->SetEnabled (attribSubject, opDoesntContain, hasAttrib); - - hasAttrib = newsHost ? newsHost->QuerySearchableHeader ("DATE") : TRUE; - m_newsExTable->SetAvailable (attribDate, opIsBefore, hasAttrib); - m_newsExTable->SetEnabled (attribDate, opIsBefore, hasAttrib); - m_newsExTable->SetAvailable (attribDate, opIsAfter, hasAttrib); - m_newsExTable->SetEnabled (attribDate, opIsAfter, hasAttrib); - - hasAttrib = newsHost ? newsHost->QuerySearchableHeader (":TEXT") : TRUE; - m_newsExTable->SetAvailable (attribAnyText, opContains, hasAttrib); - m_newsExTable->SetEnabled (attribAnyText, opContains, hasAttrib); - m_newsExTable->SetAvailable (attribAnyText, opDoesntContain, hasAttrib); - m_newsExTable->SetEnabled (attribAnyText, opDoesntContain, hasAttrib); - - hasAttrib = newsHost ? newsHost->QuerySearchableHeader ("KEYWORDS") : TRUE; - m_newsExTable->SetAvailable (attribKeywords, opContains, hasAttrib); - m_newsExTable->SetEnabled (attribKeywords, opContains, hasAttrib); - m_newsExTable->SetAvailable (attribKeywords, opDoesntContain, hasAttrib); - m_newsExTable->SetEnabled (attribKeywords, opDoesntContain, hasAttrib); - -#ifdef LATER - // Not sure whether this would be useful or not. If so, can we specify more - // than one NEWSGROUPS term to the server? If not, it would be tricky to merge - // this with the NEWSGROUPS term we generate for the scope. - hasAttrib = newsHost ? newsHost->QuerySearchableHeader("NEWSGROUPS") : TRUE; - m_newsExTable->SetAvailable (attribNewsgroups, opIsBefore, hasAttrib); - m_newsExTable->SetEnabled (attribNewsgroups, opIsBefore, hasAttrib); - m_newsExTable->SetAvailable (attribNewsgroups, opIsAfter, hasAttrib); - m_newsExTable->SetEnabled (attribNewsgroups, opIsAfter, hasAttrib); -#endif - hasAttrib = newsHost ? newsHost->QuerySearchableHeader("DATE") : TRUE; - m_newsExTable->SetAvailable (attribAgeInDays, opIsGreaterThan, hasAttrib); - m_newsExTable->SetEnabled (attribAgeInDays, opIsGreaterThan, hasAttrib); - m_newsExTable->SetAvailable (attribAgeInDays, opIsLessThan, hasAttrib); - m_newsExTable->SetEnabled (attribAgeInDays, opIsLessThan, hasAttrib); - m_newsExTable->SetAvailable (attribAgeInDays, opIs, hasAttrib); - m_newsExTable->SetEnabled (attribAgeInDays, opIs, hasAttrib); - - // it is possible that the user enters an arbitrary header that is not searchable using NNTP search extensions - m_newsExTable->SetAvailable (attribOtherHeader, opContains, 1); // added for arbitrary headers - m_newsExTable->SetEnabled (attribOtherHeader, opContains, 1); - m_newsExTable->SetAvailable (attribOtherHeader, opDoesntContain, 1); - m_newsExTable->SetEnabled (attribOtherHeader, opDoesntContain, 1); - } - - return err; -} - - -MSG_SearchError msg_SearchValidityManager::PostProcessValidityTable (MSG_NewsHost *host) -{ - return InitNewsExTable (host); -} diff --git a/mozilla/lib/libmsg/msgoffnw.cpp b/mozilla/lib/libmsg/msgoffnw.cpp deleted file mode 100644 index e102657821a..00000000000 --- a/mozilla/lib/libmsg/msgoffnw.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "msgoffnw.h" -#include "msgpane.h" -#include "msgfinfo.h" -#include "newsdb.h" -#include "newshdr.h" - -extern "C" -{ - extern int MK_NEWS_ITEM_UNAVAILABLE; -} - -MSG_OfflineNewsArtState::MSG_OfflineNewsArtState(MSG_Pane *pane, - const char * /*group*/, - uint32 messageNumber) -{ - m_pane = pane; - m_bytesReadSoFar = 0; - if (!pane->GetFolder() || !pane->GetFolder()->IsNews()) - return ; - - MessageDBView *view = pane->GetMsgView(); - if (!view) - return ; - m_newsDB = view->GetDB()->GetNewsDB(); - if (m_newsDB) - { - m_newsHeader = m_newsDB->GetNewsHdrForKey(messageNumber); - m_articleLength = (m_newsHeader) ? m_newsHeader->GetOfflineMessageLength(m_newsDB->GetDB()) : 0; - } - else - m_newsHeader = NULL; -} - -MSG_OfflineNewsArtState::~MSG_OfflineNewsArtState() -{ - delete m_newsHeader; -} - -// Returns negative error codes for errors, 0 for done, positive number -// for number of bytes read. -int MSG_OfflineNewsArtState::Process(char *outputBuffer, int outputBufSize) -{ - int32 bytesRead; - - if (!m_newsHeader) - return MK_NEWS_ITEM_UNAVAILABLE; - if (m_bytesReadSoFar >= m_articleLength) - { -// m_newsHeader->OrFlags(kOffline); // eh? we're pulling it out of the db - no need to change flag - return 0; - } - int bytesToCopy = MIN(outputBufSize, m_articleLength - m_bytesReadSoFar); - bytesRead = m_newsHeader->ReadFromArticle(outputBuffer, bytesToCopy, m_bytesReadSoFar, m_newsDB->GetDB()); - - m_bytesReadSoFar += bytesRead; - return bytesRead; -} - -int MSG_OfflineNewsArtState::Interrupt() -{ - if (m_newsHeader != NULL) - { - delete m_newsHeader; - m_newsHeader = NULL; - } - return 0; -} diff --git a/mozilla/lib/libmsg/msgoffnw.h b/mozilla/lib/libmsg/msgoffnw.h deleted file mode 100644 index d6c7bab6ad5..00000000000 --- a/mozilla/lib/libmsg/msgoffnw.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef MSG_OfflineNewsArt_H -#define MSG_OfflineNewsArt_H - -class MSG_Pane; -class NewsMessageHdr; -class NewsGroupDB; - -class MSG_OfflineNewsArtState -{ -public: - MSG_OfflineNewsArtState(MSG_Pane *pane, const char *group, - uint32 messageNumber); - virtual ~MSG_OfflineNewsArtState(); - virtual int Process(char *outputBuffer, int outputBufSize); - virtual int Interrupt(); -protected: - MSG_Pane *m_pane; - int32 m_bytesReadSoFar; - int32 m_articleLength; - NewsMessageHdr *m_newsHeader; - NewsGroupDB *m_newsDB; -}; - -#endif diff --git a/mozilla/lib/libmsg/msgpane.cpp b/mozilla/lib/libmsg/msgpane.cpp deleted file mode 100644 index caa3dc2333a..00000000000 --- a/mozilla/lib/libmsg/msgpane.cpp +++ /dev/null @@ -1,4894 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "errcode.h" -#include "xpgetstr.h" -#include "libi18n.h" -#include "imapoff.h" - -#include "msgpane.h" -#include "msgprefs.h" -#include "msgmast.h" - -#include "msgdbvw.h" -#include "msgmpane.h" // to get static mailto methods. -#include "msgtpane.h" -#include "msgfpane.h" -#include "msgundac.h" -#include "newsdb.h" - -#include "xp_time.h" -#include "xplocale.h" -#include "msg.h" -#include "prsembst.h" -#include "msgmast.h" -#include "msgimap.h" -#include "maildb.h" -#include "mailhdr.h" -#include "msgrulet.h" - -#include "msgcmfld.h" -#include "newshost.h" -#include "imaphost.h" -#include "hosttbl.h" -#include "nwsartst.h" -#include "grpinfo.h" -#include "msgdlqml.h" -#include "prefapi.h" -#include "listngst.h" -#include "newsset.h" -#include "thrlstst.h" -#include "xp_qsort.h" -#include "msgfcach.h" -#include "intl_csi.h" -#include "xlate.h" -#include "msgurlq.h" -#include "msgbiff.h" -#include "pw_public.h" -#include "mime.h" - -extern "C" -{ -extern int MK_MSG_ADDRESS_BOOK; -extern int MK_MSG_COMPRESS_ALL_FOLDER; -extern int MK_MSG_EMPTY_TRASH_FOLDER; -extern int MK_MSG_ERROR_WRITING_MAIL_FOLDER; -extern int MK_MSG_GET_NEW_MAIL; -extern int MK_MSG_GET_NEW_DISCUSSION_MSGS; -extern int MK_MSG_NEW_MAIL_MESSAGE; -extern int MK_MSG_NO_POP_HOST; -extern int MK_OUT_OF_MEMORY; -extern int MK_MSG_SAVE_MESSAGE_AS; -extern int MK_MSG_SAVE_MESSAGES_AS; -extern int MK_MSG_OPEN_DRAFT; -extern int MK_MSG_ID_NOT_IN_FOLDER; -extern int MK_MSG_FOLDER_UNREADABLE; -extern int MK_MSG_DELIV_NEW_MSGS; -extern int MK_MSG_QUEUED_DELIVERY_FAILED; -extern int MK_MSG_NEWS_HOST_TABLE_INVALID; -extern int MK_MSG_CANCEL_MESSAGE; -extern int MK_MSG_MESSAGE_CANCELLED; -extern int MK_MSG_MARK_SEL_AS_READ; -extern int MK_MSG_MARK_SEL_AS_UNREAD; -extern int MK_MSG_MARK_THREAD_READ; -extern int MK_MSG_MARK_ALL_READ; -extern int MK_MSG_BACKTRACK; -extern int MK_MSG_GO_FORWARD; -extern int MK_MSG_UNABLE_MANAGE_MAIL_ACCOUNT; -extern int MK_POP3_NO_MESSAGES; -extern int MK_MSG_MANAGE_MAIL_ACCOUNT; -extern int MK_MSG_CANT_DELETE_RESERVED_FOLDER; -extern int MK_MSG_PANES_OPEN_ON_FOLDER; -extern int MK_MSG_DELETE_FOLDER_MESSAGES; -extern int MK_MSG_NO_POST_TO_DIFFERENT_HOSTS_ALLOWED; -extern int MK_MSG_GROUP_NOT_ON_SERVER; -extern int MK_MSG_NEW_NEWSGROUP; -extern int MK_MSG_ADVANCE_TO_NEXT_FOLDER; -extern int MK_MSG_FLAG_MESSAGE; -extern int MK_MSG_UNFLAG_MESSAGE; -extern int MK_MSG_RETRIEVE_FLAGGED; -extern int MK_MSG_RETRIEVE_SELECTED; -XP_Bool NET_IsNewsMessageURL (const char *url); -} - -#ifdef XP_WIN - -class MSG_SaveMessagesAsTextState : public MSG_ZapIt -{ -public: - MSG_SaveMessagesAsTextState (MSG_Pane *pane, const IDArray &idArrays, XP_File file); - ~MSG_SaveMessagesAsTextState (); - - static void SaveMsgAsTextComplete(PrintSetup *print); - - void SaveNextMessage(); -public: - int m_curMsgIndex; - MSG_Pane *m_pane; - PrintSetup m_print; - IDArray m_msgKeys; -}; - -#endif - -PaneListener::PaneListener(MSG_Pane *pPane) -{ - m_pPane = pPane; - m_keysChanging = FALSE; - m_keyChanged = FALSE; -} - -PaneListener::~PaneListener() -{ -} - -void PaneListener::OnViewChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener * /* instigator */) -{ - m_pPane->StartingUpdate(changeType, startIndex, numChanged); - m_pPane->EndingUpdate(changeType, startIndex, numChanged); -} - -void PaneListener::OnViewStartChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener * /* instigator */) -{ - m_pPane->StartingUpdate(changeType, startIndex, numChanged); -} - -void PaneListener::OnViewEndChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener * /* instigator */) -{ - m_pPane->EndingUpdate(changeType, startIndex, numChanged); -} - -void PaneListener::OnKeyChange(MessageKey /*keyChanged*/, - int32 /*flags*/, - ChangeListener * instigator) -{ - if (m_pPane->GetFolder() != NULL) - m_pPane->GetFolder()->UpdateSummaryTotals(); - if (!m_keysChanging && this == instigator) - m_pPane->GetMaster()->BroadcastFolderChanged(m_pPane->GetFolder()); - m_keyChanged = TRUE; - -} - -void PaneListener::OnAnnouncerGoingAway (ChangeAnnouncer * instigator) -{ - MessageDBView *view = m_pPane->GetMsgView(); - - if (view != NULL && view == instigator) - { - view->Remove(this); - m_pPane->SetMsgView(NULL); - } -} - -void PaneListener::OnAnnouncerChangingView(ChangeAnnouncer* /*instigator*/, MessageDBView* newView) -{ - m_pPane->SwitchView(newView); -} - - -MSG_Pane* MSG_Pane::MasterList = NULL; - - - -// forward declarations... -static int32 -msg_incorporate_handle_line(char* line, uint32 length, void* closure); - -#ifndef XP_OS2 -static -#else -extern "OPTLINK" -#endif -int32 msg_writemsg_handle_line(char* line, uint32 length, void* closure); - - -typedef struct msg_incorporate_state -{ - MWContext *context; - MSG_FolderInfoMail *inbox; - MSG_Pane *pane; - const char* dest; - const char *destName; - int32 start_length; - msg_write_state writestate; -// int numdup; - char *ibuffer; - uint32 ibuffer_size; - uint32 ibuffer_fp; -#ifdef MANGLE_INTERNAL_ENVELOPE_LINES - XP_Bool mangle_from; /* True if "From " lines need to be subject - to the Usual Mangling Conventions.*/ -#endif /* MANGLE_INTERNAL_ENVELOPE_LINES */ - char* headers; - uint32 headers_length; - uint32 headers_maxlength; - XP_Bool gathering_headers; - XP_Bool expect_multiple; - XP_Bool expect_envelope; - ParseMailboxState *incparsestate; /* Parse state for messages */ - int status; -} msg_incorporate_state; - - - -XP_Bool MSG_Pane::m_warnedInvalidHostTable = FALSE; - -MSG_Pane::MSG_Pane(MWContext* context, MSG_Master* master) { - m_context = context; - m_nextInMasterList = MasterList; - - if (!MasterList && master->FolderTreeExists()) - XP_FileRemove ("", xpFolderCache); - - MasterList = this; - - m_master = master; - if (master) { - m_nextPane = master->GetFirstPane(); - master->SetFirstPane(this); - m_prefs = master->GetPrefs(); - m_prefs->AddNotify(this); - - if (FALSE == m_warnedInvalidHostTable && NULL == m_master->GetHostTable() && - m_master->IsCollabraEnabled()) - { - FE_Alert (context, XP_GetString(MK_MSG_NEWS_HOST_TABLE_INVALID)); - m_warnedInvalidHostTable = TRUE; - } - - m_context->mailMaster = master; - } - m_numNewGroups = 0; - m_undoManager = 0; - m_backtrackManager = 0; - - m_ImapFilterData = NULL; - m_background = NULL; - m_urlChain = NULL; - m_progressContext = NULL; - m_PreImapFolderVerifyUrlExitFunction = NULL; - m_requestForReturnReceipt = FALSE; - m_sendingMDNInProgress = FALSE; - - m_displayRecipients = msg_DontKnow; - - m_entryPropSheetFunc = NULL; // FEs must register a person entry property sheet call back -} - - -MSG_Pane::~MSG_Pane() { - UnregisterFromPaneList(); - - if (m_master) { - m_master->GetPrefs()->RemoveNotify(this); - } - - if (m_undoManager) - { - m_undoManager->Release(); - m_undoManager = NULL; - } - - if (m_backtrackManager) - delete m_backtrackManager; - - if (m_ImapFilterData) - delete m_ImapFilterData; - - if (NULL == m_master->GetFirstPane()) - { - // write out folder cache since we're the last pane to die. - MSG_FolderCache cache; - cache.WriteToDisk (GetMaster()->GetFolderTree()); - - m_master->CloseCachedImapConnections(); - } - - if (m_actionInfo) - { - // make sure to close down the cached draft imap connection - if (m_actionInfo->m_folderInfo && - m_actionInfo->m_folderInfo->GetType() == FOLDER_IMAPMAIL && - m_actionInfo->m_folderInfo->GetFlags() & MSG_FOLDER_FLAG_DRAFTS && - !m_master->FindPaneOfType(m_actionInfo->m_folderInfo, MSG_THREADPANE)) - m_master->ImapFolderClosed(m_actionInfo->m_folderInfo); - - delete m_actionInfo; - } - - FREEIF(m_incUidl); - - if (m_progressContext) - PW_DestroyProgressContext(m_progressContext); -} - - -MSG_Pane* MSG_Pane::GetFirstPaneForContext(MWContext *context) -{ - - if (context) - return GetNextPaneForContext(NULL, context); - - return(NULL); -} - -MSG_Pane* MSG_Pane::GetNextPaneForContext(MSG_Pane *startPane, MWContext *context) -{ - MSG_Pane* result = NULL; - result = (startPane) ? startPane->m_nextInMasterList : MasterList; - - for (; result ; result = result->m_nextInMasterList) - { - if (result->GetContext() == context) - return result; - } - return NULL; -} - - -// Remove a pane from the pane list -// Note that if after we remove ourselves from the list, the only pane left -// belongs to the Biff (Check for New Mail) Master then we tell it to go away, which will cause -// its own hidden progress window and context to be deleted. - -void MSG_Pane::UnregisterFromPaneList() -{ - if (m_master) { - MSG_Pane* tmp = m_master->GetFirstPane(); - if (tmp == this) { - m_master->SetFirstPane(m_nextPane); - } else { - for (; tmp ; tmp = tmp->m_nextPane) { - if (tmp->m_nextPane == this) { - tmp->m_nextPane = m_nextPane; - break; - } - } - } - tmp = m_master->GetFirstPane(); // Check and see if biff is the only one left - if (tmp && !tmp->m_nextPane && (MSG_Biff_Master::GetPane() == tmp)) - { - MSG_BiffCleanupContext(NULL); // will use its own context and recurse here once - } - } - - MSG_Pane** ptr; - for (ptr = &MasterList ; *ptr ; ptr = &((*ptr)->m_nextInMasterList)) { - if (*ptr == this) { - *ptr = this->m_nextInMasterList; - break; - } - } -} - -// this method can be used to find out if a pane has been deleted... -/*static*/ XP_Bool MSG_Pane::PaneInMasterList(MSG_Pane *pane) -{ - MSG_Pane* curPane; - XP_Bool ret = FALSE; - // it will return FALSE if pane is NULL - for (curPane = MasterList ; curPane ; curPane = curPane->m_nextInMasterList) - { - if (curPane == pane) - { - ret = TRUE; - break; - } - } - return ret; -} - - -MSG_Pane* MSG_Pane::FindPane(MWContext* context, MSG_PaneType type, XP_Bool contextMustMatch /* = FALSE */) { - MSG_Pane* result; - for (result = MasterList ; result ; result = result->m_nextInMasterList) { - if (result->GetContext() == context && (type == MSG_ANYPANE || - result->GetPaneType() == type)) { - return result; - } - } - if (!contextMustMatch) - { - for (result = MasterList ; result ; result = result->m_nextInMasterList) { - if (type == MSG_ANYPANE || result->GetPaneType() == type) { - return result; - } - } - } - return NULL; -} - -/* static */ MSG_PaneType MSG_Pane::PaneTypeForURL(const char *url) -{ - MSG_PaneType retType = MSG_ANYPANE; - int urlType = NET_URL_Type(url); - char *idStr; - char *imapFetchStr; - char *folderName = NULL; - - switch (urlType) - { - case IMAP_TYPE_URL: - if (!XP_STRCMP(url, "IMAP:")) - return MSG_FOLDERPANE; - folderName = NET_ParseURL(url, GET_PATH_PART); - if (!folderName) // if it's just a host, return folder pane - { - retType = MSG_FOLDERPANE; - break; - } - // note fall through... - case MAILBOX_TYPE_URL: - if (!XP_STRCMP(url, "mailbox:")) - return MSG_FOLDERPANE; - idStr = XP_STRSTR (url, "?id="); - imapFetchStr = XP_STRSTR(url, "?fetch"); - retType = (idStr || imapFetchStr) ? MSG_MESSAGEPANE : MSG_THREADPANE; - break; - case NEWS_TYPE_URL: - { - if (!XP_STRCMP(url, "news:") || !XP_STRCMP(url, "snews:")) - return MSG_FOLDERPANE; - // check if we have news://news/<article id> - if (NET_IsNewsMessageURL (url)) - retType = MSG_MESSAGEPANE; - // MSG_RequiresNewsWindow means thread pane... - else if (MSG_RequiresNewsWindow(url)) - retType = MSG_THREADPANE; - break; - } - case MAILTO_TYPE_URL: - retType = MSG_COMPOSITIONPANE; - break; - default: - break; - } - FREEIF(folderName); - return retType; -} - -// is the passed motion type one that causes us to open the next folder with -// unread messages? -XP_Bool MSG_Pane::NavigationGoesToNextFolder(MSG_MotionType motionType) -{ - return (motionType == MSG_NextUnreadMessage || motionType == MSG_NextUnreadThread - || motionType == MSG_NextUnreadGroup - || motionType == MSG_ReadMore || motionType == MSG_LaterMessage); - -} - -/* inline virtuals moved to cpp file to help compilers that don't implement virtuals - defined in headers well. -*/ -MSG_PaneType MSG_Pane::GetPaneType() {return MSG_PANE;} -void MSG_Pane::NotifyPrefsChange(NotifyCode /*code*/) {} -MSG_Pane* MSG_Pane::GetParentPane() {return NULL;} -MessageDBView *MSG_Pane::GetMsgView() {return NULL;} -void MSG_Pane::SetMsgView(MessageDBView *) {} -void MSG_Pane::SwitchView(MessageDBView *) {} -MSG_FolderInfo *MSG_Pane::GetFolder() {return NULL;} -void MSG_Pane::SetFolder(MSG_FolderInfo *) {} -PaneListener *MSG_Pane::GetListener() {return NULL;} - -void MSG_Pane::SetFEData(void* data) { - m_fedata = data; -} - -void* MSG_Pane::GetFEData() { - return m_fedata; -} - -XP_Bool MSG_Pane::IsLinePane() { - return FALSE; -} - -MWContext* MSG_Pane::GetContext() { - return m_context; -} - -MSG_Prefs* MSG_Pane::GetPrefs() { - return m_prefs; -} - -void MSG_Pane::CrushUpdateLevelToZero() -{ - // assume that any Starting/Ending pairs that are not - // in the same scope were a wrapper of the form - // (MSG_NotifyNone, 0, 0); - // This is a for loop rather than while(m_numstack) to prevent - // an endless loop if an override of EndingUpdate does not use - // m_numstack - for (int updateLevel = m_numstack; updateLevel > 0; updateLevel--) - EndingUpdate(MSG_NotifyNone, 0, 0); -} - -void MSG_Pane::StartingUpdate(MSG_NOTIFY_CODE /*code*/, MSG_ViewIndex /*where*/, - int32 /*num*/) -{ -#if DEBUG_ricardob - if (m_numstack > 1) - XP_ASSERT(FALSE); -#endif - m_numstack++; -} - -void MSG_Pane::EndingUpdate(MSG_NOTIFY_CODE /*code*/, MSG_ViewIndex /*where*/, - int32 /*num*/) -{ - m_numstack--; -} - -void PaneListener::StartKeysChanging() -{ - m_keysChanging = TRUE; - m_keyChanged = FALSE; -} - -void PaneListener::EndKeysChanging() -{ - m_keysChanging = FALSE; - if (m_keyChanged) - { - m_keyChanged = FALSE; - m_pPane->GetMaster()->BroadcastFolderChanged(m_pPane->GetFolder()); - } -} - -MsgERR -MSG_Pane::ComposeNewMessage() -{ - return (MSG_Mail(GetContext())) ? 0 : MK_OUT_OF_MEMORY; -} - -//This is a long one. I'd like to break it down but some of the work -//that is done here just isn't really useful elsewhere. This handles -//serveral selection cases in the threadwindow of the Mail and News pane. -//If the individual selected something which we can use to populate the -//send to lines, it get added into the addressee fields with the group label. -//If nothing of any use was selected, the "mailto" label is used with a blank. -//They are not allowed to select groups across news servers. Such an act -//will result in an informative error message and bring you back to the -//mail and news pane. -MsgERR -MSG_Pane::ComposeMessageToMany(MSG_ViewIndex* indices, int32 numIndices) -{ - if (!indices || !numIndices) - { //We do this instead because nothing was selected - return ComposeNewMessage(); - } - - if ( !(GetPaneType() == MSG_FOLDERPANE)) - { - return ComposeNewMessage(); - } - - URL_Struct *url_struct = NULL; - MSG_FolderLine folderLine; //temporary storage until put on the array - MSG_FolderLine *pFolders = NULL; //an array of these things - - MSG_FolderInfo *pFolder = NULL; - MSG_FolderInfoNews *pNewsFolderRemember = NULL; - MSG_FolderInfoNews *pTemp = NULL; - - int nIndexToFirstSeenHost =0; - int i = 0; //index - char *pHost1 = NULL; - char *pHost2 = NULL; - char * pszMailGroupList = NULL; - - char *pURL = NULL; - HG87729 - XP_Bool sign_p = MSG_GetNewsSigningPreference(); - char *buffer = NULL; //used for reallocation of strings - - - pszMailGroupList = (char*)XP_ALLOC(sizeof '\0'); - - if (!pszMailGroupList)//bail! - return eOUT_OF_MEMORY; - - pszMailGroupList[0] = '\0'; - - pFolders = new MSG_FolderLine[numIndices]; - - if (!pFolders)//bail! - { - XP_FREE(pszMailGroupList); - return eOUT_OF_MEMORY; - } - - HG83738 - //Get and remember the first folder in the selection. - //We do this so we can make sure the selection does not - //span over different news hosts. If it does we complain - //and exit message compose. - for ( i = 0; i < numIndices && !pNewsFolderRemember; i++) - { - pFolder = MSG_GetFolderInfo(this, indices[i]); - if(pFolder) - pNewsFolderRemember = pFolder->GetNewsFolderInfo(); - if (pNewsFolderRemember) - { - pHost2 = pNewsFolderRemember->GetHostUrl(); - nIndexToFirstSeenHost = i; - } - } - //iterate over the indices saving and comparing folderline data. - //Also we making sure that news groups elected do not span - //over multiple hosts. - for (i = nIndexToFirstSeenHost; i < numIndices; i++) - { - MSG_GetFolderLineByIndex(this, - indices[i], - 1, - &folderLine); - pFolders[i] = folderLine; - pFolder = MSG_GetFolderInfo(this, indices[i]); - if (pFolder) - { //we are checking to make sure we have the same host - //throughout the selection. - pTemp = pFolder->GetNewsFolderInfo(); - if (pTemp) - { - pHost1 = pTemp->GetHostUrl(); - - if (pHost1 && pHost2) - { - if (XP_STRCASECMP(pHost1,pHost2) != 0) - { - XP_FREE(pszMailGroupList); - XP_FREE(pHost1); - XP_FREE(pHost2); - return MK_MSG_NO_POST_TO_DIFFERENT_HOSTS_ALLOWED; - } - } - else - { - if (pHost2) XP_FREE(pHost2);//being safe!!! - if (pHost1) XP_FREE(pHost1);//being safe!!! - XP_FREE(pszMailGroupList); - return MK_MSG_NO_POST_TO_DIFFERENT_HOSTS_ALLOWED; - } - XP_FREE(pHost1); - pHost1 = NULL; - } - } - } - - //Here we are allocating space for the names of groups - //in the selection. - for (i = nIndexToFirstSeenHost; i< numIndices; i++) - { - if (pFolders[i].flags & MSG_FOLDER_FLAG_NEWSGROUP) - { - int loc = strlen(pszMailGroupList); - buffer = (char*)XP_REALLOC(pszMailGroupList,strlen(pFolders[i].name) + sizeof ',' + strlen(pszMailGroupList) + sizeof '\0'); - if (!buffer) - { - XP_FREE(pszMailGroupList); - if (pHost2) XP_FREE(pHost2);//being safe!!! - return eOUT_OF_MEMORY; - } - else - { - buffer[loc] = '\0'; - pszMailGroupList = buffer; - XP_STRCAT(pszMailGroupList,pFolders[i].name); - XP_STRCAT(pszMailGroupList,","); - } - } - } - //Remove the trailing comma - if (pszMailGroupList[XP_STRLEN(pszMailGroupList) -1] == ',') - pszMailGroupList[XP_STRLEN(pszMailGroupList) -1] = '\0'; - - pURL = MakeMailto (0, 0, pszMailGroupList, - 0, 0, 0, pHost2, - HG92192, sign_p); - - //clean up - XP_FREE(pszMailGroupList); - if (pHost2) XP_FREE(pHost2); - delete [] pFolders; - - if(pURL) - { - url_struct = NET_CreateURLStruct (pURL, NET_NORMAL_RELOAD); - XP_FREE(pURL); - } - else - { - return eOUT_OF_MEMORY; - } - - if (!url_struct) - { - return eOUT_OF_MEMORY; - } - - url_struct->internal_url = TRUE; - GetURL (url_struct, FALSE); - - //It's all good!! - return eSUCCESS; //success! -} - - - - -MsgERR -MSG_Pane::ComposeNewsMessage(MSG_FolderInfo *folder) -{ - char *host = 0; - char *url = 0; - URL_Struct *url_struct = 0; - - HG21872 - XP_Bool sign_p = MSG_GetNewsSigningPreference(); - - XP_ASSERT (folder); - if (!folder->IsNews()) - return eFAILURE; - MSG_FolderInfoNews *newsFolder = (MSG_FolderInfoNews *) folder; - - host = ComputeNewshostArg (); - url = MakeMailto (0, 0, newsFolder->GetNewsgroupName(), - 0, 0, 0, host, - HG12021, sign_p); - url_struct = NET_CreateURLStruct (url, NET_NORMAL_RELOAD); - if (url) - XP_FREE(url); - - if (!url_struct) return eOUT_OF_MEMORY; - url_struct->internal_url = TRUE; - GetURL (url_struct, FALSE); - return eSUCCESS; - -} - - -char* -MSG_Pane::CreateForwardSubject(MessageHdrStruct* header) -{ - char *fwd_subject = 0; - const char *subject = 0; - char *conv_subject = 0; - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(GetContext()); - - subject = header->m_subject; - - while (XP_IS_SPACE(*subject)) subject++; - - conv_subject = IntlDecodeMimePartIIStr(subject, INTL_GetCSIWinCSID(c), FALSE); - if (conv_subject == NULL) - conv_subject = (char *) subject; - fwd_subject = - (char *) XP_ALLOC((conv_subject ? XP_STRLEN(conv_subject) : 0) + 20); - if (!fwd_subject) goto FAIL; - - XP_STRCPY (fwd_subject, "[Fwd: "); - if (header->m_flags & kHasRe) { - XP_STRCAT (fwd_subject, "Re: "); - } - XP_STRCAT (fwd_subject, conv_subject); - XP_STRCAT (fwd_subject, "]"); - -FAIL: - if (conv_subject != subject) { - FREEIF(conv_subject); - } - return fwd_subject; -} - -void -MSG_Pane::InterruptContext(XP_Bool /*safetoo*/) -{ - XP_InterruptContext(m_context); -} - -/* static */ void MSG_Pane::SaveMessagesAsCB(MWContext* context, char *file_name, void *closure) -{ - MSG_Pane *pane = (MSG_Pane*) closure; - if (pane) - XP_ASSERT(pane->m_context == context); - else - return; - -#ifdef XP_WIN - char *dot = NULL; - - XP_ASSERT (file_name); - if (!file_name) return; - - dot = XP_STRRCHR(file_name, '.'); - - if (dot && !XP_STRNCASECMP(dot, ".txt", 4)) - { - XP_ASSERT(pane->m_saveKeys.GetSize() >= 1); - XP_File theFile = XP_FileOpen(file_name, xpURL, - XP_FILE_WRITE_BIN); - XP_ASSERT(theFile); - if (!theFile) return; - - int32 width = 76; - MSG_SaveMessagesAsTextState *saveMsgState = - new MSG_SaveMessagesAsTextState(pane, pane->m_saveKeys, theFile); - - XP_ASSERT(saveMsgState); - if (!saveMsgState) - { - XP_FileClose(theFile); - return; - } - saveMsgState->SaveNextMessage(); - } - else -#endif - { - MessageDBView *view = pane->GetMsgView(); - if (view && view->GetDB() != NULL && pane->GetFolder() != NULL) - pane->GetFolder()->SaveMessages(&pane->m_saveKeys, - file_name, - pane,view->GetDB()); - } -} - - -MsgERR -MSG_Pane::GetMailForAFolder(MSG_FolderInfo *folder) -{ - return GetNewMail(this, folder); -} - - -MsgERR -MSG_Pane::DoCommand(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numIndices) -{ - MsgERR status = 0; - MessageDBView *view = GetMsgView(); - MSG_FolderInfo *folder = GetFolder(); - switch (command) { - case MSG_DeliverQueuedMessages: - status = DeliverQueuedMessages(); - break; - case MSG_GetNewMail: - status = GetNewMail(this, folder); - break; - case MSG_GetNextChunkMessages: - status = GetNewNewsMessages(this, GetFolder(), FALSE); - break; - case MSG_EditAddressBook: - (void) FE_GetAddressBookContext(this, TRUE); - break; - case MSG_CancelMessage: - if (indices) - status = CancelMessage(indices[0]); - break; - case MSG_MailNew: - status = ComposeMessageToMany(indices, numIndices); - break; - case MSG_NewNewsgroup: - { - MSG_FolderInfo *folder = GetFolder(); - XP_ASSERT(NewNewsgroupStatus(folder)); - status = NewNewsgroup (folder, FOLDER_CATEGORYCONTAINER == folder->GetType()); - } - break; - case MSG_MarkMessages: - case MSG_UnmarkMessages: - case MSG_MarkMessagesRead: - case MSG_MarkMessagesUnread: - case MSG_ToggleMessageRead: - case MSG_Delete: - case MSG_DeleteNoTrash: - case MSG_MarkThreadRead: - { - UndoMarkChangeListener *undoMarkListener = NULL; - - // since the FE could have constructed the list of indices in - // any order (e.g. order of discontiguous selection), we have to - // sort the indices in order to find out which MSG_ViewIndex will - // be deleted first. - if (numIndices > 1) - XP_QSORT (indices, numIndices, sizeof(MSG_ViewIndex), CompareViewIndices); - - if (command == MSG_MarkThreadRead && view) - { - undoMarkListener = new UndoMarkChangeListener(this, GetFolder(), - MSG_MarkMessagesRead); - if (undoMarkListener) - view->Add(undoMarkListener); - } - else if (command != MSG_Delete && - command != MSG_DeleteNoTrash) - GetUndoManager()->AddUndoAction( - new MarkMessageUndoAction(this, command, indices, - numIndices, GetFolder())); - StartingUpdate(MSG_NotifyNone, 0, 0); - ApplyCommandToIndices(command, indices, numIndices); - if (undoMarkListener) - { - view->Remove(undoMarkListener); - delete undoMarkListener; - } - EndingUpdate(MSG_NotifyNone, 0, 0); - } - break; - case MSG_MarkAllRead: - if (view && view->GetDB() != NULL) - { - IDArray thoseMarked; - UndoMarkChangeListener changeListener(this, GetFolder(), MSG_MarkMessagesRead); - // The destructor of UndoMarkChangeListener will add the undoAction - // to the undo Manager - StartingUpdate(MSG_NotifyNone, 0, 0); - // Add the changeListener to the view - view->Add(&changeListener); - status = view->GetDB()->MarkAllRead(GetContext(), &thoseMarked); - // Remove the changeListener from the view - view->Remove(&changeListener); - EndingUpdate(MSG_NotifyNone, 0, 0); - - if (status == 0) - { - if (GetFolder()->GetType() == FOLDER_IMAPMAIL) - ((MSG_IMAPFolderInfoMail *) GetFolder())->StoreImapFlags(this, kImapMsgSeenFlag, TRUE, thoseMarked); - } - } - break; - case MSG_ToggleThreadKilled: - return view->ToggleIgnored(indices, numIndices, NULL); - case MSG_ToggleThreadWatched: - return view->ToggleWatched(indices, numIndices); - case MSG_SaveMessagesAs: - if (view != NULL) - { - char *title = (numIndices > 1 - ? XP_GetString(MK_MSG_SAVE_MESSAGE_AS) - : XP_GetString(MK_MSG_SAVE_MESSAGES_AS)); - - SaveIndicesAsKeys(indices, numIndices); - FE_PromptForFileName (GetContext(), title, 0, /* default_path */ - FALSE, FALSE, (ReadFileNameCallbackFunction) MSG_Pane::SaveMessagesAsCB, - this); - } - break; - case MSG_OpenMessageAsDraft: - status = OpenMessageAsDraft(indices, numIndices); - break; - case MSG_ForwardMessageInline: - status = OpenMessageAsDraft(indices, numIndices, TRUE); - break; - case MSG_RetrieveMarkedMessages: - if (view != NULL && GetFolder() != NULL) - { - if (GetFolder()->IsNews()) - { - status = DownloadNewsArticlesToNewsDB::SaveMessages(GetContext(), GetFolder(), view->GetDB(), NULL); - } - else - { - MSG_IMAPFolderInfoMail *imapFolder = GetFolder()->GetIMAPFolderInfoMail(); - status = imapFolder->SaveFlaggedMessagesToDB(this, view->GetDB(), m_saveKeys); - } - if (status == MK_CONNECTED) - status = eSUCCESS; - } - break; - case MSG_RetrieveSelectedMessages: - if (view != NULL && GetFolder()) - { - SaveIndicesAsKeys(indices, numIndices); - if (GetFolder()->IsNews()) - status = DownloadNewsArticlesToNewsDB::SaveMessages(GetContext(), GetFolder(), view->GetDB(), &m_saveKeys); - else - { - MSG_IMAPFolderInfoMail *imapFolder = GetFolder()->GetIMAPFolderInfoMail(); - status = imapFolder->SaveMessagesToDB(this, view->GetDB(), m_saveKeys); - } - } - - break; - case MSG_Undo: - if (GetUndoManager()->CanUndo()) - GetUndoManager()->Undo(); - break; - case MSG_Redo: - if (GetUndoManager()->CanRedo()) - GetUndoManager()->Redo(); - break; - case MSG_CompressAllFolders: - status = CompressAllFolders(); - break; - case MSG_EmptyTrash: - status = EmptyTrash(GetFolder()); - break; - case MSG_ManageMailAccount: - if (folder && folder->IsMail()) - status = ManageMailAccount(folder); - break; - default: -#ifdef DEBUG - FE_Alert (GetContext(), "command not implemented"); -#endif - break; - } - return status; -} - - -MsgERR -MSG_Pane::GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, int32 numIndices, - XP_Bool *selectable_pP, - MSG_COMMAND_CHECK_STATE *selected_pP, - const char **display_stringP, - XP_Bool *plural_pP) -{ - const char *display_string = 0; - MessageDBView *view = GetMsgView(); - MSG_FolderInfo *folder = GetFolder(); - MSG_FolderInfoMail *mailFolder = (folder) ? folder->GetMailFolderInfo() : 0; - XP_Bool plural_p = FALSE; - XP_Bool selectable_p = FALSE; - XP_Bool selected_p = FALSE; - XP_Bool selected_used_p = FALSE; - MSG_FolderInfoMail *queueFolder; - MessageDB* db = NULL; - - if (view) - db = view->GetDB(); - - switch(command) { - - case MSG_DeliverQueuedMessages: - display_string = XP_GetString(MK_MSG_DELIV_NEW_MSGS); - queueFolder = (MSG_FolderInfoMail *) FindFolderOfType(MSG_FOLDER_FLAG_QUEUE); - selectable_p = FALSE; - if (queueFolder) - { - XP_StatStruct folderst; - if (!XP_Stat(queueFolder->GetPathname(), &folderst, xpMailFolder)) - { - // If we keep the db up to date (and send change notification to - // the folder info, we could use the folder info. - if (folderst.st_size > 0) - { - int32 totalMessages = queueFolder->GetTotalMessages(FALSE); - if (totalMessages > 0) - selectable_p = TRUE; - else if (totalMessages == 0) - selectable_p = FALSE; - } - } - } - break; - - case MSG_GetNextChunkMessages: - // can't set display string because it's based on chunk size - if (folder && folder->IsNews()) - { - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - if (newsFolder && !newsFolder->GetListNewsGroupState()) - selectable_p = TRUE; // only enable when it's not downloading - } - break; - case MSG_GetNewMail: - if (!folder || folder->IsMail()) // if no folder we're in folder pane - { - MSG_FolderInfo *inbox = FindFolderOfType(MSG_FOLDER_FLAG_INBOX); - display_string = XP_GetString(MK_MSG_GET_NEW_MAIL); - // get new mail valid if the inbox is not locked. If no inbox, - // GetNewMail should create one, if FindFolderOfType doesn't? - // Mail filters will need to check if move to folder filters - // point at a locked folder. - selectable_p = (inbox) ? !inbox->IsLocked() : TRUE; - if (selectable_p) // disable if this folder is reparsing. - selectable_p = (mailFolder) ? !mailFolder->GetParseMailboxState() : TRUE; - if (selectable_p) // disable if imap load in progress - selectable_p = GetLoadingImapFolder() == NULL; - if (selectable_p) // don't enable get new mail if we're doing something else - selectable_p = !m_showingProgress; - - } - else if (folder && folder->IsNews()) - { - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - display_string = XP_GetString(MK_MSG_GET_NEW_DISCUSSION_MSGS); - if (newsFolder && !newsFolder->GetListNewsGroupState()) - selectable_p = TRUE; // only enable when it's not downloading - } - else - selectable_p = TRUE; - - // The beta timebomb is supposed to disable GetNewMail - if (selectable_p) - selectable_p = !NET_CheckForTimeBomb(GetContext()); - break; - case MSG_NewNewsgroup: - display_string = XP_GetString(MK_MSG_NEW_NEWSGROUP); - selectable_p = GetFolder() && NewNewsgroupStatus (GetFolder()); - break; - case MSG_EditAddressBook: - display_string = XP_GetString(MK_MSG_ADDRESS_BOOK); - selectable_p = TRUE; - break; - - case MSG_CancelMessage: - selectable_p = (view && view->GetDB() && view->GetDB()->GetNewsDB() && numIndices == 1); - display_string = XP_GetString(MK_MSG_CANCEL_MESSAGE); - break; - case MSG_MailNew: - display_string = XP_GetString(MK_MSG_NEW_MAIL_MESSAGE); - // don't enable compose if we're parsing a folder - selectable_p = (mailFolder) ? !mailFolder->GetParseMailboxState() : TRUE; - break; - case MSG_MarkAllRead: - display_string = XP_GetString(MK_MSG_MARK_ALL_READ); - selectable_p = view && (view->GetSize() > 0); - break; - case MSG_MarkMessagesRead: - display_string = XP_GetString(MK_MSG_MARK_SEL_AS_READ); - selectable_p = FALSE; - if (view && db) - { - for ( ; numIndices > 0 ; numIndices--, indices++) - { - XP_Bool isRead; - if (db->IsRead(view->GetAt(*indices), &isRead) == eSUCCESS) - { - if (!isRead) - { - selectable_p = TRUE; - break; - } - } - } - } - break; - case MSG_MarkMessagesUnread: - display_string = XP_GetString(MK_MSG_MARK_SEL_AS_UNREAD); - selectable_p = FALSE; - if (view && db) - { - for ( ; numIndices > 0 ; numIndices--, indices++) - { - XP_Bool isRead; - if (db->IsRead(view->GetAt(*indices), &isRead) == eSUCCESS) - { - if (isRead) - { - selectable_p = TRUE; - break; - } - } - } - } - break; - case MSG_MarkThreadRead: - display_string = XP_GetString(MK_MSG_MARK_THREAD_READ); - selectable_p = view && (numIndices == 1); - break; - case MSG_ToggleThreadKilled: - case MSG_ToggleThreadWatched: - selectable_p = view && (numIndices == 1); - break; - case MSG_UnmarkMessages: - case MSG_MarkMessages: - selectable_p = FALSE; - display_string = XP_GetString((command == MSG_MarkMessages) - ? MK_MSG_FLAG_MESSAGE : MK_MSG_UNFLAG_MESSAGE); - for ( ; numIndices > 0 ; numIndices--, indices++) - { - XP_Bool isMarked; // could check the view's flag array... - if ((view && db) && db->IsMarked(view->GetAt(*indices), &isMarked) == eSUCCESS) - { - if ((command == MSG_UnmarkMessages) ? isMarked : !isMarked) - { - selectable_p = TRUE; - break; - } - } - } - break; - case MSG_OpenMessageAsDraft: -#ifdef XP_MAC - if (folder != NULL && folder->IsNews()) - break; -#endif - case MSG_ForwardMessageInline: - case MSG_SaveMessagesAs: - // ### dmb add display strings! - selectable_p = view && (numIndices > 0); - break; - case MSG_RetrieveMarkedMessages: - display_string = XP_GetString(MK_MSG_RETRIEVE_FLAGGED); - selectable_p = (view != NULL && (folder->IsNews() || folder->GetIMAPFolderInfoMail())); - break; - case MSG_RetrieveSelectedMessages: - display_string = XP_GetString(MK_MSG_RETRIEVE_SELECTED); - selectable_p = view != NULL && (folder->IsNews() || folder->GetIMAPFolderInfoMail()) && (numIndices > 0); - break; - case MSG_Undo: - if (m_undoManager) - selectable_p = m_undoManager->CanUndo(); - break; - case MSG_Redo: - if (m_undoManager) - selectable_p = m_undoManager->CanRedo(); - break; - case MSG_CompressAllFolders: - display_string = XP_GetString(MK_MSG_COMPRESS_ALL_FOLDER); - selectable_p = TRUE; /* #### && any_folder_needs_compression */ - break; - case MSG_EmptyTrash: - display_string = XP_GetString(MK_MSG_EMPTY_TRASH_FOLDER); - selectable_p = TRUE; /* #### && trash_needs_emptied */ - break; - case MSG_ManageMailAccount: - display_string = XP_GetString(MK_MSG_MANAGE_MAIL_ACCOUNT); - selectable_p = (folder && folder->IsMail() && folder->HaveAdminUrl(MSG_AdminServer)); - break; - default: -// XP_ASSERT(0); - break; - } - if (selectable_pP) - *selectable_pP = selectable_p; - if (selected_pP) - { - if (selected_used_p) - { - if (selected_p) - *selected_pP = MSG_Checked; - else - *selected_pP = MSG_Unchecked; - } - else - { - *selected_pP = MSG_NotUsed; - } - } - if (display_stringP) - *display_stringP = display_string; - if (plural_pP) - *plural_pP = plural_p; - - return 0; -} - -/* static */int MSG_Pane::CompareViewIndices (const void *v1, const void *v2) -{ - MSG_ViewIndex i1 = *(MSG_ViewIndex*) v1; - MSG_ViewIndex i2 = *(MSG_ViewIndex*) v2; - return i1 - i2; -} - -MsgERR -MSG_Pane::AddToAddressBook(MSG_CommandType command, MSG_ViewIndex*indices, int32 numIndices, AB_ContainerInfo * destAB) -{ - MsgERR status = 0; - MessageDBView *view = GetMsgView(); - if (!view) - return eFAILURE; - - for (int32 i = 0; i < numIndices; i++) - { - switch (command) - { - case MSG_AddSender: - if (status == 0) - status = view->AddSenderToABByIndex(this, GetContext(), indices[i], (i == numIndices - 1), DisplayingRecipients(), destAB); - break; - case MSG_AddAll: - if (status == 0) - status = view->AddAllToABByIndex(this, GetContext(), indices[i], (i == numIndices - 1), destAB); - break; - default: - XP_ASSERT(FALSE); - } - } - - return status; -} - -MsgERR -MSG_Pane::ApplyCommandToIndices(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numIndices) -{ - MsgERR status = 0; - IDArray imapUids; - MessageDBView *view = GetMsgView(); - - if (!view) - return eFAILURE; - - XP_Bool thisIsImapThreadPane = GetFolder()->GetType() == FOLDER_IMAPMAIL; - - if (command == MSG_Delete) - status = TrashMessages (indices, numIndices); - else if (command == MSG_DeleteNoTrash) - status = DeleteMessages(GetFolder(), indices, numIndices); - else - { - for (int32 i = 0; i < numIndices; i++) - { - if (thisIsImapThreadPane) - imapUids.Add(view->GetAt(indices[i])); - - switch (command) - { - case MSG_MarkMessagesRead: - status = view->SetReadByIndex(indices[i], TRUE); - break; - case MSG_MarkMessagesUnread: - status = view->SetReadByIndex(indices[i], FALSE); - break; - case MSG_ToggleMessageRead: - status = view->ToggleReadByIndex(indices[i]); - break; - case MSG_MarkMessages: - status = view->MarkMarkedByIndex(indices[i], TRUE); - break; - case MSG_UnmarkMessages: - status = view->MarkMarkedByIndex(indices[i], FALSE); - break; - case MSG_MarkThreadRead: - status = view->SetThreadOfMsgReadByIndex(indices[i], TRUE); - break; - case MSG_AddSender: - if (status == 0) - status = view->AddSenderToABByIndex(GetContext(), indices[i], (i == numIndices - 1), DisplayingRecipients()); - break; - case MSG_AddAll: - if (status == 0) - status = view->AddAllToABByIndex(GetContext(), indices[i], (i == numIndices - 1)); - break; - default: - XP_ASSERT(FALSE); - break; - } - } - - if (thisIsImapThreadPane) - { - imapMessageFlagsType flags = kNoImapMsgFlag; - XP_Bool addFlags = FALSE; - XP_Bool isRead = FALSE; - - switch (command) - { - case MSG_MarkMessagesRead: - flags |= kImapMsgSeenFlag; - addFlags = TRUE; - break; - case MSG_MarkMessagesUnread: - flags |= kImapMsgSeenFlag; - addFlags = FALSE; - break; - case MSG_ToggleMessageRead: - { - flags |= kImapMsgSeenFlag; - view->GetDB()->IsRead(view->GetAt(indices[0]), &isRead); - if (isRead) - addFlags = TRUE; - else - addFlags = FALSE; - } - break; - case MSG_MarkMessages: - flags |= kImapMsgFlaggedFlag; - addFlags = TRUE; - break; - case MSG_UnmarkMessages: - flags |= kImapMsgFlaggedFlag; - addFlags = FALSE; - break; - default: - break; - } - - if (flags != kNoImapMsgFlag) // can't get here without thisIsImapThreadPane == TRUE - ((MSG_IMAPFolderInfoMail *) GetFolder())->StoreImapFlags(this, flags, addFlags, imapUids); - - } - } - return status; -} - - -MSG_COMMAND_CHECK_STATE -MSG_Pane::GetToggleStatus(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numindices) -{ - MSG_COMMAND_CHECK_STATE result = MSG_NotUsed; - if (GetCommandStatus(command, indices, numindices, NULL, &result, - NULL, NULL) != 0) { - return MSG_NotUsed; - } - return result; -} - - -MsgERR -MSG_Pane::SetToggleStatus(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices, - MSG_COMMAND_CHECK_STATE value) -{ - MsgERR status = eSUCCESS; - - MSG_COMMAND_CHECK_STATE old = GetToggleStatus(command, indices, numindices); - if (old == MSG_NotUsed) return eUNKNOWN; - if (old != value) - { - if ((status = DoCommand(command, indices, numindices)) == eSUCCESS) - { - if (GetToggleStatus(command, indices, numindices) != value) - { - XP_ASSERT(0); - return eUNKNOWN; - } - } - } - return status; -} - -ParseMailboxState *MSG_Pane::GetParseMailboxState(const char *folderName) -{ - MSG_Master *master = GetMaster(); - MSG_FolderInfo *folder = GetFolder(); - if (folder != NULL && folder->IsMail() && folder->GetMailFolderInfo()->GetPathname() && - folderName && !XP_STRCASECMP(folder->GetMailFolderInfo()->GetPathname(), folderName)) - return ((MSG_FolderInfoMail *)folder)->GetParseMailboxState(); - else - return (master) ? master->GetParseMailboxState(folderName) : 0; -} - -int MSG_Pane::BeginOpenFolderSock(const char *folderName, - const char *message_id, int32 msgnum, - void **folder_ptr) -{ - ParseMailboxState *parseState = GetParseMailboxState(folderName); - - if (parseState != NULL) - { - return parseState->BeginOpenFolderSock(folderName, message_id, msgnum, folder_ptr); - } - else - { -// XP_ASSERT(FALSE); - return MK_CONNECTED; - } -} - -int MSG_Pane::FinishOpenFolderSock(const char* folderName, - const char* message_id, - int32 msgnum, void** folder_ptr) -{ - ParseMailboxState *parseState = GetParseMailboxState(folderName); - if (parseState != NULL) - { - return parseState->ParseMoreFolderSock(folderName, message_id, msgnum, folder_ptr); - } - else - { - return MK_CONNECTED; - } -} - -void MSG_Pane::CloseFolderSock(const char* folderName, const char* message_id, - int32 msgnum, void* folder_ptr) -{ - MSG_Master *master = GetMaster(); - ParseMailboxState *parseState = GetParseMailboxState(folderName); - if (parseState != NULL) - { - parseState->CloseFolderSock(folderName, message_id, msgnum, folder_ptr); - master->ClearParseMailboxState(folderName); - } - else - { -// XP_ASSERT(FALSE); - } - -} - -MSG_ViewIndex MSG_Pane::GetThreadIndexOfMsg(MessageKey key) -{ - MessageDBView *view = GetMsgView(); - if (!view) - return MSG_VIEWINDEXNONE; - else - return view->ThreadIndexOfMsg(key); -} - -MsgERR MSG_Pane::GetKeyFromMessageId (const char *message_id, - MessageKey *outId) -{ - // Since it's relatively expensive to work in char* message ids, - // convert it to a MessageKey at the earliest opportunity for - // better database performance - MessageDBView *view = GetMsgView(); - if (!view || !view->GetDB()) return eUNKNOWN; - - *outId = view->GetDB()->GetMessageKeyForID (message_id); - return eSUCCESS; -} - -int MSG_Pane::MarkMessageKeyRead(MessageKey key, const char *xref) -{ - int status = 0; - MessageDBView *view = GetMsgView(); - if (!view) - return -1; - MessageDB *db = view->GetDB(); - if (db) - { - XP_Bool isRead; - if (db->IsRead(key, &isRead) == eSUCCESS && isRead) - return status; - } - - MSG_ViewIndex unusedIndex; - StartingUpdate(MSG_NotifyNone, 0, 0); - MsgERR err = view->SetReadByID (key, TRUE, &unusedIndex); - status = (err == eSUCCESS) ? 0 : -1; // PHP Need better error code - // if we're reading a mail message, set the summary file valid, - // because we've just read a message. - if (db && db->GetMailDB()) - db->GetMailDB()->SetSummaryValid(); - - MSG_FolderInfoNews *newsFolder = GetFolder() ? GetFolder()->GetNewsFolderInfo() : 0; - if (xref && newsFolder) - { - const char *rest = xref; - const char *group_start = 0, *group_end = 0; - while (XP_IS_SPACE (*rest)) - rest++; - group_start = rest; - XP_Bool done = FALSE; - while (!done) - { - char* name; - uint32 n; - switch (*rest) - { - case ':': - group_end = rest; - rest++; - break; - case ',': - case ' ': - case 0: - n = 0; - if (group_end) - { - unsigned long naturalLong; // %l is 64 bits on OSF1 - sscanf ( group_end+1, "%lu", &naturalLong); - n = (uint32) naturalLong; - } - if (n > 0) - { - MSG_FolderInfoNews * crossPostFolder; - name = (char *) XP_ALLOC (group_end - group_start + 1); - if (! name) - { - status = MK_OUT_OF_MEMORY; - done = TRUE; - } - XP_MEMCPY (name, group_start, group_end - group_start); - name[group_end - group_start] = 0; - - crossPostFolder = - m_master->FindNewsFolder(newsFolder->GetHost(), - name, FALSE); - if (crossPostFolder) - { - crossPostFolder->GetSet()->Add(n); - } - XP_FREE (name); - } - - if (*rest == 0) - done = TRUE; - rest++; - group_start = rest; - group_end = 0; - break; - default: - rest++; - break; - } - } - } - EndingUpdate(MSG_NotifyNone, 0, 0); - return status; -} - - -MsgERR MSG_Pane::ViewNavigate(MSG_MotionType motion, - MSG_ViewIndex startIndex, - MessageKey * resultKey, MSG_ViewIndex * resultIndex, - MSG_ViewIndex * pThreadIndex, - MSG_FolderInfo ** pFolderInfo) -{ - MsgERR ret = eSUCCESS; - MessageDBView *view = GetMsgView(); - MSG_FolderInfo *folder = GetFolder(); - // *** After enabling the Backtrack feature on a stand alone Message pane, - // it is possible to ask for the navigate status without a view. - if (!folder) return eNullView; - if (view) - { - switch (motion) - { - case MSG_Back: - *resultKey = GetBacktrackManager()->GoBack(pFolderInfo); - if (pFolderInfo && *pFolderInfo) - *resultIndex = MSG_VIEWINDEXNONE; - else - *resultIndex = view->FindKey(*resultKey, TRUE); - return eSUCCESS; - case MSG_Forward: - *resultKey = GetBacktrackManager()->GoForward(pFolderInfo); - if (pFolderInfo && *pFolderInfo) - *resultIndex = MSG_VIEWINDEXNONE; - else - *resultIndex = view->FindKey(*resultKey, TRUE); - return eSUCCESS; - case MSG_NextFolder: - if (pFolderInfo) - { - *pFolderInfo = folder; - do - { - *pFolderInfo = m_master->FindNextFolder(*pFolderInfo); - if (*pFolderInfo && (*pFolderInfo)->IsNews()) - { - MSG_FolderInfoNews *newsFolder = (*pFolderInfo)->GetNewsFolderInfo(); - if (newsFolder->IsCategory() || !newsFolder->IsSubscribed()) - continue; - } - break; - } - while (*pFolderInfo); - } - *resultIndex = MSG_VIEWINDEXNONE; - return eSUCCESS; - case MSG_NextUnreadGroup: - // It would be better if this happened in the background... - if (view && view->GetDB()) - view->GetDB()->MarkAllRead(GetContext()); - *resultIndex = MSG_VIEWINDEXNONE; - *resultKey = MSG_MESSAGEKEYNONE; - ret = eSUCCESS; - break; - default: - ret = view->Navigate(startIndex, motion, resultKey, - resultIndex, pThreadIndex); - } - } - - MSG_NCFValue crossFolderPref = GetPrefs()->GetNavCrossesFolders(); - if (motion == MSG_NextUnreadGroup) - crossFolderPref = MSG_NCFDoIt; - - if (ret == eSUCCESS && resultIndex && *resultIndex == MSG_VIEWINDEXNONE && crossFolderPref != MSG_NCFDont - && NavigationGoesToNextFolder(motion)) - { - MSG_FolderInfo *nextFolderWithUnread = m_master->FindNextFolderWithUnread(folder); - MSG_FolderInfo *curCategoryContainer = MSG_GetCategoryContainerForCategory(folder); - if (nextFolderWithUnread && (!curCategoryContainer || curCategoryContainer != MSG_GetCategoryContainerForCategory(nextFolderWithUnread)) - && crossFolderPref == MSG_NCFPrompt) - { - const char *prompt = XP_GetString (MK_MSG_ADVANCE_TO_NEXT_FOLDER); - char *message = PR_smprintf (prompt, nextFolderWithUnread->GetPrettiestName()); - if (message) - { - XP_Bool continueNavigate = FE_Confirm (GetContext(), message); - XP_FREE(message); - if (!continueNavigate) - nextFolderWithUnread = NULL; - } - } - if (pFolderInfo) - *pFolderInfo = nextFolderWithUnread; - } - return ret; -} - -MsgERR MSG_Pane::GetNavigateStatus(MSG_MotionType motion, MSG_ViewIndex index, - XP_Bool * selectable_p, - const char ** display_string) -{ - MsgERR ret = eSUCCESS; - MessageDBView *view = GetMsgView(); - MSG_FolderInfo *folder = GetFolder(); - - if (!view && selectable_p) - *selectable_p = FALSE; - - if (view) - { - switch (motion) - { - case MSG_Back: - if (selectable_p) - *selectable_p = GetBacktrackManager()->CanGoBack(); - if (display_string) - *display_string = XP_GetString(MK_MSG_BACKTRACK); - return eSUCCESS; - case MSG_Forward: - if (selectable_p) - *selectable_p = GetBacktrackManager()->CanGoForward(); - if (display_string) - *display_string = XP_GetString(MK_MSG_GO_FORWARD); - return eSUCCESS; - default: - break; - } - - ret = view->GetNavigateStatus(motion, index, selectable_p, display_string); - // - if (selectable_p && folder && (folder->GetNumUnread() + folder->GetNumPendingUnread())== 0 && (motion == MSG_NextUnreadMessage || motion == MSG_NextUnreadThread)) - *selectable_p = FALSE; - } - // even though Later goes to next folder, enabling it is based on whether there's anything in the view. - MSG_NCFValue crossFolderPref = GetPrefs()->GetNavCrossesFolders(); - if (motion == MSG_NextUnreadGroup) - crossFolderPref = MSG_NCFDoIt; - - if (ret == eSUCCESS && selectable_p && !*selectable_p && NavigationGoesToNextFolder(motion) && - crossFolderPref != MSG_NCFDont && motion != MSG_LaterMessage) - { - MSG_FolderInfo *nextFolderWithUnread = m_master->FindNextFolderWithUnread(folder); - if (nextFolderWithUnread != NULL) - *selectable_p = TRUE; - } - return ret; -} - - -/* returns a folder object of the given magic type, creating it if necessary. - Context must be a mail window. */ -MSG_FolderInfo * -MSG_Pane::FindFolderOfType(int type) -{ - MSG_FolderInfo* folder = NULL; - XP_ASSERT (type == MSG_FOLDER_FLAG_INBOX || - type == MSG_FOLDER_FLAG_TRASH || - type == MSG_FOLDER_FLAG_DRAFTS || - type == MSG_FOLDER_FLAG_QUEUE || - type == MSG_FOLDER_FLAG_SENTMAIL || - type == MSG_FOLDER_FLAG_TEMPLATES); - - int num = GetMaster()->GetFolderTree()->GetFoldersWithFlag(type, &folder, 1); - - // If we didn't find the folder - if (!folder || num < 1) - { - // should be changed later when we figure out how to find - // online sent, drafts, templates, etc. - if (GetMaster()->GetIMAPHostTable()) - { - // IMAP folder / server - // Don't try to create these automatically. ? - } - else - { - // Local (POP) - folder = GetMaster()->FindMagicMailFolder(type, TRUE); - } - - if (folder) // folder may not exist - and we don't create yet. - { - XP_ASSERT (folder); - XP_ASSERT (folder->GetFlags() & type); - XP_ASSERT (folder->GetFlags() & MSG_FOLDER_FLAG_MAIL); - XP_ASSERT (! (folder->GetFlags() & MSG_FOLDER_FLAG_NEWSGROUP)); - XP_ASSERT (! (folder->GetFlags() & MSG_FOLDER_FLAG_NEWS_HOST)); - } - } - return folder; -} - - -MSG_FolderInfo* -MSG_Pane::FindMailFolder(const char* pathname, XP_Bool createIfMissing) -{ - return GetMaster()->FindMailFolder(pathname, createIfMissing); -} - - -MsgERR MSG_Pane::MarkReadByDate (time_t startDate, time_t endDate) -{ - MsgERR err = eUNKNOWN; // ### dmb - IDArray thoseMarked; - - MessageDBView *view = GetMsgView(); - if (view && view->GetDB()) - { - UndoMarkChangeListener changeListener(this, GetFolder(), MSG_MarkMessagesRead); - // The destructor of UndoMarkChangeListener will add the undoAction - // to the undo Manager - StartingUpdate(MSG_NotifyNone, 0, 0); - // Add the changeListener to the view - view->Add(&changeListener); - err = view->GetDB()->MarkReadByDate(startDate, endDate, GetContext(), &thoseMarked); - // Remove the changeListener from the view - view->Remove(&changeListener); - EndingUpdate(MSG_NotifyNone, 0, 0); - } - - if (err == 0) - { - if (GetFolder()->GetType() == FOLDER_IMAPMAIL) - ((MSG_IMAPFolderInfoMail *) GetFolder())->StoreImapFlags(this, kImapMsgSeenFlag, TRUE, thoseMarked); - } - - return err; -} - - -#ifdef XP_UNIX -void -MSG_Pane::IncorporateFromFile(XP_File infid, - void (* donefunc)(void*, XP_Bool), - void* doneclosure) -{ - MWContext *context = GetContext(); - MSG_FolderInfo* folder; - msg_incorporate_state *state; - int size; - char* buf; - int l; - int status = 0; - - folder = FindFolderOfType(MSG_FOLDER_FLAG_INBOX); - - XP_ASSERT (folder->IsMail()); - if (!folder->IsMail()) - { - XP_ASSERT(FALSE); - return ; // shouldn't call GetNewMail on non-mail pane. - } - - msg_InterruptContext(context, FALSE); - - state = CreateIncorporateState (); - if (!state) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - BeginMailDelivery(); - - state->expect_envelope = TRUE; - state->expect_multiple = TRUE; - state->writestate.inhead = TRUE; - - status = OpenDestFolder(state); - if (status < 0) - goto FAIL; - - size = 512 * 2; - buf=(char *)NULL; - do - { - size /= 2; - buf = (char*)XP_ALLOC(size); - } - while (buf == NULL && size > 0); - if (!buf) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - for (;;) - { - l = XP_FileRead(buf, size, infid); - if (l < 0) - { - status = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - goto FAIL; - } - if (l == 0) break; - - /* Warning: don't call msg_incorporate_stream_write() here, because - that uses msg_incorporate_handle_pop_line() instead of - msg_incorporate_handle_line(), which will break -- in the pop - case, we hack '.' at the beginning of the line, and when - incorporating from a file, we don't. - */ - l = msg_LineBuffer (buf, l, - &state->ibuffer, - &state->ibuffer_size, - &state->ibuffer_fp, - TRUE, msg_incorporate_handle_line, state); - - if (l < 0) - { - status = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - goto FAIL; - } - } - - FAIL: - FREEIF(buf); - if (status < 0) - state->status = status; - status = CloseDestFolder(state); - - if (state->incparsestate) - { - state->incparsestate->DoneParsingFolder(); - } -// status = msg_end_incorporate (state); - XP_FREE (state); - if (status < 0) - { - FE_Alert(context, XP_GetString(status)); - } - if (donefunc) - (*donefunc)(doneclosure, status >= 0); - EndMailDelivery(); -} -#endif - - -MsgERR -MSG_Pane::GetNewNewsMessages(MSG_Pane *parentPane, MSG_FolderInfo *folder, XP_Bool getOld /* = FALSE */) -{ - char *url = folder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - if (!url) - return eOUT_OF_MEMORY; - - MessageDBView *view = parentPane->GetMsgView(); - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - XP_ASSERT(newsFolder); - const char* groupname = newsFolder->GetNewsgroupName(); - MSG_Master *master = GetMaster(); - URL_Struct *url_struct; - url_struct = NET_CreateURLStruct(url, NET_DONT_RELOAD); - ListNewsGroupState * listState = new ListNewsGroupState(url, groupname, this); - listState->SetMaster(master); - listState->SetView(view); - listState->SetGetOldMessages(getOld); // get messages below highwater mark if we don't have them - newsFolder->SetListNewsGroupState(listState); - - ClearNewInOpenFolders(folder); - - int status = GetURL(url_struct, FALSE); - if (status == MK_INTERRUPTED || status == MK_OFFLINE) - { - StartingUpdate(MSG_NotifyAll, 0, 0); - EndingUpdate(MSG_NotifyAll, 0, 0); - FE_PaneChanged(this, TRUE, MSG_PaneNotifyFolderLoaded, (uint32) folder); - } - FREEIF(url); - return (status >= 0) ? eSUCCESS : status; -} - -void MSG_Pane::ClearNewInOpenFolders(MSG_FolderInfo *folderOfGetNewMsgs) -{ - MSG_ThreadPane *eachPane; - FolderType folderType = folderOfGetNewMsgs->GetType(); - - for (eachPane = (MSG_ThreadPane *) m_master->FindFirstPaneOfType(MSG_THREADPANE); eachPane; - eachPane = (MSG_ThreadPane *) m_master->FindNextPaneOfType(eachPane->GetNextPane(), MSG_THREADPANE)) - { - XP_Bool clearNewBits = FALSE; - MSG_FolderInfo *curFolder = eachPane->GetFolder(); - - if (!curFolder) // FE is clearing current folder - wow! - continue; - - switch (folderType) - { - case FOLDER_MAIL: - // if both local folders, clear new bits. - if (curFolder->GetType() == folderType) - clearNewBits = TRUE; - break; - case FOLDER_IMAPMAIL: - { - MSG_IMAPFolderInfoMail *curIMAPFolder = curFolder->GetIMAPFolderInfoMail(); - MSG_IMAPFolderInfoMail *imapFolderOfGetNewMsgs = folderOfGetNewMsgs->GetIMAPFolderInfoMail(); - - if (curIMAPFolder && imapFolderOfGetNewMsgs) - { - // if both are imap folders on the same host, clear new bits. - // if public folder, only clear new bit on that folder; - if (curIMAPFolder->GetIMAPHost() == imapFolderOfGetNewMsgs->GetIMAPHost()) - { - if (imapFolderOfGetNewMsgs->GetFlags() & MSG_FOLDER_FLAG_IMAP_PUBLIC) - clearNewBits = (curFolder == folderOfGetNewMsgs); - else - clearNewBits = TRUE; - } - } - break; - } - case FOLDER_NEWSGROUP: - clearNewBits = (curFolder == folderOfGetNewMsgs); - break; - default: - clearNewBits = FALSE; - break; - } - if (clearNewBits) - eachPane->ClearNewBits(TRUE); - } -} - -MsgERR -MSG_Pane::GetNewMail(MSG_Pane* /*parentPane*/, MSG_FolderInfo *folder) -{ - char *url; - URL_Struct *url_struct; - MWContext *context = GetContext(); - - if (NET_IsOffline()) // let master go online, so IMAP gets a chance. - { - m_master->SynchronizeOffline(this, FALSE, TRUE, TRUE, FALSE, FALSE); - return eSUCCESS; - } - if (!MSG_Biff_Master::NikiCallingGetNewMail()) - MSG_SetBiffStateAndUpdateFE(MSG_BIFF_NoMail); // The user is clicking get mail, so clear notification - - MSG_FolderInfo *folderToUpdate = NULL; - MSG_FolderInfoMail *mailFolder = NULL; - MSG_IMAPFolderInfoMail *imapFolder = NULL; - - if (folder) - { - MSG_IMAPFolderInfoContainer *imapContainer = NULL; - - imapFolder = folder->GetIMAPFolderInfoMail(); - if (imapFolder) - { - // get new mail on public folder just updates that folder - if (imapFolder->GetFlags() & MSG_FOLDER_FLAG_IMAP_PUBLIC) - folderToUpdate = imapFolder; - else - imapContainer = imapFolder->GetIMAPContainer(); - } - else if (folder->GetType() == FOLDER_IMAPSERVERCONTAINER) - imapContainer = (MSG_IMAPFolderInfoContainer *) folder; - - if (imapContainer) - imapContainer->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, &folderToUpdate, 1); - } - - if (!folderToUpdate) - folderToUpdate = FindFolderOfType (MSG_FOLDER_FLAG_INBOX); - - if (GetPrefs()->GetMailServerIsIMAP4()) - { - if (!folderToUpdate) - { - XP_ASSERT(FALSE); - return 0; - } - imapFolder = folderToUpdate->GetIMAPFolderInfoMail(); - - if (imapFolder) - { - if (imapFolder->GetGettingMail() && MSG_Biff_Master::NikiCallingGetNewMail()) - return eSUCCESS; - ClearNewInOpenFolders(imapFolder); - imapFolder->StartUpdateOfNewlySelectedFolder(this,FALSE,NULL); - } - // SetGettingNewMail gets set in StartUpdateOfNewlyselectedFolder - return 0; - } - - - mailFolder = folderToUpdate->GetMailFolderInfo(); - if (mailFolder && mailFolder->GetGettingMail() && MSG_Biff_Master::NikiCallingGetNewMail()) - return eSUCCESS; // exit if from biff, otherwise we leave progress dialog hanging forever - - const char *host = GetPrefs()->GetPopHost(); - if (!host || !*host) - { -#ifdef XP_MAC - FE_EditPreference(PREF_PopHost); -#endif - return MK_MSG_NO_POP_HOST; - } - url = (char *) XP_ALLOC (XP_STRLEN (host) + 10 + - (GetUIDL() ? XP_STRLEN(GetUIDL()) + 10 : 0)); - if (!url) - return MK_OUT_OF_MEMORY; - XP_STRCPY (url, "pop3://"); - XP_STRCAT (url, host); - if (GetUIDL()) { - XP_STRCAT(url, "?uidl="); - XP_STRCAT(url, GetUIDL()); - } - - url_struct = NET_CreateURLStruct (url, NET_NORMAL_RELOAD); - XP_FREE (url); - if (!url_struct) - return MK_OUT_OF_MEMORY; - url_struct->internal_url = TRUE; - - url_struct->pre_exit_fn = MSG_Pane::GetNewMailExit; - - // For POP, we must be able to write to the Inbox in order to GetNewMail - if (folderToUpdate->AcquireSemaphore(this) != 0) - { - XP_FREE(url_struct); - return 0; - } - if (mailFolder) - mailFolder->SetGettingMail(TRUE); - /* If there is a biff context around, interrupt it. If we're in the - middle of doing a biff check, we don't want that to botch up our - getting of new mail. */ - msg_InterruptContext(XP_FindContextOfType(context, MWContextBiff), FALSE); - GetURL (url_struct, FALSE); - return 0; -} - -/* static */ -void MSG_Pane::GetNewMailExit (URL_Struct *URL_s, int status, MWContext* /*window_id*/) -{ - if ((status >= 0) && (URL_s->msg_pane != NULL)) - { - MSG_Pane *pane = URL_s->msg_pane; - // this url chain is for going on and offline, with get new mail as - // part of the process. Normally, it should be NULL. - if (pane->GetURLChain()) - pane->GetURLChain()->GetNextURL(); - } - - if (URL_s->msg_pane) - { - MSG_FolderInfo *inbox = URL_s->msg_pane->FindFolderOfType(MSG_FOLDER_FLAG_INBOX); - if (inbox) - { - inbox->ReleaseSemaphore (URL_s->msg_pane); - MSG_FolderInfoMail *mailF = NULL; - mailF = inbox->GetMailFolderInfo(); - if (mailF) - mailF->SetGettingMail(FALSE); - } - } - else - XP_ASSERT(FALSE); // we didn't unlock the folder. very bad -} - - -XP_Bool MSG_Pane::BeginMailDelivery() -{ - // should create parse state. - MailDB *mailDB = NULL; - MSG_FolderInfoMail* inbox; - if (GetUIDL()) { - inbox = (MSG_FolderInfoMail*) GetFolder(); - if (!inbox) return FALSE; - } else { - inbox = (MSG_FolderInfoMail *) FindFolderOfType(MSG_FOLDER_FLAG_INBOX); - } - - if (!inbox) - { - char *inboxName = m_master->GetPrefs()->MagicFolderName (MSG_FOLDER_FLAG_INBOX); - inbox = (MSG_FolderInfoMail *) FindMailFolder(inboxName, TRUE); - XP_FREE(inboxName); - } - if (!inbox) - return FALSE; - - ParseNewMailState *parseMailboxState = new ParseNewMailState(m_master, inbox); - if (parseMailboxState) - { - // Tell the FE to open the GetNewMail dialog - FE_PaneChanged (this, FALSE, MSG_PanePastPasswordCheck, 0); - - parseMailboxState->SetMaster(m_master); - parseMailboxState->SetFolder(inbox); // so we can update counts - parseMailboxState->SetPane(this); - - parseMailboxState->SetIncrementalUpdate(GetUIDL() == NULL); - if (GetUIDL()) { - parseMailboxState->DisableFilters(); - } - if (MailDB::Open(parseMailboxState->GetMailboxName(), FALSE, &mailDB) != eSUCCESS) - { - XP_FileType tmptype; - char * tmpdbName = FE_GetTempFileFor(GetContext(), parseMailboxState->GetMailboxName(), xpMailFolderSummary, - &tmptype); - if (tmpdbName) - if (MailDB::Open(tmpdbName, TRUE, &mailDB, TRUE) == eSUCCESS) - parseMailboxState->SetUsingTempDB(TRUE, tmpdbName); - } - - parseMailboxState->SetDB(mailDB); - - parseMailboxState->SetContext(GetContext()); - // parseMailboxState->SetView(GetMsgView()); - m_master->SetParseMailboxState(parseMailboxState); - } - else - return FALSE; - - return TRUE; -} - - -void MSG_Pane::EndMailDelivery() -{ - m_master->ClearParseMailboxState(); -} - - -void* -MSG_Pane::IncorporateBegin(FO_Present_Types /*format_out*/, - char* pop3_uidl, - URL_Struct* url, - uint32 flags) -{ - char *sep = msg_GetDummyEnvelope(); - msg_incorporate_state *state; - int status; - state = CreateIncorporateState (); - if (!state) - return 0; - - status = OpenDestFolder(state); - - state->writestate.flags = flags; - - /* Write out a dummy mailbox (From_) line, since POP doesn't give us one. */ - if (status >= 0) - status = msg_incorporate_handle_line (sep, XP_STRLEN (sep), state); - - if (status < 0) - { - XP_FREE (state); - return 0; - } - XP_ASSERT(state->mangle_from && state->writestate.inhead); - state->mangle_from = TRUE; - state->writestate.inhead = TRUE; - state->writestate.uidl = (pop3_uidl ? XP_STRDUP (pop3_uidl) : 0); - - if (GetUIDL() && url) { - // We're going to download the rest of a partial message. Set things - // up so that when that finishes, we delete the partial stub and - // show the full thing. - if (!url->msg_pane) - url->msg_pane = this; - XP_ASSERT(url->msg_pane == this); - if (url->msg_pane == this) { - url->pre_exit_fn = MSG_Pane::IncorporateShufflePartial_s; - } - } - - return state; -} - -#ifdef XP_MAC -XP_File gIncorporateFID = NULL; -const char* gIncorporatePath = NULL; -#endif - -msg_incorporate_state * -MSG_Pane::CreateIncorporateState () -{ - msg_incorporate_state *state; - MSG_FolderInfoMail* inbox; - - if (GetUIDL()) { - /* We're filling in a partial message. Treat the current folder as the - "inbox", since that's the only folder we want to "inc" to now. - The fact that GetUIDL returns something means our message may be partial, - but once the state is initialized always check for MSG_FLAG_PARTIAL in the - state flags instead. We always save UIDLs now. */ - inbox = (MSG_FolderInfoMail*) GetFolder(); - } else { - inbox = (MSG_FolderInfoMail *) FindFolderOfType(MSG_FOLDER_FLAG_INBOX); - } - - if (!inbox) - return 0; - - state = XP_NEW_ZAP (msg_incorporate_state); - if (!state) - return 0; - - state->context = m_context; - state->inbox = inbox; - state->pane = this; - - state->mangle_from = FALSE; - state->writestate.inhead = FALSE; - return state; -} - -// forward declaration -#ifndef XP_OS2 -static -#else -extern "OPTLINK" -#endif -int32 msg_incorporate_handle_pop_line(char* line, uint32 length, void* closure); - -MsgERR -MSG_Pane::IncorporateWrite(void*closure, const char*block, int32 length) -{ - msg_incorporate_state *state = (msg_incorporate_state *) closure; - return msg_LineBuffer (block, length, - &state->ibuffer, - &state->ibuffer_size, - &state->ibuffer_fp, - TRUE, msg_incorporate_handle_pop_line, state); -} - - -MsgERR -MSG_Pane::IncorporateComplete(void* closure) -{ - msg_incorporate_state *state = (msg_incorporate_state *) closure; - - /* better have been a full CRLF on that last line... */ - XP_ASSERT(state && !state->ibuffer_fp); - - const char* dest = state->dest; - int status = 0; - status = CloseDestFolder(state); - if (state->status < 0) - status = state->status; - - if (status < 0 && dest) - { - XP_FileTruncate(dest, xpMailFolder, state->start_length); - if (state->incparsestate) - { - state->incparsestate->AbortNewHeader(); - state->incparsestate->DoneParsingFolder(); - if (m_master) - m_master->ClearParseMailboxState(); - // f->force_reparse_hack = TRUE; - // msg_SelectedMailSummaryFileChanged(state->context, NULL); - // msg_SaveMailSummaryChangesNow(state->context); - // f->first_incorporated_offset = 2; /* Magic value### */ - } - } - else - { - state->incparsestate->SetIncrementalUpdate(TRUE); - state->incparsestate->DoneParsingFolder(); - } - - FREEIF (state->ibuffer); - FREEIF (state->writestate.uidl); - XP_FREE (state); - return status; -} - - -MsgERR -MSG_Pane::IncorporateAbort(void* closure, int status) -{ - msg_incorporate_state* state = (msg_incorporate_state*) closure; - XP_ASSERT(state); - if (state) state->status = status; - return IncorporateComplete(closure); -} - -void -MSG_Pane::ClearSenderAuthedFlag(void* closure) -{ - msg_incorporate_state* state = (msg_incorporate_state*) closure; - XP_ASSERT(state); - if (state) - state->writestate.flags &= ~MSG_FLAG_SENDER_AUTHED; -} - - -void -MSG_Pane::IncorporateShufflePartial_s(URL_Struct *url, int status, - MWContext *context) -{ - XP_ASSERT(url && url->msg_pane); - if (url && url->msg_pane) { - url->msg_pane->IncorporateShufflePartial(url, status, context); - } -} - - -void -MSG_Pane::IncorporateShufflePartial(URL_Struct * /* url */, int /* status */, - MWContext * /* context */) -{ - // The real version of this is in MSG_MessagePane. This one really - // ought never get called. - XP_ASSERT(0); - FREEIF(m_incUidl); -} - -int -MSG_Pane::CloseDestFolder(msg_incorporate_state* state) -{ - int status = 0; - if (state->dest == NULL) - return 0; - if (state->writestate.fid) { - if (XP_FileClose(state->writestate.fid) != 0) { - status = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - state->status = status; - } - state->writestate.fid = 0; - } - - if (state->writestate.writefunc) { - state->writestate.writefunc = NULL; - } else { - /* Make sure the folder appears in our lists. */ - // ### DMB - This won't do that...but it will create the folder - (void) FindMailFolder(state->dest, TRUE); - - } - return status; -} - -int -MSG_Pane::OpenDestFolder(msg_incorporate_state* state) -{ - int status; - XP_StatStruct folderst; - status = CloseDestFolder(state); - if (status < 0) - return status; - - state->dest = state->inbox->GetPathname(); - state->destName = state->inbox->GetName(); - state->writestate.fid = NULL; - - if (!XP_Stat((char*) state->dest, &folderst, xpMailFolder)) { - state->writestate.position = folderst.st_size; - } else { - state->writestate.position = 0; - } - state->start_length = state->writestate.position; - if (state->writestate.fid == NULL) { - state->writestate.fid = XP_FileOpen(state->dest, - xpMailFolder, XP_FILE_APPEND_BIN); - } - if (!state->writestate.fid) { - state->status = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - return state->status; - } - - - /* Now, if we're in the folder that's going to get this message, then set - things up so that as we write new messages out to it, we also send the - lines to the parsing code to update our message list. */ - if (state->incparsestate == NULL) - { - // ### dmb - hack cast - do we need to add typesafe accessor - // in m_master? - ParseNewMailState *parseMailboxState = - (ParseNewMailState *) m_master->GetMailboxParseState(); - - state->incparsestate = parseMailboxState; - parseMailboxState->BeginParsingFolder(state->writestate.position); - - if (state->incparsestate) - { - state->writestate.writefunc = ParseMailboxState::LineBufferCallback; - state->writestate.writeclosure = state->incparsestate; - } - } - return 0; -} - - -static int32 -msg_incorporate_handle_line(char* line, uint32 length, void* closure) -{ - msg_incorporate_state* state = (msg_incorporate_state*) closure; - char* line2 = NULL; - int status; - - if (length > 5 && line[0] == 'F' && XP_STRNCMP(line, "From ", 5) == 0) - { - if ( -#ifdef MANGLE_INTERNAL_ENVELOPE_LINES - !state->mangle_from || -#endif /* MANGLE_INTERNAL_ENVELOPE_LINES */ - state->expect_multiple) - { - /* This is the envelope, and we should treat it as such. */ - state->writestate.inhead = TRUE; -#ifdef EMIT_CONTENT_LENGTH - state->writestate.header_bytes = 0; -#endif /* EMIT_CONTENT_LENGTH */ - if (!state->expect_multiple) - state->mangle_from = TRUE; - state->expect_envelope = FALSE; - } -#ifdef MANGLE_INTERNAL_ENVELOPE_LINES - else - { - /* Uh oh, we got a line back from the POP3 server that began with - "From ". This must be a POP3 server that is not sendmail based - (maybe it's MMDF, or maybe it's non-Unix.) We must follow the - Usual Mangling Conventions, since we are using the - BSD mailbox format, and if we let this line get out to the folder - like this, we (or other software) won't be able to parse it later. - - Note: it is correct to mangle all lines beginning with "From ", - not just those that look like parsable message delimiters. - Though we might cope, other software won't. - */ - line2 = (char *) XP_ALLOC (length + 2); - if (!line2) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - line2[0] = '>'; - XP_MEMCPY (line2+1, line, length); - line2[length+1] = 0; - line = line2; - length++; - } -#endif /* MANGLE_INTERNAL_ENVELOPE_LINES */ - } - - if (state->expect_envelope) - { - /* We're doing movemail, we should have received an envelope - as the first line, and we didn't. So make one up... */ - char *sep = msg_GetDummyEnvelope(); - status = msg_incorporate_handle_line(sep, XP_STRLEN(sep), state); - if (status < 0) - return status; - } - - if (state->writestate.inhead) - { - status = msg_GrowBuffer(state->headers_length + length + 1, sizeof(char), - 1024, &(state->headers), - &(state->headers_maxlength)); - if (status < 0) - goto FAIL; - XP_MEMCPY(state->headers + state->headers_length, line, length); - state->headers_length += length; - if (line[0] == CR || line[0] == LF || length == 0) - { - char *ibuffer = NULL; - uint32 ibuffer_size = 0; - uint32 ibuffer_fp = 0; - state->headers[state->headers_length] = '\0'; - if (state->writestate.fid) - XP_FileFlush(state->writestate.fid); - status = msg_LineBuffer(state->headers, state->headers_length, &ibuffer, - &ibuffer_size, &ibuffer_fp, FALSE, - msg_writemsg_handle_line, &(state->writestate)); - if (status >= 0 && state->writestate.inhead) { - /* Looks like that last blank line didn't make it to - msg_writemsg_handle_line. This can happen if msg_LineBuffer isn't - quite sure that a line ended yet and is waiting for more data. - We'll shove another blank line directly to msg_writemsg_handle_line, - which ought to fix things up. */ - XP_ASSERT(ibuffer_fp == 1); /* We do have some data that didn't make - it out, right? */ - msg_writemsg_handle_line(line, length, &(state->writestate)); - XP_ASSERT(!state->writestate.inhead); /* It got the blank line this - time, right? */ - } - FREEIF(ibuffer); - FREEIF(state->headers); - state->headers_length = 0; - state->headers_maxlength = 0; - } - } - else - { - status = msg_writemsg_handle_line(line, length, &(state->writestate)); - } -FAIL: - FREEIF(line2); - return status; -} - - -#ifndef XP_OS2 -static -#else -extern "OPTLINK" -#endif - -int32 msg_incorporate_handle_pop_line(char* line, uint32 length, void* closure) -{ - if (!NET_POP3TooEarlyForEnd(0) && (length > 0 && line[0] == '.')) - { - /* Take off the first dot. */ - line++; - length--; - - if (length == LINEBREAK_LEN && - !XP_STRNCMP (line, LINEBREAK, LINEBREAK_LEN)) - /* This line contained only a single dot, which means it was - the "end of message" marker. This means this function will - not be called again for this message (it better not! That - would mean something wasn't properly quoting lines.) - */ - return 0; - } - return msg_incorporate_handle_line(line, length, closure); -} - -#ifndef XP_OS2 -static -#else -extern "OPTLINK" -#endif -int32 msg_writemsg_handle_line(char* line, uint32 length, void* closure) -{ - msg_write_state* state = (msg_write_state*) closure; - char* buf = 0; - uint32 buflength; - if (state->numskip > 0) { - state->numskip--; - return 0; - } - if (state->inhead) { - - if (line[0] == CR || line[0] == LF || length == 0) { - - /* If we're at the end of the headers block, write out the - X-Mozilla-Status and X-UIDL headers. - */ - uint16 flags = 0; - XP_Bool write_status_header = TRUE; // ###DMB: was FALSE - - // remember this to set statusOffset in DB. - state->statusPosition = state->position; - - flags = state->flags; - - if (write_status_header) - { - buf = PR_smprintf(X_MOZILLA_STATUS_FORMAT LINEBREAK, flags); - if (buf) { - buflength = X_MOZILLA_STATUS_LEN + 6 + LINEBREAK_LEN; - XP_ASSERT(buflength == XP_STRLEN(buf)); - /* don't increment state->header_bytes here; that applies to - the headers in the old file, not the new one. */ - if (XP_FileWrite(buf, buflength, state->fid) < buflength) { - XP_FREE(buf); - return MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - if (state->writefunc) { - (*state->writefunc)(buf, buflength, state->writeclosure); - } - state->position += buflength; - XP_FREEIF(buf); - } - // - uint32 flags2 = (state->flags & - (MSG_FLAG_MDN_REPORT_NEEDED | - MSG_FLAG_MDN_REPORT_SENT | - MSG_FLAG_TEMPLATE)); - buf = PR_smprintf(X_MOZILLA_STATUS2_FORMAT LINEBREAK, - flags2); - if (buf) - { - buflength = X_MOZILLA_STATUS2_LEN + 10 + LINEBREAK_LEN; - XP_ASSERT(buflength == XP_STRLEN(buf)); - /* don't increment state->header_bytes here; that applies to - the headers in the old file, not the new one. */ - if (XP_FileWrite(buf, buflength, state->fid) < buflength) { - XP_FREE(buf); - return MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - if (state->writefunc) { - (*state->writefunc)(buf, buflength, state->writeclosure); - } - state->position += buflength; - XP_FREEIF(buf); - } - } - - if (state->uidl) - { - /* UIDLs are very useful when leaving messages on the server. */ - buflength = X_UIDL_LEN + 2 + XP_STRLEN (state->uidl) + LINEBREAK_LEN; - buf = (char*) XP_ALLOC(buflength + 1); - if (buf) { - XP_STRCPY (buf, X_UIDL ": "); - XP_STRCAT (buf, state->uidl); - XP_STRCAT (buf, LINEBREAK); - XP_ASSERT(buflength == XP_STRLEN(buf)); - /* don't increment state->header_bytes here; that applies to - the headers in the old file, not the new one. */ - if (XP_FileWrite(buf, buflength, state->fid) < buflength) { - XP_FREE(buf); - return MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - if (state->writefunc) { - (*state->writefunc)(buf, buflength, state->writeclosure); - } - state->position += buflength; - XP_FREE(buf); - } - } - - - /* Now fall through to write out the blank line */ - state->inhead = FALSE; - } - else - { - /* If this is the X-Mozilla-Status header, don't write it (since we - will rewrite it again at the end of the header block.) */ - if (!XP_STRNCMP(line, X_MOZILLA_STATUS, X_MOZILLA_STATUS_LEN)) - return 0; - /* Likewise, if we are writing a UIDL header, discard an existing one. - (In the case of copying a `partial' message from one folder to - another, state->uidl will be false, so we will simply copy the - existing X-UIDL header like it was any other.) - */ - if (state->uidl && !XP_STRNCMP(line, X_UIDL, X_UIDL_LEN)) - return 0; - } - } - if (XP_FileWrite(line, length, state->fid) < length) { - return MK_MSG_ERROR_WRITING_MAIL_FOLDER; /* ### Need to make sure we - handle out of disk space - properly. */ - } - if (state->writefunc) { - (*state->writefunc)(line, length, state->writeclosure); - } - - state->position += length; - return 0; -} - - -MsgERR -MSG_Pane::UpdateNewsCounts(MSG_NewsHost* host) -{ - XP_ASSERT(host); - if (!host) return eUNKNOWN; - - URL_Struct* url_struct = NET_CreateURLStruct(host->GetURLBase(), - NET_DONT_RELOAD); - if (!url_struct) return eOUT_OF_MEMORY; - url_struct->pre_exit_fn = MSG_Pane::UpdateNewsCountsDone_s; - GetURL(url_struct, FALSE); - return 0; -} - - -void -MSG_Pane::UpdateNewsCountsDone_s(URL_Struct* url_struct, - int status, MWContext*) -{ - XP_ASSERT(url_struct->msg_pane); - if (url_struct->msg_pane) { - url_struct->msg_pane->UpdateNewsCountsDone(status); - } -} - -void -MSG_Pane::UpdateNewsCountsDone(int /*status*/) -{ -} - -MsgERR MSG_Pane::CloseView() -{ - MessageDBView *view = GetMsgView(); - if (view != NULL) - { - if (GetListener()) - view->Remove(GetListener()); - view->Close(); - } - SetMsgView(NULL); - return eSUCCESS; -} - - -MsgERR MSG_Pane::ListThreads() -{ - MessageDBView *msgView = GetMsgView(); - MSG_FolderInfo *folder = GetFolder(); - if (!msgView || !folder) - return eFAILURE; - MSG_ListThreadState *listThreadState = new MSG_ListThreadState(msgView, this, TRUE, folder->GetTotalMessagesInDB()); - if (listThreadState) - { - listThreadState->Begin(this); - return eSUCCESS; - } - else - return eOUT_OF_MEMORY; -} - - -int MSG_Pane::GetURL (URL_Struct *url, XP_Bool isSafe) -{ - //###phil should we check that msg_pane is null? who would clear it, a preExit func? - url->msg_pane = this; - m_context->imapURLPane = this; - return msg_GetURL (m_context, url, isSafe); -} - -URL_Struct * MSG_Pane::ConstructUrlForMessage(MessageKey key) -{ - MSG_FolderInfo *folder = GetFolder(); - MessageDBView *view = GetMsgView(); - URL_Struct *retUrl = NULL; - - char *urlStr = NULL; - - if (!folder || ! view || !view->GetDB()) - return NULL; - if (key == MSG_MESSAGEKEYNONE) - urlStr = folder->BuildUrl(NULL, key); - else - urlStr = folder->BuildUrl(view->GetDB(), key); - if (urlStr != NULL) - { - retUrl = NET_CreateURLStruct(urlStr, NET_DONT_RELOAD); - XP_FREE(urlStr); - } - return retUrl; -} - -/* static */ URL_Struct * MSG_Pane::ConstructUrl(MSG_FolderInfo *folder) -{ - URL_Struct *retUrl = NULL; - - char *urlStr = NULL; - - if (!folder) - return NULL; - urlStr = folder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - if (urlStr != NULL) - { - retUrl = NET_CreateURLStruct(urlStr, NET_DONT_RELOAD); - XP_FREE(urlStr); - } - return retUrl; -} - -int MSG_Pane::SaveIndicesAsKeys(MSG_ViewIndex* indices, int32 numIndices) -{ - MessageDBView *view = GetMsgView(); - if (view == NULL) - return 0; - m_saveKeys.RemoveAll(); - for (int32 i = 0; i < numIndices; i++) - { - m_saveKeys.Add(view->GetAt(indices[i])); - } - return m_saveKeys.GetSize(); -} - -class FolderRunningIMAPURLStack -{ -public: - FolderRunningIMAPURLStack(MSG_FolderInfo *folder); - ~FolderRunningIMAPURLStack(); -protected: - MSG_IMAPFolderInfoMail *m_imapFolder; - XP_Bool m_wasRunningIMAPUrl; -}; - -FolderRunningIMAPURLStack::FolderRunningIMAPURLStack(MSG_FolderInfo *folder) -{ - m_imapFolder = folder->GetIMAPFolderInfoMail(); - m_wasRunningIMAPUrl = m_imapFolder && (m_imapFolder->GetRunningIMAPUrl() != MSG_NotRunning); - - if (m_imapFolder) - m_imapFolder->SetRunningIMAPUrl(MSG_RunningOnline); -} - -FolderRunningIMAPURLStack::~FolderRunningIMAPURLStack() -{ - if (!m_wasRunningIMAPUrl && m_imapFolder) - m_imapFolder->SetRunningIMAPUrl(MSG_NotRunning); -} - -XP_Bool MSG_Pane::ShouldDeleteInBackground() -{ - XP_Bool ret = FALSE; - // ideally, this would be virtual - if (GetPaneType() == MSG_MESSAGEPANE) - ret = TRUE; - else if (GetPaneType() == MSG_THREADPANE) - { - // ah, FE's collapsing away the message by hiding it, but not destroying it. - // So we have to check the message key to see if it's displaying a message. - // This means we won't background delete if there's a multiple selection... - MSG_MessagePane *msgPane = (MSG_MessagePane *) MSG_FindPaneOfContext(GetContext(), MSG_MESSAGEPANE); - if (msgPane) - { - MessageKey messageKey = MSG_MESSAGEKEYNONE; - msgPane->GetCurMessage(NULL, &messageKey, NULL); - MessageDBView *view = GetMsgView(); - // if we're deleting the last message in the view, don't want to run - // in background because there might not be another message to load. - if (messageKey != MSG_MESSAGEKEYNONE && view && view->GetSize() > 1) - ret = TRUE; - } - } - return ret; -} - -MsgERR MSG_Pane::TrashMessages (MSG_ViewIndex *indices, int32 numIndices) -{ - MsgERR err = eSUCCESS; - MSG_FolderInfo *folder = GetFolder(); - if (!folder) - return eFAILURE; - - XP_Bool imapDeleteIsMoveToTrash = folder->DeleteIsMoveToTrash(); - if (!(folder->GetFlags() & MSG_FOLDER_FLAG_TRASH) && - !((folder->GetType() == FOLDER_IMAPMAIL) && !imapDeleteIsMoveToTrash) ) - { - // First, copy these messages into the trash folder, leaving the old - // headers valid until we're done - XP_ASSERT (folder->IsMail()); - char *path = NULL; - MSG_FolderInfoMail *trashFolder = NULL; - if (folder->GetType() == FOLDER_MAIL) - { - path = m_master->GetPrefs()->MagicFolderName (MSG_FOLDER_FLAG_TRASH); - trashFolder = m_master->FindMailFolder (path, TRUE); - } - else - { - MSG_IMAPFolderInfoMail *imapInfo = folder->GetIMAPFolderInfoMail(); - if (imapInfo) - { - MSG_FolderInfo *foundTrash = MSG_GetTrashFolderForHost(imapInfo->GetIMAPHost()); - trashFolder = foundTrash ? foundTrash->GetMailFolderInfo() : (MSG_FolderInfoMail *)NULL; - } - } - - FREEIF(path); - if (NULL != trashFolder) - { - if (ShouldDeleteInBackground()) - { - FolderRunningIMAPURLStack folderStack(folder); - err = CopyMessages (indices, numIndices, trashFolder, TRUE); - } - else - err = CopyMessages (indices, numIndices, trashFolder, TRUE); - } - } - else if (folder) // must be deleting from trash. So do it for real. - { - err = DeleteMessages(folder, indices, numIndices); - // else what other folder type here? - } - - return err; -} - -MsgERR MSG_Pane::DeleteMessages (MSG_FolderInfo *folder, MSG_ViewIndex *indices, int32 numIndices) -{ - MessageDBView *view = GetMsgView(); - if (!view) - return eFAILURE; - if (folder->GetType() == FOLDER_MAIL) - return view->DeleteMessagesByIndex(indices, numIndices, TRUE /* delete from db */); - else if (folder->GetType() == FOLDER_IMAPMAIL) - { - // translate the view indices to msg keys - IDArray keyArray; - for (int32 currentIndexIndex = 0; currentIndexIndex < numIndices; currentIndexIndex++) - keyArray.Add(view->GetAt(indices[currentIndexIndex])); - - // the folder will delete them asynch - ((MSG_IMAPFolderInfoMail *) folder)->DeleteSpecifiedMessages(this, keyArray); - } - return eSUCCESS; -} - -/*static*/ void MSG_Pane::CancelDone (URL_Struct *url, int status, MWContext *context) -{ - if (status >= 0) - { - MSG_Pane *pane = url->msg_pane; - FE_Alert (context, XP_GetString (MK_MSG_MESSAGE_CANCELLED)); - if (pane != NULL) - { - MessageKey key = MSG_MESSAGEKEYNONE; - char *idPart = NewsGroupDB::GetGroupNameFromURL(url->address); - if (idPart) - { - char *msgId = XP_STRDUP (NET_UnEscape (idPart)); - - if (msgId && MSG_GetKeyFromMessageId(pane, msgId, &key) == 0) - { - MessageDBView *view = pane->GetMsgView(); - if (view && view->GetDB()) - view->GetDB()->DeleteMessage(key, NULL, TRUE /* delete from db */); - FREEIF(msgId); - } - FREEIF(idPart); - } - - } - } - /* else, the FE exit routine will present the error message. */ -} -int MSG_Pane::CancelMessage(MSG_ViewIndex index) -{ - URL_Struct *url_struct; - /* Get the message ID of the current message, and open a URL of the form - "news://host/message@id?cancel" and mknews.c will do all the work. */ - MSG_FolderInfo *folder = GetFolder(); - if (!folder) - return -1; - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - if (!newsFolder) - return -1; - MessageDBView *view = GetMsgView(); - if (!view) - return -1; - char *msgUrl = newsFolder->BuildUrl(view->GetDB(), view->GetAt(index)); - if (!msgUrl) - return MK_OUT_OF_MEMORY; - msgUrl = XP_AppendStr(msgUrl, "?cancel"); - if (!msgUrl) - return MK_OUT_OF_MEMORY; - /* use NET_NORMAL_RELOAD so we don't fail to - cancel messages that are in the cache */ - url_struct = NET_CreateURLStruct (msgUrl, NET_NORMAL_RELOAD); - XP_FREE (msgUrl); - if (!url_struct) - return MK_OUT_OF_MEMORY; - url_struct->internal_url = TRUE; - url_struct->pre_exit_fn = MSG_Pane::CancelDone; - return GetURL (url_struct, FALSE); -} - - -// Helper function for copy and move -MSG_DragEffect MSG_Pane::DragMessagesStatus ( - const MSG_ViewIndex * indices, - int32 numIndices, - const char * folderPath, - MSG_DragEffect request) -{ - if (!folderPath) - return MSG_Drag_Not_Allowed; - // search for the folderPath in offline mail tree and imap tree - // avoid the root tree because it contains news folders. - MSG_FolderInfo *destFolder = - GetMaster()->FindMailFolder(folderPath, FALSE); - if (!destFolder) - { - MSG_FolderInfoContainer *imapFolders = GetMaster()->GetImapMailFolderTree(); - if (imapFolders) - destFolder = imapFolders->FindMailPathname(folderPath); - } - if (!destFolder) - return MSG_Drag_Not_Allowed; - return DragMessagesStatus(indices, numIndices, destFolder, request); -} - -MsgERR MSG_Pane::CopyMessages ( - const MSG_ViewIndex *indices, - int32 numIndices, - const char *folderPath, - XP_Bool deleteAfterCopy) -{ - MsgERR returnErr = eFAILURE; - - if (folderPath) - { - // search for the folderPath in offline mail tree and imap tree - // avoid the root tree because it contains news folders. - MSG_FolderInfo *destFolder = - GetMaster()->FindMailFolder(folderPath, FALSE); - if (!destFolder) - { - MSG_FolderInfoContainer *imapFolders = GetMaster()->GetImapMailFolderTree(); - if (imapFolders) - destFolder = imapFolders->FindMailPathname(folderPath); - } - - // do the copy - if (destFolder) - returnErr = CopyMessages (indices, numIndices, destFolder, deleteAfterCopy); - } - - return returnErr; -} - -// Helper function for copy and move -MSG_DragEffect MSG_Pane::DragMessagesStatus ( - const MSG_ViewIndex * /*indices*/, - int32 numIndices, - MSG_FolderInfo* destFolder, - MSG_DragEffect request) -{ - MSG_FolderInfo *sourceFolder = NULL; - if (numIndices > 0) - { - sourceFolder = GetFolder(); - MessageDBView *view = GetMsgView(); - if (!sourceFolder || !view) - return MSG_Drag_Not_Allowed; - - if (sourceFolder == destFolder) - return MSG_Drag_Not_Allowed; - } - - // Which destinations can have messages added to them? - - if (destFolder->GetDepth() <= 1) // root of tree or server. - return MSG_Drag_Not_Allowed; // (needed because local mail server has type "FOLDER_MAIL"). - - FolderType destType = destFolder->GetType(); - if (destType == FOLDER_CONTAINERONLY // can't drag a message to a server - || destType == FOLDER_CATEGORYCONTAINER - || destType == FOLDER_IMAPSERVERCONTAINER - || destType == FOLDER_NEWSGROUP) // should we offer to post the message? - jrm - { - return MSG_Drag_Not_Allowed; - } - - // check IMAP ACLs of the destination folder, if it's IMAP - MSG_IMAPFolderInfoMail *imapDest = destFolder->GetIMAPFolderInfoMail(); - if (imapDest) - { - if (!imapDest->GetCanDropMessagesIntoFolder()) - return MSG_Drag_Not_Allowed; - } - - if (!sourceFolder) - { - // If there's no source folder, this is all we can know. - // (From info about the destination folder alone.) - return request; - } - - FolderType sourceType = sourceFolder->GetType(); - - // check IMAP ACLs of source folder, to see if we're allowed to copy out - MSG_IMAPFolderInfoMail *imapSrc = sourceFolder->GetIMAPFolderInfoMail(); - if (imapSrc) - { - if (!imapSrc->GetCanDragMessagesFromThisFolder()) - return MSG_Drag_Not_Allowed; - } - - - // Which drags are required to be copies? - - XP_Bool mustCopy = FALSE; - XP_Bool preferCopy = FALSE; - - - if ((sourceType == FOLDER_MAIL) - != (destType == FOLDER_MAIL)) - preferCopy = TRUE; - else if (imapSrc && imapDest && imapSrc->GetIMAPHost() != imapDest->GetIMAPHost()) - preferCopy = TRUE; - else if ((sourceType == FOLDER_NEWSGROUP) || - (imapSrc && !imapSrc->GetCanDeleteMessagesInFolder())) - mustCopy = TRUE; - - if (mustCopy) - return (MSG_DragEffect)(request & MSG_Require_Copy); - - if (preferCopy && (request & MSG_Require_Copy)) - return MSG_Require_Copy; - // Now, if they don't care, give them a move - if ((request & MSG_Require_Move) == MSG_Require_Move) - return MSG_Require_Move; - - // Otherwise, give them what they want - return request; -} - -MsgERR MSG_Pane::CopyMessages ( - const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *destFolder, - XP_Bool deleteAfterCopy) -{ - MsgERR err = eSUCCESS; - - if (0 == numIndices) - return err; - - MSG_FolderInfo *folder = GetFolder(); - MessageDBView *view = GetMsgView(); - if (!folder || !view) - return eFAILURE; - - IDArray *ids = new IDArray; - if (!ids) - return eOUT_OF_MEMORY; - - ResolveIndices (view, indices, numIndices, ids); - MessageKey nextKeyToLoad = MSG_MESSAGEKEYNONE; - - if (deleteAfterCopy && indices) - { - nextKeyToLoad = view->GetAt(*(indices+numIndices-1)+1); // last index + 1 - if (nextKeyToLoad == MSG_MESSAGEKEYNONE) - nextKeyToLoad = view->GetAt(*indices-1); // first index - 1 - } - - folder->StartAsyncCopyMessagesInto (destFolder, - this, - view->GetDB(), - ids, - ids->GetSize(), - m_context, - NULL, // do not run in url queue - deleteAfterCopy, - nextKeyToLoad); - - return err; -} - -MsgERR MSG_Pane::MoveMessages (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder) -{ - MsgERR err = CopyMessages (indices, numIndices, folder, TRUE); - return err; -} - - -// Translate m_view indices into message keys. No big deal, but maybe useful other places -void MSG_Pane::ResolveIndices (MessageDBView *view, const MSG_ViewIndex *indices, int32 numIndices, IDArray *ids) -{ - XP_ASSERT(view); - if (!view) - return; - - MessageKey key = MSG_MESSAGEKEYNONE; - for (int i = 0; i < numIndices; i++) - { - key = view->GetAt (indices[i]); - XP_ASSERT(MSG_MESSAGEKEYNONE != key); - if (MSG_MESSAGEKEYNONE != key) - ids->Add (key); - } -} - -/* This function opens a message and returns a handle to that message in the - * msg_ptr pointer. - * - * The message handle will be passed to MSG_ReadMessage and MSG_CloseMessage - * to read data and to close the message - * - * Return values: return a negative return value listed in merrors.h to - * signify an error. return zero (0) on success. - * - * !Set message_ptr to NULL on error! - */ - - - -struct MessageLoadingState { - MailMessageHdr* hdr; - int32 bytesRemaining; - XP_File file; - XP_Bool discarded_envelope_p; - XP_Bool wrote_fake_id_p; -}; - -int -MSG_Pane::OpenMessageSock(const char *folder_name, - const char *msg_id, int32 msgnum, - void * /*folder_ptr*/, void **message_ptr, - int32 *content_length) -{ - MessageLoadingState *state = XP_NEW_ZAP(MessageLoadingState); - MessageDBView* view = GetMsgView(); - - - if (!state) return MK_OUT_OF_MEMORY; - - *message_ptr = state; - - // ###tw Need to use msgnum when possible; msg_id can be ambiguous. - state->hdr = NULL; - if (msgnum != MSG_MESSAGEKEYNONE) - { - if (view) { - state->hdr = (MailMessageHdr *)view->GetDB()->GetDBHdrForKey(msgnum); - } - } - - if (state->hdr == NULL && view) - state->hdr = (MailMessageHdr*) view->GetDB()->GetDBMessageHdrForID(msg_id); - - if (!state->hdr) - return MK_MSG_ID_NOT_IN_FOLDER; - - state->bytesRemaining = state->hdr->GetByteLength(); - - state->file = XP_FileOpen(folder_name, xpMailFolder, XP_FILE_READ_BIN); - if (!state->file) - return MK_MSG_FOLDER_UNREADABLE; - - *content_length = state->bytesRemaining; - - /* #### does this return a status code? */ - XP_FileSeek (state->file, state->hdr->GetMessageOffset(), SEEK_SET); - - return 0; -} - -/* this function should work just like UNIX read(3) - * - * "buffer" should be filled up to the size of "buffer_size" - * with message data. - * - * Return values - * Return the number of bytes put into "buffer", or - * Return zero(0) at end of message, or - * Return a negative error value from merrors.h or sys/errno.h - */ -int -MSG_Pane::ReadMessageSock(const char * /*folder_name*/, - void *message_ptr, - const char * /*message_id*/, - int32 /*msgnum*/, char * buffer, - int32 buffer_size) -{ - MessageLoadingState *state = (MessageLoadingState *) message_ptr; - int L; - XP_ASSERT (state); - if (! state) return -1; - - XP_ASSERT (state->hdr && state->file); - if (!state->hdr || !state->file) - return -1; - - if (state->bytesRemaining == 0) - return 0; - - if (!state->discarded_envelope_p && - !state->wrote_fake_id_p) - { - MessageDBView* view = GetMsgView(); - XPStringObj messageId; - MSG_DBHandle db = (view ? view->GetDB()->GetDB() : 0); - /* Before emitting any of the `real' data, emit a dummy Message-ID - header if this was an IDless message. This is so that the MIME - parsing code will call MSG_ActivateReplyOptions() with an ID - that it can use when generating (among other things) the URL - to be used to forward this message to another user. - */ - state->hdr->GetMessageId(messageId, db); - const char *id = (const char *) messageId; - - state->wrote_fake_id_p = TRUE; - if (id && !XP_STRNCMP (HG02700, id, 4)) - { - XP_ASSERT (buffer_size > (int32) (XP_STRLEN(id) + 40)); - XP_STRCPY (buffer, "Message-ID: <"); - XP_STRCAT (buffer, id); - XP_STRCAT (buffer, ">" LINEBREAK); - return XP_STRLEN (buffer); - } - } - - L = XP_FileRead (buffer, - (state->bytesRemaining <= buffer_size - ? state->bytesRemaining - : buffer_size), - state->file); - if (L > 0) - state->bytesRemaining -= L; - - if (L > 0 && !state->discarded_envelope_p) - { - char *s; - for (s = buffer; s < buffer + L; s++) - if (*s == CR || *s == LF) - { - if (*s == CR && *(s+1) == LF) - s++; - s++; - break; - } - if (s != buffer) - { - /* Take the first line off the front of the buffer */ - uint32 off = s - buffer; - L -= off; - for (s = buffer; s < buffer + L; s++) - *s = *(s+off); - state->discarded_envelope_p = TRUE; - } - else - { - /* discard this whole buffer */ - L = 0; - } - } - - - return L; -} - -/* This function should close a message opened - * by MSG_OpenMessage - */ -void -MSG_Pane::CloseMessageSock(const char * /*folder_name*/, - const char * /*message_id*/, int32 /*msgnum*/, - void *message_ptr) -{ - MessageLoadingState *state = (MessageLoadingState *) message_ptr; - - if (state) - { - if (state->hdr) - { - delete state->hdr; - state->hdr = NULL; - } - if (state->file) - { - XP_FileClose(state->file); - state->file = NULL; - } - XP_FREE(state); - } -} - -XP_Bool MSG_Pane::SetMessagePriority(MessageKey key, MSG_PRIORITY priority) -{ - XP_Bool ret; - MessageDBView *view = GetMsgView(); - if (!view || !view->GetDB()) - return FALSE; - ret = view->GetDB()->SetPriority(key, priority); - if (ret) - { - MSG_ViewIndex viewIndex = view->FindKey(key, FALSE); - if (viewIndex != MSG_VIEWINDEXNONE) - { - StartingUpdate(MSG_NotifyChanged, viewIndex, 1); - EndingUpdate(MSG_NotifyChanged, viewIndex, 1); - } - } - return ret; -} - -char * -MSG_Pane::ComputeNewshostArg() -{ - MSG_FolderInfo *folder = GetFolder(); - if (folder) - { - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - if (newsFolder != NULL) - return newsFolder->GetHostUrl(); - } - // For reference, in 3.0, this routine was called - // msg_compute_newshost_arg(). - return NULL; -} - - -int32 -MSG_Pane::GetNewsRCCount(MSG_NewsHost* host) -{ - return host->GetNumGroupsNeedingCounts(); -} - - -char* -MSG_Pane::GetNewsRCGroup(MSG_NewsHost* host) -{ - return host->GetFirstGroupNeedingCounts(); -} - - -int -MSG_Pane::DisplaySubscribedGroup(MSG_NewsHost* host, - const char *group, - int32 oldest_message, - int32 youngest_message, - int32 total_messages, - XP_Bool nowvisiting) -{ - if (!host) return 0; - MSG_FolderInfoNews* info = host->FindGroup(group); - host->SetGroupSucceeded(TRUE); - if (!info && nowvisiting) // let's try autosubscribe... - { - info = host->AddGroup(group); - } - if (!info) - return 0; - else if (!info->IsSubscribed()) - info->Subscribe(TRUE, this); - - if (!info) return 0; - info->UpdateSummaryFromNNTPInfo(oldest_message, youngest_message, - total_messages); - return 0; -} - -int -MSG_Pane::AddNewNewsGroup(MSG_NewsHost* host, - const char* groupname, - int32 /*oldest*/, - int32 /*youngest*/, - const char *flags, - XP_Bool bXactiveFlags) -{ - XP_ASSERT(host); - if (!host) return -1; - - int status = host->NoticeNewGroup(groupname); - if (status < 0) return status; - if (status > 0) m_numNewGroups++; - - XP_Bool bIsCategoryContainer = FALSE; - XP_Bool bIsProfile = FALSE; - - while (flags && *flags) - { - char flag = toupper(*flags); - flags++; - switch (flag) - { - case 'C': - bIsCategoryContainer = TRUE; - break; - case 'P': - case 'V': - bIsProfile = TRUE; - break; - default: - break; - } - } - if (bXactiveFlags) - { - host->SetIsCategoryContainer(groupname, bIsCategoryContainer); - host->SetIsProfile(groupname, bIsProfile); - } - - if (status > 0) { - // If this really is a new newsgroup, then if it's a category of a - // subscribed newsgroup, then automatically subscribe to it. - char* containerName = host->GetCategoryContainer(groupname); - if (containerName) { - MSG_FolderInfoNews* categoryInfo = host->FindGroup(containerName); - if (categoryInfo && categoryInfo->IsSubscribed()) { - host->AddGroup(groupname); - // this autosubscribes categories of subscribed newsgroups. - } - delete [] containerName; - } - } - return status; -} - - -XP_Bool -MSG_Pane::AddGroupsAsNew() -{ - return TRUE; -} - - -int -MSG_Pane::BeginCompressFolder(URL_Struct* url, - const char* foldername, - void** closure) -{ - MSG_CompressState *compressState = - MSG_CompressState::Create(m_master, GetContext(), url, foldername); - *closure = compressState; - if (compressState == NULL) - return MK_OUT_OF_MEMORY; - return compressState->BeginCompression(); -} - -int -MSG_Pane::FinishCompressFolder(URL_Struct* /*url*/, - const char* /*foldername*/, - void* closure) -{ - MSG_CompressState *compressState = (MSG_CompressState *) closure; - return compressState->CompressSomeMore(); -} - -int -MSG_Pane::CloseCompressFolderSock(URL_Struct* /*url*/, - void* closure) -{ - MSG_CompressState *compressState = (MSG_CompressState *) closure; - return compressState->FinishCompression(); -} - -UndoManager* -MSG_Pane::GetUndoManager() -{ - if (!m_undoManager) - { - // try to use the undo manager for a pane with matching context, since the fe - // is going to use the pane somewhat indiscriminately. - MSG_Pane *pane = GetFirstPaneForContext(GetContext()); - while (pane) - { - if (pane != this) - { - if (pane->m_undoManager) - { - m_undoManager = pane->m_undoManager; - m_undoManager->AddRefCount(); - return m_undoManager; - } - } - pane = GetNextPaneForContext(pane, GetContext()); - } - - m_undoManager = new UndoManager(this, 2000); - if (m_undoManager) - m_undoManager->Init(); - } - return m_undoManager; -} - - -BacktrackManager* -MSG_Pane::GetBacktrackManager() -{ - if (!m_backtrackManager) - m_backtrackManager = new BacktrackManager (this); - return m_backtrackManager; -} - -void MSG_Pane::OnFolderKeysAreInvalid (MSG_FolderInfo *folderInfo) -{ - if (m_undoManager) - m_undoManager->RemoveActions(folderInfo); - if (m_backtrackManager) - m_backtrackManager->RemoveEntries(folderInfo); -} - -void MSG_Pane::OnFolderChanged(MSG_FolderInfo *) {} -void MSG_Pane::OnFolderAdded (MSG_FolderInfo *, MSG_Pane *) {} - -void MSG_Pane::OnFolderDeleted (MSG_FolderInfo *folder) -{ - FE_PaneChanged (this, FALSE, MSG_PaneNotifyFolderDeleted, (uint32) folder); -} - -MsgERR -MSG_Pane::DeliverQueuedMessages() -{ - URL_Struct* url; - - if (NET_IsOffline()) // let master go online, so IMAP gets a chance. - { - m_master->SynchronizeOffline(this, FALSE, FALSE, TRUE, FALSE, FALSE); - } - else - { - url = NET_CreateURLStruct("mailbox:?deliver-queued", NET_NORMAL_RELOAD); - if (!url) return MK_OUT_OF_MEMORY; - url->internal_url = TRUE; - url->pre_exit_fn = PostDeliverQueuedExitFunc; - GetURL(url, FALSE); - } - return 0; -} - -/* static */ -void MSG_Pane::PostDeliverQueuedExitFunc (URL_Struct *URL_s, int status, MWContext* /*window_id*/) -{ - // if this was launched from a thread pane. then start compress folders url. - if ((status >= 0) && (URL_s->msg_pane != NULL)) - { - MSG_Pane *pane = URL_s->msg_pane; - MSG_Master *master = pane->GetMaster(); - if (master != NULL) - { - char *folderPath = master->GetPrefs()->MagicFolderName (MSG_FOLDER_FLAG_QUEUE); - if (folderPath) - { - MSG_ThreadPane* threadPane = master->FindThreadPaneNamed(folderPath); - if (threadPane) - threadPane->ReloadFolder(); - FREEIF(folderPath); - } - } - } -} - -int -MSG_Pane::BeginDeliverQueued(URL_Struct* /*url*/, void** closure) -{ - const char *folderPath; - - if (m_master) - folderPath = m_master->GetPrefs()->MagicFolderName (MSG_FOLDER_FLAG_QUEUE); - else - { - XP_ASSERT(FALSE); - return MK_MSG_QUEUED_DELIVERY_FAILED; - } - - - MSG_DeliverQueuedMailState *deliverMailState = new MSG_DeliverQueuedMailState(folderPath, this); - - if (!deliverMailState) - return MK_OUT_OF_MEMORY; - *closure = deliverMailState; - deliverMailState->SetContext(GetContext()); - return (MK_WAITING_FOR_CONNECTION); -} - -int -MSG_Pane::FinishDeliverQueued(URL_Struct* url, void* closure) -{ - MSG_DeliverQueuedMailState *deliverMailState = (MSG_DeliverQueuedMailState *) closure; - return deliverMailState->DeliverMoreQueued(url); -} - -/* static */void -MSG_Pane::GetNextURLInChain_CB(URL_Struct* urlstruct, int /*status*/, MWContext* /*context*/) -{ - if (urlstruct->msg_pane) - { - urlstruct->msg_pane->GetNextURLInChain(); - } -} - -void -MSG_Pane::GetNextURLInChain() -{ - if (m_urlChain) - m_urlChain->GetNextURL(); -} - -int -MSG_Pane::CloseDeliverQueuedSock(URL_Struct* url, - void* closure) -{ - int ret; - MSG_DeliverQueuedMailState *deliverMailState = (MSG_DeliverQueuedMailState *) closure; - ret = deliverMailState->CloseDeliverQueuedSock(url); - if (m_urlChain) - url->pre_exit_fn = MSG_Pane::GetNextURLInChain_CB; - return ret; -} - -void MSG_Pane::StoreImapFilterClosureData( tImapFilterClosure *closureData ) -{ - m_ImapFilterData = closureData; -} -void MSG_Pane::ClearImapFilterClosureData() -{ - m_ImapFilterData = NULL; -} - -tImapFilterClosure *MSG_Pane::GetImapFilterClosureData() -{ - return m_ImapFilterData; -} - - -MsgERR -MSG_Pane::CheckForNew(MSG_NewsHost* host) -{ - InterruptContext(FALSE); - XP_ASSERT(m_hostCheckingForNew == NULL); - XP_ASSERT(host); - if (!host) return eUNKNOWN; - m_hostCheckingForNew = host; - m_checkForNewStartTime = time((time_t*) 0); - time_t lasttime = host->getLastUpdate(); - char* url = - PR_smprintf("%s/%s", - m_hostCheckingForNew->GetURLBase(), - (lasttime == 0) ? "*" : "?newgroups"); - if (!url) - return eOUT_OF_MEMORY; - URL_Struct* urlstruct = NET_CreateURLStruct(url, NET_DONT_RELOAD); - XP_FREE(url); - if (!urlstruct) - return eOUT_OF_MEMORY; - urlstruct->pre_exit_fn = MSG_Pane::CheckForNewDone_s; - return GetURL(urlstruct, FALSE); -} - - -void -MSG_Pane::CheckForNewDone_s(URL_Struct* url_struct, int status, - MWContext* context) -{ - if (status == MK_EMPTY_NEWS_LIST) { - // There is a bug in mknews.c that causes this return code - // sometimes. Just patch it here for now... - status = 0; - } - - MSG_Pane* pane = url_struct->msg_pane; - XP_ASSERT(pane); - if (!pane || !MSG_Pane::PaneInMasterList(pane)) return; - pane->CheckForNewDone(url_struct, status, context); -} - - -void -MSG_Pane::CheckForNewDone(URL_Struct* /*url_struct*/, int status, - MWContext* /*context*/) -{ - XP_ASSERT(m_hostCheckingForNew); - if (!m_hostCheckingForNew) return; - if (status >= 0) { - m_hostCheckingForNew->setLastUpdate(m_checkForNewStartTime); - } - m_hostCheckingForNew->SaveHostInfo(); - m_hostCheckingForNew = NULL; -} - -static void -OpenMessageAsDraftExit (URL_Struct *url_struct, - int /*status*/, - MWContext* context) -{ - XP_ASSERT (url_struct && context); - - if (!url_struct) return; - - NET_FreeURLStruct ( url_struct ); -} - -MsgERR -MSG_Pane::OpenMessageAsDraft(MSG_ViewIndex* indices, int32 numIndices, - XP_Bool bFwdInline) -{ - MsgERR status = eUNKNOWN; - MessageDBView *view = GetMsgView(); - MSG_FolderInfo *folder = GetFolder(); - - XP_ASSERT(indices && view && folder); - if (!indices || !view || !folder) - return status; - - status = eSUCCESS; - - for (int32 i=0; i < numIndices; i++) { - MessageKey key = view->GetAt(*(indices+i)); - if (MSG_MESSAGEKEYNONE != key) { - char *url = folder->BuildUrl(view->GetDB(), key); - if (NULL != url) { - URL_Struct* url_struct = NET_CreateURLStruct(url, NET_DONT_RELOAD); - XP_FREEIF(url); - if (url_struct) { - MSG_PostDeliveryActionInfo *actionInfo = - new MSG_PostDeliveryActionInfo(folder); - if (actionInfo) { - actionInfo->m_msgKeyArray.Add(key); - if (bFwdInline) - actionInfo->m_flags |= MSG_FLAG_FORWARDED; - else if (folder->GetFlags() & - (MSG_FOLDER_FLAG_DRAFTS | MSG_FOLDER_FLAG_QUEUE)) - actionInfo->m_flags |= MSG_FLAG_EXPUNGED; - - url_struct->fe_data = (void *) actionInfo; - url_struct->msg_pane = this; - url_struct->allow_content_change = FALSE; -#if 0 - NET_GetURL (url_struct, FO_OPEN_DRAFT, m_context, - OpenMessageAsDraftExit); -#else - MSG_UrlQueue::AddUrlToPane (url_struct, OpenMessageAsDraftExit, this, TRUE, FO_OPEN_DRAFT); -#endif - } - else { - NET_FreeURLStruct(url_struct); - status = (MsgERR) MK_OUT_OF_MEMORY; - // continue for other messages - } - } - else { - status = (MsgERR) MK_OUT_OF_MEMORY; - } - } - else { - status = (MsgERR) MK_OUT_OF_MEMORY; - } - } - } - return status; -} - - -XP_Bool MSG_Pane::ModerateNewsgroupStatus (MSG_FolderInfo *folder) -{ - - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - if (newsFolder) - { - MSG_NewsHost *host = newsFolder->GetHost(); - return NULL != host->QueryPropertyForGet("MODURL"); - } - return FALSE; // command not enabled -} - - -MsgERR MSG_Pane::ModerateNewsgroup (MSG_FolderInfo *folder) -{ - MsgERR status = eSUCCESS; - - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - if (newsFolder) - { - MSG_NewsHost *host = newsFolder->GetHost(); - URL_Struct *url_s = NET_CreateURLStruct (host->QueryPropertyForGet("MODURL"), NET_NORMAL_RELOAD); - if (url_s) - { - // Provide the name of the newsgroup so the server knows what we're talking about - char *stuffToChop = XP_STRSTR (url_s->address, "[ngc]"); - if (stuffToChop) - { - *stuffToChop = '\0'; - StrAllocCat (url_s->address, folder->GetName()); - } - GetURL (url_s, TRUE); - } - else - status = eOUT_OF_MEMORY; - } - - return status; -} - - -XP_Bool MSG_Pane::NewNewsgroupStatus (MSG_FolderInfo *folder) -{ - MSG_NewsHost *host = NULL; - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - - if (newsFolder) - host = newsFolder->GetHost(); - else if (folder->GetFlags() & MSG_FOLDER_FLAG_NEWS_HOST) - host = ((MSG_NewsFolderInfoContainer*) folder)->GetHost(); - - if (host && (NULL != host->QueryPropertyForGet("NGURL"))) - return TRUE; - return FALSE; -} - - -MsgERR MSG_Pane::NewNewsgroup (MSG_FolderInfo *folder, XP_Bool createCategory) -{ - MsgERR status = eSUCCESS; - MSG_NewsHost *host = NULL; - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - - if (newsFolder) - host = newsFolder->GetHost(); - else if (folder->GetFlags() & MSG_FOLDER_FLAG_NEWS_HOST) - host = ((MSG_NewsFolderInfoContainer*) folder)->GetHost(); - - if (host) - { - char *ngUrl = XP_STRDUP(host->QueryPropertyForGet("NGURL")); - if (ngUrl) - { - char *stuffToChop = XP_STRSTR (ngUrl, "[ngc]"); - if (stuffToChop) - *stuffToChop = '\0'; - - char *qualifiedUrl = PR_smprintf ("%s%s", ngUrl, createCategory ? newsFolder->GetNewsgroupName() : "*"); - if (qualifiedUrl) - { - URL_Struct *url_s = NET_CreateURLStruct (qualifiedUrl, NET_NORMAL_RELOAD); - if (url_s) - GetURL (url_s, TRUE); - else - status = eOUT_OF_MEMORY; - FREEIF(qualifiedUrl); - } - else - status = eOUT_OF_MEMORY; - FREEIF(ngUrl); - } - } - return status; -} - -///////////////////////////////////////////////////////////////////////////////////// -// #### jht moved from folder pane -MsgERR MSG_Pane::CompressAllFolders() -{ - URL_Struct *url; - char* buf; - - // ### mw Found these comments in CompressFolder above: - // - // This probably invalidates undo state. - // Do we need to commit the open db first? - - // ### mw Is there a better way to do this? - buf = PR_smprintf("mailbox:?compress-folder"); - if (!buf) return MK_OUT_OF_MEMORY; - url = NET_CreateURLStruct(buf, NET_NORMAL_RELOAD); - XP_FREE(buf); - if (!url) - return eOUT_OF_MEMORY; - url->internal_url = TRUE; - GetURL(url, FALSE); - return 0; -} - -// passed in folder is used to figure out from context, which trash the user might -// be talking about. -MsgERR MSG_Pane::EmptyImapTrash(MSG_IMAPHost *host) -{ - // Find the default trash, if no folder passed in. - if (!host && MSG_GetDefaultIMAPHost(m_master)) - host = MSG_GetDefaultIMAPHost(m_master); - - MSG_FolderInfo *trashFolder = NULL; - if (host) - trashFolder = host->GetTrashFolderForHost(); - - if (trashFolder && trashFolder->DeleteIsMoveToTrash()) - return ((MSG_IMAPFolderInfoMail *) trashFolder)->DeleteAllMessages(this, TRUE); - else - return eUNKNOWN; // nothing to do for imap delete model - // return an error so that EmptyTrash will perform - // what the exit function for the DeleteAllMessages - // url would have done -} - - -MsgERR MSG_Pane::PreflightDeleteFolder (MSG_FolderInfo *folder, XP_Bool getUserConfirmation) -{ - MsgERR err = 0; - - // It's possible to get past GetCommandStatus's check if the folder itself is deletable - // but one of its children is not. E.g. if the user moves the Inbox into another folder, - // and then tries to delete that folder, the Inbox is still magic, and we shouldn't delete it. - if (!folder->IsDeletable()) - { - char *prompt = PR_smprintf (XP_GetString(MK_MSG_CANT_DELETE_RESERVED_FOLDER), folder->GetName()); - if (prompt) - { - FE_Alert (GetContext(), prompt); - XP_FREE(prompt); - } - return eUNKNOWN; - } - - // Be sure to ask all the children too - MSG_FolderArray *subFolders = folder->GetSubFolders(); - for (int i = 0; i < subFolders->GetSize(); i++) - { - err = PreflightDeleteFolder (subFolders->GetAt(i), getUserConfirmation); - if (err) - return err; - } - - // Prevent the user from really deleting any folder which has a thread pane open - XPPtrArray panes; - GetMaster()->FindPanesReferringToFolder (folder, &panes); - if (panes.GetSize() > 0) - { - char *prompt = PR_smprintf (XP_GetString (MK_MSG_PANES_OPEN_ON_FOLDER), folder->GetName()); - if (prompt) - { - FE_Alert (GetContext(), prompt); - XP_FREE(prompt); - } - return eUNKNOWN; - } - - // Make sure they want to delete any mail folder - if (folder->IsMail() && getUserConfirmation) - { - char *prompt = PR_smprintf (XP_GetString (MK_MSG_DELETE_FOLDER_MESSAGES), folder->GetName()); - if (prompt) - { - XP_Bool userCancelled = !FE_Confirm (GetContext(), prompt); - XP_FREE(prompt); - if (userCancelled) - return eUNKNOWN; - } - } - - // If this folder is a filter rule target, the user can disable the - // rule or cancel the delete operation. - MSG_RuleTracker tracker (GetMaster(), MSG_FolderPane::RuleTrackCB, this); - if (!tracker.WatchDeleteFolders (&folder, 1)) - return eUNKNOWN; - - return err; -} - - - // move some implementation from MSG_FolderPane. Compress the one - // specified mail folder whether it be imap or pop -MsgERR MSG_Pane::CompressOneMailFolder(MSG_FolderInfoMail *folder) -{ - URL_Struct* url; - char* buf; - - if (folder->GetType() == FOLDER_MAIL) - buf = PR_smprintf("mailbox:%s?compress-folder", folder->GetPathname()); - else - { - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - buf = CreateImapMailboxExpungeUrl(imapFolder->GetHostName(), - imapFolder->GetOnlineName(), - imapFolder->GetOnlineHierarchySeparator()); - } - - if (!buf) return MK_OUT_OF_MEMORY; - url = NET_CreateURLStruct(buf, NET_NORMAL_RELOAD); - XP_FREE(buf); - if (!url) - return eOUT_OF_MEMORY; - url->internal_url = TRUE; - MSG_UrlQueue::AddUrlToPane(url, NULL, this); -// GetURL(url, FALSE); - return 0; -} - - - -MsgERR MSG_Pane::EmptyTrash(MSG_FolderInfo *folder) -{ -// Note that like 3.0, we don't deal with partially downloaded messages -// What they would be doing in the trash is beyond me, though. They are still -// left on the pop server. - MSG_IMAPHost *imapHost = NULL; - XP_Bool usingImap = (m_master->GetIMAPHostTable() != NULL); - if (usingImap) - imapHost = folder ? folder->GetIMAPHost() : 0; - - MailDB *trashDB; - char *trashPath = m_master->GetPrefs()->MagicFolderName (MSG_FOLDER_FLAG_TRASH); - MSG_FolderInfo *trashFolder = FindMailFolder(trashPath, TRUE); - - TDBFolderInfoTransfer *originalInfo = NULL; - if (MailDB::Open(trashPath, TRUE, &trashDB) == eSUCCESS) - { - originalInfo = new TDBFolderInfoTransfer(*trashDB->m_dbFolderInfo); - trashDB->ForceClosed(); - } - - // Truncate trash folder, and remove summary file. - XP_FileClose(XP_FileOpen(trashPath, xpMailFolder, XP_FILE_WRITE_BIN)); - XP_FileRemove(trashPath, xpMailFolderSummary); - - // Run through any subfolders which live in the trash, and wipe 'em out - // run the loop backwards so the indices stay valid - MSG_FolderInfo *tree = GetMaster()->GetFolderTree(); - if (trashFolder) - { - for (int i = trashFolder->GetSubFolders()->GetSize() - 1; i >= 0; i--) - { - MSG_FolderInfo *folder = trashFolder->GetSubFolders()->GetAt(i); - - // Remove the folder from the disk, and from the folder pane - MSG_FolderInfoMail *mailFolder = folder->GetMailFolderInfo(); - if (mailFolder) - tree->PropagateDelete((MSG_FolderInfo **) &mailFolder); - else - XP_ASSERT(FALSE); - } - } - // Create a new summary file, update the folder message counts, and - // Close the summary file db. - if (MailDB::Open(trashPath, TRUE, &trashDB, TRUE) == eSUCCESS) - { - if (trashFolder != NULL) - trashFolder->SummaryChanged(); - if (originalInfo) - { - originalInfo->TransferFolderInfo(*trashDB->m_dbFolderInfo); - delete originalInfo; - } - trashDB->SetSummaryValid(TRUE); - trashDB->Close(); - } - - // Reload any trash thread pane because it's invalid now. - MSG_ThreadPane* threadPane = NULL; - if (m_master != NULL) - threadPane = m_master->FindThreadPaneNamed(trashPath); - if (threadPane != NULL) - threadPane->ReloadFolder(); - - MsgERR imapError = eSUCCESS; - - if (m_master->GetIMAPHostTable()) // If there's a host table, we have IMAP hosts - imapError = EmptyImapTrash(imapHost); - - // Start a Compress All Folders action. - // If we are imap, we will compress on exit function - // of empty trash url - // if the imap empty trash fails (and the URL never gets fired) - // then compress now - if ((!usingImap) || - (usingImap && (imapError != eSUCCESS))) - CompressAllFolders(); - - FREEIF(trashPath); - return 0; -} - - -void MSG_Pane::ManageMailAccountExitFunc(URL_Struct *url, - int status, - MWContext *context) -{ - MSG_Pane *pane = url->msg_pane; - char *alert = NULL; - - if ((status >= 0 || status == MK_POP3_NO_MESSAGES || - status == MK_CONNECTED) && pane) { - const char * mailUrl = pane->GetMaster()->GetMailAccountURL(); - if (mailUrl) { - URL_Struct *url_struct = NET_CreateURLStruct(mailUrl, NET_NORMAL_RELOAD); - if (url_struct) { - url_struct->msg_pane = pane; - msg_GetURL(context, url_struct, FALSE); - } - } - else { - alert = XP_GetString(MK_MSG_UNABLE_MANAGE_MAIL_ACCOUNT); - } - } - else if (status < 0) { - alert = XP_GetString(MK_MSG_UNABLE_MANAGE_MAIL_ACCOUNT); - } - - if (alert) - FE_Alert(context, alert); - - if (url) - NET_FreeURLStruct(url); -} - - -MsgERR MSG_Pane::ManageMailAccount(MSG_FolderInfo *folder) -{ - MsgERR status = 0; -#ifdef DEBUG_bienvenu - if (folder && folder->GetIMAPFolderInfoMail() && folder->GetIMAPFolderInfoMail()->HaveAdminUrl(MSG_AdminFolder)) - { - folder->GetAdminUrl(GetContext(), MSG_AdminFolder); - return status; - } -#endif - folder->GetAdminUrl(GetContext(), MSG_AdminServer); - return status; -/* - char *getMailAccountUrl = NULL; - URL_Struct *url_struct; - const char *host = GetPrefs()->GetPopHost(); - const char *mailUrl = GetMaster()->GetMailAccountURL(); - - if (mailUrl) - { - // this code used to make sure the mail url contained the host name. Why? if (strcasestr(mailUrl, host)) { - URL_Struct *url_struct = NET_CreateURLStruct(mailUrl, NET_NORMAL_RELOAD); - if (url_struct) - { - url_struct->msg_pane = this; - msg_GetURL(GetContext(), url_struct, FALSE); - } - } - - if (!host || !*host) - { -#ifdef XP_MAC - FE_EditPreference(PREF_PopHost); -#endif - return MK_MSG_NO_POP_HOST; - } - - if (GetPrefs()->GetMailServerIsIMAP4()) - { - getMailAccountUrl = CreateImapManageMailAccountUrl(host); - if (!getMailAccountUrl) - return MK_OUT_OF_MEMORY; - GetContext()->mailMaster = GetMaster(); - } - else { - - getMailAccountUrl = (char *) XP_ALLOC(256); - if (!getMailAccountUrl) - return MK_OUT_OF_MEMORY; - - XP_STRCPY(getMailAccountUrl, "pop3://"); - XP_STRCAT(getMailAccountUrl, host); - XP_STRCAT(getMailAccountUrl, "?gurl"); - } - url_struct = NET_CreateURLStruct (getMailAccountUrl, NET_NORMAL_RELOAD); - XP_FREEIF(getMailAccountUrl); - - if (!url_struct) - return MK_OUT_OF_MEMORY; - - url_struct->msg_pane = this; - url_struct->internal_url = TRUE; - GetContext()->imapURLPane = this; - MSG_UrlQueue::AddUrlToPane (url_struct, OpenMessageAsDraftExit, this, TRUE); - - return status; -*/ -} - -void MSG_Pane::GroupNotFound(MSG_NewsHost* host, const char *group, XP_Bool opening) -{ - if (opening) - { - MSG_FolderInfoNews* info = host->FindGroup(group); - MSG_FolderInfo* curFolder = GetFolder(); - MSG_FolderInfoNews *curNewsFolder = (curFolder) ? curFolder->GetNewsFolderInfo() : (MSG_FolderInfoNews *)NULL; - - // make sure the group not found is the current group - if (info && curNewsFolder && !XP_STRCMP(info->GetNewsgroupName(), curNewsFolder->GetNewsgroupName())) - { - XP_Bool autoSubscribed = (info) ? info->GetAutoSubscribed() : FALSE; - XP_Bool unsubscribe = autoSubscribed; - - if (!autoSubscribed) - { - char *unsubscribePrompt = PR_smprintf(XP_GetString(MK_MSG_GROUP_NOT_ON_SERVER), group, host->getStr()); - if (unsubscribePrompt && GetContext()) - { - unsubscribe = FE_Confirm(GetContext(), unsubscribePrompt); - FREEIF(unsubscribePrompt); - } - } - if (unsubscribe) - { - host->GroupNotFound(group, opening); - } - } - } - else if (host->IsCategory(group)) - host->GroupNotFound(group, opening); -} - -XP_Bool MSG_Pane::DisplayingRecipients() -{ - if (msg_DontKnow == m_displayRecipients) - { - // Since MSG_FolderInfo::DisplayRecipients can walk the folder tree in - // order to figure out whether it's a child of an FCC folder, we don't - // want to do that on every commandStatus from the FE. So cache the - // displayRecipients state in the pane - - MSG_FolderInfo *folder = GetFolder(); - if (folder && folder->DisplayRecipients()) - m_displayRecipients = msg_Yes; - else - m_displayRecipients = msg_No; - } - - XP_ASSERT(msg_DontKnow != m_displayRecipients); // should have figured this out above - return (msg_Yes == m_displayRecipients) ? TRUE : FALSE; -} - -void MSG_Pane::SetRequestForReturnReceipt(XP_Bool bRequested) -{ - m_requestForReturnReceipt = bRequested; -} - -XP_Bool MSG_Pane::GetRequestForReturnReceipt() -{ - return m_requestForReturnReceipt; -} - -void MSG_Pane::SetSendingMDNInProgress(XP_Bool inProgress) -{ - m_sendingMDNInProgress = inProgress; -} - -XP_Bool MSG_Pane::GetSendingMDNInProgress() -{ - return m_sendingMDNInProgress; -} - -MSG_PostDeliveryActionInfo * -MSG_Pane::GetPostDeliveryActionInfo () -{ - return m_actionInfo; -} - -void -MSG_Pane::SetPostDeliveryActionInfo ( MSG_PostDeliveryActionInfo *actionInfo ) -{ - if (m_actionInfo) - delete m_actionInfo; - m_actionInfo = actionInfo; -} - -void -MSG_Pane::SetIMAPListInProgress(XP_Bool inProgress) -{ - m_imapListInProgress = inProgress; -} - -XP_Bool -MSG_Pane::IMAPListInProgress() -{ - return m_imapListInProgress; -} - -void -MSG_Pane::SetIMAPListMailboxExist(XP_Bool bExist) -{ - m_imapListMailboxExist = bExist; -} - -XP_Bool -MSG_Pane::IMAPListMailboxExist() -{ - return m_imapListMailboxExist; -} - -/* static */ void -MSG_Pane::PostDeleteIMAPOldDraftUID(URL_Struct* url, int status, MWContext*) -{ - if (status >= 0) - { - MSG_PostDeliveryActionInfo *actionInfo = (MSG_PostDeliveryActionInfo *) url->fe_data; - if (actionInfo) - { - if (actionInfo->m_folderInfo) - { - MSG_IMAPFolderInfoMail *imapFolderInfo = actionInfo->m_folderInfo->GetIMAPFolderInfoMail(); - char *dbName = WH_FileName (imapFolderInfo->GetPathname(), xpMailFolderSummary); - MailDB *db = NULL; - if (dbName) - db = (MailDB*) MessageDB::FindInCache(dbName); - XP_FREEIF(dbName); - if (db) - { - db->DeleteMessage(actionInfo->m_msgKeyArray.GetAt(0)); - MSG_Pane *urlPane = NULL; - - urlPane = - url->msg_pane->GetMaster()->FindPaneOfType - (imapFolderInfo, MSG_MESSAGEPANE); - - if (!urlPane) - urlPane = url->msg_pane->GetMaster()->FindPaneOfType - (imapFolderInfo, MSG_THREADPANE); - - if (!urlPane) - urlPane = url->msg_pane; - - char *urlString = CreateImapMailboxLITESelectUrl(imapFolderInfo->GetHostName(), - imapFolderInfo->GetOnlineName(), - imapFolderInfo->GetOnlineHierarchySeparator()); - if (urlString) - { - URL_Struct *url_struct = - NET_CreateURLStruct(urlString, - NET_NORMAL_RELOAD); - if (url_struct) - { - imapFolderInfo->SetFolderLoadingContext(url->msg_pane->GetContext()); - url->msg_pane->SetLoadingImapFolder(imapFolderInfo); - url_struct->fe_data = (void *) imapFolderInfo; - url_struct->internal_url = TRUE; - url_struct->msg_pane = urlPane; - urlPane->GetContext()->imapURLPane = urlPane; - MSG_UrlQueue::AddUrlToPane (url_struct, - PostLiteSelectExitFunc, - urlPane, TRUE); - } - XP_FREEIF(urlString); - } - } - } - actionInfo->m_msgKeyArray.RemoveAt(0); - } - } - NET_FreeURLStruct(url); -} - -void -MSG_Pane::DeleteIMAPOldDraftUID(MSG_PostDeliveryActionInfo *actionInfo, MSG_Pane *urlPane) -{ - if (NET_IsOffline()) - { - if (actionInfo && actionInfo->m_folderInfo && - actionInfo->m_msgKeyArray.GetSize() >= 1) - { - MSG_IMAPFolderInfoMail *mailFolderInfo = - actionInfo->m_folderInfo->GetIMAPFolderInfoMail(); - XP_ASSERT(mailFolderInfo); - if (mailFolderInfo) - { - MailDB *mailDB = NULL; - MailDB::Open(mailFolderInfo->GetPathname(), FALSE, &mailDB); - if (mailDB) - { - DBOfflineImapOperation *op = NULL; - MessageKey doomedKey = actionInfo->m_msgKeyArray.GetAt(0); - if ((int32) doomedKey >= 0) // real message key - { // add new offline delete operation - op = mailDB->GetOfflineOpForKey(doomedKey, TRUE); - if (op) - { - op->SetImapFlagOperation(op->GetNewMessageFlags() | - kImapMsgDeletedFlag); - delete op; - } - } - else - { - // this is a fake one which has been added to the - // database as an offline append draft operation; we - // have to delete it from the offline operations queue - mailDB->DeleteOfflineOp(doomedKey); - } - mailDB->DeleteMessage(doomedKey); - actionInfo->m_msgKeyArray.RemoveAt(0); - mailDB->Close(); - } - } - } - } - else - { - MSG_Pane *pane = urlPane ? urlPane : this; - if (actionInfo && - actionInfo->m_msgKeyArray.GetSize() >= 1) - { - char *deleteUrl = NULL; - char *idString = PR_smprintf("%ld", actionInfo->m_msgKeyArray.GetAt(0)); - MSG_IMAPFolderInfoMail *mailFolderInfo = NULL; - - XP_ASSERT(idString); - - if (actionInfo->m_folderInfo) - { - XP_ASSERT(actionInfo->m_folderInfo->GetType() == FOLDER_IMAPMAIL); - mailFolderInfo = - actionInfo->m_folderInfo->GetIMAPFolderInfoMail(); - } - else - { - char *defaultDrafts = NULL; - PREF_CopyCharPref("mail.default_drafts", &defaultDrafts); - actionInfo->m_folderInfo = GetMaster()->GetFolderInfo(defaultDrafts, FALSE); - mailFolderInfo = actionInfo->m_folderInfo ? - actionInfo->m_folderInfo->GetIMAPFolderInfoMail() : - (MSG_IMAPFolderInfoMail *)NULL; - - XP_FREEIF(defaultDrafts); - } - - if (mailFolderInfo) - { - - deleteUrl = CreateImapDeleteMessageUrl( - mailFolderInfo->GetHostName(), - mailFolderInfo->GetOnlineName(), - mailFolderInfo->GetOnlineHierarchySeparator(), - idString, - TRUE); // ids are uids - } - - if (deleteUrl) - { - URL_Struct *url_struct = NET_CreateURLStruct(deleteUrl, NET_NORMAL_RELOAD); - if (url_struct) - { - url_struct->internal_url = TRUE; - url_struct->fe_data = actionInfo; - url_struct->msg_pane = pane; - GetContext()->imapURLPane = pane; - MSG_UrlQueue::AddUrlToPane ( url_struct, PostDeleteIMAPOldDraftUID, - pane, TRUE ); - } - XP_FREEIF(deleteUrl); - } - XP_FREEIF(idString); - } - } -} - -/* static */ void MSG_Pane::PostLiteSelectExitFunc( URL_Struct *url, - int status, - MWContext *context) -{ - MSG_IMAPFolderInfoMail *imapFolderInfo = (MSG_IMAPFolderInfoMail *)url->fe_data; - if (imapFolderInfo) - { - imapFolderInfo = imapFolderInfo->GetIMAPFolderInfoMail(); - if (imapFolderInfo) - url->msg_pane->SetLoadingImapFolder(imapFolderInfo); - } - - url->fe_data = NULL; - ImapFolderSelectCompleteExitFunction(url, status, context); - NET_FreeURLStruct(url); -} - - -void MSG_Pane::AdoptProgressContext(MWContext *context) -{ - if (m_progressContext) - PW_DestroyProgressContext(m_progressContext); - m_progressContext = context; -} - - -#ifdef GENERATINGPOWERPC -#pragma global_optimizer on -#endif - -char* -MSG_Pane::MakeMailto(const char *to, const char *cc, - const char *newsgroups, - const char *subject, const char *references, - const char *attachment, const char *host_data, - XP_Bool xxx_p, XP_Bool sign_p) -{ - char *to2 = 0, *cc2 = 0; - char *out, *head; - char *qto, *qcc, *qnewsgroups, *qsubject, *qreferences; - char *qattachment, *qhost_data; - char *url; - char *me = MIME_MakeFromField(); - char *to_plus_me = 0; - - to2 = MSG_RemoveDuplicateAddresses (to, ((cc && *cc) ? me : 0), TRUE /*removeAliasesToMe*/); - if (to2 && !*to2) { - XP_FREE(to2); - to2 = 0; - } - - /* This to_plus_me business is so that, in reply-to-all of a message - to which I was a recipient, I don't go into the CC field (that's - what BCC/FCC are for.) */ - if (to2 && cc && me) { - to_plus_me = (char *) XP_ALLOC(XP_STRLEN(to2) + XP_STRLEN(me) + 10); - } - if (to_plus_me) { - XP_STRCPY(to_plus_me, me); - XP_STRCAT(to_plus_me, ", "); - XP_STRCAT(to_plus_me, to2); - } - FREEIF(me); - - cc2 = MSG_RemoveDuplicateAddresses (cc, (to_plus_me ? to_plus_me : to2), TRUE /*removeAliasesToMe*/); - if (cc2 && !*cc2) { - XP_FREE(cc2); - cc2 = 0; - } - - FREEIF(to_plus_me); - - /* Catch the case of "Reply To All" on a message that was from me. - In that case, we've got an empty To: field at this point. - What we should do is, promote the first CC address to the To: - field. But I'll settle for promoting all of them. - */ - if (cc2 && *cc2 && (!to2 || !*to2)) { - FREEIF(to2); - to2 = cc2; - cc2 = 0; - } - - qto = to2 ? NET_Escape (to2, URL_XALPHAS) : 0; - qcc = cc2 ? NET_Escape (cc2, URL_XALPHAS) : 0; - qnewsgroups = newsgroups ? NET_Escape (newsgroups, URL_XALPHAS) : 0; - qsubject = subject ? NET_Escape (subject, URL_XALPHAS) : 0; - qreferences = references ? NET_Escape (references, URL_XALPHAS) : 0; - qattachment = attachment ? NET_Escape (attachment, URL_XALPHAS) : 0; - qhost_data = host_data ? NET_Escape (host_data, URL_XALPHAS) : 0; - - url = (char *) - XP_ALLOC ((qto ? XP_STRLEN(qto) + 15 : 0) + - (qcc ? XP_STRLEN(qcc) + 15 : 0) + - (qnewsgroups ? XP_STRLEN(qnewsgroups) + 15 : 0) + - (qsubject ? XP_STRLEN(qsubject) + 15 : 0) + - (qreferences ? XP_STRLEN(qreferences) + 15 : 0) + - (qhost_data ? XP_STRLEN(qhost_data) + 15 : 0) + - (qattachment ? XP_STRLEN(qattachment) + 15 : 0) + - 60); - if (!url) goto FAIL; - XP_STRCPY (url, "mailto:"); - head = url + XP_STRLEN (url); - out = head; -# define PUSH_STRING(S) XP_STRCPY(out, S), out += XP_STRLEN(S) -# define PUSH_PARM(prefix,var) \ - if (var) { \ - if (out == head) \ - *out++ = '?'; \ - else \ - *out++ = '&'; \ - PUSH_STRING (prefix); \ - *out++ = '='; \ - PUSH_STRING (var); \ - } \ - - PUSH_PARM("to", qto); - PUSH_PARM("cc", qcc); - PUSH_PARM("newsgroups", qnewsgroups); - PUSH_PARM("subject", qsubject); - PUSH_PARM("references", qreferences); - PUSH_PARM("attachment", qattachment); - PUSH_PARM("newshost", qhost_data); - { - char *t = "true"; /* avoid silly compiler warning */ - HG92725 - if (sign_p) PUSH_PARM("sign", t); - } -# undef PUSH_PARM -# undef PUSH_STRING - -FAIL: - FREEIF (to2); - FREEIF (cc2); - FREEIF (qto); - FREEIF (qcc); - FREEIF (qnewsgroups); - FREEIF (qsubject); - FREEIF (qreferences); - FREEIF (qattachment); - FREEIF (qhost_data); - - return url; -} - -#ifdef GENERATINGPOWERPC -#pragma global_optimizer off -#endif - - -MSG_PaneURLChain::MSG_PaneURLChain(MSG_Pane *pane) -{ - m_pane = pane; -} - -MSG_PaneURLChain::~MSG_PaneURLChain() -{ -} - -// override to chain urls. return non-zero to continue. -int MSG_PaneURLChain::GetNextURL() -{ - return 0; -} - -MSG_PostDeliveryActionInfo::MSG_PostDeliveryActionInfo(MSG_FolderInfo *folder) -{ - //XP_ASSERT (folder); //*jefft allowing this in case of the folder was not subscribed - m_folderInfo = folder; -} - -#ifdef XP_WIN - -MSG_SaveMessagesAsTextState::MSG_SaveMessagesAsTextState - (MSG_Pane *pane, const IDArray &idArray, XP_File file) -{ - XP_ASSERT(pane); - m_pane = pane; - - int32 width = 76; - uint i,size = idArray.GetSize(); - - XL_InitializeTextSetup(&m_print); - - PREF_GetIntPref("mailnews.wraplenth", &width); - if (width == 0) width = 72; - else if (width < 10) width = 10; - else if (width > 30000) width = 30000; - m_print.width = (int) width; - - m_print.carg = this; - m_print.completion = MSG_SaveMessagesAsTextState::SaveMsgAsTextComplete; - m_print.out = file; - for (i = 0; i < size; i++) - m_msgKeys.Add(idArray.GetAt(i)); - - m_curMsgIndex = -1; -} - -MSG_SaveMessagesAsTextState::~MSG_SaveMessagesAsTextState() -{ - XP_FileClose(m_print.out); - if (m_print.url) - NET_FreeURLStruct(m_print.url); -} - -void MSG_SaveMessagesAsTextState::SaveNextMessage() -{ - XP_ASSERT (m_curMsgIndex < (int) m_msgKeys.GetSize()); - ++m_curMsgIndex; - if (m_print.url) - NET_FreeURLStruct(m_print.url); - - m_print.url = m_pane->ConstructUrlForMessage (m_msgKeys.GetAt(m_curMsgIndex)); - if (!m_print.url) - delete this; - else - XL_TranslateText(m_pane->GetContext(), m_print.url, &m_print); -} - -/* static */ void -MSG_SaveMessagesAsTextState::SaveMsgAsTextComplete(PrintSetup *print) -{ - // Something is really wrong if print is NULL - XP_ASSERT (print); - if (!print) return; - - MSG_SaveMessagesAsTextState *saveMsgState = - (MSG_SaveMessagesAsTextState *) print->carg; - - XP_ASSERT(saveMsgState); - if (!saveMsgState) - { - // something is really wrong do as much as we can then return - XP_FileClose(print->out); - return; - } - else - { - if ((saveMsgState->m_curMsgIndex+1)< - (int) saveMsgState->m_msgKeys.GetSize()) - { - XP_FileWrite(LINEBREAK, LINEBREAK_LEN, saveMsgState->m_print.out); - saveMsgState->SaveNextMessage(); - } - else - delete saveMsgState; - } -} - -#endif diff --git a/mozilla/lib/libmsg/msgpane.h b/mozilla/lib/libmsg/msgpane.h deleted file mode 100644 index a3bf60ac675..00000000000 --- a/mozilla/lib/libmsg/msgpane.h +++ /dev/null @@ -1,539 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - - -#ifndef _MsgPane_H_ -#define _MsgPane_H_ - -#include "msgprnot.h" -#include "chngntfy.h" -#include "idarray.h" -#include "errcode.h" -#include "msgundmg.h" -#include "msg.h" -#include "abcom.h" // required for adding sender or recipients to address books. - -class MSG_Master; -class MessageDBView; -class MSG_FolderInfo; -class MSG_NewsHost; -class ParseMailboxState; -class msg_Background; -class OfflineImapGoOnlineState; -class MSG_FolderInfoMail; -class MSG_PostDeliveryActionInfo; - -struct tImapFilterClosure; - -struct msg_incorporate_state; -struct MessageHdrStruct; - - - -class PaneListener : public ChangeListener -{ -public: - PaneListener(MSG_Pane *pPane); - virtual ~PaneListener(); - virtual void OnViewChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator); - virtual void OnViewStartChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator); - virtual void OnViewEndChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator); - virtual void OnKeyChange(MessageKey keyChanged, int32 flags, - ChangeListener * instigator); - virtual void OnAnnouncerGoingAway (ChangeAnnouncer *instigator); - virtual void OnAnnouncerChangingView(ChangeAnnouncer * /* instigator */, MessageDBView * /* view */) ; - virtual void StartKeysChanging(); - virtual void EndKeysChanging(); - -protected: - MSG_Pane *m_pPane; - XP_Bool m_keysChanging; // are keys changing? - XP_Bool m_keyChanged; // has a key changed since StartKeysChanging called? -}; - -// If a MSG_Pane has its url chain ptr set to a non-null value, -// it calls the GetNextURL method whenever it finishes a url that is chainable. -// These include delivering queued mail, get new mail, and retrieving -// messages for offline use, oddly enough - the three kinds of urls I need to queue. -// Sadly, neither the msg_Background or MSG_UrlQueue do what I want, -// because I need to chain network urls that have their own exit functions -// and indeed chain urls themselves. -class MSG_PaneURLChain -{ -public: - MSG_PaneURLChain(MSG_Pane *pane); - virtual ~MSG_PaneURLChain(); - virtual int GetNextURL(); // return 0 to stop chaining. -protected: - MSG_Pane *m_pane; -}; - -class MSG_Pane : public MSG_PrefsNotify { -public: - - // hack.. - // Find a pane of the given type that matches the given context. If none, - // find some other pane of the given type (if !contextMustMatch). - static MSG_Pane* FindPane(MWContext* context, - MSG_PaneType type = MSG_ANYPANE, - XP_Bool contextMustMatch = FALSE); - - static XP_Bool PaneInMasterList(MSG_Pane *pane); - - - static MSG_PaneType PaneTypeForURL(const char *url); - XP_Bool NavigationGoesToNextFolder(MSG_MotionType motionType); - MSG_Pane(MWContext* context, MSG_Master* master); - virtual ~MSG_Pane(); - - void SetFEData(void*); - void* GetFEData(); - - virtual XP_Bool IsLinePane(); - virtual MSG_PaneType GetPaneType() ; - virtual void NotifyPrefsChange(NotifyCode /*code*/) ; - - virtual MSG_Pane* GetParentPane(); - - MSG_Pane* GetNextPane() {return m_nextPane;} - - MSG_Pane *GetFirstPaneForContext(MWContext *context); - - MSG_Pane *GetNextPaneForContext(MSG_Pane *pane, MWContext *context); - - virtual MWContext* GetContext(); - MSG_Prefs* GetPrefs(); - - MSG_Master* GetMaster() {return m_master;} - - // these are here mostly to allow thread panes and message panes - // to handle the same commands - if we had a common base class - // for these (other than MSG_Pane), we could put these there. - virtual MessageDBView *GetMsgView(); - virtual void SetMsgView(MessageDBView *); - virtual void SwitchView(MessageDBView *) ; - virtual MSG_FolderInfo *GetFolder() ; - virtual void SetFolder(MSG_FolderInfo *info); - virtual void StartingUpdate(MSG_NOTIFY_CODE /*code*/, MSG_ViewIndex /*where*/, - int32 /*num*/); - virtual void EndingUpdate(MSG_NOTIFY_CODE /*code*/, MSG_ViewIndex /*where*/, - int32 /*num*/); - - // do not use this function unless you really know what you are doing. - // Currently, it is used when a url queue for loading an imap folder - // is interrupted - virtual void CrushUpdateLevelToZero(); - - virtual void OnFolderChanged(MSG_FolderInfo *folder); - virtual void OnFolderDeleted (MSG_FolderInfo *folder); - virtual void OnFolderAdded (MSG_FolderInfo *folder, MSG_Pane *instigator); - virtual void OnFolderKeysAreInvalid (MSG_FolderInfo *folder); - - /* New address book requires a destination address book because it supports multiple ABs */ - virtual MsgERR AddToAddressBook(MSG_CommandType command, MSG_ViewIndex*indices, int32 numIndices, AB_ContainerInfo * destAB); - - virtual MsgERR DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices); - virtual MsgERR GetMailForAFolder(MSG_FolderInfo *folder); - - virtual MsgERR GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, int32 numindices, - XP_Bool *selectable_p, - MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_string, - XP_Bool *plural_p); - - virtual MsgERR SetToggleStatus(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices, - MSG_COMMAND_CHECK_STATE value); - - virtual MSG_COMMAND_CHECK_STATE GetToggleStatus(MSG_CommandType command, - MSG_ViewIndex* indices, - int32 numindices); - - virtual MsgERR GetNavigateStatus(MSG_MotionType motion, MSG_ViewIndex index, - XP_Bool *selectable_p, - const char **display_string); - - MSG_FolderInfo* FindFolderOfType(int type); - - - MSG_FolderInfo* FindMailFolder(const char* pathname, - XP_Bool createIfMissing); - - virtual MsgERR MarkReadByDate (time_t startDate, time_t endDate); - - virtual XP_Bool SetMessagePriority(MessageKey key, MSG_PRIORITY priority); - - MsgERR ComposeNewMessage(); - //ComposeMessageToMany calls ComposeNewMessage if nothing was selected - //otherwise it builds a string containing selected groups to post to. - MsgERR ComposeMessageToMany(MSG_ViewIndex* indices, int32 numIndices); - - virtual MsgERR ComposeNewsMessage(MSG_FolderInfo *folder); - char* CreateForwardSubject(MessageHdrStruct* header); - - virtual void InterruptContext(XP_Bool safetoo); - - virtual int BeginOpenFolderSock(const char *folder_name, - const char *message_id, int32 msgnum, - void **folder_ptr); - virtual int FinishOpenFolderSock(const char* folder_name, - const char* message_id, - int32 msgnum, void** folder_ptr); - virtual void CloseFolderSock(const char* folder_name, const char* message_id, - int32 msgnum, void* folder_ptr); - - virtual int OpenMessageSock(const char *folder_name, const char *msg_id, - int32 msgnum, void *folder_ptr, void **message_ptr, - int32 *content_length); - virtual int ReadMessageSock(const char* folder_name, void* message_ptr, - const char* message_id, int32 msgnum, char* buffer, - int32 buffer_size); - virtual void CloseMessageSock(const char* folder_name, const char* message_id, - int32 msgnum, void* message_ptr); - - virtual MsgERR GetKeyFromMessageId (const char *message_id, MessageKey *outId); - virtual int MarkMessageKeyRead(MessageKey key, const char* xref); - - virtual MSG_ViewIndex GetThreadIndexOfMsg(MessageKey key); - - virtual MsgERR ViewNavigate(MSG_MotionType /*motion*/, - MSG_ViewIndex /*startIndex*/, - MessageKey * /*resultKey*/, MSG_ViewIndex * /*resultIndex*/, - MSG_ViewIndex * /*pThreadIndex*/, - MSG_FolderInfo ** /*ppFolderInfo*/); - - -#ifdef XP_UNIX - void IncorporateFromFile(XP_File infid, void (*donefunc)(void*, XP_Bool), - void* doneclosure); -#endif - - XP_Bool BeginMailDelivery(); - void EndMailDelivery(); - void* IncorporateBegin(FO_Present_Types format_out, char* pop3_uidl, - URL_Struct* url, uint32 flags); - MsgERR IncorporateWrite(void* closure, const char* block, int32 length); - MsgERR IncorporateComplete(void* closure); - MsgERR IncorporateAbort(void* closure, int status); - void ClearSenderAuthedFlag(void *closure); - MsgERR GetNewNewsMessages(MSG_Pane *parentPane, MSG_FolderInfo *folder, XP_Bool getOld = FALSE); - MsgERR GetNewMail(MSG_Pane *parentPane, MSG_FolderInfo *folder); - static void GetNewMailExit (URL_Struct *URL_s, int status, MWContext *window_id); - - char *GetUIDL() {return m_incUidl;} - - MsgERR UpdateNewsCounts(MSG_NewsHost* host); - - virtual int GetURL (URL_Struct *url, XP_Bool isSafe); - // return a url_struct with a url that refers to this pane. - virtual URL_Struct * ConstructUrlForMessage(MessageKey key = MSG_MESSAGEKEYNONE); - static URL_Struct * ConstructUrl(MSG_FolderInfo *folder); - MsgERR TrashMessages (MSG_ViewIndex* indices, int32 numindices); - MsgERR DeleteMessages (MSG_FolderInfo *folder, MSG_ViewIndex* indices, int32 numindices); - - static void CancelDone(URL_Struct *url, int status, MWContext *context); - int CancelMessage(MSG_ViewIndex index); - - // Move/copy operations - - // made these virtual for the search as view operations on the search pane. - virtual MsgERR MoveMessages (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder); - - virtual MsgERR CopyMessages (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder, - XP_Bool deleteAfterCopy); - - virtual MSG_DragEffect DragMessagesStatus (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder, - MSG_DragEffect request); - - MsgERR CopyMessages (const MSG_ViewIndex *indices, - int32 numIndices, - const char *folderPath, - XP_Bool deleteAfterCopy); - - MSG_DragEffect DragMessagesStatus (const MSG_ViewIndex *indices, - int32 numIndices, - const char *folderPath, - MSG_DragEffect request); - - - // moved from MSG_FolderPane; this enables compressing a folder - // in a compose pane in case we need to reclaim some disk space - // after we send/save a draft - MsgERR CompressAllFolders(); - MsgERR EmptyTrash(MSG_FolderInfo *curFolder); - MsgERR EmptyImapTrash(MSG_IMAPHost *host); - - // move some implementation from MSG_FolderPane. Compress the one - // specified mail folder whether it be imap or pop - MsgERR CompressOneMailFolder(MSG_FolderInfoMail *mailFolder); - - int BeginCompressFolder(URL_Struct* url, const char* foldername, - void** closure); - int FinishCompressFolder(URL_Struct* url, const char* foldername, - void* closure); - int CloseCompressFolderSock(URL_Struct* url, void* closure); - - // saves the corresponding keys in m_saveKeys. - int SaveIndicesAsKeys(MSG_ViewIndex* indices, int32 numindices); - - virtual int32 GetNewsRCCount(MSG_NewsHost* host); - virtual char* GetNewsRCGroup(MSG_NewsHost* host); - virtual int DisplaySubscribedGroup(MSG_NewsHost* host, - const char *group, - int32 oldest_message, - int32 youngest_message, - int32 total_messages, - XP_Bool nowvisiting); - - virtual int AddNewNewsGroup(MSG_NewsHost* host, const char* groupname, - int32 oldest, int32 youngest, const char *flag, XP_Bool bXactiveFlags); - - MsgERR CheckForNew(MSG_NewsHost* host); - - virtual UndoManager *GetUndoManager (); - virtual BacktrackManager *GetBacktrackManager(); - - MsgERR DeliverQueuedMessages(); - int BeginDeliverQueued(URL_Struct* url, void** closure); - int FinishDeliverQueued(URL_Struct* url, void* closure); - int CloseDeliverQueuedSock(URL_Struct* url, void* closure); - static void PostDeliverQueuedExitFunc(URL_Struct *url, int status, MWContext *context); - - // related to running the asynch imap filters in a pane - virtual void StoreImapFilterClosureData( tImapFilterClosure *closureData ); - virtual void ClearImapFilterClosureData(); - virtual tImapFilterClosure *GetImapFilterClosureData(); - - // set when loading an imap folder - MSG_IMAPFolderInfoMail *GetLoadingImapFolder() { return m_loadingImapFolder ; } - void SetLoadingImapFolder(MSG_IMAPFolderInfoMail *folder) { m_loadingImapFolder=folder ; } - - // set when the current folder load is kicking off imap filters - void SetActiveImapFiltering(XP_Bool isFiltering) { m_ActiveImapFilters = isFiltering; } - XP_Bool GetActiveImapFiltering() { return m_ActiveImapFilters; } - - - void SetGoOnlineState(OfflineImapGoOnlineState *state) { m_goOnlineState = state; } - OfflineImapGoOnlineState *GetGoOnlineState() { return m_goOnlineState; } - - // Removes this pane from the main pane list. This is so that calls to - // MSG_Master::FindPaneOfType() won't find this one (because, for example, - // we know we're about to delete this one.) - void UnregisterFromPaneList(); - - - // These routines should be used only by the msg_Background class. - msg_Background* GetCurrentBackgroundJob() {return m_background;} - void SetCurrentBackgroundJob(msg_Background* b) {m_background = b;} - - void ClearURLChain() {delete m_urlChain; m_urlChain = NULL;} - MSG_PaneURLChain *GetURLChain() {return m_urlChain;} - void SetURLChain(MSG_PaneURLChain *chain) {m_urlChain = chain;} -static void GetNextURLInChain_CB(URL_Struct* urlstruct, int status, MWContext* context); - void GetNextURLInChain(); - - // Open Message as Draft - MsgERR OpenMessageAsDraft(MSG_ViewIndex* indices, int32 numIndices, - XP_Bool bFwdInline = FALSE); - - // News server admin stuff - XP_Bool ModerateNewsgroupStatus (MSG_FolderInfo *folder); - MsgERR ModerateNewsgroup (MSG_FolderInfo *folder); - XP_Bool NewNewsgroupStatus (MSG_FolderInfo *folder); - MsgERR NewNewsgroup (MSG_FolderInfo *folder, XP_Bool createCategory = FALSE); - static int CompareViewIndices (const void *v1, const void *v2); - MsgERR ApplyCommandToIndices(MSG_CommandType command, MSG_ViewIndex* indices, int32 numIndices); - void SetShowingProgress(XP_Bool showingProgress) {m_showingProgress = showingProgress;} - - MsgERR ManageMailAccount(MSG_FolderInfo *folder); - static void ManageMailAccountExitFunc(URL_Struct *url, - int status, - MWContext *context); - - MsgERR PreflightDeleteFolder (MSG_FolderInfo *folder, XP_Bool getUserConfirmation); - - void SetNumberOfNewImapMailboxes(uint32 numberNew) { m_NumberOfNewImapMailboxes = numberNew; } - uint32 GetNumberOfNewImapMailboxes() { return m_NumberOfNewImapMailboxes; } - virtual PaneListener *GetListener(); - MsgERR CloseView(); - MsgERR ListThreads(); - void GroupNotFound(MSG_NewsHost* host, const char *group, XP_Bool opening); - - XP_Bool DisplayingRecipients (); - - void SetPreImapFolderVerifyUrlExitFunction(Net_GetUrlExitFunc *func) { m_PreImapFolderVerifyUrlExitFunction = func; } - Net_GetUrlExitFunc *GetPreImapFolderVerifyUrlExitFunction() { return m_PreImapFolderVerifyUrlExitFunction; } - - void SetRequestForReturnReceipt(XP_Bool isNeeded); - XP_Bool GetRequestForReturnReceipt(); - - void SetSendingMDNInProgress(XP_Bool inProgress); - XP_Bool GetSendingMDNInProgress(); - - MSG_PostDeliveryActionInfo *GetPostDeliveryActionInfo (); - void SetPostDeliveryActionInfo ( MSG_PostDeliveryActionInfo *actionInfo ); - virtual void SetIMAPListInProgress(XP_Bool inProgress); - virtual XP_Bool IMAPListInProgress(); - virtual void SetIMAPListMailboxExist(XP_Bool bExist); - virtual XP_Bool IMAPListMailboxExist(); - - static void PostLiteSelectExitFunc( URL_Struct *url, int status, MWContext *context); - static void PostDeleteIMAPOldDraftUID(URL_Struct* url_struct, int status, MWContext *context); - void DeleteIMAPOldDraftUID(MSG_PostDeliveryActionInfo *actionInfo, MSG_Pane *urlPane = NULL); - int GetNumstack() { return m_numstack; }; - void AdoptProgressContext(MWContext *context); - - char* MakeMailto(const char *to, const char *cc, - const char *newsgroups, - const char *subject, const char *references, - const char *attachment, const char *host_data, - XP_Bool xxx_p, XP_Bool sign_p); - - /* used with the new address book....all panes must register a entry property sheet call back function if - they want the ability to add sender/all to the address book */ - void SetShowPropSheetForEntryFunc(AB_ShowPropertySheetForEntryFunc * func) { m_entryPropSheetFunc = func; } - AB_ShowPropertySheetForEntryFunc * GetShowPropSheetForEntryFunc() { return m_entryPropSheetFunc;} - -protected: - char* ComputeNewshostArg(); - // GetNewMail helper routines - msg_incorporate_state *CreateIncorporateState (); - int OpenDestFolder(msg_incorporate_state* state); - int CloseDestFolder(msg_incorporate_state* state); - void ResolveIndices (MessageDBView *view, const MSG_ViewIndex *indices, int32 numIndices, IDArray*); - static void IncorporateShufflePartial_s(URL_Struct *url, int status, - MWContext *context); - virtual void IncorporateShufflePartial(URL_Struct *url, int status, - MWContext *context); - - void ClearNewInOpenFolders(MSG_FolderInfo *folderOfGetNewMsgs); - ParseMailboxState *GetParseMailboxState(const char *folderName); - - // Callback for FE_PromptForFileName - static void SaveMessagesAsCB(MWContext *context, char *file_name, - void *closure); - - // callback function for showing a property sheet pane. Used by address book panes, message pane and thread pane... - AB_ShowPropertySheetForEntryFunc * m_entryPropSheetFunc; - - static void UpdateNewsCountsDone_s(URL_Struct*, int status, MWContext*); - virtual void UpdateNewsCountsDone(int status); - - // Whether newly discovered newsgroups should have the "new" bit set on - // them. - virtual XP_Bool AddGroupsAsNew(); - - static void CheckForNewDone_s(URL_Struct* url_struct, int status, - MWContext* context); - virtual void CheckForNewDone(URL_Struct* url_struct, int status, - MWContext* context); - - virtual XP_Bool ShouldDeleteInBackground(); - - - IDArray m_saveKeys; // this is used to save keys used for a - // pane command in a callback from FE_PromptForFileName. - // This is ugly but we only get one closure - // and that's our this ptr. - - static MSG_Pane* MasterList; - MSG_Pane* m_nextInMasterList; - - - MSG_Pane* m_nextPane; // Link of panes created with the same master. - - - MSG_Master* m_master; - MWContext* m_context; - MSG_Prefs* m_prefs; - void* m_fedata; - int m_numstack; // used for DEBUG, and to tell listeners - // if we're in an update block. - - // get new mail handling state - char *m_incUidl; // Special UIDL to inc from, if any. hack - - int32 m_numNewGroups; // How many new newsgroups have been noticed - // from the news server. - - UndoManager *m_undoManager; - BacktrackManager *m_backtrackManager; - - tImapFilterClosure *m_ImapFilterData; - - OfflineImapGoOnlineState *m_goOnlineState; - - XP_Bool m_ActiveImapFilters; - MSG_IMAPFolderInfoMail *m_loadingImapFolder; - - static XP_Bool m_warnedInvalidHostTable; - - msg_Background* m_background; - MSG_PaneURLChain *m_urlChain; - MSG_NewsHost* m_hostCheckingForNew; - time_t m_checkForNewStartTime; - XP_Bool m_showingProgress; - XP_Bool m_requestForReturnReceipt; - XP_Bool m_sendingMDNInProgress; - - uint32 m_NumberOfNewImapMailboxes; - - Net_GetUrlExitFunc *m_PreImapFolderVerifyUrlExitFunction; - MSG_PostDeliveryActionInfo *m_actionInfo; - XP_Bool m_imapListInProgress; - XP_Bool m_imapListMailboxExist; - - msg_YesNoDontKnow m_displayRecipients; - MWContext *m_progressContext; -}; - - -/* Message post delivery action info - * Used for deleting draft message when done sending - * or turning on the Replied/Forwarded flag after - * successfully sending/forwarding a message - */ - -class MSG_PostDeliveryActionInfo : public MSG_ZapIt -{ -public: - MSG_PostDeliveryActionInfo(MSG_FolderInfo *folderInfo); - - MSG_FolderInfo *m_folderInfo; - XPDWordArray m_msgKeyArray; /* origianl message keyArray */ - uint32 m_flags; -}; - - - -#endif /* _MsgPane_H_ */ diff --git a/mozilla/lib/libmsg/msgppane.cpp b/mozilla/lib/libmsg/msgppane.cpp deleted file mode 100644 index f0c93e304af..00000000000 --- a/mozilla/lib/libmsg/msgppane.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "msgppane.h" -#include "msgfpane.h" -#include "msgmpane.h" -#include "msgtpane.h" -#include "msgfinfo.h" - -MSG_ProgressPane::MSG_ProgressPane(MWContext* context, MSG_Master* master, - MSG_Pane *parentPane) -: MSG_Pane(context, master) -{ - m_parentPane = parentPane; - - // progress panes must not look appetizing to JavaScript - //XP_ASSERT(MWContextMailNewsProgress == context->type); - if (context->type != MWContextMailNewsProgress) - context->type = MWContextMailNewsProgress; - if (m_parentPane) - m_parentPane->SetShowingProgress(TRUE); -} - -MSG_ProgressPane::~MSG_ProgressPane() -{ - if (GetParentPane()) - m_parentPane->SetShowingProgress(FALSE); - - if (m_context->imapURLPane == this) - m_context->imapURLPane = NULL; -} - - -MsgERR -MSG_ProgressPane::DoCommand(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numIndices) -{ - int status = 0; - - if ((command == MSG_GetNewMail || command == MSG_GetNextChunkMessages) && m_parentPane) - { - MSG_FolderInfo *folder = m_parentPane->GetFolder(); - if (folder && folder->IsNews()) - status = GetNewNewsMessages(m_parentPane, folder, command == MSG_GetNextChunkMessages); - else if (command == MSG_GetNewMail) - status = GetNewMail(m_parentPane, folder); - return status; - } - else if (command == MSG_CompressFolder) - { - XP_ASSERT(numIndices <= 1); - MSG_FolderInfo *folder = NULL; - switch (m_parentPane->GetPaneType()) { - case MSG_FOLDERPANE: - if (numIndices == 1) - folder = ((MSG_FolderPane*) m_parentPane)->GetFolderInfo(indices[0]); - break; - case MSG_THREADPANE: - folder = ((MSG_ThreadPane *) m_parentPane)->GetFolder(); - break; - case MSG_MESSAGEPANE: - folder = ((MSG_MessagePane *) m_parentPane)->GetFolder(); - break; - default: - XP_ASSERT(FALSE); // msg command status should be false - break; - } - - if (folder && folder->IsMail()) - { - MSG_FolderInfoMail *mailFolder = folder->GetMailFolderInfo(); - if (mailFolder) - status = CompressOneMailFolder(mailFolder); - } - - return status; - } - else - return MSG_Pane::DoCommand(command, indices, numIndices); -} - -MSG_FolderInfo *MSG_ProgressPane::GetFolder() -{ - MSG_FolderInfo *retFolder = NULL; - if (GetParentPane()) - retFolder = m_parentPane->GetFolder(); - return retFolder; -} - -void MSG_ProgressPane::CrushUpdateLevelToZero() -{ - if (GetParentPane()) - m_parentPane->CrushUpdateLevelToZero(); -} - -void MSG_ProgressPane::StartingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num) -{ - if (GetParentPane()) - m_parentPane->StartingUpdate(code, where, num); -} -void MSG_ProgressPane::EndingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num) -{ - if (GetParentPane()) - m_parentPane->EndingUpdate(code, where, num); -} - -MSG_Pane* MSG_ProgressPane::GetParentPane() -{ - // parent pane may have been deleted w/o us knowing, so check if it's in master list. - if (!PaneInMasterList(m_parentPane)) - m_parentPane = NULL; - return m_parentPane; -} - -void MSG_ProgressPane::OnFolderAdded (MSG_FolderInfo *folder, MSG_Pane *instigator) -{ - // If the FE has run the IMAP New Folder command in a progress pane, they need - // to know when to take down the New Folder dialog box. - if (instigator == this) - FE_PaneChanged (this, FALSE, MSG_PaneNotifySelectNewFolder, MSG_VIEWINDEXNONE); - - MSG_Pane::OnFolderAdded (folder, instigator); -} - diff --git a/mozilla/lib/libmsg/msgppane.h b/mozilla/lib/libmsg/msgppane.h deleted file mode 100644 index 03603d292c0..00000000000 --- a/mozilla/lib/libmsg/msgppane.h +++ /dev/null @@ -1,51 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgProgressPane_H_ -#define _MsgProgressPane_H_ - -#include "msgpane.h" - -class MSG_ProgressPane : public MSG_Pane -{ -public: - MSG_ProgressPane(MWContext* context, MSG_Master* master, MSG_Pane *parentPane); - virtual ~MSG_ProgressPane(); - virtual MsgERR DoCommand(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numIndices); - virtual MSG_FolderInfo *GetFolder(); - virtual void CrushUpdateLevelToZero(); - virtual void StartingUpdate(MSG_NOTIFY_CODE /*code*/, MSG_ViewIndex /*where*/, - int32 /*num*/); - virtual void EndingUpdate(MSG_NOTIFY_CODE /*code*/, MSG_ViewIndex /*where*/, - int32 /*num*/); - - virtual MSG_Pane* GetParentPane(); - - virtual void OnFolderAdded (MSG_FolderInfo *, MSG_Pane *); - -protected: - MSG_Pane *m_parentPane; -}; -#endif - - diff --git a/mozilla/lib/libmsg/msgprefs.cpp b/mozilla/lib/libmsg/msgprefs.cpp deleted file mode 100644 index 3789d83e676..00000000000 --- a/mozilla/lib/libmsg/msgprefs.cpp +++ /dev/null @@ -1,1599 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "errcode.h" - -#include "rosetta.h" -#include "msgprefs.h" -#include "msgprnot.h" -#include "imap.h" -#include "prefapi.h" -#include "msgmast.h" -#include "msgfinfo.h" -#include "proto.h" // for XP_FindSomeContext -#include "pmsgfilt.h" -#include "msgimap.h" -#include "imaphost.h" - -extern "C" -{ - #include "mkreg.h" -} - -#include "ptrarray.h" - -#ifdef XP_MAC - #include "Memory.h" - #include "Files.h" - #include "ufilemgr.h" - #include "uprefd.h" -#else - extern "C" - { - const char *FE_GetFolderDirectory(MWContext *c); - void NET_SetMailRelayHost(char *); - void NET_SetNewsHost(const char *); - } -#endif - -extern "C" -{ - extern int MK_MSG_MAIL_DIRECTORY_CHANGED; - extern int MK_MSG_SENT_L10N_NAME; - extern void MIME_ConformToStandard(XP_Bool conform_p); - extern int MK_MSG_UNABLE_TO_SAVE_DRAFT; - extern int MK_MSG_UNABLE_TO_SAVE_TEMPLATE; -} - -// Notify listeners that something got changed. updateCode is an int16 instead of -// a MSG_PrefsNotify::NotifyCode because it was deemed a Bad Thing to include all of -// msgprnot.h just to pick up that definition. -void MSG_Prefs::Notify(int16 updateCode) -{ - int i; - - // if we are changing mail servers, trash cached path to imap databases - // m_IMAPdirectory will be reset by next reload call - if ((updateCode == MSG_PrefsNotify::MailServerType) || (updateCode == MSG_PrefsNotify::PopHost)) - FREEIF(m_IMAPdirectory); - - // Do the notification in such a way that deleted listeners don't - // foul up the notification for everyone else. (m_notifying affects - // the behavior of RemoveNotify so that it only NULLs deleted listeners.) - m_notifying = TRUE; - for (i = 0; i < m_numnotify ; i++) - { - if (m_notify[i]) - m_notify[i]->NotifyPrefsChange((MSG_PrefsNotify::NotifyCode) updateCode); - } - m_notifying = FALSE; - - // Clean up after nulled pointers. - for(i=(m_numnotify-1);i >= 0; i--) - { - if (! m_notify[i]) - { - if (i == (m_numnotify-1)) - // last element is null, keep decrementing the count - m_numnotify--; - else - // replace this null element with the last in the list - m_notify[i] = m_notify[--m_numnotify]; - } - } -} - - -char *headerPrefNames[] = -{ - "mail.identity.reply_to", - "mail.default_cc", - "mail.default_fcc", - "mail.imap_sentmail_path", - "news.default_cc", - "news.default_fcc", - "news.imap_sentmail_path", -}; - -enum headerPrefIndices -{ - mail_identity_reply_to=0, - mail_default_cc, - mail_default_fcc, // this is a mess don't change order - mail_imap_sentmail_path, - news_default_cc, - news_default_fcc, // this is a mess don't change order - news_imap_sentmail_path, - num_of_header_prefs -}; - -void MSG_Prefs::PlatformFileToURLPath(const char *platformFile, char **result) -{ - *result = NULL; - - char *tmp = XP_PlatformFileToURL(platformFile); - XP_ASSERT(tmp && !strncmp(tmp, "file://", 7)); - if (tmp && !strncmp(tmp, "file://", 7)) - *result = XP_STRDUP(&(tmp[7])); - -#ifdef XP_UNIX - if ( *result && **result == '~' ) { - char buf[1024]; - char* home_dir = getenv("HOME"); - char* tmp = (*result) + 1; - - while ( *tmp == '/' ) - tmp++; - - /* trim trailing slashes in home_dir */ - while ( (tmp = strrchr(home_dir, '/')) && tmp[1] == '\0' ) - *tmp = '\0'; - - PR_snprintf(buf, sizeof(buf), "%s/%s", home_dir ? home_dir : "", tmp); - XP_FREE(*result); - *result = XP_STRDUP(buf); - } -#endif - - FREEIF(tmp); -} - -static XP_Bool ShouldSavePrefAsBinaryAlias(const char* prefname) -{ -#ifdef XP_MAC - // Return TRUE if path names are saved as binary alias prefs (the default). - // Return FALSE for the URL cases, now saved as a string (new in Nova). These are IMAP - // fccs, and all drafts and all templates. - if (XP_STRCMP(prefname, "mail.imap_sentmail_path") == 0) - return FALSE; // URL - else if (XP_STRCMP(prefname, "news.imap_sentmail_path") == 0) - return FALSE; // URL - else if (XP_STRCMP(prefname, "mail.default_drafts") == 0) - return FALSE; // URL - else if (XP_STRCMP(prefname, "mail.default_templates") == 0) - return FALSE; // URL - return TRUE; -#else - return FALSE; -#endif // XP_MAC -} - -int MSG_Prefs::GetXPDirPathPref(const char *prefName, XP_Bool /*expectFile*/, char **result) -{ - int returnVal = PREF_NOERROR; - char *tmp = NULL; - *result = NULL; // in case we fail - if (ShouldSavePrefAsBinaryAlias(prefName)) - { - returnVal = PREF_CopyPathPref(prefName, &tmp); - if (returnVal == PREF_NOERROR) - *result = tmp; - return returnVal; - } - returnVal = PREF_CopyCharPref(prefName, &tmp); // paths are strings elsewhere - if (returnVal == PREF_NOERROR) - { - // Convert pathname to an xp path. - if (XP_STRLEN(tmp) > 0 && NET_URL_Type(tmp) != IMAP_TYPE_URL && - NET_URL_Type(tmp) != MAILBOX_TYPE_URL) - { - PlatformFileToURLPath(tmp,result); - XP_FREEIF(tmp); - } - else - *result = tmp; - } - return returnVal; -} - -int MSG_Prefs::SetXPMailFilePref(const char* /*prefName*/, char *xpPath) -{ - int returnVal = PREF_NOERROR; - - if (NET_URL_Type(xpPath) != IMAP_TYPE_URL) - { - // ## mwelch 4.0b2 hack! Create the mail file if it doesn't already exist. - // Mail parent folder was created at app startup, so it is - // safe to assume that the parent directory exists. - char *platformPath = WH_FileName(xpPath, xpMailFolder); - XP_File fp = XP_FileOpen(xpPath, xpMailFolder, XP_FILE_APPEND_BIN); - if (fp) - XP_FileClose(fp); - - XP_FREEIF(platformPath); - } - return returnVal; -} // MSG_Prefs::SetXPMailFilePref - -void MSG_Prefs::SetMailNewsProfileAgeFlag(int32 flag, XP_Bool set /* = TRUE */) -{ - // each 'trick' uses this function to register that it is done, but we do not - // want one trick to erase the completion of another. - int32 currentAge = 0; - PREF_GetIntPref("mailnews.profile_age",&currentAge); - if (set) - { - if (!(currentAge & flag)) - PREF_SetIntPref("mailnews.profile_age",(currentAge | flag)); - } - else - { - if (currentAge & flag) - PREF_SetIntPref("mailnews.profile_age",(currentAge | ~flag)); - } - m_dirty = TRUE; -} - -int32 MSG_Prefs::GetStartingMailNewsProfileAge() -{ - Reload(); - return m_startingMailNewsProfileAge; -} - -void MSG_Prefs::Reload() -{ - if (m_dirty) - { - // Temp vars we need to convey pref values. - int32 intPref; - char *strPref; - int prefError = PREF_NOERROR; - - // Load in boolean prefs. - PREF_GetBoolPref("mail.fixed_width_messages", &m_plainText); - PREF_GetBoolPref("mail.auto_quote", &m_autoQuote); - PREF_GetBoolPref("news.show_pretty_names", &m_showPrettyNames); - PREF_GetBoolPref("news.notify.on", &m_newsNotifyOn); - PREF_GetBoolPref("mail.cc_self", &m_mailBccSelf); - PREF_GetBoolPref("news.cc_self", &m_newsBccSelf); - PREF_GetBoolPref("mail.wrap_long_lines", &m_wraplonglines); - HG63256 - - PREF_GetBoolPref("mail.inline_attachments", &m_noinline); - PREF_GetBoolPref("mail.prompt_purge_threshhold", &m_purgeThreshholdEnabled); //Ask about compacting folders - m_noinline = !m_noinline; - - // Load in int/enum prefs. - intPref = (int) MSG_ItalicFont; // make italic if pref call fails - PREF_GetIntPref("mail.quoted_style", &intPref); - m_citationFont = (MSG_FONT) intPref; - - intPref = (int) MSG_NormalSize; // make normal size if pref call fails - PREF_GetIntPref("mail.quoted_size", &intPref); - m_citationFontSize = (MSG_CITATION_SIZE) intPref; - - intPref = 1; - PREF_GetIntPref("mailnews.nav_crosses_folders", &intPref); - m_navCrossesFolders = intPref; - - PREF_GetIntPref("mailnews.profile_age",&m_startingMailNewsProfileAge); - - intPref = 1; // default in case we fail - prefError = PREF_GetIntPref("mail.show_headers", &intPref); - switch (intPref) - { - case 0: m_headerstyle = MSG_ShowMicroHeaders; break; - case 1: m_headerstyle = MSG_ShowSomeHeaders; break; - case 2: m_headerstyle = MSG_ShowAllHeaders; break; - default: - XP_ASSERT(FALSE); - break; - } - - intPref = 0; // if no pref is set, return 0 - let the backend set the default port - HG87635 - - - // Server preference. - // ### mwelch This used to use mail.use_imap, but we're switching - // to mail.server_type as of 4.0b2. - intPref = 0; // pop by default - prefError = PREF_GetIntPref("mail.server_type", &intPref); - m_mailInputType = intPref; - m_mailServerIsIMAP = (m_mailInputType == 1); - - PREF_GetIntPref("mail.purge_threshhold", &m_purgeThreshhold); - // Get string prefs. - - if (!m_freezeMailDirectory) - { - // m_localMailDirectory - strPref = m_localMailDirectory; - m_localMailDirectory = NULL; - - // Get the m_localMailDirectory pref. Passing in TRUE (expectFile) since the flag - // tells the Mac-specific code to make use of the name (usually "\pMail") in the FSSpec - // as well as the parent directory ID. - GetXPDirPathPref("mail.directory", TRUE, &m_localMailDirectory); - -#if defined (XP_MAC) - if (!m_localMailDirectory || !*m_localMailDirectory) - { - Assert_(FALSE); // can this happen? If not, remove this. - char *newDirURL = NULL; - // ### mwelch This is a hack, because the MacFE - // doesn't set the mail root directory by default. - FSSpec mailFolder = CPrefs::GetFolderSpec(CPrefs::MailFolder); - newDirURL = CFileMgr::EncodedPathNameFromFSSpec(mailFolder, true); - m_localMailDirectory = newDirURL; - } -#endif - - // It is still possible to have a NULL directory at this - // point in the code. This is because the WinFE sets the default - // mail directory preference after creating the prefs object. - - if (m_localMailDirectory) - { - // by arbitrary convention, the directory shouldn't have - // a trailing slash - int len = XP_STRLEN(m_localMailDirectory); - if (len && m_localMailDirectory[len-1] == '/') - m_localMailDirectory[len-1] = '\0'; - -#if !defined(XP_MAC) && !defined(XP_WIN) && !defined(XP_OS2) - if (!strPref || strcmp(m_localMailDirectory, strPref)) - { - // Create the directory if it doesn't exist (Unix only) - XP_StatStruct dirStat; - if (-1 == XP_Stat(m_localMailDirectory, &dirStat, xpMailFolder)) - XP_MakeDirectory (m_localMailDirectory, xpMailFolder); - } -#endif - } - if (strPref) XP_FREE(strPref); - } - HG93653 - char onlineDir[256]; - onlineDir[0] = '\0'; - int stringSize = 256; - PREF_GetCharPref("mail.imap.server_sub_directory", - onlineDir, &stringSize); - if ( *onlineDir && (*(onlineDir + XP_STRLEN(onlineDir) - 1) != '/') ) - XP_STRCAT(onlineDir, "/"); - if ((!m_OnlineImapSubDir) || - ((m_OnlineImapSubDir) && - XP_STRCMP(onlineDir, m_OnlineImapSubDir))) - { - FREEIF(m_OnlineImapSubDir); - m_OnlineImapSubDir = XP_STRDUP(onlineDir); - //if (XP_STRCMP(m_OnlineImapSubDir,"")) // only set it if it is not empty - // IMAP_SetNamespacesFromPrefs(GetPopHost(), m_OnlineImapSubDir, "", ""); - } - - PREF_GetBoolPref("mailnews.searchServer", &m_searchServer); - - PREF_GetBoolPref("mailnews.searchSubFolders", &m_searchSubFolders); - - PREF_GetBoolPref("mailnews.confirm.moveFoldersToTrash", &m_confirmMoveFoldersToTrash); - - FREEIF(m_customHeaders); - PREF_CopyCharPref("mailnews.customHeaders",&m_customHeaders); - - FREEIF(m_citationColor); - PREF_CopyCharPref("mail.citation_color", &m_citationColor); - - FREEIF(m_popHost); - PREF_CopyCharPref("network.hosts.pop_server", &m_popHost); - - PREF_GetBoolPref("mail.imap.delete_is_move_to_trash", &m_ImapDeleteMoveToTrash); - - // Set the smtp and news (nntp) hosts. - strPref = NULL; - prefError = PREF_CopyCharPref("network.hosts.smtp_server", &strPref); - if (prefError == PREF_NOERROR) - NET_SetMailRelayHost(strPref); - XP_FREEIF(strPref); - - // Refresh the username. - strPref = NULL; - prefError = PREF_CopyCharPref("mail.pop_name", &strPref); - if (strPref) - { - NET_SetPopUsername(strPref); - XP_FREE(strPref); - } - - MSG_FolderInfo *folderInfo = NULL; - - for(int i=0;i<(int) num_of_header_prefs ;i++) - { - strPref = NULL; - // Only look at the path if the "use it" bool flag is set! - // Bug #45449 jrm - XP_Bool doingFccPath = TRUE, wantsFccPath = FALSE; - if (i == mail_default_fcc || i == mail_imap_sentmail_path) -#ifdef XP_MAC - PREF_GetBoolPref("mail.use_fcc", &wantsFccPath); -#else - wantsFccPath = TRUE; -#endif - else if (i == news_default_fcc || i == news_imap_sentmail_path) -#ifdef XP_MAC - PREF_GetBoolPref("news.use_fcc", &wantsFccPath); -#else - wantsFccPath = TRUE; -#endif - else - doingFccPath = FALSE; - if (doingFccPath && wantsFccPath) - { - prefError = GetXPDirPathPref(headerPrefNames[i], TRUE, &strPref); - if ((prefError != PREF_NOERROR) || (!strPref) || (!*strPref) || - (m_localMailDirectory && !XP_STRCMP(strPref, m_localMailDirectory))) - { - // Take the directory preference and add "Sent" to it. - char *sent = XP_GetString(MK_MSG_SENT_L10N_NAME); - XP_FREEIF(strPref); - - if (m_localMailDirectory && *m_localMailDirectory) - strPref = PR_smprintf("%s/%s", m_localMailDirectory, sent); - -#ifdef XP_MAC - // Still may need to ensure the file exists. - SetXPMailFilePref(headerPrefNames[i], strPref); -#endif - } - } - else if (!doingFccPath) - PREF_CopyCharPref(headerPrefNames[i], &strPref); - FREEIF(m_defaultHeaders[i]); - m_defaultHeaders[i] = strPref; - } - - // Collect all the email addresses which specify the user. We'll need to know them - // when checking the Reply recipients, or doing MDN receipts - if (PREF_NOERROR == PREF_CopyCharPref ("mail.identity.useremail.aliases", &strPref)) - { - if (*strPref) // default is empty string. don't create an array for that - { - if (!m_emailAliases) - m_emailAliases = new msg_StringArray (TRUE /*ownsMemory*/); - if (m_emailAliases) - { - m_emailAliases->RemoveAll(); - m_emailAliases->ImportTokenList (strPref); - } - } - XP_FREE (strPref); - } - - // Collect the email addresses which can't be considered aliases for this user. - // This is intended to keep the email aliases feature from defeating the reply-to - // header in messages - char *replyTo = m_defaultHeaders[mail_identity_reply_to]; - if (replyTo && *replyTo) - { - if (!m_emailAliasesNot) - m_emailAliasesNot = new msg_StringArray (TRUE); - if (m_emailAliasesNot) - { - char *addresses = NULL; - int num = 0; - if (0 != (num = MSG_ParseRFC822Addresses (replyTo, NULL, &addresses))) - { - // We're ignoring the name of the reply-to header, since the - // actual address is all we care about for the alias calculation - m_emailAliasesNot->RemoveAll(); - for (int i = 0; i < num; i++) - { - m_emailAliasesNot->Add (addresses); - addresses += XP_STRLEN (addresses) + 1; - } - } - } - } - - - } - m_dirty = FALSE; -} - -int PR_CALLBACK MSG_PrefsChangeCallback(const char * prefName, void *data) -{ - MSG_Prefs *prefs = (MSG_Prefs *) data; - XP_Bool boolPref; - char *strPref = NULL; - int prefError = PREF_NOERROR; - - if (prefs) - prefs->m_dirty = TRUE; - - // Depending on the preference being changed, - // notify listeners as to the change. - - // Default headers first, since we have easy access to them. - for (int i=0;i<(int) num_of_header_prefs;i++) - { - if (!XP_STRCMP(prefName, headerPrefNames[i])) - { - prefs->Notify(MSG_PrefsNotify::DefaultHeader); - return PREF_NOERROR; - } - } - - if (!XP_STRNCMP(prefName, "netw", 4)) - { - if (!XP_STRCMP(prefName, "network.hosts.pop_server")) - { - NET_SetPopPassword(NULL); // invalidate pop3 password #54109 - IMAP_SetPassword(NULL); - PREF_SetCharPref("mail.pop_password", ""); - prefs->Notify(MSG_PrefsNotify::PopHost); - } - else - { - // cause smtp and news host to be set to new values immediately - if (prefs) prefs->Reload(); - } - } - else if (!XP_STRNCMP(prefName, "mail", 4)) - { - if (!XP_STRCMP(prefName,"mail.fixed_width_messages")) - prefs->Notify(MSG_PrefsNotify::PlaintextFont); - - else if (!XP_STRCMP(prefName,"mail.auto_quote")) - prefs->Notify(MSG_PrefsNotify::AutoQuote); - - else if (!XP_STRCMP(prefName,"mail.strictly_mime")) - { - XP_Bool useQP = FALSE; - - prefError = PREF_GetBoolPref(prefName, &useQP); - if (prefError == PREF_NOERROR) - MIME_ConformToStandard(useQP); - } - else if (!XP_STRCMP(prefName,"mail.server_type")) - { - NET_SetPopPassword(NULL); // invalidate pop3 password #54109 - IMAP_SetPassword(NULL); - PREF_SetCharPref("mail.pop_password", ""); - prefs->Notify(MSG_PrefsNotify::MailServerType); - } - HG32428 - else if (!XP_STRNCMP(prefName, "mail.imap.server.", 17)) - if (prefs->m_masterForBiff && prefs->m_masterForBiff->GetIMAPHostTable()) - prefs->m_masterForBiff->GetIMAPHostTable()->UpdatePrefs(prefName); - - else if (!XP_STRCMP(prefName,"mail.cc_self")) - prefs->Notify(MSG_PrefsNotify::DefaultBCC); - - else if (!XP_STRCMP(prefName,"mail.quoted_style")) - prefs->Notify(MSG_PrefsNotify::CitationStyle); - else if (!XP_STRCMP(prefName,"mail.quoted_size")) - prefs->Notify(MSG_PrefsNotify::CitationStyle); - else if (!XP_STRCMP(prefName,"mail.citation_color")) - prefs->Notify(MSG_PrefsNotify::CitationStyle); - - else if (!XP_STRCMP(prefName,"mail.directory")) - { - char *dirTemp = NULL; - - // The WinFE has the habit of - // setting the default mail.directory preference - // after initializing the mail master. So, we test - // the pref we get from GetXPDirPathPref (which follows - // the logic of PREF_GetCharPref) against what we have, - // if we have a preference at all. - - // Get the new directory preference. - MSG_Prefs::GetXPDirPathPref("mail.directory", FALSE, &dirTemp); - - // Only put up an alert if we have a previous mail - // directory specified, and if the new directory - // doesn't match the one we already have. - if (prefs && (prefs->m_localMailDirectory) && *(prefs->m_localMailDirectory) && dirTemp && strcmp(dirTemp, prefs->m_localMailDirectory)) - { - // ### mwelch Find any context we can - // in order to display the alert. ugh. -#ifndef XP_UNIX // X weirdness is such that their alert has to appear elsewhere - MWContext *ctxt = XP_FindSomeContext(); - FE_Alert(ctxt, XP_GetString(MK_MSG_MAIL_DIRECTORY_CHANGED)); -#endif - // don't reload directory pref - prefs->m_freezeMailDirectory = TRUE; - } - else if ((prefs) && !(prefs->m_localMailDirectory && *prefs->m_localMailDirectory)) - { - // We are a new prefs object and couldn't find a user - // pref when we first loaded. Reload immediately. - prefs->Reload(); - } - - // Clear out the FCC paths when the mail directory changes - // so we don't keep FCCing into the old directory. We'll - // create new system folders on restart. - PREF_SetCharPref ("mail.default_fcc", ""); - PREF_SetCharPref ("news.default_fcc", ""); - - // Free what got allocated when we got the dir pref. - XP_FREEIF(dirTemp); - } - else if (!XP_STRCMP(prefName,"mail.imap.server_sub_directory")) - prefs->Notify(MSG_PrefsNotify::ImapOnlineDir); - else if (!XP_STRCMP(prefName,"mail.wrap_long_lines")) - prefs->Notify(MSG_PrefsNotify::WrapLongLines); - - // Other prefs not covered in original MSG_Prefs object - else if (!XP_STRCMP(prefName,"mail.leave_on_server")) - { - PREF_GetBoolPref(prefName, &boolPref); - NET_LeavePopMailOnServer(boolPref); - } - else if (!XP_STRCMP(prefName, "mail.pop_name")) - { - // Refresh the username. - prefError = PREF_CopyCharPref("mail.pop_name", &strPref); - if (strPref) - { - HG82454 - NET_SetPopUsername(strPref); - XP_FREE(strPref); - } - - // Act as if the server has changed. - prefs->Notify(MSG_PrefsNotify::PopHost); - } - else if (!XP_STRCMP(prefName, "mail.remember_password")) - { - PREF_GetBoolPref(prefName, &boolPref); - if (!boolPref) - PREF_SetCharPref("mail.pop_password", ""); - } - else if (!XP_STRCMP(prefName,"mail.imap.delete_is_move_to_trash")) - prefs->Notify(MSG_PrefsNotify::ChangeIMAPDeleteModel); - } - else // if (!XP_STRNCMP(prefName, "news", 4)) - { - if (!XP_STRCMP(prefName, "news.server_change_xaction")) - { - // Now we know that all news server prefs have been tweaked. - // If the default news server isn't in the host table, add it. - // (Thankfully, we just need to add it, and let the MSG_Master - // do the searching.) - MSG_Master *master = prefs->m_masterForBiff; - if (master) - { - char *newsHost = NULL; - int32 port = -1; - XP_Bool xxx = FALSE; - PREF_CopyCharPref("network.hosts.nntp_server", &newsHost); - PREF_GetIntPref("news.server_port", &port); - HG43788 - if ((newsHost != NULL) && (port >= 0)) - master->AddNewsHost(newsHost, xxx, port); - } - } - else if (!XP_STRCMP(prefName,"news.cc_self")) - prefs->Notify(MSG_PrefsNotify::DefaultBCC); - } - - return PREF_NOERROR; -} - -MSG_Prefs::MSG_Prefs() -{ - m_citationFont = MSG_PlainFont; - m_citationFontSize = MSG_Bigger; - m_plainText = TRUE; - m_mailServerIsIMAP = FALSE; - HG98298 - m_ImapDeleteMoveToTrash = TRUE; - m_IMAPdirectory = NULL; - m_headerstyle = MSG_ShowSomeHeaders; - m_masterForBiff = NULL; - m_notifying = FALSE; - - // Set up dirty flag. - m_dirty = TRUE; - m_freezeMailDirectory = FALSE; - - m_emailAliases = NULL; - m_emailAliasesNot = NULL; - - // Set up prefs callback. - PREF_RegisterCallback("mail.", &MSG_PrefsChangeCallback, this); - PREF_RegisterCallback("news.", &MSG_PrefsChangeCallback, this); - PREF_RegisterCallback("mailnews.", &MSG_PrefsChangeCallback, this); - PREF_RegisterCallback("network.hosts.", &MSG_PrefsChangeCallback, this); - - // Load pref values from the prefs api. - // (We can rely on the string members being NULL initially - // since we derive from MSG_Zap.) - Reload(); - - PREF_RegisterCallback ("mail.use_imap_sentmail", - &MSG_UseImapSentmailPrefChanged, this); - PREF_RegisterCallback ("mail.default_fcc", &MSG_FccPrefChanged, this); - PREF_RegisterCallback ("mail.imap_sentmail_path", &MSG_FccPrefChanged, - this); - - PREF_RegisterCallback ("news.use_imap_sentmail", - &MSG_UseImapSentmailPrefChanged, this); - PREF_RegisterCallback ("news.default_fcc", &MSG_FccPrefChanged, this); - PREF_RegisterCallback ("news.imap_sentmail_path", &MSG_FccPrefChanged, - this); - - PREF_RegisterCallback ("mail.server_type", &MSG_MailServerTypeChanged, - this); - - PREF_RegisterCallback ("mail.default_drafts", &MSG_DraftsPrefChanged, this); - PREF_RegisterCallback ("mail.default_templates", &MSG_TemplatesPrefChanged, - this); - - // we are only interested in what this prefs value was at startup so initialize it - // here rather than in Reload() - m_startingMailNewsProfileAge = 0; - PREF_GetIntPref("mailnews.profile_age",&m_startingMailNewsProfileAge); - HG92734 -} - -MSG_Prefs::~MSG_Prefs() -{ - XP_ASSERT(m_numnotify == 0); - FREEIF(m_localMailDirectory); - FREEIF(m_citationColor); - FREEIF(m_popHost); - for (int i=0 ; i<sizeof(m_defaultHeaders)/sizeof(char*) ; i++) - FREEIF(m_defaultHeaders[i]); - XP_FREEIF(m_IMAPdirectory); - - delete m_emailAliases; - m_emailAliases = NULL; - delete m_emailAliasesNot; - m_emailAliasesNot = NULL; - - PREF_UnregisterCallback("mail.", &MSG_PrefsChangeCallback, this); - PREF_UnregisterCallback("news.", &MSG_PrefsChangeCallback, this); - PREF_UnregisterCallback("mailnews.", &MSG_PrefsChangeCallback, this); - PREF_UnregisterCallback("network.hosts.pop_server", - &MSG_PrefsChangeCallback, this); - - PREF_UnregisterCallback("mail.use_imap_sentmail", - &MSG_UseImapSentmailPrefChanged, this); - PREF_UnregisterCallback("mail.default_fcc", &MSG_FccPrefChanged, this); - PREF_UnregisterCallback("mail.imap_sentmail_path", &MSG_FccPrefChanged, - this); - - PREF_UnregisterCallback("news.use_imap_sentmail", - &MSG_UseImapSentmailPrefChanged, this); - PREF_UnregisterCallback("news.default_fcc", &MSG_FccPrefChanged, this); - PREF_UnregisterCallback("news.imap_sentmail_path", &MSG_FccPrefChanged, - this); - - PREF_UnregisterCallback("mail.server_type", &MSG_MailServerTypeChanged, - this); - - PREF_UnregisterCallback("mail.default_drafts", &MSG_DraftsPrefChanged, - this); - PREF_UnregisterCallback("mail.default_templates", &MSG_TemplatesPrefChanged, - this); -} - - - -void MSG_Prefs::AddNotify(MSG_PrefsNotify* notify) -{ - MSG_PrefsNotify** tmp = m_notify; - m_notify = new MSG_PrefsNotify* [m_numnotify + 1]; - for (int i=0 ; i<m_numnotify ; i++) { - XP_ASSERT(tmp[i] != notify); - m_notify[i] = tmp[i]; - } - m_notify[m_numnotify++] = notify; - delete [] tmp; // not sure why this wasn't here before. - // Could have used XP_PtrArray... -} - - -void MSG_Prefs::RemoveNotify(MSG_PrefsNotify* notify) -{ - int i = 0; - - if (m_notifying) - { - // We're in the process of notifying listeners, so we - // can't shuffle pointers around. - // Just null out the pointer in question, Notify will - // clean up after us. - for (; i<m_numnotify; i++) - { - if (m_notify[i] == notify) - m_notify[i] = NULL; - } - return; - } - - // If we're not notifying listeners, just replace the - // dead element with the last in the list, then decrement - // the listener count. - for (; i<m_numnotify ; i++) - { - if (m_notify[i] == notify) - { - m_notify[i] = m_notify[--m_numnotify]; - return; - } - } - XP_ASSERT(0); -} - -XP_Bool MSG_Prefs::GetSearchServer() -{ - Reload(); - return m_searchServer; -} - -XP_Bool MSG_Prefs::GetSearchSubFolders() -{ - Reload(); - return m_searchSubFolders; -} - -int32 MSG_Prefs::GetNumCustomHeaders() -{ - Reload(); - // determine number of custom headers in the preference so far.... - int count = 0; - - if (!m_customHeaders) - return 0; - - char * buffer = XP_STRDUP(m_customHeaders); - char * marker = buffer; - - while (XP_STRTOK_R(nil, ":, ", &buffer)) - count++; - XP_FREEIF(marker); - return count; -} - - -// caller must use XP_FREE to deallocate the header string this returns. -char * MSG_Prefs::GetNthCustomHeader(int offset) -{ - Reload(); - char * temp = NULL; - if (offset < 0) - return temp; - - if (!m_customHeaders) - return NULL; - - char * buffer = XP_STRDUP(m_customHeaders); - char * marker = buffer; - - for (int count = 0; count <= offset; count++) - { - temp = XP_STRTOK_R(nil,",: ",&buffer); - if (!temp) - break; - } - - // temp now points to the token string - if (temp) - temp = XP_STRDUP(temp); // make a copy of the string // caller must deallocate the space - - XP_FREEIF(marker); // free our copy of the buffer... - return temp; -} - - -#ifdef XP_UNIX -void MSG_Prefs::SetFolderDirectory(const char* d) -{ - PREF_SetCharPref("mail.directory", d); - m_dirty = TRUE; -} -#else -void MSG_Prefs::SetFolderDirectory(const char*) -{ -} -#endif - - -const char *MSG_Prefs::GetFolderDirectory() -{ - Reload(); - return m_localMailDirectory; -} - -const char *MSG_Prefs::GetIMAPFolderDirectory() -{ - Reload(); - if (!m_IMAPdirectory) - { - char *machinePathName = 0; - if (m_popHost) - { - // see if there's a :port in the server name. If so, strip it off when - // creating the server directory. - char *server = XP_STRDUP(m_popHost); - char *port = 0; - if (server) - { - port = XP_STRCHR(server,':'); - if (port) - *port = 0; - machinePathName = WH_FileName(server, xpImapServerDirectory); - XP_FREE(server); - } - } - if (machinePathName) - { - char *imapUrl = XP_PlatformFileToURL (machinePathName); - if (imapUrl) - { - m_IMAPdirectory = XP_STRDUP(imapUrl + XP_STRLEN("file://")); - XP_FREE(imapUrl); - } - XP_FREE (machinePathName); - } - } - return m_IMAPdirectory; -} - - -void MSG_Prefs::GetCitationStyle(MSG_FONT* f, MSG_CITATION_SIZE* s, const char** c) -{ - Reload(); - if (f) *f = m_citationFont; - if (s) *s = m_citationFontSize; - if (c) *c = m_citationColor; -} - - -const char* MSG_Prefs::GetPopHost() -{ - Reload(); - return m_popHost; -} - -XP_Bool MSG_Prefs::IMAPMessageDeleteIsMoveToTrash() -{ - Reload(); - return m_ImapDeleteMoveToTrash; -} - -/* -const char *MSG_Prefs::GetOnlineImapSubDir() -{ - Reload(); - return m_OnlineImapSubDir; -} -*/ - -XP_Bool MSG_Prefs::GetMailServerIsIMAP4() -{ - Reload(); - return m_mailServerIsIMAP; -} - -HG87637 - -const char *MSG_Prefs::GetCopyToSentMailFolderPath() -{ - return GetDefaultHeaderContents(MSG_FCC_HEADER_MASK); -} - -MSG_CommandType MSG_Prefs::GetHeaderStyle() -{ - Reload(); - return m_headerstyle; -} - -XP_Bool MSG_Prefs::GetNoInlineAttachments() -{ - Reload(); - return m_noinline; -} - -XP_Bool MSG_Prefs::GetWrapLongLines() -{ - Reload(); - return m_wraplonglines; -} - -XP_Bool MSG_Prefs::GetAutoQuoteReply() -{ - Reload(); - return m_autoQuote; -} - -const char* MSG_Prefs::GetDefaultHeaderContents(MSG_HEADER_SET header) -{ - Reload(); - int i = ConvertHeaderSetToSubscript(header); - if (i < 0) - return NULL; - return m_defaultHeaders[i]; -} - -XP_Bool MSG_Prefs::GetDefaultBccSelf(XP_Bool newsBcc) -{ - Reload(); - return newsBcc ? m_newsBccSelf : m_mailBccSelf; -} - -int32 MSG_Prefs::GetPurgeThreshhold() -{ - Reload(); - return m_purgeThreshhold; -} - -XP_Bool MSG_Prefs::GetPurgeThreshholdEnabled() -{ - Reload(); - return m_purgeThreshholdEnabled; -} - -XP_Bool MSG_Prefs::GetShowPrettyNames() -{ - Reload(); - return m_showPrettyNames; -} - -HG92435 - -XP_Bool MSG_Prefs::GetNewsNotifyOn() -{ - Reload(); - return m_newsNotifyOn; -} - -void MSG_Prefs::SetNewsNotifyOn(XP_Bool notify) -{ - PREF_SetBoolPref("news.notify.on", notify); -} - -MSG_NCFValue MSG_Prefs::GetNavCrossesFolders() -{ - Reload(); - return (MSG_NCFValue) m_navCrossesFolders; -} - -void MSG_Prefs::SetNavCrossesFolders(MSG_NCFValue cross) -{ - PREF_SetIntPref("mailnews.nav_crosses_folders", (int32) cross); -} - -MSG_Master *MSG_Prefs::GetMasterForBiff() -{ - Reload(); - return m_masterForBiff; -} - -void MSG_Prefs::SetMasterForBiff(MSG_Master *mstr) -{ - // Since we're dealing with a mail master, this by - // definition is a temporary preference. So, just - // set the member in this case. - m_masterForBiff = mstr; -} - -char *MSG_Prefs::MagicFolderName(uint32 flag, int *pStatus) -{ - MSG_FolderInfo *folderInfo = NULL; - if (pStatus) - *pStatus = 0; - - if (flag == MSG_FOLDER_FLAG_SENTMAIL) - { - if (m_sentName) - return XP_STRDUP(m_sentName); - - const char *tmp = GetCopyToSentMailFolderPath(); - if (tmp != NULL && m_masterForBiff) - { - folderInfo = m_masterForBiff->GetFolderInfo(tmp, FALSE); - if (folderInfo && folderInfo->GetDepth() == 1) - { - if (NET_URL_Type(tmp) == IMAP_TYPE_URL && folderInfo->GetIMAPHost()) - tmp = PR_smprintf("IMAP://%s@%s/%s", - folderInfo->GetIMAPHost()->GetUserName(), - folderInfo->GetName(), - SENT_FOLDER_NAME); - else if (folderInfo->GetMailFolderInfo()) - tmp = PR_smprintf("%s/%s", - folderInfo->GetMailFolderInfo()->GetPathname(), - SENT_FOLDER_NAME); - } - } - if (tmp) - m_sentName = XP_STRDUP(tmp); - - return (tmp != NULL) ? XP_STRDUP(tmp) : 0; - } - else if (flag == MSG_FOLDER_FLAG_DRAFTS) - { - if (m_draftsName) - return XP_STRDUP(m_draftsName); - - char *draftsName = NULL; - PREF_CopyCharPref("mail.default_drafts", &draftsName); - if (draftsName && *draftsName) - { -#ifdef XP_MAC -#pragma warn_possunwant off -#endif // XP_MAC - if (m_masterForBiff && - (folderInfo = m_masterForBiff->GetFolderInfo(draftsName, FALSE)) && - folderInfo->GetDepth() == 1) - { - if (NET_URL_Type(draftsName) == IMAP_TYPE_URL && - folderInfo->GetIMAPHost()) - { - char *newDraftsName = - PR_smprintf("IMAP://%s@%s", - folderInfo->GetIMAPHost()->GetUserName(), - folderInfo->GetName()); - if (newDraftsName) - { - XP_FREE(draftsName); - draftsName = newDraftsName; - } - } - StrAllocCat(draftsName, "/"); - StrAllocCat(draftsName, DRAFTS_FOLDER_NAME); - } -#ifdef XP_MAC -#pragma warn_possunwant reset -#endif // XP_MAC - m_draftsName = XP_STRDUP(draftsName); - return draftsName; - } - // else fall through - } - else if (flag == MSG_FOLDER_FLAG_TEMPLATES) - { - if (m_templatesName) - return XP_STRDUP(m_templatesName); - - char *templatesName = NULL; - PREF_CopyCharPref("mail.default_templates", &templatesName); - if (templatesName && *templatesName) - { -#ifdef XP_MAC -#pragma warn_possunwant off -#endif // XP_MAC - if (m_masterForBiff && - (folderInfo = m_masterForBiff->GetFolderInfo(templatesName, FALSE)) && - folderInfo->GetDepth() == 1) - { - if (NET_URL_Type(templatesName) == IMAP_TYPE_URL && - folderInfo->GetIMAPHost()) - { - char *newTemplatesName = - PR_smprintf("IMAP://%s@%s", - folderInfo->GetIMAPHost()->GetUserName(), - folderInfo->GetName()); - if (newTemplatesName) - { - XP_FREE(templatesName); - templatesName = newTemplatesName; - } - } - StrAllocCat(templatesName, "/"); - StrAllocCat(templatesName, TEMPLATES_FOLDER_NAME); - } -#ifdef XP_MAC -#pragma warn_possunwant reset -#endif // XP_MAC - m_templatesName = XP_STRDUP(templatesName); - return templatesName; - } - // else fall through - } - - const char *dir = GetFolderDirectory(); - char *name; - char *ptr; - XP_ASSERT(dir); - if (!dir) return 0; - name = (char *) XP_ALLOC(XP_STRLEN(dir) + 30); - if (!name) return 0; - XP_STRCPY(name, dir); - ptr = name + XP_STRLEN(name); - if (ptr[-1] != '/') - *ptr++ = '/'; - -#ifdef XP_MAC - char* escapedName = NET_Escape( - (flag == MSG_FOLDER_FLAG_INBOX ? INBOX_FOLDER_NAME : - flag == MSG_FOLDER_FLAG_TRASH ? TRASH_FOLDER_NAME : - flag == MSG_FOLDER_FLAG_QUEUE ? MSG_GetQueueFolderName() : - flag == MSG_FOLDER_FLAG_DRAFTS ? DRAFTS_FOLDER_NAME : - flag == MSG_FOLDER_FLAG_TEMPLATES ? TEMPLATES_FOLDER_NAME : - "###"), - URL_PATH); - if (!escapedName) - return NULL; - XP_STRCPY(ptr, escapedName); - XP_FREE(escapedName); -#else - XP_STRCPY(ptr, - (flag == MSG_FOLDER_FLAG_INBOX ? INBOX_FOLDER_NAME : - flag == MSG_FOLDER_FLAG_TRASH ? TRASH_FOLDER_NAME : - flag == MSG_FOLDER_FLAG_QUEUE ? MSG_GetQueueFolderName() : - flag == MSG_FOLDER_FLAG_DRAFTS ? DRAFTS_FOLDER_NAME : - flag == MSG_FOLDER_FLAG_TEMPLATES ? TEMPLATES_FOLDER_NAME : - "###")); -#endif - - // Better have really found one. - XP_ASSERT(XP_STRCMP(ptr, "###")); - - return name; -} - - -XP_Bool MSG_Prefs::CopyStringIfChanged(char** str, const char* value) -{ - if (*str == NULL && value == NULL) return FALSE; - if (*str && value && XP_STRCMP(*str, value) == 0) return FALSE; - - if (*str) - delete [] *str; - if (value) - { - *str = new char[XP_STRLEN(value) + 1]; - if (*str) - XP_STRCPY(*str, value); - } - else - *str = NULL; - return TRUE; -} - - -int MSG_Prefs::ConvertHeaderSetToSubscript(MSG_HEADER_SET header) -{ - switch (header) - { - case MSG_REPLY_TO_HEADER_MASK: - return 0; - case MSG_BCC_HEADER_MASK: - return 1; - case MSG_FCC_HEADER_MASK: - { - XP_Bool use_imap_sentmail = FALSE; - PREF_GetBoolPref("mail.use_imap_sentmail", &use_imap_sentmail); - if (use_imap_sentmail) - return 3; - else - return 2; - } - case MSG_NEWS_BCC_HEADER_MASK: - return 4; - case MSG_NEWS_FCC_HEADER_MASK: - { - XP_Bool use_imap_sentmail = FALSE; - PREF_GetBoolPref("news.use_imap_sentmail", &use_imap_sentmail); - if (use_imap_sentmail) - return 6; - else - return 5; - } - default: - XP_ASSERT (0); - return -1; - } -} - -const char * msg_DefaultFolderName(uint32 flag) -{ - switch (flag) - { - case MSG_FOLDER_FLAG_DRAFTS: - return DRAFTS_FOLDER_NAME; - case MSG_FOLDER_FLAG_SENTMAIL: - return SENT_FOLDER_NAME; - case MSG_FOLDER_FLAG_TEMPLATES: - return TEMPLATES_FOLDER_NAME; - default: - XP_ASSERT(0); - return ""; - } -} - -int msg_FolderPrefChanged(const char *prefName, void *msgPrefsVoid, uint32 flag) -{ - char *folderPath = NULL; - MSG_Prefs *msgPrefs = (MSG_Prefs*) msgPrefsVoid; - MSG_Prefs::GetXPDirPathPref(prefName, TRUE, &folderPath); - if (folderPath) - { - MSG_Master *master = msgPrefs->m_masterForBiff; - // clear out calculated drafts,sent, and templates names - XP_FREEIF(msgPrefs->m_draftsName); - XP_FREEIF(msgPrefs->m_sentName); - XP_FREEIF(msgPrefs->m_templatesName); - - if (master) - { - // Find all old magic folders and the new magic folder. For sent mail, - // there can be 1 or 2 such folders. - MSG_FolderInfoMail *newFolder = NULL; - - typedef MSG_FolderInfo* FInfoPtr; - MSG_FolderInfo *folderList[3]; - uint32 numFoldersToCheck - = master->GetFolderTree()->GetFoldersWithFlag( - flag, folderList, sizeof(folderList)/sizeof(FInfoPtr)); - - if (NET_URL_Type(folderPath) == IMAP_TYPE_URL) - { - char *host = NET_ParseURL(folderPath, GET_HOST_PART); - char *name = NET_ParseURL(folderPath, GET_PATH_PART); - char *owner = NET_ParseURL(folderPath, GET_USERNAME_PART); - - if (!name || !*name) - { - StrAllocCopy(name, "/"); - StrAllocCat(name, msg_DefaultFolderName(flag)); - } - - if ((!owner || !*owner) && master->GetIMAPHost(host)) - { - StrAllocCopy(owner, master->GetIMAPHost(host)->GetUserName()); - } - - // name+1 skips the root "/" character - newFolder = - master->FindImapMailFolder(host, name+1, owner, FALSE); - XP_FREEIF(host); - XP_FREEIF(name); - XP_FREEIF(owner); - } - else - { - const char *folderDir = msgPrefs->GetFolderDirectory(); - - if (!*folderPath) - StrAllocCopy (folderPath, folderDir); - - const char *name = - NET_URL_Type(folderPath) == MAILBOX_TYPE_URL ? - folderPath + 8 : folderPath; - - - if (XP_STRCMP(name, folderDir) == 0) - { - // Hmmm no folder name. Use default name. - StrAllocCat(folderPath, "/"); - StrAllocCat(folderPath, msg_DefaultFolderName(flag)); - } - newFolder = master->FindMailFolder(folderPath, FALSE /*createIfMissing*/); - } - - if (newFolder) - { - XP_Bool newFolderIsSame = FALSE; - MSG_FolderInfo** current = &folderList[0]; - for (int i = 0; i < numFoldersToCheck; i++, current++) - { - if (*current == newFolder) - { - newFolderIsSame = TRUE; - break; - } - } - if (!newFolderIsSame) - folderList[numFoldersToCheck++] = newFolder; - } - - MSG_FolderInfo** current = &folderList[0]; - for (int i = 0; i < numFoldersToCheck; i++, current++) - { - MSG_FolderInfoMail* f = (*current)->GetMailFolderInfo(); - f->SetPrefFolderFlag(); - // After changing the flag of a folder that's already in the tree, - // you have to call QuickSort to maintain the sort order. - // Possible improvement: sort only once per parent (even if - // the folders are different, they may have the same parent). - MSG_FolderInfo* parent = master->GetFolderTree()->FindParentOf(f); - parent->GetSubFolders()->QuickSort(MSG_FolderInfoMail::CompareFolders); - // Let the front end know that the flags have changed. The icon will - // change. - master->BroadcastFolderChanged(f); - } - } - XP_FREE(folderPath); - } - - return 0; -} - -int PR_CALLBACK MSG_UseImapSentmailPrefChanged (const char *prefName, - void *msgPrefsVoid) -{ - XP_Bool bUseImap = FALSE; - - if ( XP_STRCMP(prefName, "mail.use_imap_sentmail") == 0 && - PREF_NOERROR == PREF_GetBoolPref("mail.use_imap_sentmail", &bUseImap) ) - { - if (bUseImap) - return MSG_FccPrefChanged ("mail.imap_sentmail_path", msgPrefsVoid); - else - return MSG_FccPrefChanged ("mail.default_fcc", msgPrefsVoid); - } - else if ( XP_STRCMP(prefName, "news.use_imap_sentmail") == 0 && - PREF_NOERROR == PREF_GetBoolPref("news.use_imap_sentmail", &bUseImap) ) - { - if (bUseImap) - return MSG_FccPrefChanged ("news.imap_sentmail_path", msgPrefsVoid); - else - return MSG_FccPrefChanged ("news.default_fcc", msgPrefsVoid); - } - return 0; -} - -int PR_CALLBACK MSG_FccPrefChanged (const char *prefName, void *msgPrefsVoid) -{ - return msg_FolderPrefChanged(prefName, msgPrefsVoid, - MSG_FOLDER_FLAG_SENTMAIL); -} - -int PR_CALLBACK MSG_DraftsPrefChanged (const char *prefName, void *msgPrefsVoid) -{ - return msg_FolderPrefChanged(prefName, msgPrefsVoid, - MSG_FOLDER_FLAG_DRAFTS); -} - -int PR_CALLBACK MSG_TemplatesPrefChanged (const char *prefName, - void *msgPrefsVoid) -{ - return msg_FolderPrefChanged(prefName, msgPrefsVoid, - MSG_FOLDER_FLAG_TEMPLATES); -} - -int PR_CALLBACK MSG_MailServerTypeChanged (const char * /*prefName*/, void *msgPrefsVoid) -{ - // Since we can't deal with Body filters in IMAP (in 4.0) we're going - // to loop over all the filters and redirect them to the Subject header - // - // It would be nice to do this with the user's permission. - - // Don't do anything if we switched from POP to IMAP, only for IMAP to POP - MSG_Master *master = ((MSG_Prefs*)msgPrefsVoid)->GetMasterForBiff(); - - int32 intPref = 0; // pop by default - int prefError = PREF_GetIntPref("mail.server_type", &intPref); - if (prefError == PREF_NOERROR && master) - { - int32 profileAge = master->GetPrefs()->GetStartingMailNewsProfileAge(); - // Upgrade default IMAP host prefs - if (!(profileAge & MSG_IMAP_DEFAULT_HOST_UPGRADE_FLAG) && - intPref == 1) // we haven't upgraded the default host yet - { - // make the pop host look like an imap host. - MSG_IMAPHost::UpgradeDefaultServerPrefs(master); - return 0; - } - } - else - return 0; - - HG62437 - if (master) - master->CloseCachedImapConnections(); - - // Don't do anything if someone else is looking at the filter list - if (!master || !master->AcquireRulesSemaphore(msgPrefsVoid)) - return 0; - - // Don't do anything if we can't open the filter list - MSG_FilterList *filterList = NULL; - if (MSG_FilterList::Open (master, filterInbox, &filterList) != FilterError_Success || !filterList) - { - master->ReleaseRulesSemaphore (msgPrefsVoid); - return 0; - } - - XP_Bool filterListIsDirty = FALSE; - int32 filterCount = 0; - filterList->GetFilterCount(&filterCount); - - for (MSG_FilterIndex filterIndex = 0; filterIndex < filterCount; filterIndex++) - { - MSG_Filter *filter = NULL; - if (filterList->GetFilterAt(filterIndex, &filter) == FilterError_Success && filter != NULL) - { - if (filter->GetType() == filterInboxRule) - { - MSG_Rule *rule = NULL; - if (filter->GetRule(&rule) == FilterError_Success && rule != NULL) - { - MSG_SearchTermArray &terms = rule->GetTermList(); - for (int i = 0; i < terms.GetSize(); i++) - { - MSG_SearchTerm *term = terms.GetAt(i); - if (term && term->m_attribute == attribBody) - { - term->m_attribute = attribSubject; - filterListIsDirty = TRUE; - - // Body searching can't do begins/ends with. Maybe it should... - if (term->m_operator == opBeginsWith || term->m_operator == opEndsWith) - term->m_operator = opContains; - } - } - } - } - } - } - - master->ReleaseRulesSemaphore (msgPrefsVoid); - - if (filterListIsDirty) - MSG_CloseFilterList (filterList); - else - MSG_CancelFilterList (filterList); - - return 0; -} - - -msg_StringArray *MSG_Prefs::m_emailAliases = NULL; -msg_StringArray *MSG_Prefs::m_emailAliasesNot = NULL; - -/*static*/ XP_Bool MSG_Prefs::IsEmailAddressAnAliasForMe (const char *addr) -{ - // Does the address match one of the user's alias expressions (e.g. foo@*.netscape.com) - - if (m_emailAliasesNot) - { - // Some addresses can't be considered aliases. Right now, this is just used - // for the Reply-To address, so that if you Reply All, your Reply-To address - // will be included, or if you send yourself an MDN request, you'll get one back - // - // NB: this list is guaranteed to hold only addresses, not names, so we can strcmp - // it without parsing it (here) - for (int i = 0; i < m_emailAliasesNot->GetSize(); i++) - if (!strcasecomp (addr, m_emailAliasesNot->GetAt(i))) - return FALSE; - } - - if (m_emailAliases) // master/prefs may not have been initialized yet - { - for (int i = 0; i < m_emailAliases->GetSize(); i++) - { - char *alias = (char*) m_emailAliases->GetAt(i); //Hacky cast: regexp API isn't const - - if (VALID_SXP == NET_RegExpValid (alias)) - { - // The alias is a regular expression, so send it into the regexp evaluator - if (!NET_RegExpMatch ((char*) addr, alias, FALSE /*case sensitive*/)) - return TRUE; - } - else - { - // The alias is not a regular expression, so just use a string compare - if (!strcasecomp (addr, alias)) - return TRUE; - } - } - } - return FALSE; -} - diff --git a/mozilla/lib/libmsg/msgprefs.h b/mozilla/lib/libmsg/msgprefs.h deleted file mode 100644 index 0188a8f9bc1..00000000000 --- a/mozilla/lib/libmsg/msgprefs.h +++ /dev/null @@ -1,305 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1997 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgPrefs_H_ -#define _MsgPrefs_H_ - -#include "msgzap.h" -#include "rosetta.h" - -/* - mwelch 97 July: - - Before adding anything new to MSG_Prefs, consider whether your - new preference can best be managed using the prefs API directly. - If you are not getting the preference value often or otherwise - have no need to cache the prefs value, you are probably better - off calling the prefs API everywhere and leaving this object - alone. - - Having said that, if you want to add a new member variable and - its access functions to MSG_Prefs, here is the way you want to - do this, in order to keep the world happy. (Specific conditions, - of course, may apply to your preference; the instructions below - apply to most circumstances.) - - If a change in your preference does not need to trigger an immediate - action: - - 1. Put a call to PREF_Get{Int,Bool,Char,etc.)Pref in the Reload() - method for your member variable and its corresponding JavaScript - preference name. This should be the only way by which your - member variable is set. - - 2. Your Get() accessor function must call Reload() before returning - the member value. This is the way by which you can be assured that - the most recently set preference value - - 3. If you must have a Set() accessor, implement it in such a way - that it calls PREF_Set{Int,Bool,Char,etc.}Pref, instead of - setting your member variable directly. This way, the prefs API - (and the user's preferences.js file) is properly updated. The - new value circulates back using Reload() and Get() as - described above. - - If a change in your preference requires an immediate response (alert, - change in behavior, etc): - - 1. Implement the preference as described above. - - 2. In MSG_PrefsChangeCallback, there is a top-level parse tree (looking - for names beginning with "mail", "news", or "netw"). Find the clause - corresponding to your preference name and add a condition with code - that needs to run when your preference changes. Even if the code that - runs within MSG_PrefsChangeCallback always reloads on its own, you - still want to leave a load call within Reload() in order to load - the initial value at startup time. - - If you have a transaction that spans across several preference changes, - be sure to tell the right people so that we can someday have calls to - transactionalize preference changes. Currently, all we can do is respond - to changes to individual preferences. - */ -class MSG_PrefsNotify; -class msg_StringArray; - -int PR_CALLBACK MSG_PrefsChangeCallback(const char *prefName, void *data); -int PR_CALLBACK MSG_FccPrefChanged (const char *, void *msgPrefs); -int PR_CALLBACK MSG_MailServerTypeChanged (const char *, void *msgPrefs); -int PR_CALLBACK MSG_DraftsPrefChanged (const char *, void *msgPrefs); -int PR_CALLBACK MSG_TemplatesPrefChanged (const char *, void *msgPrefs); -int PR_CALLBACK MSG_UseImapSentmailPrefChanged (const char *prefName, void *msgPrefs); -int msg_FolderPrefChanged(const char *, void *msgPrefs, uint32 flag); - -// Corresponds to pref("mailnews.nav_crosses_folders", 0) -// 0=do it, don't prompt 1=prompt, 2=don't do it, don't prompt -typedef enum { - MSG_NCFDoIt = 0, - MSG_NCFPrompt = 1, - MSG_NCFDont = 2 -} MSG_NCFValue; - - -#define MSG_IMAP_DELETE_MODEL_UPGRADE_FLAG 0x00000001 // upgraded to imap delete model? -#define MSG_IMAP_SPECIAL_RESERVED_UPGRADE_FLAG 0x00000002 // RESERVED. DO NOT CHANGE THIS VALUE! -#define MSG_IMAP_SUBSCRIBE_UPGRADE_FLAG 0x00000004 // upgraded to IMAP subscription? -#define MSG_IMAP_DEFAULT_HOST_UPGRADE_FLAG 0x00000008 // upgraded default host to new per host prefs -#define MSG_IMAP_CURRENT_START_FLAGS ( MSG_IMAP_DELETE_MODEL_UPGRADE_FLAG \ - | MSG_IMAP_SUBSCRIBE_UPGRADE_FLAG \ - | MSG_IMAP_DEFAULT_HOST_UPGRADE_FLAG) -class MSG_Prefs : public MSG_ZapIt -{ -public: - - MSG_Prefs(void); - virtual ~MSG_Prefs(); - - void AddNotify(MSG_PrefsNotify* notify); - void RemoveNotify(MSG_PrefsNotify* notify); - - void SetFolderDirectory(const char* directory); - const char* GetFolderDirectory(); - const char* GetIMAPFolderDirectory(); - - // This preference is used to help decide when to perform one time tricks, based - // on the age of the current user profile. - - // The theory is: On a fresh install (actually, the creation of a new user profile), - // we should never do any one-time upgrade tricks. - // On an install over a previous verison, we should run each of the upgrade tricks that - // haven't already been run, for each old profile. - - // The first such example is dealing with the introduction of the imap delete messages - // model in 4.02. We wanted the imap delete model to be the default out of the box but - // we also wanted a painless upgrade for existing users who use the delete to trash model. - // The solution is to make the imap delete model the default but if you haven't run the - // IMAP delete model upgrade and you have a trash folder, then change the preference to the - // trash model. In either case, the profile age is now changed to reflect that we have made - // this upgrade, by setting the appropriate bit. - - // We will do this in a bitwise manner, so that individual one-time tricks do not depend - // on the order in which we check for them. - - // This preference should ALWAYS be written to the prefs.js file, unless the value is 0. - // A value of 0 indicates an upgrade from Communicator 4.0, in which no upgrades have ever - // been run. - - // The value written out to the prefs should be the sum of all trick flags which have been run. - // On a fresh install, we automatically write out the following number: - // {sum of all flags used for an upgrade trick} - // We do this in config.js, in modules\libpref\src\init - - // The default value (in all.js) should ALWAYS be 0. This is because if the preference isn't - // present in the prefs.js file, then it means the value is implicitly 0 (because we are - // upgrading from 4.0, and none of the one-time tricks have been run). - - // So, when a new flag is added here, you should also modify "mailnews.profile_age" in config.js - // to be the following number: - // {sum of all flags used for an upgrade trick} - - // The Flags - // see above for #definitions - // 0x00000001 (reserved for the imap delete model trick) - // 0x00000004 (reserved for migrating to IMAP subscription) - // 0x00000008 MSG_IMAP_DEFAULT_HOST_UPGRADE_FLAG (upgraded default host to new per host prefs) - // - // - // *(The special reserved upgrade flag is purposely not used for an upgrade anywhere, except in calculating - // the default value for all.js. This is because we always want the value of "mailnews.profile_age" - // written out to the prefs file -- it can NEVER take on the "default" value, or else it will be - // removed from prefs.js, and this will defeat the purpose of writing out the "current" profile age. - // If we were to ever upgrade, it would find the preference not written out, and assume that it is - // up-to-date. - // To ensure that it is always written out to the file, in the creation of the MSG_Master we will - // un-set this flag each time, so that on a fresh install, the preference will get written out. - - // current total = 1+4+8 = 13 (see #define MSG_IMAP_CURRENT_START_FLAGS above) - - int32 GetStartingMailNewsProfileAge(); - void SetMailNewsProfileAgeFlag(int32 flag, XP_Bool set = TRUE); // call this when we perform an upgrade, to set that upgrade bit - - HG97760 - XP_Bool GetMailServerIsIMAP4(); - MSG_CommandType GetHeaderStyle(); - XP_Bool GetNoInlineAttachments(); - XP_Bool GetWrapLongLines(); - XP_Bool GetDefaultBccSelf(XP_Bool newsBcc); - XP_Bool GetAutoQuoteReply(); - const char * GetDefaultHeaderContents(MSG_HEADER_SET header); - const char * GetCopyToSentMailFolderPath(); - //const char * GetOnlineImapSubDir(); // online subdir for imap folders - int32 GetPurgeThreshhold(); - XP_Bool GetPurgeThreshholdEnabled(); - void GetCitationStyle(MSG_FONT* font, MSG_CITATION_SIZE* size, const char** color); - const char * GetPopHost(); - XP_Bool IMAPMessageDeleteIsMoveToTrash(); - XP_Bool GetSearchSubFolders(); - XP_Bool GetSearchServer(); - - // Queries for things that are derived off of the preferences. - int32 GetNumCustomHeaders(); - char * GetNthCustomHeader(int offset); // caller must use XP_FREEIF on the character string returned - - - // Get the full pathname of the folder implementing the given magic type. - // The result must be free'd with XP_FREE(). - char * MagicFolderName(uint32 flag, int *pStatus = 0); - - // I believe this should be a global preference and not per server - XP_Bool GetShowPrettyNames(); - - XP_Bool GetNewsNotifyOn(); - void SetNewsNotifyOn(XP_Bool notifyOn); - - MSG_NCFValue GetNavCrossesFolders(); - void SetNavCrossesFolders(MSG_NCFValue navCrossesFoldersOn); - - void SetMasterForBiff(MSG_Master *masterForBiff); - MSG_Master * GetMasterForBiff(); - - static XP_Bool IsEmailAddressAnAliasForMe (const char *addr); - - static int GetXPDirPathPref(const char *prefName, XP_Bool expectFile, char ** result); - static int SetXPMailFilePref(const char *prefName, char * xpPath); - static void PlatformFileToURLPath(const char *src, char **dest); - HG82309 - - XP_Bool GetConfirmMoveFoldersToTrash() { Reload(); return m_confirmMoveFoldersToTrash; } - -protected: - - XP_Bool m_dirty; // need to reload prefs at next Get() call - - // m_freezeMailDirectory, if TRUE, prevents (directory) from - // getting a new value. We set this TRUE in order to ensure that - // (directory) will only get one meaningful value within a session. - XP_Bool m_freezeMailDirectory; - - void Reload(void); // reload if dirty flag is set - void Notify(int16 updateCode); - - // callback when javascript prefs value(s) change - friend int PR_CALLBACK MSG_PrefsChangeCallback(const char *prefName, void *data); - friend int msg_FolderPrefChanged (const char *, void *msgPrefs, uint32 flag); - - XP_Bool CopyStringIfChanged(char** str, const char* newvalue); - - int ConvertHeaderSetToSubscript(MSG_HEADER_SET header); - - HG72142 - - MSG_Master *m_masterForBiff; - - // Notification prefs (is this all obsolete? or should it be?) - MSG_PrefsNotify **m_notify; - int m_numnotify; - XP_Bool m_notifying; // Are we in the middle of notifying listeners? - - // IMAP prefs - char * m_IMAPdirectory; - char * m_OnlineImapSubDir; - XP_Bool m_ImapDeleteMoveToTrash; - XP_Bool m_mailServerIsIMAP; - HG29866 - - // Search and Filter prefs - char * m_customHeaders; // arbitrary headers list. - int32 m_numberCustomHeaders; - - XP_Bool m_searchSubFolders; - XP_Bool m_searchServer; // when in online mode, search server or search locally (if false) - - // Quoting prefs - XP_Bool m_autoQuote; - MSG_FONT m_citationFont; - MSG_CITATION_SIZE m_citationFontSize; - char * m_citationColor; - - char * m_localMailDirectory; - XP_Bool m_plainText; - char * m_popHost; - char * m_defaultHeaders[7]; - XP_Bool m_mailBccSelf; - XP_Bool m_newsBccSelf; - long m_mailInputType; - MSG_CommandType m_headerstyle; - XP_Bool m_noinline; - XP_Bool m_wraplonglines; - XP_Bool m_showPrettyNames; - XP_Bool m_purgeThreshholdEnabled; - int32 m_purgeThreshhold; - XP_Bool m_newsNotifyOn; - int32 m_navCrossesFolders; - int32 m_startingMailNewsProfileAge; - XP_Bool m_confirmMoveFoldersToTrash; - - static msg_StringArray *m_emailAliases; - static msg_StringArray *m_emailAliasesNot; - - char * m_draftsName; - char * m_sentName; - char * m_templatesName; -}; - -const char * msg_DefaultFolderName(uint32 flag); - -#endif /* _MsgPrefs_H_ */ diff --git a/mozilla/lib/libmsg/msgprnot.h b/mozilla/lib/libmsg/msgprnot.h deleted file mode 100644 index cfa32129010..00000000000 --- a/mozilla/lib/libmsg/msgprnot.h +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgPrNot_H_ -#define _MsgPrNot_H_ - -#include "msgzap.h" -#include "rosetta.h" - -class MSG_Prefs; - -class MSG_PrefsNotify : public MSG_ZapIt { -public: - // Codes to notify us that a preference item has changed. - enum NotifyCode { - Directory, - CitationStyle, - PlaintextFont, - PopHost, - AutoQuote, - DefaultHeader, - DefaultBCC, - MailServerType, - ImapOnlineDir, - HG62422 - WrapLongLines, - ChangeIMAPDeleteModel - }; - - virtual void NotifyPrefsChange(NotifyCode code) = 0; - - -}; - - -#endif /* _MsgPrNot_H_ */ diff --git a/mozilla/lib/libmsg/msgpurge.cpp b/mozilla/lib/libmsg/msgpurge.cpp deleted file mode 100644 index fcb9a8032bb..00000000000 --- a/mozilla/lib/libmsg/msgpurge.cpp +++ /dev/null @@ -1,233 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "newspane.h" -#include "msgfinfo.h" -#include "pmsgsrch.h" -#include "newshdr.h" -#include "newsdb.h" -#include "xpgetstr.h" -#include "msgpurge.h" -#include "grpinfo.h" -#include "newshdr.h" -extern "C" -{ - extern int MK_MSG_PURGING_NEWSGROUP_HEADER; - extern int MK_MSG_PURGING_NEWSGROUP_ARTICLE; - extern int MK_MSG_PURGING_NEWSGROUP_ETC; - extern int MK_MSG_PURGING_NEWSGROUP_DONE; -} - -const int kPurgeCommitChunk = 200; - -MSG_PurgeNewsgroupState::MSG_PurgeNewsgroupState(MSG_Pane *pane, MSG_FolderInfo *folder) -{ - m_purgeCount = 0; - m_context = pane->GetContext(); - m_folder = folder; - m_pane = pane; - m_listContext = NULL; - m_newsDB = NULL; - m_headerIndex = 0; - m_groupInfo = NULL; - m_headerPurgeInfo.m_purgeBy = MSG_PurgeNone; -} - -MSG_PurgeNewsgroupState::~MSG_PurgeNewsgroupState() -{ - if (m_newsDB) - { - if (m_listContext) - m_newsDB->ListDone (m_listContext); - m_newsDB->Close(); - } -} - -MsgERR MSG_PurgeNewsgroupState::Init() -{ - MessageDB *newsDB; - DBFolderInfo *groupInfo; - MsgERR err = m_folder->GetDBFolderInfoAndDB(&groupInfo, &newsDB); - m_newsDB = newsDB->GetNewsDB(); - - const char *fmt = XP_GetString(MK_MSG_PURGING_NEWSGROUP_ETC); - const char *f = m_folder->GetPrettiestName(); - char *statusString = PR_smprintf (fmt, f); - if (statusString) - { - FE_Progress(m_context, statusString); - XP_FREE(statusString); - } - MSG_GetHeaderPurgingInfo(m_folder, &m_headerPurgeInfo.m_useDefaults, &m_headerPurgeInfo.m_purgeBy, - &m_headerPurgeInfo.m_unreadOnly, &m_headerPurgeInfo.m_daysToKeep, &m_headerPurgeInfo.m_numHeadersToKeep); - - MSG_GetArticlePurgingInfo(m_folder, &m_articlePurgeInfo.m_useDefaults, &m_articlePurgeInfo.m_purgeBy, - &m_articlePurgeInfo.m_daysToKeep); - m_groupInfo = m_newsDB->GetNewsFolderInfo(); - m_pNextHeader = NULL; - return err; -} - -int MSG_PurgeNewsgroupState::PurgeSomeMore() -{ - MsgERR dbErr = eSUCCESS; - DBMessageHdr *pHeader = m_pNextHeader; - XP_Bool purgedSomething = FALSE; - - if (!m_listContext) - dbErr = m_newsDB->ListFirst (&m_listContext, &pHeader); - // advance the iterator so we can delete this message. - if (eSUCCESS == dbErr && pHeader != NULL) - dbErr = m_newsDB->ListNext (m_listContext, &m_pNextHeader); - - if (eSUCCESS != dbErr) - m_pNextHeader = NULL; // next time through, we'll return MK_CONNECTED. - - if (pHeader == NULL) - { - // Do clean up for end-of-scope processing - if (m_listContext) - m_newsDB->ListDone (m_listContext); - m_listContext = NULL; - // Let go of the DB when we're done with it so we don't kill the db cache - if (m_newsDB) - m_newsDB->Close(); - m_newsDB = NULL; - return MK_CONNECTED; - } - - int32 percent = (100L * m_headerIndex) / (uint32) m_groupInfo->GetNumMessages(); - FE_SetProgressBarPercent (m_context, percent); - - if (m_articlePurgeInfo.m_purgeBy == MSG_PurgeByAge) - { - time_t now = XP_TIME(); - long matchDay = now - (m_articlePurgeInfo.m_daysToKeep * 60 * 60 * 24); - if (pHeader->GetDate() < matchDay) - { - pHeader->PurgeArticle(); - purgedSomething = TRUE; - } - } - if (m_headerPurgeInfo.m_unreadOnly) - { - XP_Bool isRead; - if (m_newsDB->IsRead(pHeader->GetMessageKey(), &isRead) == eSUCCESS && isRead) - PurgeHeader(pHeader); - else - { - delete pHeader; - m_headerIndex++; - } - } - else - { - switch (m_headerPurgeInfo.m_purgeBy) - { - case MSG_PurgeByAge: - { - time_t now = XP_TIME(); - long matchDay = now - (m_headerPurgeInfo.m_daysToKeep * 60 * 60 * 24); - if (pHeader->GetDate() < matchDay) - PurgeHeader(pHeader); - else - { - delete pHeader; - m_headerIndex++; - } - break; - } - case MSG_PurgeByNumHeaders: - { - int32 numInDB = (m_headerPurgeInfo.m_unreadOnly) ? m_groupInfo->GetNumNewMessages() : m_groupInfo->GetNumMessages(); - if (m_headerIndex < (numInDB - m_headerPurgeInfo.m_numHeadersToKeep + 1)) - PurgeHeader(pHeader); - else - { - delete pHeader; - m_headerIndex++; - } - break; - } - default: - delete pHeader; - m_headerIndex++; - if (!purgedSomething) - { - if (m_pNextHeader) - { - delete m_pNextHeader; - m_pNextHeader = NULL; - } - return MK_CONNECTED; - } - } - } - // don't want to purge at MOD of 0, because when we're deleting by number - // of headers, m_headerIndex will stay at 0 for a while. - if (m_newsDB && m_headerIndex % kPurgeCommitChunk == 1) - m_newsDB->Commit(); - - return MK_WAITING_FOR_CONNECTION; -} - -int MSG_PurgeNewsgroupState::FinishPurging() -{ - if (m_folder) - m_folder->ClearRequiresCleanup(); - - return MK_CONNECTED; -} - -void MSG_PurgeNewsgroupState::PurgeHeader(DBMessageHdr *hdr) -{ - if (hdr != NULL) - { - m_newsDB->DeleteHeader(hdr, NULL, !(m_purgeCount % 200)); - m_purgeCount++; - char *statusTemplate = XP_GetString (MK_MSG_PURGING_NEWSGROUP_HEADER); - char *statusString = PR_smprintf (statusTemplate, m_folder->GetPrettiestName(), m_purgeCount); - if (statusString) - { - FE_Progress (m_context, statusString); - XP_FREE(statusString); - } - } -} - -void MSG_PurgeNewsgroupState::PurgeArticle(DBMessageHdr *hdr) -{ - if (hdr != NULL) - { - // OK, we know it's a news hdr becuase it's a newsdb. - NewsMessageHdr *newsHdr = (NewsMessageHdr *) hdr; - newsHdr->PurgeArticle(); - m_purgeCount++; - char *statusTemplate = XP_GetString (MK_MSG_PURGING_NEWSGROUP_ARTICLE); - char *statusString = PR_smprintf (statusTemplate, m_folder->GetPrettiestName(), m_purgeCount); - if (statusString) - { - FE_Progress (m_context, statusString); - XP_FREE(statusString); - } - } -} diff --git a/mozilla/lib/libmsg/msgpurge.h b/mozilla/lib/libmsg/msgpurge.h deleted file mode 100644 index 623d60cf90b..00000000000 --- a/mozilla/lib/libmsg/msgpurge.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef MsgPurge_H -#define MsgPurge_H - -#include "msg.h" -#include "msgdbtyp.h" - -class MessageDB; -class NewsGroupDB; -class NewsMessageHdr; -class MSG_FolderInfo; -class DBMessageHdr; -class NewsFolderInfo; -struct ListContext; - -class MSG_PurgeNewsgroupState -{ -public: - MSG_PurgeNewsgroupState(MSG_Pane *pane, MSG_FolderInfo *folder); - virtual ~MSG_PurgeNewsgroupState(); - MsgERR Init(); - int PurgeSomeMore(); - int FinishPurging(); -protected: - void PurgeHeader(DBMessageHdr *hdr); - void PurgeArticle(DBMessageHdr *hdr); - - NewsGroupDB *m_newsDB; - MSG_FolderInfo *m_folder; - NewsFolderInfo *m_groupInfo; - int32 m_purgeCount; - int32 m_headerIndex; - MWContext *m_context; - MSG_Pane *m_pane; - MSG_PurgeInfo m_headerPurgeInfo; - MSG_PurgeInfo m_articlePurgeInfo; - ListContext *m_listContext; - DBMessageHdr *m_pNextHeader; -}; - -#endif diff --git a/mozilla/lib/libmsg/msgrulet.cpp b/mozilla/lib/libmsg/msgrulet.cpp deleted file mode 100644 index e44f38bfba0..00000000000 --- a/mozilla/lib/libmsg/msgrulet.cpp +++ /dev/null @@ -1,242 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// MSG_RuleTracker is responsible for watching when mail folder paths -// change, and if the changing folder is a target of a rule, ask the user how -// to resolve the potential breakage given the options in TrackAction -// -// MSG_RuleTracker reads and (potentially) writes the rule list, so it -// must be used atomically. i.e. it's not legal for a MSG_RuleTracker -// object to live across invocations of GetNewMail or the Rules dialog box. - -#include "msg.h" - -#include "msgrulet.h" -#include "msgfinfo.h" -#include "msgmast.h" -#include "pmsgfilt.h" - - -MSG_RuleTracker::MSG_RuleTracker (MSG_Master *master, MSG_RuleTrackCallback cb, void *cookie) -{ - m_master = master; - m_list = NULL; - m_listIsDirty = FALSE; - - m_folderList = NULL; - m_folderListCount = 0; - - m_callback = cb; - m_callbackCookie = cookie; -} - - -XP_Bool MSG_RuleTracker::WatchMoveFolders (MSG_FolderInfo **list, int count) -{ - m_isDelete = FALSE; - return WatchFolders (list, count); -} - - -XP_Bool MSG_RuleTracker::WatchDeleteFolders (MSG_FolderInfo **list, int count) -{ - m_isDelete = TRUE; - return WatchFolders (list, count); -} - - -XP_Bool MSG_RuleTracker::WatchFolders (MSG_FolderInfo **folderList, int folderListCount) -{ - XP_Bool ret = TRUE; - - m_folderList = folderList; - m_folderListCount = folderListCount; - - ret = LoadRules(folderList, folderListCount); - if (ret) - { - for (int i = 0; i < m_folderListCount; i++) - { - // Find out if any rules refer to this folder before we change it - MatchFolderToRules (m_folderList[i]); - if (m_rulesToTrack.GetSize() > 0) - { - (*m_callback) (m_callbackCookie, m_rulesToTrack, m_actions, m_isDelete); - for (uint32 j = 0; j < m_actions.GetSize(); j++) - if (dontChange == (MSG_RuleTrackAction) m_actions.GetAt(j)) - return FALSE; - } - } - } - return ret; -} - -XP_Bool MSG_RuleTracker::AbortTracking () -{ - // Let go of allocated path deltas we're remembering - m_folderListCount = 0; - m_listIsDirty = FALSE; -// m_rulesToTrack.DeleteElements (); - - return TRUE; -} - -MSG_RuleTracker::~MSG_RuleTracker () -{ - // Look through the list of folders to see if any of them need to have - // their location updated in one or more rules - for (int i = 0; i < m_folderListCount; i++) - { - // Apply the changes the user requested to the rule set - MSG_FolderInfoMail *mailFolder = m_folderList[i]->GetMailFolderInfo(); - if (mailFolder) - ApplyTrackActions (mailFolder->GetPathname()); - } - - // If the operation which used the rule tracker has decided to change a rule's - // path, the list will be dirty, otherwise we don't need to write it out again - if (m_listIsDirty) - MSG_CloseFilterList (m_list); - else - MSG_CancelFilterList (m_list); - - // Let go of allocated path deltas we're remembering - m_rulesToTrack.DeleteElements (); - - // Now that we're done, other customers of the rules list are allowed - // to load it and fire the rules - m_master->ReleaseRulesSemaphore(this); -} - - -XP_Bool MSG_RuleTracker::LoadRules (MSG_FolderInfo **folderList, int count) -{ - // Don't let anyone else change the rules list while we're running - if (!m_master->AcquireRulesSemaphore(this)) - return FALSE; - - // Pull the rule list out of the disk file - // - // We don't really support opening the folder list for all the folders, - // we only open the filters for the first folder. This should be fine - // since we should never be operating on folders that would have different - // sets of filters. - MSG_FolderInfo *folder = (count > 0) ? folderList[0] : (MSG_FolderInfo *)NULL; - if (MSG_OpenFolderFilterListFromMaster(m_master, folder, filterInbox, &m_list) != FilterError_Success) - return FALSE; - - m_listIsDirty = FALSE; - - return TRUE; -} - - -void MSG_RuleTracker::MatchFolderToRules (MSG_FolderInfo *folder) -{ - // Look through the rules list for any rules which refer to the pathname - // and add them to the list of rules we should keep an eye on. - - m_rulesToTrack.RemoveAll(); - MSG_FolderInfoMail *mailFolder = folder->GetMailFolderInfo(); - if (mailFolder) - { - int32 filterCount = 0; - m_list->GetFilterCount (&filterCount); - for (MSG_FilterIndex i = 0; i < filterCount; i++) - { - MSG_Filter *filter = NULL; - m_list->GetFilterAt (i, &filter); - XP_ASSERT(filter); - if (!filter) - continue; - - MSG_FilterType filter_type = filter->GetType(); - if (filterInboxJavaScript == filter_type || filterNewsJavaScript == filter_type) - continue; - - MSG_Rule *rule = NULL; - filter->GetRule (&rule); - XP_ASSERT(rule); - if (!rule) - continue; - - MSG_RuleActionType action; - void *value = NULL; - rule->GetAction (&action, &value); - if (!value) - continue; - - int mailFolderPathLen = XP_STRLEN(mailFolder->GetPathname()); - char *mailFolderPath = (char *)XP_ALLOC(mailFolderPathLen + 6); - XP_STRCPY(mailFolderPath, mailFolder->GetPathname()); - XP_STRCAT(mailFolderPath, ".sbd/"); - if ( acMoveToFolder == action - && ( XP_STRSTR((char*) value, mailFolderPath) - || !XP_STRCMP((char*) value, mailFolder->GetPathname()))) - { - char *delta = XP_STRDUP ((char*) value + mailFolderPathLen); - XP_ASSERT(delta); - MSG_RuleTrackElement *elem = new MSG_RuleTrackElement (rule, delta); - m_rulesToTrack.Add (elem); - } - XP_FREE(mailFolderPath); - } - } -} - - -void MSG_RuleTracker::ApplyTrackActions (const char * newPath) -{ - // Now that we're done, look through the rules - for (int i = 0; i < m_rulesToTrack.GetSize(); i++) - { - MSG_RuleTrackElement *elem = m_rulesToTrack.GetAt(i); - XP_ASSERT(elem && elem->m_rule->IsValid()); - - MSG_RuleTrackAction a = (MSG_RuleTrackAction) m_actions.GetAt(i); - switch (a) - { - case disableRule: - elem->m_rule->GetFilter()->SetEnabled (FALSE); - m_listIsDirty = TRUE; - break; - case breakRule: - break; - case trackChange: - { - char *childPath = PR_smprintf ("%s%s", newPath, elem->m_parentalPathDelta); - if (childPath) - { - elem->m_rule->SetAction (acMoveToFolder, (void*) childPath); - m_listIsDirty = TRUE; - XP_FREE(childPath); - } - break; - } - case dontChange: - break; - default: - XP_ASSERT(FALSE); - } - } -} - - diff --git a/mozilla/lib/libmsg/msgrulet.h b/mozilla/lib/libmsg/msgrulet.h deleted file mode 100644 index 8446523cd47..00000000000 --- a/mozilla/lib/libmsg/msgrulet.h +++ /dev/null @@ -1,124 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef _MSGRULET_H -#define _MSGRULET_H - -#include "ptrarray.h" -#include "dwordarr.h" - -class MSG_FolderInfo; -class MSG_Master; -struct MSG_FilterList; -struct MSG_Rule; - -// MSG_RuleTrackAction comprises the set of possible resolutions when -// a change to a mail folder conflicts with a filter rule. - -typedef enum MSG_RuleTrackAction -{ - disableRule, // Allow the folder operation, but disable referring rules - breakRule, // Allow the rule to keep firing using old path - trackChange, // Change the rule to refer to the new path - dontChange // Abort the folder operation with no change -} MSG_RuleTrackAction; - - -typedef void (*MSG_RuleTrackCallback) (void*, XPPtrArray&, XPDWordArray&, XP_Bool isDelete); - - -class MSG_RuleTrackElement -{ -public: - MSG_RuleTrackElement (MSG_Rule *rule, char *delta) - { - m_rule = rule; - m_parentalPathDelta = delta; - } - - ~MSG_RuleTrackElement () - { - m_rule = NULL; - XP_FREEIF(m_parentalPathDelta); - } - - MSG_Rule *m_rule; - char *m_parentalPathDelta; -}; - - -class MSG_RuleTrackArray : public XPPtrArray -{ -public: - - MSG_RuleTrackElement *GetAt (int i) - { - return (MSG_RuleTrackElement*) XPPtrArray::GetAt(i); - } - - void DeleteElements () - { - for (int i = 0; i < GetSize(); i++) - delete GetAt(i); - } -}; - -// MSG_RuleTracker is responsible for watching when mail folder paths -// change, and if the changing folder is a target of a rule, ask the user how -// to resolve the potential breakage given the options in TrackAction -// -// MSG_RuleTracker reads and (potentially) writes the rule list, so it -// must be used atomically. i.e. it's not legal for a MSG_RuleTracker -// object to live across invocations of GetNewMail or the Rules dialog box. - -class MSG_RuleTracker -{ -public: - MSG_RuleTracker (MSG_Master *, MSG_RuleTrackCallback, void *); - ~MSG_RuleTracker (); - - XP_Bool WatchMoveFolders (MSG_FolderInfo **list, int listCount); - XP_Bool WatchDeleteFolders (MSG_FolderInfo **list, int listCount); - XP_Bool AbortTracking (); - -protected: - XP_Bool WatchFolders (MSG_FolderInfo **list, int listCount); - XP_Bool LoadRules (MSG_FolderInfo **list, int listCount); - void MatchFolderToRules (MSG_FolderInfo *); - void ApplyTrackActions (const char *newPath); - - MSG_Master *m_master; - MSG_FilterList *m_list; - XP_Bool m_listIsDirty; - - MSG_RuleTrackArray m_rulesToTrack; - XPDWordArray m_actions; - - MSG_FolderInfo **m_folderList; - int m_folderListCount; - - MSG_RuleTrackCallback m_callback; - void *m_callbackCookie; - - XP_Bool m_isDelete; -}; - -#endif //_MSGRULET_H diff --git a/mozilla/lib/libmsg/msgsec.h b/mozilla/lib/libmsg/msgsec.h deleted file mode 100644 index 6034a162594..00000000000 --- a/mozilla/lib/libmsg/msgsec.h +++ /dev/null @@ -1,30 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef MSGSEC_H -#define MSGSEC_H - -#include "rosetta.h" - -HG83336 - -#endif /* MSGSEC_H */ diff --git a/mozilla/lib/libmsg/msgsend.cpp b/mozilla/lib/libmsg/msgsend.cpp deleted file mode 100644 index 9e3f30239b4..00000000000 --- a/mozilla/lib/libmsg/msgsend.cpp +++ /dev/null @@ -1,6364 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* compose.c --- generation and delivery of MIME objects. - */ - -#include "rosetta.h" -#include "msg.h" -#include "ntypes.h" -#include "structs.h" -#include "xlate.h" /* Text and PostScript converters */ -#include "merrors.h" -#include "gui.h" /* for XP_AppCodeName */ -#include "mime.h" -#include "xp_time.h" /* For XP_LocalZoneOffset() */ -#include "libi18n.h" -#include "xpgetstr.h" -#include "prtime.h" -#include "prtypes.h" -#include "msgcom.h" -#include "msgsend.h" -#include "msgsendp.h" -#include "maildb.h" -#include "mailhdr.h" -#include "msgprefs.h" -#include "msgmast.h" -#include "msgcpane.h" -#ifndef NO_SECURITY -#include HG02902 -#endif -#include "grpinfo.h" -#include "msgcflds.h" -#include "prefapi.h" -#include "abdefn.h" -#include "prsembst.h" -#include "secrng.h" /* for RNG_GenerateGlobalRandomBytes() */ -#include "addrbook.h" -#include "imaphost.h" -#include "imapoff.h" -#ifdef XP_MAC -#include "errors.h" -#endif -#include "intl_csi.h" -#include "msgimap.h" -#include "msgurlq.h" - -#ifdef XP_MAC -#pragma warn_unusedarg off -#endif // XP_MAC - -extern "C" -{ - extern int MK_MSG_ASSEMBLING_MSG; - extern int MK_MSG_ASSEMB_DONE_MSG; - extern int MK_MSG_LOAD_ATTACHMNT; - extern int MK_MSG_LOAD_ATTACHMNTS; - extern int MK_MSG_DELIV_MAIL; - extern int MK_MSG_DELIV_MAIL_DONE; - extern int MK_MSG_DELIV_NEWS; - extern int MK_MSG_DELIV_NEWS_DONE; - extern int MK_MSG_QUEUEING; - extern int MK_MSG_WRITING_TO_FCC; - extern int MK_MSG_QUEUED; - extern int MK_MIME_ERROR_WRITING_FILE; - extern int MK_MIME_MULTIPART_BLURB; - extern int MK_MIME_NO_RECIPIENTS; - extern int MK_MIME_NO_SENDER; - extern int MK_MSG_COULDNT_OPEN_FCC_FILE; - extern int MK_OUT_OF_MEMORY; - extern int MK_UNABLE_TO_OPEN_TMP_FILE; - extern int MK_MSG_CANT_CREATE_FOLDER; - extern int MK_MSG_SAVE_DRAFT; - extern int MK_ADDR_BOOK_CARD; - extern int MK_MSG_MAC_PROMPT_UUENCODE; - extern int MK_MSG_SAVING_AS_DRAFT; - extern int MK_MSG_SAVING_AS_TEMPLATE; - extern int MK_MSG_UNABLE_TO_SAVE_DRAFT; - extern int MK_MSG_UNABLE_TO_SAVE_TEMPLATE; - extern int MK_UNABLE_TO_OPEN_FILE; - extern int MK_IMAP_UNABLE_TO_SAVE_MESSAGE; - extern int MK_IMAP_NO_ONLINE_FOLDER; -} - -#ifdef XP_MAC -#include "m_cvstrm.h" -#endif - -#define TEN_K 10240 -#define MK_ATTACHMENT_LOAD_FAILED -666 - -/* Asynchronous mailing of messages with attached URLs. - - - If there are any attachments, start their URLs going, and write each - of them to a temp file. - - - While writing to their files, examine the data going by and decide - what kind of encoding, if any, they need. Also remember their content - types. - - - Once that URLs has been saved to a temp file (or, if there were no - attachments) generate a final temp file, of the actual message: - - - Generate a string of the headers. - - Open the final temp file. - - Write the headers. - - Examine the first part, and decide whether to encode it. - - Write the first part to the file, possibly encoded. - - Write the second and subsequent parts to the file, possibly encoded. - (Open the first temp file and copy it to the final temp file, and so - on, through an encoding filter.) - - - Delete the attachment temp file(s) as we finish with them. - - Close the final temp file. - - Open the news: url. - - Send the final temp file to NNTP. - If there's an error, run the callback with "failure" status. - - If mail succeeded, open the mailto: url. - - Send the final temp file to SMTP. - If there's an error, run the callback with "failure" status. - - Otherwise, run the callback with "success" status. - - Free everything, delete the final temp file. - - The theory behind the encoding logic: - ===================================== - - If the document is of type text/html, and the user has asked to attach it - as source or postscript, it will be run through the appropriate converter - (which will result in a document of type text/plain.) - - An attachment will be encoded if: - - - it is of a non-text type (in which case we will use base64); or - - The "use QP" option has been selected and high-bit characters exist; or - - any NULLs exist in the document; or - - any line is longer than 900 bytes. - - - If we are encoding, and more than 10% of the document consists of - non-ASCII characters, then we always use base64 instead of QP. - - We eschew quoted-printable in favor of base64 for documents which are likely - to always be binary (images, sound) because, on the off chance that a GIF - file (for example) might contain primarily bytes in the ASCII range, using - the quoted-printable representation might cause corruption due to the - translation of CR or LF to CRLF. So, when we don't know that the document - has "lines", we don't use quoted-printable. - */ - - -/* It's better to send a message as news before sending it as mail, because - the NNTP server is more likely to reject the article (for any number of - reasons) than the SMTP server is. */ -#undef MAIL_BEFORE_NEWS - -/* Generating a message ID here is a good because it means that if a message - is sent to both mail and news, it will have the same ID in both places. */ -#define GENERATE_MESSAGE_ID - - -/* For maximal compatibility, it helps to emit both - Content-Type: <type>; name="<original-file-name>" - as well as - Content-Disposition: inline; filename="<original-file-name>" - - The lossage here is, RFC1341 defined the "name" parameter to Content-Type, - but then RFC1521 deprecated it in anticipation of RFC1806, which defines - Content-Type and the "filename" parameter. But, RFC1521 is "Standards Track" - while RFC1806 is still "Experimental." So, it's probably best to just - implement both. - */ -#define EMIT_NAME_IN_CONTENT_TYPE - - -/* Whether the contents of the BCC header should be preserved in the FCC'ed - copy of a message. See comments below, in mime_do_fcc_1(). - */ -#define SAVE_BCC_IN_FCC_FILE - - -/* When attaching an HTML document, one must indicate the original URL of - that document, if the receiver is to have any chance of being able to - retreive and display the inline images, or to click on any links in the - HTML. - - The way we have done this in the past is by inserting a <BASE> tag as the - first line of all HTML documents we attach. (This is kind of bad in that - we're actually modifying the document, and it really isn't our place to - do that.) - - The sanctioned *new* way of doing this is to insert a Content-Base header - field on the attachment. This is (will be) a part of the forthcoming MHTML - spec. - - If GENERATE_CONTENT_BASE, we generate a Content-Base header. - - We used to have a MANGLE_HTML_ATTACHMENTS_WITH_BASE_TAG symbol that we - defined, which added a BASE tag to the bodies. We stopped doing this in - 4.0. */ -#define GENERATE_CONTENT_BASE - - -static XP_Bool mime_use_quoted_printable_p = TRUE; -static XP_Bool mime_headers_use_quoted_printable_p = FALSE; - -#ifdef XP_MAC - -XP_BEGIN_PROTOS -extern OSErr my_FSSpecFromPathname(char* src_filename, FSSpec* fspec); -extern char * mime_make_separator(const char *prefix); -HG89984 -XP_END_PROTOS - -static char* NET_GetLocalFileFromURL(char *url) -{ - char * finalPath; - XP_ASSERT(strncasecomp(url, "file://", 7) == 0); - finalPath = (char*)XP_ALLOC(strlen(url)); - if (finalPath == NULL) - return NULL; - strcpy(finalPath, url+6+1); - return finalPath; -} - -static char* NET_GetURLFromLocalFile(char *filename) -{ - /* file:///<path>0 */ - char * finalPath = (char*)XP_ALLOC(strlen(filename) + 8 + 1); - if (finalPath == NULL) - return NULL; - finalPath[0] = 0; - strcat(finalPath, "file://"); - strcat(finalPath, filename); - return finalPath; -} - -#endif /* XP_MAC */ - -void -MIME_ConformToStandard (XP_Bool conform_p) -{ - /* - * If we are conforming to mime standard no matter what we set - * for the headers preference when generating mime headers we should - * also conform to the standard. Otherwise, depends the preference - * we set. For now, the headers preference is not accessible from UI. - */ - if (conform_p) - mime_headers_use_quoted_printable_p = TRUE; - else - PREF_GetBoolPref("mail.strictly_mime_headers", - &mime_headers_use_quoted_printable_p); - mime_use_quoted_printable_p = conform_p; -} - -MSG_SendMimeDeliveryState::MSG_SendMimeDeliveryState() -{ - m_pane = NULL; /* Pane to use when loading the URLs */ - m_fe_data = NULL; /* passed in and passed to callback */ - m_fields = NULL; /* Where to send the message once it's done */ - - m_dont_deliver_p = FALSE; - m_deliver_mode = MSG_DeliverNow; - - m_attachments_only_p = FALSE; - m_pre_snarfed_attachments_p = FALSE; - m_digest_p = FALSE; - m_be_synchronous_p = FALSE; - HG54689 - m_attachment1_type = 0; - m_attachment1_encoding = 0; - m_attachment1_encoder_data = NULL; - m_attachment1_body = 0; - m_attachment1_body_length = 0; - m_attachment_count = 0; - m_attachment_pending_count = 0; - m_attachments = NULL; - m_status = 0; - m_message_delivery_done_callback = NULL; - m_attachments_done_callback = NULL; - m_msg_file_name = NULL; - m_msg_file = 0; - m_plaintext = NULL; - m_html_filename = NULL; - -//#ifdef MSG_SEND_MULTIPART_RELATED - m_related_part = NULL; -//#endif - m_imapFolderInfo = NULL; - m_imapOutgoingParser = NULL; - m_imapLocalMailDB = NULL; -} - -MSG_SendMimeDeliveryState::~MSG_SendMimeDeliveryState() -{ -//#ifdef MSG_SEND_MULTIPART_RELATED -#if 0 - if (m_related_part) - { - // m_related_part (if it exists) gets deleted when - // m_related_saver gets torched. - delete m_related_part; - m_related_part = NULL; - } -#endif -//#endif - FREEIF(m_msg_file_name); -} - -static char *mime_mailto_stream_read_buffer = 0; -static char *mime_mailto_stream_write_buffer = 0; - -static void mime_attachment_url_exit (URL_Struct *url, int status, - MWContext *context); -static void mime_text_attachment_url_exit (PrintSetup *p); -static int mime_sanity_check_fields (const char *from, - const char *reply_to, - const char *to, - const char *cc, - const char *bcc, - const char *fcc, - const char *newsgroups, - const char *followup_to, - const char *subject, - const char *references, - const char *organization, - const char *other_random_headers); -static char *mime_generate_headers (MSG_CompositionFields *fields, - int csid, - MSG_Deliver_Mode deliver_mode); -static char *mime_generate_attachment_headers (const char *type, - const char *encoding, - const char *description, - const char *x_mac_type, - const char *x_mac_creator, - const char *real_name, - const char *base_url, - XP_Bool digest_p, - MSG_DeliverMimeAttachment *ma, - int16 mail_csid); -static char *RFC2231ParmFolding(const char *parmName, const char *charset, - const char *language, const char *parmValue); -#if 0 -static XP_Bool mime_type_conversion_possible (const char *from_type, - const char *to_type); -#endif - -#ifdef XP_UNIX -extern "C" void XFE_InitializePrintSetup (PrintSetup *p); -#endif /* XP_UNIX */ - -extern "C" char * NET_ExplainErrorDetails (int code, ...); - -MSG_DeliverMimeAttachment::MSG_DeliverMimeAttachment() -{ - m_url_string = NULL; - m_url = NULL; - m_done = FALSE; - m_type = NULL; - m_override_type = NULL; - m_override_encoding = NULL; - m_desired_type = NULL; - m_description = NULL; - m_x_mac_type = NULL; - m_x_mac_creator = NULL; - m_encoding = NULL; - m_real_name = NULL; - m_mime_delivery_state = NULL; - m_encoding = NULL; - m_already_encoded_p = FALSE; - m_file_name = NULL; - m_file = 0; -#ifdef XP_MAC - m_ap_filename = NULL; -#endif - HG54897 - m_size = 0; - m_unprintable_count = 0; - m_highbit_count = 0; - m_ctl_count = 0; - m_null_count = 0; - m_current_column = 0; - m_max_column = 0; - m_lines = 0; - - m_encoder_data = NULL; - - XP_MEMSET(&m_print_setup, 0, sizeof(m_print_setup)); - m_graph_progress_started = FALSE; -} - -MSG_DeliverMimeAttachment::~MSG_DeliverMimeAttachment() -{ -} - - -extern "C" char * -mime_make_separator(const char *prefix) -{ - unsigned char rand_buf[13]; - RNG_GenerateGlobalRandomBytes((void *) rand_buf, 12); - return PR_smprintf("------------%s" - "%02X%02X%02X%02X" - "%02X%02X%02X%02X" - "%02X%02X%02X%02X", - prefix, - rand_buf[0], rand_buf[1], rand_buf[2], rand_buf[3], - rand_buf[4], rand_buf[5], rand_buf[6], rand_buf[7], - rand_buf[8], rand_buf[9], rand_buf[10], rand_buf[11]); -} - -XP_Bool -MSG_DeliverMimeAttachment::UseUUEncode_p(void) -{ - XP_Bool returnVal = (m_mime_delivery_state) && - (m_mime_delivery_state->m_pane) && - ((MSG_CompositionPane*)(m_mime_delivery_state->m_pane))-> - GetCompBoolHeader(MSG_UUENCODE_BINARY_BOOL_HEADER_MASK); - - return returnVal; -} - -static void msg_escape_file_name (URL_Struct *m_url) -{ - XP_ASSERT (m_url->address && !XP_STRNCASECMP(m_url->address, "file:", 5)); - if (!m_url->address || - XP_STRNCASECMP(m_url->address, "file:", 5)) return; - - char * new_address = NET_Escape(XP_STRCHR(m_url->address, ':')+1, - URL_PATH); - XP_ASSERT(new_address); - if (!new_address) return; - - XP_FREEIF(m_url->address); - m_url->address = PR_smprintf("file:%s", new_address); - XP_FREEIF(new_address); -} - -// Returns a newly-allocated string containing the MIME type to be used for -// outgoing attachments of the given document type. The way this is determined -// will be platform-specific, based on the real filename of the file (i.e. not the temp filename) -// and some Mac creator info. -// If there is no default specified in the prefs, then this returns NULL. -static char *msg_GetMissionControlledOutgoingMIMEType(const char *filename, - const char *x_mac_type, - const char *x_mac_creator) -{ - if (!filename) - return NULL; - -#ifdef XP_WIN - char *whereDot = XP_STRRCHR(filename, '.'); - if (whereDot) - { - char *extension = whereDot + 1; - if (extension) - { - char *mcOutgoingMimeType = NULL; - char *prefString = PR_smprintf("mime.table.extension.%s.outgoing_default_type",extension); - - if (prefString) - { - PREF_CopyCharPref(prefString, &mcOutgoingMimeType); - XP_FREE(prefString); - } - return mcOutgoingMimeType; - } - else - return NULL; // no file extension - } - else - return NULL; // no file extension - -#endif - - return NULL; -} - - -static char * -RFC2231ParmFolding(const char *parmName, const char *charset, - const char *language, const char *parmValue) -{ -#define MAX_FOLDING_LEN 75 // this is to gurantee the folded line will - // never be greater than 78 = 75 + CRLFLWSP - char *foldedParm = NULL; - char *dupParm = NULL; - int32 parmNameLen = 0; - int32 parmValueLen = 0; - int32 charsetLen = 0; - int32 languageLen = 0; - XP_Bool needEscape = FALSE; - - XP_ASSERT(parmName && *parmName && parmValue && *parmValue); - if (!parmName || !*parmName || !parmValue || !*parmValue) - return NULL; - if ((charset && *charset) || (language && *language)) - needEscape = TRUE; - - if (needEscape) - dupParm = NET_Escape(parmValue, URL_PATH); - else - dupParm = XP_STRDUP(parmValue); - - if (!dupParm) - return NULL; - - parmValueLen = XP_STRLEN(dupParm); - parmNameLen = XP_STRLEN(parmName); - if (needEscape) - parmNameLen += 5; // *=__'__'___ or *[0]*=__'__'__ or *[1]*=___ - else - parmNameLen += 5; // *[0]="___"; - charsetLen = charset ? XP_STRLEN(charset) : 0; - languageLen = language ? XP_STRLEN(language) : 0; - - if ((parmValueLen + parmNameLen + charsetLen + languageLen) < - MAX_FOLDING_LEN) - { - StrAllocCopy(foldedParm, parmName); - if (needEscape) - { - StrAllocCat(foldedParm, "*="); - if (charsetLen) - StrAllocCat(foldedParm, charset); - StrAllocCat(foldedParm, "'"); - if (languageLen) - StrAllocCat(foldedParm, language); - StrAllocCat(foldedParm, "'"); - } - else - StrAllocCat(foldedParm, "=\""); - StrAllocCat(foldedParm, dupParm); - if (!needEscape) - StrAllocCat(foldedParm, "\""); - goto done; - } - else - { - int curLineLen = 0; - int counter = 0; - char digits[32]; - char *start = dupParm; - char *end = NULL; - char tmp = 0; - - while (parmValueLen > 0) - { - curLineLen = 0; - if (counter == 0) - { - StrAllocCopy (foldedParm, parmName); - } - else - { - if (needEscape) - StrAllocCat(foldedParm, "\r\n "); - else - StrAllocCat(foldedParm, ";\r\n "); - StrAllocCat(foldedParm, parmName); - } - XP_SPRINTF(digits, "*%d", counter); - StrAllocCat(foldedParm, digits); - curLineLen += XP_STRLEN(digits); - if (needEscape) - { - StrAllocCat(foldedParm, "*="); - if (counter == 0) - { - if (charsetLen) - StrAllocCat(foldedParm, charset); - StrAllocCat(foldedParm, "'"); - if (languageLen) - StrAllocCat(foldedParm, language); - StrAllocCat (foldedParm, "'"); - curLineLen += charsetLen; - curLineLen += languageLen; - } - } - else - { - StrAllocCat(foldedParm, "=\""); - } - counter++; - curLineLen += parmNameLen; - if (parmValueLen <= MAX_FOLDING_LEN - curLineLen) - end = start + parmValueLen; - else - end = start + (MAX_FOLDING_LEN - curLineLen); - - tmp = 0; - if (*end && needEscape) - { - // check to see if we are in the middle of escaped char - if (*end == '%') - { - tmp = '%'; *end = NULL; - } - else if (end-1 > start && *(end-1) == '%') - { - end -= 1; tmp = '%'; *end = NULL; - } - else if (end-2 > start && *(end-2) == '%') - { - end -= 2; tmp = '%'; *end = NULL; - } - else - { - tmp = *end; *end = NULL; - } - } - else - { - tmp = *end; *end = NULL; - } - StrAllocCat(foldedParm, start); - if (!needEscape) - StrAllocCat(foldedParm, "\""); - - parmValueLen -= (end-start); - if (tmp) - *end = tmp; - start = end; - } - } - -done: - XP_FREEIF(dupParm); - return foldedParm; -} - -int32 -MSG_DeliverMimeAttachment::SnarfAttachment () -{ - int32 status = 0; - XP_ASSERT (! m_done); - - m_file_name = WH_TempName (xpFileToPost, "nsmail"); - if (! m_file_name) - return (MK_OUT_OF_MEMORY); - - m_file = XP_FileOpen (m_file_name, xpFileToPost, XP_FILE_WRITE_BIN); - if (! m_file) - return MK_UNABLE_TO_OPEN_TMP_FILE; /* #### how do we pass file name? */ - - m_url->fe_data = this; - - /* #### m_type is still unknown at this point. - We need to find a way to make the textfe not blow - up on documents that are not text/html! - */ - -#ifdef XP_MAC - if (NET_IsLocalFileURL(m_url->address) && // do we need to add IMAP: to this list? NET_IsLocalFileURL returns FALSE always for IMAP - DMB - (strncasecomp(m_url->address, "mailbox:", 8) != 0)) - { - /* convert the apple file to AppleDouble first, and then patch the - address in the url. - */ - char* src_filename = NET_GetLocalFileFromURL (m_url->address); - - // ### mwelch Only use appledouble if we aren't uuencoding. - if(isMacFile(src_filename) && (! UseUUEncode_p())) - { - - char *separator, tmp[128]; - NET_StreamClass *ad_encode_stream; - - separator = mime_make_separator("ad"); - if (!separator) - return MK_OUT_OF_MEMORY; - - m_ap_filename = WH_TempName (xpFileToPost, "nsmail"); - - ad_encode_stream = (NET_StreamClass *) /* need a prototype */ - fe_MakeAppleDoubleEncodeStream (FO_CACHE_AND_MAIL_TO, - NULL, - m_url, - m_mime_delivery_state->GetContext(), - src_filename, - m_ap_filename, - separator); - - if (ad_encode_stream == NULL) - { - FREEIF(separator); - return MK_OUT_OF_MEMORY; - } - - do { - status = (*ad_encode_stream->put_block) - ((NET_StreamClass *)ad_encode_stream->data_object, NULL, 1024); - } while (status == noErr); - - if (status >= 0) - ad_encode_stream->complete ((NET_StreamClass *)ad_encode_stream->data_object); - else - ad_encode_stream->abort ((NET_StreamClass *)ad_encode_stream->data_object, status); - - XP_FREE(ad_encode_stream); - - if (status < 0) - { - FREEIF(separator); - return status; - } - - XP_FREE(m_url->address); - { - char * temp = WH_FileName(m_ap_filename, xpFileToPost ); - m_url->address = XP_PlatformFileToURL(temp); // jrm 97/02/08 - if (temp) - XP_FREE(temp); - } - /* and also patch the types. - */ - if (m_type) - XP_FREE (m_type); - - XP_SPRINTF(tmp, MULTIPART_APPLEDOUBLE ";\r\n boundary=\"%s\"", - separator); - - FREEIF(separator); - - m_type = XP_STRDUP(tmp); - } - else - { - if (isMacFile(src_filename)) - { - // The only time we want to send just the data fork of a two-fork - // Mac file is if uuencoding has been requested. - XP_ASSERT(UseUUEncode_p()); - if (!((MSG_CompositionPane *) m_mime_delivery_state->m_pane)->m_confirmed_uuencode_p) - { - XP_Bool confirmed = FE_Confirm(m_mime_delivery_state->m_pane->GetContext(), - XP_GetString(MK_MSG_MAC_PROMPT_UUENCODE)); - - // only want to do this once - ((MSG_CompositionPane *) m_mime_delivery_state->m_pane)->m_confirmed_uuencode_p = TRUE; - - if (! confirmed) // cancelled - return MK_INTERRUPTED; - } - } - /* make sure the file type and create are set. */ - char filetype[32]; - FSSpec fsSpec; - FInfo info; - Bool useDefault; - char *macType, *macEncoding; - - my_FSSpecFromPathname(src_filename, &fsSpec); - if (FSpGetFInfo (&fsSpec, &info) == noErr) - { - XP_SPRINTF(filetype, "%X", info.fdType); - m_x_mac_type = XP_STRDUP(filetype); - - XP_SPRINTF(filetype, "%X", info.fdCreator); - m_x_mac_creator = XP_STRDUP(filetype); - if (m_type == NULL || - !strcasecomp (m_type, TEXT_PLAIN)) - { -# define TEXT_TYPE 0x54455854 /* the characters 'T' 'E' 'X' 'T' */ -# define text_TYPE 0x74657874 /* the characters 't' 'e' 'x' 't' */ - - if (info.fdType != TEXT_TYPE && info.fdType != text_TYPE) - { - FE_FileType(m_url->address, &useDefault, - &macType, &macEncoding); - - FREEIF(m_type); - m_type = macType; - } - } - } - - /* don't bother to set the types if we failed in getting the file - info. */ - } - FREEIF(src_filename); - src_filename = 0; - } -#else - - /* if we are attaching a local file make sure the file name are escaped - * properly - */ - if (NET_IsLocalFileURL(m_url->address) && - XP_STRNCASECMP (m_url->address, "file:", 5) == 0) - { - msg_escape_file_name(m_url); - } - -#endif /* XP_MAC */ - - if (m_desired_type && - !strcasecomp (m_desired_type, TEXT_PLAIN) /* #### && - mime_type_conversion_possible (m_type, m_desired_type) */ ) - { - /* Conversion to plain text desired. - */ - m_print_setup.url = m_url; - m_print_setup.carg = this; - m_print_setup.completion = mime_text_attachment_url_exit; - m_print_setup.filename = NULL; - m_print_setup.out = m_file; - m_print_setup.eol = CRLF; - - int32 width = 72; - PREF_GetIntPref("mailnews.wraplength", &width); - if (width == 0) width = 72; - else if (width < 10) width = 10; - else if (width > 30000) width = 30000; - - if (m_mime_delivery_state->m_pane->GetPaneType() == MSG_COMPOSITIONPANE) - { - int lineWidth = ((MSG_CompositionPane *) m_mime_delivery_state->m_pane) - ->GetLineWidth(); - if (lineWidth > width) - width = lineWidth; - } - m_print_setup.width = width; - - m_url->savedData.FormList = 0; -#ifdef _USRDLL - if (! NDLLXL_TranslateText (m_mime_delivery_state->GetContext(), m_url, - &m_print_setup)) - return MK_ATTACHMENT_LOAD_FAILED; -#else - if (! XL_TranslateText (m_mime_delivery_state->GetContext(), m_url, - &m_print_setup)) - return MK_ATTACHMENT_LOAD_FAILED; -#endif - if (m_type) XP_FREE (m_type); - m_type = m_desired_type; - m_desired_type = 0; - if (m_encoding) XP_FREE (m_encoding); - m_encoding = 0; - } -#ifdef XP_UNIX - else if (m_desired_type && - !strcasecomp (m_desired_type, APPLICATION_POSTSCRIPT) /* #### && - mime_type_conversion_possible (m_type, m_desired_type) */ ) - { - SHIST_SavedData saved_data; - - /* Make sure layout saves the current state of form elements. */ - LO_SaveFormData(m_mime_delivery_state->GetContext()); - - /* Hold on to the saved data. */ - XP_MEMCPY(&saved_data, &m_url->savedData, sizeof(SHIST_SavedData)); - - /* Conversion to postscript desired. - */ - XFE_InitializePrintSetup (&m_print_setup); - m_print_setup.url = m_url; - m_print_setup.carg = this; - m_print_setup.completion = mime_text_attachment_url_exit; - m_print_setup.filename = NULL; - m_print_setup.out = m_file; - m_print_setup.eol = CRLF; - XP_MEMSET (&m_url->savedData, 0, sizeof (SHIST_SavedData)); - XL_TranslatePostscript (m_mime_delivery_state->GetContext(), - m_url, &saved_data, - &m_print_setup); - if (m_type) XP_FREE (m_type); - m_type = m_desired_type; - m_desired_type = 0; - if (m_encoding) XP_FREE (m_encoding); - m_encoding = 0; - } -#endif /* XP_UNIX */ - else - { - int get_url_status; - - /* In this case, ignore the status, as that will be handled by - the exit routine. */ - - /* jwz && tj -> we're assuming that it is safe to return the result - of this call as our status result. - - A negative result means that the exit routine was run, either - because the operation completed quickly or failed. - */ - m_url->allow_content_change = FALSE; // don't use modified content - get_url_status = NET_GetURL (m_url, FO_CACHE_AND_MAIL_TO, - m_mime_delivery_state->GetContext(), - mime_attachment_url_exit); - - if (get_url_status < 0) - return MK_ATTACHMENT_LOAD_FAILED; - else - return 0; - } - return status; -} - - -static void -mime_attachment_url_exit (URL_Struct *url, int status, MWContext *context) -{ - MSG_DeliverMimeAttachment *ma = (MSG_DeliverMimeAttachment *) url->fe_data; - XP_ASSERT(ma != NULL); - if (ma != NULL) - ma->UrlExit(url, status, context); -} - - -void MSG_DeliverMimeAttachment::UrlExit(URL_Struct *url, int status, - MWContext *context) -{ - char *error_msg = url->error_msg; - url->error_msg = 0; - url->fe_data = 0; - - XP_ASSERT(m_mime_delivery_state != NULL); - XP_ASSERT(m_mime_delivery_state->GetContext() != NULL); - XP_ASSERT(m_url != NULL); - - if (m_graph_progress_started) - { - m_graph_progress_started = FALSE; - FE_GraphProgressDestroy (m_mime_delivery_state->GetContext(), m_url, - m_url->content_length, m_size); - } - - if (status < 0) - /* If any of the attachment URLs fail, kill them all. */ - NET_InterruptWindow (context); - - /* Close the file, but don't delete it (or the file name.) */ - XP_FileClose (m_file); - m_file = 0; - NET_FreeURLStruct (m_url); - /* I'm pretty sure m_url == url */ - m_url = 0; - url = 0; - - - - if (status < 0) { - if (m_mime_delivery_state->m_status >= 0) - m_mime_delivery_state->m_status = status; - XP_FileRemove(m_file_name, xpFileToPost); - XP_FREEIF(m_file_name); - } - - m_done = TRUE; - - XP_ASSERT (m_mime_delivery_state->m_attachment_pending_count > 0); - m_mime_delivery_state->m_attachment_pending_count--; - - if (status >= 0 && m_mime_delivery_state->m_be_synchronous_p) - { - /* Find the next attachment which has not yet been loaded, - if any, and start it going. - */ - int32 i; - MSG_DeliverMimeAttachment *next = 0; - for (i = 0; i < m_mime_delivery_state->m_attachment_count; i++) - if (!m_mime_delivery_state->m_attachments[i].m_done) - { - next = &m_mime_delivery_state->m_attachments[i]; - break; - } - if (next) - { - int status = next->SnarfAttachment (); - if (status < 0) - { - m_mime_delivery_state->Fail(status, 0); - return; - } - } - } - - if (m_mime_delivery_state->m_attachment_pending_count == 0) - { - /* If this is the last attachment, then either complete the - delivery (if successful) or report the error by calling - the exit routine and terminating the delivery. - */ - if (status < 0) - { - m_mime_delivery_state->Fail(status, error_msg); - error_msg = 0; - } - else - { - m_mime_delivery_state->GatherMimeAttachments (); - } - } - else - { - /* If this is not the last attachment, but it got an error, - then report that error and continue (we won't actually - abort the delivery until all the other pending URLs have - caught up with the NET_InterruptWindow() we did up above.) - */ - if (status < 0 && error_msg) - FE_Alert (context, error_msg); - } - FREEIF (error_msg); -} - -void -MSG_DeliverMimeAttachment::AnalyzeDataChunk(const char *chunk, int32 length) -{ - unsigned char *s = (unsigned char *) chunk; - unsigned char *end = s + length; - for (; s < end; s++) - { - if (*s > 126) - { - m_highbit_count++; - m_unprintable_count++; - } - else if (*s < ' ' && *s != '\t' && *s != CR && *s != LF) - { - m_unprintable_count++; - m_ctl_count++; - if (*s == 0) - m_null_count++; - } - - if (*s == CR || *s == LF) - { - if (s+1 < end && s[0] == CR && s[1] == LF) - s++; - if (m_max_column < m_current_column) - m_max_column = m_current_column; - m_current_column = 0; - m_lines++; - } - else - { - m_current_column++; - } - } -} - -void -MSG_DeliverMimeAttachment::AnalyzeSnarfedFile(void) -{ - char chunk[256]; - XP_File fileHdl = NULL; - int32 numRead = 0; - - if (m_file_name && *m_file_name) - { - fileHdl = XP_FileOpen(m_file_name, xpFileToPost, XP_FILE_READ_BIN); - if (fileHdl) - { - do - { - numRead = XP_FileRead(chunk, 256, fileHdl); - if (numRead > 0) - AnalyzeDataChunk(chunk, numRead); - } - while (numRead > 0); - XP_FileClose(fileHdl); - } - } -} - -static void -mime_text_attachment_url_exit (PrintSetup *p) -{ - MSG_DeliverMimeAttachment *ma = (MSG_DeliverMimeAttachment *) p->carg; - XP_ASSERT (p->url == ma->m_url); - ma->m_url->fe_data = ma; /* grr */ - mime_attachment_url_exit (p->url, p->status, - ma->m_mime_delivery_state->GetContext()); -} - - -PRIVATE unsigned int -mime_attachment_stream_write_ready (NET_StreamClass *stream) -{ - return MAX_WRITE_READY; -} - -PRIVATE int -mime_attachment_stream_write (NET_StreamClass *stream, const char *block, int32 length) -{ - MSG_DeliverMimeAttachment *ma = (MSG_DeliverMimeAttachment *) stream->data_object; - /* - const unsigned char *s; - const unsigned char *end; - */ - - if (ma->m_mime_delivery_state->m_status < 0) - return ma->m_mime_delivery_state->m_status; - - ma->m_size += length; - - if (!ma->m_graph_progress_started) - { - ma->m_graph_progress_started = TRUE; - FE_GraphProgressInit (ma->m_mime_delivery_state->GetContext(), ma->m_url, - ma->m_url->content_length); - } - - FE_GraphProgress (ma->m_mime_delivery_state->GetContext(), ma->m_url, - ma->m_size, length, ma->m_url->content_length); - - - /* Copy out the content type and encoding if we haven't already. - */ - if (!ma->m_type && ma->m_url->content_type) - { - ma->m_type = XP_STRDUP (ma->m_url->content_type); - - /* If the URL has an encoding, and it's not one of the "null" encodings, - then keep it. */ - if (ma->m_url->content_encoding && - strcasecomp (ma->m_url->content_encoding, ENCODING_7BIT) && - strcasecomp (ma->m_url->content_encoding, ENCODING_8BIT) && - strcasecomp (ma->m_url->content_encoding, ENCODING_BINARY)) - { - if (ma->m_encoding) XP_FREE (ma->m_encoding); - ma->m_encoding = XP_STRDUP (ma->m_url->content_encoding); - ma->m_already_encoded_p = TRUE; - } - - /* Make sure there's a string in the type field. - Note that UNKNOWN_CONTENT_TYPE and APPLICATION_OCTET_STREAM are - different; "octet-stream" means that this document was *specified* - as an anonymous binary type; "unknown" means that we will guess - whether it is text or binary based on its contents. - */ - if (!ma->m_type || !*ma->m_type) - StrAllocCopy (ma->m_type, UNKNOWN_CONTENT_TYPE); - - -#if defined(XP_WIN) || defined(XP_OS2) - /* WinFE tends to spew out bogus internal "zz-" types for things - it doesn't know, so map those to the "real" unknown type. - */ - if (ma->m_type && !strncasecomp (ma->m_type, "zz-", 3)) - StrAllocCopy (ma->m_type, UNKNOWN_CONTENT_TYPE); -#endif /* XP_WIN */ - - /* There are some of "magnus" types in the default - mime.types file that some platforms ship in /usr/local/lib/netscape/. These - types are meaningless to the end user, and the server never returns - them, but they're getting attached to local .cgi files anyway. - Remove them. - */ - if (ma->m_type && !strncasecomp (ma->m_type, "magnus-internal/", 16)) - StrAllocCopy (ma->m_type, UNKNOWN_CONTENT_TYPE); - - - /* kludge. - Unfortunately, the URL_Struct shares the `encoding' slot - amongst the Content-Encoding and Content-Transfer-Encoding headers. - Content-Transfer-Encoding is required to be one of the standard - MIME encodings (x- types are explicitly discourgaged.) But - Content-Encoding can be anything (it's HTTP, not MIME.) - - So, to prevent binary compressed data from getting dumped into the - mail stream, we special case some things here. If the encoding is - "x-compress" or "x-gzip", then that must have come from a - Content-Encoding header, So change the type to application/x-compress - and allow it to be encoded in base64. - - But what if it's something we don't know? In that case, we just - dump it into the mail. For Content-Transfer-Encodings, like for - example, x-uuencode, that's appropriate. But for Content-Encodings, - like for example, x-some-brand-new-binary-compression-algorithm, - that's wrong. - */ - if (ma->m_encoding && - (!strcasecomp (ma->m_encoding, ENCODING_COMPRESS) || - !strcasecomp (ma->m_encoding, ENCODING_COMPRESS2))) - { - StrAllocCopy (ma->m_type, APPLICATION_COMPRESS); - StrAllocCopy (ma->m_encoding, ENCODING_BINARY); - ma->m_already_encoded_p = FALSE; - } - else if (ma->m_encoding && - (!strcasecomp (ma->m_encoding, ENCODING_GZIP) || - !strcasecomp (ma->m_encoding, ENCODING_GZIP2))) - { - StrAllocCopy (ma->m_type, APPLICATION_GZIP); - StrAllocCopy (ma->m_encoding, ENCODING_BINARY); - ma->m_already_encoded_p = FALSE; - } - - /* If the caller has passed in an overriding type for this URL, - then ignore what the netlib guessed it to be. This is so that - we can hand it a file:/some/tmp/file and tell it that it's of - type message/rfc822 without having to depend on that tmp file - having some particular extension. - */ - if (ma->m_override_type) - { - StrAllocCopy (ma->m_type, ma->m_override_type); - if (ma->m_override_encoding) - StrAllocCopy (ma->m_encoding, ma->m_override_encoding); - } - - char *mcType = msg_GetMissionControlledOutgoingMIMEType(ma->m_real_name, ma->m_x_mac_type, ma->m_x_mac_creator); // returns an allocated string - if (mcType) - { - FREEIF(ma->m_type); - ma->m_type = mcType; - } - - } - - /* Cumulatively examine the data that is passing through this stream, - building up a histogram that will be used when deciding which encoding - (if any) should be used. - */ - ma->AnalyzeDataChunk(block, length); /* calling this instead of the previous 20ish lines */ - - /* Write it to the file. - */ - while (length > 0) - { - int32 l; - l = XP_FileWrite (block, length, ma->m_file); - if (l < length) - { - ma->m_mime_delivery_state->m_status = MK_MIME_ERROR_WRITING_FILE; - return ma->m_mime_delivery_state->m_status; - } - block += l; - length -= l; - } - - return 1; -} - - -PRIVATE void -mime_attachment_stream_complete (NET_StreamClass *stream) -{ - /* Nothing to do here - the URL exit method does our cleanup. */ -} - -PRIVATE void -mime_attachment_stream_abort (NET_StreamClass *stream, int status) -{ - MSG_DeliverMimeAttachment *ma = (MSG_DeliverMimeAttachment *) stream->data_object; - - if (ma->m_mime_delivery_state->m_status >= 0) - ma->m_mime_delivery_state->m_status = status; - - /* Nothing else to do here - the URL exit method does our cleanup. */ -} - - -#ifdef XP_OS2 -//DSR040297 - This looks pretty bad, but some compilers are very type -//strict when it comes to function pointers & the like... So this must be extern & extern "C" to match. -XP_BEGIN_PROTOS -extern NET_StreamClass * -mime_make_attachment_stream (int /*format_out*/, void * /*closure*/, - URL_Struct *url, MWContext *context); -XP_END_PROTOS -extern NET_StreamClass * -#else -static NET_StreamClass * -#endif -mime_make_attachment_stream (int /*format_out*/, void * /*closure*/, - URL_Struct *url, MWContext *context) -{ - NET_StreamClass *stream; - - TRACEMSG(("Setting up attachment stream. Have URL: %s\n", url->address)); - - stream = XP_NEW (NET_StreamClass); - if (stream == NULL) - return (NULL); - - XP_MEMSET (stream, 0, sizeof (NET_StreamClass)); - - stream->name = "attachment stream"; - stream->complete = mime_attachment_stream_complete; - stream->abort = mime_attachment_stream_abort; - stream->put_block = mime_attachment_stream_write; - stream->is_write_ready = mime_attachment_stream_write_ready; - stream->data_object = url->fe_data; - stream->window_id = context; - - TRACEMSG(("Returning stream from mime_make_attachment_stream")); - - return stream; -} - -HG55451 - -void -MSG_RegisterConverters (void) -{ - NET_RegisterContentTypeConverter ("*", FO_MAIL_TO, - NULL, mime_make_attachment_stream); - NET_RegisterContentTypeConverter ("*", FO_CACHE_AND_MAIL_TO, - NULL, mime_make_attachment_stream); - - /* FO_MAIL_MESSAGE_TO is treated the same as FO_MAIL_TO -- this format_out - just means that libmime has already gotten its hands on this document - (which happens to be of type message/rfc822 or message/news) and has - altered it in some way (for example, has decrypted it.) */ - NET_RegisterContentTypeConverter ("*", FO_MAIL_MESSAGE_TO, - NULL, mime_make_attachment_stream); - NET_RegisterContentTypeConverter ("*", FO_CACHE_AND_MAIL_MESSAGE_TO, - NULL, mime_make_attachment_stream); - - /* Attachment of mail and news messages happens slightly differently: - Rather than FO_MAIL_TO going in to mime_make_attachment_stream, it - goes into MIME_MessageConverter, which will then open a later stream - with FO_MAIL_MESSAGE_TO -- which is how it eventually gets into - mime_make_attachment_stream, after having gone through libmime. - */ - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_MAIL_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_MAIL_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_CACHE_AND_MAIL_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_CACHE_AND_MAIL_TO, - NULL, MIME_MessageConverter); - - /* for saving news messages */ - NET_RegisterContentTypeConverter ("*", FO_APPEND_TO_FOLDER, - NULL, msg_MakeAppendToFolderStream); - NET_RegisterContentTypeConverter ("*", FO_CACHE_AND_APPEND_TO_FOLDER, - NULL, msg_MakeAppendToFolderStream); - - /* Decoders from mimehtml.c for message/rfc822 */ - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_PRESENT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_PRINT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_EMBED, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_QUOTE_MESSAGE, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_QUOTE_HTML_MESSAGE, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_SAVE_AS, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_SAVE_AS_TEXT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_INTERNAL_IMAGE, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_FONT, - NULL, MIME_MessageConverter); - - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_CMDLINE_ATTACHMENTS, - NULL, MIME_ToDraftConverter); - - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_OPEN_DRAFT, - NULL, MIME_ToDraftConverter); -#ifdef XP_UNIX - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_SAVE_AS_POSTSCRIPT, - NULL, MIME_MessageConverter); -#endif /* XP_UNIX */ - - /* Decoders from mimehtml.c for message/news (same as message/rfc822) */ - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_PRESENT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_PRINT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_EMBED, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_QUOTE_MESSAGE, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_QUOTE_HTML_MESSAGE, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_SAVE_AS, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_SAVE_AS_TEXT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_INTERNAL_IMAGE, - NULL, MIME_MessageConverter); - - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_OPEN_DRAFT, - NULL, MIME_ToDraftConverter); -#ifdef XP_UNIX - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_SAVE_AS_POSTSCRIPT, - NULL, MIME_MessageConverter); -#endif /* XP_UNIX */ - - /* Decoders from mimehtml.c for text/richtext and text/enriched */ - NET_RegisterContentTypeConverter (TEXT_RICHTEXT, FO_PRESENT, - NULL, MIME_RichtextConverter); - NET_RegisterContentTypeConverter (TEXT_RICHTEXT, FO_PRINT, - NULL, MIME_RichtextConverter); - NET_RegisterContentTypeConverter (TEXT_ENRICHED, FO_PRESENT, - NULL, MIME_EnrichedTextConverter); - NET_RegisterContentTypeConverter (TEXT_ENRICHED, FO_PRINT, - NULL, MIME_EnrichedTextConverter); - - /* Decoders from mimevcrd.c for text/x-vcard and text/enriched */ - NET_RegisterContentTypeConverter (TEXT_VCARD, FO_PRESENT, - NULL, MIME_VCardConverter); - NET_RegisterContentTypeConverter (TEXT_VCARD, FO_PRINT, - NULL, MIME_VCardConverter); - - /* Decoders from mimejul.c for text/calendar */ -#ifdef MOZ_CALENDAR - NET_RegisterContentTypeConverter (TEXT_CALENDAR, FO_PRESENT, - NULL, MIME_JulianConverter); - NET_RegisterContentTypeConverter (TEXT_CALENDAR, FO_PRINT, - NULL, MIME_JulianConverter); -#endif - - -} - - -static XP_Bool -mime_7bit_data_p (const char *string, uint32 size) -{ - const unsigned char *s = (const unsigned char *) string; - const unsigned char *end = s + size; - if (s) - for (; s < end; s++) - if (*s > 0x7F) - return FALSE; - return TRUE; -} - - -static int -mime_sanity_check_fields (const char *from, - const char *reply_to, - const char *to, - const char *cc, - const char *bcc, - const char *fcc, - const char *newsgroups, - const char *followup_to, - const char * /*subject*/, - const char * /*references*/, - const char * /*organization*/, - const char * /*other_random_headers*/) -{ - if (from) while (XP_IS_SPACE (*from)) from++; - if (reply_to) while (XP_IS_SPACE (*reply_to)) reply_to++; - if (to) while (XP_IS_SPACE (*to)) to++; - if (cc) while (XP_IS_SPACE (*cc)) cc++; - if (bcc) while (XP_IS_SPACE (*bcc)) bcc++; - if (fcc) while (XP_IS_SPACE (*fcc)) fcc++; - if (newsgroups) while (XP_IS_SPACE (*newsgroups)) newsgroups++; - if (followup_to) while (XP_IS_SPACE (*followup_to)) followup_to++; - - /* #### check other_random_headers for newline conventions */ - - if (!from || !*from) - return MK_MIME_NO_SENDER; - else if ((!to || !*to) && - (!cc || !*cc) && - (!bcc || !*bcc) && - (!newsgroups || !*newsgroups)) - return MK_MIME_NO_RECIPIENTS; - else - return 0; -} - - -/* Strips whitespace, and expands newlines into newline-tab for use in - mail headers. Returns a new string or 0 (if it would have been empty.) - If addr_p is true, the addresses will be parsed and reemitted as - rfc822 mailboxes. - */ -static char * -mime_fix_header_1 (const char *string, - XP_Bool addr_p, XP_Bool news_p) -{ - char *new_string; - const char *in; - char *out; - int32 i, old_size, new_size; - if (!string || !*string) - return 0; - - if (addr_p) - { - char *n = MSG_ReformatRFC822Addresses (string); - if (n) return n; - } - - old_size = XP_STRLEN (string); - new_size = old_size; - for (i = 0; i < old_size; i++) - if (string[i] == CR || string[i] == LF) - new_size += 2; - - new_string = (char *) XP_ALLOC (new_size + 1); - if (! new_string) - return 0; - - in = string; - out = new_string; - - /* strip leading whitespace. */ - while (XP_IS_SPACE (*in)) - in++; - - /* replace CR, LF, or CRLF with CRLF-TAB. */ - while (*in) - { - if (*in == CR || *in == LF) - { - if (*in == CR && in[1] == LF) - in++; - in++; - *out++ = CR; - *out++ = LF; - *out++ = '\t'; - } - else if (news_p && *in == ',') - { - *out++ = *in++; - /* skip over all whitespace after a comma. */ - while (XP_IS_SPACE (*in)) - in++; - } - else - { - *out++ = *in++; - } - } - *out = 0; - - /* strip trailing whitespace. */ - while (out > in && XP_IS_SPACE (out[-1])) - *out-- = 0; - - /* If we ended up throwing it all away, use 0 instead of "". */ - if (!*new_string) - { - XP_FREE (new_string); - new_string = 0; - } - - return new_string; -} - - -static char * -mime_fix_header (const char *string) -{ - return mime_fix_header_1 (string, FALSE, FALSE); -} - -static char * -mime_fix_addr_header (const char *string) -{ - return mime_fix_header_1 (string, TRUE, FALSE); -} - -static char * -mime_fix_news_header (const char *string) -{ - return mime_fix_header_1 (string, FALSE, TRUE); -} - - -#if 0 -static XP_Bool -mime_type_conversion_possible (const char *from_type, const char *to_type) -{ - if (! to_type) - return TRUE; - - if (! from_type) - return FALSE; - - if (!strcasecomp (from_type, to_type)) - /* Don't run text/plain through the text->html converter. */ - return FALSE; - - if ((!strcasecomp (from_type, INTERNAL_PARSER) || - !strcasecomp (from_type, TEXT_HTML) || - !strcasecomp (from_type, TEXT_MDL)) && - !strcasecomp (to_type, TEXT_PLAIN)) - /* Don't run UNKNOWN_CONTENT_TYPE through the text->html converter - (treat it as text/plain already.) */ - return TRUE; - -#ifdef XP_UNIX - if ((!strcasecomp (from_type, INTERNAL_PARSER) || - !strcasecomp (from_type, TEXT_PLAIN) || - !strcasecomp (from_type, TEXT_HTML) || - !strcasecomp (from_type, TEXT_MDL) || - !strcasecomp (from_type, IMAGE_GIF) || - !strcasecomp (from_type, IMAGE_JPG) || - !strcasecomp (from_type, IMAGE_PJPG) || - !strcasecomp (from_type, IMAGE_XBM) || - !strcasecomp (from_type, IMAGE_XBM2) || - !strcasecomp (from_type, IMAGE_XBM3) || - /* always treat unknown content types as text/plain */ - !strcasecomp (from_type, UNKNOWN_CONTENT_TYPE) - ) && - !strcasecomp (to_type, APPLICATION_POSTSCRIPT)) - return TRUE; -#endif /* XP_UNIX */ - - return FALSE; -} -#endif - - -static XP_Bool -mime_type_requires_b64_p (const char *type) -{ - if (!type || !strcasecomp (type, UNKNOWN_CONTENT_TYPE)) - /* Unknown types don't necessarily require encoding. (Note that - "unknown" and "application/octet-stream" aren't the same.) */ - return FALSE; - - else if (!strncasecomp (type, "image/", 6) || - !strncasecomp (type, "audio/", 6) || - !strncasecomp (type, "video/", 6) || - !strncasecomp (type, "application/", 12)) - { - /* The following types are application/ or image/ types that are actually - known to contain textual data (meaning line-based, not binary, where - CRLF conversion is desired rather than disasterous.) So, if the type - is any of these, it does not *require* base64, and if we do need to - encode it for other reasons, we'll probably use quoted-printable. - But, if it's not one of these types, then we assume that any subtypes - of the non-"text/" types are binary data, where CRLF conversion would - corrupt it, so we use base64 right off the bat. - - The reason it's desirable to ship these as text instead of just using - base64 all the time is mainly to preserve the readability of them for - non-MIME users: if I mail a /bin/sh script to someone, it might not - need to be encoded at all, so we should leave it readable if we can. - - This list of types was derived from the comp.mail.mime FAQ, section - 10.2.2, "List of known unregistered MIME types" on 2-Feb-96. - */ - static const char *app_and_image_types_which_are_really_text[] = { - "application/mac-binhex40", /* APPLICATION_BINHEX */ - "application/pgp", /* APPLICATION_PGP */ - "application/x-pgp-message", /* APPLICATION_PGP2 */ - "application/postscript", /* APPLICATION_POSTSCRIPT */ - "application/x-uuencode", /* APPLICATION_UUENCODE */ - "application/x-uue", /* APPLICATION_UUENCODE2 */ - "application/uue", /* APPLICATION_UUENCODE4 */ - "application/uuencode", /* APPLICATION_UUENCODE3 */ - "application/sgml", - "application/x-csh", - "application/x-javascript", - "application/x-latex", - "application/x-macbinhex40", - "application/x-ns-proxy-autoconfig", - "application/x-www-form-urlencoded", - "application/x-perl", - "application/x-sh", - "application/x-shar", - "application/x-tcl", - "application/x-tex", - "application/x-texinfo", - "application/x-troff", - "application/x-troff-man", - "application/x-troff-me", - "application/x-troff-ms", - "application/x-troff-ms", - "application/x-wais-source", - "image/x-bitmap", - "image/x-pbm", - "image/x-pgm", - "image/x-portable-anymap", - "image/x-portable-bitmap", - "image/x-portable-graymap", - "image/x-portable-pixmap", /* IMAGE_PPM */ - "image/x-ppm", - "image/x-xbitmap", /* IMAGE_XBM */ - "image/x-xbm", /* IMAGE_XBM2 */ - "image/xbm", /* IMAGE_XBM3 */ - "image/x-xpixmap", - "image/x-xpm", - 0 }; - const char **s; - for (s = app_and_image_types_which_are_really_text; *s; s++) - if (!strcasecomp (type, *s)) - return FALSE; - - /* All others must be assumed to be binary formats, and need Base64. */ - return TRUE; - } - - else - return FALSE; -} - -#ifdef XP_OS2 -XP_BEGIN_PROTOS -extern int mime_encoder_output_fn (const char *buf, int32 size, void *closure); -XP_END_PROTOS -#else -static int mime_encoder_output_fn (const char *buf, int32 size, void *closure); -#endif - -/* Given a content-type and some info about the contents of the document, - decide what encoding it should have. - */ -int -MSG_DeliverMimeAttachment::PickEncoding (int16 mail_csid) -{ - // use the boolean so we only have to test for uuencode vs base64 once - XP_Bool needsB64 = FALSE; - - if (m_already_encoded_p) - goto DONE; - - if (mime_type_requires_b64_p (m_type)) - { - /* If the content-type is "image/" or something else known to be binary, - always use base64 (so that we don't get confused by newline - conversions.) - */ - needsB64 = TRUE; - } - else - { - /* Otherwise, we need to pick an encoding based on the contents of - the document. - */ - - XP_Bool encode_p; - - if (m_max_column > 900) - encode_p = TRUE; - else if (mime_use_quoted_printable_p && m_unprintable_count) - encode_p = TRUE; - - else if (m_null_count) /* If there are nulls, we must always encode, - because sendmail will blow up. */ - encode_p = TRUE; -#if 0 - else if (m_ctl_count) /* Should we encode if random other control - characters are present? Probably... */ - encode_p = TRUE; -#endif - else - encode_p = FALSE; - - /* MIME requires a special case that these types never be encoded. - */ - if (!strncasecomp (m_type, "message", 7) || - !strncasecomp (m_type, "multipart", 9)) - { - encode_p = FALSE; - if (m_desired_type && !strcasecomp (m_desired_type, TEXT_PLAIN)) - { - XP_FREE (m_desired_type); - m_desired_type = 0; - } - } - /* If the Mail csid is CS_JIS we force it to use Base64 for attachments (bug#104255). - Use 7 bit for other STATFUL ( e.g. CS_2022_KR) csid. */ - if ((mail_csid == CS_JIS) && - (strcasecomp(m_type, TEXT_HTML) == 0)) - needsB64 = TRUE; - else if((mail_csid & STATEFUL) && - ((strcasecomp(m_type, TEXT_HTML) == 0) || - (strcasecomp(m_type, TEXT_MDL) == 0) || - (strcasecomp(m_type, TEXT_PLAIN) == 0) || - (strcasecomp(m_type, TEXT_RICHTEXT) == 0) || - (strcasecomp(m_type, TEXT_ENRICHED) == 0) || - (strcasecomp(m_type, TEXT_VCARD) == 0) || - (strcasecomp(m_type, TEXT_CSS) == 0) || - (strcasecomp(m_type, TEXT_JSSS) == 0) || - (strcasecomp(m_type, MESSAGE_RFC822) == 0) || - (strcasecomp(m_type, MESSAGE_NEWS) == 0))) - { - needsB64 = TRUE; - } - else if (encode_p && - m_size > 500 && - m_unprintable_count > (m_size / 10)) - /* If the document contains more than 10% unprintable characters, - then that seems like a good candidate for base64 instead of - quoted-printable. - */ - needsB64 = TRUE; - else if (encode_p) - StrAllocCopy (m_encoding, ENCODING_QUOTED_PRINTABLE); - else if (m_highbit_count > 0) - StrAllocCopy (m_encoding, ENCODING_8BIT); - else - StrAllocCopy (m_encoding, ENCODING_7BIT); - } - - if (needsB64) - { - /* - ### mwelch We might have to uuencode instead of - base64 the binary data. - */ - if (UseUUEncode_p()) - StrAllocCopy (m_encoding, ENCODING_UUENCODE); - else - StrAllocCopy (m_encoding, ENCODING_BASE64); - } - - /* Now that we've picked an encoding, initialize the filter. - */ - XP_ASSERT(!m_encoder_data); - if (!strcasecomp(m_encoding, ENCODING_BASE64)) - { - m_encoder_data = MimeB64EncoderInit(mime_encoder_output_fn, - m_mime_delivery_state); - if (!m_encoder_data) return MK_OUT_OF_MEMORY; - } - else if (!strcasecomp(m_encoding, ENCODING_UUENCODE)) - { - char *tailName = NULL; - - if (m_url_string) - { - tailName = XP_STRRCHR(m_url_string, '/'); - if (tailName) - tailName = XP_STRDUP(tailName+1); - } - - if (m_url && !tailName) - { - tailName = XP_STRRCHR(m_url->address, '/'); - if (tailName) - tailName = XP_STRDUP(tailName+1); - } - - m_encoder_data = MimeUUEncoderInit(tailName ? tailName : "", - mime_encoder_output_fn, - m_mime_delivery_state); - XP_FREEIF(tailName); - if (!m_encoder_data) return MK_OUT_OF_MEMORY; - } - else if (!strcasecomp(m_encoding, ENCODING_QUOTED_PRINTABLE)) - { - m_encoder_data = MimeQPEncoderInit(mime_encoder_output_fn, - m_mime_delivery_state); - if (!m_encoder_data) return MK_OUT_OF_MEMORY; - } - else - { - m_encoder_data = 0; - } - - - /* Do some cleanup for documents with unknown content type. - - There are two issues: how they look to MIME users, and how they look to - non-MIME users. - - If the user attaches a "README" file, which has unknown type because it - has no extension, we still need to send it with no encoding, so that it - is readable to non-MIME users. - - But if the user attaches some random binary file, then base64 encoding - will have been chosen for it (above), and in this case, it won't be - immediately readable by non-MIME users. However, if we type it as - text/plain instead of application/octet-stream, it will show up inline - in a MIME viewer, which will probably be ugly, and may possibly have - bad charset things happen as well. - - So, the heuristic we use is, if the type is unknown, then the type is - set to application/octet-stream for data which needs base64 (binary data) - and is set to text/plain for data which didn't need base64 (unencoded or - lightly encoded data.) - */ - DONE: - if (!m_type || !*m_type || !strcasecomp(m_type, UNKNOWN_CONTENT_TYPE)) - { - if (m_already_encoded_p) - StrAllocCopy (m_type, APPLICATION_OCTET_STREAM); - else if (m_encoding && - (!strcasecomp(m_encoding, ENCODING_BASE64) || - !strcasecomp(m_encoding, ENCODING_UUENCODE))) - StrAllocCopy (m_type, APPLICATION_OCTET_STREAM); - else - StrAllocCopy (m_type, TEXT_PLAIN); - } - return 0; -} - - -/* Some types should have a "charset=" parameter, and some shouldn't. - This is what decides. */ -XP_Bool -mime_type_needs_charset (const char *type) -{ - /* Only text types should have charset. */ - if (!type || !*type) - return FALSE; - else if (!strncasecomp (type, "text", 4)) - return TRUE; - else - return FALSE; -} - - -char* -mime_get_stream_write_buffer(void) -{ - if (!mime_mailto_stream_write_buffer) { - mime_mailto_stream_write_buffer = (char *) XP_ALLOC(MIME_BUFFER_SIZE); - } - return mime_mailto_stream_write_buffer; -} - -int MSG_SendMimeDeliveryState::InitImapOfflineDB(uint32 flag) -{ - int status = 0; - char *folderName = msg_MagicFolderName(m_pane->GetMaster()->GetPrefs(), flag, &status); - - if (status < 0) - return status; - else if (!folderName) - return MK_OUT_OF_MEMORY; - else if (NET_URL_Type(folderName) == IMAP_TYPE_URL) - { - MsgERR err = eSUCCESS; - char *dummyEnvelope = msg_GetDummyEnvelope(); - XP_ASSERT(!m_imapOutgoingParser && !m_imapLocalMailDB); - MailDB::Open(m_msg_file_name, TRUE, &m_imapLocalMailDB); - if (err != eSUCCESS) - { - if (m_imapLocalMailDB) - m_imapLocalMailDB->Close(); - m_imapLocalMailDB = NULL; - status = MK_OUT_OF_MEMORY; - goto done; - } - m_imapOutgoingParser = new ParseOutgoingMessage; - if (!m_imapOutgoingParser) - { - m_imapLocalMailDB->Close(); - m_imapLocalMailDB = NULL; - status = MK_OUT_OF_MEMORY; - goto done; - } - m_imapOutgoingParser->Clear(); - m_imapOutgoingParser->SetOutFile(m_msg_file); - m_imapOutgoingParser->SetMailDB(m_imapLocalMailDB); - m_imapOutgoingParser->SetWriteToOutFile(FALSE); - m_imapOutgoingParser->Init(0); - m_imapOutgoingParser->StartNewEnvelope(dummyEnvelope, - XP_STRLEN(dummyEnvelope)); - } - -done: - XP_FREEIF(folderName); - return status; -} -#define PUSH_STRING(S) \ - do { XP_STRCPY (buffer_tail, S); buffer_tail += XP_STRLEN (S); } while(0) -#define PUSH_NEWLINE() \ - do { *buffer_tail++ = CR; *buffer_tail++ = LF; *buffer_tail = '\0'; } while(0) - - -/* All of the desired attachments have been written to individual temp files, - and we know what's in them. Now we need to make a final temp file of the - actual mail message, containing all of the other files after having been - encoded as appropriate. - */ -int MSG_SendMimeDeliveryState::GatherMimeAttachments () -{ - int32 status, i; - char *headers = 0; - char *separator = 0; - XP_File in_file = 0; - XP_Bool multipart_p = FALSE; - XP_Bool plaintext_is_mainbody_p = FALSE; // only using text converted from HTML? - char *buffer = 0; - char *buffer_tail = 0; - char* error_msg = 0; - int16 win_csid = INTL_DefaultWinCharSetID(GetContext()); - XP_Bool tonews = (m_fields && m_fields->GetNewsgroups() && *m_fields->GetNewsgroups()) ; - // to news is true if we have a m_field and we have a Newsgroup and it is not empty - INTL_MessageSendToNews(tonews); // hack to make Korean Mail/News work correctly - // Look at libi18n/doc_ccc.c for details - // temp solution for bug 30725 - int16 mail_csid = tonews ? - INTL_DefaultNewsCharSetID(win_csid) : - INTL_DefaultMailCharSetID(win_csid); - - MSG_SendPart* toppart = NULL; // The very top most container of the message - // that we are going to send. - MSG_SendPart* mainbody = NULL;// The leaf node that contains the text of the - // message we're going to contain. - MSG_SendPart* maincontainer = NULL;// The direct child of toppart that will - // contain the mainbody. If mainbody is - // the same as toppart, then this is - // also the same. But if mainbody is - // to end up somewhere inside of a - // multipart/alternative or a - // multipart/related, then this is that - // multipart object. - - MSG_SendPart* plainpart = NULL; // If we converted HTML into plaintext, - // the message or child containing the plaintext - // goes here. (Need to use this to determine - // what headers to append/set to the main - // message body.) - char *hdrs = 0; - XP_Bool maincontainerISrelatedpart = FALSE; - - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(GetContext()); - - - status = m_status; - if (status < 0) - goto FAIL; - - if (m_attachments_only_p) - { - /* If we get here, we shouldn't have the "generating a message" cb. */ - XP_ASSERT(!m_dont_deliver_p && - !m_message_delivery_done_callback); - if (m_attachments_done_callback) - { - struct MSG_AttachedFile *attachments; - - XP_ASSERT(m_attachment_count > 0); - if (m_attachment_count <= 0) - { - m_attachments_done_callback (GetContext(), - m_fe_data, 0, 0, - 0); - m_attachments_done_callback = 0; - Clear(); - goto FAIL; - } - - attachments = (struct MSG_AttachedFile *) - XP_ALLOC((m_attachment_count + 1) * sizeof(*attachments)); - - if (!attachments) goto FAILMEM; - XP_MEMSET(attachments, 0, ((m_attachment_count + 1) - * sizeof(*attachments))); - for (i = 0; i < m_attachment_count; i++) - { - MSG_DeliverMimeAttachment *ma = &m_attachments[i]; - -#undef SNARF -#define SNARF(x,y) do { if((y) && *(y) && !(x)) { ((x) = (y)); ((y) = 0); }} \ - while(0) - /* Rather than copying the strings and dealing with allocation - failures, we'll just "move" them into the other struct (this - should be ok since this file uses FREEIF when discarding - the mime_attachment objects.) */ - SNARF(attachments[i].orig_url, ma->m_url_string); - SNARF(attachments[i].file_name, ma->m_file_name); - SNARF(attachments[i].type, ma->m_type); - SNARF(attachments[i].encoding, ma->m_encoding); - SNARF(attachments[i].description, ma->m_description); - SNARF(attachments[i].x_mac_type, ma->m_x_mac_type); - SNARF(attachments[i].x_mac_creator, ma->m_x_mac_creator); -#undef SNARF - HG96484 - attachments[i].size = ma->m_size; - attachments[i].unprintable_count = ma->m_unprintable_count; - attachments[i].highbit_count = ma->m_highbit_count; - attachments[i].ctl_count = ma->m_ctl_count; - attachments[i].null_count = ma->m_null_count; - attachments[i].max_line_length = ma->m_max_column; - - /* Doesn't really matter, but let's not lie about encoding - in case it does someday. */ - if (attachments[i].highbit_count > 0 && - attachments[i].encoding && - !strcasecomp(attachments[i].encoding, ENCODING_7BIT)) - StrAllocCopy (attachments[i].encoding, ENCODING_8BIT); - } - - /* The callback is expected to free the attachments list and all - the strings in it. It's also expected to delete the files! - */ - m_attachments_done_callback (GetContext(), - m_fe_data, 0, 0, - attachments); - m_attachments_done_callback = 0; - Clear(); - } - goto FAIL; - } - - - /* If we get here, we're generating a message, so there shouldn't be an - attachments callback. */ - XP_ASSERT(!m_attachments_done_callback); - - - if (!m_attachment1_type) { - m_attachment1_type = XP_STRDUP(TEXT_PLAIN); - if (!m_attachment1_type) goto FAILMEM; - } - - // If we have a text/html main part, and we need a plaintext attachment, then - // we'll do so now. This is an asynchronous thing, so we'll kick it off and - // count on getting back here when it finishes. - - if (m_plaintext == NULL && - (m_fields->GetForcePlainText() || - m_fields->GetUseMultipartAlternative()) && - m_attachment1_body && XP_STRCMP(m_attachment1_type, TEXT_HTML) == 0) { - m_html_filename = WH_TempName (xpFileToPost, "nsmail"); - if (!m_html_filename) goto FAILMEM; - in_file = XP_FileOpen(m_html_filename, xpFileToPost, XP_FILE_WRITE_BIN); - if (!in_file) { - status = MK_UNABLE_TO_OPEN_TMP_FILE; - goto FAIL; - } - status = XP_FileWrite(m_attachment1_body, m_attachment1_body_length, - in_file); - if (status < int(m_attachment1_body_length)) { - if (status >= 0) { - status = MK_MIME_ERROR_WRITING_FILE; - } - goto FAIL; - } - status = XP_FileClose(in_file); - in_file = NULL; - if (status < 0) goto FAIL; - - m_plaintext = new MSG_DeliverMimeAttachment; - if (!m_plaintext) goto FAILMEM; - m_plaintext->m_mime_delivery_state = this; - char* temp = WH_FileName(m_html_filename, xpFileToPost); - m_plaintext->m_url_string = XP_PlatformFileToURL(temp); - if (temp) XP_FREE(temp); - if (!m_plaintext->m_url_string) goto FAILMEM; - m_plaintext->m_url = - NET_CreateURLStruct (m_plaintext->m_url_string, NET_DONT_RELOAD); - if (!m_plaintext->m_url) goto FAILMEM; - StrAllocCopy(m_plaintext->m_url->content_type, TEXT_HTML); - StrAllocCopy(m_plaintext->m_type, TEXT_HTML); - StrAllocCopy(m_plaintext->m_desired_type, TEXT_PLAIN); - m_attachment_pending_count++; - status = m_plaintext->SnarfAttachment(); - if (status < 0) goto FAIL; - if (m_attachment_pending_count > 0) return 0; - } - - - /* hack to avoid having to allocate memory... */ - buffer = mime_get_stream_write_buffer(); - if (! buffer) goto FAILMEM; - - buffer_tail = buffer; - - XP_ASSERT (m_attachment_pending_count == 0); - - FE_Progress(GetContext(), XP_GetString(MK_MSG_ASSEMBLING_MSG)); - - /* First, open the message file. - */ - m_msg_file_name = WH_TempName (xpFileToPost, "nsmail"); - if (! m_msg_file_name) goto FAILMEM; - m_msg_file = XP_FileOpen (m_msg_file_name, xpFileToPost, - XP_FILE_WRITE_BIN); - if (! m_msg_file) - { - status = MK_UNABLE_TO_OPEN_TMP_FILE; - error_msg = PR_smprintf(XP_GetString(status), m_msg_file_name); - if (!error_msg) status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - if (NET_IsOffline() && (m_deliver_mode == MSG_SaveAsDraft || - m_deliver_mode == MSG_SaveAsTemplate)) - { - status = InitImapOfflineDB( m_deliver_mode == MSG_SaveAsDraft ? - MSG_FOLDER_FLAG_DRAFTS : - MSG_FOLDER_FLAG_TEMPLATES ); - if (status < 0) - { - StrAllocCopy (error_msg, XP_GetString(status)); - goto FAIL; - } - } - -#ifdef GENERATE_MESSAGE_ID - if (m_fields->GetMessageId() == NULL) { - m_fields->SetMessageId(msg_generate_message_id ()); - } -#endif /* GENERATE_MESSAGE_ID */ - - mainbody = new MSG_SendPart(this, mail_csid); - if (!mainbody) goto FAILMEM; - - mainbody->SetMainPart(TRUE); - mainbody->SetType(m_attachment1_type ? m_attachment1_type : TEXT_PLAIN); - - XP_ASSERT(mainbody->GetBuffer() == NULL); - status = mainbody->SetBuffer(m_attachment1_body ? m_attachment1_body : " "); - if (status < 0) goto FAIL; - - /* ### mwelch - Determine the encoding of the main message body before we free it. - The proper way to do this should be to test whatever text is in mainbody - just before writing it out, but that will require a fix that is less safe - and takes more memory. */ - if ((mail_csid & STATEFUL) || /* CS_JIS or CS_2022_KR */ - mime_7bit_data_p (m_attachment1_body, - m_attachment1_body_length)) - StrAllocCopy (m_attachment1_encoding, ENCODING_7BIT); - else if (mime_use_quoted_printable_p) - StrAllocCopy (m_attachment1_encoding, ENCODING_QUOTED_PRINTABLE); - else - StrAllocCopy (m_attachment1_encoding, ENCODING_8BIT); - - FREEIF (m_attachment1_body); - - maincontainer = mainbody; - - // If we were given a pre-saved collection of HTML and contained images, - // then we want mainbody to point to the HTML lump therein. - if (m_related_part) - { - // If m_related_part is of type text/html, set both maincontainer - // and mainbody to point to it. If m_related_part is multipart/related, - // however, set mainbody to be the first child within m_related_part. - - // To plug a memory leak, delete the original maincontainer/mainbody. - // - // NOTE: We DO NOT want to do this to the HTML or multipart/related - // MSG_SendParts because they are deleted at the end of message - // delivery by the TapeFileSystem object - // (MSG_MimeRelatedSaver / mhtmlstm.cpp). - delete mainbody; - - // No matter what, maincontainer points to the outermost related part. - maincontainer = m_related_part; - maincontainerISrelatedpart = TRUE; - - const char *relPartType = m_related_part->GetType(); - if (relPartType && !strcmp(relPartType, MULTIPART_RELATED)) - // outer shell is m/related, - // mainbody wants to be the HTML lump within - mainbody = m_related_part->GetChild(0); - else - // outer shell is text/html, - // so mainbody wants to be the same lump - mainbody = maincontainer; - - mainbody->SetMainPart(TRUE); - } - - if (m_plaintext) { - // OK. We have a plaintext version of the main body that we want to - // send instead of or with the text/html. Put it in. - - plainpart = new MSG_SendPart(this, mail_csid); - if (!plainpart) goto FAILMEM; - status = plainpart->SetType(TEXT_PLAIN); - if (status < 0) goto FAIL; - status = plainpart->SetFile(m_plaintext->m_file_name, xpFileToPost); - if (status < 0) goto FAIL; - m_plaintext->AnalyzeSnarfedFile(); // look for 8 bit text, long lines, etc. - m_plaintext->PickEncoding(mail_csid); - hdrs = mime_generate_attachment_headers(m_plaintext->m_type, - m_plaintext->m_encoding, - m_plaintext->m_description, - m_plaintext->m_x_mac_type, - m_plaintext->m_x_mac_creator, - m_plaintext->m_real_name, 0, - m_digest_p, - m_plaintext, - mail_csid); - if (!hdrs) goto FAILMEM; - status = plainpart->SetOtherHeaders(hdrs); - XP_FREE(hdrs); - hdrs = NULL; - if (status < 0) goto FAIL; - - - - if (m_fields->GetUseMultipartAlternative()) { - MSG_SendPart* htmlpart = maincontainer; - maincontainer = new MSG_SendPart(this); - if (!maincontainer) goto FAILMEM; - status = maincontainer->SetType(MULTIPART_ALTERNATIVE); - if (status < 0) goto FAIL; - status = maincontainer->AddChild(plainpart); - if (status < 0) goto FAIL; - status = maincontainer->AddChild(htmlpart); - if (status < 0) goto FAIL; - - // Create the encoder for the plaintext part here, - // because we aren't the main part (attachment1). - // (This, along with the rest of the routine, should really - // be restructured so that no special treatment is given to - // the main body text that came in. Best to put attachment1_text - // etc. into a MSG_SendPart, then reshuffle the parts. Sigh.) - if (!XP_STRCASECMP(m_plaintext->m_encoding, ENCODING_QUOTED_PRINTABLE)) - { - MimeEncoderData *plaintext_enc = MimeQPEncoderInit(mime_encoder_output_fn, this); - if (!plaintext_enc) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - plainpart->SetEncoderData(plaintext_enc); - } - } else { - delete maincontainer; //### mwelch - does this cause a crash?! - if (maincontainerISrelatedpart) - m_related_part = NULL; - maincontainer = plainpart; - mainbody = maincontainer; - FREEIF(m_attachment1_type); - m_attachment1_type = XP_STRDUP(TEXT_PLAIN); - if (!m_attachment1_type) goto FAILMEM; - - /* Override attachment1_encoding here. */ - FREEIF(m_attachment1_encoding); - StrAllocCopy(m_attachment1_encoding, m_plaintext->m_encoding); - - plaintext_is_mainbody_p = TRUE; // converted plaintext is mainbody - } - } - - // ###tw This used to be this more complicated thing, but for now, if it we - // have any attachments, we generate multipart. - //multipart_p = (m_attachment_count > 1 || - // (m_attachment_count == 1 && - // m_attachment1_body_length > 0)); - multipart_p = (m_attachment_count > 0); - - if (multipart_p) { - toppart = new MSG_SendPart(this); - if (!toppart) goto FAILMEM; - status = toppart->SetType(m_digest_p ? MULTIPART_DIGEST : MULTIPART_MIXED); - if (status < 0) goto FAIL; - status = toppart->AddChild(maincontainer); - if (status < 0) goto FAIL; - HG36459 - { - status = toppart->SetBuffer(XP_GetString (MK_MIME_MULTIPART_BLURB)); - if (status < 0) goto FAIL; - } - } else { - toppart = maincontainer; - } - - - /* Write out the message headers. - */ - headers = mime_generate_headers (m_fields, - INTL_GetCSIWinCSID(c), - m_deliver_mode); - if (!headers) goto FAILMEM; - - // ### mwelch - // If we converted HTML into plaintext, the plaintext part (plainpart) - // already has its content-type and content-transfer-encoding - // ("other") headers set. - // - // In the specific case where such a plaintext part is the - // top level message part (iff an HTML message is being sent - // as text only and no other attachments exist) we want to - // preserve the original plainpart headers, since they - // contain accurate transfer encoding and Mac type/creator - // information. - // - // So, in the above case we append the main message headers, - // otherwise we overwrite whatever headers may have existed. - // - /* reordering of headers will happen in MSG_SendPart::Write */ - if ((plainpart) && (plainpart == toppart)) - status = toppart->AppendOtherHeaders(headers); - else - status = toppart->SetOtherHeaders(headers); - XP_FREE(headers); - headers = NULL; - if (status < 0) goto FAIL; - - - /* Set up the first part (user-typed.) For now, do it even if the first - * part is empty; we need to add things to skip it if this part is empty. - * ###tw - */ - - - /* Set up encoder for the first part (message body.) - */ - XP_ASSERT(!m_attachment1_encoder_data); - if (!strcasecomp(m_attachment1_encoding, ENCODING_BASE64)) - { - m_attachment1_encoder_data = - MimeB64EncoderInit(mime_encoder_output_fn, this); - if (!m_attachment1_encoder_data) goto FAILMEM; - } - else if (!strcasecomp(m_attachment1_encoding, - ENCODING_QUOTED_PRINTABLE)) - { - m_attachment1_encoder_data = - MimeQPEncoderInit(mime_encoder_output_fn, this); - if (!m_attachment1_encoder_data) goto FAILMEM; - } - - // ### mwelch - // If we converted HTML into plaintext, the plaintext part - // already has its type/encoding headers set. So, in the specific - // case where such a plaintext part is the main message body - // (iff an HTML message is being sent as text only) - // we want to avoid generating type/encoding/digest headers; - // in all other cases, generate such headers here. - // - // We really want to set up headers as a dictionary of some sort - // so that we need not worry about duplicate header lines. - // - if ((!plainpart) || (plainpart != mainbody)) - { - hdrs = mime_generate_attachment_headers (m_attachment1_type, - m_attachment1_encoding, - 0, 0, 0, 0, 0, - m_digest_p, - NULL, /* no "ma"! */ - mail_csid); - if (!hdrs) goto FAILMEM; - status = mainbody->AppendOtherHeaders(hdrs); - if (status < 0) goto FAIL; - } - - FREEIF(hdrs); - - status = mainbody->SetEncoderData(m_attachment1_encoder_data); - m_attachment1_encoder_data = NULL; - if (status < 0) goto FAIL; - - - /* Set up the subsequent parts. - */ - if (m_attachment_count > 0) - { - char *buffer; - - /* Hack to avoid having to allocate memory... */ - if (! mime_mailto_stream_read_buffer) - mime_mailto_stream_read_buffer = (char *) XP_ALLOC (MIME_BUFFER_SIZE); - buffer = mime_mailto_stream_read_buffer; - if (! buffer) goto FAILMEM; - buffer_tail = buffer; - - for (i = 0; i < m_attachment_count; i++) - { - MSG_DeliverMimeAttachment *ma = &m_attachments[i]; - char *hdrs = 0; - - MSG_SendPart* part = NULL; - - // If at this point we *still* don't have an content-type, then - // we're never going to get one. - if (ma->m_type == NULL) { - ma->m_type = XP_STRDUP(UNKNOWN_CONTENT_TYPE); - if (ma->m_type == NULL) goto FAILMEM; - } - - ma->PickEncoding (mail_csid); - - part = new MSG_SendPart(this); - if (!part) goto FAILMEM; - status = toppart->AddChild(part); - if (status < 0) goto FAIL; - status = part->SetType(ma->m_type); - if (status < 0) goto FAIL; - - hdrs = mime_generate_attachment_headers (ma->m_type, ma->m_encoding, - ma->m_description, - ma->m_x_mac_type, - ma->m_x_mac_creator, - ma->m_real_name, - ma->m_url_string, - m_digest_p, - ma, - mail_csid); - if (!hdrs) goto FAILMEM; - - status = part->SetOtherHeaders(hdrs); - FREEIF(hdrs); - if (status < 0) goto FAIL; - status = part->SetFile(ma->m_file_name, xpFileToPost); - if (status < 0) goto FAIL; - if (ma->m_encoder_data) { - status = part->SetEncoderData(ma->m_encoder_data); - if (status < 0) goto FAIL; - ma->m_encoder_data = NULL; - } - - ma->m_current_column = 0; - - if (ma->m_type && - (!strcasecomp (ma->m_type, MESSAGE_RFC822) || - !strcasecomp (ma->m_type, MESSAGE_NEWS))) { - status = part->SetStripSensitiveHeaders(TRUE); - if (status < 0) goto FAIL; - } - - } - } - - // OK, now actually write the structure we've carefully built up. - status = toppart->Write(); - if (status < 0) goto FAIL; - - HG75442 - - if (m_msg_file) - XP_FileClose (m_msg_file); - m_msg_file = 0; - - if (m_imapOutgoingParser) - { - m_imapOutgoingParser->FinishHeader(); - XP_ASSERT(m_imapOutgoingParser->m_newMsgHdr); - m_imapOutgoingParser->m_newMsgHdr->OrFlags(kIsRead); - m_imapOutgoingParser->m_newMsgHdr->SetMessageSize - (m_imapOutgoingParser->m_bytes_written); - m_imapOutgoingParser->m_newMsgHdr->SetMessageKey(0); - m_imapLocalMailDB->AddHdrToDB(m_imapOutgoingParser->m_newMsgHdr, - NULL, TRUE); - } - - FE_Progress(GetContext(), XP_GetString(MK_MSG_ASSEMB_DONE_MSG)); - - if (m_dont_deliver_p && - m_message_delivery_done_callback) - { - m_message_delivery_done_callback (GetContext(), - m_fe_data, 0, - XP_STRDUP (m_msg_file_name)); - /* Need to ditch the file name here so that we don't delete the - file, since in this case, the FE needs the file itself. */ - FREEIF (m_msg_file_name); - m_msg_file_name = 0; - m_message_delivery_done_callback = 0; - Clear(); - } - else - { - DeliverMessage(); - } - - // Get rid of all the encoder data and temporary files. - for (i = 0; i < m_attachment_count; i++) { - MSG_DeliverMimeAttachment *ma = &m_attachments[i]; - if (ma->m_encoder_data) { - status = MimeEncoderDestroy(ma->m_encoder_data, FALSE); - ma->m_encoder_data = 0; - if (status < 0) goto FAIL; - } - - if (!m_pre_snarfed_attachments_p) { - if (ma->m_file) { - XP_FileClose(ma->m_file); - ma->m_file = 0; - } - XP_FileRemove(ma->m_file_name, xpFileToPost); - } - XP_FREE (ma->m_file_name); - ma->m_file_name = 0; - } - - - - FAIL: - if (toppart) - delete toppart; - toppart = NULL; - mainbody = NULL; - maincontainer = NULL; - - /* Close off encoder for the first part (message body.) */ - if (m_attachment1_encoder_data) - { - status = MimeEncoderDestroy(m_attachment1_encoder_data, FALSE); - m_attachment1_encoder_data = 0; - if (status < 0) goto FAIL; - } - if (headers) XP_FREE (headers); - if (separator) XP_FREE (separator); - if (in_file) { - XP_FileClose (in_file); - in_file = NULL; - } - - HG59731 - - if (status < 0) - { - m_status = status; - Fail (status, error_msg); - } - /* If status is >= 0, then the the next event coming up is posting to - a "mailto:" or "news:" URL; the message_delivery_done_callback will - be called from the exit routine of that URL. */ - - - if (m_plaintext) { - if (m_plaintext->m_file) - XP_FileClose(m_plaintext->m_file); - XP_FileRemove(m_plaintext->m_file_name, xpFileToPost); - XP_FREE(m_plaintext->m_file_name); - m_plaintext->m_file_name = NULL; - delete m_plaintext; - m_plaintext = NULL; - } - - if (m_html_filename) { - XP_FileRemove(m_html_filename, xpFileToPost); - XP_FREE(m_html_filename); - m_html_filename = NULL; - } - - return status; - -FAILMEM: - status = MK_OUT_OF_MEMORY; - goto FAIL; -} - - -#if defined(XP_MAC) && defined(DEBUG) -// Compiler runs out of registers for the debug build. -#pragma global_optimizer on -#pragma optimization_level 4 -#endif // XP_MAC && DEBUG - -static void FROB (const char *src, char *dest) -{ - if (src && *src && dest) - { - if (*dest) XP_STRCAT(dest, ","); - XP_STRCAT(dest, src); - } -} - -HG53784 - -#if defined(XP_MAC) && defined(DEBUG) -#pragma global_optimizer reset -#endif // XP_MAC && DEBUG - - -int -mime_write_message_body (MSG_SendMimeDeliveryState *state, - char *buf, int32 size) -{ - HG56898 - { - if (int32(XP_FileWrite (buf, size, state->m_msg_file)) < size) - { - return MK_MIME_ERROR_WRITING_FILE; - } - else - { - if (state->m_imapOutgoingParser) - { - state->m_imapOutgoingParser->ParseFolderLine(buf, size); - state->m_imapOutgoingParser->m_bytes_written += size; - } - return 0; - } - } -} - - -#ifdef XP_OS2 -extern int -#else -static int -#endif -mime_encoder_output_fn (const char *buf, int32 size, void *closure) -{ - MSG_SendMimeDeliveryState *state = (MSG_SendMimeDeliveryState *) closure; - return mime_write_message_body (state, (char *) buf, size); -} - - -char * -msg_generate_message_id (void) -{ - time_t now = XP_TIME(); - uint32 salt = 0; - const char *host = 0; - const char *from = FE_UsersMailAddress (); - - RNG_GenerateGlobalRandomBytes((void *) &salt, sizeof(salt)); - - if (from) - { - host = XP_STRCHR (from, '@'); - if (host) - { - const char *s; - for (s = ++host; *s; s++) - if (!XP_IS_ALPHA(*s) && !XP_IS_DIGIT(*s) && - *s != '-' && *s != '_' && *s != '.') - { - host = 0; - break; - } - } - } - - if (! host) - /* If we couldn't find a valid host name to use, we can't generate a - valid message ID, so bail, and let NNTP and SMTP generate them. */ - return 0; - - return PR_smprintf("<%lX.%lX@%s>", - (unsigned long) now, (unsigned long) salt, host); -} - -static char * -mime_generate_headers (MSG_CompositionFields *fields, - int csid, - MSG_Deliver_Mode deliver_mode) -{ - int size = 0; - char *buffer = 0, *buffer_tail = 0; - XP_Bool isDraft = deliver_mode == MSG_SaveAsDraft || - deliver_mode == MSG_SaveAsTemplate || - deliver_mode == MSG_QueueForLater; - - XP_ASSERT (fields); - if (!fields) - return NULL; - - /* Multiply by 3 here to make enough room for MimePartII conversion */ - if (fields->GetFrom()) size += 3 * XP_STRLEN (fields->GetFrom()); - if (fields->GetReplyTo()) size += 3 * XP_STRLEN (fields->GetReplyTo()); - if (fields->GetTo()) size += 3 * XP_STRLEN (fields->GetTo()); - if (fields->GetCc()) size += 3 * XP_STRLEN (fields->GetCc()); - if (fields->GetNewsgroups()) size += 3 * XP_STRLEN (fields->GetNewsgroups()); - if (fields->GetFollowupTo()) size += 3 * XP_STRLEN (fields->GetFollowupTo()); - if (fields->GetSubject()) size += 3 * XP_STRLEN (fields->GetSubject()); - if (fields->GetReferences()) size += 3 * XP_STRLEN (fields->GetReferences()); - if (fields->GetOrganization()) size += 3 * XP_STRLEN (fields->GetOrganization()); - if (fields->GetOtherRandomHeaders()) size += 3 * XP_STRLEN (fields->GetOtherRandomHeaders()); - if (fields->GetPriority()) size += 3 * XP_STRLEN (fields->GetPriority()); -#ifdef GENERATE_MESSAGE_ID - if (fields->GetMessageId()) size += XP_STRLEN (fields->GetMessageId()); -#endif /* GENERATE_MESSAGE_ID */ - - /* Add a bunch of space for the static parts of the headers. */ - /* size += 2048; */ - size += 2560; - - buffer = (char *) XP_ALLOC (size); - if (!buffer) - return 0; /* MK_OUT_OF_MEMORY */ - - buffer_tail = buffer; - -#ifdef GENERATE_MESSAGE_ID - if (fields->GetMessageId() && *fields->GetMessageId()) - { - char *convbuf = NULL; - PUSH_STRING ("Message-ID: "); - PUSH_STRING (fields->GetMessageId()); - PUSH_NEWLINE (); - /* MDN request header requires to have MessageID header presented - * in the message in order to - * coorelate the MDN reports to the original message. Here will be - * the right place - */ - if (fields->GetReturnReceipt() && - (fields->GetReturnReceiptType() == 2 || - fields->GetReturnReceiptType() == 3) && - (deliver_mode != MSG_SaveAsDraft && - deliver_mode != MSG_SaveAsTemplate)) - { - int32 receipt_header_type = 0; - - PREF_GetIntPref("mail.receipt.request_header_type", - &receipt_header_type); - // 0 = MDN Disposition-Notification-To: ; 1 = Return-Receipt-To: ; 2 = - // both MDN DNT & RRT headers - if (receipt_header_type == 1) - { - RRT_HEADER: - PUSH_STRING ("Return-Receipt-To: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetFrom(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREEIF(convbuf); - } - else - PUSH_STRING (fields->GetFrom()); - PUSH_NEWLINE (); - } - else - { - PUSH_STRING ("Disposition-Notification-To: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetFrom(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREEIF(convbuf); - } - else - PUSH_STRING (fields->GetFrom()); - PUSH_NEWLINE (); - if (receipt_header_type == 2) - goto RRT_HEADER; - } - } -#ifdef SUPPORT_X_TEMPLATE_NAME - if (deliver_mode == MSG_SaveAsTemplate) - { - PUSH_STRING ("X-Template: "); - if (fields->GetTemplateName()) - { - convbuf = IntlEncodeMimePartIIStr((char *) - fields->GetTemplateName(), - csid, - mime_headers_use_quoted_printable_p); - if (convbuf) - { - PUSH_STRING (convbuf); - XP_FREEIF(convbuf); - } - else - { - PUSH_STRING(fields->GetTemplateName()); - } - } - PUSH_NEWLINE (); - } -#endif /* SUPPORT_X_TEMPLATE_NAME */ - } -#endif /* GENERATE_MESSAGE_ID */ - - { -#if 0 - /* Use strftime() to format the date, then figure out what our local - GMT offset it, and append that (since strftime() can't do that.) - Generate four digit years as per RFC 1123 (superceding RFC 822.) - */ - time_t now = time ((time_t *) 0); - int gmtoffset = XP_LocalZoneOffset(); - strftime (buffer_tail, 100, "Date: %a, %d %b %Y %H:%M:%S ", - localtime (&now)); -#else - int gmtoffset = XP_LocalZoneOffset(); -#ifndef NSPR20 - PRTime now; - PR_ExplodeTime(&now, PR_Now()); -#else - PRExplodedTime now; - PR_ExplodeTime(PR_Now(), PR_LocalTimeParameters, &now); -#endif /* NSPR20 */ - - /* Use PR_FormatTimeUSEnglish() to format the date in US English format, - then figure out what our local GMT offset is, and append it (since - PR_FormatTimeUSEnglish() can't do that.) Generate four digit years as - per RFC 1123 (superceding RFC 822.) - */ - PR_FormatTimeUSEnglish(buffer_tail, 100, - "Date: %a, %d %b %Y %H:%M:%S ", - &now); -#endif - - buffer_tail += XP_STRLEN (buffer_tail); - PR_snprintf(buffer_tail, buffer + size - buffer_tail, - "%c%02d%02d" CRLF, - (gmtoffset >= 0 ? '+' : '-'), - ((gmtoffset >= 0 ? gmtoffset : -gmtoffset) / 60), - ((gmtoffset >= 0 ? gmtoffset : -gmtoffset) % 60)); - buffer_tail += XP_STRLEN (buffer_tail); - } - - if (fields->GetFrom() && *fields->GetFrom()) - { - char *convbuf; - PUSH_STRING ("From: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetFrom(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetFrom()); - PUSH_NEWLINE (); - } - - if (fields->GetReplyTo() && *fields->GetReplyTo()) - { - char *convbuf; - PUSH_STRING ("Reply-To: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetReplyTo(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetReplyTo()); - PUSH_NEWLINE (); - } - - if (fields->GetOrganization() && *fields->GetOrganization()) - { - char *convbuf; - PUSH_STRING ("Organization: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetOrganization(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetOrganization()); - PUSH_NEWLINE (); - } - - // X-Sender tag - if (fields->GetOwner()) - { - XP_Bool bUseXSender = FALSE; - - PREF_GetBoolPref("mail.use_x_sender", &bUseXSender); - if (bUseXSender) { - char *convbuf; - char tmpBuffer[256]; - int bufSize = 256; - - *tmpBuffer = 0; - - PUSH_STRING ("X-Sender: "); - - PUSH_STRING("\""); - - PREF_GetCharPref("mail.identity.username", tmpBuffer, &bufSize); - convbuf = IntlEncodeMimePartIIStr((char *)tmpBuffer, csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (tmpBuffer); - - PUSH_STRING("\" <"); - - PREF_GetCharPref("mail.pop_name", tmpBuffer, &bufSize); - convbuf = IntlEncodeMimePartIIStr((char *)tmpBuffer, csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (tmpBuffer); - - PUSH_STRING ("@"); - - PREF_GetCharPref("network.hosts.pop_server", tmpBuffer, &bufSize); - convbuf = IntlEncodeMimePartIIStr((char *)tmpBuffer, csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (tmpBuffer); - - PUSH_STRING(">"); - - convbuf = IntlEncodeMimePartIIStr((char *)tmpBuffer, csid, - mime_headers_use_quoted_printable_p); - - if (!fields->GetOwner()->GetMaster()->IsUserAuthenticated()) - PUSH_STRING (" (Unverified)"); - PUSH_NEWLINE (); - } - } - // X-Mozilla-Draft-Info - if (isDraft) { - char *htmlAction = 0; - char *lineWidth = 0; // force plain text hard line break info - - PUSH_STRING(X_MOZILLA_DRAFT_INFO); - PUSH_STRING(": internal/draft; "); - if (fields->GetAttachVCard()) { - PUSH_STRING("vcard=1"); - } - else { - PUSH_STRING("vcard=0"); - } - PUSH_STRING("; "); - if (fields->GetReturnReceipt()) { - char *type = PR_smprintf("%d", (int) fields->GetReturnReceiptType()); - if (type) - { - PUSH_STRING("receipt="); - PUSH_STRING(type); - XP_FREEIF(type); - } - } - else { - PUSH_STRING("receipt=0"); - } - PUSH_STRING("; "); - if (fields->GetBoolHeader(MSG_UUENCODE_BINARY_BOOL_HEADER_MASK)) { - PUSH_STRING("uuencode=1"); - } - else { - PUSH_STRING("uuencode=0"); - } - - htmlAction = PR_smprintf("html=%d", - ((MSG_CompositionPane*)fields->GetOwner())->GetHTMLAction()); - if (htmlAction) - { - PUSH_STRING("; "); - PUSH_STRING(htmlAction); - FREEIF(htmlAction); - } - - lineWidth = PR_smprintf("; linewidth=%d", - ((MSG_CompositionPane*)fields->GetOwner())->GetLineWidth()); - if (lineWidth) - { - PUSH_STRING(lineWidth); - FREEIF(lineWidth); - } - PUSH_NEWLINE (); - } - - PUSH_STRING ("X-Mailer: "); - PUSH_STRING (XP_AppCodeName); - PUSH_STRING (" "); - PUSH_STRING (XP_AppVersion); - PUSH_NEWLINE (); - - /* for Netscape Server, Accept-Language data sent in Mail header */ - char *acceptlang = INTL_GetAcceptLanguage(); - if( (acceptlang != NULL) && ( *acceptlang != '\0') ){ - PUSH_STRING( "X-Accept-Language: " ); - PUSH_STRING( acceptlang ); - PUSH_NEWLINE(); - } - - PUSH_STRING ("MIME-Version: 1.0" CRLF); - - if (fields->GetNewsgroups() && *fields->GetNewsgroups()) - { - /* turn whitespace into a comma list - */ - char *ptr, *ptr2; - char *n2; - char *convbuf; - - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetNewsgroups(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) - n2 = XP_StripLine (convbuf); - else { - ptr = XP_STRDUP(fields->GetNewsgroups()); - if (!ptr) - { - FREEIF(buffer); - return 0; /* MK_OUT_OF_MEMORY */ - } - n2 = XP_StripLine(ptr); - XP_ASSERT(n2 == ptr); /* Otherwise, the XP_FREE below is - gonna choke badly. */ - } - - for(ptr=n2; *ptr != '\0'; ptr++) - { - /* find first non white space */ - while(!XP_IS_SPACE(*ptr) && *ptr != ',' && *ptr != '\0') - ptr++; - - if(*ptr == '\0') - break; - - if(*ptr != ',') - *ptr = ','; - - /* find next non white space */ - ptr2 = ptr+1; - while(XP_IS_SPACE(*ptr2)) - ptr2++; - - if(ptr2 != ptr+1) - XP_STRCPY(ptr+1, ptr2); - } - - PUSH_STRING ("Newsgroups: "); - PUSH_STRING (n2); - XP_FREE (n2); - PUSH_NEWLINE (); - } - - /* #### shamelessly duplicated from above */ - if (fields->GetFollowupTo() && *fields->GetFollowupTo()) - { - /* turn whitespace into a comma list - */ - char *ptr, *ptr2; - char *n2; - char *convbuf; - - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetFollowupTo(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) - n2 = XP_StripLine (convbuf); - else { - ptr = XP_STRDUP(fields->GetFollowupTo()); - if (!ptr) - { - FREEIF(buffer); - return 0; /* MK_OUT_OF_MEMORY */ - } - n2 = XP_StripLine (ptr); - XP_ASSERT(n2 == ptr); /* Otherwise, the XP_FREE below is - gonna choke badly. */ - } - - for(ptr=n2; *ptr != '\0'; ptr++) - { - /* find first non white space */ - while(!XP_IS_SPACE(*ptr) && *ptr != ',' && *ptr != '\0') - ptr++; - - if(*ptr == '\0') - break; - - if(*ptr != ',') - *ptr = ','; - - /* find next non white space */ - ptr2 = ptr+1; - while(XP_IS_SPACE(*ptr2)) - ptr2++; - - if(ptr2 != ptr+1) - XP_STRCPY(ptr+1, ptr2); - } - - PUSH_STRING ("Followup-To: "); - PUSH_STRING (n2); - XP_FREE (n2); - PUSH_NEWLINE (); - } - - if (fields->GetTo() && *fields->GetTo()) - { - char *convbuf; - PUSH_STRING ("To: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetTo(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetTo()); - - PUSH_NEWLINE (); - } - if (fields->GetCc() && *fields->GetCc()) - { - char *convbuf; - PUSH_STRING ("CC: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetCc(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetCc()); - PUSH_NEWLINE (); - } - if (fields->GetSubject() && *fields->GetSubject()) - { - char *convbuf; - PUSH_STRING ("Subject: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetSubject(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetSubject()); - PUSH_NEWLINE (); - } - if (fields->GetPriority() && *(fields->GetPriority())) - { - char *priority = (char *) fields->GetPriority(); - - if (!strcasestr(priority, "normal")) - { - PUSH_STRING ("X-Priority: "); - /* Important: do not change the order of the - * following if statements - */ - if (strcasestr (priority, "highest")) - PUSH_STRING("1 ("); - else if (strcasestr(priority, "high")) - PUSH_STRING("2 ("); - else if (strcasestr(priority, "lowest")) - PUSH_STRING("5 ("); - else if (strcasestr(priority, "low")) - PUSH_STRING("4 ("); - - PUSH_STRING (priority); - PUSH_STRING(")"); - PUSH_NEWLINE (); - } - } - if (fields->GetReferences() && *fields->GetReferences()) - { - PUSH_STRING ("References: "); - PUSH_STRING (fields->GetReferences()); - PUSH_NEWLINE (); - } - - if (fields->GetOtherRandomHeaders() && *fields->GetOtherRandomHeaders()) - { - /* Assume they already have the right newlines and continuations - and so on. */ - PUSH_STRING (fields->GetOtherRandomHeaders()); - } - - if (buffer_tail > buffer + size - 1) - abort (); - - /* realloc it smaller... */ - buffer = (char*)XP_REALLOC (buffer, buffer_tail - buffer + 1); - - return buffer; -} - - -/* Generate headers for a form post to a mailto: URL. - This lets the URL specify additional headers, but is careful to - ignore headers which would be dangerous. It may modify the URL - (because of CC) so a new URL to actually post to is returned. - */ -int -MIME_GenerateMailtoFormPostHeaders (const char *old_post_url, - const char * /*referer*/, - char **new_post_url_return, - char **headers_return) -{ - char *from = 0, *to = 0, *cc = 0, *body = 0, *search = 0; - char *extra_headers = 0; - char *s; - XP_Bool subject_p = FALSE; - XP_Bool sign_p = FALSE; - HG29292 - char *rest; - int status = 0; - MSG_CompositionFields *fields = NULL; - static const char *forbidden_headers[] = { - "Apparently-To", - "BCC", - "Content-Encoding", - CONTENT_LENGTH, - "Content-Transfer-Encoding", - "Content-Type", - "Date", - "Distribution", - "FCC", - "Followup-To", - "From", - "Lines", - "MIME-Version", - "Message-ID", - "Newsgroups", - "Organization", - "Reply-To", - "Sender", - X_MOZILLA_STATUS, - X_MOZILLA_STATUS2, - X_MOZILLA_NEWSHOST, - X_UIDL, - "XRef", - 0 }; - - from = MIME_MakeFromField (); - if (!from) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - to = NET_ParseURL (old_post_url, GET_PATH_PART); - if (!to) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - if (!*to) - { - status = MK_MIME_NO_RECIPIENTS; /* rb -1; */ - goto FAIL; - } - - search = NET_ParseURL (old_post_url, GET_SEARCH_PART); - - rest = search; - if (rest && *rest == '?') - { - /* start past the '?' */ - rest++; - rest = XP_STRTOK (rest, "&"); - while (rest && *rest) - { - char *token = rest; - char *value = 0; - char *eq; - - rest = XP_STRTOK (0, "&"); - - eq = XP_STRCHR (token, '='); - if (eq) - { - value = eq+1; - *eq = 0; - } - - if (!strcasecomp (token, "subject")) - subject_p = TRUE; - - if (value) - /* Don't allow newlines or control characters in the value. */ - for (s = value; *s; s++) - if (*s < ' ' && *s != '\t') - *s = ' '; - - if (!strcasecomp (token, "to")) - { - if (to && *to) - { - StrAllocCat (to, ", "); - StrAllocCat (to, value); - } - else - { - StrAllocCopy (to, value); - } - } - else if (!strcasecomp (token, "cc")) - { - if (cc && *cc) - { - StrAllocCat (cc, ", "); - StrAllocCat (cc, value); - } - else - { - StrAllocCopy (cc, value); - } - } - else if (!strcasecomp (token, "body")) - { - if (body && *body) - { - StrAllocCat (body, "\n"); - StrAllocCat (body, value); - } - else - { - StrAllocCopy (body, value); - } - } - HG28926 - else if (!strcasecomp (token, "sign") || - !strcasecomp (token, "signed")) - { - sign_p = (!strcasecomp(value, "true") || - !strcasecomp(value, "yes")); - } - else - { - const char **fh = forbidden_headers; - XP_Bool ok = TRUE; - while (*fh) - if (!strcasecomp (token, *fh++)) - { - ok = FALSE; - break; - } - if (ok) - { - XP_Bool upper_p = FALSE; - char *s; - for (s = token; *s; s++) - { - if (*s >= 'A' && *s <= 'Z') - upper_p = TRUE; - else if (*s <= ' ' || *s >= '~' || *s == ':') - goto NOT_OK; /* bad character in header! */ - } - if (!upper_p && *token >= 'a' && *token <= 'z') - *token -= ('a' - 'A'); - - StrAllocCat (extra_headers, token); - StrAllocCat (extra_headers, ": "); - if (value) - StrAllocCat (extra_headers, value); - StrAllocCat (extra_headers, CRLF); - NOT_OK: ; - } - } - } - } - - if (!subject_p) - { - /* If the URL didn't provide a subject, we will. */ - StrAllocCat (extra_headers, "Subject: Form posted from "); - XP_ASSERT (XP_AppCodeName); - StrAllocCat (extra_headers, XP_AppCodeName); - StrAllocCat (extra_headers, CRLF); - } - - /* Note: the `sign', and `body' parameters are currently - ignored in mailto form submissions. */ - - *new_post_url_return = 0; - - fields = MSG_CreateCompositionFields(from, 0, to, cc, 0, 0, 0, 0, - FE_UsersOrganization(), 0, 0, - extra_headers, 0, 0, 0 - HG15448); - if (!fields) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - fields->SetDefaultBody(body); - - *headers_return = mime_generate_headers (fields, 0, MSG_DeliverNow); - if (*headers_return == 0) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - StrAllocCat ((*new_post_url_return), "mailto:"); - if (to) - StrAllocCat ((*new_post_url_return), to); - if (to && cc) - StrAllocCat ((*new_post_url_return), ","); - if (cc) - StrAllocCat ((*new_post_url_return), cc); - - FAIL: - FREEIF (from); - FREEIF (to); - FREEIF (cc); - FREEIF (body); - FREEIF (search); - FREEIF (extra_headers); - if (fields) - MSG_DestroyCompositionFields(fields); - - return status; -} - - - -static char * -mime_generate_attachment_headers (const char *type, const char *encoding, - const char *description, - const char *x_mac_type, - const char *x_mac_creator, - const char *real_name, - const char *base_url, - XP_Bool /*digest_p*/, - MSG_DeliverMimeAttachment * /*ma*/, - int16 mail_csid) -{ - char *buffer = (char *) XP_ALLOC (2048); - char *buffer_tail = buffer; - char charset[30]; - - if (! buffer) - return 0; /* MK_OUT_OF_MEMORY */ - - XP_ASSERT (encoding); - charset[0] = 0; - - PUSH_STRING ("Content-Type: "); - PUSH_STRING (type); - - if (mime_type_needs_charset (type)) - { - - /* push 7bit encoding out based on current default codeset */ - INTL_CharSetIDToName (mail_csid, charset); - - /* If the characters are all 7bit, then it's better (and true) to - claim the charset to be US-ASCII rather than Latin1. Should we - do this all the time, for all charsets? I'm not sure. But we - should definitely do it for Latin1. */ - if (encoding && - !strcasecomp (encoding, "7bit") && - !strcasecomp (charset, "iso-8859-1")) - XP_STRCPY (charset, "us-ascii"); - - // If csid is JIS and and type is HTML - // then no charset to be specified (apply base64 instead) - // in order to avoid mismatch META_TAG (bug#104255). - if ((mail_csid != CS_JIS) || - (strcasecomp(type, TEXT_HTML) != 0) || - (strcasecomp(encoding, ENCODING_BASE64) != 0)) - { - PUSH_STRING ("; charset="); - PUSH_STRING (charset); - } - } - - if (x_mac_type && *x_mac_type) - { - PUSH_STRING ("; x-mac-type=\""); - PUSH_STRING (x_mac_type); - PUSH_STRING ("\""); - } - if (x_mac_creator && *x_mac_creator) - { - PUSH_STRING ("; x-mac-creator=\""); - PUSH_STRING (x_mac_creator); - PUSH_STRING ("\""); - } - - int32 parmFolding = 0; - PREF_GetIntPref("mail.strictly_mime.parm_folding", &parmFolding); - -#ifdef EMIT_NAME_IN_CONTENT_TYPE - if (real_name && *real_name) - { - if (parmFolding == 0 || parmFolding == 1) - { - PUSH_STRING (";\r\n name=\""); - PUSH_STRING (real_name); - PUSH_STRING ("\""); - } - else // if (parmFolding == 2) - { - char *rfc2231Parm = RFC2231ParmFolding("name", charset, - INTL_GetAcceptLanguage(), real_name); - if (rfc2231Parm) - { - PUSH_STRING(";\r\n "); - PUSH_STRING(rfc2231Parm); - XP_FREE(rfc2231Parm); - } - } - } -#endif /* EMIT_NAME_IN_CONTENT_TYPE */ - - PUSH_NEWLINE (); - - PUSH_STRING ("Content-Transfer-Encoding: "); - PUSH_STRING (encoding); - PUSH_NEWLINE (); - - if (description && *description) - { - char *s = mime_fix_header (description); - if (s) - { - PUSH_STRING ("Content-Description: "); - PUSH_STRING (s); - PUSH_NEWLINE (); - XP_FREE(s); - } - } - - if (real_name && *real_name) - { - char *period = XP_STRRCHR(real_name, '.'); - int32 pref_content_disposition = 0; - - PREF_GetIntPref("mail.content_disposition_type", - &pref_content_disposition); - - PUSH_STRING ("Content-Disposition: "); - - if (pref_content_disposition == 1) - PUSH_STRING ("attachment"); - else if (pref_content_disposition == 2 && - (!strcasecomp(type, TEXT_PLAIN) || - (period && !strcasecomp(period, ".txt")))) - PUSH_STRING("attachment"); - /* If this document is an anonymous binary file or a vcard, - then always show it as an attachment, never inline. */ - else if (!strcasecomp(type, APPLICATION_OCTET_STREAM) || - !strcasecomp(type, vCardMimeFormat)) - PUSH_STRING ("attachment"); - else - PUSH_STRING ("inline"); - - if (parmFolding == 0 || parmFolding == 1) - { - PUSH_STRING (";\r\n filename=\""); - PUSH_STRING (real_name); - PUSH_STRING ("\"" CRLF); - } - else // if (parmFolding == 2) - { - char *rfc2231Parm = RFC2231ParmFolding("name", charset, - INTL_GetAcceptLanguage(), real_name); - if (rfc2231Parm) - { - PUSH_STRING(";\r\n "); - PUSH_STRING(rfc2231Parm); - PUSH_NEWLINE (); - XP_FREE(rfc2231Parm); - } - } - } - else if (type && - (!strcasecomp (type, MESSAGE_RFC822) || - !strcasecomp (type, MESSAGE_NEWS))) - { - PUSH_STRING ("Content-Disposition: inline" CRLF); - } - -#ifdef GENERATE_CONTENT_BASE - /* If this is an HTML document, and we know the URL it originally - came from, write out a Content-Base header. */ - if (type && - (!strcasecomp (type, TEXT_HTML) || - !strcasecomp (type, TEXT_MDL)) && - base_url && *base_url) - { - int32 col = 0; - const char *s = base_url; - const char *colon = XP_STRCHR (s, ':'); - XP_Bool useContentLocation = FALSE; /* rhp - add this */ - - if (!colon) goto GIVE_UP_ON_CONTENT_BASE; /* malformed URL? */ - - /* Don't emit a content-base that points to (or into) a news or - mail message. */ - if (!strncasecomp (s, "news:", 5) || - !strncasecomp (s, "snews:", 6) || - !strncasecomp (s, "IMAP:", 5) || - !strncasecomp (s, "mailbox:", 8)) - goto GIVE_UP_ON_CONTENT_BASE; - - /* rhp - Put in a pref for using Content-Location instead of Content-Base. - This will get tweaked to default to true in 5.0 - */ - PREF_GetBoolPref("mail.use_content_location_on_send", &useContentLocation); - - if (useContentLocation) - PUSH_STRING ("Content-Location: \""); - else - PUSH_STRING ("Content-Base: \""); - /* rhp - Pref for Content-Location usage */ - -/* rhp: this is to work with the Content-Location stuff */ -CONTENT_LOC_HACK: - - while (*s != 0 && *s != '#') - { - const char *ot = buffer_tail; - - /* URLs must be wrapped at 40 characters or less. */ - if (col >= 38) - { - PUSH_STRING(CRLF "\t"); - col = 0; - } - - if (*s == ' ') PUSH_STRING("%20"); - else if (*s == '\t') PUSH_STRING("%09"); - else if (*s == '\n') PUSH_STRING("%0A"); - else if (*s == '\r') PUSH_STRING("%0D"); - else - { - *buffer_tail++ = *s; - *buffer_tail = '\0'; - } - s++; - col += (buffer_tail - ot); - } - PUSH_STRING ("\"" CRLF); - - /* rhp: this is to try to get around this fun problem with Content-Location */ - if (!useContentLocation) - { - PUSH_STRING ("Content-Location: \""); - s = base_url; - col = 0; - useContentLocation = TRUE; - goto CONTENT_LOC_HACK; - } - /* rhp: this is to try to get around this fun problem with Content-Location */ - - GIVE_UP_ON_CONTENT_BASE: - ; - } -#endif /* GENERATE_CONTENT_BASE */ - - - /* realloc it smaller... */ - buffer = (char*) XP_REALLOC (buffer, buffer_tail - buffer + 1); - - return buffer; -} - - -void MSG_SendMimeDeliveryState::Fail (int failure_code, char *error_msg) -{ - if (m_message_delivery_done_callback) - { - if (failure_code < 0 && !error_msg) - error_msg = NET_ExplainErrorDetails(failure_code, 0, 0, 0, 0); - m_message_delivery_done_callback (GetContext(), m_fe_data, - failure_code, error_msg); - FREEIF(error_msg); /* #### Is there a memory leak here? Shouldn't - this free be outside the if? */ - } - else if (m_attachments_done_callback) - { - if (failure_code < 0 && !error_msg) - error_msg = NET_ExplainErrorDetails(failure_code, 0, 0, 0, 0); - - /* mime_free_message_state will take care of cleaning up the - attachment files and attachment structures */ - m_attachments_done_callback (GetContext(), - m_fe_data, failure_code, - error_msg, 0); - - FREEIF(error_msg); /* #### Is there a memory leak here? Shouldn't - this free be outside the if? */ - } - - m_message_delivery_done_callback = 0; - m_attachments_done_callback = 0; - - Clear(); -} - -/* Given a string, convert it to 'qtext' (quoted text) for RFC822 header purposes. */ -static char * -msg_make_filename_qtext(const char *srcText, XP_Bool stripCRLFs) -{ - /* newString can be at most twice the original string (every char quoted). */ - char *newString = (char *) XP_ALLOC(XP_STRLEN(srcText)*2 + 1); - if (!newString) return NULL; - - const char *s = srcText; - const char *end = srcText + XP_STRLEN(srcText); - char *d = newString; - - while(*s) - { - /* Put backslashes in front of existing backslashes, or double quote - characters. - If stripCRLFs is true, don't write out CRs or LFs. Otherwise, - write out a backslash followed by the CR but not - linear-white-space. - We might already have quoted pair of "\ " or "\\t" skip it. - */ - if (*s == '\\' || *s == '"' || - (!stripCRLFs && - (*s == CR && (*(s+1) != LF || - (*(s+1) == LF && (s+2) < end && !XP_IS_SPACE(*(s+2))))))) - *d++ = '\\'; - - if (*s == CR) - { - if (stripCRLFs && *(s+1) == LF && (s+2) < end && XP_IS_SPACE(*(s+2))) - s += 2; // skip CRLFLWSP - } - else - { - *d++ = *s; - } - s++; - } - *d = 0; - - return newString; -} - -/* Rip apart the URL and extract a reasonable value for the `real_name' slot. - */ -static void -msg_pick_real_name (MSG_DeliverMimeAttachment *attachment, int16 csid) -{ - const char *s, *s2; - char *s3; - char *url; - - if (attachment->m_real_name) - return; - - url = attachment->m_url_string; - - /* Perhaps the MIME parser knows a better name than the URL itself? - This can happen when one attaches a MIME part from one message - directly into another message. - - ### mwelch Note that this function simply duplicates and returns an existing - MIME header, so we don't need to process it. */ - attachment->m_real_name = - MimeGuessURLContentName(attachment->m_mime_delivery_state->GetContext(), - url); - if (attachment->m_real_name) - return; - - /* Otherwise, extract a name from the URL. */ - - s = url; - s2 = XP_STRCHR (s, ':'); - if (s2) s = s2 + 1; - /* If we know the URL doesn't have a sensible file name in it, - don't bother emitting a content-disposition. */ - if (!strncasecomp (url, "news:", 5) || - !strncasecomp (url, "snews:", 6) || - !strncasecomp (url, "IMAP:", 5) || - !strncasecomp (url, "mailbox:", 8)) - return; - - /* Take the part of the file name after the last / or \ */ - s2 = XP_STRRCHR (s, '/'); - if (s2) s = s2+1; - s2 = XP_STRRCHR (s, '\\'); - - if (csid & MULTIBYTE) - { - // We don't want to truncate the file name in case of the double - // byte file name - while ( s2 != NULL && - s2 > s && - INTL_IsLeadByte(csid, *(s2-1))) - { - s3 = (char *) s2; - *s3 = 0; - s2 = XP_STRRCHR(s, '\\'); - *s3 = '\\'; - } - } - - if (s2) s = s2+1; - /* Copy it into the attachment struct. */ - StrAllocCopy (attachment->m_real_name, s); - /* Now trim off any named anchors or search data. */ - s3 = XP_STRCHR (attachment->m_real_name, '?'); - if (s3) *s3 = 0; - s3 = XP_STRCHR (attachment->m_real_name, '#'); - if (s3) *s3 = 0; - - /* Now lose the %XX */ - NET_UnEscape (attachment->m_real_name); - - int32 parmFolding = 0; - PREF_GetIntPref("mail.strictly_mime.parm_folding", &parmFolding); - - if (parmFolding == 0 || parmFolding == 1) - { - /* Try to MIME-2 encode the filename... */ - char *mime2Name = IntlEncodeMimePartIIStr(attachment->m_real_name, csid, - mime_headers_use_quoted_printable_p); - if (mime2Name && (mime2Name != attachment->m_real_name)) - { - XP_FREE(attachment->m_real_name); - attachment->m_real_name = mime2Name; - } - - /* ... and then put backslashes before special characters (RFC 822 tells us - to). */ - - char *qtextName = NULL; - - qtextName = msg_make_filename_qtext(attachment->m_real_name, - (parmFolding == 0 ? TRUE : FALSE)); - - if (qtextName) - { - XP_FREE(attachment->m_real_name); - attachment->m_real_name = qtextName; - } - } - - /* Now a special case for attaching uuencoded files... - - If we attach a file "foo.txt.uu", we will send it out with - Content-Type: text/plain; Content-Transfer-Encoding: x-uuencode. - When saving such a file, a mail reader will generally decode it first - (thus removing the uuencoding.) So, let's make life a little easier by - removing the indication of uuencoding from the file name itself. (This - will presumably make the file name in the Content-Disposition header be - the same as the file name in the "begin" line of the uuencoded data.) - - However, since there are mailers out there (including earlier versions of - Mozilla) that will use "foo.txt.uu" as the file name, we still need to - cope with that; the code which copes with that is in the MIME parser, in - libmime/mimei.c. - */ - if (attachment->m_already_encoded_p && - attachment->m_encoding) - { - char *result = attachment->m_real_name; - int32 L = XP_STRLEN(result); - const char **exts = 0; - - /* #### hack - I'd like to ask the mime.types file, "what extensions correspond - to obj->encoding (which happens to be "x-uuencode") but doing that - in a non-sphagetti way would require brain surgery. So, since - currently uuencode is the only content-transfer-encoding which we - understand which traditionally has an extension, we just special- - case it here! - - Note that it's special-cased in a similar way in libmime/mimei.c. - */ - if (!strcasecomp(attachment->m_encoding, ENCODING_UUENCODE) || - !strcasecomp(attachment->m_encoding, ENCODING_UUENCODE2) || - !strcasecomp(attachment->m_encoding, ENCODING_UUENCODE3) || - !strcasecomp(attachment->m_encoding, ENCODING_UUENCODE4)) - { - static const char *uue_exts[] = { "uu", "uue", 0 }; - exts = uue_exts; - } - - while (exts && *exts) - { - const char *ext = *exts; - int32 L2 = XP_STRLEN(ext); - if (L > L2 + 1 && /* long enough */ - result[L - L2 - 1] == '.' && /* '.' in right place*/ - !strcasecomp(ext, result + (L - L2))) /* ext matches */ - { - result[L - L2 - 1] = 0; /* truncate at '.' and stop. */ - break; - } - exts++; - } - } -} - - -int -MSG_SendMimeDeliveryState::HackAttachments( - const struct MSG_AttachmentData *attachments, - const struct MSG_AttachedFile *preloaded_attachments) -{ - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(GetContext()); - if (preloaded_attachments) XP_ASSERT(!attachments); - if (attachments) XP_ASSERT(!preloaded_attachments); - - if (preloaded_attachments && preloaded_attachments[0].orig_url) - { - /* These are attachments which have already been downloaded to tmp files. - We merely need to point the internal attachment data at those tmp - files. - */ - int32 i; - - m_pre_snarfed_attachments_p = TRUE; - - m_attachment_count = 0; - while (preloaded_attachments[m_attachment_count].orig_url) - m_attachment_count++; - - m_attachments = (MSG_DeliverMimeAttachment *) - new MSG_DeliverMimeAttachment[m_attachment_count]; - - if (! m_attachments) - return MK_OUT_OF_MEMORY; - - for (i = 0; i < m_attachment_count; i++) - { - m_attachments[i].m_mime_delivery_state = this; - /* These attachments are already "snarfed". */ - m_attachments[i].m_done = TRUE; - XP_ASSERT (preloaded_attachments[i].orig_url); - StrAllocCopy (m_attachments[i].m_url_string, - preloaded_attachments[i].orig_url); - StrAllocCopy (m_attachments[i].m_type, - preloaded_attachments[i].type); - StrAllocCopy (m_attachments[i].m_description, - preloaded_attachments[i].description); - StrAllocCopy (m_attachments[i].m_real_name, - preloaded_attachments[i].real_name); - StrAllocCopy (m_attachments[i].m_x_mac_type, - preloaded_attachments[i].x_mac_type); - StrAllocCopy (m_attachments[i].m_x_mac_creator, - preloaded_attachments[i].x_mac_creator); - StrAllocCopy (m_attachments[i].m_encoding, - preloaded_attachments[i].encoding); - StrAllocCopy (m_attachments[i].m_file_name, - preloaded_attachments[i].file_name); - - m_attachments[i].m_size = preloaded_attachments[i].size; - m_attachments[i].m_unprintable_count = - preloaded_attachments[i].unprintable_count; - m_attachments[i].m_highbit_count = - preloaded_attachments[i].highbit_count; - m_attachments[i].m_ctl_count = preloaded_attachments[i].ctl_count; - m_attachments[i].m_null_count = - preloaded_attachments[i].null_count; - m_attachments[i].m_max_column = - preloaded_attachments[i].max_line_length; - - /* If the attachment has an encoding, and it's not one of - the "null" encodings, then keep it. */ - if (m_attachments[i].m_encoding && - strcasecomp (m_attachments[i].m_encoding, ENCODING_7BIT) && - strcasecomp (m_attachments[i].m_encoding, ENCODING_8BIT) && - strcasecomp (m_attachments[i].m_encoding, ENCODING_BINARY)) - m_attachments[i].m_already_encoded_p = TRUE; - - msg_pick_real_name(&m_attachments[i], INTL_GetCSIWinCSID(c)); - } - } - else if (attachments && attachments[0].url) - { - /* These are attachments which have already been downloaded to tmp files. - We merely need to point the internal attachment data at those tmp - files. We will delete the tmp files as we attach them. - */ - int32 i; - int mailbox_count = 0, news_count = 0; - - m_attachment_count = 0; - while (attachments[m_attachment_count].url) - m_attachment_count++; - - m_attachments = (MSG_DeliverMimeAttachment *) - new MSG_DeliverMimeAttachment[m_attachment_count]; - - if (! m_attachments) - return MK_OUT_OF_MEMORY; - - for (i = 0; i < m_attachment_count; i++) - { - m_attachments[i].m_mime_delivery_state = this; - XP_ASSERT (attachments[i].url); - StrAllocCopy (m_attachments[i].m_url_string, - attachments[i].url); - StrAllocCopy (m_attachments[i].m_override_type, - attachments[i].real_type); - StrAllocCopy (m_attachments[i].m_override_encoding, - attachments[i].real_encoding); - StrAllocCopy (m_attachments[i].m_desired_type, - attachments[i].desired_type); - StrAllocCopy (m_attachments[i].m_description, - attachments[i].description); - StrAllocCopy (m_attachments[i].m_real_name, - attachments[i].real_name); - StrAllocCopy (m_attachments[i].m_x_mac_type, - attachments[i].x_mac_type); - StrAllocCopy (m_attachments[i].m_x_mac_creator, - attachments[i].x_mac_creator); - StrAllocCopy (m_attachments[i].m_encoding, "7bit"); - m_attachments[i].m_url = - NET_CreateURLStruct (m_attachments[i].m_url_string, - NET_DONT_RELOAD); - - // real name is set in the case of vcard so don't change it. - // m_attachments[i].m_real_name = 0; - - /* Count up attachments which are going to come from mail folders - and from NNTP servers. */ - if (strncasecomp(m_attachments[i].m_url_string, "mailbox:",8) || - strncasecomp(m_attachments[i].m_url_string, "IMAP:",5)) - mailbox_count++; - else if (strncasecomp(m_attachments[i].m_url_string, "news:",5) || - strncasecomp(m_attachments[i].m_url_string, "snews:",6)) - news_count++; - - msg_pick_real_name(&m_attachments[i], INTL_GetCSIWinCSID(c)); - } - - /* If there is more than one mailbox URL, or more than one NNTP url, - do the load in serial rather than parallel, for efficiency. - */ - if (mailbox_count > 1 || news_count > 1) - m_be_synchronous_p = TRUE; - - m_attachment_pending_count = m_attachment_count; - - /* Start the URL attachments loading (eventually, an exit routine will - call the done_callback). */ - - if (m_attachment_count == 1) - FE_Progress(GetContext(), XP_GetString(MK_MSG_LOAD_ATTACHMNT)); - else - FE_Progress(GetContext(), XP_GetString(MK_MSG_LOAD_ATTACHMNTS)); - - for (i = 0; i < m_attachment_count; i++) - { - /* This only returns a failure code if NET_GetURL was not called - (and thus no exit routine was or will be called.) */ - int status = m_attachments [i].SnarfAttachment (); - if (status < 0) - return status; - - if (m_be_synchronous_p) - break; - } - } - - if (m_attachment_pending_count <= 0) - /* No attachments - finish now (this will call the done_callback). */ - GatherMimeAttachments (); - - return 0; -} - - -void -MSG_SendMimeDeliveryState::StartMessageDelivery( - MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode mode, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachmentData *attachments, - const struct MSG_AttachedFile *preloaded_attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - MSG_SendPart *relatedPart, -//#endif - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)) -{ - int failure = 0; - MSG_SendMimeDeliveryState *state; - - if (!attachment1_body || !*attachment1_body) - attachment1_type = attachment1_body = 0; - - state = new MSG_SendMimeDeliveryState; - if (! state) - { - failure = MK_OUT_OF_MEMORY; - goto FAIL; - } - - failure = state->Init(pane, fe_data, fields, - digest_p, dont_deliver_p, mode, - attachment1_type, attachment1_body, - attachment1_body_length, - attachments, preloaded_attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - relatedPart, -//#endif - message_delivery_done_callback); - if (failure >= 0) - return; - -FAIL: - char *err_msg = NET_ExplainErrorDetails (failure); - message_delivery_done_callback (pane->GetContext(), fe_data, failure, - err_msg); - if (err_msg) XP_FREE (err_msg); - delete state; -} - -int MSG_SendMimeDeliveryState::SetMimeHeader(MSG_HEADER_SET header, const char *value) -{ - char *dupHeader = NULL; - int ret = MK_OUT_OF_MEMORY; - - if (header & (MSG_FROM_HEADER_MASK | MSG_TO_HEADER_MASK | MSG_REPLY_TO_HEADER_MASK | MSG_CC_HEADER_MASK | MSG_BCC_HEADER_MASK)) - dupHeader = mime_fix_addr_header(value); - else if (header & (MSG_NEWSGROUPS_HEADER_MASK| MSG_FOLLOWUP_TO_HEADER_MASK)) - dupHeader = mime_fix_news_header(value); - else if (header & (MSG_FCC_HEADER_MASK | MSG_ORGANIZATION_HEADER_MASK | MSG_SUBJECT_HEADER_MASK | MSG_REFERENCES_HEADER_MASK | MSG_X_TEMPLATE_HEADER_MASK)) - dupHeader = mime_fix_header(value); - else - XP_ASSERT(FALSE); // unhandled header mask - - if (dupHeader) - { - ret = m_fields->SetHeader(header, dupHeader); - XP_FREE(dupHeader); - } - return ret; -} - - - -int -MSG_SendMimeDeliveryState::Init( - MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode mode, - - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachmentData *attachments, - const struct MSG_AttachedFile *preloaded_attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - MSG_SendPart *relatedPart, -//#endif - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)) -{ - int failure = 0; - m_pane = pane; - m_fe_data = fe_data; - m_message_delivery_done_callback = message_delivery_done_callback; - -//#ifdef MSG_SEND_MULTIPART_RELATED - m_related_part = relatedPart; - if (m_related_part) - m_related_part->SetMimeDeliveryState(this); -//#endif - - XP_ASSERT (fields); - if (!fields) return MK_OUT_OF_MEMORY; /* rb -1; */ - - if (m_fields) - { - delete m_fields; - } - - m_fields = new MSG_CompositionFields; - if (!m_fields) - return MK_OUT_OF_MEMORY; - - m_fields->SetOwner(pane); - -#ifdef GENERATE_MESSAGE_ID - if (fields->GetMessageId()) - { - m_fields->SetMessageId(XP_STRDUP(fields->GetMessageId())); - /* Don't bother checking for out of memory; if it fails, then we'll just - let the server generate the message-id, and suffer with the - possibility of duplicate messages.*/ - } -#endif /* GENERATE_MESSAGE_ID */ - - /* Strip whitespace from beginning and end of body. */ - if (attachment1_body) - { - while (attachment1_body_length > 0 && - XP_IS_SPACE (*attachment1_body)) - { - attachment1_body++; - attachment1_body_length--; - } - while (attachment1_body_length > 0 && - XP_IS_SPACE (attachment1_body [attachment1_body_length - 1])) - { - attachment1_body_length--; - } - if (attachment1_body_length <= 0) - attachment1_body = 0; - - if (attachment1_body) - { - char *newb = (char *) XP_ALLOC (attachment1_body_length + 1); - if (! newb) - { - return MK_OUT_OF_MEMORY; - } - XP_MEMCPY (newb, attachment1_body, attachment1_body_length); - newb [attachment1_body_length] = 0; - m_attachment1_body = newb; - m_attachment1_body_length = attachment1_body_length; - } - } - - if (!fields->GetNewspostUrl() || !*fields->GetNewspostUrl()) - fields->SetNewspostUrl("news:"); - - m_fields->SetNewspostUrl(fields->GetNewspostUrl()); - m_fields->SetDefaultBody(fields->GetDefaultBody()); - StrAllocCopy (m_attachment1_type, attachment1_type); - StrAllocCopy (m_attachment1_encoding, "8bit"); - - /* strip whitespace from and duplicate header fields. */ - - SetMimeHeader(MSG_FROM_HEADER_MASK, fields->GetFrom()); - - SetMimeHeader(MSG_REPLY_TO_HEADER_MASK, fields->GetReplyTo()); - SetMimeHeader(MSG_TO_HEADER_MASK, (fields->GetTo())); - SetMimeHeader(MSG_CC_HEADER_MASK, (fields->GetCc())); - SetMimeHeader(MSG_FCC_HEADER_MASK, (fields->GetFcc())); - SetMimeHeader(MSG_BCC_HEADER_MASK, (fields->GetBcc())); - SetMimeHeader(MSG_NEWSGROUPS_HEADER_MASK, (fields->GetNewsgroups())); - SetMimeHeader(MSG_FOLLOWUP_TO_HEADER_MASK, (fields->GetFollowupTo())); - SetMimeHeader(MSG_ORGANIZATION_HEADER_MASK, (fields->GetOrganization())); - SetMimeHeader(MSG_SUBJECT_HEADER_MASK, (fields->GetSubject())); - SetMimeHeader(MSG_REFERENCES_HEADER_MASK, (fields->GetReferences())); - SetMimeHeader(MSG_X_TEMPLATE_HEADER_MASK, (fields->GetTemplateName())); - - if (fields->GetOtherRandomHeaders()) - m_fields->SetOtherRandomHeaders(fields->GetOtherRandomHeaders()); - - if (fields->GetPriority()) - m_fields->SetPriority(fields->GetPriority()); - - int i, j = (int) MSG_LAST_BOOL_HEADER_MASK; - for (i = 0; i < j; i++) - m_fields->SetBoolHeader((MSG_BOOL_HEADER_SET) i, - fields->GetBoolHeader((MSG_BOOL_HEADER_SET) i)); -#if 0 - m_fields->SetReturnReceipt(fields->GetReturnReceipt()); - HG29822 - m_fields->SetSigned(fields->GetSigned()); - m_fields->SetAttachVCard(fields->GetAttachVCard()); -#endif - m_fields->SetForcePlainText(fields->GetForcePlainText()); - m_fields->SetUseMultipartAlternative(fields->GetUseMultipartAlternative()); - - if (pane && m_fields->GetReturnReceipt()) - { - if (m_fields->GetReturnReceiptType() == 1 || - m_fields->GetReturnReceiptType() == 3) - pane->SetRequestForReturnReceipt(TRUE); - else - pane->SetRequestForReturnReceipt(FALSE); - } - - /* Check the fields for legitimacy, and run the callback if they're not - ok. */ - if ( mode != MSG_SaveAsDraft && mode != MSG_SaveAsTemplate ) - failure = mime_sanity_check_fields (m_fields->GetFrom(), m_fields->GetReplyTo(), - m_fields->GetTo(), m_fields->GetCc(), - m_fields->GetBcc(), m_fields->GetFcc(), - m_fields->GetNewsgroups(), m_fields->GetFollowupTo(), - m_fields->GetSubject(), m_fields->GetReferences(), - m_fields->GetOrganization(), - m_fields->GetOtherRandomHeaders()); - if (failure) - return failure; - - m_digest_p = digest_p; - m_dont_deliver_p = dont_deliver_p; - m_deliver_mode = mode; - // m_msg_file_name = WH_TempName (xpFileToPost, "nsmail"); - - failure = HackAttachments(attachments, preloaded_attachments); - return failure; -} - - - -/* This is the main driving function of this module. It generates a - document of type message/rfc822, which contains the stuff provided. - The first few arguments are the standard header fields that the - generated document should have. - - `other_random_headers' is a string of additional headers that should - be inserted beyond the standard ones. If provided, it is just tacked - on to the end of the header block, so it should have newlines at the - end of each line, shouldn't have blank lines, multi-line headers - should be properly continued, etc. - - `digest_p' says that most of the documents we are attaching are - themselves messages, and so we should generate a multipart/digest - container instead of multipart/mixed. (It's a minor difference.) - - The full text of the first attachment is provided via `attachment1_type', - `attachment1_body' and `attachment1_body_length'. These may all be 0 - if all attachments are provided externally. - - Subsequent attachments are provided as URLs to load, described in the - MSG_AttachmentData structures. - - If `dont_deliver_p' is false, then we actually deliver the message to the - SMTP and/or NNTP server, and the message_delivery_done_callback will be - invoked with the status. - - If `dont_deliver_p' is true, then we just generate the message, we don't - actually deliver it, and the message_delivery_done_callback will be called - with the name of the generated file. The callback is responsible for both - freeing the file name string, and deleting the file when it is done with - it. If an error occurred, then `status' will be negative and - `error_message' may be an error message to display. If status is non- - negative, then `error_message' contains the file name (this is kind of - a kludge...) - */ -extern "C" void -MSG_StartMessageDelivery (MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachmentData *attachments, - void *relatedPart, - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)) -{ - MSG_SendMimeDeliveryState::StartMessageDelivery(pane, fe_data, fields, - digest_p, dont_deliver_p, - MSG_DeliverNow, /* ####??? */ - attachment1_type, - attachment1_body, attachment1_body_length, - attachments, 0, - (MSG_SendPart *) relatedPart, -#ifdef XP_OS2 -//DSR040297 - Casting away extern "C" -//DSR040297 - Note: this simple little cast switches the function pointers from extern "C" -//to non-extern "C" pointer (aka a C++ function). Don't try to change the static method, I've -//tried it and it only gets uglier. This (for what its worth) is at least only a few casts in -//spots where it makes sense. - (void (*) (MWContext *, void *, int, const char *)) -#endif - message_delivery_done_callback); -} - - -extern "C" void -msg_StartMessageDeliveryWithAttachments (MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode mode, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachedFile - *attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - void *relatedPart, -//#endif - - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)) -{ - MSG_SendMimeDeliveryState::StartMessageDelivery(pane, fe_data, fields, - digest_p, dont_deliver_p, mode, - attachment1_type, attachment1_body, - attachment1_body_length, - 0, attachments, - (MSG_SendPart *) relatedPart, -#ifdef XP_OS2 -//DSR040297 - see comment above about 'Casting away extern "C"' - (void (*) (MWContext *, void *, int, const char *)) -#endif - message_delivery_done_callback); -} - - -extern "C" int -msg_DownloadAttachments (MSG_Pane *pane, - void *fe_data, - const struct MSG_AttachmentData *attachments, - void (*attachments_done_callback) - (MWContext *context, - void *fe_data, - int status, const char *error_message, - struct MSG_AttachedFile *attachments)) -{ - MSG_SendMimeDeliveryState *state = 0; - int failure = 0; - - XP_ASSERT(attachments && attachments[0].url); - /* if (!attachments || !attachments[0].url) - { - failure = -1; - goto FAIL; - } */ /* The only possible error above is out of memory and it is handled - in MSG_CompositionPane::DownloadAttachments() */ - state = new MSG_SendMimeDeliveryState; - - if (! state) - { - failure = MK_OUT_OF_MEMORY; - goto FAIL; - } - state->m_pane = pane; - state->m_fe_data = fe_data; - state->m_attachments_only_p = TRUE; - state->m_attachments_done_callback = -#ifdef XP_OS2 -//DSR040297 - see comment above about 'Casting away extern "C"' - (void(*)(MWContext*,void*,int,const char*,MSG_AttachedFile*)) -#endif - attachments_done_callback; - - failure = state->HackAttachments(attachments, 0); - if (failure >= 0) - return 0; - - FAIL: - XP_ASSERT (failure); - - /* in this case, our NET_GetURL exit routine has already freed - the state */ - if (failure != MK_ATTACHMENT_LOAD_FAILED) - { - char *err_msg = NET_ExplainErrorDetails (failure); - attachments_done_callback (state->GetContext(), fe_data, failure, - err_msg, 0); - if (state) delete state; - - if (err_msg) XP_FREE (err_msg); -#ifdef XP_MAC - // ### mwelch The MacFE wants this error thrown as an exception. - // This is because of the way that error recovery occurs - // inside the compose session object. - if (failure == MK_INTERRUPTED) - failure = userCanceledErr; -#endif - } - return failure; -} - - -void MSG_SendMimeDeliveryState::Clear() -{ - if (m_fields) { - delete m_fields; - m_fields = NULL; - } - if (m_attachment1_type) XP_FREE (m_attachment1_type); - if (m_attachment1_encoding) XP_FREE (m_attachment1_encoding); - if (m_attachment1_body) XP_FREE (m_attachment1_body); - - if (m_attachment1_encoder_data) - { - MimeEncoderDestroy(m_attachment1_encoder_data, TRUE); - m_attachment1_encoder_data = 0; - } - -/* if (m_headers) XP_FREE (m_headers); */ - - if (m_msg_file) - { - XP_FileClose (m_msg_file); - m_msg_file = 0; - XP_ASSERT (m_msg_file_name); - } - - - if (m_imapOutgoingParser) - { - delete m_imapOutgoingParser; - m_imapOutgoingParser = NULL; - } - - if(m_imapLocalMailDB) - { - m_imapLocalMailDB->Close(); - m_imapLocalMailDB = NULL; - XP_FileRemove (m_msg_file_name, xpMailFolderSummary); - } - - if (m_msg_file_name) - { - XP_FileRemove (m_msg_file_name, xpFileToPost); - XP_FREE (m_msg_file_name); - m_msg_file_name = 0; - } - - if (m_attachments) - { - int i; - for (i = 0; i < m_attachment_count; i++) - { - if (m_attachments [i].m_encoder_data) - { - MimeEncoderDestroy(m_attachments [i].m_encoder_data, - TRUE); - m_attachments [i].m_encoder_data = 0; - } - - FREEIF (m_attachments [i].m_url_string); - if (m_attachments [i].m_url) - NET_FreeURLStruct (m_attachments [i].m_url); - FREEIF (m_attachments [i].m_type); - FREEIF (m_attachments [i].m_override_type); - FREEIF (m_attachments [i].m_override_encoding); - FREEIF (m_attachments [i].m_desired_type); - FREEIF (m_attachments [i].m_description); - FREEIF (m_attachments [i].m_x_mac_type); - FREEIF (m_attachments [i].m_x_mac_creator); - FREEIF (m_attachments [i].m_real_name); - FREEIF (m_attachments [i].m_encoding); - if (m_attachments [i].m_file) - XP_FileClose (m_attachments [i].m_file); - if (m_attachments [i].m_file_name) - { - if (!m_pre_snarfed_attachments_p) - XP_FileRemove (m_attachments [i].m_file_name, xpFileToPost); - XP_FREE (m_attachments [i].m_file_name); - } -#ifdef XP_MAC - /* remove the appledoubled intermediate file after we done all. - */ - if (m_attachments [i].m_ap_filename) - { - XP_FileRemove (m_attachments [i].m_ap_filename, xpFileToPost); - XP_FREE (m_attachments [i].m_ap_filename); - } -#endif /* XP_MAC */ - } - delete[] m_attachments; - m_attachment_count = m_attachment_pending_count = 0; - m_attachments = 0; - } -} - - -void -MSG_SendMimeDeliveryState::DeliverMessage () -{ - XP_Bool mail_p = ((m_fields->GetTo() && *m_fields->GetTo()) || - (m_fields->GetCc() && *m_fields->GetCc()) || - (m_fields->GetBcc() && *m_fields->GetBcc())); - XP_Bool news_p = (m_fields->GetNewsgroups() && - *(m_fields->GetNewsgroups()) ? TRUE : FALSE); - - if ( m_deliver_mode != MSG_SaveAsDraft && - m_deliver_mode != MSG_SaveAsTemplate ) - XP_ASSERT(mail_p || news_p); - -#if 0 - /* Figure out how many bytes we're actually going to be writing, total. - */ - m_delivery_bytes = 0; - m_delivery_total_bytes = 0; - - if (m_fcc && *m_fcc) - m_delivery_total_bytes += m_msg_size; - - if (m_queue_for_later_p) - m_delivery_total_bytes += m_msg_size; - else - { - if (mail_p) - m_delivery_total_bytes += m_msg_size; - if (news_p) - m_delivery_total_bytes += m_msg_size; - } -#endif /* 0 */ - - if (m_deliver_mode == MSG_QueueForLater) - { - QueueForLater(); - return; - } - - else if (m_deliver_mode == MSG_SaveAsDraft) - { - SaveAsDraft(); - return; - } - else if (m_deliver_mode == MSG_SaveAsTemplate) - { - SaveAsTemplate(); - return; - } -/* - if (m_fields->GetFcc()) - if (!DoFcc()) - return; -*/ -#ifdef XP_UNIX - { - int status = msg_DeliverMessageExternally(GetContext(), m_msg_file_name); - if (status != 0) - { - if (status < 0) - Fail (status, 0); - else - { - /* The message has now been delivered successfully. */ - MWContext *context = GetContext(); - if (m_message_delivery_done_callback) - m_message_delivery_done_callback (context, - m_fe_data, 0, NULL); - m_message_delivery_done_callback = 0; - - Clear(); - - /* When attaching, even though the context has - active_url_count == 0, XFE_AllConnectionsComplete() **is** - called. However, when not attaching, and not delivering right - away, we don't actually open any URLs, so we need to destroy - the window ourself. Ugh!! - */ - if (m_attachment_count == 0) - MSG_MailCompositionAllConnectionsComplete(MSG_FindPane(context, - MSG_ANYPANE)); - } - return; - } - } -#endif /* XP_UNIX */ - - -#ifdef MAIL_BEFORE_NEWS - if (mail_p) - DeliverFileAsMail (); /* May call ...as_news() next. */ - else if (news_p) - DeliverFileAsNews (); -#else /* !MAIL_BEFORE_NEWS */ - if (news_p) - DeliverFileAsNews (); /* May call ...as_mail() next. */ - else if (mail_p) - DeliverFileAsMail (); -#endif /* !MAIL_BEFORE_NEWS */ - else - abort (); -} - - -#if 0 -void -MSG_SendMimeDeliveryState::DeliveryThermo (int32 increment) -{ - int32 percent; - m_delivery_bytes += increment; - XP_ASSERT(m_delivery_total_bytes > 0); - if (m_delivery_total_bytes <= 0) return; - percent = 100 * (((double) m_delivery_bytes) / - ((double) m_delivery_total_bytes)); - FE_SetProgressBarPercent (GetContext(), percent); -#if 0 - FE_GraphProgress (GetContext(), 0, - m_delivery_bytes, 0, - m_delivery_total_bytes); -#endif /* 0 */ -} -#endif /* 0 */ - - -static void mime_deliver_as_mail_exit (URL_Struct *, int status, MWContext *); -static void mime_deliver_as_news_exit (URL_Struct *url, int status, - MWContext *); - -void -MSG_SendMimeDeliveryState::DeliverFileAsMail () -{ - char *buf, *buf2; - URL_Struct *url; - - FE_Progress (GetContext(), XP_GetString(MK_MSG_DELIV_MAIL)); - - buf = (char *) XP_ALLOC ((m_fields->GetTo() ? XP_STRLEN (m_fields->GetTo()) + 10 : 0) + - (m_fields->GetCc() ? XP_STRLEN (m_fields->GetCc()) + 10 : 0) + - (m_fields->GetBcc() ? XP_STRLEN (m_fields->GetBcc()) + 10 : 0) + - 10); - if (! buf) - { - Fail (MK_OUT_OF_MEMORY, 0); - return; - } - XP_STRCPY (buf, "mailto:"); - buf2 = buf + XP_STRLEN (buf); - if (m_fields->GetTo()) - { - XP_STRCAT (buf2, m_fields->GetTo()); - } - if (m_fields->GetCc()) - { - if (*buf2) XP_STRCAT (buf2, ","); - XP_STRCAT (buf2, m_fields->GetCc()); - } - if (m_fields->GetBcc()) - { - if (*buf2) XP_STRCAT (buf2, ","); - XP_STRCAT (buf2, m_fields->GetBcc()); - } - - url = NET_CreateURLStruct (buf, NET_DONT_RELOAD); - XP_FREE (buf); - if (! url) - { - Fail (MK_OUT_OF_MEMORY, 0); - return; - } - - /* put the filename of the message into the post data field and set a flag - in the URL struct to specify that it is a file - */ - url->post_data = XP_STRDUP(m_msg_file_name); - url->post_data_size = XP_STRLEN(url->post_data); - url->post_data_is_file = TRUE; - url->method = URL_POST_METHOD; - url->fe_data = this; - url->internal_url = TRUE; - - url->msg_pane = m_pane; - - /* We can ignore the return value of NET_GetURL() because we have - handled the error in mime_deliver_as_mail_exit(). */ - - MSG_UrlQueue::AddUrlToPane(url, mime_deliver_as_mail_exit, m_pane, TRUE); -} - - -void -MSG_SendMimeDeliveryState::DeliverFileAsNews () -{ - URL_Struct *url = NET_CreateURLStruct (m_fields->GetNewspostUrl(), NET_DONT_RELOAD); - if (! url) - { - Fail (MK_OUT_OF_MEMORY, 0); - return; - } - - FE_Progress (GetContext(), XP_GetString(MK_MSG_DELIV_NEWS)); - - /* put the filename of the message into the post data field and set a flag - in the URL struct to specify that it is a file. - */ - - url->post_data = XP_STRDUP(m_msg_file_name); - url->post_data_size = XP_STRLEN(url->post_data); - url->post_data_is_file = TRUE; - url->method = URL_POST_METHOD; - - url->fe_data = this; - url->internal_url = TRUE; - - url->msg_pane = m_pane; - - /* We can ignore the return value of NET_GetURL() because we have - handled the error in mime_deliver_as_news_exit(). */ - - MSG_UrlQueue::AddUrlToPane (url, mime_deliver_as_news_exit, m_pane, TRUE); -} - -static void -mime_deliver_as_mail_exit (URL_Struct *url, int status, - MWContext * /*context*/) -{ - MSG_SendMimeDeliveryState *state = - (MSG_SendMimeDeliveryState *) url->fe_data; - - state->DeliverAsMailExit(url, status); -} - -void -MSG_SendMimeDeliveryState::DeliverAsMailExit(URL_Struct *url, int status) -{ - char *error_msg = 0; - - url->fe_data = 0; - if (status < 0 && url->error_msg) - { - error_msg = url->error_msg; - url->error_msg = 0; - } -// NET_FreeURLStruct (url); - - if (status < 0) - { - Fail (status, error_msg); - } -#ifdef MAIL_BEFORE_NEWS - else if (m_newsgroups) - { - /* If we're sending this mail message to news as well, start it now. - Completion and further errors will be handled there. - */ - DeliverFileAsNews (); - } -#endif /* MAIL_BEFORE_NEWS */ - else - { - /* The message has now been sent successfully! */ - if (m_fields->GetFcc()) - if (!DoFcc()) - return; - - FE_Progress (GetContext(), XP_GetString(MK_MSG_DELIV_MAIL_DONE)); - if (m_message_delivery_done_callback) - m_message_delivery_done_callback (GetContext(), - m_fe_data, 0, NULL); - m_message_delivery_done_callback = 0; - Clear(); - delete this; - } -} - -static void -mime_deliver_as_news_exit (URL_Struct *url, int status, - MWContext * /*context*/) -{ - MSG_SendMimeDeliveryState *state = - (MSG_SendMimeDeliveryState *) url->fe_data; - state->DeliverAsNewsExit(url, status); -} - -void -MSG_SendMimeDeliveryState::DeliverAsNewsExit(URL_Struct *url, int status) -{ - char *error_msg = 0; - - url->fe_data = 0; - if (status < 0 && url->error_msg) - { - error_msg = url->error_msg; - url->error_msg = 0; - } -// NET_FreeURLStruct (url); - - if (status < 0) - { - Fail (status, error_msg); - } -#ifndef MAIL_BEFORE_NEWS - else if ((m_fields->GetTo() && *m_fields->GetTo()) || - (m_fields->GetCc() && *m_fields->GetCc()) || - (m_fields->GetBcc() && *m_fields->GetBcc())) - { - /* If we're sending this news message to mail as well, start it now. - Completion and further errors will be handled there. - */ - DeliverFileAsMail (); - } -#endif /* !MAIL_BEFORE_NEWS */ - else - { - /* The message has now been sent successfully! */ - if (m_fields->GetFcc()) - if (!DoFcc()) - return; - - FE_Progress (GetContext(), XP_GetString(MK_MSG_DELIV_NEWS_DONE)); - if (m_message_delivery_done_callback) - m_message_delivery_done_callback (GetContext(), - m_fe_data, 0, NULL); - m_message_delivery_done_callback = 0; - Clear(); - delete this; - } -} - - -#ifdef XP_OS2 -XP_BEGIN_PROTOS -extern int32 msg_do_fcc_handle_line(char* line, uint32 length, void* closure); -XP_END_PROTOS -#else -static int32 msg_do_fcc_handle_line(char* line, uint32 length, void* closure); -#endif - -static int -mime_do_fcc_1 (MSG_Pane *pane, - const char *input_file_name, XP_FileType input_file_type, - const char *output_name, XP_FileType output_file_type, - MSG_Deliver_Mode mode, - const char *bcc_header, - const char *fcc_header, - const char *news_url) -{ - int status = 0; - XP_File in = 0; - XP_File out = 0; - XP_Bool file_existed_p; - XP_StatStruct st; - char *ibuffer = 0; - int ibuffer_size = TEN_K; - char *obuffer = 0; - int32 obuffer_size = 0, obuffer_fp = 0; - int32 n; - XP_Bool summaryWasValid = FALSE; - XP_Bool summaryIsValid = FALSE; - XP_Bool mark_as_read = TRUE; - ParseOutgoingMessage *outgoingParser = NULL; - MailDB *mail_db = NULL; - MsgERR err = eSUCCESS; - char *envelope; - char *output_file_name = NET_ParseURL(output_name, GET_PATH_PART); - - if (!output_file_name || !*output_file_name) // must be real file path - StrAllocCopy(output_file_name, output_name); - - if (mode == MSG_QueueForLater) - FE_Progress (pane->GetContext(), XP_GetString(MK_MSG_QUEUEING)); - else if ( mode == MSG_SaveAsDraft ) - FE_Progress (pane->GetContext(), XP_GetString(MK_MSG_SAVING_AS_DRAFT)); - else if ( mode == MSG_SaveAsTemplate ) - FE_Progress (pane->GetContext(), XP_GetString(MK_MSG_SAVING_AS_TEMPLATE)); - else - FE_Progress (pane->GetContext(), XP_GetString(MK_MSG_WRITING_TO_FCC)); - - - ibuffer = NULL; - while (!ibuffer && (ibuffer_size >= 1024)) - { - ibuffer = (char *) XP_ALLOC (ibuffer_size); - if (!ibuffer) - ibuffer_size /= 2; - } - if (!ibuffer) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - file_existed_p = !XP_Stat (output_file_name, &st, output_file_type); - - if (file_existed_p) - { - summaryWasValid = msg_IsSummaryValid(output_file_name, &st); - if (!msg_ConfirmMailFile (pane->GetContext(), output_file_name)) - { - XP_FREEIF(output_file_name); - return MK_INTERRUPTED; /* #### hack. It turns out we already - were testing for this result code and - silently canceling the send if we ever got - it (because it meant that the user hit the - Stop button). Returning it here has a - similar effect -- the user was asked to - confirm writing to the FCC folder, and he - hit the Cancel button, so we now quietly - do nothing. */ - - } - } - else - { - pane->GetMaster()->FindMailFolder(output_file_name, - TRUE /*createIfMissing*/); - - if (-1 == XP_Stat (output_file_name, &st, output_file_type)) - FE_Alert (pane->GetContext(), XP_GetString(MK_MSG_CANT_CREATE_FOLDER)); - } - - - out = XP_FileOpen (output_file_name, output_file_type, XP_FILE_APPEND_BIN); - if (!out) - { - /* #### include file name in error message! */ - status = MK_MSG_COULDNT_OPEN_FCC_FILE; - goto FAIL; - } - - in = XP_FileOpen (input_file_name, input_file_type, XP_FILE_READ_BIN); - if (!in) - { - status = MK_UNABLE_TO_OPEN_FILE; /* rb -1; */ /* How did this happen? */ - goto FAIL; - } - - - // set up database and outbound message parser to keep db up to date. - outgoingParser = new ParseOutgoingMessage; - err = MailDB::Open(output_file_name, FALSE, &mail_db); - - if (err != eSUCCESS) - mail_db = NULL; - - if (!outgoingParser) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - outgoingParser->SetOutFile(out); - outgoingParser->SetMailDB(mail_db); - outgoingParser->SetWriteToOutFile(FALSE); - - - /* Write a BSD mailbox envelope line to the file. - If the file existed, preceed it by a linebreak: this file format wants a - *blank* line before all "From " lines except the first. This assumes - that the previous message in the file was properly closed, that is, that - the last line in the file ended with a linebreak. - */ - XP_FileSeek(out, 0, SEEK_END); - - if (file_existed_p && st.st_size > 0) - { - if (XP_FileWrite (LINEBREAK, LINEBREAK_LEN, out) < LINEBREAK_LEN) - { - status = MK_MIME_ERROR_WRITING_FILE; - goto FAIL; - } - } - - outgoingParser->Init(XP_FileTell(out)); - envelope = msg_GetDummyEnvelope(); - - if (msg_do_fcc_handle_line (envelope, XP_STRLEN (envelope), outgoingParser) - < 0) - { - status = MK_MIME_ERROR_WRITING_FILE; - goto FAIL; - } - - /* Write out an X-Mozilla-Status header. - - This is required for the queue file, so that we can overwrite it once - the messages have been delivered, and so that the MSG_FLAG_QUEUED bit - is set. - - For FCC files, we don't necessarily need one, but we might as well put - one in so that it's marked as read already. - */ - if (mode == MSG_QueueForLater || - mode == MSG_SaveAsDraft || - mode == MSG_SaveAsTemplate || - mark_as_read) - { - char *buf = 0; - uint16 flags = 0; - - mark_as_read = TRUE; - flags |= MSG_FLAG_READ; - if (mode == MSG_QueueForLater ) - flags |= MSG_FLAG_QUEUED; - buf = PR_smprintf(X_MOZILLA_STATUS_FORMAT LINEBREAK, flags); - if (buf) - { - status = msg_do_fcc_handle_line(buf, XP_STRLEN(buf), outgoingParser); - XP_FREEIF(buf); - if (status < 0) - goto FAIL; - } - - uint32 flags2 = 0; - if (mode == MSG_SaveAsTemplate) - flags2 |= MSG_FLAG_TEMPLATE; - buf = PR_smprintf(X_MOZILLA_STATUS2_FORMAT LINEBREAK, flags2); - if (buf) - { - status = msg_do_fcc_handle_line(buf, XP_STRLEN(buf), outgoingParser); - XP_FREEIF(buf); - if (status < 0) - goto FAIL; - } - } - - - /* Write out the FCC and BCC headers. - When writing to the Queue file, we *must* write the FCC and BCC - headers, or else that information would be lost. Because, when actually - delivering the message (with "deliver now") we do FCC/BCC right away; - but when queueing for later delivery, we do FCC/BCC at delivery-time. - - The question remains of whether FCC and BCC should be written into normal - BCC folders (like the Sent Mail folder.) - - For FCC, there seems no point to do that; it's not information that one - would want to refer back to. - - For BCC, the question isn't as clear. On the one hand, if I send someone - a BCC'ed copy of the message, and save a copy of it for myself (with FCC) - I might want to be able to look at that message later and see the list of - people to whom I had BCC'ed it. - - On the other hand, the contents of the BCC header is sensitive - information, and should perhaps not be stored at all. - - Thus the consultation of the #define SAVE_BCC_IN_FCC_FILE. - - (Note that, if there is a BCC header present in a message in some random - folder, and that message is forwarded to someone, then the attachment - code will strip out the BCC header before forwarding it.) - */ - if ((mode == MSG_QueueForLater || - mode == MSG_SaveAsDraft || - mode == MSG_SaveAsTemplate) && - fcc_header && *fcc_header) - { - int32 L = XP_STRLEN(fcc_header) + 20; - char *buf = (char *) XP_ALLOC (L); - if (!buf) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - PR_snprintf(buf, L-1, "FCC: %s" LINEBREAK, fcc_header); - status = msg_do_fcc_handle_line(buf, XP_STRLEN(buf), outgoingParser); - if (status < 0) - goto FAIL; - } - if (bcc_header && *bcc_header -#ifndef SAVE_BCC_IN_FCC_FILE - && (mode == MSG_QueueForLater || - mode == MSG_SaveAsDraft || - mode == MSG_SaveAsTemplate) -#endif - ) - { - int32 L = XP_STRLEN(bcc_header) + 20; - char *buf = (char *) XP_ALLOC (L); - if (!buf) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - PR_snprintf(buf, L-1, "BCC: %s" LINEBREAK, bcc_header); - status = msg_do_fcc_handle_line(buf, XP_STRLEN(buf), outgoingParser); - if (status < 0) - goto FAIL; - } - - - /* Write out the X-Mozilla-News-Host header. - This is done only when writing to the queue file, not the FCC file. - We need this to complement the "Newsgroups" header for the case of - queueing a message for a non-default news host. - - Convert a URL like "snews://host:123/" to the form "host:123/secure" - or "news://user@host:222" to simply "host:222". - */ - if ((mode == MSG_QueueForLater || - mode == MSG_SaveAsDraft || - mode == MSG_SaveAsTemplate) && news_url && *news_url) - { - XP_Bool secure_p = (news_url[0] == 's' || news_url[0] == 'S'); - char *orig_hap = NET_ParseURL (news_url, GET_HOST_PART); - char *host_and_port = orig_hap; - if (host_and_port) - { - /* There may be authinfo at the front of the host - it could be of - the form "user:password@host:port", so take off everything before - the first at-sign. We don't want to store authinfo in the queue - folder, I guess, but would want it to be re-prompted-for at - delivery-time. - */ - char *at = XP_STRCHR (host_and_port, '@'); - if (at) - host_and_port = at + 1; - } - - if ((host_and_port && *host_and_port) || !secure_p) - { - char *line = PR_smprintf(X_MOZILLA_NEWSHOST ": %s%s" LINEBREAK, - host_and_port ? host_and_port : "", - secure_p ? "/secure" : ""); - FREEIF(orig_hap); - orig_hap = 0; - if (!line) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - status = msg_do_fcc_handle_line(line, XP_STRLEN(line), - outgoingParser); - FREEIF(line); - - if (status < 0) - goto FAIL; - } - FREEIF(orig_hap); - orig_hap = 0; - } - - - /* Read from the message file, and write to the FCC or Queue file. - There are two tricky parts: the first is that the message file - uses CRLF, and the FCC file should use LINEBREAK. The second - is that the message file may have lines beginning with "From " - but the FCC file must have those lines mangled. - - It's unfortunate that we end up writing the FCC file a line - at a time, but it's the easiest way... - */ - - while (1) - { - n = XP_FileRead (ibuffer, ibuffer_size, in); - if (n == 0) - break; - if (n < 0) /* read failed (not eof) */ - { - status = n; - goto FAIL; - } - - n = msg_LineBuffer (ibuffer, n, - &obuffer, (uint32 *)&obuffer_size, - (uint32*)&obuffer_fp, - TRUE, msg_do_fcc_handle_line, - outgoingParser); - if (n < 0) /* write failed */ - { - status = n; - goto FAIL; - } - } - - /* If there's still stuff in the buffer (meaning the last line had no - newline) push it out. */ - if (obuffer_fp > 0) - msg_do_fcc_handle_line (obuffer, obuffer_fp, outgoingParser); - - /* Terminate with a final newline. */ - if (XP_FileWrite (LINEBREAK, LINEBREAK_LEN, out) < LINEBREAK_LEN) - { - status = MK_MIME_ERROR_WRITING_FILE; - } - else - outgoingParser->AdvanceOutPosition(LINEBREAK_LEN); - - if (mail_db != NULL && outgoingParser != NULL && - outgoingParser->m_newMsgHdr != NULL) - { - - outgoingParser->FinishHeader(); - mail_db->AddHdrToDB(outgoingParser->m_newMsgHdr, NULL, TRUE); - if (summaryWasValid) - summaryIsValid = TRUE; - } - - FAIL: - - if (ibuffer) - XP_FREE (ibuffer); - if (obuffer && obuffer != ibuffer) - XP_FREE (obuffer); - - if (in) - XP_FileClose (in); - - if (out) - { - if (status >= 0) - { - XP_FileClose (out); - if (summaryIsValid) - msg_SetSummaryValid(output_file_name, 0, 0); - } - else if (! file_existed_p) - { - XP_FileClose (out); - XP_FileRemove (output_file_name, output_file_type); - } - else - { - XP_FileClose (out); - XP_FileTruncate (output_file_name, output_file_type, st.st_size); /* restore original size */ - } - } - - if (mail_db != NULL && status >= 0) { - if ( mode == MSG_SaveAsDraft ) { - MSG_PostDeliveryActionInfo *actionInfo = - pane->GetPostDeliveryActionInfo(); - if (actionInfo) { - if (actionInfo->m_flags & MSG_FLAG_EXPUNGED) { - XP_ASSERT(actionInfo->m_msgKeyArray.GetSize()== 1); - mail_db->DeleteMessage(actionInfo->m_msgKeyArray.GetAt(0)); - actionInfo->m_msgKeyArray.RemoveAt(0); - } - } - else { - actionInfo = new MSG_PostDeliveryActionInfo((MSG_FolderInfo*) - pane->GetMaster()-> - FindMailFolder(output_file_name, TRUE)); - if (actionInfo) { - actionInfo->m_flags |= MSG_FLAG_EXPUNGED; - pane->SetPostDeliveryActionInfo(actionInfo); - } - } - if (outgoingParser->m_newMsgHdr && actionInfo) - actionInfo->m_msgKeyArray.Add(outgoingParser->m_newMsgHdr->GetMessageKey()); - } - mail_db->Close(); - } - - FREEIF(output_file_name); - - delete outgoingParser; - if (status < 0) - { - /* Fail, and terminate. */ - return status; - } - else - { - /* Otherwise, continue on to _deliver_as_mail or _deliver_as_news - or mime_queue_for_later. */ - return 0; - } -} - -#ifdef XP_OS2 -extern int32 -#else -static int32 -#endif -msg_do_fcc_handle_line(char* line, uint32 length, void* closure) -{ - ParseOutgoingMessage *outgoingParser = (ParseOutgoingMessage *) closure; - int32 err = 0; - - XP_File out = outgoingParser->GetOutFile(); - - // if we have a DB, feed the line to the parser - if (outgoingParser->GetMailDB() != NULL) - { - if (outgoingParser->m_bytes_written == 0) - err = outgoingParser->StartNewEnvelope(line, length); - else - err = outgoingParser->ParseFolderLine(line, length); - if (err < 0) - return err; - } - -#ifdef MANGLE_INTERNAL_ENVELOPE_LINES - /* Note: it is correct to mangle all lines beginning with "From ", - not just those that look like parsable message delimiters. - Other software expects this. */ - // If this really is the envelope, don't escape it. m_bytes_written will - // be 0 in that case, because envelope is always first. - if (outgoingParser->m_bytes_written > 0 && length >= 5 && - line[0] == 'F' && !XP_STRNCMP(line, "From ", 5)) - { - if (XP_FileWrite (">", 1, out) < 1) - return MK_MIME_ERROR_WRITING_FILE; - outgoingParser->AdvanceOutPosition(1); - } -#endif /* MANGLE_INTERNAL_ENVELOPE_LINES */ - - /* #### if XP_FileWrite is a performance problem, we can put in a - call to msg_ReBuffer() here... */ - if (XP_FileWrite (line, length, out) < length) - return MK_MIME_ERROR_WRITING_FILE; - outgoingParser->m_bytes_written += length; - return 0; -} - - -extern "C" int -msg_DoFCC (MSG_Pane *pane, - const char *input_file, XP_FileType input_file_type, - const char *output_file, XP_FileType output_file_type, - const char *bcc_header_value, - const char *fcc_header_value) -{ - XP_ASSERT(pane && - input_file && *input_file && - output_file && *output_file); - if (! (pane && - input_file && *input_file && - output_file && *output_file)) - return MK_MIME_ERROR_WRITING_FILE; - return mime_do_fcc_1 (pane, - input_file, input_file_type, - output_file, output_file_type, - MSG_DeliverNow, bcc_header_value, - fcc_header_value, - 0); -} - - -/* Returns false if an error happened. */ -XP_Bool -MSG_SendMimeDeliveryState::DoFcc() -{ - if (!m_fields->GetFcc() || !*m_fields->GetFcc()) - return TRUE; - else if (NET_URL_Type(m_fields->GetFcc()) == IMAP_TYPE_URL && - m_pane->GetMaster()->GetPrefs()->GetMailServerIsIMAP4()) - { - SendToImapMagicFolder(MSG_FOLDER_FLAG_SENTMAIL); - return FALSE; - } - else - { - int status = msg_DoFCC (m_pane, - m_msg_file_name, xpFileToPost, - m_fields->GetFcc(), xpMailFolder, - m_fields->GetBcc(), - m_fields->GetFcc()); - if (status < 0) - Fail (status, 0); - return (status >= 0); - } -} - -char * -MSG_SendMimeDeliveryState::GetOnlineFolderName(uint32 flag, const char - **pDefaultName) -{ - char *onlineFolderName = NULL; - - switch (flag) - { - case MSG_FOLDER_FLAG_DRAFTS: - if (pDefaultName) *pDefaultName = DRAFTS_FOLDER_NAME; - PREF_CopyCharPref ("mail.default_drafts", &onlineFolderName); - break; - case MSG_FOLDER_FLAG_TEMPLATES: - if (pDefaultName) *pDefaultName = TEMPLATES_FOLDER_NAME; - PREF_CopyCharPref("mail.default_templates", &onlineFolderName); - break; - case MSG_FOLDER_FLAG_SENTMAIL: - if (pDefaultName) *pDefaultName = SENT_FOLDER_NAME; - onlineFolderName = XP_STRDUP(m_fields->GetFcc()); - break; - default: - XP_ASSERT(0); - break; - } - return onlineFolderName; -} - -void -MSG_SendMimeDeliveryState::SaveAsOfflineOp() -{ - XP_ASSERT (m_imapOutgoingParser && - m_imapLocalMailDB && m_imapFolderInfo); - if (!m_imapOutgoingParser || !m_imapLocalMailDB || !m_imapFolderInfo) - { - Fail(MK_IMAP_UNABLE_TO_SAVE_MESSAGE, 0); - return; - } - - MsgERR err = eSUCCESS; - MailDB *mailDB = NULL; - MSG_IMAPFolderInfoMail *mailFolderInfo = - m_imapFolderInfo->GetIMAPFolderInfoMail(); - XP_ASSERT (mailFolderInfo); - err = MailDB::Open (mailFolderInfo->GetPathname(), FALSE, &mailDB); - if (err == eSUCCESS) - { - MessageKey fakeId = mailDB->GetUnusedFakeId(); - MailMessageHdr *mailMsgHdr = NULL, *newMailMsgHdr = NULL; - - if (m_deliver_mode == MSG_SaveAsDraft) - { - // Do we have an actionInfo? - MSG_PostDeliveryActionInfo *actionInfo = - m_pane->GetPostDeliveryActionInfo(); - if (actionInfo) - { - DBOfflineImapOperation *op = NULL; - MessageKey msgKey = actionInfo->m_msgKeyArray.GetAt(0); - if ((int32) msgKey >= 0) // real message key - { - // we start with an existing draft and save it while offline - // delete the old message and create a new message header - op = mailDB->GetOfflineOpForKey(msgKey, TRUE); - if (op) - { - op->SetImapFlagOperation(op->GetNewMessageFlags() | - kImapMsgDeletedFlag); - delete op; - } - actionInfo->m_msgKeyArray.RemoveAt(0); - actionInfo->m_msgKeyArray.Add(fakeId); - mailDB->DeleteMessage(msgKey); - } - else // faked UID; reuse it - { - fakeId = actionInfo->m_msgKeyArray.GetAt(0); - mailDB->DeleteOfflineOp(fakeId); - mailDB->DeleteMessage(fakeId); - } - } - else - { - // this is a new draft create a new actionInfo and a message - // header - actionInfo = new MSG_PostDeliveryActionInfo(m_imapFolderInfo); - actionInfo->m_flags |= MSG_FLAG_EXPUNGED; - actionInfo->m_msgKeyArray.Add(fakeId); - m_pane->SetPostDeliveryActionInfo(actionInfo); - } - } - newMailMsgHdr = new MailMessageHdr; - - mailMsgHdr = m_imapLocalMailDB->GetMailHdrForKey(0); - if (mailMsgHdr) - { - if (newMailMsgHdr) - { - XP_File fileId = XP_FileOpen (m_msg_file_name, xpFileToPost, - XP_FILE_READ_BIN); - int iSize = 10240; - char *ibuffer = NULL; - - while (!ibuffer && (iSize >= 512)) - { - ibuffer = (char *) XP_ALLOC(iSize); - if (!ibuffer) - iSize /= 2; - } - - if (fileId && ibuffer) - { - int32 numRead = 0; - newMailMsgHdr->CopyFromMsgHdr(mailMsgHdr, - m_imapLocalMailDB->GetDB(), - mailDB->GetDB()); - - newMailMsgHdr->SetMessageKey(fakeId); - err = mailDB->AddHdrToDB(newMailMsgHdr, NULL, TRUE); - - // now write the offline message - numRead = XP_FileRead(ibuffer, iSize, fileId); - while(numRead > 0) - { - newMailMsgHdr->AddToOfflineMessage(ibuffer, numRead, - mailDB->GetDB()); - numRead = XP_FileRead(ibuffer, iSize, fileId); - } - // now add the offline op to the database - DBOfflineImapOperation *op = - mailDB->GetOfflineOpForKey(fakeId, TRUE); - if (op) - { - op->SetAppendMsgOperation(mailFolderInfo->GetOnlineName(), - m_deliver_mode == - MSG_SaveAsDraft ? - kAppendDraft : - kAppendTemplate); - delete op; - /* The message has now been queued successfully. */ - if (m_message_delivery_done_callback) - m_message_delivery_done_callback (GetContext(), - m_fe_data, 0, NULL); - m_message_delivery_done_callback = 0; - - // Clear() clears the Fcc path - Clear(); - } - else - { - mailDB->RemoveHeaderFromDB (newMailMsgHdr); - Fail(MK_IMAP_UNABLE_TO_SAVE_MESSAGE, 0); - } - } - else - { - Fail(MK_IMAP_UNABLE_TO_SAVE_MESSAGE, 0); - } - if (fileId) - XP_FileClose(fileId); - XP_FREEIF(ibuffer); - delete newMailMsgHdr; - } - else - { - Fail(MK_IMAP_UNABLE_TO_SAVE_MESSAGE, 0); - } - delete mailMsgHdr; - } - else - { - Fail(MK_IMAP_UNABLE_TO_SAVE_MESSAGE, 0); - } - } - else - { - Fail(MK_IMAP_UNABLE_TO_SAVE_MESSAGE, 0); - } - if (mailDB) - mailDB->Close(); -} - -void -MSG_SendMimeDeliveryState::ImapAppendAddBccHeadersIfNeeded(URL_Struct *url) -{ - XP_ASSERT(url); - const char *bcc_headers = m_fields->GetBcc(); - char *post_data = NULL; - if (bcc_headers && *bcc_headers) - { - post_data = WH_TempName(xpFileToPost, "nsmail"); - if (post_data) - { - XP_File dstFile = XP_FileOpen(post_data, xpFileToPost, XP_FILE_WRITE_BIN); - if (dstFile) - { - XP_File srcFile = XP_FileOpen(m_msg_file_name, xpFileToPost, - XP_FILE_READ_BIN); - if (srcFile) - { - char *tmpBuffer = NULL; - int bSize = TEN_K; - - while (!tmpBuffer && (bSize >= 512)) - { - tmpBuffer = (char *)XP_ALLOC(bSize); - if (!tmpBuffer) - bSize /= 2; - } - int bytesRead = 0; - if (tmpBuffer) - { - XP_FileWrite("Bcc: ", 5, dstFile); - XP_FileWrite(bcc_headers, XP_STRLEN(bcc_headers), - dstFile); - XP_FileWrite(CRLF, XP_STRLEN(CRLF), dstFile); - bytesRead = XP_FileRead(tmpBuffer, bSize, srcFile); - while (bytesRead > 0) - { - XP_FileWrite(tmpBuffer, bytesRead, dstFile); - bytesRead = XP_FileRead(tmpBuffer, bSize, - srcFile); - } - XP_FREE(tmpBuffer); - } - XP_FileClose(srcFile); - } - XP_FileClose(dstFile); - } - } - } - else - { - post_data = XP_STRDUP(m_msg_file_name); - } - - if (post_data) - { - url->post_data = post_data; - url->post_data_size = XP_STRLEN(post_data); - url->post_data_is_file = TRUE; - url->method = URL_POST_METHOD; - url->fe_data = this; - url->internal_url = TRUE; - url->msg_pane = m_pane; - m_pane->GetContext()->imapURLPane = m_pane; - - MSG_UrlQueue::AddUrlToPane - (url, MSG_SendMimeDeliveryState::PostSendToImapMagicFolder, m_pane, TRUE); - - } - else - { - NET_FreeURLStruct(url); - } -} - -/* Send the message to the magic folder, and runs the completion/failure - callback. - */ -void -MSG_SendMimeDeliveryState::SendToImapMagicFolder ( uint32 flag ) -{ - char *onlineFolderName = NULL; - const char *defaultName = ""; - char *name = NULL; - char *host = NULL; - char *owner = NULL; - URL_Struct* url = NULL; - char* buf = NULL; - - if (!m_imapFolderInfo) - { - XP_ASSERT (m_pane); - XP_ASSERT (m_pane->GetMaster()->GetPrefs()->GetMailServerIsIMAP4()); - - onlineFolderName = GetOnlineFolderName(flag, &defaultName); - - if (onlineFolderName && NET_URL_Type(onlineFolderName) == IMAP_TYPE_URL) - { - host = NET_ParseURL(onlineFolderName, GET_HOST_PART); - name = NET_ParseURL(onlineFolderName, GET_PATH_PART); - owner = NET_ParseURL(onlineFolderName, GET_USERNAME_PART); - if (!name || !*name) - { - XP_FREEIF (name); // in case of allocated empty string - name = PR_smprintf("/%s", defaultName); - } - if (!owner || !*owner) - { - MSG_IMAPHost *imapHost = m_pane->GetMaster()->GetIMAPHost(host); - if (imapHost && imapHost->GetDefaultNamespacePrefixOfType(kPersonalNamespace)) - StrAllocCopy(owner, imapHost->GetUserName()); - } - } - - if (name && *name && host && *host) - m_imapFolderInfo = m_pane->GetMaster()->FindImapMailFolder(host, - name+1, - owner, - FALSE); - } - - if (m_imapFolderInfo) - { - if (NET_IsOffline()) - { - if (flag == MSG_FOLDER_FLAG_DRAFTS || flag == MSG_FOLDER_FLAG_TEMPLATES) - SaveAsOfflineOp(); - else - XP_ASSERT(0); // shouldn't be here - } - else - { - buf = CreateImapAppendMessageFromFileUrl( m_imapFolderInfo->GetHostName(), - m_imapFolderInfo->GetOnlineName(), - m_imapFolderInfo->GetOnlineHierarchySeparator(), - m_deliver_mode == MSG_SaveAsDraft); - if (buf) - { - url = NET_CreateURLStruct(buf, NET_NORMAL_RELOAD); - if (url) - { - ImapAppendAddBccHeadersIfNeeded(url); - } - XP_FREEIF(buf); - } - } - } - else if (host && name && *host && *name && !NET_IsOffline()) - { - if (m_pane->IMAPListMailboxExist()) - { - m_pane->SetIMAPListMailboxExist(FALSE); - buf = CreateImapAppendMessageFromFileUrl(host, - name+1, - kOnlineHierarchySeparatorUnknown, - m_deliver_mode == MSG_SaveAsDraft); - if (buf) - { - url = NET_CreateURLStruct(buf, NET_NORMAL_RELOAD); - if (url) - { - ImapAppendAddBccHeadersIfNeeded(url); - } - XP_FREEIF(buf); - } - } - else - { - buf = CreateImapListUrl(host, - name+1, kOnlineHierarchySeparatorUnknown); - if (buf) - { - url = NET_CreateURLStruct(buf, NET_NORMAL_RELOAD); - if (url) - { - url->fe_data = this; - url->internal_url = TRUE; - url->msg_pane = m_pane; - GetContext()->imapURLPane = m_pane; - m_pane->SetIMAPListInProgress(TRUE); - - MSG_UrlQueue::AddUrlToPane - (url, MSG_SendMimeDeliveryState::PostListImapMailboxFolder, m_pane, TRUE); - - } - XP_FREEIF(buf); - } - } - } - else - { - switch (m_deliver_mode) - { - case MSG_SaveAsDraft: - FE_Alert(GetContext(),XP_GetString(MK_MSG_UNABLE_TO_SAVE_DRAFT)); - break; - case MSG_SaveAsTemplate: - FE_Alert(GetContext(), XP_GetString(MK_MSG_UNABLE_TO_SAVE_TEMPLATE)); - break; - case MSG_DeliverNow: - default: - FE_Alert(GetContext(), XP_GetString(MK_MSG_COULDNT_OPEN_FCC_FILE)); - break; - } - Fail(MK_IMAP_UNABLE_TO_SAVE_MESSAGE, 0); /* -1 rb */ - } - - XP_FREEIF(host); - XP_FREEIF(name); - XP_FREEIF(owner); - XP_FREEIF(onlineFolderName); -} - - -void -MSG_SendMimeDeliveryState::PostCreateImapMagicFolder ( URL_Struct *url, - int status, - MWContext * context) -{ - MSG_SendMimeDeliveryState *state = - (MSG_SendMimeDeliveryState*) url->fe_data; - XP_ASSERT(state); - - if (status < 0) - { - state->Fail (status, 0); - } - else - { - MSG_Master::PostCreateImapFolderUrlExitFunc (url, status, context); - char *host = NET_ParseURL(url->address, GET_HOST_PART); - char *name = NET_ParseURL(url->address, GET_PATH_PART); - char *owner = NET_ParseURL(url->address, GET_USERNAME_PART); - - state->m_imapFolderInfo = - state->m_pane->GetMaster()->FindImapMailFolder(host, name+1, - owner, FALSE); - XP_ASSERT(state->m_imapFolderInfo); - - if (state->m_imapFolderInfo) - { - if (state->m_deliver_mode == MSG_SaveAsDraft) - { - state->m_imapFolderInfo->SetFlag(MSG_FOLDER_FLAG_DRAFTS); - state->SendToImapMagicFolder(MSG_FOLDER_FLAG_DRAFTS); - } - else if (state->m_deliver_mode == MSG_DeliverNow) - { - state->m_imapFolderInfo->SetFlag(MSG_FOLDER_FLAG_SENTMAIL); - state->SendToImapMagicFolder(MSG_FOLDER_FLAG_SENTMAIL); - } - else if (state->m_deliver_mode == MSG_SaveAsTemplate) - { - state->m_imapFolderInfo->SetFlag(MSG_FOLDER_FLAG_TEMPLATES); - state->SendToImapMagicFolder(MSG_FOLDER_FLAG_TEMPLATES); - } - else - XP_ASSERT(FALSE); - } - else - { - state->Fail(MK_IMAP_NO_ONLINE_FOLDER, 0); /* -1 rb */ - } - XP_FREEIF(host); - XP_FREEIF(name); - XP_FREEIF(owner); - } - NET_FreeURLStruct(url); -} - - -void -MSG_SendMimeDeliveryState::PostListImapMailboxFolder ( URL_Struct *url, - int status, - MWContext *context) -{ - MSG_SendMimeDeliveryState *state = - (MSG_SendMimeDeliveryState*) url->fe_data; - XP_ASSERT(state); - const char *defaultName = ""; - - if (status < 0) - { - state->Fail (status, 0); - } - else - { - uint32 flag; - - switch (state->m_deliver_mode) - { - case MSG_SaveAsDraft: - defaultName = DRAFTS_FOLDER_NAME; - flag = MSG_FOLDER_FLAG_DRAFTS; - break; - case MSG_SaveAsTemplate: - defaultName = TEMPLATES_FOLDER_NAME; - flag = MSG_FOLDER_FLAG_TEMPLATES; - break; - case MSG_DeliverNow: - defaultName = SENT_FOLDER_NAME; - flag = MSG_FOLDER_FLAG_SENTMAIL; - break; - default: - XP_ASSERT(0); - state->Fail(MK_IMAP_UNABLE_TO_SAVE_MESSAGE, 0); /* -1 rb */ - return; - break; - } - - state->m_pane->SetIMAPListInProgress(FALSE); - if (state->m_pane->IMAPListMailboxExist()) - { - state->SendToImapMagicFolder(flag); - } - else - { - char *onlineFolderName = msg_MagicFolderName(state->m_pane->GetMaster()->GetPrefs(), flag, &status); - char *buf = NULL; - char *host = NULL, *name = NULL /*, *owner = NULL */; - MSG_IMAPHost *imapHost = NULL; - - if (status < 0) - { - char *error_msg = XP_GetString(status); - state->Fail(status, error_msg ? XP_STRDUP(error_msg) : 0); - return; - } - else if (!onlineFolderName) - { - state->Fail(MK_IMAP_NO_ONLINE_FOLDER, 0); /* -1 rb */ - return; - } - - XP_ASSERT(NET_URL_Type(onlineFolderName) == IMAP_TYPE_URL); - - host = NET_ParseURL(onlineFolderName, GET_HOST_PART); - name = NET_ParseURL(onlineFolderName, GET_PATH_PART); - // owner = NET_ParseURL(onlineFolderName, GET_USERNAME_PART); - - if (!name || !*name) - { - XP_FREEIF(name); - name = PR_smprintf("/%s", defaultName); - } - - imapHost = state->m_pane->GetMaster()->GetIMAPHost(host); - - XP_ASSERT(imapHost); - if (imapHost->GetDefaultNamespacePrefixOfType(kPersonalNamespace)) - { - char *nameWithPrefix = PR_smprintf("%s%s", - imapHost->GetDefaultNamespacePrefixOfType(kPersonalNamespace), - name+1); - if (nameWithPrefix) - { - XP_FREE(name); - name = nameWithPrefix; - } - } - // *** Create Imap magic folder - // *** then append message to the folder - buf = CreateImapMailboxCreateUrl(host, *name == '/' ? name+1 : name, - kOnlineHierarchySeparatorUnknown); - if (buf) - { - URL_Struct* url_struct = NULL; - url_struct = NET_CreateURLStruct(buf, NET_NORMAL_RELOAD); - if (url_struct) - { - url_struct->fe_data = state; - url_struct->internal_url = TRUE; - url_struct->msg_pane = state->m_pane; - state->GetContext()->imapURLPane = state->m_pane; - - MSG_UrlQueue::AddUrlToPane (url_struct, - MSG_SendMimeDeliveryState::PostCreateImapMagicFolder, state->m_pane, TRUE); - } - XP_FREEIF(buf); - } - XP_FREEIF(onlineFolderName); - XP_FREEIF(host); - XP_FREEIF(name); - // XP_FREEIF(owner); - } - } - NET_FreeURLStruct(url); -} - -void -MSG_SendMimeDeliveryState::SetIMAPMessageUID(MessageKey key) -{ - XP_ASSERT(m_pane && m_pane->GetPaneType() == MSG_COMPOSITIONPANE); - MSG_CompositionPane *composePane = (MSG_CompositionPane*) m_pane; - composePane->SetIMAPMessageUID(key); -} - -void -MSG_SendMimeDeliveryState::PostSendToImapMagicFolder ( URL_Struct *url, - int status, - MWContext *context) -{ - MSG_SendMimeDeliveryState *state = (MSG_SendMimeDeliveryState*) url->fe_data; - MSG_CompositionPane *composePane = (MSG_CompositionPane*) state->m_pane; - XP_ASSERT(state && composePane); - - MSG_PostDeliveryActionInfo *actionInfo = - composePane->GetPostDeliveryActionInfo(); - MailDB *mailDB = NULL; - IDArray *idArray = new IDArray; - char *onlineFolderName = NULL; - - if (XP_STRCMP(url->post_data, state->m_msg_file_name)) - XP_FileRemove(url->post_data, xpFileToPost); - - if (status < 0) - { - state->Fail (status, 0); - } - else - { - /* The message has now been queued successfully. */ - if (state->m_message_delivery_done_callback) - state->m_message_delivery_done_callback (state->GetContext(), - state->m_fe_data, 0, NULL); - state->m_message_delivery_done_callback = 0; - - // Clear() clears the Fcc path - state->Clear(); - } - - XP_ASSERT (composePane && composePane->GetPaneType() == - MSG_COMPOSITIONPANE); - - if (actionInfo && - state->m_deliver_mode == MSG_SaveAsDraft && - actionInfo->m_msgKeyArray.GetSize() > 1 && - actionInfo->m_flags & MSG_FLAG_EXPUNGED) - { - MSG_Pane *urlPane = NULL; - - if (!urlPane) - actionInfo->m_folderInfo ? - state->m_pane->GetMaster()->FindPaneOfType - (actionInfo->m_folderInfo, MSG_THREADPANE) : NULL; - - composePane->DeleteIMAPOldDraftUID(actionInfo, urlPane); - } - if (state->m_imapFolderInfo) - { - char *dbName = WH_FileName(state->m_imapFolderInfo->GetPathname(), xpMailFolderSummary); - if (dbName) - mailDB = (MailDB *) MessageDB::FindInCache(dbName); - XP_FREEIF(dbName); - MSG_Pane *urlPane = NULL; - - if (!urlPane) - urlPane = state->m_pane->GetMaster()->FindPaneOfType - (state->m_imapFolderInfo, MSG_THREADPANE); - - if (!urlPane) - urlPane = composePane; - - if (mailDB && urlPane) - { - char *url_string = CreateImapMailboxLITESelectUrl( - state->m_imapFolderInfo->GetIMAPFolderInfoMail()->GetHostName(), - state->m_imapFolderInfo->GetIMAPFolderInfoMail()->GetOnlineName(), - state->m_imapFolderInfo->GetIMAPFolderInfoMail()->GetOnlineHierarchySeparator()); - - if (url_string) - { - URL_Struct *url_struct = - NET_CreateURLStruct(url_string, - NET_NORMAL_RELOAD); - XP_ASSERT(urlPane); - if (url_struct) - { - state->m_imapFolderInfo->SetFolderLoadingContext(urlPane->GetContext()); - urlPane->SetLoadingImapFolder(state->m_imapFolderInfo); - url_struct->fe_data = (void *) state->m_imapFolderInfo; - url_struct->internal_url = TRUE; - url_struct->msg_pane = urlPane; - urlPane->GetContext()->imapURLPane = urlPane; - - MSG_UrlQueue::AddUrlToPane (url_struct, - MSG_Pane::PostLiteSelectExitFunc, - urlPane, TRUE); - } - XP_FREEIF(url_string); - } - // MessageDB::FindInCache() does not add refCount so don't call close - // mailDB->Close(); - } - else - { - idArray->Add(0); // add dummy message key - state->m_imapFolderInfo->UpdatePendingCounts(state->m_imapFolderInfo, - idArray, FALSE); - state->m_imapFolderInfo->SummaryChanged(); - // make sure we close down the cached imap connection when we done - // with save draft; this is save draft then send case what about the closing - // down the compose window case? - if (urlPane->GetPaneType() != MSG_THREADPANE && - state->m_imapFolderInfo->GetFlags() & MSG_FOLDER_FLAG_DRAFTS && - state->m_deliver_mode != MSG_SaveAsDraft) - composePane->GetMaster()->ImapFolderClosed(state->m_imapFolderInfo); - } - } - - XP_FREEIF(onlineFolderName); - if (idArray) - delete idArray; - - NET_FreeURLStruct(url); - delete state; -} - -/* Send the message to the magic folder, and runs the completion/failure - callback. - */ -void -MSG_SendMimeDeliveryState::SendToMagicFolder ( uint32 flag ) -{ - char *name = 0; - int status = 0; - - name = msg_MagicFolderName(m_pane->GetMaster()->GetPrefs(), flag, &status); - if (status < 0) - { - char *error_msg = XP_GetString(status); - Fail (status, error_msg ? XP_STRDUP(error_msg) : 0); - return; - } - else if (!name || *name == 0) - { - XP_FREEIF(name); - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - else if (NET_URL_Type(name) == IMAP_TYPE_URL && - m_pane->GetMaster()->GetPrefs()->GetMailServerIsIMAP4()) - { - SendToImapMagicFolder(flag); - return; - } - status = mime_do_fcc_1 (m_pane, - m_msg_file_name, xpFileToPost, - name, xpMailFolder, - m_deliver_mode, m_fields->GetBcc(), m_fields->GetFcc(), - (m_fields->GetNewsgroups() && *m_fields->GetNewsgroups() - ? m_fields->GetNewspostUrl() : 0)); - XP_FREEIF (name); - if (status < 0) - goto FAIL; - - FAIL: - - if (status < 0) - { - Fail (status, 0); - } - else - { - MWContext *context = GetContext(); - FE_Progress(context, XP_GetString(MK_MSG_QUEUED)); - - /* The message has now been queued successfully. */ - if (m_message_delivery_done_callback) - m_message_delivery_done_callback (context, - m_fe_data, 0, NULL); - m_message_delivery_done_callback = 0; - - Clear(); - - /* When attaching, even though the context has active_url_count == 0, - XFE_AllConnectionsComplete() **is** called. However, when not - attaching, and not delivering right away, we don't actually open - any URLs, so we need to destroy the window ourself. Ugh!! - */ - /* Unfortunately, Multipart related message falls into the same category. - * If we are sending images within a html message, we'll be chaining URLs - * one after another. Which will get FE_AllConnectionsComplete() to be - * called from NET_ProcessNet(). To prevent from calling - * MSG_MailCompositionAllConnectionsComplete() twice and - * not crashing the browser we only call all connections complete - * when we are not an mhtml message or an mhtml message which does not - * embed any images. This could be done better. - */ - if (m_attachment_count == 0) - if (!m_related_part || !m_related_part->GetNumChildren()) - MSG_MailCompositionAllConnectionsComplete(MSG_FindPane(context, - MSG_ANYPANE)); - } -} - -/* Queues the message for later delivery, and runs the completion/failure - callback. - */ -void MSG_SendMimeDeliveryState::QueueForLater() -{ - SendToMagicFolder (MSG_FOLDER_FLAG_QUEUE); -} - - -/* Save the message to the Drafts folder, and runs the completion/failure - callback. - */ -void MSG_SendMimeDeliveryState::SaveAsDraft() -{ - SendToMagicFolder (MSG_FOLDER_FLAG_DRAFTS); -} - -/* Save the message to the Template folder, and runs the completion/failure - callback. - */ -void MSG_SendMimeDeliveryState::SaveAsTemplate() -{ - SendToMagicFolder (MSG_FOLDER_FLAG_TEMPLATES); -} - -#ifdef _USRDLL - -PUBLIC void -NET_RegisterDLLContentConverters() -{ - - NET_RegisterContentTypeConverter ("*", FO_MAIL_TO, - NULL, mime_make_attachment_stream); - NET_RegisterContentTypeConverter ("*", FO_CACHE_AND_MAIL_TO, - NULL, mime_make_attachment_stream); - - /* #### What is this function for? - Is this right? I've cloned this stuff from MSG_RegisterConverters() - above. --jwz */ - - NET_RegisterContentTypeConverter ("*", FO_MAIL_MESSAGE_TO, - NULL, mime_make_attachment_stream); - NET_RegisterContentTypeConverter ("*", FO_CACHE_AND_MAIL_MESSAGE_TO, - NULL, mime_make_attachment_stream); - - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_MAIL_MESSAGE_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_MAIL_MESSAGE_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, - FO_CACHE_AND_MAIL_MESSAGE_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, - FO_CACHE_AND_MAIL_MESSAGE_TO, - NULL, MIME_MessageConverter); -} - -#endif diff --git a/mozilla/lib/libmsg/msgsend.h b/mozilla/lib/libmsg/msgsend.h deleted file mode 100644 index 2c65df01dbe..00000000000 --- a/mozilla/lib/libmsg/msgsend.h +++ /dev/null @@ -1,301 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef __MSGSEND_H__ -#define __MSGSEND_H__ - -#include "msgpane.h" -#include "mimeenc.h" /* For base64/QP encoder */ -#include "mhtmlstm.h" -#include "rosetta.h" - -class MSG_DeliverMimeAttachment; -class ParseOutgoingMessage; -class MailDB; - -#define MIME_BUFFER_SIZE 4096 - -class MSG_SendMimeDeliveryState -{ -public: - MSG_SendMimeDeliveryState(); - ~MSG_SendMimeDeliveryState(); - - static void StartMessageDelivery(MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode mode, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachmentData - *attachments, - const struct MSG_AttachedFile - *preloaded_attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - MSG_SendPart *relatedPart, -//#endif - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)); - - int Init(MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode mode, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachmentData *attachments, - const struct MSG_AttachedFile *preloaded_attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - MSG_SendPart *relatedPart, -//#endif - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)); - - void StartMessageDelivery(); - int GatherMimeAttachments(); - void DeliverMessage(); - void QueueForLater(); - void SaveAsDraft(); - void SaveAsTemplate(); - - /* #### SendToMagicFolder(int flag) should be protected or private */ - void SendToMagicFolder (uint32 flag); - void SendToImapMagicFolder(uint32 flag); - void ImapAppendAddBccHeadersIfNeeded(URL_Struct *url); - static void PostSendToImapMagicFolder (URL_Struct *url, - int status, - MWContext *context); - static void PostCreateImapMagicFolder (URL_Struct *url, - int status, - MWContext *context); - static void PostListImapMailboxFolder (URL_Struct *url, - int status, - MWContext *context); - /* caller needs to free the returned folder name */ - char *GetOnlineFolderName(uint32 flag, const char **pDefaultName); - - int InitImapOfflineDB(uint32 flag); - void SaveAsOfflineOp(); - - XP_Bool DoFcc(); - - int HackAttachments(const struct MSG_AttachmentData *attachments, - const struct MSG_AttachedFile *preloaded_attachments); - - void DeliverFileAsMail(); - void DeliverFileAsNews(); - void DeliverAsMailExit(URL_Struct *url, int status); - void DeliverAsNewsExit(URL_Struct *url, int status); - void Fail(int failure_code, char *error_msg); - void Clear(); - - // Callback from msgsendp.cpp into msgsend.cpp. - HG89377 - MWContext *GetContext() { return m_pane->GetContext(); } - - int SetMimeHeader(MSG_HEADER_SET header, const char *value); - void SetIMAPMessageUID(MessageKey key); - - MSG_Pane *m_pane; /* Pane to use when loading the URLs */ - void *m_fe_data; /* passed in and passed to callback */ - MSG_CompositionFields *m_fields; - - XP_Bool m_dont_deliver_p; /* If set, we just return the name of the file - we created, instead of actually delivering - this message. */ - - MSG_Deliver_Mode m_deliver_mode; /* MSG_DeliverNow, MSG_QueueForLater, - MSG_SaveAsDraft, MSG_SaveAsTemplate - */ - - XP_Bool m_attachments_only_p; /* If set, then we don't construct a complete - MIME message; instead, we just retrieve the - attachments from the network, store them in - tmp files, and return a list of - MSG_AttachedFile structs which describe - them. */ - - XP_Bool m_pre_snarfed_attachments_p; /* If true, then the attachments were - loaded by msg_DownloadAttachments() - and therefore we shouldn't delete - the tmp files (but should leave - that to the caller.) */ - - XP_Bool m_digest_p; /* Whether to be multipart/digest instead of - multipart/mixed. */ - - XP_Bool m_be_synchronous_p; /* If true, we will load one URL after another, - rather than starting all URLs going at once - and letting them load in parallel. This is - more efficient if (for example) all URLs are - known to be coming from the same news server - or mailbox: loading them in parallel would - cause multiple connections to the news - server to be opened, or would cause much - seek()ing. - */ - - HG83623 - - /* The first attachment, if any (typed in by the user.) - */ - char *m_attachment1_type; - char *m_attachment1_encoding; - MimeEncoderData *m_attachment1_encoder_data; - char *m_attachment1_body; - uint32 m_attachment1_body_length; - - // The plaintext form of the first attachment, if needed. - MSG_DeliverMimeAttachment* m_plaintext; - -//#ifdef MSG_SEND_MULTIPART_RELATED - // The multipart/related save object for HTML text. - MSG_SendPart *m_related_part; -//#endif - - // File where we stored our HTML so that we could make the plaintext form. - char* m_html_filename; - - /* Subsequent attachments, if any. - */ - int32 m_attachment_count; - int32 m_attachment_pending_count; - MSG_DeliverMimeAttachment *m_attachments; - int32 m_status; /* in case some attachments fail but not all */ - - /* The caller's `exit' method. */ - void (*m_message_delivery_done_callback) (MWContext *context, - void * fe_data, int status, - const char * error_msg); - - /* The exit method used when downloading attachments only. */ - void (*m_attachments_done_callback) (MWContext *context, - void * fe_data, int status, - const char * error_msg, - struct MSG_AttachedFile *attachments); - - char *m_msg_file_name; /* Our temporary file */ - XP_File m_msg_file; - - MSG_IMAPFolderInfoMail *m_imapFolderInfo; - ParseOutgoingMessage *m_imapOutgoingParser; - MailDB *m_imapLocalMailDB; - - -#if 0 - /* char *headers; / * The headers of the message */ - - /* Some state to control the thermometer during message delivery. - */ - int32 m_msg_size; /* Size of the final message. */ - int32 m_delivery_total_bytes; /* How many bytes we will be delivering: - for example, if we're sending the - message to both mail and news, this - will be 2x the size of the message. - */ - int32 m_delivery_bytes; /* How many bytes we have delivered so far. - */ -#endif /* 0 */ -}; - -class MSG_DeliverMimeAttachment -{ -public: - - MSG_DeliverMimeAttachment(); - ~MSG_DeliverMimeAttachment(); - - void UrlExit(URL_Struct *url, int status, MWContext *context); - int32 SnarfAttachment (); - void AnalyzeDataChunk (const char *chunk, int32 chunkSize); - void AnalyzeSnarfedFile (); /* Analyze a previously-snarfed file. - (Currently only used for plaintext - converted from HTML.) */ - int PickEncoding (int16 mail_csid); - - XP_Bool UseUUEncode_p(void); - - char *m_url_string; - URL_Struct *m_url; - XP_Bool m_done; - - MSG_SendMimeDeliveryState *m_mime_delivery_state; - - char *m_type; /* The real type, once we know it. */ - char *m_override_type; /* The type we should assume it to be - or 0, if we should get it from the - URL_Struct (from the server) */ - char *m_override_encoding; /* Goes along with override_type */ - - char *m_desired_type; /* The type it should be converted to. */ - char *m_description; /* For Content-Description header */ - char *m_x_mac_type, *m_x_mac_creator; /* Mac file type/creator. */ - char *m_real_name; /* The name for the headers, if different - from the URL. */ - char *m_encoding; /* The encoding, once we've decided. */ - XP_Bool m_already_encoded_p; /* If we attach a document that is already - encoded, we just pass it through. */ - - char *m_file_name; /* The temp file to which we save it */ - XP_File m_file; - -#ifdef XP_MAC - char *m_ap_filename; /* The temp file holds the appledouble - encoding of the file we want to post. */ -#endif - - HG93873 - uint32 m_size; /* Some state used while filtering it */ - uint32 m_unprintable_count; - uint32 m_highbit_count; - uint32 m_ctl_count; - uint32 m_null_count; - uint32 m_current_column; - uint32 m_max_column; - uint32 m_lines; - - MimeEncoderData *m_encoder_data; /* Opaque state for base64/qp encoder. */ - - XP_Bool m_graph_progress_started; - - PrintSetup m_print_setup; /* Used by HTML->Text and HTML->PS */ -}; -// These routines should only be used by the MSG_SendPart class. - -extern XP_Bool mime_type_needs_charset (const char *type); -extern int mime_write_message_body(MSG_SendMimeDeliveryState *state, - char *buf, int32 size); -extern char* mime_get_stream_write_buffer(void); - -#endif /* __MSGSEND_H__ */ diff --git a/mozilla/lib/libmsg/msgsendp.cpp b/mozilla/lib/libmsg/msgsendp.cpp deleted file mode 100644 index d7fadadf639..00000000000 --- a/mozilla/lib/libmsg/msgsendp.cpp +++ /dev/null @@ -1,772 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "ntypes.h" -#include "xlate.h" // Needed to compile msgsend.h -#include "msgsend.h" -#include "msgsendp.h" -#include "libi18n.h" - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; -} - -static char *mime_mailto_stream_read_buffer = 0; - -int32 MSG_SendPart::M_counter = 0; - -MSG_SendPart::MSG_SendPart(MSG_SendMimeDeliveryState* state, int16 part_csid) -{ - m_csid = part_csid; - SetMimeDeliveryState(state); -} - - -MSG_SendPart::~MSG_SendPart() -{ - if (m_encoder_data) { - MimeEncoderDestroy(m_encoder_data, FALSE); - m_encoder_data = NULL; - } - for (int i=0 ; i<m_numchildren ; i++) { - delete m_children[i]; - } - delete [] m_children; - delete [] m_buffer; - delete [] m_other; - if (m_filename) delete [] m_filename; - FREEIF(m_type); -} - -int MSG_SendPart::CopyString(char** dest, const char* src) -{ - XP_ASSERT(src); - if (!src) src = ""; - delete [] *dest; - *dest = new char [XP_STRLEN(src) + 1]; - if (!*dest) return MK_OUT_OF_MEMORY; - XP_STRCPY(*dest, src); - return 0; -} - - -int MSG_SendPart::SetFile(const char* filename, XP_FileType type) -{ - XP_ASSERT(m_buffer == NULL); - int status = CopyString(&m_filename, filename); - if (status < 0) return status; - m_filetype = type; - return status; -} - - -int MSG_SendPart::SetBuffer(const char* buffer) -{ - XP_ASSERT(m_filename == NULL); - return CopyString(&m_buffer, buffer); -} - - -int MSG_SendPart::SetType(const char* type) -{ - FREEIF(m_type); - m_type = XP_STRDUP(type); - return m_type ? 0 : MK_OUT_OF_MEMORY; -} - - -int MSG_SendPart::SetOtherHeaders(const char* other) -{ - return CopyString(&m_other, other); -} - -int MSG_SendPart::SetMimeDeliveryState(MSG_SendMimeDeliveryState *state) -{ - m_state = state; - if (GetNumChildren() > 0) - { - for(int i = 0; i < GetNumChildren(); i++) - { - MSG_SendPart *part = GetChild(i); - if (part) - part->SetMimeDeliveryState(state); - } - } - return 0; -} - -int MSG_SendPart::AppendOtherHeaders(const char* more) -{ - if (!m_other) return SetOtherHeaders(more); - if (!more || !*more) return 0; - char* tmp = new char[XP_STRLEN(m_other) + XP_STRLEN(more) + 2]; - if (!tmp) return MK_OUT_OF_MEMORY; - XP_STRCPY(tmp, m_other); - XP_STRCAT(tmp, more); - delete [] m_other; - m_other = tmp; - return 0; -} - - -int MSG_SendPart::SetEncoderData(MimeEncoderData* data) -{ - m_encoder_data = data; - return 0; -} - -int MSG_SendPart::SetMainPart(XP_Bool value) -{ - m_mainpart = value; - return 0; -} - -int MSG_SendPart::AddChild(MSG_SendPart* child) -{ - m_numchildren++; - MSG_SendPart** tmp = new MSG_SendPart* [m_numchildren]; - if (tmp == NULL) return MK_OUT_OF_MEMORY; - for (int i=0 ; i<m_numchildren-1 ; i++) { - tmp[i] = m_children[i]; - } - delete [] m_children; - m_children = tmp; - m_children[m_numchildren - 1] = child; - child->m_parent = this; - return 0; -} - -MSG_SendPart * -MSG_SendPart::DetachChild(int32 whichOne) -{ - MSG_SendPart *returnValue = NULL; - - XP_ASSERT(whichOne >= 0 && whichOne < m_numchildren); - if (whichOne >= 0 && whichOne < m_numchildren) - { - returnValue = m_children[whichOne]; - - if (m_numchildren > 1) - { - MSG_SendPart** tmp = new MSG_SendPart* [m_numchildren-1]; - if (tmp != NULL) - { - // move all the other kids over - for (int i=0 ; i<m_numchildren-1 ; i++) - { - if (i >= whichOne) - tmp[i] = m_children[i+1]; - else - tmp[i] = m_children[i]; - } - delete [] m_children; - m_children = tmp; - m_numchildren--; - } - } - else - { - delete [] m_children; - m_children = NULL; - m_numchildren = 0; - } - } - - if (returnValue) - returnValue->m_parent = NULL; - - return returnValue; -} - -MSG_SendPart* MSG_SendPart::GetChild(int32 which) -{ - XP_ASSERT(which >= 0 && which < m_numchildren); - if (which >= 0 && which < m_numchildren) { - return m_children[which]; - } - return NULL; -} - - - -int MSG_SendPart::PushBody(char* buffer, int32 length) -{ - int status = 0; - char* encoded_data = buffer; - - /* if this is the first block, create the conversion object - */ - if (m_firstBlock) { - if (m_needIntlConversion) { - m_intlDocToMailConverter = - INTL_CreateDocToMailConverter(m_state->GetContext(), - (!strcasecomp(m_type, - TEXT_HTML)), - (unsigned char*) buffer, - length); - - // No conversion is done when mail_csid (ToCSID for the converter) is JIS - // and type is HTML (usually csid is SJIS or EUC for Japanese HTML) - // in order to avoid mismatch META_TAG (bug#104255). - if (m_intlDocToMailConverter != NULL) { - XP_Bool Base64HtmlNoChconv = ((INTL_GetCCCToCSID(m_intlDocToMailConverter) == CS_JIS) && - !strcasecomp(m_type, TEXT_HTML) && - (m_encoder_data != NULL)); - if (Base64HtmlNoChconv) { - INTL_DestroyCharCodeConverter(m_intlDocToMailConverter); - m_intlDocToMailConverter = NULL; - } - } - } - m_firstBlock = FALSE; /* No longer the first block */ - } - - if (m_intlDocToMailConverter) { - encoded_data = - (char*)INTL_CallCharCodeConverter(m_intlDocToMailConverter, - (unsigned char*)buffer, - length); - /* the return buffer is different from the */ - /* origional one. The size needs to be change */ - if(encoded_data && encoded_data != buffer) { - length = XP_STRLEN(encoded_data); - } - } - - if (m_encoder_data) { - status = MimeEncoderWrite(m_encoder_data, encoded_data, length); - } else { - // Merely translate all linebreaks to CRLF. - int status = 0; - const char *in = encoded_data; - const char *end = in + length; - char *buffer, *out; - - - buffer = mime_get_stream_write_buffer(); - if (!buffer) return MK_OUT_OF_MEMORY; - - XP_ASSERT(encoded_data != buffer); - out = buffer; - - for (; in < end; in++) { - if (m_just_hit_CR) { - m_just_hit_CR = FALSE; - if (*in == LF) { - // The last thing we wrote was a CRLF from hitting a CR. - // So, we don't want to do anything from a following LF; - // we want to ignore it. - continue; - } - } - if (*in == CR || *in == LF) { - /* Write out the newline. */ - *out++ = CR; - *out++ = LF; - - status = mime_write_message_body(m_state, buffer, - out - buffer); - if (status < 0) return status; - out = buffer; - - if (*in == CR) { - m_just_hit_CR = TRUE; - } - - out = buffer; - } else { - - /* Fix for bug #95985. We can't assume that all lines are shorter - than 4096 chars (MIME_BUFFER_SIZE), so we need to test - for this here. sfraser. - */ - if (out - buffer >= MIME_BUFFER_SIZE) - { - status = mime_write_message_body(m_state, buffer, out - buffer); - if (status < 0) return status; - - out = buffer; - } - - *out++ = *in; - } - } - - /* Flush the last line. */ - if (out > buffer) { - status = mime_write_message_body(m_state, buffer, out - buffer); - if (status < 0) return status; - out = buffer; - } - } - - if (encoded_data && encoded_data != buffer) { - XP_FREE(encoded_data); - } - - return status; -} - - -/* Partition the headers into those which apply to the message as a whole; - those which apply to the message's contents; and the Content-Type header - itself. (This relies on the fact that all body-related headers begin with - "Content-".) - - (How many header parsers are in this program now?) - */ -static int divide_content_headers(const char *headers, - char **message_headers, - char **content_headers, - char **content_type_header) -{ - const char *tail; - char *message_tail, *content_tail, *type_tail; - int L = 0; - if (headers) - L = XP_STRLEN(headers); - - if (L == 0) - return 0; - - *message_headers = (char *)XP_ALLOC(L+1); - if (!*message_headers) - return MK_OUT_OF_MEMORY; - - *content_headers = (char *)XP_ALLOC(L+1); - if (!*content_headers) - { - XP_FREE(*message_headers); - return MK_OUT_OF_MEMORY; - } - - *content_type_header = (char *)XP_ALLOC(L+1); - if (!*content_type_header) - { - XP_FREE(*message_headers); - XP_FREE(*content_headers); - return MK_OUT_OF_MEMORY; - } - - message_tail = *message_headers; - content_tail = *content_headers; - type_tail = *content_type_header; - tail = headers; - - while (*tail) - { - const char *head = tail; - char **out; - while(1) - { - /* Loop until we reach a newline that is not followed by whitespace. - */ - if (tail[0] == 0 || - ((tail[0] == CR || tail[0] == LF) && - !(tail[1] == ' ' || tail[1] == '\t' || tail[1] == LF))) - { - /* Swallow the whole newline. */ - if (tail[0] == CR && tail[1] == LF) - tail++; - if (*tail) - tail++; - break; - } - tail++; - } - - /* Decide which block this header goes into. - */ - if (!strncasecomp(head, "Content-Type:", 13)) - out = &type_tail; - else if (!strncasecomp(head, "Content-", 8)) - out = &content_tail; - else - out = &message_tail; - - XP_MEMCPY(*out, head, (tail-head)); - *out += (tail-head); - } - - *message_tail = 0; - *content_tail = 0; - *type_tail = 0; - - if (!**message_headers) - { - XP_FREE(*message_headers); - *message_headers = 0; - } - - if (!**content_headers) - { - XP_FREE(*content_headers); - *content_headers = 0; - } - - if (!**content_type_header) - { - XP_FREE(*content_type_header); - *content_type_header = 0; - } - -#ifdef DEBUG - // ### mwelch Because of the extreme difficulty we've had with - // duplicate part headers, I'm going to put in an - // ASSERT here which makes sure that no duplicate - // Content-Type or Content-Transfer-Encoding headers - // leave here undetected. - const char* tmp; - if (*content_type_header) - { - tmp = XP_STRSTR(*content_type_header, "Content-Type"); - if (tmp) - { - tmp++; // get past the first occurrence - XP_ASSERT(!XP_STRSTR(tmp, "Content-Type")); - } - } - - if (*content_headers) - { - tmp = XP_STRSTR(*content_headers, "Content-Transfer-Encoding"); - if (tmp) - { - tmp++; // get past the first occurrence - XP_ASSERT(!XP_STRSTR(tmp, "Content-Transfer-Encoding")); - } - } -#endif // DEBUG - - return 0; -} - -extern "C" { -extern char *mime_make_separator(const char *prefix); -} - -int MSG_SendPart::Write() -{ - int status = 0; - char *separator = 0; - XP_File file = NULL; - -#define PUSHLEN(str, length) \ - do { \ - status = mime_write_message_body(m_state, str, length); \ - if (status < 0) goto FAIL; \ - } while (0) \ - -#define PUSH(str) PUSHLEN(str, XP_STRLEN(str)) - - if (m_mainpart && m_type && XP_STRCMP(m_type, TEXT_HTML) == 0) { - if (m_filename) { - // The "insert HTML links" code requires a memory buffer, - // so read the file into memory. - XP_ASSERT(m_buffer == NULL); - XP_StatStruct st; - st.st_size = 0; - XP_Stat (m_filename, &st, m_filetype); - int32 length = st.st_size; - m_buffer = new char[length + 1]; - if (m_buffer) { - file = XP_FileOpen(m_filename, m_filetype, XP_FILE_READ_BIN); - if (file) { - XP_FileRead(m_buffer, length, file); - XP_FileClose(file); - m_buffer[length] = '\0'; - file = NULL; - if (m_filename) delete [] m_filename; - m_filename = NULL; - } else { - delete [] m_buffer; - m_buffer = NULL; - } - } - } - if (m_buffer) { - char* tmp = NET_ScanHTMLForURLs(m_buffer); - if (tmp) { - SetBuffer(tmp); - XP_FREE(tmp); - } - } - } - - if (m_parent && m_parent->m_type && - !strcasecomp(m_parent->m_type, MULTIPART_DIGEST) && - m_type && - (!strcasecomp(m_type, MESSAGE_RFC822) || - !strcasecomp(m_type, MESSAGE_NEWS))) { - /* If we're in a multipart/digest, and this document is of type - message/rfc822, then it's appropriate to emit no - headers. - */ - } else { - char *message_headers = 0; - char *content_headers = 0; - char *content_type_header = 0; - status = divide_content_headers(m_other, - &message_headers, - &content_headers, - &content_type_header); - if (status < 0) - goto FAIL; - - /* First, write out all of the headers that refer to the message - itself (From, Subject, MIME-Version, etc.) - */ - if (message_headers) - { - PUSH(message_headers); - XP_FREE(message_headers); - message_headers = 0; - } - - if (!m_parent) - { - HG78478 - if (status < 0) goto FAIL; - } - - /* Now make sure there's a Content-Type header. - */ - if (!content_type_header) - { - XP_ASSERT(m_type && *m_type); - XP_Bool needsCharset = mime_type_needs_charset(m_type ? m_type : TEXT_PLAIN); - if (needsCharset) - { - char tmpCSName[64]; - tmpCSName[0] = '\0'; - INTL_CharSetIDToName(m_csid, tmpCSName); - content_type_header = - PR_smprintf("Content-Type: %s; charset=%s" CRLF, - (m_type ? m_type : TEXT_PLAIN), tmpCSName); - } - else - content_type_header = - PR_smprintf("Content-Type: %s" CRLF, - (m_type ? m_type : TEXT_PLAIN)); - if (!content_type_header) - { - if (content_headers) - XP_FREE(content_headers); - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - - /* If this is a compound object, tack a boundary string onto the - Content-Type header. - */ - if (m_numchildren > 0) - { - int L; - char *ct2; - XP_ASSERT(m_type); - if (!separator) - { - separator = mime_make_separator(""); - if (!separator) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - L = XP_STRLEN(content_type_header); - - if (content_type_header[L-1] == LF) - content_type_header[--L] = 0; - if (content_type_header[L-1] == CR) - content_type_header[--L] = 0; - - ct2 = PR_smprintf("%s;\r\n boundary=\"%s\"" CRLF, - content_type_header, separator); - XP_FREE(content_type_header); - if (!ct2) - { - if (content_headers) - XP_FREE(content_headers); - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - content_type_header = ct2; - } - - /* Now write out the Content-Type header... - */ - XP_ASSERT(content_type_header && *content_type_header); - PUSH(content_type_header); - XP_FREE(content_type_header); - content_type_header = 0; - - /* ...followed by all of the other headers that refer to the body of - the message (Content-Transfer-Encoding, Content-Dispositon, etc.) - */ - if (content_headers) - { - PUSH(content_headers); - XP_FREE(content_headers); - content_headers = 0; - } - } - - PUSH(CRLF); // A blank line, to mark the end of headers. - - m_firstBlock = TRUE; - /* only convert if we need to tag charset */ - m_needIntlConversion = mime_type_needs_charset(m_type); - m_intlDocToMailConverter = NULL; - - - if (m_buffer) { - XP_ASSERT(!m_filename); - status = PushBody(m_buffer, XP_STRLEN(m_buffer)); - if (status < 0) goto FAIL; - } else if (m_filename) { - file = XP_FileOpen(m_filename, m_filetype, XP_FILE_READ_BIN); - if (!file) { - status = -1; // ### Better error code for a temp file - // mysteriously disappearing? - goto FAIL; - } - /* Hack to avoid having to allocate memory... */ - if (!mime_mailto_stream_read_buffer) { - mime_mailto_stream_read_buffer = (char *) - XP_ALLOC(MIME_BUFFER_SIZE); - if (!mime_mailto_stream_read_buffer) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - char* buffer = mime_mailto_stream_read_buffer; - - if (m_strip_sensitive_headers) { - /* We are attaching a message, so we should be careful to - strip out certain sensitive internal header fields. - */ - XP_Bool skipping = FALSE; - XP_ASSERT(MIME_BUFFER_SIZE > 1000); /* SMTP (RFC821) limit */ - - while (1) { - char *line = XP_FileReadLine(buffer, MIME_BUFFER_SIZE-3, file); - if (!line) break; /* EOF */ - - if (skipping) { - if (*line == ' ' || *line == '\t') { - continue; - } else { - skipping = FALSE; - } - } - - int hdrLen = XP_STRLEN(buffer); - if ((hdrLen < 2) || (buffer[hdrLen-2] != CR)) // if the line doesn't end with CRLF, - { - // ... make it end with CRLF. - if ( (hdrLen == 0) - || ((buffer[hdrLen-1] != CR) && (buffer[hdrLen-1] != LF)) ) - hdrLen++; - buffer[hdrLen-1] = '\015'; - buffer[hdrLen] = '\012'; - buffer[hdrLen+1] = '\0'; - } - - if (!strncasecomp(line, "BCC:", 4) || - !strncasecomp(line, "FCC:", 4) || - !strncasecomp(line, CONTENT_LENGTH ":", - CONTENT_LENGTH_LEN + 1) || - !strncasecomp(line, "Lines:", 6) || - !strncasecomp(line, "Status:", 7) || - !strncasecomp(line, X_MOZILLA_STATUS ":", - X_MOZILLA_STATUS_LEN+1) || - !strncasecomp(line, X_MOZILLA_NEWSHOST ":", - X_MOZILLA_NEWSHOST_LEN+1) || - !strncasecomp(line, X_UIDL ":", X_UIDL_LEN+1) || - !strncasecomp(line, "X-VM-", 5)) - { - skipping = TRUE; - continue; - } - - PUSH(line); - - if (*line == CR || *line == LF) { - break; // Now can do normal reads for the body. - } - } - } - - - while (1) { - status = XP_FileRead(buffer, MIME_BUFFER_SIZE, file); - if (status < 0) { - goto FAIL; - } else if (status == 0) { - break; - } - - status = PushBody(buffer, status); - if (status < 0) goto FAIL; - } - } - - if (m_encoder_data) { - status = MimeEncoderDestroy(m_encoder_data, FALSE); - m_encoder_data = NULL; - if (status < 0) goto FAIL; - } - - if (m_numchildren > 0) { - XP_ASSERT(separator); - for (int i=0 ; i<m_numchildren ; i++) { - PUSH(CRLF); - PUSH("--"); - PUSH(separator); - PUSH(CRLF); - status = m_children[i]->Write(); - if (status < 0) goto FAIL; - } - PUSH(CRLF); - PUSH("--"); - PUSH(separator); - PUSH("--"); - PUSH(CRLF); - } - - - -FAIL: - FREEIF(separator); - if (file) XP_FileClose(file); - if (m_intlDocToMailConverter) { - INTL_DestroyCharCodeConverter(m_intlDocToMailConverter); - m_intlDocToMailConverter = NULL; - } - return status; - -} diff --git a/mozilla/lib/libmsg/msgsendp.h b/mozilla/lib/libmsg/msgsendp.h deleted file mode 100644 index 1579dd306e7..00000000000 --- a/mozilla/lib/libmsg/msgsendp.h +++ /dev/null @@ -1,116 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef MSG_SENDP_H -#define MSG_SENDP_H - - -#include "msgzap.h" -#include "mimeenc.h" - -class MSG_SendMimeDeliveryState; - -typedef int (*MSG_SendPartWriteFunc)(const char* line, int32 size, - XP_Bool isheader, void* closure); - - -class MSG_SendPart : public MSG_ZapIt { -public: - MSG_SendPart(MSG_SendMimeDeliveryState* state, int16 part_csid = 0); - virtual ~MSG_SendPart(); // Note that the destructor also destroys - // any children that were added. - - virtual int Write(); - - virtual int SetFile(const char* filename, XP_FileType filetype); - const char* GetFilename() {return m_filename;} - XP_FileType GetFiletype() {return m_filetype;} - - virtual int SetBuffer(const char* buffer); - const char* GetBuffer() {return m_buffer;} - - virtual int SetType(const char* type); - const char* GetType() {return m_type;} - - int16 GetCSID() { return m_csid; } - - virtual int SetOtherHeaders(const char* other); - const char* SetOtherHeaders() {return m_other;} - virtual int AppendOtherHeaders(const char* moreother); - - virtual int SetMimeDeliveryState(MSG_SendMimeDeliveryState* state); - - // Note that the MSG_SendPart class will take over ownership of the - // MimeEncoderData* object, deleting it when it chooses. (This is - // necessary because deleting these objects is the only current way to - // flush out the data in them.) - int SetEncoderData(MimeEncoderData* data); - MimeEncoderData *GetEncoderData() {return m_encoder_data;} - - int SetStripSensitiveHeaders(XP_Bool value) { - m_strip_sensitive_headers = value; - return 0; - } - XP_Bool GetStripSensitiveHeaders() {return m_strip_sensitive_headers;} - - virtual int AddChild(MSG_SendPart* child); - - int32 GetNumChildren() {return m_numchildren;} - MSG_SendPart* GetChild(int32 which); - MSG_SendPart* DetachChild(int32 which); - - virtual int SetMainPart(XP_Bool value); - XP_Bool IsMainPart() {return m_mainpart;} - - -protected: - int CopyString(char** dest, const char* src); - int PushBody(char* buffer, int32 length); - - MSG_SendMimeDeliveryState* m_state; - MSG_SendPart* m_parent; - char* m_filename; - XP_FileType m_filetype; - char* m_buffer; - char* m_type; - char* m_other; - int16 m_csid; // charset ID associated with this part - XP_Bool m_strip_sensitive_headers; - MimeEncoderData *m_encoder_data; /* Opaque state for base64/qp encoder. */ - - MSG_SendPart** m_children; - int32 m_numchildren; - - // Data used while actually writing. - XP_Bool m_firstBlock; - XP_Bool m_needIntlConversion; - CCCDataObject m_intlDocToMailConverter; - - XP_Bool m_mainpart; - - XP_Bool m_just_hit_CR; - - static int32 M_counter; -}; - - - -#endif /* MSG_SENDP_H */ diff --git a/mozilla/lib/libmsg/msgspane.cpp b/mozilla/lib/libmsg/msgspane.cpp deleted file mode 100644 index d0ad451d071..00000000000 --- a/mozilla/lib/libmsg/msgspane.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// -// msgspane.cpp -- Pane for search results - -#include "msg.h" -#include "msgspane.h" -#include "pmsgsrch.h" -#include "ptrarray.h" -#include "msgfinfo.h" - - -MSG_SearchPane::MSG_SearchPane (MWContext *context, MSG_Master *master) : MSG_ThreadPane (context, master) -{ -} - -MSG_SearchPane::~MSG_SearchPane () -{ -} - - -// MSG_Pane methods - -MSG_PaneType MSG_SearchPane::GetPaneType() -{ - return MSG_SEARCHPANE; -} - -MsgERR MSG_SearchPane::MoveMessages (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder) -{ - MSG_SearchFrame * frame = MSG_SearchFrame::FromPane(this); - if (frame) - return frame->MoveMessages(indices, numIndices, folder); - else - return eFAILURE; -} - -MsgERR MSG_SearchPane::CopyMessages (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder, - XP_Bool deleteAfterCopy) -{ - MSG_SearchFrame * frame = MSG_SearchFrame::FromPane(this); - if (frame) - return frame->CopyMessages(indices, numIndices, folder, deleteAfterCopy); - else - return eFAILURE; -} - -MSG_DragEffect MSG_SearchPane::DragMessagesStatus(const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo * destFolder, - MSG_DragEffect request) -{ - MSG_SearchFrame * frame = MSG_SearchFrame::FromPane(this); - if (frame) - return frame->DragMessagesStatus(indices, numIndices, destFolder, request); - else - return MSG_Drag_Not_Allowed; -} - - - - -MsgERR MSG_SearchPane::DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, - int32 numIndices) -{ - // currently we only support delete message and delete messages no trash... - MSG_SearchFrame * frame = MSG_SearchFrame::FromPane(this); - if (!frame) - return eFAILURE; - - switch (command) - { - case MSG_DeleteMessage: - return frame->TrashMessages(indices, numIndices); - case MSG_DeleteMessageNoTrash: - return frame->DeleteMessages(indices, numIndices); // REALLY DELETES!! DOESN'T DELETE TO TRASH - default: - break; - } - - return eFAILURE; // we didn't recognize the command type -} - - -void MSG_SearchPane::CloseView (MSG_FolderInfo * folder) -{ - // whenever a search as view command is performed which required a messageDBView, - // this routine informs the search frame to close the view (it had been keeping it open) - // of course we need the folder, so we can identify which view in the search frame to close. - MSG_SearchFrame * frame = MSG_SearchFrame::FromPane(this); - if (frame) - frame->CloseView(folder); -} - -MessageDBView* MSG_SearchPane::GetView (MSG_FolderInfo * folder) -{ - MSG_SearchFrame * frame = MSG_SearchFrame::FromPane(this); - if (frame) - return frame->GetView(folder); - else - return NULL; -} - - -MessageKey -MSG_SearchPane::GetMessageKey(MSG_ViewIndex index) // added by mscott in testing search as view capabilities -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (this); // retrieve searchFrame from the pane/context - if (!frame) - return MSG_MESSAGEKEYNONE; - MSG_ResultElement * elem = NULL; - frame->GetResultElement(index, &elem); - const MSG_SearchValue *keyValue = elem->GetValueRef(attribMessageKey); - return keyValue->u.key; -} - - -void MSG_SearchPane::OnFolderDeleted (MSG_FolderInfo *folder) -{ - // Here we catch the broadcast message that a folder has been deleted. - // In the context of the search pane, this means we remove any search - // hits which refer to it, since those hits hold a stale pointer - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (this); - XP_ASSERT(frame); - if (frame) - frame->DeleteResultElementsInFolder (folder); - - // Call our parent in case they need to respond to this notification - MSG_ThreadPane::OnFolderDeleted (folder); -} - -// MSG_LinedPane methods - -void MSG_SearchPane::ToggleExpansion (MSG_ViewIndex /*line*/, int32 * /*numChanged*/) -{ -} - -int32 MSG_SearchPane::ExpansionDelta (MSG_ViewIndex /*line*/) -{ - XP_ASSERT(0); // will we be able to expand mailing lists here? - return 0; -} - -int32 MSG_SearchPane::GetNumLines () -{ - MSG_SearchFrame *frame = GetContext()->msg_searchFrame; - XP_ASSERT(frame); - return frame->m_resultList.GetSize(); -} - -// MSG_PrefsNotify methods - -void MSG_SearchPane::NotifyPrefsChange (NotifyCode /*code*/) -{ -} - diff --git a/mozilla/lib/libmsg/msgspane.h b/mozilla/lib/libmsg/msgspane.h deleted file mode 100644 index 4a942a7d67d..00000000000 --- a/mozilla/lib/libmsg/msgspane.h +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// msgspane.cpp -- Pane for search results - -#ifndef _MSGSPANE_H -#define _MSGSPANE_H - -#include "xp.h" -#include "errcode.h" -#include "msg.h" -#include "msgtpane.h" -#include "msgdbvw.h" -#include "ptrarray.h" - - -// MSG_FolderKeyPair is used to specify an individual message unambiguously. -// This is useful for operating on groups of messages which live in -// different folderInfos, as is done in the searchView -// -class MSG_FolderKeyPair -{ -public: - MSG_FolderKeyPair (MSG_FolderInfo *folder, MessageKey key) - : m_key(key), m_folder(folder) {} - - MessageKey m_key; - MSG_FolderInfo *m_folder; -}; - - -// MSG_PairArray is an array with type-safe accessors for MSG_FolderKeyPair -// -class MSG_PairArray : public XPPtrArray -{ -public: - MSG_FolderKeyPair *GetAt(int i) const { return (MSG_FolderKeyPair*) XPPtrArray::GetAt(i); } -}; - - -// MSG_SearchPane is a pane which can do most of what the thread pane can -// do, in terms of copying and deleting messages. However, there are a -// few commands we have to disable, and searchPane also contains the -// sorting code which would normally be done by the (homogeneous) view -// -class MSG_SearchPane : public MSG_ThreadPane -{ -public: - MSG_SearchPane (MWContext *, MSG_Master *); - ~MSG_SearchPane (); - - // currently we only support delete as the only valid command on a search pane. - virtual MsgERR DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices); - - // search as view related methods. Call this when a search as view command which - // required a view of a DB has been completed. - void CloseView(MSG_FolderInfo * folder); - - // this method is NOT intended to return a view from the search frame...it works only - // when you have a search as view command pending which requires a view of a DB. - // only call it when you know what you are doing.... - MessageDBView * GetView(MSG_FolderInfo * folder); - - virtual MsgERR MoveMessages (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder); - - virtual MsgERR CopyMessages (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder, - XP_Bool deleteAfterCopy); - - virtual MSG_DragEffect DragMessagesStatus(const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo * destFolder, - MSG_DragEffect request); - - // MSG_Pane methods - virtual MSG_PaneType GetPaneType(); - virtual void OnFolderDeleted (MSG_FolderInfo *folder); - - // MSG_LinedPane methods - virtual void ToggleExpansion (MSG_ViewIndex line, int32 *numChanged); - virtual int32 ExpansionDelta (MSG_ViewIndex line); - virtual int32 GetNumLines (); - - virtual MessageKey GetMessageKey(MSG_ViewIndex index); // added by mscott - - // MSG_PrefsNotify methods - virtual void NotifyPrefsChange (NotifyCode code); -}; - - -#endif // _MSGSPANE_H diff --git a/mozilla/lib/libmsg/msgstrob.h b/mozilla/lib/libmsg/msgstrob.h deleted file mode 100644 index 8aee214c8f1..00000000000 --- a/mozilla/lib/libmsg/msgstrob.h +++ /dev/null @@ -1,123 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef MSGSTROB_H -#define MSGSTROB_H - -class XPStringObj -{ -public: - ~XPStringObj(); - XPStringObj(const char *str = 0); - - XPStringObj & operator =(const XPStringObj &xpStringObj); - XPStringObj & operator =(const char *str); - - operator const char*() const; - - XPStringObj & operator +=(const char chr); - XPStringObj & operator +=(const char *str); - XPStringObj & operator +=(XPStringObj &xpStringObj); - - char operator [](int charIdx); - void SetStrPtr(char *str); -protected: - friend char * operator +(const XPStringObj &xpStringObj, const char *str); - friend char * operator +(const XPStringObj &xpStringObj1, const XPStringObj &xpStringObj2); - friend char * operator +(const char *str,const XPStringObj &xpStringObj); - - char *m_strPtr; -}; - -inline XPStringObj::~XPStringObj() -{ - if (m_strPtr) - XP_FREE(m_strPtr); -} - - -inline XPStringObj::XPStringObj(const char *str) -{ - m_strPtr = (str) ? XP_STRDUP(str) : 0; -} - -inline XPStringObj &XPStringObj::operator =(const XPStringObj &xpStringObj) -{ - - XP_FREEIF(m_strPtr); - m_strPtr = (xpStringObj.m_strPtr) ? XP_STRDUP(xpStringObj.m_strPtr) : 0; - - return *this; -} - -inline XPStringObj &XPStringObj::operator =(const char *str) -{ - XP_FREEIF(m_strPtr); - m_strPtr = XP_STRDUP(str); - return *this; -} - -inline XPStringObj::operator const char *(void) const -{ - return m_strPtr; -} - -inline XPStringObj &XPStringObj::operator +=(const char chr) -{ - char str[2]; - - *str = chr; - str[1] = '\0'; - - m_strPtr = XP_AppendStr(m_strPtr, str); - return *this; -} - -inline XPStringObj &XPStringObj::operator +=(const char *str) -{ - m_strPtr = XP_AppendStr(m_strPtr, str); - return *this; -} - -/* - * This operator is envoked by compiler generated code when - * concatenating another string on the end of this string. - */ -inline XPStringObj &XPStringObj::operator +=(XPStringObj &str) -{ - m_strPtr = XP_AppendStr(m_strPtr, str.m_strPtr); - return *this; -} - -inline char XPStringObj::operator [](int charIdx) -{ - XP_ASSERT(m_strPtr && charIdx < (int) XP_STRLEN(m_strPtr)); - return (m_strPtr) ? m_strPtr[charIdx] : 0; -} - -inline void XPStringObj::SetStrPtr(char *str) -{ - XP_FREEIF(m_strPtr); - m_strPtr = str; -} - -#endif diff --git a/mozilla/lib/libmsg/msgtpane.cpp b/mozilla/lib/libmsg/msgtpane.cpp deleted file mode 100644 index befd2db2e72..00000000000 --- a/mozilla/lib/libmsg/msgtpane.cpp +++ /dev/null @@ -1,1314 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "msgcom.h" -#include "errcode.h" - -#include "msgtpane.h" -#include "msgfpane.h" -#include "msgmpane.h" -#include "msgfinfo.h" -#include "msgdbvw.h" -#include "msgmast.h" -#include "msgprefs.h" -#include "listngst.h" -#include "maildb.h" -#include "newsdb.h" -#include "prsembst.h" -#include "msgundmg.h" -#include "msgundac.h" -#include "msgurlq.h" -#include "msgcflds.h" -#include "msgcpane.h" -#include "addrbook.h" -#include "grpinfo.h" -#include "thrdbvw.h" -#include "imapoff.h" -#include "prefapi.h" -#include "xpgetstr.h" -#include "xp_qsort.h" -#include "msgimap.h" - -extern "C" -{ - extern int MK_MSG_BY_MESSAGE_NB; - extern int MK_MSG_BY_DATE; - extern int MK_MSG_BY_SENDER; - extern int MK_MSG_BY_SUBJECT; - extern int MK_MSG_BY_PRIORITY; - extern int MK_MSG_BY_SIZE; - extern int MK_MSG_BY_UNREAD; - extern int MK_MSG_BY_FLAG; - extern int MK_MSG_SORT_BACKWARD; - extern int MK_MSG_BY_STATUS; - extern int MK_MSG_COMPRESS_FOLDER; - extern int MK_MSG_THREAD_MESSAGES; - extern int MK_MSG_KBYTES_WASTED; - extern int MK_MSG_DELETE_SEL_MSGS; - extern int MK_MSG_FOLDER_UNREADABLE; - extern int MK_MSG_ALIVE_THREADS; - extern int MK_MSG_KILLED_THREADS; - extern int MK_MSG_THREADS_WITH_NEW; - extern int MK_MSG_WATCHED_THREADS; - extern int MK_MSG_NEW_MESSAGES_ONLY; - extern int MK_MSG_NEW_NEWS_MESSAGE; - extern int MK_MSG_POST_REPLY; - extern int MK_MSG_POST_MAIL_REPLY; - extern int MK_MSG_REPLY; - extern int MK_MSG_REPLY_TO_ALL; - extern int MK_MSG_REPLY_TO_SENDER; - extern int MK_MSG_FORWARD_QUOTED; - extern int MK_MSG_FORWARD; - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_ADD_SENDER_TO_ADDRESS_BOOK; - extern int MK_MSG_ADD_ALL_TO_ADDRESS_BOOK; - extern int MK_MSG_CANT_OPEN; -} - -ThreadPaneListener::ThreadPaneListener(MSG_Pane *pane) : PaneListener(pane) -{ -} - -ThreadPaneListener::~ThreadPaneListener() -{ -} - -MSG_ThreadPane::MSG_ThreadPane(MWContext* context, MSG_Master* master) - : m_threadPaneListener(this), MSG_LinedPane(context, master) -{ - m_imapUpgradeBeginFolder = 0; -} - -MSG_ThreadPane::~MSG_ThreadPane() -{ - ClearNewBits(FALSE); - if (m_view != NULL) - { - m_view->Remove(&m_threadPaneListener); - m_view->Close(); - } - m_view = NULL; -} - -void MSG_ThreadPane::ClearNewBits(XP_Bool notify) -{ - if (m_view != NULL) - { - if (m_view->GetDB()) - m_view->GetDB()->ClearNewList(notify); - } - if (m_folder) - { - m_folder->ClearFlag(MSG_FOLDER_FLAG_GOT_NEW); - m_master->BroadcastFolderChanged(m_folder); - } -} - -MSG_PaneType MSG_ThreadPane::GetPaneType() -{ - return MSG_THREADPANE; -} - -void MSG_ThreadPane::StartingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num) -{ - if (m_numstack == 0) - m_threadPaneListener.StartKeysChanging(); - - MSG_LinedPane::StartingUpdate(code, where, num); -} - -void MSG_ThreadPane::EndingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num) -{ - MSG_LinedPane::EndingUpdate(code, where, num); - if (m_numstack == 0) - m_threadPaneListener.EndKeysChanging(); -} - -ViewType MSG_ThreadPane::GetViewTypeFromCommand(MSG_CommandType command) -{ - switch (command) - { - case MSG_ViewNewOnly: - return ViewOnlyNewHeaders; - case MSG_ViewAllThreads: - return ViewAllThreads; - case MSG_ViewWatchedThreadsWithNew: - return ViewWatchedThreadsWithNew; - case MSG_ViewThreadsWithNew: - return ViewOnlyThreadsWithNew; - default: - XP_ASSERT(FALSE); - return ViewAllThreads; - } -} - -MsgERR MSG_ThreadPane::SwitchViewType(MSG_CommandType command) -{ - char *url = NULL; - ViewType viewType; - if (command == MSG_ViewKilledThreads) - { - viewType = m_view->GetViewType(); - MessageDB *msgDB = m_view->GetDB(); - DBFolderInfo *folderInfo = (msgDB) ? msgDB->GetDBFolderInfo() : 0; - if (folderInfo) - { - XP_Bool showingIgnored = folderInfo->TestFlag(MSG_FOLDER_PREF_SHOWIGNORED); - if (showingIgnored) - folderInfo->AndFlags(~MSG_FOLDER_PREF_SHOWIGNORED); - else - folderInfo->OrFlags(MSG_FOLDER_PREF_SHOWIGNORED); - } - } - else - { - viewType = GetViewTypeFromCommand(command); - if (m_view && viewType == m_view->GetViewType()) - return eSUCCESS; // already in that view. - } - // If we're currently building a view in the background, we want to interrupt that. - msg_InterruptContext(GetContext(), TRUE); - - StartingUpdate(MSG_NotifyScramble, 0, 0); - - url = m_folder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - - MessageDBView *newView; - MsgERR status = MessageDBView::OpenURL(url, GetMaster(), - viewType, &newView, TRUE); - - m_view->NotifyAnnouncerChangingView(m_view, newView); - m_view->Remove(&m_threadPaneListener); - m_view->Close(); - m_view = newView; - - EndingUpdate(MSG_NotifyScramble, 0, 0); - - if (status == eBuildViewInBackground) - status = ListThreads(); - - if (status == eSUCCESS && m_view != NULL) - m_view->Add(&m_threadPaneListener); // add listener back to view - // this might be wrong if close - // didn't remove it. - - XP_FREE(url); - return status; -} - -MsgERR MSG_ThreadPane::ResetView(ViewType typeOfView) -{ - StartingUpdate(MSG_NotifyAll, 0, 0); - - if (m_view) - { - m_view->Close(); - } - - m_view = new ThreadDBView(typeOfView); - if (m_view != NULL) - m_view->Add(&m_threadPaneListener); // add listener back to view - - EndingUpdate(MSG_NotifyAll, 0, 0); - return 0; -} - - -typedef struct sortTableEntry -{ - SortType sortType; - MSG_CommandType msgCommand; -} SortTableEntry; - -SortTableEntry SortTable[] = -{ - { SortByThread, MSG_SortByThread }, - { SortByAuthor, MSG_SortBySender }, - { SortBySubject, MSG_SortBySubject }, - { SortByDate, MSG_SortByDate }, - { SortById, MSG_SortByMessageNumber }, - { SortByPriority, MSG_SortByPriority }, - { SortByStatus, MSG_SortByStatus }, - { SortBySize, MSG_SortBySize }, - { SortByFlagged, MSG_SortByFlagged }, - { SortByUnread, MSG_SortByUnread } -}; - -/* static */SortType MSG_ThreadPane::GetSortTypeFromCommand(MSG_CommandType command) -{ - if (command == MSG_SortByDate) - { - XP_Bool sortByDateReceived = FALSE; - PREF_GetBoolPref("mailnews.sort_by_date_received", &sortByDateReceived); - if (sortByDateReceived) - command = MSG_SortByMessageNumber; - } - - for (unsigned int i = 0; i < sizeof(SortTable) / sizeof(SortTableEntry); i++) - { - if (SortTable[i].msgCommand == command) - return SortTable[i].sortType; - } - XP_ASSERT(FALSE); - return SortByThread; -} - -MsgERR -MSG_ThreadPane::DoCommand(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numIndices) -{ - MsgERR status = 0; - SortType sortType; - XP_Bool sortAscending = TRUE; - XP_Bool calledFEEnd = FALSE; - - if (command != MSG_MailNew && (!m_view || !m_view->GetDB())) return FALSE; - - if (command == MSG_ForwardMessage) - { - int32 forwardMsgMode = 0; - PREF_GetIntPref("mail.forward_message_mode", &forwardMsgMode); - if (forwardMsgMode == 1) - command = MSG_ForwardMessageQuoted; - else if (forwardMsgMode == 2) - command = MSG_ForwardMessageInline; - else - command = MSG_ForwardMessageAttachment; - } - - FEStart(); // N.B. Don't return before FEEnd() - switch (command) { - - case MSG_SortBySender: - case MSG_SortByThread: - case MSG_SortBySubject: - case MSG_SortByDate: - case MSG_SortByMessageNumber: - case MSG_SortByPriority: - case MSG_SortByStatus: - case MSG_SortBySize: - case MSG_SortByFlagged: - case MSG_SortByUnread: - sortType = GetSortTypeFromCommand(command); - if (DisplayingRecipients() && sortType == SortByAuthor) - sortType = SortByRecipient; - if (m_view->GetSortType() == sortType) - sortAscending = (m_view->GetSortOrder() != SortTypeAscending); - - - StartingUpdate(MSG_NotifyScramble, 0, 0); - status = m_view->ExternalSort(sortType, sortAscending); - EndingUpdate(MSG_NotifyScramble, 0, 0); - break; - - case MSG_SortBackward: - sortAscending = m_view->GetSortOrder() != SortTypeAscending; - - StartingUpdate(MSG_NotifyScramble, 0, 0); - status = m_view->ExternalSort(m_view->GetSortType(), sortAscending); - EndingUpdate(MSG_NotifyScramble, 0, 0); - break; - - case MSG_PostNew: - ComposeNewsMessage(m_folder); - break; - case MSG_PostReply: - case MSG_PostAndMailReply: - case MSG_ReplyToSender: - case MSG_ReplyToAll: - case MSG_ForwardMessageQuoted: - status = ComposeMessage(command, indices, numIndices); - break; - case MSG_ForwardMessageAttachment: - // ###tw FIX ME! This only works with one message! - status = ForwardMessages(indices, numIndices); - break; - case MSG_AddSender: - case MSG_AddAll: - if (numIndices > 1) - XP_QSORT (indices, numIndices, sizeof(MSG_ViewIndex), CompareViewIndices); - - FEEnd(); - calledFEEnd = TRUE; - AB_SetIsImporting (FE_GetAddressBook(this), TRUE); - MSG_Pane::ApplyCommandToIndices(command, indices, numIndices); - AB_SetIsImporting (FE_GetAddressBook(this), FALSE); - break; - - case MSG_CollapseAll: - StartingUpdate(MSG_NotifyNone, 0, 0); - status = m_view->CollapseAll(); - EndingUpdate(MSG_NotifyNone, 0, 0); - break; - case MSG_ExpandAll: - StartingUpdate(MSG_NotifyNone, 0, 0); - status = m_view->ExpandAll(); - EndingUpdate(MSG_NotifyNone, 0, 0); - break; - case MSG_MarkMessages: - case MSG_UnmarkMessages: - case MSG_MarkMessagesRead: - case MSG_MarkMessagesUnread: - case MSG_ToggleMessageRead: - case MSG_DeleteMessage: - case MSG_DeleteMessageNoTrash: - // since the FE could have constructed the list of indices in - // any order (e.g. order of discontiguous selection), we have to - // sort the indices in order to find out which MSG_ViewIndex will - // be deleted first. - if (numIndices > 1) - XP_QSORT (indices, numIndices, sizeof(MSG_ViewIndex), CompareViewIndices); - - if (command != MSG_DeleteMessage && - command != MSG_DeleteMessageNoTrash) - GetUndoManager()->AddUndoAction( - new MarkMessageUndoAction(this, command, indices, - numIndices, GetFolder())); - FEEnd(); - calledFEEnd = TRUE; - StartingUpdate(MSG_NotifyNone, 0, 0); - ApplyCommandToIndices(command, indices, numIndices); - EndingUpdate(MSG_NotifyNone, 0, 0); - - break; - case MSG_ViewNewOnly: - case MSG_ViewKilledThreads: - case MSG_ViewAllThreads : - case MSG_ViewThreadsWithNew: /* t: Show only threads with new messages */ - case MSG_ViewWatchedThreadsWithNew: /* t: Show only watched thrds with new msgs */ - SwitchViewType(command); - break; - case MSG_ModerateNewsgroup: - status = ModerateNewsgroup (GetFolder()); - break; - case MSG_NewCategory: - status = NewNewsgroup (GetFolder(), TRUE); - break; - case MSG_CompressFolder: - { - MSG_FolderInfoMail *mailFolder = GetFolder()->GetMailFolderInfo(); - if (mailFolder) - status = CompressOneMailFolder(mailFolder); - else - XP_ASSERT(FALSE); // MSG_CommandStatus should have failed! - break; - } - default: - status = MSG_Pane::DoCommand(command, indices, numIndices); - break; - } - if (!calledFEEnd) - FEEnd(); - return status; -} - - -MsgERR -MSG_ThreadPane::GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, int32 numindices, - XP_Bool *selectable_pP, - MSG_COMMAND_CHECK_STATE *selected_pP, - const char **display_stringP, - XP_Bool *plural_pP) -{ - // don't want to go through the null view and db check for get new mail. - if (command == MSG_GetNewMail || command == MSG_MailNew) - return MSG_Pane::GetCommandStatus( command, indices, numindices, - selectable_pP, selected_pP, display_stringP, plural_pP); - - if (!m_view) return FALSE; - - const char *display_string = 0; - XP_Bool plural_p = FALSE; - // N.B. default is TRUE, so you don't need to set it in each case - XP_Bool selectable_p = TRUE; - XP_Bool selected_p = FALSE; - XP_Bool selected_used_p = FALSE; - XP_Bool news_p = (m_folder && m_folder->IsNews()); - XP_Bool gotBody = TRUE; - // if we're offline, and we don't have the body of a news or imap message, then - // dis - if (NET_IsOffline() && (news_p || (m_folder && m_folder->GetType() == FOLDER_IMAPMAIL))) - { - for (int32 index = 0; index < numindices; index++) - { - char extraFlag = 0; - m_view->GetExtraFlag(indices[index], &extraFlag); - if (! (extraFlag & kOffline)) - { - gotBody = FALSE; - break; - } - } - } - MessageDB* db = m_view->GetDB(); - if (!db) return FALSE; - switch(command) { - case MSG_CompressFolder: - selectable_p = m_folder->IsMail(); - display_string = XP_GetString(MK_MSG_COMPRESS_FOLDER); - break; - case MSG_PostNew: - selectable_p = news_p && m_folder->AllowsPosting(); - display_string = XP_GetString(MK_MSG_NEW_NEWS_MESSAGE); - break; - case MSG_PostReply: - display_string = XP_GetString(MK_MSG_POST_REPLY); - selectable_p = news_p && gotBody && numindices == 1 && m_folder->AllowsPosting(); - break; - case MSG_PostAndMailReply: - display_string = XP_GetString(MK_MSG_POST_MAIL_REPLY); - selectable_p = news_p && gotBody && numindices == 1 && m_folder->AllowsPosting(); - break; - case MSG_ReplyToSender: - display_string = XP_GetString(MK_MSG_REPLY_TO_SENDER); - selectable_p = (numindices == 1) && gotBody; - break; - case MSG_ReplyToAll: - display_string = XP_GetString(MK_MSG_REPLY_TO_ALL); - selectable_p = (numindices == 1) && gotBody ; - break; - case MSG_ForwardMessageQuoted: - display_string = XP_GetString(MK_MSG_FORWARD_QUOTED); - selectable_p = (numindices == 1) && gotBody; - break; - case MSG_ForwardMessage: - case MSG_ForwardMessageAttachment: - selectable_p = (numindices > 0) && gotBody; - display_string = XP_GetString(MK_MSG_FORWARD); - break; - case MSG_SortByThread: - selectable_p = (m_fecount == 0); - selected_p = (m_view->GetSortType() == SortByThread); - display_string = XP_GetString(MK_MSG_THREAD_MESSAGES); - selected_used_p = TRUE; - break; - case MSG_SortByDate: - selectable_p = (m_fecount == 0); - selected_p = (m_view->GetSortType() == SortByDate); - display_string = XP_GetString(MK_MSG_BY_DATE); - selected_used_p = TRUE; - break; - case MSG_SortByMessageNumber: - selectable_p = (m_fecount == 0); - selected_p = (m_view->GetSortType() == SortById); - display_string = XP_GetString(MK_MSG_BY_MESSAGE_NB); - selected_used_p = TRUE; - break; - case MSG_SortBySender: - selectable_p = (m_fecount == 0); - if (DisplayingRecipients()) - selected_p = (m_view->GetSortType() == SortByRecipient); - else - selected_p = (m_view->GetSortType() == SortByAuthor); - display_string = XP_GetString(MK_MSG_BY_SENDER); - selected_used_p = TRUE; - break; - case MSG_SortBySubject: - selectable_p = (m_fecount == 0); - selected_p = (m_view->GetSortType() == SortBySubject); - display_string = XP_GetString(MK_MSG_BY_SUBJECT); - selected_used_p = TRUE; - break; - case MSG_SortByPriority: - selectable_p = (m_fecount == 0); - selected_p = (m_view->GetSortType() == SortByPriority); - display_string = XP_GetString(MK_MSG_BY_PRIORITY); - selected_used_p = TRUE; - break; - case MSG_SortByStatus: - selectable_p = (m_fecount == 0); - selected_p = (m_view->GetSortType() == SortByStatus); - display_string = XP_GetString(MK_MSG_BY_STATUS); - selected_used_p = TRUE; - break; - case MSG_SortBySize: - selectable_p = (m_fecount == 0); - selected_p = (m_view->GetSortType() == SortBySize); - display_string = XP_GetString(MK_MSG_BY_SIZE); - selected_used_p = TRUE; - break; - case MSG_SortByUnread: - selectable_p = (m_fecount == 0); - selected_p = (m_view->GetSortType() == SortByUnread); - display_string = XP_GetString(MK_MSG_BY_UNREAD); - selected_used_p = TRUE; - break; - case MSG_SortByFlagged: - selectable_p = (m_fecount == 0); - selected_p = (m_view->GetSortType() == SortByFlagged); - display_string = XP_GetString(MK_MSG_BY_FLAG); - selected_used_p = TRUE; - break; - case MSG_SortBackward: - selectable_p = (m_fecount == 0); - selected_p = m_view->GetSortOrder() == SortTypeDescending; - display_string = XP_GetString(MK_MSG_SORT_BACKWARD); - selected_used_p = TRUE; - break; - case MSG_ViewAllThreads : - selected_p = m_view->GetViewType() == ViewAllThreads; - display_string = XP_GetString(MK_MSG_ALIVE_THREADS); - selected_used_p = TRUE; - break; - case MSG_ViewKilledThreads: - selected_p = m_view->GetShowingIgnored(); - selectable_p = (m_view->GetViewType() == ViewAllThreads); - display_string = XP_GetString(MK_MSG_KILLED_THREADS); - selected_used_p = TRUE; - break; - case MSG_ViewThreadsWithNew: /* t: Show only threads with new messages */ - selected_p = m_view->GetViewType() == ViewOnlyThreadsWithNew; - display_string = XP_GetString(MK_MSG_THREADS_WITH_NEW); - selected_used_p = TRUE; - break; - case MSG_ViewWatchedThreadsWithNew: /* t: Show only watched thrds with new msgs */ - selected_p = m_view->GetViewType() == ViewWatchedThreadsWithNew; - display_string = XP_GetString(MK_MSG_WATCHED_THREADS); - selected_used_p = TRUE; - break; - case MSG_ViewNewOnly: - selected_p = m_view->GetViewType() == ViewOnlyNewHeaders; - display_string = XP_GetString(MK_MSG_NEW_MESSAGES_ONLY); - selected_used_p = TRUE; - break; - case MSG_AddSender: - display_string = XP_GetString(MK_MSG_ADD_SENDER_TO_ADDRESS_BOOK); - selectable_p = TRUE; - break; - case MSG_AddAll: - display_string = XP_GetString(MK_MSG_ADD_ALL_TO_ADDRESS_BOOK); - selectable_p = TRUE; - break; - - case MSG_DeleteMessage: - { - MSG_FolderInfo *trashFolder = NULL; - GetMaster()->GetFoldersWithFlag (MSG_FOLDER_FLAG_TRASH, &trashFolder, 1); - XP_ASSERT(trashFolder); - selectable_p = numindices > 0; - if (selectable_p) - selectable_p = db->GetMailDB() != NULL; // can't delete news msg - if (selectable_p) // Trash must exist and be unlocked - selectable_p = trashFolder && !trashFolder->IsLocked(); - display_string = XP_GetString (MK_MSG_DELETE_SEL_MSGS); - break; - } - case MSG_CollapseAll: - case MSG_ExpandAll: - selectable_p = (m_view->GetSize() > 0); - break; - case MSG_ToggleMessageRead: - selectable_p = (numindices > 0); - break; - case MSG_ModerateNewsgroup: - selectable_p = ModerateNewsgroupStatus (GetFolder()); - break; - case MSG_NewCategory: - selectable_p = NewNewsgroupStatus (GetFolder()); - break; - default: - return MSG_Pane::GetCommandStatus( command, indices, numindices, - selectable_pP, selected_pP, display_stringP, plural_pP); - } - if (m_numstack > 0) // if we're still performing a list changing command, disable - selectable_p = FALSE; // other commands, like sort while download new headers. - - if (selectable_pP) - *selectable_pP = selectable_p; - if (selected_pP) - { - if (selected_used_p) - { - if (selected_p) - *selected_pP = MSG_Checked; - else - *selected_pP = MSG_Unchecked; - } - else - { - *selected_pP = MSG_NotUsed; - } - } - if (display_stringP) - *display_stringP = display_string; - if (plural_pP) - *plural_pP = plural_p; - - return 0; -} - - -MsgERR MSG_ThreadPane::DataNavigate(MSG_MotionType motion, - MessageKey startKey, MessageKey * resultKey, - MessageKey *resultThreadKey) -{ - XP_ASSERT(m_view); - if (!m_view) return eNullView; - - return m_view->DataNavigate(startKey, motion, - resultKey, resultThreadKey); -} - - - -void MSG_ThreadPane::NotifyPrefsChange(NotifyCode code) -{ - if (((code == MailServerType) || (code == PopHost)) && (GetFolder()->GetType() == FOLDER_IMAPMAIL)) - FE_PaneChanged(this, TRUE, MSG_PaneNotifyFolderDeleted, (uint32)GetFolder()); -} - -// This is called when the current database or view has gone away, -// and the folder needs to be reloaded. -MsgERR MSG_ThreadPane::ReloadFolder() -{ - MSG_FolderInfo *f = m_folder; - MsgERR err = eSUCCESS; - -// XP_ASSERT(m_view == NULL); - CloseView(); // why not just make sure it's closed? - - m_folder = NULL; - err = LoadFolder(f); - return err; -} - - -MsgERR MSG_ThreadPane::FinishLoadingIMAPUpgradeFolder(XP_Bool reallyLoad) -{ - if (m_imapUpgradeBeginFolder) - { - if (reallyLoad) - LoadFolder(m_imapUpgradeBeginFolder); - m_imapUpgradeBeginFolder = 0; - } - return eSUCCESS; -} - -MsgERR -MSG_ThreadPane::LoadFolder(const char *url) -{ - MsgERR err = eSUCCESS; - int urlType = NET_URL_Type(url); - MSG_FolderInfo *folder = NULL; - char *folderName = NULL; - char *host_and_port = NULL; - - switch (urlType) - { - case NEWS_TYPE_URL: - { - folderName = NewsGroupDB::GetGroupNameFromURL(url); - host_and_port = NET_ParseURL(url, GET_HOST_PART); - - folder = m_master->FindNewsFolder(host_and_port, folderName, - *url == 's'); - } - break; - case IMAP_TYPE_URL: - { - folderName = NET_ParseURL(url, GET_PATH_PART); - folder = m_master->FindMailFolder(folderName, FALSE); - break; - } - case MAILBOX_TYPE_URL: - { - folderName = NET_ParseURL(url, GET_PATH_PART); - folder = m_master->FindMailFolder(folderName, FALSE); - break; - } - default: - break; - } - - if (folder != NULL) - err = LoadFolder(folder); - - FREEIF(folderName); - FREEIF(host_and_port); - return err; -} - -MSG_FolderInfo* MSG_ThreadPane::GetFolder() -{ - return m_folder; -} - -void MSG_ThreadPane::SetFolder(MSG_FolderInfo *info) -{ - m_folder = info; -} - - -PaneListener *MSG_ThreadPane::GetListener() -{ - return &m_threadPaneListener; -} - -MsgERR -MSG_ThreadPane::LoadFolder(MSG_FolderInfo* f) -{ - char *url = NULL; - XP_Bool calledEndingUpdate = FALSE; - XP_Bool finishedLoadingFolder = FALSE; // are we finished loading folder? - - // Is the folder we're loading going to be a mail fcc, news fcc folder, - // or a child of one of those? We don't know yet, so make sure we go - // figure it out if the FE asks - m_displayRecipients = msg_DontKnow; - - if (f == m_folder) - { - FE_PaneChanged(this, TRUE, MSG_PaneNotifyFolderLoaded, (uint32) f); - return 0; - } - - // switching folders - clear out old folder - if (m_folder) - { - ClearNewBits(FALSE); - } - m_folder = f; - - if (!f) - return CloseView(); - - XP_Bool serverFolder = (f->GetFlags() & MSG_FOLDER_FLAG_NEWS_HOST || f->GetType() == FOLDER_IMAPSERVERCONTAINER - || (f->GetFlags() & MSG_FOLDER_FLAG_DIRECTORY && f->GetDepth() < 2)); - - // we need to abort any current background parsing. - if (m_folder != NULL) - msg_InterruptContext(GetContext(), TRUE); - - if (m_folder && m_folder->UserNeedsToAuthenticateForFolder(FALSE) && m_master->PromptForHostPassword(GetContext(), m_folder) != 0) - return 0; - - FEStart(); - StartingUpdate(MSG_NotifyAll, 0, 0); - - CloseView(); - - MSG_IMAPHost *host = NULL; - MSG_IMAPFolderInfoMail *imapInfo = f->GetIMAPFolderInfoMail(); - if (imapInfo) - { - host = imapInfo->GetIMAPHost(); - } - - if (m_master->GetUpgradingToIMAPSubscription() || m_master->TryUpgradeToIMAPSubscription(GetContext(), FALSE, this, host)) - { - EndingUpdate(MSG_NotifyAll, 0, 0); - FEEnd(); - FE_PaneChanged(this, TRUE, MSG_PaneNotifyFolderLoaded, MSG_VIEWINDEXNONE); - if (GetMaster()->ShowIMAPProgressWindow()) - { - m_imapUpgradeBeginFolder = m_folder; - } - m_folder = 0; - return eSUCCESS; - } - - if (serverFolder) - { - EndingUpdate(MSG_NotifyAll, 0, 0); - FEEnd(); - FE_PaneChanged(this, TRUE, MSG_PaneNotifyFolderLoaded, (uint32) f); - return eSUCCESS; - } - - url = f->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - - ViewType typeOfView = ViewAny; -#ifdef DEBUG_bienvenu - if (f->GetType() == FOLDER_IMAPMAIL && !XP_STRCMP(f->GetName(), "r-thompson")) - typeOfView = ViewCacheless; -#endif - - if (f->IsNews() || (f->GetType() == FOLDER_IMAPMAIL)) - { - // Tell fe we're done before we open the view so fe won't - // select the first message until we've finished downloading new - // headers. Otherwise, our url will get interrupted - EndingUpdate(MSG_NotifyAll, 0, 0); - FEEnd(); - calledEndingUpdate = TRUE; - } - - if (imapInfo) - { - if (!imapInfo->GetCanIOpenThisFolder()) // NoSelect, or from ACLs - { - FE_PaneChanged(this, TRUE, MSG_PaneNotifyFolderLoaded, (uint32) f); - return eSUCCESS; - } - } - - MsgERR status = MessageDBView::OpenURL(url, GetMaster(), - typeOfView, &m_view, FALSE); - - - // fire off the IMAP url to update this folder, if it is IMAP - if ((f->GetType() == FOLDER_IMAPMAIL) && (status == eSUCCESS)) - { - MSG_IMAPFolderInfoMail *imapFolder = f->GetIMAPFolderInfoMail(); - if (imapFolder) - { - imapFolder->StartUpdateOfNewlySelectedFolder(this,TRUE,NULL); - } - else - { - XP_ASSERT(FALSE); - } - } - - if (f->GetType() == FOLDER_MAIL && status != eSUCCESS) - { - if (status == eBuildViewInBackground) - { - status = ListThreads(); - } - - if (status != eSUCCESS /*== eOldSummaryFile*/) - { - MailDB *mailDB; - - const char *pathname = ((MSG_FolderInfoMail*) f)->GetPathname(); - status = MailDB::CloneInvalidDBInfoIntoNewDB(pathname, &mailDB); - if (status == eSUCCESS || status == eNoSummaryFile) - { - MSG_Master *mailMaster = GetMaster(); - URL_Struct *url_struct; - url_struct = NET_CreateURLStruct(url, NET_DONT_RELOAD); - - if (mailDB != NULL && (status == eSUCCESS || status == eNoSummaryFile)) - { - status = MessageDBView::OpenViewOnDB(mailDB, - ViewAny, &m_view); - mailDB->Close(); // decrement ref count. - } - if (m_view != NULL && m_view->GetDB() != NULL) - { - ParseMailboxState *parseMailboxState = new ParseMailboxState(pathname); - parseMailboxState->SetView(m_view); - parseMailboxState->SetPane(this); - parseMailboxState->SetIncrementalUpdate(FALSE); - parseMailboxState->SetMaster(mailMaster); - parseMailboxState->SetDB(m_view->GetDB()->GetMailDB()); - parseMailboxState->SetContext(GetContext()); - parseMailboxState->SetFolder(m_folder); - ((MSG_FolderInfoMail*)f)->SetParseMailboxState(parseMailboxState); - // fire off url to create summary file from mailbox - will work in background - //GetURL(url_struct, FALSE); - MSG_UrlQueue::AddUrlToPane (url_struct, NULL, this); - } - } - } - } - else if (f->IsNews()) - { - MSG_FolderInfoNews *newsFolder = f->GetNewsFolderInfo(); - XP_ASSERT(newsFolder); - const char* groupname = newsFolder->GetNewsgroupName(); - if (status != eSUCCESS) - { - if (status == eOldSummaryFile || status == eErrorOpeningDB) - { - NewsGroupDB *newsDB; - const char *dbFileName = newsFolder->GetXPDBFileName(); - - if (dbFileName != NULL) - XP_FileRemove(dbFileName, xpXoverCache); - status = NewsGroupDB::Open(url, GetMaster(), &newsDB); - if (status == eSUCCESS) - { - status = MessageDBView::OpenViewOnDB(newsDB, - ViewAny, &m_view); - newsDB->Close(); - } - } - } - if (status == eSUCCESS) // get new articles from server. - { - MSG_Master *master = GetMaster(); - URL_Struct *url_struct; - url_struct = NET_CreateURLStruct(url, NET_DONT_RELOAD); - ListNewsGroupState * listState = new ListNewsGroupState(url, groupname, this); - listState->SetMaster(master); - listState->SetView(m_view); - newsFolder->SetListNewsGroupState(listState); - int status = GetURL(url_struct, FALSE); - if (status == MK_INTERRUPTED || status == MK_OFFLINE) - { - if (newsFolder->GetListNewsGroupState()) // FinishXOver not called... - { - delete listState; - newsFolder->SetListNewsGroupState(NULL); - } - StartingUpdate(MSG_NotifyAll, 0, 0); - EndingUpdate(MSG_NotifyAll, 0, 0); - finishedLoadingFolder = TRUE; - } - } - else if (status == eBuildViewInBackground) - { - status = ListThreads(); - } - } - else if (f->GetType() == FOLDER_IMAPMAIL && status != eSUCCESS) - { - const char* pathname = ((MSG_FolderInfoMail*) f)->GetPathname(); - XP_FileRemove(pathname, xpMailFolderSummary); - } - else if (status == eSUCCESS) - { - finishedLoadingFolder = TRUE; - } - if (status == eSUCCESS) - { - m_view->Add(&m_threadPaneListener); - } - - if (!calledEndingUpdate) - { - EndingUpdate(MSG_NotifyAll, 0, 0); - FEEnd(); - } - - // imap folders loads are asynchronous - // this notification will happen in - // MSG_IMAPFolderInfoMail::AllFolderHeadersAreDownloaded - if (finishedLoadingFolder && (f->GetType() != FOLDER_IMAPMAIL)) - { - FE_PaneChanged(this, TRUE, MSG_PaneNotifyFolderLoaded, (uint32) f); - // the folder loaded sync notification is for the xfe so that it knows a folder - // has loaded w/o being in a running url. -#ifdef XP_UNIX - FE_PaneChanged(this, TRUE, MSG_PaneNotifyFolderLoadedSync, (uint32) f); -#endif - } - - - if (m_folder) - m_folder->SummaryChanged(); // So thread pane can display counts. - - XP_FREE(url); - return status; -} - -char * -MSG_ThreadPane::BuildUrlForKey (MessageKey key) -{ - return m_folder->BuildUrl (m_view->GetDB(), key); -} - - -XP_Bool -MSG_ThreadPane::GetThreadLineByIndex(MSG_ViewIndex line, int32 numlines, - MSG_MessageLine* data) -{ - if (!m_view || !m_view->GetDB()) return FALSE; - int numlisted = -1; - MsgERR status; - - if (m_folder->UserNeedsToAuthenticateForFolder(TRUE)) - return FALSE; - - if (!DisplayingRecipients()) - { - status = m_view->ListShortMsgHdrByIndex(line, numlines, data, - &numlisted); - if (status != 0 || numlisted != numlines) return FALSE; - } - - else if (DisplayingRecipients()) - { - MessageHdrStruct msgHdr; - - for (int i = 0; i < numlines; i++) - { - status = m_view->ListMsgHdrByIndex(line + i, 1, &msgHdr, - &numlisted); - - if (status != 0 || numlisted != 1) - break; - MessageDB::CopyFullHdrToShortHdr(&data[i], &msgHdr); - XP_STRNCPY_SAFE(data[i].author, msgHdr.m_recipients, sizeof(data[i].author)); - } - } - return TRUE; -} - -int -MSG_ThreadPane::GetThreadLevelByIndex(MSG_ViewIndex line) -{ - if (!m_view) return FALSE; - int level = 0; - MsgERR status; - - status = m_view->GetMsgLevelByIndex(line, level); - if (!status) - return level; - else - return 0; -} - -XP_Bool -MSG_ThreadPane::GetThreadLineByKey(MessageKey key, MSG_MessageLine* data) -{ - XP_ASSERT(m_view); - if (!m_view) return FALSE; - int numlisted = -1; - MsgERR status = m_view->ListThreadsShort(&key, 1, data, &numlisted); - return (status == 0 && numlisted == 1); -} - -void -MSG_ThreadPane::ToggleRead(int line) -{ - XP_ASSERT(m_view); - m_view->ToggleReadByIndex(line); -} - - -MSG_ViewIndex -MSG_ThreadPane::GetMessageIndex(MessageKey key, XP_Bool expand /* = FALSE */) -{ - MSG_ViewIndex retIndex = MSG_VIEWINDEXNONE; - if (m_view) - retIndex = m_view->FindKey(key, expand); - - return retIndex;; -} - - -MessageKey -MSG_ThreadPane::GetMessageKey(MSG_ViewIndex index) -{ - if (!m_view) return MSG_VIEWINDEXNONE; - return m_view->GetAt(index); -} - -// These routines need to deal with getting non-thread indexes. -void -MSG_ThreadPane::ToggleExpansion(MSG_ViewIndex line, int32* numchanged) -{ - int32 ourNumChanged; - - MsgERR err = m_view->ToggleExpansion(line, (uint32 *) &ourNumChanged); - if (err == eSUCCESS) - { - if (numchanged != 0) - *numchanged = ourNumChanged; - } -} - - -int32 -MSG_ThreadPane::ExpansionDelta(MSG_ViewIndex line) -{ - int32 expansionDelta; - - XP_ASSERT(m_view); - if (!m_view) return 0; - MsgERR err = m_view->ExpansionDelta(line, &expansionDelta); - return (err == eSUCCESS) ? expansionDelta : 0; -} - - -int32 -MSG_ThreadPane::GetNumLines() -{ - if (!m_view) return 0; // Pretend no view is empty pane - return m_view->GetSize(); -} - -/*static*/ -void MSG_ThreadPane::ViewChange(MessageDBView * /*dbView*/, - MSG_ViewIndex line_number, - MessageKey /*key*/, int num_changed, - MSG_NOTIFY_CODE code, - void *closure) -{ - MSG_ThreadPane *pane = (MSG_ThreadPane *) closure; - - pane->StartingUpdate(code, line_number, num_changed); - pane->EndingUpdate(code, line_number, num_changed); -} - -MsgERR MSG_ThreadPane::OpenDraft (MSG_FolderInfo *folder, MessageKey key) -{ - /**** - XP_ASSERT ( folder->GetFlags() & MSG_FOLDER_FLAG_DRAFTS ); - ****/ - char *url = BuildUrlForKey (key); - URL_Struct* url_struct; - MSG_PostDeliveryActionInfo *actionInfo = 0; - - if (NULL != url) - { - url_struct = NET_CreateURLStruct(url, NET_DONT_RELOAD); - XP_FREE (url); - if (!url_struct) - /***** turn me to MsgERR please */ - return MK_OUT_OF_MEMORY; - - if (folder->GetFlags() & MSG_FOLDER_FLAG_DRAFTS || - folder->GetFlags() & MSG_FOLDER_FLAG_QUEUE) - { - actionInfo = new MSG_PostDeliveryActionInfo (folder) ; - /* - * actionInfo will be freed by CompositionPane - */ - if (!actionInfo) { - NET_FreeURLStruct (url_struct); - /**** turn me to MsgERR please */ - return MK_OUT_OF_MEMORY; - } - - actionInfo->m_msgKeyArray.Add(key); - actionInfo->m_flags |= MSG_FLAG_EXPUNGED; - } - - url_struct->fe_data = (void *) actionInfo; - url_struct->msg_pane = this; - url_struct->allow_content_change = FALSE; -#if 0 - NET_GetURL (url_struct, FO_OPEN_DRAFT, m_context, - MSG_ThreadPane::OpenDraftExit); -#else - MSG_UrlQueue::AddUrlToPane (url_struct, MSG_ThreadPane::OpenDraftExit, this, TRUE, FO_OPEN_DRAFT); -#endif - - return eSUCCESS; - } - else - return eUNKNOWN; //PHP need better error code -} - -void MSG_ThreadPane::OpenDraftExit (URL_Struct *url_struct, - int /*status*/, - MWContext* context) -{ - XP_ASSERT (url_struct && context); - - if (!url_struct) return; - - NET_FreeURLStruct ( url_struct ); -} - - -MsgERR -MSG_ThreadPane::ComposeMessage(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numIndices) -{ - XP_ASSERT(numIndices == 1); - if (numIndices != 1) return eUNKNOWN; - MSG_MessagePane* mpane; - MessageKey key = GetMessageKey(indices[0]); - XP_ASSERT(key != MSG_MESSAGEKEYNONE); - if (key == MSG_MESSAGEKEYNONE) return eUNKNOWN; - for (mpane = (MSG_MessagePane*) m_master->FindFirstPaneOfType(MSG_MESSAGEPANE); - mpane; - mpane = (MSG_MessagePane*) m_master->FindNextPaneOfType(mpane->GetNextPane(), - MSG_MESSAGEPANE)) - { - XP_ASSERT(mpane->GetPaneType() == MSG_MESSAGEPANE); - if (mpane->GetPaneType() != MSG_MESSAGEPANE) continue; - MSG_FolderInfo* f; - MessageKey k; - mpane->GetCurMessage(&f, &k, NULL); - if (f == m_folder && k == key) { - return mpane->ComposeMessage(command); - } - } - mpane = new MSG_MessagePane(m_context, m_master); - if (!mpane) return eOUT_OF_MEMORY; - HG83734 - return mpane->MakeComposeFor(m_folder, key, command); -} - - - -MsgERR -MSG_ThreadPane::ForwardMessages(MSG_ViewIndex* indices, int32 numIndices) -{ - MsgERR status; - if (numIndices == 1) { - return ComposeMessage(MSG_ForwardMessageAttachment, indices, numIndices); - } - if (numIndices < 1) return 0; - - MessageHdrStruct header; - status = m_view->GetDB()->GetMessageHdr(GetMessageKey(indices[0]), &header); - if (status != eSUCCESS) return status; - char* fwd_subject = CreateForwardSubject(&header); - - MSG_CompositionFields* fields = new MSG_CompositionFields(); - fields->SetSubject(fwd_subject); - FREEIF(fwd_subject); - - MSG_PostDeliveryActionInfo *actionInfo = 0; - actionInfo = new MSG_PostDeliveryActionInfo(GetFolder()); - if (actionInfo) { - actionInfo->m_flags |= MSG_FLAG_FORWARDED; - } - - for (int32 i=0 ; i<numIndices ; i++) { - char* tmp = BuildUrlForKey(GetMessageKey(indices[i])); - if (tmp) { - fields->AddForwardURL(tmp); - XP_FREE(tmp); - } - if (actionInfo) { - actionInfo->m_msgKeyArray.Add(GetMessageKey(indices[i])); - } - } - - XP_Bool prefBool = FALSE; - PREF_GetBoolPref("mail.attach_vcard",&prefBool); - fields->SetAttachVCard(prefBool); - - /* Note that forwarding multiple messages takes a totally - different code path than forwarding a single message. - */ - HG29832 - if (!fields->GetSigned()) - fields->SetSigned(MSG_GetMailSigningPreference()); - - MSG_CompositionPane* comppane = (MSG_CompositionPane*) - FE_CreateCompositionPane(m_context, fields, NULL, MSG_DEFAULT); - if (!comppane) { - delete fields; - if (actionInfo) - delete actionInfo; - } - else if (actionInfo) { - MSG_SetPostDeliveryActionInfo((MSG_Pane *)comppane, - (void *) actionInfo); - } - return 0; -} - diff --git a/mozilla/lib/libmsg/msgtpane.h b/mozilla/lib/libmsg/msgtpane.h deleted file mode 100644 index 059631ca0b2..00000000000 --- a/mozilla/lib/libmsg/msgtpane.h +++ /dev/null @@ -1,142 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgTPane_H_ -#define _MsgTPane_H_ - -#include "msglpane.h" -#include "msg.h" -#include "chngntfy.h" - -class MSG_FolderInfo; -class MSG_FolderPane; -class MSG_MessagePane; -class MessageDB; -class MessageDBView; -class MSG_ThreadPane; - -#include "msgdbvw.h" - -class ThreadPaneListener : public PaneListener -{ -public: - ThreadPaneListener(MSG_Pane *pane); - virtual ~ThreadPaneListener(); -protected: -}; - -class MSG_ThreadPane : public MSG_LinedPane -{ - friend class ThreadPaneListener; -public: - - MSG_ThreadPane(MWContext* context, MSG_Master* master); - virtual ~MSG_ThreadPane(); - - virtual MSG_PaneType GetPaneType(); - - virtual void StartingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num); - virtual void EndingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num); - virtual MessageDBView *GetMsgView() {return m_view;} - virtual void SetMsgView(MessageDBView *view) {m_view = view;} - - ViewType GetViewTypeFromCommand(MSG_CommandType command); - MsgERR SwitchViewType(MSG_CommandType command); - - virtual MsgERR DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices); - - virtual MsgERR GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, int32 numindices, - XP_Bool *selectable_p, - MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_string, - XP_Bool *plural_p); - - virtual MsgERR DataNavigate(MSG_MotionType motion, - MessageKey startKey, MessageKey *resultKey, - MessageKey *resultThreadKey); - - virtual void NotifyPrefsChange(NotifyCode code); - - MsgERR LoadFolder(MSG_FolderInfo* folder); - MsgERR LoadFolder(const char *url); - MsgERR ReloadFolder(); - - XP_Bool GetThreadLineByIndex(MSG_ViewIndex line, int32 numlines, - MSG_MessageLine* data); - int GetThreadLevelByIndex( MSG_ViewIndex line ); - XP_Bool GetThreadLineByKey(MessageKey key, MSG_MessageLine* data); - - void ToggleRead(int line); - - MSG_ViewIndex GetMessageIndex(MessageKey key, XP_Bool expand = FALSE); - virtual MessageKey GetMessageKey(MSG_ViewIndex index); //mscott - made virtual for search as view. Search pane has different method - - virtual void ToggleExpansion(MSG_ViewIndex line, int32* numchanged); - virtual int32 ExpansionDelta(MSG_ViewIndex line); - virtual int32 GetNumLines(); - - char *BuildUrlForKey(MessageKey key); - - virtual MSG_FolderInfo* GetFolder(); - virtual void SetFolder(MSG_FolderInfo *info); - - // Drafts - MsgERR OpenDraft (MSG_FolderInfo *folder, MessageKey key); - static void OpenDraftExit(URL_Struct *url , int status, MWContext *context); - - MsgERR ResetView(ViewType typeOfView); - virtual PaneListener *GetListener(); - void ClearNewBits(XP_Bool notify); - - // IMAP Subscription Upgrade - // if reallyLoad, loads the folder, otherwise clears its state - MsgERR FinishLoadingIMAPUpgradeFolder(XP_Bool reallyLoad); - MSG_FolderInfo *GetIMAPUpgradeFolder() { return m_imapUpgradeBeginFolder; } - void SetIMAPUpgradeFolder(MSG_FolderInfo *f) { m_imapUpgradeBeginFolder = f; } - -protected: - MsgERR ComposeMessage(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numIndices); - MsgERR ForwardMessages(MSG_ViewIndex* indices, int32 numIndices); - - static SortType GetSortTypeFromCommand(MSG_CommandType command); - static void ViewChange(MessageDBView *dbView, - MSG_ViewIndex line_number, - MessageKey msgKey, - int num_changed, - MSG_NOTIFY_CODE code, - void *closure); - - ThreadPaneListener m_threadPaneListener; - MSG_FolderInfo* m_folder; - MessageDBView* m_view; - - MSG_FolderInfo *m_imapUpgradeBeginFolder; - -}; - - -#endif /* _MsgTPane_H_ */ diff --git a/mozilla/lib/libmsg/msgundac.cpp b/mozilla/lib/libmsg/msgundac.cpp deleted file mode 100644 index 673bc4479b3..00000000000 --- a/mozilla/lib/libmsg/msgundac.cpp +++ /dev/null @@ -1,881 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* msgundac.cpp --- Msg undo actions implementation - */ - -#include "msg.h" -#include "errcode.h" -#include "xp_str.h" -#include "xpgetstr.h" -#include "msgdbvw.h" -#include "maildb.h" -#include "msgmpane.h" -#include "msgundac.h" -#include "msgutils.h" -#include "msgprefs.h" -#include "msgtpane.h" -#include "msgfpane.h" -#include "prsembst.h" -#include "msgimap.h" -#include "imapoff.h" - -extern "C" -{ - extern int MK_MSG_ID_NOT_IN_FOLDER; -} - -////////////////////////////////////////////////////////////////////// -// **** MarkMessageUndoAction -////////////////////////////////////////////////////////////////////// -MarkMessageUndoAction::MarkMessageUndoAction(MSG_Pane *pane, - MSG_CommandType command, - MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder) -{ - XP_ASSERT (pane && folder); - MessageDBView *view = pane->GetMsgView(); - if (view) - { - for (int i=0; i < numIndices; i++) - m_keyArray.Add( view->GetAt(*(indices+i))); - } - m_pane = pane; - m_command = command; - m_folder = folder; -} - -MarkMessageUndoAction::MarkMessageUndoAction(MSG_Pane *pane, - MSG_CommandType command, - MSG_FolderInfo *folder) -{ - XP_ASSERT (pane && folder); - - m_pane = pane; - m_command = command; - m_folder = folder; -} - -MarkMessageUndoAction::~MarkMessageUndoAction() -{ -} - -void -MarkMessageUndoAction::AddKey(MessageKey key) -{ - XP_ASSERT(MSG_MESSAGEKEYNONE != key); - if (MSG_MESSAGEKEYNONE == key) return; - m_keyArray.Add(key); -} - -MSG_CommandType -MarkMessageUndoAction::GetUndoMarkCommand() -{ - if (m_owner->GetState() == UndoRedoing) - return m_command; - switch (m_command) - { - case MSG_MarkMessages: - return MSG_UnmarkMessages; - case MSG_UnmarkMessages: - return MSG_MarkMessages; - case MSG_MarkMessagesRead: - return MSG_MarkMessagesUnread; - case MSG_MarkMessagesUnread: - return MSG_MarkMessagesRead; - case MSG_ToggleMessageRead: - return MSG_ToggleMessageRead; - default: - return m_command; - } -} - -UndoStatus -MarkMessageUndoAction::DoUndo() -{ - XP_ASSERT (m_pane); - MessageDBView *view; - MSG_ViewIndex viewIndex = MSG_VIEWINDEXNONE; - uint i, size = m_keyArray.GetSize(); - - if (!size) return UndoFailed; - - MsgERR status = eSUCCESS; - - if (m_pane->GetFolder() != m_folder) { - if (m_pane->GetPaneType() == MSG_MESSAGEPANE) - ((MSG_MessagePane*)m_pane)->LoadMessage(m_folder, m_keyArray.GetAt(size-1), NULL, TRUE); - else if (m_pane->GetPaneType() == MSG_THREADPANE) - ((MSG_ThreadPane*)m_pane)->LoadFolder(m_folder); - } - - view = m_pane->GetMsgView(); - - if (view) { - for (i=0; i < size; i++) - { - viewIndex = view->FindKey (m_keyArray.GetAt(i), TRUE); - if ( viewIndex != MSG_VIEWINDEXNONE ) - { - m_pane->StartingUpdate(MSG_NotifyNone, viewIndex, 1); - status = m_pane->ApplyCommandToIndices(GetUndoMarkCommand(), - &viewIndex, 1); - m_pane->EndingUpdate(MSG_NotifyNone, viewIndex, 1); - } - } - } - - if (status == eSUCCESS) - return UndoComplete; - else - return UndoFailed; -} - -XP_Bool -MarkMessageUndoAction::HasFolder(MSG_FolderInfo *folder) -{ - return (m_folder == folder); -} - -////////////////////////////////////////////////////////////////////////////// -// UndoMarkChangeListener -// -UndoMarkChangeListener::UndoMarkChangeListener(MSG_Pane *pane, - MSG_FolderInfo *folderInfo, - MSG_CommandType command) -{ - XP_ASSERT(pane && folderInfo); - m_pane = pane; - m_folderInfo = folderInfo; - m_undoAction = NULL; - m_command = command; -} - -UndoMarkChangeListener::~UndoMarkChangeListener() -{ - // if there is a undoAction add undo manager - if (m_undoAction) - m_pane->GetUndoManager()->AddUndoAction(m_undoAction); -} - -void -UndoMarkChangeListener::OnKeyChange(MessageKey keyChanged, - int32 flags, - ChangeListener* /*instigator*/) -{ - int32 tmpFlags = 0; - switch (m_command) - { - case MSG_MarkMessagesRead: - case MSG_ToggleMessageRead: - tmpFlags = kIsRead; - break; - case MSG_MarkMessagesUnread: - tmpFlags = ~kIsRead; - break; - case MSG_MarkMessages: - tmpFlags = kMsgMarked; - break; - case MSG_UnmarkMessages: - tmpFlags = ~kMsgMarked; - break; - default: - break; - } - if (flags & tmpFlags) { - if (!m_undoAction) - m_undoAction = new MarkMessageUndoAction (m_pane, m_command, m_folderInfo); - XP_ASSERT (m_undoAction); - m_undoAction->AddKey(keyChanged); - } -} - -///////////////////////////////////////////////////////////////////////////// -// MoveCopyMessagesUndoAction -//////////////////////////////////////////////////////////////////////////// -MoveCopyMessagesUndoAction::MoveCopyMessagesUndoAction ( - MSG_FolderInfo *srcFolder, - MSG_FolderInfo *dstFolder, - XP_Bool isMove, - MSG_Pane *pane, - MessageKey prevKeyToLoad, - MessageKey nextKeyToLoad) -{ - XP_ASSERT (srcFolder && dstFolder && pane); - m_srcFolder = srcFolder; - m_dstFolder = dstFolder; - m_isMove = isMove; - m_pane = pane; - m_prevKeyToLoad = prevKeyToLoad; - m_nextKeyToLoad = nextKeyToLoad; - m_mailDB = NULL; -} - -XP_Bool -MoveCopyMessagesUndoAction::HasFolder(MSG_FolderInfo *folder) -{ - return (m_srcFolder == folder || - m_dstFolder == folder); -} - -MoveCopyMessagesUndoAction::~MoveCopyMessagesUndoAction() -{ -} - -UndoStatus -MoveCopyMessagesUndoAction::DoUndo() -{ - MailDB *srcDb = NULL, *dstDb = NULL; - MsgERR msgErr = MailDB::Open(m_dstFolder->GetMailFolderInfo()->GetPathname(), - FALSE, &dstDb); - - if (eSUCCESS == msgErr) - { - msgErr = MailDB::Open(m_srcFolder->GetMailFolderInfo()->GetPathname(), - FALSE, &srcDb); - if (eSUCCESS == msgErr) - { - uint i, size; - MailMessageHdr* msgHdr; - MessageDBView *view = m_pane->GetMsgView(); - - if (m_owner->GetState() == UndoUndoing) - { - for (i=0, size = m_dstArray.GetSize(); i < size; i++) - { - if (m_isMove) - { - msgHdr = dstDb->GetMailHdrForKey(m_dstArray.GetAt(i)); - if (!msgHdr) // the message must be deleted by someone else - { - // XP_ASSERT(msgHdr); - // *** need to post out some informative message - continue; - } - MailMessageHdr *newHdr = new MailMessageHdr; - XP_ASSERT(newHdr); - newHdr->CopyFromMsgHdr (msgHdr, dstDb->GetDB(), srcDb->GetDB()); - newHdr->SetMessageKey(m_srcArray.GetAt(i)); - msgErr = srcDb->UndoDelete(newHdr); - delete msgHdr; - delete newHdr; - } - - dstDb->DeleteMessage(m_dstArray.GetAt(i)); - } - if (m_isMove) - { - m_owner->SetUndoMsgFolder(m_srcFolder); - m_owner->AddMsgKey(m_prevKeyToLoad); - } - } - else - { - for (i=0, size=m_srcArray.GetSize(); i < size; i++) - { - msgHdr = srcDb->GetMailHdrForKey(m_srcArray.GetAt(i)); - if (!msgHdr) // the message must be deleted by someone else - { - // XP_ASSERT(msgHdr); - // *** need to post out some informative message - continue; - } - MailMessageHdr *newHdr = new MailMessageHdr; - XP_ASSERT(newHdr); - newHdr->CopyFromMsgHdr (msgHdr, srcDb->GetDB(), dstDb->GetDB()); - newHdr->SetMessageKey(m_dstArray.GetAt(i)); - msgErr = dstDb->UndoDelete(newHdr); - delete msgHdr; - if (m_isMove) - { - srcDb->DeleteMessage(m_srcArray.GetAt(i)); - - } - } - - if (m_isMove) - { - m_owner->SetUndoMsgFolder(m_srcFolder); - m_owner->AddMsgKey(m_nextKeyToLoad); - } - } - srcDb->Close(); - dstDb->Close(); - - return UndoComplete; - } - else - { - dstDb->Close(); - if (srcDb) - srcDb->Close(); - return ReCreateMailDB(m_srcFolder); - } - } - else - { - if (dstDb) - dstDb->Close(); - return ReCreateMailDB(m_dstFolder); - } -} - -void -MoveCopyMessagesUndoAction::AddDstKey(MessageKey key) -{ - m_dstArray.Add(key); -} - -void -MoveCopyMessagesUndoAction::AddSrcKey(MessageKey key) -{ - m_srcArray.Add(key); -} - -UndoStatus -MoveCopyMessagesUndoAction::UndoPreExit() -{ - if (m_mailDB) - { - m_mailDB->Close(); - m_mailDB = NULL; - } - return DoUndo(); -} - -UndoStatus -MoveCopyMessagesUndoAction::ReCreateMailDB(MSG_FolderInfo *folder) -{ - const char *pathname = folder->GetMailFolderInfo()->GetPathname(); - char * url = PR_smprintf ("mailbox:%s", pathname); - URL_Struct *url_struct = NET_CreateURLStruct(url, NET_DONT_RELOAD); - MailDB *mailDB; - MsgERR status = eUNKNOWN; - - XP_FileRemove(pathname, xpMailFolderSummary); - - status = MailDB::Open(pathname, TRUE, &mailDB); - if (mailDB != NULL && (status == eSUCCESS || status == eNoSummaryFile)) - { - // mailDB->Close(); // decrement ref count. - m_mailDB = mailDB; - - ParseMailboxState *parseMailboxState = new ParseMailboxState(pathname); - // parseMailboxState->SetView(m_view); - parseMailboxState->SetIncrementalUpdate(FALSE); - parseMailboxState->SetMaster(m_pane->GetMaster()); - parseMailboxState->SetDB(mailDB); - parseMailboxState->SetContext(m_pane->GetContext()); - parseMailboxState->SetFolder(folder); - - folder->GetMailFolderInfo()->SetParseMailboxState(parseMailboxState); - url_struct->msg_pane = m_pane; - UndoURLHook(url_struct); - m_pane->GetURL(url_struct, FALSE); - return UndoInProgress; - } - else - return UndoFailed; -} -/////////////////////////////////////////////////////////////////////////// -// MoveFolderUndoAction -/////////////////////////////////////////////////////////////////////////// - -MoveFolderUndoAction::MoveFolderUndoAction (MSG_Pane *pane, - MSG_FolderInfo *srcParent, - MSG_FolderInfo *srcFolder, - MSG_FolderInfo *dstFolder) -{ - XP_ASSERT (pane && srcFolder && dstFolder); - m_pane = pane; - m_srcParent = srcParent; - m_srcFolder = srcFolder; - m_dstFolder = dstFolder; -} - -MoveFolderUndoAction::~MoveFolderUndoAction () -{ -} - -XP_Bool -MoveFolderUndoAction::HasFolder(MSG_FolderInfo *folder) -{ - return (m_srcParent == folder || - m_srcFolder == folder || - m_dstFolder == folder); -} - -UndoStatus -MoveFolderUndoAction::DoUndo() -{ - MSG_FolderPane *folderPane = (MSG_FolderPane*) m_pane; - MsgERR err = eUNKNOWN; - MSG_FolderInfo *destFolder, *srcFolder, *srcParent; - - srcFolder = m_srcFolder; - if (m_owner->GetState() == UndoUndoing) { - srcParent = m_dstFolder; - destFolder = m_srcParent; - } - else { - srcParent = m_srcParent; - destFolder = m_dstFolder; - } - - // If we're moving into an IMAP folder, start the URL here - if ( ((destFolder->GetType() == FOLDER_IMAPMAIL) || - (destFolder == m_pane->GetMaster()->GetImapMailFolderTree())) && - (srcFolder->GetType() == FOLDER_IMAPMAIL) ) - { - const char *destinationName = ""; // covers promote to root - char destinationHierarchySeparator = 0; // covers promote to root - if (destFolder->GetType() == FOLDER_IMAPMAIL) - { - destinationName = ((MSG_IMAPFolderInfoMail *)destFolder)->GetOnlineName(); - destinationHierarchySeparator = ((MSG_IMAPFolderInfoMail *)destFolder)->GetOnlineHierarchySeparator(); - } - - // the rename on the server has to happen first imap.h - char *renameMailboxURL = CreateImapMailboxMoveFolderHierarchyUrl - (m_pane->GetPrefs()->GetPopHost(), - ((MSG_IMAPFolderInfoMail *) srcFolder)->GetOnlineName(), - ((MSG_IMAPFolderInfoMail *) srcFolder)->GetOnlineHierarchySeparator(), - destinationName,destinationHierarchySeparator); - if (renameMailboxURL) - { - URL_Struct *url_struct = NET_CreateURLStruct(renameMailboxURL, NET_SUPER_RELOAD); - if (url_struct) { - url_struct->msg_pane = m_pane; - UndoURLHook(url_struct); - m_pane->GetURL(url_struct, FALSE); - } - XP_FREE(renameMailboxURL); - } - return UndoInProgress; - } - else - { - err = folderPane->UndoMoveFolder(srcParent, srcFolder, destFolder); - } - - - if (eSUCCESS == err) - return UndoComplete; - - return UndoFailed; -} - -////////////////////////////////////////////////////////////////////////////// -// RenameFolderUndoAction -////////////////////////////////////////////////////////////////////////////// -RenameFolderUndoAction::RenameFolderUndoAction(MSG_Pane *pane, - MSG_FolderInfo *folder, - const char *oldName, - const char *newName) -{ - XP_ASSERT (pane && folder && oldName && newName); - m_pane = pane; - m_folder = folder; - m_oldName = XP_STRDUP(oldName); - m_newName = XP_STRDUP(newName); -} - -XP_Bool -RenameFolderUndoAction::HasFolder(MSG_FolderInfo *folder) -{ - return (m_folder == folder); -} - -RenameFolderUndoAction::~RenameFolderUndoAction() -{ - XP_FREE (m_oldName); - XP_FREE (m_newName); -} - -UndoStatus -RenameFolderUndoAction::DoUndo() -{ - MsgERR err = eUNKNOWN; - - if (m_owner->GetState() == UndoUndoing) - err = ((MSG_FolderPane*)m_pane)->RenameFolder(m_folder, m_oldName); - else - err = ((MSG_FolderPane*)m_pane)->RenameFolder(m_folder, m_newName); - - if (err == eSUCCESS) - return UndoComplete; - - return UndoFailed; -} - -/////////////////////////////////////////////////////////////////////////// -// IMAPMoveMessagesUndoAction -/////////////////////////////////////////////////////////////////////////// -IMAPMoveCopyMessagesUndoAction::IMAPMoveCopyMessagesUndoAction( - MSG_Pane *pane, - MSG_FolderInfo *srcFolder, - MSG_FolderInfo *dstFolder, - XP_Bool isMove, - MessageKey prevKeyToLoad, - MessageKey nextKeyToLoad) -{ - XP_ASSERT(pane && srcFolder && dstFolder); - m_pane = pane; - m_srcFolder = srcFolder; - m_dstFolder = dstFolder; /* just for the record; cannot do anything */ - m_prevKeyToLoad = prevKeyToLoad; - m_nextKeyToLoad = nextKeyToLoad; - m_isMove = isMove; -} - -IMAPMoveCopyMessagesUndoAction::~IMAPMoveCopyMessagesUndoAction() -{ -} - -XP_Bool -IMAPMoveCopyMessagesUndoAction::HasFolder(MSG_FolderInfo *folder) -{ - return (m_srcFolder == folder); -} - -UndoStatus -IMAPMoveCopyMessagesUndoAction::DoUndo() -{ - if (! m_keyArray.GetSize()) return UndoComplete; - - if (((MSG_IMAPFolderInfoMail *)m_srcFolder)->UndoMoveCopyMessagesHelper( - m_pane, m_keyArray, this)) - return UndoInProgress; - else - return UndoFailed; -} - -UndoStatus -IMAPMoveCopyMessagesUndoAction::UndoPreExit() -{ - if (m_owner->GetState() == UndoUndoing) { - if (m_isMove) - m_owner->AddMsgKey(m_prevKeyToLoad); - } - else { - if (m_isMove) - m_owner->AddMsgKey(m_nextKeyToLoad); - } - return UndoComplete; -} - -void -IMAPMoveCopyMessagesUndoAction::AddKey(MessageKey key) -{ - m_keyArray.Add(key); -} - - -//////////////////////////////////////////////////////////////////// -// IMAPRenameFolderUndoAction -//////////////////////////////////////////////////////////////////// - -IMAPRenameFolderUndoAction::IMAPRenameFolderUndoAction( - MSG_Pane *pane, - MSG_FolderInfo *folder, - const char *oldName, - const char *newName) -{ - XP_ASSERT (pane && folder && oldName && newName); - m_pane = pane; - m_folder = folder; - m_oldName = XP_STRDUP(oldName); - m_newName = XP_STRDUP(newName); -} - -XP_Bool -IMAPRenameFolderUndoAction::HasFolder(MSG_FolderInfo *folder) -{ - return (m_folder == folder); -} - -IMAPRenameFolderUndoAction::~IMAPRenameFolderUndoAction() -{ - XP_FREE (m_oldName); - XP_FREE (m_newName); -} - -UndoStatus -IMAPRenameFolderUndoAction::DoUndo() -{ - char *renameMailboxURL = NULL; - - if (m_owner->GetState() == UndoUndoing) { - renameMailboxURL = CreateImapMailboxRenameLeafUrl( - m_pane->GetPrefs()->GetPopHost(), - ((MSG_IMAPFolderInfoMail *)m_folder)->GetOnlineName(), - ((MSG_IMAPFolderInfoMail *)m_folder)->GetOnlineHierarchySeparator(), - m_oldName); - } - else { - renameMailboxURL = CreateImapMailboxRenameLeafUrl( - m_pane->GetPrefs()->GetPopHost(), - ((MSG_IMAPFolderInfoMail *)m_folder)->GetOnlineName(), - ((MSG_IMAPFolderInfoMail *)m_folder)->GetOnlineHierarchySeparator(), - m_newName); - } - - if (renameMailboxURL) { - URL_Struct *url_struct = - NET_CreateURLStruct(renameMailboxURL, NET_SUPER_RELOAD); - - XP_FREEIF(renameMailboxURL); - - if (url_struct) { - url_struct->msg_pane = m_pane; - UndoURLHook(url_struct); - m_pane->GetURL(url_struct, FALSE); - return UndoInProgress; - } - } - return UndoFailed; -} - -UndoStatus -IMAPRenameFolderUndoAction::UndoPreExit() -{ - // this may work - return UndoComplete; -} - -//////////////////////////////////////////////////////////// -// OfflineIMAPUndoAction -//////////////////////////////////////////////////////////// - -UndoIMAPChangeListener::UndoIMAPChangeListener(OfflineIMAPUndoAction *action) -{ - m_undoAction = action; -} - -UndoIMAPChangeListener::~UndoIMAPChangeListener() -{ -} - -void UndoIMAPChangeListener::OnAnnouncerGoingAway(ChangeAnnouncer * /*instigator*/) -{ - if (m_undoAction->m_db) - { - m_undoAction->m_db->RemoveListener(this); - m_undoAction->m_db = NULL; - } -} - -OfflineIMAPUndoAction::OfflineIMAPUndoAction (MSG_Pane *pane, MSG_FolderInfo* folder, - MessageKey dbKey, int32 opType, - MSG_FolderInfo *srcFolder, MSG_FolderInfo *dstFolder, - imapMessageFlagsType flags, MailMessageHdr *hdr, XP_Bool addFlag) -{ - XP_Bool dbWasCreated=FALSE; - - m_pane = pane; - m_dbKey = dbKey; - m_folder = (MSG_IMAPFolderInfoMail*) folder; - m_srcFolder = (MSG_IMAPFolderInfoMail*) srcFolder; - m_dstFolder = (MSG_IMAPFolderInfoMail*) dstFolder; - m_opType = opType; - m_flags = flags; - m_header = NULL; - m_db = NULL; - m_addFlags = addFlag; - m_changeListener = NULL; - if (!m_srcFolder) - m_srcFolder = m_folder; - if (hdr) - { - MsgERR dbStatus = ImapMailDB::Open(m_srcFolder->GetMailFolderInfo()->GetPathname(), TRUE, // create if necessary - (MailDB**) &m_db, m_pane->GetMaster(), &dbWasCreated); - if (!m_db) - return; - m_header = new MailMessageHdr; - m_header->CopyFromMsgHdr (hdr, m_db->GetDB(), m_db->GetDB()); - m_changeListener = new UndoIMAPChangeListener(this); - m_db->AddListener(m_changeListener); - } -} - - -XP_Bool OfflineIMAPUndoAction::HasFolder(MSG_FolderInfo *folder) -{ - return ((MSG_FolderInfo*) m_folder == folder); -} - -OfflineIMAPUndoAction::~OfflineIMAPUndoAction() -{ - if (m_db) - { - delete m_header; - - if (m_changeListener) - m_db->RemoveListener(m_changeListener); - m_db->Close(); - m_db = NULL; - } - else - XP_ASSERT(!m_header); -} - - -// Open the database and find the key for the offline operation that we want to -// undo, then remove it from the database, we also hold on to this -// data for a redo operation. -// Lesson I learned the hard way, you do not RemoveReference after an Add or Delete operation on -// a header or op item. - -UndoStatus OfflineIMAPUndoAction::DoUndo() -{ - IDArray keys; - ImapMailDB *destdb = NULL; - DBOfflineImapOperation *op = NULL; - XP_Bool dbWasCreated=FALSE; - MailMessageHdr *restoreHdr = NULL; - MsgERR dbStatus = 0; - - if (!m_folder || !m_pane) - return UndoFailed; - dbStatus = ImapMailDB::Open(m_srcFolder->GetMailFolderInfo()->GetPathname(), TRUE, // create if necessary - (MailDB**) &m_db, m_pane->GetMaster(), &dbWasCreated); - if (!m_db) - return UndoFailed; - if (m_owner->GetState() == UndoRedoing) // REDO - { - switch (m_opType) - { - case kMsgMoved: - case kMsgCopy: - op = m_db->GetOfflineOpForKey(m_dbKey, TRUE); - if (op) - { - if (m_opType == kMsgMoved) - op->SetMessageMoveOperation(m_dstFolder->GetOnlineName()); // offline move - if (m_opType == kMsgCopy) - op->AddMessageCopyOperation(m_dstFolder->GetOnlineName()); // offline copy - delete op; - op = NULL; - } - m_dstFolder->SummaryChanged(); - break; - case kAddedHeader: - dbStatus = ImapMailDB::Open(m_dstFolder->GetMailFolderInfo()->GetPathname(), TRUE, // create if necessary - (MailDB**) &destdb, m_pane->GetMaster(), &dbWasCreated); - if (!destdb) - return UndoFailed; - restoreHdr = new MailMessageHdr; - if (restoreHdr) - { - if (m_header) - { - restoreHdr->CopyFromMsgHdr (m_header, m_db->GetDB(), destdb->GetDB()); - int err = destdb->AddHdrToDB(restoreHdr, NULL, FALSE); - } - } - op = destdb->GetOfflineOpForKey(m_dbKey, TRUE); - if (op) - { - op->SetSourceMailbox(m_srcFolder->GetOnlineName(), m_dbKey); - delete op; - } - m_dstFolder->SummaryChanged(); - destdb->Close(); - break; - case kDeletedMsg: - m_db->DeleteMessage(m_dbKey); - break; - case kMsgMarkedDeleted: - m_db->MarkImapDeleted(m_dbKey, TRUE, NULL); - break; - case kFlagsChanged: - op = m_db->GetOfflineOpForKey(m_dbKey, TRUE); - if (op) - { - if (m_addFlags) - op->SetImapFlagOperation(op->GetNewMessageFlags() | m_flags); - else - op->SetImapFlagOperation(op->GetNewMessageFlags() & ~m_flags); - delete op; - } - break; - default: - break; - } - m_db->Close(); - m_db = NULL; - m_srcFolder->SummaryChanged(); - return UndoComplete; - } - switch (m_opType) // UNDO - { - case kMsgMoved: - case kMsgCopy: - case kAddedHeader: - case kFlagsChanged: - op = m_db->GetOfflineOpForKey(m_dbKey, FALSE); - if (op) - { - m_db->DeleteOfflineOp(m_dbKey); - delete op; - op = NULL; - } - if (m_header && (m_opType == kAddedHeader)) - { - MailMessageHdr *mailHdr = m_db->GetMailHdrForKey(m_header->GetMessageKey()); - if (mailHdr) - m_db->DeleteHeader(mailHdr, NULL, FALSE); - delete mailHdr; - } - break; - case kDeletedMsg: - restoreHdr = new MailMessageHdr; - if (restoreHdr) - { - dbStatus = ImapMailDB::Open(m_dstFolder->GetMailFolderInfo()->GetPathname(), TRUE, // create if necessary - (MailDB**) &destdb, m_pane->GetMaster(), &dbWasCreated); - if (!destdb) - return UndoFailed; - if (m_header) - { - restoreHdr->CopyFromMsgHdr (m_header, destdb->GetDB(), m_db->GetDB()); - m_db->AddHdrToDB(restoreHdr, NULL, TRUE); - } - destdb->Close(); - m_dstFolder->SummaryChanged(); - } - break; - case kMsgMarkedDeleted: - m_db->MarkImapDeleted(m_dbKey, FALSE, NULL); - break; - default: - break; - } - m_db->Close(); - m_db = NULL; - m_srcFolder->SummaryChanged(); - return UndoComplete; -} - - - - diff --git a/mozilla/lib/libmsg/msgundac.h b/mozilla/lib/libmsg/msgundac.h deleted file mode 100644 index 0fd2b7363dd..00000000000 --- a/mozilla/lib/libmsg/msgundac.h +++ /dev/null @@ -1,247 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* msgundac.h --- internal defs for msg undo actions - */ - -#ifndef MsgUndoActions_H -#define MsgUndoActions_H - -#include "msgundmg.h" -#include "msgfinfo.h" -#include "chngntfy.h" -#include "mailhdr.h" - - -class MarkMessageUndoAction : public UndoAction -{ -public: - MarkMessageUndoAction (MSG_Pane *pane, - MSG_CommandType command, - MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo *folder); - MarkMessageUndoAction (MSG_Pane *pane, - MSG_CommandType command, - MSG_FolderInfo *folder); - virtual ~MarkMessageUndoAction(); - - virtual UndoStatus DoUndo(); - virtual XP_Bool HasFolder(MSG_FolderInfo *folder); - void AddKey(MessageKey key); - -protected: - // helper - MSG_CommandType GetUndoMarkCommand(); - -protected: - MSG_Pane *m_pane; - MSG_CommandType m_command; - IDArray m_keyArray; - MSG_FolderInfo* m_folder; -}; - -class OfflineIMAPUndoAction; - -class UndoIMAPChangeListener : public ChangeListener { -public: - UndoIMAPChangeListener(OfflineIMAPUndoAction *action); - virtual ~UndoIMAPChangeListener(); - - virtual void OnAnnouncerGoingAway(ChangeAnnouncer * /*instigator*/) ; - -protected: - OfflineIMAPUndoAction *m_undoAction; -}; - - -class OfflineIMAPUndoAction : public UndoAction -{ -public: - friend class UndoIMAPChangeListener; - OfflineIMAPUndoAction (MSG_Pane *pane, MSG_FolderInfo* folder, - MessageKey dbKey, int32 opType, - MSG_FolderInfo *srcFolder, MSG_FolderInfo *dstFolder, - imapMessageFlagsType flags, MailMessageHdr *hdr, XP_Bool addFlag = FALSE); - virtual ~OfflineIMAPUndoAction(); - virtual XP_Bool HasFolder(MSG_FolderInfo *folder); - virtual UndoStatus DoUndo(); - -protected: - MSG_Pane *m_pane; - MessageKey m_dbKey; - ImapMailDB *m_db; - MSG_IMAPFolderInfoMail *m_folder; - MSG_IMAPFolderInfoMail *m_srcFolder; - MSG_IMAPFolderInfoMail *m_dstFolder; - int32 m_opType; - imapMessageFlagsType m_flags; - MailMessageHdr *m_header; - XP_Bool m_addFlags; - UndoIMAPChangeListener *m_changeListener; -}; - - -class UndoMarkChangeListener : public ChangeListener { -public: - UndoMarkChangeListener(MSG_Pane *pane, - MSG_FolderInfo *folderInfo, - MSG_CommandType command); - virtual ~UndoMarkChangeListener(); - - virtual void OnKeyChange(MessageKey keyChanged, int32 flags, - ChangeListener *instigator); - -protected: - MSG_Pane *m_pane; - MSG_FolderInfo *m_folderInfo; - MSG_CommandType m_command; - MarkMessageUndoAction *m_undoAction; -}; - - -class MoveCopyMessagesUndoAction : public UndoAction -{ -public: - MoveCopyMessagesUndoAction(MSG_FolderInfo *srcFolder, - MSG_FolderInfo *dstFolder, - XP_Bool isMove, - MSG_Pane *pane, - MessageKey prevKeyToLoad, - MessageKey nextKeyToLoad); - virtual ~MoveCopyMessagesUndoAction(); - - virtual UndoStatus DoUndo(); - virtual XP_Bool HasFolder(MSG_FolderInfo *folder); - virtual UndoStatus UndoPreExit(); - - // helper methods - void AddDstKey(MessageKey key); - void AddSrcKey(MessageKey key); - UndoStatus ReCreateMailDB(MSG_FolderInfo *folder); - -protected: - MSG_Pane *m_pane; - MSG_FolderInfo *m_srcFolder; - MSG_FolderInfo *m_dstFolder; - XP_Bool m_isMove; - MessageKey m_prevKeyToLoad; - MessageKey m_nextKeyToLoad; - IDArray m_srcArray; - IDArray m_dstArray; - MailDB *m_mailDB; -}; - -class MoveFolderUndoAction : public UndoAction -{ -public: - MoveFolderUndoAction(MSG_Pane *pane, - MSG_FolderInfo *srcParent, - MSG_FolderInfo *srcFolder, - MSG_FolderInfo *dstFolder); - virtual ~MoveFolderUndoAction(); - - virtual UndoStatus DoUndo(); - virtual XP_Bool HasFolder(MSG_FolderInfo *folder); - -protected: - MSG_Pane *m_pane; - MSG_FolderInfo *m_srcParent; - MSG_FolderInfo *m_srcFolder; - MSG_FolderInfo *m_dstFolder; -}; - -class RenameFolderUndoAction : public UndoAction -{ -public: - RenameFolderUndoAction (MSG_Pane *pane, - MSG_FolderInfo *folder, - const char *oldName, - const char *newName); - virtual ~RenameFolderUndoAction(); - - virtual UndoStatus DoUndo(); - virtual XP_Bool HasFolder(MSG_FolderInfo *folder); - -protected: - MSG_Pane *m_pane; - MSG_FolderInfo *m_folder; - char *m_oldName; - char *m_newName; -}; - - -#if (1) - -class IMAPRenameFolderUndoAction : public UndoAction -{ -public: - IMAPRenameFolderUndoAction (MSG_Pane *pane, - MSG_FolderInfo *folder, - const char *oldName, - const char *newName); - virtual ~IMAPRenameFolderUndoAction(); - - virtual UndoStatus DoUndo(); - virtual XP_Bool HasFolder(MSG_FolderInfo *folder); - virtual UndoStatus UndoPreExit(); - -protected: - MSG_Pane *m_pane; - MSG_FolderInfo *m_folder; - char *m_oldName; - char *m_newName; -}; - -class IMAPMoveCopyMessagesUndoAction : public UndoAction -{ -public: - IMAPMoveCopyMessagesUndoAction(MSG_Pane *pane, - MSG_FolderInfo *srcFolder, - MSG_FolderInfo *dstFolder, - XP_Bool isMove, - MessageKey prevKeyToLoad, - MessageKey nextKeyToLoad); - virtual ~IMAPMoveCopyMessagesUndoAction(); - - virtual UndoStatus DoUndo(); - virtual XP_Bool HasFolder(MSG_FolderInfo *folder); - virtual UndoStatus UndoPreExit(); - - // helper functions - void AddKey(MessageKey key); - -protected: - IDArray m_keyArray; - MessageKey m_prevKeyToLoad; - MessageKey m_nextKeyToLoad; - MSG_Pane *m_pane; - MSG_FolderInfo *m_srcFolder; - MSG_FolderInfo *m_dstFolder; - XP_Bool m_isMove; -}; - -#endif - - -#endif - - diff --git a/mozilla/lib/libmsg/msgundmg.cpp b/mozilla/lib/libmsg/msgundmg.cpp deleted file mode 100644 index ae81bbb4b6c..00000000000 --- a/mozilla/lib/libmsg/msgundmg.cpp +++ /dev/null @@ -1,994 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* msgundmg.cpp --- Undo Manager implementation - */ - -#include "msg.h" -#include "msgundmg.h" -#include "maildb.h" -#include "msgdbvw.h" -#include "msgpane.h" -#include "msgmpane.h" -#include "msgtpane.h" -#include "mailhdr.h" -#include "msgfinfo.h" - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; -} - -/////////////////////////////////////////////////////////////////////////// -// Implementation of UndoObject -/////////////////////////////////////////////////////////////////////////// - -UndoObject::UndoObject() -{ - m_owner = NULL; - m_preExitFunc_hook = NULL; - m_refCount = 1; -} - -UndoObject::~UndoObject() -{ -} - -int -UndoObject::Release() -{ - --m_refCount; - if (!m_refCount) - { - delete this; - return 0; - } - return m_refCount; -} - -UndoStatus -UndoObject::DoUndo() -{ - return UndoComplete; -} - -UndoStatus -UndoObject::StopUndo( int /*status*/ ) -{ - return UndoFailed; -} - -// This is a default implementation. You should overwrite this -// method. -void -UndoObject::FinalizeUndo() -{ - // This is a default implementation. Client should - // overwrite. - XP_ASSERT(m_owner); - - AddRefCount(); - - m_owner->AddUndoAction (this); - - // Inform UndoManager that we have done with - // current undo object. - m_owner->DoUndoComplete(this); - -} - -void -UndoObject::UndoURLHook(URL_Struct *url) -{ - XP_ASSERT (url); - if ( !url ) return; - MSG_Pane *pane = url->msg_pane; - - XP_ASSERT (pane); - if (!pane) return; - - pane->GetUndoManager()->AddInProgress(this); - - if (url->pre_exit_fn) - m_preExitFunc_hook = url->pre_exit_fn; - - url->pre_exit_fn = UndoObject::UndoURLPreExitFunc; -} - -void -UndoObject::UndoURLPreExitFunc (URL_Struct *url, - int status, - MWContext *context) -{ - XP_ASSERT (url); - if ( !url ) return; - - if (url->msg_pane) - { - UndoManager *undoManager = url->msg_pane->GetUndoManager(); - - XP_ASSERT (undoManager); - if (!undoManager) return; - - UndoObject *undoObject = undoManager->RemoveInProgress(); - - XP_ASSERT (undoObject); - if (!undoObject) return; - - if (undoObject->m_preExitFunc_hook) - undoObject->m_preExitFunc_hook (url, status, context); - - if (status < 0) - { - undoObject->StopUndo (status); - undoManager->Reset(); - return; - } - - UndoStatus undoStatus; - - undoStatus = undoObject->UndoPreExit(); - - if (undoStatus == UndoComplete) - undoObject->FinalizeUndo(); - else - { - undoObject->StopUndo (status); - undoManager->Reset(); - } - } -} - -///////////////////////////////////////////////////////////////////// -// Implementation of UndoMarker -///////////////////////////////////////////////////////////////////// -void -UndoMarker::FinalizeUndo() -{ - XP_ASSERT (IsMarker()); - - if (IsStart()) - m_owner->StartBatch(); - else - m_owner->EndBatch(); - - m_owner->DoUndoComplete(this); -} - - -///////////////////////////////////////////////////////////////// -// Implementation of UndoManager -///////////////////////////////////////////////////////////////// - -UndoManager::UndoManager (MSG_Pane *pane, int maxActions) -{ - m_maxUndoActions = maxActions; - m_depth = 0; - m_state = UndoIdle; - m_count = 0; - m_status = UndoComplete; - m_pane = pane; - m_refCount = 1; -} - -UndoManager::~UndoManager () -{ - FlushActions(); -} - -int -UndoManager::Init() -{ - return 0; -} - -int -UndoManager::Release() -{ - --m_refCount; - if (!m_refCount) - { - delete this; - return 0; - } - return m_refCount; -} - - -int -UndoManager::StartBatch() -{ - int status = 0; - UndoMarker *marker = new UndoMarker (FALSE); - - if ( !marker ) return MK_OUT_OF_MEMORY; - - ++m_depth; - - if (m_state == UndoIdle || m_state == UndoRedoing) - AddAtomicUndo(marker); - else - AddAtomicRedo(marker); - - return status; -} - -int -UndoManager::EndBatch() -{ - int status = 0; - UndoMarker *marker = new UndoMarker (TRUE); - - if (!marker) - { - Reset(); - return MK_OUT_OF_MEMORY; - } - - --m_depth; - - if (m_state == UndoIdle || m_state == UndoRedoing) - AddAtomicUndo(marker); - else - AddAtomicRedo(marker); - - if (m_state == UndoIdle) - FinalizeAtomicActions(); - - return status; -} - -int -UndoManager::AbortBatch() -{ - XP_ASSERT (m_state == UndoIdle); - - int size; - int status = 0; - - // **** There definitely much more we can do. For now - // let's just free some memory resource. Revisit later!!!!!! - while (1) - { - size = m_atomicUndoList.GetSize(); - if (size == 0) - break; - ((UndoObject *) m_atomicUndoList.GetAt(--size))->Release(); - m_atomicUndoList.RemoveAt(size); - } - return status; -} - -int -UndoManager::AddUndoAction( UndoObject *undoObject ) -{ - int status = 0; - - XP_ASSERT (undoObject); - if (!undoObject) return -1; - - undoObject->SetOwner(this); - - if (m_state == UndoIdle || m_state == UndoRedoing) - { - if (m_depth) - { - AddAtomicUndo(undoObject); - } - else - { - if (m_undoList.GetSize() >= m_maxUndoActions) - FlushAtomic (&m_undoList); - m_undoList.Add(undoObject); - } - } - else - { - if (m_depth) - { - AddAtomicRedo (undoObject); - } - else - { - if (m_redoList.GetSize() >= m_maxUndoActions) - FlushAtomic (&m_redoList); - m_redoList.Add(undoObject); - } - } - return status; -} - -XP_Bool -UndoManager::CanUndo() -{ - return (m_undoList.GetSize() > 0); -} - -XP_Bool -UndoManager::CanRedo() -{ - return (m_redoList.GetSize() > 0); -} - -UndoStatus -UndoManager::Undo() -{ - UndoStatus status = UndoError; - if (CanUndo()) - { - m_status = UndoComplete; - m_state = UndoUndoing; - status = FireAtomic( &m_undoList ); - } - if (status != UndoInProgress) - m_state = UndoIdle; - return status; -} - -UndoStatus -UndoManager::Redo() -{ - UndoStatus status = UndoError; - if (CanRedo()) - { - m_status = UndoComplete; - m_state = UndoRedoing; - status = FireAtomic( &m_redoList ); - } - if (status != UndoInProgress) - m_state = UndoIdle; - return status; -} - -void -UndoManager::FlushActions() -{ - int size = 0; - while (1) - { - size = m_undoList.GetSize(); - if (size == 0) - break; - ((UndoObject*)m_undoList.GetAt(--size))->Release(); - m_undoList.RemoveAt(size); - } - while (1) - { - size = m_redoList.GetSize(); - if (size == 0) - break; - ((UndoObject*)m_redoList.GetAt(--size))->Release(); - m_redoList.RemoveAt(size); - } - - m_inProgressList.RemoveAll(); - m_atomicUndoList.RemoveAll(); - m_atomicRedoList.RemoveAll(); - - m_depth = 0; - m_count = 0; - m_state = UndoIdle; - m_status = UndoComplete; -} - -void -UndoManager::RemoveActions(MSG_FolderInfo *folder) -{ - if (!folder) return; - - int size; - - size = m_undoList.GetSize(); - while (size) - { - if (((UndoObject*)m_undoList.GetAt(--size))->HasFolder(folder)) - m_undoList.RemoveAt(size); - } - - size = m_redoList.GetSize(); - while(size) - { - if (((UndoObject*)m_undoList.GetAt(--size))->HasFolder(folder)) - m_redoList.RemoveAt(size); - } -} - -void -UndoManager::Reset() -{ - int size = 0; - - if (m_state == UndoUndoing) - { - while (1) - { - size = m_atomicRedoList.GetSize(); - if (size == 0) - break; - ((UndoObject*)m_atomicRedoList.GetAt(--size))->Release(); - m_atomicRedoList.RemoveAt(size); - } - } - else if (m_state == UndoRedoing) - { - while (1) - { - size = m_atomicUndoList.GetSize(); - if (size == 0) - break; - ((UndoObject*)m_atomicUndoList.GetAt(--size))->Release(); - m_atomicUndoList.RemoveAt(size); - } - } - m_state = UndoIdle; - m_depth = 0; - m_count = 0; - m_status = UndoComplete; -} - -int -UndoManager::AddInProgress (UndoObject *undoObject) -{ - XP_ASSERT (undoObject); - if (!undoObject) return -1; - - m_inProgressList.Add((void *)undoObject); - return 0; -} - -UndoObject* -UndoManager::GetInProgress() -{ - int size = m_inProgressList.GetSize(); - XP_ASSERT(size > 0); - if (size <= 0) return NULL; - - UndoObject *undoObject = (UndoObject *) m_inProgressList.GetAt(size-1); - return undoObject; -} - -UndoObject* -UndoManager::RemoveInProgress() -{ - UndoObject *undoObject = GetInProgress(); - m_inProgressList.RemoveAt(m_inProgressList.GetSize()-1); - - return (undoObject); -} - -void -UndoManager::FlushAtomic (XPPtrArray *list) -{ - int size = list->GetSize(); - int count = 0; - - --size; // real index; - - UndoObject *undoObject = (UndoObject*) list->GetAt(size); - XP_ASSERT (undoObject); - - if (!undoObject) return; - - if (m_depth) - { - // we are flush while we are adding a batch operation - int depth = m_depth; - while (depth && size >= 0) - { - if (undoObject->IsMarker() && undoObject->IsEnd()) - depth--; - undoObject = (UndoObject*) list->GetAt(--size); - } - } - - if (undoObject->IsMarker()) - { - int depth = 0; - - XP_ASSERT(undoObject->IsStart()); - while (undoObject && size >= 0) - { - if (undoObject->IsStart()) - depth++; - else if (undoObject->IsEnd()) - depth--; - undoObject->Release(); - ++count; - list->RemoveAt(size--); - if (!depth) return; - undoObject = (UndoObject*) list->GetAt(size); - } - } - else - { - ++count; - undoObject->Release(); - list->RemoveAt(size); - } -} - - -// This is an extremely overloaded routine. I am not sure what else -// I can do. Sigh..... -UndoStatus -UndoManager::FireAtomic (XPPtrArray *list) -{ - if (m_status!= UndoComplete) return m_status; - - int size = list->GetSize(); - - if (!size) return UndoComplete; - - UndoObject *undoObject; - - if (!m_depth) - m_count = 0; - - undoObject = (UndoObject*) list->GetAt(size-m_count-1); - - XP_ASSERT(undoObject); - if (!undoObject) return UndoError; - - if (undoObject->IsMarker() || m_depth) - { - while (undoObject) - { - m_status = undoObject->DoUndo(); - if (m_status == UndoInProgress) - { - return m_status; - } - else if (m_status == UndoComplete) - { - // What happen if something went wrong in the middle of an - // atomic operation - undoObject->FinalizeUndo(); - } - else - { - // Don't know what to do yet - XP_ASSERT(0); - } - if (!m_depth) - { - // We are done with this batch. Reset undo state - // to undo idle. - m_state = UndoIdle; - return m_status; - } - else if (m_status != UndoComplete) - { - return m_status; - } - undoObject = (UndoObject*)list->GetAt(size-m_count-1); - } - } - else - { - m_status = undoObject->DoUndo(); - if ( m_status == UndoComplete ) - { - undoObject->FinalizeUndo(); - // FinalizeUndo() calls DoUndoComplete() if this is a single - // atomic undo operation m_state is reset to UndoIdle in - // DoUndoComplete(). - return UndoComplete; - } - else if (m_status == UndoInProgress) - { - return UndoInProgress; - } - else - { - // don't know what to do yet - return m_status; - } - } - return m_status; -} - -void -UndoManager::DoUndoComplete(UndoObject* undoObject) -{ - m_status = UndoComplete; - - ++m_count; - if (m_depth) { - if (m_state == UndoUndoing) - FireAtomic(&m_undoList); - else if (m_state == UndoRedoing) - FireAtomic(&m_redoList); - else - XP_ASSERT(0); - // **** Post Error message if error occured - } - else - { - if (undoObject->IsMarker() && - undoObject->IsEnd()) - { - FinalizeAtomicActions(); - } - else - { - if (m_state == UndoUndoing) - m_undoList.Remove((void *) undoObject); - else if (m_state == UndoRedoing) - m_redoList.Remove((void *) undoObject); - undoObject->Release(); - } - m_state = UndoIdle; - } -} - - -void -UndoManager::AddAtomicUndo(UndoObject *undoObject) -{ - m_atomicUndoList.Add(undoObject); -} - -void -UndoManager::AddAtomicRedo(UndoObject *undoObject) -{ - m_atomicRedoList.Add(undoObject); -} - -void -UndoManager::FinalizeAtomicActions() -{ - XPPtrArray *list = (m_state == UndoUndoing ? - &m_atomicRedoList : - &m_atomicUndoList ); - - if (!m_depth) - { - UndoObject *undoObject; - int size = list->GetSize(); - int count = m_count; - - for (int i=0; i<size; i++) - { - undoObject = (UndoObject*) list->GetAt(i); - AddUndoAction(undoObject); - } - list->RemoveAll(); - - if (m_state == UndoIdle) - return; - - list = (m_state == UndoUndoing ? - &m_undoList : &m_redoList ); - - while (count) - { - undoObject = (UndoObject *) list->GetAt(list->GetSize()-1); - undoObject->Release(); - list->RemoveAt(list->GetSize()-1); - count--; - } - } - -} - -int -UndoManager::AddMsgKey(MessageKey key) -{ - int status = 0; - - m_msgKeyArray.Add(key); - return status; -} - -MessageKey -UndoManager::GetAndRemoveMsgKey() -{ - if (!m_msgKeyArray.GetSize()) - return MSG_MESSAGEKEYNONE; - - MessageKey key = m_msgKeyArray.GetAt(0); - m_msgKeyArray.RemoveAt(0); - - return key; -} - - -void UndoManager::SetUndoMsgFolder( MSG_FolderInfo *folder ) -{ - m_undoMsgFolder = folder; -} - -MSG_FolderInfo * UndoManager::GetUndoMsgFolder() -{ - return m_undoMsgFolder; -} - -////////////////////////////////////////////////////////////////////////// -// BacktrackManager -////////////////////////////////////////////////////////////////////////// - -BacktrackManager::BacktrackManager(MSG_Pane *pane) -{ - m_pane = pane; - m_cursor = -1; - m_state = MSG_BacktrackIdle; - m_curKey = MSG_MESSAGEKEYNONE; - m_curFolder = NULL; -} - -BacktrackManager::~BacktrackManager() -{ - Reset(); -} - -int -BacktrackManager::AddEntry(MSG_FolderInfo *folder, MessageKey key) -{ - int status = 0; - BacktrackEntry *entry = NULL; - - if (m_state != MSG_BacktrackIdle) - { - return status; - } - - if (m_cursor >= 0) - { - entry = (BacktrackEntry *) m_backtrackArray.GetAt(m_cursor); - if (entry->folder == folder && entry->key == key) - goto done; - } - if (m_cursor-1 >= 0) - { - entry = (BacktrackEntry *) m_backtrackArray.GetAt(m_cursor-1); - if (entry->folder == folder && entry->key == key) - goto done; - } - if ((m_cursor+1) < m_backtrackArray.GetSize()) - { - entry = (BacktrackEntry *) m_backtrackArray.GetAt(m_cursor+1); - if (entry->folder == folder && entry->key == key) - goto done; - } - - entry = new BacktrackEntry; - if (entry) - { - m_cursor++; - entry->folder = folder; - entry->key = key; - m_backtrackArray.InsertAt(m_cursor, (void*)entry, 1); - goto done; - } - else - return MK_OUT_OF_MEMORY; -done: - if (entry) - SetCurMessageKey (entry->folder, entry->key); - return status; -} - -XP_Bool -BacktrackManager::CanGoBack() -{ - if (m_cursor <=0) return FALSE; - BacktrackEntry *entry = NULL; - - for (int i=m_cursor-1; i >= 0; i--) - { - entry = (BacktrackEntry *) m_backtrackArray.GetAt(i); - XP_ASSERT (entry->key != MSG_MESSAGEKEYNONE); - if (entry->key != MSG_MESSAGEKEYNONE) - return TRUE; - } - return FALSE; -} - -XP_Bool -BacktrackManager::CanGoForward() -{ - int size = m_backtrackArray.GetSize(); - BacktrackEntry *entry = NULL; - - if (m_cursor >= size-1) - return FALSE; - - for (int i=m_cursor+1; i < size; i++) - { - entry = (BacktrackEntry*) m_backtrackArray.GetAt(i); - XP_ASSERT (entry->key != MSG_MESSAGEKEYNONE); - if (entry->key != MSG_MESSAGEKEYNONE) - return TRUE; - } - return FALSE; -} - -MessageKey -BacktrackManager::GoBack(MSG_FolderInfo **pFolderInfo) -{ - XP_ASSERT (m_cursor > 0); - int i; - DBMessageHdr *msgHdr = NULL; - BacktrackEntry *entry = NULL; - MailDB *mailDb; - - m_state = MSG_BacktrackBackward; - - for (i=m_cursor-1; i >= 0; i--) - { - entry = (BacktrackEntry*) m_backtrackArray.GetAt(i); - if (entry->folder != m_curFolder) - { - // *** if the folder is a newsgroup folder we done. - if (entry->folder->IsNews()) break; - - // if this is a mail folder does this message get deleted? - MsgERR err = eUNKNOWN; - mailDb= NULL; - err = MailDB::Open(entry->folder->GetMailFolderInfo()->GetPathname(), - FALSE, &mailDb); - if (err == eSUCCESS) - { - msgHdr = mailDb->GetDBHdrForKey(entry->key); - if (msgHdr) - { - mailDb->Close(); - break; - } - } - if (mailDb) mailDb->Close(); - } - else if (entry->key != m_curKey) - { - msgHdr = m_pane->GetMsgView()->GetDB()->GetDBHdrForKey(entry->key); - if (msgHdr) break; - } - } - - delete msgHdr; - - if (entry) - { - if (pFolderInfo && m_curFolder != entry->folder) - *pFolderInfo = entry->folder; - m_cursor = i; - SetCurMessageKey(entry->folder, entry->key); - return entry->key; - } - return MSG_MESSAGEKEYNONE; -} - - -MessageKey -BacktrackManager::GoForward(MSG_FolderInfo **pFolderInfo) -{ - int size = m_backtrackArray.GetSize(); - - XP_ASSERT (m_cursor < size -1); - int i; - DBMessageHdr *msgHdr = NULL; - BacktrackEntry *entry = NULL; - MailDB *mailDb; - - m_state = MSG_BacktrackForward; - - for (i=m_cursor+1; i < size; i++) - { - entry = (BacktrackEntry*) m_backtrackArray.GetAt(i); - if (entry->folder != m_curFolder) - { - // *** if the folder is a newsgroup folder we done. - if (entry->folder->IsNews()) break; - - // if this is a mail folder does this message get deleted? - MsgERR err = eUNKNOWN; - mailDb= NULL; - err = MailDB::Open(entry->folder->GetMailFolderInfo()->GetPathname(), - FALSE, &mailDb); - if (err == eSUCCESS) - { - msgHdr = mailDb->GetDBHdrForKey(entry->key); - if (msgHdr) - { - mailDb->Close(); - break; - } - } - if (mailDb) mailDb->Close(); - } - else if (entry->key != m_curKey) - { - msgHdr = m_pane->GetMsgView()->GetDB()->GetDBHdrForKey(entry->key); - if (msgHdr) break; - } - } - - delete msgHdr; - - if (entry) - { - if (pFolderInfo && m_curFolder != entry->folder) - *pFolderInfo = entry->folder; - m_cursor = i; - SetCurMessageKey(entry->folder, entry->key); - return entry->key; - } - return MSG_MESSAGEKEYNONE; -} - -void -BacktrackManager::Reset() -{ - BacktrackEntry *entry = NULL; - int size = m_backtrackArray.GetSize(); - - for (int i=0; i < size; i++) - { - entry = (BacktrackEntry *) m_backtrackArray.GetAt(0); - m_backtrackArray.RemoveAt(0); - delete entry; - } - - m_cursor = -1; - m_curKey = MSG_MESSAGEKEYNONE; - m_curFolder = NULL; - -} - - -void -BacktrackManager::SetCurMessageKey(MSG_FolderInfo *folder, - MessageKey key) -{ - m_curFolder = folder; - m_curKey = key; -} - -void -BacktrackManager::RemoveEntries(MSG_FolderInfo *folder) -{ - int size = m_backtrackArray.GetSize(); - BacktrackEntry *entry = NULL; - - if (!folder || size <= 0) - return; - - while (size) - { - entry = (BacktrackEntry *) m_backtrackArray.GetAt(--size); - if (entry->folder == folder) - { - m_backtrackArray.RemoveAt(size); - delete entry; - if (m_cursor == size) - { - m_cursor = -1; - m_curKey = MSG_MESSAGEKEYNONE; - m_curFolder = NULL; - } - else if (m_cursor > size) - { - m_cursor--; - } - } - } -} - diff --git a/mozilla/lib/libmsg/msgundmg.h b/mozilla/lib/libmsg/msgundmg.h deleted file mode 100644 index d434b4e5830..00000000000 --- a/mozilla/lib/libmsg/msgundmg.h +++ /dev/null @@ -1,301 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* msgundmg.h --- internal defs for undo - */ - -#ifndef UndoManager_H -#define UndoManager_H - -#include "xp.h" -#include "ptrarray.h" -#include "idarray.h" -#include "msgzap.h" -#include "chngntfy.h" - -class UndoManager; -class BacktrackManager; -class MessageDBView; - - -/* Because undo can be asynchronous (e.g., undoing an IMAP action), - the UndoManager and UndoObjects need to be able be asynchronous - as well. Operations that are synchronous should be undone synchronously, - though. -*/ - - -// -*- Forward class declaration -*- -class UndoManager; - -// Generic undo object - includes UndoMarkers (start and end blocks), and UndoActions. -// Clients subclass UndoActions to implement their action specific operations. -class UndoObject : public MSG_ZapIt -{ - friend class UndoManager; -public: - - UndoObject(); - virtual ~UndoObject(); - - // A synchronous undo returns an UndoComplete status. - // An asynchronous undo kicks off an URL and returns a UndoInProgress staus. - // Upon receiving UndoComplete status from DoUndo(), FinalizeUndo() is - // call by UndoManager to finalize the undo action. - // When an asynchronous undo URL exit, FinalizeUndo() needs to be invoked - // through url_structs->pre_exit_fn. - // What should we do if DoUndo() returns UndoError/UndoFailed should we - // remove the undo object from the Undo/Redo queue? - virtual UndoStatus DoUndo(); - - // StopUndo is called with a status from libnet. - virtual UndoStatus StopUndo(int status); - - // FinalizeUndo() needs to do two things: - // (1) call UndoManager::AddUndoAtion() to add an inverse undo operation - // (2) call UndoManager::DoUndoComplete() to inform the undo manager - // that the undo action has been completed. UndoObject will then be removed - // and deleted from the queue. - virtual void FinalizeUndo(); - - virtual void SetOwner(UndoManager *owner) {m_owner = owner;} - - virtual const char *GetUndoTypeString() { return NULL; } - virtual XP_Bool IsAction() {return FALSE;} - virtual XP_Bool IsStart() {return FALSE;} - virtual XP_Bool IsEnd() {return FALSE;} - virtual XP_Bool IsMarker() {return FALSE;} - - // Is this undo object associate with the folder? Client should overwrite - // this method. A typical use of this method is when we need to remove an - // undo action from the undo/redo queue due to a compress action. - virtual XP_Bool HasFolder(MSG_FolderInfo * /*folder*/) { return TRUE; } - - virtual void AddRefCount() { ++m_refCount; } - virtual int Release (); - - // This ties the undo action to the url. This is based on the assumption - // that we have msg_pane set to url->msg_pane and there is an undomanager - // attached to the msg_pane. And the current undo action is temprary added - // to the UndoManager's m_inProgressList. Until we have a better mechanism - // to chain the URL. This will be the way we attach an undo action to an - // URL. - virtual void UndoURLHook (URL_Struct *url); - - // If UndoURLPreExitFunc gets called with a negative status - // StopUndo() will be called to allow client to interpret the - // failure and perform certain undo actions accordingly. - static void UndoURLPreExitFunc (URL_Struct *url, - int status, - MWContext *context); - - virtual UndoStatus UndoPreExit() { return UndoComplete; } - - -protected: - int m_refCount; - UndoManager *m_owner; - // chaining the url->pre_exit_fn if needed. - Net_GetUrlExitFunc *m_preExitFunc_hook; -}; - -// UndoMarkers are the start and end blocks for wrapping multiple undo objects -// into a single user-undoable action. . -class UndoMarker : public UndoObject -{ -public: - UndoMarker(XP_Bool isStart) { m_isStart = isStart;} - virtual ~UndoMarker() {} - - void SetIsStart(XP_Bool isStart) {m_isStart = isStart;} - - virtual void FinalizeUndo(); - virtual XP_Bool IsStart() {return m_isStart;} - virtual XP_Bool IsEnd() {return !m_isStart;} - virtual XP_Bool IsMarker() {return TRUE;} -protected: - XP_Bool m_isStart; -}; - -// You might want to have undo actions which are mirrors of each other -// for undo/redo. They usually need the same information. The object -// could keep track of which direction it's going, and copy itself -// to the redo stack when an undo is done, etc. - -// Undo actions may need to protect themselves from things they refer -// to going away out from under them. This may involve adding a reference -// to a db or a view, or making themselves listeners. - -// Override this to implement your undo actions. -class UndoAction : public UndoObject -{ -public: - UndoAction() {} - virtual ~UndoAction() {} - virtual XP_Bool IsAction() {return TRUE;} -}; - -// The state machine for undo is encapsulated here. The UndoManager has two -// primary functions - Keeping track of undoable/redoable operations, and -// executing undo/redo commands. There should be one UndoManager for every -// top-level window which has Undo/Redo menu items. - -class UndoManager : public MSG_ZapIt -{ -public: - UndoManager(MSG_Pane *pane, int maxActions = 30); - int Init(); - MSG_Pane *GetOwner() {return m_pane;} - - // Starting a batch of undo actions - int StartBatch(); - // Adding an UndoAction to the undo/redo queue - // UndoManager internally keep of where to add the - // undo action. - virtual int AddUndoAction(UndoObject *action); - // Ending a batch of undo actions - int EndBatch(); - // Client can call AbortBatch() to abort creating an atomic - // undo operation. - int AbortBatch(); - - // Remove undo actions associate with this folder - void RemoveActions(MSG_FolderInfo *folder); - - virtual XP_Bool CanUndo(); - virtual XP_Bool CanRedo(); - UndoStatus Undo(); - UndoStatus Redo(); - - // clear out the undo/redo queues. - void FlushActions(); - // Reset() the undo state and do some clean up - void Reset(); - - UndoMgrState GetState() {return m_state;} - UndoStatus GetStatus() {return m_status;} - int GetDepth() {return m_depth;} - - // **** DoUndoComplete() has to be called from UndoObject::FinalizeUndo() - // to inform the undo manager that the undo action has been completed. It - // is time to remove from the undo/redo queue. - void DoUndoComplete(UndoObject *theObject); - - // Methods use to temprary attach undo object to the - // in progress list. The undo object is not an official - // undo/redo object yet. - int AddInProgress (UndoObject *theObject); - UndoObject *GetInProgress (); - UndoObject *RemoveInProgress (); - - // Methods for temprary storing/removing destination folder message key - // in a first in first out fashion - int AddMsgKey (MessageKey key); - MessageKey GetAndRemoveMsgKey (); - - void SetUndoMsgFolder(MSG_FolderInfo *folder); - MSG_FolderInfo* GetUndoMsgFolder(); - - virtual void AddRefCount() { ++m_refCount; } - virtual int Release (); - -protected: - virtual ~UndoManager(); // must use Release() instead of delete. - - // Flush an atomic Undo/Redo operation at the bottom of the - // queue; - void FlushAtomic(XPPtrArray *list); - // Fire an atomic Undo/Redo operation from the top of the - // queue - UndoStatus FireAtomic(XPPtrArray *list); - - // Methods to handle atomic Undo Actions. - void AddAtomicUndo(UndoObject *theObject); - void AddAtomicRedo(UndoObject *theObject); - void FinalizeAtomicActions(); - - XPPtrArray m_undoList; - XPPtrArray m_redoList; - - UndoMgrState m_state; - int m_maxUndoActions; // max top-level actions - int m_depth; // Undo batch depth - int m_count; // undo object count of an atomic operation - // including markers - - UndoStatus m_status; // current undo action status - - // temp place holder for in progress undo actions - XPPtrArray m_inProgressList; - - // temp place holder for atomic operation in case we need to undo/redo - // partial completed operations. - XPPtrArray m_atomicUndoList; - XPPtrArray m_atomicRedoList; - - // temp place holder for move copy messages to store the destination - // folder message key; this can be viewed as a hack - IDArray m_msgKeyArray; - MSG_FolderInfo *m_undoMsgFolder; - - MSG_Pane *m_pane; // owner of this undomanager - int m_refCount; -}; - -typedef struct { - MSG_FolderInfo *folder; - MessageKey key; -} BacktrackEntry; - -class BacktrackManager : public MSG_ZapIt -{ -public: - - BacktrackManager (MSG_Pane *pane); - virtual ~BacktrackManager(); - - MSG_BacktrackState GetState() { return m_state; } - void SetState(MSG_BacktrackState state) {m_state = state;} - - int AddEntry(MSG_FolderInfo *folder, MessageKey key); - void SetCurMessageKey(MSG_FolderInfo *folder, MessageKey key); - // Remove entries associate with this folder - void RemoveEntries(MSG_FolderInfo *folder); - - void Reset(); - - XP_Bool CanGoBack(); - XP_Bool CanGoForward(); - MessageKey GoBack(MSG_FolderInfo **pFolderInfo); - MessageKey GoForward(MSG_FolderInfo **pFolderInfo); - -protected: - MSG_Pane *m_pane; - XPPtrArray m_backtrackArray; - int32 m_cursor; - MSG_BacktrackState m_state; - MSG_FolderInfo *m_curFolder; - MessageKey m_curKey; -}; - - -#endif /* UndoManager_H */ - diff --git a/mozilla/lib/libmsg/msgundo.h b/mozilla/lib/libmsg/msgundo.h deleted file mode 100644 index e0ddd8297ad..00000000000 --- a/mozilla/lib/libmsg/msgundo.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* This file is obsolete - msgundo.h --- internal defs for the msg library, dealing with undo stuff - */ - -#ifndef _MSGUNDO_H_ -#define _MSGUNDO_H_ - - -XP_BEGIN_PROTOS - - -/* Initialize the undo state. This must be called when the context is - initialized for mail/news. It should also be called later whenever - the undo state should be thrown away (because the user has just - done an non-undoable operation. If this returns a negative value, - then we failed big-time (ran out of memory), and we should abort - everything.*/ -extern int msg_undo_Initialize(MWContext* context); - - -/* Throw away the undo state, as part of destroying the mail/news context. */ -extern void msg_undo_Cleanup(MWContext* context); - - - -/* Log an "flag change" event. The given flag bits indicate what to do to - execute the undo. */ - -extern void msg_undo_LogFlagChange(MWContext* context, MSG_Folder* folder, - unsigned int message_offset, - uint16 flagson, uint16 flagsoff); - - -/* Mark the beginning of a bunch of actions that should be undone as - one user action. Should always be matched by a later call to - msg_undo_EndBatch(). These calls can nest. */ - -extern void msg_undo_StartBatch(MWContext* context); - -extern void msg_undo_EndBatch(MWContext* context); - - -extern XP_Bool msg_CanUndo(MWContext* context); -extern XP_Bool msg_CanRedo(MWContext* context); - -XP_END_PROTOS - -#endif /* !_MSGUNDO_H_ */ diff --git a/mozilla/lib/libmsg/msgurlq.cpp b/mozilla/lib/libmsg/msgurlq.cpp deleted file mode 100644 index ad6534d3620..00000000000 --- a/mozilla/lib/libmsg/msgurlq.cpp +++ /dev/null @@ -1,687 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// - -#include "msg.h" -#include "msgurlq.h" -#include "msgpane.h" -#include "msgfinfo.h" -#include "maildb.h" -#include "msgimap.h" - - -MSG_UrlQueueElement::MSG_UrlQueueElement (const char *url, MSG_UrlQueue *queue, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, NET_ReloadMethod reloadMethod, FO_Present_Types outputFormat) -{ - m_queue = queue; - m_pane = pane; - m_urlString = XP_STRDUP(url); - m_exitFunction = exitFunction; - m_reloadMethod = reloadMethod; - m_url = NULL; - m_callGetURLDirectly = FALSE; - m_outputFormat = outputFormat; -} - -MSG_UrlQueueElement::MSG_UrlQueueElement (URL_Struct *url, MSG_UrlQueue *queue, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, XP_Bool skipFE, FO_Present_Types outputFormat) -{ - m_queue = queue; - m_pane = pane; - m_urlString = XP_STRDUP(url->address); - m_exitFunction = exitFunction; - m_reloadMethod = url->force_reload; - m_url = url; - m_callGetURLDirectly = skipFE; - m_outputFormat = outputFormat; -} - -MSG_UrlQueueElement::MSG_UrlQueueElement (URL_Struct *urls, MSG_UrlQueue *q) -{ - m_queue = q; - m_pane = urls->msg_pane; - m_urlString = XP_STRDUP(urls->address);; - m_url = urls; - m_exitFunction = NULL; - m_reloadMethod = NET_DONT_RELOAD; - m_callGetURLDirectly = FALSE; - m_outputFormat = FO_CACHE_AND_PRESENT; -} - -MSG_UrlQueueElement::~MSG_UrlQueueElement() -{ - FREEIF(m_urlString); -// if (m_url && m_callGetURLDirectly) -// NET_FreeURLStruct(m_url); // Tempting, but not our job -} - -void MSG_UrlQueueElement::PrepareToRun() -{ - // nothing we have to do right now for queue elements. - return; -} - -char* MSG_UrlQueueElement::GetURLString() -{ - if (m_urlString) - return m_urlString; - if (m_url) - return(m_url->address); - return(NULL); -} - -URL_Struct* MSG_UrlQueueElement::GetURLStruct() -{ - if (!m_url) - m_url = NET_CreateURLStruct( m_urlString, NET_DONT_RELOAD); - return(m_url); -} - - -MSG_UrlLocalMsgCopyQueueElement::MSG_UrlLocalMsgCopyQueueElement(MessageCopyInfo * info, const char * url, MSG_UrlQueue * q, - Net_GetUrlExitFunc * func, MSG_Pane * pane, NET_ReloadMethod reloadMethod) - : MSG_UrlQueueElement (url, q, func, pane, reloadMethod) -{ - m_copyInfo = info; -} - -MSG_UrlLocalMsgCopyQueueElement::MSG_UrlLocalMsgCopyQueueElement(MessageCopyInfo * info, URL_Struct * url, MSG_UrlQueue * q, - Net_GetUrlExitFunc * func, MSG_Pane * pane, XP_Bool skipFE) - : MSG_UrlQueueElement (url, q, func, pane, skipFE) -{ - m_copyInfo = info; -} - -MSG_UrlLocalMsgCopyQueueElement::MSG_UrlLocalMsgCopyQueueElement (MessageCopyInfo * info, URL_Struct * urls, MSG_UrlQueue * q) - : MSG_UrlQueueElement(urls, q) -{ - m_copyInfo = info; -} - -MSG_UrlLocalMsgCopyQueueElement::~MSG_UrlLocalMsgCopyQueueElement() -{ - // should we delete the copy info? I don't think so!! - // when copy was finished, a call to MSG_FolderInfo::CleanUpCopy deletes - // the copy info in the current context. Assuming our queue element isn't deleted before - // it is executed upon......we don't need to delete it. -} - -void MSG_UrlLocalMsgCopyQueueElement::PrepareToRun() -{ - MWContext * context = m_pane->GetContext(); - MessageCopyInfo * victim = NULL; - if (context) - { - victim = context->msgCopyInfo; - XP_ASSERT(!victim); // we actually should never have a victim....but if we do: - // the last copy info is done. - if (victim) - XP_FREEIF(victim); // local copies never have copy info chains, don't have to worry about nextCopyInfo - - context->msgCopyInfo = m_copyInfo; // set ourselves up as the next copy info - } -} - -//***************************************************************************** -// MSG_UrlQueue -- Intended to be a general purpose way to chain several -// URLs together using the exit functions -//***************************************************************************** - -const int MSG_UrlQueue::kNoSpecialIndex = -1; - -MSG_UrlQueue::MSG_UrlQueue (MSG_Pane *pane) -{ -#ifdef DEBUG - MSG_UrlQueue *existingQueue = FindQueue(pane); - if (existingQueue) - { - MSG_UrlQueueElement *elem = existingQueue->GetAt (existingQueue->m_runningUrl); - if (elem) - XP_Trace("trying to create queue while %s is running\n", elem->m_urlString); - } - XP_ASSERT(!existingQueue); -#endif - - m_pane = pane; - m_runningUrl = -1; - m_IndexOfNextUrl = kNoSpecialIndex; - m_inExitFunc = FALSE; - GetQueueArray()->Add (this); -} - - -MSG_UrlQueue::~MSG_UrlQueue () -{ - GetQueueArray()->Remove(this); - - for (int i = 0; i < GetSize (); i++) - { - MSG_UrlQueueElement *e = GetAt(i); - delete e; - } -} - -XPPtrArray * -MSG_UrlQueue::GetQueueArray() -{ - if (!m_queueArray) - m_queueArray = new XPPtrArray(); - return m_queueArray; -} - -XP_Bool MSG_UrlQueue::IsIMAPLoadFolderUrlQueue() -{ - return FALSE; -} - -void MSG_UrlQueue::AddUrl (const char *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, NET_ReloadMethod reloadMethod) -{ - MSG_UrlQueueElement *elem = NULL; - - if (!pane) - pane = m_pane; - elem = new MSG_UrlQueueElement (url, this, exitFunction, pane, reloadMethod); - if (elem) - Add(elem); -} - -void MSG_UrlQueue::AddUrl (URL_Struct *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, XP_Bool skipFE, FO_Present_Types outputFormat) -{ - MSG_UrlQueueElement * elem = NULL; - if (!pane) - pane = m_pane; - elem = new MSG_UrlQueueElement(url, this, exitFunction, pane, skipFE, outputFormat); - if (elem) - Add(elem); -} - -void MSG_UrlQueue::AddLocalMsgCopyUrl(MessageCopyInfo * info, const char *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane * pane, NET_ReloadMethod reloadMethod) -{ - MSG_UrlLocalMsgCopyQueueElement *elem = NULL; - - if (!pane) - pane = m_pane; - elem = new MSG_UrlLocalMsgCopyQueueElement (info, url, this, exitFunction, pane, reloadMethod); - if (elem) - Add(elem); -} - -/* static */ MSG_UrlQueue * MSG_UrlQueue::FindQueueWithSameContext(MSG_Pane *pane) -{ - MSG_UrlQueue * q = NULL; - - XP_ASSERT(pane); - if (pane) - { - q = MSG_UrlQueue::FindQueue(pane); - MSG_Pane *QPane = pane->GetFirstPaneForContext(pane->GetContext()); - while (!q && QPane) - { - q = MSG_UrlQueue::FindQueue(QPane); - if (!q) - QPane = pane->GetNextPaneForContext(QPane, pane->GetContext()); - } -#ifdef DEBUG_bienvenu - if (q && QPane != pane) - XP_Trace("found queue for different pane with same context!\n"); -#endif - } - return q; -} - -/* static */ MSG_UrlQueue * MSG_UrlQueue::GetOrCreateUrlQueue (MSG_Pane * pane, XP_Bool * newQueue) -// The following code appeared in just about every AddUrl method or variant thereof. I've generalized it in this single -// routine. -// Returns: pointer to the queue for the pane. If we had to create the queue, then newQueue is set to TRUE; -{ - *newQueue = FALSE; - MSG_UrlQueue *q = FindQueueWithSameContext(pane); - if (!q) - { - q = new MSG_UrlQueue(pane); - *newQueue = TRUE; - } - // we seem to get in this state where we're not running a url but the queue - // thinks we are. - if (! (q->m_inExitFunc || q->m_runningUrl == -1 || XP_IsContextBusy(pane->GetContext()))) - { -#ifdef DEBUG - MSG_UrlQueueElement *runningElement = q->GetAt(q->m_runningUrl); - if (runningElement) - XP_Trace("q was running url %s\n", runningElement->GetURLString()); - XP_ASSERT(FALSE); -#endif - } - return q; -} - - -/* static */ MSG_UrlQueue * MSG_UrlQueue::AddUrlToPane (const char *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, NET_ReloadMethod reloadMethod) -{ - MSG_UrlQueue *q; - MSG_UrlQueueElement *elem = NULL; - XP_Bool newQ = FALSE; - - q = GetOrCreateUrlQueue(pane, &newQ); - if (q) - { - elem = new MSG_UrlQueueElement (url, q, exitFunction, pane, reloadMethod); - if (elem) - q->Add(elem); - if (newQ) - q->GetNextUrl(); - } - return q; -} - -/* static*/ MSG_UrlQueue *MSG_UrlQueue::AddLocalMsgCopyUrlToPane (MessageCopyInfo * info, const char *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, NET_ReloadMethod reloadMethod) -{ - MSG_UrlQueue *q; - MSG_UrlLocalMsgCopyQueueElement *elem = NULL; - XP_Bool newQ = FALSE; - - q = GetOrCreateUrlQueue(pane, &newQ); - - if (q) - { - elem = new MSG_UrlLocalMsgCopyQueueElement (info, url, q, exitFunction, pane, reloadMethod); - if (elem) - q->Add(elem); - if (newQ) - q->GetNextUrl(); - } - return q; -} - -/* static */ MSG_UrlQueue *MSG_UrlQueue::AddUrlToPane (URL_Struct *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, XP_Bool skipFE, FO_Present_Types outputFormat) -{ - MSG_UrlQueue *q; - MSG_UrlQueueElement *elem = NULL; - XP_Bool newQ = FALSE; - - q = GetOrCreateUrlQueue(pane, &newQ); - if (q) - { - elem = new MSG_UrlQueueElement (url, q, exitFunction, pane, skipFE, outputFormat); - if (elem) - q->Add(elem); - if (newQ) - q->GetNextUrl(); - } - return q; -} - -/* static */ MSG_UrlQueue *MSG_UrlQueue::AddLocalMsgCopyUrlToPane(MessageCopyInfo * info, URL_Struct * url, Net_GetUrlExitFunc * exitFunction, MSG_Pane * pane, XP_Bool skipFE) -{ - MSG_UrlQueue *q; - MSG_UrlLocalMsgCopyQueueElement *elem = NULL; - XP_Bool newQ = FALSE; - - q = GetOrCreateUrlQueue(pane, &newQ); - if (q) - { - elem = new MSG_UrlLocalMsgCopyQueueElement (info, url, q, exitFunction, pane, skipFE); - if (elem) - q->Add(elem); - if (newQ) - q->GetNextUrl(); - } - return q; -} - - -void MSG_UrlQueue::AddUrlAt (int where, const char *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, NET_ReloadMethod reloadMethod) -{ - if (!pane) - pane = m_pane; - - MSG_UrlQueueElement *elem = new MSG_UrlQueueElement (url, this, exitFunction, pane, reloadMethod); - if (elem) - InsertAt (where, elem); -} - -void MSG_UrlQueue::AddLocalMsgCopyUrlAt (MessageCopyInfo * info, int where, const char * url, Net_GetUrlExitFunc * exitFunction, MSG_Pane * pane, NET_ReloadMethod reloadMethod) -{ - if (!pane) - pane = m_pane; - - MSG_UrlLocalMsgCopyQueueElement *elem = new MSG_UrlLocalMsgCopyQueueElement (info, url, this, exitFunction, pane, reloadMethod); - if (elem) - InsertAt (where, elem); -} - - -void MSG_UrlQueue::GetNextUrl() -{ - int err = 0; - - MSG_UrlQueueElement *elem = GetAt(++m_runningUrl); - XP_ASSERT(elem); - if (elem) - { - // we need to make sure the queue element is ready to be run!!! - elem->PrepareToRun(); - - if (!elem->m_url) - { - elem->m_url = NET_CreateURLStruct (elem->m_urlString, elem->m_reloadMethod); - if (!elem->m_url) - return; // (MsgERR) MK_OUT_OF_MEMORY; - } - if (elem->m_url && XP_STRLEN(elem->m_url->address) > 0) - { - elem->m_url->internal_url = TRUE; - elem->m_url->pre_exit_fn = &MSG_UrlQueue::ExitFunction; - if (elem->m_callGetURLDirectly) - { - elem->m_url->pre_exit_fn = NULL; - err = NET_GetURL(elem->m_url, elem->m_outputFormat, elem->m_pane->GetContext(), MSG_UrlQueue::ExitFunction); - } else - { - err = elem->m_pane->GetURL (elem->m_url, FALSE); - } - } - else - { - elem->m_url->msg_pane = m_pane; - CallExitAndChain(elem->m_url, 0, elem->m_pane->GetContext()); - } - } -} - -void MSG_UrlQueue::HandleUrlQueueInterrupt(URL_Struct * URL_s, int status, MWContext * window_id) -{ - for (int i = 0; i < m_interruptCallbacks.GetSize(); i++) - { - MSG_UrlQueueInterruptFunc *exitFunc = (MSG_UrlQueueInterruptFunc *) m_interruptCallbacks.GetAt(i); - if (exitFunc) - (*exitFunc) (this, URL_s, status, window_id); - } - // default is to do nothing -} - -/*static*/ XPPtrArray *MSG_UrlQueue::m_queueArray = NULL; - - -/*static*/ MSG_UrlQueue *MSG_UrlQueue::FindQueue (const char *url, MWContext *context) -{ - for (int i = 0; i < GetQueueArray()->GetSize(); i++) - { - MSG_UrlQueue *queue = (MSG_UrlQueue*)(GetQueueArray()->GetAt(i)); - for (int j = 0; j < queue->GetSize(); j++) - { - MSG_UrlQueueElement *elem = queue->GetAt(j); - - // pane has been deleted - remove element from queue - if (!MSG_Pane::PaneInMasterList(elem->m_pane)) - { -#ifdef DEBUG_akkana - printf("FindQueue: Removing deleted pane\n"); -#endif /* DEBUG */ - queue->RemoveAt(j--); - delete elem; - } - else if (elem->m_pane->GetContext() == context) - { - if (elem->m_urlString && !XP_STRCMP(elem->m_urlString, url)) - return queue; - } - } - } - return NULL; -} - - -/*static*/ MSG_UrlQueue *MSG_UrlQueue::FindQueue (MSG_Pane *pane) -{ - for (int i = 0; i < GetQueueArray()->GetSize (); i++) - { - MSG_UrlQueue *queue = (MSG_UrlQueue*)(GetQueueArray()->GetAt(i)); - if (queue->m_pane == pane) - return queue; - } - return NULL; -} - -/*static*/ void MSG_UrlQueue::ExitFunction (URL_Struct *URL_s, int status, MWContext *window_id) -{ - MSG_UrlQueue *queue = FindQueue (URL_s->address, window_id); - XP_ASSERT(queue); - if (queue) - queue->CallExitAndChain(URL_s, status, window_id); -} - -// Note that this can delete itself if at the end of its list. -void MSG_UrlQueue::CallExitAndChain(URL_Struct *URL_s, int status, MWContext *window_id) -{ - MSG_UrlQueueElement *elem = GetAt (m_runningUrl); - if (elem->m_exitFunction) - { - m_inExitFunc = TRUE; - elem->m_exitFunction (URL_s, status, window_id); - m_inExitFunc = FALSE; - } - if ((m_runningUrl >= GetSize() - 1) || status == MK_INTERRUPTED) - { -if (status == MK_INTERRUPTED) - HandleUrlQueueInterrupt(URL_s, status, window_id); - delete this; - } - else - GetNextUrl(); -} - - -extern "C" int MSG_GetUrlQueueSize (const char *url, MWContext *context) -{ - MSG_UrlQueue *queue = MSG_UrlQueue::FindQueue (url, context); - if (queue) - return queue->GetSize(); - return 0; -} - -void MSG_UrlQueue::AddInterruptCallback(MSG_UrlQueueInterruptFunc *interruptFunc) -{ - m_interruptCallbacks.Add((void *) interruptFunc); -} - - -//***************************************************************************** -// MSG_AddLdapToAddressBookQueue -- Wraps the URL queue functionality with -// the AB begin-import/end-import stuff which -// tells the AB not to commit changes -// on every entry -// - -#include "addrbook.h" -#include "xpgetstr.h" -#include "abcom.h" // new address book support.. - -extern "C" -{ - extern int MK_MSG_ADDING_LDAP_TO_AB; - extern int MK_MSG_ADDRESS_BOOK; -} - -#ifdef MOZ_NEWADDR - -MSG_AddLdapToAddressBookQueue::MSG_AddLdapToAddressBookQueue (MSG_Pane *pane) : - MSG_UrlQueue (pane) -{ -} - -void MSG_AddLdapToAddressBookQueue::GetNextUrl () -{ - int32 percent = 0; - MSG_UrlQueue::GetNextUrl(); // load the next url... - - // now we want to get at the owner data so we can get the destination container... - MSG_UrlQueueElement *elem = GetAt(m_runningUrl); - XP_ASSERT(elem); - - AB_AddressBookCopyInfo * abCopyInfo = (AB_AddressBookCopyInfo *) elem->GetURLStruct()->owner_data; - AB_ContainerInfo * container = NULL; - - if (abCopyInfo) // container was ref counted by the person who created the URL and will be released when the url is done... - container = abCopyInfo->destContainer; - - if (m_runningUrl <= 0) - { - // if we need to notify the container that it is running do so here... - } - else if (m_runningUrl + 1 >= GetSize()) - { - // if we need to notify the container that it is no longer running, do so here... - } - else - percent = (int32) (100 * (((double) m_runningUrl) / ((double) GetSize()))); - - FE_SetProgressBarPercent (m_pane->GetContext(), percent); - - // get the name of the address book and use that in the status string... - AB_ContainerAttribValue * attrib = NULL; - char * status = NULL; - AB_GetContainerAttribute(container, attribName, &attrib); - - if (attrib && attrib->u.string) - status = PR_smprintf (XP_GetString(MK_MSG_ADDING_LDAP_TO_AB), attrib->u.string, (long) m_runningUrl + 1, (long) GetSize()); - else - status = PR_smprintf (XP_GetString(MK_MSG_ADDING_LDAP_TO_AB), XP_GetString(MK_MSG_ADDRESS_BOOK), (long) m_runningUrl + 1, (long) GetSize()); - - if (status) - { - FE_Progress (m_pane->GetContext(), status); - XP_FREE(status); - } - - AB_FreeContainerAttribValue(attrib); -} - -#else - -MSG_AddLdapToAddressBookQueue::MSG_AddLdapToAddressBookQueue (MSG_Pane *pane) : - MSG_UrlQueue (pane) -{ - m_addressBook = NULL; -} - - -void MSG_AddLdapToAddressBookQueue::GetNextUrl () -{ - MSG_UrlQueue::GetNextUrl(); - int32 percent = 0; - - if (m_runningUrl <= 0) - { - m_addressBook = FE_GetAddressBook (m_pane); - XP_ASSERT(m_addressBook); - if (m_addressBook && 1 < GetSize()) - AB_SetIsImporting (m_addressBook, TRUE); - } - else if (m_runningUrl + 1 >= GetSize()) - { - XP_ASSERT(m_addressBook); - if (m_addressBook && 1 < GetSize()) - AB_SetIsImporting (m_addressBook, FALSE); - } - else - percent = (int32) (100 * (((double) m_runningUrl) / ((double) GetSize()))); - - FE_SetProgressBarPercent (m_pane->GetContext(), percent); - char *status = PR_smprintf (XP_GetString(MK_MSG_ADDING_LDAP_TO_AB), " " /* bogus spcace...new AB needs a string here */, (long) m_runningUrl + 1, (long) GetSize()); - if (status) - { - FE_Progress (m_pane->GetContext(), status); - XP_FREE(status); - } -} -#endif - -//***************************************************************************** -// MSG_ImapLoadFolderUrlQueue -- Cleans interrupted state that would have been -// cleaned up by url exit functions -MSG_ImapLoadFolderUrlQueue::MSG_ImapLoadFolderUrlQueue(MSG_Pane *pane) - : MSG_UrlQueue(pane) -{} - - // called if ExitFunction status == MK_INTERRUPTED -void MSG_UrlQueue::HandleFolderLoadInterrupt(MSG_UrlQueue *queue, URL_Struct *URL_s, int status, MWContext *window_id) -{ - // emit enough EndingUpdate to clear the StartingUpdate for any queued message copies - queue->m_pane->CrushUpdateLevelToZero(); - - // Iterate over the imap folders and clear the loading context if it matches window_id. - // This happens if you interrupt a Go Offline/Go Online after all of the load folder - // urls are on the queue - MSG_FolderIterator *folderIterator = new MSG_FolderIterator(queue->m_pane->GetMaster()->GetImapMailFolderTree()); - if (folderIterator) - { - MSG_FolderInfo *folder = folderIterator->First(); - while (folder) - { - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - if (imapFolder) - imapFolder->NotifyFolderLoaded(queue->m_pane, TRUE); // TRUE == interrupted - folder = folderIterator->Next(); - } - delete folderIterator; - } - - - // These exit functions will clear the pane of any information about current filters - // or folder loads and send a MSG_PaneNotifyFolderLoaded is necessary - if (queue->m_pane->GetActiveImapFiltering()) - FilteringCompleteExitFunction(URL_s,status,window_id); - else - ImapFolderSelectCompleteExitFunction(URL_s,status,window_id); - - // free any lingering copy info structs hanging off of the context - MessageCopyInfo *copyInfo = window_id->msgCopyInfo; - while (copyInfo != NULL) - { - if (copyInfo->moveState.destDB != NULL) - { - copyInfo->moveState.destDB->Close(); - copyInfo->moveState.destDB = NULL; - } - if (copyInfo->dstFolder->TestSemaphore(queue)) - copyInfo->dstFolder->ReleaseSemaphore(queue); - - MessageCopyInfo *victim = copyInfo; - copyInfo = copyInfo->nextCopyInfo; - XP_FREE(victim); - } - window_id->msgCopyInfo = NULL; -} - - -void MSG_ImapLoadFolderUrlQueue::AddUrl (const char *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, NET_ReloadMethod reloadMethod) -{ - if (m_IndexOfNextUrl != kNoSpecialIndex) - AddUrlAt(m_IndexOfNextUrl++, url, exitFunction, pane, reloadMethod); - else - MSG_UrlQueue::AddUrl(url, exitFunction, pane, reloadMethod); -} - -XP_Bool MSG_ImapLoadFolderUrlQueue::IsIMAPLoadFolderUrlQueue() -{ - return TRUE; -} - diff --git a/mozilla/lib/libmsg/msgurlq.h b/mozilla/lib/libmsg/msgurlq.h deleted file mode 100644 index 8c43b0ac2a0..00000000000 --- a/mozilla/lib/libmsg/msgurlq.h +++ /dev/null @@ -1,210 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// -// -// - -#ifndef _MSGURLQ_H_ -#define _MSGURLQ_H_ - -#include "ptrarray.h" -#include "net.h" - -class MSG_Pane; -class ABook; -class MSG_UrlQueue; - - -/******************************************************************************************************************** -Notes: Each URL in a MSG_UrlQueue is represented by a queue element for any instance data it - needs. Since a pane can have one and only one URL queue, it would be nice to be able to have queue elements - for different types of URLs (local copy message urls, LDAP to AB, etc.) To support this effort, it will be common - practice to subclass MSG_UrlQueueElement with a queue element capable of handling your new type of url. In addition, - your new subclass should support a virtual method called PrepareToRun() if you need to make any specific changes to - things like the current context for your new url before it is run. MSG_UrlQueue will always call the element's - PrepareToRun method before actually running that URL in the queue. You will also need to modify MSG_UrlQueue to - add methods for adding urls of your new type. - -*********************************************************************************************************************/ - -//***************************************************************************** -// MSG_UrlQueueElement -- Each URL in a MSG_UrlQueue is represented by a -// MSG_UrlQueueElement for any instance data it needs -//***************************************************************************** - -class MSG_UrlQueueElement -{ - friend MSG_UrlQueue; - -public: - MSG_UrlQueueElement (const char *, MSG_UrlQueue *, Net_GetUrlExitFunc *, MSG_Pane *, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD, FO_Present_Types outputFormat = FO_CACHE_AND_PRESENT); - MSG_UrlQueueElement (URL_Struct *, MSG_UrlQueue *, Net_GetUrlExitFunc *, MSG_Pane *, XP_Bool skipFE = FALSE, FO_Present_Types outputFormat = FO_CACHE_AND_PRESENT); - MSG_UrlQueueElement (URL_Struct * urls, MSG_UrlQueue *q); - virtual ~MSG_UrlQueueElement (); - virtual URL_Struct* GetURLStruct(); - virtual char* GetURLString(); - - virtual void PrepareToRun(); // the queue element is about to be run....(added in particular for subclasses) - -protected: - char *m_urlString; - XP_Bool m_callGetURLDirectly; - MSG_Pane *m_pane; - URL_Struct *m_url; - MSG_UrlQueue *m_queue; - Net_GetUrlExitFunc *m_exitFunction; - NET_ReloadMethod m_reloadMethod; - FO_Present_Types m_outputFormat; -}; - - -//************************************************************************************ -// MSG_UrlLocalMsgCopyQueueElement - we want a queue element type which can handle -// LOCAL message copy urls. Don't try this with IMAP -// copy URLs. -//************************************************************************************ - -class MSG_UrlLocalMsgCopyQueueElement : public MSG_UrlQueueElement -{ -public: - MSG_UrlLocalMsgCopyQueueElement (MessageCopyInfo *, const char *, MSG_UrlQueue *, Net_GetUrlExitFunc *, - MSG_Pane *, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - MSG_UrlLocalMsgCopyQueueElement (MessageCopyInfo *, URL_Struct *, MSG_UrlQueue *, Net_GetUrlExitFunc *, - MSG_Pane *, XP_Bool skipFE = FALSE); - MSG_UrlLocalMsgCopyQueueElement (MessageCopyInfo *, URL_Struct * urls, MSG_UrlQueue * q); - - virtual ~MSG_UrlLocalMsgCopyQueueElement(); - virtual void PrepareToRun(); // element is about to be run, we need to clobber context's copy info and replace with ours - -protected: - MessageCopyInfo * m_copyInfo; -}; - - -//****************************************************************************************************** -// MSG_UrlQueue -- Handles a queue of URLs which get fired in serial. This is -// a stopgap measure to compensate for the lack of multiple running -// URLs per MWContext -// -// Note: Must always call the queue element's PrepareToRun method before running a URL for that element. -//******************************************************************************************************* - -typedef void MSG_UrlQueueInterruptFunc (MSG_UrlQueue *queue, URL_Struct *URL_s, int status, MWContext *window_id); - - -class MSG_UrlQueue : public XPPtrArray -{ -public: - MSG_UrlQueue (MSG_Pane *pane); - virtual ~MSG_UrlQueue (); - - // it would be nice to use signature overloading for adding urls. Later, we might want to do this!!! - - // Use this for regular add-to-tail functionality - static MSG_UrlQueue *AddUrlToPane (const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - static MSG_UrlQueue * AddLocalMsgCopyUrlToPane (MessageCopyInfo * info, const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - - // Use this for regular add-to-tail functionality with URL_Struct filled in - static MSG_UrlQueue * AddUrlToPane (URL_Struct *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, XP_Bool skipFE = FALSE, FO_Present_Types outputFormat = FO_CACHE_AND_PRESENT); - static MSG_UrlQueue * AddLocalMsgCopyUrlToPane (MessageCopyInfo * info, URL_Struct * url, Net_GetUrlExitFunc * exitFunction = NULL, MSG_Pane * pane = NULL, XP_Bool skipFE = FALSE); - - void AddUrl (const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - void AddUrl(URL_Struct *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, XP_Bool skipFE = FALSE, FO_Present_Types outputFormat = FO_CACHE_AND_PRESENT); - void AddLocalMsgCopyUrl(MessageCopyInfo * info, const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane * pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - - // Use this if you need to insert a URL in the middle of the queue - virtual void AddUrlAt (int where, const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - virtual void AddLocalMsgCopyUrlAt (MessageCopyInfo * info, int where, const char * url, Net_GetUrlExitFunc * exitFunction = NULL, MSG_Pane * pane = NULL, NET_ReloadMethod reloadmethod = NET_DONT_RELOAD); - - // Use this if you need to know which URL is running - virtual int GetCursor () { return m_runningUrl; } - - // start the queue by calling this - virtual void GetNextUrl (); - - // which pane is this queue running url's in? - virtual MSG_Pane* GetPane() { return m_pane; } - - // Use this if you need to know which queue a URL is on - static MSG_UrlQueue *FindQueue (const char *url, MWContext *context); - static MSG_UrlQueue *FindQueue (MSG_Pane *pane); - static MSG_UrlQueue *FindQueueWithSameContext(MSG_Pane *pane); - - // Use this if you need to know the queue for a pane - static MSG_UrlQueue *FindQueue (const char *url, MSG_Pane *pane); - // used by subclasses who are designed to use other meta data for ordering urls. - // an example is MSG_ImapLoadFolderUrlQueue - static const int kNoSpecialIndex; - void SetSpecialIndexOfNextUrl(int index) { m_IndexOfNextUrl = index; } - virtual XP_Bool IsIMAPLoadFolderUrlQueue(); - static void HandleFolderLoadInterrupt(MSG_UrlQueue *queue, URL_Struct *URL_s, int status, MWContext *window_id); - virtual void AddInterruptCallback(MSG_UrlQueueInterruptFunc *interruptFunc); -protected: - - MSG_UrlQueueElement *GetAt(int i) { return (MSG_UrlQueueElement*) XPPtrArray::GetAt(i); } - - // called if ExitFunction status == MK_INTERRUPTED - virtual void HandleUrlQueueInterrupt(URL_Struct *URL_s, int status, MWContext *window_id); - - static void ExitFunction (URL_Struct *URL_s, int status, MWContext *window_id); - void CallExitAndChain (URL_Struct *URL_s, int status, MWContext *window_id); - - static MSG_UrlQueue * GetOrCreateUrlQueue (MSG_Pane * pane, XP_Bool * newQueue); - - int m_runningUrl; - MSG_Pane *m_pane; - static XPPtrArray *m_queueArray; - int m_IndexOfNextUrl; - XP_Bool m_inExitFunc; - XPPtrArray m_interruptCallbacks; - static XPPtrArray *GetQueueArray(); -}; - - -class MSG_AddLdapToAddressBookQueue : public MSG_UrlQueue -{ -public: - - MSG_AddLdapToAddressBookQueue (MSG_Pane *); - - virtual void GetNextUrl (); - - ABook *m_addressBook; -}; - - -class MSG_ImapLoadFolderUrlQueue : public MSG_UrlQueue -{ -public: - MSG_ImapLoadFolderUrlQueue(MSG_Pane *pane); - - // Use this for regular add-to-tail functionality, or use the index of it has been set. - // Used to ensure ordering of message copy urls when going offline - virtual void AddUrl (const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - virtual XP_Bool IsIMAPLoadFolderUrlQueue(); -protected: - // called if ExitFunction status == MK_INTERRUPTED -// virtual void HandleUrlQueueInterrupt(URL_Struct *URL_s, int status, MWContext *window_id); - -}; - -#endif diff --git a/mozilla/lib/libmsg/msgutils.c b/mozilla/lib/libmsg/msgutils.c deleted file mode 100644 index b8639c4e768..00000000000 --- a/mozilla/lib/libmsg/msgutils.c +++ /dev/null @@ -1,856 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* msgutils.c --- various and sundry - */ - -#include "msg.h" -#include "xp_time.h" -#include "xpgetstr.h" -#include "xplocale.h" -#include "htmldlgs.h" -#include "prefapi.h" -#include "xp_qsort.h" - -extern int MK_OUT_OF_MEMORY; -extern int MK_MSG_NON_MAIL_FILE_WRITE_QUESTION; -extern int MK_MSG_HTML_DOMAINS_DIALOG; -extern int MK_MSG_HTML_DOMAINS_DIALOG_TITLE; - -#ifdef XP_MAC -#pragma warn_unusedarg off -#endif - -int -msg_GetURL(MWContext* context, URL_Struct* url, XP_Bool issafe) -{ - XP_ASSERT(context); - - /* phil & bienvenu think issafe means "allowed to start another URL even if - one is already runing". e.g. delete from msgPane, and load next msg */ - if (!issafe) - msg_InterruptContext (context, TRUE); - - url->internal_url = TRUE; - if (!url->open_new_window_specified) - { - url->open_new_window_specified = TRUE; - url->open_new_window = FALSE; - } - - return FE_GetURL(context, url); -} - - -void -msg_InterruptContext(MWContext* context, XP_Bool safetoo) -{ - XP_InterruptContext(context); - - -#ifdef NOTDEF /* ###tw */ - - struct MSG_Frame *msg_frame; - if (!context) return; - if (safetoo || !context->msgframe || - !context->msgframe->safe_background_activity) { - /* save msg_frame in case context gets deleted on interruption */ - msg_frame = context->msgframe; - XP_InterruptContext(context); - if (msg_frame) { - msg_frame->safe_background_activity = FALSE; - } - } -#endif -} - - -XP_Bool -MSG_RequiresComposeWindow (const char *url) -{ - if (!url) return FALSE; - if (!strncasecomp (url, "mailto:", 7)) - { - return TRUE; - } - return FALSE; -} - - -XP_Bool -MSG_RequiresBrowserWindow (const char *url) -{ - if (!url) return FALSE; - if (MSG_RequiresNewsWindow (url) || - MSG_RequiresMailWindow (url) || - !strncasecomp (url, "about:", 6) || - !strncasecomp (url, "addbook:", 8) || - !strncasecomp (url, "addbook-ldap", 12) || /* no colon so addbook-ldap and addbook-ldaps both match */ - !strncasecomp (url, "mailto:", 7) || - !strncasecomp (url, "view-source:", 12) || - !strncasecomp (url, "internal-callback-handler:", 26) || - !strncasecomp (url, "internal-panel-handler", 22) || - !strncasecomp (url, "internal-dialog-handler", 23)) - return FALSE; - - else if (!strncasecomp (url, "news:", 5) || - !strncasecomp (url, "snews:", 6) || - !strncasecomp (url, "mailbox:", 8) || - !strncasecomp (url, "IMAP:", 5)) - { - /* Mail and news messages themselves don't require browser windows, - but their attachments do. */ - if (XP_STRSTR(url, "?part=") || XP_STRSTR(url, "&part=")) - return TRUE; - else - return FALSE; - } - else - return TRUE; -} - - - -/* If we're in a mail window, and clicking on a link which will itself - require a mail window, then don't allow this to show up in a different - window - since there can only be one mail window. - */ -XP_Bool -MSG_NewWindowProhibited (MWContext *context, const char *url) -{ - if (!context) return FALSE; - if ((context->type == MWContextMail && - MSG_RequiresMailWindow (url)) || - (context->type == MWContextNews && - MSG_RequiresNewsWindow (url)) || - (MSG_RequiresComposeWindow (url))) - return TRUE; - else - return FALSE; -} - - -char * -MSG_ConvertToQuotation (const char *string) -{ - int32 column = 0; - int32 newlines = 0; - int32 chars = 0; - const char *in; - char *out; - char *new_string; - - if (! string) return 0; - - /* First, count up the lines in the string. */ - for (in = string; *in; in++) - { - chars++; - if (*in == CR || *in == LF) - { - if (in[0] == CR && in[1] == LF) { - in++; - chars++; - } - newlines++; - column = 0; - } - else - { - column++; - } - } - /* If the last line doesn't end in a newline, pretend it does. */ - if (column != 0) - newlines++; - - /* 2 characters for each '> ', +1 for '\0', and + potential linebreak */ - new_string = (char *) XP_ALLOC (chars + (newlines * 2) + 1 + LINEBREAK_LEN); - if (! new_string) - return 0; - - column = 0; - out = new_string; - - /* Now copy. */ - for (in = string; *in; in++) - { - if (column == 0) - { - *out++ = '>'; - *out++ = ' '; - } - - *out++ = *in; - if (*in == CR || *in == LF) - { - if (in[0] == CR && in[1] == LF) - *out++ = *++in; - newlines++; - column = 0; - } - else - { - column++; - } - } - - /* If the last line doesn't end in a newline, add one. */ - if (column != 0) - { - XP_STRCPY (out, LINEBREAK); - out += LINEBREAK_LEN; - } - - *out = 0; - - return new_string; -} - - - -/* Given a string and a length, removes any "Re:" strings from the front. - It also deals with that "Re[2]:" thing that some mailers do. - - Returns TRUE if it made a change, FALSE otherwise. - - The string is not altered: the pointer to its head is merely advanced, - and the length correspondingly decreased. - */ -XP_Bool -msg_StripRE(const char **stringP, uint32 *lengthP) -{ - const char *s, *s_end; - const char *last; - uint32 L; - XP_Bool result = FALSE; - XP_ASSERT(stringP); - if (!stringP) return FALSE; - s = *stringP; - L = lengthP ? *lengthP : XP_STRLEN(s); - - s_end = s + L; - last = s; - - AGAIN: - - while (s < s_end && XP_IS_SPACE(*s)) - s++; - - if (s < (s_end-2) && - (s[0] == 'r' || s[0] == 'R') && - (s[1] == 'e' || s[1] == 'E')) - { - if (s[2] == ':') - { - s = s+3; /* Skip over "Re:" */ - result = TRUE; /* Yes, we stripped it. */ - goto AGAIN; /* Skip whitespace and try again. */ - } - else if (s[2] == '[' || s[2] == '(') - { - const char *s2 = s+3; /* Skip over "Re[" */ - - /* Skip forward over digits after the "[". */ - while (s2 < (s_end-2) && XP_IS_DIGIT(*s2)) - s2++; - - /* Now ensure that the following thing is "]:" - Only if it is do we alter `s'. - */ - if ((s2[0] == ']' || s2[0] == ')') && s2[1] == ':') - { - s = s2+2; /* Skip over "]:" */ - result = TRUE; /* Yes, we stripped it. */ - goto AGAIN; /* Skip whitespace and try again. */ - } - } - } - - /* Decrease length by difference between current ptr and original ptr. - Then store the current ptr back into the caller. */ - if (lengthP) *lengthP -= (s - (*stringP)); - *stringP = s; - - return result; -} - - - - -char* -msg_GetDummyEnvelope(void) -{ - static char result[75]; - char *ct; - time_t now = time ((time_t *) 0); -#if defined (XP_WIN) - if (now < 0 || now > 0x7FFFFFFF) - now = 0x7FFFFFFF; -#endif - ct = ctime(&now); - XP_ASSERT(ct[24] == CR || ct[24] == LF); - ct[24] = 0; - /* This value must be in ctime() format, with English abbreviations. - strftime("... %c ...") is no good, because it is localized. */ - XP_STRCPY(result, "From - "); - XP_STRCPY(result + 7, ct); - XP_STRCPY(result + 7 + 24, LINEBREAK); - return result; -} - -/* #define STRICT_ENVELOPE */ - -XP_Bool -msg_IsEnvelopeLine(const char *buf, int32 buf_size) -{ -#ifdef STRICT_ENVELOPE - /* The required format is - From jwz Fri Jul 1 09:13:09 1994 - But we should also allow at least: - From jwz Fri, Jul 01 09:13:09 1994 - From jwz Fri Jul 1 09:13:09 1994 PST - From jwz Fri Jul 1 09:13:09 1994 (+0700) - - We can't easily call XP_ParseTimeString() because the string is not - null terminated (ok, we could copy it after a quick check...) but - XP_ParseTimeString() may be too lenient for our purposes. - - DANGER!! The released version of 2.0b1 was (on some systems, - some Unix, some NT, possibly others) writing out envelope lines - like "From - 10/13/95 11:22:33" which STRICT_ENVELOPE will reject! - */ - const char *date, *end; - - if (buf_size < 29) return FALSE; - if (*buf != 'F') return FALSE; - if (XP_STRNCMP(buf, "From ", 5)) return FALSE; - - end = buf + buf_size; - date = buf + 5; - - /* Skip horizontal whitespace between "From " and user name. */ - while ((*date == ' ' || *date == '\t') && date < end) - date++; - - /* If at the end, it doesn't match. */ - if (XP_IS_SPACE(*date) || date == end) - return FALSE; - - /* Skip over user name. */ - while (!XP_IS_SPACE(*date) && date < end) - date++; - - /* Skip horizontal whitespace between user name and date. */ - while ((*date == ' ' || *date == '\t') && date < end) - date++; - - /* Don't want this to be localized. */ -# define TMP_ISALPHA(x) (((x) >= 'A' && (x) <= 'Z') || \ - ((x) >= 'a' && (x) <= 'z')) - - /* take off day-of-the-week. */ - if (date >= end - 3) - return FALSE; - if (!TMP_ISALPHA(date[0]) || !TMP_ISALPHA(date[1]) || !TMP_ISALPHA(date[2])) - return FALSE; - date += 3; - /* Skip horizontal whitespace (and commas) between dotw and month. */ - if (*date != ' ' && *date != '\t' && *date != ',') - return FALSE; - while ((*date == ' ' || *date == '\t' || *date == ',') && date < end) - date++; - - /* take off month. */ - if (date >= end - 3) - return FALSE; - if (!TMP_ISALPHA(date[0]) || !TMP_ISALPHA(date[1]) || !TMP_ISALPHA(date[2])) - return FALSE; - date += 3; - /* Skip horizontal whitespace between month and dotm. */ - if (date == end || (*date != ' ' && *date != '\t')) - return FALSE; - while ((*date == ' ' || *date == '\t') && date < end) - date++; - - /* Skip over digits and whitespace. */ - while (((*date >= '0' && *date <= '9') || *date == ' ' || *date == '\t') && - date < end) - date++; - /* Next character should be a colon. */ - if (date >= end || *date != ':') - return FALSE; - - /* Ok, that ought to be enough... */ - -# undef TMP_ISALPHA - -#else /* !STRICT_ENVELOPE */ - - if (buf_size < 5) return FALSE; - if (*buf != 'F') return FALSE; - if (XP_STRNCMP(buf, "From ", 5)) return FALSE; - -#endif /* !STRICT_ENVELOPE */ - - return TRUE; -} - - - -XP_Bool -msg_ConfirmMailFile (MWContext *context, const char *file_name) -{ - XP_File in = XP_FileOpen (file_name, xpMailFolder, XP_FILE_READ_BIN); - char buf[100]; - char *s = buf; - int L; - if (!in) return TRUE; - L = XP_FileRead(buf, sizeof(buf)-2, in); - XP_FileClose (in); - if (L < 1) return TRUE; - buf[L] = 0; - while (XP_IS_SPACE(*s)) - s++, L--; - if (L > 5 && msg_IsEnvelopeLine(s, L)) - return TRUE; - PR_snprintf (buf, sizeof(buf), - XP_GetString (MK_MSG_NON_MAIL_FILE_WRITE_QUESTION), file_name); - return FE_Confirm (context, buf); -} - - -void msg_ClearMessageArea(MWContext* context) -{ - /* ###tw This needs to be replaced by stuff that notifies FE's the - right way */ -#ifndef _USRDLL - /* hack. Open a stream to layout, give it - whitespace (it needs something) and then close it - right away. This has the effect of getting the front end to - clear out the HTML display area. - */ - NET_StreamClass *stream; - static PA_InitData data; - URL_Struct *url; - if (!context) - return; - - data.output_func = LO_ProcessTag; - url = NET_CreateURLStruct ("", NET_NORMAL_RELOAD); - if (!url) return; - stream = PA_BeginParseMDL (FO_PRESENT, &data, url, context); - if (stream) - { - char buf[] = "<BODY></BODY>"; - int status = (*stream->put_block) (stream, buf, 13); - if (status < 0) - (*stream->abort) (stream, status); - else - (*stream->complete) (stream); - XP_FREE (stream); - } - NET_FreeURLStruct (url); - FE_SetProgressBarPercent (context, 0); -#endif -/* MSG_LoadMessage, with MSG_MESSAGEKEYNONE calls msg_ClearMessageArea, which -// has a bug (drawing the background in grey).  So I just changed MSG_LoadMessage() to -// do nothing for XP_MAC except set its m_Key to MSG_MESSAGEKEYNONE and exit.  This transfers -// the responsibility for clearing the message area to the front end.  So far, so good. -// -// Now, it's no good just painting the area, because the next refresh will redraw using the -// existing history entry.  So somehow we have to remove the history entry. -// There's no API for doing this, except calling SHIST_AddDocument with an entry whose -// address string is null or empty. -// -// If this state of affairs changes, this code will break, but I put in asserts to -// notify us about it. 98/01/21 -// --------------------------------------------------------------------------- -*/ -#if 0 - /* It would be nice to do it this way, but we need to cause a refresh in the fe */ - URL_Struct* url = NET_CreateURLStruct("", NET_NORMAL_RELOAD); - History_entry* newEntry; - LO_DiscardDocument(context); - XP_ASSERT(url); - newEntry = SHIST_CreateHistoryEntry(url, "Nobody Home"); - XP_FREEIF(url); - XP_ASSERT(newEntry); - /* Using an empty address string will cause "AddDocument" to do a removal of the old entry, -  // then delete the new entry, and exit. - */ - SHIST_AddDocument(context, newEntry); -#endif -} - -static MSG_HEADER_SET standard_header_set[] = { - MSG_TO_HEADER_MASK, - MSG_REPLY_TO_HEADER_MASK, - MSG_CC_HEADER_MASK, - MSG_BCC_HEADER_MASK, - MSG_NEWSGROUPS_HEADER_MASK, - MSG_FOLLOWUP_TO_HEADER_MASK - }; - -#define TOTAL_HEADERS (sizeof(standard_header_set)/sizeof(MSG_HEADER_SET)) - -extern int MSG_ExplodeHeaderField(MSG_HEADER_SET msg_header, const char * field, MSG_HeaderEntry ** return_list) -{ - XP_ASSERT(return_list); - *return_list = NULL; - if (field && strlen(field)) { - MSG_HeaderEntry *list=NULL; - char * name; - char * address ; - int count; - - count = MSG_ParseRFC822Addresses (field, &name, &address); - if (count > 0) { - char * address_start = address; - char * name_start = name; - int i; - - list = (MSG_HeaderEntry*)XP_ALLOC(sizeof(MSG_HeaderEntry)*count); - if (!list) - return(-1); - - for (i=0; i<count; i++) { - list[i].header_type = msg_header; - list[i].header_value = XP_STRDUP(address); - if (name && strlen(name)) - list[i].header_value = PR_smprintf("%s <%s>", name, address); - else - list[i].header_value = XP_STRDUP(address); - while (*address != '\0') - address++; - address++; - while (*name != '\0') - name++; - name++; - } - if (name) - XP_FREE(name_start); - if (address) - XP_FREE(address_start); - } - *return_list = list; - return count; - } - return(0); -} - -extern int MSG_CompressHeaderEntries( MSG_HeaderEntry * in_list, int list_size, MSG_HeaderEntry ** return_list) -{ - int total = 0; - *return_list = NULL; - if (in_list != NULL && list_size > 0) { - MSG_HeaderEntry * list = NULL; - char * new_header_value; - int i,j; - - for (i=0; i<TOTAL_HEADERS; i++) { - new_header_value = NULL; - for (j=0; j<list_size; j++) { - if (in_list[j].header_type == standard_header_set[i]) { - XP_Bool zero_init = FALSE; - int header_length = 0; - if (!new_header_value) - zero_init = TRUE; - else - header_length = XP_STRLEN(new_header_value)+1; - if (XP_STRLEN(in_list[j].header_value) == 0) - continue; - new_header_value = (char*)XP_REALLOC( - new_header_value, - header_length+XP_STRLEN(in_list[j].header_value)+XP_STRLEN(",")+1); - if (new_header_value == NULL) { - if (list != NULL) - XP_FREE(list); - /* don't forget to free up previous header_value entries */ - return(-1); - } - if (zero_init) - new_header_value[0]='\0'; - if (new_header_value && XP_STRLEN(new_header_value)) - XP_STRCAT(new_header_value,","); - XP_STRCAT(new_header_value,in_list[j].header_value); - } - } - if (new_header_value) { - total++; - list = (MSG_HeaderEntry *)XP_REALLOC(list,total*sizeof(MSG_HeaderEntry)); - if (list==NULL) { - if (new_header_value) - XP_FREE(new_header_value); - return(-1); - } - list[total-1].header_type = standard_header_set[i]; - list[total-1].header_value = new_header_value; - } - } - *return_list = list; - } - return(total); -} - - - -static int -msg_qsort_domains(const void* a, const void* b) -{ - return XP_STRCMP(*((const char**) a), *((const char**) b)); -} - - -static int -msg_generate_domains_list(char* domainlist, int* numfound, char*** returnlist) -{ - int num; - int i; - int j; - char* ptr; - char* endptr; - char** list = NULL; - for (num=0 , ptr = domainlist ; ptr ; num++, ptr = endptr) { - endptr = XP_STRCHR(ptr, ','); - if (endptr) endptr++; - } - if (num > 0) { - list = (char**) XP_CALLOC(num, sizeof(char*)); - if (!list) return MK_OUT_OF_MEMORY; - for (i=0 , ptr = domainlist ; ptr ; i++, ptr = endptr) { - endptr = XP_STRCHR(ptr, ','); - if (endptr) *endptr++ = '\0'; - XP_ASSERT(i < num); - if (i < num) list[i] = ptr; - } - XP_QSORT(list, num, sizeof(char*), msg_qsort_domains); - /* Now, remove any empty entries or duplicates. */ - for (i=0, j=0 ; i<num ; i++) { - ptr = list[i]; - if (ptr && (j == 0 || XP_STRCMP(ptr, list[j - 1]) != 0)) { - list[j++] = ptr; - } - } - num = j; - } - *numfound = num; - *returnlist = list; - return 0; -} - - -static PRBool -HTMLDomainsDialogDone(XPDialogState* state, char** argv, int argc, - unsigned int button) -{ - char* domainlist = NULL; - char* gone; - char* ptr; - char* endptr; - char** list = NULL; - int num; - int i; - int status; - - if (button != XP_DIALOG_OK_BUTTON) return PR_FALSE; - PREF_CopyCharPref("mail.htmldomains", &domainlist); - if (!domainlist || !*domainlist) return PR_FALSE; - gone = XP_FindValueInArgs("gone", argv, argc); - XP_ASSERT(gone); - if (!gone || !*gone) return PR_FALSE; - - status = msg_generate_domains_list(domainlist, &num, &list); - if (status < 0) goto FAIL; - - for (ptr = gone ; ptr ; ptr = endptr) { - endptr = XP_STRCHR(ptr, ','); - if (endptr) *endptr++ = '\0'; - if (*ptr) { - i = atoi(ptr); - XP_ASSERT(i >= 0 && i < num); - if (i >= 0 && i < num) { - XP_ASSERT(list[i]); - list[i] = NULL; - } - } - } - ptr = NULL; - for (i=0 ; i<num ; i++) { - if (list[i]) { - if (ptr) StrAllocCat(ptr, ","); - StrAllocCat(ptr, list[i]); - } - } - PREF_SetCharPref("mail.htmldomains", ptr ? ptr : ""); - PREF_SavePrefFile(); - FREEIF(ptr); - -FAIL: - FREEIF(list); - FREEIF(domainlist); - - return PR_FALSE; -} - - -int -MSG_DisplayHTMLDomainsDialog(MWContext* context) -{ - static XPDialogInfo dialogInfo = { - XP_DIALOG_OK_BUTTON | XP_DIALOG_CANCEL_BUTTON, - HTMLDomainsDialogDone, - 600, - 440 - }; - int status = 0; - char* domainlist; - char* list = NULL; - char* tmp; - XPDialogStrings* strings; - int i; - int num = 0; - char** array = NULL; - - PREF_CopyCharPref("mail.htmldomains", &domainlist); - - status = msg_generate_domains_list(domainlist, &num, &array); - if (status < 0) goto FAIL; - - for (i=0 ; i<num ; i++) { - tmp = PR_smprintf("<option value=%d>%s\n", i, array[i]); - if (!tmp) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - StrAllocCat(list, tmp); - XP_FREE(tmp); - } - - strings = XP_GetDialogStrings(MK_MSG_HTML_DOMAINS_DIALOG); - if (!strings) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - XP_CopyDialogString(strings, 0, list ? list : ""); - XP_MakeHTMLDialog(context, &dialogInfo, MK_MSG_HTML_DOMAINS_DIALOG_TITLE, - strings, NULL,PR_FALSE); - - -FAIL: - FREEIF(array); - FREEIF(domainlist); - FREEIF(list); - return status; -} - -/* - * Does in-place modification of input param to conform with son-of-1036 rules - * - * A newsgroup component is one portion of the newsgroup name, separated by - * dots. So mcom.dev.fouroh has three newsgroup components. This function is - * only concerned with one component because that's what we need for virtual - * newsgroups. - */ -void msg_MakeLegalNewsgroupComponent (char *name) -{ - int i = 0; - char ch; - - while ((ch = name[i]) != '\0') - { - /* legal chars are 0-9,a-z, and +,-,_ */ - - if (!(ch >= '0' && ch <= '9')) - if (!(ch >= 'a' && ch <= 'z')) - if (!(ch == '+' || ch == '-' || ch == '_')) - { - /* ch is illegal. We can lowercase an uppercase letter - * but everything else goes to some legal char, like '_' - */ - if (ch >= 'A' && ch <= 'Z') - name[i] += 32; - else - name[i] = '_'; - } - i++; - - /* a newsgroup component is limited to 14 chars */ - if (i > 13) - { - name[i] = '\0'; - break; - } - } -} - -void MSG_SetPercentProgress(MWContext *context, int32 numerator, int32 denominator) -{ - XP_ASSERT(numerator <= denominator && numerator >= 0 && denominator > 0); - if (numerator > denominator || numerator < 0 || denominator < 0) - { - FE_SetProgressBarPercent(context, -1); - } - else if (denominator > 0) - { - int32 percent; - if (denominator > 100L) - percent = (numerator / (denominator / 100L)); - else - percent = (100L * numerator) / denominator; - FE_SetProgressBarPercent (context, percent); - } -} - -const char* MSG_FormatDateFromContext(MWContext *context, time_t date) -{ - /* fix i18n. Well, maybe. Isn't strftime() supposed to be i18n? */ - /* ftong- Well.... strftime() in Mac and Window is not really i18n */ - /* We need to use XP_StrfTime instead of strftime */ - static char result[40]; /* 30 probably not enough */ - time_t now = time ((time_t *) 0); - - int32 offset = XP_LocalZoneOffset() * 60L; /* Number of seconds between - local and GMT. */ - - int32 secsperday = 24L * 60L * 60L; - - int32 nowday = (now + offset) / secsperday; - int32 day = (date + offset) / secsperday; - - if (day == nowday) { - XP_StrfTime(context, result, sizeof(result), XP_TIME_FORMAT, - localtime(&date)); - } else if (day < nowday && day > nowday - 7) { - XP_StrfTime(context, result, sizeof(result), XP_WEEKDAY_TIME_FORMAT, - localtime(&date)); - } else { -#if defined (XP_WIN) - if (date < 0 || date > 0x7FFFFFFF) - date = 0x7FFFFFFF; -#endif - XP_StrfTime(context, result, sizeof(result), XP_DATE_TIME_FORMAT, - localtime(&date)); - } - - return result; -} - diff --git a/mozilla/lib/libmsg/msgutils.h b/mozilla/lib/libmsg/msgutils.h deleted file mode 100644 index 981b56d3609..00000000000 --- a/mozilla/lib/libmsg/msgutils.h +++ /dev/null @@ -1,88 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* msgutils.h --- various and sundry - */ - -XP_BEGIN_PROTOS - -/* Interface to FE_GetURL, which should never be called directly by anything - else in libmsg. The "issafe" argument is TRUE if this is a URL which we - consider very safe, and will never screw up or be screwed by any activity - going on in the foreground. Be very very sure of yourself before ever - passing TRUE to the "issafe" argument. */ - -extern int msg_GetURL(MWContext* context, URL_Struct* url, XP_Bool issafe); - - -/* Interface to XP_InterruptContext(), which should never be called directly - by anything else in libmsg. The "safetoo" argument is TRUE if we really - want to interrupt everything, even "safe" background streams. In most - cases, it should be False.*/ - -extern void msg_InterruptContext(MWContext* context, XP_Bool safetoo); - - - -extern int msg_GrowBuffer (uint32 desired_size, - uint32 element_size, uint32 quantum, - char **buffer, uint32 *size); - -extern int msg_LineBuffer (const char *net_buffer, int32 net_buffer_size, - char **bufferP, uint32 *buffer_sizeP, - uint32 *buffer_fpP, - XP_Bool convert_newlines_p, - int32 (*per_line_fn) (char *line, uint32 - line_length, void *closure), - void *closure); - -extern int msg_ReBuffer (const char *net_buffer, int32 net_buffer_size, - uint32 desired_buffer_size, - char **bufferP, uint32 *buffer_sizeP, - uint32 *buffer_fpP, - int32 (*per_buffer_fn) (char *buffer, - uint32 buffer_size, - void *closure), - void *closure); - -extern NET_StreamClass *msg_MakeRebufferingStream (NET_StreamClass *next, - URL_Struct *url, - MWContext *context); - -/* Given a string and a length, removes any "Re:" strings from the front. - (If the length is not given, then XP_STRLEN() is used on the string.) - It also deals with that "Re[2]:" thing that some mailers do. - - Returns TRUE if it made a change, FALSE otherwise. - - The string is not altered: the pointer to its head is merely advanced, - and the length correspondingly decreased. - */ -extern XP_Bool msg_StripRE(const char **stringP, uint32 *lengthP); - -/* - * Does in-place modification of input param to conform with son-of-1036 rules - */ -extern void msg_MakeLegalNewsgroupComponent (char *name); - -extern void MSG_SetPercentProgress(MWContext *context, int32 numerator, int32 denominator); - -XP_END_PROTOS diff --git a/mozilla/lib/libmsg/msgzap.cpp b/mozilla/lib/libmsg/msgzap.cpp deleted file mode 100644 index 9d57f39697a..00000000000 --- a/mozilla/lib/libmsg/msgzap.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp_mcom.h" -#include "msgzap.h" - -#if defined(XP_OS2) && defined(__DEBUG_ALLOC__) -void* MSG_ZapIt::operator new(size_t size, const char *file, size_t line) { - void* rv = ::operator new(size, file, line); - if (rv) { - XP_MEMSET(rv, 0, size); - } - return rv; -} -#else -void* MSG_ZapIt::operator new(size_t size) { - void* rv = ::operator new(size); - if (rv) { - XP_MEMSET(rv, 0, size); - } - return rv; -} - -#endif diff --git a/mozilla/lib/libmsg/msgzap.h b/mozilla/lib/libmsg/msgzap.h deleted file mode 100644 index 3862750c4f4..00000000000 --- a/mozilla/lib/libmsg/msgzap.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgZap_H_ -#define _MsgZap_H_ - -// The whole purpose of this class is to redefine operator new for any subclass -// so that it will automatically zero out the whole class for me; thanks. - -class MSG_ZapIt { -public: -#if defined(XP_OS2) && defined(__DEBUG_ALLOC__) - static void* operator new(size_t size, const char *file, size_t line); -#else - static void* operator new(size_t size); -#endif -}; - - - -#endif /* _MsgZap_H_ */ diff --git a/mozilla/lib/libmsg/neohdrs.h b/mozilla/lib/libmsg/neohdrs.h deleted file mode 100644 index 38278854870..00000000000 --- a/mozilla/lib/libmsg/neohdrs.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef _NEOHDRS_H -#define _NEOHDRS_H -#endif - diff --git a/mozilla/lib/libmsg/newsdb.cpp b/mozilla/lib/libmsg/newsdb.cpp deleted file mode 100644 index cf64dbcfd15..00000000000 --- a/mozilla/lib/libmsg/newsdb.cpp +++ /dev/null @@ -1,701 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp.h" -#include "newsdb.h" -#include "dberror.h" -#include "newshdr.h" -#include "msgdbvw.h" -#include "msghdr.h" -#include "thrhead.h" -#include "grpinfo.h" -#include "msgmast.h" -#include "newshost.h" -#include "msgfinfo.h" -#include "newsset.h" -#include "xpgetstr.h" -#include "pmsgfilt.h" -#include "jsmsg.h" -#include "msgdbapi.h" - -extern "C" -{ - extern int MK_MSG_EXPIRE_COUNT; - extern int MK_MSG_DONE_EXPIRE_COUNT; -} - -NewsGroupDB::NewsGroupDB() -{ - m_groupURL = NULL; - m_filterList = NULL; - m_headerIndex = 0; - m_master = NULL; -} - -NewsGroupDB::~NewsGroupDB() -{ - if (m_filterList != NULL) - MSG_CancelFilterList(m_filterList); - FREEIF(m_groupURL); - JSFilter_cleanup(); -} -// inline virtuals put in .cpp file to help some compilers -int NewsGroupDB::GetCurVersion() {return kNewsDBVersion;} -NewsGroupDB *NewsGroupDB::GetNewsDB() {return this;} - -// groupURL is just the url constructed by msg_MakeNewsURL, e.g., -// "alt.fan.h-h-hippeaux//newshost:20/". -MsgERR NewsGroupDB::MessageDBOpenUsingURL(const char * groupURL) -{ - MsgERR err; - char *groupName; - - m_groupURL = XP_STRDUP(groupURL); - - char *hostName = NET_ParseURL (groupURL, GET_HOST_PART); - MSG_NewsHost* host = m_master->FindHost(hostName, *groupURL == 's', -1); - FREEIF(hostName); - - if (!host) return eUNKNOWN; // ###tw - - groupName = GetGroupNameFromURL(groupURL); - m_info = host->FindGroup(groupName); - FREEIF(groupName); - - if (!m_info) return eUNKNOWN; // ###tw - - // OK, break java script news filters if the user has defined filters for this group. - MSG_FilterError filterErr = MSG_FilterList::Open(m_master, filterNews, NULL, m_info, &m_filterList); - int32 filterCount = 0; - if (filterErr != FilterError_Success || (m_filterList->GetFilterCount(&filterCount) == FilterError_Success && filterCount == 0)) - { - if (m_filterList) - MSG_CancelFilterList(m_filterList); - - if (MSG_FilterList::Open(m_master, filterInbox, &m_filterList) != FilterError_Success) - m_filterList = NULL; - } - - // get root category if we have a category container... - m_info = m_info->GetNewsFolderInfo(); - m_set = m_info->GetSet(); - const char* dbFileName = m_info->GetDBFileName(); - - err = MessageDB::MessageDBOpen(dbFileName, TRUE); -// XP_FREE(dbFileName); - return err; -} - -MsgERR NewsGroupDB::Open(const char * groupURL, MSG_Master *master, - NewsGroupDB** pMessageDB) -{ - NewsGroupDB *newsDB; - - XP_ASSERT(master != NULL); - if (master == NULL) return eUNKNOWN; - - char *hostName = NET_ParseURL (groupURL, GET_HOST_PART); - - MSG_NewsHost* host = master->FindHost(hostName, *groupURL == 's', -1); - - if (!host) { - // ###tw This should probably be allowed. If someone types a news: - // URL by hand, then we should go create the host and stuff here. - // Not right now, though. - return eUNKNOWN; - } - - - FREEIF(hostName); - - if (m_cacheEnabled) - { - char* groupname = GetGroupNameFromURL(groupURL); - if (!groupname) return eUNKNOWN; // Bad URL? - - MSG_FolderInfoNews* info = host->FindGroup(groupname); - FREEIF(groupname); - if (!info) return eUNKNOWN; // New newsgroup? Probably should add... - // ###tw - const char *groupFile = info->GetDBFileName(); - XP_ASSERT(groupFile); - if (!groupFile) return eUNKNOWN; - newsDB = (NewsGroupDB *) FindInCache(groupFile); - if (newsDB) - { - *pMessageDB = newsDB; - // make this behave like the non-cache case. - ++newsDB->m_useCount; - return(eSUCCESS); - } - } - newsDB = new NewsGroupDB; - if (!newsDB) - { - *pMessageDB = NULL; - return(eOUT_OF_MEMORY); - } - - newsDB->m_master = master; - - MsgERR err = newsDB->MessageDBOpenUsingURL(groupURL); - if (err == eSUCCESS) - { - *pMessageDB = newsDB; - if (m_cacheEnabled) - GetDBCache()->Add(newsDB); - - newsDB->HandleLatered(); - - if (newsDB->m_dbFolderInfo != NULL) - newsDB->GetNewsFolderInfo()->SetNewsDB(newsDB); - } - else - { - *pMessageDB = NULL; - delete newsDB; - } - return(err); -} - -MsgERR NewsGroupDB::Commit(XP_Bool compress /* = FALSE */) -{ - return MessageDB::Commit(compress); -} - -// caller needs to RemoveReference when finished. -NewsMessageHdr *NewsGroupDB::GetNewsHdrForKey(MessageKey messageKey) -{ - NewsMessageHdr *headerObject = NULL; - MSG_HeaderHandle headerHandle = MSG_DBHandle_GetHandleForKey(m_dbHandle, messageKey); - if (headerHandle) - { - headerObject = new NewsMessageHdr; - headerObject->SetHandle(headerHandle); - } - return headerObject; -} - -// Expire up to but not including expireKey. -MsgERR NewsGroupDB::ExpireUpTo(MessageKey expireKey, MWContext *context) -{ - MsgERR err; - XP_ASSERT(m_dbFolderInfo != NULL); - if (m_dbFolderInfo == NULL) - return eSUCCESS; - // pass in 0 in case expiredMark is wrong - should'nt cost much since there - // probably aren't any articles with id's below expiredMark. - if ((err = ExpireRange(0 /*m_dbFolderInfo->m_expiredMark*/, --expireKey, context)) == eSUCCESS) - m_dbFolderInfo->SetExpiredMark(expireKey); - - if (err == eCorruptDB) - SetSummaryValid(FALSE); - - return err; -} - -MsgERR NewsGroupDB::ExpireRange(MessageKey startRange, MessageKey endRange, MWContext *context) -{ - MsgERR ret = MSG_DBHandle_ExpireRange(m_dbHandle, startRange, endRange); - - m_set->AddRange(startRange, endRange); - - char msgBuf[100]; - const char * msgTemplate = XP_GetString(MK_MSG_EXPIRE_COUNT); -//DMB TODO - what about removing these from the view, and giving progress? -// if (removeCount % 10 == 0) -// { -// PR_snprintf (msgBuf, sizeof(msgBuf), msgTemplate, removeCount); -// FE_Progress (context, msgBuf); -// } -// } - -// msgTemplate = XP_GetString(MK_MSG_DONE_EXPIRE_COUNT); -// PR_snprintf (msgBuf, sizeof(msgBuf), msgTemplate, removeCount); -// FE_Progress (context, msgBuf); - return eSUCCESS; -} - -// return highest article number we've seen. Returns 0 in case of errors. -MessageKey NewsGroupDB::GetHighwaterArticleNum() -{ - XP_ASSERT(m_dbFolderInfo != NULL); - if (m_dbFolderInfo == NULL) - return 0; - return m_dbFolderInfo->GetHighWater(); -} - -// return the key of the first article number we know about. -// Since the iterator iterates in id order, we can just grab the -// messagekey of the first header it returns. -// ### dmb -// This will not deal with the situation where we get holes in -// the headers we know about. Need to figure out how and when -// to solve that. This could happen if a transfer is interrupted. -// Do we need to keep track of known arts permanently? -MessageKey NewsGroupDB::GetLowWaterArticleNum() -{ - ListContext *pContext; - DBMessageHdr *pFirstHdr; - MessageKey lowWater = 0; - - if (ListFirst(&pContext, &pFirstHdr) == eSUCCESS) - { - lowWater = pFirstHdr->GetMessageKey(); - delete pFirstHdr; - ListDone(pContext); - } - return lowWater; -} - -// This function merely parses the XOver header into a DBMessageHdr -// and stores that in m_headers. From there, it will be threaded -// and added to the database in a separate pass. -MsgERR NewsGroupDB::AddHdrFromXOver(const char * line, MessageKey *msgId) -{ - MsgERR err = eSUCCESS; - - char copyHeader[1024]; - DBMessageHdr *msgHdr = new NewsMessageHdr; - XP_STRNCPY_SAFE(copyHeader, line, sizeof(copyHeader)); - if (!msgHdr->InitFromXOverLine(copyHeader, m_dbHandle)) - { -// XP_TRACE("Failed to parse XOver line %s\n", line); - return eXOverParseError; - } - if (msgId) - *msgId = msgHdr->GetMessageKey(); - - m_newHeaders.SetAtGrow(m_headerIndex++, msgHdr); - if (m_headerIndex > 200) - { - for (int i = 0; i < m_newHeaders.GetSize(); i++) - { - XP_Bool isNewThread; - - DBMessageHdr *dbMsgHdr = (DBMessageHdr *) m_newHeaders[i]; - err = AddHdrToDB(dbMsgHdr, &isNewThread); - delete dbMsgHdr; - // ### dmb - should we really ignore the rest of the headers? - if (err != eSUCCESS) - break; - } - m_newHeaders.RemoveAll(); - m_headerIndex = 0; - } - return err; -} - -MsgERR NewsGroupDB::AddHdrToDB(DBMessageHdr *newHdr, XP_Bool *newThread, XP_Bool notify /* = FALSE */) -{ - MsgERR err = eSUCCESS; - XP_Bool bRead; - XPStringObj msgId; - XP_Bool addToDB = TRUE; - - MessageKey highWaterMark = newHdr->m_messageKey; - - IsRead(newHdr->m_messageKey, &bRead); - if (bRead) - newHdr->OrFlags(kIsRead); - else - newHdr->OrFlags(kNew); - -#if 0 // DMB TODO - we could have an api that checks if duplicate header exists - DBMessageHdr *dbHeader = GetDBMessageHdrForHashMessageID(newHdr->m_messageIdID); - { - if (dbHeader != NULL) - { - if (dbHeader->GetLineCount() == newHdr->GetLineCount()) - { - XPStringObj newSubject, dbHdrSubject; - if (newHdr->GetSubject(newSubject, TRUE, GetDB()) && dbHeader->GetSubject(dbHdrSubject, TRUE, GetDB())) - { - addToDB = XP_STRCMP(newSubject, dbHdrSubject); - if (!addToDB) - { - MarkHdrRead(newHdr, TRUE, NULL); -#ifdef DEBUG_bienvenu - XP_Trace("got duplicate message-id marking read and ignoring\n"); -#endif - delete newHdr; // forget about this header - } - } - } - delete dbHeader; - } - } -#endif - // kill files should be here. - if (addToDB) - { - if (!bRead) - { - int32 filterCount = 0; - MSG_Filter *filter; - - if (m_filterList != NULL) - m_filterList->GetFilterCount(&filterCount); - - for (MSG_FilterIndex filterIndex = 0; filterIndex < filterCount; filterIndex++) - { - if (m_filterList->GetFilterAt(filterIndex, &filter) == FilterError_Success) - { - if (!filter->GetEnabled()) - continue; - - if (filter->GetType() == filterNewsJavaScript) - { - if (JSNewsFilter_execute(filter, newHdr, this) == FilterError_Success) - break; - } - else if (filter->GetType() == filterNewsRule) - { - MSG_Rule *rule; - MSG_SearchError matchTermStatus; - - if (filter->GetRule(&rule) == FilterError_Success) - { - { // put this in its own block so scope will get destroyed - // before we apply the actions, so folder file will get closed. - MSG_ScopeTerm scope (NULL, scopeOfflineNewsgroup, m_info); - - matchTermStatus = msg_SearchOfflineMail::MatchTermsForSearch(newHdr, - rule->GetTermList(), &scope, this); - } - if (matchTermStatus == SearchError_Success) - { - MSG_RuleActionType actionType; - void *value = NULL; - - if (rule->GetAction(&actionType, &value) == FilterError_Success) - { - switch (actionType) - { - case acDelete: - addToDB = FALSE; - break; - case acMarkRead: - MarkHdrRead(newHdr, TRUE, NULL); - break; - case acKillThread: - // for ignore and watch, we will need the db - // to check for the flags in msgHdr's that - // get added, because only then will we know - // the thread they're getting added to. - newHdr->OrFlags(kIgnored); - break; - case acWatchThread: - newHdr->OrFlags(kWatched); - break; - case acChangePriority: - SetPriority(newHdr, * ((MSG_PRIORITY *) &value)); - break; - default: - break; - } - } - break; - } - } - } - } - } - } - } - - if (addToDB) - err = MessageDB::AddHdrToDB(newHdr, newThread, notify); - // what if we just followed a link to an article number??? ### dmb TODO - m_dbFolderInfo->SetHighWater(highWaterMark); - return err; -} - - -// force the database to close - this'll flush out anybody holding onto -// a database without having a listener! -MsgERR NewsGroupDB::ForceClosed() -{ - m_info = NULL; // if we're forcing closed at shutdown, m_info might be already deleted. - return MessageDB::ForceClosed(); -} - -MsgERR NewsGroupDB::Close() -{ - // if we're really closing, make sure any changes to the newsrc file get - // saved. - if (m_useCount <= 1 && m_info) - { - m_info->GetHost()->WriteIfDirty(); - } - MessageDB::Close(); - return eSUCCESS; -} - -DBFolderInfo *NewsGroupDB::CreateFolderInfo(MSG_DBFolderInfoHandle handle) -{ - return new NewsFolderInfo((handle) ? handle : MSG_CreateNewsDBFolderInfo()); -} - -MsgERR NewsGroupDB::MarkHdrRead(DBMessageHdr *msgHdr, XP_Bool bRead, - ChangeListener *instigator) -{ - MessageKey messageKey = msgHdr->GetMessageKey(); - int err; - - if (bRead) - err = m_set->Add(messageKey); - else - err = m_set->Remove(messageKey); - - // give parent class chance to update data structures - MessageDB::MarkHdrRead(msgHdr, bRead, instigator); - - return (err >= 0) ? eSUCCESS : eOUT_OF_MEMORY; -} - -MsgERR NewsGroupDB::IsRead(MessageKey messageKey, XP_Bool *pRead) -{ - XP_ASSERT(pRead != NULL); - if (pRead == NULL) return eUNKNOWN; - - XP_Bool isRead = m_set->IsMember(messageKey); - *pRead = isRead; - return eSUCCESS; -} - -MsgERR NewsGroupDB::MarkAllRead(MWContext *context, IDArray * /*thoseMarked*/) -{ - if (GetLowWaterArticleNum() > 2) - m_set->AddRange(1, GetLowWaterArticleNum() - 1); - MsgERR err = MessageDB::MarkAllRead(context); - if (err == eSUCCESS && 1 <= GetHighwaterArticleNum()) - m_set->AddRange(1, GetHighwaterArticleNum()); // mark everything read in newsrc. - - return err; -} - -// caller needs to free return char * -char *NewsGroupDB::GetGroupNameFromURL(const char *url) -{ - char *groupPart; - char *groupName; - - groupPart = groupName = NET_ParseURL (url, GET_PATH_PART); - - if (!groupPart) - return NULL; - // ### dmb (tw) - needs someone who knows how to parse newsgroup urls - if (groupName[0] == '/') - { - groupName = XP_STRDUP(groupPart + 1); - FREEIF(groupPart); - } - return groupName; -} - -MsgERR NewsGroupDB::ListNextUnread(ListContext **pContext, DBMessageHdr **pResult) -{ - MsgERR dbErr = eSUCCESS; - XP_Bool lastWasRead = TRUE; - MessageKey nextKey = 0; - *pResult = NULL; - - while (TRUE) - { - if (*pContext == NULL) - { - *pContext = new ListContext; - - if (!*pContext) - return eOUT_OF_MEMORY; - (*pContext)->m_pMessageDB = this; - (*pContext)->m_curMessageNum = nextKey = GetLowWaterArticleNum(); - } - else - { - // this works if we are marking things read as we go. - // We really need a NextNonMember function which takes - // the place to start. - nextKey = MAX(m_set->FirstNonMember(), nextKey + 1); - } - if (dbErr == eDBEndOfList || nextKey > GetHighwaterArticleNum()) - { - delete *pContext; - break; - } - - // this currently doesn't happen since ListNext doesn't return errors - // other than eDBEndOfList. - else if (dbErr != eSUCCESS) - break; - if (IsRead(nextKey, &lastWasRead) == eSUCCESS && !lastWasRead) - { - DBMessageHdr *msgHdr = GetNewsHdrForKey(nextKey); - if (msgHdr) - { - *pResult = msgHdr; - (*pContext)->m_curMessageNum = nextKey; - break; - } - else - { - m_set->Add(nextKey); // mark read in newsrc file, so FirstNonMember will work - } - } - else if (lastWasRead) // first non-member seems horked - try adding this key to set - m_set->Add(nextKey); - } - return dbErr; -} - -XP_Bool NewsGroupDB::IsArticleOffline(MessageKey messageKey) -{ - XP_Bool ret = FALSE; - NewsMessageHdr *newsHdr = GetNewsHdrForKey(messageKey); - if (newsHdr != NULL) - { - ret = (newsHdr->GetFlags() & kOffline); - delete newsHdr; - } - return ret; -} - -XP_Bool NewsGroupDB::IsCategory() -{ - return m_info && m_info->TestFlag(MSG_FOLDER_FLAG_CATEGORY); -} - -XP_Bool NewsGroupDB::PurgeNeeded(MSG_PurgeInfo *purgeHdrPref, MSG_PurgeInfo *purgeArtPref) -{ - MSG_PurgeInfo curHdrPurgeInfo; - MSG_PurgeInfo curBodyPurgeInfo; - - GetPurgeHeaderInfo(&curHdrPurgeInfo); - GetPurgeArticleInfo(&curBodyPurgeInfo); - - if (curHdrPurgeInfo.m_useDefaults) - curHdrPurgeInfo = *purgeHdrPref; - - if (curBodyPurgeInfo.m_useDefaults) - curBodyPurgeInfo = *purgeArtPref; - - if (curHdrPurgeInfo.m_purgeBy == MSG_PurgeNone && curBodyPurgeInfo.m_purgeBy == MSG_PurgeNone) - return FALSE; - - if (curHdrPurgeInfo.m_purgeBy == MSG_PurgeByNumHeaders && m_dbFolderInfo->GetNumMessages() > curHdrPurgeInfo.m_numHeadersToKeep) - return TRUE; - - long daysToKeep = 0; - if (curHdrPurgeInfo.m_purgeBy == MSG_PurgeByAge) - daysToKeep = curHdrPurgeInfo.m_daysToKeep; - if (curBodyPurgeInfo.m_purgeBy == MSG_PurgeByAge) - daysToKeep = (daysToKeep == 0) ? curBodyPurgeInfo.m_daysToKeep : MIN(daysToKeep, curBodyPurgeInfo.m_daysToKeep); - - if (curHdrPurgeInfo.m_purgeBy == MSG_PurgeByAge || curBodyPurgeInfo.m_purgeBy == MSG_PurgeByAge) - { - // need to add a use default setting for per newsgroup purging preferences. - ListContext *listContext = NULL; - - while (TRUE) - { - MsgERR dbErr; - - DBMessageHdr *pHeader = NULL; - if (listContext == NULL) - dbErr = ListFirst (&listContext, &pHeader); - else - dbErr = ListNext(listContext, &pHeader); - if (dbErr != eSUCCESS) - dbErr = eDBEndOfList; - - if (dbErr != eSUCCESS /* eDBEndOfList */) - { - dbErr = eSUCCESS; - ListDone(listContext); - break; - } - time_t now = XP_TIME(); - long matchDay = now - (daysToKeep * 60 * 60 * 24); - long msgDate = pHeader->GetDate(); - delete pHeader; - if (msgDate < matchDay) - { - ListDone(listContext); - return TRUE; - } - } - } - return FALSE; -} - -MsgERR NewsGroupDB::SetOfflineRetrievalInfo(MSG_RetrieveArtInfo *info) -{ - XP_ASSERT(m_dbFolderInfo != NULL); - if (m_dbFolderInfo == NULL) - return eDBNotOpen; - GetNewsFolderInfo()->SetOfflineRetrievalInfo(info); - return eSUCCESS; -} - -MsgERR NewsGroupDB::SetPurgeHeaderInfo(MSG_PurgeInfo *purgeInfo) -{ - XP_ASSERT(m_dbFolderInfo != NULL); - if (m_dbFolderInfo == NULL) - return eDBNotOpen; - GetNewsFolderInfo()->SetPurgeHeaderInfo(purgeInfo); - return eSUCCESS; -} - -MsgERR NewsGroupDB::SetPurgeArticleInfo(MSG_PurgeInfo *purgeInfo) -{ - XP_ASSERT(m_dbFolderInfo != NULL); - if (m_dbFolderInfo == NULL) - return eDBNotOpen; - GetNewsFolderInfo()->SetPurgeArticleInfo(purgeInfo); - return eSUCCESS; -} - -MsgERR NewsGroupDB::GetOfflineRetrievalInfo(MSG_RetrieveArtInfo *info) -{ - XP_ASSERT(m_dbFolderInfo != NULL); - if (m_dbFolderInfo == NULL) - return eDBNotOpen; - GetNewsFolderInfo()->GetOfflineRetrievalInfo(info); - return eSUCCESS; -} - -MsgERR NewsGroupDB::GetPurgeHeaderInfo(MSG_PurgeInfo *purgeInfo) -{ - XP_ASSERT(m_dbFolderInfo != NULL); - if (m_dbFolderInfo == NULL) - return eDBNotOpen; - return GetNewsFolderInfo()->GetPurgeHeaderInfo(purgeInfo); -} - -MsgERR NewsGroupDB::GetPurgeArticleInfo(MSG_PurgeInfo *purgeInfo) -{ - XP_ASSERT(m_dbFolderInfo != NULL); - if (m_dbFolderInfo == NULL) - return eDBNotOpen; - return GetNewsFolderInfo()->GetPurgeArticleInfo(purgeInfo); -} diff --git a/mozilla/lib/libmsg/newsdb.h b/mozilla/lib/libmsg/newsdb.h deleted file mode 100644 index 7dc409c378d..00000000000 --- a/mozilla/lib/libmsg/newsdb.h +++ /dev/null @@ -1,111 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef _NewsGroupDB_H_ -#define _NewsGroupDB_H_ - -#include "msgdb.h" -#include "msgdbvw.h" -#include "errcode.h" -#include "msghdr.h" -#include "msgpurge.h" - -class DBThreadMessageHdr; -class NewsMessageHdr; -struct MSG_FilterList; - -class msg_NewsArtSet; -class MSG_FolderInfoNews; -class NewsFolderInfo; -class MSG_SearchTermArray; -struct MSG_PurgeInfo; -struct MSG_RetrieveArtInfo; - -const int kNewsDBVersion = 13; - -// news group database - -class NewsGroupDB : public MessageDB -{ -public: - NewsGroupDB(); - virtual ~NewsGroupDB(); - virtual MsgERR MessageDBOpenUsingURL(const char * groupURL); - char *GetGroupURL() { return m_groupURL; } - static MsgERR Open(const char * groupURL, MSG_Master *master, - NewsGroupDB** pMessageDB); - virtual MsgERR Close(); - virtual MsgERR ForceClosed(); - virtual MsgERR Commit(XP_Bool compress = FALSE); - - virtual int GetCurVersion(); - -// methods to get and set docsets for ids. - virtual MsgERR MarkHdrRead(DBMessageHdr *msgHdr, XP_Bool bRead, - ChangeListener *instigator = NULL); - virtual MsgERR IsRead(MessageKey messageKey, XP_Bool *pRead); - virtual XP_Bool IsArticleOffline(MessageKey messageKey); - virtual MsgERR MarkAllRead(MWContext *context, IDArray *thoseMarked = NULL); - virtual MsgERR AddHdrFromXOver(const char * line, MessageKey *msgId); - virtual MsgERR AddHdrToDB(DBMessageHdr *newHdr, XP_Bool *newThread, XP_Bool notify = FALSE); - - virtual MsgERR ListNextUnread(ListContext **pContext, DBMessageHdr **pResult); - virtual NewsMessageHdr *GetNewsHdrForKey(MessageKey messageKey); - // return highest article number we've seen. - virtual MessageKey GetHighwaterArticleNum(); - virtual MessageKey GetLowWaterArticleNum(); - - virtual MsgERR ExpireUpTo(MessageKey expireKey, MWContext *context); - virtual MsgERR ExpireRange(MessageKey startRange, MessageKey endRange, MWContext *context); - - msg_NewsArtSet *GetNewsArtSet() {return m_set;} - virtual NewsGroupDB *GetNewsDB() ; - - virtual XP_Bool PurgeNeeded(MSG_PurgeInfo *hdrPurgeInfo, MSG_PurgeInfo *artPurgeInfo); - XP_Bool IsCategory(); - NewsFolderInfo *GetNewsFolderInfo() {return (NewsFolderInfo *) m_dbFolderInfo;} - MsgERR SetOfflineRetrievalInfo(MSG_RetrieveArtInfo *); - MsgERR SetPurgeHeaderInfo(MSG_PurgeInfo *purgeInfo); - MsgERR SetPurgeArticleInfo(MSG_PurgeInfo *purgeInfo); - MsgERR GetOfflineRetrievalInfo(MSG_RetrieveArtInfo *info); - MsgERR GetPurgeHeaderInfo(MSG_PurgeInfo *purgeInfo); - MsgERR GetPurgeArticleInfo(MSG_PurgeInfo *purgeInfo); - - MSG_FolderInfoNews *GetFolderInfoNews() {return m_info;} - // caller needs to free - static char *GetGroupNameFromURL(const char *url); -protected: - - virtual DBFolderInfo *CreateFolderInfo(MSG_DBFolderInfoHandle handle); - - char* m_groupURL; - MSG_FilterList* m_filterList; - - uint32 m_headerIndex; // index of unthreaded headers - // at a specified entry. - MSG_Master *m_master; - - msg_NewsArtSet *m_set; - - MSG_FolderInfoNews* m_info; -}; - -#endif diff --git a/mozilla/lib/libmsg/newshdr.cpp b/mozilla/lib/libmsg/newshdr.cpp deleted file mode 100644 index 092597e1049..00000000000 --- a/mozilla/lib/libmsg/newshdr.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp.h" -#include "newshdr.h" -#include "imapoff.h" // for offline body blob chunking -#include "msgdbapi.h" - -/* ****************************************************************** */ - /** NewsMessageHdr Class **/ -/* ****************************************************************** */ -NewsMessageHdr::NewsMessageHdr() -{ - m_messageSize = 0; - if (!m_dbHeaderHandle) - m_dbHeaderHandle = GetNewNewsHeaderHandle(); -} - -NewsMessageHdr::NewsMessageHdr(MSG_HeaderHandle handle) : DBMessageHdr(handle) -{ - m_messageSize = 0; -} - -int32 NewsMessageHdr::AddToArticle(const char *block, int32 length, MSG_DBHandle db ) -{ - return MSG_HeaderHandle_AddToOfflineMessage(m_dbHeaderHandle, block, length, db); -} - -int32 NewsMessageHdr::ReadFromArticle(char *block, int32 length, int32 offset, MSG_DBHandle db) -{ - return MSG_HeaderHandle_ReadFromOfflineMessage(m_dbHeaderHandle, block, length, offset, db); -} - -void NewsMessageHdr::PurgeOfflineMessage(MSG_DBHandle db) -{ - MSG_HeaderHandle_PurgeOfflineMessage(m_dbHeaderHandle, db); -} - -int32 NewsMessageHdr::GetOfflineMessageLength(MSG_DBHandle db) -{ - return MSG_HeaderHandle_GetOfflineMessageLength(m_dbHeaderHandle, db); -} - -uint32 NewsMessageHdr::GetByteLength() -{ -// if we have the message size in bytes, we should return it. -// return (m_flags & kNewsSizeInBytes) ? m_messageSize : 0; - return 0; -} - diff --git a/mozilla/lib/libmsg/newshdr.h b/mozilla/lib/libmsg/newshdr.h deleted file mode 100644 index 6417b6beb7c..00000000000 --- a/mozilla/lib/libmsg/newshdr.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// news message header - subclass of DBMessagehdr -#ifndef NEWS_HDR_H_ -#define NEWS_HDR_H_ - -#include "msghdr.h" - -class NewsMessageHdr : public DBMessageHdr -{ -public: - /** Instance Methods **/ - NewsMessageHdr(); - NewsMessageHdr(MSG_HeaderHandle handle); - - int32 AddToArticle(const char *block, int32 length, MSG_DBHandle db); - int32 ReadFromArticle(char *block, int32 length, int32 offset, MSG_DBHandle db); - int32 GetOfflineMessageLength(MSG_DBHandle db); - virtual void PurgeOfflineMessage(MSG_DBHandle db); - virtual uint32 GetByteLength(); -}; - - -#endif diff --git a/mozilla/lib/libmsg/newshost.cpp b/mozilla/lib/libmsg/newshost.cpp deleted file mode 100644 index 7f59424175f..00000000000 --- a/mozilla/lib/libmsg/newshost.cpp +++ /dev/null @@ -1,2212 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "newshost.h" - -#include "newsset.h" -#include "msgfinfo.h" -#include "msgfpane.h" -#include "hosttbl.h" -#include "grec.h" -#include "prefapi.h" - -#ifdef XP_UNIX -static const char LINEBREAK_START = '\012'; -#else -static const char LINEBREAK_START = '\015'; -#endif -MSG_NewsHost* MSG_NewsHost::M_FileOwner = NULL; - -extern "C" { - extern int MK_OUT_OF_MEMORY; - extern int MK_UNABLE_TO_OPEN_NEWSRC; - extern int MK_MIME_ERROR_WRITING_FILE; - HG28366 - extern int MK_MSG_CANT_MOVE_FOLDER; -} - -MSG_NewsHost::MSG_NewsHost(MSG_Master* master, const char* name, - XP_Bool xxx, int32 port) -{ - m_master = master; - m_hostname = new char [XP_STRLEN(name) + 1]; - XP_STRCPY(m_hostname, name); - HG18763 - XP_ASSERT(port); - if (port == 0) port = HG28736 NEWS_PORT; - m_port = port; - - m_searchableGroupCharsets = XP_HashTableNew(20, XP_StringHash, - (XP_HashCompFunction) strcmp); - - m_nameAndPort = NULL; - m_fullUIName = NULL; - m_optionLines = NULL; - m_filename = NULL; - m_groups = NULL; - m_dbfilename = NULL; - m_dirty = 0; - m_writetimer = NULL; - m_postingAllowed = TRUE; - m_supportsExtensions = FALSE; - m_pushAuth = FALSE; - m_groupSucceeded = FALSE; -} - -MSG_NewsHost::~MSG_NewsHost() -{ - if (m_dirty) WriteNewsrc(); - if (m_groupTreeDirty) SaveHostInfo(); - FREEIF(m_optionLines); - delete [] m_filename; - delete [] m_hostname; - FREEIF(m_nameAndPort); - FREEIF(m_fullUIName); - delete m_groups; - delete [] m_dbfilename; - delete m_groupTree; - if (m_block) - delete [] m_block; - if (m_groupFile) - XP_FileClose (m_groupFile); - FREEIF(m_groupFilePermissions); - if (M_FileOwner == this) M_FileOwner = NULL; - FREEIF(m_hostinfofilename); - int i; - for (i = 0; i < m_supportedExtensions.GetSize(); i++) - XP_FREE((char*) m_supportedExtensions.GetAt(i)); - for (i = 0; i < m_searchableGroups.GetSize(); i++) - XP_FREE((char*) m_searchableGroups.GetAt(i)); - for (i = 0; i < m_searchableHeaders.GetSize(); i++) - XP_FREE((char*) m_searchableHeaders.GetAt(i)); - for (i = 0; i < m_propertiesForGet.GetSize(); i++) - XP_FREE((char*) m_propertiesForGet.GetAt(i)); - for (i = 0; i < m_valuesForGet.GetSize(); i++) - XP_FREE((char*) m_valuesForGet.GetAt(i)); - if (m_searchableGroupCharsets) - { - // We do NOT free the individual key/value pairs, - // because deleting m_searchableGroups above has - // already caused this to happen. - XP_HashTableDestroy(m_searchableGroupCharsets); - m_searchableGroupCharsets = NULL; - } -} - - -void -MSG_NewsHost::OpenGroupFile(const XP_FilePerm permissions) -{ - XP_ASSERT(permissions); - if (!permissions) return; - if (m_groupFile) { - if (m_groupFilePermissions && - XP_STRCMP(m_groupFilePermissions, permissions) == 0) { - return; - } - XP_FileClose(m_groupFile); - m_groupFile = NULL; - } - if (M_FileOwner && M_FileOwner != this && M_FileOwner->m_groupFile) { - XP_FileClose(M_FileOwner->m_groupFile); - M_FileOwner->m_groupFile = NULL; - } - M_FileOwner = this; - FREEIF(m_groupFilePermissions); - m_groupFilePermissions = XP_STRDUP(permissions); - m_groupFile = XP_FileOpen(m_hostinfofilename, xpXoverCache, permissions); -} - - - -void MSG_NewsHost::ClearNew() -{ - m_firstnewdate = time(0) + 1; -} - - - -void MSG_NewsHost::dump() -{ - // ###tw Write me... -} - - -int32 MSG_NewsHost::getPort() -{ - return m_port; -} - - -HG28361 - -time_t MSG_NewsHost::getLastUpdate() -{ - return m_lastgroupdate; -} - -void MSG_NewsHost::setLastUpdate(time_t date) -{ - m_lastgroupdate = date; -} - -const char* MSG_NewsHost::getStr() -{ - return m_hostname; -} - -const char* MSG_NewsHost::getNameAndPort() -{ - if (!m_nameAndPort) { - if (m_port != (HG23837 NEWS_PORT)) { - m_nameAndPort = PR_smprintf("%s:%ld", m_hostname, long(m_port)); - } else { - m_nameAndPort = XP_STRDUP(m_hostname); - } - } - return m_nameAndPort; -} - -const char* MSG_NewsHost::getFullUIName() -{ - if (!m_fullUIName) { - if (HG65276) return getNameAndPort(); - m_fullUIName = PR_smprintf("%s%s", getNameAndPort(), - HG38467); - } - return m_fullUIName; -} - -int32 -MSG_NewsHost::RememberLine(char* line) -{ - char* new_data; - if (m_optionLines) { - new_data = - (char *) XP_REALLOC(m_optionLines, - XP_STRLEN(m_optionLines) - + XP_STRLEN(line) + 4); - } else { - new_data = (char *) XP_ALLOC(XP_STRLEN(line) + 3); - } - if (!new_data) return MK_OUT_OF_MEMORY; - XP_STRCPY(new_data, line); - XP_STRCAT(new_data, LINEBREAK); - - m_optionLines = new_data; - - return 0; - -} - - -int32 -MSG_NewsHost::ProcessLine_s(char* line, uint32 line_size, void* closure) -{ - return ((MSG_NewsHost*) closure)->ProcessLine(line, line_size); -} - - -int32 -MSG_NewsHost::ProcessLine(char* line, uint32 line_size) -{ - /* guard against blank line lossage */ - if (line[0] == '#' || line[0] == CR || line[0] == LF) return 0; - - line[line_size] = 0; - - if ((line[0] == 'o' || line[0] == 'O') && - !strncasecomp (line, "options", 7)) { - return RememberLine(line); - } - - char *s; - char *end = line + line_size; - static msg_NewsArtSet *set; - - for (s = line; s < end; s++) - if (*s == ':' || *s == '!') - break; - - if (*s == 0) { - /* What is this? Well, don't just throw it away... */ - return RememberLine(line); - } - - set = msg_NewsArtSet::Create(s + 1, this); - if (!set) return MK_OUT_OF_MEMORY; - - XP_Bool subscribed = (*s == ':'); - *s = '\0'; - - if (strlen(line) == 0) - { - delete set; - return 0; - } - - MSG_FolderInfoNews* info; - - if (subscribed && IsCategoryContainer(line)) - { - info = new MSG_FolderInfoCategoryContainer(line, set, subscribed, - this, - m_hostinfo->GetDepth() + 1); - msg_GroupRecord* group = FindOrCreateGroup(line); - // Go add all of our categories to the newsrc. - AssureAllDescendentsLoaded(group); - msg_GroupRecord* end = group->GetSiblingOrAncestorSibling(); - msg_GroupRecord* child; - for (child = group->GetNextAlphabetic() ; - child != end ; - child = child->GetNextAlphabetic()) { - XP_ASSERT(child); - if (!child) break; - char* fullname = child->GetFullName(); - if (!fullname) break; - MSG_FolderInfoNews* info = FindGroup(fullname); - if (!info) { // autosubscribe, if we haven't seen this one. - char* groupLine = PR_smprintf("%s:", fullname); - if (groupLine) { - ProcessLine(groupLine, XP_STRLEN(groupLine)); - XP_FREE(groupLine); - } - } - delete [] fullname; - } - } - else - info = new MSG_FolderInfoNews(line, set, subscribed, this, - m_hostinfo->GetDepth() + 1); - - if (!info) return MK_OUT_OF_MEMORY; - - // for now, you can't subscribe to category by itself. - if (! info->IsCategory()) - { - XPPtrArray* infolist = (XPPtrArray*) m_hostinfo->GetSubFolders(); - infolist->Add(info); - } - - m_groups->Add(info); - - // prime the folder info from the folder cache while it's still around. - // Except this might disable the update of new counts - check it out... - m_master->InitFolderFromCache (info); - - return 0; -} - - -int MSG_NewsHost::LoadNewsrc(MSG_FolderInfo* hostinfo) -{ - char *ibuffer = 0; - uint32 ibuffer_size = 0; - uint32 ibuffer_fp = 0; - - m_hostinfo = hostinfo; - XP_ASSERT(m_hostinfo); - if (!m_hostinfo) return -1; - - int status = 0; - - FREEIF(m_optionLines); - - if (!m_groups) { - int size = 2048; - char* buffer; - buffer = new char[size]; - if (!buffer) return MK_OUT_OF_MEMORY; - - m_groups = new MSG_FolderArray(); - if (!m_groups) { - delete [] buffer; - return MK_OUT_OF_MEMORY; - } - XP_File fid = XP_FileOpen(GetNewsrcFileName(), - HG84636 xpNewsRC, - XP_FILE_READ_BIN); - if (fid) { - do { - status = XP_FileRead(buffer, size, fid); - if (status > 0) { - msg_LineBuffer(buffer, status, - &ibuffer, &ibuffer_size, &ibuffer_fp, - FALSE, -#ifdef XP_OS2 - (int32 (_Optlink*) (char*,uint32,void*)) -#endif - MSG_NewsHost::ProcessLine_s, this); - } - } while (status > 0); - XP_FileClose(fid); - } - if (status == 0 && ibuffer_fp > 0) { - status = ProcessLine_s(ibuffer, ibuffer_fp, this); - ibuffer_fp = 0; - } - - delete [] buffer; - FREEIF(ibuffer); - - } - - // build up the category tree for each category container so that roll-up - // of counts will work before category containers are opened. - for (int32 i = 0; i < m_groups->GetSize(); i++) { - MSG_FolderInfoNews *info = (MSG_FolderInfoNews *) m_groups->GetAt(i); - if (info->GetType() == FOLDER_CATEGORYCONTAINER) { - const char* groupname = info->GetNewsgroupName(); - msg_GroupRecord* group = m_groupTree->FindDescendant(groupname); - XP_ASSERT(group); - if (group) { - MSG_FolderInfoCategoryContainer *catContainer = - (MSG_FolderInfoCategoryContainer *) info; - - info->SetFlag(MSG_FOLDER_FLAG_ELIDED | MSG_FOLDER_FLAG_DIRECTORY); - - catContainer->BuildCategoryTree(catContainer, groupname, group, - 2, m_master); - } - } - } - return 0; -} - - -int -MSG_NewsHost::WriteNewsrc() -{ - XP_ASSERT(m_groups); - if (!m_groups) return -1; - - XP_ASSERT(m_dirty); - // Just to be sure. It's safest to go ahead and write it out anyway, - // even if we do somehow get called without the dirty bit set. - - XP_File fid = XP_FileOpen(GetNewsrcFileName(), xpTemporaryNewsRC, - XP_FILE_WRITE_BIN); - if (!fid) return MK_UNABLE_TO_OPEN_NEWSRC; - - int status = 0; - -#ifdef XP_UNIX - /* Clone the permissions of the "real" newsrc file into the temp file, - so that when we rename the finished temp file to the real file, the - preferences don't appear to change. */ - { - XP_StatStruct st; - if (XP_Stat (GetNewsrcFileName(), &st, - HG48362 xpNewsRC) == 0) - /* Ignore errors; if it fails, bummer. */ - - /* SCO doesn't define fchmod at all. no big deal. - AIX3, however, defines it to take a char* as the first parameter. The - man page sez it takes an int, though. ... */ -#if defined( SCO_SV ) || defined ( AIXV3 ) - { - char *really_tmp_file = WH_FileName(GetNewsrcFileName(), xpTemporaryNewsRC); - - chmod (really_tmp_file, (st.st_mode | S_IRUSR | S_IWUSR)); - - XP_FREE(really_tmp_file); - } -#else - fchmod (fileno(fid), (st.st_mode | S_IRUSR | S_IWUSR)); -#endif - } -#endif /* XP_UNIX */ - - if (m_optionLines) { - status = XP_FileWrite(m_optionLines, XP_STRLEN(m_optionLines), fid); - if (status < int(XP_STRLEN(m_optionLines))) { - status = MK_MIME_ERROR_WRITING_FILE; - } - } - - int n = m_groups->GetSize(); - for (int i=0 ; i<n && status >= 0 ; i++) { - MSG_FolderInfoNews* info = (MSG_FolderInfoNews*) ((*m_groups)[i]); - // GetNewsFolderInfo will get root category for cat container. - char* str = info->GetNewsFolderInfo()->GetSet()->Output(); - if (!str) { - status = MK_OUT_OF_MEMORY; - break; - } - char* line = PR_smprintf("%s%s %s" LINEBREAK, info->GetNewsgroupName(), - info->IsSubscribed() ? ":" : "!", str); - if (!line) { - delete [] str; - status = MK_OUT_OF_MEMORY; - break; - } - int length = XP_STRLEN(line); - status = XP_FileWrite(line, length, fid); - if (status < length) { - status = MK_MIME_ERROR_WRITING_FILE; - } - delete [] str; - XP_FREE(line); - } - - XP_FileClose(fid); - - if (status >= 0) { - if (XP_FileRename(GetNewsrcFileName(), xpTemporaryNewsRC, - GetNewsrcFileName(), - HG72626 xpNewsRC) < 0) { - status = MK_MIME_ERROR_WRITING_FILE; - } - } - - if (status < 0) { - XP_FileRemove(GetNewsrcFileName(), xpTemporaryNewsRC); - return status; - } - m_dirty = FALSE; - if (m_writetimer) { - FE_ClearTimeout(m_writetimer); - m_writetimer = NULL; - } - - if (m_groupTreeDirty) SaveHostInfo(); - - return status; -} - - -int -MSG_NewsHost::WriteIfDirty() -{ - if (m_dirty) return WriteNewsrc(); - return 0; -} - - -void -MSG_NewsHost::MarkDirty() -{ - m_dirty = TRUE; - - if (!m_writetimer) - m_writetimer = FE_SetTimeout((TimeoutCallbackFunction)MSG_NewsHost::WriteTimer, this, - 5L * 60L * 1000L); // Hard-coded -- 5 minutes. - } - -void -MSG_NewsHost::WriteTimer(void* closure) -{ - MSG_NewsHost* host = (MSG_NewsHost*) closure; - host->m_writetimer = NULL; - if (host->WriteNewsrc() < 0) { - // ###tw Pop up error message??? - host->MarkDirty(); // Cause us to try again. Or is this bad? ###tw - } -} - - -const char* -MSG_NewsHost::GetNewsrcFileName() -{ - return m_filename; -} - - -int -MSG_NewsHost::SetNewsrcFileName(const char* name) -{ - delete [] m_filename; - m_filename = new char [XP_STRLEN(name) + 1]; - if (!m_filename) return MK_OUT_OF_MEMORY; - XP_STRCPY(m_filename, name); - - m_hostinfofilename = PR_smprintf("%s/hostinfo.dat", GetDBDirName()); - if (!m_hostinfofilename) return MK_OUT_OF_MEMORY; - - XP_StatStruct st; - if (XP_Stat (m_hostinfofilename, &st, xpXoverCache) == 0) { - m_fileSize = st.st_size; - } - - if (m_groupFile) { - XP_FileClose(m_groupFile); - m_groupFile = NULL; - } - - OpenGroupFile(); - - if (!m_groupFile) { - // It does not exist. Create an empty one. But first, we go through - // the whole directory and blow away anything that does not end in - // ".snm". This is to take care of people running B1 code, which - // kept databases with such filenames. - int lastcount = -1; - int count = -1; - do { - XP_Dir dir = XP_OpenDir(GetDBDirName(), xpXoverCache); - if (!dir) break; - lastcount = count; - count = 0; - XP_DirEntryStruct *entry = NULL; - for (entry = XP_ReadDir(dir); entry; entry = XP_ReadDir(dir)) { - count++; - const char* name = entry->d_name; - int length = XP_STRLEN(name); - if (name[0] == '.' || name[0] == '#' || - name[length - 1] == '~') continue; - if (length < 4 || - XP_STRCASECMP(name + length - 4, ".snm") != 0) { - char* tmp = PR_smprintf("%s/%s", GetDBDirName(), name); - if (tmp) { - XP_FileRemove(tmp, xpXoverCache); - XP_FREE(tmp); - } - } - } - XP_CloseDir(dir); - } while (lastcount != count); // Keep doing it over and over, until - // we get the same number of entries in - // the dir. This is because I do not - // trust XP_ReadDir() to do the right - // thing if I delete files out from - // under it. - - // OK, now create the new empty hostinfo file. - OpenGroupFile(XP_FILE_WRITE_BIN); - XP_ASSERT(m_groupFile); - if (!m_groupFile) - return -1; - OpenGroupFile(); - XP_ASSERT(m_groupFile); - if (!m_groupFile) - return -1; - - m_groupTreeDirty = 2; - } - - m_blockSize = 10240; // ###tw This really ought to be the most - // efficient file reading size for the current - // operating system. - - m_block = NULL; - while (!m_block && (m_blockSize >= 512)) - { - m_block = new char[m_blockSize + 1]; - if (!m_block) - m_blockSize /= 2; - } - if (!m_block) - return MK_OUT_OF_MEMORY; - - m_groupTree = msg_GroupRecord::Create(NULL, NULL, 0, 0, 0); - if (!m_groupTree) - return MK_OUT_OF_MEMORY; - - return ReadInitialPart(); -} - - -int -MSG_NewsHost::ReadInitialPart() -{ - OpenGroupFile(); - if (!m_groupFile) return -1; - - int32 length = XP_FileRead(m_block, m_blockSize, m_groupFile); - if (length < 0) length = 0; - m_block[length] = '\0'; - int32 version = 0; - - char* ptr; - char* endptr = NULL; - for (ptr = m_block ; *ptr ; ptr = endptr + 1) { - while (*ptr == CR || *ptr == LF) ptr++; - endptr = XP_STRCHR(ptr, LINEBREAK_START); - if (!endptr) break; - *endptr = '\0'; - if (ptr[0] == '#' || ptr[0] == '\0') { - continue; // Skip blank lines and comments. - } - if (XP_STRCMP(ptr, "begingroups") == 0) { - m_fileStart = endptr - m_block; - break; - } - char* ptr2 = XP_STRCHR(ptr, '='); - if (!ptr2) continue; - *ptr2++ = '\0'; - if (XP_STRCMP(ptr, "lastgroupdate") == 0) { - m_lastgroupdate = strtol(ptr2, NULL, 16); - } else if (XP_STRCMP(ptr, "firstnewdate") == 0) { - m_firstnewdate = strtol(ptr2, NULL, 16); - } else if (XP_STRCMP(ptr, "uniqueid") == 0) { - m_uniqueId = strtol(ptr2, NULL, 16); - } else if (XP_STRCMP(ptr, "pushauth") == 0) { - m_pushAuth = strtol(ptr2, NULL, 16); - } else if (XP_STRCMP(ptr, "version") == 0) { - version = strtol(ptr2, NULL, 16); - } - } - m_block[0] = '\0'; - if (version != 1) { - // The file got clobbered or damaged somehow. Throw it away. -#ifdef DEBUG_bienvenu - if (length > 0) - XP_ASSERT(FALSE); // this really shouldn't happen, right? -#endif - OpenGroupFile(XP_FILE_WRITE_BIN); - XP_ASSERT(m_groupFile); - if (!m_groupFile) return -1; - OpenGroupFile(); - XP_ASSERT(m_groupFile); - if (!m_groupFile) return -1; - - m_groupTreeDirty = 2; - m_fileStart = 0; - m_fileSize = 0; - } - m_groupTree->SetFileOffset(m_fileStart); - return 0; -} - -int -MSG_NewsHost::CreateFileHeader() -{ - PR_snprintf(m_block, m_blockSize, - "# Netscape newshost information file." LINEBREAK - "# This is a generated file! Do not edit." LINEBREAK - "" LINEBREAK - "version=1" LINEBREAK - "newsrcname=%s" LINEBREAK - "lastgroupdate=%08lx" LINEBREAK - "firstnewdate=%08lx" LINEBREAK - "uniqueid=%08lx" LINEBREAK - "pushauth=%1x" LINEBREAK - "" LINEBREAK - "begingroups", - m_filename, (long) m_lastgroupdate, (long) m_firstnewdate, (long) m_uniqueId, - m_pushAuth); - return XP_STRLEN(m_block); - -} - -int -MSG_NewsHost::SaveHostInfo() -{ - int status = 0; - msg_GroupRecord* grec; - XP_File in = NULL; - XP_File out = NULL; - char* blockcomma = NULL; - char* ptrcomma = NULL; - char* filename = NULL; - int length = CreateFileHeader(); - XP_ASSERT(length < m_blockSize - 50); - if (m_inhaled || length != m_fileStart) { - m_groupTreeDirty = 2; - } - if (m_groupTreeDirty < 0) { - // Uh, somehow we set the sign bit, probably some routine returned an - // error status. This will probably never happen. But if it does, - // we should just make sure to write things out in the most paranoid - // fashion. - m_groupTreeDirty = 2; - } - if (m_groupTreeDirty < 2) { - // Only bits and pieces are dirty. Write them out without writing the - // whole file. - OpenGroupFile(); - if (!m_groupFile) { - status = MK_UNABLE_TO_OPEN_NEWSRC; - goto FAIL; - } - XP_FileSeek(m_groupFile, 0, SEEK_SET); - XP_FileWrite(m_block, length, m_groupFile); - char* ptr = NULL; - for (grec = m_groupTree->GetChildren(); - grec; - grec = grec->GetNextAlphabetic()) { - if (grec->IsDirty()) { - if (grec->GetFileOffset() < m_fileStart) { - m_groupTreeDirty = 2; - break; - } - ptr = grec->GetSaveString(); - if (!ptr) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - length = XP_STRLEN(ptr); - if (length >= m_blockSize) { - char* tmp = new char [length + 512]; - if (!tmp) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - delete [] m_block; - m_block = tmp; - m_blockSize = length + 512; - } - // Read the old data, and make sure the old line was the - // same length as the new one. If not, set the dirty flag - // to 2, so we end up writing the whole file, below. - XP_FileSeek(m_groupFile, grec->GetFileOffset(), SEEK_SET); - int l = XP_FileRead(m_block, length, m_groupFile); - if (l != length || m_block[length - 1] != ptr[length - 1]) { - m_groupTreeDirty = 2; - break; - } - m_block[l] = '\0'; - char* p1 = XP_STRCHR(ptr, LINEBREAK_START); - char* p2 = XP_STRCHR(m_block, LINEBREAK_START); - XP_ASSERT(p1); - if (!p1 || !p2 || (p1 - ptr) != (p2 - m_block)) { - m_groupTreeDirty = 2; - break; - } - XP_ASSERT(grec->GetFileOffset() > 100); // header is at least 100 bytes long - XP_FileSeek(m_groupFile, grec->GetFileOffset(), SEEK_SET); - XP_FileWrite(ptr, XP_STRLEN(ptr), m_groupFile); - XP_FREE(ptr); - ptr = NULL; - } - } - FREEIF(ptr); - } - if (m_groupTreeDirty >= 2) { - // We need to rewrite the whole file. - filename = PR_smprintf("%s/tempinfo", GetDBDirName()); - if (!filename) return MK_OUT_OF_MEMORY; - int32 position = 0; - - if (m_groupFile) - { - XP_FileClose(m_groupFile); - m_groupFile = NULL; - } - - out = XP_FileOpen(filename, xpXoverCache, XP_FILE_WRITE_BIN); - if (!out) return MK_MIME_ERROR_WRITING_FILE; - - length = CreateFileHeader(); // someone probably has hosed m_block - so regen - status = XP_FileWrite(m_block, length, out); - if (status < 0) goto FAIL; - position += length; - m_fileStart = position; - m_groupTree->SetFileOffset(m_fileStart); - status = XP_FileWrite(LINEBREAK, LINEBREAK_LEN, out); - if (status < 0) goto FAIL; - position += LINEBREAK_LEN; - - blockcomma = NULL; - if (!m_inhaled) { - in = XP_FileOpen(m_hostinfofilename, xpXoverCache, XP_FILE_READ); - if (!in) { - status = MK_MIME_ERROR_WRITING_FILE; - goto FAIL; - } - do { - m_block[0] = '\0'; - XP_FileReadLine(m_block, m_blockSize, in); - } while (m_block[0] && - XP_STRNCMP(m_block, "begingroups", 11) != 0); - m_block[0] = '\0'; - XP_FileReadLine(m_block, m_blockSize, in); - blockcomma = XP_STRCHR(m_block, ','); - if (blockcomma) *blockcomma = '\0'; - } - for (grec = m_groupTree->GetChildren(); - grec; - grec = grec->GetNextAlphabetic()) { - char* ptr = grec->GetSaveString(); - if (!ptr) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - ptrcomma = XP_STRCHR(ptr, ','); - XP_ASSERT(ptrcomma); - if (!ptrcomma) { - status = -1; - goto FAIL; - } - *ptrcomma = '\0'; - while (blockcomma && - msg_GroupRecord::GroupNameCompare(m_block, ptr) < 0) { - *blockcomma = ','; - XP_StripLine(m_block); - length = XP_STRLEN(m_block); - status = XP_FileWrite(m_block, length, out); - if (status < 0) goto FAIL; - position += length; - status = XP_FileWrite(LINEBREAK, LINEBREAK_LEN, out); - if (status < 0) goto FAIL; - position += LINEBREAK_LEN; - m_block[0] = '\0'; - XP_FileReadLine(m_block, m_blockSize, in); - blockcomma = XP_STRCHR(m_block, ','); - if (blockcomma) *blockcomma = '\0'; - } - if (blockcomma && XP_STRCMP(m_block, ptr) == 0) { - m_block[0] = '\0'; - XP_FileReadLine(m_block, m_blockSize, in); - blockcomma = XP_STRCHR(m_block, ','); - if (blockcomma) *blockcomma = '\0'; - } - grec->SetFileOffset(position); - *ptrcomma = ','; - length = XP_STRLEN(ptr); - // if the group doesn't exist on the server and has no children, - // don't write it out. - if (!grec->DoesNotExistOnServer() || grec->GetNumKids() > 0) - { - status = XP_FileWrite(ptr, length, out); - position += length; - } - else - status = 0; - XP_FREE(ptr); - if (status < 0) goto FAIL; - } - if (blockcomma) { - *blockcomma = ','; - do { - XP_StripLine(m_block); - length = XP_STRLEN(m_block); - status = XP_FileWrite(m_block, length, out); - if (status < 0) goto FAIL; - position += length; - status = XP_FileWrite(LINEBREAK, LINEBREAK_LEN, out); - if (status < 0) goto FAIL; - position += LINEBREAK_LEN; - m_block[0] = '\0'; - } while (XP_FileReadLine(m_block, m_blockSize, in) && *m_block); - } - if (in) { - XP_FileClose(in); - in = NULL; - } - XP_FileClose(out); - out = NULL; - XP_FileRename(filename, xpXoverCache, - m_hostinfofilename, xpXoverCache); - m_fileSize = position; - } - m_groupTreeDirty = 0; - -FAIL: - if (in) XP_FileClose(in); - if (out) XP_FileClose(out); - if (filename) XP_FREE(filename); - m_block[0] = '\0'; - return status; -} - - -struct InhaleState { - msg_GroupRecord* tree; - int32 position; - msg_GroupRecord* onlyIfChild; - msg_GroupRecord* lastInhaled; - char lastfullname[512]; -}; - - -int32 -MSG_NewsHost::InhaleLine(char* line, uint32 length, void* closure) -{ - int status = 0; - InhaleState* state = (InhaleState*) closure; - int32 position = state->position; - state->position += length; - char* lastdot; - char* endptr = line + length; - char* comma; - for (comma = line ; comma < endptr ; comma++) { - if (*comma == ',') break; - } - if (comma >= endptr) return 0; - *comma = '\0'; - lastdot = XP_STRRCHR(line, '.'); - msg_GroupRecord* parent; - msg_GroupRecord* child; - if (lastdot) { - *lastdot = '\0'; - // Try to find the parent of this line. Very often, it will be - // the last line we read, or some ancestor of that line. - parent = NULL; - if (state->lastInhaled && XP_STRNCMP(line, state->lastfullname, - lastdot - line) == 0) { - char c = state->lastfullname[lastdot - line]; - if (c == '\0') parent = state->lastInhaled; - else if (c == '.') { - parent = state->lastInhaled; - char* ptr = state->lastfullname + (lastdot - line); - XP_ASSERT(parent); - while (parent && ptr) { - parent = parent->GetParent(); - XP_ASSERT(parent); - ptr = XP_STRCHR(ptr + 1, '.'); - } - } - } - - - if (!parent) parent = state->tree->FindDescendant(line); - *lastdot = '.'; - XP_ASSERT(parent); - if (!parent) { - status = -1; - goto DONE; - } - } else { - parent = state->tree; - lastdot = line - 1; - } - child = parent->FindDescendant(lastdot + 1); - *comma = ','; - if (child) { - // It's already in memory. - child->SetFileOffset(position); - } else { - child = msg_GroupRecord::Create(parent, line, endptr - line, position); - if (!child) { - status = MK_OUT_OF_MEMORY; - goto DONE; - } - } - if (state->onlyIfChild) { - msg_GroupRecord* tmp; - for (tmp = child; tmp ; tmp = tmp->GetParent()) { - if (tmp == state->onlyIfChild) break; - } - if (tmp == NULL) status = -2; // Indicates we're done. - } - XP_ASSERT(comma - line < sizeof(state->lastfullname)); - if (comma - line < sizeof(state->lastfullname)) { - XP_STRNCPY_SAFE(state->lastfullname, line, comma - line + 1); - state->lastfullname[comma - line] = '\0'; - state->lastInhaled = child; - } -DONE: - if (comma) *comma = ','; - return status; -} - - -int -MSG_NewsHost::Inhale(XP_Bool force) -{ - if (m_groupTreeDirty) SaveHostInfo(); - if (force) { - while (m_groupTree->GetChildren()) { - delete m_groupTree->GetChildren(); - } - m_inhaled = FALSE; - } - XP_ASSERT(!m_inhaled); - if (m_inhaled) return -1; - int status = 0; - OpenGroupFile(); - if (!m_groupFile) return -1; - XP_FileSeek(m_groupFile, 0, SEEK_SET); - status = ReadInitialPart(); - if (status < 0) return status; - XP_FileSeek(m_groupFile, m_fileStart, SEEK_SET); - InhaleState state; - state.tree = m_groupTree; - state.position = m_fileStart; - state.onlyIfChild = NULL; - state.lastInhaled = NULL; - char* buffer = NULL; - uint32 buffer_size = 0; - uint32 buffer_fp = 0; - do { - status = XP_FileRead(m_block, m_blockSize, m_groupFile); - if (status <= 0) break; - status = msg_LineBuffer(m_block, status, - &buffer, &buffer_size, &buffer_fp, - FALSE, -#ifdef XP_OS2 - (int32 (_Optlink*) (char*,uint32,void*)) -#endif - MSG_NewsHost::InhaleLine, &state); - } while (status >= 0); - if (status >= 0 && buffer_fp > 0) { - status = InhaleLine(buffer, buffer_fp, &state); - } - FREEIF(buffer); - m_block[0] = '\0'; - if (status >= 0) m_inhaled = TRUE; - return status; -} - - -int -MSG_NewsHost::Exhale() -{ - XP_ASSERT(m_inhaled); - if (!m_inhaled) return -1; - int status = SaveHostInfo(); - while (m_groupTree->GetChildren()) { - delete m_groupTree->GetChildren(); - } - m_inhaled = FALSE; - return status; -} - - -int -MSG_NewsHost::EmptyInhale() -{ - XP_ASSERT(!m_inhaled); - if (m_inhaled) return -1; - while (m_groupTree->GetChildren()) { - delete m_groupTree->GetChildren(); - } - m_inhaled = TRUE; - return 0; -} - - - -MSG_FolderInfoNews* -MSG_NewsHost::FindGroup(const char* name) -{ - if (m_groups == NULL) return NULL; - int n = m_groups->GetSize(); - for (int i=0 ; i<n ; i++) { - MSG_FolderInfoNews* info = (MSG_FolderInfoNews*) (*m_groups)[i]; - if (XP_STRCMP(info->GetNewsgroupName(), name) == 0) { - return info; - } - } - return NULL; -} - -MSG_FolderInfoNews *MSG_NewsHost::AddGroup(const char *groupName) -{ - MSG_FolderInfoNews *newsInfo = NULL; - MSG_FolderInfoCategoryContainer *categoryContainer = NULL; - char* containerName = NULL; - XP_Bool needpaneupdate = FALSE; - - msg_GroupRecord* group = FindOrCreateGroup(groupName); - if (!group) goto DONE; // Out of memory. - - if (!group->IsCategoryContainer() && group->IsCategory()) { - msg_GroupRecord *container = group->GetCategoryContainer(); - XP_ASSERT(container); - if (!container) goto DONE; - containerName = container->GetFullName(); - if (!containerName) goto DONE; // Out of memory. - newsInfo = FindGroup(containerName); - categoryContainer = (MSG_FolderInfoCategoryContainer *) newsInfo; - // if we're not subscribed to container, do that instead. - if (!newsInfo || !newsInfo->IsSubscribed()) - { - groupName = containerName; - group = FindOrCreateGroup(groupName); - } - } - - // no need to diddle folder pane for new categories. - needpaneupdate = m_hostinfo && !group->IsCategory(); - - newsInfo = FindGroup(groupName); - if (newsInfo) { // seems to be already added - if (!newsInfo->IsSubscribed()) { - newsInfo->Subscribe(TRUE); - XPPtrArray* infolist = (XPPtrArray*) m_hostinfo->GetSubFolders(); - // don't add it if it's already in the list! - if (infolist->FindIndex(0, newsInfo) == -1) - infolist->Add(newsInfo); - } else { - goto DONE; - } - } else { - char* groupLine = PR_smprintf("%s:", groupName); - if (!groupLine) { - goto DONE; // Out of memory. - } - - // this will add and auto-subscribe - OK, a cheap hack. - if (ProcessLine(groupLine, XP_STRLEN(groupLine)) == 0) { - // groups are added at end so look there first... - newsInfo = (MSG_FolderInfoNews *) - m_groups->GetAt(m_groups->GetSize() - 1); - if (XP_STRCMP(newsInfo->GetNewsgroupName(), groupName)) { - newsInfo = FindGroup(groupName); - XP_ASSERT(newsInfo); - } - } - XP_FREE(groupLine); - } - XP_ASSERT(newsInfo); - if (!newsInfo) goto DONE; - - if (group->IsCategoryContainer()) { - // Go add all of our categories to the newsrc. - AssureAllDescendentsLoaded(group); - msg_GroupRecord* end = group->GetSiblingOrAncestorSibling(); - msg_GroupRecord* child; - for (child = group->GetNextAlphabetic() ; - child != end ; - child = child->GetNextAlphabetic()) { - XP_ASSERT(child); - if (!child) break; - char* fullname = child->GetFullName(); - if (!fullname) break; - MSG_FolderInfoNews* info = FindGroup(fullname); - if (info) { - if (!info->IsSubscribed()) { - info->Subscribe(TRUE); - } - } else { - char* groupLine = PR_smprintf("%s:", fullname); - if (groupLine) { - ProcessLine(groupLine, XP_STRLEN(groupLine)); - XP_FREE(groupLine); - } - } - delete [] fullname; - } - if (newsInfo->GetType() != FOLDER_CATEGORYCONTAINER) - { - newsInfo = SwitchNewsToCategoryContainer(newsInfo); - } - XP_ASSERT(newsInfo->GetType() == FOLDER_CATEGORYCONTAINER); - if (newsInfo->GetType() == FOLDER_CATEGORYCONTAINER) { - newsInfo->SetFlag(MSG_FOLDER_FLAG_ELIDED); - MSG_FolderInfoCategoryContainer *catContainer = - (MSG_FolderInfoCategoryContainer *) newsInfo; - catContainer->BuildCategoryTree(catContainer, groupName, group, - 2, m_master); - } - } - else if (group->IsCategory() && categoryContainer) - { - categoryContainer->AddToCategoryTree(categoryContainer, groupName, group, m_master); - } - - if (needpaneupdate && newsInfo) - m_master->BroadcastFolderAdded (newsInfo); - - MarkDirty(); - -DONE: - - if (containerName) delete [] containerName; - return newsInfo; -} - -MSG_FolderInfoNews *MSG_NewsHost::SwitchNewsToCategoryContainer(MSG_FolderInfoNews *newsInfo) -{ - int groupIndex = m_groups->FindIndex(0, newsInfo); - if (groupIndex != -1) - { - MSG_FolderInfoCategoryContainer *newCatCont = newsInfo->CloneIntoCategoryContainer(); - // slip the category container where the newsInfo was. - m_groups->SetAt(groupIndex, newCatCont); - XPPtrArray* infoList = (XPPtrArray*) m_hostinfo->GetSubFolders(); - // replace in folder pane server list as well. - groupIndex = infoList->FindIndex(0, newsInfo); - if (groupIndex != -1) - infoList->SetAt(groupIndex, newCatCont); - newsInfo = newCatCont; - } - return newsInfo; -} - -MSG_FolderInfoNews *MSG_NewsHost::SwitchCategoryContainerToNews(MSG_FolderInfoCategoryContainer *catContainerInfo) -{ - MSG_FolderInfoNews *retInfo = NULL; - - int groupIndex = m_groups->FindIndex(0, catContainerInfo); - if (groupIndex != -1) - { - MSG_FolderInfoNews *rootCategory = catContainerInfo->GetRootCategory(); - // slip the root category container where the category container was. - m_groups->SetAt(groupIndex, rootCategory); - XPPtrArray* infoList = (XPPtrArray*) m_hostinfo->GetSubFolders(); - // replace in folder pane server list as well. - groupIndex = infoList->FindIndex(0, catContainerInfo); - if (groupIndex != -1) - infoList->SetAt(groupIndex, rootCategory); - retInfo = rootCategory; - // this effectively leaks the category container, but I don't think that's a problem - } - return retInfo; -} - -void MSG_NewsHost::RemoveGroup (MSG_FolderInfoNews *newsInfo) -{ - if (newsInfo && newsInfo->IsSubscribed()) - { - newsInfo->Subscribe(FALSE); - m_master->BroadcastFolderDeleted (newsInfo); - XPPtrArray* infolist = (XPPtrArray*) m_hostinfo->GetSubFolders(); - infolist->Remove(newsInfo); - } -} - -void -MSG_NewsHost::RemoveGroup(const char* groupName) -{ - MSG_FolderInfoNews *newsInfo = NULL; - - newsInfo = FindGroup(groupName); - RemoveGroup (newsInfo); -} - - -#ifdef DEBUG_terry -// #define XP_WIN16 -#endif - -const char* -MSG_NewsHost::GetDBDirName() -{ - if (!m_filename) return NULL; - if (!m_dbfilename) { -#if defined(XP_WIN16) || defined(XP_OS2) - const int MAX_HOST_NAME_LEN = 8; -#elif defined(XP_MAC) - const int MAX_HOST_NAME_LEN = 25; -#else - const int MAX_HOST_NAME_LEN = 55; -#endif - // Given a hostname, use either that hostname, if it fits on our - // filesystem, or a hashified version of it, if the hostname is too - // long to fit. - char hashedname[MAX_HOST_NAME_LEN + 1]; - XP_Bool needshash = XP_STRLEN(m_filename) > MAX_HOST_NAME_LEN; -#if defined(XP_WIN16) || defined(XP_OS2) - if (!needshash) { - needshash = XP_STRCHR(m_filename, '.') != NULL || - XP_STRCHR(m_filename, ':') != NULL; - } -#endif - - XP_STRNCPY_SAFE(hashedname, m_filename, MAX_HOST_NAME_LEN + 1); - if (needshash) { - PR_snprintf(hashedname + MAX_HOST_NAME_LEN - 8, 9, "%08lx", - (unsigned long) XP_StringHash2(m_filename)); - } - m_dbfilename = new char [XP_STRLEN(hashedname) + 15]; - XP_STRCPY(m_dbfilename, HG38376 "host-"); - XP_STRCAT(m_dbfilename, hashedname); - char* ptr = XP_STRCHR(m_dbfilename, ':'); - if (ptr) *ptr = '.'; // WinFE doesn't like colons in filenames. - XP_MakeDirectory(m_dbfilename, xpXoverCache); - } - return m_dbfilename; -} - -#ifdef DEBUG_terry -// #undef XP_WIN16 -#endif - -int32 -MSG_NewsHost::GetNumGroupsNeedingCounts() -{ - if (!m_groups) return 0; - int num = m_groups->GetSize(); - int32 result = 0; - for (int i=0 ; i<num ; i++) { - MSG_FolderInfoNews* info = (MSG_FolderInfoNews*) ((*m_groups)[i]); - if (info->GetWantNewTotals() && info->IsSubscribed()) { - result++; - } - } - return result; -} - - -char* -MSG_NewsHost::GetFirstGroupNeedingCounts() -{ - if (!m_groups) return NULL; - int num = m_groups->GetSize(); - for (int i=0 ; i<num ; i++) { - MSG_FolderInfoNews* info = (MSG_FolderInfoNews*) ((*m_groups)[i]); - if (info->GetWantNewTotals() && info->IsSubscribed()) { - info->SetWantNewTotals(FALSE); - return XP_STRDUP(info->GetNewsgroupName()); - } - } - return NULL; -} - - -char* -MSG_NewsHost::GetFirstGroupNeedingExtraInfo() -{ - msg_GroupRecord* grec; - - for (grec = m_groupTree->GetChildren(); grec; grec = grec->GetNextAlphabetic()) { - if (grec && grec->NeedsExtraInfo()) { - char *fullName = grec->GetFullName(); - char *ret = XP_STRDUP(fullName); - delete [] fullName; - return ret; - } - } - return NULL; -} - - - -void -MSG_NewsHost::SetWantNewTotals(XP_Bool value) -{ - if (!m_groups) return; - int n = m_groups->GetSize(); - for (int i=0 ; i<n ; i++) { - MSG_FolderInfoNews* info = (MSG_FolderInfoNews*) ((*m_groups)[i]); - info->SetWantNewTotals(value); - } -} - - - -XP_Bool MSG_NewsHost::NeedsExtension (const char * /*extension*/) -{ - //###phil need to flesh this out - XP_Bool needed = m_supportsExtensions; - return needed; -} - -void MSG_NewsHost::AddExtension (const char *ext) -{ - if (!QueryExtension(ext)) - { - char *ourExt = XP_STRDUP (ext); - if (ourExt) - m_supportedExtensions.Add(ourExt); - } -} - -XP_Bool MSG_NewsHost::QueryExtension (const char *ext) -{ - for (int i = 0; i < m_supportedExtensions.GetSize(); i++) - if (!XP_STRCMP(ext, (char*) m_supportedExtensions.GetAt(i))) - return TRUE; - return FALSE; -} - -void MSG_NewsHost::AddSearchableGroup (const char *group) -{ - if (!QuerySearchableGroup(group)) - { - char *ourGroup = XP_STRDUP (group); - if (ourGroup) - { - // strip off character set spec - char *space = XP_STRCHR(ourGroup, ' '); - if (space) - *space = '\0'; - - m_searchableGroups.Add(ourGroup); - - space++; // walk over to the start of the charsets - // Add the group -> charset association. - XP_Puthash(m_searchableGroupCharsets, ourGroup, space); - } - } -} - -XP_Bool MSG_NewsHost::QuerySearchableGroup (const char *group) -{ - for (int i = 0; i < m_searchableGroups.GetSize(); i++) - { - const char *searchableGroup = (const char*) m_searchableGroups.GetAt(i); - char *starInSearchableGroup = NULL; - - if (!XP_STRCMP(searchableGroup, "*")) - return TRUE; // everything is searchable - else if (NULL != (starInSearchableGroup = XP_STRCHR(searchableGroup, '*'))) - { - if (!XP_STRNCASECMP(group, searchableGroup, XP_STRLEN(searchableGroup)-2)) - return TRUE; // this group is in a searchable hierarchy - } - else if (!XP_STRCASECMP(group, searchableGroup)) - return TRUE; // this group is individually searchable - } - return FALSE; -} - -// ### mwelch This should have been merged into one routine with QuerySearchableGroup, -// but with two interfaces. -const char * -MSG_NewsHost::QuerySearchableGroupCharsets(const char *group) -{ - // Very similar to the above, but this time we look up charsets. - const char *result = NULL; - XP_Bool gotGroup = FALSE; - const char *searchableGroup = NULL; - - for (int i = 0; (i < m_searchableGroups.GetSize()) && (!gotGroup); i++) - { - searchableGroup = (const char*) m_searchableGroups.GetAt(i); - char *starInSearchableGroup = NULL; - - if (!XP_STRCMP(searchableGroup, "*")) - gotGroup = TRUE; // everything is searchable - else if (NULL != (starInSearchableGroup = XP_STRCHR(searchableGroup, '*'))) - { - if (!XP_STRNCASECMP(group, searchableGroup, XP_STRLEN(searchableGroup)-2)) - gotGroup = TRUE; // this group is in a searchable hierarchy - } - else if (!XP_STRCASECMP(group, searchableGroup)) - gotGroup = TRUE; // this group is individually searchable - } - - if (gotGroup) - { - // Look up the searchable group for its supported charsets - result = (const char *) XP_Gethash(m_searchableGroupCharsets, searchableGroup, NULL); - } - - return result; -} - -void MSG_NewsHost::AddSearchableHeader (const char *header) -{ - if (!QuerySearchableHeader(header)) - { - char *ourHeader = XP_STRDUP(header); - if (ourHeader) - m_searchableHeaders.Add(ourHeader); - } -} - -XP_Bool MSG_NewsHost::QuerySearchableHeader(const char *header) -{ - for (int i = 0; i < m_searchableHeaders.GetSize(); i++) - if (!XP_STRNCASECMP(header, (char*) m_searchableHeaders.GetAt(i), XP_STRLEN(header))) - return TRUE; - return FALSE; -} - -void MSG_NewsHost::AddPropertyForGet (const char *property, const char *value) -{ - char *tmp = NULL; - - tmp = XP_STRDUP(property); - if (tmp) - m_propertiesForGet.Add (tmp); - - tmp = XP_STRDUP(value); - if (tmp) - m_valuesForGet.Add (tmp); -} - -const char *MSG_NewsHost::QueryPropertyForGet (const char *property) -{ - for (int i = 0; i < m_propertiesForGet.GetSize(); i++) - if (!XP_STRCASECMP(property, (const char *) m_propertiesForGet.GetAt(i))) - return (const char *) m_valuesForGet.GetAt(i); - return NULL; -} - - -void MSG_NewsHost::SetPushAuth(XP_Bool value) -{ - if (m_pushAuth != value) - { - m_pushAuth = value; - m_groupTreeDirty |= 1; - } -} - - - -const char* -MSG_NewsHost::GetURLBase() -{ - if (!m_urlbase) { - m_urlbase = PR_smprintf("%s://%s", HG38262 "news", - getNameAndPort()); - } - return m_urlbase; -} - - - - -int MSG_NewsHost::RemoveHost() -{ - if (m_groupFile) { - XP_FileClose(m_groupFile); - m_groupFile = NULL; - } - m_master->GetFolderTree()->RemoveSubFolder(m_hostinfo); - m_master->GetHostTable()->RemoveEntry(this); - m_dirty = 0; - if (m_writetimer) { - FE_ClearTimeout(m_writetimer); - m_writetimer = NULL; - } - XP_FileRemove(GetNewsrcFileName(), HG37252 xpNewsRC); - - - // Now go do our best to remove the entire newshost directory and all of - // its contents. I would love to use XP_RemoveDirectoryRecursive(), but - // selmer seems to have only implemented it on WinFE. Ahem. - int lastcount = -1; - int count = -1; - do { - XP_Dir dir = XP_OpenDir(GetDBDirName(), xpXoverCache); - if (!dir) break; - lastcount = count; - count = 0; - XP_DirEntryStruct *entry = NULL; - for (entry = XP_ReadDir(dir); entry; entry = XP_ReadDir(dir)) { - count++; - const char* name = entry->d_name; - if (name[0] == '.') continue; - char* tmp = PR_smprintf("%s/%s", GetDBDirName(), name); - if (tmp) { - XP_FileRemove(tmp, xpXoverCache); - XP_FREE(tmp); - } - } - XP_CloseDir(dir); - } while (lastcount != count); // Keep doing it over and over, until - // we get the same number of entries in - // the dir. This is because I do not - // trust XP_ReadDir() to do the right - // thing if I delete files out from - // under it. - - XP_RemoveDirectory(GetDBDirName(), xpXoverCache); - - // Tell netlib to close any connections we might have to - // this news host. - NET_OnNewsHostDeleted (m_hostname); - - m_master->BroadcastFolderDeleted (m_hostinfo); - - delete this; - return 0; -} - - - -char* -MSG_NewsHost::GetPrettyName(const char* groupname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (group) { - const char* orig = group->GetPrettyName(); - if (orig) { - char* result = new char [XP_STRLEN(orig) + 1]; - if (result) { - XP_STRCPY(result, orig); - return result; - } - } - } - return NULL; -} - - -int -MSG_NewsHost::SetPrettyName(const char* groupname, const char* prettyname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return MK_OUT_OF_MEMORY; - int status = group->SetPrettyName(prettyname); - if (status > 0) - { - MSG_FolderInfoNews *newsFolder = FindGroup(groupname); - // make news folder forget prettyname so it will query again - if (newsFolder) - newsFolder->ClearPrettyName(); - } - m_groupTreeDirty |= status; - return status; -} - - -time_t -MSG_NewsHost::GetAddTime(const char* groupname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return 0; - return group->GetAddTime(); -} - - -int32 -MSG_NewsHost::GetUniqueID(const char* groupname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return 0; - return group->GetUniqueID(); -} - - -XP_Bool -MSG_NewsHost::IsCategory(const char* groupname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return FALSE; - return group->IsCategory(); -} - - -XP_Bool -MSG_NewsHost::IsCategoryContainer(const char* groupname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return FALSE; - return group->IsCategoryContainer(); -} - -int -MSG_NewsHost::SetIsCategoryContainer(const char* groupname, XP_Bool value) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return MK_OUT_OF_MEMORY; - int status = group->SetIsCategoryContainer(value); - m_groupTreeDirty |= status; - if (status > 0) - { - MSG_FolderInfoNews *newsFolder = FindGroup(groupname); - // make news folder have correct category container flag - if (newsFolder) - { - if (value) - { - newsFolder->SetFlag(MSG_FOLDER_FLAG_CAT_CONTAINER); - SwitchNewsToCategoryContainer(newsFolder); - } - else - { - if (newsFolder->GetType() == FOLDER_CATEGORYCONTAINER) - { - MSG_FolderInfoCategoryContainer *catCont = (MSG_FolderInfoCategoryContainer *) newsFolder; - newsFolder = SwitchCategoryContainerToNews(catCont); - } - if (newsFolder) - { - newsFolder->ClearFlag(MSG_FOLDER_FLAG_CAT_CONTAINER); - newsFolder->ClearFlag(MSG_FOLDER_FLAG_CATEGORY); - } - } - } - } - return status; -} - -int -MSG_NewsHost::SetGroupNeedsExtraInfo(const char *groupname, XP_Bool value) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return MK_OUT_OF_MEMORY; - int status = group->SetNeedsExtraInfo(value); - m_groupTreeDirty |= status; - return status; -} - - -char* -MSG_NewsHost::GetCategoryContainer(const char* groupname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (group) { - group = group->GetCategoryContainer(); - if (group) return group->GetFullName(); - } - return NULL; -} - -MSG_FolderInfoNews * -MSG_NewsHost::GetCategoryContainerFolderInfo(const char *groupname) -{ - MSG_FolderInfoNews *ret = NULL; - // because GetCategoryContainer returns NULL for a category container... - msg_GroupRecord *group = FindOrCreateGroup(groupname); - if (group->IsCategoryContainer()) - return FindGroup(groupname); - - char *categoryContainerName = GetCategoryContainer(groupname); - if (categoryContainerName) - { - ret = FindGroup(categoryContainerName); - delete [] categoryContainerName; - } - return ret; -} - - -XP_Bool -MSG_NewsHost::IsProfile(const char* groupname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return FALSE; - return group->IsProfile(); -} - - -int -MSG_NewsHost::SetIsProfile(const char* groupname, XP_Bool value) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return MK_OUT_OF_MEMORY; - int status = group->SetIsProfile(value); - m_groupTreeDirty |= status; - return status; -} - - - -XP_Bool -MSG_NewsHost::IsGroup(const char* groupname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return FALSE; - return group->IsGroup(); -} - - -int -MSG_NewsHost::SetIsGroup(const char* groupname, XP_Bool value) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return MK_OUT_OF_MEMORY; - int status = group->SetIsGroup(value); - m_groupTreeDirty |= status; - return status; -} - - -XP_Bool -MSG_NewsHost::IsHTMLOk(const char* groupname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return FALSE; - if (group->IsHTMLOKGroup()) return TRUE; - for ( ; group ; group = group->GetParent()) { - if (group->IsHTMLOKTree()) return TRUE; - } - return FALSE; -} - - -XP_Bool -MSG_NewsHost::IsHTMLOKGroup(const char* groupname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return FALSE; - return group->IsHTMLOKGroup(); -} - - -int -MSG_NewsHost::SetIsHTMLOKGroup(const char* groupname, XP_Bool value) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return MK_OUT_OF_MEMORY; - int status = group->SetIsHTMLOKGroup(value); - m_groupTreeDirty |= status; - return status; -} - - -XP_Bool -MSG_NewsHost::IsHTMLOKTree(const char* groupname) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return FALSE; - return group->IsHTMLOKTree(); -} - - -int -MSG_NewsHost::SetIsHTMLOKTree(const char* groupname, XP_Bool value) -{ - msg_GroupRecord* group = FindOrCreateGroup(groupname); - if (!group) return MK_OUT_OF_MEMORY; - int status = group->SetIsHTMLOKTree(value); - m_groupTreeDirty |= status; - return status; -} - - - - - -msg_GroupRecord* -MSG_NewsHost::FindGroupInBlock(msg_GroupRecord* parent, - const char* groupname, - int32* comp) -{ - char* ptr; - char* ptr2; - char* tmp; -RESTART: - ptr = m_block; - *comp = 0; - for (;;) { - ptr = XP_STRCHR(ptr, LINEBREAK_START); - ptr2 = ptr ? XP_STRCHR(ptr, ',') : 0; - if (!ptr2) { - if (*comp != 0) return NULL; - // Yikes. The whole string, and we can't even find a legitimate - // beginning of a real line. Grow the buffer until we can. - - if (m_fileSize - m_fileStart <= m_blockSize) { - // Oh, well, maybe the file is just empty. - *comp = 0; - return NULL; - } - - if (int32(XP_STRLEN(m_block)) < m_blockSize) goto RELOAD; - goto GROWBUFFER; - } - while (*ptr == CR || *ptr == LF) ptr++; - *ptr2 = '\0'; - int32 c = msg_GroupRecord::GroupNameCompare(groupname, ptr); - *ptr2 = ','; - if (c < 0) { - if (*comp > 0) { - // This group isn't in the file, since earlier compares said - // "look later" and this one says "look earlier". - *comp = 0; - return NULL; - } - *comp = c; - return NULL; // This group is somewhere before this chunk. - } - *comp = c; - if (c == 0) { - // Hey look, we found it. - int32 offset = m_blockStart + (ptr - m_block); - ptr2 = XP_STRCHR(ptr2, LINEBREAK_START); - if (!ptr2) { - // We found the right place, but the rest of - // the line is off the end of the buffer. - if (offset > m_blockStart + LINEBREAK_LEN) { - m_blockStart = offset - LINEBREAK_LEN; - goto RELOAD; - } - // We couldn't find it, even though we're at the beginning - // of the buffer. This means that our buffer is too small. - - goto GROWBUFFER; - } - return msg_GroupRecord::Create(parent, ptr, -1, offset); - } - } - /* NOTREACHED */ - return NULL; - -GROWBUFFER: - - tmp = new char [m_blockSize + 512 + 1]; - if (!tmp) return NULL; - delete [] m_block; - m_block = tmp; - m_blockSize += 512; - -RELOAD: - if (m_blockStart + m_blockSize > m_fileSize) { - m_blockStart = m_fileSize - m_blockSize; - if (m_blockStart < m_fileStart) m_blockStart = m_fileStart; - } - - OpenGroupFile(); - if (!m_groupFile) return NULL; - XP_FileSeek(m_groupFile, m_blockStart, SEEK_SET); - int length = XP_FileRead(m_block, m_blockSize, m_groupFile); - if (length < 0) length = 0; - m_block[length] = '\0'; - goto RESTART; -} - - -msg_GroupRecord* -MSG_NewsHost::LoadSingleEntry(msg_GroupRecord* parent, const char* groupname, - int32 min, int32 max) -{ - OpenGroupFile(); - if (!m_groupFile) return NULL; - -#ifdef DEBUG - if (parent != m_groupTree) { - char* pname = parent->GetFullName(); - if (pname) { - XP_ASSERT(XP_STRNCMP(pname, groupname, XP_STRLEN(pname)) == 0); - delete [] pname; - pname = NULL; - } - } -#endif - - if (min < m_fileStart) min = m_fileStart; - if (max < m_fileStart || max > m_fileSize) max = m_fileSize; - - msg_GroupRecord* result = NULL; - int32 comp = 1; - - // First, check if we happen to already have the line for this group in - // memory. - if (m_block[0]) { - result = FindGroupInBlock(parent, groupname, &comp); - } - - while (!result && comp != 0 && min < max) { - int32 mid = (min + max) / 2; - m_blockStart = mid - LINEBREAK_LEN; - XP_FileSeek(m_groupFile, m_blockStart, SEEK_SET); - int length = XP_FileRead(m_block, m_blockSize, m_groupFile); - if (length < 0) length = 0; - m_block[length] = '\0'; - - result = FindGroupInBlock(parent, groupname, &comp); - - if (comp > 0) { - min = mid + 1; - } else { - max = mid; - } - } - return result; -} - - -msg_GroupRecord* -MSG_NewsHost::FindOrCreateGroup(const char* groupname, - int* statusOfMakingGroup) -{ - char buf[256]; - - msg_GroupRecord* parent = m_groupTree; - const char* start = groupname; - XP_ASSERT(start && *start); - if (!start || !*start) return NULL; - - XP_ASSERT(*start != '.'); // groupnames can't start with ".". - if (*start == '.') return NULL; - while (*start) { - if (*start == '.') start++; - const char* end = XP_STRCHR(start, '.'); - if (!end) end = start + XP_STRLEN(start); - int length = end - start; - XP_ASSERT(length > 0); // groupnames can't contain ".." or end in - // a ".". - if (length <= 0) return NULL; - XP_ASSERT(length < sizeof(buf)); - if (length >= sizeof(buf)) return NULL; - XP_STRNCPY_SAFE(buf, start, length + 1); - buf[length] = '\0'; - msg_GroupRecord* prev = parent; - msg_GroupRecord* ptr; - int comp = 0; // Initializing to zero. - for (ptr = parent->GetChildren() ; ptr ; ptr = ptr->GetSibling()) { - comp = msg_GroupRecord::GroupNameCompare(ptr->GetPartName(), buf); - if (comp >= 0) break; - prev = ptr; - } - if (ptr == NULL || comp != 0) { - // We don't have this one in memory. See if we can load it in. - if (!m_inhaled) { - if (ptr == NULL) { - ptr = parent->GetSiblingOrAncestorSibling(); - } - length = end - groupname; - char* tmp = new char[length + 1]; - if (!tmp) return NULL; - XP_STRNCPY_SAFE(tmp, groupname, length + 1); - tmp[length] = '\0'; - ptr = LoadSingleEntry(parent, tmp, - prev->GetFileOffset(), - ptr ? ptr->GetFileOffset() : m_fileSize); - delete [] tmp; - tmp = NULL; - } else { - ptr = NULL; - } - if (!ptr) { - m_groupTreeDirty = 2; - ptr = msg_GroupRecord::Create(parent, buf, time(0), - m_uniqueId++, 0); - if (!ptr) return NULL; - } - } - parent = ptr; - start = end; - } - int status = parent->SetIsGroup(TRUE); - m_groupTreeDirty |= status; - if (statusOfMakingGroup) *statusOfMakingGroup = status; - return parent; -} - - -int -MSG_NewsHost::NoticeNewGroup(const char* groupname) -{ - int status = 0; - msg_GroupRecord* group = FindOrCreateGroup(groupname, &status); - if (!group) return MK_OUT_OF_MEMORY; - return status; -} - - -int -MSG_NewsHost::AssureAllDescendentsLoaded(msg_GroupRecord* group) -{ - int status = 0; - XP_ASSERT(group); - if (!group) return -1; - if (group->IsDescendentsLoaded()) return 0; - m_blockStart = group->GetFileOffset(); - XP_ASSERT(group->GetFileOffset() > 0); - if (group->GetFileOffset() == 0) return -1; - InhaleState state; - state.tree = m_groupTree; - state.position = m_blockStart; - state.onlyIfChild = group; - state.lastInhaled = NULL; - OpenGroupFile(); - XP_ASSERT(m_groupFile); - if (!m_groupFile) return -1; - XP_FileSeek(m_groupFile, group->GetFileOffset(), SEEK_SET); - char* buffer = NULL; - uint32 buffer_size = 0; - uint32 buffer_fp = 0; - do { - status = XP_FileRead(m_block, m_blockSize, m_groupFile); - if (status <= 0) break; - status = msg_LineBuffer(m_block, status, - &buffer, &buffer_size, &buffer_fp, - FALSE, -#ifdef XP_OS2 - (int32 (_Optlink*) (char*,uint32,void*)) -#endif - MSG_NewsHost::InhaleLine, &state); - } while (status >= 0); - if (status >= 0 && buffer_fp > 0) { - status = InhaleLine(buffer, buffer_fp, &state); - } - if (status == -2) status = 0; // Special status meaning we ran out of - // lines that are children of the given - // group. - - FREEIF(buffer); - m_block[0] = '\0'; - - if (status >= 0) group->SetIsDescendentsLoaded(TRUE); - return status; -} - -void MSG_NewsHost::GroupNotFound(const char *groupName, XP_Bool opening) -{ - // if no group command has succeeded, don't blow away categories. - // The server might be hanging... - if (!opening && !m_groupSucceeded) - return; - - msg_GroupRecord* group = FindOrCreateGroup(groupName); - if (group && (group->IsCategory() || opening)) - { - MSG_FolderInfoNews *newsInfo = FindGroup(groupName); - group->SetDoesNotExistOnServer(TRUE); - m_groupTreeDirty |= 2; // deleting a group has to force a rewrite anyway - if (group->IsCategory()) - { - MSG_FolderInfoNews *catCont = GetCategoryContainerFolderInfo(groupName); - if (catCont) - { - MSG_FolderInfo *parentCategory = catCont->FindParentOf(newsInfo); - if (parentCategory) - parentCategory->RemoveSubFolder(newsInfo); - } - } - else if (newsInfo) - m_master->BroadcastFolderDeleted (newsInfo); - - if (newsInfo) - { - XPPtrArray* infolist = (XPPtrArray*) m_hostinfo->GetSubFolders(); - infolist->Remove(newsInfo); - m_groups->Remove(newsInfo); - m_dirty = TRUE; - } - } -} - - -int MSG_NewsHost::ReorderGroup (MSG_FolderInfoNews *groupToMove, MSG_FolderInfoNews *groupToMoveBefore, int32 *newIdx) -{ - // Do the list maintenance to reorder a newsgroup. The news host has a list, and - // so does the FolderInfo which represents the host in the hierarchy tree - - int err = MK_MSG_CANT_MOVE_FOLDER; - XPPtrArray *infoList = m_hostinfo->GetSubFolders(); - - if (groupToMove && groupToMoveBefore && infoList) - { - if (m_groups->Remove (groupToMove)) - { - // Not necessary to remove from infoList here because the folderPane does that (urk) - - // Unsubscribed groups are in the lists, but not in the view - MSG_FolderInfo *group = NULL; - int idxInView, idxInData; - int idxInHostInfo = 0; - XP_Bool foundIdxInHostInfo = FALSE; - - for (idxInData = 0, idxInView = -1; idxInData < m_groups->GetSize(); idxInData++) - { - group = m_groups->GetAt (idxInData); - MSG_FolderInfo *groupInHostInfo = (MSG_FolderInfo *) infoList->GetAt(idxInHostInfo); - if (group->CanBeInFolderPane()) - idxInView++; - if (group == groupToMoveBefore) - break; - if (groupInHostInfo == groupToMoveBefore) - foundIdxInHostInfo = TRUE; - else if (!foundIdxInHostInfo) - idxInHostInfo++; - - } - - if (idxInView != -1) - { - m_groups->InsertAt (idxInData, groupToMove); // the index has to be the same, right? - infoList->InsertAt (idxInHostInfo, groupToMove); - - MarkDirty (); // Make sure the newsrc gets written out in the new order - *newIdx = idxInView; // Tell the folder pane where the new item belongs - - err = 0; - } - } - } - return err; -} - diff --git a/mozilla/lib/libmsg/newshost.h b/mozilla/lib/libmsg/newshost.h deleted file mode 100644 index 4ab8d04efa9..00000000000 --- a/mozilla/lib/libmsg/newshost.h +++ /dev/null @@ -1,366 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef __msg_NewsHost__ -#define __msg_NewsHost__ 1 - -#include "msghost.h" -#include "xp_hash.h" -#include "ptrarray.h" - -class MSG_FolderInfo; -class MSG_FolderInfoNews; -class MSG_Master; -class msg_GroupRecord; -class MSG_FolderInfoCategoryContainer; - -class MSG_NewsHost : public MSG_Host { -public: - MSG_NewsHost(MSG_Master* master, const char* name, XP_Bool secure, - int32 port); - virtual ~MSG_NewsHost(); - - virtual XP_Bool IsNews () { return TRUE; } - virtual MSG_NewsHost *GetNewsHost() { return this; } - - void addNew(MSG_GroupName* group); - void ClearNew(); - - virtual void dump(); - - virtual int32 getPort(); - virtual XP_Bool isSecure(); - - time_t getLastUpdate(); - void setLastUpdate(time_t date); - - // Return the name of this newshost. - const char* getStr(); - - // Returns the name of this newshost, possibly followed by ":<port>" if - // the port number for this newshost is not the default. - const char* getNameAndPort(); - - // Returns a fully descriptive name for this newshost, including the - // above ":<port>" and also possibly a trailing (and localized) " (secure)" - virtual const char* getFullUIName(); - - // Go load the newsrc for this host. Creates the subscribed hosts as - // children of the given MSG_FolderInfo. - int LoadNewsrc(MSG_FolderInfo* hostinfo); - - // Get the MSG_FolderInfo which represents this host; the children - // of this MSG_FolderInfo are the groups in this host. - MSG_FolderInfo* GetHostInfo() {return m_hostinfo;} - - // Write out the newsrc for this host right now. In general, either - // MarkDirty() or WriteIfDirty() should be called instead. - int WriteNewsrc(); - - // Write out the newsrc for this host right now, if anything has changed - // in it. - int WriteIfDirty(); - - // Note that something has changed, and we need to rewrite the newsrc file - // for this host at some point. - void MarkDirty(); - - const char* GetNewsrcFileName(); - int SetNewsrcFileName(const char* name); - - MSG_Master* GetMaster() { - return m_master; - } - - MSG_FolderInfoNews* FindGroup(const char* name); - - MSG_FolderInfoNews *AddGroup(const char *groupName); - void RemoveGroup(const char* groupName); - void RemoveGroup(MSG_FolderInfoNews*); - - const char* GetDBDirName(); // Name of directory to store newsgroup - // databases in. This needs to have - // "/groupname" appended to it, and the - // whole thing can be passed to the XP_File - // stuff with a type of xpXoverCache. - - // GetNumGroupsNeedingCounts() returns how many newsgroups we have - // that we don't have an accurate count of unread/total articles. - int32 GetNumGroupsNeedingCounts(); - - // GetFirstGroupNeedingCounts() returns the name of the first newsgroup - // that does not have an accurate count of unread/total articles. The - // string must be free'd by the caller using XP_FREE(). - char* GetFirstGroupNeedingCounts(); - - - // GetFirstGroupNeedingExtraInfo() returns the name of the first newsgroup - // that does not have extra info (xactive flags and prettyname). The - // string must be free'd by the caller using XP_FREE(). - char* GetFirstGroupNeedingExtraInfo(); - - char** GetGroupList(); // Returns a list of newsgroups. The result - // must be free'd using XP_FREE(); the - // individual strings must not be free'd. - - void SetWantNewTotals(XP_Bool value); // Sets this bit on every newsgroup - // in this host. - - XP_Bool NeedsExtension (const char *ext); - - void AddExtension (const char *ext); - XP_Bool QueryExtension (const char *ext); - - void AddSearchableGroup (const char *group); - XP_Bool QuerySearchableGroup (const char *group); - const char *QuerySearchableGroupCharsets(const char *group); - - void AddSearchableHeader (const char *header); - XP_Bool QuerySearchableHeader (const char *header); - - void AddPropertyForGet (const char *property, const char *value); - const char *QueryPropertyForGet (const char *property); - - - void SetPostingAllowed (XP_Bool allowed) { m_postingAllowed = allowed; } - XP_Bool GetPostingAllowed() { return m_postingAllowed; } - - void SetSupportsExtensions (XP_Bool isSupported) - { m_supportsExtensions = isSupported; } - XP_Bool GetSupportsExtensions () { return m_supportsExtensions; } - - XP_Bool GetPushAuth() { return m_pushAuth; } - void SetPushAuth(XP_Bool pushAuth); - - // Returns the base part of the URL for this newshost, in the - // form "news://hostname:port" or "snews://hostname:port". - // Note that no trailing slash is appended, and that the - // ":port" part will be omitted if this host uses the default - // port. - const char* GetURLBase(); - - XP_Bool GetEverExpanded() {return m_everexpanded;} - void SetEverExpanded(XP_Bool value) {m_everexpanded = value;} - XP_Bool GetCheckedForNew() {return m_checkedForNew;} - void SetCheckedForNew(XP_Bool value) {m_checkedForNew = value;} - void SetGroupSucceeded(XP_Bool value) {m_groupSucceeded = value;} - // Completely obliterate this news host. Remove all traces of it from - // disk and memory. - int RemoveHost(); - - // Returns the pretty name for the given group. The resulting string - // must be free'd using delete[]. - char* GetPrettyName(const char* groupname); - int SetPrettyName(const char* groupname, const char* prettyname); - - - time_t GetAddTime(const char* groupname); - - // Returns a unique integer associated with this newsgroup. This is - // mostly used by Win16 to generate a 8.3 filename. - int32 GetUniqueID(const char* groupname); - - XP_Bool IsCategory(const char* groupname); - XP_Bool IsCategoryContainer(const char* groupname); - int SetIsCategoryContainer(const char* groupname, XP_Bool value); - - int SetGroupNeedsExtraInfo(const char *groupname, XP_Bool value); - // Finds the container newsgroup for this category (or NULL if this isn't - // a category). The resulting string must be free'd using delete[]. - char* GetCategoryContainer(const char* groupname); - MSG_FolderInfoNews *GetCategoryContainerFolderInfo(const char *groupname); - - // Get/Set whether this is a virtual newsgroup. - XP_Bool IsProfile(const char* groupname); - int SetIsProfile(const char* groupname, XP_Bool value); - - // Get/Set whether this is a real group (as opposed to a container of - // other groups, like "mcom".) - XP_Bool IsGroup(const char* groupname); - int SetIsGroup(const char* groupname, XP_Bool value); - - - // Returns TRUE if it's OK to post HTML in this group (either because the - // bit is on for this group, or one of this group's ancestor's has marked - // all of its descendents as being OK for HTML.) - XP_Bool IsHTMLOk(const char* groupname); - - // Get/Set if it's OK to post HTML in just this group. - XP_Bool IsHTMLOKGroup(const char* groupname); - int SetIsHTMLOKGroup(const char* groupname, XP_Bool value); - - // Get/Set if it's OK to post HTML in this group and all of its subgroups. - XP_Bool IsHTMLOKTree(const char* groupname); - int SetIsHTMLOKTree(const char* groupname, XP_Bool value); - - // Create the given group (if not already present). Returns 0 if the - // group is already present, 1 if we had to create it, negative on error. - // The given group will have the "isgroup" bit set on it (in other words, - // it is not to be just a container of other groups, like "mcom" is.) - int NoticeNewGroup(const char* groupname); - - - // Makes sure that we have records in memory for all known descendants - // of the given newsgroup. - int AssureAllDescendentsLoaded(msg_GroupRecord* group); - - - int SaveHostInfo(); - - // Suck the entire hostinfo file into memory. If force is TRUE, then throw - // away whatever we had in memory first. - int Inhale(XP_Bool force = FALSE); - - // If we inhale'd, then write thing out to the file and free up the - // memory. - int Exhale(); - - // Inhale, but make believe the file is empty. In other words, set the - // inhaled bit, but empty out the memory. - int EmptyInhale(); - - msg_GroupRecord* GetGroupTree() {return m_groupTree;} - time_t GetFirstNewDate() {return m_firstnewdate;} - - void GroupNotFound(const char *groupName, XP_Bool opening); - - int ReorderGroup (MSG_FolderInfoNews *groupToMove, MSG_FolderInfoNews *groupToMoveBefore, int32 *newIdx); - -protected: - void OpenGroupFile(const XP_FilePerm permissions = XP_FILE_UPDATE_BIN); - int32 RememberLine(char* line); - static int32 ProcessLine_s(char* line, uint32 line_size, void* closure); - int32 ProcessLine(char* line, uint32 line_size); - static void WriteTimer(void* closure); - int CreateFileHeader(); - int ReadInitialPart(); - msg_GroupRecord* FindGroupInBlock(msg_GroupRecord* parent, - const char* groupname, - int32* comp); - msg_GroupRecord* LoadSingleEntry(msg_GroupRecord* parent, - const char* groupname, - int32 min, int32 max); - static int32 InhaleLine(char* line, uint32 length, void* closure); - msg_GroupRecord* FindOrCreateGroup(const char* groupname, - int* statusOfMakingGroup = NULL); - - MSG_FolderInfoNews *SwitchNewsToCategoryContainer(MSG_FolderInfoNews *newsInfo); - MSG_FolderInfoNews *SwitchCategoryContainerToNews(MSG_FolderInfoCategoryContainer *catContainerInfo); - - char* m_hostname; - int32 m_port; - XP_Bool m_secure; - - char* m_nameAndPort; - char* m_fullUIName; - - MSG_FolderArray* m_groups; // List of MSG_FolderInfoNews* objects. - MSG_Master* m_master; - - MSG_FolderInfo* m_hostinfo; // Object representing entire newshost in - // tree. - char* m_optionLines; - - - char* m_filename; /* The name of the newsrc file associated with - this host. This will be of the form: - - "" meaning .newsrc or .snewsrc - HOST meaning .newsrc-HOST - HOST:PORT meaning .newsrc-HOST:PORT - - Whether it begins with .newsrc or .snewsrc - depends on the secure_p slot (we pass one of - the types xpNewsRC or xpSNewsRC to xp_file.) - - The reason this is not simply derived from - the host_name and port slots is that it's - not a 1:1 mapping; if the user has a file - called "newsrc", we will use that for the - default host (the "" name.) Likewise, - ".newsrc-H" and ".newsrc-H:119" are - ambiguous. - */ - - char* m_dbfilename; - XP_Bool m_dirty; - XP_Bool m_supportsExtensions; - void* m_writetimer; - char* m_urlbase; - XP_Bool m_everexpanded; // Whether the user ever opened up this - // newshost this session. - XP_Bool m_checkedForNew; // Whether we've checked for new newgroups - // in this newshost this session. - XP_Bool m_groupSucceeded; // Whether a group command has succeeded this - // session, protect against server bustage - // where it says no group exists. - - XPPtrArray m_supportedExtensions; - XPPtrArray m_searchableGroups; - XPPtrArray m_searchableHeaders; - // ### mwelch Added to determine what charsets can be used - // for each table. - XP_HashTable m_searchableGroupCharsets; - - XPPtrArray m_propertiesForGet; - XPPtrArray m_valuesForGet; - - XP_Bool m_postingAllowed; - XP_Bool m_pushAuth; // TRUE if we should volunteer authentication without a - // challenge - - time_t m_lastgroupdate; - time_t m_firstnewdate; - - - msg_GroupRecord* m_groupTree; // Tree of groups we're remembering. - XP_Bool m_inhaled; // Whether we inhaled the entire list of - // groups, or just some. - int m_groupTreeDirty; // Whether the group tree is dirty. If 0, then - // we don't need to write anything. If 1, then - // we can write things in place. If >1, then - // we need to rewrite the whole tree file. - char* m_hostinfofilename; // Filename of the hostinfo file. - - static MSG_NewsHost* M_FileOwner; // In an effort to save file descriptors, - // only one newshost ever has its - // hostinfo file opened. This is the - // one. - - XP_File m_groupFile; // File handle to the hostinfo file. - char* m_groupFilePermissions; // Permissions used to create the above - // file handle. - - char* m_block; // A block of text read from the hostinfo file. - int32 m_blockSize; // How many bytes allocated in m_block. - int32 m_blockStart; // Where in the file we read the data that is - // currently sitting in m_block. - int32 m_fileStart; // Where in the file the actual newsgroup data - // starts. - int32 m_fileSize; // Total number of bytes in the hostinfo file. - int32 m_uniqueId; // Unique number assigned to each newsgroup. - -}; - - - -#endif /* __msg_NewsHost__ */ diff --git a/mozilla/lib/libmsg/newspane.cpp b/mozilla/lib/libmsg/newspane.cpp deleted file mode 100644 index 79ba1e1a220..00000000000 --- a/mozilla/lib/libmsg/newspane.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "newspane.h" -#include "pmsgsrch.h" - -MSG_OfflineNewsSearchPane::MSG_OfflineNewsSearchPane(MWContext* context, MSG_Master* master) : MSG_SearchPane(context, master) -{ - m_exitFunc = 0; - m_exitFuncData = 0; - m_hitFunc = 0; - m_hitFuncData = 0; -} - -MSG_OfflineNewsSearchPane::~MSG_OfflineNewsSearchPane() -{ -} - -int MSG_OfflineNewsSearchPane::GetURL (URL_Struct *url, XP_Bool /*isSafe*/) -{ - url->fe_data = this; - return NET_GetURL(url, FO_CACHE_AND_PRESENT, m_context, MSG_OfflineNewsSearchPane::SearchExitFunc); -} - -/* static */void MSG_OfflineNewsSearchPane::SearchExitFunc(URL_Struct *url, - int /*status*/, - MWContext *) -{ - MSG_OfflineNewsSearchPane *newsSearchPane =(MSG_OfflineNewsSearchPane *) url->fe_data; - XP_ASSERT (newsSearchPane); - if (!newsSearchPane) - return; - newsSearchPane->CallExitFunc(); -} - -void MSG_OfflineNewsSearchPane::SetExitFunc(OfflineNewsSearchExit *exitFunc, void *exitFuncData) -{ - m_exitFunc = exitFunc; - m_exitFuncData = exitFuncData; -} - -// We'd prefer to use a listener but maybe this is all that's required. -void MSG_OfflineNewsSearchPane::SetReportHitFunction(OfflineNewsReportHit *hitFunc, void *hitData) -{ - m_hitFunc = hitFunc; - m_hitFuncData = hitData; -} - -void MSG_OfflineNewsSearchPane::CallExitFunc() -{ - if (m_exitFunc) - (*m_exitFunc)(m_exitFuncData); -} - -void MSG_OfflineNewsSearchPane::StartingUpdate(MSG_NOTIFY_CODE /*code*/, MSG_ViewIndex /*where*/, - int32 /*num*/) -{ -} - -void MSG_OfflineNewsSearchPane::EndingUpdate(MSG_NOTIFY_CODE /*code*/, MSG_ViewIndex where, - int32 /*num*/) -{ - MSG_ResultElement *resultElem; - MSG_SearchValue *searchValue; - if (MSG_GetResultElement (this, where, &resultElem) == SearchError_Success) - { - if (resultElem->GetValue (attribMessageKey, &searchValue) == SearchError_Success) - { - m_keysFound.Add(searchValue->u.key); - if (m_hitFunc != 0) - (*m_hitFunc)(m_hitFuncData, searchValue->u.key); - resultElem->DestroyValue(searchValue); - } - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (this); - if (frame) - { - MSG_ResultElement *res = frame->m_resultList.GetAt(where); - if (res) - { - delete res; - frame->m_resultList.RemoveAt(where); - } - } - } - // here we need to destroy the search frames' result elements... ###dmb todo -} - diff --git a/mozilla/lib/libmsg/newspane.h b/mozilla/lib/libmsg/newspane.h deleted file mode 100644 index ce0d27174b6..00000000000 --- a/mozilla/lib/libmsg/newspane.h +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef MSG_NEWSSEARCH_PANE_H -#define MSG_NEWSSEARCH_PANE_H - -#include "msgspane.h" -#include "idarray.h" - -typedef int OfflineNewsSearchExit(void *exitData); -typedef void OfflineNewsReportHit(void *hitData, MessageKey hitKey); - -// this class is used to search off-line news databases, usually for -// applying off-line retrieval options to a database, or for applying -// header/article retention policies. We are using search to get its -// background url handling for free, and its matching engine. - -// We had to subclass MSG_SearchPane to override GetURL (so we can provide -// our own exit function so that we can go on to the next part of the process) -// We subclass the Starting and Ending Update functions so we can look at -// each result as it comes in. - -// Searches for retrieving off-line will typically look like this: -// Date > 01/23/96 AND Date < 01/23/97 AND Size < 5000 AND Status != isRead -// AND Status != Offline - -// Searches for purging articles will typically look like this: -// Date < 01/23/96 AND Status == isRead AND Status == Offline - -// Searches for purging headers will typically look like this: -// Date < 01/23/96 AND Status == isRead - -// Customers will either wait for the whole array of matching keys -// to be constructed before acting on them (e.g., Offline retrieval) -// or will act on each key in turn (purging articles or headers). We -// could require that customers who want notification of each add -// become view listeners. Oh sure, why not. - -class MSG_OfflineNewsSearchPane : public MSG_SearchPane -{ -public: - MSG_OfflineNewsSearchPane(MWContext* context, MSG_Master* master); - virtual ~MSG_OfflineNewsSearchPane(); - virtual int GetURL (URL_Struct *url, XP_Bool isSafe); - virtual void StartingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num); - virtual void EndingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where, - int32 num); - void CallExitFunc(); - static void SearchExitFunc(URL_Struct *url , int status, MWContext *context); - IDArray *GetKeysFound() {return &m_keysFound;} - virtual void SetExitFunc(OfflineNewsSearchExit *exitFunc, void *exitFuncData); - virtual void SetReportHitFunction(OfflineNewsReportHit *hitFunc, void *hitData); -protected: - IDArray m_keysFound; - OfflineNewsSearchExit *m_exitFunc; - void *m_exitFuncData; - OfflineNewsReportHit *m_hitFunc; - void *m_hitFuncData; -}; -#endif diff --git a/mozilla/lib/libmsg/newsrc.h b/mozilla/lib/libmsg/newsrc.h deleted file mode 100644 index 8c26a83493f..00000000000 --- a/mozilla/lib/libmsg/newsrc.h +++ /dev/null @@ -1,184 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* newsrc.c --- reading and writing newsrc files. -*/ - - -/* This stuff is all going away (being replaced by newsset.{h,cpp}.) So, - for now, make it so that including this is a no-op. */ - - -/* #ifndef _NEWSRC_H_ */ -#ifdef NOTDEF - -#define _NEWSRC_H_ - -#include "msg.h" - -typedef struct msg_NewsRCSet msg_NewsRCSet; -typedef struct msg_NewsRCFile msg_NewsRCFile; - -XP_BEGIN_PROTOS - - -/* Allocates a set. Shouldn't be used if this set comes from a newsrc, (which - is the usual case); instead, get the set using msg_GetNewsRCSet(). */ -extern msg_NewsRCSet * msg_MakeNewsrcSet(void); - -/* Frees a set. Should be a set explicitely allocated with - msg_MakeNewsrcSet(); if this set came from a newsrc, you should not call - this directly. - */ -extern void msg_FreeNewsrcSet (msg_NewsRCSet *set); - - -/* Parses a newsrc file and returns the result. - */ -extern struct msg_NewsRCFile *msg_ReadNewsRCFile (MWContext *context, - XP_File file); - -/* Writes newsrc data to the given file. - */ -extern int msg_WriteNewsRCFile (MWContext *context, - struct msg_NewsRCFile *data, - XP_File file); - -extern void msg_FreeNewsRCFile (struct msg_NewsRCFile *file); - -extern struct msg_NewsRCFile * -msg_MakeDefaultNewsRCFileData (MWContext *context, XP_Bool default_host_p); - -extern msg_NewsRCSet * -msg_GetNewsRCSet (MWContext *context, const char *group_name, - struct msg_NewsRCFile *file); - -/* Copy one newsrc set to another one. Pretty meaningless if both sets - represent real newsrc lines; one or the other had better be for internal - use only. Note that it does not copy the name associated with the set; - only the article number stuff. */ - -extern int msg_CopySet(msg_NewsRCSet* dest, msg_NewsRCSet* source); - -/* Add a new entry to the newsrc file. */ -extern msg_NewsRCSet *msg_AddNewsRCSet (const char *group_name, - struct msg_NewsRCFile *file); - - -/* Return whether the given set has the subscribed bit on. */ -extern XP_Bool msg_GetSubscribed(struct msg_NewsRCSet* set); - -/* Turn on or off the subscribed bit. */ -extern void msg_SetSubscribed(struct msg_NewsRCSet* set, XP_Bool value); - - -/* Returns the lowest non-member of the set greater than 0. - */ -extern int32 msg_FirstUnreadArt (msg_NewsRCSet *set); - -/* This takes a `msg_NewsRCSet' object and converts it to a string suitable - for printing in the newsrc file. - - The assumption is made that the `msg_NewsRCSet' is already compressed to - an optimal sequence of ranges; no attempt is made to compress further. - */ -extern char *msg_OutputNewsRCSet (msg_NewsRCSet *set); - -/* Re-compresses a `msg_NewsRCSet' object. - - The assumption is made that the `msg_NewsRCSet' is syntactically correct - (all ranges have a length of at least 1, and all values are non- - decreasing) but will optimize the compression, for example, merging - consecutive literals or ranges into one range. - - Returns TRUE if successful, FALSE if there wasn't enough memory to - allocate scratch space. - */ -extern XP_Bool msg_OptimizeNewsRCSet (msg_NewsRCSet *set); - -/* Whether a number is a member of a set. */ -extern XP_Bool msg_NewsRCIsRead (msg_NewsRCSet *set, int32 number); - -/* Adds a number to a set. - Returns negative if out of memory. - Returns 1 if a change was made, 0 if it was already read. - */ -extern int msg_MarkArtAsRead (msg_NewsRCSet *set, int32 number); - -/* Removes a number from a set. - Returns negative if out of memory. - Returns 1 if a change was made, 0 if it was already unread. - */ -extern int msg_MarkArtAsUnread (msg_NewsRCSet *set, int32 number); - -/* Adds a range of numbers to a set. - Returns negative if out of memory. - Returns 1 if a change was made, 0 if they were all already read. - */ -extern int msg_MarkRangeAsRead (msg_NewsRCSet *set, - int32 start, int32 end); - -/* Remove a range of numbers from a set. - Returns negative if out of memory. - Returns 1 if a change was made, 0 if they were all already unread. - */ -extern int msg_MarkRangeAsUnread (msg_NewsRCSet *set, - int32 start, int32 end); - -/* Given a range of articles, returns the number of articles in that - range which are currently not marked as read. - */ -extern int32 msg_NewsRCUnreadInRange (msg_NewsRCSet *set, - int32 start, int32 end); - -/* Given a set and an index into it, moves forward in that set until - RANGE_SIZE non-members have been seen, and then returns that number. - The idea here is that we want to request 100 articles from the news - server (1-100), but if the user has already read 50 of them (say, - numbers 20-80), we really want to request 150 of them (1-150) in - order to get 100 *unread* articles. - */ -extern int32 msg_FindNewsRCSetNonmemberRange (msg_NewsRCSet *set, int32 start, - int32 range_size); - -/* Given a set and an range in that set, find the first range of unread - articles within the given range. If none, return zeros. */ - -extern int msg_FirstUnreadRange(msg_NewsRCSet* set, int32 min, int32 max, - int32* first, int32* last); - -/* Given a set and an range in that set, find the last range of unread - articles within the given range. If none, return zeros. */ - -extern int msg_LastUnreadRange(msg_NewsRCSet* set, int32 min, int32 max, - int32* first, int32* last); - - -/* Remember the given set entry in the undo state off of the given mail/news - context. We're about to do a serious change to this newsset (i.e., - catchup newsgroup), and we want be able to get the old state back. */ -extern int msg_PreserveSetInUndoHistory(MWContext* context, - msg_NewsRCSet* set); - - -XP_END_PROTOS - -#endif /* _NEWSRC_H_ */ diff --git a/mozilla/lib/libmsg/newsset.cpp b/mozilla/lib/libmsg/newsset.cpp deleted file mode 100644 index 42317b009f3..00000000000 --- a/mozilla/lib/libmsg/newsset.cpp +++ /dev/null @@ -1,1444 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "newsset.h" -#include "newshost.h" - -extern "C" { - extern int MK_OUT_OF_MEMORY; -} - - -/* A compressed encoding for sets of article. This is usually for lines from - the newsrc, which have article lists like - - 1-29627,29635,29658,32861-32863 - - so the data has these properties: - - - strictly increasing - - large subsequences of monotonically increasing ranges - - gaps in the set are usually small, but not always - - consecutive ranges tend to be large - - The biggest win is to run-length encode the data, storing ranges as two - numbers (start+length or start,end). We could also store each number as a - delta from the previous number for further compression, but that gets kind - of tricky, since there are no guarentees about the sizes of the gaps, and - we'd have to store variable-length words. - - Current data format: - - DATA := SIZE [ CHUNK ]* - CHUNK := [ RANGE | VALUE ] - RANGE := -LENGTH START - START := VALUE - LENGTH := int32 - VALUE := a literal positive integer, for now - it could also be an offset from the previous value. - LENGTH could also perhaps be a less-than-32-bit quantity, - at least most of the time. - - Lengths of CHUNKs are stored negative to distinguish the beginning of - a chunk from a literal: negative means two-word sequence, positive - means one-word sequence. - - 0 represents a literal 0, but should not occur, and should never occur - except in the first position. - - A length of -1 won't occur either, except temporarily - a sequence of - two elements is represented as two literals, since they take up the same - space. - - Another optimization we make is to notice that we typically ask the - question ``is N a member of the set'' for increasing values of N. So the - set holds a cache of the last value asked for, and can simply resume the - search from there. */ - - - -msg_NewsArtSet::msg_NewsArtSet(MSG_NewsHost* host) -{ - m_cached_value = -1; - m_cached_value_index = 0; - m_length = 0; - m_data_size = 10; - m_data = (int32 *) XP_ALLOC (sizeof (int32) * m_data_size); - m_host = host; -} - - -msg_NewsArtSet::~msg_NewsArtSet() -{ - FREEIF(m_data); -} - - -XP_Bool msg_NewsArtSet::Grow() -{ - int32 new_size; - int32 *new_data; - new_size = m_data_size * 2; - new_data = (int32 *) XP_REALLOC (m_data, sizeof (int32) * new_size); - if (! new_data) - return FALSE; - m_data_size = new_size; - m_data = new_data; - return TRUE; -} - - -msg_NewsArtSet::msg_NewsArtSet(const char* numbers, MSG_NewsHost* host) -{ - int32 *head, *tail, *end; - - m_host = host; - m_cached_value = -1; - m_cached_value_index = 0; - m_length = 0; - m_data_size = 10; - m_data = (int32 *) XP_ALLOC (sizeof (int32) * m_data_size); - if (!m_data) return; - - head = m_data; - tail = head; - end = head + m_data_size; - - if(!numbers) { - return; - } - - while (isspace (*numbers)) numbers++; - while (*numbers) { - int32 from = 0; - int32 to; - - if (tail >= end - 4) { - /* out of room! */ - int32 tailo = tail - head; - if (!Grow()) { - FREEIF(m_data); - return; - } - /* data may have been relocated */ - head = m_data; - tail = head + tailo; - end = head + m_data_size; - } - - while (isspace(*numbers)) numbers++; - if (*numbers && !isdigit(*numbers)) { - break; /* illegal character */ - } - while (isdigit (*numbers)) { - from = (from * 10) + (*numbers++ - '0'); - } - while (isspace (*numbers)) numbers++; - if (*numbers != '-') { - to = from; - } else { - to = 0; - numbers++; - while (*numbers >= '0' && *numbers <= '9') - to = (to * 10) + (*numbers++ - '0'); - while (isspace (*numbers)) numbers++; - } - - if (to < from) to = from; /* illegal */ - - /* This is a hack - if the newsrc file specifies a range 1-x as - being read, we internally pretend that article 0 is read as well. - (But if only 2-x are read, then 0 is not read.) This is needed - because some servers think that article 0 is an article (I think) - but some news readers (including Netscape 1.1) choke if the .newsrc - file has lines beginning with 0... ### */ - if (from == 1) from = 0; - - if (to == from) { - /* Write it as a literal */ - *tail = from; - tail++; - } else /* Write it as a range. */ { - *tail = -(to - from); - tail++; - *tail = from; - tail++; - } - - while (*numbers == ',' || isspace (*numbers)) { - numbers++; - } - } - - m_length = tail - head; /* size of data */ -} - - - -msg_NewsArtSet* -msg_NewsArtSet::Create(MSG_NewsHost* host) -{ - msg_NewsArtSet* set = new msg_NewsArtSet(host); - if (set && set->m_data == NULL) { - delete set; - set = NULL; - } - return set; -} - - -msg_NewsArtSet* -msg_NewsArtSet::Create(const char* value, MSG_NewsHost* host) -{ - msg_NewsArtSet* set = new msg_NewsArtSet(value, host); - if (set && set->m_data == NULL) { - delete set; - set = NULL; - } - return set; -} - - - -/* Returns the lowest non-member of the set greater than 0. - */ -int32 -msg_NewsArtSet::FirstNonMember () -{ - if (m_length <= 0) { - return 1; - } else if(m_data[0] < 0 && m_data[1] != 1 && m_data[1] != 0) { - /* first range not equal to 0 or 1, always return 1 */ - return 1; - } else if (m_data[0] < 0) { - /* it's a range */ - /* If there is a range [N-M] we can presume that M+1 is not in the - set. */ - return (m_data[1] - m_data[0] + 1); - } else { - /* it's a literal */ - if (m_data[0] == 1) { - /* handle "1,..." */ - if (m_length > 1 && m_data[1] == 2) { - /* This is "1,2,M-N,..." or "1,2,M,..." where M >= 4. Note - that M will never be 3, because in that case we would have - started with a range: "1-3,..." */ - return 3; - } else { - return 2; /* handle "1,M-N,.." or "1,M,..." - where M >= 3; */ - } - } - else if (m_data[0] == 0) { - /* handle "0,..." */ - if (m_length > 1 && m_data[1] == 1) { - /* this is 0,1, (see above) */ - return 2; - } - else { - return 1; - } - - } else { - /* handle "M,..." where M >= 2. */ - return 1; - } - } -} - - -char * -msg_NewsArtSet::Output() -{ - int32 size; - int32 *head; - int32 *tail; - int32 *end; - int32 s_size; - char *s_head; - char *s, *s_end; - int32 last_art = -1; - - size = m_length; - head = m_data; - tail = head; - end = head + size; - - s_size = (size * 12) + 10; // dmb - try to make this allocation get used at least once. - s_head = new char [s_size]; - s_head[0] = '\0'; // otherwise, s_head will contain garbage. - s = s_head; - s_end = s + s_size; - - if (! s) return 0; - - while (tail < end) { - int32 from; - int32 to; - - if (s > (s_end - (12 * 2 + 10))) { /* 12 bytes for each number (enough - for "2147483647" aka 2^31-1), - plus 10 bytes of slop. */ - int32 so = s - s_head; - s_size += 200; - char* tmp = new char[s_size]; - if (tmp) XP_STRCPY(tmp, s_head); - delete [] s_head; - s_head = tmp; - if (!s_head) return 0; - s = s_head + so; - s_end = s_head + s_size; - } - - if (*tail < 0) { - /* it's a range */ - from = tail[1]; - to = from + (-(tail[0])); - tail += 2; - } - else /* it's a literal */ - { - from = *tail; - to = from; - tail++; - } - if (from == 0) { - from = 1; /* See 'hack' comment above ### */ - } - if (from <= last_art) from = last_art + 1; - if (from <= to) { - if (from < to) { - PR_snprintf(s, s_end - s, "%lu-%lu,", from, to); - } else { - PR_snprintf(s, s_end - s, "%lu,", from); - } - s += XP_STRLEN(s); - last_art = to; - } - } - if (last_art >= 0) { - s--; /* Strip off the last ',' */ - } - - *s = 0; - - return s_head; -} - -int32 -msg_NewsArtSet::GetLastMember() -{ - if (m_length > 1) - { - int32 nextToLast = m_data[m_length - 2]; - if (nextToLast < 0) // is range at end? - { - int32 last = m_data[m_length - 1]; - return (-nextToLast + last - 1); - } - else // no, so last number must be last member - { - return m_data[m_length - 1]; - } - } - else if (m_length == 1) - return m_data[0]; // must be only 1 read. - else - return 0; -} - -void msg_NewsArtSet::SetLastMember(int32 newHighWaterMark) -{ - if (newHighWaterMark < GetLastMember()) - { - while (TRUE) - { - if (m_length > 1) - { - int32 nextToLast = m_data[m_length - 2]; - int32 curHighWater; - if (nextToLast < 0) // is range at end? - { - int32 rangeStart = m_data[m_length - 1]; - int32 rangeLength = -nextToLast; - curHighWater = (rangeLength + rangeStart - 1); - if (curHighWater > newHighWaterMark) - { - if (rangeStart > newHighWaterMark) - { - m_length -= 2; // throw away whole range - } - else if (rangeStart == newHighWaterMark) - { - // turn range into single element. - m_data[m_length - 2] = newHighWaterMark; - m_length--; - break; - } - else // just shorten range - { - m_data[m_length - 2] = -(newHighWaterMark - rangeStart); - break; - } - } - } - else if (m_data[m_length - 1] > newHighWaterMark) // no, so last number must be last member - { - m_length--; - } - else - break; - } - else - break; - } - // well, the whole range is probably invalid, because the server probably re-ordered ids, - // but what can you do? - if (m_host) - m_host->MarkDirty(); - } -} - -int32 -msg_NewsArtSet::GetFirstMember() -{ - if (m_length > 1) - { - int32 first = m_data[0]; - if (first < 0) // is range at start? - { - int32 second = m_data[1]; - return (second); - } - else // no, so first number must be first member - { - return m_data[0]; - } - } - else if (m_length == 1) - return m_data[0]; // must be only 1 read. - else - return 0; -} - -/* Re-compresses a `msg_NewsArtSet' object. - - The assumption is made that the `msg_NewsArtSet' is syntactically correct - (all ranges have a length of at least 1, and all values are non- - decreasing) but will optimize the compression, for example, merging - consecutive literals or ranges into one range. - - Returns TRUE if successful, FALSE if there wasn't enough memory to - allocate scratch space. - - #### This should be changed to modify the buffer in place. - - Also note that we never call Optimize() unless we actually changed - something, so it's a great place to tell the MSG_NewsHost* that something - changed. - */ -XP_Bool -msg_NewsArtSet::Optimize() -{ - int32 input_size; - int32 output_size; - int32 *input_tail; - int32 *output_data; - int32 *output_tail; - int32 *input_end; - int32 *output_end; - - input_size = m_length; - output_size = input_size + 1; - input_tail = m_data; - output_data = (int32 *) XP_ALLOC (sizeof (int32) * output_size); - output_tail = output_data; - input_end = input_tail + input_size; - output_end = output_data + output_size; - - if (!output_data) return FALSE; - - /* We're going to modify the set, so invalidate the cache. */ - m_cached_value = -1; - - while (input_tail < input_end) { - int32 from, to; - XP_Bool range_p = (*input_tail < 0); - - if (range_p) { - /* it's a range */ - from = input_tail[1]; - to = from + (-(input_tail[0])); - - /* Copy it over */ - *output_tail++ = *input_tail++; - *output_tail++ = *input_tail++; - } else { - /* it's a literal */ - from = *input_tail; - to = from; - - /* Copy it over */ - *output_tail++ = *input_tail++; - } - XP_ASSERT(output_tail < output_end); - if (output_tail >= output_end) { - XP_FREE(output_data); - return FALSE; - } - - /* As long as this chunk is followed by consecutive chunks, - keep extending it. */ - while (input_tail < input_end && - ((*input_tail > 0 && /* literal... */ - *input_tail == to + 1) || /* ...and consecutive, or */ - (*input_tail <= 0 && /* range... */ - input_tail[1] == to + 1)) /* ...and consecutive. */ - ) { - if (! range_p) { - /* convert the literal to a range. */ - output_tail++; - output_tail [-2] = 0; - output_tail [-1] = from; - range_p = TRUE; - } - - if (*input_tail > 0) { /* literal */ - output_tail[-2]--; /* increase length by 1 */ - to++; - input_tail++; - } else { - int32 L2 = (- *input_tail) + 1; - output_tail[-2] -= L2; /* increase length by N */ - to += L2; - input_tail += 2; - } - } - } - - XP_FREE (m_data); - m_data = output_data; - m_data_size = output_size; - m_length = output_tail - output_data; - - /* One last pass to turn [N - N+1] into [N, N+1]. */ - output_tail = output_data; - output_end = output_tail + m_length; - while (output_tail < output_end) { - if (*output_tail < 0) { - /* it's a range */ - if (output_tail[0] == -1) { - output_tail[0] = output_tail[1]; - output_tail[1]++; - } - output_tail += 2; - } else { - /* it's a literal */ - output_tail++; - } - } - - if (m_host) m_host->MarkDirty(); - return TRUE; -} - - - -XP_Bool -msg_NewsArtSet::IsMember(int32 number) -{ - XP_Bool value = FALSE; - int32 size; - int32 *head; - int32 *tail; - int32 *end; - - size = m_length; - head = m_data; - tail = head; - end = head + size; - - /* If there is a value cached, and that value is smaller than the - value we're looking for, skip forward that far. */ - if (m_cached_value > 0 && - m_cached_value < number) { - tail += m_cached_value_index; - } - - while (tail < end) { - if (*tail < 0) { - /* it's a range */ - int32 from = tail[1]; - int32 to = from + (-(tail[0])); - if (from > number) { - /* This range begins after the number - we've passed it. */ - value = FALSE; - goto DONE; - } else if (to >= number) { - /* In range. */ - value = TRUE; - goto DONE; - } else { - tail += 2; - } - } - else { - /* it's a literal */ - if (*tail == number) { - /* bang */ - value = TRUE; - goto DONE; - } else if (*tail > number) { - /* This literal is after the number - we've passed it. */ - value = FALSE; - goto DONE; - } else { - tail++; - } - } - } - -DONE: - /* Store the position of this chunk for next time. */ - m_cached_value = number; - m_cached_value_index = tail - head; - - return value; -} - - -int -msg_NewsArtSet::Add(int32 number) -{ - int32 size; - int32 *head; - int32 *tail; - int32 *end; - - size = m_length; - head = m_data; - tail = head; - end = head + size; - - XP_ASSERT (number >= 0); - if (number < 0) - return 0; - - /* We're going to modify the set, so invalidate the cache. */ - m_cached_value = -1; - - while (tail < end) { - if (*tail < 0) { - /* it's a range */ - int32 from = tail[1]; - int32 to = from + (-(tail[0])); - - if (from <= number && to >= number) { - /* This number is already present - we don't need to do - anything. */ - return 0; - } - - if (to > number) { - /* We have found the point before which the new number - should be inserted. */ - break; - } - - tail += 2; - } else { - /* it's a literal */ - if (*tail == number) { - /* This number is already present - we don't need to do - anything. */ - return 0; - } - - if (*tail > number) { - /* We have found the point before which the new number - should be inserted. */ - break; - } - - tail++; - } - } - - /* At this point, `tail' points to a position in the set which represents - a value greater than `new'; or it is at `end'. In the interest of - avoiding massive duplication of code, simply insert a literal here and - then run the optimizer. - */ - int mid = (tail - head); - - if (m_data_size <= m_length + 1) { - int endo = end - head; - if (!Grow()) { - return MK_OUT_OF_MEMORY; - } - head = m_data; - end = head + endo; - } - - if (tail == end) { - /* at the end */ - /* Add a literal to the end. */ - m_data[m_length++] = number; - } else { - /* need to insert (or edit) in the middle */ - int32 i; - for (i = size; i > mid; i--) { - m_data[i] = m_data[i-1]; - } - m_data[i] = number; - m_length++; - } - - Optimize(); - return 1; -} - - - -int -msg_NewsArtSet::Remove(int32 number) -{ - int32 size; - int32 *head; - int32 *tail; - int32 *end; - - size = m_length; - head = m_data; - tail = head; - end = head + size; - - // **** I am not sure this is a right thing to comment the following - // statements out. The reason for this is due to the implementation of - // offline save draft and template. We use faked UIDs (negative ids) for - // offline draft and template in order to distinguish them from real - // UID. David I need your help here. **** jt - - // XP_ASSERT(number >= 0); - // if (number < 0) { - // return -1; - /// } - - /* We're going to modify the set, so invalidate the cache. */ - m_cached_value = -1; - - while (tail < end) { - int32 mid = (tail - m_data); - - if (*tail < 0) { - /* it's a range */ - int32 from = tail[1]; - int32 to = from + (-(tail[0])); - - if (number < from || number > to) { - /* Not this range */ - tail += 2; - continue; - } - - if (to == from + 1) { - /* If this is a range [N - N+1] and we are removing M - (which must be either N or N+1) replace it with a - literal. This reduces the length by 1. */ - m_data[mid] = (number == from ? to : from); - while (++mid < m_length) { - m_data[mid] = m_data[mid+1]; - } - m_length--; - Optimize(); - return 1; - } else if (to == from + 2) { - /* If this is a range [N - N+2] and we are removing M, - replace it with the literals L,M (that is, either - (N, N+1), (N, N+2), or (N+1, N+2). The overall - length remains the same. */ - m_data[mid] = from; - m_data[mid+1] = to; - if (from == number) { - m_data[mid] = from+1; - } else if (to == number) { - m_data[mid+1] = to-1; - } - Optimize(); - return 1; - } else if (from == number) { - /* This number is at the beginning of a long range (meaning a - range which will still be long enough to remain a range.) - Increase start and reduce length of the range. */ - m_data[mid]++; - m_data[mid+1]++; - Optimize(); - return 1; - } else if (to == number) { - /* This number is at the end of a long range (meaning a range - which will still be long enough to remain a range.) - Just decrease the length of the range. */ - m_data[mid]++; - Optimize(); - return 1; - } else { - /* The number being deleted is in the middle of a range which - must be split. This increases overall length by 2. - */ - int32 i; - int endo = end - head; - if (m_data_size - m_length <= 2) { - if (!Grow()) return MK_OUT_OF_MEMORY; - } - head = m_data; - end = head + endo; - - for (i = m_length + 2; i > mid + 2; i--) { - m_data[i] = m_data[i-2]; - } - - m_data[mid] = (- (number - from - 1)); - m_data[mid+1] = from; - m_data[mid+2] = (- (to - number - 1)); - m_data[mid+3] = number + 1; - m_length += 2; - - /* Oops, if we've ended up with a range with a 0 length, - which is illegal, convert it to a literal, which reduces - the overall length by 1. */ - if (m_data[mid] == 0) { - /* first range */ - m_data[mid] = m_data[mid+1]; - for (i = mid + 1; i < m_length; i++) { - m_data[i] = m_data[i+1]; - } - m_length--; - } - if (m_data[mid+2] == 0) { - /* second range */ - m_data[mid+2] = m_data[mid+3]; - for (i = mid + 3; i < m_length; i++) { - m_data[i] = m_data[i+1]; - } - m_length--; - } - Optimize(); - return 1; - } - } else { - /* it's a literal */ - if (*tail != number) { - /* Not this literal */ - tail++; - continue; - } - - /* Excise this literal. */ - m_length--; - while (mid < m_length) { - m_data[mid] = m_data[mid+1]; - mid++; - } - Optimize(); - return 1; - } - } - - /* It wasn't here at all. */ - return 0; -} - - -static int32* -msg_emit_range(int32* tmp, int32 a, int32 b) -{ - if (a == b) { - *tmp++ = a; - } else { - XP_ASSERT(a < b && a >= 0); - *tmp++ = -(b - a); - *tmp++ = a; - } - return tmp; -} - - -int -msg_NewsArtSet::AddRange(int32 start, int32 end) -{ - int32 tmplength; - int32* tmp; - int32* in; - int32* out; - int32* tail; - int32 a; - int32 b; - XP_Bool didit = FALSE; - - /* We're going to modify the set, so invalidate the cache. */ - m_cached_value = -1; - - XP_ASSERT(start <= end); - if (start > end) return -1; - - if (start == end) { - return Add(start); - } - - tmplength = m_length + 2; - tmp = (int32*) XP_ALLOC(sizeof(int32) * tmplength); - - if (!tmp) return MK_OUT_OF_MEMORY; - - in = m_data; - out = tmp; - tail = in + m_length; - -#define EMIT(x, y) out = msg_emit_range(out, x, y) - - while (in < tail) { - // Set [a,b] to be this range. - if (*in < 0) { - b = - *in++; - a = *in++; - b += a; - } else { - a = b = *in++; - } - - if (a <= start && b >= end) { - // We already have the entire range marked. - XP_FREE(tmp); - return 0; - } - if (start > b + 1) { - // No overlap yet. - EMIT(a, b); - } else if (end < a - 1) { - // No overlap, and we passed it. - EMIT(start, end); - EMIT(a, b); - didit = TRUE; - break; - } else { - // The ranges overlap. Suck this range into our new range, and - // keep looking for other ranges that might overlap. - start = start < a ? start : a; - end = end > b ? end : b; - } - } - if (!didit) EMIT(start, end); - while (in < tail) { - *out++ = *in++; - } - -#undef EMIT - - XP_FREE(m_data); - m_data = tmp; - m_length = out - tmp; - m_data_size = tmplength; - if (m_host) m_host->MarkDirty(); - return 1; -} - -int32 -msg_NewsArtSet::CountMissingInRange(int32 range_start, int32 range_end) -{ - int32 count; - int32 *head; - int32 *tail; - int32 *end; - - XP_ASSERT (range_start >= 0 && range_end >= 0 && range_end >= range_start); - if (range_start < 0 || range_end < 0 || range_end < range_start) return -1; - - head = m_data; - tail = head; - end = head + m_length; - - count = range_end - range_start + 1; - - while (tail < end) { - if (*tail < 0) { - /* it's a range */ - int32 from = tail[1]; - int32 to = from + (-(tail[0])); - if (from < range_start) from = range_start; - if (to > range_end) to = range_end; - - if (to >= from) - count -= (to - from + 1); - - tail += 2; - } else { - /* it's a literal */ - if (*tail >= range_start && *tail <= range_end) count--; - tail++; - } - XP_ASSERT (count >= 0); - } - return count; -} - - -int -msg_NewsArtSet::FirstMissingRange(int32 min, int32 max, - int32* first, int32* last) -{ - int32 size; - int32 *head; - int32 *tail; - int32 *end; - int32 from = 0; - int32 to = 0; - int32 a; - int32 b; - - XP_ASSERT(first && last); - if (!first || !last) return -1; - - *first = *last = 0; - - XP_ASSERT(min <= max && min > 0); - if (min > max || min <= 0) return -1; - - size = m_length; - head = m_data; - tail = head; - end = head + size; - - while (tail < end) { - a = to + 1; - if (*tail < 0) { /* We got a range. */ - from = tail[1]; - to = from + (-(tail[0])); - tail += 2; - } else { - from = to = tail[0]; - tail++; - } - b = from - 1; - /* At this point, [a,b] is the range of unread articles just before - the current range of read articles [from,to]. See if this range - intersects the [min,max] range we were given. */ - if (a > max) return 0; /* It's hopeless; there are none. */ - if (a <= b && b >= min) { - /* Ah-hah! We found an intersection. */ - *first = a > min ? a : min; - *last = b < max ? b : max; - return 0; - } - } - /* We found no holes in the newsrc that overlaps the range, nor did we hit - something read beyond the end of the range. So, the great infinite - range of unread articles at the end of any newsrc line intersects the - range we want, and we just need to return that. */ - a = to + 1; - *first = a > min ? a : min; - *last = max; - return 0; -} - -// I'm guessing we didn't include this because we didn't think we're going -// to need it. I'm not so sure. I'm putting it in for now. -int -msg_NewsArtSet::LastMissingRange(int32 min, int32 max, - int32* first, int32* last) -{ - int32 size; - int32 *head; - int32 *tail; - int32 *end; - int32 from = 0; - int32 to = 0; - int32 a; - int32 b; - - XP_ASSERT(first && last); - if (!first || !last) return -1; - - *first = *last = 0; - - - XP_ASSERT(min <= max && min > 0); - if (min > max || min <= 0) return -1; - - size = m_length; - head = m_data; - tail = head; - end = head + size; - - while (tail < end) { - a = to + 1; - if (*tail < 0) { /* We got a range. */ - from = tail[1]; - to = from + (-(tail[0])); - tail += 2; - } else { - from = to = tail[0]; - tail++; - } - b = from - 1; - /* At this point, [a,b] is the range of unread articles just before - the current range of read articles [from,to]. See if this range - intersects the [min,max] range we were given. */ - if (a > max) return 0; /* We're done. If we found something, it's already - sitting in [*first,*last]. */ - if (a <= b && b >= min) { - /* Ah-hah! We found an intersection. */ - *first = a > min ? a : min; - *last = b < max ? b : max; - /* Continue on, looking for a later range. */ - } - } - if (to < max) { - /* The great infinite range of unread articles at the end of any newsrc - line intersects the range we want, and we just need to return that. */ - a = to + 1; - *first = a > min ? a : min; - *last = max; - } - return 0; -} - - - - -#ifdef DEBUG /* A lot of test cases for the above */ - -#define countof(x) (sizeof(x) / sizeof(*(x))) - -void -msg_NewsArtSet::test_decoder (const char *string) -{ - msg_NewsArtSet set(string, NULL); - char* tmp = set.Output(); - printf ("\t\"%s\"\t--> \"%s\"\n", string, tmp); - delete [] tmp; -} - - -#define START(STRING) \ - string = STRING; \ - if (!(set = msg_NewsArtSet::Create(string))) abort () - -#define FROB(N,PUSHP) \ - i = N; \ - if (!(s = set->Output())) abort (); \ - printf ("%3lu: %-58s %c %3lu =\n", set->m_length, s, \ - (PUSHP ? '+' : '-'), i); \ - delete [] s; \ - if (PUSHP \ - ? set->Add(i) < 0 \ - : set->Remove(i) < 0) \ - abort (); \ - if (! (s = set->Output())) abort (); \ - printf ("%3lu: %-58s optimized =\n", set->m_length, s); \ - XP_FREE (s); \ - -#define END() \ - if (!(s = set->Output())) abort (); \ - printf ("%3lu: %s\n\n", set->m_length, s); \ - delete [] s; \ - delete set; \ - - - -void -msg_NewsArtSet::test_adder (void) -{ - char *string; - msg_NewsArtSet *set; - char *s; - int32 i; - - START("0-70,72-99,105,107,110-111,117-200"); - - FROB(205, TRUE); - FROB(206, TRUE); - FROB(207, TRUE); - FROB(208, TRUE); - FROB(208, TRUE); - FROB(109, TRUE); - FROB(72, TRUE); - - FROB(205, FALSE); - FROB(206, FALSE); - FROB(207, FALSE); - FROB(208, FALSE); - FROB(208, FALSE); - FROB(109, FALSE); - FROB(72, FALSE); - - FROB(72, TRUE); - FROB(109, TRUE); - FROB(208, TRUE); - FROB(208, TRUE); - FROB(207, TRUE); - FROB(206, TRUE); - FROB(205, TRUE); - - FROB(205, FALSE); - FROB(206, FALSE); - FROB(207, FALSE); - FROB(208, FALSE); - FROB(208, FALSE); - FROB(109, FALSE); - FROB(72, FALSE); - - FROB(100, TRUE); - FROB(101, TRUE); - FROB(102, TRUE); - FROB(103, TRUE); - FROB(106, TRUE); - FROB(104, TRUE); - FROB(109, TRUE); - FROB(108, TRUE); - END(); - - START("1-6"); FROB(7, FALSE); END(); - START("1-6"); FROB(6, FALSE); END(); - START("1-6"); FROB(5, FALSE); END(); - START("1-6"); FROB(4, FALSE); END(); - START("1-6"); FROB(3, FALSE); END(); - START("1-6"); FROB(2, FALSE); END(); - START("1-6"); FROB(1, FALSE); END(); - START("1-6"); FROB(0, FALSE); END(); - - START("1-3"); FROB(1, FALSE); END(); - START("1-3"); FROB(2, FALSE); END(); - START("1-3"); FROB(3, FALSE); END(); - - START("1,3,5-7,9,10"); FROB(5, FALSE); END(); - START("1,3,5-7,9,10"); FROB(6, FALSE); END(); - START("1,3,5-7,9,10"); FROB(7, FALSE); FROB(7, TRUE); FROB(8, TRUE); - FROB (4, TRUE); FROB (2, FALSE); FROB (2, TRUE); - - FROB (4, FALSE); FROB (5, FALSE); FROB (6, FALSE); FROB (7, FALSE); - FROB (8, FALSE); FROB (9, FALSE); FROB (10, FALSE); FROB (3, FALSE); - FROB (2, FALSE); FROB (1, FALSE); FROB (1, FALSE); FROB (0, FALSE); - END(); -} - -#undef START -#undef FROB -#undef END - - - -#define START(STRING) \ - string = STRING; \ - if (!(set = msg_NewsArtSet::Create(string))) abort () - -#define FROB(N,M) \ - i = N; \ - j = M; \ - if (!(s = set->Output())) abort (); \ - printf ("%3lu: %-58s + %3lu-%3lu =\n", set->m_length, s, i, j); \ - delete [] s; \ - switch (set->AddRange(i, j)) { \ - case 0: \ - printf("(no-op)\n"); \ - break; \ - case 1: \ - break; \ - default: \ - abort(); \ - } \ - if (!(s = set->Output())) abort (); \ - printf ("%3lu: %-58s\n", set->m_length, s); \ - XP_FREE (s); \ - - -#define END() \ - if (!(s = set->Output())) abort (); \ - printf ("%3lu: %s\n\n", set->m_length, s); \ - delete [] s; \ - delete set; - - -void -msg_NewsArtSet::test_ranges(void) -{ - char *string; - msg_NewsArtSet *set; - char *s; - int32 i; - int32 j; - - START("20-40,72-99,105,107,110-111,117-200"); - - FROB(205, 208); - FROB(50, 70); - FROB(0, 10); - FROB(112, 113); - FROB(101, 101); - FROB(5, 75); - FROB(103, 109); - FROB(2, 20); - FROB(1, 9999); - - END(); - - -#undef START -#undef FROB -#undef END -} - - - - -#define TEST(N) \ - if (! with_cache) set->m_cached_value = -1; \ - if (!(s = set->Output())) abort (); \ - printf (" %3d = %s\n", N, \ - (set->IsMember(N) ? "true" : "false")); \ - delete [] s - -void -msg_NewsArtSet::test_member(XP_Bool with_cache) -{ - msg_NewsArtSet *set; - char *s; - - s = "1-70,72-99,105,107,110-111,117-200"; - printf ("\n\nTesting %s (with%s cache)\n", s, with_cache ? "" : "out"); - if (!(set = Create(s))) { - abort (); - } - - TEST(-1); - TEST(0); - TEST(1); - TEST(20); - - delete set; - s = "0-70,72-99,105,107,110-111,117-200"; - printf ("\n\nTesting %s (with%s cache)\n", s, with_cache ? "" : "out"); - if (!(set = Create(s))) { - abort (); - } - - TEST(-1); - TEST(0); - TEST(1); - TEST(20); - TEST(69); - TEST(70); - TEST(71); - TEST(72); - TEST(73); - TEST(74); - TEST(104); - TEST(105); - TEST(106); - TEST(107); - TEST(108); - TEST(109); - TEST(110); - TEST(111); - TEST(112); - TEST(116); - TEST(117); - TEST(118); - TEST(119); - TEST(200); - TEST(201); - TEST(65535); - - delete set; -} - -#undef TEST - - -// static void -// test_newsrc (char *file) -// { -// FILE *fp = fopen (file, "r"); -// char buf [1024]; -// if (! fp) abort (); -// while (fgets (buf, sizeof (buf), fp)) -// { -// if (!strncmp (buf, "options ", 8)) -// fwrite (buf, 1, strlen (buf), stdout); -// else -// { -// char *sep = buf; -// while (*sep != 0 && *sep != ':' && *sep != '!') -// sep++; -// if (*sep) sep++; -// while (isspace (*sep)) sep++; -// fwrite (buf, 1, sep - buf, stdout); -// if (*sep) -// { -// char *s; -// msg_NewsRCSet *set = msg_parse_newsrc_set (sep, &allocinfo); -// if (! set) -// abort (); -// if (! msg_OptimizeNewsRCSet (set)) -// abort (); -// if (! ((s = msg_format_newsrc_set (set)))) -// abort (); -// msg_free_newsrc_set (set, &allocinfo); -// fwrite (s, 1, strlen (s), stdout); -// free (s); -// fwrite ("\n", 1, 1, stdout); -// } -// } -// } -// fclose (fp); -// } - -void -msg_NewsArtSet::RunTests () -{ - - test_decoder (""); - test_decoder (" "); - test_decoder ("0"); - test_decoder ("1"); - test_decoder ("123"); - test_decoder (" 123 "); - test_decoder (" 123 4"); - test_decoder (" 1,2, 3, 4"); - test_decoder ("0-70,72-99,100,101"); - test_decoder (" 0-70 , 72 - 99 ,100,101 "); - test_decoder ("0 - 268435455"); - /* This one overflows - we can't help it. - test_decoder ("0 - 4294967295"); */ - - test_adder (); - - test_ranges(); - - test_member (FALSE); - test_member (TRUE); - - // test_newsrc ("/u/montulli/.newsrc"); - /* test_newsrc ("/u/jwz/.newsrc");*/ -} - -#endif /* DEBUG */ diff --git a/mozilla/lib/libmsg/newsset.h b/mozilla/lib/libmsg/newsset.h deleted file mode 100644 index 05933970692..00000000000 --- a/mozilla/lib/libmsg/newsset.h +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _NewsSet_H_ -#define _NewsSet_H_ - -// msg_NewsArtSet represents a set of articles. Typically, it is the set of -// read articles from a .newsrc file, but it can be used for other purposes -// too. - -// If a MSG_NewsHost* is supplied to the creation routine, then that -// MSG_NewsHost will be notified whwnever a change is made to set. - -class MSG_NewsHost; - -class msg_NewsArtSet { -public: - // Creates an empty set. - static msg_NewsArtSet* Create(MSG_NewsHost* host = NULL); - - // Creates a set from the list of numbers, as might be found in a - // newsrc file. - static msg_NewsArtSet* Create(const char* str, MSG_NewsHost* host = NULL); - ~msg_NewsArtSet(); - - // FirstNonMember() returns the lowest non-member of the set that is - // greater than 0. - int32 FirstNonMember(); - - // Output() converts to a string representation suitable for writing to a - // .newsrc file. (The result must be freed by the caller using delete[].) - char* Output(); - - // IsMember() returns whether the given article is a member of this set. - XP_Bool IsMember(int32 art); - - // Add() adds the given article to the set. (Returns 1 if a change was - // made, 0 if it was already there, and negative on error.) - int Add(int32 art); - - // Remove() removes the given article from the set. - int Remove(int32 art); - - // AddRange() adds the (inclusive) given range of articles to the set. - int AddRange(int32 first, int32 last); - - // CountMissingInRange() takes an inclusive range of articles and returns - // the number of articles in that range which are not in the set. - int32 CountMissingInRange(int32 start, int32 end); - - // FirstMissingRange() takes an inclusive range and finds the first range - // of articles that are not in the set. If none, return zeros. - int FirstMissingRange(int32 min, int32 max, int32* first, int32* last); - - - // LastMissingRange() takes an inclusive range and finds the last range - // of articles that are not in the set. If none, return zeros. - int LastMissingRange(int32 min, int32 max, int32* first, int32* last); - - int32 GetLastMember(); - int32 GetFirstMember(); - void SetLastMember(int32 highWaterMark); - // For debugging only... - int32 getLength() {return m_length;} - -#ifdef DEBUG - static void RunTests(); -#endif - -protected: - msg_NewsArtSet(MSG_NewsHost* host); - msg_NewsArtSet(const char*, MSG_NewsHost* host); - XP_Bool Grow(); - XP_Bool Optimize(); - -#ifdef DEBUG - static void test_decoder(const char*); - static void test_adder(); - static void test_ranges(); - static void test_member(XP_Bool with_cache); -#endif - - int32 *m_data; /* the numbers composing the `chunks' */ - int32 m_data_size; /* size of that malloc'ed block */ - int32 m_length; /* active area */ - - int32 m_cached_value; /* a potential set member, or -1 if unset*/ - int32 m_cached_value_index; /* the index into `data' at which a search - to determine whether `cached_value' was - a member of the set ended. */ - MSG_NewsHost* m_host; -}; - - -#endif /* _NewsSet_H_ */ diff --git a/mozilla/lib/libmsg/nwsartst.cpp b/mozilla/lib/libmsg/nwsartst.cpp deleted file mode 100644 index f5534fed470..00000000000 --- a/mozilla/lib/libmsg/nwsartst.cpp +++ /dev/null @@ -1,654 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "nwsartst.h" -#include "newshdr.h" -#include "newsdb.h" -#include "xpgetstr.h" -#include "maildb.h" -#include "newspane.h" -#include "mailhdr.h" -#include "msgfinfo.h" -#include "pmsgsrch.h" -#include "prsembst.h" -#include "msgdbapi.h" - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_ERROR_WRITING_MAIL_FOLDER; - extern int MK_MSG_DOWNLOAD_COUNT; - extern int MK_MSG_RETRIEVING_ARTICLE; - extern int MK_MSG_RETRIEVING_ARTICLE_OF; - extern int MK_MSG_ARTICLES_TO_RETRIEVE; - extern int MK_NNTP_SERVER_ERROR; -} - - -class MSG_FolderInfo; - -// This file contains the news article download state machine. - -extern "C" NET_StreamClass * -msg_MakeAppendToFolderStream (int /*format_out*/, void * /*closure*/, - URL_Struct *url, MWContext *context) -{ - NET_StreamClass *stream; - - TRACEMSG(("Setting up attachment stream. Have URL: %s\n", url->address)); - - stream = XP_NEW (NET_StreamClass); - if (!stream) return 0; - XP_MEMSET (stream, 0, sizeof (NET_StreamClass)); - - stream->name = "Folder Append Stream"; - stream->complete = DownloadArticleState::MSG_SaveToStreamComplete; - stream->abort = DownloadArticleState::MSG_SaveToStreamAbort; - stream->put_block = DownloadArticleState::MSG_SaveToStreamWrite; - stream->is_write_ready = DownloadArticleState::MSG_SaveToStreamWriteReady; - stream->data_object = url->fe_data; - stream->window_id = context; - - TRACEMSG(("Returning stream from msg_MakeAppendToFolderStream")); - - return stream; -} - -// if pIds is not null, download the articles whose id's are passed in. Otherwise, -// which articles to download is determined by DownloadArticleState object, -// or subclasses thereof. News can download marked objects, for example. -int DownloadArticleState::DownloadArticles(MSG_FolderInfo *folder, MWContext *context, IDArray *pIds) -{ - if (pIds != NULL) - m_keysToDownload.InsertAt(0, pIds); - - if (m_keysToDownload.GetSize() > 0) - m_downloadFromKeys = TRUE; - - m_folder = folder; - m_context = context; - - if (GetNextHdrToRetrieve() != eSUCCESS) - return MK_CONNECTED; - - return DownloadNext(TRUE, context); -} - -/* Saving news messages - */ - -DownloadArticleState::DownloadArticleState(int (*doneCB)(void *, int), void *state, MessageDB *msgDB) -{ - m_numwrote = 0; - m_finalExit = 0; - m_downloadFromKeys = FALSE; - m_doneCB = doneCB; - m_doneCBState = state; - m_newsDB = msgDB; - if (m_newsDB) // acquire our ref count so it can't go away on us..Bug #97825 - m_newsDB->AddUseCount(); -} - -DownloadArticleState::~DownloadArticleState() -{ - if (m_doneCB) - (*m_doneCB)(m_doneCBState, m_status); - if (m_newsDB) - { - m_newsDB->Close(); - m_newsDB = NULL; - } -} - -int DownloadArticleState::DownloadNext(XP_Bool firstTimeP, MWContext *context) -{ - URL_Struct *url_struct = NULL; - -// if (GetNextHdrToRetrieve() != eSUCCESS) -// return 0; - char *url = m_folder->BuildUrl(m_newsDB, m_keyToDownload); - m_numwrote++; - if (url) - url_struct = NET_CreateURLStruct (url, NET_DONT_RELOAD); - if (!url_struct || !url) return MK_OUT_OF_MEMORY; - - StartDownload(); - if (firstTimeP) - { - XP_ASSERT (!m_finalExit); - FE_SetWindowLoading (context, url_struct, &m_finalExit); - XP_ASSERT (m_finalExit); - } - url_struct->fe_data = (void *) this; - m_wroteAnyP = FALSE; -#ifdef DEBUG_bienvenu -// XP_Trace("downloading %s\n", url); -#endif - NET_GetURL (url_struct, FO_CACHE_AND_APPEND_TO_FOLDER, - context, DownloadArticleState::MSG_SaveNextExit); - XP_FREE (url); - - return 0; -} - -MsgERR DownloadNewsArticlesToNewsDB::GetNextHdrToRetrieve() -{ - MsgERR dbErr; - - if (m_downloadFromKeys) - return DownloadArticleState::GetNextHdrToRetrieve(); - - while (TRUE) - { - if (m_listContext == NULL) - dbErr = m_newsDB->ListFirst (&m_listContext, (DBMessageHdr **) &m_newsHeader); - else - dbErr = m_newsDB->ListNext(m_listContext, (DBMessageHdr **) &m_newsHeader); - - if (dbErr == eDBEndOfList) - break; - if (m_newsHeader->GetFlags() & kMsgMarked) - { - m_keyToDownload = m_newsHeader->GetMessageKey(); - char *statusTemplate = XP_GetString (MK_MSG_RETRIEVING_ARTICLE); - char *statusString = PR_smprintf (statusTemplate, m_numwrote); - if (statusString) - { - FE_Progress (m_context, statusString); - XP_FREE(statusString); - } - break; - } - else - { - delete m_newsHeader; - m_newsHeader = NULL; - } - } - if (m_newsHeader && m_dbWriteDocument) - MSG_OfflineMsgDocumentHandle_SetMsgHeaderHandle(m_dbWriteDocument, m_newsHeader, m_newsDB->GetDB()); - return dbErr; -} - -void DownloadArticleState::Abort() {} -void DownloadArticleState::Complete() {} - -/* static */ void DownloadArticleState::MSG_SaveNextExit(URL_Struct *url , int status, MWContext *context) -{ - DownloadArticleState *downloadState = - (DownloadArticleState *) url->fe_data; - - XP_ASSERT (downloadState); - if (!downloadState) return; - - if (!downloadState->SaveExit(url, status, context)) - delete downloadState; -} - -MsgERR DownloadArticleState::GetNextHdrToRetrieve() -{ - if (m_downloadFromKeys) - { - if (m_numwrote >= (int32) m_keysToDownload.GetSize()) - return eDBEndOfList; - m_keyToDownload = m_keysToDownload.GetAt(m_numwrote); -#ifdef DEBUG_bienvenu -// XP_Trace("downloading %ld index = %ld\n", m_keyToDownload, m_numwrote); -#endif - char *statusTemplate = XP_GetString (MK_MSG_RETRIEVING_ARTICLE_OF); - char *statusString = PR_smprintf (statusTemplate, m_numwrote, (long) m_keysToDownload.GetSize(), m_folder->GetPrettiestName()); - if (statusString) - { - FE_Progress (m_context, statusString); - XP_FREE(statusString); - } - - int32 percent; - percent = (100L * m_numwrote) / (uint32) m_keysToDownload.GetSize(); - FE_SetProgressBarPercent (m_context, percent); - return eSUCCESS; - } - XP_ASSERT(FALSE); - return eBAD_PARAMETER; // shouldn't get here if we're not downloading from keys. -} - -XP_Bool DownloadArticleState::SaveExit(URL_Struct *url, int status, MWContext *context) -{ - - char *statusTemplate = XP_GetString (MK_MSG_DOWNLOAD_COUNT); - char *statusString = PR_smprintf (statusTemplate, (long)m_numwrote, (long)m_keysToDownload.GetSize()); - - FE_Progress (context, statusString); - XP_FREE(statusString); - - m_status = status; - // we should try to go on from server error in case it's an article not found error. - if ((status < 0 && status != MK_NNTP_SERVER_ERROR) || (GetNextHdrToRetrieve() != eSUCCESS)) - { - FAIL: - status = FinishDownload(); - if (m_finalExit) // call exit routine - m_finalExit (url, status, context); - - return FALSE; - } - else - { - status = DownloadNext(FALSE, context); - if (status < 0) goto FAIL; - return TRUE; - } -} - -XP_Bool DownloadNewsArticlesToNewsDB::SaveExit(URL_Struct *url, int status, MWContext *context) -{ - m_status = status; - if (m_newsHeader != NULL) - { -#ifdef DEBUG_bienvenu -// XP_Trace("finished retrieving %ld\n", m_newsHeader->GetMessageKey()); -#endif - if (m_newsDB) - { - m_newsDB->MarkOffline(m_newsHeader->GetMessageKey(), TRUE, NULL); - m_newsDB->MarkMarked(m_newsHeader->GetMessageKey(), FALSE, NULL); - m_newsDB->Commit(); - } - delete m_newsHeader; - } - m_newsHeader = NULL; - return DownloadArticleState::SaveExit(url, status, context); -} - -int DownloadArticlesToFolder::FinishDownload() -{ - int status = 0; - MsgERR err = eSUCCESS; - if (XP_FileClose(m_outFp) != 0) - { - if (status >= 0) - status = MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - - if (m_dstDatabase) - { - if (m_summaryValidP) - m_dstDatabase->SetFolderInfoValid(m_fileName, 0, 0); - err = m_dstDatabase->Close(); - m_dstDatabase = NULL; - } - - FREEIF (m_fileName); - - err = m_newsDB->Close(); /* Don't close DB, because creator is responsible for it. */ - m_newsDB = NULL; - if (m_dstFolder) - m_dstFolder->ReleaseSemaphore(this); - - return ConvertMsgErrToMKErr(err); -} - -int DownloadNewsArticlesToNewsDB::FinishDownload() -{ -/* MsgERR err = m_newsDB->Close(); Don't close DB, because creator is responsible for it. */ - return 0; -} - - -/*static*/ unsigned int -DownloadArticleState::MSG_SaveToStreamWriteReady(NET_StreamClass* /*stream*/) -{ - return MAX_WRITE_READY; -} - -/*static*/ void DownloadArticleState::AddKeyToDownload(void *state, MessageKey key) -{ - DownloadArticleState *newsArticleState = (DownloadArticleState *) state; - if (newsArticleState != NULL) - { - // only need to download articles we don't already have... - if (!newsArticleState->m_newsDB->GetNewsDB()->IsArticleOffline(key)) - { - newsArticleState->m_keysToDownload.Add(key); - char *statusTemplate = XP_GetString (MK_MSG_ARTICLES_TO_RETRIEVE); - char *statusString = PR_smprintf (statusTemplate, (long) newsArticleState->m_keysToDownload.GetSize()); - if (statusString) - { - FE_Progress (newsArticleState->m_context, statusString); - XP_FREE(statusString); - } - } - } -} - -/*static*/ void DownloadArticleState::MSG_SaveToStreamComplete(NET_StreamClass *stream) -{ - DownloadArticleState *newsArticleState = (DownloadArticleState *) stream->data_object; - newsArticleState->Complete(); -} - -/*static*/ void DownloadArticleState::MSG_SaveToStreamAbort (NET_StreamClass *stream, int /*status*/) -{ - DownloadArticleState *newsArticleState = (DownloadArticleState *) stream->data_object; - if (newsArticleState) - { - newsArticleState->Abort(); - } -} - -/*static*/ int DownloadArticleState::MSG_SaveToStreamWrite (NET_StreamClass *stream, const char *block, int32 length) -{ - DownloadArticleState *newsArticleState = (DownloadArticleState *) stream->data_object; - - if (newsArticleState != 0) - return newsArticleState->Write(block, length); - - return 0; -} - -int DownloadNewsArticlesToNewsDB::StartDownload() -{ - delete m_newsHeader; - m_newsHeader = (NewsMessageHdr *) m_newsDB->GetDBHdrForKey(m_keyToDownload); - if (m_dbWriteDocument) - MSG_OfflineMsgDocumentHandle_SetMsgHeaderHandle(m_dbWriteDocument, m_newsHeader, m_newsDB->GetDB()); - return 0; -} - -int DownloadNewsArticlesToNewsDB::Write(const char *block, int32 length) -{ - int32 ret = 0; - - if (m_newsHeader != NULL) - { - - ret = MSG_OfflineMsgDocumentHandle_AddToOfflineMessage(m_dbWriteDocument, block, length); -// ret = m_newsHeader->AddToArticle(block, length, m_newsDB->GetDB()); - if (ret > 0) - ret = 0; - else - ret = MK_OUT_OF_MEMORY; - } - return ret; -} - -void DownloadNewsArticlesToNewsDB::Complete() -{ - MSG_OfflineMsgDocumentHandle_Complete(m_dbWriteDocument); -} - -DownloadArticlesToFolder::DownloadArticlesToFolder(int (*doneCB)(void *, int), void *state, MessageDB *msgDB) - : DownloadArticleState(doneCB, state, msgDB) -{ - m_dstFolder = NULL; - m_dstDatabase = NULL; - m_lastOffset = 0; - m_outgoingParser = NULL; -} - -DownloadArticlesToFolder::~DownloadArticlesToFolder() -{ - if (m_dstDatabase) - m_dstDatabase->Close (); -} - -XP_Bool DownloadArticlesToFolder::SaveExit(URL_Struct *url, int status, MWContext *context) -{ - // One message has just been copied into the mail folder, and its URL is done. - // Before we go on to the next message, get the DB header out of the news - // database and add it into the mail database - - m_status = status; - if (m_dstDatabase) - { - MailMessageHdr *dstHdr = NULL; - DBMessageHdr *srcHdr = m_newsDB->GetDBHdrForKey (m_keyToDownload); - if (m_outgoingParser) - { - m_outgoingParser->FlushOutputBuffer(); - dstHdr = m_outgoingParser->m_newMsgHdr; - if (srcHdr && dstHdr) - dstHdr->SetFlags(srcHdr->GetFlags()); - } - else - { - if (srcHdr) - dstHdr = new MailMessageHdr (); - if (dstHdr) - dstHdr->CopyFromMsgHdr (srcHdr, m_newsDB->GetDB(), m_dstDatabase->GetDB()); - } - if (dstHdr) - { - dstHdr->SetMessageKey (m_lastOffset); - int32 curPosition = ftell (m_outFp); - dstHdr->SetByteLength(curPosition - m_lastOffset); - dstHdr->SetMessageSize(dstHdr->GetByteLength()); - m_lastOffset = curPosition; - m_dstDatabase->AddHdrToDB (dstHdr, NULL, TRUE); - } - delete dstHdr; - } - return DownloadArticleState::SaveExit(url, status, context); -} - -DownloadNewsArticlesToNewsDB::DownloadNewsArticlesToNewsDB(int (*doneCB)(void *, int), void *state, MessageDB *msgDB) - : DownloadArticleState(doneCB, state, msgDB) -{ - m_listContext = NULL; - m_dbWriteDocument = MSG_OfflineMsgDocumentHandle_Create(msgDB->GetDB(), NULL); - m_newsDB = msgDB; -} - -DownloadNewsArticlesToNewsDB::~DownloadNewsArticlesToNewsDB() -{ - MSG_OfflineMsgDocumentHandle_Destroy(m_dbWriteDocument); -} - -int DownloadArticlesToFolder::DownloadNext(XP_Bool firstTimeP, MWContext *context) -{ - if (m_outgoingParser) - m_outgoingParser->Clear(); - return DownloadArticleState::DownloadNext(firstTimeP, context); -} - -/*static*/ int -DownloadArticlesToFolder::SaveMessages(IDArray *array, const char *file_name, - MSG_Pane *pane, MSG_FolderInfo *folder, MessageDB *msgDB, int (*doneCB)(void *, int), void *state) -{ - XP_File outFp = XP_FileOpen (file_name, xpMailFolder, XP_FILE_APPEND_BIN); - - if (!outFp) - return MK_MSG_ERROR_WRITING_MAIL_FOLDER; - - DownloadArticlesToFolder *downloadState = new DownloadArticlesToFolder(doneCB, state, msgDB); - if (downloadState) - { - downloadState->m_outFp = outFp; - downloadState->m_fileName = XP_STRDUP (file_name); - XP_FileSeek(outFp, 0, SEEK_END); - downloadState->m_lastOffset = XP_FileTell(outFp); - - // Find out whether the summary file for the destination is valid. - // We need this to know whether to re-validate it after adding headers - XP_StatStruct folderStat; - XP_Stat (file_name, &folderStat, xpMailFolder); - - // Find the destination folderInfo so we can make sure it's locked - // before we try to write anything into it. - MSG_FolderInfoMail *tree = pane->GetMaster()->GetLocalMailFolderTree(); - downloadState->m_dstFolder = tree->FindPathname (file_name); - - // if we're saving to a file, not a folder, m_dstFolder will be null, so we don't - // have to lock it. - - // Open the destination summary file so we know where to put - // the headers after the message has been copied. (if we have a folder) - if (downloadState->m_dstFolder) - { - downloadState->m_dstFolder->AcquireSemaphore (downloadState); - MsgERR err = MailDB::Open (file_name, FALSE, &downloadState->m_dstDatabase); - downloadState->m_summaryValidP = (err == eSUCCESS && downloadState->m_dstDatabase != NULL); - downloadState->m_outgoingParser = new ParseOutgoingMessage; - if (downloadState->m_outgoingParser) - { - downloadState->m_outgoingParser->SetOutFile(downloadState->m_outFp); - downloadState->m_outgoingParser->SetMailDB(downloadState->m_dstDatabase); - downloadState->m_outgoingParser->SetWriteToOutFile(TRUE); - } - } - - return downloadState->DownloadArticles(folder, pane->GetContext(), array); - } - else - return MK_OUT_OF_MEMORY; -} - -/*static*/ int DownloadNewsArticlesToNewsDB::SaveMessages(MWContext *context, MSG_FolderInfo *folder, MessageDB *newsDB, IDArray *pKeys) -{ - DownloadNewsArticlesToNewsDB *downloadState = new DownloadNewsArticlesToNewsDB(NULL, NULL, newsDB); - if (downloadState) - return downloadState->DownloadArticles(folder, context, pKeys); - else - return MK_OUT_OF_MEMORY; -} -/* static */ int DownloadNewsArticlesToNewsDB::DoIt(void *closure) -{ - int ret; - DownloadNewsArticlesToNewsDB *downloadState = (DownloadNewsArticlesToNewsDB *) closure; - ret = downloadState->DownloadArticles(downloadState->m_folder, - downloadState->m_context, NULL); - if (ret != 0) - delete downloadState; - return ret; -} - -/*static*/ int DownloadMatchingNewsArticlesToNewsDB::SaveMatchingMessages(MWContext *context, MSG_FolderInfo *folder, MessageDB *newsDB, - MSG_SearchTermArray &termArray, int (*doneCB)(void *, int), void *state) -{ - MSG_OfflineNewsSearchPane *searchPane = new MSG_OfflineNewsSearchPane(context, folder->GetMaster()); - DownloadMatchingNewsArticlesToNewsDB *downloadState = - new DownloadMatchingNewsArticlesToNewsDB(context, folder, newsDB, searchPane, termArray, doneCB, state); - - MSG_SearchAlloc(searchPane); - MSG_AddScopeTerm(searchPane, scopeOfflineNewsgroup, folder); - for (int i = 0; i < termArray.GetSize(); i++) - { - MSG_SearchTerm * term = (MSG_SearchTerm *) termArray.GetAt(i); - MSG_AddSearchTerm(searchPane, term->m_attribute, term->m_operator, &term->m_value, term->m_booleanOp, term->m_arbitraryHeader); - } - - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (searchPane); - URL_Struct *urlStruct = NET_CreateURLStruct ("search-libmsg:", NET_DONT_RELOAD); - frame->m_urlStruct = urlStruct; - // Set the internal_url flag so just in case someone else happens to have - // a search-libmsg URL, it won't fire my code, and surely crash. - urlStruct->internal_url = TRUE; - - searchPane->SetExitFunc(DownloadNewsArticlesToNewsDB::DoIt, downloadState); - searchPane->SetReportHitFunction(DownloadArticleState::AddKeyToDownload, downloadState); - if (MSG_Search(searchPane) != SearchError_Success) // we got a search error, but we should try to go on. - { - XP_ASSERT(FALSE); - return 0; - } - return 0; -} - -DownloadMatchingNewsArticlesToNewsDB::DownloadMatchingNewsArticlesToNewsDB - (MWContext *context, MSG_FolderInfo *folder, MessageDB *newsDB, - MSG_OfflineNewsSearchPane *searchPane, - MSG_SearchTermArray & /*termArray*/, - int (*doneCB)(void *, int), void *state) : DownloadNewsArticlesToNewsDB(doneCB, state, newsDB) -{ - m_context = context; - m_folder = folder; - m_newsDB = newsDB; - m_searchPane = searchPane; - m_downloadFromKeys = TRUE; // search term matching means downloadFromKeys. -} - -DownloadMatchingNewsArticlesToNewsDB::~DownloadMatchingNewsArticlesToNewsDB() -{ - MSG_SearchFree (m_searchPane); - delete m_searchPane; -} - - -int DownloadArticlesToFolder::Write(const char *block, int32 length) -{ - int32 len = 0; - - // Make sure we have the folder locked before we scribble on it - // If it is a folder. If it's not (e.g., just a save as file), we can't - // get a MSG_FolderInfo * in the first place... - XP_Bool locked = (m_dstFolder) ? m_dstFolder->TestSemaphore(this) : TRUE; - XP_ASSERT(locked); - if (!locked) - return -1; - - /* We implicitly assume that the data we're getting is already following - the local line termination conventions; the NNTP module has already - converted from CRLF to the local linebreak for us. */ - - if (!m_wroteAnyP) - { - const char *envelope = msg_GetDummyEnvelope(); - - m_existedP = TRUE; - if (m_outgoingParser) - m_outgoingParser->StartNewEnvelope(envelope, XP_STRLEN(envelope)); - else - { - len = XP_FileWrite (envelope, XP_STRLEN (envelope), m_outFp); - if (len != XP_STRLEN(envelope)) - return len; - } - m_wroteAnyP = TRUE; - } - -#ifdef MANGLE_INTERNAL_ENVELOPE_LINES - /* Since we're writing a mail folder, we must follow the Usual Mangling - Conventions. #### Note: this assumes that `block' contains just - a single line, which is the case since this is only invoked on the - result of an NNTP stream, which does line buffering. - - Note: it is correct to mangle all lines beginning with "From ", - not just those that look like parsable message delimiters. - Other software expects this. - */ - - if (block[0] == 'F' && !XP_STRNCMP (block, "From ", 5)) - { - len = XP_FileWrite (">", 1, m_outFp); - if (len != 1) - return len; - m_outgoingParser->m_position += 1; - } -#endif /* MANGLE_INTERNAL_ENVELOPE_LINES */ - - if (m_outgoingParser) - return m_outgoingParser->ParseBlock(block, length); - else - return XP_FileWrite(block, length, m_outFp); -} - diff --git a/mozilla/lib/libmsg/nwsartst.h b/mozilla/lib/libmsg/nwsartst.h deleted file mode 100644 index 81043ee39a9..00000000000 --- a/mozilla/lib/libmsg/nwsartst.h +++ /dev/null @@ -1,132 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef NewsArtState_H -#define NewsArtState_H - -class MailDB; -class MessageDB; -class NewsMessageHdr; -class MSG_SearchTermArray; -class MSG_OfflineNewsSearchPane; -class ParseOutgoingMessage; - -struct ListContext; -#include "idarray.h" -#include "msgzap.h" -#include "dberror.h" -#include "msgdbtyp.h" - -class DownloadArticleState : public MSG_ZapIt -{ -public: - DownloadArticleState(int (*doneCB)(void *, int), void *state, MessageDB *msgDB); - virtual ~DownloadArticleState(); - - virtual int DownloadArticles(MSG_FolderInfo *folder, MWContext *context, IDArray *pKeyArray); - static unsigned int MSG_SaveToStreamWriteReady (NET_StreamClass *stream); - static void MSG_SaveToStreamComplete(NET_StreamClass *stream); - static void MSG_SaveToStreamAbort (NET_StreamClass *stream, int status); - static int MSG_SaveToStreamWrite (NET_StreamClass *stream, const char *block, int32 length); - static void MSG_SaveNextExit(URL_Struct *, int, MWContext *); - static void AddKeyToDownload(void *state, MessageKey key); -protected: - virtual int Write(const char * /*block*/, int32 length) {return length;} - virtual void Abort(); - virtual void Complete(); - virtual XP_Bool SaveExit(URL_Struct *, int, MWContext *); - virtual MsgERR GetNextHdrToRetrieve(); - virtual int DownloadNext(XP_Bool firstTimeP, MWContext *); - virtual int FinishDownload() {return 0;} - virtual int StartDownload() {return 0;} - - IDArray m_keysToDownload; - XP_Bool m_downloadFromKeys; - MSG_FolderInfo *m_folder; - MessageDB *m_newsDB; - MWContext *m_context; - XP_Bool m_existedP; - XP_Bool m_wroteAnyP; - XP_Bool m_summaryValidP; - int32 m_numwrote; - Net_GetUrlExitFunc *m_finalExit; - MessageKey m_keyToDownload; - int m_status; - int (*m_doneCB)(void *, int status); - void *m_doneCBState; -}; - -class DownloadArticlesToFolder: public DownloadArticleState -{ -public: - DownloadArticlesToFolder(int (*doneCB)(void *, int status), void *state, MessageDB *msgDB); - virtual ~DownloadArticlesToFolder(); - static int SaveMessages(IDArray*, const char *file_name, MSG_Pane *pane, - MSG_FolderInfo *folder, MessageDB *newsDB, int (*doneCB)(void *, int status) = NULL, void *state = NULL); -protected: - char *m_fileName; - XP_File m_outFp; - MSG_FolderInfo *m_dstFolder; - int m_lastOffset; - MailDB *m_dstDatabase; - ParseOutgoingMessage *m_outgoingParser; - - virtual int Write(const char *block, int32 length); - virtual int FinishDownload(); - virtual int DownloadNext(XP_Bool firstTimeP, MWContext *context); - virtual XP_Bool SaveExit(URL_Struct *, int, MWContext *); -}; - -class DownloadNewsArticlesToNewsDB : public DownloadArticleState -{ -public: - DownloadNewsArticlesToNewsDB(int (*doneCB)(void *, int status), void *state, MessageDB *newsDB); - virtual ~DownloadNewsArticlesToNewsDB(); - -static int SaveMessages(MWContext *context, MSG_FolderInfo *folder, MessageDB *newsDB); -static int SaveMessages(MWContext *context, MSG_FolderInfo *folder, MessageDB *newsDB, IDArray *pKeys); -static int DoIt(void *closure); -protected: - virtual int Write(const char *block, int32 length); - virtual void Complete(); - virtual XP_Bool SaveExit(URL_Struct *url, int status, MWContext *context); - virtual int StartDownload(); - virtual int FinishDownload(); - virtual MsgERR GetNextHdrToRetrieve(); - - ListContext *m_listContext; - NewsMessageHdr *m_newsHeader; - MSG_OfflineMsgDocumentHandle m_dbWriteDocument; -}; - -class DownloadMatchingNewsArticlesToNewsDB : public DownloadNewsArticlesToNewsDB -{ -public: - DownloadMatchingNewsArticlesToNewsDB(MWContext *context, MSG_FolderInfo *folder, MessageDB *newsDB, - MSG_OfflineNewsSearchPane *searchPane, MSG_SearchTermArray &termArray, int (*doneCB)(void *, int status), void *state); - virtual ~DownloadMatchingNewsArticlesToNewsDB(); -static int SaveMatchingMessages(MWContext *context, MSG_FolderInfo *folder, MessageDB *newsDB, - MSG_SearchTermArray &termArray, int (*doneCB)(void *, int status), void *state); -protected: - MSG_OfflineNewsSearchPane *m_searchPane; -}; - -#endif diff --git a/mozilla/lib/libmsg/pmsgfilt.h b/mozilla/lib/libmsg/pmsgfilt.h deleted file mode 100644 index f8b8ad8facd..00000000000 --- a/mozilla/lib/libmsg/pmsgfilt.h +++ /dev/null @@ -1,226 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* pmsgfilt.h - Private filter definitions */ - -/* Private API for filtering mail and news */ - -#ifndef _PMSGFILT_H -#define _PMSGFILT_H - -#include "msg_filt.h" -#include "msg_opaq.h" -#include "pmsgsrch.h" - -class XPStringObj; - -typedef enum -{ - filterAttribNone, - filterAttribVersion, - filterAttribLogging, - filterAttribName, - filterAttribEnabled, - filterAttribDescription, - filterAttribType, - filterAttribScriptFile, - filterAttribAction, - filterAttribActionValue, - filterAttribCondition -} FilterFileAttrib; - - -struct MSG_FilterList : public msg_OpaqueObject -{ -public: - MSG_FilterList (); - virtual ~MSG_FilterList (); -public: -static MSG_FilterError Open(MSG_Master *master, MSG_FilterType type, MSG_Pane *pane, MSG_FolderInfo *info, MSG_FilterList **filterList); -static MSG_FilterError Open(MSG_Master *master, MSG_FilterType type, MSG_FilterList **filterList); - MSG_FilterError Close(); - MSG_FilterError GetFilterCount(int32 *pCount); - MSG_FilterError InsertFilterAt(MSG_FilterIndex filterIndex, MSG_Filter *filter); - MSG_FilterError SetFilterAt(MSG_FilterIndex filterIndex, MSG_Filter *filter); - MSG_FilterError GetFilterAt(MSG_FilterIndex filterIndex, MSG_Filter **filter); - MSG_FilterError RemoveFilterAt(MSG_FilterIndex filterIndex); - MSG_FilterError MoveFilterAt(MSG_FilterIndex filterIndex, MSG_FilterMotion); - void EnableLogging(XP_Bool enable) {m_loggingEnabled = enable;} - XP_Bool IsLoggingEnabled() {return m_loggingEnabled;} - MSG_Master *GetMaster() {return m_master;} - int16 GetVersion() {return m_fileVersion;} - MSG_FilterError WriteIntAttr(XP_File fid, FilterFileAttrib attrib, int value); - MSG_FilterError WriteStrAttr(XP_File fid, FilterFileAttrib attrib, const char *str); - MSG_FilterError WriteBoolAttr(XP_File fid, FilterFileAttrib attrib, XP_Bool boolVal); - MSG_FolderInfo *GetFolderInfo() {return m_folderInfo;} -#ifdef DEBUG - void Dump(); -#endif -protected: - virtual uint32 GetExpectedMagic (); - MSG_FilterError SaveTextFilters(XP_File fid); - // file streaming methods - char ReadChar(XP_File fid); - XP_Bool IsWhitespace(char ch); - char SkipWhitespace(XP_File fid); - XP_Bool StrToBool(const char *str); - char LoadAttrib(XP_File fid, FilterFileAttrib &attrib); - const char *GetStringForAttrib(FilterFileAttrib attrib); - MSG_FilterError LoadValue(XP_File fid, XPStringObj &value); - MSG_FilterError LoadTextFilters(XP_File fid); - MSG_FilterError ParseCondition(const char *value); - - - XPPtrArray m_filters; - static uint32 m_expectedMagic; - int16 m_fileVersion; - XP_Bool m_loggingEnabled; - MSG_Master *m_master; - MSG_FolderInfo *m_folderInfo; - MSG_Pane *m_pane; - MSG_Filter *m_curFilter; // filter we're filing in or out(?) - const char *m_filterFileName; - XP_FileType m_fileType; -}; - -struct MSG_Filter : public msg_OpaqueObject -{ - friend struct MSG_FilterList; -public: - MSG_Filter (MSG_FilterType type, char *name); - MSG_Filter (); - virtual ~MSG_Filter (); - - MSG_FilterType GetType() {return m_type;} - void SetType(MSG_FilterType type) {m_type = type;} - void SetEnabled(XP_Bool enabled) {m_enabled = enabled;} - XP_Bool GetEnabled() {return m_enabled;} - MSG_FilterError GetRule(MSG_Rule **); - MSG_FilterError GetName(char **name); - MSG_FilterError SetName(const char *name); - MSG_FilterError GetFilterScript(char **name); - MSG_FilterError SetFilterScript(const char *name); - MSG_FilterError SetDescription(const char *desc); - MSG_FilterError GetDescription(char **desc); - void SetFilterList(MSG_FilterList *filterList) {m_filterList = filterList;} - XP_Bool IsRule() - {return (m_type & (filterInboxRule | filterNewsRule)) != 0;} - XP_Bool IsScript() {return (m_type & - (filterInboxJavaScript | filterNewsJavaScript)) != 0;} - MSG_FilterError SaveToTextFile(XP_File fid); - MSG_Master *GetMaster() {return (m_filterList) ? m_filterList->GetMaster() : 0;} - int16 GetVersion() {return (m_filterList) ? m_filterList->GetVersion() : 0;} - MSG_FilterList *GetFilterList() {return m_filterList;} - void SetDontFileMe(XP_Bool bDontFileMe) {m_dontFileMe = bDontFileMe;} -#ifdef DEBUG - void Dump(); -#endif - -protected: - virtual uint32 GetExpectedMagic (); - static uint32 m_expectedMagic; - MSG_FilterType m_type; - XP_Bool m_enabled; - char *m_filterName; - char *m_description; - struct MSG_FilterList *m_filterList; /* owning filter list */ - union - { - char *m_scriptFileName; /* if type == filterInboxJavaScript */ - MSG_Rule *m_rule; /* if type == filterInboxRule */ - } m_filter; - XP_Bool m_dontFileMe; -} ; - -inline uint32 MSG_Filter::GetExpectedMagic () -{ return m_expectedMagic; } - - -typedef struct MSG_RuleAction -{ - MSG_RuleActionType m_type; - union - { - MSG_PRIORITY m_priority; /* priority to set rule to */ - char *m_folderName; /* Or some folder identifier, if such a thing is invented */ - } m_value; - char *m_originalServerPath; -} MSG_RuleAction; - - - -struct MSG_Rule : public msg_OpaqueObject -{ - friend struct MSG_FilterList; -public: - MSG_Rule (MSG_Filter *); - virtual ~MSG_Rule (); - MSG_FilterError SaveToTextFile(XP_File fid); - MSG_FilterError GetAction(MSG_RuleActionType *type, void **value); - MSG_FilterError SetAction(MSG_RuleActionType type, void *value); - MSG_FilterError AddTerm( - MSG_SearchAttribute attrib, /* attribute for this term */ - MSG_SearchOperator op, /* operator e.g. opContains */ - MSG_SearchValue *value, - XP_Bool booleanAND, /* set to true if operator is AND */ - char * arbiraryHeader); /* user specified arbitrary header string. ignored unless attrib = attribOtherHeader */ - MSG_FilterError GetNumTerms(int32 *numTerms); - - MSG_FilterError GetTerm(int32 termIndex, - MSG_SearchAttribute *attrib, /* attribute for this term */ - MSG_SearchOperator *op, /* operator e.g. opContains */ - MSG_SearchValue *value, /* value e.g. "Dogbert" */ - XP_Bool * booleanAND, /* set to true if the operator is AND */ - char ** arbitraryHeader); /* user specified arbitrary header string. ignored unless attrib = attribOtherHeader */ - - // this is for rule execution, not editing. - MSG_SearchTermArray &GetTermList() {return m_termList;} - MSG_Filter *GetFilter() {return m_filter;} -static void InitActionsTable(); -static MSG_FilterError GetActionMenuItems( - MSG_FilterType type, - MSG_RuleMenuItem *items, /* array of caller-allocated structs */ - uint16 *maxItems); -static char *GetActionStr(MSG_RuleActionType action); -static const char *GetActionFilingStr(MSG_RuleActionType action); -static MSG_RuleActionType GetActionForFilingStr(const char *actionStr); -#ifdef DEBUG - void Dump(); -#endif -protected: - MSG_FilterError ConvertMoveToFolderValue(const char *relativePath); - MSG_Filter *m_filter; /* owning filter */ - MSG_SearchTermArray m_termList; /* linked list of criteria terms */ - MSG_ScopeTerm *m_scope; /* default for mail rules is inbox, but news rules could -have a newsgroup - LDAP would be invalid */ - MSG_RuleAction m_action; - - virtual uint32 GetExpectedMagic (); - static uint32 m_expectedMagic; - static const char *kImapPrefix; -} ; - -inline uint32 MSG_Rule::GetExpectedMagic () -{ return m_expectedMagic; } - - -#endif /* _PMSGFILT_H */ diff --git a/mozilla/lib/libmsg/pmsgsrch.h b/mozilla/lib/libmsg/pmsgsrch.h deleted file mode 100644 index 818cdb17eeb..00000000000 --- a/mozilla/lib/libmsg/pmsgsrch.h +++ /dev/null @@ -1,1013 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -// Private API for searching mail and news -// - -#ifndef _PMSGSRCH_H -#define _PMSGSRCH_H - -#include "msg_opaq.h" -#include "msg_srch.h" -#include "msglpane.h" -#include "dirprefs.h" -#include "newsdb.h" - -#ifdef MOZ_LDAP - typedef struct ldap LDAP; - typedef struct ldapmsg LDAPMessage; - typedef struct ldapvirtuallist LDAPVirtualList; -#endif - -#ifdef XP_CPLUSPLUS - struct MSG_ScopeTerm; - struct MSG_SearchTerm; - struct MSG_SearchFrame; -#else - typedef struct MSG_ScopeTerm MSG_ScopeTerm; - typedef struct MSG_SearchTerm MSG_SearchTerm; - typedef struct MSG_SearchFrame MSG_SearchFrame; -#endif - -class MSG_MessagePane; -class ParseMailboxState; -class LdapModifyBucket; -class MessageDB; -class DBMessageHdr; -struct DIR_Server; -struct MessageHdrStruct; -class MSG_FolderInfoNews; -class XPStringObj; -struct MSG_SearchView; -class AB_Pane; - -//--------------------------------------------------------------------------- -// Make our pointer arrays as type-safe as possible. -// Where are templates when you need them? -//--------------------------------------------------------------------------- - -class MSG_SearchTermArray : public XPPtrArray -{ -public: - MSG_SearchTerm *GetAt(int i) const { return (MSG_SearchTerm*) XPPtrArray::GetAt(i); } -}; - -class MSG_SearchValueArray : public XPPtrArray -{ -public: - MSG_SearchValue *GetAt(int i) const { return (MSG_SearchValue*) XPPtrArray::GetAt(i); } -}; - -class MSG_ScopeTermArray : public XPPtrArray -{ -public: - MSG_ScopeTerm *GetAt(int i) const { return (MSG_ScopeTerm*) XPPtrArray::GetAt(i); } -}; - -class MSG_SearchResultArray : public XPPtrArray -{ -public: - MSG_ResultElement *GetAt(int i) const { return (MSG_ResultElement*) XPPtrArray::GetAt(i); } -}; - -class MSG_SearchViewArray : public XPPtrArray -{ -public: - MSG_SearchView * GetAt(int i) const { return (MSG_SearchView *) XPPtrArray::GetAt(i);} -}; - -typedef enum {MSG_SearchBooleanOR, MSG_SearchBooleanAND} MSG_SearchBooleanOp; - -// constants used for online searching with IMAP/NNTP encoded search terms. -// the + 1 is to account for null terminators we add at each stage of assembling the expression... -const int sizeOfORTerm = 6+1; // 6 bytes if we are combining two sub expressions with an OR term -const int sizeOfANDTerm = 1+1; // 1 byte if we are combining two sub expressions with an AND term - -//----------------------------------------------------------------------------- -// CBoolExpression is a class added to provide AND/OR terms in search queries. -// A CBoolExpression contains either a search term or two CBoolExpressions and -// a boolean operator. -// I (mscott) am placing it here for now.... -//----------------------------------------------------------------------------- - -/* CBoolExpression --> encapsulates one or more search terms by internally representing - the search terms and their boolean operators as a binary expression tree. Each node - in the tree consists of either (1) a boolean operator and two CBoolExpressions or - (2) if the node is a leaf node then it contains a search term. With each search term - that is part of the expression we also keep track of either an evaluation value (XP_BOOL) - or a character string. Evaluation values are used for offline searching. The character - string is used to store the IMAP/NNTP encoding of the search term. This makes evaluating - the expression (for offline) or generating a search encoding (for online) easier. - - For IMAP/NNTP: CBoolExpression has/assumes knowledge about how AND and OR search terms are - combined according to IMAP4 and NNTP protocol. That is the only piece of IMAP/NNTP - knowledge it is aware of. - - Order of Evaluation: Okay, the way in which the boolean expression tree is put together - directly effects the order of evaluation. We currently support left to right evaluation. - Supporting other order of evaluations involves adding new internal add term methods. - */ - -class CBoolExpression -{ -public: - - // create a leaf node expression - CBoolExpression(MSG_SearchTerm * newTerm, XP_Bool EvaluationValue = TRUE, char * encodingStr = NULL); - CBoolExpression(MSG_SearchTerm * newTerm, char * encodingStr); - - // create a non-leaf node expression containing 2 expressions and a boolean operator - CBoolExpression(CBoolExpression *, CBoolExpression *, MSG_SearchBooleanOp boolOp); - - CBoolExpression(); - ~CBoolExpression(); // recursively destroys all sub expressions as well - - // accesors - CBoolExpression * AddSearchTerm (MSG_SearchTerm * newTerm, XP_Bool EvaluationValue = TRUE); // Offline - CBoolExpression * AddSearchTerm (MSG_SearchTerm * newTerm, char * encodingStr); // IMAP/NNTP - - XP_Bool OfflineEvaluate(); // parses the expression tree and all expressions underneath - // this node using each EvaluationValue at each leaf to determine - // if the end result is TRUE or FALSE. - int32 CalcEncodeStrSize(); // assuming the expression is for online searches, - // determine the length of the resulting IMAP/NNTP encoding string - int32 GenerateEncodeStr(char * buffer, int32 bufSize); // fills pre-allocated memory in buffer with - // the IMAP/NNTP encoding for the expression - // returns # bytes added to the buffer - -protected: - // if we are a leaf node, all we have is a search term and a Evaluation value - // for that search term - MSG_SearchTerm * m_term; - XP_Bool m_evalValue; - char * m_encodingStr; // store IMAP/NNTP encoding for the search term if applicable - - // if we are not a leaf node, then we have two other expressions and a boolean operator - CBoolExpression * m_leftChild; - CBoolExpression * m_rightChild; - MSG_SearchBooleanOp m_boolOp; - - - // internal methods - - // the idea is to separate the public interface for adding terms to the expression tree from - // the order of evaluation which influences how we internally construct the tree. Right now, - // we are supporting left to right evaluation so the tree is constructed to represent that by - // calling leftToRightAddTerm. If future forms of evaluation need to be supported, add new methods - // here for proper tree construction. - CBoolExpression * leftToRightAddTerm(MSG_SearchTerm * newTerm, XP_Bool EvaluationValue, char * encodingStr); -}; - - - -//----------------------------------------------------------------------------- -// These Adapter classes contain the smarts to convert search criteria from -// the canonical structures in msg_srch.h into whatever format is required -// by their protocol. -// -// There is a separate Adapter class for area (pop, imap, nntp, ldap) to contain -// the special smarts for that protocol. -//----------------------------------------------------------------------------- - -class msg_SearchAdapter -{ -public: - msg_SearchAdapter (MSG_ScopeTerm*, MSG_SearchTermArray&); - virtual ~msg_SearchAdapter (); - - virtual MSG_SearchError ValidateTerms (); - virtual MSG_SearchError Search () { return SearchError_Success; } - virtual MSG_SearchError SendUrl () { return SearchError_Success; } - virtual MSG_SearchError OpenResultElement (MSG_MessagePane *, MSG_ResultElement *); - virtual MSG_SearchError ModifyResultElement (MSG_ResultElement*, MSG_SearchValue*); - virtual const char *GetEncoding () { return NULL; } - - MSG_FolderInfo *FindTargetFolder (const MSG_ResultElement*); - - MSG_ScopeTerm *m_scope; - MSG_SearchTermArray &m_searchTerms; - - virtual int Abort (); - XP_Bool m_abortCalled; - - static MSG_SearchError EncodeImap (char **ppEncoding, - MSG_SearchTermArray &searchTerms, - int16 src_csid, - int16 dest_csid, - XP_Bool reallyRFC977bis = FALSE); - - static MSG_SearchError EncodeImapValue(char *encoding, const char *value, XP_Bool useQuotes, XP_Bool reallyRFC977bis); - - static char *TryToConvertCharset(char *sourceStr, int16 src_csid, int16 dest_csid, XP_Bool useMIME2Style); - static char *GetImapCharsetParam(int16 dest_csid); - void GetSearchCSIDs(int16& src_csid, int16& dst_csid); - - // This stuff lives in the base class because the IMAP search syntax - // is used by the RFC977bis SEARCH command as well as IMAP itself - static const char *m_kImapBefore; - static const char *m_kImapBody; - static const char *m_kImapCC; - static const char *m_kImapFrom; - static const char *m_kImapNot; - static const char *m_kImapOr; - static const char *m_kImapSince; - static const char *m_kImapSubject; - static const char *m_kImapTo; - static const char *m_kImapHeader; - static const char *m_kImapAnyText; - static const char *m_kImapKeyword; - static const char *m_kNntpKeywords; - static const char *m_kImapSentOn; - static const char *m_kImapSeen; - static const char *m_kImapAnswered; - static const char *m_kImapNotSeen; - static const char *m_kImapNotAnswered; - static const char *m_kImapCharset; - static const char *m_kImapDeleted; - -protected: - static MSG_SearchError EncodeImapTerm (MSG_SearchTerm *, XP_Bool reallyRFC977bis, int16 src_csid, int16 dest_csid, char **ppOutTerm); - char *TransformSpacesToStars (const char *); - - MSG_SearchError OpenNewsResultInUnknownGroup (MSG_MessagePane*, MSG_ResultElement*); -}; - - -class msg_SearchOfflineMail : public msg_SearchAdapter -{ -public: - msg_SearchOfflineMail (MSG_ScopeTerm*, MSG_SearchTermArray&); - virtual ~msg_SearchOfflineMail (); - - virtual MSG_SearchError ValidateTerms (); - virtual MSG_SearchError Search (); - static MSG_SearchError MatchTermsForFilter(DBMessageHdr * msgToMatch,MSG_SearchTermArray &termList, MSG_ScopeTerm *scope, - MessageDB * db, char * headers, uint32 headerSize); - - static MSG_SearchError MatchTermsForSearch(DBMessageHdr * msgTomatch, MSG_SearchTermArray & termList, MSG_ScopeTerm *scope, MessageDB * db); - - virtual MSG_SearchError BuildSummaryFile (); - virtual MSG_SearchError OpenSummaryFile (); - MSG_SearchError SummaryFileError(); - - MSG_SearchError AddResultElement (DBMessageHdr *, MessageDB *db); - - virtual int Abort (); - -protected: - static MSG_SearchError MatchTerms(DBMessageHdr *msgToMatch,MSG_SearchTermArray &termList, MSG_ScopeTerm *scope, - MessageDB *db, char * headers, uint32 headerSize, XP_Bool ForFilters); - struct ListContext *m_cursor; - MessageDB *m_db; - struct ListContext *m_listContext; - - enum - { - kOpenFolderState, - kParseMoreState, - kCloseFolderState, - kDoneState - }; - int m_parserState; - ParseMailboxState *m_mailboxParser; -}; - -class msg_SearchIMAPOfflineMail : public msg_SearchOfflineMail -{ -public: - msg_SearchIMAPOfflineMail (MSG_ScopeTerm*, MSG_SearchTermArray&); - virtual ~msg_SearchIMAPOfflineMail (); - - virtual MSG_SearchError ValidateTerms (); -}; - - - -class msg_SearchOfflineNews : public msg_SearchOfflineMail -{ -public: - msg_SearchOfflineNews (MSG_ScopeTerm*, MSG_SearchTermArray&); - virtual ~msg_SearchOfflineNews (); - virtual MSG_SearchError ValidateTerms (); - - virtual MSG_SearchError OpenSummaryFile (); -}; - - -class msg_SearchOnlineMail : public msg_SearchAdapter -{ -public: - msg_SearchOnlineMail (MSG_ScopeTerm *scope, MSG_SearchTermArray &termList); - virtual ~msg_SearchOnlineMail (); - - virtual MSG_SearchError ValidateTerms (); - virtual MSG_SearchError Search (); - virtual const char *GetEncoding (); - - static MSG_SearchError Encode (char **ppEncoding, MSG_SearchTermArray &searchTerms, int16 src_csid, int16 dest_csid); - - MSG_SearchError AddResultElement (DBMessageHdr *, MessageDB *db); - - static void PreExitFunction (URL_Struct *url, int status, MWContext *context); - -protected: - char *m_encoding; - - static const char *m_kSearchTemplate; -}; - - -class msg_SearchNews : public msg_SearchAdapter -{ -public: - msg_SearchNews (MSG_ScopeTerm *scope, MSG_SearchTermArray &termList); - virtual ~msg_SearchNews (); - - virtual MSG_SearchError ValidateTerms (); - virtual MSG_SearchError Search (); - virtual const char *GetEncoding() { return m_encoding; } - - XP_Bool DuplicateHit(uint32 artNum); // scans m_hits, returns true if artNum already a hit. - void AddHit (uint32 artNum) { m_candidateHits.Add (artNum); } - void CollateHits (); - void ReportHits (); - void ReportHit (MessageHdrStruct*, const char *); - void ReportHit (DBMessageHdr*); - - static int CompareArticleNumbers (const void *, const void *); - static void PreExitFunction (URL_Struct *url, int status, MWContext *context); - - virtual MSG_SearchError Encode (char **outEncoding); - virtual char *EncodeTerm (MSG_SearchTerm*); - - char *BuildUrlPrefix (); - -protected: - char *m_encoding; - XPDWordArray m_candidateHits; - XPDWordArray m_hits; - - XP_Bool m_ORSearch; // set to true if any of the search terms contains an OR for a boolean operator. - - static const char *m_kNntpFrom; - static const char *m_kNntpSubject; - static const char *m_kTermSeparator; - static const char *m_kUrlPrefix; -}; - - -class msg_SearchNewsEx : public msg_SearchNews -{ -public: - msg_SearchNewsEx (MSG_ScopeTerm *scope, MSG_SearchTermArray &termList); - virtual ~msg_SearchNewsEx (); - - virtual MSG_SearchError ValidateTerms (); - virtual MSG_SearchError Search (); - virtual MSG_SearchError Encode (char **pEncoding /*out*/); - - MSG_SearchError SaveProfile (const char *profileName); - - static void PreExitFunctionEx (URL_Struct *url, int status, MWContext *context); - -protected: - static const char *m_kSearchTemplate; - static const char *m_kProfileTemplate; -}; - - -class msg_SearchLdap : public msg_SearchAdapter -{ -public: - msg_SearchLdap (MSG_ScopeTerm *scope, MSG_SearchTermArray &termList); - virtual ~msg_SearchLdap (); - - virtual MSG_SearchError ValidateTerms (); - virtual MSG_SearchError Search (); - virtual MSG_SearchError Encode (char **pEncoding /*out*/); - virtual MSG_SearchError OpenResultElement (MSG_MessagePane *, MSG_ResultElement *); - virtual MSG_SearchError OpenResultElement (MWContext *, MSG_ResultElement *); - virtual MSG_SearchError ModifyResultElement (MSG_ResultElement*, MSG_SearchValue*); - - MSG_SearchError EncodeCustomFilter (const char *value, const char *filter, char **outEncoding); - MSG_SearchError EncodeTerm (MSG_SearchTerm *pTerm, char **ppOutEncoding, int *pEncodingLength); - MSG_SearchError EncodeDwim (const char *mnemonic, const char *value, - char **ppOutEncoding, int *pEncodingLength); - MSG_SearchError EncodeMnemonic (MSG_SearchTerm *pTerm, const char *whichMnemonic, - char **ppOutEncoding, int *pEncodingLength); - -#ifdef MOZ_LDAP - LDAP *m_ldap; - LDAPMessage *m_message; -#endif /* MOZ_LDAP */ - - const char *GetHostName(); - const char *GetSearchBase (); - const char *GetHostDescription (); - const char *GetUrlScheme (XP_Bool forAddToAB); - int GetMaxHits (); - int GetPort (); - int GetStandardPort(); - XP_Bool IsSecure(); - XP_Bool GetEnableAuth(); - void DisplayError (int, const char *, int, XP_Bool isTemplate = FALSE); - void HandleSizeLimitExceeded(); - - char *m_filter; // search criteria expressed in LDAP syntax - char *m_password; - char *m_authDn; - char *m_valueUsedToFindDn; - - // LDAP state machine - typedef enum _msg_LdapState - { - kInitialize, - - kPreAuthBindRequest, - kPreAuthBindResponse, - kPreAuthSearchRequest, - kPreAuthSearchResponse, - - kAuthenticatedBindRequest, - kAnonymousBindRequest, - kBindResponse, - kSearchRequest, - kSearchVLVSearchRequest, - kSearchVLVIndexRequest, - kSearchResponse, - kSearchVLVSearchResponse, - kSearchVLVIndexResponse, - kModifyRequest, - kModifyResponse, - kUnbindRequest - } msg_LdapState; - - // LDAP VLV search information - typedef struct _msg_LdapPair - { - char *cn; - char *filter; - char *sort; - } msg_LdapPair; - - int PollConnection (); -#ifdef MOZ_LDAP - void AddPair (LDAPMessage *messageChain); - void AddSortToPair (msg_LdapPair *pair, LDAPMessage *messageChain); - void FreePair (msg_LdapPair *pair); - void ParsePairList (); - void AddMessageToResults (LDAPMessage *); - LDAPVirtualList *GetLdapVLVData (); - MSG_SearchType GetSearchType (); - MSG_SearchError SetSearchParam(MSG_SearchType type = searchNormal, void *param = NULL); - XP_Bool IsValidVLVSearch(); - MSG_SearchError RestartFailedVLVSearch (); - void ProcessVLVResults (LDAPMessage *); -#endif - msg_LdapState m_nextState; - int m_currentMessage; - virtual int Abort (); - -#ifdef MOZ_LDAP - MSG_SearchError Initialize (); - - MSG_SearchError CollectUserCredentials (); - MSG_SearchError SaveCredentialsToPrefs (); - - MSG_SearchError PreAuthBindRequest (); - MSG_SearchError PreAuthBindResponse (); - MSG_SearchError PreAuthSearchRequest (); - MSG_SearchError PreAuthSearchResponse (); - - MSG_SearchError AuthenticatedBindRequest (); - MSG_SearchError AnonymousBindRequest (); - MSG_SearchError BindRequest (const char *dn, const char *password); - - MSG_SearchError BindResponse (); - MSG_SearchError SearchRootDSERequest (); - MSG_SearchError SearchVLVSearchRequest (); - MSG_SearchError SearchVLVIndexRequest (); - MSG_SearchError SearchRequest (); - MSG_SearchError SearchRootDSEResponse (); - MSG_SearchError SearchVLVSearchResponse (); - MSG_SearchError SearchVLVIndexResponse (); - MSG_SearchError SearchResponse (); - MSG_SearchError ModifyRequest (); - MSG_SearchError ModifyResponse (); - MSG_SearchError UnbindRequest (); - -#endif /* MOZ_LDAP */ - - MSG_SearchError BuildUrl (const char *dn, char **outUrl, XP_Bool forAddToAB); - -#ifdef MOZ_LDAP - // Data initialized before modify URL is fired, but used in modify operation - LdapModifyBucket *m_modifyBucket; - - int m_currentPair; - XPPtrArray m_pairList; -#endif - - DIR_Server *GetDirServer (); -}; - - -//--------------------------------------------------------------------------- -// MSG_ResultElement is a list of attribute/value pairs which are used to -// represent a search hit without requiring a DBMessageHdr or server connection -//--------------------------------------------------------------------------- - -struct MSG_ResultElement : public msg_OpaqueObject -{ -public: - MSG_ResultElement (msg_SearchAdapter *); - virtual ~MSG_ResultElement (); - - static MSG_SearchError AssignValues (MSG_SearchValue *src, MSG_SearchValue *dst); - MSG_SearchError GetValue (MSG_SearchAttribute, MSG_SearchValue **) const; - MSG_SearchError AddValue (MSG_SearchValue*); - - MSG_SearchError GetPrettyName (MSG_SearchValue**); - - MWContextType GetContextType(); - - const MSG_SearchValue *GetValueRef (MSG_SearchAttribute) const; - MSG_SearchError Open (void *window); - - // added as part of the search as view capabilities... - static int CompareByFolderInfoPtrs (const void *, const void *); - - static int Compare (const void *, const void *); - static MSG_SearchError DestroyValue (MSG_SearchValue *value); - - MSG_SearchValueArray m_valueList; - msg_SearchAdapter *m_adapter; - -protected: - virtual uint32 GetExpectedMagic (); - static uint32 m_expectedMagic; -}; - -inline uint32 MSG_ResultElement::GetExpectedMagic () -{ return m_expectedMagic; } - - -//--------------------------------------------------------------------------- -// MSG_ScopeTerm specifies a container to search in, e.g. Inbox -//--------------------------------------------------------------------------- - -struct MSG_ScopeTerm : public msg_OpaqueObject -{ -public: - MSG_ScopeTerm (MSG_SearchFrame *, MSG_ScopeAttribute, MSG_FolderInfo *); - MSG_ScopeTerm (MSG_SearchFrame *, DIR_Server *); - virtual ~MSG_ScopeTerm (); - - XP_Bool IsOfflineMail (); - XP_Bool IsOfflineIMAPMail(); // added by mscott - const char *GetMailPath(); - MSG_SearchError TimeSlice (); - - MSG_SearchError InitializeAdapter (MSG_SearchTermArray &termList); - - char *GetStatusBarName (); - - MSG_ScopeAttribute m_attribute; - char *m_name; - MSG_FolderInfo *m_folder; - XP_File m_file; - msg_SearchAdapter *m_adapter; - MSG_SearchFrame *m_frame; - DIR_Server *m_server; - XP_Bool m_searchServer; - -protected: - virtual uint32 GetExpectedMagic (); - static uint32 m_expectedMagic; -}; - -inline uint32 MSG_ScopeTerm::GetExpectedMagic () -{ return m_expectedMagic; } - - -//--------------------------------------------------------------------------- -// MSG_BodyHandler: used to retrive lines from POP and IMAP offline messages. -// This is a helper class used by MSG_SearchTerm::MatchBody -//--------------------------------------------------------------------------- -class MSG_BodyHandler -{ -public: - MSG_BodyHandler (MSG_ScopeTerm *, uint32 offset, uint32 length, DBMessageHdr * msg, MessageDB * db); - - // we can also create a body handler when doing arbitrary header filtering...we need the list of headers and the header size as well - // if we are doing filtering...if ForFilters is false, headers and headersSize is ignored!!! - MSG_BodyHandler (MSG_ScopeTerm *, uint32 offset, uint32 length, DBMessageHdr * msg, MessageDB * db, - char * headers /* NULL terminated list of headers */, uint32 headersSize, XP_Bool ForFilters); - - virtual ~MSG_BodyHandler(); - - // Returns nextline - int32 GetNextLine(char * buf, int bufSize); // returns next message line in buf, up to bufSize bytes. - - // Transformations - void SetStripHtml (XP_Bool strip) { m_stripHtml = strip; } - void SetStripHeaders (XP_Bool strip) { m_stripHeaders = strip; } - -protected: - void Initialize(); // common initialization code - - // filter related methods. For filtering we always use the headers list instead of the database... - XP_Bool m_Filtering; - int32 GetNextFilterLine(char * buf, int bufSize); - char * m_headers; // pointer into the headers list in the original message hdr db... - uint32 m_headersSize; - uint32 m_headerBytesRead; - - // local / POP related methods - void OpenLocalFolder(); - int32 GetNextLocalLine(char * buf, int bufSize); // goes through the mail folder - - MSG_ScopeTerm *m_scope; - - // local file state - XP_File *m_localFile; - int32 m_localFileOffset; // current offset into the mail folder file - uint32 m_numLocalLines; - - // Offline IMAP related methods & state - int32 GetNextIMAPLine(char * buf, int bufSize); // goes through the MessageDB - DBMessageHdr * m_msgHdr; - MessageDB * m_db; - int32 m_IMAPMessageOffset; - XP_Bool m_OfflineIMAP; // TRUE if we are in Offline IMAP mode, FALSE otherwise - - // News related methods & state - int32 m_NewsArticleOffset; - int32 GetNextNewsLine (NewsGroupDB * newsDB, char * buf, int bufSize); // goes through the NewsDB - - // Transformations - XP_Bool m_stripHeaders; // TRUE if we're supposed to strip of message headers - XP_Bool m_stripHtml; // TRUE if we're supposed to strip off HTML tags - XP_Bool m_passedHeaders; // TRUE if we've already skipped over the headers - XP_Bool m_messageIsHtml; // TRUE if the Content-type header claims text/html - int32 ApplyTransformations (char *buf, int32 length, XP_Bool &returnThisLine); - void StripHtml (char *buf); -}; - - -//--------------------------------------------------------------------------- -// MSG_SearchTerm specifies one criterion, e.g. name contains phil -//--------------------------------------------------------------------------- - -struct MSG_SearchTerm : public msg_OpaqueObject -{ -public: - MSG_SearchTerm(); - MSG_SearchTerm (MSG_SearchAttribute, MSG_SearchOperator, MSG_SearchValue *, XP_Bool, char * arbitraryHeader); // the bool is true if AND, FALSE if OR - MSG_SearchTerm (MSG_SearchAttribute, MSG_SearchOperator, MSG_SearchValue *, MSG_SearchBooleanOp, char * arbitraryHeader); - - virtual ~MSG_SearchTerm (); - - void StripQuotedPrintable (unsigned char*); - int32 GetNextIMAPOfflineMsgLine (char * buf, int bufferSize, int msgOffset, DBMessageHdr * msg, MessageDB * db); - - - MSG_SearchError MatchBody (MSG_ScopeTerm*, uint32 offset, uint32 length, int16 csid, DBMessageHdr * msg, MessageDB * db); - MSG_SearchError MatchArbitraryHeader (MSG_ScopeTerm *,uint32 offset, uint32 length, int16 csid, DBMessageHdr * msg, MessageDB *db, - char * headers, /* NULL terminated header list for msgs being filtered. Ignored unless ForFilters */ - uint32 headersSize, /* size of the NULL terminated list of headers */ - XP_Bool ForFilters /* true if we are filtering */); - MSG_SearchError MatchString (const char *, int16 csid, XP_Bool body = FALSE); - MSG_SearchError MatchDate (time_t); - MSG_SearchError MatchStatus (uint32); - MSG_SearchError MatchPriority (MSG_PRIORITY); - MSG_SearchError MatchSize (uint32); - MSG_SearchError MatchRfc822String(const char *, int16 csid); - MSG_SearchError MatchAge (time_t); - - MSG_SearchError EnStreamNew (char **, int16 *length); - MSG_SearchError DeStream (char *, int16 length); - MSG_SearchError DeStreamNew (char *, int16 length); - - MSG_SearchError GetLocalTimes (time_t, time_t, struct tm &, struct tm &); - - XP_Bool IsBooleanOpAND() { return m_booleanOp == MSG_SearchBooleanAND ? TRUE : FALSE;} - MSG_SearchBooleanOp GetBooleanOp() {return m_booleanOp;} - char * GetArbitraryHeader() {return m_arbitraryHeader;} - - static char * EscapeQuotesInStr(const char *str); - XP_Bool MatchAllBeforeDeciding (); - MSG_SearchAttribute m_attribute; - MSG_SearchOperator m_operator; - MSG_SearchValue m_value; - MSG_SearchBooleanOp m_booleanOp; // boolean operator to be applied to this search term and the search term which precedes it. - char * m_arbitraryHeader; // user specified string for the name of the arbitrary header to be used in the search - // only has a value when m_attribute = attribOtherHeader!!!! -protected: - MSG_SearchError OutputValue(XPStringObj &outputStr); - MSG_SearchAttribute ParseAttribute(char *inStream); - MSG_SearchOperator ParseOperator(char *inStream); - MSG_SearchError ParseValue(char *inStream); - virtual uint32 GetExpectedMagic (); - static uint32 m_expectedMagic; -}; - -inline uint32 MSG_SearchTerm::GetExpectedMagic () -{ return m_expectedMagic; } - - -typedef enum {MSG_SearchAsViewCopy,MSG_SearchAsViewDelete, MSG_SearchAsViewDeleteNoTrash, MSG_SearchAsViewMove} SearchAsViewCmd; -typedef struct MSG_SearchView -{ - MSG_FolderInfo * folder; - MessageDBView * view; -} MSG_SearchView; - -//----------------------------------------------------------------------------- -// MSG_SearchFrame is a search session. There is one pane object per running -// customer of search (mail/news, ldap, rules, etc.) -//----------------------------------------------------------------------------- - -struct MSG_SearchFrame : public msg_OpaqueObject -{ -public: - MSG_SearchFrame (MSG_LinedPane *); - virtual ~MSG_SearchFrame (); - - // bottleneck this cast to do type checking - static MSG_SearchFrame *FromContext (MWContext*); - static MSG_SearchFrame *FromPane (MSG_Pane*); - - // public API implementation - MSG_SearchError AddSearchTerm (MSG_SearchAttribute, MSG_SearchOperator, MSG_SearchValue *, XP_Bool BooleanAND, char * arbitraryHeader); - MSG_SearchError AddScopeTerm (MSG_ScopeAttribute, MSG_FolderInfo*); - MSG_SearchError AddScopeTerm (DIR_Server*); - MSG_SearchError AddAllScopes (MSG_Master*, MSG_ScopeAttribute); - MSG_SearchError GetResultElement (MSG_ViewIndex idx, MSG_ResultElement **result); - MSG_SearchError SortResultList (MSG_SearchAttribute, XP_Bool); - MSG_SearchError GetLdapObjectClasses (char **, uint16 *); - MSG_SearchError SetLdapObjectClass (char *); - MSG_SearchError AddLdapResultsToAddressBook (MSG_ViewIndex*, int); - MSG_SearchError ComposeFromLdapResults (MSG_ViewIndex*, int); - - void *GetSearchParam(); - MSG_SearchType GetSearchType(); - MSG_SearchError SetSearchParam(MSG_SearchType type = searchNormal, void *param = NULL); - - // implementation helpers - MSG_SearchError Initialize (); - MSG_SearchError BuildUrlQueue(Net_GetUrlExitFunc*); - MSG_SearchError GetUrl (); - MSG_SearchError AddResultElement (MSG_ResultElement *); - MSG_SearchError DeleteResultElementsInFolder (MSG_FolderInfo *); - MSG_SearchError AddScopeTree (MSG_ScopeAttribute, MSG_FolderInfo*,XP_Bool deep = TRUE); - void UpdateStatusBar (int message); - MSG_SearchError BeginSearching(); - - MSG_SearchError EncodeRFC977bisScopes (char **ppOutEncoding); - - // libnet async support - int TimeSlice (); - int m_idxRunningScope; - msg_SearchAdapter *GetRunningAdapter (); - MSG_ScopeTerm *GetRunningScope(); - - // support for searching multiple scopes in serial - int TimeSliceSerial (); - - // support for searching multiple scopes in parallel - XP_Bool m_parallel; - MSG_ScopeTermArray m_parallelScopes; - int TimeSliceParallel (); - - - - // Search As View API for the search pane to call - MsgERR MoveMessages (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo * destFolder); - - MsgERR CopyMessages (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo * destFolder, - XP_Bool deleteAfterCopy); - - MSG_DragEffect DragMessagesStatus(const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo * destFolder, - MSG_DragEffect request); - - - MsgERR TrashMessages (const MSG_ViewIndex *indices,int32 numIndices); - - MsgERR DeleteMessages(const MSG_ViewIndex * indices, int32 numIndices); - - MsgERR ProcessSearchAsViewCmd (const MSG_ViewIndex * indices, int32 numIndices, MSG_FolderInfo * destFolder, /* might be NULL */ SearchAsViewCmd cmdType); - - MSG_SearchError CopyResultElements (MSG_FolderInfo * srcFolder, MSG_FolderInfo * destFolder, IDArray * ids, XP_Bool deleteAfterCopy); - MSG_SearchError TrashResultElements (MSG_FolderInfo * srcFolder, IDArray * ids); - MSG_SearchError DeleteResultElements (MSG_FolderInfo * srcFolder, IDArray * ids); - MSG_SearchResultArray * IndicesToResultElements (const MSG_ViewIndex *indices, int32 numIndices); // user must deallocate result array - - void AddViewToList (MSG_FolderInfo * folder, MessageDBView * view); - void CloseView(MSG_FolderInfo * folder); - MessageDBView * GetView (MSG_FolderInfo * folder); - - - MSG_ScopeTermArray m_scopeList; - MSG_SearchTermArray m_termList; - MSG_SearchResultArray m_resultList; - - void DestroyTermList (); - void DestroyScopeList (); - void DestroyResultList (); - void DestroySearchViewList(); - - MSG_SearchAttribute m_sortAttribute; - XP_Bool m_descending; - - char *m_ldapObjectClass; - const char *GetLdapObjectClass (); - - // notification of results runs through the linedPane back to the FE - MSG_LinedPane * GetPane () { return m_pane;} - MSG_LinedPane *m_pane; - MWContext *GetContext () { return m_pane->GetContext(); } - XP_Bool m_calledStartingUpdate; - XP_Bool m_handlingError; - - URL_Struct *m_urlStruct; - - XP_Bool GetSaveProfileStatus (); - msg_SearchNewsEx *GetProfileAdapter (); - - XP_Bool GetGoToFolderStatus (MSG_ViewIndex *indices, int32 numIndices); - - void BeginCylonMode (); - void EndCylonMode (); - - void IncrementOfflineProgress (); - -protected: - // this array stores JUST the views that have been opened in order to perform a - // search as view operation. Routines call back to the search frame when the action - // is completed at which point the view can be closed. This array does NOT contain every view - // in the search result elements list!! IN the future, do not allow it as this would imply that - // we could have MANY DBs open at the same time. - MSG_SearchViewArray m_viewList; // list of all currently open views in the search frame (along with their folders) - - virtual uint32 GetExpectedMagic (); - static uint32 m_expectedMagic; - - XP_Bool m_inCylonMode; - void *m_cylonModeTimer; - static void CylonModeCallback (void *closure); - - int32 m_offlineProgressTotal; - int32 m_offlineProgressSoFar; - - MSG_SearchType m_searchType; - void *m_pSearchParam; -}; - -inline uint32 MSG_SearchFrame::GetExpectedMagic () -{ return m_expectedMagic; } - - -//----------------------------------------------------------------------------- -// Validity checking for attrib/op pairs. We need to know what operations are -// legal in three places: -// 1. when the FE brings up the dialog box and needs to know how to build -// the menus and enable their items -// 2. when the FE fires off a search, we need to check their lists for -// correctness -// 3. for on-the-fly capability negotion e.g. with XSEARCH-capable news -// servers -//----------------------------------------------------------------------------- - -class msg_SearchValidityTable -{ -public: - msg_SearchValidityTable (); - void SetAvailable (int attrib, int op, XP_Bool); - void SetEnabled (int attrib, int op, XP_Bool); - void SetValidButNotShown (int attrib, int op, XP_Bool); - XP_Bool GetAvailable (int attrib, int op); - XP_Bool GetEnabled (int attrib, int op); - XP_Bool GetValidButNotShown (int attrib, int op); - MSG_SearchError ValidateTerms (MSG_SearchTermArray&); - int GetNumAvailAttribs(); // number of attribs with at least one available operator - -protected: - int m_numAvailAttribs; // number of rows with at least one available operator - typedef struct vtBits - { - uint16 bitEnabled : 1; - uint16 bitAvailable : 1; - uint16 bitValidButNotShown : 1; - } vtBits; - vtBits m_table [kNumAttributes][kNumOperators]; -}; - -// Using getters and setters seems a little nicer then dumping the 2-D array -// syntax all over the code -inline void msg_SearchValidityTable::SetAvailable (int a, int o, XP_Bool b) -{ m_table [a][o].bitAvailable = b; } -inline void msg_SearchValidityTable::SetEnabled (int a, int o, XP_Bool b) -{ m_table [a][o].bitEnabled = b; } -inline void msg_SearchValidityTable::SetValidButNotShown (int a, int o, XP_Bool b) -{ m_table [a][o].bitValidButNotShown = b; } - -inline XP_Bool msg_SearchValidityTable::GetAvailable (int a, int o) -{ return m_table [a][o].bitAvailable; } -inline XP_Bool msg_SearchValidityTable::GetEnabled (int a, int o) -{ return m_table [a][o].bitEnabled; } -inline XP_Bool msg_SearchValidityTable::GetValidButNotShown (int a, int o) -{ return m_table [a][o].bitValidButNotShown; } - -class msg_SearchValidityManager -{ -public: - msg_SearchValidityManager (); - ~msg_SearchValidityManager (); - - MSG_SearchError GetTable (int, msg_SearchValidityTable**); - - MSG_SearchError PostProcessValidityTable (MSG_NewsHost*); - MSG_SearchError PostProcessValidityTable (DIR_Server*); - - enum { - onlineMail, - onlineMailFilter, - offlineMail, - localNews, - news, - newsEx, - Ldap - }; - -protected: - - // There's one global validity manager that everyone uses. You *could* do - // this with static members of the adapter classes, but having a dedicated - // object makes cleanup of these tables (at shutdown-time) automagic. - - msg_SearchValidityTable *m_offlineMailTable; - msg_SearchValidityTable *m_onlineMailTable; - msg_SearchValidityTable *m_onlineMailFilterTable; - msg_SearchValidityTable *m_newsTable; - msg_SearchValidityTable *m_newsExTable; - msg_SearchValidityTable *m_ldapTable; - msg_SearchValidityTable *m_localNewsTable; // used for local news searching or offline news searching... - - MSG_SearchError NewTable (msg_SearchValidityTable **); - - MSG_SearchError InitOfflineMailTable (); - MSG_SearchError InitOnlineMailTable (); - MSG_SearchError InitOnlineMailFilterTable (); - MSG_SearchError InitNewsTable (); - MSG_SearchError InitLocalNewsTable(); - MSG_SearchError InitNewsExTable (MSG_NewsHost *host = NULL); - MSG_SearchError InitLdapTable (DIR_Server *server = NULL); - - void EnableLdapAttribute (MSG_SearchAttribute, XP_Bool enabled = TRUE); -}; - -extern msg_SearchValidityManager gValidityMgr; - - -inline XP_Bool IsStringAttribute (MSG_SearchAttribute a) -{ - return ! (a == attribPriority || a == attribDate || - a == attribMsgStatus || a == attribMessageKey || - a == attribSize || a == attribAgeInDays || - a == attribFolderInfo); -} - - -#define SEARCH_API extern "C" - -#define LDAP_VLV_BASE "cn=config,cn=ldbm" -#define LDAP_VLV_SEARCHCLASS "(objectClass=vlvSearch)" -#define LDAP_VLV_INDEXCLASS "(objectClass=vlvIndex)" - -#endif // _PMSGSRCH_H diff --git a/mozilla/lib/libmsg/prsembst.cpp b/mozilla/lib/libmsg/prsembst.cpp deleted file mode 100644 index 6e41d81aabb..00000000000 --- a/mozilla/lib/libmsg/prsembst.cpp +++ /dev/null @@ -1,2130 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "xp.h" -#include "prsembst.h" -#include "mailhdr.h" -#include "maildb.h" -#include "msgfpane.h" -#include "msgfinfo.h" -#include "xp_time.h" -#include HG03067 -#include "msgdbvw.h" -#include "grpinfo.h" -#include "msg_filt.h" -#include "msg_srch.h" -#include "pmsgsrch.h" -#include "pmsgfilt.h" -#include "xplocale.h" -#include "msgprefs.h" -#include "msgurlq.h" -#include "jsmsg.h" -#include "libi18n.h" -#include "msgimap.h" -#include "imaphost.h" -#include "msgmdn.h" -#include "prefapi.h" - -extern "C" -{ -#include "xpgetstr.h" - extern int MK_MSG_FOLDER_UNREADABLE; - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_NON_MAIL_FILE_READ_QUESTION; - extern int MK_MSG_ERROR_WRITING_MAIL_FOLDER; - extern int MK_MSG_FOLDER_UNREADABLE; - extern int MK_MSG_REPARSE_FOLDER; -} - -ParseMailboxState::ParseMailboxState(const char *mailboxName) -{ - m_mailDB = NULL; - m_msgDBView = NULL; - m_mailboxName = XP_STRDUP(mailboxName); - m_mailMaster = NULL; - m_folder = NULL; - m_pane = NULL; - m_obuffer = NULL; - m_obuffer_size = 0; - m_ibuffer = NULL; - m_ibuffer_size = 0; - m_ibuffer_fp = 0; - m_graph_progress_total = 0; - m_graph_progress_received = 0; - m_updateAsWeGo = FALSE; - m_ignoreNonMailFolder = FALSE; - m_isRealMailFolder = TRUE; - m_file = 0; - m_context = NULL; - // OK, it's bad to allocate one of these in the constructor. - // But this needs to be a pointer so that we can replace it - // with a different parser as required. - m_parseMsgState = new ParseMailMessageState; -} - -ParseMailboxState::~ParseMailboxState() -{ - XP_FREE(m_mailboxName); - // make sure we don't have the folder locked. - if (m_folder && m_folder->TestSemaphore(this)) - m_folder->ReleaseSemaphore(this); - if (m_parseMsgState) - delete m_parseMsgState; -} - -void ParseMailboxState::SetMailMessageParseState(ParseMailMessageState *mailMessageState) -{ - // delete old one. - if (m_parseMsgState) - delete m_parseMsgState; - - m_parseMsgState = mailMessageState; -} - -void ParseMailboxState::UpdateStatusText () -{ - char *leafName = XP_STRRCHR (m_mailboxName, '/'); - if (!leafName) - leafName = m_mailboxName; - else - leafName++; - NET_UnEscape(leafName); - char *upgrading = XP_GetString (MK_MSG_REPARSE_FOLDER); - int progressLength = XP_STRLEN(upgrading) + XP_STRLEN(leafName) + 1; - char *progress = new char [progressLength]; - PR_snprintf (progress, progressLength, upgrading, leafName); - FE_Progress (m_context, progress); - delete [] progress; -} - -void ParseMailboxState::UpdateProgressPercent () -{ - XP_ASSERT(m_context != NULL); - XP_ASSERT(m_graph_progress_total != 0); - if ((m_context) && (m_graph_progress_total != 0)) - { - MSG_SetPercentProgress(m_context, m_graph_progress_received, m_graph_progress_total); - } -} - -int ParseMailboxState::BeginOpenFolderSock(const char *folder_name, - const char * /*message_id*/ , int32 /* msgnum */, - void **folder_ptr) -{ - XP_StatStruct folderst; - // get the semaphore for the folder. - int status = (m_folder) ? m_folder->AcquireSemaphore(this) : 0; - if (status) - { -#ifdef DEBUG_bienvenu - XP_Trace ("ParseMailboxState::BeginOpenFolderSock: failed to acquire semaphore for %s", folder_name); - XP_ASSERT(FALSE); -#endif - return status; - } - - if (XP_Stat (folder_name, &folderst, xpMailFolder)) - { -#ifdef DEBUG_bienvenu - XP_Trace ("ParseMailboxState::BeginOpenFolderSock: couldn't stat %s", folder_name); -#endif - return MK_MSG_FOLDER_UNREADABLE; - } - m_file = XP_FileOpen(folder_name, xpMailFolder, XP_FILE_READ_BIN); - if (!m_file) { -#ifdef DEBUG_bienvenu - XP_Trace("ParseMailboxState::BeginOpenFolderSock: couldn't open %s", folder_name); -#endif - return MK_MSG_FOLDER_UNREADABLE; - } - - HG82220 - // assign this so libnet will call CloseFolderSock. - if (folder_ptr != NULL) - *folder_ptr = this; - /* The folder file is now open, and netlib will call us as it reads - chunks of it. Set up the buffers, etc. */ - - status = BeginParsingFolder(0); - if (status < 0) - { -#ifdef DEBUG_bienvenu - XP_Trace ("ParseMailboxState::BeginOpenFolderSock: BeginParsing %s returned %d", folder_name, status); -#endif - return status; - } - m_graph_progress_total = folderst.st_size; - - UpdateStatusText (); - -#ifdef DEBUG_bienvenu - XP_Trace ("ParseMailboxState::BeginOpenFolderSock: returned WAITING_FOR_CONNECTION"); -#endif - return(MK_WAITING_FOR_CONNECTION); -} - -int ParseMailboxState::BeginParsingFolder(int32 startPos) -{ - m_obuffer_size = 10240; - m_parsingDone = FALSE; - m_obuffer = (char *) XP_ALLOC (m_obuffer_size); - if (! m_obuffer) - { - return MK_OUT_OF_MEMORY; - } - - m_parseMsgState->Init(startPos); - return 0; -} - -int ParseMailboxState::ParseBlock(const char *block, int32 length) -{ - return msg_LineBuffer (block, length, &m_ibuffer, &m_ibuffer_size, &m_ibuffer_fp, FALSE, -#ifdef XP_OS2 - (int32 (_Optlink*) (char*,uint32,void*)) -#endif - LineBufferCallback, this); -} - -/* This function works on what MSG_BeginOpenFolder - * starts. This function can return MK_WAITING_FOR_CONNECTION - * as many times as it needs and will be called again - * after yeilding to user events until it returns - * MK_CONNECTED or a negative error code. - */ -int ParseMailboxState::ParseMoreFolderSock(const char* folder_name, - const char* /* message_id */, - int32 /* msgnum */, void** /* folder_ptr */) -{ - int status; - if (! m_file) - { -#ifdef MBOX_DEBUG - fprintf(real_stderr, "MSG_FinishOpenFolderSock: no file??\n"); -#endif - return MK_MSG_FOLDER_UNREADABLE; - } - - /* Read the next chunk of data from the file. */ - status = XP_FileRead (m_obuffer, m_obuffer_size, m_file); -#ifdef MBOX_DEBUG - fprintf(real_stderr, "ParseMoreFolderSock: parsed %d of %s\n", - status, folder_name); -#endif - - if (status > 0 && - m_graph_progress_total > 0 && - m_graph_progress_received == 0) - { - /* This is the first block from the file. Check to see if this - looks like a mail file. */ - const char *s = m_obuffer; - const char *end = s + m_obuffer_size; - while (s < end && XP_IS_SPACE(*s)) - s++; - if ((end - s) < 20 || !msg_IsEnvelopeLine(s, end - s)) - { - char buf[500]; - PR_snprintf (buf, sizeof(buf), - XP_GetString(MK_MSG_NON_MAIL_FILE_READ_QUESTION), - folder_name); - m_isRealMailFolder = FALSE; - if (m_ignoreNonMailFolder) - return MK_CONNECTED; - else if (!FE_Confirm (m_context, buf)) - return -1; /* #### NOT_A_MAIL_FILE */ - } - } - - if (m_graph_progress_total > 0) - { - if (status > 0) - m_graph_progress_received += status; - MSG_SetPercentProgress (m_context, m_graph_progress_received, m_graph_progress_total); - } - - if (status < 0) - { - return status; - } - else if (status == 0) - { - HG22067 - DoneParsingFolder(); - m_parsingDone = TRUE; - return MK_CONNECTED; - } - else - { - status = ParseBlock(m_obuffer, status); - if (status < 0) - { - return status; - } - } - return(MK_WAITING_FOR_CONNECTION); -} - -void ParseMailboxState::CloseFolderSock(const char* /*folder_name*/, const char* /*message_id*/, - int32 /*msgnum*/, void* /*folder_ptr*/) - -{ - if (m_file) - XP_FileClose(m_file); - - FREEIF (m_ibuffer); - FREEIF (m_obuffer); - m_obuffer_size = 0; - m_ibuffer_size = 0; - if (m_msgDBView != NULL && m_parsingDone && !m_updateAsWeGo) - { - uint32 viewCount; - - m_msgDBView->NoteStartChange(0, 0, MSG_NotifyAll); - m_msgDBView->Init(&viewCount); - m_msgDBView->Sort(m_msgDBView->GetSortType(), m_msgDBView->GetSortOrder()); - m_msgDBView->NoteEndChange(0, 0, MSG_NotifyAll); - if (m_pane) - FE_PaneChanged(m_pane, FALSE, MSG_PaneNotifyFolderLoaded, (uint32) m_folder); - } - if (!m_parsingDone) - { - if (m_mailDB != NULL) - { - m_mailDB->Close(); - m_mailDB = NULL; - } - - // If we've failed to create a summary file, don't leave the DB lying around - if (m_parseMsgState) - XP_FileRemove (m_mailboxName, xpMailFolderSummary); - } -} - - -void ParseMailboxState::DoneParsingFolder() -{ - if (m_ibuffer_fp > 0) - { - m_parseMsgState->ParseFolderLine(m_ibuffer, m_ibuffer_fp); - m_ibuffer_fp = 0; - } - PublishMsgHeader(); - - if (m_mailDB != NULL) // finished parsing, so flush db folder info - UpdateDBFolderInfo(); - - if (m_folder != NULL) - m_folder->SummaryChanged(); - - FreeBuffers(); -} - -void ParseMailboxState::FreeBuffers() -{ - /* We're done reading the folder - we don't need these things - any more. */ - FREEIF (m_ibuffer); - m_ibuffer_size = 0; - FREEIF (m_obuffer); - m_obuffer_size = 0; -} - -void ParseMailboxState::UpdateDBFolderInfo() -{ - UpdateDBFolderInfo(m_mailDB, m_mailboxName); -} - -// update folder info in db so we know not to reparse. -void ParseMailboxState::UpdateDBFolderInfo(MailDB *mailDB, const char *mailboxName) -{ - XP_StatStruct folderst; - DBFolderInfo *folderInfo = mailDB->m_dbFolderInfo; - - if (!XP_Stat (mailboxName, &folderst, xpMailFolder)) - { - folderInfo->m_folderDate = folderst.st_mtime; - folderInfo->m_folderSize = folderst.st_size; - folderInfo->m_parsedThru = folderst.st_size; -// folderInfo->setDirty(); DMB TODO - } - mailDB->Commit(); -// m_mailDB->Close(); -} - -// By default, do nothing -void ParseMailboxState::FolderTypeSpecificTweakMsgHeader(MailMessageHdr * /* tweakMe */) -{ -} - -// Tell the world about the message header (add to db, and view, if any) -int32 ParseMailboxState::PublishMsgHeader() -{ - m_parseMsgState->FinishHeader(); - if (m_parseMsgState->m_newMsgHdr) - { - FolderTypeSpecificTweakMsgHeader(m_parseMsgState->m_newMsgHdr); - - if (m_parseMsgState->m_newMsgHdr->GetFlags() & kExpunged) - { - DBFolderInfo *folderInfo = m_mailDB->m_dbFolderInfo; - folderInfo->m_expunged_bytes += m_parseMsgState->m_newMsgHdr->GetByteLength(); - if (m_parseMsgState->m_newMsgHdr) - { - delete m_parseMsgState->m_newMsgHdr; - m_parseMsgState->m_newMsgHdr = NULL; - } - } - else if (m_mailDB != NULL) - { - m_mailDB->AddHdrToDB(m_parseMsgState->m_newMsgHdr, NULL, m_updateAsWeGo); - delete m_parseMsgState->m_newMsgHdr; - m_parseMsgState->m_newMsgHdr = NULL; - } - else - XP_ASSERT(FALSE); // should have a DB, no? - } - else if (m_mailDB) - { - DBFolderInfo *folderInfo = m_mailDB->m_dbFolderInfo; - folderInfo->m_expunged_bytes += m_parseMsgState->m_position - m_parseMsgState->m_envelope_pos; - } - return 0; -} - -void ParseMailboxState::AbortNewHeader() -{ - if (m_parseMsgState->m_newMsgHdr && m_mailDB) - { - delete m_parseMsgState->m_newMsgHdr; - m_parseMsgState->m_newMsgHdr = NULL; - } -} - -ParseMailMessageState *ParseMailboxState::GetMsgState() -{ - return m_parseMsgState; -} - -/* static */ -int32 ParseMailboxState::LineBufferCallback(char *line, uint32 lineLength, - void *closure) -{ - ParseMailboxState *parseState = (ParseMailboxState *) closure; - - return parseState->ParseFolderLine(line, lineLength); -} - -int32 ParseMailboxState::ParseFolderLine(const char *line, uint32 lineLength) -{ - int status = 0; - - if (m_mailDB && m_mailDB->GetDB()) - { - m_parseMsgState->SetMailDB(m_mailDB); - } - // mailbox parser needs to do special stuff when it finds an envelope - // after parsing a message body. So do that. - if (line[0] == 'F' && msg_IsEnvelopeLine(line, lineLength)) - { - // **** This used to be - // XP_ASSERT (m_parseMsgState->m_state == MBOX_PARSE_BODY); - // **** I am not sure this is a right thing to do. This happens when - // going online, downloading a message while playing back append - // draft/template offline operation. We are mixing MBOX_PARSE_BODY && - // MBOX_PARSE_HEADERS state. **** jt - - XP_ASSERT (m_parseMsgState->m_state == MBOX_PARSE_BODY || - m_parseMsgState->m_state == MBOX_PARSE_HEADERS); /* else folder corrupted */ - PublishMsgHeader(); - m_parseMsgState->Clear(); - status = m_parseMsgState->StartNewEnvelope(line, lineLength); - if (status < 0) - return status; - } - // otherwise, the message parser can handle it completely. - else if (m_mailDB != NULL) // if no DB, do we need to parse at all? - return m_parseMsgState->ParseFolderLine(line, lineLength); - - return 0; - -} - -ParseMailMessageState::ParseMailMessageState() -{ - m_envelope = NULL; - m_headers = NULL; - m_headers_size = 0; - m_envelope_size = 0; - m_mailDB = NULL; - m_position = 0; - m_IgnoreXMozillaStatus = FALSE; - m_state = MBOX_PARSE_BODY; - Clear(); -} - -ParseMailMessageState::~ParseMailMessageState() -{ - FREEIF(m_envelope); - FREEIF(m_headers); - ClearAggregateHeader (m_toList); - ClearAggregateHeader (m_ccList); -} - -void ParseMailMessageState::Init(uint32 fileposition) -{ - m_state = MBOX_PARSE_BODY; - m_position = fileposition; - m_newMsgHdr = NULL; - HG98330 -} - -void ParseMailMessageState::Clear() -{ - m_headers_fp = 0; - m_envelope_fp = 0; - m_headers_size = 0; - m_message_id.length = 0; - m_references.length = 0; - m_date.length = 0; - m_from.length = 0; - m_sender.length = 0; - m_newsgroups.length = 0; - m_subject.length = 0; - m_status.length = 0; - m_mozstatus.length = 0; - m_mozstatus2.length = 0; - m_envelope_from.length = 0; - m_envelope_date.length = 0; - m_priority.length = 0; - m_mdn_dnt.length = 0; - m_return_path.length = 0; - m_mdn_original_recipient.length = 0; - m_body_lines = 0; - m_newMsgHdr = NULL; - m_envelope_pos = 0; - ClearAggregateHeader (m_toList); - ClearAggregateHeader (m_ccList); -} - -int ParseMailMessageState::GrowHeaders(uint32 desired_size) -{ - return (((desired_size) >= m_headers_size) ? - msg_GrowBuffer ((desired_size), sizeof(char), 1024, - &m_headers, &m_headers_size) - : 0); -} - -int ParseMailMessageState::GrowEnvelope(uint32 desired_size) -{ - return (((desired_size) >= m_envelope_size) ? - msg_GrowBuffer ((desired_size), sizeof(char), 255, - &m_envelope, &m_envelope_size) - : 0); -} - -int32 ParseMailMessageState::ParseFolderLine(const char *line, uint32 lineLength) -{ - int status = 0; - - if (m_state == MBOX_PARSE_HEADERS) - { - if (EMPTY_MESSAGE_LINE(line)) - { - /* End of headers. Now parse them. */ - status = ParseHeaders(); - if (status < 0) - return status; - - status = FinalizeHeaders(); - if (status < 0) - return status; - m_state = MBOX_PARSE_BODY; - } - else - { - /* Otherwise, this line belongs to a header. So append it to the - header data, and stay in MBOX `MIME_PARSE_HEADERS' state. - */ - status = GrowHeaders (lineLength + m_headers_fp + 1); - if (status < 0) return status; - XP_MEMCPY (m_headers + m_headers_fp, line, lineLength); - m_headers_fp += lineLength; - } - } - else if ( m_state == MBOX_PARSE_BODY) - { - m_body_lines++; - } - - m_position += lineLength; - - return 0; -} - -void ParseMailMessageState::SetMailDB(MailDB *mailDB) -{ - m_mailDB = mailDB; -} - -// We've found the start of the next message, so finish this one off. -void ParseMailMessageState::FinishHeader() -{ - if (m_newMsgHdr) - { - m_newMsgHdr->SetMessageKey(m_envelope_pos); - m_newMsgHdr->SetByteLength(m_position - m_envelope_pos); - m_newMsgHdr->SetMessageSize(m_position - m_envelope_pos); // dmb - no longer number of lines. - m_newMsgHdr->SetLineCount(m_body_lines); - } -} - -struct message_header *ParseMailMessageState::GetNextHeaderInAggregate (XPPtrArray &list) -{ - // When parsing a message with multiple To or CC header lines, we're storing each line in a - // list, where the list represents the "aggregate" total of all the header. Here we get a new - // line for the list - - struct message_header *header = (struct message_header*) XP_CALLOC (1, sizeof(struct message_header)); - list.Add (header); - return header; -} - -void ParseMailMessageState::GetAggregateHeader (XPPtrArray &list, struct message_header *outHeader) -{ - // When parsing a message with multiple To or CC header lines, we're storing each line in a - // list, where the list represents the "aggregate" total of all the header. Here we combine - // all the lines together, as though they were really all found on the same line - - struct message_header *header = NULL; - int length = 0; - int i; - - // Count up the bytes required to allocate the aggregated header - for (i = 0; i < list.GetSize(); i++) - { - header = (struct message_header*) list.GetAt(i); - length += (header->length + 1); //+ for "," - XP_ASSERT(header->length == XP_STRLEN(header->value)); - } - - if (length > 0) - { - char *value = (char*) XP_ALLOC (length + 1); //+1 for null term - if (value) - { - // Catenate all the To lines together, separated by commas - value[0] = '\0'; - int size = list.GetSize(); - for (i = 0; i < size; i++) - { - header = (struct message_header*) list.GetAt(i); - XP_STRCAT (value, header->value); - if (i + 1 < size) - XP_STRCAT (value, ","); - } - outHeader->length = length; - outHeader->value = value; - } - } - else - { - outHeader->length = 0; - outHeader->value = NULL; - } -} - -void ParseMailMessageState::ClearAggregateHeader (XPPtrArray &list) -{ - // Reset the aggregate headers. Free only the message_header struct since - // we don't own the value pointer - - for (int i = 0; i < list.GetSize(); i++) - XP_FREE ((struct message_header*) list.GetAt(i)); - list.RemoveAll(); -} - -// We've found a new envelope to parse. -int ParseMailMessageState::StartNewEnvelope(const char *line, uint32 lineLength) -{ - m_envelope_pos = m_position; - m_state = MBOX_PARSE_HEADERS; - m_position += lineLength; - m_headerstartpos = m_position; - return ParseEnvelope (line, lineLength); -} - -/* largely taken from mimehtml.c, which does similar parsing, sigh... - */ -int ParseMailMessageState::ParseHeaders () -{ - char *buf = m_headers; - char *buf_end = buf + m_headers_fp; - while (buf < buf_end) - { - char *colon = XP_STRCHR (buf, ':'); - char *end; - char *value = 0; - struct message_header *header = 0; - - if (! colon) - break; - - end = colon; - while (end > buf && (*end == ' ' || *end == '\t')) - end--; - - switch (buf [0]) - { - case 'C': case 'c': - if (!strncasecomp ("CC", buf, end - buf)) - header = GetNextHeaderInAggregate(m_ccList); - break; - case 'D': case 'd': - if (!strncasecomp ("Date", buf, end - buf)) - header = &m_date; - else if (!strncasecomp("Disposition-Notification-To", buf, end - buf)) - header = &m_mdn_dnt; - break; - case 'F': case 'f': - if (!strncasecomp ("From", buf, end - buf)) - header = &m_from; - break; - case 'M': case 'm': - if (!strncasecomp ("Message-ID", buf, end - buf)) - header = &m_message_id; - break; - case 'N': case 'n': - if (!strncasecomp ("Newsgroups", buf, end - buf)) - header = &m_newsgroups; - break; - case 'O': case 'o': - if (!strncasecomp ("Original-Recipient", buf, end - buf)) - header = &m_mdn_original_recipient; - break; - case 'R': case 'r': - if (!strncasecomp ("References", buf, end - buf)) - header = &m_references; - else if (!strncasecomp ("Return-Path", buf, end - buf)) - header = &m_return_path; - // treat conventional Return-Receipt-To as MDN - // Disposition-Notification-To - else if (!strncasecomp ("Return-Receipt-To", buf, end - buf)) - header = &m_mdn_dnt; - break; - case 'S': case 's': - if (!strncasecomp ("Subject", buf, end - buf)) - header = &m_subject; - else if (!strncasecomp ("Sender", buf, end - buf)) - header = &m_sender; - else if (!strncasecomp ("Status", buf, end - buf)) - header = &m_status; - break; - case 'T': case 't': - if (!strncasecomp ("To", buf, end - buf)) - header = GetNextHeaderInAggregate(m_toList); - break; - case 'X': - if (X_MOZILLA_STATUS2_LEN == end - buf && - !strncasecomp(X_MOZILLA_STATUS2, buf, end - buf) && - !m_IgnoreXMozillaStatus) - header = &m_mozstatus2; - else if ( X_MOZILLA_STATUS_LEN == end - buf && - !strncasecomp(X_MOZILLA_STATUS, buf, end - buf) && !m_IgnoreXMozillaStatus) - header = &m_mozstatus; - // we could very well care what the priority header was when we - // remember its value. If so, need to remember it here. Also, - // different priority headers can appear in the same message, - // but we only rememeber the last one that we see. - else if (!strncasecomp("X-Priority", buf, end - buf) - || !strncasecomp("Priority", buf, end - buf)) - header = &m_priority; - break; - } - - buf = colon + 1; - while (*buf == ' ' || *buf == '\t') - buf++; - - value = buf; - if (header) - header->value = value; - - SEARCH_NEWLINE: - while (*buf != 0 && *buf != CR && *buf != LF) - buf++; - - if (buf+1 >= buf_end) - ; - /* If "\r\n " or "\r\n\t" is next, that doesn't terminate the header. */ - else if (buf+2 < buf_end && - (buf[0] == CR && buf[1] == LF) && - (buf[2] == ' ' || buf[2] == '\t')) - { - buf += 3; - goto SEARCH_NEWLINE; - } - /* If "\r " or "\r\t" or "\n " or "\n\t" is next, that doesn't terminate - the header either. */ - else if ((buf[0] == CR || buf[0] == LF) && - (buf[1] == ' ' || buf[1] == '\t')) - { - buf += 2; - goto SEARCH_NEWLINE; - } - - if (header) - header->length = buf - header->value; - - if (*buf == CR || *buf == LF) - { - char *last = buf; - if (*buf == CR && buf[1] == LF) - buf++; - buf++; - *last = 0; /* short-circuit const, and null-terminate header. */ - } - - if (header) - { - /* More const short-circuitry... */ - /* strip leading whitespace */ - while (XP_IS_SPACE (*header->value)) - header->value++, header->length--; - /* strip trailing whitespace */ - while (header->length > 0 && - XP_IS_SPACE (header->value [header->length - 1])) - ((char *) header->value) [--header->length] = 0; - } - } - return 0; -} - -int ParseMailMessageState::ParseEnvelope (const char *line, uint32 line_size) -{ - const char *end; - char *s; - int status = 0; - - status = GrowEnvelope (line_size + 1); - if (status < 0) return status; - XP_MEMCPY (m_envelope, line, line_size); - m_envelope_fp = line_size; - m_envelope [line_size] = 0; - end = m_envelope + line_size; - s = m_envelope + 5; - - while (s < end && XP_IS_SPACE (*s)) - s++; - m_envelope_from.value = s; - while (s < end && !XP_IS_SPACE (*s)) - s++; - m_envelope_from.length = s - m_envelope_from.value; - - while (s < end && XP_IS_SPACE (*s)) - s++; - m_envelope_date.value = s; - m_envelope_date.length = (uint16) (line_size - (s - m_envelope)); - while (XP_IS_SPACE (m_envelope_date.value [m_envelope_date.length - 1])) - m_envelope_date.length--; - - /* #### short-circuit const */ - ((char *) m_envelope_from.value) [m_envelope_from.length] = 0; - ((char *) m_envelope_date.value) [m_envelope_date.length] = 0; - - return 0; -} - -extern "C" -{ - char *strip_continuations(char *original); - int16 INTL_DefaultMailToWinCharSetID(int16 csid); - char *INTL_EncodeMimePartIIStr_VarLen(char *subject, int16 wincsid, XP_Bool bUseMime, - int encodedWordLen); -} - -static char * -msg_condense_mime2_string(char *sourceStr) -{ - int16 string_csid = CS_DEFAULT; - int16 win_csid = CS_DEFAULT; - - char *returnVal = XP_STRDUP(sourceStr); - if (!returnVal) - return NULL; - - // If sourceStr has a MIME-2 encoded word in it, get the charset - // name/ID from the first encoded word. - char *p = XP_STRSTR(returnVal, "=?"); - if (p) - { - p += 2; - char *q = XP_STRCHR(p, '?'); - if (q) *q = '\0'; - string_csid = INTL_CharSetNameToID(p); - win_csid = INTL_DocToWinCharSetID(string_csid); - if (q) *q = '?'; - - // Decode any MIME-2 encoded strings, to save the overhead. - char *cvt = INTL_DecodeMimePartIIStr(returnVal, win_csid, FALSE); - if (cvt) - { - if (cvt != returnVal) - { - XP_FREEIF(returnVal); - returnVal = cvt; - } - // MIME-2 decoding occurred, so re-encode into large encoded words - cvt = INTL_EncodeMimePartIIStr_VarLen(returnVal, win_csid, TRUE, - MSG_MAXSUBJECTLENGTH - 2); - if (cvt && (cvt != returnVal)) - { - XP_FREE(returnVal); // encoding happened, deallocate decoded text - returnVal = strip_continuations(cvt); // and remove CR+LF+spaces that occur - } - // else returnVal == cvt, in which case nothing needs to be done - } - else - // no MIME-2 decoding occurred, so strip CR+LF+spaces ourselves - strip_continuations(returnVal); - } - else if (returnVal) - strip_continuations(returnVal); - - return returnVal; -} - -int ParseMailMessageState::InternSubject (struct message_header *header) -{ - char *key; - uint32 L; - MSG_DBHandle db = (m_mailDB) ? m_mailDB->GetDB() : 0; - - if (!header || header->length == 0) - { - m_newMsgHdr->SetSubject("", db); - return 0; - } - - XP_ASSERT (header->length == (short) XP_STRLEN (header->value)); - - key = (char *) header->value; /* #### const evilness */ - - L = header->length; - - - /* strip "Re: " */ - if (msg_StripRE((const char **) &key, &L)) - { - m_newMsgHdr->SetFlags(m_newMsgHdr->GetFlags() | kHasRe); - } - -// if (!*key) return 0; /* To catch a subject of "Re:" */ - - // Condense the subject text into as few MIME-2 encoded words as possible. - char *condensedKey = msg_condense_mime2_string(key); - - m_newMsgHdr->SetSubject(condensedKey ? condensedKey : key, db); - XP_FREEIF(condensedKey); - - return 0; -} - -/* Like mbox_intern() but for headers which contain email addresses: - we extract the "name" component of the first address, and discard - the rest. */ -int ParseMailMessageState::InternRfc822 (struct message_header *header, - char **ret_name) -{ - char *s; - - if (!header || header->length == 0) - return 0; - - XP_ASSERT (header->length == (short) XP_STRLEN (header->value)); - XP_ASSERT (ret_name != NULL); - /* #### The mallocs here might be a performance bottleneck... */ - s = MSG_ExtractRFC822AddressName (header->value); - if (! s) - return MK_OUT_OF_MEMORY; - - *ret_name = s; - return 0; -} - -int ParseMailMessageState::FinalizeHeaders() -{ - int status = 0; - struct message_header *sender; - struct message_header *recipient; - struct message_header *subject; - struct message_header *id; - struct message_header *references; - struct message_header *date; - struct message_header *statush; - struct message_header *mozstatus; - struct message_header *mozstatus2; - struct message_header *priority; - struct message_header *ccList; - struct message_header *mdn_dnt; - - HG23277 - const char *s; - uint32 flags = 0; - uint32 delta = 0; - MSG_PRIORITY priorityFlags = MSG_PriorityNotSet; - - MSG_DBHandle db = (m_mailDB) ? m_mailDB->GetDB() : 0; - if (!db) // if we don't have a valid db, skip the header. - return 0; -#ifdef _USRDLL - return(0); -#endif - - struct message_header to; - GetAggregateHeader (m_toList, &to); - struct message_header cc; - GetAggregateHeader (m_ccList, &cc); - - sender = (m_from.length ? &m_from : - m_sender.length ? &m_sender : - m_envelope_from.length ? &m_envelope_from : - 0); - recipient = (to.length ? &to : - cc.length ? &cc : - m_newsgroups.length ? &m_newsgroups : - sender); - ccList = (cc.length ? &cc : 0); - subject = (m_subject.length ? &m_subject : 0); - id = (m_message_id.length ? &m_message_id : 0); - references = (m_references.length ? &m_references : 0); - statush = (m_status.length ? &m_status : 0); - mozstatus = (m_mozstatus.length ? &m_mozstatus : 0); - mozstatus2 = (m_mozstatus2.length ? &m_mozstatus2 : 0); - date = (m_date.length ? &m_date : - m_envelope_date.length ? &m_envelope_date : - 0); - priority = (m_priority.length ? &m_priority : 0); - mdn_dnt = (m_mdn_dnt.length ? &m_mdn_dnt : 0); - - if (mozstatus) - { - if (strlen(mozstatus->value) == 4) - { -#define UNHEX(C) \ - ((C >= '0' && C <= '9') ? C - '0' : \ - ((C >= 'A' && C <= 'F') ? C - 'A' + 10 : \ - ((C >= 'a' && C <= 'f') ? C - 'a' + 10 : 0))) - int i; - for (i=0,s=mozstatus->value ; i<4 ; i++,s++) - { - flags = (flags << 4) | UNHEX(*s); - } - // strip off and remember priority bits. - flags &= ~MSG_FLAG_RUNTIME_ONLY; - priorityFlags = (MSG_PRIORITY) ((flags & MSG_FLAG_PRIORITIES) >> 13); - flags &= ~MSG_FLAG_PRIORITIES; - /* We trust the X-Mozilla-Status line to be the smartest in almost - all things. One exception, however, is the HAS_RE flag. Since - we just parsed the subject header anyway, we expect that parsing - to be smartest. (After all, what if someone just went in and - edited the subject line by hand?) */ - } - delta = (m_headerstartpos + - (mozstatus->value - m_headers) - - (2 + X_MOZILLA_STATUS_LEN) /* 2 extra bytes for ": ". */ - ) - m_envelope_pos; - } - - if (mozstatus2) - { - uint32 flags2 = 0; - sscanf(mozstatus2->value, " %lx ", &flags2); - flags |= flags2; - } - - if (!(flags & MSG_FLAG_EXPUNGED)) // message was deleted, don't bother creating a hdr. - { - m_newMsgHdr = new MailMessageHdr; // TODO - should be try catch? - if (m_newMsgHdr) - { - if (m_newMsgHdr->GetFlags() & kHasRe) - flags |= MSG_FLAG_HAS_RE; - else - flags &= ~MSG_FLAG_HAS_RE; - - if (mdn_dnt && !(m_newMsgHdr->GetFlags() & kIsRead) && - !(m_newMsgHdr->GetFlags() & kMDNSent)) - flags |= MSG_FLAG_MDN_REPORT_NEEDED; - - MessageDB::ConvertPublicFlagsToDBFlags(&flags); - m_newMsgHdr->SetFlags(flags); - if (priorityFlags != MSG_PriorityNotSet) - m_newMsgHdr->SetPriority(priorityFlags); - - if (delta < 0xffff) - { /* Only use if fits in 16 bits. */ - m_newMsgHdr->SetStatusOffset((uint16) delta); - if (!m_IgnoreXMozillaStatus) // imap doesn't care about X-MozillaStatus - XP_ASSERT(m_newMsgHdr->GetStatusOffset() < 10000); /* ### Debugging hack */ - } - m_newMsgHdr->SetAuthor(sender->value, db); - if (recipient == &m_newsgroups) - { - /* In the case where the recipient is a newsgroup, truncate the string - at the first comma. This is used only for presenting the thread list, - and newsgroup lines tend to be long and non-shared, and tend to bloat - the string table. So, by only showing the first newsgroup, we can - reduce memory and file usage at the expense of only showing the one - group in the summary list, and only being able to sort on the first - group rather than the whole list. It's worth it. */ - char *s; - XP_ASSERT (recipient->length == (uint16) XP_STRLEN (recipient->value)); - s = XP_STRCHR (recipient->value, ','); - if (s) - { - *s = 0; - recipient->length = XP_STRLEN (recipient->value); - } - m_newMsgHdr->SetRecipients(recipient->value, db, FALSE); - } - else - { - // note that we're now setting the whole recipient list, - // not just the pretty name of the first recipient. - m_newMsgHdr->SetRecipients(recipient->value, db, TRUE); - } - if (ccList) - m_newMsgHdr->SetCCList(ccList->value, db); - status = InternSubject (subject); - if (status >= 0) - { - - HG92923 - /* Take off <> around message ID. */ - if (id->value[0] == '<') - id->value++, id->length--; - if (id->value[id->length-1] == '>') - ((char *) id->value) [id->length-1] = 0, id->length--; /* #### const */ - - m_newMsgHdr->SetMessageId(id->value, db); - - if (!mozstatus && statush) - { - /* Parse a little bit of the Berkeley Mail status header. */ - for (s = statush->value; *s; s++) - switch (*s) - { - case 'R': case 'r': - m_newMsgHdr->SetFlags(m_newMsgHdr->GetFlags() | MSG_FLAG_READ); - break; - case 'D': case 'd': - /* msg->flags |= MSG_FLAG_EXPUNGED; ### Is this reasonable? */ - break; - case 'N': case 'n': - case 'U': case 'u': - m_newMsgHdr->SetFlags(m_newMsgHdr->GetFlags() & ~MSG_FLAG_READ); - break; - } - } - - if (references != NULL) - m_newMsgHdr->SetReferences(references->value, db); - if (date) - m_newMsgHdr->SetDate(XP_ParseTimeString (date->value, FALSE)); - - if (priority) - m_newMsgHdr->SetPriority(priority->value); - else if (priorityFlags == MSG_PriorityNotSet) - m_newMsgHdr->SetPriority(MSG_NoPriority); - } - } - else - status = MK_OUT_OF_MEMORY; - } - else - status = 0; - - //### why is this stuff const? - char *tmp = (char*) to.value; - XP_FREEIF(tmp); - tmp = (char*) cc.value; - XP_FREEIF(tmp); - - return status; -} - -int ParseNewMailState::MarkFilteredMessageRead(MailMessageHdr *msgHdr) -{ - if (m_mailDB) - m_mailDB->MarkHdrRead(msgHdr, TRUE, NULL); - else - msgHdr->OrFlags(kIsRead); - return 0; -} - -int ParseNewMailState::MoveIncorporatedMessage(MailMessageHdr *mailHdr, - MailDB *sourceDB, - char *destFolder, - MSG_Filter *filter) -{ - int err = 0; - XP_File destFid; - XP_File sourceFid = m_file; - - // Make sure no one else is writing into this folder - MSG_FolderInfo *lockedFolder = m_mailMaster->FindMailFolder (destFolder, FALSE /*create*/); - if (lockedFolder && (err = lockedFolder->AcquireSemaphore (this)) != 0) - return err; - - if (sourceFid == 0) - { - sourceFid = XP_FileOpen(m_mailboxName, - xpMailFolder, XP_FILE_READ_BIN); - } - XP_ASSERT(sourceFid != 0); - if (sourceFid == 0) - { -#ifdef DEBUG_bienvenu - XP_ASSERT(FALSE); -#endif - if (lockedFolder) - lockedFolder->ReleaseSemaphore (this); - - return MK_MSG_FOLDER_UNREADABLE; // ### dmb - } - - XP_FileSeek (sourceFid, mailHdr->GetMessageOffset(), SEEK_SET); - int newMsgPos; - - destFid = XP_FileOpen(destFolder, xpMailFolder, XP_FILE_APPEND_BIN); - - if (!destFid) - { -#ifdef DEBUG_bienvenu - XP_ASSERT(FALSE); -#endif - if (lockedFolder) - lockedFolder->ReleaseSemaphore (this); - XP_FileClose (sourceFid); - return MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - - if (!XP_FileSeek (destFid, 0, SEEK_END)) - { - newMsgPos = ftell (destFid); - } - else - { - XP_ASSERT(FALSE); - if (lockedFolder) - lockedFolder->ReleaseSemaphore (this); - XP_FileClose (destFid); - XP_FileClose (sourceFid); - return MK_MSG_ERROR_WRITING_MAIL_FOLDER; - } - - HG98373 - uint32 length = mailHdr->GetByteLength(); - - m_ibuffer_size = 10240; - m_ibuffer = NULL; - - while (!m_ibuffer && (m_ibuffer_size >= 512)) - { - m_ibuffer = (char *) XP_ALLOC(m_ibuffer_size); - if (m_ibuffer == NULL) - m_ibuffer_size /= 2; - } - XP_ASSERT(m_ibuffer != NULL); - while ((length > 0) && m_ibuffer) - { - uint32 nRead = XP_FileRead (m_ibuffer, length > m_ibuffer_size ? m_ibuffer_size : length, sourceFid); - if (nRead == 0) - break; - - // we must monitor the number of bytes actually written to the file. (mscott) - if (XP_FileWrite (m_ibuffer, nRead, destFid) != nRead) - { - XP_FileClose(sourceFid); - XP_FileClose(destFid); - - // truncate destination file in case message was partially written - XP_FileTruncate(destFolder,xpMailFolder,newMsgPos); - - if (lockedFolder) - lockedFolder->ReleaseSemaphore(this); - - return MK_MSG_ERROR_WRITING_MAIL_FOLDER; // caller (ApplyFilters) currently ignores error conditions - } - - length -= nRead; - } - - XP_ASSERT(length == 0); - - // if we have made it this far then the message has successfully been written to the new folder - // now add the header to the mailDb. - - MailDB *mailDb = NULL; - // don't force upgrade in place - MsgERR msgErr = MailDB::Open (destFolder, TRUE, &mailDb); - if (eSUCCESS == msgErr) - { - MailMessageHdr *newHdr = new MailMessageHdr(); - if (newHdr) - { - newHdr->CopyFromMsgHdr (mailHdr, sourceDB->GetDB(), mailDb->GetDB()); - // set new byte offset, since the offset in the old file is certainly wrong - newHdr->SetMessageKey (newMsgPos); - newHdr->OrFlags(kNew); - - msgErr = mailDb->AddHdrToDB (newHdr, NULL, m_updateAsWeGo); - delete newHdr; - } - } - else - { - if (mailDb) - { - mailDb->Close(); - mailDb = NULL; - } - } - - XP_FileClose(sourceFid); - XP_FileClose(destFid); - int truncRet = XP_FileTruncate(m_mailboxName, xpMailFolder, mailHdr->GetMessageOffset()); - XP_ASSERT(truncRet >= 0); - - if (lockedFolder) - lockedFolder->ReleaseSemaphore (this); - - // tell outgoing parser that we've truncated the Inbox - m_parseMsgState->Init(mailHdr->GetMessageOffset()); - MSG_FolderInfo *folder = m_mailMaster->FindMailFolder(destFolder, FALSE); - - if (folder) - folder->SetFlag(MSG_FOLDER_FLAG_GOT_NEW); - - if (mailDb != NULL) - { - // update the folder size so we won't reparse. - UpdateDBFolderInfo(mailDb, destFolder); - if (folder != NULL) - folder->SummaryChanged(); - - mailDb->Close(); - } - // We are logging the hit with the old mailHdr, which should work, as long - // as LogRuleHit doesn't assume the new hdr. - if (m_filterList->IsLoggingEnabled()) - LogRuleHit(filter, mailHdr); - - return err; - -} - -ParseNewMailState::ParseNewMailState(MSG_Master *master, MSG_FolderInfoMail - *folder) : - ParseMailboxState(folder->GetPathname()) -{ - SetMaster(master); - if (MSG_FilterList::Open(master, filterInbox, NULL, folder, &m_filterList) - != FilterError_Success) - m_filterList = NULL; - if (m_filterList) - { - const char *folderName = NULL; - int32 int_pref = 0; - PREF_GetIntPref("mail.incorporate.return_receipt", &int_pref); - if (int_pref == 1) - { - MSG_FolderInfo *folderInfo = NULL; - int status = 0; - char *defaultFolderName = - msg_MagicFolderName(master->GetPrefs(), - MSG_FOLDER_FLAG_SENTMAIL, &status); - if (defaultFolderName) - { - folderInfo = master->FindMailFolder(defaultFolderName, FALSE); - if (folderInfo && folderInfo->GetMailFolderInfo()) - folderName = folderInfo->GetMailFolderInfo()->GetPathname(); - XP_FREE(defaultFolderName); - } - } - - if (folderName) - { - MSG_Filter *newFilter = new MSG_Filter(filterInboxRule, "receipt"); - if (newFilter) - { - MSG_Rule *rule = NULL; - MSG_SearchValue value; - newFilter->SetDescription("incorporate mdn report"); - newFilter->SetEnabled(TRUE); - newFilter->GetRule(&rule); - newFilter->SetFilterList(m_filterList); - value.attribute = attribOtherHeader; - value.u.string = "multipart/report"; - rule->AddTerm(attribOtherHeader, opContains, - &value, TRUE, "Content-Type"); - value.u.string = "disposition-notification"; - rule->AddTerm(attribOtherHeader, opContains, - &value, TRUE, "Content-Type"); -#if 0 - value.u.string = "delivery-status"; - rule->AddTerm(attribOtherHeader, opContains, - &value, FALSE, "Content-Type"); -#endif - rule->SetAction(acMoveToFolder, (void*)folderName); - m_filterList->InsertFilterAt(0, newFilter); - } - } - } - m_logFile = NULL; - m_usingTempDB = FALSE; - m_tmpdbName = NULL; - m_disableFilters = FALSE; -} - -ParseNewMailState::~ParseNewMailState() -{ - if (m_filterList != NULL) - MSG_CancelFilterList(m_filterList); - if (m_logFile != NULL) - XP_FileClose(m_logFile); - if (m_mailDB) - m_mailDB->Close(); - if (m_usingTempDB) - { - XP_FileRemove(m_tmpdbName, xpMailFolderSummary); - } - FREEIF(m_tmpdbName); - JSFilter_cleanup(); -} - -void ParseNewMailState::LogRuleHit(MSG_Filter *filter, MailMessageHdr *msgHdr) -{ - char *filterName = ""; - time_t date; - char dateStr[40]; /* 30 probably not enough */ - MSG_RuleActionType actionType; - MSG_Rule *rule; - void *value; - MSG_DBHandle db = (m_mailDB) ? m_mailDB->GetDB() : 0; - XPStringObj author; - XPStringObj subject; - - if (m_logFile == NULL) - m_logFile = XP_FileOpen("", xpMailFilterLog, XP_FILE_APPEND); // will this create? - - filter->GetName(&filterName); - if (filter->GetRule(&rule) != FilterError_Success) - return; - rule->GetAction(&actionType, &value); - date = msgHdr->GetDate(); - XP_StrfTime(m_context, dateStr, sizeof(dateStr), XP_DATE_TIME_FORMAT, - localtime(&date)); - msgHdr->GetAuthor(author, db); - msgHdr->GetSubject(subject, TRUE, db); - if (m_logFile) - { - XP_FilePrintf(m_logFile, "Applied filter \"%s\" to message from %s - %s at %s\n", filterName, - (const char *) author, (const char *) subject, dateStr); - char *actionStr = rule->GetActionStr(actionType); - char *actionValue = ""; - if (actionType == acMoveToFolder) - actionValue = (char *) value; - XP_FilePrintf(m_logFile, "Action = %s %s\n\n", actionStr, actionValue); - if (actionType == acMoveToFolder) - { - XPStringObj msgId; - msgHdr->GetMessageId(msgId, db); - XP_FilePrintf(m_logFile, "mailbox:%s?id=%s\n", value, (const char *) msgId); - } - } -} - -MSG_FolderInfoMail *ParseNewMailState::GetTrashFolder() -{ - MSG_FolderInfo *foundTrash = NULL; - GetMaster()->GetLocalMailFolderTree()->GetFoldersWithFlag(MSG_FOLDER_FLAG_TRASH, &foundTrash, 1); - return foundTrash ? foundTrash->GetMailFolderInfo() : (MSG_FolderInfoMail *)NULL; -} - -void ParseNewMailState::ApplyFilters(XP_Bool *pMoved) -{ - MSG_Filter *filter; - int32 filterCount = 0; - XP_Bool msgMoved = FALSE; - MsgERR err = eSUCCESS; - - MailMessageHdr *msgHdr = GetCurrentMsg(); - if (m_filterList != NULL) - m_filterList->GetFilterCount(&filterCount); - - for (MSG_FilterIndex filterIndex = 0; filterIndex < filterCount; filterIndex++) - { - if (m_filterList->GetFilterAt(filterIndex, &filter) == FilterError_Success) - { - if (!filter->GetEnabled()) - continue; - - if (filter->GetType() == filterInboxJavaScript) - { - if (JSMailFilter_execute(this, filter, msgHdr, m_mailDB, &msgMoved) == SearchError_Success) - break; - } - else if (filter->GetType() == filterInboxRule) - { - MSG_Rule *rule; - MSG_SearchError matchTermStatus; - - if (filter->GetRule(&rule) == FilterError_Success) - { - { // put this in its own block so scope will get destroyed - // before we apply the actions, so folder file will get closed. - MSG_ScopeTerm scope (NULL, scopeMailFolder, m_folder); - - char * headers = GetMsgState()->m_headers; - uint32 headersSize = GetMsgState()->m_headers_fp; - - matchTermStatus = msg_SearchOfflineMail::MatchTermsForFilter( - msgHdr, rule->GetTermList(), &scope, m_mailDB, headers, headersSize); - - } - if (matchTermStatus == SearchError_Success) - { - MSG_RuleActionType actionType; - void *value = NULL; - // look at action - currently handle move - XP_Trace("got a rule hit!\n"); - if (rule->GetAction(&actionType, &value) == FilterError_Success) - { - XP_Bool isRead = msgHdr->GetFlags() & kIsRead; - switch (actionType) - { - case acDelete: - { - MSG_IMAPFolderInfoMail *imapFolder = m_folder->GetIMAPFolderInfoMail(); - XP_Bool serverIsImap = GetMaster()->GetPrefs()->GetMailServerIsIMAP4(); - XP_Bool deleteToTrash = !imapFolder || imapFolder->DeleteIsMoveToTrash(); - if (deleteToTrash || !serverIsImap) - { - // set value to trash folder - MSG_FolderInfoMail *mailTrash = GetTrashFolder(); - if (mailTrash) - value = (void *) mailTrash->GetPathname(); - - msgHdr->OrFlags(kIsRead); // mark read in trash. - } - else // (!deleteToTrash && serverIsImap) - { - msgHdr->OrFlags(kIsRead | kIMAPdeleted); - IDArray keysToFlag; - - keysToFlag.Add(msgHdr->GetMessageKey()); - if (imapFolder) - imapFolder->StoreImapFlags(m_pane, kImapMsgSeenFlag | kImapMsgDeletedFlag, TRUE, keysToFlag, ((ParseIMAPMailboxState *) this)->GetFilterUrlQueue()); - } - } - case acMoveToFolder: - // if moving to a different file, do it. - if (value && XP_FILENAMECMP(m_mailDB->GetFolderName(), (char *) value)) - { - if (msgHdr->GetFlags() & kMDNNeeded && - !isRead) - { - ParseMailMessageState *state = - GetMsgState(); - struct message_header to; - struct message_header cc; - state->GetAggregateHeader (state->m_toList, &to); - state->GetAggregateHeader (state->m_ccList, &cc); - msgHdr->SetFlags(msgHdr->GetFlags() & ~kMDNNeeded); - msgHdr->SetFlags(msgHdr->GetFlags() | kMDNSent); - - if (actionType == acDelete) - { - MSG_ProcessMdnNeededState processMdnNeeded - (MSG_ProcessMdnNeededState::eDeleted, - m_pane, m_folder, msgHdr->GetMessageKey(), - &state->m_return_path, &state->m_mdn_dnt, - &to, &cc, &state->m_subject, - &state->m_date, &state->m_mdn_original_recipient, - &state->m_message_id, state->m_headers, - (int32) state->m_headers_fp, TRUE); - } - char *tmp = (char*) to.value; - XP_FREEIF(tmp); - tmp = (char*) cc.value; - XP_FREEIF(tmp); - } - err = MoveIncorporatedMessage(msgHdr, m_mailDB, (char *) value, filter); - if (err == eSUCCESS) - msgMoved = TRUE; - - } - break; - case acMarkRead: - MarkFilteredMessageRead(msgHdr); - break; - case acKillThread: - // for ignore and watch, we will need the db - // to check for the flags in msgHdr's that - // get added, because only then will we know - // the thread they're getting added to. - msgHdr->OrFlags(kIgnored); - break; - case acWatchThread: - msgHdr->OrFlags(kWatched); - break; - case acChangePriority: - m_mailDB->SetPriority(msgHdr, * ((MSG_PRIORITY *) &value)); - break; - default: - break; - } - if (m_filterList->IsLoggingEnabled() && !msgMoved && actionType != acMoveToFolder) - LogRuleHit(filter, msgHdr); - } - break; - } - } - } - } - } - if (pMoved) - *pMoved = msgMoved; -} - -// This gets called for every message because libnet calls IncorporateBegin, -// IncorporateWrite (once or more), and IncorporateComplete for every message. -void ParseNewMailState::DoneParsingFolder() -{ - XP_Bool moved = FALSE; -/* End of file. Flush out any partial line remaining in the buffer. */ - if (m_ibuffer_fp > 0) - { - m_parseMsgState->ParseFolderLine(m_ibuffer, m_ibuffer_fp); - m_ibuffer_fp = 0; - } - PublishMsgHeader(); - if (!moved && m_mailDB != NULL) // finished parsing, so flush db folder info - UpdateDBFolderInfo(); - - if (m_folder != NULL) - m_folder->SummaryChanged(); - - /* We're done reading the folder - we don't need these things - any more. */ - FREEIF (m_ibuffer); - m_ibuffer_size = 0; - FREEIF (m_obuffer); - m_obuffer_size = 0; -} - -int32 ParseNewMailState::PublishMsgHeader() -{ - XP_Bool moved = FALSE; - - m_parseMsgState->FinishHeader(); - - if (m_parseMsgState->m_newMsgHdr) - { - FolderTypeSpecificTweakMsgHeader(m_parseMsgState->m_newMsgHdr); - if (!m_disableFilters) { - ApplyFilters(&moved); - } - if (!moved) - { - if (m_mailDB) - { - m_parseMsgState->m_newMsgHdr->OrFlags(kNew); - m_mailDB->AddHdrToDB (m_parseMsgState->m_newMsgHdr, NULL, - m_updateAsWeGo); - delete m_parseMsgState->m_newMsgHdr; - } - if (m_folder) - m_folder->SetFlag(MSG_FOLDER_FLAG_GOT_NEW); - - - } // if it was moved by imap filter, m_parseMsgState->m_newMsgHdr == NULL - else if (m_parseMsgState->m_newMsgHdr) - { - // make sure global db is set correctly for delete of strings from hash tbl. - // we do this now by remembering the db in the mail hdr object inside the db - delete m_parseMsgState->m_newMsgHdr; - } - m_parseMsgState->m_newMsgHdr = NULL; - } - return 0; -} - -void ParseNewMailState::SetUsingTempDB(XP_Bool usingTempDB, char *tmpDBName) -{ - m_usingTempDB = usingTempDB; - m_tmpdbName = tmpDBName; -} - -ParseIMAPMailboxState::ParseIMAPMailboxState(MSG_Master *master, MSG_IMAPHost *host, MSG_FolderInfoMail *folder, - MSG_UrlQueue *urlQueue, TImapFlagAndUidState *flagStateAdopted) - : ParseNewMailState(master, folder), fUrlQueue(urlQueue) -{ - MSG_FolderInfoContainer *imapContainer = m_mailMaster->GetImapMailFolderTreeForHost(host->GetHostName()); - MSG_FolderInfo *filteredFolder = imapContainer->FindMailPathname(folder->GetPathname()); - fParsingInbox = 0 != (filteredFolder->GetFlags() & MSG_FOLDER_FLAG_INBOX); - fFlagState = flagStateAdopted; - fB2HaveWarnedUserOfOfflineFiltertarget = FALSE; - - // we ignore X-mozilla status for imap messages - GetMsgState()->m_IgnoreXMozillaStatus = TRUE; - fNextSequenceNum = -1; - m_host = host; - m_imapContainer = imapContainer; -} - -ParseIMAPMailboxState::~ParseIMAPMailboxState() -{ -} - -void ParseIMAPMailboxState::SetPublishUID(int32 uid) -{ - fNextMessagePublishUID = uid; -} - -void ParseIMAPMailboxState::SetPublishByteLength(uint32 byteLength) -{ - fNextMessageByteLength = byteLength; -} - -void ParseIMAPMailboxState::DoneParsingFolder() -{ - ParseMailboxState::DoneParsingFolder(); - if (m_mailDB) - { - // make sure the highwater mark is correct - if (m_mailDB->m_dbFolderInfo->GetNumVisibleMessages()) - { - ListContext *listContext; - DBMessageHdr *currentHdr; - if ((m_mailDB->ListLast(&listContext, &currentHdr) == eSUCCESS) && - currentHdr) - { - m_mailDB->m_dbFolderInfo->m_LastMessageUID = currentHdr->GetMessageKey(); - delete currentHdr; - m_mailDB->ListDone(listContext); - } - else - m_mailDB->m_dbFolderInfo->m_LastMessageUID = 0; - } - else - m_mailDB->m_dbFolderInfo->m_LastMessageUID = 0; - -// DMB TODO m_mailDB->m_dbFolderInfo->setDirty(); - - m_mailDB->Close(); - m_mailDB = NULL; - } -} - -int ParseIMAPMailboxState::MarkFilteredMessageRead(MailMessageHdr *msgHdr) -{ - msgHdr->OrFlags(kIsRead); - IDArray keysToFlag; - - keysToFlag.Add(msgHdr->GetMessageKey()); - if (m_folder->GetType() == FOLDER_IMAPMAIL) - { - MSG_IMAPFolderInfoMail *imapFolder = m_folder->GetIMAPFolderInfoMail(); - if (imapFolder) - { - imapFolder->StoreImapFlags(m_pane, kImapMsgSeenFlag, TRUE, keysToFlag, GetFilterUrlQueue()); - } - else - { - XP_ASSERT(FALSE); // former location of a cast. - } - } - - return 0; -} - - -int ParseIMAPMailboxState::MoveIncorporatedMessage(MailMessageHdr *mailHdr, - MailDB *sourceDB, - char *destFolder, - MSG_Filter *filter) -{ - int err = eUNKNOWN; - - if (fUrlQueue && fUrlQueue->GetPane()) - { - // look for matching imap folders, then pop folders - MSG_FolderInfoContainer *imapContainer = m_imapContainer; - MSG_FolderInfo *sourceFolder = imapContainer->FindMailPathname(m_mailboxName); - MSG_FolderInfo *destinationFolder = imapContainer->FindMailPathname(destFolder); - if (!destinationFolder) - destinationFolder = m_mailMaster->FindMailFolder(destFolder, FALSE); - - if (destinationFolder) - { - MSG_FolderInfo *inbox=NULL; - imapContainer->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, &inbox, 1); - if (inbox) - { - MSG_FolderInfoMail *destMailFolder = destinationFolder->GetMailFolderInfo(); - // put the header into the source db, since it needs to be there when we copy it - // and we need a valid header to pass to StartAsyncCopyMessagesInto - MessageKey keyToFilter = mailHdr->GetMessageKey(); - - if (sourceDB && destMailFolder) - { - XP_Bool imapDeleteIsMoveToTrash = m_host->GetDeleteIsMoveToTrash(); - - IDArray *idsToMoveFromInbox = destMailFolder->GetImapIdsToMoveFromInbox(); - idsToMoveFromInbox->Add(keyToFilter); - - // this is our last best chance to log this - if (m_filterList->IsLoggingEnabled()) - LogRuleHit(filter, mailHdr); - - if (imapDeleteIsMoveToTrash) - { - if (m_parseMsgState->m_newMsgHdr) - { - delete m_parseMsgState->m_newMsgHdr; - m_parseMsgState->m_newMsgHdr = NULL; - } - } - - destinationFolder->SetFlag(MSG_FOLDER_FLAG_GOT_NEW); - - if (imapDeleteIsMoveToTrash) - err = 0; - } - } - } - } - - - // we have to return an error because we do not actually move the message - // it is done async and that can fail - return err; -} - -MSG_FolderInfoMail *ParseIMAPMailboxState::GetTrashFolder() -{ - MSG_IMAPFolderInfoContainer *imapContainerInfo = m_imapContainer->GetIMAPFolderInfoContainer(); - if (!imapContainerInfo) - return NULL; - - MSG_FolderInfo *foundTrash = MSG_GetTrashFolderForHost(imapContainerInfo->GetIMAPHost()); - return foundTrash ? foundTrash->GetMailFolderInfo() : (MSG_FolderInfoMail *)NULL; -} - - -// only apply filters for new unread messages in the imap inbox -void ParseIMAPMailboxState::ApplyFilters(XP_Bool *pMoved) -{ - if (fParsingInbox && !(GetCurrentMsg()->GetFlags() & kIsRead) ) - ParseNewMailState::ApplyFilters(pMoved); - else - *pMoved = FALSE; - - if (!*pMoved && m_parseMsgState->m_newMsgHdr) - fFetchBodyKeys.Add(m_parseMsgState->m_newMsgHdr->GetMessageKey()); -} - - -// For IMAP, the message key is the IMAP UID -// This is where I will add code to fix the message length as well - km -void ParseIMAPMailboxState::FolderTypeSpecificTweakMsgHeader(MailMessageHdr *tweakMe) -{ - if (m_mailDB && tweakMe) - { - tweakMe->SetMessageKey(fNextMessagePublishUID); - tweakMe->SetByteLength(fNextMessageByteLength); - tweakMe->SetMessageSize(fNextMessageByteLength); - - if (fFlagState) - { - XP_Bool foundIt = FALSE; - imapMessageFlagsType imap_flags = IMAP_GetMessageFlagsFromUID(fNextMessagePublishUID, &foundIt, fFlagState); - if (foundIt) - { - // make a mask and clear these message flags - uint32 mask = MSG_FLAG_READ | MSG_FLAG_REPLIED | MSG_FLAG_MARKED | MSG_FLAG_IMAP_DELETED; - tweakMe->SetFlags(tweakMe->GetFlags() & ~mask); - - // set the new value for these flags - uint32 newFlags = 0; - if (imap_flags & kImapMsgSeenFlag) - newFlags |= MSG_FLAG_READ; - else // if (imap_flags & kImapMsgRecentFlag) - newFlags |= MSG_FLAG_NEW; - - // Okay here is the MDN needed logic (if DNT header seen): - /* if server support user defined flag: - MDNSent flag set => clear kMDNNeeded flag - MDNSent flag not set => do nothing, leave kMDNNeeded on - else if - not MSG_FLAG_NEW => clear kMDNNeeded flag - MSG_FLAG_NEW => do nothing, leave kMDNNeeded on - */ - if (imap_flags & kImapMsgSupportUserFlag) - { - if (imap_flags & kImapMsgMDNSentFlag) - { - newFlags |= kMDNSent; - if (tweakMe->GetFlags() & kMDNNeeded) - tweakMe->SetFlags(tweakMe->GetFlags() & ~kMDNNeeded); - } - } - else - { - if (!(imap_flags & kImapMsgRecentFlag) && - tweakMe->GetFlags() & kMDNNeeded) - tweakMe->SetFlags(tweakMe->GetFlags() & ~kMDNNeeded); - } - - if (imap_flags & kImapMsgAnsweredFlag) - newFlags |= MSG_FLAG_REPLIED; - if (imap_flags & kImapMsgFlaggedFlag) - newFlags |= MSG_FLAG_MARKED; - if (imap_flags & kImapMsgDeletedFlag) - newFlags |= MSG_FLAG_IMAP_DELETED; - - if (newFlags) - tweakMe->SetFlags(tweakMe->GetFlags() | newFlags); - } - } - } -} - -int32 ParseIMAPMailboxState::PublishMsgHeader() -{ - XP_Bool moved = FALSE; - - m_parseMsgState->FinishHeader(); - - if (m_parseMsgState->m_newMsgHdr) - { - FolderTypeSpecificTweakMsgHeader(m_parseMsgState->m_newMsgHdr); - if (!m_disableFilters) { - ApplyFilters(&moved); - } - if (!moved) - { - XP_Bool thisMessageUnRead = !(m_parseMsgState->m_newMsgHdr->GetFlags() & kIsRead); - if (m_mailDB) - { - if (thisMessageUnRead) - m_parseMsgState->m_newMsgHdr->OrFlags(kNew); - m_mailDB->AddHdrToDB (m_parseMsgState->m_newMsgHdr, NULL, - (fNextSequenceNum == -1) ? m_updateAsWeGo : FALSE); - // following is for cacheless imap - match sequence number - // to location to insert in view. - if (m_msgDBView != NULL && fNextSequenceNum != -1) - { - m_msgDBView->InsertHdrAt(m_parseMsgState->m_newMsgHdr, fNextSequenceNum++ - 1); -#ifdef DEBUG_bienvenu - XP_Trace("adding hdr to cacheless view at %ld\n", fNextSequenceNum - 2); -#endif - } - delete m_parseMsgState->m_newMsgHdr; - } - if (m_folder && thisMessageUnRead) - m_folder->SetFlag(MSG_FOLDER_FLAG_GOT_NEW); - - - } // if it was moved by imap filter, m_parseMsgState->m_newMsgHdr == NULL - else if (m_parseMsgState->m_newMsgHdr) - { - // make sure global db is set correctly for delete of strings from hash tbl. - delete m_parseMsgState->m_newMsgHdr; - } - m_parseMsgState->m_newMsgHdr = NULL; - } - return 0; -} - -void ParseIMAPMailboxState::SetNextSequenceNum(int32 seqNum) -{ - fNextSequenceNum = seqNum; -} - -ParseOutgoingMessage::ParseOutgoingMessage() -{ - m_bytes_written = 0; - m_out_file = 0; - m_wroteXMozillaStatus = FALSE; - m_writeToOutFile = TRUE; - m_lastBodyLineEmpty = FALSE; - m_outputBuffer = 0; - m_ouputBufferSize = 0; - m_outputBufferIndex = 0; -} - -ParseOutgoingMessage::~ParseOutgoingMessage() -{ - FREEIF (m_outputBuffer); -} - -void ParseOutgoingMessage::Clear() -{ - ParseMailMessageState::Clear(); - m_wroteXMozillaStatus = FALSE; - m_bytes_written = 0; -} - -// We've found the start of the next message, so finish this one off. -void ParseOutgoingMessage::FinishHeader() -{ - int32 origPosition = m_position, len = 0; - if (m_out_file && m_writeToOutFile) - { - if (origPosition > 0 && !m_lastBodyLineEmpty) - { - len = XP_FileWrite (LINEBREAK, LINEBREAK_LEN, m_out_file); - m_bytes_written += LINEBREAK_LEN; - m_position += LINEBREAK_LEN; - } - } - ParseMailMessageState::FinishHeader(); -} - -int ParseOutgoingMessage::StartNewEnvelope(const char *line, uint32 lineLength) -{ - int status = ParseMailMessageState::StartNewEnvelope(line, lineLength); - - if ((status >= 0) && m_out_file && m_writeToOutFile) - { - status = XP_FileWrite(line, lineLength, m_out_file); - if (status > 0) - m_bytes_written += lineLength; - } - return status; -} - -int32 ParseOutgoingMessage::ParseFolderLine(const char *line, uint32 lineLength) -{ - int32 res = ParseMailMessageState::ParseFolderLine(line, lineLength); - int len = 0; - - if (res < 0) - return res; - if (m_out_file && m_writeToOutFile) - { - if (!XP_STRNCMP(line, X_MOZILLA_STATUS, X_MOZILLA_STATUS_LEN)) - m_wroteXMozillaStatus = TRUE; - - m_lastBodyLineEmpty = (m_state == MBOX_PARSE_BODY && (EMPTY_MESSAGE_LINE(line))); - - // make sure we mangle naked From lines - if (line[0] == 'F' && !XP_STRNCMP (line, "From ", 5)) - { - res = XP_FileWrite (">", 1, m_out_file); - if (res < 1) - return res; - m_position += 1; - } - if (!m_wroteXMozillaStatus && m_state == MBOX_PARSE_BODY) - { - char buf[50]; - uint32 dbFlags = m_newMsgHdr ? m_newMsgHdr->GetFlags() : 0; - - if (m_newMsgHdr) - m_newMsgHdr->SetStatusOffset(m_bytes_written); - PR_snprintf(buf, sizeof(buf), X_MOZILLA_STATUS_FORMAT LINEBREAK, (m_newMsgHdr) ? m_newMsgHdr->GetMozillaStatusFlags() & ~MSG_FLAG_RUNTIME_ONLY : 0); - len = strlen(buf); - res = XP_FileWrite(buf, len, m_out_file); - if (res < len) - return res; - m_bytes_written += len; - m_position += len; - m_wroteXMozillaStatus = TRUE; - - MessageDB::ConvertDBFlagsToPublicFlags(&dbFlags); - dbFlags &= (MSG_FLAG_MDN_REPORT_NEEDED | MSG_FLAG_MDN_REPORT_SENT | MSG_FLAG_TEMPLATE); - PR_snprintf(buf, sizeof(buf), X_MOZILLA_STATUS2_FORMAT LINEBREAK, dbFlags); - len = strlen(buf); - res = XP_FileWrite(buf, len, m_out_file); - if (res < len) - return res; - m_bytes_written += len; - m_position += len; - } - res = XP_FileWrite(line, lineLength, m_out_file); - if (res == lineLength) - m_bytes_written += lineLength; - } - return res; -} - -/* static */ -int32 ParseOutgoingMessage::LineBufferCallback(char *line, uint32 lineLength, - void *closure) -{ - ParseOutgoingMessage *parseState = (ParseOutgoingMessage *) closure; - - return parseState->ParseFolderLine(line, lineLength); -} - -int32 ParseOutgoingMessage::ParseBlock(const char *block, uint32 length) -{ - m_ouputBufferSize = 10240; - while (m_outputBuffer == 0) - { - - m_outputBuffer = (char *) XP_ALLOC(m_ouputBufferSize); - if (m_outputBuffer == NULL) - m_ouputBufferSize /= 2; - } - XP_ASSERT(m_outputBuffer != NULL); - - return msg_LineBuffer (block, length, &m_outputBuffer, &m_ouputBufferSize, &m_outputBufferIndex, FALSE, -#ifdef XP_OS2 - (int32 (_Optlink*) (char*,uint32,void*)) -#endif - LineBufferCallback, this); -} - -void ParseOutgoingMessage::AdvanceOutPosition(uint32 amountToAdvance) -{ - m_position += amountToAdvance; - m_bytes_written += amountToAdvance; -} - -void ParseOutgoingMessage::FlushOutputBuffer() -{ -/* End of file. Flush out any partial line remaining in the buffer. */ - if (m_outputBufferIndex > 0) - { - ParseFolderLine(m_outputBuffer, m_outputBufferIndex); - m_outputBufferIndex = 0; - } -} - diff --git a/mozilla/lib/libmsg/prsembst.h b/mozilla/lib/libmsg/prsembst.h deleted file mode 100644 index 5ed4317b6b7..00000000000 --- a/mozilla/lib/libmsg/prsembst.h +++ /dev/null @@ -1,321 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef ParseMboxSt_H -#define ParseMboxSt_H - -#include "idarray.h" -#include "ptrarray.h" -/* Be sure to include msg.h before including this file. */ - -class MSG_Master; -class MailDB; -class MSG_Pane; -class MSG_FolderPane; -class MailMessageHdr; -struct MSG_FilterList; -struct MSG_Filter; -struct MSG_Rule; -class MailMessageHdr; -class MSG_UrlQueue; -class TImapFlagAndUidState; -class MSG_FolderInfoContainer; -class MSG_FolderInfoMail; -class MSG_IMAPHost; - -typedef enum -{ - MBOX_PARSE_ENVELOPE, - MBOX_PARSE_HEADERS, - MBOX_PARSE_BODY -} MBOX_PARSE_STATE; - - - -// This object maintains the parse state for a single mail message. -class ParseMailMessageState -{ -public: - ParseMailMessageState(); - virtual ~ParseMailMessageState(); - void Init(uint32 fileposition); - virtual void Clear(); - virtual void FinishHeader(); - virtual int32 ParseFolderLine(const char *line, uint32 lineLength); - virtual int StartNewEnvelope(const char *line, uint32 lineLength); - int ParseHeaders(); - int GrowHeaders(uint32 desired_size); - int GrowEnvelope(uint32 desired_size); - int FinalizeHeaders(); - int ParseEnvelope (const char *line, uint32 line_size); - int InternSubject (struct message_header *header); - int InternRfc822 (struct message_header *header, - char **ret_name); - void SetMailDB(MailDB *mailDB); - MailDB *GetMailDB() {return m_mailDB;} - MailMessageHdr *m_newMsgHdr; /* current message header we're building */ - MailDB *m_mailDB; - - MBOX_PARSE_STATE m_state; - uint32 m_position; - uint32 m_envelope_pos; - uint32 m_headerstartpos; - - char *m_headers; - uint32 m_headers_fp; - uint32 m_headers_size; - - char *m_envelope; - uint32 m_envelope_fp; - uint32 m_envelope_size; - - struct message_header m_message_id; - struct message_header m_references; - struct message_header m_date; - struct message_header m_from; - struct message_header m_sender; - struct message_header m_newsgroups; - struct message_header m_subject; - struct message_header m_status; - struct message_header m_mozstatus; - struct message_header m_mozstatus2; - - // Support for having multiple To or CC header lines in a message - XPPtrArray m_toList; - XPPtrArray m_ccList; - struct message_header *GetNextHeaderInAggregate (XPPtrArray &list); - void GetAggregateHeader (XPPtrArray &list, struct message_header *); - void ClearAggregateHeader (XPPtrArray &list); - - struct message_header m_envelope_from; - struct message_header m_envelope_date; - struct message_header m_priority; - // Mdn support - struct message_header m_mdn_original_recipient; - struct message_header m_return_path; - struct message_header m_mdn_dnt; /* MDN Disposition-Notification-To: header */ - - uint16 m_body_lines; - - XP_Bool m_IgnoreXMozillaStatus; -}; - -// This class should ultimately be part of a mailbox parsing -// state machine - either by inheritance or delegation. -// Currently, a folder pane owns one and libnet message socket -// related messages get passed to this object. - -// This class has a few things in common with ListNewsGroupState. -// We might want to consider a common base class that stores the -// view and db and url and master objects, though there will -// be casting involved if we do that so it may not be worthwhile. -// All of the actual work functions are different. -class ParseMailboxState -{ -public: - ParseMailboxState(const char *mailboxName); - virtual ~ParseMailboxState(); - MSG_Master *GetMaster() {return m_mailMaster;} - void SetMaster(MSG_Master *master) - {m_mailMaster = master;} - void SetView(MessageDBView *view) {m_msgDBView = view;} - void SetPane(MSG_Pane *pane) {m_pane = pane;} - void SetContext(MWContext *context) {m_context = context; } - MWContext* GetContext() { return m_context; } - void SetMailMessageParseState(ParseMailMessageState *mailMessageState) ; - void SetDB (MailDB *mailDB) {m_mailDB = mailDB; if (m_parseMsgState) m_parseMsgState->SetMailDB(mailDB);} - MailDB *GetDB() {return m_mailDB;} - char *GetMailboxName() {return m_mailboxName;} - - void SetFolder(MSG_FolderInfo *folder) {m_folder = folder;} - void SetIncrementalUpdate(XP_Bool update) {m_updateAsWeGo = update;} - void SetIgnoreNonMailFolder(XP_Bool ignoreNonMailFolder) {m_ignoreNonMailFolder = ignoreNonMailFolder;} - MailMessageHdr *GetCurrentMsg() {return m_parseMsgState->m_newMsgHdr;} - XP_Bool GetIsRealMailFolder() {return m_isRealMailFolder;} - - // message socket libnet callbacks, which come through folder pane - virtual int BeginOpenFolderSock(const char *folder_name, - const char *message_id, int32 msgnum, - void **folder_ptr); - virtual int ParseMoreFolderSock(const char* folder_name, - const char* message_id, - int32 msgnum, void** folder_ptr); - virtual void CloseFolderSock(const char* folder_name, const char* message_id, - int32 msgnum, void* folder_ptr); - - virtual int BeginParsingFolder(int32 startPos); - virtual void DoneParsingFolder(); - virtual void AbortNewHeader(); - virtual int ParseBlock(const char *block, int32 length); - // msg_LineBuffer callback. - static int32 LineBufferCallback (char *line, uint32 line_length, - void *closure); - // which in turn calls this. - int32 ParseFolderLine(const char *line, uint32 lineLength); - - void UpdateDBFolderInfo(); - void UpdateDBFolderInfo(MailDB *mailDB, const char *mailboxName); - void UpdateStatusText (); - - // Update the progress bar based on what we know. - virtual void UpdateProgressPercent (); - - ParseMailMessageState *GetMsgState(); -protected: - - virtual int32 PublishMsgHeader(); - virtual void FolderTypeSpecificTweakMsgHeader(MailMessageHdr *tweakMe); - void FreeBuffers(); - - // data - ParseMailMessageState *m_parseMsgState; - - MailDB *m_mailDB; - MessageDBView *m_msgDBView; // open view on current download, if any - MSG_FolderInfo *m_folder; // folder, if any, we are reparsing. - char *m_mailboxName; - MSG_Master *m_mailMaster; - MSG_Pane *m_pane; - int32 m_obuffer_size; - char *m_obuffer; - uint32 m_ibuffer_fp; - char *m_ibuffer; - uint32 m_ibuffer_size; - XP_File m_file; - int32 m_graph_progress_total; - int32 m_graph_progress_received; - MWContext *m_context; - XP_Bool m_updateAsWeGo; - XP_Bool m_parsingDone; - XP_Bool m_ignoreNonMailFolder; - XP_Bool m_isRealMailFolder; -}; - - -class ParseNewMailState : public ParseMailboxState -{ -public: - ParseNewMailState(MSG_Master *master, MSG_FolderInfoMail *folder); - virtual ~ParseNewMailState(); - virtual void DoneParsingFolder(); - virtual void SetUsingTempDB(XP_Bool usingTempDB, char *tmpDBName); - - void DisableFilters() {m_disableFilters = TRUE;} - - // from jsmsg.cpp - friend void JSMailFilter_MoveMessage(ParseNewMailState *state, - MailMessageHdr *msgHdr, - MailDB *mailDB, - const char *folder, - MSG_Filter *filter, - XP_Bool *pMoved); - - -protected: - virtual int32 PublishMsgHeader(); - virtual void ApplyFilters(XP_Bool *pMoved); - virtual MSG_FolderInfoMail *GetTrashFolder(); - virtual int MoveIncorporatedMessage(MailMessageHdr *mailHdr, - MailDB *sourceDB, - char *destFolder, - MSG_Filter *filter); - virtual int MarkFilteredMessageRead(MailMessageHdr *msgHdr); - void LogRuleHit(MSG_Filter *filter, MailMessageHdr *msgHdr); - MSG_FilterList *m_filterList; - XP_File m_logFile; - char *m_tmpdbName; // Temporary filename of new database - XP_Bool m_usingTempDB; - XP_Bool m_disableFilters; -}; - - -class ParseIMAPMailboxState : public ParseNewMailState -{ -public: - ParseIMAPMailboxState(MSG_Master *master, MSG_IMAPHost *host, MSG_FolderInfoMail *folder, MSG_UrlQueue *urlQueue, TImapFlagAndUidState *flagStateAdopted); - virtual ~ParseIMAPMailboxState(); - - // close the db - virtual void DoneParsingFolder(); - - virtual void SetPublishUID(int32 uid); - virtual void SetPublishByteLength(uint32 byteLength); - virtual void SetNextSequenceNum(int32 seqNum); - - const IDArray &GetBodyKeys() { return fFetchBodyKeys; } - MSG_UrlQueue *GetFilterUrlQueue() {return fUrlQueue;} -protected: - virtual int32 PublishMsgHeader(); - virtual void FolderTypeSpecificTweakMsgHeader(MailMessageHdr *tweakMe); - virtual void ApplyFilters(XP_Bool *pMoved); - - virtual MSG_FolderInfoMail *GetTrashFolder(); - virtual int MoveIncorporatedMessage(MailMessageHdr *mailHdr, - MailDB *sourceDB, - char *destFolder, - MSG_Filter *filter); - virtual int MarkFilteredMessageRead(MailMessageHdr *msgHdr); -private: - XP_Bool fParsingInbox; - XP_Bool fB2HaveWarnedUserOfOfflineFiltertarget; - int32 fNextMessagePublishUID; - uint32 fNextMessageByteLength; - MSG_UrlQueue *fUrlQueue; - TImapFlagAndUidState *fFlagState; - IDArray fFetchBodyKeys; - int32 fNextSequenceNum; - MSG_FolderInfoContainer *m_imapContainer; - MSG_IMAPHost *m_host; -}; - -// If m_out_file is set, this parser will also write out the message, -// adding a mozilla status line if one is not present. -class ParseOutgoingMessage : public ParseMailMessageState -{ -public: - ParseOutgoingMessage(); - virtual ~ParseOutgoingMessage(); - void SetOutFile(XP_File out_file) {m_out_file = out_file;} - XP_File GetOutFile() {return m_out_file;} - virtual int StartNewEnvelope(const char *line, uint32 lineLength); - virtual void FinishHeader(); - virtual int32 ParseFolderLine(const char *line, uint32 lineLength); - virtual int32 ParseBlock(const char *block, uint32 lineLength); - virtual void Clear(); - void AdvanceOutPosition(uint32 amountToAdvance); - void SetWriteToOutFile(XP_Bool writeToOutFile) {m_writeToOutFile = writeToOutFile;} - - void FlushOutputBuffer(); - uint32 m_bytes_written; -protected: - static int32 LineBufferCallback(char *line, uint32 lineLength, void *closure); - XP_Bool m_wroteXMozillaStatus; - XP_Bool m_writeToOutFile; - XP_Bool m_lastBodyLineEmpty; - XP_File m_out_file; - uint32 m_ouputBufferSize; - char *m_outputBuffer; - uint32 m_outputBufferIndex; -}; - - - -#endif diff --git a/mozilla/lib/libmsg/ptrarray.cpp b/mozilla/lib/libmsg/ptrarray.cpp deleted file mode 100644 index 53fe5666ac8..00000000000 --- a/mozilla/lib/libmsg/ptrarray.cpp +++ /dev/null @@ -1,529 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp.h" -#include "ptrarray.h" -#include "xp_qsort.h" - -#ifdef XP_WIN16 -#define SIZE_T_MAX 0xFF80 // Maximum allocation size -#define MAX_ARR_ELEMS SIZE_T_MAX/sizeof(void *) -#endif - - -XPPtrArray::XPPtrArray() -{ - m_nSize = 0; - m_nMaxSize = 0; - m_pData = NULL; -} - -XPPtrArray::~XPPtrArray() -{ - SetSize(0); -} - -///////////////////////////////////////////////////////////////////////////// - -int XPPtrArray::GetSize() const -{ - return m_nSize; -} - -XP_Bool XPPtrArray::IsValidIndex(int32 nIndex) -{ - return (nIndex < GetSize() && nIndex >= 0); -} - -XP_Bool XPPtrArray::SetSize(int nSize) -{ - XP_ASSERT(nSize >= 0); -#ifdef MAX_ARR_ELEMS - if (nSize > MAX_ARR_ELEMS); - { - XP_ASSERT(nSize <= MAX_ARR_ELEMS); // Will fail - return FALSE; - } -#endif - - if (nSize == 0) - { - // Remove all elements - XP_FREE(m_pData); - m_nSize = 0; - m_nMaxSize = 0; - m_pData = NULL; - } - else if (m_pData == NULL) - { - // Create a new array - m_nMaxSize = MAX(8, nSize); - m_pData = (void **)XP_CALLOC(1, m_nMaxSize * sizeof(void *)); - if (m_pData) - m_nSize = nSize; - else - m_nSize = m_nMaxSize = 0; - } - else if (nSize <= m_nMaxSize) - { - // The new size is within the current maximum size, make sure new - // elements are initialized to zero - if (nSize > m_nSize) - XP_MEMSET(&m_pData[m_nSize], 0, (nSize - m_nSize) * sizeof(void *)); - - m_nSize = nSize; - } - else - { - // The array needs to grow, figure out how much - int nGrowBy, nMaxSize; - nGrowBy = MIN(1024, MAX(8, m_nSize / 8)); - nMaxSize = MAX(nSize, m_nMaxSize + nGrowBy); -#ifdef MAX_ARR_ELEMS - nMaxSize = MIN(MAX_ARR_ELEMS, nMaxSize); -#endif - - void **pNewData = (void **)XP_ALLOC(nMaxSize * sizeof(void *)); - if (pNewData) - { - // Copy the data from the old array to the new one - XP_MEMCPY(pNewData, m_pData, m_nSize * sizeof(void *)); - - // Zero out the remaining elements - XP_MEMSET(&pNewData[m_nSize], 0, (nSize - m_nSize) * sizeof(void *)); - m_nSize = nSize; - m_nMaxSize = nMaxSize; - - // Free the old array - XP_FREE(m_pData); - m_pData = pNewData; - } - } - - return nSize == m_nSize; -} - -///////////////////////////////////////////////////////////////////////////// - -void*& XPPtrArray::ElementAt(int nIndex) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -int XPPtrArray::FindIndex (int nStartIndex, void *pToFind) const -{ - for (int i = nStartIndex; i < GetSize(); i++) - if (m_pData[i] == pToFind) - return i; - return -1; -} - -int XPPtrArray::FindIndexUsing(int nStartIndex, void* pToFind, XPCompareFunc* compare) const -{ - for (int i = nStartIndex; i < GetSize(); i++) - if (compare(&m_pData[i], &pToFind) == 0) - return i; - return -1; -} - -void *XPPtrArray::GetAt(int nIndex) const -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -void XPPtrArray::SetAt(int nIndex, void *newElement) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - m_pData[nIndex] = newElement; -} - -///////////////////////////////////////////////////////////////////////////// - -int XPPtrArray::Add(void *newElement) -{ - int nIndex = m_nSize; - -#ifdef MAX_ARR_ELEMS - if (nIndex >= MAX_ARR_ELEMS) - return -1; -#endif - - SetAtGrow(nIndex, newElement); - return nIndex; -} - -void XPPtrArray::InsertAt(int nIndex, void *newElement, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nCount > 0); - - if (nIndex >= m_nSize) - { - // If the new element is after the end of the array, grow the array - SetSize(nIndex + nCount); - } - else - { - // The element is being insert inside the array - int nOldSize = m_nSize; - SetSize(m_nSize + nCount); - - // Move the data after the insertion point - XP_MEMMOVE(&m_pData[nIndex + nCount], &m_pData[nIndex], - (nOldSize - nIndex) * sizeof(void *)); - } - - // Insert the new elements - XP_ASSERT(nIndex + nCount <= m_nSize); - while (nCount--) - m_pData[nIndex++] = newElement; -} - -void XPPtrArray::InsertAt(int nStartIndex, const XPPtrArray *pNewArray) -{ - XP_ASSERT(nStartIndex >= 0); - XP_ASSERT(pNewArray != NULL); - - if (pNewArray->GetSize() > 0) - { - InsertAt(nStartIndex, pNewArray->GetAt(0), pNewArray->GetSize()); - for (int i = 1; i < pNewArray->GetSize(); i++) - m_pData[nStartIndex + i] = pNewArray->GetAt(i); - } -} - -XP_Bool XPPtrArray::Remove(void *pToRemove) -{ - int index = FindIndex(0, pToRemove); - if (index != -1) - { - RemoveAt(index); - return TRUE; - } - else - return FALSE; -} - -void XPPtrArray::RemoveAll() -{ - SetSize(0); -} - -void XPPtrArray::RemoveAt(int nIndex, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nIndex + nCount <= m_nSize); - - if (nCount > 0) - { - // Make sure not to overstep the end of the array - int nMoveCount = m_nSize - (nIndex + nCount); - if (nCount && nMoveCount) - XP_MEMMOVE(&m_pData[nIndex], &m_pData[nIndex + nCount], - nMoveCount * sizeof(void*)); - - m_nSize -= nCount; - } -} - -void XPPtrArray::RemoveAt(int nStartIndex, const XPPtrArray *pArray) -{ - XP_ASSERT(nStartIndex >= 0); - XP_ASSERT(pArray != NULL); - - for (int i = 0; i < pArray->GetSize(); i++) - { - int index = FindIndex(nStartIndex, pArray->GetAt(i)); - if (index >= 0) - RemoveAt(index); - } -} - -void XPPtrArray::SetAtGrow(int nIndex, void *newElement) -{ - XP_ASSERT(nIndex >= 0); - - if (nIndex >= m_nSize) - SetSize(nIndex+1); - m_pData[nIndex] = newElement; -} - -///////////////////////////////////////////////////////////////////////////// - -int XPPtrArray::InsertBinary(void *newElement, int ( *compare )(const void *elem1, const void *elem2)) -{ - int current = 0; - int left = 0; - int right = GetSize() - 1; - int comparison = 0; - - while (left <= right) - { - current = (left + right) / 2; - - void *pCurrent = GetAt(current); - comparison = compare(&pCurrent, &newElement); - - if (comparison == 0) - break; - else if (comparison > 0) - right = current - 1; - else - left = current + 1; - } - - if (comparison < 0) - current += 1; - - XPPtrArray::InsertAt(current, newElement); - return current; -} - -void XPPtrArray::QuickSort (int ( *compare )(const void *elem1, const void *elem2)) -{ - if (m_nSize > 1) - XP_QSORT (m_pData, m_nSize, sizeof(void*), compare); -} - -///////////////////////////////////////////////////////////////////////////// - -void *XPPtrArray::operator[](int nIndex) const -{ - return GetAt(nIndex); -} - -void *&XPPtrArray::operator[](int nIndex) -{ - return ElementAt(nIndex); -} - - -///////////////////////////////////////////////////////////////////////////// -// XPSortedPtrArray - -XPSortedPtrArray::XPSortedPtrArray(XPCompareFunc *compare) - :XPPtrArray() -{ - m_CompareFunc = compare; -} - -int XPSortedPtrArray::Add(void *newElement) -{ -#ifdef MAX_ARR_ELEMS - if (m_nSize >= MAX_ARR_ELEMS) - return -1; -#endif - if (m_CompareFunc) - return InsertBinary(newElement, m_CompareFunc); - else - return XPPtrArray::Add (newElement); -} - -int XPSortedPtrArray::FindIndex(int nStartIndex, void *pToFind) const -{ - if (m_CompareFunc) - return FindIndexUsing(nStartIndex, pToFind, m_CompareFunc); - else - return XPPtrArray::FindIndex(nStartIndex, pToFind); -} - -int XPSortedPtrArray::FindIndexUsing(int nStartIndex, void *pToFind, XPCompareFunc *compare) const -{ - if (GetSize() == 0) - return -1; - if (!m_CompareFunc) - return TRUE; - - int current = 0; - int left = nStartIndex; - int right = GetSize() - 1; - int comparison = 0; - - while (left <= right) - { - current = (left + right) / 2; - - void *pCurrent = GetAt(current); - comparison = compare(&pCurrent, &pToFind); - - if (comparison == 0) - break; - else if (comparison > 0) - right = current - 1; - else - left = current + 1; - } - - if (comparison != 0) - current = -1; - - return current; -} - -///////////////////////////////////////////////////////////////////////////// - -//----------------------------------- -// These functions are not to be called if the array is sorted (i.e. has a compare func) -//----------------------------------- - -void XPSortedPtrArray::SetAt(int index, void *newElement) -{ - if (!m_CompareFunc) - XPPtrArray::SetAt (index, newElement); - else - XP_ASSERT(FALSE); // Illegal operation because the array is sorted -} - - -void XPSortedPtrArray::InsertAt(int index, void *newElement, int count) -{ - if (!m_CompareFunc) - XPPtrArray::InsertAt (index, newElement, count); - else - XP_ASSERT(FALSE); // Illegal operation because the array is sorted -} - - -void XPSortedPtrArray::InsertAt(int index, const XPPtrArray *array) -{ - if (!m_CompareFunc) - XPPtrArray::InsertAt (index, array); - else - XP_ASSERT(FALSE); // Illegal operation because the array is sorted -} - - -///////////////////////////////////////////////////////////////////////////// -// Diagnostics - -#ifdef DEBUG -XP_Bool XPPtrArray::VerifySort() const -{ - return TRUE; -} - -XP_Bool XPSortedPtrArray::VerifySort() const -{ - // Check that the assumption of sorting in the array is valid. - if (GetSize() > 0 && m_CompareFunc) - { - void *cur = GetAt(0); - for (int i = 1; i < GetSize(); i++) - { - void *prev = cur; - cur = GetAt(i); - if (m_CompareFunc(&cur, &prev) < 0) - { - XP_ASSERT(FALSE); - return FALSE; - } - } - } - - return TRUE; -} -#endif - - -/////////////////////////////////////////////////////////////////////////////// - - -msg_StringArray::msg_StringArray(XP_Bool ownsMemory, XPCompareFunc *compare) - :XPSortedPtrArray(compare) -{ - m_ownsMemory = ownsMemory; -} - -msg_StringArray::~msg_StringArray() -{ - RemoveAll(); -} - -int msg_StringArray::Add(void *string) -{ - return XPPtrArray::Add(m_ownsMemory ? XP_STRDUP((char *)string) : string); -} - -void msg_StringArray::RemoveAll() -{ - if (m_ownsMemory) - { - for (int i = 0; i < GetSize(); i++) - { - void *v = (void *)GetAt(i); - XP_FREEIF(v); - } - } - XPSortedPtrArray::RemoveAll(); // call the base class to shrink m_pData list -} - -XP_Bool msg_StringArray::ImportTokenList(const char *list, const char *tokenSeparators /* = " ," */) -{ - // Tokenizes the input string and builds up the array of strings based on the - // optional caller-provided token separators. - - XP_ASSERT(m_ownsMemory); // must own the memory for the substrings - if (list && m_ownsMemory) - { - char *scratch = XP_STRDUP(list); // make a copy cause strtok will change it - if (scratch) - { - char *elem = XP_STRTOK(scratch, tokenSeparators); - if (elem) - { - Add (elem); - while (NULL != (elem = XP_STRTOK(NULL, tokenSeparators))) - Add (elem); - } - XP_FREE(scratch); - return TRUE; - } - } - return FALSE; -} - -char *msg_StringArray::ExportTokenList(const char *separator /* = " ," */) -{ - // Catenates all the member strings into a big string separated by optional - // caller-provided string. The return value must be freed by the caller - - int i, len = 0; - int lenSep = XP_STRLEN(separator); - - for (i = 0; i < GetSize(); i++) - len += XP_STRLEN(GetAt(i)) + lenSep; - - char *list = (char *)XP_ALLOC(len + 1); - if (list) - { - *list = '\0'; - for (i = 0; i < GetSize(); i++) - { - if (i > 0) - XP_STRCAT(list, separator); - XP_STRCAT(list, GetAt(i)); - } - } - return list; -} diff --git a/mozilla/lib/libmsg/ptrarray.h b/mozilla/lib/libmsg/ptrarray.h deleted file mode 100644 index c9e85501a8f..00000000000 --- a/mozilla/lib/libmsg/ptrarray.h +++ /dev/null @@ -1,164 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// ptrarray.h -#ifndef PTR_ARRAY_H_ -#define PTR_ARRAY_H_ - -#ifdef XP_UNIX -#define __cdecl -#endif - -typedef int XPCompareFunc(const void *, const void *); - -#ifdef DEBUG -// These are here to stop people calling -#define VIRTUAL virtual -#else -#define VIRTUAL -#endif // DEBUG - - -//***************************************************************************** - -class XPPtrArray -{ -public: - // Construction/destruction - XPPtrArray(); - virtual ~XPPtrArray(); - - // State/attribute member functions - int GetSize() const; - XP_Bool IsValidIndex(int32 nIndex); - VIRTUAL XP_Bool SetSize(int nNewSize); - - // Accessor member functions - void *&ElementAt(int nIndex); - virtual int FindIndex (int nStartIndex, void *pToFind) const; - virtual int FindIndexUsing(int nStartIndex, void *pToFind, XPCompareFunc* compare) const; - void *GetAt(int nIndex) const; - VIRTUAL void SetAt(int nIndex, void *newElement); - - // Insertion/deletion member functions - virtual int Add(void *newElement); - VIRTUAL void InsertAt(int nIndex, void *newElement, int nCount = 1); - VIRTUAL void InsertAt(int nStartIndex, const XPPtrArray *pNewArray); - XP_Bool Remove(void *pToRemove); - virtual void RemoveAll(); - void RemoveAt(int nIndex, int nCount = 1); - void RemoveAt(int nStartIndex, const XPPtrArray *pNewArray); - VIRTUAL void SetAtGrow(int nIndex, void *newElement); - - // Sorting member functions - int InsertBinary(void *newElement, XPCompareFunc *compare); - void QuickSort(XPCompareFunc *compare); - - // Overloaded operators - void *operator[](int nIndex) const; - void *&operator[](int nIndex); - -#ifdef DEBUG - virtual XP_Bool VerifySort() const; -#endif - -protected: - // Member Variables - int m_nSize; - int m_nMaxSize; - void **m_pData; -}; - -//***************************************************************************** - -class XPSortedPtrArray : public XPPtrArray -{ -public: - XPSortedPtrArray(XPCompareFunc *compare); - - virtual int Add(void *newElement); - - // PROMISE: this class will always call the compare-func with pToFind as the - // second parameter. - virtual int FindIndex(int nStartIndex, void *pToFind) const; - - // These functions can only be used on non-sorted PtrArray objects (i.e. compareFunc is NULL) - virtual void SetAt(int nIndex, void* newElement); - virtual void InsertAt(int nIndex, void* newElement, int nCount = 1); - virtual void InsertAt(int nStartIndex, const XPPtrArray* pNewArray); - -#ifdef DEBUG - virtual XP_Bool VerifySort() const; -#endif - -protected: - // Allows search to use a different compare func from the sort. This is used - // by MSG_FolderCache, to find the cache element corresponding to a folder. - // The corresponding element and folder have identical relative paths, and the - // relative path is used by both compare funcs, which is why it works. - // to the found element - int FindIndexUsing(int nStartIndex, void *pToFind, - XPCompareFunc *compare) const; - - // Member Variables - XPCompareFunc* m_CompareFunc; // NULL to simulate unsorted base-class. -}; - -//***************************************************************************** - -// msg_StringArray is a subclass of the generic pointer array class -// which is intended for string operations. -// - It can "own" the strings, or not. -// - It can be sorted, if you provide a CompareFunc, or not, if you don't - -class msg_StringArray : public XPSortedPtrArray -{ -public: - // Overrides from base class - msg_StringArray (XP_Bool ownsMemory, XPCompareFunc *compare = NULL); - virtual ~msg_StringArray (); - - const char *GetAt (int i) const { return (const char*) XPPtrArray::GetAt(i); } - virtual int Add (void *string); - virtual void RemoveAll (); - - XP_Bool ImportTokenList (const char *list, const char *tokenSeps = ", "); - char *ExportTokenList (const char *tokenSep = ", "); - -protected: - XP_Bool m_ownsMemory; -}; - -//***************************************************************************** - -class MSG_FolderInfo; - -class MSG_FolderArray : public XPSortedPtrArray -{ -public: - // Override constructor to allow folderArrays to be sorted - MSG_FolderArray (XPCompareFunc *compare = NULL) : XPSortedPtrArray (compare) {} - - // Encapsulate this typecast, so we don't have to do it all over the place. - MSG_FolderInfo *GetAt(int i) const { return (MSG_FolderInfo*) XPPtrArray::GetAt(i); } -}; - -#endif diff --git a/mozilla/lib/libmsg/search.cpp b/mozilla/lib/libmsg/search.cpp deleted file mode 100644 index 63b09b9a080..00000000000 --- a/mozilla/lib/libmsg/search.cpp +++ /dev/null @@ -1,5326 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// Implementation of search API for mail and news -// -// -#include "msg.h" -#include "net.h" -#include "libi18n.h" -#include "xpgetstr.h" -#include "msgstrob.h" -#include "msgprefs.h" -#include "mailhdr.h" -#include "newshdr.h" -#include "intl_csi.h" -#include "ldap.h" - - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; - extern int MK_UNABLE_TO_OPEN_FILE; - - extern int XP_SEARCH_SUBJECT; - extern int XP_SEARCH_CONTAINS; - extern int XP_SEARCH_AGE; // mscott: hack for searching by age... - extern int XP_SEARCH_IS_GREATER; - extern int XP_SEARCH_IS_LESS; // for searching by age - - extern int XP_STATUS_READ; - extern int XP_STATUS_REPLIED; - extern int XP_STATUS_FORWARDED; - extern int XP_STATUS_REPLIED_AND_FORWARDED; - extern int XP_STATUS_NEW; - - extern int MK_MSG_SEARCH_STATUS; - - extern int MK_SEARCH_HITS_COUNTER; - - extern int MK_SEARCH_SCOPE_ONE; - extern int MK_SEARCH_SCOPE_SELECTED; - extern int MK_SEARCH_SCOPE_OFFLINE_MAIL; - extern int MK_SEARCH_SCOPE_ONLINE_MAIL; - extern int MK_SEARCH_SCOPE_SUBSCRIBED_NEWS; - extern int MK_SEARCH_SCOPE_ALL_NEWS; - - extern int XP_PRIORITY_NONE; - extern int XP_PRIORITY_LOWEST; - extern int XP_PRIORITY_LOW; - extern int XP_PRIORITY_NORMAL; - extern int XP_PRIORITY_HIGH; - extern int XP_PRIORITY_HIGHEST; - - extern int XP_SEARCH_VALUE_REQUIRED; -} - -#include "pmsgsrch.h" // private search API -#include "msgmast.h" -#include "msgfinfo.h" -#include "xp_time.h" // for XP_LocalZoneOffset -#include "dirprefs.h" -#include "msgmpane.h" // for LoadMessage -#include "newshost.h" // for QueryExtension -#include "hosttbl.h" // for AddAllScopes -#include "msgurlq.h" // for MSG_UrlQueue -#include "prefapi.h" - -#include "msgimap.h" // hopefully just temporary.. - -//----------------------------------------------------------------------------- -// ------------------------ Public API implementation ------------------------- -//----------------------------------------------------------------------------- -SEARCH_API MSG_SearchError MSG_SearchAlloc (MSG_Pane *pane) -{ - // Make sure there isn't another allocated searchFrame in this context - XP_ASSERT (pane); - XP_ASSERT (NULL == pane->GetContext()->msg_searchFrame); - - // Make sure pane really is a linedPane - MSG_PaneType type = pane->GetPaneType(); - XP_ASSERT (MSG_ADDRPANE == type || AB_ABPANE == type || MSG_SEARCHPANE == type || type == AB_PICKERPANE); - - MSG_SearchFrame *frame = new MSG_SearchFrame ((MSG_LinedPane*) pane); - return frame ? SearchError_Success : SearchError_OutOfMemory; -} - - -SEARCH_API MSG_SearchError MSG_SearchFree (MSG_Pane *pane) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (NULL != frame) - { - delete frame; - pane->GetContext()->msg_searchFrame = NULL; - return SearchError_Success; - } - return SearchError_NullPointer; -} - -SEARCH_API MSG_SearchError MSG_AddSearchTerm (MSG_Pane *pane, - MSG_SearchAttribute attrib, MSG_SearchOperator op, MSG_SearchValue *value, XP_Bool BooleanAND, char * arbitraryHeader) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - return frame->AddSearchTerm (attrib, op, value, BooleanAND, arbitraryHeader); -} - -MSG_SearchError MSG_CountSearchTerms (MSG_Pane *pane, int *numTerms) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - if (!numTerms) - return SearchError_NullPointer; - *numTerms = frame->m_termList.GetSize(); - return SearchError_Success; -} - -MSG_SearchError MSG_GetNthSearchTerm (MSG_Pane *pane, int whichTerm, - MSG_SearchAttribute *attrib, MSG_SearchOperator *op, MSG_SearchValue *value) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - if (!attrib || !op || !value) - return SearchError_NullPointer; - - MSG_SearchTerm *term = frame->m_termList.GetAt(whichTerm); - *attrib = term->m_attribute; - *op = term->m_operator; - return MSG_ResultElement::AssignValues (&term->m_value, value); -} - - -MSG_SearchError MSG_CountSearchScopes (MSG_Pane *pane, int *numScopes) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - if (!numScopes) - return SearchError_NullPointer; - - *numScopes = frame->m_scopeList.GetSize(); - return SearchError_Success; -} - - -MSG_SearchError MSG_GetNthSearchScope (MSG_Pane *pane, int which, MSG_ScopeAttribute *scopeId, void **scope) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - if (!scopeId || !scope) - return SearchError_NullPointer; - - MSG_ScopeTerm *scopeTerm = frame->m_scopeList.GetAt(which); - *scopeId = scopeTerm->m_attribute; - if (*scopeId == scopeLdapDirectory) - *scope = scopeTerm->m_server; - else - *scope = scopeTerm->m_folder; - return SearchError_Success; -} - - -SEARCH_API MSG_SearchError MSG_AddScopeTerm (MSG_Pane *pane, MSG_ScopeAttribute attrib, MSG_FolderInfo *folder) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - - // do not do a deep search starting from the IMAP INBOX - XP_Bool deep = !((folder->GetType() == FOLDER_IMAPMAIL) && (folder->GetFlags() & MSG_FOLDER_FLAG_INBOX)); - return frame->AddScopeTree (attrib, folder, deep); -} - - -SEARCH_API MSG_SearchError MSG_AddAllScopes (MSG_Pane *pane, MSG_Master *master, MSG_ScopeAttribute scope) -{ - XP_ASSERT (master); - - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - if (!master) - return SearchError_NullPointer; - return frame->AddAllScopes (master, scope); -} - - -SEARCH_API MSG_SearchError MSG_AddLdapScope (MSG_Pane *pane, DIR_Server *server) -{ - XP_ASSERT (server); - - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - return frame->AddScopeTerm (server); -} - - -SEARCH_API MSG_SearchError MSG_AddAllLdapScopes (MSG_Pane *pane, XP_List *dirServerList) -{ - // This is a convenience function which doesn't do anything the FE couldn't do themselves - XP_ASSERT (dirServerList); - XP_ASSERT (!XP_ListIsEmpty(dirServerList)); - - MSG_SearchError err = SearchError_Success; - DIR_Server *server; - for (int i = 1; i < XP_ListCount(dirServerList); i++) - { - server = (DIR_Server*) XP_ListGetObjectNum (dirServerList, i); - err = MSG_AddLdapScope (pane, server); - } - return err; -} - - -SEARCH_API MSG_SearchError MSG_Search (MSG_Pane *pane) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - - MSG_SearchError err = frame->Initialize (); - if (SearchError_Success == err) - err = frame->BeginSearching (); - else - { - if (SearchError_ValueRequired == err) - FE_Alert (pane->GetContext(), XP_GetString (XP_SEARCH_VALUE_REQUIRED)); - } - return err; -} - -SEARCH_API MSG_SearchError MSG_InterruptSearchViaPane (MSG_Pane *pane) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - - if (frame->m_handlingError) - return SearchError_Busy; - - if (pane) - pane->InterruptContext (TRUE); - - return SearchError_Success; -} - - -SEARCH_API MSG_SearchError MSG_SetSearchParam (MSG_Pane *pane, MSG_SearchType type, void *param) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - - return frame->SetSearchParam(type, param); -} - -SEARCH_API void *MSG_GetSearchParam (MSG_Pane *pane) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (frame) - return frame->GetSearchParam(); - - return NULL; -} - -SEARCH_API MSG_SearchType MSG_GetSearchType (MSG_Pane *pane) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (frame) - return frame->GetSearchType(); - - return searchNone; -} - -SEARCH_API uint32 MSG_GetNumResults (MSG_Pane *pane) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (frame) - return frame->m_resultList.GetSize(); - - return 0; -} - -SEARCH_API MSG_SearchError MSG_GetResultElement (MSG_Pane *pane, MSG_ViewIndex idx, MSG_ResultElement **result) -{ - XP_ASSERT(pane); - XP_ASSERT(result); - - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - return frame->GetResultElement (idx, result); -} - - -SEARCH_API MSG_SearchError MSG_GetResultAttribute ( - MSG_ResultElement *elem, MSG_SearchAttribute attr, MSG_SearchValue **value) -{ - XP_ASSERT(elem->IsValid()); - if (attribLocation == attr) - return elem->GetPrettyName (value); - return elem->GetValue (attr, value); -} - -SEARCH_API MSG_SearchError MSG_DestroySearchValue (MSG_SearchValue *value) -{ - XP_ASSERT(value); - return MSG_ResultElement::DestroyValue (value); -} - - -SEARCH_API MSG_SearchError MSG_OpenResultElement (MSG_ResultElement *elem, void *window) -{ - XP_ASSERT(elem && elem->IsValid()); - return elem->Open (window); -} - - -SEARCH_API MWContextType MSG_GetResultElementType (MSG_ResultElement *elem) -{ - XP_ASSERT(elem->IsValid()); - return elem->GetContextType (); -} - - -SEARCH_API MWContext *MSG_IsResultElementOpen (MSG_ResultElement * /*elem*/) -{ - return NULL; //###phil hack for now -} - - -SEARCH_API MSG_SearchError MSG_ModifyLdapResult (MSG_ResultElement *elem, MSG_SearchValue *val) -{ - XP_ASSERT(elem && elem->IsValid()); - XP_ASSERT(val); - XP_ASSERT(elem->m_adapter); - return elem->m_adapter->ModifyResultElement (elem, val); -} - - -SEARCH_API MSG_SearchError MSG_AddLdapResultsToAddressBook(MSG_Pane *pane, MSG_ViewIndex *indices, int count) -{ - XP_ASSERT (pane); - XP_ASSERT (indices); - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - return frame->AddLdapResultsToAddressBook (indices, count); -} - - -SEARCH_API MSG_SearchError MSG_ComposeFromLdapResults(MSG_Pane *pane, MSG_ViewIndex *indices, int count) -{ - XP_ASSERT (pane); - XP_ASSERT (indices); - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - return frame->ComposeFromLdapResults (indices, count); -} - - -SEARCH_API MSG_SearchError MSG_SortResultList (MSG_Pane *pane, MSG_SearchAttribute attrib, XP_Bool descending) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - return frame->SortResultList (attrib, descending); -} - - -SEARCH_API XP_Bool MSG_GoToFolderStatus (MSG_Pane *pane, MSG_ViewIndex *indices, int32 numIndices) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - return frame->GetGoToFolderStatus (indices, numIndices); -} - - -typedef struct -{ - MSG_SearchAttribute attrib; - const char *attribName; -} SearchAttribEntry; - -SearchAttribEntry SearchAttribEntryTable[] = -{ - {attribSubject, "subject"}, - {attribSender, "from"}, - {attribBody, "body"}, - {attribDate, "date"}, - {attribPriority, "priority"}, - {attribMsgStatus, "status"}, - {attribTo, "to"}, - {attribCC, "CC"}, - {attribToOrCC, "to or CC"} -}; - -#if defined(XP_MAC) && defined (__MWERKS__) -#pragma require_prototypes off -#endif - -// Take a string which starts off with an attribute -// return the matching attribute. If the string is not in the table, then we can conclude that it is an arbitrary header -SEARCH_API MSG_SearchError MSG_GetAttributeFromString(const char *string, int16 *attrib) -{ - if (NULL == string || NULL == attrib) - return SearchError_NullPointer; - XP_Bool found = FALSE; - for (int idxAttrib = 0; idxAttrib < sizeof(SearchAttribEntryTable) / sizeof(SearchAttribEntry); idxAttrib++) - { - if (!XP_STRCASECMP(string, SearchAttribEntryTable[idxAttrib].attribName)) - { - found = TRUE; - *attrib = SearchAttribEntryTable[idxAttrib].attrib; - break; - } - } - if (!found) - *attrib = attribOtherHeader; // assume arbitrary header if we could not find the header in the table - return SearchError_Success; // we always succeed now -} - -SEARCH_API MSG_SearchError MSG_GetStringForAttribute(int16 attrib, const char **string) -{ - if (NULL == string) - return SearchError_NullPointer; - XP_Bool found = FALSE; - for (int idxAttrib = 0; idxAttrib < sizeof(SearchAttribEntryTable) / sizeof(SearchAttribEntry); idxAttrib++) - { - // I'm using the idx's as aliases into MSG_SearchAttribute and - // MSG_SearchOperator enums which is legal because of the way the - // enums are defined (starts at 0, numItems at end) - if (attrib == SearchAttribEntryTable[idxAttrib].attrib) - { - found = TRUE; - *string = SearchAttribEntryTable[idxAttrib].attribName; - break; - } - } - // we no longer return invalid attribute. If we cannot find the string in the table, - // then it is an arbitrary header. Return success regardless if found or not -// return (found) ? SearchError_Success : SearchError_InvalidAttribute; - return SearchError_Success; -} - -typedef struct -{ - MSG_SearchOperator op; - const char *opName; -} SearchOperatorEntry; - -SearchOperatorEntry SearchOperatorEntryTable[] = -{ - {opContains, "contains"}, - {opDoesntContain,"doesn't contain"}, - {opIs, "is"}, - {opIsnt, "isn't"}, - {opIsEmpty, "is empty"}, - {opIsBefore, "is before"}, - {opIsAfter, "is after"}, - {opIsHigherThan, "is higher than"}, - {opIsLowerThan, "is lower than"}, - {opBeginsWith, "begins with"}, - {opEndsWith, "ends with"} -}; - -SEARCH_API MSG_SearchError MSG_GetOperatorFromString(const char *string, int16 *op) -{ - if (NULL == string || NULL == op) - return SearchError_NullPointer; - - XP_Bool found = FALSE; - for (int idxOp = 0; idxOp < sizeof(SearchOperatorEntryTable) / sizeof(SearchOperatorEntry); idxOp++) - { - // I'm using the idx's as aliases into MSG_SearchAttribute and - // MSG_SearchOperator enums which is legal because of the way the - // enums are defined (starts at 0, numItems at end) - if (!XP_STRCASECMP(string, SearchOperatorEntryTable[idxOp].opName)) - { - found = TRUE; - *op = SearchOperatorEntryTable[idxOp].op; - break; - } - } - return (found) ? SearchError_Success : SearchError_InvalidOperator; -} - -SEARCH_API MSG_SearchError MSG_GetStringForOperator(int16 op, const char **string) -{ - if (NULL == string) - return SearchError_NullPointer; - XP_Bool found = FALSE; - for (int idxOp = 0; idxOp < sizeof(SearchOperatorEntryTable) / sizeof(SearchOperatorEntry); idxOp++) - { - // I'm using the idx's as aliases into MSG_SearchAttribute and - // MSG_SearchOperator enums which is legal because of the way the - // enums are defined (starts at 0, numItems at end) - if (op == SearchOperatorEntryTable[idxOp].op) - { - found = TRUE; - *string = SearchOperatorEntryTable[idxOp].opName; - break; - } - } - - return (found) ? SearchError_Success : SearchError_InvalidOperator; -} - -static MSG_SearchError msg_GetValidityTableForFolders (MSG_Master *master, MSG_FolderInfo **folderArray, uint16 /* numFolders */, msg_SearchValidityTable **table, XP_Bool forFilters) -{ - MSG_SearchError err = SearchError_Success; - - MSG_FolderInfo *folder = folderArray[0]; - - // determine if the user wants us to search locally or search the server by checking the pref... - // remember: this pref onlines applies for online imap and online news folders...(filters are left alone) - XP_Bool searchServer = master->GetPrefs()->GetSearchServer(); - searchServer = forFilters ? TRUE : searchServer; // small hack to simplify the if statements... - - - if (folder->GetMailFolderInfo()) - { - if (folder->GetType() == FOLDER_IMAPMAIL && searchServer) - { - if (forFilters) - err = gValidityMgr.GetTable (msg_SearchValidityManager::onlineMailFilter, table); - else - err = gValidityMgr.GetTable (msg_SearchValidityManager::onlineMail, table); - } - else - err = gValidityMgr.GetTable (msg_SearchValidityManager::offlineMail, table); - } - else if (folder->IsNews()) - { - MSG_FolderInfoNews *newsFolder = (MSG_FolderInfoNews*) folder; - if (!searchServer || NET_IsOffline()) - err = gValidityMgr.GetTable(msg_SearchValidityManager::localNews, table); - else - { - if (newsFolder->KnowsSearchNntpExtension()) - { - err = gValidityMgr.GetTable (msg_SearchValidityManager::newsEx, table); - if (SearchError_Success == err) - err = gValidityMgr.PostProcessValidityTable (newsFolder->GetHost()); - } - else - err = gValidityMgr.GetTable (msg_SearchValidityManager::news, table); - } - - } - else if (FOLDER_CONTAINERONLY == folder->GetType()) - { - if (!searchServer || NET_IsOffline()) - err = gValidityMgr.GetTable (msg_SearchValidityManager::localNews, table); - else - { - if (folder->KnowsSearchNntpExtension()) - { - MSG_NewsHost *host = master->GetHostTable()->FindNewsHost(folder); - err = gValidityMgr.GetTable (msg_SearchValidityManager::newsEx, table); - if (SearchError_Success == err) - err = gValidityMgr.PostProcessValidityTable (host); - } - else - err = gValidityMgr.GetTable (msg_SearchValidityManager::news, table); - } - } - else if (FOLDER_IMAPSERVERCONTAINER == folder->GetType()) - { - if (forFilters) - err = gValidityMgr.GetTable (msg_SearchValidityManager::onlineMailFilter, table); - else - { - if (searchServer) - err = gValidityMgr.GetTable (msg_SearchValidityManager::onlineMail, table); - else - err = gValidityMgr.GetTable (msg_SearchValidityManager::offlineMail, table); - } - } - else - err = SearchError_InvalidScope; - - return err; -} - - -static MSG_SearchError msg_GetNumAttributesForScopes ( - MSG_Master *master, - MSG_ScopeAttribute scope, - void ** array, - uint16 numFolders, - uint16 *numItems, - XP_Bool forFilters) -{ - if (array == NULL) - return SearchError_NullPointer; - - MSG_SearchError err = SearchError_Success; - msg_SearchValidityTable *table = NULL; - - DIR_Server *server = NULL; - MSG_FolderInfo **folderArray = NULL; - - if (scope != scopeLdapDirectory) - { - folderArray = (MSG_FolderInfo**) array; - err = msg_GetValidityTableForFolders (master, folderArray, numFolders, &table, forFilters); - } - else - { - server = *(DIR_Server**) array; - XP_ASSERT(numFolders == 1); - if (numFolders > 1) - return SearchError_ScopeAgreement; - err = gValidityMgr.GetTable (msg_SearchValidityManager::Ldap, &table); - if (SearchError_Success == err) - gValidityMgr.PostProcessValidityTable (server); - } - - *numItems = 0; - if (SearchError_Success == err) - *numItems = table->GetNumAvailAttribs() + master->GetPrefs()->GetNumCustomHeaders(); - - return err; -} - -static MSG_SearchError msg_GetAttributesForScopes ( - MSG_Master *master, - MSG_ScopeAttribute scope, - void **array, /* return available attribs in this scope */ - uint16 numFolders, /* number of folders in the array */ - MSG_SearchMenuItem *items, /* array of caller-allocated structs */ - uint16 *maxItems, /* in- max array size; out- num returned */ - XP_Bool forFilters) -{ - if (NULL == items || NULL == maxItems || NULL == array) - return SearchError_NullPointer; - - MSG_SearchError err = SearchError_Success; - int cnt = 0; - msg_SearchValidityTable *table = NULL; - - DIR_Server *server = NULL; - MSG_FolderInfo **folderArray = NULL; - - if (scope != scopeLdapDirectory) - { - folderArray = (MSG_FolderInfo**) array; - err = msg_GetValidityTableForFolders (master, folderArray, numFolders, &table, forFilters); - } - else - { - server = *(DIR_Server**) array; - XP_ASSERT(numFolders == 1); - if (numFolders > 1) - return SearchError_ScopeAgreement; - err = gValidityMgr.GetTable (msg_SearchValidityManager::Ldap, &table); - if (SearchError_Success == err) - gValidityMgr.PostProcessValidityTable (server); - } - - if (SearchError_Success == err) - { - // For each attribute, look through its operator array until we find one which - // is available. Since only one available operator tells us that the attrib should - // be included in the list, we can stop there. - XP_Bool found; - int numArbHdrs = master->GetPrefs()->GetNumCustomHeaders(); - uint16 numItems = table->GetNumAvailAttribs() + numArbHdrs; - - if (numItems > *maxItems) - { - XP_ASSERT(0); // caller did not allocate enough menu items!! - numItems = *maxItems; // truncate # of options - } - - uint16 arbHdrCnt = 0; - int idxAttrib = 0; - - // loops while we have attributes we have not checked for and while we have - // space in the array of items to fit these new attributes.... - while (idxAttrib < kNumAttributes && cnt < numItems) - { - found = FALSE; - for (int idxOp = 0; idxOp < kNumOperators && !found; idxOp++) - if (table->GetAvailable (idxAttrib, idxOp)) - { - // I'm using the idx's as aliases into MSG_SearchAttribute and - // MSG_SearchOperator enums which is legal because of the way the - // enums are defined (starts at 0, numItems at end) - items[cnt].attrib = idxAttrib; - items[cnt].isEnabled = table->GetEnabled (idxAttrib, idxOp); - if (scope != scopeLdapDirectory) - { - char * name; - if (idxAttrib == attribOtherHeader && numArbHdrs) // do we have any arbitrary headers? - { - name = master->GetPrefs()->GetNthCustomHeader(arbHdrCnt); - arbHdrCnt++; // our offset for custom header prefs - numArbHdrs--; // we just processed a custom hdr - XP_STRNCPY_SAFE (items[cnt].name, name, sizeof(items[cnt].name)); - XP_FREEIF(name); // free memory allocated by prefs... - cnt++; - found = TRUE; - break; - } - else - if (idxAttrib != attribOtherHeader) - { - // ##mscott: hack...attribAgeInDays is not in the proper order for the resource file... - if (idxAttrib == attribAgeInDays) // not indexed properly in the resource file - name = XP_GetString(XP_SEARCH_AGE); - else - name = XP_GetString(idxAttrib + XP_SEARCH_SUBJECT); - XP_STRNCPY_SAFE (items[cnt].name, name, sizeof(items[cnt].name)); - cnt++; - found = TRUE; - break; - } - } - else - { - DIR_AttributeId id; - if (SearchError_Success == MSG_SearchAttribToDirAttrib ((MSG_SearchAttribute) idxAttrib, &id)) - { - const char *name = DIR_GetAttributeName (server, id); - XP_STRNCPY_SAFE (items[cnt].name, name, sizeof(items[cnt].name)); - - } - else - items[cnt].name[0] = '\0'; - cnt++; - found = TRUE; - break; - } - } - // don't increment idxAtrib if it is an attribOtherHeader and we still have a arbitrary hdrs that - // need processing. If we just looped through all the ops and did not find an available op for the - // attrib, then we can also increment to the next attibute - if (idxAttrib != attribOtherHeader || !numArbHdrs || !found) // don't increment if we still have more arbitrary hdrs to process - idxAttrib++; - } - } - *maxItems = cnt; // final number of attributes we added ot the items array - return err; -} - - -SEARCH_API XP_Bool MSG_ScopeUsesCustomHeaders( - MSG_Master * master, - MSG_ScopeAttribute scope, - void * selection, /* could be a folder or LDAP server. Determined by the scope */ - XP_Bool forFilters) /* is this a filter we are talking about? */ -{ - MSG_FolderInfo * folder = NULL; - - if (scope != scopeLdapDirectory) - { - folder = (MSG_FolderInfo *) selection; // safe cast because we used scope to determine it was a folderInfo - - // determine if the user wants us to search locally or search the server by checking the pref... - // remember: this pref onlines applies for online imap and online news folders...(filters are left alone) - XP_Bool searchServer = master->GetPrefs()->GetSearchServer(); - searchServer = forFilters ? TRUE : searchServer; // small hack to simplify the if statements... - if (folder) - { - if (folder->TestFlag(MSG_FOLDER_FLAG_NEWSGROUP) || folder->TestFlag(MSG_FOLDER_FLAG_NEWS_HOST)) - { - // if we are searching the server && are not in offline mode, then we need to - // ask the server if it supports news extentions. If it does, we support custom headers, - // otherwise we don't. - if (searchServer && !NET_IsOffline() && !folder->KnowsSearchNntpExtension()) - return FALSE; - } - return TRUE; - } - } - return FALSE; // currently LDAP doesn't support custom headers. ##mscott -} - -SEARCH_API XP_Bool MSG_IsStringAttribute( - MSG_SearchAttribute attrib) -{ - return IsStringAttribute(attrib); -} - -SEARCH_API MSG_SearchError MSG_GetNumAttributesForFilterScopes ( - MSG_Master *master, - MSG_ScopeAttribute scope, - void ** array, /* return available attribs in this scope */ - uint16 numFolders, /* number of folders in the array */ - uint16 *numItems) /* out - number of attributes for the filter scope */ -{ - return msg_GetNumAttributesForScopes (master, scope, array, numFolders, numItems, TRUE); -} - -SEARCH_API MSG_SearchError MSG_GetAttributesForFilterScopes ( - MSG_Master *master, - MSG_ScopeAttribute scope, - void **array, /* return available attribs in this scope */ - uint16 numFolders, /* number of folders in the array */ - MSG_SearchMenuItem *items, /* array of caller-allocated structs */ - uint16 *maxItems) /* in- max array size; out- num returned */ -{ - return msg_GetAttributesForScopes (master, scope, array, numFolders, items, maxItems, TRUE); -} - -SEARCH_API MSG_SearchError MSG_GetNumAttributesForSearchScopes ( - MSG_Master *master, - MSG_ScopeAttribute scope, - void ** array, /* return available attribs in this scope */ - uint16 numFolders, /* number of folders in the array */ - uint16 *numItems) /* out - number of attributes for the scope */ -{ - return msg_GetNumAttributesForScopes (master, scope, array, numFolders, numItems, FALSE); -} - -SEARCH_API MSG_SearchError MSG_GetAttributesForSearchScopes ( - MSG_Master *master, - MSG_ScopeAttribute scope, - void **array, /* return available attribs in this scope */ - uint16 numFolders, /* number of folders in the array */ - MSG_SearchMenuItem *items, /* array of caller-allocated structs */ - uint16 *maxItems) /* in- max array size; out- num returned */ -{ - return msg_GetAttributesForScopes (master, scope, array, numFolders, items, maxItems, FALSE); -} - - -static MSG_SearchError msg_GetOperatorsForScopes ( - MSG_Master *master, - MSG_ScopeAttribute scope, - void **array, - uint16 numFolders, - MSG_SearchAttribute attrib, - MSG_SearchMenuItem *items, - uint16 *maxItems, - XP_Bool forFilters) -{ - if (NULL == items || NULL == maxItems || NULL == array) - return SearchError_NullPointer; - - int cnt = 0; - msg_SearchValidityTable *table = NULL; - MSG_SearchError err = SearchError_Success; - - MSG_FolderInfo **folderArray = NULL; - DIR_Server *server = NULL; - - if (scope != scopeLdapDirectory) - { - folderArray = (MSG_FolderInfo **) array; - err = msg_GetValidityTableForFolders (master, folderArray, numFolders, &table, forFilters); - } - else - { - server = *(DIR_Server**) array; - err = gValidityMgr.GetTable (msg_SearchValidityManager::Ldap, &table); - } - - // We know which attrib we're interested in, so we only need one 'for' loop - // to look through the operators which match. We need to know all of the - // matching operators, not just the first (as above) - - if (SearchError_Success == err) - { - for (int idxOp = 0; idxOp < kNumOperators && cnt < *maxItems; idxOp++) - if (table->GetAvailable (attrib, idxOp)) - { - // If we're talking about an LDAP server which can't do efficient - // wildcard matching, then don't show the operators which generate that syntax - if (scope == scopeLdapDirectory && (idxOp == opContains || idxOp == opDoesntContain) && !server->efficientWildcards) - continue; - - char * name; - // ## mscott: hack because is greater than and is less than are not in the proper order in the resource file... - if (idxOp == opIsGreaterThan) - name = XP_GetString(XP_SEARCH_IS_GREATER); - else - if (idxOp == opIsLessThan) - name = XP_GetString(XP_SEARCH_IS_LESS); - else - name = XP_GetString(idxOp + XP_SEARCH_CONTAINS); - - // This uses idxOp as an alias into MSG_SearchOperator - items[cnt].attrib = idxOp; - items[cnt].isEnabled = table->GetEnabled (attrib, idxOp); -// char *name = XP_GetString (idxOp + XP_SEARCH_CONTAINS); - XP_STRNCPY_SAFE (items[cnt].name, name, sizeof(items[cnt].name)); - cnt++; - } - } - - *maxItems = cnt; - return err; -} - - -SEARCH_API MSG_SearchError MSG_GetOperatorsForFilterScopes ( - MSG_Master *master, - MSG_ScopeAttribute scope, - void **array, - uint16 numFolders, - MSG_SearchAttribute attrib, - MSG_SearchMenuItem *items, - uint16 *maxItems) -{ - return msg_GetOperatorsForScopes (master, scope, array, numFolders, attrib, items, maxItems, TRUE); -} - - -SEARCH_API MSG_SearchError MSG_GetOperatorsForSearchScopes ( - MSG_Master *master, - MSG_ScopeAttribute scope, - void **array, - uint16 numFolders, - MSG_SearchAttribute attrib, - MSG_SearchMenuItem *items, - uint16 *maxItems) -{ - return msg_GetOperatorsForScopes (master, scope, array, numFolders, attrib, items, maxItems, FALSE); -} - - -static XP_Bool msg_FoldersAreHomogeneous (MSG_FolderInfo **folders, uint16 folderCount) -{ - FolderType firstType=(FolderType)0; - XP_Bool firstIsRFC977bis = FALSE; - for (int i = 0; i < folderCount; i++) - { - FolderType type = folders[i]->GetType(); - XP_Bool isRFC977bis = folders[i]->KnowsSearchNntpExtension(); - if (i == 0) - { - firstType = type; - firstIsRFC977bis = isRFC977bis; - } - else - { - if (type != firstType) - return FALSE; - if (isRFC977bis != firstIsRFC977bis) - return FALSE; - } - } - return TRUE; -} - - -SEARCH_API MSG_SearchError MSG_GetScopeMenuForSearchMessages ( - MSG_Master *master, - MSG_FolderInfo **selArray, - uint16 selCount, - MSG_SearchMenuItem *items, - uint16 *maxItems) -{ - if (!master || !selArray || !items || !maxItems) - { - *maxItems = 0; - return SearchError_NullPointer; - } - - if (*maxItems < 6) - { - *maxItems = 0; - return SearchError_ListTooSmall; - } - - int idx = 0; - if (selCount == 1) - { - items[idx].attrib = -1; //###phil hacky way to tell the FE that "selected" is enabled - PR_snprintf (items[idx++].name, kSearchMenuLength, XP_GetString(MK_SEARCH_SCOPE_ONE), selArray[0]->GetPrettiestName()); - } - else if (msg_FoldersAreHomogeneous (selArray, selCount)) - { - items[idx].attrib = -1; //###phil hacky way to tell the FE that "selected" is enabled - XP_STRNCPY_SAFE (items[idx++].name, XP_GetString(MK_SEARCH_SCOPE_SELECTED), kSearchMenuLength ); - } - - if (master->GetPrefs()->GetMailServerIsIMAP4()) - { - items[idx].attrib = scopeMailFolder; - XP_STRNCPY_SAFE (items[idx++].name, XP_GetString(MK_SEARCH_SCOPE_ONLINE_MAIL), kSearchMenuLength); - } - - items[idx].attrib = scopeMailFolder; - XP_STRNCPY_SAFE (items[idx++].name, XP_GetString(MK_SEARCH_SCOPE_OFFLINE_MAIL), kSearchMenuLength); - - items[idx].attrib = scopeNewsgroup; - XP_STRNCPY_SAFE (items[idx++].name, XP_GetString(MK_SEARCH_SCOPE_SUBSCRIBED_NEWS), kSearchMenuLength); - - int i; - XP_Bool allAreRFC977bis = TRUE; - for (i = 0; i < selCount && allAreRFC977bis; i++) - allAreRFC977bis = selArray[i]->KnowsSearchNntpExtension(); - if (allAreRFC977bis) - { - items[idx].attrib = scopeAllSearchableGroups; - XP_STRNCPY_SAFE (items[idx++].name, XP_GetString(MK_SEARCH_SCOPE_ALL_NEWS), kSearchMenuLength); - } - - *maxItems = idx; - - for (i = 0; i < idx; i++) - items[i].isEnabled = TRUE; - - return SearchError_Success; -} - -static MSG_SearchAttribute msg_DirAttribToSearchAttrib (DIR_AttributeId id) -{ - switch (id) - { - case cn: return attribCommonName; - case mail : return attrib822Address; - case telephonenumber : return attribPhoneNumber; - case o: return attribOrganization; - case ou: return attribOrgUnit; - case l: return attribLocality; - case street : return attribStreetAddress; - case givenname :return attribGivenName; - case sn: return attribSurname; - case custom1: return attribCustom1; - case custom2: return attribCustom2; - case custom3: return attribCustom3; - case custom4: return attribCustom4; - case custom5: return attribCustom5; - default: - XP_ASSERT(FALSE); - } - return attribCommonName; // shouldn't get here -} - - -SEARCH_API MSG_SearchError MSG_GetBasicLdapSearchAttributes (DIR_Server *server, MSG_SearchMenuItem *items, int *maxItems) -{ - XP_ASSERT(server && items && maxItems); - if (!server || !items || !maxItems) - return SearchError_NullPointer; - - DIR_AttributeId defaults[4] = {cn, mail, o, ou}; - MSG_SearchAttribute attrib; - const char *attribName = NULL; - - for (int i = 0; i < *maxItems; i++) - { - if (i < server->basicSearchAttributesCount) - { - attrib = msg_DirAttribToSearchAttrib (server->basicSearchAttributes[i]); - attribName = DIR_GetAttributeName (server, server->basicSearchAttributes[i]); - } - else - { - attrib = msg_DirAttribToSearchAttrib (defaults[i]); - attribName = DIR_GetAttributeName (server, defaults[i]); - } - - items[i].attrib = attrib; - items[i].isEnabled = TRUE; //probably pointless these days? - XP_ASSERT(attribName); - if (attribName) - XP_STRNCPY_SAFE (items[i].name, attribName, kSearchMenuLength); - } - - return SearchError_Success; -} - - -SEARCH_API MSG_SearchError MSG_SearchAttribToDirAttrib (MSG_SearchAttribute attrib, DIR_AttributeId *id) -{ - switch (attrib) - { - case attribCommonName: *id = cn; break; - case attrib822Address : *id = mail; break; - case attribPhoneNumber : *id = telephonenumber; break; - case attribOrganization: *id = o; break; - case attribOrgUnit: *id = ou; break; - case attribLocality: *id = l; break; - case attribStreetAddress : *id = street; break; - case attribGivenName : *id = givenname; break; - case attribSurname: *id = sn; break; - case attribCustom1: *id = custom1; break; - case attribCustom2: *id = custom2; break; - case attribCustom3: *id = custom3; break; - case attribCustom4: *id = custom4; break; - case attribCustom5: *id = custom5; break; - default: - return SearchError_ScopeAgreement; - } - return SearchError_Success; -} - -SEARCH_API MSG_SearchError MSG_GetSearchWidgetForAttribute ( - MSG_SearchAttribute attrib, - MSG_SearchValueWidget *widget) -{ - if (NULL == widget) - return SearchError_NullPointer; - - MSG_SearchError err = SearchError_Success; - - switch (attrib) - { - case attribDate: - *widget = widgetDate; - break; - case attribAgeInDays: - *widget = widgetInt; - break; - case attribMsgStatus: - case attribPriority: - *widget = widgetMenu; - break; - default: - if (attrib < kNumAttributes) - if (attrib != attribLocation) - *widget = widgetText; - else - err = SearchError_ScopeAgreement; - else - err = SearchError_InvalidAttribute; - } - return err; -} - -SEARCH_API MSG_PRIORITY MSG_GetPriorityFromString(const char *priority) -{ - if (strcasestr(priority, "Normal") != NULL) - return MSG_NormalPriority; - else if (strcasestr(priority, "Lowest") != NULL) - return MSG_LowestPriority; - else if (strcasestr(priority, "Highest") != NULL) - return MSG_HighestPriority; - else if (strcasestr(priority, "High") != NULL || - strcasestr(priority, "Urgent") != NULL) - return MSG_HighPriority; - else if (strcasestr(priority, "Low") != NULL || - strcasestr(priority, "Non-urgent") != NULL) - return MSG_LowPriority; - else if (strcasestr(priority, "1") != NULL) - return MSG_HighestPriority; - else if (strcasestr(priority, "2") != NULL) - return MSG_HighPriority; - else if (strcasestr(priority, "3") != NULL) - return MSG_NormalPriority; - else if (strcasestr(priority, "4") != NULL) - return MSG_LowPriority; - else if (strcasestr(priority, "5") != NULL) - return MSG_LowestPriority; - else - return MSG_NormalPriority; - //return MSG_NoPriority; -} - - -SEARCH_API void MSG_GetUntranslatedPriorityName (MSG_PRIORITY p, char *outName, uint16 maxOutName) -{ - char *tmpOutName = NULL; - switch (p) - { - case MSG_PriorityNotSet: - case MSG_NoPriority: - tmpOutName = "None"; - break; - case MSG_LowestPriority: - tmpOutName = "Lowest"; - break; - case MSG_LowPriority: - tmpOutName = "Low"; - break; - case MSG_NormalPriority: - tmpOutName = "Normal"; - break; - case MSG_HighPriority: - tmpOutName = "High"; - break; - case MSG_HighestPriority: - tmpOutName = "Highest"; - break; - default: - XP_ASSERT(FALSE); - } - - if (tmpOutName) - XP_STRNCPY_SAFE (outName, tmpOutName, maxOutName); - else - outName[0] = '\0'; -} - - -SEARCH_API void MSG_GetPriorityName (MSG_PRIORITY p, char *outName, uint16 maxOutName) -{ - char *tmpOutName = NULL; - switch (p) - { - case MSG_PriorityNotSet: - case MSG_NoPriority: - tmpOutName = XP_GetString(XP_PRIORITY_NONE); - break; - case MSG_LowestPriority: - tmpOutName = XP_GetString(XP_PRIORITY_LOWEST); - break; - case MSG_LowPriority: - tmpOutName = XP_GetString(XP_PRIORITY_LOW); - break; - case MSG_NormalPriority: - tmpOutName = XP_GetString(XP_PRIORITY_NORMAL); - break; - case MSG_HighPriority: - tmpOutName = XP_GetString(XP_PRIORITY_HIGH); - break; - case MSG_HighestPriority: - tmpOutName = XP_GetString(XP_PRIORITY_HIGHEST); - break; - default: - XP_ASSERT(FALSE); - } - - if (tmpOutName) - XP_STRNCPY_SAFE (outName, tmpOutName, maxOutName); - else - outName[0] = '\0'; -} - - -SEARCH_API void MSG_GetStatusName (uint32 s, char *outName, uint16 maxOutName) -{ - char *tmpOutName = NULL; -#define MSG_STATUS_MASK (MSG_FLAG_READ | MSG_FLAG_REPLIED | MSG_FLAG_FORWARDED | MSG_FLAG_NEW) - uint32 maskOut = (s & MSG_STATUS_MASK); - - // diddle the flags to pay attention to the most important ones first, if multiple - // flags are set. Should remove this code from the winfe. - if (maskOut & MSG_FLAG_NEW) - maskOut = MSG_FLAG_NEW; - if ( maskOut & MSG_FLAG_REPLIED && - maskOut & MSG_FLAG_FORWARDED ) - maskOut = MSG_FLAG_REPLIED|MSG_FLAG_FORWARDED; - else if ( maskOut & MSG_FLAG_FORWARDED ) - maskOut = MSG_FLAG_FORWARDED; - else if ( maskOut & MSG_FLAG_REPLIED ) - maskOut = MSG_FLAG_REPLIED; - - switch (maskOut) - { - case MSG_FLAG_READ: - tmpOutName = XP_GetString(XP_STATUS_READ); - break; - case MSG_FLAG_REPLIED: - tmpOutName = XP_GetString(XP_STATUS_REPLIED); - break; - case MSG_FLAG_FORWARDED: - tmpOutName = XP_GetString(XP_STATUS_FORWARDED); - break; - case MSG_FLAG_FORWARDED|MSG_FLAG_REPLIED: - tmpOutName = XP_GetString(XP_STATUS_REPLIED_AND_FORWARDED); - break; - case MSG_FLAG_NEW: - tmpOutName = XP_GetString(XP_STATUS_NEW); - break; - default: - // This is fine, status may be "unread" for example - break; - } - - if (tmpOutName) - XP_STRNCPY_SAFE (outName, tmpOutName, maxOutName); - else - outName[0] = '\0'; -} - -SEARCH_API uint32 MSG_GetStatusValueFromName(char *name) -{ - char *tmpOutName; - - tmpOutName = XP_GetString(XP_STATUS_READ); - if (tmpOutName && !XP_STRCMP(tmpOutName, name)) - return MSG_FLAG_READ; - tmpOutName = XP_GetString(XP_STATUS_REPLIED); - if (tmpOutName && !XP_STRCMP(tmpOutName, name)) - return MSG_FLAG_REPLIED; - tmpOutName = XP_GetString(XP_STATUS_FORWARDED); - if (tmpOutName && !XP_STRCMP(tmpOutName, name)) - return MSG_FLAG_FORWARDED; - tmpOutName = XP_GetString(XP_STATUS_REPLIED_AND_FORWARDED); - if (tmpOutName && !XP_STRCMP(tmpOutName, name)) - return MSG_FLAG_FORWARDED|MSG_FLAG_REPLIED; - tmpOutName = XP_GetString(XP_STATUS_NEW); - if (tmpOutName && !XP_STRCMP(tmpOutName, name)) - return MSG_FLAG_NEW; - return 0; -} - -SEARCH_API MSG_SearchError MSG_GetLdapObjectClasses (MSG_Pane *pane, - char **objectClassList, uint16 *maxItems) -{ - XP_ASSERT(objectClassList); - XP_ASSERT(maxItems); - - MSG_SearchFrame *frame = MSG_SearchFrame::FromPane (pane); - if (!frame) - return SearchError_InvalidPane; - return frame->GetLdapObjectClasses (objectClassList, maxItems); -} - - -SEARCH_API MSG_SearchError MSG_AddAllSearchableGroupsStatus (MSG_Pane * /*searchPane*/, XP_Bool * /*enabled*/) -{ - return SearchError_NotImplemented; -} - - -SEARCH_API MSG_SearchError MSG_AddAllSearchableGroups (MSG_Pane * /*searchPane*/) -{ - return SearchError_NotImplemented; -} - - -//----------------------------------------------------------------------------- -//--------------------- These are called from libnet -------------------------- -//----------------------------------------------------------------------------- - - -// Since each search can run over multiple scopes, and scopes of different -// types (e.g. online mail and offline mail), we use one meta-URL of the -// format "search:", which watches to see when each scope finishes, and -// then fires off the next one in serial. -// -SEARCH_API int MSG_ProcessSearch (MWContext *context) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromContext (context); - XP_ASSERT(frame); - - return frame->TimeSlice(); -} - - -SEARCH_API int MSG_InterruptSearch (MWContext *context) -{ - MSG_SearchFrame *frame = MSG_SearchFrame::FromContext (context); - XP_ASSERT(frame); - - if (frame) - { - msg_SearchAdapter *adapter = frame->GetRunningAdapter(); - if (adapter) - return frame->GetRunningAdapter()->Abort(); - } - - return 0; -} - -SEARCH_API MSG_SearchTermArray *MSG_CreateSearchTermArray() -{ - return new MSG_SearchTermArray; -} - -SEARCH_API MSG_SearchError MSG_SearchGetNumTerms(MSG_SearchTermArray *terms, int32 *numTerms) -{ - if (!terms || !numTerms) - return SearchError_NullPointer; - *numTerms = terms->GetSize(); - return SearchError_Success; -} - -SEARCH_API MSG_SearchError MSG_AddSearchTermToArray( - MSG_SearchTermArray *array, - MSG_SearchAttribute attrib, /* attribute for this term */ - MSG_SearchOperator op, /* operator e.g. opContains */ - MSG_SearchValue *value, /* value e.g. "Fred" */ - XP_Bool BooleanAND, /* boolean AND operator? */ - char * arbitraryHeader) /* user defined arbitrary header. ignored unless attrib = attribOtherHeader */ -{ - MSG_SearchTerm *newSearchTerm = new MSG_SearchTerm(attrib, op, value, BooleanAND, arbitraryHeader); - if (newSearchTerm == NULL) - return SearchError_OutOfMemory; - array->Add(newSearchTerm); - return SearchError_Success; -} - -SEARCH_API MSG_SearchError MSG_SearchGetTerm(MSG_SearchTermArray *array, int32 termIndex, - MSG_SearchAttribute *attrib, /* attribute for this term */ - MSG_SearchOperator *op, /* operator e.g. opContains */ - MSG_SearchValue *value) /* value e.g. "Fred" */ -{ - MSG_SearchTerm *term = (MSG_SearchTerm *) array->GetAt(termIndex); - if (term == NULL) - return SearchError_InvalidIndex; - *attrib = term->m_attribute; - *op = term->m_operator; - *value = term->m_value; - return SearchError_Success; -} - - -SEARCH_API void MSG_DestroySearchTermArray(MSG_SearchTermArray *array) -{ - delete array; -} - - -SEARCH_API char *MSG_EscapeSearchUrl (const char *nntpCommand) -{ - char *result = NULL; - // max escaped length is two extra characters for every character in the cmd. - char *scratchBuf = (char*) XP_ALLOC (3*XP_STRLEN(nntpCommand) + 1); - if (scratchBuf) - { - char *scratchPtr = scratchBuf; - while (1) - { - char ch = *nntpCommand++; - if (!ch) - break; - if (ch == '#' || ch == '?' || ch == '@' || ch == '\\') - { - *scratchPtr++ = '\\'; - sprintf (scratchPtr, "%X", ch); - scratchPtr += 2; - } - else - *scratchPtr++ = ch; - } - *scratchPtr = '\0'; - result = XP_STRDUP (scratchBuf); // realloc down to smaller size - XP_FREE (scratchBuf); - } - return result; -} - - -static -char *msg_EscapeImapSearchProtocol(const char *imapCommand) -{ - char *result = NULL; - // max escaped length is one extra character for every character in the cmd. - char *scratchBuf = (char*) XP_ALLOC (2*XP_STRLEN(imapCommand) + 1); - if (scratchBuf) - { - char *scratchPtr = scratchBuf; - while (1) - { - char ch = *imapCommand++; - if (!ch) - break; - if (ch == '\\') - { - *scratchPtr++ = '\\'; - *scratchPtr++ = '\\'; - } - else - *scratchPtr++ = ch; - } - *scratchPtr = '\0'; - result = XP_STRDUP (scratchBuf); // realloc down to smaller size - XP_FREE (scratchBuf); - } - return result; -} - - -SEARCH_API char *MSG_UnEscapeSearchUrl (const char *commandSpecificData) -{ - char *result = (char*) XP_ALLOC (XP_STRLEN(commandSpecificData) + 1); - if (result) - { - char *resultPtr = result; - while (1) - { - char ch = *commandSpecificData++; - if (!ch) - break; - if (ch == '\\') - { - char scratchBuf[3]; - scratchBuf[0] = (char) *commandSpecificData++; - scratchBuf[1] = (char) *commandSpecificData++; - scratchBuf[2] = '\0'; - int accum = 0; - sscanf (scratchBuf, "%X", &accum); - *resultPtr++ = (char) accum; - } - else - *resultPtr++ = ch; - } - *resultPtr = '\0'; - } - return result; -} - - -SEARCH_API XP_Bool MSG_AcquireEditHeadersSemaphore (MSG_Master * master, void * holder) -{ - if (master) - return master->AcquireEditHeadersSemaphore(holder); - else - return FALSE; -} - - -SEARCH_API XP_Bool MSG_ReleaseEditHeadersSemaphore (MSG_Master * master, void * holder) -{ - if (master) - return master->ReleaseEditHeadersSemaphore(holder); - return FALSE; -} - - -//----------------------------------------------------------------------------- -//------------------- Implementation of public opaque types ------------------- -//----------------------------------------------------------------------------- - -uint32 MSG_ResultElement::m_expectedMagic = 0x73726573; // 'sres' -uint32 MSG_SearchTerm::m_expectedMagic = 0x7374726d; // 'strm' -uint32 MSG_ScopeTerm::m_expectedMagic = 0x7373636f; // 'ssco' -uint32 MSG_SearchFrame::m_expectedMagic = 0x7366726d; // 'sfrm' - -//----------------------------------------------------------------------------- -// MSG_ResultElement implementation -//----------------------------------------------------------------------------- - - -MSG_ResultElement::MSG_ResultElement(msg_SearchAdapter *adapter) : msg_OpaqueObject (m_expectedMagic) -{ - m_adapter = adapter; -} - - -MSG_ResultElement::~MSG_ResultElement () -{ - for (int i = 0; i < m_valueList.GetSize(); i++) - { - MSG_SearchValue *value = m_valueList.GetAt(i); - if (value->attribute == attribJpegFile) - { - char *url = XP_PlatformFileToURL (value->u.string); - char *tmp = url + XP_STRLEN("file://"); - XP_FileRemove (tmp, xpMailFolder /*###phil hacky*/); - XP_FREE(url); - } - MSG_ResultElement::DestroyValue (value); - } -} - - -MSG_SearchError MSG_ResultElement::AddValue (MSG_SearchValue *value) -{ - m_valueList.Add (value); - return SearchError_Success; -} - - -MSG_SearchError MSG_ResultElement::DestroyValue (MSG_SearchValue *value) -{ - if (IsStringAttribute(value->attribute)) - { - XP_ASSERT(value->u.string); - XP_FREE (value->u.string); - } - delete value; - return SearchError_Success; -} - - -MSG_SearchError MSG_ResultElement::AssignValues (MSG_SearchValue *src, MSG_SearchValue *dst) -{ - // Yes, this could be an operator overload, but MSG_SearchValue is totally public, so I'd - // have to define a derived class with nothing by operator=, and that seems like a bit much - MSG_SearchError err = SearchError_Success; - switch (src->attribute) - { - case attribPriority: - dst->attribute = src->attribute; - dst->u.priority = src->u.priority; - break; - case attribDate: - dst->attribute = src->attribute; - dst->u.date = src->u.date; - break; - case attribMsgStatus: - dst->attribute = src->attribute; - dst->u.msgStatus = src->u.msgStatus; - break; - case attribMessageKey: - dst->attribute = src->attribute; - dst->u.key = src->u.key; - break; - case attribAgeInDays: - dst->attribute = src->attribute; - // hack, mscott...setting age to 1 by default until the FEs implement Age by day... - // this will of course break the purge feature right now. WILL REPLACE ONCE FEs implement age by Day - // ##mscott WINFE has checked in age in days support... -#if defined(XP_WIN) - dst->u.age = src->u.age; -#else - dst->u.age = 1; // only temporary! -#endif - - break; - default: - if (src->attribute < kNumAttributes) - { - XP_ASSERT(IsStringAttribute(src->attribute)); - dst->attribute = src->attribute; - dst->u.string = XP_STRDUP(src->u.string); - if (!dst->u.string) - err = SearchError_OutOfMemory; - } - else - err = SearchError_InvalidAttribute; - } - return err; -} - - -MSG_SearchError MSG_ResultElement::GetValue (MSG_SearchAttribute attrib, MSG_SearchValue **outValue) const -{ - MSG_SearchError err = SearchError_ScopeAgreement; - MSG_SearchValue *value = NULL; - *outValue = NULL; - - for (int i = 0; i < m_valueList.GetSize() && err != SearchError_Success; i++) - { - value = m_valueList.GetAt(i); - if (attrib == value->attribute) - { - *outValue = new MSG_SearchValue; - if (*outValue) - { - err = AssignValues (value, *outValue); - err = SearchError_Success; - } - else - err = SearchError_OutOfMemory; - } - } - - // No need to store the folderInfo separately; we can always get it if/when - // we need it. This code is to support "view thread context" in the search dialog - if (SearchError_ScopeAgreement == err && attrib == attribFolderInfo) - { - MSG_FolderInfo *targetFolder = m_adapter->FindTargetFolder (this); - if (targetFolder) - { - *outValue = new MSG_SearchValue; - if (*outValue) - { - (*outValue)->u.folder = targetFolder; - (*outValue)->attribute = attribFolderInfo; - err = SearchError_Success; - } - } - } - - return err; -} - - -const MSG_SearchValue *MSG_ResultElement::GetValueRef (MSG_SearchAttribute attrib) const -{ - MSG_SearchValue *value = NULL; - for (int i = 0; i < m_valueList.GetSize(); i++) - { - value = m_valueList.GetAt(i); - if (attrib == value->attribute) - return value; - } - return NULL; -} - - -MSG_SearchError MSG_ResultElement::GetPrettyName (MSG_SearchValue **value) -{ - MSG_SearchError err = GetValue (attribLocation, value); - if (SearchError_Success == err) - { - MSG_FolderInfo *folder = m_adapter->m_scope->m_folder; - MSG_NewsHost *host = NULL; - if (folder) - { - // Find the news host because only the host knows whether pretty - // names are supported. - if (FOLDER_CONTAINERONLY == folder->GetType()) - host = ((MSG_NewsFolderInfoContainer*) folder)->GetHost(); - else if (folder->IsNews()) - host = folder->GetNewsFolderInfo()->GetHost(); - - // Ask the host whether it knows pretty names. It isn't strictly - // necessary to avoid calling folder->GetPrettiestName() since it - // does the right thing. But we do have to find the folder from the host. - if (host && host->QueryExtension ("LISTPNAMES")) - { - folder = host->FindGroup ((*value)->u.string); - if (folder) - { - char *tmp = XP_STRDUP (folder->GetPrettiestName()); - if (tmp) - { - XP_FREE ((*value)->u.string); - (*value)->u.string = tmp; - } - } - } - } - } - return err; -} - -int MSG_ResultElement::CompareByFolderInfoPtrs (const void *e1, const void *e2) -{ - MSG_ResultElement * re1 = *(MSG_ResultElement **) e1; - MSG_ResultElement * re2 = *(MSG_ResultElement **) e2; - - // get the src folder for each one - - const MSG_SearchValue * v1 = re1->GetValueRef(attribFolderInfo); - const MSG_SearchValue * v2 = re2->GetValueRef(attribFolderInfo); - - if (!v1 || !v2) - return 0; - - return (v1->u.folder - v2->u.folder); -} - - - -int MSG_ResultElement::Compare (const void *e1, const void *e2) -{ - // Bad idea to cast away const, but they're my objects anway. - // Maybe if we go through and const everything this should be a const ptr. - MSG_ResultElement *re1 = *(MSG_ResultElement**) e1; - MSG_ResultElement *re2 = *(MSG_ResultElement**) e2; - - XP_ASSERT(re1->IsValid()); - XP_ASSERT(re2->IsValid()); - - MSG_SearchAttribute attrib = re1->m_adapter->m_scope->m_frame->m_sortAttribute; - - const MSG_SearchValue *v1 = re1->GetValueRef (attrib); - const MSG_SearchValue *v2 = re2->GetValueRef (attrib); - - int ret = 0; - if (!v1 || !v2) - return ret; // search result doesn't contain the attrib we want to sort on - - switch (attrib) - { - case attribDate: - { - // on Win 3.1, the requisite 'int' return type is a short, so use a - // real time_t for comparison - time_t date = v1->u.date - v2->u.date; - if (date) - ret = ((long)date) < 0 ? -1 : 1; - else - ret = 0; - } - break; - case attribPriority: - ret = v1->u.priority - v2->u.priority; - break; - case attribMsgStatus: - { - // Here's an arbitrary sorting protocol for msg status - uint32 s1, s2; - - s1 = v1->u.msgStatus & ~MSG_FLAG_REPLIED; - s2 = v2->u.msgStatus & ~MSG_FLAG_REPLIED; - if (s1 || s2) - ret = s1 - s2; - else - { - s1 = v1->u.msgStatus & ~MSG_FLAG_FORWARDED; - s2 = v2->u.msgStatus & ~MSG_FLAG_FORWARDED; - if (s1 || s2) - ret = s1 - s2; - else - { - s1 = v1->u.msgStatus & ~MSG_FLAG_READ; - s2 = v2->u.msgStatus & ~MSG_FLAG_READ; - if (s1 || s2) - ret = s1 - s2; - else - // statuses don't contain any flags we're interested in, - // so they're equal as far as we care - ret = 0; - } - } - } - break; - default: - if (attrib == attribSubject) - { - // Special case for subjects, so "Re:foo" sorts under 'f' not 'r' - const char *s1 = v1->u.string; - const char *s2 = v2->u.string; - msg_StripRE (&s1, NULL); - msg_StripRE (&s2, NULL); - ret = strcasecomp (s1, s2); - } - else - ret = strcasecomp (v1->u.string, v2->u.string); - } - - // qsort's default sort order is ascending, so in order to get descending - // behavior, we'll tell qsort a lie and reverse the comparison order. - if (re1->m_adapter->m_scope->m_frame->m_descending && ret != 0) - if (ret < 0) - ret = 1; - else - ret = -1; - - // <0 --> e1 less than e2 - // 0 --> e1 equal to e2 - // >0 --> e1 greater than e2 - return ret; -} - - -MWContextType MSG_ResultElement::GetContextType () -{ - MWContextType type=(MWContextType)0; - switch (m_adapter->m_scope->m_attribute) - { - case scopeMailFolder: - type = MWContextMailMsg; - break; - case scopeOfflineNewsgroup: // added by mscott could be bug fix... - case scopeNewsgroup: - case scopeAllSearchableGroups: - type = MWContextNewsMsg; - break; - case scopeLdapDirectory: - type = MWContextBrowser; - break; - default: - XP_ASSERT(FALSE); // should never happen - } - return type; -} - - -MSG_SearchError MSG_ResultElement::Open (void *window) -{ - MSG_MessagePane *msgPane = NULL; - MWContext *context = NULL; - - // ###phil this is a little ugly, but I'll wait before spending more time on it - // until the libnet rework is done and I know what kind of context we'll end up with - - if (window) - { - if (m_adapter->m_scope->m_attribute != scopeLdapDirectory) - { - msgPane = (MSG_MessagePane *) window; - XP_ASSERT (MSG_MESSAGEPANE == msgPane->GetPaneType()); - return m_adapter->OpenResultElement (msgPane, this); - } - else - { - context = (MWContext*) window; - XP_ASSERT (MWContextBrowser == context->type); - msg_SearchLdap *thisAdapter = (msg_SearchLdap*) m_adapter; - return thisAdapter->OpenResultElement (context, this); - } - } - return SearchError_NullPointer; -} - - -//----------------------------------------------------------------------------- -//----------------------- Base class for search objects ----------------------- -//----------------------------------------------------------------------------- - -msg_SearchAdapter::msg_SearchAdapter (MSG_ScopeTerm *scope, MSG_SearchTermArray &termList) : m_searchTerms(termList) -{ - m_abortCalled = FALSE; - m_scope = scope; -} - - -msg_SearchAdapter::~msg_SearchAdapter () -{ -} - - -MSG_SearchError msg_SearchAdapter::ValidateTerms () -{ - if (!m_scope->IsValid()) - return SearchError_InvalidScopeTerm; - - MSG_SearchTerm *searchTerm = NULL; - for (int i = 0; i < m_searchTerms.GetSize(); i++) - { - searchTerm = m_searchTerms.GetAt(i); - if (!searchTerm->IsValid()) - return SearchError_InvalidSearchTerm; - } - - return SearchError_Success; -} - - -int msg_SearchAdapter::Abort () -{ - // Don't leave progress artifacts in the search dialog - FE_SetProgressBarPercent (m_scope->m_frame->GetContext(), 0); - - m_abortCalled = TRUE; - return 0; -} - - -MSG_SearchError msg_SearchAdapter::OpenNewsResultInUnknownGroup (MSG_MessagePane *pane, MSG_ResultElement *result) -{ - // Here's a hacky little way to open a news article given only the host and message-id - // - // A better fix might be to open the newsgroup (via MessagePane::LoadFolder) - // and then chain a LoadMessage after that. - - MSG_SearchError err = SearchError_Unknown; - - MSG_NewsHost *host = NULL; - MSG_FolderInfoNews *newsFolder = m_scope->m_folder->GetNewsFolderInfo(); - if (newsFolder) - host = newsFolder->GetHost(); - else if (FOLDER_CONTAINERONLY == m_scope->m_folder->GetType()) - host = ((MSG_NewsFolderInfoContainer*) m_scope->m_folder)->GetHost(); - - if (host) - { - const MSG_SearchValue *messageIdValue = result->GetValueRef (attribMessageId); - if (messageIdValue) - { - char *url = PR_smprintf ("%s/%s", host->GetURLBase(), messageIdValue->u.string); - if (url) - { - URL_Struct *urlStruct = NET_CreateURLStruct (url, NET_DONT_RELOAD); - if (urlStruct) - { - urlStruct->internal_url = TRUE; - if (0 == pane->GetURL (urlStruct, TRUE)) - err = SearchError_Success; - } - else - err = SearchError_OutOfMemory; - XP_FREE(url); - } - else - err = SearchError_OutOfMemory; - } - } - - return err; -} - - -MSG_SearchError msg_SearchAdapter::OpenResultElement (MSG_MessagePane *pane, MSG_ResultElement *result) -{ - MSG_SearchError err = SearchError_DBOpenFailed; // not true, really - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(pane->GetContext()); - - const MSG_SearchValue *keyValue = result->GetValueRef (attribMessageKey); - if (keyValue) - { - MSG_FolderInfo *targetFolder = FindTargetFolder (result); - - if (targetFolder) - { - int16 csid = INTL_GetCSIWinCSID(c); - if (!csid) - { - csid = targetFolder->GetFolderCSID(); - if (!csid) - csid = INTL_DefaultWinCharSetID(0); - INTL_SetCSIWinCSID(c, csid); - } - - if (0 == pane->LoadMessage (targetFolder, keyValue->u.key, NULL, TRUE)) - err = SearchError_Success; - } - else - err = OpenNewsResultInUnknownGroup (pane, result); - } - - return err; -} - - -MSG_FolderInfo *msg_SearchAdapter::FindTargetFolder (const MSG_ResultElement *result) -{ - MSG_FolderInfo *targetFolder = m_scope->m_folder; - if (!targetFolder) - return NULL; - - if (m_scope->m_attribute == scopeAllSearchableGroups) - { - const MSG_SearchValue *locValue = result->GetValueRef (attribLocation); - if (locValue) - { - XP_ASSERT(m_scope->m_folder->GetType() == FOLDER_CONTAINERONLY); - MSG_NewsHost *host = ((MSG_NewsFolderInfoContainer*) m_scope->m_folder)->GetHost(); - - if (host) - targetFolder = host->FindGroup (locValue->u.string); - } - } - return targetFolder; -} - - -MSG_SearchError msg_SearchAdapter::ModifyResultElement (MSG_ResultElement*, MSG_SearchValue*) -{ - // The derived classes should override if they want to allow modification. - // So if we got to the base class, we don't allow it. - return SearchError_ScopeAgreement; -} - -// This stuff lives in the base class because the IMAP search syntax -// is used by the RFC977bis SEARCH command as well as IMAP itself - -// km - the NOT and HEADER strings are not encoded with a trailing -// <space> because they always precede a mnemonic that has a -// preceding <space> and double <space> characters cause some -// imap servers to return an error. -const char *msg_SearchAdapter::m_kImapBefore = " SENTBEFORE "; -const char *msg_SearchAdapter::m_kImapBody = " BODY "; -const char *msg_SearchAdapter::m_kImapCC = " CC "; -const char *msg_SearchAdapter::m_kImapFrom = " FROM "; -const char *msg_SearchAdapter::m_kImapNot = " NOT"; -const char *msg_SearchAdapter::m_kImapDeleted = " DELETED"; -const char *msg_SearchAdapter::m_kImapOr = " OR"; -const char *msg_SearchAdapter::m_kImapSince = " SENTSINCE "; -const char *msg_SearchAdapter::m_kImapSubject = " SUBJECT "; -const char *msg_SearchAdapter::m_kImapTo = " TO "; -const char *msg_SearchAdapter::m_kImapHeader = " HEADER"; -const char *msg_SearchAdapter::m_kImapAnyText = " TEXT "; -const char *msg_SearchAdapter::m_kImapKeyword = " KEYWORD "; -const char *msg_SearchAdapter::m_kNntpKeywords = " KEYWORDS "; -const char *msg_SearchAdapter::m_kImapSentOn = " SENTON "; -const char *msg_SearchAdapter::m_kImapSeen = " SEEN "; -const char *msg_SearchAdapter::m_kImapAnswered = " ANSWERED "; -const char *msg_SearchAdapter::m_kImapNotSeen = " UNSEEN "; -const char *msg_SearchAdapter::m_kImapNotAnswered = " UNANSWERED "; -const char *msg_SearchAdapter::m_kImapCharset = " CHARSET "; - -char * -msg_SearchAdapter::TryToConvertCharset(char *sourceStr, int16 src_csid, int16 dest_csid, XP_Bool useMime2) -{ - char *result = NULL; - - if (sourceStr == NULL) - return NULL; - - if ((src_csid != dest_csid) || (useMime2)) - { - // Need to convert. See if we can. - - // ### mwelch Much of this code is taken from - // lib/libi18n/mime2fun.c (in particular, - // intl_EncodeMimePartIIStr). - CCCDataObject obj = NULL; - CCCFunc cvtfunc = NULL; - int srcLen = XP_STRLEN(sourceStr); - - obj = INTL_CreateCharCodeConverter(); - if (obj == NULL) - return 0; - - /* setup converter from src_csid --> dest_csid */ - INTL_GetCharCodeConverter(src_csid, dest_csid, obj) ; - cvtfunc = INTL_GetCCCCvtfunc(obj); - - if (cvtfunc) - { - // We can convert, so do it. - if (useMime2) - // Force MIME-2 encoding so that the charset (if necessary) gets - // passed to the RFC977bis server inline - result = INTL_EncodeMimePartIIStr(sourceStr, src_csid, TRUE); - else - { - // Copy the source string before using it for conversion. - // You just don't know where those bits have been. - char *temp = XP_STRDUP(sourceStr); - if (temp) - { - // (result) will differ from (temp) iff a larger string - // were needed to contain the converted chars. - // (or so I understand) - result = (char *) cvtfunc(obj, - (unsigned char*)temp, - srcLen); - if (result != temp) - XP_FREE(temp); - } - } - } - XP_FREEIF(obj); - } - return result; -} - -char * -msg_SearchAdapter::GetImapCharsetParam(int16 dest_csid) -{ - char *result = NULL; - - // Specify a character set unless we happen to be US-ASCII. - if (! ((dest_csid == CS_ASCII) || - (dest_csid == CS_UNKNOWN))) - { - char csname[128]; - INTL_CharSetIDToName(dest_csid, csname); - result = PR_smprintf("%s%s", msg_SearchAdapter::m_kImapCharset, csname); - } - return result; -} - -void -msg_SearchAdapter::GetSearchCSIDs(int16& src_csid, int16& dst_csid) -{ - src_csid = CS_DEFAULT; - dst_csid = CS_DEFAULT; - - if (m_scope) - { - if (m_scope->m_frame) - { - // If we can get the source charset from a context, - // that is preferable to just using the app default. - MWContext *ctxt = m_scope->m_frame->GetContext(); - if (ctxt) { - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(ctxt); - src_csid = INTL_GetCSIWinCSID(c); - } - } - - // Ask the newsgroup/folder for its csid. - if (m_scope->m_folder) - dst_csid = m_scope->m_folder->GetFolderCSID() & ~CS_AUTO; - } - - // default means that our best guess is to get the default window char set ID - if (src_csid == CS_DEFAULT) - { - src_csid = INTL_DefaultWinCharSetID(0); - XP_ASSERT(src_csid != CS_DEFAULT); - } - - - // If - // the destination is still CS_DEFAULT, make the destination match - // the source. (CS_DEFAULT is an indication that the charset - // was undefined or unavailable.) - if (dst_csid == CS_DEFAULT) - dst_csid = src_csid; - - XP_Bool forceAscii = FALSE; - PREF_GetBoolPref("mailnews.force_ascii_search", &forceAscii); - if (forceAscii) - { - // Special cases to use in order to force US-ASCII searching with Latin1 - // or MacRoman text. This only has to happen because IMAP - // and RFC977bis servers currently (4/23/97) only support US-ASCII. - // - // If the dest csid is ISO Latin 1 or MacRoman, attempt to convert the - // source text to US-ASCII. (Not for now.) - // if ((dst_csid == CS_LATIN1) || (dst_csid == CS_MAC_ROMAN)) - dst_csid = CS_ASCII; - } -} - -#ifdef XP_MAC -#include <ConditionalMacros.h> - -#pragma global_optimizer on -#pragma optimization_level 4 - -#endif - -MSG_SearchError msg_SearchAdapter::EncodeImapTerm (MSG_SearchTerm *term, XP_Bool reallyRFC977bis, int16 src_csid, int16 dest_csid, char **ppOutTerm) -{ - MSG_SearchError err = SearchError_Success; - XP_Bool useNot = FALSE; - XP_Bool useQuotes = FALSE; - XP_Bool excludeHeader = FALSE; - XP_Bool ignoreValue = FALSE; - char *arbitraryHeader = NULL; - const char *whichMnemonic = NULL; - const char *orHeaderMnemonic = NULL; - - *ppOutTerm = NULL; - - if (term->m_operator == opDoesntContain || term->m_operator == opIsnt) - useNot = TRUE; - - switch (term->m_attribute) - { - case attribToOrCC: - orHeaderMnemonic = m_kImapCC; - // fall through to case attribTo: - case attribTo: - whichMnemonic = m_kImapTo; - break; - case attribCC: - whichMnemonic = m_kImapCC; - break; - case attribSender: - whichMnemonic = m_kImapFrom; - break; - case attribSubject: - whichMnemonic = m_kImapSubject; - break; - case attribBody: - whichMnemonic = m_kImapBody; - excludeHeader = TRUE; - break; - case attribOtherHeader: // arbitrary header? if so create arbitrary header string - if (term->m_arbitraryHeader) - { - arbitraryHeader = new char [XP_STRLEN(term->m_arbitraryHeader) + 6]; // 6 bytes for SPACE \" .... \" SPACE - if (!arbitraryHeader) - return SearchError_InvalidSearchTerm; - arbitraryHeader[0] = '\0'; - XP_STRCAT(arbitraryHeader, " \""); - XP_STRCAT(arbitraryHeader, term->m_arbitraryHeader); - XP_STRCAT(arbitraryHeader, "\" "); - whichMnemonic = arbitraryHeader; - } - else - return SearchError_InvalidSearchTerm; - break; - case attribAgeInDays: // added for searching online for age in days... - // for AgeInDays, we are actually going to perform a search by date, so convert the operations for age - // to the IMAP mnemonics that we would use for date! - switch (term->m_operator) - { - case opIsGreaterThan: - whichMnemonic = m_kImapBefore; - break; - case opIsLessThan: - whichMnemonic = m_kImapSince; - break; - case opIs: - whichMnemonic = m_kImapSentOn; - break; - default: - XP_ASSERT(FALSE); - return SearchError_InvalidSearchTerm; - } - excludeHeader = TRUE; - break; - case attribDate: - switch (term->m_operator) - { - case opIsBefore: - whichMnemonic = m_kImapBefore; - break; - case opIsAfter: - whichMnemonic = m_kImapSince; - break; - case opIs: - whichMnemonic = m_kImapSentOn; - break; - default: - XP_ASSERT(FALSE); - return SearchError_InvalidSearchTerm; - } - excludeHeader = TRUE; - break; - case attribAnyText: - whichMnemonic = m_kImapAnyText; - excludeHeader = TRUE; - break; - case attribKeywords: - whichMnemonic = m_kNntpKeywords; - break; - case attribMsgStatus: - useNot = FALSE; // NOT SEEN is wrong, but UNSEEN is right. - ignoreValue = TRUE; // the mnemonic is all we need - excludeHeader = TRUE; - switch (term->m_value.u.msgStatus) - { - case MSG_FLAG_READ: - whichMnemonic = term->m_operator == opIs ? m_kImapSeen : m_kImapNotSeen; - break; - case MSG_FLAG_REPLIED: - whichMnemonic = term->m_operator == opIs ? m_kImapAnswered : m_kImapNotAnswered; - break; - default: - XP_ASSERT(FALSE); - return SearchError_InvalidSearchTerm; - } - break; - default: - XP_ASSERT(FALSE); - return SearchError_InvalidSearchTerm; - } - - char *value = ""; - char dateBuf[100]; - dateBuf[0] = '\0'; - - XP_Bool valueWasAllocated = FALSE; - if (term->m_attribute == attribDate) - { - // note that there used to be code here that encoded an RFC822 date for imap searches. - // RFC 2060 seems to require an RFC822 - // date but really it expects dd-mmm-yyyy, and refers to the RFC822 date only in that the - // dd-mmm-yyyy date will match the RFC822 date within the message. - strftime (dateBuf, sizeof(dateBuf), "%d-%b-%Y", localtime (&term->m_value.u.date)); - value = dateBuf; - } - else - { - if (term->m_attribute == attribAgeInDays) - { - // okay, take the current date, subtract off the age in days, then do an appropriate Date search on - // the resulting day. - time_t now = XP_TIME(); - time_t matchDay = now - term->m_value.u.age * 60 * 60 * 24; - strftime (dateBuf, sizeof(dateBuf), "%d-%b-%Y", localtime (&matchDay)); - value = dateBuf; - } - else - - if (IsStringAttribute(term->m_attribute)) - { - char *unconvertedValue = reallyRFC977bis ? MSG_EscapeSearchUrl (term->m_value.u.string) : msg_EscapeImapSearchProtocol(term->m_value.u.string); - // Switch for Korean mail/news charsets. - // We want to do this here because here is where - // we know what charset we want to use. - if (reallyRFC977bis) - dest_csid = INTL_DefaultNewsCharSetID(dest_csid); - else - dest_csid = INTL_DefaultMailCharSetID(dest_csid); - - value = TryToConvertCharset(unconvertedValue, - src_csid, - dest_csid, - reallyRFC977bis); - if (value) - XP_FREEIF(unconvertedValue); - else - value = unconvertedValue; // couldn't convert, send as is - - valueWasAllocated = TRUE; - useQuotes = !reallyRFC977bis || (XP_STRCHR(value, ' ') != NULL); - } - } - - int len = XP_STRLEN(whichMnemonic) + XP_STRLEN(value) + (useNot ? XP_STRLEN(m_kImapNot) : 0) + - (useQuotes ? 2 : 0) + XP_STRLEN(m_kImapHeader) + - (orHeaderMnemonic ? (XP_STRLEN(m_kImapHeader) + XP_STRLEN(m_kImapOr) + (useNot ? XP_STRLEN(m_kImapNot) : 0) + - XP_STRLEN(orHeaderMnemonic) + XP_STRLEN(value) + 2 /*""*/) : 0) + 1; - char *encoding = new char[len]; - if (encoding) - { - encoding[0] = '\0'; - // Remember: if ToOrCC and useNot then the expression becomes NOT To AND Not CC as opposed to (NOT TO) || (NOT CC) - if (orHeaderMnemonic && !useNot) - XP_STRCAT(encoding, m_kImapOr); - if (useNot) - XP_STRCAT (encoding, m_kImapNot); - if (!excludeHeader) - XP_STRCAT (encoding, m_kImapHeader); - XP_STRCAT (encoding, whichMnemonic); - if (!ignoreValue) - err = EncodeImapValue(encoding, value, useQuotes, reallyRFC977bis); - - if (orHeaderMnemonic) - { - if (useNot) - XP_STRCAT(encoding, m_kImapNot); - - XP_STRCAT (encoding, m_kImapHeader); - - XP_STRCAT (encoding, orHeaderMnemonic); - if (!ignoreValue) - err = EncodeImapValue(encoding, value, useQuotes, reallyRFC977bis); - } - - // don't let the encoding end with whitespace, - // this throws off later url STRCMP - if (*encoding && *(encoding + XP_STRLEN(encoding) - 1) == ' ') - *(encoding + XP_STRLEN(encoding) - 1) = '\0'; - } - - if (value && valueWasAllocated) - XP_FREE (value); - if (arbitraryHeader) - delete arbitraryHeader; - - *ppOutTerm = encoding; - - return err; -} - -#ifdef XP_MAC -#pragma global_optimizer reset -#endif - -MSG_SearchError msg_SearchAdapter::EncodeImapValue(char *encoding, const char *value, XP_Bool useQuotes, XP_Bool reallyRFC977bis) -{ - // By NNTP RFC, SEARCH HEADER SUBJECT "" is legal and means 'find messages without a subject header' - if (!reallyRFC977bis) - { - // By IMAP RFC, SEARCH HEADER SUBJECT "" is illegal and will generate an error from the server - if (!value || !value[0]) - return SearchError_ValueRequired; - } - - if (useQuotes) - XP_STRCAT(encoding, "\""); - XP_STRCAT (encoding, value); - if (useQuotes) - XP_STRCAT(encoding, "\""); - - return SearchError_Success; -} - - -MSG_SearchError msg_SearchAdapter::EncodeImap (char **ppOutEncoding, MSG_SearchTermArray &searchTerms, int16 src_csid, int16 dest_csid, XP_Bool reallyRFC977bis) -{ - // i've left the old code (before using CBoolExpression for debugging purposes to make sure that - // the new code generates the same encoding string as the old code..... - - MSG_SearchError err = SearchError_Success; - *ppOutEncoding = NULL; - - int termCount = searchTerms.GetSize(); - int i = 0; - int encodingLength = 0; - - // Build up an array of encodings, one per query term - char **termEncodings = new char *[termCount]; - if (!termEncodings) - return SearchError_OutOfMemory; - // create our expression - CBoolExpression * expression = new CBoolExpression(); - if (!expression) - return SearchError_OutOfMemory; - - for (i = 0; i < termCount && SearchError_Success == err; i++) - { - err = EncodeImapTerm (searchTerms.GetAt(i), reallyRFC977bis, src_csid, dest_csid, &termEncodings[i]); - if (SearchError_Success == err && NULL != termEncodings[i]) - { - encodingLength += XP_STRLEN(termEncodings[i]) + 1; - expression = expression->AddSearchTerm(searchTerms.GetAt(i),termEncodings[i]); - } - } - - if (SearchError_Success == err) - { - // Catenate the intermediate encodings together into a big string - char *totalEncoding = new char [encodingLength + (!reallyRFC977bis ? (XP_STRLEN(m_kImapNot) + XP_STRLEN(m_kImapDeleted)) : 0) + 1]; - int32 encodingBuffSize = expression->CalcEncodeStrSize() + (!reallyRFC977bis ? (XP_STRLEN(m_kImapNot) + XP_STRLEN(m_kImapDeleted)) : 0) + 1; - char *encodingBuff = new char [encodingBuffSize]; - - if (encodingBuff && totalEncoding) - { - totalEncoding[0] = '\0'; - encodingBuff[0] = '\0'; - - int offset = 0; // offset into starting place for the buffer - if (!reallyRFC977bis) - { - XP_STRCAT(totalEncoding, m_kImapNot); - XP_STRCAT(totalEncoding, m_kImapDeleted); - } - - if (!reallyRFC977bis) - { - XP_STRCAT(encodingBuff, m_kImapNot); - XP_STRCAT(encodingBuff, m_kImapDeleted); - offset = XP_STRLEN(m_kImapDeleted) + XP_STRLEN(m_kImapNot); - } - - expression->GenerateEncodeStr(encodingBuff+offset,encodingBuffSize); - - for (i = 0; i < termCount; i++) - { - if (termEncodings[i]) - { - XP_STRCAT (totalEncoding, termEncodings[i]); - delete [] termEncodings[i]; - } - } - } - else - err = SearchError_OutOfMemory; - - delete totalEncoding; - delete expression; - - // Set output parameter if we encoded the query successfully - if (encodingBuff && SearchError_Success == err) - *ppOutEncoding = encodingBuff; - } - - delete [] termEncodings; - - return err; -} - - -char *msg_SearchAdapter::TransformSpacesToStars (const char *spaceString) -{ - char *starString = XP_STRDUP (spaceString); - if (starString) - { - char *star = NULL; - while (1) - { - star = XP_STRCHR(starString, ' '); - if (!star) - break; - *star = '*'; - } - } - return starString; -} - - -//----------------------------------------------------------------------------- -//-------------------- Implementation of MSG_BodyHandler ---------------------- -//----------------------------------------------------------------------------- - -MSG_BodyHandler::MSG_BodyHandler (MSG_ScopeTerm * scope, uint32 offset, uint32 numLines, DBMessageHdr * msg, MessageDB * db) -{ - m_scope = scope; - m_localFileOffset = offset; - m_numLocalLines = numLines; - m_msgHdr = msg; - m_db = db; - - // the following are variables used when the body handler is handling stuff from filters....through this constructor, that is not the - // case so we set them to NULL. - m_headers = NULL; - m_headersSize = 0; - m_Filtering = FALSE; // make sure we set this before we call initialize... - - Initialize(); // common initialization stuff - - if (m_scope->IsOfflineIMAPMail() || m_scope->m_folder->GetType() == FOLDER_IMAPMAIL) // if we are here with an IMAP folder, assume offline! - m_OfflineIMAP = TRUE; - else - OpenLocalFolder(); // POP so open the mail folder file -} - -MSG_BodyHandler::MSG_BodyHandler(MSG_ScopeTerm * scope, uint32 offset, uint32 numLines, DBMessageHdr * msg, MessageDB * db, - char * headers, uint32 headersSize, XP_Bool Filtering) -{ - m_scope = scope; - m_localFileOffset = offset; - m_numLocalLines = numLines; - m_msgHdr = msg; - m_db = db; - m_headersSize = headersSize; - m_Filtering = Filtering; - - Initialize(); - - if (m_Filtering) - m_headers = headers; - else - if (m_scope->IsOfflineIMAPMail() || m_scope->m_folder->GetType() == FOLDER_IMAPMAIL) - m_OfflineIMAP = TRUE; - else - OpenLocalFolder(); // if nothing else applies, then we must be a POP folder file -} - -void MSG_BodyHandler::Initialize() -// common initialization code regardless of what body type we are handling... -{ - // Default transformations for local message search and MAPI access - m_stripHeaders = TRUE; - m_stripHtml = TRUE; - m_messageIsHtml = FALSE; - m_passedHeaders = FALSE; - - // set our offsets to 0 since we haven't handled any bytes yet... - m_IMAPMessageOffset = 0; - m_NewsArticleOffset = 0; - m_headerBytesRead = 0; - - m_OfflineIMAP = FALSE; -} - -MSG_BodyHandler::~MSG_BodyHandler() -{ - if (m_scope->m_file) - { - XP_FileClose (m_scope->m_file); - m_scope->m_file = NULL; - } -} - - -void MSG_BodyHandler::OpenLocalFolder() -{ - if (!m_scope->m_file) - { - const char *path = m_scope->GetMailPath(); - if (path) - m_scope->m_file = XP_FileOpen (path, xpMailFolder, XP_FILE_READ_BIN); // open the folder - } - if (m_scope->m_file) - XP_FileSeek (m_scope->m_file, m_localFileOffset, SEEK_SET); -} - - -int32 MSG_BodyHandler::GetNextLine (char * buf, int bufSize) -{ - int32 length = 0; - XP_Bool eatThisLine = FALSE; - - do { - // first, handle the filtering case...this is easy.... - if (m_Filtering) - length = GetNextFilterLine(buf, bufSize); - else - { - // 3 cases: Offline IMAP, POP, or we are dealing with a news message.... - if (m_db) - { - MailDB * mailDB = m_db->GetMailDB(); - if (mailDB) // a mail data base? - { - if (m_OfflineIMAP) - length = GetNextIMAPLine (buf, bufSize); // (1) IMAP Offline - else - length = GetNextLocalLine (buf, bufSize); // (2) POP - } - else - { - NewsGroupDB * newsDB = m_db->GetNewsDB(); - if (newsDB) - length = GetNextNewsLine (newsDB, buf, bufSize); // (3) News - } - } - } - - if (length > 0) - length = ApplyTransformations (buf, length, eatThisLine); - } while (eatThisLine && length); // if we hit eof, make sure we break out of this loop. - - return length; -} - - -int32 MSG_BodyHandler::GetNextFilterLine(char * buf, int bufSize) -{ - // m_nextHdr always points to the next header in the list....the list is NULL terminated... - int numBytesCopied = 0; - if (m_headersSize > 0) - { - // #mscott. hack. filter headers list have CRs & LFs inside the NULL delimited list of header - // strings. It is possible to have: To NULL CR LF From. We want to skip over these CR/LFs if they start - // at the beginning of what we think is another header. - while ((m_headers[0] == CR || m_headers[0] == LF || m_headers[0] == ' ' || m_headers[0] == '\0') && m_headersSize > 0) - { - m_headers++; // skip over these chars... - m_headersSize--; - } - - if (m_headersSize > 0) - { - numBytesCopied = XP_STRLEN(m_headers)+1 /* + 1 to include NULL */ < bufSize ? XP_STRLEN(m_headers)+1 : bufSize; - XP_MEMCPY(buf, m_headers, numBytesCopied); - m_headers += numBytesCopied; - // be careful...m_headersSize is unsigned. Don't let it go negative or we overflow to 2^32....*yikes* - if (m_headersSize < numBytesCopied) - m_headersSize = 0; - else - m_headersSize -= numBytesCopied; // update # bytes we have read from the headers list - - return numBytesCopied; - } - } - return 0; -} - - -int32 MSG_BodyHandler::GetNextNewsLine (NewsGroupDB * /* newsDB */, char * buf, int bufSize) -{ - // we know we have a safe downcasting on m_msgHdr to a NewsMessageHdr because we checked that - // m_db is a news data base before calling this routine - int32 msgLength = ((NewsMessageHdr *)m_msgHdr)->GetOfflineMessageLength (m_db->GetDB()) - m_NewsArticleOffset; - if (buf && msgLength != 0) // make sure the news article exists.... - { - int32 bytesToCopy = (msgLength < bufSize-2) ? msgLength : bufSize - 2; // this -2 is a small hack - int32 bytesCopied = ((NewsMessageHdr *)m_msgHdr)->ReadFromArticle (buf, bytesToCopy, m_NewsArticleOffset, m_db->GetDB()); - if (bytesCopied == 0) // reached end of message? - return bytesCopied; - - // now determine the location of the nearest CR/LF pairing... - char * tmp = strncasestr (buf, "\x0D\x0A", bytesCopied); // get pointer to end of line - if (tmp) - // a line is contained within the buffer. Null terminate 2 positions past the CR/LF pair, update new offset value - // we know we have at least 2 bytes leftover in the buffer - *(tmp+2) = '\0'; // null terminate string after CR/LF - else - buf[bytesCopied] = '\0'; - m_NewsArticleOffset += XP_STRLEN (buf); - return XP_STRLEN (buf); // return num bytes stored in the buf - } - return 0; -} - - -int32 MSG_BodyHandler::GetNextLocalLine(char * buf, int bufSize) -// returns number of bytes copied -{ - char * line = NULL; - if (m_numLocalLines) - { - if (m_passedHeaders) - m_numLocalLines--; // the line count is only for body lines - line = XP_FileReadLine (buf, bufSize, m_scope->m_file); - if (line) - return XP_STRLEN(line); - } - - return 0; -} - - -int32 MSG_BodyHandler::GetNextIMAPLine(char * buf, int bufSize) -{ - // we know we have safe downcasting on m_msgHdr because we checked that m_db is a mail data base before calling - // this routine. - int32 msgLength = ((MailMessageHdr *) m_msgHdr)->GetOfflineMessageLength (m_db->GetDB()) - m_IMAPMessageOffset; - if (buf && msgLength != 0) // make sure message exists - { - int32 bytesToCopy = (msgLength < bufSize-2) ? msgLength : bufSize-2; // the -2 is a small hack - - int32 bytesCopied = ((MailMessageHdr *) m_msgHdr)->ReadFromOfflineMessage (buf, bytesToCopy, m_IMAPMessageOffset, m_db->GetDB()); - if (bytesCopied == 0) // we reached end of message - return bytesCopied; - - // now determine the location of the nearest CR/LF pairing.... - char * tmp = strncasestr (buf, "\x0D\x0A",bytesCopied); // get pointer to end of line - if (tmp) - // a line is contained within the buffer. Null terminate 2 positions past the CR/LF pair, update new offset value - // we know we have at least 2 bytes leftover in the buffer - *(tmp+2) = '\0'; // null terminate string after CR/LF - else - buf[bytesCopied] = '\0'; - m_IMAPMessageOffset += XP_STRLEN (buf); - return XP_STRLEN (buf); // return num bytes stored in the buf - } - return 0; -} - - -int32 MSG_BodyHandler::ApplyTransformations (char *buf, int32 length, XP_Bool &eatThisLine) -{ - int32 newLength = length; - eatThisLine = FALSE; - - if (!m_passedHeaders) // buf is a line from the message headers - { - if (m_stripHeaders) - eatThisLine = TRUE; - - if (!XP_STRNCASECMP(buf, "Content-Type:", 13) && strcasestr (buf, "text/html")) - m_messageIsHtml = TRUE; - - m_passedHeaders = EMPTY_MESSAGE_LINE(buf); - } - else // buf is a line from the message body - { - if (m_stripHtml && m_messageIsHtml) - { - StripHtml (buf); - newLength = XP_STRLEN (buf); - } - } - - return newLength; -} - - -void MSG_BodyHandler::StripHtml (char *pBufInOut) -{ - char *pBuf = (char*) XP_ALLOC (XP_STRLEN(pBufInOut) + 1); - if (pBuf) - { - char *pWalk = pBuf; - char *pWalkInOut = pBufInOut; - XP_Bool inTag = FALSE; - while (*pWalkInOut) // throw away everything inside < > - { - if (!inTag) - if (*pWalkInOut == '<') - inTag = TRUE; - else - *pWalk++ = *pWalkInOut; - else - if (*pWalkInOut == '>') - inTag = FALSE; - pWalkInOut++; - } - *pWalk = 0; // null terminator - - // copy the temp buffer back to the real one - pWalk = pBuf; - pWalkInOut = pBufInOut; - while (*pWalk) - *pWalkInOut++ = *pWalk++; - *pWalkInOut = *pWalk; // null terminator - XP_FREE (pBuf); - } -} - -//----------------------------------------------------------------------------- -//-------------------- Implementation of MSG_SearchTerm ----------------------- -//----------------------------------------------------------------------------- - -// Needed for DeStream method. -MSG_SearchTerm::MSG_SearchTerm() : msg_OpaqueObject (m_expectedMagic) -{ - m_arbitraryHeader = NULL; -} - - - -MSG_SearchTerm::MSG_SearchTerm ( - MSG_SearchAttribute attrib, - MSG_SearchOperator op, - MSG_SearchValue *val, - XP_Bool BooleanAND, - char * arbitraryHeader) : msg_OpaqueObject (m_expectedMagic) -{ - m_operator = op; - m_booleanOp = (BooleanAND) ? MSG_SearchBooleanAND : MSG_SearchBooleanOR; - if (attrib == attribOtherHeader && arbitraryHeader) - m_arbitraryHeader = XP_STRDUP(arbitraryHeader); - else - m_arbitraryHeader = NULL; - m_attribute = attrib; - - MSG_ResultElement::AssignValues (val, &m_value); -} - -MSG_SearchTerm::MSG_SearchTerm ( - MSG_SearchAttribute attrib, - MSG_SearchOperator op, - MSG_SearchValue *val, - MSG_SearchBooleanOp boolOp, - char * arbitraryHeader) : msg_OpaqueObject (m_expectedMagic) -{ - m_operator = op; - m_attribute = attrib; - m_booleanOp = boolOp; - if (attrib == attribOtherHeader && arbitraryHeader) - m_arbitraryHeader = XP_STRDUP(arbitraryHeader); - else - m_arbitraryHeader = NULL; - - MSG_ResultElement::AssignValues (val, &m_value); -} - - - -MSG_SearchTerm::~MSG_SearchTerm () -{ - if (IsStringAttribute (m_attribute)) - XP_FREE(m_value.u.string); - if (m_arbitraryHeader) - XP_FREE(m_arbitraryHeader); -} - -// Perhaps we could find a better place for this? -// Caller needs to free. -/* static */char *MSG_SearchTerm::EscapeQuotesInStr(const char *str) -{ - int numQuotes = 0; - for (const char *strPtr = str; *strPtr; strPtr++) - if (*strPtr == '"') - numQuotes++; - int escapedStrLen = XP_STRLEN(str) + numQuotes; - char *escapedStr = (char *) XP_ALLOC(escapedStrLen + 1); - if (escapedStr) - { - char *destPtr; - for (destPtr = escapedStr; *str; str++) - { - if (*str == '"') - *destPtr++ = '\\'; - *destPtr++ = *str; - } - *destPtr = '\0'; - } - return escapedStr; -} - - -MSG_SearchError MSG_SearchTerm::OutputValue(XPStringObj &outputStr) -{ - if (IsStringAttribute(m_attribute)) - { - XP_Bool quoteVal = FALSE; - // need to quote strings with ')' - filter code will escape quotes - if (XP_STRCHR(m_value.u.string, ')')) - { - quoteVal = TRUE; - outputStr += "\""; - } - if (XP_STRCHR(m_value.u.string, '"')) - { - char *escapedString = MSG_SearchTerm::EscapeQuotesInStr(m_value.u.string); - if (escapedString) - { - outputStr += escapedString; - XP_FREE(escapedString); - } - - } - else - { - outputStr += m_value.u.string; - } - if (quoteVal) - outputStr += "\""; - } - else - { - switch (m_attribute) - { - case attribDate: - { - struct tm *p = localtime(&m_value.u.date); - if (p) - { - // wow, so tm_mon is 0 based, tm_mday is 1 based. - char dateBuf[100]; - strftime (dateBuf, sizeof(dateBuf), "%d-%b-%Y", p); - outputStr += dateBuf; - } - else - outputStr += "01/01/70"; - break; - } - case attribMsgStatus: - { - char status[40]; - MSG_GetStatusName (m_value.u.msgStatus, status, sizeof(status)); - outputStr += status; - break; - } - case attribPriority: - { - char priority[40]; - MSG_GetUntranslatedPriorityName( m_value.u.priority, - priority, - sizeof(priority)); - outputStr += priority; - break; - } - default: - XP_ASSERT(FALSE); - break; - } - } - return SearchError_Success; -} - -MSG_SearchError MSG_SearchTerm::EnStreamNew (char **outStream, int16 *length) -{ - const char *attrib, *operatorStr; - XPStringObj outputStr; - MSG_SearchError ret; - - ret = MSG_GetStringForAttribute(m_attribute, &attrib); - if (ret != SearchError_Success) - return ret; - - if (m_attribute == attribOtherHeader) // if arbitrary header, use it instead! - { - outputStr = "\""; - if (m_arbitraryHeader) - outputStr += m_arbitraryHeader; - outputStr += "\""; - } - else - outputStr = attrib; - - outputStr += ','; - - ret = MSG_GetStringForOperator(m_operator, &operatorStr); - if (ret != SearchError_Success) - return ret; - - outputStr += operatorStr; - outputStr += ','; - - OutputValue(outputStr); - *length = XP_STRLEN(outputStr); - *outStream = (char *) XP_ALLOC(*length + 1); - if (*outStream) - { - XP_STRCPY(*outStream, outputStr); - return SearchError_Success; - } - else - return SearchError_OutOfMemory; -} - -// fill in m_value from the input stream. -MSG_SearchError MSG_SearchTerm::ParseValue(char *inStream) -{ - if (IsStringAttribute(m_attribute)) - { - XP_Bool quoteVal = FALSE; - while (XP_IS_SPACE(*inStream)) - inStream++; - - // need to remove pair of '"', if present - if (*inStream == '"') - { - quoteVal = TRUE; - inStream++; - } - int valueLen = XP_STRLEN(inStream); - if (quoteVal && inStream[valueLen - 1] == '"') - valueLen--; - - m_value.u.string = (char *) XP_ALLOC(valueLen + 1); - XP_STRNCPY_SAFE(m_value.u.string, inStream, valueLen + 1); - } - else - { - switch (m_attribute) - { - case attribDate: - m_value.u.date = XP_ParseTimeString (inStream, FALSE); - break; - case attribMsgStatus: - m_value.u.msgStatus = MSG_GetStatusValueFromName(inStream); - break; - case attribPriority: - m_value.u.priority = MSG_GetPriorityFromString(inStream); - break; - default: - XP_ASSERT(FALSE); - break; - } - } - m_value.attribute = m_attribute; - return SearchError_Success; -} - -// find the operator code for this operator string. -MSG_SearchOperator MSG_SearchTerm::ParseOperator(char *inStream) -{ - int16 operatorVal; - MSG_SearchError err; - - while (XP_IS_SPACE(*inStream)) - inStream++; - - char *commaSep = XP_STRCHR(inStream, ','); - - if (commaSep) - *commaSep = '\0'; - - err = MSG_GetOperatorFromString(inStream, &operatorVal); - return (MSG_SearchOperator) operatorVal; -} - -// find the attribute code for this comma-delimited attribute. -MSG_SearchAttribute MSG_SearchTerm::ParseAttribute(char *inStream) -{ - XPStringObj attributeStr; - int16 attributeVal; - MSG_SearchError err; - - while (XP_IS_SPACE(*inStream)) - inStream++; - - // if we are dealing with an arbitrary header, it may be quoted.... - XP_Bool quoteVal = FALSE; - if (*inStream == '"') - { - quoteVal = TRUE; - inStream++; - } - - char *separator; - if (quoteVal) // arbitrary headers are quoted... - separator = XP_STRCHR(inStream, '"'); - else - separator = XP_STRCHR(inStream, ','); - - if (separator) - *separator = '\0'; - - err = MSG_GetAttributeFromString(inStream, &attributeVal); - MSG_SearchAttribute attrib = (MSG_SearchAttribute) attributeVal; - - if (attrib == attribOtherHeader) // if we are dealing with an arbitrary header.... - { - if (m_arbitraryHeader) - XP_FREE(m_arbitraryHeader); - m_arbitraryHeader = (char *) XP_ALLOC(XP_STRLEN(inStream)+1); - if (m_arbitraryHeader) - { - m_arbitraryHeader[0] = '\0'; - XP_STRCAT(m_arbitraryHeader, inStream); - } - } - - return attrib; -} - -// De stream one search term. If the condition looks like -// condition = "(to or CC, contains, r-thompson) AND (body, doesn't contain, fred)" -// This routine should get called twice, the first time -// with "to or CC, contains, r-thompson", the second time with -// "body, doesn't contain, fred" - -MSG_SearchError MSG_SearchTerm::DeStreamNew (char *inStream, int16 /*length*/) -{ - char *commaSep = XP_STRCHR(inStream, ','); - m_attribute = ParseAttribute(inStream); // will allocate space for arbitrary header if necessary - if (!commaSep) - return SearchError_InvalidSearchTerm; - char *secondCommaSep = XP_STRCHR(commaSep + 1, ','); - if (commaSep) - m_operator = ParseOperator(commaSep + 1); - if (secondCommaSep) - ParseValue(secondCommaSep + 1); - return SearchError_Success; -} - - -void MSG_SearchTerm::StripQuotedPrintable (unsigned char *src) -{ - // decode quoted printable text in place - - unsigned char *dest = src; - int srcIdx = 0, destIdx = 0; - - while (src[srcIdx] != 0) - { - if (src[srcIdx] == '=') - { - unsigned char *token = &src[srcIdx]; - unsigned char c = 0; - - // decode the first quoted char - if (token[1] >= '0' && token[1] <= '9') - c = token[1] - '0'; - else if (token[1] >= 'A' && token[1] <= 'F') - c = token[1] - ('A' - 10); - else if (token[1] >= 'a' && token[1] <= 'f') - c = token[1] - ('a' - 10); - else - { - // first char after '=' isn't hex. copy the '=' as a normal char and keep going - dest[destIdx++] = src[srcIdx++]; // aka token[0] - continue; - } - - // decode the second quoted char - c = (c << 4); - if (token[2] >= '0' && token[2] <= '9') - c += token[2] - '0'; - else if (token[2] >= 'A' && token[2] <= 'F') - c += token[2] - ('A' - 10); - else if (token[2] >= 'a' && token[2] <= 'f') - c += token[2] - ('a' - 10); - else - { - // second char after '=' isn't hex. copy the '=' as a normal char and keep going - dest[destIdx++] = src[srcIdx++]; // aka token[0] - continue; - } - - // if we got here, we successfully decoded a quoted printable sequence, - // so bump each pointer past it and move on to the next char; - dest[destIdx++] = c; - srcIdx += 3; - - } - else - dest[destIdx++] = src[srcIdx++]; - } - - dest[destIdx] = src[srcIdx]; // null terminate -} - -// Looks in the MessageDB for the user specified arbitrary header, if it finds the header, it then looks for a match against -// the value for the header. -MSG_SearchError MSG_SearchTerm::MatchArbitraryHeader (MSG_ScopeTerm *scope, uint32 offset, uint32 length /* in lines*/, int16 foldcsid, - DBMessageHdr *msg, MessageDB * db, char * headers, uint32 headersSize, XP_Bool ForFiltering) -{ - if (!m_arbitraryHeader) - return SearchError_NotAMatch; - - MSG_SearchError err = SearchError_NotAMatch; - MSG_BodyHandler * bodyHan = new MSG_BodyHandler (scope, offset,length, msg, db, headers, headersSize, ForFiltering); - if (!bodyHan) - return SearchError_OutOfMemory; - - bodyHan->SetStripHeaders (FALSE); - - if (MatchAllBeforeDeciding()) - err = SearchError_Success; - else - err = SearchError_NotAMatch; - - const int kBufSize = 512; // max size of a line?? - char * buf = (char *) XP_ALLOC(kBufSize); - if (buf) - { - XP_Bool searchingHeaders = TRUE; - while (searchingHeaders && bodyHan->GetNextLine(buf, kBufSize)) - { - if (!XP_STRNCASECMP(buf,m_arbitraryHeader, XP_STRLEN(m_arbitraryHeader))) - { - if (XP_STRLEN(m_arbitraryHeader) < XP_STRLEN(buf)) // make sure buf has info besides just the header - { - MSG_SearchError err2 = MatchString(buf+XP_STRLEN(m_arbitraryHeader), foldcsid); // match value with the other info... - if (err != err2) // if we found a match - { - searchingHeaders = FALSE; // then stop examining the headers - err = err2; - } - } - } - if (buf[0] == CR || buf[0] == LF || buf[0] == '\0') - searchingHeaders = FALSE; - } - delete bodyHan; - XP_FREE(buf); - return err; - } - else - { - delete bodyHan; - return SearchError_OutOfMemory; - } -} - -MSG_SearchError MSG_SearchTerm::MatchBody (MSG_ScopeTerm *scope, uint32 offset, uint32 length /*in lines*/, int16 foldcsid, - DBMessageHdr *msg, MessageDB * db) -{ - MSG_SearchError err = SearchError_NotAMatch; - - // Small hack so we don't look all through a message when someone has - // specified "BODY IS foo" - if ((length > 0) && (m_operator == opIs || m_operator == opIsnt)) - length = XP_STRLEN (m_value.u.string); - - MSG_BodyHandler * bodyHan = new MSG_BodyHandler (scope, offset, length, msg, db); - if (!bodyHan) - return SearchError_OutOfMemory; - - const int kBufSize = 512; // max size of a line??? - char *buf = (char*) XP_ALLOC(kBufSize); - if (buf) - { - XP_Bool endOfFile = FALSE; // if retValue == 0, we've hit the end of the file - uint32 lines = 0; - - CCCDataObject conv = INTL_CreateCharCodeConverter(); - XP_Bool getConverter = FALSE; - int16 win_csid = INTL_DocToWinCharSetID(foldcsid); - int16 mail_csid = INTL_DefaultMailCharSetID(win_csid); // to default mail_csid (e.g. JIS for Japanese) - if ((NULL != conv) && INTL_GetCharCodeConverter(mail_csid, win_csid, conv)) - getConverter = TRUE; - - // Change the sense of the loop so we don't bail out prematurely - // on negative terms. i.e. opDoesntContain must look at all lines - MSG_SearchError errContinueLoop; - if (MatchAllBeforeDeciding()) - err = errContinueLoop = SearchError_Success; - else - err = errContinueLoop = SearchError_NotAMatch; - - // If there's a '=' in the search term, then we're not going to do - // quoted printable decoding. Otherwise we assume everything is - // quoted printable. Obviously everything isn't quoted printable, but - // since we don't have a MIME parser handy, and we want to err on the - // side of too many hits rather than not enough, we'll assume in that - // general direction. ### FIX ME - // bug fix #88935: for stateful csids like JIS, we don't want to decode - // quoted printable since it contains '='. - XP_Bool isQuotedPrintable = !(mail_csid & STATEFUL) && - (XP_STRCHR (m_value.u.string, '=') == NULL); - - while (!endOfFile && err == errContinueLoop) - { - if (bodyHan->GetNextLine(buf, kBufSize)) - { - // Do in-place decoding of quoted printable - if (isQuotedPrintable) - StripQuotedPrintable ((unsigned char*)buf); - - char *compare = buf; - if (getConverter) - { - // In here we do I18N conversion if we get the converter - char *newBody = NULL; - newBody = (char *)INTL_CallCharCodeConverter(conv, (unsigned char *) buf, (int32) XP_STRLEN(buf)); - if (newBody && (newBody != buf)) - { - // CharCodeConverter return the char* to the orginal string - // we don't want to free body in that case - compare = newBody; - } - } - if (*compare && *compare != CR && *compare != LF) - { - err = MatchString (compare, win_csid, TRUE); - lines++; - } - if (compare != buf) - XP_FREEIF(compare); - } - else - endOfFile = TRUE; - } - - if(conv) - INTL_DestroyCharCodeConverter(conv); - XP_FREEIF(buf); - delete bodyHan; - } - else - err = SearchError_OutOfMemory; - return err; -} - - -MSG_SearchError MSG_SearchTerm::MatchString (const char *stringToMatch, int16 csid, XP_Bool body) -{ - MSG_SearchError err = SearchError_NotAMatch; - unsigned char* n_str = NULL; - unsigned char* n_header = NULL; - if(opIsEmpty != m_operator) // Save some performance for opIsEmpty - { - n_str = INTL_GetNormalizeStr(csid , (unsigned char*)m_value.u.string); // Always new buffer unless not enough memory - if (!body) - n_header = INTL_GetNormalizeStrFromRFC1522(csid , (unsigned char*)stringToMatch); // Always new buffer unless not enough memory - else - n_header = INTL_GetNormalizeStr(csid , (unsigned char*)stringToMatch); // Always new buffer unless not enough memory - - XP_ASSERT(n_str); - XP_ASSERT(n_header); - } - switch (m_operator) - { - case opContains: - if((NULL != n_str) && (NULL != n_header) && (n_str[0]) && INTL_StrContains(csid, n_header, n_str)) - err = SearchError_Success; - break; - case opDoesntContain: - if((NULL != n_str) && (NULL != n_header) && (n_str[0]) && (! INTL_StrContains(csid, n_header, n_str))) - err = SearchError_Success; - break; - case opIs: - if(n_str && n_header) - { - if (n_str[0]) - { - if (INTL_StrIs(csid, n_header, n_str)) - err = SearchError_Success; - } - else if (n_header[0] == '\0') // Special case for "is <the empty string>" - err = SearchError_Success; - } - break; - case opIsnt: - if(n_str && n_header) - { - if (n_str[0]) - { - if (! INTL_StrIs(csid, n_header, n_str)) - err = SearchError_Success; - } - else if (n_header[0] != '\0') // Special case for "isn't <the empty string>" - err = SearchError_Success; - } - break; - case opIsEmpty: - if (!stringToMatch || stringToMatch[0] == '\0') - err = SearchError_Success; - break; - case opBeginsWith: - if((NULL != n_str) && (NULL != n_header) && INTL_StrBeginWith(csid, n_header, n_str)) - err = SearchError_Success; - break; - case opEndsWith: - { - if((NULL != n_str) && (NULL != n_header) && INTL_StrEndWith(csid, n_header, n_str)) - err = SearchError_Success; - } - break; - default: - XP_ASSERT(FALSE); - } - - if(n_str) // Need to free the normalized string - XP_FREE(n_str); - - if(n_header) // Need to free the normalized string - XP_FREE(n_header); - - return err; -} - -XP_Bool MSG_SearchTerm::MatchAllBeforeDeciding () -{ - if (m_operator == opDoesntContain || m_operator == opIsnt) - return TRUE; - return FALSE; -} - - -MSG_SearchError MSG_SearchTerm::MatchRfc822String (const char *string, int16 csid) -{ - // Isolate the RFC 822 parsing weirdnesses here. MSG_ParseRFC822Addresses - // returns a catenated string of null-terminated strings, which we walk - // across, tring to match the target string to either the name OR the address - - char *names = NULL, *addresses = NULL; - - // Change the sense of the loop so we don't bail out prematurely - // on negative terms. i.e. opDoesntContain must look at all recipients - MSG_SearchError err; - MSG_SearchError errContinueLoop; - if (MatchAllBeforeDeciding()) - err = errContinueLoop = SearchError_Success; - else - err = errContinueLoop = SearchError_NotAMatch; - - int count = MSG_ParseRFC822Addresses (string, &names, &addresses); - if (count > 0) - { - XP_ASSERT(names); - XP_ASSERT(addresses); - if (!names || !addresses) - return err; - - char *walkNames = names; - char *walkAddresses = addresses; - - for (int i = 0; i < count && err == errContinueLoop; i++) - { - err = MatchString (walkNames, csid); - if (errContinueLoop == err) - err = MatchString (walkAddresses, csid); - - walkNames += XP_STRLEN(walkNames) + 1; - walkAddresses += XP_STRLEN(walkAddresses) + 1; - } - - XP_FREEIF(names); - XP_FREEIF(addresses); - } - - return err; -} - - -MSG_SearchError MSG_SearchTerm::GetLocalTimes (time_t a, time_t b, struct tm &aTm, struct tm &bTm) -{ - // Isolate the RTL time weirdnesses here: - // (1) Must copy the tm since localtime has a static tm - // (2) localtime can fail if it doesn't like the time_t. Must check the tm* for NULL - - struct tm *p = localtime(&a); - if (p) - { - XP_MEMCPY (&aTm, p, sizeof(struct tm)); - p = localtime(&b); - if (p) - { - XP_MEMCPY (&bTm, p, sizeof(struct tm)); - return SearchError_Success; - } - } - return SearchError_InvalidAttribute; -} - - -MSG_SearchError MSG_SearchTerm::MatchDate (time_t dateToMatch) -{ - MSG_SearchError err = SearchError_NotAMatch; - switch (m_operator) - { - case opIsBefore: - if (dateToMatch < m_value.u.date) - err = SearchError_Success; - break; - case opIsAfter: - if (dateToMatch > m_value.u.date) - err = SearchError_Success; - break; - case opIs: - { - struct tm tmToMatch, tmThis; - if (SearchError_Success == GetLocalTimes (dateToMatch, m_value.u.date, tmToMatch, tmThis)) - { - if (tmThis.tm_year == tmToMatch.tm_year && - tmThis.tm_mon == tmToMatch.tm_mon && - tmThis.tm_mday == tmToMatch.tm_mday) - err = SearchError_Success; - } - } - break; - case opIsnt: - { - struct tm tmToMatch, tmThis; - if (SearchError_Success == GetLocalTimes (dateToMatch, m_value.u.date, tmToMatch, tmThis)) - { - if (tmThis.tm_year != tmToMatch.tm_year || - tmThis.tm_mon != tmToMatch.tm_mon || - tmThis.tm_mday != tmToMatch.tm_mday) - err = SearchError_Success; - } - } - break; - default: - XP_ASSERT(FALSE); - } - return err; -} - - -MSG_SearchError MSG_SearchTerm::MatchAge (time_t msgDate) -{ - MSG_SearchError err = SearchError_NotAMatch; - time_t now = XP_TIME(); - time_t matchDay = now - (m_value.u.age * 60 * 60 * 24); - struct tm * matchTime = localtime(&matchDay); - - // localTime axes previous results so save these. - int day = matchTime->tm_mday; - int month = matchTime->tm_mon; - int year = matchTime->tm_year; - - struct tm * msgTime = localtime(&msgDate); - - switch (m_operator) - { - case opIsGreaterThan: // is older than - if (msgDate < matchDay) - err = SearchError_Success; - break; - case opIsLessThan: // is younger than - if (msgDate > matchDay) - err = SearchError_Success; - break; - case opIs: - if (matchTime && msgTime) - if ((day == msgTime->tm_mday) - && (month == msgTime->tm_mon) - && (year == msgTime->tm_year)) - err = SearchError_Success; - break; - default: - XP_ASSERT(FALSE); - } - - return err; -} - - -MSG_SearchError MSG_SearchTerm::MatchSize (uint32 sizeToMatch) -{ - MSG_SearchError err = SearchError_NotAMatch; - switch (m_operator) - { - case opIsHigherThan: - if (sizeToMatch > m_value.u.size) - err = SearchError_Success; - break; - case opIsLowerThan: - if (sizeToMatch < m_value.u.size) - err = SearchError_Success; - break; - default: - break; - } - return err; -} - - -MSG_SearchError MSG_SearchTerm::MatchStatus (uint32 statusToMatch) -{ - MSG_SearchError err = SearchError_NotAMatch; - XP_Bool matches = FALSE; - - if (statusToMatch & m_value.u.msgStatus) - matches = TRUE; - - switch (m_operator) - { - case opIs: - if (matches) - err = SearchError_Success; - break; - case opIsnt: - if (!matches) - err = SearchError_Success; - break; - default: - XP_ASSERT(FALSE); - } - - return err; -} - - -MSG_SearchError MSG_SearchTerm::MatchPriority (MSG_PRIORITY priorityToMatch) -{ - MSG_SearchError err = SearchError_NotAMatch; - - // Use this ittle hack to get around the fact that enums don't have - // integer compare operators - int p1 = (int) priorityToMatch; - int p2 = (int) m_value.u.priority; - - switch (m_operator) - { - case opIsHigherThan: - if (p1 > p2) - err = SearchError_Success; - break; - case opIsLowerThan: - if (p1 < p2) - err = SearchError_Success; - break; - case opIs: - if (p1 == p2) - err = SearchError_Success; - break; - default: - XP_ASSERT(FALSE); - } - return err; -} - -//----------------------------------------------------------------------------- -//-------------------- Implementation of MSG_ScopeTerm ------------------------ -//----------------------------------------------------------------------------- - -MSG_ScopeTerm::MSG_ScopeTerm (MSG_SearchFrame *frame, MSG_ScopeAttribute attrib, MSG_FolderInfo *folder) : msg_OpaqueObject (m_expectedMagic) -{ - m_attribute = attrib; - m_folder = folder; - m_adapter = NULL; - m_frame = frame; - m_name = NULL; - m_server = NULL; - m_file = 0; - - m_searchServer = TRUE; - MSG_LinedPane * pane = m_frame ? m_frame->GetPane() : (MSG_LinedPane*)NULL; - if (pane) - m_searchServer = pane->GetPrefs()->GetSearchServer(); // should the scope term be local or on the server? - -} - - -MSG_ScopeTerm::MSG_ScopeTerm (MSG_SearchFrame *frame, DIR_Server *server) : msg_OpaqueObject (m_expectedMagic) -{ - m_server = server; - DIR_IncrementServerRefCount (m_server); - m_attribute = scopeLdapDirectory; - m_adapter = NULL; - m_frame = frame; - m_name = NULL; - m_folder = NULL; - m_file = NULL; - - m_searchServer = TRUE; - MSG_LinedPane * pane = m_frame ? m_frame->GetPane() : (MSG_LinedPane *)NULL; - if (pane) - m_searchServer = pane->GetPrefs()->GetSearchServer(); // should the scope term be local or on the server? - -} - - -MSG_ScopeTerm::~MSG_ScopeTerm () -{ - if (NULL != m_name) - XP_FREE(m_name); - if (NULL != m_adapter) - delete m_adapter; - if (m_server) - DIR_DecrementServerRefCount (m_server); - if (m_file) - XP_FileClose (m_file); -} - - -MSG_SearchError MSG_ScopeTerm::InitializeAdapter (MSG_SearchTermArray &termList) -{ - XP_ASSERT (m_adapter == NULL); - MSG_SearchError err = SearchError_Success; - - // mscott: i have added m_searchServer into this switch to take into account the user's preference - // for searching locally or on the server... - switch (m_attribute) - { - case scopeMailFolder: - if (m_folder->GetType() == FOLDER_IMAPMAIL && (NET_IsOffline() || !m_searchServer)) // Are we in Offline IMAP mode? - m_adapter = new msg_SearchIMAPOfflineMail (this, termList); - else - if (!IsOfflineMail() && m_searchServer) // Online IMAP && searching the server? - m_adapter = new msg_SearchOnlineMail (this, termList); - else - m_adapter = new msg_SearchOfflineMail (this, termList); - break; - case scopeNewsgroup: - if (NET_IsOffline() || !m_searchServer) - m_adapter = new msg_SearchOfflineNews (this, termList); - else - if (m_folder->KnowsSearchNntpExtension()) - m_adapter = new msg_SearchNewsEx (this, termList); - else - m_adapter = new msg_SearchNews (this, termList); - break; - case scopeAllSearchableGroups: - if (!m_searchServer) - m_adapter = new msg_SearchOfflineNews(this, termList); // mscott: is this the behavior we want? - else - m_adapter = new msg_SearchNewsEx (this, termList); - break; - case scopeLdapDirectory: - m_adapter = new msg_SearchLdap (this, termList); - break; - case scopeOfflineNewsgroup: - m_adapter = new msg_SearchOfflineNews (this, termList); - break; - default: - XP_ASSERT(FALSE); - err = SearchError_InvalidScope; - } - - if (m_adapter) - err = m_adapter->ValidateTerms (); - - return err; -} - - -XP_Bool MSG_ScopeTerm::IsOfflineMail () -{ - // Find out whether "this" mail folder is online or offline - XP_ASSERT(m_folder); - if (m_folder->GetType() == FOLDER_IMAPMAIL && !NET_IsOffline() && m_searchServer) // make sure we are not in offline IMAP (mscott) - return FALSE; - return TRUE; // if POP or IMAP in offline mode -} - -XP_Bool MSG_ScopeTerm::IsOfflineIMAPMail() -{ - // Find out whether "this" mail folder is an offline IMAP folder - XP_ASSERT(m_folder); - if (m_folder->GetType() == FOLDER_IMAPMAIL && (NET_IsOffline() || !m_searchServer)) - return TRUE; - return FALSE; // we are not an IMAP folder that is offline -} - - -const char *MSG_ScopeTerm::GetMailPath () -{ - // if we are POP or OFFLINE IMAP, then we have a Pathname which can be generated (mscott) - if (IsOfflineMail()) -// if (FOLDER_MAIL == m_folder->GetType()) - return ((MSG_FolderInfoMail*) m_folder)->GetPathname(); - return NULL; -} - - -MSG_SearchError MSG_ScopeTerm::TimeSlice () -{ - // For scope terms, time slice means give some processing time to - // the adapter we own - return m_adapter->Search(); -} - - -char *MSG_ScopeTerm::GetStatusBarName () -{ - switch (m_attribute) - { - case scopeLdapDirectory: - if (m_server->description) - return XP_STRDUP(m_server->description); - else - return XP_STRDUP(m_server->serverName); - default: - { - char *statusBarName = XP_STRDUP(m_folder->GetName ()); - NET_UnEscape(statusBarName); // Mac apparently stores as "foo%20bar" - return statusBarName; - } - } -} - - -//----------------------------------------------------------------------------- -// MSG_SearchFrame is a search session. There is one pane object per running -// customer of search (mail/news, ldap, rules, etc.) -//----------------------------------------------------------------------------- - -MSG_SearchFrame::MSG_SearchFrame (MSG_LinedPane *pane) : msg_OpaqueObject (m_expectedMagic) -{ - // link in the searchFrame with the pane and context - m_pane = pane; - MWContext *context = pane->GetContext(); - XP_ASSERT(context); - context->msg_searchFrame = this; - - m_sortAttribute = attribSender; - m_descending = FALSE; - m_ldapObjectClass = NULL; - m_idxRunningScope = 0; - m_parallel = FALSE; - m_calledStartingUpdate = FALSE; - m_handlingError = FALSE; - m_urlStruct = NULL; - - m_searchType = searchNormal; - m_pSearchParam = NULL; - - m_inCylonMode = FALSE; - m_cylonModeTimer = NULL; - - m_offlineProgressTotal = 0; - m_offlineProgressSoFar = 0; -} - - -MSG_SearchFrame::~MSG_SearchFrame () -{ - DestroyResultList (); - DestroyScopeList (); - DestroyTermList (); - XP_ASSERT(m_viewList.GetSize() == 0); // are all of our views closed? (Search As View related) - DestroySearchViewList(); // what if we have open views before we kill this? - - if (m_ldapObjectClass) - XP_FREE (m_ldapObjectClass); - - if (m_pSearchParam) - XP_FREE (m_pSearchParam); - - if (m_inCylonMode) - EndCylonMode(); -} - - -MSG_SearchFrame *MSG_SearchFrame::FromContext (MWContext *context) -{ - if (!context) - return NULL; - MSG_SearchFrame *frame = context->msg_searchFrame; - if (!frame || !frame->IsValid()) - return NULL; - return frame; -} - - -MSG_SearchFrame *MSG_SearchFrame::FromPane (MSG_Pane *pane) -{ - if (!pane) - return NULL; - return FromContext (pane->GetContext()); -} - - -MSG_SearchError MSG_SearchFrame::Initialize () -{ - // Loop over scope terms, initializing an adapter per term. This - // architecture is necessitated by two things: - // 1. There might be more than one kind of adapter per if online - // *and* offline mail mail folders are selected, or if newsgroups - // belonging to RFC977bis *and* non-RFC977bis are selected - // 2. Most of the protocols are only capable of searching one scope at a - // time, so we'll do each scope in a separate adapter on the client - - MSG_ScopeTerm *scopeTerm = NULL; - MSG_SearchError err = SearchError_Success; - - // Ensure that the FE has added scopes and terms to this search - XP_ASSERT(m_termList.GetSize() > 0); - if (m_scopeList.GetSize() == 0 || m_termList.GetSize() == 0) - return SearchError_InvalidPane; - - // If this term list (loosely specified here by the first term) should be - // scheduled in parallel, build up a list of scopes to do the round-robin scheduling - scopeTerm = m_scopeList.GetAt(0); - if (scopeTerm->m_attribute == scopeLdapDirectory) - m_parallel = TRUE; - - for (int i = 0; i < m_scopeList.GetSize() && err == SearchError_Success; i++) - { - scopeTerm = m_scopeList.GetAt(i); - XP_ASSERT(scopeTerm->IsValid()); - - err = scopeTerm->InitializeAdapter (m_termList); - if (SearchError_Success == err && m_parallel) - m_parallelScopes.Add (scopeTerm); - - if (scopeTerm->m_attribute != scopeLdapDirectory && scopeTerm->m_folder->GetType() == FOLDER_MAIL) - m_offlineProgressTotal += scopeTerm->m_folder->GetTotalMessages(); - } - - return err; -} - - -MSG_SearchError MSG_SearchFrame::BeginSearching () -{ - MSG_SearchError err = SearchError_Success; - - // Here's a way to start the URL, but I don't really have time to - // unify the scheduling mechanisms. If the first scope is a newsgroup, and - // it's not RFC977bis-capable, we build the URL queue. All other searches can be - // done with one URL - - MSG_ScopeTerm *scope = m_scopeList.GetAt(0); - if (scope->m_attribute == scopeNewsgroup && !scope->m_folder->KnowsSearchNntpExtension() && scope->m_searchServer) - err = BuildUrlQueue (&msg_SearchNewsEx::PreExitFunction); - else if (scope->m_attribute == scopeMailFolder && !scope->IsOfflineMail()) - err = BuildUrlQueue (&msg_SearchOnlineMail::PreExitFunction); - else - err = GetUrl(); - - return err; -} - - -MSG_SearchError MSG_SearchFrame::BuildUrlQueue (Net_GetUrlExitFunc *exitFunction) -{ - MSG_UrlQueue *queue = new MSG_UrlQueue (m_pane); - - for (int i = 0; i < m_scopeList.GetSize(); i++) - { - msg_SearchAdapter *adapter = m_scopeList.GetAt(i)->m_adapter; - queue->AddUrl (adapter->GetEncoding(), exitFunction); - } - - if (queue->GetSize() > 0) - BeginCylonMode(); - - queue->GetNextUrl(); - - return SearchError_Success; -} - - -MSG_SearchError MSG_SearchFrame::GetUrl () -{ - MSG_SearchError err = SearchError_Success; - if (!m_urlStruct) - m_urlStruct = NET_CreateURLStruct ("search-libmsg:", NET_DONT_RELOAD); - - if (m_urlStruct) - { - // Set the internal_url flag so just in case someone else happens to have - // a search-libmsg URL, it won't fire my code, and surely crash. - m_urlStruct->internal_url = TRUE; - - // Initiate the asynchronous search - int getUrlErr = m_pane->GetURL (m_urlStruct, FALSE); - if (getUrlErr) - err = (MSG_SearchError) -1; //###phil impedance mismatch - else - if (!XP_STRNCMP(m_urlStruct->address, "news:", 5) || !XP_STRNCMP(m_urlStruct->address, "snews:", 6)) - BeginCylonMode(); - } - else - err = SearchError_OutOfMemory; - - return err; -} - - -void MSG_SearchFrame::DestroySearchViewList() -{ - for (int i = 0; i < m_viewList.GetSize(); i++) - delete m_viewList.GetAt(i); -} - -void MSG_SearchFrame::DestroyResultList () -{ - MSG_ResultElement *result = NULL; - for (int i = 0; i < m_resultList.GetSize(); i++) - { - result = m_resultList.GetAt(i); - XP_ASSERT (result->IsValid()); - delete result; - } -} - - -void MSG_SearchFrame::DestroyScopeList() -{ - MSG_ScopeTerm *scope = NULL; - for (int i = 0; i < m_scopeList.GetSize(); i++) - { - scope = m_scopeList.GetAt(i); - XP_ASSERT (scope->IsValid()); - delete scope; - } -} - - -void MSG_SearchFrame::DestroyTermList () -{ - MSG_SearchTerm *term = NULL; - for (int i = 0; i < m_termList.GetSize(); i++) - { - term = m_termList.GetAt(i); - XP_ASSERT (term->IsValid()); - delete term; - } -} - - -MSG_SearchError MSG_SearchFrame::AddSearchTerm (MSG_SearchAttribute attrib, MSG_SearchOperator op, MSG_SearchValue *value, XP_Bool BooleanAND, - char * arbitraryHeader) -{ - MSG_SearchTerm *pTerm = new MSG_SearchTerm (attrib, op, value, BooleanAND, arbitraryHeader); - if (NULL == pTerm) - return SearchError_OutOfMemory; - m_termList.Add (pTerm); - return SearchError_Success; -} - -void *MSG_SearchFrame::GetSearchParam() -{ - return m_pSearchParam; -} - -MSG_SearchType MSG_SearchFrame::GetSearchType() -{ - return m_searchType; -} - -MSG_SearchError MSG_SearchFrame::SetSearchParam(MSG_SearchType type, void *param) -{ - if (m_pSearchParam != NULL && m_pSearchParam != param) - { - if (m_searchType == searchLdapVLV) - { - XP_FREEIF(((LDAPVirtualList *)m_pSearchParam)->ldvlist_attrvalue); - XP_FREEIF(((LDAPVirtualList *)m_pSearchParam)->ldvlist_extradata); - } - XP_FREE(m_pSearchParam); - } - - m_searchType = type; - m_pSearchParam = param; - - return SearchError_Success; -} - -MSG_SearchError MSG_SearchFrame::AddScopeTerm (MSG_ScopeAttribute attrib, MSG_FolderInfo *folder) -{ - if (attrib != scopeAllSearchableGroups) - { - XP_ASSERT(folder); - if (!folder) - return SearchError_NullPointer; - } - - MSG_SearchError err = SearchError_Success; - - if (attrib == scopeMailFolder) - { - // It's legal to have a folderInfo which is only a directory, but has no - // mail folder or summary file. However, such a folderInfo isn't a legal - // scopeTerm, so turn it away here - MSG_FolderInfoMail *mailFolder = mailFolder = folder->GetMailFolderInfo(); - XP_StatStruct fileStat; - if (mailFolder && !XP_Stat(mailFolder->GetPathname(), &fileStat, xpMailFolder) && S_ISDIR(fileStat.st_mode)) - err = SearchError_InvalidFolder; - - // IMAP folders can have a \NOSELECT flag which means that they can't - // ever be opened. Since we have to SELECT a folder in order to search - // it, we'll just omit this folder from the list of search scopes - MSG_IMAPFolderInfoMail *imapFolder = folder->GetIMAPFolderInfoMail(); - if (imapFolder && !imapFolder->GetCanIOpenThisFolder()) - return SearchError_Success; - } - - if ((attrib == scopeNewsgroup || attrib == scopeOfflineNewsgroup) && folder->IsNews()) - { - // Even unsubscribed newsgroups have a folderInfo, so filter them - // out here, adding only the newsgroups we are subscribed to - MSG_FolderInfoNews * newsFolder = (MSG_FolderInfoNews *) folder; - if (!newsFolder->IsSubscribed()) - return SearchError_Success; - - // It would be nice if the FEs did this, but I guess no one knows - // that offline news searching is supposed to work - if (NET_IsOffline()) - attrib = scopeOfflineNewsgroup; - } - - if (attrib == scopeAllSearchableGroups) - { - // Try to be flexible about what we get here. It could be a news group, - // news host, or NULL, which uses the default host. - if (folder == NULL) - { - // I don't know how much of this can be NULL, so I'm not assuming anything - MSG_NewsHost *host = NULL; - msg_HostTable *table = m_pane->GetMaster()->GetHostTable(); - if (table) - { - host = table->GetDefaultHost(FALSE /*###tw*/); - if (host) - folder = host->GetHostInfo(); - } - } - else - { - switch (folder->GetType()) - { - case FOLDER_CONTAINERONLY: - break; // this is what we want -- nothing to do - case FOLDER_NEWSGROUP: - case FOLDER_CATEGORYCONTAINER: - { - MSG_NewsHost *host = ((MSG_FolderInfoNews*) folder)->GetHost(); - folder = host->GetHostInfo(); - } - default: - break; - } - } - } - - if (SearchError_Success == err) - { - MSG_ScopeTerm *pScope = new MSG_ScopeTerm (this, attrib, folder); - if (pScope) - m_scopeList.Add (pScope); - else - err = SearchError_OutOfMemory; - } - - return err; -} - - -MSG_SearchError MSG_SearchFrame::AddScopeTerm (DIR_Server *server) -{ - MSG_ScopeTerm *pScope = new MSG_ScopeTerm (this, server); - if (NULL == pScope) - return SearchError_OutOfMemory; - m_scopeList.Add (pScope); - return SearchError_Success; -} - - -MSG_SearchError MSG_SearchFrame::SetLdapObjectClass (char *objectClass) -{ - m_ldapObjectClass = XP_STRDUP(objectClass); - return SearchError_Success; -} - - -MSG_SearchError MSG_SearchFrame::AddLdapResultsToAddressBook (MSG_ViewIndex *indices, int count) -{ - MSG_SearchError err = SearchError_Success; - MSG_UrlQueue *queue = new MSG_AddLdapToAddressBookQueue (m_pane); - if (queue) - { - for (int i = 0; i < count; i++) - { - MSG_ResultElement *result = m_resultList.GetAt(indices[i]); - char *url = NULL; - MSG_SearchValue *dnValue = NULL; - err = result->GetValue (attribDistinguishedName, &dnValue); - if (SearchError_Success == err) - { - err = ((msg_SearchLdap*)result->m_adapter)->BuildUrl (dnValue->u.string, &url, TRUE /*addToAB*/); - if (SearchError_Success == err) - queue->AddUrl (url); - FREEIF(url); - MSG_DestroySearchValue (dnValue); - } - - } - queue->GetNextUrl(); - } - return err; -} - - -MSG_SearchError MSG_SearchFrame::ComposeFromLdapResults (MSG_ViewIndex * indices, int count) -{ -#define kMailToUrlScheme "mailto:" - - MSG_SearchError err = SearchError_Success; - int32 urlLength = XP_STRLEN(kMailToUrlScheme); - int i; - - char **addresses = (char**) XP_CALLOC(count, sizeof(char*)); - if (addresses) - { - // First build up an array of properly quoted names - for (i = 0; i < count; i++) - { - MSG_ResultElement *elem = m_resultList.GetAt(indices[i]); - - const MSG_SearchValue *cnValue = elem->GetValueRef (attribCommonName); - const MSG_SearchValue *mailValue = elem->GetValueRef (attrib822Address); - if (cnValue && cnValue->u.string && mailValue && mailValue->u.string) - { - addresses[i] = MSG_MakeFullAddress (cnValue->u.string, mailValue->u.string); - if (addresses[i]) - urlLength += XP_STRLEN (addresses[i]) + 1; //+1 for comma - } - } - - // Now catenate them all together - char *mailtoUrl = (char*) XP_ALLOC (urlLength + 1); // +1 for null term - if (mailtoUrl) - { - XP_STRCPY (mailtoUrl, kMailToUrlScheme); - for (i = 0; i < count; i++) - { - if (addresses[i]) - { - XP_STRCAT(mailtoUrl, addresses[i]); - XP_FREE(addresses[i]); - - // If more than one address, separate with a comma - if (count > 1 && i < count-1) - XP_STRCAT(mailtoUrl, ","); - } - - } - - // Send off the mailto URL - URL_Struct *mailtoStruct = NET_CreateURLStruct (mailtoUrl, NET_DONT_RELOAD); - if (mailtoStruct) - m_pane->GetURL (mailtoStruct, FALSE); - else - err = SearchError_OutOfMemory; - - XP_FREE (mailtoUrl); - } - else - err = SearchError_OutOfMemory; - - XP_FREE(addresses); - } - else - err = SearchError_OutOfMemory; - - return err; -} - - -MSG_SearchError MSG_SearchFrame::AddAllScopes (MSG_Master *master, MSG_ScopeAttribute scope) -{ - MSG_SearchError err = SearchError_Success; - MSG_FolderInfo *tree = NULL; - switch (scope) - { - case scopeMailFolder: - tree = master->GetLocalMailFolderTree(); - if (tree) - err = AddScopeTree (scope, tree); - else - { - XP_ASSERT(FALSE); - err = SearchError_NullPointer; - } - break; - case scopeNewsgroup: - { - msg_HostTable *table = master->GetHostTable(); - for (int i = 0; i < table->getNumHosts(); i++) - { - tree = table->getHost(i)->GetHostInfo(); - if (tree) - AddScopeTree (scope, tree); - else - { - XP_ASSERT(FALSE); - err = SearchError_NullPointer; - } - } - } - break; - default: - err = SearchError_InvalidScope; - } - - - return err; -} - - -MSG_SearchError MSG_SearchFrame::AddScopeTree (MSG_ScopeAttribute scope, MSG_FolderInfo *tree, XP_Bool deep) -{ - MSG_SearchError err = SearchError_Success; - if (tree->GetDepth() > 1) - { - if (scope == scopeMailFolder && tree->GetMailFolderInfo() != NULL) - { - err = AddScopeTerm (scope, tree); - - // It's ok for 'tree' to be not searchable, but we should still - // look down its subtree for searchable folders - if (SearchError_InvalidFolder == err) - err = SearchError_Success; - } - else - if ((scope == scopeNewsgroup || scope == scopeOfflineNewsgroup) && tree->IsNews()) - err = AddScopeTerm (scope, tree); - - } - - // okay, we want to skip this part if the user does not want us seaching sub folders / sub categories! - XP_Bool searchSubFolders = m_pane->GetPrefs()->GetSearchSubFolders(); - - if (SearchError_Success == err && searchSubFolders) - { - // Don't recurse the scopes for RFC977bis categories - MSG_FolderInfoNews *newsTree = tree->GetNewsFolderInfo(); - // okay, FEs do not set the FolderInfo if we are in offline mode...i.e. newsTree - // will still be listed as Xpat or NNTPExtensions for example. Of course, if we - // are in Offline mode, we want to recurse each folderInfo!! - if (newsTree && newsTree->KnowsSearchNntpExtension() && !NET_IsOffline()) // skip if offline mode.... - return err; - // Don't recurse the scopes for RFC977bis news hosts - else if (tree->KnowsSearchNntpExtension() && !NET_IsOffline()) // skip if offline mode... - err = AddScopeTerm (scopeAllSearchableGroups, tree); - else if (deep) - { - // It's a regular old mail folder or non-RFC977bis news host, so we - // recurse each folderInfo and build a new scope term for it. - const MSG_FolderArray *subTree = tree->GetSubFolders(); - for (int i = 0; i < subTree->GetSize() && SearchError_Success == err; i++) - err = AddScopeTree (scope, subTree->GetAt(i)); - } - } - - return err; -} - - -MSG_SearchError MSG_SearchFrame::EncodeRFC977bisScopes (char **ppOutEncoding) -{ - MSG_SearchError err = SearchError_Success; - MSG_ScopeTerm *firstScope = m_scopeList.GetAt(0); - if (firstScope && scopeAllSearchableGroups == firstScope->m_attribute) - { - *ppOutEncoding = XP_STRDUP("\"*\""); // NNTP protocol string -- do not localize - if (!*ppOutEncoding) - err = SearchError_OutOfMemory; - } - else - { - int i; - int cchNames = 0; - for (i = 0; i < m_scopeList.GetSize(); i++) - { - MSG_FolderInfo *folder = m_scopeList.GetAt(i)->m_folder; - int nameLen = XP_STRLEN (folder->GetName()); - cchNames += nameLen + 1; // Comma between names - if (FOLDER_CATEGORYCONTAINER == folder->GetType()) - { - cchNames += nameLen + 3; - cchNames += 1; // Searching category container "foo" means "foo,foo.*" - } - } - - *ppOutEncoding = (char*) XP_ALLOC(cchNames + 3);// Double-quotes and NULL term - if (*ppOutEncoding) - { - XP_STRCPY (*ppOutEncoding, "\""); // NNTP protocol string -- do not localize - int count = m_scopeList.GetSize(); - for (i = 0; i < count; i++) - { - MSG_FolderInfo *folder = m_scopeList.GetAt(i)->m_folder; - XP_STRCAT (*ppOutEncoding, folder->GetName()); - if (FOLDER_CATEGORYCONTAINER == folder->GetType()) - { - XP_STRCAT(*ppOutEncoding, ","); - XP_STRCAT(*ppOutEncoding, folder->GetName()); - XP_STRCAT(*ppOutEncoding, ".*"); // NNTP protocol string -- do not localize - } - if (i + 1 < count) // Some servers (RFC977bis?) don't like a trailing space on the last name - XP_STRCAT (*ppOutEncoding, ","); // NNTP protocol string -- do not localize - } - XP_STRCAT(*ppOutEncoding, "\""); // NNTP protocol string -- do not localize - } - else - err = SearchError_OutOfMemory; - } - return err; -} - - -MSG_SearchError MSG_SearchFrame::GetResultElement (MSG_ViewIndex idx, MSG_ResultElement **result) - -{ - MSG_SearchError err = SearchError_Success; - if ((int) idx >= m_resultList.GetSize()) - return SearchError_InvalidResultElement; - - MSG_ResultElement *res = m_resultList.GetAt(idx); - if (res && res->IsValid()) - *result = res; - else - err = SearchError_InvalidResultElement; - return err; -} - - -MSG_SearchError MSG_SearchFrame::SortResultList (MSG_SearchAttribute attrib, XP_Bool descending) -{ - m_pane->StartingUpdate (MSG_NotifyScramble, 0, 0); - - // Play a little dynamic-scoping trick to get these params into the Compare function - m_sortAttribute = attrib; - m_descending = descending; - m_resultList.QuickSort (MSG_ResultElement::Compare); - - m_pane->EndingUpdate (MSG_NotifyScramble, 0, 0); - - return SearchError_Success; -} - - - -MSG_SearchError MSG_SearchFrame::AddResultElement (MSG_ResultElement *element) -{ - XP_ASSERT(element); - XP_ASSERT(m_pane); - - XP_Bool bVLV = FALSE; - MSG_PaneType type = m_pane->GetPaneType(); - XP_ASSERT (MSG_ADDRPANE == type || AB_ABPANE == type || MSG_SEARCHPANE == type || type == AB_PICKERPANE); - - // Don't tell the FE about VLV results - if (m_searchType == searchLdapVLV) - bVLV = TRUE; - - // Add a new line to the FE's list - int count = m_resultList.GetSize(), index; - - if (!bVLV) - m_pane->StartingUpdate (MSG_NotifyInsertOrDelete, count, 1); - index = m_resultList.Add (element); - if (!bVLV) - m_pane->EndingUpdate (MSG_NotifyInsertOrDelete, count, 1); - - // Tell the status bar to display new number of hits - if (!bVLV && m_resultList.GetSize() > 0) - UpdateStatusBar (MK_MSG_SEARCH_STATUS); - - return SearchError_Success; -} - -void MSG_SearchFrame::AddViewToList(MSG_FolderInfo * folder, MessageDBView * view) -{ - MSG_SearchView * srchView = new MSG_SearchView; - if (srchView) - { - srchView->folder = folder; - srchView->view = view; - m_viewList.Add(srchView); - } -} - -MessageDBView * MSG_SearchFrame::GetView(MSG_FolderInfo * folder) -{ - MSG_SearchView * srchView; - // find the first instance of the folder in the search view array - for (int i = 0; i < m_viewList.GetSize(); i++) - { - srchView = m_viewList.GetAt(i); - if (srchView->folder == folder) // do they point to the same folder? - return srchView->view; - } - return NULL; // not in the list -} - -void MSG_SearchFrame::CloseView(MSG_FolderInfo * folder) -{ - MSG_SearchView * srchView; - XP_Bool found = FALSE; - // find the first instance of the folder in the search view array and delete it - for (int i = 0; i < m_viewList.GetSize() && !found; i++) - { - srchView = m_viewList.GetAt(i); - if (srchView->folder == folder) - { - m_viewList.RemoveAt(i); - srchView->view->Close(); // we opened...so we close it... - delete srchView; - found = TRUE; - } - } -} - - -MSG_SearchResultArray * MSG_SearchFrame::IndicesToResultElements (const MSG_ViewIndex *indices, int32 numIndices) -{ - MSG_SearchResultArray * results = new MSG_SearchResultArray; - for (int i = 0; i < numIndices; i++) - { - MSG_ResultElement * elem = m_resultList.GetAt(indices[i]); - if (elem) - results->Add(elem); - } - - // now let's sort this new array based on the src folder - results->QuickSort (MSG_ResultElement::CompareByFolderInfoPtrs); - return results; // return array...caller must deallocate the memory! -} - - -MSG_SearchError MSG_SearchFrame::GetLdapObjectClasses (char ** /*array*/, uint16 * /*maxItems*/) -{ - MSG_SearchError err = SearchError_Success; - return err; -} - - -MsgERR MSG_SearchFrame::MoveMessages (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo * destFolder) -{ - return ProcessSearchAsViewCmd(indices, numIndices, destFolder, MSG_SearchAsViewMove); -} - -MsgERR MSG_SearchFrame::CopyMessages (const MSG_ViewIndex *indices, - int32 numIndices, - MSG_FolderInfo * destFolder, - XP_Bool deleteAfterCopy) -{ - if (deleteAfterCopy) - return ProcessSearchAsViewCmd(indices, numIndices, destFolder, MSG_SearchAsViewMove); - else - return ProcessSearchAsViewCmd(indices, numIndices, destFolder, MSG_SearchAsViewCopy); -} - -MsgERR MSG_SearchFrame::TrashMessages (const MSG_ViewIndex * indices, - int32 numIndices) -{ - return ProcessSearchAsViewCmd(indices, numIndices, NULL, MSG_SearchAsViewDelete); -} - -MsgERR MSG_SearchFrame::DeleteMessages (const MSG_ViewIndex * indices, - int32 numIndices) -{ - return ProcessSearchAsViewCmd(indices, numIndices, NULL, MSG_SearchAsViewDeleteNoTrash); -} - -MSG_DragEffect MSG_SearchFrame::DragMessagesStatus(const MSG_ViewIndex *indices, int32 numIndices,MSG_FolderInfo * destFolder, MSG_DragEffect request) -{ - if (!destFolder) - return MSG_Drag_Not_Allowed; - - // how to handle source folders for search as view where they can all be different. Fortunately, the source folders should be either - // all IMAP folders, all POP, or all News since we cannot currently support searching over different servers. If this fact changes, then - // this step is going to be complicated. - - MSG_SearchValue * value; - MSG_ResultElement * elem = NULL;; - - // If there are indices, then we have a source folder. Otherwise, just check the destination - // folder. - if (numIndices > 0) - elem = m_resultList.GetAt(indices[0]); // we don't care which source folder we get. - if ((numIndices > 0) ? (elem != NULL) : TRUE) - { - // Which destinations can have messages added to them? - - if (destFolder->GetDepth() <= 1) // root of tree or server. - return MSG_Drag_Not_Allowed; // (needed because local mail server has type "FOLDER_MAIL"). - - FolderType destType = destFolder->GetType(); - - if (destType == FOLDER_CONTAINERONLY // can't drag a message to a server - || destType == FOLDER_CATEGORYCONTAINER - || destType == FOLDER_IMAPSERVERCONTAINER - || destType == FOLDER_NEWSGROUP) // should we offer to post the message? - jrm - return MSG_Drag_Not_Allowed; - - MSG_IMAPFolderInfoMail *imapDest = destFolder->GetIMAPFolderInfoMail(); - if (imapDest) - { - if (!imapDest->GetCanDropMessagesIntoFolder()) - return MSG_Drag_Not_Allowed; - } - - if (numIndices <= 0 || !elem) - { - // This is as far as we can go; there is no source folder, so the FE - // only wants to find out if drops are allowed in the destination. - return request; - } - - elem->GetValue(attribFolderInfo, & value); - MSG_FolderInfo *srcFolder = value->u.folder; - if (srcFolder) - { - FolderType sourceType = srcFolder->GetType(); - - // Which drags are required to be copies? - XP_Bool mustCopy = FALSE; - if ((sourceType == FOLDER_MAIL) != (destType == FOLDER_MAIL)) // Bug #55177 drag between local and server... - mustCopy = TRUE; - else if (sourceType == FOLDER_NEWSGROUP) - mustCopy = TRUE; - else if (sourceType == FOLDER_IMAPMAIL) // if IMAP, we actually have to go through each source folder and check ACLs - { - if (numIndices < 50) // we probably don't want to check the ACL on too many folders, just for drag/drop status - { - int k = 0; - while (!mustCopy && (k < numIndices)) // drop out once we hit the first one that fails - { - MSG_ResultElement *imapElem = m_resultList.GetAt(indices[k]); - if (imapElem) - { - elem->GetValue(attribFolderInfo, & value); - MSG_FolderInfo *folderK = value->u.folder; - if (folderK) - { - MSG_IMAPFolderInfoMail *imapFolderK = folderK->GetIMAPFolderInfoMail(); - if (imapFolderK && !imapFolderK->GetCanDeleteMessagesInFolder()) - mustCopy = TRUE; - } - } - k++; - } - } - } - - if (mustCopy) - return (MSG_DragEffect)(request & MSG_Require_Copy); - - // Now, if they don't care, give them a move - if ((request & MSG_Require_Move) == MSG_Require_Move) - return MSG_Require_Move; - - // Otherwise, give them what they want - return request; - } - } - return MSG_Drag_Not_Allowed; -} - - - -MsgERR MSG_SearchFrame::ProcessSearchAsViewCmd (const MSG_ViewIndex * indices, int32 numIndices, - MSG_FolderInfo * destFolder, /* might be NULL if cmd is delete */ - SearchAsViewCmd cmdType) -// indices contains search result elements from different folders!! Our job is to break it down into -// folders and message keys for each folder. Then perform the SearchAsViewCmd on each folder and its associated -// set of message keys. Some of the arguments passed into this routine are ignored depending on the -// search as view command being performed. - -{ - - MSG_ResultElement * elem; - MSG_SearchValue * value; - MSG_FolderInfo * srcFolder = NULL; - - if (numIndices == 0) - return eSUCCESS; - - MSG_SearchResultArray * effectedResults = IndicesToResultElements(indices, numIndices); // also sorts by folderInfo - if (!effectedResults) - return eOUT_OF_MEMORY; // should this be a different error condition? - - int index = 0; - - // repeat until we have looked at every search result element - while (index < effectedResults->GetSize()) - { - // each new iteration through, means we are looking at a new folder... - elem = effectedResults->GetAt(index); - if (elem) - { - IDArray * ids = new IDArray; // create a new ID Array - elem->GetValue(attribFolderInfo, &value); - srcFolder = value->u.folder; // get the src folder - - if (!srcFolder) - break; - - elem->GetValue(attribMessageKey, &value); // add our first element - ids->Add(value->u.key); - - index++; // This ensures that we never have an infinite loop in the outer while loop! - - XP_Bool sameFolder = TRUE; - // add the message IDs for all messages also in this same folder - while (index < effectedResults->GetSize() && sameFolder) - { - elem = effectedResults->GetAt(index); - elem->GetValue(attribFolderInfo, &value); - if (value->u.folder == srcFolder) - { - elem->GetValue(attribMessageKey, &value); - ids->Add(value->u.key); - index++; - } - else - sameFolder = FALSE; - } - - // small hack.. If the source folder is a Newsgroup, then we can only copy it! - // so change the FE command if they were trying a move. This simplifies FE work since they can always - // call MOVE without ever having to check if a source folder is news group. - MsgERR status = eSUCCESS; - - if ((srcFolder->GetType() == FOLDER_NEWSGROUP) && (cmdType == MSG_SearchAsViewMove)) - cmdType = MSG_SearchAsViewCopy; - - // if the srcFolder is a news group, - if (srcFolder->IsNews() && (cmdType == MSG_SearchAsViewDelete || cmdType == MSG_SearchAsViewDeleteNoTrash)) - status = eFAILURE; - - // All the message IDs for this folder have been added, so perform the command... - if (status == eSUCCESS) - { - switch (cmdType) - { - case MSG_SearchAsViewMove: - CopyResultElements(srcFolder, destFolder, ids, TRUE /* delete after copy */); - break; - case MSG_SearchAsViewCopy: - CopyResultElements(srcFolder, destFolder, ids, FALSE /* do not delete after copy */); - break; - case MSG_SearchAsViewDelete: - TrashResultElements(srcFolder, ids); - break; - case MSG_SearchAsViewDeleteNoTrash: - DeleteResultElements(srcFolder, ids); - break; - default: - XP_ASSERT(0); - } - } - - } - else - index++; // if we can do nothing else... - } - - delete effectedResults; - - for (int i = m_resultList.GetSize() - 1; i >= 0; i--) - { - elem = m_resultList.GetAt(i); - // for each result element, determine if its index is in indices... - for (int k = 0; k < numIndices; k++) - if (indices[k] == i) - { - numIndices--; - m_pane->StartingUpdate(MSG_NotifyInsertOrDelete, i, -1); - m_resultList.RemoveAt(i); - if (elem) - { - delete elem; - elem = NULL; - } - m_pane->EndingUpdate(MSG_NotifyInsertOrDelete, i, -1); - } - } - - return eSUCCESS; -} - - -MSG_SearchError MSG_SearchFrame::CopyResultElements (MSG_FolderInfo * srcFolder, MSG_FolderInfo * destFolder, - IDArray * ids, XP_Bool deleteAfterCopy) -{ - if((srcFolder == NULL) || (destFolder == NULL)) - return SearchError_NullPointer; - - MessageDBView * view = NULL; - // now all the message keys have been added...so perform this copy - char * url = srcFolder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - MessageDBView::OpenURL(url, m_pane->GetMaster(), ViewAny, & view, FALSE); - AddViewToList(srcFolder, view); // register the view in our search frame so it can close it when copy finished. - srcFolder->StartAsyncCopyMessagesInto (destFolder, m_pane, view->GetDB(), ids, ids->GetSize(), - m_pane->GetContext(), NULL, deleteAfterCopy, MSG_MESSAGEKEYNONE); - return SearchError_Success; -} - - -MSG_SearchError MSG_SearchFrame::TrashResultElements (MSG_FolderInfo * srcFolder, IDArray * ids) -{ - XP_Bool imapDeleteIsMoveToTrash = (srcFolder) ? srcFolder->DeleteIsMoveToTrash() : FALSE; - - // first set up a folder Info for the trash. - char * path = NULL; - MSG_FolderInfoMail * trashFolder = NULL; - - // make sure we are are NOT a Trash folder OR an IMAP folder where delete is NOT move to trash... - if (srcFolder && !(srcFolder->GetFlags() & MSG_FOLDER_FLAG_TRASH) && - !((srcFolder->GetType() == FOLDER_IMAPMAIL) && !imapDeleteIsMoveToTrash)) - { - // determine if folder is a local mail folder...use local trash - if (srcFolder->GetType() == FOLDER_MAIL) - { - path = m_pane->GetPrefs()->MagicFolderName (MSG_FOLDER_FLAG_TRASH); - trashFolder = m_pane->GetMaster()->FindMailFolder(path, TRUE); - } - else // must be an IMAP folder... - { - // IMAP trash folder... - MSG_IMAPFolderInfoMail *imapInfo = srcFolder->GetIMAPFolderInfoMail(); - if (imapInfo) - { - MSG_FolderInfo *foundTrash = MSG_GetTrashFolderForHost(imapInfo->GetIMAPHost()); - trashFolder = foundTrash ? foundTrash->GetMailFolderInfo() : - (MSG_FolderInfoMail *)NULL; - } - } - - XP_FREEIF(path); - MSG_SearchError err = CopyResultElements (srcFolder, trashFolder, ids, TRUE); - return err; - - } - else - DeleteResultElements(srcFolder, ids); - - return SearchError_Success; -} - -MSG_SearchError MSG_SearchFrame::DeleteResultElements(MSG_FolderInfo * srcFolder, IDArray * ids) -// actually delete (not move to trash) messages with the appropriate indices from the srcFolder... -{ - MessageDBView * view = NULL; - - if (srcFolder) - { - if (srcFolder->GetType () == FOLDER_MAIL) - { - char * url = srcFolder->BuildUrl(NULL, MSG_MESSAGEKEYNONE); - MessageDBView::OpenURL(url, m_pane->GetMaster(), ViewAny, & view, FALSE); - if (view) - { - view->GetDB()->DeleteMessages(*ids, NULL); // delete the message from the data base.... - AddViewToList(srcFolder, view); // register the view in our search frame so it can close it when copy finished. - } - - } - else if (srcFolder->GetType() == FOLDER_IMAPMAIL) - ((MSG_IMAPFolderInfoMail *) srcFolder)->DeleteSpecifiedMessages(m_pane, *ids); - } - return SearchError_Success; -} - - -MSG_SearchError MSG_SearchFrame::DeleteResultElementsInFolder (MSG_FolderInfo *folder) -{ - // When the user deletes a mail folder or newsgroup while we have search - // results open on it, we should remove any such results from the view. - // Otherwise we have stale folderInfo pointers hanging around. - - if (!folder) - return SearchError_NullPointer; - - for (int i = m_resultList.GetSize() - 1; i >= 0; i--) - { - MSG_ResultElement *elem = m_resultList.GetAt(i); - if (elem->m_adapter->m_scope->m_folder == folder) - { - m_pane->StartingUpdate (MSG_NotifyInsertOrDelete, i, -1); - m_resultList.RemoveAt (i); - delete elem; - m_pane->EndingUpdate (MSG_NotifyInsertOrDelete, i, -1); - } - } - - return SearchError_Success; -} - - -int MSG_SearchFrame::TimeSlice () -{ - MSG_ScopeTerm *scope = GetRunningScope(); - if (scope && scope->m_adapter->m_abortCalled) - return -1; - - // Decide whether each scope in this search should get time in parallel, or whether - // each scope should finish before the next one starts - return m_parallel ? TimeSliceParallel() : TimeSliceSerial(); -} - - -int MSG_SearchFrame::TimeSliceSerial () -{ - // This version of TimeSlice runs each scope term one at a time, and waits until one - // scope term is finished before starting another one. When we're searching the local - // disk, this is the fastest way to do it. - - MSG_ScopeTerm *scope = GetRunningScope(); - if (scope) - { - MSG_SearchError err = scope->TimeSlice (); - if (err == SearchError_ScopeDone) - { - m_idxRunningScope++; - if (m_idxRunningScope < m_scopeList.GetSize()) - UpdateStatusBar (MK_MSG_SEARCH_STATUS); - } - - return 0; - } - else - { - FE_SetProgressBarPercent (GetContext(), 0); - return -1; - } -} - - -int MSG_SearchFrame::TimeSliceParallel () -{ - // This version of TimeSlice runs all scope terms at once, not waiting for any - // to complete. It stops when all scope terms are done. When we're searching - // a remote server, this is the fastest way to do it. - - MSG_SearchError err = SearchError_Success; - int count = m_parallelScopes.GetSize(); - if (count > 0) - { - for (int i = 0; i < count; i++) - { - MSG_ScopeTerm *scope = m_parallelScopes.GetAt (i); - err = scope->TimeSlice(); - - // This will remove this scope from the round-robin in the - // event of an error, or of normal completion (ScopeDone) - if (SearchError_Success != err) - m_parallelScopes.RemoveAt(i); - } - - return 0; - } - else - return -1; -} - - -void MSG_SearchFrame::UpdateStatusBar (int message) -{ - // Fudge factor for a %d in a printf format string - const int kPercentDFudge = 11; - - char *hitsString = NULL; - int hitsStringLength = 0; - - if (message == MK_MSG_SEARCH_STATUS && m_resultList.GetSize() > 0) - { - // Build the "Found 32 matches" string - char *hitsTemplate = XP_GetString (MK_SEARCH_HITS_COUNTER); - hitsStringLength = XP_STRLEN(hitsTemplate) + kPercentDFudge; - hitsString = new char [hitsStringLength]; - if (hitsString) - PR_snprintf (hitsString, hitsStringLength, hitsTemplate, m_resultList.GetSize()); - } - - // Build the progress string based on "message". If we built a hitsString, use it - MSG_ScopeTerm *scope = GetRunningScope (); - char *searchTemplate = XP_GetString (message); - char *scopeName = scope->GetStatusBarName (); - int statusStringLength = XP_STRLEN(searchTemplate) + XP_STRLEN(scopeName) + kPercentDFudge; - if (hitsString) - statusStringLength += hitsStringLength; - char *statusString = new char [statusStringLength]; - if (statusString) - { - PR_snprintf (statusString, statusStringLength, searchTemplate, scopeName); - if (hitsString) - XP_STRNCAT_SAFE (statusString, hitsString, statusStringLength - XP_STRLEN(statusString)); - FE_Progress (GetContext(), statusString); - delete [] statusString; - } - - if (hitsString) - delete [] hitsString; - - XP_FREEIF(scopeName); -} - - -msg_SearchAdapter *MSG_SearchFrame::GetRunningAdapter () -{ - MSG_ScopeTerm *scope = GetRunningScope(); - if (scope) - return GetRunningScope()->m_adapter; - return NULL; -} - - -MSG_ScopeTerm *MSG_SearchFrame::GetRunningScope () -{ - if (m_idxRunningScope < m_scopeList.GetSize()) - return m_scopeList.GetAt (m_idxRunningScope); - return NULL; -} - - -const char *MSG_SearchFrame::GetLdapObjectClass () -{ - // If the caller has set an object class, we should use it. Otherwise - // the DWIM setting is to search for people. - return m_ldapObjectClass ? m_ldapObjectClass : "Person"; -} - - -XP_Bool MSG_SearchFrame::GetGoToFolderStatus (MSG_ViewIndex *indices, int32 numIndices) -{ - for (int32 i = 0; i < numIndices; i++) - { - MSG_ResultElement *result = m_resultList.GetAt(indices[i]); - if (!result) - return FALSE; - - MSG_SearchValue *folderValue = NULL; - if (SearchError_Success == result->GetValue (attribFolderInfo, &folderValue)) - { - if (folderValue) - { - if (!folderValue->u.folder) - { - delete folderValue; - return FALSE; - } - delete folderValue; - } - else - return FALSE; - } - else - return FALSE; - - } - - return TRUE; -} - - -XP_Bool MSG_SearchFrame::GetSaveProfileStatus () -{ - if (m_scopeList.GetSize() > 0 && m_resultList.GetSize() > 0) - { - // Figure out whether the news host for the selected folder is capable of virtual groups - MSG_FolderInfo *folder = m_scopeList.GetAt(0)->m_folder; - MSG_NewsHost *host = NULL; - MSG_FolderInfoNews *newsFolder = folder->GetNewsFolderInfo(); - - if (newsFolder) - host = newsFolder->GetHost(); - else if (FOLDER_CONTAINERONLY == folder->GetType()) - host = ((MSG_NewsFolderInfoContainer*) folder)->GetHost(); - if (host) - return host->QueryExtension("PROFILE"); - } - - return FALSE; -} - - -msg_SearchNewsEx *MSG_SearchFrame::GetProfileAdapter() -{ - if (GetSaveProfileStatus()) - return (msg_SearchNewsEx*) m_scopeList.GetAt(0)->m_adapter; - return NULL; -} - - -void MSG_SearchFrame::BeginCylonMode () -{ - if (m_cylonModeTimer) - { - FE_ClearTimeout (m_cylonModeTimer); - m_cylonModeTimer = NULL; - } - - m_cylonModeTimer = FE_SetTimeout ((TimeoutCallbackFunction)MSG_SearchFrame::CylonModeCallback, this, 333 /*0.333 sec*/); - if (m_cylonModeTimer) - m_inCylonMode = TRUE; -} - - -void MSG_SearchFrame::EndCylonMode () -{ - m_inCylonMode = FALSE; - if (m_cylonModeTimer) - { - FE_ClearTimeout (m_cylonModeTimer); - m_cylonModeTimer = NULL; - } - FE_SetProgressBarPercent (GetContext(), 0); -} - - -void MSG_SearchFrame::CylonModeCallback (void *closure) -{ - MSG_SearchFrame *frame = (MSG_SearchFrame*) closure; - - if (frame->m_inCylonMode) - { - FE_SetProgressBarPercent (frame->GetContext(), -1); - frame->m_cylonModeTimer = NULL; - frame->BeginCylonMode (); - } -} - - -void MSG_SearchFrame::IncrementOfflineProgress () -{ - // Increment the thermometer in the search dialog - int32 percent = (int32) (100 * (((double) ++m_offlineProgressSoFar) / ((double) m_offlineProgressTotal))); - FE_SetProgressBarPercent (GetContext(), percent); -} - - -//----------------------------------------------------------------------------- -//------------------- Validity checking for menu items etc. ------------------- -//----------------------------------------------------------------------------- - -msg_SearchValidityTable::msg_SearchValidityTable () -{ - // Set everything to be unavailable and disabled - for (int i = 0; i < kNumAttributes; i++) - for (int j = 0; j < kNumOperators; j++) - { - SetAvailable (i, j, FALSE); - SetEnabled (i, j, FALSE); - SetValidButNotShown (i,j, FALSE); - } - m_numAvailAttribs = 0; // # of attributes marked with at least one available operator -} - -int msg_SearchValidityTable::GetNumAvailAttribs() -{ - m_numAvailAttribs = 0; - for (int i = 0; i < kNumAttributes; i++) - for (int j = 0; j < kNumOperators; j++) - if (GetAvailable(i, j)) - { - m_numAvailAttribs++; - break; - } - return m_numAvailAttribs; -} - -MSG_SearchError msg_SearchValidityTable::ValidateTerms (MSG_SearchTermArray &termList) -{ - MSG_SearchError err = SearchError_Success; - - for (int i = 0; i < termList.GetSize(); i++) - { - MSG_SearchTerm *term = termList.GetAt(i); - XP_ASSERT(term->IsValid()); - if (!GetEnabled(term->m_attribute, term->m_operator) || - !GetAvailable(term->m_attribute, term->m_operator)) - { - if (!GetValidButNotShown(term->m_attribute, term->m_operator)) - err = SearchError_ScopeAgreement; - } - } - - return err; -} - - -// global variable with destructor allows automatic cleanup -msg_SearchValidityManager gValidityMgr; - - -msg_SearchValidityManager::msg_SearchValidityManager () -{ - m_offlineMailTable = NULL; - m_onlineMailTable = NULL; - m_onlineMailFilterTable = NULL; - m_newsTable = NULL; - m_localNewsTable = NULL; - m_newsExTable = NULL; - m_ldapTable = NULL; -} - - -msg_SearchValidityManager::~msg_SearchValidityManager () -{ - if (NULL != m_offlineMailTable) - delete m_offlineMailTable; - if (NULL != m_onlineMailTable) - delete m_onlineMailTable; - if (NULL != m_onlineMailFilterTable) - delete m_onlineMailFilterTable; - if (NULL != m_newsTable) - delete m_newsTable; - if (NULL != m_localNewsTable) - delete m_localNewsTable; - if (NULL != m_newsExTable) - delete m_newsExTable; - if (NULL != m_ldapTable) - delete m_ldapTable; -} - - -//----------------------------------------------------------------------------- -// Bottleneck accesses to the objects so we can allocate and initialize them -// lazily. This way, there's no heap overhead for the validity tables until the -// user actually searches that scope. -//----------------------------------------------------------------------------- - -MSG_SearchError msg_SearchValidityManager::GetTable (int whichTable, msg_SearchValidityTable **ppOutTable) -{ - if (NULL == ppOutTable) - return SearchError_NullPointer; - - MSG_SearchError err = SearchError_Success; - - // hack...currently FEs are setting scope to News even if it should be set to OfflineNewsgroups... - // i'm fixing this by checking if we are in offline mode... - if (NET_IsOffline() && (whichTable == news || whichTable == newsEx)) - whichTable = localNews; - - - switch (whichTable) - { - case offlineMail: - if (!m_offlineMailTable) - err = InitOfflineMailTable (); - *ppOutTable = m_offlineMailTable; - break; - case onlineMail: - if (!m_onlineMailTable) - err = InitOnlineMailTable (); - *ppOutTable = m_onlineMailTable; - break; - case onlineMailFilter: - if (!m_onlineMailFilterTable) - err = InitOnlineMailFilterTable (); - *ppOutTable = m_onlineMailFilterTable; - break; - case news: - if (!m_newsTable) - err = InitNewsTable (); - *ppOutTable = m_newsTable; - break; - case localNews: - if (!m_localNewsTable) - err = InitLocalNewsTable(); - *ppOutTable = m_localNewsTable; - break; - case newsEx: - if (!m_newsExTable) - err = InitNewsExTable (); - *ppOutTable = m_newsExTable; - break; - case Ldap: - if (!m_ldapTable) - err = InitLdapTable (); - *ppOutTable = m_ldapTable; - break; - default: - XP_ASSERT(0); - err = SearchError_NotAMatch; - } - - return err; -} - - -MSG_SearchError msg_SearchValidityManager::NewTable (msg_SearchValidityTable **ppOutTable) -{ - XP_ASSERT (ppOutTable); - *ppOutTable = new msg_SearchValidityTable; - if (NULL == *ppOutTable) - return SearchError_OutOfMemory; - - return SearchError_Success; -} - diff --git a/mozilla/lib/libmsg/subline.cpp b/mozilla/lib/libmsg/subline.cpp deleted file mode 100644 index 285c6b4502e..00000000000 --- a/mozilla/lib/libmsg/subline.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" - -#include "subline.h" - -const uint16 F_ISSUBSCRIBED = 0x0001; - - -msg_SubscribeLine::msg_SubscribeLine(msg_GroupRecord* group, int16 depth, - XP_Bool issubscribed, - int32 numsubgroups) -{ - m_group = group; - m_nummessages = -1; - m_depth = depth; - m_flags = 0; - m_numsubgroups = numsubgroups; - if (issubscribed) m_flags |= F_ISSUBSCRIBED; -} - - -XP_Bool -msg_SubscribeLine::CanExpand() -{ - return m_numsubgroups > 0; -} - - -XP_Bool -msg_SubscribeLine::GetSubscribed() -{ - return (m_flags & F_ISSUBSCRIBED) != 0; -} - - -void -msg_SubscribeLine::SetSubscribed(XP_Bool value) -{ - if (value) m_flags |= F_ISSUBSCRIBED; - else m_flags &= ~F_ISSUBSCRIBED; -} - - - - -msg_SubscribeLineArray::msg_SubscribeLineArray() -{ -} diff --git a/mozilla/lib/libmsg/subline.h b/mozilla/lib/libmsg/subline.h deleted file mode 100644 index 3e8121a2d48..00000000000 --- a/mozilla/lib/libmsg/subline.h +++ /dev/null @@ -1,74 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _SubLine_H_ -#define _SubLine_H_ - -#include "ptrarray.h" - -/* This is a class used only by the MSG_SubscribePane class. */ - -class msg_GroupRecord; - -class msg_SubscribeLine { -public: - msg_SubscribeLine(msg_GroupRecord* group, int16 depth, - XP_Bool issubscribed, int32 numsubgroups); - - - msg_GroupRecord* GetGroup() {return m_group;} - int16 GetDepth() {return m_depth;} - int32 GetNumMessages() {return m_nummessages;} - void SetNumMessages(int32 value) {m_nummessages = value;} - int32 GetNumSubGroups() {return m_numsubgroups;} - void AddNewSubGroup() { m_numsubgroups++; } - - XP_Bool CanExpand(); - - XP_Bool GetSubscribed(); - void SetSubscribed(XP_Bool value); - - -protected: - msg_GroupRecord* m_group; - int32 m_nummessages; // -1 means unknown. - int16 m_depth; - uint16 m_flags; - int32 m_numsubgroups; -}; - - - -class msg_SubscribeLineArray : public XPPtrArray { -public: - msg_SubscribeLineArray(); - - msg_SubscribeLine* operator[](int nIndex) const { - return (msg_SubscribeLine*) XPPtrArray::GetAt(nIndex); - } - msg_SubscribeLine*& operator[](int nIndex) { - return (msg_SubscribeLine*&) XPPtrArray::ElementAt(nIndex); - } -}; - - -#endif /* _SubLine_H_ */ diff --git a/mozilla/lib/libmsg/subpane.cpp b/mozilla/lib/libmsg/subpane.cpp deleted file mode 100644 index 9e816bc0278..00000000000 --- a/mozilla/lib/libmsg/subpane.cpp +++ /dev/null @@ -1,1850 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "errcode.h" - -#include "subpane.h" -#include "hosttbl.h" -#include "msgmast.h" -#include "msgfinfo.h" -#include "xp_hash.h" -#include "newshost.h" -#include "imaphost.h" -#include "xpgetstr.h" -#include "grec.h" -#include "xp_qsort.h" -#include "msgurlq.h" - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_SEARCH_FAILED; - extern int MK_MSG_INCOMPLETE_NEWSGROUP_LIST; - extern int XP_ALERT_OFFLINE_MODE_SELECTED; - extern int MK_NNTP_SERVER_NOT_CONFIGURED; -} - -// we are using the same ChangeSubscribe structure for both -// News and IMAP. We are also keeping these structs in the same hash -struct ChangeSubscribe { - MSG_Host* host; - char* groupname; - XP_Bool subscribe; // Whether we're trying to subscribe or - // unsubscribe to this group. - ChangeSubscribe* next; -}; - -static XP_Bool imap_freehashkeys(XP_HashTable table, const void* key, - void* value, void* closure); - -MSG_SubscribePane* MSG_SubscribePane::CurPane = NULL; - - -MSG_SubscribePane* -MSG_SubscribePane::Create(MWContext* context, MSG_Master* master, - MSG_Host* host) -{ - XP_ASSERT(!CurPane); - if (CurPane) return NULL; - - MSG_Host* defhost = NULL; - - // first try getting the default News (NNTP) host - defhost = MSG_GetDefaultNewsHost(master); - - // if no NNTP host, try getting the default IMAP host - if (!defhost) - { - defhost = MSG_GetDefaultIMAPHost(master); - } - - // no hosts configured - if (defhost == NULL) - { - FE_Alert(context, XP_GetString(MK_NNTP_SERVER_NOT_CONFIGURED)); - #ifdef XP_MAC - /* AFTER the alert, not before! */ - FE_EditPreference(PREF_NewsHost); - #endif - return NULL; - } - - MSG_SubscribePane* result = new MSG_SubscribePane(context, master, host); - if (result && CurPane == NULL) { - // We ran out of memory or something. Abort. - delete result; - result = NULL; - } - return result; -} - - - -static int -HashComp(const void *obj1, const void *obj2) -{ - XP_ASSERT(obj1 && obj2); - ChangeSubscribe* c1 = (ChangeSubscribe*) obj1; - ChangeSubscribe* c2 = (ChangeSubscribe*) obj2; - int delta = XP_STRCMP(c1->groupname, c2->groupname); - if (delta) return delta; - if (c1->host < c2->host) return -1; - if (c1->host == c2->host) return 0; - return 1; -} - -static int -msg_hash_strcmp (const void *a, const void *b) -{ - return XP_STRCMP ((const char *) a, (const char *) b); -} - -static uint32 -HashFunc(const void* obj) -{ - return XP_StringHash(((ChangeSubscribe*) obj)->groupname); -} - -static int sortedptrarray_strcmp (const void* a, const void* b) -{ - return XP_STRCMP (*(char **)a, *(char **)b); -} - - -XP_Bool imap_freehashkeys(XP_HashTable /*table*/, const void* key, - void* /*value*/, void* /*closure*/) -{ - XP_FREE((char*) key); - return TRUE; -} - - -MSG_SubscribePane::MSG_SubscribePane(MWContext* context, MSG_Master* master, - MSG_Host* host) - : MSG_LinedPane(context, master) -{ - m_host = NULL; - XP_ASSERT(master); - if (!master) return; - msg_HostTable *newsHosts = master->GetHostTable(); - - m_subscribeHash = XP_HashTableNew(20, (XP_HashingFunction) HashFunc, (XP_HashCompFunction) HashComp); - if (!m_subscribeHash) return; - - m_imapGroupHash = XP_HashTableNew(20, XP_StringHash, msg_hash_strcmp); - if (!m_imapGroupHash) return; - - m_imapSubscribedList = new XPSortedPtrArray(sortedptrarray_strcmp); - - m_imapTree = msg_IMAPGroupRecord::Create(NULL, NULL, 0, FALSE); - XP_ASSERT(m_imapTree); - if (!m_imapTree) return; - - m_subscribeCommitted = FALSE; - m_expandingIMAPGroup = NULL; - - m_host = host; - if (!m_host) { - if (newsHosts) m_host = newsHosts->GetDefaultHost(TRUE); - } - if (!m_host) - { - m_host = MSG_GetDefaultIMAPHost(master); - } - int numNewsHosts = newsHosts ? newsHosts->getNumHosts() : 0; - if (!m_host && numNewsHosts > 0) { - m_host = newsHosts->getHost(0); - } - m_subscribeList = NULL; - m_endSubscribeList = NULL; - - // Go through the news hosts and add each group to - // the hash table - for (int i=0 ; i<numNewsHosts ; i++) { - MSG_NewsHost* h = newsHosts->getHost(i); - XP_ASSERT(h); - if (!h) continue; - MSG_FolderInfo* hostinfo = h->GetHostInfo(); - XP_ASSERT(hostinfo); - if (!hostinfo) continue; - int num = hostinfo->GetNumSubFolders(); - for (int j=0 ; j<num ; j++) { - MSG_FolderInfoNews* newsinfo = - (MSG_FolderInfoNews*) hostinfo->GetSubFolder(j); - XP_ASSERT(newsinfo->IsNews()); - if (!newsinfo->IsNews()) continue; - if (!newsinfo->IsSubscribed()) continue; - const char* groupname = newsinfo->GetNewsgroupName(); - h->NoticeNewGroup(groupname); - ChangeSubscribe* tmp = new ChangeSubscribe; - if (!tmp) break; - if (m_endSubscribeList) { - m_endSubscribeList->next = tmp; - } else { - m_subscribeList = tmp; - } - m_endSubscribeList = tmp; - tmp->host = h; - tmp->groupname = new char [XP_STRLEN(groupname) + 1]; - if (!tmp->groupname) { - m_host = NULL; - return; - } - XP_STRCPY(tmp->groupname, groupname); - tmp->next = NULL; - tmp->subscribe = TRUE; - XP_Puthash(m_subscribeHash, tmp, tmp); - } - } - - // We probably don't have to go through the IMAP hosts - // and add each group to the hash table, since they will - // be added on the fly - - if (m_host) { - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - if (newsHost) - newsHost->Inhale(); - SetMode(MSG_SubscribeAll, TRUE); - } - CurPane = this; -} - - -MSG_SubscribePane::~MSG_SubscribePane() -{ - int32 i; - - //if (!m_subscribeCommitted) - // CommitSubscriptions(); - - // Clean up the list of changed subscriptions. - // We should do this here because we don't know - // if the IMAP commits will succeed or not, - // until now. - ChangeSubscribe* tmp = m_subscribeList; - while (tmp) { - ChangeSubscribe* next = tmp->next; - delete [] tmp->groupname; - tmp->groupname = NULL; - tmp->next = NULL; - delete tmp; - tmp = next; - } - - // Force all the newsrc files to be updated now. After all, - // subscribing is a major operation we don't want to lose. - msg_HostTable* hosts = GetMaster()->GetHostTable(); - for (i=0 ; i < (hosts ? hosts->getNumHosts() : 0) ; i++) { - MSG_NewsHost* h = hosts->getHost(i); - XP_ASSERT(h); - if (!h) continue; - h->WriteIfDirty(); - } - - if (m_host && m_host->IsNews()) - { - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - if (newsHost) - newsHost->Exhale(); - } - - if (m_subscribeHash) - XP_HashTableDestroy(m_subscribeHash); - - ClearAndFreeIMAPGroupList(); - if (m_imapGroupHash) - XP_HashTableDestroy(m_imapGroupHash); - - ClearAndFreeIMAPSubscribedList(); - delete m_imapSubscribedList; - - for (i=0 ; i<m_groupView.GetSize() ; i++) { - delete m_groupView[i]; - m_groupView[i] = NULL; - } - - XP_ASSERT(CurPane == this); - if (CurPane == this) CurPane = NULL; - - delete m_imapTree; - - MSG_RefreshFoldersForUpdatedIMAPHosts(GetContext()); -} - - -MSG_PaneType -MSG_SubscribePane::GetPaneType() { - return MSG_SUBSCRIBEPANE; -} - -void -MSG_SubscribePane::NotifyPrefsChange(NotifyCode) -{ - // ###tw Write me! -} - - -void -MSG_SubscribePane::ToggleExpansion(MSG_ViewIndex line, int32* numchanged) -{ - DoToggleExpansion(line, numchanged); - UpdateCounts(); -} - -void -MSG_SubscribePane::DoToggleExpansion(MSG_ViewIndex line, int32* numchanged) -{ - if (numchanged) *numchanged = 0; - XP_ASSERT(line != MSG_VIEWINDEXNONE && line < m_groupView.GetSize()); - if (line == MSG_VIEWINDEXNONE || line >= m_groupView.GetSize()) return; - XP_ASSERT(m_mode == MSG_SubscribeAll); - if (m_mode != MSG_SubscribeAll) return; - msg_SubscribeLine* info = m_groupView[line]; - int depth = info->GetDepth(); - msg_GroupRecord* group = info->GetGroup(); - XP_ASSERT(group); - if (!group) return; - if (line < m_groupView.GetSize() - 1 && - (m_groupView[line+1]->GetDepth() > depth)) { - // OK, we are already expanded. So, collapse things, which means - // nuke all lines after the given one that have a depth bigger than - // the given line. - XP_ASSERT(group->IsExpanded()); - int32 start = line + 1; - int32 end; - for (end=start ; end<m_groupView.GetSize() ; end++) { - if (m_groupView[end]->GetDepth() <= depth) break; - } - StartingUpdate(MSG_NotifyInsertOrDelete, start, - (end - start)); - for (int32 i=start ; i<end ; i++) { - delete m_groupView[i]; - m_groupView[i] = NULL; - } - m_groupView.RemoveAt(start, end - start); - if (numchanged) *numchanged = - (end - start); - EndingUpdate(MSG_NotifyInsertOrDelete, start, - (end - start)); - group->SetIsExpanded(FALSE); - } - else - { - // We are not expanded, so expand, if possible. - if (info->CanExpand()) { - XP_ASSERT(!group->IsExpanded()); - msg_SubscribeLineArray kids; - GetKidsArray(group, &kids, info->GetDepth() + 1); - XP_ASSERT(kids.GetSize() > 0); // If not, why did we think we could - // expand? - StartingUpdate(MSG_NotifyInsertOrDelete, line + 1, kids.GetSize()); - m_groupView.InsertAt(line + 1, &kids); - EndingUpdate(MSG_NotifyInsertOrDelete, line + 1, kids.GetSize()); - if (numchanged) *numchanged = kids.GetSize(); - group->SetIsExpanded(TRUE); - } - - if (m_host && m_host->IsIMAP()) - { - // expanding an imap folder, search for new children - msg_IMAPGroupRecord *imapGroup = group->GetIMAPGroupRecord(); - if (imapGroup && !imapGroup->GetAllGrandChildrenDiscovered()) - { - m_expandingIMAPGroup = imapGroup; - MSG_IMAPHost *imapHost = m_host->GetIMAPHost(); - if (imapHost) - { - char *groupname = imapGroup->GetFullName(); - if (groupname) - { - char * url = CreateImapLevelChildDiscoveryUrl(imapHost->GetHostName(), groupname, imapGroup->GetHierarchySeparator(), 2); - if (url) - { - MSG_UrlQueue::AddUrlToPane(url, NULL, this); - XP_FREE(url); - } - delete groupname; - } - } - } - } - } - // Tell the FE to redraw the expand/collapse widget of the parent group - StartingUpdate(MSG_NotifyChanged, line, 1); - EndingUpdate(MSG_NotifyChanged, line, 1); -} - - -void -MSG_SubscribePane::IMAPChildDiscoverySuccessful() -{ - if (m_expandingIMAPGroup) - { - m_expandingIMAPGroup->SetAllGrandChildrenDiscovered(TRUE); - m_expandingIMAPGroup = NULL; - } -} - - -int32 -MSG_SubscribePane::ExpansionDelta(MSG_ViewIndex line) -{ - int32 result = 0; - XP_ASSERT(line != MSG_VIEWINDEXNONE && line < m_groupView.GetSize()); - if (line == MSG_VIEWINDEXNONE || line >= m_groupView.GetSize()) return 0; - XP_ASSERT(m_mode == MSG_SubscribeAll); - if (m_mode != MSG_SubscribeAll) return 0; - msg_SubscribeLine* info = m_groupView[line]; - int depth = info->GetDepth(); - if (line < m_groupView.GetSize() - 1 && - (m_groupView[line+1]->GetDepth() > depth)) { - // OK, we are already expanded. So, count how many lines after the - // given one that have a depth bigger than the given line; that's how - // many lines we would nuke. - int32 start = line + 1; - - int32 end; - for (end=start ; end<m_groupView.GetSize() ; end++) { - if (m_groupView[end]->GetDepth() <= depth) break; - } - result = - (end - start); - } else { - // We are not expanded, so count how many to expand, if any. - if (info->CanExpand()) { - msg_GroupRecord* group = info->GetGroup(); - XP_ASSERT(group); - if (group) { - result = GetKidsArray(group, NULL, info->GetDepth() + 1); - } - } - } - return result; -} - -int32 -MSG_SubscribePane::GetNumLines() -{ - return m_groupView.GetSize(); -} - - - -msg_GroupRecord* -MSG_SubscribePane::FindRealDescendent(msg_GroupRecord* group) -{ - while (group && group->GetChildren()) { - group = group->GetChildren(); - } - return group; -} - - - - -int32 -MSG_SubscribePane::GetKidsArray(msg_GroupRecord* group, - msg_SubscribeLineArray* kids, - int depth) -{ - msg_GroupRecord* child; - int32 result = 0; - int32 initsize = 0; - if (kids) initsize = kids->GetSize(); - for (child = group->GetChildren(); child; child = child->GetSibling()) { - msg_SubscribeLine* info = NULL; - int32 numkids = child->GetNumKids(); - if (child->IsGroup() && (child->IsIMAPGroupRecord() ? - (numkids == 0) : TRUE)) - { - if (kids) { - info = new msg_SubscribeLine(child, depth, - WasSubscribed(child), 0); - kids->Add(info); - } - result++; - } - if (numkids > 0 /*&& !child->IsCategoryContainer() */ ) { - if ((numkids == 1) && !group->IsIMAPGroupRecord()) { - // If there's only one real group inside, then just go grab - // that one group, rather than wasting space by making a - // container for it. - msg_GroupRecord* tmp = FindRealDescendent(child); - if (kids) { - info = new - msg_SubscribeLine(tmp, depth, - WasSubscribed(tmp), 0); - kids->Add(info); - } - result++; - } else { - if (kids) { - info = - new msg_SubscribeLine(child, depth, - WasSubscribed(child), - child->GetNumKids()); - kids->Add(info); - } - result++; - if (child->IsExpanded()) { - result += GetKidsArray(child, kids, depth + 1); - } - } - - } -#ifdef NOTDEF - // I wish the below worked, but right now it turns out we can have - // some empty container groups. Sigh. ### - XP_ASSERT(kids == NULL || info != NULL); // We had to have added - // something or another... -#endif - } - XP_ASSERT(depth == 0 || result > 0); // We should never try to get any - // subnewsgroups unless there actually - // are some. - XP_ASSERT(kids == NULL || result + initsize == kids->GetSize()); - return result; -} - - -MsgERR -MSG_SubscribePane::ToggleSubscribed(MSG_ViewIndex* indices, int32 numIndices) -{ - if (!m_host) return eUNKNOWN; - for (int32 i=0 ; i<numIndices ; i++) { - MSG_ViewIndex line = indices[i]; - XP_ASSERT(line != MSG_VIEWINDEXNONE && line < m_groupView.GetSize()); - if (line == MSG_VIEWINDEXNONE || line >= m_groupView.GetSize()) { - continue; - } - msg_SubscribeLine* info = m_groupView[line]; - msg_GroupRecord* group = info->GetGroup(); - char *fullname = group->GetFullName(); - if (!fullname) - { - return eOUT_OF_MEMORY; - } - ChangeSubscribe key; - key.groupname = fullname; - key.host = m_host; - ChangeSubscribe* tmp = (ChangeSubscribe*) - XP_Gethash(m_subscribeHash, &key, NULL); - if (!tmp) { - tmp = new ChangeSubscribe; - if (!tmp) return eOUT_OF_MEMORY; - if (m_endSubscribeList) { - m_endSubscribeList->next = tmp; - } else { - m_subscribeList = tmp; - } - m_endSubscribeList = tmp; - tmp->host = m_host; - tmp->groupname = fullname; - tmp->next = NULL; - XP_Puthash(m_subscribeHash, tmp, tmp); - } else { - XP_ASSERT(XP_STRCMP(tmp->groupname, fullname) == 0); - delete [] fullname; - } - XP_ASSERT(tmp->host == m_host); - tmp->subscribe = !info->GetSubscribed(); - StartingUpdate(MSG_NotifyChanged, line, 1); - info->SetSubscribed(tmp->subscribe); - EndingUpdate(MSG_NotifyChanged, line, 1); - } - return eSUCCESS; -} - - -MsgERR -MSG_SubscribePane::SetSubscribed(MSG_ViewIndex* indices, int32 numIndices, XP_Bool subscribed) -{ - if (!m_host) return eUNKNOWN; - for (int32 i=0 ; i<numIndices ; i++) { - MSG_ViewIndex line = indices[i]; - XP_ASSERT(line != MSG_VIEWINDEXNONE && line < m_groupView.GetSize()); - if (line == MSG_VIEWINDEXNONE || line >= m_groupView.GetSize()) { - continue; - } - msg_SubscribeLine* info = m_groupView[line]; - if (info->GetSubscribed() != subscribed) - { - msg_GroupRecord* group = info->GetGroup(); - char *fullname = group->GetFullName(); - if (!fullname) - { - return eOUT_OF_MEMORY; - } - ChangeSubscribe key; - key.groupname = fullname; - key.host = m_host; - ChangeSubscribe* tmp = (ChangeSubscribe*) - XP_Gethash(m_subscribeHash, &key, NULL); - if (!tmp) { - tmp = new ChangeSubscribe; - if (!tmp) return eOUT_OF_MEMORY; - if (m_endSubscribeList) { - m_endSubscribeList->next = tmp; - } else { - m_subscribeList = tmp; - } - m_endSubscribeList = tmp; - tmp->host = m_host; - tmp->groupname = fullname; - tmp->next = NULL; - XP_Puthash(m_subscribeHash, tmp, tmp); - } else { - XP_ASSERT(XP_STRCMP(tmp->groupname, fullname) == 0); - delete [] fullname; - } - XP_ASSERT(tmp->host == m_host); - tmp->subscribe = subscribed; - StartingUpdate(MSG_NotifyChanged, line, 1); - info->SetSubscribed(tmp->subscribe); - EndingUpdate(MSG_NotifyChanged, line, 1); - } - } - return eSUCCESS; -} - - -MsgERR -MSG_SubscribePane::ExpandAll(MSG_ViewIndex* indices, int32 numIndices) -{ - XP_ASSERT(m_host->IsNews()); - if (!m_host->IsNews()) - return 0; - - // since the FE might have given us a pointer to their real selection (the - // WinFE does this), make a copy of the array so the array doesn't change - // out from under us when we call EndingUpdate - MSG_ViewIndex *tmpIndices = new MSG_ViewIndex[numIndices]; - if (NULL == tmpIndices) { - return eOUT_OF_MEMORY; - } - XP_MEMCPY(tmpIndices, indices, sizeof(MSG_ViewIndex) * numIndices); - - // since the FE could have constructed the list of indices in any order - // (e.g. order of discontiguous selection), we have to sort the indices so - // that we can expand the last one first (so we won't screw up any of the - // other indices. - if (numIndices > 1) { - XP_QSORT(tmpIndices, numIndices, sizeof(MSG_ViewIndex), - MSG_LinedPane::CompareViewIndices); - } - for (int32 i=numIndices-1 ; i>=0 ; i--) { - int32 n = ExpansionDelta(tmpIndices[i]); - if (n > 0) { - int32 m; - DoToggleExpansion(tmpIndices[i], &m); - XP_ASSERT(m == n); - for (MSG_ViewIndex l = tmpIndices[i] + m ; l>tmpIndices[i] ; l--) { - ExpandAll(&l, 1); - } - } - } - delete [] tmpIndices; - return 0; -} - - -MsgERR -MSG_SubscribePane::CollapseAll() -{ - for (int32 i=m_groupView.GetSize() - 2 ; i>=0 ; i--) { - if (m_groupView[i]->GetDepth() < m_groupView[i+1]->GetDepth()) { - DoToggleExpansion(MSG_ViewIndex(i), NULL); - } - } - return 0; -} - - -MsgERR -MSG_SubscribePane::ClearNew() -{ - if (!m_host) return eUNKNOWN; - if (!m_host->IsNews()) return eUNKNOWN; // only works for news - XP_ASSERT(m_mode == MSG_SubscribeNew); - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - if (newsHost) - newsHost->ClearNew(); - else - return eUNKNOWN; - SetMode(MSG_SubscribeNew, TRUE); - return eSUCCESS; -} - - - -void -MSG_SubscribePane::CheckForNewDone(URL_Struct* url_struct, int status, - MWContext* context) -{ - if (!m_host) return; - if (!m_host->IsNews()) return; - MSG_NewsHost *newsHost = (MSG_NewsHost *)m_host; - MSG_Pane::CheckForNewDone(url_struct, status, context); - if (m_mode == MSG_SubscribeAll) { - if (status >= 0) { - newsHost->ClearNew(); - newsHost->SaveHostInfo(); - } else { - newsHost->Inhale(TRUE); - } - } - SetMode(m_mode, TRUE, FALSE); - if (m_callbacks.FetchCompleted) { - (*m_callbacks.FetchCompleted)(this, m_callbackclosure); - } -} - -void -MSG_SubscribePane::ReportIMAPFolderDiscoveryFinished() -{ - if (m_callbacks.FetchCompleted) { - (*m_callbacks.FetchCompleted)(this, m_callbackclosure); - } -} - - -void MSG_SubscribePane::ClearAndFreeIMAPSubscribedList() -{ - char *subscribedName = NULL; - for (int j = 0; j < m_imapSubscribedList->GetSize(); j++) - { - subscribedName = (char *)(m_imapSubscribedList->GetAt(j)); - XP_ASSERT (subscribedName); - delete subscribedName; - m_imapSubscribedList->RemoveAt(j); - } -} - -void MSG_SubscribePane::ClearAndFreeIMAPGroupList() -{ - delete m_imapTree; // deleting the root will delete all its children - XP_MapRemhash(m_imapGroupHash, imap_freehashkeys, NULL); // free the keys in the hash table - XP_Clrhash(m_imapGroupHash); // clear all the entries from the hash table - m_imapTree = msg_IMAPGroupRecord::Create(NULL, NULL, 0, FALSE); // recreate a new root -} - - -msg_IMAPGroupRecord *MSG_SubscribePane::FindParentRecordOfIMAPGroup(const char *folderName, char delimiter) -{ - // look for this group's parent - char *parentName = XP_STRDUP(folderName); - if (!parentName) - return 0; - char *lastSlash = XP_STRRCHR(parentName, delimiter); - msg_IMAPGroupRecord *parentRecord = NULL; - if (lastSlash) - { - *lastSlash = 0; - parentRecord = (msg_IMAPGroupRecord *)(XP_Gethash(m_imapGroupHash, parentName, NULL)); - } - XP_FREEIF(parentName); - return parentRecord; -} - - -// returns TRUE if we explicitly need to list this folder's children -// -- used only for top-level folders -// (NthLevelDiscovery is used for all other folders - easier and faster) -// -// filledInGroup is TRUE if we (the client) made up this group to act as a placeholder -// as a parent of a child which we have discovered first -XP_Bool MSG_SubscribePane::AddIMAPGroupToList(const char *folderName, char delimiter, XP_Bool isSubscribed, - uint32 folder_flags, XP_Bool filledInGroup /* = FALSE */) -{ - XP_Bool needChildrenListed = FALSE; - // storage for ourFolderName is owned by the hash table m_imapGroupHash, as the key - char *ourFolderName = XP_STRDUP(folderName); - if (!ourFolderName) - return 0; - msg_IMAPGroupRecord *parentRecord = FindParentRecordOfIMAPGroup(ourFolderName, delimiter); - if (!parentRecord) - { - char *maybeParentName = XP_STRDUP(ourFolderName); - if (maybeParentName) - { - char *where = XP_STRRCHR(maybeParentName, delimiter); - if (where) - *where = 0; - if (where && *maybeParentName) - { - AddIMAPGroupToList(maybeParentName, delimiter, FALSE, 0, TRUE); - parentRecord = FindParentRecordOfIMAPGroup(ourFolderName, delimiter); - } - - if (!parentRecord) - { - parentRecord = m_imapTree; - needChildrenListed = TRUE; - } - XP_FREE(maybeParentName); - } - } - - if (isSubscribed) - { - // add it to the subscribe hash list - it should disallow duplicates automatically - char *subscribeFolderName = new char[XP_STRLEN(ourFolderName) + 1]; - if (subscribeFolderName) - XP_STRCPY(subscribeFolderName, ourFolderName); - if (subscribeFolderName) - m_imapSubscribedList->Add(subscribeFolderName); - } - - // should return TRUE if we've ever put this into the list - isSubscribed = (m_imapSubscribedList->FindIndex(0, ourFolderName) != -1); - - msg_IMAPGroupRecord *lookedUpRecord = NULL; - if (!(lookedUpRecord = (msg_IMAPGroupRecord *)(XP_Gethash(m_imapGroupHash, ourFolderName, NULL)))) - { - msg_IMAPGroupRecord *record = msg_IMAPGroupRecord::Create(parentRecord, ourFolderName, delimiter, filledInGroup); - if (record) - { - // set flags for the record - record->SetFlags(folder_flags); - - // add to the list of known IMAP groups - XP_Puthash(m_imapGroupHash, ourFolderName, record); - - // there's a parent, so add as a child if it is visible - // (or if the parent is the root) - msg_SubscribeLine *parentLine = NULL; - MSG_ViewIndex parentLineIndex = FindGroupViewIndex(parentRecord); - if (parentLineIndex != MSG_VIEWINDEXNONE) - parentLine = m_groupView[parentLineIndex]; - - if (parentLine || (parentRecord == m_imapTree)) - { - if (parentLine) - parentLine->AddNewSubGroup(); - if ((parentRecord == m_imapTree) || - parentRecord->IsExpanded()) - { - msg_IMAPGroupRecord *nextRecord = (msg_IMAPGroupRecord *)(record->GetSiblingOrAncestorSibling()); - MSG_ViewIndex whereToInsert = MSG_VIEWINDEXNONE; - if (!nextRecord) - { - whereToInsert = m_groupView.GetSize(); - } - else - { - whereToInsert = FindGroupViewIndex(nextRecord); - } - - int16 parentDepth = parentRecord->GetDepth(); - if (parentRecord == m_imapTree) - parentDepth = -1; - - - XP_Bool latestSubscribed = isSubscribed; - - // see if we had already updated the state - // but it is uncommitted - ChangeSubscribe key; - key.groupname = ourFolderName; - key.host = m_host; - ChangeSubscribe* tmp = (ChangeSubscribe*) - XP_Gethash(m_subscribeHash, &key, NULL); - if (tmp) { - // If it was in the ChangeSubscribe list, - // then set the subscribe bit to what we had previously - // set it to. - latestSubscribed = tmp->subscribe; - } - - // create the line - msg_SubscribeLine *childLine = new msg_SubscribeLine(record, - parentDepth+1, latestSubscribed, 0); - - StartingUpdate(MSG_NotifyInsertOrDelete, whereToInsert, 1); - m_groupView.InsertAt(whereToInsert, childLine); - EndingUpdate(MSG_NotifyInsertOrDelete, whereToInsert, 1); - - } - else - { - // make sure that there's a twisty - if (parentLineIndex != MSG_VIEWINDEXNONE) - { - StartingUpdate(MSG_NotifyChanged, parentLineIndex, 1); - EndingUpdate(MSG_NotifyChanged, parentLineIndex, 1); - } - } - } - else - { - // don't need to do anything, right? The parent isn't visible in - // the pane, and it's not a top-level folder (parent is root), - // so therefore the child can't be visible - } - return needChildrenListed; - } - else - return FALSE; - } - else - { - if (lookedUpRecord->GetIsGroupFilledIn()) - { - // the record already existed in the hash table. - // we should update its state: - lookedUpRecord->SetIsGroupFilledIn(FALSE); - lookedUpRecord->SetHierarchySeparator(delimiter); - lookedUpRecord->SetFlags(folder_flags); - - // update the line - msg_SubscribeLine *thisLine = NULL; - MSG_ViewIndex thisLineIndex = FindGroupViewIndex(lookedUpRecord); - if (thisLineIndex != MSG_VIEWINDEXNONE) - thisLine = m_groupView[thisLineIndex]; - - if (thisLine) - { - if (!thisLine->GetSubscribed()) - thisLine->SetSubscribed(isSubscribed); - - if (thisLineIndex != MSG_VIEWINDEXNONE) - { - StartingUpdate(MSG_NotifyChanged, thisLineIndex, 1); - EndingUpdate(MSG_NotifyChanged, thisLineIndex, 1); - } - } - } - - FREEIF(ourFolderName); - // We might need its children - return FALSE; - } -} - - -MsgERR -MSG_SubscribePane::FetchGroupList() -{ - if (!m_host) return eUNKNOWN; - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - if (newsHost) - { - StartingUpdate(MSG_NotifyAll, 0, 0); - m_groupView.RemoveAll(); - EndingUpdate(MSG_NotifyAll, 0, 0); - - XP_ASSERT(newsHost); - - newsHost->Exhale(); - newsHost->EmptyInhale(); - - newsHost->setLastUpdate(0); // Causes us to reload everything. - - return CheckForNew(newsHost); - } - else if (m_host->IsIMAP()) - { - // For IMAP, this means to clear our list and perform a LIST of - // the top-level folders again. - StartingUpdate(MSG_NotifyAll, 0, 0); - // do we need to delete the storage? - m_groupView.RemoveAll(); - EndingUpdate(MSG_NotifyAll, 0, 0); - - ClearAndFreeIMAPGroupList(); - ClearAndFreeIMAPSubscribedList(); - - MSG_IMAPHost *imapHost = m_host->GetIMAPHost(); - if (!imapHost) - return eUNKNOWN; - char * url = CreateImapAllAndSubscribedMailboxDiscoveryUrl(imapHost->GetHostName()); - if (url) - { - MSG_UrlQueue::AddUrlToPane(url, NULL, this); - XP_FREE(url); - } - - return eSUCCESS; - } - else - { - // not a news or IMAP host - XP_ASSERT(0); - return eUNKNOWN; - } -} - -XP_Bool -MSG_SubscribePane::AddGroupsAsNew() -{ - return (m_mode != MSG_SubscribeAll); -} - - - -MsgERR -MSG_SubscribePane::DoCommand(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numIndices) -{ - MsgERR status = 0; - switch (command) { - case MSG_ToggleSubscribed: - status = ToggleSubscribed(indices, numIndices); - break; - case MSG_SetSubscribed: - status = SetSubscribed(indices, numIndices, TRUE); - break; - case MSG_ClearSubscribed: - status = SetSubscribed(indices, numIndices, FALSE); - break; - case MSG_FetchGroupList: - status = FetchGroupList(); - break; - case MSG_ExpandAll: - status = ExpandAll(indices, numIndices); - UpdateCounts(); - break; - case MSG_CollapseAll: - status = CollapseAll(); - UpdateCounts(); - break; - case MSG_ClearNew: - status = ClearNew(); - UpdateCounts(); - break; - case MSG_CheckForNew: - if (m_host && m_host->IsNews()) - { - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - status = newsHost ? CheckForNew(newsHost) : eUNKNOWN; - } - break; - case MSG_UpdateMessageCount: - UpdateCounts(); - break; - default: - status = MSG_LinedPane::DoCommand(command, indices, numIndices); - break; - } - if (status == MK_OFFLINE) - { - FE_Alert(GetContext(), XP_GetString(XP_ALERT_OFFLINE_MODE_SELECTED)); - status = 0; - } - - return status; -} - - -MsgERR -MSG_SubscribePane::GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, - int32 numindices, - XP_Bool *selectable_pP, - MSG_COMMAND_CHECK_STATE *selected_pP, - const char **display_stringP, - XP_Bool *plural_pP) -{ - // ###tw This never returns a display_string, right now. If someone - // actually needs it, I'll be glad to add it; but I suspect all the FE's - // are going to get these strings their own way, since these are all - // dialog box buttons and not menu items. - - - const char *display_string = 0; - XP_Bool plural_p = FALSE; - XP_Bool selectable_p = TRUE; - XP_Bool selected_p = FALSE; - XP_Bool selected_used_p = FALSE; - int32 i; - - switch (command) { - case MSG_ToggleSubscribed: - case MSG_SetSubscribed: - case MSG_ClearSubscribed: - if (m_host && m_host->IsIMAP()) - selectable_p = TRUE; - else - { - for (i=0 ; i<numindices ; i++) - { - if (!m_groupView[i]->CanExpand()) - { - selectable_p = TRUE; - break; - } - } - } - break; - case MSG_FetchGroupList: - selectable_p = (m_mode == MSG_SubscribeAll); - break; - case MSG_ExpandAll: - if (m_host && m_host->IsIMAP()) - { - selectable_p = FALSE; - break; - } - case MSG_CollapseAll: - if (m_host) - { - if (m_host->IsNews()) - { - // only allow expand all for News - for (i=0 ; i<numindices ; i++) { - if (m_groupView[i]->CanExpand()) { - selectable_p = TRUE; - break; - } - } - } - else - selectable_p = TRUE; - } - break; - case MSG_ClearNew: - case MSG_CheckForNew: - selectable_p = (m_host && m_host->IsNews() && (m_mode == MSG_SubscribeNew)); - break; - default: - return MSG_Pane::GetCommandStatus(command, indices, numindices, - selectable_pP, selected_pP, - display_stringP, plural_pP); - } - - if (selectable_pP) *selectable_pP = selectable_p; - if (selected_pP) { - if (selected_used_p) { - if (selected_p) { - *selected_pP = MSG_Checked; - } else { - *selected_pP = MSG_Unchecked; - } - } else { - *selected_pP = MSG_NotUsed; - } - } - if (display_stringP) *display_stringP = display_string; - if (plural_pP) *plural_pP = plural_p; - - return 0; -} - - -int -MSG_SubscribePane::SetCallbacks(MSG_SubscribeCallbacks* callbacks, - void* closure) -{ - m_callbacks = *callbacks; - m_callbackclosure = closure; - return SetMode(m_mode, TRUE); -} - - -int -MSG_SubscribePane::Cancel() -{ - if (m_master->GetUpgradingToIMAPSubscription()) - { - m_master->SetUpgradingToIMAPSubscription(FALSE); - } - - ChangeSubscribe* tmp = m_subscribeList; - while (tmp) { - ChangeSubscribe* next = tmp->next; - delete [] tmp->groupname; - tmp->groupname = NULL; - tmp->next = NULL; - delete tmp; - tmp = next; - } - m_subscribeList = NULL; - XP_Clrhash(m_subscribeHash); - return 0; -} - - -MSG_Host* -MSG_SubscribePane::GetHost() -{ - return m_host; -} - - -int -MSG_SubscribePane::SetHost(MSG_Host* host) -{ - int status = 0; - if (host != m_host) { - if (m_host) { - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - if (newsHost) - status = newsHost->Exhale(); - if (status < 0) return status; - } - m_host = host; - if (m_host) { - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - if (newsHost) - status = newsHost->Inhale(); - if (status < 0) return status; - } - if (m_host && m_host->IsNews()) - { - return SetMode(m_mode, TRUE); - } - else - { - // IMAP only allows subscribe, not search or new - return SetMode(MSG_SubscribeAll, TRUE); - } - } - return 0; -} - - -MSG_SubscribeMode -MSG_SubscribePane::GetMode() -{ - return m_mode; -} - - -static int -CompareAddTimes(const void* e1, const void* e2) -{ - msg_GroupRecord* g1 = (*((msg_SubscribeLine**) e1))->GetGroup(); - msg_GroupRecord* g2 = (*((msg_SubscribeLine**) e2))->GetGroup(); - int delta = int(int32(g2->GetAddTime()) - int32(g1->GetAddTime())); - if (delta) return delta; - - XP_ASSERT(e1 != e2); - if (e1 == e2) return 0; - - // Oh, boy. These two newsgroups seemed to have been added at the same - // time. We should display them in alphabetical order. But we don't - // want to just grab their fullnames, because that's pretty expensive and - // qsort compare routines should be very fast. So, we painfully compare - // their names, step by step. - // First, we find a common ancestor. - - int d1 = g1->GetDepth(); - int d2 = g2->GetDepth(); - - msg_GroupRecord* origg1 = g1; - - while (d1 > d2) { - g1 = g1->GetParent(); - d1--; - } - while (d2 > d1) { - g2 = g2->GetParent(); - d2--; - } - if (g1 == g2) { - // This can happen only if the initial depths weren't the same, and - // one group is in fact an ancestor of the other. In that case, - // the ancestor comes first. - if (g1 == origg1) return -1; - else return 1; - } - while (g1->GetParent() != g2->GetParent()) { - g1 = g1->GetParent(); - g2 = g2->GetParent(); - } - return XP_STRCMP(g1->GetPartName(), g2->GetPartName()); -} - - -int -MSG_SubscribePane::SetMode(MSG_SubscribeMode mode, XP_Bool force, - XP_Bool autofetch) -{ - time_t first; - if (!force && mode == m_mode) return 0; - InterruptContext(FALSE); - StartingUpdate(MSG_NotifyAll, 0, 0); - for (int32 i=0 ; i<m_groupView.GetSize() ; i++) { - delete m_groupView[i]; - m_groupView[i] = NULL; - } - m_groupView.RemoveAll(); - - MSG_NewsHost *newsHost = m_host ? m_host->GetNewsHost() : 0; - int32 lasttime = newsHost ? newsHost->getLastUpdate() : 0; - if (m_host) { - m_mode = mode; - switch(m_mode) { - case MSG_SubscribeAll: - if ((lasttime > 0) && newsHost) { - GetKidsArray(newsHost->GetGroupTree(), &m_groupView, 0); - } - break; - case MSG_SubscribeSearch: - XP_ASSERT(newsHost); - if (newsHost) - FindAll(m_lastSearch); - break; - case MSG_SubscribeNew: - XP_ASSERT(newsHost); - if (newsHost) - { - first = newsHost->GetFirstNewDate(); - msg_GroupRecord* child; - for (child = newsHost->GetGroupTree()->GetChildren(); - child; - child = child->GetNextAlphabeticNoCategories()) { - if (child->IsGroup() && child->GetAddTime() >= first) { - msg_SubscribeLine* info = - new msg_SubscribeLine(child, 0, WasSubscribed(child), - 0); - if (info) m_groupView.Add(info); - } - } - m_groupView.QuickSort(CompareAddTimes); - } - break; - default: - XP_ASSERT(0); - break; - } - } - EndingUpdate(MSG_NotifyAll, 0, 0); - UpdateCounts(); - if (autofetch && m_host && lasttime == 0) { - if (m_mode == MSG_SubscribeAll) { - if (m_callbacks.DoFetchGroups) { - (*m_callbacks.DoFetchGroups)(this, m_callbackclosure); - } - } else { - FE_Alert(GetContext(), - XP_GetString(MK_MSG_INCOMPLETE_NEWSGROUP_LIST)); - } - } - return 0; -} - - -MSG_ViewIndex MSG_SubscribePane::FindGroupViewIndex(msg_GroupRecord* group) -{ - if (!m_host) return MSG_VIEWINDEXNONE; - XP_ASSERT(group); - if (!group) return MSG_VIEWINDEXNONE; - - MSG_ViewIndex result; - for (result = 0 ; result < m_groupView.GetSize() ; result++) { - if (m_groupView[result]->GetGroup() == group) { - return result; - } - } - return MSG_VIEWINDEXNONE; -} - - -// only NNTP -MSG_ViewIndex -MSG_SubscribePane::FindGroupExpandIfNecessary(msg_GroupRecord* group) -{ - if (!m_host) return MSG_VIEWINDEXNONE; - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - XP_ASSERT(newsHost); - if (!newsHost) return MSG_VIEWINDEXNONE; - XP_ASSERT(group && group != newsHost->GetGroupTree()); - if (!group || group == newsHost->GetGroupTree()) return MSG_VIEWINDEXNONE; - msg_GroupRecord* parent = group->GetParent(); - if (!group->IsGroup() && group->GetNumKids() == 1) { - // This group has exactly one group inside of it, and that will be - // represented by one line. So we need to be searching for that line. - // But if the search fails, then we need to expand the original parent. - group = FindRealDescendent(group); - } - - MSG_ViewIndex result; - for (result = 0 ; result < m_groupView.GetSize() ; result++) { - if (m_groupView[result]->GetGroup() == group) { - return result; - } - } - // Hmm. The group must be missing because an ancestor is closed. - // Find that ancestor and expand it. - result = FindGroupExpandIfNecessary(parent); - XP_ASSERT(result != MSG_VIEWINDEXNONE); - if (result == MSG_VIEWINDEXNONE) return result; - - if (ExpansionDelta(result) > 0) { - DoToggleExpansion(result, NULL); - } else if (result < m_groupView.GetSize() - 1 && - m_groupView[result+1]->GetGroup() == parent) { - if (ExpansionDelta(result + 1) > 0) { - DoToggleExpansion(result + 1, NULL); - } - } - for (; result < m_groupView.GetSize() ; result++) { - if (m_groupView[result]->GetGroup() == group) { - return result; - } - } - return MSG_VIEWINDEXNONE; -} - - -// only NNTP -MSG_ViewIndex -MSG_SubscribePane::FindFirst(const char* str) -{ - XP_ASSERT(str); - if (!str || !*str) return MSG_VIEWINDEXNONE; - XP_ASSERT(m_mode == MSG_SubscribeAll); - if (m_mode != MSG_SubscribeAll) return MSG_VIEWINDEXNONE; - if (!m_host) return MSG_VIEWINDEXNONE; - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - XP_ASSERT(newsHost); - if (!newsHost || newsHost->getLastUpdate() == 0) return MSG_VIEWINDEXNONE; - msg_GroupRecord* parent = newsHost->GetGroupTree(); - MSG_ViewIndex result = MSG_VIEWINDEXNONE; - char* ptr = NULL; - - while (*str) { - ptr = XP_STRCHR(str, '.'); - if (ptr) *ptr = '\0'; - msg_GroupRecord* child = NULL; - /*if (!parent->IsCategoryContainer()) */ { - for (child = parent->GetChildren(); - child; - child = child->GetSibling()) { - if (XP_STRCMP(child->GetPartName(), str) >= 0) break; - } - } - if (!child) break; - parent = child; - if (XP_STRCMP(child->GetPartName(), str) != 0) { - // This is not an exact match. Ignore any other parts of the - // input string. - break; - } - if (ptr) { - *ptr = '.'; - str = ptr + 1; - } else { - break; - } - } - - if (ptr) *ptr = '.'; - - XP_ASSERT(parent); - if (!parent || parent == newsHost->GetGroupTree()) return MSG_VIEWINDEXNONE; - - result = FindGroupExpandIfNecessary(parent); - UpdateCounts(); - return result; -} - - -// only NNTP -int -MSG_SubscribePane::AddSearchResult(msg_GroupRecord* child) -{ - if (!child->IsGroup()) return 0; - msg_SubscribeLine* line = - new msg_SubscribeLine(child, 0, WasSubscribed(child), 0); - if (!line) return MK_OUT_OF_MEMORY; - int size = m_groupView.GetSize(); - StartingUpdate(MSG_NotifyInsertOrDelete, size, 1); - m_groupView.InsertAt(size, line); - EndingUpdate(MSG_NotifyInsertOrDelete, size, 1); - return 0; -} - - - - -// only NNTP -int -MSG_SubscribePane::FindAll(const char* str) -{ - XP_ASSERT(m_mode == MSG_SubscribeSearch); - if (m_mode != MSG_SubscribeSearch) return -1; - if (!m_host) return 0; - XP_ASSERT(m_host->IsNews()); - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - if (!newsHost || newsHost->getLastUpdate() == 0) return 0; - StartingUpdate(MSG_NotifyAll, 0, 0); - m_groupView.RemoveAll(); - EndingUpdate(MSG_NotifyAll, 0, 0); - - if (str == NULL || *str == '\0') return 0; - - msg_GroupRecord* child; - if (XP_STRCHR(str, '.') == NULL) { - // There are no dots in the search string, so we can just search the - // part names of each children. - for (child = newsHost->GetGroupTree()->GetChildren(); - child ; - child = child->GetNextAlphabeticNoCategories()) { - if (XP_STRCASESTR(child->GetPartName(), str)) { - msg_GroupRecord* done = child->GetSiblingOrAncestorSibling(); - for (;;) { - AddSearchResult(child); - msg_GroupRecord* next = - child->GetNextAlphabeticNoCategories(); - if (next == done) break; - child = next; - } - } else { - const char* pretty = child->GetPrettyName(); - if (pretty && XP_STRCASESTR(pretty, str)) { - AddSearchResult(child); - } - } - } - } else { - // There are dots in the search string, so we have to painfully grab - // the full name of every group to see if it matches. This can - // still be optimized, but it's harder, so I don't right now. ###tw - for (child = newsHost->GetGroupTree()->GetChildren(); - child ; - child = child->GetNextAlphabeticNoCategories()) { - if (child->IsGroup()) { - char* fullname = child->GetFullName(); - if (!fullname) return MK_OUT_OF_MEMORY; - if (XP_STRCASESTR(fullname, str)) { - AddSearchResult(child); - } else { - const char* pretty = child->GetPrettyName(); - if (pretty && XP_STRCASESTR(pretty, str)) { - AddSearchResult(child); - } - } - delete [] fullname; - } - } - } - if (m_groupView.GetSize() == 0) { - FE_Alert(GetContext(), XP_GetString(MK_MSG_SEARCH_FAILED)); - } - return 0; -} - - -XP_Bool -MSG_SubscribePane::GetGroupNameLineByIndex(MSG_ViewIndex firstline, - int32 numlines, - MSG_GroupNameLine* data) -{ - if (!m_host || firstline == MSG_VIEWINDEXNONE || - firstline + numlines > m_groupView.GetSize() || - numlines < 0) return FALSE; - int32 i; - MSG_GroupNameLine* line; - for (i=0, line=data ; i<numlines ; i++, line++) { - msg_SubscribeLine* info = m_groupView[firstline + i]; - msg_GroupRecord *group = info->GetGroup(); - XP_ASSERT(group); - if (!group) return FALSE; - const char *pretty = group->GetPrettyName(); - if (m_host->IsNews()) - { - char *tmp = group->GetFullName(); - if (!tmp) return FALSE; // Out of memory. - XP_STRNCPY_SAFE(line->name, tmp, sizeof(line->name)); - delete [] tmp; - } - else - { - // IMAP - don't display the whole path - const char *partname = group->GetPartName(); - if (!partname) return FALSE; - XP_STRNCPY_SAFE(line->name, partname, sizeof(line->name)); - } - line->level = info->GetDepth(); - line->total = info->GetNumMessages(); - line->flags = 0; - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - if (newsHost && group->GetAddTime() > newsHost->GetFirstNewDate()) { - line->flags |= MSG_GROUPNAME_FLAG_NEW_GROUP; - } - if (info->CanExpand()) { - int length = XP_STRLEN(line->name); - if (m_host->IsNews()) - { - PR_snprintf(line->name + length, sizeof(line->name) - length - 1, - ".* (%ld groups)", info->GetNumSubGroups()); - // ###tw I18N the above string. (Of course, it wasn't i18n in - // 3.0, either.) - } - else - { - int32 numSubGroups = info->GetNumSubGroups(); - char *subfolderString = numSubGroups == 1 ? - "subfolder" : "subfolders"; - PR_snprintf(line->name + length, sizeof(line->name) - length - 1, - ".* (%ld %s)", numSubGroups, subfolderString); - // ###tw I18N the above string. (Of course, it wasn't i18n in - // 3.0, either.) - } - line->flags |= MSG_GROUPNAME_FLAG_HASCHILDREN; - if (firstline + i >= m_groupView.GetSize() - 1 || - m_groupView[firstline + i + 1]->GetDepth() <= line->level) { - line->flags |= MSG_GROUPNAME_FLAG_ELIDED; - } - } else if (newsHost && pretty) { - int length = XP_STRLEN(line->name); - PR_snprintf(line->name + length, sizeof(line->name) - length - 1, - " (%s)", pretty); - } - if (info->GetSubscribed()) { - line->flags |= MSG_GROUPNAME_FLAG_SUBSCRIBED; - } - - // set the folder type flags (IMAP public, IMAP personal, etc.) - msg_IMAPGroupRecord *imapGroup = group->GetIMAPGroupRecord(); - if (imapGroup) - line->flags |= imapGroup->GetFlags(); - } - return TRUE; -} - - - -XP_Bool -MSG_SubscribePane::WasSubscribed(msg_GroupRecord* group) -{ - char* groupname = group->GetFullName(); - if (!groupname || !m_host) return FALSE; - - // first look through the updated (uncommitted) subscribe list - ChangeSubscribe key; - key.groupname = groupname; - key.host = m_host; - ChangeSubscribe* tmp = (ChangeSubscribe*) - XP_Gethash(m_subscribeHash, &key, NULL); - if (tmp) { - delete [] groupname; - return tmp->subscribe; - } - - // next, if it's IMAP, look through the original subscribed list - // that we first got back from the server - if (group->IsIMAPGroupRecord()) - { - XP_Bool wasSubscribed = (m_imapSubscribedList->FindIndex(0, groupname) != -1); - delete [] groupname; - return wasSubscribed; - } - - // otherwise, we must not be subscribed - delete [] groupname; - return FALSE; -} - - -void -MSG_SubscribePane::UpdateCounts() -{ - if (m_host && !NET_IsOffline()) - { - MSG_NewsHost *newsHost = m_host->GetNewsHost(); - if (newsHost) - { - for (int i=0 ; i<m_groupView.GetSize() ; i++) { - msg_SubscribeLine* info = m_groupView[i]; - if (info->GetNumMessages() < 0 && info->GetNumSubGroups() == 0) { - // OK, found one, so kick off the URL. - InterruptContext(FALSE); - UpdateNewsCounts(newsHost); - return; - } - } - } - } -} - - -void -MSG_SubscribePane::UpdateNewsCountsDone(int status) -{ - if (status >= 0) { - UpdateCounts(); - } -} - - -int32 -MSG_SubscribePane::GetNewsRCCount(MSG_NewsHost* host) -{ - XP_ASSERT(host == m_host); - if (host != m_host) return 0; - int num = m_groupView.GetSize(); - int32 result = 0; - for (int i=0 ; i<num ; i++) { - msg_SubscribeLine* info = m_groupView[i]; - if (info->GetNumMessages() < 0 && info->GetNumSubGroups() == 0) { - result++; - } - } - m_curUpdate = 0; - return result; -} - - -char* -MSG_SubscribePane::GetNewsRCGroup(MSG_NewsHost* host) -{ - XP_ASSERT(host == m_host); - if (host != m_host) return NULL; - int num = m_groupView.GetSize(); - if (num <= 0) return NULL; - if (m_curUpdate >= num) m_curUpdate = 0; - int32 i = m_curUpdate; - do { - msg_SubscribeLine* info = m_groupView[i]; - if (info->GetNumMessages() < 0 && info->GetNumSubGroups() == 0) { - info->SetNumMessages(0); // so we don't keep returning this one. - msg_GroupRecord* group = info->GetGroup(); - XP_ASSERT(group); - if (!group) continue; - char* tmp = group->GetFullName(); - char* result = NULL; - if (tmp) { - result = XP_STRDUP(tmp); // ### Ick. malloc vs. new. - delete [] tmp; - } - m_curUpdate = i; - return result; - } - i++; - if (i >= num) i = 0; - } while (i != m_curUpdate); - return NULL; -} - - - -int -MSG_SubscribePane::DisplaySubscribedGroup(MSG_NewsHost* host, - const char *groupname, - int32 /*oldest_message*/, - int32 /*youngest_message*/, - int32 total_messages, - XP_Bool /*nowvisiting*/) -{ - XP_ASSERT(host == m_host); - if (host != m_host) return 0; - - XP_ASSERT(m_curUpdate >= 0 && m_curUpdate < m_groupView.GetSize()); - if (m_curUpdate < 0 || m_curUpdate >= m_groupView.GetSize()) return -1; - - msg_SubscribeLine* info = m_groupView[m_curUpdate]; - msg_GroupRecord* group = info->GetGroup(); - XP_ASSERT(group); - if (!group) return -1; - char* tmp = group->GetFullName(); - XP_Bool matches = (XP_STRCMP(groupname, tmp) == 0); - delete [] tmp; - if (matches) { - StartingUpdate(MSG_NotifyChanged, m_curUpdate, 1); - info->SetNumMessages(total_messages); - EndingUpdate(MSG_NotifyChanged, m_curUpdate, 1); - } - return 0; -} - - -int MSG_SubscribePane::CommitSubscriptions() -{ - DisableUpdate(); - InterruptContext(FALSE); - ChangeSubscribe* tmp = m_subscribeList; - XP_Bool runningIMAP = FALSE; - while (tmp) { - XP_ASSERT(tmp->groupname); - if (tmp->groupname) - { - if (tmp->host->IsNews()) - { - MSG_NewsHost *newsHost = tmp->host->GetNewsHost(); - if (tmp->subscribe) { - newsHost->AddGroup(tmp->groupname); - } else { - newsHost->RemoveGroup(tmp->groupname); - } - //delete [] tmp->groupname; - //tmp->groupname = NULL; - } - else if (tmp->host->IsIMAP()) - { - MSG_IMAPHost *imapHost = tmp->host->GetIMAPHost(); - // here's where we have to issue a subscribe or unsubscribe to the server - - if (imapHost) - { - char *imapSubscribeURL = 0; - // whether or not we were originally subscribed to this folder - XP_Bool originallySubscribed = (m_imapSubscribedList->FindIndex(0, tmp->groupname) != -1); - - if (tmp->subscribe && !originallySubscribed) - { - imapSubscribeURL = CreateIMAPSubscribeMailboxURL(imapHost->GetHostName(), tmp->groupname); - if (imapHost->GetIsHostUsingSubscription() || m_master->GetUpgradingToIMAPSubscription()) - imapHost->SetHostNeedsFolderUpdate(TRUE); // we only need to update the folder view if we're only - // showing subscribed folders - } - else if (!tmp->subscribe && originallySubscribed) - { - imapSubscribeURL = CreateIMAPUnsubscribeMailboxURL(imapHost->GetHostName(), tmp->groupname); - if (imapHost->GetIsHostUsingSubscription() || m_master->GetUpgradingToIMAPSubscription()) - imapHost->SetHostNeedsFolderUpdate(TRUE); // we only need to update the folder view if we're only - // showing subscribed folders - } - - if (imapSubscribeURL) - { - runningIMAP = TRUE; - MSG_UrlQueue::AddUrlToPane(imapSubscribeURL, NULL, this); - XP_FREE(imapSubscribeURL); - } - } - } - else - { - // not News or IMAP - what is it? - XP_ASSERT(0); - } - } - ChangeSubscribe* next = tmp->next; - //delete tmp; - tmp = next; - } - - if (m_master->GetUpgradingToIMAPSubscription()) - { - m_master->SetIMAPSubscriptionUpgradedPrefs(); - m_master->SetUpgradingToIMAPSubscription(FALSE); - } - - if (!runningIMAP) - { - // make sure the FE knows it's ok to shut down the pane - FE_AllConnectionsComplete(GetContext()); - } - - return 0; -} diff --git a/mozilla/lib/libmsg/subpane.h b/mozilla/lib/libmsg/subpane.h deleted file mode 100644 index 5b67aa79390..00000000000 --- a/mozilla/lib/libmsg/subpane.h +++ /dev/null @@ -1,173 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _SubPane_H_ -#define _SubPane_H_ - -#include "msglpane.h" -#include "subline.h" -#include "idarray.h" - -struct ChangeSubscribe; -typedef struct xp_HashTable *XP_HashTable; -class msg_GroupRecord; -class msg_IMAPGroupRecord; -class MSG_Host; -class XPSortedPtrArray; - -class MSG_SubscribePane : public MSG_LinedPane { -public: - static MSG_SubscribePane* Create(MWContext* context, MSG_Master* master, - MSG_Host* host = NULL); - virtual ~MSG_SubscribePane(); - - virtual MSG_PaneType GetPaneType(); - - virtual void NotifyPrefsChange(NotifyCode code); - - virtual void ToggleExpansion(MSG_ViewIndex line, int32* numchanged); - virtual int32 ExpansionDelta(MSG_ViewIndex line); - virtual int32 GetNumLines(); - - virtual MsgERR DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices); - - virtual MsgERR GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, - int32 numindices, - XP_Bool *selectable_p, - MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_string, - XP_Bool *plural_p); - - int SetCallbacks(MSG_SubscribeCallbacks* callbacks, void* closure); - int Cancel(); - int CommitSubscriptions(); - MSG_Host* GetHost(); - int SetHost(MSG_Host* host); - MSG_SubscribeMode GetMode(); - int SetMode(MSG_SubscribeMode mode, - XP_Bool force = FALSE, // If FALSE, then this is a no-op - // if already in this mode. If - // TRUE, always recreate this mode - // from scratch. - XP_Bool autofetch = TRUE // If TRUE, then if we know we only - // have partial data from this - // newsgroup, then start getting - // that data automatically or pop - // up a warning, depending on mode. - ); - - MSG_ViewIndex FindFirst(const char* str); - int FindAll(const char* str); - XP_Bool GetGroupNameLineByIndex(MSG_ViewIndex firstline, int32 numlines, - MSG_GroupNameLine* data); - - virtual int32 GetNewsRCCount(MSG_NewsHost* host); - virtual char* GetNewsRCGroup(MSG_NewsHost* host); - virtual int DisplaySubscribedGroup(MSG_NewsHost* host, - const char *group, - int32 oldest_message, - int32 youngest_message, - int32 total_messages, - XP_Bool nowvisiting); - - // This should be used only by the internal msg_BackgroundGroupsSearch - // class. - int AddSearchResult(msg_GroupRecord* group); - - XP_Bool AddIMAPGroupToList(const char *folderName, char delimiter, - XP_Bool isSubscribed, uint32 box_flags, XP_Bool filledInGroup = FALSE); - void IMAPChildDiscoverySuccessful(); - void ReportIMAPFolderDiscoveryFinished(); - - - void UpdateCounts(); // Whenever new things get added to the list, - // we should call this to kick off updating - // the counts, if necessary. For internal use - // only. -protected: - MSG_SubscribePane(MWContext* context, MSG_Master* master, - MSG_Host* host); - void DoToggleExpansion(MSG_ViewIndex line, int32* numchanged); - int32 GetKidsArray(msg_GroupRecord*, msg_SubscribeLineArray* kids, - int depth); - msg_GroupRecord* FindRealDescendent(msg_GroupRecord* group); - MsgERR ToggleSubscribed(MSG_ViewIndex* indices, int32 numIndices); - MsgERR SetSubscribed(MSG_ViewIndex* indices, int32 numIndices, XP_Bool subscribed); - MsgERR ExpandAll(MSG_ViewIndex* indices, int32 numIndices); - MsgERR CollapseAll(); - MsgERR ClearNew(); - MsgERR FetchGroupList(); - MSG_ViewIndex FindGroupExpandIfNecessary(msg_GroupRecord* group); - - XP_Bool WasSubscribed(msg_GroupRecord* group); // Whether the given group - // was already subscribed - // for the current host. - virtual void UpdateNewsCountsDone(int status); - virtual XP_Bool AddGroupsAsNew(); - - virtual void CheckForNewDone(URL_Struct* url_struct, int status, - MWContext* context); - - msg_IMAPGroupRecord* FindParentRecordOfIMAPGroup(const char *folderName, char delimiter); - MSG_ViewIndex FindGroupViewIndex(msg_GroupRecord* group); - void ClearAndFreeIMAPSubscribedList(); - void ClearAndFreeIMAPGroupList(); - - static MSG_SubscribePane* CurPane; // To ensure we never create more than - // one. - - - MSG_Host* m_host; - MSG_SubscribeMode m_mode; - msg_SubscribeLineArray m_groupView; // Array of displayed lines - ChangeSubscribe* m_subscribeList; // List of items we want to subscribe - // or unsubscribe. - ChangeSubscribe* m_endSubscribeList;// End of above list. - XP_HashTable m_subscribeHash; // Hash into above. Need both hashtable - // and linked list, because ordering - // and quick lookups are both needed. - XP_HashTable m_imapGroupHash; // hash table of all msg_IMAPGroupRecords that - // exist. This structure owns the storage - // for the group records. - XPSortedPtrArray *m_imapSubscribedList; // list of all IMAP folder names that - // we are subscribed to initially. - // This is used for quick lookup to see if a - // folder is subscribed or not when it is later added - // to the view through expansion. - char* m_lastSearch; // String used for the last search. - - int32 m_curUpdate; // Which line we think we're updating counts - // on. - - MSG_SubscribeCallbacks m_callbacks; - void* m_callbackclosure; - - time_t m_updateTime; - - msg_IMAPGroupRecord *m_imapTree; - XP_Bool m_subscribeCommitted; - msg_IMAPGroupRecord *m_expandingIMAPGroup; -}; - -#endif /* _SubPane_H_ */ diff --git a/mozilla/lib/libmsg/thrdbvw.cpp b/mozilla/lib/libmsg/thrdbvw.cpp deleted file mode 100644 index 693708165eb..00000000000 --- a/mozilla/lib/libmsg/thrdbvw.cpp +++ /dev/null @@ -1,650 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "xp.h" -#include "msgdb.h" -#include "thrdbvw.h" -#include "errcode.h" -#include "msghdr.h" -#include "dberror.h" -#include "newsdb.h" -#include "vwerror.h" -#include "thrhead.h" -#include "newshdr.h" -#include "grpinfo.h" - -ThreadDBView::ThreadDBView(ViewType viewType) -{ - m_viewType = viewType; - m_havePrevView = FALSE; - m_headerIndex = 0; - m_viewFlags = kOutlineDisplay; - SetInitialSortState(); -} - -ThreadDBView::~ThreadDBView() -{ -} - -MsgERR ThreadDBView::Open(MessageDB *messageDB, ViewType viewType, uint32* pCount, XP_Bool runInForeground /* = TRUE */) -{ - MsgERR err; - if ((err = MessageDBView::Open(messageDB, viewType, pCount, runInForeground)) != eSUCCESS) - return err; - - if (pCount) - *pCount = 0; - return Init(pCount, runInForeground); -} - -// Initialize id array and flag array in thread order. -MsgERR ThreadDBView::Init(uint32 *pCount, XP_Bool runInForeground /* = TRUE */) -{ - MsgERR err; - SortOrder sortOrder; - SortType sortType; - - m_idArray.RemoveAll(); - m_flags.RemoveAll(); - m_levels.RemoveAll(); - m_prevIdArray.RemoveAll(); - m_prevFlags.RemoveAll(); - m_prevLevels.RemoveAll(); - m_havePrevView = FALSE; - m_sortType = SortByThread; // this sorts by thread, which we will resort. - sortType = m_sortType; - MsgERR getSortInfoERR = m_messageDB->GetSortInfo(&sortType, &sortOrder); - - if (!runInForeground) - return eBuildViewInBackground; - - // list all the ids into m_idArray. - MessageKey startMsg = 0; - do - { - const int kIdChunkSize = 200; - int numListed = 0; - MessageKey idArray[kIdChunkSize]; - int32 flagArray[kIdChunkSize]; - char levelArray[kIdChunkSize]; - - err = m_messageDB->ListThreadIds(&startMsg, m_viewType == ViewOnlyNewHeaders, idArray, flagArray, levelArray, kIdChunkSize, &numListed, this, NULL); - if (err == eSUCCESS) - { - int32 numAdded = AddKeys(idArray, flagArray, levelArray, sortType, numListed); - if (pCount) - *pCount += numAdded; - } - - } while (err == eSUCCESS && startMsg != kIdNone); - if (err == eCorruptDB) - { - m_messageDB->SetSummaryValid(FALSE); // get mail db and do this. - err = eEXCEPTION; - } - if (getSortInfoERR == eSUCCESS) - { - InitSort(sortType, sortOrder); - } - - return err; -} - -int32 ThreadDBView::AddKeys(MessageKey *pOutput, int32 *pFlags, char *pLevels, SortType sortType, int numListed) -{ - int numAdded = 0; - for (int i = 0; i < numListed; i++) - { - int32 threadFlag = pFlags[i]; - char flag = 0; - CopyDBFlagsToExtraFlags(threadFlag, - &flag); - - // skip ignored threads. - if ((threadFlag & kIgnored) && !(m_viewFlags & kShowIgnored)) - continue; - // by default, make threads collapsed, unless we're in only viewing new msgs - - if (flag & kHasChildren) - flag |= kElided; - // should this be persistent? Doesn't seem to need to be. - flag |= kIsThread; - m_idArray.Add(pOutput[i]); - m_flags.Add(flag); - m_levels.Add(pLevels[i]); - numAdded++; - if ((/*m_viewFlags & kUnreadOnly || */(sortType != SortByThread)) && flag & kElided) - { - ExpandByIndex(m_idArray.GetSize() - 1, NULL); - } - } - return numAdded; -} - -MsgERR ThreadDBView::InitSort(SortType sortType, SortOrder sortOrder) -{ - if (sortType == SortByThread) - { - SortInternal(SortById, sortOrder); // sort top level threads by id. - m_sortType = SortByThread; - m_messageDB->SetSortInfo(m_sortType, sortOrder); - } - if ((m_viewFlags & kUnreadOnly) && m_sortType == SortByThread) - ExpandAll(); - m_sortValid = TRUE; - Sort(sortType, sortOrder); - if (sortType != SortByThread) // forget prev view, since it has everything expanded. - ClearPrevIdArray(); - return eSUCCESS; -} - - -// override so we can forget any previous id array, which -// is made invalid by adding a header. (Same true for deleting... ### dmb) -MsgERR ThreadDBView::AddHdr(DBMessageHdr *msgHdr) -{ - if (m_viewFlags & kUnreadOnly) - msgHdr->AndFlags(~kElided); - else - msgHdr->OrFlags(kElided); // by default, new headers are collapsed. - return MessageDBView::AddHdr(msgHdr); -} - -// This function merely parses the XOver header into a DBMessageHdr -// and stores that in m_headers. From there, it will be threaded -// and added to the database in a separate pass. -MsgERR ThreadDBView::AddHdrFromServerLine(char *line, MessageKey *msgId) -{ - MsgERR err = eSUCCESS; - - XP_ASSERT(msgId != NULL); - - NewsMessageHdr *newsMsgHdr = new NewsMessageHdr; - // this will stick 0's in various places in line, but that's - // the way 2.0 worked, so I guess it's OK. - if (!DBMessageHdr::ParseLine(line, newsMsgHdr, m_messageDB->GetDB())) - err = eXOverParseError; - - if (err != eSUCCESS) - { - delete newsMsgHdr; - return err; - } - - *msgId = newsMsgHdr->GetMessageKey(); - if (m_messageDB->KeyToAddExists(*msgId)) - { - delete newsMsgHdr; - return eSUCCESS; - } - - m_newHeaders.SetAtGrow(m_headerIndex++, newsMsgHdr); - // this should be tuneable, but let's try every 200 objects - if (m_headerIndex > 200) - AddNewMessages(); - return eSUCCESS; -} - -MsgERR ThreadDBView::AddNewMessages() -{ - MsgERR err = eSUCCESS; - XP_Bool isNewThread; - NewsGroupDB *newsDB = (NewsGroupDB *) m_messageDB; - - // go through the new headers adding them to the db - // The idea here is that m_headers is just the new headers - for (int i = 0; i < m_newHeaders.GetSize(); i++) - { - - DBMessageHdr *dbMsgHdr = (DBMessageHdr *) m_newHeaders[i]; - if ((dbMsgHdr->GetFlags() & kHasChildren) && m_sortType == SortByThread) - dbMsgHdr->OrFlags(kElided); - - err = newsDB->AddHdrToDB(dbMsgHdr, &isNewThread, TRUE); - if (err == eCorruptDB) - { - newsDB->SetSummaryValid(FALSE); - break; - } - delete dbMsgHdr; - // Only add header to view if it's a new thread -// if (err == eSUCCESS) // notify param to AddHdrToDB should take care of this -// { -// if (m_sortType != SortByThread) -// { -// AddHdr(dbMsgHdr); -// } -// else if (isNewThread) -// { -// AddHdr(dbMsgHdr); -// } -// } - } - newsDB->Commit(); - m_headerIndex = 0; - m_newHeaders.RemoveAll(); - return err; - -} - - -void ThreadDBView::SetInitialSortState(void) -{ - m_sortOrder = SortTypeAscending; - m_sortType = SortByThread; -} - -MsgERR ThreadDBView::ExpandAll() -{ - MsgERR err = eSUCCESS; - // go through expanding in place - for (uint32 i = 0; i < m_idArray.GetSize(); i++) - { - uint32 numExpanded; - BYTE flags = m_flags[i]; - if (flags & kHasChildren && (flags & kElided)) - { - err = ExpandByIndex(i, &numExpanded); - i += numExpanded; - if (err != eSUCCESS) - return err; - } - } - return err; -} - -MsgERR ThreadDBView::Sort(SortType sortType, SortOrder sortOrder) -{ - // if the client wants us to forget our cached id arrays, they - // should build a new view. If this isn't good enough, we - // need a method to do that. - if (sortType != m_sortType || !m_sortValid) - { - if (sortType == SortByThread) - { - m_sortType = sortType; - if ( m_havePrevView) - { - // restore saved id array and flags array - m_idArray.RemoveAll(); - m_idArray.InsertAt(0, &m_prevIdArray); - m_flags.RemoveAll(); - m_flags.InsertAt(0, &m_prevFlags); - m_levels.RemoveAll(); - m_levels.InsertAt(0, &m_prevLevels); - m_messageDB->SetSortInfo(sortType, sortOrder); - m_sortValid = TRUE; - return eSUCCESS; - } - else - { - // set sort info in anticipation of what Init will do. - m_messageDB->SetSortInfo(sortType, SortTypeAscending); - Init(NULL); // build up thread list. - if (sortOrder != SortTypeAscending) - Sort(sortType, sortOrder); - return eSUCCESS; - } - } - else if (sortType != SortByThread && m_sortType == SortByThread /* && !m_havePrevView*/) - { - // going from SortByThread to non-thread sort - must build new id array and flags array - m_prevIdArray.RemoveAll(); - m_prevIdArray.InsertAt(0, &m_idArray); - m_prevFlags.RemoveAll(); - m_prevFlags.InsertAt(0, &m_flags); - m_prevLevels.RemoveAll(); - m_prevLevels.InsertAt(0, &m_levels); - ExpandAll(); -// m_idArray.RemoveAll(); -// m_flags.RemoveAll(); - m_havePrevView = TRUE; - } - } - return SortInternal(sortType, sortOrder); -} - -void ThreadDBView::OnHeaderAddedOrDeleted() -{ - ClearPrevIdArray(); -} - -void ThreadDBView::OnExtraFlagChanged(MSG_ViewIndex index, char extraFlag) -{ - if (IsValidIndex(index) && m_havePrevView) - { - MessageKey keyChanged = m_idArray[index]; - MSG_ViewIndex prevViewIndex = m_prevIdArray.FindIndex(keyChanged); - if (prevViewIndex != MSG_VIEWINDEXNONE) - { - char prevFlag = m_prevFlags.GetAt(prevViewIndex); - // don't want to change the elided bit, or has children or is thread - if (prevFlag & kElided) - extraFlag |= kElided; - else - extraFlag &= ~kElided; - if (prevFlag & kIsThread) - extraFlag |= kIsThread; - else - extraFlag &= ~kIsThread; - if (prevFlag & kHasChildren) - extraFlag |= kHasChildren; - else - extraFlag &= ~kHasChildren; - m_prevFlags.SetAt(prevViewIndex, extraFlag); // will this be right? - } - } -} - -void ThreadDBView::ClearPrevIdArray() -{ - m_prevIdArray.RemoveAll(); - m_prevFlags.RemoveAll(); - m_havePrevView = FALSE; -} - -MSG_ViewIndex -ThreadDBView::GetInsertInfoForNewHdr(MessageKey newKey, - MSG_ViewIndex startThreadIndex, - int8 *pLevel) -{ - DBThreadMessageHdr *threadHdr = m_messageDB->GetDBThreadHdrForMsgID(newKey); - MSG_ViewIndex threadIndex = 0; - int i; - - if (m_viewFlags & kUnreadOnly) - { - uint8 levelToAdd; - XPByteArray levelStack; - for (i = 0; i < threadHdr->GetNumChildren(); i++) - { - DBMessageHdr *msgHdr = threadHdr->GetChildHdrAt(i); - if (msgHdr != NULL) - { - // if the current header's level is <= to the top of the level stack, - // pop off the top of the stack. - // unreadonly - The level stack needs to work across calls - // to this routine, in the case that we have more than 200 unread - // messages in a thread. - while (levelStack.GetSize() > 1 && - msgHdr->GetLevel() <= levelStack.GetAt(levelStack.GetSize() - 1)) - { - levelStack.RemoveAt(levelStack.GetSize() - 1); - } - - if (msgHdr->GetMessageKey() == newKey) - { - if (levelStack.GetSize() == 0) - levelToAdd = 0; - else - levelToAdd = levelStack.GetAt(levelStack.GetSize() - 1) + 1; - delete msgHdr; - - if (pLevel) - *pLevel = levelToAdd; - break; - } - if ((startThreadIndex + threadIndex) < m_idArray.GetSize() - && msgHdr->GetMessageKey() == m_idArray[startThreadIndex + threadIndex]) - { - levelStack.Add(m_levels[startThreadIndex + threadIndex]); - threadIndex++; - } - delete msgHdr; - } - } - } - else - { - for (i = 0; i < threadHdr->GetNumChildren(); i++) - { - MessageKey msgKey = threadHdr->GetChildAt(i); - if (msgKey == newKey) - { - if (pLevel) - { - DBMessageHdr *msgHdr = threadHdr->GetChildHdrAt(i); - *pLevel = msgHdr->GetLevel(); - delete msgHdr; - } - break; - } - if (msgKey == m_idArray[startThreadIndex + threadIndex]) - threadIndex++; - } - } - return threadIndex + startThreadIndex; -} - -MsgERR ThreadDBView::OnNewHeader(MessageKey newKey, XP_Bool ensureListed) -{ - MsgERR err = eSUCCESS; - // views can override this behaviour, which is to append to view. - // This is the mail behaviour, but threaded views might want - // to insert in order... - DBMessageHdr *msgHdr = m_messageDB->GetDBHdrForKey(newKey); - if (msgHdr != NULL) - { - if (m_viewType == ViewOnlyNewHeaders && !ensureListed && (msgHdr->GetFlags() & kIsRead)) - return eSUCCESS; - // Currently, we only add the header in a threaded view if it's a thread. - // We used to check if this was the first header in the thread, but that's - // a bit harder in the unreadOnly view. But we'll catch it below. - if (m_sortType != SortByThread)// || msgHdr->GetMessageKey() == m_messageDB->GetKeyOfFirstMsgInThread(msgHdr->GetMessageKey())) - err = AddHdr(msgHdr); - else // need to find the thread we added this to so we can change the hasnew flag - // added message to existing thread, but not to view - { // Fix flags on thread header. - int32 threadCount; - uint32 threadFlags; - MSG_ViewIndex threadIndex = ThreadIndexOfMsg(newKey, kViewIndexNone, &threadCount, &threadFlags); - if (threadIndex != MSG_VIEWINDEXNONE) - { - // check if this is now the new thread hdr - char flags = m_flags[threadIndex]; - // if we have a collapsed thread which just got a new - // top of thread, change the id array. - if ((flags & kElided) && msgHdr->GetLevel() == 0 - && (!(m_viewFlags & kUnreadOnly) || !(msgHdr->GetFlags() & kIsRead))) - { - m_idArray.SetAt(threadIndex, msgHdr->GetMessageKey()); - NoteChange(threadIndex, 1, MSG_NotifyChanged); - } - if (! (flags & kHasChildren)) - { - flags |= kHasChildren | kIsThread; - if (!(m_viewFlags & kUnreadOnly)) - flags |= kElided; - m_flags[threadIndex] = flags; - NoteChange(threadIndex, 1, MSG_NotifyChanged); - } - if (! (flags & kElided)) // thread is expanded - { // insert child into thread - int8 level; // levels of other hdrs may have changed! - char newFlags = 0; - - MSG_ViewIndex insertIndex = GetInsertInfoForNewHdr(newKey, threadIndex, &level); - // this header is the new top of the thread. try collapsing the existing thread, - // removing it, installing this header as top, and expanding it. - CopyDBFlagsToExtraFlags(msgHdr->GetFlags(), &newFlags); - if (level == 0) - { - CollapseByIndex(threadIndex, NULL); - // call base class, so child won't get promoted. - MessageDBView::RemoveByIndex(threadIndex); - newFlags |= kIsThread | kHasChildren | kElided; - } - m_idArray.InsertAt(insertIndex, newKey); - m_flags.InsertAt(insertIndex, newFlags, 1); - m_levels.InsertAt(insertIndex, level); - NoteChange(threadIndex, 1, MSG_NotifyChanged); - NoteChange(insertIndex, 1, MSG_NotifyInsertOrDelete); - if (level == 0) - ExpandByIndex(threadIndex, NULL); - } - } - else - { - DBThreadMessageHdr *threadHdr = m_messageDB->GetDBThreadHdrForMsgID(newKey); - if (threadHdr) - { - switch (m_viewType) - { - case ViewOnlyThreadsWithNew: - { - DBMessageHdr *parentHdr = GetFirstMessageHdrToDisplayInThread(threadHdr); - if (parentHdr && (ensureListed || !(msgHdr->GetFlags() & kIsRead))) - { - parentHdr->OrFlags(kHasChildren | kIsThread); - if (!(m_viewFlags & kUnreadOnly)) - parentHdr->OrFlags(kElided); - AddHdr(parentHdr); - } - delete parentHdr; - } - break; - case ViewWatchedThreadsWithNew: - if (threadHdr->GetFlags() & kWatched) - { - DBMessageHdr *parentHdr = GetFirstMessageHdrToDisplayInThread(threadHdr); - if (parentHdr && (ensureListed || !(msgHdr->GetFlags() & kIsRead))) - { - parentHdr->OrFlags(kElided | kHasChildren | kIsThread); - AddHdr(parentHdr); - } - delete parentHdr; - } - break; - case ViewOnlyNewHeaders: - case ViewAllThreads: - if (!(threadHdr->GetFlags() & kIgnored)) - AddHdr(msgHdr); - break; - default: - AddHdr(msgHdr); - - } - delete threadHdr; - } - } - } - delete msgHdr; - } - else - err = eID_NOT_FOUND; - return err; -} - -// This method just removes the specified line from the view. It does -// NOT delete it from the database. -MsgERR ThreadDBView::RemoveByIndex(MSG_ViewIndex index) -{ - MsgERR err = eSUCCESS; - int32 flags; - - if (!IsValidIndex(index)) - return eInvalidIndex; - - flags = m_flags[index]; - - if (m_sortType != SortByThread) - return MessageDBView::RemoveByIndex(index); - - if ((flags & kIsThread) && !(flags & kElided) && (flags & kHasChildren)) - { - // fix flags on thread header...Newly promoted message - // should have flags set correctly - DBThreadMessageHdr *threadHdr = m_messageDB->GetDBThreadHdrForMsgID(m_idArray[index]); - if (threadHdr) - { - MessageDBView::RemoveByIndex(index); - DBThreadMessageHdr *nextThreadHdr = (index < GetSize()) - ? m_messageDB->GetDBThreadHdrForMsgID(m_idArray[index]) : 0; - // make sure id of next message is really in the same thread - // it might have been deleted from the view but not the db yet. - if (threadHdr == nextThreadHdr && threadHdr->GetNumChildren() > 1) - { - // unreadOnly - DBMessageHdr *msgHdr = threadHdr->GetChildHdrAt(1); - if (msgHdr != NULL) - { - char flag = 0; - CopyDBFlagsToExtraFlags(msgHdr->GetFlags(), &flag); - m_flags.SetAtGrow(index, (uint8) flags); - m_levels.SetAtGrow(index, 0); - delete msgHdr; - } - } - if (nextThreadHdr) - delete nextThreadHdr; - delete threadHdr; - } - return err; - } - else if (!(flags & kIsThread)) - { - return MessageDBView::RemoveByIndex(index); - } - // deleting collapsed thread header is special case. Child will be promoted, - // so just tell FE that line changed, not that it was deleted - DBThreadMessageHdr *threadHdr = m_messageDB->GetDBThreadHdrForMsgID(m_idArray[index]); - if (threadHdr && threadHdr->GetNumChildren() > 1) - { - // change the id array and flags array to reflect the child header. - // If we're not deleting the header, we want the second header, - // Otherwise, the first one (which just got promoted). - DBMessageHdr *msgHdr = threadHdr->GetChildHdrAt(1); - if (msgHdr != NULL) - { - m_idArray.SetAt(index, msgHdr->GetMessageKey()); - - char flag = 0; - CopyDBFlagsToExtraFlags(msgHdr->GetFlags(), &flag); -// if (msgHdr->GetArticleNum() == msgHdr->GetThreadId()) - flag |= kIsThread; - - if (threadHdr->GetNumChildren() == 2) // if only hdr in thread (with one about to be deleted) - // adjust flags. - { - flag &= ~kHasChildren; - flag &= ~kElided; - } - else - { - flag |= kHasChildren; - flag |= kElided; - } - m_flags[index] = flag; - delete msgHdr; - } - else - XP_ASSERT(FALSE); - NoteChange(index, 0, MSG_NotifyInsertOrDelete); // hack to tell fe that the key has changed - } - else - err = MessageDBView::RemoveByIndex(index); - - delete threadHdr; - return err; -} - diff --git a/mozilla/lib/libmsg/thrdbvw.h b/mozilla/lib/libmsg/thrdbvw.h deleted file mode 100644 index db8847da14f..00000000000 --- a/mozilla/lib/libmsg/thrdbvw.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef THREAD_VIEW_H -#define THREAD_VIEW_H - -#include "msgdbvw.h" - -class ThreadDBView : public MessageDBView -{ -public: - ThreadDBView(ViewType viewType); - ~ThreadDBView(); - const char * GetViewName(void) {return "ThreadedView"; } - virtual MsgERR Open(MessageDB *messageDB, ViewType viewType,uint32* pCount, XP_Bool runInForeground = TRUE); - // thread and add m_newHeaders to db and view. - virtual MsgERR AddNewMessages(); - virtual MsgERR AddHdrFromServerLine(char *line, - MessageId *msgId); - virtual MsgERR OnNewHeader(MessageKey newKey, XP_Bool ensureListed); - virtual MsgERR AddHdr(DBMessageHdr *msgHdr); - virtual MsgERR Sort(SortType sortType, SortOrder sortOrder); - virtual void SetInitialSortState(void); - virtual int32 AddKeys(MessageKey *pOutput, int32 *pFlags, char *pLevels, SortType sortType, int numListed); - virtual MsgERR InitSort(SortType sortType, SortOrder sortOrder); - virtual MsgERR Init(uint32 *pCount, XP_Bool runInForeground = TRUE); -protected: - - virtual MsgERR ExpandAll(); - virtual void OnHeaderAddedOrDeleted(); - virtual void OnExtraFlagChanged(MSG_ViewIndex index, char extraFlag); - void ClearPrevIdArray(); - virtual MSG_ViewIndex GetInsertInfoForNewHdr(MessageKey newKey, MSG_ViewIndex startTheadIndex, int8 *pLevel); - virtual MsgERR RemoveByIndex(MSG_ViewIndex index); - - XP_Bool m_havePrevView; - IDArray m_prevIdArray; - XPByteArray m_prevFlags; - XPByteArray m_prevLevels; - XPPtrArray m_newHeaders; // array of new DBMessageHdr *, prior to threading - int m_headerIndex; // index to add next header at. -}; - -#endif diff --git a/mozilla/lib/libmsg/threads.h b/mozilla/lib/libmsg/threads.h deleted file mode 100644 index 295714354b0..00000000000 --- a/mozilla/lib/libmsg/threads.h +++ /dev/null @@ -1,93 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - This file is no longer used and should be removed. - */ - -#ifndef _THREADS_H_ -#define _THREADS_H_ - -#include "msg.h" -#include "xp_hash.h" - -struct msg_thread_state; /* opaque */ - -/* When we need to create/destry a synthetic ThreadEntry, we call these. */ -typedef MSG_ThreadEntry * (*msg_DummyThreadEntryCreator) (void *arg); -typedef void (*msg_DummyThreadEntryDestroyer) (struct MSG_ThreadEntry *dummy, - void *arg); - -XP_BEGIN_PROTOS - -/* Creates and initializes a state object to hold the thread data. - The first argument should be the caller's best guess as to how - many messages there will be; it is used for the initial size of - the hash tables, so it's ok for it to be too small. The other - arguments specify the sorting behavior. - */ -extern struct msg_thread_state * -msg_BeginThreading (MWContext* context, - uint32 message_count_guess, - XP_Bool news_p, - MSG_SORT_KEY sort_key, - XP_Bool sort_forward_p, - XP_Bool thread_p, - msg_DummyThreadEntryCreator dummy_creator, - void *dummy_creator_arg); - -/* Add a message to the thread data. - The msg->next slot will be ignored (and not modified.) - */ -extern int -msg_ThreadMessage (struct msg_thread_state *state, - char **string_table, - struct MSG_ThreadEntry *msg); - -/* Threads the messages, discards the state object, and returns a - tree of MSG_ThreadEntry objects. - The msg->next and msg->first_child slots of all messages will - be overwritten. - */ -extern struct MSG_ThreadEntry * -msg_DoneThreading (struct msg_thread_state *state, - char **string_table); - -/* Given an existing tree of MSG_ThreadEntry structures, re-sorts them. - This changes the `next' and `first_child' links, and may create or - destroy "dummy" thread entries (those with the EXPIRED flag set.) - The new root of the tree is returned. - */ -extern struct MSG_ThreadEntry * -msg_RethreadMessages (MWContext* context, - struct MSG_ThreadEntry *tree, - uint32 approximate_message_count, - char **string_table, - XP_Bool news_p, - MSG_SORT_KEY sort_key, XP_Bool sort_forward_p, - XP_Bool thread_p, - msg_DummyThreadEntryCreator dummy_creator, - msg_DummyThreadEntryDestroyer dummy_destroyer, - void *dummy_arg); - -XP_END_PROTOS - -#endif /* _THREADS_H_ */ diff --git a/mozilla/lib/libmsg/thrhead.cpp b/mozilla/lib/libmsg/thrhead.cpp deleted file mode 100644 index c09356542f4..00000000000 --- a/mozilla/lib/libmsg/thrhead.cpp +++ /dev/null @@ -1,193 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp.h" -#include "thrhead.h" -#include "newsdb.h" -#include "msgdbapi.h" -#include "msgstrob.h" - -#ifdef DEBUG_bienvenu -int32 DBThreadMessageHdr::m_numThreadHeaders = 0; -#endif -DBThreadMessageHdr::DBThreadMessageHdr() -{ - m_numChildren = 0; - m_flags = 0; - m_numNewChildren = 0; -#ifdef DEBUG_bienvenu - m_numThreadHeaders++; -#endif -} - -DBThreadMessageHdr::DBThreadMessageHdr(MSG_ThreadHandle handle) -{ - MSG_DBThreadExchange threadInfo; - - m_dbThreadHandle = handle; - MSG_ThreadHandle_GetThreadInfo(handle, &threadInfo); - m_threadKey = threadInfo.m_threadKey; - m_numChildren = threadInfo.m_numChildren; - m_numNewChildren = threadInfo.m_numNewChildren; - m_flags = threadInfo.m_flags; -#ifdef DEBUG_bienvenu - m_numThreadHeaders++; -#endif -} - -DBThreadMessageHdr::~DBThreadMessageHdr() -{ -#ifdef DEBUG_bienvenu - m_numThreadHeaders--; -#endif - if (m_dbThreadHandle) - MSG_ThreadHandle_RemoveReference(m_dbThreadHandle); -} - -// newHeader comes out with an extra reference added. -void DBThreadMessageHdr::AddChild(DBMessageHdr *newHeader, MessageDB *messageDB, XP_Bool threadInThread) -{ - MSG_ThreadHandle_AddChild(GetHandle(), newHeader->GetHandle(), messageDB->GetDB(), threadInThread); - - if (m_flags & kIgnored) // if thread ignored, mark child read. - messageDB->MarkHdrRead(newHeader, TRUE, NULL); -} - -MessageKey DBThreadMessageHdr::GetChildAt(int index) -{ - return MSG_ThreadHandle_GetChildAt(GetHandle(), index); -} - -DBMessageHdr *DBThreadMessageHdr::GetChildHdrAt(int index) -{ - DBMessageHdr *returnHdr = NULL; - MSG_HeaderHandle childHandle = MSG_ThreadHandle_GetChildHdrAt(GetHandle(), index); - if (childHandle) - returnHdr = new DBMessageHdr(childHandle); // will it matter that this is not the appropriate sub-class? - return returnHdr; -} - -DBMessageHdr* DBThreadMessageHdr::GetChild(MessageKey msgId) -{ - MSG_HeaderHandle childHandle = MSG_ThreadHandle_GetChildForKey(GetHandle(), msgId); - DBMessageHdr *returnHdr = NULL; - - if (childHandle) - returnHdr = new DBMessageHdr(childHandle); // will it matter that this is not the appropriate sub-class? - return returnHdr; -} - -MessageKey DBThreadMessageHdr::GetFirstUnreadKey(MessageDB *messageDB) -{ - DBMessageHdr *hdr = GetFirstUnreadChild(messageDB); - MessageKey retKey = (hdr) ? hdr->GetMessageKey() : kIdNone; - return retKey; -} - -// caller must refer to msgHdr if they want to hold on to it. -DBMessageHdr *DBThreadMessageHdr::GetFirstUnreadChild(MessageDB *messageDB) -{ - DBMessageHdr *retHdr = NULL; - uint16 numChildren = GetNumChildren(); - - for (uint16 childIndex = 0; childIndex < numChildren; childIndex++) - { - MessageKey msgId = GetChildAt(childIndex); - if (msgId != 0) - { - XP_Bool isRead = FALSE; - if (messageDB->IsRead(msgId, &isRead) == eSUCCESS && !isRead) - { - retHdr = messageDB->GetDBHdrForKey(msgId); - break; - } - } - } - return retHdr; -} - -void DBThreadMessageHdr::RemoveChild(MessageKey msgKey, MSG_DBHandle db) -{ - MSG_ThreadHandle_RemoveChildByKey(GetHandle(), msgKey, db); -} - - -void DBThreadMessageHdr::MarkChildRead(XP_Bool bRead, MSG_DBHandle db) -{ - MSG_ThreadHandle_MarkChildRead(GetHandle(), bRead, db); -} - -// copy the subject back into the passed buffer. -void DBThreadMessageHdr::GetSubject(char *outSubject, int subjectLen) -{ - char *subjectStr = NULL; - XPStringObj subject; - - MSG_ThreadHandle_GetSubject(GetHandle(), &subjectStr, NULL); - subject.SetStrPtr(subjectStr); - - if (subjectStr != NULL) - XP_STRNCPY_SAFE(outSubject, subjectStr, subjectLen - 1); -} - -void DBThreadMessageHdr::SetNumChildren(uint16 numChildren) -{ - m_numChildren = numChildren; -} - -void DBThreadMessageHdr::SetNumNewChildren(uint16 numNewChildren) -{ - m_numNewChildren = numNewChildren; -} - -uint16 DBThreadMessageHdr::GetNumChildren() -{ - return MSG_ThreadHandle_GetNumChildren(GetHandle()); -} - -uint16 DBThreadMessageHdr::GetNumNewChildren() -{ - return m_numNewChildren; -} - -uint32 DBThreadMessageHdr::GetFlags() -{ - return m_flags; -} - -void DBThreadMessageHdr::SetFlags(uint32 flags) -{ - m_flags = flags; -} - -uint32 DBThreadMessageHdr::OrFlags(uint32 flags) -{ - uint32 retflags = m_flags |= flags; - return retflags; -} - -uint32 DBThreadMessageHdr::AndFlags(uint32 flags) -{ - uint32 retflags = (m_flags &= flags); - return retflags; -} - diff --git a/mozilla/lib/libmsg/thrhead.h b/mozilla/lib/libmsg/thrhead.h deleted file mode 100644 index 126383841ba..00000000000 --- a/mozilla/lib/libmsg/thrhead.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _THREAD_MSGHDR_H -#define _THREAD_MSGHDR_H - -#include "msghdr.h" - -class DBThreadMessageHdr -{ -public: - DBThreadMessageHdr(); - DBThreadMessageHdr(MSG_ThreadHandle handle); - virtual ~DBThreadMessageHdr(); - virtual void AddChild(DBMessageHdr *child, MessageDB *db, XP_Bool threadInThread); - virtual MessageKey GetChildAt(int index); - virtual DBMessageHdr* GetChild(MessageKey msgId); - virtual DBMessageHdr *GetChildHdrAt(int index); - virtual void RemoveChild(MessageKey msgId, MSG_DBHandle db); - virtual void MarkChildRead(XP_Bool bRead, MSG_DBHandle db); - virtual MessageKey GetFirstUnreadKey(MessageDB *db); - MessageKey GetThreadID() {return m_threadKey;} - virtual DBMessageHdr *GetFirstUnreadChild(MessageDB *db); - void GetSubject(char *subject, int subjectLen); - void SetNumChildren(uint16 numChildren); - uint16 GetNumChildren(); - void SetNumNewChildren(uint16 numNewChildren); - uint16 GetNumNewChildren(); - uint32 GetFlags(); - void SetFlags(uint32 flags); - uint32 OrFlags(uint32 flags); - uint32 AndFlags(uint32 flags); - MSG_ThreadHandle GetHandle() {return m_dbThreadHandle;} - - MessageKey m_threadKey; -#ifdef DEBUG_bienvenu - static int32 m_numThreadHeaders; -#endif -protected: - MSG_ThreadHandle m_dbThreadHandle; - uint16 m_numChildren; - uint16 m_numNewChildren; - uint32 m_flags; - -}; - - -#endif diff --git a/mozilla/lib/libmsg/thrlstst.cpp b/mozilla/lib/libmsg/thrlstst.cpp deleted file mode 100644 index 5fd90f11c52..00000000000 --- a/mozilla/lib/libmsg/thrlstst.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "thrlstst.h" -#include "msgdbvw.h" -#include "msgpane.h" -#include "msgfinfo.h" - -extern "C" -{ - extern int MK_MSG_LOADING_MESSAGES; -} - -MSG_ListThreadState::MSG_ListThreadState(MessageDBView *view, MSG_Pane *pane, XP_Bool getNewsMsgsAfterLoad, int32 totalHeaders) -{ - m_view = view; - m_pane = pane; - m_startKey = 0; - m_totalHeaders = totalHeaders; - m_headersListed = 0; - m_getNewsMsgsAfterLoad = getNewsMsgsAfterLoad; - XP_ASSERT(pane && view); -} - -MSG_ListThreadState::~MSG_ListThreadState() -{ -} - -int MSG_ListThreadState::DoSomeWork() -{ - const int kIdChunkSize = 200; - int numListed = 0; - MessageKey idArray[kIdChunkSize]; - int32 flagArray[kIdChunkSize]; - char levelArray[kIdChunkSize]; - SortType sortType; - SortOrder sortOrder; - m_view->GetDB()->GetSortInfo(&sortType, &sortOrder); - MsgERR err; - - err = m_view->GetDB()->ListThreadIds(&m_startKey, m_view->GetViewType() == ViewOnlyNewHeaders, idArray, - flagArray, levelArray, kIdChunkSize, &numListed, m_view, &m_headersListed); - if (err == eCorruptDB) - { - m_view->GetDB()->SetSummaryValid(FALSE); - err = eEXCEPTION; - } - -#ifndef XP_OS2_HACK - int32 percent = (int32) (100 * (double)m_headersListed / - (double) m_totalHeaders); -#else - int32 percent = 0; /*protect against m_totalHeaders == 0*/ - - if (m_totalHeaders != 0) - { - percent = (int32) (100 * (double)m_headersListed / - (double) m_totalHeaders); - } /* endif */ -#endif - FE_SetProgressBarPercent (m_pane->GetContext(), percent); - FE_Progress(m_pane->GetContext(), XP_GetString(MK_MSG_LOADING_MESSAGES)); - if (err == eSUCCESS) - { - int32 numAdded = m_view->AddKeys(idArray, flagArray, levelArray, sortType, numListed); -// if (pCount) -// *pCount += numAdded; - } - if (err != eSUCCESS || m_startKey == kIdNone) - { - m_view->InitSort(sortType, sortOrder); - return MK_CONNECTED; - } - else - return MK_WAITING_FOR_CONNECTION; -} - -XP_Bool MSG_ListThreadState::AllDone(int /* status */) -{ - // time to list the new news headers...perhaps should be a subclass - if (m_getNewsMsgsAfterLoad && m_pane && m_pane->GetFolder() && m_pane->GetFolder()->IsNews()) - m_pane->GetNewNewsMessages(m_pane, m_pane->GetFolder(), FALSE); - else if (m_pane->GetFolder() && m_pane->GetFolder()->IsMail()) - FE_PaneChanged(m_pane, TRUE, MSG_PaneNotifyFolderLoaded, (uint32) m_pane->GetFolder()); - - // Tell front end we're done. - m_pane->StartingUpdate(MSG_NotifyNone, 0, 0); - m_pane->EndingUpdate(MSG_NotifyNone, 0, 0); - return TRUE; -} - diff --git a/mozilla/lib/libmsg/thrlstst.h b/mozilla/lib/libmsg/thrlstst.h deleted file mode 100644 index 0f89e00395b..00000000000 --- a/mozilla/lib/libmsg/thrlstst.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// Thread List State Object -#include "msgbg.h" - -class MessageDBView; -class MSG_Pane; -class MSG_ListThreadState : public msg_Background -{ -public: - MSG_ListThreadState(MessageDBView *view, MSG_Pane *pane, XP_Bool getNewMsgsAfterLoad, int32 totalHeaders); - ~MSG_ListThreadState(); - virtual int DoSomeWork(); - virtual XP_Bool AllDone(int status); -protected: - MessageDBView *m_view; - MSG_Pane *m_pane; - MessageKey m_startKey; - int32 m_totalHeaders; - int32 m_headersListed; - XP_Bool m_getNewsMsgsAfterLoad; -}; diff --git a/mozilla/lib/libmsg/thrnewvw.cpp b/mozilla/lib/libmsg/thrnewvw.cpp deleted file mode 100644 index 69f7f98c992..00000000000 --- a/mozilla/lib/libmsg/thrnewvw.cpp +++ /dev/null @@ -1,256 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "dberror.h" -#include "thrnewvw.h" -#include "thrhead.h" -#include "msgfinfo.h" -#include "msgpane.h" -#include "maildb.h" -#include "grpinfo.h" -#include "msgimap.h" -#include "msgurlq.h" - -ThreadsWithNewView::ThreadsWithNewView(ViewType viewType) : ThreadDBView(viewType) -{ -} - -ThreadsWithNewView::~ThreadsWithNewView() -{ -} - -MsgERR ThreadsWithNewView::Open(MessageDB *messageDB, ViewType viewType, /*WORD viewFlags,*/ uint32* pCount, XP_Bool /*runInForeground = TRUE*/) -{ - MsgERR err; - if ((err = MessageDBView::Open(messageDB, viewType, pCount)) != eSUCCESS) - return err; - if (pCount) - *pCount = 0; - return Init(pCount); -} - -XP_Bool ThreadsWithNewView::WantsThisThread(DBThreadMessageHdr *threadHdr) -{ - return (threadHdr && threadHdr->GetNumNewChildren() > 0 - && (m_viewType != ViewWatchedThreadsWithNew || (threadHdr->GetFlags() & kWatched) != 0)); -} - - -// This view will initially be used for cacheless IMAP. -CachelessView::CachelessView(ViewType viewType) -{ - m_viewType = viewType; - m_viewFlags = kOutlineDisplay; - SetInitialSortState(); - m_folder = NULL; - m_master = NULL; - m_sizeInitialized = FALSE; -#ifdef DEBUG_bienvenu - SetViewSize(1); // start off with a size until we figure out how to hook up IMAP response to view. -#endif -} - -CachelessView::~CachelessView() -{ -} - -MsgERR CachelessView::Open(MessageDB *messageDB, ViewType viewType, /*WORD viewFlags,*/ uint32* pCount, XP_Bool runInForeground) -{ - MsgERR err; - if ((err = MessageDBView::Open(messageDB, viewType, pCount, runInForeground)) != eSUCCESS) - return err; - - if (pCount) - *pCount = 0; - return Init(pCount, runInForeground); -} - -MsgERR CachelessView::SetViewSize(int32 setSize) -{ - m_idArray.RemoveAll(); - // Initialize whole view as MSG_MESSAGEKEYNONE - m_idArray.InsertAt(0, MSG_MESSAGEKEYNONE, setSize); - m_flags.InsertAt(0, 0, setSize); - m_levels.InsertAt(0, 0, setSize); - return eSUCCESS; -} - -void CachelessView::ClearPendingIds() -{ - for (MSG_ViewIndex viewIndex = m_curStartSeq - 1; viewIndex < m_curEndSeq; viewIndex++) - { - if (GetAt(viewIndex) == kIdPending) - SetKeyByIndex(viewIndex, kIdNone); - } -} - -/*static*/ void CachelessView::ExitFunction (URL_Struct * /* URL_s */, int /* status */, MWContext *context) -{ - // need to remove kIdPending from view - MSG_Pane *pane = context->imapURLPane; - if (pane) - { - MessageDBView *view = pane->GetMsgView(); - if (view && view->GetViewType() == ViewCacheless) - { - CachelessView *cachelessView = (CachelessView *) view; - cachelessView->ClearPendingIds(); - } - } -} - -MsgERR CachelessView::ListShortMsgHdrByIndex(MSG_ViewIndex startIndex, int numToList, MSG_MessageLine *pOutput, int *pNumListed) -{ - MsgERR err = eSUCCESS; - - XP_BZERO(pOutput, sizeof(*pOutput) * numToList); - int i; - for (i = 0; i < numToList && err == eSUCCESS; i++) - { - (pOutput + i)->messageKey = MSG_MESSAGEKEYNONE; - if (i + startIndex < m_idArray.GetSize()) - { - MessageKey keyToList = m_idArray.GetAt(i + startIndex); - if (keyToList != kIdNone && keyToList != kIdPending) - { - err = m_messageDB->GetShortMessageHdr(m_idArray[i + startIndex], pOutput + i); - if (err == eSUCCESS) - { - char extraFlag = m_flags[i + startIndex]; - - CopyExtraFlagsToPublicFlags(extraFlag, &((pOutput + i)->flags)); - (pOutput + i)->level = 0; - } - } - else if (keyToList == kIdNone) - { - if (m_folder->GetType() == FOLDER_IMAPMAIL) - { - XPPtrArray panes; - MSG_IMAPFolderInfoMail *imapFolder = (MSG_IMAPFolderInfoMail *) m_folder; - m_curStartSeq = startIndex + 1; // imap sequence #'s seem to be 1 relative - m_curEndSeq = m_curStartSeq + MAX(10, numToList); - // What's a good chunk size to list? Try 10 for now, or numToList. - if (m_curStartSeq + 1 < m_idArray.GetSize()) - { - MessageKey nextKeyToList = m_idArray.GetAt(m_curStartSeq + 1); - if (nextKeyToList != kIdNone && nextKeyToList != kIdPending && m_curStartSeq > 0) - { - nextKeyToList = m_idArray.GetAt(startIndex - 1); - if (nextKeyToList == kIdNone) - { - MSG_ViewIndex tempStart = m_curStartSeq; - m_curStartSeq = m_curStartSeq - MIN(10, m_curStartSeq - 1); - m_curEndSeq = tempStart; - } - } - } - if (!m_sizeInitialized && imapFolder->GetMailboxSpec()->number_of_messages > 0) - { - SetViewSize(imapFolder->GetMailboxSpec()->number_of_messages); - m_sizeInitialized = TRUE; - } - m_master->FindPanesReferringToFolder (m_folder, &panes); - MSG_Pane *pane = (panes.GetSize() > 0) ? (MSG_Pane *) panes.GetAt(0) : (MSG_Pane *)NULL; - if (m_curEndSeq > GetSize()) - m_curEndSeq = GetSize(); - if (pane) - { - char *imapFolderURL = imapFolder->SetupHeaderFetchUrl(pane, GetDB(), m_curStartSeq, m_curEndSeq); - MSG_UrlQueue::AddUrlToPane(imapFolderURL, CachelessView::ExitFunction, pane, NET_SUPER_RELOAD); - FREEIF(imapFolderURL); - } - } - - } - } - } - if (pNumListed != NULL) - *pNumListed = i; - - return err; -} - -MsgERR CachelessView::AddNewMessages() -{ - return eSUCCESS; - -} - -MsgERR CachelessView::AddHdr(DBMessageHdr *msgHdr) -{ - char flags = 0; -#ifdef DEBUG_bienvenu - XP_ASSERT((int) m_idArray.GetSize() == m_flags.GetSize() && (int) m_idArray.GetSize() == m_levels.GetSize()); -#endif - CopyDBFlagsToExtraFlags(msgHdr->GetFlags(), &flags); - if (msgHdr->GetArticleNum() == msgHdr->GetThreadId()) - flags |= kIsThread; - // if unreadonly, level is 0 because we must be the only msg in the thread. - char levelToAdd = (m_viewFlags & kUnreadOnly) ? 0 : msgHdr->GetLevel(); - - m_idArray.Add(msgHdr->GetMessageKey()); - m_flags.Add(flags); - m_levels.Add(levelToAdd); - NoteChange(m_idArray.GetSize() - 1, 1, MSG_NotifyInsertOrDelete); - - OnHeaderAddedOrDeleted(); - return eSUCCESS; -} - - -// for news, xover line, potentially, for IMAP, imap line... -MsgERR CachelessView::AddHdrFromServerLine(char * /*line*/, MessageKey * /*msgId*/) -{ - return eSUCCESS; -} - -void CachelessView::SetInitialSortState(void) -{ - m_sortOrder = SortTypeAscending; - m_sortType = SortById; -} - -MsgERR CachelessView::Init(uint32 * /*pCount*/, XP_Bool /* runInForeground */ /* = TRUE */) -{ - MsgERR ret = eSUCCESS; - m_sortType = SortById; - - MailDB *mailDB = NULL; - - if (GetDB()) - mailDB = GetDB()->GetMailDB(); - - if (mailDB) - { - m_master = mailDB->GetMaster(); - if (m_master) - { - XPStringObj mailBoxName; - - mailDB->m_dbFolderInfo->GetMailboxName(mailBoxName); - m_folder = m_master->FindImapMailFolder(mailBoxName); - } - } - return ret; -} diff --git a/mozilla/lib/libmsg/thrnewvw.h b/mozilla/lib/libmsg/thrnewvw.h deleted file mode 100644 index 186d0c8b18b..00000000000 --- a/mozilla/lib/libmsg/thrnewvw.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef _THREADS_WITH_NEW_H -#define _THREADS_WITH_NEW_H - -#include "thrdbvw.h" - -class ThreadsWithNewView : public ThreadDBView -{ -public: - ThreadsWithNewView(ViewType viewType); - virtual ~ThreadsWithNewView(); - const char * GetViewName(void) {return "ThreadsWithNewView"; } - virtual MsgERR Open(MessageDB *messageDB, ViewType viewType, /*WORD viewFlags,*/ uint32* pCount, XP_Bool runInForeground = TRUE); - virtual XP_Bool WantsThisThread(DBThreadMessageHdr *threadHdr); -protected: - -}; - -// This view will initially be used for cacheless IMAP. -class CachelessView : public MessageDBView -{ -public: - CachelessView(ViewType viewType); - virtual ~CachelessView(); - const char * GetViewName(void) {return "CachelessView"; } - virtual MsgERR Open(MessageDB *messageDB, ViewType viewType, /*WORD viewFlags,*/ uint32* pCount, XP_Bool runInForeground = TRUE); - MsgERR ListShortMsgHdrByIndex(MSG_ViewIndex startIndex, int numToList, MSG_MessageLine *pOutput, int *pNumListed); - MsgERR SetViewSize(int32 setSize); // Override - virtual MsgERR AddNewMessages() ; - virtual MsgERR AddHdr(DBMessageHdr *msgHdr); - // for news, xover line, potentially, for IMAP, imap line... - virtual MsgERR AddHdrFromServerLine(char *line, MessageKey *msgId) ; - virtual void SetInitialSortState(void); - virtual MsgERR Init(uint32 *pCount, XP_Bool runInForeground /* = TRUE */); -protected: - static void ExitFunction (URL_Struct *URL_s, int status, MWContext *window_id); - void ClearPendingIds(); - - MSG_FolderInfo *m_folder; - MSG_Master *m_master; - MSG_ViewIndex m_curStartSeq; - MSG_ViewIndex m_curEndSeq; - XP_Bool m_sizeInitialized; -}; - -#endif diff --git a/mozilla/lib/libmsg/vwerror.h b/mozilla/lib/libmsg/vwerror.h deleted file mode 100644 index e52c077acdd..00000000000 --- a/mozilla/lib/libmsg/vwerror.h +++ /dev/null @@ -1,32 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* obsolete - should remove */ -// vwerror.h - -#ifndef VWERROR_H_ -#define VWERROR_H_ - -#include "errcode.h" - -MsgError (msgErrorVw, eInvalidViewType, 0xFFF0) /* -16 invalid view type */ -MsgError (msgErrorVw, eInvalidIndex, 0xFFF1) /* -15 invalid view index */ -#endif diff --git a/mozilla/lib/libparse/MANIFEST b/mozilla/lib/libparse/MANIFEST deleted file mode 100644 index f946b8d56a7..00000000000 --- a/mozilla/lib/libparse/MANIFEST +++ /dev/null @@ -1,7 +0,0 @@ -# -# This is a list of local files which get copied to the mozilla:dist directory -# - -pa_parse.h -pa_tags.h -pa_amp.h diff --git a/mozilla/lib/libparse/Makefile b/mozilla/lib/libparse/Makefile deleted file mode 100644 index 369952f1025..00000000000 --- a/mozilla/lib/libparse/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - -DEPTH = ../.. - -MODULE = parse -LIBRARY_NAME = parse - -CSRCS = pa_amp.c pa_hash.c pa_hook.c pa_mdl.c pa_parse.c - -EXPORTS = pa_parse.h pa_tags.h pa_amp.h - -REQUIRES = nspr dbm img util layer js hook lay style - -include $(DEPTH)/config/rules.mk - -# XXX this should actually be "pa_hash.c pa_hash.rmap:" and be in the GARBAGE -# XXX list and so on, but we don't have perl everywhere yet... -# -# XXX also, should share string constants between pa_hash.c and pa_hash.rmap - -hash: pa_tags.h gentab.pl pa_hash.template - @echo Generating pa_hash.c from pa_tags.h and pa_hash.template - @rm -f pa_hash.c - @./gentab.pl > pa_hash.c diff --git a/mozilla/lib/libparse/Makefile.in b/mozilla/lib/libparse/Makefile.in deleted file mode 100644 index c720b914df2..00000000000 --- a/mozilla/lib/libparse/Makefile.in +++ /dev/null @@ -1,50 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - -DEPTH = ../.. -topsrcdir = @top_srcdir@ -VPATH = @srcdir@ -srcdir = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = parse -LIBRARY_NAME = parse - -CSRCS = pa_amp.c pa_hash.c pa_hook.c pa_mdl.c pa_parse.c - -EXPORTS = pa_parse.h pa_tags.h pa_amp.h - -EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) - -REQUIRES = dbm img util layer js hook lay style - -include $(topsrcdir)/config/rules.mk - -# XXX this should actually be "pa_hash.c pa_hash.rmap:" and be in the GARBAGE -# XXX list and so on, but we don't have perl everywhere yet... -# -# XXX also, should share string constants between pa_hash.c and pa_hash.rmap - -hash: pa_tags.h gentab.pl pa_hash.template - @echo Generating pa_hash.c from pa_tags.h and pa_hash.template - @rm -f pa_hash.c - @$(srcdir)/gentab.pl > pa_hash.c diff --git a/mozilla/lib/libparse/gentab.pl b/mozilla/lib/libparse/gentab.pl deleted file mode 100755 index 9806a98182e..00000000000 --- a/mozilla/lib/libparse/gentab.pl +++ /dev/null @@ -1,92 +0,0 @@ -#! /usr/local/bin/perl -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - -# -open(PA_TAGS, "<pa_tags.h"); -open(HASH, "|/usr/local/bin/gperf -T -t -l -Npa_LookupTag -p -k1,\$,2,3 > gperf.out.$$"); -print HASH 'struct pa_TagTable { char *name; int id; }; -%% -'; - -open(RMAP, ">pa_hash.rmap"); -$nextval = 0; - -while (<PA_TAGS>) { - if (/^#[ ]*define[ ]([A-Z_][A-Z0-9_]+)[ ]*(.*)/) { - $var = $1; - $val = $2; - $val =~ s/"//g; - $pre = $var; - $pre =~ s/_.*//; - $post = $var; - $post =~ s/$pre//; - $post =~ s/_//; - if ($pre eq "PT") { - $strings{$post} = $val; - } elsif ($pre eq "P") { - if ($strings{$post} ne "") { - print HASH $strings{$post} . ", $var\n"; - } - if ($var ne "P_UNKNOWN" && $var ne "P_MAX") { - while ($nextval < $val) { - print RMAP "/* $nextval */\t\"\",\n"; - $nextval++; - } - $newval = $strings{$post}; - $newval =~ tr/a-z/A-Z/; - print RMAP "/*$val*/\t\"$newval\",\n"; - $nextval = $val + 1; - } - } - } -} -close(PA_TAGS); -close(HASH); -close(RMAP); -open(C, "<gperf.out.$$"); -unlink("gperf.out.$$"); -open(T, "<pa_hash.template"); - -while (<T>) { - if (/^@begin/) { - ($name, $start, $end) = - m#@begin[ ]*([A-Za-z0-9_]+)[ ]*/([^/]*)/[ ]*/([^/]*)/#; - $line = <C> until (eof(C) || $line =~ /$start/); - if ($line =~ /$start/) { - $template{$name} .= $line; - do { - $line = <C>; - $template{$name} .= $line; - } until ($line =~ /$end/ || eof(C)); - } - } elsif (/^@include/) { - ($name) = /@include[ ]*(.*)$/; - print $template{$name}; - } elsif (/^@sub/) { - ($name, $old, $new) = - m#@sub[ ]*([A-Za-z0-9_]*)[ ]/([^/]*)/([^/]*)/#; - $template{$name} =~ s/$old/$new/g; - } elsif (/^@/) { - ; - } else { - print $_; - } -} diff --git a/mozilla/lib/libparse/makefile.win b/mozilla/lib/libparse/makefile.win deleted file mode 100644 index 07d09562cfa..00000000000 --- a/mozilla/lib/libparse/makefile.win +++ /dev/null @@ -1,62 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - -IGNORE_MANIFEST=1 - -DEPTH = ..\.. - -MODULE = parse - -#//------------------------------------------------------------------------ -#// All public win16 headers go to a single directory -#// due to compiler limitations. -#//------------------------------------------------------------------------ -!if "$(MOZ_BITS)" == "16" -MODULE=win16 -!endif # 16 - -EXPORTS = pa_parse.h pa_tags.h pa_amp.h - -include <$(DEPTH)/config/config.mak> - -!if defined(EXPORTS) -export:: $(XPDIST)\public\$(MODULE) - for %f in ($(EXPORTS)) do $(MAKE_INSTALL:/=\) %f $(XPDIST:/=\)\public\$(MODULE:/=\) - -$(XPDIST)\public\$(MODULE): - mkdir $(XPDIST)\public\$(MODULE) - -depend: - -libs: - -install: - -clean: clobber - -clobber_all: clobber - -clobber:: - -for %g in ($(EXPORTS)) do $(RM) $(XPDIST:/=\)\public\$(MODULE:/=\)\%g -!endif # EXPORTS - - diff --git a/mozilla/lib/libparse/pa_amp.c b/mozilla/lib/libparse/pa_amp.c deleted file mode 100644 index 37aa8c0eaea..00000000000 --- a/mozilla/lib/libparse/pa_amp.c +++ /dev/null @@ -1,1093 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "pa_parse.h" -#include <stdio.h> - -#include "libi18n.h" - -#ifdef PROFILE -#pragma profile on -#endif -#define PA_REMAP_128_TO_160_ILLEGAL_NCR 1 - -#define NOT_USED 0xfffd -static uint16 PA_HackTable[] = { - NOT_USED, - NOT_USED, - 0x201a, /* SINGLE LOW-9 QUOTATION MARK */ - 0x0192, /* LATIN SMALL LETTER F WITH HOOK */ - 0x201e, /* DOUBLE LOW-9 QUOTATION MARK */ - 0x2026, /* HORIZONTAL ELLIPSIS */ - 0x2020, /* DAGGER */ - 0x2021, /* DOUBLE DAGGER */ - 0x02c6, /* MODIFIER LETTER CIRCUMFLEX ACCENT */ - 0x2030, /* PER MILLE SIGN */ - 0x0160, /* LATIN CAPITAL LETTER S WITH CARON */ - 0x2039, /* SINGLE LEFT-POINTING ANGLE QUOTATION MARK */ - 0x0152, /* LATIN CAPITAL LIGATURE OE */ - NOT_USED, - NOT_USED, - NOT_USED, - NOT_USED, - 0x2018, /* LEFT SINGLE QUOTATION MARK */ - 0x2019, /* RIGHT SINGLE QUOTATION MARK */ - 0x201c, /* LEFT DOUBLE QUOTATION MARK */ - 0x201d, /* RIGHT DOUBLE QUOTATION MARK */ - 0x2022, /* BULLET */ - 0x2013, /* EN DASH */ - 0x2014, /* EM DASH */ - 0x02dc, /* SMALL TILDE */ - 0x2122, /* TRADE MARK SIGN */ - 0x0161, /* LATIN SMALL LETTER S WITH CARON */ - 0x203a, /* SINGLE RIGHT-POINTING ANGLE QUOTATION MARK */ - 0x0153, /* LATIN SMALL LIGATURE OE */ - NOT_USED, - NOT_USED, - 0x0178 /* LATIN CAPITAL LETTER Y WITH DIAERESIS */ -}; - - -typedef struct PA_N2U_struct { - char* NE; /* Name Entity, "copy" */ - intn len; /* 4, the length of NE */ - int16 unicode; /* 0x00a4 */ -} PA_N2U; /* Name->Unicode */ - -/* NE LEN UNICODE */ -static PA_N2U PA_Name2Unicode[] = { - {"quot", 4, 0x0022 }, - {"QUOT", 4, 0x0022 }, - {"amp", 3, 0x0026 }, - {"AMP", 3, 0x0026 }, - {"lt", 2, 0x003c }, - {"LT", 2, 0x003c }, - {"gt", 2, 0x003e }, - {"GT", 2, 0x003e }, - {"nbsp", 4, 0x00a0 }, - {"iexcl", 5, 0x00a1 }, - {"cent", 4, 0x00a2 }, - {"pound", 5, 0x00a3 }, - {"curren", 6, 0x00a4 }, - {"yen", 3, 0x00a5 }, - {"brvbar", 6, 0x00a6 }, - {"sect", 4, 0x00a7 }, - {"uml", 3, 0x00a8 }, - {"copy", 4, 0x00a9 }, - {"COPY", 4, 0x00a9 }, - {"ordf", 4, 0x00aa }, - {"laquo", 5, 0x00ab }, - {"not", 3, 0x00ac }, - {"shy", 3, 0x00ad }, - {"reg", 3, 0x00ae }, - {"REG", 3, 0x00ae }, - {"macr", 4, 0x00af }, - {"deg", 3, 0x00b0 }, - {"plusmn", 6, 0x00b1 }, - {"sup2", 4, 0x00b2 }, - {"sup3", 4, 0x00b3 }, - {"acute", 5, 0x00b4 }, - {"micro", 5, 0x00b5 }, - {"para", 4, 0x00b6 }, - {"middot", 6, 0x00b7 }, - {"cedil", 5, 0x00b8 }, - {"sup1", 4, 0x00b9 }, - {"ordm", 4, 0x00ba }, - {"raquo", 5, 0x00bb }, - {"frac14", 6, 0x00bc }, - {"frac12", 6, 0x00bd }, - {"frac34", 6, 0x00be }, - {"iquest", 6, 0x00bf }, - {"Agrave", 6, 0x00c0 }, - {"Aacute", 6, 0x00c1 }, - {"Acirc", 5, 0x00c2 }, - {"Atilde", 6, 0x00c3 }, - {"Auml", 4, 0x00c4 }, - {"Aring", 5, 0x00c5 }, - {"AElig", 5, 0x00c6 }, - {"Ccedil", 6, 0x00c7 }, - {"Egrave", 6, 0x00c8 }, - {"Eacute", 6, 0x00c9 }, - {"Ecirc", 5, 0x00ca }, - {"Euml", 4, 0x00cb }, - {"Igrave", 6, 0x00cc }, - {"Iacute", 6, 0x00cd }, - {"Icirc", 5, 0x00ce }, - {"Iuml", 4, 0x00cf }, - {"ETH", 3, 0x00d0 }, - {"Ntilde", 6, 0x00d1 }, - {"Ograve", 6, 0x00d2 }, - {"Oacute", 6, 0x00d3 }, - {"Ocirc", 5, 0x00d4 }, - {"Otilde", 6, 0x00d5 }, - {"Ouml", 4, 0x00d6 }, - {"times", 5, 0x00d7 }, - {"Oslash", 6, 0x00d8 }, - {"Ugrave", 6, 0x00d9 }, - {"Uacute", 6, 0x00da }, - {"Ucirc", 5, 0x00db }, - {"Uuml", 4, 0x00dc }, - {"Yacute", 6, 0x00dd }, - {"THORN", 5, 0x00de }, - {"szlig", 5, 0x00df }, - {"agrave", 6, 0x00e0 }, - {"aacute", 6, 0x00e1 }, - {"acirc", 5, 0x00e2 }, - {"atilde", 6, 0x00e3 }, - {"auml", 4, 0x00e4 }, - {"aring", 5, 0x00e5 }, - {"aelig", 5, 0x00e6 }, - {"ccedil", 6, 0x00e7 }, - {"egrave", 6, 0x00e8 }, - {"eacute", 6, 0x00e9 }, - {"ecirc", 5, 0x00ea }, - {"euml", 4, 0x00eb }, - {"igrave", 6, 0x00ec }, - {"iacute", 6, 0x00ed }, - {"icirc", 5, 0x00ee }, - {"iuml", 4, 0x00ef }, - {"eth", 3, 0x00f0 }, - {"ntilde", 6, 0x00f1 }, - {"ograve", 6, 0x00f2 }, - {"oacute", 6, 0x00f3 }, - {"ocirc", 5, 0x00f4 }, - {"otilde", 6, 0x00f5 }, - {"ouml", 4, 0x00f6 }, - {"divide", 6, 0x00f7 }, - {"oslash", 6, 0x00f8 }, - {"ugrave", 6, 0x00f9 }, - {"uacute", 6, 0x00fa }, - {"ucirc", 5, 0x00fb }, - {"uuml", 4, 0x00fc }, - {"yacute", 6, 0x00fd }, - {"thorn", 5, 0x00fe }, - {"yuml", 4, 0x00ff }, - {"OElig", 5, 0x0152 }, - {"oelig", 5, 0x0153 }, - {"Scaron", 6, 0x0160 }, - {"scaron", 6, 0x0161 }, - {"Yuml", 4, 0x0178 }, - {"fnof", 4, 0x0192 }, - {"circ", 4, 0x02c6 }, - {"tilde", 5, 0x02dc }, - {"Alpha", 5, 0x0391 }, - {"Beta", 4, 0x0392 }, - {"Gamma", 5, 0x0393 }, - {"Delta", 5, 0x0394 }, - {"Epsilon", 7, 0x0395 }, - {"Zeta", 4, 0x0396 }, - {"Eta", 3, 0x0397 }, - {"Theta", 5, 0x0398 }, - {"Iota", 4, 0x0399 }, - {"Kappa", 5, 0x039a }, - {"Lambda", 6, 0x039b }, - {"Mu", 2, 0x039c }, - {"Nu", 2, 0x039d }, - {"Xi", 2, 0x039e }, - {"Omicron", 7, 0x039f }, - {"Pi", 2, 0x03a0 }, - {"Rho", 3, 0x03a1 }, - {"Sigma", 5, 0x03a3 }, - {"Tau", 3, 0x03a4 }, - {"Upsilon", 7, 0x03a5 }, - {"Phi", 3, 0x03a6 }, - {"Chi", 3, 0x03a7 }, - {"Psi", 3, 0x03a8 }, - {"Omega", 5, 0x03a9 }, - {"alpha", 5, 0x03b1 }, - {"beta", 4, 0x03b2 }, - {"gamma", 5, 0x03b3 }, - {"delta", 5, 0x03b4 }, - {"epsilon", 7, 0x03b5 }, - {"zeta", 4, 0x03b6 }, - {"eta", 3, 0x03b7 }, - {"theta", 5, 0x03b8 }, - {"iota", 4, 0x03b9 }, - {"kappa", 5, 0x03ba }, - {"lambda", 6, 0x03bb }, - {"mu", 2, 0x03bc }, - {"nu", 2, 0x03bd }, - {"xi", 2, 0x03be }, - {"omicron", 7, 0x03bf }, - {"pi", 2, 0x03c0 }, - {"rho", 3, 0x03c1 }, - {"sigmaf", 6, 0x03c2 }, - {"sigma", 5, 0x03c3 }, - {"tau", 3, 0x03c4 }, - {"upsilon", 7, 0x03c5 }, - {"phi", 3, 0x03c6 }, - {"chi", 3, 0x03c7 }, - {"psi", 3, 0x03c8 }, - {"omega", 5, 0x03c9 }, - {"thetasym", 8, 0x03d1 }, - {"upsih", 5, 0x03d2 }, - {"piv", 3, 0x03d6 }, - {"ensp", 4, 0x2002 }, - {"emsp", 4, 0x2003 }, - {"thinsp", 6, 0x2009 }, - {"zwnj", 4, 0x200c }, - {"zwj", 3, 0x200d }, - {"lrm", 3, 0x200e }, - {"rlm", 3, 0x200f }, - {"ndash", 5, 0x2013 }, - {"mdash", 5, 0x2014 }, - {"lsquo", 5, 0x2018 }, - {"rsquo", 5, 0x2019 }, - {"sbquo", 5, 0x201a }, - {"ldquo", 5, 0x201c }, - {"rdquo", 5, 0x201d }, - {"bdquo", 5, 0x201e }, - {"dagger", 6, 0x2020 }, - {"Dagger", 6, 0x2021 }, - {"bull", 4, 0x2022 }, - {"hellip", 6, 0x2026 }, - {"permil", 6, 0x2030 }, - {"prime", 5, 0x2032 }, - {"Prime", 5, 0x2033 }, - {"lsaquo", 6, 0x2039 }, - {"rsaquo", 6, 0x203a }, - {"oline", 5, 0x203e }, - {"frasl", 5, 0x2044 }, - {"euro", 4, 0x20ac }, - {"image", 5, 0x2111 }, - {"weierp", 6, 0x2118 }, - {"real", 4, 0x211c }, - {"trade", 5, 0x2122 }, - {"alefsym", 7, 0x2135 }, - {"larr", 4, 0x2190 }, - {"uarr", 4, 0x2191 }, - {"rarr", 4, 0x2192 }, - {"darr", 4, 0x2193 }, - {"harr", 4, 0x2194 }, - {"crarr", 5, 0x21b5 }, - {"lArr", 4, 0x21d0 }, - {"uArr", 4, 0x21d1 }, - {"rArr", 4, 0x21d2 }, - {"dArr", 4, 0x21d3 }, - {"hArr", 4, 0x21d4 }, - {"forall", 6, 0x2200 }, - {"part", 4, 0x2202 }, - {"exist", 5, 0x2203 }, - {"empty", 5, 0x2205 }, - {"nabla", 5, 0x2207 }, - {"isin", 4, 0x2208 }, - {"notin", 5, 0x2209 }, - {"ni", 2, 0x220b }, - {"prod", 4, 0x220f }, - {"sum", 3, 0x2211 }, - {"minus", 5, 0x2212 }, - {"lowast", 6, 0x2217 }, - {"radic", 5, 0x221a }, - {"prop", 4, 0x221d }, - {"infin", 5, 0x221e }, - {"ang", 3, 0x2220 }, - {"and", 3, 0x2227 }, - {"or", 2, 0x2228 }, - {"cap", 3, 0x2229 }, - {"cup", 3, 0x222a }, - {"int", 3, 0x222b }, - {"there4", 6, 0x2234 }, - {"sim", 3, 0x223c }, - {"cong", 4, 0x2245 }, - {"asymp", 5, 0x2248 }, - {"ne", 2, 0x2260 }, - {"equiv", 5, 0x2261 }, - {"le", 2, 0x2264 }, - {"ge", 2, 0x2265 }, - {"sub", 3, 0x2282 }, - {"sup", 3, 0x2283 }, - {"nsub", 4, 0x2284 }, - {"sube", 4, 0x2286 }, - {"supe", 4, 0x2287 }, - {"oplus", 5, 0x2295 }, - {"otimes", 6, 0x2297 }, - {"perp", 4, 0x22a5 }, - {"sdot", 4, 0x22c5 }, - {"lceil", 5, 0x2308 }, - {"rceil", 5, 0x2309 }, - {"lfloor", 6, 0x230a }, - {"rfloor", 6, 0x230b }, - {"lang", 4, 0x2329 }, - {"rang", 4, 0x232a }, - {"loz", 3, 0x25ca }, - {"spades", 6, 0x2660 }, - {"clubs", 5, 0x2663 }, - {"hearts", 6, 0x2665 }, - {"diams", 5, 0x2666 }, - - {NULL, 0, 0x0000 }, -}; - - -uint16 -pa_NumericCharacterReference(unsigned char *in, uint32 inlen, uint32 *inread, - Bool force ) -{ - unsigned char b; - uint32 i; - uint32 ncr; - - - for( i = 0; i < inlen; i++ ){ - b = in[i]; - if ((b < '0') || (b > '9')) break; - } - - if( i == 0 ){ - *inread = 0; - return '?'; - } - - if( (i >= inlen) && (!force) ){ - *inread = (inlen + 1); - return '?'; - } - inlen = i; - - ncr = 0; - for (i = 0; i < inlen; i++){ - ncr = 10 * ncr + ( in[i] - '0' ); - } - *inread = i; - - /* if it is an illegal NCR, then place the '?' instead of, - if it is an illegal NE, then treat is as plain text */ - if( ncr & 0xffff0000 ) return '?'; - - return (uint16)ncr; -} - - - -/************************************* - * Function: pa_map_escape - * - * Description: This function maps the passed in amperstand - * escape sequence to a single 8 bit char (ISO 8859-1). - * - * Params: Takes a buffer, and a length for that buffer. (buf is NOT - * a \0 terminated string). Also takes a pointer to an escape length - * which is home much of the original buffer was used. - * And an out buffer, and it's outbuflen. - * - * Returns: On error, which means it was not passed - * a valid amperstand escape sequence, it stores the - * char value '\0' in "out". It also returns the length of - * the part of the passed buffer that was replaced. - * Also, the number of bytes written to the out buffer (outlen). - *************************************/ -static void -pa_map_escape(char *buf, int32 len, int32 *esc_len, unsigned char *out, - uint16 outbuflen, uint16 *outlen, Bool force, uint16 win_csid) -{ - uint16 unicode; - char val; - int32 cnt; - - *esc_len = 0; - val = 0; - - /* Navigator View->source does not support Unicode yet */ - if( win_csid == 0 ) win_csid = CS_FE_ASCII; - - /* - * Skip the amperstand character at the start. - */ - buf++; - len--; - - /* - * Ampersand followed by number sign specifies the decimal - * value of the character to be placed here. - */ - if (*buf == '#') - { - unicode = pa_NumericCharacterReference((unsigned char *) (buf + 1), - (uint32) (len - 1), (uint32 *) esc_len, force ); - *esc_len += 1; - -#ifdef PA_REMAP_128_TO_160_ILLEGAL_NCR - /* for some illegal, but popular usage */ - if( unicode >= 0x0080 && unicode <= 0x009f ) - unicode = PA_HackTable[ unicode - 0x0080 ]; -#endif - } - /* - * Else we have to look this escape up in - * the array of valid escapes. - */ - else - { - /* - * Else we have to look this escape up in - * the array of valid escapes. - * Since we are searching on the PA_Name2Unicode[].NE string, - * and not on the escape entered, this lets us partial - * match if PA_Name2Unicode[].NE matches a prefix of the escape. - * This means no one PA_Name2Unicode[].NE should be a prefix - * of any other PA_Name2Unicode[].NE. - */ - cnt = 0; - while( PA_Name2Unicode[cnt].NE != NULL ) - { - if (*buf == *(PA_Name2Unicode[cnt].NE) - && (XP_STRNCMP(buf+1, PA_Name2Unicode[cnt].NE+1, - PA_Name2Unicode[cnt].len-1) == 0)) - { - /* - * Only match a prefix if the next - * character is NOT an alphanumeric - */ - /* - * The following bug have been related to the following line - * bug 241429, 57959, 33262, 57912 if you work on this. - * After we add HTML 4.0 entity table we change the algorithm to prevent - * &part= be treat as name entity. - * The algorithm is as following: - * If the unicode value is in the Latin 1 range - * We mantain the SGML compliant - * otherwise - * We only treat it as name entity if it start from & and end with a ; - */ - if(((PA_Name2Unicode[cnt].unicode <= 256) && - (!XP_IS_ALPHA(*(buf + PA_Name2Unicode[cnt].len))) && - (!XP_IS_DIGIT(*(buf + PA_Name2Unicode[cnt].len))) - ) || (';' == (*(buf + PA_Name2Unicode[cnt].len))) - ) - { - unicode = PA_Name2Unicode[cnt].unicode; - *esc_len = PA_Name2Unicode[cnt].len; - break; - } - } - cnt++; - } - - /* - * for invalid escapes, return '\0' - */ - if( PA_Name2Unicode[cnt].NE == NULL ) - unicode = NOT_USED; /* treated as plain text, just for NE */ - } - - - if( unicode == NOT_USED ) - { - out[0] = 0; - return; - } - - - /* if( outbuflen >= INTL_UnicodeToStrLen( win_csid, &unicode, 1 ) ) - I needn't to do that, for the outbuflen is always larget than outlen , - the result of generated "out" through NE/NCR is one byte or two bytes */ - INTL_UnicodeToStr( win_csid, &unicode, 1, out, outbuflen ); - - /* Remap NBSP to international version */ - /* We need to do this in any case */ - if(unicode == 0x00a0) - { - strcpy((char*)out, INTL_NonBreakingSpace(win_csid)); - } - - *outlen = XP_STRLEN((char*) out ); - - /* Do fallback for Copyright, Tradmark and Register Sign */ - /* We try those non-standard secret platform specific */ - /* codepoint first. */ - /* If there are no such, do an ASCII fallback */ - if((*outlen == 1) && (*out == '?')) - { - char* r = NULL; -#if defined(XP_WIN) || defined(XP_OS2) - /* - For Winodows - All the CP 125x single byte pages encode - Copyright Signed as A9 - Register Signed as AE - Tradmark Signed as 99 - Two Byte Asian Font do not have those sign - - */ - switch(unicode) - { - case 0x20AC: - r = "EUR"; - break; - case 0x00A9: - switch(win_csid) - { - case CS_LATIN1: case CS_CP_1250: - case CS_CP_1251: case CS_CP_1253: - case CS_CP_1254: case CS_8859_7: - case CS_8859_9: - r = "\xa9"; - break; - default: - r = "(C)"; - break; - } - break; - case 0x00AE: - switch(win_csid) - { - case CS_LATIN1: case CS_CP_1250: - case CS_CP_1251: case CS_CP_1253: - case CS_CP_1254: case CS_8859_7: - case CS_8859_9: - r = "\xae"; - break; - default: - r = "(R)"; - break; - } - break; - case 0x2122: - switch(win_csid) - { - case CS_LATIN1: case CS_CP_1250: - case CS_CP_1251: case CS_CP_1253: - case CS_CP_1254: case CS_8859_7: - case CS_8859_9: - r = "\x99"; - break; - default: - r = "[tm]"; - break; - } - break; - } -#endif -#ifdef XP_MAC - /* - For Mac: - Japanese and Chinese font usually have secret glyph - Copyright Signed at 0xfd - Tradmark Signed at 0xff - - */ - switch(unicode) - { - case 0x20AC: - r = "EUR"; - break; - case 0x00AD: - r = "-"; - break; - case 0x00A9: - switch(win_csid) - { - case CS_MAC_ROMAN: - case CS_MAC_GREEK: - r = "\xd9"; - break; - case CS_MAC_CE: - case CS_MAC_CYRILLIC: - r = "\xa9"; - break; - case CS_KSC_8BIT: - r = "\x93"; - break; - case CS_SJIS: - case CS_GB_8BIT: - case CS_CNS_8BIT: - r = "\xfd"; - break; - case CS_TIS620: - r = "\xfb"; - break; - default: - r = "(C)"; - break; - } - break; - case 0x00AE: - switch(win_csid) - { - case CS_MAC_ROMAN: - case CS_MAC_GREEK: - case CS_MAC_CE: - case CS_MAC_CYRILLIC: - r = "\xa8"; - break; - case CS_TIS620: - r = "\xfa"; - break; - default: - r = "(R)"; - break; - } - break; - case 0x2122: - switch(win_csid) - { - case CS_MAC_ROMAN: - case CS_MAC_GREEK: - case CS_MAC_CE: - case CS_MAC_CYRILLIC: - r = "\xaa"; - break; - case CS_SJIS: - case CS_GB_8BIT: - case CS_CNS_8BIT: - r = "\xfe"; - break; - case CS_TIS620: - r = "\xee"; - break; - default: - r = "[tm]"; break; - } - break; - } -#endif - -#ifdef XP_UNIX - switch(unicode) - { - case 0x20AC: - r = "EUR"; - break; - case 0x00A9: - switch(win_csid) - { - default: - r = "(C)"; - break; - } - break; - case 0x00AE: - switch(win_csid) - { - default: - r = "(R)"; - break; - } - break; - case 0x0152: - switch(win_csid) - { - default: - r = "OE"; - break; - } - break; - case 0x0153: - switch(win_csid) - { - default: - r = "oe"; - break; - } - break; - case 0x0160: - switch(win_csid) - { - default: - r = "S"; - break; - } - break; - case 0x0161: - switch(win_csid) - { - default: - r = "s"; - break; - } - break; - case 0x0178: - switch(win_csid) - { - default: - r = "Y"; - break; - } - break; - case 0x0192: - switch(win_csid) - { - default: - r = "f"; - break; - } - break; - case 0x02C6: - switch(win_csid) - { - default: - r = "^"; - break; - } - break; - case 0x02DC: - switch(win_csid) - { - default: - r = "~"; - break; - } - break; - case 0x2013: - switch(win_csid) - { - default: - r = "-"; - break; - } - break; - case 0x2014: - switch(win_csid) - { - default: - r = "-"; - break; - } - break; - case 0x2018: - switch(win_csid) - { - default: - r = "`"; - break; - } - break; - case 0x2019: - switch(win_csid) - { - default: - r = "'"; - break; - } - break; - case 0x201C: - switch(win_csid) - { - default: - r = "\""; - break; - } - break; - case 0x201D: - switch(win_csid) - { - default: - r = "\""; - break; - } - break; - case 0x201A: - switch(win_csid) - { - default: - r = ","; - break; - } - break; - case 0x201E: - switch(win_csid) - { - default: - r = ",,"; - break; - } - break; - case 0x2022: - switch(win_csid) - { - default: - r = "*"; - break; - } - break; - case 0x2026: - switch(win_csid) - { - default: - r = "..."; - break; - } - break; - case 0x2039: - switch(win_csid) - { - default: - r = "<"; - break; - } - break; - case 0x203A: - switch(win_csid) - { - default: - r = ">"; - break; - } - break; - case 0x2122: - switch(win_csid) - { - default: - r = "[tm]"; - break; - } - break; - } -#endif - if(r != NULL ) - { - strcpy((char*)out, r); - *outlen = XP_STRLEN((char*)out); - } - } -} - - -/************************************* - * Function: pa_ExpandEscapes - * - * Description: Go through the passed in buffer of text, find and replace - * all amperstand escape sequences with their character - * equivilants. The buffer is modified in place, - * each escape replacement shortens the contents of the - * buffer. - * - * Params: Takes a buffer, and a length for that buffer. (buf is NOT - * a \0 terminated string). Also takes a pointer to a new length. - * This is the new (possibly shorter) length of the buffer - * after the escapes have been replaced. Finally takes a boolean - * that specifies whether partial escapes are allowed or not. - * - * Returns: The new length of the string in the nlen parameter. Also - * returns a NULL character pointer on success. - * If the buffer passed contained a possibly truncated - * amperstand escape, that is considered a partial success. - * Escapes are replace in all the buffer up to the truncated - * escape, nlen is the length of the new sub-buffer, and - * the return code is a pointer to the begining of the truncated - * escape in the original buffer. - *************************************/ - -char * -pa_ExpandEscapes(char *buf, int32 len, int32 *nlen, Bool force, int16 win_csid) -{ - int32 cnt; - char *from_ptr; - char *to_ptr; - unsigned char out[10]; - uint16 outlen; - unsigned char *p; - - *nlen = 0; - - /* - * A NULL buffer translates to a NULL buffer. - */ - if (buf == NULL) - { - return(NULL); - } - - /* - * Look through the passed buf for the beginning of amperstand - * escapes. They begin with an amperstand followed by a letter - * or a number sign. - */ - from_ptr = buf; - to_ptr = buf; - cnt = 0; - while (cnt < len) - { - char *tptr2; - int32 cnt2; - int32 esc_len; - - if (*from_ptr == '&') - { - /* - * If this is the last character in the string - * we don't know if it is an amperstand escape yet - * or not. We want to save it until the next buffer - * to make sure. However, if force is true this - * can't be a partial escape, so asuume an error - * and cope as best you can. - */ - if ((cnt + 1) == len) - { - if (force != FALSE) - { - *to_ptr++ = *from_ptr++; - cnt++; - continue; - } - /* - * This might be a partial amperstand escape. - * we will have to wait until we have - * more data. Break the while loop - * here. - */ - break; - } - /* - * else is the next character is a letter or - * a '#' , this should be some kind of amperstand - * escape. - */ - else if ((XP_IS_ALPHA(*(from_ptr + 1)))|| - (*(from_ptr + 1) == '#')) - { - /* - * This is an amperstand escape! Drop - * through to the rest of the while loop. - */ - } - /* - * else this character does not begin an - * amperstand escape increment pointer, and go - * back to the start of the while loop. - */ - else - { - *to_ptr++ = *from_ptr++; - cnt++; - continue; - } - } - /* - * else this character does not begin an amperstand escape - * increment pointer, and go back to the start of the - * while loop. - */ - else - { - *to_ptr++ = *from_ptr++; - cnt++; - continue; - } - - /* - * If we got here, it is because we think we have - * an amperstand escape. Amperstand escapes are of arbitrary - * length, terminated by either a semi-colon, or white space. - * - * Find the end of the amperstand escape. - */ - tptr2 = from_ptr; - cnt2 = cnt; - while (cnt2 < len) - { - if ((*tptr2 == ';')||(XP_IS_SPACE(*tptr2))) - { - break; - } - tptr2++; - cnt2++; - } - /* - * We may have failed to find the end because this is - * only a partial amperstand escape. However, if force is - * true this can't be a partial escape, so asuume and error - * and cope as best you can. - */ - if ((cnt2 == len)&&(force == FALSE)) - { - /* - * This might be a partial amperstand escape. - * we will have to wait until we have - * more data. Break the while loop - * here. - */ - break; - } - - esc_len = 0; - pa_map_escape(from_ptr, (intn)(tptr2 - from_ptr + 1), - &esc_len, out, sizeof(out), &outlen, force, win_csid); - if (esc_len > (tptr2 - from_ptr + 1)) - { - /* - * This is a partial numeric char ref. - */ - break; - } - /* - * invalid escape sequences return the end of string - * character. Treat this not as an amperstand escape, but as - * normal text. - */ - if (out[0] == '\0') - { - *to_ptr++ = *from_ptr++; - cnt++; - continue; - } - - /* - * valid escape sequences are replaced in place, with the - * rest of the buffer copied forward. For improper escape - * sequences that we think we can recover from, we may have - * just used part of the beginning of the escape sequence. - */ - p = out; - while (outlen--) - { - *to_ptr++ = *p++; - } - tptr2 = (char *)(from_ptr + esc_len + 1); - cnt2 = cnt + esc_len + 1; - - /* - * for semi-colon terminated escapes, eat the semi-colon. - * The test on cnt2 prevents up walking off the end of the - * buffer on a broken escape we are coping with. - */ - if ((cnt2 < len)&&(*tptr2 == ';')) - { - tptr2++; - cnt2++; - } - from_ptr = tptr2; - cnt = cnt2; - } - - /* - * If we broke the while loop early, - * it is because we may be holding a - * partial amperstand escape. - * return a pointer to that partial escape. - */ - if (cnt < len) - { - *nlen = (int32)(to_ptr - buf); - return(from_ptr); - } - else - { - *nlen = (int32)(to_ptr - buf); - return(NULL); - } -} - -#ifdef PROFILE -#pragma profile off -#endif - diff --git a/mozilla/lib/libparse/pa_amp.h b/mozilla/lib/libparse/pa_amp.h deleted file mode 100644 index 8bc056931e8..00000000000 --- a/mozilla/lib/libparse/pa_amp.h +++ /dev/null @@ -1,459 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* #include "xp.h" */ -#define NOT_USED 0xfffd - -static uint16 PA_HackTable[] = { - NOT_USED, - NOT_USED, - 0x201a, /* SINGLE LOW-9 QUOTATION MARK */ - 0x0192, /* LATIN SMALL LETTER F WITH HOOK */ - 0x201e, /* DOUBLE LOW-9 QUOTATION MARK */ - 0x2026, /* HORIZONTAL ELLIPSIS */ - 0x2020, /* DAGGER */ - 0x2021, /* DOUBLE DAGGER */ - 0x02c6, /* MODIFIER LETTER CIRCUMFLEX ACCENT */ - 0x2030, /* PER MILLE SIGN */ - 0x0160, /* LATIN CAPITAL LETTER S WITH CARON */ - 0x2039, /* SINGLE LEFT-POINTING ANGLE QUOTATION MARK */ - 0x0152, /* LATIN CAPITAL LIGATURE OE */ - NOT_USED, - NOT_USED, - NOT_USED, - NOT_USED, - 0x2018, /* LEFT SINGLE QUOTATION MARK */ - 0x2019, /* RIGHT SINGLE QUOTATION MARK */ - 0x201c, /* LEFT DOUBLE QUOTATION MARK */ - 0x201d, /* RIGHT DOUBLE QUOTATION MARK */ - 0x2022, /* BULLET */ - 0x2013, /* EN DASH */ - 0x2014, /* EM DASH */ - 0x02dc, /* SMALL TILDE */ - 0x2122, /* TRADE MARK SIGN */ - 0x0161, /* LATIN SMALL LETTER S WITH CARON */ - 0x203a, /* SINGLE RIGHT-POINTING ANGLE QUOTATION MARK */ - 0x0153, /* LATIN SMALL LIGATURE OE */ - NOT_USED, - NOT_USED, - 0x0178 /* LATIN CAPITAL LETTER Y WITH DIAERESIS */ -}; - - - -typedef struct PA_N2U_struct { - char* NE; /* Name Entity, "copy" */ - intn len; /* 4, the length of NE */ - int16 unicode; /* 0x00a4 */ -} PA_N2U; /* Name->Unicode */ - - -/* NE LEN UNICODE */ -static PA_N2U PA_Name2Unicode[] = { - {"lt", 2, 0x003c }, - {"LT", 2, 0x003c }, - {"gt", 2, 0x003e }, - {"GT", 2, 0x003e }, - {"amp", 3, 0x0026 }, - {"AMP", 3, 0x0026 }, - {"quot", 4, 0x0022 }, - {"QUOT", 4, 0x0022 }, - {"nbsp", 4, 0x00a0 }, - {"reg", 3, 0x00ae }, - {"REG", 3, 0x00ae }, - {"copy", 4, 0x00a9 }, - {"COPY", 4, 0x00a9 }, - - {"iexcl", 5, 0x00a1 }, - {"cent", 4, 0x00a2 }, - {"pound", 5, 0x00a3 }, - {"curren", 6, 0x00a4 }, - {"yen", 3, 0x00a5 }, - {"brvbar", 6, 0x00a6 }, - {"sect", 4, 0x00a7 }, - - {"uml", 3, 0x00a8 }, - {"ordf", 4, 0x00aa }, - {"laquo", 5, 0x00ab }, - {"not", 3, 0x00ac }, - {"shy", 3, 0x00ad }, - {"macr", 4, 0x00af }, - - {"deg", 3, 0x00b0 }, - {"plusmn", 6, 0x00b1 }, - {"sup2", 4, 0x00b2 }, - {"sup3", 4, 0x00b3 }, - {"acute", 5, 0x00b4 }, - {"micro", 5, 0x00b5 }, - {"para", 4, 0x00b6 }, - {"middot", 6, 0x00b7 }, - - {"cedil", 5, 0x00b8 }, - {"sup1", 4, 0x00b9 }, - {"ordm", 4, 0x00ba }, - {"raquo", 5, 0x00bb }, - {"frac14", 6, 0x00bc }, - {"frac12", 6, 0x00bd }, - {"frac34", 6, 0x00be }, - {"iquest", 6, 0x00bf }, - - {"Agrave", 6, 0x00c0 }, - {"Aacute", 6, 0x00c1 }, - {"Acirc", 5, 0x00c2 }, - {"Atilde", 6, 0x00c3 }, - {"Auml", 4, 0x00c4 }, - {"Aring", 5, 0x00c5 }, - {"AElig", 5, 0x00c6 }, - {"Ccedil", 6, 0x00c7 }, - - {"Egrave", 6, 0x00c8 }, - {"Eacute", 6, 0x00c9 }, - {"Ecirc", 5, 0x00ca }, - {"Euml", 4, 0x00cb }, - {"Igrave", 6, 0x00cc }, - {"Iacute", 6, 0x00cd }, - {"Icirc", 5, 0x00ce }, - {"Iuml", 4, 0x00cf }, - - {"ETH", 3, 0x00d0 }, - {"Ntilde", 6, 0x00d1 }, - {"Ograve", 6, 0x00d2 }, - {"Oacute", 6, 0x00d3 }, - {"Ocirc", 5, 0x00d4 }, - {"Otilde", 6, 0x00d5 }, - {"Ouml", 4, 0x00d6 }, - {"times", 5, 0x00d7 }, - - {"Oslash", 6, 0x00d8 }, - {"Ugrave", 6, 0x00d9 }, - {"Uacute", 6, 0x00da }, - {"Ucirc", 5, 0x00db }, - {"Uuml", 4, 0x00dc }, - {"Yacute", 6, 0x00dd }, - {"THORN", 5, 0x00de }, - {"szlig", 5, 0x00df }, - - {"agrave", 6, 0x00e0 }, - {"aacute", 6, 0x00e1 }, - {"acirc", 5, 0x00e2 }, - {"atilde", 6, 0x00e3 }, - {"auml", 4, 0x00e4 }, - {"aring", 5, 0x00e5 }, - {"aelig", 5, 0x00e6 }, - {"ccedil", 6, 0x00e7 }, - - {"egrave", 6, 0x00e8 }, - {"eacute", 6, 0x00e9 }, - {"ecirc", 5, 0x00ea }, - {"euml", 4, 0x00eb }, - {"igrave", 6, 0x00ec }, - {"iacute", 6, 0x00ed }, - {"icirc", 5, 0x00ee }, - {"iuml", 4, 0x00ef }, - - {"eth", 3, 0x00f0 }, - {"ntilde", 6, 0x00f1 }, - {"ograve", 6, 0x00f2 }, - {"oacute", 6, 0x00f3 }, - {"ocirc", 5, 0x00f4 }, - {"otilde", 6, 0x00f5 }, - {"ouml", 4, 0x00f6 }, - {"divide", 6, 0x00f7 }, - - {"oslash", 6, 0x00f8 }, - {"ugrave", 6, 0x00f9 }, - {"uacute", 6, 0x00fa }, - {"ucirc", 5, 0x00fb }, - {"uuml", 4, 0x00fc }, - {"yacute", 6, 0x00fd }, - {"thorn", 5, 0x00fe }, - {"yuml", 4, 0x00ff }, - - {NULL, 0, 0x0000 }, -}; - -typedef struct PA_AmpEsc_struct { - char *str; - char value; - intn len; -} PA_AmpEsc; - -#ifndef XP_MAC -static PA_AmpEsc PA_AmpEscapes[] = { - {"lt", '<', 2}, - {"LT", '<', 2}, - {"gt", '>', 2}, - {"GT", '>', 2}, - {"amp", '&', 3}, - {"AMP", '&', 3}, - {"quot", '\"', 4}, - {"QUOT", '\"', 4}, - {"nbsp", '\240', 4}, - {"reg", '\256', 3}, - {"REG", '\256', 3}, - {"copy", '\251', 4}, - {"COPY", '\251', 4}, - - {"iexcl", '\241', 5}, - {"cent", '\242', 4}, - {"pound", '\243', 5}, - {"curren", '\244', 6}, - {"yen", '\245', 3}, - {"brvbar", '\246', 6}, - {"sect", '\247', 4}, - - {"uml", '\250', 3}, - {"ordf", '\252', 4}, - {"laquo", '\253', 5}, - {"not", '\254', 3}, - {"shy", '\255', 3}, - {"macr", '\257', 4}, - - {"deg", '\260', 3}, - {"plusmn", '\261', 6}, - {"sup2", '\262', 4}, - {"sup3", '\263', 4}, - {"acute", '\264', 5}, - {"micro", '\265', 5}, - {"para", '\266', 4}, - {"middot", '\267', 6}, - - {"cedil", '\270', 5}, - {"sup1", '\271', 4}, - {"ordm", '\272', 4}, - {"raquo", '\273', 5}, - {"frac14", '\274', 6}, - {"frac12", '\275', 6}, - {"frac34", '\276', 6}, - {"iquest", '\277', 6}, - - {"Agrave", '\300', 6}, - {"Aacute", '\301', 6}, - {"Acirc", '\302', 5}, - {"Atilde", '\303', 6}, - {"Auml", '\304', 4}, - {"Aring", '\305', 5}, - {"AElig", '\306', 5}, - {"Ccedil", '\307', 6}, - - {"Egrave", '\310', 6}, - {"Eacute", '\311', 6}, - {"Ecirc", '\312', 5}, - {"Euml", '\313', 4}, - {"Igrave", '\314', 6}, - {"Iacute", '\315', 6}, - {"Icirc", '\316', 5}, - {"Iuml", '\317', 4}, - - {"ETH", '\320', 3}, - {"Ntilde", '\321', 6}, - {"Ograve", '\322', 6}, - {"Oacute", '\323', 6}, - {"Ocirc", '\324', 5}, - {"Otilde", '\325', 6}, - {"Ouml", '\326', 4}, - {"times", '\327', 5}, - - {"Oslash", '\330', 6}, - {"Ugrave", '\331', 6}, - {"Uacute", '\332', 6}, - {"Ucirc", '\333', 5}, - {"Uuml", '\334', 4}, - {"Yacute", '\335', 6}, - {"THORN", '\336', 5}, - {"szlig", '\337', 5}, - - {"agrave", '\340', 6}, - {"aacute", '\341', 6}, - {"acirc", '\342', 5}, - {"atilde", '\343', 6}, - {"auml", '\344', 4}, - {"aring", '\345', 5}, - {"aelig", '\346', 5}, - {"ccedil", '\347', 6}, - - {"egrave", '\350', 6}, - {"eacute", '\351', 6}, - {"ecirc", '\352', 5}, - {"euml", '\353', 4}, - {"igrave", '\354', 6}, - {"iacute", '\355', 6}, - {"icirc", '\356', 5}, - {"iuml", '\357', 4}, - - {"eth", '\360', 3}, - {"ntilde", '\361', 6}, - {"ograve", '\362', 6}, - {"oacute", '\363', 6}, - {"ocirc", '\364', 5}, - {"otilde", '\365', 6}, - {"ouml", '\366', 4}, - {"divide", '\367', 6}, - - {"oslash", '\370', 6}, - {"ugrave", '\371', 6}, - {"uacute", '\372', 6}, - {"ucirc", '\373', 5}, - {"uuml", '\374', 4}, - {"yacute", '\375', 6}, - {"thorn", '\376', 5}, - {"yuml", '\377', 4}, - - {NULL, '\0', 0}, -}; -#else /* ! XP_MAC */ - /* Entities encoded in MacRoman. */ -static PA_AmpEsc PA_AmpEscapes[] = { - {"lt", '<', 2}, - {"LT", '<', 2}, - {"gt", '>', 2}, - {"GT", '>', 2}, - {"amp", '&', 3}, - {"AMP", '&', 3}, - {"quot", '\"', 4}, - {"QUOT", '\"', 4}, - {"nbsp", '\007', 4}, - {"reg", '\250', 3}, - {"REG", '\250', 3}, - {"copy", '\251', 4}, - {"COPY", '\251', 4}, - - {"iexcl", '\301', 5}, - {"cent", '\242', 4}, - {"pound", '\243', 5}, - {"curren", '\333', 6}, - {"yen", '\264', 3}, - - /* - * Navigator Gold currently inverts this table in such a way that - * ASCII characters (less than 128) get converted to the names - * listed here. For things like ampersand (&amp;) this is the - * right thing to do, but for this one (brvbar), it isn't since - * both broken vertical bar and vertical bar are mapped to the same - * character by the Latin-1 to Mac Roman table. - * - * Punt for now. This needs to be fixed later. -- erik - */ - /* {"brvbar", '\174', 6}, */ - - {"sect", '\244', 4}, - - {"uml", '\254', 3}, - {"ordf", '\273', 4}, - {"laquo", '\307', 5}, - {"not", '\302', 3}, - {"shy", '\320', 3}, - {"macr", '\370', 4}, - - {"deg", '\241', 3}, - {"plusmn", '\261', 6}, - /* {"sup2", '\62', 4}, see comment above */ - /* {"sup3", '\63', 4}, see comment above */ - {"acute", '\253', 5}, - {"micro", '\265', 5}, - {"para", '\246', 4}, - {"middot", '\341', 6}, - - {"cedil", '\374', 5}, - /* {"sup1", '\61', 4}, see comment above */ - {"ordm", '\274', 4}, - {"raquo", '\310', 5}, - {"frac14", '\271', 6}, - {"frac12", '\270', 6}, - {"frac34", '\262', 6}, - {"iquest", '\300', 6}, - - {"Agrave", '\313', 6}, - {"Aacute", '\347', 6}, - {"Acirc", '\345', 5}, - {"Atilde", '\314', 6}, - {"Auml", '\200', 4}, - {"Aring", '\201', 5}, - {"AElig", '\256', 5}, - {"Ccedil", '\202', 6}, - - {"Egrave", '\351', 6}, - {"Eacute", '\203', 6}, - {"Ecirc", '\346', 5}, - {"Euml", '\350', 4}, - {"Igrave", '\355', 6}, - {"Iacute", '\352', 6}, - {"Icirc", '\353', 5}, - {"Iuml", '\354', 4}, - - {"ETH", '\334', 3}, /* Icelandic MacRoman: ETH ('D' w/horiz bar) */ - {"Ntilde", '\204', 6}, - {"Ograve", '\361', 6}, - {"Oacute", '\356', 6}, - {"Ocirc", '\357', 5}, - {"Otilde", '\315', 6}, - {"Ouml", '\205', 4}, - /* {"times", '\170', 5}, see comment above */ - - {"Oslash", '\257', 6}, - {"Ugrave", '\364', 6}, - {"Uacute", '\362', 6}, - {"Ucirc", '\363', 5}, - {"Uuml", '\206', 4}, - {"Yacute", '\240', 6}, /* Icelandic MacRoman: Yacute */ - {"THORN", '\336', 5}, /* Icelandic MacRoman: THORN (kinda like 'P') */ - {"szlig", '\247', 5}, - - {"agrave", '\210', 6}, - {"aacute", '\207', 6}, - {"acirc", '\211', 5}, - {"atilde", '\213', 6}, - {"auml", '\212', 4}, - {"aring", '\214', 5}, - {"aelig", '\276', 5}, - {"ccedil", '\215', 6}, - - {"egrave", '\217', 6}, - {"eacute", '\216', 6}, - {"ecirc", '\220', 5}, - {"euml", '\221', 4}, - {"igrave", '\223', 6}, - {"iacute", '\222', 6}, - {"icirc", '\224', 5}, - {"iuml", '\225', 4}, - - {"eth", '\335', 3}, /* Icelandic MacRoman: eth ('d' w/horiz bar) */ - {"ntilde", '\226', 6}, - {"ograve", '\230', 6}, - {"oacute", '\227', 6}, - {"ocirc", '\231', 5}, - {"otilde", '\233', 6}, - {"ouml", '\232', 4}, - {"divide", '\326', 6}, - - {"oslash", '\277', 6}, - {"ugrave", '\235', 6}, - {"uacute", '\234', 6}, - {"ucirc", '\236', 5}, - {"uuml", '\237', 4}, - {"yacute", '\340', 6}, /* Icelandic MacRoman: yacute */ - {"thorn", '\337', 5}, /* Icelandic MacRoman: thorn (kinda like 'p') */ - {"yuml", '\330', 4}, - - {NULL, '\0', 0}, -}; -#endif /* ! XP_MAC */ - diff --git a/mozilla/lib/libparse/pa_hash.c b/mozilla/lib/libparse/pa_hash.c deleted file mode 100644 index b539c47c739..00000000000 --- a/mozilla/lib/libparse/pa_hash.c +++ /dev/null @@ -1,333 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* -** This is a generated file, do not edit it. If you need to make changes, -** edit the file pa_hash.template and re-build pa_hash.c on a UNIX machine. -** This whole hacky thing was done by Michael Toy. -*/ - -#include "pa_parse.h" -#define TOTAL_KEYWORDS 103 -#define MIN_WORD_LENGTH 1 -#define MAX_WORD_LENGTH 12 -#define MIN_HASH_VALUE 1 -#define MAX_HASH_VALUE 333 -/* maximum key range = 333, duplicates = 0 */ - -#define MYLOWER(x) TOLOWER(((x) & 0x7f)) - -/************************************* - * Function: pa_tokenize_tag - * - * Description: This function maps the passed in string - * to one of the valid tag element tokens, or to - * the UNKNOWN token. - * - * Params: Takes a \0 terminated string. - * - * Returns: a 32 bit token to describe this tag element. On error, - * which means it was not passed an unknown tag element string, - * it returns the token P_UNKNOWN. - * - * Performance Notes: - * Profiling on mac revealed this routine as a big (5%) time sink. - * This function was stolen from pa_mdl.c and merged with the perfect - * hashing code and the tag comparison code so it would be flatter (fewer - * function calls) since those are still expensive on 68K and x86 machines. - *************************************/ - -intn -pa_tokenize_tag(char *str) -{ - static unsigned short asso_values[] = - { - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 40, - 10, 15, 20, 25, 30, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 127, 10, 10, - 55, 0, 15, 20, 67, 12, 25, 50, 45, 35, - 115, 65, 5, 0, 75, 0, 0, 62, 0, 0, - 15, 10, 334, 334, 334, 334, 334, 334, - }; - static unsigned char lengthtable[] = - { - 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 5, 0, 5, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 6, 0, 0, 0, 5, - 0, 2, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, - 3, 2, 2, 0, 0, 3, 0, 0, 0, 0, 0, 6, 0, 3, - 7, 3, 4, 0, 6, 2, 3, 6, 0, 0, 0, 0, 11, 0, - 0, 2, 0, 6, 0, 6, 4, 5, 6, 0, 0, 2, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 5, 0, 0, 1, - 0, 0, 0, 2, 10, 0, 0, 8, 4, 10, 2, 5, 0, 0, - 0, 4, 5, 6, 4, 8, 0, 2, 0, 2, 8, 4, 2, 0, - 2, 0, 6, 2, 0, 0, 0, 0, 2, 3, 0, 0, 4, 2, - 0, 0, 0, 4, 0, 3, 4, 3, 0, 0, 0, 5, 0, 6, - 0, 11, 0, 0, 9, 12, 8, 0, 0, 6, 0, 0, 4, 8, - 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 6, 0, 0, 0, - 0, 7, 5, 6, 0, 0, 4, 0, 0, 2, 3, 0, 5, 0, - 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 7, 0, 0, 5, 0, 9, 0, 4, - 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 5, 0, 7, 6, - 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, - }; - static struct pa_TagTable wordlist[] = - { - {"",}, - {"s", P_STRIKE}, - {"tt", P_FIXED}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"p", P_PARAGRAPH}, - {"",}, {"",}, {"",}, - {"style", P_STYLE}, - {"",}, - {"title", P_TITLE}, - {"",}, {"",}, {"",}, - {"b", P_BOLD}, - {"",}, {"",}, {"",}, - {"i", P_ITALIC}, - {"cite", P_CITATION}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"isindex", P_INDEX}, - {"",}, {"",}, {"",}, {"",}, - {"select", P_SELECT}, - {"",}, {"",}, {"",}, - {"spell", P_SPELL}, - {"",}, - {"dt", P_DESC_TITLE}, - {"",}, {"",}, {"",}, {"",}, {"",}, - {"xmp", P_PLAIN_PIECE}, - {"",}, - {"big", P_BIG}, - {"",}, {"",}, {"",}, {"",}, - {"div", P_DIVISION}, - {"li", P_LIST_ITEM}, - {"em", P_EMPHASIZED}, - {"",}, {"",}, - {"sup", P_SUPER}, - {"",}, {"",}, {"",}, {"",}, {"",}, - {"strike", P_STRIKEOUT}, - {"",}, - {"pre", P_PREFORMAT}, - {"listing", P_LISTING_TEXT}, - {"sub", P_SUB}, - {"hype", P_HYPE}, - {"",}, - {"subdoc", P_SUBDOC}, - {"h2", P_HEADER_2}, - {"img", P_IMAGE}, - {"script", P_SCRIPT}, - {"",}, {"",}, {"",}, {"",}, - {"certificate", P_CERTIFICATE}, - {"",}, {"",}, - {"h3", P_HEADER_3}, - {"",}, - {"strong", P_STRONG}, - {"",}, - {"mquote", P_MQUOTE}, - {"cell", P_CELL}, - {"embed", P_EMBED}, - {"object", P_OBJECT}, - {"",}, {"",}, - {"h4", P_HEADER_4}, - {"",}, {"",}, - {"td", P_TABLE_DATA}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"h5", P_HEADER_5}, - {"",}, {"",}, - {"blink", P_BLINK}, - {"",}, {"",}, - {"u", P_UNDERLINE}, - {"",}, {"",}, {"",}, - {"h6", P_HEADER_6}, - {"blockquote", P_BLOCKQUOTE}, - {"",}, {"",}, - {"colormap", P_COLORMAP}, - {"code", P_CODE}, - {"nscp_close", P_NSCP_CLOSE}, - {"th", P_TABLE_HEADER}, - {"input", P_INPUT}, - {"",}, {"",}, {"",}, - {"base", P_BASE}, - {"table", P_TABLE}, - {"applet", P_JAVA_APPLET}, - {"body", P_BODY}, - {"basefont", P_BASEFONT}, - {"",}, - {"dl", P_DESC_LIST}, - {"",}, - {"h1", P_HEADER_1}, - {"textarea", P_TEXTAREA}, - {"html", P_HTML}, - {"tr", P_TABLE_ROW}, - {"",}, - {"ul", P_UNUM_LIST}, - {"",}, - {"server", P_SERVER}, - {"ol", P_NUM_LIST}, - {"",}, {"",}, {"",}, {"",}, - {"br", P_LINEBREAK}, - {"wbr", P_WORDBREAK}, - {"",}, {"",}, - {"meta", P_META}, - {"dd", P_DESC_TEXT}, - {"",}, {"",}, {"",}, - {"samp", P_SAMPLE}, - {"",}, - {"kbd", P_KEYBOARD}, - {"nsdt", P_NSDT}, - {"map", P_MAP}, - {"",}, {"",}, {"",}, - {"image", P_NEW_IMAGE}, - {"",}, - {"keygen", P_KEYGEN}, - {"",}, - {"inlineinput", P_INLINEINPUT}, - {"",}, {"",}, - {"plaintext", P_PLAIN_TEXT}, - {"nscp_reblock", P_NSCP_REBLOCK}, - {"noscript", P_NOSCRIPT}, - {"",}, {"",}, - {"option", P_OPTION}, - {"",}, {"",}, - {"form", P_FORM}, - {"multicol", P_MULTICOLUMN}, - {"",}, {"",}, {"",}, - {"font", P_FONT}, - {"",}, {"",}, {"",}, - {"noframes", P_NOGRIDS}, - {"",}, {"",}, - {"center", P_CENTER}, - {"",}, {"",}, {"",}, {"",}, - {"charles", P_INLINEINPUTDOTTED}, - {"small", P_SMALL}, - {"spacer", P_SPACER}, - {"",}, {"",}, - {"menu", P_MENU}, - {"",}, {"",}, - {"hr", P_HRULE}, - {"dir", P_DIRECTORY}, - {"",}, - {"frame", P_GRID_CELL}, - {"",}, {"",}, - {"frameset", P_GRID}, - {"link", P_LINK}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"noembed", P_NOEMBED}, - {"",}, - {"address", P_ADDRESS}, - {"",}, {"",}, - {"param", P_PARAM}, - {"",}, - {"nscp_open", P_NSCP_OPEN}, - {"",}, - {"span", P_SPAN}, - {"",}, - {"head", P_HEAD}, - {"",}, - {"a", P_ANCHOR}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"layer", P_LAYER}, - {"",}, - {"caption", P_CAPTION}, - {"ilayer", P_ILAYER}, - {"",}, {"",}, {"",}, - {"nobr", P_NOBREAK}, - {"",}, - {"jean", P_INLINEINPUTTHICK}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"var", P_VARIABLE}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"nolayer", P_NOLAYER}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"area", P_AREA}, - }; - - if (str != NULL) - { - int len = strlen(str); - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - register int hval = len; - - switch (hval) - { - default: - case 3: - hval += asso_values[MYLOWER(str[2])]; - case 2: - hval += asso_values[MYLOWER(str[1])]; - case 1: - hval += asso_values[MYLOWER(str[0])]; - break; - } - hval += asso_values[MYLOWER(str[len - 1])]; - if (hval <= MAX_HASH_VALUE && hval >= MIN_HASH_VALUE) - { - if (len == lengthtable[hval]) - { - register char *tag = wordlist[hval].name; - /* - ** The following code was stolen from pa_TagEqual, - ** again to make this function flatter. - */ - - /* - ** While not at the end of the string, if they ever differ - ** they are not equal. We know "tag" is already lower case. - */ - while ((*tag != '\0')&&(*str != '\0')) - { - if (*tag != (char) TOLOWER(*str)) - return(P_UNKNOWN); - tag++; - str++; - } - /* - ** One of the strings has ended, if they are both ended, then they - ** are equal, otherwise not. - */ - if ((*tag == '\0')&&(*str == '\0')) - return wordlist[hval].id; - } - } - } - } - return(P_UNKNOWN); -} diff --git a/mozilla/lib/libparse/pa_hash.rmap b/mozilla/lib/libparse/pa_hash.rmap deleted file mode 100644 index 0427c5dfaf8..00000000000 --- a/mozilla/lib/libparse/pa_hash.rmap +++ /dev/null @@ -1,106 +0,0 @@ -/*0*/ "", -/*1*/ "TITLE", -/*2*/ "ISINDEX", -/*3*/ "BASE", -/*4*/ "LINK", -/*5*/ "H1", -/*6*/ "H2", -/*7*/ "H3", -/*8*/ "H4", -/*9*/ "H5", -/*10*/ "H6", -/*11*/ "A", -/*12*/ "P", -/*13*/ "ADDRESS", -/*14*/ "IMG", -/*15*/ "PLAINTEXT", -/*16*/ "XMP", -/*17*/ "PRE", -/*18*/ "LISTING", -/*19*/ "UL", -/*20*/ "OL", -/*21*/ "MENU", -/*22*/ "DIR", -/*23*/ "LI", -/*24*/ "DL", -/*25*/ "DT", -/*26*/ "DD", -/*27*/ "STRIKE", -/*28*/ "TT", -/*29*/ "B", -/*30*/ "I", -/*31*/ "EM", -/*32*/ "STRONG", -/*33*/ "CODE", -/*34*/ "SAMP", -/*35*/ "KBD", -/*36*/ "VAR", -/*37*/ "CITE", -/*38*/ "BLOCKQUOTE", -/*39*/ "FORM", -/*40*/ "INPUT", -/*41*/ "SELECT", -/*42*/ "OPTION", -/*43*/ "TEXTAREA", -/*44*/ "HR", -/*45*/ "BR", -/*46*/ "WBR", -/*47*/ "NOBR", -/*48*/ "BASEFONT", -/*49*/ "FONT", -/*50*/ "BLINK", -/*51*/ "IMAGE", -/*52*/ "CENTER", -/*53*/ "SUBDOC", -/*54*/ "CELL", -/*55*/ "TABLE", -/*56*/ "CAPTION", -/*57*/ "TR", -/*58*/ "TH", -/*59*/ "TD", -/*60*/ "EMBED", -/*61*/ "BODY", -/*62*/ "META", -/*63*/ "COLORMAP", -/*64*/ "HYPE", -/*65*/ "BIG", -/*66*/ "SMALL", -/*67*/ "SUP", -/*68*/ "SUB", -/*69*/ "FRAMESET", -/*70*/ "FRAME", -/*71*/ "NOFRAMES", -/*72*/ "APPLET", -/*73*/ "PARAM", -/*74*/ "MAP", -/*75*/ "AREA", -/*76*/ "DIV", -/*77*/ "KEYGEN", -/*78*/ "SCRIPT", -/*79*/ "NOSCRIPT", -/*80*/ "NOEMBED", -/*81*/ "HEAD", -/*82*/ "HTML", -/*83*/ "SERVER", -/*84*/ "CERTIFICATE", -/*85*/ "ILAYER", -/*86*/ "S", -/*87*/ "U", -/*88*/ "SPACER", -/*89*/ "MULTICOL", -/*90*/ "NSCP_CLOSE", -/*91*/ "NSCP_OPEN", -/*92*/ "", -/*93*/ "LAYER", -/*94*/ "STYLE", -/*95*/ "MQUOTE", -/*96*/ "SPAN", -/*97*/ "SPELL", -/*98*/ "INLINEINPUT", -/*99*/ "NSCP_REBLOCK", -/*100*/ "OBJECT", -/*101*/ "NSDT", -/*102*/ "JEAN", -/*103*/ "CHARLES", -/*104*/ "NOLAYER", -/*105*/ "BUILTIN", diff --git a/mozilla/lib/libparse/pa_hash.template b/mozilla/lib/libparse/pa_hash.template deleted file mode 100644 index ba4a5c8189d..00000000000 --- a/mozilla/lib/libparse/pa_hash.template +++ /dev/null @@ -1,122 +0,0 @@ -@! This file is used to generate pa_hash.c. A perl script merges this -@! file with the output of gperf to produce the hash functions for -@! tag lookup. Lines starting with @! are comments. Lines which do -@! not being with @! are copied straight to the output file. "@begin NAME -@! /REGEX1/ /REGEX2/" means to skip lines in the input until REGEX1 is -@! matched, and then begin saving output under name NAME, and stop when -@! REGEX2 is matched. "@include NAME" inserts the data saved as "NAME". -@! "@SUB NAME SUBREGEX" performs a substitution on the data saved in NAME. -@! -@! Comments and compaints about this go to Michael Toy. -@! -@! The following goop extracts the parts we need from the generated output -@! of gperf. We later merge that goop with custom code to generate -@! the tag lookup function. -@! -@begin MACROS /#define/ /^$/ -@begin HASH_TABLE /static unsigned [a-z]+ (asso_values|hash_table)/ /};/ -@begin HASH_FUNC /register int hval = len;/ /return hval/ -@sub HASH_FUNC /return hval \+/hval +=/ -@sub HASH_FUNC /str\[/MYLOWER(str[/ -@sub HASH_FUNC /]]/])]/ -@begin LENGTH_TABLE /static unsigned char lengthtable/ /};/ -@begin TAG_TABLE /static struct pa_TagTable *wordlist/ /};/ -@! -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* -** This is a generated file, do not edit it. If you need to make changes, -** edit the file pa_hash.template and re-build pa_hash.c on a UNIX machine. -** This whole hacky thing was done by Michael Toy. -*/ - -#include "pa_parse.h" -@include MACROS -#define MYLOWER(x) TOLOWER(((x) & 0x7f)) - -/************************************* - * Function: pa_tokenize_tag - * - * Description: This function maps the passed in string - * to one of the valid tag element tokens, or to - * the UNKNOWN token. - * - * Params: Takes a \0 terminated string. - * - * Returns: a 32 bit token to describe this tag element. On error, - * which means it was not passed an unknown tag element string, - * it returns the token P_UNKNOWN. - * - * Performance Notes: - * Profiling on mac revealed this routine as a big (5%) time sink. - * This function was stolen from pa_mdl.c and merged with the perfect - * hashing code and the tag comparison code so it would be flatter (fewer - * function calls) since those are still expensive on 68K and x86 machines. - *************************************/ - -intn -pa_tokenize_tag(char *str) -{ -@include HASH_TABLE -@include LENGTH_TABLE -@include TAG_TABLE - - if (str != NULL) - { - int len = strlen(str); - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { -@include HASH_FUNC -@! "hval" now contains hash value - if (hval <= MAX_HASH_VALUE && hval >= MIN_HASH_VALUE) - { - if (len == lengthtable[hval]) - { - register char *tag = wordlist[hval].name; - /* - ** The following code was stolen from pa_TagEqual, - ** again to make this function flatter. - */ - - /* - ** While not at the end of the string, if they ever differ - ** they are not equal. We know "tag" is already lower case. - */ - while ((*tag != '\0')&&(*str != '\0')) - { - if (*tag != (char) TOLOWER(*str)) - return(P_UNKNOWN); - tag++; - str++; - } - /* - ** One of the strings has ended, if they are both ended, then they - ** are equal, otherwise not. - */ - if ((*tag == '\0')&&(*str == '\0')) - return wordlist[hval].id; - } - } - } - } - return(P_UNKNOWN); -} diff --git a/mozilla/lib/libparse/pa_hook.c b/mozilla/lib/libparse/pa_hook.c deleted file mode 100644 index 0f80f50e533..00000000000 --- a/mozilla/lib/libparse/pa_hook.c +++ /dev/null @@ -1,101 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "pa_parse.h" -#include <stdio.h> -#include "net.h" - - -#ifdef XP_WIN16 -#define HOLD_BUF_UNIT 32000 -#define SIZE_LIMIT 32000 -#else -#define HOLD_BUF_UNIT 16384 -#endif /* XP_WIN16 */ - -#define WRITE_READY_SIZE (unsigned int) 2048; - - -intn -PA_ParseStringToTags(MWContext *context, char *buf, int32 len, - void *output_func) -{ - intn ret; - pa_DocData *fake_doc_data; - NET_StreamClass s; - - fake_doc_data = XP_NEW_ZAP(pa_DocData); - if (fake_doc_data == NULL) - { - return(-1); - } - - fake_doc_data->doc_id = 100164; - fake_doc_data->window_id = context; - fake_doc_data->output_tag = (PA_OutputFunction *)output_func; - fake_doc_data->hold_buf = XP_ALLOC(HOLD_BUF_UNIT * sizeof(char)); - if (fake_doc_data->hold_buf == NULL) - { - XP_DELETE(fake_doc_data); - return(-1); - } - fake_doc_data->hold_size = HOLD_BUF_UNIT; - - fake_doc_data->brute_tag = P_UNKNOWN; - fake_doc_data->format_out = FO_PRESENT_INLINE; - fake_doc_data->parser_stream = XP_NEW(NET_StreamClass); - if (fake_doc_data->parser_stream == NULL) - { - XP_FREE(fake_doc_data->hold_buf); - XP_DELETE(fake_doc_data); - return(-1); - } - /* We don't need most of the fields in the fake stream */ - fake_doc_data->parser_stream->complete = PA_MDLComplete; - fake_doc_data->parser_stream->data_object = (void *)fake_doc_data; - fake_doc_data->is_inline_stream = TRUE; - - s.data_object=fake_doc_data; - - ret = PA_ParseBlock(&s, (const char *)buf, (int)len); - if (ret > 0) - { - PA_MDLComplete(&s); - } - - return(ret); -} - - -const char * -PA_TagString(int32 tag_type) -{ - return pa_PrintTagToken(tag_type); -} - - -int32 -PA_TagIndex(char *str) -{ - return((int32)pa_tokenize_tag(str)); -} - diff --git a/mozilla/lib/libparse/pa_mdl.c b/mozilla/lib/libparse/pa_mdl.c deleted file mode 100644 index 4c2d6527450..00000000000 --- a/mozilla/lib/libparse/pa_mdl.c +++ /dev/null @@ -1,2231 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "pa_parse.h" -#include <stdio.h> -#include "pa_tags.h" -#include "libmocha.h" /* For JavaScript conditional HTML comments */ - -#ifdef PROFILE -#pragma profile on -#endif - - -#define NAME_LIST_INC 5 /* step to increase tag name/value arrays by */ - - -static char *pa_token_to_name[] = { -#include "pa_hash.rmap" -}; - -/************* - * Used by layout/laytags.c if MOCHA_CACHES_WRITES is defined. - **************/ -const char * -pa_PrintTagToken(int32 token) -{ - if ((uint32)token >= P_MAX) - { - return "UNKNOWN"; - } - - return pa_token_to_name[token]; -} - -/************************************* - * Function: pa_CloneMDLTag - * - * Description: This function allocates and fills in an entire - * PA_Tag structure for any MDL tag element type. - * - * Params: The tag to clone - * - * Returns: A pointer to a completely filled in PA_Tag structure - * that is a clone of the tag passed in. On failure it - * returns NULL. - *************************************/ -PA_Tag * -PA_CloneMDLTag(PA_Tag * src) -{ - PA_Tag *tag; - PA_Block buff; - char *locked_buff, *src_buff; - - /* - * Allocate a new tag structure, return NULL - * if you can't. - */ - tag = XP_NEW(PA_Tag); - if (tag == NULL) - { - return(NULL); - } - tag->type = src->type; - tag->is_end = src->is_end; - tag->newline_count = src->newline_count; - tag->data_len = src->data_len; - tag->true_len = src->true_len; - tag->lo_data = NULL; - tag->next = NULL; - - /* sure wish we could just do a strdup() here */ - buff = PA_ALLOC((tag->data_len + 1) * sizeof(char)); - if (buff != NULL) - { - PA_LOCK(locked_buff, char *, buff); - PA_LOCK(src_buff, char *, src->data); - XP_BCOPY(src_buff, locked_buff, tag->data_len); - locked_buff[tag->data_len] = '\0'; - PA_UNLOCK(locked_buff); - PA_UNLOCK(src_buff); - } - else - { - XP_DELETE(tag); - return(NULL); - } - - tag->data = buff; - - return(tag); -} - -/************************************* - * Function: pa_CreateMDLTag - * - * Description: This function allocates and fills in an entire - * PA_Tag structure for any MDL tag element type. - * - * Params: Takes a buffer containing a complete tag element string, - * and a length for that buffer. The buffer is NOT a \0 - * terminated string. - * - * Returns: A pointer to a completely filled in PA_Tag structure - * created based on the data contained in the passed - * tag element string. On failure it returns NULL. - *************************************/ -PA_Tag * -pa_CreateMDLTag(pa_DocData *doc_data, char *buf, int32 len) -{ - PA_Tag *tag; - char *start; - char *tptr; - char tchar; - int32 cnt; - PA_Block buff; - char *locked_buff; - int32 blen; - - /* - * Allocate a new tag structure, return NULL - * if you can't. - */ - tag = XP_NEW(PA_Tag); - if (tag == NULL) - { - return(NULL); - } - tag->lo_data = NULL; - tag->newline_count = doc_data->newline_count; - - /* - * Find the start of the tag element text - */ - tptr = buf; - tptr++; /* skip the '<' */ - cnt = 1; - /* - * Check if this is an end tag - */ - if (*tptr == '/') - { - tag->is_end = TRUE; - tptr++; - cnt++; - } - else - { - tag->is_end = FALSE; - } - start = tptr; - - /* - * Find the end of the tag element text - */ - while ((*tptr != '>')&&(!XP_IS_SPACE(*tptr))) - { - tptr++; - cnt++; - /* - * Reach the end of the tag but find no end - */ - if (cnt == len) - { - XP_DELETE(tag); - return(NULL); - } - } - - /* - * Temporarily null ternimate the string to do - * the string compares. - */ - tchar = *tptr; - *tptr = '\0'; - tag->type = pa_tokenize_tag(start); - *tptr = tchar; - - /* - * For UNKNOWN tags, stick the tag name in the - * paramater list as a boolean. - * This is in case a later module wants to try and interpret it. - */ - if (tag->type == P_UNKNOWN) - { - tptr = start; - } - - /* - * Allocate a buffer for the parameter list and - * put it in the tag structure. - */ - blen = (len - (int)(tptr - buf)); - buff = PA_ALLOC((blen+1) * sizeof (char)); /* LAM no need to use handles here */ - /* BAD_OOM_HANDLING should return NULL tag*/ - if (buff != NULL) - { - PA_LOCK(locked_buff, char *, buff); - XP_BCOPY(tptr, locked_buff, blen); - locked_buff[blen] = '\0'; - PA_UNLOCK(buff); - } - else - { - blen = 0; - } - tag->data = buff; - tag->data_len = blen; - tag->true_len = len; - - tag->next = NULL; - tag->edit_element = NULL; - - return(tag); -} - - -/************************************* - * Function: pa_CreateTextTag - * - * Description: This function allocates and fills in an entire - * PA_Tag structure for a P_TEXT tag element. - * P_TEXT is a special tag, where the text passed - * is simply shoved into the first value field - * of the values array. - * - * Params: Takes a buffer containing a text string, - * and a length for that buffer. The buffer is NOT a \0 - * terminated string. - * - * Returns: A pointer to a completely filled in PA_Tag structure - * of type P_TEXT containing the text passed in. - * On failure it returns NULL. - *************************************/ -PA_Tag * -pa_CreateTextTag(pa_DocData *doc_data, char *buf, int32 len) -{ - PA_Tag *tag; - PA_Block buff; - char *locked_buff; - - /* - * Allocate a new tag structure, return NULL - * if you can't. - */ - tag = XP_NEW(PA_Tag); - if (tag == NULL) - { - return(NULL); - } - tag->lo_data = NULL; - - tag->type = P_TEXT; - tag->is_end = FALSE; - tag->newline_count = doc_data->newline_count; - - buff = PA_ALLOC((len + 1) * sizeof(char)); - if (buff != NULL) - { - PA_LOCK(locked_buff, char *, buff); - XP_BCOPY(buf, locked_buff, len); - locked_buff[len] = '\0'; - PA_UNLOCK(buff); - } - else - { - XP_DELETE(tag); - return(NULL); - } - - tag->data = buff; - tag->data_len = len; - tag->true_len = len; - - tag->next = NULL; - tag->edit_element = NULL; - - return(tag); -} - -static PRBool -pa_eval_javascript_expression(pa_DocData *doc_data, - char *expression, - PRBool *return_value) -{ - char *eval_str; - - /* If JS is not enabled, assume expression evaluates to true */ - if (LM_GetMochaEnabled() == FALSE) { - *return_value = PR_TRUE; - return PR_TRUE; - } - - if (!LM_AttemptLockJS(doc_data->window_id, NULL, NULL)) { - doc_data->waiting_for_js_thread = PR_TRUE; - return PR_FALSE; - } - doc_data->waiting_for_js_thread = PR_FALSE; - - eval_str = LM_EvaluateAttribute(doc_data->window_id, expression, - doc_data->newline_count + 1); - *return_value = eval_str && !XP_STRCMP(eval_str, "true"); - if (eval_str) - XP_FREE(eval_str); - LM_UnlockJS(doc_data->window_id); - return PR_TRUE; -} - -static PRBool -pa_could_be_javascript_entity(char *entity, int len) -{ - if (len == 0) - return PR_TRUE; - if (len == 1) - return (entity[0] == '&'); - return (entity[1] == '{'); -} - -static PRBool -pa_is_javascript_entity(char *entity, int len) -{ - return ((len >=2) && pa_could_be_javascript_entity(entity, len)); -} - -static char * -pa_isolate_javascript_expression(char *entity, int len, char **terminatorp) -{ - char *tptr; - - /* Skip over &{ */ - tptr = entity + 2; - len -= 2; - - while (len >= 2) - { - if ((*tptr == '}') && (*(tptr + 1) == ';')) { - *tptr = '\0'; - *terminatorp = tptr; - return entity + 2; - } - tptr++; - len--; - } - return NULL; -} - -/* This function is used only to evaluate JavaScript entities used to form - conditional comments. Other JS entities are handled within layout. - Returns PR_TRUE if the JS entity could be evaluated, or PR_FALSE - if it could not be because the JS thread was busy. In the latter case, - we'll have to try again later. */ -static PRBool -pa_try_eval_javascript_entity(pa_DocData *doc_data, char *entity, int len, PRBool *retval) -{ - char *expr, *terminator_char; - PRBool success; - - if (!pa_is_javascript_entity(entity, len)) - return PR_FALSE; - - expr = pa_isolate_javascript_expression(entity, len, &terminator_char); - if (!expr) - return PR_FALSE; - - success = pa_eval_javascript_expression(doc_data, expr, retval); - - /* Eliminate null-termination performed by pa_eval_javascript_expression()*/ - if (!success) - *terminator_char = '}'; - return success; -} - -/************************************* - * Function: pa_FindMDLTag - * - * Description: This function finds the start of any MDL tags - * in the passed buffer. It also finds MDL comments - * and flags partial MDL tags and partial comments. - * - * Params: Takes a buffer and a length for that buffer. The buffer is NOT - * a \0 terminated string. It also takes a pointer to an - * int in which to store special return codes. - * - * Returns: A character pointer. This is NULL if the entire string has - * no MDL tags. It is a pointer to the beginning of any such - * tags or possible partial tags if any are found. - *************************************/ -char * -pa_FindMDLTag(pa_DocData *doc_data, char *buf, int32 len, intn *is_comment) -{ - char *tptr; - - *is_comment = COMMENT_NO; - - /* - * A NULL buffer obviously has no MDL tags. - */ - if (buf == NULL) - { - return(NULL); - } - - for (tptr = buf; --len >= 0; tptr++) - { - if (*tptr == '\n' || (*tptr == '\r' && len && *(tptr+1) != '\n') ) - { - if (doc_data->no_newline_count == 0) - doc_data->newline_count++; - continue; - } - /* - * A '<' might be the start of a MDL tag or comment. - */ - if (*tptr == '<') - { - /* - * If this is the last character in the string - * we don't know if it is an anchor yet or not. - * we want to save it until the next buffer to make - * sure. - */ - if (len == 0) - { - *is_comment = COMMENT_MAYBE; - return(tptr); - } - /* - * else if the next character is a letter or - * a '/' , this should be some kind of tag. - */ - else if ((XP_IS_ALPHA(*(tptr + 1)))|| - (*(tptr + 1) == '/')) - { - return(tptr); - } - /* - * else is the next character is an exclamation point, - * this might be a comment. - */ - else if (*(tptr + 1) == '!') - { - char *ptr; - - ptr = (char *)(tptr + 1); - - /* - * If there are 2 more chars in this buffer - * we can know for sure if this is a comment, - * otherwise we have to wait for the next - * buffer. - */ - if (len > 2) - { - if ((*(ptr + 1) == '-')&& - (*(ptr + 2) == '-')) - { - /* Check for a javascript entity immediately after the opening - of the comment. This indicates the presence of a conditional - comment. */ - if (pa_could_be_javascript_entity(ptr + 3, len - 3) && - (doc_data->brute_tag == P_UNKNOWN)) - { - PRBool js_result; - if (pa_try_eval_javascript_entity(doc_data, ptr + 3, - len - 3, &js_result)) - { - if (js_result) - *is_comment = COMMENT_UNCOMMENT; - else - *is_comment = COMMENT_YES; - } else { - /* Unable to evaluate. Try again later */ - *is_comment = COMMENT_MAYBE; - } - } - else - { - *is_comment = COMMENT_YES; - } - return(tptr); - } - /* - * Else we may have an HTML++ tag - * which we will become an UNKNOWN - * tag type. - */ -/* - * So many people do broken stuff, anything - * That starts <! and is not a comment I will assume - * is a tag - else if ((XP_IS_ALPHA(*(ptr + 1)))|| - (*(ptr + 1) == '/')) - */ - { - return(tptr); - } - } - else - { - *is_comment = COMMENT_MAYBE; - return(tptr); - } - } - /* - * else if the next character is a question mark - * this might be a 'processing instruction'. - * We treat processing instructions just like - * comments and ignore their content. - */ - else if (*(tptr + 1) == '?') - { - *is_comment = COMMENT_PROCESS; - return(tptr); - } - } - } - - return(NULL); -} - - -/************************************* - * Function: pa_FindMDLEndTag - * - * Description: This function finds the end of a MDL tag in the - * passed buffer. - * - * Params: Takes a buffer and a length for that buffer. The buffer is NOT - * a \0 terminated string. - * - * Returns: A character pointer. This is NULL if the string has - * no end to the MDL tag. It is a pointer to the end of - * the tag if any is found. - *************************************/ -char * -pa_FindMDLEndTag(pa_DocData *doc_data, char *buf, int32 len) -{ - char *tptr; - uint8 in_quote; /* 0 = none, - 1 = single quote, - 2 = double quote, - 3 = back quote */ - uint newlines; - - /* - * There can be no end to a MDL tag in a NULL buffer. - */ - if (buf == NULL) - { - return(NULL); - } - -#ifdef LENIENT_END_TAG - /* - * MDL tags are always ended with a '>', so it is REALLY - * easy to find their end. - */ - for (tptr = buf; --len >= 0; tptr++) - { - if (*tptr == '\n' || (*tptr == '\r' && len && *(tptr+1) != '\n') ) - { - if (doc_data->no_newline_count == 0) - doc_data->newline_count++; - continue; - } - if (*tptr == '>') - { - return(tptr); - } - } -#else - /* - * MDL tags are always ended with a '>', but '>' can also - * appear in quoted attribute values, so be careful. - */ - in_quote = 0; - newlines = 0; - for (tptr = buf; --len >= 0; tptr++) - { - if (*tptr == '\n' || (*tptr == '\r' && len && *(tptr+1) != '\n') ) - { - newlines++; - continue; - } - if (*tptr == '\"') - { - /* - * If we are not in a double quote already and this - * double quote is immediately after some whitespace - * or an equal sign, it is the start of a quoted - * attribute value, and greater than signs inside - * do not close this tag. - */ - if (in_quote == 0) - { - if ((tptr > buf)&&((*(tptr - 1) == '=')|| - (XP_IS_SPACE(*(tptr - 1))))) - { - in_quote = 2; - } - } - /* - * else if we are already in a double quote, - * this double quote closes it. - */ - else if (in_quote == 2) - { - in_quote = 0; - } - } - /* - * Else the same as above except for single quoted values - */ - else if (*tptr == '\'') - { - /* - * If we are not in a single quote already and this - * single quote is immediately after some whitespace - * or an equal sign, it is the start of a quoted - * attribute value, and greater than signs inside - * do not close this tag. - */ - if (in_quote == 0) - { - if ((tptr > buf)&&((*(tptr - 1) == '=')|| - (XP_IS_SPACE(*(tptr - 1))))) - { - in_quote = 1; - } - } - /* - * else if we are already in a single quote, - * this single quote closes it. - */ - else if (in_quote == 1) - { - in_quote = 0; - } - } - if (*tptr == '`') - { - /* - * If we are not in a double quote already and this - * double quote is immediately after some whitespace - * or an equal sign, it is the start of a quoted - * attribute value, and greater than signs inside - * do not close this tag. - */ - if (in_quote == 0) - { - if ((tptr > buf)&&((*(tptr - 1) == '=')|| - (XP_IS_SPACE(*(tptr - 1))))) - { - in_quote = 3; - } - } - /* - * else if we are already in a double quote, - * this double quote closes it. - */ - else if (in_quote == 3) - { - in_quote = 0; - } - } - else if ((*tptr == '>')&&(in_quote == 0)) - { - if (doc_data->no_newline_count == 0) - doc_data->newline_count += newlines; - return(tptr); - } - } -#endif /* LENIENT_END_TAG */ - return(NULL); -} - - -/************************************* - * Function: pa_FindMDLEndComment - * - * Description: This function finds the end of a MDL comment in the - * passed buffer. - * - * Params: Takes a buffer and a length for that buffer. The buffer is NOT - * a \0 terminated string. - * - * Returns: A character pointer. This is NULL if the string has - * no end to the MDL comment. It is a pointer to the end of - * the comment if any is found. - *************************************/ -char * -pa_FindMDLEndComment(pa_DocData *doc_data, char *buf, int32 len) -{ - char *tptr; - int newline_count = 0; - - /* - * There can be no end to a MDL comment in a NULL buffer. - */ - if (buf == NULL) - { - return(NULL); - } - - /* - * Finding the end to a comment is kind of complex since - * the comment end sequence is actually 3 characters "-->", - * and there can be other '>' chararacters inside the comment. - */ - for (tptr = buf; --len >= 0; tptr++) - { - if (*tptr == '\n' || (*tptr == '\r' && len && *(tptr+1) != '\n') ) - { - newline_count++; - continue; - } - if ((*tptr == '>')&&(tptr - buf) >= 2) - { - if ((*(tptr - 1) == '-')&&(*(tptr - 2) == '-')) - { - if (doc_data->no_newline_count == 0) - doc_data->newline_count += newline_count; - return(tptr); - } - } - } - return(NULL); -} - - -char * -pa_FindMDLEndProcessInstruction(pa_DocData *doc_data, char *buf, int32 len) -{ - char *tptr; - int newline_count = 0; - - /* - * There can be no end to a processing instruction in a NULL buffer. - */ - if (buf == NULL) - { - return(NULL); - } - - /* - * Finding the end to a processing instruction is kind of complex - * since the end sequence is actually 2 characters "?>", - * and there can be other '>' chararacters inside the - * processing instruction. - */ - for (tptr = buf; --len >= 0; tptr++) - { - if (*tptr == '\n' || (*tptr == '\r' && len && *(tptr+1) != '\n') ) - { - newline_count++; - continue; - } - if ((*tptr == '>')&&(tptr - buf) >= 1) - { - if (*(tptr - 1) == '?') - { - if (doc_data->no_newline_count == 0) - doc_data->newline_count += newline_count; - return(tptr); - } - } - } - return(NULL); -} - - -/* - * A simple test to see if this tag might have attributes. - * Look and see if there are any non-whitespace characters between - * the end of the tag and the closing '>' character. - */ -Bool -PA_TagHasParams(PA_Tag *tag) -{ - int32 cnt; - int32 len; - char *buf; - char *tptr; - - /* - * Punt on obvious error - */ - if ((tag == NULL)||(tag->data == NULL)) - { - return(FALSE); - } - - PA_LOCK(buf, char *, tag->data); - len = tag->data_len; - - /* - * To simplify enormously, we require that buf[len - 1] is - * the tag element terminating character '>' - * - * If not, punt here. - */ - if (buf[len - 1] != '>') - { - PA_UNLOCK(tag->data); - return(FALSE); - } - - /* - * Skip all whitespace starting at the front of the string. - */ - cnt = 0; - tptr = buf; - while ((XP_IS_SPACE(*tptr))&&(cnt < len)) - { - cnt++; - tptr++; - } - PA_UNLOCK(tag->data); - - /* - * If there is something we didn't skip it might be an attribute. - */ - if (cnt < (len - 1)) - { - return(TRUE); - } - - return(FALSE); -} - -void -PA_FetchRequestedNameValues(PA_Tag *tag, char *namesToFind[], int32 numNamesToFind, char *values[], uint16 win_csid) -{ - int32 cnt; - char *buf; - char *param_ptr; - char tchar; - int32 len; - - - int32 nameNum; - Bool nameFound; - -#ifndef LENIENT_END_TAG - char *buf_end; -#endif /* LENIENT_END_TAG */ - - nameFound = FALSE; - /* - * Punt on obvious error - */ - if ((tag == NULL)||(tag->data == NULL)) - return; - - PA_LOCK(buf, char *, tag->data); - len = tag->data_len; - - /* - * To simplify enormously, we require that buf[len - 1] is - * the tag element terminating character '>' - * - * If not, punt here. - */ - if (buf[len - 1] != '>') - { - PA_UNLOCK(tag->data); - return; - } - -#ifndef LENIENT_END_TAG - buf_end = (char *)(buf + len - 1); -#endif /* LENIENT_END_TAG */ - while (*buf != '>') - { - char *tptr; - int32 plen; - int32 vlen; - - /* - * Skip whitespace before the next possible - * parameter name. If no more parameters, break - * out of the while loop. - */ - - /* get char so we don't do so many loads from memory */ - tchar = *buf; - while ((XP_IS_SPACE(tchar))&&(tchar != '>')) - { - buf++; - tchar = *buf; - } - if (*buf == '>') - { - break; - } - - /* - * Find the end of the parameter name. - */ - tptr = buf; - cnt = 0; - /* get char so we don't do so many loads from memory */ - tchar = *tptr; - while ( (!XP_IS_SPACE(tchar)) && (tchar != '=') && (tchar != '>') ) - { - tptr++; - tchar = *tptr; - } - cnt = tptr - buf; - /* - * param_ptr points to the start of the name. - * plen is its length. - */ - param_ptr = buf; - plen = cnt; - - /* - * Move forward to the '=' which delimits the value - */ - buf = tptr; - while (XP_IS_SPACE(*buf)) - { - buf++; - } - - /* - * clip out the paramater name - */ - tptr = (char *)(param_ptr + plen); - tchar = *tptr; - *tptr = '\0'; - - /* - * Look for the name in the list of requested names - * - */ - nameNum = 0; - nameFound = FALSE; - while( nameNum < numNamesToFind ) - { - if (pa_TagEqual(namesToFind[nameNum], param_ptr)) - { - nameFound = TRUE; - break; - } - nameNum++; - } - - /* - * Restore character after parameter name - */ - *tptr = tchar; - - /* - * We have a value associated with this name. - */ - if (*buf == '=') - { - uint8 quoted; /* 0=none, 1=single, 2=double */ - char *nptr; - char *vend_ptr; - char *tmp_value; - int32 nlen; - - /* - * Skip past the '='. - */ - buf++; - - /* - * skip any white space between '=' and - * the value. - */ - while (XP_IS_SPACE(*buf)) - { - buf++; - } - - /* - * Check if this is going to be a quoted - * value string. - */ - quoted = 0; - tptr = buf; - cnt = 0; - if (*buf == '\'') - { - /* - * Skip the quote. - */ - buf++; - tptr = buf; - quoted = 1; - } - if (*buf == '\"') - { - /* - * Skip the quote. - */ - buf++; - tptr = buf; - quoted = 2; - } - if (*buf == '`') - { - /* - * DON'T skip the quote. - */ - tptr = buf+1; - quoted = 3; - } - - /* - * extract the end and length of the value string. - */ - if (quoted == 0) - { - /* get char so we don't do so many loads from memory */ - tchar = *tptr; - while ((!XP_IS_SPACE(tchar))&&(tchar != '>')) - { - tptr++; - tchar = *tptr; - cnt++; - } - } - else if (quoted == 1) - { -#ifdef LENIENT_END_TAG - /* get char so we don't do so many loads from memory */ - tchar = *tptr; - while ((tchar != '\'')&&(tchar != '>')) - { - tptr++; - tchar = *tptr; - cnt++; - } -#else - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '\'')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } -#endif /* LENIENT_END_TAG */ - } - else if (quoted == 2) - { -#ifdef LENIENT_END_TAG - /* get char so we don't do so many loads from memory */ - tchar = *tptr; - while ((tchar != '\"')&&(tchar != '>')) - { - tptr++; - tchar = *tptr; - cnt++; - } -#else - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '\"')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } -#endif /* LENIENT_END_TAG */ - } - else if (quoted == 3) - { - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '`')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } - /* include the end of the back quote when retrieving values. */ - if( *tptr == '`' ) - { - tptr++; - cnt++; - } - } - - if( nameFound == TRUE ) - { - - /* - * buf is the beginning of the parameter value. - * vlen is its length. tptr is the character - * right after the end of the original end which - * may have been changed by the amperstand - * escapes. - */ - vlen = cnt; - - /* - * Find the end of the value and terminate - * the string. - */ - vend_ptr = (char *)(buf + vlen); - tchar = *vend_ptr; - *vend_ptr = '\0'; - - tmp_value = XP_STRDUP(buf); - /* - * Amperstand escapes are allowed in - * parameter values, expand them now. - * The last parameter should force no - * partial amperstand escapes here. - */ - nptr = pa_ExpandEscapes(tmp_value, vlen, &nlen, TRUE, win_csid); - tmp_value[nlen] = '\0'; - - /* - * Stuff the value into the list, and restore - * the character afer the value string. - */ - values[nameNum] = tmp_value; - - *vend_ptr = tchar; - } - - buf = tptr; - if ((quoted == 1)&&(*buf == '\'')) - { - buf++; - } - else if ((quoted == 2)&&(*buf == '\"')) - { - buf++; - } - - /* - * remove white space trailing the value. - */ - while (XP_IS_SPACE(*buf)) - { - buf++; - } - } - /* - * Else a name with no value, just a boolean tag. - * No need to do anything - */ - else - { - } - } - PA_UNLOCK(tag->data); -} - - -/************************************* - * Function: PA_FetchParamValue - * - * Description: This messy function should take the parameter string - * that was part of the tag element, and turn - * look trhough it for a name that matches the - * parameter name passed in, and return its value. - * It is complicated by - * the fact that a value can be a single unquoted word, - * or a quoted string. Also by the fact that some names - * may have no matching values, and by the fact that there - * can be arbitrary whitespace around the equal sign. - * Unmatching quotes in quoted values are assumed to - * close at the end of the tag element. - * - * Params: Takes a tag element structure containing the parameter string - * and the parameter name to look for. - * - * Returns: A pointer to an allocated buffer containing a copy - * of the value string. Boolean parameters return a value - * of '\0'. - *************************************/ -PA_Block -PA_FetchParamValue(PA_Tag *tag, char *param_name, uint16 win_csid) -{ - int32 cnt; - char *buf; -#ifndef LENIENT_END_TAG - char *buf_end; -#endif /* LENIENT_END_TAG */ - char *param_ptr; - char tchar; - int32 len; - PA_Block buff; - char *locked_buff; - - /* - * Punt on obvious error - */ - if ((tag == NULL)||(tag->data == NULL)) - { - return(NULL); - } - - PA_LOCK(buf, char *, tag->data); - len = tag->data_len; - - /* - * To simplify enormously, we require that buf[len - 1] is - * the tag element terminating character '>' - * - * If not, punt here. - */ - if (buf[len - 1] != '>') - { - PA_UNLOCK(tag->data); - return(NULL); - } - -#ifndef LENIENT_END_TAG - buf_end = (char *)(buf + len - 1); -#endif /* LENIENT_END_TAG */ - - while (*buf != '>') - { - char *tptr; - int32 plen; - int32 vlen; - - /* - * Skip whitespace before the next possible - * parameter name. If no more parameters, break - * out of the while loop. - */ - while ((XP_IS_SPACE(*buf))&&(*buf != '>')) - { - buf++; - } - if (*buf == '>') - { - break; - } - - /* - * Find the end of the parameter name. - */ - tptr = buf; - cnt = 0; - while ((!XP_IS_SPACE(*tptr))&&(*tptr != '=')&&(*tptr != '>')) - { - tptr++; - cnt++; - } - - /* - * param_ptr points to the start of the name. - * plen is its length. - */ - param_ptr = buf; - plen = cnt; - - /* - * Move forward to the '=' which delimits the value - */ - buf = tptr; - while (XP_IS_SPACE(*buf)) - { - buf++; - } - - /* - * We have a value associated with this name. - */ - if (*buf == '=') - { - uint8 quoted; /* 0=none, 1=single, 2=double */ - char *pptr; - - /* - * Skip past the '='. - */ - buf++; - - /* - * skip any white space between '=' and - * the value. - */ - while (XP_IS_SPACE(*buf)) - { - buf++; - } - - /* - * Check if this is going to be a quoted - * value string. - */ - quoted = 0; - tptr = buf; - cnt = 0; - if (*buf == '\"') - { - /* - * Skip the quote. - */ - buf++; - tptr = buf; - quoted = 2; - } - else if (*buf == '\'') - { - /* - * Skip the quote. - */ - buf++; - tptr = buf; - quoted = 1; - } - else if (*buf == '`') - { - /* we want to include the ` as part of the string we return */ - tptr = buf+1; - cnt = 1; - quoted = 3; - } - - /* - * extract the end and length of the value string. - */ - if (quoted == 0) - { - while ((!XP_IS_SPACE(*tptr))&&(*tptr != '>')) - { - tptr++; - cnt++; - } - } - else if (quoted == 1) - { -#ifdef LENIENT_END_TAG - while ((*tptr != '\'')&&(*tptr != '>')) - { - tptr++; - cnt++; - } -#else - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '\'')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } -#endif /* LENIENT_END_TAG */ - } - else if (quoted == 2) - { -#ifdef LENIENT_END_TAG - while ((*tptr != '\"')&&(*tptr != '>')) - { - tptr++; - cnt++; - } -#else - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '\"')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } -#endif /* LENIENT_END_TAG */ - } - else if (quoted == 3) - { - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '`')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } - - if( *tptr == '`' ) - { - tptr++; - cnt++; - } - } - - /* - * buf is the beginning of the parameter value. - * vlen is its length. tptr is the character - * right after the end of the original end which - * may have been changed by the amperstand - * escapes. - */ - - vlen = cnt; - - /* - * clip out the paramater name - */ - pptr = (char *)(param_ptr + plen); - tchar = *pptr; - *pptr = '\0'; - - /* - * If this parameter name matches, this is - * the right value, make a copy to return. - */ - if (pa_TagEqual(param_name, param_ptr)) - { - char *vend_ptr; - - /* - * Restore character after parameter name - */ - *pptr = tchar; - - /* - * Find the end of the value and terminate - * the string. - */ - vend_ptr = (char *)(buf + vlen); - tchar = *vend_ptr; - *vend_ptr = '\0'; - - buff = PA_ALLOC((vlen + 1) * sizeof(char)); - if (buff != NULL) - { - char *nptr; - int32 nlen; - - PA_LOCK(locked_buff, char *, buff); - XP_STRCPY(locked_buff, buf); - - /* - * Amperstand escapes are allowed in - * parameter values, expand them now. - * The last parameter should force no - * partial amperstand escapes here. - */ - nptr = pa_ExpandEscapes(locked_buff, - vlen, &nlen, TRUE, win_csid); - locked_buff[nlen] = '\0'; - - PA_UNLOCK(buff); - } - *vend_ptr = tchar; - - PA_UNLOCK(tag->data); - return(buff); - } - *pptr = tchar; - - buf = tptr; - if ((quoted == 1)&&(*buf == '\'')) - { - buf++; - } - else if ((quoted == 2)&&(*buf == '\"')) - { - buf++; - } - else if ((quoted == 3)&&(*buf == '`')) - { - buf++; - } - - /* - * remove white space trailing the value. - */ - while (XP_IS_SPACE(*buf)) - { - buf++; - } - } - /* - * Else a name with no value, just a boolean tag. - * For boolean tag set value to '\0' (""). - */ - else - { - /* - * clip out the paramater name - */ - tptr = (char *)(param_ptr + plen); - tchar = *tptr; - *tptr = '\0'; - - /* - * If this parameter name matches, this is - * a boolean, and return '\0' as its value. - */ - if (pa_TagEqual(param_name, param_ptr)) - { - *tptr = tchar; - - buff = PA_ALLOC(1 * sizeof(char)); - if (buff == NULL) - { - PA_UNLOCK(tag->data); - return(NULL); - } - PA_LOCK(locked_buff, char *, buff); - locked_buff[0] = '\0'; - PA_UNLOCK(buff); - PA_UNLOCK(tag->data); - return(buff); - } - *tptr = tchar; - } - } - PA_UNLOCK(tag->data); - return(NULL); -} - -int32 -PA_FetchAllNameValues(PA_Tag *tag, char ***names, char ***values, uint16 win_csid) -{ - int32 cnt; - char *buf; - char *param_ptr; - char tchar; - int32 len; - char **name_list; - char **value_list; - int32 name_size; - int32 name_cnt; -#ifndef LENIENT_END_TAG - char *buf_end; -#endif /* LENIENT_END_TAG */ - - *names = NULL; - *values = NULL; - - /* - * Punt on obvious error - */ - if ((tag == NULL)||(tag->data == NULL)) - { - return(0); - } - - PA_LOCK(buf, char *, tag->data); - len = tag->data_len; - - /* - * To simplify enormously, we require that buf[len - 1] is - * the tag element terminating character '>' - * - * If not, punt here. - */ - if (buf[len - 1] != '>') - { - PA_UNLOCK(tag->data); - return(0); - } - - name_list = (char **)XP_ALLOC(NAME_LIST_INC * sizeof(char *)); - if (name_list == NULL) - { - PA_UNLOCK(tag->data); - return(0); - } - name_size = NAME_LIST_INC; - name_cnt = 0; - - value_list = (char **)XP_ALLOC(NAME_LIST_INC * sizeof(char *)); - if (value_list == NULL) - { - XP_FREE(name_list); - PA_UNLOCK(tag->data); - return(0); - } - -#ifndef LENIENT_END_TAG - buf_end = (char *)(buf + len - 1); -#endif /* LENIENT_END_TAG */ - while (*buf != '>') - { - char *tptr; - int32 plen; - int32 vlen; - - /* - * Skip whitespace before the next possible - * parameter name. If no more parameters, break - * out of the while loop. - */ - while ((XP_IS_SPACE(*buf))&&(*buf != '>')) - { - buf++; - } - if (*buf == '>') - { - break; - } - - /* - * Find the end of the parameter name. - */ - tptr = buf; - cnt = 0; - while ((!XP_IS_SPACE(*tptr))&&(*tptr != '=')&&(*tptr != '>')) - { - tptr++; - cnt++; - } - - /* - * param_ptr points to the start of the name. - * plen is its length. - */ - param_ptr = buf; - plen = cnt; - - /* - * Move forward to the '=' which delimits the value - */ - buf = tptr; - while (XP_IS_SPACE(*buf)) - { - buf++; - } - - /* - * clip out the paramater name - */ - tptr = (char *)(param_ptr + plen); - tchar = *tptr; - *tptr = '\0'; - - /* - * Stuff the name into the name list, growing - * the name list if needed. - */ - name_list[name_cnt] = XP_STRDUP(param_ptr); - name_cnt++; - if (name_cnt >= name_size) - { - name_list = (char **)XP_REALLOC(name_list, - (name_size + NAME_LIST_INC) * sizeof(char *)); - if (name_list == NULL) - { - PA_UNLOCK(tag->data); - return(0); - } - value_list = (char **)XP_REALLOC(value_list, - (name_size + NAME_LIST_INC) * sizeof(char *)); - if (value_list == NULL) - { - PA_UNLOCK(tag->data); - return(0); - } - name_size += NAME_LIST_INC; - } - - /* - * Restore character after parameter name - */ - *tptr = tchar; - - /* - * We have a value associated with this name. - */ - if (*buf == '=') - { - uint8 quoted; /* 0=none, 1=single, 2=double */ - char *nptr; - char *vend_ptr; - char *tmp_value; - int32 nlen; - - /* - * Skip past the '='. - */ - buf++; - - /* - * skip any white space between '=' and - * the value. - */ - while (XP_IS_SPACE(*buf)) - { - buf++; - } - - /* - * Check if this is going to be a quoted - * value string. - */ - quoted = 0; - tptr = buf; - cnt = 0; - if (*buf == '\'') - { - /* - * Skip the quote. - */ - buf++; - tptr = buf; - quoted = 1; - } - if (*buf == '\"') - { - /* - * Skip the quote. - */ - buf++; - tptr = buf; - quoted = 2; - } - if (*buf == '`') - { - /* - * DON'T skip the quote. - */ - tptr = buf+1; - quoted = 3; - } - - /* - * extract the end and length of the value string. - */ - if (quoted == 0) - { - while ((!XP_IS_SPACE(*tptr))&&(*tptr != '>')) - { - tptr++; - cnt++; - } - } - else if (quoted == 1) - { -#ifdef LENIENT_END_TAG - while ((*tptr != '\'')&&(*tptr != '>')) - { - tptr++; - cnt++; - } -#else - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '\'')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } -#endif /* LENIENT_END_TAG */ - } - else if (quoted == 2) - { -#ifdef LENIENT_END_TAG - while ((*tptr != '\"')&&(*tptr != '>')) - { - tptr++; - cnt++; - } -#else - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '\"')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } -#endif /* LENIENT_END_TAG */ - } - else if (quoted == 3) - { - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '`')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } - /* include the end of the back quote when retrieving values. */ - if( *tptr == '`' ) - { - tptr++; - cnt++; - } - } - - /* - * buf is the beginning of the parameter value. - * vlen is its length. tptr is the character - * right after the end of the original end which - * may have been changed by the amperstand - * escapes. - */ - vlen = cnt; - - /* - * Find the end of the value and terminate - * the string. - */ - vend_ptr = (char *)(buf + vlen); - tchar = *vend_ptr; - *vend_ptr = '\0'; - - tmp_value = XP_STRDUP(buf); - /* - * Amperstand escapes are allowed in - * parameter values, expand them now. - * The last parameter should force no - * partial amperstand escapes here. - */ - nptr = pa_ExpandEscapes(tmp_value, vlen, &nlen, TRUE, win_csid); - tmp_value[nlen] = '\0'; - - /* - * Stuff the value into the list, and restore - * the character afer the value string. - */ - value_list[name_cnt - 1] = tmp_value; - *vend_ptr = tchar; - - buf = tptr; - if ((quoted == 1)&&(*buf == '\'')) - { - buf++; - } - else if ((quoted == 2)&&(*buf == '\"')) - { - buf++; - } - - /* - * remove white space trailing the value. - */ - while (XP_IS_SPACE(*buf)) - { - buf++; - } - } - /* - * Else a name with no value, just a boolean tag. - * For boolean tag set value to NULL. - */ - else - { - value_list[name_cnt - 1] = NULL;; - } - } - PA_UNLOCK(tag->data); - - *names = name_list; - *values = value_list; - return(name_cnt); -} - -/************************************* - * Function: PA_HasMocha - * - * Description: This messy function should take the parameter string - * that was part of the tag element, and turn - * look trhough it for any mocha attributes - * It is complicated by - * the fact that a value can be a single unquoted word, - * or a quoted string. Also by the fact that some names - * may have no matching values, and by the fact that there - * can be arbitrary whitespace around the equal sign. - * Unmatching quotes in quoted values are assumed to - * close at the end of the tag element. - * - * Params: Takes a tag element structure containing the parameter string - * - * Returns: TRUE if any mocha attributes were found else FALSE - *************************************/ -Bool -PA_HasMocha(PA_Tag *tag) -{ - int32 cnt; - char *buf; -#ifndef LENIENT_END_TAG - char *buf_end; -#endif /* LENIENT_END_TAG */ - char *param_ptr; - char tchar; - int32 len; - PA_Block buff; - char *locked_buff; - - /* - * Punt on obvious error - */ - if ((tag == NULL)||(tag->data == NULL)) - { - return(FALSE); - } - - PA_LOCK(buf, char *, tag->data); - len = tag->data_len; - - /* - * To simplify enormously, we require that buf[len - 1] is - * the tag element terminating character '>' - * - * If not, punt here. - */ - if (buf[len - 1] != '>') - { - PA_UNLOCK(tag->data); - return(FALSE); - } - -#ifndef LENIENT_END_TAG - buf_end = (char *)(buf + len - 1); -#endif /* LENIENT_END_TAG */ - - while (*buf != '>') - { - char *tptr; - int32 plen; - int32 vlen; - - /* - * Skip whitespace before the next possible - * parameter name. If no more parameters, break - * out of the while loop. - */ - while ((XP_IS_SPACE(*buf))&&(*buf != '>')) - { - buf++; - } - if (*buf == '>') - { - break; - } - - /* - * Find the end of the parameter name. - */ - tptr = buf; - cnt = 0; - while ((!XP_IS_SPACE(*tptr))&&(*tptr != '=')&&(*tptr != '>')) - { - tptr++; - cnt++; - } - - /* - * param_ptr points to the start of the name. - * plen is its length. - */ - param_ptr = buf; - plen = cnt; - - /* - * Move forward to the '=' which delimits the value - */ - buf = tptr; - while (XP_IS_SPACE(*buf)) - { - buf++; - } - - /* - * We have a value associated with this name. - */ - if (*buf == '=') - { - uint8 quoted; /* 0=none, 1=single, 2=double */ - char *pptr; - - /* - * Skip past the '='. - */ - buf++; - - /* - * skip any white space between '=' and - * the value. - */ - while (XP_IS_SPACE(*buf)) - { - buf++; - } - - /* - * Check if this is going to be a quoted - * value string. - */ - quoted = 0; - tptr = buf; - cnt = 0; - if (*buf == '\"') - { - /* - * Skip the quote. - */ - buf++; - tptr = buf; - quoted = 2; - } - else if (*buf == '\'') - { - /* - * Skip the quote. - */ - buf++; - tptr = buf; - quoted = 1; - } - else if (*buf == '`') - { - /* we want to include the ` as part of the string we return */ - tptr = buf+1; - cnt = 1; - quoted = 3; - } - - /* - * extract the end and length of the value string. - */ - if (quoted == 0) - { - while ((!XP_IS_SPACE(*tptr))&&(*tptr != '>')) - { - tptr++; - cnt++; - } - } - else if (quoted == 1) - { -#ifdef LENIENT_END_TAG - while ((*tptr != '\'')&&(*tptr != '>')) - { - tptr++; - cnt++; - } -#else - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '\'')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } -#endif /* LENIENT_END_TAG */ - } - else if (quoted == 2) - { -#ifdef LENIENT_END_TAG - while ((*tptr != '\"')&&(*tptr != '>')) - { - tptr++; - cnt++; - } -#else - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '\"')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } -#endif /* LENIENT_END_TAG */ - } - else if (quoted == 3) - { - /* - * Allow '>' inside the quoted value. - */ - while ((*tptr != '`')&&(tptr != buf_end)) - { - tptr++; - cnt++; - } - - if( *tptr == '`' ) - { - tptr++; - cnt++; - } - } - - /* - * buf is the beginning of the parameter value. - * vlen is its length. tptr is the character - * right after the end of the original end which - * may have been changed by the amperstand - * escapes. - */ - - vlen = cnt; - - /* - * clip out the paramater name - */ - pptr = (char *)(param_ptr + plen); - tchar = *pptr; - *pptr = '\0'; - - /* - * See if this parameter name is a Mocha attribute name - */ - if (pa_TagEqual(PARAM_NAME, param_ptr) || - pa_TagEqual(PARAM_ONFOCUS, param_ptr) || - pa_TagEqual(PARAM_ONBLUR, param_ptr) || - pa_TagEqual(PARAM_ONCHANGE, param_ptr) || - pa_TagEqual(PARAM_ONSELECT, param_ptr) || - pa_TagEqual(PARAM_ONCLICK, param_ptr) || - pa_TagEqual(PARAM_ONSCROLL, param_ptr) || - pa_TagEqual(PARAM_ONSUBMIT, param_ptr) || - pa_TagEqual(PARAM_ONMOUSEOVER, param_ptr) || - pa_TagEqual(PARAM_ONMOUSEOUT, param_ptr) || - pa_TagEqual(PARAM_ONRESET, param_ptr) || - pa_TagEqual(PARAM_ONUNLOAD, param_ptr) || - pa_TagEqual(PARAM_ONLOAD, param_ptr) || - pa_TagEqual(PARAM_ONERROR, param_ptr) || - pa_TagEqual(PARAM_ONABORT, param_ptr) || - pa_TagEqual(PARAM_ONHELP, param_ptr) || - pa_TagEqual(PARAM_ONMOUSEDOWN, param_ptr) || - pa_TagEqual(PARAM_ONMOUSEUP, param_ptr) || - pa_TagEqual(PARAM_ONDBLCLICK, param_ptr) || - pa_TagEqual(PARAM_ONKEYDOWN, param_ptr) || - pa_TagEqual(PARAM_ONKEYUP, param_ptr) || - pa_TagEqual(PARAM_ONKEYPRESS, param_ptr) || - pa_TagEqual(PARAM_ONDRAGDROP, param_ptr) || - pa_TagEqual(PARAM_ONMOVE, param_ptr) || - pa_TagEqual(PARAM_ONRESIZE, param_ptr)) - - { - char *vend_ptr; - - /* - * Restore character after parameter name - */ - *pptr = tchar; - - PA_UNLOCK(tag->data); - return(TRUE); - } - - /* - * Wasn't a meaningful attribute, restore character after - * parameter name - */ - *pptr = tchar; - - buf = tptr; - if ((quoted == 1)&&(*buf == '\'')) - { - buf++; - } - else if ((quoted == 2)&&(*buf == '\"')) - { - buf++; - } - else if ((quoted == 3)&&(*buf == '`')) - { - buf++; - } - - /* - * remove white space trailing the value. - */ - while (XP_IS_SPACE(*buf)) - { - buf++; - } - } - /* - * Else a name with no value, just a boolean tag. - * For boolean tag set value to '\0' (""). - */ - else - { - /* - * clip out the paramater name - */ - tptr = (char *)(param_ptr + plen); - tchar = *tptr; - *tptr = '\0'; - - /* - * Are there any other no-value mocha parameters? - */ - if (pa_TagEqual(PARAM_MAYSCRIPT, param_ptr)) - { - /* - * Restore the trailing character - */ - *tptr = tchar; - - PA_UNLOCK(tag->data); - return(TRUE); - } - - /* - * Wasn't useful, restore the trailing character - */ - *tptr = tchar; - } - } - PA_UNLOCK(tag->data); - return(FALSE); -} - - -#ifdef PROFILE -#pragma profile off -#endif - diff --git a/mozilla/lib/libparse/pa_parse.c b/mozilla/lib/libparse/pa_parse.c deleted file mode 100644 index b52deba2bee..00000000000 --- a/mozilla/lib/libparse/pa_parse.c +++ /dev/null @@ -1,2024 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - - -#include "pa_parse.h" -#include <stdio.h> -#include "merrors.h" -#include "net.h" -#include "hk_funcs.h" -#include "libevent.h" -#include "intl_csi.h" - -extern int MK_OUT_OF_MEMORY; - - -#ifdef PROFILE -#pragma profile on -#endif - -#ifdef XP_WIN16 -#define HOLD_BUF_UNIT 32000 -#define SIZE_LIMIT 32000 -#else -#define HOLD_BUF_UNIT 16384 -#endif /* XP_WIN16 */ - -#define WRITE_READY_SIZE (unsigned int) 8192 - -/* - * Function to call with parsed tag elements. - * It should be initialized by a call to PA_ParserInit*(). - */ -static intn (*PA_ParsedTag)(void *data_object, PA_Tag *tags, intn status) = NULL; - -typedef struct pa_DocDataList_struct { - MWContext* window_id; - pa_DocData *doc_data; - struct pa_DocDataList_struct *next; -} pa_DocDataList; - -static pa_DocDataList *DocDataList = NULL; - -static pa_DocData *pa_FetchDocData(MWContext *window_id); -static Bool pa_RemoveDocData(pa_DocData *target_doc_data); -static Bool pa_StoreDocData(MWContext *window_id, pa_DocData *new_doc_data); - -/************************* - * The following is to speed up case conversion - * to allow faster checking of caseless equal among strings. - *************************/ -#ifndef NON_ASCII_STRINGS -unsigned char lower_lookup[256]={ - 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50, - 51,52,53,54,55,56,57,58,59,60,61,62,63,64, - 97,98,99,100,101,102,103,104,105,106,107,108,109, - 110,111,112,113,114,115,116,117,118,119,120,121,122, - 91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110, - 111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128, - 129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146, - 147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164, - 165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182, - 183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200, - 201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218, - 219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236, - 237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254, - 255}; -#endif /* not NON_ASCII_STRINGS */ - - - -/************************************* - * Function: pa_caseless_equal - * - * Description: This function will compare two - * strings, similar to strcmp(), but ignoring the - * case of the letters A-Z. - * - * Params: Takes two \0 terminated strings. - * - * Returns: 1 if strings are equal, 0 if not. - *************************************/ -#if 0 -static intn -pa_caseless_equal(char *string_1, char *string_2) -{ - /* - * If either is NULL, they are not equal, even if both are NULL - */ - if ((string_1 == NULL)||(string_2 == NULL)) - { - return(0); - } - - /* - * While not at the end of the string, if they ever differ - * they are not equal. - */ - while ((*string_1 != '\0')&&(*string_2 != '\0')) - { - if (TOLOWER((unsigned char) *string_1) != TOLOWER((unsigned char) *string_2)) - { - return(0); - } - string_1++; - string_2++; - } - - /* - * One of the strings has ended, if they are both ended, then they - * are equal, otherwise not. - */ - if ((*string_1 == '\0')&&(*string_2 == '\0')) - { - return(1); - } - else - { - return(0); - } -} -#endif - - -/************************************* - * Function: pa_TagEqual - * - * Description: This function is a special purpose caseless compare - * to save me a few cycles of performance. - * Since we know the first string is a predefined TAG - * we are guaranteeing it will always be in lower case, - * thus we don't need to TOLOWER its characters as we - * compare them. - * - * Params: Takes two \0 terminated strings. The first, being a predefined TAG - * is guaranteed to be all in lower case. - * - * Returns: 1 if strings are equal, 0 if not. - *************************************/ -intn -pa_TagEqual(char *tag, char *str) -{ - /* - * If str is NULL, they are not equal, tag cannot be NULL. - */ - if (str == NULL) - { - return(0); - } - - /* - * While not at the end of the string, if they ever differ - * they are not equal. - */ - while ((*tag != '\0')&&(*str != '\0')) - { - if ((int)(*tag) != TOLOWER((unsigned char) *str)) - { - return(0); - } - tag++; - str++; - } - - /* - * One of the strings has ended, if they are both ended, then they - * are equal, otherwise not. - */ - if ((*tag == '\0')&&(*str == '\0')) - { - return(1); - } - else - { - return(0); - } -} - - -/************************************* - * Function: PA_FreeTag - * - * Description: This function frees up all memory associated - * with a PA_Tag structure, including the structure - * itself. - * - * Params: Takes pointer to a PA_Tag structure. - * - * Returns: none. - *************************************/ -void -PA_FreeTag(PA_Tag *tag) -{ - /* - * Nothing to do for already freed tags. - */ - if (tag == NULL) - { - return; - } - - /* - * If we have data, free it. - */ - if (tag->data != NULL) - { - PA_FREE(tag->data); - } - - /* - * Free the tag structure. - */ - XP_DELETE(tag); -} - - -static int32 doc_id_gen = 0; /* generator for document identifiers */ - - -/************************************* - * Function: pa_new_document - * - * Description: register a new document, create and initialize - * the pa_DocData structure for it. - * - * Params: Takes a unique document id, and the URL_Struct for this doc. - * - * Returns: a pointer to the new pa_DocData structure, already - * initialized, and with the doc_id filled in. - * Return NULL on failure. - *************************************/ -static pa_DocData * -pa_new_document(FO_Present_Types format_out, - MWContext *window_id, - PA_OutputFunction *output_func, - URL_Struct *url_struct) -{ - pa_DocData *doc_data, *old_doc_data; - Bool is_inline_stream; - - if (format_out == FO_PRESENT_INLINE) { - is_inline_stream = TRUE; - old_doc_data = pa_FetchDocData(window_id); - } - else { - /* Added by Lou: - * This will interrupt anything else trying to go into - * this same window, so that we have a clear path - * to load this new document - */ - NET_SilentInterruptWindow(window_id); - is_inline_stream = FALSE; - } - - - doc_data = XP_NEW(pa_DocData); - if (doc_data == NULL) - { - return(NULL); - } - - /* - * Allocate a static hold buffer. This will - * save on malloc calls in the long run. - */ - doc_data->hold_buf = XP_ALLOC_BLOCK(HOLD_BUF_UNIT * sizeof(char)); - if (doc_data->hold_buf == NULL) - { - XP_DELETE(doc_data); - return(NULL); - } - - /* - * Now that we can't fail, create the unique document ID. - */ - if (is_inline_stream) { - /* - * If we're still parsing the original HTML stream, then - * just get some of the required information from the - * existing doc_data. Otherwise, we need to get it from - * MWContext - is there a better way to do this? - */ - if (old_doc_data) { - doc_data->doc_id = old_doc_data->doc_id; - doc_data->layout_state = old_doc_data->layout_state; - } - else { - doc_data->doc_id = window_id->doc_id; - doc_data->layout_state = NULL; - } - } - else { - doc_data->doc_id = ++doc_id_gen; - doc_data->layout_state = NULL; - } - doc_data->window_id = window_id; - doc_data->output_tag = output_func; - doc_data->hold = 0; - doc_data->hold_size = HOLD_BUF_UNIT; - doc_data->hold_len = 0; - doc_data->brute_tag = P_UNKNOWN; - doc_data->comment_bytes = 0; - doc_data->lose_newline = FALSE; - if (url_struct->address == NULL) - { - doc_data->url = NULL; - } - else - { - doc_data->url = XP_STRDUP(url_struct->address); - } -#ifdef NU_CACHE - /* TODO -Gagan*/ - doc_data->from_net = (url_struct->cache_file != NULL) ? FALSE : TRUE; -#else - if ((url_struct->cache_file != NULL)||(url_struct->memory_copy != NULL)) - { - doc_data->from_net = FALSE; - } - else - { - doc_data->from_net = TRUE; - } -#endif /* NU_CACHE */ - - /* - * A NET_SUPER_RELOAD should always make everything reload, so no - * matter what, act as if it all came new from the net. - */ - if (url_struct->force_reload == NET_SUPER_RELOAD) - { - doc_data->from_net = TRUE; - } - - /* save the url struct and make sure it doesn't disappear on us */ - doc_data->url_struct = url_struct; - NET_HoldURLStruct(doc_data->url_struct); - - doc_data->edit_buffer = NULL; - doc_data->is_inline_stream = is_inline_stream; - - if (!doc_data->is_inline_stream || !old_doc_data) - pa_StoreDocData(window_id, doc_data); - - doc_data->overflow_stack = 0; - doc_data->overflow_depth = 0; - doc_data->stream_status = 0; - doc_data->stream_count = 0; - return(doc_data); -} - -/* - * - */ -unsigned int -pa_ParseWriteReady (NET_StreamClass *stream) -{ - - pa_DocData *doc_data = (pa_DocData *) stream->data_object; -#if !defined(XP_UNIX) && !defined(XP_WIN32) - if (doc_data->overflow_depth) - return 0; -#endif - - return WRITE_READY_SIZE; -} - -static pa_DocData * -pa_check_doc_data_count(NET_StreamClass *stream) -{ - pa_DocData *doc_data=stream->data_object; - /* netlib will no longer send us data */ - if (doc_data->stream_count + doc_data->overflow_depth <= 0) { - - if (doc_data->stream_status != 0) { - PA_MDLAbort(stream, doc_data->stream_status); - } - else { - PA_MDLComplete(stream); - } - - return NULL; - } - - return doc_data; -} - -/* - * Flush the data out of the current overflow buffer and send it up through - * the parser. After we push the data through PA_ParseBlock() - * the overflow buffer is empty, any unparsed data will be left - * in the hold buffer - */ -void -pa_FlushOverflow(NET_StreamClass *stream) -{ - pa_DocData *doc_data=stream->data_object; - int len = 0; - pa_Overflow *overflow; - char *buf = NULL; - - if (!doc_data || doc_data->overflow_depth) - return; - - /* - * Make sure the doc_data doesn't get removed out from under us. - */ - PA_HoldDocData(doc_data); - - /* - ** We need to coalesce the overflow buffers into a single one, since - ** we don't want to be calling PA_ParseBlock multiple times -- as this could - ** possibly get us back into the overflow code. - */ - for (overflow = doc_data->overflow_stack; - overflow != NULL; - overflow = overflow->next) - len += overflow->len; - - if (len > 0) - { - buf = (char *)XP_ALLOC_BLOCK((len + 1) * sizeof(char)); - buf[0] = 0; - } - - while ((overflow = PA_PopOverflow(doc_data))) - { - if (buf != NULL) - XP_STRNCAT(buf, (char*)overflow->buf, overflow->len); - - PA_FreeOverflow(overflow); - } - - doc_data->overflow_stack = NULL; - - if (buf != NULL) - { - PA_ParseBlock(stream, (const char *) buf, len); - XP_FREE(buf); - } - - PA_DropDocData(stream); -} - -/* - * - */ -static void -pa_unload_complete(NET_StreamClass *stream) -{ - pa_DocData *doc_data = (pa_DocData *) stream->data_object; - - /* The overflow value was set to one just before sending the JS - onUnload event and the only thing that can change it is - either a document.write or encountering a <SCRIPT> tag, neither - of which should have happened. */ - XP_ASSERT(doc_data->overflow_depth == 1); - - /* flush any old data that has built up */ - pa_FlushOverflow(stream); - -} - - -/* - * If there is a current document see if its OK to unload it now - */ -static void -pa_check_for_new_doc(MWContext *window_id, pa_DocData *doc_data) -{ - /* Don't want to do this for layer src changes */ - if (doc_data->is_inline_stream) - return; - - /* call to see if top_state has unload or we're resizing */ - if (LO_CheckForUnload(window_id) || - doc_data->url_struct->resize_reload) - { - NET_StreamClass *s=NET_NewStream("Place holder", - NULL, - NULL, - NULL, - NULL, - doc_data, - window_id); - /* don't let netlib pass any data up to us yet */ - /* doc_data->overflow = 1;*/ - PA_PushOverflow(doc_data); - doc_data->overflow_depth ++; - /* send the event to mocha so we get called back */ - ET_SendLoadEvent(window_id, EVENT_UNLOAD, (ETVoidPtrFunc) pa_unload_complete, - s, LO_DOCUMENT_LAYER_ID, - doc_data->url_struct->resize_reload); - - } - else - { - /* - * Send the event to mocha but we don't need to be - * called back - */ - ET_SendLoadEvent(window_id, EVENT_UNLOAD, NULL, NULL, - LO_DOCUMENT_LAYER_ID, - doc_data->url_struct->resize_reload); - } - -} - - -/* - * Someone has decided they are no longer interested in sending - * data through us. If they were the last ones we were waiting - * on clean everything up now. - */ -pa_DocData * -PA_DropDocData(NET_StreamClass *stream) -{ - pa_DocData *doc_data=(pa_DocData *)stream->data_object; - XP_ASSERT(doc_data && - (doc_data->stream_count >= 1)); - - if (!doc_data) - return NULL; - - doc_data->stream_count--; - - return pa_check_doc_data_count(stream); - -} - -/* - * netlib will no longer send us data - */ -static void -pa_cleanup_after_netlib(NET_StreamClass *stream) -{ - pa_DocData *doc_data=stream->data_object; - XP_ASSERT(doc_data); - - if (doc_data->window_id) - LO_NetlibComplete(doc_data->window_id); - PA_DropDocData(stream); -} - -static void -pa_netlib_stream_complete(NET_StreamClass *stream) -{ - pa_cleanup_after_netlib(stream); -} - -static void -pa_netlib_stream_abort(NET_StreamClass *stream, int status) -{ - pa_DocData *doc_data = (pa_DocData *)stream->data_object; - doc_data->stream_status = status; - pa_cleanup_after_netlib(stream); -} - -pa_DocData * -PA_HoldDocData(pa_DocData * doc_data) -{ - XP_ASSERT(doc_data); - XP_ASSERT(doc_data->stream_count >= 0); - - doc_data->stream_count++; - - return doc_data; -} - - -/************************************* - * Function: PA_BeginParseMDL - * - * Description: The outside world's main access to the parser. - * call this when you are going to start parsing - * a new document to set up the parsing stream. - * This function cannot be called successfully - * until PA_ParserInit() has been called. - * - * Params: Takes lots of document information that is all - * ignored right now, just used the window_id to create - * a unique document id. - * - * Returns: a pointer to a new NET_StreamClass structure, set up to - * give the caller a parsing stream into the parser. - * Returns NULL on error. - *************************************/ -NET_StreamClass * -PA_BeginParseMDL(FO_Present_Types format_out, - void *init_data, URL_Struct *anchor, MWContext *window_id) -{ - NET_StreamClass *new_stream = NULL; - NET_StreamClass *netlib_stream = NULL; - PA_InitData *new_data; - pa_DocData *doc_data; - - new_data = (PA_InitData *)init_data; - - /* - * If there was a Window-Target http header from the server, - * we probably need to switch where this document goes. - */ - if ((anchor->window_target != NULL)&& - (*anchor->window_target != '\0')&& - ((format_out == FO_PRESENT)||(format_out == FO_CACHE_AND_PRESENT))) - { - if (NET_IsSafeForNewContext(anchor) != FALSE) - { - MWContext *new_context; - - /* - * Find the named window if it already exists. - */ - new_context = XP_FindNamedContextInList(window_id, - anchor->window_target); - /* - * If the named window didn't exist, create it. - */ - if (new_context == NULL) - { - /* - * Don't pass in the URL_Struct if we're going to manually - * get it to load ourselves, as MakeNewWindow will load - * a URL passed in! - */ - new_context = FE_MakeNewWindow(window_id, NULL /* anchor */, - anchor->window_target, anchor->window_chrome); - } - /* - * Else is the named window did exist, and we are it, we - * don't need to do anything. - */ - else if (new_context == window_id) - { - new_context = NULL; - } - - /* - * Switch to loading this URL in the named window. - */ - if (new_context != NULL) - { - Net_GetUrlExitFunc *exit_func; - - exit_func = NULL; - FE_SetWindowLoading(new_context, anchor, &exit_func); - if (NET_SetNewContext(anchor, new_context, exit_func) - == 0) - { - window_id = new_context; - } - } - } - } - - if ((anchor != NULL)&&(anchor->address != NULL)) - { - char *ret_str; - - ret_str = NULL; - (void)HK_CallHook(HK_DOC_START, NULL, XP_CONTEXTID(window_id), - anchor->address, &ret_str); - if (ret_str != NULL) - { - XP_FREE(ret_str); - } - } - - /* - * Allocate the crucial data object that contains all the - * per document parsing state information. - */ - doc_data = pa_new_document(format_out, window_id, - new_data->output_func, anchor); - - if (doc_data == NULL) - { - return(NULL); - } - - /* - * Create the new stream that will stay around even after - * netlib has finished - */ - new_stream = NET_NewStream("netlib stream", - (MKStreamWriteFunc) PA_ParseBlock, - (MKStreamCompleteFunc) PA_MDLComplete, - (MKStreamAbortFunc) PA_MDLAbort, - (MKStreamWriteReadyFunc) pa_ParseWriteReady, - NULL, - window_id); - - if (new_stream == NULL) - { - pa_RemoveDocData(doc_data); - if (doc_data->hold_buf) - XP_FREE_BLOCK(doc_data->hold_buf); - if (doc_data->url) - XP_FREE(doc_data->url); - XP_DELETE(doc_data); - return(NULL); - } - - /* - * Don't create the separate netlib stream for a stream request - * that's an inline stream that's piggy-backing on some other - * stream (the case if layout_state is non-NULL). - */ - if (!doc_data->is_inline_stream || !doc_data->layout_state) - { - /* - * Create the new stream that netlib is going to free - * out from under us before we are done with it. - */ - netlib_stream = NET_NewStream("netlib stream", - (MKStreamWriteFunc) PA_ParseBlock, - (MKStreamCompleteFunc) pa_netlib_stream_complete, - (MKStreamAbortFunc) pa_netlib_stream_abort, - (MKStreamWriteReadyFunc) pa_ParseWriteReady, - NULL, - window_id); - - if (netlib_stream == NULL) - { - pa_RemoveDocData(doc_data); - if (doc_data->hold_buf) - XP_FREE_BLOCK(doc_data->hold_buf); - if (doc_data->url) - XP_FREE(doc_data->url); - XP_DELETE(doc_data); - XP_DELETE(new_stream); - return(NULL); - } - } - else - { - netlib_stream = new_stream; - } - - new_stream->data_object = (void *)PA_HoldDocData(doc_data); - netlib_stream->data_object = (void *)doc_data; - - /* - * Check to see if its OK to unload the current document (if there - * is one). - */ - pa_check_for_new_doc(window_id, doc_data); - - doc_data->format_out = format_out; - doc_data->parser_stream = new_stream; - doc_data->no_newline_count = 0; - doc_data->newline_count = 0; - - return(netlib_stream); -} - - -/************************************* - * Function: PA_ParserInit - * - * Description: Very main interface to the parser library. - * It must be called before the parser can be used. - * Right now it just sets the one static global we use. - * This function can only be called once, all - * subsequent calls will fail. - * - * Params: Pass in a pointer to a PA_Functions struct, which tells the parser - * what functions to use for certain important functionality. - * - * Returns: A status code. 1 on success, -1 on failure. - *************************************/ -intn -PA_ParserInit(PA_Functions *funcs) -{ - /* - * If this is not the first call, fail them. - */ - if (PA_ParsedTag != NULL) - { - return(-1); - } - - PA_ParsedTag = funcs->PA_ParsedTag; - - if (PA_ParsedTag == NULL) - { - return(-1); - } - else - { - return(1); - } -} - - -/************************************* - * Function: PA_ParseBlock - * - * Description: This is a very important entry point to the parser, - * but it will never be called directly. It will be - * placed into the stream returned by PA_BeginParseMDL() - * and be called from there. - * - * Params: The data_object created and placed in the stream class - * in PA_BeginParseMDL(). A buffer of characters to be - * parsed, and the length of that buffer. The buffer is NOT - * a \0 terminated string. - * - * Returns: a status code. 1 = success, -1 = failure. - *************************************/ -intn -PA_ParseBlock(NET_StreamClass *stream, const char *block, int block_len) -{ - void *data_object=stream->data_object; - pa_DocData *doc_data=data_object; - PA_Tag *tag; - intn ret; - int32 len; - char *buf; - char *hold_buf; - XP_Block buff; -#ifdef XP_WIN16 - int32 extra; - char *extra_ptr; - - extra_ptr = NULL; - extra = 0; -#endif /* XP_WIN16 */ - buf = (char *)block; - len = (int32)block_len; - - /* - * Parse this unique MDL document. Get per-document state info. - */ - - /* - * If we are overflowing we shouldn't be getting any data - * just glomb it into the overflow buffer - */ - if (doc_data->overflow_depth && len > 0) - { - pa_Overflow *overflow = doc_data->overflow_stack; /* check for NULL? */ - char * overflow_buf; - int32 over_size = overflow->size; - int32 over_len = overflow->len; - int32 new_size = over_len + len; - - if (over_size < new_size) - { - buff = XP_REALLOC_BLOCK(overflow->buf, - new_size * sizeof(char)); - if (buff == NULL) - { - return(MK_OUT_OF_MEMORY); - } - overflow->buf = buff; - overflow->size = new_size; - } - - /* lock the buffer so our pointer wizardry works correctly */ - XP_LOCK_BLOCK(overflow_buf, char *, overflow->buf); - XP_MEMMOVE(overflow_buf + over_len, buf, len); - XP_UNLOCK_BLOCK(overflow->buf); - overflow->len = new_size; - return 1; - - } - - /* - * If we are holding buffered data for this document from a - * previous parse attempt, - * Glomb it onto the beginning in a new buffer. - * - * We hold data if we might have a partial MDL tag element. - * We hold data if we might have a partial ampersand escape. - * We hold data if we might have a two character newline to skip. - */ - if (doc_data->hold) - { - if ((doc_data->hold_len + len) > doc_data->hold_size) - { - /* - * Grow the hold buffer if itis not big enough to hold - * the combined buffers. - */ -#ifdef XP_WIN16 - /* - * On the 32K limit, our hold_buf is already max size - */ -#else - buff = XP_REALLOC_BLOCK(doc_data->hold_buf, - ((doc_data->hold_size + HOLD_BUF_UNIT + len) * sizeof(char))); - if (buff == NULL) - { - return(MK_OUT_OF_MEMORY); - } - doc_data->hold_buf = buff; - doc_data->hold_size += (HOLD_BUF_UNIT + len); -#endif /* XP_WIN16 */ - } - - /* - * Lock down the hold buffer so we can do pointer magic - * on it. - */ - XP_LOCK_BLOCK(hold_buf, char *, (doc_data->hold_buf)); - - /* - * Append the new buffer to the old buffer - * Make it look like the merged chunk is what - * was passed to us originally. - */ -#ifdef XP_WIN16 - if ((doc_data->hold_len + len) > doc_data->hold_size) - { - extra = doc_data->hold_len + len - doc_data->hold_size; - extra_ptr = (char *)(buf + (len - extra)); - - XP_BCOPY(buf, (hold_buf + doc_data->hold_len), (len - extra)); - buf = hold_buf; - len = doc_data->hold_len + len - extra; - doc_data->hold_len = len; - } - else - { - XP_BCOPY(buf, (hold_buf + doc_data->hold_len), len); - buf = hold_buf; - len = len + doc_data->hold_len; - doc_data->hold_len = len; - } -#else - XP_BCOPY(buf, (hold_buf + doc_data->hold_len), len); - buf = hold_buf; - len = len + doc_data->hold_len; - doc_data->hold_len = len; -#endif /* XP_WIN16 */ - } - else - { - /* - * We always want the hold buffer to be locked as we enter the - * following while loop - */ - doc_data->hold_len = 0; - XP_LOCK_BLOCK(hold_buf, char *, (doc_data->hold_buf)); - } - - doc_data->hold = 0; - - /* - * Loop until we get a partial something to hold, - * or we have drained the buffer. - */ - while ((!doc_data->hold)&&(!doc_data->overflow_depth)&&(len != 0)) - { - char *tptr; - char *tptr2; - intn is_comment; - - /* - * The P_PLAIN_TEXT tag element is very special, and - * if we just got one, all other text is just dumped - * out of the parser as plain text. - */ - if (doc_data->brute_tag == P_PLAIN_TEXT) - { - tag = pa_CreateTextTag(doc_data, buf, len); - if (tag == NULL) - { - return(MK_OUT_OF_MEMORY); - } - ret = doc_data->output_tag(data_object, tag, PA_PARSED); - if (ret < 0) - { - return(ret); - } - buf = NULL; - len = 0; - break; - } - - /* - * In the case where we just removed a comment, or just opened - * a preformatting tag, we want to remove any newline that - * appears right after that tag element because we assume - * it was really "part of the element", I.E. WE are guessing - * that the user WANTS us to remove it, a dangerous guess. - * - * Depending on what platform generated the file, a newline - * could be \n, \r, or \r\n. Since it can span 2 characters, we - * may actually have to hold until the next buffer to - * throw away the newline. - */ - if (doc_data->lose_newline != FALSE) - { - if (*buf == '\n') - { - buf++; - len--; - if (len == 0) - { - buf = NULL; - } - if (doc_data->no_newline_count == 0) - doc_data->newline_count++; - doc_data->comment_bytes++; - } - else if ((*buf == '\r')&&(len == 1)) - { - doc_data->hold = 1; - /* - * Grow the hold buffer if it is not big enough to hold - * the rest of this buffer. - */ -#ifdef XP_WIN16 - /* - * On the 32K limit, our hold_buf is already max size - */ -#else - if (len > doc_data->hold_size) - { - XP_ASSERT(0); /* I don't think we can ever reach - this code since len is always equal to 1 and - hold_size is never zero. */ - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - buff = XP_REALLOC_BLOCK(doc_data->hold_buf, - ((doc_data->hold_size + HOLD_BUF_UNIT + len) * - sizeof(char))); - if (buff == NULL) - { - return(MK_OUT_OF_MEMORY); - } - doc_data->hold_buf = buff; - XP_LOCK_BLOCK(hold_buf, char *, - (doc_data->hold_buf)); - doc_data->hold_size += (HOLD_BUF_UNIT + len); - } -#endif /* XP_WIN16 */ - - XP_BCOPY(buf, hold_buf, len); - doc_data->hold_len = len; - continue; - } - /* Check for Dos or Mac style EOL (need at least 2 chars in buf)*/ - else if (*buf == '\r') - { - if ((*((char *)(buf + 1)) == '\n')) - { - /* DOS style EOL */ - buf += 2; - len -= 2; - if (len == 0) - { - buf = NULL; - } - if (doc_data->no_newline_count == 0) - doc_data->newline_count++; - doc_data->comment_bytes += 2; - } - else - { - /* Mac style EOL */ - buf++; - len--; - if (len == 0) - { - buf = NULL; - } - if (doc_data->no_newline_count == 0) - doc_data->newline_count++; - doc_data->comment_bytes++; - } - } - doc_data->lose_newline = FALSE; - } - - /* - * Find the start of any MDL tags in this buffer. - * Returns NULL if there are none. - */ - tptr = pa_FindMDLTag(doc_data, buf, len, &is_comment); - - /* - * Some portion of the start of the buffer is text. - */ - if (tptr != buf) - { - int32 text_len; - int32 new_len; - INTL_CharSetInfo c; - - /* - * Find the length of the text. - */ - if (tptr == NULL) - { - text_len = len; - } - else - { - text_len = (int32)(tptr - buf); - } - - /* - * Expand any ampersand escapes. We might need - * to hold a partial escape. Ampersand escapes - * are NOT expanded if we are inside one of the - * following elements. - */ - if ((doc_data->brute_tag == P_PLAIN_PIECE)|| - (doc_data->brute_tag == P_SERVER)|| - (doc_data->brute_tag == P_SCRIPT)|| - (doc_data->brute_tag == P_STYLE)) - { - tptr2 = NULL; - new_len = text_len; - } - else - { - /* - * If we have an MDL tag right after this, we can't have - * partial escapes because the tag is a guaranteed - * terminator. Thus force expansion is set to true. - */ - c = LO_GetDocumentCharacterSetInfo(doc_data->window_id); - if (tptr != NULL) - { - tptr2 = pa_ExpandEscapes(buf, text_len, - &new_len, TRUE, INTL_GetCSIWinCSID(c)); - } - else - { - tptr2 = pa_ExpandEscapes(buf, text_len, - &new_len, FALSE,INTL_GetCSIWinCSID(c)); - } - - /* - * Lump loss of escaped bytes into comment_bytes so that - * dead reckoning in layscrip.c doesn't come up short - */ - if (text_len > new_len) - doc_data->comment_bytes += text_len - new_len; - - } - - /* - * Create and parse the text into a layout element. - */ - tag = pa_CreateTextTag(doc_data, buf, new_len); - if (tag == NULL) - { - return(MK_OUT_OF_MEMORY); - } - ret = doc_data->output_tag(data_object, tag, PA_PARSED); - if (ret < 0) - { - return(ret); - } - - /* - * Check if we are holding a partial ampersand escape. - */ - if (tptr2 != NULL) - { - text_len = (int32)(tptr2 - buf); - tptr = tptr2; - is_comment = COMMENT_MAYBE; - } - - /* - * Move up pointers so beginning of tag now heads the buffer. - */ - buf = tptr; - if (buf == NULL) - { - len = 0; - } - else - { - len = len - text_len; - } - - if (doc_data->overflow_depth) - { - continue; - } - - } - - /* - * If we got a maybe, we need to save this - * remnant for later. - */ - if ((is_comment == COMMENT_MAYBE)&&(buf != NULL)) - { - doc_data->hold = 1; - /* - * Grow the hold buffer if it is not big enough to hold - * the rest of this buffer. - */ -#ifdef XP_WIN16 - /* - * On the 32K limit, our hold_buf is already max size - */ -#else - if (len > doc_data->hold_size) - { - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - buff = XP_REALLOC_BLOCK(doc_data->hold_buf, - ((doc_data->hold_size + HOLD_BUF_UNIT + len) * - sizeof(char))); - if (buff == NULL) - { - return(MK_OUT_OF_MEMORY); - } - doc_data->hold_buf = buff; - XP_LOCK_BLOCK(hold_buf, char *, - (doc_data->hold_buf)); - doc_data->hold_size += (HOLD_BUF_UNIT + len); - } -#endif /* XP_WIN16 */ - - XP_BCOPY(buf, hold_buf, len); - doc_data->hold_len = len; - } - /* - * else we either have the start of an MDL tag, or - * buf == NULL. Find the end of the tag if we - * have it in the buffer, otherwise return NULL. - */ - else - { - if ((is_comment == COMMENT_YES) || (is_comment == COMMENT_UNCOMMENT)) - { - tptr = pa_FindMDLEndComment(doc_data, buf, len); - } - else if (is_comment == COMMENT_PROCESS) - { - tptr = pa_FindMDLEndProcessInstruction(doc_data, buf, len); - } - else - { - tptr = pa_FindMDLEndTag(doc_data, buf, len); - } - - /* Skip over comment opening delimiter and JavaScript entity */ - if ((tptr != NULL) && (is_comment == COMMENT_UNCOMMENT)) - { - int32 skip_len = 0; - - /* pa_isolate_javascript_expression() stores a null - character after the JS expression. */ - while (*buf) { - buf++; - skip_len++; - } - buf += 2; /* Skip over }; JS entity delimiter */ - skip_len += 2; - - /* - * Lump loss of escaped bytes into comment_bytes so that - * dead reckoning in layscrip.c doesn't come up short - */ - doc_data->comment_bytes += skip_len; - len = len - skip_len; - - /* Erase the ending comment delimiter */ - XP_MEMMOVE(tptr-2, tptr+1, len - (tptr - buf - 3)); - len -= 3; - doc_data->comment_bytes += 3; - - /* Now start parsing all over again, this time with the comment - delimiters eliminated. */ - continue; - } - - /* - * Got the end of the MDL comment, - * discard the comment - */ - if ((tptr != NULL)&&((is_comment == COMMENT_YES)|| - (is_comment == COMMENT_PROCESS))) - { - int32 comment_len; - - comment_len = (int32)(tptr - buf) + 1; - - /* - * If we are inside one of the "special" - * tags that ignore all tags except their - * own endtags (e.g. P_TITLE, P_PLAIN_PIECE) - * we need to output this comment - * as normal text. - */ - if (doc_data->brute_tag != P_UNKNOWN) - { - tag = pa_CreateTextTag(doc_data, buf, comment_len); - if (tag == NULL) - { - return(MK_OUT_OF_MEMORY); - } - ret = doc_data->output_tag(data_object, tag, PA_PARSED); - if (ret < 0) - { - return(ret); - } - } - else if (doc_data->window_id && EDT_IS_EDITOR(doc_data->window_id)) - { - /* - * The Editor wants to see comments. - */ - tag = pa_CreateMDLTag(doc_data, buf, comment_len); - if (tag == NULL) - { - return(MK_OUT_OF_MEMORY); - } - ret = doc_data->output_tag(data_object, tag, PA_PARSED); - if (ret < 0) - { - return(ret); - } - } - else - { - /* - * Apply lose_newline heuristic after - * discarding a comment. - */ - doc_data->lose_newline = TRUE; - doc_data->comment_bytes += comment_len; - } - - /* - * Move the buffer forward. - */ - len = len - comment_len; - if (len == 0) - { - buf = NULL; - } - else - { - buf = tptr; - buf++; - } - } - /* - * Else got the end of the MDL tag! - */ - else if (tptr != NULL) - { - int32 text_len; - - /* - * Create and format the tag(s) - */ - text_len = (int32)(tptr - buf) + 1; - tag = pa_CreateMDLTag(doc_data, buf, text_len); - - /* - * If we are inside one of the "special" - * tags that ignore all tags except their - * own endtags (e.g. P_TITLE, P_PLAIN_PIECE) - * we check here to see if this is the - * proper end tag, if not, we turn it - * back into normal text. - */ - if (doc_data->brute_tag != P_UNKNOWN) - { - if ((tag == NULL)|| - (tag->is_end == FALSE)|| - (doc_data->brute_tag != tag->type)) - { - PA_FreeTag(tag); - /* - * Strip only the '<' which made us think this - * was an HTML tag. - */ - text_len = 1; - tptr = buf; - tag = pa_CreateTextTag(doc_data, buf, text_len); - if (tag == NULL) - { - return(MK_OUT_OF_MEMORY); - } - } - else - { - doc_data->brute_tag = P_UNKNOWN; - } - } - - /* - * These tags are special in that, after opening one - * of them, all other tags are ignored until the matching - * closing tag. - */ - if ((tag != NULL)&&(tag->is_end == FALSE)&& - ((tag->type == P_TITLE)|| - (tag->type == P_TEXTAREA)|| - (tag->type == P_PLAIN_PIECE)|| - (tag->type == P_PLAIN_TEXT)|| - (tag->type == P_SERVER)|| - (tag->type == P_SCRIPT)|| - (tag->type == P_STYLE))) - { - doc_data->brute_tag = tag->type; - } - - /* - * These tags are special in that, after opening one - * of them, the lose_newline heuristic is applied. - */ - if ((tag != NULL)&&(tag->is_end == FALSE)&& - ((tag->type == P_TITLE)|| - (tag->type == P_TEXTAREA)|| - (tag->type == P_PLAIN_PIECE)|| - (tag->type == P_LISTING_TEXT)|| - (tag->type == P_PREFORMAT))) - { - doc_data->lose_newline = TRUE; - } - - ret = doc_data->output_tag(data_object, tag, PA_PARSED); - if (ret < 0) - { - return(ret); - } - - /* - * Move the buffer forward. - */ - len = len - text_len; - if (len == 0) - { - buf = NULL; - } - else - { - buf = tptr; - buf++; - } - - if (doc_data->overflow_depth) - { - continue; - } - - } - /* - * We couldn't find the end of the MDL tag. - * Hold the start if we have one. - */ - else if (buf != NULL) - { - doc_data->hold = 1; - /* - * Grow the hold buffer if it is not big enough to hold - * the rest of this buffer. - */ -#ifdef XP_WIN16 - /* - * On the 32K limit, our hold_buf is already max size - */ -#else - if (len > doc_data->hold_size) - { - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - buff = XP_REALLOC_BLOCK(doc_data->hold_buf, - ((doc_data->hold_size + HOLD_BUF_UNIT + len) * - sizeof(char))); - if (buff == NULL) - { - return(MK_OUT_OF_MEMORY); - } - doc_data->hold_buf = buff; - XP_LOCK_BLOCK(hold_buf, char *, - (doc_data->hold_buf)); - doc_data->hold_size += (HOLD_BUF_UNIT + len); - } -#endif /* XP_WIN16 */ - - XP_BCOPY(buf, hold_buf, len); - doc_data->hold_len = len; - } - } /* end of else on COMMENT_MAYBE */ - } /* end of while */ - - /* - * If we got here because we entered overflow mode all of the - * left over data should go into the overflow buffer and the - * hold buffer should be left empty - */ - if (doc_data->overflow_depth && len > 0) - { - pa_Overflow *overflow = doc_data->overflow_stack; /* check for NULL? */ - char * overflow_buf; - int32 over_len = overflow->len; - int32 over_size = overflow->size; - int32 new_size = over_len + len; - - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - - if (over_size < new_size) - { - buff = XP_REALLOC_BLOCK(overflow->buf, - new_size * sizeof(char)); - if (buff == NULL) - { - return(MK_OUT_OF_MEMORY); - } - overflow->buf = buff; - overflow->size = new_size; - } - - /* - * We could be processing data that was passed in from the - * overflow_buf so we need to do an over-lap safe copy here - */ - XP_LOCK_BLOCK(overflow_buf, char *, overflow->buf); - XP_MEMMOVE(overflow_buf + over_len, buf, len); - XP_UNLOCK_BLOCK(overflow->buf); - overflow->len = new_size; - return 1; - } - - /* - * Unlock the hold buffer, and clear it if we - * aren't holding anything this time around. - */ - if ((!doc_data->hold)&&(doc_data->hold_buf != NULL)) - { - hold_buf = NULL; - doc_data->hold_len = 0; - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - } - else if (doc_data->hold_buf != NULL) - { - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - } - -#ifdef XP_WIN16 - if (extra_ptr != NULL) - { - if ((doc_data->hold_len + extra) > doc_data->hold_size) - { - char minibuf[1]; - intn ret; - - XP_LOCK_BLOCK(hold_buf, char *, (doc_data->hold_buf)); - minibuf[0] = *hold_buf; - XP_BCOPY((char *)(hold_buf + 1), hold_buf, (doc_data->hold_len - 1)); - doc_data->hold_len--; - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - - tag = pa_CreateTextTag(doc_data, minibuf, 1); - if (tag == NULL) - { - return(MK_OUT_OF_MEMORY); - } - ret = doc_data->output_tag(data_object, tag, PA_PARSED); - if (ret < 0) - { - return(ret); - } - - ret = PA_ParseBlock(stream, extra_ptr, extra); - return(ret); - } - else - { - XP_LOCK_BLOCK(hold_buf, char *, (doc_data->hold_buf)); - XP_BCOPY(extra_ptr, (char *)(hold_buf + doc_data->hold_len), extra); - doc_data->hold_len += extra; - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - } - } -#endif /* XP_WIN16 */ - - return(1); -} - - -/************************************* - * Function: PA_MDLComplete - * - * Description: This is a very important entry point to the parser, - * but it will never be called directly. It will be - * placed into the stream returned by PA_BeginParseMDL() - * and be called from there. It tells the parser that the - * passed document is done parsing, there is no new data. - * - * Params: The data_object created and placed in the stream class - * in PA_BeginParseMDL(). This contains document specific - * parse state information. - * - * Returns: nothing. - *************************************/ -void -PA_MDLComplete(NET_StreamClass *stream) -{ - void *data_object=stream->data_object; - pa_DocData *doc_data; - PA_Tag *tag; - Bool is_main_context_stream; - - /* - * This MDL document is complete - */ - doc_data = (pa_DocData *)data_object; - - XP_ASSERT(doc_data->overflow_depth == 0); - - /* - * If we were holding some data we hadn't parsed yet, we need - * to flush it through now. Since we couldn't resolve whatever - * we were waiting for, just push it through as plain text. - */ - if (doc_data->hold) - { - char *tptr; - - /* - * Lock down the hold buffer so we can do pointer magic - * on it. - */ - XP_LOCK_BLOCK(tptr, char *, (doc_data->hold_buf)); - - /* - * Due to NCSA Mosaic, there are many incorrectly - * commented documents out there, that have the <!-- comment - * start, but expect a different end such as --!> or just > - * If we have finished this document, and the hold buffer - * has a starting comment, this is probably what happened, - * So terminate the starting comment with the next > and - * parse on. - * Of necessity this may involve recursion for multiple comments - */ - if ((doc_data->hold_len > 4)&&(XP_STRNCMP(tptr, "<!--", 4) == 0)) - { - char *nothing; - NET_StreamClass *newstream; - - /* - * Break the comment - */ - tptr[2] = 'C'; - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - - /* - * Reparse this, then call yourself. - */ - nothing = (char*) XP_ALLOC(1); - if (nothing == NULL) - { - XP_FREE_BLOCK((doc_data->hold_buf)); - return; - } - nothing[0] = '\0'; - newstream = doc_data->parser_stream; - PA_HoldDocData(doc_data); - (void)PA_ParseBlock(newstream, nothing, 0); - XP_FREE(nothing); - PA_DropDocData(newstream); - return; - } -#ifndef LENIENT_END_TAG - /* - * Also due to allowing '>' in quoted attributes, if they forget - * to close a quote, and there is no other in the entire document, - * we could have held the whole thing looking for the close quote, - * and never found the tag. Skip this malformed tag by dropping - * its starting '<' and parsing on. - * Of necessity this may involve recursion for multiple errors. - */ - else if ((doc_data->hold_len > 3)&&(*tptr == '<')) - { - char *nothing; - PA_Tag *tmp_tag; - NET_StreamClass *newstream; - - /* - * Push out the '<' - */ - nothing = (char*) XP_ALLOC(1); - if (nothing == NULL) - { - XP_FREE_BLOCK((doc_data->hold_buf)); - return; - } - nothing[0] = '<'; - tmp_tag = pa_CreateTextTag(doc_data, nothing, 1); - doc_data->output_tag(data_object, tmp_tag, PA_PARSED); - - /* - * Remove the '<' an move up the hold buffer. - */ - XP_BCOPY((char *)(tptr + 1), tptr, (doc_data->hold_len - 1)); - doc_data->hold_len--; - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - - /* - * reparse the rest. - */ - nothing[0] = '\0'; - newstream = doc_data->parser_stream; - PA_HoldDocData(doc_data); - (void)PA_ParseBlock(newstream, nothing, 0); - XP_FREE(nothing); - PA_DropDocData(newstream); - return; - } -#endif /* LENIENT_END_TAG */ - - tag = pa_CreateTextTag(doc_data, tptr, doc_data->hold_len); - doc_data->output_tag(data_object, tag, PA_PARSED); - - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - XP_FREE_BLOCK((doc_data->hold_buf)); - doc_data->hold_len = 0; - doc_data->hold_buf = NULL; - doc_data->hold = 0; - } - else if (doc_data->hold_buf != NULL) - { - XP_FREE_BLOCK((doc_data->hold_buf)); - doc_data->hold_buf = NULL; - doc_data->hold_size = 0; - } - - doc_data->output_tag(data_object, NULL, PA_COMPLETE); - is_main_context_stream = pa_RemoveDocData(doc_data); - - /* - * free up all the data allocated when this stream was initiated. - */ - if (doc_data->url_struct != NULL) - { - NET_FreeURLStruct(doc_data->url_struct); - } - - if (doc_data->overflow_stack) - { - pa_Overflow *overflow; - - while ((overflow = PA_PopOverflow(doc_data))) - PA_FreeOverflow(overflow); - - doc_data->overflow_stack = NULL; - } - - if (doc_data->url != NULL) - { - XP_FREE(doc_data->url); - } - if (is_main_context_stream) - { - XP_DELETE(doc_data->parser_stream); - } - - XP_DELETE(doc_data); -} - - -/************************************* - * Function: PA_MDLAbort - * - * Description: This is a very important entry point to the parser, - * but it will never be called directly. It will be - * placed into the stream returned by PA_BeginParseMDL() - * and be called from there. It tells the parser that the - * passed document is aborted, there is no new data, - * throw out everything you have and stop parsing. - * - * Params: The data_object created and placed in the stream class - * in PA_BeginParseMDL(). This contains document specific - * parse state information. Also passed a character message - * which is the reason for the abort. - * - * Returns: nothing. - *************************************/ -void -PA_MDLAbort(NET_StreamClass *stream, int status) -{ - void *data_object=stream->data_object; - pa_DocData *doc_data; - Bool is_main_context_stream; - /* - * This MDL document is complete - */ - doc_data = (pa_DocData *)data_object; - - /* - * If we were holding some data we hadn't parsed yet, we need - * to throw it out now. - */ - if (doc_data->hold) - { - XP_UNLOCK_BLOCK((doc_data->hold_buf)); - XP_FREE_BLOCK((doc_data->hold_buf)); - doc_data->hold_len = 0; - doc_data->hold_buf = NULL; - doc_data->hold = 0; - } - else if (doc_data->hold_buf != NULL) - { - XP_FREE_BLOCK((doc_data->hold_buf)); - doc_data->hold_buf = NULL; - doc_data->hold_size = 0; - } - - doc_data->output_tag(data_object, NULL, PA_ABORT); - is_main_context_stream = pa_RemoveDocData(doc_data); - - /* - * free up all the data allocated when this stream was initiated. - */ - if (doc_data->url_struct != NULL) - { - NET_FreeURLStruct(doc_data->url_struct); - doc_data->url_struct = NULL; - } - if (doc_data->url != NULL) - { - XP_FREE(doc_data->url); - } - - if (doc_data->overflow_stack) - { - pa_Overflow *overflow; - - while ((overflow = PA_PopOverflow(doc_data))) - PA_FreeOverflow(overflow); - } - doc_data->overflow_depth = 0; - - if (is_main_context_stream) - { - XP_DELETE(doc_data->parser_stream); - } - XP_DELETE(doc_data); -} - -static pa_DocData * -pa_FetchDocData(MWContext *window_id) -{ - pa_DocDataList *dptr; - pa_DocData *doc_data; - - dptr = DocDataList; - while (dptr != NULL) - { - if (dptr->window_id == window_id) - { - break; - } - dptr = dptr->next; - } - if (dptr == NULL) - { - doc_data = NULL; - } - else - { - doc_data = dptr->doc_data; - } - - return(doc_data); -} - -XP_Bool ValidateDocData(MWContext *window_id) -{ - if (pa_FetchDocData(window_id)) - return TRUE; - return FALSE; -} - -static Bool -pa_RemoveDocData(pa_DocData *target_doc_data) -{ - pa_DocDataList *dptr; - pa_DocDataList *doc_data; - - doc_data = DocDataList; - dptr = DocDataList; - while (dptr != NULL) - { - if (dptr->doc_data == target_doc_data) - { - break; - } - doc_data = dptr; - dptr = dptr->next; - } - if (dptr != NULL) - { - if (dptr == DocDataList) - { - DocDataList = DocDataList->next; - } - else - { - doc_data->next = dptr->next; - } - XP_DELETE(dptr); - return TRUE; - } - - return FALSE; -} - -static Bool -pa_StoreDocData(MWContext *window_id, pa_DocData *new_doc_data) -{ - pa_DocDataList *dptr; - - dptr = DocDataList; - while (dptr != NULL) - { - if (dptr->window_id == window_id) - { - break; - } - dptr = dptr->next; - } - - if (dptr == NULL) - { - dptr = XP_NEW(pa_DocDataList); - if (dptr == NULL) - { - return FALSE; - } - dptr->window_id = window_id; - dptr->next = DocDataList; - DocDataList = dptr; - } - dptr->doc_data = new_doc_data; - return TRUE; -} - -void -PA_PushOverflow(pa_DocData* doc_data) -{ - pa_Overflow *overflow = XP_NEW(pa_Overflow); - - if (overflow == NULL) return; - - overflow->buf = XP_ALLOC(HOLD_BUF_UNIT * sizeof(char)); - if (overflow->buf == NULL) - { - XP_FREE(overflow); - return; - } - - overflow->buf[0] = 0; - - overflow->size = HOLD_BUF_UNIT; - overflow->len = 0; - - overflow->next = doc_data->overflow_stack; - doc_data->overflow_stack = overflow; -} - -pa_Overflow * -PA_PopOverflow(pa_DocData* doc_data) -{ - pa_Overflow *overflow = doc_data->overflow_stack; - - if (!overflow) return NULL; - - doc_data->overflow_stack = overflow->next; - - overflow->next = NULL; - - return overflow; -} - -void -PA_FreeOverflow(pa_Overflow *overflow) -{ - XP_FREE(overflow->buf); - XP_FREE(overflow); -} - -int -PA_GetOverflowDepth(pa_DocData* doc_data) -{ - return doc_data->overflow_depth; -} - -XP_Block -PA_GetOverflowBuf(pa_DocData* doc_data) -{ - XP_ASSERT(doc_data->overflow_stack); - if (!doc_data->overflow_stack) return NULL; - - return doc_data->overflow_stack->buf; -} - -#ifdef PROFILE -#pragma profile off -#endif - diff --git a/mozilla/lib/libparse/pa_parse.h b/mozilla/lib/libparse/pa_parse.h deleted file mode 100644 index 59cf9f802f4..00000000000 --- a/mozilla/lib/libparse/pa_parse.h +++ /dev/null @@ -1,139 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef PA_PARSE_H -#define PA_PARSE_H - -#include "xp.h" -#include "pa_tags.h" -#include "edttypes.h" -#include "csid.h" - -#define PA_ABORT -1 -#define PA_PARSED 0 -#define PA_COMPLETE 1 - -#define COMMENT_NO 0 -#define COMMENT_YES 1 -#define COMMENT_MAYBE 2 -#define COMMENT_UNCOMMENT 3 /* A conditional comment which turned - out not to be a comment. The - commit delimiters need to be - stripped off. */ -#define COMMENT_PROCESS 4 /* processing instruction <? gunk ?> */ - - -/************************* - * The following is to speed up case conversion - * to allow faster checking of caseless equal among strings. - * Used in pa_TagEqual(). - *************************/ -#ifdef NON_ASCII_STRINGS -# define TOLOWER(x) (tolower((unsigned int)(x))) -#else /* ASCII TABLE LOOKUP */ - extern unsigned char lower_lookup[256]; -# define TOLOWER(x) (lower_lookup[(unsigned int)(x)]) -#endif /* NON_ASCII_STRINGS */ - - -/******************************* - * PRIVATE STRUCTURES - *******************************/ -typedef struct pa_Overflow_struct { - XP_Block buf; - int32 size; - int32 len; - struct pa_Overflow_struct *next; -} pa_Overflow; - -typedef struct pa_DocData_struct { - int32 doc_id; - MWContext *window_id; - URL_Struct *url_struct; - PA_OutputFunction *output_tag; - XP_Block hold_buf; /* for when we are partway though a tag */ - int32 hold_size; - int32 hold_len; - pa_Overflow *overflow_stack; - int overflow_depth; /* send data to overflow_buf */ - int32 brute_tag; - int32 comment_bytes; - void *layout_state; - char *url; - FO_Present_Types format_out; - ED_Buffer *edit_buffer; - NET_StreamClass *parser_stream; - uint no_newline_count; - uint newline_count; - int stream_count; - int stream_status; - PRPackedBool from_net; - PRPackedBool is_inline_stream; /* Does this doc_data correspond to an inline - stream */ - PRPackedBool hold; /* send data to hold_buf */ - PRPackedBool waiting_for_js_thread; - PRPackedBool lose_newline; -} pa_DocData; - -struct pa_TagTable { char *name; int id; }; - - -/******************************* - * PUBLIC FUNCTIONS - *******************************/ -extern void PA_FreeTag(PA_Tag *); -extern void PA_FetchRequestedNameValues(PA_Tag *tag, char *namesToFind[], int32 numNamesToFind, char *values[], uint16 win_csid); -extern PA_Block PA_FetchParamValue(PA_Tag *, char *, uint16); -extern int32 PA_FetchAllNameValues(PA_Tag *, char ***, char ***, uint16); -extern Bool PA_TagHasParams(PA_Tag *); - -extern pa_DocData * PA_HoldDocData(pa_DocData * doc_data); -extern pa_DocData * PA_DropDocData(NET_StreamClass *stream); - -extern void PA_PushOverflow(pa_DocData* doc_data); -extern pa_Overflow* PA_PopOverflow(pa_DocData* doc_data); -extern void PA_FreeOverflow(pa_Overflow *overflow); -extern int PA_GetOverflowDepth(pa_DocData *doc_data); -extern XP_Block PA_GetOverflowBuf(pa_DocData *doc_data); - -/******************************* - * PRIVATE FUNCTIONS - *******************************/ -extern intn pa_TagEqual(char *, char *); -extern char *pa_FindMDLTag(pa_DocData *, char *, int32, intn *); -extern char *pa_FindMDLEndTag(pa_DocData *, char *, int32); -extern char *pa_FindMDLEndComment(pa_DocData *, char *, int32); -extern char *pa_FindMDLEndProcessInstruction(pa_DocData *, char *, int32); -extern PA_Tag *pa_CreateTextTag(pa_DocData *, char *, int32); -extern PA_Tag *pa_CreateMDLTag(pa_DocData *, char *, int32); -extern char *pa_ExpandEscapes(char *, int32, int32 *, Bool, int16); -extern struct pa_TagTable * pa_LookupTag (char* str, unsigned int len); - -extern const char *pa_PrintTagToken(int32); /* for debugging only */ -extern intn pa_tokenize_tag(char *str); -extern void pa_FlushOverflow(NET_StreamClass *stream); - -/* -extern intn LO_Format(int32, PA_Tag *, intn); -*/ - - #endif /* PA_PARSE_H */ diff --git a/mozilla/lib/libparse/pa_tags.h b/mozilla/lib/libparse/pa_tags.h deleted file mode 100644 index 6c03512caa5..00000000000 --- a/mozilla/lib/libparse/pa_tags.h +++ /dev/null @@ -1,396 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/***************** - * These define all the strings that match - * to all the MDL tag elements. Note, these strings - * MUST be in all lower case. The actual language - * has them as caseless, but for optimization purposes - * all these are assumed to already be all lower case. - *******************/ -#define PT_TITLE "title" -#define PT_INDEX "isindex" -#define PT_BASE "base" -#define PT_LINK "link" -#define PT_HEADER_1 "h1" -#define PT_HEADER_2 "h2" -#define PT_HEADER_3 "h3" -#define PT_HEADER_4 "h4" -#define PT_HEADER_5 "h5" -#define PT_HEADER_6 "h6" -#define PT_ANCHOR "a" -#define PT_PARAGRAPH "p" -#define PT_ADDRESS "address" -#define PT_IMAGE "img" -#define PT_PLAIN_TEXT "plaintext" -#define PT_PLAIN_PIECE "xmp" -#define PT_PREFORMAT "pre" -#define PT_LISTING_TEXT "listing" -#define PT_UNUM_LIST "ul" -#define PT_NUM_LIST "ol" -#define PT_MENU "menu" -#define PT_DIRECTORY "dir" -#define PT_LIST_ITEM "li" -#define PT_DESC_LIST "dl" -#define PT_DESC_TITLE "dt" -#define PT_DESC_TEXT "dd" -#define PT_STRIKEOUT "strike" -#define PT_FIXED "tt" -#define PT_BOLD "b" -#define PT_ITALIC "i" -#define PT_EMPHASIZED "em" -#define PT_STRONG "strong" -#define PT_CODE "code" -#define PT_SAMPLE "samp" -#define PT_KEYBOARD "kbd" -#define PT_VARIABLE "var" -#define PT_CITATION "cite" -#define PT_BLOCKQUOTE "blockquote" -#define PT_FORM "form" -#define PT_INPUT "input" -#define PT_SELECT "select" -#define PT_OPTION "option" -#define PT_TEXTAREA "textarea" -#define PT_HRULE "hr" -#define PT_LINEBREAK "br" -#define PT_WORDBREAK "wbr" -#define PT_NOBREAK "nobr" -#define PT_BASEFONT "basefont" -#define PT_FONT "font" -#define PT_BLINK "blink" -#define PT_NEW_IMAGE "image" -#define PT_CENTER "center" -#define PT_SUBDOC "subdoc" -#define PT_CELL "cell" -#define PT_TABLE "table" -#define PT_CAPTION "caption" -#define PT_TABLE_ROW "tr" -#define PT_TABLE_HEADER "th" -#define PT_TABLE_DATA "td" -#define PT_EMBED "embed" -#define PT_BODY "body" -#define PT_META "meta" -#define PT_COLORMAP "colormap" -#define PT_HYPE "hype" -#define PT_BIG "big" -#define PT_SMALL "small" -#define PT_SUPER "sup" -#define PT_SUB "sub" -#define PT_GRID "frameset" -#define PT_GRID_CELL "frame" -#define PT_NOGRIDS "noframes" -#define PT_JAVA_APPLET "applet" -#define PT_PARAM "param" -#define PT_MAP "map" -#define PT_AREA "area" -#define PT_DIVISION "div" -#define PT_KEYGEN "keygen" -#define PT_SCRIPT "script" -#define PT_NOSCRIPT "noscript" -#define PT_NOEMBED "noembed" -#define PT_HEAD "head" -#define PT_HTML "html" -#define PT_SERVER "server" -#define PT_CERTIFICATE "certificate" -#define PT_STRIKE "s" -#define PT_UNDERLINE "u" -#define PT_SPACER "spacer" -#define PT_MULTICOLUMN "multicol" -#define PT_NSCP_CLOSE "nscp_close" -#define PT_NSCP_OPEN "nscp_open" -#define PT_ILAYER "ilayer" -#define PT_LAYER "layer" -#define PT_NOLAYER "nolayer" -#define PT_STYLE "style" -#define PARAM_MEDIA "media" -#define PT_MQUOTE "mquote" -#define PT_OBJECT "object" -#define PT_SPAN "span" -#define PT_SPELL "spell" -#define PT_INLINEINPUT "inlineinput" -#define PT_NSCP_REBLOCK "nscp_reblock" -#define PT_NSDT "nsdt" -#define PT_INLINEINPUTTHICK "jean" -#define PT_INLINEINPUTDOTTED "charles" -#define PT_BUILTIN "builtin" - -/*************** - * Unique IDs to identify - * all the above tag elements. - * P_TEXT is for text that - * is not part of a tag. - * NB: these must fit in an int8 - * (see include/structs.h) - ***************/ -#define P_UNKNOWN -1 -#define P_TEXT 0 -#define P_TITLE 1 -#define P_INDEX 2 -#define P_BASE 3 -#define P_LINK 4 -#define P_HEADER_1 5 -#define P_HEADER_2 6 -#define P_HEADER_3 7 -#define P_HEADER_4 8 -#define P_HEADER_5 9 -#define P_HEADER_6 10 -#define P_ANCHOR 11 -#define P_PARAGRAPH 12 -#define P_ADDRESS 13 -#define P_IMAGE 14 -#define P_PLAIN_TEXT 15 -#define P_PLAIN_PIECE 16 -#define P_PREFORMAT 17 -#define P_LISTING_TEXT 18 -#define P_UNUM_LIST 19 -#define P_NUM_LIST 20 -#define P_MENU 21 -#define P_DIRECTORY 22 -#define P_LIST_ITEM 23 -#define P_DESC_LIST 24 -#define P_DESC_TITLE 25 -#define P_DESC_TEXT 26 -#define P_STRIKEOUT 27 -#define P_FIXED 28 -#define P_BOLD 29 -#define P_ITALIC 30 -#define P_EMPHASIZED 31 -#define P_STRONG 32 -#define P_CODE 33 -#define P_SAMPLE 34 -#define P_KEYBOARD 35 -#define P_VARIABLE 36 -#define P_CITATION 37 -#define P_BLOCKQUOTE 38 -#define P_FORM 39 -#define P_INPUT 40 -#define P_SELECT 41 -#define P_OPTION 42 -#define P_TEXTAREA 43 -#define P_HRULE 44 -#define P_LINEBREAK 45 -#define P_WORDBREAK 46 -#define P_NOBREAK 47 -#define P_BASEFONT 48 -#define P_FONT 49 -#define P_BLINK 50 -#define P_NEW_IMAGE 51 -#define P_CENTER 52 -#define P_SUBDOC 53 -#define P_CELL 54 -#define P_TABLE 55 -#define P_CAPTION 56 -#define P_TABLE_ROW 57 -#define P_TABLE_HEADER 58 -#define P_TABLE_DATA 59 -#define P_EMBED 60 -#define P_BODY 61 -#define P_META 62 -#define P_COLORMAP 63 -#define P_HYPE 64 -#define P_BIG 65 -#define P_SMALL 66 -#define P_SUPER 67 -#define P_SUB 68 -#define P_GRID 69 -#define P_GRID_CELL 70 -#define P_NOGRIDS 71 -#define P_JAVA_APPLET 72 -#define P_PARAM 73 -#define P_MAP 74 -#define P_AREA 75 -#define P_DIVISION 76 -#define P_KEYGEN 77 -#define P_SCRIPT 78 -#define P_NOSCRIPT 79 -#define P_NOEMBED 80 -#define P_HEAD 81 -#define P_HTML 82 -#define P_SERVER 83 -#define P_CERTIFICATE 84 -#define P_ILAYER 85 -#define P_STRIKE 86 -#define P_UNDERLINE 87 -#define P_SPACER 88 -#define P_MULTICOLUMN 89 -#define P_NSCP_CLOSE 90 -#define P_NSCP_OPEN 91 -#define P_BLOCK 92 -#define P_LAYER 93 -#define P_STYLE 94 -#define P_MQUOTE 95 -#define P_SPAN 96 -#define P_SPELL 97 -#define P_INLINEINPUT 98 -#define P_NSCP_REBLOCK 99 -#define P_OBJECT 100 -#define P_NSDT 101 -#define P_INLINEINPUTTHICK 102 -#define P_INLINEINPUTDOTTED 103 -#define P_NOLAYER 104 -#define P_BUILTIN 105 -#define P_MAX 106 - -/***************** - * These define all the strings that match - * to all the parameters that can occur in MDL tag elements. - * Note, these strings - * MUST be in all lower case. The actual language - * has them as caseless, but for optimization purposes - * all these are assumed to already be all lower case. - *******************/ -#define PARAM_TEXT "text" -#define PARAM_HREF "href" -#define PARAM_PRE "pre" /* prefetch value */ -#define PARAM_SRC "src" -#define PARAM_LOWSRC "lowsrc" -#define PARAM_ALT "alt" -#define PARAM_SUPPRESS "suppress" -#define PARAM_NAME "name" -#define PARAM_SIZE "size" -#define PARAM_POINT_SIZE "point-size" -#define PARAM_FONT_WEIGHT "font-weight" -#define PARAM_ALIGN "align" -#define PARAM_VALIGN "valign" -#define PARAM_NOSHADE "noshade" -#define PARAM_WIDTH "width" -#define PARAM_HEIGHT "height" -#define PARAM_TYPE "type" -#define PARAM_START "start" -#define PARAM_VALUE "value" -#define PARAM_BORDER "border" -#define PARAM_VSPACE "vspace" -#define PARAM_HSPACE "hspace" -#define PARAM_CLEAR "clear" -#define PARAM_ACTION "action" -#define PARAM_METHOD "method" -#define PARAM_MAXLENGTH "maxlength" -#define PARAM_CHECKED "checked" -#define PARAM_ROWS "rows" -#define PARAM_COLS "cols" -#define PARAM_MULTIPLE "multiple" -#define PARAM_SELECTED "selected" -#define PARAM_PROMPT "prompt" -#define PARAM_COMPACT "compact" -#define PARAM_ISMAP "ismap" -#define PARAM_ROWSPAN "rowspan" -#define PARAM_COLSPAN "colspan" -#define PARAM_WRAP "wrap" -#define PARAM_NOWRAP "nowrap" -#define PARAM_TABSTOP "tabstop" -#define PARAM_FOREGROUND "foreground" -#define PARAM_BACKGROUND "background" -#define PARAM_BGCOLOR "bgcolor" -#define PARAM_COLOR "color" -#define PARAM_LINK "link" -#define PARAM_VLINK "vlink" -#define PARAM_ALINK "alink" -#define PARAM_CELLPAD "cellpadding" -#define PARAM_TOPPAD "toppadding" -#define PARAM_BOTTOMPAD "bottompadding" -#define PARAM_LEFTPAD "leftpadding" -#define PARAM_RIGHTPAD "rightpadding" -#define PARAM_CELLSPACE "cellspacing" -#define PARAM_HTTP_EQUIV "http-equiv" -#define PARAM_CONTENT "content" -#define PARAM_TARGET "target" -#define PARAM_ENCODING "enctype" -#define PARAM_SHAPE "shape" -#define PARAM_COORDS "coords" -#define PARAM_USEMAP "usemap" -#define PARAM_SCROLLING "scrolling" -#define PARAM_NORESIZE "noresize" -#define PARAM_MARGINWIDTH "marginwidth" -#define PARAM_MARGINHEIGHT "marginheight" -#define PARAM_CODE "code" -#define PARAM_CODEBASE "codebase" -#define PARAM_ARCHIVE "archive" -#define PARAM_MAYSCRIPT "mayscript" -#define PARAM_LANGUAGE "language" -#define PARAM_VARIABLE "variable" -#define PARAM_HIDDEN "hidden" -#define PARAM_VISIBILITY "visibility" -#define PARAM_GUTTER "gutter" -#define PARAM_LEFT "left" -#define PARAM_TOP "top" -#define PARAM_ZINDEX "z-index" -#define PARAM_MATCH "match" -#define PARAM_GROUP "group" -#define PARAM_ABOVE "above" -#define PARAM_BELOW "below" -#define PARAM_LOCKED "locked" -#define PARAM_DIRECT "direct" -#define PARAM_FRAMEBORDER "frameborder" -#define PARAM_BORDERCOLOR "bordercolor" -#define PARAM_FACE "face" -#define PARAM_CLASS "class" -#define PARAM_ID "id" -#define PARAM_STYLE "style" -#define PARAM_OVERFLOW "overflow" -#define PARAM_X "x" -#define PARAM_PAGEX "pagex" -#define PARAM_Y "y" -#define PARAM_PAGEY "pagey" -#define PARAM_CLIP "clip" -#define PARAM_CODETYPE "codetype" -#define PARAM_CLASSID "classid" -#define PARAM_DATA "data" -#define PARAM_REL "rel" -#define PARAM_SMALL_BM_ICON "small_bookmark_icon" -#define PARAM_LARGE_BM_ICON "large_bookmark_icon" -#define PARAM_MAIL "mail" -#define PARAM_NOSAVE "nosave" -#define PARAM_LOCALDATA "localdata" -#define PARAM_DISABLED "disabled" -#define PARAM_READONLY "readonly" - -/* Mocha event handler names */ -#define PARAM_ONLOAD "onload" -#define PARAM_ONUNLOAD "onunload" -#define PARAM_ONSCROLL "onscroll" -#define PARAM_ONFOCUS "onfocus" -#define PARAM_ONBLUR "onblur" -#define PARAM_ONSELECT "onselect" -#define PARAM_ONCHANGE "onchange" -#define PARAM_ONRESET "onreset" -#define PARAM_ONSUBMIT "onsubmit" -#define PARAM_ONCLICK "onclick" -#define PARAM_ONMOUSEOVER "onmouseover" -#define PARAM_ONMOUSEOUT "onmouseout" -#define PARAM_ONLOCATE "onlocate" -#define PARAM_ONABORT "onabort" -#define PARAM_ONERROR "onerror" -#define PARAM_ONHELP "onhelp" -#define PARAM_ONMOUSEDOWN "onmousedown" -#define PARAM_ONMOUSEUP "onmouseup" -#define PARAM_ONDBLCLICK "ondblclick" -#define PARAM_ONKEYDOWN "onkeydown" -#define PARAM_ONKEYUP "onkeyup" -#define PARAM_ONKEYPRESS "onkeypress" -#define PARAM_ONDRAGDROP "ondragdrop" -#define PARAM_ONMOVE "onmove" -#define PARAM_ONRESIZE "onresize" - -/* Security (keygen) attributes */ -#define PARAM_CHALLENGE "challenge" -#define PARAM_PQG "pqg" -#define PARAM_KEYTYPE "keytype" diff --git a/mozilla/lib/libpics/Makefile b/mozilla/lib/libpics/Makefile deleted file mode 100644 index efead8bcecf..00000000000 --- a/mozilla/lib/libpics/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../.. - -MODULE = pics -LIBRARY_NAME = pics - -CSRCS = cslabel.c \ - csparse.c \ - htchunk.c \ - htlist.c \ - htstring.c \ - lablpars.c \ - picsapi.c \ - $(NULL) - -REQUIRES = js nspr dbm img layer util pref security httpurl network - -include $(DEPTH)/config/rules.mk diff --git a/mozilla/lib/libpics/Makefile.in b/mozilla/lib/libpics/Makefile.in deleted file mode 100644 index 414613132d8..00000000000 --- a/mozilla/lib/libpics/Makefile.in +++ /dev/null @@ -1,45 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = pics -LIBRARY_NAME = pics - -CSRCS = cslabel.c \ - csparse.c \ - htchunk.c \ - htlist.c \ - htstring.c \ - lablpars.c \ - picsapi.c \ - $(NULL) - -REQUIRES = js dbm img layer util pref security httpurl network - -include $(topsrcdir)/config/rules.mk diff --git a/mozilla/lib/libpics/cslabel.c b/mozilla/lib/libpics/cslabel.c deleted file mode 100644 index 2443afec723..00000000000 --- a/mozilla/lib/libpics/cslabel.c +++ /dev/null @@ -1,1614 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ - -/* --- BEGIN added by mharmsen@netscape.com on 7/9/97 --- */ -#include "xp.h" -/* --- END added by mharmsen@netscape.com on 7/9/97 --- */ -/* #include "sysdep.h" jhines--7/9/97 */ -/*#include "HTUtils.h" */ -#include "htlist.h" -#include "htstring.h" -#include "csparse.h" -#include "csll.h" -#include "csllst.h" - -#define GetCSLabel(A) ((A)->target.pCSLabel) -#define SETNEXTSTATE(target, subState) \ - pCSParse->pTargetObject = target; \ - pCSParse->currentSubState = subState; - - -/* C H A R A C T E R S E T V A L I D A T I O N */ -/* The BNF for PICS labels describes the valid character ranges for each of - * the label fields. Defining NO_CHAR_TEST will disable the tedious checking - * of these ranges for a slight performance increase. - */ -#ifdef NO_CHAR_TEST -#define charSetOK(A, B, C) -#define CHECK_CAR_SET(A) -#define SET_CHAR_SET(A) -#else /* !NO_CHAR_TEST */ -typedef enum {CharSet_ALPHAS = 1, CharSet_DIGITS = 2, CharSet_PLUSMINUS = 4, CharSet_FORSLASH = 8, - CharSet_EXTENS = 0x10, CharSet_BASE64_EXTRAS = 0x20, CharSet_DATE_EXTRAS = 0x40, CharSet_URL_EXTRAS = 0x80, - /* ------------------ BNF names are combinations of the above ------------------- */ - CharSet_NUMBER = CharSet_DIGITS | CharSet_PLUSMINUS, - CharSet_ALPHANUMPM = CharSet_ALPHAS | CharSet_DIGITS | CharSet_PLUSMINUS, - CharSet_TRANSMIT_NAME = CharSet_ALPHANUMPM | CharSet_URL_EXTRAS, - CharSet_EXT_ALPHANUM = CharSet_ALPHANUMPM | CharSet_EXTENS, - CharSet_BASE64 = CharSet_ALPHAS | CharSet_DIGITS | CharSet_BASE64_EXTRAS, - CharSet_URL = CharSet_ALPHAS | CharSet_DIGITS | CharSet_URL_EXTRAS, - CharSet_DATE = CharSet_DIGITS | CharSet_DATE_EXTRAS, - CharSet_EXT_DATA = CharSet_DATE | CharSet_URL | CharSet_NUMBER | CharSet_EXT_ALPHANUM - } CharSet_t; - -PRIVATE BOOL charSetOK(CSParse_t * pCSParse, char * checkMe, CharSet_t set); -#define CHECK_CAR_SET(A) \ - if (!charSetOK(pCSParse, token, A)) \ - return StateRet_ERROR_BAD_CHAR; -#define SET_CHAR_SET(A) pCSLabel->targetCharSet = A; -#endif /* !NO_CHAR_TEST */ - -/* C S L L S t a t e */ -/* This holds label list data and the methods to view it. All application - * interface is intended to go through these methods. See User/Parsing.html - */ -struct CSLabel_s { - CSLLData_t * pCSLLData; - - LabelError_t * pCurrentLabelError; - LabelOptions_t * pCurrentLabelOptions; - Extension_t * pCurrentExtension; - ExtensionData_t * pCurrentExtensionData; - - ServiceInfo_t * pCurrentServiceInfo; - Label_t * pCurrentLabel; - int currentLabelNumber; - HTList * pCurrentLabelTree; - SingleLabel_t * pCurrentSingleLabel; - LabelRating_t * pCurrentLabelRating; - Range_t * pCurrentRange; -#ifndef NO_CHAR_TEST - CharSet_t targetCharSet; -#endif - - LabelTargetCallback_t * pLabelTargetCallback; - LLErrorHandler_t * pLLErrorHandler; -}; - -/* forward references to parser functions */ -PRIVATE TargetObject_t LabelList_targetObject; -PRIVATE TargetObject_t ServiceInfo_targetObject; -PRIVATE TargetObject_t ServiceNoRat_targetObject; -PRIVATE TargetObject_t ServiceError_targetObject; -PRIVATE TargetObject_t Label_targetObject; -PRIVATE TargetObject_t LabelError_targetObject; -PRIVATE TargetObject_t LabelTree_targetObject; -PRIVATE TargetObject_t SingleLabel_targetObject; -PRIVATE TargetObject_t LabelRating_targetObject; -PRIVATE TargetObject_t LabelRatingRange_targetObject; -PRIVATE TargetObject_t Extension_targetObject; -PRIVATE TargetObject_t ExtensionData_targetObject; -PRIVATE TargetObject_t Awkward_targetObject; -PRIVATE Check_t hasToken; -PRIVATE Check_t LabelList_getVersion; -PRIVATE Check_t ServiceInfo_getServiceId; -PRIVATE Check_t error_getExpl; -PRIVATE Check_t getOption; -PRIVATE Check_t getOptionValue; -PRIVATE Check_t LabelRating_getId; -PRIVATE Check_t LabelRating_getValue; -PRIVATE Check_t LabelRatingRange_get; -PRIVATE Check_t isQuoted; -PRIVATE Check_t Extension_getURL; -PRIVATE Check_t ExtensionData_getData; -PRIVATE Open_t LabelList_open; -PRIVATE Open_t ServiceInfo_open; -PRIVATE Open_t error_open; -PRIVATE Open_t Label_open; -PRIVATE Open_t LabelTree_open; -PRIVATE Open_t SingleLabel_open; -PRIVATE Open_t LabelRating_open; -PRIVATE Open_t LabelRatingRange_open; -PRIVATE Open_t Awkward_open; -PRIVATE Open_t Extension_open; -PRIVATE Open_t ExtensionData_open; -PRIVATE Close_t LabelList_close; -PRIVATE Close_t ServiceInfo_close; -PRIVATE Close_t error_close; -PRIVATE Close_t Label_close; -PRIVATE Close_t LabelTree_close; -PRIVATE Close_t SingleLabel_close; -PRIVATE Close_t LabelRating_close; -PRIVATE Close_t LabelRatingRange_close; -PRIVATE Close_t Awkward_close; -PRIVATE Close_t Extension_close; -PRIVATE Close_t ExtensionData_close; -PRIVATE Destroy_t LabelList_destroy; -PRIVATE Destroy_t ServiceInfo_destroy; -PRIVATE Destroy_t Label_destroy; -PRIVATE Destroy_t LabelTree_destroy; -PRIVATE Destroy_t SingleLabel_destroy; -PRIVATE Destroy_t LabelRating_destroy; -PRIVATE Destroy_t LabelRatingRange_destroy; -PRIVATE Destroy_t Awkward_destroy; -PRIVATE Destroy_t error_destroy; -PRIVATE Destroy_t Extension_destroy; -PRIVATE Destroy_t ExtensionData_destroy; -PRIVATE Prep_t ServiceInfo_clearOpts; -PRIVATE Prep_t LabelRating_next; -PRIVATE Prep_t Extension_mandatory; -PRIVATE Prep_t Extension_next; -PRIVATE Prep_t ExtensionData_next; -PRIVATE Prep_t SingleLabel_doClose; -PRIVATE Prep_t Label_doClose; - -PRIVATE TargetChangeCallback_t targetChangeCallback; -PRIVATE ParseErrorHandler_t parseErrorHandler; - -/* CSParse_doc states */ -/* L A B E L L I S T P A R S E R S T A T E S */ -/* This contains all the states in the BNF for PICS labels. - * See User/Parsing.html for details. - */ -PRIVATE StateToken_t LabelList_stateTokens[] = { - /* A: fresh LabelList - C: expect end */ - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &LabelList_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - {"get version", SubState_A, Punct_WHITE, &LabelList_getVersion, 0, 0, 0, &ServiceInfo_targetObject, SubState_N, Command_NONE, 0}, - {"end of list", SubState_C, Punct_RPAREN, 0, 0, 0, 0, &LabelList_targetObject, SubState_A, Command_MATCHANY_CLOSE, 0} - }; - -PRIVATE StateToken_t ServiceInfo_stateTokens[] = { - /* A: fresh ServiceInfo - B: has service id - C: needs option value - D: call from Awkward or NoRat to close - E: call from Awkward to re-enter - F: call from Awkward to handle no-ratings error */ - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &ServiceInfo_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - { "error w/o id", SubState_A, Punct_LPAREN, 0, "error", 0, 0, &ServiceNoRat_targetObject, SubState_N, Command_NONE, 0}, - { "service id", SubState_A, Punct_WHITE, &ServiceInfo_getServiceId, 0, 0, 0, &ServiceInfo_targetObject, SubState_B, Command_NONE, 0}, - { "service error", SubState_B, Punct_LPAREN, 0, "error", 0, 0, &ServiceError_targetObject, SubState_N, Command_NONE, 0}, - { "service option", SubState_B, Punct_WHITE, &getOption, 0, 0, 0, &ServiceInfo_targetObject, SubState_C, Command_NONE, 0}, - {"service extension", SubState_B, Punct_LPAREN, 0, "extension", 0, 0, &Extension_targetObject, SubState_N, Command_NONE, 0}, - { "label-mark close", SubState_B, Punct_RPAREN, 0, "l", "labels", 0, &LabelList_targetObject, SubState_C, Command_CLOSE_CHAIN, 0}, - { "label-mark", SubState_B, Punct_WHITE_LPAREN, 0, "l", "labels", 0, &Label_targetObject, SubState_N, Command_CHAIN, &ServiceInfo_clearOpts}, - { "option value", SubState_C, Punct_WHITE, &getOptionValue, 0, 0, 0, &ServiceInfo_targetObject, SubState_B, Command_NONE, 0}, - - { "close", SubState_D, Punct_ALL, 0, 0, 0, 0, &LabelList_targetObject, SubState_C, Command_MATCHANY_CLOSE_CHAIN, 0}, - { "re-enter", SubState_E, Punct_ALL, 0, 0, 0, 0, &ServiceInfo_targetObject, SubState_N, Command_MATCHANY_CLOSE_CHAIN, 0}, - { "to no-rat", SubState_F, Punct_ALL, 0, 0, 0, 0, &ServiceInfo_targetObject, SubState_G, Command_MATCHANY_CLOSE_CHAIN, 0}, - { "no-rat opener", SubState_G, Punct_ALL, 0, 0, 0, 0, &ServiceNoRat_targetObject, SubState_N, Command_MATCHANY_OPEN_CHAIN, 0} - }; - -PRIVATE StateToken_t Label_stateTokens[] = { - /* A: fresh SingleLabel - C: route to Awkward from LabelTree and LabelError - D: from Awkward to LabelError */ - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &Label_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - { "single label mark", SubState_A, Punct_WHITE, 0, "l", "labels", 0, &Label_targetObject, SubState_A, Command_NONE, 0}, /* stick around */ - { "tree label mark", SubState_A, Punct_LPAREN, 0, "l", "labels", 0, &LabelTree_targetObject, SubState_N, Command_NONE, 0}, - { "start tree", SubState_A, Punct_LPAREN, 0, 0, 0, 0, &LabelTree_targetObject, SubState_N, Command_NONE, 0}, - { "label error", SubState_A, Punct_LPAREN, 0, "error", 0, 0, &LabelError_targetObject, SubState_N, Command_NONE, 0}, - {"SingleLabel option", SubState_A, Punct_WHITE, &getOption, 0, 0, 0, &SingleLabel_targetObject, SubState_N, Command_CHAIN, 0}, - { "label extension", SubState_A, Punct_LPAREN, 0, "extension", 0, 0, &SingleLabel_targetObject, SubState_N, Command_CHAIN, 0}, - { "ratings", SubState_A, Punct_LPAREN, 0, "r", "ratings", 0, &SingleLabel_targetObject, SubState_N, Command_CHAIN, 0}, - - { "to awkward", SubState_C, Punct_ALL, 0, 0, 0, 0, &Awkward_targetObject, SubState_A, Command_MATCHANY_CLOSE, 0}, - { "awkward to error", SubState_D, Punct_ALL, 0, 0, 0, 0, &LabelError_targetObject, SubState_N, Command_MATCHANY_OPEN_CHAIN, 0} - }; - -PRIVATE StateToken_t LabelTree_stateTokens[] = { - /* A: LabelTrees have no state */ - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &LabelTree_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - { "label error", SubState_A, Punct_LPAREN, 0, "error", 0, 0, &LabelError_targetObject, SubState_N, Command_NONE, 0}, - {"SingleLabel option", SubState_A, Punct_WHITE, &getOption, 0, 0, 0, &SingleLabel_targetObject, SubState_N, Command_CHAIN, 0}, - { "ratingword", SubState_A, Punct_LPAREN, 0, "r", "ratings", 0, &SingleLabel_targetObject, SubState_N, Command_CHAIN, 0}, - { "end of tree", SubState_A, Punct_RPAREN, 0, 0, 0, 0, &Label_targetObject, SubState_C, Command_CLOSE_CHAIN, 0} - }; - -PRIVATE StateToken_t SingleLabel_stateTokens[] = { - /* A: fresh SingleLabel - B: needs option value */ - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &SingleLabel_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - {"label extension", SubState_A, Punct_LPAREN, 0, "extension", 0, 0, &Extension_targetObject, SubState_N, Command_NONE, 0}, - { "label option", SubState_A, Punct_WHITE, &getOption, 0, 0, 0, &SingleLabel_targetObject, SubState_B, Command_NONE, 0}, - { "ratingword", SubState_A, Punct_LPAREN, 0, "r", "ratings", 0, &LabelRating_targetObject, SubState_N, Command_NONE, 0}, - { "option value", SubState_B, Punct_WHITE, &getOptionValue, 0, 0, 0, &SingleLabel_targetObject, SubState_A, Command_NONE, 0} - }; - -PRIVATE StateToken_t LabelRating_stateTokens[] = { - /* A: looking for transmit name - B: looking for value - C: return from range (either creates a new rating or ends) - D: close and re-open */ - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &LabelRating_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - { "id before value", SubState_A, Punct_WHITE, &LabelRating_getId, 0, 0, 0, &LabelRating_targetObject, SubState_B, Command_NONE, 0}, - { "id before range", SubState_A, Punct_LPAREN, &LabelRating_getId, 0, 0, 0, &LabelRatingRange_targetObject, SubState_N, Command_NONE, 0}, - { "value next", SubState_B, Punct_WHITE, &LabelRating_getValue, 0, 0, 0, &LabelRating_targetObject, SubState_D, Command_NONE, 0}, /* opener must close last rating first */ - { "value close", SubState_B, Punct_RPAREN, &LabelRating_getValue, 0, 0, 0, 0, SubState_X, Command_CLOSE, &LabelRating_next}, - { "close", SubState_C, Punct_RPAREN, 0, 0, 0, 0, 0, SubState_X, Command_CLOSE, &LabelRating_next}, - {"value after range", SubState_C, Punct_WHITE_LPAREN, &hasToken, 0, 0, 0, &LabelRating_targetObject, SubState_D, Command_CHAIN, 0}, /* opener must close last rating first */ - - { "re-enter", SubState_D, Punct_ALL, 0, 0, 0, 0, &LabelRating_targetObject, SubState_N, Command_MATCHANY_CLOSE_CHAIN, 0} - }; - -PRIVATE StateToken_t LabelRatingRange_stateTokens[] = { - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &LabelRatingRange_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - { "range data", SubState_A, Punct_WHITE, &LabelRatingRange_get, 0, 0, 0, &LabelRatingRange_targetObject, SubState_A, Command_NONE, 0}, - {"range close", SubState_A, Punct_RPAREN, &LabelRatingRange_get, 0, 0, 0, &LabelRating_targetObject, SubState_C, Command_CLOSE, 0} - }; - -/* Awkward assumes that the current Label has been closed. It decides whether to chain to LabelTree, Label, or ServiceInfo */ -PRIVATE StateToken_t Awkward_stateTokens[] = { - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &Awkward_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - { "start tree", SubState_A, Punct_LPAREN, 0, 0, 0, 0, &LabelTree_targetObject, SubState_N, Command_NONE, 0}, - { "label error", SubState_A, Punct_LPAREN, 0, "error", 0, 0, &Awkward_targetObject, SubState_B, Command_NONE, 0}, - { "label option", SubState_A, Punct_WHITE, &getOption, 0, 0, 0, &Label_targetObject, SubState_N, Command_CHAIN, 0}, - {"label extension", SubState_A, Punct_LPAREN, 0, "extension", 0, 0, &Label_targetObject, SubState_N, Command_CHAIN, 0}, - { "rating", SubState_A, Punct_LPAREN, 0, "r", "ratings", 0, &Label_targetObject, SubState_N, Command_CHAIN, 0}, - { "new service id", SubState_A, Punct_WHITE, &isQuoted, 0, 0, 0, &ServiceInfo_targetObject, SubState_E, Command_CHAIN, 0}, - { "close", SubState_A, Punct_RPAREN, 0, 0, 0, 0, &ServiceInfo_targetObject, SubState_D, Command_CHAIN, 0}, /* close of LabelList */ - - { "req-denied", SubState_B, Punct_WHITE, 0, "request-denied", 0, 0, &Label_targetObject, SubState_D, Command_CHAIN, 0}, - { "req-denied close", SubState_B, Punct_RPAREN, 0, "request-denied", 0, 0, &Label_targetObject, SubState_D, Command_CHAIN, 0}, - { "not-labeled", SubState_B, Punct_WHITE, 0, "not-labeled", 0, 0, &Label_targetObject, SubState_D, Command_CHAIN, 0}, - {"not-labeled close", SubState_B, Punct_RPAREN, 0, "not-labeled", 0, 0, &Label_targetObject, SubState_D, Command_CHAIN, 0}, - { "no-ratings", SubState_B, Punct_WHITE, 0, "no-ratings", 0, 0, &ServiceInfo_targetObject, SubState_F, Command_CHAIN, 0}, - { "no-ratings close", SubState_B, Punct_RPAREN, 0, "no-ratings", 0, 0, &ServiceInfo_targetObject, SubState_F, Command_CHAIN, 0} - }; - -/* error parsing states */ -PRIVATE StateToken_t ServiceNoRat_stateTokens[] = { - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &ServiceNoRat_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - { "no-ratings", SubState_A, Punct_WHITE, 0, "no-ratings", 0, 0, &ServiceNoRat_targetObject, SubState_B, Command_NONE, 0}, - { "no-ratings close", SubState_A, Punct_RPAREN, 0, "no-ratings", 0, 0, &ServiceInfo_targetObject, SubState_D, Command_CLOSE_CHAIN, 0}, - { "explanation", SubState_B, Punct_WHITE, &error_getExpl, 0, 0, 0, &ServiceNoRat_targetObject, SubState_B, Command_NONE, 0}, - {"explanation close", SubState_B, Punct_RPAREN, &error_getExpl, 0, 0, 0, &ServiceInfo_targetObject, SubState_D, Command_CLOSE_CHAIN, 0} - }; - -PRIVATE StateToken_t ServiceError_stateTokens[] = { - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &ServiceError_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - { "req-denied", SubState_A, Punct_WHITE, 0, "request-denied", 0, 0, &ServiceError_targetObject, SubState_B, Command_NONE, 0}, - { "req-denied close", SubState_A, Punct_RPAREN, 0, "request-denied", 0, 0, &ServiceInfo_targetObject, SubState_D, Command_CLOSE_CHAIN, 0}, - { "service-unavail", SubState_A, Punct_WHITE, 0,"service-unavailable", 0, 0, &ServiceError_targetObject, SubState_B, Command_NONE, 0}, - {"service-unavail close", SubState_A, Punct_RPAREN, 0,"service-unavailable", 0, 0, &ServiceInfo_targetObject, SubState_D, Command_CLOSE_CHAIN, 0}, - { "explanation", SubState_B, Punct_WHITE, &error_getExpl, 0, 0, 0, &ServiceError_targetObject, SubState_B, Command_NONE, 0}, - { "explanation close", SubState_B, Punct_RPAREN, &error_getExpl, 0, 0, 0, &ServiceInfo_targetObject, SubState_D, Command_CLOSE_CHAIN, 0} - }; - -PRIVATE StateToken_t LabelError_stateTokens[] = { - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &LabelError_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - { "req-denied", SubState_A, Punct_WHITE, 0, "request-denied", 0, 0, &LabelError_targetObject, SubState_B, Command_NONE, 0}, - { "req-denied close", SubState_A, Punct_RPAREN, 0, "request-denied", 0, 0, &Label_targetObject, SubState_C, Command_CLOSE_CHAIN, 0}, - { "not-labeled", SubState_A, Punct_WHITE, 0, "not-labeled", 0, 0, &LabelError_targetObject, SubState_B, Command_NONE, 0}, - {"not-labeled close", SubState_A, Punct_RPAREN, 0, "not-labeled", 0, 0, &Label_targetObject, SubState_C, Command_CLOSE_CHAIN, 0}, - { "explanation", SubState_B, Punct_WHITE, &error_getExpl, 0, 0, 0, &LabelError_targetObject, SubState_B, Command_NONE, 0}, - {"explanation close", SubState_B, Punct_RPAREN, &error_getExpl, 0, 0, 0, &Label_targetObject, SubState_C, Command_CLOSE_CHAIN, 0} - }; - -PRIVATE StateToken_t Extension_stateTokens[] = { - /* A: looking for mand/opt - B: looking for URL - C: back from ExtensionData */ - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &Extension_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - { "mandatory", SubState_A, Punct_WHITE, 0, "mandatory", 0, 0, &Extension_targetObject, SubState_B, Command_NONE, &Extension_mandatory}, - { "optional", SubState_A, Punct_WHITE, 0, "optional", 0, 0, &Extension_targetObject, SubState_B, Command_NONE, 0}, - { "URL", SubState_B, Punct_WHITE, &Extension_getURL, 0, 0, 0, &ExtensionData_targetObject, SubState_N, Command_NONE, 0}, - { "URL open", SubState_B, Punct_LPAREN, &Extension_getURL, 0, 0, 0, &ExtensionData_targetObject, SubState_N, Command_CHAIN_NOTOKEN, 0}, - { "URL close", SubState_B, Punct_RPAREN, &Extension_getURL, 0, 0, 0, 0, SubState_X, Command_CLOSE, &Extension_next}, - - { "more data", SubState_C, Punct_WHITE_LPAREN_RPAREN, &hasToken, 0, 0, 0, &ExtensionData_targetObject, SubState_N, Command_CHAIN, 0}, - { "nest", SubState_C, Punct_LPAREN, 0, 0, 0, 0, &ExtensionData_targetObject, SubState_N, Command_CHAIN, 0}, - { "close", SubState_C, Punct_RPAREN, 0, 0, 0, 0, 0, SubState_X, Command_CLOSE, &Extension_next} - }; - -PRIVATE StateToken_t ExtensionData_stateTokens[] = { - /* A: looking for data - B: back from recursive ExtensionData (identical to Extension B) */ - { "open", SubState_N, Punct_ALL, 0, 0, 0, 0, &ExtensionData_targetObject, SubState_A, Command_MATCHANY_OPEN_CHAIN, 0}, - { "lparen", SubState_A, Punct_LPAREN, 0, 0, 0, 0, &ExtensionData_targetObject, SubState_N, Command_NONE, 0}, - { "close", SubState_A, Punct_RPAREN, 0, 0, 0, 0, 0, SubState_X, Command_CLOSE, &ExtensionData_next}, - { "data", SubState_A, Punct_WHITE, &ExtensionData_getData, 0, 0, 0, 0, SubState_X, Command_CLOSE, &ExtensionData_next}, - {"data punct", SubState_A, Punct_LPAREN_RPAREN, &ExtensionData_getData, 0, 0, 0, 0, SubState_X, Command_CLOSE_CHAIN_NOTOKEN, &ExtensionData_next}, - - { "more data", SubState_B, Punct_WHITE_LPAREN_RPAREN, &hasToken, 0, 0, 0, &ExtensionData_targetObject, SubState_N, Command_CHAIN, 0}, - { "nest", SubState_B, Punct_LPAREN, 0, 0, 0, 0, &ExtensionData_targetObject, SubState_N, Command_CHAIN, 0}, - { "close", SubState_B, Punct_RPAREN, 0, 0, 0, 0, 0, SubState_X, Command_CLOSE, &ExtensionData_next} - }; - - -PRIVATE void init_target_obj(TargetObject_t *obj, char *note, Open_t *pOpen, Close_t *pClose, Destroy_t *pDestroy, StateToken_t *stateToken, int stateTokenCount, CSParseTC_t targetChange) -{ - obj->note = note; - obj->pOpen = pOpen; - obj->pClose = pClose; - obj->pDestroy = pDestroy; - obj->stateTokens = stateToken; - obj->stateTokenCount = stateTokenCount; - obj->targetChange = targetChange; -} - -PRIVATE void CSinitialize_global_data(void) -{ - static XP_Bool first_time=TRUE; - - if(first_time) - { - first_time = FALSE; - - init_target_obj(&LabelList_targetObject, "LabelList", &LabelList_open, &LabelList_close, &LabelList_destroy, LabelList_stateTokens, raysize(LabelList_stateTokens), CSLLTC_LIST); - init_target_obj(&ServiceInfo_targetObject, "ServiceInfo", ServiceInfo_open, &ServiceInfo_close, &ServiceInfo_destroy, ServiceInfo_stateTokens, raysize(ServiceInfo_stateTokens), CSLLTC_SERVICE); - init_target_obj(&Label_targetObject, "Label", &Label_open, &Label_close, &Label_destroy, Label_stateTokens, raysize(Label_stateTokens), CSLLTC_LABEL); - init_target_obj(&LabelTree_targetObject, "LabelTree", &LabelTree_open, &LabelTree_close, &LabelTree_destroy, LabelTree_stateTokens, raysize(LabelTree_stateTokens), CSLLTC_LABTREE); - init_target_obj(&SingleLabel_targetObject, "SingleLabel", &SingleLabel_open, &SingleLabel_close, &SingleLabel_destroy, SingleLabel_stateTokens, raysize(SingleLabel_stateTokens), CSLLTC_SINGLE); - init_target_obj(&LabelRating_targetObject, "LabelRating", &LabelRating_open, &LabelRating_close, &LabelRating_destroy, LabelRating_stateTokens, raysize(LabelRating_stateTokens), CSLLTC_RATING); - init_target_obj(&LabelRatingRange_targetObject, "LabelRatingRange", &LabelRatingRange_open, &LabelRatingRange_close, &LabelRatingRange_destroy, LabelRatingRange_stateTokens, raysize(LabelRatingRange_stateTokens), CSLLTC_RANGE); - init_target_obj(&Awkward_targetObject, "Awkward", &Awkward_open, &Awkward_close, &Awkward_destroy, Awkward_stateTokens, raysize(Awkward_stateTokens), 0); - init_target_obj(&ServiceNoRat_targetObject, "ServiceNoRat", &error_open, &error_close, &error_destroy, ServiceNoRat_stateTokens, raysize(ServiceNoRat_stateTokens), CSLLTC_NORAT); - init_target_obj(&LabelError_targetObject, "LabelError", &error_open, &error_close, &error_destroy, LabelError_stateTokens, raysize(LabelError_stateTokens), CSLLTC_LABERR); - init_target_obj(&ServiceError_targetObject, "ServiceError", &error_open, &error_close, &error_destroy, ServiceError_stateTokens, raysize(ServiceError_stateTokens), CSLLTC_SRVERR); - init_target_obj(&Extension_targetObject, "Extension", &Extension_open, &Extension_close, &Extension_destroy, Extension_stateTokens, raysize(Extension_stateTokens), CSLLTC_EXTEN); - init_target_obj(&ExtensionData_targetObject, "ExtensionData", &ExtensionData_open, &ExtensionData_close, &ExtensionData_destroy, ExtensionData_stateTokens, raysize(ExtensionData_stateTokens), CSLLTC_EXTDATA); - } -} - -/* CSParse_doc end */ -/* S T A T E A S S O C I A T I O N - associate a CSLabel with the label list data - The label list data is kept around until all states referencing it are destroyed */ -typedef struct { - CSLabel_t * pCSLabel; - CSLLData_t * pCSLLData; - } CSLabelAssoc_t; - -PRIVATE HTList * CSLabelAssocs = 0; - -PRIVATE void CSLabelAssoc_add(CSLabel_t * pCSLabel, CSLLData_t * pCSLLData) -{ - CSLabelAssoc_t * pElement; - if ((pElement = (CSLabelAssoc_t *) HT_CALLOC(1, sizeof(CSLabelAssoc_t))) == NULL) - HT_OUTOFMEM("CSLabelAssoc_t"); - pElement->pCSLabel = pCSLabel; - pElement->pCSLLData = pCSLLData; - if (!CSLabelAssocs) - CSLabelAssocs = HTList_new(); - HTList_appendObject(CSLabelAssocs, (void *)pElement); -} - -PRIVATE CSLabelAssoc_t * CSLabelAssoc_findByData(CSLLData_t * pCSLLData) -{ - HTList * assocs = CSLabelAssocs; - CSLabelAssoc_t * pElement; - while ((pElement = (CSLabelAssoc_t *) HTList_nextObject(assocs)) != NULL) - if (pElement->pCSLLData == pCSLLData) - return pElement; - return 0; -} - -PRIVATE CSLabelAssoc_t * CSLabelAssoc_findByState(CSLabel_t * pCSLabel) -{ - HTList * assocs = CSLabelAssocs; - CSLabelAssoc_t * pElement; - while ((pElement = (CSLabelAssoc_t *) HTList_nextObject(assocs)) != NULL) - if (pElement->pCSLabel == pCSLabel) - return pElement; - return 0; -} - -PRIVATE void CSLabelAssoc_removeByState(CSLabel_t * pCSLabel) -{ - CSLabelAssoc_t * pElement = CSLabelAssoc_findByState(pCSLabel); - if (!pElement) - return; - HTList_removeObject(CSLabelAssocs, (void *)pElement); - HT_FREE(pElement); -} - -/* P R I V A T E C O N S T R U C T O R S / D E S T R U C T O R S */ -/* These serve the public constructors - */ -PRIVATE LabelError_t * LabelError_new(void) -{ - LabelError_t * me; - if ((me = (LabelError_t *) HT_CALLOC(1, sizeof(LabelError_t))) == NULL) - HT_OUTOFMEM("LabelError_t"); - me->explanations = HTList_new(); - return me; -} - -PRIVATE void LabelError_free(LabelError_t * me) -{ - char * explanation; - if (!me) - return; - while ((explanation = (char *) HTList_removeLastObject(me->explanations)) != NULL) - HT_FREE(explanation); - HT_FREE(me); -} - -PRIVATE LabelOptions_t * LabelOptions_new(LabelOptions_t * pParentLabelOptions) -{ - LabelOptions_t * me; - if ((me = (LabelOptions_t *) HT_CALLOC(1, sizeof(LabelOptions_t))) == NULL) - HT_OUTOFMEM("LabelOptions_t"); - me->pParentLabelOptions = pParentLabelOptions; - return me; -} - -PRIVATE void LabelOptions_free(LabelOptions_t * me) -{ - char * comment; - DVal_clear(&me->at); - SVal_clear(&me->by); - SVal_clear(&me->complete_label); - BVal_clear(&me->generic); - SVal_clear(&me->fur); - SVal_clear(&me->MIC_md5); - DVal_clear(&me->on); - SVal_clear(&me->signature_PKCS); - DVal_clear(&me->until); - while ((comment = HTList_removeLastObject(me->comments)) != NULL) - HT_FREE(comment); - HT_FREE(me); -} - -PRIVATE ExtensionData_t * ExtensionData_new(void) -{ - ExtensionData_t * me; - if ((me = (ExtensionData_t *) HT_CALLOC(1, sizeof(ExtensionData_t))) == NULL) - HT_OUTOFMEM("ExtensionData_t"); - return me; -} - -PRIVATE void ExtensionData_free(ExtensionData_t * me) -{ - ExtensionData_t * pExtensionData; - while ((pExtensionData = (ExtensionData_t *) HTList_removeLastObject(me->moreData)) != NULL) - ExtensionData_free(pExtensionData); - HT_FREE(me->text); - HT_FREE(me); -} - -PRIVATE Extension_t * Extension_new(void) -{ - Extension_t * me; - if ((me = (Extension_t *) HT_CALLOC(1, sizeof(Extension_t))) == NULL) - HT_OUTOFMEM("Extension_t"); - return me; -} - -PRIVATE void Extension_free(Extension_t * me) -{ - ExtensionData_t * pExtensionData; - while ((pExtensionData = (ExtensionData_t *) HTList_removeLastObject(me->extensionData)) != NULL) - ExtensionData_free(pExtensionData); - SVal_clear(&me->url); - HT_FREE(me); -} - -PRIVATE LabelRating_t * LabelRating_new(void) -{ - LabelRating_t * me; - if ((me = (LabelRating_t *) HT_CALLOC(1, sizeof(LabelRating_t))) == NULL) - HT_OUTOFMEM("LabelRating_t"); -/* don't initialize HTList me->ranges as it may be just a value */ - return me; -} - -PRIVATE void LabelRating_free(LabelRating_t * me) -{ - Range_t * pRange; - while ((pRange = (Range_t *) HTList_removeLastObject(me->ranges)) != NULL) - HT_FREE(pRange); - SVal_clear(&me->identifier); - HT_FREE(me); -} - -PRIVATE SingleLabel_t * SingleLabel_new(LabelOptions_t * pLabelOptions, LabelOptions_t * pParentLabelOptions) -{ - SingleLabel_t * me; - if ((me = (SingleLabel_t *) HT_CALLOC(1, sizeof(SingleLabel_t))) == NULL) - HT_OUTOFMEM("SingleLabel_t"); - me->labelRatings = HTList_new(); - me->pLabelOptions = pLabelOptions ? pLabelOptions : LabelOptions_new(pParentLabelOptions); - return me; -} - -PRIVATE void SingleLabel_free(SingleLabel_t * me) -{ - LabelRating_t * pLabelRating; - while ((pLabelRating = (LabelRating_t *) HTList_removeLastObject(me->labelRatings)) != NULL) - LabelRating_free(pLabelRating); - LabelOptions_free(me->pLabelOptions); - HT_FREE(me); -} - -PRIVATE Label_t * Label_new(void) -{ - Label_t * me; - if ((me = (Label_t *) HT_CALLOC(1, sizeof(Label_t))) == NULL) - HT_OUTOFMEM("Label_t"); - /* dont initialize HTList me->singleLabels */ - return me; -} - -PRIVATE void Label_free(Label_t * me) -{ - SingleLabel_t * pSingleLabel; - if (me->pSingleLabel) - SingleLabel_free(me->pSingleLabel); - else /* if both of these are (erroneously) defined, mem checkers will pick it up */ - while ((pSingleLabel = (SingleLabel_t *) HTList_removeLastObject(me->singleLabels)) != NULL) - SingleLabel_free(pSingleLabel); - LabelError_free(me->pLabelError); - HT_FREE(me); -} - -PRIVATE ServiceInfo_t * ServiceInfo_new() -{ - ServiceInfo_t * me; - if ((me = (ServiceInfo_t *) HT_CALLOC(1, sizeof(ServiceInfo_t))) == NULL) - HT_OUTOFMEM("ServiceInfo_t"); - me->labels = HTList_new(); - me->pLabelOptions = LabelOptions_new(0); - return me; -} - -PRIVATE void ServiceInfo_free(ServiceInfo_t * me) -{ - Label_t * pLabel; - while ((pLabel = (Label_t *) HTList_removeLastObject(me->labels)) != NULL) - Label_free(pLabel); - SVal_clear(&me->rating_service); - LabelOptions_free(me->pLabelOptions); - LabelError_free(me->pLabelError); - HT_FREE(me); -} - -PRIVATE CSLLData_t * CSLLData_new(void) -{ - CSLLData_t * me; - if ((me = (CSLLData_t *) HT_CALLOC(1, sizeof(CSLLData_t))) == NULL) - HT_OUTOFMEM("CSLLData_t"); - me->serviceInfos = HTList_new(); - return me; -} - -PRIVATE void CSLLData_free(CSLLData_t * me) -{ - ServiceInfo_t * pServiceInfo; - if (CSLabelAssoc_findByData(me)) - return; - while ((pServiceInfo = (ServiceInfo_t *) HTList_removeLastObject(me->serviceInfos)) != NULL) - ServiceInfo_free(pServiceInfo); - FVal_clear(&me->version); - LabelError_free(me->pLabelError); - HT_FREE(me); -} - -/* P U B L I C C O N S T R U C T O R S / D E S T R U C T O R S */ -PRIVATE CSLabel_t * CSLabel_new(CSLLData_t * pCSLLData, LabelTargetCallback_t * pLabelTargetCallback, - LLErrorHandler_t * pLLErrorHandler) -{ - CSLabel_t * me; - if ((me = (CSLabel_t *) HT_CALLOC(1, sizeof(CSLabel_t))) == NULL) - HT_OUTOFMEM("CSLabel_t"); - me->pCSLLData = pCSLLData; - me->pLabelTargetCallback = pLabelTargetCallback; - me->pLLErrorHandler = pLLErrorHandler; - CSLabelAssoc_add(me, pCSLLData); - return me; -} - -PUBLIC CSLabel_t * CSLabel_copy(CSLabel_t * old) -{ - CSLabel_t * me = CSLabel_new(old->pCSLLData, old->pLabelTargetCallback, old->pLLErrorHandler); - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - XP_MEMCPY(me, old, sizeof(CSLabel_t)); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - return me; -} - -PUBLIC void CSLabel_free(CSLabel_t * me) -{ - CSLLData_t * pCSLLData = me->pCSLLData; - CSLabelAssoc_removeByState(me); - HT_FREE(me); - CSLLData_free(pCSLLData); -} - -PUBLIC CSLLData_t * CSLabel_getCSLLData(CSLabel_t * me) - {return me->pCSLLData;} -PUBLIC LabelError_t * CSLabel_getLabelError(CSLabel_t * pCSLabel) - {return pCSLabel->pCurrentLabelError;} -PUBLIC LabelOptions_t * CSLabel_getLabelOptions(CSLabel_t * pCSLabel) - {return pCSLabel->pCurrentLabelOptions;} -PUBLIC ServiceInfo_t * CSLabel_getServiceInfo(CSLabel_t * pCSLabel) - {return pCSLabel->pCurrentServiceInfo;} -PUBLIC char * CSLabel_getServiceName(CSLabel_t * pCSLabel) - {return pCSLabel->pCurrentServiceInfo ? - SVal_value(&pCSLabel->pCurrentServiceInfo->rating_service): 0;} -PUBLIC Label_t * CSLabel_getLabel(CSLabel_t * pCSLabel) - {return pCSLabel->pCurrentLabel;} -PUBLIC int CSLabel_getLabelNumber(CSLabel_t * pCSLabel) - {return pCSLabel->currentLabelNumber;} -PUBLIC SingleLabel_t * CSLabel_getSingleLabel(CSLabel_t * pCSLabel) - {return pCSLabel->pCurrentSingleLabel;} -PUBLIC LabelRating_t * CSLabel_getLabelRating(CSLabel_t * pCSLabel) - {return pCSLabel->pCurrentLabelRating;} -PUBLIC char * CSLabel_getRatingName(CSLabel_t * pCSLabel) - {return pCSLabel->pCurrentLabelRating ? - SVal_value(&pCSLabel->pCurrentLabelRating->identifier): 0;} -PUBLIC Range_t * CSLabel_getLabelRatingRange(CSLabel_t * pCSLabel) - {return pCSLabel->pCurrentRange;} -PUBLIC char * CSLabel_getRatingStr(CSLabel_t * pCSLabel) -{ - HTChunk * pChunk; - HTList * ranges; - Range_t * curRange; - FVal_t fVal; - int count = 0; - fVal = CSLabel_getLabelRating(pCSLabel)->value; - if (FVal_initialized(&fVal)) - return FVal_toStr(&fVal); - pChunk = HTChunk_new(20); - ranges = CSLabel_getLabelRating(pCSLabel)->ranges; - while ((curRange = (Range_t *) HTList_nextObject(ranges)) != NULL) { - char * ptr; - count++; - ptr = Range_toStr(curRange); - if (count > 1) - HTChunk_puts(pChunk, " "); - HTChunk_puts(pChunk, ptr); - HT_FREE(ptr); - } - return HTChunk_toCString(pChunk); -} - -PUBLIC CSParse_t * CSParse_newLabel(LabelTargetCallback_t * pLabelTargetCallback, - LLErrorHandler_t * pLLErrorHandler) -{ - CSParse_t * me = CSParse_new(); - - CSinitialize_global_data(); - - me->pParseContext->engineOf = &CSParse_targetParser; - me->pParseContext->pTargetChangeCallback = &targetChangeCallback; - me->pParseContext->pParseErrorHandler = &parseErrorHandler; - me->target.pCSLabel = CSLabel_new(CSLLData_new(), pLabelTargetCallback, pLLErrorHandler); - me->pTargetObject = &LabelList_targetObject; - me->currentSubState = SubState_N; - return me; -} - -PUBLIC CSLabel_t * CSParse_getLabel(CSParse_t * me) -{ - return (me->target.pCSLabel); -} - -PUBLIC BOOL CSParse_deleteLabel(CSParse_t * pCSParse) -{ - CSLabel_t * me = GetCSLabel(pCSParse); - CSLLData_free(CSLabel_getCSLLData(me)); - CSLabel_free(me); - CSParse_delete(pCSParse); - return YES; -} - -/* D E F A U L T P A R S I N G H A N D L E R S */ -PRIVATE StateRet_t targetChangeCallback(CSParse_t * pCSParse, TargetObject_t * pTargetObject, CSParseTC_t target, BOOL closed, void * pVoid) -{ - - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - if (pCSLabel->pLabelTargetCallback) - return (*pCSLabel->pLabelTargetCallback)(pCSLabel, pCSParse, (CSLLTC_t)target, closed, pVoid); - return StateRet_OK; -} - -PRIVATE StateRet_t parseErrorHandler(CSParse_t * pCSParse, const char * token, char demark, StateRet_t errorCode) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - if (pCSLabel->pLLErrorHandler) - return (*pCSLabel->pLLErrorHandler)(pCSLabel, pCSParse, token, demark, errorCode); - return errorCode; -} - -/* CSParse_doc methods */ -/* P A R S I N G S T A T E F U N C T I O N S */ -#ifndef NO_CHAR_TEST -PRIVATE BOOL charSetOK(CSParse_t * pCSParse, char * checkMe, CharSet_t set) -{ - if(!checkMe) - return FALSE; - - for (;*checkMe;checkMe++) { - if (set & CharSet_ALPHAS && - ((*checkMe >= 'A' && *checkMe <= 'Z') || - (*checkMe >= 'a' && *checkMe <= 'z'))) - continue; - if (set & CharSet_DIGITS && - ((*checkMe >= '0' && *checkMe <= '9') || *checkMe == '.')) - continue; - if (set & CharSet_PLUSMINUS && - ((*checkMe == '+' || *checkMe == '-'))) - continue; - if (set & CharSet_FORSLASH && - *checkMe == '/') - continue; - if (set & CharSet_BASE64_EXTRAS && - ((*checkMe == '+' || *checkMe == '/' || *checkMe == '='))) - continue; - if (set & CharSet_DATE_EXTRAS && - (*checkMe == '.' || *checkMe == ':' || - *checkMe == '-' || *checkMe == 'T')) - continue; - /* RFC1738:2.1:"+.-","#%",";/"?:@=&" 2.2:"$-_.+!*'()," */ - if (set & CharSet_URL_EXTRAS && - (*checkMe == ':' || *checkMe == '?' || - *checkMe == '#' || *checkMe == '%' || - *checkMe == '/' || *checkMe == '.' || - *checkMe == '-' || *checkMe == '_' || - *checkMe == '~' || *checkMe == '\\'|| - *checkMe == '@')) - continue; -/* '.' | ' ' | ',' | ';' | ':' | '&' | '=' | '?' | '!' | '*' | '~' | '@' | '#' */ - if (set & CharSet_EXTENS && - (*checkMe == '.' || *checkMe == ' ' || - *checkMe == ',' || *checkMe == ';' || - *checkMe == ':' || *checkMe == '&' || - *checkMe == '=' || *checkMe == '?' || - *checkMe == '!' || *checkMe == '*' || - *checkMe == '~' || *checkMe == '@' || - *checkMe == '#' || *checkMe == '\''|| - *checkMe == '/' || *checkMe == '-')) - continue; - pCSParse->pParseContext->pTokenError = checkMe; - return FALSE; - } - return TRUE; -} -#endif /* !NO_CHAR_TEST */ - -PRIVATE StateRet_t isQuoted(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ - ParseContext_t * pParseContext = pCSParse->pParseContext; - if (!pParseContext->observedQuotes) - return StateRet_WARN_NO_MATCH; - if (Punct_badDemark(pStateToken->validPunctuation, demark)) - return StateRet_WARN_BAD_PUNCT; - return StateRet_OK; -} - -PRIVATE StateRet_t hasToken(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ - return token ? StateRet_OK : StateRet_WARN_NO_MATCH; -} -#if 0 -PRIVATE StateRet_t clearToken(CSParse_t * pCSParse, char * token, char demark) -{ - HTChunk_clear(pCSParse->token); - return StateRet_OK; -} -#endif -/* getOption - see if token matches an option. -This may be called by: - ServiceInfo: add option to existent options, pCurrentLabelError is set by ServiceInfo_open - Label: kick off SingleLabel - SingleLabel_new(), pCurrentLabelError is 0 - SingleLabel: add another option to existent options, pCurrentLabelError is set by SingleLabel_open - */ -#define CSOffsetOf(s,m) (size_t)&(((s *)0)->m) -/* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ -#define CHECK_OPTION_TOKEN_BVAL1(text, pointer) \ -if (!XP_STRCASECMP(token, text)) {\ - pCSParse->pParseContext->valTarget.pTargetBVal = pointer;\ - pCSParse->pParseContext->valType = ValType_BVAL;\ - break;\ -} - -#define CHECK_OPTION_TOKEN_FVAL1(text, pointer) \ -if (!XP_STRCASECMP(token, text)) {\ - pCSParse->pParseContext->valTarget.pTargetFVal = pointer;\ - pCSParse->pParseContext->valType = ValType_FVAL;\ - break;\ -} - -#define CHECK_OPTION_TOKEN_SVAL1(text, pointer, charSet) \ -if (!XP_STRCASECMP(token, text)) {\ - pCSParse->pParseContext->valTarget.pTargetSVal = pointer;\ - pCSParse->pParseContext->valType = ValType_SVAL;\ - SET_CHAR_SET(charSet)\ - break;\ -} - -#define CHECK_OPTION_TOKEN_DVAL1(text, pointer) \ -if (!XP_STRCASECMP(token, text)) {\ - pCSParse->pParseContext->valTarget.pTargetDVal = pointer;\ - pCSParse->pParseContext->valType = ValType_DVAL;\ - break;\ -} -/* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - -PRIVATE StateRet_t getOption(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - LabelOptions_t * me = pCSLabel->pCurrentLabelOptions; - if (!token) - return StateRet_WARN_NO_MATCH; - if (!me) - me = pCSLabel->pCurrentLabelOptions = LabelOptions_new(pCSLabel->pCurrentServiceInfo->pLabelOptions); - /* match token against legal options */ - pCSParse->pParseContext->valType = ValType_NONE; /* use valType to flag a match */ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - do { /* fake do loop for break statements (to religiously avoid the goto) */ - CHECK_OPTION_TOKEN_DVAL1("at", &me->at) - CHECK_OPTION_TOKEN_SVAL1("by", &me->by, CharSet_EXT_ALPHANUM) - CHECK_OPTION_TOKEN_SVAL1("complete_label", &me->complete_label, CharSet_URL) - CHECK_OPTION_TOKEN_SVAL1("full", &me->complete_label, CharSet_URL) - CHECK_OPTION_TOKEN_SVAL1("for", &me->fur, CharSet_URL) - CHECK_OPTION_TOKEN_BVAL1("generic", &me->generic) - CHECK_OPTION_TOKEN_BVAL1("gen", &me->generic) - CHECK_OPTION_TOKEN_SVAL1("MIC-md5", &me->MIC_md5, CharSet_BASE64) - CHECK_OPTION_TOKEN_SVAL1("md5", &me->MIC_md5, CharSet_BASE64) - CHECK_OPTION_TOKEN_DVAL1("on", &me->on) - CHECK_OPTION_TOKEN_SVAL1("signature-PKCS", &me->signature_PKCS, CharSet_BASE64) - CHECK_OPTION_TOKEN_DVAL1("until", &me->until) - CHECK_OPTION_TOKEN_DVAL1("exp", &me->until) - if (!XP_STRCASECMP(token, "comment")) { - pCSParse->pParseContext->valTarget.pTargetList = &me->comments; - pCSParse->pParseContext->valType = ValType_COMMENT; - break; - } - } while (0); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - if (pCSParse->pParseContext->valType == ValType_NONE) - return StateRet_WARN_NO_MATCH; - if (Punct_badDemark(pStateToken->validPunctuation, demark)) - return StateRet_WARN_BAD_PUNCT; - return StateRet_OK; -} - -PRIVATE StateRet_t getOptionValue(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - switch (pCSParse->pParseContext->valType) { - case ValType_BVAL: - BVal_readVal(pCSParse->pParseContext->valTarget.pTargetBVal, token); - pCSParse->pParseContext->valType = ValType_NONE; - break; - case ValType_FVAL: - CHECK_CAR_SET(CharSet_NUMBER) - FVal_readVal(pCSParse->pParseContext->valTarget.pTargetFVal, token); - pCSParse->pParseContext->valType = ValType_NONE; - break; - case ValType_SVAL: - CHECK_CAR_SET(pCSLabel->targetCharSet) - SVal_readVal(pCSParse->pParseContext->valTarget.pTargetSVal, token); - pCSParse->pParseContext->valType = ValType_NONE; - break; - case ValType_DVAL: - CHECK_CAR_SET(CharSet_DATE) - DVal_readVal(pCSParse->pParseContext->valTarget.pTargetDVal, token); - pCSParse->pParseContext->valType = ValType_NONE; - break; - case ValType_COMMENT: - CHECK_CAR_SET(CharSet_EXT_ALPHANUM) - { - char * ptr = 0; - StrAllocCopy(ptr, token); - HTList_appendObject(*pCSParse->pParseContext->valTarget.pTargetList, (void *)ptr); - } - break; - default: - break; - } - return StateRet_OK; -} - -PRIVATE StateRet_t LabelList_open(CSParse_t * pCSParse, char * token, char demark) -{ - return StateRet_OK; -} - -PRIVATE StateRet_t LabelList_getVersion(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ -static const char versionPrefix[] = "PICS-"; - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - if (!token) - return StateRet_WARN_NO_MATCH; - if (strncasecomp(token, versionPrefix, sizeof(versionPrefix)-1)) - return StateRet_WARN_NO_MATCH; - token += sizeof(versionPrefix)-1; - CHECK_CAR_SET(CharSet_NUMBER) - FVal_readVal(&pCSLabel->pCSLLData->version, token); - return StateRet_OK; -} - -PRIVATE StateRet_t LabelList_close(CSParse_t * pCSParse, char * token, char demark) -{ - return StateRet_DONE; -} - -PRIVATE void LabelList_destroy(CSParse_t * pCSParse) -{ -} - -PRIVATE StateRet_t ServiceInfo_open(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCurrentServiceInfo = ServiceInfo_new(); - pCSLabel->currentLabelNumber = 0; - HTList_appendObject(pCSLabel->pCSLLData->serviceInfos, (void *)pCSLabel->pCurrentServiceInfo); - pCSLabel->pCurrentLabelOptions = pCSLabel->pCurrentServiceInfo->pLabelOptions; - return StateRet_OK; -} - -PRIVATE StateRet_t ServiceInfo_getServiceId(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - ParseContext_t * pParseContext = pCSParse->pParseContext; - - if (!token || !pParseContext->observedQuotes) - return StateRet_WARN_NO_MATCH; - if (Punct_badDemark(pStateToken->validPunctuation, demark)) - return StateRet_WARN_BAD_PUNCT; - CHECK_CAR_SET(CharSet_URL) - SVal_readVal(&pCSLabel->pCurrentServiceInfo->rating_service, token); - return StateRet_OK; -} - -PRIVATE StateRet_t ServiceInfo_close(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCurrentServiceInfo = 0; - return StateRet_OK; -} - -PRIVATE void ServiceInfo_destroy(CSParse_t * pCSParse) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - HTList_removeObject(pCSLabel->pCSLLData->serviceInfos, (void *)pCSLabel->pCurrentServiceInfo); - ServiceInfo_free(pCSLabel->pCurrentServiceInfo); - pCSLabel->pCurrentServiceInfo = 0; -} - -PRIVATE StateRet_t ServiceInfo_clearOpts(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - pCSLabel->pCurrentLabelOptions = 0; /* needed to flag new SingleLabel started by option */ - return StateRet_OK; -} - -PRIVATE StateRet_t Label_open(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCurrentLabel = Label_new(); - pCSLabel->currentLabelNumber++; - HTList_appendObject(pCSLabel->pCurrentServiceInfo->labels, (void*)pCSLabel->pCurrentLabel); - return StateRet_OK; -} - -PRIVATE StateRet_t Label_close(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCurrentLabel = 0; - return StateRet_OK; -} - -PRIVATE void Label_destroy(CSParse_t * pCSParse) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - HTList_removeObject(pCSLabel->pCurrentServiceInfo->labels, pCSLabel->pCurrentLabel); - Label_free(pCSLabel->pCurrentLabel); - pCSLabel->pCurrentLabel = 0; -} - -PRIVATE StateRet_t LabelTree_open(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCSLLData->hasTree = 1; - pCSLabel->pCurrentLabelTree = pCSLabel->pCurrentLabel->singleLabels = HTList_new(); - return StateRet_OK; -} - -PRIVATE StateRet_t LabelTree_close(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); -/* Label_close(pCSParse, token, demark); */ - pCSLabel->pCurrentLabelTree = 0; - return StateRet_OK; -} - -PRIVATE void LabelTree_destroy(CSParse_t * pCSParse) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - SingleLabel_t * pSingleLabel; - while ((pSingleLabel = (SingleLabel_t *) HTList_removeLastObject(pCSLabel->pCurrentLabel->singleLabels)) != NULL) - SingleLabel_free(pSingleLabel); - HTList_delete(pCSLabel->pCurrentLabel->singleLabels); - pCSLabel->pCurrentLabel->singleLabels = 0; -} - -PRIVATE StateRet_t SingleLabel_open(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCurrentSingleLabel = SingleLabel_new(pCSLabel->pCurrentLabelOptions, pCSLabel->pCurrentServiceInfo->pLabelOptions); - if (pCSLabel->pCurrentLabel->singleLabels) - HTList_appendObject(pCSLabel->pCurrentLabel->singleLabels, (void*)pCSLabel->pCurrentSingleLabel); - else - pCSLabel->pCurrentLabel->pSingleLabel = pCSLabel->pCurrentSingleLabel; - pCSLabel->pCurrentLabelOptions = pCSLabel->pCurrentSingleLabel->pLabelOptions; - return StateRet_OK; -} - -PRIVATE StateRet_t SingleLabel_close(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCurrentSingleLabel = 0; - return StateRet_OK; -} - -PRIVATE void SingleLabel_destroy(CSParse_t * pCSParse) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - if (pCSLabel->pCurrentLabel->pSingleLabel) - pCSLabel->pCurrentLabel->pSingleLabel = 0; - else - HTList_removeObject(pCSLabel->pCurrentLabel->singleLabels, (void *)pCSLabel->pCurrentSingleLabel); - SingleLabel_free(pCSLabel->pCurrentSingleLabel); - pCSLabel->pCurrentSingleLabel = 0; -} - -PRIVATE StateRet_t LabelRating_open(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - if (!pCSLabel->pCurrentSingleLabel) /* switched from label to rating on "r" rather than <option> */ - SingleLabel_open(pCSParse, token, demark); - pCSLabel->pCurrentLabelRating = LabelRating_new(); - HTList_appendObject(pCSLabel->pCurrentSingleLabel->labelRatings, (void*)pCSLabel->pCurrentLabelRating); - pCSLabel->pCurrentLabelOptions = 0; - return StateRet_OK; -} - -PRIVATE StateRet_t LabelRating_getId(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - if (Punct_badDemark(pStateToken->validPunctuation, demark)) - return StateRet_WARN_BAD_PUNCT; - CHECK_CAR_SET(CharSet_TRANSMIT_NAME) - SVal_readVal(&pCSLabel->pCurrentLabelRating->identifier, token); - return StateRet_OK; -} - -PRIVATE StateRet_t LabelRating_getValue(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - if (Punct_badDemark(pStateToken->validPunctuation, demark)) - return StateRet_WARN_BAD_PUNCT; - FVal_readVal(&pCSLabel->pCurrentLabelRating->value, token); - return StateRet_OK; -} - -PRIVATE StateRet_t LabelRating_close(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCurrentLabelRating = 0; - return StateRet_OK; -} - -PRIVATE void LabelRating_destroy(CSParse_t * pCSParse) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - HTList_removeObject(pCSLabel->pCurrentSingleLabel->labelRatings, (void *)pCSLabel->pCurrentLabelRating); - LabelRating_free(pCSLabel->pCurrentLabelRating); - pCSLabel->pCurrentLabelRating = 0; -} - -PRIVATE StateRet_t LabelRating_next(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - SingleLabel_doClose(pCSParse, token, demark); - if (pCSLabel->pCurrentLabelTree) { - SETNEXTSTATE(&LabelTree_targetObject, SubState_A); - } else { - Label_doClose(pCSParse, token, demark); - SETNEXTSTATE(&Awkward_targetObject, SubState_A); - } - return StateRet_OK; -} - -PRIVATE StateRet_t LabelRatingRange_open(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCurrentRange = 0; - pCSLabel->pCurrentLabelRating->ranges = HTList_new(); - return StateRet_OK; -} - -PRIVATE StateRet_t LabelRatingRange_get(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - LabelRating_t * pLabelRating = pCSLabel->pCurrentLabelRating; - Range_t * me; - char * ptr, * backPtr; - if (!token) - return StateRet_WARN_NO_MATCH; - if (Punct_badDemark(pStateToken->validPunctuation, demark)) - return StateRet_WARN_BAD_PUNCT; - if ((me = (Range_t *) HT_CALLOC(1, sizeof(Range_t))) == NULL) - HT_OUTOFMEM("Range_t"); -/* me = Range_new(); */ - HTList_appendObject(pLabelRating->ranges, (void *)me); - backPtr = ptr = token; - while (*ptr) { - if (*ptr == ':') { - *ptr = 0; - ptr++; - break; - } - ptr++; - } - FVal_readVal(&me->min, backPtr); - if (*ptr) - FVal_readVal(&me->max, ptr); - return StateRet_OK; -} - -PRIVATE StateRet_t LabelRatingRange_close(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCurrentRange = 0; - return StateRet_OK; -} - -PRIVATE void LabelRatingRange_destroy(CSParse_t * pCSParse) -{ -} - -PRIVATE StateRet_t Awkward_open(CSParse_t * pCSParse, char * token, char demark) -{ - return StateRet_OK; -} - -PRIVATE StateRet_t Awkward_close(CSParse_t * pCSParse, char * token, char demark) -{ - return StateRet_OK; -} - -PRIVATE void Awkward_destroy(CSParse_t * pCSParse) -{ -} - -PRIVATE StateRet_t error_open(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCurrentLabelError = LabelError_new(); - if (pCSLabel->pCurrentLabel) - pCSLabel->pCurrentLabel->pLabelError = pCSLabel->pCurrentLabelError; - else - pCSLabel->pCurrentServiceInfo->pLabelError = pCSLabel->pCurrentLabelError; - return StateRet_OK; -} - -PRIVATE StateRet_t error_getExpl(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - ParseContext_t * pParseContext = pCSParse->pParseContext; - char * explaination = 0; - - if (!token || !pParseContext->observedQuotes) - return StateRet_WARN_NO_MATCH; - if (Punct_badDemark(pStateToken->validPunctuation, demark)) - return StateRet_WARN_BAD_PUNCT; - CHECK_CAR_SET(CharSet_EXT_ALPHANUM) - StrAllocCopy(explaination, token); - HTList_appendObject(pCSLabel->pCurrentLabelError->explanations, explaination); - return StateRet_OK; -} - -PRIVATE StateRet_t error_close(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - - pCSLabel->pCurrentLabelError = 0; - if (pCSLabel->pCurrentLabel) - pCSLabel->pCurrentLabel->pLabelError = pCSLabel->pCurrentLabelError; - else - pCSLabel->pCurrentServiceInfo->pLabelError = pCSLabel->pCurrentLabelError; - return StateRet_OK; -} - -PRIVATE void error_destroy(CSParse_t * pCSParse) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - if (pCSLabel->pCurrentLabel) - pCSLabel->pCurrentLabel->pLabelError = 0; - else - pCSLabel->pCurrentServiceInfo->pLabelError = 0; - LabelError_free(pCSLabel->pCurrentLabelError); -} - -PRIVATE StateRet_t Extension_open(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - Extension_t * me = Extension_new(); - pCSLabel->pCurrentExtension = me; - if (!pCSLabel->pCurrentLabelOptions->extensions) - pCSLabel->pCurrentLabelOptions->extensions = HTList_new(); - HTList_appendObject(pCSLabel->pCurrentLabelOptions->extensions, (void *)me); - return StateRet_OK; -} - -PRIVATE StateRet_t Extension_mandatory(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - pCSLabel->pCurrentExtension->mandatory = 1; - pCSLabel->pCSLLData->mandatoryExtensions++; - return StateRet_OK; -} - -PRIVATE StateRet_t Extension_getURL(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - if (!token || !pCSParse->pParseContext->observedQuotes) - return StateRet_WARN_NO_MATCH; - if (Punct_badDemark(pStateToken->validPunctuation, demark)) - return StateRet_WARN_BAD_PUNCT; - CHECK_CAR_SET(CharSet_URL) - SVal_readVal(&pCSLabel->pCurrentExtension->url, token); - return StateRet_OK; -} - -PRIVATE StateRet_t Extension_close(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - pCSLabel->pCurrentExtension = 0; - return StateRet_OK; -} - -PRIVATE void Extension_destroy(CSParse_t * pCSParse) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - HTList_removeObject(pCSLabel->pCurrentLabelOptions->extensions, (void *)pCSLabel->pCurrentExtension); - if (!HTList_count(pCSLabel->pCurrentLabelOptions->extensions)) { - HTList_delete(pCSLabel->pCurrentLabelOptions->extensions); - pCSLabel->pCurrentLabelOptions->extensions = 0; - } - Extension_free(pCSLabel->pCurrentExtension); - pCSLabel->pCurrentExtension = 0; -} - -PRIVATE StateRet_t Extension_next(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - if (pCSLabel->pCurrentSingleLabel) { - SETNEXTSTATE(&SingleLabel_targetObject, SubState_A); - } else { - SETNEXTSTATE(&ServiceInfo_targetObject, SubState_B); - } - return StateRet_OK; -} - -PRIVATE StateRet_t ExtensionData_open(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - ExtensionData_t * me = ExtensionData_new(); - - me->pParentExtensionData = pCSLabel->pCurrentExtensionData; - if(pCSLabel->pCurrentExtensionData) { - if (!pCSLabel->pCurrentExtensionData->moreData) - pCSLabel->pCurrentExtensionData->moreData = HTList_new(); - HTList_appendObject(pCSLabel->pCurrentExtensionData->moreData, (void *)me); - } else { - if (!pCSLabel->pCurrentExtension->extensionData) - pCSLabel->pCurrentExtension->extensionData = HTList_new(); - HTList_appendObject(pCSLabel->pCurrentExtension->extensionData, (void *)me); - } - pCSLabel->pCurrentExtensionData = me; - return StateRet_OK; -} - -PRIVATE StateRet_t ExtensionData_next(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - /* close has already set recursed to the parentExtensionData */ - if (pCSLabel->pCurrentExtensionData) { - SETNEXTSTATE(&ExtensionData_targetObject, SubState_B); - } else { - SETNEXTSTATE(&Extension_targetObject, SubState_C); - } - return StateRet_OK; -} - -PRIVATE StateRet_t ExtensionData_close(CSParse_t * pCSParse, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - pCSLabel->pCurrentExtensionData = pCSLabel->pCurrentExtensionData->pParentExtensionData; - return StateRet_OK; -} - -PRIVATE void ExtensionData_destroy(CSParse_t * pCSParse) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - HTList ** pHolderList = pCSLabel->pCurrentExtensionData->pParentExtensionData ? - &pCSLabel->pCurrentExtensionData->pParentExtensionData->moreData : - &pCSLabel->pCurrentExtension->extensionData; - HTList_removeObject(*pHolderList, (void *)pCSLabel->pCurrentExtensionData); - if (!HTList_count(*pHolderList)) { - HTList_delete(*pHolderList); - *pHolderList = 0; - } - ExtensionData_free(pCSLabel->pCurrentExtensionData); - pCSLabel->pCurrentExtensionData = 0; -} - -PRIVATE StateRet_t ExtensionData_getData(CSParse_t * pCSParse, StateToken_t * pStateToken, char * token, char demark) -{ - CSLabel_t * pCSLabel = GetCSLabel(pCSParse); - ExtensionData_t * me; - if (!token) - return StateRet_WARN_NO_MATCH; - if (Punct_badDemark(pStateToken->validPunctuation, demark)) - return StateRet_WARN_BAD_PUNCT; - CHECK_CAR_SET(CharSet_EXT_DATA) - me = pCSLabel->pCurrentExtensionData; -/* SVal_readVal(&me->text, token); */ - StrAllocCopy(me->text, token); - me->quoted = pCSParse->pParseContext->observedQuotes; - return StateRet_OK; -} -#if 0 -PRIVATE StateRet_t LabelRating_doClose(CSParse_t * pCSParse, char * token, char demark) -{ - if (pCSParse->pParseContext->pTargetChangeCallback && - (*pCSParse->pParseContext->pTargetChangeCallback)(pCSParse, &LabelRating_targetObject, CSLLTC_RATING, 2) == StateRet_ERROR) - return NowIn_ERROR; - return LabelRating_close(pCSParse, token, demark); -} -#endif -PRIVATE StateRet_t SingleLabel_doClose(CSParse_t * pCSParse, char * token, char demark) -{ - if (pCSParse->pParseContext->pTargetChangeCallback && - (*pCSParse->pParseContext->pTargetChangeCallback)(pCSParse, &SingleLabel_targetObject, CSLLTC_SINGLE, 2, 0) == StateRet_ERROR) /* !!! - pVoid */ - return NowIn_ERROR; - return SingleLabel_close(pCSParse, token, demark); -} -#if 0 -PRIVATE StateRet_t LabelTree_doClose(CSParse_t * pCSParse, char * token, char demark) -{ - if (pCSParse->pParseContext->pTargetChangeCallback && - (*pCSParse->pParseContext->pTargetChangeCallback)(pCSParse, &LabelTree_targetObject, CSLLTC_LABTREE, 2) == StateRet_ERROR) - return NowIn_ERROR; - return LabelTree_close(pCSParse, token, demark); -} -#endif -PRIVATE StateRet_t Label_doClose(CSParse_t * pCSParse, char * token, char demark) -{ - if (pCSParse->pParseContext->pTargetChangeCallback && - (*pCSParse->pParseContext->pTargetChangeCallback)(pCSParse, &Label_targetObject, CSLLTC_LABEL, 2, 0) == StateRet_ERROR) /* !!! - pVoid */ - return NowIn_ERROR; - return Label_close(pCSParse, token, demark); -} -#if 0 -PRIVATE StateRet_t ServiceInfo_doClose(CSParse_t * pCSParse, char * token, char demark) -{ - if (pCSParse->pParseContext->pTargetChangeCallback && - (*pCSParse->pParseContext->pTargetChangeCallback)(pCSParse, &ServiceInfo_targetObject, CSLLTC_SERVICE, 2) == StateRet_ERROR) - return NowIn_ERROR; - return ServiceInfo_close(pCSParse, token, demark); -} -#endif -/* CSParse_doc end */ -/* I T E R A T O R S - scan through the CSLabel data structures for <identifier> */ -/* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ -/* CSLabel_iterateServices - look for rating service in a label list - (pCSLabel->pCurrentServiceInfo = (ServiceInfo_t *) HTList_nextObject(serviceInfos)) && - SVal_initialized(&pCSLabel->pCurrentServiceInfo->rating_service)) - if (!identifier || !XP_STRCASECMP(SVal_value(&pCSLabel->pCurrentServiceInfo->rating_service), identifier)) { - ret = (*pIteratorCB)(pCSLabel, pParms, identifier, pVoid); - count++; - */ -/* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - -PUBLIC CSError_t CSLabel_iterateServices(CSLabel_t * pCSLabel, CSLabel_callback_t * pIteratorCB, State_Parms_t * pParms, const char * identifier, void * pVoid) -{ - HTList * serviceInfos; - CSError_t ret = CSError_OK; - int count = 0; - if (!pIteratorCB || - !pCSLabel || - !pCSLabel->pCSLLData->serviceInfos) - return CSError_BAD_PARAM; - serviceInfos = pCSLabel->pCSLLData->serviceInfos; - while (ret == CSError_OK && - (pCSLabel->pCurrentServiceInfo = (ServiceInfo_t *) HTList_nextObject(serviceInfos)) != NULL) { - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - if (identifier && - (!SVal_initialized(&pCSLabel->pCurrentServiceInfo->rating_service) || - XP_STRCASECMP(SVal_value(&pCSLabel->pCurrentServiceInfo->rating_service), identifier))) - continue; - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - ret = (*pIteratorCB)(pCSLabel, pParms, identifier, pVoid); - count++; - } - if (!count) - return CSError_SERVICE_MISSING; - return ret; -} - -/* CSLabel_iterateLabels - look through all labels in current ServiceInfo - */ -PUBLIC CSError_t CSLabel_iterateLabels(CSLabel_t * pCSLabel, CSLabel_callback_t * pIteratorCB, State_Parms_t * pParms, const char * identifier, void * pVoid) -{ - HTList * labels; - CSError_t ret= CSError_OK; - int count = 0; - if (!pIteratorCB || - !pCSLabel || - !pCSLabel->pCurrentServiceInfo || - !pCSLabel->pCurrentServiceInfo->labels) - return CSError_BAD_PARAM; - labels = pCSLabel->pCurrentServiceInfo->labels; - while (ret == CSError_OK && (pCSLabel->pCurrentLabel = (Label_t *) HTList_nextObject(labels)) != NULL) { - ret = (*pIteratorCB)(pCSLabel, pParms, identifier, pVoid); - count++; - } - if (!count) - return CSError_LABEL_MISSING; - return ret; -} - -/* CSLabel_iterateSingleLabels - look through all single labels in current label - */ -PUBLIC CSError_t CSLabel_iterateSingleLabels(CSLabel_t * pCSLabel, CSLabel_callback_t * pIteratorCB, State_Parms_t * pParms, const char * identifier, void * pVoid) -{ - CSError_t ret= CSError_OK; - int count = 0; - if (!pIteratorCB || - !pCSLabel || - !pCSLabel->pCurrentServiceInfo || - !pCSLabel->pCurrentServiceInfo->labels) - return CSError_BAD_PARAM; - { - if (pCSLabel->pCurrentLabel->pSingleLabel) { - pCSLabel->pCurrentSingleLabel = pCSLabel->pCurrentLabel->pSingleLabel; - ret = (*pIteratorCB)(pCSLabel, pParms, identifier, pVoid); - count++; - } - else { - HTList * singleLabels = pCSLabel->pCurrentLabel->singleLabels; - while (ret == CSError_OK && (pCSLabel->pCurrentSingleLabel = (SingleLabel_t *) HTList_nextObject(singleLabels)) != NULL) { - ret = (*pIteratorCB)(pCSLabel, pParms, identifier, pVoid); - count++; - } - } - } - if (!count) - return CSError_SINGLELABEL_MISSING; - return ret; -} - -/* CSLabel_iterateLabelRatings - look for rating in current single label - */ -PUBLIC CSError_t CSLabel_iterateLabelRatings(CSLabel_t * pCSLabel, CSLabel_callback_t * pIteratorCB, State_Parms_t * pParms, const char * identifier, void * pVoid) -{ - HTList * labelRatings; - CSError_t ret = CSError_OK; - int count = 0; - if (!pIteratorCB || - !pCSLabel || - !pCSLabel->pCurrentServiceInfo || - !pCSLabel->pCurrentServiceInfo->labels || - !pCSLabel->pCurrentLabel || - !pCSLabel->pCurrentSingleLabel || - !pCSLabel->pCurrentSingleLabel->labelRatings) - return CSError_BAD_PARAM; - labelRatings = pCSLabel->pCurrentSingleLabel->labelRatings; - while (ret == CSError_OK && (pCSLabel->pCurrentLabelRating = (LabelRating_t *) HTList_nextObject(labelRatings)) != NULL) - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - if (!identifier || !XP_STRCASECMP(SVal_value(&pCSLabel->pCurrentLabelRating->identifier), identifier)) { - ret = (*pIteratorCB)(pCSLabel, pParms, identifier, pVoid); - count++; - } - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - if (!count) - return CSError_RATING_MISSING; - return ret; -} - -/* R A N G E T E S T I N G - check that label values fall within acceptable user ranges */ -/* CSLabel_ratingsIncludeFVal - find out if current rating in pCSLabel encompases userValue - * return: int stating how far it is from fitting. - */ -PUBLIC FVal_t CSLabel_ratingsIncludeFVal(CSLabel_t * pCSLabel, FVal_t * userValue) -{ - Range_t parm = Range_NEW_UNINITIALIZED; - parm.min = *userValue; - return CSLabel_ratingsIncludeRange(pCSLabel, &parm); -} - -PUBLIC FVal_t CSLabel_ratingsIncludeRange(CSLabel_t * pCSLabel, Range_t * pUserRange) -{ - HTList * labelRanges = pCSLabel->pCurrentLabelRating->ranges; - FVal_t value = pCSLabel->pCurrentLabelRating->value; - FVal_t ret; - Range_t * pLabelRange; - if (FVal_initialized(&value)) { - Range_t parm = Range_NEW_UNINITIALIZED; - parm.min = value; - return Range_gap(&parm, pUserRange); - } - while ((pLabelRange = (Range_t *)HTList_nextObject(labelRanges)) != NULL) { - FVal_t thisOne = Range_gap(pLabelRange, pUserRange); - if (FVal_isZero(&thisOne)) - return thisOne; - if (FVal_nearerZero(&thisOne, &ret)) - ret = thisOne; - } - return ret; -} - -PUBLIC FVal_t CSLabel_ratingsIncludeRanges(CSLabel_t * pCSLabel, HTList * userRanges) -{ - FVal_t ret; - Range_t * pUserRange; - BOOL retInitialized = NO; - while ((pUserRange = (Range_t *)HTList_nextObject(userRanges)) != NULL) { - FVal_t thisOne = CSLabel_ratingsIncludeRange(pCSLabel, pUserRange); - if (FVal_isZero(&thisOne)) - return thisOne; - if (retInitialized) { - if (FVal_nearerZero(&thisOne, &ret)) - ret = thisOne; - } else { - ret = thisOne; - retInitialized = YES; - } - } - return ret; -} - diff --git a/mozilla/lib/libpics/csll.h b/mozilla/lib/libpics/csll.h deleted file mode 100644 index 2f1ee37a6a8..00000000000 --- a/mozilla/lib/libpics/csll.h +++ /dev/null @@ -1,173 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* Label parser for libpics - LABEL PARSER - - */ -/* -** (c) COPYRIGHT MIT 1996. -** Please first read the full copyright statement in the file COPYRIGH. -*/ -/* - - This module provides the interface to CSLabel.c. Labels are parsed from strings (see - CSParse.html). These labels may then be kept in a CSLabel_t structure for inspection by - the application or compared to the values in a CSUser_t structure (see CSUser.html). - - */ -#ifndef CSLL_H -#define CSLL_H -/* - - State Change Enumeration - - Call to the TargetChangeCallback will have one of the following values. - - */ -typedef enum { - CSLLTC_LIST = 1, - CSLLTC_SERVICE, - CSLLTC_LABEL, - CSLLTC_LABTREE, - CSLLTC_SINGLE, - CSLLTC_RATING, - CSLLTC_RANGE, - CSLLTC_AWKWARD, - CSLLTC_NORAT, - CSLLTC_SRVERR, - CSLLTC_LABERR, - CSLLTC_EXTEN, - CSLLTC_EXTDATA, - CSLLTC_COUNT -} CSLLTC_t; -/* - - Data shell - - All PICS label data is stored in a CSLLData_t - - */ -typedef struct CSLLData_s CSLLData_t; -#define CSLabel_labelNumber(S) (S->currentLabelNumber) -/* - - TargetChangeCallback - - As the label is parsed, it will call the assigned TargetChangeCallback as it passes - from state to state. - - */ -typedef StateRet_t LabelTargetCallback_t(CSLabel_t * pCSLabel, - CSParse_t * pCSParse, - CSLLTC_t target, BOOL closed, - void * pVoid); -/* - - ErrorHandler - - All parsing error will be passed to the Apps LLErrorHandler for user display or - automatic dismissal. - - */ -typedef StateRet_t LLErrorHandler_t(CSLabel_t * pCSLabel, - CSParse_t * pCSParse, const char * token, - char demark, StateRet_t errorCode); -/* - - Construction/Destruction - - These methods allow the user to create and get access to both the label and the state. - CSLabels may be cloned so that one saves state while another continues to iterate or - parse. The states mus all be freed. Label data will only be freed after all the - CSLabels that refer to it are deleted. - - */ -extern CSParse_t * CSParse_newLabel( - LabelTargetCallback_t * pLabelTargetCallback, - LLErrorHandler_t * pLLErrorHandler); -extern BOOL CSParse_deleteLabel(CSParse_t *); -extern CSLabel_t * CSParse_getLabel(CSParse_t * me); -extern CSLabel_t * CSLabel_copy(CSLabel_t * old); -extern void CSLabel_free(CSLabel_t * me); - -extern char * CSLabel_getServiceName(CSLabel_t * pCSLabel); -extern int CSLabel_getLabelNumber(CSLabel_t * pCSLabel); -extern char * CSLabel_getRatingName(CSLabel_t * pCSLabel); -extern char * CSLabel_getRatingStr(CSLabel_t * pCSLabel); -extern Range_t * CSLabel_getLabelRatingRange(CSLabel_t * pCSLabel); -/* - - Iterating methods - - Callback function - - The Iterators are passed a callback function to be called for each matching element. - For instance, when iterating through ranges, the callback function is called once for - each range, or, if a match is requested, only for the matching range. - - */ -typedef CSError_t CSLabel_callback_t(CSLabel_t *, State_Parms_t *, - const char *, void * pVoid); -typedef CSError_t CSLabel_iterator_t(CSLabel_t *, - CSLabel_callback_t *, - State_Parms_t *, const char *, - void * pVoid); -/* - - Iterators - - */ -extern CSLabel_iterator_t CSLabel_iterateServices; -extern CSLabel_iterator_t CSLabel_iterateLabels; -extern CSLabel_iterator_t CSLabel_iterateSingleLabels; -extern CSLabel_iterator_t CSLabel_iterateLabelRatings; -/* - - Range Utilities - - These funtions allow the application to test the value of a given user parameter - against those in the label. - - */ -extern HTList * CSLLData_getAllSingleLabels(CSLabel_t * pCSLabel); -extern FVal_t CSLabel_ratingsIncludeFVal(CSLabel_t * pCSLabel, - FVal_t * userValue); -extern FVal_t CSLabel_ratingsIncludeRange(CSLabel_t * pCSLabel, - Range_t * pUserRange); -extern FVal_t CSLabel_ratingsIncludeRanges(CSLabel_t * pCSLabel, - HTList * userRanges); -/* - - */ -#endif /* CSLL_H */ -/* - - End of Declaration */ diff --git a/mozilla/lib/libpics/csllst.h b/mozilla/lib/libpics/csllst.h deleted file mode 100644 index 870c5029c98..00000000000 --- a/mozilla/lib/libpics/csllst.h +++ /dev/null @@ -1,203 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* Label data internals - LABEL DATA INTERNALS - - */ -/* -** (c) COPYRIGHT MIT 1996. -** Please first read the full copyright statement in the file COPYRIGH. -*/ -/* - - This module defines the Label data structures read by CSParser.c. Applications will - include this if they want direct access to the data (as opposed to using iterator - methods). - - The following data structures relate to the data encapsulated in a PICS Label. Each - data type correlates to a time in the BNF for the label description. See PICS Labels - spec for more details. - - */ -#ifndef CSLLST_H -#define CSLLST -/* - -LABEL ERROR - - combination of: - - _label-error_ - - _service-error_ - - _service-info_ 'no-ratings' - - */ -typedef struct { - LabelErrorCode_t errorCode; - HTList * explanations; /* HTList of (char *) */ - } LabelError_t; -/* - -EXTENSION DATA - - called _data_ in the BNF - - */ -typedef struct ExtensionData_s ExtensionData_t; -struct ExtensionData_s { - char * text; - BOOL quoted; - HTList * moreData; - ExtensionData_t * pParentExtensionData; - }; -/* - -EXTENSION - - _option_ 'extension' - - */ -typedef struct { - BOOL mandatory; - SVal_t url; - HTList * extensionData; - } Extension_t; -/* - -LABEL OPTIONS - - called _option_ in the BNF - - */ -typedef struct LabelOptions_s LabelOptions_t; -struct LabelOptions_s { - DVal_t at; - SVal_t by; - SVal_t complete_label; - BVal_t generic; - SVal_t fur; /* for is a reserved word */ - SVal_t MIC_md5; - DVal_t on; - SVal_t signature_PKCS; - DVal_t until; - HTList * comments; - HTList * extensions; - /* find service-level label options */ - LabelOptions_t * pParentLabelOptions; - }; - -/* - -RATING - - called _rating_ in the BNF - - */ -typedef struct { - SVal_t identifier; - FVal_t value; - HTList * ranges; - } LabelRating_t; -/* - -SINGLELABEL - - called _single-label_ in the BNF - - */ -typedef struct { - LabelOptions_t * pLabelOptions; - HTList * labelRatings; - } SingleLabel_t; - -/* - -LABEL - - also called _label_ - - */ -typedef struct { - LabelError_t * pLabelError; - HTList * singleLabels; - SingleLabel_t * pSingleLabel; - } Label_t; -/* - -SERVICEINFO - - called _service-info_ in the BNF - - */ -typedef struct { - SVal_t rating_service; - LabelOptions_t * pLabelOptions; - LabelError_t * pLabelError; - HTList * labels; - } ServiceInfo_t; -/* - -CSLLDATA - - The whole shebang. - - */ -struct CSLLData_s { - FVal_t version; - LabelError_t * pLabelError; - HTList * serviceInfos; - - /* some usefull flags */ - BOOL complete; - BOOL hasTree; /* so it can't make a list of labels */ - int mandatoryExtensions; - }; -/* - - --------------these need the above structures-------------- - - */ -extern CSLLData_t * CSLabel_getCSLLData(CSLabel_t * me); -extern LabelError_t * CSLabel_getLabelError(CSLabel_t * pCSLabel); -extern LabelOptions_t * CSLabel_getLabelOptions(CSLabel_t * pCSLabel); -extern ServiceInfo_t * CSLabel_getServiceInfo(CSLabel_t * pCSLabel); -extern Label_t * CSLabel_getLabel(CSLabel_t * pCSLabel); -extern SingleLabel_t * CSLabel_getSingleLabel(CSLabel_t * pCSLabel); -extern LabelRating_t * CSLabel_getLabelRating(CSLabel_t * pCSLabel); -/* - - */ -#endif /* CSLLST_H */ -/* - - End of Declaration */ diff --git a/mozilla/lib/libpics/cslutils.h b/mozilla/lib/libpics/cslutils.h deleted file mode 100644 index 2c22f2fbab1..00000000000 --- a/mozilla/lib/libpics/cslutils.h +++ /dev/null @@ -1,418 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* PICS library utilities - PICS LIBRARY UTILITIES - - */ -/* -** (c) COPYRIGHT MIT 1996. -** Please first read the full copyright statement in the file COPYRIGH. -*/ -/* - - This module defines the PICS library interface. - - */ -#ifndef CSLUTILS_H -#define CSLUTILS_H -/* - - */ -#include "htutils.h" -#include "htlist.h" -/* - - PRIMITAVE DATA STRUCTURES - - BVal_t, FVal_t, SVal_t, DVal_t - hold a boolean, float (not double), string, or date - value (respectively). These data structures are designed so that they may be - initialized to all 0s (and hence included directly within larger structures, rather - than allocated and initialized individually). You must, however, call their clear - method to deallocate any additional memory used to store the actual value once they - have been initialized. The following methods are defined on all four data types ("X" - should be either "B" "F" "S" or "D", XType is "BOOL" "float" "char *" or "char *", - respectively): - - BOOL XVal_readVal(XVal_t, char *), etc. - convert the string to a value of the - specified type. Returns TRUE on success, FALSE on failure. If successful, may - allocate additional storage. - - BOOL XVal_initialized(XVal_t) - Returns TRUE if the value has been initialized - (hence contains a legitimate value and may have additional storage allocated - internally), FALSE otherwise. - - XType XVal_value(XVal_t) -- Returns the value stored in the object. - - void XVal_clear(XVal_t) -- Mark the object as uninitialized and release any memory - associated with the value currently stored in the object. - -BVAL - - - Boolean value. - - definition - - */ -typedef struct { - enum {BVal_UNINITIALIZED = 0,BVal_YES = 1, BVal_INITIALIZED = 2} state; - } BVal_t; - -extern BOOL BVal_readVal(BVal_t * pBVal, const char * valueStr); -extern BOOL BVal_initialized(const BVal_t * pBVal); -extern BOOL BVal_value(const BVal_t * pBVal); -extern void BVal_clear(BVal_t * pBVal); -/* - - additional methods - - void set - assign value - - */ -extern void BVal_set(BVal_t * pBVal, BOOL value); -/* - -FVAL - - - Float value with negative and positive infinity values - - definition - - */ -typedef struct { - float value; - enum {FVal_UNINITIALIZED = 0, FVal_VALUE = 1, FVal_NEGATIVE_INF = 2, - FVal_POSITIVE_INF = 3} stat; - } FVal_t; - -extern BOOL FVal_readVal(FVal_t * pFVal, const char * valueStr); -extern BOOL FVal_initialized(const FVal_t * pFVal); -extern float FVal_value(const FVal_t * pFVal); -extern void FVal_clear(FVal_t * pFVal); -/* - - additional methods - - void set - assign a float value - - void setInfinite - set to negative or positive infinity - - BOOL isZero - see if value is zero - - int isInfinite - -1 or 1 for negative or positive infinity - - BOOL nearerZero - see if check is nearer zero than check - - FVal_t FVal_minus - subtract small from big - - char * FVal_toStr - convert to allocated CString, caller must free - - */ -extern void FVal_set(FVal_t * pFVal, float value); -extern void FVal_setInfinite(FVal_t * pFVal, BOOL negative); -extern BOOL FVal_isZero(const FVal_t * pFVal); -extern int FVal_isInfinite(const FVal_t * pFVal); -extern BOOL FVal_nearerZero(const FVal_t * pRef, const FVal_t * pCheck); -extern FVal_t FVal_minus(const FVal_t * pBig, const FVal_t * pSmall); -extern char * FVal_toStr(FVal_t * pFVal); -/* - - initializers - - FVal intializers may be used when creating an FVal - eg. FVal_t localFVal = FVal_NEGATIVE_INF; - - */ -#define FVal_NEW_UNINITIALIZED {(float) 0.0, FVal_UNINITIALIZED} -#define FVal_NEW_NEGATIVE_INF {(float) 0.0, FVal_NEGATIVE_INF} -#define FVal_NEW_POSITIVE_INF {(float) 0.0, FVal_POSITIVE_INF} -#define FVal_NEW_ZERO {(float) 0.0, FVal_VALUE} - -/* - -SVAL - - - String value. - - definition - - */ -typedef struct { - char * value; - BOOL initialized; - } SVal_t; - -extern BOOL SVal_readVal(SVal_t * pSVal, const char * valueStr); -extern BOOL SVal_initialized(const SVal_t * pSVal); -extern char * SVal_value(const SVal_t * pSVal); -extern void SVal_clear(SVal_t * pSVal); -/* - -DVAL - - - Date value. - - definition - - */ -typedef struct { - char * value; /* keep the string around for debugging and output */ - BOOL initialized; - int year; - int month; - int day; - int hour; - int minute; - int timeZoneHours; - int timeZoneMinutes; - } DVal_t; - -extern BOOL DVal_readVal(DVal_t * pDVal, const char * valueStr); -extern BOOL DVal_initialized(const DVal_t * pDVal); -extern char * DVal_value(const DVal_t * pDVal); -extern void DVal_clear(DVal_t * pDVal); -/* - - additional methods - - int compare - -1 or 1 for a before or after b, 0 for equivilence - - */ -extern int DVal_compare(const DVal_t * a, const DVal_t * b); -/* - -RANGE - - - Range of FVals. - - definition - - */ -typedef struct { - FVal_t min; - FVal_t max; - } Range_t; -/* - - methods - - rangeToStr - print range to malloced string. This string must be freed by caller - - gap - find the difference between a and b - - */ -extern char * Range_toStr(Range_t * pRange); -extern FVal_t Range_gap(Range_t * a, Range_t * b); -/* - - initializers - - */ -#define Range_NEW_UNINITIALIZED {FVal_NEW_UNINITIALIZED, \ - FVal_NEW_UNINITIALIZED} - -/* - - PARSER - -CSPARSE_PARSECHUNK - - CSParse_t - ephemeral parser data, the CSParse structure is defined in CSParse.html. - CSDoMore_t - tells caller whether parseChunk expects more or encountered an error - - */ -typedef struct CSParse_s CSParse_t; -typedef enum {CSDoMore_more, CSDoMore_done, CSDoMore_error} CSDoMore_t; -extern CSDoMore_t CSParse_parseChunk (CSParse_t * pCSParse, const char * ptr, - int len, void * pVoid); -/* - - PARSE CALLBACKS - - During parsing, the parser makes callbacks to tell the caller that an error has been - encountered or that the parser is reading into a new data structure. - -CSPARSETC - - The TC, or TargetChange, type is a way of itemizing the different targets in a parsable - object. It is used in the TargetChangeCallback - - */ -typedef unsigned int CSParseTC_t; -/* - -STATERET - - */ -typedef enum {StateRet_OK = 0, StateRet_DONE = 1, StateRet_WARN = 0x10, - StateRet_WARN_NO_MATCH = 0x11, StateRet_WARN_BAD_PUNCT = 0x12, - StateRet_ERROR = 0x100, StateRet_ERROR_BAD_CHAR = 0x101 -} StateRet_t; - -/* - -TARGETCHANGECALLBACK - - These callbacks keep the caller abreast of what type of object the parser is currently - reading. TargetChangeCallbacks are made whenever the parser starts or finishes reading - one of these objects. The actual values of targetChange, and what objects they - correlate to, can be found in the modules for the object being parsed. - - CSLL.html for PICS labels. - - CSMR.html for machine-readable service descriptions. - - CSUser.html for PICS user profiles. - - Example: When reading a CSLabel, the callback will be called with pTargetObject = - CSLLTC_SERVICE when reading a service, CSLLTC_LABEL when reading a label, etc. - - */ -typedef struct TargetObject_s TargetObject_t; -typedef StateRet_t TargetChangeCallback_t(CSParse_t * pCSParse, - TargetObject_t * pTargetObject, - CSParseTC_t targetChange, BOOL closed, - void * pVoid); -/* - -PARSEERRORHANDLER - - */ -typedef StateRet_t ParseErrorHandler_t(CSParse_t * pCSParse, - const char * token, - char demark, StateRet_t errorCode); - -/* - -CSLIST_ACCEPTLABELS - - get a malloced HTTP Protocol-Request string requesting PICS labels for all services in - pServiceList - - */ -typedef enum {CSCompleteness_minimal, CSCompleteness_short, - CSCompleteness_full, CSCompleteness_signed} CSCompleteness_t; -extern char * CSList_acceptLabels(HTList * pServiceList, - CSCompleteness_t completeness); - -/* - -CSLIST_GETLABELS - - get a malloced HTTP GET string requesting PICS labels for all services in pServiceList - - */ -typedef enum {CSOption_generic, CSOption_normal, CSOption_tree, - CSOption_genericTree} CSOption_t; -extern char * CSList_getLabels(HTList * pServiceList, CSOption_t option, - CSCompleteness_t completeness); -/* - -CSLIST_POSTLABELS - - get a malloced HTTP GET string requesting PICS labels for all services in pServiceList - - */ -extern char * CSList_postLabels(HTList * pServiceList, char * url, - CSOption_t option, - CSCompleteness_t completeness); -/* - -INDIVIDUAL PARSERS - -CSLABEL - - PICS label list - - */ -typedef struct CSLabel_s CSLabel_t; -/* - -CSUSER - - PICS user profile - - */ -typedef struct CSUser_s CSUser_t; -/* - -CSMACHREAD - - PICS machine readable system description - - */ -typedef struct CSMachRead_s CSMachRead_t; -/* - - for reading label error codes - - */ -typedef enum { - labelError_NA = 0, - labelError_NO_RATINGS, - labelError_UNAVAILABLE, - labelError_DENIED, - labelError_NOT_LABELED, - labelError_UNKNOWN - } LabelErrorCode_t; - -/* - - State_Parms - obsolete parameter exchange for iterators - - */ -typedef struct State_Parms_s State_Parms_t; - -typedef enum { - CSError_OK = 0, - CSError_YES = 0, - CSError_NO = 1, - CSError_BUREAU_NONE, - CSError_RATING_VALUE, - CSError_RATING_RANGE, - CSError_RATING_MISSING, - CSError_SINGLELABEL_MISSING, - CSError_LABEL_MISSING, - CSError_SERVICE_MISSING, - CSError_CATEGORY_MISSING, - CSError_ENUM_MISSING, - CSError_BAD_PARAM, - CSError_BAD_DATE, - CSError_SERVICE_NONE, - CSError_RATING_NONE, - CSError_APP - } CSError_t; -/* - - */ -#endif /* CSLUTILS_H */ -/* - - End of Declaration */ diff --git a/mozilla/lib/libpics/csparse.c b/mozilla/lib/libpics/csparse.c deleted file mode 100644 index 3f928fe1302..00000000000 --- a/mozilla/lib/libpics/csparse.c +++ /dev/null @@ -1,708 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* CSParse.c -** PICS CONFIGURATION MANAGER FOR CLIENTS AND SERVERS -** -** (c) COPYRIGHT MIT 1995. -** Please first read the full copyright statement in the file COPYRIGHT. -** -** This module converts application/xpics streams (files or network) to PICS_ class data -** -** History: -** 4 Dec 95 EGP start -** 15 Feb 96 EGP alpha 1 -** -** BUGS: no code yet; doesn't actually do anything -*/ - -#if defined(CookieManagement) -#define TRUST_LABELS 1 -#endif - - -/* Library include files */ -/* --- BEGIN added by mharmsen@netscape.com on 7/9/97 --- */ -#include "xp.h" -/* --- END added by mharmsen@netscape.com on 7/9/97 --- */ -/* #include "sysdep.h" jhines 7/9/97 */ -#include "htchunk.h" -#include "htstring.h" -#include "cslutils.h" -#include "csparse.h" - -PUBLIC int ParseDebug = 0; /* For use with LablPars and RatPars */ - -PUBLIC BOOL BVal_readVal(BVal_t * pBVal, const char * valueStr) -{ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - if (!XP_STRCASECMP(valueStr, "true") || - !XP_STRCASECMP(valueStr, "yes")) - pBVal->state = BVal_YES; - else if (XP_STRCASECMP(valueStr, "false") && - XP_STRCASECMP(valueStr, "no")) - return NO;; - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - pBVal->state |= BVal_INITIALIZED; - return YES; -} - -PUBLIC BOOL BVal_initialized(const BVal_t * pBVal) -{ - return (pBVal->state & BVal_INITIALIZED); -} - -PUBLIC BOOL BVal_value(const BVal_t * pBVal) -{ - return ((pBVal->state & BVal_YES) ? 1 : 0); -} - -PUBLIC void BVal_set(BVal_t * pBVal, BOOL value) -{ - if (value) - pBVal->state = BVal_YES; - pBVal->state |= BVal_INITIALIZED; - return; -} - -PUBLIC void BVal_clear(BVal_t * pBVal) -{ - if (pBVal) - pBVal->state = BVal_UNINITIALIZED; - return; -} - -PUBLIC BOOL FVal_readVal(FVal_t * pFVal, const char * valueStr) -{ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - if (!XP_STRCASECMP(valueStr, "+INF")) { - pFVal->stat = FVal_POSITIVE_INF; - return YES; - } - if (!XP_STRCASECMP(valueStr, "-INF")) { - pFVal->stat = FVal_NEGATIVE_INF; - return YES; - } - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - pFVal->stat = FVal_VALUE; - sscanf(valueStr, "%f", &pFVal->value); - return YES; -} - -PUBLIC BOOL FVal_initialized(const FVal_t * pFVal) -{ - return (pFVal->stat != FVal_UNINITIALIZED); -} - -PUBLIC float FVal_value(const FVal_t * pFVal) -{ - return (pFVal->value); -} - -/* C U T T I N G E D G E M A T H T E C H N O L O G Y H E R E */ -PRIVATE BOOL FVal_lessThan(const FVal_t * pSmall, const FVal_t * pBig) -{ - if (pBig->stat == FVal_UNINITIALIZED || pSmall->stat == FVal_UNINITIALIZED) - return FALSE; - if (pBig->stat == FVal_POSITIVE_INF || pSmall->stat == FVal_NEGATIVE_INF) { - if (pSmall->stat == FVal_POSITIVE_INF) - return FALSE; - return TRUE; - } - if (pBig->stat == FVal_NEGATIVE_INF || pSmall->stat == FVal_POSITIVE_INF) { - return FALSE; - } - return pSmall->value < pBig->value; -} - -PUBLIC FVal_t FVal_minus(const FVal_t * pBig, const FVal_t * pSmall) -{ - FVal_t ret = FVal_NEW_UNINITIALIZED; - /* no notion of 2 time infinity so please keep your limits to a minimum */ - if (pBig->stat == FVal_UNINITIALIZED || pSmall->stat == FVal_UNINITIALIZED) - return ret; - FVal_set(&ret, (float)0.0); - if (pBig->stat == FVal_POSITIVE_INF || pSmall->stat == FVal_NEGATIVE_INF) { - if (pSmall->stat != FVal_POSITIVE_INF) - FVal_setInfinite(&ret, 0); - return ret; - } - if (pBig->stat == FVal_NEGATIVE_INF || pSmall->stat == FVal_POSITIVE_INF) { - if (pSmall->stat != FVal_NEGATIVE_INF) - FVal_setInfinite(&ret, 0); - return ret; - } - ret.value = pBig->value - pSmall->value; - return (ret); -} - -PUBLIC BOOL FVal_nearerZero(const FVal_t * pRef, const FVal_t * pCheck) -{ - if (pRef->stat == FVal_UNINITIALIZED || pCheck->stat == FVal_UNINITIALIZED || - pCheck->stat == FVal_POSITIVE_INF || pCheck->stat == FVal_NEGATIVE_INF) - return NO; - if (pRef->stat == FVal_POSITIVE_INF || pRef->stat == FVal_NEGATIVE_INF) - return YES; - if (pRef->value < 0.0) { - if (pCheck->value < 0.0) - return pCheck->value > pRef->value; - return pCheck->value < -pRef->value; - } - if (pCheck->value < 0.0) - return pCheck->value > -pRef->value; - return pCheck->value < pRef->value; -} - -PUBLIC BOOL FVal_isZero(const FVal_t * pFVal) -{ - if (pFVal->stat == FVal_VALUE && pFVal->value == 0.0) - return YES; - return NO; -} - -PUBLIC void FVal_set(FVal_t * pFVal, float value) -{ - pFVal->value = value; - pFVal->stat = FVal_VALUE; -} - -PUBLIC void FVal_setInfinite(FVal_t * pFVal, BOOL negative) -{ - pFVal->stat = negative ? FVal_NEGATIVE_INF : FVal_POSITIVE_INF; -} - -PUBLIC int FVal_isInfinite(const FVal_t * pFVal) -{ - return (pFVal->stat == FVal_POSITIVE_INF ? 1 : pFVal->stat == FVal_NEGATIVE_INF ? -1 : 0); -} - -PUBLIC void FVal_clear(FVal_t * pFVal) -{ - if (pFVal) - pFVal->stat = FVal_UNINITIALIZED; - return; -} - -PUBLIC char * FVal_toStr(FVal_t * pFVal) -{ - char * ptr; - if ((ptr = (char *)HT_MALLOC(40)) == NULL) - HT_OUTOFMEM("FVal buffer"); - sprintf(ptr, "%.1f", FVal_value(pFVal)); - return ptr; -} - -PUBLIC BOOL SVal_readVal(SVal_t * pSVal, const char * valueStr) -{ - pSVal->initialized = YES; - StrAllocCopy(pSVal->value, valueStr); - return YES; -} - -PUBLIC BOOL SVal_initialized(const SVal_t * pSVal) -{ - return (pSVal->initialized != NO); -} - -PUBLIC char * SVal_value(const SVal_t * pSVal) -{ - return (pSVal->value); -} - -PUBLIC void SVal_clear(SVal_t * pSVal) -{ - if (SVal_initialized(pSVal)) { - HT_FREE(pSVal->value); - pSVal->initialized = NO; - } - return; -} - -#if 0 - int year; - int month; - int day; - int hour; - int minute; - int timeZoneHours; - int timeZoneMinutes; -#endif -PUBLIC BOOL DVal_readVal(DVal_t * pDVal, const char * valueStr) -{ - char space[] = "1994.11.05T08:15-0500"; - char timeZoneSign; - char timeZoneMinutesMSB; - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - if (XP_STRLEN(valueStr) != 0x15) - return NO; - XP_MEMCPY(space, valueStr, 0x15); - timeZoneSign = space[16]; - timeZoneMinutesMSB = space[19]; - space[4] = space[7] = space[10] = space[13] = space[16] = space[19] = 0; - pDVal->year = XP_ATOI(space); - pDVal->month = XP_ATOI(space+5); - pDVal->day = XP_ATOI(space+8); - pDVal->hour = XP_ATOI(space+11); - pDVal->minute = XP_ATOI(space+14); - pDVal->timeZoneHours = XP_ATOI(space+17); - space[19] = timeZoneMinutesMSB; - pDVal->timeZoneMinutes = XP_ATOI(space+19); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - if (timeZoneSign == '-') { - pDVal->timeZoneHours = -pDVal->timeZoneHours; - pDVal->timeZoneMinutes = -pDVal->timeZoneMinutes; - } - StrAllocCopy(pDVal->value, valueStr); - pDVal->initialized = YES; - return YES; -} - -PUBLIC BOOL DVal_initialized(const DVal_t * pDVal) -{ - return (pDVal->initialized != NO); -} - -PUBLIC int DVal_compare(const DVal_t * a, const DVal_t * b) -{ - if (a->year > b->year) return 1; - if (a->year < b->year) return -1; - if (a->month > b->month) return 1; - if (a->month < b->month) return -1; - if (a->day > b->day) return 1; - if (a->day < b->day) return -1; - if (a->hour+a->timeZoneHours > b->hour+b->timeZoneHours) return 1; - if (a->hour+a->timeZoneHours < b->hour+b->timeZoneHours) return -1; - if (a->minute+a->timeZoneMinutes > b->minute+b->timeZoneMinutes) return 1; - if (a->minute+a->timeZoneMinutes < b->minute+b->timeZoneMinutes) return -1; - return 0; -} - -PUBLIC char * DVal_value(const DVal_t * pDVal) -{ - return (pDVal->value); -} - -PUBLIC void DVal_clear(DVal_t * pDVal) -{ - if (DVal_initialized(pDVal)) { - HT_FREE(pDVal->value); - pDVal->initialized = NO; - } - return; -} - -PUBLIC char * Range_toStr(Range_t * pRange) -{ - HTChunk * pChunk; - char * ptr; - pChunk = HTChunk_new(20); - ptr = FVal_toStr(&pRange->min); - HTChunk_puts(pChunk, ptr); - HT_FREE(ptr); - if (FVal_initialized(&pRange->max)) { - ptr = FVal_toStr(&pRange->max); - HTChunk_puts(pChunk, ":"); - HTChunk_puts(pChunk, ptr); - HT_FREE(ptr); - } - return HTChunk_toCString(pChunk); -} - -/* Range_gap - find gap between 2 ranges. Either of these ranges may be a - * single value (in the min) - * negative vector indicates that ref is greater than test - */ -PUBLIC FVal_t Range_gap(Range_t * a, Range_t * b) -{ - Range_t aN = *a; - Range_t bN = *b; - FVal_t ret = FVal_NEW_UNINITIALIZED; - if (!FVal_initialized(&a->min) || !FVal_initialized(&b->min)) - return (ret); - - /* set ret for successful 0 returns */ - FVal_set(&ret, (float)0.0); - - /* normalize our ranges */ - if (FVal_lessThan(&aN.max, &aN.min)) { - aN.max = a->min; - aN.min = a->max; - } - if (FVal_lessThan(&bN.max, &bN.min)) { - bN.max = b->min; - bN.min = b->max; - } - - /* check partial ranges (just a min, no max) */ - if (!FVal_initialized(&aN.max)) { - if (!FVal_initialized(&bN.max)) - return FVal_minus(&aN.min, &bN.min); - if (FVal_lessThan(&aN.min, &bN.min)) - return FVal_minus(&bN.min, &aN.min); - if (FVal_lessThan(&bN.max, &aN.min)) - return FVal_minus(&bN.max, &aN.min); - return ret; - } - /* we have four values to compare */ - { - FVal_t minDif = FVal_minus(&bN.min, &aN.min); - FVal_t maxDif = FVal_minus(&bN.max, &aN.max); - Range_t common; - common.min = FVal_lessThan(&bN.min, &aN.min) ? aN.min : bN.min; - common.max = FVal_lessThan(&bN.max, &aN.max) ? bN.max : aN.max; - if (!FVal_lessThan(&common.max, &common.min)) - return ret; - /* failure - indicate how far we are off */ - return FVal_nearerZero(&minDif, &maxDif) ? minDif : maxDif; - } -} - -/* ------------------------------------------------------------------------- */ - -/* C O N S T R U C T O R S */ -PUBLIC CSParse_t * CSParse_new(void) -{ - CSParse_t * me; - if ((me = (CSParse_t *) HT_CALLOC(1, sizeof(CSParse_t))) == NULL) - HT_OUTOFMEM("CSParse"); - me->nowIn = NowIn_NEEDOPEN; - me->token = HTChunk_new(0x10); - if ((me->pParseContext = (ParseContext_t *) HT_CALLOC(1, sizeof(ParseContext_t))) == NULL) - HT_OUTOFMEM("ParseContext_t"); - return me; -} - -PUBLIC void CSParse_delete(CSParse_t * me) -{ - HT_FREE(me->pParseContext); - HTChunk_delete(me->token); - HT_FREE(me); -} - -/* L A B E L P A R S E R S */ -PRIVATE StateRet_t callErrorHandler(CSParse_t * pCSParse, - const char * errorLocation, - char demark, StateRet_t errorCode) -{ - char * token = HTChunk_data(pCSParse->token); - /* --- BEGIN removed compiler warning by mharmsen@netscape.com on 7/9/97 --- */ - pCSParse->pParseContext->pTokenError = (char *)errorLocation; - /* --- END removed compiler warning by mharmsen@netscape.com on 7/9/97 --- */ - return (*pCSParse->pParseContext->pParseErrorHandler)(pCSParse, token, - demark, StateRet_ERROR_BAD_CHAR); -} - -/* CSParse_parseChunk - elemental parse engine for all pics nowIns. This passes - * tokenized data into the handler functions in the CSParse_t.handlersOf. These - * handlers are responsibel for placing the data in the appropriate target. - * The text is broken into nowIns and passed a SubParser based on the current - * nowIn which is one of: - * NowIn_NEEDOPEN - get paren and go to NowIn_ENGINE, text is an error - * NowIn_ENGINE - in a containing structure, text goes to engineOf_ - * NowIn_NEEDCLOSE - get paren and go to NowIn_ENGINE, text is an error - * NowIn_END - expect no more text or parens - * NowIn_ERROR - - */ -PUBLIC CSDoMore_t CSParse_parseChunk (CSParse_t * pCSParse, const char * ptr, int len, void * pVoid) -{ - int i; - if (!len || !ptr) - return CSDoMore_error; - for (i = 0; i < len; i++) { - pCSParse->offset++; - if (pCSParse->quoteState) { - if (pCSParse->quoteState == ptr[i]) { - pCSParse->quoteState = 0; - pCSParse->demark = ' '; - } - else - HTChunk_putb(pCSParse->token, ptr+i, 1); - continue; - } - if (ptr[i] == SQUOTE || ptr[i] == DQUOTE) { - if (pCSParse->demark) { - while ((pCSParse->nowIn = (*pCSParse->pParseContext->engineOf)(pCSParse, ' ', pVoid)) == NowIn_CHAIN) - ; /* */ - HTChunk_clear(pCSParse->token); - pCSParse->demark = 0; - } else if (HTChunk_size(pCSParse->token) && -/* && warn(pCSParse, message_UNEXPECTED_CHARACTER, ptr[i])) */ - callErrorHandler(pCSParse, ptr+i, ptr[i], - StateRet_ERROR_BAD_CHAR) !=StateRet_OK) - pCSParse->nowIn = NowIn_ERROR; - pCSParse->quoteState = ptr[i]; - pCSParse->pParseContext->observedQuotes = YES; - continue; - } - switch (pCSParse->nowIn) { - case NowIn_NEEDOPEN: - if (ptr[i] == LPAREN) { - pCSParse->nowIn = NowIn_ENGINE; - continue; - } - if (XP_IS_SPACE(ptr[i])) - continue; -/* if (warn(pCSParse, message_UNEXPECTED_CHARACTER, ptr[i])) pCSParse->nowIn = NowIn_ERROR; */ - if (callErrorHandler(pCSParse, ptr+i, ptr[i], - StateRet_ERROR_BAD_CHAR) !=StateRet_OK) - pCSParse->nowIn = NowIn_ERROR; - continue; - case NowIn_ENGINE: - if (XP_IS_SPACE(ptr[i])) { - if (HTChunk_size(pCSParse->token)) - pCSParse->demark = ' '; - continue; - } - if (ptr[i] == LPAREN || ptr[i] == RPAREN || pCSParse->demark) { - /* parens override space demarkation */ - if (ptr[i] == LPAREN) pCSParse->demark = LPAREN; - if (ptr[i] == RPAREN) pCSParse->demark = RPAREN; - /* call the engine as long as it wants re-entrance */ - while ((pCSParse->nowIn = (*pCSParse->pParseContext->engineOf)(pCSParse, pCSParse->demark, pVoid)) == NowIn_CHAIN) - ; /* */ - HTChunk_clear(pCSParse->token); - pCSParse->demark = 0; - if (ptr[i] == LPAREN || ptr[i] == RPAREN) - continue; - /* continue with next token */ - } - HTChunk_putb(pCSParse->token, ptr+i, 1); - continue; - case NowIn_NEEDCLOSE: - if (ptr[i] == RPAREN) { - pCSParse->nowIn = NowIn_ENGINE; - continue; - } - if (XP_IS_SPACE(ptr[i])) - continue; - if (callErrorHandler(pCSParse, ptr+i, ptr[i], - StateRet_ERROR_BAD_CHAR) !=StateRet_OK) - pCSParse->nowIn = NowIn_ERROR; -/* if (warn(pCSParse, message_UNEXPECTED_CHARACTER, ptr[i])) pCSParse->nowIn = NowIn_ERROR; */ - continue; - case NowIn_END: -#if 0 /* enable this to tell the parser to check the remainder of - the stream after the parsed object thinks it is done */ - if (XP_IS_SPACE(ptr[i])) - continue; -/* if (warn(pCSParse, message_UNEXPECTED_CHARACTER, ptr[i])) pCSParse->nowIn = NowIn_ERROR; */ - if (callErrorHandler(pCSParse, ptr+i, ptr[i], - StateRet_ERROR_BAD_CHAR) !=StateRet_OK) - pCSParse->nowIn = NowIn_ERROR; - continue; -#else - return CSDoMore_done; -#endif - case NowIn_MATCHCLOSE: - if (ptr[i] == RPAREN) { - if (!pCSParse->depth) - pCSParse->nowIn = NowIn_ENGINE; - else - pCSParse->depth--; - } - if (ptr[i] == LPAREN) - pCSParse->depth++; - continue; - case NowIn_ERROR: - return CSDoMore_error; - break; - default: -/* if (warn(pCSParse, message_INTERNAL_ERROR, "bad nowIn")) pCSParse->nowIn = NowIn_ERROR; */ - HTTrace("PICS: Internal error in parser - bad nowIn:%d.\n", - pCSParse->nowIn); - return CSDoMore_error; - } - } - /* check completion */ - return pCSParse->nowIn == NowIn_END ? CSDoMore_done : CSDoMore_more; -} - -PUBLIC BOOL Punct_badDemark(Punct_t validPunctuation, char demark) -{ - switch (demark) { - case ' ': return (!(validPunctuation & Punct_WHITE)); - case LPAREN: return (!(validPunctuation & Punct_LPAREN)); - case RPAREN: return (!(validPunctuation & Punct_RPAREN)); - } - return YES; -} - -#if 0 -PRIVATE void Input_dump(char * token, char demark) -{ - char space[256]; - sprintf(space, " %s |%c|\n", token, demark); - HTTrace(space); -} -#endif -PRIVATE char * CSParse_subState2str(SubState_t subState) -{ - static char space[33]; - space[0] = 0; - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - if (subState == SubState_N) - XP_STRCPY(space, "N"); - else if (subState == SubState_X) - XP_STRCPY(space, "X"); - else { - int i; - SubState_t comp; - char ch[] = "A"; - for (i = 1, comp = SubState_A; i < (sizeof(SubState_t)*8 - 1); i++, (*ch)++, comp<<=1) - if (comp & subState) - XP_STRCAT(space, ch); - } - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - return space; -} - -PRIVATE int ParseTrace(const char * fmt, ...) -{ - va_list pArgs; - - va_start(pArgs, fmt); - - if (!ParseDebug) - return 0; - return (vfprintf(stderr, fmt, pArgs)); -} - -PUBLIC NowIn_t CSParse_targetParser(CSParse_t * pCSParse, char demark, void * pVoid) -{ -/* ParseContext_t * pParseContext = pCSParse->pParseContext; */ - TargetObject_t * pTargetObject = pCSParse->pTargetObject; - BOOL failedOnPunct = NO; - char * token = 0; - StateRet_t ret = StateRet_OK; - int i; -static NowIn_t lastRet = NowIn_END; - - /* changed by montulli@netscape.com 11/29/97 - * if (HTChunk_size(pCSParse->token)) { - * HTChunk_terminate(pCSParse->token); - * token = HTChunk_data(pCSParse->token); - * } - */ -#ifdef TRUST_LABELS - if(HTChunk_size(pCSParse->token)) -#else - if(HTChunk_data(pCSParse->token)) -#endif - { - HTChunk_terminate(pCSParse->token); - token = HTChunk_data(pCSParse->token); - } - - /*Input_dump(token, demark);*/ - for (i = 0; i < pTargetObject->stateTokenCount; i++) { - StateToken_t * pStateToken = pTargetObject->stateTokens + i; - pCSParse->pStateToken = pStateToken; - - if (!(pCSParse->currentSubState & pStateToken->validSubStates)) - continue; - if (pStateToken->pCheck) { /* use check function */ - StateRet_t checkRes; - checkRes = (*pStateToken->pCheck)(pCSParse, pStateToken, token, demark); - switch (checkRes) { - case StateRet_WARN_BAD_PUNCT: - failedOnPunct = YES; - case StateRet_WARN_NO_MATCH: - continue; - case StateRet_ERROR_BAD_CHAR: - (*pCSParse->pParseContext->pParseErrorHandler)(pCSParse, token, demark, StateRet_ERROR_BAD_CHAR); - /* if (pTargetObject->pDestroy) - (*pTargetObject->pDestroy)(pCSParse); */ - return NowIn_ERROR; - default: - break; - } - } else { /* or match by name[s] */ - if (!(pStateToken->command & Command_MATCHANY)) { - if (token && pStateToken->name1) { - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - if (XP_STRCASECMP(token, pStateToken->name1) && (!pStateToken->name2 || XP_STRCASECMP(token, pStateToken->name2))) - continue; - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - } else { - if (token != pStateToken->name1) - continue; - } - } - if (Punct_badDemark(pStateToken->validPunctuation, demark)) { - failedOnPunct = YES; - continue; - } - } -/* open or close and do the appropriate callbacks */ - if (lastRet != NowIn_CHAIN) - ParseTrace("%30s %c ", token ? token : "", demark); - ParseTrace("%10s - %s:%10s => ", pCSParse->pTargetObject->note, CSParse_subState2str(pCSParse->currentSubState), pStateToken->note); - if (pStateToken->command & Command_NOTOKEN) { - HTChunk_clear(pCSParse->token); - token = 0; - } - if (pStateToken->command & Command_OPEN && pTargetObject->pOpen) - if ((*pTargetObject->pOpen)(pCSParse, token, demark) == StateRet_ERROR) - return NowIn_ERROR; - - if (pStateToken->command & (Command_OPEN|Command_CLOSE) && pCSParse->pParseContext->pTargetChangeCallback) { - ParseTrace("%3d", pStateToken->command & Command_CLOSE ? -(int)pTargetObject->targetChange : pTargetObject->targetChange); - if ((*pCSParse->pParseContext->pTargetChangeCallback)(pCSParse, pTargetObject, pTargetObject->targetChange, - (BOOL)(pStateToken->command & Command_CLOSE), pVoid) == StateRet_ERROR) - return NowIn_ERROR; - } else - ParseTrace(" "); - if (pStateToken->command & Command_CLOSE && pTargetObject->pClose) - ret = (*pTargetObject->pClose)(pCSParse, token, demark); - - if (pStateToken->pPrep && ret != NowIn_ERROR) - ret = (*pStateToken->pPrep)(pCSParse, token, demark); - if (pStateToken->pNextTargetObject) - pCSParse->pTargetObject = pStateToken->pNextTargetObject; - if (pStateToken->nextSubState != SubState_X) - pCSParse->currentSubState = pStateToken->nextSubState; -/* -CSLabel_dump(pCSLabel); -HTTrace(pCSParse->pTargetObject->note); -*/ - ParseTrace("%10s - %s", pCSParse->pTargetObject->note, CSParse_subState2str(pCSParse->currentSubState)); - if (pStateToken->command & Command_CHAIN) { - ParseTrace(" -O-O-"); - return lastRet = NowIn_CHAIN; - } - ParseTrace("\n"); - return lastRet = ret == StateRet_ERROR_BAD_CHAR ? NowIn_ERROR : ret == StateRet_DONE ? NowIn_END : NowIn_ENGINE; - } - (*pCSParse->pParseContext->pParseErrorHandler)(pCSParse, token, demark, failedOnPunct ? StateRet_WARN_BAD_PUNCT : StateRet_WARN_NO_MATCH); - if (pTargetObject->pDestroy) - (*pTargetObject->pDestroy)(pCSParse); - return NowIn_ERROR; -} - diff --git a/mozilla/lib/libpics/csparse.h b/mozilla/lib/libpics/csparse.h deleted file mode 100644 index a26117c9ad5..00000000000 --- a/mozilla/lib/libpics/csparse.h +++ /dev/null @@ -1,348 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* Parser for libpics - PARSER FOR LIBPICS - - */ -/* -** (c) COPYRIGHT MIT 1996. -** Please first read the full copyright statement in the file COPYRIGH. -*/ -/* - - This module provides the interface to CSParse.c. The parser is used to parse labels, - machine-readable descriptions, and users. The application creates one of these and - iteratevely calls CSParse_parseChunk until it returns a done or an error. - - */ -#ifndef CSPARSE_H -#define CSPARSE_H -#include "cslutils.h" -#include "htchunk.h" -/* - -NOWIN - - tells CSParse where it is in the task of tokenizing - - */ -typedef enum { - NowIn_INVALID = 0, - NowIn_NEEDOPEN, - NowIn_ENGINE, - NowIn_NEEDCLOSE, - NowIn_END, - NowIn_MATCHCLOSE, - NowIn_ERROR, - NowIn_CHAIN - } NowIn_t; -/* - - Construction/Destruction - - The parse objects are never created by the application, but instead by one of the - objects that it is used to parse. - - */ -extern CSParse_t * CSParse_new(void); -extern void CSParse_delete(CSParse_t * me); -/* - - some handy definitions - - */ -#define LPAREN '(' -#define RPAREN ')' -#define LCURLY '{' -#define RCURLY '}' -#define LBRACKET '[' -#define RBRACKET ']' -#define SQUOTE 0x27 /* avoid confusing parens checking editors */ -#define DQUOTE 0x22 -#define LPARENSTR "(" -#define RPARENSTR ")" -#define raysize(A) (sizeof(A)/sizeof(A[0])) -/* - - SUBPARSER DATA - -PUNCT - - valid punctuation - - */ -typedef enum {Punct_ZERO = 1, Punct_WHITE = 2, Punct_LPAREN = 4, - Punct_WHITE_LPAREN = (Punct_WHITE|Punct_LPAREN), - Punct_RPAREN = 8, Punct_LPAREN_RPAREN = (Punct_LPAREN|Punct_RPAREN), - Punct_WHITE_LPAREN_RPAREN = (Punct_WHITE|Punct_LPAREN|Punct_RPAREN), - Punct_ALL = 0xf} Punct_t; -/* - -SUBSTATE - - Enumerated bits that are used to mark a parsing state. Because they are bits, as - opposed to sequential numbers, a StateToken may or more than one together and serve - more than one state. They must have identical outcomes if this is to be exploited. - - By convention, the following SubState names are used: - - X - has no state - - N - is a newly created object - - A-H - substate definitions. Because they are non-conflicting bits, a subparser may have - options that sit in more than state. For instance, the string "error" may be matched in - states A and C with: - - {"error test", SubState_A|SubState_C, Punct_LPAREN, 0, "error"} *probs* I meant to keep - these 16 bit caompatible, but ran up short at the end of one StateToken list. This can - be fixed if anyone needs a 16 bit enum. - - */ -typedef enum {SubState_X = -1, SubState_N = 0x4000, SubState_A = 1, - SubState_B = 2, SubState_C = 4, SubState_D = 8, - SubState_E = 0x10, SubState_F = 0x20, SubState_G = 0x40, - SubState_H = 0x80, SubState_I = 0x100} SubState_t; -/* - - forward declaration for StateToken_t - - */ -typedef struct StateToken_s StateToken_t; -/* - -ENGINE - - called by CSParse to process tokens and punctuation - - */ -typedef NowIn_t Engine_t(CSParse_t * pCSParse, char demark, void * pVoid); -/* - - Engine employed by the Label, MacRed, and User parsers - - */ -Engine_t CSParse_targetParser; -/* - -SUBSTATE METHODS - - All methods return a StateRet. - - Check - - see if a value is legitimate, may also record it - - */ -typedef StateRet_t Check_t(CSParse_t * pCSParse, StateToken_t * pStateToken, - char * token, char demark); -/* - - Punctuation checker to be employed by Check_t functions - - */ -extern BOOL Punct_badDemark(Punct_t validPunctuation, char demark); -/* - - Open - - create a new data structure to be filled by the parser - - */ -typedef StateRet_t Open_t(CSParse_t * pCSParse, char * token, char demark); -/* - - Close - - tell the state that the data structure is no longer current - - */ -typedef StateRet_t Close_t(CSParse_t * pCSParse, char * token, char demark); -/* - - Prep - - get ready for next state - - */ -typedef StateRet_t Prep_t(CSParse_t * pCSParse, char * token, char demark); -/* - - Destroy - - something went wrong, throw away the current object - - */ -typedef void Destroy_t(CSParse_t * pCSParse); -/* - -COMMAND - - substate commands - - open - call the open function for the current data structure - - close - call the close - - chain - call again on the next state without re-reading data - - notoken - clear the token before a chain (so next state just gets punct) - - matchany - match any string - - */ -typedef enum {Command_NONE = 0, Command_OPEN = 1, Command_CLOSE = 2, - Command_CHAIN = 4, Command_NOTOKEN = 8, - Command_CLOSE_CHAIN = (Command_CLOSE|Command_CHAIN), - Command_CHAIN_NOTOKEN = (Command_CHAIN|Command_NOTOKEN), - Command_CLOSE_CHAIN_NOTOKEN = (Command_CLOSE|Command_CHAIN|Command_NOTOKEN), - Command_MATCHANY = 0x10, - Command_MATCHANY_OPEN_CHAIN = (Command_MATCHANY|Command_OPEN|Command_CHAIN), - Command_MATCHANY_CLOSE = (Command_MATCHANY|Command_CLOSE), - Command_MATCHANY_CLOSE_CHAIN = (Command_MATCHANY|Command_CLOSE|Command_CHAIN) - } Command_t; -/* - -STATETOKEN STRUCTURE - - Contains all the information about what tokens are expected in what substates. The - StateTokens are kept in array referenced by a TargetObject. - - */ -struct StateToken_s { - char * note; /* some usefull text that describes the state - usefulll f -or debugging */ - SubState_t validSubStates; - Punct_t validPunctuation; - Check_t * pCheck; /* call this function to check token */ - char * name1; /* or compare to this name */ - char * name2; /* many strings have 2 spellings ("ratings" vs. "r") */ - CSParseTC_t targetChange; /* whether target change implies diving or climbing from cur -rent state */ - TargetObject_t * pNextTargetObject; - SubState_t nextSubState; - Command_t command; /* open, close, chain, etc. */ - Prep_t * pPrep; /* prepare for next state */ - }; -/* - -TARGETOBJECT STRUCTURE - - Methods and a lists of StateTokens associated with a data structure. The methods know - how to read data into current object and the StateTokens tell when to proceed to the - next object. - - */ -struct TargetObject_s { - char * note; - Open_t * pOpen; /* call this function to open structure */ - Close_t * pClose; /* call this function to close structure */ - Destroy_t * pDestroy; - StateToken_t * stateTokens; /* array of sub states */ - int stateTokenCount; /* number of sub states */ - CSParseTC_t targetChange; /* target change signal for opening this parse state */ - }; -/* - -VALTARGET - - */ -typedef union { - BVal_t * pTargetBVal; - FVal_t * pTargetFVal; - SVal_t * pTargetSVal; - DVal_t * pTargetDVal; - HTList ** pTargetList; - } ValTarget_t; -/* - -VALTYPE - - Write down what value is to be read, and what type it is - - */ -typedef enum {ValType_NONE, ValType_BVAL, ValType_FVAL, - ValType_SVAL, ValType_DVAL, - ValType_COMMENT} ValType_t; -/* - -PARSECONTEXT - - Part of a CSParse. The boundry is a litte fuzzy. Maybe it should not exist. - - */ -typedef struct { - Engine_t * engineOf; - TargetChangeCallback_t * pTargetChangeCallback; - ParseErrorHandler_t * pParseErrorHandler; - - /* for reading [BFSD]Val_t */ - ValTarget_t valTarget; - ValType_t valType; - - char * pTokenError; - - BOOL observeQuotes; - BOOL observedQuotes; - char * legalChars; - int legalCharCount; - } ParseContext_t; -/* - -CSPARSE STRUCTURE - - Full parser state and pointer to the object that it is reading. - - */ -struct CSParse_s { - char quoteState; - NowIn_t nowIn; - HTChunk * token; - char demark; - int offset; - int depth; - ParseContext_t * pParseContext; - union { /* all the types this parse engine fills */ - CSMachRead_t * pCSMachRead; /* defined in CSMacRed.c */ - CSLabel_t * pCSLabel; /* defined in CSLabel.c */ - CSUser_t * pCSUser; /* defined in CSUser.c */ - } target; - TargetObject_t * pTargetObject; - SubState_t currentSubState; - StateToken_t * pStateToken; - }; -/* - - */ -#endif /* CSPARSE_H */ -/* - - End of Declaration */ diff --git a/mozilla/lib/libpics/htchunk.c b/mozilla/lib/libpics/htchunk.c deleted file mode 100644 index 95a04a6b823..00000000000 --- a/mozilla/lib/libpics/htchunk.c +++ /dev/null @@ -1,215 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* HTChunk.c -** CHUNK HANDLING: FLEXIBLE ARRAYS -** -** (c) COPYRIGHT MIT 1995. -** Please first read the full copyright statement in the file COPYRIGH. -** @(#) $Id: htchunk.c,v 3.1 1998-03-28 03:32:06 ltabb Exp $ -** -** history: AL, HF 28 Apr 94, Now chunk->data is filled by '\0' so -** that the string is terminated at any time. That makes -** HTChunk_terminate not needed any more, but never mind. -** EGP 15 Mar 96, Added CString conversions. -** -*/ - -/* Library include files */ -/* --- BEGIN added by mharmsen@netscape.com on 7/9/97 --- */ -#include "xp.h" -/* --- END added by mharmsen@netscape.com on 7/9/97 --- */ -/* #include "sysdep.h" 7/9/97 -- jhines */ -#include "htutils.h" -#include "htchunk.h" /* Implemented here */ - -/* Create a chunk with a certain allocation unit -** -------------- -*/ -PUBLIC HTChunk * HTChunk_new (int grow) -{ - HTChunk * ch; - if ((ch = (HTChunk *) HT_CALLOC(1, sizeof(HTChunk))) == NULL) - HT_OUTOFMEM("HTChunk_new"); - ch->growby = grow; - return ch; -} - - -/* Clear a chunk of all data -** -------------------------- -** Zero the space but do NOT HT_FREE it. We zero because we promise to have -** a NUL terminated string at all times. -*/ -PUBLIC void HTChunk_clear (HTChunk * ch) -{ - if (ch) { - ch->size = 0; - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - XP_MEMSET((void *) ch->data, '\0', ch->allocated); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - } -} - - -/* Free a chunk -** ------------ -*/ -PUBLIC void HTChunk_delete (HTChunk * ch) -{ - if (ch) { - HT_FREE(ch->data); - HT_FREE(ch); - } -} - -/* Create a chunk from an allocated string -** --------------------------------------- -*/ -PUBLIC HTChunk * HTChunk_fromCString (char * str, int grow) -{ - HTChunk * ch; - ch = HTChunk_new(grow); - if (str) { - ch->data = str; /* can't handle non-allocated str */ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - ch->size = XP_STRLEN(str); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - } - return ch; -} - -/* Free a chunk but keep the data -** ------------------------------ -*/ -PUBLIC char * HTChunk_toCString (HTChunk * ch) -{ - char * ret = 0; - if (ch) { - ret = ch->data; - HT_FREE(ch); - } - return ret; -} - -/* Append a character -** ------------------ -*/ -PUBLIC void HTChunk_putc (HTChunk * ch, char c) -{ - if (ch) { - if (ch->size >= ch->allocated-1) { - if (ch->data) { - if ((ch->data = (char *) HT_REALLOC(ch->data,ch->allocated+ch->growby)) == NULL) - HT_OUTOFMEM("HTChunk_putc"); - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - XP_MEMSET((void *) (ch->data + ch->allocated), '\0', ch->growby); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - } else { - if ((ch->data = (char *) HT_CALLOC(1, ch->allocated+ch->growby)) == NULL) - HT_OUTOFMEM("HTChunk_putc"); - } - ch->allocated += ch->growby; - } - *(ch->data+ch->size++) = c; - } -} - -/* Append a string -** --------------- -*/ -PUBLIC void HTChunk_puts (HTChunk * ch, const char * s) -{ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - HTChunk_putb(ch, s, (int) XP_STRLEN(s)); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ -} - -/* Append a block -** --------------- -** The string is always zero terminated -*/ -PUBLIC void HTChunk_putb (HTChunk * ch, const char * block, int len) -{ - if (ch && block && len) { - int needed = ch->size+len; - if (needed >= ch->allocated) { - ch->allocated = needed - needed%ch->growby + ch->growby; - if (ch->data) { - if ((ch->data = (char *) HT_REALLOC(ch->data, ch->allocated)) == NULL) - HT_OUTOFMEM("HTChunk_putb"); - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - XP_MEMSET((void *) (ch->data + needed), '\0', ch->allocated-needed); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - } else { - if ((ch->data = (char *) HT_CALLOC(1, ch->allocated)) == NULL) - HT_OUTOFMEM("HTChunk_putb"); - } - } - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - XP_MEMCPY((void *) (ch->data+ch->size), block, len); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - ch->size = needed; - } -} - - -/* Ensure a certain size -** --------------------- -*/ -PUBLIC void HTChunk_ensure (HTChunk * ch, int len) -{ - if (ch && len) { - int needed = ch->size+len; - if (needed >= ch->allocated) { - ch->allocated = needed - needed%ch->growby + ch->growby; - if (ch->data) { - if ((ch->data = (char *) HT_REALLOC(ch->data, ch->allocated)) == NULL) - HT_OUTOFMEM("HTChunk_putb"); - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - XP_MEMSET((void *) (ch->data + ch->size), '\0', ch->allocated-ch->size); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - } else { - if ((ch->data = (char *) HT_CALLOC(1, ch->allocated)) == NULL) - HT_OUTOFMEM("ch->data "); - } - } - } -#if 0 - if (needed <= ch->allocated) return; - ch->allocated = needed-1 - ((needed-1) % ch->growby) - + ch->growby; /* Round up */ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - ch->data = ch->data ? (char *)XP_REALLOC(ch->data, ch->allocated) - : (char *)HT_MALLOC(ch->allocated); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - if (ch->data == NULL) HT_OUTOFMEM(__FILE__, "HTChunk_ensure"); -#endif -} diff --git a/mozilla/lib/libpics/htchunk.h b/mozilla/lib/libpics/htchunk.h deleted file mode 100644 index 67881aaeaa6..00000000000 --- a/mozilla/lib/libpics/htchunk.h +++ /dev/null @@ -1,192 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* W3C Reference Library libwww Chunk Class - THE CHUNK CLASS - - */ -/* -** (c) COPYRIGHT MIT 1995. -** Please first read the full copyright statement in the file COPYRIGH. -*/ -/* - - The Chunk Class defines a way to automatically handle dynamic strings and other data - types. You create a chunk with an initial size and it will then automatically grow to - accomodate added data to the chunk. It is a general utility module. It is garanteed - that the array is '\0' terminated at all times (and hence is a valid C type string). - The method HTChunkTerminate can be used to explicitly add a terminating '\0'and then to - include this character in the chunk size. If left out, the terminating character is - _not_ considered part of the chunk. - - _Note_: The names without a "_" (made as a #define's) are only provided for backwards - compatibility and should not be used. - - This module is implemented by HTChunk.c, and it is a part of the W3C Reference Library. - - */ -#ifndef HTCHUNK_H -#define HTCHUNK_H - -/* - -THE CHUNK CLASS - - This structure should not be referenced outside this module! We only keep it here to - maintain high performance. _Don't _use it directly! - - */ -typedef struct { - int size; /* In bytes */ - int growby; /* Allocation unit in bytes */ - int allocated; /* Current size of *data */ - char * data; /* Pointer to malloced area or 0 */ -} HTChunk; -/* - -CREATE NEW CHUNK - - Create a new chunk and specify the number of bytes to allocate at a time when the chunk - is later extended. Arbitrary but normally a trade-off time vs. memory - - */ -#define HTChunkCreate(growby) HTChunk_new(growby) -extern HTChunk * HTChunk_new (int growby); -/* - -FREE A CHUNK - - Free a chunk created by HTChunkCreatefrom memory - - */ -#define HTChunkFree(ch) HTChunk_delete(ch) -extern void HTChunk_delete (HTChunk * ch); -/* - -CLEAR A CHUNK - - Keep the chunk in memory but clear all data kept inside. This can be used if you know - that you can reuse the allocated memory instead of allocating new memory. - - */ -#define HTChunkClear(ch) HTChunk_clear(ch) -extern void HTChunk_clear (HTChunk * ch); -/* - -ENSURE A CHUNK HAS A CERTAIN AMOUNT OF FREE SPACE - - Make sure that a chunk has a certain size. If this is not the case then the chunk is - expanded. Nothing is done if the current size if bigger than the size requested. - - */ -#define HTChunkEnsure(ch, s) HTChunk_ensure(ch, s) -extern void HTChunk_ensure (HTChunk * ch, int s); -/* - -APPEND A CHARACTER TO A CHUNK - - Add the character and increment the size of the chunk by one character - - */ -#define HTChunkPutc(ch, c) HTChunk_putc(ch, c) -extern void HTChunk_putc (HTChunk * ch, char c); -/* - -APPEND A STRING TO A CHUNK - - Add the string and increment the size of the chunk by the length of the string (without - the trailing zero) - - */ -#define HTChunkPuts(ch, str) HTChunk_puts(ch, str) -extern void HTChunk_puts (HTChunk * ch, const char *str); -/* - -APPEND A BLOCK TO A CHUNK - - Add the block and increment the size of the chunk by the len - - */ -extern void HTChunk_putb (HTChunk * ch, const char *block, int len); - -/* - -ZERO TERMINATE A CHUNK - - As a chunk often is a dynamic string, it needs to be terminated by a zero in order to - be used in C. However, _by default_ any chunk is _always_ zero terminated, so the only - purpose of this function is to increment the size counter with one corresponding to the - zero. - - */ -#define HTChunkTerminate(ch) HTChunk_terminate(ch) -#define HTChunk_terminate(ch) HTChunk_putc((ch), '\0') -/* - -RETURN POINTER TO DATA - - This define converts a chunk to a normal char pointer so that it can be parsed to any - ANSI C string function. - - */ -#define HTChunkData(me) ((me) ? (me)->data : NULL) -#define HTChunk_data(me) ((me) ? (me)->data : NULL) -/* - -CSTRING CONVERSIONS - - A Chunk may be build from an allocated string. The chunk assumes control of the passes - string, elminating the need for additional allocations and string copies. - Once a string is built, the chunk may be destroyed and the string kept around. - - */ -extern HTChunk * HTChunk_fromCString (char * str, int grow); -extern char * HTChunk_toCString (HTChunk * ch); -/* - -RETURN CURRENT SIZE - - Returns the current size of the chunk - - */ -#define HTChunkSize(me) ((me) ? (me)->size : -1) -#define HTChunk_size(me) ((me) ? (me)->size : -1) -/* - - */ -#endif -/* - - - ___________________________________ - - @(#) $Id: htchunk.h,v 3.1 1998-03-28 03:32:06 ltabb Exp $ - - */ diff --git a/mozilla/lib/libpics/htlist.c b/mozilla/lib/libpics/htlist.c deleted file mode 100644 index 9201b49fac8..00000000000 --- a/mozilla/lib/libpics/htlist.c +++ /dev/null @@ -1,214 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* HTList.c -** MANAGEMENT OF LINKED LISTS -** -** (c) COPYRIGHT MIT 1995. -** Please first read the full copyright statement in the file COPYRIGH. -** @(#) $Id: htlist.c,v 3.1 1998-03-28 03:32:07 ltabb Exp $ -** -** A list is represented as a sequence of linked nodes of type HTList. -** The first node is a header which contains no object. -** New nodes are inserted between the header and the rest of the list. -*/ - -/* Library include files */ -/* --- BEGIN added by mharmsen@netscape.com on 7/9/97 --- */ -#include "xp.h" -/* --- END added by mharmsen@netscape.com on 7/9/97 --- */ -/* #include "sysdep.h" jhines -- 7/9/97 */ -#include "htutils.h" -#include "htlist.h" - -PUBLIC HTList * HTList_new (void) -{ - HTList *newList; - if ((newList = (HTList *) HT_CALLOC(1, sizeof (HTList))) == NULL) - HT_OUTOFMEM("HTList_new"); - newList->object = NULL; - newList->next = NULL; - return newList; -} - -PUBLIC BOOL HTList_delete (HTList * me) -{ - if (me) { - HTList *current; - while ((current = me) != NULL) { - me = me->next; - HT_FREE(current); - } - return YES; - } - return NO; -} - -PUBLIC BOOL HTList_addObject (HTList * me, void * newObject) -{ - if (me) { - HTList *newNode; - if ((newNode = (HTList *) HT_CALLOC(1, sizeof(HTList))) == NULL) - HT_OUTOFMEM("HTList_addObject"); - newNode->object = newObject; - newNode->next = me->next; - me->next = newNode; - return YES; - } else { - if (WWWTRACE) - HTTrace( - "HTList...... Can not add object %p to nonexisting list\n", - newObject); - } - return NO; -} - -PUBLIC BOOL HTList_appendObject (HTList * me, void * newObject) -{ - if (me) { - while (me->next) me = me->next; - return HTList_addObject(me, newObject); - } - return NO; -} - -PUBLIC BOOL HTList_removeObject (HTList * me, void * oldObject) -{ - if (me) { - HTList *previous; - while (me->next) { - previous = me; - me = me->next; - if (me->object == oldObject) { - previous->next = me->next; - HT_FREE(me); - return YES; /* Success */ - } - } - } - return NO; /* object not found or NULL list */ -} - -PUBLIC void * HTList_removeLastObject (HTList * me) -{ - if (me && me->next) { - HTList *lastNode = me->next; - void * lastObject = lastNode->object; - me->next = lastNode->next; - HT_FREE(lastNode); - return lastObject; - } else /* Empty list */ - return NULL; -} - -PUBLIC void * HTList_removeFirstObject (HTList * me) -{ - if (me && me->next) { - HTList * prevNode; - void *firstObject; - while (me->next) { - prevNode = me; - me = me->next; - } - firstObject = me->object; - prevNode->next = NULL; - HT_FREE(me); - return firstObject; - } else /* Empty list */ - return NULL; -} - -PUBLIC void * HTList_firstObject (HTList * me) -{ - if (me && me->next) { - HTList * prevNode; - while (me->next) { - prevNode = me; - me = me->next; - } - return me->object; - } else /* Empty list */ - return NULL; -} - -PUBLIC int HTList_count (HTList * me) -{ - int count = 0; - if (me) - while ((me = me->next) != NULL) - count++; - return count; -} - -PUBLIC int HTList_indexOf (HTList * me, void * object) -{ - if (me) { - int position = 0; - while ((me = me->next) != NULL) { - if (me->object == object) - return position; - position++; - } - } - return -1; -} - -PUBLIC void * HTList_objectAt (HTList * me, int position) -{ - if (position < 0) - return NULL; - if (me) { - while ((me = me->next) != NULL) { - if (position == 0) - return me->object; - position--; - } - } - return NULL; /* Reached the end of the list */ -} - -PRIVATE void * HTList_removeObjectAt (HTList * me, int position) -{ - if (position < 0) - return NULL; - if (me) { - HTList * prevNode; - prevNode = me; - while ((me = me->next) != NULL) { - if (position == 0) { - prevNode->next = me->next; - return me->object; - } - prevNode = me; - position--; - } - } - return NULL; /* Reached the end of the list */ -} diff --git a/mozilla/lib/libpics/htlist.h b/mozilla/lib/libpics/htlist.h deleted file mode 100644 index 4ad3d1ede9a..00000000000 --- a/mozilla/lib/libpics/htlist.h +++ /dev/null @@ -1,158 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* W3C Reference Library libwww List Class - THE LIST CLASS - - */ -/* -** (c) COPYRIGHT MIT 1995. -** Please first read the full copyright statement in the file COPYRIGH. -*/ -/* - - The list class defines a generic container for storing collections of things in order. - In principle it could be implemented in many ways, but in practice knowing that it is a - linked list is important for speed. - - This module is implemented by HTList.c, and it is a part of the W3C Reference Library. - - */ -#ifndef HTLIST_H -#define HTLIST_H - -/* --- BEGIN added by mharmsen@netscape.com on 7/10/97 --- */ -#ifndef BOOL -#define BOOL char -#endif -/* --- END added by mharmsen@netscape.com on 7/10/97 --- */ - -typedef struct _HTList HTList; - -struct _HTList { - void * object; - HTList * next; -}; -/* - -CREATION AND DELETION METHODS - - These two functions create and deletes a list - - */ -extern HTList * HTList_new (void); -extern BOOL HTList_delete (HTList *me); -/* - -ADD AN ELEMENT TO LIST - - A new list element is added to the beginning of the list so that it is first element - just after the head element. - - */ -extern BOOL HTList_addObject (HTList *me, void *newObject); -/* - - You can also append an element to the end of the list (the end is the first entered - object) by using the following function: - - */ -extern BOOL HTList_appendObject (HTList * me, void * newObject); -/* - -REMOVE LIST ELEMENTS - - You can delete elements in a list usin the following methods - - */ -extern BOOL HTList_removeObject (HTList *me, void *oldObject); -extern void * HTList_removeLastObject (HTList *me); -extern void * HTList_removeFirstObject (HTList *me); -/* - -SIZE OF A LIST - - Two small function to ask for the size - - */ -#define HTList_isEmpty(me) (me ? me->next == NULL : YES) -extern int HTList_count (HTList *me); -/* - -REFERENCE LIST ELEMENTS BY INDEX - - In some situations is is required to use an index in order to refer to a list element. - This is for example the case if an element can be registered multiple times. - - */ -extern int HTList_indexOf (HTList *me, void *object); -extern void * HTList_objectAt (HTList *me, int position); -/* - -FIND LIST ELEMENTS - - This method returns the _last_ element to the list or NULL if list is empty - - */ -#define HTList_lastObject(me) \ - ((me) && (me)->next ? (me)->next->object : NULL) -/* - - This method returns the _first_ element to the list or NULL if list is empty - - */ -extern void * HTList_firstObject (HTList * me); -/* - -TRAVERSE LIST - - Fast macro to traverse the list. Call it first with copy of list header: it returns the - first object and increments the passed list pointer. Call it with the same variable - until it returns NULL. - - */ -#define HTList_nextObject(me) \ - ((me) && (((me) = (me)->next) != NULL) ? (me)->object : NULL) -/* - -FREE LIST - - */ -#define HTList_free(x) HT_FREE(x) - -#endif /* HTLIST_H */ -/* - - - ___________________________________ - - @(#) $Id: htlist.h,v 3.1 1998-03-28 03:32:07 ltabb Exp $ - - */ diff --git a/mozilla/lib/libpics/htmemory.h b/mozilla/lib/libpics/htmemory.h deleted file mode 100644 index 655b03d525c..00000000000 --- a/mozilla/lib/libpics/htmemory.h +++ /dev/null @@ -1,180 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* W3C Reference Library libwww Dynamic Memory Handlers - DYNAMIC MEMORY HANDLERS - - */ -/* -** (c) COPYRIGHT MIT 1995. -** Please first read the full copyright statement in the file COPYRIGH. -*/ -/* - - This module defines any memory handler to be used by libwww for allocating and - de-allocating dynamic memory. As dynamic memory may be a scarce resource, it is - required that an application can handle memory exhaustion gracefully. This module - provides an interface that covers the following situations: - - Handling of allocation, reallocation and de-allocation of dynamic memory - - Recovering from temporary lack of available memory - - Panic handling in case a new allocation fails - - _Note_: The Library _core_ provides a default set of memory handlers for allocating and - de-allocating dynamic memory. In order to maintain a reasonable performance, they are - not registered dynamically but assigned using _C style macros_. Hence, it is not - possible to swap memory handler at run time but this was considered to be a reasonable - trade-off. - - This module is implemented by HTMemory.c, and it is a part of the W3C Reference - Library. - - */ -#ifndef HTMEMORY_H -#define HTMEMORY_H -/* - -ALLOCATION, REALLOCATION AND DE-ALLOCATION - - The Library provides a default set of methods for handling dynamic memory. They are - very basic and essentially identical to the C style malloc, calloc, realloc, and free: - - */ - -/* --- BEGIN added by mharmsen@netscape.com on 7/10/97 --- */ -#ifndef BOOL -#define BOOL char -#endif -/* --- END added by mharmsen@netscape.com on 7/10/97 --- */ - -extern void* HTMemory_malloc(size_t size); -extern void* HTMemory_calloc(size_t count, size_t size); -extern void* HTMemory_realloc(void * ptr, size_t size); -extern void HTMemory_free(void* ptr); - -/* - - Memory Macros - - The methods above are not referred directly in the Library. Instead we use a set of C - style macros. If you don't wany any memory management beyond normal malloc and alloc - then you can just use that instead of the HTMemory_* function. You can of course also - provide your own methods as well. - - */ -#ifndef __FILE__ -#define __FILE__ "" -#endif - -#ifndef __LINE__ -#define __LINE__ 0L -#endif - -#define HT_MALLOC(size) HTMemory_malloc((size)) -#define HT_CALLOC(count, size) HTMemory_calloc((count), (size)) -#define HT_REALLOC(ptr, size) HTMemory_realloc((ptr), (size)) -#define HT_FREE(pointer) {HTMemory_free((pointer));((pointer))=NULL;} -/* - -MEMORY FREER FUNCTIONS - - The dynamic memory freer functions are typically functions that are capable of freeing - large chunks of memory. In case a new allocation fails, the allocation method looks for - any registered freer functions to call. There can be multiple freer functions and after - each call, the allocation method tries again to allocate the desired amount of dynamic - memory. The freer functions are called in reverseorder meaning that the lastone - registered gets called first. That way, it is easy to add temporary freer functions - which then are guaranteed to be called first if a methods fails. - - Add a Freer Function - - You can add a freer function by using the following method. The Library may itself - register a set of free functions during initialization. If the application does not - register any freer functions then the Library looks how it can free internal memory. - The freer function is passed the total number of _bytes_ requested by the allocation. - - */ -typedef void (*HTMemoryCallback()); /* jhines -- 7/9/97 */ -/* typedef void HTMemoryCallback(size_t size); */ - -extern BOOL HTMemoryCall_add (HTMemoryCallback * cbf); -/* - - Delete a Freer Function - - Freer functions can be deleted at any time in which case they are not called anymore. - - */ -extern BOOL HTMemoryCall_delete (HTMemoryCallback * cbf); -extern BOOL HTMemoryCall_deleteAll (void); -/* - -PANIC HANDLING - - If the freer functions are not capable of de-allocation enough memory then the - application must have an organized way of closing down. This is done using the panic - handler. In the libwww, each allocation is tested and HT_OUTOFMEMis called if a NULLwas - returned. HT_OUTOFMEMis a macro which by default calls HTMemory_outofmem()but of course - can point to any method. The default handler calls an exit function defined by the - application in a call to HTMemory_setExit(). If the application has _not_ defined an - exit function, HTMemory_outofmem()prints an error message and calls exit(1). - - */ -typedef void HTMemory_exitCallback(char *name, char *file, unsigned long line); - -extern void HTMemory_setExit(HTMemory_exitCallback * pExit); -extern HTMemory_exitCallback * HTMemory_exit(void); -/* - - Call the Exit Handler - - If an allocation fails then this function is called. If the application has registered - its own panic handler then this is called directly from this function. Otherwise, the - default behavior is to write a small message to stderr and then exit. - - */ -#define outofmem(file, name) HT_OUTOFMEM(name) -#define HT_OUTOFMEM(name) HTMemory_outofmem((name), __FILE__, __LINE__) - -extern void HTMemory_outofmem(char * name, char * file, unsigned long line); -/* - - */ -#endif /* HTMEMORY_H */ -/* - - - ___________________________________ - - @(#) $Id: htmemory.h,v 3.1 1998-03-28 03:32:07 ltabb Exp $ - - */ diff --git a/mozilla/lib/libpics/htstring.c b/mozilla/lib/libpics/htstring.c deleted file mode 100644 index 6ce20a8222e..00000000000 --- a/mozilla/lib/libpics/htstring.c +++ /dev/null @@ -1,251 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* HTString.c -** DYNAMIC STRING UTILITIES -** -** (c) COPYRIGHT MIT 1995. -** Please first read the full copyright statement in the file COPYRIGH. -** @(#) $Id: htstring.c,v 3.2 1998-06-22 21:20:29 spider Exp $ -** -** Original version came with listserv implementation. -** Version TBL Oct 91 replaces one which modified the strings. -** 02-Dec-91 (JFG) Added stralloccopy and stralloccat -** 23 Jan 92 (TBL) Changed strallocc* to 8 char HTSAC* for VM and suchlike -** 6 Oct 92 (TBL) Moved WWW_TraceFlag in here to be in library -** 9 Oct 95 (KR) fixed problem with double quotes in HTNextField -*/ - -/* Library include files */ -/* --- BEGIN added by mharmsen@netscape.com on 7/9/97 --- */ -#include "xp.h" -/* --- END added by mharmsen@netscape.com on 7/9/97 --- */ -/* #include "sysdep.h" jhines -- 7/9/97 */ -#include "htutils.h" -#include "htstring.h" /* Implemented here */ - -#if WWWTRACE_MODE == WWWTRACE_FILE -PUBLIC FILE *WWWTrace = NULL; -#endif - -#ifndef WWW_WIN_DLL -PUBLIC int WWW_TraceFlag = 0; /* Global trace flag for ALL W3 code */ -#endif - -/* ------------------------------------------------------------------------- */ - -/* Strings of any length -** --------------------- -*/ -/* --- BEGIN removed by mharmsen@netscape.com on 7/9/97 --- */ -/************************************************************************/ -/* PUBLIC int strcasecomp (const char * a, const char * b) */ -/* { */ -/* int diff; */ -/* for( ; *a && *b; a++, b++) { */ -/* if ((diff = TOLOWER(*a) - TOLOWER(*b))) */ -/* return diff; */ -/* } */ -/* if (*a) return 1; */ /* a was longer than b */ -/* if (*b) return -1; */ /* a was shorter than b */ -/* return 0; */ /* Exact match */ -/*} */ -/************************************************************************/ -/* --- END removed by mharmsen@netscape.com on 7/9/97 --- */ - - -/* With count limit -** ---------------- -*/ -/* --- BEGIN removed by mharmsen@netscape.com on 7/9/97 --- */ -/**********************************************************************/ -/* PUBLIC int strncasecomp (const char * a, const char * b, int n) */ -/* { */ -/* const char *p =a; */ -/* const char *q =b; */ -/* */ -/* for(p=a, q=b;; p++, q++) { */ -/* int diff; */ -/* if (p == a+n) return 0; */ /* Match up to n characters */ -/* if (!(*p && *q)) return *p - *q; */ -/* diff = TOLOWER(*p) - TOLOWER(*q); */ -/* if (diff) return diff; */ -/* } */ -/* NOTREACHED */ -/*} */ -/**********************************************************************/ -/* --- END removed by mharmsen@netscape.com on 7/9/97 --- */ - - -/* -** strcasestr(s1,s2) -- like strstr(s1,s2) but case-insensitive. -*/ -/* --- BEGIN removed by mharmsen@netscape.com on 7/9/97 --- */ -/*************************************************************************/ -/* PUBLIC char * strcasestr (char * s1, char * s2) */ -/* { */ -/* char * ptr = s1; */ -/* */ -/* if (!s1 || !s2 || !*s2) return s1; */ -/* */ -/* while (*ptr) { */ -/* if (TOUPPER(*ptr) == TOUPPER(*s2)) { */ -/* char * cur1 = ptr + 1; */ -/* char * cur2 = s2 + 1; */ -/* while (*cur1 && *cur2 && TOUPPER(*cur1) == TOUPPER(*cur2)) { */ -/* cur1++; */ -/* cur2++; */ -/* } */ -/* if (!*cur2) return ptr; */ -/* } */ -/* ptr++; */ -/* } */ -/* return NULL; */ -/*} */ -/*************************************************************************/ -/* --- END removed by mharmsen@netscape.com on 7/9/97 --- */ - - -#if 0 /* LJM: not needed */ - -/* Allocate a new copy of a string, and returns it -*/ -PUBLIC char * HTSACopy (char ** dest, const char * src) -{ - if (*dest) HT_FREE(*dest); - if (! src) - *dest = NULL; - else { - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - if ((*dest = (char *) HT_MALLOC(XP_STRLEN(src) + 1)) == NULL) - HT_OUTOFMEM("HTSACopy"); - XP_STRCPY (*dest, src); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - } - return *dest; -} - -/* String Allocate and Concatenate -*/ -PUBLIC char * HTSACat (char ** dest, const char * src) -{ - if (src && *src) { - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - if (*dest) { - int length = XP_STRLEN (*dest); - if ((*dest = (char *) HT_REALLOC(*dest, length + XP_STRLEN(src) + 1)) == NULL) - HT_OUTOFMEM("HTSACat"); - XP_STRCPY (*dest + length, src); - } else { - if ((*dest = (char *) HT_MALLOC(XP_STRLEN(src) + 1)) == NULL) - HT_OUTOFMEM("HTSACat"); - XP_STRCPY (*dest, src); - } - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - } - return *dest; -} - -#endif /* 0 */ - -/* String Matching -** --------------- -** String comparison function for file names with one wildcard * in the -** template. Arguments are: -** -** tmpl is a template string to match the name against. -** agaist, may contain a single wildcard character * which -** matches zero or more arbitrary characters. -** name is the name to be matched agaist the template. -** -** return: - Empty string if perfect match -** - pointer to part matched by wildcard if any -** - NULL if no match -*/ -PUBLIC char * HTStrMatch (const char * tmpl, const char * name) -{ - while (*tmpl && *name && *tmpl==*name) tmpl++, name++; - return ((!*tmpl && !*name) || *tmpl=='*') ? (char *) name : (char *) NULL; -} - -PUBLIC char * HTStrCaseMatch (const char * tmpl, const char * name) -{ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - while (*tmpl && *name && XP_TO_UPPER(*tmpl)==XP_TO_UPPER(*name)) tmpl++, name++; - return ((!*tmpl && !*name) || *tmpl=='*') ? (char *) name : (char *) NULL; - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ -} - -/* Strip white space off a string -** ------------------------------ -** Return value points to first non-white character, or to 0 if none. -** All trailing white space is OVERWRITTEN with zero. -*/ -PUBLIC char * HTStrip (char * s) -{ - if (s) { - char * p=s; - for(p=s;*p;p++) {;} /* Find end of string */ - for(p--;p>=s;p--) { - if (WHITE(*p)) - *p=0; /* Zap trailing blanks */ - else - break; - } - while (WHITE(*s)) s++; /* Strip leading blanks */ - } - return s; -} - -PRIVATE HTTraceCallback * PHTTraceCallback; - -PUBLIC void HTTrace_setCallback(HTTraceCallback * pCall) -{ - PHTTraceCallback = pCall; -} - -PUBLIC HTTraceCallback * HTTrace_getCallback(void) -{ - return PHTTraceCallback; -} - -PUBLIC int HTTrace(const char * fmt, ...) -{ - va_list pArgs; - va_start(pArgs, fmt); - if (PHTTraceCallback) - (*PHTTraceCallback)(fmt, pArgs); -#ifdef WWW_WIN_WINDOWS - return (0); -#else - return (vfprintf(stderr, fmt, pArgs)); -#endif -} - diff --git a/mozilla/lib/libpics/htstring.h b/mozilla/lib/libpics/htstring.h deleted file mode 100644 index 6d5a3fffbc7..00000000000 --- a/mozilla/lib/libpics/htstring.h +++ /dev/null @@ -1,128 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* W3C Reference Library libwww Generic String Management - GENERIC STRING MANAGEMENT - - */ -/* -** (c) COPYRIGHT MIT 1995. -** Please first read the full copyright statement in the file COPYRIGH. -*/ -/* - - These functions provide functionality for case-independent string comparison and - allocations with copies etc. - - This module is implemented by HTString.c, and it is a part of the W3C Reference - Library. - - */ -#ifndef HTSTRING_H -#define HTSTRING_H -/* - -DYNAMIC STRING MANIPULATION - - These two functions are dynamic versions of strcpyand strcat. They use mallocfor - allocating space for the string. If StrAllocCopyis called with a non-NULL dest, then - this is freed before the new value is assigned so that only the laststring created has - to be freed by the user. If StrAllocCatis called with a NULL pointer as destination - then it is equivalent to StrAllocCopy. - - */ -/* --- BEGIN removed by mharmsen@netscape.com on 7/9/97 --- */ -/* #define StrAllocCopy(dest, src) HTSACopy (&(dest), src) */ -/* #define StrAllocCat(dest, src) HTSACat (&(dest), src) */ -/* --- END removed by mharmsen@netscape.com on 7/9/97 --- */ - -extern char * HTSACopy (char **dest, const char *src); -extern char * HTSACat (char **dest, const char *src); -/* - -CASE-INSENSITIVE STRING COMPARISON - - The usual routines (comp instead of cmp) had some problem. - - */ -/* --- BEGIN removed by mharmsen@netscape.com on 7/9/97 --- */ -/* extern int strcasecomp (const char *a, const char *b); */ -/* extern int strncasecomp (const char *a, const char *b, int n); */ -/* --- END removed by mharmsen@netscape.com on 7/9/97 --- */ -/* - -STRING COMPARISON WITH WILD CARD MATCH - - String comparison function for file names with one wildcard * in the template. - Arguments are: - - tmpl is a template string to match the name against. agaist, may - contain a single wildcard character * which matches zero or more - arbitrary characters. - - name is the name to be matched agaist the template. - - Returns empty string ("") if perfect match, pointer to part matched by wildcard if any, - or NULL if no match. This is basically the same as YES if match, else NO. - - */ -extern char * HTStrMatch (const char * tmpl, const char * name); -extern char * HTStrCaseMatch (const char * tmpl, const char * name); -/* - -CASE-INSENSITIVE STRSTR - - This works like strstr()but is not case-sensitive. - - */ -/* --- BEGIN removed by mharmsen@netscape.com on 7/9/97 --- */ -/* extern char * strcasestr (char * s1, char * s2); */ -/* --- END removed by mharmsen@netscape.com on 7/9/97 --- */ -/* - -STRIP WHITE SPACE OFF A STRING - - Return value points to first non-white character, or to '/0' if none. All trailing - white space is OVERWRITTEN with zero. - - */ -extern char * HTStrip (char * s); -/* - - */ -#endif -/* - - - ___________________________________ - - @(#) $Id: htstring.h,v 3.1 1998-03-28 03:32:08 ltabb Exp $ - - */ diff --git a/mozilla/lib/libpics/htutils.h b/mozilla/lib/libpics/htutils.h deleted file mode 100644 index a555acbf083..00000000000 --- a/mozilla/lib/libpics/htutils.h +++ /dev/null @@ -1,270 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* W3C Reference Library libwww General Purpose Macros - GENERAL PURPOSE MACROS - - */ -/* -** (c) COPYRIGHT MIT 1995. -** Please first read the full copyright statement in the file COPYRIGH. -*/ -/* - - This module is a part of the W3C Reference Library. See also the system dependent file - sysdep module for system specific information. - - */ -#ifndef HTUTILS_H -#define HTUTILS_H -/* - -DEBUG MESSAGE CONTROL - - This is the global flag for setting the WWWTRACEoptions. The verbose mode is no longer - a simple boolean but a bit field so that it is possible to see parts of the output - messages. - - */ -#ifndef DEBUG -#define DEBUG /* No one ever turns this off as trace is too important */ -#endif -/* - - Definition of the Global Trace Flag - - The global trace flag variable is available everywhere. - - */ -#ifdef DEBUG -#ifdef WWW_WIN_DLL -extern int * WWW_TraceFlag; /* In DLLs, we need the indirection */ -#define WWWTRACE (*WWW_TraceFlag) -#else -extern int WWW_TraceFlag; /* Global flag for all W3 trace */ -#define WWWTRACE (WWW_TraceFlag) -#endif /* WWW_WIN_DLL */ -#else -#define WWWTRACE 0 -#endif /* DEBUG */ -/* - - The WWWTRACEdefine outputs messages if verbose mode is active according to the - following rules: - - */ -typedef enum _HTTraceFlags { - SHOW_UTIL_TRACE = 0x1, /* 1 */ - SHOW_APP_TRACE = 0x2, /* 10 */ - SHOW_CACHE_TRACE = 0x4, /* 100 */ - SHOW_SGML_TRACE = 0x8, /* 1000 */ - SHOW_BIND_TRACE = 0x10, /* 1.0000 */ - SHOW_THREAD_TRACE = 0x20, /* 10.0000 */ - SHOW_STREAM_TRACE = 0x40, /* 100.0000 */ - SHOW_PROTOCOL_TRACE = 0x80, /* 1000.0000 */ - SHOW_MEM_TRACE = 0x100, /* 1.0000.0000 */ - SHOW_URI_TRACE = 0x200, /* 10.0000.0000 */ - SHOW_AUTH_TRACE = 0x400, /* 100.0000.0000 */ - SHOW_ANCHOR_TRACE = 0x800, /* 1000.0000.0000 */ - SHOW_PICS_TRACE = 0x1000, /* 1.0000.0000.0000 */ - SHOW_CORE_TRACE = 0x2000, /* 10.0000.0000.0000 */ - SHOW_ALL_TRACE = 0x3FFF /* 11.1111.1111.1111 */ -} HTTraceFlags; -/* - - The flags are made so that they can serve as a group flag for correlated trace - messages, e.g. showing messages for SGML and HTML at the same time. - - */ -#define UTIL_TRACE (WWWTRACE & SHOW_UTIL_TRACE) -#define APP_TRACE (WWWTRACE & SHOW_APP_TRACE) -#define CACHE_TRACE (WWWTRACE & SHOW_CACHE_TRACE) -#define SGML_TRACE (WWWTRACE & SHOW_SGML_TRACE) -#define BIND_TRACE (WWWTRACE & SHOW_BIND_TRACE) -#define THD_TRACE (WWWTRACE & SHOW_THREAD_TRACE) -#define STREAM_TRACE (WWWTRACE & SHOW_STREAM_TRACE) -#define PROT_TRACE (WWWTRACE & SHOW_PROTOCOL_TRACE) -#define MEM_TRACE (WWWTRACE & SHOW_MEM_TRACE) -#define URI_TRACE (WWWTRACE & SHOW_URI_TRACE) -#define AUTH_TRACE (WWWTRACE & SHOW_AUTH_TRACE) -#define ANCH_TRACE (WWWTRACE & SHOW_ANCHOR_TRACE) -#define PICS_TRACE (WWWTRACE & SHOW_PICS_TRACE) -#define CORE_TRACE (WWWTRACE & SHOW_CORE_TRACE) -/* - - Destination for Trace Messages - - You can send trace messages to various destinations depending on the type of your - application. By default, on Unix the messages are sent to stderr using fprintf() and if - we are on Windows and have a windows applications then register a HTTraceCallback - function. This is done with HTTrace_setCallback. It tells HTTrace to call a - HTTraceCallback. If your compiler has problems with va_list, then you may forget about - registering the callback and instead macro HTTrace as follows: #define HTTrace - MyAppSpecificTrace - - */ -typedef int (*HTTraceCallback)(); /* jhines--7/9/97 */ -/* typedef int HTTraceCallback(const char * fmt, va_list pArgs); */ - -extern void HTTrace_setCallback(HTTraceCallback * pCall); -extern HTTraceCallback * HTTrace_getCallback(void); - -extern int HTTrace(const char * fmt, ...); -/* - -MACROS FOR FUNCTION DECLARATIONS - - */ -/* --- BEGIN removed by mharmsen@netscape.com on 7/9/97 --- */ -/* #define PUBLIC */ /* Accessible outside this module */ -/* #define PRIVATE static */ /* Accessible only within this module */ -/* --- END removed by mharmsen@netscape.com on 7/9/97 --- */ -/* - -OFTEN USED INTERGER MACROS - - Min and Max functions - - */ -#ifndef HTMIN -#define HTMIN(a,b) ((a) <= (b) ? (a) : (b)) -#define HTMAX(a,b) ((a) >= (b) ? (a) : (b)) -#endif -/* - - Double abs function - - */ -#ifndef HTDABS -#define HTDABS(a) ((a) < 0.0 ? (-(a)) : (a)) -#endif -/* - -RETURN CODES FOR PROTOCOL MODULES AND STREAMS - - Theese are the codes returned from the protocol modules, and the stream modules. - Success are (>=0) and failure are (<0) - - */ -#define HT_OK 0 /* Generic success */ -#define HT_ALL 1 /* Used by Net Manager */ - -#define HT_CONTINUE 29991 /* Continue an operation */ -#define HT_CLOSED 29992 /* The socket was closed */ -#define HT_PERSISTENT 29993 /* Wait for persistent connection */ -#define HT_IGNORE 29994 /* Ignore this in the Net manager */ -#define HT_NO_DATA 29995 /* OK but no data was loaded */ -#define HT_RELOAD 29996 /* If we must reload the document */ -#define HT_PERM_REDIRECT 29997 /* Redo the retrieve with a new URL */ -#define HT_TEMP_REDIRECT 29998 /* Redo the retrieve with a new URL */ -#define HT_LOADED 29999 /* Instead of a socket */ - -#define HT_ERROR -1 /* Generic failure */ - -#define HT_NO_ACCESS -10 /* Access not available */ -#define HT_FORBIDDEN -11 /* Access forbidden */ -#define HT_RETRY -13 /* If service isn't available */ -#define HT_NO_PROXY_ACCESS -14 /* No proxy access */ - -#define HT_INTERNAL -100 /* Weird -- should never happen. */ - -#define HT_WOULD_BLOCK -29997 /* If we are in a select */ -#define HT_INTERRUPTED -29998 /* Note the negative value! */ -#define HT_PAUSE -29999 /* If we want to pause a stream */ -/* - -UPPER- AND LOWERCASE MACROS - - The problem here is that toupper(x) is not defined officially unless isupper(x) is. - These macros are CERTAINLY needed on #if defined(pyr) || define(mips) or BDSI - platforms. For safefy, we make them mandatory. - - */ -/* --- BEGIN removed by mharmsen@netscape.com on 7/9/97 --- */ -/* #ifndef TOLOWER */ -/* #define TOLOWER(c) tolower(c) */ -/* #define TOUPPER(c) toupper(c) */ -/* #endif */ -/* --- END removed by mharmsen@netscape.com on 7/9/97 --- */ -/* - -MAX AND MIN VALUES FOR INTEGERS AND FLOATING POINT - - */ -#ifdef FLT_EPSILON /* The ANSI C way define */ -#define HT_EPSILON FLT_EPSILON -#else -#define HT_EPSILON 0.00000001 -#endif -/* - -WHITE CHARACTERS - - Is character _c_ white space? - - */ -/* --- BEGIN replaced by mharmsen@netscape.com on 7/9/97 --- */ -/* #define WHITE(c) isspace(c) */ -#define WHITE(c) XP_IS_SPACE(c) -/* --- END replaced by mharmsen@netscape.com on 7/9/97 --- */ -/* - -THE LOCAL EQUIVALENTS OF CR AND LF - - We can check for these after net ascii text has been converted to the local - representation. Similarly, we include them in strings to be sent as net ascii after - translation. - - */ -/* --- BEGIN removed by mharmsen@netscape.com on 7/9/97 --- */ -/* #define LF FROMASCII('\012') */ /* ASCII line feed LOCAL EQUIVALENT */ -/* #define CR FROMASCII('\015') */ /* Will be converted to ^M for transmission */ -/* --- END removed by mharmsen@netscape.com on 7/9/97 --- */ -/* - -LIBRARY DYNAMIC MEMORY MAGEMENT - - The Library has it's own dynamic memory API which is declared in memory management - module. - - */ -#include "htmemory.h" -/* - - */ -#endif /* HT_UTILS.h */ -/* - - - ___________________________________ - - @(#) $Id: htutils.h,v 3.2 1998-06-22 21:20:29 spider Exp $ - - */ diff --git a/mozilla/lib/libpics/lablpars.c b/mozilla/lib/libpics/lablpars.c deleted file mode 100644 index 9757989a702..00000000000 --- a/mozilla/lib/libpics/lablpars.c +++ /dev/null @@ -1,275 +0,0 @@ - -/* W3 Copyright statement -Copyright 1995 by: Massachusetts Institute of Technology (MIT), INRIA</H2> - -This W3C software is being provided by the copyright holders under the -following license. By obtaining, using and/or copying this software, -you agree that you have read, understood, and will comply with the -following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee or royalty is hereby -granted, provided that the full text of this NOTICE appears on -<EM>ALL</EM> copies of the software and documentation or portions -thereof, including modifications, that you make. - -<B>THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO -REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, -BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR -THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE -OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used -in advertising or publicity pertaining to the software without -specific, written prior permission. Title to copyright in this -software and any associated documentation will at all times remain -with copyright holders. -*/ -/* --- BEGIN added by mharmsen@netscape.com on 7/9/97 --- */ -#include "xp.h" -/* --- END added by mharmsen@netscape.com on 7/9/97 --- */ -/* --- BEGIN removed by mharmsen@netscape.com on 7/9/97 --- */ -/* #include "malloc.h" */ -/* --- END removed by mharmsen@netscape.com on 7/9/97 --- */ -/* #include "sysdep.h" -- jhines 7/9/97 */ -/* --- BEGIN added by scullin@netscape.com on 5/27/98 --- */ -#include "prerror.h" -/* =--- END added by scullin@netscape.com on 5/27/98 --- */ -#include "cslutils.h" -#include "csll.h" /* to define states in stateChange */ -#include "csparse.h" - -int Total; - -extern int ParseDebug; - -/* --- BEGIN added by mharmsen@netscape.com on 7/9/97 --- */ -extern int SEC_ERROR_NO_MEMORY; -/* --- BEGIN added by mharmsen@netscape.com on 7/9/97 --- */ - -PRIVATE -CSError_t spit(char* text, CSLabel_t * pCSMR, BOOL closed) -{ - printf("%s %s\n", text, closed ? "closed" : "opened"); - return CSDoMore_more; -} - -LabelTargetCallback_t targetCallback; -StateRet_t targetCallback(CSLabel_t * pCSMR, CSParse_t * pCSParse, CSLLTC_t target, BOOL closed, void * pVoid) -{ - int change = closed ? -target : target; - - Total += change; - if (!ParseDebug) - printf("%3d ", change); -/* printf("%s %s (%d)\n", closed ? " ending" : "starting", pCSParse->pParseState->note, closed ? -target : target); */ - return StateRet_OK; -} - -/* LLErrorHandler_t parseErrorHandler; */ -StateRet_t parseErrorHandler(CSLabel_t * pCSLabel, CSParse_t * pCSParse, - const char * token, char demark, - StateRet_t errorCode) -{ - char space[256]; - printf("%20s - %s:", pCSParse->pTargetObject->note, - pCSParse->currentSubState == SubState_X ? "SubState_X" : - pCSParse->currentSubState == SubState_N ? "SubState_N" : - pCSParse->currentSubState == SubState_A ? "SubState_A" : - pCSParse->currentSubState == SubState_B ? "SubState_B" : - pCSParse->currentSubState == SubState_C ? "SubState_C" : - pCSParse->currentSubState == SubState_D ? "SubState_D" : - pCSParse->currentSubState == SubState_E ? "SubState_E" : - pCSParse->currentSubState == SubState_F ? "SubState_F" : - pCSParse->currentSubState == SubState_G ? "SubState_G" : - pCSParse->currentSubState == SubState_H ? "SubState_H" : - "???"); - switch (errorCode) { - case StateRet_WARN_NO_MATCH: - if (token) - sprintf(space, "Unexpected token \"%s\".\n", token); - else - sprintf(space, "Unexpected lack of token.\n"); - break; - case StateRet_WARN_BAD_PUNCT: - /* --- BEGIN corrected misspelling by mharmsen@netscape.com on 7/9/97 --- */ - sprintf(space, "Unexpected punctuation \"%c\"", demark); - /* --- END corrected misspelling by mharmsen@netscape.com on 7/9/97 --- */ - if (token) - printf("after token \"%s\".\n", token); - else - printf(".\n"); - break; - case StateRet_ERROR_BAD_CHAR: - /* --- BEGIN corrected misspelling by mharmsen@netscape.com on 7/9/97 --- */ - sprintf(space, "Unexpected character \"%c\" in token \"%s\".\n", - *pCSParse->pParseContext->pTokenError, token); - /* --- END corrected misspelling by mharmsen@netscape.com on 7/9/97 --- */ - break; - default: - sprintf(space, "Internal error: demark:\"%c\" token:\"%s\".\n", - demark, token); - break; - } - printf(space); -/* - CSLabel_dump(pCSMR); - HTTrace(pParseState->note); -*/ - return errorCode; -} - -/* --- BEGIN changed by mharmsen@netscape.com on 7/9/97 --- */ -/* #if 1 */ -#if 0 -/* --- END changed by mharmsen@netscape.com on 7/9/97 --- */ -/* use this main to test input with a series of labels, each on a line. */ -int main(int argc, char** argv) -{ - char lineBuf[512]; - CSParse_t * pCSParse = 0; - CSDoMore_t last = CSDoMore_done; - FILE * input; - - if (argc > 1) { - if ((input = fopen(argv[1], "r")) == NULL) { - printf("Couldn't open \"%s\".\n", argv[1]); - exit(1); - } - } else { - input = stdin; - } - if (argc > 2) - ParseDebug = 1; - pCSParse = CSParse_newLabel(&targetCallback, &parseErrorHandler); - while (fgets(lineBuf, sizeof(lineBuf), input)){ - int len; - char * ptr; - for (ptr = lineBuf; *ptr; ptr++) - if (*ptr == ';') { - *ptr = 0; - break; - } -/* if (strchr(lineBuf, ';')) - *ptr = 0; - if (lineBuf[0] == ';') - continue; */ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - len = XP_STRLEN(lineBuf); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - if (lineBuf[len - 1] == '\r' || lineBuf[len - 1] == '\n') { - lineBuf[len-- - 1] = 0; - } - if (!lineBuf[0]) { - if (last != CSDoMore_done) - printf("parsing end error\n"); - if (pCSParse) - CSParse_deleteLabel(pCSParse); - pCSParse = CSParse_newLabel(&targetCallback, &parseErrorHandler); - last = CSDoMore_done; - } else { - printf("%s ", lineBuf); if (ParseDebug) printf("\n"); - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - switch (last = CSParse_parseChunk(pCSParse, lineBuf, (int) XP_STRLEN(lineBuf), 0)) { - case CSDoMore_done: - printf("= %d - parsing end\n", Total); - break; - case CSDoMore_error: - printf("= %d - parsing error\n", Total); - exit (1); - case CSDoMore_more: - printf("\n"); - break; - } - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - } - } - if (pCSParse) - CSParse_deleteLabel(pCSParse); - if (last != CSDoMore_done) - printf("parsing end error\n"); - return (0); -} -/* --- BEGIN changed by mharmsen@netscape.com on 7/9/97 --- */ -/* #else */ -#endif -#if 0 -/* --- END changed by mharmsen@netscape.com on 7/9/97 --- */ -/* use this main to test input of a label list spread out over multiple lines*/ -int main(int argc, char** argv) -{ - char lineBuf[512]; - while (gets(lineBuf)){ - CSParse_t * pCSParse; - if (lineBuf[0] == ';') - continue; - Total = 0; - printf("%s", lineBuf); - pCSParse = CSParse_newLabel(&targetCallback, &parseErrorHandler); - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - if (CSParse_parseChunk(pCSParse, lineBuf, - (int)XP_STRLEN(lineBuf), 0) != CSDoMore_done) { - printf("parsing end error\n"); - break; - } - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ - CSParse_deleteLabel(pCSParse); - printf("= %d\n", Total); - } - return (0); -} -#endif - -#if 0 /* a not-needed but often useful sample implementation of HTTrace */ -int HTTrace(const char * fmt, ...) -{ - va_list pArgs; - va_start(pArgs, fmt); - return (vfprintf(stderr, fmt, pArgs)); -} -#endif -void * HTMemory_malloc (size_t size) -{ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - return XP_ALLOC(size); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ -} - -void * HTMemory_calloc (size_t nobj, size_t size) -{ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - return XP_CALLOC(nobj, size); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ -} - -void * HTMemory_realloc (void * p, size_t size) -{ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - return XP_REALLOC(p, size); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ -} - -void HTMemory_free (void * ptr) -{ - /* --- BEGIN converted by mharmsen@netscape.com on 7/9/97 --- */ - XP_FREE(ptr); - /* --- END converted by mharmsen@netscape.com on 7/9/97 --- */ -} - -void HTMemory_outofmem (char * name, char * file, unsigned long line) -{ - HTTrace("%s:%ld failed allocation for \"%s\".\n\ -Program aborted.\n", - file, line, name); - /* --- BEGIN changed by mharmsen@netscape.com on 7/9/97 --- */ - /* exit(1); */ - /* --- BEGIN changed by scullin@netscape.com on 5/27/98 --- */ - PR_SetError( SEC_ERROR_NO_MEMORY, 0 ); - /* --- END changed by scullin@netscape.com on 5/27/98 --- */ - return; - /* --- END changed by mharmsen@netscape.com on 7/9/97 --- */ -} - diff --git a/mozilla/lib/libpics/picsapi.c b/mozilla/lib/libpics/picsapi.c deleted file mode 100644 index 606d30477ae..00000000000 --- a/mozilla/lib/libpics/picsapi.c +++ /dev/null @@ -1,1702 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - * Glue code to make PICS work in the client. This is just a thin - * layer between the W3C code and our layout engine to digest PICS labels. - * Coded by Lou Montulli - */ -#if defined(CookieManagement) -#define TRUST_LABELS 1 -#endif - - - -#include "xp.h" -#include "cslutils.h" -#include "csll.h" -#include "csllst.h" -#include "pics.h" -#include "prefapi.h" -#include "xpgetstr.h" -#include "sechash.h" -#include "base64.h" - -extern int XP_ALERT_PROMPT_JAVA_CAPIBILITIES_PASSWORD; -extern int XP_ALERT_PROMPT_JAVA_CAPIBILITIES_PASSWORD_FAILED_ONCE; - -typedef struct { - PICS_RatingsStruct * rs; - XP_Bool rs_invalid; -} ClosureData; - -PRIVATE StateRet_t -target_callback(CSLabel_t *pCSLabel, - CSParse_t * pCSParse, - CSLLTC_t target, XP_Bool closed, - void * pClosure) -{ - char * ratingname; - char * ratingstr; - ClosureData *cd = (ClosureData *)pClosure; - - /* closed signifies that the parsing is done for that label */ - if(!cd || !closed) - return StateRet_OK; - - if(target == CSLLTC_SINGLE) - { - LabelOptions_t * lo = CSLabel_getLabelOptions(pCSLabel); - - if(lo) - { - if(lo->generic.state) - { - cd->rs->generic = TRUE; - } - - if(lo->fur.value && !cd->rs->fur) - { - StrAllocCopy(cd->rs->fur, lo->fur.value); - } - } - } - else if(target == CSLLTC_RATING) - { - PICS_RatingsStruct *rating_struct = cd->rs; - LabelOptions_t * lo = CSLabel_getLabelOptions(pCSLabel); - - ratingstr = CSLabel_getRatingStr(pCSLabel); - ratingname = CSLabel_getRatingName(pCSLabel); - - if(ratingname) - { - LabelRating_t * label_rating; - ServiceInfo_t * service_info; - - service_info = CSLabel_getServiceInfo(pCSLabel); - - if(service_info && !rating_struct->service) - { - rating_struct->service = XP_STRDUP(service_info->rating_service.value); - } - - label_rating = CSLabel_getLabelRating(pCSLabel); - - if(label_rating) - { - double value; - PICS_RatingValue *rating_value = XP_NEW_ZAP(PICS_RatingValue); - - value = label_rating->value.value; - - if(rating_value) - { - rating_value->value = label_rating->value.value; - rating_value->name = XP_STRDUP(label_rating->identifier.value); - - if(rating_value->name) - { - /* insert it into the list */ - XP_ListAddObject(rating_struct->ratings, rating_value); - } - else - { - /* error, cleanup */ - XP_FREE(rating_value); - } - } - } - } - - } - return StateRet_OK; -} - -PRIVATE StateRet_t -parse_error_handler(CSLabel_t * pCSLabel, CSParse_t * pCSParse, - const char * token, char demark, - StateRet_t errorCode) -{ - return errorCode; -} - -/* return NULL or ratings struct */ -PUBLIC PICS_RatingsStruct * -PICS_ParsePICSLable(char * label) -{ - CSParse_t *CSParse_handle; - ClosureData *cd; - PICS_RatingsStruct *rs; - CSDoMore_t status; - - if(!label) - return NULL; - - cd = XP_NEW_ZAP(ClosureData); - - if(!cd) - return NULL; - - rs = XP_NEW_ZAP(PICS_RatingsStruct); - - if(!rs) - { - XP_FREE(cd); - return NULL; - } - - rs->ratings = XP_ListNew(); - - cd->rs = rs; - - /* parse pics label using w3c api */ - - CSParse_handle = CSParse_newLabel(&target_callback, &parse_error_handler); - - if(!CSParse_handle) - return NULL; - - do { - - status = CSParse_parseChunk(CSParse_handle, label, XP_STRLEN(label), cd); - - } while(status == CSDoMore_more); - - if(cd->rs_invalid) - { - PICS_FreeRatingsStruct(rs); - rs = NULL; - } - - XP_FREE(cd); - - CSParse_deleteLabel(CSParse_handle); - - return(rs); -} - -PUBLIC void -PICS_FreeRatingsStruct(PICS_RatingsStruct *rs) -{ - if(rs) - { - PICS_RatingValue *rv; - - while((rv = XP_ListRemoveTopObject(rs->ratings)) != NULL) - { - XP_FREE(rv->name); - XP_FREE(rv); - } - - XP_FREE(rs); - } -} - -#define PICS_DOMAIN "browser.PICS." -#define PICS_ENABLED_PREF PICS_DOMAIN"ratings_enabled" -#define PICS_MUST_BE_RATED_PREF PICS_DOMAIN"pages_must_be_rated" -#define PICS_DISABLED_FOR_SESSION PICS_DOMAIN"disable_for_this_session" -#define PICS_REENABLE_FOR_SESSION PICS_DOMAIN"reenable_for_this_session" - -#define JAVA_SECURITY_PASSWORD "signed.applets.capabilitiesDB.password" - -Bool pics_ratings_enabled = FALSE; -Bool pics_pages_must_be_rated_pref = FALSE; -Bool pics_disabled_for_this_session = FALSE; -int pics_violence_pref = 0; -int pics_sexual_pref = 0; -int pics_language_pref = 0; -int pics_nudity_pref = 0; - -/* if TRUE the user can allow additional java and JS - * capibilities. UniversalFileWrite, etc. - */ -Bool pics_java_capabilities_enabled = TRUE; - -int PR_CALLBACK -pics_pref_change(const char *pref_name, void *closure) -{ - XP_Bool bool_rv; - - if(!PREF_GetBoolPref(PICS_ENABLED_PREF, &bool_rv)) - pics_ratings_enabled = bool_rv; - if(!PREF_GetBoolPref(PICS_MUST_BE_RATED_PREF, &bool_rv)) - pics_pages_must_be_rated_pref = bool_rv; - if(!PREF_GetBoolPref(PICS_DISABLED_FOR_SESSION, &bool_rv)) - { - if(bool_rv) - { - pics_disabled_for_this_session = TRUE; - PREF_SetBoolPref(PICS_DISABLED_FOR_SESSION, FALSE); - } - } - if(!PREF_GetBoolPref(PICS_REENABLE_FOR_SESSION, &bool_rv)) - { - if(bool_rv) - { - pics_disabled_for_this_session = FALSE; - PREF_SetBoolPref(PICS_REENABLE_FOR_SESSION, FALSE); - } - } - - return 0; -} - -PRIVATE char * -pics_hash_password(char *pw) -{ - SECStatus status; - unsigned char result[SHA1_LENGTH]; - - status = HASH_HashBuf(HASH_AlgSHA1, result, - (unsigned char *)pw, XP_STRLEN(pw)); - - if (status != SECSuccess) - return NULL; - - return(BTOA_DataToAscii(result, SHA1_LENGTH)); -} - -PUBLIC void -PICS_Init(MWContext *context) -{ - static XP_Bool first_time=TRUE; - - if(!first_time) - { - return; - } - else - { - char *password=NULL; - - first_time = FALSE; - - /* get the prefs */ - pics_pref_change(PICS_DOMAIN, NULL); - - PREF_RegisterCallback(PICS_DOMAIN, pics_pref_change, NULL); - - /* check for security pref that password disables the enableing of - * java permissions - */ - if(PREF_CopyCharPref(JAVA_SECURITY_PASSWORD, &password)) - password = NULL; - - if(password && *password) - { - /* get prompt string from registry - */ - char *prompt_string = XP_GetString(XP_ALERT_PROMPT_JAVA_CAPIBILITIES_PASSWORD); - char *user_password; - char *hashed_password; - -prompt_again: - - /* prompt the user for the password - */ - user_password = FE_PromptPassword(context, prompt_string); - - /* ### one-way hash password */ - if(user_password) - { - hashed_password = pics_hash_password(user_password); - } - else - { - hashed_password = NULL; - } - - if(!hashed_password) - { - pics_java_capabilities_enabled = FALSE; - } - else if(!XP_STRCMP(hashed_password, password)) - { - pics_java_capabilities_enabled = TRUE; - } - else - { - XP_FREE(user_password); - XP_FREE(hashed_password); - prompt_string = XP_GetString(XP_ALERT_PROMPT_JAVA_CAPIBILITIES_PASSWORD_FAILED_ONCE); - goto prompt_again; - } - - XP_FREEIF(user_password); - XP_FREEIF(hashed_password); - - } - - XP_FREEIF(password); - } -} - -PUBLIC XP_Bool -PICS_CanUserEnableAdditionalJavaCapabilities(void) -{ - return(pics_java_capabilities_enabled); -} - -PUBLIC XP_Bool -PICS_IsPICSEnabledByUser(void) -{ - /* short circuit */ - if(pics_disabled_for_this_session) - return FALSE; - - return(pics_ratings_enabled); -} - -PUBLIC XP_Bool -PICS_AreRatingsRequired(void) -{ - return pics_pages_must_be_rated_pref; -} - -PRIVATE char * -illegal_to_underscore(char *string) -{ - char* ptr = string; - - if(!string) - return NULL; - - if(!XP_IS_ALPHA(*ptr)) - *ptr = '_'; - - for(ptr++; *ptr; ptr++) - if(!XP_IS_ALPHA(*ptr) && !XP_IS_DIGIT(*ptr)) - *ptr = '_'; - - return string; -} - -PRIVATE char * -lowercase_string(char *string) -{ - char *ptr = string; - - if(!string) - return NULL; - - for(; *ptr; ptr++) - *ptr = XP_TO_LOWER(*ptr); - - return string; -} - -#define PICS_URL_PREFIX "about:pics" - -/* returns a URL string from a RatingsStruct - * that includes the service URL and rating info - */ -PUBLIC char * -PICS_RStoURL(PICS_RatingsStruct *rs, char *cur_page_url) -{ - char *rv; - char *escaped_cur_page=NULL; - - if(cur_page_url) - { - escaped_cur_page = NET_Escape(cur_page_url, URL_PATH); - if(!escaped_cur_page) - return NULL; - } - - rv = PR_smprintf("%s?Destination=%s", - PICS_URL_PREFIX, - escaped_cur_page ? escaped_cur_page : "none"); - - XP_FREE(escaped_cur_page); - - if(!rs || !rs->service) - { - StrAllocCat(rv, "&NO_RATING"); - return(rv); - } - else - { - XP_List *list_ptr = rs->ratings; - PICS_RatingValue *rating_value; - char *escaped_service = NET_Escape(rs->service, URL_PATH); - - if(!escaped_service) - return NULL; - - StrAllocCat(rv, "&Service="); - StrAllocCat(rv, escaped_service); - - XP_FREE(escaped_service); - - while((rating_value = XP_ListNextObject(list_ptr)) != NULL) - { - - char *add; - char *escaped_name = NET_Escape( - illegal_to_underscore(rating_value->name), - URL_PATH); - - if(!escaped_name) - { - XP_FREE(rv); - return NULL; - } - - add = PR_smprintf("&%s=%f", escaped_name, rating_value->value); - - XP_FREE(escaped_name); - - StrAllocCat(rv, add); - - XP_FREE(add); - } - - return rv; - } - - XP_ASSERT(0); /* should never get here */ - return NULL; -} - -XP_List *pics_tree_ratings=NULL; - -PRIVATE void -pics_add_rs_to_tree_ratings(PICS_RatingsStruct *rs) -{ - char *path; - - if(!pics_tree_ratings) - { - pics_tree_ratings = XP_ListNew(); - if(!pics_tree_ratings) - return; - } - - if(!rs->fur || !rs->generic) - return; /* doesn't belong here */ - - /* make sure it's not in the list already */ - if(PICS_CheckForValidTreeRating(rs->fur)) - return; - - /* make sure the fur address smells like a URL and has - * a real host name (at least two dots) - * - * reject "http://" or "http://www" - */ - if(!NET_URL_Type(rs->fur)) - return; - - path = NET_ParseURL(rs->fur, GET_PATH_PART); - - /* if it has a path it's ok */ - if(!path || !*path) - { - /* if it doesn't have a path it needs at least two dots */ - char *ptr; - char *hostname = NET_ParseURL(rs->fur, GET_HOST_PART); - - if(!hostname) - return; - - if(!(ptr = XP_STRCHR(hostname, '.')) - || !XP_STRCHR(ptr+1, '.')) - { - XP_FREE(hostname); - XP_FREEIF(path); - return; - } - - XP_FREE(hostname); - } - - XP_FREE(path); - - XP_ListAddObject(pics_tree_ratings, rs->fur); - - return; -} - -PUBLIC XP_Bool -PICS_CheckForValidTreeRating(char *url_address) -{ - XP_List *list_ptr; - char *valid_tree; - - if(!pics_tree_ratings) - return FALSE; - - list_ptr = pics_tree_ratings; - - while((valid_tree = XP_ListNextObject(list_ptr))) - { - if(!XP_STRNCASECMP(url_address, valid_tree, XP_STRLEN(valid_tree))) - return TRUE; - } - - return FALSE; -} - -/* returns TRUE if page should be censored - * FALSE if page is allowed to be shown - */ -PUBLIC PICS_PassFailReturnVal -PICS_CompareToUserSettings(PICS_RatingsStruct *rs, char *cur_page_url) -{ - int32 int_pref; - XP_Bool bool_pref; - char * pref_prefix; - char * pref_string=NULL; - char * escaped_service; - PICS_PassFailReturnVal rv = PICS_RATINGS_PASSED; - XP_List *list_ptr; - PICS_RatingValue *rating_value; - - if(!rs || !rs->service) - { - return PICS_NO_RATINGS; - } - -#define PICS_SERVICE_DOMAIN PICS_DOMAIN"service." -#define PICS_SERVICE_ENABLED "service_enabled" - - /* cycle through list of ratings and compare to the users prefs */ - list_ptr = rs->ratings; - pref_prefix = XP_STRDUP(PICS_SERVICE_DOMAIN); - - /* need to deal with bad characters */ - escaped_service = XP_STRDUP(rs->service); - escaped_service = illegal_to_underscore(escaped_service); - escaped_service = lowercase_string(escaped_service); - - if(!escaped_service) - return PICS_RATINGS_FAILED; - - StrAllocCat(pref_prefix, escaped_service); - - XP_FREE(escaped_service); - - if(!pref_prefix) - return PICS_RATINGS_FAILED; - - /* verify that this type of rating system is enabled */ - pref_string = PR_smprintf("%s.%s", pref_prefix, PICS_SERVICE_ENABLED); - - if(!pref_string) - goto cleanup; - - if(!PREF_GetBoolPref(pref_string, &bool_pref)) - { - if(!bool_pref) - { - /* this is an unenabled ratings service */ - rv = PICS_NO_RATINGS; - XP_FREE(pref_string); - goto cleanup; - } - } - else - { - /* this is an unsupported ratings service */ - rv = PICS_NO_RATINGS; - XP_FREE(pref_string); - goto cleanup; - } - - XP_FREE(pref_string); - - while((rating_value = XP_ListNextObject(list_ptr)) != NULL) - { - /* compose pref lookup string */ - pref_string = PR_smprintf("%s.%s", - pref_prefix, - illegal_to_underscore(rating_value->name)); - - if(!pref_string) - goto cleanup; - - /* find the value in the prefs if it exists - * if it does compare it to the value given and if - * less than, censer the page. - */ - if(!PREF_GetIntPref(pref_string, &int_pref)) - { - if(rating_value->value > int_pref) - { - rv = PICS_RATINGS_FAILED; - XP_FREE(pref_string); - goto cleanup; - } - } - - XP_FREE(pref_string); - } - -cleanup: - - XP_FREE(pref_prefix); - - /* make sure this rating applies to this page */ - if(rs->fur) - { - if(XP_STRNCASECMP(cur_page_url, rs->fur, XP_STRLEN(rs->fur))) - rv = PICS_NO_RATINGS; - } - - if(rv == PICS_RATINGS_PASSED && rs->generic) - { - /* rating should apply to a whole tree, add to list */ - pics_add_rs_to_tree_ratings(rs); - } - - return rv; -} - -#ifdef TRUST_LABELS -/***************************************************************************/ -/***************************************************************************/ -/*********** TRUST.C at a latter time **********************************/ -/********* break from here down into trust.c ****************************/ -/***************************************************************************/ -/***************************************************************************/ - - -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ -/* - * This is another version of the thin layer between the W3C code - which - * parses the PICS labels - and the HTTP parsing code, to digest PICS labels. - * The original version was coded by Lou Montulli, this version by Paul Chek. - * - * This code is called when the HTTP header is being parsed and a PICS label - * was found. - * - * The broad overview is: - * 1. The PICS parsing engine parses the ENTIRE label creating structures and - * lists of the different rating services and labels in the services. - * 2. After the label is completely parsed we iterate thru the rating - * services and the labels for each service to see if there are any trust - * labels. - * 3. If trust label are found they are added to the TrustList which is part - * of the URL_Struct struct. - * - * The two main functions for the trust label processing are: - * ProcessSingleLabel - this is where the parsing engine presents ONE label with - * all its options and extensions. ProcessSingleLabel examines - * the label and determines if it is a valid trust label. If - * it is the label is added to the TrustList. This list - * is the list of all trust labels. - * - * MatchCookieToLabel - here is where a cookie gets matched to a trust label. The - * entire header for the response has been read. The - * end-of-header processing is pulling out the "Set-Cookie" - * entries. It has retrieved a cookie for processing. The - * cookie processing code see that the user is processing - * cookies using a script and inorder to fill out the cookie - * properties for the script it has called MatchCookieToLabel - * to see if there is a trust label associated with the cookie. - * MatchCookieToLabel will look thru the trust_label list and - * match the best label to the cookie. - */ - -#include "xp.h" -/* uncomment out these .h files when trust.c is seperated. -#include "csllst.h" -#include "cslutils.h" -#include "csll.h" -#include "pics.h" -#include "prefapi.h" -#include "xpgetstr.h" -#include "sechash.h" -#include "base64.h" -*/ -#include "jscookie.h" -#include "mkaccess.h" /* use #include "trust.h" when it is broken out of mkaccess.h */ -#include "prlong.h" -#include "mkgeturl.h" - - -#ifdef _DEBUG -#define HTTrace OutputDebugString -#else -#define HTTrace -#endif - - -#define PICS_VERSION 1.1 /* the version of PICS labels that this code expects */ - -CSLabel_callback_t ProcessService; -CSLabel_callback_t ProcessLabel; -CSLabel_callback_t ProcessSingleLabel; - -PRBool IsValidValue( FVal_t *Value, int MinValue, int MaxValue, int *TheValue ); -PRBool IsExpired( DVal_t *Value, PRTime *ExpirationDate ); -PRBool IsValidTrustService( char *ServiceName ); -PRBool ISODateToLocalTime( DVal_t *Value, PRTime *LocalDate ); -PRBool CheckOptions( LabelOptions_t *LabelOptions, PRTime *ExpirationDate ); -PRBool IsLabelSigned( Extension_t *AExt ); -PRBool IsSignatureValid( Extension_t *AExt, LabelOptions_t *LabelOptions ); - -extern int NET_SameDomain(char * currentHost, char * inlineHost); -extern char * lowercase_string(char *string); -extern char * illegal_to_underscore(char *string); - - -#ifdef _DEBUG -/************** FOR DEBUGGINGG ***********************************/ -#include "csparse.h" -LabelTargetCallback_t targetCallback; -StateRet_t trustCallback(CSLabel_t * pCSMR, CSParse_t * pCSParse, CSLLTC_t target, PRBool closed, void * pVoid) -{ -#ifdef NOPE /* for debuggin */ - static int Total = 0; - char space[256]; - int change = closed ? -target : target; - Total += change; - sprintf( space, "(%2d:%3d)token-->|%s| %s %s \n", - Total, closed ? -target : target, pCSParse->token->data, - closed ? " ending" : "starting", pCSParse->pTargetObject->note ); - sprintf(space, "%s %s (%d)\n", closed ? " ending" : "starting", pCSParse->pParseState->note, closed ? -target : target); - HTTrace(space); - if ( Total == 0 ) HTTrace( "All Done\n" ); -#endif - return StateRet_OK; -} - -/* LLErrorHandler_t parseErrorHandler; */ -StateRet_t trustErrorHandler(CSLabel_t * pCSLabel, CSParse_t * pCSParse, - const char * token, char demark, - StateRet_t errorCode) -{ - char space[256]; - sprintf(space, "%20s - %s: ", pCSParse->pTargetObject->note, - pCSParse->currentSubState == SubState_X ? "SubState_X" : - pCSParse->currentSubState == SubState_N ? "SubState_N" : - pCSParse->currentSubState == SubState_A ? "SubState_A" : - pCSParse->currentSubState == SubState_B ? "SubState_B" : - pCSParse->currentSubState == SubState_C ? "SubState_C" : - pCSParse->currentSubState == SubState_D ? "SubState_D" : - pCSParse->currentSubState == SubState_E ? "SubState_E" : - pCSParse->currentSubState == SubState_F ? "SubState_F" : - pCSParse->currentSubState == SubState_G ? "SubState_G" : - pCSParse->currentSubState == SubState_H ? "SubState_H" : - "???"); - HTTrace(space); - - switch (errorCode) { - case StateRet_WARN_NO_MATCH: - if (token) - sprintf(space, "Unexpected token \"%s\".\n", token); - else - sprintf(space, "Unexpected lack of token.\n"); - break; - case StateRet_WARN_BAD_PUNCT: - if (token) - sprintf(space, "Unexpected punctuation |%c| after token \"%s\".\n", demark, token); - else - sprintf(space, "Unexpected punctuation |%c| \n", demark); - break; - case StateRet_ERROR_BAD_CHAR: - sprintf(space, "Unexpected character \"%c\" in token \"%s\".\n", - *pCSParse->pParseContext->pTokenError, token); - break; - default: - sprintf(space, "Internal error: demark:\"%c\" token:\"%s\".\n", demark, token); - break; - } - HTTrace(space); -/* - CSLabel_dump(pCSMR); - HTTrace(pParseState->note); -*/ - return errorCode; -} - -/*************** END OF FOR DEBUGGINGG *********************************** */ -#endif - -/*---------------------------------------------------------------------------------------------------- - * Purpose: given the value part of a PICS label parse it and determine - * if it is a valid trust label according to internet draft - * draft-ietf-http-trust-state-mgt-02.txt - * - *---------------------------------------------------------------------------------------------------- */ -PUBLIC void PICS_ExtractTrustLabel(URL_Struct *URL_s, char *value ) -{ - CSParse_t * pCSParse = 0; - CSDoMore_t status; - -#ifdef _DEBUG /* display the label for debug */ - HTTrace( "\n" ); - HTTrace( value ); - HTTrace( "\n" ); -#endif - - /* validate input args */ - if ( !URL_s || !value || *value == '\0' ) return; - - /* parse the PICS label and extract the trust label information from it */ - /* ignoring the other rating information. */ - /* init the PICS parsing code */ -#ifdef _DEBUG - pCSParse = CSParse_newLabel( &trustCallback, &trustErrorHandler ); -#else - pCSParse = CSParse_newLabel( 0, 0 ); -#endif - if ( pCSParse ) { - /* parse the label - the entire label is in value. So one call - to parse chunk is all that is needed.*/ - status = CSParse_parseChunk(pCSParse, value, XP_STRLEN(value), 0); - - /* was the parse sucessfull? */ - if ( status == CSDoMore_done ) { - /* yes - Iterate thru the services looking for valid trust labels. - * the PICS label parsing code is set up to iterate thru the labels. - * the hierarchy is: - * Services - * Labels - * SingleLabels - * Label Options - * Label Ratings */ - CSLabel_t * pCSLabel = CSParse_getLabel( pCSParse ); - /* make sure the PICS version is correct */ - if ( PICS_VERSION <= FVal_value(&CSLabel_getCSLLData(pCSLabel)->version) ) { - /* iterate thru each of the service IDs in this label calling ProcessService for each*/ - CSLabel_iterateServices( pCSLabel, ProcessService, NULL, 0, (void *)(URL_s)); - /* IF there are valid trust labels in this PICS label they are added to */ - /* the trust list at TrustList */ - } - - } else { - /* either there was a error parsing the label or the label wasnt complete. - In either case ignore the label */ - HTTrace( "Invalid label\n" ); - } - CSParse_deleteLabel(pCSParse); /* free the label parsing structures */ - } -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: the call back to handle a single service ID - * - * - *----------------------------------------------------------------------------------------------------*/ -CSError_t ProcessService(CSLabel_t * pCSLabel, State_Parms_t * pParms, const char * identifier, void * URL_s) -{ - CSError_t ret = CSError_OK; - if ( IsValidTrustService( CSLabel_getServiceName( pCSLabel ) ) ) { - /* yes - passed the first test for trust labels, i.e. a valid trust service - I dont care about any of the service level options at this point; but if I - did I would use LabelOptions_t Opt = pServiceInfo->pLabelOptions to check them - - So iterate thru the labels which if they have the purpose, Recipients and identifiable ratings - will be trust labels */ - ret = CSLabel_iterateLabels(pCSLabel, ProcessLabel, pParms, 0, URL_s); - } else { - /* if this is not a trust label but a regular PICS label it will usually - fail the rating service. So this is an expected occurance. */ - HTTrace( "ProcessService: invalid trust rating service\n" ); - } - return ret; -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: the call back to process a label and iterate thru the SingleLabels - * - * - *----------------------------------------------------------------------------------------------------*/ - CSError_t ProcessLabel(CSLabel_t * pCSLabel, State_Parms_t * pParms, const char * identifier, void * URL_s) -{ - return CSLabel_iterateSingleLabels(pCSLabel, ProcessSingleLabel, pParms, 0, URL_s); -} - -void TL_SetTrustAuthority( TrustLabel *ALabel, char *TrustAuthority ); -void TL_SetByField( TrustLabel *ALabel, char *szBy ); -void TL_ProcessForAttrib( TrustLabel *ALabel, char *szFor); - -/*---------------------------------------------------------------------------------------------------- - * Purpose: the call back get the options and the ratings for a single label. - * Create a TrustLabel to contain the info about the label and put on the - * the trust label list - * - * Input: - * pCSLabel - current parsed label instance - * URL_s - the URL_Struct associated with this trust label from the HTTP header - * NOTES: - * 1. If the same rating is seen twice in one single label, the first VALID instance is used. - * - * History: - * 9/10/98 Paul Chek - switch recipient back to supporting a single value. - * NOTE: this is now controlled by RECIPIENT_RANGE - * 8/22/98 Paul Chek - switch recipient to support a range of values - *---------------------------------------------------------------------------------------------------- */ -CSError_t ProcessSingleLabel(CSLabel_t * pCSLabel, State_Parms_t * pParms, const char * identifier, void * URL_s) -{ -/* tracks the ratings I have seen */ -#define HAVE_PURPOSE 0x1 -#define HAVE_RECIPIENTS 0x2 -#define HAVE_ID 0x4 - typedef struct { - char *szName; /* the full name of the rating */ - int Min, Max; /* the valid ranges for the rating */ - } ValidRating; - - /* the ratings I am interested in for a trust label */ - ValidRating PurposeRating = { "purpose", 0, 5 }; - ValidRating RecipientsRating = { "recipients", 0, 3 }; - ValidRating IDRating = { "identifiable", 0, 1 }; - - CSError_t ret = CSError_OK; - int PurposeRange = 0; /* bits corresponding to the purpose ranges seen */ - int RecpRange = 0; - int IDValue = 0; - - HTList * ranges; - Range_t * pRange; - int TempValue, MinValue, MaxValue; - int i; - TrustLabel *TheLabel; - - Extension_t *AExt; - ExtensionData_t *AData; - char *AName; - PRBool bForgedLabel; - URL_Struct *TheURL_s; - - /* march thru the ratings looking for purpose, Recipients and identification. When found save their values. */ - int count = 0; - if (!pCSLabel || !URL_s ) { - /* oops got a bad one */ - ret = CSError_BAD_PARAM; - } else { - /* the current single label */ - SingleLabel_t * pSingleLabel = CSLabel_getSingleLabel(pCSLabel); - /* get the options */ - LabelOptions_t *LabelOptions = pSingleLabel->pLabelOptions; - PRTime ExpDate; /* the expiration date */ - - /* VALIDITY TESTS */ - /* Has the expiration date passed - there must be an expiration date - sec 3.4.2 */ - /* and these options are required "by", "generic", "on" - sec 3.1? */ - if ( CheckOptions( LabelOptions, &ExpDate ) ) { - /* yes - check the ratings for purpose, Recipients and ID */ - /* get the Ratings list */ - HTList *LabelRatings = pSingleLabel->labelRatings; - LabelRating_t *Rating; - PRBool bContinue = TRUE; - short AllRatings = HAVE_PURPOSE | HAVE_RECIPIENTS | HAVE_ID; - /* look thru all the ratings until I have the 3 required ratings */ - while ( AllRatings != 0 && (Rating = (LabelRating_t *) HTList_nextObject(LabelRatings))) { - /* is it the purpose rating? */ - if ( (AllRatings & HAVE_PURPOSE) && - !XP_STRCASECMP( SVal_value(&Rating->identifier), PurposeRating.szName)) { - /* Was a single value given?? */ - if ( IsValidValue( &Rating->value, PurposeRating.Min, PurposeRating.Max, &TempValue ) ) { - PurposeRange = PurposeRange | ( 1 << TempValue ); - AllRatings &= (~HAVE_PURPOSE ); - - /* Was a range or a list of values given?? */ - } else if ( Rating->ranges ) { - ranges = Rating->ranges; - while ((pRange = (Range_t *) HTList_nextObject(ranges))) { - MinValue = MaxValue = -1; - if ( IsValidValue( &pRange->min, PurposeRating.Min, PurposeRating.Max, &MinValue ) ) { - PurposeRange = PurposeRange | ( 1 << MinValue ); - AllRatings &= (~HAVE_PURPOSE ); - } - if ( IsValidValue( &pRange->max, PurposeRating.Min, PurposeRating.Max, &MaxValue ) ) { - /* if there was also a min value then set all the bits between the min and the max */ - if ( 0 <= MinValue && MinValue <= MaxValue ) { - for( i=MinValue; i<=MaxValue; i++ ) PurposeRange = PurposeRange | ( 1 << i ); - } else { - PurposeRange = PurposeRange | ( 1 << MaxValue ); - } - AllRatings &= (~HAVE_PURPOSE ); - } - } - } - /* is it the Recipients rating? */ - } else if ( (AllRatings & HAVE_RECIPIENTS) && - !XP_STRCASECMP(SVal_value(&Rating->identifier), RecipientsRating.szName)) { -#ifndef RECIPIENT_RANGE - /* yes - is the range valid?*/ - if ( IsValidValue( &Rating->value, RecipientsRating.Min, RecipientsRating.Max, &RecpRange ) ) { - AllRatings &= (~HAVE_RECIPIENTS ); - } -#else - /* Was a single value given?? */ - if ( IsValidValue( &Rating->value, RecipientsRating.Min, RecipientsRating.Max, &TempValue ) ) { - RecpRange = RecpRange | ( 1 << TempValue ); - AllRatings &= (~HAVE_RECIPIENTS ); - - /* Was a range or a list of values given?? */ - } else if ( Rating->ranges ) { - ranges = Rating->ranges; - while ((pRange = (Range_t *) HTList_nextObject(ranges))) { - MinValue = MaxValue = -1; - if ( IsValidValue( &pRange->min, RecipientsRating.Min, RecipientsRating.Max, &MinValue ) ) { - RecpRange = RecpRange | ( 1 << MinValue ); - AllRatings &= (~HAVE_RECIPIENTS ); - } - if ( IsValidValue( &pRange->max, RecipientsRating.Min, RecipientsRating.Max, &MaxValue ) ) { - /* if there was also a min value then set all the bits between the min and the max */ - if ( 0 <= MinValue && MinValue <= MaxValue ) { - for( i=MinValue; i<=MaxValue; i++ ) RecpRange = RecpRange | ( 1 << i ); - } else { - RecpRange = RecpRange | ( 1 << MaxValue ); - } - AllRatings &= (~HAVE_RECIPIENTS ); - } - } - } -#endif - /* is it the identifiable rating */ - } else if ( (AllRatings & HAVE_ID) && - !XP_STRCASECMP(SVal_value(&Rating->identifier), IDRating.szName)) { - /* yes - is the range valid? */ - if ( IsValidValue( &Rating->value, IDRating.Min, IDRating.Max, &IDValue ) ) { - AllRatings &= (~HAVE_ID ); - } - } - } /* end while ( AllRatings */ - /* Did I get the required ratings? */ - if ( !AllRatings ) { - /* yes */ - /*HTTrace( " Valid trust label: purpose = 0x%0x, ID = %d, recipients = %d\n", PurposeRange, IDValue, RecpRange ); */ - /*HTTrace( " for: \"%s\" \n", SVal_value(&LabelOptions->fur)); */ - /*HTTrace( " expires: %s\n", DVal_value( &LabelOptions->until ) ); */ - TheLabel = TL_Construct(); /* allocate a net trust label */ - if ( TheLabel ) { - /* fill up the structure */ - TheLabel->purpose = PurposeRange; - TheLabel->ID = IDValue; - TheLabel->recipients = RecpRange; - TheLabel->ExpDate = ExpDate; - TL_SetTrustAuthority( TheLabel, CSLabel_getServiceName( pCSLabel ) ); - TL_SetByField( TheLabel, SVal_value(&LabelOptions->by) ); - bForgedLabel = FALSE; - - /* if this is a generic label then set the isGeneric flag */ - if ( BVal_value( &LabelOptions->generic ) ) TheLabel->isGeneric = TRUE; - - /* if there is a cookieinfo extension and it had a name(s) then save the name */ - if ( LabelOptions->extensions ) { - while( !bForgedLabel && (AExt = (Extension_t *)XP_ListNextObject( LabelOptions->extensions )) ) { - /* is this an extension for cookie info? */ - if ( IsValidTrustService( SVal_value(&AExt->url) ) ) { - /* is there data attached to the extension - that is stuff besides the mandatory | optional and the URL */ - if ( AExt->extensionData ) { - /* yes copy the list to the trust label */ - if ( !TheLabel->nameList ) TheLabel->nameList = XP_ListNew(); - if ( TheLabel->nameList ) { - while( (AData = (ExtensionData_t *)HTList_nextObject( AExt->extensionData ) ) ) { - AName = XP_STRDUP( AData->text ); /* copy it */ - XP_ListAddObjectToEnd( TheLabel->nameList, AName ); /* add it to the trust label list */ - } - } - } - /* Is this a digital signature extension?? */ - } else if ( IsLabelSigned( AExt ) ) { - /* Yes - the label is signed, I must now check if the signature is valid. - If the signature is NOT valid then throw the label out. */ - if ( IsSignatureValid( AExt, LabelOptions ) ) { - /* the label is signed with a good signature */ - TheLabel->isSigned = TRUE; - } else { - /* the label has a signature but the MIC on the label doesnt match - the signature, so someone has fooled with the label */ - bForgedLabel = TRUE; - } - } /* end of if ( IsValidTrustService */ - } - } - - /* Was the label forged?? */ - if ( !bForgedLabel ) { - /* seperate the path and domain out of the "for" label attribute */ - TL_ProcessForAttrib( TheLabel, SVal_value(&LabelOptions->fur) ); - - /* add the trust label to the list of trust labels in this header. - * The list of trust labels is maintained in the URL_Struct that - * was passed in. */ - TheURL_s = (URL_Struct *)URL_s; - if ( TheURL_s->TrustList == NULL ) { - /* create the list */ - TheURL_s->TrustList = XP_ListNew(); - } - if ( TheURL_s->TrustList ) { - /* NOTE: this is the only place where trust label are added to the TrustList */ - XP_ListAddObjectToEnd( TheURL_s->TrustList, TheLabel ); - HTTrace( " Valid trust label\n" ); - } else { - HTTrace( "ERROR in ProcessSingleLabel: unable to allocate the trust list\n" ); - ret = CSError_APP; - } - - } else { - /* the label was forged - discard it */ - HTTrace( "Forged label\n" ); - TL_Destruct( TheLabel ); - } - - } else { - /* memory allocation problems */ - HTTrace( "ERROR in ProcessSingleLabel: failed to allocate trust object\n" ); - ret = CSError_APP; - } - } else { - /* no not a valid trust label, not a big deal, keep goin */ - HTTrace( " Label not a trust label - not all ratings present.\n" ); - } - } else { - /* not a valid trust label - missing expiration date or for option */ - HTTrace( " Label not a trust label - missing a required option\n" ); - } /* if ( !IsExpired( LabelOptions */ - } /* if (!pCSLabel || */ - return ret; -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: determine if the value for a rating falls within the specified range - * - * ---------------------------------------------------------------------------------------------------- */ -PRBool IsValidValue( FVal_t *Value, int MinValue, int MaxValue, int *TheValue ) -{ - if ( FVal_initialized(Value) ) { - /* NOTE: the conversion from a float to an int, since for trust labels we are */ - /* only dealing with ints. */ - *TheValue = (int)FVal_value(Value); - if ( MinValue <= (*TheValue) && (*TheValue) <= MaxValue ) { - return TRUE; - } - } - return FALSE; -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: determine if the required label options are present. - * - * - * returns: TRUE if all the required options are present - * ExpDate - returns the label expiration date - * - * ---------------------------------------------------------------------------------------------------- */ -PRBool CheckOptions( LabelOptions_t *LabelOptions, PRTime *ExpirationDate ) -{ - PRBool Status = FALSE; - /* According to the spec these options must be present: - * "by", "gen", "for", "on" AND "exp" OR "until". AND the expiration date must - * not have passed. - */ - - if ( !IsExpired( &LabelOptions->until, ExpirationDate ) && /* expiration date */ - SVal_initialized( &LabelOptions->fur ) && /* for option */ - SVal_initialized( &LabelOptions->by ) && /* by option */ - DVal_initialized( &LabelOptions->on ) && /* on option */ - BVal_initialized( &LabelOptions->generic ) ) { /* generic option */ - Status = TRUE; - } - return Status; -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: determine if the expiration date has passed. - * - * Note: - * The PICS spec calls for only one form for the date, ISO 8601:1988 which is - * YYYY.MM.DDTHH:MMSxxxx - * where S = - or + - * xxxx = four digit time zone offset - * - * returns - * TRUE if the expiration date has PASSED or is not present - * FALSE if the expiration date is AFTER now. - * ---------------------------------------------------------------------------------------------------- */ -PRBool IsExpired( DVal_t *Value, PRTime *ExpirationDate ) -{ - PRTime CurrentTime; - /* Has the expiration date been given?? */ - if (DVal_initialized( Value ) ) { - /* yes - is it before now? */ - if ( ISODateToLocalTime( Value, ExpirationDate ) ) { - /* get the exploded local time parameters */ - CurrentTime = PR_Now(); - - /*HTTrace( "Cur Time = %s", ctime( &CurrentTime ) ); */ - /*HTTrace( "Exp Time = %s", ctime( &ExpTime) ); */ - if ( LL_CMP(CurrentTime,>,*ExpirationDate) ) { - return TRUE; /* Expiration time has passed */ - } else { - return FALSE; /* Expiration time has NOT passed */ - } - } - } - return TRUE; -} - - -/*---------------------------------------------------------------------------------------------------- - * Purpose: if the given service name is a valid trust service. - * - * Note: the valid trust services are stored in the user's preferences. - * They are of the form "browser.trust.service.XXX.service_enabled" - * where XXX is an escaped URL formed by coverting illegal preference characters to underscore - * and lowercasing the string . - * So the preference for the default trust service - * "http: www.w3.org/PICS/systems/P3P-http-trust-state-01.rat" is - * pref("browser.trust.service.http___www_w3_org_pics_systems_p3p_http_trust_state_01_rat.service_enabled", true); - * - * returns TRUE if the given service is a valid trust service - * ----------------------------------------------------------------------------------------------------*/ -PRBool IsValidTrustService( char *ServiceName ) -{ - char *PrefName; - char *escaped_service; - - if ( ServiceName && *ServiceName ) { - /* Build the preference string - first escape the service name */ - escaped_service = XP_STRDUP(ServiceName); - escaped_service = illegal_to_underscore(escaped_service); - escaped_service = lowercase_string(escaped_service); - if(!escaped_service) return FALSE; - - /* create the preference string */ - PrefName = XP_Cat( "browser.trust.service.", escaped_service, ".service_enabled", (char *)NULL ); - XP_FREE(escaped_service); - if ( PrefName ) { -#ifndef FOR_PHASE2 -#define FIRST_STR "browser.trust.service.http___www_w3_org_pics_systems_p3p_http_trust_state_01_rat.service_enabled" -#define SECOND_STR "browser.trust.service.http___www_w3_org_pics_extensions_cookieinfo_1_0_html.service_enabled" - if ( XP_STRCASECMP( PrefName, FIRST_STR ) == 0 || - XP_STRCASECMP( PrefName, SECOND_STR ) == 0 ) { - return TRUE; - } else { - return FALSE; - } -#else - /* Now make sure the preference both exists and is enabled */ - if(!PREF_GetBoolPref(PrefName, &bool_pref)) { - /* the preference exists - this is a known rating service */ - XP_FREE( PrefName ); - return bool_pref; - } else { - /* the preference does not exist - this is an unknown rating service */ - XP_FREE( PrefName ); - return FALSE; - } -#endif - } - } - return FALSE; -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: takes a parsed ISO date from the PICS label parser and converts - * it to a local PRTime - * - * - * returns - * TRUE if the date is valid - * FALSE if the date is not a valid ISO string - * ---------------------------------------------------------------------------------------------------- */ -PRBool ISODateToLocalTime( DVal_t *Value, PRTime *LocalDate ) -{ - if (DVal_initialized( Value ) ) { - /* the string was parsed into the different fields */ - PRExplodedTime tm; - XP_MEMSET( (void *)&tm, 0, sizeof( PRExplodedTime ) ); - tm.tm_year = Value->year; - tm.tm_month = Value->month - 1; - tm.tm_mday = Value->day; - tm.tm_hour = Value->hour; - tm.tm_min = HTMIN(Value->minute, 59 ); - /* the adjustment for GMT offset to the local time zone in seconds */ - tm.tm_params.tp_gmt_offset = Value->timeZoneHours *3600 + Value->timeZoneMinutes * 60; - *LocalDate = PR_ImplodeTime(&tm); - return TRUE; - } else { - return FALSE; - } - -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: determine if path2 is a prefix of path1 - * - * returns - TRUE if it is - *---------------------------------------------------------------------------------------------------- */ -PRBool IsPrefix( char *path1, char *path2 ) -{ - int i; - if ( path1 && path2 ) { - int len1 = XP_STRLEN( path1 ); - int len2 = XP_STRLEN( path2 ); - /* Is path2's length <= path1's length?? */ - if ( len2 <= len1 ) { - /* path1 characters must match path2 up to the length of path1 */ - for ( i=0; i<len2; i++ ) { - if ( path1[i] != path2[i] ) { - /* not a prefix */ - return FALSE; - } - } - /* path2 is a prefix of path1 */ - return TRUE; - } - } - return FALSE; - -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: given the path from a cookie and the list of trust labels in this header - * try to match the cookie to a trust label. - * - * inputs: - * TrustList - the list of trust labels to search - * CookieData - the data struct used for java script partially filled out - * with the cookie name, path and domain - * CookieDomain - the domain attribute from the cookie - * returns - * TRUE if a matching trust label is found - * FALSE if none found - * TheLabel - ptr to the matching trust label - *----------------------------------------------------------------------------------------------------*/ -PUBLIC PRBool MatchCookieToLabel( char *TargetURL, JSCFCookieData *CookieData, TrustLabel **TheLabel ) -{ - PRBool Status = FALSE; - if ( TargetURL && CookieData && TheLabel ) { - Status = MatchCookieToLabel2( TargetURL, CookieData->name_from_header, - CookieData->path_from_header, CookieData->host_from_header, - TheLabel ); - } - return Status; -} - -/**************************************************************** - * Purpose: The actual matching code. - * This implements part of section 3.3.1 of the trust label spec dealing - * with figuring out if a cookie and a trust label are "compatiable". - * - * CookieName - the name of the cookie - * CookiePath - the path for the cookie - * CookieHost - the host for the cookie - * - * returns - * TRUE if a matching trust label is found - * FALSE if none found - * TheLabel - ptr to the matching trust label - * - * - * History: - * Paul Chek - initial creation - ****************************************************************/ -PUBLIC PRBool MatchCookieToLabel2(char *TargetURL, char *CookieName, - char *CookiePath, char *CookieHost, - TrustLabel **TheLabel ) -{ - PRBool Status = FALSE; - TrustLabel *ALabel; - char *AName; - PRBool bNameMatch; - XP_List *TempList; - TrustLabel *LastMatch = NULL; - PRBool LastMatchNamed; - XP_List *TempTrustList; - - /* make sure I have the data I need */ - if ( TargetURL && XP_STRLEN( TargetURL ) && - CookieName && CookiePath && CookieHost && - TheLabel ) { - /* look thru the list of trust labels for one to match this cookie */ - /* First see if there is a named trust label that matches the cookie */ - TempTrustList = NET_GetTrustList( TargetURL ); - if ( TempTrustList ) { - while( (ALabel = (TrustLabel *)XP_ListNextObject( TempTrustList )) ) { - /* is this label for a specific cookie(s)?? */ - bNameMatch = FALSE; - if ( ALabel->nameList != NULL ) { - /* yes - do the names match - CASE INSENSITIVE COMPARE ?? */ - TempList = ALabel->nameList; /* always walk a list with a COPY of the list pointer */ - while( (AName = (char *)XP_ListNextObject( TempList ) ) ) { - if ( XP_STRCASECMP (AName, CookieName ) == 0 ) { - /* this label has a cookie name and it matches the current cookie */ - bNameMatch = TRUE; - break; - } - } - } - - /* do the domains match?? */ - if ( NET_SameDomain( ALabel->domainName, CookieHost ) == 1 ) { - /* the domains match - is this label a "Generic" label?? */ - if ( ALabel->isGeneric ) { - /* is the path from the label a prefix to the path in the cookie */ - if ( IsPrefix( CookiePath, ALabel->path ) ) { - /* this label matches this cookie -- is it the best match */ - if ( !LastMatch ) { - /* no previous match - take this one */ - LastMatch = ALabel; - LastMatchNamed = bNameMatch; - } else { - /* there was a previus match - is this one more specific?? - Pick named over unnamed labels; pick non-generic over generic labels. - - So since the current label is GENERIC, if it is named AND - the previous label is NOT named use the current label - because it is a better match - named is better than not named. - - An implied test is if neither are named, since this is a GENERIC - label then keep the previous label because it is either - a better match or an equivalent match. - */ - if ( bNameMatch && (!LastMatchNamed) ) { - LastMatch = ALabel; - LastMatchNamed = bNameMatch; - } - } - } - } else { - /* this is not a generic label - do the paths match exactly - CASE INSENSITIVE COMPARE ?? */ - if ( XP_STRCASECMP( ALabel->path, CookiePath ) == 0 ) { - /* this label matches this cookie -- is it the best match */ - if ( !LastMatch ) { - /* no previous match - take this one */ - LastMatch = ALabel; - LastMatchNamed = bNameMatch; - } else { - /* there was a previus match - is this one more specific?? - Pick named over unnamed labels; pick non-generic over generic labels. - - So since the current label is NON-GENERIC, if it is named - use it because it is either a better match or an equivalent match. - If it is not named AND the previous label is not named then use - the current label because it is either a better match or an equivalent match. - */ - if ( bNameMatch || (!LastMatchNamed) ) { - /* both are named, the current label is non-generic, use it */ - LastMatch = ALabel; - LastMatchNamed = bNameMatch; - } - } - } - } /* end of if ( ALabel->isGeneric */ - } /* end of if ( NET_SameDomain */ - } /* end of while( (ALabel */ - } /* end of if ( tmpEntry && tmpEntry */ - } - - /* Was there a match?? */ - if ( LastMatch ) { - /* yes */ - *TheLabel = LastMatch; - return TRUE; - } else { - return FALSE; - } - -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: returns true if the user preference for supporting trust labels is - * set to true. - * - * - *---------------------------------------------------------------------------------------------------- */ -PUBLIC PRBool IsTrustLabelsEnabled() -{ -#ifndef FOR_PHASE2 - return TRUE; -#else -static int bEnabled = -1; - if ( bEnabled == -1 ) { - /* on the first call get it from the preferences */ - PREF_GetBoolPref("browser.PICS.trust_labels_enabled", &bEnabled); - } - return (PRBool)bEnabled; -#endif -} - - -/*---------------------------------------------------------------------------------------------------- - * Purpose: returns true if the given extension is the Digital Signature extension - * - *---------------------------------------------------------------------------------------------------- */ -PRBool IsLabelSigned( Extension_t *AExt ) -{ - return FALSE; /* not handling signed label right now */ -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: returns true if the given Digital Signature extension is a valid signature for - * the given label. If this returns false then we have a forged label. - * - *---------------------------------------------------------------------------------------------------- */ -PRBool IsSignatureValid( Extension_t *AExt, LabelOptions_t *LabelOptions ) -{ - return TRUE; /* not handling signed label right now */ - -} - - - -/*\\//\\//\\//\\// "MEMBERS" OF THE TRUST LABEL "CLASS" \\//\\//\\//\\//\\//\\//\\//\\//\\// */ - - -/*---------------------------------------------------------------------------------------------------- - * Purpose: construct a Trust Label and init its members - * - * returns - the new initialized TrustLabel - * ----------------------------------------------------------------------------------------------------*/ -TrustLabel *TL_Construct() -{ - TrustLabel *ALabel = NULL; - ALabel = XP_ALLOC( sizeof(TrustLabel) ); - if ( ALabel ) { - ALabel->purpose = 0; - ALabel->ID = 0; - ALabel->recipients = 0; - ALabel->szTrustAuthority = NULL; - ALabel->isGeneric = FALSE; - ALabel->isSigned = FALSE; - #if defined(XP_MAC) || defined(PRINT64_IS_STRUCT) - ALabel->ExpDate.hi = ALabel->ExpDate.lo = 0; - #else - ALabel->ExpDate = 0; - #endif - ALabel->signatory = NULL; - ALabel->domainName = NULL; - ALabel->path = NULL; - ALabel->nameList = NULL; - ALabel->szBy = NULL; - } - return ALabel; - -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: destroy a TrustLabel freeing allocated memory - * - * ----------------------------------------------------------------------------------------------------*/ -PUBLIC void TL_Destruct( TrustLabel *ALabel ) -{ - char *AName; - if ( ALabel ) { - if ( ALabel->signatory ) XP_FREE( ALabel->signatory ); - if ( ALabel->domainName ) XP_FREE( ALabel->domainName ); - if ( ALabel->path ) XP_FREE( ALabel->path ); - if ( ALabel->szTrustAuthority ) XP_FREE( ALabel->szTrustAuthority ); - if ( ALabel->szBy ) XP_FREE( ALabel->szBy ); - if ( ALabel->nameList ) { - while( (AName = (char *)XP_ListRemoveEndObject( ALabel->nameList )) ){ - XP_FREE( AName ); - } - /* now delete the list */ - XP_ListDestroy( ALabel->nameList ); - } - XP_FREE( ALabel ); - } -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: decompose the "for" label attribute into a domain and path - * and save in the trust label - * - * ----------------------------------------------------------------------------------------------------*/ -void TL_ProcessForAttrib( TrustLabel *ALabel, char *szFor) -{ - char *p; - if ( ALabel && szFor ) { - /* for the domain - skip to the "//" to jump over the protocol, */ - /* this is the beginning of the domain, then */ - /* look for the first ":" or "/" to mark the end of the domain */ - p = XP_STRCASESTR(szFor, "//"); - if ( p == NULL ) { - NET_SACopy( &ALabel->domainName, szFor); - } else { - NET_SACopy( &ALabel->domainName, p+2); - } - for(p=ALabel->domainName; *p != '\0' && *p != ':' && *p != '/'; p++); /* skip to end OR : or / */ - - /* for the path it starts where the domain stopped */ - NET_SACopy( &ALabel->path, p ); - *p = '\0'; /* terminate the domain name */ - } - -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: set the signatory for a signed label - * - * ----------------------------------------------------------------------------------------------------*/ -void TL_SetSignatory( TrustLabel *ALabel, char *Signatory ) -{ - if ( ALabel && Signatory ) { - NET_SACopy( &ALabel->signatory, Signatory ); - } -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: set the trust authority string - * - * ----------------------------------------------------------------------------------------------------*/ -void TL_SetTrustAuthority( TrustLabel *ALabel, char *TrustAuthority ) -{ - if ( ALabel && TrustAuthority ) { - NET_SACopy( &ALabel->szTrustAuthority, TrustAuthority ); - } -} - -/*---------------------------------------------------------------------------------------------------- - * Purpose: set the by field in the label from the "by" label option - * - * ----------------------------------------------------------------------------------------------------*/ -void TL_SetByField( TrustLabel *ALabel, char *szBy ) -{ - if ( ALabel && szBy ) { - NET_SACopy( &ALabel->szBy, szBy ); - } -} - - -#endif /* end of #ifdef TRUST_LABELS */ - - - - - diff --git a/mozilla/lib/libpwcac/Makefile.in b/mozilla/lib/libpwcac/Makefile.in deleted file mode 100644 index 842722a3c2d..00000000000 --- a/mozilla/lib/libpwcac/Makefile.in +++ /dev/null @@ -1,33 +0,0 @@ -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. -# - -DEPTH = ../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = pwcac -LIBRARY_NAME = pwcac - -CSRCS = pwcacapi.c - -REQUIRES = js img layer util pref security - -include $(topsrcdir)/config/rules.mk - diff --git a/mozilla/lib/libpwcac/makefile.win b/mozilla/lib/libpwcac/makefile.win deleted file mode 100644 index 9fcfb89d149..00000000000 --- a/mozilla/lib/libpwcac/makefile.win +++ /dev/null @@ -1,72 +0,0 @@ -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. - -IGNORE_MANIFEST = 1 - - -#//------------------------------------------------------------------------ -#// -#// Specify the depth of the current directory relative to the -#// root of NS -#// -#//------------------------------------------------------------------------ -DEPTH= ..\..\ - -#//------------------------------------------------------------------------ -#// -#// Define any Public Make Variables here: (ie. PDFFILE, MAPFILE, ...) -#// -#//------------------------------------------------------------------------ -LIBNAME=libpwcac - -#//------------------------------------------------------------------------ -#// -#// Define the files necessary to build the target (ie. OBJS) -#// -#//------------------------------------------------------------------------ -OBJS= \ - .\$(OBJDIR)\pwcacapi.obj \ - $(NULL) - -#//------------------------------------------------------------------------ -#// -#// Define any Public Targets here (ie. PROGRAM, LIBRARY, DLL, ...) -#// (these must be defined before the common makefiles are included) -#// -#//------------------------------------------------------------------------ - -LIBRARY=.\$(OBJDIR)\$(LIBNAME).lib - - -#//------------------------------------------------------------------------ -#// -#// Define any local options for the make tools -#// (ie. LCFLAGS, LLFLAGS, LLIBS, LINCS) -#// -#//------------------------------------------------------------------------ -LINCS=$(LINCS) -I. \ - -# clobber and clobber_all will remove the following garbage: -GARBAGE= $(GARBAGE) _gen - -#//------------------------------------------------------------------------ -#// -#// Include the common makefile rules -#// -#//------------------------------------------------------------------------ -include <$(DEPTH)/config/rules.mak> - -export:: $(LIBRARY) - $(MAKE_INSTALL) $(LIBRARY) $(DIST)\lib diff --git a/mozilla/lib/libpwcac/pwcacapi.c b/mozilla/lib/libpwcac/pwcacapi.c deleted file mode 100644 index 5bd4a459da3..00000000000 --- a/mozilla/lib/libpwcac/pwcacapi.c +++ /dev/null @@ -1,919 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public License - * Version 1.0 (the "NPL"); you may not use this file except in - * compliance with the NPL. You may obtain a copy of the NPL at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the NPL is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL - * for the specific language governing rights and limitations under the - * NPL. - * - * The Initial Developer of this code under the NPL is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All Rights - * Reserved. - */ - -/* backend glue code to do password caching - * Accepts password queries and does lookups in a secure database - * - * Written by Lou Montulli Jan 98 - */ -#include "xp.h" -#include "prlog.h" -#include "pwcacapi.h" - -#ifdef XP_MAC -#include <errno.h> -#endif - -DB *pw_database=NULL; -XP_List *pc_interpret_funcs=NULL; - -struct _PCNameValuePair { - char *name; - char *value; -}; - -struct _PCNameValueArray { - - int32 cur_ptr; - int32 size; - int32 first_empty; - PCNameValuePair *pairs; -}; - -typedef struct { - char *module; - PCDataInterpretFunc *func; -} PCInterpretModuleAssoc; - -PUBLIC void -PC_Shutdown() -{ - - if(pw_database) - { - (*pw_database->close)(pw_database); - - pw_database = NULL; - } -} - -PRIVATE int -pc_open_database(void) -{ - char* filename = "passcac.db"; - static Bool have_tried_open=FALSE; - - if(!pw_database) - { - HASHINFO hash_info = { - 4 * 1024, - 0, - 0, -#ifdef WIN16 - 60 * 1024, -#else - 96 * 1024, -#endif - 0, - 0}; - - /* @@@ add .db to the end of the files - */ - pw_database = dbopen(filename, - O_RDWR | O_CREAT, - 0600, - DB_HASH, - &hash_info); - - if(!have_tried_open && !pw_database) - { - XP_StatStruct stat_entry; - - have_tried_open = TRUE; /* only do this once */ - - PR_LogPrint("Could not open cache database -- errno: %d",errno); - - /* if the file is zero length remove it - */ - if(XP_Stat("", &stat_entry, xpCacheFAT) != -1) - { - if(stat_entry.st_size <= 0) - { - XP_FileRemove("", xpCacheFAT); - } - } - - /* try it again */ - if (filename) { - pw_database = dbopen(filename, - O_RDWR | O_CREAT, - 0600, - DB_HASH, - 0); - } - else - pw_database = NULL; - } - } - - /* return non-zero if the pw_database pointer is - * non-zero - */ - return((int) pw_database); - -} - -PRIVATE char * -pc_gen_key(char *module, char *module_key) -{ - char *combo=NULL; - - StrAllocCopy(combo, module); - StrAllocCat(combo, "\t"); - StrAllocCat(combo, module_key); - - return combo; -} - -PRIVATE void -pc_separate_key(char *key, char **module, char **module_key) -{ - char *tab; - - *module = NULL; - *module_key = NULL; - - if(!key) - return; - - tab = XP_STRCHR(key, '\t'); - - if(!tab) - return; - - *tab = '\0'; - - *module = XP_STRDUP(key); - *module_key = XP_STRDUP(tab+1); - - *tab = '\t'; -} - -PRIVATE PCInterpretModuleAssoc * -pc_find_interpret_func(char *module) -{ - XP_List *list_ptr = pc_interpret_funcs; - PCInterpretModuleAssoc *assoc; - - if(!module) - return NULL; - - while((assoc = (PCInterpretModuleAssoc *) XP_ListNextObject(list_ptr)) != NULL) - { - if(!XP_STRCMP(module, assoc->module)) - return assoc; - } - - return NULL; -} - -/* returns 0 on success -1 on error */ -PUBLIC int -PC_RegisterDataInterpretFunc(char *module, PCDataInterpretFunc *func) -{ - PCInterpretModuleAssoc *assoc; - - if(!pc_interpret_funcs) - { - pc_interpret_funcs = XP_ListNew(); - - if(!pc_interpret_funcs) - return -1; - } - - if((assoc = pc_find_interpret_func(module)) != NULL) - { - assoc->func = func; - return 0; - } - - assoc = XP_NEW(PCInterpretModuleAssoc); - - if(!assoc) - return -1; - - assoc->module = XP_STRDUP(module); - assoc->func = func; - - if(!assoc->module) - { - XP_FREE(assoc); - return -1; - } - - XP_ListAddObject(pc_interpret_funcs, assoc); - - return 0; -} - -PRIVATE void -pc_lookup_module_info(char *key, - char *data, int32 data_size, - char *type_buffer, int type_buffer_size, - char *url_buffer, int url_buffer_size, - char *username_buffer, int username_buffer_size, - char *password_buffer, int password_buffer_size) -{ - char *module, *module_key; - PCInterpretModuleAssoc *assoc; - - *type_buffer = '\0'; - *url_buffer = '\0'; - *username_buffer = '\0'; - *password_buffer = '\0'; - - pc_separate_key(key, &module, &module_key); - - if(!module || !module_key) - { - XP_FREEIF(module); - XP_FREEIF(module_key); - return; - } - - /* lookup an explain function from the modules list and use it to interpret the data */ - /* @@@@ */ - if(0 == (assoc = pc_find_interpret_func(module))) - { - /* cant find one */ - return; - } - - (*assoc->func)(module, - module_key, - data, data_size, - type_buffer, type_buffer_size, - url_buffer, url_buffer_size, - username_buffer, username_buffer_size, - password_buffer, password_buffer_size); - -} - -/*, returns status - */ -PUBLIC int -PC_DisplayPasswordCacheAsHTML(URL_Struct *URL_s, - FO_Present_Types format_out, - MWContext *context) -{ - DBT key, data; - int status = 1; - NET_StreamClass *stream; - char tmp_buffer[512]; - char type_buffer[256]; - char url_buffer[512]; - char username_buffer[256]; - char password_buffer[256]; - - format_out = CLEAR_CACHE_BIT(format_out); - StrAllocCopy(URL_s->content_type, TEXT_HTML); - stream = NET_StreamBuilder(format_out, - URL_s, - context); - - if(!stream) - { - return MK_UNABLE_TO_CONVERT; - } - - - /* define a macro to push a string up the stream - * and handle errors - */ -#define PUT_PART(part) \ -status = (*stream->put_block)(stream, \ - part ? part : "Unknown", \ - part ? XP_STRLEN(part) : 7); \ -if(status < 0) \ - goto END; - - if(!pc_open_database()) - { - XP_STRCPY(tmp_buffer, "The password database is currently unopenable"); - PUT_PART(tmp_buffer); - goto END; - } - - if(0 != (*pw_database->seq)(pw_database, &key, &data, R_FIRST)) - { - XP_STRCPY(tmp_buffer, "The password database is currently empty"); - PUT_PART(tmp_buffer); - goto END; - } - - do { - - pc_lookup_module_info(key.data, - data.data, data.size, - type_buffer, sizeof(type_buffer), - url_buffer, sizeof(url_buffer), - username_buffer, sizeof(username_buffer), - password_buffer, sizeof(password_buffer)); - - PUT_PART("Protocol: "); - PUT_PART(type_buffer); - - PUT_PART("<br>\nURL: "); - PUT_PART(url_buffer); - - PUT_PART("<br>\nUsername: "); - PUT_PART(username_buffer); - - PUT_PART("<br>\nPassword: "); - PUT_PART(password_buffer); - - PUT_PART("\n<HR>\n"); - - } while (0 == (*pw_database->seq)(pw_database, &key, &data, R_NEXT)); - -END: - if(status < 0) - (*stream->abort)(stream, status); - else - (*stream->complete)(stream); - - return status; -} - -PUBLIC int -PC_PromptUsernameAndPassword(MWContext *context, - char *prompt, - char **username, - char **password, - XP_Bool *remember, - XP_Bool is_secure) -{ - *remember = TRUE; - *remember = FALSE; - - return FE_PromptUsernameAndPassword(context, prompt, username, password); -} - -PUBLIC char * -PC_PromptPassword(MWContext *context, - char *prompt, - XP_Bool *remember, - XP_Bool is_secure) -{ - *remember = TRUE; - *remember = FALSE; - - return FE_PromptPassword(context, prompt); -} - -PUBLIC char * -PC_Prompt(MWContext *context, - char *prompt, - char *deflt, - XP_Bool *remember, - XP_Bool is_secure) -{ - *remember = TRUE; - *remember = FALSE; - - return FE_Prompt(context, prompt, deflt); -} - -PUBLIC void -PC_FreeNameValueArray(PCNameValueArray *array) -{ - int index; - if(array) - { - if(array->pairs) - { - for(index=0; index < array->first_empty; index++) - { - XP_FREEIF(array->pairs[index].name); - XP_FREEIF(array->pairs[index].value); - } - XP_FREE(array->pairs); - } - XP_FREE(array); - } -} - - -#define MIN_ARRAY_SIZE 4 -#define GROW_ARRAY_BY 4 - -PRIVATE PCNameValueArray * -pc_new_namevaluearray(int init_size) -{ - PCNameValueArray *array = XP_NEW_ZAP(PCNameValueArray); - - if(!array) - return NULL; - - array->pairs = (PCNameValuePair*)XP_CALLOC(init_size, sizeof(PCNameValuePair)); - array->size = init_size; - array->first_empty = 0; - array->cur_ptr = 0; - - if(!array->pairs) - { - PC_FreeNameValueArray(array); - return NULL; - } - - return array; -} - -PUBLIC PCNameValueArray * -PC_NewNameValueArray() -{ - return pc_new_namevaluearray(MIN_ARRAY_SIZE); -} - -PUBLIC uint32 -PC_ArraySize(PCNameValueArray *array) -{ - return(array->first_empty); -} - -/* returns value for a given name - */ -PUBLIC char * -PC_FindInNameValueArray(PCNameValueArray *array, char *name) -{ - int i; - for(i=0; i<array->first_empty; i++) - { - if(!XP_STRCMP(array->pairs[i].name, name)) - return XP_STRDUP(array->pairs[i].value); - } - - return NULL; - -} - -PUBLIC int -PC_DeleteNameFromNameValueArray(PCNameValueArray *array, char *name) -{ - int i; - - if(!array) - return -1; - - for(i=0; i<array->first_empty; i++) - { - if(!XP_STRCMP(array->pairs[i].name, name)) - { - /* found it */ - - /* delete it */ - XP_FREE(array->pairs[i].name); - XP_FREEIF(array->pairs[i].value); - - /* move everything */ - array->first_empty--; - - if(array->first_empty > i+1) - XP_MEMCPY(&array->pairs[i], &array->pairs[i+1], (array->first_empty - (i+1)) * sizeof(PCNameValuePair)); - - return 0; - } - } - - return -1; -} - -/* enumerates the array. DO NOT free the name and value results - * - * set beggining to TRUE to start over at the beginning - */ -PUBLIC void -PC_EnumerateNameValueArray(PCNameValueArray *array, char **name, char **value, XP_Bool beginning) -{ - - *name = NULL; - *value = NULL; - - if(!array) - return; - - if(beginning) - { - array->cur_ptr = 0; - } - else if(array->cur_ptr >= array->first_empty) - { - return; - } - - *name = array->pairs[array->cur_ptr].name; - *value = array->pairs[array->cur_ptr].value; - - array->cur_ptr++; - - return; -} - -/* private ver. takes pre malloced name and value strings */ -PRIVATE int -pc_add_to_namevaluearray(PCNameValueArray *array, char *name, char *value) -{ - if(array) - { - if(array->first_empty >= array->size-1) - { - /* need to grow */ - - array->size += GROW_ARRAY_BY; - array->pairs = (PCNameValuePair *)XP_REALLOC(array->pairs, array->size * sizeof(PCNameValuePair)); - } - - if(!array->pairs) - { - array->size = 0; - return -1; - } - - array->pairs[array->first_empty].name = name; - array->pairs[array->first_empty].value = value; - array->first_empty++; - - if(!array->pairs[array->first_empty-1].name - || !array->pairs[array->first_empty-1].value) - return -1; - - return 0; - } - - return -1; -} - -/* adds to end of name value array - * - * Possible to add duplicate names with this - */ -PUBLIC int -PC_AddToNameValueArray(PCNameValueArray *array, char *name, char *value) -{ - char *m_name = XP_STRDUP(name); - char *m_value = XP_STRDUP(value); - - if(!m_name || !m_value) - { - XP_FREEIF(m_name); - XP_FREEIF(m_value); - return -1; - } - - return pc_add_to_namevaluearray(array, name, value); -} - -/* takes a key string as input and returns a char * pointer - * in data to the serialized data structure previously stored or NULL. - * len will be filled in to the length of the data string - * - * A module name is also passed in to guarentee that a key from - * another module is never returned by an accidental key match. - */ -PUBLIC void -PC_CheckForStoredPasswordData(char *module, char *key, char **data, int32 *len) -{ - DBT k_key, k_data; - char *combo; - int status; - - *len = 0; - *data = NULL; - - if(!pc_open_database()) - return; - - if((combo = pc_gen_key(module, key)) == NULL) - return; - - k_key.size = XP_STRLEN(combo); - k_key.data = combo; - - status = (*pw_database->get)(pw_database, &k_key, &k_data, 0); - - XP_FREE(combo); - - if(status != 0) - return; - - *data = k_data.data; - *len = k_data.size; - - return; -} - -/* returns 0 on success else -1 - */ -PUBLIC int -PC_DeleteStoredPassword(char *module, char *key) -{ - DBT k_key; - char *combo; - int status; - - if(!pc_open_database()) - return -1; - - if((combo = pc_gen_key(module, key)) == NULL) - return -1; - - k_key.size = XP_STRLEN(combo); - k_key.data = combo; - - status = (*pw_database->del)(pw_database, &k_key, 0); - - XP_FREE(combo); - - if(status != 0) - return -1; - - return 0; -} - -/* takes a key string as input and returns a name value array - * - * A module name is also passed in to guarentee that a key from - * another module is never returned by an accidental key match. - */ -PUBLIC PCNameValueArray * -PC_CheckForStoredPasswordArray(char *module, char *key) -{ - char *data; - int32 len; - - PC_CheckForStoredPasswordData(module, key, &data, &len); - - if(!data) - return NULL; - - return PC_CharToNameValueArray(data, len); -} - -/* stores a serialized data stream in the password database - * returns 0 on success - */ -PUBLIC int -PC_StoreSerializedPassword(char *module, char *key, char *data, int32 len) -{ - char *combo; - DBT k_key, k_data; - int status; - - if(!pc_open_database()) - return 0; - - if((combo = pc_gen_key(module, key)) == NULL) - return -1; - - k_key.size = XP_STRLEN(combo)+1; - k_key.data = combo; - - k_data.data = data; - k_data.size = len; - - status = (*pw_database->put)(pw_database, &k_key, &k_data, 0); - - XP_FREE(combo); - - if(status != 0) - return -1; - - status = (*pw_database->sync)(pw_database, 0); - - return 0; -} - -/* stores a name value array in the password database - * returns 0 on success - */ -PUBLIC int -PC_StorePasswordNameValueArray(char *module, char *key, PCNameValueArray *array) -{ - char *data; - int32 len; - int status; - - PC_SerializeNameValueArray(array, &data, &len); - - if(!data) - return -1; - - status = PC_StoreSerializedPassword(module, key, data, len); - - XP_FREE(data); - - return status; -} - -#define SERIALIZER_VERSION_NUM 1 - -/* takes a name value array and serializes to a char string. - * string is returned in "data" with length "len" - * - * data will always be NULL on error - */ -PUBLIC void -PC_SerializeNameValueArray(PCNameValueArray *array, char **data, int32 *len) -{ - int32 total_size, net_long; - char *cur_ptr; - char *name, *value; - - *len = 0; - *data = NULL; - - XP_ASSERT(array && array->pairs); - - if(!array) - return; - - total_size = sizeof(int32)*3; /* start with checksum + ver + array_size amount */ - - /* determine size of arrays */ - PC_EnumerateNameValueArray(array, &name, &value, TRUE); - while(name) - { - total_size += sizeof(int32); /* size of name len */ - total_size += XP_STRLEN(name)+1; - - total_size += sizeof(int32); /* size of value len */ - if(value) - total_size += XP_STRLEN(value)+1; - - PC_EnumerateNameValueArray(array, &name, &value, FALSE); - } - - /* malloc enough space */ - *data = XP_ALLOC(sizeof(char) * total_size); - - if(!*data) - return; - - cur_ptr = *data; - - net_long = PR_htonl(total_size); - XP_MEMCPY(cur_ptr, &net_long, sizeof(int32)); - cur_ptr += sizeof(int32); - - net_long = PR_htonl(SERIALIZER_VERSION_NUM); - XP_MEMCPY(cur_ptr, &net_long, sizeof(int32)); - cur_ptr += sizeof(int32); - - net_long = PR_htonl(PC_ArraySize(array)); - XP_MEMCPY(cur_ptr, &net_long, sizeof(int32)); - cur_ptr += sizeof(int32); - - PC_EnumerateNameValueArray(array, &name, &value, TRUE); - while(name) - { - net_long = PR_htonl((name ? XP_STRLEN(name)+1 : 0)); - XP_MEMCPY(cur_ptr, &net_long, sizeof(int32)); - cur_ptr += sizeof(int32); - net_long = PR_ntohl(net_long); /* convert back to true len */ - if(net_long) - XP_MEMCPY((void *)cur_ptr, name, net_long); - cur_ptr += net_long; - - net_long = PR_htonl((value ? XP_STRLEN(value)+1 : 0)); - XP_MEMCPY(cur_ptr, &net_long, sizeof(int32)); - cur_ptr += sizeof(int32); - net_long = PR_ntohl(net_long); /* convert back to true len */ - if(net_long) - XP_MEMCPY((void *)cur_ptr, value, net_long); - cur_ptr += net_long; - - PC_EnumerateNameValueArray(array, &name, &value, FALSE); - } - - *len = total_size; - - return; -} - -/* returns a PCNameValueArray from serialized char data. - * - * returns NULL on error - */ -PUBLIC PCNameValueArray * -PC_CharToNameValueArray(char *data, int32 len) -{ - int32 host_long, str_len, len_read, array_size, index; - char *cur_ptr; - char *name, *value; - PCNameValueArray *array; - - /* must be at least 12 bytes, len and ver and array_size */ - XP_ASSERT(len >= 12); - - if(len < 12) - return NULL; - - cur_ptr = data; - - /* read first 4 bytes as checksum */ - XP_MEMCPY(&host_long, cur_ptr, 4); - host_long = PR_ntohl(host_long); - cur_ptr += sizeof(int32); - len_read = sizeof(int32); - - if(host_long != len) - { - XP_ASSERT(0); /* this one might happen on db error */ - return NULL; /* failed checksum */ - } - - /* read next 4 bytes as ver */ - XP_MEMCPY(&host_long, cur_ptr, 4); - host_long = PR_ntohl(host_long); - cur_ptr += sizeof(int32); - len_read += sizeof(int32); - - if(host_long != SERIALIZER_VERSION_NUM) - { - XP_ASSERT(0); - return NULL; /* failed ver check */ - } - - /* read next 4 bytes as array_size */ - XP_MEMCPY(&array_size, cur_ptr, 4); - array_size = PR_ntohl(array_size); - cur_ptr += sizeof(int32); - len_read += sizeof(int32); - - /* malloc arrays */ - array = pc_new_namevaluearray(array_size); - if(!array) - return NULL; - - index = 0; - while(len_read < len) - { - /* next 4 bytes is length of name string */ - XP_MEMCPY(&str_len, cur_ptr, 4); - str_len = PR_ntohl(str_len); - cur_ptr += sizeof(int32); - len_read += sizeof(int32); - - if(len_read + str_len > len) - goto error_out; - - name = XP_ALLOC(str_len * sizeof(char)); - if(!name) - goto error_out; - - XP_MEMCPY(name, cur_ptr, str_len); - len_read += str_len; - cur_ptr += str_len; - - if(len_read >= len) - goto error_out; - - /* next 4 bytes is length of value string */ - XP_MEMCPY(&str_len, cur_ptr, 4); - str_len = PR_ntohl(str_len); - cur_ptr += sizeof(int32); - len_read += sizeof(int32); - - if(len_read + str_len > len) - goto error_out; - - value = XP_ALLOC(str_len * sizeof(char)); - if(!value) - goto error_out; - - XP_MEMCPY(value, cur_ptr, str_len); - len_read += str_len; - cur_ptr += str_len; - - pc_add_to_namevaluearray(array, name, value); - - index++; - } - - XP_ASSERT(len_read == len); - - return array; - -error_out: - - XP_ASSERT(0); - - PC_FreeNameValueArray(array); - - return NULL; -} diff --git a/mozilla/lib/libstyle/MANIFEST b/mozilla/lib/libstyle/MANIFEST deleted file mode 100644 index 63bbcfa843c..00000000000 --- a/mozilla/lib/libstyle/MANIFEST +++ /dev/null @@ -1,7 +0,0 @@ -# -# This is a list of local files which get copied to the mozilla:dist directory -# - -css.h -stystruc.h -stystack.h diff --git a/mozilla/lib/libstyle/Makefile b/mozilla/lib/libstyle/Makefile deleted file mode 100644 index 72c2a7c6d4a..00000000000 --- a/mozilla/lib/libstyle/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - -DEPTH = ../.. - -MODULE = style -LIBRARY_NAME = style - -CSRCS = csslex.c \ - csstab.c \ - csstojs.c \ - jssrules.c \ - libstyle.c \ - stystack.c \ - stystruc.c \ - $(NULL) - -EXPORTS = stystack.h stystruc.h css.h - -REQUIRES = js nspr dbm img util layer - -include $(DEPTH)/config/rules.mk - -TEST_LIBS = $(LIBRARY) \ - $(DIST)/lib/liburl.$(LIB_SUFFIX) \ - $(DIST)/lib/libsec-us.$(LIB_SUFFIX) \ - $(DIST)/lib/libdbm.$(LIB_SUFFIX) \ - $(DIST)/lib/libxp.$(LIB_SUFFIX) \ - $(DIST)/lib/nspr.$(LIB_SUFFIX) - -CSS_TEST_LIBS = $(LIBRARY) \ - $(DIST)/lib/libxp.$(LIB_SUFFIX) - -ifeq ($(OS_ARCH),OS2) -$(OBJDIR)/csstab.o: csstab.c - @$(MAKE_OBJDIR) - $(CC) -Fo$@ -Sa -c $(CFLAGS) $< -endif - -test: - $(CC) -g -o $(OBJDIR)/style_test $(CFLAGS) -DSS_TEST stystruc.c $(TEST_LIBS) - $(CC) -g -o $(OBJDIR)/stack_test $(CFLAGS) -DTEST_STYLESTACK stystack.c $(TEST_LIBS) - -css_test: - rm -f $(OBJDIR)/css_test - $(CC) -g -o $(OBJDIR)/css_test $(CFLAGS) -DTEST_CSS_TRANSLATION csstojs.c $(CSS_TEST_LIBS) diff --git a/mozilla/lib/libstyle/Makefile.in b/mozilla/lib/libstyle/Makefile.in deleted file mode 100644 index a89ac2c5662..00000000000 --- a/mozilla/lib/libstyle/Makefile.in +++ /dev/null @@ -1,74 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - -DEPTH = ../.. -topsrcdir = @top_srcdir@ -VPATH = @srcdir@ -srcdir = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = style -LIBRARY_NAME = style - -CSRCS = csslex.c \ - csstab.c \ - csstojs.c \ - jssrules.c \ - libstyle.c \ - stystack.c \ - stystruc.c \ - $(NULL) - -EXPORTS = stystack.h stystruc.h css.h - -EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) - -REQUIRES = js dbm img util layer - -include $(topsrcdir)/config/rules.mk - -ifdef ENABLE_TESTS -TEST_LIBS = $(LIBRARY) \ - $(DIST)/lib/liburl.$(LIB_SUFFIX) \ - $(DIST)/lib/libsec-us.$(LIB_SUFFIX) \ - $(DIST)/lib/libdbm.$(LIB_SUFFIX) \ - $(DIST)/lib/libxp.$(LIB_SUFFIX) - -CSS_TEST_LIBS = $(LIBRARY) \ - $(DIST)/lib/libxp.$(LIB_SUFFIX) -endif - -ifeq ($(OS_ARCH),OS2) -$(OBJDIR)/csstab.o: csstab.c - @$(MAKE_OBJDIR) - $(CC) -Fo$@ -Sa -c $(CFLAGS) $< -endif - -ifdef ENABLE_TESTS -test: - $(CC) -g -o $(OBJDIR)/style_test $(CFLAGS) -DSS_TEST stystruc.c $(TEST_LIBS) $(NSPR_LIBS) - $(CC) -g -o $(OBJDIR)/stack_test $(CFLAGS) -DTEST_STYLESTACK stystack.c $(TEST_LIBS) $(NSPR_LIBS) - -css_test: - rm -f $(OBJDIR)/css_test - $(CC) -g -o $(OBJDIR)/css_test $(CFLAGS) -DTEST_CSS_TRANSLATION csstojs.c $(CSS_TEST_LIBS) -endif diff --git a/mozilla/lib/libstyle/css.h b/mozilla/lib/libstyle/css.h deleted file mode 100644 index 077bc69c666..00000000000 --- a/mozilla/lib/libstyle/css.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef __CSS_H__ -#define __CSS_H__ - -extern void CSS_ConvertToJS(char *src, int32 src_count, char **dst, int32 *dst_count); - -extern char * CSS_ConvertToJSCompatibleName(char *css_name, XP_Bool uppercase_it); - -#endif diff --git a/mozilla/lib/libstyle/css.lex b/mozilla/lib/libstyle/css.lex deleted file mode 100644 index d80dc65cc8e..00000000000 --- a/mozilla/lib/libstyle/css.lex +++ /dev/null @@ -1,229 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -%{ - -/* For flex. Requires support for 8-bit characters and case independence. */ - -#include "cssI.h" -#include "csstab.h" - -#undef YY_INPUT -#define YY_INPUT(buf, result, max_size) css_GetBuf(buf, &result, max_size) - -#if !defined(__cplusplus) && !(__STDC__) && !defined(__TURBOC__) -/* Stuff from stdlib.h -- needed by win16 */ -#define YY_MALLOC_DECL \ -extern void free (void *); \ -extern void *malloc (size_t size); \ -extern void *realloc (void *, size_t); -#endif - -static int input(void); - -/* We never take input off of the command line. */ -#define YY_NEVER_INTERACTIVE 1 - -#ifdef CSS_PARSE_DEBUG -#define RETURN(x) {printf("lex returns %d for '%s'\n",x,css_text);return(x);} -#else -#define RETURN(x) return(x) -#endif - -%} - -unicode \\[0-9a-f]{1,4} -latin1 [¡-ÿ] -escape {unicode}|\\[ -~¡-ÿ] -stringchar {escape}|{latin1}|[ !#$%&(-~] -nmstrt [a-z]|{latin1}|{escape} -nmchar [-a-z0-9]|{latin1}|{escape} -ident {nmstrt}{nmchar}* -name {nmchar}+ -d [0-9] -notnm [^-a-z0-9\\]|{latin1} -w [ \t\n]* -num {d}+|{d}*\.{d}+ -string \"({stringchar}|\')*\"|\'({stringchar}|\")*\' -hex [0-9a-f] -hex3 [0-9a-f]{3} -hex6 [0-9a-f]{6} - -%x css_comment -%x css_ignore -%x css_property -%x css_value -%x css_bg -%x css_font -%x css_line_height -%x css_list_style -%x css_border -%x css_font_size - -%s css_after_ident - -%% -%{ - - -/* CSS1 17 December 1996, with the following changes: - * 1. Expand whitespace definition in the rules section. - * 2. Change default rule action to be silent. - * 3. Require class names to be an IDENT. - * 4. Require id names to be an IDENT. - * 5. Return '.' as a separate lexical token; - * add DOT and DOT_AFTER_IDENT; remove CLASS and CLASS_AFTER_IDENT - * 6. Return '#' as a separate lexical token; - * remove HASH and HASH_AFTER_IDENT. - * 7. Gut the use of AFTER_IDENT tokens for pseudoclasses and pseudoelements. - * 8. Provide a definition for HEXCOLOR token. - * move { and } out into state triggers - * 9. Gave up on preserving any heritage and made use of exclusive states. - */ - -/* These state variables can be on the stack because their state is not - * useful across a token return. They should always be set to 0 before - * starting a new input file. - */ -short int css_prior_state = 0; -short int css_nest_count = 0; - -%} -\<\!\-\- {BEGIN(0); RETURN(CDO);} -\-\-\> {BEGIN(0); RETURN(CDC);} - -<css_after_ident>":"link {BEGIN(0);RETURN(LINK_PSCLASS);} -<css_after_ident>":"visited {BEGIN(0);RETURN(VISITED_PSCLASS);} -<css_after_ident>":"active {BEGIN(0);RETURN(ACTIVE_PSCLASS);} -<css_after_ident>"." {BEGIN(0);RETURN(DOT_AFTER_IDENT);} -{ident} {BEGIN(css_after_ident); RETURN(IDENT);} - -":"link {BEGIN(0);RETURN(LEADING_LINK_PSCLASS);} -":"visited {BEGIN(0);RETURN(LEADING_VISITED_PSCLASS);} -":"active {BEGIN(0);RETURN(LEADING_ACTIVE_PSCLASS);} -":"first-line {BEGIN(0);RETURN(FIRST_LINE);} -":"first-letter {BEGIN(0);RETURN(FIRST_LETTER);} -"." {BEGIN(0);RETURN(DOT);} -[,#;] {BEGIN(0);return (*css_text);} -[ \t\f\v\r\n]+ {BEGIN(0);} - -@import {BEGIN(0); RETURN(IMPORT_SYM);} -@fontdef {BEGIN(0); RETURN(FONTDEF);} -url\({w}{string}{w}\) | -url\({w}([^ \n\'\")]|\\\ |\\\'|\\\"|\\\))+{w}\) {RETURN(URL);} -{string} {RETURN(STRING);} - -@{ident} {BEGIN(css_ignore); css_nest_count=0;} -<css_ignore>{string} | -<css_ignore>[^;{}]* { /* unrecognized @rules are ignored. */} -<css_ignore>";" {if (0 == css_nest_count) BEGIN(0);} -<css_ignore>"{" {css_nest_count++;} -<css_ignore>"}" {if (0 >= --css_nest_count) BEGIN(0);} - -<*>"/*" {if (css_comment != YY_START) { - /* Comments cannot be nested. */ - css_prior_state = YY_START;} - BEGIN(css_comment);} -<css_comment>[^*]* | -<css_comment>"*"+[^*/]* {/* Comments function as whitespace. */} -<css_comment>"*"+"/" {BEGIN(css_prior_state);} - -<css_property,css_value,css_bg,css_font,css_line_height,css_list_style,css_border,css_font_size>[ \t\f\v\r\n]+ {/* whitespace can separate tokens */} -<css_property,css_value,css_bg,css_font,css_line_height,css_list_style,css_border,css_font_size>"}" {BEGIN(0); return (*css_text);} - -<css_value,css_bg,css_font,css_line_height,css_list_style,css_border,css_font_size>[;] {BEGIN(css_property); return (*css_text);} -<css_value,css_bg,css_font,css_line_height,css_list_style,css_border,css_font_size>"!"{w}important {RETURN(IMPORTANT_SYM);} - -"{" {BEGIN(css_property); return (*css_text);} -<css_property>[:] {BEGIN(css_value); return (*css_text);} -<css_property>[-/+;,#] {return (*css_text);} -<css_property>"background" {BEGIN(css_bg); RETURN(BACKGROUND);} -<css_property>font {BEGIN(css_font); RETURN(FONT);} -<css_property>list-style {BEGIN(css_list_style); RETURN(LIST_STYLE);} -<css_property>border {BEGIN(css_border); RETURN(BORDER);} -<css_property>font-size {BEGIN(css_font_size); RETURN(FONT_SIZE_PROPERTY);} -<css_property>{ident} {RETURN(IDENT);} - -<css_font>italic|oblique {RETURN(FONT_STYLE);} -<css_font>small-caps {RETURN(FONT_VARIANT);} -<css_font>bold|bolder|lighter {RETURN(FONT_WEIGHT);} -<css_font>100|200|300|400|500|600|700|800|900 {RETURN(FONT_WEIGHT);} -<css_font>normal {RETURN(FONT_NORMAL);} -<css_font,css_font_size>xx-small|x-small|small|medium {RETURN(FONT_SIZE);} -<css_font,css_font_size>large|x-large|xx-large|larger|smaller {RETURN(FONT_SIZE);} -<css_font,css_font_size,css_line_height>{num}"%" {BEGIN(css_font); RETURN(PERCENTAGE);} -<css_font,css_font_size>0 | -<css_font,css_font_size,css_line_height>{num}pt/{notnm} | -<css_font,css_font_size,css_line_height>{num}mm/{notnm} | -<css_font,css_font_size,css_line_height>{num}cm/{notnm} | -<css_font,css_font_size,css_line_height>{num}pc/{notnm} | -<css_font,css_font_size,css_line_height>{num}in/{notnm} | -<css_font,css_font_size,css_line_height>{num}px/{notnm} {BEGIN(css_font); RETURN(LENGTH);} -<css_font,css_font_size,css_line_height>{num}em/{notnm} {BEGIN(css_font); RETURN(EMS);} -<css_font,css_font_size,css_line_height>{num}ex/{notnm} {BEGIN(css_font); RETURN(EXS);} -<css_font>"/" {BEGIN(css_line_height); return (*css_text);} -<css_line_height>[-+] {return (*css_text);} -<css_line_height>{num} {BEGIN(css_font); RETURN(NUMBER);} -<css_line_height>normal {BEGIN(css_font); RETURN(LINE_HEIGHT);} -<css_font>{ident} {RETURN(IDENT);} -<css_font>{string} {RETURN(STRING);} -<css_font,css_font_size,css_list_style>[:,+] {return (*css_text);} - -<css_list_style>disc|circle|square|decimal|lower-roman|upper-roman|lower-alpha|upper-alpha {RETURN(LS_TYPE);} -<css_list_style>none {RETURN(LS_NONE);} -<css_list_style>inside|outside {RETURN(LS_POSITION);} - -<css_bg>transparent {RETURN(BG_COLOR);} -<css_bg>none {RETURN(BG_IMAGE);} -<css_bg>repeat|repeat-x|repeat-y|no-repeat {RETURN(BG_REPEAT);} -<css_bg>scroll|fixed {RETURN(BG_ATTACHMENT);} -<css_bg>left|right|top|center|bottom {RETURN(BG_POSITION);} - -<css_value,css_bg,css_border>[-/+,#:] {return (*css_text);} -<css_value,css_bg>{ident} {RETURN(IDENT);} -<css_value>[)(] {RETURN(IDENT); /* quick b2 hack */} -<css_value,css_bg>{string} {RETURN(STRING);} -<css_value,css_bg,css_border>"#"{hex3} | -<css_value,css_bg,css_border>"#"{hex6} {RETURN(HEXCOLOR);} -<css_value,css_bg,css_border>rgb\({w}{num}%?{w}\,{w}{num}%?{w}\,{w}{num}%?{w}\) {RETURN(RGB);} -<css_value,css_bg,css_list_style>url\({w}{string}{w}\) | -<css_value,css_bg,css_list_style>url\({w}([^ \n\'\")]|\\\ |\\\'|\\\"|\\\))+{w}\) {RETURN(URL);} -<css_value,css_bg,css_border>{num}"%" {RETURN(PERCENTAGE);} -<css_value,css_bg,css_border>0 | -<css_value,css_bg,css_border>{num}pt/{notnm} | -<css_value,css_bg,css_border>{num}mm/{notnm} | -<css_value,css_bg,css_border>{num}cm/{notnm} | -<css_value,css_bg,css_border>{num}pc/{notnm} | -<css_value,css_bg,css_border>{num}in/{notnm} | -<css_value,css_bg,css_border>{num}px/{notnm} {RETURN(LENGTH);} -<css_value,css_bg,css_border>{num}em/{notnm} {RETURN(EMS);} -<css_value,css_bg,css_border>{num}ex/{notnm} {RETURN(EXS);} - -<css_value>{num} {RETURN(NUMBER);} - -<css_border>none|dotted|dashed|solid|double | -<css_border>groove|ridge|inset|outset {RETURN(BORDER_STYLE);} -<css_border>thin|medium|thick {RETURN(BORDER_WIDTH);} -<css_border>{ident} {RETURN(IDENT);} - -<<EOF>> {BEGIN (0); yyterminate();} -<*>. {RETURN(WILD);} -%% diff --git a/mozilla/lib/libstyle/css.y b/mozilla/lib/libstyle/css.y deleted file mode 100644 index d9419106c8b..00000000000 --- a/mozilla/lib/libstyle/css.y +++ /dev/null @@ -1,1367 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -%{ - -#include <stdio.h> -#include "cssI.h" - -%} - -%token NUMBER STRING PERCENTAGE LENGTH EMS -%token EXS IDENT HEXCOLOR URL RGB -%token CDO CDC -%token IMPORTANT_SYM -%token IMPORT_SYM -%token DOT_AFTER_IDENT DOT -%token LINK_PSCLASS VISITED_PSCLASS ACTIVE_PSCLASS -%token LEADING_LINK_PSCLASS -%token LEADING_VISITED_PSCLASS -%token LEADING_ACTIVE_PSCLASS -%token FIRST_LINE -%token FIRST_LETTER -%token WILD -%token BACKGROUND -%token BG_COLOR BG_IMAGE BG_REPEAT BG_ATTACHMENT BG_POSITION -%token FONT -%token FONT_STYLE FONT_VARIANT FONT_WEIGHT FONT_SIZE -%token FONT_NORMAL LINE_HEIGHT -%token LIST_STYLE LS_TYPE LS_NONE LS_POSITION -%token BORDER BORDER_STYLE BORDER_WIDTH -%token FONT_SIZE_PROPERTY -%token FONTDEF - -%type <binary_node> stylesheet -%type <binary_node> import ruleset unary_operator operator property -%type <binary_node> import_value -%type <binary_node> selector_list declaration_list declaration selector -%type <binary_node> pseudo_element simple_selector -%type <binary_node> contextual_selector -%type <binary_node> contextual_selector_list -%type <binary_node> element_name pseudo_class class id -%type <binary_node> leading_pseudo_class -%type <binary_node> expr prio term optional_priority -%type <binary_node> numeric_const unsigned_numeric_const -%type <binary_node> numeric_unit unsigned_numeric_unit -%type <binary_node> unsigned_symbol color_code -%type <binary_node> url -%type <binary_node> background_property -%type <binary_node> background_values_list -%type <binary_node> background_value -%type <binary_node> background_values -%type <binary_node> background_position_expr -%type <binary_node> background_position_value -%type <binary_node> background_position_keyword -%type <binary_node> font_property font_size_property -%type <binary_node> font_values_list -%type <binary_node> font_size_value font_family_value line_height_value -%type <binary_node> font_optional_value font_optional_values_list -%type <binary_node> font_family_operator font_family_expr -%type <binary_node> list_style_property -%type <binary_node> list_style_values_list list_style_value -%type <binary_node> border_property -%type <binary_node> border_values_list border_value -%type <binary_node> atrule fontdef - -%union { - css_node binary_node; -} - - -%{ - - /* Background Shorthand Property */ - -typedef struct backgroundShorthandRecord { - css_node color; - css_node image; - css_node repeat; - css_node attachment; - css_node position; - int parse_error; -} BackgroundShorthandRecord, *BackgroundShorthand; - -#define BackgroundColor 1 -#define BackgroundImage 2 -#define BackgroundRepeat 3 -#define BackgroundAttachment 4 -#define BackgroundPosition 5 - -static void ClearBackground(void); -static void AddBackground(int node_type, css_node node); -static css_node AssembleBackground(void); - -static BackgroundShorthandRecord bg; - -/* background property names */ -static char * bg_image = "background-image"; -static char * bg_color = "background-color"; -static char * bg_repeat = "background-repeat"; -static char * bg_attachment = "background-attachment"; -static char * bg_position = "background-position"; -/* background property initial values */ -static char * css_none = "none"; -static char * css_transparent = "transparent"; -static char * css_repeat = "repeat"; -static char * css_scroll = "scroll"; -static char * css_origin = "0% 0%"; - - - /* Font Shorthand Property */ - -typedef struct fontShorthandRecord { - css_node style; - css_node variant; - css_node weight; - css_node size; - css_node leading; - css_node family; - int normal_count; - int parse_error; -} FontShorthandRecord, *FontShorthand; - -#define FontStyle 6 -#define FontVariant 7 -#define FontWeight 8 -#define FontNormal 9 -#define FontSize 10 -#define FontLeading 11 -#define FontFamily 12 - -static void ClearFont(void); -static void AddFont(int node_type, css_node node); -static css_node AssembleFont(void); - -static FontShorthandRecord font; - -/* font property names */ -static char * line_height = "line-height"; -static char * font_family = "font-family"; -static char * font_style = "font-style"; -static char * font_variant = "font-variant"; -static char * font_weight = "font-weight"; -static char * font_size = "font-size"; -/* font property initial values */ -static char * css_normal = "normal"; - - - /* List-Style Shorthand Property */ - -typedef struct listStyleShorthandRecord { - css_node marker; - css_node image; - css_node position; - int none_count; - int parse_error; -} ListStyleShorthandRecord, *ListStyleShorthand; - -#define ListStyleMarker 13 -#define ListStyleImage 14 -#define ListStylePosition 15 -#define ListStyleNone 16 - -static void ClearListStyle(void); -static void AddListStyle(int node_type, css_node node); -static css_node AssembleListStyle(void); - -static ListStyleShorthandRecord ls; - -/* list-style property names */ -static char * list_style_type = "list-style-type"; -static char * list_style_image = "list-style-image"; -static char * list_style_position = "list-style-position"; -/* list-style initial values */ -static char * css_disc = "disc"; -static char * css_outside = "outside"; - - - /* Border Shorthand Property */ - -typedef struct borderShorthandRecord { - css_node width; - css_node style; - css_node color; - int parse_error; -} BorderShorthandRecord, *BorderShorthand; - -#define BorderWidth 17 -#define BorderStyle 18 -#define BorderColor 19 - -static void ClearBorder(void); -static void AddBorder(int node_type, css_node node); -static css_node AssembleBorder(void); - -static BorderShorthandRecord border; - -/* border property names */ -static char * border_width = "border-width"; -static char * border_style = "border-style"; -static char * border_color = "border-color"; -/* border initial values */ -static char * css_medium = "medium"; - - -/* Define yyoverflow and the forward declarations for bison. */ -#define yyoverflow css_overflow -static void css_overflow(const char *message, short **yyss1, int yyss1_size, - YYSTYPE **yyvs1, int yyvs1_size, int *yystacksize); -static css_node NewNode(int node_id, char *ss, css_node left, css_node right); -static void LeftAppendNode(css_node head, css_node new_node); -static css_node NewDeclarationNode(int node_id, char *ss, char *prop); -static css_node NewComponentNode(css_node value, char *prop); - -css_node css_tree_root; - -/* pseudo-classes */ -static char * css_link = "link"; -static char * css_visited = "visited"; -static char * css_active = "active"; - -#ifdef CSS_PARSE_DEBUG -#define TRACE1(str) trace1(str) -#define TRACE2(format, str) trace2(format, str) -static trace1(const char * str) -{ - printf("%s", str); -} - -static trace2(const char *fmt, char *str) -{ - printf(fmt, str); -} -#else -#define TRACE1(str) -#define TRACE2(format, str) -#endif - -int css_error(const char * diagnostic) -{ -#ifdef CSS_PARSE_REPORT_ERRORS - char * identifier = "CSS1 parser message:"; - (void) fprintf(stderr, - "%s error, text ='%s', diagnostic ='%s'\n", - identifier, css_text, diagnostic ? diagnostic : ""); -#endif - return 1; -} - - -int css_wrap(void) -{ -#ifdef CSS_PARSE_DEBUG - printf("css_wrap() was called.\n"); -#endif - return 1; -} - -%} -%% - -stylesheet - : { - $$ = NULL; - } - | stylesheet CDO { - TRACE1("-cdo\n"); - $$ = $1; - } - | stylesheet atrule { - $$ = $1; - if ($$ == NULL) { - css_tree_root = $2; - $$ = css_tree_root; - } - else - LeftAppendNode($$, $2); - } - | stylesheet ruleset { - css_node tmp; - tmp = NewNode(NODE_RULESET_LIST, NULL, NULL, $2); - - $$ = $1; - if ($$ == NULL) { - css_tree_root = tmp; - $$ = css_tree_root; - } - else - LeftAppendNode($$, tmp); - } - | stylesheet CDC { - TRACE1("-cdc\n"); - $$ = $1; - } - | stylesheet error { - yyerrok; - yyclearin; - } - ; - -atrule - : import { - $$ = NewNode(NODE_IMPORT_LIST, NULL, NULL, $1); - } - | fontdef { - $$ = NewNode(NODE_FONTDEF_LIST, NULL, NULL, $1); - } - ; - -import - : IMPORT_SYM import_value ';' { - $$ = $2; - } - ; - -fontdef - : FONTDEF import_value ';' { - $$ = $2; - } - ; - -import_value - : STRING { - $$ = NewNode(NODE_IMPORT_STRING, css_text, NULL, NULL); - } - | url { - TRACE1("-import url\n"); - $1->node_id = NODE_IMPORT_URL; - $$ = $1; - } - ; - -unary_operator - : '-' { - TRACE1("-unary_op '-'\n"); - $$ = NewNode(NODE_UNARY_OP, css_text, NULL, NULL); - } - | '+' { - TRACE1("-unary_op '+'\n"); - $$ = NewNode(NODE_UNARY_OP, css_text, NULL, NULL); - } - ; - -operator - : { - TRACE1("-empty operator\n"); - $$ = NewNode(NODE_EMPTY_OP, NULL, NULL, NULL); - } - | '/' { - TRACE1("-operator : '/'\n"); - $$ = NewNode(NODE_EXPR_OP, css_text, NULL, NULL); - } - | ',' { - TRACE1("-operator : ','\n"); - $$ = NewNode(NODE_EXPR_OP, css_text, NULL, NULL); - } - ; - -property - : IDENT { - TRACE2("-property : IDENT '%s'\n", css_text); - $$ = NewNode(NODE_PROPERTY, css_text, NULL, NULL); - } - ; - -font_size_property - : FONT_SIZE_PROPERTY { - $$ = NewNode(NODE_PROPERTY, css_text, NULL, NULL); - } - ; - -background_property - : BACKGROUND { - TRACE2("-property : BACKGROUND '%s'\n", css_text); - ClearBackground(); - $$ = NULL; - /* This shorthand property will generate five component properties. */ - } - ; - -font_property - : FONT { - TRACE2("-property : FONT '%s'\n", css_text); - ClearFont(); - $$ = NULL; - /* This shorthand property will generate six component properties. */ - } - ; - -list_style_property - : LIST_STYLE { - ClearListStyle(); - $$ = NULL; - /* This shorthand property will generate three component properties. */ - } - ; - -border_property - : BORDER { - ClearBorder(); - $$ = NULL; - /* This shorthand property will generate 2 or 3 component properties. */ - } - ; - -ruleset - : selector_list '{' declaration_list '}' { - TRACE1("-selector_list { declaration_list }\n"); - $$ = NewNode(NODE_RULESET, NULL, $1, $3); - } - ; - -selector_list - : selector { - TRACE1("-selector\n"); - $$ = NewNode(NODE_SELECTOR_LIST, NULL, NULL, $1); - } - | selector_list ',' selector { - css_node tmp; - TRACE1("-selector_list , selector\n"); - tmp = NewNode(NODE_SELECTOR_LIST, NULL, NULL, $3); - - $$ = $1; - if( $$ == NULL ) - $$ = tmp; - else - LeftAppendNode( $$, tmp ); - } - ; - -selector -: simple_selector { - TRACE1("-simple_selector\n"); - $$ = NewNode(NODE_SELECTOR, NULL, $1, NULL); -} -| simple_selector pseudo_element { - TRACE1("-simple_selector : pseudo_element\n"); - $$ = NewNode(NODE_SELECTOR, NULL, $1, $2); -} -| contextual_selector { - TRACE1("-contextual_selector\n"); - $$ = NewNode(NODE_SELECTOR, NULL, $1, NULL); -} -| contextual_selector pseudo_element { - TRACE1("-contextual_selector : pseudo_element\n"); - $$ = NewNode(NODE_SELECTOR, NULL, $1, $2); -} -; - - /* - * A simple_selector is something like H1, PRE.FOO, - * .FOO, etc., or it is an ID: #p004 - */ - -contextual_selector -: contextual_selector_list simple_selector { - TRACE1("-contextual_selector_list simple_selector\n"); - $$ = NewNode(NODE_SELECTOR_CONTEXTUAL, NULL, $1, $2); -} -; - -contextual_selector_list - : simple_selector { - TRACE1("-simple_selector\n"); - $$ = NewNode(NODE_SELECTOR_CONTEXTUAL, NULL, NULL, $1); - } - | contextual_selector_list simple_selector { - TRACE1("-contextual_selector_list simple_selector\n"); - $$ = NewNode(NODE_SELECTOR_CONTEXTUAL, NULL, $1, $2); - } - ; - -simple_selector - : element_name { - TRACE1("-element_name\n"); - $$ = NewNode(NODE_SIMPLE_SELECTOR_NAME_ONLY, NULL, $1, NULL); - } - | DOT class { - TRACE1("-dot class\n"); - $$ = NewNode(NODE_SIMPLE_SELECTOR_DOT_AND_CLASS, NULL, $2, NULL); - } - | id { - TRACE1("-id\n"); - $$ = NewNode(NODE_SIMPLE_SELECTOR_ID_SELECTOR, NULL, $1, NULL); - } - | element_name DOT_AFTER_IDENT class { - TRACE1("-element dot class\n"); - $$ = NewNode(NODE_SIMPLE_SELECTOR_NAME_AND_CLASS, NULL, $1, $3); - } - | element_name pseudo_class { - TRACE1("-element pseudo_class\n"); - $$ = NewNode(NODE_SIMPLE_SELECTOR_NAME_PSEUDO_CLASS, NULL, $1, $2); - } - | element_name DOT_AFTER_IDENT class pseudo_class { - TRACE2("-element_name '%s' dot class pseudo_class\n", $1->string); - $1->node_id = NODE_SIMPLE_SELECTOR_NAME_CLASS_PSEUDO_CLASS; - $1->left = $3; - $1->right = $4; - $$ = $1; - } - | DOT class pseudo_class { - TRACE1("-dot class pseudo_class\n"); - $$ = NewNode(NODE_SIMPLE_SELECTOR_NAME_CLASS_PSEUDO_CLASS, "A", $2, $3); - } - | leading_pseudo_class { - css_node tmp; - TRACE1("solitary pseudo_class\n"); - /* See CSS1 spec of 17 December 1996 section 2.1 Anchor pseudo-classes */ - tmp = NewNode(NODE_ELEMENT_NAME, "A", NULL, NULL); - $$ = NewNode(NODE_SIMPLE_SELECTOR_NAME_PSEUDO_CLASS, NULL, tmp, $1); - } - | WILD { - $$ = NewNode(NODE_WILD, NULL, NULL, NULL); - } - ; - -element_name - : IDENT { - TRACE2("-IDENT '%s' to element_name\n", css_text); - $$ = NewNode(NODE_ELEMENT_NAME, css_text, NULL, NULL); - } - ; - -class - : IDENT { - TRACE2("-IDENT '%s' to class\n", css_text); - $$ = NewNode(NODE_CLASS, css_text, NULL, NULL); - } - ; - -id - : '#' IDENT { - TRACE2("-IDENT '%s' to id\n", css_text); - $$ = NewNode(NODE_ID_SELECTOR, css_text, NULL, NULL); - } - ; - -pseudo_class - : LINK_PSCLASS { - $$ = NewNode(NODE_LINK_PSCLASS, css_link, NULL, NULL); - } - | VISITED_PSCLASS { - $$ = NewNode(NODE_VISITED_PSCLASS, css_visited, NULL, NULL); - } - | ACTIVE_PSCLASS { - $$ = NewNode(NODE_ACTIVE_PSCLASS, css_active, NULL, NULL); - } - ; - -leading_pseudo_class - : LEADING_LINK_PSCLASS { - $$ = NewNode(NODE_LINK_PSCLASS, css_link, NULL, NULL); - } - | LEADING_VISITED_PSCLASS { - $$ = NewNode(NODE_VISITED_PSCLASS, css_visited, NULL, NULL); - } - | LEADING_ACTIVE_PSCLASS { - $$ = NewNode(NODE_ACTIVE_PSCLASS, css_active, NULL, NULL); - } - ; - -pseudo_element - : FIRST_LINE { - TRACE2("-IDENT '%s' to pseudo_element\n", css_text); - $$ = NewNode(NODE_PSEUDO_ELEMENT, "first-Line", NULL, NULL); - } - | FIRST_LETTER { - TRACE2("-IDENT '%s' to pseudo_element\n", css_text); - $$ = NewNode(NODE_PSEUDO_ELEMENT, "first-Letter", NULL, NULL); - } - ; - -declaration_list - : declaration { - TRACE1("-declaration\n"); - $$ = $1; - } - | declaration_list ';' declaration { - /* to keep the order, append the new node to the end. */ - TRACE1("-declaration_list ';' declaration\n"); - $$ = $1; - if (NULL == $$) - $$ = $3; - else - LeftAppendNode($$, $3); - } - ; - -declaration - : { - TRACE1("-empty declaration\n"); - $$ = NewNode(NODE_DECLARATION_LIST, NULL, NULL, NULL); - } - | property ':' expr optional_priority { - css_node dcl; - TRACE1("-property : expr\n"); - dcl = NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, $1, $3); - $$ = NewNode(NODE_DECLARATION_LIST, NULL, NULL, dcl); - } - | font_size_property ':' font_size_value optional_priority { - css_node expr, dcl; - expr = NewNode(NODE_EXPR, NULL, NULL, $3); - dcl = NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, $1, expr); - $$ = NewNode(NODE_DECLARATION_LIST, NULL, NULL, dcl); - } - | background_property ':' background_values_list optional_priority { - /* The priority notation is ignored by the translator - * so we conveniently ignore it here, too. - */ - TRACE1("-background property : background_values_list\n"); - $$ = AssembleBackground(); - } - | font_property ':' font_values_list optional_priority { - TRACE1("-font property : font_values_list prio\n"); - /* The priority notation is ignored by the translator - * so we conveniently ignore it here, too. - */ - $$ = AssembleFont(); - } - | list_style_property ':' list_style_values_list optional_priority { - $$ = AssembleListStyle(); - } - | border_property ':' border_values_list optional_priority { - $$ = AssembleBorder(); - } - ; - -optional_priority - : { /* nothing */ } - | prio - ; - -prio - : IMPORTANT_SYM { /* !important */ - TRACE1("-IMPORTANT_SYM\n"); - $$ = NULL; - } - ; - -expr - : term { - TRACE1("-term\n"); - $$ = NewNode(NODE_EXPR, NULL, NULL, $1); - } - | expr operator term { - TRACE1("-expr op term\n"); - - $$ = $1; - /* put the new term at the end */ - $2->right = $3; - - if ($$ == NULL) - $$ = $2; - else - LeftAppendNode( $$, $2 ); - } - ; - -term - : unsigned_symbol - | color_code - | url - | numeric_unit - | numeric_const - ; - -numeric_const - : unsigned_numeric_const - | unary_operator unsigned_numeric_const { - TRACE1("-unary_operator signed_const to term\n"); - $$ = $1; - $$->left = $2; - } - ; - -unsigned_numeric_const - : NUMBER { - $$ = NewNode(NODE_NUMBER, css_text, NULL, NULL); - } - ; - -numeric_unit - : unsigned_numeric_unit - | unary_operator unsigned_numeric_unit { - $$ = $1; - $$->left = $2; - } - ; - -unsigned_numeric_unit - : PERCENTAGE { - $$ = NewNode(NODE_PERCENTAGE, css_text, NULL, NULL); - } - | LENGTH { - $$ = NewNode(NODE_LENGTH, css_text, NULL, NULL); - } - | EMS { - $$ = NewNode(NODE_EMS, css_text, NULL, NULL); - } - | EXS{ - $$ = NewNode(NODE_EMS, css_text, NULL, NULL); - } - ; - -unsigned_symbol - : STRING { - $$ = NewNode(NODE_STRING, css_text, NULL, NULL); - } - | IDENT { - TRACE2("-IDENT '%s' to unsigned_symbol\n", css_text); - $$ = NewNode(NODE_IDENT, css_text, NULL, NULL); - } - ; - -url - : URL { - $$ = NewNode(NODE_URL, css_text, NULL, NULL); - } - ; - -color_code - : HEXCOLOR { - $$ = NewNode(NODE_HEXCOLOR, css_text, NULL, NULL); - } - | RGB { - $$ = NewNode(NODE_RGB, css_text, NULL, NULL); - } - ; - -background_values_list - : background_values - | background_position_value - | background_values background_position_value - | background_position_value background_values - | background_values background_position_value background_values - ; - -background_values - : background_value - | background_values background_value - ; - -background_value - : URL { - $$ = NewDeclarationNode(NODE_URL, css_text, bg_image); - AddBackground(BackgroundImage, $$); - } - | BG_IMAGE { - $$ = NewDeclarationNode(NODE_IDENT, css_text, bg_image); - AddBackground(BackgroundImage, $$); - } - | color_code { - $$ = NewComponentNode($1, bg_color); - AddBackground(BackgroundColor, $$); - } - | IDENT { - $$ = NewDeclarationNode(NODE_IDENT, css_text, bg_color); - AddBackground(BackgroundColor, $$); - } - | BG_COLOR { - $$ = NewDeclarationNode(NODE_IDENT, css_text, bg_color); - AddBackground(BackgroundColor, $$); - } - | BG_REPEAT { - $$ = NewDeclarationNode(NODE_IDENT, css_text, "background-repeat"); - AddBackground(BackgroundRepeat, $$); - } - | BG_ATTACHMENT { - $$ = NewDeclarationNode(NODE_IDENT, css_text, "background-attachment"); - AddBackground(BackgroundAttachment, $$); - } - ; - -background_position_value - : background_position_expr { - css_node property, declaration; - property = NewNode(NODE_PROPERTY, bg_position, NULL, NULL); - declaration = NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, - property, $1); - AddBackground(BackgroundPosition, declaration); - } - ; - -background_position_expr - : numeric_unit { - $$ = NewNode(NODE_EXPR, NULL, NULL, $1); - } - | numeric_unit numeric_unit { - css_node operator; - $$ = NewNode(NODE_EXPR, NULL, NULL, $1); - operator = NewNode(NODE_EMPTY_OP, NULL, NULL, $2); - if ($$ == NULL) - $$ = operator; - else - LeftAppendNode($$, operator); - } - | background_position_keyword { - $$ = NewNode(NODE_EXPR, NULL, NULL, $1); - } - | background_position_keyword background_position_keyword { - css_node operator; - $$ = $1; - operator = NewNode(NODE_EMPTY_OP, NULL, NULL, $2); - if ($$ == NULL) - $$ = operator; - else - LeftAppendNode($$, operator); - } - ; - -background_position_keyword - : BG_POSITION { - $$ = NewNode(NODE_IDENT, css_text, NULL, NULL); - } - ; - -font_values_list - : font_optional_values_list font_size_value font_family_value { - css_node tmp; - tmp = NewComponentNode($2, font_size); - AddFont(FontSize, tmp); - AddFont(FontFamily, $3); - $$ = NULL; - } - | font_optional_values_list font_size_value '/' line_height_value font_family_value { - css_node tmp; - tmp = NewComponentNode($2, font_size); - AddFont(FontSize, tmp); - tmp = NewComponentNode($4, line_height); - AddFont(FontLeading, tmp); - AddFont(FontFamily, $5); - $$ = NULL; - } - ; - -font_family_operator - : { - TRACE1("-empty operator\n"); - $$ = NewNode(NODE_EMPTY_OP, NULL, NULL, NULL); - } - | ',' { - TRACE1("-operator : ','\n"); - $$ = NewNode(NODE_EXPR_OP, css_text, NULL, NULL); - } - ; - -font_family_value - : font_family_expr { - css_node property; - TRACE1("-font_family_expr to font_family_value\n"); - property = NewNode(NODE_PROPERTY, font_family, NULL, NULL); - $$ = NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, property, $1); - } - ; - -font_family_expr - : unsigned_symbol { - TRACE1("-unsigned_symbol\n"); - $$ = NewNode(NODE_EXPR, NULL, NULL, $1); - } - | font_family_expr font_family_operator unsigned_symbol { - TRACE1("-font_family_value font_family_op unsigned_symbol\n"); - - $$ = $1; - /* put the new term at the end */ - $2->right = $3; - - if ($$ == NULL) - $$ = $2; - else - LeftAppendNode( $$, $2 ); - } - ; - -font_optional_values_list - : { /* empty */ - $$ = NULL; - } - | font_optional_values_list font_optional_value { - $$ = NULL; - } - ; - -font_optional_value - : FONT_STYLE { - TRACE2("-FONT_STYLE '%s' to font_optional_value\n", css_text); - $$ = NewDeclarationNode(NODE_IDENT, css_text, font_style); - AddFont(FontStyle, $$); - } - | FONT_VARIANT { - TRACE2("-FONT_VARIANT '%s' to font_optional_value\n", css_text); - $$ = NewDeclarationNode(NODE_IDENT, css_text, font_variant); - AddFont(FontVariant, $$); - } - | FONT_WEIGHT { - TRACE2("-FONT_WEIGHT '%s' to font_optional_value\n", css_text); - $$ = NewDeclarationNode(NODE_IDENT, css_text, font_weight); - AddFont(FontWeight, $$); - } - | FONT_NORMAL { - AddFont(FontNormal, NULL); - } - ; - -font_size_value - : unsigned_numeric_unit - | FONT_SIZE { - $$ = NewNode(NODE_IDENT, css_text, NULL, NULL); - } - | '+' unsigned_numeric_unit { - /* just drop the '+' on the floor */ - $$ = $2; - } - ; - -line_height_value - : numeric_unit - | numeric_const - | LINE_HEIGHT { - /* The only valid identifier is the word "normal". - * There's an idea that a normal leading value is font-specific, - * so the identifier is passed upwards. - */ - $$ = NewNode(NODE_IDENT, css_text, NULL, NULL); - } - ; - -list_style_values_list - : list_style_value - | list_style_values_list list_style_value - ; - -list_style_value - : LS_TYPE { - $$ = NewDeclarationNode(NODE_IDENT, css_text, list_style_type); - AddListStyle(ListStyleMarker, $$); - $$ = NULL; - } - | LS_NONE { - AddListStyle(ListStyleNone, NULL); - $$ = NULL; - } - | LS_POSITION { - $$ = NewDeclarationNode(NODE_IDENT, css_text, list_style_position); - AddListStyle(ListStylePosition, $$); - $$ = NULL; - } - | url { - $$ = NewComponentNode($1, list_style_image); - AddListStyle(ListStyleImage, $$); - $$ = NULL; - } - ; - -border_values_list - : border_value - | border_values_list border_value - ; - -border_value - : BORDER_STYLE { - $$ = NewDeclarationNode(NODE_IDENT, css_text, border_style); - AddBorder(BorderStyle, $$); - $$ = NULL; - } - | BORDER_WIDTH { - $$ = NewDeclarationNode(NODE_IDENT, css_text, border_width); - AddBorder(BorderWidth, $$); - $$ = NULL; - } - | numeric_unit { - $$ = NewComponentNode($1, border_width); - AddBorder(BorderWidth, $$); - $$ = NULL; - } - | color_code { - $$ = NewComponentNode($1, border_color); - AddBorder(BorderColor, $$); - $$ = NULL; - } - | IDENT { - $$ = NewDeclarationNode(NODE_IDENT, css_text, border_color); - AddBorder(BorderColor, $$); - $$ = NULL; - } - ; -%% - -#include "xp_mem.h" -#include "xpassert.h" - -/* Memory allocated here will be freed by css_FreeNode in csstojs.c */ -static css_node NewNode(int node_id, char *ss, css_node left, css_node right) -{ - register css_node pp; - - if ((pp = XP_NEW(css_nodeRecord)) == NULL) - return NULL; - - pp->node_id = node_id; - pp->string = NULL; - if (ss) { - if ((pp->string = (char *) XP_ALLOC(strlen(ss) + 1)) != NULL) - (void) strcpy(pp->string, ss); - } - pp->left = left; - pp->right = right; - return pp; -} - - -/* Append new_node to the leftmost leaf of head */ -static void LeftAppendNode(css_node head, css_node new_node) -{ - if (head == NULL) - return; - - while (head->left != NULL) - head = head->left; - head->left = new_node; -} - - -static css_node NewDeclarationNode(int node_id, char *ss, char *prop) -{ - css_node value, expression, property; - value = NewNode(node_id, ss, NULL, NULL); - expression = NewNode(NODE_EXPR, NULL, NULL, value); - property = NewNode(NODE_PROPERTY, prop, NULL, NULL); - return NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, property, expression); -} - - -static css_node NewComponentNode(css_node value, char *prop) -{ - css_node expression, property; - expression = NewNode(NODE_EXPR, NULL, NULL, value); - property = NewNode(NODE_PROPERTY, prop, NULL, NULL); - return NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, property, expression); -} - - -static void ClearFont(void) -{ - font.style = font.variant = font.weight = NULL; - font.size = font.leading = font.family = NULL; - font.normal_count = font.parse_error = 0; -} - - -static void AddFont(int node_type, css_node node) -{ - if (FontStyle == node_type && (! font.style)) - font.style = node; - else if (FontVariant == node_type && (! font.variant)) - font.variant = node; - else if (FontWeight == node_type && (! font.weight)) - font.weight = node; - else if (FontNormal == node_type) - font.normal_count++; - else if (FontSize == node_type && (! font.size)) - font.size = node; - else if (FontLeading == node_type && (! font.leading)) - font.leading = node; - else if (FontFamily == node_type && (! font.family)) - font.family = node; - else { - font.parse_error++; - if (node) css_FreeNode(node); - } -} - - -static css_node AssembleFont(void) -{ - css_node head, element; - int count; - - count = 0; - if (font.style) count++; - if (font.variant) count++; - if (font.weight) count++; - if (font.normal_count > (3 - count)) - font.parse_error++; - - if (font.parse_error) { - if (font.style) css_FreeNode(font.style); - if (font.variant) css_FreeNode(font.variant); - if (font.weight) css_FreeNode(font.weight); - if (font.size) css_FreeNode(font.size); - if (font.leading) css_FreeNode(font.leading); - if (font.family) css_FreeNode(font.family); - ClearFont(); - return NULL; - } - - if (! font.style) - font.style = NewDeclarationNode(NODE_IDENT, css_normal, font_style); - if (! font.variant) - font.variant = NewDeclarationNode(NODE_IDENT, css_normal, font_variant); - if (! font.weight) - font.weight = NewDeclarationNode(NODE_IDENT, css_normal, font_weight); - if (! font.leading) - font.leading = NewDeclarationNode(NODE_IDENT, css_normal, line_height); - - head = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.style); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.variant); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.weight); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.size); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.leading); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.family); - LeftAppendNode(head, element); - - ClearFont(); - return head; -} - - -static void ClearBackground(void) -{ - bg.color = bg.image = bg.repeat = NULL; - bg.attachment = bg.position = NULL; - bg.parse_error = 0; -} - - -static void AddBackground(int node_type, css_node node) -{ - if (BackgroundColor == node_type && (! bg.color)) - bg.color = node; - else if (BackgroundImage == node_type && (! bg.image)) - bg.image = node; - else if (BackgroundRepeat == node_type && (! bg.repeat)) - bg.repeat = node; - else if (BackgroundAttachment == node_type && (! bg.attachment)) - bg.attachment = node; - else if (BackgroundPosition == node_type && (! bg.position)) - bg.position = node; - else { - bg.parse_error++; - css_FreeNode(node); - } -} - - -static css_node AssembleBackground(void) -{ - css_node head, element; - - if (bg.parse_error) { - if (bg.color) - css_FreeNode(bg.color); - if (bg.image) - css_FreeNode(bg.image); - if (bg.repeat) - css_FreeNode(bg.repeat); - if (bg.attachment) - css_FreeNode(bg.attachment); - if (bg.position) - css_FreeNode(bg.position); - ClearBackground(); - return NULL; - } - - if (! bg.color) - bg.color = NewDeclarationNode(NODE_IDENT, css_transparent, bg_color); - if (! bg.image) - bg.image = NewDeclarationNode(NODE_IDENT, css_none, bg_image); - if (! bg.repeat) - bg.repeat = NewDeclarationNode(NODE_IDENT, css_repeat, bg_repeat); - if (! bg.attachment) - bg.attachment = NewDeclarationNode(NODE_IDENT, css_scroll, bg_attachment); - if (! bg.position) - bg.position = NewDeclarationNode(NODE_PERCENTAGE, css_origin, - bg_position); - - head = NewNode(NODE_DECLARATION_LIST, NULL, NULL, bg.color); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, bg.image); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, bg.repeat); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, bg.attachment); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, bg.position); - LeftAppendNode(head, element); - - ClearBackground(); - return head; -} - - -static void ClearListStyle(void) -{ - ls.marker = ls.image = ls.position = NULL; - ls.none_count = ls.parse_error = 0; -} - -static void AddListStyle(int node_type, css_node node) -{ - if (ListStyleMarker == node_type && (! ls.marker)) - ls.marker = node; - else if (ListStyleImage == node_type && (! ls.image)) - ls.image = node; - else if (ListStylePosition == node_type && (! ls.position)) - ls.position = node; - else if (ListStyleNone == node_type) - ls.none_count++; - else { - ls.parse_error++; - if (node) css_FreeNode(node); - } -} - -static css_node AssembleListStyle(void) -{ - css_node head, element; - int count; - char * marker_value; - - count = 0; - if (ls.marker) count++; - if (ls.image) count++; - if (ls.none_count > (2 - count)) - ls.parse_error++; - - if (ls.parse_error) { - if (ls.marker) css_FreeNode(ls.marker); - if (ls.image) css_FreeNode(ls.image); - if (ls.position) css_FreeNode(ls.position); - ClearListStyle(); - return NULL; - } - - if (! ls.marker) { - /* list-style: none - * could mean marker or image. It should set the marker; - * the image will default to none. - */ - marker_value = ls.none_count ? css_none : css_disc; - ls.marker = NewDeclarationNode(NODE_IDENT, marker_value, - list_style_type); - } - if (! ls.image) - ls.image = NewDeclarationNode(NODE_IDENT, css_none, list_style_image); - if (! ls.position) - ls.position = NewDeclarationNode(NODE_IDENT, css_outside, - list_style_position); - - head = NewNode(NODE_DECLARATION_LIST, NULL, NULL, ls.marker); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, ls.image); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, ls.position); - LeftAppendNode(head, element); - - ClearListStyle(); - return head; -} - - -static void ClearBorder(void) -{ - border.width = border.style = border.color = (css_node) NULL; - border.parse_error = 0; -} - -static void AddBorder(int node_type, css_node node) -{ - if (BorderWidth == node_type && (! border.width)) - border.width = node; - else if (BorderStyle == node_type && (! border.style)) - border.style = node; - else if (BorderColor == node_type && (! border.color)) - border.color = node; - else { - border.parse_error++; - if (node) css_FreeNode(node); - } -} - -static css_node AssembleBorder(void) -{ - css_node head, element; - - if (border.parse_error) { - if (border.width) css_FreeNode(border.width); - if (border.style) css_FreeNode(border.style); - if (border.color) css_FreeNode(border.color); - ClearBorder(); - return (css_node) NULL; - } - - if (! border.width) - border.width = NewDeclarationNode(NODE_IDENT, css_medium, border_width); - if (! border.style) - border.style = NewDeclarationNode(NODE_IDENT, css_none, border_style); - - head = NewNode(NODE_DECLARATION_LIST, NULL, NULL, border.width); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, border.style); - LeftAppendNode(head, element); - if (border.color) { - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, border.color); - LeftAppendNode(head, element); - } - - ClearBorder(); - return head; -} - -/* css_overflow is only for parsers generated by bison. */ -static void css_overflow(const char *message, short **yyss1, int yyss1_size, - YYSTYPE **yyvs1, int yyvs1_size, int *yystacksize) -{ - short * yyss2; - YYSTYPE * yyvs2; - int new_size; - - - if (*yystacksize >= YYMAXDEPTH) - return; - - new_size = *yystacksize * 2; - if (new_size > YYMAXDEPTH) - new_size = YYMAXDEPTH; - - if (*yystacksize == YYINITDEPTH) { - /* First time allocating from the heap. */ - yyss2 = (short *) XP_ALLOC(new_size * sizeof(short)); - if (yyss2) - (void) memcpy((void *)yyss2, (void *) *yyss1, yyss1_size); - yyvs2 = XP_ALLOC(new_size * sizeof(YYSTYPE)); - if (yyvs2) - (void) memcpy((void *)yyvs2, (void *) *yyvs1, yyvs1_size); - } else { - yyss2 = (short *) XP_REALLOC(*yyss1, new_size * sizeof(short)); - yyvs2 = XP_REALLOC(*yyvs1, new_size * sizeof(YYSTYPE)); - } - - if (yyss2 && yyvs2) { - *yyss1 = yyss2; - *yyvs1 = yyvs2; - *yystacksize = new_size; - } - - /* Any failure to allocate will be noticed by the caller. */ -} - diff --git a/mozilla/lib/libstyle/cssI.h b/mozilla/lib/libstyle/cssI.h deleted file mode 100644 index e59b7a32e1a..00000000000 --- a/mozilla/lib/libstyle/cssI.h +++ /dev/null @@ -1,94 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef __CSS_INTERNAL_H__ -#define __CSS_INTERNAL_H__ - -typedef struct css_nodeRecord { - int node_id; - char * string; - struct css_nodeRecord * left; - struct css_nodeRecord * right; -} css_nodeRecord, *css_node; - -enum { - NODE_IMPORT_LIST = 300, - NODE_IMPORT_STRING, - NODE_IMPORT_URL, - NODE_STRING, - NODE_NUMBER, - NODE_TERM, - NODE_EXPR, - NODE_PRIO, - NODE_IDENT, - NODE_EMS, - NODE_LENGTH, - NODE_PERCENTAGE, - NODE_RGB, - NODE_URL, - NODE_HEXCOLOR, - NODE_DECLARATION_PROPERTY_EXPR_PRIO, - NODE_DECLARATION_PROPERTY_EXPR, - NODE_ID_SELECTOR, - NODE_PSEUDO_ELEMENT, - NODE_CLASS, - NODE_ACTIVE_PSCLASS, - NODE_VISITED_PSCLASS, - NODE_LINK_PSCLASS, - NODE_SIMPLE_SELECTOR_ID_SELECTOR, - NODE_SIMPLE_SELECTOR_DOT_AND_CLASS, - NODE_SIMPLE_SELECTOR_NAME_PSEUDO_CLASS, - NODE_SIMPLE_SELECTOR_NAME_ONLY, - NODE_SIMPLE_SELECTOR_NAME_AND_CLASS, - NODE_SIMPLE_SELECTOR_NAME_CLASS_PSEUDO_CLASS, - NODE_SIMPLE_SELECTOR_LIST, - NODE_SELECTOR, - NODE_SELECTOR_CONTEXTUAL, - NODE_DECLARATION_LIST, - NODE_SELECTOR_LIST, - NODE_PROPERTY, - NODE_TERM_OP, - NODE_EXPR_OP, - NODE_EMPTY_OP, - NODE_UNARY_OP, - NODE_RULESET, - NODE_RULESET_LIST, - NODE_SIMPLE_SELECTOR_PSEUDO_CLASS, - NODE_ELEMENT_NAME, - NODE_WILD, - NODE_FONTDEF_LIST -}; - -extern css_node css_tree_root; /* root of parse tree */ -#ifdef LEX -extern unsigned char css_text[]; -#else -extern char *css_text; -#endif - -extern int css_lex(void); -extern int css_error(const char * diagnostic); -extern int css_parse(void); -extern int css_wrap(void); -extern void css_GetBuf(char * buf, int * result, int max_to_read); -extern void css_FreeNode(css_node node); - -#endif diff --git a/mozilla/lib/libstyle/csslex.c b/mozilla/lib/libstyle/csslex.c deleted file mode 100644 index 072a94bd834..00000000000 --- a/mozilla/lib/libstyle/csslex.c +++ /dev/null @@ -1,4016 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#define yy_create_buffer css__create_buffer -#define yy_delete_buffer css__delete_buffer -#define yy_scan_buffer css__scan_buffer -#define yy_scan_string css__scan_string -#define yy_scan_bytes css__scan_bytes -#define yy_flex_debug css__flex_debug -#define yy_init_buffer css__init_buffer -#define yy_flush_buffer css__flush_buffer -#define yy_load_buffer_state css__load_buffer_state -#define yy_switch_to_buffer css__switch_to_buffer -#define yyin css_in -#define yyleng css_leng -#define yylex css_lex -#define yyout css_out -#define yyrestart css_restart -#define yytext css_text -#define yywrap css_wrap - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header: /home/befator/cvs/jail/cvsroot/mozilla/lib/libstyle/Attic/csslex.c,v 3.2 1999-11-06 03:27:18 dmose%mozilla.org Exp $ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include <stdio.h> - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include <stdlib.h> -#include <unistd.h> - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include <io.h> -#include <stdlib.h> -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define YY_USES_REJECT -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 101 -#define YY_END_OF_BUFFER 102 -static yyconst short int yy_acclist[746] = - { 0, - 28, 28, 23, 23, 102, 100, 101, 15, 100, 101, - 15, 101, 100, 101, 14, 100, 101, 100, 101, 100, - 101, 13, 100, 101, 100, 101, 100, 101, 100, 101, - 100, 101, 100, 101, 7, 100, 101, 7, 100, 101, - 35, 100, 101, 28, 100, 101, 28, 101, 29, 100, - 101, 28, 100, 101, 23, 100, 101, 23, 101, 23, - 100, 101, 23, 100, 101, 23, 100, 101, 24, 100, - 101, 25, 100, 101, 26, 100, 101, 31, 100, 101, - 31, 101, 37, 100, 101, 37, 100, 101, 36, 100, - 101, 100, 101, 43, 100, 101, 43, 100, 101, 43, - - 100, 101, 43, 100, 101, 32, 100, 101, 100, 101, - 100, 101, 76, 100, 101, 100, 101, 78, 100, 101, - 76, 100, 101, 100, 101, 76, 100, 101, 86, 95, - 100, 101, 95, 100, 101, 33, 100, 101, 100, 101, - 77, 100, 101, 77, 100, 101, 77, 100, 101, 100, - 101, 86, 100, 101, 100, 101, 77, 100, 101, 77, - 100, 101, 77, 100, 101, 77, 100, 101, 77, 100, - 101, 77, 100, 101, 77, 100, 101, 77, 100, 101, - 100, 101, 100, 101, 67, 100, 101, 100, 101, 61, - 100, 101, 52, 100, 101, 100, 101, 100, 101, 100, - - 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, - 101, 100, 101, 100, 101, 65, 100, 101, 65, 100, - 101, 65, 100, 101, 65, 100, 101, 65, 100, 101, - 65, 100, 101, 65, 100, 101, 65, 100, 101, 65, - 100, 101, 62, 100, 101, 100, 101, 63, 100, 101, - 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, - 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, - 99, 100, 101, 99, 100, 101, 99, 100, 101, 99, - 100, 101, 99, 100, 101, 99, 100, 101, 99, 100, - 101, 99, 100, 101, 99, 100, 101, 99, 100, 101, - - 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, - 6, 13, 100, 101, 100, 101, 15, 20, 27, 21, - 21, 21, 7, 7, 7, 7, 28, 29, 29, 30, - 23, 23, 22, 23, 23, 23, 23, 23, 27, 31, - 43, 43, 43, 43, 43, 43, 43, 79, 95, 85, - 95, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 66, 51, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 63, 63, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 20, 20, 2, - - 21, 21, 21, 21, 21, 7, 7, 7, 7, 22, - 23, 22, 23, 23, 23, 23, 22, 23, 23, 23, - 43, 43, 43, 43, 43, 43, 43, 79, 79,16473, - 16477,16478,16475,16472,16474,16471,16476, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 75, 77, 77, 66, 66,16439,16443,16444,16441, - 16438,16440,16437,16442, 47, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 1, 21, 21, 21, 21, 21, - - 7, 7, 22, 23, 22, 23, 43, 43, 43, 43, - 39, 43, 43, 80, 8281, 8281, 8285, 8285, 8286, 8286, - 8283, 8283, 8280, 8280, 8282, 8282, 8279, 8279, 8284, 8284, - 77, 77, 77, 77, 77, 77, 72, 77, 77, 77, - 77, 77, 8247, 8247, 8251, 8251, 8252, 8252, 8249, 8249, - 8246, 8246, 8248, 8248, 8245, 8245, 8250, 8250, 65, 65, - 46, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 68, 69, 99, 99, 99, 99, 99, - 99, 99, 99, 96, 99, 99, 99, 99, 99, 98, - 99, 8, 21, 21, 21, 21, 7, 7, 23, 23, - - 43, 43, 43, 43, 43, 43, 77, 77, 77, 77, - 74, 77, 77, 77, 77, 77, 65, 65, 65, 65, - 50, 65, 65, 65, 65, 65, 49, 65, 65, 65, - 65, 65, 99, 99, 99, 99, 99, 99, 97, 99, - 99, 99, 50, 49, 3, 8, 21, 21, 21, 21, - 7, 19, 19, 43, 43, 41, 43, 43, 43, 77, - 84, 84, 77, 73, 77, 77, 65, 46, 65, 44, - 65, 50, 65, 65, 49, 65, 48, 65, 65, 65, - 65, 65, 65, 65, 65, 64, 70, 99, 50, 49, - 10, 21, 21, 16, 21, 18, 43, 43, 43, 81, - - 83, 77, 77, 77, 65, 65, 65, 5, 10, 9, - 17, 21, 18, 18, 43, 43, 43, 83, 83, 77, - 73, 77, 77, 65, 4, 9, 43, 42, 43, 43, - 77, 65, 38, 43, 40, 43, 34, 82, 77, 45, - 65, 11, 71, 77, 12 - } ; - -static yyconst short int yy_accept[863] = - { 0, - 1, 1, 1, 2, 3, 4, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 6, 8, 11, 13, 15, - 18, 20, 22, 25, 27, 29, 31, 33, 35, 38, - 41, 44, 47, 49, 52, 55, 58, 60, 63, 66, - 69, 72, 75, 78, 81, 83, 86, 89, 92, 94, - 97, 100, 103, 106, 109, 111, 113, 116, 118, 121, - 124, 126, 129, 133, 136, 139, 141, 144, 147, 150, - 152, 155, 157, 160, 163, 166, 169, 172, 175, 178, - 181, 183, 185, 188, 190, 193, 196, 198, 200, 202, - - 204, 206, 208, 210, 212, 214, 216, 219, 222, 225, - 228, 231, 234, 237, 240, 243, 246, 248, 251, 253, - 255, 257, 259, 261, 263, 265, 267, 269, 271, 274, - 277, 280, 283, 286, 289, 292, 295, 298, 301, 303, - 305, 307, 309, 311, 315, 317, 318, 318, 319, 319, - 319, 319, 319, 320, 320, 320, 320, 320, 320, 320, - 321, 322, 323, 324, 325, 326, 326, 327, 328, 329, - 330, 331, 332, 333, 335, 335, 336, 337, 337, 338, - 340, 341, 342, 343, 344, 344, 345, 346, 347, 348, - 348, 348, 348, 349, 349, 349, 349, 349, 350, 351, - - 351, 352, 352, 352, 352, 352, 352, 353, 354, 355, - 355, 356, 357, 357, 357, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 367, 368, 368, 368, - 368, 368, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 370, - 371, 372, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 383, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 385, 386, 387, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 398, 398, 398, 398, 398, 398, 398, 398, - - 398, 399, 399, 399, 399, 400, 400, 400, 401, 401, - 401, 401, 401, 401, 402, 403, 404, 404, 405, 406, - 407, 408, 409, 410, 411, 411, 412, 414, 415, 415, - 416, 416, 417, 419, 420, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 428, 428, 429, 429, 429, 429, - 429, 430, 430, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 454, 455, 455, 456, - 456, 456, 456, 457, 457, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - - 472, 473, 474, 475, 476, 477, 478, 479, 480, 480, - 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, - 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 495, 495, 495, 495, 495, - 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, - 496, 497, 498, 499, 500, 501, 502, 503, 503, 504, - 504, 504, 505, 506, 506, 506, 507, 508, 509, 510, - 511, 513, 514, 514, 514, 515, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, - 529, 530, 531, 532, 533, 533, 533, 534, 535, 536, - - 537, 539, 540, 541, 542, 543, 543, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 574, 574, - 574, 575, 575, 575, 576, 576, 576, 576, 577, 578, - 579, 580, 581, 582, 583, 584, 586, 587, 588, 589, - 590, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 593, 593, 594, 595, - 596, 597, 598, 599, 599, 599, 599, 599, 599, 599, - 599, 600, 600, 601, 602, 603, 604, 605, 606, 607, - - 607, 607, 607, 607, 608, 609, 609, 609, 609, 609, - 609, 609, 609, 609, 609, 610, 611, 613, 614, 615, - 616, 617, 617, 617, 618, 619, 620, 621, 623, 624, - 625, 626, 627, 629, 630, 631, 632, 633, 633, 633, - 633, 633, 633, 633, 633, 633, 634, 635, 636, 637, - 638, 639, 641, 642, 643, 644, 644, 645, 645, 645, - 645, 645, 645, 647, 647, 647, 647, 647, 648, 649, - 650, 651, 652, 652, 652, 653, 653, 653, 653, 653, - 653, 653, 653, 654, 654, 654, 655, 656, 658, 659, - 660, 660, 660, 661, 661, 661, 661, 661, 661, 661, - - 662, 662, 662, 662, 662, 662, 662, 662, 663, 664, - 666, 667, 668, 670, 672, 674, 675, 677, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 687, 688, 688, - 688, 688, 689, 690, 691, 691, 691, 691, 691, 691, - 691, 691, 692, 692, 692, 693, 694, 696, 696, 697, - 697, 697, 697, 697, 697, 697, 697, 697, 698, 699, - 700, 700, 701, 701, 701, 701, 701, 702, 702, 702, - 702, 702, 702, 702, 702, 702, 703, 704, 705, 706, - 707, 708, 708, 708, 708, 708, 708, 708, 710, 710, - 710, 711, 713, 713, 714, 714, 714, 715, 715, 716, - - 717, 718, 718, 718, 718, 718, 718, 718, 719, 719, - 719, 720, 720, 721, 723, 724, 725, 725, 725, 725, - 725, 727, 727, 727, 727, 727, 728, 730, 731, 731, - 731, 731, 731, 731, 731, 732, 733, 733, 733, 733, - 733, 733, 733, 735, 737, 738, 738, 738, 738, 739, - 740, 742, 742, 742, 742, 742, 742, 743, 745, 745, - 746, 746 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 5, 6, 7, 8, 9, 10, 9, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 9, 33, 9, 34, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 9, 35, 9, 9, 9, 9, 36, 37, 38, 39, - - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 9, 63, 9, 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, 1, 1, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64 - } ; - -static yyconst int yy_meta[65] = - { 0, - 1, 2, 2, 1, 3, 4, 5, 4, 4, 6, - 5, 4, 7, 8, 4, 4, 9, 3, 10, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 4, - 12, 4, 4, 4, 13, 14, 14, 15, 14, 15, - 14, 13, 13, 16, 13, 13, 13, 16, 13, 13, - 16, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 12, 12, 17 - } ; - -static yyconst short int yy_base[1012] = - { 0, - 0, 0, 62, 63, 64, 67, 130, 0, 194, 0, - 247, 0, 302, 0, 365, 427, 489, 0, 546, 0, - 596, 0, 50, 54, 2839, 7351, 85, 89, 62, 7351, - 68, 2819, 7351, 2819, 60, 2824, 64, 636, 2793, 65, - 7351, 0, 0, 90, 2811, 0, 0, 372, 408, 2810, - 7351, 7351, 7351, 108, 117, 7351, 2799, 7351, 658, 2776, - 227, 229, 71, 7351, 396, 254, 0, 255, 7351, 7351, - 0, 2796, 690, 0, 7351, 722, 2774, 81, 245, 0, - 754, 0, 243, 246, 247, 252, 365, 362, 90, 370, - 401, 402, 7351, 0, 2794, 796, 2787, 2786, 2785, 2776, - - 2775, 2774, 2773, 2772, 2761, 828, 2745, 391, 383, 381, - 337, 422, 260, 425, 442, 7351, 0, 860, 2729, 2734, - 421, 2728, 2726, 2725, 2718, 2713, 371, 892, 2729, 428, - 427, 346, 434, 431, 432, 440, 433, 444, 0, 2727, - 2722, 2713, 472, 7351, 466, 494, 479, 7351, 927, 474, - 958, 2717, 7351, 2711, 2704, 2703, 2702, 2728, 980, 2709, - 465, 468, 2708, 1002, 2699, 1024, 38, 0, 0, 492, - 7351, 0, 722, 0, 505, 1065, 828, 499, 1129, 0, - 544, 2698, 1174, 2697, 1196, 483, 482, 495, 487, 564, - 2683, 519, 7351, 1231, 0, 521, 1262, 759, 7351, 0, - - 1294, 2682, 502, 2669, 2669, 504, 2681, 1326, 2680, 1348, - 523, 67, 1368, 0, 1410, 516, 527, 520, 386, 592, - 248, 530, 580, 529, 489, 631, 7351, 1455, 617, 1486, - 1373, 7351, 0, 1518, 2666, 581, 2664, 2664, 592, 2690, - 2679, 2678, 2677, 2676, 2664, 2663, 2662, 2661, 2645, 1550, - 2644, 1572, 599, 538, 596, 533, 597, 600, 607, 542, - 655, 653, 1405, 0, 1604, 2625, 2624, 2638, 2621, 2620, - 2606, 2612, 2605, 2587, 2591, 2594, 2605, 1636, 2604, 1658, - 613, 636, 654, 666, 668, 686, 697, 602, 692, 658, - 721, 2585, 2587, 2589, 686, 2580, 2558, 2551, 2550, 732, - - 761, 1693, 1728, 755, 760, 1759, 1790, 7351, 2538, 2529, - 2532, 2518, 2554, 2535, 1812, 2534, 1834, 687, 719, 1859, - 1904, 1926, 2556, 7351, 1961, 1243, 1467, 2002, 766, 2065, - 2119, 2160, 2165, 2228, 776, 2291, 2339, 2384, 2406, 2511, - 2517, 2500, 2499, 2502, 793, 802, 2441, 2476, 0, 777, - 778, 2507, 2538, 2488, 2487, 2486, 2477, 2476, 2475, 2474, - 2473, 2563, 2608, 2630, 2514, 2513, 2469, 2468, 2482, 2466, - 2467, 2479, 2470, 2466, 2458, 0, 2458, 808, 826, 2665, - 2700, 827, 860, 2731, 2762, 2442, 2430, 2429, 2427, 2426, - 2425, 2424, 2422, 2794, 2829, 2874, 2896, 2436, 2427, 2431, - - 2429, 2416, 2411, 2414, 2410, 2420, 2407, 739, 2406, 2415, - 2408, 2413, 2406, 2400, 2397, 2382, 2383, 2378, 2405, 2921, - 2966, 2988, 2373, 2360, 2377, 2352, 2361, 2329, 2332, 2317, - 2358, 2327, 2314, 797, 2315, 2245, 2240, 2250, 2237, 825, - 2228, 2232, 2226, 3023, 3054, 2235, 2222, 2226, 2218, 7351, - 3079, 3124, 3146, 2206, 2210, 3171, 3216, 935, 838, 3251, - 3286, 3327, 864, 3381, 3412, 3453, 3501, 3546, 3568, 818, - 859, 860, 2208, 3604, 0, 3635, 7351, 7351, 7351, 7351, - 7351, 7351, 7351, 7351, 7351, 7351, 7351, 7351, 7351, 7351, - 7351, 7351, 3660, 3705, 891, 1322, 3727, 857, 853, 885, - - 2197, 791, 855, 876, 754, 3771, 3802, 7351, 7351, 7351, - 7351, 7351, 7351, 7351, 7351, 7351, 7351, 7351, 7351, 7351, - 7351, 7351, 7351, 3827, 3872, 3894, 899, 2206, 904, 786, - 905, 884, 1201, 918, 921, 936, 489, 2208, 2196, 2192, - 7351, 2199, 2180, 7351, 2181, 2171, 2168, 3919, 3964, 3986, - 2180, 1202, 920, 933, 866, 2170, 2167, 2162, 629, 1235, - 2161, 2159, 2142, 2147, 2140, 2156, 2149, 2130, 2130, 2124, - 2121, 4021, 4052, 2096, 2097, 7351, 2096, 4077, 4122, 4144, - 936, 2115, 4166, 1226, 1388, 1546, 1257, 979, 1632, 4201, - 4242, 4296, 4337, 2107, 4382, 1223, 1254, 1286, 1289, 2085, - - 4418, 0, 4449, 2087, 4471, 1308, 0, 2042, 1688, 2170, - 2177, 1273, 980, 2206, 962, 982, 2086, 983, 1004, 1008, - 1006, 4506, 4537, 2100, 4559, 702, 1169, 939, 1295, 1192, - 1309, 1170, 1362, 1361, 1345, 1242, 1227, 2087, 2093, 2096, - 2091, 2046, 2023, 2021, 2040, 2021, 4581, 1302, 1359, 1365, - 1369, 2020, 1195, 1304, 2001, 2005, 2010, 2004, 1989, 1982, - 1998, 1975, 7351, 1965, 1979, 2001, 1977, 1977, 4603, 1254, - 1371, 1979, 1956, 1439, 7351, 2824, 3768, 1411, 1602, 4638, - 1325, 4669, 2201, 4704, 4735, 1971, 1372, 1970, 969, 1385, - 1956, 0, 1945, 2005, 1483, 1515, 1498, 2436, 1734, 7351, - - 4775, 4782, 1422, 1864, 4811, 1347, 4842, 2660, 1415, 1455, - 1423, 1959, 1958, 1945, 1943, 1372, 1939, 1938, 1497, 1425, - 1499, 1515, 1533, 1519, 1571, 7351, 1925, 7351, 1411, 1931, - 1451, 1925, 7351, 7351, 1904, 1916, 1891, 1895, 1889, 1895, - 1882, 7351, 1874, 1854, 1853, 1167, 1852, 2046, 7351, 1528, - 4789, 4877, 4912, 1549, 4795, 4943, 4974, 1477, 1522, 1560, - 1854, 7351, 1648, 0, 2268, 2184, 7351, 1612, 4809, 5009, - 5044, 1605, 5084, 5109, 5140, 1567, 1652, 1588, 1431, 1614, - 1657, 1842, 1815, 1817, 1796, 1804, 1796, 7351, 1803, 1663, - 7351, 1785, 5089, 1703, 5162, 5104, 1635, 5184, 1729, 1525, - - 1698, 1774, 2272, 1756, 1787, 1802, 5224, 1739, 5240, 5236, - 1810, 5262, 1884, 1772, 1828, 1654, 1758, 1760, 1755, 1754, - 7351, 1738, 1742, 5284, 5306, 1667, 1735, 1581, 1721, 1974, - 0, 2232, 5328, 5350, 1619, 1673, 1732, 1737, 1719, 1724, - 1689, 1703, 1700, 1699, 7351, 2482, 2213, 2706, 7351, 1920, - 1691, 1689, 1675, 1652, 1587, 1542, 7351, 1439, 1398, 7351, - 7351, 5391, 5408, 5425, 5440, 5455, 5460, 5475, 5484, 5501, - 5518, 5535, 5552, 5569, 5584, 5593, 5608, 5615, 5628, 1370, - 5643, 5652, 1298, 5667, 5682, 1268, 5697, 5706, 1025, 5721, - 5730, 5745, 5760, 5775, 5790, 5799, 5808, 5823, 5840, 5857, - - 5874, 5891, 5906, 5923, 5938, 5947, 5962, 5977, 5992, 5999, - 6012, 6027, 6039, 916, 6047, 6062, 6074, 863, 6088, 6103, - 6118, 6133, 6145, 780, 6153, 6168, 6180, 695, 6188, 6203, - 6218, 6233, 6248, 6263, 6272, 6287, 6302, 6319, 6334, 6349, - 6366, 6381, 6396, 6411, 6418, 6431, 6446, 6463, 6480, 6497, - 6514, 6531, 6548, 6565, 6582, 6597, 6612, 6627, 6642, 6659, - 6676, 6693, 6710, 6727, 6744, 6761, 6778, 6793, 6808, 6825, - 6840, 6855, 6870, 6885, 6900, 6907, 6920, 6936, 6947, 6962, - 6977, 6992, 7007, 7016, 7033, 7048, 7063, 7078, 7093, 7108, - 7115, 7128, 7144, 559, 7155, 7170, 7185, 7200, 7215, 7224, - - 7233, 7248, 7263, 7278, 7285, 7299, 7308, 7323, 367, 7339, - 113 - } ; - -static yyconst short int yy_def[1012] = - { 0, - 861, 1, 862, 862, 863, 863, 861, 7, 861, 9, - 9, 11, 861, 13, 864, 864, 864, 17, 11, 19, - 16, 21, 1, 1, 861, 861, 861, 861, 865, 861, - 866, 861, 861, 861, 861, 861, 867, 868, 869, 869, - 861, 870, 870, 871, 870, 872, 872, 873, 874, 872, - 861, 861, 861, 861, 861, 861, 861, 861, 875, 876, - 876, 876, 876, 861, 861, 877, 878, 879, 861, 861, - 880, 861, 861, 73, 861, 881, 882, 882, 882, 883, - 861, 81, 882, 882, 882, 882, 882, 882, 882, 882, - 884, 885, 861, 886, 861, 861, 96, 96, 96, 96, - - 96, 96, 96, 96, 96, 887, 888, 888, 888, 888, - 888, 888, 888, 888, 888, 861, 889, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 890, 891, 891, - 891, 891, 891, 891, 891, 891, 891, 891, 96, 861, - 861, 861, 861, 861, 861, 861, 865, 861, 892, 893, - 894, 861, 861, 861, 861, 861, 861, 861, 895, 896, - 896, 896, 897, 897, 897, 898, 897, 899, 900, 900, - 861, 901, 902, 901, 903, 861, 904, 905, 861, 901, - 861, 906, 906, 906, 907, 906, 906, 906, 906, 861, - 861, 908, 861, 909, 910, 911, 912, 913, 861, 914, - - 861, 861, 861, 861, 861, 861, 915, 915, 915, 916, - 915, 915, 917, 918, 861, 915, 915, 915, 915, 915, - 915, 915, 915, 915, 915, 919, 861, 920, 921, 922, - 923, 861, 924, 861, 861, 861, 861, 861, 861, 234, - 234, 234, 234, 234, 234, 234, 234, 234, 925, 925, - 925, 926, 925, 925, 925, 925, 925, 925, 925, 925, - 925, 925, 927, 928, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 929, 929, 929, 930, - 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, - 929, 861, 861, 861, 861, 861, 861, 861, 861, 931, - - 931, 931, 932, 933, 933, 933, 934, 861, 861, 861, - 861, 861, 861, 935, 935, 935, 936, 935, 935, 861, - 320, 320, 321, 861, 937, 938, 938, 938, 939, 861, - 940, 941, 941, 941, 942, 861, 861, 337, 337, 338, - 338, 338, 338, 861, 943, 943, 943, 944, 945, 946, - 946, 946, 947, 948, 949, 950, 951, 952, 953, 954, - 955, 861, 362, 362, 363, 363, 363, 363, 363, 363, - 363, 363, 363, 363, 363, 363, 363, 956, 956, 956, - 957, 958, 958, 958, 959, 960, 961, 962, 963, 964, - 965, 966, 967, 861, 861, 395, 395, 396, 396, 396, - - 396, 396, 396, 396, 396, 396, 396, 396, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 420, 420, 421, 421, 421, 421, 421, 421, 421, 421, - 421, 421, 421, 421, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 968, 969, 861, 861, 861, 861, 861, - 861, 451, 451, 452, 452, 861, 456, 970, 971, 971, - 972, 861, 973, 973, 974, 861, 861, 467, 467, 469, - 469, 469, 861, 975, 976, 977, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 493, 978, 979, 493, 497, 497, 497, - - 497, 497, 497, 497, 497, 980, 981, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 524, 524, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 548, 548, - 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, - 550, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 982, 983, 861, 861, 861, 861, 861, 578, 578, - 580, 984, 984, 985, 985, 985, 986, 987, 985, 988, - 861, 989, 861, 469, 469, 469, 469, 469, 469, 861, - - 990, 991, 992, 497, 493, 993, 994, 993, 995, 995, - 995, 996, 997, 995, 497, 497, 497, 497, 497, 497, - 497, 998, 999, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 861, 861, 861, - 861, 861, 861, 861, 861, 1001, 1001, 1001, 1001, 1001, - 1001, 1001, 1001, 1001, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 580, 580, 580, - 580, 984, 985, 861, 861, 985, 985, 986, 861, 1002, - 987, 1003, 985, 1004, 989, 469, 469, 469, 469, 469, - 861, 1005, 497, 994, 861, 861, 1006, 995, 861, 861, - - 995, 995, 996, 861, 1007, 997, 1008, 995, 497, 497, - 497, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 861, 861, 861, 861, 861, - 861, 1001, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 580, 580, 580, 861, 861, 986, - 986, 986, 1002, 987, 987, 987, 1003, 469, 469, 469, - 861, 861, 1006, 1009, 763, 861, 861, 996, 996, 996, - 1007, 997, 997, 997, 1008, 497, 497, 497, 1000, 1000, - 1000, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 580, 986, 986, 752, 987, 987, 756, 469, 469, - - 469, 861, 1009, 861, 861, 1010, 996, 996, 770, 997, - 997, 774, 497, 497, 497, 1000, 861, 861, 861, 861, - 861, 861, 861, 752, 756, 469, 469, 469, 861, 1010, - 1011, 830, 770, 774, 497, 1000, 861, 861, 861, 861, - 861, 861, 469, 469, 861, 1011, 861, 861, 861, 497, - 1000, 861, 861, 861, 861, 861, 861, 497, 861, 861, - 0, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861 - } ; - -static yyconst short int yy_nxt[7416] = - { 0, - 26, 27, 28, 27, 27, 26, 29, 30, 26, 26, - 31, 26, 26, 26, 26, 30, 32, 33, 34, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 35, - 30, 36, 26, 37, 38, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 40, 39, 39, 39, 39, - 39, 41, 26, 39, 43, 43, 47, 144, 148, 47, - 48, 144, 166, 48, 49, 44, 44, 49, 148, 145, - 45, 45, 50, 145, 323, 50, 146, 146, 146, 146, - 146, 146, 146, 146, 51, 154, 149, 51, 159, 166, - - 155, 210, 151, 170, 161, 185, 156, 162, 171, 181, - 181, 181, 181, 366, 189, 210, 157, 167, 181, 181, - 181, 181, 211, 846, 210, 52, 53, 223, 52, 53, - 26, 54, 55, 54, 54, 26, 26, 56, 26, 26, - 26, 26, 26, 26, 56, 56, 56, 26, 57, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 58, - 56, 26, 26, 26, 59, 60, 61, 60, 60, 60, - 62, 60, 60, 60, 60, 60, 63, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 26, 64, 60, 26, 54, 55, 54, 54, 65, - - 66, 67, 26, 26, 68, 69, 69, 26, 70, 70, - 70, 71, 72, 73, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 70, 75, 26, 26, 26, 76, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 78, 77, 77, 79, - 77, 77, 77, 77, 77, 26, 64, 77, 26, 26, - 193, 185, 186, 185, 80, 193, 81, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 187, 210, 188, 210, - 210, 210, 210, 83, 84, 217, 210, 85, 194, 197, - 218, 219, 216, 86, 252, 87, 259, 212, 373, 88, - - 89, 90, 26, 54, 55, 54, 54, 65, 91, 26, - 26, 26, 92, 26, 26, 26, 93, 93, 26, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 93, 75, 26, 26, 26, 106, 107, 108, 107, - 107, 107, 107, 107, 107, 109, 107, 107, 110, 111, - 112, 113, 107, 107, 107, 114, 107, 107, 107, 107, - 115, 107, 107, 26, 64, 107, 54, 55, 54, 54, - 65, 252, 172, 172, 172, 172, 257, 803, 174, 116, - 280, 116, 117, 34, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 284, 75, 210, 190, 190, 210, - - 190, 221, 175, 211, 210, 222, 176, 227, 172, 172, - 172, 172, 227, 119, 220, 252, 255, 252, 174, 224, - 210, 275, 225, 276, 256, 252, 370, 64, 54, 55, - 54, 54, 65, 175, 175, 228, 230, 254, 178, 191, - 253, 116, 179, 116, 117, 34, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 252, 75, 261, 252, - 268, 280, 280, 281, 269, 280, 280, 280, 280, 178, - 178, 258, 260, 285, 280, 119, 252, 282, 280, 283, - 286, 288, 290, 289, 148, 148, 291, 287, 295, 64, - 54, 55, 54, 54, 65, 146, 146, 146, 146, 317, - - 262, 297, 317, 93, 93, 170, 155, 34, 151, 324, - 171, 324, 298, 149, 318, 319, 185, 185, 93, 75, - 340, 185, 299, 210, 377, 193, 120, 121, 251, 185, - 296, 193, 122, 331, 341, 123, 637, 124, 125, 325, - 343, 359, 126, 342, 127, 181, 181, 181, 181, 355, - 210, 64, 26, 194, 210, 197, 26, 210, 360, 365, - 356, 210, 361, 210, 210, 190, 190, 252, 190, 694, - 367, 374, 252, 399, 401, 368, 252, 405, 369, 376, - 128, 129, 129, 129, 130, 129, 129, 131, 129, 132, - 129, 129, 129, 133, 134, 135, 129, 129, 136, 137, - - 138, 129, 129, 129, 129, 129, 129, 191, 371, 129, - 93, 93, 26, 94, 210, 96, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 93, 210, 227, 387, 391, - 252, 252, 375, 252, 252, 402, 280, 227, 431, 388, - 372, 252, 140, 141, 26, 398, 392, 280, 400, 142, - 393, 230, 403, 404, 143, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 228, 423, 556, 279, 408, - 280, 164, 164, 164, 164, 164, 164, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 252, 280, 252, - 424, 425, 280, 183, 183, 183, 183, 183, 183, 199, - - 280, 406, 280, 426, 433, 263, 428, 200, 407, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 427, - 280, 317, 172, 172, 172, 172, 280, 202, 174, 203, - 432, 280, 438, 204, 429, 454, 252, 205, 148, 439, - 206, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 430, 175, 317, 713, 280, 176, 208, 208, 208, - 208, 208, 208, 199, 434, 148, 149, 148, 199, 455, - 148, 214, 324, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 175, 175, 536, 324, 193, 193, 151, - 231, 202, 537, 203, 151, 149, 202, 204, 203, 193, - - 325, 205, 204, 209, 206, 232, 205, 621, 193, 206, - 331, 197, 197, 233, 227, 234, 234, 234, 234, 234, - 234, 234, 234, 234, 234, 251, 619, 194, 172, 172, - 172, 172, 227, 235, 560, 236, 194, 227, 174, 237, - 209, 630, 228, 238, 324, 561, 239, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 597, 178, 184, - 228, 230, 179, 250, 250, 250, 250, 250, 250, 232, - 227, 567, 325, 213, 324, 598, 599, 264, 568, 265, - 265, 265, 265, 265, 265, 265, 265, 265, 265, 178, - 178, 617, 606, 606, 230, 606, 616, 235, 331, 236, - - 184, 184, 209, 237, 209, 279, 209, 238, 607, 376, - 239, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 653, 620, 251, 618, 209, 198, 278, 278, 278, - 278, 278, 278, 301, 209, 632, 585, 586, 251, 586, - 631, 587, 627, 251, 251, 588, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 635, 251, 629, 279, - 251, 303, 302, 302, 302, 302, 302, 302, 305, 589, - 634, 636, 279, 252, 316, 251, 651, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 652, 671, 679, - 704, 715, 307, 306, 306, 306, 306, 306, 306, 315, - - 315, 315, 315, 315, 315, 315, 315, 315, 315, 376, - 184, 209, 759, 682, 707, 315, 315, 315, 315, 315, - 315, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 209, 209, 709, 376, 263, 166, 320, 320, 320, - 320, 320, 320, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 209, 617, 209, 711, 209, 710, 322, - 322, 322, 322, 322, 322, 172, 172, 172, 172, 326, - 326, 327, 326, 326, 326, 326, 326, 326, 326, 326, - 326, 326, 326, 326, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 326, 329, 326, 326, 326, 330, - - 328, 328, 328, 328, 328, 328, 326, 326, 326, 326, - 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - 326, 326, 326, 326, 326, 326, 329, 329, 326, 172, - 172, 172, 172, 332, 332, 332, 332, 332, 332, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 332, 335, - 332, 332, 332, 336, 334, 334, 334, 334, 334, 334, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 335, 335, 332, 337, 337, 337, 337, 337, 337, 337, - - 337, 337, 337, 252, 252, 316, 714, 792, 185, 337, - 337, 337, 337, 337, 337, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 719, 252, 673, 674, 280, - 674, 339, 339, 339, 339, 339, 339, 346, 675, 717, - 251, 279, 561, 172, 172, 172, 172, 633, 650, 174, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 589, 252, 725, 679, 184, 348, 347, 347, 347, 347, - 347, 347, 351, 175, 279, 687, 252, 176, 231, 704, - 561, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 680, 316, 746, 724, 184, 353, 352, 352, 352, - - 352, 352, 352, 199, 175, 175, 688, 705, 213, 606, - 606, 200, 606, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 610, 611, 607, 611, 184, 612, 252, - 184, 202, 613, 203, 716, 679, 280, 204, 280, 689, - 556, 205, 690, 252, 206, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 718, 614, 704, 652, 682, - 210, 362, 362, 362, 362, 362, 362, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 199, 720, 252, - 198, 707, 232, 364, 364, 364, 364, 364, 364, 676, - 677, 723, 677, 280, 587, 252, 252, 556, 588, 280, - - 675, 721, 722, 280, 556, 202, 252, 203, 652, 316, - 235, 204, 236, 184, 232, 205, 237, 679, 206, 199, - 238, 758, 589, 239, 713, 747, 184, 214, 704, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 760, - 674, 674, 235, 674, 236, 680, 782, 202, 237, 203, - 860, 675, 238, 204, 776, 239, 705, 205, 778, 252, - 206, 379, 779, 783, 209, 252, 816, 172, 172, 172, - 172, 777, 209, 174, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 695, 695, 784, 695, 209, 381, - 380, 380, 380, 380, 380, 380, 383, 175, 697, 763, - - 763, 176, 763, 785, 209, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 764, 695, 695, 184, 695, - 385, 384, 384, 384, 384, 384, 384, 232, 175, 175, - 697, 252, 799, 252, 679, 233, 714, 234, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 585, 586, 252, - 586, 715, 587, 252, 715, 235, 588, 236, 861, 679, - 780, 237, 680, 184, 827, 238, 184, 252, 239, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 717, - 589, 859, 800, 682, 252, 395, 395, 395, 395, 395, - 395, 397, 397, 397, 397, 397, 397, 397, 397, 397, - - 397, 184, 813, 748, 748, 252, 748, 397, 397, 397, - 397, 397, 397, 232, 749, 704, 209, 781, 704, 801, - 844, 264, 184, 265, 265, 265, 265, 265, 265, 265, - 265, 265, 265, 673, 674, 541, 673, 209, 584, 707, - 815, 235, 584, 236, 683, 679, 705, 237, 252, 763, - 763, 238, 763, 715, 239, 420, 420, 420, 420, 420, - 420, 420, 420, 420, 420, 764, 589, 850, 209, 682, - 280, 420, 420, 420, 420, 420, 420, 422, 422, 422, - 422, 422, 422, 422, 422, 422, 422, 541, 252, 698, - 699, 252, 699, 422, 422, 422, 422, 422, 422, 148, - - 700, 209, 822, 717, 836, 843, 823, 252, 184, 679, - 814, 814, 444, 444, 444, 444, 444, 444, 444, 444, - 444, 444, 614, 541, 541, 252, 851, 149, 444, 444, - 444, 444, 444, 444, 301, 699, 699, 680, 699, 184, - 184, 184, 857, 856, 828, 704, 700, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 804, 804, 855, - 804, 854, 303, 302, 302, 302, 302, 302, 302, 148, - 184, 806, 853, 705, 852, 845, 184, 826, 445, 445, - 445, 445, 445, 445, 445, 445, 445, 445, 804, 804, - 842, 804, 841, 151, 445, 445, 445, 445, 445, 445, - - 305, 840, 806, 830, 830, 839, 830, 838, 837, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 831, - 704, 209, 829, 316, 307, 306, 306, 306, 306, 306, - 306, 451, 451, 451, 451, 451, 451, 451, 451, 451, - 451, 821, 734, 733, 707, 820, 317, 451, 451, 451, - 451, 451, 451, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 819, 818, 766, 766, 835, 766, 453, - 453, 453, 453, 453, 453, 165, 767, 209, 456, 456, - 456, 456, 456, 456, 456, 456, 456, 456, 817, 802, - 316, 316, 791, 166, 456, 456, 456, 456, 456, 456, - - 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, - 790, 789, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 165, 165, 209, 788, 787, 786, 734, 814, 165, - 165, 165, 165, 165, 165, 457, 457, 457, 457, 457, - 457, 457, 457, 457, 457, 733, 733, 673, 674, 280, - 674, 457, 457, 457, 457, 457, 457, 459, 675, 209, - 728, 541, 252, 252, 858, 830, 830, 252, 830, 252, - 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, - 589, 831, 252, 252, 209, 461, 460, 460, 460, 460, - - 460, 460, 172, 172, 172, 172, 695, 695, 174, 695, - 761, 184, 184, 166, 696, 316, 744, 743, 742, 741, - 697, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 462, 740, 175, 739, 738, 737, 176, 462, 462, 462, - 462, 462, 462, 695, 695, 736, 695, 748, 748, 735, - 748, 696, 734, 733, 280, 280, 731, 697, 749, 607, - 541, 730, 729, 175, 175, 172, 172, 172, 172, 326, - 326, 327, 326, 326, 326, 326, 326, 326, 326, 326, - 326, 326, 326, 326, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 326, 329, 326, 326, 326, 330, - - 328, 328, 328, 328, 328, 328, 326, 326, 326, 326, - 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - 326, 326, 326, 326, 326, 326, 329, 329, 326, 463, - 728, 727, 541, 726, 252, 209, 209, 691, 464, 464, - 464, 464, 464, 464, 464, 464, 464, 464, 184, 166, - 667, 666, 665, 465, 464, 464, 464, 464, 464, 464, - 172, 172, 172, 172, 664, 172, 172, 172, 172, 663, - 174, 701, 702, 662, 702, 174, 612, 661, 610, 611, - 613, 611, 700, 612, 660, 766, 766, 613, 766, 861, - 178, 659, 658, 657, 179, 178, 767, 656, 655, 179, - - 279, 652, 673, 674, 614, 674, 654, 698, 699, 279, - 698, 614, 609, 675, 847, 847, 609, 847, 708, 649, - 645, 178, 178, 644, 643, 849, 178, 178, 172, 172, - 172, 172, 642, 847, 847, 589, 847, 641, 174, 640, - 614, 848, 639, 638, 849, 628, 209, 466, 466, 466, - 466, 466, 466, 466, 466, 466, 466, 600, 178, 581, - 580, 577, 179, 466, 466, 466, 466, 466, 466, 804, - 804, 576, 804, 804, 804, 575, 804, 805, 574, 571, - 570, 805, 569, 806, 566, 565, 564, 806, 563, 178, - 178, 172, 172, 172, 172, 332, 332, 332, 332, 332, - - 332, 333, 332, 332, 332, 332, 332, 332, 332, 332, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 332, 335, 332, 332, 332, 336, 334, 334, 334, 334, - 334, 334, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 335, 335, 332, 184, 562, 559, 467, 467, - 467, 467, 467, 467, 467, 467, 467, 467, 558, 495, - 557, 556, 555, 185, 467, 467, 467, 467, 467, 467, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - - 554, 553, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 552, 551, 550, 496, 547, 546, 184, - 184, 184, 184, 184, 184, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 545, 544, 698, 699, 543, - 699, 468, 468, 468, 468, 468, 468, 193, 700, 542, - 541, 540, 539, 538, 535, 534, 533, 532, 531, 530, - 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, - 614, 529, 528, 527, 526, 194, 474, 474, 474, 474, - 474, 474, 346, 847, 847, 523, 847, 521, 519, 517, - 515, 848, 513, 511, 849, 347, 347, 347, 347, 347, - - 347, 347, 347, 347, 347, 509, 505, 504, 503, 502, - 348, 347, 347, 347, 347, 347, 347, 193, 501, 500, - 376, 499, 498, 497, 496, 495, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 492, 490, 488, 486, - 484, 197, 476, 476, 476, 476, 476, 476, 351, 482, - 480, 478, 473, 472, 471, 470, 469, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 458, 317, 317, - 450, 449, 353, 352, 352, 352, 352, 352, 352, 209, - 448, 447, 493, 493, 493, 493, 493, 493, 493, 493, - 493, 493, 446, 443, 442, 441, 440, 210, 493, 493, - - 493, 493, 493, 493, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 437, 436, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 435, 280, 280, - 419, 418, 417, 209, 209, 209, 209, 209, 209, 494, - 494, 494, 494, 494, 494, 494, 494, 494, 494, 416, - 415, 698, 699, 414, 699, 494, 494, 494, 494, 494, - 494, 227, 700, 413, 412, 411, 410, 409, 252, 252, - 394, 394, 394, 394, 506, 506, 506, 506, 506, 506, - 506, 506, 506, 506, 614, 394, 394, 394, 394, 228, - - 506, 506, 506, 506, 506, 506, 379, 847, 847, 394, - 847, 390, 389, 386, 210, 210, 358, 357, 849, 380, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 354, - 344, 185, 185, 166, 381, 380, 380, 380, 380, 380, - 380, 227, 166, 317, 313, 312, 311, 310, 309, 308, - 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, - 294, 293, 292, 280, 274, 230, 507, 507, 507, 507, - 507, 507, 383, 273, 272, 271, 270, 267, 266, 252, - 248, 384, 384, 384, 384, 384, 384, 384, 384, 384, - 384, 247, 246, 245, 244, 243, 385, 384, 384, 384, - - 384, 384, 384, 232, 242, 241, 240, 153, 210, 153, - 185, 233, 153, 234, 234, 234, 234, 234, 234, 234, - 234, 234, 234, 180, 153, 676, 677, 166, 677, 158, - 587, 235, 153, 236, 588, 152, 675, 237, 861, 861, - 861, 238, 861, 861, 239, 251, 861, 861, 524, 524, - 524, 524, 524, 524, 524, 524, 524, 524, 589, 861, - 861, 861, 861, 252, 524, 524, 524, 524, 524, 524, - 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, - 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, - 861, 861, 251, 251, 251, 251, 251, 251, 251, 251, - - 251, 251, 251, 861, 861, 861, 861, 861, 861, 251, - 251, 251, 251, 251, 251, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 861, 861, 861, 861, 861, - 861, 525, 525, 525, 525, 525, 525, 279, 861, 861, - 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, - 861, 861, 861, 861, 861, 280, 548, 548, 548, 548, - 548, 548, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 861, 861, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 861, 861, 861, 861, 861, - - 861, 279, 279, 279, 279, 279, 279, 549, 549, 549, - 549, 549, 549, 549, 549, 549, 549, 861, 861, 861, - 861, 861, 861, 549, 549, 549, 549, 549, 549, 148, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 572, 572, 572, 572, 572, 572, 572, 572, - 572, 572, 861, 861, 861, 861, 861, 149, 572, 572, - 572, 572, 572, 572, 148, 861, 861, 861, 861, 861, - 861, 861, 861, 573, 573, 573, 573, 573, 573, 573, - 573, 573, 573, 861, 861, 861, 861, 861, 151, 573, - 573, 573, 573, 573, 573, 316, 861, 861, 578, 578, - - 578, 578, 578, 578, 578, 578, 578, 578, 861, 861, - 861, 861, 861, 317, 578, 578, 578, 578, 578, 578, - 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 861, 861, 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 861, 861, 861, 861, 861, 861, 316, - 316, 316, 316, 316, 316, 579, 579, 579, 579, 579, - 579, 579, 579, 579, 579, 861, 861, 861, 861, 861, - 861, 579, 579, 579, 579, 579, 579, 165, 861, 861, - 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, - - 861, 861, 861, 861, 861, 166, 582, 582, 582, 582, - 582, 582, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 165, 861, 861, 165, 583, 583, 583, 583, 583, - 583, 583, 583, 583, 583, 861, 861, 861, 861, 861, - 861, 583, 583, 583, 583, 583, 583, 324, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, - 861, 861, 861, 861, 861, 325, 590, 590, 590, 590, - 590, 590, 459, 861, 861, 861, 861, 861, 861, 861, - - 861, 861, 861, 861, 861, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 861, 861, 861, 861, 861, - 461, 460, 460, 460, 460, 460, 460, 172, 172, 172, - 172, 173, 173, 174, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 591, 591, 591, 591, - 591, 591, 591, 591, 591, 591, 173, 175, 173, 173, - 173, 176, 591, 591, 591, 591, 591, 591, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 175, 175, - 173, 324, 861, 861, 861, 861, 861, 861, 861, 861, - - 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, - 861, 861, 861, 861, 861, 331, 592, 592, 592, 592, - 592, 592, 463, 861, 861, 861, 861, 861, 861, 861, - 861, 464, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 861, 861, 861, 861, 861, 465, 464, 464, 464, - 464, 464, 464, 172, 172, 172, 172, 177, 177, 177, - 177, 177, 177, 174, 177, 177, 177, 177, 177, 177, - 177, 177, 593, 593, 593, 593, 593, 593, 593, 593, - 593, 593, 177, 178, 177, 177, 177, 179, 593, 593, - 593, 593, 593, 593, 177, 177, 177, 177, 177, 177, - - 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 178, 178, 177, 184, 861, 861, - 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, - 861, 861, 861, 861, 861, 185, 594, 594, 594, 594, - 594, 594, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 861, 861, 184, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 595, 861, 861, 861, 861, 861, - 861, 595, 595, 595, 595, 595, 595, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 861, 861, 861, - - 861, 861, 861, 184, 184, 184, 184, 184, 184, 596, - 193, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 601, 601, 601, 601, 601, 601, 601, - 601, 601, 601, 861, 861, 861, 861, 861, 194, 601, - 601, 601, 601, 601, 601, 193, 861, 861, 861, 861, - 861, 861, 861, 861, 603, 603, 603, 603, 603, 603, - 603, 603, 603, 603, 861, 861, 861, 861, 861, 197, - 603, 603, 603, 603, 603, 603, 209, 861, 861, 604, - 604, 604, 604, 604, 604, 604, 604, 604, 604, 861, - 861, 861, 861, 861, 210, 604, 604, 604, 604, 604, - - 604, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 861, 861, 209, 605, 605, 605, 605, 605, 605, - 605, 605, 605, 605, 861, 861, 861, 861, 861, 861, - 605, 605, 605, 605, 605, 605, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 861, 861, 861, 861, - 861, 861, 209, 209, 209, 209, 209, 209, 861, 676, - 677, 861, 677, 861, 587, 861, 615, 227, 588, 861, - 675, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, - - 861, 861, 589, 861, 861, 228, 622, 622, 622, 622, - 622, 622, 227, 861, 861, 861, 861, 861, 861, 861, - 861, 623, 623, 623, 623, 623, 623, 623, 623, 623, - 623, 861, 861, 861, 861, 861, 230, 623, 623, 623, - 623, 623, 623, 251, 861, 861, 624, 624, 624, 624, - 624, 624, 624, 624, 624, 624, 861, 861, 861, 861, - 861, 252, 624, 624, 624, 624, 624, 624, 251, 251, - 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, - 251, 251, 251, 251, 251, 251, 251, 251, 861, 861, - 251, 625, 625, 625, 625, 625, 625, 625, 625, 625, - - 625, 861, 861, 861, 861, 861, 861, 625, 625, 625, - 625, 625, 625, 251, 251, 251, 251, 251, 251, 251, - 251, 251, 251, 861, 861, 861, 861, 861, 861, 251, - 251, 251, 251, 626, 251, 279, 861, 861, 646, 646, - 646, 646, 646, 646, 646, 646, 646, 646, 861, 861, - 861, 861, 861, 280, 646, 646, 646, 646, 646, 646, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 861, 861, 279, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 861, 861, 861, 861, 861, 861, 647, - - 647, 647, 647, 647, 647, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 861, 861, 861, 861, 861, - 861, 279, 279, 279, 279, 648, 279, 148, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 861, 861, 861, 861, 861, 149, 300, 300, 300, 300, - 300, 300, 148, 861, 861, 861, 861, 861, 861, 861, - 861, 304, 304, 304, 304, 304, 304, 304, 304, 304, - 304, 861, 861, 861, 861, 861, 151, 304, 304, 304, - 304, 304, 304, 316, 861, 861, 668, 668, 668, 668, - - 668, 668, 668, 668, 668, 668, 861, 861, 861, 861, - 861, 317, 668, 668, 668, 668, 668, 668, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, 861, 861, - 316, 669, 669, 669, 669, 669, 669, 669, 669, 669, - 669, 861, 861, 861, 861, 861, 861, 669, 669, 669, - 669, 669, 669, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 861, 861, 861, 861, 861, 861, 316, - 316, 316, 670, 316, 316, 672, 672, 672, 672, 672, - 672, 672, 672, 672, 672, 861, 861, 861, 861, 861, - - 166, 672, 672, 672, 672, 672, 672, 324, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, - 861, 861, 861, 861, 861, 325, 684, 684, 684, 684, - 684, 684, 172, 172, 172, 172, 173, 173, 174, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 326, 326, 326, 326, 326, 326, 326, 326, 326, - 326, 173, 175, 173, 173, 173, 176, 326, 326, 326, - 326, 326, 326, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 175, 175, 173, 324, 861, 861, 861, - 861, 861, 861, 861, 861, 685, 685, 685, 685, 685, - 685, 685, 685, 685, 685, 861, 861, 861, 861, 861, - 331, 685, 685, 685, 685, 685, 685, 172, 172, 172, - 172, 177, 177, 177, 177, 177, 177, 174, 177, 177, - 177, 177, 177, 177, 177, 177, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 177, 178, 177, 177, - 177, 179, 332, 332, 332, 332, 332, 332, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 178, 178, - - 177, 686, 686, 686, 686, 686, 686, 686, 686, 686, - 686, 861, 861, 861, 861, 861, 861, 686, 686, 686, - 686, 686, 686, 184, 193, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 861, 861, 861, - 861, 861, 194, 345, 345, 345, 345, 345, 345, 193, - 861, 861, 861, 861, 861, 861, 861, 861, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 861, 861, - 861, 861, 861, 197, 350, 350, 350, 350, 350, 350, - 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, - - 861, 861, 861, 861, 861, 861, 693, 693, 693, 693, - 693, 693, 227, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 861, 861, 861, 861, 861, - 228, 378, 378, 378, 378, 378, 378, 227, 861, 861, - 861, 861, 861, 861, 861, 861, 382, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 861, 861, 861, 861, - 861, 230, 382, 382, 382, 382, 382, 382, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 712, 861, 861, - 861, 861, 861, 252, 712, 712, 712, 712, 712, 712, - - 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, - 861, 861, 861, 861, 861, 280, 732, 732, 732, 732, - 732, 732, 745, 745, 745, 745, 745, 745, 745, 745, - 745, 745, 861, 861, 861, 861, 861, 861, 745, 745, - 745, 745, 745, 745, 751, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 752, 752, 752, - 752, 752, 752, 752, 752, 752, 752, 861, 861, 861, - 861, 861, 753, 752, 752, 752, 752, 752, 752, 755, - 861, 861, 861, 861, 861, 861, 861, 861, 756, 756, - 756, 756, 756, 756, 756, 756, 756, 756, 861, 861, - - 861, 861, 861, 757, 756, 756, 756, 756, 756, 756, - 324, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 861, 861, 861, 861, 861, 325, 329, - 329, 329, 329, 329, 329, 324, 861, 861, 861, 861, - 861, 861, 861, 861, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 861, 861, 861, 861, 861, 331, - 335, 335, 335, 335, 335, 335, 701, 702, 861, 702, - 861, 612, 861, 701, 702, 613, 702, 700, 612, 861, - 748, 748, 613, 793, 700, 679, 748, 748, 861, 796, - - 861, 794, 861, 861, 861, 679, 861, 797, 861, 614, - 766, 766, 861, 807, 861, 704, 614, 769, 861, 861, - 861, 808, 861, 680, 861, 861, 861, 861, 861, 682, - 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, - 861, 861, 861, 705, 861, 771, 770, 770, 770, 770, - 770, 770, 773, 861, 861, 861, 861, 861, 861, 861, - 861, 774, 774, 774, 774, 774, 774, 774, 774, 774, - 774, 861, 861, 861, 861, 861, 775, 774, 774, 774, - 774, 774, 774, 679, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 795, 795, 795, 795, - - 795, 795, 795, 795, 795, 795, 861, 861, 861, 861, - 861, 680, 795, 795, 795, 795, 795, 795, 751, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 752, 752, 752, 752, 752, 752, 752, 752, 752, - 752, 861, 861, 861, 861, 861, 753, 752, 752, 752, - 752, 752, 752, 679, 861, 861, 861, 861, 861, 861, - 861, 861, 798, 798, 798, 798, 798, 798, 798, 798, - 798, 798, 861, 861, 861, 861, 861, 682, 798, 798, - 798, 798, 798, 798, 755, 861, 861, 861, 861, 861, - 861, 861, 861, 756, 756, 756, 756, 756, 756, 756, - - 756, 756, 756, 861, 861, 861, 861, 861, 757, 756, - 756, 756, 756, 756, 756, 704, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 809, 809, - 809, 809, 809, 809, 809, 809, 809, 809, 861, 861, - 861, 861, 861, 705, 809, 809, 809, 809, 809, 809, - 769, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 770, 770, 770, 770, 770, 770, 770, - 770, 770, 770, 861, 861, 861, 861, 861, 771, 770, - 770, 770, 770, 770, 770, 766, 766, 861, 810, 861, - 748, 748, 861, 793, 704, 679, 811, 861, 861, 861, - - 861, 794, 861, 861, 861, 748, 748, 861, 796, 861, - 861, 861, 861, 861, 679, 861, 797, 861, 707, 704, - 861, 861, 861, 680, 861, 861, 861, 861, 812, 812, - 812, 812, 812, 812, 812, 812, 812, 812, 682, 861, - 861, 861, 861, 707, 812, 812, 812, 812, 812, 812, - 773, 861, 861, 861, 861, 861, 861, 861, 861, 774, - 774, 774, 774, 774, 774, 774, 774, 774, 774, 861, - 861, 861, 861, 861, 775, 774, 774, 774, 774, 774, - 774, 824, 824, 824, 824, 824, 824, 824, 824, 824, - 824, 861, 861, 861, 861, 861, 861, 824, 824, 824, - - 824, 824, 824, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 861, 861, 861, 861, 861, 861, 825, - 825, 825, 825, 825, 825, 766, 766, 861, 807, 861, - 704, 861, 861, 861, 861, 861, 808, 766, 766, 861, - 810, 861, 861, 861, 861, 861, 704, 861, 811, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 705, 833, - 833, 833, 833, 833, 833, 833, 833, 833, 833, 861, - 707, 861, 861, 861, 861, 833, 833, 833, 833, 833, - 833, 834, 834, 834, 834, 834, 834, 834, 834, 834, - 834, 861, 861, 861, 861, 861, 861, 834, 834, 834, - - 834, 834, 834, 750, 750, 750, 750, 750, 750, 750, - 750, 750, 750, 861, 861, 861, 861, 861, 861, 750, - 750, 750, 750, 750, 750, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 861, 861, 861, 861, 861, - 861, 754, 754, 754, 754, 754, 754, 768, 768, 768, - 768, 768, 768, 768, 768, 768, 768, 861, 861, 861, - 861, 861, 861, 768, 768, 768, 768, 768, 768, 772, - 772, 772, 772, 772, 772, 772, 772, 772, 772, 861, - 861, 861, 861, 861, 861, 772, 772, 772, 772, 772, - 772, 42, 42, 42, 42, 42, 42, 42, 42, 42, - - 42, 42, 42, 42, 42, 42, 42, 42, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 160, 160, 160, 160, 160, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 165, 861, 165, 861, 165, 165, 165, 165, - - 165, 168, 168, 168, 168, 168, 168, 168, 861, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 169, 169, - 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 169, 169, 169, 169, 169, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 861, 172, 172, 172, - 172, 172, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, - - 182, 184, 861, 184, 861, 184, 184, 184, 184, 184, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 195, 861, 861, 195, 195, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 209, 861, 209, 861, 209, 209, 209, 209, 209, 226, - 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 249, - - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 251, 861, 251, 861, 251, 251, - 251, 251, 251, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 279, 861, - 279, 861, 279, 279, 279, 279, 279, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 304, 304, 304, - 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, - 304, 304, 314, 314, 314, 314, 314, 314, 314, 314, - - 314, 314, 314, 314, 314, 314, 314, 316, 861, 316, - 861, 316, 316, 316, 316, 316, 165, 861, 165, 861, - 165, 165, 165, 165, 165, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 168, 168, 168, 168, 168, 168, 168, 861, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 169, 169, 169, - 169, 169, 169, 169, 861, 169, 861, 169, 169, 169, - 169, 169, 169, 169, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 861, 172, 172, 172, 172, - 172, 173, 173, 173, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 184, 861, 184, 861, 184, - 184, 184, 184, 184, 338, 338, 338, 338, 338, 338, - 338, 338, 338, 338, 338, 338, 338, 338, 338, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 345, 345, 345, 345, 345, 345, - - 345, 345, 345, 345, 345, 345, 345, 345, 345, 349, - 861, 861, 349, 349, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 198, 861, 861, 861, 861, 198, - 861, 861, 861, 198, 198, 209, 861, 209, 861, 209, - 209, 209, 209, 209, 363, 363, 363, 363, 363, 363, - 363, 363, 363, 363, 363, 363, 363, 363, 363, 213, - 861, 861, 861, 861, 213, 861, 861, 861, 213, 213, - 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - - 226, 226, 226, 226, 226, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 382, 382, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, - 231, 861, 861, 861, 861, 231, 861, 861, 861, 231, - 231, 251, 861, 251, 861, 251, 251, 251, 251, 251, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 263, 861, 861, 861, 861, - 263, 861, 861, 861, 263, 263, 279, 861, 279, 861, - - 279, 279, 279, 279, 279, 421, 421, 421, 421, 421, - 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 304, 304, 304, 304, 304, - 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, - 316, 861, 316, 861, 316, 316, 316, 316, 316, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - - 452, 452, 452, 452, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 177, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 192, 192, - - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 475, 861, - 861, 475, 475, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 477, 477, 477, 477, 477, 477, 477, - 477, 861, 477, 861, 477, 861, 861, 861, 861, 477, - 479, 479, 479, 479, 479, 479, 479, 479, 861, 479, - 861, 479, 861, 861, 861, 861, 479, 481, 481, 481, - - 481, 481, 481, 481, 481, 861, 481, 861, 481, 861, - 861, 861, 861, 481, 483, 483, 483, 483, 483, 483, - 483, 483, 861, 483, 861, 483, 861, 861, 861, 861, - 483, 485, 485, 485, 485, 485, 485, 485, 485, 861, - 485, 861, 485, 861, 861, 861, 861, 485, 487, 487, - 487, 487, 487, 487, 487, 487, 861, 487, 861, 487, - 861, 861, 861, 861, 487, 489, 489, 489, 489, 489, - 489, 489, 489, 861, 489, 861, 489, 861, 861, 861, - 861, 489, 491, 491, 491, 491, 491, 491, 491, 491, - 861, 491, 861, 491, 861, 861, 861, 861, 491, 226, - - 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 382, 382, 382, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 508, - 508, 508, 508, 508, 508, 508, 508, 861, 508, 861, - 508, 861, 861, 861, 861, 508, 510, 510, 510, 510, - 510, 510, 510, 510, 861, 510, 861, 510, 861, 861, - 861, 861, 510, 512, 512, 512, 512, 512, 512, 512, - - 512, 861, 512, 861, 512, 861, 861, 861, 861, 512, - 514, 514, 514, 514, 514, 514, 514, 514, 861, 514, - 861, 514, 861, 861, 861, 861, 514, 516, 516, 516, - 516, 516, 516, 516, 516, 861, 516, 861, 516, 861, - 861, 861, 861, 516, 518, 518, 518, 518, 518, 518, - 518, 518, 861, 518, 861, 518, 861, 861, 861, 861, - 518, 520, 520, 520, 520, 520, 520, 520, 520, 861, - 520, 861, 520, 861, 861, 861, 861, 520, 522, 522, - 522, 522, 522, 522, 522, 522, 861, 522, 861, 522, - 861, 861, 861, 861, 522, 147, 147, 147, 147, 147, - - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 584, 584, 584, 584, 584, - 584, 861, 584, 584, 584, 584, 584, 584, 584, 584, - 584, 584, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 602, 861, 861, - 602, 602, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 608, 608, 861, - 861, 861, 861, 861, 861, 861, 608, 609, 609, 609, - 609, 609, 609, 861, 609, 609, 609, 609, 609, 609, - 609, 609, 609, 609, 226, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 226, 226, 226, 226, 226, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 147, 147, 147, 147, 147, 147, - - 147, 147, 147, 147, 147, 147, 147, 147, 147, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 165, 861, 165, 861, 165, 165, - 165, 165, 165, 584, 584, 584, 584, 861, 584, 584, - 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, - 678, 678, 678, 678, 678, 678, 678, 678, 678, 678, - 678, 678, 678, 678, 678, 681, 681, 681, 681, 681, - 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 178, 178, 178, 178, 178, - - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 692, 861, 861, 692, 692, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 608, 608, 861, 861, 861, - 861, 861, 861, 861, 608, 609, 609, 609, 609, 861, - 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, - 609, 609, 703, 703, 703, 703, 703, 703, 703, 703, - 703, 703, 703, 703, 703, 703, 703, 706, 706, 706, - 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, - - 706, 706, 226, 226, 226, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 226, 226, 226, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 251, 861, 251, 861, 251, 251, 251, 251, - 251, 279, 861, 279, 861, 279, 279, 279, 279, 279, - 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, - 750, 750, 750, 750, 750, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 762, 861, 861, 762, 762, - - 765, 765, 861, 861, 861, 861, 861, 861, 861, 765, - 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, - 768, 768, 768, 768, 768, 772, 772, 772, 772, 772, - 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, - 832, 832, 861, 861, 861, 861, 861, 861, 861, 832, - 25, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861 - } ; - -static yyconst short int yy_chk[7416] = - { 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, 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, 3, 4, 5, 23, 29, 6, - 5, 24, 167, 6, 5, 3, 4, 6, 31, 23, - 3, 4, 5, 24, 167, 6, 27, 27, 27, 27, - 28, 28, 28, 28, 5, 35, 29, 6, 37, 40, - - 35, 212, 31, 44, 37, 63, 35, 37, 44, 54, - 54, 54, 54, 212, 63, 78, 35, 40, 55, 55, - 55, 55, 78, 1011, 89, 5, 5, 89, 6, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 9, 9, 9, 9, 9, 9, - - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, - 66, 61, 61, 62, 11, 68, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 61, 83, 62, 79, - 84, 85, 221, 11, 11, 84, 86, 11, 66, 68, - 85, 86, 83, 11, 113, 11, 113, 79, 221, 11, - - 11, 11, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 15, 15, 15, 15, - 15, 111, 48, 48, 48, 48, 111, 1009, 48, 15, - 132, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 132, 15, 88, 65, 65, 87, - - 65, 88, 48, 88, 90, 88, 48, 91, 49, 49, - 49, 49, 92, 15, 87, 110, 110, 109, 49, 90, - 219, 127, 90, 127, 110, 108, 219, 15, 16, 16, - 16, 16, 16, 48, 48, 91, 92, 109, 49, 65, - 108, 16, 49, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 112, 16, 115, 114, - 121, 131, 130, 130, 121, 134, 135, 137, 133, 49, - 49, 112, 114, 133, 136, 16, 115, 130, 138, 131, - 134, 136, 137, 136, 150, 147, 138, 135, 143, 16, - 17, 17, 17, 17, 17, 146, 146, 146, 146, 161, - - 115, 145, 162, 17, 17, 170, 145, 17, 150, 178, - 170, 175, 145, 147, 161, 162, 187, 186, 17, 17, - 186, 189, 145, 225, 225, 192, 17, 17, 537, 188, - 143, 196, 17, 178, 187, 17, 537, 17, 17, 175, - 189, 206, 17, 188, 17, 181, 181, 181, 181, 203, - 216, 17, 19, 192, 218, 196, 19, 211, 206, 211, - 203, 217, 206, 224, 222, 190, 190, 256, 190, 994, - 216, 222, 254, 254, 256, 217, 260, 260, 218, 224, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - - 19, 19, 19, 19, 19, 19, 19, 190, 220, 19, - 21, 21, 21, 21, 223, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 220, 229, 236, 239, - 255, 257, 223, 253, 258, 257, 288, 226, 288, 236, - 220, 259, 21, 21, 21, 253, 239, 281, 255, 21, - 239, 229, 258, 259, 21, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 226, 281, 559, 559, 262, - 282, 38, 38, 38, 38, 38, 38, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 262, 283, 261, - 282, 282, 290, 59, 59, 59, 59, 59, 59, 73, - - 284, 261, 285, 283, 290, 928, 285, 73, 261, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 284, - 286, 318, 173, 173, 173, 173, 289, 73, 173, 73, - 289, 287, 295, 73, 286, 318, 626, 73, 300, 295, - 73, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 287, 173, 319, 626, 291, 173, 76, 76, 76, - 76, 76, 76, 81, 291, 304, 300, 301, 198, 319, - 305, 81, 329, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 173, 173, 408, 335, 350, 351, 304, - 924, 81, 408, 81, 305, 301, 198, 81, 198, 345, - - 329, 81, 198, 505, 81, 96, 198, 505, 346, 198, - 335, 350, 351, 96, 378, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 530, 502, 345, 177, 177, - 177, 177, 379, 96, 434, 96, 346, 382, 177, 96, - 502, 530, 378, 96, 459, 434, 96, 106, 106, 106, - 106, 106, 106, 106, 106, 106, 106, 470, 177, 470, - 379, 382, 177, 106, 106, 106, 106, 106, 106, 118, - 383, 440, 459, 918, 463, 471, 472, 118, 440, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 177, - 177, 499, 495, 495, 383, 495, 498, 118, 463, 118, - - 471, 472, 499, 118, 503, 555, 498, 118, 495, 503, - 118, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 555, 504, 532, 500, 504, 914, 128, 128, 128, - 128, 128, 128, 149, 500, 532, 458, 458, 527, 458, - 531, 458, 527, 529, 531, 458, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 535, 534, 529, 553, - 535, 149, 149, 149, 149, 149, 149, 149, 151, 458, - 534, 536, 554, 628, 581, 536, 553, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 554, 581, 588, - 613, 628, 151, 151, 151, 151, 151, 151, 151, 159, - - 159, 159, 159, 159, 159, 159, 159, 159, 159, 615, - 689, 615, 689, 588, 613, 159, 159, 159, 159, 159, - 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 616, 618, 618, 616, 889, 164, 164, 164, 164, - 164, 164, 164, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 619, 620, 621, 621, 620, 619, 166, - 166, 166, 166, 166, 166, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 183, 183, 183, 183, 183, 183, 183, - - 183, 183, 183, 627, 632, 746, 627, 746, 183, 183, - 183, 183, 183, 183, 183, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 632, 630, 584, 584, 653, - 584, 185, 185, 185, 185, 185, 185, 194, 584, 630, - 533, 552, 653, 326, 326, 326, 326, 533, 552, 326, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 584, 637, 637, 587, 596, 194, 194, 194, 194, 194, - 194, 194, 197, 326, 560, 596, 636, 326, 886, 612, - 560, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 587, 670, 670, 636, 597, 197, 197, 197, 197, - - 197, 197, 197, 201, 326, 326, 597, 612, 883, 606, - 606, 201, 606, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 496, 496, 606, 496, 598, 496, 629, - 599, 201, 496, 201, 629, 681, 648, 201, 654, 598, - 648, 201, 599, 631, 201, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 631, 496, 706, 654, 681, - 208, 208, 208, 208, 208, 208, 208, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 213, 633, 635, - 880, 706, 231, 210, 210, 210, 210, 210, 210, 585, - 585, 635, 585, 649, 585, 634, 633, 649, 585, 650, - - 585, 633, 634, 651, 650, 213, 716, 213, 651, 671, - 231, 213, 231, 687, 263, 213, 231, 678, 213, 215, - 231, 687, 585, 231, 716, 671, 690, 215, 703, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 690, - 674, 674, 263, 674, 263, 678, 729, 215, 263, 215, - 859, 674, 263, 215, 709, 263, 703, 215, 711, 720, - 215, 228, 720, 729, 709, 779, 779, 327, 327, 327, - 327, 710, 711, 327, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 695, 695, 731, 695, 858, 228, - 228, 228, 228, 228, 228, 228, 230, 327, 695, 697, - - 697, 327, 697, 731, 710, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 697, 696, 696, 758, 696, - 230, 230, 230, 230, 230, 230, 230, 234, 327, 327, - 696, 719, 758, 721, 750, 234, 719, 234, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 586, 586, 722, - 586, 721, 586, 724, 722, 234, 586, 234, 586, 754, - 724, 234, 750, 759, 800, 234, 800, 723, 234, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 723, - 586, 856, 759, 754, 250, 250, 250, 250, 250, 250, - 250, 252, 252, 252, 252, 252, 252, 252, 252, 252, - - 252, 760, 776, 679, 679, 725, 679, 252, 252, 252, - 252, 252, 252, 265, 679, 772, 776, 725, 768, 760, - 828, 265, 828, 265, 265, 265, 265, 265, 265, 265, - 265, 265, 265, 589, 589, 855, 589, 778, 589, 772, - 778, 265, 589, 265, 589, 797, 768, 265, 780, 763, - 763, 265, 763, 780, 265, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 763, 589, 835, 835, 797, - 278, 278, 278, 278, 278, 278, 278, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 854, 816, 609, - 609, 781, 609, 280, 280, 280, 280, 280, 280, 302, - - 609, 777, 790, 781, 816, 826, 790, 836, 826, 794, - 777, 777, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 609, 853, 852, 851, 836, 302, 302, 302, - 302, 302, 302, 302, 303, 699, 699, 794, 699, 801, - 844, 843, 842, 841, 801, 808, 699, 303, 303, 303, - 303, 303, 303, 303, 303, 303, 303, 804, 804, 840, - 804, 839, 303, 303, 303, 303, 303, 303, 303, 306, - 799, 804, 838, 808, 837, 829, 827, 799, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 805, 805, - 823, 805, 822, 306, 306, 306, 306, 306, 306, 306, - - 307, 820, 805, 806, 806, 819, 806, 818, 817, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 806, - 811, 814, 802, 792, 307, 307, 307, 307, 307, 307, - 307, 315, 315, 315, 315, 315, 315, 315, 315, 315, - 315, 789, 787, 786, 811, 785, 315, 315, 315, 315, - 315, 315, 315, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 784, 783, 704, 704, 815, 704, 317, - 317, 317, 317, 317, 317, 320, 704, 815, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 782, 761, - 747, 745, 744, 320, 320, 320, 320, 320, 320, 320, - - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 743, 741, 320, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 813, 740, 739, 738, 737, 813, 321, - 321, 321, 321, 321, 321, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 736, 735, 673, 673, 732, - 673, 322, 322, 322, 322, 322, 322, 325, 673, 850, - 730, 727, 718, 717, 850, 830, 830, 715, 830, 714, - 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, - 673, 830, 713, 712, 693, 325, 325, 325, 325, 325, - - 325, 325, 328, 328, 328, 328, 694, 694, 328, 694, - 691, 688, 686, 672, 694, 668, 667, 666, 665, 664, - 694, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 662, 328, 661, 660, 659, 328, 328, 328, 328, - 328, 328, 328, 608, 608, 658, 608, 748, 748, 657, - 748, 608, 656, 655, 652, 646, 645, 608, 748, 608, - 644, 643, 642, 328, 328, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 331, - 641, 640, 639, 638, 624, 617, 604, 600, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 594, 582, - 577, 575, 574, 331, 331, 331, 331, 331, 331, 331, - 332, 332, 332, 332, 571, 333, 333, 333, 333, 570, - 332, 610, 610, 569, 610, 333, 610, 568, 611, 611, - 610, 611, 610, 611, 567, 766, 766, 611, 766, 611, - 332, 566, 565, 564, 332, 333, 766, 563, 562, 333, - - 561, 558, 683, 683, 610, 683, 557, 614, 614, 556, - 614, 611, 614, 683, 847, 847, 614, 847, 614, 551, - 547, 332, 332, 546, 545, 847, 333, 333, 334, 334, - 334, 334, 543, 832, 832, 683, 832, 542, 334, 540, - 614, 832, 539, 538, 832, 528, 501, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 473, 334, 455, - 454, 449, 334, 334, 334, 334, 334, 334, 334, 765, - 765, 448, 765, 803, 803, 447, 803, 765, 446, 443, - 442, 803, 441, 765, 439, 438, 437, 803, 436, 334, - 334, 336, 336, 336, 336, 336, 336, 336, 336, 336, - - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 337, 435, 433, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 432, 431, - 430, 429, 428, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - - 427, 426, 337, 338, 338, 338, 338, 338, 338, 338, - 338, 338, 338, 425, 424, 423, 419, 418, 417, 338, - 338, 338, 338, 338, 338, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 416, 415, 698, 698, 414, - 698, 339, 339, 339, 339, 339, 339, 347, 698, 413, - 412, 411, 410, 409, 407, 406, 405, 404, 403, 402, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 698, 401, 400, 399, 398, 347, 347, 347, 347, 347, - 347, 347, 348, 846, 846, 393, 846, 392, 391, 390, - 389, 846, 388, 387, 846, 348, 348, 348, 348, 348, - - 348, 348, 348, 348, 348, 386, 377, 375, 374, 373, - 348, 348, 348, 348, 348, 348, 348, 352, 372, 371, - 370, 369, 368, 367, 366, 365, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 361, 360, 359, 358, - 357, 352, 352, 352, 352, 352, 352, 352, 353, 356, - 355, 354, 344, 343, 342, 341, 340, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 323, 316, 314, - 313, 312, 353, 353, 353, 353, 353, 353, 353, 362, - 311, 310, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 309, 299, 298, 297, 296, 362, 362, 362, - - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 294, 293, 362, 363, 363, 363, - 363, 363, 363, 363, 363, 363, 363, 292, 279, 277, - 276, 275, 274, 363, 363, 363, 363, 363, 363, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 273, - 272, 708, 708, 271, 708, 364, 364, 364, 364, 364, - 364, 380, 708, 270, 269, 268, 267, 266, 251, 249, - 248, 247, 246, 245, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 708, 244, 243, 242, 241, 380, - - 380, 380, 380, 380, 380, 380, 381, 848, 848, 240, - 848, 238, 237, 235, 209, 207, 205, 204, 848, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 202, - 191, 184, 182, 165, 381, 381, 381, 381, 381, 381, - 381, 384, 163, 160, 158, 157, 156, 155, 154, 152, - 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, - 142, 141, 140, 129, 126, 384, 384, 384, 384, 384, - 384, 384, 385, 125, 124, 123, 122, 120, 119, 107, - 105, 385, 385, 385, 385, 385, 385, 385, 385, 385, - 385, 104, 103, 102, 101, 100, 385, 385, 385, 385, - - 385, 385, 385, 394, 99, 98, 97, 95, 77, 72, - 60, 394, 57, 394, 394, 394, 394, 394, 394, 394, - 394, 394, 394, 50, 45, 676, 676, 39, 676, 36, - 676, 394, 34, 394, 676, 32, 676, 394, 25, 0, - 0, 394, 0, 0, 394, 395, 0, 0, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 676, 0, - 0, 0, 0, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 0, 0, 395, 396, 396, 396, 396, 396, 396, 396, - - 396, 396, 396, 0, 0, 0, 0, 0, 0, 396, - 396, 396, 396, 396, 396, 397, 397, 397, 397, 397, - 397, 397, 397, 397, 397, 0, 0, 0, 0, 0, - 0, 397, 397, 397, 397, 397, 397, 420, 0, 0, - 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 0, 0, 0, 0, 0, 420, 420, 420, 420, 420, - 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 420, 0, 0, 420, 421, 421, 421, 421, 421, - 421, 421, 421, 421, 421, 0, 0, 0, 0, 0, - - 0, 421, 421, 421, 421, 421, 421, 422, 422, 422, - 422, 422, 422, 422, 422, 422, 422, 0, 0, 0, - 0, 0, 0, 422, 422, 422, 422, 422, 422, 444, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 444, 444, 444, 444, 444, 444, 444, 444, - 444, 444, 0, 0, 0, 0, 0, 444, 444, 444, - 444, 444, 444, 444, 445, 0, 0, 0, 0, 0, - 0, 0, 0, 445, 445, 445, 445, 445, 445, 445, - 445, 445, 445, 0, 0, 0, 0, 0, 445, 445, - 445, 445, 445, 445, 445, 451, 0, 0, 451, 451, - - 451, 451, 451, 451, 451, 451, 451, 451, 0, 0, - 0, 0, 0, 451, 451, 451, 451, 451, 451, 451, - 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, - 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, - 0, 0, 451, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 0, 0, 0, 0, 0, 0, 452, - 452, 452, 452, 452, 452, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 0, 0, 0, 0, 0, - 0, 453, 453, 453, 453, 453, 453, 456, 0, 0, - 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, - - 0, 0, 0, 0, 0, 456, 456, 456, 456, 456, - 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, - 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, - 456, 456, 0, 0, 456, 457, 457, 457, 457, 457, - 457, 457, 457, 457, 457, 0, 0, 0, 0, 0, - 0, 457, 457, 457, 457, 457, 457, 460, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, - 0, 0, 0, 0, 0, 460, 460, 460, 460, 460, - 460, 460, 461, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 0, 0, 0, 0, 0, - 461, 461, 461, 461, 461, 461, 461, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 462, 464, 0, 0, 0, 0, 0, 0, 0, 0, - - 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, - 0, 0, 0, 0, 0, 464, 464, 464, 464, 464, - 464, 464, 465, 0, 0, 0, 0, 0, 0, 0, - 0, 465, 465, 465, 465, 465, 465, 465, 465, 465, - 465, 0, 0, 0, 0, 0, 465, 465, 465, 465, - 465, 465, 465, 466, 466, 466, 466, 466, 466, 466, - 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, - 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, - 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, - 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, - - 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, - 466, 466, 466, 466, 466, 466, 466, 467, 0, 0, - 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, - 0, 0, 0, 0, 0, 467, 467, 467, 467, 467, - 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, - 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, - 467, 467, 0, 0, 467, 468, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 0, 0, 0, 0, 0, - 0, 468, 468, 468, 468, 468, 468, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 0, 0, 0, - - 0, 0, 0, 469, 469, 469, 469, 469, 469, 469, - 474, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 474, 474, 474, 474, 474, 474, 474, - 474, 474, 474, 0, 0, 0, 0, 0, 474, 474, - 474, 474, 474, 474, 474, 476, 0, 0, 0, 0, - 0, 0, 0, 0, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 0, 0, 0, 0, 0, 476, - 476, 476, 476, 476, 476, 476, 493, 0, 0, 493, - 493, 493, 493, 493, 493, 493, 493, 493, 493, 0, - 0, 0, 0, 0, 493, 493, 493, 493, 493, 493, - - 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, - 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, - 493, 0, 0, 493, 494, 494, 494, 494, 494, 494, - 494, 494, 494, 494, 0, 0, 0, 0, 0, 0, - 494, 494, 494, 494, 494, 494, 497, 497, 497, 497, - 497, 497, 497, 497, 497, 497, 0, 0, 0, 0, - 0, 0, 497, 497, 497, 497, 497, 497, 0, 677, - 677, 0, 677, 0, 677, 0, 497, 506, 677, 0, - 677, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, - - 0, 0, 677, 0, 0, 506, 506, 506, 506, 506, - 506, 506, 507, 0, 0, 0, 0, 0, 0, 0, - 0, 507, 507, 507, 507, 507, 507, 507, 507, 507, - 507, 0, 0, 0, 0, 0, 507, 507, 507, 507, - 507, 507, 507, 524, 0, 0, 524, 524, 524, 524, - 524, 524, 524, 524, 524, 524, 0, 0, 0, 0, - 0, 524, 524, 524, 524, 524, 524, 524, 524, 524, - 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, - 524, 524, 524, 524, 524, 524, 524, 524, 0, 0, - 524, 525, 525, 525, 525, 525, 525, 525, 525, 525, - - 525, 0, 0, 0, 0, 0, 0, 525, 525, 525, - 525, 525, 525, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 0, 0, 0, 0, 0, 0, 526, - 526, 526, 526, 526, 526, 548, 0, 0, 548, 548, - 548, 548, 548, 548, 548, 548, 548, 548, 0, 0, - 0, 0, 0, 548, 548, 548, 548, 548, 548, 548, - 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, - 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, - 0, 0, 548, 549, 549, 549, 549, 549, 549, 549, - 549, 549, 549, 0, 0, 0, 0, 0, 0, 549, - - 549, 549, 549, 549, 549, 550, 550, 550, 550, 550, - 550, 550, 550, 550, 550, 0, 0, 0, 0, 0, - 0, 550, 550, 550, 550, 550, 550, 572, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, - 0, 0, 0, 0, 0, 572, 572, 572, 572, 572, - 572, 572, 573, 0, 0, 0, 0, 0, 0, 0, - 0, 573, 573, 573, 573, 573, 573, 573, 573, 573, - 573, 0, 0, 0, 0, 0, 573, 573, 573, 573, - 573, 573, 573, 578, 0, 0, 578, 578, 578, 578, - - 578, 578, 578, 578, 578, 578, 0, 0, 0, 0, - 0, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 0, 0, - 578, 579, 579, 579, 579, 579, 579, 579, 579, 579, - 579, 0, 0, 0, 0, 0, 0, 579, 579, 579, - 579, 579, 579, 580, 580, 580, 580, 580, 580, 580, - 580, 580, 580, 0, 0, 0, 0, 0, 0, 580, - 580, 580, 580, 580, 580, 583, 583, 583, 583, 583, - 583, 583, 583, 583, 583, 0, 0, 0, 0, 0, - - 583, 583, 583, 583, 583, 583, 583, 590, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, - 0, 0, 0, 0, 0, 590, 590, 590, 590, 590, - 590, 590, 591, 591, 591, 591, 591, 591, 591, 591, - 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, - 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, - 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, - 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, - 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, - - 591, 591, 591, 591, 591, 591, 592, 0, 0, 0, - 0, 0, 0, 0, 0, 592, 592, 592, 592, 592, - 592, 592, 592, 592, 592, 0, 0, 0, 0, 0, - 592, 592, 592, 592, 592, 592, 592, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, - - 593, 595, 595, 595, 595, 595, 595, 595, 595, 595, - 595, 0, 0, 0, 0, 0, 0, 595, 595, 595, - 595, 595, 595, 595, 601, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 601, 601, 601, - 601, 601, 601, 601, 601, 601, 601, 0, 0, 0, - 0, 0, 601, 601, 601, 601, 601, 601, 601, 603, - 0, 0, 0, 0, 0, 0, 0, 0, 603, 603, - 603, 603, 603, 603, 603, 603, 603, 603, 0, 0, - 0, 0, 0, 603, 603, 603, 603, 603, 603, 603, - 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, - - 0, 0, 0, 0, 0, 0, 605, 605, 605, 605, - 605, 605, 622, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 622, 622, 622, 622, 622, - 622, 622, 622, 622, 622, 0, 0, 0, 0, 0, - 622, 622, 622, 622, 622, 622, 622, 623, 0, 0, - 0, 0, 0, 0, 0, 0, 623, 623, 623, 623, - 623, 623, 623, 623, 623, 623, 0, 0, 0, 0, - 0, 623, 623, 623, 623, 623, 623, 623, 625, 625, - 625, 625, 625, 625, 625, 625, 625, 625, 0, 0, - 0, 0, 0, 625, 625, 625, 625, 625, 625, 625, - - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 0, 0, 0, 0, 0, 647, 647, 647, 647, 647, - 647, 647, 669, 669, 669, 669, 669, 669, 669, 669, - 669, 669, 0, 0, 0, 0, 0, 0, 669, 669, - 669, 669, 669, 669, 680, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 680, 680, 680, - 680, 680, 680, 680, 680, 680, 680, 0, 0, 0, - 0, 0, 680, 680, 680, 680, 680, 680, 680, 682, - 0, 0, 0, 0, 0, 0, 0, 0, 682, 682, - 682, 682, 682, 682, 682, 682, 682, 682, 0, 0, - - 0, 0, 0, 682, 682, 682, 682, 682, 682, 682, - 684, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 684, 684, 684, 684, 684, 684, 684, - 684, 684, 684, 0, 0, 0, 0, 0, 684, 684, - 684, 684, 684, 684, 684, 685, 0, 0, 0, 0, - 0, 0, 0, 0, 685, 685, 685, 685, 685, 685, - 685, 685, 685, 685, 0, 0, 0, 0, 0, 685, - 685, 685, 685, 685, 685, 685, 701, 701, 0, 701, - 0, 701, 0, 702, 702, 701, 702, 701, 702, 0, - 751, 751, 702, 751, 702, 751, 755, 755, 0, 755, - - 0, 751, 0, 0, 0, 755, 0, 755, 0, 701, - 769, 769, 0, 769, 0, 769, 702, 705, 0, 0, - 0, 769, 0, 751, 0, 0, 0, 0, 0, 755, - 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, - 0, 0, 0, 769, 0, 705, 705, 705, 705, 705, - 705, 705, 707, 0, 0, 0, 0, 0, 0, 0, - 0, 707, 707, 707, 707, 707, 707, 707, 707, 707, - 707, 0, 0, 0, 0, 0, 707, 707, 707, 707, - 707, 707, 707, 752, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 752, 752, 752, 752, - - 752, 752, 752, 752, 752, 752, 0, 0, 0, 0, - 0, 752, 752, 752, 752, 752, 752, 752, 753, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 753, 753, 753, 753, 753, 753, 753, 753, 753, - 753, 0, 0, 0, 0, 0, 753, 753, 753, 753, - 753, 753, 753, 756, 0, 0, 0, 0, 0, 0, - 0, 0, 756, 756, 756, 756, 756, 756, 756, 756, - 756, 756, 0, 0, 0, 0, 0, 756, 756, 756, - 756, 756, 756, 756, 757, 0, 0, 0, 0, 0, - 0, 0, 0, 757, 757, 757, 757, 757, 757, 757, - - 757, 757, 757, 0, 0, 0, 0, 0, 757, 757, - 757, 757, 757, 757, 757, 770, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 770, 770, - 770, 770, 770, 770, 770, 770, 770, 770, 0, 0, - 0, 0, 0, 770, 770, 770, 770, 770, 770, 770, - 771, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 771, 771, 771, 771, 771, 771, 771, - 771, 771, 771, 0, 0, 0, 0, 0, 771, 771, - 771, 771, 771, 771, 771, 773, 773, 0, 773, 0, - 793, 793, 0, 793, 773, 793, 773, 0, 0, 0, - - 0, 793, 0, 0, 0, 796, 796, 0, 796, 0, - 0, 0, 0, 0, 796, 0, 796, 0, 773, 774, - 0, 0, 0, 793, 0, 0, 0, 0, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, 796, 0, - 0, 0, 0, 774, 774, 774, 774, 774, 774, 774, - 775, 0, 0, 0, 0, 0, 0, 0, 0, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 0, - 0, 0, 0, 0, 775, 775, 775, 775, 775, 775, - 775, 795, 795, 795, 795, 795, 795, 795, 795, 795, - 795, 0, 0, 0, 0, 0, 0, 795, 795, 795, - - 795, 795, 795, 798, 798, 798, 798, 798, 798, 798, - 798, 798, 798, 0, 0, 0, 0, 0, 0, 798, - 798, 798, 798, 798, 798, 807, 807, 0, 807, 0, - 807, 0, 0, 0, 0, 0, 807, 810, 810, 0, - 810, 0, 0, 0, 0, 0, 810, 0, 810, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 807, 809, - 809, 809, 809, 809, 809, 809, 809, 809, 809, 0, - 810, 0, 0, 0, 0, 809, 809, 809, 809, 809, - 809, 812, 812, 812, 812, 812, 812, 812, 812, 812, - 812, 0, 0, 0, 0, 0, 0, 812, 812, 812, - - 812, 812, 812, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 0, 0, 0, 0, 0, 0, 824, - 824, 824, 824, 824, 824, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 0, 0, 0, 0, 0, - 0, 825, 825, 825, 825, 825, 825, 833, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 0, 0, 0, - 0, 0, 0, 833, 833, 833, 833, 833, 833, 834, - 834, 834, 834, 834, 834, 834, 834, 834, 834, 0, - 0, 0, 0, 0, 0, 834, 834, 834, 834, 834, - 834, 862, 862, 862, 862, 862, 862, 862, 862, 862, - - 862, 862, 862, 862, 862, 862, 862, 862, 863, 863, - 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, - 863, 863, 863, 863, 863, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 865, 865, 865, 865, 865, 865, 865, 865, - 865, 865, 865, 865, 865, 865, 865, 866, 866, 866, - 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, - 866, 866, 867, 867, 867, 867, 867, 868, 868, 868, - 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, - 868, 868, 869, 0, 869, 0, 869, 869, 869, 869, - - 869, 870, 870, 870, 870, 870, 870, 870, 0, 870, - 870, 870, 870, 870, 870, 870, 870, 870, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 872, 872, 872, 872, 872, - 872, 872, 872, 872, 872, 872, 0, 872, 872, 872, - 872, 872, 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, 873, 874, - 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, - 874, 874, 874, 874, 874, 874, 875, 875, 875, 875, - 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, - - 875, 876, 0, 876, 0, 876, 876, 876, 876, 876, - 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, - 877, 877, 877, 877, 877, 878, 0, 0, 878, 878, - 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, - 879, 879, 879, 879, 879, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, - 882, 0, 882, 0, 882, 882, 882, 882, 882, 884, - 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, - 884, 884, 884, 884, 885, 885, 885, 885, 885, 885, - 885, 885, 885, 885, 885, 885, 885, 885, 885, 887, - - 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 888, 0, 888, 0, 888, 888, - 888, 888, 888, 890, 890, 890, 890, 890, 890, 890, - 890, 890, 890, 890, 890, 890, 890, 890, 891, 0, - 891, 0, 891, 891, 891, 891, 891, 892, 892, 892, - 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, - 892, 892, 893, 893, 893, 893, 893, 893, 893, 893, - 893, 893, 893, 893, 893, 893, 893, 894, 894, 894, - 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, - 894, 894, 895, 895, 895, 895, 895, 895, 895, 895, - - 895, 895, 895, 895, 895, 895, 895, 896, 0, 896, - 0, 896, 896, 896, 896, 896, 897, 0, 897, 0, - 897, 897, 897, 897, 897, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, - 899, 899, 899, 899, 899, 899, 899, 0, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 900, 900, 900, - 900, 900, 900, 900, 0, 900, 0, 900, 900, 900, - 900, 900, 900, 900, 901, 901, 901, 901, 901, 901, - 901, 901, 901, 901, 901, 0, 901, 901, 901, 901, - 901, 902, 902, 902, 902, 902, 902, 902, 902, 902, - - 902, 902, 902, 902, 902, 902, 902, 902, 903, 903, - 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, - 903, 903, 903, 904, 904, 904, 904, 904, 904, 904, - 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, - 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, - 905, 905, 905, 905, 905, 906, 0, 906, 0, 906, - 906, 906, 906, 906, 907, 907, 907, 907, 907, 907, - 907, 907, 907, 907, 907, 907, 907, 907, 907, 908, - 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, - 908, 908, 908, 908, 909, 909, 909, 909, 909, 909, - - 909, 909, 909, 909, 909, 909, 909, 909, 909, 910, - 0, 0, 910, 910, 911, 911, 911, 911, 911, 911, - 911, 911, 911, 911, 911, 911, 911, 911, 911, 912, - 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, - 912, 912, 912, 912, 913, 0, 0, 0, 0, 913, - 0, 0, 0, 913, 913, 915, 0, 915, 0, 915, - 915, 915, 915, 915, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 917, - 0, 0, 0, 0, 917, 0, 0, 0, 917, 917, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - - 919, 919, 919, 919, 919, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 922, 922, 922, 922, 922, - 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, - 923, 0, 0, 0, 0, 923, 0, 0, 0, 923, - 923, 925, 0, 925, 0, 925, 925, 925, 925, 925, - 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, - 926, 926, 926, 926, 926, 927, 0, 0, 0, 0, - 927, 0, 0, 0, 927, 927, 929, 0, 929, 0, - - 929, 929, 929, 929, 929, 930, 930, 930, 930, 930, - 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, - 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, - 931, 931, 931, 931, 931, 932, 932, 932, 932, 932, - 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, - 933, 933, 933, 933, 933, 933, 933, 933, 933, 933, - 933, 933, 933, 933, 933, 934, 934, 934, 934, 934, - 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, - 935, 0, 935, 0, 935, 935, 935, 935, 935, 936, - 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, - - 936, 936, 936, 936, 937, 937, 937, 937, 937, 937, - 937, 937, 937, 937, 937, 937, 937, 937, 937, 938, - 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, - 938, 938, 938, 938, 938, 938, 939, 939, 939, 939, - 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, - 939, 940, 940, 940, 940, 940, 940, 940, 940, 940, - 940, 940, 940, 940, 940, 940, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 942, 942, 942, 942, 942, 942, 942, - 942, 942, 942, 942, 942, 942, 942, 942, 943, 943, - - 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, - 943, 943, 943, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 945, 0, - 0, 945, 945, 946, 946, 946, 946, 946, 946, 946, - 946, 946, 946, 946, 946, 946, 946, 946, 947, 947, - 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, - 947, 947, 947, 948, 948, 948, 948, 948, 948, 948, - 948, 0, 948, 0, 948, 0, 0, 0, 0, 948, - 949, 949, 949, 949, 949, 949, 949, 949, 0, 949, - 0, 949, 0, 0, 0, 0, 949, 950, 950, 950, - - 950, 950, 950, 950, 950, 0, 950, 0, 950, 0, - 0, 0, 0, 950, 951, 951, 951, 951, 951, 951, - 951, 951, 0, 951, 0, 951, 0, 0, 0, 0, - 951, 952, 952, 952, 952, 952, 952, 952, 952, 0, - 952, 0, 952, 0, 0, 0, 0, 952, 953, 953, - 953, 953, 953, 953, 953, 953, 0, 953, 0, 953, - 0, 0, 0, 0, 953, 954, 954, 954, 954, 954, - 954, 954, 954, 0, 954, 0, 954, 0, 0, 0, - 0, 954, 955, 955, 955, 955, 955, 955, 955, 955, - 0, 955, 0, 955, 0, 0, 0, 0, 955, 956, - - 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, - 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, 957, 958, - 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, - 958, 958, 958, 958, 959, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 959, 959, 959, 959, 960, - 960, 960, 960, 960, 960, 960, 960, 0, 960, 0, - 960, 0, 0, 0, 0, 960, 961, 961, 961, 961, - 961, 961, 961, 961, 0, 961, 0, 961, 0, 0, - 0, 0, 961, 962, 962, 962, 962, 962, 962, 962, - - 962, 0, 962, 0, 962, 0, 0, 0, 0, 962, - 963, 963, 963, 963, 963, 963, 963, 963, 0, 963, - 0, 963, 0, 0, 0, 0, 963, 964, 964, 964, - 964, 964, 964, 964, 964, 0, 964, 0, 964, 0, - 0, 0, 0, 964, 965, 965, 965, 965, 965, 965, - 965, 965, 0, 965, 0, 965, 0, 0, 0, 0, - 965, 966, 966, 966, 966, 966, 966, 966, 966, 0, - 966, 0, 966, 0, 0, 0, 0, 966, 967, 967, - 967, 967, 967, 967, 967, 967, 0, 967, 0, 967, - 0, 0, 0, 0, 967, 968, 968, 968, 968, 968, - - 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, - 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, - 969, 969, 969, 969, 969, 970, 970, 970, 970, 970, - 970, 0, 970, 970, 970, 970, 970, 970, 970, 970, - 970, 970, 971, 971, 971, 971, 971, 971, 971, 971, - 971, 971, 971, 971, 971, 971, 971, 972, 972, 972, - 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, - 972, 972, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 974, 974, 974, - 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, - - 974, 974, 975, 975, 975, 975, 975, 975, 975, 975, - 975, 975, 975, 975, 975, 975, 975, 976, 0, 0, - 976, 976, 977, 977, 977, 977, 977, 977, 977, 977, - 977, 977, 977, 977, 977, 977, 977, 978, 978, 0, - 0, 0, 0, 0, 0, 0, 978, 979, 979, 979, - 979, 979, 979, 0, 979, 979, 979, 979, 979, 979, - 979, 979, 979, 979, 980, 980, 980, 980, 980, 980, - 980, 980, 980, 980, 980, 980, 980, 980, 980, 981, - 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, - 981, 981, 981, 981, 982, 982, 982, 982, 982, 982, - - 982, 982, 982, 982, 982, 982, 982, 982, 982, 983, - 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, - 983, 983, 983, 983, 984, 0, 984, 0, 984, 984, - 984, 984, 984, 985, 985, 985, 985, 0, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, - 986, 986, 986, 986, 986, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 989, 989, 989, 989, 989, - - 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, - 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, - 990, 990, 990, 990, 990, 991, 0, 0, 991, 991, - 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, - 992, 992, 992, 992, 992, 993, 993, 0, 0, 0, - 0, 0, 0, 0, 993, 995, 995, 995, 995, 0, - 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, - 995, 995, 996, 996, 996, 996, 996, 996, 996, 996, - 996, 996, 996, 996, 996, 996, 996, 997, 997, 997, - 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, - - 997, 997, 998, 998, 998, 998, 998, 998, 998, 998, - 998, 998, 998, 998, 998, 998, 998, 999, 999, 999, - 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, - 999, 999, 1000, 0, 1000, 0, 1000, 1000, 1000, 1000, - 1000, 1001, 0, 1001, 0, 1001, 1001, 1001, 1001, 1001, - 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, - 1002, 1002, 1002, 1002, 1002, 1003, 1003, 1003, 1003, 1003, - 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, - 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, - 1004, 1004, 1004, 1004, 1004, 1005, 0, 0, 1005, 1005, - - 1006, 1006, 0, 0, 0, 0, 0, 0, 0, 1006, - 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, - 1007, 1007, 1007, 1007, 1007, 1008, 1008, 1008, 1008, 1008, - 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, - 1010, 1010, 0, 0, 0, 0, 0, 0, 0, 1010, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - - 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861 - } ; - -static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; -static char *yy_full_match; -static int yy_lp; -static int yy_looking_for_trail_begin = 0; -static int yy_full_lp; -static int *yy_full_state; -#define YY_TRAILING_MASK 0x2000 -#define YY_TRAILING_HEAD_MASK 0x4000 -#define REJECT \ -{ \ -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \ -yy_cp = yy_full_match; /* restore poss. backed-over text */ \ -yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \ -yy_state_ptr = yy_full_state; /* restore orig. state */ \ -yy_current_state = *yy_state_ptr; /* restore curr. state */ \ -++yy_lp; \ -goto find_rule; \ -} -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#define INITIAL 0 - -/* For flex. Requires support for 8-bit characters and case independence. */ - -#include "cssI.h" -#include "csstab.h" - -#undef YY_INPUT -#define YY_INPUT(buf, result, max_size) css_GetBuf(buf, &result, max_size) - -#if !defined(__cplusplus) && !(__STDC__) && !defined(__TURBOC__) -/* Stuff from stdlib.h -- needed by win16 */ -#define YY_MALLOC_DECL \ -extern void free (void *); \ -extern void *malloc (size_t size); \ -extern void *realloc (void *, size_t); -#endif - -static int input(void); - -/* We never take input off of the command line. */ -#define YY_NEVER_INTERACTIVE 1 - -#ifdef CSS_PARSE_DEBUG -#define RETURN(x) {printf("lex returns %d for '%s'\n",x,css_text);return(x);} -#else -#define RETURN(x) return(x) -#endif - -#define css_comment 1 - -#define css_ignore 2 - -#define css_property 3 - -#define css_value 4 - -#define css_bg 5 - -#define css_font 6 - -#define css_line_height 7 - -#define css_list_style 8 - -#define css_border 9 - -#define css_font_size 10 - -#define css_after_ident 11 - - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include <stdlib.h> -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#endif -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ - -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( yy_current_buffer->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - - - - - -/* CSS1 17 December 1996, with the following changes: - * 1. Expand whitespace definition in the rules section. - * 2. Change default rule action to be silent. - * 3. Require class names to be an IDENT. - * 4. Require id names to be an IDENT. - * 5. Return '.' as a separate lexical token; - * add DOT and DOT_AFTER_IDENT; remove CLASS and CLASS_AFTER_IDENT - * 6. Return '#' as a separate lexical token; - * remove HASH and HASH_AFTER_IDENT. - * 7. Gut the use of AFTER_IDENT tokens for pseudoclasses and pseudoelements. - * 8. Provide a definition for HEXCOLOR token. - * move { and } out into state triggers - * 9. Gave up on preserving any heritage and made use of exclusive states. - */ - -/* These state variables can be on the stack because their state is not - * useful across a token return. They should always be set to 0 before - * starting a new input file. - */ -short int css_prior_state = 0; -short int css_nest_count = 0; - - - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 862 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - ++yy_cp; - } - while ( yy_current_state != 861 ); - -yy_find_action: - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; -find_rule: /* we branch to this label when backing up */ - for ( ; ; ) /* until we find what rule we matched */ - { - if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) - { - yy_act = yy_acclist[yy_lp]; - if ( yy_act & YY_TRAILING_HEAD_MASK || - yy_looking_for_trail_begin ) - { - if ( yy_act == yy_looking_for_trail_begin ) - { - yy_looking_for_trail_begin = 0; - yy_act &= ~YY_TRAILING_HEAD_MASK; - break; - } - } - else if ( yy_act & YY_TRAILING_MASK ) - { - yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK; - yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK; - } - else - { - yy_full_match = yy_cp; - yy_full_state = yy_state_ptr; - yy_full_lp = yy_lp; - break; - } - ++yy_lp; - goto find_rule; - } - --yy_cp; - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - -do_action: /* This label is used only to access EOF actions. */ - - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -YY_RULE_SETUP -{BEGIN(0); RETURN(CDO);} - YY_BREAK -case 2: -YY_RULE_SETUP -{BEGIN(0); RETURN(CDC);} - YY_BREAK -case 3: -YY_RULE_SETUP -{BEGIN(0);RETURN(LINK_PSCLASS);} - YY_BREAK -case 4: -YY_RULE_SETUP -{BEGIN(0);RETURN(VISITED_PSCLASS);} - YY_BREAK -case 5: -YY_RULE_SETUP -{BEGIN(0);RETURN(ACTIVE_PSCLASS);} - YY_BREAK -case 6: -YY_RULE_SETUP -{BEGIN(0);RETURN(DOT_AFTER_IDENT);} - YY_BREAK -case 7: -YY_RULE_SETUP -{BEGIN(css_after_ident); RETURN(IDENT);} - YY_BREAK -case 8: -YY_RULE_SETUP -{BEGIN(0);RETURN(LEADING_LINK_PSCLASS);} - YY_BREAK -case 9: -YY_RULE_SETUP -{BEGIN(0);RETURN(LEADING_VISITED_PSCLASS);} - YY_BREAK -case 10: -YY_RULE_SETUP -{BEGIN(0);RETURN(LEADING_ACTIVE_PSCLASS);} - YY_BREAK -case 11: -YY_RULE_SETUP -{BEGIN(0);RETURN(FIRST_LINE);} - YY_BREAK -case 12: -YY_RULE_SETUP -{BEGIN(0);RETURN(FIRST_LETTER);} - YY_BREAK -case 13: -YY_RULE_SETUP -{BEGIN(0);RETURN(DOT);} - YY_BREAK -case 14: -YY_RULE_SETUP -{BEGIN(0);return (*css_text);} - YY_BREAK -case 15: -YY_RULE_SETUP -{BEGIN(0);} - YY_BREAK -case 16: -YY_RULE_SETUP -{BEGIN(0); RETURN(IMPORT_SYM);} - YY_BREAK -case 17: -YY_RULE_SETUP -{BEGIN(0); RETURN(FONTDEF);} - YY_BREAK -case 18: -case 19: -YY_RULE_SETUP -{RETURN(URL);} - YY_BREAK -case 20: -YY_RULE_SETUP -{RETURN(STRING);} - YY_BREAK -case 21: -YY_RULE_SETUP -{BEGIN(css_ignore); css_nest_count=0;} - YY_BREAK -case 22: -case 23: -YY_RULE_SETUP -{ /* unrecognized @rules are ignored. */} - YY_BREAK -case 24: -YY_RULE_SETUP -{if (0 == css_nest_count) BEGIN(0);} - YY_BREAK -case 25: -YY_RULE_SETUP -{css_nest_count++;} - YY_BREAK -case 26: -YY_RULE_SETUP -{if (0 >= --css_nest_count) BEGIN(0);} - YY_BREAK -case 27: -YY_RULE_SETUP -{if (css_comment != YY_START) { - /* Comments cannot be nested. */ - css_prior_state = YY_START;} - BEGIN(css_comment);} - YY_BREAK -case 28: -case 29: -YY_RULE_SETUP -{/* Comments function as whitespace. */} - YY_BREAK -case 30: -YY_RULE_SETUP -{BEGIN(css_prior_state);} - YY_BREAK -case 31: -YY_RULE_SETUP -{/* whitespace can separate tokens */} - YY_BREAK -case 32: -YY_RULE_SETUP -{BEGIN(0); return (*css_text);} - YY_BREAK -case 33: -YY_RULE_SETUP -{BEGIN(css_property); return (*css_text);} - YY_BREAK -case 34: -YY_RULE_SETUP -{RETURN(IMPORTANT_SYM);} - YY_BREAK -case 35: -YY_RULE_SETUP -{BEGIN(css_property); return (*css_text);} - YY_BREAK -case 36: -YY_RULE_SETUP -{BEGIN(css_value); return (*css_text);} - YY_BREAK -case 37: -YY_RULE_SETUP -{return (*css_text);} - YY_BREAK -case 38: -YY_RULE_SETUP -{BEGIN(css_bg); RETURN(BACKGROUND);} - YY_BREAK -case 39: -YY_RULE_SETUP -{BEGIN(css_font); RETURN(FONT);} - YY_BREAK -case 40: -YY_RULE_SETUP -{BEGIN(css_list_style); RETURN(LIST_STYLE);} - YY_BREAK -case 41: -YY_RULE_SETUP -{BEGIN(css_border); RETURN(BORDER);} - YY_BREAK -case 42: -YY_RULE_SETUP -{BEGIN(css_font_size); RETURN(FONT_SIZE_PROPERTY);} - YY_BREAK -case 43: -YY_RULE_SETUP -{RETURN(IDENT);} - YY_BREAK -case 44: -YY_RULE_SETUP -{RETURN(FONT_STYLE);} - YY_BREAK -case 45: -YY_RULE_SETUP -{RETURN(FONT_VARIANT);} - YY_BREAK -case 46: -YY_RULE_SETUP -{RETURN(FONT_WEIGHT);} - YY_BREAK -case 47: -YY_RULE_SETUP -{RETURN(FONT_WEIGHT);} - YY_BREAK -case 48: -YY_RULE_SETUP -{RETURN(FONT_NORMAL);} - YY_BREAK -case 49: -YY_RULE_SETUP -{RETURN(FONT_SIZE);} - YY_BREAK -case 50: -YY_RULE_SETUP -{RETURN(FONT_SIZE);} - YY_BREAK -case 51: -YY_RULE_SETUP -{BEGIN(css_font); RETURN(PERCENTAGE);} - YY_BREAK -case 52: -case 53: -case 54: -case 55: -case 56: -case 57: -case 58: -YY_RULE_SETUP -{BEGIN(css_font); RETURN(LENGTH);} - YY_BREAK -case 59: -YY_RULE_SETUP -{BEGIN(css_font); RETURN(EMS);} - YY_BREAK -case 60: -YY_RULE_SETUP -{BEGIN(css_font); RETURN(EXS);} - YY_BREAK -case 61: -YY_RULE_SETUP -{BEGIN(css_line_height); return (*css_text);} - YY_BREAK -case 62: -YY_RULE_SETUP -{return (*css_text);} - YY_BREAK -case 63: -YY_RULE_SETUP -{BEGIN(css_font); RETURN(NUMBER);} - YY_BREAK -case 64: -YY_RULE_SETUP -{BEGIN(css_font); RETURN(LINE_HEIGHT);} - YY_BREAK -case 65: -YY_RULE_SETUP -{RETURN(IDENT);} - YY_BREAK -case 66: -YY_RULE_SETUP -{RETURN(STRING);} - YY_BREAK -case 67: -YY_RULE_SETUP -{return (*css_text);} - YY_BREAK -case 68: -YY_RULE_SETUP -{RETURN(LS_TYPE);} - YY_BREAK -case 69: -YY_RULE_SETUP -{RETURN(LS_NONE);} - YY_BREAK -case 70: -YY_RULE_SETUP -{RETURN(LS_POSITION);} - YY_BREAK -case 71: -YY_RULE_SETUP -{RETURN(BG_COLOR);} - YY_BREAK -case 72: -YY_RULE_SETUP -{RETURN(BG_IMAGE);} - YY_BREAK -case 73: -YY_RULE_SETUP -{RETURN(BG_REPEAT);} - YY_BREAK -case 74: -YY_RULE_SETUP -{RETURN(BG_ATTACHMENT);} - YY_BREAK -case 75: -YY_RULE_SETUP -{RETURN(BG_POSITION);} - YY_BREAK -case 76: -YY_RULE_SETUP -{return (*css_text);} - YY_BREAK -case 77: -YY_RULE_SETUP -{RETURN(IDENT);} - YY_BREAK -case 78: -YY_RULE_SETUP -{RETURN(IDENT); /* quick b2 hack */} - YY_BREAK -case 79: -YY_RULE_SETUP -{RETURN(STRING);} - YY_BREAK -case 80: -case 81: -YY_RULE_SETUP -{RETURN(HEXCOLOR);} - YY_BREAK -case 82: -YY_RULE_SETUP -{RETURN(RGB);} - YY_BREAK -case 83: -case 84: -YY_RULE_SETUP -{RETURN(URL);} - YY_BREAK -case 85: -YY_RULE_SETUP -{RETURN(PERCENTAGE);} - YY_BREAK -case 86: -case 87: -case 88: -case 89: -case 90: -case 91: -case 92: -YY_RULE_SETUP -{RETURN(LENGTH);} - YY_BREAK -case 93: -YY_RULE_SETUP -{RETURN(EMS);} - YY_BREAK -case 94: -YY_RULE_SETUP -{RETURN(EXS);} - YY_BREAK -case 95: -YY_RULE_SETUP -{RETURN(NUMBER);} - YY_BREAK -case 96: -case 97: -YY_RULE_SETUP -{RETURN(BORDER_STYLE);} - YY_BREAK -case 98: -YY_RULE_SETUP -{RETURN(BORDER_WIDTH);} - YY_BREAK -case 99: -YY_RULE_SETUP -{RETURN(IDENT);} - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(css_comment): -case YY_STATE_EOF(css_ignore): -case YY_STATE_EOF(css_property): -case YY_STATE_EOF(css_value): -case YY_STATE_EOF(css_bg): -case YY_STATE_EOF(css_font): -case YY_STATE_EOF(css_line_height): -case YY_STATE_EOF(css_list_style): -case YY_STATE_EOF(css_border): -case YY_STATE_EOF(css_font_size): -case YY_STATE_EOF(css_after_ident): -{BEGIN (0); yyterminate();} - YY_BREAK -case 100: -YY_RULE_SETUP -{RETURN(WILD);} - YY_BREAK -case 101: -YY_RULE_SETUP -ECHO; - YY_BREAK - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - yy_did_buffer_switch_on_eof = 0; - - if ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->yy_ch_buf[yy_n_chars]; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->yy_ch_buf; - register char *source = yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = yy_current_buffer; - - int yy_c_buf_p_offset = - (int) (yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yy_flex_realloc( (void *) b->yy_ch_buf, - b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = yy_current_buffer->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; - - return ret_val; - } - - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -static yy_state_type yy_get_previous_state() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 862 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - } - - return yy_current_state; - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - - register YY_CHAR yy_c = 1; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 862 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 861); - if ( ! yy_is_jam ) - *yy_state_ptr++ = yy_current_state; - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = yy_n_chars + 2; - register char *dest = &yy_current_buffer->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - - yytext_ptr = yy_bp; - yy_hold_char = *yy_cp; - yy_c_buf_p = yy_cp; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#endif - { - int c; - - *yy_c_buf_p = yy_hold_char; - - if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - /* This was really a NUL. */ - *yy_c_buf_p = '\0'; - - else - { /* need more input */ - int offset = yy_c_buf_p - yytext_ptr; - ++yy_c_buf_p; - - switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - { - yy_c_buf_p = yytext_ptr + offset; - return EOF; - } - - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext_ptr + offset; - break; - - case EOB_ACT_LAST_MATCH: -#ifdef __cplusplus - YY_FATAL_ERROR( - "unexpected last match in yyinput()" ); -#else - YY_FATAL_ERROR( - "unexpected last match in input()" ); -#endif - } - } - } - - c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ - *yy_c_buf_p = '\0'; /* preserve yytext */ - yy_hold_char = *++yy_c_buf_p; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - if ( yy_current_buffer == new_buffer ) - return; - - if ( yy_current_buffer ) - { - /* Flush out information for old buffer. */ - *yy_c_buf_p = yy_hold_char; - yy_current_buffer->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *str ) -#else -YY_BUFFER_STATE yy_scan_string( str ) -yyconst char *str; -#endif - { - int len; - for ( len = 0; str[len]; ++len ) - ; - - return yy_scan_bytes( str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); - } - - - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif - diff --git a/mozilla/lib/libstyle/csstab.c b/mozilla/lib/libstyle/csstab.c deleted file mode 100644 index 2b118170aaf..00000000000 --- a/mozilla/lib/libstyle/csstab.c +++ /dev/null @@ -1,2407 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* A Bison parser, made from css.y - by GNU Bison version 1.25 - */ - -#define YYBISON 1 /* Identify Bison output. */ - -#define yyparse css_parse -#define yylex css_lex -#define yyerror css_error -#define yylval css_lval -#define yychar css_char -#define yydebug css_debug -#define yynerrs css_nerrs -#define NUMBER 258 -#define STRING 259 -#define PERCENTAGE 260 -#define LENGTH 261 -#define EMS 262 -#define EXS 263 -#define IDENT 264 -#define HEXCOLOR 265 -#define URL 266 -#define RGB 267 -#define CDO 268 -#define CDC 269 -#define IMPORTANT_SYM 270 -#define IMPORT_SYM 271 -#define DOT_AFTER_IDENT 272 -#define DOT 273 -#define LINK_PSCLASS 274 -#define VISITED_PSCLASS 275 -#define ACTIVE_PSCLASS 276 -#define LEADING_LINK_PSCLASS 277 -#define LEADING_VISITED_PSCLASS 278 -#define LEADING_ACTIVE_PSCLASS 279 -#define FIRST_LINE 280 -#define FIRST_LETTER 281 -#define WILD 282 -#define BACKGROUND 283 -#define BG_COLOR 284 -#define BG_IMAGE 285 -#define BG_REPEAT 286 -#define BG_ATTACHMENT 287 -#define BG_POSITION 288 -#define FONT 289 -#define FONT_STYLE 290 -#define FONT_VARIANT 291 -#define FONT_WEIGHT 292 -#define FONT_SIZE 293 -#define FONT_NORMAL 294 -#define LINE_HEIGHT 295 -#define LIST_STYLE 296 -#define LS_TYPE 297 -#define LS_NONE 298 -#define LS_POSITION 299 -#define BORDER 300 -#define BORDER_STYLE 301 -#define BORDER_WIDTH 302 -#define FONT_SIZE_PROPERTY 303 -#define FONTDEF 304 - - - -#include <stdio.h> -#include "cssI.h" - - -typedef union { - css_node binary_node; -} YYSTYPE; - - - /* Background Shorthand Property */ - -typedef struct backgroundShorthandRecord { - css_node color; - css_node image; - css_node repeat; - css_node attachment; - css_node position; - int parse_error; -} BackgroundShorthandRecord, *BackgroundShorthand; - -#define BackgroundColor 1 -#define BackgroundImage 2 -#define BackgroundRepeat 3 -#define BackgroundAttachment 4 -#define BackgroundPosition 5 - -static void ClearBackground(void); -static void AddBackground(int node_type, css_node node); -static css_node AssembleBackground(void); - -static BackgroundShorthandRecord bg; - -/* background property names */ -static char * bg_image = "background-image"; -static char * bg_color = "background-color"; -static char * bg_repeat = "background-repeat"; -static char * bg_attachment = "background-attachment"; -static char * bg_position = "background-position"; -/* background property initial values */ -static char * css_none = "none"; -static char * css_transparent = "transparent"; -static char * css_repeat = "repeat"; -static char * css_scroll = "scroll"; -static char * css_origin = "0% 0%"; - - - /* Font Shorthand Property */ - -typedef struct fontShorthandRecord { - css_node style; - css_node variant; - css_node weight; - css_node size; - css_node leading; - css_node family; - int normal_count; - int parse_error; -} FontShorthandRecord, *FontShorthand; - -#define FontStyle 6 -#define FontVariant 7 -#define FontWeight 8 -#define FontNormal 9 -#define FontSize 10 -#define FontLeading 11 -#define FontFamily 12 - -static void ClearFont(void); -static void AddFont(int node_type, css_node node); -static css_node AssembleFont(void); - -static FontShorthandRecord font; - -/* font property names */ -static char * line_height = "line-height"; -static char * font_family = "font-family"; -static char * font_style = "font-style"; -static char * font_variant = "font-variant"; -static char * font_weight = "font-weight"; -static char * font_size = "font-size"; -/* font property initial values */ -static char * css_normal = "normal"; - - - /* List-Style Shorthand Property */ - -typedef struct listStyleShorthandRecord { - css_node marker; - css_node image; - css_node position; - int none_count; - int parse_error; -} ListStyleShorthandRecord, *ListStyleShorthand; - -#define ListStyleMarker 13 -#define ListStyleImage 14 -#define ListStylePosition 15 -#define ListStyleNone 16 - -static void ClearListStyle(void); -static void AddListStyle(int node_type, css_node node); -static css_node AssembleListStyle(void); - -static ListStyleShorthandRecord ls; - -/* list-style property names */ -static char * list_style_type = "list-style-type"; -static char * list_style_image = "list-style-image"; -static char * list_style_position = "list-style-position"; -/* list-style initial values */ -static char * css_disc = "disc"; -static char * css_outside = "outside"; - - - /* Border Shorthand Property */ - -typedef struct borderShorthandRecord { - css_node width; - css_node style; - css_node color; - int parse_error; -} BorderShorthandRecord, *BorderShorthand; - -#define BorderWidth 17 -#define BorderStyle 18 -#define BorderColor 19 - -static void ClearBorder(void); -static void AddBorder(int node_type, css_node node); -static css_node AssembleBorder(void); - -static BorderShorthandRecord border; - -/* border property names */ -static char * border_width = "border-width"; -static char * border_style = "border-style"; -static char * border_color = "border-color"; -/* border initial values */ -static char * css_medium = "medium"; - - -/* Define yyoverflow and the forward declarations for bison. */ -#define yyoverflow css_overflow -static void css_overflow(const char *message, short **yyss1, int yyss1_size, - YYSTYPE **yyvs1, int yyvs1_size, int *yystacksize); -static css_node NewNode(int node_id, char *ss, css_node left, css_node right); -static void LeftAppendNode(css_node head, css_node new_node); -static css_node NewDeclarationNode(int node_id, char *ss, char *prop); -static css_node NewComponentNode(css_node value, char *prop); - -css_node css_tree_root; - -/* pseudo-classes */ -static char * css_link = "link"; -static char * css_visited = "visited"; -static char * css_active = "active"; - -#ifdef CSS_PARSE_DEBUG -#define TRACE1(str) trace1(str) -#define TRACE2(format, str) trace2(format, str) -static trace1(const char * str) -{ - printf("%s", str); -} - -static trace2(const char *fmt, char *str) -{ - printf(fmt, str); -} -#else -#define TRACE1(str) -#define TRACE2(format, str) -#endif - -int css_error(const char * diagnostic) -{ -#ifdef CSS_PARSE_REPORT_ERRORS - char * identifier = "CSS1 parser message:"; - (void) fprintf(stderr, - "%s error, text ='%s', diagnostic ='%s'\n", - identifier, css_text, diagnostic ? diagnostic : ""); -#endif - return 1; -} - - -int css_wrap(void) -{ -#ifdef CSS_PARSE_DEBUG - printf("css_wrap() was called.\n"); -#endif - return 1; -} - -#include <stdio.h> - -#ifndef __cplusplus -#ifndef __STDC__ -#define const -#endif -#endif - - - -#define YYFINAL 173 -#define YYFLAG -32768 -#define YYNTBASE 59 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 304 ? yytranslate[x] : 115) - -static const char yytranslate[] = { 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 57, 2, 2, 2, 2, 2, - 2, 2, 52, 54, 51, 2, 53, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 58, 50, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 55, 2, 56, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49 -}; - -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 1, 4, 7, 10, 13, 16, 18, 20, 24, - 28, 30, 32, 34, 36, 37, 39, 41, 43, 45, - 47, 49, 51, 53, 58, 60, 64, 66, 69, 71, - 74, 77, 79, 82, 84, 87, 89, 93, 96, 101, - 105, 107, 109, 111, 113, 116, 118, 120, 122, 124, - 126, 128, 130, 132, 134, 138, 139, 144, 149, 154, - 159, 164, 169, 170, 172, 174, 176, 180, 182, 184, - 186, 188, 190, 192, 195, 197, 199, 202, 204, 206, - 208, 210, 212, 214, 216, 218, 220, 222, 224, 227, - 230, 234, 236, 239, 241, 243, 245, 247, 249, 251, - 253, 255, 257, 260, 262, 265, 267, 271, 277, 278, - 280, 282, 284, 288, 289, 292, 294, 296, 298, 300, - 302, 304, 307, 309, 311, 313, 315, 318, 320, 322, - 324, 326, 328, 331, 333, 335, 337, 339 -}; - -static const short yyrhs[] = { -1, - 59, 13, 0, 59, 60, 0, 59, 72, 0, 59, - 14, 0, 59, 1, 0, 61, 0, 62, 0, 16, - 63, 50, 0, 49, 63, 50, 0, 4, 0, 95, - 0, 51, 0, 52, 0, 0, 53, 0, 54, 0, - 9, 0, 48, 0, 28, 0, 34, 0, 41, 0, - 45, 0, 73, 55, 84, 56, 0, 74, 0, 73, - 54, 74, 0, 77, 0, 77, 83, 0, 75, 0, - 75, 83, 0, 76, 77, 0, 77, 0, 76, 77, - 0, 78, 0, 18, 79, 0, 80, 0, 78, 17, - 79, 0, 78, 81, 0, 78, 17, 79, 81, 0, - 18, 79, 81, 0, 82, 0, 27, 0, 9, 0, - 9, 0, 57, 9, 0, 19, 0, 20, 0, 21, - 0, 22, 0, 23, 0, 24, 0, 25, 0, 26, - 0, 85, 0, 84, 50, 85, 0, 0, 66, 58, - 88, 86, 0, 67, 58, 109, 86, 0, 68, 58, - 97, 86, 0, 69, 58, 103, 86, 0, 70, 58, - 111, 86, 0, 71, 58, 113, 86, 0, 0, 87, - 0, 15, 0, 89, 0, 88, 65, 89, 0, 94, - 0, 96, 0, 95, 0, 92, 0, 90, 0, 91, - 0, 64, 91, 0, 3, 0, 93, 0, 64, 93, - 0, 5, 0, 6, 0, 7, 0, 8, 0, 4, - 0, 9, 0, 11, 0, 10, 0, 12, 0, 98, - 0, 100, 0, 98, 100, 0, 100, 98, 0, 98, - 100, 98, 0, 99, 0, 98, 99, 0, 11, 0, - 30, 0, 96, 0, 9, 0, 29, 0, 31, 0, - 32, 0, 101, 0, 92, 0, 92, 92, 0, 102, - 0, 102, 102, 0, 33, 0, 107, 109, 105, 0, - 107, 109, 53, 110, 105, 0, 0, 54, 0, 106, - 0, 94, 0, 106, 104, 94, 0, 0, 107, 108, - 0, 35, 0, 36, 0, 37, 0, 39, 0, 93, - 0, 38, 0, 52, 93, 0, 92, 0, 90, 0, - 40, 0, 112, 0, 111, 112, 0, 42, 0, 43, - 0, 44, 0, 95, 0, 114, 0, 113, 114, 0, - 46, 0, 47, 0, 92, 0, 96, 0, 9, 0 -}; - -#endif - -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 268, 271, 275, 284, 296, 300, 307, 310, 316, 322, - 328, 331, 339, 343, 350, 354, 358, 365, 372, 378, - 387, 396, 404, 412, 419, 423, 437, 441, 445, 449, - 461, 468, 472, 479, 483, 487, 491, 495, 499, 506, - 510, 517, 523, 530, 537, 544, 547, 550, 556, 559, - 562, 568, 572, 579, 583, 595, 599, 605, 611, 618, - 625, 628, 634, 635, 639, 646, 650, 665, 666, 667, - 668, 669, 673, 674, 682, 688, 689, 696, 699, 702, - 705, 711, 714, 721, 727, 730, 736, 737, 738, 739, - 740, 744, 745, 749, 753, 757, 761, 765, 769, 773, - 780, 790, 793, 802, 805, 817, 823, 830, 842, 846, - 853, 862, 866, 881, 884, 890, 895, 900, 905, 911, - 912, 915, 922, 923, 924, 934, 935, 939, 944, 948, - 953, 961, 962, 966, 971, 976, 981, 986 -}; -#endif - - -#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) - -static const char * const yytname[] = { "$","error","$undefined.","NUMBER", -"STRING","PERCENTAGE","LENGTH","EMS","EXS","IDENT","HEXCOLOR","URL","RGB","CDO", -"CDC","IMPORTANT_SYM","IMPORT_SYM","DOT_AFTER_IDENT","DOT","LINK_PSCLASS","VISITED_PSCLASS", -"ACTIVE_PSCLASS","LEADING_LINK_PSCLASS","LEADING_VISITED_PSCLASS","LEADING_ACTIVE_PSCLASS", -"FIRST_LINE","FIRST_LETTER","WILD","BACKGROUND","BG_COLOR","BG_IMAGE","BG_REPEAT", -"BG_ATTACHMENT","BG_POSITION","FONT","FONT_STYLE","FONT_VARIANT","FONT_WEIGHT", -"FONT_SIZE","FONT_NORMAL","LINE_HEIGHT","LIST_STYLE","LS_TYPE","LS_NONE","LS_POSITION", -"BORDER","BORDER_STYLE","BORDER_WIDTH","FONT_SIZE_PROPERTY","FONTDEF","';'", -"'-'","'+'","'/'","','","'{'","'}'","'#'","':'","stylesheet","atrule","import", -"fontdef","import_value","unary_operator","operator","property","font_size_property", -"background_property","font_property","list_style_property","border_property", -"ruleset","selector_list","selector","contextual_selector","contextual_selector_list", -"simple_selector","element_name","class","id","pseudo_class","leading_pseudo_class", -"pseudo_element","declaration_list","declaration","optional_priority","prio", -"expr","term","numeric_const","unsigned_numeric_const","numeric_unit","unsigned_numeric_unit", -"unsigned_symbol","url","color_code","background_values_list","background_values", -"background_value","background_position_value","background_position_expr","background_position_keyword", -"font_values_list","font_family_operator","font_family_value","font_family_expr", -"font_optional_values_list","font_optional_value","font_size_value","line_height_value", -"list_style_values_list","list_style_value","border_values_list","border_value", NULL -}; -#endif - -static const short yyr1[] = { 0, - 59, 59, 59, 59, 59, 59, 60, 60, 61, 62, - 63, 63, 64, 64, 65, 65, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 73, 74, 74, 74, 74, - 75, 76, 76, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 78, 79, 80, 81, 81, 81, 82, 82, - 82, 83, 83, 84, 84, 85, 85, 85, 85, 85, - 85, 85, 86, 86, 87, 88, 88, 89, 89, 89, - 89, 89, 90, 90, 91, 92, 92, 93, 93, 93, - 93, 94, 94, 95, 96, 96, 97, 97, 97, 97, - 97, 98, 98, 99, 99, 99, 99, 99, 99, 99, - 100, 101, 101, 101, 101, 102, 103, 103, 104, 104, - 105, 106, 106, 107, 107, 108, 108, 108, 108, 109, - 109, 109, 110, 110, 110, 111, 111, 112, 112, 112, - 112, 113, 113, 114, 114, 114, 114, 114 -}; - -static const short yyr2[] = { 0, - 0, 2, 2, 2, 2, 2, 1, 1, 3, 3, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 4, 1, 3, 1, 2, 1, 2, - 2, 1, 2, 1, 2, 1, 3, 2, 4, 3, - 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 0, 4, 4, 4, 4, - 4, 4, 0, 1, 1, 1, 3, 1, 1, 1, - 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 2, 1, 3, 5, 0, 1, - 1, 1, 3, 0, 2, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1 -}; - -static const short yydefact[] = { 1, - 0, 6, 43, 2, 5, 0, 0, 49, 50, 51, - 42, 0, 0, 3, 7, 8, 4, 0, 25, 29, - 0, 32, 34, 36, 41, 11, 84, 0, 12, 44, - 35, 0, 45, 0, 56, 52, 53, 30, 33, 28, - 0, 46, 47, 48, 38, 9, 40, 10, 26, 18, - 20, 21, 22, 23, 19, 0, 0, 0, 0, 0, - 0, 0, 54, 37, 0, 0, 0, 114, 0, 0, - 56, 24, 39, 75, 82, 78, 79, 80, 81, 83, - 85, 86, 13, 14, 0, 15, 66, 72, 73, 71, - 76, 68, 70, 69, 121, 0, 120, 63, 97, 94, - 98, 95, 99, 100, 106, 0, 102, 96, 63, 87, - 92, 88, 101, 104, 63, 0, 128, 129, 130, 131, - 63, 126, 138, 134, 135, 136, 137, 63, 132, 55, - 74, 77, 65, 16, 17, 0, 57, 64, 122, 58, - 103, 59, 93, 89, 90, 105, 60, 116, 117, 118, - 119, 115, 0, 61, 127, 62, 133, 67, 91, 0, - 112, 107, 111, 125, 124, 123, 0, 110, 0, 108, - 113, 0, 0 -}; - -static const short yydefgoto[] = { 1, - 14, 15, 16, 28, 106, 136, 56, 57, 58, 59, - 60, 61, 17, 18, 19, 20, 21, 22, 23, 31, - 24, 45, 25, 38, 62, 63, 137, 138, 86, 87, - 88, 89, 90, 91, 92, 29, 108, 109, 110, 111, - 112, 113, 114, 115, 169, 162, 163, 116, 152, 98, - 167, 121, 122, 128, 129 -}; - -static const short yypact[] = {-32768, - 10,-32768,-32768,-32768,-32768, 11, 0,-32768,-32768,-32768, --32768, 11, 18,-32768,-32768,-32768,-32768, -37,-32768, 38, - 78, -12, 150,-32768,-32768,-32768,-32768, -14,-32768,-32768, - 155, -10,-32768, 78, 170,-32768,-32768,-32768, 180,-32768, - 0,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, -2, 14, 27, 30, 31, - 35, -25,-32768, 155, 72, 121, 101,-32768, 103, 131, - 170,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 223, 134,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 231,-32768, 53,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 231, 40,-32768, 53, 101, --32768, 213,-32768, 36, 53, 158,-32768,-32768,-32768,-32768, - 157,-32768,-32768,-32768,-32768,-32768,-32768, 110,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 72,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 213, 213,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 12,-32768,-32768,-32768,-32768,-32768, 213, 46, --32768,-32768, 3,-32768,-32768,-32768, 26,-32768, 26,-32768, --32768, 99,-32768 -}; - -static const short yypgoto[] = {-32768, --32768,-32768,-32768, 91, -65,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 87,-32768,-32768, 127,-32768, 109, --32768, -26,-32768, 120,-32768, 80, 93,-32768,-32768, 19, - -6, 95, -66, -46, -9, -63, -62,-32768, -83, -55, - 71,-32768, 75,-32768,-32768, 25,-32768,-32768,-32768, 69, --32768,-32768, 65,-32768, 79 -}; - - -#define YYLAST 245 - - -static const short yytable[] = { 85, - 107, 93, 94, 126, 47, 120, -109, 127, 30, 172, - 2, -109, 36, 37, 26, 75, 34, 35, 3, 97, - 80, 27, 4, 5, 71, 6, 33, 7, 145, 75, - 72, 8, 9, 10, 80, 46, 11, 73, 132, 48, - 141, -27, -27, 107, 76, 77, 78, 79, 74, 139, - 76, 77, 78, 79, 143, 65, 168, 120, 12, 132, - 159, 126, 36, 37, 160, 127, 13, 133, 105, 97, - 85, 66, 93, 94, 74, 75, 76, 77, 78, 79, - 80, 81, 27, 82, 67, 164, 3, 68, 69, 143, - 83, 84, 70, 166, 85, 7, 83, 84, 173, 8, - 9, 10, 32, 143, 11, 76, 77, 78, 79, 99, - 81, 100, 82, 27, 76, 77, 78, 79, 123, 81, - 49, 82, 83, 84, 133, 76, 77, 78, 79, 101, - 102, 103, 104, 105, 13, 76, 77, 78, 79, 123, - 81, 40, 82, 161, 117, 118, 119, 39, 133, 64, - 130, 83, 84, 165, 158, 124, 125, 161, 95, 171, - 83, 84, 76, 77, 78, 79, 41, 27, 42, 43, - 44, 133, 96, 42, 43, 44, 124, 125, 50, 131, - 144, 83, 84, -63, 153, 155, 134, 135, 146, -63, - 140, 170, 148, 149, 150, 95, 151, 51, 117, 118, - 119, 142, 0, 52, -31, -31, 157, 147, 0, 96, - 53, 0, 0, 154, 54, 0, 0, 55, 0, 0, - 156, 99, 81, 100, 82, 74, 0, 76, 77, 78, - 79, 0, 0, -31, -31, 76, 77, 78, 79, 0, - 0, 101, 102, 103, 104 -}; - -static const short yycheck[] = { 65, - 67, 65, 65, 70, 31, 69, 4, 70, 9, 0, - 1, 9, 25, 26, 4, 4, 54, 55, 9, 66, - 9, 11, 13, 14, 50, 16, 9, 18, 112, 4, - 56, 22, 23, 24, 9, 50, 27, 64, 85, 50, - 107, 54, 55, 110, 5, 6, 7, 8, 3, 96, - 5, 6, 7, 8, 110, 58, 54, 121, 49, 106, - 144, 128, 25, 26, 53, 128, 57, 15, 33, 116, - 136, 58, 136, 136, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 58, 40, 9, 58, 58, 145, - 51, 52, 58, 160, 160, 18, 51, 52, 0, 22, - 23, 24, 12, 159, 27, 5, 6, 7, 8, 9, - 10, 11, 12, 11, 5, 6, 7, 8, 9, 10, - 34, 12, 51, 52, 15, 5, 6, 7, 8, 29, - 30, 31, 32, 33, 57, 5, 6, 7, 8, 9, - 10, 22, 12, 153, 42, 43, 44, 21, 15, 41, - 71, 51, 52, 160, 136, 46, 47, 167, 38, 169, - 51, 52, 5, 6, 7, 8, 17, 11, 19, 20, - 21, 15, 52, 19, 20, 21, 46, 47, 9, 85, - 110, 51, 52, 50, 116, 121, 53, 54, 114, 56, - 98, 167, 35, 36, 37, 38, 39, 28, 42, 43, - 44, 109, -1, 34, 25, 26, 128, 115, -1, 52, - 41, -1, -1, 121, 45, -1, -1, 48, -1, -1, - 128, 9, 10, 11, 12, 3, -1, 5, 6, 7, - 8, -1, -1, 54, 55, 5, 6, 7, 8, -1, - -1, 29, 30, 31, 32 -}; -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ - - -/* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -#ifndef alloca -#ifdef __GNUC__ -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) -#include <alloca.h> -#else /* not sparc */ -#if defined (MSDOS) && !defined (__TURBOC__) -#include <malloc.h> -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -#include <malloc.h> - #pragma alloca -#else /* not MSDOS, __TURBOC__, or _AIX */ -#ifdef __hpux -#ifdef __cplusplus -extern "C" { -void *alloca (unsigned int); -}; -#else /* not __cplusplus */ -void *alloca (); -#endif /* not __cplusplus */ -#endif /* __hpux */ -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc. */ -#endif /* not GNU C. */ -#endif /* alloca not defined. */ - -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY -2 -#define YYEOF 0 -#define YYACCEPT return(0) -#define YYABORT return(1) -#define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ -#define YYFAIL goto yyerrlab -#define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ - yychar1 = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -#ifndef YYPURE -#define YYLEX yylex() -#endif - -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval, &yylloc) -#endif -#else /* not YYLSP_NEEDED */ -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval) -#endif -#endif /* not YYLSP_NEEDED */ -#endif - -/* If nonreentrant, generate the variables here */ - -#ifndef YYPURE - -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ - -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ -#endif - -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ - -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ -#endif - -/* YYINITDEPTH indicates the initial size of the parser's stacks */ - -#ifndef YYINITDEPTH -#define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ - -#if YYMAXDEPTH == 0 -#undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 -#endif - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -int yyparse (void); -#endif - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) -#else /* not GNU C or C++ */ -#ifndef __cplusplus - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (to, from, count) - char *to; - char *from; - int count; -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - -#else /* __cplusplus */ - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (char *to, char *from, int count) -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - -#endif -#endif - - - -/* The user can define YYPARSE_PARAM as the name of an argument to be passed - into yyparse. The argument should have type void *. - It should actually point to an object. - Grammar actions can access the variable by casting it - to the proper pointer type. */ - -#ifdef YYPARSE_PARAM -#ifdef __cplusplus -#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* not __cplusplus */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -#endif /* not __cplusplus */ -#else /* not YYPARSE_PARAM */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* not YYPARSE_PARAM */ - -int -yyparse(YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL -{ - register int yystate; - register int yyn; - register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1 = 0; /* lookahead token as an internal (translated) token number */ - - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ - - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ - -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; - -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) -#else -#define YYPOPSTACK (yyvsp--, yyssp--) -#endif - - int yystacksize = YYINITDEPTH; - -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; -#endif -#endif - - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ - - int yylen; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss - 1; - yyvsp = yyvs; -#ifdef YYLSP_NEEDED - yylsp = yyls; -#endif - -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: - - *++yyssp = yystate; - - if (yyssp >= yyss + yystacksize - 1) - { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif - - /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; - -#ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ -#ifdef YYLSP_NEEDED - /* This used to be a conditional around just the two extra args, - but that might be undefined if yyoverflow is a macro. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); -#else - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -#endif - - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif -#else /* no yyoverflow */ - /* Extend the stack our own way. */ - if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - return 2; - } - yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) - yystacksize = YYMAXDEPTH; - yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); - yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); -#endif -#endif /* no yyoverflow */ - - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; -#endif - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif - - if (yyssp >= yyss + yystacksize - 1) - YYABORT; - } - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); -#endif - - goto yybackup; - yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* yychar is either YYEMPTY or YYEOF - or a valid token in external form. */ - - if (yychar == YYEMPTY) - { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); -#endif - yychar = YYLEX; - } - - /* Convert token to internal form (in yychar1) for indexing tables with */ - - if (yychar <= 0) /* This means end of input. */ - { - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); -#endif - } - else - { - yychar1 = YYTRANSLATE(yychar); - -#if YYDEBUG != 0 - if (yydebug) - { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT - YYPRINT (stderr, yychar, yylval); -#endif - fprintf (stderr, ")\n"); - } -#endif - } - - yyn += yychar1; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) - goto yydefault; - - yyn = yytable[yyn]; - - /* yyn is what to do for this token type in this state. - Negative => reduce, -yyn is rule number. - Positive => shift, yyn is new state. - New state is final state => don't bother to shift, - just return success. - 0, or most negative number => error. */ - - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrlab; - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); -#endif - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; - - yystate = yyn; - goto yynewstate; - -/* Do the default action for the current state. */ -yydefault: - - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - -/* Do a reduction. yyn is the number of a rule to reduce with. */ -yyreduce: - yylen = yyr2[yyn]; - if (yylen > 0) - yyval = yyvsp[1-yylen]; /* implement default value of the action */ - -#if YYDEBUG != 0 - if (yydebug) - { - int i; - - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); - - /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); - } -#endif - - - switch (yyn) { - -case 1: -{ - yyval.binary_node = NULL; - ; - break;} -case 2: -{ - TRACE1("-cdo\n"); - yyval.binary_node = yyvsp[-1].binary_node; - ; - break;} -case 3: -{ - yyval.binary_node = yyvsp[-1].binary_node; - if (yyval.binary_node == NULL) { - css_tree_root = yyvsp[0].binary_node; - yyval.binary_node = css_tree_root; - } - else - LeftAppendNode(yyval.binary_node, yyvsp[0].binary_node); - ; - break;} -case 4: -{ - css_node tmp; - tmp = NewNode(NODE_RULESET_LIST, NULL, NULL, yyvsp[0].binary_node); - - yyval.binary_node = yyvsp[-1].binary_node; - if (yyval.binary_node == NULL) { - css_tree_root = tmp; - yyval.binary_node = css_tree_root; - } - else - LeftAppendNode(yyval.binary_node, tmp); - ; - break;} -case 5: -{ - TRACE1("-cdc\n"); - yyval.binary_node = yyvsp[-1].binary_node; - ; - break;} -case 6: -{ - yyerrok; - yyclearin; - ; - break;} -case 7: -{ - yyval.binary_node = NewNode(NODE_IMPORT_LIST, NULL, NULL, yyvsp[0].binary_node); - ; - break;} -case 8: -{ - yyval.binary_node = NewNode(NODE_FONTDEF_LIST, NULL, NULL, yyvsp[0].binary_node); - ; - break;} -case 9: -{ - yyval.binary_node = yyvsp[-1].binary_node; - ; - break;} -case 10: -{ - yyval.binary_node = yyvsp[-1].binary_node; - ; - break;} -case 11: -{ - yyval.binary_node = NewNode(NODE_IMPORT_STRING, css_text, NULL, NULL); - ; - break;} -case 12: -{ - TRACE1("-import url\n"); - yyvsp[0].binary_node->node_id = NODE_IMPORT_URL; - yyval.binary_node = yyvsp[0].binary_node; - ; - break;} -case 13: -{ - TRACE1("-unary_op '-'\n"); - yyval.binary_node = NewNode(NODE_UNARY_OP, css_text, NULL, NULL); - ; - break;} -case 14: -{ - TRACE1("-unary_op '+'\n"); - yyval.binary_node = NewNode(NODE_UNARY_OP, css_text, NULL, NULL); - ; - break;} -case 15: -{ - TRACE1("-empty operator\n"); - yyval.binary_node = NewNode(NODE_EMPTY_OP, NULL, NULL, NULL); - ; - break;} -case 16: -{ - TRACE1("-operator : '/'\n"); - yyval.binary_node = NewNode(NODE_EXPR_OP, css_text, NULL, NULL); - ; - break;} -case 17: -{ - TRACE1("-operator : ','\n"); - yyval.binary_node = NewNode(NODE_EXPR_OP, css_text, NULL, NULL); - ; - break;} -case 18: -{ - TRACE2("-property : IDENT '%s'\n", css_text); - yyval.binary_node = NewNode(NODE_PROPERTY, css_text, NULL, NULL); - ; - break;} -case 19: -{ - yyval.binary_node = NewNode(NODE_PROPERTY, css_text, NULL, NULL); - ; - break;} -case 20: -{ - TRACE2("-property : BACKGROUND '%s'\n", css_text); - ClearBackground(); - yyval.binary_node = NULL; - /* This shorthand property will generate five component properties. */ - ; - break;} -case 21: -{ - TRACE2("-property : FONT '%s'\n", css_text); - ClearFont(); - yyval.binary_node = NULL; - /* This shorthand property will generate six component properties. */ - ; - break;} -case 22: -{ - ClearListStyle(); - yyval.binary_node = NULL; - /* This shorthand property will generate three component properties. */ - ; - break;} -case 23: -{ - ClearBorder(); - yyval.binary_node = NULL; - /* This shorthand property will generate 2 or 3 component properties. */ - ; - break;} -case 24: -{ - TRACE1("-selector_list { declaration_list }\n"); - yyval.binary_node = NewNode(NODE_RULESET, NULL, yyvsp[-3].binary_node, yyvsp[-1].binary_node); - ; - break;} -case 25: -{ - TRACE1("-selector\n"); - yyval.binary_node = NewNode(NODE_SELECTOR_LIST, NULL, NULL, yyvsp[0].binary_node); - ; - break;} -case 26: -{ - css_node tmp; - TRACE1("-selector_list , selector\n"); - tmp = NewNode(NODE_SELECTOR_LIST, NULL, NULL, yyvsp[0].binary_node); - - yyval.binary_node = yyvsp[-2].binary_node; - if( yyval.binary_node == NULL ) - yyval.binary_node = tmp; - else - LeftAppendNode( yyval.binary_node, tmp ); - ; - break;} -case 27: -{ - TRACE1("-simple_selector\n"); - yyval.binary_node = NewNode(NODE_SELECTOR, NULL, yyvsp[0].binary_node, NULL); -; - break;} -case 28: -{ - TRACE1("-simple_selector : pseudo_element\n"); - yyval.binary_node = NewNode(NODE_SELECTOR, NULL, yyvsp[-1].binary_node, yyvsp[0].binary_node); -; - break;} -case 29: -{ - TRACE1("-contextual_selector\n"); - yyval.binary_node = NewNode(NODE_SELECTOR, NULL, yyvsp[0].binary_node, NULL); -; - break;} -case 30: -{ - TRACE1("-contextual_selector : pseudo_element\n"); - yyval.binary_node = NewNode(NODE_SELECTOR, NULL, yyvsp[-1].binary_node, yyvsp[0].binary_node); -; - break;} -case 31: -{ - TRACE1("-contextual_selector_list simple_selector\n"); - yyval.binary_node = NewNode(NODE_SELECTOR_CONTEXTUAL, NULL, yyvsp[-1].binary_node, yyvsp[0].binary_node); -; - break;} -case 32: -{ - TRACE1("-simple_selector\n"); - yyval.binary_node = NewNode(NODE_SELECTOR_CONTEXTUAL, NULL, NULL, yyvsp[0].binary_node); - ; - break;} -case 33: -{ - TRACE1("-contextual_selector_list simple_selector\n"); - yyval.binary_node = NewNode(NODE_SELECTOR_CONTEXTUAL, NULL, yyvsp[-1].binary_node, yyvsp[0].binary_node); - ; - break;} -case 34: -{ - TRACE1("-element_name\n"); - yyval.binary_node = NewNode(NODE_SIMPLE_SELECTOR_NAME_ONLY, NULL, yyvsp[0].binary_node, NULL); - ; - break;} -case 35: -{ - TRACE1("-dot class\n"); - yyval.binary_node = NewNode(NODE_SIMPLE_SELECTOR_DOT_AND_CLASS, NULL, yyvsp[0].binary_node, NULL); - ; - break;} -case 36: -{ - TRACE1("-id\n"); - yyval.binary_node = NewNode(NODE_SIMPLE_SELECTOR_ID_SELECTOR, NULL, yyvsp[0].binary_node, NULL); - ; - break;} -case 37: -{ - TRACE1("-element dot class\n"); - yyval.binary_node = NewNode(NODE_SIMPLE_SELECTOR_NAME_AND_CLASS, NULL, yyvsp[-2].binary_node, yyvsp[0].binary_node); - ; - break;} -case 38: -{ - TRACE1("-element pseudo_class\n"); - yyval.binary_node = NewNode(NODE_SIMPLE_SELECTOR_NAME_PSEUDO_CLASS, NULL, yyvsp[-1].binary_node, yyvsp[0].binary_node); - ; - break;} -case 39: -{ - TRACE2("-element_name '%s' dot class pseudo_class\n", yyvsp[-3].binary_node->string); - yyvsp[-3].binary_node->node_id = NODE_SIMPLE_SELECTOR_NAME_CLASS_PSEUDO_CLASS; - yyvsp[-3].binary_node->left = yyvsp[-1].binary_node; - yyvsp[-3].binary_node->right = yyvsp[0].binary_node; - yyval.binary_node = yyvsp[-3].binary_node; - ; - break;} -case 40: -{ - TRACE1("-dot class pseudo_class\n"); - yyval.binary_node = NewNode(NODE_SIMPLE_SELECTOR_NAME_CLASS_PSEUDO_CLASS, "A", yyvsp[-1].binary_node, yyvsp[0].binary_node); - ; - break;} -case 41: -{ - css_node tmp; - TRACE1("solitary pseudo_class\n"); - /* See CSS1 spec of 17 December 1996 section 2.1 Anchor pseudo-classes */ - tmp = NewNode(NODE_ELEMENT_NAME, "A", NULL, NULL); - yyval.binary_node = NewNode(NODE_SIMPLE_SELECTOR_NAME_PSEUDO_CLASS, NULL, tmp, yyvsp[0].binary_node); - ; - break;} -case 42: -{ - yyval.binary_node = NewNode(NODE_WILD, NULL, NULL, NULL); - ; - break;} -case 43: -{ - TRACE2("-IDENT '%s' to element_name\n", css_text); - yyval.binary_node = NewNode(NODE_ELEMENT_NAME, css_text, NULL, NULL); - ; - break;} -case 44: -{ - TRACE2("-IDENT '%s' to class\n", css_text); - yyval.binary_node = NewNode(NODE_CLASS, css_text, NULL, NULL); - ; - break;} -case 45: -{ - TRACE2("-IDENT '%s' to id\n", css_text); - yyval.binary_node = NewNode(NODE_ID_SELECTOR, css_text, NULL, NULL); - ; - break;} -case 46: -{ - yyval.binary_node = NewNode(NODE_LINK_PSCLASS, css_link, NULL, NULL); - ; - break;} -case 47: -{ - yyval.binary_node = NewNode(NODE_VISITED_PSCLASS, css_visited, NULL, NULL); - ; - break;} -case 48: -{ - yyval.binary_node = NewNode(NODE_ACTIVE_PSCLASS, css_active, NULL, NULL); - ; - break;} -case 49: -{ - yyval.binary_node = NewNode(NODE_LINK_PSCLASS, css_link, NULL, NULL); - ; - break;} -case 50: -{ - yyval.binary_node = NewNode(NODE_VISITED_PSCLASS, css_visited, NULL, NULL); - ; - break;} -case 51: -{ - yyval.binary_node = NewNode(NODE_ACTIVE_PSCLASS, css_active, NULL, NULL); - ; - break;} -case 52: -{ - TRACE2("-IDENT '%s' to pseudo_element\n", css_text); - yyval.binary_node = NewNode(NODE_PSEUDO_ELEMENT, "first-Line", NULL, NULL); - ; - break;} -case 53: -{ - TRACE2("-IDENT '%s' to pseudo_element\n", css_text); - yyval.binary_node = NewNode(NODE_PSEUDO_ELEMENT, "first-Letter", NULL, NULL); - ; - break;} -case 54: -{ - TRACE1("-declaration\n"); - yyval.binary_node = yyvsp[0].binary_node; - ; - break;} -case 55: -{ - /* to keep the order, append the new node to the end. */ - TRACE1("-declaration_list ';' declaration\n"); - yyval.binary_node = yyvsp[-2].binary_node; - if (NULL == yyval.binary_node) - yyval.binary_node = yyvsp[0].binary_node; - else - LeftAppendNode(yyval.binary_node, yyvsp[0].binary_node); - ; - break;} -case 56: -{ - TRACE1("-empty declaration\n"); - yyval.binary_node = NewNode(NODE_DECLARATION_LIST, NULL, NULL, NULL); - ; - break;} -case 57: -{ - css_node dcl; - TRACE1("-property : expr\n"); - dcl = NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, yyvsp[-3].binary_node, yyvsp[-1].binary_node); - yyval.binary_node = NewNode(NODE_DECLARATION_LIST, NULL, NULL, dcl); - ; - break;} -case 58: -{ - css_node expr, dcl; - expr = NewNode(NODE_EXPR, NULL, NULL, yyvsp[-1].binary_node); - dcl = NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, yyvsp[-3].binary_node, expr); - yyval.binary_node = NewNode(NODE_DECLARATION_LIST, NULL, NULL, dcl); - ; - break;} -case 59: -{ - /* The priority notation is ignored by the translator - * so we conveniently ignore it here, too. - */ - TRACE1("-background property : background_values_list\n"); - yyval.binary_node = AssembleBackground(); - ; - break;} -case 60: -{ - TRACE1("-font property : font_values_list prio\n"); - /* The priority notation is ignored by the translator - * so we conveniently ignore it here, too. - */ - yyval.binary_node = AssembleFont(); - ; - break;} -case 61: -{ - yyval.binary_node = AssembleListStyle(); - ; - break;} -case 62: -{ - yyval.binary_node = AssembleBorder(); - ; - break;} -case 63: -{ /* nothing */ ; - break;} -case 65: -{ /* !important */ - TRACE1("-IMPORTANT_SYM\n"); - yyval.binary_node = NULL; - ; - break;} -case 66: -{ - TRACE1("-term\n"); - yyval.binary_node = NewNode(NODE_EXPR, NULL, NULL, yyvsp[0].binary_node); - ; - break;} -case 67: -{ - TRACE1("-expr op term\n"); - - yyval.binary_node = yyvsp[-2].binary_node; - /* put the new term at the end */ - yyvsp[-1].binary_node->right = yyvsp[0].binary_node; - - if (yyval.binary_node == NULL) - yyval.binary_node = yyvsp[-1].binary_node; - else - LeftAppendNode( yyval.binary_node, yyvsp[-1].binary_node ); - ; - break;} -case 74: -{ - TRACE1("-unary_operator signed_const to term\n"); - yyval.binary_node = yyvsp[-1].binary_node; - yyval.binary_node->left = yyvsp[0].binary_node; - ; - break;} -case 75: -{ - yyval.binary_node = NewNode(NODE_NUMBER, css_text, NULL, NULL); - ; - break;} -case 77: -{ - yyval.binary_node = yyvsp[-1].binary_node; - yyval.binary_node->left = yyvsp[0].binary_node; - ; - break;} -case 78: -{ - yyval.binary_node = NewNode(NODE_PERCENTAGE, css_text, NULL, NULL); - ; - break;} -case 79: -{ - yyval.binary_node = NewNode(NODE_LENGTH, css_text, NULL, NULL); - ; - break;} -case 80: -{ - yyval.binary_node = NewNode(NODE_EMS, css_text, NULL, NULL); - ; - break;} -case 81: -{ - yyval.binary_node = NewNode(NODE_EMS, css_text, NULL, NULL); - ; - break;} -case 82: -{ - yyval.binary_node = NewNode(NODE_STRING, css_text, NULL, NULL); - ; - break;} -case 83: -{ - TRACE2("-IDENT '%s' to unsigned_symbol\n", css_text); - yyval.binary_node = NewNode(NODE_IDENT, css_text, NULL, NULL); - ; - break;} -case 84: -{ - yyval.binary_node = NewNode(NODE_URL, css_text, NULL, NULL); - ; - break;} -case 85: -{ - yyval.binary_node = NewNode(NODE_HEXCOLOR, css_text, NULL, NULL); - ; - break;} -case 86: -{ - yyval.binary_node = NewNode(NODE_RGB, css_text, NULL, NULL); - ; - break;} -case 94: -{ - yyval.binary_node = NewDeclarationNode(NODE_URL, css_text, bg_image); - AddBackground(BackgroundImage, yyval.binary_node); - ; - break;} -case 95: -{ - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, bg_image); - AddBackground(BackgroundImage, yyval.binary_node); - ; - break;} -case 96: -{ - yyval.binary_node = NewComponentNode(yyvsp[0].binary_node, bg_color); - AddBackground(BackgroundColor, yyval.binary_node); - ; - break;} -case 97: -{ - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, bg_color); - AddBackground(BackgroundColor, yyval.binary_node); - ; - break;} -case 98: -{ - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, bg_color); - AddBackground(BackgroundColor, yyval.binary_node); - ; - break;} -case 99: -{ - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, "background-repeat"); - AddBackground(BackgroundRepeat, yyval.binary_node); - ; - break;} -case 100: -{ - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, "background-attachment"); - AddBackground(BackgroundAttachment, yyval.binary_node); - ; - break;} -case 101: -{ - css_node property, declaration; - property = NewNode(NODE_PROPERTY, bg_position, NULL, NULL); - declaration = NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, - property, yyvsp[0].binary_node); - AddBackground(BackgroundPosition, declaration); - ; - break;} -case 102: -{ - yyval.binary_node = NewNode(NODE_EXPR, NULL, NULL, yyvsp[0].binary_node); - ; - break;} -case 103: -{ - css_node operator; - yyval.binary_node = NewNode(NODE_EXPR, NULL, NULL, yyvsp[-1].binary_node); - operator = NewNode(NODE_EMPTY_OP, NULL, NULL, yyvsp[0].binary_node); - if (yyval.binary_node == NULL) - yyval.binary_node = operator; - else - LeftAppendNode(yyval.binary_node, operator); - ; - break;} -case 104: -{ - yyval.binary_node = NewNode(NODE_EXPR, NULL, NULL, yyvsp[0].binary_node); - ; - break;} -case 105: -{ - css_node operator; - yyval.binary_node = yyvsp[-1].binary_node; - operator = NewNode(NODE_EMPTY_OP, NULL, NULL, yyvsp[0].binary_node); - if (yyval.binary_node == NULL) - yyval.binary_node = operator; - else - LeftAppendNode(yyval.binary_node, operator); - ; - break;} -case 106: -{ - yyval.binary_node = NewNode(NODE_IDENT, css_text, NULL, NULL); - ; - break;} -case 107: -{ - css_node tmp; - tmp = NewComponentNode(yyvsp[-1].binary_node, font_size); - AddFont(FontSize, tmp); - AddFont(FontFamily, yyvsp[0].binary_node); - yyval.binary_node = NULL; - ; - break;} -case 108: -{ - css_node tmp; - tmp = NewComponentNode(yyvsp[-3].binary_node, font_size); - AddFont(FontSize, tmp); - tmp = NewComponentNode(yyvsp[-1].binary_node, line_height); - AddFont(FontLeading, tmp); - AddFont(FontFamily, yyvsp[0].binary_node); - yyval.binary_node = NULL; - ; - break;} -case 109: -{ - TRACE1("-empty operator\n"); - yyval.binary_node = NewNode(NODE_EMPTY_OP, NULL, NULL, NULL); - ; - break;} -case 110: -{ - TRACE1("-operator : ','\n"); - yyval.binary_node = NewNode(NODE_EXPR_OP, css_text, NULL, NULL); - ; - break;} -case 111: -{ - css_node property; - TRACE1("-font_family_expr to font_family_value\n"); - property = NewNode(NODE_PROPERTY, font_family, NULL, NULL); - yyval.binary_node = NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, property, yyvsp[0].binary_node); - ; - break;} -case 112: -{ - TRACE1("-unsigned_symbol\n"); - yyval.binary_node = NewNode(NODE_EXPR, NULL, NULL, yyvsp[0].binary_node); - ; - break;} -case 113: -{ - TRACE1("-font_family_value font_family_op unsigned_symbol\n"); - - yyval.binary_node = yyvsp[-2].binary_node; - /* put the new term at the end */ - yyvsp[-1].binary_node->right = yyvsp[0].binary_node; - - if (yyval.binary_node == NULL) - yyval.binary_node = yyvsp[-1].binary_node; - else - LeftAppendNode( yyval.binary_node, yyvsp[-1].binary_node ); - ; - break;} -case 114: -{ /* empty */ - yyval.binary_node = NULL; - ; - break;} -case 115: -{ - yyval.binary_node = NULL; - ; - break;} -case 116: -{ - TRACE2("-FONT_STYLE '%s' to font_optional_value\n", css_text); - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, font_style); - AddFont(FontStyle, yyval.binary_node); - ; - break;} -case 117: -{ - TRACE2("-FONT_VARIANT '%s' to font_optional_value\n", css_text); - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, font_variant); - AddFont(FontVariant, yyval.binary_node); - ; - break;} -case 118: -{ - TRACE2("-FONT_WEIGHT '%s' to font_optional_value\n", css_text); - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, font_weight); - AddFont(FontWeight, yyval.binary_node); - ; - break;} -case 119: -{ - AddFont(FontNormal, NULL); - ; - break;} -case 121: -{ - yyval.binary_node = NewNode(NODE_IDENT, css_text, NULL, NULL); - ; - break;} -case 122: -{ - /* just drop the '+' on the floor */ - yyval.binary_node = yyvsp[0].binary_node; - ; - break;} -case 125: -{ - /* The only valid identifier is the word "normal". - * There's an idea that a normal leading value is font-specific, - * so the identifier is passed upwards. - */ - yyval.binary_node = NewNode(NODE_IDENT, css_text, NULL, NULL); - ; - break;} -case 128: -{ - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, list_style_type); - AddListStyle(ListStyleMarker, yyval.binary_node); - yyval.binary_node = NULL; - ; - break;} -case 129: -{ - AddListStyle(ListStyleNone, NULL); - yyval.binary_node = NULL; - ; - break;} -case 130: -{ - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, list_style_position); - AddListStyle(ListStylePosition, yyval.binary_node); - yyval.binary_node = NULL; - ; - break;} -case 131: -{ - yyval.binary_node = NewComponentNode(yyvsp[0].binary_node, list_style_image); - AddListStyle(ListStyleImage, yyval.binary_node); - yyval.binary_node = NULL; - ; - break;} -case 134: -{ - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, border_style); - AddBorder(BorderStyle, yyval.binary_node); - yyval.binary_node = NULL; - ; - break;} -case 135: -{ - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, border_width); - AddBorder(BorderWidth, yyval.binary_node); - yyval.binary_node = NULL; - ; - break;} -case 136: -{ - yyval.binary_node = NewComponentNode(yyvsp[0].binary_node, border_width); - AddBorder(BorderWidth, yyval.binary_node); - yyval.binary_node = NULL; - ; - break;} -case 137: -{ - yyval.binary_node = NewComponentNode(yyvsp[0].binary_node, border_color); - AddBorder(BorderColor, yyval.binary_node); - yyval.binary_node = NULL; - ; - break;} -case 138: -{ - yyval.binary_node = NewDeclarationNode(NODE_IDENT, css_text, border_color); - AddBorder(BorderColor, yyval.binary_node); - yyval.binary_node = NULL; - ; - break;} -} - /* the action file gets copied in in place of this dollarsign */ - - - yyvsp -= yylen; - yyssp -= yylen; -#ifdef YYLSP_NEEDED - yylsp -= yylen; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - - *++yyvsp = yyval; - -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } -#endif - - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTBASE]; - - goto yynewstate; - -yyerrlab: /* here on detecting error */ - - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ - { - ++yynerrs; - -#ifdef YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (yyn > YYFLAG && yyn < YYLAST) - { - int size = 0; - char *msg; - int x, count; - - count = 0; - /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) - { - strcpy(msg, "parse error"); - - if (count < 5) - { - count = 0; - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; - } - } - yyerror(msg); - free(msg); - } - else - yyerror ("parse error; also virtual memory exceeded"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror("parse error"); - } - - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ - - if (yyerrstatus == 3) - { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ - - /* return failure if at end of input */ - if (yychar == YYEOF) - YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif - - yychar = YYEMPTY; - } - - /* Else will try to reuse lookahead token - after shifting the error token. */ - - yyerrstatus = 3; /* Each real token shifted decrements this */ - - goto yyerrhandle; - -yyerrdefault: /* current state does not do anything special for the error token. */ - -#if 0 - /* This is wrong; only states that explicitly want error tokens - should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; -#endif - -yyerrpop: /* pop the current state because it cannot handle the error token */ - - if (yyssp == yyss) YYABORT; - yyvsp--; - yystate = *--yyssp; -#ifdef YYLSP_NEEDED - yylsp--; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - -yyerrhandle: - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; - - yyn += YYTERROR; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) - goto yyerrdefault; - - yyn = yytable[yyn]; - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrpop; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrpop; - - if (yyn == YYFINAL) - YYACCEPT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); -#endif - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - yystate = yyn; - goto yynewstate; -} - - -#include "xp_mem.h" -#include "xpassert.h" - -/* Memory allocated here will be freed by css_FreeNode in csstojs.c */ -static css_node NewNode(int node_id, char *ss, css_node left, css_node right) -{ - register css_node pp; - - if ((pp = XP_NEW(css_nodeRecord)) == NULL) - return NULL; - - pp->node_id = node_id; - pp->string = NULL; - if (ss) { - if ((pp->string = (char *) XP_ALLOC(strlen(ss) + 1)) != NULL) - (void) strcpy(pp->string, ss); - } - pp->left = left; - pp->right = right; - return pp; -} - - -/* Append new_node to the leftmost leaf of head */ -static void LeftAppendNode(css_node head, css_node new_node) -{ - if (head == NULL) - return; - - while (head->left != NULL) - head = head->left; - head->left = new_node; -} - - -static css_node NewDeclarationNode(int node_id, char *ss, char *prop) -{ - css_node value, expression, property; - value = NewNode(node_id, ss, NULL, NULL); - expression = NewNode(NODE_EXPR, NULL, NULL, value); - property = NewNode(NODE_PROPERTY, prop, NULL, NULL); - return NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, property, expression); -} - - -static css_node NewComponentNode(css_node value, char *prop) -{ - css_node expression, property; - expression = NewNode(NODE_EXPR, NULL, NULL, value); - property = NewNode(NODE_PROPERTY, prop, NULL, NULL); - return NewNode(NODE_DECLARATION_PROPERTY_EXPR, NULL, property, expression); -} - - -static void ClearFont(void) -{ - font.style = font.variant = font.weight = NULL; - font.size = font.leading = font.family = NULL; - font.normal_count = font.parse_error = 0; -} - - -static void AddFont(int node_type, css_node node) -{ - if (FontStyle == node_type && (! font.style)) - font.style = node; - else if (FontVariant == node_type && (! font.variant)) - font.variant = node; - else if (FontWeight == node_type && (! font.weight)) - font.weight = node; - else if (FontNormal == node_type) - font.normal_count++; - else if (FontSize == node_type && (! font.size)) - font.size = node; - else if (FontLeading == node_type && (! font.leading)) - font.leading = node; - else if (FontFamily == node_type && (! font.family)) - font.family = node; - else { - font.parse_error++; - if (node) css_FreeNode(node); - } -} - - -static css_node AssembleFont(void) -{ - css_node head, element; - int count; - - count = 0; - if (font.style) count++; - if (font.variant) count++; - if (font.weight) count++; - if (font.normal_count > (3 - count)) - font.parse_error++; - - if (font.parse_error) { - if (font.style) css_FreeNode(font.style); - if (font.variant) css_FreeNode(font.variant); - if (font.weight) css_FreeNode(font.weight); - if (font.size) css_FreeNode(font.size); - if (font.leading) css_FreeNode(font.leading); - if (font.family) css_FreeNode(font.family); - ClearFont(); - return NULL; - } - - if (! font.style) - font.style = NewDeclarationNode(NODE_IDENT, css_normal, font_style); - if (! font.variant) - font.variant = NewDeclarationNode(NODE_IDENT, css_normal, font_variant); - if (! font.weight) - font.weight = NewDeclarationNode(NODE_IDENT, css_normal, font_weight); - if (! font.leading) - font.leading = NewDeclarationNode(NODE_IDENT, css_normal, line_height); - - head = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.style); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.variant); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.weight); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.size); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.leading); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, font.family); - LeftAppendNode(head, element); - - ClearFont(); - return head; -} - - -static void ClearBackground(void) -{ - bg.color = bg.image = bg.repeat = NULL; - bg.attachment = bg.position = NULL; - bg.parse_error = 0; -} - - -static void AddBackground(int node_type, css_node node) -{ - if (BackgroundColor == node_type && (! bg.color)) - bg.color = node; - else if (BackgroundImage == node_type && (! bg.image)) - bg.image = node; - else if (BackgroundRepeat == node_type && (! bg.repeat)) - bg.repeat = node; - else if (BackgroundAttachment == node_type && (! bg.attachment)) - bg.attachment = node; - else if (BackgroundPosition == node_type && (! bg.position)) - bg.position = node; - else { - bg.parse_error++; - css_FreeNode(node); - } -} - - -static css_node AssembleBackground(void) -{ - css_node head, element; - - if (bg.parse_error) { - if (bg.color) - css_FreeNode(bg.color); - if (bg.image) - css_FreeNode(bg.image); - if (bg.repeat) - css_FreeNode(bg.repeat); - if (bg.attachment) - css_FreeNode(bg.attachment); - if (bg.position) - css_FreeNode(bg.position); - ClearBackground(); - return NULL; - } - - if (! bg.color) - bg.color = NewDeclarationNode(NODE_IDENT, css_transparent, bg_color); - if (! bg.image) - bg.image = NewDeclarationNode(NODE_IDENT, css_none, bg_image); - if (! bg.repeat) - bg.repeat = NewDeclarationNode(NODE_IDENT, css_repeat, bg_repeat); - if (! bg.attachment) - bg.attachment = NewDeclarationNode(NODE_IDENT, css_scroll, bg_attachment); - if (! bg.position) - bg.position = NewDeclarationNode(NODE_PERCENTAGE, css_origin, - bg_position); - - head = NewNode(NODE_DECLARATION_LIST, NULL, NULL, bg.color); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, bg.image); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, bg.repeat); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, bg.attachment); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, bg.position); - LeftAppendNode(head, element); - - ClearBackground(); - return head; -} - - -static void ClearListStyle(void) -{ - ls.marker = ls.image = ls.position = NULL; - ls.none_count = ls.parse_error = 0; -} - -static void AddListStyle(int node_type, css_node node) -{ - if (ListStyleMarker == node_type && (! ls.marker)) - ls.marker = node; - else if (ListStyleImage == node_type && (! ls.image)) - ls.image = node; - else if (ListStylePosition == node_type && (! ls.position)) - ls.position = node; - else if (ListStyleNone == node_type) - ls.none_count++; - else { - ls.parse_error++; - if (node) css_FreeNode(node); - } -} - -static css_node AssembleListStyle(void) -{ - css_node head, element; - int count; - char * marker_value; - - count = 0; - if (ls.marker) count++; - if (ls.image) count++; - if (ls.none_count > (2 - count)) - ls.parse_error++; - - if (ls.parse_error) { - if (ls.marker) css_FreeNode(ls.marker); - if (ls.image) css_FreeNode(ls.image); - if (ls.position) css_FreeNode(ls.position); - ClearListStyle(); - return NULL; - } - - if (! ls.marker) { - /* list-style: none - * could mean marker or image. It should set the marker; - * the image will default to none. - */ - marker_value = ls.none_count ? css_none : css_disc; - ls.marker = NewDeclarationNode(NODE_IDENT, marker_value, - list_style_type); - } - if (! ls.image) - ls.image = NewDeclarationNode(NODE_IDENT, css_none, list_style_image); - if (! ls.position) - ls.position = NewDeclarationNode(NODE_IDENT, css_outside, - list_style_position); - - head = NewNode(NODE_DECLARATION_LIST, NULL, NULL, ls.marker); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, ls.image); - LeftAppendNode(head, element); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, ls.position); - LeftAppendNode(head, element); - - ClearListStyle(); - return head; -} - - -static void ClearBorder(void) -{ - border.width = border.style = border.color = (css_node) NULL; - border.parse_error = 0; -} - -static void AddBorder(int node_type, css_node node) -{ - if (BorderWidth == node_type && (! border.width)) - border.width = node; - else if (BorderStyle == node_type && (! border.style)) - border.style = node; - else if (BorderColor == node_type && (! border.color)) - border.color = node; - else { - border.parse_error++; - if (node) css_FreeNode(node); - } -} - -static css_node AssembleBorder(void) -{ - css_node head, element; - - if (border.parse_error) { - if (border.width) css_FreeNode(border.width); - if (border.style) css_FreeNode(border.style); - if (border.color) css_FreeNode(border.color); - ClearBorder(); - return (css_node) NULL; - } - - if (! border.width) - border.width = NewDeclarationNode(NODE_IDENT, css_medium, border_width); - if (! border.style) - border.style = NewDeclarationNode(NODE_IDENT, css_none, border_style); - - head = NewNode(NODE_DECLARATION_LIST, NULL, NULL, border.width); - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, border.style); - LeftAppendNode(head, element); - if (border.color) { - element = NewNode(NODE_DECLARATION_LIST, NULL, NULL, border.color); - LeftAppendNode(head, element); - } - - ClearBorder(); - return head; -} - -/* css_overflow is only for parsers generated by bison. */ -static void css_overflow(const char *message, short **yyss1, int yyss1_size, - YYSTYPE **yyvs1, int yyvs1_size, int *yystacksize) -{ - short * yyss2; - YYSTYPE * yyvs2; - int new_size; - - - if (*yystacksize >= YYMAXDEPTH) - return; - - new_size = *yystacksize * 2; - if (new_size > YYMAXDEPTH) - new_size = YYMAXDEPTH; - - if (*yystacksize == YYINITDEPTH) { - /* First time allocating from the heap. */ - yyss2 = (short *) XP_ALLOC(new_size * sizeof(short)); - if (yyss2) - (void) memcpy((void *)yyss2, (void *) *yyss1, yyss1_size); - yyvs2 = XP_ALLOC(new_size * sizeof(YYSTYPE)); - if (yyvs2) - (void) memcpy((void *)yyvs2, (void *) *yyvs1, yyvs1_size); - } else { - yyss2 = (short *) XP_REALLOC(*yyss1, new_size * sizeof(short)); - yyvs2 = XP_REALLOC(*yyvs1, new_size * sizeof(YYSTYPE)); - } - - if (yyss2 && yyvs2) { - *yyss1 = yyss2; - *yyvs1 = yyvs2; - *yystacksize = new_size; - } - - /* Any failure to allocate will be noticed by the caller. */ -} - diff --git a/mozilla/lib/libstyle/csstab.h b/mozilla/lib/libstyle/csstab.h deleted file mode 100644 index 63dc0f91507..00000000000 --- a/mozilla/lib/libstyle/csstab.h +++ /dev/null @@ -1,75 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -typedef union { - css_node binary_node; -} YYSTYPE; -#define NUMBER 258 -#define STRING 259 -#define PERCENTAGE 260 -#define LENGTH 261 -#define EMS 262 -#define EXS 263 -#define IDENT 264 -#define HEXCOLOR 265 -#define URL 266 -#define RGB 267 -#define CDO 268 -#define CDC 269 -#define IMPORTANT_SYM 270 -#define IMPORT_SYM 271 -#define DOT_AFTER_IDENT 272 -#define DOT 273 -#define LINK_PSCLASS 274 -#define VISITED_PSCLASS 275 -#define ACTIVE_PSCLASS 276 -#define LEADING_LINK_PSCLASS 277 -#define LEADING_VISITED_PSCLASS 278 -#define LEADING_ACTIVE_PSCLASS 279 -#define FIRST_LINE 280 -#define FIRST_LETTER 281 -#define WILD 282 -#define BACKGROUND 283 -#define BG_COLOR 284 -#define BG_IMAGE 285 -#define BG_REPEAT 286 -#define BG_ATTACHMENT 287 -#define BG_POSITION 288 -#define FONT 289 -#define FONT_STYLE 290 -#define FONT_VARIANT 291 -#define FONT_WEIGHT 292 -#define FONT_SIZE 293 -#define FONT_NORMAL 294 -#define LINE_HEIGHT 295 -#define LIST_STYLE 296 -#define LS_TYPE 297 -#define LS_NONE 298 -#define LS_POSITION 299 -#define BORDER 300 -#define BORDER_STYLE 301 -#define BORDER_WIDTH 302 -#define FONT_SIZE_PROPERTY 303 -#define FONTDEF 304 - - -extern YYSTYPE css_lval; diff --git a/mozilla/lib/libstyle/csstojs.c b/mozilla/lib/libstyle/csstojs.c deleted file mode 100644 index 62ebfeb6678..00000000000 --- a/mozilla/lib/libstyle/csstojs.c +++ /dev/null @@ -1,986 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* CSStoJS tranlation code */ - -#include "xp.h" -#include "css.h" -#include "cssI.h" - -/* ALLOW_IMPORT - * Switch allows or stops the translation of @import rules. - */ -#define ALLOW_IMPORT 0 - -/* ALLOW_FONTDEF - * Switch allows or stops the translation of @fontdef rules. - */ -#define ALLOW_FONTDEF 1 - -/* ALLOW_PRIORITY - * Switch allows or stops the translation of "!important" in the value. - */ -#define ALLOW_PRIORITY 0 - -/* ALLOW_PSEUDO_ELEMENTS - * Switch allows or prevents the translation of rules with pseudo-elements - * :first-line and :first-letter in the selector. - */ -#define ALLOW_PSEUDO_ELEMENTS 0 - -/* ALLOW_ACTIVE_PSEUDO_CLASS - * Switch allows or prevents the translation of rules with pseudo-class - * :active in the selector. - */ -#define ALLOW_ACTIVE_PSEUDO_CLASS 0 - -#define STYLE_INITIAL_BUFSIZ 1024 -#define STYLE_INCR_BUFSIZ 1024 - -/* property type values */ -#define CSS_PROPERTY_TYPE_ASSIGNMENT (1) -#define CSS_PROPERTY_TYPE_CALL (2) -/* pseudo class type values */ -#define CSS_PSEUDO_CLASS_NONE (0) -#define CSS_PSEUDO_CLASS_LINK (1) -#define CSS_PSEUDO_CLASS_ACTIVE (2) -#define CSS_PSEUDO_CLASS_VISITED (3) - -typedef struct { - char * buffer; - int32 buffer_size; /* size of buffer in bytes */ - int32 buffer_count; /* bytes used */ - int32 prior_count; /* buffer_count at beginning of rule */ - int32 pseudo_class_state; /* holds temporary state during translation */ - XP_Bool ignore_rule; /* during translation, may decide to ignore a rule */ -} *StyleBuffer, StyleBufferRec; - -XP_BEGIN_PROTOS - -static XP_Bool ConvertStyleSheet(css_node stylesheet, StyleBuffer sb); -static void ConvertRule(css_node rule, StyleBuffer sb); -static void ConvertSelector(css_node selector, css_node pseudo_element, - StyleBuffer sb); -static void ConvertContextualSelector(css_node selector, css_node pseudo_element, - StyleBuffer sb); -static void ConvertSingleSelector(css_node simple, css_node pseudo_element, - StyleBuffer sb); -static void ConvertDeclaration(css_node declaration_list, StyleBuffer sb); -static void ConvertProperty(const char * css1_property, StyleBuffer sb, - int * property_type_return); -static void ConvertValue(css_node value, StyleBuffer sb, int property_type); -static void ConvertURLValue(char * url_value, StyleBuffer sb); -static void StripURLValue(char ** url_return, int * url_length_return); -static void ConvertStringValue(char * string_value, StyleBuffer sb); -static void StyleBufferWrite(char * str, int len, StyleBuffer sb); -static void AnteRule(StyleBuffer sb); -static void IgnoreRule(StyleBuffer sb); -static void PostRule(StyleBuffer sb); -static void SaltPseudoClass(const char * pseudo_class, StyleBuffer sb); -static int32 GetPseudoClass(StyleBuffer sb); - -#if (ALLOW_IMPORT || ALLOW_FONTDEF) -static void ConvertToLink(css_node ruleset, int rel_type, StyleBuffer sb); -static void EchoCSS(char * src, int32 src_count, StyleBuffer sb); -#endif - -XP_END_PROTOS - -static char * input_buffer; -static int32 input_buffer_count; /* bytes used, not including NULL */ -static int32 input_buffer_index; - -/* result and max_to_read are created and passed as int, not int32, on Win16. */ -void css_GetBuf(char * buf, int *result, int max_to_read) -{ - int i = 0; - - if (input_buffer) { - - while ((i < max_to_read) && (input_buffer_count > input_buffer_index)) - buf[i++] = input_buffer[input_buffer_index++]; - - if (0 == i) { - input_buffer = NULL; - input_buffer_count = input_buffer_index = 0; - } - } - - *result = i; - return; -} - -/* Java and JavaScript */ -static const char * reserved_words[] = { - "abstract", - "boolean", - "break", - "byte", - "case", - "catch", - "char", - "class", - "const", - "continue", - "default", - "delete", - "do", - "double", - "else", - "extends", - "false", - "final", - "finally", - "float", - "for", - "function", - "goto", - "if", - "implements", - "import", - "in", - "instanceof", - "int", - "interface", - "long", - "native", - "new", - "null", - "package", - "private", - "protected", - "public", - "return", - "short", - "static", - "super", - "switch", - "synchronized", - "this", - "throw", - "throws", - "transient", - "true", - "try", - "typeof", - "var", - "void", - "volatile", - "while", - "with" -}; - -static XP_Bool IsReservedWord(const char * css_name) -{ - int lower = 0; - int upper = (sizeof(reserved_words) / sizeof(char *)) - 1; - int x; - int32 result; - - while (upper >= lower) { - x = (lower + upper) / 2; - result = XP_STRCMP(css_name, reserved_words[x]); - if (result < 0) - upper = x - 1; - else if (result > 0) - lower = x + 1; - else - return 1; - } - return 0; -} - -/* CSS_ConvertToJSCompatibleName - * converts characters which are illegal in JavaScript names. - * - * Anne-Marie ==> Anne_Marie "-" (dash) always converts to "_" - * 5NewportRd ==> _5NewportRd 1st character a digit prepend "_" - * Convert lower to upper case when second parameter is true. - * When second parameter is false, prepend "_" to reserved words. - * Returns NULL on error. - */ -PUBLIC char * -CSS_ConvertToJSCompatibleName(char *css_name, XP_Bool uppercase_it) -{ - int32 len; - char *new_name; - char *cp; - XP_Bool reserved = 0; - - XP_ASSERT(css_name); - - if (!css_name) - return NULL; - - len = XP_STRLEN(css_name); - if (! uppercase_it) - reserved = IsReservedWord(css_name); - if (reserved || XP_IS_DIGIT(*css_name)) - len++; - - cp = new_name = XP_ALLOC((len+1) * sizeof(char)); - if (!new_name) - return NULL; - - if (reserved || XP_IS_DIGIT(*css_name)) { - *cp = '_'; - cp++; - } - - for(; *css_name; css_name++, cp++) - if (*css_name == '-') - *cp = '_'; - else - *cp = uppercase_it ? (XP_TO_UPPER(*css_name)) : *css_name; - - *cp = '\0'; - - return new_name; -} - - -PUBLIC -void CSS_ConvertToJS(char * src, int32 src_count, char ** dst, int32 * dst_count) -{ - StyleBuffer sb; - XP_Bool translated; - - *dst = NULL; - *dst_count = 0; - - if (NULL == src || 0 == src_count) - return; - - input_buffer = src; - input_buffer_count = src_count; - input_buffer_index = 0; - - css_tree_root = NULL; - if (css_parse() != 0) - return; - - sb = XP_NEW_ZAP(StyleBufferRec); - if (sb == NULL) - return; - - translated = ConvertStyleSheet(css_tree_root, sb); - css_FreeNode(css_tree_root); -#if ALLOW_IMPORT - if (! translated) - EchoCSS(src, src_count, sb); -#endif - - /* The caller should free *dst. */ - *dst = sb->buffer; - *dst_count = sb->buffer_count; - XP_DELETE(sb); -} - - -/* Release all subtree and the node */ -void css_FreeNode(css_node vp) -{ - if (vp) { - css_FreeNode(vp->left); - css_FreeNode(vp->right); - if (vp->string) - XP_FREE(vp->string); - XP_DELETE(vp); - } -} - - -static XP_Bool ConvertStyleSheet(css_node stylesheet, StyleBuffer sb) -{ - -#if (ALLOW_IMPORT || ALLOW_FONTDEF) - XP_Bool translate_rules = 1; - - /* CSS1 requires @import productions occurring after - * ruleset productions to be ignored. This is implemented - * here. The restriction is not enforced by the parser. - */ - for (; stylesheet && (stylesheet->node_id != NODE_RULESET_LIST); - stylesheet = stylesheet->left) { -#if ALLOW_IMPORT - if (NODE_IMPORT_LIST == stylesheet->node_id) { - ConvertToLink(stylesheet->right, stylesheet->node_id, sb); - translate_rules = 0; - } -#endif -#if ALLOW_FONTDEF - if (NODE_FONTDEF_LIST == stylesheet->node_id) { - ConvertToLink(stylesheet->right, stylesheet->node_id, sb); - } -#endif - } -#if (ALLOW_IMPORT) - if (! translate_rules) - return 0; -#endif -#endif - - for (; stylesheet; stylesheet = stylesheet->left) { - if (stylesheet->node_id == NODE_RULESET_LIST) - ConvertRule(stylesheet->right, sb); - } - - return 1; -} - - -/* Generate the JavaScript corresponding to one CSS1 rule. */ -static void ConvertRule(css_node rule, StyleBuffer sb) -{ - css_node selector_list, selector; - css_node declaration_list; - - if (! rule || rule->node_id != NODE_RULESET) - return; - - for (selector_list = rule->left; selector_list; - selector_list = selector_list->left) { - - selector = selector_list->right; - if (! selector) - continue; - - for (declaration_list = rule->right; declaration_list; - declaration_list = declaration_list->left) { - - if (declaration_list->right) { - AnteRule(sb); - ConvertSelector(selector->left, selector->right, sb); - ConvertDeclaration(declaration_list->right, sb); - PostRule(sb); - } - } - } -} - -static void AnteRule(StyleBuffer sb) -{ - sb->prior_count = sb->buffer_count; - sb->pseudo_class_state = CSS_PSEUDO_CLASS_NONE; -} - -static void PostRule(StyleBuffer sb) -{ - if (sb->ignore_rule) { - sb->buffer_count = sb->prior_count; - sb->ignore_rule = 0; - if (0 == sb->buffer_count) - sb->buffer_count = 1; - sb->buffer[sb->buffer_count-1] = '\0'; - } -} - -static void StyleBufferWrite(char * str, int len, StyleBuffer sb) -{ - - if (str == NULL) - return; - - if (len <= 0) { - len = strlen(str); - if (len <= 0) - return; - } - - if (sb->buffer == NULL) { - sb->buffer = (char *) XP_ALLOC(STYLE_INITIAL_BUFSIZ); - if (sb->buffer) { - sb->buffer_size = STYLE_INITIAL_BUFSIZ; - *sb->buffer = '\0'; - sb->buffer_count = 1; - } - } - - if (sb->buffer_count + len > sb->buffer_size) { - sb->buffer = (char *) - XP_REALLOC(sb->buffer, sb->buffer_size + STYLE_INCR_BUFSIZ); - if (sb->buffer) { - sb->buffer_size += STYLE_INCR_BUFSIZ; - } else { - sb->buffer_size = sb->buffer_count = 0; - } - } - - if (sb->buffer_count + len <= sb->buffer_size) { - (void) strncpy(sb->buffer + sb->buffer_count - 1, str, len); - sb->buffer_count += len; - sb->buffer[sb->buffer_count-1] = '\0'; - } -} - - -static void ConvertSelector(css_node selector, css_node pseudo_element, - StyleBuffer sb) -{ - if (selector->node_id == NODE_SELECTOR_CONTEXTUAL) { - StyleBufferWrite("contextual(", 11, sb); - ConvertContextualSelector(selector, pseudo_element, sb); - StyleBufferWrite(")", 1, sb); - } else { - ConvertSingleSelector(selector, pseudo_element, sb); - } -} - - -static void ConvertContextualSelector(css_node selector, - css_node pseudo_element, StyleBuffer sb) -{ - if (selector->left) { - /* pseudo_elements may be present only on the final context object */ - ConvertContextualSelector(selector->left, NULL, sb); - StyleBufferWrite(", ", 2, sb); - } - - ConvertSingleSelector(selector->right, pseudo_element, sb); -} - - -static void ConvertSingleSelector(css_node selector, css_node pseudo_element, - StyleBuffer sb) -{ - char * str1; - char * str2; - - if (! selector) - return; - - if (selector->node_id == NODE_WILD) { - /* CSS1 Section 7.1 states: "A ruleset that [has] a selector - * string that is not valid CSS1 is skipped." (sic) - */ - IgnoreRule(sb); - } - - if (! selector->left) - return; - - str1 = selector->left->string; - str2 = selector->right ? selector->right->string : NULL; - - switch (selector->node_id) { - - case NODE_SIMPLE_SELECTOR_NAME_ONLY: - - /* "document.tags.<TAG>" */ - StyleBufferWrite("document.tags.", 14, sb); - str1 = CSS_ConvertToJSCompatibleName(str1, TRUE); - StyleBufferWrite(str1, 0, sb); - XP_FREE(str1); - break; - - case NODE_SIMPLE_SELECTOR_DOT_AND_CLASS: - - /* "document.classes.<class>.all" */ - StyleBufferWrite("document.classes.", 17, sb); - str1 = CSS_ConvertToJSCompatibleName(str1, FALSE); - StyleBufferWrite(str1, 0, sb); - XP_FREE(str1); - StyleBufferWrite(".all", 4, sb); - break; - - case NODE_SIMPLE_SELECTOR_ID_SELECTOR: - - /* "document.ids.<id>" */ - StyleBufferWrite("document.ids.", 13, sb); - str1 = CSS_ConvertToJSCompatibleName(str1, FALSE); - StyleBufferWrite(str1, 0, sb); - XP_FREE(str1); - break; - - case NODE_SIMPLE_SELECTOR_NAME_AND_CLASS: - - /* "document.classes.<class>.<TAG>" */ - StyleBufferWrite("document.classes.", 17, sb); - str2 = CSS_ConvertToJSCompatibleName(str2, FALSE); - StyleBufferWrite(str2, 0, sb); - XP_FREE(str2); - StyleBufferWrite(".", 1, sb); - str1 = CSS_ConvertToJSCompatibleName(str1, TRUE); - StyleBufferWrite(str1, 0, sb); - XP_FREE(str1); - break; - - case NODE_SIMPLE_SELECTOR_NAME_PSEUDO_CLASS: - - /* "document.tags.<TAG> */ -#ifdef DOM - /* - * By design, leave the pseudoclass in place by generating - * ``document.tags["A:visited"]'' or whatever. Never ignore - * the pseudoclass name because, well, duh. - */ - StyleBufferWrite("document.tags[\"", 15, sb); - str1 = CSS_ConvertToJSCompatibleName(str1, TRUE); - StyleBufferWrite(str1, 0, sb); - XP_FREE(str1); - StyleBufferWrite(":", 1, sb); - StyleBufferWrite(str2, 0, sb); - StyleBufferWrite("\"].", 3, sb); - break; -#else - /* By design, prepend the pseudoclass name to the property - * name when the property is 'color'; otherwise, ignore the - * pseudoclass name. - */ - StyleBufferWrite("document.tags.", 14, sb); - str1 = CSS_ConvertToJSCompatibleName(str1, TRUE); - StyleBufferWrite(str1, 0, sb); - XP_FREE(str1); - SaltPseudoClass(str2, sb); - break; -#endif - - case NODE_SIMPLE_SELECTOR_NAME_CLASS_PSEUDO_CLASS: - - /* "document.classes.<class>.<TAG>" */ - /* By design, prepend the pseudoclass name to the property - * name when the property is 'color'; otherwise, ignore the - * pseudoclass name. - */ - StyleBufferWrite("document.classes.", 17, sb); - str1 = CSS_ConvertToJSCompatibleName(str1, FALSE); - StyleBufferWrite(str1, 0, sb); - XP_FREE(str1); - StyleBufferWrite(".", 1, sb); - str1 = CSS_ConvertToJSCompatibleName(selector->string, TRUE); - StyleBufferWrite(str1, 0, sb); - XP_FREE(str1); - SaltPseudoClass(str2, sb); - break; - - default: - break; - } - - if (pseudo_element) { -#if ! ALLOW_PSEUDO_ELEMENTS - IgnoreRule(sb); -#endif - StyleBufferWrite(".", 1, sb); - ConvertProperty(pseudo_element->string, sb, NULL); - } -} - -static void IgnoreRule(StyleBuffer sb) -{ - sb->ignore_rule = 1; -} - -static void SaltPseudoClass(const char * pseudo_class, StyleBuffer sb) -{ - if (! pseudo_class) - return; - - /* The parser always gives these strings in lower case. */ - if (0 == XP_STRCMP(pseudo_class, "link")) - sb->pseudo_class_state = CSS_PSEUDO_CLASS_LINK; - else if (0 == XP_STRCMP(pseudo_class, "visited")) - sb->pseudo_class_state = CSS_PSEUDO_CLASS_VISITED; - else if (0 == XP_STRCMP(pseudo_class, "active")) { -#if (! ALLOW_ACTIVE_PSEUDO_CLASS) - IgnoreRule(sb); -#endif - sb->pseudo_class_state = CSS_PSEUDO_CLASS_ACTIVE; - } -} - -static int32 GetPseudoClass(StyleBuffer sb) -{ - return sb->pseudo_class_state; -} - -/* Pseudo-elements as well as property names are converted by this. */ -static void ConvertProperty(const char * css1_property, StyleBuffer sb, - int * property_type_return) -{ - XP_Bool upper; - char ch[2]; - int32 pseudo_class; - - ch[1] = '\0'; - - if (property_type_return) - *property_type_return = CSS_PROPERTY_TYPE_ASSIGNMENT; - - /* The CSS1 float property is translated to align because float is - * a reserved word in JavaScript. - */ - if (0 == XP_STRCASECMP(css1_property, "float")) - StyleBufferWrite("align", 5, sb); - else { - if (property_type_return) { - if ( (0 == XP_STRCASECMP(css1_property, "margin")) - || (0 == XP_STRCASECMP(css1_property, "padding")) - || (0 == XP_STRCASECMP(css1_property, "border-width"))) - *property_type_return = CSS_PROPERTY_TYPE_CALL; - } - - pseudo_class = GetPseudoClass(sb); - - if (0 == XP_STRCASECMP(css1_property, "margin")) - StyleBufferWrite("margins", 7, sb); - else if (0 == XP_STRCASECMP(css1_property, "padding")) - StyleBufferWrite("paddings", 8, sb); - else if (0 == XP_STRCASECMP(css1_property, "border-width")) - StyleBufferWrite("borderWidths", 12, sb); - else if ((CSS_PSEUDO_CLASS_NONE != pseudo_class) - && (0 == XP_STRCASECMP(css1_property, "color"))) { - switch (pseudo_class) { - case CSS_PSEUDO_CLASS_LINK: - default: - StyleBufferWrite("linkColor", 9, sb); - break; - case CSS_PSEUDO_CLASS_ACTIVE: - StyleBufferWrite("activeColor", 11, sb); - break; - case CSS_PSEUDO_CLASS_VISITED: - StyleBufferWrite("visitedColor", 12, sb); - break; - } - } - else { - for (upper=0; *css1_property; css1_property++) { - - if (*css1_property == '-') { - upper = 1; - continue; - } - - ch[0] = (upper ? toupper(*css1_property) - : tolower(*css1_property)); - upper = 0; - StyleBufferWrite(ch, 1, sb); - } - } - } -} - - -static void ConvertDeclaration(css_node declaration, StyleBuffer sb) -{ - int property_type; - - if (declaration && - (declaration->node_id == NODE_DECLARATION_PROPERTY_EXPR || - declaration->node_id == NODE_DECLARATION_PROPERTY_EXPR_PRIO)) { - StyleBufferWrite(".", 1, sb); - ConvertProperty(declaration->left->string, sb, &property_type); - ConvertValue(declaration->right, sb, property_type); -#if ALLOW_PRIORITY - if (declaration->node_id == NODE_DECLARATION_PROPERTY_EXPR_PRIO) - StyleBufferWrite(" !important", 11, sb); -#endif - StyleBufferWrite("\n", 1, sb); - } -} - - -static void ConvertValue(css_node value, StyleBuffer sb, int property_type) -{ - css_node term; - XP_Bool comma; - - - if (CSS_PROPERTY_TYPE_ASSIGNMENT == property_type) - StyleBufferWrite(" = \"", 4, sb); - else - StyleBufferWrite("(", 1, sb); - - for (comma=FALSE; value; value=value->left, comma = TRUE) { - - if (CSS_PROPERTY_TYPE_CALL == property_type && comma) - StyleBufferWrite(",", 1, sb); - - if (value->node_id == NODE_EMPTY_OP) - StyleBufferWrite(" ", 1, sb); - - if (CSS_PROPERTY_TYPE_CALL == property_type) - StyleBufferWrite("\"", 1, sb); - - if (value->node_id == NODE_EXPR_OP) - StyleBufferWrite(value->string, 0, sb); - - term = value->right; - if (term) { - if (term->node_id == NODE_STRING) - ConvertStringValue(term->string, sb); - else if (NODE_URL == term->node_id) - ConvertURLValue(term->string, sb); - else { - StyleBufferWrite(term->string, 0, sb); - if (term->node_id == NODE_UNARY_OP) - StyleBufferWrite(term->left->string, 0, sb); - } - } - - if (CSS_PROPERTY_TYPE_CALL == property_type) - StyleBufferWrite("\"", 1, sb); - } - - if (CSS_PROPERTY_TYPE_ASSIGNMENT == property_type) - StyleBufferWrite("\"", 1, sb); - else - StyleBufferWrite(")", 1, sb); -} - - -static void ConvertStringValue(char * string_value, StyleBuffer sb) -{ - for (; *string_value; string_value++) { - if (*string_value == '"') - StyleBufferWrite("\\", 1, sb); - StyleBufferWrite(string_value, 1, sb); - } -} - -static void StripURLValue(char ** url_return, int * url_length_return) -{ - char * ptr; - int len; - - if (! url_return || ! *url_return || - ! url_length_return || ! *url_length_return) - return; - - ptr = *url_return; - len = *url_length_return; - - /* Skip leading whitespace */ - while (len > 0 && isspace(*ptr)) { - ptr++; - len--; - } - - /* Skip trailing whitespace */ - while (len > 0 && isspace(*(ptr + len - 1))) - len--; - - /* Skip enclosing quotation marks */ - if (('"' == *ptr || '\'' == *ptr ) && - (len > 1) && - (*ptr == *(ptr + len - 1))) { - ptr++; - len -= 2; - } - - *url_return = ptr; - *url_length_return = len; -} - -static void ConvertURLValue(char * url_value, StyleBuffer sb) -{ - char * ptr = url_value; - int len; - - len = strlen(ptr); - if (len < 6) - return; - - /* Don't count the 5 characters for 'url()' */ - len -= 5; - StyleBufferWrite("url(", 4, sb); - ptr += 4; - - StripURLValue(&ptr, &len); - - if (len > 0) - StyleBufferWrite(ptr, len, sb); - - StyleBufferWrite(")", 1, sb); -} - -#if (ALLOW_IMPORT || ALLOW_FONTDEF) - -static char * open_call = "document.write('"; -static char * close_call = "');\n"; - -static void ConvertToLink(css_node rule, int rel_type, StyleBuffer sb) -{ - int len; - char * ptr; - char ch; - char hexbuf[4]; - - if (rule && rule->string) { - if ((NODE_IMPORT_URL == rule->node_id) || - (NODE_IMPORT_STRING == rule->node_id)) { - - StyleBufferWrite(open_call, 0, sb); - - if (NODE_IMPORT_LIST == rel_type) - StyleBufferWrite("<LINK REL=stylesheet ", 21, sb); - else - StyleBufferWrite("<LINK REL=fontdef ", 18, sb); - - /* Copy the url */ - len = XP_STRLEN(rule->string); - ptr = NULL; - if ((NODE_IMPORT_URL == rule->node_id) && (len > 5)) { - /* Copy the characters inside the parens */ - ptr = rule->string + 4; - len -= 5; - StripURLValue(&ptr, &len); - if (len <= 0) - ptr = NULL; - } else { - /* Copy the characters inside the quotes */ - ptr = rule->string + 1; - len -= 2; - } - if (NULL != ptr) { - if (NODE_IMPORT_LIST == rel_type) - StyleBufferWrite("HREF=", 5, sb); - else - StyleBufferWrite("SRC=", 4, sb); - StyleBufferWrite(ptr, len, sb); - } - - StyleBufferWrite(">');\n", 5, sb); - } - } -} - -static char * open_style = "<style type=text/css>\\n"; -static char * close_style = "</style>"; -static char * disable_at_rules = "HI { donna : lou }\\n"; - -static void EchoCSS(char * src, int32 src_count, StyleBuffer sb) -{ - char ch; - char * start; - char * end; - int len; - - if (! src || src_count <= 0) return; - - StyleBufferWrite(open_call, 0, sb); - StyleBufferWrite(open_style, 0, sb); - StyleBufferWrite(close_call, 0, sb); - - /* Don't recurse on the @-rules! - * Write a harmless rule at the beginning of the style sheet. - * The lexer, parser, and finally the translator will see it. - * The translator will skip @ rules which occur after any - * ordinary rule. CSS requires that behavior for @import; - * @fontdef voluntarily observes the same restriction; there - * are no other recognized @ rules. - */ - StyleBufferWrite(open_call, 0, sb); - StyleBufferWrite(disable_at_rules, 0, sb); - StyleBufferWrite(close_call, 0, sb); - - /* Echo the entire CSS buffer, escaping some characters. */ - StyleBufferWrite(open_call, 0, sb); - start = src; - for (end = start; --src_count >=0; end++) { - - ch = *end; - if (('\n' == ch) || ('\'' == ch) || ('\f' == ch) || - ('\v' == ch) || ('\r' == ch)) { - len = end - start; - if (len) { - StyleBufferWrite(start, len, sb); - start = end; - } - - switch (ch) { - case '\n': StyleBufferWrite("\\n", 2, sb); break; - case '\'': StyleBufferWrite("\\'", 2, sb); break; - case '\f': StyleBufferWrite("\\f", 2, sb); break; - case '\v': StyleBufferWrite("\\v", 2, sb); break; - case '\r': StyleBufferWrite("\\r", 2, sb); break; - default : break; - } - - start = end + 1; - } - } - len = end - start; - if (len) { - StyleBufferWrite(start, len, sb); - } - StyleBufferWrite(close_call, 0, sb); - - StyleBufferWrite(open_call, 0, sb); - StyleBufferWrite(close_style, 0, sb); - StyleBufferWrite(close_call, 0, sb); - -} -#endif - -#ifdef TEST_CSS_TRANSLATION -#define TEST_CSS_INITIAL_BUFSIZ 4096 -#define TEST_CSS_INCR_BUFSIZ 4096 - -void main() -{ - int ch; - char *b; - int32 src_count; - char *dst; - int32 dst_count; - char * src; - int src_size; - int done; - - - done = ch = 0; - src_size = src_count = 0; - - src = (char *) XP_ALLOC(TEST_CSS_INITIAL_BUFSIZ); - if (src) src_size = TEST_CSS_INITIAL_BUFSIZ; - - while (!done) { - - for (b = src + src_count; src_count < src_size; src_count++, b++) { - *b = ch = getc(stdin); - /* Either the null character or EOF will serve to terminate. */ - if (ch == EOF || ch == '\0') { - done = 1; - /* We don't need to add this character to the src_count */ - break; - } - } - - if (!done) { - src_size += TEST_CSS_INCR_BUFSIZ; - src = (char *) XP_REALLOC(src, src_size); - if (!src) { - src_size = src_count = 0; - printf("css test: memory allocation failure\n"); - done = 1; - } - } - } - - /* The src_count need not include the terminating NULL or EOF */ - CSS_ConvertToJS(src, src_count, &dst, &dst_count); - printf("%s", dst); - XP_FREE(dst); -} - -#endif diff --git a/mozilla/lib/libstyle/jsspriv.h b/mozilla/lib/libstyle/jsspriv.h deleted file mode 100644 index e144f1c2c5a..00000000000 --- a/mozilla/lib/libstyle/jsspriv.h +++ /dev/null @@ -1,80 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* jsspriv.h --- private style sheet routines - */ -#ifndef __JSSPRIV_H_ -#define __JSSPRIV_H_ - -#include "stystruc.h" -#include "stystack.h" - -/* - * Have the style sheet engine retrieve the list of style properties for - * the current tag (tag at the top of the tag stack) and stores them into - * the current style - */ -extern XP_Bool -jss_GetStyleForTopTag(StyleAndTagStack *styleStack); - -typedef struct JSSContext { - StyleObject *tags; - StyleObject *classes; - StyleObject *ids; -} JSSContext; - -typedef struct _StyleProperty StyleProperty; - -struct _StyleProperty { - StyleProperty *next; - char *name; - PRWord tag; /* one of the jsval tags */ - union { - char *strVal; - jsint nVal; - jsdouble dVal; - JSBool bVal; - } u; -}; - -/* Destroys a list of properties */ -extern void -jss_DestroyProperties(StyleProperty *); - -typedef struct _StyleRule StyleRule; - -typedef struct _StyleTag { - char *name; - StyleProperty *properties; - uint32 specificity; - StyleRule *rules; /* list of contextual selectors */ -} StyleTag; - -/* Creates a new StyleTag structure */ -extern StyleTag * -jss_NewTag(char *name); - -/* Destroys a StyleTag structure */ -extern void -jss_DestroyTag(StyleTag *); - -#endif /* __JSSPRIV_H_ */ - diff --git a/mozilla/lib/libstyle/jssrules.c b/mozilla/lib/libstyle/jssrules.c deleted file mode 100644 index 23c61937b72..00000000000 --- a/mozilla/lib/libstyle/jssrules.c +++ /dev/null @@ -1,237 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "xp.h" -#include "libstyle.h" -#include "jsapi.h" -#include "xp_mcom.h" -#include "jsspriv.h" -#include "jssrules.h" - -/* - * Helper routine to determine whether the array of simple selectors matches - * the selectors for the specified rule - */ -static JSBool -jss_IsSelectorEqual(JSContext *mc, - StyleRule *rule, - unsigned nSelectors, - jsval *selectors) -{ - unsigned i; - - if (rule->nSelectors == nSelectors) { - for (i = 0; i < rule->nSelectors; i++) { - /* We expect each simple selector to be a JavaScript object */ - XP_ASSERT(JSVAL_IS_OBJECT(selectors[i])); - - /* The simple selectors match if they point to the same StyleTag structure */ - if (rule->selectors[i] != JS_GetPrivate(mc, (JSObject *)selectors[i])) - return JS_FALSE; - } - - return JS_TRUE; - } - - return JS_FALSE; -} - -/* - * Given a list of rules and a contextual selector (array of simple - * selectors), looks to see if the contextual selector matches an - * existing rule - * - * Returns the rule if successful, and 0 otherwise - */ -StyleRule * -jss_LookupRule(JSContext *mc, - StyleRule *rules, - unsigned nSelectors, - jsval *selectors) -{ - while (rules) { - if (jss_IsSelectorEqual(mc, rules, nSelectors, selectors)) - return rules; - - rules = rules->next; - } - - return 0; -} - -/* This routine creates and returns a new rule */ -StyleRule * -jss_NewRule(JSContext *mc, unsigned argc, jsval *argv) -{ - StyleRule *rule; - unsigned i; - - /* Create a new rule */ - rule = (StyleRule *)XP_CALLOC(1, sizeof(StyleRule)); - if (!rule) { - JS_ReportOutOfMemory(mc); - return 0; - } - - /* Initialize the list of selectors. While we're at it compute the specificity */ - rule->nSelectors = argc; - rule->selectors = XP_CALLOC((size_t)rule->nSelectors, sizeof(StyleTag *)); - rule->tag.specificity = 0; - - for (i = 0; i < rule->nSelectors; i++) { - /* We expect each simple selector to be a JavaScript object */ - XP_ASSERT(JSVAL_IS_OBJECT(argv[i])); - - rule->selectors[i] = JS_GetPrivate(mc, (JSObject *)argv[i]); - if (!rule->selectors[i]) { - XP_ASSERT(FALSE); - XP_FREE(rule); - return 0; - } - - /* The specificity of the rule is just the sum of the specificity of each selector */ - rule->tag.specificity += rule->selectors[i]->specificity; - } - - return rule; -} - -/* Destroys a list of rules */ -void -jss_DestroyRules(StyleRule *rules) -{ - StyleRule *next; - - while (rules) { - next = rules->next; - - /* Destroy any properties associated with the tag structure */ - XP_ASSERT(rules->tag.name == 0); - XP_ASSERT(rules->tag.rules == 0); - jss_DestroyProperties(rules->tag.properties); - - /* Destroy the array of selectors */ - if (rules->selectors) - XP_FREE(rules->selectors); - - XP_FREE(rules); - rules = next; - } -} - -/* - * Helper function to determine if a simple selector applies. index - * represents where in the tag stack the search should begin - * - * Returns JS_TRUE if selector applies. In this case index will be set - * to the tag stack entry where the match occured. Returns JS_FALSE if - * the selector doesn't apply - */ -static JSBool -jss_SelectorApplies(JSSContext *jc, - StyleTag *jsstag, - StyleAndTagStack *styleStack, - int32 *index) -{ - TagStruct *tag; - - for (tag = STYLESTACK_GetTagByIndex(styleStack, *index); - tag; - tag = STYLESTACK_GetTagByIndex(styleStack, ++(*index))) { - - /* We determine if the selector applies by comparing StyleTag pointers */ - if (tag->id && jc->ids && jc->ids->table) { - if ((StyleTag *)PR_HashTableLookup(jc->ids->table, tag->id) == jsstag) - return JS_TRUE; - } - - if (tag->class_name && jc->classes && jc->classes->table) { - StyleObject *classes = (StyleObject *)PR_HashTableLookup(jc->classes->table, tag->class_name); - - if (classes && classes->table) { - /* Check against all elements of the class, e.g. classes.punk.all */ - if ((StyleTag *)PR_HashTableLookup(classes->table, "all") == jsstag) - return JS_TRUE; - - /* Now check for the specified tag, e.g. classes.punk.H1 */ - XP_ASSERT(tag->name); - if (tag->name && ((StyleTag *)PR_HashTableLookup(classes->table, tag->name) == jsstag)) - return JS_TRUE; - } - } - - XP_ASSERT(tag->name); - if (tag->name && jc->tags && jc->tags->table) { - if ((StyleTag *)PR_HashTableLookup(jc->tags->table, tag->name) == jsstag) - return JS_TRUE; - } - } - - /* The selector didn't match against any element of the tag stack */ - return JS_FALSE; -} - -/* - * Helper function to determine if a contextual selector applies. Returns - * JS_TRUE if the selector applies and JS_FALSE otherwise - */ -static JSBool -jss_RuleApplies(JSSContext *jc, StyleRule *rule, StyleAndTagStack *styleStack) -{ - int i; - int32 index = 0; - - /* - * Starting with the right-most selector, check each selector to see - * if it applies - */ - for (i = (int)rule->nSelectors - 1; i >= 0; i--) { - if (!jss_SelectorApplies(jc, rule->selectors[i], styleStack, &index)) - return JS_FALSE; - - index++; /* continue with the next HTML element */ - } - - return JS_TRUE; -} - -/* - * This routine takes as an argument a list of rules, a stack of open HTML - * elements, and a callback function. The callback function is called once for - * each rule that applies - */ -JSBool -jss_EnumApplicableRules(JSSContext *jc, - StyleRule *rules, - StyleAndTagStack *styleStack, - RULECALLBACK callback, - void *data) -{ - while (rules) { - if (jss_RuleApplies(jc, rules, styleStack)) - callback(&rules->tag, data); - - rules = rules->next; - } - - return JS_TRUE; -} diff --git a/mozilla/lib/libstyle/jssrules.h b/mozilla/lib/libstyle/jssrules.h deleted file mode 100644 index adc5d78d66a..00000000000 --- a/mozilla/lib/libstyle/jssrules.h +++ /dev/null @@ -1,87 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* jssrules.h --- private style sheet routines - */ -#ifndef __JSSRULES_H_ -#define __JSSRULES_H_ - -/* - * A JSS rule consists of a list of selectors, a list of declarations, - * and a specificity of its selector - */ -struct _StyleRule { - StyleTag tag; - unsigned nSelectors; - StyleTag **selectors; /* array of pointers to StyleTag structures */ - StyleRule *next; -}; - -/* - * Specificity is implemented as three 8-bit components: the number of tags in - * the selector (the least significant component), the number of classes in the - * selector, and the number of ids in the selector (the most significant component) - */ -#define JSS_SPECIFICITY(nTags, nClasses, nIDs)\ - ((uint32)(nTags) | ((uint32)(nClasses)<<8) | ((uint32)(nIDs)<<16)) - -/* - * This routine creates a new rule object and adds it to the list of existing - * rules - * - * Returns the new rule if successful; 0 otherwise - */ -extern StyleRule * -jss_NewRule(JSContext *mc, unsigned nSelectors, jsval *selectors); - -/* Destroys a list of rules */ -extern void -jss_DestroyRules(StyleRule *); - -/* - * Given a list of rules and a contextual selector (array of simple - * selectors), looks to see if the contextual selector matches that of an - * existing rule - */ -extern StyleRule * -jss_LookupRule(JSContext *mc, StyleRule *rules, unsigned nSelectors, jsval *selectors); - -/* - * Callback function for jss_EnumApplicableRules(). Return MOCHA_TRUE to continuing - * iterating and MOCHA_FALSE to stop - */ -typedef JSBool (* RULECALLBACK)(StyleTag *tag, void *data); - -/* - * This routine takes as an argument a list of rules, a stack of open HTML - * elements, and a callback function. The callback function is called once for - * each rule that applies - */ -extern JSBool -jss_EnumApplicableRules(JSSContext *jc, - StyleRule *rules, - StyleAndTagStack *styleStack, - RULECALLBACK callback, - void *data); - -#endif /* __JSSRULES_H_ */ - diff --git a/mozilla/lib/libstyle/libstyle.c b/mozilla/lib/libstyle/libstyle.c deleted file mode 100644 index 40df745cc5c..00000000000 --- a/mozilla/lib/libstyle/libstyle.c +++ /dev/null @@ -1,1163 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "xp.h" -#include "jsapi.h" -#include "libstyle.h" -#include "xp_mcom.h" -#include "jsspriv.h" -#include "jssrules.h" -/* #include "jsscope.h" */ -#include "jsatom.h" - -#include "plhash.h" - -extern void LO_SetStyleObjectRefs(MWContext *context, void *tags, void *classes, void *ids); - -/**** Declaration of JavaScript classes ****/ - -extern JSClass Tags_class; -extern JSClass Classes_class; -extern JSClass Tag_class; - -static JSBool -is_valid_jsss_prop(char *prop) -{ - if(!prop) - return FALSE; - - switch(XP_TO_UPPER(*prop)) - { - case 'A': - if(!strcasecomp(prop, "absolute")) - return TRUE; - else if(!strcasecomp(prop, "activeColor")) - return TRUE; - else if(!strcasecomp(prop, "align")) - return TRUE; - break; - case 'B': - if(!strcasecomp(prop, "borderWidth")) - return TRUE; - else if(!strcasecomp(prop, "borderStyle")) - return TRUE; - else if(!strcasecomp(prop, "borderColor")) - return TRUE; - else if(!strcasecomp(prop, "borderRightWidth")) - return TRUE; - else if(!strcasecomp(prop, "borderLeftWidth")) - return TRUE; - else if(!strcasecomp(prop, "borderTopWidth")) - return TRUE; - else if(!strcasecomp(prop, "borderBottomWidth")) - return TRUE; - else if(!strcasecomp(prop, "backgroundColor")) - return TRUE; - else if(!strcasecomp(prop, "backgroundImage")) - return TRUE; - else if(!strcasecomp(prop, "backgroundRepeat")) - return TRUE; - break; - case 'C': - if(!strcasecomp(prop, "clear")) - return TRUE; - else if(!strcasecomp(prop, "color")) - return TRUE; - else if(!strcasecomp(prop, "clip")) - return TRUE; - break; - case 'D': - if(!strcasecomp(prop, "display")) - return TRUE; - break; - case 'F': - if(!strcasecomp(prop, "fontSize")) - return TRUE; - else if(!strcasecomp(prop, "fontFamily")) - return TRUE; - else if(!strcasecomp(prop, "fontWeight")) - return TRUE; - else if(!strcasecomp(prop, "fontStyle")) - return TRUE; - break; - case 'H': - if(!strcasecomp(prop, "height")) - return TRUE; - break; - case 'I': - if(!strcasecomp(prop, "includeSource")) - return TRUE; - break; - case 'L': - if(!strcasecomp(prop, "lineHeight")) - return TRUE; - else if(!strcasecomp(prop, "listStyleType")) - return TRUE; - else if(!strcasecomp(prop, "layerBackgroundColor")) - return TRUE; - else if(!strcasecomp(prop, "layerBackgroundImage")) - return TRUE; - else if(!strcasecomp(prop, "linkColor")) - return TRUE; - else if(!strcasecomp(prop, "linkBorder")) - return TRUE; - else if(!strcasecomp(prop, "_layer_width")) - return TRUE; - else if(!strcasecomp(prop, "left")) - return TRUE; - break; - case 'M': - if(!strcasecomp(prop, "marginLeft")) - return TRUE; - else if(!strcasecomp(prop, "marginRight")) - return TRUE; - else if(!strcasecomp(prop, "marginTop")) - return TRUE; - else if(!strcasecomp(prop, "marginBottom")) - return TRUE; - break; - case 'O': - if(!strcasecomp(prop, "overflow")) - return TRUE; - break; - case 'P': - if(!strcasecomp(prop, "padding")) - return TRUE; - else if(!strcasecomp(prop, "paddingLeft")) - return TRUE; - else if(!strcasecomp(prop, "paddingRight")) - return TRUE; - else if(!strcasecomp(prop, "paddingTop")) - return TRUE; - else if(!strcasecomp(prop, "paddingBottom")) - return TRUE; - else if(!strcasecomp(prop, "position")) - return TRUE; - else if(!strcasecomp(prop, "pageBreakBefore")) - return TRUE; - else if(!strcasecomp(prop, "pageBreakAfter")) - return TRUE; - break; - case 'R': - if(!strcasecomp(prop, "relative")) - return TRUE; - break; - case 'T': - if(!strcasecomp(prop, "top")) - return TRUE; - else if(!strcasecomp(prop, "textTransform")) - return TRUE; - else if(!strcasecomp(prop, "textAlign")) - return TRUE; - else if(!strcasecomp(prop, "textIndent")) - return TRUE; - else if(!strcasecomp(prop, "textDecoration")) - return TRUE; - break; - case 'V': - if(!strcasecomp(prop, "visitedColor")) - return TRUE; - else if(!strcasecomp(prop, "verticalAlign")) - return TRUE; - else if(!strcasecomp(prop, "visibility")) - return TRUE; - break; - case 'W': - if(!strcasecomp(prop, "width")) - return TRUE; - if(!strcasecomp(prop, "whiteSpace")) - return TRUE; - break; - case 'Z': - if(!strcasecomp(prop, "zIndex")) - return TRUE; - default: - XP_ASSERT(0); - break; - } - - return FALSE; -}; - -int PR_CALLBACK -jss_CompareStringsNoCase(const void *str1, const void *str2) -{ - return XP_STRCASECMP(str1, str2) == 0; -} - -PRHashNumber PR_CALLBACK -jss_HashStringNoCase(const void *key) -{ - PRHashNumber h; - const unsigned char *s; - - h = 0; - for (s = key; *s; s++) - h = (h >> 28) ^ (h << 4) ^ toupper(*s); - return h; -} - -/**** Finalizer for JSSTags and JSSClasses ****/ - -int PR_CALLBACK -jss_DestroyTags(PRHashEntry *he, int i, void *arg) -{ - XP_ASSERT(he->value); - if (he->value) - jss_DestroyTag((StyleTag *)he->value); - - return HT_ENUMERATE_NEXT; /* keep enumerating */ -} - -void PR_CALLBACK -jss_FinalizeStyleObject(JSContext *mc, JSObject *obj) -{ - StyleObject *tags; - - XP_ASSERT(JS_InstanceOf(mc, obj, &Tags_class, 0) || JS_InstanceOf(mc, obj, &Classes_class, 0)); - - /* Note: the prototype objects won't have any private data */ - tags = JS_GetPrivate(mc, obj); - if (tags) { - XP_ASSERT(tags->type >= JSSTags && tags->type <= JSSClass); - - if (tags->table) { - if (tags->type != JSSClasses) - PR_HashTableEnumerateEntries(tags->table, jss_DestroyTags, 0); - PR_HashTableDestroy(tags->table); - } - - if (tags->name) - XP_FREE(tags->name); - - XP_FREE(tags); - } -} - -/**** Implementation of JavaScript JSSTags classes ****/ - -/* Constructor for JSSTags class */ -JSBool PR_CALLBACK -TagsConstructor (JSContext *mc, JSObject *obj, unsigned argc, jsval *argv, jsval *rval) -{ - /* Check arguments first */ - XP_ASSERT(JS_InstanceOf(mc, obj, &Tags_class, 0)); - - /* We don't expect any arguments */ - XP_ASSERT(argc == 0); - - return JS_TRUE; -} - -/* Helper routine to determine the specificity of a tag */ -static uint32 -jss_TagSpecificity(StyleObject *obj) -{ - /* Compute the specificity for a tag of this type */ - switch (obj->type) { - case JSSTags: - return JSS_SPECIFICITY(1, 0, 0); - - case JSSIds: - return JSS_SPECIFICITY(0, 0, 1); - - case JSSClasses: - XP_ASSERT(FALSE); - break; - - case JSSClass: - XP_ASSERT(obj->name); - if (obj->name && XP_STRCMP(obj->name, "all") == 0) - return JSS_SPECIFICITY(0, 1, 0); - else - return JSS_SPECIFICITY(1, 1, 0); - break; - } - - return 0; -} - -/* Called by JS to resolve names */ -JSBool PR_CALLBACK -Tags_ResolveName(JSContext *mc, JSObject *obj, jsval id) -{ - if (JSVAL_IS_STRING(id)) { - char *name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - JSObject *tag_obj; - StyleObject *tags; - StyleTag *tag; - - XP_ASSERT(JS_InstanceOf(mc, obj, &Tags_class, 0)); - - /* Get the pointer to the hash table */ - tags = JS_GetPrivate(mc, obj); - if (!tags) - return JS_TRUE; /* we must be getting called before we've been initialized */ - - /* - * See if there is an existing StyleTag object with this name (all names - * are case insensitive like in CSS) - */ - if (tags->table) { - PRHashEntry *he, **hep; - - hep = PR_HashTableRawLookup(tags->table, tags->table->keyHash(name), name); - if ((he = *hep) != 0) { - /* Alias this name with the original name */ - JS_AliasProperty(mc, obj, (const char *)he->key, name); - return JS_TRUE; - } - } - - /* Lazily create tag objects when needed */ - tag_obj = JS_NewObject(mc, &Tag_class, 0, obj); - if (!tag_obj) - return JS_FALSE; - - /* Create a new StyleTag structure */ - tag = jss_NewTag(name); - if (!tag) { - JS_ReportOutOfMemory(mc); - return JS_FALSE; - } - JS_SetPrivate(mc, tag_obj, tag); - - /* We don't create the hash table until it's actually needed */ - if (!tags->table) { - /* All lookups must be case insensitive */ - tags->table = PR_NewHashTable(8, (PRHashFunction)jss_HashStringNoCase, - (PRHashComparator)jss_CompareStringsNoCase, PR_CompareValues, 0, 0); - - if (!tags->table) { - jss_DestroyTag(tag); - JS_ReportOutOfMemory(mc); - return JS_FALSE; - } - } - - /* Add this tag to the hash table */ - PR_HashTableAdd(tags->table, (const void *)tag->name, tag); - tag->specificity = jss_TagSpecificity(tags); - - /* Give the object a name */ - return JS_DefineProperty(mc, obj, name, OBJECT_TO_JSVAL(tag_obj), 0, 0, - JSPROP_READONLY | JSPROP_PERMANENT); - } - - return JS_TRUE; -} - -/**** Implementation of JavaScript JSSClasses class ****/ - -/* Constructor for JSSClasses class */ -JSBool PR_CALLBACK -ClassesConstructor (JSContext *mc, JSObject *obj, unsigned argc, jsval *argv, jsval *rval) -{ - /* Check arguments first */ - XP_ASSERT(JS_InstanceOf(mc, obj, &Classes_class, 0)); - - /* We don't expect any arguments */ - XP_ASSERT(argc == 0); - - return JS_TRUE; -} - -/* Called by JS to resolve names */ -JSBool PR_CALLBACK -Classes_ResolveName(JSContext *mc, JSObject *obj, jsval id) -{ - if (JSVAL_IS_STRING(id)) { - char* name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - StyleObject *classes; - JSObject* tags_obj; - StyleObject *tags; - - /* Get the pointer to the hash table */ - classes = JS_GetPrivate(mc, obj); - if (!classes) - return JS_TRUE; /* we must be getting called before we've been initialized */ - - /* - * See if there is an existing StyleObject object with this name (all names - * are case insensitive like in CSS) - */ - if (classes->table) { - PRHashEntry *he, **hep; - - hep = PR_HashTableRawLookup(classes->table, classes->table->keyHash(name), name); - if ((he = *hep) != 0) { - /* Alias this name with the original name */ - JS_AliasProperty(mc, obj, (const char *)he->key, name); - return JS_TRUE; - } - } - - /* Create an instance of the "Tags" class for the specified class name */ - tags_obj = JS_NewObject(mc, &Tags_class, 0, obj); - if (!tags_obj) { - JS_ReportOutOfMemory(mc); - return JS_FALSE; - } - - /* Create a StyleObject data structure */ - tags = (StyleObject *)XP_CALLOC(1, sizeof(StyleObject)); - if (!tags) { - JS_ReportOutOfMemory(mc); - return JS_FALSE; - } - - /* Make a copy of the name */ - tags->name = XP_STRDUP(name); - if (!tags->name) { - XP_FREE(tags); - JS_ReportOutOfMemory(mc); - return JS_FALSE; - } - - /* We don't create the hash table until it's actually needed */ - if (!classes->table) { - /* All lookups must be case insensitive */ - classes->table = PR_NewHashTable(8, (PRHashFunction)jss_HashStringNoCase, - (PRHashComparator)jss_CompareStringsNoCase, PR_CompareValues, 0, 0); - - if (!classes->table) { - if (tags->name) - XP_FREE(tags->name); - XP_FREE(tags); - JS_ReportOutOfMemory(mc); - return JS_FALSE; - } - } - - /* Add it to the hash table */ - PR_HashTableAdd(classes->table, (const void *)tags->name, tags); - tags->type = JSSClass; - JS_SetPrivate(mc, tags_obj, tags); - - return JS_DefineProperty(mc, obj, name, OBJECT_TO_JSVAL(tags_obj), 0, 0, - JSPROP_READONLY | JSPROP_PERMANENT); - } - - return JS_TRUE; -} - -/**** Implementation of JavaScript JSSTag class ****/ - -/* Constructor for JSSTag class */ -JSBool PR_CALLBACK -TagConstructor (JSContext *mc, JSObject *obj, unsigned argc, jsval *argv, jsval *rval) -{ - /* Check arguments first */ - XP_ASSERT(JS_InstanceOf(mc, obj, &Tag_class, 0)); - - /* We don't expect any arguments */ - XP_ASSERT(argc == 0); - - return JS_TRUE; -} - -/* Destroys a list of properties */ -void -jss_DestroyProperties(StyleProperty *p) -{ - StyleProperty *next; - - while (p) { - next = p->next; - - /* Free the name */ - if (p->name) - XP_FREE(p->name); - - /* If the value is a string then free it, too */ - if (p->tag == JSVAL_STRING) { - XP_ASSERT(p->u.strVal); - if (p->u.strVal) - XP_FREE(p->u.strVal); - } - - XP_FREE(p); - p = next; - } -} - -static JSBool -jss_PropertySetValue(JSContext *mc, StyleProperty *prop, jsval *vp) -{ - JSString *str; - - if (JSVAL_IS_BOOLEAN(*vp)) { - prop->u.bVal = JSVAL_TO_BOOLEAN(*vp); - - } else if (JSVAL_IS_INT(*vp)) { - prop->u.nVal = JSVAL_TO_INT(*vp); - /* XXX - JSVAL_TAG doesn't do the right thing for ints */ - prop->tag = JSVAL_INT; - return JS_TRUE; - - } else if (JSVAL_IS_DOUBLE(*vp)) { - prop->u.dVal = *JSVAL_TO_DOUBLE(*vp); - - } else { - XP_ASSERT(JSVAL_IS_STRING(*vp)); - str = JSVAL_TO_STRING(*vp); - prop->u.strVal = XP_STRDUP(JS_GetStringBytes(str)); - } - - prop->tag = JSVAL_TAG(*vp); - return JS_TRUE; -} - -static JSBool -jss_PropertyGetValue(JSContext *mc, StyleProperty *prop, jsval *vp) -{ - switch (prop->tag) { - case JSVAL_BOOLEAN: - *vp = BOOLEAN_TO_JSVAL(prop->u.bVal); - break; - - case JSVAL_STRING: - *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(mc, prop->u.strVal)); - break; - - case JSVAL_INT: - *vp = INT_TO_JSVAL(prop->u.nVal); - break; - - case JSVAL_DOUBLE: - JS_NewDoubleValue(mc, prop->u.dVal, vp); - break; - - default: - XP_ASSERT(FALSE); - break; - } - - return JS_TRUE; -} - -static StyleProperty * -jss_TagGetProperty(JSContext *mc, StyleTag *tag, char *propname) -{ - StyleProperty *prop; - - /* Look for the property in our list of properties */ - for (prop = tag->properties; prop; prop = prop->next) { - if (XP_STRCASECMP(prop->name, propname) == 0) - return prop; - } - - return 0; -} - -static JSBool -jss_TagAddProperty(JSContext *mc, StyleTag *tag, char *name, jsval *vp) -{ - StyleProperty *prop; - - /* Create a new property */ - prop = (StyleProperty *)XP_CALLOC(1, sizeof(StyleProperty)); - if (!prop) { - JS_ReportOutOfMemory(mc); - return JS_FALSE; - } - - /* Set the name and property value */ - prop->name = XP_STRDUP(name); - if (!prop->name) { - XP_FREE(prop); - JS_ReportOutOfMemory(mc); - return JS_FALSE; - } - jss_PropertySetValue(mc, prop, vp); - - /* Add it to the list */ - prop->next = tag->properties; - tag->properties = prop; - - return JS_TRUE; -} - -/* Creates a new property if necessary */ -static JSBool -jss_TagSetProperty(JSContext *mc, StyleTag *tag, char *name, jsval *vp) -{ - StyleProperty *prop; - - /* See if we already have the property defined */ - prop = jss_TagGetProperty(mc, tag, name); - - if (prop) - jss_PropertySetValue(mc, prop, vp); - else - jss_TagAddProperty(mc, tag, name, vp); - - return JS_TRUE; -} - -/* Called by JS so we can handle the get operation */ -JSBool PR_CALLBACK -Tag_GetProperty(JSContext *mc, JSObject *obj, jsval id, jsval *vp) -{ - if (JSVAL_IS_STRING(id)) { - char *name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - StyleTag *tag = JS_GetPrivate(mc, obj); - StyleProperty *prop; - - if(!tag) - return JS_TRUE; - - LO_LockLayout(); - prop = jss_TagGetProperty(mc, tag, name); - if (prop) - jss_PropertyGetValue(mc, prop, vp); - LO_UnlockLayout(); - } - - return JS_TRUE; -} - -/* Called by JS so we can handle the set operation */ -JSBool PR_CALLBACK -Tag_SetProperty(JSContext *mc, JSObject *obj, jsval id, jsval *vp) -{ - /* We only support number, strings, and booleans */ - if (!JSVAL_IS_NUMBER(*vp) && !JSVAL_IS_BOOLEAN(*vp) && !JSVAL_IS_STRING(*vp)) - return JS_TRUE; - - if (JSVAL_IS_STRING(id)) { - char *name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - StyleTag *tag = JS_GetPrivate(mc, obj); - - if (tag) { - LO_LockLayout(); - jss_TagSetProperty(mc, tag, name, vp); - LO_UnlockLayout(); - } - } - - return JS_TRUE; -} - -/* Called by JS to resolve names */ -JSBool PR_CALLBACK -Tag_ResolveName(JSContext *mc, JSObject *obj, jsval id) -{ - if (JSVAL_IS_STRING(id)) { - char *name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - /* - * We need to have a resolve function for the case where there's a "with" clause, e.g. - * "with (tags.H1) {color = 'red'}". In this case we need to resolve the property or - * our setter function won't get called - */ - if(is_valid_jsss_prop(name)) - return JS_DefineProperty(mc, obj, name, JSVAL_VOID, 0, 0, - JSPROP_ENUMERATE | JSPROP_PERMANENT); - } - - return JS_TRUE; -} - -/* Grouping syntax method for setting all the margins at once */ -JSBool PR_CALLBACK -Tag_Margin(JSContext *mc, JSObject *obj, unsigned argc, jsval *argv, jsval *rval) -{ - StyleTag *tag = JS_GetPrivate(mc, obj); - - /* - * We expect between 1 and 4 arguments. We'll fail if there isn't at least - * one and silently ignore anything more than 4 - */ - if (argc == 0) { - JS_ReportError(mc, "Function margin() requires at least one argument."); - return JS_FALSE; - } - - /* - * The arguments apply to top, right, bottom, and left in that order. If there is - * only one argument it applies to all sides, if there are two or three, the missing - * values are taken from the opposite side - */ - if (tag) { - jsval *vp; - - LO_LockLayout(); - jss_TagSetProperty(mc, tag, "marginTop", argv); - jss_TagSetProperty(mc, tag, "marginRight", argc >= 2 ? &argv[1] : argv); - jss_TagSetProperty(mc, tag, "marginBottom", argc >= 3 ? &argv[2] : argv); - - if (argc == 4) - vp = &argv[3]; - else if (argc >= 2) - vp = &argv[1]; - else - vp = argv; - jss_TagSetProperty(mc, tag, "marginLeft", vp); - LO_UnlockLayout(); - } - - return JS_TRUE; -} - -/* Grouping syntax method for setting all the paddings at once */ -JSBool PR_CALLBACK -Tag_Padding(JSContext *mc, JSObject *obj, unsigned argc, jsval *argv, jsval *rval) -{ - StyleTag *tag = JS_GetPrivate(mc, obj); - - /* - * We expect between 1 and 4 arguments. We'll fail if there isn't at least - * one and silently ignore anything more than 4 - */ - if (argc == 0) { - JS_ReportError(mc, "Function padding() requires at least one argument."); - return JS_FALSE; - } - - /* - * The arguments apply to top, right, bottom, and left in that order. If there is - * only one argument it applies to all sides, if there are two or three, the missing - * values are taken from the opposite side - */ - if (tag) { - jsval *vp; - - LO_LockLayout(); - jss_TagSetProperty(mc, tag, "paddingTop", argv); - jss_TagSetProperty(mc, tag, "paddingRight", argc >= 2 ? &argv[1] : argv); - jss_TagSetProperty(mc, tag, "paddingBottom", argc >= 3 ? &argv[2] : argv); - - if (argc == 4) - vp = &argv[3]; - else if (argc >= 2) - vp = &argv[1]; - else - vp = argv; - jss_TagSetProperty(mc, tag, "paddingLeft", vp); - LO_UnlockLayout(); - } - - return JS_TRUE; -} - -/* Grouping syntax method for setting all the border widths at once */ -JSBool PR_CALLBACK -Tag_BorderWidth(JSContext *mc, JSObject *obj, unsigned argc, jsval *argv, jsval *rval) -{ - StyleTag *tag = JS_GetPrivate(mc, obj); - - /* - * We expect between 1 and 4 arguments. We'll fail if there isn't at least - * one and silently ignore anything more than 4 - */ - if (argc == 0) { - JS_ReportError(mc, "Function borderWidth() requires at least one argument."); - return JS_FALSE; - } - - XP_ASSERT(tag); - - /* - * The arguments apply to top, right, bottom, and left in that order. If there is - * only one argument it applies to all sides, if there are two or three, the missing - * values are taken from the opposite side - */ - if (tag) { - jsval *vp; - - LO_LockLayout(); - jss_TagSetProperty(mc, tag, "borderTopWidth", argv); - jss_TagSetProperty(mc, tag, "borderRightWidth", argc >= 2 ? &argv[1] : argv); - jss_TagSetProperty(mc, tag, "borderBottomWidth", argc >= 3 ? &argv[2] : argv); - - if (argc == 4) - vp = &argv[3]; - else if (argc >= 2) - vp = &argv[1]; - else - vp = argv; - jss_TagSetProperty(mc, tag, "borderLeftWidth", vp); - LO_UnlockLayout(); - } - - return JS_TRUE; -} - -/* Creates a new StyleTag structure */ -StyleTag * -jss_NewTag(char *name) -{ - StyleTag *tag = (StyleTag *)XP_CALLOC(1, sizeof(StyleTag)); - - if (!tag) - return 0; - - /* Make a copy of the name */ - if (name) { - tag->name = XP_STRDUP(name); - if (!tag->name) { - XP_FREE(tag); - return 0; - } - } - - return tag; -} - -/* Destroys a StyleTag structure */ -void -jss_DestroyTag(StyleTag *tag) -{ - if (tag->name) - XP_FREE(tag->name); - jss_DestroyProperties(tag->properties); - jss_DestroyRules(tag->rules); - XP_FREE(tag); -} - -/* JS function for creating contextual selectors */ -JSBool PR_CALLBACK -jss_Contextual(JSContext *mc, JSObject *obj, unsigned argc, jsval *argv, jsval *rval) -{ - /* We expect at least 1 argument */ - if (argc == 0) { - JS_ReportError(mc, "Function contextual() requires at least one argument."); - return JS_FALSE; - } - - /* If there's just one argument, then this is really just a simple selector */ - if (argc == 1) { - *rval = argv[0]; /* copy the argument to the result */ - - } else { - StyleTag *tag; - JSObject *tag_obj; - StyleRule *rule; - unsigned i; - - /* - * Each StyleTag has a "rules" member where we store all contextual selectors that - * have that instance as the last simple selector in the list, i.e. the contextual - * selector "contextual(tags.UL, tags.OL)" would be stored in the "tags.OL" object - * - * Validate each of the arguments, and make sure it's a JavaScript object of - * type JSSTag - */ - for (i = 0; i < argc; i++) { - /* We expect each simple selector to be a JavaScript object */ - if (!JSVAL_IS_OBJECT(argv[i]) || !JS_InstanceOf(mc, (JSObject *)argv[i], &Tag_class, 0)) { - /* XXX - don't report error! */ - JS_ReportError(mc, "Invalid argument number '%u' in call to contextual().", i); - return JS_FALSE; - } - } - - tag = JS_GetPrivate(mc, (JSObject *)argv[argc - 1]); - if(!tag) - return JS_TRUE; - - LO_LockLayout(); - - /* Look and see if there's already a rule for this selector */ - rule = jss_LookupRule(mc, tag->rules, argc, argv); - if (!rule) { - /* Create a new rule */ - rule = jss_NewRule(mc, argc, argv); - if (!rule) { - LO_UnlockLayout(); - return JS_FALSE; - } - - /* Add it to the list of existing rules */ - rule->next = tag->rules; - tag->rules = rule; - } - - LO_UnlockLayout(); - - /* Create a new JavaScript object */ - tag_obj = JS_NewObject(mc, &Tag_class, 0, 0); - if (!tag_obj) { - JS_ReportOutOfMemory(mc); - return JS_FALSE; - } - - JS_SetPrivate(mc, tag_obj, rule); - *rval = OBJECT_TO_JSVAL(tag_obj); - } - - return JS_TRUE; -} - -static void -jss_TagAddStyleProperties(StyleTag *tag, StyleStruct *style) -{ - StyleProperty *prop; - - for (prop = tag->properties; prop; prop = prop->next) { - SS_Number *num; - - switch (prop->tag) { - case JSVAL_BOOLEAN: - STYLESTRUCT_SetString(style, prop->name, prop->u.bVal ? "true" : "false", - (int32)tag->specificity); - break; - - case JSVAL_STRING: - STYLESTRUCT_SetString(style, prop->name, prop->u.strVal, - (int32)tag->specificity); - break; - - case JSVAL_INT: - num = STYLESTRUCT_NewSSNumber(style, (double)prop->u.nVal, ""); - STYLESTRUCT_SetNumber(style, prop->name, num, (int32)tag->specificity); - STYLESTRUCT_FreeSSNumber(style, num); - break; - - case JSVAL_DOUBLE: - num = STYLESTRUCT_NewSSNumber(style, prop->u.dVal, ""); - STYLESTRUCT_SetNumber(style, prop->name, num, (int32)tag->specificity); - STYLESTRUCT_FreeSSNumber(style, num); - break; - - default: - XP_ASSERT(FALSE); - break; - } - } -} - -/* - * This routine will find all the selectors that apply and add their - * properties to the style struct - */ -static void -jss_AddMatchingSelectors(JSSContext *jc, StyleTag *tag, StyleAndTagStack *styleStack) -{ - /* - * Iterate over each of the rules and for each one that applies add - * its properties - */ - if (tag->rules) { - jss_EnumApplicableRules(jc, tag->rules, styleStack, (RULECALLBACK)jss_TagAddStyleProperties, - STYLESTACK_GetStyleByIndex(styleStack, 0)); - } -} - -/* - * This routine is called to retrieve the list of style properties for the current - * tag (tag at the top of the tag stack) - */ -XP_Bool -jss_GetStyleForTopTag(StyleAndTagStack *styleStack) -{ - TagStruct *tag; - StyleStruct *style; - JSSContext jc; - - tag = STYLESTACK_GetTagByIndex(styleStack, 0); - style = STYLESTACK_GetStyleByIndex(styleStack, 0); - XP_ASSERT(tag && style); - - /* Get the top-level hash tables */ - XP_MEMSET(&jc, 0, sizeof(JSSContext)); - sml_GetJSSContext(styleStack, &jc); - - /* - * Find all the rules that apply and add their declarations. We pass - * the specificity along and the style stack decides whether to use the - * declaration. This way we avoid having to sort the declarations - * - * Start with document.ids - */ - if (tag->id && jc.ids && jc.ids->table) { - StyleTag *jsstag = (StyleTag *)PR_HashTableLookup(jc.ids->table, tag->id); - - if (jsstag) { - jss_TagAddStyleProperties(jsstag, style); - jss_AddMatchingSelectors(&jc, jsstag, styleStack); - } - } - - /* Now do document.classes */ - if (tag->class_name && jc.classes && jc.classes->table) { - StyleObject *jsscls = (StyleObject *)PR_HashTableLookup(jc.classes->table, tag->class_name); - - if (jsscls && jsscls->table) { - StyleTag *jsstag; - - /* First we check all elements of the class, e.g. classes.punk.all */ - jsstag = (StyleTag *)PR_HashTableLookup(jsscls->table, "all"); - if (jsstag) { - jss_TagAddStyleProperties(jsstag, style); - jss_AddMatchingSelectors(&jc, jsstag, styleStack); - } - - /* Now check for the specified tag */ - jsstag = (StyleTag *)PR_HashTableLookup(jsscls->table, tag->name); - if (jsstag) { - jss_TagAddStyleProperties(jsstag, style); - jss_AddMatchingSelectors(&jc, jsstag, styleStack); - } - } - } - - /* Last we do document.tags */ - if (tag->name && jc.tags && jc.tags->table) { - StyleTag *jsstag = (StyleTag *)PR_HashTableLookup(jc.tags->table, tag->name); - - if (jsstag) { - jss_TagAddStyleProperties(jsstag, style); - jss_AddMatchingSelectors(&jc, jsstag, styleStack); - } - } - - return JS_TRUE; -} - -/* Grouping syntax methods */ -static JSFunctionSpec tag_groupingMethods[] = { - {"margins", Tag_Margin, 1}, - {"paddings", Tag_Padding, 1}, - {"borderWidths", Tag_BorderWidth, 1}, - {0} -}; - -/* - * This routine is called to resolve names for the document object - */ -JSBool -JSS_ResolveDocName(JSContext *mc, MWContext *context, JSObject *obj, jsval id) -{ - if (JSVAL_IS_STRING(id)) { - char *name = JS_GetStringBytes(JSVAL_TO_STRING(id)); - - if (XP_STRCMP(name, "tags") == 0 || - XP_STRCMP(name, "classes") == 0 || - XP_STRCMP(name, "ids") == 0 || - XP_STRCMP(name, "contextual") == 0) { - JSObject *winobj = JS_GetParent(mc, obj); - - JSObject *tags_obj, *classes_obj, *ids_obj; - StyleObject *tags, *classes, *ids; - - /* Define the JS "JSSTags" class which is a container for "JSSTag" objects */ - if (!JS_InitClass(mc, winobj, NULL, &Tags_class, TagsConstructor, 2, 0, 0, 0, 0)) - goto out_of_memory; - - /* Define an instances "tags" and bind it to the document */ - tags_obj = JS_DefineObject(mc, obj, "tags", &Tags_class, 0, - JSPROP_READONLY | JSPROP_PERMANENT); - if (!tags_obj) - goto out_of_memory; - - /* Define an instances "ids" and bind it to the document */ - ids_obj = JS_DefineObject(mc, obj, "ids", &Tags_class, 0, - JSPROP_READONLY | JSPROP_PERMANENT); - if (!ids_obj) - goto out_of_memory; - - /* Define the JS "JSSClasses" class which is a container for "JSSTags" objects */ - if (!JS_InitClass(mc, winobj, NULL, &Classes_class, ClassesConstructor, 2, 0, 0, 0, 0)) - goto out_of_memory; - - /* Define an instances "classes" and bind it to the document */ - classes_obj = JS_DefineObject(mc, obj, "classes", &Classes_class, 0, - JSPROP_READONLY | JSPROP_PERMANENT); - if (!classes_obj) - goto out_of_memory; - - /* Define our C data structures */ - tags = (StyleObject *)XP_CALLOC(1, sizeof(StyleObject)); - if (!tags) - goto out_of_memory; - tags->type = JSSTags; - - classes = (StyleObject *)XP_CALLOC(1, sizeof(StyleObject)); - if (!classes) - goto out_of_memory; - classes->type = JSSClasses; - - ids = (StyleObject *)XP_CALLOC(1, sizeof(StyleObject)); - if (!ids) - goto out_of_memory; - ids->type = JSSIds; - - /* Add them to the style stack so we can get at them later */ - LO_SetStyleObjectRefs(context, tags, classes, ids); - - /* We need to be able to get to the C data structures from the JavaScript objects */ - JS_SetPrivate(mc, tags_obj, tags); - JS_SetPrivate(mc, classes_obj, classes); - JS_SetPrivate(mc, ids_obj, ids); - - /* Define the JS "JSSTag" class and some grouping syntax methods */ - if (!JS_InitClass(mc, winobj, NULL, &Tag_class, TagConstructor, 2, 0, tag_groupingMethods, 0, 0)) - goto out_of_memory; - - /* Define the function for creating contextual selectors */ - JS_DefineFunction(mc, obj, "contextual", jss_Contextual, 1, 0); - } - } - - return JS_TRUE; - - out_of_memory: - JS_ReportOutOfMemory(mc); - return JS_FALSE; -} - -/**** Definition of JavaScript classes ****/ - -/* - * This is the JS "JSSTags" class. This class is a container for "JSSTag" - * objects (see below). There are two main instance of this class: "document.tags" - * and "document.ids" - */ -JSClass Tags_class = { - "JSSTags", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, - JS_EnumerateStub, Tags_ResolveName, JS_ConvertStub, jss_FinalizeStyleObject -}; - -/* - * This is the JS "JSSClasses" class. This class is a container for "JSSTags" - * objects which in turn contain the actual tags. There is one instance of this - * class: "document.classes" - */ -JSClass Classes_class = { - "JSSClasses", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, - JS_EnumerateStub, Classes_ResolveName, JS_ConvertStub, jss_FinalizeStyleObject -}; - -/* - * This is the JS "JSSTag" class. There can be as many instances of this class - * as there are HTML tags. JSS declarations are represented as properties - */ -JSClass Tag_class = { - "JSSTag", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, Tag_GetProperty, Tag_SetProperty, - JS_EnumerateStub, Tag_ResolveName, JS_ConvertStub, JS_FinalizeStub -}; - diff --git a/mozilla/lib/libstyle/makefile.win b/mozilla/lib/libstyle/makefile.win deleted file mode 100644 index 693997facbf..00000000000 --- a/mozilla/lib/libstyle/makefile.win +++ /dev/null @@ -1,27 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - -MODULE = style -EXPORTS = stystruc.h stystack.h -DEPTH = ..\.. - - -!include $(DEPTH)\config\rules.mak diff --git a/mozilla/lib/libstyle/stystack.c b/mozilla/lib/libstyle/stystack.c deleted file mode 100644 index 2038f46ad70..00000000000 --- a/mozilla/lib/libstyle/stystack.c +++ /dev/null @@ -1,590 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* styleStack used to hold a stack of tags and associated styles - * - * Designed and Implemented by Lou Montulli '97 - */ - - -#include "xp.h" -#include "libmocha.h" -#include "stystruc.h" -#include "stystack.h" -#include "jsspriv.h" - -/* simple stack implementation for style/tag stack - * why don't we have an XP Stack? - */ -#define INITIAL_STACK_SIZE 10 -#define INCREASE_STACK_BY 5 - -typedef struct { - - StyleStruct *style; - TagStruct *tag; - -} TagAndStyleAssoc; - -typedef struct _SML_StyleAndTagStack { - StyleAndTagStackInterface *vtable; - int32 refcount; - - /* private data */ - XP_Bool save_stack; - TagAndStyleAssoc **tag_stack; - int32 tag_stack_size; - int32 tag_stack_first_unused_index; - - MWContext *context; - StyleObject *tags; - StyleObject *classes; - StyleObject *ids; - -} SML_StyleAndTagStack; - -/* specify whether to keep the stack or not. - * when the stack is OFF (as it is at initalization) - * adding to the stack is a noop - */ -void -SML_SetSaveOn(SML_StyleAndTagStack *self, XP_Bool on_flag) -{ - self->save_stack = on_flag; -} - -XP_Bool -SML_IsSaveOn(SML_StyleAndTagStack *self) -{ - return self->save_stack; -} - -/* - * allocate TagStrucs from a pool to speed up - * the application - */ -static XP_AllocStructInfo TagStructAlloc = - { XP_INITIALIZE_ALLOCSTRUCTINFO(sizeof(TagStruct)) }; - -TagStruct * -SML_NewTagStruct(SML_StyleAndTagStack *self, char *name, char *class_name, char *id) -{ - TagStruct *tag; - - if(!name) - return NULL; - - /* - * allocate TagStrucs from a pool to speed up - * the application - */ - tag = (TagStruct*) XP_AllocStructZero(&TagStructAlloc); - if(!tag) - return(NULL); - - - tag->name = name; - if(class_name) - tag->class_name = class_name; - if(id) - tag->id = id; - - return(tag); -} - -void -SML_FreeTagStruct(SML_StyleAndTagStack *self, TagStruct *tag) -{ - if(!tag) - return; - - XP_FREEIF(tag->name); - XP_FREEIF(tag->class_name); - XP_FREEIF(tag->id); - /* - * return the TagStruct to the pool - */ - XP_FreeStruct(&TagStructAlloc, tag); - tag = NULL; -} - - -/* - * allocate TagAndStyleAssoc from a pool to speed up - * the application - */ -static XP_AllocStructInfo TagAndStyleAssocAlloc = - { XP_INITIALIZE_ALLOCSTRUCTINFO(sizeof(TagAndStyleAssoc)) }; - -TagAndStyleAssoc * -sml_new_assoc(SML_StyleAndTagStack *self, TagStruct *tag, StyleStruct *style) -{ - TagAndStyleAssoc *new_assoc; - - if(!tag || !style) - { - XP_ASSERT(0); - return NULL; - } - - /* - * allocate TagAndStyleAssoc from a pool to speed up - * the application - */ - new_assoc = (TagAndStyleAssoc*) XP_AllocStructZero(&TagAndStyleAssocAlloc); - - if(!new_assoc) - return NULL; - - new_assoc->tag = tag; - new_assoc->style = style; - - return new_assoc; -} - -void -sml_free_TagAndStyleAssoc(SML_StyleAndTagStack *self,TagAndStyleAssoc *assoc) -{ - if(!assoc) - return; - - SML_FreeTagStruct(self, assoc->tag); - STYLESTRUCT_Delete(assoc->style); - -#ifdef DEBUG - assoc->tag = (TagStruct *)-1; - assoc->style = (StyleStruct *)-1; -#endif - - /* - * return the TagAndStyleAssoc to the pool - */ - XP_FreeStruct(&TagAndStyleAssocAlloc, assoc); - assoc = NULL; -} - -void -sml_free_stack(SML_StyleAndTagStack *self) -{ - int i; - - if(self->tag_stack) - { - for(i = 0; i < self->tag_stack_first_unused_index; i++) - { - sml_free_TagAndStyleAssoc(self, self->tag_stack[i]); - } - - XP_FREE(self->tag_stack); - } - - self->tag_stack_size = 0; - self->tag_stack_first_unused_index = 0; - self->tag_stack = NULL; - -} - - -void -sml_expand_stack(SML_StyleAndTagStack *self) -{ - if(self->tag_stack) - { - self->tag_stack_size += INCREASE_STACK_BY; - self->tag_stack = XP_REALLOC(self->tag_stack, - self->tag_stack_size*sizeof(TagAndStyleAssoc*)); - } - else - { - self->tag_stack_size = INITIAL_STACK_SIZE; - self->tag_stack = XP_CALLOC(self->tag_stack_size, sizeof(TagAndStyleAssoc*)); - } - - if(!self->tag_stack) - { - self->tag_stack_first_unused_index = 0; - self->tag_stack_size = 0; - } -} - -void -ss_add_to_stack(SML_StyleAndTagStack *self, TagAndStyleAssoc *pair) -{ - if(self->tag_stack_size <= self->tag_stack_first_unused_index) - sml_expand_stack(self); - - if(self->tag_stack) - { - self->tag_stack[self->tag_stack_first_unused_index++] = pair; - } - else - { - sml_free_TagAndStyleAssoc(self, pair); - } -} - - -PushTagStatus -SML_PushTag(SML_StyleAndTagStack *self, char *name, char *class_name, char *id) -{ - TagStruct *new_tag; - StyleStruct *ss; - TagAndStyleAssoc *assoc; - - if(!self->save_stack) - return PUSH_TAG_ERROR; - - new_tag = SML_NewTagStruct(self, name, class_name, id); - if(!new_tag) - return PUSH_TAG_ERROR; - - ss = STYLESTRUCT_Factory_Create(); - - if(!ss) - { - SML_FreeTagStruct(self, new_tag); - return PUSH_TAG_ERROR; - } - - assoc = sml_new_assoc(self, new_tag, ss); - - if(!assoc) - { - SML_FreeTagStruct(self, new_tag); - STYLESTRUCT_Delete(ss); - return PUSH_TAG_ERROR; - } - - ss_add_to_stack(self, assoc); - - /* add call to style sheet parser here to fill in style struct */ - jss_GetStyleForTopTag((StyleAndTagStack*)self); - - return(PUSH_TAG_SUCCESS); -} - -/* pop a tag from within the stack - * The stack is indexed from the top element. - * the zero'th element is the top of the stack - */ -void -SML_PopTagByIndex(SML_StyleAndTagStack *self, char *name, int32 index) -{ - - TagAndStyleAssoc *assoc; - /* index from the top of the stack */ - int32 real_index = self->tag_stack_first_unused_index - 1 - index; - - if(self->tag_stack_first_unused_index < real_index+1 || real_index < 0) - return; - - assoc = self->tag_stack[real_index]; - sml_free_TagAndStyleAssoc(self, assoc); - - /* shift the stack down */ - if(real_index < self->tag_stack_first_unused_index-1) - XP_MEMMOVE(&self->tag_stack[real_index], - &self->tag_stack[real_index+1], - index*sizeof(TagAndStyleAssoc*)); - - /* zero last unused index for debugging purposes */ - self->tag_stack_first_unused_index--; - self->tag_stack[self->tag_stack_first_unused_index] = 0; -} - -void -SML_PopTag(SML_StyleAndTagStack *self, char *name) -{ - SML_PopTagByIndex(self, name, 0); -} - -/* the zero'th index is the top of the stack - */ -TagAndStyleAssoc * -sml_get_index(SML_StyleAndTagStack *self, int32 index) -{ - int32 real_index = (self->tag_stack_first_unused_index-1) - index; - - if(real_index < 0) - return NULL; - - return(self->tag_stack[real_index]); -} - -/* the zero'th index is the bottom of the stack - */ -TagAndStyleAssoc * -sml_get_reverse_index(SML_StyleAndTagStack *self, int32 index) -{ - if(index >= self->tag_stack_first_unused_index) - return NULL; - - return(self->tag_stack[index]); -} - -/* the zero'th index is the top of the stack - */ -TagStruct * -SML_GetTagByIndex(SML_StyleAndTagStack *self, int32 index) -{ - TagAndStyleAssoc *assoc = sml_get_index(self, index); - - if(!assoc) - return NULL; - - return(assoc->tag); -} - -/* the zero'th index is the bottom of the stack - */ -TagStruct * -SML_GetTagByReverseIndex(SML_StyleAndTagStack *self, int32 index) -{ - TagAndStyleAssoc *assoc = sml_get_reverse_index(self, index); - - if(!assoc) - return NULL; - - return(assoc->tag); -} - -/* the zero'th index is the top of the stack - */ -StyleStruct * -SML_GetStyleByIndex(SML_StyleAndTagStack *self, int32 index) -{ - TagAndStyleAssoc *assoc = sml_get_index(self, index); - - if(!assoc) - return NULL; - - return(assoc->style); -} - -/* the zero'th index is the bottom of the stack - */ -StyleStruct * -SML_GetStyleByReverseIndex(SML_StyleAndTagStack *self, int32 index) -{ - TagAndStyleAssoc *assoc = sml_get_reverse_index(self, index); - - if(!assoc) - return NULL; - - return(assoc->style); -} - -void -SML_Delete(SML_StyleAndTagStack *self) -{ - self->refcount--; - - if(self->refcount > 0) - return; - - sml_free_stack(self); - - XP_FREE(self); -} - -void -SML_Purge(SML_StyleAndTagStack *self) -{ - sml_free_stack(self); -} - -void -SML_Init(SML_StyleAndTagStack *self, MWContext *context) -{ - self->context = context; -} - -/* static vtable */ -const StyleAndTagStackInterface StyleAndTagStack_interface = { - - (void (*)(StyleAndTagStack *self, MWContext *context)) - SML_Init, - (TagStruct * (*)(StyleAndTagStack *self, char *name, char *class_name, char *id)) - SML_NewTagStruct, - (void (*)(StyleAndTagStack *self, TagStruct *tag)) - SML_FreeTagStruct, - (PushTagStatus (*)(StyleAndTagStack *self, char *name, char *class_name, char *id)) - SML_PushTag, - (void (*)(StyleAndTagStack *self, char *name)) - SML_PopTag, - (void (*)(StyleAndTagStack *self, char *name, int32 index)) - SML_PopTagByIndex, - (TagStruct * (*)(StyleAndTagStack *self, int32 index)) - SML_GetTagByIndex, - (TagStruct * (*)(StyleAndTagStack *self, int32 index)) - SML_GetTagByReverseIndex, - (StyleStruct * (*)(StyleAndTagStack *self, int32 index)) - SML_GetStyleByIndex, - (StyleStruct * (*)(StyleAndTagStack *self, int32 index)) - SML_GetStyleByReverseIndex, - (StyleStruct * (*)(StyleAndTagStack *self)) - SML_Delete, - (StyleStruct * (*)(StyleAndTagStack *self)) - SML_Purge, - (void (*)(StyleAndTagStack *self, XP_Bool on_flag)) - SML_SetSaveOn, - (XP_Bool (*)(StyleAndTagStack *self)) - SML_IsSaveOn -}; - -StyleAndTagStack * -SML_StyleStack_Factory_Create(void) -{ - /* initializer */ - SML_StyleAndTagStack * self = (SML_StyleAndTagStack*)XP_CALLOC(1, sizeof(SML_StyleAndTagStack)); - - if(!self) - return NULL; - - self->vtable = (void*)&StyleAndTagStack_interface; - self->refcount = 1; - - return (StyleAndTagStack*)self; -} - -void -SML_SetObjectRefs(StyleAndTagStack *styleStack, - StyleObject *tags, - StyleObject *classes, - StyleObject *ids) -{ - SML_StyleAndTagStack * self = (SML_StyleAndTagStack*)styleStack; - - self->tags = tags; - self->classes = classes; - self->ids = ids; -} - -/* - * Helper routine to assemble the JSSContext - */ -void -sml_GetJSSContext(StyleAndTagStack *styleStack, JSSContext *jc) -{ - SML_StyleAndTagStack * self = (SML_StyleAndTagStack*)styleStack; - - /* Lookup document.tags */ - jc->tags = self->tags; - - /* Lookup document.classes */ - jc->classes = self->classes; - - /* Lookup up document.ids */ - jc->ids = self->ids; -} - -#ifdef TEST_STYLESTACK - -typedef struct { - char name[100]; - char class_name[100]; - char id[100]; -} test_struct; - -test_struct test_table[] = { - -{"h1", "class1", "id1"}, -{"h2", "class2", "id2"}, -{"h3", "class3", "id3"}, -{"h4", "class4", "id4"}, - -{"h5", "", "id1"}, -{"h6", "", "id2"}, -{"h7", "", "id3"}, -{"h8", "", "id4"}, - -{"h9", "class9", ""}, -{"h10", "class10", ""}, -{"h11", "class11", ""}, -{"h12", "class12", ""}, - -{"h13", "", ""}, -{"h14", "", ""}, -{"h15", "", ""}, -{"h16", "", ""}, - -{"", "", ""} -}; - -void -test_values(StyleAndTagStack * h) -{ - int i; - - for(i=0; *test_table[i].name; i++) - ; /* null body */ - - for(i--; i >= 0; i--) - { - test_struct *ts = &test_table[i]; - - TagStruct *tag = STYLESTACK_GetTagByIndex(h, 0); - - if(strcmp(tag->name, ts->name)) - printf("Error: names do not match: %s:%s\n", tag->name, ts->name); - else if(*ts->class && strcmp(tag->class, ts->class)) - printf("Error: class names do not match: %s:%s\n", tag->class_name, ts->class_name); - else if(*ts->id && strcmp(tag->id, ts->id)) - printf("Error: id names do not match: %s:%s\n", tag->id, ts->id); - else - printf("Success: retreival successful: %s\n", tag->name); - - STYLESTACK_PopTag(h, ts->name); - } -} - -int -main(int argc, char *argv[]) -{ - int i; - StyleAndTagStack * h; - StyleStruct *style; - - - h = SML_StyleStack_Factory_Create(); - - if(!h) - exit(1); - - for(i=0; *test_table[i].name; i++) - { - test_struct *ts = &test_table[i]; - - style = STYLESTACK_PushTag(h, ts->name, ts->class_name, ts->id); - - if(!style) - printf("stack (or malloc) error"); - } - - test_values(h); - - printf("\nAll tests complete\n"); - - exit(0); -} - -#endif /* TEST_STYLESTACK */ diff --git a/mozilla/lib/libstyle/stystack.h b/mozilla/lib/libstyle/stystack.h deleted file mode 100644 index 47fca7b0811..00000000000 --- a/mozilla/lib/libstyle/stystack.h +++ /dev/null @@ -1,127 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "plhash.h" - -#ifndef SML_HEADER -#define SML_HEADER - -#define STYLESTACK_Init(self, context) (*self->vtable->Init)(self,context) -#define STYLESTACK_PopTag(self,name) (*self->vtable->PopTag)(self,name) -#define STYLESTACK_PopTagByIndex(self,name, index) (*self->vtable->PopTagByIndex)(self,name,index) -#define STYLESTACK_PushTag(self,name,class_name,id) (*self->vtable->PushTag)(self,name,class_name,id) -#define STYLESTACK_GetTagByIndex(self, i) (*self->vtable->GetTagByIndex)(self, i) -#define STYLESTACK_GetTagByReverseIndex(self, i) (*self->vtable->GetTagByReverseIndex)(self, i) -#define STYLESTACK_GetStyleByIndex(self, i) (*self->vtable->GetStyleByIndex)(self, i) -#define STYLESTACK_GetStyleByReverseIndex(self, i) (*self->vtable->GetStyleByReverseIndex)(self, i) -#define STYLESTACK_FreeTagStruct(self,tag) (*self->vtable->FreeTagStruct)(self,tag) -#define STYLESTACK_NewTagStruct(self,name,class_name,id) (*self->vtable->NewTagStruct)(self,name,class_name,id) -#define STYLESTACK_Delete(self) (*self->vtable->Delete)(self) -#define STYLESTACK_Purge(self) (*self->vtable->Purge)(self) -#define STYLESTACK_SetSaveOn(self, i) (*self->vtable->SetSaveOn)(self, i) -#define STYLESTACK_IsSaveOn(self) (*self->vtable->IsSaveOn)(self) - - - - -typedef struct { - - char *name; - char *class_name; - char *id; - -} TagStruct; - -typedef enum { -PUSH_TAG_ERROR, -PUSH_TAG_SUCCESS, -PUSH_TAG_BLOCKED -} PushTagStatus; - -typedef struct _StyleAndTagStackInterface StyleAndTagStackInterface; - -typedef struct { - StyleAndTagStackInterface *vtable; - int32 refcount; -} StyleAndTagStack; - -struct _StyleAndTagStackInterface { - void (*Init) - (StyleAndTagStack *self, MWContext *context); - TagStruct * (*NewTagStruct) - (StyleAndTagStack *self, char *name, char *class_name, char *id); - void (*FreeTagStruct) - (StyleAndTagStack *self, TagStruct *tag); - PushTagStatus (*PushTag) - (StyleAndTagStack *self, char *name, char *class_name, char *id); - void (*PopTag) - (StyleAndTagStack *self, char *name); - void (*PopTagByIndex) - (StyleAndTagStack *self, char *name, int32 index); - TagStruct * (*GetTagByIndex) - (StyleAndTagStack *self, int32 index); - TagStruct * (*GetTagByReverseIndex) - (StyleAndTagStack *self, int32 index); - StyleStruct * (*GetStyleByIndex) - (StyleAndTagStack *self, int32 index); - StyleStruct * (*GetStyleByReverseIndex) - (StyleAndTagStack *self, int32 index); - StyleStruct * (*Delete) - (StyleAndTagStack *self); - StyleStruct * (*Purge) - (StyleAndTagStack *self); - void (*SetSaveOn) - (StyleAndTagStack *self, XP_Bool on_flag); - XP_Bool (*IsSaveOn) - (StyleAndTagStack *self); -}; - - -/* initializer */ -extern StyleAndTagStack * SML_StyleStack_Factory_Create(void); - -typedef enum JSSObjectTypeEnum { - JSSTags = 1, /* document.tags */ - JSSIds, /* document.ids */ - JSSClasses, /* document.classes */ - JSSClass /* document.classes.<some class> */ -} JSSObjectType; - -typedef struct _StyleObject { - PRHashTable *table; - JSSObjectType type; - char *name; /* only used when type is JSSClass */ -} StyleObject; - -extern void -SML_SetObjectRefs(StyleAndTagStack *styleStack, - StyleObject *tags, - StyleObject *classes, - StyleObject *ids); - -/* Helper routine to assemble the JSSContext */ -struct JSSContext; - -extern void -sml_GetJSSContext(StyleAndTagStack *styleStack, struct JSSContext *jc); - -#endif /* SML_HEADER */ diff --git a/mozilla/lib/libstyle/stystruc.c b/mozilla/lib/libstyle/stystruc.c deleted file mode 100644 index 95bf8c5ddda..00000000000 --- a/mozilla/lib/libstyle/stystruc.c +++ /dev/null @@ -1,768 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* style struck used to hold style associations - * - * Designed and Implemented by Lou Montulli '97 - */ - -#include "xp.h" -#include "stystruc.h" - -/* class to hold style information between style sheet parser - * and layout engine - */ - -#define INCREASE_ARRAY_BY 5 -#define INITIAL_ARRAY_SIZE 10 - -typedef enum { - CHAR_VALUE, - SS_NUM_VALUE -} ss_pair_type; - -typedef struct _ss_pair { - char *name; - ss_pair_type value_type; - void *value; - int32 priority; -} ss_pair; - -typedef struct _SS_StyleStruct { - StyleStructInterface *vtable; - int32 refcount; - - /* private data */ - ss_pair ** pair_array; - int32 pair_array_size; - int32 pair_array_first_unused_index; - -} SS_StyleStruct; - -/* - * allocate SS_StyleStructs from a pool - */ -static XP_AllocStructInfo SS_StyleStructAlloc = - { XP_INITIALIZE_ALLOCSTRUCTINFO(sizeof(SS_StyleStruct)) }; - -void -SS_freeSSNumber(SS_StyleStruct *self, SS_Number *obj) -{ - if(!obj) - return; - - XP_FREEIF(obj->units); - XP_FREE(obj); -} - -SS_Number * -SS_newSSNumber(SS_StyleStruct *self, double value, char *units) -{ - SS_Number *new_num; - - if(!units) - { - XP_ASSERT(0); - return NULL; - } - - /* alloc an ss_num */ - new_num = XP_CALLOC(1, sizeof(SS_Number)); - if(!new_num) - return NULL; - - new_num->value = value; - new_num->units = XP_STRDUP(units); - - if(!new_num->units) - { - XP_FREE(new_num); - return NULL; - } - - return(new_num); -} - -SS_Number * -SS_copySSNumber(SS_StyleStruct *self, SS_Number *old_num) -{ - if(!old_num) - { - XP_ASSERT(0); - return NULL; - } - - return(SS_newSSNumber(self, old_num->value, old_num->units)); -} - -void -ss_expand_array(SS_StyleStruct *self) -{ - if(self->pair_array) - { - self->pair_array_size += INCREASE_ARRAY_BY; - self->pair_array = XP_REALLOC(self->pair_array, - self->pair_array_size*sizeof(ss_pair*)); - } - else - { - self->pair_array_size = INITIAL_ARRAY_SIZE; - self->pair_array = XP_CALLOC(self->pair_array_size, sizeof(ss_pair*)); - } - - if(!self->pair_array) - { - self->pair_array_first_unused_index = 0; - self->pair_array_size = 0; - } -} - -void -ss_free_ss_pair(SS_StyleStruct *self, ss_pair *pair) -{ - if(pair) - { - XP_FREEIF(pair->name); - switch(pair->value_type) - { - case CHAR_VALUE: - XP_FREEIF(pair->value); - break; - - case SS_NUM_VALUE: - SS_freeSSNumber(self, (SS_Number*)pair->value); - break; - - default: - XP_ASSERT(0); - } - - XP_FREE(pair); - } -} - -ss_pair * -ss_find_pair(SS_StyleStruct *self, char *name) -{ - int i; - - for(i = 0; i < self->pair_array_first_unused_index; i++) - { - if(!strcasecomp(self->pair_array[i]->name, name)) - return(self->pair_array[i]); - } - - return NULL; -} - -int32 -ss_find_pair_index(SS_StyleStruct *self, ss_pair *pair) -{ - int i; - - for(i = 0; i < self->pair_array_first_unused_index; i++) - { - if((self->pair_array[i] == pair)) - return(i); - } - - return -1; -} - -/* remove the pair from the pair array and - * free's the pair if found. - */ -void -ss_delete_pair(SS_StyleStruct *self, ss_pair *pair) -{ - /* find the pair index */ - int32 index = ss_find_pair_index(self, pair); - - if(index > -1) - { - ss_free_ss_pair(self, self->pair_array[index]); - - /* shift the array back over the deleted pair */ - if(index < self->pair_array_first_unused_index) - { - int32 move_size = (self->pair_array_first_unused_index-index)-1; - move_size *= sizeof(ss_pair*); - if(move_size) - XP_MEMMOVE(&self->pair_array[index], &self->pair_array[index+1], move_size); - self->pair_array_first_unused_index--; - } - } - else - { - /* cant find pair */ - XP_ASSERT(0); - } - -} - -void -ss_add_to_array(SS_StyleStruct *self, ss_pair *pair) -{ - if(!pair || !pair->name) - { - XP_ASSERT(0); - return; - } - - if(self->pair_array_size <= self->pair_array_first_unused_index) - ss_expand_array(self); - - if(self->pair_array) - { -#if DEBUG - /* check for dups */ - ss_pair *dup = ss_find_pair(self, pair->name); - - if(dup) - XP_ASSERT(0); -#endif - - self->pair_array[self->pair_array_first_unused_index++] = pair; - } - else - { - ss_free_ss_pair(self, pair); - } -} - -void -ss_free_pair_array(SS_StyleStruct *self) -{ - int i; - - if(self->pair_array) - { - for(i = 0; i < self->pair_array_first_unused_index; i++) - { - ss_free_ss_pair(self, self->pair_array[i]); - } - - XP_FREE(self->pair_array); - } - - self->pair_array_size = 0; - self->pair_array_first_unused_index = 0; -} - -void -SS_setString(SS_StyleStruct *self, char *name, char *value, int32 priority) -{ - ss_pair *new_pair; - ss_pair *dup; - - /* check for dups */ - dup = ss_find_pair(self, name); - - if(dup) - { - if(dup->priority <= priority) - ss_delete_pair(self, dup); - else - return; /* ignore this set call */ - } - - /* alloc a pair */ - new_pair = XP_CALLOC(1, sizeof(ss_pair)); - - if(new_pair) - { - new_pair->name = XP_STRDUP(name); - new_pair->value_type = CHAR_VALUE; - new_pair->value = XP_STRDUP(value); - new_pair->priority = priority; - - if(!new_pair->name || !new_pair->value) - { - /* malloc error */ - XP_FREE(new_pair); - XP_FREEIF(new_pair->name); - XP_FREEIF(new_pair->value); - return; - } - - ss_add_to_array(self, new_pair); - } -} - -void -SS_setNumber(SS_StyleStruct *self, char *name, SS_Number *value, int32 priority) -{ - SS_Number *ss_num; - ss_pair *new_pair; - ss_pair *dup; - - /* check for dups */ - dup = ss_find_pair(self, name); - - if(dup) - { - if(dup->priority <= priority) - ss_delete_pair(self, dup); - else - return; /* ignore this set call */ - } - - /* alloc a pair */ - new_pair = XP_CALLOC(1, sizeof(ss_pair)); - - if(new_pair) - { - /* alloc an ss_num */ - ss_num = SS_copySSNumber(self, value); - - new_pair->name = XP_STRDUP(name); - new_pair->value_type = SS_NUM_VALUE; - new_pair->value = ss_num; - new_pair->priority = priority; - - if(!new_pair->name || !new_pair->value) - { - /* malloc error */ - XP_FREE(new_pair); - XP_FREEIF(new_pair->name); - SS_freeSSNumber(self, new_pair->value); - - return; - } - - ss_add_to_array(self, new_pair); - } -} - -char * -SS_getString(SS_StyleStruct *self, char *name) -{ - ss_pair *pair = ss_find_pair(self, name); - - if(pair && pair->value) - { - if(pair->value_type == CHAR_VALUE) - { - return(XP_STRDUP((char*)pair->value)); - } - else if(pair->value_type == SS_NUM_VALUE) - { - SS_Number *ss_num = (SS_Number*)pair->value; - char *rv = PR_smprintf("%f", ss_num->value); - StrAllocCat(rv, ss_num->units); - - return(rv); - } - else - { - XP_ASSERT(0); - } - } - - return(NULL); -} - -SS_Number * -SS_stringToSSNumber(SS_StyleStruct *self, char *num_string) -{ - char *ptr, *num_ptr; - double num_val; - - ptr = num_string; - - /* skip any whitespace */ - while(XP_IS_SPACE(*ptr)) ptr++; - - /* save a pointer to the first non white char */ - num_ptr = ptr; - - /* go past any sign in front of the number */ - if(*ptr == '-' || *ptr == '+') ptr++; - - /* go forward until a non number is encountered */ - while(XP_IS_DIGIT(*ptr)) ptr++; - - /* go past a decimal */ - if(*ptr == '.') ptr++; - - while(XP_IS_DIGIT(*ptr)) ptr++; - - /* skip any whitespace between the number and units */ - while(XP_IS_SPACE(*ptr)) ptr++; - - /* - * no need to clear out the string at the end since - * atof will do that for us, and writting to the string - * will make us crash - * - * ptr_value = *ptr; - * *ptr = '\0'; - * *ptr = ptr_value; - */ - num_val = atof(num_ptr); - - return(SS_newSSNumber(self, num_val, ptr)); -} - -SS_Number * -SS_getNumber(SS_StyleStruct *self, char *name) -{ - ss_pair *pair = ss_find_pair(self, name); - - if(pair && pair->value) - { - if(pair->value_type == CHAR_VALUE) - { - return SS_stringToSSNumber(self, pair->value); - } - else if(pair->value_type == SS_NUM_VALUE) - { - return(SS_copySSNumber(self, (SS_Number*)pair->value)); - } - else - { - XP_ASSERT(0); - } - } - - return(NULL); - -} - -uint32 -SS_count(SS_StyleStruct *self) -{ - return self->pair_array_first_unused_index; -} - -StyleStruct * -SS_duplicate(SS_StyleStruct *self) -{ - StyleStruct *new_ss = STYLESTRUCT_Factory_Create(); - int i; - - if(!new_ss) - return NULL; - - /* add all the elements of the current struct to the new one */ - for(i = 0; i < self->pair_array_first_unused_index; i++) - { - ss_pair *pair = self->pair_array[i]; - - switch(pair->value_type) - { - case CHAR_VALUE: - STYLESTRUCT_SetString(new_ss, pair->name, (char *)pair->value, pair->priority); - break; - - case SS_NUM_VALUE: - STYLESTRUCT_SetNumber(new_ss, pair->name, (SS_Number*)pair->value, pair->priority); - break; - default: - XP_ASSERT(0); - } - } - - return new_ss; -} - -void -SS_delete(SS_StyleStruct *self) -{ - self->refcount--; - - if(self->refcount > 0) - return; - - ss_free_pair_array(self); - -#ifdef DEBUG - /* memset the struct so that any free memory read - * errors are immediately detectable - */ - XP_MEMSET(self, 0, sizeof(SS_StyleStruct)); -#endif /* DEBUG */ - - /* - *return SS_StyleStruct to the pool - */ - XP_FreeStruct(&SS_StyleStructAlloc, self); - self = NULL; -} - -/***************************************************** - * class symantics - */ - -/* static vtable */ -const StyleStructInterface StyleStruct_interface = { - - (SS_Number* (*)(StyleStruct *self, double value, char *units)) - SS_newSSNumber, - (void (*)(StyleStruct * self, SS_Number *obj)) - SS_freeSSNumber, - (SS_Number* (*)(StyleStruct *self, SS_Number *old_num)) - SS_copySSNumber, - (SS_Number* (*)(StyleStruct *self, char *strng)) - SS_stringToSSNumber, - (void (*)(StyleStruct * self, char *name, char *value, int32 priority)) - SS_setString, - (void (*)(StyleStruct * self, char *name, SS_Number *value, int32 priority)) - SS_setNumber, - (char* (*)(StyleStruct * self, char *name)) - SS_getString, - (SS_Number* (*)(StyleStruct * self, char *name)) - SS_getNumber, - (uint32 (*)(StyleStruct * self)) - SS_count, - (StyleStruct * (*)(StyleStruct * self)) - SS_duplicate, - (void (*)(StyleStruct * self)) - SS_delete, -}; - - -StyleStruct * -STYLESTRUCT_Factory_Create(void) -{ - /* initializer */ - /* - * allocate SS_StyleStruct from a pool - */ - SS_StyleStruct *self = (SS_StyleStruct*) XP_AllocStructZero(&SS_StyleStructAlloc); - - if(!self) - return NULL; - - self->vtable = (void*)&StyleStruct_interface; - self->refcount = 1; - - return (StyleStruct*)self; -} - -#ifdef SS_TEST - -typedef struct { - char name[100]; - char value[100]; - char units[100]; - ss_pair_type type; -} test_struct; - -test_struct test_table[] = { - -{"numone", "1", "pts", SS_NUM_VALUE}, -{"numtwo", "2", "pts", SS_NUM_VALUE}, -{"numthree", "3", "pts", SS_NUM_VALUE}, -{"numfour", "4", "pts", SS_NUM_VALUE}, -{"numfive", "5", "pts", SS_NUM_VALUE}, -{"numsix", "6", "pts", SS_NUM_VALUE}, -{"numseven", "7", "pts", SS_NUM_VALUE}, -{"numeight", "8", "pts", SS_NUM_VALUE}, -{"numnine", "9", "pts", SS_NUM_VALUE}, -{"numten", "10", "pts", SS_NUM_VALUE}, -{"numeleven", "11", "pts", SS_NUM_VALUE}, -{"numtwelve", "12", "pts", SS_NUM_VALUE}, -{"numthirteen plus spaces", "13", "pts", SS_NUM_VALUE}, -{"numfive hundred thowsand", "500000", "pts", SS_NUM_VALUE}, - -{"strone", "strone", "", CHAR_VALUE}, -{"strtwo", "strtwo", "", CHAR_VALUE}, -{"strthree", "strthree", "", CHAR_VALUE}, -{"strfour", "strfour", "", CHAR_VALUE}, -{"strfive", "strfive", "", CHAR_VALUE}, -{"strsix", "strsix", "", CHAR_VALUE}, -{"strseven", "strseven", "", CHAR_VALUE}, - -{0, 0, SS_NUM_VALUE} - -}; - -void -test_values(StyleStruct *h) -{ - int i; - char *ptr; - SS_Number *ss; - char buf[200]; - - for(i=0; *test_table[i].name; i++) - { - test_struct *ts = &test_table[i]; - - printf("testing name: %s\n", ts->name); - - switch(ts->type) - { - case CHAR_VALUE: - ptr = STYLESTRUCT_GetString(h, ts->name); - - if(!ptr) - { - printf("Error: value not found for name: %s\n", ts->name); - } - else if(strcmp(ptr, ts->value)) - { - printf("Error: value does not match, old: %s new: %s\n", ts->value, ptr); - XP_FREE(ptr); - } - break; - - case SS_NUM_VALUE: - /* get as string */ - ptr = STYLESTRUCT_GetString(h, ts->name); - - if(!ptr) - { - printf("Error: value not found for name: %s\n", ts->name); - } - else - { - strcpy(buf, ts->value); - strcat(buf, ts->units); - if(strcmp(ptr, buf)) - printf("Error: value does not match, old: %s new: %s\n", buf, ptr); - XP_FREE(ptr); - } - - /* get as number */ - ss = STYLESTRUCT_GetNumber(h, ts->name); - if(!ss) - { - printf("Error: value not found for name: %s\n", ts->name); - } - else - { - if(ss->value != atof(ts->value)) - printf("Error: value does not match, old: %s new: %d\n", - ts->value, ss->value); - - - if(strcmp(ss->units, ts->units)) - printf("Error: value does not match, old: %s new: %s\n", - ts->units, ss->units); - - STYLESTRUCT_FreeSSNumber(h, ss); - } - - break; - - default: - XP_ASSERT(0); - break; - } - } - - - /* test for some names that dont exist */ - ptr = STYLESTRUCT_GetString(h, "DOESN'T EXIST"); - if(ptr) - { - printf("Error: returned value should not have been found"); - XP_FREE(ptr); - } - ss = STYLESTRUCT_GetNumber(h, "THIS NAME DOES NOT EXIST"); - if(ss) - { - printf("Error: returned value should not have been found"); - STYLESTRUCT_FreeSSNumber(h, ss); - } - -} - -int -main(int argc, char *argv[]) -{ - int i; - StyleStruct *h; - char buf[200]; - SS_Number *ss_num; - StyleStruct *new_ss; - - h = STYLESTRUCT_Factory_Create(); - - if(!h) - exit(1); - - /* add everything as strings */ - for(i=0; *test_table[i].name; i++) - { - test_struct *ts = &test_table[i]; - - switch(ts->type) - { - case CHAR_VALUE: - STYLESTRUCT_SetString(h, ts->name, ts->value); - break; - - case SS_NUM_VALUE: - strcpy(buf, ts->value); - strcat(buf, ts->units); - STYLESTRUCT_SetString(h, ts->name, buf); - break; - - default: - XP_ASSERT(0); - break; - } - } - - test_values(h); - - /* add strings and numbers */ - for(i=0; *test_table[i].name; i++) - { - test_struct *ts = &test_table[i]; - - switch(ts->type) - { - case CHAR_VALUE: - STYLESTRUCT_SetString(h, ts->name, ts->value); - break; - - case SS_NUM_VALUE: - ss_num = STYLESTRUCT_NewSSNumber(h, atol(ts->value), ts->units); - STYLESTRUCT_SetNumber(h, ts->name, ss_num, 0); - STYLESTRUCT_FreeSSNumber(h, ss_num); - break; - - default: - XP_ASSERT(0); - break; - } - } - - test_values(h); - - /* dup the class */ - - new_ss = STYLESTRUCT_Duplicate(h); - STYLESTRUCT_Delete(h); - - test_values(new_ss); - - STYLESTRUCT_Delete(new_ss); - - printf("all tests passed\n\n"); -} - -#endif /* TEST_SS */ diff --git a/mozilla/lib/libstyle/stystruc.h b/mozilla/lib/libstyle/stystruc.h deleted file mode 100644 index 024cc9efb64..00000000000 --- a/mozilla/lib/libstyle/stystruc.h +++ /dev/null @@ -1,73 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef SS_HEADER -#define SS_HEADER - -/* maxint */ -#define MAX_STYLESTRUCT_PRIORITY (((unsigned) (~0) << 1) >> 1) - -#define STYLESTRUCT_NewSSNumber(self, num, uts) (*self->vtable->styleNewSSNumber)(self, num, uts) -#define STYLESTRUCT_FreeSSNumber(self, num) (*self->vtable->styleFreeSSNumber)(self, num) -#define STYLESTRUCT_CopySSNumber(self, num) (*self->vtable->styleCopySSNumber)(self, num) -#define STYLESTRUCT_StringToSSNumber(self, strng) (*self->vtable->styleStringToSSNumber)(self, strng) -#define STYLESTRUCT_SetString(self, name, value, priority) \ - (*self->vtable->styleSetString)(self, name, value, priority) -#define STYLESTRUCT_SetNumber(self, name, num, priority) (*self->vtable->styleSetNumber)(self, name, num, priority) -#define STYLESTRUCT_GetString(self, name) (*self->vtable->styleGetString)(self, name) -#define STYLESTRUCT_GetNumber(self, name) (*self->vtable->styleGetNumber)(self, name) -#define STYLESTRUCT_Count(self) (*self->vtable->styleCount)(self) -#define STYLESTRUCT_Duplicate(self) (*self->vtable->styleDuplicate)(self) -#define STYLESTRUCT_Delete(self) (*self->vtable->styleDelete)(self) - - -typedef struct _SS_Number { - double value; - char *units; -} SS_Number; - -typedef struct _StyleStructInterface StyleStructInterface; - -typedef struct _StyleStruct { - StyleStructInterface* vtable; - int32 refcount; -} StyleStruct; - -struct _StyleStructInterface { - SS_Number* (*styleNewSSNumber)(StyleStruct *self, double value, char *units); - void (*styleFreeSSNumber)(StyleStruct * self, SS_Number *obj); - SS_Number* (*styleCopySSNumber)(StyleStruct *self, SS_Number *old_num); - SS_Number* (*styleStringToSSNumber)(StyleStruct *self, char *strng); - void (*styleSetString)(StyleStruct * self, char *name, char *value, int32 priority); - void (*styleSetNumber)(StyleStruct * self, char *name, SS_Number *value, int32 priority); - char* (*styleGetString)(StyleStruct * self, char *name); - SS_Number* (*styleGetNumber)(StyleStruct * self, char *name); - uint32 (*styleCount)(StyleStruct * self); - StyleStruct* (*styleDuplicate)(StyleStruct * self); - void (*styleDelete)(StyleStruct * self); -}; - - -/* initializer */ -extern StyleStruct * STYLESTRUCT_Factory_Create(void); - -#endif /* SS_HEADER */ diff --git a/mozilla/lib/mailto/MANIFEST b/mozilla/lib/mailto/MANIFEST deleted file mode 100644 index 34318fc4261..00000000000 --- a/mozilla/lib/mailto/MANIFEST +++ /dev/null @@ -1,15 +0,0 @@ -# -# This is a list of local files which get copied to the mozilla:dist directory -# - -mhtmlstm.h -msg.h -ptrarray.h -msgcpane.h -msgsendp.h -msgutils.h -msgpane.h -errcode.h -msgzap.h -msgprnot.h -mprdecod.h \ No newline at end of file diff --git a/mozilla/lib/mailto/Makefile b/mozilla/lib/mailto/Makefile deleted file mode 100644 index 15340a27395..00000000000 --- a/mozilla/lib/mailto/Makefile +++ /dev/null @@ -1,98 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../.. - -MODULE = mailto -LIBRARY_NAME = mailto - -CSRCS = \ - ad_strm.c \ - ap_decod.c \ - ap_encod.c \ - appledbl.c \ - bh_strm.c \ - m_binhex.c \ - mprmime.c \ - msgutils.c \ - $(NULL) - - -CPPSRCS = \ - addrutil.cpp \ - bytearr.cpp \ - dwordarr.cpp \ - memstrem.cpp \ - mhtmlstm.cpp \ - mprdecod.cpp \ - msgbg.cpp \ - msgcflds.cpp \ - msgcpane.cpp \ - msgglue.cpp \ - msgmast.cpp \ - msgmdn.cpp \ - msgpane.cpp \ - msgppane.cpp \ - msgprefs.cpp \ - msgsend.cpp \ - msgsendp.cpp \ - msgurlq.cpp \ - msgzap.cpp \ - ptrarray.cpp \ - $(NULL) -# We'd like to include msgdlqml.cpp eventually (deliver queued mail) - - -EXPORTS = \ - ad_codes.h \ - appledbl.h \ - bytearr.h \ - dwordarr.h \ - errcode.h \ - error.h \ - m_binhex.h \ - mhtmlstm.h \ - mprdecod.h \ - msg.h \ - msgcflds.h \ - msgcpane.h \ - msghdr.h \ - msgmast.h \ - msgmdn.h \ - msgpane.h \ - msgppane.h \ - msgprefs.h \ - msgprnot.h \ - msgsend.h \ - msgsendp.h \ - msgutils.h \ - msgzap.h \ - ptrarray.h \ - $(NULL) - -REQUIRES = nspr htmldlgs img util layer pref security js java net progress network - - -include $(DEPTH)/config/rules.mk - -# INCLUDES += -I$(DIST)/include -I$(PUBLIC)/security -I../libaddr -I$(PUBLIC)/msg diff --git a/mozilla/lib/mailto/Makefile.in b/mozilla/lib/mailto/Makefile.in deleted file mode 100644 index ecee4427bcd..00000000000 --- a/mozilla/lib/mailto/Makefile.in +++ /dev/null @@ -1,105 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - - -DEPTH = ../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = mailto -LIBRARY_NAME = mailto - -CSRCS = \ - ad_strm.c \ - ap_decod.c \ - ap_encod.c \ - appledbl.c \ - bh_strm.c \ - m_binhex.c \ - mprmime.c \ - msgutils.c \ - $(NULL) - - -CPPSRCS = \ - addrutil.cpp \ - bytearr.cpp \ - dwordarr.cpp \ - memstrem.cpp \ - mhtmlstm.cpp \ - mprdecod.cpp \ - msgbg.cpp \ - msgcflds.cpp \ - msgcpane.cpp \ - msgglue.cpp \ - msgmast.cpp \ - msgmdn.cpp \ - msgpane.cpp \ - msgppane.cpp \ - msgprefs.cpp \ - msgsend.cpp \ - msgsendp.cpp \ - msgurlq.cpp \ - msgzap.cpp \ - ptrarray.cpp \ - $(NULL) -# We'd like to include msgdlqml.cpp eventually (deliver queued mail) - - -EXPORTS = \ - ad_codes.h \ - appledbl.h \ - bytearr.h \ - dwordarr.h \ - errcode.h \ - error.h \ - m_binhex.h \ - mhtmlstm.h \ - mprdecod.h \ - msg.h \ - msgcflds.h \ - msgcpane.h \ - msghdr.h \ - msgmast.h \ - msgmdn.h \ - msgpane.h \ - msgppane.h \ - msgprefs.h \ - msgprnot.h \ - msgsend.h \ - msgsendp.h \ - msgutils.h \ - msgzap.h \ - ptrarray.h \ - $(NULL) - -EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) - -REQUIRES = htmldlgs img util layer pref security js java net progress network - - -include $(topsrcdir)/config/rules.mk - -# INCLUDES += -I$(DIST)/include -I$(PUBLIC)/security -I$(srcdir)/../libaddr -I$(PUBLIC)/msg diff --git a/mozilla/lib/mailto/ad_codes.h b/mozilla/lib/mailto/ad_codes.h deleted file mode 100644 index d3331c35abf..00000000000 --- a/mozilla/lib/mailto/ad_codes.h +++ /dev/null @@ -1,133 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* -** AD_Codes.h -** -** --------------- -** -** Head file for Apple Decode/Encode enssential codes. -** -** -*/ - -#ifndef ad_codes_h -#define ad_codes_h - -#include "xp_core.h" - -/* -** applefile definitions used -*/ -#ifdef XP_MAC -#if PRAGMA_ALIGN_SUPPORTED -#pragma options align=mac68k -#endif -#endif /* XP_MAC */ - -#define APPLESINGLE_MAGIC 0x00051600L -#define APPLEDOUBLE_MAGIC 0x00051607L -#define VERSION 0x00020000 - -#define NUM_ENTRIES 6 - -#define ENT_DFORK 1L -#define ENT_RFORK 2L -#define ENT_NAME 3L -#define ENT_COMMENT 4L -#define ENT_DATES 8L -#define ENT_FINFO 9L -#define CONVERT_TIME 1265437696L - -/* -** data type used in the encoder/decoder. -*/ -typedef struct ap_header -{ - int32 magic; - int32 version; - char fill[16]; - int16 entries; - -} ap_header; - -typedef struct ap_entry -{ - uint32 id; - uint32 offset; - uint32 length; - -} ap_entry; - -typedef struct ap_dates -{ - int32 create, modify, backup, access; - -} ap_dates; - -typedef struct myFInfo /* the mac FInfo structure for the cross platform. */ -{ - int32 fdType, fdCreator; - int16 fdFlags; - int32 fdLocation; /* it really should be a pointer, but just a place-holder */ - int16 fdFldr; - -} myFInfo; - -XP_BEGIN_PROTOS -/* -** string utils. -*/ -int write_stream(appledouble_encode_object *p_ap_encode_obj,char *s,int len); - -int fill_apple_mime_header(appledouble_encode_object *p_ap_encode_obj); -int ap_encode_file_infor(appledouble_encode_object *p_ap_encode_obj); -int ap_encode_header(appledouble_encode_object* p_ap_encode_obj, XP_Bool firstTime); -int ap_encode_data( appledouble_encode_object* p_ap_encode_obj, XP_Bool firstTime); - -/* -** the prototypes for the ap_decoder. -*/ -int fetch_a_line(appledouble_decode_object* p_ap_decode_obj, char *buff); -int ParseFileHeader(appledouble_decode_object* p_ap_decode_obj); -int ap_seek_part_start(appledouble_decode_object* p_ap_decode_obj); -void parse_param(char *p, char **param, char**define, char **np); -int ap_seek_to_boundary(appledouble_decode_object* p_ap_decode_obj, XP_Bool firstime); -int ap_parse_header(appledouble_decode_object* p_ap_decode_obj,XP_Bool firstime); -int ap_decode_file_infor(appledouble_decode_object* p_ap_decode_obj); -int ap_decode_process_header(appledouble_decode_object* p_ap_decode_obj, XP_Bool firstime); -int ap_decode_process_data( appledouble_decode_object* p_ap_decode_obj, XP_Bool firstime); - -#ifdef XP_MAC -OSErr my_FSSpecFromPathname(char* src_filename, FSSpec* fspec); -char* my_PathnameFromFSSpec(FSSpec* fspec); - -#endif - XP_END_PROTOS - -#ifdef XP_MAC -#if PRAGMA_ALIGN_SUPPORTED -#pragma options align=reset -#endif -#endif /* XP_MAC */ - -#endif /* ad_codes_h */ diff --git a/mozilla/lib/mailto/ad_strm.c b/mozilla/lib/mailto/ad_strm.c deleted file mode 100644 index 8da9387feb9..00000000000 --- a/mozilla/lib/mailto/ad_strm.c +++ /dev/null @@ -1,723 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/** -* Apple Double encode/decode stream -* ---------------------------------- -* -* 11sep95 mym created. -*/ - -#include "msg.h" -#include "appledbl.h" -#include "m_binhex.h" -#include "m_cvstrm.h" -#include "ad_codes.h" -/* for XP_GetString() */ -#include "xpgetstr.h" - -extern int MK_MSG_SAVE_ATTACH_AS; - -#ifdef XP_MAC -#pragma warn_unusedarg off - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; -extern int MK_MIME_ERROR_WRITING_FILE; - -/* --------------------------------------------------------------------------------- -** -** The codes for Apple-double encoding stream. --- it's only useful on Mac OS -** -** --------------------------------------------------------------------------------- -*/ - -#define WORKING_BUFF_SIZE 8192 - -typedef struct _AppledoubleEncodeObject -{ - appledouble_encode_object ap_encode_obj; - - char* buff; /* the working buff. */ - int32 s_buff; /* the working buff size. */ - - XP_File fp; /* file to hold the encoding */ - char *fname; /* and the file name. */ - -} AppleDoubleEncodeObject; - -/* - Let's go "l" characters forward of the encoding for this write. - Note: - "s" is just a dummy paramter. - */ -PRIVATE int -net_AppleDouble_Encode_Write ( - void *stream, const char* s, int32 l) -{ - int status = 0; - AppleDoubleEncodeObject * obj = (AppleDoubleEncodeObject*)stream; - int32 count, size; - - while (l > 0) - { - size = obj->s_buff * 11 / 16; - size = MIN(l, size); - status = ap_encode_next(&(obj->ap_encode_obj), - obj->buff, - size, - &count); - if (status == noErr || status == errDone) - { - /* - * we get the encode data, so call the next stream to write it to the disk. - */ - if (XP_FileWrite(obj->buff, count, obj->fp) != count) - return errFileWrite; - } - - if (status != noErr ) /* abort when error / done? */ - break; - - l -= size; - } - return status; -} - -/* -** is the stream ready for writing? - */ -PRIVATE unsigned int net_AppleDouble_Encode_Ready (void *stream) -{ - return(MAX_WRITE_READY); /* always ready for writing */ -} - - -PRIVATE void net_AppleDouble_Encode_Complete (void *stream) -{ - AppleDoubleEncodeObject * obj = (AppleDoubleEncodeObject*)stream; - - ap_encode_end(&(obj->ap_encode_obj), false); /* this is a normal ending */ - - if (obj->fp) - { - XP_FileClose(obj->fp); /* done with the target file */ - - FREEIF(obj->fname); /* and the file name too */ - } - - FREEIF(obj->buff); /* free the working buff. */ - XP_FREE(obj); -} - -PRIVATE void net_AppleDouble_Encode_Abort (void *stream, int status) -{ - AppleDoubleEncodeObject * obj = (AppleDoubleEncodeObject*)stream; - - ap_encode_end(&(obj->ap_encode_obj), true); /* it is an aborting exist... */ - - if (obj->fp) - { - XP_FileClose(obj->fp); - - XP_FileRemove (obj->fname, xpURL); /* remove the partial file. */ - - FREEIF(obj->fname); - } - FREEIF(obj->buff); /* free the working buff. */ - XP_FREE(obj); -} - -/* -** fe_MakeAppleDoubleEncodeStream -** ------------------------------ -** -** Will create a apple double encode stream: -** -** -> take the filename as the input source (it needs to be a mac file.) -** -> take a file name for the temp file we are generating. -*/ - -PUBLIC NET_StreamClass * -fe_MakeAppleDoubleEncodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - char* src_filename, - char* dst_filename, - char* separator) -{ - AppleDoubleEncodeObject* obj; - NET_StreamClass* stream; - char* working_buff = NULL; - int bSize = WORKING_BUFF_SIZE; - - TRACEMSG(("Setting up apple encode stream. Have URL: %s\n", URL_s->address)); - - stream = XP_NEW(NET_StreamClass); - if(stream == NULL) - return(NULL); - - obj = XP_NEW(AppleDoubleEncodeObject); - if (obj == NULL) - { - XP_FREE (stream); - return(NULL); - } - - while (!working_buff && (bSize >= 512)) - { - working_buff = (char *)XP_ALLOC(bSize); - if (!working_buff) - bSize /= 2; - } - if (working_buff == NULL) - { - XP_FREE (obj); - XP_FREE (stream); - return (NULL); - } - - stream->name = "Apple Double Encode"; - stream->complete = (MKStreamCompleteFunc) net_AppleDouble_Encode_Complete; - stream->abort = (MKStreamAbortFunc) net_AppleDouble_Encode_Abort; - stream->put_block = (MKStreamWriteFunc) net_AppleDouble_Encode_Write; - stream->is_write_ready = (MKStreamWriteReadyFunc) net_AppleDouble_Encode_Ready; - stream->data_object = obj; - stream->window_id = window_id; - - obj->fp = XP_FileOpen(dst_filename, xpFileToPost, XP_FILE_WRITE_BIN); - if (obj->fp == NULL) - { - XP_FREE (working_buff); - XP_FREE (obj); - XP_FREE (stream); - return (NULL); - } - - obj->fname = XP_STRDUP(dst_filename); - - obj->buff = working_buff; - obj->s_buff = bSize; - - /* - ** setup all the need information on the apple double encoder. - */ - ap_encode_init(&(obj->ap_encode_obj), - src_filename, /* pass the file name of the source. */ - separator); - - TRACEMSG(("Returning stream from NET_AppleDoubleEncoder\n")); - - return stream; -} -#endif - -/* -** --------------------------------------------------------------------------------- -** -** The codes for the Apple sigle/double decoding. -** -** --------------------------------------------------------------------------------- -*/ -typedef struct AppleDoubleDecodeObject -{ - appledouble_decode_object ap_decode_obj; - - char* in_buff; /* the temporary buff to accumulate */ - /* the input, make sure the call to */ - /* the dedcoder engine big enough buff */ - int32 bytes_in_buff; /* the count for the temporary buff. */ - - NET_StreamClass* binhex_stream; /* a binhex encode stream to convert */ - /* the decoded mac file to binhex. */ - -} AppleDoubleDecodeObject; - -PRIVATE int -net_AppleDouble_Decode_Write ( - void *stream, const char* s, int32 l) -{ - int status = NOERR; - AppleDoubleDecodeObject * obj = (AppleDoubleDecodeObject*) stream; - int32 size; - - /* - ** To force an effecient decoding, we should - ** make sure that the buff pass to the decode next is great than 1024 bytes. - */ - if (obj->bytes_in_buff + l > 1024) - { - size = 1024 - obj->bytes_in_buff; - XP_MEMCPY(obj->in_buff+obj->bytes_in_buff, - s, - size); - s += size; - l -= size; - - status = ap_decode_next(&(obj->ap_decode_obj), - obj->in_buff, - 1024); - obj->bytes_in_buff = 0; - } - - if (l > 1024) - { - /* we are sure that obj->bytes_in_buff == 0 at this point. */ - status = ap_decode_next(&(obj->ap_decode_obj), - (char *)s, - l); - } - else - { - /* and we are sure we will not get overflow with the buff. */ - XP_MEMCPY(obj->in_buff+obj->bytes_in_buff, - s, - l); - obj->bytes_in_buff += l; - } - return status; -} - -PRIVATE unsigned int -net_AppleDouble_Decode_Ready (NET_StreamClass *stream) -{ - return(MAX_WRITE_READY); /* always ready for writing */ -} - - -PRIVATE void -net_AppleDouble_Decode_Complete (void *stream) -{ - AppleDoubleDecodeObject *obj = (AppleDoubleDecodeObject *)stream; - - if (obj->bytes_in_buff) - { - - ap_decode_next(&(obj->ap_decode_obj), /* do the last calls. */ - (char *)obj->in_buff, - obj->bytes_in_buff); - obj->bytes_in_buff = 0; - } - - ap_decode_end(&(obj->ap_decode_obj), FALSE); /* it is a normal clean up cases.*/ - - if (obj->binhex_stream) - XP_FREE(obj->binhex_stream); - - if (obj->in_buff) - XP_FREE(obj->in_buff); - - XP_FREE(obj); -} - -PRIVATE void -net_AppleDouble_Decode_Abort ( - void *stream, int status) -{ - AppleDoubleDecodeObject *obj = (AppleDoubleDecodeObject *)stream; - - ap_decode_end(&(obj->ap_decode_obj), TRUE); /* it is an abort. */ - - if (obj->binhex_stream) - XP_FREE(obj->binhex_stream); - - if (obj->in_buff) - XP_FREE(obj->in_buff); - - XP_FREE(obj); -} - - -/* -** fe_MakeAppleDoubleDecodeStream_1 -** --------------------------------- -** -** Create the apple double decode stream. -** -** In the Mac OS, it will create a stream to decode to an apple file; -** -** In other OS, the stream will decode apple double object, -** then encode it in binhex format, and save to the file. -*/ -#ifndef XP_MAC -static void -simple_copy(MWContext* context, char* saveName, void* closure) -{ - /* just copy the filename to the closure, so the caller can get it. */ - XP_STRCPY(closure, saveName); -} -#endif - -PUBLIC NET_StreamClass * -fe_MakeAppleDoubleDecodeStream_1 (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id) -{ -#ifdef XP_MAC - return fe_MakeAppleDoubleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - false, - NULL); -#else - -#if 0 /* just a test in the mac OS */ - NET_StreamClass *p; - char* url; - StandardFileReply reply; - - StandardPutFile("\pSave binhex encoded file as:", "\pUntitled", &reply); - if (!reply.sfGood) - { - return NULL; - } - url = my_PathnameFromFSSpec(&(reply.sfFile)); - - p = fe_MakeAppleDoubleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - true, - url+7); - XP_FREE(url); - return (p); - -#else /* for the none mac-os to get a file name */ - - NET_StreamClass *p; - char* filename; - - filename = XP_ALLOC(1024); - if (filename == NULL) - return NULL; - - if (FE_PromptForFileName(window_id, - XP_GetString(MK_MSG_SAVE_ATTACH_AS), - 0, - FALSE, - FALSE, - simple_copy, - filename) == -1) - { - return NULL; - } - - p = fe_MakeAppleDoubleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - TRUE, - filename); - XP_FREE(filename); - return (p); - -#endif - -#endif -} - - -PUBLIC NET_StreamClass * -fe_MakeAppleDoubleDecodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - XP_Bool write_as_binhex, - char *dst_filename) -{ - AppleDoubleDecodeObject* obj; - NET_StreamClass* stream; - - TRACEMSG(("Setting up apple double decode stream. Have URL: %s\n", URL_s->address)); - - stream = XP_NEW(NET_StreamClass); - if(stream == NULL) - return(NULL); - - obj = XP_NEW(AppleDoubleDecodeObject); - if (obj == NULL) - { - XP_FREE(stream); - return(NULL); - } - - stream->name = "AppleDouble Decode"; - stream->complete = (MKStreamCompleteFunc) net_AppleDouble_Decode_Complete; - stream->abort = (MKStreamAbortFunc) net_AppleDouble_Decode_Abort; - stream->put_block = (MKStreamWriteFunc) net_AppleDouble_Decode_Write; - stream->is_write_ready = (MKStreamWriteReadyFunc) net_AppleDouble_Decode_Ready; - stream->data_object = obj; - stream->window_id = window_id; - - /* - ** setup all the need information on the apple double encoder. - */ - obj->in_buff = (char *)XP_ALLOC(1024); - if (obj->in_buff == NULL) - { - XP_FREE(obj); - XP_FREE(stream); - return (NULL); - } - - obj->bytes_in_buff = 0; - - if (write_as_binhex) - { - obj->binhex_stream = - fe_MakeBinHexEncodeStream(format_out, - data_obj, - URL_s, - window_id, - dst_filename); - if (obj->binhex_stream == NULL) - { - XP_FREE(obj); - XP_FREE(stream); - XP_FREE(obj->in_buff); - return NULL; - } - - ap_decode_init(&(obj->ap_decode_obj), - FALSE, - TRUE, - obj->binhex_stream); - } - else - { - obj->binhex_stream = NULL; - ap_decode_init(&(obj->ap_decode_obj), - FALSE, - FALSE, - window_id); - /* - * jt 8/8/97 -- I think this should be set to true. But' - * let's not touch it for now. - * - * obj->ap_decode_obj.is_binary = TRUE; - */ - } - - if (dst_filename) - { - XP_STRNCPY_SAFE(obj->ap_decode_obj.fname, dst_filename, - sizeof(obj->ap_decode_obj.fname)); - } - #ifdef XP_MAC - obj->ap_decode_obj.mSpec = (FSSpec*)( URL_s->fe_data ); - #endif - TRACEMSG(("Returning stream from NET_AppleDoubleDecode\n")); - - return stream; -} - -/* -** fe_MakeAppleSingleDecodeStream_1 -** -------------------------------- -** -** Create the apple single decode stream. -** -** In the Mac OS, it will create a stream to decode object to an apple file; -** -** In other OS, the stream will decode apple single object, -** then encode context in binhex format, and save to the file. -*/ - -PUBLIC NET_StreamClass * -fe_MakeAppleSingleDecodeStream_1 (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id) -{ -#ifdef XP_MAC - return fe_MakeAppleSingleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - FALSE, - NULL); -#else - -#if 0 /* just a test in the mac OS */ - NET_StreamClass *p; - char* url; - StandardFileReply reply; - - StandardPutFile("\pSave binhex encoded file as:", "\pUntitled", &reply); - if (!reply.sfGood) - { - return NULL; - } - url = my_PathnameFromFSSpec(&(reply.sfFile)); - - p = fe_MakeAppleSingleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - true, - url+7); - XP_FREE(url); - return (p); - -#else /* for the none mac-os to get a file name */ - - NET_StreamClass *p; - char* filename; - char* defaultPath = 0; - - defaultPath = URL_s->content_name; - -#ifdef XP_WIN16 - if (XP_FileNameContainsBadChars(defaultPath)) - defaultPath = 0; -#endif - - filename = XP_ALLOC(1024); - if (filename == NULL) - return NULL; - - if (FE_PromptForFileName(window_id, - XP_GetString(MK_MSG_SAVE_ATTACH_AS), - defaultPath, - FALSE, - FALSE, - simple_copy, - filename) == -1) - { - return NULL; - } - - p = fe_MakeAppleSingleDecodeStream(format_out, - data_obj, - URL_s, - window_id, - FALSE, - filename); - XP_FREE(filename); - return (p); - -#endif - -#endif -} - -/* -** Create the Apple Doube Decode stream. -** -*/ -PUBLIC NET_StreamClass * -fe_MakeAppleSingleDecodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - XP_Bool write_as_binhex, - char *dst_filename) -{ - AppleDoubleDecodeObject* obj; - NET_StreamClass* stream; - int encoding = kEncodeNone; /* default is that we don't know the encoding */ - - TRACEMSG(("Setting up apple single decode stream. Have URL: %s\n", URL_s->address)); - - stream = XP_NEW(NET_StreamClass); - if(stream == NULL) - return(NULL); - - obj = XP_NEW(AppleDoubleDecodeObject); - if (obj == NULL) - { - XP_FREE(stream); - return(NULL); - } - - stream->name = "AppleSingle Decode"; - stream->complete = (MKStreamCompleteFunc) net_AppleDouble_Decode_Complete; - stream->abort = (MKStreamAbortFunc) net_AppleDouble_Decode_Abort; - stream->put_block = (MKStreamWriteFunc) net_AppleDouble_Decode_Write; - stream->is_write_ready = (MKStreamWriteReadyFunc) net_AppleDouble_Decode_Ready; - stream->data_object = obj; - stream->window_id = window_id; - - /* - ** setup all the need information on the apple double encoder. - */ - obj->in_buff = (char *)XP_ALLOC(1024); - if (obj->in_buff == NULL) - { - XP_FREE(obj); - XP_FREE(stream); - return (NULL); - } - - obj->bytes_in_buff = 0; - - if (write_as_binhex) - { - obj->binhex_stream = - fe_MakeBinHexEncodeStream(format_out, - data_obj, - URL_s, - window_id, - dst_filename); - if (obj->binhex_stream == NULL) - { - XP_FREE(obj); - XP_FREE(stream); - XP_FREE(obj->in_buff); - return NULL; - } - - ap_decode_init(&(obj->ap_decode_obj), - TRUE, - TRUE, - obj->binhex_stream); - } - else - { - obj->binhex_stream = NULL; - ap_decode_init(&(obj->ap_decode_obj), - TRUE, - FALSE, - window_id); -#ifndef XP_MAC - obj->ap_decode_obj.is_binary = TRUE; -#endif - } - - if (dst_filename) - { - XP_STRNCPY_SAFE(obj->ap_decode_obj.fname, dst_filename, - sizeof(obj->ap_decode_obj.fname)); - } - /* If we are of a broken content-type, impose its encoding. */ - if (URL_s->content_type - && !XP_STRNCASECMP(URL_s->content_type, "x-uuencode-apple-single", 23)) - obj->ap_decode_obj.encoding = kEncodeUU; - else - obj->ap_decode_obj.encoding = kEncodeNone; - - TRACEMSG(("Returning stream from NET_AppleSingleDecode\n")); - - return stream; -} diff --git a/mozilla/lib/mailto/addrutil.cpp b/mozilla/lib/mailto/addrutil.cpp deleted file mode 100644 index 183cfa1facb..00000000000 --- a/mozilla/lib/mailto/addrutil.cpp +++ /dev/null @@ -1,1611 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* addrutil.cpp --- parsing RFC822 addresses. - */ - -#include "msg.h" -#include "msgprefs.h" - -#undef FREEIF -#define FREEIF(obj) do { if (obj) { XP_FREE (obj); obj = 0; }} while (0) - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; -} - -static int msg_quote_phrase_or_addr (char *address, int32 length, - XP_Bool addr_p); -static int msg_parse_rfc822_addresses (const char *line, - char **names, - char **addresses, - XP_Bool quote_names_p, - XP_Bool quote_addrs_p, - XP_Bool first_only_p); - - -/* Given a string which contains a list of RFC822 addresses, parses it into - their component names and mailboxes. - - The returned value is the number of addresses, or a negative error code; - the names and addresses are returned into the provided pointers as - consecutive null-terminated strings. It is up to the caller to free them. - Note that some of the strings may be zero-length. - - Either of the provided pointers may be NULL if the caller is not interested - in those components. - - quote_names_p and quote_addrs_p control whether the returned strings should - be quoted as RFC822 entities, or returned in a more human-presentable (but - not necessarily parsable) form. - - If first_only_p is true, then only the first element of the list is - returned; we don't bother parsing the rest. - */ -int -msg_parse_rfc822_addresses (const char *line, - char **names, - char **addresses, - XP_Bool quote_names_p, - XP_Bool quote_addrs_p, - XP_Bool first_only_p) -{ - uint32 addr_count = 0; - uint32 line_length; - const char *line_end; - const char *this_start; - char *name_buf = 0, *name_out, *name_start; - char *addr_buf = 0, *addr_out, *addr_start; - XP_ASSERT (line); - if (! line) - return -1; - if (names) - *names = 0; - if (addresses) - *addresses = 0; - line_length = XP_STRLEN (line); - if (line_length == 0) - return 0; - - name_buf = (char *) XP_ALLOC (line_length * 2 + 10); - if (! name_buf) - return MK_OUT_OF_MEMORY; - - addr_buf = (char *) XP_ALLOC (line_length * 2 + 10); - if (! addr_buf) - { - FREEIF (name_buf); - return MK_OUT_OF_MEMORY; - } - - line_end = line; - addr_out = addr_buf; - name_out = name_buf; - name_start = name_buf; - addr_start = addr_buf; - this_start = line; - - /* Skip over extra whitespace or commas before addresses. */ - while (*line_end && - (XP_IS_SPACE (*line_end) || *line_end == ',')) - line_end++; - - while (*line_end) - { - uint32 paren_depth = 0; - const char *oparen = 0; - const char *mailbox_start = 0; - const char *mailbox_end = 0; - - while (*line_end && - !(*line_end == ',' && - paren_depth <= 0 && /* comma is ok inside () */ - (!mailbox_start || mailbox_end))) /* comma is ok inside <> */ - { - if (*line_end == '\\') - { - line_end++; - if (!*line_end) /* otherwise, we walk off end of line, right? */ - break; - } - else if (*line_end == '"') - { - int leave_quotes = 0; - - line_end++; /* remove open " */ - - /* handle '"John.Van Doe"@space.com' case */ - if (paren_depth == 0 && !mailbox_start) - { - char *end_quote = strchr(line_end, '"'); - char *mailbox = end_quote ? strchr(end_quote, '<') : (char *)NULL, - *comma = end_quote ? strchr(end_quote, ',') : (char *)NULL; - if (!mailbox || (comma && comma < mailbox)) - { - - leave_quotes = 1; /* no mailbox for this address */ - *addr_out++ = '"'; - } - } - - while (*line_end) - { - if (*line_end == '\\') - { - if ( paren_depth == 0 - && (*(line_end+1) == '\\' || *(line_end+1) == '"')) - *addr_out++ = *line_end++; - else - line_end++; - } - else if (*line_end == '"') - break; - - if (paren_depth == 0) - *addr_out++ = *line_end; - - line_end++; - } - if (*line_end) line_end++; /* remove close " */ - if (leave_quotes) *addr_out++ = '"'; - continue; - } - - if (*line_end == '(') - { - if (paren_depth == 0) - oparen = line_end; - paren_depth++; - } - else if (*line_end == '<' && paren_depth == 0) - { - mailbox_start = line_end; - } - else if (*line_end == '>' && mailbox_start && paren_depth == 0) - { - mailbox_end = line_end; - } - else if (*line_end == ')' && paren_depth > 0) - { - paren_depth--; - if (paren_depth == 0) - { - const char *s = oparen + 1; - /* Copy the characters inside the parens onto the - "name" buffer. */ - - /* Push out some whitespace before the paren, if - there is non-whitespace there already. */ - if (name_out > name_start && - !XP_IS_SPACE (name_out [-1])) - *name_out++ = ' '; - - /* Skip leading whitespace. */ - while (XP_IS_SPACE (*s) && s < line_end) - s++; - - while (s < line_end) - { - if (*s == '\"') - { - /* Strip out " within () unless backslashed */ - s++; - continue; - } - - if (*s == '\\') /* remove one \ */ - s++; - - if (XP_IS_SPACE (*s) && - name_out > name_start && - XP_IS_SPACE (name_out[-1])) - /* collapse consecutive whitespace */; - else - *name_out++ = *s; - - s++; - } - oparen = 0; - } - } - else - { - /* If we're not inside parens or a <mailbox>, tack this - on to the end of the addr_buf. */ - if (paren_depth == 0 && - (!mailbox_start || mailbox_end)) - { - /* Eat whitespace at the beginning of the line, - and eat consecutive whitespace within the line. */ - if (XP_IS_SPACE (*line_end) && - (addr_out == addr_start || - XP_IS_SPACE (addr_out[-1]))) - /* skip it */; - else - *addr_out++ = *line_end; - } - } - - line_end++; - } - - /* Now we have extracted a single address from the comma-separated - list of addresses. The characters have been divided among the - various buffers: the parts inside parens have been placed in the - name_buf, and everything else has been placed in the addr_buf. - Quoted strings and backslashed characters have been `expanded.' - - If there was a <mailbox> spec in it, we have remembered where it was. - Copy that on to the addr_buf, replacing what was there, and copy the - characters not inside <> onto the name_buf, replacing what is there - now (which was just the parenthesized parts.) (And we need to do the - quote and backslash hacking again, since we're coming from the - original source.) - - Otherwise, we're already done - the addr_buf and name_buf contain - the right data already (de-quoted.) - */ - if (mailbox_end) - { - const char *s; - XP_ASSERT (*mailbox_start == '<'); - XP_ASSERT (*mailbox_end == '>'); - - /* First, copy the name. - */ - name_out = name_start; - s = this_start; - /* Skip leading whitespace. */ - while (XP_IS_SPACE (*s) && s < mailbox_start) - s++; - /* Copy up to (not including) the < */ - while (s < mailbox_start) - { - if (*s == '\"') - { - s++; - continue; - } - if (*s == '\\') - { - if (s + 1 < mailbox_start && (*(s+1) == '\\' || *(s+1) == '\"')) - *name_out++ = *s++; - else - s++; - } - if (XP_IS_SPACE (*s) && - name_out > name_start && - XP_IS_SPACE (name_out[-1])) - /* collapse consecutive whitespace */; - else - *name_out++ = *s; - s++; - } - /* Trim trailing whitespace. */ - while (name_out > name_start && XP_IS_SPACE (name_out[-1])) - name_out--; - /* Push out one space. */ - *name_out++ = ' '; - s = mailbox_end+1; - /* Skip whitespace after > */ - while (XP_IS_SPACE (*s) && s < line_end) - s++; - /* Copy from just after > to the end. */ - while (s < line_end) - { - if (*s == '\"') - { - s++; - continue; - } - if (*s == '\\') - { - if (s + 1 < line_end && (*(s+1) == '\\' || *(s+1) == '\"')) - *name_out++ = *s++; - else - s++; - } - if (XP_IS_SPACE (*s) && - name_out > name_start && - XP_IS_SPACE (name_out[-1])) - /* collapse consecutive whitespace */; - else - *name_out++ = *s; - s++; - } - /* Trim trailing whitespace. */ - while (name_out > name_start && XP_IS_SPACE (name_out[-1])) - name_out--; - /* null-terminate. */ - *name_out++ = 0; - - /* Now, copy the address. - */ - mailbox_start++; - addr_out = addr_start; - s = mailbox_start; - /* Skip leading whitespace. */ - while (XP_IS_SPACE (*s) && s < mailbox_end) - s++; - /* Copy up to (not including) the > */ - while (s < mailbox_end) - { - if (*s == '\"') - { - s++; - continue; - } - if (*s == '\\') - { - if (s + 1 < mailbox_end && (*(s+1) == '\\' || *(s+1) == '\"')) - *addr_out++ = *s++; - else - s++; - } - *addr_out++ = *s++; - } - /* Trim trailing whitespace. */ - while (addr_out > addr_start && XP_IS_SPACE (addr_out[-1])) - addr_out--; - /* null-terminate. */ - *addr_out++ = 0; - } - else /* No component of <mailbox> form. */ - { - /* Trim trailing whitespace. */ - while (addr_out > addr_start && XP_IS_SPACE (addr_out[-1])) - addr_out--; - /* null-terminate. */ - *addr_out++ = 0; - - /* Trim trailing whitespace. */ - while (name_out > name_start && XP_IS_SPACE (name_out[-1])) - name_out--; - /* null-terminate. */ - *name_out++ = 0; - - /* Attempt to deal with the simple error case of a missing comma. - We can only really deal with this in the non-<> case. - If there is no name, and if the address doesn't contain - double-quotes, but the address does contain whitespace, - then assume that the whitespace is an address delimiter. - */ - if (!name_start || !*name_start) - { - char *s; - char *space = 0; - for (s = addr_start; s < addr_out; s++) - if (*s == '\\') - s++; - else if (!space && XP_IS_SPACE (*s)) - space = s; - else if (*s == '"') - { - space = 0; - break; - } - if (space) - { - for (s = space; s < addr_out; s++) - if (*s == '\\') - s++; - else if (XP_IS_SPACE (*s)) - { - *s = 0; - *name_out++ = 0; - addr_count++; - } - } - } - } - - /* Now re-quote the names and addresses if necessary. - */ - if (quote_names_p && names) - { - int L = name_out - name_start - 1; - L = msg_quote_phrase_or_addr (name_start, L, FALSE); - name_out = name_start + L + 1; - } - - if (quote_addrs_p && addresses) - { - int L = addr_out - addr_start - 1; - L = msg_quote_phrase_or_addr (addr_start, L, TRUE); - addr_out = addr_start + L + 1; - } - - addr_count++; - - if (first_only_p) - /* If we only want the first address, we can stop now. */ - break; - - if (*line_end) - line_end++; - - /* Skip over extra whitespace or commas between addresses. */ - while (*line_end && - (XP_IS_SPACE (*line_end) || *line_end == ',')) - line_end++; - - this_start = line_end; - name_start = name_out; - addr_start = addr_out; - } - - /* Make one more pass through and convert all whitespace characters - to SPC. We could do that in the first pass, but this is simpler. */ - { - char *s; - for (s = name_buf; s < name_out; s++) - if (XP_IS_SPACE (*s) && *s != ' ') - *s = ' '; - for (s = addr_buf; s < addr_out; s++) - if (XP_IS_SPACE (*s) && *s != ' ') - *s = ' '; - } - - /* #### Should we bother realloc'ing them smaller? */ - - if (names) - *names = name_buf; - else - XP_FREE (name_buf); - - if (addresses) - *addresses = addr_buf; - else - XP_FREE (addr_buf); - - return addr_count; -} - - -extern "C" int -MSG_ParseRFC822Addresses (const char *line, - char **names, - char **addresses) -{ - return msg_parse_rfc822_addresses(line, names, addresses, TRUE, TRUE, FALSE); -} - - - -/* Given a single mailbox, this quotes the characters in it which need - to be quoted; it writes into `address' and returns a new length. - `address' is assumed to be long enough; worst case, its size will - be (N*2)+2. - */ -static int -msg_quote_phrase_or_addr (char *address, int32 length, XP_Bool addr_p) -{ - int quotable_count = 0, in_quote = 0; - int unquotable_count = 0; - int32 i, new_length; - char *in, *out; - XP_Bool atsign = FALSE; - XP_Bool user_quote = FALSE; - - /* If the entire address is quoted, fall out now. */ - if (address[0] == '"' && address[length - 1] == '"') - return length; - - for (i = 0, in = address; i < length; i++, in++) - { - if (*in == 0) - return length; /* #### horrible kludge... */ - - else if (addr_p && *in == '@' && !atsign && !in_quote) - { - /* Exactly one unquoted at-sign is allowed in an address. */ - atsign = TRUE; - - /* If address is of the form '"userid"@somewhere.com' don't quote - * the quotes around 'userid'. Also reset the quotable count, since - * any quotables we've seen are already inside quotes. - */ - if (address[0] == '"' && in > address + 2 && *(in - 1) == '"' && *(in - 2) != '\\') - unquotable_count -= 2, quotable_count = 0, user_quote = TRUE; - } - - else if (*in == '\\') - { - if (i + 1 < length && (*(in + 1) == '\\' || *(in + 1) == '"')) - /* If the next character is a backslash or quote, this backslash */ - /* is an escape backslash; ignore it and the next character. */ - i++, in++; - else - /* If the name contains backslashes or quotes, they must be escaped. */ - unquotable_count++; - } - - else if (*in == '"') - /* If the name contains quotes, they must be escaped. */ - unquotable_count++, in_quote = !in_quote; - - else if ( *in >= 127 || *in < 0 - || *in == '[' || *in == ']' || *in == '(' || *in == ')' - || *in == '<' || *in == '>' || *in == '@' || *in == ',' - || *in == ';' || *in == '$') - /* If the name contains control chars or RFC822 specials, it needs to - * be enclosed in quotes. Double-quotes and backslashes will be dealt - * with seperately. - * - * The ":" character is explicitly not in this list, though RFC822 says - * it should be quoted, because that has been seen to break VMS - * systems. (Rather, it has been seen that there are Unix SMTP servers - * which accept RCPT TO:<host::user> but not RCPT TO:<"host::user"> or - * RCPT TO:<host\:\:user>, which is the syntax that VMS/DECNET hosts - * use. - * - * For future reference: it is also claimed that some VMS SMTP servers - * allow \ quoting but not "" quoting; and that sendmail uses self- - * contradcitory quoting conventions that violate both RFCs 821 and - * 822, so any address quoting on a sendmail system will lose badly. - */ - quotable_count++; - - else if (addr_p && *in == ' ') - /* Naked spaces are allowed in names, but not addresses. */ - quotable_count++; - - else if ( !addr_p - && (*in == '.' || *in == '!' || *in == '$' || *in == '%')) - /* Naked dots are allowed in addresses, but not in names. - * The other characters (!$%) are technically allowed in names, but - * are surely going to cause someone trouble, so we quote them anyway. - */ - quotable_count++; - } - - if (quotable_count == 0 && unquotable_count == 0) - return length; - - /* Add 2 to the length for the quotes, plus one for each character - * which will need a backslash as well. - */ - new_length = length + unquotable_count + 2; - - /* Now walk through the string backwards (so that we can use the same - * block.) First put on the terminating quote, then push out each - * character, backslashing as necessary. Then a final quote. - * Uh, except, put the second quote just before the last @ if there - * is one. - */ - out = address + new_length - 1; - in = address + length - 1; - if (!atsign || (user_quote && quotable_count > 0)) - *out-- = '"'; - while (out > address) - { - XP_ASSERT(in >= address); - - if (*in == '@' && user_quote && quotable_count > 0) - *out-- = '"'; - - *out-- = *in; - - if (*in == '@' && atsign && !user_quote) - { - *out-- = '"'; - atsign = FALSE; - } - else if (*in == '\\' || *in == '"') - { - if ( user_quote && *in == '"' - && ( in == address - || ( in < address + length - 1 && in > address - && *(in + 1) == '@' && *(in - 1) != '\\'))) - /* Do nothing */; - else if (in > address && *(in - 1) == '\\') - *out-- = *--in; - else - { - XP_ASSERT(out > address); - *out-- = '\\'; - } - } - in--; - } - XP_ASSERT(in == address - 1 || (user_quote && in == address)); - XP_ASSERT(out == address); - *out = '"'; - address[new_length] = 0; - return new_length; -} - -/* Given a name or address that might have been quoted - it will take out the escape and double quotes - The caller is responsible for freeing the resulting - string. - */ -extern "C" int -MSG_UnquotePhraseOrAddr (char *line, char** lineout) -{ - int outlen = 0; - char *lineptr = NULL; - char *tmpLine = NULL; - char *outptr = NULL; - int result = 0; - - (*lineout) = NULL; - if (line) { - /* if the first character isnt a double quote - then there is nothing to do */ - if (*line != '"') - { - (*lineout) = XP_STRDUP (line); - if (!lineout) - return -1; - else - return 0; - } - - /* dont count the first character that is the double quote */ - lineptr = line; - lineptr++; - /* count up how many characters we are going to output */ - while (*lineptr) { - /* if the character is an '\' then - output the escaped character */ - if (*lineptr == '\\') - lineptr++; - outlen++; - lineptr++; - } - tmpLine = (char *) XP_ALLOC (outlen + 1); - if (!tmpLine) - return -1; - XP_MEMSET(tmpLine, 0, outlen); - /* dont output the first double quote */ - line++; - lineptr = line; - outptr = (tmpLine); - while ((*lineptr) != '\0') { - /* if the character is an '\' then - output the character that was escaped */ - /* if it was part of the quote then don't - output it */ - if (*lineptr == '\\' || *lineptr == '"') { - lineptr++; - } - *outptr = *lineptr; - if (*lineptr != '\0') { - outptr++; - lineptr++; - } - } - *outptr = '\0'; - if (tmpLine) - (*lineout) = XP_STRDUP (tmpLine); - else - result = -1; - XP_FREEIF (tmpLine); - } - return result; -} -/* Given a string which contains a list of RFC822 addresses, returns a - comma-seperated list of just the `mailbox' portions. - */ -extern "C" char * -MSG_ExtractRFC822AddressMailboxes (const char *line) -{ - char *addrs = 0; - char *result, *s, *out; - uint32 i, size = 0; - int status = MSG_ParseRFC822Addresses (line, 0, &addrs); - if (status <= 0) - return 0; - - s = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j = XP_STRLEN (s); - s += j + 1; - size += j + 2; - } - - result = (char*)XP_ALLOC (size + 1); - if (! result) - { - XP_FREE (addrs); - return 0; - } - out = result; - s = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j = XP_STRLEN (s); - XP_MEMCPY (out, s, j); - out += j; - if ((int) (i+1) < status) - { - *out++ = ','; - *out++ = ' '; - } - s += j + 1; - } - *out = 0; - - XP_FREE (addrs); - return result; -} - - -/* Given a string which contains a list of RFC822 addresses, returns a - comma-seperated list of just the `user name' portions. If any of - the addresses doesn't have a name, then the mailbox is used instead. - - The names are *unquoted* and therefore cannot be re-parsed in any way. - They are, however, nice and human-readable. - */ -extern "C" char * -MSG_ExtractRFC822AddressNames (const char *line) -{ - char *names = 0; - char *addrs = 0; - char *result, *s1, *s2, *out; - uint32 i, size = 0; - int status = msg_parse_rfc822_addresses(line, &names, &addrs, FALSE, FALSE, - FALSE); - if (status <= 0) - return 0; - - s1 = names; - s2 = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size += (j1 ? j1 : j2) + 2; - } - - result = (char*)XP_ALLOC (size + 1); - if (! result) - { - XP_FREE (names); - XP_FREE (addrs); - return 0; - } - out = result; - s1 = names; - s2 = addrs; - for (i = 0; (int) i < status; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - - if (j1) - { - XP_MEMCPY (out, s1, j1); - out += j1; - } - else - { - XP_MEMCPY (out, s2, j2); - out += j2; - } - - if ((int) (i+1) < status) - { - *out++ = ','; - *out++ = ' '; - } - s1 += j1 + 1; - s2 += j2 + 1; - } - *out = 0; - - XP_FREE (names); - XP_FREE (addrs); - return result; -} - -/* Like MSG_ExtractRFC822AddressNames(), but only returns the first name - in the list, if there is more than one. - */ -extern "C" char * -MSG_ExtractRFC822AddressName (const char *line) -{ - char *name = 0; - char *addr = 0; - int status = msg_parse_rfc822_addresses(line, &name, &addr, FALSE, FALSE, - TRUE); - if (status <= 0) - return 0; - /* This can happen if there is an address like "From: foo bar" which - we parse as two addresses (that's a syntax error.) In that case, - we'll return just the first one (the rest is after the NULL.) - XP_ASSERT(status == 1); - */ - if (name && *name) - { - FREEIF(addr); - return name; - } - else - { - FREEIF(name); - return addr; - } -} - - -static char * -msg_format_rfc822_addresses (const char *names, const char *addrs, - int count, XP_Bool wrap_lines_p) -{ - char *result, *out; - const char *s1, *s2; - uint32 i, size = 0; - uint32 column = 10; - - if (count <= 0) - return 0; - - s1 = names; - s2 = addrs; - for (i = 0; (int) i < count; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size += j1 + j2 + 10; - } - - result = (char *) XP_ALLOC (size + 1); - if (! result) return 0; - - out = result; - s1 = names; - s2 = addrs; - - for (i = 0; (int) i < count; i++) - { - char *o; - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - - if (wrap_lines_p && i > 0 && - (column + j1 + j2 + 3 + - (((int) (i+1) < count) ? 2 : 0) - > 76)) - { - if (out > result && out[-1] == ' ') - out--; - *out++ = CR; - *out++ = LF; - *out++ = '\t'; - column = 8; - } - - o = out; - - if (j1) - { - XP_MEMCPY (out, s1, j1); - out += j1; - *out++ = ' '; - *out++ = '<'; - } - XP_MEMCPY (out, s2, j2); - out += j2; - if (j1) - *out++ = '>'; - - if ((int) (i+1) < count) - { - *out++ = ','; - *out++ = ' '; - } - s1 += j1 + 1; - s2 += j2 + 1; - - column += (out - o); - } - *out = 0; - return result; -} - -/* Given a string which contains a list of RFC822 addresses, returns a new - string with the same data, but inserts missing commas, parses and reformats - it, and wraps long lines with newline-tab. - */ -extern "C" char * -MSG_ReformatRFC822Addresses (const char *line) -{ - char *names = 0; - char *addrs = 0; - char *result; - int status = MSG_ParseRFC822Addresses (line, &names, &addrs); - if (status <= 0) - return 0; - result = msg_format_rfc822_addresses (names, addrs, status, TRUE); - XP_FREE (names); - XP_FREE (addrs); - return result; -} - -/* Returns a copy of ADDRS which may have had some addresses removed. - Addresses are removed if they are already in either ADDRS or OTHER_ADDRS. - (If OTHER_ADDRS contain addresses which are not in ADDRS, they are not - added. That argument is for passing in addresses that were already - mentioned in other header fields.) - - Addresses are considered to be the same if they contain the same mailbox - part (case-insensitive.) Real names and other comments are not compared. - - removeAliasesToMe allows the address parser to use the preference which - contains regular expressions which also mean 'me' for the purpose of - stripping the user's email address(es) out of addrs - */ -extern "C" char * -MSG_RemoveDuplicateAddresses (const char *addrs, - const char *other_addrs, - XP_Bool removeAliasesToMe) -{ - /* This is probably way more complicated than it should be... */ - char *s1 = 0, *s2 = 0; - char *output = 0, *out = 0; - char *result = 0; - int count1 = 0, count2 = 0, count3 = 0; - int size1 = 0, size2 = 0, size3 = 0; - char *names1 = 0, *names2 = 0; - char *addrs1 = 0, *addrs2 = 0; - char **a_array1 = 0, **a_array2 = 0, **a_array3 = 0; - char **n_array1 = 0, **n_array3 = 0; - int i, j; - - if (!addrs) return 0; - - count1 = MSG_ParseRFC822Addresses (addrs, &names1, &addrs1); - if (count1 < 0) goto FAIL; - if (count1 == 0) - { - result = XP_STRDUP(""); - goto FAIL; - } - if (other_addrs) - count2 = MSG_ParseRFC822Addresses (other_addrs, &names2, &addrs2); - if (count2 < 0) goto FAIL; - - s1 = names1; - s2 = addrs1; - for (i = 0; i < count1; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size1 += j1 + j2 + 10; - } - - s1 = names2; - s2 = addrs2; - for (i = 0; i < count2; i++) - { - uint32 j1 = XP_STRLEN (s1); - uint32 j2 = XP_STRLEN (s2); - s1 += j1 + 1; - s2 += j2 + 1; - size2 += j1 + j2 + 10; - } - - a_array1 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!a_array1) goto FAIL; - n_array1 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!n_array1) goto FAIL; - - if (count2 > 0) - { - a_array2 = (char **) XP_ALLOC (count2 * sizeof(char *)); - if (!a_array2) goto FAIL; - /* don't need an n_array2 */ - } - - a_array3 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!a_array3) goto FAIL; - n_array3 = (char **) XP_ALLOC (count1 * sizeof(char *)); - if (!n_array3) goto FAIL; - - - /* fill in the input arrays */ - s1 = names1; - s2 = addrs1; - for (i = 0; i < count1; i++) - { - n_array1[i] = s1; - a_array1[i] = s2; - s1 += XP_STRLEN (s1) + 1; - s2 += XP_STRLEN (s2) + 1; - } - - s2 = addrs2; - for (i = 0; i < count2; i++) - { - a_array2[i] = s2; - s2 += XP_STRLEN (s2) + 1; - } - - /* Iterate over all addrs in the "1" arrays. - If those addrs are not present in "3" or "2", add them to "3". - */ - for (i = 0; i < count1; i++) /* iterate over all addrs */ - { - XP_Bool found = FALSE; - for (j = 0; j < count2; j++) - if (!strcasecomp (a_array1[i], a_array2[j])) - { - found = TRUE; - break; - } - - if (!found) - for (j = 0; j < count3; j++) - if (!strcasecomp (a_array1[i], a_array3[j])) - { - found = TRUE; - break; - } - - if (!found && removeAliasesToMe) - { - found = MSG_Prefs::IsEmailAddressAnAliasForMe (a_array1[i]); - if (found) - break; - } - - if (!found) - { - n_array3[count3] = n_array1[i]; - a_array3[count3] = a_array1[i]; - size3 += (XP_STRLEN(n_array3[count3]) + XP_STRLEN(a_array3[count3]) - + 10); - count3++; - XP_ASSERT (count3 <= count1); - if (count3 > count1) break; - } - } - - output = (char *) XP_ALLOC (size3 + 1); - if (!output) goto FAIL; - - *output = 0; - out = output; - s2 = output; - for (i = 0; i < count3; i++) - { - XP_STRCPY (out, a_array3[i]); - out += XP_STRLEN (out); - *out++ = 0; - } - s1 = out; - for (i = 0; i < count3; i++) - { - XP_STRCPY (out, n_array3[i]); - out += XP_STRLEN (out); - *out++ = 0; - } - result = msg_format_rfc822_addresses (s1, s2, count3, FALSE); - - FAIL: - FREEIF (a_array1); - FREEIF (a_array2); - FREEIF (a_array3); - FREEIF (n_array1); - FREEIF (n_array3); - FREEIF (names1); - FREEIF (names2); - FREEIF (addrs1); - FREEIF (addrs2); - FREEIF (output); - return result; -} - - -/* Given an e-mail address and a person's name, cons them together into a - single string of the form "name <address>", doing all the necessary quoting. - A new string is returned, which you must free when you're done with it. - */ -extern "C" char * -MSG_MakeFullAddress (const char* name, const char* addr) -{ - int nl = name ? XP_STRLEN (name) : 0; - int al = addr ? XP_STRLEN (addr) : 0; - char *buf, *s; - int L; - if (al == 0) - return 0; - buf = (char *) XP_ALLOC ((nl * 2) + (al * 2) + 20); - if (!buf) - return 0; - if (nl > 0) - { - XP_STRCPY (buf, name); - L = msg_quote_phrase_or_addr (buf, nl, FALSE); - s = buf + L; - *s++ = ' '; - *s++ = '<'; - } - else - { - s = buf; - } - - XP_STRCPY (s, addr); - L = msg_quote_phrase_or_addr (s, al, TRUE); - s += L; - if (nl > 0) - *s++ = '>'; - *s = 0; - L = (s - buf) + 1; - buf = (char *) XP_REALLOC (buf, L); - return buf; -} - -#if 0 -main (int argc, char **argv) -{ - fprintf (stderr, "%s\n", - MSG_RemoveDuplicateAddresses (argv[1], argv[2], FALSE)); -} -#endif - - -#if 0 -main (int argc, char **argv) -{ - fprintf (stderr, "%s\n", MSG_MakeFullAddress (argv[1], argv[2])); -} -#endif - - -#if 0 -/* Test cases for the above routines. - */ -static void -test1 (const char *line, XP_Bool np, XP_Bool ap, - uint32 expect_count, const char *expect_n, const char *expect_a) -{ - char *names = 0, *addrs = 0; - int result; - if (! np) expect_n = 0; - if (! ap) expect_a = 0; - result = MSG_ParseRFC822Addresses (line, - (np ? &names : 0), - (ap ? &addrs : 0)); - if (result <= 0) - printf (" #### error %d\n", result); - else - { - uint32 i; - char *n = names, *a = addrs; - if (expect_count != result) - printf (" #### wrong number of results (%d instead of %d)\n", - (int) result, (int) expect_count); - for (i = 0; i < result; i++) - { - if (((!!n) != (!!expect_n)) || - (n && XP_STRCMP (n, expect_n))) - { - printf (" ####### name got: %s\n" - " #### name wanted: %s\n", - (n ? n : "<NULL>"), - (expect_n ? expect_n : "<NULL>")); - } - if (((!!a) != (!!expect_a)) || - (a && XP_STRCMP (a, expect_a))) - { - printf (" ####### addr got: %s\n" - " #### addr wanted: %s\n", - (a ? a : "<NULL>"), - (expect_a ? expect_a : "<NULL>")); - } - if (n) n += XP_STRLEN (n) + 1; - if (a) a += XP_STRLEN (a) + 1; - if (expect_n) expect_n += XP_STRLEN (expect_n) + 1; - if (expect_a) expect_a += XP_STRLEN (expect_a) + 1; - } - } - FREEIF (names); - FREEIF (addrs); -} - -static void -test (const char *line, uint32 expect_n, - const char *expect_names, const char *expect_addrs, - const char *expect_all_names, const char *expect_all_addrs, - const char *canonical) -{ - char *s; - printf ("testing %s\n", line); - test1 (line, TRUE, TRUE, expect_n, expect_names, expect_addrs); - test1 (line, TRUE, FALSE, expect_n, expect_names, expect_addrs); - test1 (line, FALSE, TRUE, expect_n, expect_names, expect_addrs); - test1 (line, FALSE, FALSE, expect_n, expect_names, expect_addrs); - - s = MSG_ExtractRFC822AddressMailboxes (line); - if (!s || XP_STRCMP (s, expect_all_addrs)) - printf (" #### expected addrs: %s\n" - " ######### got addrs: %s\n", - expect_all_addrs, (s ? s : "<NULL>")); - FREEIF (s); - - s = MSG_ExtractRFC822AddressNames (line); - if (!s || XP_STRCMP (s, expect_all_names)) - printf (" #### expected names: %s\n" - " ######### got names: %s\n", - expect_all_names, (s ? s : "<NULL>")); - FREEIF (s); - - s = MSG_ReformatRFC822Addresses (line); - if (!s || XP_STRCMP (s, canonical)) - printf (" #### expected canonical: %s\n" - " ######### got canonical: %s\n", - canonical, (s ? s : "<NULL>")); - FREEIF (s); -} - - -void -main () -{ - test ("spanky", - 1, "", "spanky", - "spanky", "spanky", - "spanky"); - - test ("<spanky>", - 1, "", "spanky", - "spanky", "spanky", - "spanky"); - - test ("< spanky> ", - 1, "", "spanky", - "spanky", "spanky", - "spanky"); - - test ("Simple Case <simple1>", - 1, - "Simple Case", "simple1", - "Simple Case", "simple1", - "Simple Case <simple1>"); - - test (" Simple Case < simple1 > ", - 1, - "Simple Case", "simple1", - "Simple Case", "simple1", - "Simple Case <simple1>"); - - test ("simple2 (Simple Case)", - 1, - "Simple Case", "simple2", - "Simple Case", "simple2", - "Simple Case <simple2>"); - - test ("simple3 (Slightly) (Trickier)", - 1, - "Slightly Trickier", "simple3", - "Slightly Trickier", "simple3", - "Slightly Trickier <simple3>"); - - test ("(Slightly) simple3 (Trickier)", - 1, - "Slightly Trickier", "simple3", - "Slightly Trickier", "simple3", - "Slightly Trickier <simple3>"); - - test ("( Slightly ) simple3 ( Trickier ) ", - 1, - "Slightly Trickier", "simple3", - "Slightly Trickier", "simple3", - "Slightly Trickier <simple3>"); - - test ("(Even) more <trickier> (Trickier\\, I say)", - 1, - "\"(Even) more (Trickier, I say)\"", "trickier", - "(Even) more (Trickier, I say)", "trickier", - "\"(Even) more (Trickier, I say)\" <trickier>"); - - test ("\"this, is\" <\"some loser\"@address> (foo)", - 1, - "\"this, is (foo)\"", "\"some loser\"@address", - "this, is (foo)", "\"some loser\"@address", - "\"this, is (foo)\" <\"some loser\"@address>"); - - test ("foo, bar", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("<foo>, <bar>", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("< foo > , < bar > ", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("< foo > , , , ,,,,, , < bar > ,", - 2, - "" "\000" "", - "foo" "\000" "bar", - "foo, bar", "foo, bar", - "foo, bar"); - - test ("\"this, is\" <\"some loser\"@address> (foo), <bar>", - 2, - "\"this, is (foo)\"" "\000" "", - "\"some loser\"@address" "\000" "bar", - "this, is (foo), bar", - "\"some loser\"@address, bar", - "\"this, is (foo)\" <\"some loser\"@address>, bar"); - - test ("\"this, is\" <some\\ loser@address> (foo), bar", - 2, - "\"this, is (foo)\"" "\000" "", - "\"some loser\"@address" "\000" "bar", - "this, is (foo), bar", - "\"some loser\"@address, bar", - "\"this, is (foo)\" <\"some loser\"@address>, bar"); - - test ("(I'm a (total) loser) \"space address\"", - 1, - "\"I'm a (total) loser\"", "\"space address\"", - "I'm a (total) loser", "\"space address\"", - "\"I'm a (total) loser\" <\"space address\">"); - - test ("(I'm a (total) loser) \"space address\"@host", - 1, - "\"I'm a (total) loser\"", "\"space address\"@host", - "I'm a (total) loser", "\"space address\"@host", - "\"I'm a (total) loser\" <\"space address\"@host>"); - - test ("It\\'s \"me\" <address>, I'm a (total) loser <\"space address\">", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space address\"", - "It's me, I'm a (total) loser", - "address, \"space address\"", - "It's me <address>, \"I'm a (total) loser\" <\"space address\">"); - - test("It\\'s \"me\" <address>, I'm a (total) loser <\"space address\"@host>", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space address\"@host", - "It's me, I'm a (total) loser", - "address, \"space address\"@host", - "It's me <address>, \"I'm a (total) loser\" <\"space address\"@host>"); - - test ("(It\\'s \"me\") address, (I'm a (total) loser) \"space address\"", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space address\"", - "It's me, I'm a (total) loser", - "address, \"space address\"", - "It's me <address>, \"I'm a (total) loser\" <\"space address\">"); - - test ("(It\\'s \"me\") address, (I'm a (total) loser) \"space \\\"address\"", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space \\\"address\"", - "It's me, I'm a (total) loser", - "address, \"space \\\"address\"", - "It's me <address>, \"I'm a (total) loser\" <\"space \\\"address\">"); - - test ("(It\\'s \"me\") address, (I'm a (total) loser) \"space @address\"@host", - 2, - "It's me" "\000" "\"I'm a (total) loser\"", - "address" "\000" "\"space @address\"@host", - "It's me, I'm a (total) loser", - "address, \"space @address\"@host", - "It's me <address>, \"I'm a (total) loser\" <\"space @address\"@host>"); - - test ("Probably Bogus <some@loser@somewhere>", - 1, - "Probably Bogus", - "\"some@loser\"@somewhere", - "Probably Bogus", - "\"some@loser\"@somewhere", - "Probably Bogus <\"some@loser\"@somewhere>"); - - test ("Probably Bogus <\"some$loser,666\"@somewhere>", - 1, - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus <\"some$loser,666\"@somewhere>"); - - test ("Probably Bogus <\"some$loser,666\"@somewhere>", - 1, - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus", - "\"some$loser,666\"@somewhere", - "Probably Bogus <\"some$loser,666\"@somewhere>"); - - test ("\"Probably Bogus, Jr.\" <\"some$loser,666\"@somewhere>", - 1, - "\"Probably Bogus, Jr.\"", - "\"some$loser,666\"@somewhere", - "Probably Bogus, Jr.", - "\"some$loser,666\"@somewhere", - "\"Probably Bogus, Jr.\" <\"some$loser,666\"@somewhere>"); - - test ("Probably Bogus\\, Jr. <\"some$loser,666\"@somewhere>", - 1, - "\"Probably Bogus, Jr.\"", - "\"some$loser,666\"@somewhere", - "Probably Bogus, Jr.", - "\"some$loser,666\"@somewhere", - "\"Probably Bogus, Jr.\" <\"some$loser,666\"@somewhere>"); - - test ("This isn't legal <some$loser,666@somewhere>", - 1, - "This isn't legal", "\"some$loser,666\"@somewhere", - "This isn't legal", "\"some$loser,666\"@somewhere", - "This isn't legal <\"some$loser,666\"@somewhere>"); - - test ("This isn't legal!! <some$loser,666@somewhere>", - 1, - "\"This isn't legal!!\"", "\"some$loser,666\"@somewhere", - "This isn't legal!!", "\"some$loser,666\"@somewhere", - "\"This isn't legal!!\" <\"some$loser,666\"@somewhere>"); - - test ("addr1, addr2, \n\taddr3", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test ("addr1 addr2 addr3", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test (" addr1 addr2 addr3 ,,,,,, ", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test ("addr1, addr2 \n\t addr3", - 3, - "" "\000" "" "\000" "", - "addr1" "\000" "addr2" "\000" "addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3", - "addr1, addr2, addr3"); - - test ("addr1, addr2, addr3 addr4, <addr5>, (and) addr6 (yeah)", - 6, - "" "\000" "" "\000" "" "\000" "" "\000" "" - "\000" "and yeah", - "addr1" "\000" "addr2" "\000" "addr3" "\000" "addr4" "\000" "addr5" - "\000" "addr6", - "addr1, addr2, addr3, addr4, addr5, and yeah", - "addr1, addr2, addr3, addr4, addr5, addr6", - "addr1, addr2, addr3, addr4, addr5, and yeah <addr6>"); - - test ("addr1 (and some (nested) parens), addr2 <and unbalanced mbox", - 2, - "\"and some (nested) parens\"" "\000" "", - "addr1" "\000" "addr2", - "and some (nested) parens, addr2", - "addr1, addr2", - "\"and some (nested) parens\" <addr1>, addr2"); - - test ("addr1))) ((()))()()()()()()())), addr2 addr3, addr4 (foo, bar)", - 4, - "\"(())\"" "\000" "" "\000" "" "\000" "\"foo, bar\"", - "\"addr1))) ))\"" "\000" "addr2" "\000" "addr3" "\000" "addr4", - "(()), addr2, addr3, foo, bar", - "\"addr1))) ))\", addr2, addr3, addr4", - "\"(())\" <\"addr1))) ))\">, addr2, addr3, \"foo, bar\" <addr4>"); - - test ("avec le quoted quotes <\"a \\\" quote\">", - 1, - "avec le quoted quotes", "\"a \\\" quote\"", - "avec le quoted quotes", "\"a \\\" quote\"", - "avec le quoted quotes <\"a \\\" quote\">"); - - test ("avec le quoted quotes <\"a \\\" quote\"@host>", - 1, - "avec le quoted quotes", "\"a \\\" quote\"@host", - "avec le quoted quotes", "\"a \\\" quote\"@host", - "avec le quoted quotes <\"a \\\" quote\"@host>"); - - /* bang paths work, right? */ - test ("nelsonb <abit.com!nelsonb@netscape.com>", - 1, - "nelsonb", "abit.com!nelsonb@netscape.com", - "nelsonb", "abit.com!nelsonb@netscape.com", - "nelsonb <abit.com!nelsonb@netscape.com>"); - -# if 0 /* these tests don't pass, but should. */ - - /* a perverse example from RFC822: */ - test ("Muhammed.(I am the greatest) Ali @(the)Vegas.WBA", - 1, - "I am the greatest", "Muhammed.Ali@Vegas.WBA", - "I am the greatest", "Muhammed.Ali@Vegas.WBA", - "I am the greatest <Muhammed.Ali@Vegas.WBA>"); - - /* Oops, this should work but doesn't. */ - test ("nelsonb <@abit.com.tw:nelsonb@netscape.com>", - 1, - "nelsonb", "@abit.com.tw:nelsonb@netscape.com", - "nelsonb", "@abit.com.tw:nelsonb@netscape.com", - "nelsonb <@abit.com.tw:nelsonb@netscape.com>"); - - test ("(Sat43Jan@cyberpromo.com) <Ronald.F.Guilmette#$&'*+-/=?^_`|~@monkeys.com> ((#$&'*+-/=?^_`|~)) ((\\)))", - 1, - "(Sat43Jan@cyberpromo.com)", "\"Ronald.F.Guilmette#$&'*+-/=?^_`|~\"@monkeys.com", - "(Sat43Jan@cyberpromo.com)", "\"Ronald.F.Guilmette#$&'*+-/=?^_`|~\"@monkeys.com", - "(Sat43Jan@cyberpromo.com) <\"Ronald.F.Guilmette#$&'*+-/=?^_`|~\"@monkeys.com>"); - - /* Intentionally fail this one */ - test("my . name @ my . host . com", - 1, - "", "my.name@my.host.com", - "", "my.name@my.host.com", - "<my.name@my.host.com>"); - - /* but this one should work */ - test("loser < my . name @ my . host . com > ", - 1, - "loser", "my.name@my.host.com", - "loser", "my.name@my.host.com", - "loser <my.name@my.host.com>"); - - test("my(@).(@)name(<)@(>)my(:).(;)host(((\\)))).(@)com", - 1, - "@", "my.name@my.host.com", - "@", "my.name@my.host.com", - "\"@\" <my.name@my.host.com>"); - -# endif /* 0 */ - - exit (0); -} -#endif /* 0 */ diff --git a/mozilla/lib/mailto/ap_decod.c b/mozilla/lib/mailto/ap_decod.c deleted file mode 100644 index 7ff0a3f46d5..00000000000 --- a/mozilla/lib/mailto/ap_decod.c +++ /dev/null @@ -1,1780 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - * - * apple_double_decode.c - * - * --------------------- - * - * Codes for decoding Apple Single/Double object parts. - * - * 05aug95 mym Created. - * 25sep95 mym Add support to write to binhex encoding on non-mac system. - */ - -#include "msg.h" -#include "appledbl.h" -#include "ad_codes.h" -#include "m_binhex.h" -#ifdef XP_MAC -#include <StandardFile.h> -#endif - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; -extern int MK_MIME_ERROR_WRITING_FILE; - -/* -** Static functions. -*/ -PRIVATE int from_decoder(appledouble_decode_object* p_ap_decode_obj, - char *buff, - int buff_size, - uint32 *in_count); -PRIVATE int from_64(appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size); -PRIVATE int from_qp(appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size); -PRIVATE int from_uu(appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size); -PRIVATE int from_none(appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size); - -PRIVATE int decoder_seek(appledouble_decode_object* p_ap_decode_obj, - int seek_pos, - int start_pos); - -/* -** fetch_a_line -** ------------- -** -** get a line from the in stream.. -*/ -int fetch_a_line( - appledouble_decode_object* p_ap_decode_obj, - char *buff) -{ - int i, left; - char *p, c = 0; - - if (p_ap_decode_obj->s_leftover == 0 && - p_ap_decode_obj->s_inbuff <= p_ap_decode_obj->pos_inbuff) - { - *buff = '\0'; - return errEOB; - } - - if (p_ap_decode_obj->s_leftover) - { - for (p = p_ap_decode_obj->b_leftover, i = p_ap_decode_obj->s_leftover; i>0; i--) - *buff++ = *p++; - - p_ap_decode_obj->s_leftover = 0; - } - - p = p_ap_decode_obj->inbuff + p_ap_decode_obj->pos_inbuff; - left = p_ap_decode_obj->s_inbuff - p_ap_decode_obj->pos_inbuff; - - for (i = 0; i < left; ) - { - c = *p++; i++; - - if (c == CR && *p == LF) - { - p++; i++; /* make sure skip both LF & CR */ - } - - if (c == LF || c == CR) - break; - - *buff++ = c; - } - p_ap_decode_obj->pos_inbuff += i; - - if (i == left && c != LF && c != CR) - { - /* - ** we meet the buff end before we can terminate the string, - ** save the string to the left_over buff. - */ - p_ap_decode_obj->s_leftover = i; - - for (p = p_ap_decode_obj->b_leftover; i>0; i--) - *p++ = *(buff-i); - - return errEOB; - } - *buff = '\0'; - return NOERR; -} - -void parse_param( - char *p, - char **param, /* the param */ - char **define, /* the defination. */ - char **np) /* next position. */ -{ - while (*p == ' ' || *p == '\"' || *p == ';') p++; - *param = p; - - while (*p != ' ' && *p != '=' ) p++; - if (*p == ' ') - *define = p+1; - else - *define = p+2; - - while (*p && *p != ';') p++; - - if (*p == ';') - *np = p + 1; - else - *np = p; -} - -int ap_seek_part_start( - appledouble_decode_object* p_ap_decode_obj) -{ - int status; - char newline[256]; - - while (1) - { - status = fetch_a_line(p_ap_decode_obj, newline); - if(status != NOERR) - break; - - if (newline[0] == '\0' && p_ap_decode_obj->boundary0 != NULL) - return errDone; - - if (!XP_STRNCASECMP(newline, "--", 2)) - { - /* we meet the start seperator, copy it and it will be our boundary */ - p_ap_decode_obj->boundary0 = XP_STRDUP(newline+2); - return errDone; - } - } - return status; -} - -int ParseFileHeader( - appledouble_decode_object *p_ap_decode_obj) -{ - int status; - int i; - char newline[256], *p; - char *param, *define; - - while (1) - { - status = fetch_a_line(p_ap_decode_obj, newline); - if (newline[0] == '\0') - break; /* we get the end of a defination section. */ - - p = newline; - while (1) - { - parse_param(p, &param, &define, &p); - /* - ** we only care about these params. - */ - if (!XP_STRNCASECMP(param, "Content-Type:", 13)) - { - if (!XP_STRNCASECMP(define, MULTIPART_APPLEDOUBLE, - XP_STRLEN(MULTIPART_APPLEDOUBLE)) || - !XP_STRNCASECMP(define, MULTIPART_HEADER_SET, - XP_STRLEN(MULTIPART_HEADER_SET))) - p_ap_decode_obj->messagetype = kAppleDouble; - else - p_ap_decode_obj->messagetype = kGeneralMine; - } - else if (!XP_STRNCASECMP(param, "boundary=", 9)) - { - for (i = 0; *define && *define != '\"'; ) - p_ap_decode_obj->boundary0[i++] = *define++; - - p_ap_decode_obj->boundary0[i] = '\0'; - } - else if (!XP_STRNCASECMP(param, "Content-Disposition:", 20)) - { - if (!XP_STRNCASECMP(define, "inline", 5)) - p_ap_decode_obj->deposition = kInline; - else - p_ap_decode_obj->deposition = kDontCare; - } - else if (!XP_STRNCASECMP(param, "filename=", 9)) - { - for (i = 0, p=define; *p && *p != '\"'; ) - p_ap_decode_obj->fname[i++] = *p++; - - p_ap_decode_obj->fname[i] = '\0'; - } - - if (*p == '\0') - break; - } - } - - return NOERR; -} - -int ap_seek_to_boundary( - appledouble_decode_object *p_ap_decode_obj, - XP_Bool firstime) -{ - int status = NOERR; - char buff[256]; - - while (status == NOERR) - { - status = fetch_a_line(p_ap_decode_obj, buff); - if (status != NOERR) - break; - - if ((!XP_STRNCASECMP(buff, "--", 2) && - !XP_STRNCASECMP( buff+2, - p_ap_decode_obj->boundary0, - XP_STRLEN(p_ap_decode_obj->boundary0))) - ||!XP_STRNCASECMP( buff, - p_ap_decode_obj->boundary0, - XP_STRLEN(p_ap_decode_obj->boundary0))) - { - TRACEMSG(("Found boundary: %s", p_ap_decode_obj->boundary0)); - status = errDone; - break; - } - } - - if (firstime && status == errEOB) - status = NOERR; /* so we can do it again. */ - - return status; -} - -int ap_parse_header( - appledouble_decode_object *p_ap_decode_obj, - XP_Bool firstime) -{ - int status, i; - char newline[256], *p; - char *param, *define; - - if (firstime) - { - /* do the clean ups. */ - p_ap_decode_obj->encoding = kEncodeNone; - p_ap_decode_obj->which_part = kFinishing; - } - - while (1) - { - status = fetch_a_line(p_ap_decode_obj, newline); - if (status != NOERR) - return status; /* a possible end of buff happened. */ - - if (newline[0] == '\0') - break; /* we get the end of a defination section. */ - - p = newline; - while (1) - { - parse_param(p, &param, &define, &p); - /* - ** we only care about these params. - */ - if (!XP_STRNCASECMP(param, "Content-Type:", 13)) - { - if (!XP_STRNCASECMP(define, "application/applefile", 21)) - p_ap_decode_obj->which_part = kHeaderPortion; - else - { - p_ap_decode_obj->which_part = kDataPortion; - if (!XP_STRNCASECMP(define, "text/plain", 10)) - p_ap_decode_obj->is_binary = FALSE; - else - p_ap_decode_obj->is_binary = TRUE; - } - - /* Broken QuickMail messages */ - if (!XP_STRNCASECMP(define, "x-uuencode-apple-single", 23)) - p_ap_decode_obj->encoding = kEncodeUU; - } - else if (!XP_STRNCASECMP(param, "Content-Transfer-Encoding:",26)) - { - if (!XP_STRNCASECMP(define, "base64", 6)) - p_ap_decode_obj->encoding = kEncodeBase64; - else if (!XP_STRNCASECMP(define, "quoted-printable", 16)) - p_ap_decode_obj->encoding = kEncodeQP; - else - p_ap_decode_obj->encoding = kEncodeNone; - } - else if (!XP_STRNCASECMP(param, "Content-Disposition:", 20)) - { - if (!XP_STRNCASECMP(define, "inline", 5)) - p_ap_decode_obj->deposition = kInline; - else - p_ap_decode_obj->deposition = kDontCare; - } - else if (!XP_STRNCASECMP(param, "filename=", 9)) - { - if (p_ap_decode_obj->fname[0] == '\0') - { - for (i = 0; *define && *define != '\"'; ) - p_ap_decode_obj->fname[i++] = *define++; - - p_ap_decode_obj->fname[i] = '\0'; - } - } - - if (*p == '\0') - break; - } - } - return errDone; -} - - -/* -** decode the head portion. -*/ - - -int ap_decode_file_infor(appledouble_decode_object *p_ap_decode_obj) -{ - ap_header head; - ap_entry entries[NUM_ENTRIES + 1]; - int i, j; - int st_pt; - uint32 in_count; - int status; - char name[256]; - XP_Bool positionedAtRFork = FALSE; - - st_pt = p_ap_decode_obj->pos_inbuff; - - /* - ** Read & verify header - */ - status = from_decoder( - p_ap_decode_obj, - (char *) &head, - 26, /* sizeof (head), */ - &in_count); - if (status != NOERR) - return status; - - if (p_ap_decode_obj->is_apple_single) - { - if (ntohl(head.magic) != APPLESINGLE_MAGIC) - return errVersion; - } - else - { - if(ntohl(head.magic) != APPLEDOUBLE_MAGIC) - return errVersion; - } - - if (ntohl(head.version) != VERSION) - { - return errVersion; - } - - /* read entries */ - head.entries = ntohs(head.entries); - for (i = j = 0; i < head.entries; ++i) - { - status = from_decoder( - p_ap_decode_obj, - (char *) (entries + j), - sizeof (ap_entry), - &in_count); - if (status != NOERR) - return errDecoding; - - /* - ** correct the byte order now. - */ - entries[j].id = ntohl(entries[j].id); - entries[j].offset = ntohl(entries[j].offset); - entries[j].length = ntohl(entries[j].length); - /* - ** only care about these entries... - */ - if (j < NUM_ENTRIES) - switch (entries[j].id) - { - case ENT_NAME: - case ENT_FINFO: - case ENT_DATES: - case ENT_COMMENT: - case ENT_RFORK: - case ENT_DFORK: - ++j; - break; - } - } - - in_count = XP_STRLEN(p_ap_decode_obj->fname); - - /* if the user has not provided the output file name, read it - * from the ENT_NAME entry - */ - - if (in_count == 0) - { - /* read name */ - for (i = 0; i < j && entries[i].id != ENT_NAME; ++i) - ; - if (i == j) - return errDecoding; - - status = decoder_seek( - p_ap_decode_obj, - entries[i].offset, - st_pt); - if (status != NOERR) - return status; - - if (entries[i].length > 63) - entries[i].length = 63; - - status = from_decoder( - p_ap_decode_obj, - p_ap_decode_obj->fname, - entries[i].length, - &in_count); - if (status != NOERR) - return status; - - p_ap_decode_obj->fname[in_count] = '\0'; - } - - /* P_String version of the file name. */ - XP_STRCPY((char *)name+1, p_ap_decode_obj->fname); - name[0] = (char) in_count; - - if (p_ap_decode_obj->write_as_binhex) - { - /* - ** fill out the simple the binhex head. - */ - binhex_header head; - myFInfo myFInfo; - - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - name, - name[0] + 2); - if (status != NOERR) - return status; - - /* get finder info */ - for (i = 0; i < j && entries[i].id != ENT_FINFO; ++i) - ; - if (i < j) - { - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - if (status != NOERR) - return status; - - status = from_decoder(p_ap_decode_obj, - (char *) &myFInfo, - sizeof (myFInfo), - &in_count); - if (status != NOERR) - return status; - } - - head.type = myFInfo.fdType; - head.creator = myFInfo.fdCreator; - head.flags = myFInfo.fdFlags; - - for (i = 0; i < j && entries[i].id != ENT_DFORK; ++i) - ; - if (i < j && entries[i].length != 0) - { - head.dlen = entries[i].length; /* set the data fork length */ - } - else - { - head.dlen = 0; - } - - for (i = 0; i < j && entries[i].id != ENT_RFORK; ++i) - ; - if (i < j && entries[i].length != 0) - { - head.rlen = entries[i].length; /* set the resource fork length */ - } - else - { - head.rlen = 0; - } - - /* - ** and the dlen, rlen is in the host byte order, correct it if needed ... - */ - head.dlen = htonl(head.dlen); - head.rlen = htonl(head.rlen); - /* - ** then encode them in binhex. - */ - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - (char*)&head, - sizeof(binhex_header)); - if (status != NOERR) - return status; - - /* - ** after we have done with the header, end the binhex header part. - */ - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - NULL, - 0); - } - else - { - -#ifdef XP_MAC - - ap_dates dates; - HFileInfo *fpb; - CInfoPBRec cipbr; - IOParam vinfo; - GetVolParmsInfoBuffer vp; - DTPBRec dtp; - char comment[256]; - - unsigned char filename[256]; /* this is a pascal string - should be unsigned char. */ - StandardFileReply reply; - - /* convert char* p_ap_decode_obj->fname to a pascal string */ - XP_STRCPY((char*)filename + 1, p_ap_decode_obj->fname); - filename[0] = XP_STRLEN(p_ap_decode_obj->fname); - - if( !p_ap_decode_obj->mSpec ) - { - StandardPutFile("\pSave decoded file as:", - (const unsigned char*)filename, - &reply); - - if (!reply.sfGood) - { - return errUsrCancel; - } - } - else - { - reply.sfFile.vRefNum = p_ap_decode_obj->mSpec->vRefNum; - reply.sfFile.parID = p_ap_decode_obj->mSpec->parID; - XP_MEMCPY(&reply.sfFile.name, p_ap_decode_obj->mSpec->name , 63 ); - } - - XP_MEMCPY(p_ap_decode_obj->fname, - reply.sfFile.name+1, - *(reply.sfFile.name)+1); - p_ap_decode_obj->fname[*(reply.sfFile.name)] = '\0'; - - p_ap_decode_obj->vRefNum = reply.sfFile.vRefNum; - p_ap_decode_obj->dirId = reply.sfFile.parID; - - /* create & get info for file */ - HDelete(reply.sfFile.vRefNum, - reply.sfFile.parID, - reply.sfFile.name); - -#define DONT_CARE_TYPE 0x3f3f3f3f - - if (HCreate(reply.sfFile.vRefNum, - reply.sfFile.parID, - reply.sfFile.name, - DONT_CARE_TYPE, - DONT_CARE_TYPE) != NOERR) - { - return errFileOpen; - } - - fpb = (HFileInfo *) &cipbr; - fpb->ioVRefNum = reply.sfFile.vRefNum; - fpb->ioDirID = reply.sfFile.parID; - fpb->ioNamePtr = reply.sfFile.name; - fpb->ioFDirIndex = 0; - PBGetCatInfoSync(&cipbr); - - /* get finder info */ - for (i = 0; i < j && entries[i].id != ENT_FINFO; ++i) - ; - if (i < j) - { - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - if (status != NOERR) - return status; - - status = from_decoder(p_ap_decode_obj, - (char *) &fpb->ioFlFndrInfo, - sizeof (FInfo), - &in_count); - if (status != NOERR) - return status; - - status = from_decoder(p_ap_decode_obj, - (char *) &fpb->ioFlXFndrInfo, - sizeof (FXInfo), - &in_count); - - if (status != NOERR && status != errEOP ) - return status; - - fpb->ioFlFndrInfo.fdFlags &= 0xfc00; /* clear flags maintained by finder */ - } - - /* - ** get file date info - */ - for (i = 0; i < j && entries[i].id != ENT_DATES; ++i) - ; - if (i < j) - { - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - if (status != NOERR && status != errEOP ) - return status; - - status = from_decoder(p_ap_decode_obj, - (char *) &dates, - sizeof (dates), - &in_count); - if (status != NOERR) - return status; - - fpb->ioFlCrDat = dates.create - CONVERT_TIME; - fpb->ioFlMdDat = dates.modify - CONVERT_TIME; - fpb->ioFlBkDat = dates.backup - CONVERT_TIME; - } - - /* - ** update info - */ - fpb->ioDirID = fpb->ioFlParID; - PBSetCatInfoSync(&cipbr); - - /* - ** get comment & save it - */ - for (i = 0; i < j && entries[i].id != ENT_COMMENT; ++i) - ; - if (i < j && entries[i].length != 0) - { - memset((void *) &vinfo, '\0', sizeof (vinfo)); - vinfo.ioVRefNum = fpb->ioVRefNum; - vinfo.ioBuffer = (Ptr) &vp; - vinfo.ioReqCount = sizeof (vp); - if (PBHGetVolParmsSync((HParmBlkPtr) &vinfo) == NOERR && - ((vp.vMAttrib >> bHasDesktopMgr) & 1)) - { - memset((void *) &dtp, '\0', sizeof (dtp)); - dtp.ioVRefNum = fpb->ioVRefNum; - if (PBDTGetPath(&dtp) == NOERR) - { - if (entries[i].length > 255) - entries[i].length = 255; - - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - if (status != NOERR) - return status; - - status = from_decoder(p_ap_decode_obj, - comment, - entries[i].length, - &in_count); - if (status != NOERR) - return status; - - dtp.ioDTBuffer = (Ptr) comment; - dtp.ioNamePtr = fpb->ioNamePtr; - dtp.ioDirID = fpb->ioDirID; - dtp.ioDTReqCount = entries[i].length; - if (PBDTSetCommentSync(&dtp) == NOERR) - { - PBDTFlushSync(&dtp); - } - } - } - } - -#else - /* - ** in non-mac system, creating a data fork file will be it. - */ -#endif - } - - /* - ** Get the size of the resource fork, and (maybe) position to the beginning of it. - */ - for (i = 0; i < j && entries[i].id != ENT_RFORK; ++i) - ; - if (i < j && entries[i].length != 0) - { -#ifdef XP_MAC - /* Seek to the start of the resource fork only if we're on a Mac */ - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - positionedAtRFork = TRUE; -#endif - p_ap_decode_obj->rksize = entries[i].length; - } - else - p_ap_decode_obj->rksize = 0; - - /* - ** Get the size of the data fork, and (maybe) position to the beginning of it. - */ - for (i = 0; i < j && entries[i].id != ENT_DFORK; ++i) - ; - if (i < j && entries[i].length != 0) - { - if (p_ap_decode_obj->is_apple_single && !positionedAtRFork) - status = decoder_seek(p_ap_decode_obj, - entries[i].offset, - st_pt); - p_ap_decode_obj->dksize = entries[i].length; - } - else - p_ap_decode_obj->dksize = 0; - - /* - ** Prepare a tempfile to hold the resource fork decoded by the decoder, - ** because in binhex, resource fork appears after the data fork!!! - */ - if (p_ap_decode_obj->write_as_binhex) - { - if (p_ap_decode_obj->rksize != 0) - { - /* we need a temp file to hold all the resource data, because the */ - p_ap_decode_obj->tmpfname - = WH_TempName(xpTemporary, "apmail"); - - p_ap_decode_obj->tmpfd - = XP_FileOpen(p_ap_decode_obj->tmpfname, - xpTemporary, - XP_FILE_TRUNCATE_BIN); - - if (p_ap_decode_obj->tmpfd == NULL) - return errFileOpen; - } - } - return NOERR; -} - -/* -** ap_decode_process_header -** -** -*/ -int ap_decode_process_header( - appledouble_decode_object* p_ap_decode_obj, - XP_Bool firstime) -{ - uint32 in_count; - int status = NOERR; - char wr_buff[1024]; - - if (firstime) - { - status = ap_decode_file_infor(p_ap_decode_obj); - if (status != NOERR) - return status; - - if (p_ap_decode_obj->rksize > 0) - { -#ifdef XP_MAC - if(!p_ap_decode_obj->write_as_binhex) - { - Str63 fname; - short refNum; - - fname[0] = XP_STRLEN(p_ap_decode_obj->fname); - XP_STRCPY((char*)fname+1, p_ap_decode_obj->fname); - - if (HOpenRF(p_ap_decode_obj->vRefNum, - p_ap_decode_obj->dirId, - fname, - fsWrPerm, - &refNum) != NOERR) - { - return (errFileOpen); - } - p_ap_decode_obj->fileId = refNum; - } -#endif - } - else - { - status = errDone; - } - } - - /* - ** Time to continue decoding all the resource data. - */ - while (status == NOERR && p_ap_decode_obj->rksize > 0) - { - in_count = MIN(1024, p_ap_decode_obj->rksize); - - status = from_decoder(p_ap_decode_obj, - wr_buff, - in_count, - &in_count); - - if (p_ap_decode_obj->write_as_binhex) - { - /* - ** Write to the temp file first, because the resource fork appears after - ** the data fork in the binhex encoding. - */ - if (XP_FileWrite(wr_buff, - in_count, - p_ap_decode_obj->tmpfd) != in_count) - { - status = errFileWrite; - break; - } - p_ap_decode_obj->data_size += in_count; - } - else - { -#ifdef XP_MAC - long howMuch = in_count; - - if (FSWrite(p_ap_decode_obj->fileId, - &howMuch, - wr_buff) != NOERR) - { - status = errFileWrite; - break; - } -#else - /* ====== Write nothing in a non mac file system ============ */ -#endif - } - - p_ap_decode_obj->rksize -= in_count; - } - - if (p_ap_decode_obj->rksize <= 0 || status == errEOP) - { - if (p_ap_decode_obj->write_as_binhex) - { - /* - ** No more resource data, but we are not done - ** with tempfile yet, just seek back to the start point, - ** -- ready for a readback later - */ - if (p_ap_decode_obj->tmpfd) - XP_FileSeek(p_ap_decode_obj->tmpfd, 0L, 1); - } - -#ifdef XP_MAC - else if (p_ap_decode_obj->fileId) /* close the resource fork of the macfile */ - { - FSClose(p_ap_decode_obj->fileId); - p_ap_decode_obj->fileId = 0; - } -#endif - if (!p_ap_decode_obj->is_apple_single) - { - p_ap_decode_obj->left = 0; - p_ap_decode_obj->state64 = 0; - } - status = errDone; - } - return status; -} - -int ap_decode_process_data( - appledouble_decode_object* p_ap_decode_obj, - XP_Bool firstime) -{ - char wr_buff[1024]; - uint32 in_count; - int status = NOERR; - int retval = NOERR; - - if (firstime) - { - if (!p_ap_decode_obj->write_as_binhex) - { -#ifdef XP_MAC - char *filename; - FSSpec fspec; - - fspec.vRefNum = p_ap_decode_obj->vRefNum; - fspec.parID = p_ap_decode_obj->dirId; - fspec.name[0] = XP_STRLEN(p_ap_decode_obj->fname); - XP_STRCPY((char*)fspec.name+1, p_ap_decode_obj->fname); - - filename = my_PathnameFromFSSpec(&fspec); - if (p_ap_decode_obj->is_binary) - p_ap_decode_obj->fd = - XP_FileOpen(filename+7, xpURL, XP_FILE_TRUNCATE_BIN); - else - p_ap_decode_obj->fd = - XP_FileOpen(filename+7, xpURL, XP_FILE_TRUNCATE); - XP_FREE(filename); -#else - if (p_ap_decode_obj->is_binary) - p_ap_decode_obj->fd = - XP_FileOpen(p_ap_decode_obj->fname, xpURL, XP_FILE_TRUNCATE_BIN); - else - p_ap_decode_obj->fd = - XP_FileOpen(p_ap_decode_obj->fname, xpURL, XP_FILE_TRUNCATE); -#endif - } - else - { - ; /* == don't need do anything to binhex stream, it is ready already == */ - } - } - - if (p_ap_decode_obj->is_apple_single && - p_ap_decode_obj->dksize == 0) - { - /* if no data in apple single, we already done then. */ - status = errDone; - } - - while (status == NOERR && retval == NOERR) - { - retval = from_decoder(p_ap_decode_obj, - wr_buff, - 1024, - &in_count); - - if (p_ap_decode_obj->is_apple_single) /* we know the data fork size in */ - p_ap_decode_obj->dksize -= in_count; /* apple single, use it to decide the end */ - - if (p_ap_decode_obj->write_as_binhex) - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - wr_buff, - in_count); - else - status = XP_FileWrite(wr_buff, - in_count, - p_ap_decode_obj->fd) == in_count ? NOERR : errFileWrite; - - if (retval == errEOP || /* for apple double, we meet the boundary */ - ( p_ap_decode_obj->is_apple_single && - p_ap_decode_obj->dksize <= 0)) /* for apple single, we know it is ending */ - { - status = errDone; - break; - } - } - - if (status == errDone) - { - if (p_ap_decode_obj->write_as_binhex) - { - /* CALL with data == NULL && size == 0 to end a part object in binhex encoding */ - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - NULL, - 0); - if (status != NOERR) - return status; - } - else if (p_ap_decode_obj->fd) - { - XP_FileClose(p_ap_decode_obj->fd); - p_ap_decode_obj->fd = 0; - } - - status = errDone; - } - return status; -} - -/* -** Fill the data from the decoder stream. -*/ -PRIVATE int from_decoder( - appledouble_decode_object* p_ap_decode_obj, - char *buff, - int buff_size, - uint32 *in_count) -{ - int status; - - switch (p_ap_decode_obj->encoding) - { - case kEncodeQP: - status = from_qp(p_ap_decode_obj, - buff, - buff_size, - in_count); - break; - case kEncodeBase64: - status = from_64(p_ap_decode_obj, - buff, - buff_size, - in_count); - break; - case kEncodeUU: - status = from_uu(p_ap_decode_obj, - buff, - buff_size, - in_count); - break; - case kEncodeNone: - default: - status = from_none(p_ap_decode_obj, - buff, - buff_size, - in_count); - break; - } - return status; -} - -/* -** decoder_seek -** -** simulate a stream seeking on the encoded stream. -*/ -PRIVATE int decoder_seek( - appledouble_decode_object* p_ap_decode_obj, - int seek_pos, - int start_pos) -{ - char tmp[1024]; - int status = NOERR; - uint32 in_count; - - /* - ** force a reset on the in buffer. - */ - p_ap_decode_obj->state64 = 0; - p_ap_decode_obj->left = 0; - p_ap_decode_obj->pos_inbuff = start_pos; - p_ap_decode_obj->uu_starts_line = TRUE; - p_ap_decode_obj->uu_bytes_written = p_ap_decode_obj->uu_line_bytes = 0; - p_ap_decode_obj->uu_state = kWaitingForBegin; - - while (seek_pos > 0) - { - status = from_decoder(p_ap_decode_obj, - tmp, - MIN(1024, seek_pos), - &in_count); - if (status != NOERR) - break; - - seek_pos -= in_count; - } - return status; -} - -#define XX 127 -/* - * Table for decoding base64 - */ -static char index_64[256] = { - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,62, XX,XX,XX,63, - 52,53,54,55, 56,57,58,59, 60,61,XX,XX, XX,XX,XX,XX, - XX, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14, - 15,16,17,18, 19,20,21,22, 23,24,25,XX, XX,XX,XX,XX, - XX,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40, - 41,42,43,44, 45,46,47,48, 49,50,51,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, -}; - -#ifdef XP_OS2_HACK -/*DSR102196 - the OS/2 Visual Age compiler croaks when it tries*/ -/*to optomize this macro (/O+ on CSD4) */ -char CHAR64(int c) -{ - unsigned char index; - char rc; - - index = (unsigned char) c; - rc = index_64[index]; - return rc; -} -#else /*normal code...*/ -#define CHAR64(c) (index_64[(unsigned char)(c)]) -#endif -#define EndOfBuff(p) ((p)->pos_inbuff >= (p)->s_inbuff) - -PRIVATE int fetch_next_char_64( - appledouble_decode_object* p_ap_decode_obj) -{ - char c; - - c = p_ap_decode_obj->inbuff[p_ap_decode_obj->pos_inbuff++]; - if (c == '-') - --p_ap_decode_obj->pos_inbuff; /* put back */ - - while (c == LF || c == CR) /* skip the CR character. */ - { - if (EndOfBuff(p_ap_decode_obj)) - { - c = 0; - break; - } - - c = p_ap_decode_obj->inbuff[p_ap_decode_obj->pos_inbuff++]; - if (c == '-') - { - --p_ap_decode_obj->pos_inbuff; /* put back */ - } - } - return (int)c; -} - - -PRIVATE int from_64( - appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size) -{ - int i, j, buf[4]; - int c1, c2, c3, c4; - - (*real_size) = 0; - - /* - ** decode 4 by 4s characters - */ - for (i = p_ap_decode_obj->state64; i<4; i++) - { - if (EndOfBuff(p_ap_decode_obj)) - { - p_ap_decode_obj->state64 = i; - break; - } - if ((p_ap_decode_obj->c[i] = fetch_next_char_64(p_ap_decode_obj)) == 0) - break; - } - - if (i != 4) - { - /* - ** not enough data to fill the decode buff. - */ - return errEOB; /* end of buff */ - } - - while (size > 0) - { - c1 = p_ap_decode_obj->c[0]; - c2 = p_ap_decode_obj->c[1]; - c3 = p_ap_decode_obj->c[2]; - c4 = p_ap_decode_obj->c[3]; - - if (c1 == '-' || c2 == '-' || c3 == '-' || c4 == '-') - { - return errEOP; /* we meet the part boundary. */ - } - - if (c1 == '=' || c2 == '=') - { - return errDecoding; - } - - c1 = CHAR64(c1); - c2 = CHAR64(c2); - buf[0] = ((c1<<2) | ((c2&0x30)>>4)); - - if (c3 != '=') - { - c3 = CHAR64(c3); - buf[1] = (((c2&0x0F) << 4) | ((c3&0x3C) >> 2)); - - if (c4 != '=') - { - c4 = CHAR64(c4); - buf[2] = (((c3&0x03) << 6) | c4); - } - else - { - if (p_ap_decode_obj->left == 0) - { - *buff++ = buf[0]; (*real_size)++; - } - *buff++ = buf[1]; (*real_size)++; - /* return errEOP; */ /* bug 87784 */ - return EndOfBuff(p_ap_decode_obj) ? errEOP : NOERR; - } - } - else - { - *buff++ = *buf; - (*real_size)++; - /* return errEOP; *bug 87784*/ /* we meet the the end */ - return EndOfBuff(p_ap_decode_obj) ? errEOP : NOERR; - } - /* - ** copy the content - */ - for (j = p_ap_decode_obj->left; j<3; ) - { - *buff++ = buf[j++]; - (*real_size)++; - if (--size <= 0) - break; - } - p_ap_decode_obj->left = j % 3; - - if (size <=0) - { - if (j == 3) - p_ap_decode_obj->state64 = 0; /* See if we used up all data, */ - /* ifnot, keep the data, */ - /* we need it for next time. */ - else - p_ap_decode_obj->state64 = 4; - - break; - } - - /* - ** fetch the next 4 character group. - */ - for (i = 0; i < 4; i++) - { - if (EndOfBuff(p_ap_decode_obj)) - break; - - if ((p_ap_decode_obj->c[i] = fetch_next_char_64(p_ap_decode_obj)) == 0) - break; - } - - p_ap_decode_obj->state64 = i % 4; - - if (i != 4) - break; /* some kind of end of buff met.*/ - } - - /* - ** decide the size and status. - */ - return EndOfBuff(p_ap_decode_obj) ? errEOB : NOERR; -} - -/* - * Table for decoding hexadecimal in quoted-printable - */ -static char index_hex[256] = { - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,XX,XX, XX,XX,XX,XX, - XX,10,11,12, 13,14,15,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,10,11,12, 13,14,15,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, - XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, -}; - -#define HEXCHAR(c) (index_hex[(unsigned char)(c)]) -#define NEXT_CHAR(p) ((int)((p)->inbuff[(p)->pos_inbuff++])) -#define CURRENT_CHAR(p) ((int)((p)->inbuff[(p)->pos_inbuff])) -/* -** quoted printable decode, as defined in RFC 1521, page18 - 20 -*/ -PRIVATE int from_qp( - appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size) -{ - char c; - int c1, c2; - - *real_size = 0; - - if (p_ap_decode_obj->c[0] == '=') - { - /* - ** continue with the last time's left over. - */ - p_ap_decode_obj->c[0] = 0; - - c1 = p_ap_decode_obj->c[1]; p_ap_decode_obj->c[1] = 0; - - if ( c1 == 0) - { - c1 = NEXT_CHAR(p_ap_decode_obj); - c2 = NEXT_CHAR(p_ap_decode_obj); - } - else - { - c2 = NEXT_CHAR(p_ap_decode_obj); - } - c = HEXCHAR(c1) << 4 | HEXCHAR(c2); - - size --; - *buff ++ = c; - (*real_size) ++; - } - - /* - ** Then start to work on the new data - */ - while (size > 0) - { - if (EndOfBuff(p_ap_decode_obj)) - break; - - c1 = NEXT_CHAR(p_ap_decode_obj); - - if (c1 == '=') - { - if (EndOfBuff(p_ap_decode_obj)) - { - p_ap_decode_obj->c[0] = c1; - break; - } - - c1 = NEXT_CHAR(p_ap_decode_obj); - if (c1 != '\n') - { - /* - ** Rule #2 - */ - c1 = HEXCHAR(c1); - if (EndOfBuff(p_ap_decode_obj)) - { - p_ap_decode_obj->c[0] = '='; - p_ap_decode_obj->c[1] = c1; - break; - } - - c2 = NEXT_CHAR(p_ap_decode_obj); - c2 = HEXCHAR(c2); - c = c1 << 4 | c2; - if (c != '\r') - { - size --; - *buff++ = c; - (*real_size)++; - } - } - else - { - /* ignore the line break -- soft line break, rule #5 */ - } - } - else - { - if (c1 == CR || c1 == LF) - { - if (p_ap_decode_obj->pos_inbuff < p_ap_decode_obj->s_inbuff) - { - if (p_ap_decode_obj->boundary0 && - (!XP_STRNCASECMP(p_ap_decode_obj->pos_inbuff+p_ap_decode_obj->inbuff, - "--", - 2) - && - !XP_STRNCASECMP(p_ap_decode_obj->pos_inbuff+p_ap_decode_obj->inbuff+2, - p_ap_decode_obj->boundary0, - XP_STRLEN(p_ap_decode_obj->boundary0)))) - { - return errEOP; - } - } - } - - /* - ** general 8bits case, Rule #1 - */ - size -- ; - *buff++ = c1; - (*real_size) ++; - } - } - return EndOfBuff(p_ap_decode_obj) ? errEOB : NOERR; -} - -#define UUEOL(c) (((c) == CR) || ((c) == LF)) -# undef UUDEC -# define UUDEC(c) (((c) - ' ') & 077) - -/* Check for and skip past the "begin" line of a uuencode body. */ -PRIVATE void ensure_uu_body_state(appledouble_decode_object* p) -{ - char *end = &(p->inbuff[p->s_inbuff]); - char *current = &(p->inbuff[p->pos_inbuff]); - - if (p->uu_state == kMainBody && p->uu_starts_line - && !XP_STRNCASECMP(current, "end", MIN(3, end - current))) - p->uu_state = kEnd; - - while (p->uu_state != kMainBody && (current < end)) - { - switch(p->uu_state) - { - case kWaitingForBegin: - case kBegin: - /* If we're not at the beginning of a line, move to the next line. */ - if (! p->uu_starts_line) - { - while(current < end && !UUEOL(*current)) - current++; - while(current < end && UUEOL(*current)) - current++; - - p->uu_starts_line = TRUE; /* we reached the start of a line */ - if (p->uu_state == kBegin) - p->uu_state = kMainBody; - - continue; - } - else - { - /* - At the start of a line. Test for "begin". - - ### mwelch: - - There is a potential danger here. If a buffer ends with a line - starting with some substring of "begin", this code will be fooled - into thinking that the uuencode body starts with the following line. - If the message itself contains lines that begin with a substring of - "begin", such as "be", "because", or "bezoar", and if those lines happen - to end a 1024-byte chunk, this becomes Really Bad. However, there is - no good, safe way to overcome this problem. So, for now, I hope and - pray that the 1024 character limit will always incorporate the entire - first line of a uuencode body. - - It should be noted that broken messages that have the body text in - the same MIME part as the uuencode attachment also risk this same - pitfall if any line in the message starts with "begin". - */ - - if ((p->uu_state == kWaitingForBegin) - && !XP_STRNCASECMP(current, "begin", MIN(5, end - current))) - p->uu_state = kBegin; - p->uu_starts_line = FALSE; /* make us advance to next line */ - } - break; - case kEnd: - /* Run out the buffer. */ - current = end; - } - } - - /* Record where we stopped scanning. */ - p->pos_inbuff = p->s_inbuff - (end - current); -} - -#define UU_VOID_CHAR 0 - -PRIVATE int fetch_next_char_uu(appledouble_decode_object* p, XP_Bool newBunch) -{ - char c=0; - XP_Bool gotChar = FALSE; - - if (EndOfBuff(p)) - return 0; - - while(!gotChar) - { - if (EndOfBuff(p)) - { - c = 0; - gotChar = TRUE; - } - else if (p->uu_starts_line) - { - char *end = &(p->inbuff[p->s_inbuff]); - char *current = &(p->inbuff[p->pos_inbuff]); - - /* Look here for 'end' line signifying end of uuencode body. */ - if (!XP_STRNCASECMP(current, "end", MIN(3, end - current))) - { - p->uu_state = kEnd; /* set the uuencode state to end */ - p->pos_inbuff = p->s_inbuff; /* run out the current buffer */ - - c = 0; /* return a 0 to uudecoder */ - gotChar = TRUE; - } - } - if (gotChar) - continue; - - c = NEXT_CHAR(p); - - if ((c == CR) || (c == LF)) - { - if (newBunch) - { - /* A new line could immediately follow either a CR or an LF. - If we reach the end of a buffer, simply assume the next buffer - will start a line (as it should in the current libmime implementation). - If it starts with CR or LF, that line will be skipped as well. */ - if (EndOfBuff(p) || ((CURRENT_CHAR(p) != CR) && (CURRENT_CHAR(p) != LF))) - p->uu_starts_line = TRUE; - - continue; - } - - /* End of line, but we have to finish a 4-tuple. Stop here. */ - -- p->pos_inbuff; /* give back the end-of-line character */ - c = UU_VOID_CHAR; /* flag as truncated */ - gotChar = TRUE; - } - - /* At this point, we have a valid char. */ - - else if (p->uu_starts_line) - { - /* read length char at start of each line */ - p->uu_line_bytes = UUDEC(c); - p->uu_starts_line = FALSE; - continue; - } - - else if (p->uu_line_bytes <= 0) - /* We ran out of bytes to decode on this line. Skip spare chars until - we reach the end of (line or buffer). */ - continue; - - else - gotChar = TRUE; /* valid returnable char */ - } - - return (int) c; -} - -/* -** uudecode -*/ - -PRIVATE int from_uu( - appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size) -{ - char c; - int i; - int returnVal = NOERR; - int c1, c2, c3, c4; - - *real_size = 0; - - /* Make sure that we're in the uuencode body, or run out the buffer if - we don't have any body text in this buffer. */ - ensure_uu_body_state(p_ap_decode_obj); - - if (p_ap_decode_obj->uu_state == kEnd) - return errEOP; - - /* Continue with what was left over last time. */ - for (i = p_ap_decode_obj->state64; i<4; i++) - { - if (EndOfBuff(p_ap_decode_obj)) - { - p_ap_decode_obj->state64 = i; - break; - } - if ((p_ap_decode_obj->c[i] = fetch_next_char_uu(p_ap_decode_obj, (i==0))) == 0) - break; - } - - if ( (i < p_ap_decode_obj->uu_line_bytes+1) - && (EndOfBuff(p_ap_decode_obj))) - /* not enough data to decode, return here. */ - return errEOB; - - while((size > 0) && (!EndOfBuff(p_ap_decode_obj))) - { - c1 = p_ap_decode_obj->c[0]; - c2 = p_ap_decode_obj->c[1]; - c3 = p_ap_decode_obj->c[2]; - c4 = p_ap_decode_obj->c[3]; - - /* - At this point we have characters ready to decode. - Convert them to binary bytes. - */ - if ((i > 1) - && (p_ap_decode_obj->uu_bytes_written < 1) - && (p_ap_decode_obj->uu_line_bytes > 0)) - { - c = UUDEC(c1) << 2 | UUDEC(c2) >> 4; - size --; - *buff ++ = c; - (*real_size) ++; - p_ap_decode_obj->uu_line_bytes--; - p_ap_decode_obj->uu_bytes_written++; - } - - if ((i > 2) && (size > 0) - && (p_ap_decode_obj->uu_bytes_written < 2) - && (p_ap_decode_obj->uu_line_bytes > 0)) - { - c = UUDEC(c2) << 4 | UUDEC(c3) >> 2; - size --; - *buff ++ = c; - (*real_size) ++; - p_ap_decode_obj->uu_line_bytes--; - p_ap_decode_obj->uu_bytes_written++; - } - - if ((i > 3) && (size > 0) - && (p_ap_decode_obj->uu_line_bytes > 0)) - { - c = UUDEC(c3) << 6 | UUDEC(c4); - size --; - *buff ++ = c; - (*real_size) ++; - p_ap_decode_obj->uu_line_bytes--; - p_ap_decode_obj->uu_bytes_written = 0; - } - - if (p_ap_decode_obj->uu_state == kEnd) - continue; - - /* If this line is finished, this tuple is also finished. */ - if (p_ap_decode_obj->uu_line_bytes <= 0) - p_ap_decode_obj->uu_bytes_written = 0; - - if (p_ap_decode_obj->uu_bytes_written > 0) - { - /* size == 0, but we have bytes left in current tuple */ - p_ap_decode_obj->state64 = i; - continue; - } - - /* - ** fetch the next 4 character group. - */ - - for (i = 0; i < 4; i++) - { - if (EndOfBuff(p_ap_decode_obj)) - break; - - if ((p_ap_decode_obj->c[i] = fetch_next_char_uu(p_ap_decode_obj, (i == 0))) == 0) - break; - } - - p_ap_decode_obj->state64 = i; - - if ( (i < p_ap_decode_obj->uu_line_bytes+1) - && (EndOfBuff(p_ap_decode_obj))) - /* not enough data to decode, return here. */ - continue; - } - - if (p_ap_decode_obj->uu_state == kEnd) - returnVal = errEOP; - else if (EndOfBuff(p_ap_decode_obj)) - returnVal = errEOB; - - return returnVal; -} - -/* -** from_none -** -** plain text transfer. -*/ -PRIVATE int from_none( - appledouble_decode_object* p_ap_decode_obj, - char *buff, - int size, - uint32 *real_size) -{ - char c; - int i, status = NOERR; - int left = p_ap_decode_obj->s_inbuff - p_ap_decode_obj->pos_inbuff; - int total = MIN(size, left); - - for (i = 0; i < total; i++) - { - *buff ++ = c = NEXT_CHAR(p_ap_decode_obj); - if (c == CR || c == LF) - { - /* make sure the next thing is not a boundary string */ - if (p_ap_decode_obj->pos_inbuff < p_ap_decode_obj->s_inbuff) - { - if (p_ap_decode_obj->boundary0 && - (!XP_STRNCASECMP(p_ap_decode_obj->pos_inbuff+p_ap_decode_obj->inbuff, - "--", - 2) - && - !XP_STRNCASECMP(p_ap_decode_obj->pos_inbuff+p_ap_decode_obj->inbuff+2, - p_ap_decode_obj->boundary0, - XP_STRLEN(p_ap_decode_obj->boundary0)))) - { - status = errEOP; - break; - } - } - } - } - - *real_size = i; - if (status == NOERR) - status = (left == i) ? errEOB : status; - return status; -} - diff --git a/mozilla/lib/mailto/ap_encod.c b/mozilla/lib/mailto/ap_encod.c deleted file mode 100644 index f14f5ae1755..00000000000 --- a/mozilla/lib/mailto/ap_encod.c +++ /dev/null @@ -1,737 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* - * - * apple_double_encode.c - * --------------------- - * - * The routines doing the Apple Double Encoding. - * - * 2aug95 mym Created. - * - */ - -#include "msg.h" -#include "appledbl.h" -#include "ad_codes.h" - -#ifdef XP_MAC - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; -extern int MK_MIME_ERROR_WRITING_FILE; - -#include <Errors.h> - -/* -** Local Functions prototypes. -*/ -PRIVATE int output64chunk( appledouble_encode_object* p_ap_encode_obj, - int c1, int c2, int c3, int pads); - -PRIVATE int to64(appledouble_encode_object* p_ap_encode_obj, - char *p, - int in_size); - -PRIVATE int finish64(appledouble_encode_object* p_ap_encode_obj); - - -#define BUFF_LEFT(p) ((p)->s_outbuff - (p)->pos_outbuff) - -/* -** write_stream. -*/ -int write_stream( - appledouble_encode_object *p_ap_encode_obj, - char *out_string, - int len) -{ - if (p_ap_encode_obj->pos_outbuff + len < p_ap_encode_obj->s_outbuff) - { - XP_MEMCPY(p_ap_encode_obj->outbuff + p_ap_encode_obj->pos_outbuff, - out_string, - len); - p_ap_encode_obj->pos_outbuff += len; - return noErr; - } - else - { - /* - ** If the buff doesn't have enough space, use the overflow buffer then. - */ - int s_len = p_ap_encode_obj->s_outbuff - p_ap_encode_obj->pos_outbuff; - - XP_MEMCPY(p_ap_encode_obj->outbuff + p_ap_encode_obj->pos_outbuff, - out_string, - s_len); - XP_MEMCPY(p_ap_encode_obj->b_overflow + p_ap_encode_obj->s_overflow, - out_string + s_len, - p_ap_encode_obj->s_overflow += (len - s_len)); - p_ap_encode_obj->pos_outbuff += s_len; - return errEOB; - } -} - -int fill_apple_mime_header( - appledouble_encode_object *p_ap_encode_obj) -{ - int status; - - char tmpstr[266]; - -#if 0 -// strcpy(tmpstr, "Content-Type: multipart/mixed; boundary=\"-\"\n\n---\n"); -// status = write_stream(p_ap_encode_env, -// tmpstr, -// strlen(tmpstr)); -// if (status != noErr) -// return status; - - sprintf(tmpstr, - "Content-Type: multipart/appledouble; boundary=\"=\"; name=\""); - status = write_stream(p_ap_encode_obj, - tmpstr, - strlen(tmpstr)); - if (status != noErr) - return status; - - status = write_stream(p_ap_encode_obj, - p_ap_encode_obj->fname, - XP_STRLEN(p_ap_encode_obj->fname)); - if (status != noErr) - return status; - - XP_SPRINTF(tmpstr, - "\"\nContent-Disposition: inline; filename=\"%s\"\n\n\n--=\n", - p_ap_encode_obj->fname); -#endif - XP_SPRINTF(tmpstr, "--%s"CRLF, p_ap_encode_obj->boundary); - status = write_stream(p_ap_encode_obj, - tmpstr, - XP_STRLEN(tmpstr)); - return status; -} - -int ap_encode_file_infor( - appledouble_encode_object *p_ap_encode_obj) -{ - CInfoPBRec cipbr; - HFileInfo *fpb = (HFileInfo *)&cipbr; - ap_header head; - ap_entry entries[NUM_ENTRIES]; - ap_dates dates; - short i; - long comlen, procID; - DateTimeRec cur_time; - unsigned long cur_secs; - IOParam vinfo; - GetVolParmsInfoBuffer vp; - DTPBRec dtp; - char comment[256]; - Str63 fname; - int status; - - strcpy((char *)fname+1,p_ap_encode_obj->fname); - fname[0] = XP_STRLEN(p_ap_encode_obj->fname); - - fpb->ioNamePtr = fname; - fpb->ioDirID = p_ap_encode_obj->dirId; - fpb->ioVRefNum = p_ap_encode_obj->vRefNum; - fpb->ioFDirIndex = 0; - if (PBGetCatInfoSync(&cipbr) != noErr) - { - return errFileOpen; - } - - /* get a file comment, if possible */ - procID = 0; - GetWDInfo(p_ap_encode_obj->vRefNum, &fpb->ioVRefNum, &fpb->ioDirID, &procID); - memset((void *) &vinfo, '\0', sizeof (vinfo)); - vinfo.ioCompletion = nil; - vinfo.ioVRefNum = fpb->ioVRefNum; - vinfo.ioBuffer = (Ptr) &vp; - vinfo.ioReqCount = sizeof (vp); - comlen = 0; - if (PBHGetVolParmsSync((HParmBlkPtr) &vinfo) == noErr && - ((vp.vMAttrib >> bHasDesktopMgr) & 1)) - { - memset((void *) &dtp, '\0', sizeof (dtp)); - dtp.ioVRefNum = fpb->ioVRefNum; - if (PBDTGetPath(&dtp) == noErr) - { - dtp.ioCompletion = nil; - dtp.ioDTBuffer = (Ptr) comment; - dtp.ioNamePtr = fpb->ioNamePtr; - dtp.ioDirID = fpb->ioFlParID; - if (PBDTGetCommentSync(&dtp) == noErr) - comlen = dtp.ioDTActCount; - } - } - - /* write header */ -// head.magic = dfork ? APPLESINGLE_MAGIC : APPLEDOUBLE_MAGIC; - head.magic = APPLEDOUBLE_MAGIC; /* always do apple double */ - head.version = VERSION; - memset(head.fill, '\0', sizeof (head.fill)); - head.entries = NUM_ENTRIES - 1; - status = to64(p_ap_encode_obj, - (char *) &head, - sizeof (head)); - if (status != noErr) - return status; - - /* write entry descriptors */ - entries[0].offset = sizeof (head) + sizeof (ap_entry) * head.entries; - entries[0].id = ENT_NAME; - entries[0].length = *fpb->ioNamePtr; - entries[1].id = ENT_FINFO; - entries[1].length = sizeof (FInfo) + sizeof (FXInfo); - entries[2].id = ENT_DATES; - entries[2].length = sizeof (ap_dates); - entries[3].id = ENT_COMMENT; - entries[3].length = comlen; - entries[4].id = ENT_RFORK; - entries[4].length = fpb->ioFlRLgLen; - entries[5].id = ENT_DFORK; - entries[5].length = fpb->ioFlLgLen; - - /* correct the link in the entries. */ - for (i = 1; i < NUM_ENTRIES; ++i) - { - entries[i].offset = entries[i-1].offset + entries[i-1].length; - } - status = to64(p_ap_encode_obj, - (char *) entries, - sizeof (ap_entry) * head.entries); - if (status != noErr) - return status; - - /* write name */ - status = to64(p_ap_encode_obj, - (char *) fpb->ioNamePtr + 1, - *fpb->ioNamePtr); - if (status != noErr) - return status; - - /* write finder info */ - status = to64(p_ap_encode_obj, - (char *) &fpb->ioFlFndrInfo, - sizeof (FInfo)); - if (status != noErr) - return status; - - status = to64(p_ap_encode_obj, - (char *) &fpb->ioFlXFndrInfo, - sizeof (FXInfo)); - if (status != noErr) - return status; - - /* write dates */ - GetTime(&cur_time); - DateToSeconds(&cur_time, &cur_secs); - dates.create = fpb->ioFlCrDat + CONVERT_TIME; - dates.modify = fpb->ioFlMdDat + CONVERT_TIME; - dates.backup = fpb->ioFlBkDat + CONVERT_TIME; - dates.access = cur_secs + CONVERT_TIME; - status = to64(p_ap_encode_obj, - (char *) &dates, - sizeof (ap_dates)); - if (status != noErr) - return status; - - /* write comment */ - if (comlen) - { - status = to64(p_ap_encode_obj, - comment, - comlen * sizeof(char)); - } - /* - ** Get some help information on deciding the file type. - */ - if (fpb->ioFlFndrInfo.fdType == 'TEXT' || fpb->ioFlFndrInfo.fdType == 'text') - { - p_ap_encode_obj->text_file_type = true; - } - - return status; -} -/* -** ap_encode_header -** -** encode the file header and the resource fork. -** -*/ -int ap_encode_header( - appledouble_encode_object* p_ap_encode_obj, - XP_Bool firstime) -{ - Str255 name; - char rd_buff[256]; - short fileId; - OSErr retval = noErr; - int status; - long inCount; - - if (firstime) - { - XP_STRCPY(rd_buff, - "Content-Type: application/applefile\nContent-Transfer-Encoding: base64\n\n"); - status = write_stream(p_ap_encode_obj, - rd_buff, - strlen(rd_buff)); - if (status != noErr) - return status; - - status = ap_encode_file_infor(p_ap_encode_obj); - if (status != noErr) - return status; - - /* - ** preparing to encode the resource fork. - */ - name[0] = strlen(p_ap_encode_obj->fname); - strcpy((char *)name+1, p_ap_encode_obj->fname); - if (HOpenRF(p_ap_encode_obj->vRefNum, p_ap_encode_obj->dirId, - name, fsRdPerm, - &p_ap_encode_obj->fileId) != noErr) - { - return errFileOpen; - } - } - - fileId = p_ap_encode_obj->fileId; - while (retval == noErr) - { - if (BUFF_LEFT(p_ap_encode_obj) < 400) - break; - - inCount = 256; - retval = FSRead(fileId, &inCount, rd_buff); - if (inCount) - { - status = to64(p_ap_encode_obj, - rd_buff, - inCount); - if (status != noErr) - return status; - } - } - - if (retval == eofErr) - { - FSClose(fileId); - - status = finish64(p_ap_encode_obj); - if (status != noErr) - return status; - - /* - ** write out the boundary - */ - XP_SPRINTF(rd_buff, - CRLF"--%s"CRLF, - p_ap_encode_obj->boundary); - - status = write_stream(p_ap_encode_obj, - rd_buff, - XP_STRLEN(rd_buff)); - if (status == noErr) - status = errDone; - } - return status; -} - -static void replace(char *p, int len, char frm, char to) -{ - for (; len > 0; len--, p++) - if (*p == frm) *p = to; -} - -/* Description of the various file formats and their magic numbers */ -struct magic -{ - char *name; /* Name of the file format */ - char *num; /* The magic number */ - int len; /* Length (0 means strlen(magicnum)) */ -}; - -/* The magic numbers of the file formats we know about */ -static struct magic magic[] = -{ - { "image/gif", "GIF", 0 }, - { "image/jpeg", "\377\330\377", 0 }, - { "video/mpeg", "\0\0\001\263", 4 }, - { "application/postscript", "%!", 0 }, -}; -static int num_magic = (sizeof(magic)/sizeof(magic[0])); - -static char *text_type = TEXT_PLAIN; /* the text file type. */ -static char *default_type = APPLICATION_OCTET_STREAM; - - -/* - * Determins the format of the file "inputf". The name - * of the file format (or NULL on error) is returned. - */ -PRIVATE char *magic_look(char *inbuff, int numread) -{ - int i, j; - - for (i=0; i<num_magic; i++) - { - if (magic[i].len == 0) - magic[i].len = XP_STRLEN(magic[i].num); - } - - for (i=0; i<num_magic; i++) - { - if (numread >= magic[i].len) - { - for (j=0; j<magic[i].len; j++) - { - if (inbuff[j] != magic[i].num[j]) break; - } - - if (j == magic[i].len) - return magic[i].name; - } - } - - return default_type; -} -/* -** ap_encode_data -** -** --------------- -** -** encode on the data fork. -** -*/ -int ap_encode_data( - appledouble_encode_object* p_ap_encode_obj, - XP_Bool firstime) -{ - Str255 name; - char rd_buff[256]; - short fileId; - OSErr retval = noErr; - long in_count; - int status; - - if (firstime) - { - char* magic_type; - - /* - ** preparing to encode the data fork. - */ - name[0] = XP_STRLEN(p_ap_encode_obj->fname); - XP_STRCPY((char*)name+1, p_ap_encode_obj->fname); - if (HOpen( p_ap_encode_obj->vRefNum, - p_ap_encode_obj->dirId, - name, - fsRdPerm, - &fileId) != noErr) - { - return errFileOpen; - } - p_ap_encode_obj->fileId = fileId; - - - if (!p_ap_encode_obj->text_file_type) - { - OSErr err; - FSSpec file_spec; - char* path; - Bool do_magic = true; - - /* First attempt to get the file's mime type via FE_FileType. - If that fails, we'll do a "magic_look" - */ - - err = FSMakeFSSpec(p_ap_encode_obj->vRefNum, p_ap_encode_obj->dirId, name, &file_spec); - if (err == noErr) - { - path = my_PathnameFromFSSpec(&file_spec); - if (path != NULL) - { - char* ignore; - FE_FileType(path, &do_magic, &magic_type, &ignore); - - /* - if we ended up with the default type, dispose of it - so we can do a magic_look - */ - - if (do_magic && magic_type) - XP_FREE(magic_type); - } - } - - if (do_magic) - { - /* - ** do a smart check for the file type. - */ - in_count = 256; - retval = FSRead(fileId, &in_count, rd_buff); - magic_type = magic_look(rd_buff, in_count); - - /* don't forget to rewind the index to start point. */ - SetFPos(fileId, fsFromStart, 0L); - } - } - else - { - magic_type = text_type; /* we already know it is a text type. */ - } - - /* - ** the data portion header information. - */ - XP_SPRINTF(rd_buff, - "Content-Type: %s; name=\"%s\"" CRLF "Content-Transfer-Encoding: base64" CRLF "Content-Disposition: inline; filename=\"%s\""CRLF CRLF, - magic_type, - p_ap_encode_obj->fname, - p_ap_encode_obj->fname); - - status = write_stream(p_ap_encode_obj, - rd_buff, - XP_STRLEN(rd_buff)); - if (status != noErr) - return status; - } - - while (retval == noErr) - { - if (BUFF_LEFT(p_ap_encode_obj) < 400) - break; - - in_count = 256; - retval = FSRead(p_ap_encode_obj->fileId, - &in_count, - rd_buff); - if (in_count) - { -/* replace(rd_buff, in_count, '\r', '\n'); */ -/* ** may be need to do character set conversion here for localization. ** */ - status = to64(p_ap_encode_obj, - rd_buff, - in_count); - if (status != noErr) - return status; - } - } - - if (retval == eofErr) - { - FSClose(p_ap_encode_obj->fileId); - - status = finish64(p_ap_encode_obj); - if (status != noErr) - return status; - - /* write out the boundary */ - - XP_SPRINTF(rd_buff, - CRLF"--%s--"CRLF CRLF, - p_ap_encode_obj->boundary); - - status = write_stream(p_ap_encode_obj, - rd_buff, - XP_STRLEN(rd_buff)); - - if (status == noErr) - status = errDone; - } - return status; -} - -static char basis_64[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -/* -** convert the stream in the inbuff to 64 format and put it in the out buff. -** To make the life easier, the caller will responcable of the cheking of the outbuff's bundary. -*/ -PRIVATE int -to64(appledouble_encode_object* p_ap_encode_obj, - char *p, - int in_size) -{ - int status; - int c1, c2, c3, ct; - unsigned char *inbuff = (unsigned char*)p; - - ct = p_ap_encode_obj->ct; /* the char count left last time. */ - - /* - ** resume the left state of the last conversion. - */ - switch (p_ap_encode_obj->state64) - { - case 0: - p_ap_encode_obj->c1 = c1 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 1; - return noErr; - } - p_ap_encode_obj->c2 = c2 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 2; - return noErr; - } - c3 = *inbuff ++; --in_size; - break; - case 1: - c1 = p_ap_encode_obj->c1; - p_ap_encode_obj->c2 = c2 = *inbuff ++; - if (--in_size <= 0) - { - p_ap_encode_obj->state64 = 2; - return noErr; - } - c3 = *inbuff ++; --in_size; - break; - case 2: - c1 = p_ap_encode_obj->c1; - c2 = p_ap_encode_obj->c2; - c3 = *inbuff ++; --in_size; - break; - } - - while (in_size >= 0) - { - status = output64chunk(p_ap_encode_obj, - c1, - c2, - c3, - 0); - if (status != noErr) - return status; - - ct += 4; - if (ct > 71) - { - status = write_stream(p_ap_encode_obj, - CRLF, - 2); - if (status != noErr) - return status; - - ct = 0; - } - - if (in_size <= 0) - { - p_ap_encode_obj->state64 = 0; - break; - } - - c1 = (int)*inbuff++; - if (--in_size <= 0) - { - p_ap_encode_obj->c1 = c1; - p_ap_encode_obj->state64 = 1; - break; - } - c2 = *inbuff++; - if (--in_size <= 0) - { - p_ap_encode_obj->c1 = c1; - p_ap_encode_obj->c2 = c2; - p_ap_encode_obj->state64 = 2; - break; - } - c3 = *inbuff++; - in_size--; - } - p_ap_encode_obj->ct = ct; - return status; -} - -/* -** clear the left base64 encodes. -*/ -PRIVATE int -finish64(appledouble_encode_object* p_ap_encode_obj) -{ - int status; - - switch (p_ap_encode_obj->state64) - { - case 0: - break; - case 1: - status = output64chunk(p_ap_encode_obj, - p_ap_encode_obj->c1, - 0, - 0, - 2); - break; - case 2: - status = output64chunk(p_ap_encode_obj, - p_ap_encode_obj->c1, - p_ap_encode_obj->c2, - 0, - 1); - break; - } - status = write_stream(p_ap_encode_obj, CRLF, 2); - p_ap_encode_obj->state64 = 0; - p_ap_encode_obj->ct = 0; - return status; -} - -PRIVATE int output64chunk( - appledouble_encode_object* p_ap_encode_obj, - int c1, int c2, int c3, int pads) -{ - char tmpstr[32]; - char *p = tmpstr; - - *p++ = basis_64[c1>>2]; - *p++ = basis_64[((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)]; - if (pads == 2) - { - *p++ = '='; - *p++ = '='; - } - else if (pads) - { - *p++ = basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)]; - *p++ = '='; - } - else - { - *p++ = basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)]; - *p++ = basis_64[c3 & 0x3F]; - } - return write_stream(p_ap_encode_obj, - tmpstr, - p-tmpstr); -} - -#endif /* if define XP_MAC */ diff --git a/mozilla/lib/mailto/appledbl.c b/mozilla/lib/mailto/appledbl.c deleted file mode 100644 index 39c039ac5dc..00000000000 --- a/mozilla/lib/mailto/appledbl.c +++ /dev/null @@ -1,619 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* -* -* apple-double.c -* -------------- -* -* The codes to do apple double encoding/decoding. -* -* 02aug95 mym created. -* 27sep95 mym Add the XP_Mac to ensure the cross-platform. -* -*/ - -#include "msg.h" -#include "appledbl.h" -#include "ad_codes.h" - -#ifdef XP_MAC - -#pragma warn_unusedarg off -#include "m_cvstrm.h" - -#pragma cplusplus on -#include "InternetConfig.h" -#include "ufilemgr.h" -#include "BufferStream.h" -#include "Umimemap.h" -#include "uprefd.h" -#include "ulaunch.h" -void DecodingDone( appledouble_decode_object* p_ap_decode_obj ); - -OSErr my_FSSpecFromPathname(char* src_filename, FSSpec* fspec) -{ - /* don't resolve aliases... */ - return CFileMgr::FSSpecFromLocalUnixPath(src_filename, fspec, false); -} - -char* my_PathnameFromFSSpec(FSSpec* fspec) -{ - return CFileMgr::GetURLFromFileSpec(*fspec); -} - -/* returns true if the resource fork should be sent */ -XP_Bool isMacFile(char* filename) -{ - Boolean returnValue = FALSE; - - FSSpec fspec; - my_FSSpecFromPathname(filename, &fspec); - - returnValue = CFileMgr::FileHasResourceFork(fspec); - /* always use IC even if the pref isn't checked since we have no - other way to determine if the resource is significant */ - if ( returnValue ) - { - - CMimeMapper * mapper = CPrefs::sMimeTypes.FindMimeType(fspec); - if ( mapper ) - { - returnValue = mapper->GetFileFlags()& ICmap_resource_fork_mask; - return returnValue; - } - - // Get the Internet Config file mapping for this type - // and see if the existing resources are significant. - - // First, get the type/creator of the file. - FInfo fileInfo; - OSErr err = ::FSpGetFInfo(&fspec, &fileInfo); - if (err == noErr) - { - if ( fileInfo.fdType == 'APPL' ) - return TRUE; - ICMapEntry ent; - err = CInternetConfigInterface::GetInternetConfigFileMapping(fileInfo.fdType, - fileInfo.fdCreator, - fspec.name, &ent); - if (err == noErr) - { - // resource fork is significant if the resource fork mask bit is set - returnValue = (ent.flags & ICmap_resource_fork_mask) != 0; - } - } - } - - return (XP_Bool) returnValue; -} - -void DecodingDone( appledouble_decode_object* p_ap_decode_obj ) -{ - FSSpec fspec; - - fspec.vRefNum = p_ap_decode_obj->vRefNum; - fspec.parID = p_ap_decode_obj->dirId; - fspec.name[0] = XP_STRLEN(p_ap_decode_obj->fname); - XP_STRCPY((char*)fspec.name+1, p_ap_decode_obj->fname); - CMimeMapper * mapper = CPrefs::sMimeTypes.FindMimeType(fspec); - if( mapper && (mapper->GetLoadAction() == CMimeMapper::Launch ) ) - { - LFileBufferStream file( fspec ); - LaunchFile( &file ); - } -} - -#pragma cplusplus reset - -/* -* ap_encode_init -* -------------- -* -* Setup the encode envirment -*/ - -int ap_encode_init( - appledouble_encode_object *p_ap_encode_obj, - char* fname, - char* separator) -{ - FSSpec fspec; - - if (my_FSSpecFromPathname(fname, &fspec) != noErr ) - return -1; - - XP_MEMSET(p_ap_encode_obj, 0, sizeof(appledouble_encode_object)); - - /* - ** Fill out the source file inforamtion. - */ - XP_MEMCPY(p_ap_encode_obj->fname, fspec.name+1, *fspec.name); - p_ap_encode_obj->fname[*fspec.name] = '\0'; - p_ap_encode_obj->vRefNum = fspec.vRefNum; - p_ap_encode_obj->dirId = fspec.parID; - - p_ap_encode_obj->boundary = XP_STRDUP(separator); - return noErr; -} -/* -** ap_encode_next -** -------------- -** -** return : -** noErr : everything is ok -** errDone : when encoding is done. -** errors : otherwise. -*/ -int ap_encode_next( - appledouble_encode_object* p_ap_encode_obj, - char *to_buff, - int32 buff_size, - int32* real_size) -{ - int status; - - /* - ** install the out buff now. - */ - p_ap_encode_obj->outbuff = to_buff; - p_ap_encode_obj->s_outbuff = buff_size; - p_ap_encode_obj->pos_outbuff = 0; - - /* - ** first copy the outstandind data in the overflow buff to the out buffer. - */ - if (p_ap_encode_obj->s_overflow) - { - status = write_stream(p_ap_encode_obj, - p_ap_encode_obj->b_overflow, - p_ap_encode_obj->s_overflow); - if (status != noErr) - return status; - - p_ap_encode_obj->s_overflow = 0; - } - - /* - ** go the next processing stage based on the current state. - */ - switch (p_ap_encode_obj->state) - { - case kInit: - /* - ** We are in the starting position, fill out the header. - */ - status = fill_apple_mime_header(p_ap_encode_obj); - if (status != noErr) - break; /* some error happens */ - - p_ap_encode_obj->state = kDoingHeaderPortion; - status = ap_encode_header(p_ap_encode_obj, true); - /* it is the first time to calling */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneHeaderPortion; - } - else - { - break; /* we need more work on header portion. */ - } - - /* - ** we are done with the header, so let's go to the data port. - */ - p_ap_encode_obj->state = kDoingDataPortion; - status = ap_encode_data(p_ap_encode_obj, true); - /* it is first time call do data portion */ - - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoingHeaderPortion: - - status = ap_encode_header(p_ap_encode_obj, false); - /* continue with the header portion. */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneHeaderPortion; - } - else - { - break; /* we need more work on header portion. */ - } - - /* - ** start the data portion. - */ - p_ap_encode_obj->state = kDoingDataPortion; - status = ap_encode_data(p_ap_encode_obj, true); - /* it is the first time calling */ - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoingDataPortion: - - status = ap_encode_data(p_ap_encode_obj, false); - /* it is not the first time */ - - if (status == errDone) - { - p_ap_encode_obj->state = kDoneDataPortion; - status = noErr; - } - break; - - case kDoneDataPortion: -#if 0 - status = write_stream(p_ap_encode_obj, - "\n-----\n\n", - 8); - if (status == noErr) -#endif - status = errDone; /* we are really done. */ - - break; - } - - *real_size = p_ap_encode_obj->pos_outbuff; - return status; -} - -/* -** ap_encode_end -** ------------- -** -** clear the apple encoding. -*/ - -int ap_encode_end( - appledouble_encode_object *p_ap_encode_obj, - XP_Bool is_aborting) -{ - /* - ** clear up the apple doubler. - */ - if (p_ap_encode_obj == NULL) - return noErr; - - if (p_ap_encode_obj->fileId) /* close the file if it is open. */ - FSClose(p_ap_encode_obj->fileId); - - FREEIF(p_ap_encode_obj->boundary); /* the boundary string. */ - - return noErr; -} - -#endif /* the ifdef of XP_MAC */ - - -/* -** The initial of the apple double decoder. -** -** Set up the next output stream based on the input. -*/ -int ap_decode_init( - appledouble_decode_object* p_ap_decode_obj, - XP_Bool is_apple_single, - XP_Bool write_as_binhex, - void *closure) -{ - XP_MEMSET(p_ap_decode_obj, 0, sizeof(appledouble_decode_object)); - - /* presume first buff starts a line */ - p_ap_decode_obj->uu_starts_line = TRUE; - - if (write_as_binhex) - { - p_ap_decode_obj->write_as_binhex = TRUE; - p_ap_decode_obj->binhex_stream = (NET_StreamClass*)closure; - p_ap_decode_obj->data_size = 0; - } - else - { - p_ap_decode_obj->write_as_binhex = FALSE; - p_ap_decode_obj->binhex_stream = NULL; - - p_ap_decode_obj->context = (MWContext*)closure; - } - - p_ap_decode_obj->is_apple_single = is_apple_single; - - if (is_apple_single) - { - p_ap_decode_obj->encoding = kEncodeNone; - } - - return NOERR; -} - -static int ap_decode_state_machine(appledouble_decode_object* p_ap_decode_obj); -/* -* process the buffer -*/ -int ap_decode_next( - appledouble_decode_object* p_ap_decode_obj, - char *in_buff, - int32 buff_size) -{ - /* - ** install the buff to the decoder. - */ - p_ap_decode_obj->inbuff = in_buff; - p_ap_decode_obj->s_inbuff = buff_size; - p_ap_decode_obj->pos_inbuff = 0; - - /* - ** run off the decode state machine - */ - return ap_decode_state_machine(p_ap_decode_obj); -} - -PRIVATE int ap_decode_state_machine( - appledouble_decode_object* p_ap_decode_obj) -{ - int status = NOERR; - int32 size; - - switch (p_ap_decode_obj->state) - { - case kInit: - /* - ** Make sure that there are stuff in the buff - ** before we can parse the file head . - */ - if (p_ap_decode_obj->s_inbuff <=1 ) - return NOERR; - - if (p_ap_decode_obj->is_apple_single) - { - p_ap_decode_obj->state = kBeginHeaderPortion; - } - else - { - status = ap_seek_part_start(p_ap_decode_obj); - if (status != errDone) - return status; - - p_ap_decode_obj->state = kBeginParseHeader; - } - status = ap_decode_state_machine(p_ap_decode_obj); - break; - - case kBeginSeekBoundary: - p_ap_decode_obj->state = kSeekingBoundary; - status = ap_seek_to_boundary(p_ap_decode_obj, TRUE); - if (status == errDone) - { - p_ap_decode_obj->state = kBeginParseHeader; - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kSeekingBoundary: - status = ap_seek_to_boundary(p_ap_decode_obj, FALSE); - if (status == errDone) - { - p_ap_decode_obj->state = kBeginParseHeader; - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kBeginParseHeader: - p_ap_decode_obj->state = kParsingHeader; - status = ap_parse_header(p_ap_decode_obj, TRUE); - if (status == errDone) - { - if (p_ap_decode_obj->which_part == kDataPortion) - p_ap_decode_obj->state = kBeginDataPortion; - else if (p_ap_decode_obj->which_part == kHeaderPortion) - p_ap_decode_obj->state = kBeginHeaderPortion; - else - p_ap_decode_obj->state = kFinishing; - - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kParsingHeader: - status = ap_parse_header(p_ap_decode_obj, FALSE); - if (status == errDone) - { - if (p_ap_decode_obj->which_part == kDataPortion) - p_ap_decode_obj->state = kBeginDataPortion; - else if (p_ap_decode_obj->which_part == kHeaderPortion) - p_ap_decode_obj->state = kBeginHeaderPortion; - else - p_ap_decode_obj->state = kFinishing; - - status = ap_decode_state_machine(p_ap_decode_obj); - - } - break; - - case kBeginHeaderPortion: - p_ap_decode_obj->state = kProcessingHeaderPortion; - status = ap_decode_process_header(p_ap_decode_obj, TRUE); - if (status == errDone) - { - if (p_ap_decode_obj->is_apple_single) - p_ap_decode_obj->state = kBeginDataPortion; - else - p_ap_decode_obj->state = kBeginSeekBoundary; - - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - case kProcessingHeaderPortion: - status = ap_decode_process_header(p_ap_decode_obj, FALSE); - if (status == errDone) - { - if (p_ap_decode_obj->is_apple_single) - p_ap_decode_obj->state = kBeginDataPortion; - else - p_ap_decode_obj->state = kBeginSeekBoundary; - - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kBeginDataPortion: - p_ap_decode_obj->state = kProcessingDataPortion; - status = ap_decode_process_data(p_ap_decode_obj, TRUE); - if (status == errDone) - { - if (p_ap_decode_obj->is_apple_single) - p_ap_decode_obj->state = kFinishing; - else - p_ap_decode_obj->state = kBeginSeekBoundary; - - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kProcessingDataPortion: - status = ap_decode_process_data(p_ap_decode_obj, FALSE); - if (status == errDone) - { - if (p_ap_decode_obj->is_apple_single) - p_ap_decode_obj->state = kFinishing; - else - p_ap_decode_obj->state = kBeginSeekBoundary; - - status = ap_decode_state_machine(p_ap_decode_obj); - } - break; - - case kFinishing: - if (p_ap_decode_obj->write_as_binhex) - { - if (p_ap_decode_obj->tmpfd) - { - /* - ** It is time to append the data fork to bin hex encoder. - ** - ** The reason behind this dirt work is resource fork is the last - ** piece in the binhex, while it is the first piece in apple double. - */ - XP_FileSeek(p_ap_decode_obj->tmpfd, 0L, SEEK_SET); - - while (p_ap_decode_obj->data_size > 0) - { - char buff[1024]; - - size = MIN(1024, p_ap_decode_obj->data_size); - XP_FileRead(buff, size, p_ap_decode_obj->tmpfd); - - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - buff, - size); - - p_ap_decode_obj->data_size -= size; - } - } - - if (p_ap_decode_obj->data_size <= 0) - { - /* CALL put_block with size == 0 to close a part. */ - status = (*p_ap_decode_obj->binhex_stream->put_block) - (p_ap_decode_obj->binhex_stream->data_object, - NULL, - 0); - if (status != NOERR) - break; - - /* and now we are really done. */ - status = errDone; - } - else - status = NOERR; - } - break; - } - return (status == errEOB) ? NOERR : status; -} - -int ap_decode_end( - appledouble_decode_object* p_ap_decode_obj, - XP_Bool is_aborting) -{ - /* - ** clear up the apple doubler object. - */ - if (p_ap_decode_obj == NULL) - return NOERR; - - FREEIF(p_ap_decode_obj->boundary0); - -#ifdef XP_MAC - if (p_ap_decode_obj->fileId) - FSClose(p_ap_decode_obj->fileId); - if( p_ap_decode_obj->vRefNum ) - FlushVol(nil, p_ap_decode_obj->vRefNum ); -#endif - - if (p_ap_decode_obj->write_as_binhex) - { - /* - ** make sure close the binhex stream too. - */ - if (is_aborting) - { - (*p_ap_decode_obj->binhex_stream->abort) - (p_ap_decode_obj->binhex_stream->data_object, 0); - } - else - { - (*p_ap_decode_obj->binhex_stream->complete) - (p_ap_decode_obj->binhex_stream->data_object); - } - - if (p_ap_decode_obj->tmpfd) - XP_FileClose(p_ap_decode_obj->tmpfd); - - if (p_ap_decode_obj->tmpfname) - { - XP_FileRemove(p_ap_decode_obj->tmpfname, xpTemporary); - /* remove tmp file if we used it */ - XP_FREE(p_ap_decode_obj->tmpfname); /* and release the file name too. */ - } - } - else if (p_ap_decode_obj->fd) - { - XP_FileClose(p_ap_decode_obj->fd); - } -#ifdef XP_MAC - if( !is_aborting ) - DecodingDone( p_ap_decode_obj); -#endif - return NOERR; - -} diff --git a/mozilla/lib/mailto/appledbl.h b/mozilla/lib/mailto/appledbl.h deleted file mode 100644 index f9a9bacbb12..00000000000 --- a/mozilla/lib/mailto/appledbl.h +++ /dev/null @@ -1,236 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* -* AppleDouble.h -* ------------- -* -* The header file for a stream based apple single/double encodor/decodor. -* -* 2aug95 mym -* -*/ - - -#ifndef AppleDouble_h -#define AppleDouble_h - -#include "xp.h" -#include "xp_file.h" -#include "msg.h" - -#define NOERR 0 -#define errDone 1 - /* Done with current operation. */ -#define errEOB 2 - /* End of a buffer. */ -#define errEOP 3 - /* End of a Part. */ - - -#define errMemoryAlloc MK_OUT_OF_MEMORY -#define errDataCrupt -1 -#define errDiskFull MK_DISK_FULL -#define errFileOpen MK_UNABLE_TO_OPEN_TMP_FILE - -#define errVersion -1 -#define errFileWrite MK_MIME_ERROR_WRITING_FILE -#define errDecoding -1 - -#define errUsrCancel MK_INTERRUPTED -/* -** The envirment block data type. -*/ -enum -{ - kInit, - kDoingHeaderPortion, - kDoneHeaderPortion, - kDoingDataPortion, - kDoneDataPortion -}; - -typedef struct _appledouble_encode_object -{ - char fname[64]; - int32 dirId; - int16 vRefNum; - int16 fileId; /* the id for the open file (data/resource fork) */ - - int state; - int text_file_type; /* if the file has a text file type with it. */ - char *boundary; /* the boundary string. */ - - int status; /* the error code if anyerror happens. */ - char b_overflow[200]; - int s_overflow; - - int state64; /* the left over state of base64 enocding */ - int ct; /* the character count of base64 encoding */ - int c1, c2; /* the left of the last base64 encoding */ - - char *outbuff; /* the outbuff by the caller. */ - int s_outbuff; /* the size of the buffer. */ - int pos_outbuff; /* the offset in the current buffer. */ - -} appledouble_encode_object; - -/* The possible content transfer encodings */ - -enum -{ - kEncodeNone, - kEncodeQP, - kEncodeBase64, - kEncodeUU -}; - -enum -{ - kGeneralMine, - kAppleDouble, - kAppleSingle -}; - -enum -{ - kInline, - kDontCare -}; - -enum -{ - kHeaderPortion, - kDataPortion -}; - -/* the decode states. */ -enum -{ - kBeginParseHeader = 3, - kParsingHeader, - kBeginSeekBoundary, - kSeekingBoundary, - kBeginHeaderPortion, - kProcessingHeaderPortion, - kBeginDataPortion, - kProcessingDataPortion, - kFinishing -}; - -/* uuencode states */ -enum -{ - kWaitingForBegin = (int) 0, - kBegin, - kMainBody, - kEnd -}; - -typedef struct _appledouble_decode_object -{ - int is_binary; - int is_apple_single; /* if the object encoded is in apple single */ - int write_as_binhex; - - int messagetype; - char* boundary0; /* the boundary for the enclosure. */ - int deposition; /* the deposition. */ - int encoding; /* the encoding method. */ - int which_part; - - char fname[256]; -#ifdef XP_MAC - FSSpec* mSpec; /* the filespec to save the file to*/ - int16 vRefNum; - int32 dirId; - int16 fileId; /* the id for the open file (data/resource fork) */ -#endif - XP_File fd; /* the fd for data fork work. */ - - MWContext *context; - NET_StreamClass* binhex_stream; /* the stream to output as binhex output.*/ - - int state; - - int rksize; /* the resource fork size count. */ - int dksize; /* the data fork size count. */ - - int status; /* the error code if anyerror happens. */ - char b_leftover[256]; - int s_leftover; - - int encode; /* the encode type of the message. */ - int state64; /* the left over state of base64 enocding */ - int left; /* the character count of base64 encoding */ - int c[4]; /* the left of the last base64 encoding */ - int uu_starts_line; /* is decoder at the start of a line? (uuencode) */ - int uu_state; /* state w/r/t the uuencode body */ - int uu_bytes_written; /* bytes written from the current tuple (uuencode) */ - int uu_line_bytes; /* encoded bytes remaining in the current line (uuencode) */ - - char *inbuff; /* the outbuff by the caller. */ - int s_inbuff; /* the size of the buffer. */ - int pos_inbuff; /* the offset in the current buffer. */ - - - char* tmpfname; /* the temp file to hold the decode data fork */ - /* when doing the binhex exporting. */ - XP_File tmpfd; - int32 data_size; /* the size of the data in the tmp file. */ - -} appledouble_decode_object; - - -/* -** The protypes. -*/ - -XP_BEGIN_PROTOS - -int ap_encode_init(appledouble_encode_object *p_ap_encode_obj, - char* fname, - char* separator); - -int ap_encode_next(appledouble_encode_object* p_ap_encode_obj, - char *to_buff, - int32 buff_size, - int32* real_size); - -int ap_encode_end(appledouble_encode_object* p_ap_encode_obj, - XP_Bool is_aborting); - -int ap_decode_init(appledouble_decode_object* p_ap_decode_obj, - XP_Bool is_apple_single, - XP_Bool write_as_bin_hex, - void *closure); - -int ap_decode_next(appledouble_decode_object* p_ap_decode_obj, - char *in_buff, - int32 buff_size); - -int ap_decode_end(appledouble_decode_object* p_ap_decode_obj, - XP_Bool is_aborting); - -XP_END_PROTOS - -#endif diff --git a/mozilla/lib/mailto/bh_strm.c b/mozilla/lib/mailto/bh_strm.c deleted file mode 100644 index a12f4893eee..00000000000 --- a/mozilla/lib/mailto/bh_strm.c +++ /dev/null @@ -1,415 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -/* -** -** Binhex_stream.c -** --------------- -** -** The code for the binhex encode/decode stream. -** -** 20sep95 mym Created. -** -*/ - -#include "msg.h" -#include "appledbl.h" -#include "m_binhex.h" -#include "m_cvstrm.h" -#include "ad_codes.h" - -#ifdef XP_MAC -#pragma warn_unusedarg off -#endif /* XP_MAC */ - -/* -** ----------------------------------------------------------- -** -** The BinHex encode writer stream. -** -** ----------------------------------------------------------- -*/ -extern int MK_MIME_ERROR_WRITING_FILE; - -#define WORKING_BUFF_SIZE 8192 - -typedef struct -{ - binhex_encode_object bh_encode_obj; - - char *buff; /* the working buff */ - int32 s_buff; /* the size of workiong buff. */ - - XP_File fp; - char *fname; /* the filename for file holding the encoding */ - -} BinHexEncodeObject ; - - -/* -** Let's go "l" characters forward of the encoding for this write. -** Note: -** "s" is just a dummy paramter. -*/ -PRIVATE int net_BinHex_Encode_Write (void *dataObject, const char* s, int32 l) -{ - int status = 0; - BinHexEncodeObject * obj = (BinHexEncodeObject*)dataObject; - int32 count; - int32 size; - - do - { - size = obj->s_buff * 11 / 16; - size = MIN(l, size); - status = binhex_encode_next(&(obj->bh_encode_obj), - (char*)s, - size, - obj->buff, - obj->s_buff, - &count); - if (status == NOERR || status == errDone) - { - /* - * we get the encode data, so call the next stream to write it to the disk. - */ - if ((int) XP_FileWrite(obj->buff, count, obj->fp) != count ) - return errFileWrite; - } - - if (status < 0) /* abort */ - break; - - l -= size; - s += size; - - } while (l > 0); - - return status; -} - -PRIVATE unsigned int net_BinHex_Encode_Ready (NET_StreamClass *dataObject) -{ - return(MAX_WRITE_READY); /* always ready for writing */ -} - - -PRIVATE void net_BinHex_Encode_Complete (void *dataObject) -{ - int32 count, len = 0; - BinHexEncodeObject *obj = (BinHexEncodeObject *)dataObject; - - /* - ** push the close part. - */ - len = binhex_encode_next(&(obj->bh_encode_obj), - NULL, - 0, - obj->buff, - obj->s_buff, - &count); /* this help us generate the finishing */ - - len = XP_FileWrite(obj->buff, count, obj->fp); - - /* - ** time to do some dirty work -- fix the real file size. - ** (since we can only know by now) - */ - - binhex_reencode_head(&(obj->bh_encode_obj), - obj->buff, - obj->s_buff, - &count); /* get the head part encoded again */ - - XP_FileSeek(obj->fp, 0L, SEEK_SET); /* and override the previous dummy */ - XP_FileWrite(obj->buff, count, obj->fp); - - binhex_encode_end(&(obj->bh_encode_obj), FALSE); /* now we get a real ending */ - - if (obj->fp) - { - XP_FileClose(obj->fp); /* we are done with the target file */ - FREEIF(obj->fname); /* free the space for the file name */ - } - - FREEIF(obj->buff); /* and free the working buff. */ - XP_FREE(obj); -} - -PRIVATE void net_BinHex_Encode_Abort (void *dataObject, int status) -{ - BinHexEncodeObject * obj = (BinHexEncodeObject*)dataObject; - - binhex_encode_end(&(obj->bh_encode_obj), TRUE); /* it is an aborting exist... */ - - if (obj->fp) - { - XP_FileClose(obj->fp); /* we are aboring with the decoding */ - XP_FileRemove(obj->fname, xpURL); - /* remove the incomplete file. */ - FREEIF (obj->fname); /* free the space for the file name */ - } - - FREEIF(obj->buff); /* free the working buff. */ - XP_FREE(obj); -} - - -/* -** Will create a apple double encode stream: -** -** -> take the filename as the input source (it needs to be a mac file.) -** -> tkae a stream to take care of the writing to a temp file. -*/ -PUBLIC NET_StreamClass * -fe_MakeBinHexEncodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id, - char* dst_filename ) -{ - BinHexEncodeObject* obj; - NET_StreamClass* stream; - char* working_buff = NULL; - int bSize = WORKING_BUFF_SIZE; - - TRACEMSG(("Setting up apple encode stream. Have URL: %s\n", URL_s->address)); - - stream = XP_NEW(NET_StreamClass); - if(stream == NULL) - return(NULL); - - obj = XP_NEW(BinHexEncodeObject); - if (obj == NULL) - { - XP_FREE (stream); - return(NULL); - } - - while (!working_buff && (bSize >= 512)) - { - working_buff = (char *)XP_ALLOC(bSize); - if (!working_buff) - bSize /= 2; - } - if (working_buff == NULL) - { - XP_FREE (obj); - XP_FREE (stream); - return (NULL); - } - - stream->name = "BinHex Encode"; - stream->complete = (MKStreamCompleteFunc) net_BinHex_Encode_Complete; - stream->abort = (MKStreamAbortFunc) net_BinHex_Encode_Abort; - stream->put_block = (MKStreamWriteFunc) net_BinHex_Encode_Write; - stream->is_write_ready = (MKStreamWriteReadyFunc) net_BinHex_Encode_Ready; - stream->data_object = obj; /* document info object */ - stream->window_id = window_id; - - obj->fname = XP_STRDUP(dst_filename); - obj->fp = XP_FileOpen(obj->fname, xpURL, XP_FILE_TRUNCATE); - /* this file will hold all the encoded data */ - if (obj->fp == NULL) - { - XP_FREE(working_buff); /* if we can't open the target file, roll back then */ - if(obj->fname) XP_FREE(obj->fname); - XP_FREE (obj); - XP_FREE (stream); - return (NULL); - } - - obj->buff = working_buff; - obj->s_buff = WORKING_BUFF_SIZE; - - /* - ** setup all the need information on the apple double encoder. - */ - binhex_encode_init(&(obj->bh_encode_obj)); /* pass the file name of the source.*/ - - TRACEMSG(("Returning stream from NET_BinHexEncoder\n")); - - return stream; -} - -/* -** ----------------------------------------------------------- -** -** The BinHex decode writer stream. -** -** ----------------------------------------------------------- -*/ - -typedef struct BinHexDecodeObject -{ - binhex_decode_object bh_decode_obj; - - char* in_buff; - int32 bytes_in_buff; - -} BinHexDecodeObject; - - -PRIVATE int -net_BinHex_Decode_Write ( - void *dataObject, const char* s, int32 l) -{ - int status = NOERR; - BinHexDecodeObject * obj = (BinHexDecodeObject*)dataObject; - int32 size; - - if (obj->bytes_in_buff + l > 1024) - { - size = 1024 - obj->bytes_in_buff; - XP_MEMCPY(obj->in_buff+obj->bytes_in_buff, - s, - size); - s += size; - l -= size; - - status = binhex_decode_next(&(obj->bh_decode_obj), - obj->in_buff, - 1024); - if (status != NOERR) - return status; - - obj->bytes_in_buff = 0; - } - - if (l > 1024) - { - /* we are sure that obj->bytes_in_buff == 0 at this point. */ - status = binhex_decode_next(&(obj->bh_decode_obj), - s, - l); - } - else - { - XP_MEMCPY(obj->in_buff+obj->bytes_in_buff, - s, - l); - obj->bytes_in_buff += l; - } - return status; -} - -/* - * is the stream ready for writeing? - */ -PRIVATE unsigned int net_BinHex_Decode_Ready (void *stream) -{ - return(MAX_WRITE_READY); /* always ready for writing */ -} - - -PRIVATE void net_BinHex_Decode_Complete (void *dataObject) -{ - BinHexDecodeObject *obj = (BinHexDecodeObject *) dataObject; - - if (obj->bytes_in_buff) - { - /* do the last calls. */ - binhex_decode_next(&(obj->bh_decode_obj), - (char *)obj->in_buff, - obj->bytes_in_buff); - obj->bytes_in_buff = 0; - } - - binhex_decode_end(&(obj->bh_decode_obj), FALSE); /* it is a normal clean up classes. */ - - if (obj->in_buff) - XP_FREE(obj->in_buff); - - XP_FREE(obj); -} - -PRIVATE void net_BinHex_Decode_Abort (void *dataObject, int status) -{ - BinHexDecodeObject *obj = (BinHexDecodeObject *)dataObject; - - binhex_decode_end(&(obj->bh_decode_obj), TRUE); /* it is an abort. */ - - if (obj->in_buff) - XP_FREE(obj->in_buff); - - XP_FREE(obj); -} - -/* -** Create the bin hex decode stream. -** -*/ -PUBLIC NET_StreamClass * -fe_MakeBinHexDecodeStream (int format_out, - void *data_obj, - URL_Struct *URL_s, - MWContext *window_id ) -{ - BinHexDecodeObject* obj; - NET_StreamClass* stream; - - TRACEMSG(("Setting up bin hex decode stream. Have URL: %s\n", URL_s->address)); - - stream = XP_NEW(NET_StreamClass); - if(stream == NULL) - return(NULL); - - obj = XP_NEW(BinHexDecodeObject); - if (obj == NULL) - { - XP_FREE(stream); - return(NULL); - } - - if ((obj->in_buff = (char *)XP_ALLOC(1024)) == NULL) - { - XP_FREE(obj); - XP_FREE(stream); - return (NULL); - } - - stream->name = "BinHex Decoder"; - stream->complete = (MKStreamCompleteFunc) net_BinHex_Decode_Complete; - stream->abort = (MKStreamAbortFunc) net_BinHex_Decode_Abort; - stream->put_block = (MKStreamWriteFunc) net_BinHex_Decode_Write; - stream->is_write_ready = (MKStreamWriteReadyFunc) net_BinHex_Decode_Ready; - stream->data_object = obj; - stream->window_id = window_id; - - /* - ** Some initial to the object. - */ - obj->bytes_in_buff = 0; - - /* - ** setup all the need information on the apple double encoder. - */ - binhex_decode_init(&(obj->bh_decode_obj),window_id); - #ifdef XP_MAC - obj->bh_decode_obj.mSpec = (FSSpec*)( URL_s->fe_data ); - #endif - TRACEMSG(("Returning stream from NET_BinHexDecode\n")); - - return stream; -} - - diff --git a/mozilla/lib/mailto/bytearr.cpp b/mozilla/lib/mailto/bytearr.cpp deleted file mode 100644 index 0505e288e11..00000000000 --- a/mozilla/lib/mailto/bytearr.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "xp.h" -#include "bytearr.h" - -#ifdef XP_WIN16 -#define SIZE_T_MAX 0xFF80 // Maximum allocation size -#define MAX_ARR_ELEMS SIZE_T_MAX/sizeof(BYTE) -#endif - - -XPByteArray::XPByteArray() -{ - m_nSize = 0; - m_nMaxSize = 0; - m_pData = NULL; -} - -XPByteArray::~XPByteArray() -{ - SetSize(0); -} - -///////////////////////////////////////////////////////////////////////////// - -int XPByteArray::GetSize() const -{ - return m_nSize; -} - -XP_Bool XPByteArray::SetSize(int nSize) -{ - XP_ASSERT(nSize >= 0); - -#ifdef MAX_ARR_ELEMS - if (nSize > MAX_ARR_ELEMS); - { - XP_ASSERT(nSize <= MAX_ARR_ELEMS); // Will fail - return FALSE; - } -#endif - - if (nSize == 0) - { - // Remove all elements - XP_FREE(m_pData); - m_nSize = 0; - m_nMaxSize = 0; - m_pData = NULL; - } - else if (m_pData == NULL) - { - // Create a new array - m_nMaxSize = MAX(8, nSize); - m_pData = (BYTE *)XP_CALLOC(1, m_nMaxSize * sizeof(BYTE)); - if (m_pData) - m_nSize = nSize; - else - m_nSize = m_nMaxSize = 0; - } - else if (nSize <= m_nMaxSize) - { - // The new size is within the current maximum size, make sure new - // elements are to initialized to zero - if (nSize > m_nSize) - XP_MEMSET(&m_pData[m_nSize], 0, (nSize - m_nSize) * sizeof(BYTE)); - - m_nSize = nSize; - } - else - { - // The array needs to grow, figure out how much - int nGrowBy, nMaxSize; - nGrowBy = MIN(1024, MAX(8, m_nSize / 8)); - nMaxSize = MAX(nSize, m_nMaxSize + nGrowBy); -#ifdef MAX_ARR_ELEMS - nMaxSize = MIN(MAX_ARR_ELEMS, nMaxSize); -#endif - - BYTE *pNewData = (BYTE *)XP_ALLOC(nMaxSize * sizeof(BYTE)); - if (pNewData) - { - // Copy the data from the old array to the new one - XP_MEMCPY(pNewData, m_pData, m_nSize * sizeof(BYTE)); - - // Zero out the remaining elements - XP_MEMSET(&pNewData[m_nSize], 0, (nSize - m_nSize) * sizeof(BYTE)); - m_nSize = nSize; - m_nMaxSize = nMaxSize; - - // Free the old array - XP_FREE(m_pData); - m_pData = pNewData; - } - } - - return nSize == m_nSize; -} - -///////////////////////////////////////////////////////////////////////////// - -BYTE &XPByteArray::ElementAt(int nIndex) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -BYTE XPByteArray::GetAt(int nIndex) const -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -void XPByteArray::SetAt(int nIndex, BYTE newElement) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - m_pData[nIndex] = newElement; -} - -///////////////////////////////////////////////////////////////////////////// - -int XPByteArray::Add(BYTE newElement) -{ - int nIndex = m_nSize; - -#ifdef MAX_ARR_ELEMS - if (nIndex >= MAX_ARR_ELEMS) - return -1; -#endif - - SetAtGrow(nIndex, newElement); - return nIndex; -} - -void XPByteArray::InsertAt(int nIndex, BYTE newElement, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nCount > 0); - - if (nIndex >= m_nSize) - { - // If the new element is after the end of the array, grow the array - SetSize(nIndex + nCount); - } - else - { - // The element is being insert inside the array - int nOldSize = m_nSize; - SetSize(m_nSize + nCount); - - // Move the data after the insertion point - XP_MEMMOVE(&m_pData[nIndex + nCount], &m_pData[nIndex], - (nOldSize - nIndex) * sizeof(BYTE)); - } - - // Insert the new elements - XP_ASSERT(nIndex + nCount <= m_nSize); - while (nCount--) - m_pData[nIndex++] = newElement; -} - -void XPByteArray::InsertAt(int nStartIndex, const XPByteArray *pNewArray) -{ - XP_ASSERT(nStartIndex >= 0); - XP_ASSERT(pNewArray != NULL); - - if (pNewArray->GetSize() > 0) - { - InsertAt(nStartIndex, pNewArray->GetAt(0), pNewArray->GetSize()); - for (int i = 1; i < pNewArray->GetSize(); i++) - m_pData[nStartIndex + i] = pNewArray->GetAt(i); - } -} - -void XPByteArray::RemoveAll() -{ - SetSize(0); -} - -void XPByteArray::RemoveAt(int nIndex, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nIndex + nCount <= m_nSize); - - if (nCount > 0) - { - // Make sure not to overstep the end of the array - int nMoveCount = m_nSize - (nIndex + nCount); - if (nCount && nMoveCount >= 0) - XP_MEMMOVE(&m_pData[nIndex], &m_pData[nIndex + nCount], - nMoveCount * sizeof(BYTE)); - - m_nSize -= nCount; - } -} - -void XPByteArray::SetAtGrow(int nIndex, BYTE newElement) -{ - XP_ASSERT(nIndex >= 0); - - if (nIndex >= m_nSize) - SetSize(nIndex+1); - m_pData[nIndex] = newElement; -} diff --git a/mozilla/lib/mailto/bytearr.h b/mozilla/lib/mailto/bytearr.h deleted file mode 100644 index 90cf00f1eca..00000000000 --- a/mozilla/lib/mailto/bytearr.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _ByteArray_H_ -#define _ByteArray_H_ - -#if !defined(_WINDOWS) && !defined(XP_OS2) -typedef uint8 BYTE; -#endif - -class XPByteArray -{ -public: - // Construction/destruction - XPByteArray(); - ~XPByteArray(); - - // State/attribute member functions - int GetSize() const; - XP_Bool SetSize(int nNewSize); - - // Accessor member functions - BYTE &ElementAt(int nIndex); - BYTE GetAt(int nIndex) const; - void SetAt(int nIndex, BYTE newElement); - - // Insertion/deletion member functions - int Add(BYTE newElement); - void InsertAt(int nIndex, BYTE newElement, int nCount = 1); - void InsertAt(int nStartIndex, const XPByteArray *pNewArray); - void RemoveAll(); - void RemoveAt(int nIndex, int nCount = 1); - void SetAtGrow(int nIndex, BYTE newElement); - - // Overloaded operators - BYTE operator[](int nIndex) const { return GetAt(nIndex); } - BYTE &operator[](int nIndex) { return ElementAt(nIndex); } - - // Use the result carefully, it is only valid until another function called on the array - BYTE *GetArray(void) {return((BYTE *)m_pData);} - -protected: - // Member data - int m_nSize; - int m_nMaxSize; - BYTE* m_pData; -}; - -#endif diff --git a/mozilla/lib/mailto/dwordarr.cpp b/mozilla/lib/mailto/dwordarr.cpp deleted file mode 100644 index 832d96139be..00000000000 --- a/mozilla/lib/mailto/dwordarr.cpp +++ /dev/null @@ -1,285 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp.h" -#include "dwordarr.h" -#include "xp_qsort.h" - -#ifdef XP_WIN16 -#define SIZE_T_MAX 0xFF80 // Maximum allocation size -#define MAX_ARR_ELEMS SIZE_T_MAX/sizeof(uint32) -#endif - - -XPDWordArray::XPDWordArray() -{ - m_nSize = 0; - m_nMaxSize = 0; - m_nGrowBy = 0; - m_pData = NULL; -} - -XPDWordArray::~XPDWordArray() -{ - SetSize(0); -} - -///////////////////////////////////////////////////////////////////////////// - -int XPDWordArray::GetSize() const -{ - return m_nSize; -} - -XP_Bool XPDWordArray::SetSize(int nSize, int nGrowBy) -{ - XP_ASSERT(nSize >= 0); - - if (nGrowBy >= 0) - m_nGrowBy = nGrowBy; - -#ifdef MAX_ARR_ELEMS - if (nSize > MAX_ARR_ELEMS); - { - XP_ASSERT(nSize <= MAX_ARR_ELEMS); // Will fail - return FALSE; - } -#endif - - if (nSize == 0) - { - // Remove all elements - XP_FREE(m_pData); - m_nSize = 0; - m_nMaxSize = 0; - m_pData = NULL; - } - else if (m_pData == NULL) - { - // Create a new array - m_nMaxSize = MAX(8, nSize); - m_pData = (uint32 *)XP_CALLOC(1, m_nMaxSize * sizeof(uint32)); - if (m_pData) - m_nSize = nSize; - else - m_nSize = m_nMaxSize = 0; - } - else if (nSize <= m_nMaxSize) - { - // The new size is within the current maximum size, make sure new - // elements are to initialized to zero - if (nSize > m_nSize) - XP_MEMSET(&m_pData[m_nSize], 0, (nSize - m_nSize) * sizeof(uint32)); - - m_nSize = nSize; - } - else - { - // The array needs to grow, figure out how much - int nMaxSize; - nGrowBy = MAX(m_nGrowBy, MIN(1024, MAX(8, m_nSize / 8))); - nMaxSize = MAX(nSize, m_nMaxSize + nGrowBy); -#ifdef MAX_ARR_ELEMS - nMaxSize = MIN(MAX_ARR_ELEMS, nMaxSize); -#endif - - uint32 *pNewData = (uint32 *)XP_ALLOC(nMaxSize * sizeof(uint32)); - if (pNewData) - { - // Copy the data from the old array to the new one - XP_MEMCPY(pNewData, m_pData, m_nSize * sizeof(uint32)); - - // Zero out the remaining elements - XP_MEMSET(&pNewData[m_nSize], 0, (nSize - m_nSize) * sizeof(uint32)); - m_nSize = nSize; - m_nMaxSize = nMaxSize; - - // Free the old array - XP_FREE(m_pData); - m_pData = pNewData; - } - } - - return nSize == m_nSize; -} - -///////////////////////////////////////////////////////////////////////////// - -uint32 &XPDWordArray::ElementAt(int nIndex) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -uint32 XPDWordArray::GetAt(int nIndex) const -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -uint32 *XPDWordArray::GetData() -{ - return m_pData; -} - -void XPDWordArray::SetAt(int nIndex, uint32 newElement) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - m_pData[nIndex] = newElement; -} - -///////////////////////////////////////////////////////////////////////////// - -int XPDWordArray::Add(uint32 newElement) -{ - int nIndex = m_nSize; - -#ifdef MAX_ARR_ELEMS - if (nIndex >= MAX_ARR_ELEMS) - return -1; -#endif - - SetAtGrow(nIndex, newElement); - return nIndex; -} - -uint XPDWordArray::Add(uint32 *elementPtr, uint numElements) -{ - if (SetSize(m_nSize + numElements)) - XP_MEMCPY(m_pData + m_nSize, elementPtr, numElements * sizeof(uint32)); - - return m_nSize; -} - -uint32 *XPDWordArray::CloneData() -{ - uint32 *copyOfData = (uint32 *)XP_ALLOC(m_nSize * sizeof(uint32)); - if (copyOfData) - XP_MEMCPY(copyOfData, m_pData, m_nSize * sizeof(uint32)); - - return copyOfData; -} - -void XPDWordArray::InsertAt(int nIndex, uint32 newElement, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nCount > 0); - - if (nIndex >= m_nSize) - { - // If the new element is after the end of the array, grow the array - SetSize(nIndex + nCount); - } - else - { - // The element is being insert inside the array - int nOldSize = m_nSize; - SetSize(m_nSize + nCount); - - // Move the data after the insertion point - XP_MEMMOVE(&m_pData[nIndex + nCount], &m_pData[nIndex], - (nOldSize - nIndex) * sizeof(uint32)); - } - - // Insert the new elements - XP_ASSERT(nIndex + nCount <= m_nSize); - while (nCount--) - m_pData[nIndex++] = newElement; -} - -void XPDWordArray::InsertAt(int nStartIndex, const XPDWordArray *pNewArray) -{ - XP_ASSERT(nStartIndex >= 0); - XP_ASSERT(pNewArray != NULL); - - if (pNewArray->GetSize() > 0) - { - InsertAt(nStartIndex, pNewArray->GetAt(0), pNewArray->GetSize()); - for (int i = 1; i < pNewArray->GetSize(); i++) - m_pData[nStartIndex + i] = pNewArray->GetAt(i); - } -} - -void XPDWordArray::RemoveAll() -{ - SetSize(0); -} - -void XPDWordArray::RemoveAt(int nIndex, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nIndex + nCount <= m_nSize); - - if (nCount > 0) - { - // Make sure not to overstep the end of the array - int nMoveCount = m_nSize - (nIndex + nCount); - if (nCount && nMoveCount) - XP_MEMMOVE(&m_pData[nIndex], &m_pData[nIndex + nCount], - nMoveCount * sizeof(uint32)); - - m_nSize -= nCount; - } -} - -void XPDWordArray::SetAtGrow(int nIndex, uint32 newElement) -{ - XP_ASSERT(nIndex >= 0); - - if (nIndex >= m_nSize) - SetSize(nIndex+1); - m_pData[nIndex] = newElement; -} - -///////////////////////////////////////////////////////////////////////////// - -void XPDWordArray::CopyArray(XPDWordArray *oldA) -{ - CopyArray(*oldA); -} - -void XPDWordArray::CopyArray(XPDWordArray &oldA) -{ - if (m_pData) - XP_FREE(m_pData); - m_nSize = oldA.m_nSize; - m_nMaxSize = oldA.m_nMaxSize; - m_pData = (uint32 *)XP_ALLOC(m_nSize * sizeof(uint32)); - if (m_pData) - XP_MEMCPY(m_pData, oldA.m_pData, m_nSize * sizeof(uint32)); -} - -///////////////////////////////////////////////////////////////////////////// - -static int CompareDWord (const void *v1, const void *v2) -{ - // QuickSort callback to compare array values - uint32 i1 = *(uint32 *)v1; - uint32 i2 = *(uint32 *)v2; - return i1 - i2; -} - -void XPDWordArray::QuickSort (int (*compare) (const void *elem1, const void *elem2)) -{ - if (m_nSize > 1) - XP_QSORT (m_pData, m_nSize, sizeof(void*), compare ? compare : CompareDWord); -} diff --git a/mozilla/lib/mailto/dwordarr.h b/mozilla/lib/mailto/dwordarr.h deleted file mode 100644 index 2b16514d114..00000000000 --- a/mozilla/lib/mailto/dwordarr.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef _DWordArray_H_ -#define _DWordArray_H_ - -class XPDWordArray -{ -public: - // Construction/destruction - XPDWordArray(); - ~XPDWordArray(); - - // State/attribute member functions - int GetSize() const; - XP_Bool SetSize(int nNewSize, int nGrowBy = -1); - - // Accessor member functions - uint32 &ElementAt(int nIndex); - uint32 GetAt(int nIndex) const; - uint32 *GetData(); - void SetAt(int nIndex, uint32 newElement); - - // Insertion/deletion member functions - int Add(uint32 newElement); - uint Add(uint32 *elementPtr, uint numElements); - void InsertAt(int nIndex, uint32 newElement, int nCount = 1); - void InsertAt(int nStartIndex, const XPDWordArray *pNewArray); - void RemoveAll(); - void RemoveAt(int nIndex, int nCount = 1); - void SetAtGrow(int nIndex, uint32 newElement); - - // Sorting member functions - void QuickSort(int (*compare) (const void *elem1, const void *elem2) = NULL); - - // Overloaded operators - uint32 operator[](int nIndex) const { return GetAt(nIndex); } - uint32 &operator[](int nIndex) { return ElementAt(nIndex); } - - // Miscellaneous member functions - uint32 *CloneData(); - void CopyArray(XPDWordArray *oldA); - void CopyArray(XPDWordArray &oldA); - -protected: - // Member data - int m_nSize; - int m_nMaxSize; - int m_nGrowBy; - uint32* m_pData; -}; - - -#endif // _DWordArray_H_ diff --git a/mozilla/lib/mailto/errcode.h b/mozilla/lib/mailto/errcode.h deleted file mode 100644 index f0fb0306f09..00000000000 --- a/mozilla/lib/mailto/errcode.h +++ /dev/null @@ -1,122 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// errcode.h - -#ifndef _ERRCODE_H_ -#define _ERRCODE_H_ - - -/* -** Error classifications (Database, RPC, Network, etc) -** -** Each error classification defines a range of up to 0xffff error codes. -** -** The top word of an msgERR is the classification, the low byte is an error -** offset within that classification. -** -** For diagnostic purposes, each classification can register it's strings for GetErrorString -** support. These are NOT nationalizable strings; the string tables are autogenerated from the -** MsgError() macro machinery, not stored in .rc files. They're intended for use in debugging, -** logfiles, etc. -*/ - -typedef uint32 MsgERR; -typedef MsgERR msgErrorClass; - -#define msgErrorDb 0xFF000000 /* DB errors (generic) */ -#define msgErrorVw 0xF8000000 /* View layer */ -#define msgErrorMisc 0xF0000000 /* Random miscellaneous errors. */ -#define msgErrorOk 0x00000000 - -/* -** GetErrorClass(msgERR) -** -** Returns classification range for an error. -** -** For example, -** if (GetErrorClass(err) == msgErrorRp) -** Alert("Problem chatting with forum service."); -** -*/ -#define GetErrorClass(err) ((err) & ((MsgERR) 0xFFFF0000)) - -/* -** RegisterErrorClass (msgErrorClass, pFn) -** -** Register a function to return error-strings in the given class. -** -** (Note: this could be best done by automatically building a linked list of -** diagnostic routines/classes - by simply using a C++ class for error -** classes, and a static constructor to link each class into the queue. -** However, we've had problems with static constructors within DLL's -** that use MFC and DLL's on NT - so we're avoiding them for now.) -** -** See dberror.cpp (in the database) for an example of an auto-generated diagnostic -** map. The error-code to string mapping function implementation can be generated -** automatically, but the client must register the function manually. -** -** There is no limit on how many ranges a given diagnostic function might handle. -** The function must be registered once for each class, of course. -** -** Normally there will be a function for every specific .h that defines error codes -** (whether that .h defines one or more classes of error codes). For example, -** dberror.h defines 3 error class ranges, so the DB registers one diagnostic function -** that handles those 3 classes accordingly. -** -*/ -//typedef const char * (msgCALLBACK *msgErrorDiagnosticCallback) (msgERR); - -//extern void RegisterErrorClass (msgErrorClass, msgErrorDiagnosticCallback pFn); - -/* -** NOTE: remainder of this file may be multiply-included -** place all one-shot definitions above this point -*/ -#endif // __msgERROR_H__ - - -/* -** Within an error-class range, the errors are allocated/declared independently. -** See, for example, dberror.h, rperror.h, ecerror.h, etc. -*/ - -/* msgError: wrapper-macro for an error code definition */ -#ifndef MsgError -#define MsgError(errorclass, name, offset) const MsgERR name = (MsgERR) (errorclass + offset); -#endif - -/* msgErrorDiagnostic: causes wrapper-macro to generate a diagnostic string */ -#ifndef MsgErrorDiagnostic -#define MsgErrorDiagnostic(errorclass, name, offset) case ((errorclass)+(offset)): return #name; -#endif - -/* -** msgSUCCESS - universal no-error indication (zero). -** '! msgERR' is guaranteed to mean success. -*/ -#ifndef MsgErrorBasic -#define MsgErrorBasic -MsgError (msgErrorOk, eSUCCESS, 0x0000) /* 0 Success */ -MsgError (msgErrorMisc, eUNKNOWN, 0x0001) // 1 Something weird - // happened. -#endif - diff --git a/mozilla/lib/mailto/error.h b/mozilla/lib/mailto/error.h deleted file mode 100644 index 6a5383dcb1b..00000000000 --- a/mozilla/lib/mailto/error.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef DBERROR_H -#define DBERROR_H - -#include "errcode.h" - -/* General errors */ -MsgError (msgErrorDb, eFAILURE, 0xFFFF) /* -1 Unqualified DB failure */ -MsgError (msgErrorDb, eBAD_PARAMETER, 0xFFFE) /* -2 Null pointer, empty string, etc. */ -MsgError (msgErrorDb, eMORE, 0xFFFD) /* -3 More work to do. */ -MsgError (msgErrorDb, eNYI, 0xFFFC) /* -4 Not yet implemented */ -MsgError (msgErrorDb, eEXCEPTION, 0xFFFB) /* -5 An unexpected exception occurred */ -MsgError (msgErrorDb, eBAD_VIEW_INTF, 0xFFFA) /* -6 COM intf to view layer is out of sync */ -MsgError (msgErrorDb, eBAD_DB_INTF, 0xFFF9) /* -7 COM intf to db is out of sync */ -MsgError (msgErrorDb, eID_NOT_FOUND, 0xFFF8) /* -8 Message id not found */ -MsgError (msgErrorDb, eDBEndOfList, 0xFFF7) /* -9 iterator reached end of db */ -MsgError (msgErrorDb, eBAD_URL, 0xFFF5) /* -11 Unable to parse URL */ -/* NewsRC errors */ -MsgError (msgErrorDb, eNewsRCError, 0xFFF4) /* -10 General news rc error */ -/* News errors */ -MsgError (msgErrorDb, eXOverParseError, 0xFFF3) /* -13 Error parsing XOver data */ -/* Internal db errors */ -MsgError (msgErrorDb, eDBExistsNot, 0xFFF2) /* -14 db doesn't exist */ -MsgError (msgErrorDb, eDBNotOpen, 0xFFF1) /* -15 our db is not open (or ptr NULL) */ -MsgError (msgErrorDb, eErrorOpeningDB, 0xFFF0) /* -16 Error opening internal db */ -MsgError (msgErrorDb, eOldSummaryFile, 0xFFE0) /* -32 Attempt to oepn old summary file format */ -MsgError (msgErrorDb, eNullView, 0xFFE1) /* -31 View Null */ -MsgError (msgErrorDb, eNotThread, 0xFFE2) /* -30 operation requires a thread */ -MsgError (msgErrorDb, eNoSummaryFile, 0xFFE3) /* -31 summary file was gone */ -MsgError (msgErrorDb, eBuildViewInBackground, 0xFFE4) /* -32 db is huge - build view in background */ -MsgError (msgErrorDb, eCorruptDB, 0xFFE5) /* -33 db is corrupt - throw it away */ -/* Platform System Errors */ - -MsgError (msgErrorDb, eOUT_OF_MEMORY, 0xFF7F) /* -129 Out of memory for buffer or file-level objects */ - -/* file errors */ -MsgError (msgErrorDb, eWRITE_ERROR, 0xFFC0) /* -64 Error writing to disk */ -#endif diff --git a/mozilla/lib/mailto/m_binhex.c b/mozilla/lib/mailto/m_binhex.c deleted file mode 100644 index 0337166e747..00000000000 --- a/mozilla/lib/mailto/m_binhex.c +++ /dev/null @@ -1,1045 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* -* -* Mac_BinHex.c -* ------------ -* -* The decode and encode for BinHex 4.0 -* -* 09sep95 mym Created -* 18sep95 mym Added the functions to do encoding from -* the input stream instead of file. -*/ - -#include "msg.h" -#include "appledbl.h" -#include "m_binhex.h" -#include "ad_codes.h" -/* for XP_GetString() */ -#include "xpgetstr.h" - -#ifdef XP_MAC -#include <StandardFile.h> -#pragma warn_unusedarg off -#endif - -extern int MK_MSG_SAVE_DECODED_AS; - -extern int MK_UNABLE_TO_OPEN_TMP_FILE; -extern int MK_MIME_ERROR_WRITING_FILE; -extern int MK_MIME_DATA_CORRUPTED; - -static char BinHexTable[64] = -{ - 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, - 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x30, 0x31, 0x32, - 0x33, 0x34, 0x35, 0x36, 0x38, 0x39, 0x40, 0x41, - 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, - 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x50, 0x51, 0x52, - 0x53, 0x54, 0x55, 0x56, 0x58, 0x59, 0x5a, 0x5b, - 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x68, - 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x70, 0x71, 0x72 -}; - -/* - * The encode for bin hex format. - */ - -PRIVATE int binhex_fill_data( - binhex_encode_object* p_bh_encode_obj, char c) -{ - int i; - - if (p_bh_encode_obj->pos_outbuff >= p_bh_encode_obj->s_outbuff) - { - p_bh_encode_obj->overflow[p_bh_encode_obj->s_overflow++] = c; - } - else - { - p_bh_encode_obj->outbuff[p_bh_encode_obj->pos_outbuff++] =c; - } - - if (++p_bh_encode_obj->line_length == 64) - { - /* - ** Incase the new line is 2 character. LRCR - */ - for(i = 1; i <= p_bh_encode_obj->newline[0]; i++) - binhex_fill_data(p_bh_encode_obj, p_bh_encode_obj->newline[i]); - - p_bh_encode_obj->line_length = 0; - } - - return p_bh_encode_obj->s_overflow ? errEOB : NOERR; -} - -/************************************************************************ - * EncodeDataChar - encode an 8-bit data char into a six-bit buffer - * returns the number of valid encoded characters generated - ************************************************************************/ -PRIVATE int binhex_encode_data_char( - binhex_encode_object *p_bh_encode_obj, - unsigned char c) -{ - int status = 0; - - switch (p_bh_encode_obj->state86++) - { - case 0: - status = binhex_fill_data(p_bh_encode_obj, - BinHexTable[(c>>2)&0x3f]); - p_bh_encode_obj->saved_bits = (c&0x3)<<4; - break; - case 1: - status = binhex_fill_data(p_bh_encode_obj, - BinHexTable[p_bh_encode_obj->saved_bits | ((c>>4)&0xf)]); - p_bh_encode_obj->saved_bits = (c&0xf)<<2; - break; - case 2: - status = binhex_fill_data(p_bh_encode_obj, - BinHexTable[p_bh_encode_obj->saved_bits | ((c>>6)&0x3)]); - if (status != NOERR) - break; - - status = binhex_fill_data(p_bh_encode_obj, - BinHexTable[c&0x3f]); - p_bh_encode_obj->state86 = 0; - break; - } - return status; -} - -#define BYTEMASK 0xff -#define BYTEBIT 0x100 -#define WORDMASK 0xffff -#define WORDBIT 0x10000 -#define CRCCONSTANT 0x1021 - -#define WOW { \ - c <<= 1; \ - if ((temp <<= 1) & WORDBIT) \ - temp = (temp & WORDMASK) ^ CRCCONSTANT; \ - temp ^= (c >> 8); \ - c &= BYTEMASK; \ - } - -PRIVATE void binhex_comp_q_crc_out( - binhex_encode_object *p_bh_encode_obj, uint16 c) -{ - register uint32 temp = p_bh_encode_obj->CRC; - - WOW; - WOW; - WOW; - WOW; - WOW; - WOW; - WOW; - WOW; - p_bh_encode_obj->CRC = temp; -} - -PRIVATE int binhex_encode_buff( - binhex_encode_object *p_bh_encode_obj, - unsigned char* data, - int size) -{ - int i, status = 0; - unsigned char dc; - - for (i = 0; i < size; i++) - { - dc = *data++; - - status = binhex_encode_data_char(p_bh_encode_obj, dc); - if ((char)dc == (char)0x90) - status = binhex_encode_data_char(p_bh_encode_obj, 0); - - if (status != NOERR) - break; - - binhex_comp_q_crc_out(p_bh_encode_obj, dc); /* and compute the CRC too */ - } - return status; -} - -PRIVATE int binhex_encode_end_a_part( - binhex_encode_object* p_bh_encode_obj) -{ - int status; - uint16 tempCrc; - - /* - ** write the CRC to the encode. - */ - binhex_comp_q_crc_out(p_bh_encode_obj, 0); - binhex_comp_q_crc_out(p_bh_encode_obj, 0); - tempCrc = (uint16)(p_bh_encode_obj->CRC & 0xffff); - tempCrc = htons(tempCrc); - status = binhex_encode_buff(p_bh_encode_obj, - (unsigned char*)&tempCrc, - sizeof(uint16)); - p_bh_encode_obj->CRC = 0; - return status; -} - -PRIVATE int binhex_encode_finishing( - binhex_encode_object *p_bh_encode_obj) -{ - int i, status = 0; - - if (p_bh_encode_obj->state86) - status = binhex_encode_buff(p_bh_encode_obj, (unsigned char*)&status, 1); - - /* - ** The close token. - */ - status = binhex_fill_data(p_bh_encode_obj, ':'); - - for (i=1; i <= p_bh_encode_obj->newline[0]; i++) - status = binhex_fill_data(p_bh_encode_obj, - p_bh_encode_obj->newline[i]); - - return errDone; -} - - -int binhex_encode_init(binhex_encode_object *p_bh_encode_obj) -{ - /* - ** init all the status. - */ - XP_MEMSET(p_bh_encode_obj, 0, sizeof(binhex_encode_object)); - - p_bh_encode_obj->line_length = 1; - - p_bh_encode_obj->newline[0] = 2; - p_bh_encode_obj->newline[1] = CR; - p_bh_encode_obj->newline[2] = LF; /* to confirm with rfc822, use CRLF */ - - return NOERR; -} - -int binhex_encode_next( - binhex_encode_object* p_bh_encode_obj, - char *in_buff, - int32 in_size, - char *out_buff, - int32 buff_size, - int32 *real_size) -{ - int status = 0; - /* - ** setup the buffer information. - */ - p_bh_encode_obj->outbuff = out_buff; - p_bh_encode_obj->s_outbuff = buff_size; - p_bh_encode_obj->pos_outbuff = 0; - - /* - ** copy over the left over from last time. - */ - if (p_bh_encode_obj->s_overflow) - { - XP_MEMCPY(p_bh_encode_obj->overflow, - p_bh_encode_obj->outbuff, - p_bh_encode_obj->s_overflow); - - p_bh_encode_obj->pos_outbuff = p_bh_encode_obj->s_overflow; - p_bh_encode_obj->s_overflow = 0; - } - - /* - ** Jump to the right state. - */ - if ( p_bh_encode_obj->state < BINHEX_STATE_DONE) - { - if (in_buff == NULL && in_size == 0) - { - /* this is our special token of end of a part, time to append crc codes */ - if (p_bh_encode_obj->state != BINHEX_STATE_FINISH) - status = binhex_encode_end_a_part(p_bh_encode_obj); - else - status = binhex_encode_finishing(p_bh_encode_obj); - - p_bh_encode_obj->state += 2; /* so we can jump to the next state.*/ - } - else - { - if (p_bh_encode_obj->state == BINHEX_STATE_START) - { - XP_STRCPY(p_bh_encode_obj->outbuff + p_bh_encode_obj->pos_outbuff, - "\r\n(This file must be converted with BinHex 4.0)\r\n\r\n:"); - p_bh_encode_obj->pos_outbuff += 52; - - p_bh_encode_obj->state = BINHEX_STATE_HEADER; - - XP_MEMCPY(p_bh_encode_obj->name, - in_buff, - in_size); - } - else if (p_bh_encode_obj->state == BINHEX_STATE_HEADER) - { - XP_MEMCPY(&(p_bh_encode_obj->head), - in_buff, - sizeof(binhex_header)); - - if (in_size == 20) /* in the platform that alignment is 4-bytes. */ - in_size = 18; - - p_bh_encode_obj->head.dlen = 0; /* we just can't trust the dlen from */ - /* apple double decoder told us. */ - /* do our own counting. */ - } - else if (p_bh_encode_obj->state == BINHEX_STATE_DFORK) - { - if (p_bh_encode_obj->head.dlen == 0) - { - p_bh_encode_obj->c[0] = in_buff[0]; /* save the first 2 bytes, in case */ - p_bh_encode_obj->c[1] = in_buff[1]; /* head and data share 1 code block */ - } - p_bh_encode_obj->head.dlen += in_size; - } - - status = binhex_encode_buff(p_bh_encode_obj, - (unsigned char *)in_buff, - in_size); - } - } - *real_size = p_bh_encode_obj->pos_outbuff; - return status; -} - -/* -** Only generate the header part of the encoding, -** so we can fix up the -*/ -int binhex_reencode_head( - binhex_encode_object *p_bh_encode_obj, - char* outbuff, - int32 buff_size, - int32* real_size) -{ - int32 size, dlen; - int status; - char buff[64]; - - p_bh_encode_obj->state = 0; - p_bh_encode_obj->state86 = 0; - p_bh_encode_obj->CRC = 0; - p_bh_encode_obj->line_length= 1; - p_bh_encode_obj->saved_bits = 0; - p_bh_encode_obj->s_overflow = 0 ; - - status = binhex_encode_next( - p_bh_encode_obj, - p_bh_encode_obj->name, - p_bh_encode_obj->name[0]+2, /* in_size */ - outbuff, - buff_size, - real_size); - if (status != NOERR) - return status; - - size = *real_size; - - /* now we should have the right data length in the head structure, but don't */ - /* forget convert it back to the net byte order (i.e., Motolora) before write it */ - /* */ - /* Note: since we don't change the size of rlen, so don't need to worry about it */ - - p_bh_encode_obj->head.dlen = htonl(dlen = p_bh_encode_obj->head.dlen); - - /* make a copy before do the encoding, -- it may modify the head!!!. */ - XP_MEMCPY(buff, (char*)&p_bh_encode_obj->head, - sizeof(binhex_header)); - if (18 < sizeof(binhex_header)) - { - /* we get an alignment problem here. */ - XP_MEMCPY(buff + 10, buff + 12, 8); - } - - status = binhex_encode_next( - p_bh_encode_obj, - (char*)buff, - 18, /* sizeof(binhex_header),*/ - outbuff + size, - buff_size - size, - real_size); - if (status != NOERR) - return status; - - size += *real_size; - - status = binhex_encode_next( /* for CRC */ - p_bh_encode_obj, - NULL, - 0, /* in_size */ - outbuff + size, - buff_size - size, - real_size); - - if (status != NOERR) - return status; - - size += *real_size; - - if (p_bh_encode_obj->state86 != 0) - { - /* - ** Make sure we don't destroy the orignal valid coding. - ** - ** (Keep in mind that 3 characters share 4 coding chars, - ** so it is possible for the head and data stream share one 4 code group. - ** - ** How about only one or zero character in the data fork? - ** ---- just rerun the encoding, not a big deal. - */ - if (dlen <= 1) - { - /* why just rerun the encoding once more. */ - status = binhex_encode_next( - p_bh_encode_obj, - p_bh_encode_obj->c, - dlen, - outbuff + size, - buff_size - size, - real_size); - if (status != NOERR) - return status; - - size += *real_size; /* encode the data fork */ - - status = binhex_encode_next( - p_bh_encode_obj, - NULL, - 0, - outbuff + size, - buff_size - size, - real_size); - if (status != NOERR) - return status; - - size += *real_size; /* for the end up data fork */ - - status = binhex_encode_next( - p_bh_encode_obj, - NULL, - 0, - outbuff + size, - buff_size - size, - real_size); /* for the end up encoding*/ - } - else - { - status = binhex_encode_next( - p_bh_encode_obj, - p_bh_encode_obj->c, - 3 - p_bh_encode_obj->state86, /* in_size */ - outbuff + size, - buff_size - size, - real_size); - } - size += *real_size; - } - *real_size = size; - - return status; -} - -int binhex_encode_end ( - binhex_encode_object *p_bh_encode_obj, - XP_Bool is_aborting) -{ - return NOERR; -} - - -/* -** The decode's. -*/ -static char binhex_decode[256] = -{ - -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, - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, - 13, 14, 15, 16, 17, 18, 19, -1, 20, 21, -1, -1, -1, -1, -1, -1, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, -1, - 37, 38, 39, 40, 41, 42, 43, -1, 44, 45, 46, 47, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, -1, 55, 56, 57, 58, 59, 60, -1, -1, - 61, 62, 63, -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, -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, -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, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -}; - -#define BHEXVAL(c) (binhex_decode[(unsigned char) c]) - -/* -** the decode for bin hex format. -*/ -int binhex_decode_init ( - binhex_decode_object *p_bh_decode_obj, - MWContext *context) -{ - XP_MEMSET(p_bh_decode_obj, 0, sizeof(binhex_decode_object)); - - p_bh_decode_obj->octetin = 26; - p_bh_decode_obj->donepos = 3; - p_bh_decode_obj->context = context; - - return NOERR; -} - -static void -simple_copy(MWContext* context, char* newFile, void* closure) -{ - XP_STRCPY((char *)closure, newFile); -} - -PRIVATE void binhex_process( - binhex_decode_object *p_bh_decode_obj) -{ - int32 status; - uint16 tmpcrc, cval; - unsigned char ctmp, c = p_bh_decode_obj->rlebuf; - - /* do CRC */ - ctmp = p_bh_decode_obj->inCRC ? c : 0; - cval = p_bh_decode_obj->CRC & 0xf000; - tmpcrc = ((uint16) (p_bh_decode_obj->CRC << 4) | - (ctmp >> 4)) - ^ (cval | (cval >> 7) | - (cval >> 12)); - cval = tmpcrc & 0xf000; - p_bh_decode_obj->CRC = ((uint16) (tmpcrc << 4) | - (ctmp & 0x0f)) - ^ (cval | (cval >> 7) | - (cval >> 12)); - - /* handle state */ - switch (p_bh_decode_obj->state) - { - case BINHEX_STATE_START: - p_bh_decode_obj->state = BINHEX_STATE_FNAME; - p_bh_decode_obj->count = 1; -#ifndef XP_MAC - p_bh_decode_obj->name = XP_ALLOC(64); -#endif - *(p_bh_decode_obj->name) = (c & 63); - break; - - case BINHEX_STATE_FNAME: - p_bh_decode_obj->name[p_bh_decode_obj->count] = c; - - if (p_bh_decode_obj->count++ > *(p_bh_decode_obj->name)) - { -#if 0 - char* p; - /* convert it to the c-string too. */ - c = *(p_bh_decode_obj->name); - p = p_bh_decode_obj->name; - - while (c--) - { - *p = *(p+1); p++; - } - - *p = '\0'; -#endif - p_bh_decode_obj->state = BINHEX_STATE_HEADER; - p_bh_decode_obj->count = 0; - } - break; - - case BINHEX_STATE_HEADER: - ((char *)&p_bh_decode_obj->head)[p_bh_decode_obj->count] = c; - if (++p_bh_decode_obj->count == 18) - { -#ifndef XP_MAC - if (sizeof(binhex_header) != 18) /* fix the alignment problem in some OS */ - { - char *p = (char *)&p_bh_decode_obj->head; - p += 19; - for (c = 0; c < 8; c++) - { - *p = *(p-2); p--; - } - } -#endif - p_bh_decode_obj->state = BINHEX_STATE_HCRC; - p_bh_decode_obj->inCRC = 1; - p_bh_decode_obj->count = 0; - } - break; - - case BINHEX_STATE_DFORK: - case BINHEX_STATE_RFORK: - p_bh_decode_obj->outbuff[p_bh_decode_obj->pos_outbuff++] = c; - if (-- p_bh_decode_obj->count == 0) - { -#ifdef XP_MAC - long howMuch = p_bh_decode_obj->pos_outbuff; - status = FSWrite(p_bh_decode_obj->fileId, - &howMuch, - p_bh_decode_obj->outbuff); - FSClose(p_bh_decode_obj->fileId); -#else - /* only output data fork in the non-mac system. */ - if (p_bh_decode_obj->state == BINHEX_STATE_DFORK) - { - status = XP_FileWrite(p_bh_decode_obj->outbuff, - p_bh_decode_obj->pos_outbuff, - p_bh_decode_obj->fileId) - == p_bh_decode_obj->pos_outbuff ? NOERR : errFileWrite; - - XP_FileClose(p_bh_decode_obj->fileId); - } - else - { - status = NOERR; /* do nothing for resource fork. */ - } -#endif - p_bh_decode_obj->pos_outbuff = 0; - - if (status != NOERR) - p_bh_decode_obj->state = status; - else - { - p_bh_decode_obj->state ++; - p_bh_decode_obj->fileId = 0; - } - p_bh_decode_obj->inCRC = 1; - } - else if (p_bh_decode_obj->pos_outbuff >= MAX_BUFF_SIZE) - { -#ifdef XP_MAC - long howMuch = p_bh_decode_obj->pos_outbuff; - status = FSWrite(p_bh_decode_obj->fileId, - &howMuch, - p_bh_decode_obj->outbuff); -#else - if (p_bh_decode_obj->state == BINHEX_STATE_DFORK) - { - status = XP_FileWrite(p_bh_decode_obj->outbuff, - p_bh_decode_obj->pos_outbuff, - p_bh_decode_obj->fileId) - == p_bh_decode_obj->pos_outbuff ? NOERR : errFileWrite; - } - else - { - status = NOERR; /* don't care about the resource fork. */ - } -#endif - if (status != NOERR) - p_bh_decode_obj->state = status; - - p_bh_decode_obj->pos_outbuff = 0; - } - break; - - case BINHEX_STATE_HCRC: - case BINHEX_STATE_DCRC: - case BINHEX_STATE_RCRC: - if (!p_bh_decode_obj->count++) - { - p_bh_decode_obj->fileCRC = (unsigned short) c << 8; - } - else - { - if ((p_bh_decode_obj->fileCRC | c) != p_bh_decode_obj->CRC) - { - if (p_bh_decode_obj->state > BINHEX_STATE_HCRC) - { -#ifdef XP_MAC - HDelete(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name); -#else - XP_FileRemove(p_bh_decode_obj->name, xpURL); -#endif - } - p_bh_decode_obj->state = errDecoding; - break; - } - - /* - ** passed the CRC check!!! - */ - p_bh_decode_obj->CRC = 0; - if (++ p_bh_decode_obj->state == BINHEX_STATE_FINISH) - { -#ifdef XP_MAC - FInfo finfo; - - /* set back the file information.before we declare done ! */ - finfo.fdType = p_bh_decode_obj->head.type; - finfo.fdCreator = p_bh_decode_obj->head.creator; - finfo.fdFlags = p_bh_decode_obj->head.flags & 0xf800; - - HSetFInfo(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char *)p_bh_decode_obj->name, - &finfo); -#endif - /* now We are done with everything. */ - p_bh_decode_obj->state++; - break; - } - - if (p_bh_decode_obj->state == BINHEX_STATE_DFORK) - { -#ifdef XP_MAC - StandardFileReply reply; - if( !p_bh_decode_obj->mSpec ) - { - StandardPutFile("\pSave decoded file as:", - (unsigned char *)p_bh_decode_obj->name, - &reply); - - if (!reply.sfGood) - { - p_bh_decode_obj->state = errUsrCancel; - break; - } - } - else - { - reply.sfFile.vRefNum = p_bh_decode_obj->mSpec->vRefNum; - reply.sfFile.parID = p_bh_decode_obj->mSpec->parID; - XP_MEMCPY(&reply.sfFile.name, p_bh_decode_obj->mSpec->name , 63 ); - } - - XP_MEMCPY(p_bh_decode_obj->name, - reply.sfFile.name, - *(reply.sfFile.name)+1); /* save the new file name. */ - - p_bh_decode_obj->vRefNum = reply.sfFile.vRefNum; - p_bh_decode_obj->parID = reply.sfFile.parID; - - HDelete(reply.sfFile.vRefNum, - reply.sfFile.parID, - reply.sfFile.name); - - status = HCreate(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - reply.sfFile.name, - p_bh_decode_obj->head.creator, - p_bh_decode_obj->head.type); -#else /* non-mac OS case */ - char* filename; - - filename = XP_ALLOC(1024); - if (filename == NULL || - FE_PromptForFileName(p_bh_decode_obj->context, - XP_GetString(MK_MSG_SAVE_DECODED_AS), - 0, - FALSE, - FALSE, - simple_copy, - filename) == -1) - { - FREEIF(filename); - p_bh_decode_obj->state = errUsrCancel; - break; - } - - FREEIF(p_bh_decode_obj->name); - p_bh_decode_obj->name = XP_STRDUP(filename); - p_bh_decode_obj->fileId - = XP_FileOpen(filename, - xpURL, - XP_FILE_TRUNCATE_BIN); - if (p_bh_decode_obj->fileId == NULL) - status = errFileOpen; - else - status = NOERR; - - XP_FREE(filename); - -#endif - if (status != NOERR) - p_bh_decode_obj->state = status; - - p_bh_decode_obj->count - = ntohl(p_bh_decode_obj->head.dlen); - } - else - { - p_bh_decode_obj->count - = ntohl(p_bh_decode_obj->head.rlen); /* it should in host byte order */ - } - - if (p_bh_decode_obj->count) - { - p_bh_decode_obj->inCRC = 0; -#ifdef XP_MAC - if (p_bh_decode_obj->state == BINHEX_STATE_DFORK) - status = HOpen(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name, - fsWrPerm, - &(p_bh_decode_obj->fileId)); - else - status = HOpenRF(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name, - fsWrPerm, - &(p_bh_decode_obj->fileId)); - if (status != NOERR) - { - p_bh_decode_obj->state = errFileOpen; - HDelete(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name); - break; - } -#else - /* for None Mac OS -- nothing is required, file already open. */ - -#endif - } - else - { - /* nothing inside, so skip to the next state. */ - p_bh_decode_obj->state ++; - } - } - break; - } - - return; -} - -static int get_next_char(binhex_decode_object *p_bh_decode_obj) -{ - char c = 0; - - while (p_bh_decode_obj->pos_inbuff < p_bh_decode_obj->s_inbuff) - { - c = p_bh_decode_obj->inbuff[p_bh_decode_obj->pos_inbuff++]; - if (c != LF && c != CR) - break; - } - return (c == LF || c == CR) ? 0 : (int) c; -} - -int binhex_decode_next ( - binhex_decode_object *p_bh_decode_obj, - const char *in_buff, - int32 buff_size) -{ - int found_start; - int octetpos, c = 0; - uint32 val; - - /* - ** reset the buff first. - */ - p_bh_decode_obj->inbuff = (char*)in_buff; - p_bh_decode_obj->s_inbuff = buff_size; - p_bh_decode_obj->pos_inbuff = 0; - - /* - ** if it is the first time, seek to the right start place. - */ - if (p_bh_decode_obj->state == BINHEX_STATE_START) - { - found_start = FALSE; - /* - ** go through the line, until we get a ':' - */ - while (p_bh_decode_obj->pos_inbuff < p_bh_decode_obj->s_inbuff) - { - c = p_bh_decode_obj->inbuff[p_bh_decode_obj->pos_inbuff++]; - while (c == CR || c == LF) - { - if (p_bh_decode_obj->pos_inbuff >= p_bh_decode_obj->s_inbuff) - break; - - c = p_bh_decode_obj->inbuff[p_bh_decode_obj->pos_inbuff++]; - if (c == ':') - { - found_start = TRUE; - break; - } - } - if (found_start) break; /* we got the start point. */ - } - - if (p_bh_decode_obj->pos_inbuff >= p_bh_decode_obj->s_inbuff) - return NOERR; /* we meet buff end before we get the */ - /* start point, wait till next fills. */ - - if (c != ':') - return errDecoding; /* can't find the start character. */ - } - - /* - ** run - through the in-stream now. - */ - while (p_bh_decode_obj->state >= 0 && - p_bh_decode_obj->state < BINHEX_STATE_DONE) - { - /* fill in octetbuf */ - do - { - if (p_bh_decode_obj->pos_inbuff >= p_bh_decode_obj->s_inbuff) - return NOERR; /* end of buff, go on for the nxet calls. */ - - c = get_next_char(p_bh_decode_obj); - if (c == 0) - return NOERR; - - if ((val = BHEXVAL(c)) == -1) - { - /* - ** we incount an invalid character. - */ - if (c) - { - /* - ** rolling back. - */ - p_bh_decode_obj->donepos --; - if (p_bh_decode_obj->octetin >= 14) p_bh_decode_obj->donepos--; - if (p_bh_decode_obj->octetin >= 20) p_bh_decode_obj->donepos--; - } - break; - } - p_bh_decode_obj->octetbuf.val |= val << p_bh_decode_obj->octetin; - } - while ((p_bh_decode_obj->octetin -= 6) > 2); - - /* handle decoded characters -- run length encoding (rle) detection */ - -#ifndef XP_MAC - p_bh_decode_obj->octetbuf.val - = ntohl(p_bh_decode_obj->octetbuf.val); -#endif - - for (octetpos = 0; octetpos < p_bh_decode_obj->donepos; ++octetpos) - { - c = p_bh_decode_obj->octetbuf.c[octetpos]; - - if (c == 0x90 && !p_bh_decode_obj->marker++) - continue; - - if (p_bh_decode_obj->marker) - { - if (c == 0) - { - p_bh_decode_obj->rlebuf = 0x90; - binhex_process(p_bh_decode_obj); - } - else - { - while (--c > 0) /* we are in the run lenght mode */ - { - binhex_process(p_bh_decode_obj); - } - } - p_bh_decode_obj->marker = 0; - } - else - { - p_bh_decode_obj->rlebuf = (unsigned char) c; - binhex_process(p_bh_decode_obj); - } - - - if (p_bh_decode_obj->state >= BINHEX_STATE_FINISH) - break; - } - - /* prepare for next 3 characters. */ - if (p_bh_decode_obj->donepos < 3 && p_bh_decode_obj->state < BINHEX_STATE_FINISH) - p_bh_decode_obj->state = errDecoding; - - p_bh_decode_obj->octetin = 26; - p_bh_decode_obj->octetbuf.val = 0; - } - - /* - ** Error clean-ups - */ - if (p_bh_decode_obj->state < 0 && p_bh_decode_obj->fileId) - { -#ifdef XP_MAC - FSClose(p_bh_decode_obj->fileId); - p_bh_decode_obj->fileId = 0; - HDelete(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name); -#else - XP_FileClose(p_bh_decode_obj->fileId); - p_bh_decode_obj->fileId = 0; - XP_FileRemove(p_bh_decode_obj->name, xpURL); -#endif - } - - - return p_bh_decode_obj->state < 0 ? (p_bh_decode_obj->state) : - p_bh_decode_obj->state >= BINHEX_STATE_FINISH ? errDone : NOERR; -} - -int binhex_decode_end ( - binhex_decode_object *p_bh_decode_obj, - XP_Bool is_aborting) -{ -#ifdef XP_MAC - if (p_bh_decode_obj->fileId) - { - FSClose(p_bh_decode_obj->fileId); - p_bh_decode_obj->fileId = 0; - - if (is_aborting) - { - HDelete(p_bh_decode_obj->vRefNum, - p_bh_decode_obj->parID, - (unsigned char*)p_bh_decode_obj->name); - } - } - -#else - - if (p_bh_decode_obj->fileId) - { - XP_FileClose(p_bh_decode_obj->fileId); - p_bh_decode_obj->fileId = NULL; - - if (is_aborting) - XP_FileRemove(p_bh_decode_obj->name, xpURL); - } - FREEIF(p_bh_decode_obj->name); -#endif - - return NOERR; -} - - diff --git a/mozilla/lib/mailto/m_binhex.h b/mozilla/lib/mailto/m_binhex.h deleted file mode 100644 index 7872a746f9c..00000000000 --- a/mozilla/lib/mailto/m_binhex.h +++ /dev/null @@ -1,188 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* -* The head file for Bin Hex 4.0 encode/decode -* ------------------------------------------- -* -* 10sep95 mym created -*/ - -#ifndef binhex_h -#define binhex_h - -#ifdef XP_MAC -#if PRAGMA_ALIGN_SUPPORTED -#pragma options align=mac68k -#endif -#endif /* XP_MAC */ - -#define BINHEX_STATE_START 0 -#define BINHEX_STATE_FNAME 1 -#define BINHEX_STATE_HEADER 2 -#define BINHEX_STATE_HCRC 3 -#define BINHEX_STATE_DFORK 4 -#define BINHEX_STATE_DCRC 5 -#define BINHEX_STATE_RFORK 6 -#define BINHEX_STATE_RCRC 7 -#define BINHEX_STATE_FINISH 8 -#define BINHEX_STATE_DONE 9 -/* #define BINHEX_STATE_ERROR 10 */ - -/* -** The Definitions for the binhex encoder -*/ -typedef struct _binhex_header -{ - uint32 type, creator; - uint16 flags; - int32 dlen, rlen ; - -} binhex_header; - -typedef struct _binhex_encode_object -{ - int state; /* progress state. */ - - int state86; /* binhex encode state. */ - unsigned long CRC; /* accumulated CRC */ - int line_length; /* the line length count */ - char saved_bits; - - int s_inbuff; /* the inbuff size */ - int pos_inbuff; /* the inbuff position */ - char* inbuff; /* the inbuff pool */ - - int s_outbuff; /* the outbuff size */ - int pos_outbuff; /* the outbuff position */ - char* outbuff; /* the outbuf pool */ - - int s_overflow; /* the real size of overflow */ - char overflow[32]; /* a small overflow buffer */ - - char c[2]; - char newline[4]; /* the new line char seq. */ - - /* -- for last fix up. -- */ - - char name[64]; - binhex_header head; - -} binhex_encode_object; - -/* -** The defination for the binhex decoder. -** NOTE: This define is for Mac only. -*/ - -typedef union -{ - unsigned char c[4]; - uint32 val; - -} longbuf; - -#define MAX_BUFF_SIZE 256 - -typedef struct _binhex_decode_object -{ - int state; /* current state */ - uint16 CRC; /* cumulative CRC */ - uint16 fileCRC; /* CRC value from file */ - - longbuf octetbuf; /* buffer for decoded 6-bit values */ - int16 octetin; /* current input position in octetbuf */ - int16 donepos; /* ending position in octetbuf */ - int16 inCRC; /* flag set when reading a CRC */ - - int32 count; /* generic counter */ - int16 marker; /* flag indicating maker */ - unsigned char rlebuf; /* buffer for last run length encoding value */ - - binhex_header head; /* buffer for header */ - -#ifdef XP_MAC - FSSpec* mSpec; - char name[64]; /* fsspec for the output file */ - int16 vRefNum; - int32 parID ; - int16 fileId; /* the refnum of the output file */ -#else - char *name; /* file name for the output file in non-mac OS */ - XP_File fileId; /* the file if for the outpur file. non-mac OS */ -#endif - - MWContext* context; /* context for call back function. */ - - int32 s_inbuff; /* the valid size of the inbuff */ - int32 pos_inbuff; /* the index of the inbuff. */ - char* inbuff; /* the inbuff pointer. */ - int32 pos_outbuff; /* the position of the out buff. */ - char outbuff[MAX_BUFF_SIZE]; - -} binhex_decode_object; - -XP_BEGIN_PROTOS - -/* -** The binhex file encode prototypes. -*/ -int binhex_encode_init(binhex_encode_object *p_bh_encode_obj); - -int binhex_encode_next(binhex_encode_object *p_bh_encode_obj, - char *in_buff, - int32 in_size, - char *out_buff, - int32 buff_size, - int32 *real_size); - -int binhex_encode_end (binhex_encode_object *p_bh_encode_obj, - XP_Bool is_aborting); - -int binhex_reencode_head( - binhex_encode_object *p_bh_encode_obj, - char* outbuff, - int32 buff_size, - int32* real_size); - - -/* -** The binhex stream decode prototypes. -*/ - -int binhex_decode_init(binhex_decode_object *p_bh_decode_env, - MWContext *context); - -int binhex_decode_next(binhex_decode_object *p_bh_decode_env, - const char *in_buff, - int32 buff_size); -int binhex_decode_end (binhex_decode_object *p_bh_decode_env, - XP_Bool is_aborting); - -XP_END_PROTOS - -#ifdef XP_MAC -#if PRAGMA_ALIGN_SUPPORTED -#pragma options align=reset -#endif -#endif /* XP_MAC */ - -#endif /* binhex_h */ diff --git a/mozilla/lib/mailto/makefile.win b/mozilla/lib/mailto/makefile.win deleted file mode 100644 index 1d8e7ceda47..00000000000 --- a/mozilla/lib/mailto/makefile.win +++ /dev/null @@ -1,97 +0,0 @@ -#!gmake -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): - - -IGNORE_MANIFEST=1 - -DEPTH = ..\.. - -MODULE= mailto -LIBRARY_NAME = mailto -LIB = .\$(OBJDIR)\$(LIBRARY_NAME).lib - -!if "$(MOZ_BITS)"=="32" && defined(MOZ_DEBUG) && defined(GLOWCODE) -LLIBS=$(LLIBS) $(GLOWDIR)\glowcode.lib -!endif - - -REQUIRES=security nspr htmldlgs img util layer pref security js java net progress network - - - -OBJS = \ - .\$(OBJDIR)\mprmime.obj \ - .\$(OBJDIR)\mprdecod.obj \ - .\$(OBJDIR)\memstrem.obj \ - .\$(OBJDIR)\mhtmlstm.obj \ - .\$(OBJDIR)\msgsendp.obj \ - $(NULL) -# We'd like to include msgdlqml.cpp eventually (deliver queued mail) - - -EXPORTS = \ - ad_codes.h \ - appledbl.h \ - bytearr.h \ - dwordarr.h \ - errcode.h \ - error.h \ - memstrem.h \ - mhtmlstm.h \ - mprdecod.h \ - mprmime.h \ - msg.h \ - msgbg.h \ - msgcflds.h \ - msgcpane.h \ - msghdr.h \ - msgmast.h \ - msgmdn.h \ - msgpane.h \ - msgppane.h \ - msgprefs.h \ - msgprnot.h \ - msgsend.h \ - msgsendp.h \ - msgurlq.h \ - msgutils.h \ - msgzap.h \ - m_binhex.h \ - ptrarray.h \ - $(NULL) - -MODULE=mailto - -REQUIRES=security nspr htmldlgs img util layer pref js java net progress network - -LINCS=-I$(XPDIST)\public\security -I$(XPDIST)\public\nspr \ - -I$(XPDIST)\public\htmldlgs -I$(XPDIST)\public\img \ - -I$(XPDIST)\public\layer -I$(XPDIST)\public\pref \ - -I$(XPDIST)\public\js -I$(XPDIST)\public\java \ - -I$(XPDIST)\public\net -I$(XPDIST)\public\progress \ - -I$(XPDIST)\public\util -I$(XPDIST)\public\network - -LCFLAGS=$(LCFLAGS) -DENDER -DMOZ_ENDER_MIME - -include <$(DEPTH)\config\rules.mak> - -libs:: $(LIB) - $(MAKE_INSTALL) .\$(OBJDIR)\$(LIBRARY_NAME).lib $(DIST)\lib diff --git a/mozilla/lib/mailto/memstrem.cpp b/mozilla/lib/mailto/memstrem.cpp deleted file mode 100644 index 440474ba320..00000000000 --- a/mozilla/lib/mailto/memstrem.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -* -* The contents of this file are subject to the Netscape Public -* License Version 1.1 (the "License"); you may not use this file -* except in compliance with the License. You may obtain a copy of -* the License at http://www.mozilla.org/NPL/ -* -* Software distributed under the License is distributed on an "AS -* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -* implied. See the License for the specific language governing -* rights and limitations under the License. -* -* The Original Code is mozilla.org code. -* -* The Initial Developer of the Original Code is Netscape -* Communications Corporation. Portions created by Netscape are -* Copyright (C) 1998 Netscape Communications Corporation. All -* Rights Reserved. -* -* Contributor(s): -*/ -/*lame but i need it, mjudge*/ -#include "xp_core.h" -#include "xp_mem.h" -#include "xp_mcom.h" /*for memcopy*/ - -#include "memstrem.h" - - - -memstream::memstream() -{ - mem = NULL; - sizealloc = 0; - frozen = FALSE; - memloc = 0; - buffer = DEFAULT_BUFFER_AMT; -} - -memstream::memstream(int32 size, int32 bufferdelta /*= DEF*/) -{ - mem = (char *)XP_ALLOC(size); - sizealloc = size; - frozen = FALSE; - memloc = 0; - buffer = bufferdelta; -} - -int -memstream::write(const char *t_input,int bytesize) -{ - if (frozen) - return 0; //frozen, cant write - if ((bytesize + memloc) > sizealloc) - { - sizealloc = (bytesize + memloc) + buffer; - mem = (char *)XP_REALLOC(mem, sizealloc); - if (!mem) - return 0; - } - XP_MEMCPY(mem + memloc,t_input , bytesize); - memloc +=bytesize; - return bytesize; -} - - - -memstream::~memstream() -{ - if (!frozen) - clear(); -} - - - -void -memstream::clear() -{ - XP_FREEIF(mem); - sizealloc = 0; - memloc = 0; - frozen = FALSE; -} diff --git a/mozilla/lib/mailto/memstrem.h b/mozilla/lib/mailto/memstrem.h deleted file mode 100644 index 745b8d77cc4..00000000000 --- a/mozilla/lib/mailto/memstrem.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -* -* The contents of this file are subject to the Netscape Public -* License Version 1.1 (the "License"); you may not use this file -* except in compliance with the License. You may obtain a copy of -* the License at http://www.mozilla.org/NPL/ -* -* Software distributed under the License is distributed on an "AS -* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -* implied. See the License for the specific language governing -* rights and limitations under the License. -* -* The Original Code is mozilla.org code. -* -* The Initial Developer of the Original Code is Netscape -* Communications Corporation. Portions created by Netscape are -* Copyright (C) 1998 Netscape Communications Corporation. All -* Rights Reserved. -* -* Contributor(s): -*/ -/*lame but i need it, mjudge*/ - -#ifndef _MEMSTREM_H -#define _MEMSTREM_H - -#define DEFAULT_BUFFER_AMT 90 - -class memstream -{ -public: - memstream(); - memstream(int32 size, int32 bufferdelta = DEFAULT_BUFFER_AMT); - ~memstream(); - int write(const char *t_input,int bytesize); - char *str(){frozen = TRUE;return mem;} - void release(){frozen = FALSE;} - void clear(); -private: - int32 sizealloc; - int32 memloc; - char *mem; - XP_Bool frozen; - int32 buffer; //grow by how much? -}; - -#endif //_MEMSTREM_H diff --git a/mozilla/lib/mailto/mhtmlstm.cpp b/mozilla/lib/mailto/mhtmlstm.cpp deleted file mode 100644 index 88133189a2a..00000000000 --- a/mozilla/lib/mailto/mhtmlstm.cpp +++ /dev/null @@ -1,1147 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -* -* The contents of this file are subject to the Netscape Public -* License Version 1.1 (the "License"); you may not use this file -* except in compliance with the License. You may obtain a copy of -* the License at http://www.mozilla.org/NPL/ -* -* Software distributed under the License is distributed on an "AS -* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -* implied. See the License for the specific language governing -* rights and limitations under the License. -* -* The Original Code is mozilla.org code. -* -* The Initial Developer of the Original Code is Netscape -* Communications Corporation. Portions created by Netscape are -* Copyright (C) 1998 Netscape Communications Corporation. All -* Rights Reserved. -* -* Contributor(s): -*/ -/* mhtmlstm.c --- generation of MIME HTML. -*/ - -//#ifdef MSG_SEND_MULTIPART_RELATED - -#include "msg.h" -#include "net.h" -#include "structs.h" -#include "xp_core.h" -#include "mhtmlstm.h" -#include "xp_mem.h" -#include "xp_str.h" -#include "xp_mcom.h" -#include "xp_file.h" -#include "prprf.h" -#include "xpassert.h" -#include "msgsend.h" -#include "msgsendp.h" -#include "mimeenc.h" -#include "libi18n.h" - - -#ifdef MOZ_ENDER_MIME -#include "secrng.h" /* for RNG_GenerateGlobalRandomBytes() */ -extern "C" { -#include "xp_file.h" -#include "edt.h" /*safelist calls*/ -} -#include "mprmime.h" -#include "memstrem.h" -#define MESSAGE_START_SIZE 500 -#endif /*MOZ_ENDER_MIME*/ - -extern "C" { - extern int MK_UNABLE_TO_OPEN_FILE; -} - - - -/* Defined in libnet/mkcache.c */ -extern "C" int NET_FindURLInCache(URL_Struct * URL_s, MWContext *ctxt); - -/* Defined in layout/editor.cpp */ -extern "C" XP_Bool EDT_IsSameURL(char *url1,char *url2,char *base1,char *base2); - -/* ----------------------------------------------------------------------- -MSG_MimeRelatedFileInfo ----------------------------------------------------------------------- -*/ - - -/* ----------------------------------------------------------------------- -MSG_MimeRelatedStreamOut ----------------------------------------------------------------------- -*/ - -class MSG_MimeRelatedStreamOut : public IStreamOut -{ -public: - MSG_MimeRelatedStreamOut(XP_File file); - ~MSG_MimeRelatedStreamOut(void); - - virtual void Write( char *pBuffer, int32 iCount ); - //static int WriteMimeData( const char *pBuffer, int32 iCount, void *closure); - - virtual EOutStreamStatus Status(); - - virtual intn Close(void); - - XP_File m_file; - XP_Bool m_hasWritten; - //MimeEncoderData *m_encoder; - EOutStreamStatus m_status; -}; - - - -MSG_MimeRelatedStreamOut::MSG_MimeRelatedStreamOut(XP_File file) -: m_file(file), m_hasWritten(FALSE), m_status(EOS_NoError) -{ -} - -MSG_MimeRelatedStreamOut::~MSG_MimeRelatedStreamOut(void) -{ - Close(); -} - -void -MSG_MimeRelatedStreamOut::Write(char *pBuffer, int32 iCount) -{ - // if (!m_encoder) - // (void) WriteMimeData(pBuffer, iCount, this); - // else - // (void) MimeEncoderWrite(m_encoder, pBuffer, iCount); - - if (m_status != EOS_NoError) - return; - - // For now, pass through the information. - XP_ASSERT(m_file); - int numBytes = 0; - if (m_file) - { - numBytes = XP_FileWrite(pBuffer, iCount, m_file); - if (numBytes != iCount) - { - TRACEMSG(("MSG_MimeRelatedStreamOut::Write(): error: %d written != %ld to write",numBytes, (long)iCount)); - if (m_hasWritten) - m_status = EOS_DeviceFull; // wrote in the past, so this means the disk is full - else - m_status = EOS_FileError; // couldn't even write once, so assume it's some other problem - } - } - - if (!m_hasWritten) m_hasWritten = TRUE; -} - -//int -//MSG_MimeRelatedStreamOut::WriteMimeData(const char *pBuffer, int32 iCount, void *closure) -//{ -//} - -IStreamOut::EOutStreamStatus -MSG_MimeRelatedStreamOut::Status(void) -{ - return m_status; -} - -intn -MSG_MimeRelatedStreamOut::Close(void) -{ - if (m_file) - { - XP_FileClose(m_file); - m_file = 0; - } - return 0; -} - -/* ----------------------------------------------------------------------- -MSG_MimeRelatedSubpart ----------------------------------------------------------------------- -*/ - -char * -MSG_MimeRelatedSubpart::GenerateCIDHeader(void) -{ - char *header; - - // If we have a Content-ID, generate that. - header = (m_pContentID ? - PR_smprintf("Content-ID: <%s>", m_pContentID) : 0); - // If we have no Content-ID but an original URL, send that. - if (!header && m_pOriginalURL) - header = PR_smprintf("Content-Location: %s", m_pOriginalURL); - // If none of the above and we have a local URL, use that instead. - if (!header && m_pLocalURL) - header = PR_smprintf("Content-Location: %s", m_pLocalURL); - if (!header) - header = XP_STRDUP(""); - - return header; -} - -char * -MSG_MimeRelatedSubpart::GenerateEncodingHeader(void) -{ - char *header = NULL; - - if (m_pEncoding) - header = PR_smprintf("Content-Transfer-Encoding: %s", m_pEncoding); - else - header = XP_STRDUP(""); - - return header; -} - -char * -MSG_MimeRelatedSubpart::GetContentID(XP_Bool bAttachMIMEPrefix) -{ - char *result = NULL; - - if (m_pContentID) - { - result = PR_smprintf("%s%s", (bAttachMIMEPrefix ? "cid:" : ""), - m_pContentID); - } - - return result; -} - - -int -MSG_MimeRelatedSubpart::GetStreamOut(IStreamOut **pReturn) -{ - int result = 0; - - if (!m_pStreamOut) - { - if (m_filename) - { - XP_File file = XP_FileOpen(m_filename, xpFileToPost, XP_FILE_WRITE_BIN); - if (file) - { - m_pStreamOut = new MSG_MimeRelatedStreamOut(file); - } - } - } - if (!m_pStreamOut) - result = MK_UNABLE_TO_OPEN_FILE; /* -1; rb */ - *pReturn = (IStreamOut *) m_pStreamOut; - - return result; -} - -int -MSG_MimeRelatedSubpart::CloseStreamOut(void) -{ - int result = 0; - - if (m_pStreamOut) - { - delete m_pStreamOut; // this will close the stream - m_pStreamOut = NULL; - } - - return result; -} - -MSG_MimeRelatedSubpart::MSG_MimeRelatedSubpart(MSG_MimeRelatedSaver *parent, - char *pContentID, - char *pOriginal, char *pLocal, - char *pMime, int16 part_csid, char *pFilename) - : MSG_SendPart(NULL, part_csid), m_pOriginalURL(NULL), - m_pLocalURL(NULL), m_pParentFS(parent), - m_pContentID(NULL), m_pEncoding(NULL), m_pContentName(NULL), - m_pStreamOut(NULL), m_rootPart(FALSE) -{ - m_filetype = xpFileToPost; - - if (pOriginal) - m_pOriginalURL = XP_STRDUP(pOriginal); - if (pLocal) - m_pLocalURL = XP_STRDUP(pLocal); - if (pMime) - m_type = XP_STRDUP(pMime); - if (pContentID) - m_pContentID = XP_STRDUP(pContentID); - - if ((!m_pOriginalURL) && (!m_type)) - { - // Assume we're saving an untitled HTML document (the root part) if - // we're given neither the name nor the type. - m_type = XP_STRDUP(TEXT_HTML); - } - - if (pFilename) - { - CopyString(&m_filename, pFilename); - m_rootPart = TRUE; - } - else - { - // Generate a temp name for a file to which to write. -#ifdef MOZ_ENDER_MIME - char *tmp = WH_TempName(xpFileToPost, "nswebm"); -#else - char *tmp = WH_TempName(xpFileToPost, "nsmail"); -#endif - if (tmp) - { - CopyString(&m_filename, tmp); - XP_FREE(tmp); - } - } - - // If we have a filename, create the file now so that - // the Mac doesn't generate the same file name twice. - if (m_filename) - { - XP_File fp = XP_FileOpen(m_filename, xpFileToPost, XP_FILE_WRITE_BIN); - if (fp) - XP_FileClose(fp); - } - - //XP_ASSERT(m_type != NULL); - XP_ASSERT(m_filename != NULL); - //XP_ASSERT(m_pContentID != NULL); -} - -MSG_MimeRelatedSubpart::~MSG_MimeRelatedSubpart(void) -{ - // Close any streams we may have had open. - if (m_pStreamOut) - delete m_pStreamOut; - - // Delete the file we represent. - if (m_filename) - { - XP_FileRemove(m_filename, xpFileToPost); - } - - XP_FREEIF(m_pOriginalURL); - XP_FREEIF(m_pLocalURL); - XP_FREEIF(m_pContentID); - XP_FREEIF(m_pEncoding); - XP_FREEIF(m_pContentName); - - m_pOriginalURL = m_pLocalURL = NULL; -} - -int -MSG_MimeRelatedSubpart::WriteEncodedMessageBody(const char *buf, int32 size, - void *pPart) -{ - MSG_MimeRelatedSubpart *subpart = (MSG_MimeRelatedSubpart *) pPart; - int returnVal = 0; - - - XP_ASSERT(subpart->m_state != NULL); -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) - if (subpart->m_state) - returnVal = mime_write_message_body(subpart->m_state, (char *) buf, size); -#endif /* !MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE */ - - return returnVal; -} - -void -MSG_MimeRelatedSubpart::CopyURLInfo(const URL_Struct *pURL) -{ - char *suffix = NULL; - if (pURL != NULL) - { - // Get the MIME type if we have it. - if (pURL->content_type && *(pURL->content_type)) - SetType(pURL->content_type); - - // Look for a content name in this order: - // 1. If we have a content name, use that as is. - // 2. If we have a content type, find an extension - // corresponding to the content type, and attach it to - // the temp filename. - // 3. If we have neither a content name nor a content type, - // duplicate the temp filename as is. (Yuck.) - if (pURL->content_name && *(pURL->content_name)) - m_pContentName = XP_STRDUP(pURL->content_name); - - else if (pURL->content_type && (suffix = NET_cinfo_find_ext(pURL->content_type)) != NULL) - { - // We found an extension locally, add it to the temp name. - char *end = XP_STRRCHR(m_filename, '.'); - - if (end) - *end = '\0'; - - m_pContentName = PR_smprintf("%s.%s", m_filename, suffix); - - if (end) - *end = '.'; - } - } - - if (!m_pContentName) - m_pContentName = XP_STRDUP(m_filename); -} - -int -MSG_MimeRelatedSubpart::Write(void) -{ - // If we weren't given the mime type by the editor, - // then attempt to deduce it from what information we can get. - - if ((m_pOriginalURL) && (!m_type)) - { - // We weren't explicitly given the MIME type, so - // we ask the cache if it knows anything about this URL. - URL_Struct testUrl; - XP_MEMSET(&testUrl, 0, sizeof(URL_Struct)); - - testUrl.address = m_pOriginalURL; - int findResult = NET_FindURLInCache(&testUrl, - m_pParentFS->GetContext()); - if ((findResult != 0) && (testUrl.content_type)) - { - // Got a MIME type from the cache. - m_type = XP_STRDUP(testUrl.content_type); - } - } - - if ((m_pOriginalURL) && (!m_type)) - { - // Either we didn't find the URL in the cache, or - // we have it but don't know its MIME type. - // So, we trot out our last resort: attempt to grok - // the MIME type based on the filename. (Mr. Yuk says: "Yuk.") - - NET_cinfo *pMimeInfo = NET_cinfo_find_type(m_pOriginalURL); - if ((pMimeInfo) && (pMimeInfo->type)) - { - // Got a MIME type based on the filename. - m_type = XP_STRDUP(pMimeInfo->type); - } - } - - if (!m_type) - { - // No matter what we've done, we will never figure out the type. - // So, we punt and call it an application/octet-stream. - m_type = XP_STRDUP(APPLICATION_OCTET_STREAM); - } - - // Determine what the encoding of this data should be depending - // on the MIME type. This is fairly braindead: base64 encode anything - // that isn't text. - if (m_type && (!m_rootPart)) - { -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) - // Uuencode only if we have to, otherwise use base64 - if (m_pParentFS->m_pPane-> - GetCompBoolHeader(MSG_UUENCODE_BINARY_BOOL_HEADER_MASK)) - { - m_pEncoding = XP_STRDUP(ENCODING_UUENCODE); - SetEncoderData(MimeUUEncoderInit(m_pContentName ? m_pContentName : "", -#ifdef XP_OS2 - (int (_Optlink*) (const char*,int32,void*)) -#endif - WriteEncodedMessageBody, - this)); - } - else - { - m_pEncoding = XP_STRDUP(ENCODING_BASE64); - SetEncoderData(MimeB64EncoderInit( -#ifdef XP_OS2 - (int (_Optlink*) (const char*,int32,void*)) -#endif - WriteEncodedMessageBody, - this)); - } -#endif /* !MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE */ - } - - // Horrible hack: if we got a local filename then we're the root lump, - // hence we don't generate a content ID header in that case - // (but we do in all other cases where we have a content ID) - char *cidHeader = NULL; - if ((!m_rootPart) && (m_pContentID)) - { - cidHeader = GenerateCIDHeader(); - if (cidHeader) - { - AppendOtherHeaders(cidHeader); - AppendOtherHeaders(CRLF); - XP_FREE(cidHeader); - } - } - - if (m_pEncoding) - { - char *encHeader = GenerateEncodingHeader(); - if (encHeader) - { - AppendOtherHeaders(encHeader); - AppendOtherHeaders(CRLF); - XP_FREE(encHeader); - } - } - - if ((!m_rootPart) && (m_pOriginalURL)) - { - char *fileHeader = PR_smprintf("Content-Disposition: inline; filename=\"%s\"", - m_pContentName ? m_pContentName : ""); - if (fileHeader) - { - AppendOtherHeaders(fileHeader); - AppendOtherHeaders(CRLF); - XP_FREE(fileHeader); - } - } - - // Horrible hack: if we got a local filename then we're the root lump, - // hence we don't generate a content ID header in that case - // (but we do in all other cases where we have a content ID) - cidHeader = NULL; - if ((!m_rootPart) && (m_pContentID)) - { - cidHeader = GenerateCIDHeader(); - if (cidHeader) - { - AppendOtherHeaders(cidHeader); - AppendOtherHeaders(CRLF); - XP_FREE(cidHeader); - } - } - - if (m_pEncoding) - { - char *encHeader = GenerateEncodingHeader(); - if (encHeader) - { - AppendOtherHeaders(encHeader); - AppendOtherHeaders(CRLF); - XP_FREE(encHeader); - } - } - - if ((!m_rootPart) && (m_pOriginalURL)) - { - char *fileHeader = PR_smprintf("Content-Disposition: inline; filename=\"%s\"", - m_pContentName ? m_pContentName : ""); - if (fileHeader) - { - AppendOtherHeaders(fileHeader); - AppendOtherHeaders(CRLF); - XP_FREE(fileHeader); - } - } - - return MSG_SendPart::Write(); -} - -/* ----------------------------------------------------------------------- -MSG_MimeRelatedParentPart ----------------------------------------------------------------------- -*/ - -MSG_MimeRelatedParentPart::MSG_MimeRelatedParentPart(int16 part_csid) -: MSG_SendPart(NULL, part_csid) -{ -} - -MSG_MimeRelatedParentPart::~MSG_MimeRelatedParentPart(void) -{ -} - -#ifdef MOZ_ENDER_MIME -/* ----------------------------------------------------------------------- -MSG_MimeRelatedStreamSaver ----------------------------------------------------------------------- -*/ - -// Constructor -MSG_MimeRelatedStreamSaver::MSG_MimeRelatedStreamSaver(MSG_CompositionPane *pane, - MWContext *context, - MSG_CompositionFields *fields, - XP_Bool digest_p, - MSG_Deliver_Mode deliver_mode, - const char *body, - uint32 body_length, - MSG_AttachedFile *attachedFiles, - DeliveryDoneCallback cb, - char **ppOriginalRootURL, - char **ppStreamOut) - : MSG_MimeRelatedSaver(pane,context,fields,digest_p,deliver_mode, - body,body_length,attachedFiles,cb,ppOriginalRootURL),m_pFilename(NULL),m_ppStreamOut(ppStreamOut) - -{ - -} - - - -MSG_MimeRelatedStreamSaver::~MSG_MimeRelatedStreamSaver() -{ - XP_FREEIF(m_pFilename); -} - - - -extern "C" char *mime_make_separator(const char *prefix); - -extern "C" int mimer_outputfile_func(const char *p_buffer,int32 p_size,void *closure) -{ - XP_File t_file; - t_file = (XP_File)closure; - return XP_FileWrite(p_buffer,p_size,t_file); -} - - - -extern "C" int mimer_outputmem_func(const char *p_buffer,int32 p_size,void *closure) -{ - memstream *t_buf = (memstream *)closure; - (*t_buf).write(p_buffer,p_size); - return p_size; -} - - - -void -MSG_MimeRelatedStreamSaver::Complete( Bool bSuccess, EDT_ITapeFileSystemComplete *pfComplete, void *pArg ) -{ - m_pEditorCompletionFunc = pfComplete; - m_pEditorCompletionArg = pArg; - - // Call StartMessageDelivery (and should) if we - // were told to at creation time. - if (bSuccess && m_pPart) - { - //make new message! - GenericMimeRelatedData *t_data; - memstream *t_buf= NULL; - XP_File t_file(NULL); - if (!m_ppStreamOut) - { - m_pFilename = WH_TempName (xpFileToPost, "nswebm"); - if (m_pFilename) - { - t_file = XP_FileOpen(m_pFilename,xpTemporary,XP_FILE_WRITE); - t_data = GenericMime_Init(mime_make_separator(""),mimer_outputfile_func,t_file); - } - } - else - { - t_buf = new memstream(MESSAGE_START_SIZE);//arbitrary starting size - t_data = GenericMime_Init(mime_make_separator(""),mimer_outputmem_func,t_buf); - } - int32 i; - for ( i=0 ;i< m_pPart->GetNumChildren();i++) - { - MSG_MimeRelatedSubpart *t_part; - t_part = (MSG_MimeRelatedSubpart *)m_pPart->GetChild(i); - if (t_part->GetType() && !XP_STRCMP(t_part->GetType(),"text/html")) - { - GenericMime_AddTextFile(t_data,XP_STRDUP(t_part->GetFilename()),t_part->GetCSID()); - } - else /*base64*/ - { - AttachmentFields *t_fields = AttachmentFields_Init(XP_STRDUP(t_part->GetFilename()),XP_STRDUP(t_part->m_pOriginalURL), - XP_STRDUP(t_part->GetType()),XP_STRDUP(t_part->m_pContentID)); - if (t_fields && m_pContext) - { - /*is this a SAFE file???? lets see...*/ - void* t_id = EDT_GetIdFromContext( m_pContext ); - if (t_id) - { - if (EDT_URLOnSafeList(t_id,t_part->m_pOriginalURL)) - GenericMime_AddBase64File(t_data,t_fields); - } - } - } - } - GenericMime_Begin(t_data); - GenericMime_Destroy(t_data); - if (t_file) - XP_FileClose(t_file); - if (t_buf) - { - (*t_buf).write("",1); - *m_ppStreamOut = t_buf->str(); - delete t_buf; - } - for (i=0;i< m_pPart->GetNumChildren();i++) - { - MSG_MimeRelatedSubpart *t_part; - t_part = (MSG_MimeRelatedSubpart *)m_pPart->GetChild(i); - if (t_part->GetType() && XP_STRCMP(t_part->GetType(),"text/html")) /*not text*/ - { - XP_FileRemove(t_part->GetFilename(), xpFileToPost); - } - } - // Call our UrlExit routine to perform cleanup. - MSG_MimeRelatedSaver::UrlExit(m_pContext, this, 0, NULL); - } - else - { - // delete the contained part since we failed - delete m_pPart; - m_pPart = NULL; - // Call our UrlExit routine to perform cleanup. - MSG_MimeRelatedSaver::UrlExit(m_pContext, this, MK_INTERRUPTED, NULL); - } -} -#endif //MOZ_ENDER_MIME - - - -/* ----------------------------------------------------------------------- -MSG_MimeRelatedSaver ----------------------------------------------------------------------- -*/ - -#if defined(MOZ_ENDER_MIME) && !defined(MOZ_MAIL_COMPOSE) - -extern char * msg_generate_message_id(void); - -char * -msg_generate_message_id (void) -{ - time_t now = XP_TIME(); - uint32 salt = 0; - const char *host = 0; - const char *from = FE_UsersMailAddress (); - - RNG_GenerateGlobalRandomBytes((void *) &salt, sizeof(salt)); - - if (from) - { - host = XP_STRCHR (from, '@'); - if (host) - { - const char *s; - for (s = ++host; *s; s++) - if (!XP_IS_ALPHA(*s) && !XP_IS_DIGIT(*s) && - *s != '-' && *s != '_' && *s != '.') - { - host = 0; - break; - } - } - } - - if (! host) - /* If we couldn't find a valid host name to use, we can't generate a - valid message ID, so bail, and let NNTP and SMTP generate them. */ - return 0; - - return PR_smprintf("<%lX.%lX@%s>", - (unsigned long) now, (unsigned long) salt, host); -} -#endif //MOZ_ENDER_MIME && !MOZ_MAIL_COMPOSE - - - -// Constructor -MSG_MimeRelatedSaver::MSG_MimeRelatedSaver(MSG_CompositionPane *pane, - MWContext *context, - MSG_CompositionFields *fields, - XP_Bool digest_p, - MSG_Deliver_Mode deliver_mode, - const char *body, - uint32 body_length, - MSG_AttachedFile *attachedFiles, - DeliveryDoneCallback cb, - char **ppOriginalRootURL) - : m_pContext(context), m_pBaseURL(NULL), m_pSourceBaseURL(NULL), - m_pPane(pane), m_pFields(fields), m_digest(digest_p), - m_deliverMode(deliver_mode), m_pBody(body), m_bodyLength(body_length), - m_pAttachedFiles(attachedFiles), m_cbDeliveryDone(cb) - -{ - // Generate the message ID. - m_pMessageID = msg_generate_message_id(); - if (m_pMessageID) - { - // Massage the message ID so that it can be used for generating - // part IDs. For now, just remove the angle brackets. - m_pMessageID[strlen(m_pMessageID)-1] = '\0'; // shorten the end by 1 - char *temp = XP_STRDUP(&(m_pMessageID[1])); // and strip off the leading '<' - if (temp) - { - XP_FREE(m_pMessageID); - m_pMessageID = temp; - } - } - XP_ASSERT(m_pMessageID); - // Create the part object that we represent. - m_pPart = new MSG_MimeRelatedParentPart(INTL_DefaultWinCharSetID(context)); - XP_ASSERT(m_pPart); - - if ((ppOriginalRootURL != NULL) && *(ppOriginalRootURL)) - { - // Have a valid string of some sort, wait to be added. - } - else if (ppOriginalRootURL != NULL) - { - // ### mwelch This is a hack, required because EDT_SaveFileTo - // requires a source URL string, even if the document - // is currently untitled. The hack consists of adding - // the return parameter in the constructor, and passing - // back an improvised source URL if we were not given one. - // - // Autogenerate the title and pass it back. -#ifdef MOZ_ENDER_MIME - m_rootFilename = WH_TempName(xpFileToPost,"nswebm"); -#else - m_rootFilename = WH_TempName(xpFileToPost,"nsmail"); -#endif - XP_ASSERT(m_rootFilename); - char * temp = WH_FileName(m_rootFilename, xpFileToPost); - *ppOriginalRootURL = XP_PlatformFileToURL(temp); - if (temp) - XP_FREE( temp ); - } - - // Set our type to be multipart/related. - m_pPart->SetType(MULTIPART_RELATED); -} - -// Destructor -MSG_MimeRelatedSaver::~MSG_MimeRelatedSaver(void) -{ - XP_FREEIF(m_pSourceBaseURL); - if (m_rootFilename) - { - XP_FileRemove(m_rootFilename, xpFileToPost); - XP_FREEIF(m_rootFilename); - } - XP_FREEIF(m_pMessageID); -} - -intn MSG_MimeRelatedSaver::GetType() -{ - return ITapeFileSystem::MailSend; -} - -MSG_MimeRelatedSubpart * -MSG_MimeRelatedSaver::GetSubpart(intn iFileIndex) -{ - XP_ASSERT(m_pPart != NULL); - - MSG_MimeRelatedSubpart *part = - (MSG_MimeRelatedSubpart *) m_pPart->GetChild(iFileIndex); - - return part; -} - -// This function is called before anything else. -// Tell the file system the base URL it is going to see. -void -MSG_MimeRelatedSaver::SetSourceBaseURL(char *pURL) -{ - XP_FREEIF(m_pSourceBaseURL); - m_pSourceBaseURL = XP_STRDUP(pURL); - -#if 0 - MSG_MimeRelatedSubpart *part = NULL; - // Remember the URL for later. - m_pBaseURL = pURL; - - // Add this URL as the first in the list. - if (m_pPart->GetNumChildren() == 0) - { - AddFile(pURL); - } - else - { - part = GetSubpart(0); - if (part) - { - XP_FREEIF(part->m_pOriginalURL); - part->m_pOriginalURL = (pURL == NULL) ? NULL : XP_STRDUP(pURL); - } - } - - // Fix the local URL/filename reference if we haven't already opened the file. - if (!part) - part = GetSubpart(0); - if (part && (part->m_pStreamOut == NULL)) - { - XP_FREEIF(part->m_pLocalURL); - part->m_pLocalURL = PR_smprintf("file:%s",part->GetFilename()); - XP_ASSERT(part->m_pLocalURL); - - part->SetOtherHeaders(""); // no headers for the lead part - } -#endif -} - -char* -MSG_MimeRelatedSaver::GetSourceURL(intn iFileIndex) -{ - char *result = NULL; - - MSG_MimeRelatedSubpart *part = GetSubpart(iFileIndex); - if (part->m_pOriginalURL) { - // Try to make absolute relative to value set in MSG_MimeRelatedSaver::SetSourceBaseURL(). - if (m_pSourceBaseURL) { - result = NET_MakeAbsoluteURL(m_pSourceBaseURL,part->m_pOriginalURL); - } - else { - result = XP_STRDUP(part->m_pOriginalURL); - } - } - - return result; -} - -// Add a name to the file system. -// Returns the index of the file added (0 based). -intn -MSG_MimeRelatedSaver::AddFile(char * pURL, char * pMimeType, int16 part_csid) -{ - intn returnValue = 0; - MSG_MimeRelatedSubpart *newPart = NULL; - int i; - - // See if a part with this url already exists. - for(i=0;(i<m_pPart->GetNumChildren()) && (!newPart);i++) - { - newPart = GetSubpart(i); - // Use EDT_IsSameURL to deal with case insensitivity on MAC and Win16 - if (!newPart || - !EDT_IsSameURL(newPart->m_pOriginalURL, pURL,m_pSourceBaseURL,m_pSourceBaseURL)) { - newPart = NULL; // not this one, try the next one - } - else { - // found it. - returnValue = i; - } - } - - if (newPart == NULL) - { - // Generate a Content ID. This will look a lot like our message ID, - // except that we will add the part number. - XP_ASSERT(m_pMessageID != NULL); - char *newPartID = PR_smprintf("part%ld.%s", (long) m_pPart->GetNumChildren(), - m_pMessageID); - XP_ASSERT(newPartID != NULL); - - char *newLocalURL = PR_smprintf("cid:%s",newPartID); - XP_ASSERT(newLocalURL != NULL); - - returnValue = m_pPart->GetNumChildren(); - - if (m_pPart->GetNumChildren() == 0) - // This is the root file in the file system. - newPart = new MSG_MimeRelatedSubpart(this, newPartID, pURL, - pURL, TEXT_HTML, part_csid, - m_rootFilename); - else - newPart = new MSG_MimeRelatedSubpart(this, newPartID, pURL, - newLocalURL, pMimeType, part_csid ); - - if (newPart) - m_pPart->AddChild(newPart); - else - returnValue = (intn) ITapeFileSystem::Error; // an error since 0 is the base URL (??) - - XP_FREEIF(newPartID); - XP_FREEIF(newLocalURL); - } - - return returnValue; -} - -intn -MSG_MimeRelatedSaver::GetNumFiles(void) -{ - return m_pPart->GetNumChildren(); -} - -char * -MSG_MimeRelatedSaver::GetDestAbsURL() -{ - // No meaningful destination URL for sending mail. - return NULL; -} - -// Get the name of the relative url to place in the file. -char * -MSG_MimeRelatedSaver::GetDestURL(intn iFileIndex) -{ - char *result = NULL; - - MSG_MimeRelatedSubpart *thePart = GetSubpart(iFileIndex); - if (thePart != NULL) - { - result = XP_STRDUP(thePart->m_pLocalURL); - } - - return result; -} - -char * -MSG_MimeRelatedSaver::GetDestPathURL(void) -{ - //return XP_STRDUP(""); // no path prefix for content IDs - return NULL; -} - -// Return the name to display when saving the file. -char * -MSG_MimeRelatedSaver::GetHumanName(intn iFileIndex) -{ - char *result = NULL; - - MSG_MimeRelatedSubpart *thePart = GetSubpart(iFileIndex); - if (thePart != NULL) - { - result = thePart->m_pOriginalURL; - char *end = XP_STRRCHR(result, '/'); - if (end) - result = XP_STRDUP(++end); - else - result = XP_STRDUP(result); - } - return result; -} - -// Open the output stream. -IStreamOut * -MSG_MimeRelatedSaver::OpenStream(intn iFileIndex) -{ - intn theError = 0; - IStreamOut *pStream = NULL; // in case we fail - - // Create a stream object that can be written to. - MSG_MimeRelatedSubpart *thePart = GetSubpart(iFileIndex); - if (thePart) - { - theError = (intn) thePart->GetStreamOut(&pStream); - } - return pStream; -} - -void -MSG_MimeRelatedSaver::CopyURLInfo(intn iFileIndex, const URL_Struct *pURL) -{ - MSG_MimeRelatedSubpart *thePart = GetSubpart(iFileIndex); - if (thePart != NULL) - thePart->CopyURLInfo(pURL); -} - -// Close the output stream. -// Called on completion. bSuccess is TRUE if completed successfully, -// FALSE if it failed. -void -MSG_MimeRelatedSaver::Complete(Bool bSuccess, - EDT_ITapeFileSystemComplete *pfComplete, - void *pArg ) -{ -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) - m_pEditorCompletionFunc = pfComplete; - m_pEditorCompletionArg = pArg; - - // Call StartMessageDelivery (and should) if we - // were told to at creation time. - if (bSuccess) - { - // If we only generated a single HTML part, treat that as - // the root part. - if (m_pPart->GetNumChildren() == 1) - { - MSG_SendPart *tempPart = m_pPart->DetachChild(0); - delete m_pPart; - m_pPart = tempPart; - } - - msg_StartMessageDeliveryWithAttachments(m_pPane, this, - m_pFields, - m_digest, FALSE, - m_deliverMode, - TEXT_HTML, - m_pBody, m_bodyLength, - m_pAttachedFiles, - m_pPart, -#ifdef XP_OS2 - (void (_Optlink*) (MWContext*,void*,int,const char*)) -#endif - MSG_MimeRelatedSaver::UrlExit); - } - else - { - // delete the contained part since we failed - delete m_pPart; - m_pPart = NULL; - - // Call our UrlExit routine to perform cleanup. - UrlExit(m_pPane->GetContext(), this, MK_INTERRUPTED, NULL); - } -#endif /* !MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE */ -} - -void -MSG_MimeRelatedSaver::UrlExit(MWContext *context, void *fe_data, int status, - const char *error_message) -{ - MSG_MimeRelatedSaver *saver = (MSG_MimeRelatedSaver *) fe_data; - XP_ASSERT(saver != NULL); - if (saver) - { - if (saver->m_pEditorCompletionFunc) - { - (*(saver->m_pEditorCompletionFunc))((status == 0), - saver->m_pEditorCompletionArg); - } - if (saver->m_cbDeliveryDone) - { - (*(saver->m_cbDeliveryDone))(context,saver->m_pPane, - status,error_message); - } - } - delete saver; // the part within stays around, we don't -} - -void -MSG_MimeRelatedSaver::CloseStream( intn iFileIndex ) -{ - // Get the piece whose stream we will close. - MSG_MimeRelatedSubpart *thePart = GetSubpart(iFileIndex); - if (thePart) - { - thePart->CloseStreamOut(); - } -} - -XP_Bool -MSG_MimeRelatedSaver::FileExists( intn /*iFileIndex*/ ) -{ - return FALSE; -} - -XP_Bool -MSG_MimeRelatedSaver::IsLocalPersistentFile(intn /*iFileIndex*/) { - return FALSE; -} - -extern "C" void * -MSG_CreateMimeRelatedStreamSaver(MWContext *context, - char **origRootURL, char **streamOut) -{ - return ((void *)new MSG_MimeRelatedStreamSaver( - NULL, context, NULL, FALSE, MSG_DeliverNow, - NULL, 0, NULL, NULL, origRootURL, streamOut)); -} - -//#endif diff --git a/mozilla/lib/mailto/mhtmlstm.h b/mozilla/lib/mailto/mhtmlstm.h deleted file mode 100644 index 26961ac3465..00000000000 --- a/mozilla/lib/mailto/mhtmlstm.h +++ /dev/null @@ -1,256 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - mhtmlstm.h --- generation of MIME HTML from the editor. - */ - -#ifndef LIBMSG_MHTMLSTM_H -#define LIBMSG_MHTMLSTM_H - -// Comment out the next line if you want to turn off the sending of multipart/related info. -#define MSG_SEND_MULTIPART_RELATED - -//#ifdef MSG_SEND_MULTIPART_RELATED - -#include "msg.h" -#include "itapefs.h" -#include "ptrarray.h" -#include "xp_file.h" -#include "ntypes.h" -#include "msgcpane.h" -#include "msgsendp.h" -#include "itapefs.h" - -class MSG_MimeRelatedStreamIn; -class MSG_MimeRelatedStreamOut; -class MSG_MimeRelatedSubpart; -class MSG_MimeRelatedSaver; -class MSG_SendMimeDeliveryState; - -typedef void (*DeliveryDoneCallback) (MWContext *context, - void *fe_data, - int status, - const char *error_message); - -// A record which represents a part of this multipart. -// Encapsulates the stuff necessary to convert MIME part data -// into message text. -class MSG_MimeRelatedSubpart : public MSG_SendPart -{ -public: - char *m_pOriginalURL; // Original URL for this lump - char *m_pLocalURL; // Local relative URL for this lump - MSG_MimeRelatedSaver *m_pParentFS; // The parent FS that includes us - char *m_pContentID; // Content ID of this lump - char *m_pEncoding; // Content transfer encoding - char *m_pContentName; // Content name (as conveyed by CopyURLInfo) - MSG_MimeRelatedStreamOut *m_pStreamOut; // Current output (to file) stream - XP_Bool m_rootPart; // Are we the first part of the multipart? - - MSG_MimeRelatedSubpart(MSG_MimeRelatedSaver *parent, - char *pContentID, - char *pOriginal, - char *pLocal, - char *pMime, - int16 part_csid, - char *pRootFileName = NULL); - - ~MSG_MimeRelatedSubpart(void); - - char *GetContentID(XP_Bool bAddMIMEPrefix); - int GetStreamOut(IStreamOut **pReturn); - int CloseStreamOut(void); - int Write(void); - - // Copy information out of the URL used to fetch its data - void CopyURLInfo(const URL_Struct *pURL); - - // Function used by the mime encoder when writing to message file - static int WriteEncodedMessageBody(const char *buf, int32 size, void *pPart); - - // Generate any additional header strings for this part - // (such as the "Content-ID:" string) - char * GenerateCIDHeader(void); - char * GenerateEncodingHeader(void); -}; - -class MSG_MimeRelatedSaver; - -class MSG_MimeRelatedParentPart : public MSG_SendPart -{ -public: - MSG_MimeRelatedParentPart(int16 part_csid); - virtual ~MSG_MimeRelatedParentPart(); - - //virtual int Write(); - - //virtual int SetFile(const char* filename, XP_FileType filetype); - //virtual int SetBuffer(const char* buffer); - //virtual int SetOtherHeaders(const char* other); - //virtual int AppendOtherHeaders(const char* moreother); - //virtual int AddChild(MSG_SendPart* child); -}; - -class MSG_MimeRelatedSaver : public ITapeFileSystem -{ -public: - MWContext * m_pContext; // Context - char * m_pBaseURL; // Base URL of this lump - char * m_pMessageID; // Message ID that we will use to generate - // unique names for each content ID - char * m_rootFilename; // Filename for root object (created at const. time) - char * m_pSourceBaseURL; // Only used to return absolute URLs for GetSourceURL() - - MSG_SendPart *m_pPart; - - // All these are parameters to be passed to StartMessageDelivery - MSG_CompositionPane *m_pPane; - MSG_CompositionFields *m_pFields; - XP_Bool m_digest; - MSG_Deliver_Mode m_deliverMode; - const char *m_pBody; - uint32 m_bodyLength; - MSG_AttachedFile *m_pAttachedFiles; - DeliveryDoneCallback m_cbDeliveryDone; - void (*m_pEditorCompletionFunc)(XP_Bool success, void *data); - void *m_pEditorCompletionArg; - - void ClearAllParts(void); - -public: - MSG_MimeRelatedSaver(MSG_CompositionPane *pane, MWContext *context, - MSG_CompositionFields *fields, - XP_Bool digest_p, MSG_Deliver_Mode deliver_mode, - const char *body, uint32 body_length, - MSG_AttachedFile *attachedFiles, - DeliveryDoneCallback cb, - char **ppOriginalRootURL); - virtual ~MSG_MimeRelatedSaver(); - - - virtual intn GetType(); - - // This function is called before anything else. It tells the file - // system the base url it is going to see. - virtual void SetSourceBaseURL( char* pURL ); - - virtual char* GetSourceURL(intn iFileIndex); - - // DESCRIPTION: - // - // Add a name to the file system. It is up to the file system to localize - // the name. For example, I could add 'http://home.netscape.com/' - // and the file system might decide that it should be called 'index.html' - // if the file system were DOS, the url might be converted to INDEX.HTML - // - // RETURNS: index of the file (0 based) - // - virtual intn AddFile( char* pURL, char *pMimeType, int16 iDocCharSetID ); - - // Count the number of files we know about. - virtual intn GetNumFiles(void); - - virtual char* GetDestAbsURL(); - - // Gets the name of the RELATIVE url to place in the file. String is - // allocated with XP_STRDUP(); - // - virtual char* GetDestURL( intn iFileIndex ); - - // String is allocated with XP_STRDUP(). - virtual char* GetDestPathURL(); - - // - // Returns the name to display when saving the file, can be the same as - // GetURLName. String is allocated with XP_STRDUP(); - // - virtual char* GetHumanName( intn iFileIndex ); - - virtual XP_Bool IsLocalPersistentFile(intn iFileIndex); - - // Does the file referenced by iFileIndex already exist? - // For the MHTML version, this will always return FALSE. - virtual XP_Bool FileExists(intn iFileIndex); - - // - // Opens the output stream. Returns a stream that can be written to. All - // 'AddFile's occur before the first OpenStream. - // - virtual IStreamOut * OpenStream( intn iFileIndex ); - - virtual void CloseStream( intn iFileIndex ); - - // ### mwelch Added so that multipart/related message saver can properly construct - // messages using quoted/forwarded part data. - // Tell the tape file system the mime type of a particular part. - // (Calling this overrides any previously determined mime type for this part.) - virtual void CopyURLInfo(intn iFileIndex, const URL_Struct *pURL); - - // - // Called on completion, TRUE if completed successfully, FALSE if it failed. - // - virtual void Complete( Bool bSuccess, EDT_ITapeFileSystemComplete *pfComplete, void *pArg ); - // Has this file system received a true multipart or just some HTML? - char *GetMimeType(void); - - MWContext *GetContext(void) const { return m_pContext; } - - char *GetMessageID(void) const { return m_pMessageID; } - - MSG_MimeRelatedSubpart *GetSubpart( intn iFileIndex ); - - // Used when the mail system is done sending the message. - // Causes the editor to clean up from the save. - static void UrlExit(MWContext *context, void *fe_data, int status, - const char *error_message); -}; - -//#endif - - -#ifdef MOZ_ENDER_MIME -//used to stop lame mimerelated saver from sending a message! -class MSG_MimeRelatedStreamSaver : public MSG_MimeRelatedSaver -{ -public: - MSG_MimeRelatedStreamSaver(MSG_CompositionPane *pane, MWContext *context, - MSG_CompositionFields *fields, - XP_Bool digest_p, MSG_Deliver_Mode deliver_mode, - const char *body, uint32 body_length, - MSG_AttachedFile *attachedFiles, - DeliveryDoneCallback cb, - char **ppOriginalRootURL, - char **ppStreamOut); - virtual ~MSG_MimeRelatedStreamSaver(); - - // - // Called on completion, TRUE if completed successfully, FALSE if it failed. - // we dont want the message to be sent, so we stop mimerelated saver from completing - // - virtual void Complete( Bool bSuccess, EDT_ITapeFileSystemComplete *pfComplete, void *pArg ); -private: - char *m_pFilename; - char **m_ppStreamOut; -}; -#endif //MOZ_ENDER_MIME - -#endif diff --git a/mozilla/lib/mailto/mprdecod.cpp b/mozilla/lib/mailto/mprdecod.cpp deleted file mode 100644 index b33c70fb358..00000000000 --- a/mozilla/lib/mailto/mprdecod.cpp +++ /dev/null @@ -1,777 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -* -* The contents of this file are subject to the Netscape Public -* License Version 1.1 (the "License"); you may not use this file -* except in compliance with the License. You may obtain a copy of -* the License at http://www.mozilla.org/NPL/ -* -* Software distributed under the License is distributed on an "AS -* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -* implied. See the License for the specific language governing -* rights and limitations under the License. -* -* The Original Code is mozilla.org code. -* -* The Initial Developer of the Original Code is Netscape -* Communications Corporation. Portions created by Netscape are -* Copyright (C) 1998 Netscape Communications Corporation. All -* Rights Reserved. -* -* Contributor(s): -*/ -/*mjudge*/ - -#include "xp_core.h" -#include "xp_file.h" -#include "xp_mem.h" -#include "xpassert.h" -#include "xp_mcom.h" -#include "mprdecod.h" -#include "memstrem.h" -#include "mimeenc.h" - - -#define CONTENT_TYPE_MPR_MIMEREL "multipart/related;" -#define CONTENT_TYPE_TXT_MIMEREL "text/html;" -#define CONENT_CHARSEL_MIMEREL "charset=" -#define CONTENT_TYPE_MIMEREL "Content-Type:" -#define CONTENT_ID_MIMEREL "Content-ID:" -#define CONTENT_TRANS_MIMEREL "Content-Transfer-Encoding:" -#define BASE64_MIMEREL "base64" -#define UUENCODE_MIMEREL "uuencode" -#define BIT7_MIMEREL "7bit" -#define BOUNDARYSTR_MIMEREL "boundary" -#define XMOZSTATUS_MIMEREL "X-Mozilla-Status: 8001" -#define CONTENT_DISPOSITION_MIMEREL "Content-Disposition:" -#define IMAGE_GIF_MIMEREL "image/gif" -#define IMAGE_JPG_MIMEREL "image/jpeg" -#define IMAGE_PNG_MIMEREL "image/png" -#define FILENAME_MIMEREL "filename" - - -/* -SimpleMultiPart -SimpleMultiPart -SimpleMultiPart -*/ - - -SimpleMultiPart::SimpleMultiPart() -{ - m_pFileName = NULL; - m_pContentId = NULL; - m_pCharset = NULL; - m_pEncoding = NULL; - m_iContentType = UNKNOWN_TYPE; - m_pUrlFileName = NULL; -} - - - -SimpleMultiPart::~SimpleMultiPart() -{ - XP_FREEIF(m_pFileName); - XP_FREEIF(m_pContentId); - XP_FREEIF(m_pCharset); - XP_FREEIF(m_pEncoding); -} - - - -void -SimpleMultiPart::setFileName(const char *p_pFileName) -{ - XP_FREEIF(m_pFileName); - m_pFileName = XP_STRDUP(p_pFileName); -} - - - -const char * -SimpleMultiPart::getUrlFileName() -{ - XP_FREEIF(m_pUrlFileName); - m_pUrlFileName = XP_PlatformFileToURL(m_pFileName); - return m_pUrlFileName; -} - - - -void -SimpleMultiPart::setCharset(const char *p_pCharset) -{ - XP_FREEIF(m_pCharset); - m_pCharset = XP_STRDUP(p_pCharset); -} - - - -void -SimpleMultiPart::setContentId(const char *p_pContentId) -{ - XP_FREEIF(m_pContentId); - m_pContentId = XP_STRDUP(p_pContentId); -} - - - -void -SimpleMultiPart::setEncoding(const char *p_pEncoding) -{ - XP_FREEIF(m_pEncoding); - m_pEncoding = XP_STRDUP(p_pEncoding); -} - - - -/* -SimpleMultipartRelatedMimeDecoder -SimpleMultipartRelatedMimeDecoder -SimpleMultipartRelatedMimeDecoder -*/ -SimpleMultipartRelatedMimeDecoder::SimpleMultipartRelatedMimeDecoder(XP_File p_stream) -{ - m_pBoundaryName = NULL; - m_ppParts = NULL; - m_iNumParts = 0; - m_pFileStream = p_stream; - m_pMemStream = NULL; - m_iMemStreamLoc = 0; - m_iMemStreamLen = 0; -} - - - -SimpleMultipartRelatedMimeDecoder::SimpleMultipartRelatedMimeDecoder(const char *p_stream, int32 p_len) -{ - m_pBoundaryName = NULL; - m_ppParts = NULL; - m_iNumParts = 0; - m_pFileStream = NULL; - m_pMemStream = p_stream; - m_iMemStreamLoc = 0; - m_iMemStreamLen = p_len; - m_pHeaderFileName = NULL; -} - - - -SimpleMultipartRelatedMimeDecoder::~SimpleMultipartRelatedMimeDecoder() -{ - if (m_pHeaderFileName) - XP_FileRemove(m_pHeaderFileName,xpFileToPost); - clear_all(); -} - - - -void -SimpleMultipartRelatedMimeDecoder::clear_all() -{ - XP_FREEIF(m_pBoundaryName); - XP_FREEIF(m_pHeaderFileName); - - for (int i= 0; i< m_iNumParts; i++) - { - delete m_ppParts[i]; - } - XP_FREEIF(m_ppParts); - m_ppParts = NULL; - m_iNumParts = 0; -} - - - -SimpleMultiPart * -SimpleMultipartRelatedMimeDecoder::getPart(int32 p_index) -{ - XP_ASSERT(p_index < m_iNumParts); - if (p_index < m_iNumParts) - return m_ppParts[p_index]; - return NULL; -} - - - -XP_Bool -SimpleMultipartRelatedMimeDecoder::begin() -{ - char t_tempbuffer[MAX_BUFFER_LEN + 1];//no parameter allowed longer than MAX_BUFFER_LEN. +1 for the NULL termination - int t_index = 0; //used to index t_tempbuffer - XP_FREEIF(m_pHeaderFileName); - m_pHeaderFileName = WH_TempName (xpFileToPost, m_pPrefix); - XP_File t_pHeaderFile; - if (m_pHeaderFileName) - t_pHeaderFile = XP_FileOpen(m_pHeaderFileName, xpFileToPost, XP_FILE_WRITE);//write text only - else - return FALSE; - if (!m_pHeaderFileName || !t_pHeaderFile) - return FALSE; - - - // find first string. take all data and throw it into the header file if necessary - XP_Bool t_foundstr = FALSE; - - t_foundstr = searchForString(CONTENT_TYPE_MIMEREL, t_pHeaderFile); - XP_FileClose(t_pHeaderFile); - if (!t_foundstr) - return TRUE; /*just data, no multipartrelated*/ - - t_foundstr = searchForString(CONTENT_TYPE_MPR_MIMEREL, NULL); - if (!t_foundstr) - return FALSE; - //find boundary marker. - t_foundstr = searchForString(BOUNDARYSTR_MIMEREL, NULL); - if (!t_foundstr) - return FALSE; - if (!eatWhite()) - return FALSE; - if (getCh() != '=') - return FALSE; - if (!eatWhite()) - return FALSE; - if (getCh() != '\"') - return FALSE; - char t_char; - while( (t_char = getCh()) ) - { - if (t_index >= MAX_BUFFER_LEN || isspace(t_char) || t_char == '\"') - break; //done - t_tempbuffer[t_index++] = t_char; - } - if (t_index >= MAX_BUFFER_LEN) - return FALSE; - t_tempbuffer[t_index] = 0; //nul terminate the string - m_pBoundaryName = XP_STRDUP(t_tempbuffer); - if (!isspace(getCh())) - return FALSE; - //fun part - XP_Bool t_done = !searchForString(m_pBoundaryName, NULL); - - //found 1st boundary. keep going until we reach the last - while(!t_done) - { - if ( getCh() == '-') - if (getCh() == '-') - { - t_done = TRUE; //reached the end - break; //just break here. if we need to check t_done someother time thats ok - } - else - backUp(); - backUp(); - if (!getNextString(t_tempbuffer, MAX_BUFFER_LEN)) - return FALSE; - if (XP_STRCASECMP(CONTENT_TYPE_MIMEREL,t_tempbuffer)) - return FALSE; - if (!eatWhite()) - return FALSE; - if (!getNextString(t_tempbuffer, MAX_BUFFER_LEN)) - return FALSE; - if (!XP_STRCASECMP(CONTENT_TYPE_TXT_MIMEREL,t_tempbuffer)) - {//text/html - if (!readTextHtml(t_tempbuffer)) - return FALSE; - } - else - {//image ect - if (!readEncoded(t_tempbuffer)) - return FALSE; - } - } - return TRUE; -} - - - -//why waste space on a temp buffer? -XP_Bool -SimpleMultipartRelatedMimeDecoder::readTextHtml(char p_buffer[MAX_BUFFER_LEN]) -{ - SimpleMultiPart *t_part = new SimpleMultiPart(); - if (!t_part) - return FALSE; - - t_part->setType(SimpleMultiPart::TEXTHTML); - if (!getNextString(p_buffer, MAX_BUFFER_LEN)) - { delete t_part; return FALSE; } - if (!XP_STRCASECMP(CONENT_CHARSEL_MIMEREL,p_buffer)) - {//we have a charset! - if (!getNextString(p_buffer, MAX_BUFFER_LEN)) - { delete t_part; return FALSE; } - t_part->setCharset(p_buffer); - if (!getNextString(p_buffer, MAX_BUFFER_LEN)) - { delete t_part; return FALSE; } - } - if (XP_STRCASECMP(CONTENT_TRANS_MIMEREL,p_buffer)) - if (!searchForString(CONTENT_TRANS_MIMEREL, NULL)) - { delete t_part; return FALSE; } - if (!getNextString(p_buffer, MAX_BUFFER_LEN)) - { delete t_part; return FALSE; } - t_part->setEncoding(p_buffer); - /* - now it gets interesting. we need a new file to be created. we will search - for the boundary string. until we find it, we will throw each char into the file. - perhaps this isnt the fastest. - */ - eatWhite(); - t_part->setFileName(WH_TempName (xpFileToPost, m_pPrefix)); - if (!t_part->getFileName()) - { delete t_part; return FALSE; } - XP_File t_file; - //write text only - t_file = XP_FileOpen(t_part->getFileName(), xpFileToPost, XP_FILE_WRITE); - if (!t_file) - { delete t_part; return FALSE; } - if (!searchForString(m_pBoundaryName, t_file))//writes to file - { delete t_part; return FALSE; } - XP_FileClose(t_file); - m_iNumParts++; - if (m_ppParts) - m_ppParts = (SimpleMultiPart **)XP_REALLOC(m_ppParts, m_iNumParts * sizeof (SimpleMultiPart *)); - else - m_ppParts = (SimpleMultiPart **)XP_ALLOC(m_iNumParts * sizeof (SimpleMultiPart *)); - m_ppParts[m_iNumParts -1] = t_part; - return TRUE; -} - - - -//why waste space on a temp buffer? -XP_Bool -SimpleMultipartRelatedMimeDecoder::readEncoded(char p_buffer[MAX_BUFFER_LEN]) -{ - SimpleMultiPart *t_part = new SimpleMultiPart(); - if (!t_part) - return FALSE; - - if (!XP_STRCASECMP(IMAGE_GIF_MIMEREL,p_buffer)) - t_part->setType(SimpleMultiPart::IMAGEGIF); - else if (!XP_STRCASECMP(IMAGE_JPG_MIMEREL,p_buffer)) - t_part->setType(SimpleMultiPart::IMAGEJPG); - else if (!XP_STRCASECMP(IMAGE_PNG_MIMEREL,p_buffer)) - t_part->setType(SimpleMultiPart::IMAGEPNG); - else - { delete t_part; return FALSE; } - - /* - we must find a content id or this part is useless. and all bets are off. - */ - if (!getNextString(p_buffer, MAX_BUFFER_LEN)) - { delete t_part; return FALSE; } - if (XP_STRCASECMP(CONTENT_ID_MIMEREL,p_buffer)) - { delete t_part; return FALSE; } - eatWhite(); - if (getCh() != '<') - { delete t_part; return FALSE; } - if (!getNextString(p_buffer, MAX_BUFFER_LEN)) - { delete t_part; return FALSE; } - if (getCh() != '>') - { delete t_part; return FALSE; } - //we have a content-id - t_part->setContentId(p_buffer); - - if (!getNextString(p_buffer, MAX_BUFFER_LEN)) - { delete t_part; return FALSE; } - if (XP_STRCASECMP(CONTENT_TRANS_MIMEREL,p_buffer)) - { delete t_part; return FALSE; } - - if (!getNextString(p_buffer, MAX_BUFFER_LEN)) - { delete t_part; return FALSE; } - t_part->setEncoding(p_buffer); - - if (!getNextString(p_buffer, MAX_BUFFER_LEN)) - { delete t_part; return FALSE; } - if (XP_STRCASECMP(CONTENT_DISPOSITION_MIMEREL,p_buffer)) - { delete t_part; return FALSE; } - if (!searchForString(FILENAME_MIMEREL, NULL)) - { delete t_part; return FALSE; } - eatWhite(); - if (getCh()!='=') - { delete t_part; return FALSE; } - eatWhite(); - char t_char; //eat the disposition filename - while ((t_char = getCh()) && !isspace(t_char)); - backUp(); - /*we didnt care about the disposition. we need to make a completely unknown file for - security purposes*/ - - - /* - now it gets interesting. we need a new file to be created. we will search - for the boundary string. until we find it, we will throw each char into the file. - perhaps this isnt the fastest. - */ - eatWhite(); - t_part->setFileName(WH_TempName (xpFileToPost, m_pPrefix)); - if (!t_part->getFileName()) - { delete t_part; return FALSE; } - XP_File t_file; - //write text only - t_file = XP_FileOpen(t_part->getFileName(), xpFileToPost, XP_FILE_WRITE); - if (!t_file) - { delete t_part; return FALSE; } - if (!searchForString(m_pBoundaryName, t_file))//writes to file - { - XP_FileClose(t_file); - delete t_part; - return FALSE; - } - XP_FileClose(t_file); - m_iNumParts++; - if (m_ppParts) - m_ppParts = (SimpleMultiPart **)XP_REALLOC(m_ppParts, m_iNumParts * sizeof (SimpleMultiPart *)); - else - m_ppParts = (SimpleMultiPart **)XP_ALLOC(m_iNumParts * sizeof (SimpleMultiPart *)); - m_ppParts[m_iNumParts -1] = t_part; - return TRUE; -} - - - -XP_Bool -SimpleMultipartRelatedMimeDecoder::getNextString(char *p_buffer, int32 p_maxbuflen) -{ - if (!eatWhite()) - return FALSE; - int t_index = 0; - char t_char = 0; - while( t_index < p_maxbuflen ) - { - t_char = getCh(); - if (!t_char || t_char ==':' || t_char ==';' || t_char == '=' ) - { - p_buffer[t_index++] = t_char; - if (t_char) - { - if (t_index < p_maxbuflen) - p_buffer[t_index] = 0; - else - return FALSE;//no room for null termination - } - return TRUE; - } - if (isspace(t_char) || t_char == '\"' || t_char =='<' || t_char == '>') - { - backUp(); - p_buffer[t_index] = 0; - return TRUE; - } - p_buffer[t_index++] = t_char; - } - return FALSE; //ran out of room - -} - - - -XP_Bool -SimpleMultipartRelatedMimeDecoder::searchForString(const char *t_searchstring, XP_File p_output) -{ - char t_char; - int32 t_strlen = XP_STRLEN(t_searchstring); - int32 t_stringindex = 0; - while ((t_char = getCh()) && t_stringindex < t_strlen) - { - if (t_searchstring[t_stringindex] == t_char) - { - t_stringindex++; - } - else - { - if (t_stringindex && p_output) - XP_FileWrite(t_searchstring,t_stringindex,p_output); - - t_stringindex = 0; - if (p_output) - XP_FileWrite(&t_char,1,p_output); - } - } - if (t_char) - { - backUp(); - return TRUE; - } - return FALSE; -} - - - -char -SimpleMultipartRelatedMimeDecoder::getCh() -{ - if (m_pMemStream) - { - if (m_iMemStreamLoc < m_iMemStreamLen) - return m_pMemStream[m_iMemStreamLoc++]; - else - { - m_iMemStreamLoc--; - return 0; - } - } - else if (m_pFileStream) - { - char t_char[2]; - if (1 == XP_FileRead(t_char,1,m_pFileStream)) - return t_char[0]; - else - return 0; - } - else - { - XP_ASSERT(FALSE); - return 0; - } -} - - - -void -SimpleMultipartRelatedMimeDecoder::backUp() -{ - if (m_pMemStream) - { - m_iMemStreamLoc--; - } - else if (m_pFileStream) - { - XP_FileSeek(m_pFileStream, -1, SEEK_CUR); - } - else - { - XP_ASSERT(FALSE); - } -} - - - -XP_Bool -SimpleMultipartRelatedMimeDecoder::eatWhite() -{ - char t_char; - while( (t_char = getCh()) && isspace( t_char ) ); - if (t_char) - { - backUp(); - return TRUE; - } - return FALSE; -} - - - -int32 -SimpleMultipartRelatedMimeDecoder::lookUpByPartId(const char *p_id) -{ - for (int i = 0;i < getNumberOfParts(); i++ ) - { - SimpleMultiPart *t_part = getPart(i); - if (t_part->getContentId()) - if (! XP_STRNCMP(t_part->getContentId(), p_id, XP_STRLEN(t_part->getContentId()))) - { - return i; - } - } - return -1; -} - - - -/* -OTHER API CALLS -*/ - - - -#define CHUNK_SIZE 255 -char *ReadBufferFromFile(const char *p_pFileName) -{ - memstream t_stream(CHUNK_SIZE,CHUNK_SIZE); - XP_File t_inputfile; - char t_readbuffer[CHUNK_SIZE]; - if( (t_inputfile = XP_FileOpen(p_pFileName,xpFileToPost,XP_FILE_READ)) != NULL ) - { - /* Attempt to read in READBUFLEN characters */ - while (!feof( t_inputfile )) - { - int numread = XP_FileRead( t_readbuffer, CHUNK_SIZE -1, t_inputfile ); - if (ferror(t_inputfile)) - { - XP_ASSERT(FALSE); - break; - } - t_stream.write(t_readbuffer,numread); - } - XP_FileClose( t_inputfile ); - } - t_stream.write("",1); /*null terminate*/ - return t_stream.str(); -} - - - -extern "C" int mimer_outputfile_func(const char *p_buffer,int32 p_size,void *closure); - - -XP_Bool DecodeSimpleMime(SimpleMultipartRelatedMimeDecoder &p_rDecoder, const char *p_pPrefix) -{ - char *t_pNewFileName = NULL; - for (int i = 0 ; i < p_rDecoder.getNumberOfParts(); i++) - { - SimpleMultiPart *t_part = p_rDecoder.getPart(i); - XP_File t_file; - XP_FREEIF(t_pNewFileName); - t_pNewFileName = WH_TempName (xpFileToPost, p_pPrefix); - if (!t_pNewFileName) - return FALSE; - char *t_suffix; - t_suffix = XP_STRRCHR(t_pNewFileName,'.'); //searching for suffix .XXX - if (t_suffix && !XP_STRNCASECMP(t_suffix,".TMP ",4)) - { - if (t_part->getType() == SimpleMultiPart::IMAGEGIF) - XP_STRNCPY_SAFE(t_suffix,".gif",5); - if (t_part->getType() == SimpleMultiPart::IMAGEJPG) - XP_STRNCPY_SAFE(t_suffix,".jpg",5); - if (t_part->getType() == SimpleMultiPart::IMAGEPNG) - XP_STRNCPY_SAFE(t_suffix,".png",5); - } - - MimeDecoderData *t_data; - if ( !XP_STRCMP(t_part->getEncoding() , BASE64_MIMEREL)) - { - t_file = XP_FileOpen(t_pNewFileName, xpFileToPost, XP_FILE_WRITE_BIN);//write binary only - if (!t_file) - { - XP_FREEIF(t_pNewFileName); - return FALSE; - } - t_data = MimeB64DecoderInit(mimer_outputfile_func, t_file); - } - else if ( !XP_STRCMP(t_part->getEncoding() , UUENCODE_MIMEREL)) - { - t_file = XP_FileOpen(t_pNewFileName, xpFileToPost, XP_FILE_WRITE_BIN);//write binary only - if (!t_file) - { - XP_FREEIF(t_pNewFileName); - return FALSE; - } - t_data = MimeUUDecoderInit(mimer_outputfile_func, t_file); - } - else if ( !XP_STRCMP(t_part->getEncoding() , BIT7_MIMEREL)) - { - - continue; /*dont do anything to this one*/ - } - else - continue; - - XP_File t_inputfile; - char t_readbuffer[CHUNK_SIZE]; - if( (t_inputfile = XP_FileOpen(t_part->getFileName(),xpFileToPost,XP_FILE_READ)) != NULL ) - { - /* Attempt to read in READBUFLEN characters */ - while (!feof( t_inputfile )) - { - int numread = XP_FileRead( t_readbuffer, CHUNK_SIZE -1, t_inputfile ); - if (ferror(t_inputfile)) - { - XP_ASSERT(FALSE); - break; - } - MimeDecoderWrite(t_data,t_readbuffer,numread); - } - XP_FileClose( t_inputfile ); - } - XP_FileClose( t_file ); - XP_FileRemove(t_part->getFileName(),xpFileToPost); - t_part->setFileName(t_pNewFileName); - } - return TRUE; -} - - - -char *ParseBuffer(char *p_pOldBuffer,SimpleMultipartRelatedMimeDecoder &p_rDecoder) -{ - if (!p_pOldBuffer) - return NULL; - /*find occurrances if image SRC urls*/ - int t_index = 0; - memstream t_stream(CHUNK_SIZE,CHUNK_SIZE); - memstream t_urlstream; - while (p_pOldBuffer[t_index]) - { - char t_char = p_pOldBuffer[t_index++]; - if (t_char != '<') - continue; - while(p_pOldBuffer[t_index] && isspace(t_char)) - t_char = p_pOldBuffer[t_index++]; - if (!p_pOldBuffer[t_index] || p_pOldBuffer[t_index] != 'I') - continue; - if (XP_STRNCASECMP(p_pOldBuffer + t_index,"IMG ",4)) - continue; - t_index+=4; - XP_Bool t_found = TRUE; - while( t_found && p_pOldBuffer[t_index]) - { - if (t_char == '>') - { - t_found = FALSE; - break; - } - - if (!p_pOldBuffer[t_index] || p_pOldBuffer[t_index] != 'S') - { - t_index++; - continue; - } - if (XP_STRNCASECMP(p_pOldBuffer + t_index,"SRC",3)) - { - t_index++; - continue; - } - t_index+=3; - while(p_pOldBuffer[t_index] && isspace(t_char)) - t_char = p_pOldBuffer[t_index++]; - if (!p_pOldBuffer[t_index] || p_pOldBuffer[t_index++] != '=') - continue; - while(p_pOldBuffer[t_index] && isspace(t_char)) - t_char = p_pOldBuffer[t_index++]; - if (!p_pOldBuffer[t_index] || p_pOldBuffer[t_index++] != '\"') - continue; - while(p_pOldBuffer[t_index] && isspace(t_char)) - t_char = p_pOldBuffer[t_index++]; - int t_marker = t_index; - if (XP_STRNCASECMP(p_pOldBuffer + t_index, "cid:", 4)) - { - t_found = FALSE; - continue; - } - t_index += 4; - while(p_pOldBuffer[t_index] && p_pOldBuffer[t_index]!='\"') - t_urlstream.write(p_pOldBuffer + t_index++,1); - if (!p_pOldBuffer[t_index]) - { - t_found = FALSE; - continue; - } - //lookup t_urlstream for new filename - int t_partidx = p_rDecoder.lookUpByPartId(t_urlstream.str()); - t_urlstream.clear(); - if (t_partidx < 0) - continue; - SimpleMultiPart *t_part = p_rDecoder.getPart(t_partidx); - if (!t_part) - continue; - t_stream.write(p_pOldBuffer,t_marker); - t_stream.write(t_part->getUrlFileName(),XP_STRLEN(t_part->getUrlFileName()));//gets new filename MUST MAKE THIS A URL - p_pOldBuffer += t_index; - t_index = 0; - break; - } - } - t_stream.write(p_pOldBuffer,t_index); - t_stream.write("",1); /*null terminate*/ - return t_stream.str();//does not free memory unless unfrozen. -} diff --git a/mozilla/lib/mailto/mprdecod.h b/mozilla/lib/mailto/mprdecod.h deleted file mode 100644 index 67e1f33905f..00000000000 --- a/mozilla/lib/mailto/mprdecod.h +++ /dev/null @@ -1,135 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- -* -* The contents of this file are subject to the Netscape Public -* License Version 1.1 (the "License"); you may not use this file -* except in compliance with the License. You may obtain a copy of -* the License at http://www.mozilla.org/NPL/ -* -* Software distributed under the License is distributed on an "AS -* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -* implied. See the License for the specific language governing -* rights and limitations under the License. -* -* The Original Code is mozilla.org code. -* -* The Initial Developer of the Original Code is Netscape -* Communications Corporation. Portions created by Netscape are -* Copyright (C) 1998 Netscape Communications Corporation. All -* Rights Reserved. -* -* Contributor(s): -*/ -/*mjudge*/ - -/* -I am writing a multipart mime decoder because the original one is so tied into -libmsg. This one is very simple. It will take a multipart/related message and -split it into N files writing them to nswebXX.tmp in the temp directory. It will -then have another mechanism for BASE64 bit decoding the necessary files and rewriting them -to the temp directory. This should be very simple. It will only handle 1 layer of parts. -It will search for "Content-Type: multipart/related;" -If it doesn't find it. then the whole thing is considered one part text/HTML. - -*/ - -#ifndef _MPRDECOD_H -#define _MPRDECOD_H - - -/*I am in a hurry maybe this should be a class hierarchy of mime types, -but this is supposed to be simple*/ -class SimpleMultiPart -{ -public: - enum SIMPLE_CONTENT_TYPE {UNKNOWN_TYPE, TEXTHTML, IMAGEJPG, IMAGEGIF, IMAGEPNG}; -private: - char *m_pFileName; - char *m_pUrlFileName; - char *m_pContentId; - char *m_pCharset; - char *m_pEncoding; - SIMPLE_CONTENT_TYPE m_iContentType; -public: - - - SimpleMultiPart(); - ~SimpleMultiPart(); - - - /*gets*/ - const char *getFileName(){return m_pFileName;} /*this return pointer is not yours*/ - const char *getUrlFileName(); /*this return pointer is not yours*/ - const char *getCharset(){return m_pCharset;} /*this return pointer is not yours*/ - const char *getContentId(){return m_pContentId;} /*this return pointer is not yours*/ - const char *getEncoding(){return m_pEncoding;} - SIMPLE_CONTENT_TYPE getType(){return m_iContentType;} - - /*sets*/ - void setFileName(const char *p_pFileName); /*this is copied*/ - void setCharset(const char *p_pCharset); /*this is copied*/ - void setContentId(const char *p_pContentId); /*this is copied*/ - void setEncoding(const char *p_pEncoding); /*this is copied*/ - void setType(SIMPLE_CONTENT_TYPE p_type){m_iContentType = p_type;} -}; - - - -class SimpleMultipartRelatedMimeDecoder -{ -public: - enum {MAX_BUFFER_LEN = 255}; -private: - const char *m_pPrefix; - - char *m_pBoundaryName; - SimpleMultiPart **m_ppParts; - int32 m_iNumParts; -/*write data before actual parts to header file incase this IS the only part*/ - char *m_pHeaderFileName; - - const char *m_pMemStream; - int32 m_iMemStreamLoc; - int32 m_iMemStreamLen; - XP_File m_pFileStream; //filestream - -/*stream manipulations*/ - XP_Bool eatWhite(); - char getCh(); - XP_Bool searchForString(const char *p_string, XP_File p_output);/* searches for string. when it cant find it writes data to p_output*/ - void backUp(); //went to far in the stream, back up one char - XP_Bool getNextString(char *p_buffer, int32 p_maxbuflen); - -/*helper funcs */ - XP_Bool readTextHtml(char p_buffer[MAX_BUFFER_LEN]); - XP_Bool readEncoded(char p_buffer[MAX_BUFFER_LEN]); - -public: -/*constructor destructor*/ - SimpleMultipartRelatedMimeDecoder(XP_File p_stream);/*this class will not close the input file stream */ - SimpleMultipartRelatedMimeDecoder(const char *p_stream, int32 p_len); - ~SimpleMultipartRelatedMimeDecoder(); - - XP_Bool begin(); - void clear_all();//called by destructor also - - void setFilePrefix(const char *p_prefix){m_pPrefix = p_prefix;} - - SimpleMultiPart *getPart(int32 p_index); /*this return pointer is not yours*/ - int32 getNumberOfParts(){return m_iNumParts;} - - const char *getHeaderFileName(){return m_pHeaderFileName;} - - int32 lookUpByPartId(const char *); -}; - - -/* -OTHER API CALLS -*/ - - -char *ParseBuffer(char *p_pOldBuffer,SimpleMultipartRelatedMimeDecoder &p_rDecoder); -XP_Bool DecodeSimpleMime(SimpleMultipartRelatedMimeDecoder &p_rDecoder,const char *p_pPrefix); -char *ReadBufferFromFile(const char *p_pFileName); -#endif //_MPRDECOD_H - diff --git a/mozilla/lib/mailto/mprmime.c b/mozilla/lib/mailto/mprmime.c deleted file mode 100644 index 53a93e3f440..00000000000 --- a/mozilla/lib/mailto/mprmime.c +++ /dev/null @@ -1,406 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifdef MOZ_ENDER_MIME - -#include "xp_core.h" -#include "mprmime.h" -#include "mimeenc.h" -#include "libi18n.h" /*for converting csids to strings*/ - -#define CONTENT_TYPE_MPR_MIMEREL "Content-Type: multipart/related; " -#define CONTENT_TYPE_TXT_MIMEREL "Content-Type: text/html; charset=" -#define CONTENT_TYPE_MIMEREL "Content-Type: " -#define CONTENT_ID_MIMEREL "Content-ID: " -#define CONTENT_TRANS_MIMEREL "Content-Transfer-Encoding: " -#define BASE64_MIMEREL "base64" -#define BIT7_MIMEREL "7bit" -#define BOUNDARYSTR_MIMEREL "boundary=" -#define XMOZSTATUS_MIMEREL "X-Mozilla-Status: 8001" -#define CONTENT_DISPOSITION_MIMEREL "Content-Disposition: inline; filename=" -#define READ_BUFFER_LEN 255 - -/* -prototypes -*/ -static XP_Bool output_text_file(GenericMimeRelatedData *p_genmime, int16 p_index); -static XP_Bool output_text_body(GenericMimeRelatedData *p_genmime, int16 p_index); -static XP_Bool output_base64_file(GenericMimeRelatedData *p_genmime, int16 p_index); - - - -AttachmentFields * -AttachmentFields_Init(char *p_pFilename, char *p_pDispositionName, - char *p_pContentType, char *p_pContentId) -{ - AttachmentFields *data = XP_NEW(AttachmentFields); - if (!data || !p_pFilename || !p_pContentType || !p_pContentId) return 0; - XP_MEMSET(data, 0, sizeof(*data)); - data->m_pFilename = p_pFilename; - data->m_pDispositionName = p_pDispositionName; - data->m_pContentType = p_pContentType; - if (!data->m_pDispositionName) - data->m_pDispositionName = XP_STRDUP(p_pFilename); - data->m_pContentId = p_pContentId; - return data; -} - - - -static -XP_Bool -attachmentfields_validate(AttachmentFields *p_fields) -{ - if (!p_fields) - return FALSE; - if (!p_fields->m_pFilename) - return FALSE; /*no filename is bad*/ - if (!p_fields->m_pDispositionName) - return FALSE; /*no disposition is bad*/ - if (!p_fields->m_pContentType) - return FALSE; /*no contenttype is bad*/ - if (!p_fields->m_pContentId) - return FALSE; /*no yayaya*/ - return TRUE; -} - - - -XP_Bool -AttachmentFields_Destroy(AttachmentFields *p_fields) -{ - if (!p_fields) - return FALSE; - XP_FREEIF(p_fields->m_pFilename); - XP_FREEIF(p_fields->m_pDispositionName); - XP_FREEIF(p_fields->m_pContentType); - XP_FREEIF(p_fields); - return TRUE; -} - - - -/* -p_pBoundarySpecifier will be deleted in Destroy method. -*/ -GenericMimeRelatedData * -GenericMime_Init(char *p_pBoundarySpecifier, int (*output_fn) (const char *, int32, void *), - void *closure) -{ - GenericMimeRelatedData *data = XP_NEW(GenericMimeRelatedData); - if (!data) return 0; - XP_MEMSET(data, 0, sizeof(*data)); - data->m_pBoundarySpecifier = p_pBoundarySpecifier; - data->write_buffer = output_fn; - data->closure = closure; - return data; -} - - - -static XP_Bool -genericmime_validate(GenericMimeRelatedData *p_genmime) -{ - int i;/*counter*/ - if (!p_genmime) - return FALSE; - if (!(p_genmime->m_iNumTextFiles + p_genmime->m_iNumBase64Files)) - return FALSE; /*no files*/ - for( i=0; i<p_genmime->m_iNumTextFiles; i++) - { - if (!p_genmime->m_pTextFiles[i]) - return FALSE; /* no filename in position */ - } - return TRUE; -} - - - -XP_Bool -GenericMime_Destroy(GenericMimeRelatedData *p_gendata) -{ - int i; - if (!p_gendata) - { - XP_ASSERT(0); - return FALSE; - } - for( i=0; i<p_gendata->m_iNumTextFiles; i++) - { - XP_FREE(p_gendata->m_pTextFiles[i]); - } - XP_FREEIF(p_gendata->m_pTextFiles); - - for( i=0; i<p_gendata->m_iNumBase64Files; i++) - { - XP_FREEIF(p_gendata->m_pBase64Files[i]); - } - XP_FREEIF(p_gendata->m_pBase64Files); - XP_FREEIF(p_gendata->m_pCsids); - - XP_FREEIF(p_gendata->m_pBoundarySpecifier); - XP_FREE(p_gendata); - return TRUE; -} - - - -static XP_Bool -output_text_body(GenericMimeRelatedData *p_genmime, int16 p_index) -{ - char readbuffer[READ_BUFFER_LEN]; /*buffer to store incomming data*/ - int16 numread; /*number of bytes read in each pass*/ - XP_File t_inputfile; /*file pointer for input file*/ - - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - if( (t_inputfile = XP_FileOpen(p_genmime->m_pTextFiles[p_index],xpFileToPost,XP_FILE_READ)) != NULL ) - { - /* Attempt to read in READBUFLEN characters */ - while (!feof( t_inputfile )) - { - numread = XP_FileRead( readbuffer, READ_BUFFER_LEN, t_inputfile ); - if (ferror(t_inputfile)) - { - XP_ASSERT(FALSE); - break; - } - (*p_genmime->write_buffer)(readbuffer,numread,p_genmime->closure); - } - XP_FileClose( t_inputfile ); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - } - return TRUE; -} - - - -static XP_Bool -output_text_file(GenericMimeRelatedData *p_genmime, int16 p_index) -{ - char *charSet; /*used by text attachments when retrieving the charset str identifier*/ - - if (p_genmime->m_pBoundarySpecifier) - { - (*p_genmime->write_buffer)(p_genmime->m_pBoundarySpecifier,strlen(p_genmime->m_pBoundarySpecifier),p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - } - (*p_genmime->write_buffer)(CONTENT_TYPE_TXT_MIMEREL,strlen(CONTENT_TYPE_TXT_MIMEREL),p_genmime->closure); - - charSet = (char *)INTL_CsidToCharsetNamePt(p_genmime->m_pCsids[p_index]); - if (charSet) - (*p_genmime->write_buffer)(charSet,strlen(charSet),p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - (*p_genmime->write_buffer)(CONTENT_TRANS_MIMEREL,strlen(CONTENT_TRANS_MIMEREL),p_genmime->closure); - (*p_genmime->write_buffer)(BIT7_MIMEREL,strlen(BIT7_MIMEREL),p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - return output_text_body(p_genmime,p_index); -} - - - -static XP_Bool -output_base64_file(GenericMimeRelatedData *p_genmime, int16 p_index) -{ - char readbuffer[READ_BUFFER_LEN]; /*buffer to store incomming data*/ - int16 numread; /*number of bytes read in each pass*/ - XP_File t_inputfile; /*file pointer for input file*/ - AttachmentFields *t_tempattach; /*temporary pointer for the attachment loop*/ - MimeEncoderData *t_base64data; /*saving using base64 requires one of these*/ - - if (p_genmime->m_pBoundarySpecifier) - { - (*p_genmime->write_buffer)(p_genmime->m_pBoundarySpecifier,strlen(p_genmime->m_pBoundarySpecifier),p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - } - t_tempattach = p_genmime->m_pBase64Files[p_index]; - if (!attachmentfields_validate(t_tempattach)) - { - XP_ASSERT(FALSE); - return FALSE; - } - - (*p_genmime->write_buffer)(CONTENT_TYPE_MIMEREL,strlen(CONTENT_TYPE_MIMEREL),p_genmime->closure); - (*p_genmime->write_buffer)(t_tempattach->m_pContentType,strlen(t_tempattach->m_pContentType),p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - - (*p_genmime->write_buffer)(CONTENT_ID_MIMEREL,strlen(CONTENT_ID_MIMEREL),p_genmime->closure); - (*p_genmime->write_buffer)("<",1,p_genmime->closure); - (*p_genmime->write_buffer)(t_tempattach->m_pContentId ,strlen(t_tempattach->m_pContentId),p_genmime->closure); - (*p_genmime->write_buffer)(">",1,p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - - (*p_genmime->write_buffer)(CONTENT_TRANS_MIMEREL,strlen(CONTENT_TRANS_MIMEREL),p_genmime->closure); - (*p_genmime->write_buffer)(BASE64_MIMEREL,strlen(BASE64_MIMEREL),p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - - (*p_genmime->write_buffer)(CONTENT_DISPOSITION_MIMEREL,strlen(CONTENT_DISPOSITION_MIMEREL),p_genmime->closure); - (*p_genmime->write_buffer)("\"",1,p_genmime->closure); /*begin quote*/ - (*p_genmime->write_buffer)(t_tempattach->m_pDispositionName,strlen(t_tempattach->m_pDispositionName),p_genmime->closure); - (*p_genmime->write_buffer)("\"",1,p_genmime->closure); /*end quote*/ - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - - - if( (t_inputfile = XP_FileOpen( t_tempattach->m_pFilename, xpFileToPost,XP_FILE_READ_BIN )) != NULL ) - { - /* Attempt to read in READBUFLEN characters */ - t_base64data = MimeB64EncoderInit(p_genmime->write_buffer,p_genmime->closure); - if (!t_base64data) - return FALSE; /* bad?*/ - while (!feof( t_inputfile )) - { - numread = XP_FileRead( readbuffer, READ_BUFFER_LEN, t_inputfile ); - if (ferror(t_inputfile)) - { - XP_ASSERT(FALSE); - break; - } - MimeEncoderWrite(t_base64data,readbuffer,numread); - } - MimeEncoderDestroy(t_base64data,FALSE); - XP_FileClose( t_inputfile ); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - } - return TRUE; -} - - - -XP_Bool -GenericMime_Begin(GenericMimeRelatedData *p_genmime) -{ - int16 i; /*counter*/ - if (!genericmime_validate(p_genmime)) /*validation*/ - { - XP_ASSERT(FALSE); - return FALSE; - } - if (p_genmime->m_iNumTextFiles == 1 && p_genmime->m_iNumBase64Files == 0) - { - return output_text_body(p_genmime,0); /*output only the body part*/ - } - (*p_genmime->write_buffer)(CONTENT_TYPE_MPR_MIMEREL,strlen(CONTENT_TYPE_MPR_MIMEREL),p_genmime->closure); - (*p_genmime->write_buffer)(BOUNDARYSTR_MIMEREL,strlen(BOUNDARYSTR_MIMEREL),p_genmime->closure); - (*p_genmime->write_buffer)("\"",1,p_genmime->closure); /*begin quote*/ - if (p_genmime->m_pBoundarySpecifier) - (*p_genmime->write_buffer)(p_genmime->m_pBoundarySpecifier,strlen(p_genmime->m_pBoundarySpecifier),p_genmime->closure); - (*p_genmime->write_buffer)("\"",1,p_genmime->closure); /*end quote*/ - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - (*p_genmime->write_buffer)(XMOZSTATUS_MIMEREL,strlen(XMOZSTATUS_MIMEREL),p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - - for (i = 0; i<p_genmime->m_iNumTextFiles; i++) - { - output_text_file(p_genmime,i); - } - - /* base64 encoding all files that need it.*/ - for (i = 0; i<p_genmime->m_iNumBase64Files; i++) - { - if (!output_base64_file(p_genmime,i)) - return FALSE; - } - if (p_genmime->m_pBoundarySpecifier) - { - (*p_genmime->write_buffer)(p_genmime->m_pBoundarySpecifier,strlen(p_genmime->m_pBoundarySpecifier),p_genmime->closure); - (*p_genmime->write_buffer)("--",2,p_genmime->closure); - } - (*p_genmime->write_buffer)("\n",1,p_genmime->closure); - - return TRUE; -} - - - -/* -return number of text files after add. -filename passed in will be deleted later by GenericMimeRelated Destroy function -you are relinquishing ownership of the p_filename pointer. -*/ -int -GenericMime_AddTextFile(GenericMimeRelatedData *p_gendata, char *p_filename, int16 p_csid) -{ - char **t_pfilenames; - int16 *t_pcsids; - if (!p_gendata || !p_filename) - { - XP_ASSERT(0); - return -1; - } - t_pfilenames = p_gendata->m_pTextFiles; - t_pcsids = p_gendata->m_pCsids; - if ((!t_pfilenames || !t_pcsids) && p_gendata->m_iNumTextFiles) /*big problem*/ - { - XP_ASSERT(0); - return -1; - } - p_gendata->m_iNumTextFiles = p_gendata->m_iNumTextFiles+1; - p_gendata->m_pTextFiles = (char **)XP_ALLOC(p_gendata->m_iNumTextFiles * (sizeof (char *)) ); - if (t_pfilenames) - XP_MEMCPY(p_gendata->m_pTextFiles, t_pfilenames, sizeof(char *) * p_gendata->m_iNumTextFiles -1); - p_gendata->m_pTextFiles[p_gendata->m_iNumTextFiles -1] = p_filename; - - p_gendata->m_pCsids = (int16 *)XP_ALLOC(p_gendata->m_iNumTextFiles * (sizeof (int16)) ); - if (t_pcsids) - XP_MEMCPY(p_gendata->m_pCsids, t_pcsids, sizeof(int16) * p_gendata->m_iNumTextFiles -1); - p_gendata->m_pCsids[p_gendata->m_iNumTextFiles -1] = p_csid; - return p_gendata->m_iNumTextFiles; -} - - - -/* -return number of text files after add. -filename passed in will be deleted later by GenericMimeRelated Destroy function -you are relinquishing ownership of the p_filename pointer. -*/ -int -GenericMime_AddBase64File(GenericMimeRelatedData *p_gendata, AttachmentFields *p_fields) -{ - AttachmentFields **t_pfiles; - if (!p_gendata || !p_fields) - { - XP_ASSERT(0); - return -1; - } - t_pfiles = p_gendata->m_pBase64Files; - if (!t_pfiles && p_gendata->m_iNumBase64Files) /*big problem*/ - { - XP_ASSERT(0); - return -1; - } - p_gendata->m_iNumBase64Files = p_gendata->m_iNumBase64Files+1; - p_gendata->m_pBase64Files = (AttachmentFields **)XP_ALLOC(p_gendata->m_iNumBase64Files * (sizeof (AttachmentFields *)) ); - if (t_pfiles) - XP_MEMCPY(p_gendata->m_pBase64Files, t_pfiles, sizeof(char *) * p_gendata->m_iNumBase64Files -1); - p_gendata->m_pBase64Files[p_gendata->m_iNumBase64Files -1] = p_fields; - return p_gendata->m_iNumBase64Files; -} - -#endif /* MOZ_ENDER_MIME */ - diff --git a/mozilla/lib/mailto/mprmime.h b/mozilla/lib/mailto/mprmime.h deleted file mode 100644 index a5b77a8b538..00000000000 --- a/mozilla/lib/mailto/mprmime.h +++ /dev/null @@ -1,86 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MPRMIME_H -#define _MPRMIME_H - -#ifdef MOZ_ENDER_MIME - -XP_BEGIN_PROTOS - -typedef struct _AttachmentFields -{ - char *m_pFilename; - char *m_pDispositionName; - char *m_pContentType; - char *m_pContentId; -}AttachmentFields; - -AttachmentFields * AttachmentFields_Init(char *p_pFilename, char *p_pDispositionName, - char *p_pContentType, char *p_pContentId); - -XP_Bool AttachmentFields_Destroy(AttachmentFields *p_fields); - - -typedef struct _GenericMimeRelatedData -{ - char *m_pBoundarySpecifier; /*string that is used as the boundary marker in multipart related mime*/ - char **m_pTextFiles; /* text files that will be added as attachments*/ - int16 *m_pCsids; /* charset ids for each text file */ - int16 m_iNumTextFiles; /* number of text files used as attachments.*/ - - AttachmentFields **m_pBase64Files; /*files to be put into base64*/ - int16 m_iNumBase64Files; - int (*write_buffer) (const char *, int32, void *); /* where to write encoding */ - void *closure; /*not deleted on destroy*/ -}GenericMimeRelatedData; - -GenericMimeRelatedData * GenericMime_Init(char *p_pBoundarySpecifier, int (*output_fn) (const char *, int32, void *), - void *closure); -XP_Bool GenericMime_Destroy(GenericMimeRelatedData *p_gendata); - - -XP_Bool GenericMime_Begin(GenericMimeRelatedData *p_genmime); - -/* -return number of text files after add. -filename passed in will be deleted later by GenericMimeRelated Destroy function -you are relinquishing ownership of the p_filename pointer. -*/ -int GenericMime_AddTextFile(GenericMimeRelatedData *p_gendata, char *p_filename, int16 p_csid); - -/* -return number of base64 files after add. -you are relinquishing ownership of attachment fields struct -*/ -int GenericMime_AddBase64File(GenericMimeRelatedData *p_gendata, AttachmentFields *p_fields); - - -/* -typedef -*/ -typedef int (*MPR_MIME_OUTPUTFUNC) (const char *, int32, void *); - -XP_END_PROTOS - -#endif /*_MPRMIME_H*/ -#endif /*MOZ_ENDER_MIME*/ diff --git a/mozilla/lib/mailto/msg.h b/mozilla/lib/mailto/msg.h deleted file mode 100644 index dac8a091cb4..00000000000 --- a/mozilla/lib/mailto/msg.h +++ /dev/null @@ -1,322 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* - msg.h --- internal defs for the msg library - */ -#ifndef _MSG_H_ -#define _MSG_H_ - -#include "xp.h" -#include "msgcom.h" -#include "msgnet.h" -#include "msgutils.h" -#include "xpgetstr.h" - -#ifdef XP_CPLUSPLUS -class MessageDBView; -class MSG_SendPart; -#endif - -#define MANGLE_INTERNAL_ENVELOPE_LINES /* We always need to do this, for now */ -#undef FIXED_SEPARATORS /* this doesn't work yet */ -#define EMIT_CONTENT_LENGTH /* Experimental; and anyway, we only - emit it, we don't parse it, so this - is only the first step. */ - -/* This string gets appended to the beginning of an attachment field - during a forward quoted operation */ - -#define MSG_FORWARD_COOKIE "$forward_quoted$" - - -/* The PRINTF macro is for debugging messages of unusual events (summary */ -/* files out of date or invalid or the like. It's so that as I use the mail */ -/* to actually read my e-mail, I can look at the shell output whenever */ -/* something unusual happens so I can get some clues as to what's going on. */ -/* Please don't remove any PRINTF calls you see, and be sparing of adding */ -/* any additional ones. Thanks. - Terry */ - -#ifdef DEBUG -#define PRINTF(msg) XP_Trace msg -#else -#define PRINTF(msg) -#endif - -#ifdef FREEIF -#undef FREEIF -#endif -#define FREEIF(obj) do { if (obj) { XP_FREE (obj); obj = 0; }} while (0) - -/* The Netscape-specific header fields that we use for storing our - various bits of state in mail folders. - */ -#define X_MOZILLA_STATUS "X-Mozilla-Status" -#define X_MOZILLA_STATUS_FORMAT X_MOZILLA_STATUS ": %04.4x" -#define X_MOZILLA_STATUS_LEN /*1234567890123456*/ 16 - -#define X_MOZILLA_STATUS2 "X-Mozilla-Status2" -#define X_MOZILLA_STATUS2_FORMAT X_MOZILLA_STATUS2 ": %08.8x" -#define X_MOZILLA_STATUS2_LEN /*12345678901234567*/ 17 - -#define X_MOZILLA_DRAFT_INFO "X-Mozilla-Draft-Info" -#define X_MOZILLA_DRAFT_INFO_LEN /*12345678901234567890*/ 20 - -#define X_MOZILLA_NEWSHOST "X-Mozilla-News-Host" -#define X_MOZILLA_NEWSHOST_LEN /*1234567890123456789*/ 19 - -#define X_UIDL "X-UIDL" -#define X_UIDL_LEN /*123456*/ 6 - -#define CONTENT_LENGTH "Content-Length" -#define CONTENT_LENGTH_LEN /*12345678901234*/ 14 - -/* Provide a common means of detecting empty lines in a message. i.e. to detect the end of headers among other things...*/ -#define EMPTY_MESSAGE_LINE(buf) (buf[0] == CR || buf[0] == LF || buf[0] == '\0') - -typedef int32 MsgChangeCookie; /* used to unregister change notification */ - -/* The three ways the list of newsgroups can be pruned. - */ -typedef enum -{ - MSG_ShowAll, - MSG_ShowSubscribed, - MSG_ShowSubscribedWithArticles -} MSG_NEWSGROUP_DISPLAY_STYLE; - -/* The three ways to deliver a message. - */ -typedef enum -{ - MSG_DeliverNow, - MSG_QueueForLater, - MSG_SaveAsDraft, - MSG_SaveAsTemplate -} MSG_Deliver_Mode; - - -/* A little enum for things we'd like to learn lazily. - * e.g. displaying recipients for this pane? Yes we are, - * no we're not, haven't figured it out yet - */ -typedef enum -{ - msg_No, - msg_Yes, - msg_DontKnow -} msg_YesNoDontKnow; - -/* The MSG_REPLY_TYPE shares the same space as MSG_CommandType, to avoid - possible weird errors, but is restricted to the `composition' commands - (MSG_ReplyToSender through MSG_ForwardMessage.) - */ -typedef MSG_CommandType MSG_REPLY_TYPE; - -/* The list of all message flags to not write to disk. */ -#define MSG_FLAG_RUNTIME_ONLY (MSG_FLAG_ELIDED) - - -/* =========================================================================== - Structures. - =========================================================================== - */ - -/* Used for the various things that parse RFC822 headers... - */ -typedef struct message_header -{ - const char *value; /* The contents of a header (after ": ") */ - int32 length; /* The length of the data (it is not NULL-terminated.) */ -} message_header; - - - -/* Argument to msg_NewsgroupNameMapper() */ -typedef int (*msg_SubscribedGroupNameMapper) (MWContext *context, - const char *name, - void *closure); - -XP_BEGIN_PROTOS - -/* we'll need this for localized folder names */ - -extern int MK_MSG_INBOX_L10N_NAME; -extern int MK_MSG_OUTBOX_L10N_NAME; /* win16 variations are in allxpstr.h */ -extern int MK_MSG_OUTBOX_L10N_NAME_OLD; -extern int MK_MSG_TRASH_L10N_NAME; -extern int MK_MSG_DRAFTS_L10N_NAME; -extern int MK_MSG_SENT_L10N_NAME; -extern int MK_MSG_TEMPLATES_L10N_NAME; - -#define INBOX_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_INBOX_L10N_NAME) -#define QUEUE_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_OUTBOX_L10N_NAME) -#define QUEUE_FOLDER_NAME_OLD MSG_GetSpecialFolderName(MK_MSG_OUTBOX_L10N_NAME_OLD) -#define TRASH_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_TRASH_L10N_NAME) -#define DRAFTS_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_DRAFTS_L10N_NAME) -#define SENT_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_SENT_L10N_NAME) -#define TEMPLATES_FOLDER_NAME MSG_GetSpecialFolderName(MK_MSG_TEMPLATES_L10N_NAME) -#ifdef XP_OS2 -#define INBOX_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_INBOX_L10N_NAME) -#define QUEUE_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_OUTBOX_L10N_NAME) -#define QUEUE_FOLDER_PRETTY_NAME_OLD MSG_GetSpecialFolderPrettyName(MK_MSG_OUTBOX_L10N_NAME_OLD) -#define TRASH_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_TRASH_L10N_NAME) -#define DRAFTS_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_DRAFTS_L10N_NAME) -#define SENT_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_SENT_L10N_NAME) -#define TEMPLATES_FOLDER_PRETTY_NAME MSG_GetSpecialFolderPrettyName(MK_MSG_TEMPLATES_L10N_NAME) -#endif - - -int ConvertMsgErrToMKErr(uint32 err); /* this routine might live - the rest are - probably already dead */ - - -/* =========================================================================== - Redisplay-related stuff - =========================================================================== - */ - -/* Clear out the message display (make Layout be displaying no document.) */ -extern void msg_ClearMessageArea (MWContext *context); - - -/* Returns a line suitable for using as the envelope line in a BSD - mail folder. The returned string is stored in a static, and so - should be used before msg_GetDummyEnvelope is called again. */ -extern char * msg_GetDummyEnvelope(void); - -/* Returns TRUE if the buffer looks like a valid envelope. - This test is somewhat more restrictive than XP_STRNCMP(buf, "From ", 5). - */ -extern XP_Bool msg_IsEnvelopeLine(const char *buf, int32 buf_size); - - -/* =========================================================================== - Utilities specific to mail folders and their Folders and ThreadEntries. - =========================================================================== - */ - -/* returns the name of a magic folder - returns a new string. */ -extern char *msg_MagicFolderName(MSG_Prefs* prefs, uint32 flag, int *pStatus); - - -/* Get the current fcc folder name, so we can sort them up at the top of the - other folder lists with the other magic folders. */ -const char* msg_GetDefaultFcc(XP_Bool news_p); - - -/* Reads the first few bytes of the file and returns FALSE if it doesn't - seem to be a mail folder. (Empty and nonexistent files return TRUE.) - If it doesn't seem to be one, the user is asked whether it should be - written to anyway, and their answer is returned. - */ -extern XP_Bool msg_ConfirmMailFile (MWContext *context, const char *file_name); - -/* =========================================================================== - The content-type converters for the MIME types. These are provided by - compose.c, but are registered by netlib rather than msglib, for some - destined-to-be-mysterious reason. - =========================================================================== - */ -extern NET_StreamClass *MIME_MessageConverter (int format_out, void *closure, - URL_Struct *url, - MWContext *context); - -extern NET_StreamClass *MIME_RichtextConverter (int format_out, void *data_obj, - URL_Struct *url, - MWContext *context); - -extern NET_StreamClass *MIME_EnrichedTextConverter (int format_out, - void *data_obj, - URL_Struct *url, - MWContext *context); - -extern NET_StreamClass *MIME_ToDraftConverter (int format_out, void *closure, - URL_Struct *url, - MWContext *context); - -extern NET_StreamClass *MIME_VCardConverter (int format_out, void *data_obj, - URL_Struct *url, - MWContext *context); - -extern NET_StreamClass *MIME_JulianConverter (int format_out, void *data_obj, - URL_Struct *url, - MWContext *context); - - -/* This nastiness is how msg_SaveSelectedNewsMessages() works. */ -extern NET_StreamClass *msg_MakeAppendToFolderStream (int format_out, - void *closure, - URL_Struct *url, - MWContext *); - -/* This probably should be in mime.h, except that mime.h should mostly be - private to libmsg. So it's here. */ -extern void -msg_StartMessageDeliveryWithAttachments (MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode deliver_mode, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachedFile *attachments, - void *mimeRelatedPart, - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)); - -extern int -msg_DownloadAttachments (MSG_Pane *pane, - void *fe_data, - const struct MSG_AttachmentData *attachments, - void (*attachments_done_callback) - (MWContext *context, - void *fe_data, - int status, const char *error_message, - struct MSG_AttachedFile *attachments)); - - -extern -int msg_DoFCC (MSG_Pane *pane, - const char *input_file, XP_FileType input_file_type, - const char *output_file, XP_FileType output_file_type, - const char *bcc_header_value, - const char *fcc_header_value); - -extern char* msg_generate_message_id (void); - -#ifdef XP_UNIX -extern int msg_DeliverMessageExternally(MWContext *, const char *msg_file); -#endif /* XP_UNIX */ - - -XP_END_PROTOS - - - - - -#endif /* !_MSG_H_ */ diff --git a/mozilla/lib/mailto/msgbg.cpp b/mozilla/lib/mailto/msgbg.cpp deleted file mode 100644 index c870f3c65a2..00000000000 --- a/mozilla/lib/mailto/msgbg.cpp +++ /dev/null @@ -1,137 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "msgbg.h" -#include "msgpane.h" -#include "msgurlq.h" - -extern "C" { - extern int MK_OUT_OF_MEMORY; -} - -msg_Background::msg_Background() -{ -} - - -msg_Background::~msg_Background() -{ - if (m_pane) Interrupt(); -} - - -int -msg_Background::Begin(MSG_Pane* pane) -{ - XP_ASSERT(!m_pane); - if (m_pane) return -1; - char* url = XP_STRDUP("mailbox:?background"); - if (!url) return MK_OUT_OF_MEMORY; - m_urlstruct = NET_CreateURLStruct(url, NET_NORMAL_RELOAD); - if (!m_urlstruct) { - XP_FREE(url); - return MK_OUT_OF_MEMORY; - } - XP_FREE(url); - m_urlstruct->internal_url = TRUE; - m_pane = pane; - msg_InterruptContext(pane->GetContext(), TRUE); - XP_ASSERT(pane->GetCurrentBackgroundJob() == NULL); - pane->SetCurrentBackgroundJob(this); - MSG_UrlQueue::AddUrlToPane(m_urlstruct, msg_Background::PreExit_s, pane); - return 0; -} - - - -void -msg_Background::Interrupt() -{ - XP_ASSERT(m_pane); - if (m_pane) { - msg_InterruptContext(m_pane->GetContext(), FALSE); - XP_ASSERT(m_pane == NULL); - } -} - - -msg_Background* -msg_Background::FindBGObj(URL_Struct* urlstruct) -{ - XP_ASSERT(urlstruct && urlstruct->msg_pane); - if (!urlstruct || !urlstruct->msg_pane) return NULL; - msg_Background* result = urlstruct->msg_pane->GetCurrentBackgroundJob(); - // OK, I'm truly evil, but I'm using this as an empty url that goes through - // netlib once. so result will be null... - XP_ASSERT(!result || result->m_pane == urlstruct->msg_pane); - return result; -} - - -int -msg_Background::ProcessBackground(URL_Struct* urlstruct) -{ - msg_Background* obj = FindBGObj(urlstruct); - if (obj) { - return obj->DoSomeWork(); - } - return MK_CONNECTED; -} - - - -void -msg_Background::PreExit_s(URL_Struct* urlstruct, int status, - MWContext* context) -{ - msg_Background* obj = FindBGObj(urlstruct); - if (obj) { - obj->PreExit(urlstruct, status, context); - } -} - -void -msg_Background::PreExit(URL_Struct* /*urlstruct*/, int status, - MWContext*) -{ - XP_Bool deleteself = AllDone(status); - XP_ASSERT(m_pane); - if (m_pane) { - m_pane->SetCurrentBackgroundJob(NULL); - m_pane = NULL; - } - if (deleteself) delete this; -} - - -XP_Bool -msg_Background::AllDone(int /*status*/) -{ - return FALSE; -} - -XP_Bool -msg_Background::IsRunning() -{ - return m_pane != NULL; -} diff --git a/mozilla/lib/mailto/msgbg.h b/mozilla/lib/mailto/msgbg.h deleted file mode 100644 index 13cd6ae44ee..00000000000 --- a/mozilla/lib/mailto/msgbg.h +++ /dev/null @@ -1,87 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgBg_H_ -#define _MsgBg_H_ - -#include "msgzap.h" - -class MSG_Pane; - -class msg_Background : public MSG_ZapIt { -public: - msg_Background(); - virtual ~msg_Background(); - - /* Begin() kicks things off. Sometime after making this call, calls will - be made to DoSomeWork(). This will interrupt any current background - operation or URL running on the given MSG_Pane. */ - virtual int Begin(MSG_Pane* pane); - - - /* Interrupt() interrupts the running background operation. Just does an - InterruptContext on the pane's context. */ - virtual void Interrupt(); - - /* Whether we are currently doing our background operation. */ - virtual XP_Bool IsRunning(); - - - // This routine is called from netlib (via msgglue) to cause us to actually - // do something. - static int ProcessBackground(URL_Struct* urlstruct); - -protected: - - static msg_Background* FindBGObj(URL_Struct* urlstruct); - - static void PreExit_s(URL_Struct* urlstruct, int status, - MWContext* context); - virtual void PreExit(URL_Struct* urlstruct, int status, - MWContext* context); - - - - /* The below are the only routines typically redefined by subclasses. */ - - - /* DoSomeWork() keeps getting called. If it returns - MK_WAITING_FOR_CONNECTION, that means it hasn't finished its stuff. If - it returns MK_CONNECTED, that means it has successfully finished. If it - returns a negative value, that means we failed and it's an error - condition. */ - virtual int DoSomeWork() = 0; - - - /* AllDone() gets called when things are finished. If the given status is - negative, then we were interrupted or had an error. This is a good - place to kick off another background operation. If it returns TRUE, - then this background object will be destroyed. */ - virtual XP_Bool AllDone(int status); - - MSG_Pane* m_pane; - URL_Struct* m_urlstruct; - -}; - - -#endif /* _MsgBg_H_ */ diff --git a/mozilla/lib/mailto/msgcflds.cpp b/mozilla/lib/mailto/msgcflds.cpp deleted file mode 100644 index 99c136ae36d..00000000000 --- a/mozilla/lib/mailto/msgcflds.cpp +++ /dev/null @@ -1,386 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "errcode.h" - -#include "msgcflds.h" -#include "prefapi.h" -#include "ptrarray.h" - -extern "C" { - extern int MK_OUT_OF_MEMORY; -} - -MSG_CompositionFields::MSG_CompositionFields() -{ - XP_Bool bReturnReceiptOn = FALSE; - - PREF_GetBoolPref("mail.request.return_receipt_on", &bReturnReceiptOn); - PREF_GetIntPref("mail.request.return_receipt", &m_receiptType); - SetReturnReceipt (bReturnReceiptOn); -} - - -MSG_CompositionFields::MSG_CompositionFields(MSG_CompositionFields* c) -{ - int i; - for (i=0 ; i<sizeof(m_headers) / sizeof(char*) ; i++) { - if (c->m_headers[i]) { - m_headers[i] = XP_STRDUP(c->m_headers[i]); - } - } - if (c->m_body) { - m_body = XP_STRDUP(c->m_body); - } - for (i=0 ; i<c->m_numforward ; i++) { - AddForwardURL(c->m_forwardurl[i]); - } - for (i=0; i<sizeof(m_boolHeaders)/sizeof(XP_Bool) ; i++) { - m_boolHeaders[i] = c->m_boolHeaders[i]; - } - m_receiptType = c->m_receiptType; -} - - - -MSG_CompositionFields::~MSG_CompositionFields() -{ - int i; - for (i=0 ; i<sizeof(m_headers) / sizeof(char*) ; i++) { - FREEIF(m_headers[i]); - } - FREEIF(m_body); - for (i=0 ; i<m_numforward ; i++) { - delete [] m_forwardurl[i]; - } - delete [] m_forwardurl; -} - - -int MSG_CompositionFields::SetNewsUrlHeader (const char *hostPort, XP_Bool xxx, const char *group) -{ - // Here's where we allow URLs in the newsgroups: header - - int status = -1; - if (hostPort && group) // must have a group - { - char *newsPostUrl = PR_smprintf ("%s://%s/", HG71654 "news", hostPort); - if (newsPostUrl) - { - SetHeader (MSG_NEWSPOSTURL_HEADER_MASK, newsPostUrl); - XP_FREE(newsPostUrl); - status = 0; // we succeeded, no need to keep looking at this header - } - else - status = MK_OUT_OF_MEMORY; - } - - return status; -} - - -int MSG_CompositionFields::ParseNewsgroupsForUrls (const char *value) -{ - int status = 0; - -#ifdef MOZ_MAIL_NEWS - // Here we pull apart the comma-separated header value and look for news - // URLs. We'll use the URL to set the newspost URL to determine the host - msg_StringArray values (TRUE /*owns memory for strings*/); - values.ImportTokenList (value); - for (int i = 0; i < values.GetSize(); i++) - { - const char *singleValue = values.GetAt(i); - if (NEWS_TYPE_URL == NET_URL_Type (singleValue)) - { - char *hostPort, *group, *id, *data; - XP_Bool xxx; - if (0 == NET_parse_news_url (value, &hostPort, &xxx, &group, &id, &data)) - { - status = SetNewsUrlHeader (hostPort, xxx, group); - if (status == 0) - { - values.RemoveAt(i); // Remove the URL spec for this group - values.Add (group); // Add in the plain old group name - } - FREEIF (hostPort); - FREEIF (group); - FREEIF (id); - FREEIF (data); - } - } - } - char *newValue = values.ExportTokenList (); - if (newValue) - { - status = SetHeader (MSG_NEWSGROUPS_HEADER_MASK, newValue); - XP_FREE(newValue); - } -#endif /* MOZ_MAIL_NEWS */ - return status; -} - - -int -MSG_CompositionFields::SetHeader(MSG_HEADER_SET header, const char* value) -{ - int status = 0; - - // Since colon is not a legal character in a newsgroup name under son-of-1036 - // we're assuming that such a header contains a URL, and we should parse it out - // to infer the news server. - if (value && MSG_NEWSGROUPS_HEADER_MASK == header && XP_STRCHR(value, ':')) - return ParseNewsgroupsForUrls (value); - - int i = DecodeHeader(header); - if (i >= 0) - { - char* old = m_headers[i]; // Done with careful paranoia, in case the - // value given is the old value (or worse, - // a substring of the old value, as does - // happen here and there.) - if (value != old) - { - if (value) - { - m_headers[i] = XP_STRDUP(value); - if (!m_headers[i]) - status = MK_OUT_OF_MEMORY; - } - else - m_headers[i] = NULL; - FREEIF(old); - } - } - - return status; -} - -extern "C"const char* MSG_GetCompFieldsHeader(MSG_CompositionFields *fields, - MSG_HEADER_SET header) -{ - return fields->GetHeader(header); -} - -const char* -MSG_CompositionFields::GetHeader(MSG_HEADER_SET header) -{ - int i = DecodeHeader(header); - if (i >= 0) { - return m_headers[i] ? m_headers[i] : ""; - } - return NULL; -} - - -int -MSG_CompositionFields::SetBoolHeader(MSG_BOOL_HEADER_SET header, XP_Bool bValue) -{ - int status = 0; - XP_ASSERT ((int) header >= (int) MSG_RETURN_RECEIPT_BOOL_HEADER_MASK && - (int) header < (int) MSG_LAST_BOOL_HEADER_MASK); - - if ( (int) header < (int) MSG_RETURN_RECEIPT_BOOL_HEADER_MASK || - (int) header >= (int) MSG_LAST_BOOL_HEADER_MASK ) - return -1; - - m_boolHeaders[header] = bValue; - return status; -} - - -XP_Bool -MSG_CompositionFields::GetBoolHeader(MSG_BOOL_HEADER_SET header) -{ - XP_ASSERT ((int) header >= (int) MSG_RETURN_RECEIPT_BOOL_HEADER_MASK && - (int) header < (int) MSG_LAST_BOOL_HEADER_MASK); - - if ( (int) header < (int) MSG_RETURN_RECEIPT_BOOL_HEADER_MASK || - (int) header >= (int) MSG_LAST_BOOL_HEADER_MASK ) - return FALSE; - - return m_boolHeaders[header]; -} - - -int -MSG_CompositionFields::SetBody(const char* value) -{ - FREEIF(m_body); - if (value) { - m_body = XP_STRDUP(value); - if (!m_body) return MK_OUT_OF_MEMORY; - } - return 0; -} - - -const char* -MSG_CompositionFields::GetBody() -{ - return m_body ? m_body : ""; -} - - -int -MSG_CompositionFields::AppendBody(const char* value) -{ - if (!value || !*value) return 0; - if (!m_body) { - return SetBody(value); - } else { - char* tmp = (char*) XP_ALLOC(XP_STRLEN(m_body) + XP_STRLEN(value) + 1); - if (tmp) { - XP_STRCPY(tmp, m_body); - XP_STRCAT(tmp, value); - XP_FREE(m_body); - m_body = tmp; - } else { - return MK_OUT_OF_MEMORY; - } - } - return 0; -} - - -int -MSG_CompositionFields::DecodeHeader(MSG_HEADER_SET header) -{ - int result; - switch(header) { - case MSG_FROM_HEADER_MASK: - result = 0; - break; - case MSG_REPLY_TO_HEADER_MASK: - result = 1; - break; - case MSG_TO_HEADER_MASK: - result = 2; - break; - case MSG_CC_HEADER_MASK: - result = 3; - break; - case MSG_BCC_HEADER_MASK: - result = 4; - break; - case MSG_FCC_HEADER_MASK: - result = 5; - break; - case MSG_NEWSGROUPS_HEADER_MASK: - result = 6; - break; - case MSG_FOLLOWUP_TO_HEADER_MASK: - result = 7; - break; - case MSG_SUBJECT_HEADER_MASK: - result = 8; - break; - case MSG_ATTACHMENTS_HEADER_MASK: - result = 9; - break; - case MSG_ORGANIZATION_HEADER_MASK: - result = 10; - break; - case MSG_REFERENCES_HEADER_MASK: - result = 11; - break; - case MSG_OTHERRANDOMHEADERS_HEADER_MASK: - result = 12; - break; - case MSG_NEWSPOSTURL_HEADER_MASK: - result = 13; - break; - case MSG_PRIORITY_HEADER_MASK: - result = 14; - break; - case MSG_NEWS_FCC_HEADER_MASK: - result = 15; - break; - case MSG_MESSAGE_ENCODING_HEADER_MASK: - result = 16; - break; - case MSG_CHARACTER_SET_HEADER_MASK: - result = 17; - break; - case MSG_MESSAGE_ID_HEADER_MASK: - result = 18; - break; - case MSG_NEWS_BCC_HEADER_MASK: - result = 19; - break; - case MSG_HTML_PART_HEADER_MASK: - result = 20; - break; - case MSG_DEFAULTBODY_HEADER_MASK: - result = 21; - break; - case MSG_X_TEMPLATE_HEADER_MASK: - result = 22; - break; - default: - XP_ASSERT(0); - result = -1; - break; - } - XP_ASSERT(result < sizeof(m_headers) / sizeof(char*)); - return result; -} - -int -MSG_CompositionFields::AddForwardURL(const char* url) -{ - XP_ASSERT(url && *url); - if (!url || !*url) return -1; - if (m_numforward >= m_maxforward) { - m_maxforward += 10; - char** tmp = new char* [m_maxforward]; - if (!tmp) return MK_OUT_OF_MEMORY; - for (int32 i=0 ; i<m_numforward ; i++) { - tmp[i] = m_forwardurl[i]; - } - delete [] m_forwardurl; - m_forwardurl = tmp; - } - m_forwardurl[m_numforward] = new char[XP_STRLEN(url) + 1]; - if (!m_forwardurl[m_numforward]) return MK_OUT_OF_MEMORY; - XP_STRCPY(m_forwardurl[m_numforward], url); - m_numforward++; - return 0; -} - -int32 -MSG_CompositionFields::GetNumForwardURL() -{ - return m_numforward; -} - -const char* -MSG_CompositionFields::GetForwardURL(int32 which) -{ - XP_ASSERT(which >= 0 && which < m_numforward); - if (which >= 0 && which < m_numforward) { - return m_forwardurl[which]; - } - return NULL; -} diff --git a/mozilla/lib/mailto/msgcflds.h b/mozilla/lib/mailto/msgcflds.h deleted file mode 100644 index 93c6059aecd..00000000000 --- a/mozilla/lib/mailto/msgcflds.h +++ /dev/null @@ -1,292 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgCFlds_H_ -#define _MsgCFlds_H_ - -#include "rosetta.h" -#include "msgzap.h" - - -// Note that all the "Get" methods never return NULL (except in case of serious -// error, like an illegal parameter); rather, they return "" if things were set -// to NULL. This makes it real handy for the callers. - -class MSG_CompositionFields : public MSG_ZapIt { -public: - MSG_CompositionFields(); - MSG_CompositionFields(MSG_CompositionFields*); // Makes a copy. - virtual ~MSG_CompositionFields(); - - int SetHeader(MSG_HEADER_SET header, const char* value); - const char* GetHeader(MSG_HEADER_SET header); - - int SetBoolHeader(MSG_BOOL_HEADER_SET header, XP_Bool bValue); - XP_Bool GetBoolHeader(MSG_BOOL_HEADER_SET header); - - int SetBody(const char*); - const char* GetBody(); - - int AppendBody(const char*); - - // When forwarding a bunch of messages, we can have a bunch of - // "forward url's" instead of an attachment. - - int AddForwardURL(const char*); - - int32 GetNumForwardURL(); - const char* GetForwardURL(int32 which); - - int32 GetReturnReceiptType() { return m_receiptType; }; - void SetReturnReceiptType(int32 type) {m_receiptType = type;}; - - - // Convenience routines... - - int SetFrom(const char* value) { - return SetHeader(MSG_FROM_HEADER_MASK, value); - } - const char* GetFrom() { - return GetHeader(MSG_FROM_HEADER_MASK); - } - - int SetReplyTo(const char* value) { - return SetHeader(MSG_REPLY_TO_HEADER_MASK, value); - } - const char* GetReplyTo() { - return GetHeader(MSG_REPLY_TO_HEADER_MASK); - } - - int SetTo(const char* value) { - return SetHeader(MSG_TO_HEADER_MASK, value); - } - const char* GetTo() { - return GetHeader(MSG_TO_HEADER_MASK); - } - - int SetCc(const char* value) { - return SetHeader(MSG_CC_HEADER_MASK, value); - } - const char* GetCc() { - return GetHeader(MSG_CC_HEADER_MASK); - } - - int SetBcc(const char* value) { - return SetHeader(MSG_BCC_HEADER_MASK, value); - } - const char* GetBcc() { - return GetHeader(MSG_BCC_HEADER_MASK); - } - - int SetFcc(const char* value) { - return SetHeader(MSG_FCC_HEADER_MASK, value); - } - const char* GetFcc() { - return GetHeader(MSG_FCC_HEADER_MASK); - } - - int SetNewsFcc(const char* value) { - return SetHeader(MSG_NEWS_FCC_HEADER_MASK, value); - } - const char* GetNewsFcc() { - return GetHeader(MSG_NEWS_FCC_HEADER_MASK); - } - int SetNewsBcc(const char* value) { - return SetHeader(MSG_NEWS_BCC_HEADER_MASK, value); - } - const char* GetNewsBcc() { - return GetHeader(MSG_NEWS_BCC_HEADER_MASK); - } - - int SetNewsgroups(const char* value) { - return SetHeader(MSG_NEWSGROUPS_HEADER_MASK, value); - } - const char* GetNewsgroups() { - return GetHeader(MSG_NEWSGROUPS_HEADER_MASK); - } - - int SetFollowupTo(const char* value) { - return SetHeader(MSG_FOLLOWUP_TO_HEADER_MASK, value); - } - const char* GetFollowupTo() { - return GetHeader(MSG_FOLLOWUP_TO_HEADER_MASK); - } - - int SetSubject(const char* value) { - return SetHeader(MSG_SUBJECT_HEADER_MASK, value); - } - const char* GetSubject() { - return GetHeader(MSG_SUBJECT_HEADER_MASK); - } - - int SetAttachments(const char* value) { - return SetHeader(MSG_ATTACHMENTS_HEADER_MASK, value); - } - const char* GetAttachments() { - return GetHeader(MSG_ATTACHMENTS_HEADER_MASK); - } - - int SetOrganization(const char* value) { - return SetHeader(MSG_ORGANIZATION_HEADER_MASK, value); - } - const char* GetOrganization() { - return GetHeader(MSG_ORGANIZATION_HEADER_MASK); - } - - int SetReferences(const char* value) { - return SetHeader(MSG_REFERENCES_HEADER_MASK, value); - } - const char* GetReferences() { - return GetHeader(MSG_REFERENCES_HEADER_MASK); - } - - int SetOtherRandomHeaders(const char* value) { - return SetHeader(MSG_OTHERRANDOMHEADERS_HEADER_MASK, value); - } - const char* GetOtherRandomHeaders() { - return GetHeader(MSG_OTHERRANDOMHEADERS_HEADER_MASK); - } - - int SetNewspostUrl(const char* value) { - return SetHeader(MSG_NEWSPOSTURL_HEADER_MASK, value); - } - const char* GetNewspostUrl() { - return GetHeader(MSG_NEWSPOSTURL_HEADER_MASK); - } - - int SetDefaultBody(const char* value) { - return SetHeader(MSG_DEFAULTBODY_HEADER_MASK, value); - } - const char* GetDefaultBody() { - return GetHeader(MSG_DEFAULTBODY_HEADER_MASK); - } - - int SetPriority(const char* value) { - return SetHeader(MSG_PRIORITY_HEADER_MASK, value); - } - - const char* GetPriority() { - return GetHeader(MSG_PRIORITY_HEADER_MASK); - } - - int SetMessageEncoding(const char* value) { - return SetHeader(MSG_MESSAGE_ENCODING_HEADER_MASK, value); - } - - const char* GetMessageEncoding() { - return GetHeader(MSG_MESSAGE_ENCODING_HEADER_MASK); - } - - int SetCharacterSet(const char* value) { - return SetHeader (MSG_CHARACTER_SET_HEADER_MASK, value); - } - - const char* GetCharacterSet() { - return GetHeader(MSG_CHARACTER_SET_HEADER_MASK); - } - - int SetMessageId(const char* value) { - return SetHeader (MSG_MESSAGE_ID_HEADER_MASK, value); - } - - const char* GetMessageId() { - return GetHeader(MSG_MESSAGE_ID_HEADER_MASK); - } - - int SetHTMLPart(const char* value) { - return SetHeader(MSG_HTML_PART_HEADER_MASK, value); - } - - const char* GetHTMLPart() { - return GetHeader(MSG_HTML_PART_HEADER_MASK); - } - - int SetTemplateName(const char* value) { - return SetHeader(MSG_X_TEMPLATE_HEADER_MASK, value); - } - - const char* GetTemplateName() { - return GetHeader(MSG_X_TEMPLATE_HEADER_MASK); - } - - // Bool headers - - int SetReturnReceipt(XP_Bool value) { - return SetBoolHeader(MSG_RETURN_RECEIPT_BOOL_HEADER_MASK, value); - } - - XP_Bool GetReturnReceipt() { - return GetBoolHeader(MSG_RETURN_RECEIPT_BOOL_HEADER_MASK); - } - -HG87266 - - int SetSigned(XP_Bool value) { - return SetBoolHeader(MSG_SIGNED_BOOL_HEADER_MASK, value); - } - - XP_Bool GetSigned() { - return GetBoolHeader(MSG_SIGNED_BOOL_HEADER_MASK); - } - - int SetAttachVCard(XP_Bool value) { - return SetBoolHeader(MSG_ATTACH_VCARD_BOOL_HEADER_MASK, value); - } - - XP_Bool GetAttachVCard() { - return GetBoolHeader(MSG_ATTACH_VCARD_BOOL_HEADER_MASK); - } - - - void SetOwner(MSG_Pane *pane) { - m_owner = pane; - } - - MSG_Pane * GetOwner() { return m_owner; } - - - void SetForcePlainText(XP_Bool value) {m_force_plain_text = value;} - XP_Bool GetForcePlainText() {return m_force_plain_text;} - void SetUseMultipartAlternative(XP_Bool value) {m_multipart_alt = value;} - XP_Bool GetUseMultipartAlternative() {return m_multipart_alt;} - -protected: - int DecodeHeader(MSG_HEADER_SET header); - - // These methods allow news URLs in the newsgroups header - int SetNewsUrlHeader (const char *hostPort, XP_Bool xxx, const char *group); - int ParseNewsgroupsForUrls (const char *value); - - MSG_Pane *m_owner; - char* m_headers[32]; - char* m_body; - char** m_forwardurl; - int32 m_numforward; - int32 m_maxforward; - XP_Bool m_boolHeaders[MSG_LAST_BOOL_HEADER_MASK]; - XP_Bool m_force_plain_text; - XP_Bool m_multipart_alt; - int32 m_receiptType; /* 0:None 1:DSN 2:MDN 3:BOTH */ -}; - - -#endif /* _MsgCFlds_H_ */ diff --git a/mozilla/lib/mailto/msgcpane.cpp b/mozilla/lib/mailto/msgcpane.cpp deleted file mode 100644 index 335e2a6da85..00000000000 --- a/mozilla/lib/mailto/msgcpane.cpp +++ /dev/null @@ -1,3315 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "errcode.h" -#include "error.h" - -#include "mime.h" -#include "shist.h" -#include "xlate.h" -#include "libi18n.h" -#include "xpgetstr.h" - -#include "msgcpane.h" -#include "msgprefs.h" -#include "msgcflds.h" -#include "dirprefs.h" -#include "msgurlq.h" - -#include "edt.h" // to invoke save on the html compose pane -#include "mhtmlstm.h" - -#include "prefapi.h" -#include "htmldlgs.h" -#include "xp_qsort.h" -#include "intl_csi.h" - -extern "C" -{ -extern int MK_MSG_MSG_COMPOSITION; - -extern int MK_COMMUNICATIONS_ERROR; -extern int MK_OUT_OF_MEMORY; - -extern int MK_MSG_EMPTY_MESSAGE; -extern int MK_MSG_DOUBLE_INCLUDE; - -extern int MK_MSG_WHY_QUEUE_SPECIAL; -extern int MK_MSG_WHY_QUEUE_SPECIAL_OLD; -extern int MK_MSG_NOT_AS_SENT_FOLDER; - -extern int MK_MSG_MISSING_SUBJECT; - -HG65256 - -extern int MK_MSG_SEND; -extern int MK_MSG_SEND_LATER; -extern int MK_MSG_ATTACH_ETC; -extern int MK_MSG_QUOTE_MESSAGE; -extern int MK_MSG_FROM; -extern int MK_MSG_REPLY_TO; -extern int MK_MSG_MAIL_TO; -extern int MK_MSG_MAIL_CC; -extern int MK_MSG_MAIL_BCC; -extern int MK_MSG_FILE_CC; -extern int MK_MSG_POST_TO; -extern int MK_MSG_FOLLOWUPS_TO; -extern int MK_MSG_SUBJECT; -extern int MK_MSG_ATTACHMENT; -extern int MK_MSG_ATTACH_AS_TEXT; -extern int MK_MSG_SAVE_DRAFT; -extern int MK_ADDR_BOOK_CARD; - -extern int MK_MSG_ASK_HTML_MAIL; -extern int MK_MSG_ASK_HTML_MAIL_TITLE; -extern int MK_MSG_HTML_RECIPIENTS; -extern int MK_MSG_HTML_RECIPIENTS_TITLE; -extern int MK_MSG_EVERYONE; - -extern int MK_MSG_ENTER_NAME_FOR_TEMPLATE; - -#include "xp_help.h" -} - - - -HG33234 - -#define ALL_HEADERS (MSG_FROM_HEADER_MASK | \ - MSG_REPLY_TO_HEADER_MASK | \ - MSG_TO_HEADER_MASK | \ - MSG_CC_HEADER_MASK | \ - MSG_BCC_HEADER_MASK | \ - MSG_FCC_HEADER_MASK | \ - MSG_NEWSGROUPS_HEADER_MASK | \ - MSG_FOLLOWUP_TO_HEADER_MASK | \ - MSG_SUBJECT_HEADER_MASK | \ - MSG_ATTACHMENTS_HEADER_MASK) - - -enum RecipientType { - Address = 1, Domain = 2, Newsgroup = 3, GroupHierarchy = 4 -}; - -class RecipientEntry : public MSG_ZapIt { -public: - RecipientEntry(const char* name, const char* description, - RecipientType type, XP_Bool htmlok); - ~RecipientEntry(); - - char* GetName() {return m_name;} - char* GetDescription() {return m_description;} - RecipientType GetType() {return m_type;} - XP_Bool GetHTMLOk() {return m_htmlok;} - XP_Bool GetNewHTMLOk() {return m_newhtmlok;} - void SetNewOK(XP_Bool value); - XP_Bool GetTouched() {return m_touched;} - -protected: - char* m_name; - char* m_description; - RecipientType m_type; - XP_Bool m_htmlok; - XP_Bool m_newhtmlok; - XP_Bool m_touched; -}; - - -RecipientEntry::RecipientEntry(const char* name, const char* description, - RecipientType type, XP_Bool htmlok) -{ - m_name = XP_STRDUP(name); - m_description = XP_STRDUP(description); - if (!m_description) { - FREEIF(m_name); // Checking for name being NULL is the hack - // used to see if we're out of memory. - } - m_type = type; - m_htmlok = htmlok; -} - -RecipientEntry::~RecipientEntry() -{ - FREEIF(m_name); - FREEIF(m_description); -} - -void -RecipientEntry::SetNewOK(XP_Bool value) -{ - XP_ASSERT(!m_touched); - m_touched = TRUE; - m_newhtmlok = value; -} - - - -class MSG_HTMLRecipients : public MSG_ZapIt { -public: - MSG_HTMLRecipients(); - ~MSG_HTMLRecipients(); - - int AddOne(const char* name, const char* description, - RecipientType type, XP_Bool htmlok); - MSG_RecipientList* GetList(XP_Bool htmlok); - - int SetNewList(int32* notoklist, int32* oklist); - - char** GetChangedList(RecipientType type, XP_Bool htmlok); - void FreeChangedList(char** list); - int GetNum() {return m_num;} - -protected: - RecipientEntry** m_list; - int32 m_num; - int32 m_max; - MSG_RecipientList* m_generatedList[2]; -}; - -MSG_HTMLRecipients::MSG_HTMLRecipients() { -} - -MSG_HTMLRecipients::~MSG_HTMLRecipients() { - delete m_generatedList[0]; - delete m_generatedList[1]; - for (int32 i=0 ; i<m_num ; i++) { - delete m_list[i]; - } - delete [] m_list; -} - -int -MSG_HTMLRecipients::AddOne(const char* name, const char* description, - RecipientType type, XP_Bool htmlok) -{ - int32 i; - for (i=0 ; i<m_num ; i++) { - if (m_list[i]->GetType() == type && - XP_STRCMP(m_list[i]->GetName(), name) == 0) return 0; - } - if (m_num >= m_max) { - RecipientEntry** tmp = new RecipientEntry* [m_max + 10]; - if (!tmp) return MK_OUT_OF_MEMORY; - m_max += 10; - for (i=0 ; i<m_num ; i++) { - tmp[i] = m_list[i]; - } - delete [] m_list; - m_list = tmp; - } - m_list[m_num] = new RecipientEntry(name, description, type, htmlok); - if (!m_list[m_num]) return MK_OUT_OF_MEMORY; - if (!m_list[m_num]->GetName()) { - delete m_list[m_num]; - return MK_OUT_OF_MEMORY; - } - m_num++; - return 0; -} - - -MSG_RecipientList* -MSG_HTMLRecipients::GetList(XP_Bool htmlok) -{ - int32 i, j; - if (m_generatedList[0] == NULL) { - // Sort the entries in the list. Within a given type, we want to - // keep things in the order they were generated, but they need to - // be grouped by type. So, it's bubble-sort time. Whee... - for (i=1 ; i<m_num ; i++) { - for (j = i; - j > 0 && m_list[j]->GetType() < m_list[j-1]->GetType(); - j--) { - RecipientEntry* tmp = m_list[j]; - m_list[j] = m_list[j-1]; - m_list[j-1] = tmp; - } - } - - m_generatedList[0] = new MSG_RecipientList [m_num + 1]; - if (!m_generatedList[0]) return NULL; - m_generatedList[1] = new MSG_RecipientList [m_num + 1]; - if (!m_generatedList[1]) { - delete [] m_generatedList[0]; - return NULL; - } - int32 cur[2]; - cur[0] = cur[1] = 0; - for (i=0 ; i<m_num ; i++) { - int w = int(m_list[i]->GetHTMLOk()); - m_generatedList[w][cur[w]].name = m_list[i]->GetDescription(); - m_generatedList[w][cur[w]].value = i; - (cur[w])++; - } - for (i=0 ; i<2 ; i++) { - m_generatedList[i][cur[i]].name = NULL; - m_generatedList[i][cur[i]].value = -1; - } - } - return m_generatedList[int(htmlok)]; -} - - -int -MSG_HTMLRecipients::SetNewList(int32* notoklist, int32* oklist) -{ - int32 i; -#ifdef DEBUG - for (i=0 ; i<m_num ; i++) { - XP_ASSERT(!m_list[i]->GetTouched()); - } -#endif - for (int w=0 ; w<2 ; w++) { - XP_Bool ok = (w == 1); - int32* list = ok ? oklist : notoklist; - XP_ASSERT(list); - if (!list) continue; - for ( ; *list >= 0 ; list++) { - XP_ASSERT(*list < m_num); - if (*list >= m_num) break; - m_list[*list]->SetNewOK(ok); - } - } - int status = 0; - for (i=0 ; i<m_num ; i++) { - XP_ASSERT(m_list[i]->GetTouched()); - if (!m_list[i]->GetTouched()) { - status = -1; - } - } - return status; -} - - -char** -MSG_HTMLRecipients::GetChangedList(RecipientType type, XP_Bool htmlok) -{ - char** result = new char * [m_num + 1]; - if (!result) return NULL; - char** tmp = result; - for (int32 i=0 ; i<m_num ; i++) { - if (m_list[i]->GetType() == type && - m_list[i]->GetNewHTMLOk() == htmlok && - m_list[i]->GetHTMLOk() != htmlok) { - *tmp = m_list[i]->GetName(); - tmp++; - } - } - *tmp = NULL; - return result; -} - - -void -MSG_HTMLRecipients::FreeChangedList(char** list) -{ - delete [] list; -} - - -static void msg_free_attachment_list(struct MSG_AttachmentData *list); - -static void -msg_delete_attached_files(struct MSG_AttachedFile *attachments) -{ - struct MSG_AttachedFile *tmp; - if (!attachments) return; - for (tmp = attachments; tmp->orig_url; tmp++) { - FREEIF(tmp->orig_url); - FREEIF(tmp->type); - FREEIF(tmp->real_name); - FREEIF(tmp->encoding); - FREEIF(tmp->description); - FREEIF(tmp->x_mac_type); - FREEIF(tmp->x_mac_creator); - if (tmp->file_name) { - XP_FileRemove(tmp->file_name, xpFileToPost); - XP_FREE(tmp->file_name); - } - } - XP_FREEIF(attachments); -} - - -MSG_CompositionPane::MSG_CompositionPane(MWContext* context, - MWContext* old_context, - MSG_Prefs* prefs, - MSG_CompositionFields* fields, - MSG_Master* master) -: MSG_Pane(context, master) -{ - m_prefs = prefs; - m_htmlaction = MSG_HTMLAskUser; - Initialize(old_context, fields); -} - - -MSG_CompositionPane::MSG_CompositionPane(MWContext* context, - MSG_Prefs* prefs, - MSG_Master* master) -: MSG_Pane(context, master) -{ - m_prefs = prefs; -} - -int -MSG_CompositionPane::Initialize(MWContext* old_context, - MSG_CompositionFields* fields) -{ - m_print = new PrintSetup; - - InitializeHeaders(old_context, fields); - m_visible_headers = GetInterestingHeaders(); - m_deliver_mode = MSG_DeliverNow; - m_haveAttachedVcard = FALSE; - - m_fields->SetForcePlainText(FALSE); // Coming into us, this field meant - // "bring up the editor in plaintext - // mode". Well, that's already been - // done at this point. Now, we want - // it to mean "convert this message - // to plaintext on send". Which we - // do only if DetermineHTMLAction() - // tells us to. - - return 0; -} - - - -MSG_CompositionPane::~MSG_CompositionPane() { - // Don't interrupt if there's nothing to interrupt because we might lose - // mocha messages. - if (NET_AreThereActiveConnectionsForWindow(m_context)) - msg_InterruptContext (m_context, FALSE); - if (m_textContext != NULL) { - msg_InterruptContext(m_textContext, TRUE); - } - - msg_delete_attached_files (m_attachedFiles); - - FREEIF(m_defaultUrl); - FREEIF(m_attachmentString); - - msg_free_attachment_list(m_attachData); - - delete m_print; - m_print = NULL; - -#if XP_UNIX - if (m_context) FE_DestroyMailCompositionContext(m_context); -#endif //XP_UNIX - m_context = NULL; - - delete m_fields; - m_fields = NULL; - delete m_initfields; - m_initfields = NULL; - delete m_htmlrecip; - m_htmlrecip = NULL; - - FREEIF(m_quotedText); - FREEIF(m_messageId); -} - - -MSG_PaneType -MSG_CompositionPane::GetPaneType() { - return MSG_COMPOSITIONPANE; -} - - -void MSG_CompositionPane::NotifyPrefsChange(NotifyCode) { - // ###tw Write me! -} - - - -char* -MSG_CompositionPane::FigureBcc(XP_Bool newsBcc) -{ - char* result = NULL; - FREEIF(result); - const char* tmp = - GetPrefs()->GetDefaultHeaderContents( - newsBcc ? MSG_NEWS_BCC_HEADER_MASK : MSG_BCC_HEADER_MASK); - if (!GetPrefs()->GetDefaultBccSelf(newsBcc)) { - result = XP_STRDUP(tmp ? tmp : ""); - } else if (!tmp || !*tmp) { - result = XP_STRDUP(FE_UsersMailAddress()); - } else { - result = PR_smprintf("%s, %s", FE_UsersMailAddress(), tmp); - } - return result; -} - - -MsgERR -MSG_CompositionPane::GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, - int32 numindices, - XP_Bool *selectable_pP, - MSG_COMMAND_CHECK_STATE *selected_pP, - const char **display_stringP, - XP_Bool *plural_pP) -{ - const char *display_string = 0; - XP_Bool plural_p = FALSE; - // N.B. default is TRUE, so you don't need to set it in each case - XP_Bool selectable_p = TRUE; - XP_Bool selected_p = FALSE; - XP_Bool selected_used_p = FALSE; - - switch (command) - { - case MSG_AttachAsText: - // the WinFE uses this for lots of update, so pretend we handle it. - display_string = XP_GetString(MK_MSG_ATTACH_AS_TEXT); - break; - case MSG_SendMessage: - display_string = XP_GetString(MK_MSG_SEND); - if (m_attachmentInProgress) - selectable_p = FALSE; - break; - case MSG_SendMessageLater: - display_string = XP_GetString(MK_MSG_SEND_LATER); - if (m_attachmentInProgress) - selectable_p = FALSE; - break; - case MSG_SaveDraft: - case MSG_SaveDraftThenClose: - case MSG_SaveTemplate: - display_string = XP_GetString(MK_MSG_SAVE_DRAFT); - if (m_attachmentInProgress) - selectable_p = FALSE; - break; - case MSG_Attach: - display_string = XP_GetString(MK_MSG_ATTACH_ETC); - break; - - case MSG_ShowFrom: - display_string = XP_GetString(MK_MSG_FROM); - selected_p = ShowingCompositionHeader(MSG_FROM_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowReplyTo: - display_string = XP_GetString(MK_MSG_REPLY_TO); - selected_p = ShowingCompositionHeader(MSG_REPLY_TO_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowTo: - display_string = XP_GetString(MK_MSG_MAIL_TO); - selected_p = ShowingCompositionHeader(MSG_TO_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowCC: - display_string = XP_GetString(MK_MSG_MAIL_CC); - selected_p = ShowingCompositionHeader(MSG_CC_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowBCC: - display_string = XP_GetString(MK_MSG_MAIL_BCC); - selected_p = ShowingCompositionHeader(MSG_BCC_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowFCC: - display_string = XP_GetString(MK_MSG_FILE_CC); - selected_p = ShowingCompositionHeader(MSG_FCC_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowPostTo: - display_string = XP_GetString(MK_MSG_POST_TO); - selected_p = ShowingCompositionHeader(MSG_NEWSGROUPS_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowFollowupTo: - display_string = XP_GetString(MK_MSG_FOLLOWUPS_TO); - selected_p = ShowingCompositionHeader(MSG_FOLLOWUP_TO_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowSubject: - display_string = XP_GetString(MK_MSG_SUBJECT); - selected_p = ShowingCompositionHeader(MSG_SUBJECT_HEADER_MASK); - selected_used_p = TRUE; - break; - case MSG_ShowAttachments: - display_string = XP_GetString(MK_MSG_ATTACHMENT); - selected_p = ShowingCompositionHeader(MSG_ATTACHMENTS_HEADER_MASK); - selected_used_p = TRUE; - break; - default: - selectable_p = FALSE; - return MSG_Pane::GetCommandStatus(command, indices, numindices, - selectable_pP, selected_pP, display_stringP, plural_pP); - } - if (selectable_pP) - *selectable_pP = selectable_p; - if (selected_pP) - { - if (selected_used_p) - { - if (selected_p) - *selected_pP = MSG_Checked; - else - *selected_pP = MSG_Unchecked; - } - else - { - *selected_pP = MSG_NotUsed; - } - } - if (display_stringP) - *display_stringP = display_string; - if (plural_pP) - *plural_pP = plural_p; - - return 0; -} - - -MsgERR -MSG_CompositionPane::DoCommand(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numindices) -{ - MsgERR status = 0; - InterruptContext(FALSE); - switch (command) { - case MSG_SendMessage: - status = SendMessageNow(); /* ###tw Error-return-type mismatch! */ - break; - case MSG_SendMessageLater: - status = QueueMessageForLater();/* ###tw Error-return-type mismatch! */ - break; - case MSG_SaveDraft: - case MSG_SaveDraftThenClose: - if (command == MSG_SaveDraftThenClose) - m_closeAfterSave = TRUE; - status = SaveMessageAsDraft(); /* ### Error-return-type mismatch! */ - break; - case MSG_SaveTemplate: - status = SaveMessageAsTemplate(); - break; - case MSG_ShowPostTo: // how to do this? - ToggleCompositionHeader(MSG_NEWSGROUPS_HEADER_MASK); - break; - HG82762 - case MSG_ShowFrom: - ToggleCompositionHeader(MSG_FROM_HEADER_MASK); - break; - case MSG_ShowReplyTo: - ToggleCompositionHeader(MSG_REPLY_TO_HEADER_MASK); - break; - case MSG_ShowTo: - ToggleCompositionHeader(MSG_TO_HEADER_MASK); - break; - case MSG_ShowCC: - ToggleCompositionHeader(MSG_CC_HEADER_MASK); - break; - case MSG_ShowBCC: - ToggleCompositionHeader(MSG_BCC_HEADER_MASK); - break; - case MSG_ShowFCC: - ToggleCompositionHeader(MSG_FCC_HEADER_MASK); - break; - case MSG_ShowFollowupTo: - ToggleCompositionHeader(MSG_FOLLOWUP_TO_HEADER_MASK); - break; - case MSG_ShowSubject: - ToggleCompositionHeader(MSG_SUBJECT_HEADER_MASK); - break; - case MSG_ShowAttachments: - ToggleCompositionHeader(MSG_ATTACHMENTS_HEADER_MASK); - break; - default: - status = MSG_Pane::DoCommand(command, indices, numindices); - break; - } - return status; -} - -extern "C" void FE_MsgShowHeaders(MSG_Pane *pPane, MSG_HEADER_SET mhsHeaders); - -void MSG_CompositionPane::ToggleCompositionHeader(uint32 header) -{ -#if XP_UNIX - if (m_visible_headers & header) { - m_visible_headers &= ~header; - } else { - m_visible_headers |= header; - } - FE_MsgShowHeaders(this, m_visible_headers); -#endif //XP_UNIX -} - -XP_Bool -MSG_CompositionPane::ShowingAllCompositionHeaders() -{ - return m_visible_headers == ALL_HEADERS; -} - -XP_Bool -MSG_CompositionPane::ShowingCompositionHeader(uint32 mask) -{ - return (m_visible_headers & mask) == mask; -} - - -int -MSG_CompositionPane::SetCallbacks(MSG_CompositionPaneCallbacks* callbacks, - void* closure) -{ - m_callbacks = *callbacks; - m_callbackclosure = closure; - return 0; -} - - -void -MSG_CompositionPane::InitializeHeaders(MWContext* old_context, - MSG_CompositionFields* fields) -{ -#ifdef XP_UNIX - XP_ASSERT(m_fields == NULL); - XP_ASSERT(m_initfields == NULL); - - const char *real_addr = FE_UsersMailAddress (); - char *real_return_address; - const char* sig; - XP_Bool forward_quoted; - forward_quoted = FALSE; - - m_fields = new MSG_CompositionFields(fields); - // ###tw Should check for failure! - - /* hack for forward quoted. Checks the attachment field for a cookie - string indicating that this is a forward quoted operation. If a cookie - is found, the attachment string is slid back down over the cookie. This - will put the original string back in tact. */ - - const char* attachment = m_fields->GetAttachments(); - - if (attachment) { - if (!XP_STRNCMP(attachment, MSG_FORWARD_COOKIE, - strlen(MSG_FORWARD_COOKIE))) { - attachment += XP_STRLEN(MSG_FORWARD_COOKIE); - forward_quoted = TRUE; /* set forward with quote flag */ - m_fields->SetAttachments(attachment); - attachment = m_fields->GetAttachments(); - } - } - - m_status = -1; - - if (MISC_ValidateReturnAddress(old_context, real_addr) < 0) { - return; - } - - real_return_address = MIME_MakeFromField(); - - XP_ASSERT (m_context->type == MWContextMessageComposition); - XP_ASSERT (XP_FindContextOfType(0, MWContextMessageComposition)); - XP_ASSERT (!m_context->msg_cframe); - - int32 count = m_fields->GetNumForwardURL(); - if (count > 0) { - // if forwarding one or more messages - XP_ASSERT(*attachment == '\0'); - MSG_AttachmentData *alist = (struct MSG_AttachmentData *) - XP_ALLOC((count + 1) * sizeof(MSG_AttachmentData)); - if (alist) { - XP_MEMSET(alist, 0, (count + 1) * sizeof(*alist)); - for (count--; count >= 0; count--) { - alist[count].url = (char*) m_fields->GetForwardURL(count); - alist[count].real_name = (char*) m_fields->GetForwardURL(count); - } - SetAttachmentList(alist); - XP_FREE(alist); - } - } else if (*attachment) { - // forwarding a single url - // typically a web page - MSG_AttachmentData *alist; - count = 1; - alist = (struct MSG_AttachmentData *) - XP_ALLOC((count + 1) * sizeof(MSG_AttachmentData)); - if (alist) { - XP_MEMSET(alist, 0, (count + 1) * sizeof(*alist)); - alist[0].url = (char *)attachment; - alist[0].real_name = XP_STRDUP ((char *)attachment); - SetAttachmentList(alist); - } - } // else if (*attachment) - - if (*attachment) { - if (*attachment != '(') { - m_defaultUrl = XP_STRDUP(attachment); - } - } - else if (old_context) { - History_entry *h = SHIST_GetCurrent(&old_context->hist); - if (h && h->address) { - m_defaultUrl = XP_STRDUP(h->address); - } - } - - if (!*m_fields->GetFrom()) { - m_fields->SetFrom(real_return_address); - } - - /* Guess what kind of reply this is based on the headers we passed in. - */ - - const char* newsgroups = m_fields->GetNewsgroups(); - const char* to = m_fields->GetTo(); - const char* cc = m_fields->GetCc(); - const char* references = m_fields->GetReferences(); - - if (count > 0 || *attachment) { - /* if an attachment exists and the forward_quoted flag is set, this - is a forward quoted operation. */ - if (forward_quoted) { - m_replyType = MSG_ForwardMessageQuoted; - /* clear out the attachment list for forward quoted messages. */ - SetAttachmentList(NULL); - m_pendingAttachmentsCount = 0; - } else { - m_replyType = MSG_ForwardMessageAttachment; - } - } else if (*references && *newsgroups && (*to || *cc)) { - m_replyType = MSG_PostAndMailReply; - } else if (*references && *newsgroups) { - m_replyType = MSG_PostReply; - } else if (*references && *cc) { - m_replyType = MSG_ReplyToAll; - } else if (*references && *to) { - m_replyType = MSG_ReplyToSender; - } else if (*newsgroups) { - m_replyType = MSG_PostNew; - } else { - m_replyType = MSG_MailNew; - } - - - if (!*m_fields->GetOrganization()) { - m_fields->SetOrganization(FE_UsersOrganization()); - } - - if (!*m_fields->GetReplyTo()) { - m_fields-> - SetReplyTo(GetPrefs()-> - GetDefaultHeaderContents(MSG_REPLY_TO_HEADER_MASK)); - } - if (!*m_fields->GetFcc()) - { - XP_Bool useDefaultFcc = TRUE; - /*int prefError =*/ PREF_GetBoolPref(*newsgroups ? "news.use_fcc" : "mail.use_fcc", - &useDefaultFcc); - if (useDefaultFcc) - { - m_fields->SetFcc(GetPrefs()-> - GetDefaultHeaderContents(*newsgroups ? - MSG_NEWS_FCC_HEADER_MASK : MSG_FCC_HEADER_MASK)); - } - } - if (!*m_fields->GetBcc()) { - char* bcc = FigureBcc(*newsgroups); - m_fields->SetBcc(bcc); - FREEIF(bcc); - } - - { - const char *body = m_fields->GetDefaultBody(); - if (body && *body) - { - m_fields->AppendBody(body); - m_fields->AppendBody(LINEBREAK); - /* m_bodyEdited = TRUE; */ - } - } - - HG93653 - sig = FE_UsersSignature (); - if (sig && *sig) { - m_fields->AppendBody(LINEBREAK); - /* If the sig doesn't begin with "--" followed by whitespace or a - newline, insert "-- \n" (the pseudo-standard sig delimiter.) */ - if (sig[0] != '-' || sig[1] != '-' || - (sig[2] != ' ' && sig[2] != CR && sig[2] != LF)) { - m_fields->AppendBody("-- " LINEBREAK); - } - m_fields->AppendBody(sig); - } - - FREEIF (real_return_address); - - - FE_SetDocTitle(m_context, (char*) GetWindowTitle()); - - - m_initfields = new MSG_CompositionFields(m_fields); - // ###tw Should check for failure! -#endif //XP_UNIX -} - - -XP_Bool MSG_CompositionPane::ShouldAutoQuote() { - if (m_haveQuoted) return FALSE; - if (m_replyType == MSG_ForwardMessageQuoted || - GetPrefs()->GetAutoQuoteReply()) { - switch (m_replyType) { - case MSG_ForwardMessageQuoted: - case MSG_PostAndMailReply: - case MSG_PostReply: - case MSG_ReplyToAll: - case MSG_ReplyToSender: - return TRUE; - - default: - break; - } - } - return FALSE; -} - - - - -const char* MSG_CompositionPane::GetDefaultURL() { - return m_defaultUrl; -} - - - -MSG_CompositionFields* -MSG_CompositionPane::GetInitialFields() -{ - return m_initfields; -} - - - - -#define ALL_HEADERS (MSG_FROM_HEADER_MASK | \ - MSG_REPLY_TO_HEADER_MASK | \ - MSG_TO_HEADER_MASK | \ - MSG_CC_HEADER_MASK | \ - MSG_BCC_HEADER_MASK | \ - MSG_FCC_HEADER_MASK | \ - MSG_NEWSGROUPS_HEADER_MASK | \ - MSG_FOLLOWUP_TO_HEADER_MASK | \ - MSG_SUBJECT_HEADER_MASK | \ - MSG_ATTACHMENTS_HEADER_MASK) - - -MSG_HEADER_SET MSG_CompositionPane::GetInterestingHeaders() -{ - MSG_HEADER_SET desired_mask = 0; - /* The FE has requested the list of "interesting" header fields. - The logic here is a bit complicated, in the interest of DWIMity. - */ - - /* Cc, Subject, and Attachments are always interesting. - */ - desired_mask |= (MSG_CC_HEADER_MASK | - MSG_SUBJECT_HEADER_MASK /* | - MSG_ATTACHMENTS_HEADER_MASK */); - - /* To is interesting if: - - it is non-empty, or - - this composition window was brought up with a "mail sending" - command (Mail New, Reply-*, Forward, or Post and Mail). - */ - if (*m_fields->GetTo() || - m_replyType == MSG_MailNew || - m_replyType == MSG_ReplyToSender || - m_replyType == MSG_ReplyToAll || - m_replyType == MSG_PostAndMailReply || - m_replyType == MSG_ForwardMessageAttachment || - m_replyType == MSG_ForwardMessageQuoted) - desired_mask |= MSG_TO_HEADER_MASK; - - /* CC is interesting if: - - it is non-empty, or - - this composition window was brought up as a reply to another - mail message. (Should mail-and-post do this too?) - */ - if ((*m_fields->GetCc()) || - m_replyType == MSG_ReplyToSender || - m_replyType == MSG_ReplyToAll) - desired_mask |= MSG_CC_HEADER_MASK; - - /* Reply-To and BCC are interesting if: - - they are non-empty, AND - - they are different from the default value - (meaning the user has edited them this session.) - */ - const char* reply_to = m_fields->GetReplyTo(); - const char* default_reply_to = - GetPrefs()->GetDefaultHeaderContents(MSG_REPLY_TO_HEADER_MASK); - if (reply_to && *reply_to && - ((default_reply_to && *default_reply_to) - ? !!XP_STRCMP (reply_to, default_reply_to) : TRUE)) - desired_mask |= MSG_REPLY_TO_HEADER_MASK; - - /* (see above.) */ - const char* bcc = m_fields->GetBcc(); - const char* default_bcc = - GetPrefs()->GetDefaultHeaderContents(MSG_BCC_HEADER_MASK); - if (bcc && *bcc && - ((default_bcc && *default_bcc) - ? !!XP_STRCMP (bcc, default_bcc) : TRUE)) - desired_mask |= MSG_BCC_HEADER_MASK; - - /* FCC is never interesting. - */ - - /* Newsgroups is interesting if: - - it is non-empty, or - - this composition window was brought up with a "news posting" - command (Post New, Post Reply, or Post and Mail). - */ - - const char* newsgroups = m_fields->GetNewsgroups(); - if ((newsgroups && *newsgroups) || - m_replyType == MSG_PostNew || - m_replyType == MSG_PostReply || - m_replyType == MSG_PostAndMailReply) - desired_mask |= MSG_NEWSGROUPS_HEADER_MASK; - - /* Followup-To is interesting if: - - it is non-empty, AND - - it differs from the Newsgroups field. - */ - const char* followup_to = m_fields->GetFollowupTo(); - if (followup_to && *followup_to && - (newsgroups ? XP_STRCMP (followup_to, newsgroups) : TRUE)) - desired_mask |= MSG_FOLLOWUP_TO_HEADER_MASK; - - return desired_mask; -} - - -void -MSG_CompositionPane::GetUrlDone_S(PrintSetup* pptr) -{ - ((MSG_CompositionPane*) (pptr->carg))->GetUrlDone(pptr); -} - - -#define QUOTE_BUFFER_SIZE 10240 - -void -MSG_CompositionPane::GetUrlDone(PrintSetup* /*pptr*/) -{ -#ifdef XP_UNIX - XP_File file; - FREEIF(m_quoteUrl); - m_textContext = NULL; /* since this is called as a result of - TXFE_AllConnectionsComplete, we know this context - is going away by natural means */ - int bufSize = QUOTE_BUFFER_SIZE; - - XP_FileClose(m_print->out); - - XP_StatStruct stat; - char* curquote = NULL; - int32 replyOnTop = 0, replyWithExtraLines = 0; - - PREF_GetIntPref("mailnews.reply_on_top", &replyOnTop); - PREF_GetIntPref("mailnews.reply_with_extra_lines", &replyWithExtraLines); - - int32 extra = (m_markup ? 0 : - (replyWithExtraLines ? LINEBREAK_LEN * replyWithExtraLines - : 0)); - - if (XP_Stat(m_print->filename, &stat, xpTemporary) == 0) { - m_quotedText = (char*) XP_ALLOC(stat.st_size + 1 + extra); - - /* Insert two line break at the begining of the quoted text */ - if (!m_quotedText) return; - - curquote = m_quotedText; - - if (!m_markup && extra && replyOnTop == 1) { - for (; replyWithExtraLines > 0; replyWithExtraLines--) { - XP_STRCPY(curquote, LINEBREAK); - curquote += LINEBREAK_LEN; - if (m_quotefunc) - (*m_quotefunc)(m_quoteclosure, LINEBREAK); - } - } - } - - /* Open hateful temporary file as input */ - file = XP_FileOpen (m_print->filename, xpTemporary, XP_FILE_READ); - if (file) { - char* buf = NULL; - while (!buf && (bufSize >= 512)) - { - buf = (char*)XP_ALLOC(bufSize + 1); - if (!buf) - bufSize /= 2; - } - if (buf) { - int32 bufferLen; - CCCDataObject conv; - int doConv; - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(m_context); - int16 win_csid = INTL_GetCSIWinCSID(c); - - /* - * We aren't actually converting character encodings here. - * (Note that both the "from" and "to" are the win_csid.) - * This makes it call a special routine that makes sure we - * deal with whole multibyte characters instead of partial - * ones that happen to lie on the boundary of the buffer. -- erik - */ - conv = INTL_CreateCharCodeConverter(); - if (conv) { - doConv = INTL_GetCharCodeConverter(win_csid, win_csid, conv); - } else { - doConv = 0; - } - - while (0 < (bufferLen = XP_FileRead(buf, bufSize, file))) { - char *newBuf; - buf[bufferLen] = '\0'; - if (doConv) { - newBuf = (char *) - INTL_CallCharCodeConverter(conv, - (unsigned char *) buf, - bufferLen); - if (!newBuf) { - newBuf = buf; - } - } else { - newBuf = buf; - } - if (m_quotefunc) { - (*m_quotefunc)(m_quoteclosure, newBuf); - } - - if (m_quotedText && curquote) { - XP_ASSERT(curquote + bufferLen <= m_quotedText + stat.st_size + extra); - if (curquote + bufferLen <= m_quotedText + stat.st_size + extra) { - XP_STRCPY(curquote, newBuf); - curquote += bufferLen; - } - } - - if (newBuf != buf) { - XP_FREE(newBuf); - } - } - - if (!m_markup && extra && replyOnTop == 0) { - for (; replyWithExtraLines > 1; replyWithExtraLines--) { - XP_STRCPY(curquote, LINEBREAK); - curquote += LINEBREAK_LEN; - if (m_quotefunc) - (*m_quotefunc)(m_quoteclosure, LINEBREAK); - } - } - - XP_FREE(buf); - if (conv) { - INTL_DestroyCharCodeConverter(conv); - } - } - XP_FileClose(file); - } - if (curquote) *curquote = '\0'; - m_cited = TRUE; - XP_FileRemove(m_print->filename, xpTemporary); - FREEIF(m_print->filename); - if (m_exitQuoting) { - (*m_exitQuoting)(m_dummyUrl, 0, m_context); - m_exitQuoting = NULL; - m_dummyUrl = NULL; - - /* hack that manages to get the cursor back to normal. */ - NET_SilentInterruptWindow(m_context); - } - if (m_quotefunc) { - (*m_quotefunc)(m_quoteclosure, NULL); - m_quotefunc = NULL; - } - - - /* Re-enable the UI. */ - FE_UpdateCompToolbar (this); -#endif //XP_UNIX -} - - - -class QuotePlainIntoHTML : public MSG_ZapIt { -public: - QuotePlainIntoHTML(MWContext* context); - ~QuotePlainIntoHTML(); - - int DoQuote(const char* data); - static int32 QuoteLine_s(char* line, uint32 line_length, void* closure); - int32 QuoteLine(char* line, uint32 line_length); -protected: - MWContext* m_context; - char* m_buffer; - uint32 m_size; - uint32 m_fp; - XP_Bool m_insertedpre; - char* m_outbuf; - int32 m_outbufsize; - int m_maxLineWidth; - int32 m_replyOnTop; - int32 m_replyWithExtraLines; -}; - - -static int -MyQuoteFunc(void* closure, const char* data) -{ - return ((QuotePlainIntoHTML*) closure)->DoQuote(data); -} - - - - - -QuotePlainIntoHTML::QuotePlainIntoHTML(MWContext* context) -{ - m_context = context; - if (EDT_PasteQuoteBegin(m_context, TRUE) != EDT_COP_OK) { - m_context = NULL; - } - PREF_GetIntPref("mailnews.reply_on_top", &m_replyOnTop); - PREF_GetIntPref("mailnews.reply_with_extra_lines", &m_replyWithExtraLines); -} - -QuotePlainIntoHTML::~QuotePlainIntoHTML() -{ - FREEIF(m_buffer); - delete [] m_outbuf; -} - - - - -int -QuotePlainIntoHTML::DoQuote(const char* data) -{ - if (data) { - if (!m_context) return 0; - return msg_LineBuffer(data, XP_STRLEN(data), &m_buffer, &m_size, &m_fp, FALSE, -#ifdef XP_OS2 - (int32 (_Optlink*) (char*,uint32,void*)) -#endif - QuoteLine_s, this); - - } else { - if (m_context) { - if (m_fp > 0) { - QuoteLine(m_buffer, m_fp); - } - if (m_insertedpre) { - EDT_PasteQuote(m_context, "</PRE></BLOCKQUOTE>"); - } - if ( 0 == m_replyOnTop && m_replyWithExtraLines) - for (;m_replyWithExtraLines > 0; m_replyWithExtraLines--) - EDT_PasteQuote(m_context, "<BR>"); - EDT_PasteQuoteEnd(m_context); - - MSG_CompositionPane *cpane = (MSG_CompositionPane *) - MSG_FindPane(m_context, MSG_COMPOSITIONPANE); - if (cpane) - cpane->SetLineWidth(m_maxLineWidth); - } - delete this; - return 0; - } -} - - -int32 -QuotePlainIntoHTML::QuoteLine_s(char* line, uint32 length, void* closure) -{ - return ((QuotePlainIntoHTML*)closure)->QuoteLine(line, length); -} - -int32 -QuotePlainIntoHTML::QuoteLine(char* line, uint32 length) -{ - if (length > m_maxLineWidth) - m_maxLineWidth = length; - - if (length >= 2 && line[0] == '>' && line[1] == ' ') { - line += 2; - length -= 2; - if (!m_insertedpre) { - EDT_PasteQuote(m_context, "<BLOCKQUOTE TYPE=CITE><PRE NSCISAW>"); - m_insertedpre = TRUE; - } - } - else if (!m_insertedpre) { - if (1 == m_replyOnTop && m_replyWithExtraLines) - for (; m_replyWithExtraLines > 0; m_replyWithExtraLines--) - EDT_PasteQuote(m_context, "<BR>"); - } - - int l = length * 2 + 50; - if (l > m_outbufsize) { - if (l < 512) l = 512; - m_outbufsize = l; - delete [] m_outbuf; - m_outbuf = new char [m_outbufsize]; - } - if (m_outbuf) { - *m_outbuf = '\0'; - NET_ScanForURLs(NULL, line, length, m_outbuf, m_outbufsize, TRUE); - EDT_PasteQuote(m_context, m_outbuf); - } - return 0; -} - - -void -MSG_CompositionPane::QuoteHTMLDone_S(URL_Struct* url, int /*status*/, MWContext* /*context*/) -{ - MSG_CompositionPane *pane = (MSG_CompositionPane *) url->fe_data; - if (pane) { - FREEIF(pane->m_quoteUrl); - pane->m_quotefunc = NULL; - if (pane->m_quoteclosure) { - delete pane->m_quoteclosure; - pane->m_quoteclosure = NULL; - } - } - NET_FreeURLStruct(url); -} - - - -MsgERR MSG_CompositionPane::QuoteMessage(int (*func)(void* closure, - const char* data), - void* closure) -{ - MsgERR status = 0; - char* ptr; - m_haveQuoted = TRUE; - if (!m_defaultUrl) return 0; /* Nothing to quote. */ - if (m_quoteUrl) return 0; /* Currently already quoting! */ - - XP_ASSERT(m_quotefunc == NULL); - - if (m_markup) { - func = MyQuoteFunc; - closure = new QuotePlainIntoHTML(GetContext()); - if (!closure) return MK_OUT_OF_MEMORY; - } - - const char* htmlpart = m_fields->GetHTMLPart(); - XP_Bool quotehtml = (m_markup && htmlpart != NULL && *htmlpart != '\0'); - - if (m_quotedText) { - if (func) { -#ifdef EXTRA_QUOTE_BEGIN - if (m_markup) { - if (EDT_PasteQuoteBegin(GetContext(), - TRUE) != EDT_COP_OK) { - return eUNKNOWN; - } - } -#endif - (*func)(closure, m_quotedText); - (*func)(closure, NULL); - } - return 0; - } - - - m_quotefunc = func; - m_quoteclosure = closure; - - - m_quoteUrl = XP_STRDUP(m_defaultUrl); - if (!m_quoteUrl) return eOUT_OF_MEMORY; - - /* remove any position information from the url - */ - ptr = XP_STRCHR(m_quoteUrl, '#'); - if (ptr) *ptr = '\0'; - - if (quotehtml) { - URL_Struct* url = NET_CreateURLStruct(m_quoteUrl, NET_DONT_RELOAD); - if (!url) return MK_OUT_OF_MEMORY; - - // This is a hack, really should be url->msg_pane, but this prevents mail - // quoting from working at all. We just need SOME sort of way to give - // the msg_page to the completion function. - url->fe_data = (void *)this; - - // Set this because when quoting messages that might have been - // downloaded through IMAP MIME Parts on Demand (with some parts left out) - // we think it is OK to only quote the inline parts that have been - // downloaded. - // (That is, we don't think it's necessary to re-download the entire message - // from the server. We might be wrong about this, but so far haven't seen - // any examples to the contrary.) - url->allow_content_change = TRUE; - MSG_UrlQueue::AddUrlToPane (url, QuoteHTMLDone_S, this, TRUE, FO_QUOTE_HTML_MESSAGE); - return 0; - } - - - XL_InitializeTextSetup(m_print); - m_print->out = NULL; - m_print->prefix = "> "; - if (m_markup) { - if (htmlpart && *htmlpart) { - // Quoting html into html - // We are kind of doomed on this case when force sending plain text - // if there are hard line breaks. - m_print->width = 999; - } - else { - // Quoting plain text into html; there are hard line breaks - // We should not reformat the line when force sending plain text - // message - // This is done via recording the max line width when we quote each plain - // text line and then use the max line width if it is greater than default - // wraplinewidth. This prevent from reformatting the qutoed line in an - // unwanted fashion. - m_print->width = 998; - } - - // m_print->width = 999; // Cheap hack. The EDT_PasteQuote routine - // generates HTML that is better at wrapping - // than the TextFE is, so try and let it do the - // wrapping instead. - } - else { - if (htmlpart && *htmlpart) { - // We are quoting html message into plain text message - // Use wrapline width from preference - int32 width = 72; - PREF_GetIntPref("mailnews.wraplength", &width); - if (width == 0) width = 72; - else if (width < 10) width = 10; - else if (width > 30000) width = 30000; - m_print->width = width - 2; - } - else { - // We are quoting plain text message.to plain text - // We shouldn't reformat the original message since everyline already - // has hard line break <CR><LF> we simply set the m_print->width to 999. - m_print->width = 997; - } - // m_print->width = 70; // The default window is 72 wide; subtract 2 for "> ". - } - m_print->carg = this; - m_print->url = NET_CreateURLStruct(m_defaultUrl, NET_DONT_RELOAD); - if (!m_print->url) { - status = eOUT_OF_MEMORY; - goto FAIL; - } - HG98265 - m_print->url->position_tag = 0; - m_print->completion = MSG_CompositionPane::GetUrlDone_S; - m_print->filename = WH_TempName(xpTemporary, "ns"); - if (!m_print->filename) { - status = eOUT_OF_MEMORY; - goto FAIL; - } - m_print->out = XP_FileOpen(m_print->filename, xpTemporary, XP_FILE_WRITE); - if (!m_print->out) { - status = 9999; /* ###tw Need the right error code! */ - goto FAIL; - } - m_print->cx = m_context; - m_exitQuoting = NULL; - m_dummyUrl = NET_CreateURLStruct("about:", NET_DONT_RELOAD); - m_dummyUrl->internal_url = TRUE; - if (m_dummyUrl) { - FE_SetWindowLoading(m_context, m_dummyUrl, &m_exitQuoting); - XP_ASSERT(m_exitQuoting != NULL); - } - - /* Start the URL loading... (msg_get_url_done gets called later.) */ - - - m_textContext = (MWContext*) XL_TranslateText(m_context, m_print->url, - m_print); - // ###tw I'm not at all sure this cast is the - // right thing to do here... - - return 0; -FAIL: - FREEIF(m_print->filename); - FREEIF(m_quoteUrl); - if (m_print->out) { - XP_FileClose(m_print->out); - m_print->out = NULL; - } - if (m_print->url) { - NET_FreeURLStruct(m_print->url); - m_print->url = NULL; - } - return status; -} - - -int -MSG_CompositionPane::PastePlaintextQuotation(const char* str) -{ - if (str && *str) { - if (EDT_PasteQuoteBegin(m_context, TRUE) != EDT_COP_OK) { - return -1; - } - EDT_PasteQuote(m_context, "<BLOCKQUOTE TYPE=CITE><PRE>"); - EDT_PasteQuote(m_context, (char*) str); - EDT_PasteQuote(m_context, "</PRE></BLOCKQUOTE>"); - EDT_PasteQuoteEnd(m_context); - } - return 0; -} - - - -int -MSG_CompositionPane::SetAttachmentList(struct MSG_AttachmentData* list) -{ - int count = 0; - MSG_AttachmentData *tmp; - MSG_AttachmentData *tmp2; - int status = 0; - - ClearCompositionMessageID(); /* Since the attachment list has changed, - the message has changed, so make sure - we're using a fresh message-id when we - try to send it. */ - - msg_free_attachment_list(m_attachData); - m_attachData = NULL; - - for (tmp = list; tmp && tmp->url; tmp++) count++; - - if (count > 0) { - m_attachData = (MSG_AttachmentData*) - XP_ALLOC((count + 1) * sizeof(MSG_AttachmentData)); - if (!m_attachData) { - FE_Alert(m_context, XP_GetString(MK_OUT_OF_MEMORY)); - return MK_OUT_OF_MEMORY; - } - - XP_MEMSET(m_attachData, 0, (count + 1) * sizeof(MSG_AttachmentData)); - } - - if (count > 0) { - for (tmp = list, tmp2 = m_attachData; tmp->url; tmp++, tmp2++) { - tmp2->url = XP_STRDUP(tmp->url); - if (tmp->desired_type) { - tmp2->desired_type = XP_STRDUP(tmp->desired_type); - } - if (tmp->real_type) { - tmp2->real_type = XP_STRDUP(tmp->real_type); - } - if (tmp->real_encoding) { - tmp2->real_encoding = XP_STRDUP(tmp->real_encoding); - } - if (tmp->real_name) { - tmp2->real_name = XP_STRDUP(tmp->real_name); - } - if (tmp->description) { - tmp2->description = XP_STRDUP(tmp->description); - } - if (tmp->x_mac_type) { - tmp2->x_mac_type = XP_STRDUP(tmp->x_mac_type); - } - if (tmp->x_mac_creator) { - tmp2->x_mac_creator = XP_STRDUP(tmp->x_mac_creator); - } - } - } - status = DownloadAttachments(); - return status; -} - - -const struct MSG_AttachmentData * -MSG_CompositionPane::GetAttachmentList() -{ - if (m_attachData && m_attachData[0].url != NULL) return m_attachData; - return NULL; -} - - -static void -msg_free_attachment_list(struct MSG_AttachmentData *list) -{ - MSG_AttachmentData* tmp; - if (!list) return; - for (tmp = list ; tmp->url ; tmp++) { - XP_FREE((char*) tmp->url); - if (tmp->desired_type) XP_FREE((char*) tmp->desired_type); - if (tmp->real_type) XP_FREE((char*) tmp->real_type); - if (tmp->real_encoding) XP_FREE((char*) tmp->real_encoding); - if (tmp->real_name) XP_FREE((char*) tmp->real_name); - if (tmp->description) XP_FREE((char*) tmp->description); - if (tmp->x_mac_type) XP_FREE((char*) tmp->x_mac_type); - if (tmp->x_mac_creator) XP_FREE((char*) tmp->x_mac_creator); - } - XP_FREEIF(list); -} - - - -/* Whether the given saved-attachment-file thing is a match for the given - URL (in source and type-conversion.) - */ -static XP_Bool -msg_attachments_match (MSG_AttachmentData *attachment, - MSG_AttachedFile *file) -{ - const char *dt; - XP_ASSERT(attachment && file); - if (!attachment || !file) return FALSE; - XP_ASSERT(attachment->url && file->orig_url); - if (!attachment->url || !file->orig_url) return FALSE; - - XP_ASSERT(file->type); - if (!file->type) return FALSE; - XP_ASSERT(file->file_name); - if (XP_STRCMP(attachment->url, file->orig_url)) return FALSE; - - /* If the attachment has a conversion type specified (and it's not the - "no conversion" type) then this is only a match if the saved document - ended up with that type as well. - */ - dt = ((attachment->desired_type && *attachment->desired_type) - ? attachment->desired_type - : 0); - if (dt && !strcasecomp(dt, TEXT_HTML)) - dt = 0; - - /* dt only has a value if it's "not `As Is', ie, text/plain or app/ps. */ - if (dt && XP_STRCMP(dt, file->type)) - return FALSE; - - return TRUE; -} - - -int -MSG_CompositionPane::DownloadAttachments() -{ - int returnValue = 0; -#ifdef XP_UNIX - int attachment_count = 0; - int new_download_count = 0; - int download_overlap_count = 0; - MSG_AttachmentData *tmp; - MSG_AttachmentData *downloads = 0; - MSG_AttachedFile *tmp2; - - // *** Relax the rule a little bit to enable resume downloading at - // *** send time. - // XP_ASSERT(!m_deliveryInProgress); - - // Make sure we do not have an attachement already pending. If we do, - // then we do not want to interrupt it. The new attachement will be picked up - // when we go to send the message. - - if (m_attachmentInProgress) - return MK_INTERRUPTED; // this status value is ignored by the caller - - m_pendingAttachmentsCount = 0; // reset m_pendingAttachmentsCount - // in case the attachmentlist has been - // cleared - - if (m_attachData) - for (tmp = m_attachData; tmp->url; tmp++) - attachment_count++; - - /* First, go through the list of desired attachments, and the list of - currently-saved attachments, and delete the files (and data) of the - ones which were attached/saved but are no longer. - */ - tmp2 = m_attachedFiles; - while (tmp2 && tmp2->orig_url) { - XP_Bool match = FALSE; - for (tmp = m_attachData; tmp && tmp->url; tmp++) { - if (msg_attachments_match(tmp, tmp2)) { - match = TRUE; - break; - } - } - if (match) { - tmp2++; - download_overlap_count++; - } else { - /* Delete the file, free the strings, and pull the other entries - forward to cover this one. */ - int i = 0; - - if (tmp2->file_name) { - XP_FileRemove(tmp2->file_name, xpFileToPost); - XP_FREE(tmp2->file_name); - } - FREEIF(tmp2->orig_url); - FREEIF(tmp2->type); - FREEIF(tmp2->encoding); - FREEIF(tmp2->description); - FREEIF(tmp2->x_mac_type); - FREEIF(tmp2->x_mac_creator); - FREEIF(tmp2->real_name); - - do { - tmp2[i]=tmp2[i+1]; - } while (tmp2[i++].orig_url); - } - } - - /* Now download any new files that are in the list. - */ - if (download_overlap_count != attachment_count) { - MSG_AttachmentData *dfp; - new_download_count = attachment_count - download_overlap_count; - m_pendingAttachmentsCount = new_download_count; - downloads = (MSG_AttachmentData *) - XP_ALLOC(sizeof(MSG_AttachmentData) * (new_download_count + 1)); - if (!downloads) { - FE_Alert(m_context, XP_GetString(MK_OUT_OF_MEMORY)); - return MK_OUT_OF_MEMORY; - } - XP_MEMSET(downloads, 0, sizeof(*downloads) * (new_download_count + 1)); - - dfp = downloads; - for (tmp = m_attachData; tmp && tmp->url; tmp++) { - XP_Bool match = FALSE; - if (m_attachedFiles) - for (tmp2 = m_attachedFiles; tmp2->orig_url; tmp2++) { - if (msg_attachments_match(tmp, tmp2)) { - match = TRUE; - break; - } - } - if (!match) { - *dfp = *tmp; - dfp++; - } - } - if (!downloads[0].url) return 0; - // *** Relax the rule a little bit to enable resume downloading at - // *** send time. - // XP_ASSERT(!m_deliveryInProgress); - XP_ASSERT(!m_attachmentInProgress); - m_attachmentInProgress = TRUE; - FE_UpdateCompToolbar (this); - returnValue = msg_DownloadAttachments(this, this, downloads, -#ifdef XP_OS2 - (void (_Optlink*) (MWContext*,void*,int,const char*,MSG_AttachedFile*)) -#endif - MSG_CompositionPane::DownloadAttachmentsDone_S); - XP_FREE(downloads); - } -#endif //XP_UNIX - return returnValue; -} - -void -MSG_CompositionPane::DownloadAttachmentsDone_S(MWContext *context, - void *fe_data, - int status, - const char *error_message, - struct MSG_AttachedFile *attachments) -{ - ((MSG_CompositionPane*) fe_data)->DownloadAttachmentsDone(context, status, - error_message, - attachments); -} - -void -MSG_CompositionPane::DownloadAttachmentsDone(MWContext* context, int status, - const char* error_message, - struct MSG_AttachedFile *attachments) -{ -#ifdef XP_UNIX - XP_ASSERT(context == m_context); - - int old_count = 0; - int new_count = 0; - struct MSG_AttachedFile *tmp; - MSG_AttachedFile *newd; - - // *** Relax the rule a little bit to enable resume downloading at - // *** send time. - // XP_ASSERT(!m_deliveryInProgress); - if (m_attachmentInProgress) { - m_attachmentInProgress = FALSE; - FE_UpdateCompToolbar (this); - } - - if (status < 0) goto FAIL; - - status = MK_INTERRUPTED; - if (!m_attachData) goto FAIL; - - HG98229 - if (m_attachedFiles) { - for (tmp = m_attachedFiles; tmp->orig_url; tmp++) old_count++; - } - if (attachments) { - for (tmp = attachments; tmp->orig_url; tmp++) new_count++; - } - - if (old_count + new_count == 0) goto FAIL; - newd = (MSG_AttachedFile *) - XP_REALLOC(m_attachedFiles, - ((old_count + new_count + 1) - * sizeof(MSG_AttachedFile))); - - if (!newd) { - status = MK_OUT_OF_MEMORY; - error_message = XP_GetString(status); - goto FAIL; - } - m_attachedFiles = newd; - XP_MEMCPY(newd + old_count, - attachments, - sizeof(MSG_AttachedFile) * (new_count + 1)); - - XP_ASSERT (m_pendingAttachmentsCount >= new_count); - m_pendingAttachmentsCount -= new_count; - if (m_deliveryInProgress) { - m_deliveryInProgress = FALSE; - DoneComposeMessage(m_deliver_mode); - } - return; - -FAIL: - XP_ASSERT(status < 0); - if (error_message) { - FE_Alert(context, error_message); - } - else if (status != MK_INTERRUPTED) { - char *errmsg; - errmsg = PR_smprintf(XP_GetString(MK_COMMUNICATIONS_ERROR), status); - if (errmsg) { - FE_Alert(context, errmsg); - XP_FREE(errmsg); - } - } - - /* Since we weren't able to store it, ditch the files and the strings - describing them. */ - msg_delete_attached_files(attachments); -#endif //XP_UNIX -} - - -/* How many implementations of this are there now? 4? */ -static void -msg_mid_truncate_string (const char *input, char *output, int max_length) -{ - int L = XP_STRLEN(input); - if (L <= max_length) { - XP_MEMCPY(output, input, L+1); - } else { - int mid = (max_length - 3) / 2; - char *tmp = 0; - if (input == output) { - tmp = output; - output = (char *) XP_ALLOC(max_length + 1); - *tmp = 0; - if (!output) return; - } - XP_MEMCPY(output, input, mid); - XP_MEMCPY(output + mid, "...", 3); - XP_MEMCPY(output + mid + 3, input + L - mid, mid + 1); - - if (tmp) { - XP_MEMCPY(tmp, output, max_length + 1); - XP_FREE(output); - } - } -} - - -char * -MSG_CompositionPane::GetAttachmentString() -{ - /* #### bug 8688 */ - - MSG_AttachmentData *tmp; - int count; - int chars_per_attachment; - int default_field_width = 63; /* 72 - some space for the word - "Attachment" */ - - count = 0; - for (tmp = m_attachData; tmp && tmp->url ; tmp++) count++; - if (count <= 0) return 0; - - chars_per_attachment = (default_field_width - (count * 2)) / count; - if (chars_per_attachment < 15) chars_per_attachment = 15; - - FREEIF(m_attachmentString); - - m_attachmentString = - (char *) XP_ALLOC(count * (chars_per_attachment + 3) + 20); - if (!m_attachmentString) return 0; - *m_attachmentString = 0; - - for (tmp = m_attachData ; tmp && tmp->url ; tmp++) { - const char *url = tmp->real_name ? tmp->real_name : tmp->url; - const char *ptr = XP_STRCHR(url, ':'); - char *result = 0; - - if (!ptr) { - /* No colon? Must be a file name. */ - ptr = url; - goto DO_FILE; - } - - if (!XP_STRNCMP(url, "news:", 5) || - !XP_STRNCMP(url, "snews:", 6) || - !XP_STRNCMP(url, "IMAP:", 5) || - !XP_STRNCMP(url, "mailbox:", 8)) { - /* ###tw Unfortunately, I don't think this stuff quite ports - directly to the new world, so I'm gonna disable it for now... */ - - goto DONE; - } - - /* Ok, so it must be something vaguely file-name-like. - Look for a slash. - */ - DO_FILE: - { - char *ptr2 = XP_STRDUP(ptr); - if (!ptr2) goto DONE; - char* s = XP_STRCHR(ptr2, '?'); - if (s) *s = 0; - s = XP_STRCHR(ptr2, '#'); - if (s) *s = 0; - s = XP_STRRCHR(ptr2, '/'); - if(!s) { - XP_FREE(ptr2); - goto DONE; - } - s++; - if (!*s || !strcasecomp(s,"index.html") || - !strcasecomp(s,"index.htm")) { - /* This had a useless file name; take the last directory name. */ - char *s2 = s-1; - if (*s2 == '/') s2--; - while (s2 > ptr2 && *s2 != '/') s2--; - if (*s2 == ':' || *s2 == '/') s2++; - result = (char *) XP_ALLOC (s - s2 + 1); - XP_MEMCPY (result, s2, s - s2); - result[s - s2] = 0; - } else { - /* The file name is ok; use it. */ - result = XP_STRDUP (s); - } - NET_UnEscape (result); - XP_FREE(ptr2); - goto DONE; - } - - DONE: - if (tmp != m_attachData) { - XP_STRCAT(m_attachmentString, "; "); - } - - if (!result) { - if (!XP_STRNCMP(url, "news:", 5) || - !XP_STRNCMP(url, "snews:", 6) || - !XP_STRNCMP(url, "IMAP:", 5) || - !XP_STRNCMP(url, "mailbox:", 8)) { - result = XP_STRDUP("<message>"); - } else { - result = XP_STRDUP(url); - } - if (!result) break; - } - - msg_mid_truncate_string(result, - (m_attachmentString + - XP_STRLEN(m_attachmentString)), - chars_per_attachment); - XP_FREE(result); - } - - return m_attachmentString; -} - - -char* -MSG_CompositionPane::UpdateHeaderContents(MSG_HEADER_SET which_header, - const char* ) -{ - switch (which_header) { - case MSG_TO_HEADER_MASK: - case MSG_CC_HEADER_MASK: - case MSG_BCC_HEADER_MASK: - case MSG_REPLY_TO_HEADER_MASK: - break; - } - return NULL; -} - -int -MSG_CompositionPane::SetCompHeader(MSG_HEADER_SET header, - const char *value) -{ - XP_ASSERT(header != MSG_ATTACHMENTS_HEADER_MASK); - ClearCompositionMessageID(); - m_fields->SetHeader(header, value); - return 0; -} - -const char* -MSG_CompositionPane::GetCompHeader(MSG_HEADER_SET header) -{ - if (header == MSG_ATTACHMENTS_HEADER_MASK) { - return GetAttachmentString(); - } else { - return m_fields ? m_fields->GetHeader(header) : (char *)NULL; - } -} - -int -MSG_CompositionPane::SetCompBoolHeader(MSG_BOOL_HEADER_SET header, - XP_Bool bValue) -{ - return m_fields->SetBoolHeader(header, bValue); -} - -XP_Bool -MSG_CompositionPane::GetCompBoolHeader(MSG_BOOL_HEADER_SET header) -{ - return m_fields ? m_fields->GetBoolHeader(header) : FALSE; -} - -const char* -MSG_CompositionPane::GetCompBody() -{ - return m_fields ? m_fields->GetBody() : (char *)NULL; -} - -int -MSG_CompositionPane::SetCompBody(const char* value) -{ - return m_fields->SetBody(value); -} - -const char* -MSG_CompositionPane::GetWindowTitle() -{ - const char *s; - - if (*m_fields->GetSubject()) { - s = m_fields->GetSubject(); - } else if (*m_fields->GetTo()) { - s = m_fields->GetTo(); - } else if (*m_fields->GetNewsgroups()) { - s = m_fields->GetNewsgroups(); - } else { - s = XP_GetString(MK_MSG_MSG_COMPOSITION); - } - return s; -} - - - -int -MSG_CompositionPane::SanityCheck(int skippast) -{ - const char* body = m_fields->GetBody(); - const char* sub = m_fields->GetSubject(); - - - if (skippast == MK_MSG_DOUBLE_INCLUDE) goto AFTER_DOUBLE_INCLUDE; - if (skippast == MK_MSG_EMPTY_MESSAGE) goto AFTER_EMPTY_MESSAGE; - if (skippast == MK_MSG_MISSING_SUBJECT) goto AFTER_MISSING_SUBJECT; - - // Check if they have quoted a document and not edited it, and also - // attached the same document. - if (m_quotedText && - XP_STRNCMP(body, m_quotedText, XP_STRLEN(m_quotedText)) == 0 && - m_attachData && - m_attachData[0].url && - m_defaultUrl && - !XP_STRCMP (m_attachData[0].url, m_defaultUrl)) { - return MK_MSG_DOUBLE_INCLUDE; - } - -AFTER_DOUBLE_INCLUDE: - // Check if this message has no attachments, and the body has not been - // edited. - if (XP_STRCMP(body, m_initfields->GetBody()) == 0 && - (!m_attachData || !m_attachData[0].url)) { - return MK_MSG_EMPTY_MESSAGE; - } - -AFTER_EMPTY_MESSAGE: - // Check if they neglected to type a subject. - if (sub) { - while (XP_IS_SPACE(*sub)) sub++; - } - if (!sub || !*sub) { - return MK_MSG_MISSING_SUBJECT; - } - -AFTER_MISSING_SUBJECT: - return 0; - -} - - -void -MSG_CompositionPane::DeliveryDoneCB_s(MWContext *context, void *fe_data, - int status, const char *error_message) -{ - ((MSG_CompositionPane*) fe_data)->DeliveryDoneCB(context, status, - error_message); -} - -void -MSG_CompositionPane::DeliveryDoneCB(MWContext* context, int status, - const char* error_message) -{ - XP_ASSERT(context == m_context); - - // *** We don't want to set m_status to status. The default value - // of m_status (-1) prevents the composition pane from closing down - // once we done with saving draft. The composition pane should remain up. - if ((m_deliver_mode != MSG_SaveAsDraft && m_deliver_mode != MSG_SaveAsTemplate) - || (m_deliver_mode == MSG_SaveAsDraft && m_closeAfterSave)) - m_status = status; - - XP_ASSERT(!m_attachmentInProgress); - if (m_deliveryInProgress) { - m_deliveryInProgress = FALSE; - -#if 0 -//#ifndef XP_UNIX /* Does not need this function call for UNIX. - This will prevent toolbar to be enabled after msg sent on - UNIX. */ - FE_UpdateCompToolbar (this); -#endif - } - - if (status < 0) { - if (error_message) { - FE_Alert(context, error_message); - } else if (status != MK_INTERRUPTED) { - char *errmsg; - - HG92755 - errmsg = PR_smprintf(XP_GetString(MK_COMMUNICATIONS_ERROR), - status); - if (errmsg) { - FE_Alert(context, errmsg); - XP_FREE(errmsg); - } - } - } else { - /* ### jht bug 45220 -- do following only when successfully deliver the message */ - /* time to delete message from draft/outbox */ - } -} - -void -MSG_CompositionPane::MailCompositionAllConnectionsComplete () -{ -#ifdef XP_UNIX - /* This may be redundant, I'm not sure... */ - if (m_deliveryInProgress) { - m_deliveryInProgress = FALSE; - FE_UpdateCompToolbar(this); - } - if (m_attachmentInProgress) { - m_attachmentInProgress = FALSE; - FE_UpdateCompToolbar(this); - } - - if (m_status >= 0) { - delete this; - } -#endif //XP_UNIX -} - - -XP_Bool -MSG_CompositionPane::DeliveryInProgress () -{ - /* Disable the UI if delivery, attachment loading, or quoting is in - progress. */ - return m_deliveryInProgress || m_attachmentInProgress || (m_quoteUrl != 0); -} - -/* This function sets the markup flag to indicate that the message - body is HTML. Returns the previously set value. -*/ - -void -MSG_CompositionPane::SetHTMLMarkup(XP_Bool flag) -{ - m_markup = flag; -} - -XP_Bool -MSG_CompositionPane::GetHTMLMarkup(void) -{ - return m_markup; -} - -int -MSG_CompositionPane::DoneComposeMessage( MSG_Deliver_Mode deliver_mode ) -{ - int status = 0; -#ifdef XP_UNIX - int attachment_count = 0; - XP_Bool digest_p = FALSE; - - if (m_pendingAttachmentsCount) { - m_deliveryInProgress = TRUE; // so that DoneComposeMessage is called again - status = DownloadAttachments(); - return status; - } - - HG92762 - - if (m_markup && (deliver_mode != MSG_SaveAsDraft && - deliver_mode != MSG_SaveAsTemplate)) { - MSG_HTMLComposeAction action = DetermineHTMLAction(); - if (action == MSG_HTMLAskUser) - { - status = -1; -#ifndef XP_UNIX // Unix will have to make this dialog a blocking dialog for this logic to work - if (m_callbacks.CreateAskHTMLDialog) { - status = (*m_callbacks.CreateAskHTMLDialog)(this, m_callbackclosure); - // if status == 0, then user wants to Send, so we continue - // if status < 0, do the HTML dialogs - // if status > 0, cancel - if (status == 0) { - action = DetermineHTMLAction(); // reget the new action - XP_ASSERT(action != MSG_HTMLAskUser); - if (action == MSG_HTMLAskUser) { - // Boy, the FE is busted. Use our own. - status = -1; - } - } - if (status > 0) return 0; // we have to return 0, even in the cancel case so that an error won't get displayed - } -#endif - // if status still negative, do the HTML thing - if (status < 0) { - static XPDialogInfo dialogInfo = { - 0, // I'll provide all my own buttons, thanks. -#ifdef XP_OS2 - (PRBool (_Optlink*) (XPDialogState*,char**,int,unsigned int)) -#endif - MSG_CompositionPane::AskDialogDone_s, - 500, - 300 - }; - XPDialogStrings* strings = - XP_GetDialogStrings(MK_MSG_ASK_HTML_MAIL); - if (!strings) return MK_OUT_OF_MEMORY; - XP_MakeHTMLDialog(GetContext(), &dialogInfo, - MK_MSG_ASK_HTML_MAIL_TITLE, strings, this, PR_FALSE); - return 0; - } - - } - - switch (action) { - case MSG_HTMLUseMultipartAlternative: - m_fields->SetUseMultipartAlternative(TRUE); - break; - case MSG_HTMLConvertToPlaintext: - m_fields->SetForcePlainText(TRUE); - break; - case MSG_HTMLSendAsHTML: - break; - default: - XP_ASSERT(0); - return -1; - } - } - - const char* body = m_fields->GetBody(); - uint32 body_length = XP_STRLEN(body); - - - for (attachment_count = 0; - m_attachData && m_attachData[attachment_count].url; - attachment_count++) - ; - - if (m_attachData && m_attachData[0].url && m_attachData[1].url ) { - MSG_AttachmentData* s; - digest_p = TRUE; - for (s = m_attachData ; s->url ; s++) { - /* When there are attachments, start out assuming it is a digest, - and then decide that it is not if any of the attached URLs are - not mail or news messages. */ - if (XP_STRNCMP(s->url, "news:", 5) != 0 && - XP_STRNCMP(s->url, "snews:", 6) != 0 && - XP_STRNCMP(s->url, "IMAP:", 5) != 0 && - XP_STRNCMP(s->url, "mailbox:", 8) != 0) { - digest_p = FALSE; - } - } - } - - XP_ASSERT(!m_attachmentInProgress); - XP_ASSERT(!m_deliveryInProgress); - m_deliveryInProgress = TRUE; - FE_UpdateCompToolbar(this); - - if (m_messageId == NULL) { - m_messageId = msg_generate_message_id(); - m_duplicatePost = FALSE; - } else { - m_duplicatePost = TRUE; - } - - m_fields->SetMessageId(m_messageId); - - MSG_MimeRelatedSaver *fs = NULL; - -#ifdef MSG_SEND_MULTIPART_RELATED - if (m_markup) - { - char *pRootPartName = NULL; // set to NULL so that we're given a temp filename - fs = new MSG_MimeRelatedSaver(this, m_context, m_fields, - digest_p, deliver_mode, - body, body_length, - m_attachedFiles, - DeliveryDoneCB_s, - &pRootPartName); - if (fs) - { - EDT_SaveFileTo(m_context, - ((deliver_mode == MSG_SaveAsDraft && !m_closeAfterSave) || - deliver_mode == MSG_SaveAsTemplate) ? - ED_FINISHED_SAVE_DRAFT : ED_FINISHED_MAIL_SEND, - pRootPartName, fs, TRUE, TRUE); - // Note: EDT_SaveFileTo will delete fs, even if it returns an error. So - // it is incorrect to delete it here. Also, we ignore the result, because - // it calls FE_Alert itself. - } - FREEIF(pRootPartName); - } - else - -#endif // MSG_SEND_MULTIPART_RELATED - - { - msg_StartMessageDeliveryWithAttachments(this, this, - m_fields, - digest_p, FALSE, deliver_mode, - (m_markup ? TEXT_HTML : - TEXT_PLAIN), - body, body_length, - m_attachedFiles, - NULL, -#ifdef XP_OS2 - (void (_Optlink*) (MWContext*,void*,int,const char*)) -#endif - DeliveryDoneCB_s); - } -#endif //XP_UNIX - return 0; // Always success, because Errors were reported and handled by EDT_SaveFileTo. -} - -int -MSG_CompositionPane::SendMessageNow() -{ - PREF_SetBoolPref("network.online", TRUE); // make sure we're online. - // remember if we're queued so we know which folder - m_deliver_mode = MSG_DeliverNow; - - HG73943 - // counts we need to update. - return DoneComposeMessage(MSG_DeliverNow); -} - -int -MSG_CompositionPane::QueueMessageForLater() -{ - // remember if we're queued so we know which folder - m_deliver_mode = MSG_QueueForLater; - // counts we need to update. - return DoneComposeMessage(MSG_QueueForLater); -} - -int -MSG_CompositionPane::SaveMessageAsDraft() -{ - - m_deliver_mode = MSG_SaveAsDraft; // remember if we're saved as draft so we know which - // folder counts we need to update. - return DoneComposeMessage(MSG_SaveAsDraft); -} - -int -MSG_CompositionPane::SaveMessageAsTemplate() -{ - m_deliver_mode = MSG_SaveAsTemplate; - -#ifdef SUPPORT_X_TEMPLATE_NAME - char *defaultName = NULL; - - defaultName = FE_Prompt (GetContext(), - XP_GetString(MK_MSG_ENTER_NAME_FOR_TEMPLATE), - m_fields->GetSubject()); - if (defaultName && *defaultName) - { - m_fields->SetTemplateName(defaultName); - XP_FREEIF(defaultName); - } -#endif /* SUPPORT_X_TEMPLATE_NAME */ - - return DoneComposeMessage(MSG_SaveAsTemplate); -} - -static int -StuffParams(char** params, const char* name, int32 value) -{ - char* escaped = NET_EscapeHTML(name); - if (!escaped) return MK_OUT_OF_MEMORY; - char* tmp = PR_smprintf("<OPTION value=%ld>%s\n", (long) value, escaped); - XP_FREE(escaped); - if (!tmp) return MK_OUT_OF_MEMORY; - NET_SACat(params, tmp); - XP_FREE(tmp); - return 0; -} - -//void *pWnd used to pass in pointer to parent window of Recipients dialog -int -MSG_CompositionPane::PutUpRecipientsDialog(void *pWnd ) -{ - int status; - status = MungeThroughRecipients(NULL, NULL); - if (status < 0) return status; - MSG_RecipientList* ok = m_htmlrecip->GetList(TRUE); - MSG_RecipientList* notok = m_htmlrecip->GetList(FALSE); - if (m_callbacks.CreateRecipientsDialog) { - status = (*m_callbacks.CreateRecipientsDialog)(this, m_callbackclosure, - notok, ok, pWnd); - if (status >= 0) return status; - } - static XPDialogInfo dialogInfo = { - 0, // I'll provide all my own buttons, thanks. -#ifdef XP_OS2 - (PRBool (_Optlink*) (XPDialogState*,char**,int,unsigned int)) -#endif - MSG_CompositionPane::RecipientDialogDone_s, - 600, -#ifdef XP_UNIX - 375 -#else - 300 -#endif - }; - XPDialogStrings* strings = - XP_GetDialogStrings(MK_MSG_HTML_RECIPIENTS); - if (!strings) return MK_OUT_OF_MEMORY; - - - XP_CopyDialogString(strings, 0, "\n\ -function Scour(src) {\n\ - for (i=src.options.length-1 ; i>=0 ; i--) {\n\ - if (parseInt(src.options[i].value) >= 0) {\n\ - return;\n\ - }\n\ - src.options[i] = null;\n\ - }\n\ -}\n\ -Scour(document.theform.nohtml);\n\ -Scour(document.theform.html);\n\ -function MoveItems(src, dest) {\n\ - var i, j, k, v, selectindex;\n\ - selectindex = -1;\n\ - for (i=src.options.length-1 ; i>=0 ; i--) {\n\ - if (src.options[i].selected) {\n\ - src.options[i].selected = false;\n\ - v = parseInt(src.options[i].value);\n\ - selectindex = i;\n\ - for (j=dest.options.length-1 ; j>=0 ; j--) {\n\ - if (parseInt(dest.options[j].value) < v) {\n\ - break;\n\ - }\n\ - dest.options[j+1] = new Option(dest.options[j].text,\n\ - dest.options[j].value);\n\ - }\n\ - j++;\n\ - dest.options[j] = new Option(src.options[i].text,\n\ - src.options[i].value);\n\ - for (k=i ; k<src.options.length - 1 ; k++) {\n\ - src.options[k] = new Option(src.options[k+1].text,\n\ - src.options[k+1].value);\n\ - }\n\ - src.options[k] = null;\n\ - }\n\ - }\n\ - if (selectindex >= src.options.length) {\n\ - selectindex = src.options.length - 1;\n\ - }\n\ - if (selectindex >= 0) {\n\ - src.options[selectindex].selected = true;\n\ - }\n\ -}\n\ -\n\ -function DoAdd() {\n\ - MoveItems(document.theform.nohtml, document.theform.html);\n\ -}\n\ -\n\ -function DoRemove() {\n\ - MoveItems(document.theform.html, document.theform.nohtml);\n\ -}\n\ -\n\ -function SelectAllIn(obj, value) {\n\ - for (i=0 ; i<obj.length ; i++) {\n\ - obj[i].selected = value;\n\ - }\n\ -}\n\ -\n\ -function SelectAll() {\n\ - SelectAllIn(document.theform.html, true);\n\ - SelectAllIn(document.theform.nohtml, true);\n\ -}\n\ -function Doit(value) {\n\ - document.theform.cmd.value = value;\n\ - document.theform.submit();\n\ -}\n\ -"); - - for (int w=1 ; w<=2 ; w++) { - MSG_RecipientList* list; - char* params = NULL; - for (list = (w == 1) ? notok : ok; list->value >= 0 ; list++) { - status = StuffParams(&params, list->name, list->value); - if (status < 0) return status; - } - for (list = (w == 1) ? ok : notok; list->value >= 0 ; list++) { - status = StuffParams(&params, list->name, -1); - if (status < 0) return status; - } - XP_CopyDialogString(strings, w, params ? params : ""); - FREEIF(params); - } - - HG72999 - Chrome chrome; - XP_MEMSET(&chrome, 0, sizeof(chrome)); - chrome.type = MWContextDialog; - chrome.w_hint = dialogInfo.width; - chrome.h_hint = dialogInfo.height; - chrome.is_modal = TRUE; - chrome.show_scrollbar = TRUE; - - XP_MakeHTMLDialogWithChrome(GetContext(), &dialogInfo, - MK_MSG_HTML_RECIPIENTS_TITLE, strings, - &chrome, this, PR_FALSE); - return 0; -} - - -XP_Bool -MSG_CompositionPane::IsDuplicatePost() { - return m_duplicatePost; -} - -void -MSG_CompositionPane::ClearCompositionMessageID() -{ - FREEIF(m_messageId); -} - -const char* -MSG_CompositionPane::GetCompositionMessageID() -{ - return m_messageId; -} - - - -int -MSG_CompositionPane::SetPreloadedAttachments ( MWContext *context, - struct MSG_AttachmentData *attachmentData, - struct MSG_AttachedFile *attachments, - int attachments_count ) -{ - XP_ASSERT ( context == m_context ); - XP_ASSERT ( attachments && attachmentData ); - if ( !attachments || !attachmentData ) return -1; - - int status = 0; - const char *error_message = NULL; - - XP_ASSERT ( m_attachData == NULL ); - - m_attachData = (MSG_AttachmentData *) XP_ALLOC ( (attachments_count+1) * - sizeof (MSG_AttachmentData) ); - if ( !m_attachData ) { - FE_Alert ( m_context, XP_GetString ( MK_OUT_OF_MEMORY ) ); - return MK_OUT_OF_MEMORY; - } - - XP_MEMSET (m_attachData, 0, (attachments_count +1) * sizeof (MSG_AttachmentData)); - - XP_MEMCPY ( m_attachData, attachmentData, - sizeof (MSG_AttachmentData) * attachments_count ); - - m_pendingAttachmentsCount = attachments_count; - m_attachmentInProgress = TRUE; - - DownloadAttachmentsDone ( context, status, error_message, attachments ); - - return status; -} - -static MSG_HEADER_SET standard_header_set[] = { - MSG_TO_HEADER_MASK, - MSG_REPLY_TO_HEADER_MASK, - MSG_CC_HEADER_MASK, - MSG_BCC_HEADER_MASK, - MSG_NEWSGROUPS_HEADER_MASK, - MSG_FOLLOWUP_TO_HEADER_MASK - }; - -#define TOTAL_HEADERS (sizeof(standard_header_set)/sizeof(MSG_HEADER_SET)) - -int -MSG_CompositionPane::RetrieveStandardHeaders(MSG_HeaderEntry ** return_list) -{ - int i, total; - const char * field; - MSG_HeaderEntry * list = NULL; - - XP_ASSERT(return_list); - - *return_list = NULL; - - for (i=0, total=0; i<TOTAL_HEADERS; i++) { - MSG_HeaderEntry * entry; - int count; - field = GetCompHeader(standard_header_set[i]); - - count = MSG_ExplodeHeaderField(standard_header_set[i],field,&entry); - if (entry) { - list = (MSG_HeaderEntry*)XP_REALLOC(list,(total+count)*sizeof(MSG_HeaderEntry)); - if (list == NULL) { - XP_FREE(entry); - return(-1); - } - memcpy(&list[total],entry,count*sizeof(MSG_HeaderEntry)); - XP_FREE(entry); - total += count; - } - } - - *return_list = list; - return(total); -} - -void -MSG_CompositionPane::ClearComposeHeaders() -{ - int i; - for (i = 0; i<TOTAL_HEADERS; i++) - SetCompHeader(standard_header_set[i],NULL); -} - -void -MSG_CompositionPane::SetHeaderEntries(MSG_HeaderEntry * in_list, int count) -{ - if ((count != -1)&&(in_list!=NULL)) { - int i; - for (i=0; i<count; i++) { - XP_ASSERT(in_list[i].header_value); - SetCompHeader(in_list[i].header_type,in_list[i].header_value); - XP_FREE(in_list[i].header_value); - } - XP_FREE(in_list); - } -} - - - -PRBool -MSG_CompositionPane::AskDialogDone_s(XPDialogState *state, char **argv, - int argc, unsigned int button) -{ - return ((MSG_CompositionPane*)state->arg)->AskDialogDone(state, argv, - argc, button); -} - - -PRBool -MSG_CompositionPane::AskDialogDone(XPDialogState * /*state*/, char **argv, - int argc, unsigned int /*button*/) -{ - switch (XP_ATOI(XP_FindValueInArgs("cmd", argv, argc))) { - case 0: - switch (XP_ATOI(XP_FindValueInArgs("mail", argv, argc))) { - case 1: - SetHTMLAction(MSG_HTMLUseMultipartAlternative); - break; - case 2: - SetHTMLAction(MSG_HTMLConvertToPlaintext); - break; - case 3: - SetHTMLAction(MSG_HTMLSendAsHTML); - break; - HG98276 - default: - XP_ASSERT(0); - } - DoneComposeMessage(m_deliver_mode); - return PR_FALSE; - case 1: - return PR_FALSE; - case 2: - PutUpRecipientsDialog(); - return PR_TRUE; - case 3: - XP_NetHelp(GetContext(), HELP_HTML_MAIL_QUESTION); - return PR_TRUE; - default: - XP_ASSERT(0); - break; - } - return PR_FALSE; -} - -#ifndef XP_OS2 -static -#else -extern "OPTLINK" -#endif -int DomainCompare(const void* e1, const void* e2) -{ - return XP_STRCMP(*((char**) e1), *((char**) e2)); -} - -int -MSG_CompositionPane::ResultsRecipients(XP_Bool cancelled, int32* nohtml, - int32* htmlok) -{ - int status = 0; - if (cancelled) return 0; - XP_ASSERT(m_htmlrecip); - if (!m_htmlrecip) return -1; - status = m_htmlrecip->SetNewList(nohtml, htmlok); - if (status < 0) return status; - - char** list = NULL; - char** tmp; - char* ptr; - char* endptr = 0; - char* domainlist = NULL; - char** domainstrings = NULL; - XP_Bool changed; - int num = 0; - int max = 0; - int length; - int i, j; - - - PREF_CopyCharPref("mail.htmldomains", &domainlist); - changed = FALSE; - - length = domainlist ? XP_STRLEN(domainlist) : 0; - for (ptr = domainlist ; ptr && *ptr ; ptr = XP_STRCHR(ptr + 1, ',')) { - max++; - } - max += m_htmlrecip->GetNum() + 1; // We be paranoid. - domainstrings = new char* [max]; - if (!domainstrings) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - for (ptr = domainlist ; ptr && *ptr ; ptr = endptr) { - endptr = XP_STRCHR(ptr, ','); - if (endptr) *endptr++ = '\0'; - domainstrings[num++] = ptr; - } - list = m_htmlrecip->GetChangedList(Domain, FALSE); - for (tmp = list ; tmp && *tmp ; tmp++) { - for (i=0 ; i<num ; i++) { - while (i<num && XP_STRCMP(domainstrings[i], *tmp) == 0) { - num--; - domainstrings[i] = domainstrings[num]; - changed = TRUE; - } - } - } - m_htmlrecip->FreeChangedList(list); - list = m_htmlrecip->GetChangedList(Domain, TRUE); - for (tmp = list ; tmp && *tmp ; tmp++) { - domainstrings[num++] = *tmp; - changed = TRUE; - length += XP_STRLEN(*tmp) + 1; - } - if (changed) { - // Now nuke dups. - XP_QSORT(domainstrings, num, sizeof(char*), DomainCompare); - for (i=0 ; i < num-1 ; i++) { - while (i < num-1 && - XP_STRCMP(domainstrings[i], domainstrings[i+1]) == 0) { - num--; - for (j=i+1 ; j<num ; j++) { - domainstrings[j] = domainstrings[j+1]; - } - } - } - ptr = new char [length + 1]; - if (!ptr) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - *ptr = '\0'; - for (i=0 ; i<num ; i++) { - XP_STRCAT(ptr, domainstrings[i]); - if (i < num-1) XP_STRCAT(ptr, ","); - } - PREF_SetCharPref("mail.htmldomains", ptr); - PREF_SavePrefFile(); - delete [] ptr; - ptr = NULL; - } - - FAIL: - m_htmlrecip->FreeChangedList(list); - FREEIF(domainlist); - delete [] domainstrings; - return status; -} - - - - -PRBool -MSG_CompositionPane::RecipientDialogDone_s(XPDialogState *state, char **argv, - int argc, unsigned int button) -{ - return - ((MSG_CompositionPane*)state->arg)->RecipientDialogDone(state, argv, - argc, button); -} - - -static void -Slurp(int32* list, const char* name, char** argv, int argc) -{ - for (; argc > 0 ; argc -= 2 , argv += 2) { - if (XP_STRCMP(name, argv[0]) == 0) { - *list++ = XP_ATOI(argv[1]); - } - } - *list = -1; -} - -PRBool -MSG_CompositionPane::RecipientDialogDone(XPDialogState * /*state*/, - char **argv, - int argc, unsigned int /*button*/) -{ - HG73622 - switch (XP_ATOI(XP_FindValueInArgs("cmd", argv, argc))) { - case 0: { - XP_ASSERT(argc > 0); - if (argc <= 0) return PR_FALSE; - int32* nohtml = new int32 [argc]; - if (!nohtml) return PR_FALSE; - int32* htmlok = new int32 [argc]; - if (!htmlok) { - delete [] nohtml; - return PR_FALSE; - } - Slurp(nohtml, "nohtml", argv, argc); - Slurp(htmlok, "html", argv, argc); - ResultsRecipients(FALSE, nohtml, htmlok); - delete [] nohtml; - delete [] htmlok; - return PR_FALSE; - } - case 1: - ResultsRecipients(TRUE, NULL, NULL); - return PR_FALSE; - case 2: - XP_NetHelp(GetContext(), HELP_HTML_MAIL_QUESTION_RECIPIENT); - return PR_TRUE; - default: - XP_ASSERT(0); - break; - } - return PR_FALSE; -} - - -XP_Bool -MSG_CompositionPane::HasNoMarkup() -{ - - // we want a link with the same text and link to pass - // <A HREF="http://warp/client/dogbert">http://warp/client/dogbert</A> - - XP_ASSERT(m_markup); - if (!m_markup) return TRUE; - const char* body = m_fields->GetBody(); - while (body && *body) { - body = XP_STRCHR(body, '<'); - if (!body) break; - char* endptr = XP_STRCHR(body, '>'); - XP_ASSERT(endptr); - if (!endptr) break; - char c = *++endptr; - *endptr = '\0'; - XP_Bool recognized = FALSE; - char* newEnd = endptr; - - if (XP_STRNCASECMP(body, "<A HREF=", 8) == 0) { - char* pLinkStart = XP_STRCHR(body, '"'); // find the open quote - if (pLinkStart) { - ++pLinkStart; // past the open quote - char* pLinkEnd = XP_STRCHR(pLinkStart, '"');// find the close quote - if (pLinkEnd) { - char c2 = *pLinkEnd; // save this char - *pLinkEnd = '\0'; // terminate the link - - // now pLink points to the URL - // find the text to see if it's the same as the link - char* pTextStart = endptr; - *endptr = c; // restore this char early because it's the lead char of our string - char* pTextEnd = XP_STRCHR(pTextStart, '<'); - if (pTextEnd) { - char c3 = *pTextEnd; - *pTextEnd = '\0'; // terminate the text - recognized = (XP_STRCMP(pLinkStart, pTextStart) == 0); - *pTextEnd = c3; // restore this char - newEnd = pTextEnd + 1; // skip past the opening of the </A> - } - *pLinkEnd = c2; // restore this char - } - } - } else { - recognized = (XP_STRCASECMP(body, "<P>") == 0 || - XP_STRCASECMP(body, "</P>") == 0 || - XP_STRCASECMP(body, "<BR>") == 0 || - XP_STRCASECMP(body, "<DT>") == 0 || - XP_STRCASECMP(body, "</DT>") == 0 || - XP_STRCASECMP(body, "<HTML>") == 0 || - XP_STRCASECMP(body, "</HTML>") == 0 || - XP_STRNCASECMP(body, "<BODY", 5) == 0 || - XP_STRCASECMP(body, "</BODY>") == 0 || - XP_STRCASECMP(body, - "<BLOCKQUOTE TYPE=CITE>") == 0 || - XP_STRCASECMP(body, "</BLOCKQUOTE>") == 0); - } - - *endptr = c; - body = newEnd; - if (!recognized) return FALSE; - } - return TRUE; -} - -int -MSG_CompositionPane::MungeThroughRecipients(XP_Bool* someNonHTML, - XP_Bool* groupNonHTML) -{ - XP_Bool foo; - if (!someNonHTML) someNonHTML = &foo; - if (!groupNonHTML) groupNonHTML = &foo; - *someNonHTML = FALSE; - *groupNonHTML = FALSE; - int status = 0; - char* names = NULL; - char* addresses = NULL; - const char* groups; - char* name = NULL; - char* end; - XP_Bool match = FALSE; - m_host = NULL; // Pure paranoia, in case we some day actually - // have a UI that lets people change this. - - static int32 masks[] = { - MSG_TO_HEADER_MASK, - MSG_CC_HEADER_MASK, - MSG_BCC_HEADER_MASK - }; - char* domainlist = NULL; - - HG02726 - delete m_htmlrecip; - m_htmlrecip = new MSG_HTMLRecipients(); - if (!m_htmlrecip) return MK_OUT_OF_MEMORY; - - for (int i=0 ; i < sizeof(masks) / sizeof(masks[0]) ; i++) { - const char* orig = m_fields->GetHeader(masks[i]); - if (!orig || !*orig) continue; - char* value = NULL; - if (!value) { - value = XP_STRDUP(orig); - if (!value) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - int num = MSG_ParseRFC822Addresses(value, &names, &addresses); - XP_FREE(value); - value = NULL; - char* addr = NULL; - char* name = NULL; - for (int j=0 ; j<num ; j++) { - if (addr) { - addr = addr + XP_STRLEN(addr) + 1; - name = name + XP_STRLEN(name) + 1; - } else { - addr = addresses; - name = names; - } - if (!addr || !*addr) continue; - - // Check for a address book entry for this person. - char* at = XP_STRCHR(addr, '@'); - - char* tmp = MSG_MakeFullAddress(name, addr); - status = m_htmlrecip->AddOne(tmp, addr, Address, match); - if (status < 0) goto FAIL; - XP_FREE(tmp); - tmp = NULL; - - if (!at) { - // ###tw We got to decide what to do in these cases. But - // for now, I'm just gonna ignore them. Which is probably - // exactly the wrong thing. Fortunately, these cases are - // now very rare, as we have code that inserts a default - // domain. - continue; - } - if (!domainlist) { - PREF_CopyCharPref("mail.htmldomains", &domainlist); - } - char* domain = at + 1; - for (;;) { - char* dot = XP_STRCHR(domain, '.'); - if (!dot) break; - int32 domainlength = XP_STRLEN(domain); - char* ptr; - char* endptr = NULL; - XP_Bool found = FALSE; - for (ptr = domainlist ; ptr && *ptr ; ptr = endptr) { - endptr = XP_STRCHR(ptr, ','); - int length; - if (endptr) { - length = endptr - ptr; - endptr++; - } else { - length = XP_STRLEN(ptr); - } - if (length == domainlength) { - if (XP_STRNCASECMP(domain, ptr, length) == 0) { - found = TRUE; - match = TRUE; - break; - } - } - } - char* tmp = PR_smprintf("%s@%s", - XP_GetString(MK_MSG_EVERYONE), - domain); - if (!tmp) return MK_OUT_OF_MEMORY; - status = m_htmlrecip->AddOne(domain, tmp, Domain, found); - XP_FREE(tmp); - if (status < 0) goto FAIL; - domain = dot + 1; - } - if (!match) *someNonHTML = TRUE; - } - } - - groups = m_fields->GetHeader(MSG_NEWSGROUPS_HEADER_MASK); - if (groups && *groups && !m_host) - goto FAIL; - - end = NULL; - for ( ; groups && *groups ; groups = end) { - end = XP_STRCHR(groups, ','); - if (end) *end = '\0'; - name = XP_STRDUP(groups); - if (end) *end++ = ','; - if (!name) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - char* group = XP_StripLine(name); - match = FALSE; /* MAILTO: libmsg had: isHTMLOKGroup() */ - status = m_htmlrecip->AddOne(group, group, Newsgroup, match); - if (status < 0) goto FAIL; - char* tmp = XP_STRDUP(group); - if (!tmp) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - HG02977 - for (;;) { - XP_Bool found = FALSE; /* MAILTO: libmsg had m_host->IsHTMLOKTree */ - char* desc = PR_smprintf("%s.*", tmp); - if (!desc) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - status = m_htmlrecip->AddOne(tmp, desc, GroupHierarchy, found); - XP_FREE(desc); - if (status < 0) { - XP_FREE(tmp); - tmp = NULL; - goto FAIL; - } - if (found) match = TRUE; - char* p = XP_STRRCHR(tmp, '.'); - if (p) *p = '\0'; - else break; - } - XP_FREE(tmp); - tmp = NULL; - if (!match) { - *someNonHTML = TRUE; - *groupNonHTML = TRUE; - } - } - - FAIL: - FREEIF(names); - FREEIF(domainlist); - FREEIF(addresses); - FREEIF(name); - return status; -} - - - -MSG_HTMLComposeAction -MSG_CompositionPane::DetermineHTMLAction() -{ - XP_Bool someNonHTML, groupNonHTML; - int status; - - MSG_HTMLComposeAction result = GetHTMLAction(); - - - if (result == MSG_HTMLAskUser) { - // Well, before we ask, see if we can figure out what to do for - // ourselves. - - status = MungeThroughRecipients(&someNonHTML, &groupNonHTML); - if (status < 0) return MSG_HTMLAskUser; // ### - if (!someNonHTML) return MSG_HTMLSendAsHTML; - if (HasNoMarkup()) { - // No point in sending this message as HTML; send it plain. - return MSG_HTMLConvertToPlaintext; - } - // See if a preference has been set to tell us what to do. Note that - // we do not honor that preference for newsgroups, only for e-mail - // addresses. - if (!groupNonHTML) { - int32 value; - if (PREF_GetIntPref("mail.default_html_action", &value) >= 0) { - switch (value) { - case 1: // Force plaintext. - return MSG_HTMLConvertToPlaintext; - case 2: // Force HTML. - return MSG_HTMLSendAsHTML; - case 3: // Force multipart/alternative. - return MSG_HTMLUseMultipartAlternative; - } - } - } - } - return result; -} - - - -#if !defined(MOZ_MAIL_NEWS) && !defined(SMART_MAIL) -/* This is normally in mkpop3.c, of all the odd places! - But it's required for converting plain to html. - */ -/* Take the given buffer, tweak the newlines at the end if necessary, and - send it off to the given routine. We are guaranteed that the given - buffer has allocated space for at least one more character at the end. */ -static int -msg_convert_and_send_buffer(char* buf, uint32 length, XP_Bool convert_newlines_p, - int32 (*per_line_fn) (char *line, - uint32 line_length, - void *closure), - void *closure) -{ - /* Convert the line terminator to the native form. - */ - char* newline; - - XP_ASSERT(buf && length > 0); - if (!buf || length <= 0) return -1; - newline = buf + length; - XP_ASSERT(newline[-1] == CR || newline[-1] == LF); - if (newline[-1] != CR && newline[-1] != LF) return -1; - - if (!convert_newlines_p) - { - } -#if (LINEBREAK_LEN == 1) - else if ((newline - buf) >= 2 && - newline[-2] == CR && - newline[-1] == LF) - { - /* CRLF -> CR or LF */ - buf [length - 2] = LINEBREAK[0]; - length--; - } - else if (newline > buf + 1 && - newline[-1] != LINEBREAK[0]) - { - /* CR -> LF or LF -> CR */ - buf [length - 1] = LINEBREAK[0]; - } -#else - else if (((newline - buf) >= 2 && newline[-2] != CR) || - ((newline - buf) >= 1 && newline[-1] != LF)) - { - /* LF -> CRLF or CR -> CRLF */ - length++; - buf[length - 2] = LINEBREAK[0]; - buf[length - 1] = LINEBREAK[1]; - } -#endif - - return (*per_line_fn)(buf, length, closure); -} - -int -msg_LineBuffer (const char *net_buffer, int32 net_buffer_size, - char **bufferP, uint32 *buffer_sizeP, uint32 *buffer_fpP, - XP_Bool convert_newlines_p, - int32 (*per_line_fn) (char *line, uint32 line_length, - void *closure), - void *closure) -{ - int status = 0; - if (*buffer_fpP > 0 && *bufferP && (*bufferP)[*buffer_fpP - 1] == CR && - net_buffer_size > 0 && net_buffer[0] != LF) { - /* The last buffer ended with a CR. The new buffer does not start - with a LF. This old buffer should be shipped out and discarded. */ - XP_ASSERT(*buffer_sizeP > *buffer_fpP); - if (*buffer_sizeP <= *buffer_fpP) return -1; - status = msg_convert_and_send_buffer(*bufferP, *buffer_fpP, - convert_newlines_p, - per_line_fn, closure); - if (status < 0) return status; - *buffer_fpP = 0; - } - while (net_buffer_size > 0) - { - const char *net_buffer_end = net_buffer + net_buffer_size; - const char *newline = 0; - const char *s; - - - for (s = net_buffer; s < net_buffer_end; s++) - { - /* Move forward in the buffer until the first newline. - Stop when we see CRLF, CR, or LF, or the end of the buffer. - *But*, if we see a lone CR at the *very end* of the buffer, - treat this as if we had reached the end of the buffer without - seeing a line terminator. This is to catch the case of the - buffers splitting a CRLF pair, as in "FOO\r\nBAR\r" "\nBAZ\r\n". - */ - if (*s == CR || *s == LF) - { - newline = s; - if (newline[0] == CR) - { - if (s == net_buffer_end - 1) - { - /* CR at end - wait for the next character. */ - newline = 0; - break; - } - else if (newline[1] == LF) - /* CRLF seen; swallow both. */ - newline++; - } - newline++; - break; - } - } - - /* Ensure room in the net_buffer and append some or all of the current - chunk of data to it. */ - { - const char *end = (newline ? newline : net_buffer_end); - uint32 desired_size = (end - net_buffer) + (*buffer_fpP) + 1; - - if (desired_size >= (*buffer_sizeP)) - { - status = msg_GrowBuffer (desired_size, sizeof(char), 1024, - bufferP, buffer_sizeP); - if (status < 0) return status; - } - XP_MEMCPY ((*bufferP) + (*buffer_fpP), net_buffer, (end - net_buffer)); - (*buffer_fpP) += (end - net_buffer); - } - - /* Now *bufferP contains either a complete line, or as complete - a line as we have read so far. - - If we have a line, process it, and then remove it from `*bufferP'. - Then go around the loop again, until we drain the incoming data. - */ - if (!newline) - return 0; - - status = msg_convert_and_send_buffer(*bufferP, *buffer_fpP, - convert_newlines_p, - per_line_fn, closure); - if (status < 0) return status; - - net_buffer_size -= (newline - net_buffer); - net_buffer = newline; - (*buffer_fpP) = 0; - } - return 0; -} - -#endif /* ! MOZ_MAIL_NEWS */ - diff --git a/mozilla/lib/mailto/msgcpane.h b/mozilla/lib/mailto/msgcpane.h deleted file mode 100644 index 792354f3e26..00000000000 --- a/mozilla/lib/mailto/msgcpane.h +++ /dev/null @@ -1,275 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgCPane_H_ -#define _MsgCPane_H_ - -#include "rosetta.h" -#include "msg.h" -#include "msgpane.h" -#include "xlate.h" - - -/* The MSG_REPLY_TYPE shares the same space as MSG_CommandType, to avoid - possible weird errors, but is restricted to the `composition' commands - (MSG_ReplyToSender through MSG_ForwardMessage.) - */ -typedef MSG_CommandType MSG_REPLY_TYPE; - - -struct MSG_AttachedFile; -typedef struct PrintSetup_ PrintSetup; -typedef struct _XPDialogState XPDialogState; - -HG82621 -class MSG_NewsHost; -class MSG_HTMLRecipients; - -class MSG_CompositionPane : public MSG_Pane { -public: - - MSG_CompositionPane(MWContext* context, MWContext* old_context, - MSG_Prefs* prefs, MSG_CompositionFields* initfields, - MSG_Master* master); - - // Or, if you prefer, construct using below constructor and be sure to - // soon call the Initialize() method: - - MSG_CompositionPane(MWContext* context, MSG_Prefs* prefs, - MSG_Master* master); - int Initialize(MWContext* old_context, MSG_CompositionFields* initfields); - - virtual ~MSG_CompositionPane(); - - virtual MSG_PaneType GetPaneType(); - - virtual void NotifyPrefsChange(NotifyCode code); - - virtual MsgERR GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, - int32 numindices, - XP_Bool *selectable_p, - MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_string, - XP_Bool * plural_p); - virtual MsgERR DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices); - - const char* GetDefaultURL(); - - - int SetCallbacks(MSG_CompositionPaneCallbacks* callbacks, void* closure); - - MSG_CompositionFields* GetInitialFields(); - - - MSG_HEADER_SET GetInterestingHeaders(); - int SetAttachmentList(struct MSG_AttachmentData*); - char* GetAttachmentString(); - XP_Bool ShouldAutoQuote(); - const char* GetCompHeader(MSG_HEADER_SET); - int SetCompHeader(MSG_HEADER_SET, const char*); - XP_Bool GetCompBoolHeader(MSG_BOOL_HEADER_SET); - int SetCompBoolHeader(MSG_BOOL_HEADER_SET, XP_Bool); - const char* GetCompBody(); - int SetCompBody(const char*); - void ToggleCompositionHeader(uint32 header); - XP_Bool ShowingAllCompositionHeaders(); - XP_Bool ShowingCompositionHeader(uint32 mask); - XP_Bool GetHTMLMarkup(void); - void SetHTMLMarkup(XP_Bool flag); - MsgERR QuoteMessage(int (*func)(void* closure, const char* data), - void* closure); - int PastePlaintextQuotation(const char* str); - const struct MSG_AttachmentData *GetAttachmentList(); - int DownloadAttachments(); - char* UpdateHeaderContents(MSG_HEADER_SET which_header, const char* value); - const char* GetWindowTitle(); - void SetBodyEdited(XP_Bool value); - void MailCompositionAllConnectionsComplete(); - XP_Bool DeliveryInProgress(); - - int SendMessageNow(); - int QueueMessageForLater(); - int SaveMessageAsDraft(); - int SaveMessageAsTemplate(); - - XP_Bool IsDuplicatePost(); - const char* GetCompositionMessageID(); - void ClearCompositionMessageID(); - HG22960 - - int SanityCheck(int skippast); - - /* draft */ - int SetPreloadedAttachments ( MWContext *context, - struct MSG_AttachmentData *attachmentData, - struct MSG_AttachedFile *attachments, - int attachments_count ); - -#ifdef MOZ_MAIL_NEWS - virtual void SetIMAPMessageUID (MessageKey key); -#endif /* MOZ_MAIL_NEWS */ - - int RetrieveStandardHeaders(MSG_HeaderEntry ** return_list); - void SetHeaderEntries(MSG_HeaderEntry * in_list,int count); - void ClearComposeHeaders(); - - - - int SetHTMLAction(MSG_HTMLComposeAction action) { - m_htmlaction = action; - return 0; - } - MSG_HTMLComposeAction GetHTMLAction() {return m_htmlaction;} - - int PutUpRecipientsDialog(void *pWnd = NULL); - - int ResultsRecipients(XP_Bool cancelled, int32* nohtml, int32* htmlok); - - XP_Bool m_confirmed_uuencode_p; // Have we confirmed sending uuencoded data? - - // For qutoing plain text to html then convert back to plain text - void SetLineWidth(int width) { m_lineWidth = width; } - int GetLineWidth() { return m_lineWidth; } - -protected: - static void QuoteHTMLDone_S(URL_Struct* url, - int status, MWContext* context); - - void InitializeHeaders(MWContext* old_context, - MSG_CompositionFields* fields); - - char* FigureBcc(XP_Bool newsBcc); - - static void GetUrlDone_S(PrintSetup*); - void GetUrlDone(PrintSetup*); - - static void DownloadAttachmentsDone_S(MWContext *context, - void *fe_data, - int status, - const char *error_message, - struct MSG_AttachedFile *attachmnts); - - void DownloadAttachmentsDone(MWContext* context, int status, - const char* error_message, - struct MSG_AttachedFile *attachments); - - int DoneComposeMessage(MSG_Deliver_Mode deliver_mode); - - static void DeliveryDoneCB_s(MWContext *context, void *fe_data, int status, - const char *error_message); - void DeliveryDoneCB(MWContext* context, int status, - const char* error_message); - - HG22860 - - XP_Bool HasNoMarkup(); - MSG_HTMLComposeAction DetermineHTMLAction(); - int MungeThroughRecipients(XP_Bool* someNonHTML, XP_Bool* groupNonHTML); - - static PRBool AskDialogDone_s(XPDialogState *state, char **argv, int argc, - unsigned int button); - PRBool AskDialogDone(XPDialogState *state, char **argv, int argc, - unsigned int button); - static PRBool RecipientDialogDone_s(XPDialogState *state, char **argv, - int argc, unsigned int button); - PRBool RecipientDialogDone(XPDialogState *state, char **argv, int argc, - unsigned int button); - - MSG_REPLY_TYPE m_replyType; /* The kind of message composition in - progress (reply, forward, etc.) */ - - XP_Bool m_markup; /* Whether we should generate messages - whose first part is text/html rather - than text/plain. */ - - MSG_AttachmentData *m_attachData; /* null-terminated list of the URLs and - desired types currently scheduled - for attachment. */ - MSG_AttachedFile *m_attachedFiles; /* The attachments which have already - been downloaded, and some info about - them. */ - - char *m_defaultUrl; /* Default URL for attaching, etc. */ - - MSG_CompositionFields* m_initfields; // What all the fields were, - // initially. - MSG_CompositionFields* m_fields; // Current value of all the fields. - - char* m_messageId; // Message-Id to use for composition. - - char* m_attachmentString; // Storage for string to display in UI for - // the list of attachments. - char* m_quotedText; // The results of quoting the original text. - - /* Stuff used while quoting a message. */ - PrintSetup* m_print; - MWContext *m_textContext; - char* m_quoteUrl; - URL_Struct *m_dummyUrl; - Net_GetUrlExitFunc *m_exitQuoting; - int (*m_quotefunc)(void* closure, const char* data); - void* m_quoteclosure; - XP_Bool m_deliveryInProgress; /* True while mail is being sent. */ - XP_Bool m_attachmentInProgress; /* True while attachments being - saved. */ - int m_pendingAttachmentsCount; - - MSG_Deliver_Mode m_deliver_mode; /* MSG_DelverNow, MSG_QueueForLater, - * MSG_SaveAsDraft, MSG_SaveAsTemplate - */ - - - - XP_Bool m_cited; - - XP_Bool m_duplicatePost; /* Whether we seem to be trying for a - second time to post the same message. - (If this is true, then we know to ignore - 435 errors from the newsserver.) */ - HG92827 - - MSG_HTMLComposeAction m_htmlaction; - MSG_HTMLRecipients* m_htmlrecip; - - int m_status; - // I'm sure this isn't what Terry had in mind... // ### dmb - MSG_HEADER_SET m_visible_headers; - - MSG_NewsHost* m_host; // Which newshost we're posting to. This is - // lazily evaluated, so a NULL does necessarily - // mean we have no news host specified. - - XP_Bool m_closeAfterSave; - - XP_Bool m_haveQuoted; - XP_Bool m_haveAttachedVcard; - - MSG_CompositionPaneCallbacks m_callbacks; - void* m_callbackclosure; - int m_lineWidth; // for quoting plain text to html then convert back - // to plain text -}; - - -#endif /* _MsgCPane_H_ */ diff --git a/mozilla/lib/mailto/msgglue.cpp b/mozilla/lib/mailto/msgglue.cpp deleted file mode 100644 index e3e5f85f8a0..00000000000 --- a/mozilla/lib/mailto/msgglue.cpp +++ /dev/null @@ -1,827 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "msgcom.h" -#include "error.h" -#include "client.h" -#include "xpgetstr.h" -#include "msgcpane.h" -#include "msgprefs.h" -#include "msgmast.h" -#include "msgcflds.h" -#include "shist.h" -#include "msgppane.h" -#include "mime.h" -#include "msgbg.h" -#include "prefapi.h" -#include "msgurlq.h" -#include "msgsend.h" -#include "pw_public.h" -#include HG99874 - -extern "C" -{ - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_ID_NOT_IN_FOLDER; - extern int MK_MSG_CANT_OPEN; - extern int MK_MSG_INBOX_L10N_NAME; - extern int MK_MSG_OUTBOX_L10N_NAME; - extern int MK_MSG_OUTBOX_L10N_NAME_OLD; - extern int MK_MSG_TRASH_L10N_NAME; - extern int MK_MSG_DRAFTS_L10N_NAME; - extern int MK_MSG_SENT_L10N_NAME; - extern int MK_MSG_TEMPLATES_L10N_NAME; - extern int XP_MSG_IMAP_ACL_FULL_RIGHTS; - extern int XP_MSG_IMAP_PERSONAL_FOLDER_TYPE_NAME; - extern int XP_MSG_IMAP_PERSONAL_FOLDER_TYPE_DESCRIPTION; -} - -#ifndef IMAP4_PORT_SSL_DEFAULT -#define IMAP4_PORT_SSL_DEFAULT 993 /* use a separate port for imap4 over ssl */ -#endif - -#if defined(XP_MAC) && defined (__MWERKS__) -#pragma require_prototypes off -#endif - -extern "C" -int ConvertMsgErrToMKErr(uint32 err); // ### Need to get from a header file... - - -inline MSG_CompositionPane* CastCompositionPane(MSG_Pane* pane) { - XP_ASSERT(pane && pane->GetPaneType() == MSG_COMPOSITIONPANE); - return (MSG_CompositionPane*) pane; -} - -extern "C" MSG_Pane* MSG_FindPane(MWContext* context, MSG_PaneType type) { - return MSG_Pane::FindPane(context, type, FALSE); -} - -extern "C" XP_Bool -MSG_RequiresMailWindow (const char *) { return FALSE; } -extern "C" XP_Bool -MSG_RequiresNewsWindow (const char *) { return FALSE; } - -/* If this URL requires a particular kind of window, and this is not - that kind of window, then we need to find or create one. - */ -XP_Bool msg_NewWindowRequired (MWContext *context, const char *url) -{ - if (!context) - return TRUE; - if (context->type == MWContextSearch || context->type == MWContextPrint || context->type == MWContextBiff) - return FALSE; - - /* Search URLs always run in the pane they started in */ - if (!XP_STRNCASECMP(url, "search-libmsg:", 14)) - return FALSE; - - // If we can figure out the content type, and there is no converter, - // return FALSE so we'll run the save as url in our window instead - // of creating an empty browser window. - char *contentType = MimeGetURLContentType(context, url); - if (contentType && !NET_HaveConverterForMimeType(contentType)) - return FALSE; - - /* This is not a browser window, and one is required. */ - if (context->type != MWContextBrowser && context->type != MWContextPane && MSG_RequiresBrowserWindow(url)) - return TRUE; - - return FALSE; /*!msgPane && threadPane; */ // if msgPane is NULL, but we have a thread pane, return FALSE because we have the wrong window. -} - -extern "C" XP_Bool MSG_NewWindowRequiredForURL (MWContext *context, URL_Struct *urlStruct) -{ - if (urlStruct->open_new_window_specified) - return urlStruct->open_new_window; - - if (context->type != MWContextBrowser && !strncasecomp (urlStruct->address, "about:", 6) && !urlStruct->internal_url - && strncasecomp(urlStruct->address, "about:editfilenew", 17)) - return TRUE; - - return msg_NewWindowRequired(context, urlStruct->address); -} - -extern "C" -{ - void MSG_InitMsgLib(void) { } ; -} - -extern "C" MSG_Master* MSG_InitializeMail(MSG_Prefs* prefs) -{ - MSG_Master *master = prefs->GetMasterForBiff(); - if (master) - return (master); // already initialized - - MSG_InitMsgLib(); // make sure db code is initialized - - master = new MSG_Master(prefs); - prefs->SetMasterForBiff(master); - return master; -} - - -extern "C" MSG_Pane* MSG_CreateProgressPane (MWContext *context, - MSG_Master *master, - MSG_Pane *parentPane) -{ - return new MSG_ProgressPane(context, master, parentPane); -} - -extern "C" MSG_Pane* MSG_CreateCompositionPane(MWContext* context, - MWContext* old_context, - MSG_Prefs* prefs, - MSG_CompositionFields* fields, - MSG_Master* master) -{ - return new MSG_CompositionPane(context, old_context, prefs, fields, master); -} - -extern "C" int -MSG_SetCompositionPaneCallbacks(MSG_Pane* composepane, - MSG_CompositionPaneCallbacks* callbacks, - void* closure) -{ - return CastCompositionPane(composepane)->SetCallbacks(callbacks, closure); -} - -extern "C" MSG_Pane* MSG_CreateCompositionPaneNoInit(MWContext* context, - MSG_Prefs* prefs, - MSG_Master* master) -{ - return new MSG_CompositionPane(context, prefs, master); -} - - -extern "C" int MSG_InitializeCompositionPane(MSG_Pane* comppane, - MWContext* old_context, - MSG_CompositionFields* fields) -{ - return CastCompositionPane(comppane)->Initialize(old_context, fields); -} - - -extern "C" void MSG_SetFEData(MSG_Pane* pane, void* data) { - pane->SetFEData(data); -} - -extern "C" void* MSG_GetFEData(MSG_Pane* pane) { - return pane->GetFEData(); -} - -extern "C" MSG_PaneType MSG_GetPaneType(MSG_Pane* pane) { - return pane->GetPaneType(); -} - -extern "C" MWContext* MSG_GetContext(MSG_Pane* pane) { - if (pane) - return pane->GetContext(); - else - return NULL; -} - -extern "C" MSG_Prefs* MSG_GetPrefs(MSG_Pane* pane) { - return pane->GetPrefs(); -} - -extern "C" void MSG_WriteNewProfileAge() { - PREF_SetIntPref("mailnews.profile_age", MSG_IMAP_CURRENT_START_FLAGS); -} - -extern "C" MSG_Prefs* MSG_GetPrefsForMaster(MSG_Master* master) { - return master->GetPrefs(); -} - -extern "C" int MSG_GetURL(MSG_Pane *pane, URL_Struct* url) -{ - XP_ASSERT(pane && url); - if (pane && url) - { - url->msg_pane = pane; - return msg_GetURL(pane->GetContext(), url, FALSE); - } - else - return 0; -} - -extern "C" void MSG_Command(MSG_Pane* pane, MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices) { - int status = - ConvertMsgErrToMKErr(pane->DoCommand(command, indices, numindices)); - if (status < 0) { - char* pString = XP_GetString(status); - if (pString && strlen(pString)) - FE_Alert(pane->GetContext(), pString); - } -} - -extern "C" int MSG_CommandStatus(MSG_Pane* pane, - MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices, - XP_Bool *selectable_p, - MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_string, - XP_Bool *plural_p) { - return ConvertMsgErrToMKErr(pane->GetCommandStatus(command, - indices, numindices, - selectable_p, - selected_p, - display_string, - plural_p)); -} - -extern "C" int MSG_SetToggleStatus(MSG_Pane* pane, MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices, - MSG_COMMAND_CHECK_STATE value) { - return ConvertMsgErrToMKErr(pane->SetToggleStatus(command, - indices, numindices, - value)); -} - - -extern "C" MSG_COMMAND_CHECK_STATE MSG_GetToggleStatus(MSG_Pane* pane, - MSG_CommandType command, - MSG_ViewIndex* indices, - int32 numindices) -{ - return pane->GetToggleStatus(command, indices, numindices); -} - - -extern "C" void MSG_DestroyMaster (MSG_Master* master) { - delete master; -} - - -extern "C" void MSG_DestroyPane(MSG_Pane* pane) { - delete pane; -} - - -extern "C" void MSG_SetLineWidth(MSG_Pane* composepane, int width) -{ - CastCompositionPane(composepane)->SetLineWidth(width); -} - -extern "C" int MSG_SetHTMLAction(MSG_Pane* composepane, - MSG_HTMLComposeAction action) -{ - return CastCompositionPane(composepane)->SetHTMLAction(action); -} - -extern "C" MSG_HTMLComposeAction MSG_GetHTMLAction(MSG_Pane* composepane) -{ - return CastCompositionPane(composepane)->GetHTMLAction(); -} - -extern "C" int MSG_PutUpRecipientsDialog(MSG_Pane* composepane, void *pWnd) -{ - return CastCompositionPane(composepane)->PutUpRecipientsDialog(pWnd); -} - -extern "C" int MSG_ResultsRecipients(MSG_Pane* composepane, - XP_Bool cancelled, - int32* nohtml, - int32* htmlok) -{ - return CastCompositionPane(composepane)->ResultsRecipients(cancelled, - nohtml, - htmlok); -} - -extern "C" XP_Bool MSG_GetHTMLMarkup(MSG_Pane * composepane) { - return CastCompositionPane(composepane)->GetHTMLMarkup(); -} - -extern "C" XP_Bool MSG_DeliveryInProgress(MSG_Pane * composepane) { - if (!composepane || MSG_COMPOSITIONPANE != MSG_GetPaneType(composepane)) - return FALSE; - return CastCompositionPane(composepane)->DeliveryInProgress(); -} - -extern "C" void MSG_SetHTMLMarkup(MSG_Pane * composepane, XP_Bool flag) { - CastCompositionPane(composepane)->SetHTMLMarkup(flag); -} - -extern "C" const char *MSG_GetMessageIdFromState(void *state) -{ - if (state) - { - MSG_SendMimeDeliveryState *deliveryState = - (MSG_SendMimeDeliveryState *) state; - return deliveryState->m_fields->GetMessageId(); - } - return NULL; -} - -extern "C" XP_Bool MSG_IsSaveDraftDeliveryState(void *state) -{ - if (state) - return (((MSG_SendMimeDeliveryState *) state)->m_deliver_mode == - MSG_SaveAsDraft); - return FALSE; -} - -extern "C" int MSG_SetPreloadedAttachments ( MSG_Pane *composepane, - MWContext *context, - void *attachmentData, - void *attachments, - int attachments_count ) -{ - return ConvertMsgErrToMKErr ( CastCompositionPane( - composepane)->SetPreloadedAttachments ( - context, - (MSG_AttachmentData *) attachmentData, - (MSG_AttachedFile *) attachments, - attachments_count) ); -} - -extern "C" MSG_Prefs* MSG_CreatePrefs() { - return new MSG_Prefs(); -} - -extern "C" void MSG_DestroyPrefs(MSG_Prefs* prefs) { - delete prefs; -} - -extern "C" XP_Bool -MSG_GetNoInlineAttachments(MSG_Prefs* prefs) -{ - return prefs->GetNoInlineAttachments(); -} - -extern "C" XP_Bool MSG_GetAutoQuoteReply(MSG_Prefs* prefs) { - return prefs->GetAutoQuoteReply(); -} - -extern MSG_Pane* -MSG_GetParentPane(MSG_Pane* progresspane) -{ - return progresspane->GetParentPane(); -} - - -#ifdef XP_UNIX -extern "C" MSG_Pane* -MSG_MailDocument (MWContext *old_context) -{ - // For backwards compatability. - return MSG_MailDocumentURL(old_context,NULL); -} - -extern "C" MSG_Pane* -MSG_MailDocumentURL (MWContext *old_context,const char *url) -{ - // Don't allow a compose window to be created if the user hasn't - // specified an email address - const char *real_addr = FE_UsersMailAddress(); - if (MISC_ValidateReturnAddress(old_context, real_addr) < 0) - return NULL; - - MSG_CompositionFields* fields = new MSG_CompositionFields(); - if (!fields) return NULL; // Out of memory. - - /* If url is not specified, grab current history entry. */ - if (!url) { - History_entry *h = - (old_context ? SHIST_GetCurrent (&old_context->hist) : 0); - if (h && h->address && *h->address) { - url = h->address; - } - } -#if 1 /* Do this if we want to attach the target of Mail Document by default */ - - if (url) { - fields->SetHeader(MSG_ATTACHMENTS_HEADER_MASK, url); - } -#endif - - if (old_context && old_context->title) { - fields->SetHeader(MSG_SUBJECT_HEADER_MASK, old_context->title); - } - - if (url) { - fields->SetBody(url); - } - - XP_Bool prefBool = FALSE; - PREF_GetBoolPref("mail.attach_vcard",&prefBool); - fields->SetAttachVCard(prefBool); - - MSG_CompositionPane* comppane = (MSG_CompositionPane*) - FE_CreateCompositionPane(old_context, fields, NULL, MSG_DEFAULT); - if (!comppane) { - delete fields; - return NULL; - } - - HG42420 - XP_ASSERT(comppane->GetPaneType() == MSG_COMPOSITIONPANE); - return comppane; -} - -extern "C" MSG_Pane* -MSG_Mail (MWContext *old_context) -{ - MSG_CompositionFields* fields = new MSG_CompositionFields(); - if (!fields) return NULL; // Out of memory. - - XP_Bool prefBool = FALSE; - PREF_GetBoolPref("mail.attach_vcard",&prefBool); - fields->SetAttachVCard(prefBool); - - MSG_CompositionPane* comppane = (MSG_CompositionPane*) - FE_CreateCompositionPane(old_context, fields, NULL, MSG_DEFAULT); - if (!comppane) { - delete fields; - return NULL; - } - - HG52965 - XP_ASSERT(comppane->GetPaneType() == MSG_COMPOSITIONPANE); - return comppane; -} - -extern "C" void -MSG_ResetUUEncode(MSG_Pane *pane) -{ - CastCompositionPane(pane)->m_confirmed_uuencode_p = FALSE; -} - -extern "C" MSG_CompositionFields* -MSG_CreateCompositionFields ( - const char *from, - const char *reply_to, - const char *to, - const char *cc, - const char *bcc, - const char *fcc, - const char *newsgroups, - const char *followup_to, - const char *organization, - const char *subject, - const char *references, - const char *other_random_headers, - const char *priority, - const char *attachment, - const char *newspost_url - ) -{ - MSG_CompositionFields* fields = new MSG_CompositionFields(); - - fields->SetFrom(from); - fields->SetReplyTo(reply_to); - fields->SetTo(to); - fields->SetCc(cc); - fields->SetBcc(bcc); - fields->SetFcc(fcc); - fields->SetNewsgroups(newsgroups); - fields->SetFollowupTo(followup_to); - fields->SetOrganization(organization); - fields->SetSubject(subject); - fields->SetReferences(references); - fields->SetOtherRandomHeaders(other_random_headers); - fields->SetAttachments(attachment); - fields->SetNewspostUrl(newspost_url); - fields->SetPriority(priority); - return fields; -} - -extern "C" void -MSG_DestroyCompositionFields(MSG_CompositionFields *fields) -{ - delete fields; -} - -#endif //XP_UNIX - -extern "C" void -MSG_SetCompFieldsReceiptType(MSG_CompositionFields *fields, - int32 type) -{ - fields->SetReturnReceiptType(type); -} - -extern "C" int32 -MSG_GetCompFieldsReceiptType(MSG_CompositionFields *fields) -{ - return fields->GetReturnReceiptType(); -} - -extern "C" int -MSG_SetCompFieldsBoolHeader(MSG_CompositionFields *fields, - MSG_BOOL_HEADER_SET header, - XP_Bool bValue) -{ - return fields->SetBoolHeader(header, bValue); -} - -extern "C" XP_Bool -MSG_GetCompFieldsBoolHeader(MSG_CompositionFields *fields, - MSG_BOOL_HEADER_SET header) -{ - return fields->GetBoolHeader(header); -} - -extern "C" XP_Bool -MSG_GetForcePlainText(MSG_CompositionFields* fields) -{ - return fields->GetForcePlainText(); -} - -#ifdef XP_UNIX -extern "C" MSG_Pane* -MSG_ComposeMessage (MWContext *old_context, - const char *from, - const char *reply_to, - const char *to, - const char *cc, - const char *bcc, - const char *fcc, - const char *newsgroups, - const char *followup_to, - const char *organization, - const char *subject, - const char *references, - const char *other_random_headers, - const char *priority, - const char *attachment, - const char *newspost_url, - const char *body, - XP_Bool force_plain_text, - const char* html_part - ) -{ - // Don't allow a compose window to be created if the user hasn't - // specified an email address - const char *real_addr = FE_UsersMailAddress(); - if (MISC_ValidateReturnAddress(old_context, real_addr) < 0) - return NULL; - - - MSG_CompositionFields* fields = - MSG_CreateCompositionFields(from, reply_to, to, cc, bcc, - fcc, newsgroups, followup_to, - organization, subject, references, - other_random_headers, priority, attachment, - newspost_url); - - fields->SetForcePlainText(force_plain_text); - fields->SetHTMLPart(html_part); - fields->SetDefaultBody(body); - - XP_Bool prefBool = FALSE; - PREF_GetBoolPref("mail.attach_vcard",&prefBool); - fields->SetAttachVCard(prefBool); - - MSG_CompositionPane* comppane = (MSG_CompositionPane*) - FE_CreateCompositionPane(old_context, fields, NULL, MSG_DEFAULT); - if (!comppane) { - delete fields; - return NULL; - } - - XP_ASSERT(comppane->GetPaneType() == MSG_COMPOSITIONPANE); - return comppane; -} - -#endif //XP_UNIX -extern "C" XP_Bool -MSG_ShouldAutoQuote(MSG_Pane* comppane) -{ - return CastCompositionPane(comppane)->ShouldAutoQuote(); -} - -extern "C" const char* -MSG_GetCompHeader(MSG_Pane* comppane, MSG_HEADER_SET header) -{ - return CastCompositionPane(comppane)->GetCompHeader(header); -} - - -extern "C" int -MSG_SetCompHeader(MSG_Pane* comppane, MSG_HEADER_SET header, const char* value) -{ - return CastCompositionPane(comppane)->SetCompHeader(header, value); -} - - -extern "C" XP_Bool -MSG_GetCompBoolHeader(MSG_Pane* comppane, MSG_BOOL_HEADER_SET header) -{ - return CastCompositionPane(comppane)->GetCompBoolHeader(header); -} - - -extern "C" int -MSG_SetCompBoolHeader(MSG_Pane* comppane, MSG_BOOL_HEADER_SET header, XP_Bool bValue) -{ - return CastCompositionPane(comppane)->SetCompBoolHeader(header, bValue); -} - - -extern "C" const char* -MSG_GetCompBody(MSG_Pane* comppane) -{ - return CastCompositionPane(comppane)->GetCompBody(); -} - - -extern "C" int -MSG_SetCompBody(MSG_Pane* comppane, const char* value) -{ - return CastCompositionPane(comppane)->SetCompBody(value); -} - - - -extern "C" void -MSG_QuoteMessage(MSG_Pane* comppane, - int (*func)(void* closure, const char* data), - void* closure) -{ - CastCompositionPane(comppane)->QuoteMessage(func, closure); -} - - -extern "C" int -MSG_SanityCheck(MSG_Pane* comppane, int skippast) -{ - return CastCompositionPane(comppane)->SanityCheck(skippast); -} - - - - -extern "C" const char* -MSG_GetAssociatedURL(MSG_Pane* comppane) -{ - return CastCompositionPane(comppane)->GetDefaultURL(); -} - - -extern "C" void -MSG_MailCompositionAllConnectionsComplete(MSG_Pane* comppane) -{ - CastCompositionPane(comppane)->MailCompositionAllConnectionsComplete(); -} - - -extern "C" int -MSG_PastePlaintextQuotation(MSG_Pane* comppane, const char* string) -{ - return CastCompositionPane(comppane)->PastePlaintextQuotation(string); -} - -extern "C" char* -MSG_UpdateHeaderContents(MSG_Pane* comppane, - MSG_HEADER_SET header, - const char* value) -{ - return CastCompositionPane(comppane)->UpdateHeaderContents(header, value); -} - - - -extern "C" int -MSG_SetAttachmentList(MSG_Pane* comppane, - struct MSG_AttachmentData* list) -{ - return CastCompositionPane(comppane)->SetAttachmentList(list); -} - - -extern "C" const struct MSG_AttachmentData* -MSG_GetAttachmentList(MSG_Pane* comppane) -{ - return CastCompositionPane(comppane)->GetAttachmentList(); -} - - -extern "C" MSG_HEADER_SET MSG_GetInterestingHeaders(MSG_Pane* comppane) -{ - return CastCompositionPane(comppane)->GetInterestingHeaders(); -} - - - - - - - - -extern "C" XP_Bool MSG_IsDuplicatePost(MSG_Pane* comppane) { - // if we're sending from the outbox, we don't have a compostion pane, so guess NO. - return (comppane->GetPaneType() == MSG_COMPOSITIONPANE) - ? CastCompositionPane(comppane)->IsDuplicatePost() - : FALSE; -} - - -extern "C" void -MSG_ClearCompositionMessageID(MSG_Pane* comppane) -{ - if (comppane->GetPaneType() == MSG_COMPOSITIONPANE) - CastCompositionPane(comppane)->ClearCompositionMessageID(); -} - - -extern "C" const char* -MSG_GetCompositionMessageID(MSG_Pane* comppane) -{ - return (comppane->GetPaneType() == MSG_COMPOSITIONPANE) - ? CastCompositionPane(comppane)->GetCompositionMessageID() - : 0; -} - -/* What are we going to do about error messages and codes? Internally, we'd - like a nice error range system, but we need to export errors too... ### - */ -extern "C" -int ConvertMsgErrToMKErr(MsgERR err) -{ - switch (err) - { - case eSUCCESS: - return 0; - case eOUT_OF_MEMORY: - return MK_OUT_OF_MEMORY; - case eID_NOT_FOUND: - return MK_MSG_ID_NOT_IN_FOLDER; - case eUNKNOWN: - return -1; - } - // Well, most likely, someone returned a negative number that - // got cast somewhere into a MsgERR. If so, just return that value. - if (int(err) < 0) return int(err); - // Punt, and return the generic unknown error. - return -1; -} - -extern "C" -int MSG_RetrieveStandardHeaders(MSG_Pane * pane, MSG_HeaderEntry ** return_list) -{ - XP_ASSERT(pane && pane->GetPaneType() == MSG_COMPOSITIONPANE); - return CastCompositionPane(pane)->RetrieveStandardHeaders(return_list); -} - -extern "C" -void MSG_SetHeaderEntries(MSG_Pane * pane,MSG_HeaderEntry * in_list,int count) -{ - XP_ASSERT(pane && pane->GetPaneType() == MSG_COMPOSITIONPANE); - CastCompositionPane(pane)->SetHeaderEntries(in_list,count); -} - -extern "C" -void MSG_ClearComposeHeaders(MSG_Pane * pane) -{ - XP_ASSERT(pane && pane->GetPaneType() == MSG_COMPOSITIONPANE); - CastCompositionPane(pane)->ClearComposeHeaders(); -} - -extern "C" -int MSG_ProcessBackground(URL_Struct* urlstruct) -{ - return msg_Background::ProcessBackground(urlstruct); -} - -extern "C" XP_Bool MSG_RequestForReturnReceipt(MSG_Pane *pane) -{ - return pane->GetRequestForReturnReceipt(); -} - -extern "C" XP_Bool MSG_SendingMDNInProgress(MSG_Pane *pane) -{ - return pane->GetSendingMDNInProgress(); -} - -// -// NET_IsOffline() is declared in net.h, but libnet doesn't define it -// publically anywhere. There's one in network/protocols/nntp/mknews.c -// but it's declared MODULE_PRIVATE and we can't see it from here, -// at least not in MOZ_MAIL_COMPOSE mode. -// -#ifndef MOZ_MAIL_NEWS -XP_Bool NET_IsOffline() { return FALSE; } -#endif /* MOZ_MAIL_NEWS */ diff --git a/mozilla/lib/mailto/msghdr.h b/mozilla/lib/mailto/msghdr.h deleted file mode 100644 index 0382200a5e5..00000000000 --- a/mozilla/lib/mailto/msghdr.h +++ /dev/null @@ -1,96 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgHdr_H_ -#define _MsgHdr_H_ - -const int kMaxSubject = 160; -const int kMaxAuthor = 160; -const int kMaxRecipient = 80; -const int kMaxMsgIdLen = 80; -const int kMaxReferenceLen = 10 * kMaxMsgIdLen; - -typedef int32 MsgFlags; // try to keep flags view is going to care about - // in the first byte, so we can copy the flags over directly - -const int32 kIsRead = 0x1; // same as MSG_FLAG_READ -const int32 kReplied = 0x2; // same as MSG_FLAG_REPLIED -const int32 kMsgMarked = 0x4; // same as MSG_FLAG_MARKED - (kMarked collides with IMAP) -const int32 kHasChildren = 0x8; // no equivalent (shares space with FLAG_EXPUNGED) -const int32 kIsThread = 0x10; // !!shares space with MSG_FLAG_HAS_RE -const int32 kElided = 0x20; // same as MSG_FLAG_ELIDED -const int32 kExpired = 0x40; // same as MSG_FLAG_EXPIRED -const int32 kOffline = 0x80; // this message has been downloaded -const int32 kWatched = 0x100; -const int32 kSenderAuthed = 0x200; // same as MSG_FLAG_SENDER_AUTHED -const int32 kExpunged = 0x400; // NOT same value as MSG_FLAG_EXPUNGED -const int32 kHasRe = 0x800; // Not same values as MSG_FLAG_HAS_RE -const int32 kForwarded = 0x1000; // this message has been forward (mail only) -const int32 kIgnored = 0x2000; // this message is ignored - -const int32 kMDNNeeded = 0x4000; // this message needs MDN report -const int32 kMDNSent = 0x8000; // MDN report has been Sent - -const int32 kNew = 0x10000; // used for status, never stored in db. -const int32 kAdded = 0x20000; // Just added to db - used in - // notifications, never set in msgHdr. - -const int32 kTemplate = 0x40000; // this message is a template - -const int32 kDirty = 0x80000; -const int32 kPartial = 0x100000; // NOT same value as MSG_FLAG_PARTIAL -const int32 kIMAPdeleted = 0x200000; // same value as MSG_FLAG_IMAP_DELETED -const int32 kHasAttachment = 0x10000000; // message has attachments - -const int32 kSameAsMSG_FLAG = kHasAttachment|kIsRead|kMsgMarked|kExpired|kElided|kSenderAuthed|kReplied|kOffline|kForwarded|kWatched|kIMAPdeleted; -const int32 kMozillaSameAsMSG_FLAG = kIsRead|kMsgMarked|kExpired|kElided|kSenderAuthed|kReplied|kOffline|kForwarded|kWatched|kIMAPdeleted; -const int32 kExtraFlags = 0xFF; - -struct MessageHdrStruct -{ - MessageKey m_threadId; - MessageKey m_messageKey; - char m_subject[kMaxSubject]; - char m_author[kMaxAuthor]; - char m_messageId[kMaxMsgIdLen]; - char m_references[kMaxReferenceLen]; - char m_recipients[kMaxRecipient]; - time_t m_date; - uint32 m_messageSize; // lines for news articles, bytes for mail messages - uint32 m_flags; - uint16 m_numChildren; // for top-level threads - uint16 m_numNewChildren; // for top-level threads - char m_level; // indentation level - MSG_PRIORITY m_priority; -public: - void SetSubject(const char * subject); - void SetAuthor(const char * author); - void SetMessageID(const char * msgID); - void SetReferences(const char * referencesStr); - void SetDate(const char * date); - void SetLines(uint32 lines); - void SetSize(uint32 size); - const char *GetReference(const char *nextRef, char *reference); - static void StripMessageId(const char *msgID, char *outMsgId, int msgIdLen); -}; - -#endif _MsgHdr_H_ diff --git a/mozilla/lib/mailto/msgmast.cpp b/mozilla/lib/mailto/msgmast.cpp deleted file mode 100644 index 9094d4e4a94..00000000000 --- a/mozilla/lib/mailto/msgmast.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#define FORCE_PR_LOG /* Allow logging in the release build */ - -#include "rosetta.h" -#include "msg.h" -#include "errcode.h" - -#include "msgmast.h" -#include "msgprefs.h" -#include "prtime.h" -#include "prefapi.h" -#include "rosetta.h" -#include HG99877 -#include "msgurlq.h" -#include "xpgetstr.h" -#include "prlog.h" -#include "nslocks.h" -#include "pw_public.h" - -extern "C" { - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_SET_HTML_NEWSGROUP_HEIRARCHY_CONFIRM; - extern int MK_MSG_FOLDER_ALREADY_EXISTS; - extern int MK_MSG_INBOX_L10N_NAME; - extern int MK_IMAP_UPGRADE_WAIT_WHILE_UPGRADE; - extern int MK_IMAP_UPGRADE_PROMPT_QUESTION; - extern int MK_IMAP_UPGRADE_CUSTOM; - extern int MK_POP3_USERNAME_UNDEFINED; - extern int XP_PASSWORD_FOR_POP3_USER; - extern int XP_MSG_CACHED_PASSWORD_NOT_MATCHED; - extern int XP_MSG_PASSWORD_FAILED; - extern int MK_POP3_PASSWORD_UNDEFINED; -} - -PRLogModuleInfo *IMAP; - -MSG_Master::MSG_Master(MSG_Prefs* prefs) -{ - XP_Bool purgeBodiesByAge; - int32 purgeMethod; - int32 daysToKeepHdrs; - int32 headersToKeep; - int32 daysToKeepBodies; - - m_prefs = prefs; - m_prefs->AddNotify(this); - - - IMAP = PR_NewLogModule("IMAP"); - // on the mac, use this java script preference - // as an alternate to setenv - XP_Bool imapIOlogging; - PREF_GetBoolPref("imap.io.mac.logging", &imapIOlogging); - if (imapIOlogging) - IMAP->level = PR_LOG_ALWAYS; - -} - -MSG_Master::~MSG_Master() -{ - m_prefs->RemoveNotify(this); -} - - -void -MSG_Master::SetFirstPane(MSG_Pane* pane) -{ - m_firstpane = pane; -} - - -MSG_Pane* -MSG_Master::GetFirstPane() -{ - return m_firstpane; -} - -void MSG_Master::NotifyPrefsChange(NotifyCode ) -{ -} diff --git a/mozilla/lib/mailto/msgmast.h b/mozilla/lib/mailto/msgmast.h deleted file mode 100644 index f3c27d7ab68..00000000000 --- a/mozilla/lib/mailto/msgmast.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgMast_H_ -#define _MsgMast_H_ - -#include "errcode.h" -#include "msgprnot.h" - -class MSG_Prefs; -class MSG_Pane; -class msg_HostTable; - -typedef void * pw_ptr; - -class MSG_Master : public MSG_PrefsNotify { -public: - MSG_Master(MSG_Prefs* prefs); - virtual ~MSG_Master(); - - MSG_Prefs* GetPrefs() {return m_prefs;} - - void SetFirstPane(MSG_Pane* pane); - MSG_Pane* GetFirstPane(); - - MSG_Pane *FindPaneOfType(MSG_FolderInfo *id, MSG_PaneType type) ; - MSG_Pane *FindPaneOfType(const char *url, MSG_PaneType type) ; - - MSG_Pane *FindFirstPaneOfType(MSG_PaneType type); - MSG_Pane *FindNextPaneOfType(MSG_Pane *startHere, MSG_PaneType type); - - MSG_NewsHost* FindHost(const char* name, XP_Bool isSecure, - int32 port); // If port is negative, then we will - // look for a ":portnum" as part of the - // name. Otherwise, there had better - // not be a colon in the name. - MSG_NewsHost* GetDefaultNewsHost(); - - void NotifyPrefsChange(NotifyCode code); - -protected: - -private: - MSG_Prefs* m_prefs; - MSG_Pane* m_firstpane; -}; - - -#endif /* _MsgMast_H_ */ diff --git a/mozilla/lib/mailto/msgmdn.cpp b/mozilla/lib/mailto/msgmdn.cpp deleted file mode 100644 index 9e6da04b0e7..00000000000 --- a/mozilla/lib/mailto/msgmdn.cpp +++ /dev/null @@ -1,890 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msgmdn.h" -#include "net.h" -#include "xp_time.h" -#include "prtime.h" -#include "prtypes.h" -#include "fe_proto.h" -#include "msg.h" -#include "msgpane.h" -#include "prefapi.h" -#include "intl_csi.h" -#include "msgurlq.h" -#include "gui.h" -#include "msgprefs.h" -#include "mkutils.h" -#include "mktcp.h" -#include "netutils.h" -#include "prsystem.h" - -extern "C" -{ - extern int MK_MSG_MDN_DISPLAYED; - extern int MK_MSG_MDN_DISPATCHED; - extern int MK_MSG_MDN_PROCESSED; - extern int MK_MSG_MDN_DELETED; - extern int MK_MSG_MDN_DENIED; - extern int MK_MSG_MDN_FAILED; - extern int MK_MSG_MDN_WISH_TO_SEND; - extern int MK_OUT_OF_MEMORY; - extern int MK_MSG_DELIV_MAIL; - extern int MK_MDN_DISPLAYED_RECEIPT; - extern int MK_MDN_DISPATCHED_RECEIPT; - extern int MK_MDN_PROCESSED_RECEIPT; - extern int MK_MDN_DELETED_RECEIPT; - extern int MK_MDN_DENIED_RECEIPT; - extern int MK_MDN_FAILED_RECEIPT; -} - -extern "C" char *mime_make_separator(const char *prefix); -extern "C" char *msg_generate_message_id(); -extern "C" char *strip_continuations(char *original); - -#define MH_ALLOC_COPY(dst, src) \ - do { dst = (char *) XP_ALLOC(src->length+1); *(dst+src->length)=0; \ - if (src->length) XP_MEMCPY(dst, src->value, src->length); } while (0) -#define PUSH_N_FREE_STRING(p) \ - do { if (p) { status = WriteString(p); PR_smprintf_free(p); p=0; \ - if (status<0) return status; } \ - else { return MK_OUT_OF_MEMORY; } } while (0) - -char DispositionTypes[7][16] = { - "displayed", - "dispatched", - "processed", - "deleted", - "denied", - "failed", - "" -}; - -MSG_ProcessMdnNeededState::MSG_ProcessMdnNeededState( - EDisposeType intendedType, - MSG_Pane *pane, - MSG_FolderInfo *folder, - uint32 key, - MimeHeaders *srcHeaders, - XP_Bool autoAction) -{ - XP_ASSERT (srcHeaders && pane); - if (!srcHeaders || !pane) return; - m_disposeType = intendedType; - m_pane = pane; - m_autoAction = autoAction; - - m_returnPath = MimeHeaders_get (srcHeaders, HEADER_RETURN_PATH, FALSE, - FALSE); - m_dispositionNotificationTo = - MimeHeaders_get(srcHeaders, HEADER_DISPOSITION_NOTIFICATION_TO, FALSE, - FALSE); - if (!m_dispositionNotificationTo) - m_dispositionNotificationTo = - MimeHeaders_get(srcHeaders, HEADER_RETURN_RECEIPT_TO, FALSE, - FALSE); - m_date = MimeHeaders_get (srcHeaders, HEADER_DATE, FALSE, FALSE); - m_to = MimeHeaders_get (srcHeaders, HEADER_TO, FALSE, FALSE); - m_cc = MimeHeaders_get (srcHeaders, HEADER_CC, FALSE, FALSE); - m_subject = MimeHeaders_get (srcHeaders, HEADER_SUBJECT, FALSE, FALSE); - if (m_subject) strip_continuations(m_subject); - m_messageId = MimeHeaders_get (srcHeaders, HEADER_MESSAGE_ID, FALSE, - FALSE); - m_originalRecipient = MimeHeaders_get (srcHeaders, - HEADER_ORIGINAL_RECIPIENT, FALSE, - FALSE); - - m_all_headers = (char *) XP_ALLOC(srcHeaders->all_headers_fp + 1); - *(m_all_headers+srcHeaders->all_headers_fp)=0; - m_all_headers_size = srcHeaders->all_headers_fp; - XP_MEMCPY(m_all_headers, srcHeaders->all_headers, - srcHeaders->all_headers_fp); - InitAndProcess(); -} - -MSG_ProcessMdnNeededState::MSG_ProcessMdnNeededState( - EDisposeType intendedType, - MSG_Pane *pane, - MSG_FolderInfo *folder, - uint32 key, - struct message_header *returnPath, - struct message_header *dnt, - struct message_header *to, - struct message_header *cc, - struct message_header *subject, - struct message_header *date, - struct message_header *originalRecipient, - struct message_header *messageId, - char *allHeaders, - int32 allHeadersSize, - XP_Bool autoAction) -{ - XP_ASSERT (pane); - if (!pane) return; - m_disposeType = intendedType; - m_pane = pane; - m_autoAction = autoAction; - - MH_ALLOC_COPY (m_returnPath, returnPath); - MH_ALLOC_COPY (m_dispositionNotificationTo, dnt); - MH_ALLOC_COPY (m_to, to); - MH_ALLOC_COPY (m_cc, cc); - MH_ALLOC_COPY (m_date, date); - MH_ALLOC_COPY (m_subject, subject); - MH_ALLOC_COPY (m_originalRecipient, originalRecipient); - MH_ALLOC_COPY (m_messageId, messageId); - - m_all_headers = (char *) XP_ALLOC (allHeadersSize+1); - *(m_all_headers+allHeadersSize) = 0; - m_all_headers_size = allHeadersSize; - XP_MEMCPY(m_all_headers, allHeaders, allHeadersSize); - InitAndProcess(); -} - -void MSG_ProcessMdnNeededState::InitAndProcess() -{ - XP_Bool mdnEnabled = FALSE; - - m_outFile = 0; - m_csid = 0; - m_msgFileName = 0; - m_mimeSeparator = 0; - m_autoSend = FALSE; - m_reallySendMdn = FALSE; - - PREF_GetBoolPref("mail.mdn.report.enabled", &mdnEnabled); - - if (m_dispositionNotificationTo && - mdnEnabled && - ProcessSendMode() && - ValidateReturnPath()) - CreateMdnMsg(); -} - -int32 MSG_ProcessMdnNeededState::OutputAllHeaders() -{ - XP_ASSERT(m_all_headers && m_all_headers_size); - - // **** this is disgusting; I don't have a better way to deal with it - char *buf = m_all_headers, *buf_end = - m_all_headers+m_all_headers_size; - char *start = buf, *end = buf; - int32 count = 0, ret = 0; - - while (buf < buf_end) - { - switch (*buf) - { - case 0: - if (*(buf+1) == LF) - { - // *buf = CR; - end = buf; - } - else if (*(buf+1) == 0) - { - // the case of message id - *buf = '>'; - } - break; - case CR: - end = buf; - *buf = 0; - break; - case LF: - if (buf > start && *(buf-1) == 0) - { - start = buf + 1; - end = start; - } - else - { - end = buf; - } - break; - } - buf++; - - if (end > start && (*end == LF || !*end)) - { - // strip out private X-Mozilla-Status header & X-Mozilla-Draft-Info - if (!XP_STRNCASECMP(start, X_MOZILLA_STATUS, X_MOZILLA_STATUS_LEN) || - !XP_STRNCASECMP(start, X_MOZILLA_DRAFT_INFO, X_MOZILLA_DRAFT_INFO_LEN)) - { - // make sure we are also copying the last null terminated char - // XP_MEMCPY(start, end+2, (buf_end+1) - (end+2)); - // buf_end -= (end+2 - start); - // m_all_headers_size -= (end+2 - start); - if (*end == LF) - start = end+1; - else - start = end+2; - } - else - { - XP_Bool endIsLF = *end == LF; - if (endIsLF) - *end = 0; - char *wrapped_string = (char *) - XP_WordWrap(m_csid, (unsigned char *) start, 72, FALSE); - if (wrapped_string) - { - ret = WriteString(wrapped_string); - if (ret < 0) return ret; - count += ret; - XP_FREEIF(wrapped_string); - ret = WriteString(CRLF); - if (ret < 0) return ret; - count += ret; - } - if (endIsLF) - start = end+1; - else - start = end+2; - } - buf = start; - end = start; - } - } - return count; -} - - -MSG_ProcessMdnNeededState::~MSG_ProcessMdnNeededState() -{ - if (m_outFile) - { - XP_FileClose(m_outFile); - m_outFile = 0; - } - - if (m_msgFileName) - { - XP_FileRemove(m_msgFileName, xpFileToPost); - XP_FREEIF(m_msgFileName); - } - - XP_FREEIF(m_mimeSeparator); - XP_FREEIF(m_returnPath); - XP_FREEIF(m_dispositionNotificationTo); - XP_FREEIF(m_to); - XP_FREEIF(m_cc); - XP_FREEIF(m_subject); - XP_FREEIF(m_date); - XP_FREEIF(m_originalRecipient); - XP_FREEIF(m_messageId); - XP_FREEIF(m_all_headers); -} - -int32 -MSG_ProcessMdnNeededState::WriteString( const char *str ) -{ - XP_ASSERT (str); - if (!str) return 0; - - int32 len = XP_STRLEN(str); - - return XP_FileWrite(str, len, m_outFile); -} - - -XP_Bool -MSG_ProcessMdnNeededState::MailAddrMatch( const char *addr1, const char *addr2) -{ - XP_Bool isMatched = TRUE; - const char *atSign1 = NULL, *atSign2 = NULL; - const char *lt = NULL, *local1 = NULL, *local2 = NULL; - const char *end1 = NULL, *end2 = NULL; - - if (!addr1 || !addr2) - return FALSE; - - lt = XP_STRCHR(addr1, '<'); - if (!lt) - local1 = addr1; - else - local1 = lt+1; - - lt = XP_STRCHR(addr2, '<'); - if (!lt) - local2 = addr2; - else - local2 = lt+1; - - end1 = XP_STRCHR(local1, '>'); - if (!end1) - end1 = addr1 + XP_STRLEN(addr1); - - end2 = XP_STRCHR(local2, '>'); - if (!end2) - end2 = addr2 + XP_STRLEN(addr2); - - atSign1 = XP_STRCHR(local1, '@'); - atSign2 = XP_STRCHR(local2, '@'); - if (!atSign1 || !atSign2 || // ill formed addr-spec - (atSign1 - local1) != (atSign2 - local2)) - { - isMatched = FALSE; - } - else if (XP_STRNCMP(local1, local2, (atSign1-local1))) - { // case sensitive compare for local part - isMatched = FALSE; - } - else if ((end1 - atSign1) != (end2 - atSign2) || - XP_STRNCASECMP(atSign1, atSign2, (end1 - atSign1))) - { // case insensitive compare for domain part - isMatched = FALSE; - } - return isMatched; -} - -XP_Bool -MSG_ProcessMdnNeededState::ValidateReturnPath() -{ - // ValidateReturnPath applies to Automatic Send Mode only - // if we were in manual mode by pass this check - if (!m_autoSend) - return m_reallySendMdn; - - if (!m_returnPath || !m_dispositionNotificationTo || - !*m_returnPath || !*m_dispositionNotificationTo) - { - m_autoSend = FALSE; - goto done; - } - - m_autoSend = MailAddrMatch(m_returnPath, m_dispositionNotificationTo); - -done: - return m_reallySendMdn; -} - -XP_Bool -MSG_ProcessMdnNeededState::NotInToOrCc() -{ - XP_ASSERT(m_pane); - msg_StringArray to_cc_list (TRUE); - MSG_Prefs *prefs = m_pane->GetPrefs(); - XP_ASSERT(prefs); - char *reply_to = NULL; - char *to = m_to ? MSG_ExtractRFC822AddressMailboxes(m_to) : (char *)NULL; - char *cc = m_cc ? MSG_ExtractRFC822AddressMailboxes(m_cc) : (char *)NULL; - const char *usr_addr = FE_UsersMailAddress(); - int i, size; - XP_Bool bRet = FALSE; - - // start with a simple check - if (XP_STRCASESTR(m_to, usr_addr) || XP_STRCASESTR(m_cc, usr_addr)) - goto done; - - PREF_CopyCharPref("mail.identity.reply_to", &reply_to); - - to_cc_list.ImportTokenList(to); - to_cc_list.ImportTokenList(cc); - - for (i=0, size=to_cc_list.GetSize(); i < size; i++) - { - const char *addr = to_cc_list.GetAt(i); - - if (prefs->IsEmailAddressAnAliasForMe(addr) || - (reply_to && XP_STRCASESTR(reply_to, addr))) - goto done; - } - bRet = TRUE; - -done: - XP_FREEIF(to); - XP_FREEIF(cc); - XP_FREEIF(reply_to); - return bRet; -} - -XP_Bool -MSG_ProcessMdnNeededState::ProcessSendMode() -{ - const char *user_addr = FE_UsersMailAddress(); - const char *localDomain = NULL; - char *prefDomain = NULL; - int miscState = 0; - int32 intPref; - - XP_ASSERT(user_addr); - if (!user_addr) - return m_reallySendMdn; - - PREF_CopyCharPref("mail.identity.defaultdomain", &prefDomain); - - - localDomain = XP_STRCHR(user_addr, '@'); - - if (prefDomain && *prefDomain) - { - if (!XP_STRCASESTR(m_dispositionNotificationTo, prefDomain)) - miscState |= MDN_OUTSIDE_DOMAIN; - XP_FREEIF(prefDomain); - } - else if (localDomain) - { - localDomain++; // advance after @ sign - if (!XP_STRCASESTR(m_dispositionNotificationTo, localDomain)) - miscState |= MDN_OUTSIDE_DOMAIN; - } - if (NotInToOrCc()) - { - miscState |= MDN_NOT_IN_TO_CC; - } - m_reallySendMdn = TRUE; - // ********* - // How are we gona deal with the auto forwarding issues? Some server - // didn't bother to add addition header or modify existing header to the - // message when forwarding. They simply copy the exact same message to - // another user's mailbox. Some change To: to Apparently-To: - // ********* - // starting from lowest denominator to highest - if (!miscState) - { // under normal situation: recipient is in to and cc - // list, sender is from the same domain - intPref = 0; - PREF_GetIntPref("mail.mdn.report.other", &intPref); - switch (intPref) - { - default: - case 0: - m_reallySendMdn = FALSE; - break; - case 1: - m_autoSend = TRUE; - break; - case 2: - m_autoSend = FALSE; - break; - case 3: - m_autoSend = TRUE; - m_disposeType = eDenied; - break; - } -#ifdef CHECK_SENDER_AND_USER_ARE_SAME - // original sender is same as current user; doesn't make sense - if (m_reallySendMdn && - MailAddrMatch(m_dispositionNotificationTo, user_addr)) - m_reallySendMdn = FALSE; -#endif - } - else if (miscState == (MDN_OUTSIDE_DOMAIN | MDN_NOT_IN_TO_CC)) - { - int32 intPref2 = 0; - intPref = 0; - PREF_GetIntPref("mail.mdn.report.outside_domain", &intPref); - PREF_GetIntPref("mail.mdn.report.not_in_to_cc", &intPref2); - if (intPref != intPref2) - { - m_autoSend = FALSE; // ambiguous; always ask - } - else - { - switch (intPref) - { - default: - case 0: - m_reallySendMdn = FALSE; - break; - case 1: - m_autoSend = TRUE; - break; - case 2: - m_autoSend = FALSE; - break; - } - } - } - else if (miscState & MDN_OUTSIDE_DOMAIN) - { - intPref = 0; // reset int pref to 0 - PREF_GetIntPref("mail.mdn.report.outside_domain", &intPref); - switch (intPref) - { - default: - case 0: - m_reallySendMdn = FALSE; - break; - case 1: - m_autoSend = TRUE; - break; - case 2: - m_autoSend = FALSE; - break; - } - } - else if (miscState & MDN_NOT_IN_TO_CC) - { - intPref =0; // reset to 0 - PREF_GetIntPref("mail.mdn.report.not_in_to_cc", &intPref); - switch (intPref) - { - case 0: - default: - m_reallySendMdn = FALSE; - break; - case 1: - m_autoSend = TRUE; - break; - case 2: - m_autoSend = FALSE; - break; - } - } - - return m_reallySendMdn; -} - -void -MSG_ProcessMdnNeededState::CreateMdnMsg() -{ - int32 status = 0; - - if (!m_autoSend) - m_reallySendMdn = - FE_Confirm(m_pane->GetContext(), - XP_GetString(MK_MSG_MDN_WISH_TO_SEND)); - - if (!m_reallySendMdn) - return; - m_msgFileName = WH_TempName (xpFileToPost, "mdnmsg"); - if (!m_msgFileName) - return; - m_outFile = XP_FileOpen (m_msgFileName, xpFileToPost, XP_FILE_WRITE_BIN); - if (!m_outFile) goto done; - status = CreateFirstPart(); - if (status < 0) goto done; - status = CreateSecondPart(); - if (status < 0) goto done; - status = CreateThirdPart(); - -done: - if (m_outFile) - { - XP_FileClose(m_outFile); - m_outFile = 0; - } - if (status < 0) - { - // may want post out error message - XP_FileRemove(m_msgFileName, xpFileToPost); - XP_FREEIF(m_msgFileName); - } - else - { - DoSendMdn(); - } -} - -int32 -MSG_ProcessMdnNeededState::CreateFirstPart() -{ - int gmtoffset = XP_LocalZoneOffset(); - char *convbuf = NULL, *tmpBuffer = NULL; - int16 win_csid; - char *parm = NULL; - char *firstPart = NULL; - int formatId = MK_MSG_MDN_DISPLAYED; - int32 status = 0; - char *receipt_string = NULL; - char *wrapped_string = NULL; - - XP_ASSERT(m_outFile); - - if (!m_mimeSeparator) - m_mimeSeparator = mime_make_separator("mdn"); - if (!m_mimeSeparator) - return MK_OUT_OF_MEMORY; - - tmpBuffer = (char *) XP_ALLOC(256); - - if (!tmpBuffer) - return MK_OUT_OF_MEMORY; - - win_csid = INTL_DefaultWinCharSetID(m_pane->GetContext()); - m_csid = INTL_DefaultMailCharSetID(win_csid); - - - PRExplodedTime now; - PR_ExplodeTime(PR_Now(), PR_LocalTimeParameters, &now); - - /* Use PR_FormatTimeUSEnglish() to format the date in US English format, - then figure out what our local GMT offset is, and append it (since - PR_FormatTimeUSEnglish() can't do that.) Generate four digit years as - per RFC 1123 (superceding RFC 822.) - */ - PR_FormatTimeUSEnglish(tmpBuffer, 100, - "Date: %a, %d %b %Y %H:%M:%S ", - &now); - - PR_snprintf(tmpBuffer + XP_STRLEN(tmpBuffer), 100, - "%c%02d%02d" CRLF, - (gmtoffset >= 0 ? '+' : '-'), - ((gmtoffset >= 0 ? gmtoffset : -gmtoffset) / 60), - ((gmtoffset >= 0 ? gmtoffset : -gmtoffset) % 60)); - - status = WriteString(tmpBuffer); - XP_FREEIF(tmpBuffer); - if (status < 0) return status; - - convbuf = IntlEncodeMimePartIIStr((char *) FE_UsersMailAddress(), - m_csid, TRUE); - - parm = PR_smprintf("From: %s" CRLF, convbuf ? convbuf : FE_UsersMailAddress()); - PUSH_N_FREE_STRING (parm); - - XP_FREEIF(convbuf); - - parm = msg_generate_message_id(); - tmpBuffer = PR_smprintf("Message-ID: %s" CRLF, parm); - PUSH_N_FREE_STRING(tmpBuffer); - - XP_FREEIF(parm); - - receipt_string = XP_GetString(MK_MDN_DISPLAYED_RECEIPT + (int) - m_disposeType); - - parm = PR_smprintf ("%s - %s", (receipt_string ? receipt_string : - "Return Receipt"), (m_subject ? m_subject - : "")); - convbuf = - IntlEncodeMimePartIIStr(parm ? parm : "Return Receipt", - m_csid, TRUE); - tmpBuffer = PR_smprintf("Subject: %s" CRLF, (convbuf ? convbuf : (parm ? parm : - "Return Receipt"))); - PUSH_N_FREE_STRING(tmpBuffer); - if (parm) - { - PR_smprintf_free(parm); - parm = 0; - } - XP_FREEIF(convbuf); - - convbuf = IntlEncodeMimePartIIStr(m_dispositionNotificationTo, m_csid, - TRUE); - tmpBuffer = PR_smprintf("To: %s" CRLF, convbuf ? convbuf : m_dispositionNotificationTo); - PUSH_N_FREE_STRING(tmpBuffer); - - XP_FREEIF(convbuf); - - // *** This is not in the spec. I am adding this so we could do - // threading - if (*m_messageId == '<') - tmpBuffer = PR_smprintf("References: %s" CRLF, m_messageId); - else - tmpBuffer = PR_smprintf("References: <%s>" CRLF, m_messageId); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF, "MIME-Version: 1.0"); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("Content-Type: multipart/report; \ -report-type=disposition-notification;\r\n\tboundary=\"%s\"" CRLF CRLF, - m_mimeSeparator); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("--%s" CRLF, m_mimeSeparator); - PUSH_N_FREE_STRING(tmpBuffer); - - char charset[30]; - INTL_CharSetIDToName(m_csid, charset); - - tmpBuffer = PR_smprintf("Content-Type: text/plain; charset=%s" CRLF, charset); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("Content-Transfer-Encoding: %s" CRLF CRLF, ENCODING_7BIT); - PUSH_N_FREE_STRING(tmpBuffer); - - formatId = MK_MSG_MDN_DISPLAYED + ((int) m_disposeType - (int) - eDisplayed); - - firstPart = XP_STRDUP(XP_GetString(formatId)); - convbuf = IntlEncodeMimePartIIStr(firstPart, m_csid, TRUE); - wrapped_string = (char *) XP_WordWrap(m_csid, (unsigned char *) - (convbuf ? convbuf : firstPart), - 72, FALSE); - tmpBuffer = PR_smprintf("%s" CRLF CRLF, wrapped_string ? wrapped_string : firstPart); - PUSH_N_FREE_STRING(tmpBuffer); - - XP_FREEIF(firstPart); - XP_FREEIF(convbuf); - XP_FREEIF(wrapped_string); - - return status; -} - -int32 -MSG_ProcessMdnNeededState::CreateSecondPart() -{ - char *tmpBuffer = NULL; - char *convbuf = NULL; - int32 status = 0; - char hostName[256]; - *hostName = '\0'; - - PR_GetSystemInfo(PR_SI_HOSTNAME, hostName, 254); - - tmpBuffer = PR_smprintf("--%s" CRLF, m_mimeSeparator); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF, "Content-Type: message/disposition-notification"); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF, "Content-Disposition: inline"); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("Content-Transfer-Encoding: %s" CRLF CRLF, ENCODING_7BIT); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("Reporting-UA: %s; %s %s" CRLF, - hostName, XP_AppCodeName, XP_AppVersion); - PUSH_N_FREE_STRING(tmpBuffer); - - if (m_originalRecipient && *m_originalRecipient) - { - tmpBuffer = PR_smprintf("Original-Recipient: %s" CRLF, m_originalRecipient); - PUSH_N_FREE_STRING(tmpBuffer); - } - - convbuf = IntlEncodeMimePartIIStr((char *) FE_UsersMailAddress(), m_csid, - TRUE); - tmpBuffer = PR_smprintf("Final-Recipient: rfc822;%s" CRLF, convbuf ? convbuf : - FE_UsersMailAddress()); - PUSH_N_FREE_STRING(tmpBuffer); - - XP_FREEIF (convbuf); - - if (*m_messageId == '<') - tmpBuffer = PR_smprintf("Original-Message-ID: %s" CRLF, m_messageId); - else - tmpBuffer = PR_smprintf("Original-Message-ID: <%s>" CRLF, m_messageId); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("Disposition: %s/%s; %s" CRLF CRLF, - (m_autoAction ? "automatic-action" : "manual-action"), - (m_autoSend ? "MDN-sent-automatically" : "MDN-sent-manually"), - DispositionTypes[(int) m_disposeType]); - PUSH_N_FREE_STRING(tmpBuffer); - - return status; -} - -int32 -MSG_ProcessMdnNeededState::CreateThirdPart() -{ - char *tmpBuffer = NULL; - int32 status = 0; - - tmpBuffer = PR_smprintf("--%s" CRLF, m_mimeSeparator); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF, "Content-Type: text/rfc822-headers"); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF, "Content-Transfer-Encoding: 7bit"); - PUSH_N_FREE_STRING(tmpBuffer); - - tmpBuffer = PR_smprintf("%s" CRLF CRLF, "Content-Disposition: inline"); - PUSH_N_FREE_STRING(tmpBuffer); - - status = OutputAllHeaders(); - - if (status < 0) return status; - - status = WriteString(CRLF); - if (status < 0) return status; - - tmpBuffer = PR_smprintf("--%s--" CRLF, m_mimeSeparator); - PUSH_N_FREE_STRING(tmpBuffer); - - return status; -} - -void -MSG_ProcessMdnNeededState::DoSendMdn() -{ - XP_ASSERT(m_dispositionNotificationTo); - - if (!m_dispositionNotificationTo) return; // MK_OUT_OF_MEMORY - - char *tmpBuffer = // 9 = mailto: + null + 1 extra - (char *) XP_ALLOC(XP_STRLEN(m_dispositionNotificationTo) + 9); - - if (!tmpBuffer) return; // MK_OUT_OF_MEMORY - - URL_Struct *url = NULL; - - FE_Progress (m_pane->GetContext(), XP_GetString(MK_MSG_DELIV_MAIL)); - - XP_STRCPY(tmpBuffer, "mailto:"); - - XP_STRCAT(tmpBuffer, m_dispositionNotificationTo); - - url = NET_CreateURLStruct (tmpBuffer, NET_DONT_RELOAD); - if (url) - { - url->post_data = XP_STRDUP(m_msgFileName); - url->post_data_size = XP_STRLEN(m_msgFileName); - url->post_data_is_file = TRUE; - url->method = URL_POST_METHOD; - url->fe_data = this; - url->internal_url = TRUE; - url->msg_pane = m_pane; - // clear m_msgFileName to prevent removing temp file too early - XP_FREEIF(m_msgFileName); - // Set sending MDN in progress so the smtp state machine can null out - // the address for MAIL FROM - m_pane->SetSendingMDNInProgress(TRUE); - - MSG_UrlQueue::AddUrlToPane (url, - MSG_ProcessMdnNeededState::PostSendMdn, - m_pane, - TRUE); - } - XP_FREEIF(tmpBuffer); -} - -/* static */ void -MSG_ProcessMdnNeededState::PostSendMdn(URL_Struct *url, int status, MWContext - *context) -{ - if (url->msg_pane) - url->msg_pane->SetSendingMDNInProgress(FALSE); - - if (status < 0) - { - char *error_msg = NET_ExplainErrorDetails(status, 0, 0, 0, 0); - if (error_msg) - FE_Alert(context, error_msg); - XP_FREEIF(error_msg); - } - if (url->post_data) - { - XP_FileRemove(url->post_data, xpFileToPost); - XP_FREEIF(url->post_data); - url->post_data_size = 0; - } - NET_FreeURLStruct(url); -} - diff --git a/mozilla/lib/mailto/msgmdn.h b/mozilla/lib/mailto/msgmdn.h deleted file mode 100644 index dedd8d82b42..00000000000 --- a/mozilla/lib/mailto/msgmdn.h +++ /dev/null @@ -1,131 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef MSGMDN_H -#define MSGMDN_H - -#include "xp.h" -#include "msgzap.h" -#include "libmime.h" - -class MSG_Pane; -class MSG_FolderInfo; -struct message_header; - -#define MDN_NOT_IN_TO_CC ((int) 0x0001) -#define MDN_OUTSIDE_DOMAIN ((int) 0x0002) - -#define HEADER_RETURN_PATH "Return-Path" -#define HEADER_DISPOSITION_NOTIFICATION_TO "Disposition-Notification-To" -#define HEADER_APPARENTLY_TO "Apparently-To" -#define HEADER_ORIGINAL_RECIPIENT "Original-Recipient" -#define HEADER_REPORTING_UA "Reporting-UA" -#define HEADER_MDN_GATEWAY "MDN-Gateway" -#define HEADER_FINAL_RECIPIENT "Final-Recipient" -#define HEADER_DISPOSITION "Disposition" -#define HEADER_ORIGINAL_MESSAGE_ID "Original-Message-ID" -#define HEADER_FAILURE "Failure" -#define HEADER_ERROR "Error" -#define HEADER_WARNING "Warning" -#define HEADER_RETURN_RECEIPT_TO "Return-Receipt-To" - - -class MSG_ProcessMdnNeededState : public MSG_ZapIt -{ -public: - enum EDisposeType { - eDisplayed = 0x0, - eDispatched, - eProcessed, - eDeleted, - eDenied, - eFailed - }; - -public: - MSG_ProcessMdnNeededState (EDisposeType intendedType, - MSG_Pane *pane, - MSG_FolderInfo *folder, - uint32 key, - MimeHeaders *srcHeader, - XP_Bool autoAction = FALSE); - - MSG_ProcessMdnNeededState (EDisposeType intendedType, - MSG_Pane *pane, - MSG_FolderInfo *folder, - uint32 key, - struct message_header *returnPath, - struct message_header *dnt, - struct message_header *to, - struct message_header *cc, - struct message_header *subject, - struct message_header *date, - struct message_header *originalRecipient, - struct message_header *messageId, - char *allHeaders, - int32 allHeadersSize, - XP_Bool autoAction = TRUE); - - virtual ~MSG_ProcessMdnNeededState (); - static void PostSendMdn(URL_Struct *url, int status, MWContext *context); - -protected: - - XP_Bool ProcessSendMode(); // this should be called prior to - // ValidateReturnPath(); - XP_Bool ValidateReturnPath(); - XP_Bool MailAddrMatch(const char *addr1, const char *addr2); - XP_Bool NotInToOrCc(); - - void CreateMdnMsg(); - int32 CreateFirstPart(); - int32 CreateSecondPart(); - int32 CreateThirdPart(); - void DoSendMdn(); - - // helper function - void InitAndProcess(); - int32 OutputAllHeaders(); - int32 WriteString(const char *str); - -protected: - EDisposeType m_disposeType; - MSG_Pane *m_pane; - XP_File m_outFile; - int16 m_csid; - char *m_msgFileName; - char *m_mimeSeparator; - XP_Bool m_reallySendMdn; /* really send mdn? */ - XP_Bool m_autoSend; /* automatic vs manual send mode */ - XP_Bool m_autoAction; /* automatic vs manual action */ - char *m_returnPath; - char *m_dispositionNotificationTo; - char *m_date; - char *m_to; - char *m_cc; - char *m_subject; - char *m_messageId; - char *m_originalRecipient; - char *m_all_headers; - int32 m_all_headers_size; -}; - -#endif diff --git a/mozilla/lib/mailto/msgpane.cpp b/mozilla/lib/mailto/msgpane.cpp deleted file mode 100644 index 1f17d7c01d5..00000000000 --- a/mozilla/lib/mailto/msgpane.cpp +++ /dev/null @@ -1,658 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "rosetta.h" -#include "msg.h" -#include "errcode.h" -#include "xpgetstr.h" -#include "libi18n.h" - -#include "msgpane.h" -#include "msgprefs.h" -#include "msgmast.h" -#include "msghdr.h" - -#include "xp_time.h" -#include "xplocale.h" -#include "msg.h" -#include "msgmast.h" - -#include "prefapi.h" -#include "xp_qsort.h" -#include "intl_csi.h" -#include "xlate.h" -#include "msgurlq.h" -#include "pw_public.h" -#include "mime.h" - -extern "C" -{ -extern int MK_MSG_ADDRESS_BOOK; -extern int MK_MSG_COMPRESS_ALL_FOLDER; -extern int MK_MSG_EMPTY_TRASH_FOLDER; -extern int MK_MSG_ERROR_WRITING_MAIL_FOLDER; -extern int MK_MSG_GET_NEW_MAIL; -extern int MK_MSG_GET_NEW_DISCUSSION_MSGS; -extern int MK_MSG_NEW_MAIL_MESSAGE; -extern int MK_MSG_NO_POP_HOST; -extern int MK_OUT_OF_MEMORY; -extern int MK_MSG_SAVE_MESSAGE_AS; -extern int MK_MSG_SAVE_MESSAGES_AS; -extern int MK_MSG_OPEN_DRAFT; -extern int MK_MSG_ID_NOT_IN_FOLDER; -extern int MK_MSG_FOLDER_UNREADABLE; -extern int MK_MSG_DELIV_NEW_MSGS; -extern int MK_MSG_QUEUED_DELIVERY_FAILED; -extern int MK_MSG_NEWS_HOST_TABLE_INVALID; -extern int MK_MSG_CANCEL_MESSAGE; -extern int MK_MSG_MESSAGE_CANCELLED; -extern int MK_MSG_MARK_SEL_AS_READ; -extern int MK_MSG_MARK_SEL_AS_UNREAD; -extern int MK_MSG_MARK_THREAD_READ; -extern int MK_MSG_MARK_ALL_READ; -extern int MK_MSG_BACKTRACK; -extern int MK_MSG_GO_FORWARD; -extern int MK_MSG_UNABLE_MANAGE_MAIL_ACCOUNT; -extern int MK_POP3_NO_MESSAGES; -extern int MK_MSG_MANAGE_MAIL_ACCOUNT; -extern int MK_MSG_CANT_DELETE_RESERVED_FOLDER; -extern int MK_MSG_PANES_OPEN_ON_FOLDER; -extern int MK_MSG_DELETE_FOLDER_MESSAGES; -extern int MK_MSG_NO_POST_TO_DIFFERENT_HOSTS_ALLOWED; -extern int MK_MSG_GROUP_NOT_ON_SERVER; -extern int MK_MSG_NEW_NEWSGROUP; -extern int MK_MSG_ADVANCE_TO_NEXT_FOLDER; -extern int MK_MSG_FLAG_MESSAGE; -extern int MK_MSG_UNFLAG_MESSAGE; -extern int MK_MSG_RETRIEVE_FLAGGED; -extern int MK_MSG_RETRIEVE_SELECTED; -XP_Bool NET_IsNewsMessageURL (const char *url); -} - -MSG_Pane* MSG_Pane::MasterList = NULL; - - - -typedef struct msg_incorporate_state -{ - MWContext *context; - MSG_FolderInfoMail *inbox; - MSG_Pane *pane; - const char* dest; - const char *destName; - int32 start_length; -// int numdup; - char *ibuffer; - uint32 ibuffer_size; - uint32 ibuffer_fp; -#ifdef MANGLE_INTERNAL_ENVELOPE_LINES - XP_Bool mangle_from; /* True if "From " lines need to be subject - to the Usual Mangling Conventions.*/ -#endif /* MANGLE_INTERNAL_ENVELOPE_LINES */ - char* headers; - uint32 headers_length; - uint32 headers_maxlength; - XP_Bool gathering_headers; - XP_Bool expect_multiple; - XP_Bool expect_envelope; - ParseMailboxState *incparsestate; /* Parse state for messages */ - int status; -} msg_incorporate_state; - - - -MSG_Pane::MSG_Pane(MWContext* context, MSG_Master* master) { - m_context = context; - m_nextInMasterList = MasterList; - - MasterList = this; - - m_master = master; - if (master) { - m_nextPane = master->GetFirstPane(); - master->SetFirstPane(this); - m_prefs = master->GetPrefs(); - m_prefs->AddNotify(this); - - m_context->mailMaster = master; - } -} - - -MSG_Pane::~MSG_Pane() { - UnregisterFromPaneList(); - - if (m_master) { - m_master->GetPrefs()->RemoveNotify(this); - } - - if (m_progressContext) - PW_DestroyProgressContext(m_progressContext); -} - - -MSG_Pane* MSG_Pane::GetFirstPaneForContext(MWContext *context) -{ - - if (context) - return GetNextPaneForContext(NULL, context); - - return(NULL); -} - -MSG_Pane* MSG_Pane::GetNextPaneForContext(MSG_Pane *startPane, MWContext *context) -{ - MSG_Pane* result = NULL; - result = (startPane) ? startPane->m_nextInMasterList : MasterList; - - for (; result ; result = result->m_nextInMasterList) - { - if (result->GetContext() == context) - return result; - } - return NULL; -} - - -// Remove a pane from the pane list -// Note that if after we remove ourselves from the list, the only pane left -// belongs to the Biff (Check for New Mail) Master then we tell it to go away, which will cause -// its own hidden progress window and context to be deleted. - -void MSG_Pane::UnregisterFromPaneList() -{ - if (m_master) { - MSG_Pane* tmp = m_master->GetFirstPane(); - if (tmp == this) { - m_master->SetFirstPane(m_nextPane); - } else { - for (; tmp ; tmp = tmp->m_nextPane) { - if (tmp->m_nextPane == this) { - tmp->m_nextPane = m_nextPane; - break; - } - } - } - } - - MSG_Pane** ptr; - for (ptr = &MasterList ; *ptr ; ptr = &((*ptr)->m_nextInMasterList)) { - if (*ptr == this) { - *ptr = this->m_nextInMasterList; - break; - } - } -} - -// this method can be used to find out if a pane has been deleted... -/*static*/ XP_Bool MSG_Pane::PaneInMasterList(MSG_Pane *pane) -{ - MSG_Pane* curPane; - XP_Bool ret = FALSE; - // it will return FALSE if pane is NULL - for (curPane = MasterList ; curPane ; curPane = curPane->m_nextInMasterList) - { - if (curPane == pane) - { - ret = TRUE; - break; - } - } - return ret; -} - - -MSG_Pane* MSG_Pane::FindPane(MWContext* context, MSG_PaneType type, XP_Bool contextMustMatch /* = FALSE */) { - MSG_Pane* result; - for (result = MasterList ; result ; result = result->m_nextInMasterList) { - if (result->GetContext() == context && (type == MSG_ANYPANE || - result->GetPaneType() == type)) { - return result; - } - } - if (!contextMustMatch) - { - for (result = MasterList ; result ; result = result->m_nextInMasterList) { - if (type == MSG_ANYPANE || result->GetPaneType() == type) { - return result; - } - } - } - return NULL; -} - -/* static */ MSG_PaneType MSG_Pane::PaneTypeForURL(const char *url) -{ - MSG_PaneType retType = MSG_ANYPANE; - int urlType = NET_URL_Type(url); - char *folderName = NULL; - - switch (urlType) - { - case MAILTO_TYPE_URL: - retType = MSG_COMPOSITIONPANE; - break; - default: - break; - } - FREEIF(folderName); - return retType; -} - -/* inline virtuals moved to cpp file to help compilers that don't implement virtuals - defined in headers well. -*/ -MSG_PaneType MSG_Pane::GetPaneType() {return MSG_PANE;} -void MSG_Pane::NotifyPrefsChange(NotifyCode /*code*/) {} -MSG_Pane* MSG_Pane::GetParentPane() {return NULL;} - -void MSG_Pane::SetFEData(void* data) { - m_fedata = data; -} - -void* MSG_Pane::GetFEData() { - return m_fedata; -} - -XP_Bool MSG_Pane::IsLinePane() { - return FALSE; -} - -MWContext* MSG_Pane::GetContext() { - return m_context; -} - -MSG_Prefs* MSG_Pane::GetPrefs() { - return m_prefs; -} - -MsgERR -MSG_Pane::ComposeNewMessage() -{ -#ifdef XP_UNIX - return (MSG_Mail(GetContext())) ? 0 : MK_OUT_OF_MEMORY; -#else - XP_ASSERT(FALSE); - return MK_OUT_OF_MEMORY; -#endif //XP_UNIX -} - -//This is a long one. I'd like to break it down but some of the work -//that is done here just isn't really useful elsewhere. This handles -//serveral selection cases in the threadwindow of the Mail and News pane. -//If the individual selected something which we can use to populate the -//send to lines, it get added into the addressee fields with the group label. -//If nothing of any use was selected, the "mailto" label is used with a blank. -//They are not allowed to select groups across news servers. Such an act -//will result in an informative error message and bring you back to the -//mail and news pane. -MsgERR -MSG_Pane::ComposeMessageToMany(MSG_ViewIndex* , int32 ) -{ - return ComposeNewMessage(); -} - - - - -char* -MSG_Pane::CreateForwardSubject(MessageHdrStruct* header) -{ - char *fwd_subject = 0; - const char *subject = 0; - char *conv_subject = 0; - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(GetContext()); - - subject = header->m_subject; - - while (XP_IS_SPACE(*subject)) subject++; - - conv_subject = IntlDecodeMimePartIIStr(subject, INTL_GetCSIWinCSID(c), FALSE); - if (conv_subject == NULL) - conv_subject = (char *) subject; - fwd_subject = - (char *) XP_ALLOC((conv_subject ? XP_STRLEN(conv_subject) : 0) + 20); - if (!fwd_subject) goto FAIL; - - XP_STRCPY (fwd_subject, "[Fwd: "); - if (header->m_flags & kHasRe) { - XP_STRCAT (fwd_subject, "Re: "); - } - XP_STRCAT (fwd_subject, conv_subject); - XP_STRCAT (fwd_subject, "]"); - -FAIL: - if (conv_subject != subject) { - FREEIF(conv_subject); - } - return fwd_subject; -} - -void -MSG_Pane::InterruptContext(XP_Bool /*safetoo*/) -{ - XP_InterruptContext(m_context); -} - - -MsgERR -MSG_Pane::DoCommand(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numIndices) -{ - MsgERR status = 0; - - switch (command) { - break; - case MSG_MailNew: - status = ComposeMessageToMany(indices, numIndices); - break; - default: -#ifdef DEBUG - FE_Alert (GetContext(), "command not implemented"); -#endif - break; - } - return status; -} - - -MsgERR -MSG_Pane::GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, int32 numIndices, - XP_Bool *selectable_pP, - MSG_COMMAND_CHECK_STATE *selected_pP, - const char **display_stringP, - XP_Bool *plural_pP) -{ - const char *display_string = 0; - XP_Bool plural_p = FALSE; - XP_Bool selectable_p = FALSE; - XP_Bool selected_p = FALSE; - XP_Bool selected_used_p = FALSE; - - switch(command) { - - case MSG_MailNew: - display_string = XP_GetString(MK_MSG_NEW_MAIL_MESSAGE); - // don't enable compose if we're parsing a folder - selectable_p = TRUE; - break; - default: -// XP_ASSERT(0); - break; - } - if (selectable_pP) - *selectable_pP = selectable_p; - if (selected_pP) - { - if (selected_used_p) - { - if (selected_p) - *selected_pP = MSG_Checked; - else - *selected_pP = MSG_Unchecked; - } - else - { - *selected_pP = MSG_NotUsed; - } - } - if (display_stringP) - *display_stringP = display_string; - if (plural_pP) - *plural_pP = plural_p; - - return 0; -} - - -MSG_COMMAND_CHECK_STATE -MSG_Pane::GetToggleStatus(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numindices) -{ - MSG_COMMAND_CHECK_STATE result = MSG_NotUsed; - if (GetCommandStatus(command, indices, numindices, NULL, &result, - NULL, NULL) != 0) { - return MSG_NotUsed; - } - return result; -} - - -MsgERR -MSG_Pane::SetToggleStatus(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices, - MSG_COMMAND_CHECK_STATE value) -{ - MsgERR status = eSUCCESS; - - MSG_COMMAND_CHECK_STATE old = GetToggleStatus(command, indices, numindices); - if (old == MSG_NotUsed) return eUNKNOWN; - if (old != value) - { - if ((status = DoCommand(command, indices, numindices)) == eSUCCESS) - { - if (GetToggleStatus(command, indices, numindices) != value) - { - XP_ASSERT(0); - return eUNKNOWN; - } - } - } - return status; -} - -void MSG_Pane::SetRequestForReturnReceipt(XP_Bool bRequested) -{ - m_requestForReturnReceipt = bRequested; -} - -XP_Bool MSG_Pane::GetRequestForReturnReceipt() -{ - return m_requestForReturnReceipt; -} - -void MSG_Pane::SetSendingMDNInProgress(XP_Bool inProgress) -{ - m_sendingMDNInProgress = inProgress; -} - -XP_Bool MSG_Pane::GetSendingMDNInProgress() -{ - return m_sendingMDNInProgress; -} - -char* -MSG_Pane::MakeMailto(const char *to, const char *cc, - const char *newsgroups, - const char *subject, const char *references, - const char *attachment, const char *host_data, - XP_Bool xxx_p, XP_Bool sign_p) -{ - char *url=NULL; -#ifdef XP_UNIX - char *to2 = 0, *cc2 = 0; - char *out, *head; - char *qto, *qcc, *qnewsgroups, *qsubject, *qreferences; - char *qattachment, *qhost_data; - char *me = MIME_MakeFromField(); - char *to_plus_me = 0; - - to2 = MSG_RemoveDuplicateAddresses (to, ((cc && *cc) ? me : 0), TRUE /*removeAliasesToMe*/); - if (to2 && !*to2) { - XP_FREE(to2); - to2 = 0; - } - - /* This to_plus_me business is so that, in reply-to-all of a message - to which I was a recipient, I don't go into the CC field (that's - what BCC/FCC are for.) */ - if (to2 && cc && me) { - to_plus_me = (char *) XP_ALLOC(XP_STRLEN(to2) + XP_STRLEN(me) + 10); - } - if (to_plus_me) { - XP_STRCPY(to_plus_me, me); - XP_STRCAT(to_plus_me, ", "); - XP_STRCAT(to_plus_me, to2); - } - FREEIF(me); - - cc2 = MSG_RemoveDuplicateAddresses (cc, (to_plus_me ? to_plus_me : to2), TRUE /*removeAliasesToMe*/); - if (cc2 && !*cc2) { - XP_FREE(cc2); - cc2 = 0; - } - - FREEIF(to_plus_me); - - /* Catch the case of "Reply To All" on a message that was from me. - In that case, we've got an empty To: field at this point. - What we should do is, promote the first CC address to the To: - field. But I'll settle for promoting all of them. - */ - if (cc2 && *cc2 && (!to2 || !*to2)) { - FREEIF(to2); - to2 = cc2; - cc2 = 0; - } - - qto = to2 ? NET_Escape (to2, URL_XALPHAS) : 0; - qcc = cc2 ? NET_Escape (cc2, URL_XALPHAS) : 0; - qnewsgroups = newsgroups ? NET_Escape (newsgroups, URL_XALPHAS) : 0; - qsubject = subject ? NET_Escape (subject, URL_XALPHAS) : 0; - qreferences = references ? NET_Escape (references, URL_XALPHAS) : 0; - qattachment = attachment ? NET_Escape (attachment, URL_XALPHAS) : 0; - qhost_data = host_data ? NET_Escape (host_data, URL_XALPHAS) : 0; - - url = (char *) - XP_ALLOC ((qto ? XP_STRLEN(qto) + 15 : 0) + - (qcc ? XP_STRLEN(qcc) + 15 : 0) + - (qnewsgroups ? XP_STRLEN(qnewsgroups) + 15 : 0) + - (qsubject ? XP_STRLEN(qsubject) + 15 : 0) + - (qreferences ? XP_STRLEN(qreferences) + 15 : 0) + - (qhost_data ? XP_STRLEN(qhost_data) + 15 : 0) + - (qattachment ? XP_STRLEN(qattachment) + 15 : 0) + - 60); - if (!url) goto FAIL; - XP_STRCPY (url, "mailto:"); - head = url + XP_STRLEN (url); - out = head; -# define PUSH_STRING(S) XP_STRCPY(out, S), out += XP_STRLEN(S) -# define PUSH_PARM(prefix,var) \ - if (var) { \ - if (out == head) \ - *out++ = '?'; \ - else \ - *out++ = '&'; \ - PUSH_STRING (prefix); \ - *out++ = '='; \ - PUSH_STRING (var); \ - } \ - - PUSH_PARM("to", qto); - PUSH_PARM("cc", qcc); - PUSH_PARM("newsgroups", qnewsgroups); - PUSH_PARM("subject", qsubject); - PUSH_PARM("references", qreferences); - PUSH_PARM("attachment", qattachment); - PUSH_PARM("newshost", qhost_data); - { - char *t = "true"; /* avoid silly compiler warning */ - HG92725 - if (sign_p) PUSH_PARM("sign", t); - } -# undef PUSH_PARM -# undef PUSH_STRING - -FAIL: - FREEIF (to2); - FREEIF (cc2); - FREEIF (qto); - FREEIF (qcc); - FREEIF (qnewsgroups); - FREEIF (qsubject); - FREEIF (qreferences); - FREEIF (qattachment); - FREEIF (qhost_data); - -#endif //XP_UNIX - return url; -} - -#ifdef GENERATINGPOWERPC -#pragma global_optimizer off -#endif - - -MSG_PaneURLChain::MSG_PaneURLChain(MSG_Pane *pane) -{ - m_pane = pane; -} - -MSG_PaneURLChain::~MSG_PaneURLChain() -{ -} - -// override to chain urls. return non-zero to continue. -int MSG_PaneURLChain::GetNextURL() -{ - return 0; -} - -#if !defined(MOZ_MAIL_NEWS) && !defined(SMART_MAIL) -/* This is normally in mkpop3.c, of all the odd places! - But it's required for mail compose. - */ -int -msg_GrowBuffer (uint32 desired_size, uint32 element_size, uint32 quantum, - char **buffer, uint32 *size) -{ - if (*size <= desired_size) - { - char *new_buf; - uint32 increment = desired_size - *size; - if (increment < quantum) /* always grow by a minimum of N bytes */ - increment = quantum; - -#ifdef TESTFORWIN16 - if (((*size + increment) * (element_size / sizeof(char))) >= 64000) - { - /* Make sure we don't choke on WIN16 */ - XP_ASSERT(0); - return MK_OUT_OF_MEMORY; - } -#endif /* DEBUG */ - - new_buf = (*buffer - ? (char *) XP_REALLOC (*buffer, (*size + increment) - * (element_size / sizeof(char))) - : (char *) XP_ALLOC ((*size + increment) - * (element_size / sizeof(char)))); - if (! new_buf) - return MK_OUT_OF_MEMORY; - *buffer = new_buf; - *size += increment; - } - return 0; -} - -#endif /* ! MOZ_MAIL_NEWS */ diff --git a/mozilla/lib/mailto/msgpane.h b/mozilla/lib/mailto/msgpane.h deleted file mode 100644 index bfb80876601..00000000000 --- a/mozilla/lib/mailto/msgpane.h +++ /dev/null @@ -1,204 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - - -#ifndef _MsgPane_H_ -#define _MsgPane_H_ - -#include "msg.h" -#include "errcode.h" -#include "msgzap.h" -#include "msgprnot.h" - -class MSG_Master; -class MessageDBView; -class MSG_FolderInfo; -class MSG_NewsHost; -class ParseMailboxState; -class msg_Background; -class OfflineImapGoOnlineState; -class MSG_FolderInfoMail; -class MSG_PostDeliveryActionInfo; - -struct tImapFilterClosure; - -struct msg_incorporate_state; -struct MessageHdrStruct; - - -#ifdef MOZ_MAIL_NEWS -class PaneListener : public ChangeListener -{ -public: - PaneListener(MSG_Pane *pPane); - virtual ~PaneListener(); - virtual void OnViewChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator); - virtual void OnViewStartChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator); - virtual void OnViewEndChange(MSG_ViewIndex startIndex, int32 numChanged, - MSG_NOTIFY_CODE changeType, ChangeListener *instigator); - virtual void OnKeyChange(MessageKey keyChanged, int32 flags, - ChangeListener * instigator); - virtual void OnAnnouncerGoingAway (ChangeAnnouncer *instigator); - virtual void OnAnnouncerChangingView(ChangeAnnouncer * /* instigator */, MessageDBView * /* view */) ; - virtual void StartKeysChanging(); - virtual void EndKeysChanging(); - -protected: - MSG_Pane *m_pPane; - XP_Bool m_keysChanging; // are keys changing? - XP_Bool m_keyChanged; // has a key changed since StartKeysChanging called? -}; -#endif /* MOZ_MAIL_NEWS */ - -// If a MSG_Pane has its url chain ptr set to a non-null value, -// it calls the GetNextURL method whenever it finishes a url that is chainable. -// These include delivering queued mail, get new mail, and retrieving -// messages for offline use, oddly enough - the three kinds of urls I need to queue. -// Sadly, neither the msg_Background or MSG_UrlQueue do what I want, -// because I need to chain network urls that have their own exit functions -// and indeed chain urls themselves. -class MSG_PaneURLChain -{ -public: - MSG_PaneURLChain(MSG_Pane *pane); - virtual ~MSG_PaneURLChain(); - virtual int GetNextURL(); // return 0 to stop chaining. -protected: - MSG_Pane *m_pane; -}; - -class MSG_Pane : public MSG_PrefsNotify { -public: - - // hack.. - // Find a pane of the given type that matches the given context. If none, - // find some other pane of the given type (if !contextMustMatch). - static MSG_Pane* FindPane(MWContext* context, - MSG_PaneType type = MSG_ANYPANE, - XP_Bool contextMustMatch = FALSE); - - static XP_Bool PaneInMasterList(MSG_Pane *pane); - - - static MSG_PaneType PaneTypeForURL(const char *url); - XP_Bool NavigationGoesToNextFolder(MSG_MotionType motionType); - MSG_Pane(MWContext* context, MSG_Master* master); - virtual ~MSG_Pane(); - - void SetFEData(void*); - void* GetFEData(); - - virtual XP_Bool IsLinePane(); - virtual MSG_PaneType GetPaneType() ; - virtual void NotifyPrefsChange(NotifyCode /*code*/); - - virtual MSG_Pane* GetParentPane(); - - MSG_Pane* GetNextPane() {return m_nextPane;} - - MSG_Pane *GetFirstPaneForContext(MWContext *context); - - MSG_Pane *GetNextPaneForContext(MSG_Pane *pane, MWContext *context); - - virtual MWContext* GetContext(); - MSG_Prefs* GetPrefs(); - - MSG_Master* GetMaster() {return m_master;} - - virtual MsgERR DoCommand(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices); - - virtual MsgERR GetCommandStatus(MSG_CommandType command, - const MSG_ViewIndex* indices, int32 numindices, - XP_Bool *selectable_p, - MSG_COMMAND_CHECK_STATE *selected_p, - const char **display_string, - XP_Bool *plural_p); - - virtual MsgERR SetToggleStatus(MSG_CommandType command, - MSG_ViewIndex* indices, int32 numindices, - MSG_COMMAND_CHECK_STATE value); - - virtual MSG_COMMAND_CHECK_STATE GetToggleStatus(MSG_CommandType command, - MSG_ViewIndex* indices, - int32 numindices); - - MsgERR ComposeNewMessage(); - //ComposeMessageToMany calls ComposeNewMessage if nothing was selected - //otherwise it builds a string containing selected groups to post to. - MsgERR ComposeMessageToMany(MSG_ViewIndex* indices, int32 numIndices); - - virtual void InterruptContext(XP_Bool safetoo); - - char* CreateForwardSubject(MessageHdrStruct* header); - - // Removes this pane from the main pane list. This is so that calls to - // MSG_Master::FindPaneOfType() won't find this one (because, for example, - // we know we're about to delete this one.) - void UnregisterFromPaneList(); - - // These routines should be used only by the msg_Background class. - msg_Background* GetCurrentBackgroundJob() {return m_background;} - void SetCurrentBackgroundJob(msg_Background* b) {m_background = b;} - void SetShowingProgress(XP_Bool showingProgress) {m_showingProgress = showingProgress;} - - void SetRequestForReturnReceipt(XP_Bool isNeeded); - XP_Bool GetRequestForReturnReceipt(); - - void SetSendingMDNInProgress(XP_Bool inProgress); - XP_Bool GetSendingMDNInProgress(); - - char* MakeMailto(const char *to, const char *cc, - const char *newsgroups, - const char *subject, const char *references, - const char *attachment, const char *host_data, - XP_Bool xxx_p, XP_Bool sign_p); - -protected: - static MSG_Pane* MasterList; - MSG_Pane* m_nextInMasterList; - - - MSG_Pane* m_nextPane; // Link of panes created with the same master. - - - MSG_Master* m_master; - MWContext* m_context; - MSG_Prefs* m_prefs; - void* m_fedata; - int m_numstack; // used for DEBUG, and to tell listeners - // if we're in an update block. - - msg_Background* m_background; - - XP_Bool m_requestForReturnReceipt; - XP_Bool m_showingProgress; - XP_Bool m_sendingMDNInProgress; - MSG_PostDeliveryActionInfo *m_actionInfo; - - MWContext *m_progressContext; -}; - - -#endif /* _MsgPane_H_ */ diff --git a/mozilla/lib/mailto/msgppane.cpp b/mozilla/lib/mailto/msgppane.cpp deleted file mode 100644 index 3fde24d227c..00000000000 --- a/mozilla/lib/mailto/msgppane.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "msgppane.h" - -MSG_ProgressPane::MSG_ProgressPane(MWContext* context, MSG_Master* master, - MSG_Pane *parentPane) -: MSG_Pane(context, master) -{ - m_parentPane = parentPane; - - // progress panes must not look appetizing to JavaScript - //XP_ASSERT(MWContextMailNewsProgress == context->type); - if (context->type != MWContextMailNewsProgress) - context->type = MWContextMailNewsProgress; - if (m_parentPane) - m_parentPane->SetShowingProgress(TRUE); -} - -MSG_ProgressPane::~MSG_ProgressPane() -{ - if (GetParentPane()) - m_parentPane->SetShowingProgress(FALSE); - - if (m_context->imapURLPane == this) - m_context->imapURLPane = NULL; -} - - -MsgERR -MSG_ProgressPane::DoCommand(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numIndices) -{ - return MSG_Pane::DoCommand(command, indices, numIndices); -} - -MSG_Pane* MSG_ProgressPane::GetParentPane() -{ - // parent pane may have been deleted w/o us knowing, so check if it's in master list. - if (!PaneInMasterList(m_parentPane)) - m_parentPane = NULL; - return m_parentPane; -} - diff --git a/mozilla/lib/mailto/msgppane.h b/mozilla/lib/mailto/msgppane.h deleted file mode 100644 index 7ea92c4c22a..00000000000 --- a/mozilla/lib/mailto/msgppane.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgProgressPane_H_ -#define _MsgProgressPane_H_ - -#include "msgpane.h" - -class MSG_ProgressPane : public MSG_Pane -{ -public: - MSG_ProgressPane(MWContext* context, MSG_Master* master, MSG_Pane *parentPane); - virtual ~MSG_ProgressPane(); - virtual MsgERR DoCommand(MSG_CommandType command, MSG_ViewIndex* indices, - int32 numIndices); - - virtual MSG_Pane* GetParentPane(); - -protected: - MSG_Pane *m_parentPane; -}; -#endif - - diff --git a/mozilla/lib/mailto/msgprefs.cpp b/mozilla/lib/mailto/msgprefs.cpp deleted file mode 100644 index cb64273abc4..00000000000 --- a/mozilla/lib/mailto/msgprefs.cpp +++ /dev/null @@ -1,983 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "errcode.h" - -#include "rosetta.h" -#include "msgprefs.h" -#include "msgprnot.h" -#include "prefapi.h" -#include "msgmast.h" -#include "proto.h" // for XP_FindSomeContext - -extern "C" -{ - #include "mkreg.h" -} - -#include "ptrarray.h" - -#ifdef XP_MAC - #include "Memory.h" - #include "Files.h" - #include "ufilemgr.h" - #include "uprefd.h" -#else - extern "C" - { - const char *FE_GetFolderDirectory(MWContext *c); - void NET_SetMailRelayHost(char *); - void NET_SetNewsHost(const char *); - } -#endif - -extern "C" -{ - extern int MK_MSG_MAIL_DIRECTORY_CHANGED; - extern int MK_MSG_SENT_L10N_NAME; - extern void MIME_ConformToStandard(XP_Bool conform_p); - extern int MK_MSG_UNABLE_TO_SAVE_DRAFT; - extern int MK_MSG_UNABLE_TO_SAVE_TEMPLATE; -} - -// Notify listeners that something got changed. updateCode is an int16 instead of -// a MSG_PrefsNotify::NotifyCode because it was deemed a Bad Thing to include all of -// msgprnot.h just to pick up that definition. -void MSG_Prefs::Notify(int16 updateCode) -{ - int i; - - // if we are changing mail servers, trash cached path to imap databases - // m_IMAPdirectory will be reset by next reload call - if ((updateCode == MSG_PrefsNotify::MailServerType) || (updateCode == MSG_PrefsNotify::PopHost)) - FREEIF(m_IMAPdirectory); - - // Do the notification in such a way that deleted listeners don't - // foul up the notification for everyone else. (m_notifying affects - // the behavior of RemoveNotify so that it only NULLs deleted listeners.) - m_notifying = TRUE; - for (i = 0; i < m_numnotify ; i++) - { - if (m_notify[i]) - m_notify[i]->NotifyPrefsChange((MSG_PrefsNotify::NotifyCode) updateCode); - } - m_notifying = FALSE; - - // Clean up after nulled pointers. - for(i=(m_numnotify-1);i >= 0; i--) - { - if (! m_notify[i]) - { - if (i == (m_numnotify-1)) - // last element is null, keep decrementing the count - m_numnotify--; - else - // replace this null element with the last in the list - m_notify[i] = m_notify[--m_numnotify]; - } - } -} - - -char *headerPrefNames[] = -{ - "mail.identity.reply_to", - "mail.default_cc", - "mail.default_fcc", - "mail.imap_sentmail_path", - "news.default_cc", - "news.default_fcc", - "news.imap_sentmail_path", -}; - -enum headerPrefIndices -{ - mail_identity_reply_to=0, - mail_default_cc, - mail_default_fcc, // this is a mess don't change order - mail_imap_sentmail_path, - news_default_cc, - news_default_fcc, // this is a mess don't change order - news_imap_sentmail_path, - num_of_header_prefs -}; - -void MSG_Prefs::PlatformFileToURLPath(const char *platformFile, char **result) -{ - *result = NULL; - - char *tmp = XP_PlatformFileToURL(platformFile); - XP_ASSERT(tmp && !strncmp(tmp, "file://", 7)); - if (tmp && !strncmp(tmp, "file://", 7)) - *result = XP_STRDUP(&(tmp[7])); - -#ifdef XP_UNIX - if ( *result && **result == '~' ) { - char buf[1024]; - char* home_dir = getenv("HOME"); - char* tmp = (*result) + 1; - - while ( *tmp == '/' ) - tmp++; - - /* trim trailing slashes in home_dir */ - while ( (tmp = strrchr(home_dir, '/')) && tmp[1] == '\0' ) - *tmp = '\0'; - - PR_snprintf(buf, sizeof(buf), "%s/%s", home_dir ? home_dir : "", tmp); - XP_FREE(*result); - *result = XP_STRDUP(buf); - } -#endif - - FREEIF(tmp); -} - -static XP_Bool ShouldSavePrefAsBinaryAlias(const char* prefname) -{ -#ifdef XP_MAC - // Return TRUE if path names are saved as binary alias prefs (the default). - // Return FALSE for the URL cases, now saved as a string (new in Nova). These are IMAP - // fccs, and all drafts and all templates. - if (XP_STRCMP(prefname, "mail.imap_sentmail_path") == 0) - return FALSE; // URL - else if (XP_STRCMP(prefname, "news.imap_sentmail_path") == 0) - return FALSE; // URL - else if (XP_STRCMP(prefname, "mail.default_drafts") == 0) - return FALSE; // URL - else if (XP_STRCMP(prefname, "mail.default_templates") == 0) - return FALSE; // URL - return TRUE; -#else - return FALSE; -#endif // XP_MAC -} - -int MSG_Prefs::GetXPDirPathPref(const char *prefName, XP_Bool /*expectFile*/, char **result) -{ - int returnVal = PREF_NOERROR; - char *tmp = NULL; - *result = NULL; // in case we fail - if (ShouldSavePrefAsBinaryAlias(prefName)) - { - returnVal = PREF_CopyPathPref(prefName, &tmp); - if (returnVal == PREF_NOERROR) - *result = tmp; - return returnVal; - } - returnVal = PREF_CopyCharPref(prefName, &tmp); // paths are strings elsewhere - if (returnVal == PREF_NOERROR) - { - // Convert pathname to an xp path. - if (XP_STRLEN(tmp) > 0 && NET_URL_Type(tmp) != IMAP_TYPE_URL && - NET_URL_Type(tmp) != MAILBOX_TYPE_URL) - { - PlatformFileToURLPath(tmp,result); - XP_FREEIF(tmp); - } - else - *result = tmp; - } - return returnVal; -} - -int MSG_Prefs::SetXPMailFilePref(const char* /*prefName*/, char *xpPath) -{ - int returnVal = PREF_NOERROR; - - if (NET_URL_Type(xpPath) != IMAP_TYPE_URL) - { - // ## mwelch 4.0b2 hack! Create the mail file if it doesn't already exist. - // Mail parent folder was created at app startup, so it is - // safe to assume that the parent directory exists. - char *platformPath = WH_FileName(xpPath, xpMailFolder); - XP_File fp = XP_FileOpen(xpPath, xpMailFolder, XP_FILE_APPEND_BIN); - if (fp) - XP_FileClose(fp); - - XP_FREEIF(platformPath); - } - return returnVal; -} // MSG_Prefs::SetXPMailFilePref - -void MSG_Prefs::SetMailNewsProfileAgeFlag(int32 flag, XP_Bool set /* = TRUE */) -{ - // each 'trick' uses this function to register that it is done, but we do not - // want one trick to erase the completion of another. - int32 currentAge = 0; - PREF_GetIntPref("mailnews.profile_age",&currentAge); - if (set) - { - if (!(currentAge & flag)) - PREF_SetIntPref("mailnews.profile_age",(currentAge | flag)); - } - else - { - if (currentAge & flag) - PREF_SetIntPref("mailnews.profile_age",(currentAge | ~flag)); - } - m_dirty = TRUE; -} - -int32 MSG_Prefs::GetStartingMailNewsProfileAge() -{ - Reload(); - return m_startingMailNewsProfileAge; -} - -void MSG_Prefs::Reload() -{ - if (m_dirty) - { - // Temp vars we need to convey pref values. - int32 intPref; - char *strPref; - int prefError = PREF_NOERROR; - - // Load in boolean prefs. - PREF_GetBoolPref("mail.fixed_width_messages", &m_plainText); - PREF_GetBoolPref("mail.auto_quote", &m_autoQuote); - PREF_GetBoolPref("news.show_pretty_names", &m_showPrettyNames); - PREF_GetBoolPref("news.notify.on", &m_newsNotifyOn); - PREF_GetBoolPref("mail.cc_self", &m_mailBccSelf); - PREF_GetBoolPref("news.cc_self", &m_newsBccSelf); - PREF_GetBoolPref("mail.wrap_long_lines", &m_wraplonglines); - HG63256 - - PREF_GetBoolPref("mail.inline_attachments", &m_noinline); - PREF_GetBoolPref("mail.prompt_purge_threshhold", &m_purgeThreshholdEnabled); //Ask about compacting folders - m_noinline = !m_noinline; - - // Load in int/enum prefs. - intPref = (int) MSG_ItalicFont; // make italic if pref call fails - PREF_GetIntPref("mail.quoted_style", &intPref); - m_citationFont = (MSG_FONT) intPref; - - intPref = (int) MSG_NormalSize; // make normal size if pref call fails - PREF_GetIntPref("mail.quoted_size", &intPref); - m_citationFontSize = (MSG_CITATION_SIZE) intPref; - - intPref = 1; - PREF_GetIntPref("mailnews.nav_crosses_folders", &intPref); - m_navCrossesFolders = intPref; - - PREF_GetIntPref("mailnews.profile_age",&m_startingMailNewsProfileAge); - - intPref = 1; // default in case we fail - prefError = PREF_GetIntPref("mail.show_headers", &intPref); - switch (intPref) - { - case 0: m_headerstyle = MSG_ShowMicroHeaders; break; - case 1: m_headerstyle = MSG_ShowSomeHeaders; break; - case 2: m_headerstyle = MSG_ShowAllHeaders; break; - default: - XP_ASSERT(FALSE); - break; - } - - intPref = 0; // if no pref is set, return 0 - let the backend set the default port - HG87635 - - - // Server preference. - // ### mwelch This used to use mail.use_imap, but we're switching - // to mail.server_type as of 4.0b2. - intPref = 0; // pop by default - prefError = PREF_GetIntPref("mail.server_type", &intPref); - m_mailInputType = intPref; - m_mailServerIsIMAP = (m_mailInputType == 1); - - PREF_GetIntPref("mail.purge_threshhold", &m_purgeThreshhold); - // Get string prefs. - - if (!m_freezeMailDirectory) - { - // m_localMailDirectory - strPref = m_localMailDirectory; - m_localMailDirectory = NULL; - - // Get the m_localMailDirectory pref. Passing in TRUE (expectFile) since the flag - // tells the Mac-specific code to make use of the name (usually "\pMail") in the FSSpec - // as well as the parent directory ID. - GetXPDirPathPref("mail.directory", TRUE, &m_localMailDirectory); - -#if defined (XP_MAC) - if (!m_localMailDirectory || !*m_localMailDirectory) - { - Assert_(FALSE); // can this happen? If not, remove this. - char *newDirURL = NULL; - // ### mwelch This is a hack, because the MacFE - // doesn't set the mail root directory by default. - FSSpec mailFolder = CPrefs::GetFolderSpec(CPrefs::MailFolder); - newDirURL = CFileMgr::EncodedPathNameFromFSSpec(mailFolder, true); - m_localMailDirectory = newDirURL; - } -#endif - - // It is still possible to have a NULL directory at this - // point in the code. This is because the WinFE sets the default - // mail directory preference after creating the prefs object. - - if (m_localMailDirectory) - { - // by arbitrary convention, the directory shouldn't have - // a trailing slash - int len = XP_STRLEN(m_localMailDirectory); - if (len && m_localMailDirectory[len-1] == '/') - m_localMailDirectory[len-1] = '\0'; - -#if !defined(XP_MAC) && !defined(XP_WIN) && !defined(XP_OS2) - if (!strPref || strcmp(m_localMailDirectory, strPref)) - { - // Create the directory if it doesn't exist (Unix only) - XP_StatStruct dirStat; - if (-1 == XP_Stat(m_localMailDirectory, &dirStat, xpMailFolder)) - XP_MakeDirectory (m_localMailDirectory, xpMailFolder); - } -#endif - } - if (strPref) XP_FREE(strPref); - } - HG93653 - char onlineDir[256]; - onlineDir[0] = '\0'; - int stringSize = 256; - PREF_GetCharPref("mail.imap.server_sub_directory", - onlineDir, &stringSize); - if ( *onlineDir && (*(onlineDir + XP_STRLEN(onlineDir) - 1) != '/') ) - XP_STRCAT(onlineDir, "/"); - if ((!m_OnlineImapSubDir) || - ((m_OnlineImapSubDir) && - XP_STRCMP(onlineDir, m_OnlineImapSubDir))) - { - FREEIF(m_OnlineImapSubDir); - m_OnlineImapSubDir = XP_STRDUP(onlineDir); - //if (XP_STRCMP(m_OnlineImapSubDir,"")) // only set it if it is not empty - // IMAP_SetNamespacesFromPrefs(GetPopHost(), m_OnlineImapSubDir, "", ""); - } - - PREF_GetBoolPref("mailnews.searchServer", &m_searchServer); - - PREF_GetBoolPref("mailnews.searchSubFolders", &m_searchSubFolders); - - PREF_GetBoolPref("mailnews.confirm.moveFoldersToTrash", &m_confirmMoveFoldersToTrash); - - FREEIF(m_customHeaders); - PREF_CopyCharPref("mailnews.customHeaders",&m_customHeaders); - - FREEIF(m_citationColor); - PREF_CopyCharPref("mail.citation_color", &m_citationColor); - - FREEIF(m_popHost); - PREF_CopyCharPref("network.hosts.pop_server", &m_popHost); - - PREF_GetBoolPref("mail.imap.delete_is_move_to_trash", &m_ImapDeleteMoveToTrash); - - // Set the smtp and news (nntp) hosts. - strPref = NULL; - prefError = PREF_CopyCharPref("network.hosts.smtp_server", &strPref); - if (prefError == PREF_NOERROR) - NET_SetMailRelayHost(strPref); - XP_FREEIF(strPref); - - for(int i=0;i<(int) num_of_header_prefs ;i++) - { - strPref = NULL; - // Only look at the path if the "use it" bool flag is set! - // Bug #45449 jrm - XP_Bool doingFccPath = TRUE, wantsFccPath = FALSE; - if (i == mail_default_fcc || i == mail_imap_sentmail_path) -#ifdef XP_MAC - PREF_GetBoolPref("mail.use_fcc", &wantsFccPath); -#else - wantsFccPath = TRUE; -#endif - else if (i == news_default_fcc || i == news_imap_sentmail_path) -#ifdef XP_MAC - PREF_GetBoolPref("news.use_fcc", &wantsFccPath); -#else - wantsFccPath = TRUE; -#endif - else - doingFccPath = FALSE; - if (doingFccPath && wantsFccPath) - { - prefError = GetXPDirPathPref(headerPrefNames[i], TRUE, &strPref); - if ((prefError != PREF_NOERROR) || (!strPref) || (!*strPref) || - (m_localMailDirectory && !XP_STRCMP(strPref, m_localMailDirectory))) - { - // Take the directory preference and add "Sent" to it. - char *sent = XP_GetString(MK_MSG_SENT_L10N_NAME); - XP_FREEIF(strPref); - - if (m_localMailDirectory && *m_localMailDirectory) - strPref = PR_smprintf("%s/%s", m_localMailDirectory, sent); - -#ifdef XP_MAC - // Still may need to ensure the file exists. - SetXPMailFilePref(headerPrefNames[i], strPref); -#endif - } - } - else if (!doingFccPath) - PREF_CopyCharPref(headerPrefNames[i], &strPref); - FREEIF(m_defaultHeaders[i]); - m_defaultHeaders[i] = strPref; - } - - // Collect all the email addresses which specify the user. We'll need to know them - // when checking the Reply recipients, or doing MDN receipts - if (PREF_NOERROR == PREF_CopyCharPref ("mail.identity.useremail.aliases", &strPref)) - { - if (*strPref) // default is empty string. don't create an array for that - { - if (!m_emailAliases) - m_emailAliases = new msg_StringArray (TRUE /*ownsMemory*/); - if (m_emailAliases) - { - m_emailAliases->RemoveAll(); - m_emailAliases->ImportTokenList (strPref); - } - } - XP_FREE (strPref); - } - - // Collect the email addresses which can't be considered aliases for this user. - // This is intended to keep the email aliases feature from defeating the reply-to - // header in messages - char *replyTo = m_defaultHeaders[mail_identity_reply_to]; - if (replyTo && *replyTo) - { - if (!m_emailAliasesNot) - m_emailAliasesNot = new msg_StringArray (TRUE); - if (m_emailAliasesNot) - { - char *addresses = NULL; - int num = 0; - if (0 != (num = MSG_ParseRFC822Addresses (replyTo, NULL, &addresses))) - { - // We're ignoring the name of the reply-to header, since the - // actual address is all we care about for the alias calculation - m_emailAliasesNot->RemoveAll(); - for (int i = 0; i < num; i++) - { - m_emailAliasesNot->Add (addresses); - addresses += XP_STRLEN (addresses) + 1; - } - } - } - } - - - } - m_dirty = FALSE; -} - -int PR_CALLBACK MSG_PrefsChangeCallback(const char * prefName, void *data) -{ - MSG_Prefs *prefs = (MSG_Prefs *) data; - - if (prefs) - prefs->m_dirty = TRUE; - - // Depending on the preference being changed, - // notify listeners as to the change. - - // Default headers first, since we have easy access to them. - for (int i=0;i<(int) num_of_header_prefs;i++) - { - if (!XP_STRCMP(prefName, headerPrefNames[i])) - { - prefs->Notify(MSG_PrefsNotify::DefaultHeader); - return PREF_NOERROR; - } - } - - if (!XP_STRNCMP(prefName, "netw", 4)) - { - // cause smtp and news host to be set to new values immediately - if (prefs) prefs->Reload(); - } - else if (!XP_STRNCMP(prefName, "mail", 4)) - { - if (0) ; - } - - return PREF_NOERROR; -} - -MSG_Prefs::MSG_Prefs() -{ - m_citationFont = MSG_PlainFont; - m_citationFontSize = MSG_Bigger; - m_plainText = TRUE; - m_mailServerIsIMAP = FALSE; - HG98298 - m_ImapDeleteMoveToTrash = TRUE; - m_IMAPdirectory = NULL; - m_headerstyle = MSG_ShowSomeHeaders; - m_masterForBiff = NULL; - m_notifying = FALSE; - - // Set up dirty flag. - m_dirty = TRUE; - m_freezeMailDirectory = FALSE; - - m_emailAliases = NULL; - m_emailAliasesNot = NULL; - - // Set up prefs callback. - PREF_RegisterCallback("mail.", &MSG_PrefsChangeCallback, this); - PREF_RegisterCallback("news.", &MSG_PrefsChangeCallback, this); - PREF_RegisterCallback("mailnews.", &MSG_PrefsChangeCallback, this); - PREF_RegisterCallback("network.hosts.", &MSG_PrefsChangeCallback, this); - - // Load pref values from the prefs api. - // (We can rely on the string members being NULL initially - // since we derive from MSG_Zap.) - Reload(); - - - // we are only interested in what this prefs value was at startup so initialize it - // here rather than in Reload() - m_startingMailNewsProfileAge = 0; - PREF_GetIntPref("mailnews.profile_age",&m_startingMailNewsProfileAge); - HG92734 -} - -MSG_Prefs::~MSG_Prefs() -{ - XP_ASSERT(m_numnotify == 0); - FREEIF(m_localMailDirectory); - FREEIF(m_citationColor); - FREEIF(m_popHost); - for (int i=0 ; i<sizeof(m_defaultHeaders)/sizeof(char*) ; i++) - FREEIF(m_defaultHeaders[i]); - XP_FREEIF(m_IMAPdirectory); - - delete m_emailAliases; - m_emailAliases = NULL; - delete m_emailAliasesNot; - m_emailAliasesNot = NULL; - -} - - - -void MSG_Prefs::AddNotify(MSG_PrefsNotify* notify) -{ - MSG_PrefsNotify** tmp = m_notify; - m_notify = new MSG_PrefsNotify* [m_numnotify + 1]; - for (int i=0 ; i<m_numnotify ; i++) { - XP_ASSERT(tmp[i] != notify); - m_notify[i] = tmp[i]; - } - m_notify[m_numnotify++] = notify; - delete [] tmp; // not sure why this wasn't here before. - // Could have used XP_PtrArray... -} - - -void MSG_Prefs::RemoveNotify(MSG_PrefsNotify* notify) -{ - int i = 0; - - if (m_notifying) - { - // We're in the process of notifying listeners, so we - // can't shuffle pointers around. - // Just null out the pointer in question, Notify will - // clean up after us. - for (; i<m_numnotify; i++) - { - if (m_notify[i] == notify) - m_notify[i] = NULL; - } - return; - } - - // If we're not notifying listeners, just replace the - // dead element with the last in the list, then decrement - // the listener count. - for (; i<m_numnotify ; i++) - { - if (m_notify[i] == notify) - { - m_notify[i] = m_notify[--m_numnotify]; - return; - } - } - XP_ASSERT(0); -} - -XP_Bool MSG_Prefs::GetSearchServer() -{ - Reload(); - return m_searchServer; -} - -XP_Bool MSG_Prefs::GetSearchSubFolders() -{ - Reload(); - return m_searchSubFolders; -} - -int32 MSG_Prefs::GetNumCustomHeaders() -{ - Reload(); - // determine number of custom headers in the preference so far.... - int count = 0; - - if (!m_customHeaders) - return 0; - - char * buffer = XP_STRDUP(m_customHeaders); - char * marker = buffer; - - while (XP_STRTOK_R(nil, ":, ", &buffer)) - count++; - XP_FREEIF(marker); - return count; -} - - -// caller must use XP_FREE to deallocate the header string this returns. -char * MSG_Prefs::GetNthCustomHeader(int offset) -{ - Reload(); - char * temp = NULL; - if (offset < 0) - return temp; - - if (!m_customHeaders) - return NULL; - - char * buffer = XP_STRDUP(m_customHeaders); - char * marker = buffer; - - for (int count = 0; count <= offset; count++) - { - temp = XP_STRTOK_R(nil,",: ",&buffer); - if (!temp) - break; - } - - // temp now points to the token string - if (temp) - temp = XP_STRDUP(temp); // make a copy of the string // caller must deallocate the space - - XP_FREEIF(marker); // free our copy of the buffer... - return temp; -} - - -#ifdef XP_UNIX -void MSG_Prefs::SetFolderDirectory(const char* d) -{ - PREF_SetCharPref("mail.directory", d); - m_dirty = TRUE; -} -#else -void MSG_Prefs::SetFolderDirectory(const char*) -{ -} -#endif - - -const char *MSG_Prefs::GetFolderDirectory() -{ - Reload(); - return m_localMailDirectory; -} - -const char *MSG_Prefs::GetIMAPFolderDirectory() -{ - Reload(); - if (!m_IMAPdirectory) - { - char *machinePathName = 0; - if (m_popHost) - { - // see if there's a :port in the server name. If so, strip it off when - // creating the server directory. - char *server = XP_STRDUP(m_popHost); - char *port = 0; - if (server) - { - port = XP_STRCHR(server,':'); - if (port) - *port = 0; - machinePathName = WH_FileName(server, xpImapServerDirectory); - XP_FREE(server); - } - } - if (machinePathName) - { - char *imapUrl = XP_PlatformFileToURL (machinePathName); - if (imapUrl) - { - m_IMAPdirectory = XP_STRDUP(imapUrl + XP_STRLEN("file://")); - XP_FREE(imapUrl); - } - XP_FREE (machinePathName); - } - } - return m_IMAPdirectory; -} - - -void MSG_Prefs::GetCitationStyle(MSG_FONT* f, MSG_CITATION_SIZE* s, const char** c) -{ - Reload(); - if (f) *f = m_citationFont; - if (s) *s = m_citationFontSize; - if (c) *c = m_citationColor; -} - - -const char* MSG_Prefs::GetPopHost() -{ - Reload(); - return m_popHost; -} - -XP_Bool MSG_Prefs::IMAPMessageDeleteIsMoveToTrash() -{ - Reload(); - return m_ImapDeleteMoveToTrash; -} - -/* -const char *MSG_Prefs::GetOnlineImapSubDir() -{ - Reload(); - return m_OnlineImapSubDir; -} -*/ - -XP_Bool MSG_Prefs::GetMailServerIsIMAP4() -{ - Reload(); - return m_mailServerIsIMAP; -} - -HG87637 - -const char *MSG_Prefs::GetCopyToSentMailFolderPath() -{ - return GetDefaultHeaderContents(MSG_FCC_HEADER_MASK); -} - -MSG_CommandType MSG_Prefs::GetHeaderStyle() -{ - Reload(); - return m_headerstyle; -} - -XP_Bool MSG_Prefs::GetNoInlineAttachments() -{ - Reload(); - return m_noinline; -} - -XP_Bool MSG_Prefs::GetWrapLongLines() -{ - Reload(); - return m_wraplonglines; -} - -XP_Bool MSG_Prefs::GetAutoQuoteReply() -{ - Reload(); - return m_autoQuote; -} - -const char* MSG_Prefs::GetDefaultHeaderContents(MSG_HEADER_SET header) -{ - Reload(); - int i = ConvertHeaderSetToSubscript(header); - if (i < 0) - return NULL; - return m_defaultHeaders[i]; -} - -XP_Bool MSG_Prefs::GetDefaultBccSelf(XP_Bool newsBcc) -{ - Reload(); - return newsBcc ? m_newsBccSelf : m_mailBccSelf; -} - -int32 MSG_Prefs::GetPurgeThreshhold() -{ - Reload(); - return m_purgeThreshhold; -} - -XP_Bool MSG_Prefs::GetPurgeThreshholdEnabled() -{ - Reload(); - return m_purgeThreshholdEnabled; -} - -XP_Bool MSG_Prefs::GetShowPrettyNames() -{ - Reload(); - return m_showPrettyNames; -} - -HG92435 - -XP_Bool MSG_Prefs::GetNewsNotifyOn() -{ - Reload(); - return m_newsNotifyOn; -} - -void MSG_Prefs::SetNewsNotifyOn(XP_Bool notify) -{ - PREF_SetBoolPref("news.notify.on", notify); -} - -MSG_NCFValue MSG_Prefs::GetNavCrossesFolders() -{ - Reload(); - return (MSG_NCFValue) m_navCrossesFolders; -} - -void MSG_Prefs::SetNavCrossesFolders(MSG_NCFValue cross) -{ - PREF_SetIntPref("mailnews.nav_crosses_folders", (int32) cross); -} - -MSG_Master *MSG_Prefs::GetMasterForBiff() -{ - Reload(); - return m_masterForBiff; -} - -void MSG_Prefs::SetMasterForBiff(MSG_Master *mstr) -{ - // Since we're dealing with a mail master, this by - // definition is a temporary preference. So, just - // set the member in this case. - m_masterForBiff = mstr; -} - - -XP_Bool MSG_Prefs::CopyStringIfChanged(char** str, const char* value) -{ - if (*str == NULL && value == NULL) return FALSE; - if (*str && value && XP_STRCMP(*str, value) == 0) return FALSE; - - if (*str) - delete [] *str; - if (value) - { - *str = new char[XP_STRLEN(value) + 1]; - if (*str) - XP_STRCPY(*str, value); - } - else - *str = NULL; - return TRUE; -} - - -int MSG_Prefs::ConvertHeaderSetToSubscript(MSG_HEADER_SET header) -{ - switch (header) - { - case MSG_REPLY_TO_HEADER_MASK: - return 0; - case MSG_BCC_HEADER_MASK: - return 1; - case MSG_FCC_HEADER_MASK: - { - XP_Bool use_imap_sentmail = FALSE; - PREF_GetBoolPref("mail.use_imap_sentmail", &use_imap_sentmail); - if (use_imap_sentmail) - return 3; - else - return 2; - } - case MSG_NEWS_BCC_HEADER_MASK: - return 4; - case MSG_NEWS_FCC_HEADER_MASK: - { - XP_Bool use_imap_sentmail = FALSE; - PREF_GetBoolPref("news.use_imap_sentmail", &use_imap_sentmail); - if (use_imap_sentmail) - return 6; - else - return 5; - } - default: - XP_ASSERT (0); - return -1; - } -} - - -msg_StringArray *MSG_Prefs::m_emailAliases = NULL; -msg_StringArray *MSG_Prefs::m_emailAliasesNot = NULL; - -/*static*/ XP_Bool MSG_Prefs::IsEmailAddressAnAliasForMe (const char *addr) -{ - // Does the address match one of the user's alias expressions (e.g. foo@*.netscape.com) - - if (m_emailAliasesNot) - { - // Some addresses can't be considered aliases. Right now, this is just used - // for the Reply-To address, so that if you Reply All, your Reply-To address - // will be included, or if you send yourself an MDN request, you'll get one back - // - // NB: this list is guaranteed to hold only addresses, not names, so we can strcmp - // it without parsing it (here) - for (int i = 0; i < m_emailAliasesNot->GetSize(); i++) - if (!strcasecomp (addr, m_emailAliasesNot->GetAt(i))) - return FALSE; - } - - if (m_emailAliases) // master/prefs may not have been initialized yet - { - for (int i = 0; i < m_emailAliases->GetSize(); i++) - { - char *alias = (char*) m_emailAliases->GetAt(i); //Hacky cast: regexp API isn't const - - if (VALID_SXP == NET_RegExpValid (alias)) - { - // The alias is a regular expression, so send it into the regexp evaluator - if (!NET_RegExpMatch ((char*) addr, alias, FALSE /*case sensitive*/)) - return TRUE; - } - else - { - // The alias is not a regular expression, so just use a string compare - if (!strcasecomp (addr, alias)) - return TRUE; - } - } - } - return FALSE; -} - diff --git a/mozilla/lib/mailto/msgprefs.h b/mozilla/lib/mailto/msgprefs.h deleted file mode 100644 index 0188a8f9bc1..00000000000 --- a/mozilla/lib/mailto/msgprefs.h +++ /dev/null @@ -1,305 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1997 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgPrefs_H_ -#define _MsgPrefs_H_ - -#include "msgzap.h" -#include "rosetta.h" - -/* - mwelch 97 July: - - Before adding anything new to MSG_Prefs, consider whether your - new preference can best be managed using the prefs API directly. - If you are not getting the preference value often or otherwise - have no need to cache the prefs value, you are probably better - off calling the prefs API everywhere and leaving this object - alone. - - Having said that, if you want to add a new member variable and - its access functions to MSG_Prefs, here is the way you want to - do this, in order to keep the world happy. (Specific conditions, - of course, may apply to your preference; the instructions below - apply to most circumstances.) - - If a change in your preference does not need to trigger an immediate - action: - - 1. Put a call to PREF_Get{Int,Bool,Char,etc.)Pref in the Reload() - method for your member variable and its corresponding JavaScript - preference name. This should be the only way by which your - member variable is set. - - 2. Your Get() accessor function must call Reload() before returning - the member value. This is the way by which you can be assured that - the most recently set preference value - - 3. If you must have a Set() accessor, implement it in such a way - that it calls PREF_Set{Int,Bool,Char,etc.}Pref, instead of - setting your member variable directly. This way, the prefs API - (and the user's preferences.js file) is properly updated. The - new value circulates back using Reload() and Get() as - described above. - - If a change in your preference requires an immediate response (alert, - change in behavior, etc): - - 1. Implement the preference as described above. - - 2. In MSG_PrefsChangeCallback, there is a top-level parse tree (looking - for names beginning with "mail", "news", or "netw"). Find the clause - corresponding to your preference name and add a condition with code - that needs to run when your preference changes. Even if the code that - runs within MSG_PrefsChangeCallback always reloads on its own, you - still want to leave a load call within Reload() in order to load - the initial value at startup time. - - If you have a transaction that spans across several preference changes, - be sure to tell the right people so that we can someday have calls to - transactionalize preference changes. Currently, all we can do is respond - to changes to individual preferences. - */ -class MSG_PrefsNotify; -class msg_StringArray; - -int PR_CALLBACK MSG_PrefsChangeCallback(const char *prefName, void *data); -int PR_CALLBACK MSG_FccPrefChanged (const char *, void *msgPrefs); -int PR_CALLBACK MSG_MailServerTypeChanged (const char *, void *msgPrefs); -int PR_CALLBACK MSG_DraftsPrefChanged (const char *, void *msgPrefs); -int PR_CALLBACK MSG_TemplatesPrefChanged (const char *, void *msgPrefs); -int PR_CALLBACK MSG_UseImapSentmailPrefChanged (const char *prefName, void *msgPrefs); -int msg_FolderPrefChanged(const char *, void *msgPrefs, uint32 flag); - -// Corresponds to pref("mailnews.nav_crosses_folders", 0) -// 0=do it, don't prompt 1=prompt, 2=don't do it, don't prompt -typedef enum { - MSG_NCFDoIt = 0, - MSG_NCFPrompt = 1, - MSG_NCFDont = 2 -} MSG_NCFValue; - - -#define MSG_IMAP_DELETE_MODEL_UPGRADE_FLAG 0x00000001 // upgraded to imap delete model? -#define MSG_IMAP_SPECIAL_RESERVED_UPGRADE_FLAG 0x00000002 // RESERVED. DO NOT CHANGE THIS VALUE! -#define MSG_IMAP_SUBSCRIBE_UPGRADE_FLAG 0x00000004 // upgraded to IMAP subscription? -#define MSG_IMAP_DEFAULT_HOST_UPGRADE_FLAG 0x00000008 // upgraded default host to new per host prefs -#define MSG_IMAP_CURRENT_START_FLAGS ( MSG_IMAP_DELETE_MODEL_UPGRADE_FLAG \ - | MSG_IMAP_SUBSCRIBE_UPGRADE_FLAG \ - | MSG_IMAP_DEFAULT_HOST_UPGRADE_FLAG) -class MSG_Prefs : public MSG_ZapIt -{ -public: - - MSG_Prefs(void); - virtual ~MSG_Prefs(); - - void AddNotify(MSG_PrefsNotify* notify); - void RemoveNotify(MSG_PrefsNotify* notify); - - void SetFolderDirectory(const char* directory); - const char* GetFolderDirectory(); - const char* GetIMAPFolderDirectory(); - - // This preference is used to help decide when to perform one time tricks, based - // on the age of the current user profile. - - // The theory is: On a fresh install (actually, the creation of a new user profile), - // we should never do any one-time upgrade tricks. - // On an install over a previous verison, we should run each of the upgrade tricks that - // haven't already been run, for each old profile. - - // The first such example is dealing with the introduction of the imap delete messages - // model in 4.02. We wanted the imap delete model to be the default out of the box but - // we also wanted a painless upgrade for existing users who use the delete to trash model. - // The solution is to make the imap delete model the default but if you haven't run the - // IMAP delete model upgrade and you have a trash folder, then change the preference to the - // trash model. In either case, the profile age is now changed to reflect that we have made - // this upgrade, by setting the appropriate bit. - - // We will do this in a bitwise manner, so that individual one-time tricks do not depend - // on the order in which we check for them. - - // This preference should ALWAYS be written to the prefs.js file, unless the value is 0. - // A value of 0 indicates an upgrade from Communicator 4.0, in which no upgrades have ever - // been run. - - // The value written out to the prefs should be the sum of all trick flags which have been run. - // On a fresh install, we automatically write out the following number: - // {sum of all flags used for an upgrade trick} - // We do this in config.js, in modules\libpref\src\init - - // The default value (in all.js) should ALWAYS be 0. This is because if the preference isn't - // present in the prefs.js file, then it means the value is implicitly 0 (because we are - // upgrading from 4.0, and none of the one-time tricks have been run). - - // So, when a new flag is added here, you should also modify "mailnews.profile_age" in config.js - // to be the following number: - // {sum of all flags used for an upgrade trick} - - // The Flags - // see above for #definitions - // 0x00000001 (reserved for the imap delete model trick) - // 0x00000004 (reserved for migrating to IMAP subscription) - // 0x00000008 MSG_IMAP_DEFAULT_HOST_UPGRADE_FLAG (upgraded default host to new per host prefs) - // - // - // *(The special reserved upgrade flag is purposely not used for an upgrade anywhere, except in calculating - // the default value for all.js. This is because we always want the value of "mailnews.profile_age" - // written out to the prefs file -- it can NEVER take on the "default" value, or else it will be - // removed from prefs.js, and this will defeat the purpose of writing out the "current" profile age. - // If we were to ever upgrade, it would find the preference not written out, and assume that it is - // up-to-date. - // To ensure that it is always written out to the file, in the creation of the MSG_Master we will - // un-set this flag each time, so that on a fresh install, the preference will get written out. - - // current total = 1+4+8 = 13 (see #define MSG_IMAP_CURRENT_START_FLAGS above) - - int32 GetStartingMailNewsProfileAge(); - void SetMailNewsProfileAgeFlag(int32 flag, XP_Bool set = TRUE); // call this when we perform an upgrade, to set that upgrade bit - - HG97760 - XP_Bool GetMailServerIsIMAP4(); - MSG_CommandType GetHeaderStyle(); - XP_Bool GetNoInlineAttachments(); - XP_Bool GetWrapLongLines(); - XP_Bool GetDefaultBccSelf(XP_Bool newsBcc); - XP_Bool GetAutoQuoteReply(); - const char * GetDefaultHeaderContents(MSG_HEADER_SET header); - const char * GetCopyToSentMailFolderPath(); - //const char * GetOnlineImapSubDir(); // online subdir for imap folders - int32 GetPurgeThreshhold(); - XP_Bool GetPurgeThreshholdEnabled(); - void GetCitationStyle(MSG_FONT* font, MSG_CITATION_SIZE* size, const char** color); - const char * GetPopHost(); - XP_Bool IMAPMessageDeleteIsMoveToTrash(); - XP_Bool GetSearchSubFolders(); - XP_Bool GetSearchServer(); - - // Queries for things that are derived off of the preferences. - int32 GetNumCustomHeaders(); - char * GetNthCustomHeader(int offset); // caller must use XP_FREEIF on the character string returned - - - // Get the full pathname of the folder implementing the given magic type. - // The result must be free'd with XP_FREE(). - char * MagicFolderName(uint32 flag, int *pStatus = 0); - - // I believe this should be a global preference and not per server - XP_Bool GetShowPrettyNames(); - - XP_Bool GetNewsNotifyOn(); - void SetNewsNotifyOn(XP_Bool notifyOn); - - MSG_NCFValue GetNavCrossesFolders(); - void SetNavCrossesFolders(MSG_NCFValue navCrossesFoldersOn); - - void SetMasterForBiff(MSG_Master *masterForBiff); - MSG_Master * GetMasterForBiff(); - - static XP_Bool IsEmailAddressAnAliasForMe (const char *addr); - - static int GetXPDirPathPref(const char *prefName, XP_Bool expectFile, char ** result); - static int SetXPMailFilePref(const char *prefName, char * xpPath); - static void PlatformFileToURLPath(const char *src, char **dest); - HG82309 - - XP_Bool GetConfirmMoveFoldersToTrash() { Reload(); return m_confirmMoveFoldersToTrash; } - -protected: - - XP_Bool m_dirty; // need to reload prefs at next Get() call - - // m_freezeMailDirectory, if TRUE, prevents (directory) from - // getting a new value. We set this TRUE in order to ensure that - // (directory) will only get one meaningful value within a session. - XP_Bool m_freezeMailDirectory; - - void Reload(void); // reload if dirty flag is set - void Notify(int16 updateCode); - - // callback when javascript prefs value(s) change - friend int PR_CALLBACK MSG_PrefsChangeCallback(const char *prefName, void *data); - friend int msg_FolderPrefChanged (const char *, void *msgPrefs, uint32 flag); - - XP_Bool CopyStringIfChanged(char** str, const char* newvalue); - - int ConvertHeaderSetToSubscript(MSG_HEADER_SET header); - - HG72142 - - MSG_Master *m_masterForBiff; - - // Notification prefs (is this all obsolete? or should it be?) - MSG_PrefsNotify **m_notify; - int m_numnotify; - XP_Bool m_notifying; // Are we in the middle of notifying listeners? - - // IMAP prefs - char * m_IMAPdirectory; - char * m_OnlineImapSubDir; - XP_Bool m_ImapDeleteMoveToTrash; - XP_Bool m_mailServerIsIMAP; - HG29866 - - // Search and Filter prefs - char * m_customHeaders; // arbitrary headers list. - int32 m_numberCustomHeaders; - - XP_Bool m_searchSubFolders; - XP_Bool m_searchServer; // when in online mode, search server or search locally (if false) - - // Quoting prefs - XP_Bool m_autoQuote; - MSG_FONT m_citationFont; - MSG_CITATION_SIZE m_citationFontSize; - char * m_citationColor; - - char * m_localMailDirectory; - XP_Bool m_plainText; - char * m_popHost; - char * m_defaultHeaders[7]; - XP_Bool m_mailBccSelf; - XP_Bool m_newsBccSelf; - long m_mailInputType; - MSG_CommandType m_headerstyle; - XP_Bool m_noinline; - XP_Bool m_wraplonglines; - XP_Bool m_showPrettyNames; - XP_Bool m_purgeThreshholdEnabled; - int32 m_purgeThreshhold; - XP_Bool m_newsNotifyOn; - int32 m_navCrossesFolders; - int32 m_startingMailNewsProfileAge; - XP_Bool m_confirmMoveFoldersToTrash; - - static msg_StringArray *m_emailAliases; - static msg_StringArray *m_emailAliasesNot; - - char * m_draftsName; - char * m_sentName; - char * m_templatesName; -}; - -const char * msg_DefaultFolderName(uint32 flag); - -#endif /* _MsgPrefs_H_ */ diff --git a/mozilla/lib/mailto/msgprnot.h b/mozilla/lib/mailto/msgprnot.h deleted file mode 100644 index cfa32129010..00000000000 --- a/mozilla/lib/mailto/msgprnot.h +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgPrNot_H_ -#define _MsgPrNot_H_ - -#include "msgzap.h" -#include "rosetta.h" - -class MSG_Prefs; - -class MSG_PrefsNotify : public MSG_ZapIt { -public: - // Codes to notify us that a preference item has changed. - enum NotifyCode { - Directory, - CitationStyle, - PlaintextFont, - PopHost, - AutoQuote, - DefaultHeader, - DefaultBCC, - MailServerType, - ImapOnlineDir, - HG62422 - WrapLongLines, - ChangeIMAPDeleteModel - }; - - virtual void NotifyPrefsChange(NotifyCode code) = 0; - - -}; - - -#endif /* _MsgPrNot_H_ */ diff --git a/mozilla/lib/mailto/msgsend.cpp b/mozilla/lib/mailto/msgsend.cpp deleted file mode 100644 index 4849111c651..00000000000 --- a/mozilla/lib/mailto/msgsend.cpp +++ /dev/null @@ -1,4870 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* compose.c --- generation and delivery of MIME objects. - */ - -#include "rosetta.h" -#include "msg.h" -#include "ntypes.h" -#include "structs.h" -#include "xlate.h" /* Text and PostScript converters */ -#include "merrors.h" -#include "gui.h" /* for XP_AppCodeName */ -#include "mime.h" -#include "xp_time.h" /* For XP_LocalZoneOffset() */ -#include "libi18n.h" -#include "xpgetstr.h" -#include "prtime.h" -#include "prtypes.h" -#include "msgcom.h" -#include "msgsend.h" -#include "msgsendp.h" -#include "msgprefs.h" -#include "msgmast.h" -#include "msgcpane.h" -#include "msgcflds.h" -#include "prefapi.h" -#include "abdefn.h" -#include "secrng.h" /* for RNG_GenerateGlobalRandomBytes() */ -#ifdef XP_MAC -#include "errors.h" -#endif -#include "intl_csi.h" -#include "msgurlq.h" - -#ifdef XP_MAC -#pragma warn_unusedarg off -#endif // XP_MAC - -extern "C" -{ - extern int MK_MSG_ASSEMBLING_MSG; - extern int MK_MSG_ASSEMB_DONE_MSG; - extern int MK_MSG_LOAD_ATTACHMNT; - extern int MK_MSG_LOAD_ATTACHMNTS; - extern int MK_MSG_DELIV_MAIL; - extern int MK_MSG_DELIV_MAIL_DONE; - extern int MK_MSG_DELIV_NEWS; - extern int MK_MSG_DELIV_NEWS_DONE; - extern int MK_MSG_QUEUEING; - extern int MK_MSG_WRITING_TO_FCC; - extern int MK_MSG_QUEUED; - extern int MK_MIME_ERROR_WRITING_FILE; - extern int MK_MIME_MULTIPART_BLURB; - extern int MK_MIME_NO_RECIPIENTS; - extern int MK_MIME_NO_SENDER; - extern int MK_MSG_COULDNT_OPEN_FCC_FILE; - extern int MK_OUT_OF_MEMORY; - extern int MK_UNABLE_TO_OPEN_TMP_FILE; - extern int MK_MSG_CANT_CREATE_FOLDER; - extern int MK_MSG_SAVE_DRAFT; - extern int MK_ADDR_BOOK_CARD; - extern int MK_MSG_MAC_PROMPT_UUENCODE; - extern int MK_MSG_SAVING_AS_DRAFT; - extern int MK_MSG_SAVING_AS_TEMPLATE; - extern int MK_MSG_UNABLE_TO_SAVE_DRAFT; - extern int MK_MSG_UNABLE_TO_SAVE_TEMPLATE; - extern int MK_UNABLE_TO_OPEN_FILE; - extern int MK_IMAP_UNABLE_TO_SAVE_MESSAGE; - extern int MK_IMAP_NO_ONLINE_FOLDER; -} - -#ifdef XP_MAC -#include "m_cvstrm.h" -#endif - -#define TEN_K 10240 -#define MK_ATTACHMENT_LOAD_FAILED -666 - -/* Asynchronous mailing of messages with attached URLs. - - - If there are any attachments, start their URLs going, and write each - of them to a temp file. - - - While writing to their files, examine the data going by and decide - what kind of encoding, if any, they need. Also remember their content - types. - - - Once that URLs has been saved to a temp file (or, if there were no - attachments) generate a final temp file, of the actual message: - - - Generate a string of the headers. - - Open the final temp file. - - Write the headers. - - Examine the first part, and decide whether to encode it. - - Write the first part to the file, possibly encoded. - - Write the second and subsequent parts to the file, possibly encoded. - (Open the first temp file and copy it to the final temp file, and so - on, through an encoding filter.) - - - Delete the attachment temp file(s) as we finish with them. - - Close the final temp file. - - Open the news: url. - - Send the final temp file to NNTP. - If there's an error, run the callback with "failure" status. - - If mail succeeded, open the mailto: url. - - Send the final temp file to SMTP. - If there's an error, run the callback with "failure" status. - - Otherwise, run the callback with "success" status. - - Free everything, delete the final temp file. - - The theory behind the encoding logic: - ===================================== - - If the document is of type text/html, and the user has asked to attach it - as source or postscript, it will be run through the appropriate converter - (which will result in a document of type text/plain.) - - An attachment will be encoded if: - - - it is of a non-text type (in which case we will use base64); or - - The "use QP" option has been selected and high-bit characters exist; or - - any NULLs exist in the document; or - - any line is longer than 900 bytes. - - - If we are encoding, and more than 10% of the document consists of - non-ASCII characters, then we always use base64 instead of QP. - - We eschew quoted-printable in favor of base64 for documents which are likely - to always be binary (images, sound) because, on the off chance that a GIF - file (for example) might contain primarily bytes in the ASCII range, using - the quoted-printable representation might cause corruption due to the - translation of CR or LF to CRLF. So, when we don't know that the document - has "lines", we don't use quoted-printable. - */ - - -/* It's better to send a message as news before sending it as mail, because - the NNTP server is more likely to reject the article (for any number of - reasons) than the SMTP server is. */ -#undef MAIL_BEFORE_NEWS - -/* Generating a message ID here is a good because it means that if a message - is sent to both mail and news, it will have the same ID in both places. */ -#define GENERATE_MESSAGE_ID - - -/* For maximal compatibility, it helps to emit both - Content-Type: <type>; name="<original-file-name>" - as well as - Content-Disposition: inline; filename="<original-file-name>" - - The lossage here is, RFC1341 defined the "name" parameter to Content-Type, - but then RFC1521 deprecated it in anticipation of RFC1806, which defines - Content-Type and the "filename" parameter. But, RFC1521 is "Standards Track" - while RFC1806 is still "Experimental." So, it's probably best to just - implement both. - */ -#define EMIT_NAME_IN_CONTENT_TYPE - - -/* Whether the contents of the BCC header should be preserved in the FCC'ed - copy of a message. See comments below, in mime_do_fcc_1(). - */ -#define SAVE_BCC_IN_FCC_FILE - - -/* When attaching an HTML document, one must indicate the original URL of - that document, if the receiver is to have any chance of being able to - retreive and display the inline images, or to click on any links in the - HTML. - - The way we have done this in the past is by inserting a <BASE> tag as the - first line of all HTML documents we attach. (This is kind of bad in that - we're actually modifying the document, and it really isn't our place to - do that.) - - The sanctioned *new* way of doing this is to insert a Content-Base header - field on the attachment. This is (will be) a part of the forthcoming MHTML - spec. - - If GENERATE_CONTENT_BASE, we generate a Content-Base header. - - We used to have a MANGLE_HTML_ATTACHMENTS_WITH_BASE_TAG symbol that we - defined, which added a BASE tag to the bodies. We stopped doing this in - 4.0. */ -#define GENERATE_CONTENT_BASE - - -static XP_Bool mime_use_quoted_printable_p = TRUE; -static XP_Bool mime_headers_use_quoted_printable_p = FALSE; - -#ifdef XP_MAC - -XP_BEGIN_PROTOS -extern OSErr my_FSSpecFromPathname(char* src_filename, FSSpec* fspec); -extern char * mime_make_separator(const char *prefix); -HG89984 -XP_END_PROTOS - -static char* NET_GetLocalFileFromURL(char *url) -{ - char * finalPath; - XP_ASSERT(strncasecomp(url, "file://", 7) == 0); - finalPath = (char*)XP_ALLOC(strlen(url)); - if (finalPath == NULL) - return NULL; - strcpy(finalPath, url+6+1); - return finalPath; -} - -static char* NET_GetURLFromLocalFile(char *filename) -{ - /* file:///<path>0 */ - char * finalPath = (char*)XP_ALLOC(strlen(filename) + 8 + 1); - if (finalPath == NULL) - return NULL; - finalPath[0] = 0; - strcat(finalPath, "file://"); - strcat(finalPath, filename); - return finalPath; -} - -#endif /* XP_MAC */ - -void -MIME_ConformToStandard (XP_Bool conform_p) -{ - /* - * If we are conforming to mime standard no matter what we set - * for the headers preference when generating mime headers we should - * also conform to the standard. Otherwise, depends the preference - * we set. For now, the headers preference is not accessible from UI. - */ - if (conform_p) - mime_headers_use_quoted_printable_p = TRUE; - else - PREF_GetBoolPref("mail.strictly_mime_headers", - &mime_headers_use_quoted_printable_p); - mime_use_quoted_printable_p = conform_p; -} - -MSG_SendMimeDeliveryState::MSG_SendMimeDeliveryState() -{ - m_pane = NULL; /* Pane to use when loading the URLs */ - m_fe_data = NULL; /* passed in and passed to callback */ - m_fields = NULL; /* Where to send the message once it's done */ - - m_dont_deliver_p = FALSE; - m_deliver_mode = MSG_DeliverNow; - - m_attachments_only_p = FALSE; - m_pre_snarfed_attachments_p = FALSE; - m_digest_p = FALSE; - m_be_synchronous_p = FALSE; - HG54689 - m_attachment1_type = 0; - m_attachment1_encoding = 0; - m_attachment1_encoder_data = NULL; - m_attachment1_body = 0; - m_attachment1_body_length = 0; - m_attachment_count = 0; - m_attachment_pending_count = 0; - m_attachments = NULL; - m_status = 0; - m_message_delivery_done_callback = NULL; - m_attachments_done_callback = NULL; - m_msg_file_name = NULL; - m_msg_file = 0; - m_plaintext = NULL; - m_html_filename = NULL; - -//#ifdef MSG_SEND_MULTIPART_RELATED - m_related_part = NULL; -//#endif -} - -MSG_SendMimeDeliveryState::~MSG_SendMimeDeliveryState() -{ -//#ifdef MSG_SEND_MULTIPART_RELATED -#if 0 - if (m_related_part) - { - // m_related_part (if it exists) gets deleted when - // m_related_saver gets torched. - delete m_related_part; - m_related_part = NULL; - } -#endif -//#endif - FREEIF(m_msg_file_name); -} - -static char *mime_mailto_stream_read_buffer = 0; -static char *mime_mailto_stream_write_buffer = 0; - -static void mime_attachment_url_exit (URL_Struct *url, int status, - MWContext *context); -static void mime_text_attachment_url_exit (PrintSetup *p); -static int mime_sanity_check_fields (const char *from, - const char *reply_to, - const char *to, - const char *cc, - const char *bcc, - const char *fcc, - const char *newsgroups, - const char *followup_to, - const char *subject, - const char *references, - const char *organization, - const char *other_random_headers); -static char *mime_generate_headers (MSG_CompositionFields *fields, - int csid, - MSG_Deliver_Mode deliver_mode); -static char *mime_generate_attachment_headers (const char *type, - const char *encoding, - const char *description, - const char *x_mac_type, - const char *x_mac_creator, - const char *real_name, - const char *base_url, - XP_Bool digest_p, - MSG_DeliverMimeAttachment *ma, - int16 mail_csid); -static char *RFC2231ParmFolding(const char *parmName, const char *charset, - const char *language, const char *parmValue); -#if 0 -static XP_Bool mime_type_conversion_possible (const char *from_type, - const char *to_type); -#endif - -#ifdef XP_UNIX -extern "C" void XFE_InitializePrintSetup (PrintSetup *p); -#endif /* XP_UNIX */ - -extern "C" char * NET_ExplainErrorDetails (int code, ...); - -MSG_DeliverMimeAttachment::MSG_DeliverMimeAttachment() -{ - m_url_string = NULL; - m_url = NULL; - m_done = FALSE; - m_type = NULL; - m_override_type = NULL; - m_override_encoding = NULL; - m_desired_type = NULL; - m_description = NULL; - m_x_mac_type = NULL; - m_x_mac_creator = NULL; - m_encoding = NULL; - m_real_name = NULL; - m_mime_delivery_state = NULL; - m_encoding = NULL; - m_already_encoded_p = FALSE; - m_file_name = NULL; - m_file = 0; -#ifdef XP_MAC - m_ap_filename = NULL; -#endif - HG54897 - m_size = 0; - m_unprintable_count = 0; - m_highbit_count = 0; - m_ctl_count = 0; - m_null_count = 0; - m_current_column = 0; - m_max_column = 0; - m_lines = 0; - - m_encoder_data = NULL; - - XP_MEMSET(&m_print_setup, 0, sizeof(m_print_setup)); - m_graph_progress_started = FALSE; -} - -MSG_DeliverMimeAttachment::~MSG_DeliverMimeAttachment() -{ -} - - -extern "C" char * -mime_make_separator(const char *prefix) -{ - unsigned char rand_buf[13]; - RNG_GenerateGlobalRandomBytes((void *) rand_buf, 12); - return PR_smprintf("------------%s" - "%02X%02X%02X%02X" - "%02X%02X%02X%02X" - "%02X%02X%02X%02X", - prefix, - rand_buf[0], rand_buf[1], rand_buf[2], rand_buf[3], - rand_buf[4], rand_buf[5], rand_buf[6], rand_buf[7], - rand_buf[8], rand_buf[9], rand_buf[10], rand_buf[11]); -} - -XP_Bool -MSG_DeliverMimeAttachment::UseUUEncode_p(void) -{ - XP_Bool returnVal = (m_mime_delivery_state) && - (m_mime_delivery_state->m_pane) && - ((MSG_CompositionPane*)(m_mime_delivery_state->m_pane))-> - GetCompBoolHeader(MSG_UUENCODE_BINARY_BOOL_HEADER_MASK); - - return returnVal; -} - -static void msg_escape_file_name (URL_Struct *m_url) -{ - XP_ASSERT (m_url->address && !XP_STRNCASECMP(m_url->address, "file:", 5)); - if (!m_url->address || - XP_STRNCASECMP(m_url->address, "file:", 5)) return; - - char * new_address = NET_Escape(XP_STRCHR(m_url->address, ':')+1, - URL_PATH); - XP_ASSERT(new_address); - if (!new_address) return; - - XP_FREEIF(m_url->address); - m_url->address = PR_smprintf("file:%s", new_address); - XP_FREEIF(new_address); -} - -// Returns a newly-allocated string containing the MIME type to be used for -// outgoing attachments of the given document type. The way this is determined -// will be platform-specific, based on the real filename of the file (i.e. not the temp filename) -// and some Mac creator info. -// If there is no default specified in the prefs, then this returns NULL. -static char *msg_GetMissionControlledOutgoingMIMEType(const char *filename, - const char */*x_mac_type*/, - const char */*x_mac_creator*/) -{ - if (!filename) - return NULL; - -#ifdef XP_WIN - char *whereDot = XP_STRRCHR(filename, '.'); - if (whereDot) - { - char *extension = whereDot + 1; - if (extension) - { - char *mcOutgoingMimeType = NULL; - char *prefString = PR_smprintf("mime.table.extension.%s.outgoing_default_type",extension); - - if (prefString) - { - PREF_CopyCharPref(prefString, &mcOutgoingMimeType); - XP_FREE(prefString); - } - return mcOutgoingMimeType; - } - else - return NULL; // no file extension - } - else - return NULL; // no file extension - -#endif - - return NULL; -} - - -static char * -RFC2231ParmFolding(const char *parmName, const char *charset, - const char *language, const char *parmValue) -{ -#define MAX_FOLDING_LEN 75 // this is to gurantee the folded line will - // never be greater than 78 = 75 + CRLFLWSP - char *foldedParm = NULL; - char *dupParm = NULL; - int32 parmNameLen = 0; - int32 parmValueLen = 0; - int32 charsetLen = 0; - int32 languageLen = 0; - XP_Bool needEscape = FALSE; - - XP_ASSERT(parmName && *parmName && parmValue && *parmValue); - if (!parmName || !*parmName || !parmValue || !*parmValue) - return NULL; - if ((charset && *charset) || (language && *language)) - needEscape = TRUE; - - if (needEscape) - dupParm = NET_Escape(parmValue, URL_PATH); - else - dupParm = XP_STRDUP(parmValue); - - if (!dupParm) - return NULL; - - parmValueLen = XP_STRLEN(dupParm); - parmNameLen = XP_STRLEN(parmName); - if (needEscape) - parmNameLen += 5; // *=__'__'___ or *[0]*=__'__'__ or *[1]*=___ - else - parmNameLen += 5; // *[0]="___"; - charsetLen = charset ? XP_STRLEN(charset) : 0; - languageLen = language ? XP_STRLEN(language) : 0; - - if ((parmValueLen + parmNameLen + charsetLen + languageLen) < - MAX_FOLDING_LEN) - { - StrAllocCopy(foldedParm, parmName); - if (needEscape) - { - StrAllocCat(foldedParm, "*="); - if (charsetLen) - StrAllocCat(foldedParm, charset); - StrAllocCat(foldedParm, "'"); - if (languageLen) - StrAllocCat(foldedParm, language); - StrAllocCat(foldedParm, "'"); - } - else - StrAllocCat(foldedParm, "=\""); - StrAllocCat(foldedParm, dupParm); - if (!needEscape) - StrAllocCat(foldedParm, "\""); - goto done; - } - else - { - int curLineLen = 0; - int counter = 0; - char digits[32]; - char *start = dupParm; - char *end = NULL; - char tmp = 0; - - while (parmValueLen > 0) - { - curLineLen = 0; - if (counter == 0) - { - StrAllocCopy (foldedParm, parmName); - } - else - { - if (needEscape) - StrAllocCat(foldedParm, "\r\n "); - else - StrAllocCat(foldedParm, ";\r\n "); - StrAllocCat(foldedParm, parmName); - } - XP_SPRINTF(digits, "*%d", counter); - StrAllocCat(foldedParm, digits); - curLineLen += XP_STRLEN(digits); - if (needEscape) - { - StrAllocCat(foldedParm, "*="); - if (counter == 0) - { - if (charsetLen) - StrAllocCat(foldedParm, charset); - StrAllocCat(foldedParm, "'"); - if (languageLen) - StrAllocCat(foldedParm, language); - StrAllocCat (foldedParm, "'"); - curLineLen += charsetLen; - curLineLen += languageLen; - } - } - else - { - StrAllocCat(foldedParm, "=\""); - } - counter++; - curLineLen += parmNameLen; - if (parmValueLen <= MAX_FOLDING_LEN - curLineLen) - end = start + parmValueLen; - else - end = start + (MAX_FOLDING_LEN - curLineLen); - - tmp = 0; - if (*end && needEscape) - { - // check to see if we are in the middle of escaped char - if (*end == '%') - { - tmp = '%'; *end = NULL; - } - else if (end-1 > start && *(end-1) == '%') - { - end -= 1; tmp = '%'; *end = NULL; - } - else if (end-2 > start && *(end-2) == '%') - { - end -= 2; tmp = '%'; *end = NULL; - } - else - { - tmp = *end; *end = NULL; - } - } - else - { - tmp = *end; *end = NULL; - } - StrAllocCat(foldedParm, start); - if (!needEscape) - StrAllocCat(foldedParm, "\""); - - parmValueLen -= (end-start); - if (tmp) - *end = tmp; - start = end; - } - } - -done: - XP_FREEIF(dupParm); - return foldedParm; -} - -int32 -MSG_DeliverMimeAttachment::SnarfAttachment () -{ - int32 status = 0; - XP_ASSERT (! m_done); - - m_file_name = WH_TempName (xpFileToPost, "nsmail"); - if (! m_file_name) - return (MK_OUT_OF_MEMORY); - - m_file = XP_FileOpen (m_file_name, xpFileToPost, XP_FILE_WRITE_BIN); - if (! m_file) - return MK_UNABLE_TO_OPEN_TMP_FILE; /* #### how do we pass file name? */ - - m_url->fe_data = this; - - /* #### m_type is still unknown at this point. - We need to find a way to make the textfe not blow - up on documents that are not text/html! - */ - -#ifdef XP_MAC - if (NET_IsLocalFileURL(m_url->address) && // do we need to add IMAP: to this list? NET_IsLocalFileURL returns FALSE always for IMAP - DMB - (strncasecomp(m_url->address, "mailbox:", 8) != 0)) - { - /* convert the apple file to AppleDouble first, and then patch the - address in the url. - */ - char* src_filename = NET_GetLocalFileFromURL (m_url->address); - - // ### mwelch Only use appledouble if we aren't uuencoding. - if(isMacFile(src_filename) && (! UseUUEncode_p())) - { - - char *separator, tmp[128]; - NET_StreamClass *ad_encode_stream; - - separator = mime_make_separator("ad"); - if (!separator) - return MK_OUT_OF_MEMORY; - - m_ap_filename = WH_TempName (xpFileToPost, "nsmail"); - - ad_encode_stream = (NET_StreamClass *) /* need a prototype */ - fe_MakeAppleDoubleEncodeStream (FO_CACHE_AND_MAIL_TO, - NULL, - m_url, - m_mime_delivery_state->GetContext(), - src_filename, - m_ap_filename, - separator); - - if (ad_encode_stream == NULL) - { - FREEIF(separator); - return MK_OUT_OF_MEMORY; - } - - do { - status = (*ad_encode_stream->put_block) - ((NET_StreamClass *)ad_encode_stream->data_object, NULL, 1024); - } while (status == noErr); - - if (status >= 0) - ad_encode_stream->complete ((NET_StreamClass *)ad_encode_stream->data_object); - else - ad_encode_stream->abort ((NET_StreamClass *)ad_encode_stream->data_object, status); - - XP_FREE(ad_encode_stream); - - if (status < 0) - { - FREEIF(separator); - return status; - } - - XP_FREE(m_url->address); - { - char * temp = WH_FileName(m_ap_filename, xpFileToPost ); - m_url->address = XP_PlatformFileToURL(temp); // jrm 97/02/08 - if (temp) - XP_FREE(temp); - } - /* and also patch the types. - */ - if (m_type) - XP_FREE (m_type); - - XP_SPRINTF(tmp, MULTIPART_APPLEDOUBLE ";\r\n boundary=\"%s\"", - separator); - - FREEIF(separator); - - m_type = XP_STRDUP(tmp); - } - else - { - if (isMacFile(src_filename)) - { - // The only time we want to send just the data fork of a two-fork - // Mac file is if uuencoding has been requested. - XP_ASSERT(UseUUEncode_p()); - if (!((MSG_CompositionPane *) m_mime_delivery_state->m_pane)->m_confirmed_uuencode_p) - { - XP_Bool confirmed = FE_Confirm(m_mime_delivery_state->m_pane->GetContext(), - XP_GetString(MK_MSG_MAC_PROMPT_UUENCODE)); - - // only want to do this once - ((MSG_CompositionPane *) m_mime_delivery_state->m_pane)->m_confirmed_uuencode_p = TRUE; - - if (! confirmed) // cancelled - return MK_INTERRUPTED; - } - } - /* make sure the file type and create are set. */ - char filetype[32]; - FSSpec fsSpec; - FInfo info; - Bool useDefault; - char *macType, *macEncoding; - - my_FSSpecFromPathname(src_filename, &fsSpec); - if (FSpGetFInfo (&fsSpec, &info) == noErr) - { - XP_SPRINTF(filetype, "%X", info.fdType); - m_x_mac_type = XP_STRDUP(filetype); - - XP_SPRINTF(filetype, "%X", info.fdCreator); - m_x_mac_creator = XP_STRDUP(filetype); - if (m_type == NULL || - !strcasecomp (m_type, TEXT_PLAIN)) - { -# define TEXT_TYPE 0x54455854 /* the characters 'T' 'E' 'X' 'T' */ -# define text_TYPE 0x74657874 /* the characters 't' 'e' 'x' 't' */ - - if (info.fdType != TEXT_TYPE && info.fdType != text_TYPE) - { - FE_FileType(m_url->address, &useDefault, - &macType, &macEncoding); - - FREEIF(m_type); - m_type = macType; - } - } - } - - /* don't bother to set the types if we failed in getting the file - info. */ - } - FREEIF(src_filename); - src_filename = 0; - } -#else - - /* if we are attaching a local file make sure the file name are escaped - * properly - */ - if (NET_IsLocalFileURL(m_url->address) && - XP_STRNCASECMP (m_url->address, "file:", 5) == 0) - { - msg_escape_file_name(m_url); - } - -#endif /* XP_MAC */ - - if (m_desired_type && - !strcasecomp (m_desired_type, TEXT_PLAIN) /* #### && - mime_type_conversion_possible (m_type, m_desired_type) */ ) - { - /* Conversion to plain text desired. - */ - m_print_setup.url = m_url; - m_print_setup.carg = this; - m_print_setup.completion = mime_text_attachment_url_exit; - m_print_setup.filename = NULL; - m_print_setup.out = m_file; - m_print_setup.eol = CRLF; - - int32 width = 72; - PREF_GetIntPref("mailnews.wraplength", &width); - if (width == 0) width = 72; - else if (width < 10) width = 10; - else if (width > 30000) width = 30000; - - if (m_mime_delivery_state->m_pane->GetPaneType() == MSG_COMPOSITIONPANE) - { - int lineWidth = ((MSG_CompositionPane *) m_mime_delivery_state->m_pane) - ->GetLineWidth(); - if (lineWidth > width) - width = lineWidth; - } - m_print_setup.width = width; - - m_url->savedData.FormList = 0; -#ifdef _USRDLL - if (! NDLLXL_TranslateText (m_mime_delivery_state->GetContext(), m_url, - &m_print_setup)) - return MK_ATTACHMENT_LOAD_FAILED; -#else - if (! XL_TranslateText (m_mime_delivery_state->GetContext(), m_url, - &m_print_setup)) - return MK_ATTACHMENT_LOAD_FAILED; -#endif - if (m_type) XP_FREE (m_type); - m_type = m_desired_type; - m_desired_type = 0; - if (m_encoding) XP_FREE (m_encoding); - m_encoding = 0; - } -#ifdef XP_UNIX - else if (m_desired_type && - !strcasecomp (m_desired_type, APPLICATION_POSTSCRIPT) /* #### && - mime_type_conversion_possible (m_type, m_desired_type) */ ) - { - SHIST_SavedData saved_data; - - /* Make sure layout saves the current state of form elements. */ - LO_SaveFormData(m_mime_delivery_state->GetContext()); - - /* Hold on to the saved data. */ - XP_MEMCPY(&saved_data, &m_url->savedData, sizeof(SHIST_SavedData)); - - /* Conversion to postscript desired. - */ - XFE_InitializePrintSetup (&m_print_setup); - m_print_setup.url = m_url; - m_print_setup.carg = this; - m_print_setup.completion = mime_text_attachment_url_exit; - m_print_setup.filename = NULL; - m_print_setup.out = m_file; - m_print_setup.eol = CRLF; - XP_MEMSET (&m_url->savedData, 0, sizeof (SHIST_SavedData)); - XL_TranslatePostscript (m_mime_delivery_state->GetContext(), - m_url, &saved_data, - &m_print_setup); - if (m_type) XP_FREE (m_type); - m_type = m_desired_type; - m_desired_type = 0; - if (m_encoding) XP_FREE (m_encoding); - m_encoding = 0; - } -#endif /* XP_UNIX */ - else - { - int get_url_status; - - /* In this case, ignore the status, as that will be handled by - the exit routine. */ - - /* jwz && tj -> we're assuming that it is safe to return the result - of this call as our status result. - - A negative result means that the exit routine was run, either - because the operation completed quickly or failed. - */ - m_url->allow_content_change = FALSE; // don't use modified content - get_url_status = NET_GetURL (m_url, FO_CACHE_AND_MAIL_TO, - m_mime_delivery_state->GetContext(), - mime_attachment_url_exit); - - if (get_url_status < 0) - return MK_ATTACHMENT_LOAD_FAILED; - else - return 0; - } - return status; -} - - -static void -mime_attachment_url_exit (URL_Struct *url, int status, MWContext *context) -{ - MSG_DeliverMimeAttachment *ma = (MSG_DeliverMimeAttachment *) url->fe_data; - XP_ASSERT(ma != NULL); - if (ma != NULL) - ma->UrlExit(url, status, context); -} - - -void MSG_DeliverMimeAttachment::UrlExit(URL_Struct *url, int status, - MWContext *context) -{ - char *error_msg = url->error_msg; - url->error_msg = 0; - url->fe_data = 0; - - XP_ASSERT(m_mime_delivery_state != NULL); - XP_ASSERT(m_mime_delivery_state->GetContext() != NULL); - XP_ASSERT(m_url != NULL); - - if (m_graph_progress_started) - { - m_graph_progress_started = FALSE; - FE_GraphProgressDestroy (m_mime_delivery_state->GetContext(), m_url, - m_url->content_length, m_size); - } - - if (status < 0) - /* If any of the attachment URLs fail, kill them all. */ - NET_InterruptWindow (context); - - /* Close the file, but don't delete it (or the file name.) */ - XP_FileClose (m_file); - m_file = 0; - NET_FreeURLStruct (m_url); - /* I'm pretty sure m_url == url */ - m_url = 0; - url = 0; - - - - if (status < 0) { - if (m_mime_delivery_state->m_status >= 0) - m_mime_delivery_state->m_status = status; - XP_FileRemove(m_file_name, xpFileToPost); - XP_FREEIF(m_file_name); - } - - m_done = TRUE; - - XP_ASSERT (m_mime_delivery_state->m_attachment_pending_count > 0); - m_mime_delivery_state->m_attachment_pending_count--; - - if (status >= 0 && m_mime_delivery_state->m_be_synchronous_p) - { - /* Find the next attachment which has not yet been loaded, - if any, and start it going. - */ - int32 i; - MSG_DeliverMimeAttachment *next = 0; - for (i = 0; i < m_mime_delivery_state->m_attachment_count; i++) - if (!m_mime_delivery_state->m_attachments[i].m_done) - { - next = &m_mime_delivery_state->m_attachments[i]; - break; - } - if (next) - { - int status = next->SnarfAttachment (); - if (status < 0) - { - m_mime_delivery_state->Fail(status, 0); - return; - } - } - } - - if (m_mime_delivery_state->m_attachment_pending_count == 0) - { - /* If this is the last attachment, then either complete the - delivery (if successful) or report the error by calling - the exit routine and terminating the delivery. - */ - if (status < 0) - { - m_mime_delivery_state->Fail(status, error_msg); - error_msg = 0; - } - else - { - m_mime_delivery_state->GatherMimeAttachments (); - } - } - else - { - /* If this is not the last attachment, but it got an error, - then report that error and continue (we won't actually - abort the delivery until all the other pending URLs have - caught up with the NET_InterruptWindow() we did up above.) - */ - if (status < 0 && error_msg) - FE_Alert (context, error_msg); - } - FREEIF (error_msg); -} - -void -MSG_DeliverMimeAttachment::AnalyzeDataChunk(const char *chunk, int32 length) -{ - unsigned char *s = (unsigned char *) chunk; - unsigned char *end = s + length; - for (; s < end; s++) - { - if (*s > 126) - { - m_highbit_count++; - m_unprintable_count++; - } - else if (*s < ' ' && *s != '\t' && *s != CR && *s != LF) - { - m_unprintable_count++; - m_ctl_count++; - if (*s == 0) - m_null_count++; - } - - if (*s == CR || *s == LF) - { - if (s+1 < end && s[0] == CR && s[1] == LF) - s++; - if (m_max_column < m_current_column) - m_max_column = m_current_column; - m_current_column = 0; - m_lines++; - } - else - { - m_current_column++; - } - } -} - -void -MSG_DeliverMimeAttachment::AnalyzeSnarfedFile(void) -{ - char chunk[256]; - XP_File fileHdl = NULL; - int32 numRead = 0; - - if (m_file_name && *m_file_name) - { - fileHdl = XP_FileOpen(m_file_name, xpFileToPost, XP_FILE_READ_BIN); - if (fileHdl) - { - do - { - numRead = XP_FileRead(chunk, 256, fileHdl); - if (numRead > 0) - AnalyzeDataChunk(chunk, numRead); - } - while (numRead > 0); - XP_FileClose(fileHdl); - } - } -} - -static void -mime_text_attachment_url_exit (PrintSetup *p) -{ - MSG_DeliverMimeAttachment *ma = (MSG_DeliverMimeAttachment *) p->carg; - XP_ASSERT (p->url == ma->m_url); - ma->m_url->fe_data = ma; /* grr */ - mime_attachment_url_exit (p->url, p->status, - ma->m_mime_delivery_state->GetContext()); -} - - -PRIVATE unsigned int -mime_attachment_stream_write_ready (NET_StreamClass *) -{ - return MAX_WRITE_READY; -} - -PRIVATE int -mime_attachment_stream_write (NET_StreamClass *stream, const char *block, int32 length) -{ - MSG_DeliverMimeAttachment *ma = (MSG_DeliverMimeAttachment *) stream->data_object; - /* - const unsigned char *s; - const unsigned char *end; - */ - - if (ma->m_mime_delivery_state->m_status < 0) - return ma->m_mime_delivery_state->m_status; - - ma->m_size += length; - - if (!ma->m_graph_progress_started) - { - ma->m_graph_progress_started = TRUE; - FE_GraphProgressInit (ma->m_mime_delivery_state->GetContext(), ma->m_url, - ma->m_url->content_length); - } - - FE_GraphProgress (ma->m_mime_delivery_state->GetContext(), ma->m_url, - ma->m_size, length, ma->m_url->content_length); - - - /* Copy out the content type and encoding if we haven't already. - */ - if (!ma->m_type && ma->m_url->content_type) - { - ma->m_type = XP_STRDUP (ma->m_url->content_type); - - /* If the URL has an encoding, and it's not one of the "null" encodings, - then keep it. */ - if (ma->m_url->content_encoding && - strcasecomp (ma->m_url->content_encoding, ENCODING_7BIT) && - strcasecomp (ma->m_url->content_encoding, ENCODING_8BIT) && - strcasecomp (ma->m_url->content_encoding, ENCODING_BINARY)) - { - if (ma->m_encoding) XP_FREE (ma->m_encoding); - ma->m_encoding = XP_STRDUP (ma->m_url->content_encoding); - ma->m_already_encoded_p = TRUE; - } - - /* Make sure there's a string in the type field. - Note that UNKNOWN_CONTENT_TYPE and APPLICATION_OCTET_STREAM are - different; "octet-stream" means that this document was *specified* - as an anonymous binary type; "unknown" means that we will guess - whether it is text or binary based on its contents. - */ - if (!ma->m_type || !*ma->m_type) - StrAllocCopy (ma->m_type, UNKNOWN_CONTENT_TYPE); - - -#if defined(XP_WIN) || defined(XP_OS2) - /* WinFE tends to spew out bogus internal "zz-" types for things - it doesn't know, so map those to the "real" unknown type. - */ - if (ma->m_type && !strncasecomp (ma->m_type, "zz-", 3)) - StrAllocCopy (ma->m_type, UNKNOWN_CONTENT_TYPE); -#endif /* XP_WIN */ - - /* There are some of "magnus" types in the default - mime.types file that some platforms ship in /usr/local/lib/netscape/. These - types are meaningless to the end user, and the server never returns - them, but they're getting attached to local .cgi files anyway. - Remove them. - */ - if (ma->m_type && !strncasecomp (ma->m_type, "magnus-internal/", 16)) - StrAllocCopy (ma->m_type, UNKNOWN_CONTENT_TYPE); - - - /* kludge. - Unfortunately, the URL_Struct shares the `encoding' slot - amongst the Content-Encoding and Content-Transfer-Encoding headers. - Content-Transfer-Encoding is required to be one of the standard - MIME encodings (x- types are explicitly discourgaged.) But - Content-Encoding can be anything (it's HTTP, not MIME.) - - So, to prevent binary compressed data from getting dumped into the - mail stream, we special case some things here. If the encoding is - "x-compress" or "x-gzip", then that must have come from a - Content-Encoding header, So change the type to application/x-compress - and allow it to be encoded in base64. - - But what if it's something we don't know? In that case, we just - dump it into the mail. For Content-Transfer-Encodings, like for - example, x-uuencode, that's appropriate. But for Content-Encodings, - like for example, x-some-brand-new-binary-compression-algorithm, - that's wrong. - */ - if (ma->m_encoding && - (!strcasecomp (ma->m_encoding, ENCODING_COMPRESS) || - !strcasecomp (ma->m_encoding, ENCODING_COMPRESS2))) - { - StrAllocCopy (ma->m_type, APPLICATION_COMPRESS); - StrAllocCopy (ma->m_encoding, ENCODING_BINARY); - ma->m_already_encoded_p = FALSE; - } - else if (ma->m_encoding && - (!strcasecomp (ma->m_encoding, ENCODING_GZIP) || - !strcasecomp (ma->m_encoding, ENCODING_GZIP2))) - { - StrAllocCopy (ma->m_type, APPLICATION_GZIP); - StrAllocCopy (ma->m_encoding, ENCODING_BINARY); - ma->m_already_encoded_p = FALSE; - } - - /* If the caller has passed in an overriding type for this URL, - then ignore what the netlib guessed it to be. This is so that - we can hand it a file:/some/tmp/file and tell it that it's of - type message/rfc822 without having to depend on that tmp file - having some particular extension. - */ - if (ma->m_override_type) - { - StrAllocCopy (ma->m_type, ma->m_override_type); - if (ma->m_override_encoding) - StrAllocCopy (ma->m_encoding, ma->m_override_encoding); - } - - char *mcType = msg_GetMissionControlledOutgoingMIMEType(ma->m_real_name, ma->m_x_mac_type, ma->m_x_mac_creator); // returns an allocated string - if (mcType) - { - FREEIF(ma->m_type); - ma->m_type = mcType; - } - - } - - /* Cumulatively examine the data that is passing through this stream, - building up a histogram that will be used when deciding which encoding - (if any) should be used. - */ - ma->AnalyzeDataChunk(block, length); /* calling this instead of the previous 20ish lines */ - - /* Write it to the file. - */ - while (length > 0) - { - int32 l; - l = XP_FileWrite (block, length, ma->m_file); - if (l < length) - { - ma->m_mime_delivery_state->m_status = MK_MIME_ERROR_WRITING_FILE; - return ma->m_mime_delivery_state->m_status; - } - block += l; - length -= l; - } - - return 1; -} - - -PRIVATE void -mime_attachment_stream_complete (NET_StreamClass *) -{ - /* Nothing to do here - the URL exit method does our cleanup. */ -} - -PRIVATE void -mime_attachment_stream_abort (NET_StreamClass *stream, int status) -{ - MSG_DeliverMimeAttachment *ma = (MSG_DeliverMimeAttachment *) stream->data_object; - - if (ma->m_mime_delivery_state->m_status >= 0) - ma->m_mime_delivery_state->m_status = status; - - /* Nothing else to do here - the URL exit method does our cleanup. */ -} - - -#ifdef XP_OS2 -//DSR040297 - This looks pretty bad, but some compilers are very type -//strict when it comes to function pointers & the like... So this must be extern & extern "C" to match. -XP_BEGIN_PROTOS -extern NET_StreamClass * -mime_make_attachment_stream (int /*format_out*/, void * /*closure*/, - URL_Struct *url, MWContext *context); -XP_END_PROTOS -extern NET_StreamClass * -#else -static NET_StreamClass * -#endif -mime_make_attachment_stream (int /*format_out*/, void * /*closure*/, - URL_Struct *url, MWContext *context) -{ - NET_StreamClass *stream; - - TRACEMSG(("Setting up attachment stream. Have URL: %s\n", url->address)); - - stream = XP_NEW (NET_StreamClass); - if (stream == NULL) - return (NULL); - - XP_MEMSET (stream, 0, sizeof (NET_StreamClass)); - - stream->name = "attachment stream"; - stream->complete = mime_attachment_stream_complete; - stream->abort = mime_attachment_stream_abort; - stream->put_block = mime_attachment_stream_write; - stream->is_write_ready = mime_attachment_stream_write_ready; - stream->data_object = url->fe_data; - stream->window_id = context; - - TRACEMSG(("Returning stream from mime_make_attachment_stream")); - - return stream; -} - -HG55451 - -#ifndef XP_WIN32 -void -MSG_RegisterConverters (void) -{ - NET_RegisterContentTypeConverter ("*", FO_MAIL_TO, - NULL, mime_make_attachment_stream); - NET_RegisterContentTypeConverter ("*", FO_CACHE_AND_MAIL_TO, - NULL, mime_make_attachment_stream); - - /* FO_MAIL_MESSAGE_TO is treated the same as FO_MAIL_TO -- this format_out - just means that libmime has already gotten its hands on this document - (which happens to be of type message/rfc822 or message/news) and has - altered it in some way (for example, has decrypted it.) */ - NET_RegisterContentTypeConverter ("*", FO_MAIL_MESSAGE_TO, - NULL, mime_make_attachment_stream); - NET_RegisterContentTypeConverter ("*", FO_CACHE_AND_MAIL_MESSAGE_TO, - NULL, mime_make_attachment_stream); - - /* Attachment of mail and news messages happens slightly differently: - Rather than FO_MAIL_TO going in to mime_make_attachment_stream, it - goes into MIME_MessageConverter, which will then open a later stream - with FO_MAIL_MESSAGE_TO -- which is how it eventually gets into - mime_make_attachment_stream, after having gone through libmime. - */ - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_MAIL_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_MAIL_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_CACHE_AND_MAIL_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_CACHE_AND_MAIL_TO, - NULL, MIME_MessageConverter); - - /* Decoders from mimehtml.c for message/rfc822 */ - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_PRESENT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_PRINT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_EMBED, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_QUOTE_MESSAGE, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_QUOTE_HTML_MESSAGE, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_SAVE_AS, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_SAVE_AS_TEXT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_INTERNAL_IMAGE, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_FONT, - NULL, MIME_MessageConverter); - - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_CMDLINE_ATTACHMENTS, - NULL, MIME_ToDraftConverter); - - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_OPEN_DRAFT, - NULL, MIME_ToDraftConverter); -#ifdef XP_UNIX - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_SAVE_AS_POSTSCRIPT, - NULL, MIME_MessageConverter); -#endif /* XP_UNIX */ - - /* Decoders from mimehtml.c for message/news (same as message/rfc822) */ - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_PRESENT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_PRINT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_EMBED, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_QUOTE_MESSAGE, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_QUOTE_HTML_MESSAGE, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_SAVE_AS, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_SAVE_AS_TEXT, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_INTERNAL_IMAGE, - NULL, MIME_MessageConverter); - - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_OPEN_DRAFT, - NULL, MIME_ToDraftConverter); -#ifdef XP_UNIX - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_SAVE_AS_POSTSCRIPT, - NULL, MIME_MessageConverter); -#endif /* XP_UNIX */ - - /* Decoders from mimehtml.c for text/richtext and text/enriched */ - NET_RegisterContentTypeConverter (TEXT_RICHTEXT, FO_PRESENT, - NULL, MIME_RichtextConverter); - NET_RegisterContentTypeConverter (TEXT_RICHTEXT, FO_PRINT, - NULL, MIME_RichtextConverter); - NET_RegisterContentTypeConverter (TEXT_ENRICHED, FO_PRESENT, - NULL, MIME_EnrichedTextConverter); - NET_RegisterContentTypeConverter (TEXT_ENRICHED, FO_PRINT, - NULL, MIME_EnrichedTextConverter); - - /* Decoders from mimejul.c for text/calendar */ -#ifdef MOZ_CALENDAR - NET_RegisterContentTypeConverter (TEXT_CALENDAR, FO_PRESENT, - NULL, MIME_JulianConverter); - NET_RegisterContentTypeConverter (TEXT_CALENDAR, FO_PRINT, - NULL, MIME_JulianConverter); -#endif - - -} - -#endif //XP_WIN32 - - -static XP_Bool -mime_7bit_data_p (const char *string, uint32 size) -{ - const unsigned char *s = (const unsigned char *) string; - const unsigned char *end = s + size; - if (s) - for (; s < end; s++) - if (*s > 0x7F) - return FALSE; - return TRUE; -} - - -static int -mime_sanity_check_fields (const char *from, - const char *reply_to, - const char *to, - const char *cc, - const char *bcc, - const char *fcc, - const char *newsgroups, - const char *followup_to, - const char * /*subject*/, - const char * /*references*/, - const char * /*organization*/, - const char * /*other_random_headers*/) -{ - if (from) while (XP_IS_SPACE (*from)) from++; - if (reply_to) while (XP_IS_SPACE (*reply_to)) reply_to++; - if (to) while (XP_IS_SPACE (*to)) to++; - if (cc) while (XP_IS_SPACE (*cc)) cc++; - if (bcc) while (XP_IS_SPACE (*bcc)) bcc++; - if (fcc) while (XP_IS_SPACE (*fcc)) fcc++; - if (newsgroups) while (XP_IS_SPACE (*newsgroups)) newsgroups++; - if (followup_to) while (XP_IS_SPACE (*followup_to)) followup_to++; - - /* #### check other_random_headers for newline conventions */ - - if (!from || !*from) - return MK_MIME_NO_SENDER; - else if ((!to || !*to) && - (!cc || !*cc) && - (!bcc || !*bcc) && - (!newsgroups || !*newsgroups)) - return MK_MIME_NO_RECIPIENTS; - else - return 0; -} - - -/* Strips whitespace, and expands newlines into newline-tab for use in - mail headers. Returns a new string or 0 (if it would have been empty.) - If addr_p is true, the addresses will be parsed and reemitted as - rfc822 mailboxes. - */ -static char * -mime_fix_header_1 (const char *string, - XP_Bool addr_p, XP_Bool news_p) -{ - char *new_string; - const char *in; - char *out; - int32 i, old_size, new_size; - if (!string || !*string) - return 0; - - if (addr_p) - { - char *n = MSG_ReformatRFC822Addresses (string); - if (n) return n; - } - - old_size = XP_STRLEN (string); - new_size = old_size; - for (i = 0; i < old_size; i++) - if (string[i] == CR || string[i] == LF) - new_size += 2; - - new_string = (char *) XP_ALLOC (new_size + 1); - if (! new_string) - return 0; - - in = string; - out = new_string; - - /* strip leading whitespace. */ - while (XP_IS_SPACE (*in)) - in++; - - /* replace CR, LF, or CRLF with CRLF-TAB. */ - while (*in) - { - if (*in == CR || *in == LF) - { - if (*in == CR && in[1] == LF) - in++; - in++; - *out++ = CR; - *out++ = LF; - *out++ = '\t'; - } - else if (news_p && *in == ',') - { - *out++ = *in++; - /* skip over all whitespace after a comma. */ - while (XP_IS_SPACE (*in)) - in++; - } - else - { - *out++ = *in++; - } - } - *out = 0; - - /* strip trailing whitespace. */ - while (out > in && XP_IS_SPACE (out[-1])) - *out-- = 0; - - /* If we ended up throwing it all away, use 0 instead of "". */ - if (!*new_string) - { - XP_FREE (new_string); - new_string = 0; - } - - return new_string; -} - - -static char * -mime_fix_header (const char *string) -{ - return mime_fix_header_1 (string, FALSE, FALSE); -} - -static char * -mime_fix_addr_header (const char *string) -{ - return mime_fix_header_1 (string, TRUE, FALSE); -} - -static char * -mime_fix_news_header (const char *string) -{ - return mime_fix_header_1 (string, FALSE, TRUE); -} - - -#if 0 -static XP_Bool -mime_type_conversion_possible (const char *from_type, const char *to_type) -{ - if (! to_type) - return TRUE; - - if (! from_type) - return FALSE; - - if (!strcasecomp (from_type, to_type)) - /* Don't run text/plain through the text->html converter. */ - return FALSE; - - if ((!strcasecomp (from_type, INTERNAL_PARSER) || - !strcasecomp (from_type, TEXT_HTML) || - !strcasecomp (from_type, TEXT_MDL)) && - !strcasecomp (to_type, TEXT_PLAIN)) - /* Don't run UNKNOWN_CONTENT_TYPE through the text->html converter - (treat it as text/plain already.) */ - return TRUE; - -#ifdef XP_UNIX - if ((!strcasecomp (from_type, INTERNAL_PARSER) || - !strcasecomp (from_type, TEXT_PLAIN) || - !strcasecomp (from_type, TEXT_HTML) || - !strcasecomp (from_type, TEXT_MDL) || - !strcasecomp (from_type, IMAGE_GIF) || - !strcasecomp (from_type, IMAGE_JPG) || - !strcasecomp (from_type, IMAGE_PJPG) || - !strcasecomp (from_type, IMAGE_XBM) || - !strcasecomp (from_type, IMAGE_XBM2) || - !strcasecomp (from_type, IMAGE_XBM3) || - /* always treat unknown content types as text/plain */ - !strcasecomp (from_type, UNKNOWN_CONTENT_TYPE) - ) && - !strcasecomp (to_type, APPLICATION_POSTSCRIPT)) - return TRUE; -#endif /* XP_UNIX */ - - return FALSE; -} -#endif - - -static XP_Bool -mime_type_requires_b64_p (const char *type) -{ - if (!type || !strcasecomp (type, UNKNOWN_CONTENT_TYPE)) - /* Unknown types don't necessarily require encoding. (Note that - "unknown" and "application/octet-stream" aren't the same.) */ - return FALSE; - - else if (!strncasecomp (type, "image/", 6) || - !strncasecomp (type, "audio/", 6) || - !strncasecomp (type, "video/", 6) || - !strncasecomp (type, "application/", 12)) - { - /* The following types are application/ or image/ types that are actually - known to contain textual data (meaning line-based, not binary, where - CRLF conversion is desired rather than disasterous.) So, if the type - is any of these, it does not *require* base64, and if we do need to - encode it for other reasons, we'll probably use quoted-printable. - But, if it's not one of these types, then we assume that any subtypes - of the non-"text/" types are binary data, where CRLF conversion would - corrupt it, so we use base64 right off the bat. - - The reason it's desirable to ship these as text instead of just using - base64 all the time is mainly to preserve the readability of them for - non-MIME users: if I mail a /bin/sh script to someone, it might not - need to be encoded at all, so we should leave it readable if we can. - - This list of types was derived from the comp.mail.mime FAQ, section - 10.2.2, "List of known unregistered MIME types" on 2-Feb-96. - */ - static const char *app_and_image_types_which_are_really_text[] = { - "application/mac-binhex40", /* APPLICATION_BINHEX */ - "application/pgp", /* APPLICATION_PGP */ - "application/x-pgp-message", /* APPLICATION_PGP2 */ - "application/postscript", /* APPLICATION_POSTSCRIPT */ - "application/x-uuencode", /* APPLICATION_UUENCODE */ - "application/x-uue", /* APPLICATION_UUENCODE2 */ - "application/uue", /* APPLICATION_UUENCODE4 */ - "application/uuencode", /* APPLICATION_UUENCODE3 */ - "application/sgml", - "application/x-csh", - "application/x-javascript", - "application/x-latex", - "application/x-macbinhex40", - "application/x-ns-proxy-autoconfig", - "application/x-www-form-urlencoded", - "application/x-perl", - "application/x-sh", - "application/x-shar", - "application/x-tcl", - "application/x-tex", - "application/x-texinfo", - "application/x-troff", - "application/x-troff-man", - "application/x-troff-me", - "application/x-troff-ms", - "application/x-troff-ms", - "application/x-wais-source", - "image/x-bitmap", - "image/x-pbm", - "image/x-pgm", - "image/x-portable-anymap", - "image/x-portable-bitmap", - "image/x-portable-graymap", - "image/x-portable-pixmap", /* IMAGE_PPM */ - "image/x-ppm", - "image/x-xbitmap", /* IMAGE_XBM */ - "image/x-xbm", /* IMAGE_XBM2 */ - "image/xbm", /* IMAGE_XBM3 */ - "image/x-xpixmap", - "image/x-xpm", - 0 }; - const char **s; - for (s = app_and_image_types_which_are_really_text; *s; s++) - if (!strcasecomp (type, *s)) - return FALSE; - - /* All others must be assumed to be binary formats, and need Base64. */ - return TRUE; - } - - else - return FALSE; -} - -#ifdef XP_OS2 -XP_BEGIN_PROTOS -extern int mime_encoder_output_fn (const char *buf, int32 size, void *closure); -XP_END_PROTOS -#else -static int mime_encoder_output_fn (const char *buf, int32 size, void *closure); -#endif - -/* Given a content-type and some info about the contents of the document, - decide what encoding it should have. - */ -int -MSG_DeliverMimeAttachment::PickEncoding (int16 mail_csid) -{ - // use the boolean so we only have to test for uuencode vs base64 once - XP_Bool needsB64 = FALSE; - - if (m_already_encoded_p) - goto DONE; - - if (mime_type_requires_b64_p (m_type)) - { - /* If the content-type is "image/" or something else known to be binary, - always use base64 (so that we don't get confused by newline - conversions.) - */ - needsB64 = TRUE; - } - else - { - /* Otherwise, we need to pick an encoding based on the contents of - the document. - */ - - XP_Bool encode_p; - - if (m_max_column > 900) - encode_p = TRUE; - else if (mime_use_quoted_printable_p && m_unprintable_count) - encode_p = TRUE; - - else if (m_null_count) /* If there are nulls, we must always encode, - because sendmail will blow up. */ - encode_p = TRUE; -#if 0 - else if (m_ctl_count) /* Should we encode if random other control - characters are present? Probably... */ - encode_p = TRUE; -#endif - else - encode_p = FALSE; - - /* MIME requires a special case that these types never be encoded. - */ - if (!strncasecomp (m_type, "message", 7) || - !strncasecomp (m_type, "multipart", 9)) - { - encode_p = FALSE; - if (m_desired_type && !strcasecomp (m_desired_type, TEXT_PLAIN)) - { - XP_FREE (m_desired_type); - m_desired_type = 0; - } - } - /* If the Mail csid is CS_JIS we force it to use Base64 for attachments (bug#104255). - Use 7 bit for other STATFUL ( e.g. CS_2022_KR) csid. */ - if ((mail_csid == CS_JIS) && - (strcasecomp(m_type, TEXT_HTML) == 0)) - needsB64 = TRUE; - else if((mail_csid & STATEFUL) && - ((strcasecomp(m_type, TEXT_HTML) == 0) || - (strcasecomp(m_type, TEXT_MDL) == 0) || - (strcasecomp(m_type, TEXT_PLAIN) == 0) || - (strcasecomp(m_type, TEXT_RICHTEXT) == 0) || - (strcasecomp(m_type, TEXT_ENRICHED) == 0) || - (strcasecomp(m_type, TEXT_VCARD) == 0) || - (strcasecomp(m_type, TEXT_CSS) == 0) || - (strcasecomp(m_type, TEXT_JSSS) == 0) || - (strcasecomp(m_type, MESSAGE_RFC822) == 0) || - (strcasecomp(m_type, MESSAGE_NEWS) == 0))) - { - needsB64 = TRUE; - } - else if (encode_p && - m_size > 500 && - m_unprintable_count > (m_size / 10)) - /* If the document contains more than 10% unprintable characters, - then that seems like a good candidate for base64 instead of - quoted-printable. - */ - needsB64 = TRUE; - else if (encode_p) - StrAllocCopy (m_encoding, ENCODING_QUOTED_PRINTABLE); - else if (m_highbit_count > 0) - StrAllocCopy (m_encoding, ENCODING_8BIT); - else - StrAllocCopy (m_encoding, ENCODING_7BIT); - } - - if (needsB64) - { - /* - ### mwelch We might have to uuencode instead of - base64 the binary data. - */ - if (UseUUEncode_p()) - StrAllocCopy (m_encoding, ENCODING_UUENCODE); - else - StrAllocCopy (m_encoding, ENCODING_BASE64); - } - - /* Now that we've picked an encoding, initialize the filter. - */ - XP_ASSERT(!m_encoder_data); - if (!strcasecomp(m_encoding, ENCODING_BASE64)) - { - m_encoder_data = MimeB64EncoderInit(mime_encoder_output_fn, - m_mime_delivery_state); - if (!m_encoder_data) return MK_OUT_OF_MEMORY; - } - else if (!strcasecomp(m_encoding, ENCODING_UUENCODE)) - { - char *tailName = NULL; - - if (m_url_string) - { - tailName = XP_STRRCHR(m_url_string, '/'); - if (tailName) - tailName = XP_STRDUP(tailName+1); - } - - if (m_url && !tailName) - { - tailName = XP_STRRCHR(m_url->address, '/'); - if (tailName) - tailName = XP_STRDUP(tailName+1); - } - - m_encoder_data = MimeUUEncoderInit(tailName ? tailName : "", - mime_encoder_output_fn, - m_mime_delivery_state); - XP_FREEIF(tailName); - if (!m_encoder_data) return MK_OUT_OF_MEMORY; - } - else if (!strcasecomp(m_encoding, ENCODING_QUOTED_PRINTABLE)) - { - m_encoder_data = MimeQPEncoderInit(mime_encoder_output_fn, - m_mime_delivery_state); - if (!m_encoder_data) return MK_OUT_OF_MEMORY; - } - else - { - m_encoder_data = 0; - } - - - /* Do some cleanup for documents with unknown content type. - - There are two issues: how they look to MIME users, and how they look to - non-MIME users. - - If the user attaches a "README" file, which has unknown type because it - has no extension, we still need to send it with no encoding, so that it - is readable to non-MIME users. - - But if the user attaches some random binary file, then base64 encoding - will have been chosen for it (above), and in this case, it won't be - immediately readable by non-MIME users. However, if we type it as - text/plain instead of application/octet-stream, it will show up inline - in a MIME viewer, which will probably be ugly, and may possibly have - bad charset things happen as well. - - So, the heuristic we use is, if the type is unknown, then the type is - set to application/octet-stream for data which needs base64 (binary data) - and is set to text/plain for data which didn't need base64 (unencoded or - lightly encoded data.) - */ - DONE: - if (!m_type || !*m_type || !strcasecomp(m_type, UNKNOWN_CONTENT_TYPE)) - { - if (m_already_encoded_p) - StrAllocCopy (m_type, APPLICATION_OCTET_STREAM); - else if (m_encoding && - (!strcasecomp(m_encoding, ENCODING_BASE64) || - !strcasecomp(m_encoding, ENCODING_UUENCODE))) - StrAllocCopy (m_type, APPLICATION_OCTET_STREAM); - else - StrAllocCopy (m_type, TEXT_PLAIN); - } - return 0; -} - - -/* Some types should have a "charset=" parameter, and some shouldn't. - This is what decides. */ -XP_Bool -mime_type_needs_charset (const char *type) -{ - /* Only text types should have charset. */ - if (!type || !*type) - return FALSE; - else if (!strncasecomp (type, "text", 4)) - return TRUE; - else - return FALSE; -} - - -char* -mime_get_stream_write_buffer(void) -{ - if (!mime_mailto_stream_write_buffer) { - mime_mailto_stream_write_buffer = (char *) XP_ALLOC(MIME_BUFFER_SIZE); - } - return mime_mailto_stream_write_buffer; -} - -#define PUSH_STRING(S) \ - do { XP_STRCPY (buffer_tail, S); buffer_tail += XP_STRLEN (S); } while(0) -#define PUSH_NEWLINE() \ - do { *buffer_tail++ = CR; *buffer_tail++ = LF; *buffer_tail = '\0'; } while(0) - - -/* All of the desired attachments have been written to individual temp files, - and we know what's in them. Now we need to make a final temp file of the - actual mail message, containing all of the other files after having been - encoded as appropriate. - */ -int MSG_SendMimeDeliveryState::GatherMimeAttachments () -{ - int32 status, i; - char *headers = 0; - char *separator = 0; - XP_File in_file = 0; - XP_Bool multipart_p = FALSE; - XP_Bool plaintext_is_mainbody_p = FALSE; // only using text converted from HTML? - char *buffer = 0; - char *buffer_tail = 0; - char* error_msg = 0; - int16 win_csid = INTL_DefaultWinCharSetID(GetContext()); - XP_Bool tonews = (m_fields && m_fields->GetNewsgroups() && *m_fields->GetNewsgroups()) ; - // to news is true if we have a m_field and we have a Newsgroup and it is not empty - INTL_MessageSendToNews(tonews); // hack to make Korean Mail/News work correctly - // Look at libi18n/doc_ccc.c for details - // temp solution for bug 30725 - int16 mail_csid = tonews ? - INTL_DefaultNewsCharSetID(win_csid) : - INTL_DefaultMailCharSetID(win_csid); - - MSG_SendPart* toppart = NULL; // The very top most container of the message - // that we are going to send. - MSG_SendPart* mainbody = NULL;// The leaf node that contains the text of the - // message we're going to contain. - MSG_SendPart* maincontainer = NULL;// The direct child of toppart that will - // contain the mainbody. If mainbody is - // the same as toppart, then this is - // also the same. But if mainbody is - // to end up somewhere inside of a - // multipart/alternative or a - // multipart/related, then this is that - // multipart object. - - MSG_SendPart* plainpart = NULL; // If we converted HTML into plaintext, - // the message or child containing the plaintext - // goes here. (Need to use this to determine - // what headers to append/set to the main - // message body.) - char *hdrs = 0; - XP_Bool maincontainerISrelatedpart = FALSE; - - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(GetContext()); - - - status = m_status; - if (status < 0) - goto FAIL; - - if (m_attachments_only_p) - { - /* If we get here, we shouldn't have the "generating a message" cb. */ - XP_ASSERT(!m_dont_deliver_p && - !m_message_delivery_done_callback); - if (m_attachments_done_callback) - { - struct MSG_AttachedFile *attachments; - - XP_ASSERT(m_attachment_count > 0); - if (m_attachment_count <= 0) - { - m_attachments_done_callback (GetContext(), - m_fe_data, 0, 0, - 0); - m_attachments_done_callback = 0; - Clear(); - goto FAIL; - } - - attachments = (struct MSG_AttachedFile *) - XP_ALLOC((m_attachment_count + 1) * sizeof(*attachments)); - - if (!attachments) goto FAILMEM; - XP_MEMSET(attachments, 0, ((m_attachment_count + 1) - * sizeof(*attachments))); - for (i = 0; i < m_attachment_count; i++) - { - MSG_DeliverMimeAttachment *ma = &m_attachments[i]; - -#undef SNARF -#define SNARF(x,y) do { if((y) && *(y) && !(x)) { ((x) = (y)); ((y) = 0); }} \ - while(0) - /* Rather than copying the strings and dealing with allocation - failures, we'll just "move" them into the other struct (this - should be ok since this file uses FREEIF when discarding - the mime_attachment objects.) */ - SNARF(attachments[i].orig_url, ma->m_url_string); - SNARF(attachments[i].file_name, ma->m_file_name); - SNARF(attachments[i].type, ma->m_type); - SNARF(attachments[i].encoding, ma->m_encoding); - SNARF(attachments[i].description, ma->m_description); - SNARF(attachments[i].x_mac_type, ma->m_x_mac_type); - SNARF(attachments[i].x_mac_creator, ma->m_x_mac_creator); -#undef SNARF - HG96484 - attachments[i].size = ma->m_size; - attachments[i].unprintable_count = ma->m_unprintable_count; - attachments[i].highbit_count = ma->m_highbit_count; - attachments[i].ctl_count = ma->m_ctl_count; - attachments[i].null_count = ma->m_null_count; - attachments[i].max_line_length = ma->m_max_column; - - /* Doesn't really matter, but let's not lie about encoding - in case it does someday. */ - if (attachments[i].highbit_count > 0 && - attachments[i].encoding && - !strcasecomp(attachments[i].encoding, ENCODING_7BIT)) - StrAllocCopy (attachments[i].encoding, ENCODING_8BIT); - } - - /* The callback is expected to free the attachments list and all - the strings in it. It's also expected to delete the files! - */ - m_attachments_done_callback (GetContext(), - m_fe_data, 0, 0, - attachments); - m_attachments_done_callback = 0; - Clear(); - } - goto FAIL; - } - - - /* If we get here, we're generating a message, so there shouldn't be an - attachments callback. */ - XP_ASSERT(!m_attachments_done_callback); - - - if (!m_attachment1_type) { - m_attachment1_type = XP_STRDUP(TEXT_PLAIN); - if (!m_attachment1_type) goto FAILMEM; - } - - // If we have a text/html main part, and we need a plaintext attachment, then - // we'll do so now. This is an asynchronous thing, so we'll kick it off and - // count on getting back here when it finishes. - - if (m_plaintext == NULL && - (m_fields->GetForcePlainText() || - m_fields->GetUseMultipartAlternative()) && - m_attachment1_body && XP_STRCMP(m_attachment1_type, TEXT_HTML) == 0) { - m_html_filename = WH_TempName (xpFileToPost, "nsmail"); - if (!m_html_filename) goto FAILMEM; - in_file = XP_FileOpen(m_html_filename, xpFileToPost, XP_FILE_WRITE_BIN); - if (!in_file) { - status = MK_UNABLE_TO_OPEN_TMP_FILE; - goto FAIL; - } - status = XP_FileWrite(m_attachment1_body, m_attachment1_body_length, - in_file); - if (status < int(m_attachment1_body_length)) { - if (status >= 0) { - status = MK_MIME_ERROR_WRITING_FILE; - } - goto FAIL; - } - status = XP_FileClose(in_file); - in_file = NULL; - if (status < 0) goto FAIL; - - m_plaintext = new MSG_DeliverMimeAttachment; - if (!m_plaintext) goto FAILMEM; - m_plaintext->m_mime_delivery_state = this; - char* temp = WH_FileName(m_html_filename, xpFileToPost); - m_plaintext->m_url_string = XP_PlatformFileToURL(temp); - if (temp) XP_FREE(temp); - if (!m_plaintext->m_url_string) goto FAILMEM; - m_plaintext->m_url = - NET_CreateURLStruct (m_plaintext->m_url_string, NET_DONT_RELOAD); - if (!m_plaintext->m_url) goto FAILMEM; - StrAllocCopy(m_plaintext->m_url->content_type, TEXT_HTML); - StrAllocCopy(m_plaintext->m_type, TEXT_HTML); - StrAllocCopy(m_plaintext->m_desired_type, TEXT_PLAIN); - m_attachment_pending_count++; - status = m_plaintext->SnarfAttachment(); - if (status < 0) goto FAIL; - if (m_attachment_pending_count > 0) return 0; - } - - - /* hack to avoid having to allocate memory... */ - buffer = mime_get_stream_write_buffer(); - if (! buffer) goto FAILMEM; - - buffer_tail = buffer; - - XP_ASSERT (m_attachment_pending_count == 0); - - FE_Progress(GetContext(), XP_GetString(MK_MSG_ASSEMBLING_MSG)); - - /* First, open the message file. - */ - m_msg_file_name = WH_TempName (xpFileToPost, "nsmail"); - if (! m_msg_file_name) goto FAILMEM; - m_msg_file = XP_FileOpen (m_msg_file_name, xpFileToPost, - XP_FILE_WRITE_BIN); - if (! m_msg_file) - { - status = MK_UNABLE_TO_OPEN_TMP_FILE; - error_msg = PR_smprintf(XP_GetString(status), m_msg_file_name); - if (!error_msg) status = MK_OUT_OF_MEMORY; - goto FAIL; - } - -#ifdef GENERATE_MESSAGE_ID - if (m_fields->GetMessageId() == NULL) { - m_fields->SetMessageId(msg_generate_message_id ()); - } -#endif /* GENERATE_MESSAGE_ID */ - - mainbody = new MSG_SendPart(this, mail_csid); - if (!mainbody) goto FAILMEM; - - mainbody->SetMainPart(TRUE); - mainbody->SetType(m_attachment1_type ? m_attachment1_type : TEXT_PLAIN); - - XP_ASSERT(mainbody->GetBuffer() == NULL); - status = mainbody->SetBuffer(m_attachment1_body ? m_attachment1_body : " "); - if (status < 0) goto FAIL; - - /* ### mwelch - Determine the encoding of the main message body before we free it. - The proper way to do this should be to test whatever text is in mainbody - just before writing it out, but that will require a fix that is less safe - and takes more memory. */ - if ((mail_csid & STATEFUL) || /* CS_JIS or CS_2022_KR */ - mime_7bit_data_p (m_attachment1_body, - m_attachment1_body_length)) - StrAllocCopy (m_attachment1_encoding, ENCODING_7BIT); - else if (mime_use_quoted_printable_p) - StrAllocCopy (m_attachment1_encoding, ENCODING_QUOTED_PRINTABLE); - else - StrAllocCopy (m_attachment1_encoding, ENCODING_8BIT); - - FREEIF (m_attachment1_body); - - maincontainer = mainbody; - - // If we were given a pre-saved collection of HTML and contained images, - // then we want mainbody to point to the HTML lump therein. - if (m_related_part) - { - // If m_related_part is of type text/html, set both maincontainer - // and mainbody to point to it. If m_related_part is multipart/related, - // however, set mainbody to be the first child within m_related_part. - - // To plug a memory leak, delete the original maincontainer/mainbody. - // - // NOTE: We DO NOT want to do this to the HTML or multipart/related - // MSG_SendParts because they are deleted at the end of message - // delivery by the TapeFileSystem object - // (MSG_MimeRelatedSaver / mhtmlstm.cpp). - delete mainbody; - - // No matter what, maincontainer points to the outermost related part. - maincontainer = m_related_part; - maincontainerISrelatedpart = TRUE; - - const char *relPartType = m_related_part->GetType(); - if (relPartType && !strcmp(relPartType, MULTIPART_RELATED)) - // outer shell is m/related, - // mainbody wants to be the HTML lump within - mainbody = m_related_part->GetChild(0); - else - // outer shell is text/html, - // so mainbody wants to be the same lump - mainbody = maincontainer; - - mainbody->SetMainPart(TRUE); - } - - if (m_plaintext) { - // OK. We have a plaintext version of the main body that we want to - // send instead of or with the text/html. Put it in. - - plainpart = new MSG_SendPart(this, mail_csid); - if (!plainpart) goto FAILMEM; - status = plainpart->SetType(TEXT_PLAIN); - if (status < 0) goto FAIL; - status = plainpart->SetFile(m_plaintext->m_file_name, xpFileToPost); - if (status < 0) goto FAIL; - m_plaintext->AnalyzeSnarfedFile(); // look for 8 bit text, long lines, etc. - m_plaintext->PickEncoding(mail_csid); - hdrs = mime_generate_attachment_headers(m_plaintext->m_type, - m_plaintext->m_encoding, - m_plaintext->m_description, - m_plaintext->m_x_mac_type, - m_plaintext->m_x_mac_creator, - m_plaintext->m_real_name, 0, - m_digest_p, - m_plaintext, - mail_csid); - if (!hdrs) goto FAILMEM; - status = plainpart->SetOtherHeaders(hdrs); - XP_FREE(hdrs); - hdrs = NULL; - if (status < 0) goto FAIL; - - - - if (m_fields->GetUseMultipartAlternative()) { - MSG_SendPart* htmlpart = maincontainer; - maincontainer = new MSG_SendPart(this); - if (!maincontainer) goto FAILMEM; - status = maincontainer->SetType(MULTIPART_ALTERNATIVE); - if (status < 0) goto FAIL; - status = maincontainer->AddChild(plainpart); - if (status < 0) goto FAIL; - status = maincontainer->AddChild(htmlpart); - if (status < 0) goto FAIL; - - // Create the encoder for the plaintext part here, - // because we aren't the main part (attachment1). - // (This, along with the rest of the routine, should really - // be restructured so that no special treatment is given to - // the main body text that came in. Best to put attachment1_text - // etc. into a MSG_SendPart, then reshuffle the parts. Sigh.) - if (!XP_STRCASECMP(m_plaintext->m_encoding, ENCODING_QUOTED_PRINTABLE)) - { - MimeEncoderData *plaintext_enc = MimeQPEncoderInit(mime_encoder_output_fn, this); - if (!plaintext_enc) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - plainpart->SetEncoderData(plaintext_enc); - } - } else { - delete maincontainer; //### mwelch - does this cause a crash?! - if (maincontainerISrelatedpart) - m_related_part = NULL; - maincontainer = plainpart; - mainbody = maincontainer; - FREEIF(m_attachment1_type); - m_attachment1_type = XP_STRDUP(TEXT_PLAIN); - if (!m_attachment1_type) goto FAILMEM; - - /* Override attachment1_encoding here. */ - FREEIF(m_attachment1_encoding); - StrAllocCopy(m_attachment1_encoding, m_plaintext->m_encoding); - - plaintext_is_mainbody_p = TRUE; // converted plaintext is mainbody - } - } - - // ###tw This used to be this more complicated thing, but for now, if it we - // have any attachments, we generate multipart. - //multipart_p = (m_attachment_count > 1 || - // (m_attachment_count == 1 && - // m_attachment1_body_length > 0)); - multipart_p = (m_attachment_count > 0); - - if (multipart_p) { - toppart = new MSG_SendPart(this); - if (!toppart) goto FAILMEM; - status = toppart->SetType(m_digest_p ? MULTIPART_DIGEST : MULTIPART_MIXED); - if (status < 0) goto FAIL; - status = toppart->AddChild(maincontainer); - if (status < 0) goto FAIL; - HG36459 - { - status = toppart->SetBuffer(XP_GetString (MK_MIME_MULTIPART_BLURB)); - if (status < 0) goto FAIL; - } - } else { - toppart = maincontainer; - } - - - /* Write out the message headers. - */ - headers = mime_generate_headers (m_fields, - INTL_GetCSIWinCSID(c), - m_deliver_mode); - if (!headers) goto FAILMEM; - - // ### mwelch - // If we converted HTML into plaintext, the plaintext part (plainpart) - // already has its content-type and content-transfer-encoding - // ("other") headers set. - // - // In the specific case where such a plaintext part is the - // top level message part (iff an HTML message is being sent - // as text only and no other attachments exist) we want to - // preserve the original plainpart headers, since they - // contain accurate transfer encoding and Mac type/creator - // information. - // - // So, in the above case we append the main message headers, - // otherwise we overwrite whatever headers may have existed. - // - /* reordering of headers will happen in MSG_SendPart::Write */ - if ((plainpart) && (plainpart == toppart)) - status = toppart->AppendOtherHeaders(headers); - else - status = toppart->SetOtherHeaders(headers); - XP_FREE(headers); - headers = NULL; - if (status < 0) goto FAIL; - - - /* Set up the first part (user-typed.) For now, do it even if the first - * part is empty; we need to add things to skip it if this part is empty. - * ###tw - */ - - - /* Set up encoder for the first part (message body.) - */ - XP_ASSERT(!m_attachment1_encoder_data); - if (!strcasecomp(m_attachment1_encoding, ENCODING_BASE64)) - { - m_attachment1_encoder_data = - MimeB64EncoderInit(mime_encoder_output_fn, this); - if (!m_attachment1_encoder_data) goto FAILMEM; - } - else if (!strcasecomp(m_attachment1_encoding, - ENCODING_QUOTED_PRINTABLE)) - { - m_attachment1_encoder_data = - MimeQPEncoderInit(mime_encoder_output_fn, this); - if (!m_attachment1_encoder_data) goto FAILMEM; - } - - // ### mwelch - // If we converted HTML into plaintext, the plaintext part - // already has its type/encoding headers set. So, in the specific - // case where such a plaintext part is the main message body - // (iff an HTML message is being sent as text only) - // we want to avoid generating type/encoding/digest headers; - // in all other cases, generate such headers here. - // - // We really want to set up headers as a dictionary of some sort - // so that we need not worry about duplicate header lines. - // - if ((!plainpart) || (plainpart != mainbody)) - { - hdrs = mime_generate_attachment_headers (m_attachment1_type, - m_attachment1_encoding, - 0, 0, 0, 0, 0, - m_digest_p, - NULL, /* no "ma"! */ - mail_csid); - if (!hdrs) goto FAILMEM; - status = mainbody->AppendOtherHeaders(hdrs); - if (status < 0) goto FAIL; - } - - FREEIF(hdrs); - - status = mainbody->SetEncoderData(m_attachment1_encoder_data); - m_attachment1_encoder_data = NULL; - if (status < 0) goto FAIL; - - - /* Set up the subsequent parts. - */ - if (m_attachment_count > 0) - { - char *buffer; - - /* Hack to avoid having to allocate memory... */ - if (! mime_mailto_stream_read_buffer) - mime_mailto_stream_read_buffer = (char *) XP_ALLOC (MIME_BUFFER_SIZE); - buffer = mime_mailto_stream_read_buffer; - if (! buffer) goto FAILMEM; - buffer_tail = buffer; - - for (i = 0; i < m_attachment_count; i++) - { - MSG_DeliverMimeAttachment *ma = &m_attachments[i]; - char *hdrs = 0; - - MSG_SendPart* part = NULL; - - // If at this point we *still* don't have an content-type, then - // we're never going to get one. - if (ma->m_type == NULL) { - ma->m_type = XP_STRDUP(UNKNOWN_CONTENT_TYPE); - if (ma->m_type == NULL) goto FAILMEM; - } - - ma->PickEncoding (mail_csid); - - part = new MSG_SendPart(this); - if (!part) goto FAILMEM; - status = toppart->AddChild(part); - if (status < 0) goto FAIL; - status = part->SetType(ma->m_type); - if (status < 0) goto FAIL; - - hdrs = mime_generate_attachment_headers (ma->m_type, ma->m_encoding, - ma->m_description, - ma->m_x_mac_type, - ma->m_x_mac_creator, - ma->m_real_name, - ma->m_url_string, - m_digest_p, - ma, - mail_csid); - if (!hdrs) goto FAILMEM; - - status = part->SetOtherHeaders(hdrs); - FREEIF(hdrs); - if (status < 0) goto FAIL; - status = part->SetFile(ma->m_file_name, xpFileToPost); - if (status < 0) goto FAIL; - if (ma->m_encoder_data) { - status = part->SetEncoderData(ma->m_encoder_data); - if (status < 0) goto FAIL; - ma->m_encoder_data = NULL; - } - - ma->m_current_column = 0; - - if (ma->m_type && - (!strcasecomp (ma->m_type, MESSAGE_RFC822) || - !strcasecomp (ma->m_type, MESSAGE_NEWS))) { - status = part->SetStripSensitiveHeaders(TRUE); - if (status < 0) goto FAIL; - } - - } - } - - // OK, now actually write the structure we've carefully built up. - status = toppart->Write(); - if (status < 0) goto FAIL; - - if (m_msg_file) - XP_FileClose (m_msg_file); - m_msg_file = 0; - - FE_Progress(GetContext(), XP_GetString(MK_MSG_ASSEMB_DONE_MSG)); - - if (m_dont_deliver_p && - m_message_delivery_done_callback) - { - m_message_delivery_done_callback (GetContext(), - m_fe_data, 0, - XP_STRDUP (m_msg_file_name)); - /* Need to ditch the file name here so that we don't delete the - file, since in this case, the FE needs the file itself. */ - FREEIF (m_msg_file_name); - m_msg_file_name = 0; - m_message_delivery_done_callback = 0; - Clear(); - } - else - { - DeliverMessage(); - } - - // Get rid of all the encoder data and temporary files. - for (i = 0; i < m_attachment_count; i++) { - MSG_DeliverMimeAttachment *ma = &m_attachments[i]; - if (ma->m_encoder_data) { - status = MimeEncoderDestroy(ma->m_encoder_data, FALSE); - ma->m_encoder_data = 0; - if (status < 0) goto FAIL; - } - - if (!m_pre_snarfed_attachments_p) { - if (ma->m_file) { - XP_FileClose(ma->m_file); - ma->m_file = 0; - } - XP_FileRemove(ma->m_file_name, xpFileToPost); - } - XP_FREE (ma->m_file_name); - ma->m_file_name = 0; - } - - - - FAIL: - if (toppart) - delete toppart; - toppart = NULL; - mainbody = NULL; - maincontainer = NULL; - - /* Close off encoder for the first part (message body.) */ - if (m_attachment1_encoder_data) - { - status = MimeEncoderDestroy(m_attachment1_encoder_data, FALSE); - m_attachment1_encoder_data = 0; - if (status < 0) goto FAIL; - } - if (headers) XP_FREE (headers); - if (separator) XP_FREE (separator); - if (in_file) { - XP_FileClose (in_file); - in_file = NULL; - } - - if (status < 0) - { - m_status = status; - Fail (status, error_msg); - } - /* If status is >= 0, then the the next event coming up is posting to - a "mailto:" or "news:" URL; the message_delivery_done_callback will - be called from the exit routine of that URL. */ - - - if (m_plaintext) { - if (m_plaintext->m_file) - XP_FileClose(m_plaintext->m_file); - XP_FileRemove(m_plaintext->m_file_name, xpFileToPost); - XP_FREE(m_plaintext->m_file_name); - m_plaintext->m_file_name = NULL; - delete m_plaintext; - m_plaintext = NULL; - } - - if (m_html_filename) { - XP_FileRemove(m_html_filename, xpFileToPost); - XP_FREE(m_html_filename); - m_html_filename = NULL; - } - - return status; - -FAILMEM: - status = MK_OUT_OF_MEMORY; - goto FAIL; -} - - -#if defined(XP_MAC) && defined(DEBUG) -// Compiler runs out of registers for the debug build. -#pragma global_optimizer on -#pragma optimization_level 4 -#endif // XP_MAC && DEBUG - - -#if defined(XP_MAC) && defined(DEBUG) -#pragma global_optimizer reset -#endif // XP_MAC && DEBUG - - -int -mime_write_message_body (MSG_SendMimeDeliveryState *state, - char *buf, int32 size) -{ - { - if (int32(XP_FileWrite (buf, size, state->m_msg_file)) < size) - { - return MK_MIME_ERROR_WRITING_FILE; - } - else - { - return 0; - } - } -} - - -#ifdef XP_OS2 -extern int -#else -static int -#endif -mime_encoder_output_fn (const char *buf, int32 size, void *closure) -{ - MSG_SendMimeDeliveryState *state = (MSG_SendMimeDeliveryState *) closure; - return mime_write_message_body (state, (char *) buf, size); -} - - -char * -msg_generate_message_id (void) -{ - time_t now = XP_TIME(); - uint32 salt = 0; - const char *host = 0; - const char *from = FE_UsersMailAddress (); - - RNG_GenerateGlobalRandomBytes((void *) &salt, sizeof(salt)); - - if (from) - { - host = XP_STRCHR (from, '@'); - if (host) - { - const char *s; - for (s = ++host; *s; s++) - if (!XP_IS_ALPHA(*s) && !XP_IS_DIGIT(*s) && - *s != '-' && *s != '_' && *s != '.') - { - host = 0; - break; - } - } - } - - if (! host) - /* If we couldn't find a valid host name to use, we can't generate a - valid message ID, so bail, and let NNTP and SMTP generate them. */ - return 0; - - return PR_smprintf("<%lX.%lX@%s>", - (unsigned long) now, (unsigned long) salt, host); -} - -static char * -mime_generate_headers (MSG_CompositionFields *fields, - int csid, - MSG_Deliver_Mode deliver_mode) -{ - int size = 0; - char *buffer = 0, *buffer_tail = 0; - XP_Bool isDraft = deliver_mode == MSG_SaveAsDraft || - deliver_mode == MSG_SaveAsTemplate || - deliver_mode == MSG_QueueForLater; - - XP_ASSERT (fields); - if (!fields) - return NULL; - - /* Multiply by 3 here to make enough room for MimePartII conversion */ - if (fields->GetFrom()) size += 3 * XP_STRLEN (fields->GetFrom()); - if (fields->GetReplyTo()) size += 3 * XP_STRLEN (fields->GetReplyTo()); - if (fields->GetTo()) size += 3 * XP_STRLEN (fields->GetTo()); - if (fields->GetCc()) size += 3 * XP_STRLEN (fields->GetCc()); - if (fields->GetNewsgroups()) size += 3 * XP_STRLEN (fields->GetNewsgroups()); - if (fields->GetFollowupTo()) size += 3 * XP_STRLEN (fields->GetFollowupTo()); - if (fields->GetSubject()) size += 3 * XP_STRLEN (fields->GetSubject()); - if (fields->GetReferences()) size += 3 * XP_STRLEN (fields->GetReferences()); - if (fields->GetOrganization()) size += 3 * XP_STRLEN (fields->GetOrganization()); - if (fields->GetOtherRandomHeaders()) size += 3 * XP_STRLEN (fields->GetOtherRandomHeaders()); - if (fields->GetPriority()) size += 3 * XP_STRLEN (fields->GetPriority()); -#ifdef GENERATE_MESSAGE_ID - if (fields->GetMessageId()) size += XP_STRLEN (fields->GetMessageId()); -#endif /* GENERATE_MESSAGE_ID */ - - /* Add a bunch of space for the static parts of the headers. */ - /* size += 2048; */ - size += 2560; - - buffer = (char *) XP_ALLOC (size); - if (!buffer) - return 0; /* MK_OUT_OF_MEMORY */ - - buffer_tail = buffer; - -#ifdef GENERATE_MESSAGE_ID - if (fields->GetMessageId() && *fields->GetMessageId()) - { - char *convbuf = NULL; - PUSH_STRING ("Message-ID: "); - PUSH_STRING (fields->GetMessageId()); - PUSH_NEWLINE (); - /* MDN request header requires to have MessageID header presented - * in the message in order to - * coorelate the MDN reports to the original message. Here will be - * the right place - */ - if (fields->GetReturnReceipt() && - (fields->GetReturnReceiptType() == 2 || - fields->GetReturnReceiptType() == 3) && - (deliver_mode != MSG_SaveAsDraft && - deliver_mode != MSG_SaveAsTemplate)) - { - int32 receipt_header_type = 0; - - PREF_GetIntPref("mail.receipt.request_header_type", - &receipt_header_type); - // 0 = MDN Disposition-Notification-To: ; 1 = Return-Receipt-To: ; 2 = - // both MDN DNT & RRT headers - if (receipt_header_type == 1) - { - RRT_HEADER: - PUSH_STRING ("Return-Receipt-To: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetFrom(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREEIF(convbuf); - } - else - PUSH_STRING (fields->GetFrom()); - PUSH_NEWLINE (); - } - else - { - PUSH_STRING ("Disposition-Notification-To: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetFrom(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREEIF(convbuf); - } - else - PUSH_STRING (fields->GetFrom()); - PUSH_NEWLINE (); - if (receipt_header_type == 2) - goto RRT_HEADER; - } - } -#ifdef SUPPORT_X_TEMPLATE_NAME - if (deliver_mode == MSG_SaveAsTemplate) - { - PUSH_STRING ("X-Template: "); - if (fields->GetTemplateName()) - { - convbuf = IntlEncodeMimePartIIStr((char *) - fields->GetTemplateName(), - csid, - mime_headers_use_quoted_printable_p); - if (convbuf) - { - PUSH_STRING (convbuf); - XP_FREEIF(convbuf); - } - else - { - PUSH_STRING(fields->GetTemplateName()); - } - } - PUSH_NEWLINE (); - } -#endif /* SUPPORT_X_TEMPLATE_NAME */ - } -#endif /* GENERATE_MESSAGE_ID */ - - { -#if 0 - /* Use strftime() to format the date, then figure out what our local - GMT offset it, and append that (since strftime() can't do that.) - Generate four digit years as per RFC 1123 (superceding RFC 822.) - */ - time_t now = time ((time_t *) 0); - int gmtoffset = XP_LocalZoneOffset(); - strftime (buffer_tail, 100, "Date: %a, %d %b %Y %H:%M:%S ", - localtime (&now)); -#else - int gmtoffset = XP_LocalZoneOffset(); - PRExplodedTime now; - PR_ExplodeTime(PR_Now(), PR_LocalTimeParameters, &now); - - /* Use PR_FormatTimeUSEnglish() to format the date in US English format, - then figure out what our local GMT offset is, and append it (since - PR_FormatTimeUSEnglish() can't do that.) Generate four digit years as - per RFC 1123 (superceding RFC 822.) - */ - PR_FormatTimeUSEnglish(buffer_tail, 100, - "Date: %a, %d %b %Y %H:%M:%S ", - &now); -#endif - - buffer_tail += XP_STRLEN (buffer_tail); - PR_snprintf(buffer_tail, buffer + size - buffer_tail, - "%c%02d%02d" CRLF, - (gmtoffset >= 0 ? '+' : '-'), - ((gmtoffset >= 0 ? gmtoffset : -gmtoffset) / 60), - ((gmtoffset >= 0 ? gmtoffset : -gmtoffset) % 60)); - buffer_tail += XP_STRLEN (buffer_tail); - } - - if (fields->GetFrom() && *fields->GetFrom()) - { - char *convbuf; - PUSH_STRING ("From: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetFrom(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetFrom()); - PUSH_NEWLINE (); - } - - if (fields->GetReplyTo() && *fields->GetReplyTo()) - { - char *convbuf; - PUSH_STRING ("Reply-To: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetReplyTo(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetReplyTo()); - PUSH_NEWLINE (); - } - - if (fields->GetOrganization() && *fields->GetOrganization()) - { - char *convbuf; - PUSH_STRING ("Organization: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetOrganization(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetOrganization()); - PUSH_NEWLINE (); - } - - // X-Sender tag - if (fields->GetOwner()) - { - XP_Bool bUseXSender = FALSE; - - PREF_GetBoolPref("mail.use_x_sender", &bUseXSender); - if (bUseXSender) { - char *convbuf; - char tmpBuffer[256]; - int bufSize = 256; - - *tmpBuffer = 0; - - PUSH_STRING ("X-Sender: "); - - PUSH_STRING("\""); - - PREF_GetCharPref("mail.identity.username", tmpBuffer, &bufSize); - convbuf = IntlEncodeMimePartIIStr((char *)tmpBuffer, csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (tmpBuffer); - - PUSH_STRING("\" <"); - - PREF_GetCharPref("mail.pop_name", tmpBuffer, &bufSize); - convbuf = IntlEncodeMimePartIIStr((char *)tmpBuffer, csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (tmpBuffer); - - PUSH_STRING ("@"); - - PREF_GetCharPref("network.hosts.pop_server", tmpBuffer, &bufSize); - convbuf = IntlEncodeMimePartIIStr((char *)tmpBuffer, csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (tmpBuffer); - - PUSH_STRING(">"); - - convbuf = IntlEncodeMimePartIIStr((char *)tmpBuffer, csid, - mime_headers_use_quoted_printable_p); - - PUSH_NEWLINE (); - } - } - // X-Mozilla-Draft-Info - if (isDraft) { - char *htmlAction = 0; - char *lineWidth = 0; // force plain text hard line break info - - PUSH_STRING(X_MOZILLA_DRAFT_INFO); - PUSH_STRING(": internal/draft; "); - if (fields->GetAttachVCard()) { - PUSH_STRING("vcard=1"); - } - else { - PUSH_STRING("vcard=0"); - } - PUSH_STRING("; "); - if (fields->GetReturnReceipt()) { - char *type = PR_smprintf("%d", (int) fields->GetReturnReceiptType()); - if (type) - { - PUSH_STRING("receipt="); - PUSH_STRING(type); - XP_FREEIF(type); - } - } - else { - PUSH_STRING("receipt=0"); - } - PUSH_STRING("; "); - if (fields->GetBoolHeader(MSG_UUENCODE_BINARY_BOOL_HEADER_MASK)) { - PUSH_STRING("uuencode=1"); - } - else { - PUSH_STRING("uuencode=0"); - } - - htmlAction = PR_smprintf("html=%d", - ((MSG_CompositionPane*)fields->GetOwner())->GetHTMLAction()); - if (htmlAction) - { - PUSH_STRING("; "); - PUSH_STRING(htmlAction); - FREEIF(htmlAction); - } - - lineWidth = PR_smprintf("; linewidth=%d", - ((MSG_CompositionPane*)fields->GetOwner())->GetLineWidth()); - if (lineWidth) - { - PUSH_STRING(lineWidth); - FREEIF(lineWidth); - } - PUSH_NEWLINE (); - } - - PUSH_STRING ("X-Mailer: "); - PUSH_STRING (XP_AppCodeName); - PUSH_STRING (" "); - PUSH_STRING (XP_AppVersion); - PUSH_NEWLINE (); - - /* for Netscape Server, Accept-Language data sent in Mail header */ - char *acceptlang = INTL_GetAcceptLanguage(); - if( (acceptlang != NULL) && ( *acceptlang != '\0') ){ - PUSH_STRING( "X-Accept-Language: " ); - PUSH_STRING( acceptlang ); - PUSH_NEWLINE(); - } - - PUSH_STRING ("MIME-Version: 1.0" CRLF); - - if (fields->GetNewsgroups() && *fields->GetNewsgroups()) - { - /* turn whitespace into a comma list - */ - char *ptr, *ptr2; - char *n2; - char *convbuf; - - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetNewsgroups(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) - n2 = XP_StripLine (convbuf); - else { - ptr = XP_STRDUP(fields->GetNewsgroups()); - if (!ptr) - { - FREEIF(buffer); - return 0; /* MK_OUT_OF_MEMORY */ - } - n2 = XP_StripLine(ptr); - XP_ASSERT(n2 == ptr); /* Otherwise, the XP_FREE below is - gonna choke badly. */ - } - - for(ptr=n2; *ptr != '\0'; ptr++) - { - /* find first non white space */ - while(!XP_IS_SPACE(*ptr) && *ptr != ',' && *ptr != '\0') - ptr++; - - if(*ptr == '\0') - break; - - if(*ptr != ',') - *ptr = ','; - - /* find next non white space */ - ptr2 = ptr+1; - while(XP_IS_SPACE(*ptr2)) - ptr2++; - - if(ptr2 != ptr+1) - XP_STRCPY(ptr+1, ptr2); - } - - PUSH_STRING ("Newsgroups: "); - PUSH_STRING (n2); - XP_FREE (n2); - PUSH_NEWLINE (); - } - - /* #### shamelessly duplicated from above */ - if (fields->GetFollowupTo() && *fields->GetFollowupTo()) - { - /* turn whitespace into a comma list - */ - char *ptr, *ptr2; - char *n2; - char *convbuf; - - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetFollowupTo(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) - n2 = XP_StripLine (convbuf); - else { - ptr = XP_STRDUP(fields->GetFollowupTo()); - if (!ptr) - { - FREEIF(buffer); - return 0; /* MK_OUT_OF_MEMORY */ - } - n2 = XP_StripLine (ptr); - XP_ASSERT(n2 == ptr); /* Otherwise, the XP_FREE below is - gonna choke badly. */ - } - - for(ptr=n2; *ptr != '\0'; ptr++) - { - /* find first non white space */ - while(!XP_IS_SPACE(*ptr) && *ptr != ',' && *ptr != '\0') - ptr++; - - if(*ptr == '\0') - break; - - if(*ptr != ',') - *ptr = ','; - - /* find next non white space */ - ptr2 = ptr+1; - while(XP_IS_SPACE(*ptr2)) - ptr2++; - - if(ptr2 != ptr+1) - XP_STRCPY(ptr+1, ptr2); - } - - PUSH_STRING ("Followup-To: "); - PUSH_STRING (n2); - XP_FREE (n2); - PUSH_NEWLINE (); - } - - if (fields->GetTo() && *fields->GetTo()) - { - char *convbuf; - PUSH_STRING ("To: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetTo(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetTo()); - - PUSH_NEWLINE (); - } - if (fields->GetCc() && *fields->GetCc()) - { - char *convbuf; - PUSH_STRING ("CC: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetCc(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetCc()); - PUSH_NEWLINE (); - } - if (fields->GetSubject() && *fields->GetSubject()) - { - char *convbuf; - PUSH_STRING ("Subject: "); - convbuf = IntlEncodeMimePartIIStr((char *)fields->GetSubject(), csid, - mime_headers_use_quoted_printable_p); - if (convbuf) /* MIME-PartII conversion */ - { - PUSH_STRING (convbuf); - XP_FREE(convbuf); - } - else - PUSH_STRING (fields->GetSubject()); - PUSH_NEWLINE (); - } - if (fields->GetPriority() && *(fields->GetPriority())) - { - char *priority = (char *) fields->GetPriority(); - - if (!strcasestr(priority, "normal")) - { - PUSH_STRING ("X-Priority: "); - /* Important: do not change the order of the - * following if statements - */ - if (strcasestr (priority, "highest")) - PUSH_STRING("1 ("); - else if (strcasestr(priority, "high")) - PUSH_STRING("2 ("); - else if (strcasestr(priority, "lowest")) - PUSH_STRING("5 ("); - else if (strcasestr(priority, "low")) - PUSH_STRING("4 ("); - - PUSH_STRING (priority); - PUSH_STRING(")"); - PUSH_NEWLINE (); - } - } - if (fields->GetReferences() && *fields->GetReferences()) - { - PUSH_STRING ("References: "); - PUSH_STRING (fields->GetReferences()); - PUSH_NEWLINE (); - } - - if (fields->GetOtherRandomHeaders() && *fields->GetOtherRandomHeaders()) - { - /* Assume they already have the right newlines and continuations - and so on. */ - PUSH_STRING (fields->GetOtherRandomHeaders()); - } - - if (buffer_tail > buffer + size - 1) - abort (); - - /* realloc it smaller... */ - buffer = (char*)XP_REALLOC (buffer, buffer_tail - buffer + 1); - - return buffer; -} - - -/* Generate headers for a form post to a mailto: URL. - This lets the URL specify additional headers, but is careful to - ignore headers which would be dangerous. It may modify the URL - (because of CC) so a new URL to actually post to is returned. - */ -int -MIME_GenerateMailtoFormPostHeaders (const char *old_post_url, - const char * /*referer*/, - char **new_post_url_return, - char **headers_return) -{ -#ifdef XP_UNIX - char *from = 0, *to = 0, *cc = 0, *body = 0, *search = 0; - char *extra_headers = 0; - char *s; - XP_Bool subject_p = FALSE; - XP_Bool sign_p = FALSE; - HG29292 - char *rest; - int status = 0; - MSG_CompositionFields *fields = NULL; - static const char *forbidden_headers[] = { - "Apparently-To", - "BCC", - "Content-Encoding", - CONTENT_LENGTH, - "Content-Transfer-Encoding", - "Content-Type", - "Date", - "Distribution", - "FCC", - "Followup-To", - "From", - "Lines", - "MIME-Version", - "Message-ID", - "Newsgroups", - "Organization", - "Reply-To", - "Sender", - X_MOZILLA_STATUS, - X_MOZILLA_STATUS2, - X_MOZILLA_NEWSHOST, - X_UIDL, - "XRef", - 0 }; - - from = MIME_MakeFromField (); - if (!from) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - to = NET_ParseURL (old_post_url, GET_PATH_PART); - if (!to) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - if (!*to) - { - status = MK_MIME_NO_RECIPIENTS; /* rb -1; */ - goto FAIL; - } - - search = NET_ParseURL (old_post_url, GET_SEARCH_PART); - - rest = search; - if (rest && *rest == '?') - { - /* start past the '?' */ - rest++; - rest = XP_STRTOK (rest, "&"); - while (rest && *rest) - { - char *token = rest; - char *value = 0; - char *eq; - - rest = XP_STRTOK (0, "&"); - - eq = XP_STRCHR (token, '='); - if (eq) - { - value = eq+1; - *eq = 0; - } - - if (!strcasecomp (token, "subject")) - subject_p = TRUE; - - if (value) - /* Don't allow newlines or control characters in the value. */ - for (s = value; *s; s++) - if (*s < ' ' && *s != '\t') - *s = ' '; - - if (!strcasecomp (token, "to")) - { - if (to && *to) - { - StrAllocCat (to, ", "); - StrAllocCat (to, value); - } - else - { - StrAllocCopy (to, value); - } - } - else if (!strcasecomp (token, "cc")) - { - if (cc && *cc) - { - StrAllocCat (cc, ", "); - StrAllocCat (cc, value); - } - else - { - StrAllocCopy (cc, value); - } - } - else if (!strcasecomp (token, "body")) - { - if (body && *body) - { - StrAllocCat (body, "\n"); - StrAllocCat (body, value); - } - else - { - StrAllocCopy (body, value); - } - } - HG28926 - else if (!strcasecomp (token, "sign") || - !strcasecomp (token, "signed")) - { - sign_p = (!strcasecomp(value, "true") || - !strcasecomp(value, "yes")); - } - else - { - const char **fh = forbidden_headers; - XP_Bool ok = TRUE; - while (*fh) - if (!strcasecomp (token, *fh++)) - { - ok = FALSE; - break; - } - if (ok) - { - XP_Bool upper_p = FALSE; - char *s; - for (s = token; *s; s++) - { - if (*s >= 'A' && *s <= 'Z') - upper_p = TRUE; - else if (*s <= ' ' || *s >= '~' || *s == ':') - goto NOT_OK; /* bad character in header! */ - } - if (!upper_p && *token >= 'a' && *token <= 'z') - *token -= ('a' - 'A'); - - StrAllocCat (extra_headers, token); - StrAllocCat (extra_headers, ": "); - if (value) - StrAllocCat (extra_headers, value); - StrAllocCat (extra_headers, CRLF); - NOT_OK: ; - } - } - } - } - - if (!subject_p) - { - /* If the URL didn't provide a subject, we will. */ - StrAllocCat (extra_headers, "Subject: Form posted from "); - XP_ASSERT (XP_AppCodeName); - StrAllocCat (extra_headers, XP_AppCodeName); - StrAllocCat (extra_headers, CRLF); - } - - /* Note: the `sign', and `body' parameters are currently - ignored in mailto form submissions. */ - - *new_post_url_return = 0; - - fields = MSG_CreateCompositionFields(from, 0, to, cc, 0, 0, 0, 0, - FE_UsersOrganization(), 0, 0, - extra_headers, 0, 0, 0); - if (!fields) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - fields->SetDefaultBody(body); - - *headers_return = mime_generate_headers (fields, 0, MSG_DeliverNow); - if (*headers_return == 0) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - StrAllocCat ((*new_post_url_return), "mailto:"); - if (to) - StrAllocCat ((*new_post_url_return), to); - if (to && cc) - StrAllocCat ((*new_post_url_return), ","); - if (cc) - StrAllocCat ((*new_post_url_return), cc); - - FAIL: - FREEIF (from); - FREEIF (to); - FREEIF (cc); - FREEIF (body); - FREEIF (search); - FREEIF (extra_headers); - if (fields) - MSG_DestroyCompositionFields(fields); - - return status; -#else - return 0; - XP_ASSERT(FALSE); -#endif //XP_UNIX -} - - - -static char * -mime_generate_attachment_headers (const char *type, const char *encoding, - const char *description, - const char *x_mac_type, - const char *x_mac_creator, - const char *real_name, - const char *base_url, - XP_Bool /*digest_p*/, - MSG_DeliverMimeAttachment * /*ma*/, - int16 mail_csid) -{ - char *buffer = (char *) XP_ALLOC (2048); - char *buffer_tail = buffer; - char charset[30]; - - if (! buffer) - return 0; /* MK_OUT_OF_MEMORY */ - - XP_ASSERT (encoding); - charset[0] = 0; - - PUSH_STRING ("Content-Type: "); - PUSH_STRING (type); - - if (mime_type_needs_charset (type)) - { - - /* push 7bit encoding out based on current default codeset */ - INTL_CharSetIDToName (mail_csid, charset); - - /* If the characters are all 7bit, then it's better (and true) to - claim the charset to be US-ASCII rather than Latin1. Should we - do this all the time, for all charsets? I'm not sure. But we - should definitely do it for Latin1. */ - if (encoding && - !strcasecomp (encoding, "7bit") && - !strcasecomp (charset, "iso-8859-1")) - XP_STRCPY (charset, "us-ascii"); - - // If csid is JIS and and type is HTML - // then no charset to be specified (apply base64 instead) - // in order to avoid mismatch META_TAG (bug#104255). - if ((mail_csid != CS_JIS) || - (strcasecomp(type, TEXT_HTML) != 0) || - (strcasecomp(encoding, ENCODING_BASE64) != 0)) - { - PUSH_STRING ("; charset="); - PUSH_STRING (charset); - } - } - - if (x_mac_type && *x_mac_type) - { - PUSH_STRING ("; x-mac-type=\""); - PUSH_STRING (x_mac_type); - PUSH_STRING ("\""); - } - if (x_mac_creator && *x_mac_creator) - { - PUSH_STRING ("; x-mac-creator=\""); - PUSH_STRING (x_mac_creator); - PUSH_STRING ("\""); - } - - int32 parmFolding = 0; - PREF_GetIntPref("mail.strictly_mime.parm_folding", &parmFolding); - -#ifdef EMIT_NAME_IN_CONTENT_TYPE - if (real_name && *real_name) - { - if (parmFolding == 0 || parmFolding == 1) - { - PUSH_STRING (";\r\n name=\""); - PUSH_STRING (real_name); - PUSH_STRING ("\""); - } - else // if (parmFolding == 2) - { - char *rfc2231Parm = RFC2231ParmFolding("name", charset, - INTL_GetAcceptLanguage(), real_name); - if (rfc2231Parm) - { - PUSH_STRING(";\r\n "); - PUSH_STRING(rfc2231Parm); - XP_FREE(rfc2231Parm); - } - } - } -#endif /* EMIT_NAME_IN_CONTENT_TYPE */ - - PUSH_NEWLINE (); - - PUSH_STRING ("Content-Transfer-Encoding: "); - PUSH_STRING (encoding); - PUSH_NEWLINE (); - - if (description && *description) - { - char *s = mime_fix_header (description); - if (s) - { - PUSH_STRING ("Content-Description: "); - PUSH_STRING (s); - PUSH_NEWLINE (); - XP_FREE(s); - } - } - - if (real_name && *real_name) - { - char *period = XP_STRRCHR(real_name, '.'); - int32 pref_content_disposition = 0; - - PREF_GetIntPref("mail.content_disposition_type", - &pref_content_disposition); - - PUSH_STRING ("Content-Disposition: "); - - if (pref_content_disposition == 1) - PUSH_STRING ("attachment"); - else if (pref_content_disposition == 2 && - (!strcasecomp(type, TEXT_PLAIN) || - (period && !strcasecomp(period, ".txt")))) - PUSH_STRING("attachment"); - /* If this document is an anonymous binary file or a vcard, - then always show it as an attachment, never inline. */ - else if (!strcasecomp(type, APPLICATION_OCTET_STREAM) || - !strcasecomp(type, vCardMimeFormat)) - PUSH_STRING ("attachment"); - else - PUSH_STRING ("inline"); - - if (parmFolding == 0 || parmFolding == 1) - { - PUSH_STRING (";\r\n filename=\""); - PUSH_STRING (real_name); - PUSH_STRING ("\"" CRLF); - } - else // if (parmFolding == 2) - { - char *rfc2231Parm = RFC2231ParmFolding("name", charset, - INTL_GetAcceptLanguage(), real_name); - if (rfc2231Parm) - { - PUSH_STRING(";\r\n "); - PUSH_STRING(rfc2231Parm); - PUSH_NEWLINE (); - XP_FREE(rfc2231Parm); - } - } - } - else if (type && - (!strcasecomp (type, MESSAGE_RFC822) || - !strcasecomp (type, MESSAGE_NEWS))) - { - PUSH_STRING ("Content-Disposition: inline" CRLF); - } - -#ifdef GENERATE_CONTENT_BASE - /* If this is an HTML document, and we know the URL it originally - came from, write out a Content-Base header. */ - if (type && - (!strcasecomp (type, TEXT_HTML) || - !strcasecomp (type, TEXT_MDL)) && - base_url && *base_url) - { - int32 col = 0; - const char *s = base_url; - const char *colon = XP_STRCHR (s, ':'); - XP_Bool useContentLocation = FALSE; /* rhp - add this */ - - if (!colon) goto GIVE_UP_ON_CONTENT_BASE; /* malformed URL? */ - - /* Don't emit a content-base that points to (or into) a news or - mail message. */ - if (!strncasecomp (s, "news:", 5) || - !strncasecomp (s, "snews:", 6) || - !strncasecomp (s, "IMAP:", 5) || - !strncasecomp (s, "mailbox:", 8)) - goto GIVE_UP_ON_CONTENT_BASE; - - /* rhp - Put in a pref for using Content-Location instead of Content-Base. - This will get tweaked to default to true in 5.0 - */ - PREF_GetBoolPref("mail.use_content_location_on_send", &useContentLocation); - - if (useContentLocation) - PUSH_STRING ("Content-Location: \""); - else - PUSH_STRING ("Content-Base: \""); - /* rhp - Pref for Content-Location usage */ - -/* rhp: this is to work with the Content-Location stuff */ -CONTENT_LOC_HACK: - - while (*s != 0 && *s != '#') - { - const char *ot = buffer_tail; - - /* URLs must be wrapped at 40 characters or less. */ - if (col >= 38) - { - PUSH_STRING(CRLF "\t"); - col = 0; - } - - if (*s == ' ') PUSH_STRING("%20"); - else if (*s == '\t') PUSH_STRING("%09"); - else if (*s == '\n') PUSH_STRING("%0A"); - else if (*s == '\r') PUSH_STRING("%0D"); - else - { - *buffer_tail++ = *s; - *buffer_tail = '\0'; - } - s++; - col += (buffer_tail - ot); - } - PUSH_STRING ("\"" CRLF); - - /* rhp: this is to try to get around this fun problem with Content-Location */ - if (!useContentLocation) - { - PUSH_STRING ("Content-Location: \""); - s = base_url; - col = 0; - useContentLocation = TRUE; - goto CONTENT_LOC_HACK; - } - /* rhp: this is to try to get around this fun problem with Content-Location */ - - GIVE_UP_ON_CONTENT_BASE: - ; - } -#endif /* GENERATE_CONTENT_BASE */ - - - /* realloc it smaller... */ - buffer = (char*) XP_REALLOC (buffer, buffer_tail - buffer + 1); - - return buffer; -} - - -void MSG_SendMimeDeliveryState::Fail (int failure_code, char *error_msg) -{ - if (m_message_delivery_done_callback) - { - if (failure_code < 0 && !error_msg) - error_msg = NET_ExplainErrorDetails(failure_code, 0, 0, 0, 0); - m_message_delivery_done_callback (GetContext(), m_fe_data, - failure_code, error_msg); - FREEIF(error_msg); /* #### Is there a memory leak here? Shouldn't - this free be outside the if? */ - } - else if (m_attachments_done_callback) - { - if (failure_code < 0 && !error_msg) - error_msg = NET_ExplainErrorDetails(failure_code, 0, 0, 0, 0); - - /* mime_free_message_state will take care of cleaning up the - attachment files and attachment structures */ - m_attachments_done_callback (GetContext(), - m_fe_data, failure_code, - error_msg, 0); - - FREEIF(error_msg); /* #### Is there a memory leak here? Shouldn't - this free be outside the if? */ - } - - m_message_delivery_done_callback = 0; - m_attachments_done_callback = 0; - - Clear(); -} - -/* Given a string, convert it to 'qtext' (quoted text) for RFC822 header purposes. */ -static char * -msg_make_filename_qtext(const char *srcText, XP_Bool stripCRLFs) -{ - /* newString can be at most twice the original string (every char quoted). */ - char *newString = (char *) XP_ALLOC(XP_STRLEN(srcText)*2 + 1); - if (!newString) return NULL; - - const char *s = srcText; - const char *end = srcText + XP_STRLEN(srcText); - char *d = newString; - - while(*s) - { - /* Put backslashes in front of existing backslashes, or double quote - characters. - If stripCRLFs is true, don't write out CRs or LFs. Otherwise, - write out a backslash followed by the CR but not - linear-white-space. - We might already have quoted pair of "\ " or "\\t" skip it. - */ - if (*s == '\\' || *s == '"' || - (!stripCRLFs && - (*s == CR && (*(s+1) != LF || - (*(s+1) == LF && (s+2) < end && !XP_IS_SPACE(*(s+2))))))) - *d++ = '\\'; - - if (*s == CR) - { - if (stripCRLFs && *(s+1) == LF && (s+2) < end && XP_IS_SPACE(*(s+2))) - s += 2; // skip CRLFLWSP - } - else - { - *d++ = *s; - } - s++; - } - *d = 0; - - return newString; -} - -/* Rip apart the URL and extract a reasonable value for the `real_name' slot. - */ -static void -msg_pick_real_name (MSG_DeliverMimeAttachment *attachment, int16 csid) -{ - const char *s, *s2; - char *s3; - char *url; - - if (attachment->m_real_name) - return; - - url = attachment->m_url_string; - - /* Perhaps the MIME parser knows a better name than the URL itself? - This can happen when one attaches a MIME part from one message - directly into another message. - - ### mwelch Note that this function simply duplicates and returns an existing - MIME header, so we don't need to process it. */ - attachment->m_real_name = - MimeGuessURLContentName(attachment->m_mime_delivery_state->GetContext(), - url); - if (attachment->m_real_name) - return; - - /* Otherwise, extract a name from the URL. */ - - s = url; - s2 = XP_STRCHR (s, ':'); - if (s2) s = s2 + 1; - /* If we know the URL doesn't have a sensible file name in it, - don't bother emitting a content-disposition. */ - if (!strncasecomp (url, "news:", 5) || - !strncasecomp (url, "snews:", 6) || - !strncasecomp (url, "IMAP:", 5) || - !strncasecomp (url, "mailbox:", 8)) - return; - - /* Take the part of the file name after the last / or \ */ - s2 = XP_STRRCHR (s, '/'); - if (s2) s = s2+1; - s2 = XP_STRRCHR (s, '\\'); - - if (csid & MULTIBYTE) - { - // We don't want to truncate the file name in case of the double - // byte file name - while ( s2 != NULL && - s2 > s && - INTL_IsLeadByte(csid, *(s2-1))) - { - s3 = (char *) s2; - *s3 = 0; - s2 = XP_STRRCHR(s, '\\'); - *s3 = '\\'; - } - } - - if (s2) s = s2+1; - /* Copy it into the attachment struct. */ - StrAllocCopy (attachment->m_real_name, s); - /* Now trim off any named anchors or search data. */ - s3 = XP_STRCHR (attachment->m_real_name, '?'); - if (s3) *s3 = 0; - s3 = XP_STRCHR (attachment->m_real_name, '#'); - if (s3) *s3 = 0; - - /* Now lose the %XX */ - NET_UnEscape (attachment->m_real_name); - - int32 parmFolding = 0; - PREF_GetIntPref("mail.strictly_mime.parm_folding", &parmFolding); - - if (parmFolding == 0 || parmFolding == 1) - { - /* Try to MIME-2 encode the filename... */ - char *mime2Name = IntlEncodeMimePartIIStr(attachment->m_real_name, csid, - mime_headers_use_quoted_printable_p); - if (mime2Name && (mime2Name != attachment->m_real_name)) - { - XP_FREE(attachment->m_real_name); - attachment->m_real_name = mime2Name; - } - - /* ... and then put backslashes before special characters (RFC 822 tells us - to). */ - - char *qtextName = NULL; - - qtextName = msg_make_filename_qtext(attachment->m_real_name, - (parmFolding == 0 ? TRUE : FALSE)); - - if (qtextName) - { - XP_FREE(attachment->m_real_name); - attachment->m_real_name = qtextName; - } - } - - /* Now a special case for attaching uuencoded files... - - If we attach a file "foo.txt.uu", we will send it out with - Content-Type: text/plain; Content-Transfer-Encoding: x-uuencode. - When saving such a file, a mail reader will generally decode it first - (thus removing the uuencoding.) So, let's make life a little easier by - removing the indication of uuencoding from the file name itself. (This - will presumably make the file name in the Content-Disposition header be - the same as the file name in the "begin" line of the uuencoded data.) - - However, since there are mailers out there (including earlier versions of - Mozilla) that will use "foo.txt.uu" as the file name, we still need to - cope with that; the code which copes with that is in the MIME parser, in - libmime/mimei.c. - */ - if (attachment->m_already_encoded_p && - attachment->m_encoding) - { - char *result = attachment->m_real_name; - int32 L = XP_STRLEN(result); - const char **exts = 0; - - /* #### hack - I'd like to ask the mime.types file, "what extensions correspond - to obj->encoding (which happens to be "x-uuencode") but doing that - in a non-sphagetti way would require brain surgery. So, since - currently uuencode is the only content-transfer-encoding which we - understand which traditionally has an extension, we just special- - case it here! - - Note that it's special-cased in a similar way in libmime/mimei.c. - */ - if (!strcasecomp(attachment->m_encoding, ENCODING_UUENCODE) || - !strcasecomp(attachment->m_encoding, ENCODING_UUENCODE2) || - !strcasecomp(attachment->m_encoding, ENCODING_UUENCODE3) || - !strcasecomp(attachment->m_encoding, ENCODING_UUENCODE4)) - { - static const char *uue_exts[] = { "uu", "uue", 0 }; - exts = uue_exts; - } - - while (exts && *exts) - { - const char *ext = *exts; - int32 L2 = XP_STRLEN(ext); - if (L > L2 + 1 && /* long enough */ - result[L - L2 - 1] == '.' && /* '.' in right place*/ - !strcasecomp(ext, result + (L - L2))) /* ext matches */ - { - result[L - L2 - 1] = 0; /* truncate at '.' and stop. */ - break; - } - exts++; - } - } -} - - -int -MSG_SendMimeDeliveryState::HackAttachments( - const struct MSG_AttachmentData *attachments, - const struct MSG_AttachedFile *preloaded_attachments) -{ - INTL_CharSetInfo c = LO_GetDocumentCharacterSetInfo(GetContext()); - if (preloaded_attachments) XP_ASSERT(!attachments); - if (attachments) XP_ASSERT(!preloaded_attachments); - - if (preloaded_attachments && preloaded_attachments[0].orig_url) - { - /* These are attachments which have already been downloaded to tmp files. - We merely need to point the internal attachment data at those tmp - files. - */ - int32 i; - - m_pre_snarfed_attachments_p = TRUE; - - m_attachment_count = 0; - while (preloaded_attachments[m_attachment_count].orig_url) - m_attachment_count++; - - m_attachments = (MSG_DeliverMimeAttachment *) - new MSG_DeliverMimeAttachment[m_attachment_count]; - - if (! m_attachments) - return MK_OUT_OF_MEMORY; - - for (i = 0; i < m_attachment_count; i++) - { - m_attachments[i].m_mime_delivery_state = this; - /* These attachments are already "snarfed". */ - m_attachments[i].m_done = TRUE; - XP_ASSERT (preloaded_attachments[i].orig_url); - StrAllocCopy (m_attachments[i].m_url_string, - preloaded_attachments[i].orig_url); - StrAllocCopy (m_attachments[i].m_type, - preloaded_attachments[i].type); - StrAllocCopy (m_attachments[i].m_description, - preloaded_attachments[i].description); - StrAllocCopy (m_attachments[i].m_real_name, - preloaded_attachments[i].real_name); - StrAllocCopy (m_attachments[i].m_x_mac_type, - preloaded_attachments[i].x_mac_type); - StrAllocCopy (m_attachments[i].m_x_mac_creator, - preloaded_attachments[i].x_mac_creator); - StrAllocCopy (m_attachments[i].m_encoding, - preloaded_attachments[i].encoding); - StrAllocCopy (m_attachments[i].m_file_name, - preloaded_attachments[i].file_name); - - m_attachments[i].m_size = preloaded_attachments[i].size; - m_attachments[i].m_unprintable_count = - preloaded_attachments[i].unprintable_count; - m_attachments[i].m_highbit_count = - preloaded_attachments[i].highbit_count; - m_attachments[i].m_ctl_count = preloaded_attachments[i].ctl_count; - m_attachments[i].m_null_count = - preloaded_attachments[i].null_count; - m_attachments[i].m_max_column = - preloaded_attachments[i].max_line_length; - - /* If the attachment has an encoding, and it's not one of - the "null" encodings, then keep it. */ - if (m_attachments[i].m_encoding && - strcasecomp (m_attachments[i].m_encoding, ENCODING_7BIT) && - strcasecomp (m_attachments[i].m_encoding, ENCODING_8BIT) && - strcasecomp (m_attachments[i].m_encoding, ENCODING_BINARY)) - m_attachments[i].m_already_encoded_p = TRUE; - - msg_pick_real_name(&m_attachments[i], INTL_GetCSIWinCSID(c)); - } - } - else if (attachments && attachments[0].url) - { - /* These are attachments which have already been downloaded to tmp files. - We merely need to point the internal attachment data at those tmp - files. We will delete the tmp files as we attach them. - */ - int32 i; - int mailbox_count = 0, news_count = 0; - - m_attachment_count = 0; - while (attachments[m_attachment_count].url) - m_attachment_count++; - - m_attachments = (MSG_DeliverMimeAttachment *) - new MSG_DeliverMimeAttachment[m_attachment_count]; - - if (! m_attachments) - return MK_OUT_OF_MEMORY; - - for (i = 0; i < m_attachment_count; i++) - { - m_attachments[i].m_mime_delivery_state = this; - XP_ASSERT (attachments[i].url); - StrAllocCopy (m_attachments[i].m_url_string, - attachments[i].url); - StrAllocCopy (m_attachments[i].m_override_type, - attachments[i].real_type); - StrAllocCopy (m_attachments[i].m_override_encoding, - attachments[i].real_encoding); - StrAllocCopy (m_attachments[i].m_desired_type, - attachments[i].desired_type); - StrAllocCopy (m_attachments[i].m_description, - attachments[i].description); - StrAllocCopy (m_attachments[i].m_real_name, - attachments[i].real_name); - StrAllocCopy (m_attachments[i].m_x_mac_type, - attachments[i].x_mac_type); - StrAllocCopy (m_attachments[i].m_x_mac_creator, - attachments[i].x_mac_creator); - StrAllocCopy (m_attachments[i].m_encoding, "7bit"); - m_attachments[i].m_url = - NET_CreateURLStruct (m_attachments[i].m_url_string, - NET_DONT_RELOAD); - - // real name is set in the case of vcard so don't change it. - // m_attachments[i].m_real_name = 0; - - /* Count up attachments which are going to come from mail folders - and from NNTP servers. */ - if (strncasecomp(m_attachments[i].m_url_string, "mailbox:",8) || - strncasecomp(m_attachments[i].m_url_string, "IMAP:",5)) - mailbox_count++; - else if (strncasecomp(m_attachments[i].m_url_string, "news:",5) || - strncasecomp(m_attachments[i].m_url_string, "snews:",6)) - news_count++; - - msg_pick_real_name(&m_attachments[i], INTL_GetCSIWinCSID(c)); - } - - /* If there is more than one mailbox URL, or more than one NNTP url, - do the load in serial rather than parallel, for efficiency. - */ - if (mailbox_count > 1 || news_count > 1) - m_be_synchronous_p = TRUE; - - m_attachment_pending_count = m_attachment_count; - - /* Start the URL attachments loading (eventually, an exit routine will - call the done_callback). */ - - if (m_attachment_count == 1) - FE_Progress(GetContext(), XP_GetString(MK_MSG_LOAD_ATTACHMNT)); - else - FE_Progress(GetContext(), XP_GetString(MK_MSG_LOAD_ATTACHMNTS)); - - for (i = 0; i < m_attachment_count; i++) - { - /* This only returns a failure code if NET_GetURL was not called - (and thus no exit routine was or will be called.) */ - int status = m_attachments [i].SnarfAttachment (); - if (status < 0) - return status; - - if (m_be_synchronous_p) - break; - } - } - - if (m_attachment_pending_count <= 0) - /* No attachments - finish now (this will call the done_callback). */ - GatherMimeAttachments (); - - return 0; -} - - -void -MSG_SendMimeDeliveryState::StartMessageDelivery( - MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode mode, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachmentData *attachments, - const struct MSG_AttachedFile *preloaded_attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - MSG_SendPart *relatedPart, -//#endif - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)) -{ - int failure = 0; - MSG_SendMimeDeliveryState *state; - - if (!attachment1_body || !*attachment1_body) - attachment1_type = attachment1_body = 0; - - state = new MSG_SendMimeDeliveryState; - if (! state) - { - failure = MK_OUT_OF_MEMORY; - goto FAIL; - } - - failure = state->Init(pane, fe_data, fields, - digest_p, dont_deliver_p, mode, - attachment1_type, attachment1_body, - attachment1_body_length, - attachments, preloaded_attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - relatedPart, -//#endif - message_delivery_done_callback); - if (failure >= 0) - return; - -FAIL: - char *err_msg = NET_ExplainErrorDetails (failure); - message_delivery_done_callback (pane->GetContext(), fe_data, failure, - err_msg); - if (err_msg) XP_FREE (err_msg); - delete state; -} - -int MSG_SendMimeDeliveryState::SetMimeHeader(MSG_HEADER_SET header, const char *value) -{ - char *dupHeader = NULL; - int ret = MK_OUT_OF_MEMORY; - - if (header & (MSG_FROM_HEADER_MASK | MSG_TO_HEADER_MASK | MSG_REPLY_TO_HEADER_MASK | MSG_CC_HEADER_MASK | MSG_BCC_HEADER_MASK)) - dupHeader = mime_fix_addr_header(value); - else if (header & (MSG_NEWSGROUPS_HEADER_MASK| MSG_FOLLOWUP_TO_HEADER_MASK)) - dupHeader = mime_fix_news_header(value); - else if (header & (MSG_FCC_HEADER_MASK | MSG_ORGANIZATION_HEADER_MASK | MSG_SUBJECT_HEADER_MASK | MSG_REFERENCES_HEADER_MASK | MSG_X_TEMPLATE_HEADER_MASK)) - dupHeader = mime_fix_header(value); - else - XP_ASSERT(FALSE); // unhandled header mask - - if (dupHeader) - { - ret = m_fields->SetHeader(header, dupHeader); - XP_FREE(dupHeader); - } - return ret; -} - - - -int -MSG_SendMimeDeliveryState::Init( - MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode mode, - - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachmentData *attachments, - const struct MSG_AttachedFile *preloaded_attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - MSG_SendPart *relatedPart, -//#endif - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)) -{ - int failure = 0; - m_pane = pane; - m_fe_data = fe_data; - m_message_delivery_done_callback = message_delivery_done_callback; - -//#ifdef MSG_SEND_MULTIPART_RELATED - m_related_part = relatedPart; - if (m_related_part) - m_related_part->SetMimeDeliveryState(this); -//#endif - - XP_ASSERT (fields); - if (!fields) return MK_OUT_OF_MEMORY; /* rb -1; */ - - if (m_fields) - { - delete m_fields; - } - - m_fields = new MSG_CompositionFields; - if (!m_fields) - return MK_OUT_OF_MEMORY; - - m_fields->SetOwner(pane); - -#ifdef GENERATE_MESSAGE_ID - if (fields->GetMessageId()) - { - m_fields->SetMessageId(XP_STRDUP(fields->GetMessageId())); - /* Don't bother checking for out of memory; if it fails, then we'll just - let the server generate the message-id, and suffer with the - possibility of duplicate messages.*/ - } -#endif /* GENERATE_MESSAGE_ID */ - - /* Strip whitespace from beginning and end of body. */ - if (attachment1_body) - { - while (attachment1_body_length > 0 && - XP_IS_SPACE (*attachment1_body)) - { - attachment1_body++; - attachment1_body_length--; - } - while (attachment1_body_length > 0 && - XP_IS_SPACE (attachment1_body [attachment1_body_length - 1])) - { - attachment1_body_length--; - } - if (attachment1_body_length <= 0) - attachment1_body = 0; - - if (attachment1_body) - { - char *newb = (char *) XP_ALLOC (attachment1_body_length + 1); - if (! newb) - { - return MK_OUT_OF_MEMORY; - } - XP_MEMCPY (newb, attachment1_body, attachment1_body_length); - newb [attachment1_body_length] = 0; - m_attachment1_body = newb; - m_attachment1_body_length = attachment1_body_length; - } - } - - if (!fields->GetNewspostUrl() || !*fields->GetNewspostUrl()) - fields->SetNewspostUrl("news:"); - - m_fields->SetNewspostUrl(fields->GetNewspostUrl()); - m_fields->SetDefaultBody(fields->GetDefaultBody()); - StrAllocCopy (m_attachment1_type, attachment1_type); - StrAllocCopy (m_attachment1_encoding, "8bit"); - - /* strip whitespace from and duplicate header fields. */ - - SetMimeHeader(MSG_FROM_HEADER_MASK, fields->GetFrom()); - - SetMimeHeader(MSG_REPLY_TO_HEADER_MASK, fields->GetReplyTo()); - SetMimeHeader(MSG_TO_HEADER_MASK, (fields->GetTo())); - SetMimeHeader(MSG_CC_HEADER_MASK, (fields->GetCc())); - SetMimeHeader(MSG_FCC_HEADER_MASK, (fields->GetFcc())); - SetMimeHeader(MSG_BCC_HEADER_MASK, (fields->GetBcc())); - SetMimeHeader(MSG_NEWSGROUPS_HEADER_MASK, (fields->GetNewsgroups())); - SetMimeHeader(MSG_FOLLOWUP_TO_HEADER_MASK, (fields->GetFollowupTo())); - SetMimeHeader(MSG_ORGANIZATION_HEADER_MASK, (fields->GetOrganization())); - SetMimeHeader(MSG_SUBJECT_HEADER_MASK, (fields->GetSubject())); - SetMimeHeader(MSG_REFERENCES_HEADER_MASK, (fields->GetReferences())); - SetMimeHeader(MSG_X_TEMPLATE_HEADER_MASK, (fields->GetTemplateName())); - - if (fields->GetOtherRandomHeaders()) - m_fields->SetOtherRandomHeaders(fields->GetOtherRandomHeaders()); - - if (fields->GetPriority()) - m_fields->SetPriority(fields->GetPriority()); - - int i, j = (int) MSG_LAST_BOOL_HEADER_MASK; - for (i = 0; i < j; i++) - m_fields->SetBoolHeader((MSG_BOOL_HEADER_SET) i, - fields->GetBoolHeader((MSG_BOOL_HEADER_SET) i)); -#if 0 - m_fields->SetReturnReceipt(fields->GetReturnReceipt()); - HG29822 - m_fields->SetSigned(fields->GetSigned()); - m_fields->SetAttachVCard(fields->GetAttachVCard()); -#endif - m_fields->SetForcePlainText(fields->GetForcePlainText()); - m_fields->SetUseMultipartAlternative(fields->GetUseMultipartAlternative()); - - if (pane && m_fields->GetReturnReceipt()) - { - if (m_fields->GetReturnReceiptType() == 1 || - m_fields->GetReturnReceiptType() == 3) - pane->SetRequestForReturnReceipt(TRUE); - else - pane->SetRequestForReturnReceipt(FALSE); - } - - /* Check the fields for legitimacy, and run the callback if they're not - ok. */ - if ( mode != MSG_SaveAsDraft && mode != MSG_SaveAsTemplate ) - failure = mime_sanity_check_fields (m_fields->GetFrom(), m_fields->GetReplyTo(), - m_fields->GetTo(), m_fields->GetCc(), - m_fields->GetBcc(), m_fields->GetFcc(), - m_fields->GetNewsgroups(), m_fields->GetFollowupTo(), - m_fields->GetSubject(), m_fields->GetReferences(), - m_fields->GetOrganization(), - m_fields->GetOtherRandomHeaders()); - if (failure) - return failure; - - m_digest_p = digest_p; - m_dont_deliver_p = dont_deliver_p; - m_deliver_mode = mode; - // m_msg_file_name = WH_TempName (xpFileToPost, "nsmail"); - - failure = HackAttachments(attachments, preloaded_attachments); - return failure; -} - - - -/* This is the main driving function of this module. It generates a - document of type message/rfc822, which contains the stuff provided. - The first few arguments are the standard header fields that the - generated document should have. - - `other_random_headers' is a string of additional headers that should - be inserted beyond the standard ones. If provided, it is just tacked - on to the end of the header block, so it should have newlines at the - end of each line, shouldn't have blank lines, multi-line headers - should be properly continued, etc. - - `digest_p' says that most of the documents we are attaching are - themselves messages, and so we should generate a multipart/digest - container instead of multipart/mixed. (It's a minor difference.) - - The full text of the first attachment is provided via `attachment1_type', - `attachment1_body' and `attachment1_body_length'. These may all be 0 - if all attachments are provided externally. - - Subsequent attachments are provided as URLs to load, described in the - MSG_AttachmentData structures. - - If `dont_deliver_p' is false, then we actually deliver the message to the - SMTP and/or NNTP server, and the message_delivery_done_callback will be - invoked with the status. - - If `dont_deliver_p' is true, then we just generate the message, we don't - actually deliver it, and the message_delivery_done_callback will be called - with the name of the generated file. The callback is responsible for both - freeing the file name string, and deleting the file when it is done with - it. If an error occurred, then `status' will be negative and - `error_message' may be an error message to display. If status is non- - negative, then `error_message' contains the file name (this is kind of - a kludge...) - */ -extern "C" void -MSG_StartMessageDelivery (MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachmentData *attachments, - void *relatedPart, - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)) -{ - MSG_SendMimeDeliveryState::StartMessageDelivery(pane, fe_data, fields, - digest_p, dont_deliver_p, - MSG_DeliverNow, /* ####??? */ - attachment1_type, - attachment1_body, attachment1_body_length, - attachments, 0, - (MSG_SendPart *) relatedPart, -#ifdef XP_OS2 -//DSR040297 - Casting away extern "C" -//DSR040297 - Note: this simple little cast switches the function pointers from extern "C" -//to non-extern "C" pointer (aka a C++ function). Don't try to change the static method, I've -//tried it and it only gets uglier. This (for what its worth) is at least only a few casts in -//spots where it makes sense. - (void (*) (MWContext *, void *, int, const char *)) -#endif - message_delivery_done_callback); -} - - -extern "C" void -msg_StartMessageDeliveryWithAttachments (MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode mode, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachedFile - *attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - void *relatedPart, -//#endif - - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)) -{ - MSG_SendMimeDeliveryState::StartMessageDelivery(pane, fe_data, fields, - digest_p, dont_deliver_p, mode, - attachment1_type, attachment1_body, - attachment1_body_length, - 0, attachments, - (MSG_SendPart *) relatedPart, -#ifdef XP_OS2 -//DSR040297 - see comment above about 'Casting away extern "C"' - (void (*) (MWContext *, void *, int, const char *)) -#endif - message_delivery_done_callback); -} - - -extern "C" int -msg_DownloadAttachments (MSG_Pane *pane, - void *fe_data, - const struct MSG_AttachmentData *attachments, - void (*attachments_done_callback) - (MWContext *context, - void *fe_data, - int status, const char *error_message, - struct MSG_AttachedFile *attachments)) -{ - MSG_SendMimeDeliveryState *state = 0; - int failure = 0; - - XP_ASSERT(attachments && attachments[0].url); - /* if (!attachments || !attachments[0].url) - { - failure = -1; - goto FAIL; - } */ /* The only possible error above is out of memory and it is handled - in MSG_CompositionPane::DownloadAttachments() */ - state = new MSG_SendMimeDeliveryState; - - if (! state) - { - failure = MK_OUT_OF_MEMORY; - goto FAIL; - } - state->m_pane = pane; - state->m_fe_data = fe_data; - state->m_attachments_only_p = TRUE; - state->m_attachments_done_callback = -#ifdef XP_OS2 -//DSR040297 - see comment above about 'Casting away extern "C"' - (void(*)(MWContext*,void*,int,const char*,MSG_AttachedFile*)) -#endif - attachments_done_callback; - - failure = state->HackAttachments(attachments, 0); - if (failure >= 0) - return 0; - - FAIL: - XP_ASSERT (failure); - - /* in this case, our NET_GetURL exit routine has already freed - the state */ - if (failure != MK_ATTACHMENT_LOAD_FAILED) - { - char *err_msg = NET_ExplainErrorDetails (failure); - attachments_done_callback (state->GetContext(), fe_data, failure, - err_msg, 0); - if (state) delete state; - - if (err_msg) XP_FREE (err_msg); -#ifdef XP_MAC - // ### mwelch The MacFE wants this error thrown as an exception. - // This is because of the way that error recovery occurs - // inside the compose session object. - if (failure == MK_INTERRUPTED) - failure = userCanceledErr; -#endif - } - return failure; -} - - -void MSG_SendMimeDeliveryState::Clear() -{ - if (m_fields) { - delete m_fields; - m_fields = NULL; - } - if (m_attachment1_type) XP_FREE (m_attachment1_type); - if (m_attachment1_encoding) XP_FREE (m_attachment1_encoding); - if (m_attachment1_body) XP_FREE (m_attachment1_body); - - if (m_attachment1_encoder_data) - { - MimeEncoderDestroy(m_attachment1_encoder_data, TRUE); - m_attachment1_encoder_data = 0; - } - -/* if (m_headers) XP_FREE (m_headers); */ - - if (m_msg_file) - { - XP_FileClose (m_msg_file); - m_msg_file = 0; - XP_ASSERT (m_msg_file_name); - } - - - if (m_msg_file_name) - { - XP_FileRemove (m_msg_file_name, xpFileToPost); - XP_FREE (m_msg_file_name); - m_msg_file_name = 0; - } - - if (m_attachments) - { - int i; - for (i = 0; i < m_attachment_count; i++) - { - if (m_attachments [i].m_encoder_data) - { - MimeEncoderDestroy(m_attachments [i].m_encoder_data, - TRUE); - m_attachments [i].m_encoder_data = 0; - } - - FREEIF (m_attachments [i].m_url_string); - if (m_attachments [i].m_url) - NET_FreeURLStruct (m_attachments [i].m_url); - FREEIF (m_attachments [i].m_type); - FREEIF (m_attachments [i].m_override_type); - FREEIF (m_attachments [i].m_override_encoding); - FREEIF (m_attachments [i].m_desired_type); - FREEIF (m_attachments [i].m_description); - FREEIF (m_attachments [i].m_x_mac_type); - FREEIF (m_attachments [i].m_x_mac_creator); - FREEIF (m_attachments [i].m_real_name); - FREEIF (m_attachments [i].m_encoding); - if (m_attachments [i].m_file) - XP_FileClose (m_attachments [i].m_file); - if (m_attachments [i].m_file_name) - { - if (!m_pre_snarfed_attachments_p) - XP_FileRemove (m_attachments [i].m_file_name, xpFileToPost); - XP_FREE (m_attachments [i].m_file_name); - } -#ifdef XP_MAC - /* remove the appledoubled intermediate file after we done all. - */ - if (m_attachments [i].m_ap_filename) - { - XP_FileRemove (m_attachments [i].m_ap_filename, xpFileToPost); - XP_FREE (m_attachments [i].m_ap_filename); - } -#endif /* XP_MAC */ - } - delete[] m_attachments; - m_attachment_count = m_attachment_pending_count = 0; - m_attachments = 0; - } -} - - -void -MSG_SendMimeDeliveryState::DeliverMessage () -{ - XP_Bool mail_p = ((m_fields->GetTo() && *m_fields->GetTo()) || - (m_fields->GetCc() && *m_fields->GetCc()) || - (m_fields->GetBcc() && *m_fields->GetBcc())); - XP_Bool news_p = (m_fields->GetNewsgroups() && - *(m_fields->GetNewsgroups()) ? TRUE : FALSE); - - if ( m_deliver_mode != MSG_SaveAsDraft && - m_deliver_mode != MSG_SaveAsTemplate ) - XP_ASSERT(mail_p || news_p); - -#if 0 - /* Figure out how many bytes we're actually going to be writing, total. - */ - m_delivery_bytes = 0; - m_delivery_total_bytes = 0; - - if (m_fcc && *m_fcc) - m_delivery_total_bytes += m_msg_size; - - if (m_queue_for_later_p) - m_delivery_total_bytes += m_msg_size; - else - { - if (mail_p) - m_delivery_total_bytes += m_msg_size; - if (news_p) - m_delivery_total_bytes += m_msg_size; - } -#endif /* 0 */ - -#ifdef XP_UNIX - { - int status = msg_DeliverMessageExternally(GetContext(), m_msg_file_name); - if (status != 0) - { - if (status < 0) - Fail (status, 0); - else - { - /* The message has now been delivered successfully. */ - MWContext *context = GetContext(); - if (m_message_delivery_done_callback) - m_message_delivery_done_callback (context, - m_fe_data, 0, NULL); - m_message_delivery_done_callback = 0; - - Clear(); - - /* When attaching, even though the context has - active_url_count == 0, XFE_AllConnectionsComplete() **is** - called. However, when not attaching, and not delivering right - away, we don't actually open any URLs, so we need to destroy - the window ourself. Ugh!! - */ - if (m_attachment_count == 0) - MSG_MailCompositionAllConnectionsComplete(MSG_FindPane(context, - MSG_ANYPANE)); - } - return; - } - } -#endif /* XP_UNIX */ - - -#ifdef MAIL_BEFORE_NEWS - if (mail_p) - DeliverFileAsMail (); /* May call ...as_news() next. */ - else if (news_p) - DeliverFileAsNews (); -#else /* !MAIL_BEFORE_NEWS */ - if (news_p) - DeliverFileAsNews (); /* May call ...as_mail() next. */ - else if (mail_p) - DeliverFileAsMail (); -#endif /* !MAIL_BEFORE_NEWS */ - else - abort (); -} - - -#if 0 -void -MSG_SendMimeDeliveryState::DeliveryThermo (int32 increment) -{ - int32 percent; - m_delivery_bytes += increment; - XP_ASSERT(m_delivery_total_bytes > 0); - if (m_delivery_total_bytes <= 0) return; - percent = 100 * (((double) m_delivery_bytes) / - ((double) m_delivery_total_bytes)); - FE_SetProgressBarPercent (GetContext(), percent); -#if 0 - FE_GraphProgress (GetContext(), 0, - m_delivery_bytes, 0, - m_delivery_total_bytes); -#endif /* 0 */ -} -#endif /* 0 */ - - -static void mime_deliver_as_mail_exit (URL_Struct *, int status, MWContext *); -static void mime_deliver_as_news_exit (URL_Struct *url, int status, - MWContext *); - -void -MSG_SendMimeDeliveryState::DeliverFileAsMail () -{ - char *buf, *buf2; - URL_Struct *url; - - FE_Progress (GetContext(), XP_GetString(MK_MSG_DELIV_MAIL)); - - buf = (char *) XP_ALLOC ((m_fields->GetTo() ? XP_STRLEN (m_fields->GetTo()) + 10 : 0) + - (m_fields->GetCc() ? XP_STRLEN (m_fields->GetCc()) + 10 : 0) + - (m_fields->GetBcc() ? XP_STRLEN (m_fields->GetBcc()) + 10 : 0) + - 10); - if (! buf) - { - Fail (MK_OUT_OF_MEMORY, 0); - return; - } - XP_STRCPY (buf, "mailto:"); - buf2 = buf + XP_STRLEN (buf); - if (m_fields->GetTo()) - { - XP_STRCAT (buf2, m_fields->GetTo()); - } - if (m_fields->GetCc()) - { - if (*buf2) XP_STRCAT (buf2, ","); - XP_STRCAT (buf2, m_fields->GetCc()); - } - if (m_fields->GetBcc()) - { - if (*buf2) XP_STRCAT (buf2, ","); - XP_STRCAT (buf2, m_fields->GetBcc()); - } - - url = NET_CreateURLStruct (buf, NET_DONT_RELOAD); - XP_FREE (buf); - if (! url) - { - Fail (MK_OUT_OF_MEMORY, 0); - return; - } - - /* put the filename of the message into the post data field and set a flag - in the URL struct to specify that it is a file - */ - url->post_data = XP_STRDUP(m_msg_file_name); - url->post_data_size = XP_STRLEN(url->post_data); - url->post_data_is_file = TRUE; - url->method = URL_POST_METHOD; - url->fe_data = this; - url->internal_url = TRUE; - - url->msg_pane = m_pane; - - /* We can ignore the return value of NET_GetURL() because we have - handled the error in mime_deliver_as_mail_exit(). */ - - MSG_UrlQueue::AddUrlToPane(url, mime_deliver_as_mail_exit, m_pane, TRUE); -} - - -void -MSG_SendMimeDeliveryState::DeliverFileAsNews () -{ - URL_Struct *url = NET_CreateURLStruct (m_fields->GetNewspostUrl(), NET_DONT_RELOAD); - if (! url) - { - Fail (MK_OUT_OF_MEMORY, 0); - return; - } - - FE_Progress (GetContext(), XP_GetString(MK_MSG_DELIV_NEWS)); - - /* put the filename of the message into the post data field and set a flag - in the URL struct to specify that it is a file. - */ - - url->post_data = XP_STRDUP(m_msg_file_name); - url->post_data_size = XP_STRLEN(url->post_data); - url->post_data_is_file = TRUE; - url->method = URL_POST_METHOD; - - url->fe_data = this; - url->internal_url = TRUE; - - url->msg_pane = m_pane; - - /* We can ignore the return value of NET_GetURL() because we have - handled the error in mime_deliver_as_news_exit(). */ - - MSG_UrlQueue::AddUrlToPane (url, mime_deliver_as_news_exit, m_pane, TRUE); -} - -static void -mime_deliver_as_mail_exit (URL_Struct *url, int status, - MWContext * /*context*/) -{ - MSG_SendMimeDeliveryState *state = - (MSG_SendMimeDeliveryState *) url->fe_data; - - state->DeliverAsMailExit(url, status); -} - -void -MSG_SendMimeDeliveryState::DeliverAsMailExit(URL_Struct *url, int status) -{ - char *error_msg = 0; - - url->fe_data = 0; - if (status < 0 && url->error_msg) - { - error_msg = url->error_msg; - url->error_msg = 0; - } -// NET_FreeURLStruct (url); - - if (status < 0) - { - Fail (status, error_msg); - } -#ifdef MAIL_BEFORE_NEWS - else if (m_newsgroups) - { - /* If we're sending this mail message to news as well, start it now. - Completion and further errors will be handled there. - */ - DeliverFileAsNews (); - } -#endif /* MAIL_BEFORE_NEWS */ - else - { - /* The message has now been sent successfully! */ - - FE_Progress (GetContext(), XP_GetString(MK_MSG_DELIV_MAIL_DONE)); - if (m_message_delivery_done_callback) - m_message_delivery_done_callback (GetContext(), - m_fe_data, 0, NULL); - m_message_delivery_done_callback = 0; - Clear(); - delete this; - } -} - -static void -mime_deliver_as_news_exit (URL_Struct *url, int status, - MWContext * /*context*/) -{ - MSG_SendMimeDeliveryState *state = - (MSG_SendMimeDeliveryState *) url->fe_data; - state->DeliverAsNewsExit(url, status); -} - -void -MSG_SendMimeDeliveryState::DeliverAsNewsExit(URL_Struct *url, int status) -{ - char *error_msg = 0; - - url->fe_data = 0; - if (status < 0 && url->error_msg) - { - error_msg = url->error_msg; - url->error_msg = 0; - } -// NET_FreeURLStruct (url); - - if (status < 0) - { - Fail (status, error_msg); - } -#ifndef MAIL_BEFORE_NEWS - else if ((m_fields->GetTo() && *m_fields->GetTo()) || - (m_fields->GetCc() && *m_fields->GetCc()) || - (m_fields->GetBcc() && *m_fields->GetBcc())) - { - /* If we're sending this news message to mail as well, start it now. - Completion and further errors will be handled there. - */ - DeliverFileAsMail (); - } -#endif /* !MAIL_BEFORE_NEWS */ - else - { - /* The message has now been sent successfully! */ - - FE_Progress (GetContext(), XP_GetString(MK_MSG_DELIV_NEWS_DONE)); - if (m_message_delivery_done_callback) - m_message_delivery_done_callback (GetContext(), - m_fe_data, 0, NULL); - m_message_delivery_done_callback = 0; - Clear(); - delete this; - } -} - -#ifdef _USRDLL - -PUBLIC void -NET_RegisterDLLContentConverters() -{ - - NET_RegisterContentTypeConverter ("*", FO_MAIL_TO, - NULL, mime_make_attachment_stream); - NET_RegisterContentTypeConverter ("*", FO_CACHE_AND_MAIL_TO, - NULL, mime_make_attachment_stream); - - /* #### What is this function for? - Is this right? I've cloned this stuff from MSG_RegisterConverters() - above. --jwz */ - - NET_RegisterContentTypeConverter ("*", FO_MAIL_MESSAGE_TO, - NULL, mime_make_attachment_stream); - NET_RegisterContentTypeConverter ("*", FO_CACHE_AND_MAIL_MESSAGE_TO, - NULL, mime_make_attachment_stream); - - NET_RegisterContentTypeConverter (MESSAGE_RFC822, FO_MAIL_MESSAGE_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, FO_MAIL_MESSAGE_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_RFC822, - FO_CACHE_AND_MAIL_MESSAGE_TO, - NULL, MIME_MessageConverter); - NET_RegisterContentTypeConverter (MESSAGE_NEWS, - FO_CACHE_AND_MAIL_MESSAGE_TO, - NULL, MIME_MessageConverter); -} - -#endif diff --git a/mozilla/lib/mailto/msgsend.h b/mozilla/lib/mailto/msgsend.h deleted file mode 100644 index f1bcfa21a07..00000000000 --- a/mozilla/lib/mailto/msgsend.h +++ /dev/null @@ -1,255 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef __MSGSEND_H__ -#define __MSGSEND_H__ - -#include "msgpane.h" -#include "mimeenc.h" /* For base64/QP encoder */ -#include "mhtmlstm.h" -#include "rosetta.h" - -class MSG_DeliverMimeAttachment; -class ParseOutgoingMessage; -class MailDB; - -#define MIME_BUFFER_SIZE 4096 - -class MSG_SendMimeDeliveryState -{ -public: - MSG_SendMimeDeliveryState(); - ~MSG_SendMimeDeliveryState(); - - static void StartMessageDelivery(MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode mode, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachmentData - *attachments, - const struct MSG_AttachedFile - *preloaded_attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - MSG_SendPart *relatedPart, -//#endif - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)); - - int Init(MSG_Pane *pane, - void *fe_data, - MSG_CompositionFields *fields, - XP_Bool digest_p, - XP_Bool dont_deliver_p, - MSG_Deliver_Mode mode, - const char *attachment1_type, - const char *attachment1_body, - uint32 attachment1_body_length, - const struct MSG_AttachmentData *attachments, - const struct MSG_AttachedFile *preloaded_attachments, -//#ifdef MSG_SEND_MULTIPART_RELATED - MSG_SendPart *relatedPart, -//#endif - void (*message_delivery_done_callback) - (MWContext *context, - void *fe_data, - int status, - const char *error_message)); - - void StartMessageDelivery(); - int GatherMimeAttachments(); - void DeliverMessage(); - - int HackAttachments(const struct MSG_AttachmentData *attachments, - const struct MSG_AttachedFile *preloaded_attachments); - - void DeliverFileAsMail(); - void DeliverFileAsNews(); - void DeliverAsMailExit(URL_Struct *url, int status); - void DeliverAsNewsExit(URL_Struct *url, int status); - void Fail(int failure_code, char *error_msg); - void Clear(); - - // Callback from msgsendp.cpp into msgsend.cpp. - MWContext *GetContext() { return m_pane->GetContext(); } - - int SetMimeHeader(MSG_HEADER_SET header, const char *value); - - MSG_Pane *m_pane; /* Pane to use when loading the URLs */ - void *m_fe_data; /* passed in and passed to callback */ - MSG_CompositionFields *m_fields; - - XP_Bool m_dont_deliver_p; /* If set, we just return the name of the file - we created, instead of actually delivering - this message. */ - - MSG_Deliver_Mode m_deliver_mode; /* MSG_DeliverNow, MSG_QueueForLater, - MSG_SaveAsDraft, MSG_SaveAsTemplate - */ - - XP_Bool m_attachments_only_p; /* If set, then we don't construct a complete - MIME message; instead, we just retrieve the - attachments from the network, store them in - tmp files, and return a list of - MSG_AttachedFile structs which describe - them. */ - - XP_Bool m_pre_snarfed_attachments_p; /* If true, then the attachments were - loaded by msg_DownloadAttachments() - and therefore we shouldn't delete - the tmp files (but should leave - that to the caller.) */ - - XP_Bool m_digest_p; /* Whether to be multipart/digest instead of - multipart/mixed. */ - - XP_Bool m_be_synchronous_p; /* If true, we will load one URL after another, - rather than starting all URLs going at once - and letting them load in parallel. This is - more efficient if (for example) all URLs are - known to be coming from the same news server - or mailbox: loading them in parallel would - cause multiple connections to the news - server to be opened, or would cause much - seek()ing. - */ - - HG83623 - - /* The first attachment, if any (typed in by the user.) - */ - char *m_attachment1_type; - char *m_attachment1_encoding; - MimeEncoderData *m_attachment1_encoder_data; - char *m_attachment1_body; - uint32 m_attachment1_body_length; - - // The plaintext form of the first attachment, if needed. - MSG_DeliverMimeAttachment* m_plaintext; - -//#ifdef MSG_SEND_MULTIPART_RELATED - // The multipart/related save object for HTML text. - MSG_SendPart *m_related_part; -//#endif - - // File where we stored our HTML so that we could make the plaintext form. - char* m_html_filename; - - /* Subsequent attachments, if any. - */ - int32 m_attachment_count; - int32 m_attachment_pending_count; - MSG_DeliverMimeAttachment *m_attachments; - int32 m_status; /* in case some attachments fail but not all */ - - /* The caller's `exit' method. */ - void (*m_message_delivery_done_callback) (MWContext *context, - void * fe_data, int status, - const char * error_msg); - - /* The exit method used when downloading attachments only. */ - void (*m_attachments_done_callback) (MWContext *context, - void * fe_data, int status, - const char * error_msg, - struct MSG_AttachedFile *attachments); - - char *m_msg_file_name; /* Our temporary file */ - XP_File m_msg_file; -}; - -class MSG_DeliverMimeAttachment -{ -public: - - MSG_DeliverMimeAttachment(); - ~MSG_DeliverMimeAttachment(); - - void UrlExit(URL_Struct *url, int status, MWContext *context); - int32 SnarfAttachment (); - void AnalyzeDataChunk (const char *chunk, int32 chunkSize); - void AnalyzeSnarfedFile (); /* Analyze a previously-snarfed file. - (Currently only used for plaintext - converted from HTML.) */ - int PickEncoding (int16 mail_csid); - - XP_Bool UseUUEncode_p(void); - - char *m_url_string; - URL_Struct *m_url; - XP_Bool m_done; - - MSG_SendMimeDeliveryState *m_mime_delivery_state; - - char *m_type; /* The real type, once we know it. */ - char *m_override_type; /* The type we should assume it to be - or 0, if we should get it from the - URL_Struct (from the server) */ - char *m_override_encoding; /* Goes along with override_type */ - - char *m_desired_type; /* The type it should be converted to. */ - char *m_description; /* For Content-Description header */ - char *m_x_mac_type, *m_x_mac_creator; /* Mac file type/creator. */ - char *m_real_name; /* The name for the headers, if different - from the URL. */ - char *m_encoding; /* The encoding, once we've decided. */ - XP_Bool m_already_encoded_p; /* If we attach a document that is already - encoded, we just pass it through. */ - - char *m_file_name; /* The temp file to which we save it */ - XP_File m_file; - -#ifdef XP_MAC - char *m_ap_filename; /* The temp file holds the appledouble - encoding of the file we want to post. */ -#endif - - HG93873 - uint32 m_size; /* Some state used while filtering it */ - uint32 m_unprintable_count; - uint32 m_highbit_count; - uint32 m_ctl_count; - uint32 m_null_count; - uint32 m_current_column; - uint32 m_max_column; - uint32 m_lines; - - MimeEncoderData *m_encoder_data; /* Opaque state for base64/qp encoder. */ - - XP_Bool m_graph_progress_started; - - PrintSetup m_print_setup; /* Used by HTML->Text and HTML->PS */ -}; -// These routines should only be used by the MSG_SendPart class. - -extern XP_Bool mime_type_needs_charset (const char *type); -extern int mime_write_message_body(MSG_SendMimeDeliveryState *state, - char *buf, int32 size); -extern char* mime_get_stream_write_buffer(void); - -#endif /* __MSGSEND_H__ */ diff --git a/mozilla/lib/mailto/msgsendp.cpp b/mozilla/lib/mailto/msgsendp.cpp deleted file mode 100644 index 22a4a7ee4cb..00000000000 --- a/mozilla/lib/mailto/msgsendp.cpp +++ /dev/null @@ -1,812 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#include "msg.h" -#include "ntypes.h" -#include "xlate.h" // Needed to compile msgsend.h -#include "msgsend.h" -#include "msgsendp.h" -#include "libi18n.h" - -#ifdef MOZ_ENDER_MIME -#include "secrng.h" /* for RNG_GenerateGlobalRandomBytes() */ -#endif /*MOZ_ENDER_MIME*/ -extern "C" -{ - extern int MK_OUT_OF_MEMORY; -} - -static char *mime_mailto_stream_read_buffer = 0; - -int32 MSG_SendPart::M_counter = 0; - -MSG_SendPart::MSG_SendPart(MSG_SendMimeDeliveryState* state, int16 part_csid) -{ - m_type=NULL; - m_parent = NULL; - m_filename = NULL; - m_buffer = NULL; - m_other = NULL; - m_strip_sensitive_headers = FALSE; - m_encoder_data = FALSE; - - m_children = NULL; - m_numchildren = 0; - - m_firstBlock = FALSE; - m_needIntlConversion = FALSE; - - m_mainpart = FALSE; - - m_just_hit_CR = FALSE; - - m_csid = part_csid; - SetMimeDeliveryState(state); -} - - -MSG_SendPart::~MSG_SendPart() -{ - if (m_encoder_data) { - MimeEncoderDestroy(m_encoder_data, FALSE); - m_encoder_data = NULL; - } - for (int i=0 ; i<m_numchildren ; i++) { - delete m_children[i]; - } - delete [] m_children; - delete [] m_buffer; - delete [] m_other; - if (m_filename) delete [] m_filename; - FREEIF(m_type); -} - -int MSG_SendPart::CopyString(char** dest, const char* src) -{ - XP_ASSERT(src); - if (!src) src = ""; - delete [] *dest; - *dest = new char [XP_STRLEN(src) + 1]; - if (!*dest) return MK_OUT_OF_MEMORY; - XP_STRCPY(*dest, src); - return 0; -} - - -int MSG_SendPart::SetFile(const char* filename, XP_FileType type) -{ - XP_ASSERT(m_buffer == NULL); - int status = CopyString(&m_filename, filename); - if (status < 0) return status; - m_filetype = type; - return status; -} - - -int MSG_SendPart::SetBuffer(const char* buffer) -{ - XP_ASSERT(m_filename == NULL); - return CopyString(&m_buffer, buffer); -} - - -int MSG_SendPart::SetType(const char* type) -{ - FREEIF(m_type); - m_type = XP_STRDUP(type); - return m_type ? 0 : MK_OUT_OF_MEMORY; -} - - -int MSG_SendPart::SetOtherHeaders(const char* other) -{ - return CopyString(&m_other, other); -} - -int MSG_SendPart::SetMimeDeliveryState(MSG_SendMimeDeliveryState *state) -{ - m_state = state; - if (GetNumChildren() > 0) - { - for(int i = 0; i < GetNumChildren(); i++) - { - MSG_SendPart *part = GetChild(i); - if (part) - part->SetMimeDeliveryState(state); - } - } - return 0; -} - -int MSG_SendPart::AppendOtherHeaders(const char* more) -{ - if (!m_other) return SetOtherHeaders(more); - if (!more || !*more) return 0; - char* tmp = new char[XP_STRLEN(m_other) + XP_STRLEN(more) + 2]; - if (!tmp) return MK_OUT_OF_MEMORY; - XP_STRCPY(tmp, m_other); - XP_STRCAT(tmp, more); - delete [] m_other; - m_other = tmp; - return 0; -} - - -int MSG_SendPart::SetEncoderData(MimeEncoderData* data) -{ - m_encoder_data = data; - return 0; -} - -int MSG_SendPart::SetMainPart(XP_Bool value) -{ - m_mainpart = value; - return 0; -} - -int MSG_SendPart::AddChild(MSG_SendPart* child) -{ - m_numchildren++; - MSG_SendPart** tmp = new MSG_SendPart* [m_numchildren]; - if (tmp == NULL) return MK_OUT_OF_MEMORY; - for (int i=0 ; i<m_numchildren-1 ; i++) { - tmp[i] = m_children[i]; - } - delete [] m_children; - m_children = tmp; - m_children[m_numchildren - 1] = child; - child->m_parent = this; - return 0; -} - -MSG_SendPart * -MSG_SendPart::DetachChild(int32 whichOne) -{ - MSG_SendPart *returnValue = NULL; - - XP_ASSERT(whichOne >= 0 && whichOne < m_numchildren); - if (whichOne >= 0 && whichOne < m_numchildren) - { - returnValue = m_children[whichOne]; - - if (m_numchildren > 1) - { - MSG_SendPart** tmp = new MSG_SendPart* [m_numchildren-1]; - if (tmp != NULL) - { - // move all the other kids over - for (int i=0 ; i<m_numchildren-1 ; i++) - { - if (i >= whichOne) - tmp[i] = m_children[i+1]; - else - tmp[i] = m_children[i]; - } - delete [] m_children; - m_children = tmp; - m_numchildren--; - } - } - else - { - delete [] m_children; - m_children = NULL; - m_numchildren = 0; - } - } - - if (returnValue) - returnValue->m_parent = NULL; - - return returnValue; -} - -MSG_SendPart* MSG_SendPart::GetChild(int32 which) -{ - XP_ASSERT(which >= 0 && which < m_numchildren); - if (which >= 0 && which < m_numchildren) { - return m_children[which]; - } - return NULL; -} - - - -int MSG_SendPart::PushBody(char* buffer, int32 length) -{ -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) - int status = 0; - char* encoded_data = buffer; - - /* if this is the first block, create the conversion object - */ - if (m_firstBlock) { - if (m_needIntlConversion) { - m_intlDocToMailConverter = - INTL_CreateDocToMailConverter(m_state->GetContext(), - (!strcasecomp(m_type, - TEXT_HTML)), - (unsigned char*) buffer, - length); - - // No conversion is done when mail_csid (ToCSID for the converter) is JIS - // and type is HTML (usually csid is SJIS or EUC for Japanese HTML) - // in order to avoid mismatch META_TAG (bug#104255). - if (m_intlDocToMailConverter != NULL) { - XP_Bool Base64HtmlNoChconv = ((INTL_GetCCCToCSID(m_intlDocToMailConverter) == CS_JIS) && - !strcasecomp(m_type, TEXT_HTML) && - (m_encoder_data != NULL)); - if (Base64HtmlNoChconv) { - INTL_DestroyCharCodeConverter(m_intlDocToMailConverter); - m_intlDocToMailConverter = NULL; - } - } - } - m_firstBlock = FALSE; /* No longer the first block */ - } - - if (m_intlDocToMailConverter) { - encoded_data = - (char*)INTL_CallCharCodeConverter(m_intlDocToMailConverter, - (unsigned char*)buffer, - length); - /* the return buffer is different from the */ - /* origional one. The size needs to be change */ - if(encoded_data && encoded_data != buffer) { - length = XP_STRLEN(encoded_data); - } - } - - if (m_encoder_data) { - status = MimeEncoderWrite(m_encoder_data, encoded_data, length); - } else { - // Merely translate all linebreaks to CRLF. - int status = 0; - const char *in = encoded_data; - const char *end = in + length; - char *buffer, *out; - - - buffer = mime_get_stream_write_buffer(); - if (!buffer) return MK_OUT_OF_MEMORY; - - XP_ASSERT(encoded_data != buffer); - out = buffer; - - for (; in < end; in++) { - if (m_just_hit_CR) { - m_just_hit_CR = FALSE; - if (*in == LF) { - // The last thing we wrote was a CRLF from hitting a CR. - // So, we don't want to do anything from a following LF; - // we want to ignore it. - continue; - } - } - if (*in == CR || *in == LF) { - /* Write out the newline. */ - *out++ = CR; - *out++ = LF; - - status = mime_write_message_body(m_state, buffer, - out - buffer); - if (status < 0) return status; - out = buffer; - - if (*in == CR) { - m_just_hit_CR = TRUE; - } - - out = buffer; - } else { - - /* Fix for bug #95985. We can't assume that all lines are shorter - than 4096 chars (MIME_BUFFER_SIZE), so we need to test - for this here. sfraser. - */ - if (out - buffer >= MIME_BUFFER_SIZE) - { - status = mime_write_message_body(m_state, buffer, out - buffer); - if (status < 0) return status; - - out = buffer; - } - - *out++ = *in; - } - } - - /* Flush the last line. */ - if (out > buffer) { - status = mime_write_message_body(m_state, buffer, out - buffer); - if (status < 0) return status; - out = buffer; - } - } - - if (encoded_data && encoded_data != buffer) { - XP_FREE(encoded_data); - } - - return status; -#else - return 0; -#endif /* !MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE */ -} - - -/* Partition the headers into those which apply to the message as a whole; - those which apply to the message's contents; and the Content-Type header - itself. (This relies on the fact that all body-related headers begin with - "Content-".) - - (How many header parsers are in this program now?) - */ -static int divide_content_headers(const char *headers, - char **message_headers, - char **content_headers, - char **content_type_header) -{ - const char *tail; - char *message_tail, *content_tail, *type_tail; - int L = 0; - if (headers) - L = XP_STRLEN(headers); - - if (L == 0) - return 0; - - *message_headers = (char *)XP_ALLOC(L+1); - if (!*message_headers) - return MK_OUT_OF_MEMORY; - - *content_headers = (char *)XP_ALLOC(L+1); - if (!*content_headers) - { - XP_FREE(*message_headers); - return MK_OUT_OF_MEMORY; - } - - *content_type_header = (char *)XP_ALLOC(L+1); - if (!*content_type_header) - { - XP_FREE(*message_headers); - XP_FREE(*content_headers); - return MK_OUT_OF_MEMORY; - } - - message_tail = *message_headers; - content_tail = *content_headers; - type_tail = *content_type_header; - tail = headers; - - while (*tail) - { - const char *head = tail; - char **out; - while(1) - { - /* Loop until we reach a newline that is not followed by whitespace. - */ - if (tail[0] == 0 || - ((tail[0] == CR || tail[0] == LF) && - !(tail[1] == ' ' || tail[1] == '\t' || tail[1] == LF))) - { - /* Swallow the whole newline. */ - if (tail[0] == CR && tail[1] == LF) - tail++; - if (*tail) - tail++; - break; - } - tail++; - } - - /* Decide which block this header goes into. - */ - if (!strncasecomp(head, "Content-Type:", 13)) - out = &type_tail; - else if (!strncasecomp(head, "Content-", 8)) - out = &content_tail; - else - out = &message_tail; - - XP_MEMCPY(*out, head, (tail-head)); - *out += (tail-head); - } - - *message_tail = 0; - *content_tail = 0; - *type_tail = 0; - - if (!**message_headers) - { - XP_FREE(*message_headers); - *message_headers = 0; - } - - if (!**content_headers) - { - XP_FREE(*content_headers); - *content_headers = 0; - } - - if (!**content_type_header) - { - XP_FREE(*content_type_header); - *content_type_header = 0; - } - -#ifdef DEBUG - // ### mwelch Because of the extreme difficulty we've had with - // duplicate part headers, I'm going to put in an - // ASSERT here which makes sure that no duplicate - // Content-Type or Content-Transfer-Encoding headers - // leave here undetected. - const char* tmp; - if (*content_type_header) - { - tmp = XP_STRSTR(*content_type_header, "Content-Type"); - if (tmp) - { - tmp++; // get past the first occurrence - XP_ASSERT(!XP_STRSTR(tmp, "Content-Type")); - } - } - - if (*content_headers) - { - tmp = XP_STRSTR(*content_headers, "Content-Transfer-Encoding"); - if (tmp) - { - tmp++; // get past the first occurrence - XP_ASSERT(!XP_STRSTR(tmp, "Content-Transfer-Encoding")); - } - } -#endif // DEBUG - - return 0; -} - -extern "C" { -extern char *mime_make_separator(const char *prefix); -} -#if defined(MOZ_ENDER_MIME) && ! defined(MOZ_MAIL_COMPOSE) -//moved this here -extern "C" char * -mime_make_separator(const char *prefix) -{ - unsigned char rand_buf[13]; - RNG_GenerateGlobalRandomBytes((void *) rand_buf, 12); - return PR_smprintf("------------%s" - "%02X%02X%02X%02X" - "%02X%02X%02X%02X" - "%02X%02X%02X%02X", - prefix, - rand_buf[0], rand_buf[1], rand_buf[2], rand_buf[3], - rand_buf[4], rand_buf[5], rand_buf[6], rand_buf[7], - rand_buf[8], rand_buf[9], rand_buf[10], rand_buf[11]); -} -#endif //MOZ_ENDER_MIME && !MOZ_MAIL_COMPOSE - - -int MSG_SendPart::Write() -{ -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) - int status = 0; - char *separator = 0; - XP_File file = NULL; - -#define PUSHLEN(str, length) \ - do { \ - status = mime_write_message_body(m_state, str, length); \ - if (status < 0) goto FAIL; \ - } while (0) \ - -#define PUSH(str) PUSHLEN(str, XP_STRLEN(str)) - - if (m_mainpart && m_type && XP_STRCMP(m_type, TEXT_HTML) == 0) { - if (m_filename) { - // The "insert HTML links" code requires a memory buffer, - // so read the file into memory. - XP_ASSERT(m_buffer == NULL); - XP_StatStruct st; - st.st_size = 0; - XP_Stat (m_filename, &st, m_filetype); - int32 length = st.st_size; - m_buffer = new char[length + 1]; - if (m_buffer) { - file = XP_FileOpen(m_filename, m_filetype, XP_FILE_READ_BIN); - if (file) { - XP_FileRead(m_buffer, length, file); - XP_FileClose(file); - m_buffer[length] = '\0'; - file = NULL; - if (m_filename) delete [] m_filename; - m_filename = NULL; - } else { - delete [] m_buffer; - m_buffer = NULL; - } - } - } - if (m_buffer) { - char* tmp = NET_ScanHTMLForURLs(m_buffer); - if (tmp) { - SetBuffer(tmp); - XP_FREE(tmp); - } - } - } - - if (m_parent && m_parent->m_type && - !strcasecomp(m_parent->m_type, MULTIPART_DIGEST) && - m_type && - (!strcasecomp(m_type, MESSAGE_RFC822) || - !strcasecomp(m_type, MESSAGE_NEWS))) { - /* If we're in a multipart/digest, and this document is of type - message/rfc822, then it's appropriate to emit no - headers. - */ - } else { - char *message_headers = 0; - char *content_headers = 0; - char *content_type_header = 0; - status = divide_content_headers(m_other, - &message_headers, - &content_headers, - &content_type_header); - if (status < 0) - goto FAIL; - - /* First, write out all of the headers that refer to the message - itself (From, Subject, MIME-Version, etc.) - */ - if (message_headers) - { - PUSH(message_headers); - XP_FREE(message_headers); - message_headers = 0; - } - - /* Now make sure there's a Content-Type header. - */ - if (!content_type_header) - { - XP_ASSERT(m_type && *m_type); - XP_Bool needsCharset = mime_type_needs_charset(m_type ? m_type : TEXT_PLAIN); - if (needsCharset) - { - char tmpCSName[64]; - tmpCSName[0] = '\0'; - INTL_CharSetIDToName(m_csid, tmpCSName); - content_type_header = - PR_smprintf("Content-Type: %s; charset=%s" CRLF, - (m_type ? m_type : TEXT_PLAIN), tmpCSName); - } - else - content_type_header = - PR_smprintf("Content-Type: %s" CRLF, - (m_type ? m_type : TEXT_PLAIN)); - if (!content_type_header) - { - if (content_headers) - XP_FREE(content_headers); - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - - /* If this is a compound object, tack a boundary string onto the - Content-Type header. - */ - if (m_numchildren > 0) - { - int L; - char *ct2; - XP_ASSERT(m_type); - if (!separator) - { - separator = mime_make_separator(""); - if (!separator) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - L = XP_STRLEN(content_type_header); - - if (content_type_header[L-1] == LF) - content_type_header[--L] = 0; - if (content_type_header[L-1] == CR) - content_type_header[--L] = 0; - - ct2 = PR_smprintf("%s;\r\n boundary=\"%s\"" CRLF, - content_type_header, separator); - XP_FREE(content_type_header); - if (!ct2) - { - if (content_headers) - XP_FREE(content_headers); - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - - content_type_header = ct2; - } - - /* Now write out the Content-Type header... - */ - XP_ASSERT(content_type_header && *content_type_header); - PUSH(content_type_header); - XP_FREE(content_type_header); - content_type_header = 0; - - /* ...followed by all of the other headers that refer to the body of - the message (Content-Transfer-Encoding, Content-Dispositon, etc.) - */ - if (content_headers) - { - PUSH(content_headers); - XP_FREE(content_headers); - content_headers = 0; - } - } - - PUSH(CRLF); // A blank line, to mark the end of headers. - - m_firstBlock = TRUE; - /* only convert if we need to tag charset */ - m_needIntlConversion = mime_type_needs_charset(m_type); - m_intlDocToMailConverter = NULL; - - - if (m_buffer) { - XP_ASSERT(!m_filename); - status = PushBody(m_buffer, XP_STRLEN(m_buffer)); - if (status < 0) goto FAIL; - } else if (m_filename) { - file = XP_FileOpen(m_filename, m_filetype, XP_FILE_READ_BIN); - if (!file) { - status = -1; // ### Better error code for a temp file - // mysteriously disappearing? - goto FAIL; - } - /* Hack to avoid having to allocate memory... */ - if (!mime_mailto_stream_read_buffer) { - mime_mailto_stream_read_buffer = (char *) - XP_ALLOC(MIME_BUFFER_SIZE); - if (!mime_mailto_stream_read_buffer) - { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - } - char* buffer = mime_mailto_stream_read_buffer; - - if (m_strip_sensitive_headers) { - /* We are attaching a message, so we should be careful to - strip out certain sensitive internal header fields. - */ - XP_Bool skipping = FALSE; - XP_ASSERT(MIME_BUFFER_SIZE > 1000); /* SMTP (RFC821) limit */ - - while (1) { - char *line = XP_FileReadLine(buffer, MIME_BUFFER_SIZE-3, file); - if (!line) break; /* EOF */ - - if (skipping) { - if (*line == ' ' || *line == '\t') { - continue; - } else { - skipping = FALSE; - } - } - - int hdrLen = XP_STRLEN(buffer); - if ((hdrLen < 2) || (buffer[hdrLen-2] != CR)) // if the line doesn't end with CRLF, - { - // ... make it end with CRLF. - if ( (hdrLen == 0) - || ((buffer[hdrLen-1] != CR) && (buffer[hdrLen-1] != LF)) ) - hdrLen++; - buffer[hdrLen-1] = '\015'; - buffer[hdrLen] = '\012'; - buffer[hdrLen+1] = '\0'; - } - - if (!strncasecomp(line, "BCC:", 4) || - !strncasecomp(line, "FCC:", 4) || - !strncasecomp(line, CONTENT_LENGTH ":", - CONTENT_LENGTH_LEN + 1) || - !strncasecomp(line, "Lines:", 6) || - !strncasecomp(line, "Status:", 7) || - !strncasecomp(line, X_MOZILLA_STATUS ":", - X_MOZILLA_STATUS_LEN+1) || - !strncasecomp(line, X_MOZILLA_NEWSHOST ":", - X_MOZILLA_NEWSHOST_LEN+1) || - !strncasecomp(line, X_UIDL ":", X_UIDL_LEN+1) || - !strncasecomp(line, "X-VM-", 5)) - { - skipping = TRUE; - continue; - } - - PUSH(line); - - if (*line == CR || *line == LF) { - break; // Now can do normal reads for the body. - } - } - } - - - while (1) { - status = XP_FileRead(buffer, MIME_BUFFER_SIZE, file); - if (status < 0) { - goto FAIL; - } else if (status == 0) { - break; - } - - status = PushBody(buffer, status); - if (status < 0) goto FAIL; - } - } - - if (m_encoder_data) { - status = MimeEncoderDestroy(m_encoder_data, FALSE); - m_encoder_data = NULL; - if (status < 0) goto FAIL; - } - - if (m_numchildren > 0) { - XP_ASSERT(separator); - for (int i=0 ; i<m_numchildren ; i++) { - PUSH(CRLF); - PUSH("--"); - PUSH(separator); - PUSH(CRLF); - status = m_children[i]->Write(); - if (status < 0) goto FAIL; - } - PUSH(CRLF); - PUSH("--"); - PUSH(separator); - PUSH("--"); - PUSH(CRLF); - } - - - -FAIL: - FREEIF(separator); - if (file) XP_FileClose(file); - if (m_intlDocToMailConverter) { - INTL_DestroyCharCodeConverter(m_intlDocToMailConverter); - m_intlDocToMailConverter = NULL; - } - return status; -#else - return 0; -#endif //!MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE -} diff --git a/mozilla/lib/mailto/msgsendp.h b/mozilla/lib/mailto/msgsendp.h deleted file mode 100644 index 3ddf6f78dcd..00000000000 --- a/mozilla/lib/mailto/msgsendp.h +++ /dev/null @@ -1,120 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#ifndef MSG_SENDP_H -#define MSG_SENDP_H - - -#include "msgzap.h" -#include "mimeenc.h" - -class MSG_SendMimeDeliveryState; - -typedef int (*MSG_SendPartWriteFunc)(const char* line, int32 size, - XP_Bool isheader, void* closure); - - -#if !defined(MOZ_ENDER_MIME) || defined(MOZ_MAIL_COMPOSE) -class MSG_SendPart : public MSG_ZapIt { -#else -class MSG_SendPart { -#endif /* !MOZ_ENDER_MIME || MOZ_MAIL_COMPOSE */ -public: - MSG_SendPart(MSG_SendMimeDeliveryState* state, int16 part_csid = 0); - virtual ~MSG_SendPart(); // Note that the destructor also destroys - // any children that were added. - - virtual int Write(); - - virtual int SetFile(const char* filename, XP_FileType filetype); - const char* GetFilename() {return m_filename;} - XP_FileType GetFiletype() {return m_filetype;} - - virtual int SetBuffer(const char* buffer); - const char* GetBuffer() {return m_buffer;} - - virtual int SetType(const char* type); - const char* GetType() {return m_type;} - - int16 GetCSID() { return m_csid; } - - virtual int SetOtherHeaders(const char* other); - const char* SetOtherHeaders() {return m_other;} - virtual int AppendOtherHeaders(const char* moreother); - - virtual int SetMimeDeliveryState(MSG_SendMimeDeliveryState* state); - - // Note that the MSG_SendPart class will take over ownership of the - // MimeEncoderData* object, deleting it when it chooses. (This is - // necessary because deleting these objects is the only current way to - // flush out the data in them.) - int SetEncoderData(MimeEncoderData* data); - MimeEncoderData *GetEncoderData() {return m_encoder_data;} - - int SetStripSensitiveHeaders(XP_Bool value) { - m_strip_sensitive_headers = value; - return 0; - } - XP_Bool GetStripSensitiveHeaders() {return m_strip_sensitive_headers;} - - virtual int AddChild(MSG_SendPart* child); - - int32 GetNumChildren() {return m_numchildren;} - MSG_SendPart* GetChild(int32 which); - MSG_SendPart* DetachChild(int32 which); - - virtual int SetMainPart(XP_Bool value); - XP_Bool IsMainPart() {return m_mainpart;} - - -protected: - int CopyString(char** dest, const char* src); - int PushBody(char* buffer, int32 length); - - MSG_SendMimeDeliveryState* m_state; - MSG_SendPart* m_parent; - char* m_filename; - XP_FileType m_filetype; - char* m_buffer; - char* m_type; - char* m_other; - int16 m_csid; // charset ID associated with this part - XP_Bool m_strip_sensitive_headers; - MimeEncoderData *m_encoder_data; /* Opaque state for base64/qp encoder. */ - - MSG_SendPart** m_children; - int32 m_numchildren; - - // Data used while actually writing. - XP_Bool m_firstBlock; - XP_Bool m_needIntlConversion; - CCCDataObject m_intlDocToMailConverter; - - XP_Bool m_mainpart; - - XP_Bool m_just_hit_CR; - - static int32 M_counter; -}; - - - -#endif /* MSG_SENDP_H */ diff --git a/mozilla/lib/mailto/msgurlq.cpp b/mozilla/lib/mailto/msgurlq.cpp deleted file mode 100644 index 8ebc8df4fa7..00000000000 --- a/mozilla/lib/mailto/msgurlq.cpp +++ /dev/null @@ -1,506 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// - -#include "msg.h" -#include "msgurlq.h" -#include "msgpane.h" - - -MSG_UrlQueueElement::MSG_UrlQueueElement (const char *url, MSG_UrlQueue *queue, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, NET_ReloadMethod reloadMethod, FO_Present_Types outputFormat) -{ - m_queue = queue; - m_pane = pane; - m_urlString = XP_STRDUP(url); - m_exitFunction = exitFunction; - m_reloadMethod = reloadMethod; - m_url = NULL; - m_callGetURLDirectly = FALSE; - m_outputFormat = outputFormat; -} - -MSG_UrlQueueElement::MSG_UrlQueueElement (URL_Struct *url, MSG_UrlQueue *queue, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, XP_Bool skipFE, FO_Present_Types outputFormat) -{ - m_queue = queue; - m_pane = pane; - m_urlString = XP_STRDUP(url->address); - m_exitFunction = exitFunction; - m_reloadMethod = url->force_reload; - m_url = url; - m_callGetURLDirectly = skipFE; - m_outputFormat = outputFormat; -} - -MSG_UrlQueueElement::MSG_UrlQueueElement (URL_Struct *urls, MSG_UrlQueue *q) -{ - m_queue = q; - m_pane = urls->msg_pane; - m_urlString = XP_STRDUP(urls->address);; - m_url = urls; - m_exitFunction = NULL; - m_reloadMethod = NET_DONT_RELOAD; - m_callGetURLDirectly = FALSE; - m_outputFormat = FO_CACHE_AND_PRESENT; -} - -MSG_UrlQueueElement::~MSG_UrlQueueElement() -{ - FREEIF(m_urlString); -// if (m_url && m_callGetURLDirectly) -// NET_FreeURLStruct(m_url); // Tempting, but not our job -} - -void MSG_UrlQueueElement::PrepareToRun() -{ - // nothing we have to do right now for queue elements. - return; -} - -char* MSG_UrlQueueElement::GetURLString() -{ - if (m_urlString) - return m_urlString; - if (m_url) - return(m_url->address); - return(NULL); -} - -URL_Struct* MSG_UrlQueueElement::GetURLStruct() -{ - if (!m_url) - m_url = NET_CreateURLStruct( m_urlString, NET_DONT_RELOAD); - return(m_url); -} - - -MSG_UrlLocalMsgCopyQueueElement::MSG_UrlLocalMsgCopyQueueElement(MessageCopyInfo * info, const char * url, MSG_UrlQueue * q, - Net_GetUrlExitFunc * func, MSG_Pane * pane, NET_ReloadMethod reloadMethod) - : MSG_UrlQueueElement (url, q, func, pane, reloadMethod) -{ - m_copyInfo = info; -} - -MSG_UrlLocalMsgCopyQueueElement::MSG_UrlLocalMsgCopyQueueElement(MessageCopyInfo * info, URL_Struct * url, MSG_UrlQueue * q, - Net_GetUrlExitFunc * func, MSG_Pane * pane, XP_Bool skipFE) - : MSG_UrlQueueElement (url, q, func, pane, skipFE) -{ - m_copyInfo = info; -} - -MSG_UrlLocalMsgCopyQueueElement::MSG_UrlLocalMsgCopyQueueElement (MessageCopyInfo * info, URL_Struct * urls, MSG_UrlQueue * q) - : MSG_UrlQueueElement(urls, q) -{ - m_copyInfo = info; -} - -MSG_UrlLocalMsgCopyQueueElement::~MSG_UrlLocalMsgCopyQueueElement() -{ - // should we delete the copy info? I don't think so!! - // when copy was finished, a call to MSG_FolderInfo::CleanUpCopy deletes - // the copy info in the current context. Assuming our queue element isn't deleted before - // it is executed upon......we don't need to delete it. -} - -void MSG_UrlLocalMsgCopyQueueElement::PrepareToRun() -{ - MWContext * context = m_pane->GetContext(); - MessageCopyInfo * victim = NULL; - if (context) - { - victim = context->msgCopyInfo; - XP_ASSERT(!victim); // we actually should never have a victim....but if we do: - // the last copy info is done. - if (victim) - XP_FREEIF(victim); // local copies never have copy info chains, don't have to worry about nextCopyInfo - - context->msgCopyInfo = m_copyInfo; // set ourselves up as the next copy info - } -} - -//***************************************************************************** -// MSG_UrlQueue -- Intended to be a general purpose way to chain several -// URLs together using the exit functions -//***************************************************************************** - -const int MSG_UrlQueue::kNoSpecialIndex = -1; - -MSG_UrlQueue::MSG_UrlQueue (MSG_Pane *pane) -{ -#ifdef DEBUG - MSG_UrlQueue *existingQueue = FindQueue(pane); - if (existingQueue) - { - MSG_UrlQueueElement *elem = existingQueue->GetAt (existingQueue->m_runningUrl); - if (elem) - XP_Trace("trying to create queue while %s is running\n", elem->m_urlString); - } - XP_ASSERT(!existingQueue); -#endif - - m_pane = pane; - m_runningUrl = -1; - m_IndexOfNextUrl = kNoSpecialIndex; - m_inExitFunc = FALSE; - GetQueueArray()->Add (this); -} - - -MSG_UrlQueue::~MSG_UrlQueue () -{ - GetQueueArray()->Remove(this); - - for (int i = 0; i < GetSize (); i++) - { - MSG_UrlQueueElement *e = GetAt(i); - delete e; - } -} - -XPPtrArray * -MSG_UrlQueue::GetQueueArray() -{ - if (!m_queueArray) - m_queueArray = new XPPtrArray(); - return m_queueArray; -} - -XP_Bool MSG_UrlQueue::IsIMAPLoadFolderUrlQueue() -{ - return FALSE; -} - -void MSG_UrlQueue::AddUrl (const char *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, NET_ReloadMethod reloadMethod) -{ - MSG_UrlQueueElement *elem = NULL; - - if (!pane) - pane = m_pane; - elem = new MSG_UrlQueueElement (url, this, exitFunction, pane, reloadMethod); - if (elem) - Add(elem); -} - -void MSG_UrlQueue::AddUrl (URL_Struct *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, XP_Bool skipFE, FO_Present_Types outputFormat) -{ - MSG_UrlQueueElement * elem = NULL; - if (!pane) - pane = m_pane; - elem = new MSG_UrlQueueElement(url, this, exitFunction, pane, skipFE, outputFormat); - if (elem) - Add(elem); -} - -void MSG_UrlQueue::AddLocalMsgCopyUrl(MessageCopyInfo * info, const char *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane * pane, NET_ReloadMethod reloadMethod) -{ - MSG_UrlLocalMsgCopyQueueElement *elem = NULL; - - if (!pane) - pane = m_pane; - elem = new MSG_UrlLocalMsgCopyQueueElement (info, url, this, exitFunction, pane, reloadMethod); - if (elem) - Add(elem); -} - -/* static */ MSG_UrlQueue * MSG_UrlQueue::FindQueueWithSameContext(MSG_Pane *pane) -{ - MSG_UrlQueue * q = NULL; - - XP_ASSERT(pane); - if (pane) - { - q = MSG_UrlQueue::FindQueue(pane); - MSG_Pane *QPane = pane->GetFirstPaneForContext(pane->GetContext()); - while (!q && QPane) - { - q = MSG_UrlQueue::FindQueue(QPane); - if (!q) - QPane = pane->GetNextPaneForContext(QPane, pane->GetContext()); - } -#ifdef DEBUG_bienvenu - if (q && QPane != pane) - XP_Trace("found queue for different pane with same context!\n"); -#endif - } - return q; -} - -/* static */ MSG_UrlQueue * MSG_UrlQueue::GetOrCreateUrlQueue (MSG_Pane * pane, XP_Bool * newQueue) -// The following code appeared in just about every AddUrl method or variant thereof. I've generalized it in this single -// routine. -// Returns: pointer to the queue for the pane. If we had to create the queue, then newQueue is set to TRUE; -{ - *newQueue = FALSE; - MSG_UrlQueue *q = FindQueueWithSameContext(pane); - if (!q) - { - q = new MSG_UrlQueue(pane); - *newQueue = TRUE; - } - // we seem to get in this state where we're not running a url but the queue - // thinks we are. - if (! (q->m_inExitFunc || q->m_runningUrl == -1 || XP_IsContextBusy(pane->GetContext()))) - { -#ifdef DEBUG - MSG_UrlQueueElement *runningElement = q->GetAt(q->m_runningUrl); - if (runningElement) - XP_Trace("q was running url %s\n", runningElement->GetURLString()); - XP_ASSERT(FALSE); -#endif - } - return q; -} - - -/* static */ MSG_UrlQueue * MSG_UrlQueue::AddUrlToPane (const char *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, NET_ReloadMethod reloadMethod) -{ - MSG_UrlQueue *q; - MSG_UrlQueueElement *elem = NULL; - XP_Bool newQ = FALSE; - - q = GetOrCreateUrlQueue(pane, &newQ); - if (q) - { - elem = new MSG_UrlQueueElement (url, q, exitFunction, pane, reloadMethod); - if (elem) - q->Add(elem); - if (newQ) - q->GetNextUrl(); - } - return q; -} - -/* static*/ MSG_UrlQueue *MSG_UrlQueue::AddLocalMsgCopyUrlToPane (MessageCopyInfo * info, const char *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, NET_ReloadMethod reloadMethod) -{ - MSG_UrlQueue *q; - MSG_UrlLocalMsgCopyQueueElement *elem = NULL; - XP_Bool newQ = FALSE; - - q = GetOrCreateUrlQueue(pane, &newQ); - - if (q) - { - elem = new MSG_UrlLocalMsgCopyQueueElement (info, url, q, exitFunction, pane, reloadMethod); - if (elem) - q->Add(elem); - if (newQ) - q->GetNextUrl(); - } - return q; -} - -/* static */ MSG_UrlQueue *MSG_UrlQueue::AddUrlToPane (URL_Struct *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, XP_Bool skipFE, FO_Present_Types outputFormat) -{ - MSG_UrlQueue *q; - MSG_UrlQueueElement *elem = NULL; - XP_Bool newQ = FALSE; - - q = GetOrCreateUrlQueue(pane, &newQ); - if (q) - { - elem = new MSG_UrlQueueElement (url, q, exitFunction, pane, skipFE, outputFormat); - if (elem) - q->Add(elem); - if (newQ) - q->GetNextUrl(); - } - return q; -} - -/* static */ MSG_UrlQueue *MSG_UrlQueue::AddLocalMsgCopyUrlToPane(MessageCopyInfo * info, URL_Struct * url, Net_GetUrlExitFunc * exitFunction, MSG_Pane * pane, XP_Bool skipFE) -{ - MSG_UrlQueue *q; - MSG_UrlLocalMsgCopyQueueElement *elem = NULL; - XP_Bool newQ = FALSE; - - q = GetOrCreateUrlQueue(pane, &newQ); - if (q) - { - elem = new MSG_UrlLocalMsgCopyQueueElement (info, url, q, exitFunction, pane, skipFE); - if (elem) - q->Add(elem); - if (newQ) - q->GetNextUrl(); - } - return q; -} - - -void MSG_UrlQueue::AddUrlAt (int where, const char *url, Net_GetUrlExitFunc *exitFunction, MSG_Pane *pane, NET_ReloadMethod reloadMethod) -{ - if (!pane) - pane = m_pane; - - MSG_UrlQueueElement *elem = new MSG_UrlQueueElement (url, this, exitFunction, pane, reloadMethod); - if (elem) - InsertAt (where, elem); -} - -void MSG_UrlQueue::AddLocalMsgCopyUrlAt (MessageCopyInfo * info, int where, const char * url, Net_GetUrlExitFunc * exitFunction, MSG_Pane * pane, NET_ReloadMethod reloadMethod) -{ - if (!pane) - pane = m_pane; - - MSG_UrlLocalMsgCopyQueueElement *elem = new MSG_UrlLocalMsgCopyQueueElement (info, url, this, exitFunction, pane, reloadMethod); - if (elem) - InsertAt (where, elem); -} - - -void MSG_UrlQueue::GetNextUrl() -{ - int err = 0; - - MSG_UrlQueueElement *elem = GetAt(++m_runningUrl); - XP_ASSERT(elem); - if (elem) - { - // we need to make sure the queue element is ready to be run!!! - elem->PrepareToRun(); - - if (!elem->m_url) - { - elem->m_url = NET_CreateURLStruct (elem->m_urlString, elem->m_reloadMethod); - if (!elem->m_url) - return; // (MsgERR) MK_OUT_OF_MEMORY; - } - if (elem->m_url && XP_STRLEN(elem->m_url->address) > 0) - { - elem->m_url->internal_url = TRUE; - elem->m_url->pre_exit_fn = &MSG_UrlQueue::ExitFunction; - if (elem->m_callGetURLDirectly) - { - elem->m_url->pre_exit_fn = NULL; - err = NET_GetURL(elem->m_url, elem->m_outputFormat, elem->m_pane->GetContext(), MSG_UrlQueue::ExitFunction); - } else - { -#ifdef MOZ_MAIL_NEWS - err = elem->m_pane->GetURL (elem->m_url, FALSE); -#else /* MOZ_MAIL_NEWS */ - XP_ASSERT(0); -#endif /* MOZ_MAIL_NEWS */ - } - } - else - { - elem->m_url->msg_pane = m_pane; - CallExitAndChain(elem->m_url, 0, elem->m_pane->GetContext()); - } - } -} - -void MSG_UrlQueue::HandleUrlQueueInterrupt(URL_Struct * URL_s, int status, MWContext * window_id) -{ - for (int i = 0; i < m_interruptCallbacks.GetSize(); i++) - { - MSG_UrlQueueInterruptFunc *exitFunc = (MSG_UrlQueueInterruptFunc *) m_interruptCallbacks.GetAt(i); - if (exitFunc) - (*exitFunc) (this, URL_s, status, window_id); - } - // default is to do nothing -} - -/*static*/ XPPtrArray *MSG_UrlQueue::m_queueArray = NULL; - - -/*static*/ MSG_UrlQueue *MSG_UrlQueue::FindQueue (const char *url, MWContext *context) -{ - for (int i = 0; i < GetQueueArray()->GetSize(); i++) - { - MSG_UrlQueue *queue = (MSG_UrlQueue*)(GetQueueArray()->GetAt(i)); - for (int j = 0; j < queue->GetSize(); j++) - { - MSG_UrlQueueElement *elem = queue->GetAt(j); - - // pane has been deleted - remove element from queue - if (!MSG_Pane::PaneInMasterList(elem->m_pane)) - { -#ifdef DEBUG_akkana - printf("FindQueue: Removing deleted pane\n"); -#endif /* DEBUG */ - queue->RemoveAt(j--); - delete elem; - } - else if (elem->m_pane->GetContext() == context) - { - if (elem->m_urlString && !XP_STRCMP(elem->m_urlString, url)) - return queue; - } - } - } - return NULL; -} - - -/*static*/ MSG_UrlQueue *MSG_UrlQueue::FindQueue (MSG_Pane *pane) -{ - for (int i = 0; i < GetQueueArray()->GetSize (); i++) - { - MSG_UrlQueue *queue = (MSG_UrlQueue*)(GetQueueArray()->GetAt(i)); - if (queue->m_pane == pane) - return queue; - } - return NULL; -} - -/*static*/ void MSG_UrlQueue::ExitFunction (URL_Struct *URL_s, int status, MWContext *window_id) -{ - MSG_UrlQueue *queue = FindQueue (URL_s->address, window_id); - XP_ASSERT(queue); - if (queue) - queue->CallExitAndChain(URL_s, status, window_id); -} - -// Note that this can delete itself if at the end of its list. -void MSG_UrlQueue::CallExitAndChain(URL_Struct *URL_s, int status, MWContext *window_id) -{ - MSG_UrlQueueElement *elem = GetAt (m_runningUrl); - if (elem->m_exitFunction) - { - m_inExitFunc = TRUE; - elem->m_exitFunction (URL_s, status, window_id); - m_inExitFunc = FALSE; - } - if ((m_runningUrl >= GetSize() - 1) || status == MK_INTERRUPTED) - { -if (status == MK_INTERRUPTED) - HandleUrlQueueInterrupt(URL_s, status, window_id); - delete this; - } - else - GetNextUrl(); -} - - -extern "C" int MSG_GetUrlQueueSize (const char *url, MWContext *context) -{ - MSG_UrlQueue *queue = MSG_UrlQueue::FindQueue (url, context); - if (queue) - return queue->GetSize(); - return 0; -} - -void MSG_UrlQueue::AddInterruptCallback(MSG_UrlQueueInterruptFunc *interruptFunc) -{ - m_interruptCallbacks.Add((void *) interruptFunc); -} - - diff --git a/mozilla/lib/mailto/msgurlq.h b/mozilla/lib/mailto/msgurlq.h deleted file mode 100644 index 8c43b0ac2a0..00000000000 --- a/mozilla/lib/mailto/msgurlq.h +++ /dev/null @@ -1,210 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// -// -// - -#ifndef _MSGURLQ_H_ -#define _MSGURLQ_H_ - -#include "ptrarray.h" -#include "net.h" - -class MSG_Pane; -class ABook; -class MSG_UrlQueue; - - -/******************************************************************************************************************** -Notes: Each URL in a MSG_UrlQueue is represented by a queue element for any instance data it - needs. Since a pane can have one and only one URL queue, it would be nice to be able to have queue elements - for different types of URLs (local copy message urls, LDAP to AB, etc.) To support this effort, it will be common - practice to subclass MSG_UrlQueueElement with a queue element capable of handling your new type of url. In addition, - your new subclass should support a virtual method called PrepareToRun() if you need to make any specific changes to - things like the current context for your new url before it is run. MSG_UrlQueue will always call the element's - PrepareToRun method before actually running that URL in the queue. You will also need to modify MSG_UrlQueue to - add methods for adding urls of your new type. - -*********************************************************************************************************************/ - -//***************************************************************************** -// MSG_UrlQueueElement -- Each URL in a MSG_UrlQueue is represented by a -// MSG_UrlQueueElement for any instance data it needs -//***************************************************************************** - -class MSG_UrlQueueElement -{ - friend MSG_UrlQueue; - -public: - MSG_UrlQueueElement (const char *, MSG_UrlQueue *, Net_GetUrlExitFunc *, MSG_Pane *, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD, FO_Present_Types outputFormat = FO_CACHE_AND_PRESENT); - MSG_UrlQueueElement (URL_Struct *, MSG_UrlQueue *, Net_GetUrlExitFunc *, MSG_Pane *, XP_Bool skipFE = FALSE, FO_Present_Types outputFormat = FO_CACHE_AND_PRESENT); - MSG_UrlQueueElement (URL_Struct * urls, MSG_UrlQueue *q); - virtual ~MSG_UrlQueueElement (); - virtual URL_Struct* GetURLStruct(); - virtual char* GetURLString(); - - virtual void PrepareToRun(); // the queue element is about to be run....(added in particular for subclasses) - -protected: - char *m_urlString; - XP_Bool m_callGetURLDirectly; - MSG_Pane *m_pane; - URL_Struct *m_url; - MSG_UrlQueue *m_queue; - Net_GetUrlExitFunc *m_exitFunction; - NET_ReloadMethod m_reloadMethod; - FO_Present_Types m_outputFormat; -}; - - -//************************************************************************************ -// MSG_UrlLocalMsgCopyQueueElement - we want a queue element type which can handle -// LOCAL message copy urls. Don't try this with IMAP -// copy URLs. -//************************************************************************************ - -class MSG_UrlLocalMsgCopyQueueElement : public MSG_UrlQueueElement -{ -public: - MSG_UrlLocalMsgCopyQueueElement (MessageCopyInfo *, const char *, MSG_UrlQueue *, Net_GetUrlExitFunc *, - MSG_Pane *, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - MSG_UrlLocalMsgCopyQueueElement (MessageCopyInfo *, URL_Struct *, MSG_UrlQueue *, Net_GetUrlExitFunc *, - MSG_Pane *, XP_Bool skipFE = FALSE); - MSG_UrlLocalMsgCopyQueueElement (MessageCopyInfo *, URL_Struct * urls, MSG_UrlQueue * q); - - virtual ~MSG_UrlLocalMsgCopyQueueElement(); - virtual void PrepareToRun(); // element is about to be run, we need to clobber context's copy info and replace with ours - -protected: - MessageCopyInfo * m_copyInfo; -}; - - -//****************************************************************************************************** -// MSG_UrlQueue -- Handles a queue of URLs which get fired in serial. This is -// a stopgap measure to compensate for the lack of multiple running -// URLs per MWContext -// -// Note: Must always call the queue element's PrepareToRun method before running a URL for that element. -//******************************************************************************************************* - -typedef void MSG_UrlQueueInterruptFunc (MSG_UrlQueue *queue, URL_Struct *URL_s, int status, MWContext *window_id); - - -class MSG_UrlQueue : public XPPtrArray -{ -public: - MSG_UrlQueue (MSG_Pane *pane); - virtual ~MSG_UrlQueue (); - - // it would be nice to use signature overloading for adding urls. Later, we might want to do this!!! - - // Use this for regular add-to-tail functionality - static MSG_UrlQueue *AddUrlToPane (const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - static MSG_UrlQueue * AddLocalMsgCopyUrlToPane (MessageCopyInfo * info, const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - - // Use this for regular add-to-tail functionality with URL_Struct filled in - static MSG_UrlQueue * AddUrlToPane (URL_Struct *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, XP_Bool skipFE = FALSE, FO_Present_Types outputFormat = FO_CACHE_AND_PRESENT); - static MSG_UrlQueue * AddLocalMsgCopyUrlToPane (MessageCopyInfo * info, URL_Struct * url, Net_GetUrlExitFunc * exitFunction = NULL, MSG_Pane * pane = NULL, XP_Bool skipFE = FALSE); - - void AddUrl (const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - void AddUrl(URL_Struct *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, XP_Bool skipFE = FALSE, FO_Present_Types outputFormat = FO_CACHE_AND_PRESENT); - void AddLocalMsgCopyUrl(MessageCopyInfo * info, const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane * pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - - // Use this if you need to insert a URL in the middle of the queue - virtual void AddUrlAt (int where, const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - virtual void AddLocalMsgCopyUrlAt (MessageCopyInfo * info, int where, const char * url, Net_GetUrlExitFunc * exitFunction = NULL, MSG_Pane * pane = NULL, NET_ReloadMethod reloadmethod = NET_DONT_RELOAD); - - // Use this if you need to know which URL is running - virtual int GetCursor () { return m_runningUrl; } - - // start the queue by calling this - virtual void GetNextUrl (); - - // which pane is this queue running url's in? - virtual MSG_Pane* GetPane() { return m_pane; } - - // Use this if you need to know which queue a URL is on - static MSG_UrlQueue *FindQueue (const char *url, MWContext *context); - static MSG_UrlQueue *FindQueue (MSG_Pane *pane); - static MSG_UrlQueue *FindQueueWithSameContext(MSG_Pane *pane); - - // Use this if you need to know the queue for a pane - static MSG_UrlQueue *FindQueue (const char *url, MSG_Pane *pane); - // used by subclasses who are designed to use other meta data for ordering urls. - // an example is MSG_ImapLoadFolderUrlQueue - static const int kNoSpecialIndex; - void SetSpecialIndexOfNextUrl(int index) { m_IndexOfNextUrl = index; } - virtual XP_Bool IsIMAPLoadFolderUrlQueue(); - static void HandleFolderLoadInterrupt(MSG_UrlQueue *queue, URL_Struct *URL_s, int status, MWContext *window_id); - virtual void AddInterruptCallback(MSG_UrlQueueInterruptFunc *interruptFunc); -protected: - - MSG_UrlQueueElement *GetAt(int i) { return (MSG_UrlQueueElement*) XPPtrArray::GetAt(i); } - - // called if ExitFunction status == MK_INTERRUPTED - virtual void HandleUrlQueueInterrupt(URL_Struct *URL_s, int status, MWContext *window_id); - - static void ExitFunction (URL_Struct *URL_s, int status, MWContext *window_id); - void CallExitAndChain (URL_Struct *URL_s, int status, MWContext *window_id); - - static MSG_UrlQueue * GetOrCreateUrlQueue (MSG_Pane * pane, XP_Bool * newQueue); - - int m_runningUrl; - MSG_Pane *m_pane; - static XPPtrArray *m_queueArray; - int m_IndexOfNextUrl; - XP_Bool m_inExitFunc; - XPPtrArray m_interruptCallbacks; - static XPPtrArray *GetQueueArray(); -}; - - -class MSG_AddLdapToAddressBookQueue : public MSG_UrlQueue -{ -public: - - MSG_AddLdapToAddressBookQueue (MSG_Pane *); - - virtual void GetNextUrl (); - - ABook *m_addressBook; -}; - - -class MSG_ImapLoadFolderUrlQueue : public MSG_UrlQueue -{ -public: - MSG_ImapLoadFolderUrlQueue(MSG_Pane *pane); - - // Use this for regular add-to-tail functionality, or use the index of it has been set. - // Used to ensure ordering of message copy urls when going offline - virtual void AddUrl (const char *url, Net_GetUrlExitFunc *exitFunction = NULL, MSG_Pane *pane = NULL, NET_ReloadMethod reloadMethod = NET_DONT_RELOAD); - virtual XP_Bool IsIMAPLoadFolderUrlQueue(); -protected: - // called if ExitFunction status == MK_INTERRUPTED -// virtual void HandleUrlQueueInterrupt(URL_Struct *URL_s, int status, MWContext *window_id); - -}; - -#endif diff --git a/mozilla/lib/mailto/msgutils.c b/mozilla/lib/mailto/msgutils.c deleted file mode 100644 index b8639c4e768..00000000000 --- a/mozilla/lib/mailto/msgutils.c +++ /dev/null @@ -1,856 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* msgutils.c --- various and sundry - */ - -#include "msg.h" -#include "xp_time.h" -#include "xpgetstr.h" -#include "xplocale.h" -#include "htmldlgs.h" -#include "prefapi.h" -#include "xp_qsort.h" - -extern int MK_OUT_OF_MEMORY; -extern int MK_MSG_NON_MAIL_FILE_WRITE_QUESTION; -extern int MK_MSG_HTML_DOMAINS_DIALOG; -extern int MK_MSG_HTML_DOMAINS_DIALOG_TITLE; - -#ifdef XP_MAC -#pragma warn_unusedarg off -#endif - -int -msg_GetURL(MWContext* context, URL_Struct* url, XP_Bool issafe) -{ - XP_ASSERT(context); - - /* phil & bienvenu think issafe means "allowed to start another URL even if - one is already runing". e.g. delete from msgPane, and load next msg */ - if (!issafe) - msg_InterruptContext (context, TRUE); - - url->internal_url = TRUE; - if (!url->open_new_window_specified) - { - url->open_new_window_specified = TRUE; - url->open_new_window = FALSE; - } - - return FE_GetURL(context, url); -} - - -void -msg_InterruptContext(MWContext* context, XP_Bool safetoo) -{ - XP_InterruptContext(context); - - -#ifdef NOTDEF /* ###tw */ - - struct MSG_Frame *msg_frame; - if (!context) return; - if (safetoo || !context->msgframe || - !context->msgframe->safe_background_activity) { - /* save msg_frame in case context gets deleted on interruption */ - msg_frame = context->msgframe; - XP_InterruptContext(context); - if (msg_frame) { - msg_frame->safe_background_activity = FALSE; - } - } -#endif -} - - -XP_Bool -MSG_RequiresComposeWindow (const char *url) -{ - if (!url) return FALSE; - if (!strncasecomp (url, "mailto:", 7)) - { - return TRUE; - } - return FALSE; -} - - -XP_Bool -MSG_RequiresBrowserWindow (const char *url) -{ - if (!url) return FALSE; - if (MSG_RequiresNewsWindow (url) || - MSG_RequiresMailWindow (url) || - !strncasecomp (url, "about:", 6) || - !strncasecomp (url, "addbook:", 8) || - !strncasecomp (url, "addbook-ldap", 12) || /* no colon so addbook-ldap and addbook-ldaps both match */ - !strncasecomp (url, "mailto:", 7) || - !strncasecomp (url, "view-source:", 12) || - !strncasecomp (url, "internal-callback-handler:", 26) || - !strncasecomp (url, "internal-panel-handler", 22) || - !strncasecomp (url, "internal-dialog-handler", 23)) - return FALSE; - - else if (!strncasecomp (url, "news:", 5) || - !strncasecomp (url, "snews:", 6) || - !strncasecomp (url, "mailbox:", 8) || - !strncasecomp (url, "IMAP:", 5)) - { - /* Mail and news messages themselves don't require browser windows, - but their attachments do. */ - if (XP_STRSTR(url, "?part=") || XP_STRSTR(url, "&part=")) - return TRUE; - else - return FALSE; - } - else - return TRUE; -} - - - -/* If we're in a mail window, and clicking on a link which will itself - require a mail window, then don't allow this to show up in a different - window - since there can only be one mail window. - */ -XP_Bool -MSG_NewWindowProhibited (MWContext *context, const char *url) -{ - if (!context) return FALSE; - if ((context->type == MWContextMail && - MSG_RequiresMailWindow (url)) || - (context->type == MWContextNews && - MSG_RequiresNewsWindow (url)) || - (MSG_RequiresComposeWindow (url))) - return TRUE; - else - return FALSE; -} - - -char * -MSG_ConvertToQuotation (const char *string) -{ - int32 column = 0; - int32 newlines = 0; - int32 chars = 0; - const char *in; - char *out; - char *new_string; - - if (! string) return 0; - - /* First, count up the lines in the string. */ - for (in = string; *in; in++) - { - chars++; - if (*in == CR || *in == LF) - { - if (in[0] == CR && in[1] == LF) { - in++; - chars++; - } - newlines++; - column = 0; - } - else - { - column++; - } - } - /* If the last line doesn't end in a newline, pretend it does. */ - if (column != 0) - newlines++; - - /* 2 characters for each '> ', +1 for '\0', and + potential linebreak */ - new_string = (char *) XP_ALLOC (chars + (newlines * 2) + 1 + LINEBREAK_LEN); - if (! new_string) - return 0; - - column = 0; - out = new_string; - - /* Now copy. */ - for (in = string; *in; in++) - { - if (column == 0) - { - *out++ = '>'; - *out++ = ' '; - } - - *out++ = *in; - if (*in == CR || *in == LF) - { - if (in[0] == CR && in[1] == LF) - *out++ = *++in; - newlines++; - column = 0; - } - else - { - column++; - } - } - - /* If the last line doesn't end in a newline, add one. */ - if (column != 0) - { - XP_STRCPY (out, LINEBREAK); - out += LINEBREAK_LEN; - } - - *out = 0; - - return new_string; -} - - - -/* Given a string and a length, removes any "Re:" strings from the front. - It also deals with that "Re[2]:" thing that some mailers do. - - Returns TRUE if it made a change, FALSE otherwise. - - The string is not altered: the pointer to its head is merely advanced, - and the length correspondingly decreased. - */ -XP_Bool -msg_StripRE(const char **stringP, uint32 *lengthP) -{ - const char *s, *s_end; - const char *last; - uint32 L; - XP_Bool result = FALSE; - XP_ASSERT(stringP); - if (!stringP) return FALSE; - s = *stringP; - L = lengthP ? *lengthP : XP_STRLEN(s); - - s_end = s + L; - last = s; - - AGAIN: - - while (s < s_end && XP_IS_SPACE(*s)) - s++; - - if (s < (s_end-2) && - (s[0] == 'r' || s[0] == 'R') && - (s[1] == 'e' || s[1] == 'E')) - { - if (s[2] == ':') - { - s = s+3; /* Skip over "Re:" */ - result = TRUE; /* Yes, we stripped it. */ - goto AGAIN; /* Skip whitespace and try again. */ - } - else if (s[2] == '[' || s[2] == '(') - { - const char *s2 = s+3; /* Skip over "Re[" */ - - /* Skip forward over digits after the "[". */ - while (s2 < (s_end-2) && XP_IS_DIGIT(*s2)) - s2++; - - /* Now ensure that the following thing is "]:" - Only if it is do we alter `s'. - */ - if ((s2[0] == ']' || s2[0] == ')') && s2[1] == ':') - { - s = s2+2; /* Skip over "]:" */ - result = TRUE; /* Yes, we stripped it. */ - goto AGAIN; /* Skip whitespace and try again. */ - } - } - } - - /* Decrease length by difference between current ptr and original ptr. - Then store the current ptr back into the caller. */ - if (lengthP) *lengthP -= (s - (*stringP)); - *stringP = s; - - return result; -} - - - - -char* -msg_GetDummyEnvelope(void) -{ - static char result[75]; - char *ct; - time_t now = time ((time_t *) 0); -#if defined (XP_WIN) - if (now < 0 || now > 0x7FFFFFFF) - now = 0x7FFFFFFF; -#endif - ct = ctime(&now); - XP_ASSERT(ct[24] == CR || ct[24] == LF); - ct[24] = 0; - /* This value must be in ctime() format, with English abbreviations. - strftime("... %c ...") is no good, because it is localized. */ - XP_STRCPY(result, "From - "); - XP_STRCPY(result + 7, ct); - XP_STRCPY(result + 7 + 24, LINEBREAK); - return result; -} - -/* #define STRICT_ENVELOPE */ - -XP_Bool -msg_IsEnvelopeLine(const char *buf, int32 buf_size) -{ -#ifdef STRICT_ENVELOPE - /* The required format is - From jwz Fri Jul 1 09:13:09 1994 - But we should also allow at least: - From jwz Fri, Jul 01 09:13:09 1994 - From jwz Fri Jul 1 09:13:09 1994 PST - From jwz Fri Jul 1 09:13:09 1994 (+0700) - - We can't easily call XP_ParseTimeString() because the string is not - null terminated (ok, we could copy it after a quick check...) but - XP_ParseTimeString() may be too lenient for our purposes. - - DANGER!! The released version of 2.0b1 was (on some systems, - some Unix, some NT, possibly others) writing out envelope lines - like "From - 10/13/95 11:22:33" which STRICT_ENVELOPE will reject! - */ - const char *date, *end; - - if (buf_size < 29) return FALSE; - if (*buf != 'F') return FALSE; - if (XP_STRNCMP(buf, "From ", 5)) return FALSE; - - end = buf + buf_size; - date = buf + 5; - - /* Skip horizontal whitespace between "From " and user name. */ - while ((*date == ' ' || *date == '\t') && date < end) - date++; - - /* If at the end, it doesn't match. */ - if (XP_IS_SPACE(*date) || date == end) - return FALSE; - - /* Skip over user name. */ - while (!XP_IS_SPACE(*date) && date < end) - date++; - - /* Skip horizontal whitespace between user name and date. */ - while ((*date == ' ' || *date == '\t') && date < end) - date++; - - /* Don't want this to be localized. */ -# define TMP_ISALPHA(x) (((x) >= 'A' && (x) <= 'Z') || \ - ((x) >= 'a' && (x) <= 'z')) - - /* take off day-of-the-week. */ - if (date >= end - 3) - return FALSE; - if (!TMP_ISALPHA(date[0]) || !TMP_ISALPHA(date[1]) || !TMP_ISALPHA(date[2])) - return FALSE; - date += 3; - /* Skip horizontal whitespace (and commas) between dotw and month. */ - if (*date != ' ' && *date != '\t' && *date != ',') - return FALSE; - while ((*date == ' ' || *date == '\t' || *date == ',') && date < end) - date++; - - /* take off month. */ - if (date >= end - 3) - return FALSE; - if (!TMP_ISALPHA(date[0]) || !TMP_ISALPHA(date[1]) || !TMP_ISALPHA(date[2])) - return FALSE; - date += 3; - /* Skip horizontal whitespace between month and dotm. */ - if (date == end || (*date != ' ' && *date != '\t')) - return FALSE; - while ((*date == ' ' || *date == '\t') && date < end) - date++; - - /* Skip over digits and whitespace. */ - while (((*date >= '0' && *date <= '9') || *date == ' ' || *date == '\t') && - date < end) - date++; - /* Next character should be a colon. */ - if (date >= end || *date != ':') - return FALSE; - - /* Ok, that ought to be enough... */ - -# undef TMP_ISALPHA - -#else /* !STRICT_ENVELOPE */ - - if (buf_size < 5) return FALSE; - if (*buf != 'F') return FALSE; - if (XP_STRNCMP(buf, "From ", 5)) return FALSE; - -#endif /* !STRICT_ENVELOPE */ - - return TRUE; -} - - - -XP_Bool -msg_ConfirmMailFile (MWContext *context, const char *file_name) -{ - XP_File in = XP_FileOpen (file_name, xpMailFolder, XP_FILE_READ_BIN); - char buf[100]; - char *s = buf; - int L; - if (!in) return TRUE; - L = XP_FileRead(buf, sizeof(buf)-2, in); - XP_FileClose (in); - if (L < 1) return TRUE; - buf[L] = 0; - while (XP_IS_SPACE(*s)) - s++, L--; - if (L > 5 && msg_IsEnvelopeLine(s, L)) - return TRUE; - PR_snprintf (buf, sizeof(buf), - XP_GetString (MK_MSG_NON_MAIL_FILE_WRITE_QUESTION), file_name); - return FE_Confirm (context, buf); -} - - -void msg_ClearMessageArea(MWContext* context) -{ - /* ###tw This needs to be replaced by stuff that notifies FE's the - right way */ -#ifndef _USRDLL - /* hack. Open a stream to layout, give it - whitespace (it needs something) and then close it - right away. This has the effect of getting the front end to - clear out the HTML display area. - */ - NET_StreamClass *stream; - static PA_InitData data; - URL_Struct *url; - if (!context) - return; - - data.output_func = LO_ProcessTag; - url = NET_CreateURLStruct ("", NET_NORMAL_RELOAD); - if (!url) return; - stream = PA_BeginParseMDL (FO_PRESENT, &data, url, context); - if (stream) - { - char buf[] = "<BODY></BODY>"; - int status = (*stream->put_block) (stream, buf, 13); - if (status < 0) - (*stream->abort) (stream, status); - else - (*stream->complete) (stream); - XP_FREE (stream); - } - NET_FreeURLStruct (url); - FE_SetProgressBarPercent (context, 0); -#endif -/* MSG_LoadMessage, with MSG_MESSAGEKEYNONE calls msg_ClearMessageArea, which -// has a bug (drawing the background in grey).  So I just changed MSG_LoadMessage() to -// do nothing for XP_MAC except set its m_Key to MSG_MESSAGEKEYNONE and exit.  This transfers -// the responsibility for clearing the message area to the front end.  So far, so good. -// -// Now, it's no good just painting the area, because the next refresh will redraw using the -// existing history entry.  So somehow we have to remove the history entry. -// There's no API for doing this, except calling SHIST_AddDocument with an entry whose -// address string is null or empty. -// -// If this state of affairs changes, this code will break, but I put in asserts to -// notify us about it. 98/01/21 -// --------------------------------------------------------------------------- -*/ -#if 0 - /* It would be nice to do it this way, but we need to cause a refresh in the fe */ - URL_Struct* url = NET_CreateURLStruct("", NET_NORMAL_RELOAD); - History_entry* newEntry; - LO_DiscardDocument(context); - XP_ASSERT(url); - newEntry = SHIST_CreateHistoryEntry(url, "Nobody Home"); - XP_FREEIF(url); - XP_ASSERT(newEntry); - /* Using an empty address string will cause "AddDocument" to do a removal of the old entry, -  // then delete the new entry, and exit. - */ - SHIST_AddDocument(context, newEntry); -#endif -} - -static MSG_HEADER_SET standard_header_set[] = { - MSG_TO_HEADER_MASK, - MSG_REPLY_TO_HEADER_MASK, - MSG_CC_HEADER_MASK, - MSG_BCC_HEADER_MASK, - MSG_NEWSGROUPS_HEADER_MASK, - MSG_FOLLOWUP_TO_HEADER_MASK - }; - -#define TOTAL_HEADERS (sizeof(standard_header_set)/sizeof(MSG_HEADER_SET)) - -extern int MSG_ExplodeHeaderField(MSG_HEADER_SET msg_header, const char * field, MSG_HeaderEntry ** return_list) -{ - XP_ASSERT(return_list); - *return_list = NULL; - if (field && strlen(field)) { - MSG_HeaderEntry *list=NULL; - char * name; - char * address ; - int count; - - count = MSG_ParseRFC822Addresses (field, &name, &address); - if (count > 0) { - char * address_start = address; - char * name_start = name; - int i; - - list = (MSG_HeaderEntry*)XP_ALLOC(sizeof(MSG_HeaderEntry)*count); - if (!list) - return(-1); - - for (i=0; i<count; i++) { - list[i].header_type = msg_header; - list[i].header_value = XP_STRDUP(address); - if (name && strlen(name)) - list[i].header_value = PR_smprintf("%s <%s>", name, address); - else - list[i].header_value = XP_STRDUP(address); - while (*address != '\0') - address++; - address++; - while (*name != '\0') - name++; - name++; - } - if (name) - XP_FREE(name_start); - if (address) - XP_FREE(address_start); - } - *return_list = list; - return count; - } - return(0); -} - -extern int MSG_CompressHeaderEntries( MSG_HeaderEntry * in_list, int list_size, MSG_HeaderEntry ** return_list) -{ - int total = 0; - *return_list = NULL; - if (in_list != NULL && list_size > 0) { - MSG_HeaderEntry * list = NULL; - char * new_header_value; - int i,j; - - for (i=0; i<TOTAL_HEADERS; i++) { - new_header_value = NULL; - for (j=0; j<list_size; j++) { - if (in_list[j].header_type == standard_header_set[i]) { - XP_Bool zero_init = FALSE; - int header_length = 0; - if (!new_header_value) - zero_init = TRUE; - else - header_length = XP_STRLEN(new_header_value)+1; - if (XP_STRLEN(in_list[j].header_value) == 0) - continue; - new_header_value = (char*)XP_REALLOC( - new_header_value, - header_length+XP_STRLEN(in_list[j].header_value)+XP_STRLEN(",")+1); - if (new_header_value == NULL) { - if (list != NULL) - XP_FREE(list); - /* don't forget to free up previous header_value entries */ - return(-1); - } - if (zero_init) - new_header_value[0]='\0'; - if (new_header_value && XP_STRLEN(new_header_value)) - XP_STRCAT(new_header_value,","); - XP_STRCAT(new_header_value,in_list[j].header_value); - } - } - if (new_header_value) { - total++; - list = (MSG_HeaderEntry *)XP_REALLOC(list,total*sizeof(MSG_HeaderEntry)); - if (list==NULL) { - if (new_header_value) - XP_FREE(new_header_value); - return(-1); - } - list[total-1].header_type = standard_header_set[i]; - list[total-1].header_value = new_header_value; - } - } - *return_list = list; - } - return(total); -} - - - -static int -msg_qsort_domains(const void* a, const void* b) -{ - return XP_STRCMP(*((const char**) a), *((const char**) b)); -} - - -static int -msg_generate_domains_list(char* domainlist, int* numfound, char*** returnlist) -{ - int num; - int i; - int j; - char* ptr; - char* endptr; - char** list = NULL; - for (num=0 , ptr = domainlist ; ptr ; num++, ptr = endptr) { - endptr = XP_STRCHR(ptr, ','); - if (endptr) endptr++; - } - if (num > 0) { - list = (char**) XP_CALLOC(num, sizeof(char*)); - if (!list) return MK_OUT_OF_MEMORY; - for (i=0 , ptr = domainlist ; ptr ; i++, ptr = endptr) { - endptr = XP_STRCHR(ptr, ','); - if (endptr) *endptr++ = '\0'; - XP_ASSERT(i < num); - if (i < num) list[i] = ptr; - } - XP_QSORT(list, num, sizeof(char*), msg_qsort_domains); - /* Now, remove any empty entries or duplicates. */ - for (i=0, j=0 ; i<num ; i++) { - ptr = list[i]; - if (ptr && (j == 0 || XP_STRCMP(ptr, list[j - 1]) != 0)) { - list[j++] = ptr; - } - } - num = j; - } - *numfound = num; - *returnlist = list; - return 0; -} - - -static PRBool -HTMLDomainsDialogDone(XPDialogState* state, char** argv, int argc, - unsigned int button) -{ - char* domainlist = NULL; - char* gone; - char* ptr; - char* endptr; - char** list = NULL; - int num; - int i; - int status; - - if (button != XP_DIALOG_OK_BUTTON) return PR_FALSE; - PREF_CopyCharPref("mail.htmldomains", &domainlist); - if (!domainlist || !*domainlist) return PR_FALSE; - gone = XP_FindValueInArgs("gone", argv, argc); - XP_ASSERT(gone); - if (!gone || !*gone) return PR_FALSE; - - status = msg_generate_domains_list(domainlist, &num, &list); - if (status < 0) goto FAIL; - - for (ptr = gone ; ptr ; ptr = endptr) { - endptr = XP_STRCHR(ptr, ','); - if (endptr) *endptr++ = '\0'; - if (*ptr) { - i = atoi(ptr); - XP_ASSERT(i >= 0 && i < num); - if (i >= 0 && i < num) { - XP_ASSERT(list[i]); - list[i] = NULL; - } - } - } - ptr = NULL; - for (i=0 ; i<num ; i++) { - if (list[i]) { - if (ptr) StrAllocCat(ptr, ","); - StrAllocCat(ptr, list[i]); - } - } - PREF_SetCharPref("mail.htmldomains", ptr ? ptr : ""); - PREF_SavePrefFile(); - FREEIF(ptr); - -FAIL: - FREEIF(list); - FREEIF(domainlist); - - return PR_FALSE; -} - - -int -MSG_DisplayHTMLDomainsDialog(MWContext* context) -{ - static XPDialogInfo dialogInfo = { - XP_DIALOG_OK_BUTTON | XP_DIALOG_CANCEL_BUTTON, - HTMLDomainsDialogDone, - 600, - 440 - }; - int status = 0; - char* domainlist; - char* list = NULL; - char* tmp; - XPDialogStrings* strings; - int i; - int num = 0; - char** array = NULL; - - PREF_CopyCharPref("mail.htmldomains", &domainlist); - - status = msg_generate_domains_list(domainlist, &num, &array); - if (status < 0) goto FAIL; - - for (i=0 ; i<num ; i++) { - tmp = PR_smprintf("<option value=%d>%s\n", i, array[i]); - if (!tmp) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - StrAllocCat(list, tmp); - XP_FREE(tmp); - } - - strings = XP_GetDialogStrings(MK_MSG_HTML_DOMAINS_DIALOG); - if (!strings) { - status = MK_OUT_OF_MEMORY; - goto FAIL; - } - XP_CopyDialogString(strings, 0, list ? list : ""); - XP_MakeHTMLDialog(context, &dialogInfo, MK_MSG_HTML_DOMAINS_DIALOG_TITLE, - strings, NULL,PR_FALSE); - - -FAIL: - FREEIF(array); - FREEIF(domainlist); - FREEIF(list); - return status; -} - -/* - * Does in-place modification of input param to conform with son-of-1036 rules - * - * A newsgroup component is one portion of the newsgroup name, separated by - * dots. So mcom.dev.fouroh has three newsgroup components. This function is - * only concerned with one component because that's what we need for virtual - * newsgroups. - */ -void msg_MakeLegalNewsgroupComponent (char *name) -{ - int i = 0; - char ch; - - while ((ch = name[i]) != '\0') - { - /* legal chars are 0-9,a-z, and +,-,_ */ - - if (!(ch >= '0' && ch <= '9')) - if (!(ch >= 'a' && ch <= 'z')) - if (!(ch == '+' || ch == '-' || ch == '_')) - { - /* ch is illegal. We can lowercase an uppercase letter - * but everything else goes to some legal char, like '_' - */ - if (ch >= 'A' && ch <= 'Z') - name[i] += 32; - else - name[i] = '_'; - } - i++; - - /* a newsgroup component is limited to 14 chars */ - if (i > 13) - { - name[i] = '\0'; - break; - } - } -} - -void MSG_SetPercentProgress(MWContext *context, int32 numerator, int32 denominator) -{ - XP_ASSERT(numerator <= denominator && numerator >= 0 && denominator > 0); - if (numerator > denominator || numerator < 0 || denominator < 0) - { - FE_SetProgressBarPercent(context, -1); - } - else if (denominator > 0) - { - int32 percent; - if (denominator > 100L) - percent = (numerator / (denominator / 100L)); - else - percent = (100L * numerator) / denominator; - FE_SetProgressBarPercent (context, percent); - } -} - -const char* MSG_FormatDateFromContext(MWContext *context, time_t date) -{ - /* fix i18n. Well, maybe. Isn't strftime() supposed to be i18n? */ - /* ftong- Well.... strftime() in Mac and Window is not really i18n */ - /* We need to use XP_StrfTime instead of strftime */ - static char result[40]; /* 30 probably not enough */ - time_t now = time ((time_t *) 0); - - int32 offset = XP_LocalZoneOffset() * 60L; /* Number of seconds between - local and GMT. */ - - int32 secsperday = 24L * 60L * 60L; - - int32 nowday = (now + offset) / secsperday; - int32 day = (date + offset) / secsperday; - - if (day == nowday) { - XP_StrfTime(context, result, sizeof(result), XP_TIME_FORMAT, - localtime(&date)); - } else if (day < nowday && day > nowday - 7) { - XP_StrfTime(context, result, sizeof(result), XP_WEEKDAY_TIME_FORMAT, - localtime(&date)); - } else { -#if defined (XP_WIN) - if (date < 0 || date > 0x7FFFFFFF) - date = 0x7FFFFFFF; -#endif - XP_StrfTime(context, result, sizeof(result), XP_DATE_TIME_FORMAT, - localtime(&date)); - } - - return result; -} - diff --git a/mozilla/lib/mailto/msgutils.h b/mozilla/lib/mailto/msgutils.h deleted file mode 100644 index 981b56d3609..00000000000 --- a/mozilla/lib/mailto/msgutils.h +++ /dev/null @@ -1,88 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -/* msgutils.h --- various and sundry - */ - -XP_BEGIN_PROTOS - -/* Interface to FE_GetURL, which should never be called directly by anything - else in libmsg. The "issafe" argument is TRUE if this is a URL which we - consider very safe, and will never screw up or be screwed by any activity - going on in the foreground. Be very very sure of yourself before ever - passing TRUE to the "issafe" argument. */ - -extern int msg_GetURL(MWContext* context, URL_Struct* url, XP_Bool issafe); - - -/* Interface to XP_InterruptContext(), which should never be called directly - by anything else in libmsg. The "safetoo" argument is TRUE if we really - want to interrupt everything, even "safe" background streams. In most - cases, it should be False.*/ - -extern void msg_InterruptContext(MWContext* context, XP_Bool safetoo); - - - -extern int msg_GrowBuffer (uint32 desired_size, - uint32 element_size, uint32 quantum, - char **buffer, uint32 *size); - -extern int msg_LineBuffer (const char *net_buffer, int32 net_buffer_size, - char **bufferP, uint32 *buffer_sizeP, - uint32 *buffer_fpP, - XP_Bool convert_newlines_p, - int32 (*per_line_fn) (char *line, uint32 - line_length, void *closure), - void *closure); - -extern int msg_ReBuffer (const char *net_buffer, int32 net_buffer_size, - uint32 desired_buffer_size, - char **bufferP, uint32 *buffer_sizeP, - uint32 *buffer_fpP, - int32 (*per_buffer_fn) (char *buffer, - uint32 buffer_size, - void *closure), - void *closure); - -extern NET_StreamClass *msg_MakeRebufferingStream (NET_StreamClass *next, - URL_Struct *url, - MWContext *context); - -/* Given a string and a length, removes any "Re:" strings from the front. - (If the length is not given, then XP_STRLEN() is used on the string.) - It also deals with that "Re[2]:" thing that some mailers do. - - Returns TRUE if it made a change, FALSE otherwise. - - The string is not altered: the pointer to its head is merely advanced, - and the length correspondingly decreased. - */ -extern XP_Bool msg_StripRE(const char **stringP, uint32 *lengthP); - -/* - * Does in-place modification of input param to conform with son-of-1036 rules - */ -extern void msg_MakeLegalNewsgroupComponent (char *name); - -extern void MSG_SetPercentProgress(MWContext *context, int32 numerator, int32 denominator); - -XP_END_PROTOS diff --git a/mozilla/lib/mailto/msgzap.cpp b/mozilla/lib/mailto/msgzap.cpp deleted file mode 100644 index 9d57f39697a..00000000000 --- a/mozilla/lib/mailto/msgzap.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp_mcom.h" -#include "msgzap.h" - -#if defined(XP_OS2) && defined(__DEBUG_ALLOC__) -void* MSG_ZapIt::operator new(size_t size, const char *file, size_t line) { - void* rv = ::operator new(size, file, line); - if (rv) { - XP_MEMSET(rv, 0, size); - } - return rv; -} -#else -void* MSG_ZapIt::operator new(size_t size) { - void* rv = ::operator new(size); - if (rv) { - XP_MEMSET(rv, 0, size); - } - return rv; -} - -#endif diff --git a/mozilla/lib/mailto/msgzap.h b/mozilla/lib/mailto/msgzap.h deleted file mode 100644 index 3862750c4f4..00000000000 --- a/mozilla/lib/mailto/msgzap.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ - -#ifndef _MsgZap_H_ -#define _MsgZap_H_ - -// The whole purpose of this class is to redefine operator new for any subclass -// so that it will automatically zero out the whole class for me; thanks. - -class MSG_ZapIt { -public: -#if defined(XP_OS2) && defined(__DEBUG_ALLOC__) - static void* operator new(size_t size, const char *file, size_t line); -#else - static void* operator new(size_t size); -#endif -}; - - - -#endif /* _MsgZap_H_ */ diff --git a/mozilla/lib/mailto/ptrarray.cpp b/mozilla/lib/mailto/ptrarray.cpp deleted file mode 100644 index 53fe5666ac8..00000000000 --- a/mozilla/lib/mailto/ptrarray.cpp +++ /dev/null @@ -1,529 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -#include "msg.h" -#include "xp.h" -#include "ptrarray.h" -#include "xp_qsort.h" - -#ifdef XP_WIN16 -#define SIZE_T_MAX 0xFF80 // Maximum allocation size -#define MAX_ARR_ELEMS SIZE_T_MAX/sizeof(void *) -#endif - - -XPPtrArray::XPPtrArray() -{ - m_nSize = 0; - m_nMaxSize = 0; - m_pData = NULL; -} - -XPPtrArray::~XPPtrArray() -{ - SetSize(0); -} - -///////////////////////////////////////////////////////////////////////////// - -int XPPtrArray::GetSize() const -{ - return m_nSize; -} - -XP_Bool XPPtrArray::IsValidIndex(int32 nIndex) -{ - return (nIndex < GetSize() && nIndex >= 0); -} - -XP_Bool XPPtrArray::SetSize(int nSize) -{ - XP_ASSERT(nSize >= 0); -#ifdef MAX_ARR_ELEMS - if (nSize > MAX_ARR_ELEMS); - { - XP_ASSERT(nSize <= MAX_ARR_ELEMS); // Will fail - return FALSE; - } -#endif - - if (nSize == 0) - { - // Remove all elements - XP_FREE(m_pData); - m_nSize = 0; - m_nMaxSize = 0; - m_pData = NULL; - } - else if (m_pData == NULL) - { - // Create a new array - m_nMaxSize = MAX(8, nSize); - m_pData = (void **)XP_CALLOC(1, m_nMaxSize * sizeof(void *)); - if (m_pData) - m_nSize = nSize; - else - m_nSize = m_nMaxSize = 0; - } - else if (nSize <= m_nMaxSize) - { - // The new size is within the current maximum size, make sure new - // elements are initialized to zero - if (nSize > m_nSize) - XP_MEMSET(&m_pData[m_nSize], 0, (nSize - m_nSize) * sizeof(void *)); - - m_nSize = nSize; - } - else - { - // The array needs to grow, figure out how much - int nGrowBy, nMaxSize; - nGrowBy = MIN(1024, MAX(8, m_nSize / 8)); - nMaxSize = MAX(nSize, m_nMaxSize + nGrowBy); -#ifdef MAX_ARR_ELEMS - nMaxSize = MIN(MAX_ARR_ELEMS, nMaxSize); -#endif - - void **pNewData = (void **)XP_ALLOC(nMaxSize * sizeof(void *)); - if (pNewData) - { - // Copy the data from the old array to the new one - XP_MEMCPY(pNewData, m_pData, m_nSize * sizeof(void *)); - - // Zero out the remaining elements - XP_MEMSET(&pNewData[m_nSize], 0, (nSize - m_nSize) * sizeof(void *)); - m_nSize = nSize; - m_nMaxSize = nMaxSize; - - // Free the old array - XP_FREE(m_pData); - m_pData = pNewData; - } - } - - return nSize == m_nSize; -} - -///////////////////////////////////////////////////////////////////////////// - -void*& XPPtrArray::ElementAt(int nIndex) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -int XPPtrArray::FindIndex (int nStartIndex, void *pToFind) const -{ - for (int i = nStartIndex; i < GetSize(); i++) - if (m_pData[i] == pToFind) - return i; - return -1; -} - -int XPPtrArray::FindIndexUsing(int nStartIndex, void* pToFind, XPCompareFunc* compare) const -{ - for (int i = nStartIndex; i < GetSize(); i++) - if (compare(&m_pData[i], &pToFind) == 0) - return i; - return -1; -} - -void *XPPtrArray::GetAt(int nIndex) const -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - return m_pData[nIndex]; -} - -void XPPtrArray::SetAt(int nIndex, void *newElement) -{ - XP_ASSERT(nIndex >= 0 && nIndex < m_nSize); - m_pData[nIndex] = newElement; -} - -///////////////////////////////////////////////////////////////////////////// - -int XPPtrArray::Add(void *newElement) -{ - int nIndex = m_nSize; - -#ifdef MAX_ARR_ELEMS - if (nIndex >= MAX_ARR_ELEMS) - return -1; -#endif - - SetAtGrow(nIndex, newElement); - return nIndex; -} - -void XPPtrArray::InsertAt(int nIndex, void *newElement, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nCount > 0); - - if (nIndex >= m_nSize) - { - // If the new element is after the end of the array, grow the array - SetSize(nIndex + nCount); - } - else - { - // The element is being insert inside the array - int nOldSize = m_nSize; - SetSize(m_nSize + nCount); - - // Move the data after the insertion point - XP_MEMMOVE(&m_pData[nIndex + nCount], &m_pData[nIndex], - (nOldSize - nIndex) * sizeof(void *)); - } - - // Insert the new elements - XP_ASSERT(nIndex + nCount <= m_nSize); - while (nCount--) - m_pData[nIndex++] = newElement; -} - -void XPPtrArray::InsertAt(int nStartIndex, const XPPtrArray *pNewArray) -{ - XP_ASSERT(nStartIndex >= 0); - XP_ASSERT(pNewArray != NULL); - - if (pNewArray->GetSize() > 0) - { - InsertAt(nStartIndex, pNewArray->GetAt(0), pNewArray->GetSize()); - for (int i = 1; i < pNewArray->GetSize(); i++) - m_pData[nStartIndex + i] = pNewArray->GetAt(i); - } -} - -XP_Bool XPPtrArray::Remove(void *pToRemove) -{ - int index = FindIndex(0, pToRemove); - if (index != -1) - { - RemoveAt(index); - return TRUE; - } - else - return FALSE; -} - -void XPPtrArray::RemoveAll() -{ - SetSize(0); -} - -void XPPtrArray::RemoveAt(int nIndex, int nCount) -{ - XP_ASSERT(nIndex >= 0); - XP_ASSERT(nIndex + nCount <= m_nSize); - - if (nCount > 0) - { - // Make sure not to overstep the end of the array - int nMoveCount = m_nSize - (nIndex + nCount); - if (nCount && nMoveCount) - XP_MEMMOVE(&m_pData[nIndex], &m_pData[nIndex + nCount], - nMoveCount * sizeof(void*)); - - m_nSize -= nCount; - } -} - -void XPPtrArray::RemoveAt(int nStartIndex, const XPPtrArray *pArray) -{ - XP_ASSERT(nStartIndex >= 0); - XP_ASSERT(pArray != NULL); - - for (int i = 0; i < pArray->GetSize(); i++) - { - int index = FindIndex(nStartIndex, pArray->GetAt(i)); - if (index >= 0) - RemoveAt(index); - } -} - -void XPPtrArray::SetAtGrow(int nIndex, void *newElement) -{ - XP_ASSERT(nIndex >= 0); - - if (nIndex >= m_nSize) - SetSize(nIndex+1); - m_pData[nIndex] = newElement; -} - -///////////////////////////////////////////////////////////////////////////// - -int XPPtrArray::InsertBinary(void *newElement, int ( *compare )(const void *elem1, const void *elem2)) -{ - int current = 0; - int left = 0; - int right = GetSize() - 1; - int comparison = 0; - - while (left <= right) - { - current = (left + right) / 2; - - void *pCurrent = GetAt(current); - comparison = compare(&pCurrent, &newElement); - - if (comparison == 0) - break; - else if (comparison > 0) - right = current - 1; - else - left = current + 1; - } - - if (comparison < 0) - current += 1; - - XPPtrArray::InsertAt(current, newElement); - return current; -} - -void XPPtrArray::QuickSort (int ( *compare )(const void *elem1, const void *elem2)) -{ - if (m_nSize > 1) - XP_QSORT (m_pData, m_nSize, sizeof(void*), compare); -} - -///////////////////////////////////////////////////////////////////////////// - -void *XPPtrArray::operator[](int nIndex) const -{ - return GetAt(nIndex); -} - -void *&XPPtrArray::operator[](int nIndex) -{ - return ElementAt(nIndex); -} - - -///////////////////////////////////////////////////////////////////////////// -// XPSortedPtrArray - -XPSortedPtrArray::XPSortedPtrArray(XPCompareFunc *compare) - :XPPtrArray() -{ - m_CompareFunc = compare; -} - -int XPSortedPtrArray::Add(void *newElement) -{ -#ifdef MAX_ARR_ELEMS - if (m_nSize >= MAX_ARR_ELEMS) - return -1; -#endif - if (m_CompareFunc) - return InsertBinary(newElement, m_CompareFunc); - else - return XPPtrArray::Add (newElement); -} - -int XPSortedPtrArray::FindIndex(int nStartIndex, void *pToFind) const -{ - if (m_CompareFunc) - return FindIndexUsing(nStartIndex, pToFind, m_CompareFunc); - else - return XPPtrArray::FindIndex(nStartIndex, pToFind); -} - -int XPSortedPtrArray::FindIndexUsing(int nStartIndex, void *pToFind, XPCompareFunc *compare) const -{ - if (GetSize() == 0) - return -1; - if (!m_CompareFunc) - return TRUE; - - int current = 0; - int left = nStartIndex; - int right = GetSize() - 1; - int comparison = 0; - - while (left <= right) - { - current = (left + right) / 2; - - void *pCurrent = GetAt(current); - comparison = compare(&pCurrent, &pToFind); - - if (comparison == 0) - break; - else if (comparison > 0) - right = current - 1; - else - left = current + 1; - } - - if (comparison != 0) - current = -1; - - return current; -} - -///////////////////////////////////////////////////////////////////////////// - -//----------------------------------- -// These functions are not to be called if the array is sorted (i.e. has a compare func) -//----------------------------------- - -void XPSortedPtrArray::SetAt(int index, void *newElement) -{ - if (!m_CompareFunc) - XPPtrArray::SetAt (index, newElement); - else - XP_ASSERT(FALSE); // Illegal operation because the array is sorted -} - - -void XPSortedPtrArray::InsertAt(int index, void *newElement, int count) -{ - if (!m_CompareFunc) - XPPtrArray::InsertAt (index, newElement, count); - else - XP_ASSERT(FALSE); // Illegal operation because the array is sorted -} - - -void XPSortedPtrArray::InsertAt(int index, const XPPtrArray *array) -{ - if (!m_CompareFunc) - XPPtrArray::InsertAt (index, array); - else - XP_ASSERT(FALSE); // Illegal operation because the array is sorted -} - - -///////////////////////////////////////////////////////////////////////////// -// Diagnostics - -#ifdef DEBUG -XP_Bool XPPtrArray::VerifySort() const -{ - return TRUE; -} - -XP_Bool XPSortedPtrArray::VerifySort() const -{ - // Check that the assumption of sorting in the array is valid. - if (GetSize() > 0 && m_CompareFunc) - { - void *cur = GetAt(0); - for (int i = 1; i < GetSize(); i++) - { - void *prev = cur; - cur = GetAt(i); - if (m_CompareFunc(&cur, &prev) < 0) - { - XP_ASSERT(FALSE); - return FALSE; - } - } - } - - return TRUE; -} -#endif - - -/////////////////////////////////////////////////////////////////////////////// - - -msg_StringArray::msg_StringArray(XP_Bool ownsMemory, XPCompareFunc *compare) - :XPSortedPtrArray(compare) -{ - m_ownsMemory = ownsMemory; -} - -msg_StringArray::~msg_StringArray() -{ - RemoveAll(); -} - -int msg_StringArray::Add(void *string) -{ - return XPPtrArray::Add(m_ownsMemory ? XP_STRDUP((char *)string) : string); -} - -void msg_StringArray::RemoveAll() -{ - if (m_ownsMemory) - { - for (int i = 0; i < GetSize(); i++) - { - void *v = (void *)GetAt(i); - XP_FREEIF(v); - } - } - XPSortedPtrArray::RemoveAll(); // call the base class to shrink m_pData list -} - -XP_Bool msg_StringArray::ImportTokenList(const char *list, const char *tokenSeparators /* = " ," */) -{ - // Tokenizes the input string and builds up the array of strings based on the - // optional caller-provided token separators. - - XP_ASSERT(m_ownsMemory); // must own the memory for the substrings - if (list && m_ownsMemory) - { - char *scratch = XP_STRDUP(list); // make a copy cause strtok will change it - if (scratch) - { - char *elem = XP_STRTOK(scratch, tokenSeparators); - if (elem) - { - Add (elem); - while (NULL != (elem = XP_STRTOK(NULL, tokenSeparators))) - Add (elem); - } - XP_FREE(scratch); - return TRUE; - } - } - return FALSE; -} - -char *msg_StringArray::ExportTokenList(const char *separator /* = " ," */) -{ - // Catenates all the member strings into a big string separated by optional - // caller-provided string. The return value must be freed by the caller - - int i, len = 0; - int lenSep = XP_STRLEN(separator); - - for (i = 0; i < GetSize(); i++) - len += XP_STRLEN(GetAt(i)) + lenSep; - - char *list = (char *)XP_ALLOC(len + 1); - if (list) - { - *list = '\0'; - for (i = 0; i < GetSize(); i++) - { - if (i > 0) - XP_STRCAT(list, separator); - XP_STRCAT(list, GetAt(i)); - } - } - return list; -} diff --git a/mozilla/lib/mailto/ptrarray.h b/mozilla/lib/mailto/ptrarray.h deleted file mode 100644 index c9e85501a8f..00000000000 --- a/mozilla/lib/mailto/ptrarray.h +++ /dev/null @@ -1,164 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - */ -// ptrarray.h -#ifndef PTR_ARRAY_H_ -#define PTR_ARRAY_H_ - -#ifdef XP_UNIX -#define __cdecl -#endif - -typedef int XPCompareFunc(const void *, const void *); - -#ifdef DEBUG -// These are here to stop people calling -#define VIRTUAL virtual -#else -#define VIRTUAL -#endif // DEBUG - - -//***************************************************************************** - -class XPPtrArray -{ -public: - // Construction/destruction - XPPtrArray(); - virtual ~XPPtrArray(); - - // State/attribute member functions - int GetSize() const; - XP_Bool IsValidIndex(int32 nIndex); - VIRTUAL XP_Bool SetSize(int nNewSize); - - // Accessor member functions - void *&ElementAt(int nIndex); - virtual int FindIndex (int nStartIndex, void *pToFind) const; - virtual int FindIndexUsing(int nStartIndex, void *pToFind, XPCompareFunc* compare) const; - void *GetAt(int nIndex) const; - VIRTUAL void SetAt(int nIndex, void *newElement); - - // Insertion/deletion member functions - virtual int Add(void *newElement); - VIRTUAL void InsertAt(int nIndex, void *newElement, int nCount = 1); - VIRTUAL void InsertAt(int nStartIndex, const XPPtrArray *pNewArray); - XP_Bool Remove(void *pToRemove); - virtual void RemoveAll(); - void RemoveAt(int nIndex, int nCount = 1); - void RemoveAt(int nStartIndex, const XPPtrArray *pNewArray); - VIRTUAL void SetAtGrow(int nIndex, void *newElement); - - // Sorting member functions - int InsertBinary(void *newElement, XPCompareFunc *compare); - void QuickSort(XPCompareFunc *compare); - - // Overloaded operators - void *operator[](int nIndex) const; - void *&operator[](int nIndex); - -#ifdef DEBUG - virtual XP_Bool VerifySort() const; -#endif - -protected: - // Member Variables - int m_nSize; - int m_nMaxSize; - void **m_pData; -}; - -//***************************************************************************** - -class XPSortedPtrArray : public XPPtrArray -{ -public: - XPSortedPtrArray(XPCompareFunc *compare); - - virtual int Add(void *newElement); - - // PROMISE: this class will always call the compare-func with pToFind as the - // second parameter. - virtual int FindIndex(int nStartIndex, void *pToFind) const; - - // These functions can only be used on non-sorted PtrArray objects (i.e. compareFunc is NULL) - virtual void SetAt(int nIndex, void* newElement); - virtual void InsertAt(int nIndex, void* newElement, int nCount = 1); - virtual void InsertAt(int nStartIndex, const XPPtrArray* pNewArray); - -#ifdef DEBUG - virtual XP_Bool VerifySort() const; -#endif - -protected: - // Allows search to use a different compare func from the sort. This is used - // by MSG_FolderCache, to find the cache element corresponding to a folder. - // The corresponding element and folder have identical relative paths, and the - // relative path is used by both compare funcs, which is why it works. - // to the found element - int FindIndexUsing(int nStartIndex, void *pToFind, - XPCompareFunc *compare) const; - - // Member Variables - XPCompareFunc* m_CompareFunc; // NULL to simulate unsorted base-class. -}; - -//***************************************************************************** - -// msg_StringArray is a subclass of the generic pointer array class -// which is intended for string operations. -// - It can "own" the strings, or not. -// - It can be sorted, if you provide a CompareFunc, or not, if you don't - -class msg_StringArray : public XPSortedPtrArray -{ -public: - // Overrides from base class - msg_StringArray (XP_Bool ownsMemory, XPCompareFunc *compare = NULL); - virtual ~msg_StringArray (); - - const char *GetAt (int i) const { return (const char*) XPPtrArray::GetAt(i); } - virtual int Add (void *string); - virtual void RemoveAll (); - - XP_Bool ImportTokenList (const char *list, const char *tokenSeps = ", "); - char *ExportTokenList (const char *tokenSep = ", "); - -protected: - XP_Bool m_ownsMemory; -}; - -//***************************************************************************** - -class MSG_FolderInfo; - -class MSG_FolderArray : public XPSortedPtrArray -{ -public: - // Override constructor to allow folderArrays to be sorted - MSG_FolderArray (XPCompareFunc *compare = NULL) : XPSortedPtrArray (compare) {} - - // Encapsulate this typecast, so we don't have to do it all over the place. - MSG_FolderInfo *GetAt(int i) const { return (MSG_FolderInfo*) XPPtrArray::GetAt(i); } -}; - -#endif diff --git a/mozilla/lib/makefile.win b/mozilla/lib/makefile.win deleted file mode 100755 index f1717d9939e..00000000000 --- a/mozilla/lib/makefile.win +++ /dev/null @@ -1,55 +0,0 @@ -# -# The contents of this file are subject to the Netscape Public License -# Version 1.0 (the "NPL"); you may not use this file except in -# compliance with the NPL. You may obtain a copy of the NPL at -# http://www.mozilla.org/NPL/ -# -# Software distributed under the NPL is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL -# for the specific language governing rights and limitations under the -# NPL. -# -# The Initial Developer of this code under the NPL is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All Rights -# Reserved. -# - -#//------------------------------------------------------------------------ -#// -#// Makefile to build the lib tree (libi18n only, so far) -#// -#//------------------------------------------------------------------------ - -#//------------------------------------------------------------------------ -#// -#// Specify the depth of the current directory relative to the -#// root of NS -#// -#//------------------------------------------------------------------------ -DEPTH=.. - -include <$(DEPTH)\config\config.mak> - -#//------------------------------------------------------------------------ -#// -#// Specify any "command" targets. (ie. DIRS, INSTALL_FILES, ...) -#// (these must come before the common makefiles are included) -#// -#// DIRS - There are subdirectories to process -#// -#//------------------------------------------------------------------------ -#DIRS=libi18n layout libstyle liblayer libmocha -DIRS= libi18n htmldlgs libparse layout libstyle mailto - -!ifdef MOZ_MAIL_NEWS -DIRS= $(DIRS) libaddr -!endif - - -#//------------------------------------------------------------------------ -#// -#// Include the common makefile rules -#// -#//------------------------------------------------------------------------ -include <$(DEPTH)\config\rules.mak>